diff --git a/dist/xeokit-sdk.cjs.js b/dist/xeokit-sdk.cjs.js index 6a2b7f1b5c..54e34409c6 100644 --- a/dist/xeokit-sdk.cjs.js +++ b/dist/xeokit-sdk.cjs.js @@ -81168,10 +81168,11 @@ class SceneModelTransform { const tempVec3a$a = math.vec3(); const tempOBB3 = math.OBB3(); +const tempQuaternion = math.vec4(); const DEFAULT_SCALE = math.vec3([1, 1, 1]); const DEFAULT_POSITION = math.vec3([0, 0, 0]); -const DEFAULT_ROTATION = math.vec3([0, 0, 0]); +math.vec3([0, 0, 0]); const DEFAULT_QUATERNION = math.identityQuaternion(); const DEFAULT_MATRIX = math.identityMat4(); @@ -83848,6 +83849,7 @@ class SceneModel extends Component { * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````. * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````. * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````. + * @param {Number[]} [cfg.quaternion] Rotation of the mesh as a quaternion. Overridden by ````rotation````. * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````. * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````. * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````. @@ -83922,12 +83924,15 @@ class SceneModel extends Component { if (cfg.matrix) { cfg.meshMatrix = cfg.matrix; - } else if (cfg.scale || cfg.rotation || cfg.position) { + } else if (cfg.scale || cfg.rotation || cfg.position || cfg.quaternion) { const scale = cfg.scale || DEFAULT_SCALE; const position = cfg.position || DEFAULT_POSITION; - const rotation = cfg.rotation || DEFAULT_ROTATION; - math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); - cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + if (cfg.rotation) { + math.eulerToQuaternion(cfg.rotation, "XYZ", tempQuaternion); + cfg.meshMatrix = math.composeMat4(position, tempQuaternion, scale, math.mat4()); + } else { + cfg.meshMatrix = math.composeMat4(position, cfg.quaternion || DEFAULT_QUATERNION, scale, math.mat4()); + } } if (cfg.positionsDecodeBoundary) { @@ -84115,13 +84120,16 @@ class SceneModel extends Component { // MATRIX if (cfg.matrix) { - cfg.meshMatrix = cfg.matrix.slice(); - } else { + cfg.meshMatrix = cfg.matrix; + } else if (cfg.scale || cfg.rotation || cfg.position || cfg.quaternion) { const scale = cfg.scale || DEFAULT_SCALE; const position = cfg.position || DEFAULT_POSITION; - const rotation = cfg.rotation || DEFAULT_ROTATION; - math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); - cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + if (cfg.rotation) { + math.eulerToQuaternion(cfg.rotation, "XYZ", tempQuaternion); + cfg.meshMatrix = math.composeMat4(position, tempQuaternion, scale, math.mat4()); + } else { + cfg.meshMatrix = math.composeMat4(position, cfg.quaternion || DEFAULT_QUATERNION, scale, math.mat4()); + } } math.AABB3ToOBB3(cfg.geometry.aabb, tempOBB3); @@ -116835,6 +116843,79 @@ const IFCObjectDefaults = { * excludeTypes: ["IfcSpace"] * }); * ```` + * + * ## Showing a glTF model in TreeViewPlugin when metadata is not available + * + * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a + * `name` attribute, giving the Entity an ID that has the value of the `name` attribute. + * + * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not + * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin + * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any + * MetaModels that we create alongside the model. + * + * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter + * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID. + * + * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that + * contains a MetaObject that corresponds to that Entity. + * + * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls + * the visibility of that Entity (ie. to control the visibility of the entire model). + * + * The snippet below shows how this is done. + * + * ````javascript + * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js"; + * + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * new TreeViewPlugin(viewer, { + * containerElement: document.getElementById("treeViewContainer"), + * hierarchy: "containment" + * }); + * + * const gltfLoader = new GLTFLoaderPlugin(viewer); + * + * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID "myScanModel" + * id: "myScanModel", + * src: "public-use-sample-apartment.glb", + * + * //------------------------------------------------------------------------- + * // Specify an `elementId` parameter, which causes the + * // entire model to be loaded into a single Entity that gets this ID. + * //------------------------------------------------------------------------- + * + * entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID + * + * //------------------------------------------------------------------------- + * // Specify a `metaModelJSON` parameter, which creates a + * // MetaModel with two MetaObjects, one of which corresponds + * // to our Entity. Then the TreeViewPlugin is able to have a node + * // that can represent the model and control the visibility of the Entity. + * //-------------------------------------------------------------------------- + * + * metaModelJSON: { // Creates a MetaModel with ID "myScanModel" + * "metaObjects": [ + * { + * "id": "3toKckUfH2jBmd$7uhJHa6", // Creates a MetaObject with this ID + * "name": "My Project", + * "type": "Default", + * "parent": null + * }, + * { + * "id": "3toKckUfH2jBmd$7uhJHa4", // Creates a MetaObject with this ID (same ID as our Entity) + * "name": "My Scan", + * "type": "Default", + * "parent": "3toKckUfH2jBmd$7uhJHa6" + * } + * ] + * } + * }); + * ```` * @class GLTFLoaderPlugin */ class GLTFLoaderPlugin extends Plugin { @@ -135102,6 +135183,60 @@ const MAX_VERTICES = 500000; // TODO: Rough estimate * }); * ```` * + * ## Showing a LAS/LAZ model in TreeViewPlugin + * + * We can use the `load()` method's `elementId` parameter + * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID. + * + * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that + * contains a MetaObject that corresponds to that Entity. + * + * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls + * the visibility of that Entity (ie. to control the visibility of the entire model). + * + * The snippet below shows how this is done. + * + * ````javascript + * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js"; + * + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * new TreeViewPlugin(viewer, { + * containerElement: document.getElementById("treeViewContainer"), + * hierarchy: "containment" + * }); + * + * const lasLoader = new LASLoaderPlugin(viewer); + * + * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID "myScanModel" + * id: "myScanModel", + * src: "../../assets/models/las/Nalls_Pumpkin_Hill.laz", + * rotation: [-90, 0, 0], + * + * entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID + * + * metaModelJSON: { // Creates a MetaModel with ID "myScanModel" + * "metaObjects": [ + * { + * "id": "3toKckUfH2jBmd$7uhJHa6", // Creates this MetaObject with this ID + * "name": "My Project", + * "type": "Default", + * "parent": null + * }, + * { + * "id": "3toKckUfH2jBmd$7uhJHa4", // Creates this MetaObject with this ID + * "name": "My Scan", + * "type": "Default", + * "parent": "3toKckUfH2jBmd$7uhJHa6" + * } + * ] + * } + * }); + * ```` + * * @class LASLoaderPlugin * @since 2.0.17 */ @@ -136963,6 +137098,566 @@ class CityJSONLoaderPlugin extends Plugin { } } +/** + * Default data access strategy for {@link DotBIMLoaderPlugin}. + * + * This just loads assets using XMLHttpRequest. + */ +class DotBIMDefaultDataSource { + + constructor() { + } + + /** + * Gets .BIM JSON. + * + * @param {String|Number} dotBIMSrc Identifies the .BIM JSON asset. + * @param {Function} ok Fired on successful loading of the .BIM JSON asset. + * @param {Function} error Fired on error while loading the .BIM JSON asset. + */ + getDotBIM(dotBIMSrc, ok, error) { + utils.loadJSON(dotBIMSrc, + (json) => { + ok(json); + }, + function (errMsg) { + error(errMsg); + }); + } +} + +/** + * {@link Viewer} plugin that loads models from [.bim](https://dotbim.net/) format. + * + * [](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House) + * + * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House)] + * + * * Creates an {@link Entity} representing each .bim model it loads, which will have {@link Entity#isModel} set ````true```` + * and will be registered by {@link Entity#id} in {@link Scene#models}. + * * Creates an {@link Entity} for each object within the .bim model. Those Entities will have {@link Entity#isObject} + * set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}. + * * When loading, can set the World-space position, scale and rotation of each model within World space, + * along with initial properties for all the model's {@link Entity}s. + * * Allows to mask which IFC types we want to load. + * * Allows to configure initial viewer state for specified IFC types (color, visibility, selection, highlighted, X-rayed, pickable, etc). + * + * ## Usage + * + * In the example below we'll load a house model from a [.bim file](/assets/models/dotbim/House.bim). + * + * This will create a bunch of {@link Entity}s that represents the model and its objects, along with + * a {@link MetaModel} and {@link MetaObject}s that hold their metadata. + * + * ````javascript + * import {Viewer, DotBIMLoaderPlugin} from "xeokit-sdk.es.js"; + * + * //------------------------------------------------------------------------------------------------------------------ + * // 1. Create a Viewer, + * // 2. Arrange the camera, + * // 3. Tweak the selection material (tone it down a bit) + * //------------------------------------------------------------------------------------------------------------------ + * + * // 1 + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * // 2 + * viewer.camera.orbitPitch(20); + * viewer.camera.orbitYaw(-45); + * + * // 3 + * viewer.scene.selectedMaterial.fillAlpha = 0.1; + * + * //------------------------------------------------------------------------------------------------------------------ + * // 1. Create a .bim loader plugin, + * // 2. Load a .bim building model, emphasizing the edges to make it look nicer + * //------------------------------------------------------------------------------------------------------------------ + * + * // 1 + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer); + * + * // 2 + * var model = dotBIMLoader.load({ // Returns an Entity that represents the model + * id: "myModel", + * src: "House.bim", + * edges: true + * }); + * + * // Find the model Entity by ID + * model = viewer.scene.models["myModel"]; + * + * // Destroy the model + * model.destroy(); + * ```` + * + * ## Transforming + * + * We have the option to rotate, scale and translate each *````.bim````* model as we load it. + * + * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other. + * + * In the example below, we'll rotate our model 90 degrees about its local X-axis, then + * translate it 100 units along its X axis. + * + * ````javascript + * const model = dotBIMLoader.load({ + * src: "House.bim", + * rotation: [90,0,0], + * position: [100, 0, 0] + * }); + * ```` + * + * ## Including and excluding IFC types + * + * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the + * objects that represent walls. + * + * ````javascript + * const model = dotBIMLoader.load({ + * id: "myModel", + * src: "House.bim", + * includeTypes: ["IfcWallStandardCase"] + * }); + * ```` + * + * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the + * objects that do not represent empty space. + * + * ````javascript + * const model = dotBIMLoader.load({ + * id: "myModel", + * src: "House.bim", + * excludeTypes: ["IfcSpace"] + * }); + * ```` + * + * # Configuring initial IFC object appearances + * + * We can specify the custom initial appearance of loaded objects according to their IFC types. + * + * This is useful for things like: + * + * * setting the colors to our objects according to their IFC types, + * * automatically hiding ````IfcSpace```` objects, and + * * ensuring that ````IfcWindow```` objects are always transparent. + *
+ * In the example below, we'll load a model, while configuring ````IfcSpace```` elements to be always initially invisible, + * and ````IfcWindow```` types to be always translucent blue. + * + * ````javascript + * const myObjectDefaults = { + * + * IfcSpace: { + * visible: false + * }, + * IfcWindow: { + * colorize: [0.337255, 0.303922, 0.870588], // Blue + * opacity: 0.3 + * }, + * + * //... + * + * DEFAULT: { + * colorize: [0.5, 0.5, 0.5] + * } + * }; + * + * const model4 = dotBIMLoader.load({ + * id: "myModel4", + * src: "House.bim", + * objectDefaults: myObjectDefaults // Use our custom initial default states for object Entities + * }); + * ```` + * + * When we don't customize the appearance of IFC types, as just above, then IfcSpace elements tend to obscure other + * elements, which can be confusing. + * + * It's often helpful to make IfcSpaces transparent and unpickable, like this: + * + * ````javascript + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer, { + * objectDefaults: { + * IfcSpace: { + * pickable: false, + * opacity: 0.2 + * } + * } + * }); + * ```` + * + * Alternatively, we could just make IfcSpaces invisible, which also makes them unpickable: + * + * ````javascript + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer, { + * objectDefaults: { + * IfcSpace: { + * visible: false + * } + * } + * }); + * ```` + * + * # Configuring a custom data source + * + * By default, DotBIMLoaderPlugin will load *````.bim````* files and metadata JSON over HTTP. + * + * In the example below, we'll customize the way DotBIMLoaderPlugin loads the files by configuring it with our own data source + * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions. + * + * ````javascript + * import {utils} from "xeokit-sdk.es.js"; + * + * class MyDataSource { + * + * constructor() { + * } + * + * // Gets the contents of the given .bim file in a JSON object + * getDotBIM(src, ok, error) { + * utils.loadJSON(dotBIMSrc, + * (json) => { + * ok(json); + * }, + * function (errMsg) { + * error(errMsg); + * }); + * } + * } + * + * const dotBIMLoader2 = new DotBIMLoaderPlugin(viewer, { + * dataSource: new MyDataSource() + * }); + * + * const model5 = dotBIMLoader2.load({ + * id: "myModel5", + * src: "House.bim" + * }); + * ```` + * @class DotBIMLoaderPlugin + */ +class DotBIMLoaderPlugin extends Plugin { + + /** + * @constructor + * + * @param {Viewer} viewer The Viewer. + * @param {Object} cfg Plugin configuration. + * @param {String} [cfg.id="DotBIMLoader"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}. + * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}. + * @param {Object} [cfg.dataSource] A custom data source through which the DotBIMLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link DotBIMDefaultDataSource}, which loads over HTTP. + */ + constructor(viewer, cfg = {}) { + + super("DotBIMLoader", viewer, cfg); + + this.dataSource = cfg.dataSource; + this.objectDefaults = cfg.objectDefaults; + } + + /** + * Sets a custom data source through which the DotBIMLoaderPlugin can .BIM files. + * + * Default value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest. + * + * @type {Object} + */ + set dataSource(value) { + this._dataSource = value || new DotBIMDefaultDataSource(); + } + + /** + * Gets the custom data source through which the DotBIMLoaderPlugin can load .BIM files. + * + * Default value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest. + * + * @type {Object} + */ + get dataSource() { + return this._dataSource; + } + + /** + * Sets map of initial default states for each loaded {@link Entity} that represents an object. + * + * Default value is {@link IFCObjectDefaults}. + * + * @type {{String: Object}} + */ + set objectDefaults(value) { + this._objectDefaults = value || IFCObjectDefaults; + } + + /** + * Gets map of initial default states for each loaded {@link Entity} that represents an object. + * + * Default value is {@link IFCObjectDefaults}. + * + * @type {{String: Object}} + */ + get objectDefaults() { + return this._objectDefaults; + } + + /** + * Loads a .BIM model from a file into this DotBIMLoaderPlugin's {@link Viewer}. + * + * @param {*} params Loading parameters. + * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default. + * @param {String} [params.src] Path to a .BIM file, as an alternative to the ````bim```` parameter. + * @param {*} [params.bim] .BIM JSON, as an alternative to the ````src```` parameter. + * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}. + * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list. + * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list. + * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates. + * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````. + * @param {Number[]} [params.scale=[1,1,1]] The model's scale. + * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis. + * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the .BIM material is single-sided. When false, only show backfaces on geometries whenever the .BIM material is double-sided. + * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to + * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable + * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point + * primitives. Only works while {@link DTX#enabled} is also ````true````. + * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models} + */ + load(params = {}) { + + if (params.id && this.viewer.scene.components[params.id]) { + this.error("Component with this ID already exists in viewer: " + params.id + " - will autogenerate this ID"); + delete params.id; + } + + const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, { + isModel: true, + backfaces: params.backfaces, + dtxEnabled: params.dtxEnabled, + rotation: params.rotation, + origin: params.origin + })); + + const modelId = sceneModel.id; // In case ID was auto-generated + + if (!params.src && !params.dotBIM) { + this.error("load() param expected: src or dotBIM"); + return sceneModel; // Return new empty model + } + + const objectDefaults = params.objectDefaults || this._objectDefaults || IFCObjectDefaults; + + let includeTypes; + if (params.includeTypes) { + includeTypes = {}; + for (let i = 0, len = params.includeTypes.length; i < len; i++) { + includeTypes[params.includeTypes[i]] = true; + } + } + + let excludeTypes; + if (params.excludeTypes) { + excludeTypes = {}; + if (!includeTypes) { + includeTypes = {}; + } + for (let i = 0, len = params.excludeTypes.length; i < len; i++) { + includeTypes[params.excludeTypes[i]] = true; + } + } + + const parseDotBIM = (ctx) => { + + const fileData = ctx.fileData; + const sceneModel = ctx.sceneModel; + + const dbMeshIndices = {}; + const dbMeshLoaded = {}; + + const ifcProjectId = math.createUUID(); + const ifcSiteId = math.createUUID(); + const ifcBuildingId = math.createUUID(); + const ifcBuildingStoryId = math.createUUID(); + + const metaModelData = { + metaObjects: [ + { + id: ifcProjectId, + name: "IfcProject", + type: "IfcProject", + parent: null + }, + { + id: ifcSiteId, + name: "IfcSite", + type: "IfcSite", + parent: ifcProjectId + }, + { + id: ifcBuildingId, + name: "IfcBuilding", + type: "IfcBuilding", + parent: ifcSiteId + }, + { + id: ifcBuildingStoryId, + name: "IfcBuildingStorey", + type: "IfcBuildingStorey", + parent: ifcBuildingId + } + ], + propertySets: [] + }; + + for (let i = 0, len = fileData.meshes.length; i < len; i++) { + const dbMesh = fileData.meshes[i]; + dbMeshIndices[dbMesh.mesh_id] = i; + } + + const parseDBMesh = (dbMeshId) => { + if (dbMeshLoaded[dbMeshId]) { + return; + } + const dbMeshIndex = dbMeshIndices[dbMeshId]; + const dbMesh = fileData.meshes[dbMeshIndex]; + sceneModel.createGeometry({ + id: dbMeshId, + primitive: "triangles", + positions: dbMesh.coordinates, + indices: dbMesh.indices + }); + dbMeshLoaded[dbMeshId] = true; + }; + + const dbElements = fileData.elements; + for (let i = 0, len = dbElements.length; i < len; i++) { + const element = dbElements[i]; + const elementType = element.type; + if (excludeTypes && excludeTypes[elementType]) { + continue; + + } + if (includeTypes && (!includeTypes[elementType])) { + continue; + } + const info = element.info; + const objectId = + element.guid !== undefined + ? `${element.guid}` + : (info !== undefined && info.id !== undefined + ? info.id + : i); + + const dbMeshId = element.mesh_id; + + parseDBMesh(dbMeshId); + + const meshId = `${objectId}-mesh`; + const vector = element.vector; + const rotation = element.rotation; + const props = objectDefaults ? objectDefaults[elementType] || objectDefaults["DEFAULT"] : null; + + let visible = true; + let pickable = true; + let color = element.color ? [element.color.r / 255, element.color.g / 255, element.color.b / 255] : [1, 1, 1]; + let opacity = element.color ? element.color.a / 255 : 1.0; + + if (props) { + if (props.visible === false) { + visible = false; + } + if (props.pickable === false) { + pickable = false; + } + if (props.colorize) { + color = props.colorize; + } + if (props.opacity !== undefined && props.opacity !== null) { + opacity = props.opacity; + } + } + + sceneModel.createMesh({ + id: meshId, + geometryId: dbMeshId, + color, + opacity, + quaternion: rotation && (rotation.qz !== 0 || rotation.qy !== 0 || rotation.qx !== 0 || rotation.qw !== 1.0) ? [rotation.qx, rotation.qy, rotation.qz, rotation.qw] : undefined, + position: vector ? [vector.x, vector.y, vector.z] : undefined + }); + + sceneModel.createEntity({ + id: objectId, + meshIds: [meshId], + visible, + pickable, + isObject: true + }); + + metaModelData.metaObjects.push({ + id: objectId, + name: info && info.Name && info.Name !== "None" ? info.Name : `${element.type} ${objectId}`, + type: element.type, + parent: ifcBuildingStoryId + }); + } + + sceneModel.finalize(); + + this.viewer.metaScene.createMetaModel(modelId, metaModelData); + + sceneModel.scene.once("tick", () => { + if (sceneModel.destroyed) { + return; + } + sceneModel.scene.fire("modelLoaded", sceneModel.id); // FIXME: Assumes listeners know order of these two events + sceneModel.fire("loaded", true, false); // Don't forget the event, for late subscribers + }); + }; + + if (params.src) { + const src = params.src; + this.viewer.scene.canvas.spinner.processes++; + this._dataSource.getDotBIM(src, (fileData) => { // OK + const ctx = { + fileData, + sceneModel, + nextId: 0, + error: function (errMsg) { + } + }; + parseDotBIM(ctx); + this.viewer.scene.canvas.spinner.processes--; + }, + (err) => { + this.viewer.scene.canvas.spinner.processes--; + this.error(err); + }); + } else if (params.dotBIM) { + const ctx = { + fileData: params.dotBIM, + sceneModel, + nextId: 0, + error: function (errMsg) { + } + }; + parseDotBIM(ctx); + } + + sceneModel.once("destroyed", () => { + this.viewer.metaScene.destroyMetaModel(modelId); + }); + + return sceneModel; + } + + /** + * Destroys this DotBIMLoaderPlugin. + */ + destroy() { + super.destroy(); + } +} + exports.AlphaFormat = AlphaFormat; exports.AmbientLight = AmbientLight; exports.AngleMeasurementsControl = AngleMeasurementsControl; @@ -136993,6 +137688,8 @@ exports.DistanceMeasurementsControl = DistanceMeasurementsControl; exports.DistanceMeasurementsMouseControl = DistanceMeasurementsMouseControl; exports.DistanceMeasurementsPlugin = DistanceMeasurementsPlugin; exports.DistanceMeasurementsTouchControl = DistanceMeasurementsTouchControl; +exports.DotBIMDefaultDataSource = DotBIMDefaultDataSource; +exports.DotBIMLoaderPlugin = DotBIMLoaderPlugin; exports.EdgeMaterial = EdgeMaterial; exports.EmphasisMaterial = EmphasisMaterial; exports.FaceAlignedSectionPlanesPlugin = FaceAlignedSectionPlanesPlugin; diff --git a/dist/xeokit-sdk.es.js b/dist/xeokit-sdk.es.js index 9de7638108..d7867c46cd 100644 --- a/dist/xeokit-sdk.es.js +++ b/dist/xeokit-sdk.es.js @@ -81164,10 +81164,11 @@ class SceneModelTransform { const tempVec3a$a = math.vec3(); const tempOBB3 = math.OBB3(); +const tempQuaternion = math.vec4(); const DEFAULT_SCALE = math.vec3([1, 1, 1]); const DEFAULT_POSITION = math.vec3([0, 0, 0]); -const DEFAULT_ROTATION = math.vec3([0, 0, 0]); +math.vec3([0, 0, 0]); const DEFAULT_QUATERNION = math.identityQuaternion(); const DEFAULT_MATRIX = math.identityMat4(); @@ -83844,6 +83845,7 @@ class SceneModel extends Component { * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````. * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````. * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````. + * @param {Number[]} [cfg.quaternion] Rotation of the mesh as a quaternion. Overridden by ````rotation````. * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````. * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````. * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````. @@ -83918,12 +83920,15 @@ class SceneModel extends Component { if (cfg.matrix) { cfg.meshMatrix = cfg.matrix; - } else if (cfg.scale || cfg.rotation || cfg.position) { + } else if (cfg.scale || cfg.rotation || cfg.position || cfg.quaternion) { const scale = cfg.scale || DEFAULT_SCALE; const position = cfg.position || DEFAULT_POSITION; - const rotation = cfg.rotation || DEFAULT_ROTATION; - math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); - cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + if (cfg.rotation) { + math.eulerToQuaternion(cfg.rotation, "XYZ", tempQuaternion); + cfg.meshMatrix = math.composeMat4(position, tempQuaternion, scale, math.mat4()); + } else { + cfg.meshMatrix = math.composeMat4(position, cfg.quaternion || DEFAULT_QUATERNION, scale, math.mat4()); + } } if (cfg.positionsDecodeBoundary) { @@ -84111,13 +84116,16 @@ class SceneModel extends Component { // MATRIX if (cfg.matrix) { - cfg.meshMatrix = cfg.matrix.slice(); - } else { + cfg.meshMatrix = cfg.matrix; + } else if (cfg.scale || cfg.rotation || cfg.position || cfg.quaternion) { const scale = cfg.scale || DEFAULT_SCALE; const position = cfg.position || DEFAULT_POSITION; - const rotation = cfg.rotation || DEFAULT_ROTATION; - math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); - cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + if (cfg.rotation) { + math.eulerToQuaternion(cfg.rotation, "XYZ", tempQuaternion); + cfg.meshMatrix = math.composeMat4(position, tempQuaternion, scale, math.mat4()); + } else { + cfg.meshMatrix = math.composeMat4(position, cfg.quaternion || DEFAULT_QUATERNION, scale, math.mat4()); + } } math.AABB3ToOBB3(cfg.geometry.aabb, tempOBB3); @@ -116831,6 +116839,79 @@ const IFCObjectDefaults = { * excludeTypes: ["IfcSpace"] * }); * ```` + * + * ## Showing a glTF model in TreeViewPlugin when metadata is not available + * + * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a + * `name` attribute, giving the Entity an ID that has the value of the `name` attribute. + * + * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not + * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin + * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any + * MetaModels that we create alongside the model. + * + * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter + * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID. + * + * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that + * contains a MetaObject that corresponds to that Entity. + * + * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls + * the visibility of that Entity (ie. to control the visibility of the entire model). + * + * The snippet below shows how this is done. + * + * ````javascript + * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js"; + * + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * new TreeViewPlugin(viewer, { + * containerElement: document.getElementById("treeViewContainer"), + * hierarchy: "containment" + * }); + * + * const gltfLoader = new GLTFLoaderPlugin(viewer); + * + * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID "myScanModel" + * id: "myScanModel", + * src: "public-use-sample-apartment.glb", + * + * //------------------------------------------------------------------------- + * // Specify an `elementId` parameter, which causes the + * // entire model to be loaded into a single Entity that gets this ID. + * //------------------------------------------------------------------------- + * + * entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID + * + * //------------------------------------------------------------------------- + * // Specify a `metaModelJSON` parameter, which creates a + * // MetaModel with two MetaObjects, one of which corresponds + * // to our Entity. Then the TreeViewPlugin is able to have a node + * // that can represent the model and control the visibility of the Entity. + * //-------------------------------------------------------------------------- + * + * metaModelJSON: { // Creates a MetaModel with ID "myScanModel" + * "metaObjects": [ + * { + * "id": "3toKckUfH2jBmd$7uhJHa6", // Creates a MetaObject with this ID + * "name": "My Project", + * "type": "Default", + * "parent": null + * }, + * { + * "id": "3toKckUfH2jBmd$7uhJHa4", // Creates a MetaObject with this ID (same ID as our Entity) + * "name": "My Scan", + * "type": "Default", + * "parent": "3toKckUfH2jBmd$7uhJHa6" + * } + * ] + * } + * }); + * ```` * @class GLTFLoaderPlugin */ class GLTFLoaderPlugin extends Plugin { @@ -135098,6 +135179,60 @@ const MAX_VERTICES = 500000; // TODO: Rough estimate * }); * ```` * + * ## Showing a LAS/LAZ model in TreeViewPlugin + * + * We can use the `load()` method's `elementId` parameter + * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID. + * + * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that + * contains a MetaObject that corresponds to that Entity. + * + * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls + * the visibility of that Entity (ie. to control the visibility of the entire model). + * + * The snippet below shows how this is done. + * + * ````javascript + * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js"; + * + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * new TreeViewPlugin(viewer, { + * containerElement: document.getElementById("treeViewContainer"), + * hierarchy: "containment" + * }); + * + * const lasLoader = new LASLoaderPlugin(viewer); + * + * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID "myScanModel" + * id: "myScanModel", + * src: "../../assets/models/las/Nalls_Pumpkin_Hill.laz", + * rotation: [-90, 0, 0], + * + * entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID + * + * metaModelJSON: { // Creates a MetaModel with ID "myScanModel" + * "metaObjects": [ + * { + * "id": "3toKckUfH2jBmd$7uhJHa6", // Creates this MetaObject with this ID + * "name": "My Project", + * "type": "Default", + * "parent": null + * }, + * { + * "id": "3toKckUfH2jBmd$7uhJHa4", // Creates this MetaObject with this ID + * "name": "My Scan", + * "type": "Default", + * "parent": "3toKckUfH2jBmd$7uhJHa6" + * } + * ] + * } + * }); + * ```` + * * @class LASLoaderPlugin * @since 2.0.17 */ @@ -136959,4 +137094,564 @@ class CityJSONLoaderPlugin extends Plugin { } } -export { AlphaFormat, AmbientLight, AngleMeasurementsControl, AngleMeasurementsMouseControl, AngleMeasurementsPlugin, AngleMeasurementsTouchControl, AnnotationsPlugin, AxisGizmoPlugin, BCFViewpointsPlugin, Bitmap, ByteType, CameraMemento, CameraPath, CameraPathAnimation, CityJSONLoaderPlugin, ClampToEdgeWrapping, Component, CompressedMediaType, Configs, ContextMenu, CubicBezierCurve, Curve, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DirLight, DistanceMeasurementsControl, DistanceMeasurementsMouseControl, DistanceMeasurementsPlugin, DistanceMeasurementsTouchControl, EdgeMaterial, EmphasisMaterial, FaceAlignedSectionPlanesPlugin, FastNavPlugin, FloatType, Fresnel, Frustum$1 as Frustum, FrustumPlane, GIFMediaType, GLTFDefaultDataSource, GLTFLoaderPlugin, HalfFloatType, ImagePlane, IntType, JPEGMediaType, KTX2TextureTranscoder, LASLoaderPlugin, LambertMaterial, LightMap, LineSet, LinearEncoding, LinearFilter, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, Loader, LoadingManager, LocaleService, LuminanceAlphaFormat, LuminanceFormat, Map$1 as Map, Marker, MarqueePicker, MarqueePickerMouseControl, Mesh, MetallicMaterial, MirroredRepeatWrapping, ModelMemento, NavCubePlugin, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, Node$2 as Node, OBJLoaderPlugin, ObjectsKdTree3, ObjectsMemento, PNGMediaType, Path, PerformanceModel, PhongMaterial, PickResult, Plugin, PointLight, PointerCircle, PointerLens, QuadraticBezierCurve, Queue, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, ReadableGeometry, RedFormat, RedIntegerFormat, ReflectionMap, RepeatWrapping, STLDefaultDataSource, STLLoaderPlugin, SceneModel, SceneModelMesh, SceneModelTransform, SectionPlane, SectionPlanesPlugin, ShortType, Skybox, SkyboxesPlugin, SpecularMaterial, SplineCurve, SpriteMarker, StoreyViewsPlugin, Texture, TextureTranscoder, TreeViewPlugin, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VBOGeometry, ViewCullPlugin, Viewer, WebIFCLoaderPlugin, WorkerPool$1 as WorkerPool, XKTDefaultDataSource, XKTLoaderPlugin, XML3DLoaderPlugin, buildBoxGeometry, buildBoxLinesGeometry, buildBoxLinesGeometryFromAABB, buildCylinderGeometry, buildGridGeometry, buildPlaneGeometry, buildPolylineGeometry, buildPolylineGeometryFromCurve, buildSphereGeometry, buildTorusGeometry, buildVectorTextGeometry, createRTCViewMat, frustumIntersectsAABB3, getKTX2TextureTranscoder, getPlaneRTCPos, load3DSGeometry, loadOBJGeometry, math, rtcToWorldPos, sRGBEncoding, setFrustum, stats, utils, worldToRTCPos, worldToRTCPositions }; +/** + * Default data access strategy for {@link DotBIMLoaderPlugin}. + * + * This just loads assets using XMLHttpRequest. + */ +class DotBIMDefaultDataSource { + + constructor() { + } + + /** + * Gets .BIM JSON. + * + * @param {String|Number} dotBIMSrc Identifies the .BIM JSON asset. + * @param {Function} ok Fired on successful loading of the .BIM JSON asset. + * @param {Function} error Fired on error while loading the .BIM JSON asset. + */ + getDotBIM(dotBIMSrc, ok, error) { + utils.loadJSON(dotBIMSrc, + (json) => { + ok(json); + }, + function (errMsg) { + error(errMsg); + }); + } +} + +/** + * {@link Viewer} plugin that loads models from [.bim](https://dotbim.net/) format. + * + * [](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House) + * + * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House)] + * + * * Creates an {@link Entity} representing each .bim model it loads, which will have {@link Entity#isModel} set ````true```` + * and will be registered by {@link Entity#id} in {@link Scene#models}. + * * Creates an {@link Entity} for each object within the .bim model. Those Entities will have {@link Entity#isObject} + * set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}. + * * When loading, can set the World-space position, scale and rotation of each model within World space, + * along with initial properties for all the model's {@link Entity}s. + * * Allows to mask which IFC types we want to load. + * * Allows to configure initial viewer state for specified IFC types (color, visibility, selection, highlighted, X-rayed, pickable, etc). + * + * ## Usage + * + * In the example below we'll load a house model from a [.bim file](/assets/models/dotbim/House.bim). + * + * This will create a bunch of {@link Entity}s that represents the model and its objects, along with + * a {@link MetaModel} and {@link MetaObject}s that hold their metadata. + * + * ````javascript + * import {Viewer, DotBIMLoaderPlugin} from "xeokit-sdk.es.js"; + * + * //------------------------------------------------------------------------------------------------------------------ + * // 1. Create a Viewer, + * // 2. Arrange the camera, + * // 3. Tweak the selection material (tone it down a bit) + * //------------------------------------------------------------------------------------------------------------------ + * + * // 1 + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * // 2 + * viewer.camera.orbitPitch(20); + * viewer.camera.orbitYaw(-45); + * + * // 3 + * viewer.scene.selectedMaterial.fillAlpha = 0.1; + * + * //------------------------------------------------------------------------------------------------------------------ + * // 1. Create a .bim loader plugin, + * // 2. Load a .bim building model, emphasizing the edges to make it look nicer + * //------------------------------------------------------------------------------------------------------------------ + * + * // 1 + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer); + * + * // 2 + * var model = dotBIMLoader.load({ // Returns an Entity that represents the model + * id: "myModel", + * src: "House.bim", + * edges: true + * }); + * + * // Find the model Entity by ID + * model = viewer.scene.models["myModel"]; + * + * // Destroy the model + * model.destroy(); + * ```` + * + * ## Transforming + * + * We have the option to rotate, scale and translate each *````.bim````* model as we load it. + * + * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other. + * + * In the example below, we'll rotate our model 90 degrees about its local X-axis, then + * translate it 100 units along its X axis. + * + * ````javascript + * const model = dotBIMLoader.load({ + * src: "House.bim", + * rotation: [90,0,0], + * position: [100, 0, 0] + * }); + * ```` + * + * ## Including and excluding IFC types + * + * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the + * objects that represent walls. + * + * ````javascript + * const model = dotBIMLoader.load({ + * id: "myModel", + * src: "House.bim", + * includeTypes: ["IfcWallStandardCase"] + * }); + * ```` + * + * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the + * objects that do not represent empty space. + * + * ````javascript + * const model = dotBIMLoader.load({ + * id: "myModel", + * src: "House.bim", + * excludeTypes: ["IfcSpace"] + * }); + * ```` + * + * # Configuring initial IFC object appearances + * + * We can specify the custom initial appearance of loaded objects according to their IFC types. + * + * This is useful for things like: + * + * * setting the colors to our objects according to their IFC types, + * * automatically hiding ````IfcSpace```` objects, and + * * ensuring that ````IfcWindow```` objects are always transparent. + *
+ * In the example below, we'll load a model, while configuring ````IfcSpace```` elements to be always initially invisible, + * and ````IfcWindow```` types to be always translucent blue. + * + * ````javascript + * const myObjectDefaults = { + * + * IfcSpace: { + * visible: false + * }, + * IfcWindow: { + * colorize: [0.337255, 0.303922, 0.870588], // Blue + * opacity: 0.3 + * }, + * + * //... + * + * DEFAULT: { + * colorize: [0.5, 0.5, 0.5] + * } + * }; + * + * const model4 = dotBIMLoader.load({ + * id: "myModel4", + * src: "House.bim", + * objectDefaults: myObjectDefaults // Use our custom initial default states for object Entities + * }); + * ```` + * + * When we don't customize the appearance of IFC types, as just above, then IfcSpace elements tend to obscure other + * elements, which can be confusing. + * + * It's often helpful to make IfcSpaces transparent and unpickable, like this: + * + * ````javascript + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer, { + * objectDefaults: { + * IfcSpace: { + * pickable: false, + * opacity: 0.2 + * } + * } + * }); + * ```` + * + * Alternatively, we could just make IfcSpaces invisible, which also makes them unpickable: + * + * ````javascript + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer, { + * objectDefaults: { + * IfcSpace: { + * visible: false + * } + * } + * }); + * ```` + * + * # Configuring a custom data source + * + * By default, DotBIMLoaderPlugin will load *````.bim````* files and metadata JSON over HTTP. + * + * In the example below, we'll customize the way DotBIMLoaderPlugin loads the files by configuring it with our own data source + * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions. + * + * ````javascript + * import {utils} from "xeokit-sdk.es.js"; + * + * class MyDataSource { + * + * constructor() { + * } + * + * // Gets the contents of the given .bim file in a JSON object + * getDotBIM(src, ok, error) { + * utils.loadJSON(dotBIMSrc, + * (json) => { + * ok(json); + * }, + * function (errMsg) { + * error(errMsg); + * }); + * } + * } + * + * const dotBIMLoader2 = new DotBIMLoaderPlugin(viewer, { + * dataSource: new MyDataSource() + * }); + * + * const model5 = dotBIMLoader2.load({ + * id: "myModel5", + * src: "House.bim" + * }); + * ```` + * @class DotBIMLoaderPlugin + */ +class DotBIMLoaderPlugin extends Plugin { + + /** + * @constructor + * + * @param {Viewer} viewer The Viewer. + * @param {Object} cfg Plugin configuration. + * @param {String} [cfg.id="DotBIMLoader"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}. + * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}. + * @param {Object} [cfg.dataSource] A custom data source through which the DotBIMLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link DotBIMDefaultDataSource}, which loads over HTTP. + */ + constructor(viewer, cfg = {}) { + + super("DotBIMLoader", viewer, cfg); + + this.dataSource = cfg.dataSource; + this.objectDefaults = cfg.objectDefaults; + } + + /** + * Sets a custom data source through which the DotBIMLoaderPlugin can .BIM files. + * + * Default value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest. + * + * @type {Object} + */ + set dataSource(value) { + this._dataSource = value || new DotBIMDefaultDataSource(); + } + + /** + * Gets the custom data source through which the DotBIMLoaderPlugin can load .BIM files. + * + * Default value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest. + * + * @type {Object} + */ + get dataSource() { + return this._dataSource; + } + + /** + * Sets map of initial default states for each loaded {@link Entity} that represents an object. + * + * Default value is {@link IFCObjectDefaults}. + * + * @type {{String: Object}} + */ + set objectDefaults(value) { + this._objectDefaults = value || IFCObjectDefaults; + } + + /** + * Gets map of initial default states for each loaded {@link Entity} that represents an object. + * + * Default value is {@link IFCObjectDefaults}. + * + * @type {{String: Object}} + */ + get objectDefaults() { + return this._objectDefaults; + } + + /** + * Loads a .BIM model from a file into this DotBIMLoaderPlugin's {@link Viewer}. + * + * @param {*} params Loading parameters. + * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default. + * @param {String} [params.src] Path to a .BIM file, as an alternative to the ````bim```` parameter. + * @param {*} [params.bim] .BIM JSON, as an alternative to the ````src```` parameter. + * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}. + * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list. + * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list. + * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates. + * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````. + * @param {Number[]} [params.scale=[1,1,1]] The model's scale. + * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis. + * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the .BIM material is single-sided. When false, only show backfaces on geometries whenever the .BIM material is double-sided. + * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to + * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable + * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point + * primitives. Only works while {@link DTX#enabled} is also ````true````. + * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models} + */ + load(params = {}) { + + if (params.id && this.viewer.scene.components[params.id]) { + this.error("Component with this ID already exists in viewer: " + params.id + " - will autogenerate this ID"); + delete params.id; + } + + const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, { + isModel: true, + backfaces: params.backfaces, + dtxEnabled: params.dtxEnabled, + rotation: params.rotation, + origin: params.origin + })); + + const modelId = sceneModel.id; // In case ID was auto-generated + + if (!params.src && !params.dotBIM) { + this.error("load() param expected: src or dotBIM"); + return sceneModel; // Return new empty model + } + + const objectDefaults = params.objectDefaults || this._objectDefaults || IFCObjectDefaults; + + let includeTypes; + if (params.includeTypes) { + includeTypes = {}; + for (let i = 0, len = params.includeTypes.length; i < len; i++) { + includeTypes[params.includeTypes[i]] = true; + } + } + + let excludeTypes; + if (params.excludeTypes) { + excludeTypes = {}; + if (!includeTypes) { + includeTypes = {}; + } + for (let i = 0, len = params.excludeTypes.length; i < len; i++) { + includeTypes[params.excludeTypes[i]] = true; + } + } + + const parseDotBIM = (ctx) => { + + const fileData = ctx.fileData; + const sceneModel = ctx.sceneModel; + + const dbMeshIndices = {}; + const dbMeshLoaded = {}; + + const ifcProjectId = math.createUUID(); + const ifcSiteId = math.createUUID(); + const ifcBuildingId = math.createUUID(); + const ifcBuildingStoryId = math.createUUID(); + + const metaModelData = { + metaObjects: [ + { + id: ifcProjectId, + name: "IfcProject", + type: "IfcProject", + parent: null + }, + { + id: ifcSiteId, + name: "IfcSite", + type: "IfcSite", + parent: ifcProjectId + }, + { + id: ifcBuildingId, + name: "IfcBuilding", + type: "IfcBuilding", + parent: ifcSiteId + }, + { + id: ifcBuildingStoryId, + name: "IfcBuildingStorey", + type: "IfcBuildingStorey", + parent: ifcBuildingId + } + ], + propertySets: [] + }; + + for (let i = 0, len = fileData.meshes.length; i < len; i++) { + const dbMesh = fileData.meshes[i]; + dbMeshIndices[dbMesh.mesh_id] = i; + } + + const parseDBMesh = (dbMeshId) => { + if (dbMeshLoaded[dbMeshId]) { + return; + } + const dbMeshIndex = dbMeshIndices[dbMeshId]; + const dbMesh = fileData.meshes[dbMeshIndex]; + sceneModel.createGeometry({ + id: dbMeshId, + primitive: "triangles", + positions: dbMesh.coordinates, + indices: dbMesh.indices + }); + dbMeshLoaded[dbMeshId] = true; + }; + + const dbElements = fileData.elements; + for (let i = 0, len = dbElements.length; i < len; i++) { + const element = dbElements[i]; + const elementType = element.type; + if (excludeTypes && excludeTypes[elementType]) { + continue; + + } + if (includeTypes && (!includeTypes[elementType])) { + continue; + } + const info = element.info; + const objectId = + element.guid !== undefined + ? `${element.guid}` + : (info !== undefined && info.id !== undefined + ? info.id + : i); + + const dbMeshId = element.mesh_id; + + parseDBMesh(dbMeshId); + + const meshId = `${objectId}-mesh`; + const vector = element.vector; + const rotation = element.rotation; + const props = objectDefaults ? objectDefaults[elementType] || objectDefaults["DEFAULT"] : null; + + let visible = true; + let pickable = true; + let color = element.color ? [element.color.r / 255, element.color.g / 255, element.color.b / 255] : [1, 1, 1]; + let opacity = element.color ? element.color.a / 255 : 1.0; + + if (props) { + if (props.visible === false) { + visible = false; + } + if (props.pickable === false) { + pickable = false; + } + if (props.colorize) { + color = props.colorize; + } + if (props.opacity !== undefined && props.opacity !== null) { + opacity = props.opacity; + } + } + + sceneModel.createMesh({ + id: meshId, + geometryId: dbMeshId, + color, + opacity, + quaternion: rotation && (rotation.qz !== 0 || rotation.qy !== 0 || rotation.qx !== 0 || rotation.qw !== 1.0) ? [rotation.qx, rotation.qy, rotation.qz, rotation.qw] : undefined, + position: vector ? [vector.x, vector.y, vector.z] : undefined + }); + + sceneModel.createEntity({ + id: objectId, + meshIds: [meshId], + visible, + pickable, + isObject: true + }); + + metaModelData.metaObjects.push({ + id: objectId, + name: info && info.Name && info.Name !== "None" ? info.Name : `${element.type} ${objectId}`, + type: element.type, + parent: ifcBuildingStoryId + }); + } + + sceneModel.finalize(); + + this.viewer.metaScene.createMetaModel(modelId, metaModelData); + + sceneModel.scene.once("tick", () => { + if (sceneModel.destroyed) { + return; + } + sceneModel.scene.fire("modelLoaded", sceneModel.id); // FIXME: Assumes listeners know order of these two events + sceneModel.fire("loaded", true, false); // Don't forget the event, for late subscribers + }); + }; + + if (params.src) { + const src = params.src; + this.viewer.scene.canvas.spinner.processes++; + this._dataSource.getDotBIM(src, (fileData) => { // OK + const ctx = { + fileData, + sceneModel, + nextId: 0, + error: function (errMsg) { + } + }; + parseDotBIM(ctx); + this.viewer.scene.canvas.spinner.processes--; + }, + (err) => { + this.viewer.scene.canvas.spinner.processes--; + this.error(err); + }); + } else if (params.dotBIM) { + const ctx = { + fileData: params.dotBIM, + sceneModel, + nextId: 0, + error: function (errMsg) { + } + }; + parseDotBIM(ctx); + } + + sceneModel.once("destroyed", () => { + this.viewer.metaScene.destroyMetaModel(modelId); + }); + + return sceneModel; + } + + /** + * Destroys this DotBIMLoaderPlugin. + */ + destroy() { + super.destroy(); + } +} + +export { AlphaFormat, AmbientLight, AngleMeasurementsControl, AngleMeasurementsMouseControl, AngleMeasurementsPlugin, AngleMeasurementsTouchControl, AnnotationsPlugin, AxisGizmoPlugin, BCFViewpointsPlugin, Bitmap, ByteType, CameraMemento, CameraPath, CameraPathAnimation, CityJSONLoaderPlugin, ClampToEdgeWrapping, Component, CompressedMediaType, Configs, ContextMenu, CubicBezierCurve, Curve, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DirLight, DistanceMeasurementsControl, DistanceMeasurementsMouseControl, DistanceMeasurementsPlugin, DistanceMeasurementsTouchControl, DotBIMDefaultDataSource, DotBIMLoaderPlugin, EdgeMaterial, EmphasisMaterial, FaceAlignedSectionPlanesPlugin, FastNavPlugin, FloatType, Fresnel, Frustum$1 as Frustum, FrustumPlane, GIFMediaType, GLTFDefaultDataSource, GLTFLoaderPlugin, HalfFloatType, ImagePlane, IntType, JPEGMediaType, KTX2TextureTranscoder, LASLoaderPlugin, LambertMaterial, LightMap, LineSet, LinearEncoding, LinearFilter, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, Loader, LoadingManager, LocaleService, LuminanceAlphaFormat, LuminanceFormat, Map$1 as Map, Marker, MarqueePicker, MarqueePickerMouseControl, Mesh, MetallicMaterial, MirroredRepeatWrapping, ModelMemento, NavCubePlugin, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, Node$2 as Node, OBJLoaderPlugin, ObjectsKdTree3, ObjectsMemento, PNGMediaType, Path, PerformanceModel, PhongMaterial, PickResult, Plugin, PointLight, PointerCircle, PointerLens, QuadraticBezierCurve, Queue, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, ReadableGeometry, RedFormat, RedIntegerFormat, ReflectionMap, RepeatWrapping, STLDefaultDataSource, STLLoaderPlugin, SceneModel, SceneModelMesh, SceneModelTransform, SectionPlane, SectionPlanesPlugin, ShortType, Skybox, SkyboxesPlugin, SpecularMaterial, SplineCurve, SpriteMarker, StoreyViewsPlugin, Texture, TextureTranscoder, TreeViewPlugin, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VBOGeometry, ViewCullPlugin, Viewer, WebIFCLoaderPlugin, WorkerPool$1 as WorkerPool, XKTDefaultDataSource, XKTLoaderPlugin, XML3DLoaderPlugin, buildBoxGeometry, buildBoxLinesGeometry, buildBoxLinesGeometryFromAABB, buildCylinderGeometry, buildGridGeometry, buildPlaneGeometry, buildPolylineGeometry, buildPolylineGeometryFromCurve, buildSphereGeometry, buildTorusGeometry, buildVectorTextGeometry, createRTCViewMat, frustumIntersectsAABB3, getKTX2TextureTranscoder, getPlaneRTCPos, load3DSGeometry, loadOBJGeometry, math, rtcToWorldPos, sRGBEncoding, setFrustum, stats, utils, worldToRTCPos, worldToRTCPositions }; diff --git a/dist/xeokit-sdk.es5.js b/dist/xeokit-sdk.es5.js index 752e0813b1..90f9b6cf63 100644 --- a/dist/xeokit-sdk.es5.js +++ b/dist/xeokit-sdk.es5.js @@ -17073,7 +17073,7 @@ return this;}/** * Translates the SceneModelTransform along the local Z-axis by the given increment. * * @param {Number} distance Distance to translate along the Z-axis. - */},{key:"translateZ",value:function translateZ(distance){this._position[2]+=distance;this._setLocalMatrixDirty();this._model.glRedraw();return this;}},{key:"_setLocalMatrixDirty",value:function _setLocalMatrixDirty(){this._localMatrixDirty=true;this._transformDirty();}},{key:"_transformDirty",value:function _transformDirty(){this._worldMatrixDirty=true;for(var _i397=0,len=this._childTransforms.length;_i3970){var meshes=childTransform._meshes;for(var j=0,lenj=meshes.length;j0){var _meshes=this._meshes;for(var _j3=0,_lenj2=_meshes.length;_j3<_lenj2;_j3++){_meshes[_j3]._transformDirty();}}}},{key:"_buildWorldMatrix",value:function _buildWorldMatrix(){var localMatrix=this.matrix;if(!this._parentTransform){for(var _i398=0,len=localMatrix.length;_i3980){var meshes=childTransform._meshes;for(var j=0,lenj=meshes.length;j0){var _meshes=this._meshes;for(var _j3=0,_lenj2=_meshes.length;_j3<_lenj2;_j3++){_meshes[_j3]._transformDirty();}}}},{key:"_buildWorldMatrix",value:function _buildWorldMatrix(){var localMatrix=this.matrix;if(!this._parentTransform){for(var _i398=0,len=localMatrix.length;_i3981&&arguments[1]!==undefined?arguments[1]:true;var transfers=arguments.length>2?arguments[2]:undefined;var transfersSet=transfers||new Set();if(!object);else if(isTransferable(object)){transfersSet.add(object);}else if(isTransferable(object.buffer)){transfersSet.add(object.buffer);}else if(ArrayBuffer.isView(object));else if(recursive&&_typeof(object)==='object'){for(var key in object){getTransferList(object[key],recursive,transfersSet);}}return transfers===undefined?Array.from(transfersSet):[];}function isTransferable(object){if(!object){return false;}if(object instanceof ArrayBuffer){return true;}if(typeof MessagePort!=='undefined'&&object instanceof MessagePort){return true;}if(typeof ImageBitmap!=='undefined'&&object instanceof ImageBitmap){return true;}if(typeof OffscreenCanvas!=='undefined'&&object instanceof OffscreenCanvas){return true;}return false;}var NOOP=function NOOP(){};var WorkerThread=/*#__PURE__*/function(){function WorkerThread(props){_classCallCheck(this,WorkerThread);_defineProperty(this,"name",void 0);_defineProperty(this,"source",void 0);_defineProperty(this,"url",void 0);_defineProperty(this,"terminated",false);_defineProperty(this,"worker",void 0);_defineProperty(this,"onMessage",void 0);_defineProperty(this,"onError",void 0);_defineProperty(this,"_loadableURL",'');var name=props.name,source=props.source,url=props.url;assert$4(source||url);this.name=name;this.source=source;this.url=url;this.onMessage=NOOP;this.onError=function(error){return console.log(error);};this.worker=isBrowser$3?this._createBrowserWorker():this._createNodeWorker();}_createClass(WorkerThread,[{key:"destroy",value:function destroy(){this.onMessage=NOOP;this.onError=NOOP;this.worker.terminate();this.terminated=true;}},{key:"isRunning",get:function get(){return Boolean(this.onMessage);}},{key:"postMessage",value:function postMessage(data,transferList){transferList=transferList||getTransferList(data);this.worker.postMessage(data,transferList);}},{key:"_getErrorFromErrorEvent",value:function _getErrorFromErrorEvent(event){var message='Failed to load ';message+="worker ".concat(this.name," from ").concat(this.url,". ");if(event.message){message+="".concat(event.message," in ");}if(event.lineno){message+=":".concat(event.lineno,":").concat(event.colno);}return new Error(message);}},{key:"_createBrowserWorker",value:function _createBrowserWorker(){var _this113=this;this._loadableURL=getLoadableWorkerURL({source:this.source,url:this.url});var worker=new Worker(this._loadableURL,{name:this.name});worker.onmessage=function(event){if(!event.data){_this113.onError(new Error('No data received'));}else{_this113.onMessage(event.data);}};worker.onerror=function(error){_this113.onError(_this113._getErrorFromErrorEvent(error));_this113.terminated=true;};worker.onmessageerror=function(event){return console.error(event);};return worker;}},{key:"_createNodeWorker",value:function _createNodeWorker(){var _this114=this;var worker;if(this.url){var absolute=this.url.includes(':/')||this.url.startsWith('/');var url=absolute?this.url:"./".concat(this.url);worker=new Worker$1(url,{eval:false});}else if(this.source){worker=new Worker$1(this.source,{eval:true});}else{throw new Error('no worker');}worker.on('message',function(data){_this114.onMessage(data);});worker.on('error',function(error){_this114.onError(error);});worker.on('exit',function(code){});return worker;}}],[{key:"isSupported",value:function isSupported(){return typeof Worker!=='undefined'&&isBrowser$3||_typeof(Worker$1)!==undefined;}}]);return WorkerThread;}();var WorkerPool=/*#__PURE__*/function(){function WorkerPool(props){_classCallCheck(this,WorkerPool);_defineProperty(this,"name",'unnamed');_defineProperty(this,"source",void 0);_defineProperty(this,"url",void 0);_defineProperty(this,"maxConcurrency",1);_defineProperty(this,"maxMobileConcurrency",1);_defineProperty(this,"onDebug",function(){});_defineProperty(this,"reuseWorkers",true);_defineProperty(this,"props",{});_defineProperty(this,"jobQueue",[]);_defineProperty(this,"idleQueue",[]);_defineProperty(this,"count",0);_defineProperty(this,"isDestroyed",false);this.source=props.source;this.url=props.url;this.setProps(props);}_createClass(WorkerPool,[{key:"destroy",value:function destroy(){this.idleQueue.forEach(function(worker){return worker.destroy();});this.isDestroyed=true;}},{key:"setProps",value:function setProps(props){this.props=_objectSpread(_objectSpread({},this.props),props);if(props.name!==undefined){this.name=props.name;}if(props.maxConcurrency!==undefined){this.maxConcurrency=props.maxConcurrency;}if(props.maxMobileConcurrency!==undefined){this.maxMobileConcurrency=props.maxMobileConcurrency;}if(props.reuseWorkers!==undefined){this.reuseWorkers=props.reuseWorkers;}if(props.onDebug!==undefined){this.onDebug=props.onDebug;}}},{key:"startJob",value:function(){var _startJob=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name){var _this115=this;var onMessage,onError,startPromise,_args2=arguments;return _regeneratorRuntime().wrap(function _callee2$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:onMessage=_args2.length>1&&_args2[1]!==undefined?_args2[1]:function(job,type,data){return job.done(data);};onError=_args2.length>2&&_args2[2]!==undefined?_args2[2]:function(job,error){return job.error(error);};startPromise=new Promise(function(onStart){_this115.jobQueue.push({name:name,onMessage:onMessage,onError:onError,onStart:onStart});return _this115;});this._startQueuedJob();_context3.next=6;return startPromise;case 6:return _context3.abrupt("return",_context3.sent);case 7:case"end":return _context3.stop();}}},_callee2,this);}));function startJob(_x7){return _startJob.apply(this,arguments);}return startJob;}()},{key:"_startQueuedJob",value:function(){var _startQueuedJob2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(){var workerThread,queuedJob,job;return _regeneratorRuntime().wrap(function _callee3$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:if(this.jobQueue.length){_context4.next=2;break;}return _context4.abrupt("return");case 2:workerThread=this._getAvailableWorker();if(workerThread){_context4.next=5;break;}return _context4.abrupt("return");case 5:queuedJob=this.jobQueue.shift();if(!queuedJob){_context4.next=18;break;}this.onDebug({message:'Starting job',name:queuedJob.name,workerThread:workerThread,backlog:this.jobQueue.length});job=new WorkerJob(queuedJob.name,workerThread);workerThread.onMessage=function(data){return queuedJob.onMessage(job,data.type,data.payload);};workerThread.onError=function(error){return queuedJob.onError(job,error);};queuedJob.onStart(job);_context4.prev=12;_context4.next=15;return job.result;case 15:_context4.prev=15;this.returnWorkerToQueue(workerThread);return _context4.finish(15);case 18:case"end":return _context4.stop();}}},_callee3,this,[[12,,15,18]]);}));function _startQueuedJob(){return _startQueuedJob2.apply(this,arguments);}return _startQueuedJob;}()},{key:"returnWorkerToQueue",value:function returnWorkerToQueue(worker){var shouldDestroyWorker=this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency();if(shouldDestroyWorker){worker.destroy();this.count--;}else{this.idleQueue.push(worker);}if(!this.isDestroyed){this._startQueuedJob();}}},{key:"_getAvailableWorker",value:function _getAvailableWorker(){if(this.idleQueue.length>0){return this.idleQueue.shift()||null;}if(this.count0&&arguments[0]!==undefined?arguments[0]:{};WorkerFarm._workerFarm=WorkerFarm._workerFarm||new WorkerFarm({});WorkerFarm._workerFarm.setProps(props);return WorkerFarm._workerFarm;}}]);return WorkerFarm;}();_defineProperty(WorkerFarm,"_workerFarm",void 0);var NPM_TAG='latest';function getWorkerURL(worker){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var workerOptions=options[worker.id]||{};var workerFile="".concat(worker.id,"-worker.js");var url=workerOptions.workerUrl;if(!url&&worker.id==='compression'){url=options.workerUrl;}if(options._workerType==='test'){url="modules/".concat(worker.module,"/dist/").concat(workerFile);}if(!url){var version=worker.version;if(version==='latest'){version=NPM_TAG;}var versionTag=version?"@".concat(version):'';url="https://unpkg.com/@loaders.gl/".concat(worker.module).concat(versionTag,"/dist/").concat(workerFile);}assert$4(url);return url;}function validateWorkerVersion(worker){var coreVersion=arguments.length>1&&arguments[1]!==undefined?arguments[1]:VERSION$9;assert$4(worker,'no worker provided');var workerVersion=worker.version;if(!coreVersion||!workerVersion){return false;}return true;}var ChildProcessProxy={};var node=/*#__PURE__*/Object.freeze({__proto__:null,'default':ChildProcessProxy});var VERSION$8="3.2.6";var loadLibraryPromises={};function loadLibrary(_x8){return _loadLibrary.apply(this,arguments);}function _loadLibrary(){_loadLibrary=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(libraryUrl){var moduleName,options,_args4=arguments;return _regeneratorRuntime().wrap(function _callee7$(_context11){while(1){switch(_context11.prev=_context11.next){case 0:moduleName=_args4.length>1&&_args4[1]!==undefined?_args4[1]:null;options=_args4.length>2&&_args4[2]!==undefined?_args4[2]:{};if(moduleName){libraryUrl=getLibraryUrl(libraryUrl,moduleName,options);}loadLibraryPromises[libraryUrl]=loadLibraryPromises[libraryUrl]||loadLibraryFromFile(libraryUrl);_context11.next=6;return loadLibraryPromises[libraryUrl];case 6:return _context11.abrupt("return",_context11.sent);case 7:case"end":return _context11.stop();}}},_callee7);}));return _loadLibrary.apply(this,arguments);}function getLibraryUrl(library,moduleName,options){if(library.startsWith('http')){return library;}var modules=options.modules||{};if(modules[library]){return modules[library];}if(!isBrowser$3){return"modules/".concat(moduleName,"/dist/libs/").concat(library);}if(options.CDN){assert$4(options.CDN.startsWith('http'));return"".concat(options.CDN,"/").concat(moduleName,"@").concat(VERSION$8,"/dist/libs/").concat(library);}if(isWorker){return"../src/libs/".concat(library);}return"modules/".concat(moduleName,"/src/libs/").concat(library);}function loadLibraryFromFile(_x9){return _loadLibraryFromFile.apply(this,arguments);}function _loadLibraryFromFile(){_loadLibraryFromFile=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(libraryUrl){var _response,response,scriptSource;return _regeneratorRuntime().wrap(function _callee8$(_context12){while(1){switch(_context12.prev=_context12.next){case 0:if(!libraryUrl.endsWith('wasm')){_context12.next=7;break;}_context12.next=3;return fetch(libraryUrl);case 3:_response=_context12.sent;_context12.next=6;return _response.arrayBuffer();case 6:return _context12.abrupt("return",_context12.sent);case 7:if(isBrowser$3){_context12.next=20;break;}_context12.prev=8;_context12.t0=node&&undefined;if(!_context12.t0){_context12.next=14;break;}_context12.next=13;return undefined(libraryUrl);case 13:_context12.t0=_context12.sent;case 14:return _context12.abrupt("return",_context12.t0);case 17:_context12.prev=17;_context12.t1=_context12["catch"](8);return _context12.abrupt("return",null);case 20:if(!isWorker){_context12.next=22;break;}return _context12.abrupt("return",importScripts(libraryUrl));case 22:_context12.next=24;return fetch(libraryUrl);case 24:response=_context12.sent;_context12.next=27;return response.text();case 27:scriptSource=_context12.sent;return _context12.abrupt("return",loadLibraryFromString(scriptSource,libraryUrl));case 29:case"end":return _context12.stop();}}},_callee8,null,[[8,17]]);}));return _loadLibraryFromFile.apply(this,arguments);}function loadLibraryFromString(scriptSource,id){if(!isBrowser$3){return undefined&&undefined(scriptSource,id);}if(isWorker){eval.call(global_,scriptSource);return null;}var script=document.createElement('script');script.id=id;try{script.appendChild(document.createTextNode(scriptSource));}catch(e){script.text=scriptSource;}document.body.appendChild(script);return null;}function canParseWithWorker(loader,options){if(!WorkerFarm.isSupported()){return false;}if(!isBrowser$3&&!(options!==null&&options!==void 0&&options._nodeWorkers)){return false;}return loader.worker&&(options===null||options===void 0?void 0:options.worker);}function parseWithWorker(_x10,_x11,_x12,_x13,_x14){return _parseWithWorker.apply(this,arguments);}function _parseWithWorker(){_parseWithWorker=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(loader,data,options,context,parseOnMainThread){var name,url,workerFarm,workerPool,job,result;return _regeneratorRuntime().wrap(function _callee9$(_context13){while(1){switch(_context13.prev=_context13.next){case 0:name=loader.id;url=getWorkerURL(loader,options);workerFarm=WorkerFarm.getWorkerFarm(options);workerPool=workerFarm.getWorkerPool({name:name,url:url});options=JSON.parse(JSON.stringify(options));context=JSON.parse(JSON.stringify(context||{}));_context13.next=8;return workerPool.startJob('process-on-worker',onMessage.bind(null,parseOnMainThread));case 8:job=_context13.sent;job.postMessage('process',{input:data,options:options,context:context});_context13.next=12;return job.result;case 12:result=_context13.sent;_context13.next=15;return result.result;case 15:return _context13.abrupt("return",_context13.sent);case 16:case"end":return _context13.stop();}}},_callee9);}));return _parseWithWorker.apply(this,arguments);}function onMessage(_x15,_x16,_x17,_x18){return _onMessage2.apply(this,arguments);}function _onMessage2(){_onMessage2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10(parseOnMainThread,job,type,payload){var id,input,options,result,message;return _regeneratorRuntime().wrap(function _callee10$(_context14){while(1){switch(_context14.prev=_context14.next){case 0:_context14.t0=type;_context14.next=_context14.t0==='done'?3:_context14.t0==='error'?5:_context14.t0==='process'?7:20;break;case 3:job.done(payload);return _context14.abrupt("break",21);case 5:job.error(new Error(payload.error));return _context14.abrupt("break",21);case 7:id=payload.id,input=payload.input,options=payload.options;_context14.prev=8;_context14.next=11;return parseOnMainThread(input,options);case 11:result=_context14.sent;job.postMessage('done',{id:id,result:result});_context14.next=19;break;case 15:_context14.prev=15;_context14.t1=_context14["catch"](8);message=_context14.t1 instanceof Error?_context14.t1.message:'unknown error';job.postMessage('error',{id:id,error:message});case 19:return _context14.abrupt("break",21);case 20:console.warn("parse-with-worker unknown message ".concat(type));case 21:case"end":return _context14.stop();}}},_callee10,null,[[8,15]]);}));return _onMessage2.apply(this,arguments);}function getFirstCharacters$1(data){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:5;if(typeof data==='string'){return data.slice(0,length);}else if(ArrayBuffer.isView(data)){return getMagicString$2(data.buffer,data.byteOffset,length);}else if(data instanceof ArrayBuffer){var byteOffset=0;return getMagicString$2(data,byteOffset,length);}return'';}function getMagicString$2(arrayBuffer,byteOffset,length){if(arrayBuffer.byteLength<=byteOffset+length){return'';}var dataView=new DataView(arrayBuffer);var magic='';for(var _i494=0;_i494=0);assert$5(padding>0);return byteLength+(padding-1)&~(padding-1);}function copyToArray(source,target,targetOffset){var sourceArray;if(source instanceof ArrayBuffer){sourceArray=new Uint8Array(source);}else{var srcByteOffset=source.byteOffset;var srcByteLength=source.byteLength;sourceArray=new Uint8Array(source.buffer||source.arrayBuffer,srcByteOffset,srcByteLength);}target.set(sourceArray,targetOffset);return targetOffset+padToNBytes(sourceArray.byteLength,4);}function concatenateArrayBuffersAsync(_x19){return _concatenateArrayBuffersAsync.apply(this,arguments);}function _concatenateArrayBuffersAsync(){_concatenateArrayBuffersAsync=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11(asyncIterator){var arrayBuffers,_iteratorAbruptCompletion,_didIteratorError,_iteratorError,_iterator,_step,chunk;return _regeneratorRuntime().wrap(function _callee11$(_context15){while(1){switch(_context15.prev=_context15.next){case 0:arrayBuffers=[];_iteratorAbruptCompletion=false;_didIteratorError=false;_context15.prev=3;_iterator=_asyncIterator(asyncIterator);case 5:_context15.next=7;return _iterator.next();case 7:if(!(_iteratorAbruptCompletion=!(_step=_context15.sent).done)){_context15.next=13;break;}chunk=_step.value;arrayBuffers.push(chunk);case 10:_iteratorAbruptCompletion=false;_context15.next=5;break;case 13:_context15.next=19;break;case 15:_context15.prev=15;_context15.t0=_context15["catch"](3);_didIteratorError=true;_iteratorError=_context15.t0;case 19:_context15.prev=19;_context15.prev=20;if(!(_iteratorAbruptCompletion&&_iterator["return"]!=null)){_context15.next=24;break;}_context15.next=24;return _iterator["return"]();case 24:_context15.prev=24;if(!_didIteratorError){_context15.next=27;break;}throw _iteratorError;case 27:return _context15.finish(24);case 28:return _context15.finish(19);case 29:return _context15.abrupt("return",concatenateArrayBuffers.apply(void 0,arrayBuffers));case 30:case"end":return _context15.stop();}}},_callee11,null,[[3,15,19,29],[20,,24,28]]);}));return _concatenateArrayBuffersAsync.apply(this,arguments);}var pathPrefix='';var fileAliases={};function resolvePath(filename){for(var alias in fileAliases){if(filename.startsWith(alias)){var replacement=fileAliases[alias];filename=filename.replace(alias,replacement);}}if(!filename.startsWith('http://')&&!filename.startsWith('https://')){filename="".concat(pathPrefix).concat(filename);}return filename;}function filename(url){var slashIndex=url&&url.lastIndexOf('/');return slashIndex>=0?url.substr(slashIndex+1):'';}var isBoolean=function isBoolean(x){return typeof x==='boolean';};var isFunction=function isFunction(x){return typeof x==='function';};var isObject=function isObject(x){return x!==null&&_typeof(x)==='object';};var isPureObject=function isPureObject(x){return isObject(x)&&x.constructor==={}.constructor;};var isIterable=function isIterable(x){return x&&typeof x[Symbol.iterator]==='function';};var isAsyncIterable=function isAsyncIterable(x){return x&&typeof x[Symbol.asyncIterator]==='function';};var isResponse=function isResponse(x){return typeof Response!=='undefined'&&x instanceof Response||x&&x.arrayBuffer&&x.text&&x.json;};var isBlob=function isBlob(x){return typeof Blob!=='undefined'&&x instanceof Blob;};var isBuffer=function isBuffer(x){return x&&_typeof(x)==='object'&&x.isBuffer;};var isReadableDOMStream=function isReadableDOMStream(x){return typeof ReadableStream!=='undefined'&&x instanceof ReadableStream||isObject(x)&&isFunction(x.tee)&&isFunction(x.cancel)&&isFunction(x.getReader);};var isReadableNodeStream=function isReadableNodeStream(x){return isObject(x)&&isFunction(x.read)&&isFunction(x.pipe)&&isBoolean(x.readable);};var isReadableStream=function isReadableStream(x){return isReadableDOMStream(x)||isReadableNodeStream(x);};var DATA_URL_PATTERN=/^data:([-\w.]+\/[-\w.+]+)(;|,)/;var MIME_TYPE_PATTERN=/^([-\w.]+\/[-\w.+]+)/;function parseMIMEType(mimeString){var matches=MIME_TYPE_PATTERN.exec(mimeString);if(matches){return matches[1];}return mimeString;}function parseMIMETypeFromURL(url){var matches=DATA_URL_PATTERN.exec(url);if(matches){return matches[1];}return'';}var QUERY_STRING_PATTERN=/\?.*/;function getResourceUrlAndType(resource){if(isResponse(resource)){var url=stripQueryString(resource.url||'');var contentTypeHeader=resource.headers.get('content-type')||'';return{url:url,type:parseMIMEType(contentTypeHeader)||parseMIMETypeFromURL(url)};}if(isBlob(resource)){return{url:stripQueryString(resource.name||''),type:resource.type||''};}if(typeof resource==='string'){return{url:stripQueryString(resource),type:parseMIMETypeFromURL(resource)};}return{url:'',type:''};}function getResourceContentLength(resource){if(isResponse(resource)){return resource.headers['content-length']||-1;}if(isBlob(resource)){return resource.size;}if(typeof resource==='string'){return resource.length;}if(resource instanceof ArrayBuffer){return resource.byteLength;}if(ArrayBuffer.isView(resource)){return resource.byteLength;}return-1;}function stripQueryString(url){return url.replace(QUERY_STRING_PATTERN,'');}function makeResponse(_x20){return _makeResponse.apply(this,arguments);}function _makeResponse(){_makeResponse=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12(resource){var headers,contentLength,_getResourceUrlAndTyp3,url,type,initialDataUrl,response;return _regeneratorRuntime().wrap(function _callee12$(_context16){while(1){switch(_context16.prev=_context16.next){case 0:if(!isResponse(resource)){_context16.next=2;break;}return _context16.abrupt("return",resource);case 2:headers={};contentLength=getResourceContentLength(resource);if(contentLength>=0){headers['content-length']=String(contentLength);}_getResourceUrlAndTyp3=getResourceUrlAndType(resource),url=_getResourceUrlAndTyp3.url,type=_getResourceUrlAndTyp3.type;if(type){headers['content-type']=type;}_context16.next=9;return getInitialDataUrl(resource);case 9:initialDataUrl=_context16.sent;if(initialDataUrl){headers['x-first-bytes']=initialDataUrl;}if(typeof resource==='string'){resource=new TextEncoder().encode(resource);}response=new Response(resource,{headers:headers});Object.defineProperty(response,'url',{value:url});return _context16.abrupt("return",response);case 15:case"end":return _context16.stop();}}},_callee12);}));return _makeResponse.apply(this,arguments);}function checkResponse(_x21){return _checkResponse.apply(this,arguments);}function _checkResponse(){_checkResponse=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee13(response){var message;return _regeneratorRuntime().wrap(function _callee13$(_context17){while(1){switch(_context17.prev=_context17.next){case 0:if(response.ok){_context17.next=5;break;}_context17.next=3;return getResponseError(response);case 3:message=_context17.sent;throw new Error(message);case 5:case"end":return _context17.stop();}}},_callee13);}));return _checkResponse.apply(this,arguments);}function getResponseError(_x22){return _getResponseError.apply(this,arguments);}function _getResponseError(){_getResponseError=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee14(response){var message,contentType,text;return _regeneratorRuntime().wrap(function _callee14$(_context18){while(1){switch(_context18.prev=_context18.next){case 0:message="Failed to fetch resource ".concat(response.url," (").concat(response.status,"): ");_context18.prev=1;contentType=response.headers.get('Content-Type');text=response.statusText;if(!contentType.includes('application/json')){_context18.next=11;break;}_context18.t0=text;_context18.t1=" ";_context18.next=9;return response.text();case 9:_context18.t2=_context18.sent;text=_context18.t0+=_context18.t1.concat.call(_context18.t1,_context18.t2);case 11:message+=text;message=message.length>60?"".concat(message.slice(0,60),"..."):message;_context18.next=17;break;case 15:_context18.prev=15;_context18.t3=_context18["catch"](1);case 17:return _context18.abrupt("return",message);case 18:case"end":return _context18.stop();}}},_callee14,null,[[1,15]]);}));return _getResponseError.apply(this,arguments);}function getInitialDataUrl(_x23){return _getInitialDataUrl.apply(this,arguments);}function _getInitialDataUrl(){_getInitialDataUrl=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee15(resource){var INITIAL_DATA_LENGTH,blobSlice,slice,_base;return _regeneratorRuntime().wrap(function _callee15$(_context19){while(1){switch(_context19.prev=_context19.next){case 0:INITIAL_DATA_LENGTH=5;if(!(typeof resource==='string')){_context19.next=3;break;}return _context19.abrupt("return","data:,".concat(resource.slice(0,INITIAL_DATA_LENGTH)));case 3:if(!(resource instanceof Blob)){_context19.next=8;break;}blobSlice=resource.slice(0,5);_context19.next=7;return new Promise(function(resolve){var reader=new FileReader();reader.onload=function(event){var _event$target;return resolve(event===null||event===void 0?void 0:(_event$target=event.target)===null||_event$target===void 0?void 0:_event$target.result);};reader.readAsDataURL(blobSlice);});case 7:return _context19.abrupt("return",_context19.sent);case 8:if(!(resource instanceof ArrayBuffer)){_context19.next=12;break;}slice=resource.slice(0,INITIAL_DATA_LENGTH);_base=arrayBufferToBase64(slice);return _context19.abrupt("return","data:base64,".concat(_base));case 12:return _context19.abrupt("return",null);case 13:case"end":return _context19.stop();}}},_callee15);}));return _getInitialDataUrl.apply(this,arguments);}function arrayBufferToBase64(buffer){var binary='';var bytes=new Uint8Array(buffer);for(var _i496=0;_i496=0){return true;}return false;}function isBrowser$2(){var isNode=(typeof process==="undefined"?"undefined":_typeof(process))==='object'&&String(process)==='[object process]'&&!process.browser;return!isNode||isElectron$1();}var globals$1={self:typeof self!=='undefined'&&self,window:typeof window!=='undefined'&&window,global:typeof global!=='undefined'&&global,document:typeof document!=='undefined'&&document,process:(typeof process==="undefined"?"undefined":_typeof(process))==='object'&&process};var window_$1=globals$1.window||globals$1.self||globals$1.global;var process_$1=globals$1.process||{};var VERSION$7=typeof __VERSION__!=='undefined'?__VERSION__:'untranspiled source';var isBrowser$1=isBrowser$2();function getStorage$1(type){try{var storage=window[type];var x='__storage_test__';storage.setItem(x,x);storage.removeItem(x);return storage;}catch(e){return null;}}var LocalStorage$1=/*#__PURE__*/function(){function LocalStorage$1(id,defaultSettings){var type=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'sessionStorage';_classCallCheck(this,LocalStorage$1);this.storage=getStorage$1(type);this.id=id;this.config={};Object.assign(this.config,defaultSettings);this._loadConfiguration();}_createClass(LocalStorage$1,[{key:"getConfiguration",value:function getConfiguration(){return this.config;}},{key:"setConfiguration",value:function setConfiguration(configuration){this.config={};return this.updateConfiguration(configuration);}},{key:"updateConfiguration",value:function updateConfiguration(configuration){Object.assign(this.config,configuration);if(this.storage){var serialized=JSON.stringify(this.config);this.storage.setItem(this.id,serialized);}return this;}},{key:"_loadConfiguration",value:function _loadConfiguration(){var configuration={};if(this.storage){var serializedConfiguration=this.storage.getItem(this.id);configuration=serializedConfiguration?JSON.parse(serializedConfiguration):{};}Object.assign(this.config,configuration);return this;}}]);return LocalStorage$1;}();function formatTime$1(ms){var formatted;if(ms<10){formatted="".concat(ms.toFixed(2),"ms");}else if(ms<100){formatted="".concat(ms.toFixed(1),"ms");}else if(ms<1000){formatted="".concat(ms.toFixed(0),"ms");}else{formatted="".concat((ms/1000).toFixed(2),"s");}return formatted;}function leftPad$1(string){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:8;var padLength=Math.max(length-string.length,0);return"".concat(' '.repeat(padLength)).concat(string);}function formatImage$1(image,message,scale){var maxWidth=arguments.length>3&&arguments[3]!==undefined?arguments[3]:600;var imageUrl=image.src.replace(/\(/g,'%28').replace(/\)/g,'%29');if(image.width>maxWidth){scale=Math.min(scale,maxWidth/image.width);}var width=image.width*scale;var height=image.height*scale;var style=['font-size:1px;',"padding:".concat(Math.floor(height/2),"px ").concat(Math.floor(width/2),"px;"),"line-height:".concat(height,"px;"),"background:url(".concat(imageUrl,");"),"background-size:".concat(width,"px ").concat(height,"px;"),'color:transparent;'].join('');return["".concat(message," %c+"),style];}var COLOR$1={BLACK:30,RED:31,GREEN:32,YELLOW:33,BLUE:34,MAGENTA:35,CYAN:36,WHITE:37,BRIGHT_BLACK:90,BRIGHT_RED:91,BRIGHT_GREEN:92,BRIGHT_YELLOW:93,BRIGHT_BLUE:94,BRIGHT_MAGENTA:95,BRIGHT_CYAN:96,BRIGHT_WHITE:97};function getColor$1(color){return typeof color==='string'?COLOR$1[color.toUpperCase()]||COLOR$1.WHITE:color;}function addColor$1(string,color,background){if(!isBrowser$1&&typeof string==='string'){if(color){color=getColor$1(color);string="\x1B[".concat(color,"m").concat(string,"\x1B[39m");}if(background){color=getColor$1(background);string="\x1B[".concat(background+10,"m").concat(string,"\x1B[49m");}}return string;}function autobind$1(obj){var predefined=arguments.length>1&&arguments[1]!==undefined?arguments[1]:['constructor'];var proto=Object.getPrototypeOf(obj);var propNames=Object.getOwnPropertyNames(proto);var _iterator7=_createForOfIteratorHelper(propNames),_step7;try{var _loop4=function _loop4(){var key=_step7.value;if(typeof obj[key]==='function'){if(!predefined.find(function(name){return key===name;})){obj[key]=obj[key].bind(obj);}}};for(_iterator7.s();!(_step7=_iterator7.n()).done;){_loop4();}}catch(err){_iterator7.e(err);}finally{_iterator7.f();}}function assert$3(condition,message){if(!condition){throw new Error(message||'Assertion failed');}}function getHiResTimestamp$1(){var timestamp;if(isBrowser$1&&window_$1.performance){timestamp=window_$1.performance.now();}else if(process_$1.hrtime){var timeParts=process_$1.hrtime();timestamp=timeParts[0]*1000+timeParts[1]/1e6;}else{timestamp=Date.now();}return timestamp;}var originalConsole$1={debug:isBrowser$1?console.debug||console.log:console.log,log:console.log,info:console.info,warn:console.warn,error:console.error};var DEFAULT_SETTINGS$1={enabled:true,level:0};function noop$1(){}var cache$1={};var ONCE$1={once:true};function getTableHeader$1(table){for(var key in table){for(var title in table[key]){return title||'untitled';}}return'empty';}var Log$1=/*#__PURE__*/function(){function Log$1(){var _ref16=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{id:''},id=_ref16.id;_classCallCheck(this,Log$1);this.id=id;this.VERSION=VERSION$7;this._startTs=getHiResTimestamp$1();this._deltaTs=getHiResTimestamp$1();this.LOG_THROTTLE_TIMEOUT=0;this._storage=new LocalStorage$1("__probe-".concat(this.id,"__"),DEFAULT_SETTINGS$1);this.userData={};this.timeStamp("".concat(this.id," started"));autobind$1(this);Object.seal(this);}_createClass(Log$1,[{key:"level",get:function get(){return this.getLevel();},set:function set(newLevel){this.setLevel(newLevel);}},{key:"isEnabled",value:function isEnabled(){return this._storage.config.enabled;}},{key:"getLevel",value:function getLevel(){return this._storage.config.level;}},{key:"getTotal",value:function getTotal(){return Number((getHiResTimestamp$1()-this._startTs).toPrecision(10));}},{key:"getDelta",value:function getDelta(){return Number((getHiResTimestamp$1()-this._deltaTs).toPrecision(10));}},{key:"priority",get:function get(){return this.level;},set:function set(newPriority){this.level=newPriority;}},{key:"getPriority",value:function getPriority(){return this.level;}},{key:"enable",value:function enable(){var enabled=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;this._storage.updateConfiguration({enabled:enabled});return this;}},{key:"setLevel",value:function setLevel(level){this._storage.updateConfiguration({level:level});return this;}},{key:"assert",value:function assert(condition,message){assert$3(condition,message);}},{key:"warn",value:function warn(message){return this._getLogFunction(0,message,originalConsole$1.warn,arguments,ONCE$1);}},{key:"error",value:function error(message){return this._getLogFunction(0,message,originalConsole$1.error,arguments);}},{key:"deprecated",value:function deprecated(oldUsage,newUsage){return this.warn("`".concat(oldUsage,"` is deprecated and will be removed in a later version. Use `").concat(newUsage,"` instead"));}},{key:"removed",value:function removed(oldUsage,newUsage){return this.error("`".concat(oldUsage,"` has been removed. Use `").concat(newUsage,"` instead"));}},{key:"probe",value:function probe(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole$1.log,arguments,{time:true,once:true});}},{key:"log",value:function log(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole$1.debug,arguments);}},{key:"info",value:function info(logLevel,message){return this._getLogFunction(logLevel,message,console.info,arguments);}},{key:"once",value:function once(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole$1.debug||originalConsole$1.info,arguments,ONCE$1);}},{key:"table",value:function table(logLevel,_table,columns){if(_table){return this._getLogFunction(logLevel,_table,console.table||noop$1,columns&&[columns],{tag:getTableHeader$1(_table)});}return noop$1;}},{key:"image",value:function(_image6){function image(_x26){return _image6.apply(this,arguments);}image.toString=function(){return _image6.toString();};return image;}(function(_ref17){var logLevel=_ref17.logLevel,priority=_ref17.priority,image=_ref17.image,_ref17$message=_ref17.message,message=_ref17$message===void 0?'':_ref17$message,_ref17$scale=_ref17.scale,scale=_ref17$scale===void 0?1:_ref17$scale;if(!this._shouldLog(logLevel||priority)){return noop$1;}return isBrowser$1?logImageInBrowser$1({image:image,message:message,scale:scale}):logImageInNode$1({image:image,message:message,scale:scale});})},{key:"settings",value:function settings(){if(console.table){console.table(this._storage.config);}else{console.log(this._storage.config);}}},{key:"get",value:function get(setting){return this._storage.config[setting];}},{key:"set",value:function set(setting,value){this._storage.updateConfiguration(_defineProperty2({},setting,value));}},{key:"time",value:function time(logLevel,message){return this._getLogFunction(logLevel,message,console.time?console.time:console.info);}},{key:"timeEnd",value:function timeEnd(logLevel,message){return this._getLogFunction(logLevel,message,console.timeEnd?console.timeEnd:console.info);}},{key:"timeStamp",value:function timeStamp(logLevel,message){return this._getLogFunction(logLevel,message,console.timeStamp||noop$1);}},{key:"group",value:function group(logLevel,message){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{collapsed:false};opts=normalizeArguments$1({logLevel:logLevel,message:message,opts:opts});var _opts=opts,collapsed=_opts.collapsed;opts.method=(collapsed?console.groupCollapsed:console.group)||console.info;return this._getLogFunction(opts);}},{key:"groupCollapsed",value:function groupCollapsed(logLevel,message){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return this.group(logLevel,message,Object.assign({},opts,{collapsed:true}));}},{key:"groupEnd",value:function groupEnd(logLevel){return this._getLogFunction(logLevel,'',console.groupEnd||noop$1);}},{key:"withGroup",value:function withGroup(logLevel,message,func){this.group(logLevel,message)();try{func();}finally{this.groupEnd(logLevel)();}}},{key:"trace",value:function trace(){if(console.trace){console.trace();}}},{key:"_shouldLog",value:function _shouldLog(logLevel){return this.isEnabled()&&this.getLevel()>=normalizeLogLevel$1(logLevel);}},{key:"_getLogFunction",value:function _getLogFunction(logLevel,message,method){var args=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];var opts=arguments.length>4?arguments[4]:undefined;if(this._shouldLog(logLevel)){var _method;opts=normalizeArguments$1({logLevel:logLevel,message:message,args:args,opts:opts});method=method||opts.method;assert$3(method);opts.total=this.getTotal();opts.delta=this.getDelta();this._deltaTs=getHiResTimestamp$1();var tag=opts.tag||opts.message;if(opts.once){if(!cache$1[tag]){cache$1[tag]=getHiResTimestamp$1();}else{return noop$1;}}message=decorateMessage$1(this.id,opts.message,opts);return(_method=method).bind.apply(_method,[console,message].concat(_toConsumableArray(opts.args)));}return noop$1;}}]);return Log$1;}();Log$1.VERSION=VERSION$7;function normalizeLogLevel$1(logLevel){if(!logLevel){return 0;}var resolvedLevel;switch(_typeof(logLevel)){case'number':resolvedLevel=logLevel;break;case'object':resolvedLevel=logLevel.logLevel||logLevel.priority||0;break;default:return 0;}assert$3(Number.isFinite(resolvedLevel)&&resolvedLevel>=0);return resolvedLevel;}function normalizeArguments$1(opts){var logLevel=opts.logLevel,message=opts.message;opts.logLevel=normalizeLogLevel$1(logLevel);var args=opts.args?Array.from(opts.args):[];while(args.length&&args.shift()!==message){}opts.args=args;switch(_typeof(logLevel)){case'string':case'function':if(message!==undefined){args.unshift(message);}opts.message=logLevel;break;case'object':Object.assign(opts,logLevel);break;}if(typeof opts.message==='function'){opts.message=opts.message();}var messageType=_typeof(opts.message);assert$3(messageType==='string'||messageType==='object');return Object.assign(opts,opts.opts);}function decorateMessage$1(id,message,opts){if(typeof message==='string'){var _time=opts.time?leftPad$1(formatTime$1(opts.total)):'';message=opts.time?"".concat(id,": ").concat(_time," ").concat(message):"".concat(id,": ").concat(message);message=addColor$1(message,opts.color,opts.background);}return message;}function logImageInNode$1(_ref18){var image=_ref18.image,_ref18$message=_ref18.message,message=_ref18$message===void 0?'':_ref18$message,_ref18$scale=_ref18.scale,scale=_ref18$scale===void 0?1:_ref18$scale;var asciify=null;try{asciify=module.require('asciify-image');}catch(error){}if(asciify){return function(){return asciify(image,{fit:'box',width:"".concat(Math.round(80*scale),"%")}).then(function(data){return console.log(data);});};}return noop$1;}function logImageInBrowser$1(_ref19){var image=_ref19.image,_ref19$message=_ref19.message,message=_ref19$message===void 0?'':_ref19$message,_ref19$scale=_ref19.scale,scale=_ref19$scale===void 0?1:_ref19$scale;if(typeof image==='string'){var img=new Image();img.onload=function(){var _console;var args=formatImage$1(img,message,scale);(_console=console).log.apply(_console,_toConsumableArray(args));};img.src=image;return noop$1;}var element=image.nodeName||'';if(element.toLowerCase()==='img'){var _console2;(_console2=console).log.apply(_console2,_toConsumableArray(formatImage$1(image,message,scale)));return noop$1;}if(element.toLowerCase()==='canvas'){var _img=new Image();_img.onload=function(){var _console3;return(_console3=console).log.apply(_console3,_toConsumableArray(formatImage$1(_img,message,scale)));};_img.src=image.toDataURL();return noop$1;}return noop$1;}var probeLog=new Log$1({id:'loaders.gl'});var NullLog=/*#__PURE__*/function(){function NullLog(){_classCallCheck(this,NullLog);}_createClass(NullLog,[{key:"log",value:function log(){return function(){};}},{key:"info",value:function info(){return function(){};}},{key:"warn",value:function warn(){return function(){};}},{key:"error",value:function error(){return function(){};}}]);return NullLog;}();var ConsoleLog=/*#__PURE__*/function(){function ConsoleLog(){_classCallCheck(this,ConsoleLog);_defineProperty(this,"console",void 0);this.console=console;}_createClass(ConsoleLog,[{key:"log",value:function log(){var _this$console$log;for(var _len103=arguments.length,args=new Array(_len103),_key7=0;_key7<_len103;_key7++){args[_key7]=arguments[_key7];}return(_this$console$log=this.console.log).bind.apply(_this$console$log,[this.console].concat(args));}},{key:"info",value:function info(){var _this$console$info;for(var _len104=arguments.length,args=new Array(_len104),_key8=0;_key8<_len104;_key8++){args[_key8]=arguments[_key8];}return(_this$console$info=this.console.info).bind.apply(_this$console$info,[this.console].concat(args));}},{key:"warn",value:function warn(){var _this$console$warn;for(var _len105=arguments.length,args=new Array(_len105),_key9=0;_key9<_len105;_key9++){args[_key9]=arguments[_key9];}return(_this$console$warn=this.console.warn).bind.apply(_this$console$warn,[this.console].concat(args));}},{key:"error",value:function error(){var _this$console$error;for(var _len106=arguments.length,args=new Array(_len106),_key10=0;_key10<_len106;_key10++){args[_key10]=arguments[_key10];}return(_this$console$error=this.console.error).bind.apply(_this$console$error,[this.console].concat(args));}}]);return ConsoleLog;}();var DEFAULT_LOADER_OPTIONS={fetch:null,mimeType:undefined,nothrow:false,log:new ConsoleLog(),CDN:'https://unpkg.com/@loaders.gl',worker:true,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:isBrowser$4,_nodeWorkers:false,_workerType:'',limit:0,_limitMB:0,batchSize:'auto',batchDebounceMs:0,metadata:false,transforms:[]};var REMOVED_LOADER_OPTIONS={"throws":'nothrow',dataType:'(no longer used)',uri:'baseUri',method:'fetch.method',headers:'fetch.headers',body:'fetch.body',mode:'fetch.mode',credentials:'fetch.credentials',cache:'fetch.cache',redirect:'fetch.redirect',referrer:'fetch.referrer',referrerPolicy:'fetch.referrerPolicy',integrity:'fetch.integrity',keepalive:'fetch.keepalive',signal:'fetch.signal'};function getGlobalLoaderState(){globalThis.loaders=globalThis.loaders||{};var loaders=globalThis.loaders;loaders._state=loaders._state||{};return loaders._state;}var getGlobalLoaderOptions=function getGlobalLoaderOptions(){var state=getGlobalLoaderState();state.globalOptions=state.globalOptions||_objectSpread({},DEFAULT_LOADER_OPTIONS);return state.globalOptions;};function normalizeOptions(options,loader,loaders,url){loaders=loaders||[];loaders=Array.isArray(loaders)?loaders:[loaders];validateOptions(options,loaders);return normalizeOptionsInternal(loader,options,url);}function getFetchFunction(options,context){var globalOptions=getGlobalLoaderOptions();var fetchOptions=options||globalOptions;if(typeof fetchOptions.fetch==='function'){return fetchOptions.fetch;}if(isObject(fetchOptions.fetch)){return function(url){return fetchFile(url,fetchOptions);};}if(context!==null&&context!==void 0&&context.fetch){return context===null||context===void 0?void 0:context.fetch;}return fetchFile;}function validateOptions(options,loaders){validateOptionsObject(options,null,DEFAULT_LOADER_OPTIONS,REMOVED_LOADER_OPTIONS,loaders);var _iterator8=_createForOfIteratorHelper(loaders),_step8;try{for(_iterator8.s();!(_step8=_iterator8.n()).done;){var loader=_step8.value;var idOptions=options&&options[loader.id]||{};var loaderOptions=loader.options&&loader.options[loader.id]||{};var deprecatedOptions=loader.deprecatedOptions&&loader.deprecatedOptions[loader.id]||{};validateOptionsObject(idOptions,loader.id,loaderOptions,deprecatedOptions,loaders);}}catch(err){_iterator8.e(err);}finally{_iterator8.f();}}function validateOptionsObject(options,id,defaultOptions,deprecatedOptions,loaders){var loaderName=id||'Top level';var prefix=id?"".concat(id,"."):'';for(var key in options){var isSubOptions=!id&&isObject(options[key]);var isBaseUriOption=key==='baseUri'&&!id;var isWorkerUrlOption=key==='workerUrl'&&id;if(!(key in defaultOptions)&&!isBaseUriOption&&!isWorkerUrlOption){if(key in deprecatedOptions){probeLog.warn("".concat(loaderName," loader option '").concat(prefix).concat(key,"' no longer supported, use '").concat(deprecatedOptions[key],"'"))();}else if(!isSubOptions){var suggestion=findSimilarOption(key,loaders);probeLog.warn("".concat(loaderName," loader option '").concat(prefix).concat(key,"' not recognized. ").concat(suggestion))();}}}}function findSimilarOption(optionKey,loaders){var lowerCaseOptionKey=optionKey.toLowerCase();var bestSuggestion='';var _iterator9=_createForOfIteratorHelper(loaders),_step9;try{for(_iterator9.s();!(_step9=_iterator9.n()).done;){var loader=_step9.value;for(var key in loader.options){if(optionKey===key){return"Did you mean '".concat(loader.id,".").concat(key,"'?");}var lowerCaseKey=key.toLowerCase();var isPartialMatch=lowerCaseOptionKey.startsWith(lowerCaseKey)||lowerCaseKey.startsWith(lowerCaseOptionKey);if(isPartialMatch){bestSuggestion=bestSuggestion||"Did you mean '".concat(loader.id,".").concat(key,"'?");}}}}catch(err){_iterator9.e(err);}finally{_iterator9.f();}return bestSuggestion;}function normalizeOptionsInternal(loader,options,url){var loaderDefaultOptions=loader.options||{};var mergedOptions=_objectSpread({},loaderDefaultOptions);addUrlOptions(mergedOptions,url);if(mergedOptions.log===null){mergedOptions.log=new NullLog();}mergeNestedFields(mergedOptions,getGlobalLoaderOptions());mergeNestedFields(mergedOptions,options);return mergedOptions;}function mergeNestedFields(mergedOptions,options){for(var key in options){if(key in options){var value=options[key];if(isPureObject(value)&&isPureObject(mergedOptions[key])){mergedOptions[key]=_objectSpread(_objectSpread({},mergedOptions[key]),options[key]);}else{mergedOptions[key]=options[key];}}}}function addUrlOptions(options,url){if(url&&!('baseUri'in options)){options.baseUri=url;}}function isLoaderObject(loader){var _loader;if(!loader){return false;}if(Array.isArray(loader)){loader=loader[0];}var hasExtensions=Array.isArray((_loader=loader)===null||_loader===void 0?void 0:_loader.extensions);return hasExtensions;}function normalizeLoader(loader){var _loader2,_loader3;assert$5(loader,'null loader');assert$5(isLoaderObject(loader),'invalid loader');var options;if(Array.isArray(loader)){options=loader[1];loader=loader[0];loader=_objectSpread(_objectSpread({},loader),{},{options:_objectSpread(_objectSpread({},loader.options),options)});}if((_loader2=loader)!==null&&_loader2!==void 0&&_loader2.parseTextSync||(_loader3=loader)!==null&&_loader3!==void 0&&_loader3.parseText){loader.text=true;}if(!loader.text){loader.binary=true;}return loader;}var getGlobalLoaderRegistry=function getGlobalLoaderRegistry(){var state=getGlobalLoaderState();state.loaderRegistry=state.loaderRegistry||[];return state.loaderRegistry;};function getRegisteredLoaders(){return getGlobalLoaderRegistry();}function isElectron(mockUserAgent){if(typeof window!=='undefined'&&_typeof(window.process)==='object'&&window.process.type==='renderer'){return true;}if(typeof process!=='undefined'&&_typeof(process.versions)==='object'&&Boolean(process.versions.electron)){return true;}var realUserAgent=(typeof navigator==="undefined"?"undefined":_typeof(navigator))==='object'&&typeof navigator.userAgent==='string'&&navigator.userAgent;var userAgent=mockUserAgent||realUserAgent;if(userAgent&&userAgent.indexOf('Electron')>=0){return true;}return false;}function isBrowser(){var isNode=(typeof process==="undefined"?"undefined":_typeof(process))==='object'&&String(process)==='[object process]'&&!process.browser;return!isNode||isElectron();}var globals={self:typeof self!=='undefined'&&self,window:typeof window!=='undefined'&&window,global:typeof global!=='undefined'&&global,document:typeof document!=='undefined'&&document,process:(typeof process==="undefined"?"undefined":_typeof(process))==='object'&&process};var window_=globals.window||globals.self||globals.global;var process_=globals.process||{};var VERSION$6=typeof __VERSION__!=='undefined'?__VERSION__:'untranspiled source';isBrowser();function getStorage(type){try{var storage=window[type];var x='__storage_test__';storage.setItem(x,x);storage.removeItem(x);return storage;}catch(e){return null;}}var LocalStorage=/*#__PURE__*/function(){function LocalStorage(id){_classCallCheck(this,LocalStorage);var defaultSettings=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var type=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'sessionStorage';_defineProperty(this,"storage",void 0);_defineProperty(this,"id",void 0);_defineProperty(this,"config",{});this.storage=getStorage(type);this.id=id;this.config={};Object.assign(this.config,defaultSettings);this._loadConfiguration();}_createClass(LocalStorage,[{key:"getConfiguration",value:function getConfiguration(){return this.config;}},{key:"setConfiguration",value:function setConfiguration(configuration){this.config={};return this.updateConfiguration(configuration);}},{key:"updateConfiguration",value:function updateConfiguration(configuration){Object.assign(this.config,configuration);if(this.storage){var serialized=JSON.stringify(this.config);this.storage.setItem(this.id,serialized);}return this;}},{key:"_loadConfiguration",value:function _loadConfiguration(){var configuration={};if(this.storage){var serializedConfiguration=this.storage.getItem(this.id);configuration=serializedConfiguration?JSON.parse(serializedConfiguration):{};}Object.assign(this.config,configuration);return this;}}]);return LocalStorage;}();function formatTime(ms){var formatted;if(ms<10){formatted="".concat(ms.toFixed(2),"ms");}else if(ms<100){formatted="".concat(ms.toFixed(1),"ms");}else if(ms<1000){formatted="".concat(ms.toFixed(0),"ms");}else{formatted="".concat((ms/1000).toFixed(2),"s");}return formatted;}function leftPad(string){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:8;var padLength=Math.max(length-string.length,0);return"".concat(' '.repeat(padLength)).concat(string);}function formatImage(image,message,scale){var maxWidth=arguments.length>3&&arguments[3]!==undefined?arguments[3]:600;var imageUrl=image.src.replace(/\(/g,'%28').replace(/\)/g,'%29');if(image.width>maxWidth){scale=Math.min(scale,maxWidth/image.width);}var width=image.width*scale;var height=image.height*scale;var style=['font-size:1px;',"padding:".concat(Math.floor(height/2),"px ").concat(Math.floor(width/2),"px;"),"line-height:".concat(height,"px;"),"background:url(".concat(imageUrl,");"),"background-size:".concat(width,"px ").concat(height,"px;"),'color:transparent;'].join('');return["".concat(message," %c+"),style];}var COLOR;(function(COLOR){COLOR[COLOR["BLACK"]=30]="BLACK";COLOR[COLOR["RED"]=31]="RED";COLOR[COLOR["GREEN"]=32]="GREEN";COLOR[COLOR["YELLOW"]=33]="YELLOW";COLOR[COLOR["BLUE"]=34]="BLUE";COLOR[COLOR["MAGENTA"]=35]="MAGENTA";COLOR[COLOR["CYAN"]=36]="CYAN";COLOR[COLOR["WHITE"]=37]="WHITE";COLOR[COLOR["BRIGHT_BLACK"]=90]="BRIGHT_BLACK";COLOR[COLOR["BRIGHT_RED"]=91]="BRIGHT_RED";COLOR[COLOR["BRIGHT_GREEN"]=92]="BRIGHT_GREEN";COLOR[COLOR["BRIGHT_YELLOW"]=93]="BRIGHT_YELLOW";COLOR[COLOR["BRIGHT_BLUE"]=94]="BRIGHT_BLUE";COLOR[COLOR["BRIGHT_MAGENTA"]=95]="BRIGHT_MAGENTA";COLOR[COLOR["BRIGHT_CYAN"]=96]="BRIGHT_CYAN";COLOR[COLOR["BRIGHT_WHITE"]=97]="BRIGHT_WHITE";})(COLOR||(COLOR={}));function getColor(color){return typeof color==='string'?COLOR[color.toUpperCase()]||COLOR.WHITE:color;}function addColor(string,color,background){if(!isBrowser&&typeof string==='string'){if(color){color=getColor(color);string="\x1B[".concat(color,"m").concat(string,"\x1B[39m");}if(background){color=getColor(background);string="\x1B[".concat(background+10,"m").concat(string,"\x1B[49m");}}return string;}function autobind(obj){var predefined=arguments.length>1&&arguments[1]!==undefined?arguments[1]:['constructor'];var proto=Object.getPrototypeOf(obj);var propNames=Object.getOwnPropertyNames(proto);var _iterator10=_createForOfIteratorHelper(propNames),_step10;try{var _loop5=function _loop5(){var key=_step10.value;if(typeof obj[key]==='function'){if(!predefined.find(function(name){return key===name;})){obj[key]=obj[key].bind(obj);}}};for(_iterator10.s();!(_step10=_iterator10.n()).done;){_loop5();}}catch(err){_iterator10.e(err);}finally{_iterator10.f();}}function assert$2(condition,message){if(!condition){throw new Error(message||'Assertion failed');}}function getHiResTimestamp(){var timestamp;if(isBrowser&&'performance'in window_){var _window$performance,_window$performance$n;timestamp=window_===null||window_===void 0?void 0:(_window$performance=window_.performance)===null||_window$performance===void 0?void 0:(_window$performance$n=_window$performance.now)===null||_window$performance$n===void 0?void 0:_window$performance$n.call(_window$performance);}else if('hrtime'in process_){var _process$hrtime;var timeParts=process_===null||process_===void 0?void 0:(_process$hrtime=process_.hrtime)===null||_process$hrtime===void 0?void 0:_process$hrtime.call(process_);timestamp=timeParts[0]*1000+timeParts[1]/1e6;}else{timestamp=Date.now();}return timestamp;}var originalConsole={debug:isBrowser?console.debug||console.log:console.log,log:console.log,info:console.info,warn:console.warn,error:console.error};var DEFAULT_SETTINGS={enabled:true,level:0};function noop(){}var cache={};var ONCE={once:true};var Log=/*#__PURE__*/function(){function Log(){_classCallCheck(this,Log);var _ref20=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{id:''},id=_ref20.id;_defineProperty(this,"id",void 0);_defineProperty(this,"VERSION",VERSION$6);_defineProperty(this,"_startTs",getHiResTimestamp());_defineProperty(this,"_deltaTs",getHiResTimestamp());_defineProperty(this,"_storage",void 0);_defineProperty(this,"userData",{});_defineProperty(this,"LOG_THROTTLE_TIMEOUT",0);this.id=id;this._storage=new LocalStorage("__probe-".concat(this.id,"__"),DEFAULT_SETTINGS);this.userData={};this.timeStamp("".concat(this.id," started"));autobind(this);Object.seal(this);}_createClass(Log,[{key:"level",get:function get(){return this.getLevel();},set:function set(newLevel){this.setLevel(newLevel);}},{key:"isEnabled",value:function isEnabled(){return this._storage.config.enabled;}},{key:"getLevel",value:function getLevel(){return this._storage.config.level;}},{key:"getTotal",value:function getTotal(){return Number((getHiResTimestamp()-this._startTs).toPrecision(10));}},{key:"getDelta",value:function getDelta(){return Number((getHiResTimestamp()-this._deltaTs).toPrecision(10));}},{key:"priority",get:function get(){return this.level;},set:function set(newPriority){this.level=newPriority;}},{key:"getPriority",value:function getPriority(){return this.level;}},{key:"enable",value:function enable(){var enabled=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;this._storage.updateConfiguration({enabled:enabled});return this;}},{key:"setLevel",value:function setLevel(level){this._storage.updateConfiguration({level:level});return this;}},{key:"get",value:function get(setting){return this._storage.config[setting];}},{key:"set",value:function set(setting,value){this._storage.updateConfiguration(_defineProperty2({},setting,value));}},{key:"settings",value:function settings(){if(console.table){console.table(this._storage.config);}else{console.log(this._storage.config);}}},{key:"assert",value:function assert(condition,message){assert$2(condition,message);}},{key:"warn",value:function warn(message){return this._getLogFunction(0,message,originalConsole.warn,arguments,ONCE);}},{key:"error",value:function error(message){return this._getLogFunction(0,message,originalConsole.error,arguments);}},{key:"deprecated",value:function deprecated(oldUsage,newUsage){return this.warn("`".concat(oldUsage,"` is deprecated and will be removed in a later version. Use `").concat(newUsage,"` instead"));}},{key:"removed",value:function removed(oldUsage,newUsage){return this.error("`".concat(oldUsage,"` has been removed. Use `").concat(newUsage,"` instead"));}},{key:"probe",value:function probe(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole.log,arguments,{time:true,once:true});}},{key:"log",value:function log(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole.debug,arguments);}},{key:"info",value:function info(logLevel,message){return this._getLogFunction(logLevel,message,console.info,arguments);}},{key:"once",value:function once(logLevel,message){for(var _len=arguments.length,args=new Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){args[_key-2]=arguments[_key];}return this._getLogFunction(logLevel,message,originalConsole.debug||originalConsole.info,arguments,ONCE);}},{key:"table",value:function table(logLevel,_table2,columns){if(_table2){return this._getLogFunction(logLevel,_table2,console.table||noop,columns&&[columns],{tag:getTableHeader(_table2)});}return noop;}},{key:"image",value:function image(_ref){var logLevel=_ref.logLevel,priority=_ref.priority,image=_ref.image,_ref$message=_ref.message,message=_ref$message===void 0?'':_ref$message,_ref$scale=_ref.scale,scale=_ref$scale===void 0?1:_ref$scale;if(!this._shouldLog(logLevel||priority)){return noop;}return isBrowser?logImageInBrowser({image:image,message:message,scale:scale}):logImageInNode({image:image,message:message,scale:scale});}},{key:"time",value:function time(logLevel,message){return this._getLogFunction(logLevel,message,console.time?console.time:console.info);}},{key:"timeEnd",value:function timeEnd(logLevel,message){return this._getLogFunction(logLevel,message,console.timeEnd?console.timeEnd:console.info);}},{key:"timeStamp",value:function timeStamp(logLevel,message){return this._getLogFunction(logLevel,message,console.timeStamp||noop);}},{key:"group",value:function group(logLevel,message){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{collapsed:false};var options=normalizeArguments({logLevel:logLevel,message:message,opts:opts});var collapsed=opts.collapsed;options.method=(collapsed?console.groupCollapsed:console.group)||console.info;return this._getLogFunction(options);}},{key:"groupCollapsed",value:function groupCollapsed(logLevel,message){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return this.group(logLevel,message,Object.assign({},opts,{collapsed:true}));}},{key:"groupEnd",value:function groupEnd(logLevel){return this._getLogFunction(logLevel,'',console.groupEnd||noop);}},{key:"withGroup",value:function withGroup(logLevel,message,func){this.group(logLevel,message)();try{func();}finally{this.groupEnd(logLevel)();}}},{key:"trace",value:function trace(){if(console.trace){console.trace();}}},{key:"_shouldLog",value:function _shouldLog(logLevel){return this.isEnabled()&&this.getLevel()>=normalizeLogLevel(logLevel);}},{key:"_getLogFunction",value:function _getLogFunction(logLevel,message,method,args,opts){if(this._shouldLog(logLevel)){var _method2;opts=normalizeArguments({logLevel:logLevel,message:message,args:args,opts:opts});method=method||opts.method;assert$2(method);opts.total=this.getTotal();opts.delta=this.getDelta();this._deltaTs=getHiResTimestamp();var tag=opts.tag||opts.message;if(opts.once){if(!cache[tag]){cache[tag]=getHiResTimestamp();}else{return noop;}}message=decorateMessage(this.id,opts.message,opts);return(_method2=method).bind.apply(_method2,[console,message].concat(_toConsumableArray(opts.args)));}return noop;}}]);return Log;}();_defineProperty(Log,"VERSION",VERSION$6);function normalizeLogLevel(logLevel){if(!logLevel){return 0;}var resolvedLevel;switch(_typeof(logLevel)){case'number':resolvedLevel=logLevel;break;case'object':resolvedLevel=logLevel.logLevel||logLevel.priority||0;break;default:return 0;}assert$2(Number.isFinite(resolvedLevel)&&resolvedLevel>=0);return resolvedLevel;}function normalizeArguments(opts){var logLevel=opts.logLevel,message=opts.message;opts.logLevel=normalizeLogLevel(logLevel);var args=opts.args?Array.from(opts.args):[];while(args.length&&args.shift()!==message){}switch(_typeof(logLevel)){case'string':case'function':if(message!==undefined){args.unshift(message);}opts.message=logLevel;break;case'object':Object.assign(opts,logLevel);break;}if(typeof opts.message==='function'){opts.message=opts.message();}var messageType=_typeof(opts.message);assert$2(messageType==='string'||messageType==='object');return Object.assign(opts,{args:args},opts.opts);}function decorateMessage(id,message,opts){if(typeof message==='string'){var _time2=opts.time?leftPad(formatTime(opts.total)):'';message=opts.time?"".concat(id,": ").concat(_time2," ").concat(message):"".concat(id,": ").concat(message);message=addColor(message,opts.color,opts.background);}return message;}function logImageInNode(_ref2){var image=_ref2.image,_ref2$message=_ref2.message,message=_ref2$message===void 0?'':_ref2$message,_ref2$scale=_ref2.scale,scale=_ref2$scale===void 0?1:_ref2$scale;var asciify=null;try{asciify=module.require('asciify-image');}catch(error){}if(asciify){return function(){return asciify(image,{fit:'box',width:"".concat(Math.round(80*scale),"%")}).then(function(data){return console.log(data);});};}return noop;}function logImageInBrowser(_ref3){var image=_ref3.image,_ref3$message=_ref3.message,message=_ref3$message===void 0?'':_ref3$message,_ref3$scale=_ref3.scale,scale=_ref3$scale===void 0?1:_ref3$scale;if(typeof image==='string'){var img=new Image();img.onload=function(){var _console4;var args=formatImage(img,message,scale);(_console4=console).log.apply(_console4,_toConsumableArray(args));};img.src=image;return noop;}var element=image.nodeName||'';if(element.toLowerCase()==='img'){var _console5;(_console5=console).log.apply(_console5,_toConsumableArray(formatImage(image,message,scale)));return noop;}if(element.toLowerCase()==='canvas'){var _img2=new Image();_img2.onload=function(){var _console6;return(_console6=console).log.apply(_console6,_toConsumableArray(formatImage(_img2,message,scale)));};_img2.src=image.toDataURL();return noop;}return noop;}function getTableHeader(table){for(var key in table){for(var title in table[key]){return title||'untitled';}}return'empty';}var log=new Log({id:'loaders.gl'});var EXT_PATTERN=/\.([^.]+)$/;function selectLoader(_x27){return _selectLoader.apply(this,arguments);}function _selectLoader(){_selectLoader=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee17(data){var loaders,options,context,loader,_args15=arguments;return _regeneratorRuntime().wrap(function _callee17$(_context21){while(1){switch(_context21.prev=_context21.next){case 0:loaders=_args15.length>1&&_args15[1]!==undefined?_args15[1]:[];options=_args15.length>2?_args15[2]:undefined;context=_args15.length>3?_args15[3]:undefined;if(validHTTPResponse(data)){_context21.next=5;break;}return _context21.abrupt("return",null);case 5:loader=selectLoaderSync(data,loaders,_objectSpread(_objectSpread({},options),{},{nothrow:true}),context);if(!loader){_context21.next=8;break;}return _context21.abrupt("return",loader);case 8:if(!isBlob(data)){_context21.next=13;break;}_context21.next=11;return data.slice(0,10).arrayBuffer();case 11:data=_context21.sent;loader=selectLoaderSync(data,loaders,options,context);case 13:if(!(!loader&&!(options!==null&&options!==void 0&&options.nothrow))){_context21.next=15;break;}throw new Error(getNoValidLoaderMessage(data));case 15:return _context21.abrupt("return",loader);case 16:case"end":return _context21.stop();}}},_callee17);}));return _selectLoader.apply(this,arguments);}function selectLoaderSync(data){var loaders=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var options=arguments.length>2?arguments[2]:undefined;var context=arguments.length>3?arguments[3]:undefined;if(!validHTTPResponse(data)){return null;}if(loaders&&!Array.isArray(loaders)){return normalizeLoader(loaders);}var candidateLoaders=[];if(loaders){candidateLoaders=candidateLoaders.concat(loaders);}if(!(options!==null&&options!==void 0&&options.ignoreRegisteredLoaders)){var _candidateLoaders;(_candidateLoaders=candidateLoaders).push.apply(_candidateLoaders,_toConsumableArray(getRegisteredLoaders()));}normalizeLoaders(candidateLoaders);var loader=selectLoaderInternal(data,candidateLoaders,options,context);if(!loader&&!(options!==null&&options!==void 0&&options.nothrow)){throw new Error(getNoValidLoaderMessage(data));}return loader;}function selectLoaderInternal(data,loaders,options,context){var _getResourceUrlAndTyp=getResourceUrlAndType(data),url=_getResourceUrlAndTyp.url,type=_getResourceUrlAndTyp.type;var testUrl=url||(context===null||context===void 0?void 0:context.url);var loader=null;var reason='';if(options!==null&&options!==void 0&&options.mimeType){loader=findLoaderByMIMEType(loaders,options===null||options===void 0?void 0:options.mimeType);reason="match forced by supplied MIME type ".concat(options===null||options===void 0?void 0:options.mimeType);}loader=loader||findLoaderByUrl(loaders,testUrl);reason=reason||(loader?"matched url ".concat(testUrl):'');loader=loader||findLoaderByMIMEType(loaders,type);reason=reason||(loader?"matched MIME type ".concat(type):'');loader=loader||findLoaderByInitialBytes(loaders,data);reason=reason||(loader?"matched initial data ".concat(getFirstCharacters(data)):'');loader=loader||findLoaderByMIMEType(loaders,options===null||options===void 0?void 0:options.fallbackMimeType);reason=reason||(loader?"matched fallback MIME type ".concat(type):'');if(reason){var _loader;log.log(1,"selectLoader selected ".concat((_loader=loader)===null||_loader===void 0?void 0:_loader.name,": ").concat(reason,"."));}return loader;}function validHTTPResponse(data){if(data instanceof Response){if(data.status===204){return false;}}return true;}function getNoValidLoaderMessage(data){var _getResourceUrlAndTyp2=getResourceUrlAndType(data),url=_getResourceUrlAndTyp2.url,type=_getResourceUrlAndTyp2.type;var message='No valid loader found (';message+=url?"".concat(filename(url),", "):'no url provided, ';message+="MIME type: ".concat(type?"\"".concat(type,"\""):'not provided',", ");var firstCharacters=data?getFirstCharacters(data):'';message+=firstCharacters?" first bytes: \"".concat(firstCharacters,"\""):'first bytes: not available';message+=')';return message;}function normalizeLoaders(loaders){var _iterator11=_createForOfIteratorHelper(loaders),_step11;try{for(_iterator11.s();!(_step11=_iterator11.n()).done;){var loader=_step11.value;normalizeLoader(loader);}}catch(err){_iterator11.e(err);}finally{_iterator11.f();}}function findLoaderByUrl(loaders,url){var match=url&&EXT_PATTERN.exec(url);var extension=match&&match[1];return extension?findLoaderByExtension(loaders,extension):null;}function findLoaderByExtension(loaders,extension){extension=extension.toLowerCase();var _iterator12=_createForOfIteratorHelper(loaders),_step12;try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var loader=_step12.value;var _iterator13=_createForOfIteratorHelper(loader.extensions),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var loaderExtension=_step13.value;if(loaderExtension.toLowerCase()===extension){return loader;}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}}catch(err){_iterator12.e(err);}finally{_iterator12.f();}return null;}function findLoaderByMIMEType(loaders,mimeType){var _iterator14=_createForOfIteratorHelper(loaders),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var loader=_step14.value;if(loader.mimeTypes&&loader.mimeTypes.includes(mimeType)){return loader;}if(mimeType==="application/x.".concat(loader.id)){return loader;}}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}return null;}function findLoaderByInitialBytes(loaders,data){if(!data){return null;}var _iterator15=_createForOfIteratorHelper(loaders),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var loader=_step15.value;if(typeof data==='string'){if(testDataAgainstText(data,loader)){return loader;}}else if(ArrayBuffer.isView(data)){if(testDataAgainstBinary(data.buffer,data.byteOffset,loader)){return loader;}}else if(data instanceof ArrayBuffer){var byteOffset=0;if(testDataAgainstBinary(data,byteOffset,loader)){return loader;}}}}catch(err){_iterator15.e(err);}finally{_iterator15.f();}return null;}function testDataAgainstText(data,loader){if(loader.testText){return loader.testText(data);}var tests=Array.isArray(loader.tests)?loader.tests:[loader.tests];return tests.some(function(test){return data.startsWith(test);});}function testDataAgainstBinary(data,byteOffset,loader){var tests=Array.isArray(loader.tests)?loader.tests:[loader.tests];return tests.some(function(test){return testBinary(data,byteOffset,loader,test);});}function testBinary(data,byteOffset,loader,test){if(test instanceof ArrayBuffer){return compareArrayBuffers(test,data,test.byteLength);}switch(_typeof(test)){case'function':return test(data,loader);case'string':var magic=getMagicString$1(data,byteOffset,test.length);return test===magic;default:return false;}}function getFirstCharacters(data){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:5;if(typeof data==='string'){return data.slice(0,length);}else if(ArrayBuffer.isView(data)){return getMagicString$1(data.buffer,data.byteOffset,length);}else if(data instanceof ArrayBuffer){var byteOffset=0;return getMagicString$1(data,byteOffset,length);}return'';}function getMagicString$1(arrayBuffer,byteOffset,length){if(arrayBuffer.byteLength1&&_args5[1]!==undefined?_args5[1]:{};_options$chunkSize=options.chunkSize,chunkSize=_options$chunkSize===void 0?DEFAULT_CHUNK_SIZE$1:_options$chunkSize;byteOffset=0;case 3:if(!(byteOffset2&&arguments[2]!==undefined?arguments[2]:null;if(previousContext){return previousContext;}var resolvedContext=_objectSpread({fetch:getFetchFunction(options,context)},context);if(!Array.isArray(resolvedContext.loaders)){resolvedContext.loaders=null;}return resolvedContext;}function getLoadersFromContext(loaders,context){if(!context&&loaders&&!Array.isArray(loaders)){return loaders;}var candidateLoaders;if(loaders){candidateLoaders=Array.isArray(loaders)?loaders:[loaders];}if(context&&context.loaders){var contextLoaders=Array.isArray(context.loaders)?context.loaders:[context.loaders];candidateLoaders=candidateLoaders?[].concat(_toConsumableArray(candidateLoaders),_toConsumableArray(contextLoaders)):contextLoaders;}return candidateLoaders&&candidateLoaders.length?candidateLoaders:null;}function parse$3(_x31,_x32,_x33,_x34){return _parse$.apply(this,arguments);}function _parse$(){_parse$=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee19(data,loaders,options,context){var _getResourceUrlAndTyp4,url,typedLoaders,candidateLoaders,loader;return _regeneratorRuntime().wrap(function _callee19$(_context23){while(1){switch(_context23.prev=_context23.next){case 0:assert$4(!context||_typeof(context)==='object');if(loaders&&!Array.isArray(loaders)&&!isLoaderObject(loaders)){context=undefined;options=loaders;loaders=undefined;}_context23.next=4;return data;case 4:data=_context23.sent;options=options||{};_getResourceUrlAndTyp4=getResourceUrlAndType(data),url=_getResourceUrlAndTyp4.url;typedLoaders=loaders;candidateLoaders=getLoadersFromContext(typedLoaders,context);_context23.next=11;return selectLoader(data,candidateLoaders,options);case 11:loader=_context23.sent;if(loader){_context23.next=14;break;}return _context23.abrupt("return",null);case 14:options=normalizeOptions(options,loader,candidateLoaders,url);context=getLoaderContext({url:url,parse:parse$3,loaders:candidateLoaders},options,context);_context23.next=18;return parseWithLoader(loader,data,options,context);case 18:return _context23.abrupt("return",_context23.sent);case 19:case"end":return _context23.stop();}}},_callee19);}));return _parse$.apply(this,arguments);}function parseWithLoader(_x35,_x36,_x37,_x38){return _parseWithLoader.apply(this,arguments);}function _parseWithLoader(){_parseWithLoader=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee20(loader,data,options,context){var response,ok,redirected,status,statusText,type,url,headers;return _regeneratorRuntime().wrap(function _callee20$(_context24){while(1){switch(_context24.prev=_context24.next){case 0:validateWorkerVersion(loader);if(isResponse(data)){response=data;ok=response.ok,redirected=response.redirected,status=response.status,statusText=response.statusText,type=response.type,url=response.url;headers=Object.fromEntries(response.headers.entries());context.response={headers:headers,ok:ok,redirected:redirected,status:status,statusText:statusText,type:type,url:url};}_context24.next=4;return getArrayBufferOrStringFromData(data,loader,options);case 4:data=_context24.sent;if(!(loader.parseTextSync&&typeof data==='string')){_context24.next=8;break;}options.dataType='text';return _context24.abrupt("return",loader.parseTextSync(data,options,context,loader));case 8:if(!canParseWithWorker(loader,options)){_context24.next=12;break;}_context24.next=11;return parseWithWorker(loader,data,options,context,parse$3);case 11:return _context24.abrupt("return",_context24.sent);case 12:if(!(loader.parseText&&typeof data==='string')){_context24.next=16;break;}_context24.next=15;return loader.parseText(data,options,context,loader);case 15:return _context24.abrupt("return",_context24.sent);case 16:if(!loader.parse){_context24.next=20;break;}_context24.next=19;return loader.parse(data,options,context,loader);case 19:return _context24.abrupt("return",_context24.sent);case 20:assert$4(!loader.parseSync);throw new Error("".concat(loader.id," loader - no parser found and worker is disabled"));case 22:case"end":return _context24.stop();}}},_callee20);}));return _parseWithLoader.apply(this,arguments);}var VERSION$5="3.2.6";var VERSION$4="3.2.6";var VERSION$3="3.2.6";var BASIS_CDN_ENCODER_WASM="https://unpkg.com/@loaders.gl/textures@".concat(VERSION$3,"/dist/libs/basis_encoder.wasm");var BASIS_CDN_ENCODER_JS="https://unpkg.com/@loaders.gl/textures@".concat(VERSION$3,"/dist/libs/basis_encoder.js");var loadBasisTranscoderPromise;function loadBasisTrascoderModule(_x39){return _loadBasisTrascoderModule.apply(this,arguments);}function _loadBasisTrascoderModule(){_loadBasisTrascoderModule=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee21(options){var modules;return _regeneratorRuntime().wrap(function _callee21$(_context25){while(1){switch(_context25.prev=_context25.next){case 0:modules=options.modules||{};if(!modules.basis){_context25.next=3;break;}return _context25.abrupt("return",modules.basis);case 3:loadBasisTranscoderPromise=loadBasisTranscoderPromise||loadBasisTrascoder(options);_context25.next=6;return loadBasisTranscoderPromise;case 6:return _context25.abrupt("return",_context25.sent);case 7:case"end":return _context25.stop();}}},_callee21);}));return _loadBasisTrascoderModule.apply(this,arguments);}function loadBasisTrascoder(_x40){return _loadBasisTrascoder.apply(this,arguments);}function _loadBasisTrascoder(){_loadBasisTrascoder=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee22(options){var BASIS,wasmBinary,_yield$Promise$all,_yield$Promise$all2;return _regeneratorRuntime().wrap(function _callee22$(_context26){while(1){switch(_context26.prev=_context26.next){case 0:BASIS=null;wasmBinary=null;_context26.t0=Promise;_context26.next=5;return loadLibrary('basis_transcoder.js','textures',options);case 5:_context26.t1=_context26.sent;_context26.next=8;return loadLibrary('basis_transcoder.wasm','textures',options);case 8:_context26.t2=_context26.sent;_context26.t3=[_context26.t1,_context26.t2];_context26.next=12;return _context26.t0.all.call(_context26.t0,_context26.t3);case 12:_yield$Promise$all=_context26.sent;_yield$Promise$all2=_slicedToArray(_yield$Promise$all,2);BASIS=_yield$Promise$all2[0];wasmBinary=_yield$Promise$all2[1];BASIS=BASIS||globalThis.BASIS;_context26.next=19;return initializeBasisTrascoderModule(BASIS,wasmBinary);case 19:return _context26.abrupt("return",_context26.sent);case 20:case"end":return _context26.stop();}}},_callee22);}));return _loadBasisTrascoder.apply(this,arguments);}function initializeBasisTrascoderModule(BasisModule,wasmBinary){var options={};if(wasmBinary){options.wasmBinary=wasmBinary;}return new Promise(function(resolve){BasisModule(options).then(function(module){var BasisFile=module.BasisFile,initializeBasis=module.initializeBasis;initializeBasis();resolve({BasisFile:BasisFile});});});}var loadBasisEncoderPromise;function loadBasisEncoderModule(_x41){return _loadBasisEncoderModule.apply(this,arguments);}function _loadBasisEncoderModule(){_loadBasisEncoderModule=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee23(options){var modules;return _regeneratorRuntime().wrap(function _callee23$(_context27){while(1){switch(_context27.prev=_context27.next){case 0:modules=options.modules||{};if(!modules.basisEncoder){_context27.next=3;break;}return _context27.abrupt("return",modules.basisEncoder);case 3:loadBasisEncoderPromise=loadBasisEncoderPromise||loadBasisEncoder(options);_context27.next=6;return loadBasisEncoderPromise;case 6:return _context27.abrupt("return",_context27.sent);case 7:case"end":return _context27.stop();}}},_callee23);}));return _loadBasisEncoderModule.apply(this,arguments);}function loadBasisEncoder(_x42){return _loadBasisEncoder.apply(this,arguments);}function _loadBasisEncoder(){_loadBasisEncoder=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee24(options){var BASIS_ENCODER,wasmBinary,_yield$Promise$all3,_yield$Promise$all4;return _regeneratorRuntime().wrap(function _callee24$(_context28){while(1){switch(_context28.prev=_context28.next){case 0:BASIS_ENCODER=null;wasmBinary=null;_context28.t0=Promise;_context28.next=5;return loadLibrary(BASIS_CDN_ENCODER_JS,'textures',options);case 5:_context28.t1=_context28.sent;_context28.next=8;return loadLibrary(BASIS_CDN_ENCODER_WASM,'textures',options);case 8:_context28.t2=_context28.sent;_context28.t3=[_context28.t1,_context28.t2];_context28.next=12;return _context28.t0.all.call(_context28.t0,_context28.t3);case 12:_yield$Promise$all3=_context28.sent;_yield$Promise$all4=_slicedToArray(_yield$Promise$all3,2);BASIS_ENCODER=_yield$Promise$all4[0];wasmBinary=_yield$Promise$all4[1];BASIS_ENCODER=BASIS_ENCODER||globalThis.BASIS;_context28.next=19;return initializeBasisEncoderModule(BASIS_ENCODER,wasmBinary);case 19:return _context28.abrupt("return",_context28.sent);case 20:case"end":return _context28.stop();}}},_callee24);}));return _loadBasisEncoder.apply(this,arguments);}function initializeBasisEncoderModule(BasisEncoderModule,wasmBinary){var options={};if(wasmBinary){options.wasmBinary=wasmBinary;}return new Promise(function(resolve){BasisEncoderModule(options).then(function(module){var BasisFile=module.BasisFile,KTX2File=module.KTX2File,initializeBasis=module.initializeBasis,BasisEncoder=module.BasisEncoder;initializeBasis();resolve({BasisFile:BasisFile,KTX2File:KTX2File,BasisEncoder:BasisEncoder});});});}var GL_EXTENSIONS_CONSTANTS={COMPRESSED_RGB_S3TC_DXT1_EXT:0x83f0,COMPRESSED_RGBA_S3TC_DXT1_EXT:0x83f1,COMPRESSED_RGBA_S3TC_DXT3_EXT:0x83f2,COMPRESSED_RGBA_S3TC_DXT5_EXT:0x83f3,COMPRESSED_R11_EAC:0x9270,COMPRESSED_SIGNED_R11_EAC:0x9271,COMPRESSED_RG11_EAC:0x9272,COMPRESSED_SIGNED_RG11_EAC:0x9273,COMPRESSED_RGB8_ETC2:0x9274,COMPRESSED_RGBA8_ETC2_EAC:0x9275,COMPRESSED_SRGB8_ETC2:0x9276,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:0x9277,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:0x9278,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:0x9279,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:0x8c00,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:0x8c02,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:0x8c01,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:0x8c03,COMPRESSED_RGB_ETC1_WEBGL:0x8d64,COMPRESSED_RGB_ATC_WEBGL:0x8c92,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:0x8c93,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:0x87ee,COMPRESSED_RGBA_ASTC_4X4_KHR:0x93b0,COMPRESSED_RGBA_ASTC_5X4_KHR:0x93b1,COMPRESSED_RGBA_ASTC_5X5_KHR:0x93b2,COMPRESSED_RGBA_ASTC_6X5_KHR:0x93b3,COMPRESSED_RGBA_ASTC_6X6_KHR:0x93b4,COMPRESSED_RGBA_ASTC_8X5_KHR:0x93b5,COMPRESSED_RGBA_ASTC_8X6_KHR:0x93b6,COMPRESSED_RGBA_ASTC_8X8_KHR:0x93b7,COMPRESSED_RGBA_ASTC_10X5_KHR:0x93b8,COMPRESSED_RGBA_ASTC_10X6_KHR:0x93b9,COMPRESSED_RGBA_ASTC_10X8_KHR:0x93ba,COMPRESSED_RGBA_ASTC_10X10_KHR:0x93bb,COMPRESSED_RGBA_ASTC_12X10_KHR:0x93bc,COMPRESSED_RGBA_ASTC_12X12_KHR:0x93bd,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:0x93d0,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:0x93d1,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:0x93d2,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:0x93d3,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:0x93d4,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:0x93d5,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:0x93d6,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:0x93d7,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:0x93d8,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:0x93d9,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:0x93da,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:0x93db,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:0x93dc,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:0x93dd,COMPRESSED_RED_RGTC1_EXT:0x8dbb,COMPRESSED_SIGNED_RED_RGTC1_EXT:0x8dbc,COMPRESSED_RED_GREEN_RGTC2_EXT:0x8dbd,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:0x8dbe,COMPRESSED_SRGB_S3TC_DXT1_EXT:0x8c4c,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:0x8c4d,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:0x8c4e,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:0x8c4f};var BROWSER_PREFIXES=['','WEBKIT_','MOZ_'];var WEBGL_EXTENSIONS={WEBGL_compressed_texture_s3tc:'dxt',WEBGL_compressed_texture_s3tc_srgb:'dxt-srgb',WEBGL_compressed_texture_etc1:'etc1',WEBGL_compressed_texture_etc:'etc2',WEBGL_compressed_texture_pvrtc:'pvrtc',WEBGL_compressed_texture_atc:'atc',WEBGL_compressed_texture_astc:'astc',EXT_texture_compression_rgtc:'rgtc'};var formats=null;function getSupportedGPUTextureFormats(gl){if(!formats){gl=gl||getWebGLContext()||undefined;formats=new Set();var _iterator16=_createForOfIteratorHelper(BROWSER_PREFIXES),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var prefix=_step16.value;for(var extension in WEBGL_EXTENSIONS){if(gl&&gl.getExtension("".concat(prefix).concat(extension))){var gpuTextureFormat=WEBGL_EXTENSIONS[extension];formats.add(gpuTextureFormat);}}}}catch(err){_iterator16.e(err);}finally{_iterator16.f();}}return formats;}function getWebGLContext(){try{var _canvas6=document.createElement('canvas');return _canvas6.getContext('webgl');}catch(error){return null;}}var n,i,s,a,r,o,l,f;!function(t){t[t.NONE=0]="NONE",t[t.BASISLZ=1]="BASISLZ",t[t.ZSTD=2]="ZSTD",t[t.ZLIB=3]="ZLIB";}(n||(n={})),function(t){t[t.BASICFORMAT=0]="BASICFORMAT";}(i||(i={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.ETC1S=163]="ETC1S",t[t.UASTC=166]="UASTC";}(s||(s={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.SRGB=1]="SRGB";}(a||(a={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.LINEAR=1]="LINEAR",t[t.SRGB=2]="SRGB",t[t.ITU=3]="ITU",t[t.NTSC=4]="NTSC",t[t.SLOG=5]="SLOG",t[t.SLOG2=6]="SLOG2";}(r||(r={})),function(t){t[t.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",t[t.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED";}(o||(o={})),function(t){t[t.RGB=0]="RGB",t[t.RRR=3]="RRR",t[t.GGG=4]="GGG",t[t.AAA=15]="AAA";}(l||(l={})),function(t){t[t.RGB=0]="RGB",t[t.RGBA=3]="RGBA",t[t.RRR=4]="RRR",t[t.RRRG=5]="RRRG";}(f||(f={}));var KTX2_ID=[0xab,0x4b,0x54,0x58,0x20,0x32,0x30,0xbb,0x0d,0x0a,0x1a,0x0a];function isKTX(data){var id=new Uint8Array(data);var notKTX=id.byteLength1&&_args27[1]!==undefined?_args27[1]:null;if(isEmptyObject(imagebitmapOptions)||!imagebitmapOptionsSupported){imagebitmapOptions=null;}if(!imagebitmapOptions){_context33.next=13;break;}_context33.prev=3;_context33.next=6;return createImageBitmap(blob,imagebitmapOptions);case 6:return _context33.abrupt("return",_context33.sent);case 9:_context33.prev=9;_context33.t0=_context33["catch"](3);console.warn(_context33.t0);imagebitmapOptionsSupported=false;case 13:_context33.next=15;return createImageBitmap(blob);case 15:return _context33.abrupt("return",_context33.sent);case 16:case"end":return _context33.stop();}}},_callee29,null,[[3,9]]);}));return _safeCreateImageBitmap.apply(this,arguments);}function isEmptyObject(object){for(var key in object||EMPTY_OBJECT){return false;}return true;}var BIG_ENDIAN=false;var LITTLE_ENDIAN=true;function getBinaryImageMetadata(binaryData){var dataView=toDataView(binaryData);return getPngMetadata(dataView)||getJpegMetadata(dataView)||getGifMetadata(dataView)||getBmpMetadata(dataView);}function getPngMetadata(binaryData){var dataView=toDataView(binaryData);var isPng=dataView.byteLength>=24&&dataView.getUint32(0,BIG_ENDIAN)===0x89504e47;if(!isPng){return null;}return{mimeType:'image/png',width:dataView.getUint32(16,BIG_ENDIAN),height:dataView.getUint32(20,BIG_ENDIAN)};}function getGifMetadata(binaryData){var dataView=toDataView(binaryData);var isGif=dataView.byteLength>=10&&dataView.getUint32(0,BIG_ENDIAN)===0x47494638;if(!isGif){return null;}return{mimeType:'image/gif',width:dataView.getUint16(6,LITTLE_ENDIAN),height:dataView.getUint16(8,LITTLE_ENDIAN)};}function getBmpMetadata(binaryData){var dataView=toDataView(binaryData);var isBmp=dataView.byteLength>=14&&dataView.getUint16(0,BIG_ENDIAN)===0x424d&&dataView.getUint32(2,LITTLE_ENDIAN)===dataView.byteLength;if(!isBmp){return null;}return{mimeType:'image/bmp',width:dataView.getUint32(18,LITTLE_ENDIAN),height:dataView.getUint32(22,LITTLE_ENDIAN)};}function getJpegMetadata(binaryData){var dataView=toDataView(binaryData);var isJpeg=dataView.byteLength>=3&&dataView.getUint16(0,BIG_ENDIAN)===0xffd8&&dataView.getUint8(2)===0xff;if(!isJpeg){return null;}var _getJpegMarkers=getJpegMarkers(),tableMarkers=_getJpegMarkers.tableMarkers,sofMarkers=_getJpegMarkers.sofMarkers;var i=2;while(i+9=0&&byteLength<=bufferView.byteLength);return{ArrayType:ArrayType,length:length,byteLength:byteLength};}var DEFAULT_GLTF_JSON={asset:{version:'2.0',generator:'loaders.gl'},buffers:[]};var GLTFScenegraph=/*#__PURE__*/function(){function GLTFScenegraph(gltf){_classCallCheck(this,GLTFScenegraph);_defineProperty(this,"gltf",void 0);_defineProperty(this,"sourceBuffers",void 0);_defineProperty(this,"byteLength",void 0);this.gltf=gltf||{json:_objectSpread({},DEFAULT_GLTF_JSON),buffers:[]};this.sourceBuffers=[];this.byteLength=0;if(this.gltf.buffers&&this.gltf.buffers[0]){this.byteLength=this.gltf.buffers[0].byteLength;this.sourceBuffers=[this.gltf.buffers[0]];}}_createClass(GLTFScenegraph,[{key:"json",get:function get(){return this.gltf.json;}},{key:"getApplicationData",value:function getApplicationData(key){var data=this.json[key];return data;}},{key:"getExtraData",value:function getExtraData(key){var extras=this.json.extras||{};return extras[key];}},{key:"getExtension",value:function getExtension(extensionName){var isExtension=this.getUsedExtensions().find(function(name){return name===extensionName;});var extensions=this.json.extensions||{};return isExtension?extensions[extensionName]||true:null;}},{key:"getRequiredExtension",value:function getRequiredExtension(extensionName){var isRequired=this.getRequiredExtensions().find(function(name){return name===extensionName;});return isRequired?this.getExtension(extensionName):null;}},{key:"getRequiredExtensions",value:function getRequiredExtensions(){return this.json.extensionsRequired||[];}},{key:"getUsedExtensions",value:function getUsedExtensions(){return this.json.extensionsUsed||[];}},{key:"getObjectExtension",value:function getObjectExtension(object,extensionName){var extensions=object.extensions||{};return extensions[extensionName];}},{key:"getScene",value:function getScene(index){return this.getObject('scenes',index);}},{key:"getNode",value:function getNode(index){return this.getObject('nodes',index);}},{key:"getSkin",value:function getSkin(index){return this.getObject('skins',index);}},{key:"getMesh",value:function getMesh(index){return this.getObject('meshes',index);}},{key:"getMaterial",value:function getMaterial(index){return this.getObject('materials',index);}},{key:"getAccessor",value:function getAccessor(index){return this.getObject('accessors',index);}},{key:"getTexture",value:function getTexture(index){return this.getObject('textures',index);}},{key:"getSampler",value:function getSampler(index){return this.getObject('samplers',index);}},{key:"getImage",value:function getImage(index){return this.getObject('images',index);}},{key:"getBufferView",value:function getBufferView(index){return this.getObject('bufferViews',index);}},{key:"getBuffer",value:function getBuffer(index){return this.getObject('buffers',index);}},{key:"getObject",value:function getObject(array,index){if(_typeof(index)==='object'){return index;}var object=this.json[array]&&this.json[array][index];if(!object){throw new Error("glTF file error: Could not find ".concat(array,"[").concat(index,"]"));}return object;}},{key:"getTypedArrayForBufferView",value:function getTypedArrayForBufferView(bufferView){bufferView=this.getBufferView(bufferView);var bufferIndex=bufferView.buffer;var binChunk=this.gltf.buffers[bufferIndex];assert$1(binChunk);var byteOffset=(bufferView.byteOffset||0)+binChunk.byteOffset;return new Uint8Array(binChunk.arrayBuffer,byteOffset,bufferView.byteLength);}},{key:"getTypedArrayForAccessor",value:function getTypedArrayForAccessor(accessor){accessor=this.getAccessor(accessor);var bufferView=this.getBufferView(accessor.bufferView);var buffer=this.getBuffer(bufferView.buffer);var arrayBuffer=buffer.data;var _getAccessorArrayType=getAccessorArrayTypeAndLength(accessor,bufferView),ArrayType=_getAccessorArrayType.ArrayType,length=_getAccessorArrayType.length;var byteOffset=bufferView.byteOffset+accessor.byteOffset;return new ArrayType(arrayBuffer,byteOffset,length);}},{key:"getTypedArrayForImageData",value:function getTypedArrayForImageData(image){image=this.getAccessor(image);var bufferView=this.getBufferView(image.bufferView);var buffer=this.getBuffer(bufferView.buffer);var arrayBuffer=buffer.data;var byteOffset=bufferView.byteOffset||0;return new Uint8Array(arrayBuffer,byteOffset,bufferView.byteLength);}},{key:"addApplicationData",value:function addApplicationData(key,data){this.json[key]=data;return this;}},{key:"addExtraData",value:function addExtraData(key,data){this.json.extras=this.json.extras||{};this.json.extras[key]=data;return this;}},{key:"addObjectExtension",value:function addObjectExtension(object,extensionName,data){object.extensions=object.extensions||{};object.extensions[extensionName]=data;this.registerUsedExtension(extensionName);return this;}},{key:"setObjectExtension",value:function setObjectExtension(object,extensionName,data){var extensions=object.extensions||{};extensions[extensionName]=data;}},{key:"removeObjectExtension",value:function removeObjectExtension(object,extensionName){var extensions=object.extensions||{};var extension=extensions[extensionName];delete extensions[extensionName];return extension;}},{key:"addExtension",value:function addExtension(extensionName){var extensionData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};assert$1(extensionData);this.json.extensions=this.json.extensions||{};this.json.extensions[extensionName]=extensionData;this.registerUsedExtension(extensionName);return extensionData;}},{key:"addRequiredExtension",value:function addRequiredExtension(extensionName){var extensionData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};assert$1(extensionData);this.addExtension(extensionName,extensionData);this.registerRequiredExtension(extensionName);return extensionData;}},{key:"registerUsedExtension",value:function registerUsedExtension(extensionName){this.json.extensionsUsed=this.json.extensionsUsed||[];if(!this.json.extensionsUsed.find(function(ext){return ext===extensionName;})){this.json.extensionsUsed.push(extensionName);}}},{key:"registerRequiredExtension",value:function registerRequiredExtension(extensionName){this.registerUsedExtension(extensionName);this.json.extensionsRequired=this.json.extensionsRequired||[];if(!this.json.extensionsRequired.find(function(ext){return ext===extensionName;})){this.json.extensionsRequired.push(extensionName);}}},{key:"removeExtension",value:function removeExtension(extensionName){if(this.json.extensionsRequired){this._removeStringFromArray(this.json.extensionsRequired,extensionName);}if(this.json.extensionsUsed){this._removeStringFromArray(this.json.extensionsUsed,extensionName);}if(this.json.extensions){delete this.json.extensions[extensionName];}}},{key:"setDefaultScene",value:function setDefaultScene(sceneIndex){this.json.scene=sceneIndex;}},{key:"addScene",value:function addScene(scene){var nodeIndices=scene.nodeIndices;this.json.scenes=this.json.scenes||[];this.json.scenes.push({nodes:nodeIndices});return this.json.scenes.length-1;}},{key:"addNode",value:function addNode(node){var meshIndex=node.meshIndex,matrix=node.matrix;this.json.nodes=this.json.nodes||[];var nodeData={mesh:meshIndex};if(matrix){nodeData.matrix=matrix;}this.json.nodes.push(nodeData);return this.json.nodes.length-1;}},{key:"addMesh",value:function addMesh(mesh){var attributes=mesh.attributes,indices=mesh.indices,material=mesh.material,_mesh$mode=mesh.mode,mode=_mesh$mode===void 0?4:_mesh$mode;var accessors=this._addAttributes(attributes);var glTFMesh={primitives:[{attributes:accessors,mode:mode}]};if(indices){var indicesAccessor=this._addIndices(indices);glTFMesh.primitives[0].indices=indicesAccessor;}if(Number.isFinite(material)){glTFMesh.primitives[0].material=material;}this.json.meshes=this.json.meshes||[];this.json.meshes.push(glTFMesh);return this.json.meshes.length-1;}},{key:"addPointCloud",value:function addPointCloud(attributes){var accessorIndices=this._addAttributes(attributes);var glTFMesh={primitives:[{attributes:accessorIndices,mode:0}]};this.json.meshes=this.json.meshes||[];this.json.meshes.push(glTFMesh);return this.json.meshes.length-1;}},{key:"addImage",value:function addImage(imageData,mimeTypeOpt){var metadata=getBinaryImageMetadata(imageData);var mimeType=mimeTypeOpt||(metadata===null||metadata===void 0?void 0:metadata.mimeType);var bufferViewIndex=this.addBufferView(imageData);var glTFImage={bufferView:bufferViewIndex,mimeType:mimeType};this.json.images=this.json.images||[];this.json.images.push(glTFImage);return this.json.images.length-1;}},{key:"addBufferView",value:function addBufferView(buffer){var byteLength=buffer.byteLength;assert$1(Number.isFinite(byteLength));this.sourceBuffers=this.sourceBuffers||[];this.sourceBuffers.push(buffer);var glTFBufferView={buffer:0,byteOffset:this.byteLength,byteLength:byteLength};this.byteLength+=padToNBytes(byteLength,4);this.json.bufferViews=this.json.bufferViews||[];this.json.bufferViews.push(glTFBufferView);return this.json.bufferViews.length-1;}},{key:"addAccessor",value:function addAccessor(bufferViewIndex,accessor){var glTFAccessor={bufferView:bufferViewIndex,type:getAccessorTypeFromSize(accessor.size),componentType:accessor.componentType,count:accessor.count,max:accessor.max,min:accessor.min};this.json.accessors=this.json.accessors||[];this.json.accessors.push(glTFAccessor);return this.json.accessors.length-1;}},{key:"addBinaryBuffer",value:function addBinaryBuffer(sourceBuffer){var accessor=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{size:3};var bufferViewIndex=this.addBufferView(sourceBuffer);var minMax={min:accessor.min,max:accessor.max};if(!minMax.min||!minMax.max){minMax=this._getAccessorMinMax(sourceBuffer,accessor.size);}var accessorDefaults={size:accessor.size,componentType:getComponentTypeFromArray(sourceBuffer),count:Math.round(sourceBuffer.length/accessor.size),min:minMax.min,max:minMax.max};return this.addAccessor(bufferViewIndex,Object.assign(accessorDefaults,accessor));}},{key:"addTexture",value:function addTexture(texture){var imageIndex=texture.imageIndex;var glTFTexture={source:imageIndex};this.json.textures=this.json.textures||[];this.json.textures.push(glTFTexture);return this.json.textures.length-1;}},{key:"addMaterial",value:function addMaterial(pbrMaterialInfo){this.json.materials=this.json.materials||[];this.json.materials.push(pbrMaterialInfo);return this.json.materials.length-1;}},{key:"createBinaryChunk",value:function createBinaryChunk(){var _this$json,_this$json$buffers;this.gltf.buffers=[];var totalByteLength=this.byteLength;var arrayBuffer=new ArrayBuffer(totalByteLength);var targetArray=new Uint8Array(arrayBuffer);var dstByteOffset=0;var _iterator17=_createForOfIteratorHelper(this.sourceBuffers||[]),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var sourceBuffer=_step17.value;dstByteOffset=copyToArray(sourceBuffer,targetArray,dstByteOffset);}}catch(err){_iterator17.e(err);}finally{_iterator17.f();}if((_this$json=this.json)!==null&&_this$json!==void 0&&(_this$json$buffers=_this$json.buffers)!==null&&_this$json$buffers!==void 0&&_this$json$buffers[0]){this.json.buffers[0].byteLength=totalByteLength;}else{this.json.buffers=[{byteLength:totalByteLength}];}this.gltf.binary=arrayBuffer;this.sourceBuffers=[arrayBuffer];}},{key:"_removeStringFromArray",value:function _removeStringFromArray(array,string){var found=true;while(found){var index=array.indexOf(string);if(index>-1){array.splice(index,1);}else{found=false;}}}},{key:"_addAttributes",value:function _addAttributes(){var attributes=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var result={};for(var attributeKey in attributes){var attributeData=attributes[attributeKey];var attrName=this._getGltfAttributeName(attributeKey);var accessor=this.addBinaryBuffer(attributeData.value,attributeData);result[attrName]=accessor;}return result;}},{key:"_addIndices",value:function _addIndices(indices){return this.addBinaryBuffer(indices,{size:1});}},{key:"_getGltfAttributeName",value:function _getGltfAttributeName(attributeName){switch(attributeName.toLowerCase()){case'position':case'positions':case'vertices':return'POSITION';case'normal':case'normals':return'NORMAL';case'color':case'colors':return'COLOR_0';case'texcoord':case'texcoords':return'TEXCOORD_0';default:return attributeName;}}},{key:"_getAccessorMinMax",value:function _getAccessorMinMax(buffer,size){var result={min:null,max:null};if(buffer.length5&&_args30[5]!==undefined?_args30[5]:'NONE';_context36.next=3;return loadWasmInstance();case 3:instance=_context36.sent;decode$5(instance,instance.exports[DECODERS[mode]],target,count,size,source,instance.exports[FILTERS[filter||'NONE']]);case 5:case"end":return _context36.stop();}}},_callee32);}));return _meshoptDecodeGltfBuffer.apply(this,arguments);}var wasmPromise;function loadWasmInstance(){return _loadWasmInstance.apply(this,arguments);}function _loadWasmInstance(){_loadWasmInstance=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee33(){return _regeneratorRuntime().wrap(function _callee33$(_context37){while(1){switch(_context37.prev=_context37.next){case 0:if(!wasmPromise){wasmPromise=loadWasmModule();}return _context37.abrupt("return",wasmPromise);case 2:case"end":return _context37.stop();}}},_callee33);}));return _loadWasmInstance.apply(this,arguments);}function loadWasmModule(){return _loadWasmModule.apply(this,arguments);}function _loadWasmModule(){_loadWasmModule=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee34(){var wasm,result;return _regeneratorRuntime().wrap(function _callee34$(_context38){while(1){switch(_context38.prev=_context38.next){case 0:wasm=wasm_base;if(WebAssembly.validate(detector)){wasm=wasm_simd;console.log('Warning: meshopt_decoder is using experimental SIMD support');}_context38.next=4;return WebAssembly.instantiate(unpack(wasm),{});case 4:result=_context38.sent;_context38.next=7;return result.instance.exports.__wasm_call_ctors();case 7:return _context38.abrupt("return",result.instance);case 8:case"end":return _context38.stop();}}},_callee34);}));return _loadWasmModule.apply(this,arguments);}function unpack(data){var result=new Uint8Array(data.length);for(var _i499=0;_i49996?ch-71:ch>64?ch-65:ch>47?ch+4:ch>46?63:62;}var write=0;for(var _i500=0;_i500maxX?x:maxX;maxY=y>maxY?y:maxY;maxZ=_z4>maxZ?_z4:maxZ;}return[[minX,minY,minZ],[maxX,maxY,maxZ]];}function assert(condition,message){if(!condition){throw new Error(message||'loader assertion failed.');}}var Schema=/*#__PURE__*/function(){function Schema(fields,metadata){_classCallCheck(this,Schema);_defineProperty(this,"fields",void 0);_defineProperty(this,"metadata",void 0);assert(Array.isArray(fields));checkNames(fields);this.fields=fields;this.metadata=metadata||new Map();}_createClass(Schema,[{key:"compareTo",value:function compareTo(other){if(this.metadata!==other.metadata){return false;}if(this.fields.length!==other.fields.length){return false;}for(var _i502=0;_i5022&&arguments[2]!==undefined?arguments[2]:false;var metadata=arguments.length>3&&arguments[3]!==undefined?arguments[3]:new Map();_classCallCheck(this,Field);_defineProperty(this,"name",void 0);_defineProperty(this,"type",void 0);_defineProperty(this,"nullable",void 0);_defineProperty(this,"metadata",void 0);this.name=name;this.type=type;this.nullable=nullable;this.metadata=metadata;}_createClass(Field,[{key:"typeId",get:function get(){return this.type&&this.type.typeId;}},{key:"clone",value:function clone(){return new Field(this.name,this.type,this.nullable,this.metadata);}},{key:"compareTo",value:function compareTo(other){return this.name===other.name&&this.type===other.type&&this.nullable===other.nullable&&this.metadata===other.metadata;}},{key:"toString",value:function toString(){return"".concat(this.type).concat(this.nullable?', nullable':'').concat(this.metadata?", metadata: ".concat(this.metadata):'');}}]);return Field;}();var Type;(function(Type){Type[Type["NONE"]=0]="NONE";Type[Type["Null"]=1]="Null";Type[Type["Int"]=2]="Int";Type[Type["Float"]=3]="Float";Type[Type["Binary"]=4]="Binary";Type[Type["Utf8"]=5]="Utf8";Type[Type["Bool"]=6]="Bool";Type[Type["Decimal"]=7]="Decimal";Type[Type["Date"]=8]="Date";Type[Type["Time"]=9]="Time";Type[Type["Timestamp"]=10]="Timestamp";Type[Type["Interval"]=11]="Interval";Type[Type["List"]=12]="List";Type[Type["Struct"]=13]="Struct";Type[Type["Union"]=14]="Union";Type[Type["FixedSizeBinary"]=15]="FixedSizeBinary";Type[Type["FixedSizeList"]=16]="FixedSizeList";Type[Type["Map"]=17]="Map";Type[Type["Dictionary"]=-1]="Dictionary";Type[Type["Int8"]=-2]="Int8";Type[Type["Int16"]=-3]="Int16";Type[Type["Int32"]=-4]="Int32";Type[Type["Int64"]=-5]="Int64";Type[Type["Uint8"]=-6]="Uint8";Type[Type["Uint16"]=-7]="Uint16";Type[Type["Uint32"]=-8]="Uint32";Type[Type["Uint64"]=-9]="Uint64";Type[Type["Float16"]=-10]="Float16";Type[Type["Float32"]=-11]="Float32";Type[Type["Float64"]=-12]="Float64";Type[Type["DateDay"]=-13]="DateDay";Type[Type["DateMillisecond"]=-14]="DateMillisecond";Type[Type["TimestampSecond"]=-15]="TimestampSecond";Type[Type["TimestampMillisecond"]=-16]="TimestampMillisecond";Type[Type["TimestampMicrosecond"]=-17]="TimestampMicrosecond";Type[Type["TimestampNanosecond"]=-18]="TimestampNanosecond";Type[Type["TimeSecond"]=-19]="TimeSecond";Type[Type["TimeMillisecond"]=-20]="TimeMillisecond";Type[Type["TimeMicrosecond"]=-21]="TimeMicrosecond";Type[Type["TimeNanosecond"]=-22]="TimeNanosecond";Type[Type["DenseUnion"]=-23]="DenseUnion";Type[Type["SparseUnion"]=-24]="SparseUnion";Type[Type["IntervalDayTime"]=-25]="IntervalDayTime";Type[Type["IntervalYearMonth"]=-26]="IntervalYearMonth";})(Type||(Type={}));var _Symbol$toStringTag,_Symbol$toStringTag2,_Symbol$toStringTag7;var DataType=/*#__PURE__*/function(){function DataType(){_classCallCheck(this,DataType);}_createClass(DataType,[{key:"typeId",get:function get(){return Type.NONE;}},{key:"compareTo",value:function compareTo(other){return this===other;}}],[{key:"isNull",value:function isNull(x){return x&&x.typeId===Type.Null;}},{key:"isInt",value:function isInt(x){return x&&x.typeId===Type.Int;}},{key:"isFloat",value:function isFloat(x){return x&&x.typeId===Type.Float;}},{key:"isBinary",value:function isBinary(x){return x&&x.typeId===Type.Binary;}},{key:"isUtf8",value:function isUtf8(x){return x&&x.typeId===Type.Utf8;}},{key:"isBool",value:function isBool(x){return x&&x.typeId===Type.Bool;}},{key:"isDecimal",value:function isDecimal(x){return x&&x.typeId===Type.Decimal;}},{key:"isDate",value:function isDate(x){return x&&x.typeId===Type.Date;}},{key:"isTime",value:function isTime(x){return x&&x.typeId===Type.Time;}},{key:"isTimestamp",value:function isTimestamp(x){return x&&x.typeId===Type.Timestamp;}},{key:"isInterval",value:function isInterval(x){return x&&x.typeId===Type.Interval;}},{key:"isList",value:function isList(x){return x&&x.typeId===Type.List;}},{key:"isStruct",value:function isStruct(x){return x&&x.typeId===Type.Struct;}},{key:"isUnion",value:function isUnion(x){return x&&x.typeId===Type.Union;}},{key:"isFixedSizeBinary",value:function isFixedSizeBinary(x){return x&&x.typeId===Type.FixedSizeBinary;}},{key:"isFixedSizeList",value:function isFixedSizeList(x){return x&&x.typeId===Type.FixedSizeList;}},{key:"isMap",value:function isMap(x){return x&&x.typeId===Type.Map;}},{key:"isDictionary",value:function isDictionary(x){return x&&x.typeId===Type.Dictionary;}}]);return DataType;}();_Symbol$toStringTag=Symbol.toStringTag;var Int=/*#__PURE__*/function(_DataType,_Symbol$toStringTag3){_inherits(Int,_DataType);var _super140=_createSuper(Int);function Int(isSigned,bitWidth){var _this117;_classCallCheck(this,Int);_this117=_super140.call(this);_defineProperty(_assertThisInitialized(_this117),"isSigned",void 0);_defineProperty(_assertThisInitialized(_this117),"bitWidth",void 0);_this117.isSigned=isSigned;_this117.bitWidth=bitWidth;return _this117;}_createClass(Int,[{key:"typeId",get:function get(){return Type.Int;}},{key:_Symbol$toStringTag3,get:function get(){return'Int';}},{key:"toString",value:function toString(){return"".concat(this.isSigned?'I':'Ui',"nt").concat(this.bitWidth);}}]);return Int;}(DataType,_Symbol$toStringTag);var Int8=/*#__PURE__*/function(_Int){_inherits(Int8,_Int);var _super141=_createSuper(Int8);function Int8(){_classCallCheck(this,Int8);return _super141.call(this,true,8);}return _createClass(Int8);}(Int);var Int16=/*#__PURE__*/function(_Int2){_inherits(Int16,_Int2);var _super142=_createSuper(Int16);function Int16(){_classCallCheck(this,Int16);return _super142.call(this,true,16);}return _createClass(Int16);}(Int);var Int32=/*#__PURE__*/function(_Int3){_inherits(Int32,_Int3);var _super143=_createSuper(Int32);function Int32(){_classCallCheck(this,Int32);return _super143.call(this,true,32);}return _createClass(Int32);}(Int);var Uint8=/*#__PURE__*/function(_Int4){_inherits(Uint8,_Int4);var _super144=_createSuper(Uint8);function Uint8(){_classCallCheck(this,Uint8);return _super144.call(this,false,8);}return _createClass(Uint8);}(Int);var Uint16=/*#__PURE__*/function(_Int5){_inherits(Uint16,_Int5);var _super145=_createSuper(Uint16);function Uint16(){_classCallCheck(this,Uint16);return _super145.call(this,false,16);}return _createClass(Uint16);}(Int);var Uint32=/*#__PURE__*/function(_Int6){_inherits(Uint32,_Int6);var _super146=_createSuper(Uint32);function Uint32(){_classCallCheck(this,Uint32);return _super146.call(this,false,32);}return _createClass(Uint32);}(Int);var Precision={HALF:16,SINGLE:32,DOUBLE:64};_Symbol$toStringTag2=Symbol.toStringTag;var Float=/*#__PURE__*/function(_DataType2,_Symbol$toStringTag4){_inherits(Float,_DataType2);var _super147=_createSuper(Float);function Float(precision){var _this118;_classCallCheck(this,Float);_this118=_super147.call(this);_defineProperty(_assertThisInitialized(_this118),"precision",void 0);_this118.precision=precision;return _this118;}_createClass(Float,[{key:"typeId",get:function get(){return Type.Float;}},{key:_Symbol$toStringTag4,get:function get(){return'Float';}},{key:"toString",value:function toString(){return"Float".concat(this.precision);}}]);return Float;}(DataType,_Symbol$toStringTag2);var Float32=/*#__PURE__*/function(_Float){_inherits(Float32,_Float);var _super148=_createSuper(Float32);function Float32(){_classCallCheck(this,Float32);return _super148.call(this,Precision.SINGLE);}return _createClass(Float32);}(Float);var Float64=/*#__PURE__*/function(_Float2){_inherits(Float64,_Float2);var _super149=_createSuper(Float64);function Float64(){_classCallCheck(this,Float64);return _super149.call(this,Precision.DOUBLE);}return _createClass(Float64);}(Float);_Symbol$toStringTag7=Symbol.toStringTag;var FixedSizeList=/*#__PURE__*/function(_DataType3,_Symbol$toStringTag5){_inherits(FixedSizeList,_DataType3);var _super150=_createSuper(FixedSizeList);function FixedSizeList(listSize,child){var _this119;_classCallCheck(this,FixedSizeList);_this119=_super150.call(this);_defineProperty(_assertThisInitialized(_this119),"listSize",void 0);_defineProperty(_assertThisInitialized(_this119),"children",void 0);_this119.listSize=listSize;_this119.children=[child];return _this119;}_createClass(FixedSizeList,[{key:"typeId",get:function get(){return Type.FixedSizeList;}},{key:"valueType",get:function get(){return this.children[0].type;}},{key:"valueField",get:function get(){return this.children[0];}},{key:_Symbol$toStringTag5,get:function get(){return'FixedSizeList';}},{key:"toString",value:function toString(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">");}}]);return FixedSizeList;}(DataType,_Symbol$toStringTag7);function getArrowTypeFromTypedArray(array){switch(array.constructor){case Int8Array:return new Int8();case Uint8Array:return new Uint8();case Int16Array:return new Int16();case Uint16Array:return new Uint16();case Int32Array:return new Int32();case Uint32Array:return new Uint32();case Float32Array:return new Float32();case Float64Array:return new Float64();default:throw new Error('array type not supported');}}function deduceMeshField(attributeName,attribute,optionalMetadata){var type=getArrowTypeFromTypedArray(attribute.value);var metadata=optionalMetadata?optionalMetadata:makeMeshAttributeMetadata(attribute);var field=new Field(attributeName,new FixedSizeList(attribute.size,new Field('value',type)),false,metadata);return field;}function makeMeshAttributeMetadata(attribute){var result=new Map();if('byteOffset'in attribute){result.set('byteOffset',attribute.byteOffset.toString(10));}if('byteStride'in attribute){result.set('byteStride',attribute.byteStride.toString(10));}if('normalized'in attribute){result.set('normalized',attribute.normalized.toString());}return result;}function getDracoSchema(attributes,loaderData,indices){var metadataMap=makeMetadata(loaderData.metadata);var fields=[];var namedLoaderDataAttributes=transformAttributesLoaderData(loaderData.attributes);for(var attributeName in attributes){var attribute=attributes[attributeName];var field=getArrowFieldFromAttribute(attributeName,attribute,namedLoaderDataAttributes[attributeName]);fields.push(field);}if(indices){var indicesField=getArrowFieldFromAttribute('indices',indices);fields.push(indicesField);}return new Schema(fields,metadataMap);}function transformAttributesLoaderData(loaderData){var result={};for(var key in loaderData){var dracoAttribute=loaderData[key];result[dracoAttribute.name||'undefined']=dracoAttribute;}return result;}function getArrowFieldFromAttribute(attributeName,attribute,loaderData){var metadataMap=loaderData?makeMetadata(loaderData.metadata):undefined;var field=deduceMeshField(attributeName,attribute,metadataMap);return field;}function makeMetadata(metadata){var metadataMap=new Map();for(var key in metadata){metadataMap.set("".concat(key,".string"),JSON.stringify(metadata[key]));}return metadataMap;}var DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP={POSITION:'POSITION',NORMAL:'NORMAL',COLOR:'COLOR_0',TEX_COORD:'TEXCOORD_0'};var DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array};var INDEX_ITEM_SIZE=4;var DracoParser=/*#__PURE__*/function(){function DracoParser(draco){_classCallCheck(this,DracoParser);_defineProperty(this,"draco",void 0);_defineProperty(this,"decoder",void 0);_defineProperty(this,"metadataQuerier",void 0);this.draco=draco;this.decoder=new this.draco.Decoder();this.metadataQuerier=new this.draco.MetadataQuerier();}_createClass(DracoParser,[{key:"destroy",value:function destroy(){this.draco.destroy(this.decoder);this.draco.destroy(this.metadataQuerier);}},{key:"parseSync",value:function parseSync(arrayBuffer){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var buffer=new this.draco.DecoderBuffer();buffer.Init(new Int8Array(arrayBuffer),arrayBuffer.byteLength);this._disableAttributeTransforms(options);var geometry_type=this.decoder.GetEncodedGeometryType(buffer);var dracoGeometry=geometry_type===this.draco.TRIANGULAR_MESH?new this.draco.Mesh():new this.draco.PointCloud();try{var dracoStatus;switch(geometry_type){case this.draco.TRIANGULAR_MESH:dracoStatus=this.decoder.DecodeBufferToMesh(buffer,dracoGeometry);break;case this.draco.POINT_CLOUD:dracoStatus=this.decoder.DecodeBufferToPointCloud(buffer,dracoGeometry);break;default:throw new Error('DRACO: Unknown geometry type.');}if(!dracoStatus.ok()||!dracoGeometry.ptr){var message="DRACO decompression failed: ".concat(dracoStatus.error_msg());throw new Error(message);}var loaderData=this._getDracoLoaderData(dracoGeometry,geometry_type,options);var geometry=this._getMeshData(dracoGeometry,loaderData,options);var boundingBox=getMeshBoundingBox(geometry.attributes);var schema=getDracoSchema(geometry.attributes,loaderData,geometry.indices);var data=_objectSpread(_objectSpread({loader:'draco',loaderData:loaderData,header:{vertexCount:dracoGeometry.num_points(),boundingBox:boundingBox}},geometry),{},{schema:schema});return data;}finally{this.draco.destroy(buffer);if(dracoGeometry){this.draco.destroy(dracoGeometry);}}}},{key:"_getDracoLoaderData",value:function _getDracoLoaderData(dracoGeometry,geometry_type,options){var metadata=this._getTopLevelMetadata(dracoGeometry);var attributes=this._getDracoAttributes(dracoGeometry,options);return{geometry_type:geometry_type,num_attributes:dracoGeometry.num_attributes(),num_points:dracoGeometry.num_points(),num_faces:dracoGeometry instanceof this.draco.Mesh?dracoGeometry.num_faces():0,metadata:metadata,attributes:attributes};}},{key:"_getDracoAttributes",value:function _getDracoAttributes(dracoGeometry,options){var dracoAttributes={};for(var attributeId=0;attributeId2&&arguments[2]!==undefined?arguments[2]:false;if(!array){return null;}if(Array.isArray(array)){return new ArrayType(array);}if(convertTypedArrays&&!(array instanceof ArrayType)){return new ArrayType(array);}return array;}var KHR_DRACO_MESH_COMPRESSION='KHR_draco_mesh_compression';var name$3=KHR_DRACO_MESH_COMPRESSION;function preprocess$1(gltfData,options,context){var scenegraph=new GLTFScenegraph(gltfData);var _iterator25=_createForOfIteratorHelper(makeMeshPrimitiveIterator(scenegraph)),_step25;try{for(_iterator25.s();!(_step25=_iterator25.n()).done;){var _primitive=_step25.value;if(scenegraph.getObjectExtension(_primitive,KHR_DRACO_MESH_COMPRESSION));}}catch(err){_iterator25.e(err);}finally{_iterator25.f();}}function decode$3(_x72,_x73,_x74){return _decode$2.apply(this,arguments);}function _decode$2(){_decode$2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee40(gltfData,options,context){var _options$gltf,scenegraph,promises,_iterator42,_step42,_primitive5;return _regeneratorRuntime().wrap(function _callee40$(_context44){while(1){switch(_context44.prev=_context44.next){case 0:if(options!==null&&options!==void 0&&(_options$gltf=options.gltf)!==null&&_options$gltf!==void 0&&_options$gltf.decompressMeshes){_context44.next=2;break;}return _context44.abrupt("return");case 2:scenegraph=new GLTFScenegraph(gltfData);promises=[];_iterator42=_createForOfIteratorHelper(makeMeshPrimitiveIterator(scenegraph));try{for(_iterator42.s();!(_step42=_iterator42.n()).done;){_primitive5=_step42.value;if(scenegraph.getObjectExtension(_primitive5,KHR_DRACO_MESH_COMPRESSION)){promises.push(decompressPrimitive(scenegraph,_primitive5,options,context));}}}catch(err){_iterator42.e(err);}finally{_iterator42.f();}_context44.next=8;return Promise.all(promises);case 8:scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);case 9:case"end":return _context44.stop();}}},_callee40);}));return _decode$2.apply(this,arguments);}function encode$3(gltfData){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var scenegraph=new GLTFScenegraph(gltfData);var _iterator26=_createForOfIteratorHelper(scenegraph.json.meshes||[]),_step26;try{for(_iterator26.s();!(_step26=_iterator26.n()).done;){var _mesh3=_step26.value;compressMesh(_mesh3);scenegraph.addRequiredExtension(KHR_DRACO_MESH_COMPRESSION);}}catch(err){_iterator26.e(err);}finally{_iterator26.f();}}function decompressPrimitive(_x75,_x76,_x77,_x78){return _decompressPrimitive.apply(this,arguments);}function _decompressPrimitive(){_decompressPrimitive=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee41(scenegraph,primitive,options,context){var dracoExtension,buffer,bufferCopy,parse,dracoOptions,decodedData,decodedAttributes,_i590,_Object$entries5,_Object$entries5$_i,attributeName,decodedAttribute,accessorIndex,accessor;return _regeneratorRuntime().wrap(function _callee41$(_context45){while(1){switch(_context45.prev=_context45.next){case 0:dracoExtension=scenegraph.getObjectExtension(primitive,KHR_DRACO_MESH_COMPRESSION);if(dracoExtension){_context45.next=3;break;}return _context45.abrupt("return");case 3:buffer=scenegraph.getTypedArrayForBufferView(dracoExtension.bufferView);bufferCopy=sliceArrayBuffer(buffer.buffer,buffer.byteOffset);parse=context.parse;dracoOptions=_objectSpread({},options);delete dracoOptions['3d-tiles'];_context45.next=10;return parse(bufferCopy,DracoLoader,dracoOptions,context);case 10:decodedData=_context45.sent;decodedAttributes=getGLTFAccessors(decodedData.attributes);for(_i590=0,_Object$entries5=Object.entries(decodedAttributes);_i590<_Object$entries5.length;_i590++){_Object$entries5$_i=_slicedToArray(_Object$entries5[_i590],2),attributeName=_Object$entries5$_i[0],decodedAttribute=_Object$entries5$_i[1];if(attributeName in primitive.attributes){accessorIndex=primitive.attributes[attributeName];accessor=scenegraph.getAccessor(accessorIndex);if(accessor!==null&&accessor!==void 0&&accessor.min&&accessor!==null&&accessor!==void 0&&accessor.max){decodedAttribute.min=accessor.min;decodedAttribute.max=accessor.max;}}}primitive.attributes=decodedAttributes;if(decodedData.indices){primitive.indices=getGLTFAccessor(decodedData.indices);}checkPrimitive(primitive);case 16:case"end":return _context45.stop();}}},_callee41);}));return _decompressPrimitive.apply(this,arguments);}function compressMesh(attributes,indices){var mode=arguments.length>2&&arguments[2]!==undefined?arguments[2]:4;var options=arguments.length>3?arguments[3]:undefined;var context=arguments.length>4?arguments[4]:undefined;var _context$parseSync;if(!options.DracoWriter){throw new Error('options.gltf.DracoWriter not provided');}var compressedData=options.DracoWriter.encodeSync({attributes:attributes});var decodedData=context===null||context===void 0?void 0:(_context$parseSync=context.parseSync)===null||_context$parseSync===void 0?void 0:_context$parseSync.call(context,{attributes:attributes});var fauxAccessors=options._addFauxAttributes(decodedData.attributes);var bufferViewIndex=options.addBufferView(compressedData);var glTFMesh={primitives:[{attributes:fauxAccessors,mode:mode,extensions:_defineProperty2({},KHR_DRACO_MESH_COMPRESSION,{bufferView:bufferViewIndex,attributes:fauxAccessors})}]};return glTFMesh;}function checkPrimitive(primitive){if(!primitive.attributes&&Object.keys(primitive.attributes).length>0){throw new Error('glTF: Empty primitive detected: Draco decompression failure?');}}function makeMeshPrimitiveIterator(scenegraph){var _iterator27,_step27,_mesh4,_iterator28,_step28,_primitive2;return _regeneratorRuntime().wrap(function makeMeshPrimitiveIterator$(_context10){while(1){switch(_context10.prev=_context10.next){case 0:_iterator27=_createForOfIteratorHelper(scenegraph.json.meshes||[]);_context10.prev=1;_iterator27.s();case 3:if((_step27=_iterator27.n()).done){_context10.next=24;break;}_mesh4=_step27.value;_iterator28=_createForOfIteratorHelper(_mesh4.primitives);_context10.prev=6;_iterator28.s();case 8:if((_step28=_iterator28.n()).done){_context10.next=14;break;}_primitive2=_step28.value;_context10.next=12;return _primitive2;case 12:_context10.next=8;break;case 14:_context10.next=19;break;case 16:_context10.prev=16;_context10.t0=_context10["catch"](6);_iterator28.e(_context10.t0);case 19:_context10.prev=19;_iterator28.f();return _context10.finish(19);case 22:_context10.next=3;break;case 24:_context10.next=29;break;case 26:_context10.prev=26;_context10.t1=_context10["catch"](1);_iterator27.e(_context10.t1);case 29:_context10.prev=29;_iterator27.f();return _context10.finish(29);case 32:case"end":return _context10.stop();}}},_marked3,null,[[1,26,29,32],[6,16,19,22]]);}var KHR_draco_mesh_compression=/*#__PURE__*/Object.freeze({__proto__:null,name:name$3,preprocess:preprocess$1,decode:decode$3,encode:encode$3});var KHR_LIGHTS_PUNCTUAL='KHR_lights_punctual';var name$2=KHR_LIGHTS_PUNCTUAL;function decode$2(_x79){return _decode$3.apply(this,arguments);}function _decode$3(){_decode$3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee42(gltfData){var gltfScenegraph,json,extension,_iterator43,_step43,_node12,nodeExtension;return _regeneratorRuntime().wrap(function _callee42$(_context46){while(1){switch(_context46.prev=_context46.next){case 0:gltfScenegraph=new GLTFScenegraph(gltfData);json=gltfScenegraph.json;extension=gltfScenegraph.getExtension(KHR_LIGHTS_PUNCTUAL);if(extension){gltfScenegraph.json.lights=extension.lights;gltfScenegraph.removeExtension(KHR_LIGHTS_PUNCTUAL);}_iterator43=_createForOfIteratorHelper(json.nodes||[]);try{for(_iterator43.s();!(_step43=_iterator43.n()).done;){_node12=_step43.value;nodeExtension=gltfScenegraph.getObjectExtension(_node12,KHR_LIGHTS_PUNCTUAL);if(nodeExtension){_node12.light=nodeExtension.light;}gltfScenegraph.removeObjectExtension(_node12,KHR_LIGHTS_PUNCTUAL);}}catch(err){_iterator43.e(err);}finally{_iterator43.f();}case 6:case"end":return _context46.stop();}}},_callee42);}));return _decode$3.apply(this,arguments);}function encode$2(_x80){return _encode$.apply(this,arguments);}function _encode$(){_encode$=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee43(gltfData){var gltfScenegraph,json,extension,_iterator44,_step44,light,_node13;return _regeneratorRuntime().wrap(function _callee43$(_context47){while(1){switch(_context47.prev=_context47.next){case 0:gltfScenegraph=new GLTFScenegraph(gltfData);json=gltfScenegraph.json;if(json.lights){extension=gltfScenegraph.addExtension(KHR_LIGHTS_PUNCTUAL);assert$1(!extension.lights);extension.lights=json.lights;delete json.lights;}if(gltfScenegraph.json.lights){_iterator44=_createForOfIteratorHelper(gltfScenegraph.json.lights);try{for(_iterator44.s();!(_step44=_iterator44.n()).done;){light=_step44.value;_node13=light.node;gltfScenegraph.addObjectExtension(_node13,KHR_LIGHTS_PUNCTUAL,light);}}catch(err){_iterator44.e(err);}finally{_iterator44.f();}delete gltfScenegraph.json.lights;}case 4:case"end":return _context47.stop();}}},_callee43);}));return _encode$.apply(this,arguments);}var KHR_lights_punctual=/*#__PURE__*/Object.freeze({__proto__:null,name:name$2,decode:decode$2,encode:encode$2});var KHR_MATERIALS_UNLIT='KHR_materials_unlit';var name$1=KHR_MATERIALS_UNLIT;function decode$1(_x81){return _decode$4.apply(this,arguments);}function _decode$4(){_decode$4=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee44(gltfData){var gltfScenegraph,json,_iterator45,_step45,material,extension;return _regeneratorRuntime().wrap(function _callee44$(_context48){while(1){switch(_context48.prev=_context48.next){case 0:gltfScenegraph=new GLTFScenegraph(gltfData);json=gltfScenegraph.json;gltfScenegraph.removeExtension(KHR_MATERIALS_UNLIT);_iterator45=_createForOfIteratorHelper(json.materials||[]);try{for(_iterator45.s();!(_step45=_iterator45.n()).done;){material=_step45.value;extension=material.extensions&&material.extensions.KHR_materials_unlit;if(extension){material.unlit=true;}gltfScenegraph.removeObjectExtension(material,KHR_MATERIALS_UNLIT);}}catch(err){_iterator45.e(err);}finally{_iterator45.f();}case 5:case"end":return _context48.stop();}}},_callee44);}));return _decode$4.apply(this,arguments);}function encode$1(gltfData){var gltfScenegraph=new GLTFScenegraph(gltfData);var json=gltfScenegraph.json;if(gltfScenegraph.materials){var _iterator29=_createForOfIteratorHelper(json.materials||[]),_step29;try{for(_iterator29.s();!(_step29=_iterator29.n()).done;){var material=_step29.value;if(material.unlit){delete material.unlit;gltfScenegraph.addObjectExtension(material,KHR_MATERIALS_UNLIT,{});gltfScenegraph.addExtension(KHR_MATERIALS_UNLIT);}}}catch(err){_iterator29.e(err);}finally{_iterator29.f();}}}var KHR_materials_unlit=/*#__PURE__*/Object.freeze({__proto__:null,name:name$1,decode:decode$1,encode:encode$1});var KHR_TECHNIQUES_WEBGL='KHR_techniques_webgl';var name=KHR_TECHNIQUES_WEBGL;function decode(_x82){return _decode.apply(this,arguments);}function _decode(){_decode=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee45(gltfData){var gltfScenegraph,json,extension,techniques,_iterator46,_step46,material,materialExtension;return _regeneratorRuntime().wrap(function _callee45$(_context49){while(1){switch(_context49.prev=_context49.next){case 0:gltfScenegraph=new GLTFScenegraph(gltfData);json=gltfScenegraph.json;extension=gltfScenegraph.getExtension(KHR_TECHNIQUES_WEBGL);if(extension){techniques=resolveTechniques(extension,gltfScenegraph);_iterator46=_createForOfIteratorHelper(json.materials||[]);try{for(_iterator46.s();!(_step46=_iterator46.n()).done;){material=_step46.value;materialExtension=gltfScenegraph.getObjectExtension(material,KHR_TECHNIQUES_WEBGL);if(materialExtension){material.technique=Object.assign({},materialExtension,techniques[materialExtension.technique]);material.technique.values=resolveValues(material.technique,gltfScenegraph);}gltfScenegraph.removeObjectExtension(material,KHR_TECHNIQUES_WEBGL);}}catch(err){_iterator46.e(err);}finally{_iterator46.f();}gltfScenegraph.removeExtension(KHR_TECHNIQUES_WEBGL);}case 4:case"end":return _context49.stop();}}},_callee45);}));return _decode.apply(this,arguments);}function encode(_x83,_x84){return _encode.apply(this,arguments);}function _encode(){_encode=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee46(gltfData,options){return _regeneratorRuntime().wrap(function _callee46$(_context50){while(1){switch(_context50.prev=_context50.next){case 0:case"end":return _context50.stop();}}},_callee46);}));return _encode.apply(this,arguments);}function resolveTechniques(techniquesExtension,gltfScenegraph){var _techniquesExtension$=techniquesExtension.programs,programs=_techniquesExtension$===void 0?[]:_techniquesExtension$,_techniquesExtension$2=techniquesExtension.shaders,shaders=_techniquesExtension$2===void 0?[]:_techniquesExtension$2,_techniquesExtension$3=techniquesExtension.techniques,techniques=_techniquesExtension$3===void 0?[]:_techniquesExtension$3;var textDecoder=new TextDecoder();shaders.forEach(function(shader){if(Number.isFinite(shader.bufferView)){shader.code=textDecoder.decode(gltfScenegraph.getTypedArrayForBufferView(shader.bufferView));}else{throw new Error('KHR_techniques_webgl: no shader code');}});programs.forEach(function(program){program.fragmentShader=shaders[program.fragmentShader];program.vertexShader=shaders[program.vertexShader];});techniques.forEach(function(technique){technique.program=programs[technique.program];});return techniques;}function resolveValues(technique,gltfScenegraph){var values=Object.assign({},technique.values);Object.keys(technique.uniforms||{}).forEach(function(uniform){if(technique.uniforms[uniform].value&&!(uniform in values)){values[uniform]=technique.uniforms[uniform].value;}});Object.keys(values).forEach(function(uniform){if(_typeof(values[uniform])==='object'&&values[uniform].index!==undefined){values[uniform].texture=gltfScenegraph.getTexture(values[uniform].index);}});return values;}var KHR_techniques_webgl=/*#__PURE__*/Object.freeze({__proto__:null,name:name,decode:decode,encode:encode});var EXTENSIONS=[EXT_meshopt_compression,EXT_texture_webp,KHR_texture_basisu,KHR_draco_mesh_compression,KHR_lights_punctual,KHR_materials_unlit,KHR_techniques_webgl];function preprocessExtensions(gltf){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var context=arguments.length>2?arguments[2]:undefined;var extensions=EXTENSIONS.filter(function(extension){return useExtension(extension.name,options);});var _iterator30=_createForOfIteratorHelper(extensions),_step30;try{for(_iterator30.s();!(_step30=_iterator30.n()).done;){var extension=_step30.value;var _extension$preprocess;(_extension$preprocess=extension.preprocess)===null||_extension$preprocess===void 0?void 0:_extension$preprocess.call(extension,gltf,options,context);}}catch(err){_iterator30.e(err);}finally{_iterator30.f();}}function decodeExtensions(_x85){return _decodeExtensions.apply(this,arguments);}function _decodeExtensions(){_decodeExtensions=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee47(gltf){var options,context,extensions,_iterator47,_step47,extension,_extension$decode,_args45=arguments;return _regeneratorRuntime().wrap(function _callee47$(_context51){while(1){switch(_context51.prev=_context51.next){case 0:options=_args45.length>1&&_args45[1]!==undefined?_args45[1]:{};context=_args45.length>2?_args45[2]:undefined;extensions=EXTENSIONS.filter(function(extension){return useExtension(extension.name,options);});_iterator47=_createForOfIteratorHelper(extensions);_context51.prev=4;_iterator47.s();case 6:if((_step47=_iterator47.n()).done){_context51.next=12;break;}extension=_step47.value;_context51.next=10;return(_extension$decode=extension.decode)===null||_extension$decode===void 0?void 0:_extension$decode.call(extension,gltf,options,context);case 10:_context51.next=6;break;case 12:_context51.next=17;break;case 14:_context51.prev=14;_context51.t0=_context51["catch"](4);_iterator47.e(_context51.t0);case 17:_context51.prev=17;_iterator47.f();return _context51.finish(17);case 20:case"end":return _context51.stop();}}},_callee47,null,[[4,14,17,20]]);}));return _decodeExtensions.apply(this,arguments);}function useExtension(extensionName,options){var _options$gltf;var excludes=(options===null||options===void 0?void 0:(_options$gltf=options.gltf)===null||_options$gltf===void 0?void 0:_options$gltf.excludeExtensions)||{};var exclude=extensionName in excludes&&!excludes[extensionName];return!exclude;}var KHR_BINARY_GLTF='KHR_binary_glTF';function preprocess(gltfData){var gltfScenegraph=new GLTFScenegraph(gltfData);var json=gltfScenegraph.json;var _iterator31=_createForOfIteratorHelper(json.images||[]),_step31;try{for(_iterator31.s();!(_step31=_iterator31.n()).done;){var _image7=_step31.value;var extension=gltfScenegraph.getObjectExtension(_image7,KHR_BINARY_GLTF);if(extension){Object.assign(_image7,extension);}gltfScenegraph.removeObjectExtension(_image7,KHR_BINARY_GLTF);}}catch(err){_iterator31.e(err);}finally{_iterator31.f();}if(json.buffers&&json.buffers[0]){delete json.buffers[0].uri;}gltfScenegraph.removeExtension(KHR_BINARY_GLTF);}var GLTF_ARRAYS={accessors:'accessor',animations:'animation',buffers:'buffer',bufferViews:'bufferView',images:'image',materials:'material',meshes:'mesh',nodes:'node',samplers:'sampler',scenes:'scene',skins:'skin',textures:'texture'};var GLTF_KEYS={accessor:'accessors',animations:'animation',buffer:'buffers',bufferView:'bufferViews',image:'images',material:'materials',mesh:'meshes',node:'nodes',sampler:'samplers',scene:'scenes',skin:'skins',texture:'textures'};var GLTFV1Normalizer=/*#__PURE__*/function(){function GLTFV1Normalizer(){_classCallCheck(this,GLTFV1Normalizer);_defineProperty(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}});_defineProperty(this,"json",void 0);}_createClass(GLTFV1Normalizer,[{key:"normalize",value:function normalize(gltf,options){this.json=gltf.json;var json=gltf.json;switch(json.asset&&json.asset.version){case'2.0':return;case undefined:case'1.0':break;default:console.warn("glTF: Unknown version ".concat(json.asset.version));return;}if(!options.normalize){throw new Error('glTF v1 is not supported.');}console.warn('Converting glTF v1 to glTF v2 format. This is experimental and may fail.');this._addAsset(json);this._convertTopLevelObjectsToArrays(json);preprocess(gltf);this._convertObjectIdsToArrayIndices(json);this._updateObjects(json);this._updateMaterial(json);}},{key:"_addAsset",value:function _addAsset(json){json.asset=json.asset||{};json.asset.version='2.0';json.asset.generator=json.asset.generator||'Normalized to glTF 2.0 by loaders.gl';}},{key:"_convertTopLevelObjectsToArrays",value:function _convertTopLevelObjectsToArrays(json){for(var arrayName in GLTF_ARRAYS){this._convertTopLevelObjectToArray(json,arrayName);}}},{key:"_convertTopLevelObjectToArray",value:function _convertTopLevelObjectToArray(json,mapName){var objectMap=json[mapName];if(!objectMap||Array.isArray(objectMap)){return;}json[mapName]=[];for(var id in objectMap){var object=objectMap[id];object.id=object.id||id;var index=json[mapName].length;json[mapName].push(object);this.idToIndexMap[mapName][id]=index;}}},{key:"_convertObjectIdsToArrayIndices",value:function _convertObjectIdsToArrayIndices(json){for(var arrayName in GLTF_ARRAYS){this._convertIdsToIndices(json,arrayName);}if('scene'in json){json.scene=this._convertIdToIndex(json.scene,'scene');}var _iterator32=_createForOfIteratorHelper(json.textures),_step32;try{for(_iterator32.s();!(_step32=_iterator32.n()).done;){var texture=_step32.value;this._convertTextureIds(texture);}}catch(err){_iterator32.e(err);}finally{_iterator32.f();}var _iterator33=_createForOfIteratorHelper(json.meshes),_step33;try{for(_iterator33.s();!(_step33=_iterator33.n()).done;){var _mesh5=_step33.value;this._convertMeshIds(_mesh5);}}catch(err){_iterator33.e(err);}finally{_iterator33.f();}var _iterator34=_createForOfIteratorHelper(json.nodes),_step34;try{for(_iterator34.s();!(_step34=_iterator34.n()).done;){var _node4=_step34.value;this._convertNodeIds(_node4);}}catch(err){_iterator34.e(err);}finally{_iterator34.f();}var _iterator35=_createForOfIteratorHelper(json.scenes),_step35;try{for(_iterator35.s();!(_step35=_iterator35.n()).done;){var _node5=_step35.value;this._convertSceneIds(_node5);}}catch(err){_iterator35.e(err);}finally{_iterator35.f();}}},{key:"_convertTextureIds",value:function _convertTextureIds(texture){if(texture.source){texture.source=this._convertIdToIndex(texture.source,'image');}}},{key:"_convertMeshIds",value:function _convertMeshIds(mesh){var _iterator36=_createForOfIteratorHelper(mesh.primitives),_step36;try{for(_iterator36.s();!(_step36=_iterator36.n()).done;){var _primitive3=_step36.value;var attributes=_primitive3.attributes,indices=_primitive3.indices,material=_primitive3.material;for(var attributeName in attributes){attributes[attributeName]=this._convertIdToIndex(attributes[attributeName],'accessor');}if(indices){_primitive3.indices=this._convertIdToIndex(indices,'accessor');}if(material){_primitive3.material=this._convertIdToIndex(material,'material');}}}catch(err){_iterator36.e(err);}finally{_iterator36.f();}}},{key:"_convertNodeIds",value:function _convertNodeIds(node){var _this122=this;if(node.children){node.children=node.children.map(function(child){return _this122._convertIdToIndex(child,'node');});}if(node.meshes){node.meshes=node.meshes.map(function(mesh){return _this122._convertIdToIndex(mesh,'mesh');});}}},{key:"_convertSceneIds",value:function _convertSceneIds(scene){var _this123=this;if(scene.nodes){scene.nodes=scene.nodes.map(function(node){return _this123._convertIdToIndex(node,'node');});}}},{key:"_convertIdsToIndices",value:function _convertIdsToIndices(json,topLevelArrayName){if(!json[topLevelArrayName]){console.warn("gltf v1: json doesn't contain attribute ".concat(topLevelArrayName));json[topLevelArrayName]=[];}var _iterator37=_createForOfIteratorHelper(json[topLevelArrayName]),_step37;try{for(_iterator37.s();!(_step37=_iterator37.n()).done;){var object=_step37.value;for(var key in object){var id=object[key];var index=this._convertIdToIndex(id,key);object[key]=index;}}}catch(err){_iterator37.e(err);}finally{_iterator37.f();}}},{key:"_convertIdToIndex",value:function _convertIdToIndex(id,key){var arrayName=GLTF_KEYS[key];if(arrayName in this.idToIndexMap){var index=this.idToIndexMap[arrayName][id];if(!Number.isFinite(index)){throw new Error("gltf v1: failed to resolve ".concat(key," with id ").concat(id));}return index;}return id;}},{key:"_updateObjects",value:function _updateObjects(json){var _iterator38=_createForOfIteratorHelper(this.json.buffers),_step38;try{for(_iterator38.s();!(_step38=_iterator38.n()).done;){var buffer=_step38.value;delete buffer.type;}}catch(err){_iterator38.e(err);}finally{_iterator38.f();}}},{key:"_updateMaterial",value:function _updateMaterial(json){var _iterator39=_createForOfIteratorHelper(json.materials),_step39;try{var _loop6=function _loop6(){var material=_step39.value;material.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};var textureId=((_material$values=material.values)===null||_material$values===void 0?void 0:_material$values.tex)||((_material$values2=material.values)===null||_material$values2===void 0?void 0:_material$values2.texture2d_0);var textureIndex=json.textures.findIndex(function(texture){return texture.id===textureId;});if(textureIndex!==-1){material.pbrMetallicRoughness.baseColorTexture={index:textureIndex};}};for(_iterator39.s();!(_step39=_iterator39.n()).done;){var _material$values,_material$values2;_loop6();}}catch(err){_iterator39.e(err);}finally{_iterator39.f();}}}]);return GLTFV1Normalizer;}();function normalizeGLTFV1(gltf){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return new GLTFV1Normalizer().normalize(gltf,options);}var COMPONENTS={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var BYTES={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var GL_SAMPLER={TEXTURE_MAG_FILTER:0x2800,TEXTURE_MIN_FILTER:0x2801,TEXTURE_WRAP_S:0x2802,TEXTURE_WRAP_T:0x2803,REPEAT:0x2901,LINEAR:0x2601,NEAREST_MIPMAP_LINEAR:0x2702};var SAMPLER_PARAMETER_GLTF_TO_GL={magFilter:GL_SAMPLER.TEXTURE_MAG_FILTER,minFilter:GL_SAMPLER.TEXTURE_MIN_FILTER,wrapS:GL_SAMPLER.TEXTURE_WRAP_S,wrapT:GL_SAMPLER.TEXTURE_WRAP_T};var DEFAULT_SAMPLER=(_DEFAULT_SAMPLER={},_defineProperty2(_DEFAULT_SAMPLER,GL_SAMPLER.TEXTURE_MAG_FILTER,GL_SAMPLER.LINEAR),_defineProperty2(_DEFAULT_SAMPLER,GL_SAMPLER.TEXTURE_MIN_FILTER,GL_SAMPLER.NEAREST_MIPMAP_LINEAR),_defineProperty2(_DEFAULT_SAMPLER,GL_SAMPLER.TEXTURE_WRAP_S,GL_SAMPLER.REPEAT),_defineProperty2(_DEFAULT_SAMPLER,GL_SAMPLER.TEXTURE_WRAP_T,GL_SAMPLER.REPEAT),_DEFAULT_SAMPLER);function getBytesFromComponentType(componentType){return BYTES[componentType];}function getSizeFromAccessorType(type){return COMPONENTS[type];}var GLTFPostProcessor=/*#__PURE__*/function(){function GLTFPostProcessor(){_classCallCheck(this,GLTFPostProcessor);_defineProperty(this,"baseUri",'');_defineProperty(this,"json",{});_defineProperty(this,"buffers",[]);_defineProperty(this,"images",[]);}_createClass(GLTFPostProcessor,[{key:"postProcess",value:function postProcess(gltf){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var json=gltf.json,_gltf$buffers=gltf.buffers,buffers=_gltf$buffers===void 0?[]:_gltf$buffers,_gltf$images=gltf.images,images=_gltf$images===void 0?[]:_gltf$images,_gltf$baseUri=gltf.baseUri,baseUri=_gltf$baseUri===void 0?'':_gltf$baseUri;assert$1(json);this.baseUri=baseUri;this.json=json;this.buffers=buffers;this.images=images;this._resolveTree(this.json,options);return this.json;}},{key:"_resolveTree",value:function _resolveTree(json){var _this124=this;var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(json.bufferViews){json.bufferViews=json.bufferViews.map(function(bufView,i){return _this124._resolveBufferView(bufView,i);});}if(json.images){json.images=json.images.map(function(image,i){return _this124._resolveImage(image,i);});}if(json.samplers){json.samplers=json.samplers.map(function(sampler,i){return _this124._resolveSampler(sampler,i);});}if(json.textures){json.textures=json.textures.map(function(texture,i){return _this124._resolveTexture(texture,i);});}if(json.accessors){json.accessors=json.accessors.map(function(accessor,i){return _this124._resolveAccessor(accessor,i);});}if(json.materials){json.materials=json.materials.map(function(material,i){return _this124._resolveMaterial(material,i);});}if(json.meshes){json.meshes=json.meshes.map(function(mesh,i){return _this124._resolveMesh(mesh,i);});}if(json.nodes){json.nodes=json.nodes.map(function(node,i){return _this124._resolveNode(node,i);});}if(json.skins){json.skins=json.skins.map(function(skin,i){return _this124._resolveSkin(skin,i);});}if(json.scenes){json.scenes=json.scenes.map(function(scene,i){return _this124._resolveScene(scene,i);});}if(json.scene!==undefined){json.scene=json.scenes[this.json.scene];}}},{key:"getScene",value:function getScene(index){return this._get('scenes',index);}},{key:"getNode",value:function getNode(index){return this._get('nodes',index);}},{key:"getSkin",value:function getSkin(index){return this._get('skins',index);}},{key:"getMesh",value:function getMesh(index){return this._get('meshes',index);}},{key:"getMaterial",value:function getMaterial(index){return this._get('materials',index);}},{key:"getAccessor",value:function getAccessor(index){return this._get('accessors',index);}},{key:"getCamera",value:function getCamera(index){return null;}},{key:"getTexture",value:function getTexture(index){return this._get('textures',index);}},{key:"getSampler",value:function getSampler(index){return this._get('samplers',index);}},{key:"getImage",value:function getImage(index){return this._get('images',index);}},{key:"getBufferView",value:function getBufferView(index){return this._get('bufferViews',index);}},{key:"getBuffer",value:function getBuffer(index){return this._get('buffers',index);}},{key:"_get",value:function _get(array,index){if(_typeof(index)==='object'){return index;}var object=this.json[array]&&this.json[array][index];if(!object){console.warn("glTF file error: Could not find ".concat(array,"[").concat(index,"]"));}return object;}},{key:"_resolveScene",value:function _resolveScene(scene,index){var _this125=this;scene.id=scene.id||"scene-".concat(index);scene.nodes=(scene.nodes||[]).map(function(node){return _this125.getNode(node);});return scene;}},{key:"_resolveNode",value:function _resolveNode(node,index){var _this126=this;node.id=node.id||"node-".concat(index);if(node.children){node.children=node.children.map(function(child){return _this126.getNode(child);});}if(node.mesh!==undefined){node.mesh=this.getMesh(node.mesh);}else if(node.meshes!==undefined&&node.meshes.length){node.mesh=node.meshes.reduce(function(accum,meshIndex){var mesh=_this126.getMesh(meshIndex);accum.id=mesh.id;accum.primitives=accum.primitives.concat(mesh.primitives);return accum;},{primitives:[]});}if(node.camera!==undefined){node.camera=this.getCamera(node.camera);}if(node.skin!==undefined){node.skin=this.getSkin(node.skin);}return node;}},{key:"_resolveSkin",value:function _resolveSkin(skin,index){skin.id=skin.id||"skin-".concat(index);skin.inverseBindMatrices=this.getAccessor(skin.inverseBindMatrices);return skin;}},{key:"_resolveMesh",value:function _resolveMesh(mesh,index){var _this127=this;mesh.id=mesh.id||"mesh-".concat(index);if(mesh.primitives){mesh.primitives=mesh.primitives.map(function(primitive){primitive=_objectSpread({},primitive);var attributes=primitive.attributes;primitive.attributes={};for(var attribute in attributes){primitive.attributes[attribute]=_this127.getAccessor(attributes[attribute]);}if(primitive.indices!==undefined){primitive.indices=_this127.getAccessor(primitive.indices);}if(primitive.material!==undefined){primitive.material=_this127.getMaterial(primitive.material);}return primitive;});}return mesh;}},{key:"_resolveMaterial",value:function _resolveMaterial(material,index){material.id=material.id||"material-".concat(index);if(material.normalTexture){material.normalTexture=_objectSpread({},material.normalTexture);material.normalTexture.texture=this.getTexture(material.normalTexture.index);}if(material.occlusionTexture){material.occlustionTexture=_objectSpread({},material.occlustionTexture);material.occlusionTexture.texture=this.getTexture(material.occlusionTexture.index);}if(material.emissiveTexture){material.emmisiveTexture=_objectSpread({},material.emmisiveTexture);material.emissiveTexture.texture=this.getTexture(material.emissiveTexture.index);}if(!material.emissiveFactor){material.emissiveFactor=material.emmisiveTexture?[1,1,1]:[0,0,0];}if(material.pbrMetallicRoughness){material.pbrMetallicRoughness=_objectSpread({},material.pbrMetallicRoughness);var mr=material.pbrMetallicRoughness;if(mr.baseColorTexture){mr.baseColorTexture=_objectSpread({},mr.baseColorTexture);mr.baseColorTexture.texture=this.getTexture(mr.baseColorTexture.index);}if(mr.metallicRoughnessTexture){mr.metallicRoughnessTexture=_objectSpread({},mr.metallicRoughnessTexture);mr.metallicRoughnessTexture.texture=this.getTexture(mr.metallicRoughnessTexture.index);}}return material;}},{key:"_resolveAccessor",value:function _resolveAccessor(accessor,index){accessor.id=accessor.id||"accessor-".concat(index);if(accessor.bufferView!==undefined){accessor.bufferView=this.getBufferView(accessor.bufferView);}accessor.bytesPerComponent=getBytesFromComponentType(accessor.componentType);accessor.components=getSizeFromAccessorType(accessor.type);accessor.bytesPerElement=accessor.bytesPerComponent*accessor.components;if(accessor.bufferView){var buffer=accessor.bufferView.buffer;var _getAccessorArrayType2=getAccessorArrayTypeAndLength(accessor,accessor.bufferView),ArrayType=_getAccessorArrayType2.ArrayType,byteLength=_getAccessorArrayType2.byteLength;var byteOffset=(accessor.bufferView.byteOffset||0)+(accessor.byteOffset||0)+buffer.byteOffset;var cutBuffer=buffer.arrayBuffer.slice(byteOffset,byteOffset+byteLength);if(accessor.bufferView.byteStride){cutBuffer=this._getValueFromInterleavedBuffer(buffer,byteOffset,accessor.bufferView.byteStride,accessor.bytesPerElement,accessor.count);}accessor.value=new ArrayType(cutBuffer);}return accessor;}},{key:"_getValueFromInterleavedBuffer",value:function _getValueFromInterleavedBuffer(buffer,byteOffset,byteStride,bytesPerElement,count){var result=new Uint8Array(count*bytesPerElement);for(var _i508=0;_i5081&&arguments[1]!==undefined?arguments[1]:0;return"".concat(String.fromCharCode(dataView.getUint8(byteOffset+0))).concat(String.fromCharCode(dataView.getUint8(byteOffset+1))).concat(String.fromCharCode(dataView.getUint8(byteOffset+2))).concat(String.fromCharCode(dataView.getUint8(byteOffset+3)));}function isGLB(arrayBuffer){var byteOffset=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var dataView=new DataView(arrayBuffer);var _options$magic=options.magic,magic=_options$magic===void 0?MAGIC_glTF:_options$magic;var magic1=dataView.getUint32(byteOffset,false);return magic1===magic||magic1===MAGIC_glTF;}function parseGLBSync(glb,arrayBuffer){var byteOffset=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var options=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var dataView=new DataView(arrayBuffer);var type=getMagicString(dataView,byteOffset+0);var version=dataView.getUint32(byteOffset+4,LE);var byteLength=dataView.getUint32(byteOffset+8,LE);Object.assign(glb,{header:{byteOffset:byteOffset,byteLength:byteLength,hasBinChunk:false},type:type,version:version,json:{},binChunks:[]});byteOffset+=GLB_FILE_HEADER_SIZE;switch(glb.version){case 1:return parseGLBV1(glb,dataView,byteOffset);case 2:return parseGLBV2(glb,dataView,byteOffset,options={});default:throw new Error("Invalid GLB version ".concat(glb.version,". Only supports v1 and v2."));}}function parseGLBV1(glb,dataView,byteOffset){assert$5(glb.header.byteLength>GLB_FILE_HEADER_SIZE+GLB_CHUNK_HEADER_SIZE);var contentLength=dataView.getUint32(byteOffset+0,LE);var contentFormat=dataView.getUint32(byteOffset+4,LE);byteOffset+=GLB_CHUNK_HEADER_SIZE;assert$5(contentFormat===GLB_V1_CONTENT_FORMAT_JSON);parseJSONChunk(glb,dataView,byteOffset,contentLength);byteOffset+=contentLength;byteOffset+=parseBINChunk(glb,dataView,byteOffset,glb.header.byteLength);return byteOffset;}function parseGLBV2(glb,dataView,byteOffset,options){assert$5(glb.header.byteLength>GLB_FILE_HEADER_SIZE+GLB_CHUNK_HEADER_SIZE);parseGLBChunksSync(glb,dataView,byteOffset,options);return byteOffset+glb.header.byteLength;}function parseGLBChunksSync(glb,dataView,byteOffset,options){while(byteOffset+8<=glb.header.byteLength){var chunkLength=dataView.getUint32(byteOffset+0,LE);var chunkFormat=dataView.getUint32(byteOffset+4,LE);byteOffset+=GLB_CHUNK_HEADER_SIZE;switch(chunkFormat){case GLB_CHUNK_TYPE_JSON:parseJSONChunk(glb,dataView,byteOffset,chunkLength);break;case GLB_CHUNK_TYPE_BIN:parseBINChunk(glb,dataView,byteOffset,chunkLength);break;case GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED:if(!options.strict){parseJSONChunk(glb,dataView,byteOffset,chunkLength);}break;case GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED:if(!options.strict){parseBINChunk(glb,dataView,byteOffset,chunkLength);}break;}byteOffset+=padToNBytes(chunkLength,4);}return byteOffset;}function parseJSONChunk(glb,dataView,byteOffset,chunkLength){var jsonChunk=new Uint8Array(dataView.buffer,byteOffset,chunkLength);var textDecoder=new TextDecoder('utf8');var jsonText=textDecoder.decode(jsonChunk);glb.json=JSON.parse(jsonText);return padToNBytes(chunkLength,4);}function parseBINChunk(glb,dataView,byteOffset,chunkLength){glb.header.hasBinChunk=true;glb.binChunks.push({byteOffset:byteOffset,byteLength:chunkLength,arrayBuffer:dataView.buffer});return padToNBytes(chunkLength,4);}function parseGLTF$1(_x86,_x87){return _parseGLTF$.apply(this,arguments);}function _parseGLTF$(){_parseGLTF$=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee48(gltf,arrayBufferOrString){var byteOffset,options,context,_options$gltf,_options$gltf2,_options$gltf3,_options$gltf4,promises,_promise,promise,_args46=arguments;return _regeneratorRuntime().wrap(function _callee48$(_context52){while(1){switch(_context52.prev=_context52.next){case 0:byteOffset=_args46.length>2&&_args46[2]!==undefined?_args46[2]:0;options=_args46.length>3?_args46[3]:undefined;context=_args46.length>4?_args46[4]:undefined;parseGLTFContainerSync(gltf,arrayBufferOrString,byteOffset,options);normalizeGLTFV1(gltf,{normalize:options===null||options===void 0?void 0:(_options$gltf=options.gltf)===null||_options$gltf===void 0?void 0:_options$gltf.normalize});preprocessExtensions(gltf,options,context);promises=[];if(!(options!==null&&options!==void 0&&(_options$gltf2=options.gltf)!==null&&_options$gltf2!==void 0&&_options$gltf2.loadBuffers&&gltf.json.buffers)){_context52.next=10;break;}_context52.next=10;return loadBuffers(gltf,options,context);case 10:if(options!==null&&options!==void 0&&(_options$gltf3=options.gltf)!==null&&_options$gltf3!==void 0&&_options$gltf3.loadImages){_promise=loadImages(gltf,options,context);promises.push(_promise);}promise=decodeExtensions(gltf,options,context);promises.push(promise);_context52.next=15;return Promise.all(promises);case 15:return _context52.abrupt("return",options!==null&&options!==void 0&&(_options$gltf4=options.gltf)!==null&&_options$gltf4!==void 0&&_options$gltf4.postProcess?postProcessGLTF(gltf,options):gltf);case 16:case"end":return _context52.stop();}}},_callee48);}));return _parseGLTF$.apply(this,arguments);}function parseGLTFContainerSync(gltf,data,byteOffset,options){if(options.uri){gltf.baseUri=options.uri;}if(data instanceof ArrayBuffer&&!isGLB(data,byteOffset,options)){var textDecoder=new TextDecoder();data=textDecoder.decode(data);}if(typeof data==='string'){gltf.json=parseJSON(data);}else if(data instanceof ArrayBuffer){var glb={};byteOffset=parseGLBSync(glb,data,byteOffset,options.glb);assert$1(glb.type==='glTF',"Invalid GLB magic string ".concat(glb.type));gltf._glb=glb;gltf.json=glb.json;}else{assert$1(false,'GLTF: must be ArrayBuffer or string');}var buffers=gltf.json.buffers||[];gltf.buffers=new Array(buffers.length).fill(null);if(gltf._glb&&gltf._glb.header.hasBinChunk){var binChunks=gltf._glb.binChunks;gltf.buffers[0]={arrayBuffer:binChunks[0].arrayBuffer,byteOffset:binChunks[0].byteOffset,byteLength:binChunks[0].byteLength};}var images=gltf.json.images||[];gltf.images=new Array(images.length).fill({});}function loadBuffers(_x88,_x89,_x90){return _loadBuffers.apply(this,arguments);}function _loadBuffers(){_loadBuffers=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee49(gltf,options,context){var buffers,_i591,buffer,_context$fetch,_response$arrayBuffer,_fetch,uri,response,arrayBuffer;return _regeneratorRuntime().wrap(function _callee49$(_context53){while(1){switch(_context53.prev=_context53.next){case 0:buffers=gltf.json.buffers||[];_i591=0;case 2:if(!(_i5911&&arguments[1]!==undefined?arguments[1]:true;var transfers=arguments.length>2?arguments[2]:undefined;var transfersSet=transfers||new Set();if(!object);else if(isTransferable(object)){transfersSet.add(object);}else if(isTransferable(object.buffer)){transfersSet.add(object.buffer);}else if(ArrayBuffer.isView(object));else if(recursive&&_typeof(object)==='object'){for(var key in object){getTransferList(object[key],recursive,transfersSet);}}return transfers===undefined?Array.from(transfersSet):[];}function isTransferable(object){if(!object){return false;}if(object instanceof ArrayBuffer){return true;}if(typeof MessagePort!=='undefined'&&object instanceof MessagePort){return true;}if(typeof ImageBitmap!=='undefined'&&object instanceof ImageBitmap){return true;}if(typeof OffscreenCanvas!=='undefined'&&object instanceof OffscreenCanvas){return true;}return false;}var NOOP=function NOOP(){};var WorkerThread=/*#__PURE__*/function(){function WorkerThread(props){_classCallCheck(this,WorkerThread);_defineProperty(this,"name",void 0);_defineProperty(this,"source",void 0);_defineProperty(this,"url",void 0);_defineProperty(this,"terminated",false);_defineProperty(this,"worker",void 0);_defineProperty(this,"onMessage",void 0);_defineProperty(this,"onError",void 0);_defineProperty(this,"_loadableURL",'');var name=props.name,source=props.source,url=props.url;assert$4(source||url);this.name=name;this.source=source;this.url=url;this.onMessage=NOOP;this.onError=function(error){return console.log(error);};this.worker=isBrowser$3?this._createBrowserWorker():this._createNodeWorker();}_createClass(WorkerThread,[{key:"destroy",value:function destroy(){this.onMessage=NOOP;this.onError=NOOP;this.worker.terminate();this.terminated=true;}},{key:"isRunning",get:function get(){return Boolean(this.onMessage);}},{key:"postMessage",value:function postMessage(data,transferList){transferList=transferList||getTransferList(data);this.worker.postMessage(data,transferList);}},{key:"_getErrorFromErrorEvent",value:function _getErrorFromErrorEvent(event){var message='Failed to load ';message+="worker ".concat(this.name," from ").concat(this.url,". ");if(event.message){message+="".concat(event.message," in ");}if(event.lineno){message+=":".concat(event.lineno,":").concat(event.colno);}return new Error(message);}},{key:"_createBrowserWorker",value:function _createBrowserWorker(){var _this113=this;this._loadableURL=getLoadableWorkerURL({source:this.source,url:this.url});var worker=new Worker(this._loadableURL,{name:this.name});worker.onmessage=function(event){if(!event.data){_this113.onError(new Error('No data received'));}else{_this113.onMessage(event.data);}};worker.onerror=function(error){_this113.onError(_this113._getErrorFromErrorEvent(error));_this113.terminated=true;};worker.onmessageerror=function(event){return console.error(event);};return worker;}},{key:"_createNodeWorker",value:function _createNodeWorker(){var _this114=this;var worker;if(this.url){var absolute=this.url.includes(':/')||this.url.startsWith('/');var url=absolute?this.url:"./".concat(this.url);worker=new Worker$1(url,{eval:false});}else if(this.source){worker=new Worker$1(this.source,{eval:true});}else{throw new Error('no worker');}worker.on('message',function(data){_this114.onMessage(data);});worker.on('error',function(error){_this114.onError(error);});worker.on('exit',function(code){});return worker;}}],[{key:"isSupported",value:function isSupported(){return typeof Worker!=='undefined'&&isBrowser$3||_typeof(Worker$1)!==undefined;}}]);return WorkerThread;}();var WorkerPool=/*#__PURE__*/function(){function WorkerPool(props){_classCallCheck(this,WorkerPool);_defineProperty(this,"name",'unnamed');_defineProperty(this,"source",void 0);_defineProperty(this,"url",void 0);_defineProperty(this,"maxConcurrency",1);_defineProperty(this,"maxMobileConcurrency",1);_defineProperty(this,"onDebug",function(){});_defineProperty(this,"reuseWorkers",true);_defineProperty(this,"props",{});_defineProperty(this,"jobQueue",[]);_defineProperty(this,"idleQueue",[]);_defineProperty(this,"count",0);_defineProperty(this,"isDestroyed",false);this.source=props.source;this.url=props.url;this.setProps(props);}_createClass(WorkerPool,[{key:"destroy",value:function destroy(){this.idleQueue.forEach(function(worker){return worker.destroy();});this.isDestroyed=true;}},{key:"setProps",value:function setProps(props){this.props=_objectSpread(_objectSpread({},this.props),props);if(props.name!==undefined){this.name=props.name;}if(props.maxConcurrency!==undefined){this.maxConcurrency=props.maxConcurrency;}if(props.maxMobileConcurrency!==undefined){this.maxMobileConcurrency=props.maxMobileConcurrency;}if(props.reuseWorkers!==undefined){this.reuseWorkers=props.reuseWorkers;}if(props.onDebug!==undefined){this.onDebug=props.onDebug;}}},{key:"startJob",value:function(){var _startJob=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name){var _this115=this;var onMessage,onError,startPromise,_args2=arguments;return _regeneratorRuntime().wrap(function _callee2$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:onMessage=_args2.length>1&&_args2[1]!==undefined?_args2[1]:function(job,type,data){return job.done(data);};onError=_args2.length>2&&_args2[2]!==undefined?_args2[2]:function(job,error){return job.error(error);};startPromise=new Promise(function(onStart){_this115.jobQueue.push({name:name,onMessage:onMessage,onError:onError,onStart:onStart});return _this115;});this._startQueuedJob();_context3.next=6;return startPromise;case 6:return _context3.abrupt("return",_context3.sent);case 7:case"end":return _context3.stop();}}},_callee2,this);}));function startJob(_x7){return _startJob.apply(this,arguments);}return startJob;}()},{key:"_startQueuedJob",value:function(){var _startQueuedJob2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(){var workerThread,queuedJob,job;return _regeneratorRuntime().wrap(function _callee3$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:if(this.jobQueue.length){_context4.next=2;break;}return _context4.abrupt("return");case 2:workerThread=this._getAvailableWorker();if(workerThread){_context4.next=5;break;}return _context4.abrupt("return");case 5:queuedJob=this.jobQueue.shift();if(!queuedJob){_context4.next=18;break;}this.onDebug({message:'Starting job',name:queuedJob.name,workerThread:workerThread,backlog:this.jobQueue.length});job=new WorkerJob(queuedJob.name,workerThread);workerThread.onMessage=function(data){return queuedJob.onMessage(job,data.type,data.payload);};workerThread.onError=function(error){return queuedJob.onError(job,error);};queuedJob.onStart(job);_context4.prev=12;_context4.next=15;return job.result;case 15:_context4.prev=15;this.returnWorkerToQueue(workerThread);return _context4.finish(15);case 18:case"end":return _context4.stop();}}},_callee3,this,[[12,,15,18]]);}));function _startQueuedJob(){return _startQueuedJob2.apply(this,arguments);}return _startQueuedJob;}()},{key:"returnWorkerToQueue",value:function returnWorkerToQueue(worker){var shouldDestroyWorker=this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency();if(shouldDestroyWorker){worker.destroy();this.count--;}else{this.idleQueue.push(worker);}if(!this.isDestroyed){this._startQueuedJob();}}},{key:"_getAvailableWorker",value:function _getAvailableWorker(){if(this.idleQueue.length>0){return this.idleQueue.shift()||null;}if(this.count0&&arguments[0]!==undefined?arguments[0]:{};WorkerFarm._workerFarm=WorkerFarm._workerFarm||new WorkerFarm({});WorkerFarm._workerFarm.setProps(props);return WorkerFarm._workerFarm;}}]);return WorkerFarm;}();_defineProperty(WorkerFarm,"_workerFarm",void 0);var NPM_TAG='latest';function getWorkerURL(worker){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var workerOptions=options[worker.id]||{};var workerFile="".concat(worker.id,"-worker.js");var url=workerOptions.workerUrl;if(!url&&worker.id==='compression'){url=options.workerUrl;}if(options._workerType==='test'){url="modules/".concat(worker.module,"/dist/").concat(workerFile);}if(!url){var version=worker.version;if(version==='latest'){version=NPM_TAG;}var versionTag=version?"@".concat(version):'';url="https://unpkg.com/@loaders.gl/".concat(worker.module).concat(versionTag,"/dist/").concat(workerFile);}assert$4(url);return url;}function validateWorkerVersion(worker){var coreVersion=arguments.length>1&&arguments[1]!==undefined?arguments[1]:VERSION$9;assert$4(worker,'no worker provided');var workerVersion=worker.version;if(!coreVersion||!workerVersion){return false;}return true;}var ChildProcessProxy={};var node=/*#__PURE__*/Object.freeze({__proto__:null,'default':ChildProcessProxy});var VERSION$8="3.2.6";var loadLibraryPromises={};function loadLibrary(_x8){return _loadLibrary.apply(this,arguments);}function _loadLibrary(){_loadLibrary=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(libraryUrl){var moduleName,options,_args4=arguments;return _regeneratorRuntime().wrap(function _callee7$(_context11){while(1){switch(_context11.prev=_context11.next){case 0:moduleName=_args4.length>1&&_args4[1]!==undefined?_args4[1]:null;options=_args4.length>2&&_args4[2]!==undefined?_args4[2]:{};if(moduleName){libraryUrl=getLibraryUrl(libraryUrl,moduleName,options);}loadLibraryPromises[libraryUrl]=loadLibraryPromises[libraryUrl]||loadLibraryFromFile(libraryUrl);_context11.next=6;return loadLibraryPromises[libraryUrl];case 6:return _context11.abrupt("return",_context11.sent);case 7:case"end":return _context11.stop();}}},_callee7);}));return _loadLibrary.apply(this,arguments);}function getLibraryUrl(library,moduleName,options){if(library.startsWith('http')){return library;}var modules=options.modules||{};if(modules[library]){return modules[library];}if(!isBrowser$3){return"modules/".concat(moduleName,"/dist/libs/").concat(library);}if(options.CDN){assert$4(options.CDN.startsWith('http'));return"".concat(options.CDN,"/").concat(moduleName,"@").concat(VERSION$8,"/dist/libs/").concat(library);}if(isWorker){return"../src/libs/".concat(library);}return"modules/".concat(moduleName,"/src/libs/").concat(library);}function loadLibraryFromFile(_x9){return _loadLibraryFromFile.apply(this,arguments);}function _loadLibraryFromFile(){_loadLibraryFromFile=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(libraryUrl){var _response,response,scriptSource;return _regeneratorRuntime().wrap(function _callee8$(_context12){while(1){switch(_context12.prev=_context12.next){case 0:if(!libraryUrl.endsWith('wasm')){_context12.next=7;break;}_context12.next=3;return fetch(libraryUrl);case 3:_response=_context12.sent;_context12.next=6;return _response.arrayBuffer();case 6:return _context12.abrupt("return",_context12.sent);case 7:if(isBrowser$3){_context12.next=20;break;}_context12.prev=8;_context12.t0=node&&undefined;if(!_context12.t0){_context12.next=14;break;}_context12.next=13;return undefined(libraryUrl);case 13:_context12.t0=_context12.sent;case 14:return _context12.abrupt("return",_context12.t0);case 17:_context12.prev=17;_context12.t1=_context12["catch"](8);return _context12.abrupt("return",null);case 20:if(!isWorker){_context12.next=22;break;}return _context12.abrupt("return",importScripts(libraryUrl));case 22:_context12.next=24;return fetch(libraryUrl);case 24:response=_context12.sent;_context12.next=27;return response.text();case 27:scriptSource=_context12.sent;return _context12.abrupt("return",loadLibraryFromString(scriptSource,libraryUrl));case 29:case"end":return _context12.stop();}}},_callee8,null,[[8,17]]);}));return _loadLibraryFromFile.apply(this,arguments);}function loadLibraryFromString(scriptSource,id){if(!isBrowser$3){return undefined&&undefined(scriptSource,id);}if(isWorker){eval.call(global_,scriptSource);return null;}var script=document.createElement('script');script.id=id;try{script.appendChild(document.createTextNode(scriptSource));}catch(e){script.text=scriptSource;}document.body.appendChild(script);return null;}function canParseWithWorker(loader,options){if(!WorkerFarm.isSupported()){return false;}if(!isBrowser$3&&!(options!==null&&options!==void 0&&options._nodeWorkers)){return false;}return loader.worker&&(options===null||options===void 0?void 0:options.worker);}function parseWithWorker(_x10,_x11,_x12,_x13,_x14){return _parseWithWorker.apply(this,arguments);}function _parseWithWorker(){_parseWithWorker=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(loader,data,options,context,parseOnMainThread){var name,url,workerFarm,workerPool,job,result;return _regeneratorRuntime().wrap(function _callee9$(_context13){while(1){switch(_context13.prev=_context13.next){case 0:name=loader.id;url=getWorkerURL(loader,options);workerFarm=WorkerFarm.getWorkerFarm(options);workerPool=workerFarm.getWorkerPool({name:name,url:url});options=JSON.parse(JSON.stringify(options));context=JSON.parse(JSON.stringify(context||{}));_context13.next=8;return workerPool.startJob('process-on-worker',onMessage.bind(null,parseOnMainThread));case 8:job=_context13.sent;job.postMessage('process',{input:data,options:options,context:context});_context13.next=12;return job.result;case 12:result=_context13.sent;_context13.next=15;return result.result;case 15:return _context13.abrupt("return",_context13.sent);case 16:case"end":return _context13.stop();}}},_callee9);}));return _parseWithWorker.apply(this,arguments);}function onMessage(_x15,_x16,_x17,_x18){return _onMessage2.apply(this,arguments);}function _onMessage2(){_onMessage2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10(parseOnMainThread,job,type,payload){var id,input,options,result,message;return _regeneratorRuntime().wrap(function _callee10$(_context14){while(1){switch(_context14.prev=_context14.next){case 0:_context14.t0=type;_context14.next=_context14.t0==='done'?3:_context14.t0==='error'?5:_context14.t0==='process'?7:20;break;case 3:job.done(payload);return _context14.abrupt("break",21);case 5:job.error(new Error(payload.error));return _context14.abrupt("break",21);case 7:id=payload.id,input=payload.input,options=payload.options;_context14.prev=8;_context14.next=11;return parseOnMainThread(input,options);case 11:result=_context14.sent;job.postMessage('done',{id:id,result:result});_context14.next=19;break;case 15:_context14.prev=15;_context14.t1=_context14["catch"](8);message=_context14.t1 instanceof Error?_context14.t1.message:'unknown error';job.postMessage('error',{id:id,error:message});case 19:return _context14.abrupt("break",21);case 20:console.warn("parse-with-worker unknown message ".concat(type));case 21:case"end":return _context14.stop();}}},_callee10,null,[[8,15]]);}));return _onMessage2.apply(this,arguments);}function getFirstCharacters$1(data){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:5;if(typeof data==='string'){return data.slice(0,length);}else if(ArrayBuffer.isView(data)){return getMagicString$2(data.buffer,data.byteOffset,length);}else if(data instanceof ArrayBuffer){var byteOffset=0;return getMagicString$2(data,byteOffset,length);}return'';}function getMagicString$2(arrayBuffer,byteOffset,length){if(arrayBuffer.byteLength<=byteOffset+length){return'';}var dataView=new DataView(arrayBuffer);var magic='';for(var _i494=0;_i494=0);assert$5(padding>0);return byteLength+(padding-1)&~(padding-1);}function copyToArray(source,target,targetOffset){var sourceArray;if(source instanceof ArrayBuffer){sourceArray=new Uint8Array(source);}else{var srcByteOffset=source.byteOffset;var srcByteLength=source.byteLength;sourceArray=new Uint8Array(source.buffer||source.arrayBuffer,srcByteOffset,srcByteLength);}target.set(sourceArray,targetOffset);return targetOffset+padToNBytes(sourceArray.byteLength,4);}function concatenateArrayBuffersAsync(_x19){return _concatenateArrayBuffersAsync.apply(this,arguments);}function _concatenateArrayBuffersAsync(){_concatenateArrayBuffersAsync=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11(asyncIterator){var arrayBuffers,_iteratorAbruptCompletion,_didIteratorError,_iteratorError,_iterator,_step,chunk;return _regeneratorRuntime().wrap(function _callee11$(_context15){while(1){switch(_context15.prev=_context15.next){case 0:arrayBuffers=[];_iteratorAbruptCompletion=false;_didIteratorError=false;_context15.prev=3;_iterator=_asyncIterator(asyncIterator);case 5:_context15.next=7;return _iterator.next();case 7:if(!(_iteratorAbruptCompletion=!(_step=_context15.sent).done)){_context15.next=13;break;}chunk=_step.value;arrayBuffers.push(chunk);case 10:_iteratorAbruptCompletion=false;_context15.next=5;break;case 13:_context15.next=19;break;case 15:_context15.prev=15;_context15.t0=_context15["catch"](3);_didIteratorError=true;_iteratorError=_context15.t0;case 19:_context15.prev=19;_context15.prev=20;if(!(_iteratorAbruptCompletion&&_iterator["return"]!=null)){_context15.next=24;break;}_context15.next=24;return _iterator["return"]();case 24:_context15.prev=24;if(!_didIteratorError){_context15.next=27;break;}throw _iteratorError;case 27:return _context15.finish(24);case 28:return _context15.finish(19);case 29:return _context15.abrupt("return",concatenateArrayBuffers.apply(void 0,arrayBuffers));case 30:case"end":return _context15.stop();}}},_callee11,null,[[3,15,19,29],[20,,24,28]]);}));return _concatenateArrayBuffersAsync.apply(this,arguments);}var pathPrefix='';var fileAliases={};function resolvePath(filename){for(var alias in fileAliases){if(filename.startsWith(alias)){var replacement=fileAliases[alias];filename=filename.replace(alias,replacement);}}if(!filename.startsWith('http://')&&!filename.startsWith('https://')){filename="".concat(pathPrefix).concat(filename);}return filename;}function filename(url){var slashIndex=url&&url.lastIndexOf('/');return slashIndex>=0?url.substr(slashIndex+1):'';}var isBoolean=function isBoolean(x){return typeof x==='boolean';};var isFunction=function isFunction(x){return typeof x==='function';};var isObject=function isObject(x){return x!==null&&_typeof(x)==='object';};var isPureObject=function isPureObject(x){return isObject(x)&&x.constructor==={}.constructor;};var isIterable=function isIterable(x){return x&&typeof x[Symbol.iterator]==='function';};var isAsyncIterable=function isAsyncIterable(x){return x&&typeof x[Symbol.asyncIterator]==='function';};var isResponse=function isResponse(x){return typeof Response!=='undefined'&&x instanceof Response||x&&x.arrayBuffer&&x.text&&x.json;};var isBlob=function isBlob(x){return typeof Blob!=='undefined'&&x instanceof Blob;};var isBuffer=function isBuffer(x){return x&&_typeof(x)==='object'&&x.isBuffer;};var isReadableDOMStream=function isReadableDOMStream(x){return typeof ReadableStream!=='undefined'&&x instanceof ReadableStream||isObject(x)&&isFunction(x.tee)&&isFunction(x.cancel)&&isFunction(x.getReader);};var isReadableNodeStream=function isReadableNodeStream(x){return isObject(x)&&isFunction(x.read)&&isFunction(x.pipe)&&isBoolean(x.readable);};var isReadableStream=function isReadableStream(x){return isReadableDOMStream(x)||isReadableNodeStream(x);};var DATA_URL_PATTERN=/^data:([-\w.]+\/[-\w.+]+)(;|,)/;var MIME_TYPE_PATTERN=/^([-\w.]+\/[-\w.+]+)/;function parseMIMEType(mimeString){var matches=MIME_TYPE_PATTERN.exec(mimeString);if(matches){return matches[1];}return mimeString;}function parseMIMETypeFromURL(url){var matches=DATA_URL_PATTERN.exec(url);if(matches){return matches[1];}return'';}var QUERY_STRING_PATTERN=/\?.*/;function getResourceUrlAndType(resource){if(isResponse(resource)){var url=stripQueryString(resource.url||'');var contentTypeHeader=resource.headers.get('content-type')||'';return{url:url,type:parseMIMEType(contentTypeHeader)||parseMIMETypeFromURL(url)};}if(isBlob(resource)){return{url:stripQueryString(resource.name||''),type:resource.type||''};}if(typeof resource==='string'){return{url:stripQueryString(resource),type:parseMIMETypeFromURL(resource)};}return{url:'',type:''};}function getResourceContentLength(resource){if(isResponse(resource)){return resource.headers['content-length']||-1;}if(isBlob(resource)){return resource.size;}if(typeof resource==='string'){return resource.length;}if(resource instanceof ArrayBuffer){return resource.byteLength;}if(ArrayBuffer.isView(resource)){return resource.byteLength;}return-1;}function stripQueryString(url){return url.replace(QUERY_STRING_PATTERN,'');}function makeResponse(_x20){return _makeResponse.apply(this,arguments);}function _makeResponse(){_makeResponse=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12(resource){var headers,contentLength,_getResourceUrlAndTyp3,url,type,initialDataUrl,response;return _regeneratorRuntime().wrap(function _callee12$(_context16){while(1){switch(_context16.prev=_context16.next){case 0:if(!isResponse(resource)){_context16.next=2;break;}return _context16.abrupt("return",resource);case 2:headers={};contentLength=getResourceContentLength(resource);if(contentLength>=0){headers['content-length']=String(contentLength);}_getResourceUrlAndTyp3=getResourceUrlAndType(resource),url=_getResourceUrlAndTyp3.url,type=_getResourceUrlAndTyp3.type;if(type){headers['content-type']=type;}_context16.next=9;return getInitialDataUrl(resource);case 9:initialDataUrl=_context16.sent;if(initialDataUrl){headers['x-first-bytes']=initialDataUrl;}if(typeof resource==='string'){resource=new TextEncoder().encode(resource);}response=new Response(resource,{headers:headers});Object.defineProperty(response,'url',{value:url});return _context16.abrupt("return",response);case 15:case"end":return _context16.stop();}}},_callee12);}));return _makeResponse.apply(this,arguments);}function checkResponse(_x21){return _checkResponse.apply(this,arguments);}function _checkResponse(){_checkResponse=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee13(response){var message;return _regeneratorRuntime().wrap(function _callee13$(_context17){while(1){switch(_context17.prev=_context17.next){case 0:if(response.ok){_context17.next=5;break;}_context17.next=3;return getResponseError(response);case 3:message=_context17.sent;throw new Error(message);case 5:case"end":return _context17.stop();}}},_callee13);}));return _checkResponse.apply(this,arguments);}function getResponseError(_x22){return _getResponseError.apply(this,arguments);}function _getResponseError(){_getResponseError=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee14(response){var message,contentType,text;return _regeneratorRuntime().wrap(function _callee14$(_context18){while(1){switch(_context18.prev=_context18.next){case 0:message="Failed to fetch resource ".concat(response.url," (").concat(response.status,"): ");_context18.prev=1;contentType=response.headers.get('Content-Type');text=response.statusText;if(!contentType.includes('application/json')){_context18.next=11;break;}_context18.t0=text;_context18.t1=" ";_context18.next=9;return response.text();case 9:_context18.t2=_context18.sent;text=_context18.t0+=_context18.t1.concat.call(_context18.t1,_context18.t2);case 11:message+=text;message=message.length>60?"".concat(message.slice(0,60),"..."):message;_context18.next=17;break;case 15:_context18.prev=15;_context18.t3=_context18["catch"](1);case 17:return _context18.abrupt("return",message);case 18:case"end":return _context18.stop();}}},_callee14,null,[[1,15]]);}));return _getResponseError.apply(this,arguments);}function getInitialDataUrl(_x23){return _getInitialDataUrl.apply(this,arguments);}function _getInitialDataUrl(){_getInitialDataUrl=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee15(resource){var INITIAL_DATA_LENGTH,blobSlice,slice,_base;return _regeneratorRuntime().wrap(function _callee15$(_context19){while(1){switch(_context19.prev=_context19.next){case 0:INITIAL_DATA_LENGTH=5;if(!(typeof resource==='string')){_context19.next=3;break;}return _context19.abrupt("return","data:,".concat(resource.slice(0,INITIAL_DATA_LENGTH)));case 3:if(!(resource instanceof Blob)){_context19.next=8;break;}blobSlice=resource.slice(0,5);_context19.next=7;return new Promise(function(resolve){var reader=new FileReader();reader.onload=function(event){var _event$target;return resolve(event===null||event===void 0?void 0:(_event$target=event.target)===null||_event$target===void 0?void 0:_event$target.result);};reader.readAsDataURL(blobSlice);});case 7:return _context19.abrupt("return",_context19.sent);case 8:if(!(resource instanceof ArrayBuffer)){_context19.next=12;break;}slice=resource.slice(0,INITIAL_DATA_LENGTH);_base=arrayBufferToBase64(slice);return _context19.abrupt("return","data:base64,".concat(_base));case 12:return _context19.abrupt("return",null);case 13:case"end":return _context19.stop();}}},_callee15);}));return _getInitialDataUrl.apply(this,arguments);}function arrayBufferToBase64(buffer){var binary='';var bytes=new Uint8Array(buffer);for(var _i496=0;_i496=0){return true;}return false;}function isBrowser$2(){var isNode=(typeof process==="undefined"?"undefined":_typeof(process))==='object'&&String(process)==='[object process]'&&!process.browser;return!isNode||isElectron$1();}var globals$1={self:typeof self!=='undefined'&&self,window:typeof window!=='undefined'&&window,global:typeof global!=='undefined'&&global,document:typeof document!=='undefined'&&document,process:(typeof process==="undefined"?"undefined":_typeof(process))==='object'&&process};var window_$1=globals$1.window||globals$1.self||globals$1.global;var process_$1=globals$1.process||{};var VERSION$7=typeof __VERSION__!=='undefined'?__VERSION__:'untranspiled source';var isBrowser$1=isBrowser$2();function getStorage$1(type){try{var storage=window[type];var x='__storage_test__';storage.setItem(x,x);storage.removeItem(x);return storage;}catch(e){return null;}}var LocalStorage$1=/*#__PURE__*/function(){function LocalStorage$1(id,defaultSettings){var type=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'sessionStorage';_classCallCheck(this,LocalStorage$1);this.storage=getStorage$1(type);this.id=id;this.config={};Object.assign(this.config,defaultSettings);this._loadConfiguration();}_createClass(LocalStorage$1,[{key:"getConfiguration",value:function getConfiguration(){return this.config;}},{key:"setConfiguration",value:function setConfiguration(configuration){this.config={};return this.updateConfiguration(configuration);}},{key:"updateConfiguration",value:function updateConfiguration(configuration){Object.assign(this.config,configuration);if(this.storage){var serialized=JSON.stringify(this.config);this.storage.setItem(this.id,serialized);}return this;}},{key:"_loadConfiguration",value:function _loadConfiguration(){var configuration={};if(this.storage){var serializedConfiguration=this.storage.getItem(this.id);configuration=serializedConfiguration?JSON.parse(serializedConfiguration):{};}Object.assign(this.config,configuration);return this;}}]);return LocalStorage$1;}();function formatTime$1(ms){var formatted;if(ms<10){formatted="".concat(ms.toFixed(2),"ms");}else if(ms<100){formatted="".concat(ms.toFixed(1),"ms");}else if(ms<1000){formatted="".concat(ms.toFixed(0),"ms");}else{formatted="".concat((ms/1000).toFixed(2),"s");}return formatted;}function leftPad$1(string){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:8;var padLength=Math.max(length-string.length,0);return"".concat(' '.repeat(padLength)).concat(string);}function formatImage$1(image,message,scale){var maxWidth=arguments.length>3&&arguments[3]!==undefined?arguments[3]:600;var imageUrl=image.src.replace(/\(/g,'%28').replace(/\)/g,'%29');if(image.width>maxWidth){scale=Math.min(scale,maxWidth/image.width);}var width=image.width*scale;var height=image.height*scale;var style=['font-size:1px;',"padding:".concat(Math.floor(height/2),"px ").concat(Math.floor(width/2),"px;"),"line-height:".concat(height,"px;"),"background:url(".concat(imageUrl,");"),"background-size:".concat(width,"px ").concat(height,"px;"),'color:transparent;'].join('');return["".concat(message," %c+"),style];}var COLOR$1={BLACK:30,RED:31,GREEN:32,YELLOW:33,BLUE:34,MAGENTA:35,CYAN:36,WHITE:37,BRIGHT_BLACK:90,BRIGHT_RED:91,BRIGHT_GREEN:92,BRIGHT_YELLOW:93,BRIGHT_BLUE:94,BRIGHT_MAGENTA:95,BRIGHT_CYAN:96,BRIGHT_WHITE:97};function getColor$1(color){return typeof color==='string'?COLOR$1[color.toUpperCase()]||COLOR$1.WHITE:color;}function addColor$1(string,color,background){if(!isBrowser$1&&typeof string==='string'){if(color){color=getColor$1(color);string="\x1B[".concat(color,"m").concat(string,"\x1B[39m");}if(background){color=getColor$1(background);string="\x1B[".concat(background+10,"m").concat(string,"\x1B[49m");}}return string;}function autobind$1(obj){var predefined=arguments.length>1&&arguments[1]!==undefined?arguments[1]:['constructor'];var proto=Object.getPrototypeOf(obj);var propNames=Object.getOwnPropertyNames(proto);var _iterator7=_createForOfIteratorHelper(propNames),_step7;try{var _loop4=function _loop4(){var key=_step7.value;if(typeof obj[key]==='function'){if(!predefined.find(function(name){return key===name;})){obj[key]=obj[key].bind(obj);}}};for(_iterator7.s();!(_step7=_iterator7.n()).done;){_loop4();}}catch(err){_iterator7.e(err);}finally{_iterator7.f();}}function assert$3(condition,message){if(!condition){throw new Error(message||'Assertion failed');}}function getHiResTimestamp$1(){var timestamp;if(isBrowser$1&&window_$1.performance){timestamp=window_$1.performance.now();}else if(process_$1.hrtime){var timeParts=process_$1.hrtime();timestamp=timeParts[0]*1000+timeParts[1]/1e6;}else{timestamp=Date.now();}return timestamp;}var originalConsole$1={debug:isBrowser$1?console.debug||console.log:console.log,log:console.log,info:console.info,warn:console.warn,error:console.error};var DEFAULT_SETTINGS$1={enabled:true,level:0};function noop$1(){}var cache$1={};var ONCE$1={once:true};function getTableHeader$1(table){for(var key in table){for(var title in table[key]){return title||'untitled';}}return'empty';}var Log$1=/*#__PURE__*/function(){function Log$1(){var _ref16=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{id:''},id=_ref16.id;_classCallCheck(this,Log$1);this.id=id;this.VERSION=VERSION$7;this._startTs=getHiResTimestamp$1();this._deltaTs=getHiResTimestamp$1();this.LOG_THROTTLE_TIMEOUT=0;this._storage=new LocalStorage$1("__probe-".concat(this.id,"__"),DEFAULT_SETTINGS$1);this.userData={};this.timeStamp("".concat(this.id," started"));autobind$1(this);Object.seal(this);}_createClass(Log$1,[{key:"level",get:function get(){return this.getLevel();},set:function set(newLevel){this.setLevel(newLevel);}},{key:"isEnabled",value:function isEnabled(){return this._storage.config.enabled;}},{key:"getLevel",value:function getLevel(){return this._storage.config.level;}},{key:"getTotal",value:function getTotal(){return Number((getHiResTimestamp$1()-this._startTs).toPrecision(10));}},{key:"getDelta",value:function getDelta(){return Number((getHiResTimestamp$1()-this._deltaTs).toPrecision(10));}},{key:"priority",get:function get(){return this.level;},set:function set(newPriority){this.level=newPriority;}},{key:"getPriority",value:function getPriority(){return this.level;}},{key:"enable",value:function enable(){var enabled=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;this._storage.updateConfiguration({enabled:enabled});return this;}},{key:"setLevel",value:function setLevel(level){this._storage.updateConfiguration({level:level});return this;}},{key:"assert",value:function assert(condition,message){assert$3(condition,message);}},{key:"warn",value:function warn(message){return this._getLogFunction(0,message,originalConsole$1.warn,arguments,ONCE$1);}},{key:"error",value:function error(message){return this._getLogFunction(0,message,originalConsole$1.error,arguments);}},{key:"deprecated",value:function deprecated(oldUsage,newUsage){return this.warn("`".concat(oldUsage,"` is deprecated and will be removed in a later version. Use `").concat(newUsage,"` instead"));}},{key:"removed",value:function removed(oldUsage,newUsage){return this.error("`".concat(oldUsage,"` has been removed. Use `").concat(newUsage,"` instead"));}},{key:"probe",value:function probe(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole$1.log,arguments,{time:true,once:true});}},{key:"log",value:function log(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole$1.debug,arguments);}},{key:"info",value:function info(logLevel,message){return this._getLogFunction(logLevel,message,console.info,arguments);}},{key:"once",value:function once(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole$1.debug||originalConsole$1.info,arguments,ONCE$1);}},{key:"table",value:function table(logLevel,_table,columns){if(_table){return this._getLogFunction(logLevel,_table,console.table||noop$1,columns&&[columns],{tag:getTableHeader$1(_table)});}return noop$1;}},{key:"image",value:function(_image6){function image(_x26){return _image6.apply(this,arguments);}image.toString=function(){return _image6.toString();};return image;}(function(_ref17){var logLevel=_ref17.logLevel,priority=_ref17.priority,image=_ref17.image,_ref17$message=_ref17.message,message=_ref17$message===void 0?'':_ref17$message,_ref17$scale=_ref17.scale,scale=_ref17$scale===void 0?1:_ref17$scale;if(!this._shouldLog(logLevel||priority)){return noop$1;}return isBrowser$1?logImageInBrowser$1({image:image,message:message,scale:scale}):logImageInNode$1({image:image,message:message,scale:scale});})},{key:"settings",value:function settings(){if(console.table){console.table(this._storage.config);}else{console.log(this._storage.config);}}},{key:"get",value:function get(setting){return this._storage.config[setting];}},{key:"set",value:function set(setting,value){this._storage.updateConfiguration(_defineProperty2({},setting,value));}},{key:"time",value:function time(logLevel,message){return this._getLogFunction(logLevel,message,console.time?console.time:console.info);}},{key:"timeEnd",value:function timeEnd(logLevel,message){return this._getLogFunction(logLevel,message,console.timeEnd?console.timeEnd:console.info);}},{key:"timeStamp",value:function timeStamp(logLevel,message){return this._getLogFunction(logLevel,message,console.timeStamp||noop$1);}},{key:"group",value:function group(logLevel,message){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{collapsed:false};opts=normalizeArguments$1({logLevel:logLevel,message:message,opts:opts});var _opts=opts,collapsed=_opts.collapsed;opts.method=(collapsed?console.groupCollapsed:console.group)||console.info;return this._getLogFunction(opts);}},{key:"groupCollapsed",value:function groupCollapsed(logLevel,message){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return this.group(logLevel,message,Object.assign({},opts,{collapsed:true}));}},{key:"groupEnd",value:function groupEnd(logLevel){return this._getLogFunction(logLevel,'',console.groupEnd||noop$1);}},{key:"withGroup",value:function withGroup(logLevel,message,func){this.group(logLevel,message)();try{func();}finally{this.groupEnd(logLevel)();}}},{key:"trace",value:function trace(){if(console.trace){console.trace();}}},{key:"_shouldLog",value:function _shouldLog(logLevel){return this.isEnabled()&&this.getLevel()>=normalizeLogLevel$1(logLevel);}},{key:"_getLogFunction",value:function _getLogFunction(logLevel,message,method){var args=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];var opts=arguments.length>4?arguments[4]:undefined;if(this._shouldLog(logLevel)){var _method;opts=normalizeArguments$1({logLevel:logLevel,message:message,args:args,opts:opts});method=method||opts.method;assert$3(method);opts.total=this.getTotal();opts.delta=this.getDelta();this._deltaTs=getHiResTimestamp$1();var tag=opts.tag||opts.message;if(opts.once){if(!cache$1[tag]){cache$1[tag]=getHiResTimestamp$1();}else{return noop$1;}}message=decorateMessage$1(this.id,opts.message,opts);return(_method=method).bind.apply(_method,[console,message].concat(_toConsumableArray(opts.args)));}return noop$1;}}]);return Log$1;}();Log$1.VERSION=VERSION$7;function normalizeLogLevel$1(logLevel){if(!logLevel){return 0;}var resolvedLevel;switch(_typeof(logLevel)){case'number':resolvedLevel=logLevel;break;case'object':resolvedLevel=logLevel.logLevel||logLevel.priority||0;break;default:return 0;}assert$3(Number.isFinite(resolvedLevel)&&resolvedLevel>=0);return resolvedLevel;}function normalizeArguments$1(opts){var logLevel=opts.logLevel,message=opts.message;opts.logLevel=normalizeLogLevel$1(logLevel);var args=opts.args?Array.from(opts.args):[];while(args.length&&args.shift()!==message){}opts.args=args;switch(_typeof(logLevel)){case'string':case'function':if(message!==undefined){args.unshift(message);}opts.message=logLevel;break;case'object':Object.assign(opts,logLevel);break;}if(typeof opts.message==='function'){opts.message=opts.message();}var messageType=_typeof(opts.message);assert$3(messageType==='string'||messageType==='object');return Object.assign(opts,opts.opts);}function decorateMessage$1(id,message,opts){if(typeof message==='string'){var _time=opts.time?leftPad$1(formatTime$1(opts.total)):'';message=opts.time?"".concat(id,": ").concat(_time," ").concat(message):"".concat(id,": ").concat(message);message=addColor$1(message,opts.color,opts.background);}return message;}function logImageInNode$1(_ref18){var image=_ref18.image,_ref18$message=_ref18.message,message=_ref18$message===void 0?'':_ref18$message,_ref18$scale=_ref18.scale,scale=_ref18$scale===void 0?1:_ref18$scale;var asciify=null;try{asciify=module.require('asciify-image');}catch(error){}if(asciify){return function(){return asciify(image,{fit:'box',width:"".concat(Math.round(80*scale),"%")}).then(function(data){return console.log(data);});};}return noop$1;}function logImageInBrowser$1(_ref19){var image=_ref19.image,_ref19$message=_ref19.message,message=_ref19$message===void 0?'':_ref19$message,_ref19$scale=_ref19.scale,scale=_ref19$scale===void 0?1:_ref19$scale;if(typeof image==='string'){var img=new Image();img.onload=function(){var _console;var args=formatImage$1(img,message,scale);(_console=console).log.apply(_console,_toConsumableArray(args));};img.src=image;return noop$1;}var element=image.nodeName||'';if(element.toLowerCase()==='img'){var _console2;(_console2=console).log.apply(_console2,_toConsumableArray(formatImage$1(image,message,scale)));return noop$1;}if(element.toLowerCase()==='canvas'){var _img=new Image();_img.onload=function(){var _console3;return(_console3=console).log.apply(_console3,_toConsumableArray(formatImage$1(_img,message,scale)));};_img.src=image.toDataURL();return noop$1;}return noop$1;}var probeLog=new Log$1({id:'loaders.gl'});var NullLog=/*#__PURE__*/function(){function NullLog(){_classCallCheck(this,NullLog);}_createClass(NullLog,[{key:"log",value:function log(){return function(){};}},{key:"info",value:function info(){return function(){};}},{key:"warn",value:function warn(){return function(){};}},{key:"error",value:function error(){return function(){};}}]);return NullLog;}();var ConsoleLog=/*#__PURE__*/function(){function ConsoleLog(){_classCallCheck(this,ConsoleLog);_defineProperty(this,"console",void 0);this.console=console;}_createClass(ConsoleLog,[{key:"log",value:function log(){var _this$console$log;for(var _len103=arguments.length,args=new Array(_len103),_key7=0;_key7<_len103;_key7++){args[_key7]=arguments[_key7];}return(_this$console$log=this.console.log).bind.apply(_this$console$log,[this.console].concat(args));}},{key:"info",value:function info(){var _this$console$info;for(var _len104=arguments.length,args=new Array(_len104),_key8=0;_key8<_len104;_key8++){args[_key8]=arguments[_key8];}return(_this$console$info=this.console.info).bind.apply(_this$console$info,[this.console].concat(args));}},{key:"warn",value:function warn(){var _this$console$warn;for(var _len105=arguments.length,args=new Array(_len105),_key9=0;_key9<_len105;_key9++){args[_key9]=arguments[_key9];}return(_this$console$warn=this.console.warn).bind.apply(_this$console$warn,[this.console].concat(args));}},{key:"error",value:function error(){var _this$console$error;for(var _len106=arguments.length,args=new Array(_len106),_key10=0;_key10<_len106;_key10++){args[_key10]=arguments[_key10];}return(_this$console$error=this.console.error).bind.apply(_this$console$error,[this.console].concat(args));}}]);return ConsoleLog;}();var DEFAULT_LOADER_OPTIONS={fetch:null,mimeType:undefined,nothrow:false,log:new ConsoleLog(),CDN:'https://unpkg.com/@loaders.gl',worker:true,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:isBrowser$4,_nodeWorkers:false,_workerType:'',limit:0,_limitMB:0,batchSize:'auto',batchDebounceMs:0,metadata:false,transforms:[]};var REMOVED_LOADER_OPTIONS={"throws":'nothrow',dataType:'(no longer used)',uri:'baseUri',method:'fetch.method',headers:'fetch.headers',body:'fetch.body',mode:'fetch.mode',credentials:'fetch.credentials',cache:'fetch.cache',redirect:'fetch.redirect',referrer:'fetch.referrer',referrerPolicy:'fetch.referrerPolicy',integrity:'fetch.integrity',keepalive:'fetch.keepalive',signal:'fetch.signal'};function getGlobalLoaderState(){globalThis.loaders=globalThis.loaders||{};var loaders=globalThis.loaders;loaders._state=loaders._state||{};return loaders._state;}var getGlobalLoaderOptions=function getGlobalLoaderOptions(){var state=getGlobalLoaderState();state.globalOptions=state.globalOptions||_objectSpread({},DEFAULT_LOADER_OPTIONS);return state.globalOptions;};function normalizeOptions(options,loader,loaders,url){loaders=loaders||[];loaders=Array.isArray(loaders)?loaders:[loaders];validateOptions(options,loaders);return normalizeOptionsInternal(loader,options,url);}function getFetchFunction(options,context){var globalOptions=getGlobalLoaderOptions();var fetchOptions=options||globalOptions;if(typeof fetchOptions.fetch==='function'){return fetchOptions.fetch;}if(isObject(fetchOptions.fetch)){return function(url){return fetchFile(url,fetchOptions);};}if(context!==null&&context!==void 0&&context.fetch){return context===null||context===void 0?void 0:context.fetch;}return fetchFile;}function validateOptions(options,loaders){validateOptionsObject(options,null,DEFAULT_LOADER_OPTIONS,REMOVED_LOADER_OPTIONS,loaders);var _iterator8=_createForOfIteratorHelper(loaders),_step8;try{for(_iterator8.s();!(_step8=_iterator8.n()).done;){var loader=_step8.value;var idOptions=options&&options[loader.id]||{};var loaderOptions=loader.options&&loader.options[loader.id]||{};var deprecatedOptions=loader.deprecatedOptions&&loader.deprecatedOptions[loader.id]||{};validateOptionsObject(idOptions,loader.id,loaderOptions,deprecatedOptions,loaders);}}catch(err){_iterator8.e(err);}finally{_iterator8.f();}}function validateOptionsObject(options,id,defaultOptions,deprecatedOptions,loaders){var loaderName=id||'Top level';var prefix=id?"".concat(id,"."):'';for(var key in options){var isSubOptions=!id&&isObject(options[key]);var isBaseUriOption=key==='baseUri'&&!id;var isWorkerUrlOption=key==='workerUrl'&&id;if(!(key in defaultOptions)&&!isBaseUriOption&&!isWorkerUrlOption){if(key in deprecatedOptions){probeLog.warn("".concat(loaderName," loader option '").concat(prefix).concat(key,"' no longer supported, use '").concat(deprecatedOptions[key],"'"))();}else if(!isSubOptions){var suggestion=findSimilarOption(key,loaders);probeLog.warn("".concat(loaderName," loader option '").concat(prefix).concat(key,"' not recognized. ").concat(suggestion))();}}}}function findSimilarOption(optionKey,loaders){var lowerCaseOptionKey=optionKey.toLowerCase();var bestSuggestion='';var _iterator9=_createForOfIteratorHelper(loaders),_step9;try{for(_iterator9.s();!(_step9=_iterator9.n()).done;){var loader=_step9.value;for(var key in loader.options){if(optionKey===key){return"Did you mean '".concat(loader.id,".").concat(key,"'?");}var lowerCaseKey=key.toLowerCase();var isPartialMatch=lowerCaseOptionKey.startsWith(lowerCaseKey)||lowerCaseKey.startsWith(lowerCaseOptionKey);if(isPartialMatch){bestSuggestion=bestSuggestion||"Did you mean '".concat(loader.id,".").concat(key,"'?");}}}}catch(err){_iterator9.e(err);}finally{_iterator9.f();}return bestSuggestion;}function normalizeOptionsInternal(loader,options,url){var loaderDefaultOptions=loader.options||{};var mergedOptions=_objectSpread({},loaderDefaultOptions);addUrlOptions(mergedOptions,url);if(mergedOptions.log===null){mergedOptions.log=new NullLog();}mergeNestedFields(mergedOptions,getGlobalLoaderOptions());mergeNestedFields(mergedOptions,options);return mergedOptions;}function mergeNestedFields(mergedOptions,options){for(var key in options){if(key in options){var value=options[key];if(isPureObject(value)&&isPureObject(mergedOptions[key])){mergedOptions[key]=_objectSpread(_objectSpread({},mergedOptions[key]),options[key]);}else{mergedOptions[key]=options[key];}}}}function addUrlOptions(options,url){if(url&&!('baseUri'in options)){options.baseUri=url;}}function isLoaderObject(loader){var _loader;if(!loader){return false;}if(Array.isArray(loader)){loader=loader[0];}var hasExtensions=Array.isArray((_loader=loader)===null||_loader===void 0?void 0:_loader.extensions);return hasExtensions;}function normalizeLoader(loader){var _loader2,_loader3;assert$5(loader,'null loader');assert$5(isLoaderObject(loader),'invalid loader');var options;if(Array.isArray(loader)){options=loader[1];loader=loader[0];loader=_objectSpread(_objectSpread({},loader),{},{options:_objectSpread(_objectSpread({},loader.options),options)});}if((_loader2=loader)!==null&&_loader2!==void 0&&_loader2.parseTextSync||(_loader3=loader)!==null&&_loader3!==void 0&&_loader3.parseText){loader.text=true;}if(!loader.text){loader.binary=true;}return loader;}var getGlobalLoaderRegistry=function getGlobalLoaderRegistry(){var state=getGlobalLoaderState();state.loaderRegistry=state.loaderRegistry||[];return state.loaderRegistry;};function getRegisteredLoaders(){return getGlobalLoaderRegistry();}function isElectron(mockUserAgent){if(typeof window!=='undefined'&&_typeof(window.process)==='object'&&window.process.type==='renderer'){return true;}if(typeof process!=='undefined'&&_typeof(process.versions)==='object'&&Boolean(process.versions.electron)){return true;}var realUserAgent=(typeof navigator==="undefined"?"undefined":_typeof(navigator))==='object'&&typeof navigator.userAgent==='string'&&navigator.userAgent;var userAgent=mockUserAgent||realUserAgent;if(userAgent&&userAgent.indexOf('Electron')>=0){return true;}return false;}function isBrowser(){var isNode=(typeof process==="undefined"?"undefined":_typeof(process))==='object'&&String(process)==='[object process]'&&!process.browser;return!isNode||isElectron();}var globals={self:typeof self!=='undefined'&&self,window:typeof window!=='undefined'&&window,global:typeof global!=='undefined'&&global,document:typeof document!=='undefined'&&document,process:(typeof process==="undefined"?"undefined":_typeof(process))==='object'&&process};var window_=globals.window||globals.self||globals.global;var process_=globals.process||{};var VERSION$6=typeof __VERSION__!=='undefined'?__VERSION__:'untranspiled source';isBrowser();function getStorage(type){try{var storage=window[type];var x='__storage_test__';storage.setItem(x,x);storage.removeItem(x);return storage;}catch(e){return null;}}var LocalStorage=/*#__PURE__*/function(){function LocalStorage(id){_classCallCheck(this,LocalStorage);var defaultSettings=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var type=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'sessionStorage';_defineProperty(this,"storage",void 0);_defineProperty(this,"id",void 0);_defineProperty(this,"config",{});this.storage=getStorage(type);this.id=id;this.config={};Object.assign(this.config,defaultSettings);this._loadConfiguration();}_createClass(LocalStorage,[{key:"getConfiguration",value:function getConfiguration(){return this.config;}},{key:"setConfiguration",value:function setConfiguration(configuration){this.config={};return this.updateConfiguration(configuration);}},{key:"updateConfiguration",value:function updateConfiguration(configuration){Object.assign(this.config,configuration);if(this.storage){var serialized=JSON.stringify(this.config);this.storage.setItem(this.id,serialized);}return this;}},{key:"_loadConfiguration",value:function _loadConfiguration(){var configuration={};if(this.storage){var serializedConfiguration=this.storage.getItem(this.id);configuration=serializedConfiguration?JSON.parse(serializedConfiguration):{};}Object.assign(this.config,configuration);return this;}}]);return LocalStorage;}();function formatTime(ms){var formatted;if(ms<10){formatted="".concat(ms.toFixed(2),"ms");}else if(ms<100){formatted="".concat(ms.toFixed(1),"ms");}else if(ms<1000){formatted="".concat(ms.toFixed(0),"ms");}else{formatted="".concat((ms/1000).toFixed(2),"s");}return formatted;}function leftPad(string){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:8;var padLength=Math.max(length-string.length,0);return"".concat(' '.repeat(padLength)).concat(string);}function formatImage(image,message,scale){var maxWidth=arguments.length>3&&arguments[3]!==undefined?arguments[3]:600;var imageUrl=image.src.replace(/\(/g,'%28').replace(/\)/g,'%29');if(image.width>maxWidth){scale=Math.min(scale,maxWidth/image.width);}var width=image.width*scale;var height=image.height*scale;var style=['font-size:1px;',"padding:".concat(Math.floor(height/2),"px ").concat(Math.floor(width/2),"px;"),"line-height:".concat(height,"px;"),"background:url(".concat(imageUrl,");"),"background-size:".concat(width,"px ").concat(height,"px;"),'color:transparent;'].join('');return["".concat(message," %c+"),style];}var COLOR;(function(COLOR){COLOR[COLOR["BLACK"]=30]="BLACK";COLOR[COLOR["RED"]=31]="RED";COLOR[COLOR["GREEN"]=32]="GREEN";COLOR[COLOR["YELLOW"]=33]="YELLOW";COLOR[COLOR["BLUE"]=34]="BLUE";COLOR[COLOR["MAGENTA"]=35]="MAGENTA";COLOR[COLOR["CYAN"]=36]="CYAN";COLOR[COLOR["WHITE"]=37]="WHITE";COLOR[COLOR["BRIGHT_BLACK"]=90]="BRIGHT_BLACK";COLOR[COLOR["BRIGHT_RED"]=91]="BRIGHT_RED";COLOR[COLOR["BRIGHT_GREEN"]=92]="BRIGHT_GREEN";COLOR[COLOR["BRIGHT_YELLOW"]=93]="BRIGHT_YELLOW";COLOR[COLOR["BRIGHT_BLUE"]=94]="BRIGHT_BLUE";COLOR[COLOR["BRIGHT_MAGENTA"]=95]="BRIGHT_MAGENTA";COLOR[COLOR["BRIGHT_CYAN"]=96]="BRIGHT_CYAN";COLOR[COLOR["BRIGHT_WHITE"]=97]="BRIGHT_WHITE";})(COLOR||(COLOR={}));function getColor(color){return typeof color==='string'?COLOR[color.toUpperCase()]||COLOR.WHITE:color;}function addColor(string,color,background){if(!isBrowser&&typeof string==='string'){if(color){color=getColor(color);string="\x1B[".concat(color,"m").concat(string,"\x1B[39m");}if(background){color=getColor(background);string="\x1B[".concat(background+10,"m").concat(string,"\x1B[49m");}}return string;}function autobind(obj){var predefined=arguments.length>1&&arguments[1]!==undefined?arguments[1]:['constructor'];var proto=Object.getPrototypeOf(obj);var propNames=Object.getOwnPropertyNames(proto);var _iterator10=_createForOfIteratorHelper(propNames),_step10;try{var _loop5=function _loop5(){var key=_step10.value;if(typeof obj[key]==='function'){if(!predefined.find(function(name){return key===name;})){obj[key]=obj[key].bind(obj);}}};for(_iterator10.s();!(_step10=_iterator10.n()).done;){_loop5();}}catch(err){_iterator10.e(err);}finally{_iterator10.f();}}function assert$2(condition,message){if(!condition){throw new Error(message||'Assertion failed');}}function getHiResTimestamp(){var timestamp;if(isBrowser&&'performance'in window_){var _window$performance,_window$performance$n;timestamp=window_===null||window_===void 0?void 0:(_window$performance=window_.performance)===null||_window$performance===void 0?void 0:(_window$performance$n=_window$performance.now)===null||_window$performance$n===void 0?void 0:_window$performance$n.call(_window$performance);}else if('hrtime'in process_){var _process$hrtime;var timeParts=process_===null||process_===void 0?void 0:(_process$hrtime=process_.hrtime)===null||_process$hrtime===void 0?void 0:_process$hrtime.call(process_);timestamp=timeParts[0]*1000+timeParts[1]/1e6;}else{timestamp=Date.now();}return timestamp;}var originalConsole={debug:isBrowser?console.debug||console.log:console.log,log:console.log,info:console.info,warn:console.warn,error:console.error};var DEFAULT_SETTINGS={enabled:true,level:0};function noop(){}var cache={};var ONCE={once:true};var Log=/*#__PURE__*/function(){function Log(){_classCallCheck(this,Log);var _ref20=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{id:''},id=_ref20.id;_defineProperty(this,"id",void 0);_defineProperty(this,"VERSION",VERSION$6);_defineProperty(this,"_startTs",getHiResTimestamp());_defineProperty(this,"_deltaTs",getHiResTimestamp());_defineProperty(this,"_storage",void 0);_defineProperty(this,"userData",{});_defineProperty(this,"LOG_THROTTLE_TIMEOUT",0);this.id=id;this._storage=new LocalStorage("__probe-".concat(this.id,"__"),DEFAULT_SETTINGS);this.userData={};this.timeStamp("".concat(this.id," started"));autobind(this);Object.seal(this);}_createClass(Log,[{key:"level",get:function get(){return this.getLevel();},set:function set(newLevel){this.setLevel(newLevel);}},{key:"isEnabled",value:function isEnabled(){return this._storage.config.enabled;}},{key:"getLevel",value:function getLevel(){return this._storage.config.level;}},{key:"getTotal",value:function getTotal(){return Number((getHiResTimestamp()-this._startTs).toPrecision(10));}},{key:"getDelta",value:function getDelta(){return Number((getHiResTimestamp()-this._deltaTs).toPrecision(10));}},{key:"priority",get:function get(){return this.level;},set:function set(newPriority){this.level=newPriority;}},{key:"getPriority",value:function getPriority(){return this.level;}},{key:"enable",value:function enable(){var enabled=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;this._storage.updateConfiguration({enabled:enabled});return this;}},{key:"setLevel",value:function setLevel(level){this._storage.updateConfiguration({level:level});return this;}},{key:"get",value:function get(setting){return this._storage.config[setting];}},{key:"set",value:function set(setting,value){this._storage.updateConfiguration(_defineProperty2({},setting,value));}},{key:"settings",value:function settings(){if(console.table){console.table(this._storage.config);}else{console.log(this._storage.config);}}},{key:"assert",value:function assert(condition,message){assert$2(condition,message);}},{key:"warn",value:function warn(message){return this._getLogFunction(0,message,originalConsole.warn,arguments,ONCE);}},{key:"error",value:function error(message){return this._getLogFunction(0,message,originalConsole.error,arguments);}},{key:"deprecated",value:function deprecated(oldUsage,newUsage){return this.warn("`".concat(oldUsage,"` is deprecated and will be removed in a later version. Use `").concat(newUsage,"` instead"));}},{key:"removed",value:function removed(oldUsage,newUsage){return this.error("`".concat(oldUsage,"` has been removed. Use `").concat(newUsage,"` instead"));}},{key:"probe",value:function probe(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole.log,arguments,{time:true,once:true});}},{key:"log",value:function log(logLevel,message){return this._getLogFunction(logLevel,message,originalConsole.debug,arguments);}},{key:"info",value:function info(logLevel,message){return this._getLogFunction(logLevel,message,console.info,arguments);}},{key:"once",value:function once(logLevel,message){for(var _len=arguments.length,args=new Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){args[_key-2]=arguments[_key];}return this._getLogFunction(logLevel,message,originalConsole.debug||originalConsole.info,arguments,ONCE);}},{key:"table",value:function table(logLevel,_table2,columns){if(_table2){return this._getLogFunction(logLevel,_table2,console.table||noop,columns&&[columns],{tag:getTableHeader(_table2)});}return noop;}},{key:"image",value:function image(_ref){var logLevel=_ref.logLevel,priority=_ref.priority,image=_ref.image,_ref$message=_ref.message,message=_ref$message===void 0?'':_ref$message,_ref$scale=_ref.scale,scale=_ref$scale===void 0?1:_ref$scale;if(!this._shouldLog(logLevel||priority)){return noop;}return isBrowser?logImageInBrowser({image:image,message:message,scale:scale}):logImageInNode({image:image,message:message,scale:scale});}},{key:"time",value:function time(logLevel,message){return this._getLogFunction(logLevel,message,console.time?console.time:console.info);}},{key:"timeEnd",value:function timeEnd(logLevel,message){return this._getLogFunction(logLevel,message,console.timeEnd?console.timeEnd:console.info);}},{key:"timeStamp",value:function timeStamp(logLevel,message){return this._getLogFunction(logLevel,message,console.timeStamp||noop);}},{key:"group",value:function group(logLevel,message){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{collapsed:false};var options=normalizeArguments({logLevel:logLevel,message:message,opts:opts});var collapsed=opts.collapsed;options.method=(collapsed?console.groupCollapsed:console.group)||console.info;return this._getLogFunction(options);}},{key:"groupCollapsed",value:function groupCollapsed(logLevel,message){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return this.group(logLevel,message,Object.assign({},opts,{collapsed:true}));}},{key:"groupEnd",value:function groupEnd(logLevel){return this._getLogFunction(logLevel,'',console.groupEnd||noop);}},{key:"withGroup",value:function withGroup(logLevel,message,func){this.group(logLevel,message)();try{func();}finally{this.groupEnd(logLevel)();}}},{key:"trace",value:function trace(){if(console.trace){console.trace();}}},{key:"_shouldLog",value:function _shouldLog(logLevel){return this.isEnabled()&&this.getLevel()>=normalizeLogLevel(logLevel);}},{key:"_getLogFunction",value:function _getLogFunction(logLevel,message,method,args,opts){if(this._shouldLog(logLevel)){var _method2;opts=normalizeArguments({logLevel:logLevel,message:message,args:args,opts:opts});method=method||opts.method;assert$2(method);opts.total=this.getTotal();opts.delta=this.getDelta();this._deltaTs=getHiResTimestamp();var tag=opts.tag||opts.message;if(opts.once){if(!cache[tag]){cache[tag]=getHiResTimestamp();}else{return noop;}}message=decorateMessage(this.id,opts.message,opts);return(_method2=method).bind.apply(_method2,[console,message].concat(_toConsumableArray(opts.args)));}return noop;}}]);return Log;}();_defineProperty(Log,"VERSION",VERSION$6);function normalizeLogLevel(logLevel){if(!logLevel){return 0;}var resolvedLevel;switch(_typeof(logLevel)){case'number':resolvedLevel=logLevel;break;case'object':resolvedLevel=logLevel.logLevel||logLevel.priority||0;break;default:return 0;}assert$2(Number.isFinite(resolvedLevel)&&resolvedLevel>=0);return resolvedLevel;}function normalizeArguments(opts){var logLevel=opts.logLevel,message=opts.message;opts.logLevel=normalizeLogLevel(logLevel);var args=opts.args?Array.from(opts.args):[];while(args.length&&args.shift()!==message){}switch(_typeof(logLevel)){case'string':case'function':if(message!==undefined){args.unshift(message);}opts.message=logLevel;break;case'object':Object.assign(opts,logLevel);break;}if(typeof opts.message==='function'){opts.message=opts.message();}var messageType=_typeof(opts.message);assert$2(messageType==='string'||messageType==='object');return Object.assign(opts,{args:args},opts.opts);}function decorateMessage(id,message,opts){if(typeof message==='string'){var _time2=opts.time?leftPad(formatTime(opts.total)):'';message=opts.time?"".concat(id,": ").concat(_time2," ").concat(message):"".concat(id,": ").concat(message);message=addColor(message,opts.color,opts.background);}return message;}function logImageInNode(_ref2){var image=_ref2.image,_ref2$message=_ref2.message,message=_ref2$message===void 0?'':_ref2$message,_ref2$scale=_ref2.scale,scale=_ref2$scale===void 0?1:_ref2$scale;var asciify=null;try{asciify=module.require('asciify-image');}catch(error){}if(asciify){return function(){return asciify(image,{fit:'box',width:"".concat(Math.round(80*scale),"%")}).then(function(data){return console.log(data);});};}return noop;}function logImageInBrowser(_ref3){var image=_ref3.image,_ref3$message=_ref3.message,message=_ref3$message===void 0?'':_ref3$message,_ref3$scale=_ref3.scale,scale=_ref3$scale===void 0?1:_ref3$scale;if(typeof image==='string'){var img=new Image();img.onload=function(){var _console4;var args=formatImage(img,message,scale);(_console4=console).log.apply(_console4,_toConsumableArray(args));};img.src=image;return noop;}var element=image.nodeName||'';if(element.toLowerCase()==='img'){var _console5;(_console5=console).log.apply(_console5,_toConsumableArray(formatImage(image,message,scale)));return noop;}if(element.toLowerCase()==='canvas'){var _img2=new Image();_img2.onload=function(){var _console6;return(_console6=console).log.apply(_console6,_toConsumableArray(formatImage(_img2,message,scale)));};_img2.src=image.toDataURL();return noop;}return noop;}function getTableHeader(table){for(var key in table){for(var title in table[key]){return title||'untitled';}}return'empty';}var log=new Log({id:'loaders.gl'});var EXT_PATTERN=/\.([^.]+)$/;function selectLoader(_x27){return _selectLoader.apply(this,arguments);}function _selectLoader(){_selectLoader=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee17(data){var loaders,options,context,loader,_args15=arguments;return _regeneratorRuntime().wrap(function _callee17$(_context21){while(1){switch(_context21.prev=_context21.next){case 0:loaders=_args15.length>1&&_args15[1]!==undefined?_args15[1]:[];options=_args15.length>2?_args15[2]:undefined;context=_args15.length>3?_args15[3]:undefined;if(validHTTPResponse(data)){_context21.next=5;break;}return _context21.abrupt("return",null);case 5:loader=selectLoaderSync(data,loaders,_objectSpread(_objectSpread({},options),{},{nothrow:true}),context);if(!loader){_context21.next=8;break;}return _context21.abrupt("return",loader);case 8:if(!isBlob(data)){_context21.next=13;break;}_context21.next=11;return data.slice(0,10).arrayBuffer();case 11:data=_context21.sent;loader=selectLoaderSync(data,loaders,options,context);case 13:if(!(!loader&&!(options!==null&&options!==void 0&&options.nothrow))){_context21.next=15;break;}throw new Error(getNoValidLoaderMessage(data));case 15:return _context21.abrupt("return",loader);case 16:case"end":return _context21.stop();}}},_callee17);}));return _selectLoader.apply(this,arguments);}function selectLoaderSync(data){var loaders=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var options=arguments.length>2?arguments[2]:undefined;var context=arguments.length>3?arguments[3]:undefined;if(!validHTTPResponse(data)){return null;}if(loaders&&!Array.isArray(loaders)){return normalizeLoader(loaders);}var candidateLoaders=[];if(loaders){candidateLoaders=candidateLoaders.concat(loaders);}if(!(options!==null&&options!==void 0&&options.ignoreRegisteredLoaders)){var _candidateLoaders;(_candidateLoaders=candidateLoaders).push.apply(_candidateLoaders,_toConsumableArray(getRegisteredLoaders()));}normalizeLoaders(candidateLoaders);var loader=selectLoaderInternal(data,candidateLoaders,options,context);if(!loader&&!(options!==null&&options!==void 0&&options.nothrow)){throw new Error(getNoValidLoaderMessage(data));}return loader;}function selectLoaderInternal(data,loaders,options,context){var _getResourceUrlAndTyp=getResourceUrlAndType(data),url=_getResourceUrlAndTyp.url,type=_getResourceUrlAndTyp.type;var testUrl=url||(context===null||context===void 0?void 0:context.url);var loader=null;var reason='';if(options!==null&&options!==void 0&&options.mimeType){loader=findLoaderByMIMEType(loaders,options===null||options===void 0?void 0:options.mimeType);reason="match forced by supplied MIME type ".concat(options===null||options===void 0?void 0:options.mimeType);}loader=loader||findLoaderByUrl(loaders,testUrl);reason=reason||(loader?"matched url ".concat(testUrl):'');loader=loader||findLoaderByMIMEType(loaders,type);reason=reason||(loader?"matched MIME type ".concat(type):'');loader=loader||findLoaderByInitialBytes(loaders,data);reason=reason||(loader?"matched initial data ".concat(getFirstCharacters(data)):'');loader=loader||findLoaderByMIMEType(loaders,options===null||options===void 0?void 0:options.fallbackMimeType);reason=reason||(loader?"matched fallback MIME type ".concat(type):'');if(reason){var _loader;log.log(1,"selectLoader selected ".concat((_loader=loader)===null||_loader===void 0?void 0:_loader.name,": ").concat(reason,"."));}return loader;}function validHTTPResponse(data){if(data instanceof Response){if(data.status===204){return false;}}return true;}function getNoValidLoaderMessage(data){var _getResourceUrlAndTyp2=getResourceUrlAndType(data),url=_getResourceUrlAndTyp2.url,type=_getResourceUrlAndTyp2.type;var message='No valid loader found (';message+=url?"".concat(filename(url),", "):'no url provided, ';message+="MIME type: ".concat(type?"\"".concat(type,"\""):'not provided',", ");var firstCharacters=data?getFirstCharacters(data):'';message+=firstCharacters?" first bytes: \"".concat(firstCharacters,"\""):'first bytes: not available';message+=')';return message;}function normalizeLoaders(loaders){var _iterator11=_createForOfIteratorHelper(loaders),_step11;try{for(_iterator11.s();!(_step11=_iterator11.n()).done;){var loader=_step11.value;normalizeLoader(loader);}}catch(err){_iterator11.e(err);}finally{_iterator11.f();}}function findLoaderByUrl(loaders,url){var match=url&&EXT_PATTERN.exec(url);var extension=match&&match[1];return extension?findLoaderByExtension(loaders,extension):null;}function findLoaderByExtension(loaders,extension){extension=extension.toLowerCase();var _iterator12=_createForOfIteratorHelper(loaders),_step12;try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var loader=_step12.value;var _iterator13=_createForOfIteratorHelper(loader.extensions),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var loaderExtension=_step13.value;if(loaderExtension.toLowerCase()===extension){return loader;}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}}catch(err){_iterator12.e(err);}finally{_iterator12.f();}return null;}function findLoaderByMIMEType(loaders,mimeType){var _iterator14=_createForOfIteratorHelper(loaders),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var loader=_step14.value;if(loader.mimeTypes&&loader.mimeTypes.includes(mimeType)){return loader;}if(mimeType==="application/x.".concat(loader.id)){return loader;}}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}return null;}function findLoaderByInitialBytes(loaders,data){if(!data){return null;}var _iterator15=_createForOfIteratorHelper(loaders),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var loader=_step15.value;if(typeof data==='string'){if(testDataAgainstText(data,loader)){return loader;}}else if(ArrayBuffer.isView(data)){if(testDataAgainstBinary(data.buffer,data.byteOffset,loader)){return loader;}}else if(data instanceof ArrayBuffer){var byteOffset=0;if(testDataAgainstBinary(data,byteOffset,loader)){return loader;}}}}catch(err){_iterator15.e(err);}finally{_iterator15.f();}return null;}function testDataAgainstText(data,loader){if(loader.testText){return loader.testText(data);}var tests=Array.isArray(loader.tests)?loader.tests:[loader.tests];return tests.some(function(test){return data.startsWith(test);});}function testDataAgainstBinary(data,byteOffset,loader){var tests=Array.isArray(loader.tests)?loader.tests:[loader.tests];return tests.some(function(test){return testBinary(data,byteOffset,loader,test);});}function testBinary(data,byteOffset,loader,test){if(test instanceof ArrayBuffer){return compareArrayBuffers(test,data,test.byteLength);}switch(_typeof(test)){case'function':return test(data,loader);case'string':var magic=getMagicString$1(data,byteOffset,test.length);return test===magic;default:return false;}}function getFirstCharacters(data){var length=arguments.length>1&&arguments[1]!==undefined?arguments[1]:5;if(typeof data==='string'){return data.slice(0,length);}else if(ArrayBuffer.isView(data)){return getMagicString$1(data.buffer,data.byteOffset,length);}else if(data instanceof ArrayBuffer){var byteOffset=0;return getMagicString$1(data,byteOffset,length);}return'';}function getMagicString$1(arrayBuffer,byteOffset,length){if(arrayBuffer.byteLength1&&_args5[1]!==undefined?_args5[1]:{};_options$chunkSize=options.chunkSize,chunkSize=_options$chunkSize===void 0?DEFAULT_CHUNK_SIZE$1:_options$chunkSize;byteOffset=0;case 3:if(!(byteOffset2&&arguments[2]!==undefined?arguments[2]:null;if(previousContext){return previousContext;}var resolvedContext=_objectSpread({fetch:getFetchFunction(options,context)},context);if(!Array.isArray(resolvedContext.loaders)){resolvedContext.loaders=null;}return resolvedContext;}function getLoadersFromContext(loaders,context){if(!context&&loaders&&!Array.isArray(loaders)){return loaders;}var candidateLoaders;if(loaders){candidateLoaders=Array.isArray(loaders)?loaders:[loaders];}if(context&&context.loaders){var contextLoaders=Array.isArray(context.loaders)?context.loaders:[context.loaders];candidateLoaders=candidateLoaders?[].concat(_toConsumableArray(candidateLoaders),_toConsumableArray(contextLoaders)):contextLoaders;}return candidateLoaders&&candidateLoaders.length?candidateLoaders:null;}function parse$3(_x31,_x32,_x33,_x34){return _parse$.apply(this,arguments);}function _parse$(){_parse$=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee19(data,loaders,options,context){var _getResourceUrlAndTyp4,url,typedLoaders,candidateLoaders,loader;return _regeneratorRuntime().wrap(function _callee19$(_context23){while(1){switch(_context23.prev=_context23.next){case 0:assert$4(!context||_typeof(context)==='object');if(loaders&&!Array.isArray(loaders)&&!isLoaderObject(loaders)){context=undefined;options=loaders;loaders=undefined;}_context23.next=4;return data;case 4:data=_context23.sent;options=options||{};_getResourceUrlAndTyp4=getResourceUrlAndType(data),url=_getResourceUrlAndTyp4.url;typedLoaders=loaders;candidateLoaders=getLoadersFromContext(typedLoaders,context);_context23.next=11;return selectLoader(data,candidateLoaders,options);case 11:loader=_context23.sent;if(loader){_context23.next=14;break;}return _context23.abrupt("return",null);case 14:options=normalizeOptions(options,loader,candidateLoaders,url);context=getLoaderContext({url:url,parse:parse$3,loaders:candidateLoaders},options,context);_context23.next=18;return parseWithLoader(loader,data,options,context);case 18:return _context23.abrupt("return",_context23.sent);case 19:case"end":return _context23.stop();}}},_callee19);}));return _parse$.apply(this,arguments);}function parseWithLoader(_x35,_x36,_x37,_x38){return _parseWithLoader.apply(this,arguments);}function _parseWithLoader(){_parseWithLoader=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee20(loader,data,options,context){var response,ok,redirected,status,statusText,type,url,headers;return _regeneratorRuntime().wrap(function _callee20$(_context24){while(1){switch(_context24.prev=_context24.next){case 0:validateWorkerVersion(loader);if(isResponse(data)){response=data;ok=response.ok,redirected=response.redirected,status=response.status,statusText=response.statusText,type=response.type,url=response.url;headers=Object.fromEntries(response.headers.entries());context.response={headers:headers,ok:ok,redirected:redirected,status:status,statusText:statusText,type:type,url:url};}_context24.next=4;return getArrayBufferOrStringFromData(data,loader,options);case 4:data=_context24.sent;if(!(loader.parseTextSync&&typeof data==='string')){_context24.next=8;break;}options.dataType='text';return _context24.abrupt("return",loader.parseTextSync(data,options,context,loader));case 8:if(!canParseWithWorker(loader,options)){_context24.next=12;break;}_context24.next=11;return parseWithWorker(loader,data,options,context,parse$3);case 11:return _context24.abrupt("return",_context24.sent);case 12:if(!(loader.parseText&&typeof data==='string')){_context24.next=16;break;}_context24.next=15;return loader.parseText(data,options,context,loader);case 15:return _context24.abrupt("return",_context24.sent);case 16:if(!loader.parse){_context24.next=20;break;}_context24.next=19;return loader.parse(data,options,context,loader);case 19:return _context24.abrupt("return",_context24.sent);case 20:assert$4(!loader.parseSync);throw new Error("".concat(loader.id," loader - no parser found and worker is disabled"));case 22:case"end":return _context24.stop();}}},_callee20);}));return _parseWithLoader.apply(this,arguments);}var VERSION$5="3.2.6";var VERSION$4="3.2.6";var VERSION$3="3.2.6";var BASIS_CDN_ENCODER_WASM="https://unpkg.com/@loaders.gl/textures@".concat(VERSION$3,"/dist/libs/basis_encoder.wasm");var BASIS_CDN_ENCODER_JS="https://unpkg.com/@loaders.gl/textures@".concat(VERSION$3,"/dist/libs/basis_encoder.js");var loadBasisTranscoderPromise;function loadBasisTrascoderModule(_x39){return _loadBasisTrascoderModule.apply(this,arguments);}function _loadBasisTrascoderModule(){_loadBasisTrascoderModule=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee21(options){var modules;return _regeneratorRuntime().wrap(function _callee21$(_context25){while(1){switch(_context25.prev=_context25.next){case 0:modules=options.modules||{};if(!modules.basis){_context25.next=3;break;}return _context25.abrupt("return",modules.basis);case 3:loadBasisTranscoderPromise=loadBasisTranscoderPromise||loadBasisTrascoder(options);_context25.next=6;return loadBasisTranscoderPromise;case 6:return _context25.abrupt("return",_context25.sent);case 7:case"end":return _context25.stop();}}},_callee21);}));return _loadBasisTrascoderModule.apply(this,arguments);}function loadBasisTrascoder(_x40){return _loadBasisTrascoder.apply(this,arguments);}function _loadBasisTrascoder(){_loadBasisTrascoder=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee22(options){var BASIS,wasmBinary,_yield$Promise$all,_yield$Promise$all2;return _regeneratorRuntime().wrap(function _callee22$(_context26){while(1){switch(_context26.prev=_context26.next){case 0:BASIS=null;wasmBinary=null;_context26.t0=Promise;_context26.next=5;return loadLibrary('basis_transcoder.js','textures',options);case 5:_context26.t1=_context26.sent;_context26.next=8;return loadLibrary('basis_transcoder.wasm','textures',options);case 8:_context26.t2=_context26.sent;_context26.t3=[_context26.t1,_context26.t2];_context26.next=12;return _context26.t0.all.call(_context26.t0,_context26.t3);case 12:_yield$Promise$all=_context26.sent;_yield$Promise$all2=_slicedToArray(_yield$Promise$all,2);BASIS=_yield$Promise$all2[0];wasmBinary=_yield$Promise$all2[1];BASIS=BASIS||globalThis.BASIS;_context26.next=19;return initializeBasisTrascoderModule(BASIS,wasmBinary);case 19:return _context26.abrupt("return",_context26.sent);case 20:case"end":return _context26.stop();}}},_callee22);}));return _loadBasisTrascoder.apply(this,arguments);}function initializeBasisTrascoderModule(BasisModule,wasmBinary){var options={};if(wasmBinary){options.wasmBinary=wasmBinary;}return new Promise(function(resolve){BasisModule(options).then(function(module){var BasisFile=module.BasisFile,initializeBasis=module.initializeBasis;initializeBasis();resolve({BasisFile:BasisFile});});});}var loadBasisEncoderPromise;function loadBasisEncoderModule(_x41){return _loadBasisEncoderModule.apply(this,arguments);}function _loadBasisEncoderModule(){_loadBasisEncoderModule=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee23(options){var modules;return _regeneratorRuntime().wrap(function _callee23$(_context27){while(1){switch(_context27.prev=_context27.next){case 0:modules=options.modules||{};if(!modules.basisEncoder){_context27.next=3;break;}return _context27.abrupt("return",modules.basisEncoder);case 3:loadBasisEncoderPromise=loadBasisEncoderPromise||loadBasisEncoder(options);_context27.next=6;return loadBasisEncoderPromise;case 6:return _context27.abrupt("return",_context27.sent);case 7:case"end":return _context27.stop();}}},_callee23);}));return _loadBasisEncoderModule.apply(this,arguments);}function loadBasisEncoder(_x42){return _loadBasisEncoder.apply(this,arguments);}function _loadBasisEncoder(){_loadBasisEncoder=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee24(options){var BASIS_ENCODER,wasmBinary,_yield$Promise$all3,_yield$Promise$all4;return _regeneratorRuntime().wrap(function _callee24$(_context28){while(1){switch(_context28.prev=_context28.next){case 0:BASIS_ENCODER=null;wasmBinary=null;_context28.t0=Promise;_context28.next=5;return loadLibrary(BASIS_CDN_ENCODER_JS,'textures',options);case 5:_context28.t1=_context28.sent;_context28.next=8;return loadLibrary(BASIS_CDN_ENCODER_WASM,'textures',options);case 8:_context28.t2=_context28.sent;_context28.t3=[_context28.t1,_context28.t2];_context28.next=12;return _context28.t0.all.call(_context28.t0,_context28.t3);case 12:_yield$Promise$all3=_context28.sent;_yield$Promise$all4=_slicedToArray(_yield$Promise$all3,2);BASIS_ENCODER=_yield$Promise$all4[0];wasmBinary=_yield$Promise$all4[1];BASIS_ENCODER=BASIS_ENCODER||globalThis.BASIS;_context28.next=19;return initializeBasisEncoderModule(BASIS_ENCODER,wasmBinary);case 19:return _context28.abrupt("return",_context28.sent);case 20:case"end":return _context28.stop();}}},_callee24);}));return _loadBasisEncoder.apply(this,arguments);}function initializeBasisEncoderModule(BasisEncoderModule,wasmBinary){var options={};if(wasmBinary){options.wasmBinary=wasmBinary;}return new Promise(function(resolve){BasisEncoderModule(options).then(function(module){var BasisFile=module.BasisFile,KTX2File=module.KTX2File,initializeBasis=module.initializeBasis,BasisEncoder=module.BasisEncoder;initializeBasis();resolve({BasisFile:BasisFile,KTX2File:KTX2File,BasisEncoder:BasisEncoder});});});}var GL_EXTENSIONS_CONSTANTS={COMPRESSED_RGB_S3TC_DXT1_EXT:0x83f0,COMPRESSED_RGBA_S3TC_DXT1_EXT:0x83f1,COMPRESSED_RGBA_S3TC_DXT3_EXT:0x83f2,COMPRESSED_RGBA_S3TC_DXT5_EXT:0x83f3,COMPRESSED_R11_EAC:0x9270,COMPRESSED_SIGNED_R11_EAC:0x9271,COMPRESSED_RG11_EAC:0x9272,COMPRESSED_SIGNED_RG11_EAC:0x9273,COMPRESSED_RGB8_ETC2:0x9274,COMPRESSED_RGBA8_ETC2_EAC:0x9275,COMPRESSED_SRGB8_ETC2:0x9276,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:0x9277,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:0x9278,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:0x9279,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:0x8c00,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:0x8c02,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:0x8c01,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:0x8c03,COMPRESSED_RGB_ETC1_WEBGL:0x8d64,COMPRESSED_RGB_ATC_WEBGL:0x8c92,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:0x8c93,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:0x87ee,COMPRESSED_RGBA_ASTC_4X4_KHR:0x93b0,COMPRESSED_RGBA_ASTC_5X4_KHR:0x93b1,COMPRESSED_RGBA_ASTC_5X5_KHR:0x93b2,COMPRESSED_RGBA_ASTC_6X5_KHR:0x93b3,COMPRESSED_RGBA_ASTC_6X6_KHR:0x93b4,COMPRESSED_RGBA_ASTC_8X5_KHR:0x93b5,COMPRESSED_RGBA_ASTC_8X6_KHR:0x93b6,COMPRESSED_RGBA_ASTC_8X8_KHR:0x93b7,COMPRESSED_RGBA_ASTC_10X5_KHR:0x93b8,COMPRESSED_RGBA_ASTC_10X6_KHR:0x93b9,COMPRESSED_RGBA_ASTC_10X8_KHR:0x93ba,COMPRESSED_RGBA_ASTC_10X10_KHR:0x93bb,COMPRESSED_RGBA_ASTC_12X10_KHR:0x93bc,COMPRESSED_RGBA_ASTC_12X12_KHR:0x93bd,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:0x93d0,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:0x93d1,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:0x93d2,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:0x93d3,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:0x93d4,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:0x93d5,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:0x93d6,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:0x93d7,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:0x93d8,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:0x93d9,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:0x93da,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:0x93db,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:0x93dc,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:0x93dd,COMPRESSED_RED_RGTC1_EXT:0x8dbb,COMPRESSED_SIGNED_RED_RGTC1_EXT:0x8dbc,COMPRESSED_RED_GREEN_RGTC2_EXT:0x8dbd,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:0x8dbe,COMPRESSED_SRGB_S3TC_DXT1_EXT:0x8c4c,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:0x8c4d,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:0x8c4e,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:0x8c4f};var BROWSER_PREFIXES=['','WEBKIT_','MOZ_'];var WEBGL_EXTENSIONS={WEBGL_compressed_texture_s3tc:'dxt',WEBGL_compressed_texture_s3tc_srgb:'dxt-srgb',WEBGL_compressed_texture_etc1:'etc1',WEBGL_compressed_texture_etc:'etc2',WEBGL_compressed_texture_pvrtc:'pvrtc',WEBGL_compressed_texture_atc:'atc',WEBGL_compressed_texture_astc:'astc',EXT_texture_compression_rgtc:'rgtc'};var formats=null;function getSupportedGPUTextureFormats(gl){if(!formats){gl=gl||getWebGLContext()||undefined;formats=new Set();var _iterator16=_createForOfIteratorHelper(BROWSER_PREFIXES),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var prefix=_step16.value;for(var extension in WEBGL_EXTENSIONS){if(gl&&gl.getExtension("".concat(prefix).concat(extension))){var gpuTextureFormat=WEBGL_EXTENSIONS[extension];formats.add(gpuTextureFormat);}}}}catch(err){_iterator16.e(err);}finally{_iterator16.f();}}return formats;}function getWebGLContext(){try{var _canvas6=document.createElement('canvas');return _canvas6.getContext('webgl');}catch(error){return null;}}var n,i,s,a,r,o,l,f;!function(t){t[t.NONE=0]="NONE",t[t.BASISLZ=1]="BASISLZ",t[t.ZSTD=2]="ZSTD",t[t.ZLIB=3]="ZLIB";}(n||(n={})),function(t){t[t.BASICFORMAT=0]="BASICFORMAT";}(i||(i={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.ETC1S=163]="ETC1S",t[t.UASTC=166]="UASTC";}(s||(s={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.SRGB=1]="SRGB";}(a||(a={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.LINEAR=1]="LINEAR",t[t.SRGB=2]="SRGB",t[t.ITU=3]="ITU",t[t.NTSC=4]="NTSC",t[t.SLOG=5]="SLOG",t[t.SLOG2=6]="SLOG2";}(r||(r={})),function(t){t[t.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",t[t.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED";}(o||(o={})),function(t){t[t.RGB=0]="RGB",t[t.RRR=3]="RRR",t[t.GGG=4]="GGG",t[t.AAA=15]="AAA";}(l||(l={})),function(t){t[t.RGB=0]="RGB",t[t.RGBA=3]="RGBA",t[t.RRR=4]="RRR",t[t.RRRG=5]="RRRG";}(f||(f={}));var KTX2_ID=[0xab,0x4b,0x54,0x58,0x20,0x32,0x30,0xbb,0x0d,0x0a,0x1a,0x0a];function isKTX(data){var id=new Uint8Array(data);var notKTX=id.byteLength1&&_args27[1]!==undefined?_args27[1]:null;if(isEmptyObject(imagebitmapOptions)||!imagebitmapOptionsSupported){imagebitmapOptions=null;}if(!imagebitmapOptions){_context33.next=13;break;}_context33.prev=3;_context33.next=6;return createImageBitmap(blob,imagebitmapOptions);case 6:return _context33.abrupt("return",_context33.sent);case 9:_context33.prev=9;_context33.t0=_context33["catch"](3);console.warn(_context33.t0);imagebitmapOptionsSupported=false;case 13:_context33.next=15;return createImageBitmap(blob);case 15:return _context33.abrupt("return",_context33.sent);case 16:case"end":return _context33.stop();}}},_callee29,null,[[3,9]]);}));return _safeCreateImageBitmap.apply(this,arguments);}function isEmptyObject(object){for(var key in object||EMPTY_OBJECT){return false;}return true;}var BIG_ENDIAN=false;var LITTLE_ENDIAN=true;function getBinaryImageMetadata(binaryData){var dataView=toDataView(binaryData);return getPngMetadata(dataView)||getJpegMetadata(dataView)||getGifMetadata(dataView)||getBmpMetadata(dataView);}function getPngMetadata(binaryData){var dataView=toDataView(binaryData);var isPng=dataView.byteLength>=24&&dataView.getUint32(0,BIG_ENDIAN)===0x89504e47;if(!isPng){return null;}return{mimeType:'image/png',width:dataView.getUint32(16,BIG_ENDIAN),height:dataView.getUint32(20,BIG_ENDIAN)};}function getGifMetadata(binaryData){var dataView=toDataView(binaryData);var isGif=dataView.byteLength>=10&&dataView.getUint32(0,BIG_ENDIAN)===0x47494638;if(!isGif){return null;}return{mimeType:'image/gif',width:dataView.getUint16(6,LITTLE_ENDIAN),height:dataView.getUint16(8,LITTLE_ENDIAN)};}function getBmpMetadata(binaryData){var dataView=toDataView(binaryData);var isBmp=dataView.byteLength>=14&&dataView.getUint16(0,BIG_ENDIAN)===0x424d&&dataView.getUint32(2,LITTLE_ENDIAN)===dataView.byteLength;if(!isBmp){return null;}return{mimeType:'image/bmp',width:dataView.getUint32(18,LITTLE_ENDIAN),height:dataView.getUint32(22,LITTLE_ENDIAN)};}function getJpegMetadata(binaryData){var dataView=toDataView(binaryData);var isJpeg=dataView.byteLength>=3&&dataView.getUint16(0,BIG_ENDIAN)===0xffd8&&dataView.getUint8(2)===0xff;if(!isJpeg){return null;}var _getJpegMarkers=getJpegMarkers(),tableMarkers=_getJpegMarkers.tableMarkers,sofMarkers=_getJpegMarkers.sofMarkers;var i=2;while(i+9=0&&byteLength<=bufferView.byteLength);return{ArrayType:ArrayType,length:length,byteLength:byteLength};}var DEFAULT_GLTF_JSON={asset:{version:'2.0',generator:'loaders.gl'},buffers:[]};var GLTFScenegraph=/*#__PURE__*/function(){function GLTFScenegraph(gltf){_classCallCheck(this,GLTFScenegraph);_defineProperty(this,"gltf",void 0);_defineProperty(this,"sourceBuffers",void 0);_defineProperty(this,"byteLength",void 0);this.gltf=gltf||{json:_objectSpread({},DEFAULT_GLTF_JSON),buffers:[]};this.sourceBuffers=[];this.byteLength=0;if(this.gltf.buffers&&this.gltf.buffers[0]){this.byteLength=this.gltf.buffers[0].byteLength;this.sourceBuffers=[this.gltf.buffers[0]];}}_createClass(GLTFScenegraph,[{key:"json",get:function get(){return this.gltf.json;}},{key:"getApplicationData",value:function getApplicationData(key){var data=this.json[key];return data;}},{key:"getExtraData",value:function getExtraData(key){var extras=this.json.extras||{};return extras[key];}},{key:"getExtension",value:function getExtension(extensionName){var isExtension=this.getUsedExtensions().find(function(name){return name===extensionName;});var extensions=this.json.extensions||{};return isExtension?extensions[extensionName]||true:null;}},{key:"getRequiredExtension",value:function getRequiredExtension(extensionName){var isRequired=this.getRequiredExtensions().find(function(name){return name===extensionName;});return isRequired?this.getExtension(extensionName):null;}},{key:"getRequiredExtensions",value:function getRequiredExtensions(){return this.json.extensionsRequired||[];}},{key:"getUsedExtensions",value:function getUsedExtensions(){return this.json.extensionsUsed||[];}},{key:"getObjectExtension",value:function getObjectExtension(object,extensionName){var extensions=object.extensions||{};return extensions[extensionName];}},{key:"getScene",value:function getScene(index){return this.getObject('scenes',index);}},{key:"getNode",value:function getNode(index){return this.getObject('nodes',index);}},{key:"getSkin",value:function getSkin(index){return this.getObject('skins',index);}},{key:"getMesh",value:function getMesh(index){return this.getObject('meshes',index);}},{key:"getMaterial",value:function getMaterial(index){return this.getObject('materials',index);}},{key:"getAccessor",value:function getAccessor(index){return this.getObject('accessors',index);}},{key:"getTexture",value:function getTexture(index){return this.getObject('textures',index);}},{key:"getSampler",value:function getSampler(index){return this.getObject('samplers',index);}},{key:"getImage",value:function getImage(index){return this.getObject('images',index);}},{key:"getBufferView",value:function getBufferView(index){return this.getObject('bufferViews',index);}},{key:"getBuffer",value:function getBuffer(index){return this.getObject('buffers',index);}},{key:"getObject",value:function getObject(array,index){if(_typeof(index)==='object'){return index;}var object=this.json[array]&&this.json[array][index];if(!object){throw new Error("glTF file error: Could not find ".concat(array,"[").concat(index,"]"));}return object;}},{key:"getTypedArrayForBufferView",value:function getTypedArrayForBufferView(bufferView){bufferView=this.getBufferView(bufferView);var bufferIndex=bufferView.buffer;var binChunk=this.gltf.buffers[bufferIndex];assert$1(binChunk);var byteOffset=(bufferView.byteOffset||0)+binChunk.byteOffset;return new Uint8Array(binChunk.arrayBuffer,byteOffset,bufferView.byteLength);}},{key:"getTypedArrayForAccessor",value:function getTypedArrayForAccessor(accessor){accessor=this.getAccessor(accessor);var bufferView=this.getBufferView(accessor.bufferView);var buffer=this.getBuffer(bufferView.buffer);var arrayBuffer=buffer.data;var _getAccessorArrayType=getAccessorArrayTypeAndLength(accessor,bufferView),ArrayType=_getAccessorArrayType.ArrayType,length=_getAccessorArrayType.length;var byteOffset=bufferView.byteOffset+accessor.byteOffset;return new ArrayType(arrayBuffer,byteOffset,length);}},{key:"getTypedArrayForImageData",value:function getTypedArrayForImageData(image){image=this.getAccessor(image);var bufferView=this.getBufferView(image.bufferView);var buffer=this.getBuffer(bufferView.buffer);var arrayBuffer=buffer.data;var byteOffset=bufferView.byteOffset||0;return new Uint8Array(arrayBuffer,byteOffset,bufferView.byteLength);}},{key:"addApplicationData",value:function addApplicationData(key,data){this.json[key]=data;return this;}},{key:"addExtraData",value:function addExtraData(key,data){this.json.extras=this.json.extras||{};this.json.extras[key]=data;return this;}},{key:"addObjectExtension",value:function addObjectExtension(object,extensionName,data){object.extensions=object.extensions||{};object.extensions[extensionName]=data;this.registerUsedExtension(extensionName);return this;}},{key:"setObjectExtension",value:function setObjectExtension(object,extensionName,data){var extensions=object.extensions||{};extensions[extensionName]=data;}},{key:"removeObjectExtension",value:function removeObjectExtension(object,extensionName){var extensions=object.extensions||{};var extension=extensions[extensionName];delete extensions[extensionName];return extension;}},{key:"addExtension",value:function addExtension(extensionName){var extensionData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};assert$1(extensionData);this.json.extensions=this.json.extensions||{};this.json.extensions[extensionName]=extensionData;this.registerUsedExtension(extensionName);return extensionData;}},{key:"addRequiredExtension",value:function addRequiredExtension(extensionName){var extensionData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};assert$1(extensionData);this.addExtension(extensionName,extensionData);this.registerRequiredExtension(extensionName);return extensionData;}},{key:"registerUsedExtension",value:function registerUsedExtension(extensionName){this.json.extensionsUsed=this.json.extensionsUsed||[];if(!this.json.extensionsUsed.find(function(ext){return ext===extensionName;})){this.json.extensionsUsed.push(extensionName);}}},{key:"registerRequiredExtension",value:function registerRequiredExtension(extensionName){this.registerUsedExtension(extensionName);this.json.extensionsRequired=this.json.extensionsRequired||[];if(!this.json.extensionsRequired.find(function(ext){return ext===extensionName;})){this.json.extensionsRequired.push(extensionName);}}},{key:"removeExtension",value:function removeExtension(extensionName){if(this.json.extensionsRequired){this._removeStringFromArray(this.json.extensionsRequired,extensionName);}if(this.json.extensionsUsed){this._removeStringFromArray(this.json.extensionsUsed,extensionName);}if(this.json.extensions){delete this.json.extensions[extensionName];}}},{key:"setDefaultScene",value:function setDefaultScene(sceneIndex){this.json.scene=sceneIndex;}},{key:"addScene",value:function addScene(scene){var nodeIndices=scene.nodeIndices;this.json.scenes=this.json.scenes||[];this.json.scenes.push({nodes:nodeIndices});return this.json.scenes.length-1;}},{key:"addNode",value:function addNode(node){var meshIndex=node.meshIndex,matrix=node.matrix;this.json.nodes=this.json.nodes||[];var nodeData={mesh:meshIndex};if(matrix){nodeData.matrix=matrix;}this.json.nodes.push(nodeData);return this.json.nodes.length-1;}},{key:"addMesh",value:function addMesh(mesh){var attributes=mesh.attributes,indices=mesh.indices,material=mesh.material,_mesh$mode=mesh.mode,mode=_mesh$mode===void 0?4:_mesh$mode;var accessors=this._addAttributes(attributes);var glTFMesh={primitives:[{attributes:accessors,mode:mode}]};if(indices){var indicesAccessor=this._addIndices(indices);glTFMesh.primitives[0].indices=indicesAccessor;}if(Number.isFinite(material)){glTFMesh.primitives[0].material=material;}this.json.meshes=this.json.meshes||[];this.json.meshes.push(glTFMesh);return this.json.meshes.length-1;}},{key:"addPointCloud",value:function addPointCloud(attributes){var accessorIndices=this._addAttributes(attributes);var glTFMesh={primitives:[{attributes:accessorIndices,mode:0}]};this.json.meshes=this.json.meshes||[];this.json.meshes.push(glTFMesh);return this.json.meshes.length-1;}},{key:"addImage",value:function addImage(imageData,mimeTypeOpt){var metadata=getBinaryImageMetadata(imageData);var mimeType=mimeTypeOpt||(metadata===null||metadata===void 0?void 0:metadata.mimeType);var bufferViewIndex=this.addBufferView(imageData);var glTFImage={bufferView:bufferViewIndex,mimeType:mimeType};this.json.images=this.json.images||[];this.json.images.push(glTFImage);return this.json.images.length-1;}},{key:"addBufferView",value:function addBufferView(buffer){var byteLength=buffer.byteLength;assert$1(Number.isFinite(byteLength));this.sourceBuffers=this.sourceBuffers||[];this.sourceBuffers.push(buffer);var glTFBufferView={buffer:0,byteOffset:this.byteLength,byteLength:byteLength};this.byteLength+=padToNBytes(byteLength,4);this.json.bufferViews=this.json.bufferViews||[];this.json.bufferViews.push(glTFBufferView);return this.json.bufferViews.length-1;}},{key:"addAccessor",value:function addAccessor(bufferViewIndex,accessor){var glTFAccessor={bufferView:bufferViewIndex,type:getAccessorTypeFromSize(accessor.size),componentType:accessor.componentType,count:accessor.count,max:accessor.max,min:accessor.min};this.json.accessors=this.json.accessors||[];this.json.accessors.push(glTFAccessor);return this.json.accessors.length-1;}},{key:"addBinaryBuffer",value:function addBinaryBuffer(sourceBuffer){var accessor=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{size:3};var bufferViewIndex=this.addBufferView(sourceBuffer);var minMax={min:accessor.min,max:accessor.max};if(!minMax.min||!minMax.max){minMax=this._getAccessorMinMax(sourceBuffer,accessor.size);}var accessorDefaults={size:accessor.size,componentType:getComponentTypeFromArray(sourceBuffer),count:Math.round(sourceBuffer.length/accessor.size),min:minMax.min,max:minMax.max};return this.addAccessor(bufferViewIndex,Object.assign(accessorDefaults,accessor));}},{key:"addTexture",value:function addTexture(texture){var imageIndex=texture.imageIndex;var glTFTexture={source:imageIndex};this.json.textures=this.json.textures||[];this.json.textures.push(glTFTexture);return this.json.textures.length-1;}},{key:"addMaterial",value:function addMaterial(pbrMaterialInfo){this.json.materials=this.json.materials||[];this.json.materials.push(pbrMaterialInfo);return this.json.materials.length-1;}},{key:"createBinaryChunk",value:function createBinaryChunk(){var _this$json,_this$json$buffers;this.gltf.buffers=[];var totalByteLength=this.byteLength;var arrayBuffer=new ArrayBuffer(totalByteLength);var targetArray=new Uint8Array(arrayBuffer);var dstByteOffset=0;var _iterator17=_createForOfIteratorHelper(this.sourceBuffers||[]),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var sourceBuffer=_step17.value;dstByteOffset=copyToArray(sourceBuffer,targetArray,dstByteOffset);}}catch(err){_iterator17.e(err);}finally{_iterator17.f();}if((_this$json=this.json)!==null&&_this$json!==void 0&&(_this$json$buffers=_this$json.buffers)!==null&&_this$json$buffers!==void 0&&_this$json$buffers[0]){this.json.buffers[0].byteLength=totalByteLength;}else{this.json.buffers=[{byteLength:totalByteLength}];}this.gltf.binary=arrayBuffer;this.sourceBuffers=[arrayBuffer];}},{key:"_removeStringFromArray",value:function _removeStringFromArray(array,string){var found=true;while(found){var index=array.indexOf(string);if(index>-1){array.splice(index,1);}else{found=false;}}}},{key:"_addAttributes",value:function _addAttributes(){var attributes=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var result={};for(var attributeKey in attributes){var attributeData=attributes[attributeKey];var attrName=this._getGltfAttributeName(attributeKey);var accessor=this.addBinaryBuffer(attributeData.value,attributeData);result[attrName]=accessor;}return result;}},{key:"_addIndices",value:function _addIndices(indices){return this.addBinaryBuffer(indices,{size:1});}},{key:"_getGltfAttributeName",value:function _getGltfAttributeName(attributeName){switch(attributeName.toLowerCase()){case'position':case'positions':case'vertices':return'POSITION';case'normal':case'normals':return'NORMAL';case'color':case'colors':return'COLOR_0';case'texcoord':case'texcoords':return'TEXCOORD_0';default:return attributeName;}}},{key:"_getAccessorMinMax",value:function _getAccessorMinMax(buffer,size){var result={min:null,max:null};if(buffer.length5&&_args30[5]!==undefined?_args30[5]:'NONE';_context36.next=3;return loadWasmInstance();case 3:instance=_context36.sent;decode$5(instance,instance.exports[DECODERS[mode]],target,count,size,source,instance.exports[FILTERS[filter||'NONE']]);case 5:case"end":return _context36.stop();}}},_callee32);}));return _meshoptDecodeGltfBuffer.apply(this,arguments);}var wasmPromise;function loadWasmInstance(){return _loadWasmInstance.apply(this,arguments);}function _loadWasmInstance(){_loadWasmInstance=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee33(){return _regeneratorRuntime().wrap(function _callee33$(_context37){while(1){switch(_context37.prev=_context37.next){case 0:if(!wasmPromise){wasmPromise=loadWasmModule();}return _context37.abrupt("return",wasmPromise);case 2:case"end":return _context37.stop();}}},_callee33);}));return _loadWasmInstance.apply(this,arguments);}function loadWasmModule(){return _loadWasmModule.apply(this,arguments);}function _loadWasmModule(){_loadWasmModule=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee34(){var wasm,result;return _regeneratorRuntime().wrap(function _callee34$(_context38){while(1){switch(_context38.prev=_context38.next){case 0:wasm=wasm_base;if(WebAssembly.validate(detector)){wasm=wasm_simd;console.log('Warning: meshopt_decoder is using experimental SIMD support');}_context38.next=4;return WebAssembly.instantiate(unpack(wasm),{});case 4:result=_context38.sent;_context38.next=7;return result.instance.exports.__wasm_call_ctors();case 7:return _context38.abrupt("return",result.instance);case 8:case"end":return _context38.stop();}}},_callee34);}));return _loadWasmModule.apply(this,arguments);}function unpack(data){var result=new Uint8Array(data.length);for(var _i499=0;_i49996?ch-71:ch>64?ch-65:ch>47?ch+4:ch>46?63:62;}var write=0;for(var _i500=0;_i500maxX?x:maxX;maxY=y>maxY?y:maxY;maxZ=_z4>maxZ?_z4:maxZ;}return[[minX,minY,minZ],[maxX,maxY,maxZ]];}function assert(condition,message){if(!condition){throw new Error(message||'loader assertion failed.');}}var Schema=/*#__PURE__*/function(){function Schema(fields,metadata){_classCallCheck(this,Schema);_defineProperty(this,"fields",void 0);_defineProperty(this,"metadata",void 0);assert(Array.isArray(fields));checkNames(fields);this.fields=fields;this.metadata=metadata||new Map();}_createClass(Schema,[{key:"compareTo",value:function compareTo(other){if(this.metadata!==other.metadata){return false;}if(this.fields.length!==other.fields.length){return false;}for(var _i502=0;_i5022&&arguments[2]!==undefined?arguments[2]:false;var metadata=arguments.length>3&&arguments[3]!==undefined?arguments[3]:new Map();_classCallCheck(this,Field);_defineProperty(this,"name",void 0);_defineProperty(this,"type",void 0);_defineProperty(this,"nullable",void 0);_defineProperty(this,"metadata",void 0);this.name=name;this.type=type;this.nullable=nullable;this.metadata=metadata;}_createClass(Field,[{key:"typeId",get:function get(){return this.type&&this.type.typeId;}},{key:"clone",value:function clone(){return new Field(this.name,this.type,this.nullable,this.metadata);}},{key:"compareTo",value:function compareTo(other){return this.name===other.name&&this.type===other.type&&this.nullable===other.nullable&&this.metadata===other.metadata;}},{key:"toString",value:function toString(){return"".concat(this.type).concat(this.nullable?', nullable':'').concat(this.metadata?", metadata: ".concat(this.metadata):'');}}]);return Field;}();var Type;(function(Type){Type[Type["NONE"]=0]="NONE";Type[Type["Null"]=1]="Null";Type[Type["Int"]=2]="Int";Type[Type["Float"]=3]="Float";Type[Type["Binary"]=4]="Binary";Type[Type["Utf8"]=5]="Utf8";Type[Type["Bool"]=6]="Bool";Type[Type["Decimal"]=7]="Decimal";Type[Type["Date"]=8]="Date";Type[Type["Time"]=9]="Time";Type[Type["Timestamp"]=10]="Timestamp";Type[Type["Interval"]=11]="Interval";Type[Type["List"]=12]="List";Type[Type["Struct"]=13]="Struct";Type[Type["Union"]=14]="Union";Type[Type["FixedSizeBinary"]=15]="FixedSizeBinary";Type[Type["FixedSizeList"]=16]="FixedSizeList";Type[Type["Map"]=17]="Map";Type[Type["Dictionary"]=-1]="Dictionary";Type[Type["Int8"]=-2]="Int8";Type[Type["Int16"]=-3]="Int16";Type[Type["Int32"]=-4]="Int32";Type[Type["Int64"]=-5]="Int64";Type[Type["Uint8"]=-6]="Uint8";Type[Type["Uint16"]=-7]="Uint16";Type[Type["Uint32"]=-8]="Uint32";Type[Type["Uint64"]=-9]="Uint64";Type[Type["Float16"]=-10]="Float16";Type[Type["Float32"]=-11]="Float32";Type[Type["Float64"]=-12]="Float64";Type[Type["DateDay"]=-13]="DateDay";Type[Type["DateMillisecond"]=-14]="DateMillisecond";Type[Type["TimestampSecond"]=-15]="TimestampSecond";Type[Type["TimestampMillisecond"]=-16]="TimestampMillisecond";Type[Type["TimestampMicrosecond"]=-17]="TimestampMicrosecond";Type[Type["TimestampNanosecond"]=-18]="TimestampNanosecond";Type[Type["TimeSecond"]=-19]="TimeSecond";Type[Type["TimeMillisecond"]=-20]="TimeMillisecond";Type[Type["TimeMicrosecond"]=-21]="TimeMicrosecond";Type[Type["TimeNanosecond"]=-22]="TimeNanosecond";Type[Type["DenseUnion"]=-23]="DenseUnion";Type[Type["SparseUnion"]=-24]="SparseUnion";Type[Type["IntervalDayTime"]=-25]="IntervalDayTime";Type[Type["IntervalYearMonth"]=-26]="IntervalYearMonth";})(Type||(Type={}));var _Symbol$toStringTag,_Symbol$toStringTag2,_Symbol$toStringTag7;var DataType=/*#__PURE__*/function(){function DataType(){_classCallCheck(this,DataType);}_createClass(DataType,[{key:"typeId",get:function get(){return Type.NONE;}},{key:"compareTo",value:function compareTo(other){return this===other;}}],[{key:"isNull",value:function isNull(x){return x&&x.typeId===Type.Null;}},{key:"isInt",value:function isInt(x){return x&&x.typeId===Type.Int;}},{key:"isFloat",value:function isFloat(x){return x&&x.typeId===Type.Float;}},{key:"isBinary",value:function isBinary(x){return x&&x.typeId===Type.Binary;}},{key:"isUtf8",value:function isUtf8(x){return x&&x.typeId===Type.Utf8;}},{key:"isBool",value:function isBool(x){return x&&x.typeId===Type.Bool;}},{key:"isDecimal",value:function isDecimal(x){return x&&x.typeId===Type.Decimal;}},{key:"isDate",value:function isDate(x){return x&&x.typeId===Type.Date;}},{key:"isTime",value:function isTime(x){return x&&x.typeId===Type.Time;}},{key:"isTimestamp",value:function isTimestamp(x){return x&&x.typeId===Type.Timestamp;}},{key:"isInterval",value:function isInterval(x){return x&&x.typeId===Type.Interval;}},{key:"isList",value:function isList(x){return x&&x.typeId===Type.List;}},{key:"isStruct",value:function isStruct(x){return x&&x.typeId===Type.Struct;}},{key:"isUnion",value:function isUnion(x){return x&&x.typeId===Type.Union;}},{key:"isFixedSizeBinary",value:function isFixedSizeBinary(x){return x&&x.typeId===Type.FixedSizeBinary;}},{key:"isFixedSizeList",value:function isFixedSizeList(x){return x&&x.typeId===Type.FixedSizeList;}},{key:"isMap",value:function isMap(x){return x&&x.typeId===Type.Map;}},{key:"isDictionary",value:function isDictionary(x){return x&&x.typeId===Type.Dictionary;}}]);return DataType;}();_Symbol$toStringTag=Symbol.toStringTag;var Int=/*#__PURE__*/function(_DataType,_Symbol$toStringTag3){_inherits(Int,_DataType);var _super140=_createSuper(Int);function Int(isSigned,bitWidth){var _this117;_classCallCheck(this,Int);_this117=_super140.call(this);_defineProperty(_assertThisInitialized(_this117),"isSigned",void 0);_defineProperty(_assertThisInitialized(_this117),"bitWidth",void 0);_this117.isSigned=isSigned;_this117.bitWidth=bitWidth;return _this117;}_createClass(Int,[{key:"typeId",get:function get(){return Type.Int;}},{key:_Symbol$toStringTag3,get:function get(){return'Int';}},{key:"toString",value:function toString(){return"".concat(this.isSigned?'I':'Ui',"nt").concat(this.bitWidth);}}]);return Int;}(DataType,_Symbol$toStringTag);var Int8=/*#__PURE__*/function(_Int){_inherits(Int8,_Int);var _super141=_createSuper(Int8);function Int8(){_classCallCheck(this,Int8);return _super141.call(this,true,8);}return _createClass(Int8);}(Int);var Int16=/*#__PURE__*/function(_Int2){_inherits(Int16,_Int2);var _super142=_createSuper(Int16);function Int16(){_classCallCheck(this,Int16);return _super142.call(this,true,16);}return _createClass(Int16);}(Int);var Int32=/*#__PURE__*/function(_Int3){_inherits(Int32,_Int3);var _super143=_createSuper(Int32);function Int32(){_classCallCheck(this,Int32);return _super143.call(this,true,32);}return _createClass(Int32);}(Int);var Uint8=/*#__PURE__*/function(_Int4){_inherits(Uint8,_Int4);var _super144=_createSuper(Uint8);function Uint8(){_classCallCheck(this,Uint8);return _super144.call(this,false,8);}return _createClass(Uint8);}(Int);var Uint16=/*#__PURE__*/function(_Int5){_inherits(Uint16,_Int5);var _super145=_createSuper(Uint16);function Uint16(){_classCallCheck(this,Uint16);return _super145.call(this,false,16);}return _createClass(Uint16);}(Int);var Uint32=/*#__PURE__*/function(_Int6){_inherits(Uint32,_Int6);var _super146=_createSuper(Uint32);function Uint32(){_classCallCheck(this,Uint32);return _super146.call(this,false,32);}return _createClass(Uint32);}(Int);var Precision={HALF:16,SINGLE:32,DOUBLE:64};_Symbol$toStringTag2=Symbol.toStringTag;var Float=/*#__PURE__*/function(_DataType2,_Symbol$toStringTag4){_inherits(Float,_DataType2);var _super147=_createSuper(Float);function Float(precision){var _this118;_classCallCheck(this,Float);_this118=_super147.call(this);_defineProperty(_assertThisInitialized(_this118),"precision",void 0);_this118.precision=precision;return _this118;}_createClass(Float,[{key:"typeId",get:function get(){return Type.Float;}},{key:_Symbol$toStringTag4,get:function get(){return'Float';}},{key:"toString",value:function toString(){return"Float".concat(this.precision);}}]);return Float;}(DataType,_Symbol$toStringTag2);var Float32=/*#__PURE__*/function(_Float){_inherits(Float32,_Float);var _super148=_createSuper(Float32);function Float32(){_classCallCheck(this,Float32);return _super148.call(this,Precision.SINGLE);}return _createClass(Float32);}(Float);var Float64=/*#__PURE__*/function(_Float2){_inherits(Float64,_Float2);var _super149=_createSuper(Float64);function Float64(){_classCallCheck(this,Float64);return _super149.call(this,Precision.DOUBLE);}return _createClass(Float64);}(Float);_Symbol$toStringTag7=Symbol.toStringTag;var FixedSizeList=/*#__PURE__*/function(_DataType3,_Symbol$toStringTag5){_inherits(FixedSizeList,_DataType3);var _super150=_createSuper(FixedSizeList);function FixedSizeList(listSize,child){var _this119;_classCallCheck(this,FixedSizeList);_this119=_super150.call(this);_defineProperty(_assertThisInitialized(_this119),"listSize",void 0);_defineProperty(_assertThisInitialized(_this119),"children",void 0);_this119.listSize=listSize;_this119.children=[child];return _this119;}_createClass(FixedSizeList,[{key:"typeId",get:function get(){return Type.FixedSizeList;}},{key:"valueType",get:function get(){return this.children[0].type;}},{key:"valueField",get:function get(){return this.children[0];}},{key:_Symbol$toStringTag5,get:function get(){return'FixedSizeList';}},{key:"toString",value:function toString(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">");}}]);return FixedSizeList;}(DataType,_Symbol$toStringTag7);function getArrowTypeFromTypedArray(array){switch(array.constructor){case Int8Array:return new Int8();case Uint8Array:return new Uint8();case Int16Array:return new Int16();case Uint16Array:return new Uint16();case Int32Array:return new Int32();case Uint32Array:return new Uint32();case Float32Array:return new Float32();case Float64Array:return new Float64();default:throw new Error('array type not supported');}}function deduceMeshField(attributeName,attribute,optionalMetadata){var type=getArrowTypeFromTypedArray(attribute.value);var metadata=optionalMetadata?optionalMetadata:makeMeshAttributeMetadata(attribute);var field=new Field(attributeName,new FixedSizeList(attribute.size,new Field('value',type)),false,metadata);return field;}function makeMeshAttributeMetadata(attribute){var result=new Map();if('byteOffset'in attribute){result.set('byteOffset',attribute.byteOffset.toString(10));}if('byteStride'in attribute){result.set('byteStride',attribute.byteStride.toString(10));}if('normalized'in attribute){result.set('normalized',attribute.normalized.toString());}return result;}function getDracoSchema(attributes,loaderData,indices){var metadataMap=makeMetadata(loaderData.metadata);var fields=[];var namedLoaderDataAttributes=transformAttributesLoaderData(loaderData.attributes);for(var attributeName in attributes){var attribute=attributes[attributeName];var field=getArrowFieldFromAttribute(attributeName,attribute,namedLoaderDataAttributes[attributeName]);fields.push(field);}if(indices){var indicesField=getArrowFieldFromAttribute('indices',indices);fields.push(indicesField);}return new Schema(fields,metadataMap);}function transformAttributesLoaderData(loaderData){var result={};for(var key in loaderData){var dracoAttribute=loaderData[key];result[dracoAttribute.name||'undefined']=dracoAttribute;}return result;}function getArrowFieldFromAttribute(attributeName,attribute,loaderData){var metadataMap=loaderData?makeMetadata(loaderData.metadata):undefined;var field=deduceMeshField(attributeName,attribute,metadataMap);return field;}function makeMetadata(metadata){var metadataMap=new Map();for(var key in metadata){metadataMap.set("".concat(key,".string"),JSON.stringify(metadata[key]));}return metadataMap;}var DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP={POSITION:'POSITION',NORMAL:'NORMAL',COLOR:'COLOR_0',TEX_COORD:'TEXCOORD_0'};var DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array};var INDEX_ITEM_SIZE=4;var DracoParser=/*#__PURE__*/function(){function DracoParser(draco){_classCallCheck(this,DracoParser);_defineProperty(this,"draco",void 0);_defineProperty(this,"decoder",void 0);_defineProperty(this,"metadataQuerier",void 0);this.draco=draco;this.decoder=new this.draco.Decoder();this.metadataQuerier=new this.draco.MetadataQuerier();}_createClass(DracoParser,[{key:"destroy",value:function destroy(){this.draco.destroy(this.decoder);this.draco.destroy(this.metadataQuerier);}},{key:"parseSync",value:function parseSync(arrayBuffer){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var buffer=new this.draco.DecoderBuffer();buffer.Init(new Int8Array(arrayBuffer),arrayBuffer.byteLength);this._disableAttributeTransforms(options);var geometry_type=this.decoder.GetEncodedGeometryType(buffer);var dracoGeometry=geometry_type===this.draco.TRIANGULAR_MESH?new this.draco.Mesh():new this.draco.PointCloud();try{var dracoStatus;switch(geometry_type){case this.draco.TRIANGULAR_MESH:dracoStatus=this.decoder.DecodeBufferToMesh(buffer,dracoGeometry);break;case this.draco.POINT_CLOUD:dracoStatus=this.decoder.DecodeBufferToPointCloud(buffer,dracoGeometry);break;default:throw new Error('DRACO: Unknown geometry type.');}if(!dracoStatus.ok()||!dracoGeometry.ptr){var message="DRACO decompression failed: ".concat(dracoStatus.error_msg());throw new Error(message);}var loaderData=this._getDracoLoaderData(dracoGeometry,geometry_type,options);var geometry=this._getMeshData(dracoGeometry,loaderData,options);var boundingBox=getMeshBoundingBox(geometry.attributes);var schema=getDracoSchema(geometry.attributes,loaderData,geometry.indices);var data=_objectSpread(_objectSpread({loader:'draco',loaderData:loaderData,header:{vertexCount:dracoGeometry.num_points(),boundingBox:boundingBox}},geometry),{},{schema:schema});return data;}finally{this.draco.destroy(buffer);if(dracoGeometry){this.draco.destroy(dracoGeometry);}}}},{key:"_getDracoLoaderData",value:function _getDracoLoaderData(dracoGeometry,geometry_type,options){var metadata=this._getTopLevelMetadata(dracoGeometry);var attributes=this._getDracoAttributes(dracoGeometry,options);return{geometry_type:geometry_type,num_attributes:dracoGeometry.num_attributes(),num_points:dracoGeometry.num_points(),num_faces:dracoGeometry instanceof this.draco.Mesh?dracoGeometry.num_faces():0,metadata:metadata,attributes:attributes};}},{key:"_getDracoAttributes",value:function _getDracoAttributes(dracoGeometry,options){var dracoAttributes={};for(var attributeId=0;attributeId2&&arguments[2]!==undefined?arguments[2]:false;if(!array){return null;}if(Array.isArray(array)){return new ArrayType(array);}if(convertTypedArrays&&!(array instanceof ArrayType)){return new ArrayType(array);}return array;}var KHR_DRACO_MESH_COMPRESSION='KHR_draco_mesh_compression';var name$3=KHR_DRACO_MESH_COMPRESSION;function preprocess$1(gltfData,options,context){var scenegraph=new GLTFScenegraph(gltfData);var _iterator25=_createForOfIteratorHelper(makeMeshPrimitiveIterator(scenegraph)),_step25;try{for(_iterator25.s();!(_step25=_iterator25.n()).done;){var _primitive=_step25.value;if(scenegraph.getObjectExtension(_primitive,KHR_DRACO_MESH_COMPRESSION));}}catch(err){_iterator25.e(err);}finally{_iterator25.f();}}function decode$3(_x72,_x73,_x74){return _decode$2.apply(this,arguments);}function _decode$2(){_decode$2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee40(gltfData,options,context){var _options$gltf,scenegraph,promises,_iterator42,_step42,_primitive5;return _regeneratorRuntime().wrap(function _callee40$(_context44){while(1){switch(_context44.prev=_context44.next){case 0:if(options!==null&&options!==void 0&&(_options$gltf=options.gltf)!==null&&_options$gltf!==void 0&&_options$gltf.decompressMeshes){_context44.next=2;break;}return _context44.abrupt("return");case 2:scenegraph=new GLTFScenegraph(gltfData);promises=[];_iterator42=_createForOfIteratorHelper(makeMeshPrimitiveIterator(scenegraph));try{for(_iterator42.s();!(_step42=_iterator42.n()).done;){_primitive5=_step42.value;if(scenegraph.getObjectExtension(_primitive5,KHR_DRACO_MESH_COMPRESSION)){promises.push(decompressPrimitive(scenegraph,_primitive5,options,context));}}}catch(err){_iterator42.e(err);}finally{_iterator42.f();}_context44.next=8;return Promise.all(promises);case 8:scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);case 9:case"end":return _context44.stop();}}},_callee40);}));return _decode$2.apply(this,arguments);}function encode$3(gltfData){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var scenegraph=new GLTFScenegraph(gltfData);var _iterator26=_createForOfIteratorHelper(scenegraph.json.meshes||[]),_step26;try{for(_iterator26.s();!(_step26=_iterator26.n()).done;){var _mesh3=_step26.value;compressMesh(_mesh3);scenegraph.addRequiredExtension(KHR_DRACO_MESH_COMPRESSION);}}catch(err){_iterator26.e(err);}finally{_iterator26.f();}}function decompressPrimitive(_x75,_x76,_x77,_x78){return _decompressPrimitive.apply(this,arguments);}function _decompressPrimitive(){_decompressPrimitive=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee41(scenegraph,primitive,options,context){var dracoExtension,buffer,bufferCopy,parse,dracoOptions,decodedData,decodedAttributes,_i594,_Object$entries5,_Object$entries5$_i,attributeName,decodedAttribute,accessorIndex,accessor;return _regeneratorRuntime().wrap(function _callee41$(_context45){while(1){switch(_context45.prev=_context45.next){case 0:dracoExtension=scenegraph.getObjectExtension(primitive,KHR_DRACO_MESH_COMPRESSION);if(dracoExtension){_context45.next=3;break;}return _context45.abrupt("return");case 3:buffer=scenegraph.getTypedArrayForBufferView(dracoExtension.bufferView);bufferCopy=sliceArrayBuffer(buffer.buffer,buffer.byteOffset);parse=context.parse;dracoOptions=_objectSpread({},options);delete dracoOptions['3d-tiles'];_context45.next=10;return parse(bufferCopy,DracoLoader,dracoOptions,context);case 10:decodedData=_context45.sent;decodedAttributes=getGLTFAccessors(decodedData.attributes);for(_i594=0,_Object$entries5=Object.entries(decodedAttributes);_i594<_Object$entries5.length;_i594++){_Object$entries5$_i=_slicedToArray(_Object$entries5[_i594],2),attributeName=_Object$entries5$_i[0],decodedAttribute=_Object$entries5$_i[1];if(attributeName in primitive.attributes){accessorIndex=primitive.attributes[attributeName];accessor=scenegraph.getAccessor(accessorIndex);if(accessor!==null&&accessor!==void 0&&accessor.min&&accessor!==null&&accessor!==void 0&&accessor.max){decodedAttribute.min=accessor.min;decodedAttribute.max=accessor.max;}}}primitive.attributes=decodedAttributes;if(decodedData.indices){primitive.indices=getGLTFAccessor(decodedData.indices);}checkPrimitive(primitive);case 16:case"end":return _context45.stop();}}},_callee41);}));return _decompressPrimitive.apply(this,arguments);}function compressMesh(attributes,indices){var mode=arguments.length>2&&arguments[2]!==undefined?arguments[2]:4;var options=arguments.length>3?arguments[3]:undefined;var context=arguments.length>4?arguments[4]:undefined;var _context$parseSync;if(!options.DracoWriter){throw new Error('options.gltf.DracoWriter not provided');}var compressedData=options.DracoWriter.encodeSync({attributes:attributes});var decodedData=context===null||context===void 0?void 0:(_context$parseSync=context.parseSync)===null||_context$parseSync===void 0?void 0:_context$parseSync.call(context,{attributes:attributes});var fauxAccessors=options._addFauxAttributes(decodedData.attributes);var bufferViewIndex=options.addBufferView(compressedData);var glTFMesh={primitives:[{attributes:fauxAccessors,mode:mode,extensions:_defineProperty2({},KHR_DRACO_MESH_COMPRESSION,{bufferView:bufferViewIndex,attributes:fauxAccessors})}]};return glTFMesh;}function checkPrimitive(primitive){if(!primitive.attributes&&Object.keys(primitive.attributes).length>0){throw new Error('glTF: Empty primitive detected: Draco decompression failure?');}}function makeMeshPrimitiveIterator(scenegraph){var _iterator27,_step27,_mesh4,_iterator28,_step28,_primitive2;return _regeneratorRuntime().wrap(function makeMeshPrimitiveIterator$(_context10){while(1){switch(_context10.prev=_context10.next){case 0:_iterator27=_createForOfIteratorHelper(scenegraph.json.meshes||[]);_context10.prev=1;_iterator27.s();case 3:if((_step27=_iterator27.n()).done){_context10.next=24;break;}_mesh4=_step27.value;_iterator28=_createForOfIteratorHelper(_mesh4.primitives);_context10.prev=6;_iterator28.s();case 8:if((_step28=_iterator28.n()).done){_context10.next=14;break;}_primitive2=_step28.value;_context10.next=12;return _primitive2;case 12:_context10.next=8;break;case 14:_context10.next=19;break;case 16:_context10.prev=16;_context10.t0=_context10["catch"](6);_iterator28.e(_context10.t0);case 19:_context10.prev=19;_iterator28.f();return _context10.finish(19);case 22:_context10.next=3;break;case 24:_context10.next=29;break;case 26:_context10.prev=26;_context10.t1=_context10["catch"](1);_iterator27.e(_context10.t1);case 29:_context10.prev=29;_iterator27.f();return _context10.finish(29);case 32:case"end":return _context10.stop();}}},_marked3,null,[[1,26,29,32],[6,16,19,22]]);}var KHR_draco_mesh_compression=/*#__PURE__*/Object.freeze({__proto__:null,name:name$3,preprocess:preprocess$1,decode:decode$3,encode:encode$3});var KHR_LIGHTS_PUNCTUAL='KHR_lights_punctual';var name$2=KHR_LIGHTS_PUNCTUAL;function decode$2(_x79){return _decode$3.apply(this,arguments);}function _decode$3(){_decode$3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee42(gltfData){var gltfScenegraph,json,extension,_iterator43,_step43,_node12,nodeExtension;return _regeneratorRuntime().wrap(function _callee42$(_context46){while(1){switch(_context46.prev=_context46.next){case 0:gltfScenegraph=new GLTFScenegraph(gltfData);json=gltfScenegraph.json;extension=gltfScenegraph.getExtension(KHR_LIGHTS_PUNCTUAL);if(extension){gltfScenegraph.json.lights=extension.lights;gltfScenegraph.removeExtension(KHR_LIGHTS_PUNCTUAL);}_iterator43=_createForOfIteratorHelper(json.nodes||[]);try{for(_iterator43.s();!(_step43=_iterator43.n()).done;){_node12=_step43.value;nodeExtension=gltfScenegraph.getObjectExtension(_node12,KHR_LIGHTS_PUNCTUAL);if(nodeExtension){_node12.light=nodeExtension.light;}gltfScenegraph.removeObjectExtension(_node12,KHR_LIGHTS_PUNCTUAL);}}catch(err){_iterator43.e(err);}finally{_iterator43.f();}case 6:case"end":return _context46.stop();}}},_callee42);}));return _decode$3.apply(this,arguments);}function encode$2(_x80){return _encode$.apply(this,arguments);}function _encode$(){_encode$=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee43(gltfData){var gltfScenegraph,json,extension,_iterator44,_step44,light,_node13;return _regeneratorRuntime().wrap(function _callee43$(_context47){while(1){switch(_context47.prev=_context47.next){case 0:gltfScenegraph=new GLTFScenegraph(gltfData);json=gltfScenegraph.json;if(json.lights){extension=gltfScenegraph.addExtension(KHR_LIGHTS_PUNCTUAL);assert$1(!extension.lights);extension.lights=json.lights;delete json.lights;}if(gltfScenegraph.json.lights){_iterator44=_createForOfIteratorHelper(gltfScenegraph.json.lights);try{for(_iterator44.s();!(_step44=_iterator44.n()).done;){light=_step44.value;_node13=light.node;gltfScenegraph.addObjectExtension(_node13,KHR_LIGHTS_PUNCTUAL,light);}}catch(err){_iterator44.e(err);}finally{_iterator44.f();}delete gltfScenegraph.json.lights;}case 4:case"end":return _context47.stop();}}},_callee43);}));return _encode$.apply(this,arguments);}var KHR_lights_punctual=/*#__PURE__*/Object.freeze({__proto__:null,name:name$2,decode:decode$2,encode:encode$2});var KHR_MATERIALS_UNLIT='KHR_materials_unlit';var name$1=KHR_MATERIALS_UNLIT;function decode$1(_x81){return _decode$4.apply(this,arguments);}function _decode$4(){_decode$4=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee44(gltfData){var gltfScenegraph,json,_iterator45,_step45,material,extension;return _regeneratorRuntime().wrap(function _callee44$(_context48){while(1){switch(_context48.prev=_context48.next){case 0:gltfScenegraph=new GLTFScenegraph(gltfData);json=gltfScenegraph.json;gltfScenegraph.removeExtension(KHR_MATERIALS_UNLIT);_iterator45=_createForOfIteratorHelper(json.materials||[]);try{for(_iterator45.s();!(_step45=_iterator45.n()).done;){material=_step45.value;extension=material.extensions&&material.extensions.KHR_materials_unlit;if(extension){material.unlit=true;}gltfScenegraph.removeObjectExtension(material,KHR_MATERIALS_UNLIT);}}catch(err){_iterator45.e(err);}finally{_iterator45.f();}case 5:case"end":return _context48.stop();}}},_callee44);}));return _decode$4.apply(this,arguments);}function encode$1(gltfData){var gltfScenegraph=new GLTFScenegraph(gltfData);var json=gltfScenegraph.json;if(gltfScenegraph.materials){var _iterator29=_createForOfIteratorHelper(json.materials||[]),_step29;try{for(_iterator29.s();!(_step29=_iterator29.n()).done;){var material=_step29.value;if(material.unlit){delete material.unlit;gltfScenegraph.addObjectExtension(material,KHR_MATERIALS_UNLIT,{});gltfScenegraph.addExtension(KHR_MATERIALS_UNLIT);}}}catch(err){_iterator29.e(err);}finally{_iterator29.f();}}}var KHR_materials_unlit=/*#__PURE__*/Object.freeze({__proto__:null,name:name$1,decode:decode$1,encode:encode$1});var KHR_TECHNIQUES_WEBGL='KHR_techniques_webgl';var name=KHR_TECHNIQUES_WEBGL;function decode(_x82){return _decode.apply(this,arguments);}function _decode(){_decode=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee45(gltfData){var gltfScenegraph,json,extension,techniques,_iterator46,_step46,material,materialExtension;return _regeneratorRuntime().wrap(function _callee45$(_context49){while(1){switch(_context49.prev=_context49.next){case 0:gltfScenegraph=new GLTFScenegraph(gltfData);json=gltfScenegraph.json;extension=gltfScenegraph.getExtension(KHR_TECHNIQUES_WEBGL);if(extension){techniques=resolveTechniques(extension,gltfScenegraph);_iterator46=_createForOfIteratorHelper(json.materials||[]);try{for(_iterator46.s();!(_step46=_iterator46.n()).done;){material=_step46.value;materialExtension=gltfScenegraph.getObjectExtension(material,KHR_TECHNIQUES_WEBGL);if(materialExtension){material.technique=Object.assign({},materialExtension,techniques[materialExtension.technique]);material.technique.values=resolveValues(material.technique,gltfScenegraph);}gltfScenegraph.removeObjectExtension(material,KHR_TECHNIQUES_WEBGL);}}catch(err){_iterator46.e(err);}finally{_iterator46.f();}gltfScenegraph.removeExtension(KHR_TECHNIQUES_WEBGL);}case 4:case"end":return _context49.stop();}}},_callee45);}));return _decode.apply(this,arguments);}function encode(_x83,_x84){return _encode.apply(this,arguments);}function _encode(){_encode=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee46(gltfData,options){return _regeneratorRuntime().wrap(function _callee46$(_context50){while(1){switch(_context50.prev=_context50.next){case 0:case"end":return _context50.stop();}}},_callee46);}));return _encode.apply(this,arguments);}function resolveTechniques(techniquesExtension,gltfScenegraph){var _techniquesExtension$=techniquesExtension.programs,programs=_techniquesExtension$===void 0?[]:_techniquesExtension$,_techniquesExtension$2=techniquesExtension.shaders,shaders=_techniquesExtension$2===void 0?[]:_techniquesExtension$2,_techniquesExtension$3=techniquesExtension.techniques,techniques=_techniquesExtension$3===void 0?[]:_techniquesExtension$3;var textDecoder=new TextDecoder();shaders.forEach(function(shader){if(Number.isFinite(shader.bufferView)){shader.code=textDecoder.decode(gltfScenegraph.getTypedArrayForBufferView(shader.bufferView));}else{throw new Error('KHR_techniques_webgl: no shader code');}});programs.forEach(function(program){program.fragmentShader=shaders[program.fragmentShader];program.vertexShader=shaders[program.vertexShader];});techniques.forEach(function(technique){technique.program=programs[technique.program];});return techniques;}function resolveValues(technique,gltfScenegraph){var values=Object.assign({},technique.values);Object.keys(technique.uniforms||{}).forEach(function(uniform){if(technique.uniforms[uniform].value&&!(uniform in values)){values[uniform]=technique.uniforms[uniform].value;}});Object.keys(values).forEach(function(uniform){if(_typeof(values[uniform])==='object'&&values[uniform].index!==undefined){values[uniform].texture=gltfScenegraph.getTexture(values[uniform].index);}});return values;}var KHR_techniques_webgl=/*#__PURE__*/Object.freeze({__proto__:null,name:name,decode:decode,encode:encode});var EXTENSIONS=[EXT_meshopt_compression,EXT_texture_webp,KHR_texture_basisu,KHR_draco_mesh_compression,KHR_lights_punctual,KHR_materials_unlit,KHR_techniques_webgl];function preprocessExtensions(gltf){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var context=arguments.length>2?arguments[2]:undefined;var extensions=EXTENSIONS.filter(function(extension){return useExtension(extension.name,options);});var _iterator30=_createForOfIteratorHelper(extensions),_step30;try{for(_iterator30.s();!(_step30=_iterator30.n()).done;){var extension=_step30.value;var _extension$preprocess;(_extension$preprocess=extension.preprocess)===null||_extension$preprocess===void 0?void 0:_extension$preprocess.call(extension,gltf,options,context);}}catch(err){_iterator30.e(err);}finally{_iterator30.f();}}function decodeExtensions(_x85){return _decodeExtensions.apply(this,arguments);}function _decodeExtensions(){_decodeExtensions=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee47(gltf){var options,context,extensions,_iterator47,_step47,extension,_extension$decode,_args45=arguments;return _regeneratorRuntime().wrap(function _callee47$(_context51){while(1){switch(_context51.prev=_context51.next){case 0:options=_args45.length>1&&_args45[1]!==undefined?_args45[1]:{};context=_args45.length>2?_args45[2]:undefined;extensions=EXTENSIONS.filter(function(extension){return useExtension(extension.name,options);});_iterator47=_createForOfIteratorHelper(extensions);_context51.prev=4;_iterator47.s();case 6:if((_step47=_iterator47.n()).done){_context51.next=12;break;}extension=_step47.value;_context51.next=10;return(_extension$decode=extension.decode)===null||_extension$decode===void 0?void 0:_extension$decode.call(extension,gltf,options,context);case 10:_context51.next=6;break;case 12:_context51.next=17;break;case 14:_context51.prev=14;_context51.t0=_context51["catch"](4);_iterator47.e(_context51.t0);case 17:_context51.prev=17;_iterator47.f();return _context51.finish(17);case 20:case"end":return _context51.stop();}}},_callee47,null,[[4,14,17,20]]);}));return _decodeExtensions.apply(this,arguments);}function useExtension(extensionName,options){var _options$gltf;var excludes=(options===null||options===void 0?void 0:(_options$gltf=options.gltf)===null||_options$gltf===void 0?void 0:_options$gltf.excludeExtensions)||{};var exclude=extensionName in excludes&&!excludes[extensionName];return!exclude;}var KHR_BINARY_GLTF='KHR_binary_glTF';function preprocess(gltfData){var gltfScenegraph=new GLTFScenegraph(gltfData);var json=gltfScenegraph.json;var _iterator31=_createForOfIteratorHelper(json.images||[]),_step31;try{for(_iterator31.s();!(_step31=_iterator31.n()).done;){var _image7=_step31.value;var extension=gltfScenegraph.getObjectExtension(_image7,KHR_BINARY_GLTF);if(extension){Object.assign(_image7,extension);}gltfScenegraph.removeObjectExtension(_image7,KHR_BINARY_GLTF);}}catch(err){_iterator31.e(err);}finally{_iterator31.f();}if(json.buffers&&json.buffers[0]){delete json.buffers[0].uri;}gltfScenegraph.removeExtension(KHR_BINARY_GLTF);}var GLTF_ARRAYS={accessors:'accessor',animations:'animation',buffers:'buffer',bufferViews:'bufferView',images:'image',materials:'material',meshes:'mesh',nodes:'node',samplers:'sampler',scenes:'scene',skins:'skin',textures:'texture'};var GLTF_KEYS={accessor:'accessors',animations:'animation',buffer:'buffers',bufferView:'bufferViews',image:'images',material:'materials',mesh:'meshes',node:'nodes',sampler:'samplers',scene:'scenes',skin:'skins',texture:'textures'};var GLTFV1Normalizer=/*#__PURE__*/function(){function GLTFV1Normalizer(){_classCallCheck(this,GLTFV1Normalizer);_defineProperty(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}});_defineProperty(this,"json",void 0);}_createClass(GLTFV1Normalizer,[{key:"normalize",value:function normalize(gltf,options){this.json=gltf.json;var json=gltf.json;switch(json.asset&&json.asset.version){case'2.0':return;case undefined:case'1.0':break;default:console.warn("glTF: Unknown version ".concat(json.asset.version));return;}if(!options.normalize){throw new Error('glTF v1 is not supported.');}console.warn('Converting glTF v1 to glTF v2 format. This is experimental and may fail.');this._addAsset(json);this._convertTopLevelObjectsToArrays(json);preprocess(gltf);this._convertObjectIdsToArrayIndices(json);this._updateObjects(json);this._updateMaterial(json);}},{key:"_addAsset",value:function _addAsset(json){json.asset=json.asset||{};json.asset.version='2.0';json.asset.generator=json.asset.generator||'Normalized to glTF 2.0 by loaders.gl';}},{key:"_convertTopLevelObjectsToArrays",value:function _convertTopLevelObjectsToArrays(json){for(var arrayName in GLTF_ARRAYS){this._convertTopLevelObjectToArray(json,arrayName);}}},{key:"_convertTopLevelObjectToArray",value:function _convertTopLevelObjectToArray(json,mapName){var objectMap=json[mapName];if(!objectMap||Array.isArray(objectMap)){return;}json[mapName]=[];for(var id in objectMap){var object=objectMap[id];object.id=object.id||id;var index=json[mapName].length;json[mapName].push(object);this.idToIndexMap[mapName][id]=index;}}},{key:"_convertObjectIdsToArrayIndices",value:function _convertObjectIdsToArrayIndices(json){for(var arrayName in GLTF_ARRAYS){this._convertIdsToIndices(json,arrayName);}if('scene'in json){json.scene=this._convertIdToIndex(json.scene,'scene');}var _iterator32=_createForOfIteratorHelper(json.textures),_step32;try{for(_iterator32.s();!(_step32=_iterator32.n()).done;){var texture=_step32.value;this._convertTextureIds(texture);}}catch(err){_iterator32.e(err);}finally{_iterator32.f();}var _iterator33=_createForOfIteratorHelper(json.meshes),_step33;try{for(_iterator33.s();!(_step33=_iterator33.n()).done;){var _mesh5=_step33.value;this._convertMeshIds(_mesh5);}}catch(err){_iterator33.e(err);}finally{_iterator33.f();}var _iterator34=_createForOfIteratorHelper(json.nodes),_step34;try{for(_iterator34.s();!(_step34=_iterator34.n()).done;){var _node4=_step34.value;this._convertNodeIds(_node4);}}catch(err){_iterator34.e(err);}finally{_iterator34.f();}var _iterator35=_createForOfIteratorHelper(json.scenes),_step35;try{for(_iterator35.s();!(_step35=_iterator35.n()).done;){var _node5=_step35.value;this._convertSceneIds(_node5);}}catch(err){_iterator35.e(err);}finally{_iterator35.f();}}},{key:"_convertTextureIds",value:function _convertTextureIds(texture){if(texture.source){texture.source=this._convertIdToIndex(texture.source,'image');}}},{key:"_convertMeshIds",value:function _convertMeshIds(mesh){var _iterator36=_createForOfIteratorHelper(mesh.primitives),_step36;try{for(_iterator36.s();!(_step36=_iterator36.n()).done;){var _primitive3=_step36.value;var attributes=_primitive3.attributes,indices=_primitive3.indices,material=_primitive3.material;for(var attributeName in attributes){attributes[attributeName]=this._convertIdToIndex(attributes[attributeName],'accessor');}if(indices){_primitive3.indices=this._convertIdToIndex(indices,'accessor');}if(material){_primitive3.material=this._convertIdToIndex(material,'material');}}}catch(err){_iterator36.e(err);}finally{_iterator36.f();}}},{key:"_convertNodeIds",value:function _convertNodeIds(node){var _this122=this;if(node.children){node.children=node.children.map(function(child){return _this122._convertIdToIndex(child,'node');});}if(node.meshes){node.meshes=node.meshes.map(function(mesh){return _this122._convertIdToIndex(mesh,'mesh');});}}},{key:"_convertSceneIds",value:function _convertSceneIds(scene){var _this123=this;if(scene.nodes){scene.nodes=scene.nodes.map(function(node){return _this123._convertIdToIndex(node,'node');});}}},{key:"_convertIdsToIndices",value:function _convertIdsToIndices(json,topLevelArrayName){if(!json[topLevelArrayName]){console.warn("gltf v1: json doesn't contain attribute ".concat(topLevelArrayName));json[topLevelArrayName]=[];}var _iterator37=_createForOfIteratorHelper(json[topLevelArrayName]),_step37;try{for(_iterator37.s();!(_step37=_iterator37.n()).done;){var object=_step37.value;for(var key in object){var id=object[key];var index=this._convertIdToIndex(id,key);object[key]=index;}}}catch(err){_iterator37.e(err);}finally{_iterator37.f();}}},{key:"_convertIdToIndex",value:function _convertIdToIndex(id,key){var arrayName=GLTF_KEYS[key];if(arrayName in this.idToIndexMap){var index=this.idToIndexMap[arrayName][id];if(!Number.isFinite(index)){throw new Error("gltf v1: failed to resolve ".concat(key," with id ").concat(id));}return index;}return id;}},{key:"_updateObjects",value:function _updateObjects(json){var _iterator38=_createForOfIteratorHelper(this.json.buffers),_step38;try{for(_iterator38.s();!(_step38=_iterator38.n()).done;){var buffer=_step38.value;delete buffer.type;}}catch(err){_iterator38.e(err);}finally{_iterator38.f();}}},{key:"_updateMaterial",value:function _updateMaterial(json){var _iterator39=_createForOfIteratorHelper(json.materials),_step39;try{var _loop6=function _loop6(){var material=_step39.value;material.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};var textureId=((_material$values=material.values)===null||_material$values===void 0?void 0:_material$values.tex)||((_material$values2=material.values)===null||_material$values2===void 0?void 0:_material$values2.texture2d_0);var textureIndex=json.textures.findIndex(function(texture){return texture.id===textureId;});if(textureIndex!==-1){material.pbrMetallicRoughness.baseColorTexture={index:textureIndex};}};for(_iterator39.s();!(_step39=_iterator39.n()).done;){var _material$values,_material$values2;_loop6();}}catch(err){_iterator39.e(err);}finally{_iterator39.f();}}}]);return GLTFV1Normalizer;}();function normalizeGLTFV1(gltf){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return new GLTFV1Normalizer().normalize(gltf,options);}var COMPONENTS={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var BYTES={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var GL_SAMPLER={TEXTURE_MAG_FILTER:0x2800,TEXTURE_MIN_FILTER:0x2801,TEXTURE_WRAP_S:0x2802,TEXTURE_WRAP_T:0x2803,REPEAT:0x2901,LINEAR:0x2601,NEAREST_MIPMAP_LINEAR:0x2702};var SAMPLER_PARAMETER_GLTF_TO_GL={magFilter:GL_SAMPLER.TEXTURE_MAG_FILTER,minFilter:GL_SAMPLER.TEXTURE_MIN_FILTER,wrapS:GL_SAMPLER.TEXTURE_WRAP_S,wrapT:GL_SAMPLER.TEXTURE_WRAP_T};var DEFAULT_SAMPLER=(_DEFAULT_SAMPLER={},_defineProperty2(_DEFAULT_SAMPLER,GL_SAMPLER.TEXTURE_MAG_FILTER,GL_SAMPLER.LINEAR),_defineProperty2(_DEFAULT_SAMPLER,GL_SAMPLER.TEXTURE_MIN_FILTER,GL_SAMPLER.NEAREST_MIPMAP_LINEAR),_defineProperty2(_DEFAULT_SAMPLER,GL_SAMPLER.TEXTURE_WRAP_S,GL_SAMPLER.REPEAT),_defineProperty2(_DEFAULT_SAMPLER,GL_SAMPLER.TEXTURE_WRAP_T,GL_SAMPLER.REPEAT),_DEFAULT_SAMPLER);function getBytesFromComponentType(componentType){return BYTES[componentType];}function getSizeFromAccessorType(type){return COMPONENTS[type];}var GLTFPostProcessor=/*#__PURE__*/function(){function GLTFPostProcessor(){_classCallCheck(this,GLTFPostProcessor);_defineProperty(this,"baseUri",'');_defineProperty(this,"json",{});_defineProperty(this,"buffers",[]);_defineProperty(this,"images",[]);}_createClass(GLTFPostProcessor,[{key:"postProcess",value:function postProcess(gltf){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var json=gltf.json,_gltf$buffers=gltf.buffers,buffers=_gltf$buffers===void 0?[]:_gltf$buffers,_gltf$images=gltf.images,images=_gltf$images===void 0?[]:_gltf$images,_gltf$baseUri=gltf.baseUri,baseUri=_gltf$baseUri===void 0?'':_gltf$baseUri;assert$1(json);this.baseUri=baseUri;this.json=json;this.buffers=buffers;this.images=images;this._resolveTree(this.json,options);return this.json;}},{key:"_resolveTree",value:function _resolveTree(json){var _this124=this;var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(json.bufferViews){json.bufferViews=json.bufferViews.map(function(bufView,i){return _this124._resolveBufferView(bufView,i);});}if(json.images){json.images=json.images.map(function(image,i){return _this124._resolveImage(image,i);});}if(json.samplers){json.samplers=json.samplers.map(function(sampler,i){return _this124._resolveSampler(sampler,i);});}if(json.textures){json.textures=json.textures.map(function(texture,i){return _this124._resolveTexture(texture,i);});}if(json.accessors){json.accessors=json.accessors.map(function(accessor,i){return _this124._resolveAccessor(accessor,i);});}if(json.materials){json.materials=json.materials.map(function(material,i){return _this124._resolveMaterial(material,i);});}if(json.meshes){json.meshes=json.meshes.map(function(mesh,i){return _this124._resolveMesh(mesh,i);});}if(json.nodes){json.nodes=json.nodes.map(function(node,i){return _this124._resolveNode(node,i);});}if(json.skins){json.skins=json.skins.map(function(skin,i){return _this124._resolveSkin(skin,i);});}if(json.scenes){json.scenes=json.scenes.map(function(scene,i){return _this124._resolveScene(scene,i);});}if(json.scene!==undefined){json.scene=json.scenes[this.json.scene];}}},{key:"getScene",value:function getScene(index){return this._get('scenes',index);}},{key:"getNode",value:function getNode(index){return this._get('nodes',index);}},{key:"getSkin",value:function getSkin(index){return this._get('skins',index);}},{key:"getMesh",value:function getMesh(index){return this._get('meshes',index);}},{key:"getMaterial",value:function getMaterial(index){return this._get('materials',index);}},{key:"getAccessor",value:function getAccessor(index){return this._get('accessors',index);}},{key:"getCamera",value:function getCamera(index){return null;}},{key:"getTexture",value:function getTexture(index){return this._get('textures',index);}},{key:"getSampler",value:function getSampler(index){return this._get('samplers',index);}},{key:"getImage",value:function getImage(index){return this._get('images',index);}},{key:"getBufferView",value:function getBufferView(index){return this._get('bufferViews',index);}},{key:"getBuffer",value:function getBuffer(index){return this._get('buffers',index);}},{key:"_get",value:function _get(array,index){if(_typeof(index)==='object'){return index;}var object=this.json[array]&&this.json[array][index];if(!object){console.warn("glTF file error: Could not find ".concat(array,"[").concat(index,"]"));}return object;}},{key:"_resolveScene",value:function _resolveScene(scene,index){var _this125=this;scene.id=scene.id||"scene-".concat(index);scene.nodes=(scene.nodes||[]).map(function(node){return _this125.getNode(node);});return scene;}},{key:"_resolveNode",value:function _resolveNode(node,index){var _this126=this;node.id=node.id||"node-".concat(index);if(node.children){node.children=node.children.map(function(child){return _this126.getNode(child);});}if(node.mesh!==undefined){node.mesh=this.getMesh(node.mesh);}else if(node.meshes!==undefined&&node.meshes.length){node.mesh=node.meshes.reduce(function(accum,meshIndex){var mesh=_this126.getMesh(meshIndex);accum.id=mesh.id;accum.primitives=accum.primitives.concat(mesh.primitives);return accum;},{primitives:[]});}if(node.camera!==undefined){node.camera=this.getCamera(node.camera);}if(node.skin!==undefined){node.skin=this.getSkin(node.skin);}return node;}},{key:"_resolveSkin",value:function _resolveSkin(skin,index){skin.id=skin.id||"skin-".concat(index);skin.inverseBindMatrices=this.getAccessor(skin.inverseBindMatrices);return skin;}},{key:"_resolveMesh",value:function _resolveMesh(mesh,index){var _this127=this;mesh.id=mesh.id||"mesh-".concat(index);if(mesh.primitives){mesh.primitives=mesh.primitives.map(function(primitive){primitive=_objectSpread({},primitive);var attributes=primitive.attributes;primitive.attributes={};for(var attribute in attributes){primitive.attributes[attribute]=_this127.getAccessor(attributes[attribute]);}if(primitive.indices!==undefined){primitive.indices=_this127.getAccessor(primitive.indices);}if(primitive.material!==undefined){primitive.material=_this127.getMaterial(primitive.material);}return primitive;});}return mesh;}},{key:"_resolveMaterial",value:function _resolveMaterial(material,index){material.id=material.id||"material-".concat(index);if(material.normalTexture){material.normalTexture=_objectSpread({},material.normalTexture);material.normalTexture.texture=this.getTexture(material.normalTexture.index);}if(material.occlusionTexture){material.occlustionTexture=_objectSpread({},material.occlustionTexture);material.occlusionTexture.texture=this.getTexture(material.occlusionTexture.index);}if(material.emissiveTexture){material.emmisiveTexture=_objectSpread({},material.emmisiveTexture);material.emissiveTexture.texture=this.getTexture(material.emissiveTexture.index);}if(!material.emissiveFactor){material.emissiveFactor=material.emmisiveTexture?[1,1,1]:[0,0,0];}if(material.pbrMetallicRoughness){material.pbrMetallicRoughness=_objectSpread({},material.pbrMetallicRoughness);var mr=material.pbrMetallicRoughness;if(mr.baseColorTexture){mr.baseColorTexture=_objectSpread({},mr.baseColorTexture);mr.baseColorTexture.texture=this.getTexture(mr.baseColorTexture.index);}if(mr.metallicRoughnessTexture){mr.metallicRoughnessTexture=_objectSpread({},mr.metallicRoughnessTexture);mr.metallicRoughnessTexture.texture=this.getTexture(mr.metallicRoughnessTexture.index);}}return material;}},{key:"_resolveAccessor",value:function _resolveAccessor(accessor,index){accessor.id=accessor.id||"accessor-".concat(index);if(accessor.bufferView!==undefined){accessor.bufferView=this.getBufferView(accessor.bufferView);}accessor.bytesPerComponent=getBytesFromComponentType(accessor.componentType);accessor.components=getSizeFromAccessorType(accessor.type);accessor.bytesPerElement=accessor.bytesPerComponent*accessor.components;if(accessor.bufferView){var buffer=accessor.bufferView.buffer;var _getAccessorArrayType2=getAccessorArrayTypeAndLength(accessor,accessor.bufferView),ArrayType=_getAccessorArrayType2.ArrayType,byteLength=_getAccessorArrayType2.byteLength;var byteOffset=(accessor.bufferView.byteOffset||0)+(accessor.byteOffset||0)+buffer.byteOffset;var cutBuffer=buffer.arrayBuffer.slice(byteOffset,byteOffset+byteLength);if(accessor.bufferView.byteStride){cutBuffer=this._getValueFromInterleavedBuffer(buffer,byteOffset,accessor.bufferView.byteStride,accessor.bytesPerElement,accessor.count);}accessor.value=new ArrayType(cutBuffer);}return accessor;}},{key:"_getValueFromInterleavedBuffer",value:function _getValueFromInterleavedBuffer(buffer,byteOffset,byteStride,bytesPerElement,count){var result=new Uint8Array(count*bytesPerElement);for(var _i508=0;_i5081&&arguments[1]!==undefined?arguments[1]:0;return"".concat(String.fromCharCode(dataView.getUint8(byteOffset+0))).concat(String.fromCharCode(dataView.getUint8(byteOffset+1))).concat(String.fromCharCode(dataView.getUint8(byteOffset+2))).concat(String.fromCharCode(dataView.getUint8(byteOffset+3)));}function isGLB(arrayBuffer){var byteOffset=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var dataView=new DataView(arrayBuffer);var _options$magic=options.magic,magic=_options$magic===void 0?MAGIC_glTF:_options$magic;var magic1=dataView.getUint32(byteOffset,false);return magic1===magic||magic1===MAGIC_glTF;}function parseGLBSync(glb,arrayBuffer){var byteOffset=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var options=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var dataView=new DataView(arrayBuffer);var type=getMagicString(dataView,byteOffset+0);var version=dataView.getUint32(byteOffset+4,LE);var byteLength=dataView.getUint32(byteOffset+8,LE);Object.assign(glb,{header:{byteOffset:byteOffset,byteLength:byteLength,hasBinChunk:false},type:type,version:version,json:{},binChunks:[]});byteOffset+=GLB_FILE_HEADER_SIZE;switch(glb.version){case 1:return parseGLBV1(glb,dataView,byteOffset);case 2:return parseGLBV2(glb,dataView,byteOffset,options={});default:throw new Error("Invalid GLB version ".concat(glb.version,". Only supports v1 and v2."));}}function parseGLBV1(glb,dataView,byteOffset){assert$5(glb.header.byteLength>GLB_FILE_HEADER_SIZE+GLB_CHUNK_HEADER_SIZE);var contentLength=dataView.getUint32(byteOffset+0,LE);var contentFormat=dataView.getUint32(byteOffset+4,LE);byteOffset+=GLB_CHUNK_HEADER_SIZE;assert$5(contentFormat===GLB_V1_CONTENT_FORMAT_JSON);parseJSONChunk(glb,dataView,byteOffset,contentLength);byteOffset+=contentLength;byteOffset+=parseBINChunk(glb,dataView,byteOffset,glb.header.byteLength);return byteOffset;}function parseGLBV2(glb,dataView,byteOffset,options){assert$5(glb.header.byteLength>GLB_FILE_HEADER_SIZE+GLB_CHUNK_HEADER_SIZE);parseGLBChunksSync(glb,dataView,byteOffset,options);return byteOffset+glb.header.byteLength;}function parseGLBChunksSync(glb,dataView,byteOffset,options){while(byteOffset+8<=glb.header.byteLength){var chunkLength=dataView.getUint32(byteOffset+0,LE);var chunkFormat=dataView.getUint32(byteOffset+4,LE);byteOffset+=GLB_CHUNK_HEADER_SIZE;switch(chunkFormat){case GLB_CHUNK_TYPE_JSON:parseJSONChunk(glb,dataView,byteOffset,chunkLength);break;case GLB_CHUNK_TYPE_BIN:parseBINChunk(glb,dataView,byteOffset,chunkLength);break;case GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED:if(!options.strict){parseJSONChunk(glb,dataView,byteOffset,chunkLength);}break;case GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED:if(!options.strict){parseBINChunk(glb,dataView,byteOffset,chunkLength);}break;}byteOffset+=padToNBytes(chunkLength,4);}return byteOffset;}function parseJSONChunk(glb,dataView,byteOffset,chunkLength){var jsonChunk=new Uint8Array(dataView.buffer,byteOffset,chunkLength);var textDecoder=new TextDecoder('utf8');var jsonText=textDecoder.decode(jsonChunk);glb.json=JSON.parse(jsonText);return padToNBytes(chunkLength,4);}function parseBINChunk(glb,dataView,byteOffset,chunkLength){glb.header.hasBinChunk=true;glb.binChunks.push({byteOffset:byteOffset,byteLength:chunkLength,arrayBuffer:dataView.buffer});return padToNBytes(chunkLength,4);}function parseGLTF$1(_x86,_x87){return _parseGLTF$.apply(this,arguments);}function _parseGLTF$(){_parseGLTF$=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee48(gltf,arrayBufferOrString){var byteOffset,options,context,_options$gltf,_options$gltf2,_options$gltf3,_options$gltf4,promises,_promise,promise,_args46=arguments;return _regeneratorRuntime().wrap(function _callee48$(_context52){while(1){switch(_context52.prev=_context52.next){case 0:byteOffset=_args46.length>2&&_args46[2]!==undefined?_args46[2]:0;options=_args46.length>3?_args46[3]:undefined;context=_args46.length>4?_args46[4]:undefined;parseGLTFContainerSync(gltf,arrayBufferOrString,byteOffset,options);normalizeGLTFV1(gltf,{normalize:options===null||options===void 0?void 0:(_options$gltf=options.gltf)===null||_options$gltf===void 0?void 0:_options$gltf.normalize});preprocessExtensions(gltf,options,context);promises=[];if(!(options!==null&&options!==void 0&&(_options$gltf2=options.gltf)!==null&&_options$gltf2!==void 0&&_options$gltf2.loadBuffers&&gltf.json.buffers)){_context52.next=10;break;}_context52.next=10;return loadBuffers(gltf,options,context);case 10:if(options!==null&&options!==void 0&&(_options$gltf3=options.gltf)!==null&&_options$gltf3!==void 0&&_options$gltf3.loadImages){_promise=loadImages(gltf,options,context);promises.push(_promise);}promise=decodeExtensions(gltf,options,context);promises.push(promise);_context52.next=15;return Promise.all(promises);case 15:return _context52.abrupt("return",options!==null&&options!==void 0&&(_options$gltf4=options.gltf)!==null&&_options$gltf4!==void 0&&_options$gltf4.postProcess?postProcessGLTF(gltf,options):gltf);case 16:case"end":return _context52.stop();}}},_callee48);}));return _parseGLTF$.apply(this,arguments);}function parseGLTFContainerSync(gltf,data,byteOffset,options){if(options.uri){gltf.baseUri=options.uri;}if(data instanceof ArrayBuffer&&!isGLB(data,byteOffset,options)){var textDecoder=new TextDecoder();data=textDecoder.decode(data);}if(typeof data==='string'){gltf.json=parseJSON(data);}else if(data instanceof ArrayBuffer){var glb={};byteOffset=parseGLBSync(glb,data,byteOffset,options.glb);assert$1(glb.type==='glTF',"Invalid GLB magic string ".concat(glb.type));gltf._glb=glb;gltf.json=glb.json;}else{assert$1(false,'GLTF: must be ArrayBuffer or string');}var buffers=gltf.json.buffers||[];gltf.buffers=new Array(buffers.length).fill(null);if(gltf._glb&&gltf._glb.header.hasBinChunk){var binChunks=gltf._glb.binChunks;gltf.buffers[0]={arrayBuffer:binChunks[0].arrayBuffer,byteOffset:binChunks[0].byteOffset,byteLength:binChunks[0].byteLength};}var images=gltf.json.images||[];gltf.images=new Array(images.length).fill({});}function loadBuffers(_x88,_x89,_x90){return _loadBuffers.apply(this,arguments);}function _loadBuffers(){_loadBuffers=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee49(gltf,options,context){var buffers,_i595,buffer,_context$fetch,_response$arrayBuffer,_fetch,uri,response,arrayBuffer;return _regeneratorRuntime().wrap(function _callee49$(_context53){while(1){switch(_context53.prev=_context53.next){case 0:buffers=gltf.json.buffers||[];_i595=0;case 2:if(!(_i5951&&_args50[1]!==undefined?_args50[1]:{};context=_args50.length>2?_args50[2]:undefined;options=_objectSpread(_objectSpread({},GLTFLoader.options),options);options.gltf=_objectSpread(_objectSpread({},GLTFLoader.options.gltf),options.gltf);_options2=options,_options2$byteOffset=_options2.byteOffset,byteOffset=_options2$byteOffset===void 0?0:_options2$byteOffset;gltf={};_context56.next=8;return parseGLTF$1(gltf,arrayBuffer,byteOffset,options,context);case 8:return _context56.abrupt("return",_context56.sent);case 9:case"end":return _context56.stop();}}},_callee52);}));return _parse$3.apply(this,arguments);}var GLTFSceneModelLoader=/*#__PURE__*/function(){function GLTFSceneModelLoader(cfg){_classCallCheck(this,GLTFSceneModelLoader);}_createClass(GLTFSceneModelLoader,[{key:"load",value:function load(plugin,src,metaModelJSON,options,sceneModel,ok,error){options=options||{};loadGLTF(plugin,src,metaModelJSON,options,sceneModel,function(){core.scheduleTask(function(){sceneModel.scene.fire("modelLoaded",sceneModel.id);// FIXME: Assumes listeners know order of these two events sceneModel.fire("loaded",true,false);});if(ok){ok();}},function(msg){plugin.error(msg);if(error){error(msg);}sceneModel.fire("error",msg);});}},{key:"parse",value:function parse(plugin,gltf,metaModelJSON,options,sceneModel,ok,error){options=options||{};parseGLTF(plugin,"",gltf,metaModelJSON,options,sceneModel,function(){sceneModel.scene.fire("modelLoaded",sceneModel.id);// FIXME: Assumes listeners know order of these two events @@ -24883,6 +24884,79 @@ sceneModel.createEntity({id:entityId,meshIds:deferredMeshIds,isObject:true});def * excludeTypes: ["IfcSpace"] * }); * ```` + * + * ## Showing a glTF model in TreeViewPlugin when metadata is not available + * + * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a + * `name` attribute, giving the Entity an ID that has the value of the `name` attribute. + * + * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not + * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin + * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any + * MetaModels that we create alongside the model. + * + * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter + * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID. + * + * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that + * contains a MetaObject that corresponds to that Entity. + * + * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls + * the visibility of that Entity (ie. to control the visibility of the entire model). + * + * The snippet below shows how this is done. + * + * ````javascript + * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js"; + * + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * new TreeViewPlugin(viewer, { + * containerElement: document.getElementById("treeViewContainer"), + * hierarchy: "containment" + * }); + * + * const gltfLoader = new GLTFLoaderPlugin(viewer); + * + * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID "myScanModel" + * id: "myScanModel", + * src: "public-use-sample-apartment.glb", + * + * //------------------------------------------------------------------------- + * // Specify an `elementId` parameter, which causes the + * // entire model to be loaded into a single Entity that gets this ID. + * //------------------------------------------------------------------------- + * + * entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID + * + * //------------------------------------------------------------------------- + * // Specify a `metaModelJSON` parameter, which creates a + * // MetaModel with two MetaObjects, one of which corresponds + * // to our Entity. Then the TreeViewPlugin is able to have a node + * // that can represent the model and control the visibility of the Entity. + * //-------------------------------------------------------------------------- + * + * metaModelJSON: { // Creates a MetaModel with ID "myScanModel" + * "metaObjects": [ + * { + * "id": "3toKckUfH2jBmd$7uhJHa6", // Creates a MetaObject with this ID + * "name": "My Project", + * "type": "Default", + * "parent": null + * }, + * { + * "id": "3toKckUfH2jBmd$7uhJHa4", // Creates a MetaObject with this ID (same ID as our Entity) + * "name": "My Scan", + * "type": "Default", + * "parent": "3toKckUfH2jBmd$7uhJHa6" + * } + * ] + * } + * }); + * ```` * @class GLTFLoaderPlugin */var GLTFLoaderPlugin=/*#__PURE__*/function(_Plugin7){_inherits(GLTFLoaderPlugin,_Plugin7);var _super151=_createSuper(GLTFLoaderPlugin);/** * @constructor @@ -29219,6 +29293,60 @@ var headerBlockItems=[{item:'FileSignature',format:'char',size:4},{item:'FileSou * }); * ```` * + * ## Showing a LAS/LAZ model in TreeViewPlugin + * + * We can use the `load()` method's `elementId` parameter + * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID. + * + * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that + * contains a MetaObject that corresponds to that Entity. + * + * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls + * the visibility of that Entity (ie. to control the visibility of the entire model). + * + * The snippet below shows how this is done. + * + * ````javascript + * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js"; + * + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * new TreeViewPlugin(viewer, { + * containerElement: document.getElementById("treeViewContainer"), + * hierarchy: "containment" + * }); + * + * const lasLoader = new LASLoaderPlugin(viewer); + * + * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID "myScanModel" + * id: "myScanModel", + * src: "../../assets/models/las/Nalls_Pumpkin_Hill.laz", + * rotation: [-90, 0, 0], + * + * entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID + * + * metaModelJSON: { // Creates a MetaModel with ID "myScanModel" + * "metaObjects": [ + * { + * "id": "3toKckUfH2jBmd$7uhJHa6", // Creates this MetaObject with this ID + * "name": "My Project", + * "type": "Default", + * "parent": null + * }, + * { + * "id": "3toKckUfH2jBmd$7uhJHa4", // Creates this MetaObject with this ID + * "name": "My Scan", + * "type": "Default", + * "parent": "3toKckUfH2jBmd$7uhJHa6" + * } + * ] + * } + * }); + * ```` + * * @class LASLoaderPlugin * @since 2.0.17 */var LASLoaderPlugin=/*#__PURE__*/function(_Plugin20){_inherits(LASLoaderPlugin,_Plugin20);var _super164=_createSuper(LASLoaderPlugin);/** @@ -29563,4 +29691,284 @@ var tr=earcut(pv,holes,2);// Create triangles for(var _k4=0;_k40&&geometryCfg.indices.length>0){var meshId=""+ctx.nextId++;sceneModel.createMesh({id:meshId,primitive:"triangles",positions:geometryCfg.positions,indices:geometryCfg.indices,color:objectMaterial&&objectMaterial.diffuseColor?objectMaterial.diffuseColor:[0.8,0.8,0.8],opacity:1.0//opacity: (objectMaterial && objectMaterial.transparency !== undefined) ? (1.0 - objectMaterial.transparency) : 1.0 });meshIds.push(meshId);ctx.stats.numGeometries++;ctx.stats.numVertices+=geometryCfg.positions.length/3;ctx.stats.numTriangles+=geometryCfg.indices.length/3;}}},{key:"_parseSurfacesWithSharedMaterial",value:function _parseSurfacesWithSharedMaterial(ctx,surfaces,sharedIndices,primitiveCfg){var vertices=ctx.vertices;for(var _i587=0;_i5870){holes.push(boundary.length);}var newBoundary=this._extractLocalIndices(ctx,surfaces[_i587][j],sharedIndices,primitiveCfg);boundary.push.apply(boundary,_toConsumableArray(newBoundary));}if(boundary.length===3){// Triangle primitiveCfg.indices.push(boundary[0]);primitiveCfg.indices.push(boundary[1]);primitiveCfg.indices.push(boundary[2]);}else if(boundary.length>3){// Polygon -var pList=[];for(var k=0;k](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House) + * + * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House)] + * + * * Creates an {@link Entity} representing each .bim model it loads, which will have {@link Entity#isModel} set ````true```` + * and will be registered by {@link Entity#id} in {@link Scene#models}. + * * Creates an {@link Entity} for each object within the .bim model. Those Entities will have {@link Entity#isObject} + * set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}. + * * When loading, can set the World-space position, scale and rotation of each model within World space, + * along with initial properties for all the model's {@link Entity}s. + * * Allows to mask which IFC types we want to load. + * * Allows to configure initial viewer state for specified IFC types (color, visibility, selection, highlighted, X-rayed, pickable, etc). + * + * ## Usage + * + * In the example below we'll load a house model from a [.bim file](/assets/models/dotbim/House.bim). + * + * This will create a bunch of {@link Entity}s that represents the model and its objects, along with + * a {@link MetaModel} and {@link MetaObject}s that hold their metadata. + * + * ````javascript + * import {Viewer, DotBIMLoaderPlugin} from "xeokit-sdk.es.js"; + * + * //------------------------------------------------------------------------------------------------------------------ + * // 1. Create a Viewer, + * // 2. Arrange the camera, + * // 3. Tweak the selection material (tone it down a bit) + * //------------------------------------------------------------------------------------------------------------------ + * + * // 1 + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * // 2 + * viewer.camera.orbitPitch(20); + * viewer.camera.orbitYaw(-45); + * + * // 3 + * viewer.scene.selectedMaterial.fillAlpha = 0.1; + * + * //------------------------------------------------------------------------------------------------------------------ + * // 1. Create a .bim loader plugin, + * // 2. Load a .bim building model, emphasizing the edges to make it look nicer + * //------------------------------------------------------------------------------------------------------------------ + * + * // 1 + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer); + * + * // 2 + * var model = dotBIMLoader.load({ // Returns an Entity that represents the model + * id: "myModel", + * src: "House.bim", + * edges: true + * }); + * + * // Find the model Entity by ID + * model = viewer.scene.models["myModel"]; + * + * // Destroy the model + * model.destroy(); + * ```` + * + * ## Transforming + * + * We have the option to rotate, scale and translate each *````.bim````* model as we load it. + * + * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other. + * + * In the example below, we'll rotate our model 90 degrees about its local X-axis, then + * translate it 100 units along its X axis. + * + * ````javascript + * const model = dotBIMLoader.load({ + * src: "House.bim", + * rotation: [90,0,0], + * position: [100, 0, 0] + * }); + * ```` + * + * ## Including and excluding IFC types + * + * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the + * objects that represent walls. + * + * ````javascript + * const model = dotBIMLoader.load({ + * id: "myModel", + * src: "House.bim", + * includeTypes: ["IfcWallStandardCase"] + * }); + * ```` + * + * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the + * objects that do not represent empty space. + * + * ````javascript + * const model = dotBIMLoader.load({ + * id: "myModel", + * src: "House.bim", + * excludeTypes: ["IfcSpace"] + * }); + * ```` + * + * # Configuring initial IFC object appearances + * + * We can specify the custom initial appearance of loaded objects according to their IFC types. + * + * This is useful for things like: + * + * * setting the colors to our objects according to their IFC types, + * * automatically hiding ````IfcSpace```` objects, and + * * ensuring that ````IfcWindow```` objects are always transparent. + *
+ * In the example below, we'll load a model, while configuring ````IfcSpace```` elements to be always initially invisible, + * and ````IfcWindow```` types to be always translucent blue. + * + * ````javascript + * const myObjectDefaults = { + * + * IfcSpace: { + * visible: false + * }, + * IfcWindow: { + * colorize: [0.337255, 0.303922, 0.870588], // Blue + * opacity: 0.3 + * }, + * + * //... + * + * DEFAULT: { + * colorize: [0.5, 0.5, 0.5] + * } + * }; + * + * const model4 = dotBIMLoader.load({ + * id: "myModel4", + * src: "House.bim", + * objectDefaults: myObjectDefaults // Use our custom initial default states for object Entities + * }); + * ```` + * + * When we don't customize the appearance of IFC types, as just above, then IfcSpace elements tend to obscure other + * elements, which can be confusing. + * + * It's often helpful to make IfcSpaces transparent and unpickable, like this: + * + * ````javascript + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer, { + * objectDefaults: { + * IfcSpace: { + * pickable: false, + * opacity: 0.2 + * } + * } + * }); + * ```` + * + * Alternatively, we could just make IfcSpaces invisible, which also makes them unpickable: + * + * ````javascript + * const dotBIMLoader = new DotBIMLoaderPlugin(viewer, { + * objectDefaults: { + * IfcSpace: { + * visible: false + * } + * } + * }); + * ```` + * + * # Configuring a custom data source + * + * By default, DotBIMLoaderPlugin will load *````.bim````* files and metadata JSON over HTTP. + * + * In the example below, we'll customize the way DotBIMLoaderPlugin loads the files by configuring it with our own data source + * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions. + * + * ````javascript + * import {utils} from "xeokit-sdk.es.js"; + * + * class MyDataSource { + * + * constructor() { + * } + * + * // Gets the contents of the given .bim file in a JSON object + * getDotBIM(src, ok, error) { + * utils.loadJSON(dotBIMSrc, + * (json) => { + * ok(json); + * }, + * function (errMsg) { + * error(errMsg); + * }); + * } + * } + * + * const dotBIMLoader2 = new DotBIMLoaderPlugin(viewer, { + * dataSource: new MyDataSource() + * }); + * + * const model5 = dotBIMLoader2.load({ + * id: "myModel5", + * src: "House.bim" + * }); + * ```` + * @class DotBIMLoaderPlugin + */var DotBIMLoaderPlugin=/*#__PURE__*/function(_Plugin22){_inherits(DotBIMLoaderPlugin,_Plugin22);var _super166=_createSuper(DotBIMLoaderPlugin);/** + * @constructor + * + * @param {Viewer} viewer The Viewer. + * @param {Object} cfg Plugin configuration. + * @param {String} [cfg.id="DotBIMLoader"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}. + * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}. + * @param {Object} [cfg.dataSource] A custom data source through which the DotBIMLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link DotBIMDefaultDataSource}, which loads over HTTP. + */function DotBIMLoaderPlugin(viewer){var _this173;var cfg=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,DotBIMLoaderPlugin);_this173=_super166.call(this,"DotBIMLoader",viewer,cfg);_this173.dataSource=cfg.dataSource;_this173.objectDefaults=cfg.objectDefaults;return _this173;}/** + * Sets a custom data source through which the DotBIMLoaderPlugin can .BIM files. + * + * Default value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest. + * + * @type {Object} + */_createClass(DotBIMLoaderPlugin,[{key:"dataSource",get:/** + * Gets the custom data source through which the DotBIMLoaderPlugin can load .BIM files. + * + * Default value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest. + * + * @type {Object} + */function get(){return this._dataSource;}/** + * Sets map of initial default states for each loaded {@link Entity} that represents an object. + * + * Default value is {@link IFCObjectDefaults}. + * + * @type {{String: Object}} + */,set:function set(value){this._dataSource=value||new DotBIMDefaultDataSource();}},{key:"objectDefaults",get:/** + * Gets map of initial default states for each loaded {@link Entity} that represents an object. + * + * Default value is {@link IFCObjectDefaults}. + * + * @type {{String: Object}} + */function get(){return this._objectDefaults;}/** + * Loads a .BIM model from a file into this DotBIMLoaderPlugin's {@link Viewer}. + * + * @param {*} params Loading parameters. + * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default. + * @param {String} [params.src] Path to a .BIM file, as an alternative to the ````bim```` parameter. + * @param {*} [params.bim] .BIM JSON, as an alternative to the ````src```` parameter. + * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}. + * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list. + * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list. + * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates. + * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````. + * @param {Number[]} [params.scale=[1,1,1]] The model's scale. + * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis. + * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the .BIM material is single-sided. When false, only show backfaces on geometries whenever the .BIM material is double-sided. + * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to + * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable + * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point + * primitives. Only works while {@link DTX#enabled} is also ````true````. + * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models} + */,set:function set(value){this._objectDefaults=value||IFCObjectDefaults;}},{key:"load",value:function load(){var _this174=this;var params=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(params.id&&this.viewer.scene.components[params.id]){this.error("Component with this ID already exists in viewer: "+params.id+" - will autogenerate this ID");delete params.id;}var sceneModel=new SceneModel(this.viewer.scene,utils.apply(params,{isModel:true,backfaces:params.backfaces,dtxEnabled:params.dtxEnabled,rotation:params.rotation,origin:params.origin}));var modelId=sceneModel.id;// In case ID was auto-generated +if(!params.src&&!params.dotBIM){this.error("load() param expected: src or dotBIM");return sceneModel;// Return new empty model +}var objectDefaults=params.objectDefaults||this._objectDefaults||IFCObjectDefaults;var includeTypes;if(params.includeTypes){includeTypes={};for(var _i590=0,len=params.includeTypes.length;_i590>t;i.sort(CA);const s=new Int32Array(e.length);for(let t=0,r=i.length;te[t+1]){let i=e[t];e[t]=e[t+1],e[t+1]=i}MA=new Int32Array(e),t.sort(FA);const i=new Int32Array(e.length);for(let s=0,r=t.length;st){let i=e;e=t,t=i}function i(i,s){return i!==e?e-i:s!==t?t-s:0}let s=0,r=(o.length>>1)-1;for(;s<=r;){const e=r+s>>1,t=i(o[2*e],o[2*e+1]);if(t>0)s=e+1;else{if(!(t<0))return e;r=e-1}}return-s-1}const a=new Int32Array(o.length/2);a.fill(0);const l=s.length/3;if(l>8*(1<u.maxNumPositions&&(u=c()),u.bucketNumber>8)return[e];let p;-1===A[l]&&(A[l]=u.numPositions++,u.positionsCompressed.push(s[3*l]),u.positionsCompressed.push(s[3*l+1]),u.positionsCompressed.push(s[3*l+2])),-1===A[h]&&(A[h]=u.numPositions++,u.positionsCompressed.push(s[3*h]),u.positionsCompressed.push(s[3*h+1]),u.positionsCompressed.push(s[3*h+2])),-1===A[d]&&(A[d]=u.numPositions++,u.positionsCompressed.push(s[3*d]),u.positionsCompressed.push(s[3*d+1]),u.positionsCompressed.push(s[3*d+2])),u.indices.push(A[l]),u.indices.push(A[h]),u.indices.push(A[d]),(p=n(l,h))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(l,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(h,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]]))}const d=t/8*2,p=t/8,f=2*s.length+(r.length+o.length)*d;let g=0,m=-s.length/3;return h.forEach((e=>{g+=2*e.positionsCompressed.length+(e.indices.length+e.edgeIndices.length)*p,m+=e.positionsCompressed.length/3})),g>f?[e]:(i&&function(e,t){const i={},s={};let r=0;e.forEach((e=>{const t=e.indices,o=e.edgeIndices,n=e.positionsCompressed;for(let e=0,s=t.length;e0){const e=t._meshes;for(let t=0,i=e.length;t0){const e=this._meshes;for(let t=0,i=e.length;t{this._viewMatrixDirty=!0})),this._meshesWithDirtyMatrices=[],this._numMeshesWithDirtyMatrices=0,this._onTick=this.scene.on("tick",(()=>{for(;this._numMeshesWithDirtyMatrices>0;)this._meshesWithDirtyMatrices[--this._numMeshesWithDirtyMatrices]._updateMatrix()})),this._createDefaultTextureSet(),this.visible=t.visible,this.culled=t.culled,this.pickable=t.pickable,this.clippable=t.clippable,this.collidable=t.collidable,this.castsShadow=t.castsShadow,this.receivesShadow=t.receivesShadow,this.xrayed=t.xrayed,this.highlighted=t.highlighted,this.selected=t.selected,this.edges=t.edges,this.colorize=t.colorize,this.opacity=t.opacity,this.backfaces=t.backfaces}_meshMatrixDirty(e){this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++]=e}_createDefaultTextureSet(){const e=new AA({id:"defaultColorTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})}),t=new AA({id:"defaultMetalRoughTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[0,1,1,1]})}),i=new AA({id:"defaultNormalsTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[0,0,0,0]})}),s=new AA({id:"defaultEmissiveTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[0,0,0,1]})}),r=new AA({id:"defaultOcclusionTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})});this._textures.defaultColorTexture=e,this._textures.defaultMetalRoughTexture=t,this._textures.defaultNormalsTexture=i,this._textures.defaultEmissiveTexture=s,this._textures.defaultOcclusionTexture=r,this._textureSets.defaultTextureSet=new lA({id:"defaultTextureSet",model:this,colorTexture:e,metallicRoughnessTexture:t,normalsTexture:i,emissiveTexture:s,occlusionTexture:r})}get isPerformanceModel(){return!0}get transforms(){return this._transforms}get textures(){return this._textures}get textureSets(){return this._textureSets}get meshes(){return this._meshes}get objects(){return this._entities}get origin(){return this._origin}set position(e){this._position.set(e||[0,0,0]),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get position(){return this._position}set rotation(e){this._rotation.set(e||[0,0,0]),c.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get rotation(){return this._rotation}set quaternion(e){this._quaternion.set(e||[0,0,0,1]),c.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get quaternion(){return this._quaternion}set scale(e){}get scale(){return this._scale}set matrix(e){this._matrix.set(e||GA),c.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),c.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),c.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),c.translateMat4v(this._position,this._matrix),this._matrixDirty=!1,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get matrix(){return this._matrixDirty&&this._rebuildMatrices(),this._matrix}get rotationMatrix(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrix}_rebuildMatrices(){this._matrixDirty&&(c.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),c.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),c.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),c.translateMat4v(this._position,this._matrix),this._matrixDirty=!1)}get rotationMatrixConjugate(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrixConjugate}_setWorldMatrixDirty(){this._matrixDirty=!0,this._aabbDirty=!0}_transformDirty(){this._matrixDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0}_sceneModelDirty(){this.scene._aabbDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0,this._matrixDirty=!0;for(let e=0,t=this._entityList.length;e0}set visible(e){e=!1!==e,this._visible=e;for(let t=0,i=this._entityList.length;t0}set xrayed(e){e=!!e,this._xrayed=e;for(let t=0,i=this._entityList.length;t0}set highlighted(e){e=!!e,this._highlighted=e;for(let t=0,i=this._entityList.length;t0}set selected(e){e=!!e,this._selected=e;for(let t=0,i=this._entityList.length;t0}set edges(e){e=!!e,this._edges=e;for(let t=0,i=this._entityList.length;t0}set pickable(e){e=!1!==e,this._pickable=e;for(let t=0,i=this._entityList.length;t0)e.colorsCompressed=new Uint8Array(e.colorsCompressed);else if(e.colors&&e.colors.length>0){const t=e.colors,i=new Uint8Array(t.length);for(let e=0,s=t.length;e{l.setImage(A,{minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,flipY:e.flipY,encoding:a}),this.glRedraw()},A.src=e.src;break;default:this._textureTranscoder?_.loadArraybuffer(e.src,(e=>{e.byteLength?this._textureTranscoder.transcode([e],l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'src': file data is zero length")}),(function(e){this.error(`[createTexture] Can't create texture from 'src': ${e}`)})):this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${t}')`)}}else e.buffers&&(this._textureTranscoder?this._textureTranscoder.transcode(e.buffers,l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option"));this._textures[t]=new AA({id:t,texture:l})}createTextureSet(e){const t=e.id;if(null==t)return void this.error("[createTextureSet] Config missing: id");if(this._textureSets[t])return void this.error(`[createTextureSet] Texture set already created: ${t}`);let i,s,r,o,n;if(void 0!==e.colorTextureId&&null!==e.colorTextureId){if(i=this._textures[e.colorTextureId],!i)return void this.error(`[createTextureSet] Texture not found: ${e.colorTextureId} - ensure that you create it first with createTexture()`)}else i=this._textures.defaultColorTexture;if(void 0!==e.metallicRoughnessTextureId&&null!==e.metallicRoughnessTextureId){if(s=this._textures[e.metallicRoughnessTextureId],!s)return void this.error(`[createTextureSet] Texture not found: ${e.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`)}else s=this._textures.defaultMetalRoughTexture;if(void 0!==e.normalsTextureId&&null!==e.normalsTextureId){if(r=this._textures[e.normalsTextureId],!r)return void this.error(`[createTextureSet] Texture not found: ${e.normalsTextureId} - ensure that you create it first with createTexture()`)}else r=this._textures.defaultNormalsTexture;if(void 0!==e.emissiveTextureId&&null!==e.emissiveTextureId){if(o=this._textures[e.emissiveTextureId],!o)return void this.error(`[createTextureSet] Texture not found: ${e.emissiveTextureId} - ensure that you create it first with createTexture()`)}else o=this._textures.defaultEmissiveTexture;if(void 0!==e.occlusionTextureId&&null!==e.occlusionTextureId){if(n=this._textures[e.occlusionTextureId],!n)return void this.error(`[createTextureSet] Texture not found: ${e.occlusionTextureId} - ensure that you create it first with createTexture()`)}else n=this._textures.defaultOcclusionTexture;const a=new lA({id:t,model:this,colorTexture:i,metallicRoughnessTexture:s,normalsTexture:r,emissiveTexture:o,occlusionTexture:n});return this._textureSets[t]=a,a}createTransform(e){if(void 0===e.id||null===e.id)return void this.error("[createTransform] SceneModel.createTransform() config missing: id");if(this._transforms[e.id])return void this.error(`[createTransform] SceneModel already has a transform with this ID: ${e.id}`);let t;if(e.parentTransformId&&(t=this._transforms[e.parentTransformId],!t))return void this.error("[createTransform] SceneModel.createTransform() config missing: id");const i=new kA({id:e.id,model:this,parent:t,matrix:e.matrix,position:e.position,scale:e.scale,rotation:e.rotation,quaternion:e.quaternion});return this._transforms[i.id]=i,i}createMesh(e){if(void 0===e.id||null===e.id)return this.error("[createMesh] SceneModel.createMesh() config missing: id"),!1;if(this._meshes[e.id])return this.error(`[createMesh] SceneModel already has a mesh with this ID: ${e.id}`),!1;if(!(void 0!==e.geometryId)){if(void 0!==e.primitive&&null!==e.primitive||(e.primitive="triangles"),"points"!==e.primitive&&"lines"!==e.primitive&&"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)return this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`),!1;if(!e.positions&&!e.positionsCompressed&&!e.buckets)return this.error("Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)"),!1;if(e.positions&&(e.positionsDecodeMatrix||e.positionsDecodeBoundary))return this.error("Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.positionsCompressed&&!e.positionsDecodeMatrix&&!e.positionsDecodeBoundary)return this.error("Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.uvCompressed&&!e.uvDecodeMatrix)return this.error("Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)"),!1;if(!(e.buckets||e.indices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)){const t=(e.positions||e.positionsCompressed).length/3;e.indices=this._createDefaultIndices(t)}if(!e.buckets&&!e.indices&&"points"!==e.primitive)return e.indices=this._createDefaultIndices(numIndices),this.error(`Param expected: indices (required for '${e.primitive}' primitive type)`),!1;if((e.matrix||e.position||e.rotation||e.scale)&&(e.positionsCompressed||e.positionsDecodeBoundary))return this.error("Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'"),!1;const t=!(!this._dtxEnabled||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||e.textureSetId);if(e.origin=e.origin?c.addVec3(this._origin,e.origin,c.vec3()):this._origin,e.matrix)e.meshMatrix=e.matrix;else if(e.scale||e.rotation||e.position){const t=e.scale||QA,i=e.position||VA,s=e.rotation||HA;c.eulerToQuaternion(s,"XYZ",jA),e.meshMatrix=c.composeMat4(i,jA,t,c.mat4())}if(e.positionsDecodeBoundary&&(e.positionsDecodeMatrix=Lr(e.positionsDecodeBoundary,c.mat4())),t){if(e.type=2,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):zA,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.positions){const t=c.vec3(),i=[];z(e.positions,i,t)&&(e.positions=i,e.origin=c.addVec3(e.origin,t,t))}if(e.positions){const t=c.collapseAABB3();e.positionsDecodeMatrix=c.mat4(),c.expandAABB3Points3(t,e.positions),e.positionsCompressed=Rr(e.positions,t,e.positionsDecodeMatrix),e.aabb=t}else if(e.positionsCompressed){const t=c.collapseAABB3();c.expandAABB3Points3(t,e.positionsCompressed),Rt.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.buckets){const t=c.collapseAABB3();for(let i=0,s=e.buckets.length;i>24&255,r=i>>16&255,o=i>>8&255,n=255&i;switch(e.pickColor=new Uint8Array([n,o,r,s]),e.solid="solid"===e.primitive,t.origin=c.vec3(e.origin),e.type){case 2:t.layer=this._getDTXLayer(e),t.aabb=e.aabb;break;case 1:t.layer=this._getVBOBatchingLayer(e),t.aabb=e.aabb;break;case 0:t.layer=this._getVBOInstancingLayer(e),t.aabb=e.aabb}return e.transform&&(e.meshMatrix=e.transform.worldMatrix),t.portionId=t.layer.createPortion(t,e),this._meshes[e.id]=t,this._unusedMeshes[e.id]=t,this._meshList.push(t),t}_getNumPrimitives(e){let t=0;switch(e.geometry?e.geometry.primitive:e.primitive){case"triangles":case"solid":case"surface":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i>>0).toString(16)}_getVBOInstancingLayer(e){const t=this,i=e.origin,s=e.textureSetId||"-",r=e.geometryId,o=`${Math.round(i[0])}.${Math.round(i[1])}.${Math.round(i[2])}.${s}.${r}`;let n=this._vboInstancingLayers[o];if(n)return n;let a=e.textureSet;const l=e.geometry;for(;!n;)switch(l.primitive){case"triangles":case"surface":n=new Qo({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!1});break;case"solid":n=new Qo({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!0});break;case"lines":n=new Cn({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0});break;case"points":n=new va({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0})}return this._vboInstancingLayers[o]=n,this.layerList.push(n),n}createEntity(e){if(void 0===e.id?e.id=c.createUUID():this.scene.components[e.id]&&(this.error(`Scene already has a Component with this ID: ${e.id} - will assign random ID`),e.id=c.createUUID()),void 0===e.meshIds)return void this.error("Config missing: meshIds");let t=0;this._visible&&!1!==e.visible&&(t|=K),this._pickable&&!1!==e.pickable&&(t|=J),this._culled&&!1!==e.culled&&(t|=X),this._clippable&&!1!==e.clippable&&(t|=Y),this._collidable&&!1!==e.collidable&&(t|=Z),this._edges&&!1!==e.edges&&(t|=te),this._xrayed&&!1!==e.xrayed&&(t|=q),this._highlighted&&!1!==e.highlighted&&(t|=$),this._selected&&!1!==e.selected&&(t|=ee),e.flags=t,this._createEntity(e)}_createEntity(e){let t=[];for(let i=0,s=e.meshIds.length;ie.sortIdt.sortId?1:0));for(let e=0,t=this.layerList.length;e0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}_updateRenderFlagsVisibleLayers(){const e=this.renderFlags;e.numLayers=this.layerList.length,e.numVisibleLayers=0;for(let t=0,i=this.layerList.length;t0){const t=`${this.id}-dummyEntityForUnusedMeshes`;this.warn(`Creating dummy SceneModelEntity "${t}" for unused SceneMeshes: [${e.join(",")}]`),this.createEntity({id:t,meshIds:e,isObject:!0})}this._unusedMeshes={}}_getActiveSectionPlanesForLayer(e){const t=this.renderFlags,i=this.scene._sectionPlanesState.sectionPlanes,s=i.length,r=e.layerIndex*s;if(s>0)for(let e=0;e0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){const t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0){this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions0&&(e.edgesTransparent=!0))}if(this.numSelectedLayerPortions>0){const t=this.scene.selectedMaterial._state;t.fill&&(t.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){const t=this.scene.highlightMaterial._state;t.fill&&(t.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}drawColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i65536?16:8)}else n=[{positionsCompressed:s,indices:r,edgeIndices:o}];return n}class XA extends D{constructor(e,t={}){if(super(e,t),this._positions=t.positions||[],t.indices)this._indices=t.indices;else{this._indices=[];for(let e=0,t=this._positions.length/3-1;e{var r=e-i,o=t-s;return Math.sqrt(r*r+o*o)};class oh extends D{constructor(e,t={}){if(super(e.viewer.scene,t),this.plugin=e,this._container=t.container,!this._container)throw"config missing: container";this._eventSubs={};var i=this.plugin.viewer.scene;this._originMarker=new ae(i,t.origin),this._targetMarker=new ae(i,t.target),this._originWorld=c.vec3(),this._targetWorld=c.vec3(),this._wp=new Float64Array(24),this._vp=new Float64Array(24),this._pp=new Float64Array(24),this._cp=new Float64Array(8),this._xAxisLabelCulled=!1,this._yAxisLabelCulled=!1,this._zAxisLabelCulled=!1,this._color=t.color||this.plugin.defaultColor;const s=t.onMouseOver?e=>{t.onMouseOver(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseover",e))}:null,r=t.onMouseLeave?e=>{t.onMouseLeave(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseleave",e))}:null,o=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousedown",e))},n=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseup",e))},a=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousemove",e))},l=t.onContextMenu?e=>{t.onContextMenu(e,this)}:null,A=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent("wheel",e))};this._originDot=new he(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._targetDot=new he(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthWire=new Ae(this._container,{color:this._color,thickness:2,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisWire=new Ae(this._container,{color:"#FF0000",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisWire=new Ae(this._container,{color:"green",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisWire=new Ae(this._container,{color:"blue",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthLabel=new ce(this._container,{fillColor:this._color,prefix:"",text:"",zIndex:void 0!==e.zIndex?e.zIndex+4:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisLabel=new ce(this._container,{fillColor:"red",prefix:"X",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisLabel=new ce(this._container,{fillColor:"green",prefix:"Y",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisLabel=new ce(this._container,{fillColor:"blue",prefix:"Z",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._measurementOrientation="Horizontal",this._wpDirty=!1,this._vpDirty=!1,this._cpDirty=!1,this._sectionPlanesDirty=!0,this._visible=!1,this._originVisible=!1,this._targetVisible=!1,this._wireVisible=!1,this._axisVisible=!1,this._xAxisVisible=!1,this._yAxisVisible=!1,this._zAxisVisible=!1,this._axisEnabled=!0,this._xLabelEnabled=!1,this._yLabelEnabled=!1,this._zLabelEnabled=!1,this._lengthLabelEnabled=!1,this._labelsVisible=!1,this._labelsOnWires=!1,this._clickable=!1,this._originMarker.on("worldPos",(e=>{this._originWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._targetMarker.on("worldPos",(e=>{this._targetWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._onViewMatrix=i.camera.on("viewMatrix",(()=>{this._vpDirty=!0,this._needUpdate(0)})),this._onProjMatrix=i.camera.on("projMatrix",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onCanvasBoundary=i.canvas.on("boundary",(()=>{this._cpDirty=!0,this._needUpdate(0)})),this._onMetricsUnits=i.metrics.on("units",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsScale=i.metrics.on("scale",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsOrigin=i.metrics.on("origin",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onSectionPlaneUpdated=i.on("sectionPlaneUpdated",(()=>{this._sectionPlanesDirty=!0,this._needUpdate()})),this.approximate=t.approximate,this.visible=t.visible,this.originVisible=t.originVisible,this.targetVisible=t.targetVisible,this.wireVisible=t.wireVisible,this.axisVisible=t.axisVisible,this.xAxisVisible=t.xAxisVisible,this.yAxisVisible=t.yAxisVisible,this.zAxisVisible=t.zAxisVisible,this.xLabelEnabled=t.xLabelEnabled,this.yLabelEnabled=t.yLabelEnabled,this.zLabelEnabled=t.zLabelEnabled,this.lengthLabelEnabled=t.lengthLabelEnabled,this.labelsVisible=t.labelsVisible,this.labelsOnWires=t.labelsOnWires}_update(){if(!this._visible)return;const e=this.plugin.viewer.scene;if(this._wpDirty&&(this._measurementOrientation=function(e,t,i){return Math.abs(t[1]-e[1])>i?"Vertical":"Horizontal"}(this._originWorld,this._targetWorld,1),"Vertical"===this._measurementOrientation?(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._originWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._originWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1):(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._targetWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._targetWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1),this._wpDirty=!1,this._vpDirty=!0),this._vpDirty&&(c.transformPositions4(e.camera.viewMatrix,this._wp,this._vp),this._vp[3]=1,this._vp[7]=1,this._vp[11]=1,this._vp[15]=1,this._vpDirty=!1,this._cpDirty=!0),this._sectionPlanesDirty){if(this._isSliced(this._originWorld)||this._isSliced(this._targetWorld))return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setCulled(!0),this._yAxisWire.setCulled(!0),this._zAxisWire.setCulled(!0),this._lengthWire.setCulled(!0),this._originDot.setCulled(!0),void this._targetDot.setCulled(!0);this._xAxisLabel.setCulled(!1),this._yAxisLabel.setCulled(!1),this._zAxisLabel.setCulled(!1),this._lengthLabel.setCulled(!1),this._xAxisWire.setCulled(!1),this._yAxisWire.setCulled(!1),this._zAxisWire.setCulled(!1),this._lengthWire.setCulled(!1),this._originDot.setCulled(!1),this._targetDot.setCulled(!1),this._sectionPlanesDirty=!0}const t=this._originMarker.viewPos[2],i=this._targetMarker.viewPos[2];if(t>-.3||i>-.3)return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setVisible(!1),this._yAxisWire.setVisible(!1),this._zAxisWire.setVisible(!1),this._lengthWire.setVisible(!1),this._originDot.setVisible(!1),void this._targetDot.setVisible(!1);if(this._cpDirty){c.transformPositions4(e.camera.project.matrix,this._vp,this._pp);var s=this._pp,r=this._cp,o=e.canvas.canvas.getBoundingClientRect();const t=this._container.getBoundingClientRect();var n=o.top-t.top,a=o.left-t.left,l=e.canvas.boundary,A=l[2],h=l[3],u=0;const i=this.plugin.viewer.scene.metrics,f=i.scale,g=i.units,m=i.unitsInfo[g].abbrev;for(var d=0,p=s.length;de.offsetTop+(e.offsetParent&&e.offsetParent!==s.parentNode&&h(e.offsetParent)),u=e=>e.offsetLeft+(e.offsetParent&&e.offsetParent!==s.parentNode&&u(e.offsetParent)),d=c.vec2();this._onCameraControlHoverSnapOrSurface=i.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",(e=>{const t=e.snappedCanvasPos||e.canvasPos;r=!0,o.set(e.worldPos),n.set(e.canvasPos),0===this._mouseState?(this._canvasToPagePos?(this._canvasToPagePos(s,t,d),this._markerDiv.style.left=d[0]-5+"px",this._markerDiv.style.top=d[1]-5+"px"):(this._markerDiv.style.left=u(s)+t[0]-5+"px",this._markerDiv.style.top=h(s)+t[1]-5+"px"),this._markerDiv.style.background="pink",e.snappedToVertex||e.snappedToEdge?(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos,this.pointerLens.snapped=!0),this._markerDiv.style.background="greenyellow",this._markerDiv.style.border="2px solid green"):(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.canvasPos,this.pointerLens.snapped=!1),this._markerDiv.style.background="pink",this._markerDiv.style.border="2px solid red"),A=e.entity):(this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px"),s.style.cursor="pointer",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=this._currentDistanceMeasurementInitState.wireVisible,this._currentDistanceMeasurement.axisVisible=this._currentDistanceMeasurementInitState.axisVisible&&this.distanceMeasurementsPlugin.defaultAxisVisible,this._currentDistanceMeasurement.xAxisVisible=this._currentDistanceMeasurementInitState.xAxisVisible&&this.distanceMeasurementsPlugin.defaultXAxisVisible,this._currentDistanceMeasurement.yAxisVisible=this._currentDistanceMeasurementInitState.yAxisVisible&&this.distanceMeasurementsPlugin.defaultYAxisVisible,this._currentDistanceMeasurement.zAxisVisible=this._currentDistanceMeasurementInitState.zAxisVisible&&this.distanceMeasurementsPlugin.defaultZAxisVisible,this._currentDistanceMeasurement.targetVisible=this._currentDistanceMeasurementInitState.targetVisible,this._currentDistanceMeasurement.target.worldPos=o.slice(),this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px")})),s.addEventListener("mousedown",this._onMouseDown=e=>{1===e.which&&(a=e.clientX,l=e.clientY)}),s.addEventListener("mouseup",this._onMouseUp=t=>{1===t.which&&(t.clientX>a+20||t.clientXl+20||t.clientY{this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos),r=!1,this._markerDiv.style.left="-100px",this._markerDiv.style.top="-100px",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.axisVisible=!1),s.style.cursor="default"})),this._active=!0}deactivate(){if(!this._active)return;this.fire("activated",!1),this.pointerLens&&(this.pointerLens.visible=!1),this._markerDiv&&this._destroyMarkerDiv(),this.reset();const e=this.scene.canvas.canvas;e.removeEventListener("mousedown",this._onMouseDown),e.removeEventListener("mouseup",this._onMouseUp);const t=this.distanceMeasurementsPlugin.viewer.cameraControl;t.off(this._onCameraControlHoverSnapOrSurface),t.off(this._onCameraControlHoverSnapOrSurfaceOff),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._active=!1}reset(){this._active&&(this._destroyMarkerDiv(),this._initMarkerDiv(),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._mouseState=0)}get currentMeasurement(){return this._currentDistanceMeasurement}destroy(){this.deactivate(),super.destroy()}}class lh{constructor(){}getMetaModel(e,t,i){_.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getGLTF(e,t,i){_.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getGLB(e,t,i){_.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getArrayBuffer(e,t,i,s){!function(e,t,i,s){var r=()=>{};i=i||r,s=s||r;const o=/^data:(.*?)(;base64)?,(.*)$/,n=t.match(o);if(n){const e=!!n[2];var a=n[3];a=window.decodeURIComponent(a),e&&(a=window.atob(a));try{const e=new ArrayBuffer(a.length),t=new Uint8Array(e);for(var l=0;l{i(e)}),(function(e){s(e)}))}}class Ah{constructor(e={}){this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale="en",this._messages={},this._locales=[],this._locale="en",this.messages=e.messages,this.locale=e.locale}set messages(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire("updated",this)}loadMessages(e={}){for(let t in e)this._messages[t]=e[t];this.messages=this._messages}clearMessages(){this.messages={}}get locales(){return this._locales}set locale(e){e=e||"de",this._locale!==e&&(this._locale=e,this.fire("updated",e))}get locale(){return this._locale}translate(e,t){const i=this._messages[this._locale];if(!i)return null;const s=hh(e,i);return s?t?ch(s,t):s:null}translatePlurals(e,t,i){const s=this._messages[this._locale];if(!s)return null;let r=hh(e,s);return r=0===(t=parseInt(""+t,10))?r.zero:t>1?r.other:r.one,r?(r=ch(r,[t]),i&&(r=ch(r,i)),r):null}fire(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);const s=this._eventSubs[e];if(s)for(const e in s)if(s.hasOwnProperty(e)){s[e].callback(t)}}on(t,i){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new e),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});let s=this._eventSubs[t];s||(s={},this._eventSubs[t]=s);const r=this._eventSubIDMap.addItem();s[r]={callback:i},this._eventSubEvents[r]=t;const o=this._events[t];return void 0!==o&&i(o),r}off(e){if(null==e)return;if(!this._eventSubEvents)return;const t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];const i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}function hh(e,t){if(t[e])return t[e];const i=e.split(".");let s=t;for(let e=0,t=i.length;s&&e1?1:e}get t(){return this._t}get tangent(){return this.getTangent(this._t)}get length(){var e=this._getLengths();return e[e.length-1]}getTangent(e){var t=1e-4;void 0===e&&(e=this._t);var i=e-t,s=e+t;i<0&&(i=0),s>1&&(s=1);var r=this.getPoint(i),o=this.getPoint(s),n=c.subVec3(o,r,[]);return c.normalizeVec3(n,[])}getPointAt(e){var t=this.getUToTMapping(e);return this.getPoint(t)}getPoints(e){e||(e=5);var t,i=[];for(t=0;t<=e;t++)i.push(this.getPoint(t/e));return i}_getLengths(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i,s=[],r=this.getPoint(0),o=0;for(s.push(0),i=1;i<=e;i++)t=this.getPoint(i/e),o+=c.lenVec3(c.subVec3(t,r,[])),s.push(o),r=t;return this.cacheArcLengths=s,s}_updateArcLengths(){this.needsUpdate=!0,this._getLengths()}getUToTMapping(e,t){var i,s=this._getLengths(),r=0,o=s.length;i=t||e*s[o-1];for(var n,a=0,l=o-1;a<=l;)if((n=s[r=Math.floor(a+(l-a)/2)]-i)<0)a=r+1;else{if(!(n>0)){l=r;break}l=r-1}if(s[r=l]===i)return r/(o-1);var A=s[r];return(r+(i-A)/(s[r+1]-A))/(o-1)}}class dh extends uh{constructor(e,t={}){super(e,t),this.points=t.points,this.t=t.t}set points(e){this._points=e||[]}get points(){return this._points}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=this.points;if(!(t.length<3)){var i=(t.length-1)*e,s=Math.floor(i),r=i-s,o=t[0===s?s:s-1],n=t[s],a=t[s>t.length-2?t.length-1:s+1],l=t[s>t.length-3?t.length-1:s+2],A=c.vec3();return A[0]=c.catmullRomInterpolate(o[0],n[0],a[0],l[0],r),A[1]=c.catmullRomInterpolate(o[1],n[1],a[1],l[1],r),A[2]=c.catmullRomInterpolate(o[2],n[2],a[2],l[2],r),A}this.error("Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].")}getJSON(){return{points:points,t:this._t}}}const ph=c.vec3();const fh=c.vec3(),gh=c.vec3(),mh=c.vec3(),_h=c.vec3(),vh=c.vec3();class bh extends D{get type(){return"CameraFlightAnimation"}constructor(e,t={}){super(e,t),this._look1=c.vec3(),this._eye1=c.vec3(),this._up1=c.vec3(),this._look2=c.vec3(),this._eye2=c.vec3(),this._up2=c.vec3(),this._orthoScale1=1,this._orthoScale2=1,this._flying=!1,this._flyEyeLookUp=!1,this._flyingEye=!1,this._flyingLook=!1,this._callback=null,this._callbackScope=null,this._time1=null,this._time2=null,this.easing=!1!==t.easing,this.duration=t.duration,this.fit=t.fit,this.fitFOV=t.fitFOV,this.trail=t.trail}flyTo(e,t,i){e=e||this.scene,this._flying&&this.stop(),this._flying=!1,this._flyingEye=!1,this._flyingLook=!1,this._flyingEyeLookUp=!1,this._callback=t,this._callbackScope=i;const s=this.scene.camera,r=!!e.projection&&e.projection!==s.projection;let o,n,a,l,A;if(this._eye1[0]=s.eye[0],this._eye1[1]=s.eye[1],this._eye1[2]=s.eye[2],this._look1[0]=s.look[0],this._look1[1]=s.look[1],this._look1[2]=s.look[2],this._up1[0]=s.up[0],this._up1[1]=s.up[1],this._up1[2]=s.up[2],this._orthoScale1=s.ortho.scale,this._orthoScale2=e.orthoScale||this._orthoScale1,e.aabb)o=e.aabb;else if(6===e.length)o=e;else if(e.eye&&e.look||e.up)n=e.eye,a=e.look,l=e.up;else if(e.eye)n=e.eye;else if(e.look)a=e.look;else{let s=e;if((_.isNumeric(s)||_.isString(s))&&(A=s,s=this.scene.components[A],!s))return this.error("Component not found: "+_.inQuotes(A)),void(t&&(i?t.call(i):t()));r||(o=s.aabb||this.scene.aabb)}const h=e.poi;if(o){if(o[3]=1;e>1&&(e=1);const i=this.easing?bh._ease(e,0,1,1):e,s=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?(c.subVec3(s.eye,s.look,vh),s.eye=c.lerpVec3(i,0,1,this._eye1,this._eye2,mh),s.look=c.subVec3(mh,vh,gh)):this._flyingLook&&(s.look=c.lerpVec3(i,0,1,this._look1,this._look2,gh),s.up=c.lerpVec3(i,0,1,this._up1,this._up2,_h)):this._flyingEyeLookUp&&(s.eye=c.lerpVec3(i,0,1,this._eye1,this._eye2,mh),s.look=c.lerpVec3(i,0,1,this._look1,this._look2,gh),s.up=c.lerpVec3(i,0,1,this._up1,this._up2,_h)),this._projection2){const t="ortho"===this._projection2?bh._easeOutExpo(e,0,1,1):bh._easeInCubic(e,0,1,1);s.customProjection.matrix=c.lerpMat4(t,0,1,this._projMatrix1,this._projMatrix2)}else s.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return s.ortho.scale=this._orthoScale2,void this.stop();M.scheduleTask(this._update,this)}static _ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}static _easeInCubic(e,t,i,s){return i*(e/=s)*e*e+t}static _easeOutExpo(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}stop(){if(!this._flying)return;this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);const e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire("stopped",!0,!0)}cancel(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire("canceled",!0,!0))}set duration(e){this._duration=e?1e3*e:500,this.stop()}get duration(){return this._duration/1e3}set fit(e){this._fit=!1!==e}get fit(){return this._fit}set fitFOV(e){this._fitFOV=e||45}get fitFOV(){return this._fitFOV}set trail(e){this._trail=!!e}get trail(){return this._trail}destroy(){this.stop(),super.destroy()}}class yh extends D{get type(){return"CameraPathAnimation"}constructor(e,t={}){super(e,t),this._cameraFlightAnimation=new bh(this),this._t=0,this.state=yh.SCRUBBING,this._playingFromT=0,this._playingToT=0,this._playingRate=t.playingRate||1,this._playingDir=1,this._lastTime=null,this.cameraPath=t.cameraPath,this._tick=this.scene.on("tick",this._updateT,this)}_updateT(){const e=this._cameraPath;if(!e)return;let t,i;const s=performance.now(),r=this._lastTime?.001*(s-this._lastTime):0;if(this._lastTime=s,0!==r)switch(this.state){case yh.SCRUBBING:return;case yh.PLAYING:if(this._t+=this._playingRate*r,t=this._cameraPath.frames.length,0===t||this._playingDir<0&&this._t<=0||this._playingDir>0&&this._t>=this._cameraPath.frames[t-1].t)return this.state=yh.SCRUBBING,this._t=this._cameraPath.frames[t-1].t,void this.fire("stopped");e.loadFrame(this._t);break;case yh.PLAYING_TO:i=this._t+this._playingRate*r*this._playingDir,(this._playingDir<0&&i<=this._playingToT||this._playingDir>0&&i>=this._playingToT)&&(i=this._playingToT,this.state=yh.SCRUBBING,this.fire("stopped")),this._t=i,e.loadFrame(this._t)}}_ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}set cameraPath(e){this._cameraPath=e}get cameraPath(){return this._cameraPath}set rate(e){this._playingRate=e}get rate(){return this._playingRate}play(){this._cameraPath&&(this._lastTime=null,this.state=yh.PLAYING)}playToT(e){this._cameraPath&&(this._playingFromT=this._t,this._playingToT=e,this._playingDir=this._playingToT-this._playingFromT<0?-1:1,this._lastTime=null,this.state=yh.PLAYING_TO)}playToFrame(e){const t=this._cameraPath;if(!t)return;const i=t.frames[e];i?this.playToT(i.t):this.error("playToFrame - frame index out of range: "+e)}flyToFrame(e,t){const i=this._cameraPath;if(!i)return;const s=i.frames[e];s?(this.state=yh.SCRUBBING,this._cameraFlightAnimation.flyTo(s,t)):this.error("flyToFrame - frame index out of range: "+e)}scrubToT(e){const t=this._cameraPath;if(!t)return;this.scene.camera&&(this._t=e,t.loadFrame(this._t),this.state=yh.SCRUBBING)}scrubToFrame(e){const t=this._cameraPath;if(!t)return;if(!this.scene.camera)return;t.frames[e]?(t.loadFrame(this._t),this.state=yh.SCRUBBING):this.error("playToFrame - frame index out of range: "+e)}stop(){this.state=yh.SCRUBBING,this.fire("stopped")}destroy(){super.destroy(),this.scene.off(this._tick)}}yh.STOPPED=0,yh.SCRUBBING=1,yh.PLAYING=2,yh.PLAYING_TO=3;const xh=c.vec3(),Bh=c.vec3();c.vec3();const wh=c.vec3([0,-1,0]),Ph=c.vec4([0,0,0,1]);function Ch(e){if(!Mh(e.width)||!Mh(e.height)){const t=document.createElement("canvas");t.width=Fh(e.width),t.height=Fh(e.height);t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),e=t}return e}function Mh(e){return 0==(e&e-1)}function Fh(e){--e;for(let t=1;t<32;t<<=1)e|=e>>t;return e+1}class Eh extends D{get type(){return"CubeTexture"}constructor(e,t={}){super(e,t);const i=this.scene.canvas.gl;this._state=new tt({texture:new vs({gl:i,target:i.TEXTURE_CUBE_MAP}),flipY:this._checkFlipY(t.minFilter),encoding:this._checkEncoding(t.encoding),minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,mipmaps:!0}),this._src=t.src,this._images=[],this._loadSrc(t.src),p.memory.textures++}_checkFlipY(e){return!!e}_checkEncoding(e){return 3e3!==(e=e||3e3)&&3001!==e&&(this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),e=3e3),e}_webglContextRestored(){this.scene.canvas.gl,this._state.texture=null,this._src&&this._loadSrc(this._src)}_loadSrc(e){const t=this,i=this.scene.canvas.gl;this._images=[];let s=!1,r=0;for(let o=0;o{r(),t()})):(i.eye=this._eye,i.look=this._look,i.up=this._up,r(),i.projection=s.projection)}}const Dh=c.vec3();const Sh=c.vec3();class Th{constructor(){this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsHasColorize=[],this.objectsOpacity=[],this.numObjects=0}saveObjects(e,t){this.numObjects=0,this._mask=t?_.apply(t,{}):null;const i=e.objects,s=!t||t.visible,r=!t||t.edges,o=!t||t.xrayed,n=!t||t.highlighted,a=!t||t.selected,l=!t||t.clippable,A=!t||t.pickable,h=!t||t.colorize,c=!t||t.opacity;for(let e in i)if(i.hasOwnProperty(e)){const t=i[e],u=this.numObjects;if(s&&(this.objectsVisible[u]=t.visible),r&&(this.objectsEdges[u]=t.edges),o&&(this.objectsXrayed[u]=t.xrayed),n&&(this.objectsHighlighted[u]=t.highlighted),a&&(this.objectsSelected[u]=t.selected),l&&(this.objectsClippable[u]=t.clippable),A&&(this.objectsPickable[u]=t.pickable),h){const e=t.colorize;e?(this.objectsColorize[3*u+0]=e[0],this.objectsColorize[3*u+1]=e[1],this.objectsColorize[3*u+2]=e[2],this.objectsHasColorize[u]=!0):this.objectsHasColorize[u]=!1}c&&(this.objectsOpacity[u]=t.opacity),this.numObjects++}}restoreObjects(e){const t=this._mask,i=!t||t.visible,s=!t||t.edges,r=!t||t.xrayed,o=!t||t.highlighted,n=!t||t.selected,a=!t||t.clippable,l=!t||t.pickable,A=!t||t.colorize,h=!t||t.opacity;var c=0;const u=e.objects;for(let e in u)if(u.hasOwnProperty(e)){const t=u[e];i&&(t.visible=this.objectsVisible[c]),s&&(t.edges=this.objectsEdges[c]),r&&(t.xrayed=this.objectsXrayed[c]),o&&(t.highlighted=this.objectsHighlighted[c]),n&&(t.selected=this.objectsSelected[c]),a&&(t.clippable=this.objectsClippable[c]),l&&(t.pickable=this.objectsPickable[c]),A&&(this.objectsHasColorize[c]?(Sh[0]=this.objectsColorize[3*c+0],Sh[1]=this.objectsColorize[3*c+1],Sh[2]=this.objectsColorize[3*c+2],t.colorize=Sh):t.colorize=null),h&&(t.opacity=this.objectsOpacity[c]),c++}}}class Rh extends D{constructor(e,t={}){super(e,t),this._skyboxMesh=new Ki(this,{geometry:new kt(this,{primitive:"triangles",positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),background:!0,scale:[2e3,2e3,2e3],rotation:[0,-90,0],material:new Ht(this,{ambient:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],emissive:[1,1,1],emissiveMap:new Ps(this,{src:t.src,flipY:!0,wrapS:"clampToEdge",wrapT:"clampToEdge",encoding:t.encoding||"sRGB"}),backfaces:!0}),visible:!1,pickable:!1,clippable:!1,collidable:!1}),this.size=t.size,this.active=t.active}set size(e){this._size=e||1e3,this._skyboxMesh.scale=[this._size,this._size,this._size]}get size(){return this._size}set active(e){this._skyboxMesh.visible=e}get active(){return this._skyboxMesh.visible}}const Lh=c.vec4(),Uh=c.vec4(),kh=c.vec3(),Oh=c.vec3(),Nh=c.vec3(),Qh=c.vec4(),Vh=c.vec4(),Hh=c.vec4();class jh{constructor(e){this._scene=e}dollyToCanvasPos(e,t,i){let s=!1;const r=this._scene.camera;if(e){const t=c.subVec3(e,r.eye,kh);s=c.lenVec3(t){this._cameraDirty=!0})),this._onProjMatrix=this._scene.camera.on("projMatrix",(()=>{this._cameraDirty=!0})),this._onTick=this._scene.on("tick",(()=>{this.updatePivotElement(),this.updatePivotSphere()}))}createPivotSphere(){const e=this.getPivotPos(),t=c.vec3();c.decomposeMat4(c.inverseMat4(this._scene.viewer.camera.viewMatrix,c.mat4()),t,c.vec4(),c.vec3());const i=c.distVec3(t,e);let s=Math.tan(Math.PI/500)*i*this._pivotSphereSize;"ortho"==this._scene.camera.projection&&(s/=this._scene.camera.ortho.scale/2),G(e,this._rtcCenter,this._rtcPos),this._pivotSphereGeometry=new Fs(this._scene,Yi({radius:s})),this._pivotSphere=new Ki(this._scene,{geometry:this._pivotSphereGeometry,material:this._pivotSphereMaterial,pickable:!1,position:this._rtcPos,rtcCenter:this._rtcCenter})}destroyPivotSphere(){this._pivotSphere&&(this._pivotSphere.destroy(),this._pivotSphere=null),this._pivotSphereGeometry&&(this._pivotSphereGeometry.destroy(),this._pivotSphereGeometry=null)}updatePivotElement(){const e=this._scene.camera,t=this._scene.canvas;if(this._pivoting&&this._cameraDirty){c.transformPoint3(e.viewMatrix,this.getPivotPos(),this._pivotViewPos),this._pivotViewPos[3]=1,c.transformPoint4(e.projMatrix,this._pivotViewPos,this._pivotProjPos);const i=t.boundary,s=i[2],r=i[3];this._pivotCanvasPos[0]=Math.floor((1+this._pivotProjPos[0]/this._pivotProjPos[3])*s/2),this._pivotCanvasPos[1]=Math.floor((1-this._pivotProjPos[1]/this._pivotProjPos[3])*r/2);let o=t._lastBoundingClientRect;if(!o||t._canvasSizeChanged){const e=t.canvas;o=t._lastBoundingClientRect=e.getBoundingClientRect()}this._pivotElement&&(this._pivotElement.style.left=Math.floor(o.left+this._pivotCanvasPos[0])-this._pivotElement.clientWidth/2+window.scrollX+"px",this._pivotElement.style.top=Math.floor(o.top+this._pivotCanvasPos[1])-this._pivotElement.clientHeight/2+window.scrollY+"px"),this._cameraDirty=!1}}updatePivotSphere(){this._pivoting&&this._pivotSphere&&(G(this.getPivotPos(),this._rtcCenter,this._rtcPos),c.compareVec3(this._rtcPos,this._pivotSphere.position)||(this.destroyPivotSphere(),this.createPivotSphere()))}setPivotElement(e){this._pivotElement=e}enablePivotSphere(e={}){this.destroyPivotSphere(),this._pivotSphereEnabled=!0,e.size&&(this._pivotSphereSize=e.size);const t=e.color||[1,0,0];this._pivotSphereMaterial=new Ht(this._scene,{emissive:t,ambient:t,specular:[0,0,0],diffuse:[0,0,0]})}disablePivotSphere(){this.destroyPivotSphere(),this._pivotSphereEnabled=!1}startPivot(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;const e=this._scene.camera;let t=c.lookAtMat4v(e.eye,e.look,e.worldUp);c.transformPoint3(t,this.getPivotPos(),this._cameraOffset);const i=this.getPivotPos();this._cameraOffset[2]+=c.distVec3(e.eye,i),t=c.inverseMat4(t);const s=c.transformVec3(t,this._cameraOffset),r=c.vec3();if(c.subVec3(e.eye,i,r),c.addVec3(r,s),e.zUp){const e=r[1];r[1]=r[2],r[2]=e}this._radius=c.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}_cameraLookingDownwards(){const e=this._scene.camera,t=c.normalizeVec3(c.subVec3(e.look,e.eye,Gh)),i=c.cross3Vec3(t,e.worldUp,zh);return c.sqLenVec3(i)<=1e-4}getPivoting(){return this._pivoting}setPivotPos(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}setCanvasPivotPos(e){const t=this._scene.camera,i=Math.abs(c.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),n=[0,0,-1,1],a=c.dotVec4(n,r)/c.dotVec4(n,o),l=Kh;t.project.unproject(e,a,Xh,Jh,l);const A=c.normalizeVec3(c.subVec3(l,t.eye,Gh)),h=c.addVec3(t.eye,c.mulVec3Scalar(A,i,zh),Wh);this.setPivotPos(h)}getPivotPos(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}continuePivot(e,t){if(!this._pivoting)return;if(0===e&&0===t)return;const i=this._scene.camera;var s=-e;const r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=c.clamp(this._polar,.001,Math.PI-.001);const o=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){const e=o[1];o[1]=o[2],o[2]=e}const n=c.lenVec3(c.subVec3(i.look,i.eye,c.vec3())),a=this.getPivotPos();c.addVec3(o,a);let l=c.lookAtMat4v(o,a,i.worldUp);l=c.inverseMat4(l);const A=c.transformVec3(l,this._cameraOffset);l[12]-=A[0],l[13]-=A[1],l[14]-=A[2];const h=[l[8],l[9],l[10]];i.eye=[l[12],l[13],l[14]],c.subVec3(i.eye,c.mulVec3Scalar(h,n),i.look),i.up=[l[4],l[5],l[6]],this.showPivot()}showPivot(){this._shown||(this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility="visible"),this._pivotSphereEnabled&&(this.destroyPivotSphere(),this.createPivotSphere()),this._shown=!0)}hidePivot(){this._shown&&(this._pivotElement&&(this._pivotElement.style.visibility="hidden"),this._pivotSphereEnabled&&this.destroyPivotSphere(),this._shown=!1)}endPivot(){this._pivoting=!1}destroy(){this.destroyPivotSphere(),this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}class Zh{constructor(e,t){this._scene=e.scene,this._cameraControl=e,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=t,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick=!1,this.pickCursorPos=c.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._lastHash=null,this._needFireEvents=0}update(){if(!this._configs.pointerEnabled)return;if(!this.schedulePickEntity&&!this.schedulePickSurface)return;const e=`${~~this.pickCursorPos[0]}-${~~this.pickCursorPos[1]}-${this.scheduleSnapOrPick}-${this.schedulePickSurface}-${this.schedulePickEntity}`;if(this._lastHash===e)return;this.picked=!1,this.pickedSurface=!1,this.snappedOrPicked=!1,this.hoveredSnappedOrSurfaceOff=!1;const t=this._cameraControl.hasSubs("hoverSurface");if(this.scheduleSnapOrPick){const e=this._scene.pick({canvasPos:this.pickCursorPos,snapRadius:this._configs.snapRadius,snapToVertex:this._configs.snapToVertex,snapToEdge:this._configs.snapToEdge});e&&(e.snappedToEdge||e.snappedToVertex)?(this.snapPickResult=e,this.snappedOrPicked=!0,this._needFireEvents++):(this.schedulePickSurface=!0,this.snapPickResult=null)}if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){const e=this.pickResult.canvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents+=t?1:0,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.hoveredSnappedOrSurfaceOff=!0,void(this.scheduleSnapOrPick=!1)}if(this.schedulePickEntity&&this.pickResult&&(this.pickResult.canvasPos||this.pickResult.snappedCanvasPos)){const e=this.pickResult.canvasPos||this.pickResult.snappedCanvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface||this.scheduleSnapOrPick&&!this.snapPickResult?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult?(this.picked=!0,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.pickedSurface=!0,this._needFireEvents++):this.scheduleSnapOrPick&&(this.hoveredSnappedOrSurfaceOff=!0,this._needFireEvents++)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents++)),this.scheduleSnapOrPick=!1,this.schedulePickEntity=!1,this.schedulePickSurface=!1}fireEvents(){if(0!==this._needFireEvents){if(this.hoveredSnappedOrSurfaceOff&&this._cameraControl.fire("hoverSnapOrSurfaceOff",{canvasPos:this.pickCursorPos,pointerPos:this.pickCursorPos},!0),this.snappedOrPicked)if(this.snapPickResult){const e=new Me;e.entity=this.snapPickResult.entity,e.snappedToVertex=this.snapPickResult.snappedToVertex,e.snappedToEdge=this.snapPickResult.snappedToEdge,e.worldPos=this.snapPickResult.worldPos,e.canvasPos=this.pickCursorPos,e.snappedCanvasPos=this.snapPickResult.snappedCanvasPos,this._cameraControl.fire("hoverSnapOrSurface",e,!0),this.snapPickResult=null}else this._cameraControl.fire("hoverSnapOrSurface",this.pickResult,!0);if(this.picked&&this.pickResult&&(this.pickResult.entity||this.pickResult.worldPos)){if(this.pickResult.entity){const e=this.pickResult.entity.id;this._lastPickedEntityId!==e&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire("hoverEnter",this.pickResult,!0),this._lastPickedEntityId=e)}this._cameraControl.fire("hover",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire("hoverSurface",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire("hoverOff",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=0}}}const qh=c.vec2();class $h{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController;let n,a,l,A=0,h=0,u=0,d=0,p=!1;const f=c.vec3();let g=!0;const m=this._scene.canvas.canvas,_=[];function v(e=!0){m.style.cursor="move",A=s.pointerCanvasPos[0],h=s.pointerCanvasPos[1],u=s.pointerCanvasPos[0],d=s.pointerCanvasPos[1],e&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(p=!0,f.set(o.pickResult.worldPos)):p=!1)}document.addEventListener("keydown",this._documentKeyDownHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!0}),document.addEventListener("keyup",this._documentKeyUpHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!1}),m.addEventListener("mousedown",this._mouseDownHandler=t=>{if(i.active&&i.pointerEnabled)switch(t.which){case 1:_[e.input.KEY_SHIFT]||i.planView?(n=!0,v()):(n=!0,v(!1));break;case 2:a=!0,v();break;case 3:l=!0,i.panRightClick&&v()}}),document.addEventListener("mousemove",this._documentMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(!n&&!a&&!l)return;const o=e.canvas.boundary,u=o[2],d=o[3],g=s.pointerCanvasPos[0],m=s.pointerCanvasPos[1],v=_[e.input.KEY_SHIFT]||i.planView||!i.panRightClick&&a||i.panRightClick&&l,b=document.pointerLockElement?t.movementX:g-A,y=document.pointerLockElement?t.movementY:m-h;if(v){const t=e.camera;if("perspective"===t.projection){const i=Math.abs(p?c.lenVec3(c.subVec3(f,e.camera.eye,[])):e.camera.eyeLookDist)*Math.tan(t.perspective.fov/2*Math.PI/180);r.panDeltaX+=1.5*b*i/d,r.panDeltaY+=1.5*y*i/d}else r.panDeltaX+=.5*t.ortho.scale*(b/d),r.panDeltaY+=.5*t.ortho.scale*(y/d)}else!n||a||l||i.planView||(i.firstPerson?(r.rotateDeltaY-=b/u*i.dragRotationRate/2,r.rotateDeltaX+=y/d*(i.dragRotationRate/4)):(r.rotateDeltaY-=b/u*(1.5*i.dragRotationRate),r.rotateDeltaX+=y/d*(1.5*i.dragRotationRate)));A=g,h=m}),m.addEventListener("mousemove",this._canvasMouseMoveHandler=e=>{i.active&&i.pointerEnabled&&s.mouseover&&(g=!0)}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{if(i.active&&i.pointerEnabled)switch(e.which){case 1:case 2:case 3:n=!1,a=!1,l=!1}}),m.addEventListener("mouseup",this._mouseUpHandler=e=>{if(i.active&&i.pointerEnabled){if(3===e.which){!function(e,t){if(e){let i=e.target,s=0,r=0,o=0,n=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,o+=i.scrollLeft,n+=i.scrollTop,i=i.offsetParent;t[0]=e.pageX+o-s,t[1]=e.pageY+n-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,qh);const i=qh[0],s=qh[1];Math.abs(i-u)<3&&Math.abs(s-d)<3&&t.cameraControl.fire("rightClick",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:qh,event:e},!0)}m.style.removeProperty("cursor")}}),m.addEventListener("mouseenter",this._mouseEnterHandler=()=>{i.active&&i.pointerEnabled});const b=1/60;let y=null;m.addEventListener("wheel",this._mouseWheelHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=performance.now()/1e3;var o=null!==y?t-y:0;y=t,o>.05&&(o=.05),o{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const n=r._isKeyDownForAction(r.AXIS_VIEW_RIGHT),a=r._isKeyDownForAction(r.AXIS_VIEW_BACK),l=r._isKeyDownForAction(r.AXIS_VIEW_LEFT),A=r._isKeyDownForAction(r.AXIS_VIEW_FRONT),h=r._isKeyDownForAction(r.AXIS_VIEW_TOP),u=r._isKeyDownForAction(r.AXIS_VIEW_BOTTOM);if(!(n||a||l||A||h||u))return;const d=e.aabb,p=c.getAABB3Diag(d);c.getAABB3Center(d,ec);const f=Math.abs(p/Math.tan(t.cameraFlight.fitFOV*c.DEGTORAD)),g=1.1*p;oc.orthoScale=g,n?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldRight,f,tc),rc)),oc.look.set(ec),oc.up.set(o.worldUp)):a?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldForward,f,tc),rc)),oc.look.set(ec),oc.up.set(o.worldUp)):l?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldRight,-f,tc),rc)),oc.look.set(ec),oc.up.set(o.worldUp)):A?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldForward,-f,tc),rc)),oc.look.set(ec),oc.up.set(o.worldUp)):h?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldUp,f,tc),rc)),oc.look.set(ec),oc.up.set(c.normalizeVec3(c.mulVec3Scalar(o.worldForward,1,ic),sc))):u&&(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldUp,-f,tc),rc)),oc.look.set(ec),oc.up.set(c.normalizeVec3(c.mulVec3Scalar(o.worldForward,-1,ic)))),!i.firstPerson&&i.followPointer&&t.pivotController.setPivotPos(ec),t.cameraFlight.duration>0?t.cameraFlight.flyTo(oc,(()=>{t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot()})):(t.cameraFlight.jumpTo(oc),t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot())}))}reset(){}destroy(){this._scene.input.off(this._onSceneKeyDown)}}class ac{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=t.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;let l=!1,A=!1;const h=this._scene.canvas.canvas,u=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i&&i.entity?i.entity.aabb:e.aabb;if(s){const i=e.camera;c.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})},d=e.tickify(this._canvasMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(l||A)return;const r=a.hasSubs("hover"),n=a.hasSubs("hoverEnter"),h=a.hasSubs("hoverOut"),c=a.hasSubs("hoverOff"),u=a.hasSubs("hoverSurface"),d=a.hasSubs("hoverSnapOrSurface");if(r||n||h||c||u||d)if(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=u,o.scheduleSnapOrPick=d,o.update(),o.pickResult){if(o.pickResult.entity){const t=o.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),a.fire("hoverEnter",o.pickResult,!0),this._lastPickedEntityId=t)}a.fire("hover",o.pickResult,!0),(o.pickResult.worldPos||o.pickResult.snappedWorldPos)&&a.fire("hoverSurface",o.pickResult,!0)}else void 0!==this._lastPickedEntityId&&(a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),a.fire("hoverOff",{canvasPos:o.pickCursorPos},!0)});h.addEventListener("mousemove",d),h.addEventListener("mousedown",this._canvasMouseDownHandler=t=>{1===t.which&&(l=!0),3===t.which&&(A=!0);if(1===t.which&&i.active&&i.pointerEnabled&&(s.mouseDownClientX=t.clientX,s.mouseDownClientY=t.clientY,s.mouseDownCursorX=s.pointerCanvasPos[0],s.mouseDownCursorY=s.pointerCanvasPos[1],!i.firstPerson&&i.followPointer&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),1===t.which))){const t=o.pickResult;t&&t.worldPos?(n.setPivotPos(t.worldPos),n.startPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),n.startPivot())}}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{1===e.which&&(l=!1),3===e.which&&(A=!1),n.getPivoting()&&n.endPivot()}),h.addEventListener("mouseup",this._canvasMouseUpHandler=r=>{if(!i.active||!i.pointerEnabled)return;if(!(1===r.which))return;if(n.hidePivot(),Math.abs(r.clientX-s.mouseDownClientX)>3||Math.abs(r.clientY-s.mouseDownClientY)>3)return;const l=a.hasSubs("picked"),A=a.hasSubs("pickedNothing"),h=a.hasSubs("pickedSurface"),d=a.hasSubs("doublePicked"),p=a.hasSubs("doublePickedSurface"),f=a.hasSubs("doublePickedNothing");if(!(i.doublePickFlyTo||d||p||f))return(l||A||h)&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=h,o.update(),o.pickResult?(a.fire("picked",o.pickResult,!0),o.pickedSurface&&a.fire("pickedSurface",o.pickResult,!0)):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0)),void(this._clicks=0);if(this._clicks++,1===this._clicks){o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo,o.schedulePickSurface=h,o.update();const e=o.pickResult,r=o.pickedSurface;this._timeout=setTimeout((()=>{e?(a.fire("picked",e,!0),r&&(a.fire("pickedSurface",e,!0),!i.firstPerson&&i.followPointer&&(t.pivotController.setPivotPos(e.worldPos),t.pivotController.startPivot()&&t.pivotController.showPivot()))):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0),this._clicks=0}),i.doubleClickTimeFrame)}else{if(null!==this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null),o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo||d||p,o.schedulePickSurface=o.schedulePickEntity&&p,o.update(),o.pickResult){if(a.fire("doublePicked",o.pickResult,!0),o.pickedSurface&&a.fire("doublePickedSurface",o.pickResult,!0),i.doublePickFlyTo&&(u(o.pickResult),!i.firstPerson&&i.followPointer)){const e=o.pickResult.entity.aabb,i=c.getAABB3Center(e);t.pivotController.setPivotPos(i),t.pivotController.startPivot()&&t.pivotController.showPivot()}}else if(a.fire("doublePickedNothing",{canvasPos:s.pointerCanvasPos},!0),i.doublePickFlyTo&&(u(),!i.firstPerson&&i.followPointer)){const i=e.aabb,s=c.getAABB3Center(i);t.pivotController.setPivotPos(s),t.pivotController.startPivot()&&t.pivotController.showPivot()}this._clicks=0}},!1)}reset(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("mousemove",this._canvasMouseMoveHandler),e.removeEventListener("mousedown",this._canvasMouseDownHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}class lc{constructor(e,t,i,s,r){this._scene=e;const o=e.input,n=[],a=e.canvas.canvas;let l=!0;this._onSceneMouseMove=o.on("mousemove",(()=>{l=!0})),this._onSceneKeyDown=o.on("keydown",(t=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&s.mouseover&&(n[t]=!0,t===o.KEY_SHIFT&&(a.style.cursor="move"))})),this._onSceneKeyUp=o.on("keyup",(s=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&(n[s]=!1,s===o.KEY_SHIFT&&(a.style.cursor=null),t.pivotController.getPivoting()&&t.pivotController.endPivot())})),this._onTick=e.on("tick",(a=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const A=t.cameraControl,h=a.deltaTime/1e3;if(!i.planView){const e=A._isKeyDownForAction(A.ROTATE_Y_POS,n),s=A._isKeyDownForAction(A.ROTATE_Y_NEG,n),o=A._isKeyDownForAction(A.ROTATE_X_POS,n),a=A._isKeyDownForAction(A.ROTATE_X_NEG,n),l=h*i.keyboardRotationRate;(e||s||o||a)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),e?r.rotateDeltaY+=l:s&&(r.rotateDeltaY-=l),o?r.rotateDeltaX+=l:a&&(r.rotateDeltaX-=l),!i.firstPerson&&i.followPointer&&t.pivotController.startPivot())}if(!n[o.KEY_CTRL]&&!n[o.KEY_ALT]){const e=A._isKeyDownForAction(A.DOLLY_BACKWARDS,n),o=A._isKeyDownForAction(A.DOLLY_FORWARDS,n);if(e||o){const n=h*i.keyboardDollyRate;!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),o?r.dollyDelta-=n:e&&(r.dollyDelta+=n),l&&(s.followPointerDirty=!0,l=!1)}}const c=A._isKeyDownForAction(A.PAN_FORWARDS,n),u=A._isKeyDownForAction(A.PAN_BACKWARDS,n),d=A._isKeyDownForAction(A.PAN_LEFT,n),p=A._isKeyDownForAction(A.PAN_RIGHT,n),f=A._isKeyDownForAction(A.PAN_UP,n),g=A._isKeyDownForAction(A.PAN_DOWN,n),m=(n[o.KEY_ALT]?.3:1)*h*i.keyboardPanRate;(c||u||d||p||f||g)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),g?r.panDeltaY+=m:f&&(r.panDeltaY+=-m),p?r.panDeltaX+=-m:d&&(r.panDeltaX+=m),u?r.panDeltaZ+=m:c&&(r.panDeltaZ+=-m))}))}reset(){}destroy(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}const Ac=c.vec3();class hc{constructor(e,t,i,s,r){this._scene=e;const o=e.camera,n=t.pickController,a=t.pivotController,l=t.panController;let A=1,h=1,u=null;this._onTick=e.on("tick",(()=>{if(!i.active||!i.pointerEnabled)return;let t="default";if(Math.abs(r.dollyDelta)<.001&&(r.dollyDelta=0),Math.abs(r.rotateDeltaX)<.001&&(r.rotateDeltaX=0),Math.abs(r.rotateDeltaY)<.001&&(r.rotateDeltaY=0),0===r.rotateDeltaX&&0===r.rotateDeltaY||(r.dollyDelta=0),i.followPointer){if(--A<=0&&(A=1,0!==r.dollyDelta)){if(0===r.rotateDeltaY&&0===r.rotateDeltaX&&i.followPointer&&s.followPointerDirty&&(n.pickCursorPos=s.pointerCanvasPos,n.schedulePickSurface=!0,n.update(),n.pickResult&&n.pickResult.worldPos?u=n.pickResult.worldPos:(h=1,u=null),s.followPointerDirty=!1),u){const t=Math.abs(c.lenVec3(c.subVec3(u,e.camera.eye,Ac)));h=t/i.dollyProximityThreshold}h{s.mouseover=!0}),o.addEventListener("mouseleave",this._mouseLeaveHandler=()=>{s.mouseover=!1,o.style.cursor=null}),document.addEventListener("mousemove",this._mouseMoveHandler=e=>{uc(e,o,s.pointerCanvasPos)}),o.addEventListener("mousedown",this._mouseDownHandler=e=>{i.active&&i.pointerEnabled&&(uc(e,o,s.pointerCanvasPos),s.mouseover=!0)}),o.addEventListener("mouseup",this._mouseUpHandler=e=>{i.active&&i.pointerEnabled})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener("mousemove",this._mouseMoveHandler),e.removeEventListener("mouseenter",this._mouseEnterHandler),e.removeEventListener("mouseleave",this._mouseLeaveHandler),e.removeEventListener("mousedown",this._mouseDownHandler),e.removeEventListener("mouseup",this._mouseUpHandler)}}function uc(e,t,i){if(e){const{left:s,top:r}=t.getBoundingClientRect();i[0]=e.clientX-s,i[1]=e.clientY-r}else e=window.event,i[0]=e.x,i[1]=e.y;return i}const dc=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class pc{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=c.vec2(),l=c.vec2(),A=c.vec2(),h=c.vec2(),u=[],d=this._scene.canvas.canvas;let p=0,f=!1;this._onTick=e.on("tick",(()=>{f=!1})),d.addEventListener("touchstart",this._canvasTouchStartHandler=t=>{if(!i.active||!i.pointerEnabled)return;t.preventDefault();const r=t.touches,l=t.changedTouches;for(s.touchStartTime=Date.now(),1===r.length&&1===l.length&&(dc(r[0],a),i.followPointer&&(o.pickCursorPos=a,o.schedulePickSurface=!0,o.update(),i.planView||(o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(n.setPivotPos(o.pickResult.worldPos),!i.firstPerson&&n.startPivot()&&n.showPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),!i.firstPerson&&n.startPivot()&&n.showPivot()))));u.length{n.getPivoting()&&n.endPivot()}),d.addEventListener("touchmove",this._canvasTouchMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(t.stopPropagation(),t.preventDefault(),f)return;f=!0;const n=e.canvas.boundary,a=n[2],d=n[3],g=t.touches;if(t.touches.length===p){if(1===p){dc(g[0],l),c.subVec2(l,u[0],h);const t=h[0],o=h[1];if(null!==s.longTouchTimeout&&(Math.abs(t)>i.longTapRadius||Math.abs(o)>i.longTapRadius)&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),i.planView){const s=e.camera;if("perspective"===s.projection){const n=Math.abs(e.camera.eyeLookDist)*Math.tan(s.perspective.fov/2*Math.PI/180);r.panDeltaX+=t*n/d*i.touchPanRate,r.panDeltaY+=o*n/d*i.touchPanRate}else r.panDeltaX+=.5*s.ortho.scale*(t/d)*i.touchPanRate,r.panDeltaY+=.5*s.ortho.scale*(o/d)*i.touchPanRate}else r.rotateDeltaY-=t/a*(1*i.dragRotationRate),r.rotateDeltaX+=o/d*(1.5*i.dragRotationRate)}else if(2===p){const t=g[0],n=g[1];dc(t,l),dc(n,A);const a=c.geometricMeanVec2(u[0],u[1]),h=c.geometricMeanVec2(l,A),p=c.vec2();c.subVec2(a,h,p);const f=p[0],m=p[1],_=e.camera,v=c.distVec2([t.pageX,t.pageY],[n.pageX,n.pageY]),b=(c.distVec2(u[0],u[1])-v)*i.touchDollyRate;if(r.dollyDelta=b,Math.abs(b)<1)if("perspective"===_.projection){const t=o.pickResult?o.pickResult.worldPos:e.center,s=Math.abs(c.lenVec3(c.subVec3(t,e.camera.eye,[])))*Math.tan(_.perspective.fov/2*Math.PI/180);r.panDeltaX-=f*s/d*i.touchPanRate,r.panDeltaY-=m*s/d*i.touchPanRate}else r.panDeltaX-=.5*_.ortho.scale*(f/d)*i.touchPanRate,r.panDeltaY-=.5*_.ortho.scale*(m/d)*i.touchPanRate;s.pointerCanvasPos=h}for(let e=0;e{let s;i&&i.worldPos&&(s=i.worldPos);const r=i?i.entity.aabb:e.aabb;if(s){const i=e.camera;c.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})};d.addEventListener("touchstart",this._canvasTouchStartHandler=e=>{if(!i.active||!i.pointerEnabled)return;null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null);const r=e.touches,o=e.changedTouches;if(a=Date.now(),1===r.length&&1===o.length){h=a,fc(r[0],A);const o=A[0],n=A[1],l=r[0].pageX,c=r[0].pageY;s.longTouchTimeout=setTimeout((()=>{t.cameraControl.fire("rightClick",{pagePos:[Math.round(l),Math.round(c)],canvasPos:[Math.round(o),Math.round(n)],event:e},!0),s.longTouchTimeout=null}),i.longTapTimeout)}else h=-1;for(;l.length{if(!i.active||!i.pointerEnabled)return;const t=Date.now(),r=e.touches,a=e.changedTouches,d=n.hasSubs("pickedSurface");null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),0===r.length&&1===a.length&&h>-1&&t-h<150&&(u>-1&&h-u<325?(fc(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=d,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("doublePicked",o.pickResult),o.pickedSurface&&n.fire("doublePickedSurface",o.pickResult),i.doublePickFlyTo&&p(o.pickResult)):(n.fire("doublePickedNothing"),i.doublePickFlyTo&&p()),u=-1):c.distVec2(l[0],A)<4&&(fc(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=d,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("picked",o.pickResult),o.pickedSurface&&n.fire("pickedSurface",o.pickResult)):n.fire("pickedNothing"),u=t),h=-1),l.length=r.length;for(let e=0,t=r.length;e{e.preventDefault()},this._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:"qwerty",navMode:"orbit",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,doubleClickTimeFrame:250,snapToVertex:true,snapToEdge:true,snapRadius:30,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},this._states={pointerCanvasPos:c.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:c.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},this._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};const i=this.scene;this._controllers={cameraControl:this,pickController:new Zh(this,this._configs),pivotController:new Yh(i,this._configs),panController:new jh(i),cameraFlight:new bh(this,{duration:.5})},this._handlers=[new cc(this.scene,this._controllers,this._configs,this._states,this._updates),new pc(this.scene,this._controllers,this._configs,this._states,this._updates),new $h(this.scene,this._controllers,this._configs,this._states,this._updates),new nc(this.scene,this._controllers,this._configs,this._states,this._updates),new ac(this.scene,this._controllers,this._configs,this._states,this._updates),new gc(this.scene,this._controllers,this._configs,this._states,this._updates),new lc(this.scene,this._controllers,this._configs,this._states,this._updates)],this._cameraUpdater=new hc(this.scene,this._controllers,this._configs,this._states,this._updates),this.navMode=t.navMode,t.planView&&(this.planView=t.planView),this.constrainVertical=t.constrainVertical,t.keyboardLayout?this.keyboardLayout=t.keyboardLayout:this.keyMap=t.keyMap,this.doublePickFlyTo=t.doublePickFlyTo,this.panRightClick=t.panRightClick,this.active=t.active,this.followPointer=t.followPointer,this.rotationInertia=t.rotationInertia,this.keyboardPanRate=t.keyboardPanRate,this.touchPanRate=t.touchPanRate,this.keyboardRotationRate=t.keyboardRotationRate,this.dragRotationRate=t.dragRotationRate,this.touchDollyRate=t.touchDollyRate,this.dollyInertia=t.dollyInertia,this.dollyProximityThreshold=t.dollyProximityThreshold,this.dollyMinSpeed=t.dollyMinSpeed,this.panInertia=t.panInertia,this.pointerEnabled=!0,this.keyboardDollyRate=t.keyboardDollyRate,this.mouseWheelDollyRate=t.mouseWheelDollyRate}set keyMap(e){if(e=e||"qwerty",_.isString(e)){const t=this.scene.input,i={};switch(e){default:this.error("Unsupported value for 'keyMap': "+e+" defaulting to 'qwerty'");case"qwerty":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case"azerty":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{const t=e;this._keyMap=t}}get keyMap(){return this._keyMap}_isKeyDownForAction(e,t){const i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(let e=0,s=i.length;e0?Bc(t):null,n=i&&i.length>0?Bc(i):null,a=e=>{if(!e)return;var t=!0;(n&&n[e.type]||o&&!o[e.type])&&(t=!1),t&&s.push(e.id);const i=e.children;if(i)for(var r=0,l=i.length;r>t;i.sort(CA);const s=new Int32Array(e.length);for(let t=0,r=i.length;te[t+1]){let i=e[t];e[t]=e[t+1],e[t+1]=i}MA=new Int32Array(e),t.sort(FA);const i=new Int32Array(e.length);for(let s=0,r=t.length;st){let i=e;e=t,t=i}function i(i,s){return i!==e?e-i:s!==t?t-s:0}let s=0,r=(o.length>>1)-1;for(;s<=r;){const e=r+s>>1,t=i(o[2*e],o[2*e+1]);if(t>0)s=e+1;else{if(!(t<0))return e;r=e-1}}return-s-1}const a=new Int32Array(o.length/2);a.fill(0);const l=s.length/3;if(l>8*(1<u.maxNumPositions&&(u=c()),u.bucketNumber>8)return[e];let p;-1===A[l]&&(A[l]=u.numPositions++,u.positionsCompressed.push(s[3*l]),u.positionsCompressed.push(s[3*l+1]),u.positionsCompressed.push(s[3*l+2])),-1===A[h]&&(A[h]=u.numPositions++,u.positionsCompressed.push(s[3*h]),u.positionsCompressed.push(s[3*h+1]),u.positionsCompressed.push(s[3*h+2])),-1===A[d]&&(A[d]=u.numPositions++,u.positionsCompressed.push(s[3*d]),u.positionsCompressed.push(s[3*d+1]),u.positionsCompressed.push(s[3*d+2])),u.indices.push(A[l]),u.indices.push(A[h]),u.indices.push(A[d]),(p=n(l,h))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(l,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(h,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]]))}const d=t/8*2,p=t/8,f=2*s.length+(r.length+o.length)*d;let g=0,m=-s.length/3;return h.forEach((e=>{g+=2*e.positionsCompressed.length+(e.indices.length+e.edgeIndices.length)*p,m+=e.positionsCompressed.length/3})),g>f?[e]:(i&&function(e,t){const i={},s={};let r=0;e.forEach((e=>{const t=e.indices,o=e.edgeIndices,n=e.positionsCompressed;for(let e=0,s=t.length;e0){const e=t._meshes;for(let t=0,i=e.length;t0){const e=this._meshes;for(let t=0,i=e.length;t{this._viewMatrixDirty=!0})),this._meshesWithDirtyMatrices=[],this._numMeshesWithDirtyMatrices=0,this._onTick=this.scene.on("tick",(()=>{for(;this._numMeshesWithDirtyMatrices>0;)this._meshesWithDirtyMatrices[--this._numMeshesWithDirtyMatrices]._updateMatrix()})),this._createDefaultTextureSet(),this.visible=t.visible,this.culled=t.culled,this.pickable=t.pickable,this.clippable=t.clippable,this.collidable=t.collidable,this.castsShadow=t.castsShadow,this.receivesShadow=t.receivesShadow,this.xrayed=t.xrayed,this.highlighted=t.highlighted,this.selected=t.selected,this.edges=t.edges,this.colorize=t.colorize,this.opacity=t.opacity,this.backfaces=t.backfaces}_meshMatrixDirty(e){this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++]=e}_createDefaultTextureSet(){const e=new AA({id:"defaultColorTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})}),t=new AA({id:"defaultMetalRoughTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[0,1,1,1]})}),i=new AA({id:"defaultNormalsTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[0,0,0,0]})}),s=new AA({id:"defaultEmissiveTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[0,0,0,1]})}),r=new AA({id:"defaultOcclusionTexture",texture:new vs({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})});this._textures.defaultColorTexture=e,this._textures.defaultMetalRoughTexture=t,this._textures.defaultNormalsTexture=i,this._textures.defaultEmissiveTexture=s,this._textures.defaultOcclusionTexture=r,this._textureSets.defaultTextureSet=new lA({id:"defaultTextureSet",model:this,colorTexture:e,metallicRoughnessTexture:t,normalsTexture:i,emissiveTexture:s,occlusionTexture:r})}get isPerformanceModel(){return!0}get transforms(){return this._transforms}get textures(){return this._textures}get textureSets(){return this._textureSets}get meshes(){return this._meshes}get objects(){return this._entities}get origin(){return this._origin}set position(e){this._position.set(e||[0,0,0]),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get position(){return this._position}set rotation(e){this._rotation.set(e||[0,0,0]),c.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get rotation(){return this._rotation}set quaternion(e){this._quaternion.set(e||[0,0,0,1]),c.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get quaternion(){return this._quaternion}set scale(e){}get scale(){return this._scale}set matrix(e){this._matrix.set(e||GA),c.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),c.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),c.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),c.translateMat4v(this._position,this._matrix),this._matrixDirty=!1,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get matrix(){return this._matrixDirty&&this._rebuildMatrices(),this._matrix}get rotationMatrix(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrix}_rebuildMatrices(){this._matrixDirty&&(c.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),c.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),c.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),c.translateMat4v(this._position,this._matrix),this._matrixDirty=!1)}get rotationMatrixConjugate(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrixConjugate}_setWorldMatrixDirty(){this._matrixDirty=!0,this._aabbDirty=!0}_transformDirty(){this._matrixDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0}_sceneModelDirty(){this.scene._aabbDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0,this._matrixDirty=!0;for(let e=0,t=this._entityList.length;e0}set visible(e){e=!1!==e,this._visible=e;for(let t=0,i=this._entityList.length;t0}set xrayed(e){e=!!e,this._xrayed=e;for(let t=0,i=this._entityList.length;t0}set highlighted(e){e=!!e,this._highlighted=e;for(let t=0,i=this._entityList.length;t0}set selected(e){e=!!e,this._selected=e;for(let t=0,i=this._entityList.length;t0}set edges(e){e=!!e,this._edges=e;for(let t=0,i=this._entityList.length;t0}set pickable(e){e=!1!==e,this._pickable=e;for(let t=0,i=this._entityList.length;t0)e.colorsCompressed=new Uint8Array(e.colorsCompressed);else if(e.colors&&e.colors.length>0){const t=e.colors,i=new Uint8Array(t.length);for(let e=0,s=t.length;e{l.setImage(A,{minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,flipY:e.flipY,encoding:a}),this.glRedraw()},A.src=e.src;break;default:this._textureTranscoder?_.loadArraybuffer(e.src,(e=>{e.byteLength?this._textureTranscoder.transcode([e],l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'src': file data is zero length")}),(function(e){this.error(`[createTexture] Can't create texture from 'src': ${e}`)})):this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${t}')`)}}else e.buffers&&(this._textureTranscoder?this._textureTranscoder.transcode(e.buffers,l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option"));this._textures[t]=new AA({id:t,texture:l})}createTextureSet(e){const t=e.id;if(null==t)return void this.error("[createTextureSet] Config missing: id");if(this._textureSets[t])return void this.error(`[createTextureSet] Texture set already created: ${t}`);let i,s,r,o,n;if(void 0!==e.colorTextureId&&null!==e.colorTextureId){if(i=this._textures[e.colorTextureId],!i)return void this.error(`[createTextureSet] Texture not found: ${e.colorTextureId} - ensure that you create it first with createTexture()`)}else i=this._textures.defaultColorTexture;if(void 0!==e.metallicRoughnessTextureId&&null!==e.metallicRoughnessTextureId){if(s=this._textures[e.metallicRoughnessTextureId],!s)return void this.error(`[createTextureSet] Texture not found: ${e.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`)}else s=this._textures.defaultMetalRoughTexture;if(void 0!==e.normalsTextureId&&null!==e.normalsTextureId){if(r=this._textures[e.normalsTextureId],!r)return void this.error(`[createTextureSet] Texture not found: ${e.normalsTextureId} - ensure that you create it first with createTexture()`)}else r=this._textures.defaultNormalsTexture;if(void 0!==e.emissiveTextureId&&null!==e.emissiveTextureId){if(o=this._textures[e.emissiveTextureId],!o)return void this.error(`[createTextureSet] Texture not found: ${e.emissiveTextureId} - ensure that you create it first with createTexture()`)}else o=this._textures.defaultEmissiveTexture;if(void 0!==e.occlusionTextureId&&null!==e.occlusionTextureId){if(n=this._textures[e.occlusionTextureId],!n)return void this.error(`[createTextureSet] Texture not found: ${e.occlusionTextureId} - ensure that you create it first with createTexture()`)}else n=this._textures.defaultOcclusionTexture;const a=new lA({id:t,model:this,colorTexture:i,metallicRoughnessTexture:s,normalsTexture:r,emissiveTexture:o,occlusionTexture:n});return this._textureSets[t]=a,a}createTransform(e){if(void 0===e.id||null===e.id)return void this.error("[createTransform] SceneModel.createTransform() config missing: id");if(this._transforms[e.id])return void this.error(`[createTransform] SceneModel already has a transform with this ID: ${e.id}`);let t;if(e.parentTransformId&&(t=this._transforms[e.parentTransformId],!t))return void this.error("[createTransform] SceneModel.createTransform() config missing: id");const i=new kA({id:e.id,model:this,parent:t,matrix:e.matrix,position:e.position,scale:e.scale,rotation:e.rotation,quaternion:e.quaternion});return this._transforms[i.id]=i,i}createMesh(e){if(void 0===e.id||null===e.id)return this.error("[createMesh] SceneModel.createMesh() config missing: id"),!1;if(this._meshes[e.id])return this.error(`[createMesh] SceneModel already has a mesh with this ID: ${e.id}`),!1;if(!(void 0!==e.geometryId)){if(void 0!==e.primitive&&null!==e.primitive||(e.primitive="triangles"),"points"!==e.primitive&&"lines"!==e.primitive&&"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)return this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`),!1;if(!e.positions&&!e.positionsCompressed&&!e.buckets)return this.error("Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)"),!1;if(e.positions&&(e.positionsDecodeMatrix||e.positionsDecodeBoundary))return this.error("Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.positionsCompressed&&!e.positionsDecodeMatrix&&!e.positionsDecodeBoundary)return this.error("Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.uvCompressed&&!e.uvDecodeMatrix)return this.error("Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)"),!1;if(!(e.buckets||e.indices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)){const t=(e.positions||e.positionsCompressed).length/3;e.indices=this._createDefaultIndices(t)}if(!e.buckets&&!e.indices&&"points"!==e.primitive)return e.indices=this._createDefaultIndices(numIndices),this.error(`Param expected: indices (required for '${e.primitive}' primitive type)`),!1;if((e.matrix||e.position||e.rotation||e.scale)&&(e.positionsCompressed||e.positionsDecodeBoundary))return this.error("Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'"),!1;const t=!(!this._dtxEnabled||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||e.textureSetId);if(e.origin=e.origin?c.addVec3(this._origin,e.origin,c.vec3()):this._origin,e.matrix)e.meshMatrix=e.matrix;else if(e.scale||e.rotation||e.position||e.quaternion){const t=e.scale||VA,i=e.position||HA;e.rotation?(c.eulerToQuaternion(e.rotation,"XYZ",QA),e.meshMatrix=c.composeMat4(i,QA,t,c.mat4())):e.meshMatrix=c.composeMat4(i,e.quaternion||jA,t,c.mat4())}if(e.positionsDecodeBoundary&&(e.positionsDecodeMatrix=Lr(e.positionsDecodeBoundary,c.mat4())),t){if(e.type=2,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):zA,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.positions){const t=c.vec3(),i=[];z(e.positions,i,t)&&(e.positions=i,e.origin=c.addVec3(e.origin,t,t))}if(e.positions){const t=c.collapseAABB3();e.positionsDecodeMatrix=c.mat4(),c.expandAABB3Points3(t,e.positions),e.positionsCompressed=Rr(e.positions,t,e.positionsDecodeMatrix),e.aabb=t}else if(e.positionsCompressed){const t=c.collapseAABB3();c.expandAABB3Points3(t,e.positionsCompressed),Rt.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.buckets){const t=c.collapseAABB3();for(let i=0,s=e.buckets.length;i>24&255,r=i>>16&255,o=i>>8&255,n=255&i;switch(e.pickColor=new Uint8Array([n,o,r,s]),e.solid="solid"===e.primitive,t.origin=c.vec3(e.origin),e.type){case 2:t.layer=this._getDTXLayer(e),t.aabb=e.aabb;break;case 1:t.layer=this._getVBOBatchingLayer(e),t.aabb=e.aabb;break;case 0:t.layer=this._getVBOInstancingLayer(e),t.aabb=e.aabb}return e.transform&&(e.meshMatrix=e.transform.worldMatrix),t.portionId=t.layer.createPortion(t,e),this._meshes[e.id]=t,this._unusedMeshes[e.id]=t,this._meshList.push(t),t}_getNumPrimitives(e){let t=0;switch(e.geometry?e.geometry.primitive:e.primitive){case"triangles":case"solid":case"surface":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i>>0).toString(16)}_getVBOInstancingLayer(e){const t=this,i=e.origin,s=e.textureSetId||"-",r=e.geometryId,o=`${Math.round(i[0])}.${Math.round(i[1])}.${Math.round(i[2])}.${s}.${r}`;let n=this._vboInstancingLayers[o];if(n)return n;let a=e.textureSet;const l=e.geometry;for(;!n;)switch(l.primitive){case"triangles":case"surface":n=new Qo({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!1});break;case"solid":n=new Qo({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!0});break;case"lines":n=new Cn({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0});break;case"points":n=new va({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0})}return this._vboInstancingLayers[o]=n,this.layerList.push(n),n}createEntity(e){if(void 0===e.id?e.id=c.createUUID():this.scene.components[e.id]&&(this.error(`Scene already has a Component with this ID: ${e.id} - will assign random ID`),e.id=c.createUUID()),void 0===e.meshIds)return void this.error("Config missing: meshIds");let t=0;this._visible&&!1!==e.visible&&(t|=K),this._pickable&&!1!==e.pickable&&(t|=J),this._culled&&!1!==e.culled&&(t|=X),this._clippable&&!1!==e.clippable&&(t|=Y),this._collidable&&!1!==e.collidable&&(t|=Z),this._edges&&!1!==e.edges&&(t|=te),this._xrayed&&!1!==e.xrayed&&(t|=q),this._highlighted&&!1!==e.highlighted&&(t|=$),this._selected&&!1!==e.selected&&(t|=ee),e.flags=t,this._createEntity(e)}_createEntity(e){let t=[];for(let i=0,s=e.meshIds.length;ie.sortIdt.sortId?1:0));for(let e=0,t=this.layerList.length;e0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}_updateRenderFlagsVisibleLayers(){const e=this.renderFlags;e.numLayers=this.layerList.length,e.numVisibleLayers=0;for(let t=0,i=this.layerList.length;t0){const t=`${this.id}-dummyEntityForUnusedMeshes`;this.warn(`Creating dummy SceneModelEntity "${t}" for unused SceneMeshes: [${e.join(",")}]`),this.createEntity({id:t,meshIds:e,isObject:!0})}this._unusedMeshes={}}_getActiveSectionPlanesForLayer(e){const t=this.renderFlags,i=this.scene._sectionPlanesState.sectionPlanes,s=i.length,r=e.layerIndex*s;if(s>0)for(let e=0;e0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){const t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0){this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions0&&(e.edgesTransparent=!0))}if(this.numSelectedLayerPortions>0){const t=this.scene.selectedMaterial._state;t.fill&&(t.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){const t=this.scene.highlightMaterial._state;t.fill&&(t.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}drawColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i65536?16:8)}else n=[{positionsCompressed:s,indices:r,edgeIndices:o}];return n}class XA extends D{constructor(e,t={}){if(super(e,t),this._positions=t.positions||[],t.indices)this._indices=t.indices;else{this._indices=[];for(let e=0,t=this._positions.length/3-1;e{var r=e-i,o=t-s;return Math.sqrt(r*r+o*o)};class oh extends D{constructor(e,t={}){if(super(e.viewer.scene,t),this.plugin=e,this._container=t.container,!this._container)throw"config missing: container";this._eventSubs={};var i=this.plugin.viewer.scene;this._originMarker=new ae(i,t.origin),this._targetMarker=new ae(i,t.target),this._originWorld=c.vec3(),this._targetWorld=c.vec3(),this._wp=new Float64Array(24),this._vp=new Float64Array(24),this._pp=new Float64Array(24),this._cp=new Float64Array(8),this._xAxisLabelCulled=!1,this._yAxisLabelCulled=!1,this._zAxisLabelCulled=!1,this._color=t.color||this.plugin.defaultColor;const s=t.onMouseOver?e=>{t.onMouseOver(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseover",e))}:null,r=t.onMouseLeave?e=>{t.onMouseLeave(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseleave",e))}:null,o=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousedown",e))},n=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseup",e))},a=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousemove",e))},l=t.onContextMenu?e=>{t.onContextMenu(e,this)}:null,A=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent("wheel",e))};this._originDot=new he(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._targetDot=new he(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthWire=new Ae(this._container,{color:this._color,thickness:2,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisWire=new Ae(this._container,{color:"#FF0000",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisWire=new Ae(this._container,{color:"green",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisWire=new Ae(this._container,{color:"blue",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthLabel=new ce(this._container,{fillColor:this._color,prefix:"",text:"",zIndex:void 0!==e.zIndex?e.zIndex+4:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisLabel=new ce(this._container,{fillColor:"red",prefix:"X",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisLabel=new ce(this._container,{fillColor:"green",prefix:"Y",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisLabel=new ce(this._container,{fillColor:"blue",prefix:"Z",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._measurementOrientation="Horizontal",this._wpDirty=!1,this._vpDirty=!1,this._cpDirty=!1,this._sectionPlanesDirty=!0,this._visible=!1,this._originVisible=!1,this._targetVisible=!1,this._wireVisible=!1,this._axisVisible=!1,this._xAxisVisible=!1,this._yAxisVisible=!1,this._zAxisVisible=!1,this._axisEnabled=!0,this._xLabelEnabled=!1,this._yLabelEnabled=!1,this._zLabelEnabled=!1,this._lengthLabelEnabled=!1,this._labelsVisible=!1,this._labelsOnWires=!1,this._clickable=!1,this._originMarker.on("worldPos",(e=>{this._originWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._targetMarker.on("worldPos",(e=>{this._targetWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._onViewMatrix=i.camera.on("viewMatrix",(()=>{this._vpDirty=!0,this._needUpdate(0)})),this._onProjMatrix=i.camera.on("projMatrix",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onCanvasBoundary=i.canvas.on("boundary",(()=>{this._cpDirty=!0,this._needUpdate(0)})),this._onMetricsUnits=i.metrics.on("units",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsScale=i.metrics.on("scale",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsOrigin=i.metrics.on("origin",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onSectionPlaneUpdated=i.on("sectionPlaneUpdated",(()=>{this._sectionPlanesDirty=!0,this._needUpdate()})),this.approximate=t.approximate,this.visible=t.visible,this.originVisible=t.originVisible,this.targetVisible=t.targetVisible,this.wireVisible=t.wireVisible,this.axisVisible=t.axisVisible,this.xAxisVisible=t.xAxisVisible,this.yAxisVisible=t.yAxisVisible,this.zAxisVisible=t.zAxisVisible,this.xLabelEnabled=t.xLabelEnabled,this.yLabelEnabled=t.yLabelEnabled,this.zLabelEnabled=t.zLabelEnabled,this.lengthLabelEnabled=t.lengthLabelEnabled,this.labelsVisible=t.labelsVisible,this.labelsOnWires=t.labelsOnWires}_update(){if(!this._visible)return;const e=this.plugin.viewer.scene;if(this._wpDirty&&(this._measurementOrientation=function(e,t,i){return Math.abs(t[1]-e[1])>i?"Vertical":"Horizontal"}(this._originWorld,this._targetWorld,1),"Vertical"===this._measurementOrientation?(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._originWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._originWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1):(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._targetWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._targetWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1),this._wpDirty=!1,this._vpDirty=!0),this._vpDirty&&(c.transformPositions4(e.camera.viewMatrix,this._wp,this._vp),this._vp[3]=1,this._vp[7]=1,this._vp[11]=1,this._vp[15]=1,this._vpDirty=!1,this._cpDirty=!0),this._sectionPlanesDirty){if(this._isSliced(this._originWorld)||this._isSliced(this._targetWorld))return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setCulled(!0),this._yAxisWire.setCulled(!0),this._zAxisWire.setCulled(!0),this._lengthWire.setCulled(!0),this._originDot.setCulled(!0),void this._targetDot.setCulled(!0);this._xAxisLabel.setCulled(!1),this._yAxisLabel.setCulled(!1),this._zAxisLabel.setCulled(!1),this._lengthLabel.setCulled(!1),this._xAxisWire.setCulled(!1),this._yAxisWire.setCulled(!1),this._zAxisWire.setCulled(!1),this._lengthWire.setCulled(!1),this._originDot.setCulled(!1),this._targetDot.setCulled(!1),this._sectionPlanesDirty=!0}const t=this._originMarker.viewPos[2],i=this._targetMarker.viewPos[2];if(t>-.3||i>-.3)return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setVisible(!1),this._yAxisWire.setVisible(!1),this._zAxisWire.setVisible(!1),this._lengthWire.setVisible(!1),this._originDot.setVisible(!1),void this._targetDot.setVisible(!1);if(this._cpDirty){c.transformPositions4(e.camera.project.matrix,this._vp,this._pp);var s=this._pp,r=this._cp,o=e.canvas.canvas.getBoundingClientRect();const t=this._container.getBoundingClientRect();var n=o.top-t.top,a=o.left-t.left,l=e.canvas.boundary,A=l[2],h=l[3],u=0;const i=this.plugin.viewer.scene.metrics,f=i.scale,g=i.units,m=i.unitsInfo[g].abbrev;for(var d=0,p=s.length;de.offsetTop+(e.offsetParent&&e.offsetParent!==s.parentNode&&h(e.offsetParent)),u=e=>e.offsetLeft+(e.offsetParent&&e.offsetParent!==s.parentNode&&u(e.offsetParent)),d=c.vec2();this._onCameraControlHoverSnapOrSurface=i.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",(e=>{const t=e.snappedCanvasPos||e.canvasPos;r=!0,o.set(e.worldPos),n.set(e.canvasPos),0===this._mouseState?(this._canvasToPagePos?(this._canvasToPagePos(s,t,d),this._markerDiv.style.left=d[0]-5+"px",this._markerDiv.style.top=d[1]-5+"px"):(this._markerDiv.style.left=u(s)+t[0]-5+"px",this._markerDiv.style.top=h(s)+t[1]-5+"px"),this._markerDiv.style.background="pink",e.snappedToVertex||e.snappedToEdge?(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos,this.pointerLens.snapped=!0),this._markerDiv.style.background="greenyellow",this._markerDiv.style.border="2px solid green"):(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.canvasPos,this.pointerLens.snapped=!1),this._markerDiv.style.background="pink",this._markerDiv.style.border="2px solid red"),A=e.entity):(this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px"),s.style.cursor="pointer",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=this._currentDistanceMeasurementInitState.wireVisible,this._currentDistanceMeasurement.axisVisible=this._currentDistanceMeasurementInitState.axisVisible&&this.distanceMeasurementsPlugin.defaultAxisVisible,this._currentDistanceMeasurement.xAxisVisible=this._currentDistanceMeasurementInitState.xAxisVisible&&this.distanceMeasurementsPlugin.defaultXAxisVisible,this._currentDistanceMeasurement.yAxisVisible=this._currentDistanceMeasurementInitState.yAxisVisible&&this.distanceMeasurementsPlugin.defaultYAxisVisible,this._currentDistanceMeasurement.zAxisVisible=this._currentDistanceMeasurementInitState.zAxisVisible&&this.distanceMeasurementsPlugin.defaultZAxisVisible,this._currentDistanceMeasurement.targetVisible=this._currentDistanceMeasurementInitState.targetVisible,this._currentDistanceMeasurement.target.worldPos=o.slice(),this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px")})),s.addEventListener("mousedown",this._onMouseDown=e=>{1===e.which&&(a=e.clientX,l=e.clientY)}),s.addEventListener("mouseup",this._onMouseUp=t=>{1===t.which&&(t.clientX>a+20||t.clientXl+20||t.clientY{this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos),r=!1,this._markerDiv.style.left="-100px",this._markerDiv.style.top="-100px",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.axisVisible=!1),s.style.cursor="default"})),this._active=!0}deactivate(){if(!this._active)return;this.fire("activated",!1),this.pointerLens&&(this.pointerLens.visible=!1),this._markerDiv&&this._destroyMarkerDiv(),this.reset();const e=this.scene.canvas.canvas;e.removeEventListener("mousedown",this._onMouseDown),e.removeEventListener("mouseup",this._onMouseUp);const t=this.distanceMeasurementsPlugin.viewer.cameraControl;t.off(this._onCameraControlHoverSnapOrSurface),t.off(this._onCameraControlHoverSnapOrSurfaceOff),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._active=!1}reset(){this._active&&(this._destroyMarkerDiv(),this._initMarkerDiv(),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._mouseState=0)}get currentMeasurement(){return this._currentDistanceMeasurement}destroy(){this.deactivate(),super.destroy()}}class lh{constructor(){}getMetaModel(e,t,i){_.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getGLTF(e,t,i){_.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getGLB(e,t,i){_.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getArrayBuffer(e,t,i,s){!function(e,t,i,s){var r=()=>{};i=i||r,s=s||r;const o=/^data:(.*?)(;base64)?,(.*)$/,n=t.match(o);if(n){const e=!!n[2];var a=n[3];a=window.decodeURIComponent(a),e&&(a=window.atob(a));try{const e=new ArrayBuffer(a.length),t=new Uint8Array(e);for(var l=0;l{i(e)}),(function(e){s(e)}))}}class Ah{constructor(e={}){this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale="en",this._messages={},this._locales=[],this._locale="en",this.messages=e.messages,this.locale=e.locale}set messages(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire("updated",this)}loadMessages(e={}){for(let t in e)this._messages[t]=e[t];this.messages=this._messages}clearMessages(){this.messages={}}get locales(){return this._locales}set locale(e){e=e||"de",this._locale!==e&&(this._locale=e,this.fire("updated",e))}get locale(){return this._locale}translate(e,t){const i=this._messages[this._locale];if(!i)return null;const s=hh(e,i);return s?t?ch(s,t):s:null}translatePlurals(e,t,i){const s=this._messages[this._locale];if(!s)return null;let r=hh(e,s);return r=0===(t=parseInt(""+t,10))?r.zero:t>1?r.other:r.one,r?(r=ch(r,[t]),i&&(r=ch(r,i)),r):null}fire(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);const s=this._eventSubs[e];if(s)for(const e in s)if(s.hasOwnProperty(e)){s[e].callback(t)}}on(t,i){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new e),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});let s=this._eventSubs[t];s||(s={},this._eventSubs[t]=s);const r=this._eventSubIDMap.addItem();s[r]={callback:i},this._eventSubEvents[r]=t;const o=this._events[t];return void 0!==o&&i(o),r}off(e){if(null==e)return;if(!this._eventSubEvents)return;const t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];const i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}function hh(e,t){if(t[e])return t[e];const i=e.split(".");let s=t;for(let e=0,t=i.length;s&&e1?1:e}get t(){return this._t}get tangent(){return this.getTangent(this._t)}get length(){var e=this._getLengths();return e[e.length-1]}getTangent(e){var t=1e-4;void 0===e&&(e=this._t);var i=e-t,s=e+t;i<0&&(i=0),s>1&&(s=1);var r=this.getPoint(i),o=this.getPoint(s),n=c.subVec3(o,r,[]);return c.normalizeVec3(n,[])}getPointAt(e){var t=this.getUToTMapping(e);return this.getPoint(t)}getPoints(e){e||(e=5);var t,i=[];for(t=0;t<=e;t++)i.push(this.getPoint(t/e));return i}_getLengths(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i,s=[],r=this.getPoint(0),o=0;for(s.push(0),i=1;i<=e;i++)t=this.getPoint(i/e),o+=c.lenVec3(c.subVec3(t,r,[])),s.push(o),r=t;return this.cacheArcLengths=s,s}_updateArcLengths(){this.needsUpdate=!0,this._getLengths()}getUToTMapping(e,t){var i,s=this._getLengths(),r=0,o=s.length;i=t||e*s[o-1];for(var n,a=0,l=o-1;a<=l;)if((n=s[r=Math.floor(a+(l-a)/2)]-i)<0)a=r+1;else{if(!(n>0)){l=r;break}l=r-1}if(s[r=l]===i)return r/(o-1);var A=s[r];return(r+(i-A)/(s[r+1]-A))/(o-1)}}class dh extends uh{constructor(e,t={}){super(e,t),this.points=t.points,this.t=t.t}set points(e){this._points=e||[]}get points(){return this._points}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=this.points;if(!(t.length<3)){var i=(t.length-1)*e,s=Math.floor(i),r=i-s,o=t[0===s?s:s-1],n=t[s],a=t[s>t.length-2?t.length-1:s+1],l=t[s>t.length-3?t.length-1:s+2],A=c.vec3();return A[0]=c.catmullRomInterpolate(o[0],n[0],a[0],l[0],r),A[1]=c.catmullRomInterpolate(o[1],n[1],a[1],l[1],r),A[2]=c.catmullRomInterpolate(o[2],n[2],a[2],l[2],r),A}this.error("Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].")}getJSON(){return{points:points,t:this._t}}}const ph=c.vec3();const fh=c.vec3(),gh=c.vec3(),mh=c.vec3(),_h=c.vec3(),vh=c.vec3();class bh extends D{get type(){return"CameraFlightAnimation"}constructor(e,t={}){super(e,t),this._look1=c.vec3(),this._eye1=c.vec3(),this._up1=c.vec3(),this._look2=c.vec3(),this._eye2=c.vec3(),this._up2=c.vec3(),this._orthoScale1=1,this._orthoScale2=1,this._flying=!1,this._flyEyeLookUp=!1,this._flyingEye=!1,this._flyingLook=!1,this._callback=null,this._callbackScope=null,this._time1=null,this._time2=null,this.easing=!1!==t.easing,this.duration=t.duration,this.fit=t.fit,this.fitFOV=t.fitFOV,this.trail=t.trail}flyTo(e,t,i){e=e||this.scene,this._flying&&this.stop(),this._flying=!1,this._flyingEye=!1,this._flyingLook=!1,this._flyingEyeLookUp=!1,this._callback=t,this._callbackScope=i;const s=this.scene.camera,r=!!e.projection&&e.projection!==s.projection;let o,n,a,l,A;if(this._eye1[0]=s.eye[0],this._eye1[1]=s.eye[1],this._eye1[2]=s.eye[2],this._look1[0]=s.look[0],this._look1[1]=s.look[1],this._look1[2]=s.look[2],this._up1[0]=s.up[0],this._up1[1]=s.up[1],this._up1[2]=s.up[2],this._orthoScale1=s.ortho.scale,this._orthoScale2=e.orthoScale||this._orthoScale1,e.aabb)o=e.aabb;else if(6===e.length)o=e;else if(e.eye&&e.look||e.up)n=e.eye,a=e.look,l=e.up;else if(e.eye)n=e.eye;else if(e.look)a=e.look;else{let s=e;if((_.isNumeric(s)||_.isString(s))&&(A=s,s=this.scene.components[A],!s))return this.error("Component not found: "+_.inQuotes(A)),void(t&&(i?t.call(i):t()));r||(o=s.aabb||this.scene.aabb)}const h=e.poi;if(o){if(o[3]=1;e>1&&(e=1);const i=this.easing?bh._ease(e,0,1,1):e,s=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?(c.subVec3(s.eye,s.look,vh),s.eye=c.lerpVec3(i,0,1,this._eye1,this._eye2,mh),s.look=c.subVec3(mh,vh,gh)):this._flyingLook&&(s.look=c.lerpVec3(i,0,1,this._look1,this._look2,gh),s.up=c.lerpVec3(i,0,1,this._up1,this._up2,_h)):this._flyingEyeLookUp&&(s.eye=c.lerpVec3(i,0,1,this._eye1,this._eye2,mh),s.look=c.lerpVec3(i,0,1,this._look1,this._look2,gh),s.up=c.lerpVec3(i,0,1,this._up1,this._up2,_h)),this._projection2){const t="ortho"===this._projection2?bh._easeOutExpo(e,0,1,1):bh._easeInCubic(e,0,1,1);s.customProjection.matrix=c.lerpMat4(t,0,1,this._projMatrix1,this._projMatrix2)}else s.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return s.ortho.scale=this._orthoScale2,void this.stop();M.scheduleTask(this._update,this)}static _ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}static _easeInCubic(e,t,i,s){return i*(e/=s)*e*e+t}static _easeOutExpo(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}stop(){if(!this._flying)return;this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);const e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire("stopped",!0,!0)}cancel(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire("canceled",!0,!0))}set duration(e){this._duration=e?1e3*e:500,this.stop()}get duration(){return this._duration/1e3}set fit(e){this._fit=!1!==e}get fit(){return this._fit}set fitFOV(e){this._fitFOV=e||45}get fitFOV(){return this._fitFOV}set trail(e){this._trail=!!e}get trail(){return this._trail}destroy(){this.stop(),super.destroy()}}class yh extends D{get type(){return"CameraPathAnimation"}constructor(e,t={}){super(e,t),this._cameraFlightAnimation=new bh(this),this._t=0,this.state=yh.SCRUBBING,this._playingFromT=0,this._playingToT=0,this._playingRate=t.playingRate||1,this._playingDir=1,this._lastTime=null,this.cameraPath=t.cameraPath,this._tick=this.scene.on("tick",this._updateT,this)}_updateT(){const e=this._cameraPath;if(!e)return;let t,i;const s=performance.now(),r=this._lastTime?.001*(s-this._lastTime):0;if(this._lastTime=s,0!==r)switch(this.state){case yh.SCRUBBING:return;case yh.PLAYING:if(this._t+=this._playingRate*r,t=this._cameraPath.frames.length,0===t||this._playingDir<0&&this._t<=0||this._playingDir>0&&this._t>=this._cameraPath.frames[t-1].t)return this.state=yh.SCRUBBING,this._t=this._cameraPath.frames[t-1].t,void this.fire("stopped");e.loadFrame(this._t);break;case yh.PLAYING_TO:i=this._t+this._playingRate*r*this._playingDir,(this._playingDir<0&&i<=this._playingToT||this._playingDir>0&&i>=this._playingToT)&&(i=this._playingToT,this.state=yh.SCRUBBING,this.fire("stopped")),this._t=i,e.loadFrame(this._t)}}_ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}set cameraPath(e){this._cameraPath=e}get cameraPath(){return this._cameraPath}set rate(e){this._playingRate=e}get rate(){return this._playingRate}play(){this._cameraPath&&(this._lastTime=null,this.state=yh.PLAYING)}playToT(e){this._cameraPath&&(this._playingFromT=this._t,this._playingToT=e,this._playingDir=this._playingToT-this._playingFromT<0?-1:1,this._lastTime=null,this.state=yh.PLAYING_TO)}playToFrame(e){const t=this._cameraPath;if(!t)return;const i=t.frames[e];i?this.playToT(i.t):this.error("playToFrame - frame index out of range: "+e)}flyToFrame(e,t){const i=this._cameraPath;if(!i)return;const s=i.frames[e];s?(this.state=yh.SCRUBBING,this._cameraFlightAnimation.flyTo(s,t)):this.error("flyToFrame - frame index out of range: "+e)}scrubToT(e){const t=this._cameraPath;if(!t)return;this.scene.camera&&(this._t=e,t.loadFrame(this._t),this.state=yh.SCRUBBING)}scrubToFrame(e){const t=this._cameraPath;if(!t)return;if(!this.scene.camera)return;t.frames[e]?(t.loadFrame(this._t),this.state=yh.SCRUBBING):this.error("playToFrame - frame index out of range: "+e)}stop(){this.state=yh.SCRUBBING,this.fire("stopped")}destroy(){super.destroy(),this.scene.off(this._tick)}}yh.STOPPED=0,yh.SCRUBBING=1,yh.PLAYING=2,yh.PLAYING_TO=3;const xh=c.vec3(),Bh=c.vec3();c.vec3();const wh=c.vec3([0,-1,0]),Ph=c.vec4([0,0,0,1]);function Ch(e){if(!Mh(e.width)||!Mh(e.height)){const t=document.createElement("canvas");t.width=Fh(e.width),t.height=Fh(e.height);t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),e=t}return e}function Mh(e){return 0==(e&e-1)}function Fh(e){--e;for(let t=1;t<32;t<<=1)e|=e>>t;return e+1}class Eh extends D{get type(){return"CubeTexture"}constructor(e,t={}){super(e,t);const i=this.scene.canvas.gl;this._state=new tt({texture:new vs({gl:i,target:i.TEXTURE_CUBE_MAP}),flipY:this._checkFlipY(t.minFilter),encoding:this._checkEncoding(t.encoding),minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,mipmaps:!0}),this._src=t.src,this._images=[],this._loadSrc(t.src),p.memory.textures++}_checkFlipY(e){return!!e}_checkEncoding(e){return 3e3!==(e=e||3e3)&&3001!==e&&(this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),e=3e3),e}_webglContextRestored(){this.scene.canvas.gl,this._state.texture=null,this._src&&this._loadSrc(this._src)}_loadSrc(e){const t=this,i=this.scene.canvas.gl;this._images=[];let s=!1,r=0;for(let o=0;o{r(),t()})):(i.eye=this._eye,i.look=this._look,i.up=this._up,r(),i.projection=s.projection)}}const Dh=c.vec3();const Sh=c.vec3();class Th{constructor(){this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsHasColorize=[],this.objectsOpacity=[],this.numObjects=0}saveObjects(e,t){this.numObjects=0,this._mask=t?_.apply(t,{}):null;const i=e.objects,s=!t||t.visible,r=!t||t.edges,o=!t||t.xrayed,n=!t||t.highlighted,a=!t||t.selected,l=!t||t.clippable,A=!t||t.pickable,h=!t||t.colorize,c=!t||t.opacity;for(let e in i)if(i.hasOwnProperty(e)){const t=i[e],u=this.numObjects;if(s&&(this.objectsVisible[u]=t.visible),r&&(this.objectsEdges[u]=t.edges),o&&(this.objectsXrayed[u]=t.xrayed),n&&(this.objectsHighlighted[u]=t.highlighted),a&&(this.objectsSelected[u]=t.selected),l&&(this.objectsClippable[u]=t.clippable),A&&(this.objectsPickable[u]=t.pickable),h){const e=t.colorize;e?(this.objectsColorize[3*u+0]=e[0],this.objectsColorize[3*u+1]=e[1],this.objectsColorize[3*u+2]=e[2],this.objectsHasColorize[u]=!0):this.objectsHasColorize[u]=!1}c&&(this.objectsOpacity[u]=t.opacity),this.numObjects++}}restoreObjects(e){const t=this._mask,i=!t||t.visible,s=!t||t.edges,r=!t||t.xrayed,o=!t||t.highlighted,n=!t||t.selected,a=!t||t.clippable,l=!t||t.pickable,A=!t||t.colorize,h=!t||t.opacity;var c=0;const u=e.objects;for(let e in u)if(u.hasOwnProperty(e)){const t=u[e];i&&(t.visible=this.objectsVisible[c]),s&&(t.edges=this.objectsEdges[c]),r&&(t.xrayed=this.objectsXrayed[c]),o&&(t.highlighted=this.objectsHighlighted[c]),n&&(t.selected=this.objectsSelected[c]),a&&(t.clippable=this.objectsClippable[c]),l&&(t.pickable=this.objectsPickable[c]),A&&(this.objectsHasColorize[c]?(Sh[0]=this.objectsColorize[3*c+0],Sh[1]=this.objectsColorize[3*c+1],Sh[2]=this.objectsColorize[3*c+2],t.colorize=Sh):t.colorize=null),h&&(t.opacity=this.objectsOpacity[c]),c++}}}class Rh extends D{constructor(e,t={}){super(e,t),this._skyboxMesh=new Ki(this,{geometry:new kt(this,{primitive:"triangles",positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),background:!0,scale:[2e3,2e3,2e3],rotation:[0,-90,0],material:new Ht(this,{ambient:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],emissive:[1,1,1],emissiveMap:new Ps(this,{src:t.src,flipY:!0,wrapS:"clampToEdge",wrapT:"clampToEdge",encoding:t.encoding||"sRGB"}),backfaces:!0}),visible:!1,pickable:!1,clippable:!1,collidable:!1}),this.size=t.size,this.active=t.active}set size(e){this._size=e||1e3,this._skyboxMesh.scale=[this._size,this._size,this._size]}get size(){return this._size}set active(e){this._skyboxMesh.visible=e}get active(){return this._skyboxMesh.visible}}const Lh=c.vec4(),Uh=c.vec4(),kh=c.vec3(),Oh=c.vec3(),Nh=c.vec3(),Qh=c.vec4(),Vh=c.vec4(),Hh=c.vec4();class jh{constructor(e){this._scene=e}dollyToCanvasPos(e,t,i){let s=!1;const r=this._scene.camera;if(e){const t=c.subVec3(e,r.eye,kh);s=c.lenVec3(t){this._cameraDirty=!0})),this._onProjMatrix=this._scene.camera.on("projMatrix",(()=>{this._cameraDirty=!0})),this._onTick=this._scene.on("tick",(()=>{this.updatePivotElement(),this.updatePivotSphere()}))}createPivotSphere(){const e=this.getPivotPos(),t=c.vec3();c.decomposeMat4(c.inverseMat4(this._scene.viewer.camera.viewMatrix,c.mat4()),t,c.vec4(),c.vec3());const i=c.distVec3(t,e);let s=Math.tan(Math.PI/500)*i*this._pivotSphereSize;"ortho"==this._scene.camera.projection&&(s/=this._scene.camera.ortho.scale/2),G(e,this._rtcCenter,this._rtcPos),this._pivotSphereGeometry=new Fs(this._scene,Yi({radius:s})),this._pivotSphere=new Ki(this._scene,{geometry:this._pivotSphereGeometry,material:this._pivotSphereMaterial,pickable:!1,position:this._rtcPos,rtcCenter:this._rtcCenter})}destroyPivotSphere(){this._pivotSphere&&(this._pivotSphere.destroy(),this._pivotSphere=null),this._pivotSphereGeometry&&(this._pivotSphereGeometry.destroy(),this._pivotSphereGeometry=null)}updatePivotElement(){const e=this._scene.camera,t=this._scene.canvas;if(this._pivoting&&this._cameraDirty){c.transformPoint3(e.viewMatrix,this.getPivotPos(),this._pivotViewPos),this._pivotViewPos[3]=1,c.transformPoint4(e.projMatrix,this._pivotViewPos,this._pivotProjPos);const i=t.boundary,s=i[2],r=i[3];this._pivotCanvasPos[0]=Math.floor((1+this._pivotProjPos[0]/this._pivotProjPos[3])*s/2),this._pivotCanvasPos[1]=Math.floor((1-this._pivotProjPos[1]/this._pivotProjPos[3])*r/2);let o=t._lastBoundingClientRect;if(!o||t._canvasSizeChanged){const e=t.canvas;o=t._lastBoundingClientRect=e.getBoundingClientRect()}this._pivotElement&&(this._pivotElement.style.left=Math.floor(o.left+this._pivotCanvasPos[0])-this._pivotElement.clientWidth/2+window.scrollX+"px",this._pivotElement.style.top=Math.floor(o.top+this._pivotCanvasPos[1])-this._pivotElement.clientHeight/2+window.scrollY+"px"),this._cameraDirty=!1}}updatePivotSphere(){this._pivoting&&this._pivotSphere&&(G(this.getPivotPos(),this._rtcCenter,this._rtcPos),c.compareVec3(this._rtcPos,this._pivotSphere.position)||(this.destroyPivotSphere(),this.createPivotSphere()))}setPivotElement(e){this._pivotElement=e}enablePivotSphere(e={}){this.destroyPivotSphere(),this._pivotSphereEnabled=!0,e.size&&(this._pivotSphereSize=e.size);const t=e.color||[1,0,0];this._pivotSphereMaterial=new Ht(this._scene,{emissive:t,ambient:t,specular:[0,0,0],diffuse:[0,0,0]})}disablePivotSphere(){this.destroyPivotSphere(),this._pivotSphereEnabled=!1}startPivot(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;const e=this._scene.camera;let t=c.lookAtMat4v(e.eye,e.look,e.worldUp);c.transformPoint3(t,this.getPivotPos(),this._cameraOffset);const i=this.getPivotPos();this._cameraOffset[2]+=c.distVec3(e.eye,i),t=c.inverseMat4(t);const s=c.transformVec3(t,this._cameraOffset),r=c.vec3();if(c.subVec3(e.eye,i,r),c.addVec3(r,s),e.zUp){const e=r[1];r[1]=r[2],r[2]=e}this._radius=c.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}_cameraLookingDownwards(){const e=this._scene.camera,t=c.normalizeVec3(c.subVec3(e.look,e.eye,Gh)),i=c.cross3Vec3(t,e.worldUp,zh);return c.sqLenVec3(i)<=1e-4}getPivoting(){return this._pivoting}setPivotPos(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}setCanvasPivotPos(e){const t=this._scene.camera,i=Math.abs(c.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),n=[0,0,-1,1],a=c.dotVec4(n,r)/c.dotVec4(n,o),l=Kh;t.project.unproject(e,a,Xh,Jh,l);const A=c.normalizeVec3(c.subVec3(l,t.eye,Gh)),h=c.addVec3(t.eye,c.mulVec3Scalar(A,i,zh),Wh);this.setPivotPos(h)}getPivotPos(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}continuePivot(e,t){if(!this._pivoting)return;if(0===e&&0===t)return;const i=this._scene.camera;var s=-e;const r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=c.clamp(this._polar,.001,Math.PI-.001);const o=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){const e=o[1];o[1]=o[2],o[2]=e}const n=c.lenVec3(c.subVec3(i.look,i.eye,c.vec3())),a=this.getPivotPos();c.addVec3(o,a);let l=c.lookAtMat4v(o,a,i.worldUp);l=c.inverseMat4(l);const A=c.transformVec3(l,this._cameraOffset);l[12]-=A[0],l[13]-=A[1],l[14]-=A[2];const h=[l[8],l[9],l[10]];i.eye=[l[12],l[13],l[14]],c.subVec3(i.eye,c.mulVec3Scalar(h,n),i.look),i.up=[l[4],l[5],l[6]],this.showPivot()}showPivot(){this._shown||(this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility="visible"),this._pivotSphereEnabled&&(this.destroyPivotSphere(),this.createPivotSphere()),this._shown=!0)}hidePivot(){this._shown&&(this._pivotElement&&(this._pivotElement.style.visibility="hidden"),this._pivotSphereEnabled&&this.destroyPivotSphere(),this._shown=!1)}endPivot(){this._pivoting=!1}destroy(){this.destroyPivotSphere(),this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}class Zh{constructor(e,t){this._scene=e.scene,this._cameraControl=e,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=t,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick=!1,this.pickCursorPos=c.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._lastHash=null,this._needFireEvents=0}update(){if(!this._configs.pointerEnabled)return;if(!this.schedulePickEntity&&!this.schedulePickSurface)return;const e=`${~~this.pickCursorPos[0]}-${~~this.pickCursorPos[1]}-${this.scheduleSnapOrPick}-${this.schedulePickSurface}-${this.schedulePickEntity}`;if(this._lastHash===e)return;this.picked=!1,this.pickedSurface=!1,this.snappedOrPicked=!1,this.hoveredSnappedOrSurfaceOff=!1;const t=this._cameraControl.hasSubs("hoverSurface");if(this.scheduleSnapOrPick){const e=this._scene.pick({canvasPos:this.pickCursorPos,snapRadius:this._configs.snapRadius,snapToVertex:this._configs.snapToVertex,snapToEdge:this._configs.snapToEdge});e&&(e.snappedToEdge||e.snappedToVertex)?(this.snapPickResult=e,this.snappedOrPicked=!0,this._needFireEvents++):(this.schedulePickSurface=!0,this.snapPickResult=null)}if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){const e=this.pickResult.canvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents+=t?1:0,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.hoveredSnappedOrSurfaceOff=!0,void(this.scheduleSnapOrPick=!1)}if(this.schedulePickEntity&&this.pickResult&&(this.pickResult.canvasPos||this.pickResult.snappedCanvasPos)){const e=this.pickResult.canvasPos||this.pickResult.snappedCanvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface||this.scheduleSnapOrPick&&!this.snapPickResult?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult?(this.picked=!0,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.pickedSurface=!0,this._needFireEvents++):this.scheduleSnapOrPick&&(this.hoveredSnappedOrSurfaceOff=!0,this._needFireEvents++)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents++)),this.scheduleSnapOrPick=!1,this.schedulePickEntity=!1,this.schedulePickSurface=!1}fireEvents(){if(0!==this._needFireEvents){if(this.hoveredSnappedOrSurfaceOff&&this._cameraControl.fire("hoverSnapOrSurfaceOff",{canvasPos:this.pickCursorPos,pointerPos:this.pickCursorPos},!0),this.snappedOrPicked)if(this.snapPickResult){const e=new Me;e.entity=this.snapPickResult.entity,e.snappedToVertex=this.snapPickResult.snappedToVertex,e.snappedToEdge=this.snapPickResult.snappedToEdge,e.worldPos=this.snapPickResult.worldPos,e.canvasPos=this.pickCursorPos,e.snappedCanvasPos=this.snapPickResult.snappedCanvasPos,this._cameraControl.fire("hoverSnapOrSurface",e,!0),this.snapPickResult=null}else this._cameraControl.fire("hoverSnapOrSurface",this.pickResult,!0);if(this.picked&&this.pickResult&&(this.pickResult.entity||this.pickResult.worldPos)){if(this.pickResult.entity){const e=this.pickResult.entity.id;this._lastPickedEntityId!==e&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire("hoverEnter",this.pickResult,!0),this._lastPickedEntityId=e)}this._cameraControl.fire("hover",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire("hoverSurface",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire("hoverOff",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=0}}}const qh=c.vec2();class $h{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController;let n,a,l,A=0,h=0,u=0,d=0,p=!1;const f=c.vec3();let g=!0;const m=this._scene.canvas.canvas,_=[];function v(e=!0){m.style.cursor="move",A=s.pointerCanvasPos[0],h=s.pointerCanvasPos[1],u=s.pointerCanvasPos[0],d=s.pointerCanvasPos[1],e&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(p=!0,f.set(o.pickResult.worldPos)):p=!1)}document.addEventListener("keydown",this._documentKeyDownHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!0}),document.addEventListener("keyup",this._documentKeyUpHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!1}),m.addEventListener("mousedown",this._mouseDownHandler=t=>{if(i.active&&i.pointerEnabled)switch(t.which){case 1:_[e.input.KEY_SHIFT]||i.planView?(n=!0,v()):(n=!0,v(!1));break;case 2:a=!0,v();break;case 3:l=!0,i.panRightClick&&v()}}),document.addEventListener("mousemove",this._documentMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(!n&&!a&&!l)return;const o=e.canvas.boundary,u=o[2],d=o[3],g=s.pointerCanvasPos[0],m=s.pointerCanvasPos[1],v=_[e.input.KEY_SHIFT]||i.planView||!i.panRightClick&&a||i.panRightClick&&l,b=document.pointerLockElement?t.movementX:g-A,y=document.pointerLockElement?t.movementY:m-h;if(v){const t=e.camera;if("perspective"===t.projection){const i=Math.abs(p?c.lenVec3(c.subVec3(f,e.camera.eye,[])):e.camera.eyeLookDist)*Math.tan(t.perspective.fov/2*Math.PI/180);r.panDeltaX+=1.5*b*i/d,r.panDeltaY+=1.5*y*i/d}else r.panDeltaX+=.5*t.ortho.scale*(b/d),r.panDeltaY+=.5*t.ortho.scale*(y/d)}else!n||a||l||i.planView||(i.firstPerson?(r.rotateDeltaY-=b/u*i.dragRotationRate/2,r.rotateDeltaX+=y/d*(i.dragRotationRate/4)):(r.rotateDeltaY-=b/u*(1.5*i.dragRotationRate),r.rotateDeltaX+=y/d*(1.5*i.dragRotationRate)));A=g,h=m}),m.addEventListener("mousemove",this._canvasMouseMoveHandler=e=>{i.active&&i.pointerEnabled&&s.mouseover&&(g=!0)}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{if(i.active&&i.pointerEnabled)switch(e.which){case 1:case 2:case 3:n=!1,a=!1,l=!1}}),m.addEventListener("mouseup",this._mouseUpHandler=e=>{if(i.active&&i.pointerEnabled){if(3===e.which){!function(e,t){if(e){let i=e.target,s=0,r=0,o=0,n=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,o+=i.scrollLeft,n+=i.scrollTop,i=i.offsetParent;t[0]=e.pageX+o-s,t[1]=e.pageY+n-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,qh);const i=qh[0],s=qh[1];Math.abs(i-u)<3&&Math.abs(s-d)<3&&t.cameraControl.fire("rightClick",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:qh,event:e},!0)}m.style.removeProperty("cursor")}}),m.addEventListener("mouseenter",this._mouseEnterHandler=()=>{i.active&&i.pointerEnabled});const b=1/60;let y=null;m.addEventListener("wheel",this._mouseWheelHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=performance.now()/1e3;var o=null!==y?t-y:0;y=t,o>.05&&(o=.05),o{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const n=r._isKeyDownForAction(r.AXIS_VIEW_RIGHT),a=r._isKeyDownForAction(r.AXIS_VIEW_BACK),l=r._isKeyDownForAction(r.AXIS_VIEW_LEFT),A=r._isKeyDownForAction(r.AXIS_VIEW_FRONT),h=r._isKeyDownForAction(r.AXIS_VIEW_TOP),u=r._isKeyDownForAction(r.AXIS_VIEW_BOTTOM);if(!(n||a||l||A||h||u))return;const d=e.aabb,p=c.getAABB3Diag(d);c.getAABB3Center(d,ec);const f=Math.abs(p/Math.tan(t.cameraFlight.fitFOV*c.DEGTORAD)),g=1.1*p;oc.orthoScale=g,n?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldRight,f,tc),rc)),oc.look.set(ec),oc.up.set(o.worldUp)):a?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldForward,f,tc),rc)),oc.look.set(ec),oc.up.set(o.worldUp)):l?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldRight,-f,tc),rc)),oc.look.set(ec),oc.up.set(o.worldUp)):A?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldForward,-f,tc),rc)),oc.look.set(ec),oc.up.set(o.worldUp)):h?(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldUp,f,tc),rc)),oc.look.set(ec),oc.up.set(c.normalizeVec3(c.mulVec3Scalar(o.worldForward,1,ic),sc))):u&&(oc.eye.set(c.addVec3(ec,c.mulVec3Scalar(o.worldUp,-f,tc),rc)),oc.look.set(ec),oc.up.set(c.normalizeVec3(c.mulVec3Scalar(o.worldForward,-1,ic)))),!i.firstPerson&&i.followPointer&&t.pivotController.setPivotPos(ec),t.cameraFlight.duration>0?t.cameraFlight.flyTo(oc,(()=>{t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot()})):(t.cameraFlight.jumpTo(oc),t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot())}))}reset(){}destroy(){this._scene.input.off(this._onSceneKeyDown)}}class ac{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=t.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;let l=!1,A=!1;const h=this._scene.canvas.canvas,u=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i&&i.entity?i.entity.aabb:e.aabb;if(s){const i=e.camera;c.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})},d=e.tickify(this._canvasMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(l||A)return;const r=a.hasSubs("hover"),n=a.hasSubs("hoverEnter"),h=a.hasSubs("hoverOut"),c=a.hasSubs("hoverOff"),u=a.hasSubs("hoverSurface"),d=a.hasSubs("hoverSnapOrSurface");if(r||n||h||c||u||d)if(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=u,o.scheduleSnapOrPick=d,o.update(),o.pickResult){if(o.pickResult.entity){const t=o.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),a.fire("hoverEnter",o.pickResult,!0),this._lastPickedEntityId=t)}a.fire("hover",o.pickResult,!0),(o.pickResult.worldPos||o.pickResult.snappedWorldPos)&&a.fire("hoverSurface",o.pickResult,!0)}else void 0!==this._lastPickedEntityId&&(a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),a.fire("hoverOff",{canvasPos:o.pickCursorPos},!0)});h.addEventListener("mousemove",d),h.addEventListener("mousedown",this._canvasMouseDownHandler=t=>{1===t.which&&(l=!0),3===t.which&&(A=!0);if(1===t.which&&i.active&&i.pointerEnabled&&(s.mouseDownClientX=t.clientX,s.mouseDownClientY=t.clientY,s.mouseDownCursorX=s.pointerCanvasPos[0],s.mouseDownCursorY=s.pointerCanvasPos[1],!i.firstPerson&&i.followPointer&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),1===t.which))){const t=o.pickResult;t&&t.worldPos?(n.setPivotPos(t.worldPos),n.startPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),n.startPivot())}}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{1===e.which&&(l=!1),3===e.which&&(A=!1),n.getPivoting()&&n.endPivot()}),h.addEventListener("mouseup",this._canvasMouseUpHandler=r=>{if(!i.active||!i.pointerEnabled)return;if(!(1===r.which))return;if(n.hidePivot(),Math.abs(r.clientX-s.mouseDownClientX)>3||Math.abs(r.clientY-s.mouseDownClientY)>3)return;const l=a.hasSubs("picked"),A=a.hasSubs("pickedNothing"),h=a.hasSubs("pickedSurface"),d=a.hasSubs("doublePicked"),p=a.hasSubs("doublePickedSurface"),f=a.hasSubs("doublePickedNothing");if(!(i.doublePickFlyTo||d||p||f))return(l||A||h)&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=h,o.update(),o.pickResult?(a.fire("picked",o.pickResult,!0),o.pickedSurface&&a.fire("pickedSurface",o.pickResult,!0)):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0)),void(this._clicks=0);if(this._clicks++,1===this._clicks){o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo,o.schedulePickSurface=h,o.update();const e=o.pickResult,r=o.pickedSurface;this._timeout=setTimeout((()=>{e?(a.fire("picked",e,!0),r&&(a.fire("pickedSurface",e,!0),!i.firstPerson&&i.followPointer&&(t.pivotController.setPivotPos(e.worldPos),t.pivotController.startPivot()&&t.pivotController.showPivot()))):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0),this._clicks=0}),i.doubleClickTimeFrame)}else{if(null!==this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null),o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo||d||p,o.schedulePickSurface=o.schedulePickEntity&&p,o.update(),o.pickResult){if(a.fire("doublePicked",o.pickResult,!0),o.pickedSurface&&a.fire("doublePickedSurface",o.pickResult,!0),i.doublePickFlyTo&&(u(o.pickResult),!i.firstPerson&&i.followPointer)){const e=o.pickResult.entity.aabb,i=c.getAABB3Center(e);t.pivotController.setPivotPos(i),t.pivotController.startPivot()&&t.pivotController.showPivot()}}else if(a.fire("doublePickedNothing",{canvasPos:s.pointerCanvasPos},!0),i.doublePickFlyTo&&(u(),!i.firstPerson&&i.followPointer)){const i=e.aabb,s=c.getAABB3Center(i);t.pivotController.setPivotPos(s),t.pivotController.startPivot()&&t.pivotController.showPivot()}this._clicks=0}},!1)}reset(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("mousemove",this._canvasMouseMoveHandler),e.removeEventListener("mousedown",this._canvasMouseDownHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}class lc{constructor(e,t,i,s,r){this._scene=e;const o=e.input,n=[],a=e.canvas.canvas;let l=!0;this._onSceneMouseMove=o.on("mousemove",(()=>{l=!0})),this._onSceneKeyDown=o.on("keydown",(t=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&s.mouseover&&(n[t]=!0,t===o.KEY_SHIFT&&(a.style.cursor="move"))})),this._onSceneKeyUp=o.on("keyup",(s=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&(n[s]=!1,s===o.KEY_SHIFT&&(a.style.cursor=null),t.pivotController.getPivoting()&&t.pivotController.endPivot())})),this._onTick=e.on("tick",(a=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const A=t.cameraControl,h=a.deltaTime/1e3;if(!i.planView){const e=A._isKeyDownForAction(A.ROTATE_Y_POS,n),s=A._isKeyDownForAction(A.ROTATE_Y_NEG,n),o=A._isKeyDownForAction(A.ROTATE_X_POS,n),a=A._isKeyDownForAction(A.ROTATE_X_NEG,n),l=h*i.keyboardRotationRate;(e||s||o||a)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),e?r.rotateDeltaY+=l:s&&(r.rotateDeltaY-=l),o?r.rotateDeltaX+=l:a&&(r.rotateDeltaX-=l),!i.firstPerson&&i.followPointer&&t.pivotController.startPivot())}if(!n[o.KEY_CTRL]&&!n[o.KEY_ALT]){const e=A._isKeyDownForAction(A.DOLLY_BACKWARDS,n),o=A._isKeyDownForAction(A.DOLLY_FORWARDS,n);if(e||o){const n=h*i.keyboardDollyRate;!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),o?r.dollyDelta-=n:e&&(r.dollyDelta+=n),l&&(s.followPointerDirty=!0,l=!1)}}const c=A._isKeyDownForAction(A.PAN_FORWARDS,n),u=A._isKeyDownForAction(A.PAN_BACKWARDS,n),d=A._isKeyDownForAction(A.PAN_LEFT,n),p=A._isKeyDownForAction(A.PAN_RIGHT,n),f=A._isKeyDownForAction(A.PAN_UP,n),g=A._isKeyDownForAction(A.PAN_DOWN,n),m=(n[o.KEY_ALT]?.3:1)*h*i.keyboardPanRate;(c||u||d||p||f||g)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),g?r.panDeltaY+=m:f&&(r.panDeltaY+=-m),p?r.panDeltaX+=-m:d&&(r.panDeltaX+=m),u?r.panDeltaZ+=m:c&&(r.panDeltaZ+=-m))}))}reset(){}destroy(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}const Ac=c.vec3();class hc{constructor(e,t,i,s,r){this._scene=e;const o=e.camera,n=t.pickController,a=t.pivotController,l=t.panController;let A=1,h=1,u=null;this._onTick=e.on("tick",(()=>{if(!i.active||!i.pointerEnabled)return;let t="default";if(Math.abs(r.dollyDelta)<.001&&(r.dollyDelta=0),Math.abs(r.rotateDeltaX)<.001&&(r.rotateDeltaX=0),Math.abs(r.rotateDeltaY)<.001&&(r.rotateDeltaY=0),0===r.rotateDeltaX&&0===r.rotateDeltaY||(r.dollyDelta=0),i.followPointer){if(--A<=0&&(A=1,0!==r.dollyDelta)){if(0===r.rotateDeltaY&&0===r.rotateDeltaX&&i.followPointer&&s.followPointerDirty&&(n.pickCursorPos=s.pointerCanvasPos,n.schedulePickSurface=!0,n.update(),n.pickResult&&n.pickResult.worldPos?u=n.pickResult.worldPos:(h=1,u=null),s.followPointerDirty=!1),u){const t=Math.abs(c.lenVec3(c.subVec3(u,e.camera.eye,Ac)));h=t/i.dollyProximityThreshold}h{s.mouseover=!0}),o.addEventListener("mouseleave",this._mouseLeaveHandler=()=>{s.mouseover=!1,o.style.cursor=null}),document.addEventListener("mousemove",this._mouseMoveHandler=e=>{uc(e,o,s.pointerCanvasPos)}),o.addEventListener("mousedown",this._mouseDownHandler=e=>{i.active&&i.pointerEnabled&&(uc(e,o,s.pointerCanvasPos),s.mouseover=!0)}),o.addEventListener("mouseup",this._mouseUpHandler=e=>{i.active&&i.pointerEnabled})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener("mousemove",this._mouseMoveHandler),e.removeEventListener("mouseenter",this._mouseEnterHandler),e.removeEventListener("mouseleave",this._mouseLeaveHandler),e.removeEventListener("mousedown",this._mouseDownHandler),e.removeEventListener("mouseup",this._mouseUpHandler)}}function uc(e,t,i){if(e){const{left:s,top:r}=t.getBoundingClientRect();i[0]=e.clientX-s,i[1]=e.clientY-r}else e=window.event,i[0]=e.x,i[1]=e.y;return i}const dc=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class pc{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=c.vec2(),l=c.vec2(),A=c.vec2(),h=c.vec2(),u=[],d=this._scene.canvas.canvas;let p=0,f=!1;this._onTick=e.on("tick",(()=>{f=!1})),d.addEventListener("touchstart",this._canvasTouchStartHandler=t=>{if(!i.active||!i.pointerEnabled)return;t.preventDefault();const r=t.touches,l=t.changedTouches;for(s.touchStartTime=Date.now(),1===r.length&&1===l.length&&(dc(r[0],a),i.followPointer&&(o.pickCursorPos=a,o.schedulePickSurface=!0,o.update(),i.planView||(o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(n.setPivotPos(o.pickResult.worldPos),!i.firstPerson&&n.startPivot()&&n.showPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),!i.firstPerson&&n.startPivot()&&n.showPivot()))));u.length{n.getPivoting()&&n.endPivot()}),d.addEventListener("touchmove",this._canvasTouchMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(t.stopPropagation(),t.preventDefault(),f)return;f=!0;const n=e.canvas.boundary,a=n[2],d=n[3],g=t.touches;if(t.touches.length===p){if(1===p){dc(g[0],l),c.subVec2(l,u[0],h);const t=h[0],o=h[1];if(null!==s.longTouchTimeout&&(Math.abs(t)>i.longTapRadius||Math.abs(o)>i.longTapRadius)&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),i.planView){const s=e.camera;if("perspective"===s.projection){const n=Math.abs(e.camera.eyeLookDist)*Math.tan(s.perspective.fov/2*Math.PI/180);r.panDeltaX+=t*n/d*i.touchPanRate,r.panDeltaY+=o*n/d*i.touchPanRate}else r.panDeltaX+=.5*s.ortho.scale*(t/d)*i.touchPanRate,r.panDeltaY+=.5*s.ortho.scale*(o/d)*i.touchPanRate}else r.rotateDeltaY-=t/a*(1*i.dragRotationRate),r.rotateDeltaX+=o/d*(1.5*i.dragRotationRate)}else if(2===p){const t=g[0],n=g[1];dc(t,l),dc(n,A);const a=c.geometricMeanVec2(u[0],u[1]),h=c.geometricMeanVec2(l,A),p=c.vec2();c.subVec2(a,h,p);const f=p[0],m=p[1],_=e.camera,v=c.distVec2([t.pageX,t.pageY],[n.pageX,n.pageY]),b=(c.distVec2(u[0],u[1])-v)*i.touchDollyRate;if(r.dollyDelta=b,Math.abs(b)<1)if("perspective"===_.projection){const t=o.pickResult?o.pickResult.worldPos:e.center,s=Math.abs(c.lenVec3(c.subVec3(t,e.camera.eye,[])))*Math.tan(_.perspective.fov/2*Math.PI/180);r.panDeltaX-=f*s/d*i.touchPanRate,r.panDeltaY-=m*s/d*i.touchPanRate}else r.panDeltaX-=.5*_.ortho.scale*(f/d)*i.touchPanRate,r.panDeltaY-=.5*_.ortho.scale*(m/d)*i.touchPanRate;s.pointerCanvasPos=h}for(let e=0;e{let s;i&&i.worldPos&&(s=i.worldPos);const r=i?i.entity.aabb:e.aabb;if(s){const i=e.camera;c.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})};d.addEventListener("touchstart",this._canvasTouchStartHandler=e=>{if(!i.active||!i.pointerEnabled)return;null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null);const r=e.touches,o=e.changedTouches;if(a=Date.now(),1===r.length&&1===o.length){h=a,fc(r[0],A);const o=A[0],n=A[1],l=r[0].pageX,c=r[0].pageY;s.longTouchTimeout=setTimeout((()=>{t.cameraControl.fire("rightClick",{pagePos:[Math.round(l),Math.round(c)],canvasPos:[Math.round(o),Math.round(n)],event:e},!0),s.longTouchTimeout=null}),i.longTapTimeout)}else h=-1;for(;l.length{if(!i.active||!i.pointerEnabled)return;const t=Date.now(),r=e.touches,a=e.changedTouches,d=n.hasSubs("pickedSurface");null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),0===r.length&&1===a.length&&h>-1&&t-h<150&&(u>-1&&h-u<325?(fc(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=d,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("doublePicked",o.pickResult),o.pickedSurface&&n.fire("doublePickedSurface",o.pickResult),i.doublePickFlyTo&&p(o.pickResult)):(n.fire("doublePickedNothing"),i.doublePickFlyTo&&p()),u=-1):c.distVec2(l[0],A)<4&&(fc(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=d,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("picked",o.pickResult),o.pickedSurface&&n.fire("pickedSurface",o.pickResult)):n.fire("pickedNothing"),u=t),h=-1),l.length=r.length;for(let e=0,t=r.length;e{e.preventDefault()},this._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:"qwerty",navMode:"orbit",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,doubleClickTimeFrame:250,snapToVertex:true,snapToEdge:true,snapRadius:30,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},this._states={pointerCanvasPos:c.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:c.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},this._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};const i=this.scene;this._controllers={cameraControl:this,pickController:new Zh(this,this._configs),pivotController:new Yh(i,this._configs),panController:new jh(i),cameraFlight:new bh(this,{duration:.5})},this._handlers=[new cc(this.scene,this._controllers,this._configs,this._states,this._updates),new pc(this.scene,this._controllers,this._configs,this._states,this._updates),new $h(this.scene,this._controllers,this._configs,this._states,this._updates),new nc(this.scene,this._controllers,this._configs,this._states,this._updates),new ac(this.scene,this._controllers,this._configs,this._states,this._updates),new gc(this.scene,this._controllers,this._configs,this._states,this._updates),new lc(this.scene,this._controllers,this._configs,this._states,this._updates)],this._cameraUpdater=new hc(this.scene,this._controllers,this._configs,this._states,this._updates),this.navMode=t.navMode,t.planView&&(this.planView=t.planView),this.constrainVertical=t.constrainVertical,t.keyboardLayout?this.keyboardLayout=t.keyboardLayout:this.keyMap=t.keyMap,this.doublePickFlyTo=t.doublePickFlyTo,this.panRightClick=t.panRightClick,this.active=t.active,this.followPointer=t.followPointer,this.rotationInertia=t.rotationInertia,this.keyboardPanRate=t.keyboardPanRate,this.touchPanRate=t.touchPanRate,this.keyboardRotationRate=t.keyboardRotationRate,this.dragRotationRate=t.dragRotationRate,this.touchDollyRate=t.touchDollyRate,this.dollyInertia=t.dollyInertia,this.dollyProximityThreshold=t.dollyProximityThreshold,this.dollyMinSpeed=t.dollyMinSpeed,this.panInertia=t.panInertia,this.pointerEnabled=!0,this.keyboardDollyRate=t.keyboardDollyRate,this.mouseWheelDollyRate=t.mouseWheelDollyRate}set keyMap(e){if(e=e||"qwerty",_.isString(e)){const t=this.scene.input,i={};switch(e){default:this.error("Unsupported value for 'keyMap': "+e+" defaulting to 'qwerty'");case"qwerty":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case"azerty":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{const t=e;this._keyMap=t}}get keyMap(){return this._keyMap}_isKeyDownForAction(e,t){const i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(let e=0,s=i.length;e0?Bc(t):null,n=i&&i.length>0?Bc(i):null,a=e=>{if(!e)return;var t=!0;(n&&n[e.type]||o&&!o[e.type])&&(t=!1),t&&s.push(e.id);const i=e.children;if(i)for(var r=0,l=i.length;r * Copyright (c) 2022 Niklas von Hertzen @@ -34,4 +34,4 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */var wc=function(e,t){return wc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},wc(e,t)};function Pc(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}wc(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var Cc=function(){return Cc=Object.assign||function(e){for(var t,i=1,s=arguments.length;i0&&r[r.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=55296&&r<=56319&&i>10),n%1024+56320)),(r+1===i||s.length>16384)&&(o+=String.fromCharCode.apply(String,s),s.length=0)}return o},Rc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Lc="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Uc=0;Uc=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Hc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",jc="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Gc=0;Gc>4,h[l++]=(15&s)<<4|r>>2,h[l++]=(3&r)<<6|63&o;return A}(e),n=Array.isArray(o)?function(e){for(var t=e.length,i=[],s=0;s0;){var n=s[--o];if(Array.isArray(e)?-1!==e.indexOf(n):e===n)for(var a=i;a<=s.length;){var l;if((l=s[++a])===t)return!0;if(l!==zc)break}if(n!==zc)break}return!1},Pu=function(e,t){for(var i=e;i>=0;){var s=t[i];if(s!==zc)return s;i--}return 0},Cu=function(e,t,i,s,r){if(0===i[s])return"×";var o=s-1;if(Array.isArray(r)&&!0===r[o])return"×";var n=o-1,a=o+1,l=t[o],A=n>=0?t[n]:0,h=t[a];if(2===l&&3===h)return"×";if(-1!==_u.indexOf(l))return"!";if(-1!==_u.indexOf(h))return"×";if(-1!==vu.indexOf(h))return"×";if(8===Pu(o,t))return"÷";if(11===gu.get(e[o]))return"×";if((l===nu||l===au)&&11===gu.get(e[a]))return"×";if(7===l||7===h)return"×";if(9===l)return"×";if(-1===[zc,Wc,Kc].indexOf(l)&&9===h)return"×";if(-1!==[Xc,Jc,Yc,eu,ru].indexOf(h))return"×";if(Pu(o,t)===$c)return"×";if(wu(23,$c,o,t))return"×";if(wu([Xc,Jc],qc,o,t))return"×";if(wu(12,12,o,t))return"×";if(l===zc)return"÷";if(23===l||23===h)return"×";if(16===h||16===l)return"÷";if(-1!==[Wc,Kc,qc].indexOf(h)||14===l)return"×";if(36===A&&-1!==Bu.indexOf(l))return"×";if(l===ru&&36===h)return"×";if(h===Zc)return"×";if(-1!==mu.indexOf(h)&&l===tu||-1!==mu.indexOf(l)&&h===tu)return"×";if(l===su&&-1!==[hu,nu,au].indexOf(h)||-1!==[hu,nu,au].indexOf(l)&&h===iu)return"×";if(-1!==mu.indexOf(l)&&-1!==bu.indexOf(h)||-1!==bu.indexOf(l)&&-1!==mu.indexOf(h))return"×";if(-1!==[su,iu].indexOf(l)&&(h===tu||-1!==[$c,Kc].indexOf(h)&&t[a+1]===tu)||-1!==[$c,Kc].indexOf(l)&&h===tu||l===tu&&-1!==[tu,ru,eu].indexOf(h))return"×";if(-1!==[tu,ru,eu,Xc,Jc].indexOf(h))for(var c=o;c>=0;){if((u=t[c])===tu)return"×";if(-1===[ru,eu].indexOf(u))break;c--}if(-1!==[su,iu].indexOf(h))for(c=-1!==[Xc,Jc].indexOf(l)?n:o;c>=0;){var u;if((u=t[c])===tu)return"×";if(-1===[ru,eu].indexOf(u))break;c--}if(cu===l&&-1!==[cu,uu,lu,Au].indexOf(h)||-1!==[uu,lu].indexOf(l)&&-1!==[uu,du].indexOf(h)||-1!==[du,Au].indexOf(l)&&h===du)return"×";if(-1!==xu.indexOf(l)&&-1!==[Zc,iu].indexOf(h)||-1!==xu.indexOf(h)&&l===su)return"×";if(-1!==mu.indexOf(l)&&-1!==mu.indexOf(h))return"×";if(l===eu&&-1!==mu.indexOf(h))return"×";if(-1!==mu.concat(tu).indexOf(l)&&h===$c&&-1===fu.indexOf(e[a])||-1!==mu.concat(tu).indexOf(h)&&l===Jc)return"×";if(41===l&&41===h){for(var d=i[o],p=1;d>0&&41===t[--d];)p++;if(p%2!=0)return"×"}return l===nu&&h===au?"×":"÷"},Mu=function(e,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var i=function(e,t){void 0===t&&(t="strict");var i=[],s=[],r=[];return e.forEach((function(e,o){var n=gu.get(e);if(n>50?(r.push(!0),n-=50):r.push(!1),-1!==["normal","auto","loose"].indexOf(t)&&-1!==[8208,8211,12316,12448].indexOf(e))return s.push(o),i.push(16);if(4===n||11===n){if(0===o)return s.push(o),i.push(ou);var a=i[o-1];return-1===yu.indexOf(a)?(s.push(s[o-1]),i.push(a)):(s.push(o),i.push(ou))}return s.push(o),31===n?i.push("strict"===t?qc:hu):n===pu||29===n?i.push(ou):43===n?e>=131072&&e<=196605||e>=196608&&e<=262141?i.push(hu):i.push(ou):void i.push(n)})),[s,i,r]}(e,t.lineBreak),s=i[0],r=i[1],o=i[2];"break-all"!==t.wordBreak&&"break-word"!==t.wordBreak||(r=r.map((function(e){return-1!==[tu,ou,pu].indexOf(e)?hu:e})));var n="keep-all"===t.wordBreak?o.map((function(t,i){return t&&e[i]>=19968&&e[i]<=40959})):void 0;return[s,r,n]},Fu=function(){function e(e,t,i,s){this.codePoints=e,this.required="!"===t,this.start=i,this.end=s}return e.prototype.slice=function(){return Tc.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),Eu=function(e){return e>=48&&e<=57},Iu=function(e){return Eu(e)||e>=65&&e<=70||e>=97&&e<=102},Du=function(e){return 10===e||9===e||32===e},Su=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},Tu=function(e){return Su(e)||Eu(e)||45===e},Ru=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},Lu=function(e,t){return 92===e&&10!==t},Uu=function(e,t,i){return 45===e?Su(t)||Lu(t,i):!!Su(e)||!(92!==e||!Lu(e,t))},ku=function(e,t,i){return 43===e||45===e?!!Eu(t)||46===t&&Eu(i):Eu(46===e?t:e)},Ou=function(e){var t=0,i=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(i=-1),t++);for(var s=[];Eu(e[t]);)s.push(e[t++]);var r=s.length?parseInt(Tc.apply(void 0,s),10):0;46===e[t]&&t++;for(var o=[];Eu(e[t]);)o.push(e[t++]);var n=o.length,a=n?parseInt(Tc.apply(void 0,o),10):0;69!==e[t]&&101!==e[t]||t++;var l=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(l=-1),t++);for(var A=[];Eu(e[t]);)A.push(e[t++]);var h=A.length?parseInt(Tc.apply(void 0,A),10):0;return i*(r+a*Math.pow(10,-n))*Math.pow(10,l*h)},Nu={type:2},Qu={type:3},Vu={type:4},Hu={type:13},ju={type:8},Gu={type:21},zu={type:9},Wu={type:10},Ku={type:11},Xu={type:12},Ju={type:14},Yu={type:23},Zu={type:1},qu={type:25},$u={type:24},ed={type:26},td={type:27},id={type:28},sd={type:29},rd={type:31},od={type:32},nd=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(Sc(e))},e.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==od;)e.push(t),t=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var t=this.peekCodePoint(0),i=this.peekCodePoint(1),s=this.peekCodePoint(2);if(Tu(t)||Lu(i,s)){var r=Uu(t,i,s)?2:1;return{type:5,value:this.consumeName(),flags:r}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Hu;break;case 39:return this.consumeStringToken(39);case 40:return Nu;case 41:return Qu;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ju;break;case 43:if(ku(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return Vu;case 45:var o=e,n=this.peekCodePoint(0),a=this.peekCodePoint(1);if(ku(o,n,a))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(Uu(o,n,a))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(45===n&&62===a)return this.consumeCodePoint(),this.consumeCodePoint(),$u;break;case 46:if(ku(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var l=this.consumeCodePoint();if(42===l&&47===(l=this.consumeCodePoint()))return this.consumeToken();if(-1===l)return this.consumeToken()}break;case 58:return ed;case 59:return td;case 60:if(33===this.peekCodePoint(0)&&45===this.peekCodePoint(1)&&45===this.peekCodePoint(2))return this.consumeCodePoint(),this.consumeCodePoint(),qu;break;case 64:var A=this.peekCodePoint(0),h=this.peekCodePoint(1),c=this.peekCodePoint(2);if(Uu(A,h,c))return{type:7,value:this.consumeName()};break;case 91:return id;case 92:if(Lu(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return sd;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),ju;break;case 123:return Ku;case 125:return Xu;case 117:case 85:var u=this.peekCodePoint(0),d=this.peekCodePoint(1);return 43!==u||!Iu(d)&&63!==d||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),zu;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),Gu;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Wu;break;case-1:return od}return Du(e)?(this.consumeWhiteSpace(),rd):Eu(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):Su(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:Tc(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();Iu(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var i=!1;63===t&&e.length<6;)e.push(t),t=this.consumeCodePoint(),i=!0;if(i)return{type:30,start:parseInt(Tc.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(Tc.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var s=parseInt(Tc.apply(void 0,e),16);if(45===this.peekCodePoint(0)&&Iu(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var r=[];Iu(t)&&r.length<6;)r.push(t),t=this.consumeCodePoint();return{type:30,start:s,end:parseInt(Tc.apply(void 0,r),16)}}return{type:30,start:s,end:s}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),-1===this.peekCodePoint(0))return{type:22,value:""};var t=this.peekCodePoint(0);if(39===t||34===t){var i=this.consumeStringToken(this.consumeCodePoint());return 0===i.type&&(this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:i.value}):(this.consumeBadUrlRemnants(),Yu)}for(;;){var s=this.consumeCodePoint();if(-1===s||41===s)return{type:22,value:Tc.apply(void 0,e)};if(Du(s))return this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:Tc.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Yu);if(34===s||39===s||40===s||Ru(s))return this.consumeBadUrlRemnants(),Yu;if(92===s){if(!Lu(s,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Yu;e.push(this.consumeEscapedCodePoint())}else e.push(s)}},e.prototype.consumeWhiteSpace=function(){for(;Du(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||-1===e)return;Lu(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var t="";e>0;){var i=Math.min(5e4,e);t+=Tc.apply(void 0,this._value.splice(0,i)),e-=i}return this._value.shift(),t},e.prototype.consumeStringToken=function(e){for(var t="",i=0;;){var s=this._value[i];if(-1===s||void 0===s||s===e)return{type:0,value:t+=this.consumeStringSlice(i)};if(10===s)return this._value.splice(0,i),Zu;if(92===s){var r=this._value[i+1];-1!==r&&void 0!==r&&(10===r?(t+=this.consumeStringSlice(i),i=-1,this._value.shift()):Lu(s,r)&&(t+=this.consumeStringSlice(i),t+=Tc(this.consumeEscapedCodePoint()),i=-1))}i++}},e.prototype.consumeNumber=function(){var e=[],t=4,i=this.peekCodePoint(0);for(43!==i&&45!==i||e.push(this.consumeCodePoint());Eu(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0);var s=this.peekCodePoint(1);if(46===i&&Eu(s))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;Eu(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0),s=this.peekCodePoint(1);var r=this.peekCodePoint(2);if((69===i||101===i)&&((43===s||45===s)&&Eu(r)||Eu(s)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;Eu(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[Ou(e),t]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],i=e[1],s=this.peekCodePoint(0),r=this.peekCodePoint(1),o=this.peekCodePoint(2);return Uu(s,r,o)?{type:15,number:t,flags:i,unit:this.consumeName()}:37===s?(this.consumeCodePoint(),{type:16,number:t,flags:i}):{type:17,number:t,flags:i}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(Iu(e)){for(var t=Tc(e);Iu(this.peekCodePoint(0))&&t.length<6;)t+=Tc(this.consumeCodePoint());Du(this.peekCodePoint(0))&&this.consumeCodePoint();var i=parseInt(t,16);return 0===i||function(e){return e>=55296&&e<=57343}(i)||i>1114111?65533:i}return-1===e?65533:e},e.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(Tu(t))e+=Tc(t);else{if(!Lu(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),e;e+=Tc(this.consumeEscapedCodePoint())}}},e}(),ad=function(){function e(e){this._tokens=e}return e.create=function(t){var i=new nd;return i.write(t),new e(i.read())},e.parseValue=function(t){return e.create(t).parseComponentValue()},e.parseValues=function(t){return e.create(t).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(32===t.type)return e;e.push(t),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},i=this.consumeToken();;){if(32===i.type||gd(i,e))return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue()),i=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var i=this.consumeToken();if(32===i.type||3===i.type)return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?od:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),ld=function(e){return 15===e.type},Ad=function(e){return 17===e.type},hd=function(e){return 20===e.type},cd=function(e){return 0===e.type},ud=function(e,t){return hd(e)&&e.value===t},dd=function(e){return 31!==e.type},pd=function(e){return 31!==e.type&&4!==e.type},fd=function(e){var t=[],i=[];return e.forEach((function(e){if(4===e.type){if(0===i.length)throw new Error("Error parsing function args, zero tokens for arg");return t.push(i),void(i=[])}31!==e.type&&i.push(e)})),i.length&&t.push(i),t},gd=function(e,t){return 11===t&&12===e.type||(28===t&&29===e.type||2===t&&3===e.type)},md=function(e){return 17===e.type||15===e.type},_d=function(e){return 16===e.type||md(e)},vd=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},bd={type:17,number:0,flags:4},yd={type:16,number:50,flags:4},xd={type:16,number:100,flags:4},Bd=function(e,t,i){var s=e[0],r=e[1];return[wd(s,t),wd(void 0!==r?r:s,i)]},wd=function(e,t){if(16===e.type)return e.number/100*t;if(ld(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},Pd=function(e,t){if(15===t.type)switch(t.unit){case"deg":return Math.PI*t.number/180;case"grad":return Math.PI/200*t.number;case"rad":return t.number;case"turn":return 2*Math.PI*t.number}throw new Error("Unsupported angle type")},Cd=function(e){return 15===e.type&&("deg"===e.unit||"grad"===e.unit||"rad"===e.unit||"turn"===e.unit)},Md=function(e){switch(e.filter(hd).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[bd,bd];case"to top":case"bottom":return Fd(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[bd,xd];case"to right":case"left":return Fd(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[xd,xd];case"to bottom":case"top":return Fd(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[xd,bd];case"to left":case"right":return Fd(270)}return 0},Fd=function(e){return Math.PI*e/180},Ed=function(e,t){if(18===t.type){var i=kd[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return i(e,t.values)}if(5===t.type){if(3===t.value.length){var s=t.value.substring(0,1),r=t.value.substring(1,2),o=t.value.substring(2,3);return Sd(parseInt(s+s,16),parseInt(r+r,16),parseInt(o+o,16),1)}if(4===t.value.length){s=t.value.substring(0,1),r=t.value.substring(1,2),o=t.value.substring(2,3);var n=t.value.substring(3,4);return Sd(parseInt(s+s,16),parseInt(r+r,16),parseInt(o+o,16),parseInt(n+n,16)/255)}if(6===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),o=t.value.substring(4,6);return Sd(parseInt(s,16),parseInt(r,16),parseInt(o,16),1)}if(8===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),o=t.value.substring(4,6),n=t.value.substring(6,8);return Sd(parseInt(s,16),parseInt(r,16),parseInt(o,16),parseInt(n,16)/255)}}if(20===t.type){var a=Nd[t.value.toUpperCase()];if(void 0!==a)return a}return Nd.TRANSPARENT},Id=function(e){return 0==(255&e)},Dd=function(e){var t=255&e,i=255&e>>8,s=255&e>>16,r=255&e>>24;return t<255?"rgba("+r+","+s+","+i+","+t/255+")":"rgb("+r+","+s+","+i+")"},Sd=function(e,t,i,s){return(e<<24|t<<16|i<<8|Math.round(255*s)<<0)>>>0},Td=function(e,t){if(17===e.type)return e.number;if(16===e.type){var i=3===t?1:255;return 3===t?e.number/100*i:Math.round(e.number/100*i)}return 0},Rd=function(e,t){var i=t.filter(pd);if(3===i.length){var s=i.map(Td),r=s[0],o=s[1],n=s[2];return Sd(r,o,n,1)}if(4===i.length){var a=i.map(Td),l=(r=a[0],o=a[1],n=a[2],a[3]);return Sd(r,o,n,l)}return 0};function Ld(e,t,i){return i<0&&(i+=1),i>=1&&(i-=1),i<1/6?(t-e)*i*6+e:i<.5?t:i<2/3?6*(t-e)*(2/3-i)+e:e}var Ud=function(e,t){var i=t.filter(pd),s=i[0],r=i[1],o=i[2],n=i[3],a=(17===s.type?Fd(s.number):Pd(e,s))/(2*Math.PI),l=_d(r)?r.number/100:0,A=_d(o)?o.number/100:0,h=void 0!==n&&_d(n)?wd(n,1):1;if(0===l)return Sd(255*A,255*A,255*A,1);var c=A<=.5?A*(l+1):A+l-A*l,u=2*A-c,d=Ld(u,c,a+1/3),p=Ld(u,c,a),f=Ld(u,c,a-1/3);return Sd(255*d,255*p,255*f,h)},kd={hsl:Ud,hsla:Ud,rgb:Rd,rgba:Rd},Od=function(e,t){return Ed(e,ad.create(t).parseComponentValue())},Nd={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Qd={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(hd(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Vd={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Hd=function(e,t){var i=Ed(e,t[0]),s=t[1];return s&&_d(s)?{color:i,stop:s}:{color:i,stop:null}},jd=function(e,t){var i=e[0],s=e[e.length-1];null===i.stop&&(i.stop=bd),null===s.stop&&(s.stop=xd);for(var r=[],o=0,n=0;no?r.push(l):r.push(o),o=l}else r.push(null)}var A=null;for(n=0;ne.optimumDistance)?{optimumCorner:t,optimumDistance:a}:e}),{optimumDistance:r?1/0:-1/0,optimumCorner:null}).optimumCorner},Kd=function(e,t){var i=Fd(180),s=[];return fd(t).forEach((function(t,r){if(0===r){var o=t[0];if(20===o.type&&-1!==["top","left","right","bottom"].indexOf(o.value))return void(i=Md(t));if(Cd(o))return void(i=(Pd(e,o)+Fd(270))%Fd(360))}var n=Hd(e,t);s.push(n)})),{angle:i,stops:s,type:1}},Xd=function(e,t){var i=0,s=3,r=[],o=[];return fd(t).forEach((function(t,n){var a=!0;if(0===n?a=t.reduce((function(e,t){if(hd(t))switch(t.value){case"center":return o.push(yd),!1;case"top":case"left":return o.push(bd),!1;case"right":case"bottom":return o.push(xd),!1}else if(_d(t)||md(t))return o.push(t),!1;return e}),a):1===n&&(a=t.reduce((function(e,t){if(hd(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"contain":case"closest-side":return s=0,!1;case"farthest-side":return s=1,!1;case"closest-corner":return s=2,!1;case"cover":case"farthest-corner":return s=3,!1}else if(md(t)||_d(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)),a){var l=Hd(e,t);r.push(l)}})),{size:s,shape:i,stops:r,position:o,type:2}},Jd=function(e,t){if(22===t.type){var i={url:t.value,type:0};return e.cache.addImage(t.value),i}if(18===t.type){var s=Zd[t.name];if(void 0===s)throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return s(e,t.values)}throw new Error("Unsupported image type "+t.type)};var Yd,Zd={"linear-gradient":function(e,t){var i=Fd(180),s=[];return fd(t).forEach((function(t,r){if(0===r){var o=t[0];if(20===o.type&&"to"===o.value)return void(i=Md(t));if(Cd(o))return void(i=Pd(e,o))}var n=Hd(e,t);s.push(n)})),{angle:i,stops:s,type:1}},"-moz-linear-gradient":Kd,"-ms-linear-gradient":Kd,"-o-linear-gradient":Kd,"-webkit-linear-gradient":Kd,"radial-gradient":function(e,t){var i=0,s=3,r=[],o=[];return fd(t).forEach((function(t,n){var a=!0;if(0===n){var l=!1;a=t.reduce((function(e,t){if(l)if(hd(t))switch(t.value){case"center":return o.push(yd),e;case"top":case"left":return o.push(bd),e;case"right":case"bottom":return o.push(xd),e}else(_d(t)||md(t))&&o.push(t);else if(hd(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"at":return l=!0,!1;case"closest-side":return s=0,!1;case"cover":case"farthest-side":return s=1,!1;case"contain":case"closest-corner":return s=2,!1;case"farthest-corner":return s=3,!1}else if(md(t)||_d(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)}if(a){var A=Hd(e,t);r.push(A)}})),{size:s,shape:i,stops:r,position:o,type:2}},"-moz-radial-gradient":Xd,"-ms-radial-gradient":Xd,"-o-radial-gradient":Xd,"-webkit-radial-gradient":Xd,"-webkit-gradient":function(e,t){var i=Fd(180),s=[],r=1;return fd(t).forEach((function(t,i){var o=t[0];if(0===i){if(hd(o)&&"linear"===o.value)return void(r=1);if(hd(o)&&"radial"===o.value)return void(r=2)}if(18===o.type)if("from"===o.name){var n=Ed(e,o.values[0]);s.push({stop:bd,color:n})}else if("to"===o.name){n=Ed(e,o.values[0]);s.push({stop:xd,color:n})}else if("color-stop"===o.name){var a=o.values.filter(pd);if(2===a.length){n=Ed(e,a[1]);var l=a[0];Ad(l)&&s.push({stop:{type:16,number:100*l.number,flags:l.flags},color:n})}}})),1===r?{angle:(i+Fd(180))%Fd(360),stops:s,type:r}:{size:3,shape:0,stops:s,position:[],type:r}}},qd={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var i=t[0];return 20===i.type&&"none"===i.value?[]:t.filter((function(e){return pd(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!Zd[e.name])}(e)})).map((function(t){return Jd(e,t)}))}},$d={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(hd(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},ep={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,t){return fd(t).map((function(e){return e.filter(_d)})).map(vd)}},tp={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,t){return fd(t).map((function(e){return e.filter(hd).map((function(e){return e.value})).join(" ")})).map(ip)}},ip=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(Yd||(Yd={}));var sp,rp={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,t){return fd(t).map((function(e){return e.filter(op)}))}},op=function(e){return hd(e)||_d(e)},np=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},ap=np("top"),lp=np("right"),Ap=np("bottom"),hp=np("left"),cp=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return vd(t.filter(_d))}}},up=cp("top-left"),dp=cp("top-right"),pp=cp("bottom-right"),fp=cp("bottom-left"),gp=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},mp=gp("top"),_p=gp("right"),vp=gp("bottom"),bp=gp("left"),yp=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return ld(t)?t.number:0}}},xp=yp("top"),Bp=yp("right"),wp=yp("bottom"),Pp=yp("left"),Cp={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Mp={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,t){return"rtl"===t?1:0}},Fp={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,t){return t.filter(hd).reduce((function(e,t){return e|Ep(t.value)}),0)}},Ep=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},Ip={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},Dp={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,t){return 20===t.type&&"normal"===t.value?0:17===t.type||15===t.type?t.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(sp||(sp={}));var Sp,Tp={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"strict"===t?sp.STRICT:sp.NORMAL}},Rp={name:"line-height",initialValue:"normal",prefix:!1,type:4},Lp=function(e,t){return hd(e)&&"normal"===e.value?1.2*t:17===e.type?t*e.number:_d(e)?wd(e,t):t},Up={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,t){return 20===t.type&&"none"===t.value?null:Jd(e,t)}},kp={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,t){return"inside"===t?0:1}},Op={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},Np=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},Qp=Np("top"),Vp=Np("right"),Hp=Np("bottom"),jp=Np("left"),Gp={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,t){return t.filter(hd).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},zp={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"break-word"===t?"break-word":"normal"}},Wp=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Kp=Wp("top"),Xp=Wp("right"),Jp=Wp("bottom"),Yp=Wp("left"),Zp={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,t){switch(t){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},qp={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},$p={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&ud(t[0],"none")?[]:fd(t).map((function(t){for(var i={color:Nd.TRANSPARENT,offsetX:bd,offsetY:bd,blur:bd},s=0,r=0;r1?1:0],this.overflowWrap=Tf(e,zp,t.overflowWrap),this.paddingTop=Tf(e,Kp,t.paddingTop),this.paddingRight=Tf(e,Xp,t.paddingRight),this.paddingBottom=Tf(e,Jp,t.paddingBottom),this.paddingLeft=Tf(e,Yp,t.paddingLeft),this.paintOrder=Tf(e,Mf,t.paintOrder),this.position=Tf(e,qp,t.position),this.textAlign=Tf(e,Zp,t.textAlign),this.textDecorationColor=Tf(e,uf,null!==(i=t.textDecorationColor)&&void 0!==i?i:t.color),this.textDecorationLine=Tf(e,df,null!==(s=t.textDecorationLine)&&void 0!==s?s:t.textDecoration),this.textShadow=Tf(e,$p,t.textShadow),this.textTransform=Tf(e,ef,t.textTransform),this.transform=Tf(e,tf,t.transform),this.transformOrigin=Tf(e,nf,t.transformOrigin),this.visibility=Tf(e,af,t.visibility),this.webkitTextStrokeColor=Tf(e,Ff,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=Tf(e,Ef,t.webkitTextStrokeWidth),this.wordBreak=Tf(e,lf,t.wordBreak),this.zIndex=Tf(e,Af,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return Id(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return vf(this.display,4)||vf(this.display,33554432)||vf(this.display,268435456)||vf(this.display,536870912)||vf(this.display,67108864)||vf(this.display,134217728)},e}(),Df=function(e,t){this.content=Tf(e,bf,t.content),this.quotes=Tf(e,wf,t.quotes)},Sf=function(e,t){this.counterIncrement=Tf(e,yf,t.counterIncrement),this.counterReset=Tf(e,xf,t.counterReset)},Tf=function(e,t,i){var s=new nd,r=null!=i?i.toString():t.initialValue;s.write(r);var o=new ad(s.read());switch(t.type){case 2:var n=o.parseComponentValue();return t.parse(e,hd(n)?n.value:t.initialValue);case 0:return t.parse(e,o.parseComponentValue());case 1:return t.parse(e,o.parseComponentValues());case 4:return o.parseComponentValue();case 3:switch(t.format){case"angle":return Pd(e,o.parseComponentValue());case"color":return Ed(e,o.parseComponentValue());case"image":return Jd(e,o.parseComponentValue());case"length":var a=o.parseComponentValue();return md(a)?a:bd;case"length-percentage":var l=o.parseComponentValue();return _d(l)?l:bd;case"time":return hf(e,o.parseComponentValue())}}},Rf=function(e,t){var i=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===i||t===i},Lf=function(e,t){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,Rf(t,3),this.styles=new If(e,window.getComputedStyle(t,null)),Lg(t)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(t.style.animationDuration="0s"),null!==this.styles.transform&&(t.style.transform="none")),this.bounds=Dc(this.context,t),Rf(t,4)&&(this.flags|=16)},Uf="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",kf="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Of=0;Of=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Vf="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Hf="undefined"==typeof Uint8Array?[]:new Uint8Array(256),jf=0;jf>10),n%1024+56320)),(r+1===i||s.length>16384)&&(o+=String.fromCharCode.apply(String,s),s.length=0)}return o},Yf=function(e,t){var i,s,r,o=function(e){var t,i,s,r,o,n=.75*e.length,a=e.length,l=0;"="===e[e.length-1]&&(n--,"="===e[e.length-2]&&n--);var A="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(n):new Array(n),h=Array.isArray(A)?A:new Uint8Array(A);for(t=0;t>4,h[l++]=(15&s)<<4|r>>2,h[l++]=(3&r)<<6|63&o;return A}(e),n=Array.isArray(o)?function(e){for(var t=e.length,i=[],s=0;s=55296&&r<=56319&&i=i)return{done:!0,value:null};for(var e="×";sn.x||r.y>n.y;return n=r,0===t||a}));return e.body.removeChild(t),a}(document);return Object.defineProperty(sg,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var t=new Image,i=e.createElement("canvas"),s=i.getContext("2d");if(!s)return!1;t.src="data:image/svg+xml,";try{s.drawImage(t,0,0),i.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(sg,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var t=e.createElement("canvas"),i=100;t.width=i,t.height=i;var s=t.getContext("2d");if(!s)return Promise.reject(!1);s.fillStyle="rgb(0, 255, 0)",s.fillRect(0,0,i,i);var r=new Image,o=t.toDataURL();r.src=o;var n=tg(i,i,0,0,r);return s.fillStyle="red",s.fillRect(0,0,i,i),ig(n).then((function(t){s.drawImage(t,0,0);var r=s.getImageData(0,0,i,i).data;s.fillStyle="red",s.fillRect(0,0,i,i);var n=e.createElement("div");return n.style.backgroundImage="url("+o+")",n.style.height="100px",eg(r)?ig(tg(i,i,0,0,n)):Promise.reject(!1)})).then((function(e){return s.drawImage(e,0,0),eg(s.getImageData(0,0,i,i).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(sg,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(sg,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(sg,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(sg,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(sg,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},rg=function(e,t){this.text=e,this.bounds=t},og=function(e,t){var i=t.ownerDocument;if(i){var s=i.createElement("html2canvaswrapper");s.appendChild(t.cloneNode(!0));var r=t.parentNode;if(r){r.replaceChild(s,t);var o=Dc(e,s);return s.firstChild&&r.replaceChild(s.firstChild,s),o}}return Ic.EMPTY},ng=function(e,t,i){var s=e.ownerDocument;if(!s)throw new Error("Node has no owner document");var r=s.createRange();return r.setStart(e,t),r.setEnd(e,t+i),r},ag=function(e){if(sg.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return function(e){for(var t,i=$f(e),s=[];!(t=i.next()).done;)t.value&&s.push(t.value.slice());return s}(e)},lg=function(e,t){return 0!==t.letterSpacing?ag(e):function(e,t){if(sg.SUPPORT_NATIVE_TEXT_SEGMENTATION){var i=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(i.segment(e)).map((function(e){return e.segment}))}return hg(e,t)}(e,t)},Ag=[32,160,4961,65792,65793,4153,4241],hg=function(e,t){for(var i,s=function(e,t){var i=Sc(e),s=Mu(i,t),r=s[0],o=s[1],n=s[2],a=i.length,l=0,A=0;return{next:function(){if(A>=a)return{done:!0,value:null};for(var e="×";A0)if(sg.SUPPORT_RANGE_BOUNDS){var r=ng(s,n,t.length).getClientRects();if(r.length>1){var a=ag(t),l=0;a.forEach((function(t){o.push(new rg(t,Ic.fromDOMRectList(e,ng(s,l+n,t.length).getClientRects()))),l+=t.length}))}else o.push(new rg(t,Ic.fromDOMRectList(e,r)))}else{var A=s.splitText(t.length);o.push(new rg(t,og(e,s))),s=A}else sg.SUPPORT_RANGE_BOUNDS||(s=s.splitText(t.length));n+=t.length})),o}(e,this.text,i,t)},ug=function(e,t){switch(t){case 1:return e.toLowerCase();case 3:return e.replace(dg,pg);case 2:return e.toUpperCase();default:return e}},dg=/(^|\s|:|-|\(|\))([a-z])/g,pg=function(e,t,i){return e.length>0?t+i.toUpperCase():e},fg=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.src=i.currentSrc||i.src,s.intrinsicWidth=i.naturalWidth,s.intrinsicHeight=i.naturalHeight,s.context.cache.addImage(s.src),s}return Pc(t,e),t}(Lf),gg=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.canvas=i,s.intrinsicWidth=i.width,s.intrinsicHeight=i.height,s}return Pc(t,e),t}(Lf),mg=function(e){function t(t,i){var s=e.call(this,t,i)||this,r=new XMLSerializer,o=Dc(t,i);return i.setAttribute("width",o.width+"px"),i.setAttribute("height",o.height+"px"),s.svg="data:image/svg+xml,"+encodeURIComponent(r.serializeToString(i)),s.intrinsicWidth=i.width.baseVal.value,s.intrinsicHeight=i.height.baseVal.value,s.context.cache.addImage(s.svg),s}return Pc(t,e),t}(Lf),_g=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.value=i.value,s}return Pc(t,e),t}(Lf),vg=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.start=i.start,s.reversed="boolean"==typeof i.reversed&&!0===i.reversed,s}return Pc(t,e),t}(Lf),bg=[{type:15,flags:0,unit:"px",number:3}],yg=[{type:16,flags:0,number:50}],xg="password",Bg=function(e){function t(t,i){var s,r=e.call(this,t,i)||this;switch(r.type=i.type.toLowerCase(),r.checked=i.checked,r.value=function(e){var t=e.type===xg?new Array(e.value.length+1).join("•"):e.value;return 0===t.length?e.placeholder||"":t}(i),"checkbox"!==r.type&&"radio"!==r.type||(r.styles.backgroundColor=3739148031,r.styles.borderTopColor=r.styles.borderRightColor=r.styles.borderBottomColor=r.styles.borderLeftColor=2779096575,r.styles.borderTopWidth=r.styles.borderRightWidth=r.styles.borderBottomWidth=r.styles.borderLeftWidth=1,r.styles.borderTopStyle=r.styles.borderRightStyle=r.styles.borderBottomStyle=r.styles.borderLeftStyle=1,r.styles.backgroundClip=[0],r.styles.backgroundOrigin=[0],r.bounds=(s=r.bounds).width>s.height?new Ic(s.left+(s.width-s.height)/2,s.top,s.height,s.height):s.width0)i.textNodes.push(new cg(e,r,i.styles));else if(Rg(r))if(Jg(r)&&r.assignedNodes)r.assignedNodes().forEach((function(t){return Fg(e,t,i,s)}));else{var n=Eg(e,r);n.styles.isVisible()&&(Dg(r,n,s)?n.flags|=4:Sg(n.styles)&&(n.flags|=2),-1!==Mg.indexOf(r.tagName)&&(n.flags|=8),i.elements.push(n),r.slot,r.shadowRoot?Fg(e,r.shadowRoot,n,s):Kg(r)||Qg(r)||Xg(r)||Fg(e,r,n,s))}},Eg=function(e,t){return Gg(t)?new fg(e,t):Hg(t)?new gg(e,t):Qg(t)?new mg(e,t):kg(t)?new _g(e,t):Og(t)?new vg(e,t):Ng(t)?new Bg(e,t):Xg(t)?new wg(e,t):Kg(t)?new Pg(e,t):zg(t)?new Cg(e,t):new Lf(e,t)},Ig=function(e,t){var i=Eg(e,t);return i.flags|=4,Fg(e,t,i,i),i},Dg=function(e,t,i){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||Vg(e)&&i.styles.isTransparent()},Sg=function(e){return e.isPositioned()||e.isFloating()},Tg=function(e){return e.nodeType===Node.TEXT_NODE},Rg=function(e){return e.nodeType===Node.ELEMENT_NODE},Lg=function(e){return Rg(e)&&void 0!==e.style&&!Ug(e)},Ug=function(e){return"object"==typeof e.className},kg=function(e){return"LI"===e.tagName},Og=function(e){return"OL"===e.tagName},Ng=function(e){return"INPUT"===e.tagName},Qg=function(e){return"svg"===e.tagName},Vg=function(e){return"BODY"===e.tagName},Hg=function(e){return"CANVAS"===e.tagName},jg=function(e){return"VIDEO"===e.tagName},Gg=function(e){return"IMG"===e.tagName},zg=function(e){return"IFRAME"===e.tagName},Wg=function(e){return"STYLE"===e.tagName},Kg=function(e){return"TEXTAREA"===e.tagName},Xg=function(e){return"SELECT"===e.tagName},Jg=function(e){return"SLOT"===e.tagName},Yg=function(e){return e.tagName.indexOf("-")>0},Zg=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(e){var t=this.counters[e];return t||[]},e.prototype.pop=function(e){var t=this;e.forEach((function(e){return t.counters[e].pop()}))},e.prototype.parse=function(e){var t=this,i=e.counterIncrement,s=e.counterReset,r=!0;null!==i&&i.forEach((function(e){var i=t.counters[e.counter];i&&0!==e.increment&&(r=!1,i.length||i.push(1),i[Math.max(0,i.length-1)]+=e.increment)}));var o=[];return r&&s.forEach((function(e){var i=t.counters[e.counter];o.push(e.counter),i||(i=t.counters[e.counter]=[]),i.push(e.reset)})),o},e}(),qg={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},$g={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},em={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},tm={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},im=function(e,t,i,s,r,o){return ei?am(e,r,o.length>0):s.integers.reduce((function(t,i,r){for(;e>=i;)e-=i,t+=s.values[r];return t}),"")+o},sm=function(e,t,i,s){var r="";do{i||e--,r=s(e)+r,e/=t}while(e*t>=t);return r},rm=function(e,t,i,s,r){var o=i-t+1;return(e<0?"-":"")+(sm(Math.abs(e),o,s,(function(e){return Tc(Math.floor(e%o)+t)}))+r)},om=function(e,t,i){void 0===i&&(i=". ");var s=t.length;return sm(Math.abs(e),s,!1,(function(e){return t[Math.floor(e%s)]}))+i},nm=function(e,t,i,s,r,o){if(e<-9999||e>9999)return am(e,4,r.length>0);var n=Math.abs(e),a=r;if(0===n)return t[0]+a;for(var l=0;n>0&&l<=4;l++){var A=n%10;0===A&&vf(o,1)&&""!==a?a=t[A]+a:A>1||1===A&&0===l||1===A&&1===l&&vf(o,2)||1===A&&1===l&&vf(o,4)&&e>100||1===A&&l>1&&vf(o,8)?a=t[A]+(l>0?i[l-1]:"")+a:1===A&&l>0&&(a=i[l-1]+a),n=Math.floor(n/10)}return(e<0?s:"")+a},am=function(e,t,i){var s=i?". ":"",r=i?"、":"",o=i?", ":"",n=i?" ":"";switch(t){case 0:return"•"+n;case 1:return"◦"+n;case 2:return"◾"+n;case 5:var a=rm(e,48,57,!0,s);return a.length<4?"0"+a:a;case 4:return om(e,"〇一二三四五六七八九",r);case 6:return im(e,1,3999,qg,3,s).toLowerCase();case 7:return im(e,1,3999,qg,3,s);case 8:return rm(e,945,969,!1,s);case 9:return rm(e,97,122,!1,s);case 10:return rm(e,65,90,!1,s);case 11:return rm(e,1632,1641,!0,s);case 12:case 49:return im(e,1,9999,$g,3,s);case 35:return im(e,1,9999,$g,3,s).toLowerCase();case 13:return rm(e,2534,2543,!0,s);case 14:case 30:return rm(e,6112,6121,!0,s);case 15:return om(e,"子丑寅卯辰巳午未申酉戌亥",r);case 16:return om(e,"甲乙丙丁戊己庚辛壬癸",r);case 17:case 48:return nm(e,"零一二三四五六七八九","十百千萬","負",r,14);case 47:return nm(e,"零壹貳參肆伍陸柒捌玖","拾佰仟萬","負",r,15);case 42:return nm(e,"零一二三四五六七八九","十百千萬","负",r,14);case 41:return nm(e,"零壹贰叁肆伍陆柒捌玖","拾佰仟萬","负",r,15);case 26:return nm(e,"〇一二三四五六七八九","十百千万","マイナス",r,0);case 25:return nm(e,"零壱弐参四伍六七八九","拾百千万","マイナス",r,7);case 31:return nm(e,"영일이삼사오육칠팔구","십백천만","마이너스",o,7);case 33:return nm(e,"零一二三四五六七八九","十百千萬","마이너스",o,0);case 32:return nm(e,"零壹貳參四五六七八九","拾百千","마이너스",o,7);case 18:return rm(e,2406,2415,!0,s);case 20:return im(e,1,19999,tm,3,s);case 21:return rm(e,2790,2799,!0,s);case 22:return rm(e,2662,2671,!0,s);case 22:return im(e,1,10999,em,3,s);case 23:return om(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return om(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return rm(e,3302,3311,!0,s);case 28:return om(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",r);case 29:return om(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",r);case 34:return rm(e,3792,3801,!0,s);case 37:return rm(e,6160,6169,!0,s);case 38:return rm(e,4160,4169,!0,s);case 39:return rm(e,2918,2927,!0,s);case 40:return rm(e,1776,1785,!0,s);case 43:return rm(e,3046,3055,!0,s);case 44:return rm(e,3174,3183,!0,s);case 45:return rm(e,3664,3673,!0,s);case 46:return rm(e,3872,3881,!0,s);default:return rm(e,48,57,!0,s)}},lm=function(){function e(e,t,i){if(this.context=e,this.options=i,this.scrolledElements=[],this.referenceElement=t,this.counters=new Zg,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,t){var i=this,s=hm(e,t);if(!s.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,o=e.defaultView.pageYOffset,n=s.contentWindow,a=n.document,l=dm(s).then((function(){return Mc(i,void 0,void 0,(function(){var e,i;return Fc(this,(function(r){switch(r.label){case 0:return this.scrolledElements.forEach(_m),n&&(n.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||n.scrollY===t.top&&n.scrollX===t.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(n.scrollX-t.left,n.scrollY-t.top,0,0))),e=this.options.onclone,void 0===(i=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:r.sent(),r.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,um(a)]:[3,4];case 3:r.sent(),r.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(a,i)})).then((function(){return s}))]:[2,s]}}))}))}));return a.open(),a.write(gm(document.doctype)+""),mm(this.referenceElement.ownerDocument,r,o),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},e.prototype.createElementClone=function(e){if(Rf(e,2),Hg(e))return this.createCanvasClone(e);if(jg(e))return this.createVideoClone(e);if(Wg(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return Gg(t)&&(Gg(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),"lazy"===t.loading&&(t.loading="eager")),Yg(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return fm(e.style,t),t},e.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var i=[].slice.call(t.cssRules,0).reduce((function(e,t){return t&&"string"==typeof t.cssText?e+t.cssText:e}),""),s=e.cloneNode(!1);return s.textContent=i,s}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var i=e.ownerDocument.createElement("img");try{return i.src=e.toDataURL(),i}catch(t){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var s=e.cloneNode(!1);try{s.width=e.width,s.height=e.height;var r=e.getContext("2d"),o=s.getContext("2d");if(o)if(!this.options.allowTaint&&r)o.putImageData(r.getImageData(0,0,e.width,e.height),0,0);else{var n=null!==(t=e.getContext("webgl2"))&&void 0!==t?t:e.getContext("webgl");if(n){var a=n.getContextAttributes();!1===(null==a?void 0:a.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}o.drawImage(e,0,0)}return s}catch(t){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return s},e.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var i=t.getContext("2d");try{return i&&(i.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||i.getImageData(0,0,t.width,t.height)),t}catch(t){this.context.logger.info("Unable to clone video as it is tainted",e)}var s=e.ownerDocument.createElement("canvas");return s.width=e.offsetWidth,s.height=e.offsetHeight,s},e.prototype.appendChildNode=function(e,t,i){Rg(t)&&(function(e){return"SCRIPT"===e.tagName}(t)||t.hasAttribute("data-html2canvas-ignore")||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(t))||this.options.copyStyles&&Rg(t)&&Wg(t)||e.appendChild(this.cloneNode(t,i))},e.prototype.cloneChildNodes=function(e,t,i){for(var s=this,r=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;r;r=r.nextSibling)if(Rg(r)&&Jg(r)&&"function"==typeof r.assignedNodes){var o=r.assignedNodes();o.length&&o.forEach((function(e){return s.appendChildNode(t,e,i)}))}else this.appendChildNode(t,r,i)},e.prototype.cloneNode=function(e,t){if(Tg(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var i=e.ownerDocument.defaultView;if(i&&Rg(e)&&(Lg(e)||Ug(e))){var s=this.createElementClone(e);s.style.transitionProperty="none";var r=i.getComputedStyle(e),o=i.getComputedStyle(e,":before"),n=i.getComputedStyle(e,":after");this.referenceElement===e&&Lg(s)&&(this.clonedReferenceElement=s),Vg(s)&&ym(s);var a=this.counters.parse(new Sf(this.context,r)),l=this.resolvePseudoContent(e,s,o,Gf.BEFORE);Yg(e)&&(t=!0),jg(e)||this.cloneChildNodes(e,s,t),l&&s.insertBefore(l,s.firstChild);var A=this.resolvePseudoContent(e,s,n,Gf.AFTER);return A&&s.appendChild(A),this.counters.pop(a),(r&&(this.options.copyStyles||Ug(e))&&!zg(e)||t)&&fm(r,s),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([s,e.scrollLeft,e.scrollTop]),(Kg(e)||Xg(e))&&(Kg(s)||Xg(s))&&(s.value=e.value),s}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,t,i,s){var r=this;if(i){var o=i.content,n=t.ownerDocument;if(n&&o&&"none"!==o&&"-moz-alt-content"!==o&&"none"!==i.display){this.counters.parse(new Sf(this.context,i));var a=new Df(this.context,i),l=n.createElement("html2canvaspseudoelement");fm(i,l),a.content.forEach((function(t){if(0===t.type)l.appendChild(n.createTextNode(t.value));else if(22===t.type){var i=n.createElement("img");i.src=t.value,i.style.opacity="1",l.appendChild(i)}else if(18===t.type){if("attr"===t.name){var s=t.values.filter(hd);s.length&&l.appendChild(n.createTextNode(e.getAttribute(s[0].value)||""))}else if("counter"===t.name){var o=t.values.filter(pd),A=o[0],h=o[1];if(A&&hd(A)){var c=r.counters.getCounterValue(A.value),u=h&&hd(h)?Op.parse(r.context,h.value):3;l.appendChild(n.createTextNode(am(c,u,!1)))}}else if("counters"===t.name){var d=t.values.filter(pd),p=(A=d[0],d[1]);h=d[2];if(A&&hd(A)){var f=r.counters.getCounterValues(A.value),g=h&&hd(h)?Op.parse(r.context,h.value):3,m=p&&0===p.type?p.value:"",_=f.map((function(e){return am(e,g,!1)})).join(m);l.appendChild(n.createTextNode(_))}}}else if(20===t.type)switch(t.value){case"open-quote":l.appendChild(n.createTextNode(Pf(a.quotes,r.quoteDepth++,!0)));break;case"close-quote":l.appendChild(n.createTextNode(Pf(a.quotes,--r.quoteDepth,!1)));break;default:l.appendChild(n.createTextNode(t.value))}})),l.className=vm+" "+bm;var A=s===Gf.BEFORE?" "+vm:" "+bm;return Ug(t)?t.className.baseValue+=A:t.className+=A,l}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Gf||(Gf={}));var Am,hm=function(e,t){var i=e.createElement("iframe");return i.className="html2canvas-container",i.style.visibility="hidden",i.style.position="fixed",i.style.left="-10000px",i.style.top="0px",i.style.border="0",i.width=t.width.toString(),i.height=t.height.toString(),i.scrolling="no",i.setAttribute("data-html2canvas-ignore","true"),e.body.appendChild(i),i},cm=function(e){return new Promise((function(t){e.complete?t():e.src?(e.onload=t,e.onerror=t):t()}))},um=function(e){return Promise.all([].slice.call(e.images,0).map(cm))},dm=function(e){return new Promise((function(t,i){var s=e.contentWindow;if(!s)return i("No window assigned for iframe");var r=s.document;s.onload=e.onload=function(){s.onload=e.onload=null;var i=setInterval((function(){r.body.childNodes.length>0&&"complete"===r.readyState&&(clearInterval(i),t(e))}),50)}}))},pm=["all","d","content"],fm=function(e,t){for(var i=e.length-1;i>=0;i--){var s=e.item(i);-1===pm.indexOf(s)&&t.style.setProperty(s,e.getPropertyValue(s))}return t},gm=function(e){var t="";return e&&(t+=""),t},mm=function(e,t,i){e&&e.defaultView&&(t!==e.defaultView.pageXOffset||i!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(t,i)},_m=function(e){var t=e[0],i=e[1],s=e[2];t.scrollLeft=i,t.scrollTop=s},vm="___html2canvas___pseudoelement_before",bm="___html2canvas___pseudoelement_after",ym=function(e){xm(e,"."+vm+':before{\n content: "" !important;\n display: none !important;\n}\n .'+bm+':after{\n content: "" !important;\n display: none !important;\n}')},xm=function(e,t){var i=e.ownerDocument;if(i){var s=i.createElement("style");s.textContent=t,e.appendChild(s)}},Bm=function(){function e(){}return e.getOrigin=function(t){var i=e._link;return i?(i.href=t,i.href=i.href,i.protocol+i.hostname+i.port):"about:blank"},e.isSameOrigin=function(t){return e.getOrigin(t)===e._origin},e.setContext=function(t){e._link=t.document.createElement("a"),e._origin=e.getOrigin(t.location.href)},e._origin="about:blank",e}(),wm=function(){function e(e,t){this.context=e,this._options=t,this._cache={}}return e.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)?t:Dm(e)||Fm(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),t):t},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return Mc(this,void 0,void 0,(function(){var t,i,s,r,o=this;return Fc(this,(function(n){switch(n.label){case 0:return t=Bm.isSameOrigin(e),i=!Em(e)&&!0===this._options.useCORS&&sg.SUPPORT_CORS_IMAGES&&!t,s=!Em(e)&&!t&&!Dm(e)&&"string"==typeof this._options.proxy&&sg.SUPPORT_CORS_XHR&&!i,t||!1!==this._options.allowTaint||Em(e)||Dm(e)||s||i?(r=e,s?[4,this.proxy(r)]:[3,2]):[2];case 1:r=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,t){var s=new Image;s.onload=function(){return e(s)},s.onerror=t,(Im(r)||i)&&(s.crossOrigin="anonymous"),s.src=r,!0===s.complete&&setTimeout((function(){return e(s)}),500),o._options.imageTimeout>0&&setTimeout((function(){return t("Timed out ("+o._options.imageTimeout+"ms) loading image")}),o._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var t=this,i=this._options.proxy;if(!i)throw new Error("No proxy defined");var s=e.substring(0,256);return new Promise((function(r,o){var n=sg.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(200===a.status)if("text"===n)r(a.response);else{var e=new FileReader;e.addEventListener("load",(function(){return r(e.result)}),!1),e.addEventListener("error",(function(e){return o(e)}),!1),e.readAsDataURL(a.response)}else o("Failed to proxy resource "+s+" with status code "+a.status)},a.onerror=o;var l=i.indexOf("?")>-1?"&":"?";if(a.open("GET",""+i+l+"url="+encodeURIComponent(e)+"&responseType="+n),"text"!==n&&a instanceof XMLHttpRequest&&(a.responseType=n),t._options.imageTimeout){var A=t._options.imageTimeout;a.timeout=A,a.ontimeout=function(){return o("Timed out ("+A+"ms) proxying "+s)}}a.send()}))},e}(),Pm=/^data:image\/svg\+xml/i,Cm=/^data:image\/.*;base64,/i,Mm=/^data:image\/.*/i,Fm=function(e){return sg.SUPPORT_SVG_DRAWING||!Sm(e)},Em=function(e){return Mm.test(e)},Im=function(e){return Cm.test(e)},Dm=function(e){return"blob"===e.substr(0,4)},Sm=function(e){return"svg"===e.substr(-3).toLowerCase()||Pm.test(e)},Tm=function(){function e(e,t){this.type=0,this.x=e,this.y=t}return e.prototype.add=function(t,i){return new e(this.x+t,this.y+i)},e}(),Rm=function(e,t,i){return new Tm(e.x+(t.x-e.x)*i,e.y+(t.y-e.y)*i)},Lm=function(){function e(e,t,i,s){this.type=1,this.start=e,this.startControl=t,this.endControl=i,this.end=s}return e.prototype.subdivide=function(t,i){var s=Rm(this.start,this.startControl,t),r=Rm(this.startControl,this.endControl,t),o=Rm(this.endControl,this.end,t),n=Rm(s,r,t),a=Rm(r,o,t),l=Rm(n,a,t);return i?new e(this.start,s,n,l):new e(l,a,o,this.end)},e.prototype.add=function(t,i){return new e(this.start.add(t,i),this.startControl.add(t,i),this.endControl.add(t,i),this.end.add(t,i))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),Um=function(e){return 1===e.type},km=function(e){var t=e.styles,i=e.bounds,s=Bd(t.borderTopLeftRadius,i.width,i.height),r=s[0],o=s[1],n=Bd(t.borderTopRightRadius,i.width,i.height),a=n[0],l=n[1],A=Bd(t.borderBottomRightRadius,i.width,i.height),h=A[0],c=A[1],u=Bd(t.borderBottomLeftRadius,i.width,i.height),d=u[0],p=u[1],f=[];f.push((r+a)/i.width),f.push((d+h)/i.width),f.push((o+p)/i.height),f.push((l+c)/i.height);var g=Math.max.apply(Math,f);g>1&&(r/=g,o/=g,a/=g,l/=g,h/=g,c/=g,d/=g,p/=g);var m=i.width-a,_=i.height-c,v=i.width-h,b=i.height-p,y=t.borderTopWidth,x=t.borderRightWidth,B=t.borderBottomWidth,w=t.borderLeftWidth,P=wd(t.paddingTop,e.bounds.width),C=wd(t.paddingRight,e.bounds.width),M=wd(t.paddingBottom,e.bounds.width),F=wd(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=r>0||o>0?Om(i.left+w/3,i.top+y/3,r-w/3,o-y/3,Am.TOP_LEFT):new Tm(i.left+w/3,i.top+y/3),this.topRightBorderDoubleOuterBox=r>0||o>0?Om(i.left+m,i.top+y/3,a-x/3,l-y/3,Am.TOP_RIGHT):new Tm(i.left+i.width-x/3,i.top+y/3),this.bottomRightBorderDoubleOuterBox=h>0||c>0?Om(i.left+v,i.top+_,h-x/3,c-B/3,Am.BOTTOM_RIGHT):new Tm(i.left+i.width-x/3,i.top+i.height-B/3),this.bottomLeftBorderDoubleOuterBox=d>0||p>0?Om(i.left+w/3,i.top+b,d-w/3,p-B/3,Am.BOTTOM_LEFT):new Tm(i.left+w/3,i.top+i.height-B/3),this.topLeftBorderDoubleInnerBox=r>0||o>0?Om(i.left+2*w/3,i.top+2*y/3,r-2*w/3,o-2*y/3,Am.TOP_LEFT):new Tm(i.left+2*w/3,i.top+2*y/3),this.topRightBorderDoubleInnerBox=r>0||o>0?Om(i.left+m,i.top+2*y/3,a-2*x/3,l-2*y/3,Am.TOP_RIGHT):new Tm(i.left+i.width-2*x/3,i.top+2*y/3),this.bottomRightBorderDoubleInnerBox=h>0||c>0?Om(i.left+v,i.top+_,h-2*x/3,c-2*B/3,Am.BOTTOM_RIGHT):new Tm(i.left+i.width-2*x/3,i.top+i.height-2*B/3),this.bottomLeftBorderDoubleInnerBox=d>0||p>0?Om(i.left+2*w/3,i.top+b,d-2*w/3,p-2*B/3,Am.BOTTOM_LEFT):new Tm(i.left+2*w/3,i.top+i.height-2*B/3),this.topLeftBorderStroke=r>0||o>0?Om(i.left+w/2,i.top+y/2,r-w/2,o-y/2,Am.TOP_LEFT):new Tm(i.left+w/2,i.top+y/2),this.topRightBorderStroke=r>0||o>0?Om(i.left+m,i.top+y/2,a-x/2,l-y/2,Am.TOP_RIGHT):new Tm(i.left+i.width-x/2,i.top+y/2),this.bottomRightBorderStroke=h>0||c>0?Om(i.left+v,i.top+_,h-x/2,c-B/2,Am.BOTTOM_RIGHT):new Tm(i.left+i.width-x/2,i.top+i.height-B/2),this.bottomLeftBorderStroke=d>0||p>0?Om(i.left+w/2,i.top+b,d-w/2,p-B/2,Am.BOTTOM_LEFT):new Tm(i.left+w/2,i.top+i.height-B/2),this.topLeftBorderBox=r>0||o>0?Om(i.left,i.top,r,o,Am.TOP_LEFT):new Tm(i.left,i.top),this.topRightBorderBox=a>0||l>0?Om(i.left+m,i.top,a,l,Am.TOP_RIGHT):new Tm(i.left+i.width,i.top),this.bottomRightBorderBox=h>0||c>0?Om(i.left+v,i.top+_,h,c,Am.BOTTOM_RIGHT):new Tm(i.left+i.width,i.top+i.height),this.bottomLeftBorderBox=d>0||p>0?Om(i.left,i.top+b,d,p,Am.BOTTOM_LEFT):new Tm(i.left,i.top+i.height),this.topLeftPaddingBox=r>0||o>0?Om(i.left+w,i.top+y,Math.max(0,r-w),Math.max(0,o-y),Am.TOP_LEFT):new Tm(i.left+w,i.top+y),this.topRightPaddingBox=a>0||l>0?Om(i.left+Math.min(m,i.width-x),i.top+y,m>i.width+x?0:Math.max(0,a-x),Math.max(0,l-y),Am.TOP_RIGHT):new Tm(i.left+i.width-x,i.top+y),this.bottomRightPaddingBox=h>0||c>0?Om(i.left+Math.min(v,i.width-w),i.top+Math.min(_,i.height-B),Math.max(0,h-x),Math.max(0,c-B),Am.BOTTOM_RIGHT):new Tm(i.left+i.width-x,i.top+i.height-B),this.bottomLeftPaddingBox=d>0||p>0?Om(i.left+w,i.top+Math.min(b,i.height-B),Math.max(0,d-w),Math.max(0,p-B),Am.BOTTOM_LEFT):new Tm(i.left+w,i.top+i.height-B),this.topLeftContentBox=r>0||o>0?Om(i.left+w+F,i.top+y+P,Math.max(0,r-(w+F)),Math.max(0,o-(y+P)),Am.TOP_LEFT):new Tm(i.left+w+F,i.top+y+P),this.topRightContentBox=a>0||l>0?Om(i.left+Math.min(m,i.width+w+F),i.top+y+P,m>i.width+w+F?0:a-w+F,l-(y+P),Am.TOP_RIGHT):new Tm(i.left+i.width-(x+C),i.top+y+P),this.bottomRightContentBox=h>0||c>0?Om(i.left+Math.min(v,i.width-(w+F)),i.top+Math.min(_,i.height+y+P),Math.max(0,h-(x+C)),c-(B+M),Am.BOTTOM_RIGHT):new Tm(i.left+i.width-(x+C),i.top+i.height-(B+M)),this.bottomLeftContentBox=d>0||p>0?Om(i.left+w+F,i.top+b,Math.max(0,d-(w+F)),p-(B+M),Am.BOTTOM_LEFT):new Tm(i.left+w+F,i.top+i.height-(B+M))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(Am||(Am={}));var Om=function(e,t,i,s,r){var o=(Math.sqrt(2)-1)/3*4,n=i*o,a=s*o,l=e+i,A=t+s;switch(r){case Am.TOP_LEFT:return new Lm(new Tm(e,A),new Tm(e,A-a),new Tm(l-n,t),new Tm(l,t));case Am.TOP_RIGHT:return new Lm(new Tm(e,t),new Tm(e+n,t),new Tm(l,A-a),new Tm(l,A));case Am.BOTTOM_RIGHT:return new Lm(new Tm(l,t),new Tm(l,t+a),new Tm(e+n,A),new Tm(e,A));case Am.BOTTOM_LEFT:default:return new Lm(new Tm(l,A),new Tm(l-n,A),new Tm(e,t+a),new Tm(e,t))}},Nm=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},Qm=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},Vm=function(e,t,i){this.offsetX=e,this.offsetY=t,this.matrix=i,this.type=0,this.target=6},Hm=function(e,t){this.path=e,this.target=t,this.type=1},jm=function(e){this.opacity=e,this.type=2,this.target=6},Gm=function(e){return 1===e.type},zm=function(e,t){return e.length===t.length&&e.some((function(e,i){return e===t[i]}))},Wm=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Km=function(){function e(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new km(this.container),this.container.styles.opacity<1&&this.effects.push(new jm(this.container.styles.opacity)),null!==this.container.styles.transform){var i=this.container.bounds.left+this.container.styles.transformOrigin[0].number,s=this.container.bounds.top+this.container.styles.transformOrigin[1].number,r=this.container.styles.transform;this.effects.push(new Vm(i,s,r))}if(0!==this.container.styles.overflowX){var o=Nm(this.curves),n=Qm(this.curves);zm(o,n)?this.effects.push(new Hm(o,6)):(this.effects.push(new Hm(o,2)),this.effects.push(new Hm(n,4)))}}return e.prototype.getEffects=function(e){for(var t=-1===[2,3].indexOf(this.container.styles.position),i=this.parent,s=this.effects.slice(0);i;){var r=i.effects.filter((function(e){return!Gm(e)}));if(t||0!==i.container.styles.position||!i.parent){if(s.unshift.apply(s,r),t=-1===[2,3].indexOf(i.container.styles.position),0!==i.container.styles.overflowX){var o=Nm(i.curves),n=Qm(i.curves);zm(o,n)||s.unshift(new Hm(n,6))}}else s.unshift.apply(s,r);i=i.parent}return s.filter((function(t){return vf(t.target,e)}))},e}(),Xm=function(e,t,i,s){e.container.elements.forEach((function(r){var o=vf(r.flags,4),n=vf(r.flags,2),a=new Km(r,e);vf(r.styles.display,2048)&&s.push(a);var l=vf(r.flags,8)?[]:s;if(o||n){var A=o||r.styles.isPositioned()?i:t,h=new Wm(a);if(r.styles.isPositioned()||r.styles.opacity<1||r.styles.isTransformed()){var c=r.styles.zIndex.order;if(c<0){var u=0;A.negativeZIndex.some((function(e,t){return c>e.element.container.styles.zIndex.order?(u=t,!1):u>0})),A.negativeZIndex.splice(u,0,h)}else if(c>0){var d=0;A.positiveZIndex.some((function(e,t){return c>=e.element.container.styles.zIndex.order?(d=t+1,!1):d>0})),A.positiveZIndex.splice(d,0,h)}else A.zeroOrAutoZIndexOrTransformedOrOpacity.push(h)}else r.styles.isFloating()?A.nonPositionedFloats.push(h):A.nonPositionedInlineLevel.push(h);Xm(a,h,o?h:i,l)}else r.styles.isInlineLevel()?t.inlineLevel.push(a):t.nonInlineLevel.push(a),Xm(a,t,i,l);vf(r.flags,8)&&Jm(r,l)}))},Jm=function(e,t){for(var i=e instanceof vg?e.start:1,s=e instanceof vg&&e.reversed,r=0;r0&&e.intrinsicHeight>0){var s=e_(e),r=Qm(t);this.path(r),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(i,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(e){return Mc(this,void 0,void 0,(function(){var i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v;return Fc(this,(function(b){switch(b.label){case 0:this.applyEffects(e.getEffects(4)),i=e.container,s=e.curves,r=i.styles,o=0,n=i.textNodes,b.label=1;case 1:return o0&&B>0&&(m=s.ctx.createPattern(p,"repeat"),s.renderRepeat(v,m,P,C))):function(e){return 2===e.type}(i)&&(_=t_(e,t,[null,null,null]),v=_[0],b=_[1],y=_[2],x=_[3],B=_[4],w=0===i.position.length?[yd]:i.position,P=wd(w[0],x),C=wd(w[w.length-1],B),M=function(e,t,i,s,r){var o=0,n=0;switch(e.size){case 0:0===e.shape?o=n=Math.min(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(o=Math.min(Math.abs(t),Math.abs(t-s)),n=Math.min(Math.abs(i),Math.abs(i-r)));break;case 2:if(0===e.shape)o=n=Math.min(zd(t,i),zd(t,i-r),zd(t-s,i),zd(t-s,i-r));else if(1===e.shape){var a=Math.min(Math.abs(i),Math.abs(i-r))/Math.min(Math.abs(t),Math.abs(t-s)),l=Wd(s,r,t,i,!0),A=l[0],h=l[1];n=a*(o=zd(A-t,(h-i)/a))}break;case 1:0===e.shape?o=n=Math.max(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(o=Math.max(Math.abs(t),Math.abs(t-s)),n=Math.max(Math.abs(i),Math.abs(i-r)));break;case 3:if(0===e.shape)o=n=Math.max(zd(t,i),zd(t,i-r),zd(t-s,i),zd(t-s,i-r));else if(1===e.shape){a=Math.max(Math.abs(i),Math.abs(i-r))/Math.max(Math.abs(t),Math.abs(t-s));var c=Wd(s,r,t,i,!1);A=c[0],h=c[1],n=a*(o=zd(A-t,(h-i)/a))}}return Array.isArray(e.size)&&(o=wd(e.size[0],s),n=2===e.size.length?wd(e.size[1],r):o),[o,n]}(i,P,C,x,B),F=M[0],E=M[1],F>0&&E>0&&(I=s.ctx.createRadialGradient(b+P,y+C,0,b+P,y+C,F),jd(i.stops,2*F).forEach((function(e){return I.addColorStop(e.stop,Dd(e.color))})),s.path(v),s.ctx.fillStyle=I,F!==E?(D=e.bounds.left+.5*e.bounds.width,S=e.bounds.top+.5*e.bounds.height,R=1/(T=E/F),s.ctx.save(),s.ctx.translate(D,S),s.ctx.transform(1,0,0,T,0,0),s.ctx.translate(-D,-S),s.ctx.fillRect(b,R*(y-S)+S,x,B*R),s.ctx.restore()):s.ctx.fill())),L.label=6;case 6:return t--,[2]}}))},s=this,r=0,o=e.styles.backgroundImage.slice(0).reverse(),a.label=1;case 1:return r0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,o,e.curves,2)]:[3,11]:[3,13];case 4:return h.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,o,e.curves,3)];case 6:return h.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,o,e.curves)];case 8:return h.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,o,e.curves)];case 10:h.sent(),h.label=11;case 11:o++,h.label=12;case 12:return n++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(e,t,i,s,r){return Mc(this,void 0,void 0,(function(){var o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b;return Fc(this,(function(y){return this.ctx.save(),o=function(e,t){switch(t){case 0:return Zm(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return Zm(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return Zm(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return Zm(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(s,i),n=Ym(s,i),2===r&&(this.path(n),this.ctx.clip()),Um(n[0])?(a=n[0].start.x,l=n[0].start.y):(a=n[0].x,l=n[0].y),Um(n[1])?(A=n[1].end.x,h=n[1].end.y):(A=n[1].x,h=n[1].y),c=0===i||2===i?Math.abs(a-A):Math.abs(l-h),this.ctx.beginPath(),3===r?this.formatPath(o):this.formatPath(n.slice(0,2)),u=t<3?3*t:2*t,d=t<3?2*t:t,3===r&&(u=t,d=t),p=!0,c<=2*u?p=!1:c<=2*u+d?(u*=f=c/(2*u+d),d*=f):(g=Math.floor((c+d)/(u+d)),m=(c-g*u)/(g-1),d=(_=(c-(g+1)*u)/g)<=0||Math.abs(d-m){})),S_(this,"_reject",(()=>{})),this.name=e,this.workerThread=t,this.result=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}postMessage(e,t){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:t})}done(e){P_(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){P_(this.isRunning),this.isRunning=!1,this._reject(e)}}class R_{}const L_=new Map;function U_(e){P_(e.source&&!e.url||!e.source&&e.url);let t=L_.get(e.source||e.url);return t||(e.url&&(t=function(e){if(!e.startsWith("http"))return e;return k_((t=e,"try {\n importScripts('".concat(t,"');\n} catch (error) {\n console.error(error);\n throw error;\n}")));var t}(e.url),L_.set(e.url,t)),e.source&&(t=k_(e.source),L_.set(e.source,t))),P_(t),t}function k_(e){const t=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(t)}function O_(e,t=!0,i){const s=i||new Set;if(e){if(N_(e))s.add(e);else if(N_(e.buffer))s.add(e.buffer);else if(ArrayBuffer.isView(e));else if(t&&"object"==typeof e)for(const i in e)O_(e[i],t,s)}else;return void 0===i?Array.from(s):[]}function N_(e){return!!e&&(e instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&e instanceof MessagePort||("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)))}const Q_=()=>{};class V_{static isSupported(){return"undefined"!=typeof Worker&&F_||void 0!==typeof R_}constructor(e){S_(this,"name",void 0),S_(this,"source",void 0),S_(this,"url",void 0),S_(this,"terminated",!1),S_(this,"worker",void 0),S_(this,"onMessage",void 0),S_(this,"onError",void 0),S_(this,"_loadableURL","");const{name:t,source:i,url:s}=e;P_(i||s),this.name=t,this.source=i,this.url=s,this.onMessage=Q_,this.onError=e=>console.log(e),this.worker=F_?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Q_,this.onError=Q_,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,t){t=t||O_(e),this.worker.postMessage(e,t)}_getErrorFromErrorEvent(e){let t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),e.message&&(t+="".concat(e.message," in ")),e.lineno&&(t+=":".concat(e.lineno,":").concat(e.colno)),new Error(t)}_createBrowserWorker(){this._loadableURL=U_({source:this.source,url:this.url});const e=new Worker(this._loadableURL,{name:this.name});return e.onmessage=e=>{e.data?this.onMessage(e.data):this.onError(new Error("No data received"))},e.onerror=e=>{this.onError(this._getErrorFromErrorEvent(e)),this.terminated=!0},e.onmessageerror=e=>console.error(e),e}_createNodeWorker(){let e;if(this.url){const t=this.url.includes(":/")||this.url.startsWith("/")?this.url:"./".concat(this.url);e=new R_(t,{eval:!1})}else{if(!this.source)throw new Error("no worker");e=new R_(this.source,{eval:!0})}return e.on("message",(e=>{this.onMessage(e)})),e.on("error",(e=>{this.onError(e)})),e.on("exit",(e=>{})),e}}class H_{static isSupported(){return V_.isSupported()}constructor(e){S_(this,"name","unnamed"),S_(this,"source",void 0),S_(this,"url",void 0),S_(this,"maxConcurrency",1),S_(this,"maxMobileConcurrency",1),S_(this,"onDebug",(()=>{})),S_(this,"reuseWorkers",!0),S_(this,"props",{}),S_(this,"jobQueue",[]),S_(this,"idleQueue",[]),S_(this,"count",0),S_(this,"isDestroyed",!1),this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach((e=>e.destroy())),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}async startJob(e,t=((e,t,i)=>e.done(i)),i=((e,t)=>e.error(t))){const s=new Promise((s=>(this.jobQueue.push({name:e,onMessage:t,onError:i,onStart:s}),this)));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;const e=this._getAvailableWorker();if(!e)return;const t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:e,backlog:this.jobQueue.length});const i=new T_(t.name,e);e.onMessage=e=>t.onMessage(i,e.type,e.payload),e.onError=e=>t.onError(i,e),t.onStart(i);try{await i.result}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}};class G_{static isSupported(){return V_.isSupported()}static getWorkerFarm(e={}){return G_._workerFarm=G_._workerFarm||new G_({}),G_._workerFarm.setProps(e),G_._workerFarm}constructor(e){S_(this,"props",void 0),S_(this,"workerPools",new Map),this.props={...j_},this.setProps(e),this.workerPools=new Map}destroy(){for(const e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props={...this.props,...e};for(const e of this.workerPools.values())e.setProps(this._getWorkerPoolProps())}getWorkerPool(e){const{name:t,source:i,url:s}=e;let r=this.workerPools.get(t);return r||(r=new H_({name:t,source:i,url:s}),r.setProps(this._getWorkerPoolProps()),this.workerPools.set(t,r)),r}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}S_(G_,"_workerFarm",void 0);var z_=Object.freeze({__proto__:null,default:{}});const W_={};async function K_(e,t=null,i={}){return t&&(e=function(e,t,i){if(e.startsWith("http"))return e;const s=i.modules||{};if(s[e])return s[e];if(!F_)return"modules/".concat(t,"/dist/libs/").concat(e);if(i.CDN)return P_(i.CDN.startsWith("http")),"".concat(i.CDN,"/").concat(t,"@").concat("3.2.6","/dist/libs/").concat(e);if(E_)return"../src/libs/".concat(e);return"modules/".concat(t,"/src/libs/").concat(e)}(e,t,i)),W_[e]=W_[e]||async function(e){if(e.endsWith("wasm")){const t=await fetch(e);return await t.arrayBuffer()}if(!F_)try{return z_&&void 0}catch{return null}if(E_)return importScripts(e);const t=await fetch(e);return function(e,t){if(!F_)return;if(E_)return eval.call(M_,e),null;const i=document.createElement("script");i.id=t;try{i.appendChild(document.createTextNode(e))}catch(t){i.text=e}return document.body.appendChild(i),null}(await t.text(),e)}(e),await W_[e]}async function X_(e,t,i,s,r){const o=e.id,n=function(e,t={}){const i=t[e.id]||{},s="".concat(e.id,"-worker.js");let r=i.workerUrl;if(r||"compression"!==e.id||(r=t.workerUrl),"test"===t._workerType&&(r="modules/".concat(e.module,"/dist/").concat(s)),!r){let t=e.version;"latest"===t&&(t="latest");const i=t?"@".concat(t):"";r="https://unpkg.com/@loaders.gl/".concat(e.module).concat(i,"/dist/").concat(s)}return P_(r),r}(e,i),a=G_.getWorkerFarm(i).getWorkerPool({name:o,url:n});i=JSON.parse(JSON.stringify(i)),s=JSON.parse(JSON.stringify(s||{}));const l=await a.startJob("process-on-worker",J_.bind(null,r));l.postMessage("process",{input:t,options:i,context:s});const A=await l.result;return await A.result}async function J_(e,t,i,s){switch(i){case"done":t.done(s);break;case"error":t.error(new Error(s.error));break;case"process":const{id:r,input:o,options:n}=s;try{const i=await e(o,n);t.postMessage("done",{id:r,result:i})}catch(e){const i=e instanceof Error?e.message:"unknown error";t.postMessage("error",{id:r,error:i})}break;default:console.warn("parse-with-worker unknown message ".concat(i))}}function Y_(e,t,i){if(e.byteLength<=t+i)return"";const s=new DataView(e);let r="";for(let e=0;e=0),x_(t>0),e+(t-1)&~(t-1)}function iv(e,t,i){let s;if(e instanceof ArrayBuffer)s=new Uint8Array(e);else{const t=e.byteOffset,i=e.byteLength;s=new Uint8Array(e.buffer||e.arrayBuffer,t,i)}return t.set(s,i),i+tv(s.byteLength,4)}async function sv(e){const t=[];for await(const i of e)t.push(i);return function(...e){const t=e.map((e=>e instanceof ArrayBuffer?new Uint8Array(e):e)),i=t.reduce(((e,t)=>e+t.byteLength),0),s=new Uint8Array(i);let r=0;for(const e of t)s.set(e,r),r+=e.byteLength;return s.buffer}(...t)}const rv={};const ov=e=>"function"==typeof e,nv=e=>null!==e&&"object"==typeof e,av=e=>nv(e)&&e.constructor==={}.constructor,lv=e=>"undefined"!=typeof Response&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json,Av=e=>"undefined"!=typeof Blob&&e instanceof Blob,hv=e=>(e=>"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||nv(e)&&ov(e.tee)&&ov(e.cancel)&&ov(e.getReader))(e)||(e=>nv(e)&&ov(e.read)&&ov(e.pipe)&&(e=>"boolean"==typeof e)(e.readable))(e),cv=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,uv=/^([-\w.]+\/[-\w.+]+)/;function dv(e){const t=uv.exec(e);return t?t[1]:e}function pv(e){const t=cv.exec(e);return t?t[1]:""}const fv=/\?.*/;function gv(e){if(lv(e)){const t=mv(e.url||"");return{url:t,type:dv(e.headers.get("content-type")||"")||pv(t)}}return Av(e)?{url:mv(e.name||""),type:e.type||""}:"string"==typeof e?{url:mv(e),type:pv(e)}:{url:"",type:""}}function mv(e){return e.replace(fv,"")}async function _v(e){if(lv(e))return e;const t={},i=function(e){return lv(e)?e.headers["content-length"]||-1:Av(e)?e.size:"string"==typeof e?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}(e);i>=0&&(t["content-length"]=String(i));const{url:s,type:r}=gv(e);r&&(t["content-type"]=r);const o=await async function(e){const t=5;if("string"==typeof e)return"data:,".concat(e.slice(0,t));if(e instanceof Blob){const t=e.slice(0,5);return await new Promise((e=>{const i=new FileReader;i.onload=t=>{var i;return e(null==t||null===(i=t.target)||void 0===i?void 0:i.result)},i.readAsDataURL(t)}))}if(e instanceof ArrayBuffer){const i=function(e){let t="";const i=new Uint8Array(e);for(let e=0;e=0)}();class Pv{constructor(e,t,i="sessionStorage"){this.storage=function(e){try{const t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}(i),this.id=e,this.config={},Object.assign(this.config,t),this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){return this.config={},this.updateConfiguration(e)}updateConfiguration(e){if(Object.assign(this.config,e),this.storage){const e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}return this}_loadConfiguration(){let e={};if(this.storage){const t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}function Cv(e,t,i,s=600){const r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));const o=e.width*i,n=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(n/2),"px ").concat(Math.floor(o/2),"px;"),"line-height:".concat(n,"px;"),"background:url(".concat(r,");"),"background-size:".concat(o,"px ").concat(n,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}const Mv={BLACK:30,RED:31,GREEN:32,YELLOW:33,BLUE:34,MAGENTA:35,CYAN:36,WHITE:37,BRIGHT_BLACK:90,BRIGHT_RED:91,BRIGHT_GREEN:92,BRIGHT_YELLOW:93,BRIGHT_BLUE:94,BRIGHT_MAGENTA:95,BRIGHT_CYAN:96,BRIGHT_WHITE:97};function Fv(e){return"string"==typeof e?Mv[e.toUpperCase()]||Mv.WHITE:e}function Ev(e,t){if(!e)throw new Error(t||"Assertion failed")}function Iv(){let e;if(wv&&yv.performance)e=yv.performance.now();else if(xv.hrtime){const t=xv.hrtime();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}const Dv={debug:wv&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},Sv={enabled:!0,level:0};function Tv(){}const Rv={},Lv={once:!0};function Uv(e){for(const t in e)for(const i in e[t])return i||"untitled";return"empty"}class kv{constructor({id:e}={id:""}){this.id=e,this.VERSION=Bv,this._startTs=Iv(),this._deltaTs=Iv(),this.LOG_THROTTLE_TIMEOUT=0,this._storage=new Pv("__probe-".concat(this.id,"__"),Sv),this.userData={},this.timeStamp("".concat(this.id," started")),function(e,t=["constructor"]){const i=Object.getPrototypeOf(e),s=Object.getOwnPropertyNames(i);for(const i of s)"function"==typeof e[i]&&(t.find((e=>i===e))||(e[i]=e[i].bind(e)))}(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((Iv()-this._startTs).toPrecision(10))}getDelta(){return Number((Iv()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(e=!0){return this._storage.updateConfiguration({enabled:e}),this}setLevel(e){return this._storage.updateConfiguration({level:e}),this}assert(e,t){Ev(e,t)}warn(e){return this._getLogFunction(0,e,Dv.warn,arguments,Lv)}error(e){return this._getLogFunction(0,e,Dv.error,arguments)}deprecated(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}removed(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}probe(e,t){return this._getLogFunction(e,t,Dv.log,arguments,{time:!0,once:!0})}log(e,t){return this._getLogFunction(e,t,Dv.debug,arguments)}info(e,t){return this._getLogFunction(e,t,console.info,arguments)}once(e,t){return this._getLogFunction(e,t,Dv.debug||Dv.info,arguments,Lv)}table(e,t,i){return t?this._getLogFunction(e,t,console.table||Tv,i&&[i],{tag:Uv(t)}):Tv}image({logLevel:e,priority:t,image:i,message:s="",scale:r=1}){return this._shouldLog(e||t)?wv?function({image:e,message:t="",scale:i=1}){if("string"==typeof e){const s=new Image;return s.onload=()=>{const e=Cv(s,t,i);console.log(...e)},s.src=e,Tv}const s=e.nodeName||"";if("img"===s.toLowerCase())return console.log(...Cv(e,t,i)),Tv;if("canvas"===s.toLowerCase()){const s=new Image;return s.onload=()=>console.log(...Cv(s,t,i)),s.src=e.toDataURL(),Tv}return Tv}({image:i,message:s,scale:r}):function({image:e,message:t="",scale:i=1}){let s=null;try{s=module.require("asciify-image")}catch(e){}if(s)return()=>s(e,{fit:"box",width:"".concat(Math.round(80*i),"%")}).then((e=>console.log(e)));return Tv}({image:i,message:s,scale:r}):Tv}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}get(e){return this._storage.config[e]}set(e,t){this._storage.updateConfiguration({[e]:t})}time(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}timeEnd(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(e,t){return this._getLogFunction(e,t,console.timeStamp||Tv)}group(e,t,i={collapsed:!1}){i=Nv({logLevel:e,message:t,opts:i});const{collapsed:s}=i;return i.method=(s?console.groupCollapsed:console.group)||console.info,this._getLogFunction(i)}groupCollapsed(e,t,i={}){return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||Tv)}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=Ov(e)}_getLogFunction(e,t,i,s=[],r){if(this._shouldLog(e)){r=Nv({logLevel:e,message:t,args:s,opts:r}),Ev(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=Iv();const o=r.tag||r.message;if(r.once){if(Rv[o])return Tv;Rv[o]=Iv()}return t=function(e,t,i){if("string"==typeof t){const s=i.time?function(e,t=8){const i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}(function(e){let t;return t=e<10?"".concat(e.toFixed(2),"ms"):e<100?"".concat(e.toFixed(1),"ms"):e<1e3?"".concat(e.toFixed(0),"ms"):"".concat((e/1e3).toFixed(2),"s"),t}(i.total)):"";t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),t=function(e,t,i){return wv||"string"!=typeof e||(t&&(t=Fv(t),e="[".concat(t,"m").concat(e,"")),i&&(t=Fv(i),e="[".concat(i+10,"m").concat(e,""))),e}(t,i.color,i.background)}return t}(this.id,r.message,r),i.bind(console,t,...r.args)}return Tv}}function Ov(e){if(!e)return 0;let t;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return Ev(Number.isFinite(t)&&t>=0),t}function Nv(e){const{logLevel:t,message:i}=e;e.logLevel=Ov(t);const s=e.args?Array.from(e.args):[];for(;s.length&&s.shift()!==i;);switch(e.args=s,typeof t){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());const r=typeof e.message;return Ev("string"===r||"object"===r),Object.assign(e,e.opts)}kv.VERSION=Bv;const Qv=new kv({id:"loaders.gl"});class Vv{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}const Hv={fetch:null,mimeType:void 0,nothrow:!1,log:new class{constructor(){S_(this,"console",void 0),this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}},CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:B_,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},jv={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function Gv(){globalThis.loaders=globalThis.loaders||{};const{loaders:e}=globalThis;return e._state=e._state||{},e._state}const zv=()=>{const e=Gv();return e.globalOptions=e.globalOptions||{...Hv},e.globalOptions};function Wv(e,t,i,s){return i=i||[],function(e,t){Xv(e,null,Hv,jv,t);for(const i of t){const s=e&&e[i.id]||{},r=i.options&&i.options[i.id]||{},o=i.deprecatedOptions&&i.deprecatedOptions[i.id]||{};Xv(s,i.id,r,o,t)}}(e,i=Array.isArray(i)?i:[i]),function(e,t,i){const s={...e.options||{}};(function(e,t){t&&!("baseUri"in e)&&(e.baseUri=t)})(s,i),null===s.log&&(s.log=new Vv);return Yv(s,zv()),Yv(s,t),s}(t,e,s)}function Kv(e,t){const i=zv(),s=e||i;return"function"==typeof s.fetch?s.fetch:nv(s.fetch)?e=>vv(e,s):null!=t&&t.fetch?null==t?void 0:t.fetch:vv}function Xv(e,t,i,s,r){const o=t||"Top level",n=t?"".concat(t,"."):"";for(const a in e){const l=!t&&nv(e[a]),A="baseUri"===a&&!t,h="workerUrl"===a&&t;if(!(a in i)&&!A&&!h)if(a in s)Qv.warn("".concat(o," loader option '").concat(n).concat(a,"' no longer supported, use '").concat(s[a],"'"))();else if(!l){const e=Jv(a,r);Qv.warn("".concat(o," loader option '").concat(n).concat(a,"' not recognized. ").concat(e))()}}}function Jv(e,t){const i=e.toLowerCase();let s="";for(const r of t)for(const t in r.options){if(e===t)return"Did you mean '".concat(r.id,".").concat(t,"'?");const o=t.toLowerCase();(i.startsWith(o)||o.startsWith(i))&&(s=s||"Did you mean '".concat(r.id,".").concat(t,"'?"))}return s}function Yv(e,t){for(const i in t)if(i in t){const s=t[i];av(s)&&av(e[i])?e[i]={...e[i],...t[i]}:e[i]=t[i]}}function Zv(e){var t;if(!e)return!1;Array.isArray(e)&&(e=e[0]);return Array.isArray(null===(t=e)||void 0===t?void 0:t.extensions)}function qv(e){var t,i;let s;return x_(e,"null loader"),x_(Zv(e),"invalid loader"),Array.isArray(e)&&(s=e[1],e=e[0],e={...e,options:{...e.options,...s}}),(null!==(t=e)&&void 0!==t&&t.parseTextSync||null!==(i=e)&&void 0!==i&&i.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}function $v(){return(()=>{const e=Gv();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry})()}function eb(){return!("object"==typeof process&&"[object process]"===String(process)&&!process.browser)||function(e){if("undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof process&&"object"==typeof process.versions&&Boolean(process.versions.electron))return!0;const t="object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent,i=e||t;return!!(i&&i.indexOf("Electron")>=0)}()}const tb={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document,process:"object"==typeof process&&process},ib=tb.window||tb.self||tb.global,sb=tb.process||{},rb="undefined"!=typeof __VERSION__?__VERSION__:"untranspiled source";eb();class ob{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sessionStorage";S_(this,"storage",void 0),S_(this,"id",void 0),S_(this,"config",{}),this.storage=function(e){try{const t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}(i),this.id=e,this.config={},Object.assign(this.config,t),this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){return this.config={},this.updateConfiguration(e)}updateConfiguration(e){if(Object.assign(this.config,e),this.storage){const e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}return this}_loadConfiguration(){let e={};if(this.storage){const t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}function nb(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:600;const r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));const o=e.width*i,n=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(n/2),"px ").concat(Math.floor(o/2),"px;"),"line-height:".concat(n,"px;"),"background:url(".concat(r,");"),"background-size:".concat(o,"px ").concat(n,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}let ab;function lb(e){return"string"==typeof e?ab[e.toUpperCase()]||ab.WHITE:e}function Ab(e,t){if(!e)throw new Error(t||"Assertion failed")}function hb(){let e;var t,i;if(eb&&"performance"in ib)e=null==ib||null===(t=ib.performance)||void 0===t||null===(i=t.now)||void 0===i?void 0:i.call(t);else if("hrtime"in sb){var s;const t=null==sb||null===(s=sb.hrtime)||void 0===s?void 0:s.call(sb);e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}!function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"}(ab||(ab={}));const cb={debug:eb&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},ub={enabled:!0,level:0};function db(){}const pb={},fb={once:!0};class gb{constructor(){let{id:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:""};S_(this,"id",void 0),S_(this,"VERSION",rb),S_(this,"_startTs",hb()),S_(this,"_deltaTs",hb()),S_(this,"_storage",void 0),S_(this,"userData",{}),S_(this,"LOG_THROTTLE_TIMEOUT",0),this.id=e,this._storage=new ob("__probe-".concat(this.id,"__"),ub),this.userData={},this.timeStamp("".concat(this.id," started")),function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["constructor"];const i=Object.getPrototypeOf(e),s=Object.getOwnPropertyNames(i);for(const i of s)"function"==typeof e[i]&&(t.find((e=>i===e))||(e[i]=e[i].bind(e)))}(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((hb()-this._startTs).toPrecision(10))}getDelta(){return Number((hb()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._storage.updateConfiguration({enabled:e}),this}setLevel(e){return this._storage.updateConfiguration({level:e}),this}get(e){return this._storage.config[e]}set(e,t){this._storage.updateConfiguration({[e]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(e,t){Ab(e,t)}warn(e){return this._getLogFunction(0,e,cb.warn,arguments,fb)}error(e){return this._getLogFunction(0,e,cb.error,arguments)}deprecated(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}removed(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}probe(e,t){return this._getLogFunction(e,t,cb.log,arguments,{time:!0,once:!0})}log(e,t){return this._getLogFunction(e,t,cb.debug,arguments)}info(e,t){return this._getLogFunction(e,t,console.info,arguments)}once(e,t){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r{const t=nb(e,i,s);console.log(...t)},e.src=t,db}const r=t.nodeName||"";if("img"===r.toLowerCase())return console.log(...nb(t,i,s)),db;if("canvas"===r.toLowerCase()){const e=new Image;return e.onload=()=>console.log(...nb(e,i,s)),e.src=t.toDataURL(),db}return db}({image:s,message:r,scale:o}):function(e){let{image:t,message:i="",scale:s=1}=e,r=null;try{r=module.require("asciify-image")}catch(e){}if(r)return()=>r(t,{fit:"box",width:"".concat(Math.round(80*s),"%")}).then((e=>console.log(e)));return db}({image:s,message:r,scale:o}):db}time(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}timeEnd(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(e,t){return this._getLogFunction(e,t,console.timeStamp||db)}group(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{collapsed:!1};const s=_b({logLevel:e,message:t,opts:i}),{collapsed:r}=i;return s.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||db)}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=mb(e)}_getLogFunction(e,t,i,s,r){if(this._shouldLog(e)){r=_b({logLevel:e,message:t,args:s,opts:r}),Ab(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=hb();const o=r.tag||r.message;if(r.once){if(pb[o])return db;pb[o]=hb()}return t=function(e,t,i){if("string"==typeof t){const s=i.time?function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;const i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}(function(e){let t;return t=e<10?"".concat(e.toFixed(2),"ms"):e<100?"".concat(e.toFixed(1),"ms"):e<1e3?"".concat(e.toFixed(0),"ms"):"".concat((e/1e3).toFixed(2),"s"),t}(i.total)):"";t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),t=function(e,t,i){return eb||"string"!=typeof e||(t&&(t=lb(t),e="[".concat(t,"m").concat(e,"")),i&&(t=lb(i),e="[".concat(i+10,"m").concat(e,""))),e}(t,i.color,i.background)}return t}(this.id,r.message,r),i.bind(console,t,...r.args)}return db}}function mb(e){if(!e)return 0;let t;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return Ab(Number.isFinite(t)&&t>=0),t}function _b(e){const{logLevel:t,message:i}=e;e.logLevel=mb(t);const s=e.args?Array.from(e.args):[];for(;s.length&&s.shift()!==i;);switch(typeof t){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());const r=typeof e.message;return Ab("string"===r||"object"===r),Object.assign(e,{args:s},e.opts)}function vb(e){for(const t in e)for(const i in e[t])return i||"untitled";return"empty"}S_(gb,"VERSION",rb);const bb=new gb({id:"loaders.gl"}),yb=/\.([^.]+)$/;function xb(e,t=[],i,s){if(!Bb(e))return null;if(t&&!Array.isArray(t))return qv(t);let r=[];t&&(r=r.concat(t)),null!=i&&i.ignoreRegisteredLoaders||r.push(...$v()),function(e){for(const t of e)qv(t)}(r);const o=function(e,t,i,s){const{url:r,type:o}=gv(e),n=r||(null==s?void 0:s.url);let a=null,l="";null!=i&&i.mimeType&&(a=Pb(t,null==i?void 0:i.mimeType),l="match forced by supplied MIME type ".concat(null==i?void 0:i.mimeType));var A;a=a||function(e,t){const i=t&&yb.exec(t),s=i&&i[1];return s?function(e,t){t=t.toLowerCase();for(const i of e)for(const e of i.extensions)if(e.toLowerCase()===t)return i;return null}(e,s):null}(t,n),l=l||(a?"matched url ".concat(n):""),a=a||Pb(t,o),l=l||(a?"matched MIME type ".concat(o):""),a=a||function(e,t){if(!t)return null;for(const i of e)if("string"==typeof t){if(Cb(t,i))return i}else if(ArrayBuffer.isView(t)){if(Mb(t.buffer,t.byteOffset,i))return i}else if(t instanceof ArrayBuffer){if(Mb(t,0,i))return i}return null}(t,e),l=l||(a?"matched initial data ".concat(Fb(e)):""),a=a||Pb(t,null==i?void 0:i.fallbackMimeType),l=l||(a?"matched fallback MIME type ".concat(o):""),l&&bb.log(1,"selectLoader selected ".concat(null===(A=a)||void 0===A?void 0:A.name,": ").concat(l,"."));return a}(e,r,i,s);if(!(o||null!=i&&i.nothrow))throw new Error(wb(e));return o}function Bb(e){return!(e instanceof Response&&204===e.status)}function wb(e){const{url:t,type:i}=gv(e);let s="No valid loader found (";s+=t?"".concat(function(e){const t=e&&e.lastIndexOf("/");return t>=0?e.substr(t+1):""}(t),", "):"no url provided, ",s+="MIME type: ".concat(i?'"'.concat(i,'"'):"not provided",", ");const r=e?Fb(e):"";return s+=r?' first bytes: "'.concat(r,'"'):"first bytes: not available",s+=")",s}function Pb(e,t){for(const i of e){if(i.mimeTypes&&i.mimeTypes.includes(t))return i;if(t==="application/x.".concat(i.id))return i}return null}function Cb(e,t){if(t.testText)return t.testText(e);return(Array.isArray(t.tests)?t.tests:[t.tests]).some((t=>e.startsWith(t)))}function Mb(e,t,i){return(Array.isArray(i.tests)?i.tests:[i.tests]).some((s=>function(e,t,i,s){if(s instanceof ArrayBuffer)return function(e,t,i){if(i=i||e.byteLength,e.byteLength60?"".concat(t.slice(0,60),"..."):t}catch(e){}return t}(e);throw new Error(t)}}(i),t.binary?await i.arrayBuffer():await i.text()}if(hv(e)&&(e=Sb(e,i)),(r=e)&&"function"==typeof r[Symbol.iterator]||(e=>e&&"function"==typeof e[Symbol.asyncIterator])(e))return sv(e);var r;throw new Error(Tb)}async function Lb(e,t,i,s){P_(!s||"object"==typeof s),!t||Array.isArray(t)||Zv(t)||(s=void 0,i=t,t=void 0),e=await e,i=i||{};const{url:r}=gv(e),o=function(e,t){if(!t&&e&&!Array.isArray(e))return e;let i;if(e&&(i=Array.isArray(e)?e:[e]),t&&t.loaders){const e=Array.isArray(t.loaders)?t.loaders:[t.loaders];i=i?[...i,...e]:e}return i&&i.length?i:null}(t,s),n=await async function(e,t=[],i,s){if(!Bb(e))return null;let r=xb(e,t,{...i,nothrow:!0},s);if(r)return r;if(Av(e)&&(r=xb(e=await e.slice(0,10).arrayBuffer(),t,i,s)),!(r||null!=i&&i.nothrow))throw new Error(wb(e));return r}(e,o,i);return n?(s=function(e,t,i=null){if(i)return i;const s={fetch:Kv(t,e),...e};return Array.isArray(s.loaders)||(s.loaders=null),s}({url:r,parse:Lb,loaders:o},i=Wv(i,n,o,r),s),await async function(e,t,i,s){if(function(e,t="3.2.6"){P_(e,"no worker provided");const i=e.version}(e),lv(t)){const e=t,{ok:i,redirected:r,status:o,statusText:n,type:a,url:l}=e,A=Object.fromEntries(e.headers.entries());s.response={headers:A,ok:i,redirected:r,status:o,statusText:n,type:a,url:l}}if(t=await Rb(t,e,i),e.parseTextSync&&"string"==typeof t)return i.dataType="text",e.parseTextSync(t,i,s,e);if(function(e,t){return!!G_.isSupported()&&!!(F_||null!=t&&t._nodeWorkers)&&e.worker&&(null==t?void 0:t.worker)}(e,i))return await X_(e,t,i,s,Lb);if(e.parseText&&"string"==typeof t)return await e.parseText(t,i,s,e);if(e.parse)return await e.parse(t,i,s,e);throw P_(!e.parseSync),new Error("".concat(e.id," loader - no parser found and worker is disabled"))}(n,e,i,s)):null}const Ub="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.wasm"),kb="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.js");let Ob,Nb;async function Qb(e){const t=e.modules||{};return t.basis?t.basis:(Ob=Ob||async function(e){let t=null,i=null;return[t,i]=await Promise.all([await K_("basis_transcoder.js","textures",e),await K_("basis_transcoder.wasm","textures",e)]),t=t||globalThis.BASIS,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e(i).then((e=>{const{BasisFile:i,initializeBasis:s}=e;s(),t({BasisFile:i})}))}))}(t,i)}(e),await Ob)}async function Vb(e){const t=e.modules||{};return t.basisEncoder?t.basisEncoder:(Nb=Nb||async function(e){let t=null,i=null;return[t,i]=await Promise.all([await K_(kb,"textures",e),await K_(Ub,"textures",e)]),t=t||globalThis.BASIS,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e(i).then((e=>{const{BasisFile:i,KTX2File:s,initializeBasis:r,BasisEncoder:o}=e;r(),t({BasisFile:i,KTX2File:s,BasisEncoder:o})}))}))}(t,i)}(e),await Nb)}const Hb=33776,jb=33779,Gb=35840,zb=35842,Wb=36196,Kb=37808,Xb=["","WEBKIT_","MOZ_"],Jb={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"};let Yb=null;function Zb(e){if(!Yb){e=e||function(){try{return document.createElement("canvas").getContext("webgl")}catch(e){return null}}()||void 0,Yb=new Set;for(const t of Xb)for(const i in Jb)if(e&&e.getExtension("".concat(t).concat(i))){const e=Jb[i];Yb.add(e)}}return Yb}var qb,$b,ey,ty,iy,sy,ry,oy,ny;(ny=qb||(qb={}))[ny.NONE=0]="NONE",ny[ny.BASISLZ=1]="BASISLZ",ny[ny.ZSTD=2]="ZSTD",ny[ny.ZLIB=3]="ZLIB",function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}($b||($b={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(ey||(ey={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(ty||(ty={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(iy||(iy={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(sy||(sy={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(ry||(ry={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(oy||(oy={}));const ay=[171,75,84,88,32,50,48,187,13,10,26,10];const ly={etc1:{basisFormat:0,compressed:!0,format:Wb},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:Hb},bc3:{basisFormat:3,compressed:!0,format:jb},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:Gb},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:zb},"astc-4x4":{basisFormat:10,compressed:!0,format:Kb},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};function Ay(e,t,i){const s=new e(new Uint8Array(t));try{if(!s.startTranscoding())throw new Error("Failed to start basis transcoding");const e=s.getNumImages(),t=[];for(let r=0;r{try{i.onload=()=>t(i),i.onerror=t=>s(new Error("Could not load image ".concat(e,": ").concat(t)))}catch(e){s(e)}}))}(o||s,t)}finally{o&&r.revokeObjectURL(o)}}const My={};let Fy=!0;async function Ey(e,t,i){let s;if(wy(i)){s=await Cy(e,t,i)}else s=Py(e,i);const r=t&&t.imagebitmap;return await async function(e,t=null){!function(e){for(const t in e||My)return!1;return!0}(t)&&Fy||(t=null);if(t)try{return await createImageBitmap(e,t)}catch(e){console.warn(e),Fy=!1}return await createImageBitmap(e)}(s,r)}function Iy(e){const t=Dy(e);return function(e){const t=Dy(e);if(!(t.byteLength>=24&&2303741511===t.getUint32(0,false)))return null;return{mimeType:"image/png",width:t.getUint32(16,false),height:t.getUint32(20,false)}}(t)||function(e){const t=Dy(e);if(!(t.byteLength>=3&&65496===t.getUint16(0,false)&&255===t.getUint8(2)))return null;const{tableMarkers:i,sofMarkers:s}=function(){const e=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)e.add(t);const t=new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502]);return{tableMarkers:e,sofMarkers:t}}();let r=2;for(;r+9=10&&1195984440===t.getUint32(0,false)))return null;return{mimeType:"image/gif",width:t.getUint16(6,true),height:t.getUint16(8,true)}}(t)||function(e){const t=Dy(e);if(!(t.byteLength>=14&&16973===t.getUint16(0,false)&&t.getUint32(2,true)===t.byteLength))return null;return{mimeType:"image/bmp",width:t.getUint32(18,true),height:t.getUint32(22,true)}}(t)}function Dy(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}const Sy={id:"image",module:"images",name:"Images",version:"3.2.6",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg"],parse:async function(e,t,i){const s=((t=t||{}).image||{}).type||"auto",{url:r}=i||{};let o;switch(function(e){switch(e){case"auto":case"data":return function(){if(_y)return"imagebitmap";if(my)return"image";if(by)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(e){switch(e){case"auto":return _y||my||by;case"imagebitmap":return _y;case"image":return my;case"data":return by;default:throw new Error("@loaders.gl/images: image ".concat(e," not supported in this environment"))}}(e),e}}(s)){case"imagebitmap":o=await Ey(e,t,r);break;case"image":o=await Cy(e,t,r);break;case"data":o=await async function(e,t){const{mimeType:i}=Iy(e)||{},s=globalThis._parseImageNode;return x_(s),await s(e,i)}(e);break;default:x_(!1)}return"data"===s&&(o=function(e){switch(yy(e)){case"data":return e;case"image":case"imagebitmap":const t=document.createElement("canvas"),i=t.getContext("2d");if(!i)throw new Error("getImageData");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0),i.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}(o)),o},tests:[e=>Boolean(Iy(new DataView(e)))],options:{image:{type:"auto",decode:!0}}},Ty=["image/png","image/jpeg","image/gif"],Ry={};function Ly(e){return void 0===Ry[e]&&(Ry[e]=function(e){switch(e){case"image/webp":return function(){if(!B_)return!1;try{return 0===document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp")}catch{return!1}}();case"image/svg":return B_;default:if(!B_){const{_parseImageNode:t}=globalThis;return Boolean(t)&&Ty.includes(e)}return!0}}(e)),Ry[e]}function Uy(e,t){if(!e)throw new Error(t||"assert failed: gltf")}function ky(e,t){if(e.startsWith("data:")||e.startsWith("http:")||e.startsWith("https:"))return e;const i=t.baseUri||t.uri;if(!i)throw new Error("'baseUri' must be provided to resolve relative url ".concat(e));return i.substr(0,i.lastIndexOf("/")+1)+e}const Oy=["SCALAR","VEC2","VEC3","VEC4"],Ny=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Qy=new Map(Ny),Vy={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Hy={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},jy={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Gy(e){return Oy[e-1]||Oy[0]}function zy(e){const t=Qy.get(e.constructor);if(!t)throw new Error("Illegal typed array");return t}function Wy(e,t){const i=jy[e.componentType],s=Vy[e.type],r=Hy[e.componentType],o=e.count*s,n=e.count*s*r;return Uy(n>=0&&n<=t.byteLength),{ArrayType:i,length:o,byteLength:n}}const Ky={asset:{version:"2.0",generator:"loaders.gl"},buffers:[]};class Xy{constructor(e){S_(this,"gltf",void 0),S_(this,"sourceBuffers",void 0),S_(this,"byteLength",void 0),this.gltf=e||{json:{...Ky},buffers:[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}getExtension(e){const t=this.getUsedExtensions().find((t=>t===e)),i=this.json.extensions||{};return t?i[e]||!0:null}getRequiredExtension(e){const t=this.getRequiredExtensions().find((t=>t===e));return t?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if("object"==typeof t)return t;const i=this.json[e]&&this.json[e][t];if(!i)throw new Error("glTF file error: Could not find ".concat(e,"[").concat(t,"]"));return i}getTypedArrayForBufferView(e){const t=(e=this.getBufferView(e)).buffer,i=this.gltf.buffers[t];Uy(i);const s=(e.byteOffset||0)+i.byteOffset;return new Uint8Array(i.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){e=this.getAccessor(e);const t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,{ArrayType:s,length:r}=Wy(e,t);return new s(i,t.byteOffset+e.byteOffset,r)}getTypedArrayForImageData(e){e=this.getAccessor(e);const t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(i,s,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,i){return e.extensions=e.extensions||{},e.extensions[t]=i,this.registerUsedExtension(t),this}setObjectExtension(e,t,i){(e.extensions||{})[t]=i}removeObjectExtension(e,t){const i=e.extensions||{},s=i[t];return delete i[t],s}addExtension(e,t={}){return Uy(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return Uy(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find((t=>t===e))||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find((t=>t===e))||this.json.extensionsRequired.push(e)}removeExtension(e){this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e),this.json.extensions&&delete this.json.extensions[e]}setDefaultScene(e){this.json.scene=e}addScene(e){const{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){const{meshIndex:t,matrix:i}=e;this.json.nodes=this.json.nodes||[];const s={mesh:t};return i&&(s.matrix=i),this.json.nodes.push(s),this.json.nodes.length-1}addMesh(e){const{attributes:t,indices:i,material:s,mode:r=4}=e,o={primitives:[{attributes:this._addAttributes(t),mode:r}]};if(i){const e=this._addIndices(i);o.primitives[0].indices=e}return Number.isFinite(s)&&(o.primitives[0].material=s),this.json.meshes=this.json.meshes||[],this.json.meshes.push(o),this.json.meshes.length-1}addPointCloud(e){const t={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(t),this.json.meshes.length-1}addImage(e,t){const i=Iy(e),s=t||(null==i?void 0:i.mimeType),r={bufferView:this.addBufferView(e),mimeType:s};return this.json.images=this.json.images||[],this.json.images.push(r),this.json.images.length-1}addBufferView(e){const t=e.byteLength;Uy(Number.isFinite(t)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);const i={buffer:0,byteOffset:this.byteLength,byteLength:t};return this.byteLength+=tv(t,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(i),this.json.bufferViews.length-1}addAccessor(e,t){const i={bufferView:e,type:Gy(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(i),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){const i=this.addBufferView(e);let s={min:t.min,max:t.max};s.min&&s.max||(s=this._getAccessorMinMax(e,t.size));const r={size:t.size,componentType:zy(e),count:Math.round(e.length/t.size),min:s.min,max:s.max};return this.addAccessor(i,Object.assign(r,t))}addTexture(e){const{imageIndex:t}=e,i={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(i),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){var e,t;this.gltf.buffers=[];const i=this.byteLength,s=new ArrayBuffer(i),r=new Uint8Array(s);let o=0;for(const e of this.sourceBuffers||[])o=iv(e,r,o);null!==(e=this.json)&&void 0!==e&&null!==(t=e.buffers)&&void 0!==t&&t[0]?this.json.buffers[0].byteLength=i:this.json.buffers=[{byteLength:i}],this.gltf.binary=s,this.sourceBuffers=[s]}_removeStringFromArray(e,t){let i=!0;for(;i;){const s=e.indexOf(t);s>-1?e.splice(s,1):i=!1}}_addAttributes(e={}){const t={};for(const i in e){const s=e[i],r=this._getGltfAttributeName(i),o=this.addBinaryBuffer(s.value,s);t[r]=o}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){const i={min:null,max:null};if(e.length96?s-71:s>64?s-65:s>47?s+4:s>46?63:62}let i=0;for(let s=0;st[e.name]));return new lx(i,this.metadata)}selectAt(...e){const t=e.map((e=>this.fields[e])).filter(Boolean);return new lx(t,this.metadata)}assign(e){let t,i=this.metadata;if(e instanceof lx){const s=e;t=s.fields,i=Ax(Ax(new Map,this.metadata),s.metadata)}else t=e;const s=Object.create(null);for(const e of this.fields)s[e.name]=e;for(const e of t)s[e.name]=e;const r=Object.values(s);return new lx(r,i)}}function Ax(e,t){return new Map([...e||new Map,...t||new Map])}class hx{constructor(e,t,i=!1,s=new Map){S_(this,"name",void 0),S_(this,"type",void 0),S_(this,"nullable",void 0),S_(this,"metadata",void 0),this.name=e,this.type=t,this.nullable=i,this.metadata=s}get typeId(){return this.type&&this.type.typeId}clone(){return new hx(this.name,this.type,this.nullable,this.metadata)}compareTo(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}toString(){return"".concat(this.type).concat(this.nullable?", nullable":"").concat(this.metadata?", metadata: ".concat(this.metadata):"")}}let cx,ux,dx,px;!function(e){e[e.NONE=0]="NONE",e[e.Null=1]="Null",e[e.Int=2]="Int",e[e.Float=3]="Float",e[e.Binary=4]="Binary",e[e.Utf8=5]="Utf8",e[e.Bool=6]="Bool",e[e.Decimal=7]="Decimal",e[e.Date=8]="Date",e[e.Time=9]="Time",e[e.Timestamp=10]="Timestamp",e[e.Interval=11]="Interval",e[e.List=12]="List",e[e.Struct=13]="Struct",e[e.Union=14]="Union",e[e.FixedSizeBinary=15]="FixedSizeBinary",e[e.FixedSizeList=16]="FixedSizeList",e[e.Map=17]="Map",e[e.Dictionary=-1]="Dictionary",e[e.Int8=-2]="Int8",e[e.Int16=-3]="Int16",e[e.Int32=-4]="Int32",e[e.Int64=-5]="Int64",e[e.Uint8=-6]="Uint8",e[e.Uint16=-7]="Uint16",e[e.Uint32=-8]="Uint32",e[e.Uint64=-9]="Uint64",e[e.Float16=-10]="Float16",e[e.Float32=-11]="Float32",e[e.Float64=-12]="Float64",e[e.DateDay=-13]="DateDay",e[e.DateMillisecond=-14]="DateMillisecond",e[e.TimestampSecond=-15]="TimestampSecond",e[e.TimestampMillisecond=-16]="TimestampMillisecond",e[e.TimestampMicrosecond=-17]="TimestampMicrosecond",e[e.TimestampNanosecond=-18]="TimestampNanosecond",e[e.TimeSecond=-19]="TimeSecond",e[e.TimeMillisecond=-20]="TimeMillisecond",e[e.TimeMicrosecond=-21]="TimeMicrosecond",e[e.TimeNanosecond=-22]="TimeNanosecond",e[e.DenseUnion=-23]="DenseUnion",e[e.SparseUnion=-24]="SparseUnion",e[e.IntervalDayTime=-25]="IntervalDayTime",e[e.IntervalYearMonth=-26]="IntervalYearMonth"}(cx||(cx={}));class fx{static isNull(e){return e&&e.typeId===cx.Null}static isInt(e){return e&&e.typeId===cx.Int}static isFloat(e){return e&&e.typeId===cx.Float}static isBinary(e){return e&&e.typeId===cx.Binary}static isUtf8(e){return e&&e.typeId===cx.Utf8}static isBool(e){return e&&e.typeId===cx.Bool}static isDecimal(e){return e&&e.typeId===cx.Decimal}static isDate(e){return e&&e.typeId===cx.Date}static isTime(e){return e&&e.typeId===cx.Time}static isTimestamp(e){return e&&e.typeId===cx.Timestamp}static isInterval(e){return e&&e.typeId===cx.Interval}static isList(e){return e&&e.typeId===cx.List}static isStruct(e){return e&&e.typeId===cx.Struct}static isUnion(e){return e&&e.typeId===cx.Union}static isFixedSizeBinary(e){return e&&e.typeId===cx.FixedSizeBinary}static isFixedSizeList(e){return e&&e.typeId===cx.FixedSizeList}static isMap(e){return e&&e.typeId===cx.Map}static isDictionary(e){return e&&e.typeId===cx.Dictionary}get typeId(){return cx.NONE}compareTo(e){return this===e}}ux=Symbol.toStringTag;class gx extends fx{constructor(e,t){super(),S_(this,"isSigned",void 0),S_(this,"bitWidth",void 0),this.isSigned=e,this.bitWidth=t}get typeId(){return cx.Int}get[ux](){return"Int"}toString(){return"".concat(this.isSigned?"I":"Ui","nt").concat(this.bitWidth)}}class mx extends gx{constructor(){super(!0,8)}}class _x extends gx{constructor(){super(!0,16)}}class vx extends gx{constructor(){super(!0,32)}}class bx extends gx{constructor(){super(!1,8)}}class yx extends gx{constructor(){super(!1,16)}}class xx extends gx{constructor(){super(!1,32)}}const Bx=32,wx=64;dx=Symbol.toStringTag;class Px extends fx{constructor(e){super(),S_(this,"precision",void 0),this.precision=e}get typeId(){return cx.Float}get[dx](){return"Float"}toString(){return"Float".concat(this.precision)}}class Cx extends Px{constructor(){super(Bx)}}class Mx extends Px{constructor(){super(wx)}}px=Symbol.toStringTag;class Fx extends fx{constructor(e,t){super(),S_(this,"listSize",void 0),S_(this,"children",void 0),this.listSize=e,this.children=[t]}get typeId(){return cx.FixedSizeList}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get[px](){return"FixedSizeList"}toString(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">")}}function Ex(e,t,i){const s=function(e){switch(e.constructor){case Int8Array:return new mx;case Uint8Array:return new bx;case Int16Array:return new _x;case Uint16Array:return new yx;case Int32Array:return new vx;case Uint32Array:return new xx;case Float32Array:return new Cx;case Float64Array:return new Mx;default:throw new Error("array type not supported")}}(t.value),r=i||function(e){const t=new Map;"byteOffset"in e&&t.set("byteOffset",e.byteOffset.toString(10));"byteStride"in e&&t.set("byteStride",e.byteStride.toString(10));"normalized"in e&&t.set("normalized",e.normalized.toString());return t}(t);return new hx(e,new Fx(t.size,new hx("value",s)),!1,r)}function Ix(e,t,i){return Ex(e,t,i?Dx(i.metadata):void 0)}function Dx(e){const t=new Map;for(const i in e)t.set("".concat(i,".string"),JSON.stringify(e[i]));return t}const Sx={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},Tx={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array};class Rx{constructor(e){S_(this,"draco",void 0),S_(this,"decoder",void 0),S_(this,"metadataQuerier",void 0),this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){const i=new this.draco.DecoderBuffer;i.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);const s=this.decoder.GetEncodedGeometryType(i),r=s===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let e;switch(s){case this.draco.TRIANGULAR_MESH:e=this.decoder.DecodeBufferToMesh(i,r);break;case this.draco.POINT_CLOUD:e=this.decoder.DecodeBufferToPointCloud(i,r);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!e.ok()||!r.ptr){const t="DRACO decompression failed: ".concat(e.error_msg());throw new Error(t)}const o=this._getDracoLoaderData(r,s,t),n=this._getMeshData(r,o,t),a=function(e){let t=1/0,i=1/0,s=1/0,r=-1/0,o=-1/0,n=-1/0;const a=e.POSITION?e.POSITION.value:[],l=a&&a.length;for(let e=0;er?l:r,o=A>o?A:o,n=h>n?h:n}return[[t,i,s],[r,o,n]]}(n.attributes),l=function(e,t,i){const s=Dx(t.metadata),r=[],o=function(e){const t={};for(const i in e){const s=e[i];t[s.name||"undefined"]=s}return t}(t.attributes);for(const t in e){const i=Ix(t,e[t],o[t]);r.push(i)}if(i){const e=Ix("indices",i);r.push(e)}return new lx(r,s)}(n.attributes,o,n.indices);return{loader:"draco",loaderData:o,header:{vertexCount:r.num_points(),boundingBox:a},...n,schema:l}}finally{this.draco.destroy(i),r&&this.draco.destroy(r)}}_getDracoLoaderData(e,t,i){const s=this._getTopLevelMetadata(e),r=this._getDracoAttributes(e,i);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:s,attributes:r}}_getDracoAttributes(e,t){const i={};for(let s=0;sthis.decoder[e])).includes(s)){const t=new this.draco.AttributeQuantizationTransform;try{if(t.InitFromAttribute(e))return{quantization_bits:t.quantization_bits(),range:t.range(),min_values:new Float32Array([1,2,3]).map((e=>t.min_value(e)))}}finally{this.draco.destroy(t)}}return null}_getOctahedronTransform(e,t){const{octahedronAttributes:i=[]}=t,s=e.attribute_type();if(i.map((e=>this.decoder[e])).includes(s)){const t=new this.draco.AttributeQuantizationTransform;try{if(t.InitFromAttribute(e))return{quantization_bits:t.quantization_bits()}}finally{this.draco.destroy(t)}}return null}}const Lx="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_decoder.js"),Ux="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_wasm_wrapper.js"),kx="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_decoder.wasm");let Ox;async function Nx(e){const t=e.modules||{};return Ox=t.draco3d?Ox||t.draco3d.createDecoderModule({}).then((e=>({draco:e}))):Ox||async function(e){let t,i;if("js"===(e.draco&&e.draco.decoderType))t=await K_(Lx,"draco",e);else[t,i]=await Promise.all([await K_(Ux,"draco",e),await K_(kx,"draco",e)]);return t=t||globalThis.DracoDecoderModule,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e({...i,onModuleLoaded:e=>t({draco:e})})}))}(t,i)}(e),await Ox}const Qx={...ax,parse:async function(e,t){const{draco:i}=await Nx(t),s=new Rx(i);try{return s.parseSync(e,null==t?void 0:t.draco)}finally{s.destroy()}}};function Vx(e){const{buffer:t,size:i,count:s}=function(e){let t=e,i=1,s=0;e&&e.value&&(t=e.value,i=e.size||1);t&&(ArrayBuffer.isView(t)||(t=function(e,t,i=!1){if(!e)return null;if(Array.isArray(e))return new t(e);if(i&&!(e instanceof t))return new t(e);return e}(t,Float32Array)),s=t.length/i);return{buffer:t,size:i,count:s}}(e);return{value:t,size:i,byteOffset:0,count:s,type:Gy(i),componentType:zy(t)}}async function Hx(e,t,i,s){const r=e.getObjectExtension(t,"KHR_draco_mesh_compression");if(!r)return;const o=e.getTypedArrayForBufferView(r.bufferView),n=ev(o.buffer,o.byteOffset),{parse:a}=s,l={...i};delete l["3d-tiles"];const A=await a(n,Qx,l,s),h=function(e){const t={};for(const i in e){const s=e[i];if("indices"!==i){const e=Vx(s);t[i]=e}}return t}(A.attributes);for(const[i,s]of Object.entries(h))if(i in t.attributes){const r=t.attributes[i],o=e.getAccessor(r);null!=o&&o.min&&null!=o&&o.max&&(s.min=o.min,s.max=o.max)}t.attributes=h,A.indices&&(t.indices=Vx(A.indices)),function(e){if(!e.attributes&&Object.keys(e.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}(t)}function jx(e,t,i=4,s,r){var o;if(!s.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");const n=s.DracoWriter.encodeSync({attributes:e}),a=null==r||null===(o=r.parseSync)||void 0===o?void 0:o.call(r,{attributes:e}),l=s._addFauxAttributes(a.attributes);return{primitives:[{attributes:l,mode:i,extensions:{KHR_draco_mesh_compression:{bufferView:s.addBufferView(n),attributes:l}}}]}}function*Gx(e){for(const t of e.json.meshes||[])for(const e of t.primitives)yield e}var zx=Object.freeze({__proto__:null,name:"KHR_draco_mesh_compression",preprocess:function(e,t,i){const s=new Xy(e);for(const e of Gx(s))s.getObjectExtension(e,"KHR_draco_mesh_compression")},decode:async function(e,t,i){var s;if(null==t||null===(s=t.gltf)||void 0===s||!s.decompressMeshes)return;const r=new Xy(e),o=[];for(const e of Gx(r))r.getObjectExtension(e,"KHR_draco_mesh_compression")&&o.push(Hx(r,e,t,i));await Promise.all(o),r.removeExtension("KHR_draco_mesh_compression")},encode:function(e,t={}){const i=new Xy(e);for(const e of i.json.meshes||[])jx(e),i.addRequiredExtension("KHR_draco_mesh_compression")}});var Wx=Object.freeze({__proto__:null,name:"KHR_lights_punctual",decode:async function(e){const t=new Xy(e),{json:i}=t,s=t.getExtension("KHR_lights_punctual");s&&(t.json.lights=s.lights,t.removeExtension("KHR_lights_punctual"));for(const e of i.nodes||[]){const i=t.getObjectExtension(e,"KHR_lights_punctual");i&&(e.light=i.light),t.removeObjectExtension(e,"KHR_lights_punctual")}},encode:async function(e){const t=new Xy(e),{json:i}=t;if(i.lights){const e=t.addExtension("KHR_lights_punctual");Uy(!e.lights),e.lights=i.lights,delete i.lights}if(t.json.lights){for(const e of t.json.lights){const i=e.node;t.addObjectExtension(i,"KHR_lights_punctual",e)}delete t.json.lights}}});function Kx(e,t){const i=Object.assign({},e.values);return Object.keys(e.uniforms||{}).forEach((t=>{e.uniforms[t].value&&!(t in i)&&(i[t]=e.uniforms[t].value)})),Object.keys(i).forEach((e=>{"object"==typeof i[e]&&void 0!==i[e].index&&(i[e].texture=t.getTexture(i[e].index))})),i}const Xx=[rx,ox,nx,zx,Wx,Object.freeze({__proto__:null,name:"KHR_materials_unlit",decode:async function(e){const t=new Xy(e),{json:i}=t;t.removeExtension("KHR_materials_unlit");for(const e of i.materials||[]){e.extensions&&e.extensions.KHR_materials_unlit&&(e.unlit=!0),t.removeObjectExtension(e,"KHR_materials_unlit")}},encode:function(e){const t=new Xy(e),{json:i}=t;if(t.materials)for(const e of i.materials||[])e.unlit&&(delete e.unlit,t.addObjectExtension(e,"KHR_materials_unlit",{}),t.addExtension("KHR_materials_unlit"))}}),Object.freeze({__proto__:null,name:"KHR_techniques_webgl",decode:async function(e){const t=new Xy(e),{json:i}=t,s=t.getExtension("KHR_techniques_webgl");if(s){const e=function(e,t){const{programs:i=[],shaders:s=[],techniques:r=[]}=e,o=new TextDecoder;return s.forEach((e=>{if(!Number.isFinite(e.bufferView))throw new Error("KHR_techniques_webgl: no shader code");e.code=o.decode(t.getTypedArrayForBufferView(e.bufferView))})),i.forEach((e=>{e.fragmentShader=s[e.fragmentShader],e.vertexShader=s[e.vertexShader]})),r.forEach((e=>{e.program=i[e.program]})),r}(s,t);for(const s of i.materials||[]){const i=t.getObjectExtension(s,"KHR_techniques_webgl");i&&(s.technique=Object.assign({},i,e[i.technique]),s.technique.values=Kx(s.technique,t)),t.removeObjectExtension(s,"KHR_techniques_webgl")}t.removeExtension("KHR_techniques_webgl")}},encode:async function(e,t){}})];function Jx(e,t){var i;const s=(null==t||null===(i=t.gltf)||void 0===i?void 0:i.excludeExtensions)||{};return!(e in s&&!s[e])}const Yx={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},Zx={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"};class qx{constructor(){S_(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}}),S_(this,"json",void 0)}normalize(e,t){this.json=e.json;const i=e.json;switch(i.asset&&i.asset.version){case"2.0":return;case void 0:case"1.0":break;default:return void console.warn("glTF: Unknown version ".concat(i.asset.version))}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(i),this._convertTopLevelObjectsToArrays(i),function(e){const t=new Xy(e),{json:i}=t;for(const e of i.images||[]){const i=t.getObjectExtension(e,"KHR_binary_glTF");i&&Object.assign(e,i),t.removeObjectExtension(e,"KHR_binary_glTF")}i.buffers&&i.buffers[0]&&delete i.buffers[0].uri,t.removeExtension("KHR_binary_glTF")}(e),this._convertObjectIdsToArrayIndices(i),this._updateObjects(i),this._updateMaterial(i)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(const t in Yx)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){const i=e[t];if(i&&!Array.isArray(i)){e[t]=[];for(const s in i){const r=i[s];r.id=r.id||s;const o=e[t].length;e[t].push(r),this.idToIndexMap[t][s]=o}}}_convertObjectIdsToArrayIndices(e){for(const t in Yx)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(const t of e.textures)this._convertTextureIds(t);for(const t of e.meshes)this._convertMeshIds(t);for(const t of e.nodes)this._convertNodeIds(t);for(const t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(const t of e.primitives){const{attributes:e,indices:i,material:s}=t;for(const t in e)e[t]=this._convertIdToIndex(e[t],"accessor");i&&(t.indices=this._convertIdToIndex(i,"accessor")),s&&(t.material=this._convertIdToIndex(s,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map((e=>this._convertIdToIndex(e,"node")))),e.meshes&&(e.meshes=e.meshes.map((e=>this._convertIdToIndex(e,"mesh"))))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map((e=>this._convertIdToIndex(e,"node"))))}_convertIdsToIndices(e,t){e[t]||(console.warn("gltf v1: json doesn't contain attribute ".concat(t)),e[t]=[]);for(const i of e[t])for(const e in i){const t=i[e],s=this._convertIdToIndex(t,e);i[e]=s}}_convertIdToIndex(e,t){const i=Zx[t];if(i in this.idToIndexMap){const s=this.idToIndexMap[i][e];if(!Number.isFinite(s))throw new Error("gltf v1: failed to resolve ".concat(t," with id ").concat(e));return s}return e}_updateObjects(e){for(const e of this.json.buffers)delete e.type}_updateMaterial(e){for(const s of e.materials){var t,i;s.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};const r=(null===(t=s.values)||void 0===t?void 0:t.tex)||(null===(i=s.values)||void 0===i?void 0:i.texture2d_0),o=e.textures.findIndex((e=>e.id===r));-1!==o&&(s.pbrMetallicRoughness.baseColorTexture={index:o})}}}const $x={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},eB={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},tB=10240,iB=10241,sB=10242,rB=10243,oB=10497,nB={magFilter:tB,minFilter:iB,wrapS:sB,wrapT:rB},aB={[tB]:9729,[iB]:9986,[sB]:oB,[rB]:oB};class lB{constructor(){S_(this,"baseUri",""),S_(this,"json",{}),S_(this,"buffers",[]),S_(this,"images",[])}postProcess(e,t={}){const{json:i,buffers:s=[],images:r=[],baseUri:o=""}=e;return Uy(i),this.baseUri=o,this.json=i,this.buffers=s,this.images=r,this._resolveTree(this.json,t),this.json}_resolveTree(e,t={}){e.bufferViews&&(e.bufferViews=e.bufferViews.map(((e,t)=>this._resolveBufferView(e,t)))),e.images&&(e.images=e.images.map(((e,t)=>this._resolveImage(e,t)))),e.samplers&&(e.samplers=e.samplers.map(((e,t)=>this._resolveSampler(e,t)))),e.textures&&(e.textures=e.textures.map(((e,t)=>this._resolveTexture(e,t)))),e.accessors&&(e.accessors=e.accessors.map(((e,t)=>this._resolveAccessor(e,t)))),e.materials&&(e.materials=e.materials.map(((e,t)=>this._resolveMaterial(e,t)))),e.meshes&&(e.meshes=e.meshes.map(((e,t)=>this._resolveMesh(e,t)))),e.nodes&&(e.nodes=e.nodes.map(((e,t)=>this._resolveNode(e,t)))),e.skins&&(e.skins=e.skins.map(((e,t)=>this._resolveSkin(e,t)))),e.scenes&&(e.scenes=e.scenes.map(((e,t)=>this._resolveScene(e,t)))),void 0!==e.scene&&(e.scene=e.scenes[this.json.scene])}getScene(e){return this._get("scenes",e)}getNode(e){return this._get("nodes",e)}getSkin(e){return this._get("skins",e)}getMesh(e){return this._get("meshes",e)}getMaterial(e){return this._get("materials",e)}getAccessor(e){return this._get("accessors",e)}getCamera(e){return null}getTexture(e){return this._get("textures",e)}getSampler(e){return this._get("samplers",e)}getImage(e){return this._get("images",e)}getBufferView(e){return this._get("bufferViews",e)}getBuffer(e){return this._get("buffers",e)}_get(e,t){if("object"==typeof t)return t;const i=this.json[e]&&this.json[e][t];return i||console.warn("glTF file error: Could not find ".concat(e,"[").concat(t,"]")),i}_resolveScene(e,t){return e.id=e.id||"scene-".concat(t),e.nodes=(e.nodes||[]).map((e=>this.getNode(e))),e}_resolveNode(e,t){return e.id=e.id||"node-".concat(t),e.children&&(e.children=e.children.map((e=>this.getNode(e)))),void 0!==e.mesh?e.mesh=this.getMesh(e.mesh):void 0!==e.meshes&&e.meshes.length&&(e.mesh=e.meshes.reduce(((e,t)=>{const i=this.getMesh(t);return e.id=i.id,e.primitives=e.primitives.concat(i.primitives),e}),{primitives:[]})),void 0!==e.camera&&(e.camera=this.getCamera(e.camera)),void 0!==e.skin&&(e.skin=this.getSkin(e.skin)),e}_resolveSkin(e,t){return e.id=e.id||"skin-".concat(t),e.inverseBindMatrices=this.getAccessor(e.inverseBindMatrices),e}_resolveMesh(e,t){return e.id=e.id||"mesh-".concat(t),e.primitives&&(e.primitives=e.primitives.map((e=>{const t=(e={...e}).attributes;e.attributes={};for(const i in t)e.attributes[i]=this.getAccessor(t[i]);return void 0!==e.indices&&(e.indices=this.getAccessor(e.indices)),void 0!==e.material&&(e.material=this.getMaterial(e.material)),e}))),e}_resolveMaterial(e,t){if(e.id=e.id||"material-".concat(t),e.normalTexture&&(e.normalTexture={...e.normalTexture},e.normalTexture.texture=this.getTexture(e.normalTexture.index)),e.occlusionTexture&&(e.occlustionTexture={...e.occlustionTexture},e.occlusionTexture.texture=this.getTexture(e.occlusionTexture.index)),e.emissiveTexture&&(e.emmisiveTexture={...e.emmisiveTexture},e.emissiveTexture.texture=this.getTexture(e.emissiveTexture.index)),e.emissiveFactor||(e.emissiveFactor=e.emmisiveTexture?[1,1,1]:[0,0,0]),e.pbrMetallicRoughness){e.pbrMetallicRoughness={...e.pbrMetallicRoughness};const t=e.pbrMetallicRoughness;t.baseColorTexture&&(t.baseColorTexture={...t.baseColorTexture},t.baseColorTexture.texture=this.getTexture(t.baseColorTexture.index)),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture={...t.metallicRoughnessTexture},t.metallicRoughnessTexture.texture=this.getTexture(t.metallicRoughnessTexture.index))}return e}_resolveAccessor(e,t){var i,s;if(e.id=e.id||"accessor-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView)),e.bytesPerComponent=(i=e.componentType,eB[i]),e.components=(s=e.type,$x[s]),e.bytesPerElement=e.bytesPerComponent*e.components,e.bufferView){const t=e.bufferView.buffer,{ArrayType:i,byteLength:s}=Wy(e,e.bufferView),r=(e.bufferView.byteOffset||0)+(e.byteOffset||0)+t.byteOffset;let o=t.arrayBuffer.slice(r,r+s);e.bufferView.byteStride&&(o=this._getValueFromInterleavedBuffer(t,r,e.bufferView.byteStride,e.bytesPerElement,e.count)),e.value=new i(o)}return e}_getValueFromInterleavedBuffer(e,t,i,s,r){const o=new Uint8Array(r*s);for(let n=0;n20);const s=t.getUint32(i+0,hB),r=t.getUint32(i+4,hB);return i+=8,x_(0===r),uB(e,t,i,s),i+=s,i+=dB(e,t,i,e.header.byteLength)}(e,r,i);case 2:return function(e,t,i,s){return x_(e.header.byteLength>20),function(e,t,i,s){for(;i+8<=e.header.byteLength;){const r=t.getUint32(i+0,hB),o=t.getUint32(i+4,hB);switch(i+=8,o){case 1313821514:uB(e,t,i,r);break;case 5130562:dB(e,t,i,r);break;case 0:s.strict||uB(e,t,i,r);break;case 1:s.strict||dB(e,t,i,r)}i+=tv(r,4)}}(e,t,i,s),i+e.header.byteLength}(e,r,i,{});default:throw new Error("Invalid GLB version ".concat(e.version,". Only supports v1 and v2."))}}function uB(e,t,i,s){const r=new Uint8Array(t.buffer,i,s),o=new TextDecoder("utf8").decode(r);return e.json=JSON.parse(o),tv(s,4)}function dB(e,t,i,s){return e.header.hasBinChunk=!0,e.binChunks.push({byteOffset:i,byteLength:s,arrayBuffer:t.buffer}),tv(s,4)}async function pB(e,t,i=0,s,r){var o,n,a,l;!function(e,t,i,s){s.uri&&(e.baseUri=s.uri);if(t instanceof ArrayBuffer&&!function(e,t=0,i={}){const s=new DataView(e),{magic:r=AB}=i,o=s.getUint32(t,!1);return o===r||o===AB}(t,i,s)){t=(new TextDecoder).decode(t)}if("string"==typeof t)e.json=Z_(t);else if(t instanceof ArrayBuffer){const r={};i=cB(r,t,i,s.glb),Uy("glTF"===r.type,"Invalid GLB magic string ".concat(r.type)),e._glb=r,e.json=r.json}else Uy(!1,"GLTF: must be ArrayBuffer or string");const r=e.json.buffers||[];if(e.buffers=new Array(r.length).fill(null),e._glb&&e._glb.header.hasBinChunk){const{binChunks:t}=e._glb;e.buffers[0]={arrayBuffer:t[0].arrayBuffer,byteOffset:t[0].byteOffset,byteLength:t[0].byteLength}}const o=e.json.images||[];e.images=new Array(o.length).fill({})}(e,t,i,s),function(e,t={}){(new qx).normalize(e,t)}(e,{normalize:null==s||null===(o=s.gltf)||void 0===o?void 0:o.normalize}),function(e,t={},i){const s=Xx.filter((e=>Jx(e.name,t)));for(const o of s){var r;null===(r=o.preprocess)||void 0===r||r.call(o,e,t,i)}}(e,s,r);const A=[];if(null!=s&&null!==(n=s.gltf)&&void 0!==n&&n.loadBuffers&&e.json.buffers&&await async function(e,t,i){const s=e.json.buffers||[];for(let n=0;nJx(e.name,t)));for(const o of s){var r;await(null===(r=o.decode)||void 0===r?void 0:r.call(o,e,t,i))}}(e,s,r);return A.push(h),await Promise.all(A),null!=s&&null!==(l=s.gltf)&&void 0!==l&&l.postProcess?function(e,t){return(new lB).postProcess(e,t)}(e,s):e}async function fB(e,t,i,s,r){const{fetch:o,parse:n}=r;let a;if(t.uri){const e=ky(t.uri,s),i=await o(e);a=await i.arrayBuffer()}if(Number.isFinite(t.bufferView)){const i=function(e,t,i){const s=e.bufferViews[i];Uy(s);const r=t[s.buffer];Uy(r);const o=(s.byteOffset||0)+r.byteOffset;return new Uint8Array(r.arrayBuffer,o,s.byteLength)}(e.json,e.buffers,t.bufferView);a=ev(i.buffer,i.byteOffset,i.byteLength)}Uy(a,"glTF image has no data");let l=await n(a,[Sy,fy],{mimeType:t.mimeType,basis:s.basis||{format:py()}},r);l&&l[0]&&(l={compressed:!0,mipmaps:!1,width:l[0].width,height:l[0].height,data:l[0]}),e.images=e.images||[],e.images[i]=l}const gB={name:"glTF",id:"gltf",module:"gltf",version:"3.2.6",extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:async function(e,t={},i){(t={...gB.options,...t}).gltf={...gB.options.gltf,...t.gltf};const{byteOffset:s=0}=t;return await pB({},e,s,t,i)},options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0,postProcess:!0},log:console},deprecatedOptions:{fetchImages:"gltf.loadImages",createImages:"gltf.loadImages",decompress:"gltf.decompressMeshes",postProcess:"gltf.postProcess",gltf:{decompress:"gltf.decompressMeshes"}}};class mB{constructor(e){}load(e,t,i,s,r,o,n){!function(e,t,i,s,r,o,n){const a=e.viewer.scene.canvas.spinner;a.processes++;"glb"===t.split(".").pop()?e.dataSource.getGLB(t,(n=>{s.basePath=vB(t),bB(e,t,n,i,s,r,o),a.processes--}),(e=>{a.processes--,n(e)})):e.dataSource.getGLTF(t,(n=>{s.basePath=vB(t),bB(e,t,n,i,s,r,o),a.processes--}),(e=>{a.processes--,n(e)}))}(e,t,i,s=s||{},r,(function(){M.scheduleTask((function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1)})),o&&o()}),(function(t){e.error(t),n&&n(t),r.fire("error",t)}))}parse(e,t,i,s,r,o,n){bB(e,"",t,i,s=s||{},r,(function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1),o&&o()}))}}function _B(e){const t={},i={},s=e.metaObjects||[],r={};for(let e=0,t=s.length;e{const l={src:t,entityId:r.entityId,metaModelCorrections:s?_B(s):null,loadBuffer:r.loadBuffer,basePath:r.basePath,handlenode:r.handlenode,backfaces:!!r.backfaces,gltfData:i,scene:o.scene,plugin:e,sceneModel:o,numObjects:0,nodes:[],nextId:0,log:t=>{e.log(t)}};!function(e){const t=e.gltfData.textures;if(t)for(let i=0,s=t.length;i0)for(let t=0;t0){null==s&&e.log("Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT");let t=s;if(e.metaModelCorrections){const i=e.metaModelCorrections.eachChildRoot[t];if(i){const t=e.metaModelCorrections.eachRootStats[i.id];t.countChildren++,t.countChildren>=t.numChildren&&(o.createEntity({id:i.id,meshIds:PB,isObject:!0}),PB.length=0)}else{e.metaModelCorrections.metaObjectsMap[t]&&(o.createEntity({id:t,meshIds:PB,isObject:!0}),PB.length=0)}}else o.createEntity({id:t,meshIds:PB,isObject:!0}),PB.length=0}}}function MB(e,t){e.plugin.error(t)}const FB={DEFAULT:{}};function EB(e,t,i={}){const s="lightgrey",r=i.hoverColor||"rgba(0,0,0,0.4)",o=i.textColor||"black",n=500,a=n+n/3,l=a/24,A=[{boundary:[6,6,6,6],color:i.frontColor||i.color||"#55FF55"},{boundary:[18,6,6,6],color:i.backColor||i.color||"#55FF55"},{boundary:[12,6,6,6],color:i.rightColor||i.color||"#FF5555"},{boundary:[0,6,6,6],color:i.leftColor||i.color||"#FF5555"},{boundary:[6,0,6,6],color:i.topColor||i.color||"#7777FF"},{boundary:[6,12,6,6],color:i.bottomColor||i.color||"#7777FF"}],h=[{label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,1,0],up:[0,0,1]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,-1,0],up:[0,0,1]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,0,1]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,0,1]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,0,1],up:[0,-1,0]},{boundaries:[[7,5,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,0,-1],up:[1,0,1]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-1,-1],up:[0,-1,1]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,0,-1],up:[-1,0,1]},{boundaries:[[7,11,4,2]],dir:[0,1,1],up:[0,-1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,0,1],up:[-1,0,1]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,-1,1],up:[0,1,1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,0,1],up:[1,0,1]},{boundaries:[[5,7,2,4]],dir:[1,1,0],up:[0,0,1]},{boundaries:[[11,7,2,4]],dir:[-1,1,0],up:[0,0,1]},{boundaries:[[17,7,2,4]],dir:[-1,-1,0],up:[0,0,1]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,-1,0],up:[0,0,1]},{boundaries:[[5,11,2,2]],dir:[1,1,1],up:[-1,-1,1]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[1,-1,1],up:[-1,1,1]},{boundaries:[[5,5,2,2]],dir:[1,1,-1],up:[1,1,1]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-1,-1,1],up:[1,1,1]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-1,-1,-1],up:[-1,-1,1]},{boundaries:[[11,11,2,2]],dir:[-1,1,1],up:[1,-1,1]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[1,-1,-1],up:[1,-1,1]},{boundaries:[[11,5,2,2]],dir:[-1,1,-1],up:[-1,1,1]}];i.frontColor||i.color,i.backColor||i.color,i.rightColor||i.color,i.leftColor||i.color,i.topColor||i.color,i.bottomColor||i.color;const u=[{yUp:"",label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,0,1],up:[0,1,0]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,1,0]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,1,0]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,-1,0],up:[0,0,-1]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,1,0],up:[0,0,1]},{boundaries:[[7,5,4,2]],dir:[0,-.7071,-.7071],up:[0,.7071,-.7071]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,-1,0],up:[1,1,0]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-.7071,.7071],up:[0,.7071,.7071]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,-1,0],up:[-1,1,0]},{boundaries:[[7,11,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,1,0],up:[-1,1,0]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,1,1],up:[0,1,-1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,1,0],up:[1,1,0]},{boundaries:[[5,7,2,4]],dir:[1,0,-1],up:[0,1,0]},{boundaries:[[11,7,2,4]],dir:[-1,0,-1],up:[0,1,0]},{boundaries:[[17,7,2,4]],dir:[-1,0,1],up:[0,1,0]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,0,1],up:[0,1,0]},{boundaries:[[5,11,2,2]],dir:[.5,.7071,-.5],up:[-.5,.7071,.5]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[.5,.7071,.5],up:[-.5,.7071,-.5]},{boundaries:[[5,5,2,2]],dir:[.5,-.7071,-.5],up:[.5,.7071,-.5]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-.5,.7071,.5],up:[.5,.7071,-.5]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-.5,-.7071,.5],up:[-.5,.7071,.5]},{boundaries:[[11,11,2,2]],dir:[-.5,.7071,-.5],up:[.5,.7071,.5]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[.5,-.7071,.5],up:[.5,.7071,.5]},{boundaries:[[11,5,2,2]],dir:[-.5,-.7071,-.5],up:[-.5,.7071,-.5]}];for(let e=0,t=h.length;e=r[0]*l&&t<=(r[0]+r[2])*l&&i>=r[1]*l&&i<=(r[1]+r[3])*l)return s}}return-1},this.setAreaHighlighted=function(e,t){var i=d[e];if(!i)throw"Area not found: "+e;i.highlighted=!!t,g()},this.getAreaDir=function(e){var t=d[e];if(!t)throw"Unknown area: "+e;return t.dir},this.getAreaUp=function(e){var t=d[e];if(!t)throw"Unknown area: "+e;return t.up},this.getImage=function(){return this._textureCanvas},this.destroy=function(){this._textureCanvas&&(this._textureCanvas.parentNode.removeChild(this._textureCanvas),this._textureCanvas=null)}}const IB=c.vec3(),DB=c.vec3();c.mat4();const SB=c.vec3();class TB{load(e,t,i={}){var s=e.scene.canvas.spinner;s.processes++,RB(e,t,(function(t){!function(e,t,i){for(var s=t.basePath,r=Object.keys(t.materialLibraries),o=r.length,n=0,a=o;n=0?i-1:i+t/3)}function r(e,t){var i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)}function o(e,t){var i=parseInt(e,10);return 2*(i>=0?i-1:i+t/2)}function n(e,t,i,s){var r=e.positions,o=e.object.geometry.positions;o.push(r[t+0]),o.push(r[t+1]),o.push(r[t+2]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[i+2]),o.push(r[s+0]),o.push(r[s+1]),o.push(r[s+2])}function a(e,t){var i=e.positions,s=e.object.geometry.positions;s.push(i[t+0]),s.push(i[t+1]),s.push(i[t+2])}function l(e,t,i,s){var r=e.normals,o=e.object.geometry.normals;o.push(r[t+0]),o.push(r[t+1]),o.push(r[t+2]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[i+2]),o.push(r[s+0]),o.push(r[s+1]),o.push(r[s+2])}function A(e,t,i,s){var r=e.uv,o=e.object.geometry.uv;o.push(r[t+0]),o.push(r[t+1]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[s+0]),o.push(r[s+1])}function h(e,t){var i=e.uv,s=e.object.geometry.uv;s.push(i[t+0]),s.push(i[t+1])}function c(e,t,i,a,h,c,u,d,p,f,g,m,_){var v,b=e.positions.length,y=s(t,b),x=s(i,b),B=s(a,b);if(void 0===h?n(e,y,x,B):(n(e,y,x,v=s(h,b)),n(e,x,B,v)),void 0!==c){var w=e.uv.length;y=o(c,w),x=o(u,w),B=o(d,w),void 0===h?A(e,y,x,B):(A(e,y,x,v=o(p,w)),A(e,x,B,v))}if(void 0!==f){var P=e.normals.length;y=r(f,P),x=f===g?y:r(g,P),B=f===m?y:r(m,P),void 0===h?l(e,y,x,B):(l(e,y,x,v=r(_,P)),l(e,x,B,v))}}function u(e,t,i){e.object.geometry.type="Line";for(var r=e.positions.length,n=e.uv.length,l=0,A=t.length;l=0?n.substring(0,a):n).toLowerCase(),A=(A=a>=0?n.substring(a+1):"").trim(),l.toLowerCase()){case"newmtl":i(e,u),u={id:A},d=!0;break;case"ka":u.ambient=s(A);break;case"kd":u.diffuse=s(A);break;case"ks":u.specular=s(A);break;case"map_kd":u.diffuseMap||(u.diffuseMap=t(e,o,A,"sRGB"));break;case"map_ks":u.specularMap||(u.specularMap=t(e,o,A,"linear"));break;case"map_bump":case"bump":u.normalMap||(u.normalMap=t(e,o,A));break;case"ns":u.shininess=parseFloat(A);break;case"d":(h=parseFloat(A))<1&&(u.alpha=h,u.alphaMode="blend");break;case"tr":(h=parseFloat(A))>0&&(u.alpha=1-h,u.alphaMode="blend")}d&&i(e,u)};function t(e,t,i,s){var r={},o=i.split(/\s+/),n=o.indexOf("-bm");return n>=0&&o.splice(n,2),(n=o.indexOf("-s"))>=0&&(r.scale=[parseFloat(o[n+1]),parseFloat(o[n+2])],o.splice(n,4)),(n=o.indexOf("-o"))>=0&&(r.translate=[parseFloat(o[n+1]),parseFloat(o[n+2])],o.splice(n,4)),r.src=t+o.join(" ").trim(),r.flipY=!0,r.encoding=s||"linear",new Ps(e,r).id}function i(e,t){new Ht(e,t)}function s(t){var i=t.split(e,3);return[parseFloat(i[0]),parseFloat(i[1]),parseFloat(i[2])]}}();function OB(e,t){for(var i=0,s=t.objects.length;i0&&(n.normals=o.normals),o.uv.length>0&&(n.uv=o.uv);for(var a=new Array(n.positions.length/3),l=0;l{this._setPos(this._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(()=>{this._ignoreNextSectionPlaneDirUpdate?this._ignoreNextSectionPlaneDirUpdate=!1:this._setDir(this._sectionPlane.dir)})))}get sectionPlane(){return this._sectionPlane}_setPos(e){this._pos.set(e),G(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}_setDir(e){this._baseDir.set(e),this._rootNode.quaternion=c.vec3PairToQuaternion(QB,e,VB)}_setSectionPlaneDir(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}setVisible(e=!0){if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}getVisible(){return this._visible}setCulled(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}_createNodes(){const e=!1,t=this._viewer.scene,i=.01;this._rootNode=new As(t,{position:[0,0,0],scale:[5,5,5],isObject:!1});const s=this._rootNode,r={arrowHead:new kt(s,Ji({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new kt(s,Ji({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),arrowHeadHandle:new kt(s,Ji({radiusTop:.09,radiusBottom:.09,radialSegments:8,heightSegments:1,height:.37,openEnded:!1})),curve:new kt(s,Ts({radius:.8,tube:i,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),curveHandle:new kt(s,Ts({radius:.8,tube:.06,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),hoop:new kt(s,Ts({radius:.8,tube:i,radialSegments:64,tubeSegments:8,arc:2*Math.PI})),axis:new kt(s,Ji({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1})),axisHandle:new kt(s,Ji({radiusTop:.08,radiusBottom:.08,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},o={pickable:new Ht(s,{diffuse:[1,1,0],alpha:0,alphaMode:"blend"}),red:new Ht(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new Gt(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6}),green:new Ht(s,{diffuse:[0,1,0],emissive:[0,1,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightGreen:new Gt(s,{edges:!1,fill:!0,fillColor:[0,1,0],fillAlpha:.6}),blue:new Ht(s,{diffuse:[0,0,1],emissive:[0,0,1],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightBlue:new Gt(s,{edges:!1,fill:!0,fillColor:[0,0,1],fillAlpha:.2}),center:new Ht(s,{diffuse:[0,0,0],emissive:[0,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80}),highlightBall:new Gt(s,{edges:!1,fill:!0,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1}),highlightPlane:new Gt(s,{edges:!0,edgeWidth:3,fill:!1,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1})};this._displayMeshes={plane:s.addChild(new Ki(s,{geometry:new kt(s,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Ht(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,ghostMaterial:new Gt(s,{edges:!1,filled:!0,fillColor:[1,1,0],edgeColor:[0,0,0],fillAlpha:.1,backfaces:!0}),pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1],isObject:!1}),e),planeFrame:s.addChild(new Ki(s,{geometry:new kt(s,Ts({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ht(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),highlightMaterial:new Gt(s,{edges:!1,edgeColor:[0,0,0],filled:!0,fillColor:[.8,.8,.8],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45],isObject:!1}),e),xCurve:s.addChild(new Ki(s,{geometry:r.curve,material:o.red,matrix:function(){const e=c.rotationMat4v(90*c.DEGTORAD,[0,1,0],c.identityMat4()),t=c.rotationMat4v(270*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveHandle:s.addChild(new Ki(s,{geometry:r.curveHandle,material:o.pickable,matrix:function(){const e=c.rotationMat4v(90*c.DEGTORAD,[0,1,0],c.identityMat4()),t=c.rotationMat4v(270*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveArrow1:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=c.translateMat4c(0,-.07,-.8,c.identityMat4()),t=c.scaleMat4v([.6,.6,.6],c.identityMat4()),i=c.rotationMat4v(0*c.DEGTORAD,[0,0,1],c.identityMat4());return c.mulMat4(c.mulMat4(e,t,c.identityMat4()),i,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xCurveArrow2:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=c.translateMat4c(0,-.8,-.07,c.identityMat4()),t=c.scaleMat4v([.6,.6,.6],c.identityMat4()),i=c.rotationMat4v(90*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(c.mulMat4(e,t,c.identityMat4()),i,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurve:s.addChild(new Ki(s,{geometry:r.curve,material:o.green,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveHandle:s.addChild(new Ki(s,{geometry:r.curveHandle,material:o.pickable,rotation:[-90,0,0],pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveArrow1:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=c.translateMat4c(.07,0,-.8,c.identityMat4()),t=c.scaleMat4v([.6,.6,.6],c.identityMat4()),i=c.rotationMat4v(90*c.DEGTORAD,[0,0,1],c.identityMat4());return c.mulMat4(c.mulMat4(e,t,c.identityMat4()),i,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurveArrow2:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=c.translateMat4c(.8,0,-.07,c.identityMat4()),t=c.scaleMat4v([.6,.6,.6],c.identityMat4()),i=c.rotationMat4v(90*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(c.mulMat4(e,t,c.identityMat4()),i,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurve:s.addChild(new Ki(s,{geometry:r.curve,material:o.blue,matrix:c.rotationMat4v(180*c.DEGTORAD,[1,0,0],c.identityMat4()),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveHandle:s.addChild(new Ki(s,{geometry:r.curveHandle,material:o.pickable,matrix:c.rotationMat4v(180*c.DEGTORAD,[1,0,0],c.identityMat4()),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveCurveArrow1:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=c.translateMat4c(.8,-.07,0,c.identityMat4()),t=c.scaleMat4v([.6,.6,.6],c.identityMat4());return c.mulMat4(e,t,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveArrow2:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=c.translateMat4c(.05,-.8,0,c.identityMat4()),t=c.scaleMat4v([.6,.6,.6],c.identityMat4()),i=c.rotationMat4v(90*c.DEGTORAD,[0,0,1],c.identityMat4());return c.mulMat4(c.mulMat4(e,t,c.identityMat4()),i,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),center:s.addChild(new Ki(s,{geometry:new kt(s,Yi({radius:.05})),material:o.center,pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrow:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[0,0,1],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrowHandle:s.addChild(new Ki(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[0,0,1],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxis:s.addChild(new Ki(s,{geometry:r.axis,material:o.red,matrix:function(){const e=c.translateMat4c(0,.5,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[0,0,1],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisHandle:s.addChild(new Ki(s,{geometry:r.axisHandle,material:o.pickable,matrix:function(){const e=c.translateMat4c(0,.5,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[0,0,1],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(180*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrowHandle:s.addChild(new Ki(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(180*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,opacity:.2,isObject:!1}),e),yShaft:s.addChild(new Ki(s,{geometry:r.axis,material:o.green,position:[0,-.5,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yShaftHandle:s.addChild(new Ki(s,{geometry:r.axisHandle,material:o.pickable,position:[0,-.5,0],pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[.8,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrowHandle:s.addChild(new Ki(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[.8,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zShaft:s.addChild(new Ki(s,{geometry:r.axis,material:o.blue,matrix:function(){const e=c.translateMat4c(0,.5,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1,isObject:!1}),e),zAxisHandle:s.addChild(new Ki(s,{geometry:r.axisHandle,material:o.pickable,matrix:function(){const e=c.translateMat4c(0,.5,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),clippable:!1,pickable:!0,collidable:!0,visible:!1,isObject:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new Ki(s,{geometry:new kt(s,Ts({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ht(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new Gt(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45],isObject:!1}),e),xHoop:s.addChild(new Ki(s,{geometry:r.hoop,material:o.red,highlighted:!0,highlightMaterial:o.highlightRed,matrix:function(){const e=c.rotationMat4v(90*c.DEGTORAD,[0,1,0],c.identityMat4()),t=c.rotationMat4v(270*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yHoop:s.addChild(new Ki(s,{geometry:r.hoop,material:o.green,highlighted:!0,highlightMaterial:o.highlightGreen,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zHoop:s.addChild(new Ki(s,{geometry:r.hoop,material:o.blue,highlighted:!0,highlightMaterial:o.highlightBlue,matrix:c.rotationMat4v(180*c.DEGTORAD,[1,0,0],c.identityMat4()),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xAxisArrow:s.addChild(new Ki(s,{geometry:r.arrowHeadBig,material:o.red,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[0,0,1],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:s.addChild(new Ki(s,{geometry:r.arrowHeadBig,material:o.green,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(180*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:s.addChild(new Ki(s,{geometry:r.arrowHeadBig,material:o.blue,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[.8,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e)}}_bindEvents(){const e=this;var t=!1;const i=-1,s=0,r=1,o=2,n=3,a=4,l=5,A=this._rootNode;var h=null,u=null;const d=c.vec2(),p=c.vec3([1,0,0]),f=c.vec3([0,1,0]),g=c.vec3([0,0,1]),m=this._viewer.scene.canvas.canvas,_=this._viewer.camera,v=this._viewer.scene;{const e=c.vec3([0,0,0]);let t=-1;this._onCameraViewMatrix=v.camera.on("viewMatrix",(()=>{})),this._onCameraProjMatrix=v.camera.on("projMatrix",(()=>{})),this._onSceneTick=v.on("tick",(()=>{const i=Math.abs(c.lenVec3(c.subVec3(v.camera.eye,this._pos,e)));if(i!==t&&"perspective"===_.projection){const e=.07*(Math.tan(_.perspective.fov*c.DEGTORAD)*i);A.scale=[e,e,e],t=i}if("ortho"===_.projection){const e=_.ortho.scale/10;A.scale=[e,e,e],t=i}}))}const b=function(){const e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),y=function(){const t=c.mat4();return function(i,s){return c.quaternionToMat4(e._rootNode.quaternion,t),c.transformVec3(t,i,s),c.normalizeVec3(s),s}}();var x=function(){const e=c.vec3();return function(t){const i=Math.abs(t[0]);return i>Math.abs(t[1])&&i>Math.abs(t[2])?c.cross3Vec3(t,[0,1,0],e):c.cross3Vec3(t,[1,0,0],e),c.cross3Vec3(e,t,e),c.normalizeVec3(e),e}}();const B=function(){const t=c.vec3(),i=c.vec3(),s=c.vec4();return function(r,o,n){y(r,s);const a=x(s,o,n);P(o,a,t),P(n,a,i),c.subVec3(i,t);const l=c.dotVec3(i,s);e._pos[0]+=s[0]*l,e._pos[1]+=s[1]*l,e._pos[2]+=s[2]*l,e._rootNode.position=e._pos,e._sectionPlane&&(e._sectionPlane.pos=e._pos)}}();var w=function(){const t=c.vec4(),i=c.vec4(),s=c.vec4(),r=c.vec4();return function(o,n,a){y(o,r);if(!(P(n,r,t)&&P(a,r,i))){const e=x(r,n,a);P(n,e,t,1),P(a,e,i,1);var l=c.dotVec3(t,r);t[0]-=l*r[0],t[1]-=l*r[1],t[2]-=l*r[2],l=c.dotVec3(i,r),i[0]-=l*r[0],i[1]-=l*r[1],i[2]-=l*r[2]}c.normalizeVec3(t),c.normalizeVec3(i),l=c.dotVec3(t,i),l=c.clamp(l,-1,1);var A=Math.acos(l)*c.RADTODEG;c.cross3Vec3(t,i,s),c.dotVec3(s,r)<0&&(A=-A),e._rootNode.rotate(o,A),C()}}(),P=function(){const t=c.vec4([0,0,0,1]),i=c.mat4();return function(s,r,o,n){n=n||0,t[0]=s[0]/m.width*2-1,t[1]=-(s[1]/m.height*2-1),t[2]=0,t[3]=1,c.mulMat4(_.projMatrix,_.viewMatrix,i),c.inverseMat4(i),c.transformVec4(i,t,t),c.mulVec4Scalar(t,1/t[3]);var a=_.eye;c.subVec4(t,a,t);const l=e._sectionPlane.pos;var A=-c.dotVec3(l,r)-n,h=c.dotVec3(r,t);if(Math.abs(h)>.005){var u=-(c.dotVec3(r,a)+A)/h;return c.mulVec3Scalar(t,u,o),c.addVec3(o,a),c.subVec3(o,l,o),!0}return!1}}();const C=function(){const t=c.vec3(),i=c.mat4();return function(){e.sectionPlane&&(c.quaternionToMat4(A.quaternion,i),c.transformVec3(i,[0,0,1],t),e._setSectionPlaneDir(t))}}();var M,F=!1;this._onCameraControlHover=this._viewer.cameraControl.on("hoverEnter",(e=>{if(!this._visible)return;if(F)return;var A;t=!1,M&&(M.visible=!1);switch(e.entity.id){case this._displayMeshes.xAxisArrowHandle.id:case this._displayMeshes.xAxisHandle.id:A=this._affordanceMeshes.xAxisArrow,h=s;break;case this._displayMeshes.yAxisArrowHandle.id:case this._displayMeshes.yShaftHandle.id:A=this._affordanceMeshes.yAxisArrow,h=r;break;case this._displayMeshes.zAxisArrowHandle.id:case this._displayMeshes.zAxisHandle.id:A=this._affordanceMeshes.zAxisArrow,h=o;break;case this._displayMeshes.xCurveHandle.id:A=this._affordanceMeshes.xHoop,h=n;break;case this._displayMeshes.yCurveHandle.id:A=this._affordanceMeshes.yHoop,h=a;break;case this._displayMeshes.zCurveHandle.id:A=this._affordanceMeshes.zHoop,h=l;break;default:return void(h=i)}A&&(A.visible=!0),M=A,t=!0})),this._onCameraControlHoverLeave=this._viewer.cameraControl.on("hoverOutEntity",(e=>{this._visible&&(M&&(M.visible=!1),M=null,h=i)})),m.addEventListener("mousedown",this._canvasMouseDownListener=e=>{if(e.preventDefault(),this._visible&&t&&(this._viewer.cameraControl.pointerEnabled=!1,1===e.which)){F=!0;var i=b(e);u=h,d[0]=i[0],d[1]=i[1]}}),m.addEventListener("mousemove",this._canvasMouseMoveListener=e=>{if(!this._visible)return;if(!F)return;var t=b(e);const i=t[0],A=t[1];switch(u){case s:B(p,d,t);break;case r:B(f,d,t);break;case o:B(g,d,t);break;case n:w(p,d,t);break;case a:w(f,d,t);break;case l:w(g,d,t)}d[0]=i,d[1]=A}),m.addEventListener("mouseup",this._canvasMouseUpListener=e=>{this._visible&&(this._viewer.cameraControl.pointerEnabled=!0,F&&(e.which,F=!1,t=!1))}),m.addEventListener("wheel",this._canvasWheelListener=e=>{if(this._visible)Math.max(-1,Math.min(1,40*-e.deltaY))})}_destroy(){this._unbindEvents(),this._destroyNodes()}_unbindEvents(){const e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=e.cameraControl;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix),r.off(this._onCameraControlHover),r.off(this._onCameraControlHoverLeave)}_destroyNodes(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}class jB{constructor(e,t,i){this.id=i.id,this._sectionPlane=i,this._mesh=new Ki(t,{id:i.id,geometry:new kt(t,Ot({xSize:.5,ySize:.5,zSize:.001})),material:new Ht(t,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new Wt(t,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new Gt(t,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new Gt(t,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});{const e=c.vec3([0,0,0]),t=c.vec3(),i=c.vec3([0,0,1]),s=c.vec4(4),r=c.vec3(),o=()=>{const o=this._sectionPlane.scene.center,n=[-this._sectionPlane.dir[0],-this._sectionPlane.dir[1],-this._sectionPlane.dir[2]];c.subVec3(o,this._sectionPlane.pos,e);const a=-c.dotVec3(n,e);c.normalizeVec3(n),c.mulVec3Scalar(n,a,t);const l=c.vec3PairToQuaternion(i,this._sectionPlane.dir,s);r[0]=.1*t[0],r[1]=.1*t[1],r[2]=.1*t[2],this._mesh.quaternion=l,this._mesh.position=r};this._onSectionPlanePos=this._sectionPlane.on("pos",o),this._onSectionPlaneDir=this._sectionPlane.on("dir",o)}this._highlighted=!1,this._selected=!1}setHighlighted(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}getHighlighted(){return this._highlighted}setSelected(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}getSelected(){return this._selected}destroy(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}class GB{constructor(e,t){if(!(t.onHoverEnterPlane&&t.onHoverLeavePlane&&t.onClickedNothing&&t.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=e,this._viewer=e.viewer,this._onHoverEnterPlane=t.onHoverEnterPlane,this._onHoverLeavePlane=t.onHoverLeavePlane,this._onClickedNothing=t.onClickedNothing,this._onClickedPlane=t.onClickedPlane,this._visible=!0,this._planes={},this._canvas=t.overviewCanvas,this._scene=new ii(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new wt(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new wt(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new wt(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;{const e=this._scene.camera,t=c.rotationMat4c(-90*c.DEGTORAD,1,0,0),i=c.vec3(),s=c.vec3(),r=c.vec3();this._synchCamera=()=>{const o=this._viewer.camera.eye,n=this._viewer.camera.look,a=this._viewer.camera.up;c.mulVec3Scalar(c.normalizeVec3(c.subVec3(o,n,i)),7),this._zUp?(c.transformVec3(t,i,s),c.transformVec3(t,a,r),e.look=[0,0,0],e.eye=c.transformVec3(t,i,s),e.up=c.transformPoint3(t,a,r)):(e.look=[0,0,0],e.eye=i,e.up=a)}}this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(e=>{this._scene.camera.perspective.fov=e}));var i=null;this._onInputMouseMove=this._scene.input.on("mousemove",(e=>{const t=this._scene.pick({canvasPos:e});if(t){if(!i||t.entity.id!==i.id){if(i){this._planes[i.id]&&this._onHoverLeavePlane(i.id)}i=t.entity;this._planes[i.id]&&this._onHoverEnterPlane(i.id)}}else i&&(this._onHoverLeavePlane(i.id),i=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=()=>{if(i){this._planes[i.id]&&this._onClickedPlane(i.id)}else this._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=()=>{i&&(this._onHoverLeavePlane(i.id),i=null)}),this.setVisible(t.overviewVisible)}addSectionPlane(e){this._planes[e.id]=new jB(this,this._scene,e)}setPlaneHighlighted(e,t){const i=this._planes[e];i&&i.setHighlighted(t)}setPlaneSelected(e,t){const i=this._planes[e];i&&i.setSelected(t)}removeSectionPlane(e){const t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}setVisible(e=!0){this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}getVisible(){return this._visible}destroy(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}const zB=c.AABB3(),WB=c.vec3();class KB{constructor(e,t,i,s,r,o){this.plugin=e,this.storeyId=r,this.modelId=s,this.storeyAABB=i.slice(),this.aabb=this.storeyAABB,this.modelAABB=t.slice(),this.numObjects=o}}class XB{constructor(e,t,i,s,r,o){this.storeyId=e,this.imageData=t,this.format=i,this.width=s,this.height=r}}const JB=c.vec3(),YB=c.mat4();const ZB=new Float64Array([0,0,1]),qB=new Float64Array(4);class $B{constructor(e){this.id=null,this._viewer=e.viewer,this._plugin=e,this._visible=!1,this._pos=c.vec3(),this._origin=c.vec3(),this._rtcPos=c.vec3(),this._baseDir=c.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}_setSectionPlane(e){this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(()=>{this._setPos(this._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(()=>{this._ignoreNextSectionPlaneDirUpdate?this._ignoreNextSectionPlaneDirUpdate=!1:this._setDir(this._sectionPlane.dir)})))}get sectionPlane(){return this._sectionPlane}_setPos(e){this._pos.set(e),G(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}_setDir(e){this._baseDir.set(e),this._rootNode.quaternion=c.vec3PairToQuaternion(ZB,e,qB)}_setSectionPlaneDir(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}setVisible(e=!0){if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}getVisible(){return this._visible}setCulled(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}_createNodes(){const e=!1,t=this._viewer.scene,i=.01;this._rootNode=new As(t,{position:[0,0,0],scale:[5,5,5]});const s=this._rootNode,r={arrowHead:new kt(s,Ji({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new kt(s,Ji({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),axis:new kt(s,Ji({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},o={red:new Ht(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),green:new Ht(s,{diffuse:[0,1,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),blue:new Ht(s,{diffuse:[0,0,1],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new Gt(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6})};this._displayMeshes={plane:s.addChild(new Ki(s,{geometry:new kt(s,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Ht(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1]}),e),planeFrame:s.addChild(new Ki(s,{geometry:new kt(s,Ts({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ht(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45]}),e),center:s.addChild(new Ki(s,{geometry:new kt(s,Yi({radius:.05})),material:o.center,pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zAxisArrow:s.addChild(new Ki(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[.8,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zShaft:s.addChild(new Ki(s,{geometry:r.axis,material:o.blue,matrix:function(){const e=c.translateMat4c(0,.5,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[1,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new Ki(s,{geometry:new kt(s,Ts({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ht(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new Gt(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45]}),e),zAxisArrow:s.addChild(new Ki(s,{geometry:r.arrowHeadBig,material:o.blue,matrix:function(){const e=c.translateMat4c(0,1.1,0,c.identityMat4()),t=c.rotationMat4v(-90*c.DEGTORAD,[.8,0,0],c.identityMat4());return c.mulMat4(t,e,c.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e)}}_bindEvents(){const e=this._rootNode,t=c.vec2(),i=this._viewer.camera,s=this._viewer.scene;let r=0,o=!1;{const t=c.vec3([0,0,0]);let n=-1;this._onCameraViewMatrix=s.camera.on("viewMatrix",(()=>{})),this._onCameraProjMatrix=s.camera.on("projMatrix",(()=>{})),this._onSceneTick=s.on("tick",(()=>{o=!1;const l=Math.abs(c.lenVec3(c.subVec3(s.camera.eye,this._pos,t)));if(l!==n&&"perspective"===i.projection){const t=.07*(Math.tan(i.perspective.fov*c.DEGTORAD)*l);e.scale=[t,t,t],n=l}if("ortho"===i.projection){const t=i.ortho.scale/10;e.scale=[t,t,t],n=l}0!==r&&(a(r),r=0)}))}const n=function(){const e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),a=e=>{const t=this._sectionPlane.pos,i=this._sectionPlane.dir;c.addVec3(t,c.mulVec3Scalar(i,.1*e*this._plugin.getDragSensitivity(),c.vec3())),this._sectionPlane.pos=t};{let e=!1;this._plugin._controlElement.addEventListener("mousedown",this._canvasMouseDownListener=i=>{if(i.preventDefault(),this._visible&&(this._viewer.cameraControl.pointerEnabled=!1,1===i.which)){e=!0;var s=n(i);t[0]=s[0],t[1]=s[1]}}),this._plugin._controlElement.addEventListener("mousemove",this._canvasMouseMoveListener=i=>{if(!this._visible)return;if(!e)return;if(o)return;var s=n(i);const r=s[0],l=s[1];a(l-t[1]),t[0]=r,t[1]=l}),this._plugin._controlElement.addEventListener("mouseup",this._canvasMouseUpListener=t=>{this._visible&&(this._viewer.cameraControl.pointerEnabled=!0,e&&(t.which,e=!1))}),this._plugin._controlElement.addEventListener("wheel",this._canvasWheelListener=e=>{this._visible&&(r+=Math.max(-1,Math.min(1,40*-e.deltaY)))})}{let e,t,i=null;this._plugin._controlElement.addEventListener("touchstart",this._handleTouchStart=t=>{t.stopPropagation(),t.preventDefault(),this._visible&&(e=t.touches[0].clientY,i=e,r=0)}),this._plugin._controlElement.addEventListener("touchmove",this._handleTouchMove=e=>{e.stopPropagation(),e.preventDefault(),this._visible&&(o||(o=!0,t=e.touches[0].clientY,null!==i&&(r+=t-i),i=t))}),this._plugin._controlElement.addEventListener("touchend",this._handleTouchEnd=i=>{i.stopPropagation(),i.preventDefault(),this._visible&&(e=null,t=null,r=0)})}}_destroy(){this._unbindEvents(),this._destroyNodes()}_unbindEvents(){const e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=this._plugin._controlElement;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),r.removeEventListener("touchstart",this._handleTouchStart),r.removeEventListener("touchmove",this._handleTouchMove),r.removeEventListener("touchend",this._handleTouchEnd),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix)}_destroyNodes(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}class ew{constructor(e,t,i){this.id=i.id,this._sectionPlane=i,this._mesh=new Ki(t,{id:i.id,geometry:new kt(t,Ot({xSize:.5,ySize:.5,zSize:.001})),material:new Ht(t,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new Wt(t,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new Gt(t,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new Gt(t,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});{const e=c.vec3([0,0,0]),t=c.vec3(),i=c.vec3([0,0,1]),s=c.vec4(4),r=c.vec3(),o=()=>{const o=this._sectionPlane.scene.center,n=[-this._sectionPlane.dir[0],-this._sectionPlane.dir[1],-this._sectionPlane.dir[2]];c.subVec3(o,this._sectionPlane.pos,e);const a=-c.dotVec3(n,e);c.normalizeVec3(n),c.mulVec3Scalar(n,a,t);const l=c.vec3PairToQuaternion(i,this._sectionPlane.dir,s);r[0]=.1*t[0],r[1]=.1*t[1],r[2]=.1*t[2],this._mesh.quaternion=l,this._mesh.position=r};this._onSectionPlanePos=this._sectionPlane.on("pos",o),this._onSectionPlaneDir=this._sectionPlane.on("dir",o)}this._highlighted=!1,this._selected=!1}setHighlighted(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}getHighlighted(){return this._highlighted}setSelected(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}getSelected(){return this._selected}destroy(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}class tw{constructor(e,t){if(!(t.onHoverEnterPlane&&t.onHoverLeavePlane&&t.onClickedNothing&&t.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=e,this._viewer=e.viewer,this._onHoverEnterPlane=t.onHoverEnterPlane,this._onHoverLeavePlane=t.onHoverLeavePlane,this._onClickedNothing=t.onClickedNothing,this._onClickedPlane=t.onClickedPlane,this._visible=!0,this._planes={},this._canvas=t.overviewCanvas,this._scene=new ii(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new wt(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new wt(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new wt(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;{const e=this._scene.camera,t=c.rotationMat4c(-90*c.DEGTORAD,1,0,0),i=c.vec3(),s=c.vec3(),r=c.vec3();this._synchCamera=()=>{const o=this._viewer.camera.eye,n=this._viewer.camera.look,a=this._viewer.camera.up;c.mulVec3Scalar(c.normalizeVec3(c.subVec3(o,n,i)),7),this._zUp?(c.transformVec3(t,i,s),c.transformVec3(t,a,r),e.look=[0,0,0],e.eye=c.transformVec3(t,i,s),e.up=c.transformPoint3(t,a,r)):(e.look=[0,0,0],e.eye=i,e.up=a)}}this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(e=>{this._scene.camera.perspective.fov=e}));var i=null;this._onInputMouseMove=this._scene.input.on("mousemove",(e=>{const t=this._scene.pick({canvasPos:e});if(t){if(!i||t.entity.id!==i.id){if(i){this._planes[i.id]&&this._onHoverLeavePlane(i.id)}i=t.entity;this._planes[i.id]&&this._onHoverEnterPlane(i.id)}}else i&&(this._onHoverLeavePlane(i.id),i=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=()=>{if(i){this._planes[i.id]&&this._onClickedPlane(i.id)}else this._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=()=>{i&&(this._onHoverLeavePlane(i.id),i=null)}),this.setVisible(t.overviewVisible)}addSectionPlane(e){this._planes[e.id]=new ew(this,this._scene,e)}setPlaneHighlighted(e,t){const i=this._planes[e];i&&i.setHighlighted(t)}setPlaneSelected(e,t){const i=this._planes[e];i&&i.setSelected(t)}removeSectionPlane(e){const t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}setVisible(e=!0){this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}getVisible(){return this._visible}destroy(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}const iw=c.AABB3(),sw=c.vec3();class rw{getSTL(e,t,i){const s=new XMLHttpRequest;s.overrideMimeType("application/json"),s.open("GET",e,!0),s.responseType="arraybuffer",s.onreadystatechange=function(){4===s.readyState&&(200===s.status?t(s.response):i(s.statusText))},s.send(null)}}const ow=c.vec3();class nw{load(e,t,i,s,r,o){s=s||{};const n=e.viewer.scene.canvas.spinner;n.processes++,e.dataSource.getSTL(i,(function(i){!function(e,t,i,s){try{const r=uw(i);aw(r)?lw(e,r,t,s):Aw(e,cw(i),t,s)}catch(e){t.fire("error",e)}}(e,t,i,s);try{const o=uw(i);aw(o)?lw(e,o,t,s):Aw(e,cw(i),t,s),n.processes--,M.scheduleTask((function(){t.fire("loaded",!0,!1)})),r&&r()}catch(i){n.processes--,e.error(i),o&&o(i),t.fire("error",i)}}),(function(i){n.processes--,e.error(i),o&&o(i),t.fire("error",i)}))}parse(e,t,i,s){const r=e.viewer.scene.canvas.spinner;r.processes++;try{const o=uw(i);aw(o)?lw(e,o,t,s):Aw(e,cw(i),t,s),r.processes--,M.scheduleTask((function(){t.fire("loaded",!0,!1)}))}catch(e){r.processes--,t.fire("error",e)}}}function aw(e){const t=new DataView(e);if(84+50*t.getUint32(80,!0)===t.byteLength)return!0;const i=[115,111,108,105,100];for(var s=0;s<5;s++)if(i[s]!==t.getUint8(s,!1))return!0;return!1}function lw(e,t,i,s){const r=new DataView(t),o=r.getUint32(80,!0);let n,a,l,A,h,c,u,d=!1,p=null,f=null,g=null,m=!1;for(let e=0;e<70;e++)1129270351===r.getUint32(e,!1)&&82===r.getUint8(e+4)&&61===r.getUint8(e+5)&&(d=!0,A=[],h=r.getUint8(e+6)/255,c=r.getUint8(e+7)/255,u=r.getUint8(e+8)/255,r.getUint8(e+9));const _=new ds(i,{roughness:.5});let v=[],b=[],y=s.splitMeshes;for(let e=0;e>5&31)/31,l=(e>>10&31)/31):(n=h,a=c,l=u),(y&&n!==p||a!==f||l!==g)&&(null!==p&&(m=!0),p=n,f=a,g=l)}for(let e=1;e<=3;e++){let i=t+12*e;v.push(r.getFloat32(i,!0)),v.push(r.getFloat32(i+4,!0)),v.push(r.getFloat32(i+8,!0)),b.push(o,x,B),d&&A.push(n,a,l,1)}y&&m&&(hw(i,v,b,A,_,s),v=[],b=[],A=A?[]:null,m=!1)}v.length>0&&hw(i,v,b,A,_,s)}function Aw(e,t,i,s){const r=/facet([\s\S]*?)endfacet/g;let o=0;const n=/[\s]+([+-]?(?:\d+.\d+|\d+.|\d+|.\d+)(?:[eE][+-]?\d+)?)/.source,a=new RegExp("vertex"+n+n+n,"g"),l=new RegExp("normal"+n+n+n,"g"),A=[],h=[];let c,u,d,p,f,g,m;for(;null!==(p=r.exec(t));){for(f=0,g=0,m=p[0];null!==(p=l.exec(m));)c=parseFloat(p[1]),u=parseFloat(p[2]),d=parseFloat(p[3]),g++;for(;null!==(p=a.exec(m));)A.push(parseFloat(p[1]),parseFloat(p[2]),parseFloat(p[3])),h.push(c,u,d),f++;1!==g&&e.error("Error in normal of face "+o),3!==f&&e.error("Error in positions of face "+o),o++}hw(i,A,h,null,new ds(i,{roughness:.5}),s)}function hw(e,t,i,s,r,o){const n=new Int32Array(t.length/3);for(let e=0,t=n.length;e0?i:null,s=s&&s.length>0?s:null,o.smoothNormals&&c.faceToVertexNormals(t,i,o);const a=ow;z(t,t,a);const l=new kt(e,{primitive:"triangles",positions:t,normals:i,colors:s,indices:n}),A=new Ki(e,{origin:0!==a[0]||0!==a[1]||0!==a[2]?a:null,geometry:l,material:r,edges:o.edges});e.addChild(A)}function cw(e){return"string"!=typeof e?function(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t="";for(let i=0,s=e.length;i0){const i=document.createElement("a");i.href="#",i.id=`switch-${e.nodeId}`,i.textContent="+",i.classList.add("plus"),t&&i.addEventListener("click",t),o.appendChild(i)}const n=document.createElement("input");n.id=`checkbox-${e.nodeId}`,n.type="checkbox",n.checked=e.checked,n.style["pointer-events"]="all",i&&n.addEventListener("change",i),o.appendChild(n);const a=document.createElement("span");return a.textContent=e.title,o.appendChild(a),s&&(a.oncontextmenu=s),r&&(a.onclick=r),o}createDisabledNodeElement(e){const t=document.createElement("li"),i=document.createElement("a");i.href="#",i.textContent="!",i.classList.add("warn"),i.classList.add("warning"),t.appendChild(i);const s=document.createElement("span");return s.textContent=e,t.appendChild(s),t}addChildren(e,t){const i=document.createElement("ul");t.forEach((e=>{i.appendChild(e)})),e.parentElement.appendChild(i)}expand(e,t,i){e.classList.remove("plus"),e.classList.add("minus"),e.textContent="-",e.removeEventListener("click",t),e.addEventListener("click",i)}collapse(e,t,i){if(!e)return;const s=e.parentElement;if(!s)return;const r=s.querySelector("ul");r&&(s.removeChild(r),e.classList.remove("minus"),e.classList.add("plus"),e.textContent="+",e.removeEventListener("click",i),e.addEventListener("click",t))}isExpanded(e){return void 0!==e.parentElement.getElementsByTagName("li")[0]}getId(e){return e.parentElement.id}getIdFromCheckbox(e){return e.id.replace("checkbox-","")}getSwitchElement(e){return document.getElementById(`switch-${e}`)}isChecked(e){return e.checked}setCheckbox(e,t){const i=document.getElementById(`checkbox-${e}`);i&&t!==i.checked&&(i.checked=t)}setXRayed(e,t){const i=document.getElementById(e);i&&(t?i.classList.add("xrayed-node"):i.classList.remove("xrayed-node"))}setHighlighted(e,t){const i=document.getElementById(e);i&&(t?(i.scrollIntoView({block:"center"}),i.classList.add("highlighted-node")):i.classList.remove("highlighted-node"))}}const pw=[];class fw{constructor(e){this._scene=e,this._objects=[],this._objectsViewCulled=[],this._objectsDetailCulled=[],this._objectsChanged=[],this._objectsChangedList=[],this._modelInfos={},this._numObjects=0,this._lenObjectsChangedList=0,this._dirty=!0,this._onModelLoaded=e.on("modelLoaded",(t=>{const i=e.models[t];i&&this._addModel(i)})),this._onTick=e.on("tick",(()=>{this._dirty&&this._build(),this._applyChanges()}))}_addModel(e){const t={model:e,onDestroyed:e.on("destroyed",(()=>{this._removeModel(e)}))};this._modelInfos[e.id]=t,this._dirty=!0}_removeModel(e){const t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._dirty=!0)}_build(){if(!this._dirty)return;this._applyChanges();const e=this._scene.objects;for(let e=0;e0){for(let e=0;e{t(e)}),(function(e){i(e)}))}getMetaModel(e,t,i){_.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getXKT(e,t,i){var s=()=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n=0;)e[t]=0}const i=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),o=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),n=new Array(576);t(n);const a=new Array(60);t(a);const l=new Array(512);t(l);const A=new Array(256);t(A);const h=new Array(29);t(h);const c=new Array(30);function u(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}let d,p,f;function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(c);const m=e=>e<256?l[e]:l[256+(e>>>7)],_=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},v=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<{v(e,i[2*t],i[2*t+1])},y=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},x=(e,t,i)=>{const s=new Array(16);let r,o,n=0;for(r=1;r<=15;r++)n=n+i[r-1]<<1,s[r]=n;for(o=0;o<=t;o++){let t=e[2*o+1];0!==t&&(e[2*o]=y(s[t]++,t))}},B=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},w=e=>{e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},P=(e,t,i,s)=>{const r=2*t,o=2*i;return e[r]{const s=e.heap[i];let r=i<<1;for(;r<=e.heap_len&&(r{let o,n,a,l,u=0;if(0!==e.sym_next)do{o=255&e.pending_buf[e.sym_buf+u++],o+=(255&e.pending_buf[e.sym_buf+u++])<<8,n=e.pending_buf[e.sym_buf+u++],0===o?b(e,n,t):(a=A[n],b(e,a+256+1,t),l=i[a],0!==l&&(n-=h[a],v(e,n,l)),o--,a=m(o),b(e,a,r),l=s[a],0!==l&&(o-=c[a],v(e,o,l)))}while(u{const i=t.dyn_tree,s=t.stat_desc.static_tree,r=t.stat_desc.has_stree,o=t.stat_desc.elems;let n,a,l,A=-1;for(e.heap_len=0,e.heap_max=573,n=0;n>1;n>=1;n--)C(e,i,n);l=o;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],C(e,i,1),a=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=a,i[2*l]=i[2*n]+i[2*a],e.depth[l]=(e.depth[n]>=e.depth[a]?e.depth[n]:e.depth[a])+1,i[2*n+1]=i[2*a+1]=l,e.heap[1]=l++,C(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,s=t.max_code,r=t.stat_desc.static_tree,o=t.stat_desc.has_stree,n=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let A,h,c,u,d,p,f=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(i[2*e.heap[e.heap_max]+1]=0,A=e.heap_max+1;A<573;A++)h=e.heap[A],u=i[2*i[2*h+1]+1]+1,u>l&&(u=l,f++),i[2*h+1]=u,h>s||(e.bl_count[u]++,d=0,h>=a&&(d=n[h-a]),p=i[2*h],e.opt_len+=p*(u+d),o&&(e.static_len+=p*(r[2*h+1]+d)));if(0!==f){do{for(u=l-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[l]--,f-=2}while(f>0);for(u=l;0!==u;u--)for(h=e.bl_count[u];0!==h;)c=e.heap[--A],c>s||(i[2*c+1]!==u&&(e.opt_len+=(u-i[2*c+1])*i[2*c],i[2*c+1]=u),h--)}})(e,t),x(i,A,e.bl_count)},E=(e,t,i)=>{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=n,n=t[2*(s+1)+1],++a{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),s=0;s<=i;s++)if(r=n,n=t[2*(s+1)+1],!(++a{v(e,0+(s?1:0),3),w(e),_(e,i),_(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var T={_tr_init:e=>{D||((()=>{let e,t,o,g,m;const _=new Array(16);for(o=0,g=0;g<28;g++)for(h[g]=o,e=0;e<1<>=7;g<30;g++)for(c[g]=m<<7,e=0;e<1<{let r,l,A=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),F(e,e.l_desc),F(e,e.d_desc),A=(e=>{let t;for(E(e,e.dyn_ltree,e.l_desc.max_code),E(e,e.dyn_dtree,e.d_desc.max_code),F(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*o[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,l=e.static_len+3+7>>>3,l<=r&&(r=l)):r=l=i+5,i+4<=r&&-1!==t?S(e,t,i,s):4===e.strategy||l===r?(v(e,2+(s?1:0),3),M(e,n,a)):(v(e,4+(s?1:0),3),((e,t,i,s)=>{let r;for(v(e,t-257,5),v(e,i-1,5),v(e,s-4,4),r=0;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(A[i]+256+1)]++,e.dyn_dtree[2*m(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{v(e,2,3),b(e,256,n),(e=>{16===e.bi_valid?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},R=(e,t,i,s)=>{let r=65535&e|0,o=e>>>16&65535|0,n=0;for(;0!==i;){n=i>2e3?2e3:i,i-=n;do{r=r+t[s++]|0,o=o+r|0}while(--n);r%=65521,o%=65521}return r|o<<16|0};const L=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var U=(e,t,i,s)=>{const r=L,o=s+i;e^=-1;for(let i=s;i>>8^r[255&(e^t[i])];return-1^e},k={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},O={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:N,_tr_stored_block:Q,_tr_flush_block:V,_tr_tally:H,_tr_align:j}=T,{Z_NO_FLUSH:G,Z_PARTIAL_FLUSH:z,Z_FULL_FLUSH:W,Z_FINISH:K,Z_BLOCK:X,Z_OK:J,Z_STREAM_END:Y,Z_STREAM_ERROR:Z,Z_DATA_ERROR:q,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:ee,Z_FILTERED:te,Z_HUFFMAN_ONLY:ie,Z_RLE:se,Z_FIXED:re,Z_DEFAULT_STRATEGY:oe,Z_UNKNOWN:ne,Z_DEFLATED:ae}=O,le=258,Ae=262,he=42,ce=113,ue=666,de=(e,t)=>(e.msg=k[t],t),pe=e=>2*e-(e>4?9:0),fe=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ge=e=>{let t,i,s,r=e.w_size;t=e.hash_size,s=t;do{i=e.head[--s],e.head[s]=i>=r?i-r:0}while(--t);t=r,s=t;do{i=e.prev[--s],e.prev[s]=i>=r?i-r:0}while(--t)};let me=(e,t,i)=>(t<{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},ve=(e,t)=>{V(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,_e(e.strm)},be=(e,t)=>{e.pending_buf[e.pending++]=t},ye=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},xe=(e,t,i,s)=>{let r=e.avail_in;return r>s&&(r=s),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=R(e.adler,t,r,i):2===e.state.wrap&&(e.adler=U(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},Be=(e,t)=>{let i,s,r=e.max_chain_length,o=e.strstart,n=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-Ae?e.strstart-(e.w_size-Ae):0,A=e.window,h=e.w_mask,c=e.prev,u=e.strstart+le;let d=A[o+n-1],p=A[o+n];e.prev_length>=e.good_match&&(r>>=2),a>e.lookahead&&(a=e.lookahead);do{if(i=t,A[i+n]===p&&A[i+n-1]===d&&A[i]===A[o]&&A[++i]===A[o+1]){o+=2,i++;do{}while(A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&on){if(e.match_start=t,n=s,s>=a)break;d=A[o+n-1],p=A[o+n]}}}while((t=c[t&h])>l&&0!=--r);return n<=e.lookahead?n:e.lookahead},we=e=>{const t=e.w_size;let i,s,r;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ae)&&(e.window.set(e.window.subarray(t,t+t-s),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ge(e),s+=t),0===e.strm.avail_in)break;if(i=xe(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=i,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=me(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=me(e,e.ins_h,e.window[r+3-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let i,s,r,o=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n=0,a=e.strm.avail_in;do{if(i=65535,r=e.bi_valid+42>>3,e.strm.avail_outs+e.strm.avail_in&&(i=s+e.strm.avail_in),i>r&&(i=r),i>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,_e(e.strm),s&&(s>i&&(s=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,i-=s),i&&(xe(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===n);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_waterr&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(xe(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water>3,r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r,o=r>e.w_size?e.w_size:r,s=e.strstart-e.block_start,(s>=o||(s||t===K)&&t!==G&&0===e.strm.avail_in&&s<=r)&&(i=s>r?r:s,n=t===K&&0===e.strm.avail_in&&i===s?1:0,Q(e,e.block_start,i,n),e.block_start+=i,_e(e.strm)),n?3:1)},Ce=(e,t)=>{let i,s;for(;;){if(e.lookahead=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-Ae&&(e.match_length=Be(e,i)),e.match_length>=3)if(s=H(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=me(e,e.ins_h,e.window[e.strstart+1]);else s=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2},Me=(e,t)=>{let i,s,r;for(;;){if(e.lookahead=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=H(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,s&&(ve(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(s=H(e,0,e.window[e.strstart-1]),s&&ve(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=H(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2};function Fe(e,t,i,s,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=s,this.func=r}const Ee=[new Fe(0,0,0,0,Pe),new Fe(4,4,8,4,Ce),new Fe(4,5,16,8,Ce),new Fe(4,6,32,32,Ce),new Fe(4,4,16,16,Me),new Fe(8,16,32,32,Me),new Fe(8,16,128,128,Me),new Fe(8,32,128,256,Me),new Fe(32,128,258,1024,Me),new Fe(32,258,258,4096,Me)];function Ie(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ae,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),fe(this.dyn_ltree),fe(this.dyn_dtree),fe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),fe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),fe(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const De=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==he&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==ce&&t.status!==ue?1:0},Se=e=>{if(De(e))return de(e,Z);e.total_in=e.total_out=0,e.data_type=ne;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?he:ce,e.adler=2===t.wrap?0:1,t.last_flush=-2,N(t),J},Te=e=>{const t=Se(e);var i;return t===J&&((i=e.state).window_size=2*i.w_size,fe(i.head),i.max_lazy_match=Ee[i.level].max_lazy,i.good_match=Ee[i.level].good_length,i.nice_match=Ee[i.level].nice_length,i.max_chain_length=Ee[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),t},Re=(e,t,i,s,r,o)=>{if(!e)return Z;let n=1;if(t===ee&&(t=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),r<1||r>9||i!==ae||s<8||s>15||t<0||t>9||o<0||o>re||8===s&&1!==n)return de(e,Z);8===s&&(s=9);const a=new Ie;return e.state=a,a.strm=e,a.status=he,a.wrap=n,a.gzhead=null,a.w_bits=s,a.w_size=1<De(e)||2!==e.state.wrap?Z:(e.state.gzhead=t,J),ke=(e,t)=>{if(De(e)||t>X||t<0)return e?de(e,Z):Z;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ue&&t!==K)return de(e,0===e.avail_out?$:Z);const s=i.last_flush;if(i.last_flush=t,0!==i.pending){if(_e(e),0===e.avail_out)return i.last_flush=-1,J}else if(0===e.avail_in&&pe(t)<=pe(s)&&t!==K)return de(e,$);if(i.status===ue&&0!==e.avail_in)return de(e,$);if(i.status===he&&0===i.wrap&&(i.status=ce),i.status===he){let t=ae+(i.w_bits-8<<4)<<8,s=-1;if(s=i.strategy>=ie||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=s<<6,0!==i.strstart&&(t|=32),t+=31-t%31,ye(i,t),0!==i.strstart&&(ye(i,e.adler>>>16),ye(i,65535&e.adler)),e.adler=1,i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(57===i.status)if(e.adler=0,be(i,31),be(i,139),be(i,8),i.gzhead)be(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),be(i,255&i.gzhead.time),be(i,i.gzhead.time>>8&255),be(i,i.gzhead.time>>16&255),be(i,i.gzhead.time>>24&255),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(be(i,255&i.gzhead.extra.length),be(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=U(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(be(i,0),be(i,0),be(i,0),be(i,0),be(i,0),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,3),i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J;if(69===i.status){if(i.gzhead.extra){let t=i.pending,s=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+s>i.pending_buf_size;){let r=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=r,_e(e),0!==i.pending)return i.last_flush=-1,J;t=0,s-=r}let r=new Uint8Array(i.gzhead.extra);i.pending_buf.set(r.subarray(i.gzindex,i.gzindex+s),i.pending),i.pending+=s,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindexs&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindexs&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(_e(e),0!==i.pending))return i.last_flush=-1,J;be(i,255&e.adler),be(i,e.adler>>8&255),e.adler=0}if(i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(0!==e.avail_in||0!==i.lookahead||t!==G&&i.status!==ue){let s=0===i.level?Pe(i,t):i.strategy===ie?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(we(e),0===e.lookahead)){if(t===G)return 1;break}if(e.match_length=0,i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===se?((e,t)=>{let i,s,r,o;const n=e.window;for(;;){if(e.lookahead<=le){if(we(e),e.lookahead<=le&&t===G)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=e.strstart-1,s=n[r],s===n[++r]&&s===n[++r]&&s===n[++r])){o=e.strstart+le;do{}while(s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=H(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):Ee[i.level].func(i,t);if(3!==s&&4!==s||(i.status=ue),1===s||3===s)return 0===e.avail_out&&(i.last_flush=-1),J;if(2===s&&(t===z?j(i):t!==X&&(Q(i,0,0,!1),t===W&&(fe(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),_e(e),0===e.avail_out))return i.last_flush=-1,J}return t!==K?J:i.wrap<=0?Y:(2===i.wrap?(be(i,255&e.adler),be(i,e.adler>>8&255),be(i,e.adler>>16&255),be(i,e.adler>>24&255),be(i,255&e.total_in),be(i,e.total_in>>8&255),be(i,e.total_in>>16&255),be(i,e.total_in>>24&255)):(ye(i,e.adler>>>16),ye(i,65535&e.adler)),_e(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?J:Y)},Oe=e=>{if(De(e))return Z;const t=e.state.status;return e.state=null,t===ce?de(e,q):J},Ne=(e,t)=>{let i=t.length;if(De(e))return Z;const s=e.state,r=s.wrap;if(2===r||1===r&&s.status!==he||s.lookahead)return Z;if(1===r&&(e.adler=R(e.adler,t,i,0)),s.wrap=0,i>=s.w_size){0===r&&(fe(s.head),s.strstart=0,s.block_start=0,s.insert=0);let e=new Uint8Array(s.w_size);e.set(t.subarray(i-s.w_size,i),0),t=e,i=s.w_size}const o=e.avail_in,n=e.next_in,a=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,we(s);s.lookahead>=3;){let e=s.strstart,t=s.lookahead-2;do{s.ins_h=me(s,s.ins_h,s.window[e+3-1]),s.prev[e&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=e,e++}while(--t);s.strstart=e,s.lookahead=2,we(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,e.next_in=n,e.input=a,e.avail_in=o,s.wrap=r,J};const Qe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Ve=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Qe(i,t)&&(e[t]=i[t])}}return e},He=e=>{let t=0;for(let i=0,s=e.length;i=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ge[254]=Ge[254]=1;var ze=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,s,r,o,n=e.length,a=0;for(r=0;r>>6,t[o++]=128|63&i):i<65536?(t[o++]=224|i>>>12,t[o++]=128|i>>>6&63,t[o++]=128|63&i):(t[o++]=240|i>>>18,t[o++]=128|i>>>12&63,t[o++]=128|i>>>6&63,t[o++]=128|63&i);return t},We=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let s,r;const o=new Array(2*i);for(r=0,s=0;s4)o[r++]=65533,s+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&s1?o[r++]=65533:t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&je)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let s=0;s{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Ge[e[i]]>t?i:t},Xe=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Je=Object.prototype.toString,{Z_NO_FLUSH:Ye,Z_SYNC_FLUSH:Ze,Z_FULL_FLUSH:qe,Z_FINISH:$e,Z_OK:et,Z_STREAM_END:tt,Z_DEFAULT_COMPRESSION:it,Z_DEFAULT_STRATEGY:st,Z_DEFLATED:rt}=O;function ot(e){this.options=Ve({level:it,method:rt,chunkSize:16384,windowBits:15,memLevel:8,strategy:st},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Le(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==et)throw new Error(k[i]);if(t.header&&Ue(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ze(t.dictionary):"[object ArrayBuffer]"===Je.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ne(this.strm,e),i!==et)throw new Error(k[i]);this._dict_set=!0}}function nt(e,t){const i=new ot(t);if(i.push(e,!0),i.err)throw i.msg||k[i.err];return i.result}ot.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize;let r,o;if(this.ended)return!1;for(o=t===~~t?t:!0===t?$e:Ye,"string"==typeof e?i.input=ze(e):"[object ArrayBuffer]"===Je.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),(o===Ze||o===qe)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(r=ke(i,o),r===tt)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=Oe(this.strm),this.onEnd(r),this.ended=!0,r===et;if(0!==i.avail_out){if(o>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ot.prototype.onData=function(e){this.chunks.push(e)},ot.prototype.onEnd=function(e){e===et&&(this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var at={Deflate:ot,deflate:nt,deflateRaw:function(e,t){return(t=t||{}).raw=!0,nt(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,nt(e,t)},constants:O};const lt=16209;var At=function(e,t){let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,x,B,w,P;const C=e.state;i=e.next_in,w=e.input,s=i+(e.avail_in-5),r=e.next_out,P=e.output,o=r-(t-e.avail_out),n=r+(e.avail_out-257),a=C.dmax,l=C.wsize,A=C.whave,h=C.wnext,c=C.window,u=C.hold,d=C.bits,p=C.lencode,f=C.distcode,g=(1<>>24,u>>>=v,d-=v,v=_>>>16&255,0===v)P[r++]=65535&_;else{if(!(16&v)){if(0==(64&v)){_=p[(65535&_)+(u&(1<>>=v,d-=v),d<15&&(u+=w[i++]<>>24,u>>>=v,d-=v,v=_>>>16&255,!(16&v)){if(0==(64&v)){_=f[(65535&_)+(u&(1<a){e.msg="invalid distance too far back",C.mode=lt;break e}if(u>>>=v,d-=v,v=r-o,y>v){if(v=y-v,v>A&&C.sane){e.msg="invalid distance too far back",C.mode=lt;break e}if(x=0,B=c,0===h){if(x+=l-v,v2;)P[r++]=B[x++],P[r++]=B[x++],P[r++]=B[x++],b-=3;b&&(P[r++]=B[x++],b>1&&(P[r++]=B[x++]))}else{x=r-y;do{P[r++]=P[x++],P[r++]=P[x++],P[r++]=P[x++],b-=3}while(b>2);b&&(P[r++]=P[x++],b>1&&(P[r++]=P[x++]))}break}}break}}while(i>3,i-=b,d-=b<<3,u&=(1<{const l=a.bits;let A,h,c,u,d,p,f=0,g=0,m=0,_=0,v=0,b=0,y=0,x=0,B=0,w=0,P=null;const C=new Uint16Array(16),M=new Uint16Array(16);let F,E,I,D=null;for(f=0;f<=15;f++)C[f]=0;for(g=0;g=1&&0===C[_];_--);if(v>_&&(v=_),0===_)return r[o++]=20971520,r[o++]=20971520,a.bits=1,0;for(m=1;m<_&&0===C[m];m++);for(v0&&(0===e||1!==_))return-1;for(M[1]=0,f=1;f<15;f++)M[f+1]=M[f]+C[f];for(g=0;g852||2===e&&B>592)return 1;for(;;){F=f-y,n[g]+1=p?(E=D[n[g]-p],I=P[n[g]-p]):(E=96,I=0),A=1<>y)+h]=F<<24|E<<16|I|0}while(0!==h);for(A=1<>=1;if(0!==A?(w&=A-1,w+=A):w=0,g++,0==--C[f]){if(f===_)break;f=t[i+n[g]]}if(f>v&&(w&u)!==c){for(0===y&&(y=v),d+=m,b=f-y,x=1<852||2===e&&B>592)return 1;c=w&u,r[c]=v<<24|b<<16|d-o|0}}return 0!==w&&(r[d+w]=f-y<<24|64<<16|0),a.bits=v,0};const{Z_FINISH:ft,Z_BLOCK:gt,Z_TREES:mt,Z_OK:_t,Z_STREAM_END:vt,Z_NEED_DICT:bt,Z_STREAM_ERROR:yt,Z_DATA_ERROR:xt,Z_MEM_ERROR:Bt,Z_BUF_ERROR:wt,Z_DEFLATED:Pt}=O,Ct=16180,Mt=16190,Ft=16191,Et=16192,It=16194,Dt=16199,St=16200,Tt=16206,Rt=16209,Lt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const kt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},Ot=e=>{if(kt(e))return yt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ct,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,_t},Nt=e=>{if(kt(e))return yt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Ot(e)},Qt=(e,t)=>{let i;if(kt(e))return yt;const s=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?yt:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,Nt(e))},Vt=(e,t)=>{if(!e)return yt;const i=new Ut;e.state=i,i.strm=e,i.window=null,i.mode=Ct;const s=Qt(e,t);return s!==_t&&(e.state=null),s};let Ht,jt,Gt=!0;const zt=e=>{if(Gt){Ht=new Int32Array(512),jt=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(pt(1,e.lens,0,288,Ht,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;pt(2,e.lens,0,32,jt,0,e.work,{bits:5}),Gt=!1}e.lencode=Ht,e.lenbits=9,e.distcode=jt,e.distbits=5},Wt=(e,t,i,s)=>{let r;const o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(i-o.wsize,i),0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>s&&(r=s),o.window.set(t.subarray(i-s,i-s+r),o.wnext),(s-=r)?(o.window.set(t.subarray(i-s,i),0),o.wnext=s,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave{let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,x,B,w=0;const P=new Uint8Array(4);let C,M;const F=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(kt(e)||!e.output||!e.input&&0!==e.avail_in)return yt;i=e.state,i.mode===Ft&&(i.mode=Et),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,c=a,u=l,B=_t;e:for(;;)switch(i.mode){case Ct:if(0===i.wrap){i.mode=Et;break}for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>>8&255,i.check=U(i.check,P,2,0),A=0,h=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&A)<<8)+(A>>8))%31){e.msg="incorrect header check",i.mode=Rt;break}if((15&A)!==Pt){e.msg="unknown compression method",i.mode=Rt;break}if(A>>>=4,h-=4,x=8+(15&A),0===i.wbits&&(i.wbits=x),x>15||x>i.wbits){e.msg="invalid window size",i.mode=Rt;break}i.dmax=1<>8&1),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16182;case 16182:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<>>8&255,P[2]=A>>>16&255,P[3]=A>>>24&255,i.check=U(i.check,P,4,0)),A=0,h=0,i.mode=16183;case 16183:for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>8),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16184;case 16184:if(1024&i.flags){for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(d=i.length,d>a&&(d=a),d&&(i.head&&(x=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(o,o+d),x)),512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,i.length-=d),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===a)break e;d=0;do{x=s[o+d++],i.head&&x&&i.length<65536&&(i.head.name+=String.fromCharCode(x))}while(x&&d>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Ft;break;case 16189:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<>>=7&h,h-=7&h,i.mode=Tt;break}for(;h<3;){if(0===a)break e;a--,A+=s[o++]<>>=1,h-=1,3&A){case 0:i.mode=16193;break;case 1:if(zt(i),i.mode=Dt,t===mt){A>>>=2,h-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Rt}A>>>=2,h-=2;break;case 16193:for(A>>>=7&h,h-=7&h;h<32;){if(0===a)break e;a--,A+=s[o++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=Rt;break}if(i.length=65535&A,A=0,h=0,i.mode=It,t===mt)break e;case It:i.mode=16195;case 16195:if(d=i.length,d){if(d>a&&(d=a),d>l&&(d=l),0===d)break e;r.set(s.subarray(o,o+d),n),a-=d,o+=d,l-=d,n+=d,i.length-=d;break}i.mode=Ft;break;case 16196:for(;h<14;){if(0===a)break e;a--,A+=s[o++]<>>=5,h-=5,i.ndist=1+(31&A),A>>>=5,h-=5,i.ncode=4+(15&A),A>>>=4,h-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Rt;break}i.have=0,i.mode=16197;case 16197:for(;i.have>>=3,h-=3}for(;i.have<19;)i.lens[F[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,C={bits:i.lenbits},B=pt(0,i.lens,0,19,i.lencode,0,i.work,C),i.lenbits=C.bits,B){e.msg="invalid code lengths set",i.mode=Rt;break}i.have=0,i.mode=16198;case 16198:for(;i.have>>24,m=w>>>16&255,_=65535&w,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=g,h-=g,i.lens[i.have++]=_;else{if(16===_){for(M=g+2;h>>=g,h-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=Rt;break}x=i.lens[i.have-1],d=3+(3&A),A>>>=2,h-=2}else if(17===_){for(M=g+3;h>>=g,h-=g,x=0,d=3+(7&A),A>>>=3,h-=3}else{for(M=g+7;h>>=g,h-=g,x=0,d=11+(127&A),A>>>=7,h-=7}if(i.have+d>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Rt;break}for(;d--;)i.lens[i.have++]=x}}if(i.mode===Rt)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Rt;break}if(i.lenbits=9,C={bits:i.lenbits},B=pt(1,i.lens,0,i.nlen,i.lencode,0,i.work,C),i.lenbits=C.bits,B){e.msg="invalid literal/lengths set",i.mode=Rt;break}if(i.distbits=6,i.distcode=i.distdyn,C={bits:i.distbits},B=pt(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,C),i.distbits=C.bits,B){e.msg="invalid distances set",i.mode=Rt;break}if(i.mode=Dt,t===mt)break e;case Dt:i.mode=St;case St:if(a>=6&&l>=258){e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,At(e,u),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,i.mode===Ft&&(i.back=-1);break}for(i.back=0;w=i.lencode[A&(1<>>24,m=w>>>16&255,_=65535&w,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>v)],g=w>>>24,m=w>>>16&255,_=65535&w,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,i.length=_,0===m){i.mode=16205;break}if(32&m){i.back=-1,i.mode=Ft;break}if(64&m){e.msg="invalid literal/length code",i.mode=Rt;break}i.extra=15&m,i.mode=16201;case 16201:if(i.extra){for(M=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;w=i.distcode[A&(1<>>24,m=w>>>16&255,_=65535&w,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>v)],g=w>>>24,m=w>>>16&255,_=65535&w,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,64&m){e.msg="invalid distance code",i.mode=Rt;break}i.offset=_,i.extra=15&m,i.mode=16203;case 16203:if(i.extra){for(M=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Rt;break}i.mode=16204;case 16204:if(0===l)break e;if(d=u-l,i.offset>d){if(d=i.offset-d,d>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Rt;break}d>i.wnext?(d-=i.wnext,p=i.wsize-d):p=i.wnext-d,d>i.length&&(d=i.length),f=i.window}else f=r,p=n-i.offset,d=i.length;d>l&&(d=l),l-=d,i.length-=d;do{r[n++]=f[p++]}while(--d);0===i.length&&(i.mode=St);break;case 16205:if(0===l)break e;r[n++]=i.length,l--,i.mode=St;break;case Tt:if(i.wrap){for(;h<32;){if(0===a)break e;a--,A|=s[o++]<{if(kt(e))return yt;let t=e.state;return t.window&&(t.window=null),e.state=null,_t},Zt=(e,t)=>{if(kt(e))return yt;const i=e.state;return 0==(2&i.wrap)?yt:(i.head=t,t.done=!1,_t)},qt=(e,t)=>{const i=t.length;let s,r,o;return kt(e)?yt:(s=e.state,0!==s.wrap&&s.mode!==Mt?yt:s.mode===Mt&&(r=1,r=R(r,t,i,0),r!==s.check)?xt:(o=Wt(e,t,i,i),o?(s.mode=16210,Bt):(s.havedict=1,_t)))},$t=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const ei=Object.prototype.toString,{Z_NO_FLUSH:ti,Z_FINISH:ii,Z_OK:si,Z_STREAM_END:ri,Z_NEED_DICT:oi,Z_STREAM_ERROR:ni,Z_DATA_ERROR:ai,Z_MEM_ERROR:li}=O;function Ai(e){this.options=Ve({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Xt(this.strm,t.windowBits);if(i!==si)throw new Error(k[i]);if(this.header=new $t,Zt(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ze(t.dictionary):"[object ArrayBuffer]"===ei.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=qt(this.strm,t.dictionary),i!==si)))throw new Error(k[i])}function hi(e,t){const i=new Ai(t);if(i.push(e),i.err)throw i.msg||k[i.err];return i.result}Ai.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize,r=this.options.dictionary;let o,n,a;if(this.ended)return!1;for(n=t===~~t?t:!0===t?ii:ti,"[object ArrayBuffer]"===ei.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),o=Jt(i,n),o===oi&&r&&(o=qt(i,r),o===si?o=Jt(i,n):o===ai&&(o=oi));i.avail_in>0&&o===ri&&i.state.wrap>0&&0!==e[i.next_in];)Kt(i),o=Jt(i,n);switch(o){case ni:case ai:case oi:case li:return this.onEnd(o),this.ended=!0,!1}if(a=i.avail_out,i.next_out&&(0===i.avail_out||o===ri))if("string"===this.options.to){let e=Ke(i.output,i.next_out),t=i.next_out-e,r=We(i.output,e);i.next_out=t,i.avail_out=s-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(r)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(o!==si||0!==a){if(o===ri)return o=Yt(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},Ai.prototype.onData=function(e){this.chunks.push(e)},Ai.prototype.onEnd=function(e){e===si&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ci={Inflate:Ai,inflate:hi,inflateRaw:function(e,t){return(t=t||{}).raw=!0,hi(e,t)},ungzip:hi,constants:O};const{Deflate:ui,deflate:di,deflateRaw:pi,gzip:fi}=at,{Inflate:gi,inflate:mi,inflateRaw:_i,ungzip:vi}=ci;var bi=ui,yi=di,xi=pi,Bi=fi,wi=gi,Pi=mi,Ci=_i,Mi=vi,Fi=O,Ei={Deflate:bi,deflate:yi,deflateRaw:xi,gzip:Bi,Inflate:wi,inflate:Pi,inflateRaw:Ci,ungzip:Mi,constants:Fi};e.Deflate=bi,e.Inflate=wi,e.constants=Fi,e.default=Ei,e.deflate=yi,e.deflateRaw=xi,e.gzip=Bi,e.inflate=Pi,e.inflateRaw=Ci,e.ungzip=Mi,Object.defineProperty(e,"__esModule",{value:!0})}));var vw=Object.freeze({__proto__:null});let bw=window.pako||vw;bw.inflate||(bw=bw.default);const yw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const xw={version:1,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11]}}(i),a=function(e){return{positions:new Uint16Array(bw.inflate(e.positions).buffer),normals:new Int8Array(bw.inflate(e.normals).buffer),indices:new Uint32Array(bw.inflate(e.indices).buffer),edgeIndices:new Uint32Array(bw.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(bw.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(bw.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(bw.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(bw.inflate(e.meshColors).buffer),entityIDs:bw.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(bw.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(bw.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(bw.inflate(e.positionsDecodeMatrix).buffer)}}(n);!function(e,t,i,s,r,o){o.getNextId(),s.positionsCompression="precompressed",s.normalsCompression="precompressed";const n=i.positions,a=i.normals,l=i.indices,A=i.edgeIndices,h=i.meshPositions,u=i.meshIndices,d=i.meshEdgesIndices,p=i.meshColors,f=JSON.parse(i.entityIDs),g=i.entityMeshes,m=i.entityIsObjects,v=h.length,b=g.length;for(let r=0;rg[e]g[t]?1:0));for(let e=0;e1||(F[i]=e)}}for(let e=0;e1,o=Iw(m.subarray(4*t,4*t+3)),u=m[4*t+3]/255,v=a.subarray(d[t],i?a.length:d[t+1]),y=l.subarray(d[t],i?l.length:d[t+1]),x=A.subarray(p[t],i?A.length:p[t+1]),w=h.subarray(f[t],i?h.length:f[t+1]),M=c.subarray(g[t],g[t]+16);if(r){const e=`${n}-geometry.${t}`;s.createGeometry({id:e,primitive:"triangles",positionsCompressed:v,normalsCompressed:y,indices:x,edgeIndices:w,positionsDecodeMatrix:M})}else{const e=`${n}-${t}`;b[F[t]];const i={};s.createMesh(_.apply(i,{id:e,primitive:"triangles",positionsCompressed:v,normalsCompressed:y,indices:x,edgeIndices:w,positionsDecodeMatrix:M,color:o,opacity:u}))}}let E=0;for(let e=0;e1){const t={},r=`${n}-instance.${E++}`,o=`${n}-geometry.${i}`,a=16*x[e],A=u.subarray(a,a+16);s.createMesh(_.apply(t,{id:r,geometryId:o,matrix:A})),l.push(r)}else l.push(i)}if(l.length>0){const e={};s.createEntity(_.apply(e,{id:r,isObject:!0,meshIds:l}))}}}(0,0,a,s,0,o)}};let Sw=window.pako||vw;Sw.inflate||(Sw=Sw.default);const Tw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const Rw={version:5,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i),a=function(e){return{positions:new Float32Array(Sw.inflate(e.positions).buffer),normals:new Int8Array(Sw.inflate(e.normals).buffer),indices:new Uint32Array(Sw.inflate(e.indices).buffer),edgeIndices:new Uint32Array(Sw.inflate(e.edgeIndices).buffer),matrices:new Float32Array(Sw.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(Sw.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(Sw.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(Sw.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(Sw.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(Sw.inflate(e.primitiveInstances).buffer),eachEntityId:Sw.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(Sw.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(Sw.inflate(e.eachEntityMatricesPortion).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="disabled",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColor,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),v=i.eachEntityPrimitiveInstancesPortion,b=i.eachEntityMatricesPortion,y=u.length,x=g.length,B=new Uint8Array(y),w=m.length;for(let e=0;e1||(P[i]=e)}}for(let e=0;e1,r=Tw(f.subarray(4*e,4*e+3)),o=f[4*e+3]/255,c=a.subarray(u[e],t?a.length:u[e+1]),g=l.subarray(u[e],t?l.length:u[e+1]),v=A.subarray(d[e],t?A.length:d[e+1]),b=h.subarray(p[e],t?h.length:p[e+1]);if(i){const t=`${n}-geometry.${e}`;s.createGeometry({id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:v,edgeIndices:b})}else{const t=e;m[P[e]];const i={};s.createMesh(_.apply(i,{id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:v,edgeIndices:b,color:r,opacity:o}))}}let C=0;for(let e=0;e1){const t={},r="instance."+C++,o="geometry"+i,n=16*b[e],l=c.subarray(n,n+16);s.createMesh(_.apply(t,{id:r,geometryId:o,matrix:l})),a.push(r)}else a.push(i)}if(a.length>0){const e={};s.createEntity(_.apply(e,{id:r,isObject:!0,meshIds:a}))}}}(0,0,a,s,0,o)}};let Lw=window.pako||vw;Lw.inflate||(Lw=Lw.default);const Uw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const kw={version:6,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:Lw.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:Lw.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,u=i.matrices,d=i.reusedPrimitivesDecodeMatrix,p=i.eachPrimitivePositionsAndNormalsPortion,f=i.eachPrimitiveIndicesPortion,g=i.eachPrimitiveEdgeIndicesPortion,m=i.eachPrimitiveColorAndOpacity,v=i.primitiveInstances,b=JSON.parse(i.eachEntityId),y=i.eachEntityPrimitiveInstancesPortion,x=i.eachEntityMatricesPortion,B=i.eachTileAABB,w=i.eachTileEntitiesPortion,P=p.length,C=v.length,M=b.length,F=w.length,E=new Uint32Array(P);for(let e=0;e1,c=t===P-1,u=a.subarray(p[t],c?a.length:p[t+1]),b=l.subarray(p[t],c?l.length:p[t+1]),y=A.subarray(f[t],c?A.length:f[t+1]),x=h.subarray(g[t],c?h.length:g[t+1]),B=Uw(m.subarray(4*t,4*t+3)),w=m[4*t+3]/255,C=o.getNextId();if(r){const e=`${n}-geometry.${i}.${t}`;U[e]||(s.createGeometry({id:e,primitive:"triangles",positionsCompressed:u,indices:y,edgeIndices:x,positionsDecodeMatrix:d}),U[e]=!0),s.createMesh(_.apply(N,{id:C,geometryId:e,origin:I,matrix:F,color:B,opacity:w})),R.push(C)}else s.createMesh(_.apply(N,{id:C,origin:I,primitive:"triangles",positionsCompressed:u,normalsCompressed:b,indices:y,edgeIndices:x,positionsDecodeMatrix:L,color:B,opacity:w})),R.push(C)}R.length>0&&s.createEntity(_.apply(O,{id:w,isObject:!0,meshIds:R}))}}}(e,t,a,s,0,o)}};let Ow=window.pako||vw;Ow.inflate||(Ow=Ow.default);const Nw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function Qw(e){const t=[];for(let i=0,s=e.length;i1,c=t===E-1,P=Nw(w.subarray(6*e,6*e+3)),C=w[6*e+3]/255,M=w[6*e+4]/255,F=w[6*e+5]/255,I=o.getNextId();if(r){const r=B[e],o=d.slice(r,r+16),x=`${n}-geometry.${i}.${t}`;if(!Q[x]){let e,i,r,o,n,d;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],c?a.length:g[t+1]),r=l.subarray(m[t],c?l.length:m[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]),d=u.subarray(y[t],c?u.length:y[t+1]);break;case 1:e="surface",i=a.subarray(g[t],c?a.length:g[t+1]),r=l.subarray(m[t],c?l.length:m[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]),d=u.subarray(y[t],c?u.length:y[t+1]);break;case 2:e="points",i=a.subarray(g[t],c?a.length:g[t+1]),o=Qw(A.subarray(v[t],c?A.length:v[t+1]));break;case 3:e="lines",i=a.subarray(g[t],c?a.length:g[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]);break;default:continue}s.createGeometry({id:x,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:d,positionsDecodeMatrix:p}),Q[x]=!0}s.createMesh(_.apply(V,{id:I,geometryId:x,origin:R,matrix:o,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}else{let e,i,r,o,n,d;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],c?a.length:g[t+1]),r=l.subarray(m[t],c?l.length:m[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]),d=u.subarray(y[t],c?u.length:y[t+1]);break;case 1:e="surface",i=a.subarray(g[t],c?a.length:g[t+1]),r=l.subarray(m[t],c?l.length:m[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]),d=u.subarray(y[t],c?u.length:y[t+1]);break;case 2:e="points",i=a.subarray(g[t],c?a.length:g[t+1]),o=Qw(A.subarray(v[t],c?A.length:v[t+1]));break;case 3:e="lines",i=a.subarray(g[t],c?a.length:g[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]);break;default:continue}s.createMesh(_.apply(V,{id:I,origin:R,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:d,positionsDecodeMatrix:N,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}}U.length>0&&s.createEntity(_.apply(O,{id:F,isObject:!0,meshIds:U}))}}}(e,t,a,s,0,o)}};let Hw=window.pako||vw;Hw.inflate||(Hw=Hw.default);const jw=c.vec4(),Gw=c.vec4();const zw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function Ww(e){const t=[];for(let i=0,s=e.length;i1,l=r===L-1,A=zw(E.subarray(6*e,6*e+3)),h=E[6*e+3]/255,u=E[6*e+4]/255,I=E[6*e+5]/255,D=o.getNextId();if(a){const o=F[e],a=v.slice(o,o+16),M=`${n}-geometry.${i}.${r}`;let E=H[M];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(y[r]){case 0:E.primitiveName="solid",E.geometryPositions=d.subarray(x[r],l?d.length:x[r+1]),E.geometryNormals=p.subarray(B[r],l?p.length:B[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=d.subarray(x[r],l?d.length:x[r+1]),E.geometryNormals=p.subarray(B[r],l?p.length:B[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=d.subarray(x[r],l?d.length:x[r+1]),E.geometryColors=Ww(f.subarray(w[r],l?f.length:w[r+1])),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=d.subarray(x[r],l?d.length:x[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i0&&n.length>0;break;case 1:e="surface",t=d.subarray(x[r],l?d.length:x[r+1]),i=p.subarray(B[r],l?p.length:B[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),a=m.subarray(C[r],l?m.length:C[r+1]),c=t.length>0&&n.length>0;break;case 2:e="points",t=d.subarray(x[r],l?d.length:x[r+1]),o=Ww(f.subarray(w[r],l?f.length:w[r+1])),c=t.length>0;break;case 3:e="lines",t=d.subarray(x[r],l?d.length:x[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),c=t.length>0&&n.length>0;break;default:continue}c&&(s.createMesh(_.apply(G,{id:D,origin:Q,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:R,color:A,metallic:u,roughness:I,opacity:h})),T.push(D))}}T.length>0&&s.createEntity(_.apply(j,{id:A,isObject:!0,meshIds:T}))}}}(e,t,a,s,r,o)}};let Xw=window.pako||vw;Xw.inflate||(Xw=Xw.default);const Jw=c.vec4(),Yw=c.vec4();const Zw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const qw={version:9,parse:function(e,t,i,s,r,o){const n=function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:Xw.inflate(e,t).buffer}return{metadata:JSON.parse(Xw.inflate(e.metadata,{to:"string"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(Xw.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.metadata,l=i.positions,A=i.normals,h=i.colors,u=i.indices,d=i.edgeIndices,p=i.matrices,f=i.reusedGeometriesDecodeMatrix,g=i.eachGeometryPrimitiveType,m=i.eachGeometryPositionsPortion,v=i.eachGeometryNormalsPortion,b=i.eachGeometryColorsPortion,y=i.eachGeometryIndicesPortion,x=i.eachGeometryEdgeIndicesPortion,B=i.eachMeshGeometriesPortion,w=i.eachMeshMatricesPortion,P=i.eachMeshMaterial,C=i.eachEntityId,M=i.eachEntityMeshesPortion,F=i.eachTileAABB,E=i.eachTileEntitiesPortion,I=m.length,D=B.length,S=M.length,T=E.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});const R=new Uint32Array(I);for(let e=0;e1,C=r===I-1,M=Zw(P.subarray(6*e,6*e+3)),F=P[6*e+3]/255,E=P[6*e+4]/255,D=P[6*e+5]/255,S=o.getNextId();if(a){const o=w[e],a=p.slice(o,o+16),B=`${n}-geometry.${i}.${r}`;let P=k[B];if(!P){P={batchThisMesh:!t.reuseGeometries};let e=!1;switch(g[r]){case 0:P.primitiveName="solid",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(v[r],C?A.length:v[r+1]),P.geometryIndices=u.subarray(y[r],C?u.length:y[r+1]),P.geometryEdgeIndices=d.subarray(x[r],C?d.length:x[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 1:P.primitiveName="surface",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(v[r],C?A.length:v[r+1]),P.geometryIndices=u.subarray(y[r],C?u.length:y[r+1]),P.geometryEdgeIndices=d.subarray(x[r],C?d.length:x[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 2:P.primitiveName="points",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryColors=h.subarray(b[r],C?h.length:b[r+1]),e=P.geometryPositions.length>0;break;case 3:P.primitiveName="lines",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryIndices=u.subarray(y[r],C?u.length:y[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;default:continue}if(e||(P=null),P&&(P.geometryPositions.length,P.batchThisMesh)){P.decompressedPositions=new Float32Array(P.geometryPositions.length),P.transformedAndRecompressedPositions=new Uint16Array(P.geometryPositions.length);const e=P.geometryPositions,t=P.decompressedPositions;for(let i=0,s=e.length;i0&&n.length>0;break;case 1:e="surface",t=l.subarray(m[r],C?l.length:m[r+1]),i=A.subarray(v[r],C?A.length:v[r+1]),n=u.subarray(y[r],C?u.length:y[r+1]),a=d.subarray(x[r],C?d.length:x[r+1]),c=t.length>0&&n.length>0;break;case 2:e="points",t=l.subarray(m[r],C?l.length:m[r+1]),o=h.subarray(b[r],C?h.length:b[r+1]),c=t.length>0;break;case 3:e="lines",t=l.subarray(m[r],C?l.length:m[r+1]),n=u.subarray(y[r],C?u.length:y[r+1]),c=t.length>0&&n.length>0;break;default:continue}c&&(s.createMesh(_.apply(j,{id:S,origin:L,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:Q,color:M,metallic:E,roughness:D,opacity:F})),O.push(S))}}O.length>0&&s.createEntity(_.apply(H,{id:F,isObject:!0,meshIds:O}))}}}(e,t,a,s,r,o)}};let $w=window.pako||vw;$w.inflate||($w=$w.default);const eP=c.vec4(),tP=c.vec4();const iP=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function sP(e,t){const i=[];if(t.length>1)for(let e=0,s=t.length-1;e1)for(let t=0,s=e.length/3-1;t0,a=9*e,c=1===h[a+0],u=h[a+1];h[a+2],h[a+3];const d=h[a+4],p=h[a+5],f=h[a+6],g=h[a+7],m=h[a+8];if(o){const t=new Uint8Array(l.subarray(i,r)).buffer,o=`${n}-texture-${e}`;if(c)s.createTexture({id:o,buffers:[t],minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m});else{const e=new Blob([t],{type:10001===u?"image/jpeg":10002===u?"image/png":"image/gif"}),i=(window.URL||window.webkitURL).createObjectURL(e),r=document.createElement("img");r.src=i,s.createTexture({id:o,image:r,minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m})}}}for(let e=0;e=0?`${n}-texture-${r}`:null,normalsTextureId:a>=0?`${n}-texture-${a}`:null,metallicRoughnessTextureId:o>=0?`${n}-texture-${o}`:null,emissiveTextureId:l>=0?`${n}-texture-${l}`:null,occlusionTextureId:A>=0?`${n}-texture-${A}`:null})}const j=new Uint32Array(N);for(let e=0;e1,l=r===N-1,A=D[e],h=A>=0?`${n}-textureSet-${A}`:null,T=iP(S.subarray(6*e,6*e+3)),R=S[6*e+3]/255,L=S[6*e+4]/255,O=S[6*e+5]/255,Q=o.getNextId();if(a){const o=I[e],a=b.slice(o,o+16),A=`${n}-geometry.${i}.${r}`;let E=W[A];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(x[r]){case 0:E.primitiveName="solid",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=d.subarray(w[r],l?d.length:w[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=d.subarray(w[r],l?d.length:w[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryColors=p.subarray(P[r],l?p.length:P[r+1]),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 4:E.primitiveName="lines",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryIndices=sP(E.geometryPositions,g.subarray(M[r],l?g.length:M[r+1])),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length),E.transformedAndRecompressedPositions=new Uint16Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i0&&a.length>0;break;case 1:e="surface",t=u.subarray(B[r],l?u.length:B[r+1]),i=d.subarray(w[r],l?d.length:w[r+1]),o=f.subarray(C[r],l?f.length:C[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),A=m.subarray(F[r],l?m.length:F[r+1]),c=t.length>0&&a.length>0;break;case 2:e="points",t=u.subarray(B[r],l?u.length:B[r+1]),n=p.subarray(P[r],l?p.length:P[r+1]),c=t.length>0;break;case 3:e="lines",t=u.subarray(B[r],l?u.length:B[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),c=t.length>0&&a.length>0;break;case 4:e="lines",t=u.subarray(B[r],l?u.length:B[r+1]),a=sP(t,g.subarray(M[r],l?g.length:M[r+1])),c=t.length>0&&a.length>0;break;default:continue}c&&(s.createMesh(_.apply(H,{id:Q,textureSetId:h,origin:G,primitive:e,positionsCompressed:t,normalsCompressed:i,uv:o&&o.length>0?o:null,colorsCompressed:n,indices:a,edgeIndices:A,positionsDecodeMatrix:v,color:T,metallic:L,roughness:O,opacity:R})),U.push(Q))}}U.length>0&&s.createEntity(_.apply(Q,{id:l,isObject:!0,meshIds:U}))}}}(e,t,a,s,r,o)}},oP={};oP[xw.version]=xw,oP[Pw.version]=Pw,oP[Fw.version]=Fw,oP[Dw.version]=Dw,oP[Rw.version]=Rw,oP[kw.version]=kw,oP[Vw.version]=Vw,oP[Kw.version]=Kw,oP[qw.version]=qw,oP[rP.version]=rP;var nP={};!function(e){var t,i="File format is not recognized.",s="Error while reading zip file.",r="Error while reading file data.",o=524288,n="text/plain";try{t=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function a(){this.crc=-1}function l(){}function A(e,t){var i,s;return i=new ArrayBuffer(e),s=new Uint8Array(i),t&&s.set(t,0),{buffer:i,array:s,view:new DataView(i)}}function h(){}function c(e){var t,i=this;i.size=0,i.init=function(s,r){var o=new Blob([e],{type:n});(t=new d(o)).init((function(){i.size=t.size,s()}),r)},i.readUint8Array=function(e,i,s,r){t.readUint8Array(e,i,s,r)}}function u(t){var i,s=this;s.size=0,s.init=function(e){for(var r=t.length;"="==t.charAt(r-1);)r--;i=t.indexOf(",")+1,s.size=Math.floor(.75*(r-i)),e()},s.readUint8Array=function(s,r,o){var n,a=A(r),l=4*Math.floor(s/3),h=4*Math.ceil((s+r)/3),c=e.atob(t.substring(l+i,h+i)),u=s-3*Math.floor(l/4);for(n=u;ne.size)throw new RangeError("offset:"+t+", length:"+i+", size:"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function p(){}function f(e){var i,s=this;s.init=function(e){i=new Blob([],{type:n}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:n}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function g(t){var i=this,s="",r="";i.init=function(e){s+="data:"+(t||"")+";base64,",e()},i.writeUint8Array=function(t,i){var o,n=r.length,a=r;for(r="",o=0;o<3*Math.floor((n+t.length)/3)-n;o++)a+=String.fromCharCode(t[o]);for(;o2?s+=e.btoa(a):r=a,i()},i.getData=function(t){t(s+e.btoa(r))}}function m(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function _(e,t,i,s,r,n,a,l,A,h){var c,u,d,p=0,f=t.sn;function g(){e.removeEventListener("message",m,!1),l(u,d)}function m(t){var i=t.data,r=i.data,o=i.error;if(o)return o.toString=function(){return"Error: "+this.message},void A(o);if(i.sn===f)switch("number"==typeof i.codecTime&&(e.codecTime+=i.codecTime),"number"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case"append":r?(u+=r.length,s.writeUint8Array(r,(function(){_()}),h)):_();break;case"flush":d=i.crc,r?(u+=r.length,s.writeUint8Array(r,(function(){g()}),h)):g();break;case"progress":a&&a(c+i.loaded,n);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",i)}}function _(){(c=p*o)<=n?i.readUint8Array(r+c,Math.min(o,n-c),(function(i){a&&a(c,n);var s=0===c?t:{sn:f};s.type="append",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}p++}),A):e.postMessage({sn:f,type:"flush"})}u=0,e.addEventListener("message",m,!1),_()}function v(e,t,i,s,r,n,l,A,h,c){var u,d=0,p=0,f="input"===n,g="output"===n,m=new a;!function n(){var a;if((u=d*o)127?r[i-128]:String.fromCharCode(i);return s}function x(e){return decodeURIComponent(escape(e))}function B(e){var t,i="";for(t=0;t>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function P(t,o,n){var a=0;function l(){}l.prototype.getData=function(s,o,l,h){var c=this;function u(e,t){h&&!function(e){var t=A(4);return t.view.setUint32(0,e),c.crc32==t.view.getUint32(0)}(t)?n("CRC failed."):s.getData((function(e){o(e)}))}function d(e){n(e||r)}function p(e){n(e||"Error while writing file data.")}t.readUint8Array(c.offset,30,(function(r){var o,f=A(r.length,r);1347093252==f.view.getUint32(0)?(w(c,f,4,!1,n),o=c.offset+30+c.filenameLength+c.extraFieldLength,s.init((function(){0===c.compressionMethod?b(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p):function(t,i,s,r,o,n,a,l,A,h,c){var u=a?"output":"none";e.zip.useWebWorkers?_(t,{sn:i,codecClass:"Inflater",crcType:u},s,r,o,n,A,l,h,c):v(new e.zip.Inflater,s,r,o,n,u,A,l,h,c)}(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p)}),p)):n(i)}),d)};var h={getEntries:function(e){var r=this._worker;!function(e){t.size<22?n(i):r(22,(function(){r(Math.min(65558,t.size),(function(){n(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){n(s)}))}}((function(o){var a,h;a=o.getUint32(16,!0),h=o.getUint16(8,!0),a<0||a>=t.size?n(i):t.readUint8Array(a,t.size-a,(function(t){var s,o,a,c,u=0,d=[],p=A(t.length,t);for(s=0;s>>8^i[255&(t^e[s])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},c.prototype=new h,c.prototype.constructor=c,u.prototype=new h,u.prototype.constructor=u,d.prototype=new h,d.prototype.constructor=d,p.prototype.getData=function(e){e(this.data)},f.prototype=new p,f.prototype.constructor=f,g.prototype=new p,g.prototype.constructor=g,m.prototype=new p,m.prototype.constructor=m;var E={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function I(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error("zip.workerScripts."+t+" is not an array!"));r=function(e){var t=document.createElement("a");return e.map((function(e){return t.href=e,t.href}))}(r)}else(r=E[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+r[0];var o=new Worker(r[0]);o.codecTime=o.crcTime=0,o.postMessage({type:"importScripts",scripts:r.slice(1)}),o.addEventListener("message",(function e(t){var r=t.data;if(r.error)return o.terminate(),void s(r.error);"importScripts"===r.type&&(o.removeEventListener("message",e),o.removeEventListener("error",n),i(o))})),o.addEventListener("error",n)}else s(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function n(e){o.terminate(),s(e)}}function D(e){console.error(e)}e.zip={Reader:h,Writer:p,BlobReader:d,Data64URIReader:u,TextReader:c,BlobWriter:m,Data64URIWriter:g,TextWriter:f,createReader:function(e,t,i){i=i||D,e.init((function(){P(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||D,s=!!s,e.init((function(){F(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(nP);const aP=nP.zip;!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function o(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener("load",(function(){t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener("error",s,!1),r.open("GET",e),r.responseType="arraybuffer",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement("a");return t.href=e,"http:"===t.protocol||"https:"===t.protocol}(e)){var o=new XMLHttpRequest;o.addEventListener("load",(function(){t.size=Number(o.getResponseHeader("Content-Length")),t.size?s():i(s,r)}),!1),o.addEventListener("error",r,!1),o.open("HEAD",e),o.send()}else i(s,r)},t.readUint8Array=function(e,s,r,o){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),o)}}function n(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener("load",(function(){t.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?i():s("HTTP Range not supported.")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="arraybuffer",o.setRequestHeader("Range","bytes="+t+"-"+(t+i-1)),o.addEventListener("load",(function(){s(o.response)}),!1),o.addEventListener("error",r,!1),o.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function a(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function A(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,o){var n=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=o,s.write(n)},r.getData=function(t){e.file(t)}}o.prototype=new s,o.prototype.constructor=o,n.prototype=new s,n.prototype.constructor=n,a.prototype=new s,a.prototype.constructor=a,l.prototype=new r,l.prototype.constructor=l,A.prototype=new r,A.prototype.constructor=A,e.FileWriter=A,e.HttpReader=o,e.HttpRangeReader=n,e.ArrayBufferReader=a,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,o){if(i.directory)return o?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw"Parent entry is not a directory."}(this,i,{data:s,Reader:r?n:o})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new n(e):new o(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(aP);const lP=["4.2"];class AP{constructor(e,t={}){this.supportedSchemas=lP,this._xrayOpacity=.7,this._src=null,this._options=t,this.viewpoint=null,t.workerScriptsPath?(aP.workerScriptsPath=t.workerScriptsPath,this.src=t.src,this.xrayOpacity=.7,this.displayEffect=t.displayEffect,this.createMetaModel=t.createMetaModel):e.error("Config expected: workerScriptsPath")}load(e,t,i,s,r,o){switch(s.materialType){case"MetallicMaterial":t._defaultMaterial=new ds(t,{baseColor:[1,1,1],metallic:.6,roughness:.6});break;case"SpecularMaterial":t._defaultMaterial=new gs(t,{diffuse:[1,1,1],specular:c.vec3([1,1,1]),glossiness:.5});break;default:t._defaultMaterial=new Ht(t,{reflectivity:.75,shiness:100,diffuse:[1,1,1]})}t._wireframeMaterial=new hs(t,{color:[0,0,0],lineWidth:2});var n=t.scene.canvas.spinner;n.processes++,hP(e,t,i,s,(function(){n.processes--,r&&r(),t.fire("loaded",!0,!1)}),(function(e){n.processes--,t.error(e),o&&o(e),t.fire("error",e)}),(function(e){console.log("Error, Will Robinson: "+e)}))}}var hP=function(e,t,i,s,r,o){!function(e,t,i){var s=new _P;s.load(e,(function(){t(s)}),(function(e){i("Error loading ZIP archive: "+e)}))}(i,(function(i){cP(e,i,s,t,r,o)}),o)},cP=function(){return function(t,i,s,r,o){var n={plugin:t,zip:i,edgeThreshold:30,materialType:s.materialType,scene:r.scene,modelNode:r,info:{references:{}},materials:{}};s.createMetaModel&&(n.metaModelData={modelId:r.id,metaObjects:[{name:r.id,type:"Default",id:r.id}]}),r.scene.loading++,function(t,i){t.zip.getFile("Manifest.xml",(function(s,r){for(var o=r.children,n=0,a=o.length;n0){for(var n=o.trim().split(" "),a=new Int16Array(n.length),l=0,A=0,h=n.length;A0){i.primitive="triangles";for(var o=[],n=0,a=r.length;n=t.length)i();else{var a=t[o].id,l=a.lastIndexOf(":");l>0&&(a=a.substring(l+1));var A=a.lastIndexOf("#");A>0&&(a=a.substring(0,A)),s[a]?r(o+1):function(e,t,i){e.zip.getFile(t,(function(t,s){!function(e,t,i){for(var s,r=t.children,o=0,n=r.length;o0)for(var s=0,r=t.length;s{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n{let t=0,i=0,s=0;const r=new DataView(e),o=new Uint8Array(6e3),n=({item:s,format:o,size:n})=>{let a,l;switch(o){case"char":return l=new Uint8Array(e,t,n),t+=n,a=MP(l),[s,a];case"uShort":return a=r.getUint16(t,!0),t+=n,[s,a];case"uLong":return a=r.getUint32(t,!0),"NumberOfVariableLengthRecords"===s&&(i=a),t+=n,[s,a];case"uChar":return a=r.getUint8(t),t+=n,[s,a];case"double":return a=r.getFloat64(t,!0),t+=n,[s,a];default:t+=n}};return(()=>{const e={};BP.forEach((t=>{const i=n({...t});if(void 0!==i){if("FileSignature"===i[0]&&"LASF"!==i[1])throw new Error("Ivalid FileSignature. Is this a LAS/LAZ file");e[i[0]]=i[1]}}));const r=[];let a=i;for(;a--;){const e={};wP.forEach((i=>{const r=n({...i});e[r[0]]=r[1],"UserId"===r[0]&&"LASF_Projection"===r[1]&&(s=t-18+54)})),r.push(e)}const l=(e=>{if(void 0===e)return;const t=s+e.RecordLengthAfterHeader,i=o.slice(s,t),r=CP(i),n=new DataView(r);let a=6,l=Number(n.getUint16(a,!0));const A=[];for(;l--;){const e={};e.key=n.getUint16(a+=2,!0),e.tiffTagLocation=n.getUint16(a+=2,!0),e.count=n.getUint16(a+=2,!0),e.valueOffset=n.getUint16(a+=2,!0),A.push(e)}const h=A.find((e=>3072===e.key));if(h&&h.hasOwnProperty("valueOffset"))return h.valueOffset})(r.find((e=>"LASF_Projection"===e.UserId)));return l&&(e.epsg=l),e})()},CP=e=>{let t=new ArrayBuffer(e.length),i=new Uint8Array(t);for(let t=0;t{let t="";return e.forEach((e=>{let i=String.fromCharCode(e);"\0"!==i&&(t+=i)})),t.trim()};function FP(e,t){if(t>=e.length)return e;let i=[];for(let s=0;s{t(e)}),(function(e){i(e)}))}}function IP(e,t,i){i=i||2;var s,r,o,n,a,l,A,h=t&&t.length,c=h?t[0]*i:e.length,u=DP(e,0,c,i,!0),d=[];if(!u||u.next===u.prev)return d;if(h&&(u=function(e,t,i,s){var r,o,n,a=[];for(r=0,o=t.length;r80*i){s=o=e[0],r=n=e[1];for(var p=i;po&&(o=a),l>n&&(n=l);A=0!==(A=Math.max(o-s,n-r))?1/A:0}return TP(u,d,i,s,r,A),d}function DP(e,t,i,s,r){var o,n;if(r===tC(e,t,i,s)>0)for(o=t;o=t;o-=s)n=qP(o,e[o],e[o+1],n);return n&&WP(n,n.next)&&($P(n),n=n.next),n}function SP(e,t){if(!e)return e;t||(t=e);var i,s=e;do{if(i=!1,s.steiner||!WP(s,s.next)&&0!==zP(s.prev,s,s.next))s=s.next;else{if($P(s),(s=t=s.prev)===s.next)break;i=!0}}while(i||s!==t);return t}function TP(e,t,i,s,r,o,n){if(e){!n&&o&&function(e,t,i,s){var r=e;do{null===r.z&&(r.z=VP(r.x,r.y,t,i,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,i,s,r,o,n,a,l,A=1;do{for(i=e,e=null,o=null,n=0;i;){for(n++,s=i,a=0,t=0;t0||l>0&&s;)0!==a&&(0===l||!s||i.z<=s.z)?(r=i,i=i.nextZ,a--):(r=s,s=s.nextZ,l--),o?o.nextZ=r:e=r,r.prevZ=o,o=r;i=s}o.nextZ=null,A*=2}while(n>1)}(r)}(e,s,r,o);for(var a,l,A=e;e.prev!==e.next;)if(a=e.prev,l=e.next,o?LP(e,s,r,o):RP(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),$P(e),e=l.next,A=l.next;else if((e=l)===A){n?1===n?TP(e=UP(SP(e),t,i),t,i,s,r,o,2):2===n&&kP(e,t,i,s,r,o):TP(SP(e),t,i,s,r,o,1);break}}}function RP(e){var t=e.prev,i=e,s=e.next;if(zP(t,i,s)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(jP(t.x,t.y,i.x,i.y,s.x,s.y,r.x,r.y)&&zP(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function LP(e,t,i,s){var r=e.prev,o=e,n=e.next;if(zP(r,o,n)>=0)return!1;for(var a=r.xo.x?r.x>n.x?r.x:n.x:o.x>n.x?o.x:n.x,h=r.y>o.y?r.y>n.y?r.y:n.y:o.y>n.y?o.y:n.y,c=VP(a,l,t,i,s),u=VP(A,h,t,i,s),d=e.prevZ,p=e.nextZ;d&&d.z>=c&&p&&p.z<=u;){if(d!==e.prev&&d!==e.next&&jP(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&zP(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,p!==e.prev&&p!==e.next&&jP(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&zP(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;d&&d.z>=c;){if(d!==e.prev&&d!==e.next&&jP(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&zP(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;p&&p.z<=u;){if(p!==e.prev&&p!==e.next&&jP(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&zP(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function UP(e,t,i){var s=e;do{var r=s.prev,o=s.next.next;!WP(r,o)&&KP(r,s,s.next,o)&&YP(r,o)&&YP(o,r)&&(t.push(r.i/i),t.push(s.i/i),t.push(o.i/i),$P(s),$P(s.next),s=e=o),s=s.next}while(s!==e);return SP(s)}function kP(e,t,i,s,r,o){var n=e;do{for(var a=n.next.next;a!==n.prev;){if(n.i!==a.i&&GP(n,a)){var l=ZP(n,a);return n=SP(n,n.next),l=SP(l,l.next),TP(n,t,i,s,r,o),void TP(l,t,i,s,r,o)}a=a.next}n=n.next}while(n!==e)}function OP(e,t){return e.x-t.x}function NP(e,t){if(t=function(e,t){var i,s=t,r=e.x,o=e.y,n=-1/0;do{if(o<=s.y&&o>=s.next.y&&s.next.y!==s.y){var a=s.x+(o-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(a<=r&&a>n){if(n=a,a===r){if(o===s.y)return s;if(o===s.next.y)return s.next}i=s.x=s.x&&s.x>=h&&r!==s.x&&jP(oi.x||s.x===i.x&&QP(i,s)))&&(i=s,u=l)),s=s.next}while(s!==A);return i}(e,t),t){var i=ZP(t,e);SP(t,t.next),SP(i,i.next)}}function QP(e,t){return zP(e.prev,e,t.prev)<0&&zP(t.next,e,e.next)<0}function VP(e,t,i,s,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function HP(e){var t=e,i=e;do{(t.x=0&&(e-n)*(s-a)-(i-n)*(t-a)>=0&&(i-n)*(o-a)-(r-n)*(s-a)>=0}function GP(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&KP(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(YP(e,t)&&YP(t,e)&&function(e,t){var i=e,s=!1,r=(e.x+t.x)/2,o=(e.y+t.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&r<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next}while(i!==e);return s}(e,t)&&(zP(e.prev,e,t.prev)||zP(e,t.prev,t))||WP(e,t)&&zP(e.prev,e,e.next)>0&&zP(t.prev,t,t.next)>0)}function zP(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function WP(e,t){return e.x===t.x&&e.y===t.y}function KP(e,t,i,s){var r=JP(zP(e,t,i)),o=JP(zP(e,t,s)),n=JP(zP(i,s,e)),a=JP(zP(i,s,t));return r!==o&&n!==a||(!(0!==r||!XP(e,i,t))||(!(0!==o||!XP(e,s,t))||(!(0!==n||!XP(i,e,s))||!(0!==a||!XP(i,t,s)))))}function XP(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function JP(e){return e>0?1:e<0?-1:0}function YP(e,t){return zP(e.prev,e,e.next)<0?zP(e,t,e.next)>=0&&zP(e,e.prev,t)>=0:zP(e,t,e.prev)<0||zP(e,e.next,t)<0}function ZP(e,t){var i=new eC(e.i,e.x,e.y),s=new eC(t.i,t.x,t.y),r=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=r,r.prev=i,s.next=i,i.prev=s,o.next=s,s.prev=o,s}function qP(e,t,i,s){var r=new eC(e,t,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function $P(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function eC(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function tC(e,t,i,s){for(var r=0,o=t,n=i-s;o0&&(s+=e[r-1].length,i.holes.push(s))}return i};const iC=c.vec2(),sC=c.vec3(),rC=c.vec3(),oC=c.vec3();exports.AlphaFormat=1021,exports.AmbientLight=Pt,exports.AngleMeasurementsControl=fe,exports.AngleMeasurementsMouseControl=ge,exports.AngleMeasurementsPlugin=class extends V{constructor(e,t={}){super("AngleMeasurements",e),this._container=t.container||document.body,this._defaultControl=null,this._measurements={},this.defaultColor=void 0!==t.defaultColor?t.defaultColor:"#00BBFF",this.defaultLabelsVisible=!1!==t.defaultLabelsVisible,this.zIndex=t.zIndex||1e4,this._onMouseOver=(e,t)=>{this.fire("mouseOver",{plugin:this,angleMeasurement:t,measurement:t,event:e})},this._onMouseLeave=(e,t)=>{this.fire("mouseLeave",{plugin:this,angleMeasurement:t,measurement:t,event:e})},this._onContextMenu=(e,t)=>{this.fire("contextMenu",{plugin:this,angleMeasurement:t,measurement:t,event:e})}}getContainerElement(){return this._container}send(e,t){}get control(){return this._defaultControl||(this._defaultControl=new ge(this,{})),this._defaultControl}get measurements(){return this._measurements}createMeasurement(e={}){this.viewer.scene.components[e.id]&&(this.error("Viewer scene component with this ID already exists: "+e.id),delete e.id);const t=e.origin,i=e.corner,s=e.target,r=new pe(this,{id:e.id,plugin:this,container:this._container,origin:{entity:t.entity,worldPos:t.worldPos},corner:{entity:i.entity,worldPos:i.worldPos},target:{entity:s.entity,worldPos:s.worldPos},visible:e.visible,originVisible:!0,originWireVisible:!0,cornerVisible:!0,targetWireVisible:!0,targetVisible:!0,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[r.id]=r,r.on("destroyed",(()=>{delete this._measurements[r.id]})),r.clickable=!0,this.fire("measurementCreated",r),r}destroyMeasurement(e){const t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("AngleMeasurement not found: "+e)}setLabelsShown(e){for(const[t,i]of Object.entries(this.measurements))i.labelShown=e}clear(){const e=Object.keys(this._measurements);for(var t=0,i=e.length;t{this.plugin.viewer.cameraControl.active=!1},u=()=>{this.plugin.viewer.cameraControl.active=!0},d=()=>{o&&(clearTimeout(o),o=null),this._currentAngleMeasurement&&(this._currentAngleMeasurement.destroy(),this._currentAngleMeasurement=null),u(),this._touchState=0};i.addEventListener("touchstart",this._onCanvasTouchStart=i=>{const l=i.touches.length;if(1!==l)return void(o&&(clearTimeout(o),o=null));const u=i.touches[0],p=u.clientX,f=u.clientY;switch(n.set([p,f]),a.set([p,f]),this._touchState){case 0:if(1!==l&&null!==o)return void d();const i=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping});if(i&&i.snapped)s.set(i.worldPos),this.pointerCircle.start(i.snappedCanvasPos);else{const e=t.pick({canvasPos:a,pickSurface:!0});if(!e||!e.worldPos)return;s.set(e.worldPos),this.pointerCircle.start(e.canvasPos)}o=setTimeout((()=>{1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{if(o=null,1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{if(o=null,1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{this.pointerCircle.stop();const i=e.touches.length;if(1!==i||1!==e.changedTouches.length)return void(o&&(clearTimeout(o),o=null));const r=e.touches[0],n=r.clientX,l=r.clientY;if(r.identifier!==A)return;let h,c;switch(a.set([n,l]),this._touchState){case 2:this.pointerLens&&(this.pointerLens.canvasPos=a),h=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),h&&h.snapped?(this.pointerLens&&(this.pointerLens.snappedCanvasPos=h.snappedCanvasPos,this.pointerLens.snapped=!0),s.set(h.worldPos),this._currentAngleMeasurement.origin.worldPos=h.worldPos):(c=t.pick({canvasPos:a,pickSurface:!0}),c&&c.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=c.canvasPos,this.pointerLens.snapped=!1),s.set(c.worldPos),this._currentAngleMeasurement.origin.worldPos=c.worldPos):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)),this._touchState=2;break;case 5:if(1!==i&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),h=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),h&&h.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=h.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentAngleMeasurement.corner.worldPos=h.worldPos,this._currentAngleMeasurement.originVisible=!0,this._currentAngleMeasurement.originWireVisible=!0,this._currentAngleMeasurement.cornerVisible=!0,this._currentAngleMeasurement.cornerWireVisible=!1,this._currentAngleMeasurement.targetVisible=!1,this._currentAngleMeasurement.targetWireVisible=!1,this._currentAngleMeasurement.angleVisible=!1):(c=t.pick({canvasPos:a,pickSurface:!0}),c&&c.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=c.canvasPos,this.pointerLens.snapped=!1),this._currentAngleMeasurement.corner.worldPos=c.worldPos,this._currentAngleMeasurement.originVisible=!0,this._currentAngleMeasurement.originWireVisible=!0,this._currentAngleMeasurement.cornerVisible=!0,this._currentAngleMeasurement.cornerWireVisible=!1,this._currentAngleMeasurement.targetVisible=!1,this._currentAngleMeasurement.targetWireVisible=!1,this._currentAngleMeasurement.angleVisible=!1)),this._touchState=5;break;case 8:if(1!==i&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),h=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),h&&h.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=h.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentAngleMeasurement.target.worldPos=h.worldPos,this._currentAngleMeasurement.originVisible=!0,this._currentAngleMeasurement.originWireVisible=!0,this._currentAngleMeasurement.cornerVisible=!0,this._currentAngleMeasurement.cornerWireVisible=!0,this._currentAngleMeasurement.targetVisible=!0,this._currentAngleMeasurement.targetWireVisible=!0,this._currentAngleMeasurement.angleVisible=!0):(c=t.pick({canvasPos:a,pickSurface:!0}),c&&c.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=c.canvasPos,this.pointerLens.snapped=!1),this._currentAngleMeasurement.target.worldPos=c.worldPos,this._currentAngleMeasurement.originVisible=!0,this._currentAngleMeasurement.originWireVisible=!0,this._currentAngleMeasurement.cornerVisible=!0,this._currentAngleMeasurement.cornerWireVisible=!0,this._currentAngleMeasurement.targetVisible=!0,this._currentAngleMeasurement.targetWireVisible=!0,this._currentAngleMeasurement.angleVisible=!0)),this._touchState=8}}),{passive:!0}),i.addEventListener("touchend",this._onCanvasTouchEnd=i=>{this.pointerCircle.stop();const s=i.changedTouches.length;if(1!==s)return;const h=i.changedTouches[0],d=h.clientX,p=h.clientY;if(h.identifier===A)switch(o&&(clearTimeout(o),o=null),l.set([d,p]),this._touchState){case 1:{if(1!==s||d>n[0]+r||dn[1]+r||pn[0]+r||dn[1]+r||pn[0]+r||dn[1]+r||p",this._markerHTML=t.markerHTML||"
",this._container=t.container||document.body,this._values=t.values||{},this.annotations={},this.surfaceOffset=t.surfaceOffset}getContainerElement(){return this._container}send(e,t){if("clearAnnotations"===e)this.clear()}set surfaceOffset(e){null==e&&(e=.3),this._surfaceOffset=e}get surfaceOffset(){return this._surfaceOffset}createAnnotation(e){var t,i;if(this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id),e.pickResult=e.pickResult||e.pickRecord,e.pickResult){const s=e.pickResult;if(s.worldPos&&s.worldNormal){const e=c.normalizeVec3(s.worldNormal,_e),r=c.mulVec3Scalar(e,this._surfaceOffset,ve);t=c.addVec3(s.worldPos,r,be),i=s.entity}else this.error("Param 'pickResult' does not have both worldPos and worldNormal")}else t=e.worldPos,i=e.entity;var s=null;e.markerElementId&&((s=document.getElementById(e.markerElementId))||this.error("Can't find DOM element for 'markerElementId' value '"+e.markerElementId+"' - defaulting to internally-generated empty DIV"));var r=null;e.labelElementId&&((r=document.getElementById(e.labelElementId))||this.error("Can't find DOM element for 'labelElementId' value '"+e.labelElementId+"' - defaulting to internally-generated empty DIV"));const o=new me(this.viewer.scene,{id:e.id,plugin:this,entity:i,worldPos:t,container:this._container,markerElement:s,labelElement:r,markerHTML:e.markerHTML||this._markerHTML,labelHTML:e.labelHTML||this._labelHTML,occludable:e.occludable,values:_.apply(e.values,_.apply(this._values,{})),markerShown:e.markerShown,labelShown:e.labelShown,eye:e.eye,look:e.look,up:e.up,projection:e.projection,visible:!1!==e.visible});return this.annotations[o.id]=o,o.on("destroyed",(()=>{delete this.annotations[o.id],this.fire("annotationDestroyed",o.id)})),this.fire("annotationCreated",o.id),o}destroyAnnotation(e){var t=this.annotations[e];t?t.destroy():this.log("Annotation not found: "+e)}clear(){const e=Object.keys(this.annotations);for(var t=0,i=e.length;tp.has(e.id)||g.has(e.id)||f.has(e.id))).reduce(((e,i)=>{let s,r=function(e){let t="";return t+=Math.round(255*e[0]).toString(16).padStart(2,"0"),t+=Math.round(255*e[1]).toString(16).padStart(2,"0"),t+=Math.round(255*e[2]).toString(16).padStart(2,"0"),t}(i.colorize);i.xrayed?(s=0===t.xrayMaterial.fillAlpha&&0!==t.xrayMaterial.edgeAlpha?.1:t.xrayMaterial.fillAlpha,s=Math.round(255*s).toString(16).padStart(2,"0"),r=s+r):p.has(i.id)&&(s=Math.round(255*i.opacity).toString(16).padStart(2,"0"),r=s+r),e[r]||(e[r]=[]);const o=i.id,n=i.originalSystemId,a={ifc_guid:n,originating_system:this.originatingSystem};return n!==o&&(a.authoring_tool_id=o),e[r].push(a),e}),{}),_=Object.entries(m).map((([e,t])=>({color:e,components:t})));o.components.coloring=_;const v=t.objectIds,b=t.visibleObjects,y=t.visibleObjectIds,x=v.filter((e=>!b[e])),B=t.selectedObjectIds;return e.defaultInvisible||y.length0&&e.clipping_planes.forEach((function(e){let t=eh(e.location,JA),i=eh(e.direction,JA);A&&c.negateVec3(i),c.subVec3(t,l),r.yUp&&(t=ih(t),i=ih(i)),new $i(s,{pos:t,dir:i})})),s.clearLines(),e.lines&&e.lines.length>0){const t=[],i=[];let r=0;e.lines.forEach((e=>{e.start_point&&e.end_point&&(t.push(e.start_point.x),t.push(e.start_point.y),t.push(e.start_point.z),t.push(e.end_point.x),t.push(e.end_point.y),t.push(e.end_point.z),i.push(r++),i.push(r++))})),new XA(s,{positions:t,indices:i,clippable:!1,collidable:!0})}if(s.clearBitmaps(),e.bitmaps&&e.bitmaps.length>0&&e.bitmaps.forEach((function(e){const t=e.bitmap_type||"jpg",i=e.bitmap_data;let o=eh(e.location,YA),n=eh(e.normal,ZA),a=eh(e.up,qA),l=e.height||1;t&&i&&o&&n&&a&&(r.yUp&&(o=ih(o),n=ih(n),a=ih(a)),new Ls(s,{src:i,type:t,pos:o,normal:n,up:a,clippable:!1,collidable:!0,height:l}))})),a&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),s.setObjectsHighlighted(s.highlightedObjectIds,!1),s.setObjectsSelected(s.selectedObjectIds,!1)),e.components){if(e.components.visibility){e.components.visibility.default_visibility?(s.setObjectsVisible(s.objectIds,!0),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!1))))):(s.setObjectsVisible(s.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!0)))));const r=e.components.visibility.view_setup_hints;r&&(!1===r.spaces_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcSpace"),!1),void 0!==r.spaces_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcSpace"),!0),r.space_boundaries_visible,!1===r.openings_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcOpening"),!0),r.space_boundaries_translucent,void 0!==r.openings_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcOpening"),!0))}e.components.selection&&(s.setObjectsSelected(s.selectedObjectIds,!1),e.components.selection.forEach((e=>this._withBCFComponent(t,e,(e=>e.selected=!0))))),e.components.translucency&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),e.components.translucency.forEach((e=>this._withBCFComponent(t,e,(e=>e.xrayed=!0))))),e.components.coloring&&e.components.coloring.forEach((e=>{let i=e.color,s=0,r=!1;8===i.length&&(s=parseInt(i.substring(0,2),16)/256,s<=1&&s>=.95&&(s=1),i=i.substring(2),r=!0);const o=[parseInt(i.substring(0,2),16)/256,parseInt(i.substring(2,4),16)/256,parseInt(i.substring(4,6),16)/256];e.components.map((e=>this._withBCFComponent(t,e,(e=>{e.colorize=o,r&&(e.opacity=s)}))))}))}if(e.perspective_camera||e.orthogonal_camera){let a,A,h,u;if(e.perspective_camera?(a=eh(e.perspective_camera.camera_view_point,JA),A=eh(e.perspective_camera.camera_direction,JA),h=eh(e.perspective_camera.camera_up_vector,JA),r.perspective.fov=e.perspective_camera.field_of_view,u="perspective"):(a=eh(e.orthogonal_camera.camera_view_point,JA),A=eh(e.orthogonal_camera.camera_direction,JA),h=eh(e.orthogonal_camera.camera_up_vector,JA),r.ortho.scale=e.orthogonal_camera.view_to_world_scale,u="ortho"),c.subVec3(a,l),r.yUp&&(a=ih(a),A=ih(A),h=ih(h)),o){const e=s.pick({pickSurface:!0,origin:a,direction:A});A=e?e.worldPos:c.addVec3(a,A,JA)}else A=c.addVec3(a,A,JA);n?(r.eye=a,r.look=A,r.up=h,r.projection=u):i.cameraFlight.flyTo({eye:a,look:A,up:h,duration:t.duration,projection:u})}}_withBCFComponent(e,t,i){const s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){const o=t.authoring_tool_id,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}}if(t.ifc_guid){const o=t.ifc_guid,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}Object.keys(r.models).forEach((t=>{const n=c.globalizeObjectId(t,o),a=r.objects[n];if(a)i(a);else if(e.updateCompositeObjects){s.metaScene.metaObjects[n]&&r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}}))}}destroy(){super.destroy()}},exports.Bitmap=Ls,exports.ByteType=1010,exports.CameraMemento=Ih,exports.CameraPath=class extends D{get type(){return"CameraPath"}constructor(e,t={}){super(e,t),this._frames=[],this._eyeCurve=new dh(this),this._lookCurve=new dh(this),this._upCurve=new dh(this),t.frames&&(this.addFrames(t.frames),this.smoothFrameTimes(1))}get frames(){return this._frames}get eyeCurve(){return this._eyeCurve}get lookCurve(){return this._lookCurve}get upCurve(){return this._upCurve}saveFrame(e){const t=this.scene.camera;this.addFrame(e,t.eye,t.look,t.up)}addFrame(e,t,i,s){const r={t:e,eye:t.slice(0),look:i.slice(0),up:s.slice(0)};this._frames.push(r),this._eyeCurve.points.push(r.eye),this._lookCurve.points.push(r.look),this._upCurve.points.push(r.up)}addFrames(e){let t;for(let i=0,s=e.length;i1?1:e,t.eye=this._eyeCurve.getPoint(e,ph),t.look=this._lookCurve.getPoint(e,ph),t.up=this._upCurve.getPoint(e,ph)}sampleFrame(e,t,i,s){e=e<0?0:e>1?1:e,this._eyeCurve.getPoint(e,t),this._lookCurve.getPoint(e,i),this._upCurve.getPoint(e,s)}smoothFrameTimes(e){if(0===this._frames.length)return;const t=c.vec3();var i=0;this._frames[0].t=0;const s=[];for(let e=1,o=this._frames.length;e{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=e.transform?this._transformVertices(e.vertices,e.transform,i.rotateX):e.vertices,o=t.stats||{};o.sourceFormat=e.type||"CityJSON",o.schemaVersion=e.version||"",o.title="",o.author="",o.created="",o.numMetaObjects=0,o.numPropertySets=0,o.numObjects=0,o.numGeometries=0,o.numTriangles=0,o.numVertices=0;const n=!1!==t.loadMetadata,a=n?{id:c.createUUID(),name:"Model",type:"Model"}:null,l=n?{id:"",projectId:"",author:"",createdAt:"",schema:e.version||"",creatingApplication:"",metaObjects:[a],propertySets:[]}:null,A={data:e,vertices:r,sceneModel:s,loadMetadata:n,metadata:l,rootMetaObject:a,nextId:0,stats:o};if(this._parseCityJSON(A),s.finalize(),n){const e=s.id;this.viewer.metaScene.createMetaModel(e,A.metadata,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_transformVertices(e,t,i){const s=[],r=t.scale||c.vec3([1,1,1]),o=t.translate||c.vec3([0,0,0]);for(let t=0,n=0;t0))return;const o=[];for(let i=0,s=t.geometry.length;i0){const r=t[s[0]];if(void 0!==r.value)n=e[r.value];else{const t=r.values;if(t){a=[];for(let s=0,r=t.length;s0&&(s.createEntity({id:i,meshIds:o,isObject:!0}),e.stats.numObjects++)}_parseGeometrySurfacesWithOwnMaterials(e,t,i,s){switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":const r=t.boundaries;this._parseSurfacesWithOwnMaterials(e,i,r,s);break;case"Solid":const o=t.boundaries;for(let t=0;t0&&h.push(A.length);const i=this._extractLocalIndices(e,a[t],u,d);A.push(...i)}if(3===A.length)d.indices.push(A[0]),d.indices.push(A[1]),d.indices.push(A[2]);else if(A.length>3){const e=[];for(let t=0;t0&&n.indices.length>0){const t=""+e.nextId++;r.createMesh({id:t,primitive:"triangles",positions:n.positions,indices:n.indices,color:i&&i.diffuseColor?i.diffuseColor:[.8,.8,.8],opacity:1}),s.push(t),e.stats.numGeometries++,e.stats.numVertices+=n.positions.length/3,e.stats.numTriangles+=n.indices.length/3}}_parseSurfacesWithSharedMaterial(e,t,i,s){const r=e.vertices;for(let o=0;o0&&a.push(n.length);const l=this._extractLocalIndices(e,t[o][r],i,s);n.push(...l)}if(3===n.length)s.indices.push(n[0]),s.indices.push(n[1]),s.indices.push(n[2]);else if(n.length>3){let e=[];for(let t=0;t{e.target.classList.contains("xeokit-context-menu-item")||this.hide()})),document.addEventListener("touchstart",this._canvasTouchStartHandler=e=>{e.target.classList.contains("xeokit-context-menu-item")||this.hide()})),e.items&&(this.items=e.items),this._hideOnAction=!1!==e.hideOnAction,this.context=e.context,this.enabled=!1!==e.enabled,this.hide()}on(e,t){let i=this._eventSubs[e];i||(i=[],this._eventSubs[e]=i),i.push(t)}fire(e,t){const i=this._eventSubs[e];if(i)for(let e=0,s=i.length;e{const o=this._getNextId(),n=new i(o);for(let i=0,o=e.length;i0,A=this._getNextId(),h=i.getTitle||(()=>i.title||""),c=i.doAction||i.callback||(()=>{}),u=i.getEnabled||(()=>!0),d=i.getShown||(()=>!0),p=new r(A,h,c,u,d);if(p.parentMenu=n,a.items.push(p),l){const e=t(s);p.subMenu=e,e.parentItem=p}this._itemList.push(p),this._itemMap[p.id]=p}}return this._menuList.push(n),this._menuMap[n.id]=n,n};this._rootMenu=t(e)}_getNextId(){return"ContextMenu_"+this._id+"_"+this._nextId++}_createUI(){const e=t=>{this._createMenuUI(t);const i=t.groups;for(let t=0,s=i.length;t'),i.push("
    "),t)for(let e=0,s=t.length;e'+l+" [MORE]"):i.push('
  • '+l+"
  • ")}}i.push("
"),i.push("");const s=i.join("");document.body.insertAdjacentHTML("beforeend",s);const r=document.querySelector("."+e.id);e.menuElement=r,r.style["border-radius"]="4px",r.style.display="none",r.style["z-index"]=3e5,r.style.background="white",r.style.border="1px solid black",r.style["box-shadow"]="0 4px 5px 0 gray",r.oncontextmenu=e=>{e.preventDefault()};const o=this;let n=null;if(t)for(let e=0,i=t.length;e{e.preventDefault();const i=t.subMenu;if(!i)return void(n&&(o._hideMenu(n.id),n=null));if(n&&n.id!==i.id&&(o._hideMenu(n.id),n=null),!1===t.enabled)return;const s=t.itemElement,r=i.menuElement,a=s.getBoundingClientRect();r.getBoundingClientRect();a.right+200>window.innerWidth?o._showMenu(i.id,a.left-200,a.top-1):o._showMenu(i.id,a.right-5,a.top-1),n=i})),s||(t.itemElement.addEventListener("click",(e=>{e.preventDefault(),o._context&&!1!==t.enabled&&(t.doAction&&t.doAction(o._context),this._hideOnAction?o.hide():(o._updateItemsTitles(),o._updateItemsEnabledStatus()))})),t.itemElement.addEventListener("mouseup",(e=>{3===e.which&&(e.preventDefault(),o._context&&!1!==t.enabled&&(t.doAction&&t.doAction(o._context),this._hideOnAction?o.hide():(o._updateItemsTitles(),o._updateItemsEnabledStatus())))})),t.itemElement.addEventListener("mouseenter",(e=>{e.preventDefault(),!1!==t.enabled&&t.doHover&&t.doHover(o._context)})))):console.error("ContextMenu item element not found: "+t.id)}}}_updateItemsTitles(){if(this._context)for(let e=0,t=this._itemList.length;ewindow.innerHeight&&(i=window.innerHeight-s),t+r>window.innerWidth&&(t=window.innerWidth-r),e.style.left=t+"px",e.style.top=i+"px"}_hideMenuElement(e){e.style.display="none"}},exports.CubicBezierCurve=class extends uh{constructor(e,t={}){super(e,t),this.v0=t.v0,this.v1=t.v1,this.v2=t.v2,this.v3=t.v3,this.t=t.t}set v0(e){this._v0=e||c.vec3([0,0,0])}get v0(){return this._v0}set v1(e){this._v1=e||c.vec3([0,0,0])}get v1(){return this._v1}set v2(e){this._v2=e||c.vec3([0,0,0])}get v2(){return this._v2}set v3(e){this.fire("v3",this._v3=e||c.vec3([0,0,0]))}get v3(){return this._v3}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=c.vec3();return t[0]=c.b3(e,this._v0[0],this._v1[0],this._v2[0],this._v3[0]),t[1]=c.b3(e,this._v0[1],this._v1[1],this._v2[1],this._v3[1]),t[2]=c.b3(e,this._v0[2],this._v1[2],this._v2[2],this._v3[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,v3:this._v3,t:this._t}}},exports.Curve=uh,exports.DefaultLoadingManager=uA,exports.DepthFormat=1026,exports.DepthStencilFormat=1027,exports.DirLight=wt,exports.DistanceMeasurementsControl=nh,exports.DistanceMeasurementsMouseControl=ah,exports.DistanceMeasurementsPlugin=class extends V{constructor(e,t={}){super("DistanceMeasurements",e),this._pointerLens=t.pointerLens,this._container=t.container||document.body,this._defaultControl=null,this._measurements={},this.labelMinAxisLength=t.labelMinAxisLength,this.defaultVisible=!1!==t.defaultVisible,this.defaultOriginVisible=!1!==t.defaultOriginVisible,this.defaultTargetVisible=!1!==t.defaultTargetVisible,this.defaultWireVisible=!1!==t.defaultWireVisible,this.defaultXLabelEnabled=!1!==t.defaultXLabelEnabled,this.defaultYLabelEnabled=!1!==t.defaultYLabelEnabled,this.defaultZLabelEnabled=!1!==t.defaultZLabelEnabled,this.defaultLengthLabelEnabled=!1!==t.defaultLengthLabelEnabled,this.defaultLabelsVisible=!1!==t.defaultLabelsVisible,this.defaultAxisVisible=!1!==t.defaultAxisVisible,this.defaultXAxisVisible=!1!==t.defaultXAxisVisible,this.defaultYAxisVisible=!1!==t.defaultYAxisVisible,this.defaultZAxisVisible=!1!==t.defaultZAxisVisible,this.defaultColor=void 0!==t.defaultColor?t.defaultColor:"#00BBFF",this.zIndex=t.zIndex||1e4,this.defaultLabelsOnWires=!1!==t.defaultLabelsOnWires,this._onMouseOver=(e,t)=>{this.fire("mouseOver",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onMouseLeave=(e,t)=>{this.fire("mouseLeave",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onContextMenu=(e,t)=>{this.fire("contextMenu",{plugin:this,distanceMeasurement:t,measurement:t,event:e})}}getContainerElement(){return this._container}send(e,t){}get pointerLens(){return this._pointerLens}get control(){return this._defaultControl||(this._defaultControl=new ah(this,{})),this._defaultControl}get measurements(){return this._measurements}set labelMinAxisLength(e){e<1&&(this.error("labelMinAxisLength must be >= 1; defaulting to 25"),e=25),this._labelMinAxisLength=e||25}get labelMinAxisLength(){return this._labelMinAxisLength}createMeasurement(e={}){this.viewer.scene.components[e.id]&&(this.error("Viewer scene component with this ID already exists: "+e.id),delete e.id);const t=e.origin,i=e.target,s=new oh(this,{id:e.id,plugin:this,container:this._container,origin:{entity:t.entity,worldPos:t.worldPos},target:{entity:i.entity,worldPos:i.worldPos},visible:e.visible,wireVisible:e.wireVisible,axisVisible:!1!==e.axisVisible&&!1!==this.defaultAxisVisible,xAxisVisible:!1!==e.xAxisVisible&&!1!==this.defaultXAxisVisible,yAxisVisible:!1!==e.yAxisVisible&&!1!==this.defaultYAxisVisible,zAxisVisible:!1!==e.zAxisVisible&&!1!==this.defaultZAxisVisible,xLabelEnabled:!1!==e.xLabelEnabled&&!1!==this.defaultXLabelEnabled,yLabelEnabled:!1!==e.yLabelEnabled&&!1!==this.defaultYLabelEnabled,zLabelEnabled:!1!==e.zLabelEnabled&&!1!==this.defaultZLabelEnabled,lengthLabelEnabled:!1!==e.lengthLabelEnabled&&!1!==this.defaultLengthLabelEnabled,labelsVisible:!1!==e.labelsVisible&&!1!==this.defaultLabelsVisible,originVisible:e.originVisible,targetVisible:e.targetVisible,color:e.color,labelsOnWires:!1!==e.labelsOnWires&&!1!==this.defaultLabelsOnWires,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[s.id]=s,s.clickable=!0,s.on("destroyed",(()=>{delete this._measurements[s.id]})),this.fire("measurementCreated",s),s}destroyMeasurement(e){const t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("DistanceMeasurement not found: "+e)}setLabelsShown(e){for(const[t,i]of Object.entries(this.measurements))i.labelShown=e}setAxisVisible(e){for(const[t,i]of Object.entries(this.measurements))i.axisVisible=e;this.defaultAxisVisible=e}getAxisVisible(){return this.defaultAxisVisible}clear(){const e=Object.keys(this._measurements);for(var t=0,i=e.length;t{this.plugin.viewer.cameraControl.active=!1},u=()=>{this.plugin.viewer.cameraControl.active=!0},d=()=>{o&&(clearTimeout(o),o=null),this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),u(),this._touchState=0};i.addEventListener("touchstart",this._onCanvasTouchStart=i=>{const l=i.touches.length;if(1!==l)return void(o&&(clearTimeout(o),o=null));const u=i.touches[0],p=u.clientX,f=u.clientY;switch(n.set([p,f]),a.set([p,f]),this._touchState){case 0:if(1!==l&&null!==o)return void d();const i=t.pick({canvasPos:a,snapping:this._snapping,snapToEdge:this._snapping});if(i&&i.snapped)s.set(i.worldPos),this.pointerCircle.start(i.snappedCanvasPos);else{const e=t.pick({canvasPos:a,pickSurface:!0});if(!e||!e.worldPos)return;s.set(e.worldPos),this.pointerCircle.start(e.canvasPos)}o=setTimeout((()=>{1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{if(o=null,1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{this.pointerCircle.stop();const r=i.touches.length;if(1!==r||1!==i.changedTouches.length)return void(o&&(clearTimeout(o),o=null));const n=i.touches[0],l=n.clientX,h=n.clientY;if(n.identifier!==A)return;let u,d;switch(a.set([l,h]),this._touchState){case 2:this.pointerLens&&(this.pointerLens.canvasPos=a),u=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),u&&u.snapped?(this.pointerLens&&(this.pointerLens.snappedCanvasPos=u.snappedCanvasPos,this.pointerLens.snapped=!0),s.set(u.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=u.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:c.createUUID(),origin:{worldPos:u.worldPos,entity:u.entity},target:{worldPos:u.worldPos,entity:u.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):(d=t.pick({canvasPos:a,pickSurface:!0}),d&&d.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=d.canvasPos,this.pointerLens.snapped=!1),s.set(d.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=d.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:c.createUUID(),origin:{worldPos:d.worldPos,entity:d.entity},target:{worldPos:d.worldPos,entity:d.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)),this._touchState=2;break;case 5:if(1!==r&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),u=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),u&&u.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=u.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentDistanceMeasurement.target.worldPos=u.worldPos,this._currentDistanceMeasurement.target.entity=u.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0):(d=t.pick({canvasPos:a,pickSurface:!0}),d&&d.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=d.canvasPos,this.pointerLens.snapped=!1),this._currentDistanceMeasurement.target.worldPos=d.worldPos,this._currentDistanceMeasurement.target.entity=d.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0)),this._touchState=5}}),{passive:!0}),i.addEventListener("touchend",this._onCanvasTouchEnd=i=>{this.pointerCircle.stop();const s=i.changedTouches.length;if(1!==s)return;const h=i.changedTouches[0],d=h.clientX,p=h.clientY;if(h.identifier===A)switch(o&&(clearTimeout(o),o=null),l.set([d,p]),this._touchState){case 1:{if(1!==s||d>n[0]+r||dn[1]+r||pn[0]+r||dn[1]+r||p{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;iw.set(this.viewer.scene.aabb),c.getAABB3Center(iw,sw),iw[0]+=t[0]-sw[0],iw[1]+=t[1]-sw[1],iw[2]+=t[2]-sw[2],iw[3]+=t[0]-sw[0],iw[4]+=t[1]-sw[1],iw[5]+=t[2]-sw[2],this.viewer.cameraFlight.flyTo({aabb:iw,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn("Can't find overview canvas: '"+t.overviewCanvasId+"' - will create plugin without overview")}null===t.controlElementId||void 0===t.controlElementId?this.error("Parameter expected: controlElementId"):(this._controlElement=document.getElementById(t.controlElementId),this._controlElement||this.warn("Can't find control element: '"+t.controlElementId+"' - will create plugin without control element")),this._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(e=>{this._sectionPlaneCreated(e)}))}setDragSensitivity(e){this._dragSensitivity=e||1}getDragSensitivity(){return this._dragSensitivity}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);return new $i(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new $B(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}getShownControl(){return this._shownControlId}hideControl(){for(let e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){let t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(let t=0,i=e.length;t{i=1e3*this._delayBeforeRestoreSeconds,s||(e.scene._renderer.setColorTextureEnabled(!this._hideColorTexture),e.scene._renderer.setPBREnabled(!this._hidePBR),e.scene._renderer.setSAOEnabled(!this._hideSAO),e.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects),e.scene._renderer.setEdgesEnabled(!this._hideEdges),this._scaleCanvasResolution?e.scene.canvas.resolutionScale=this._scaleCanvasResolutionFactor:e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,s=!0)},o=()=>{e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,e.scene._renderer.setEdgesEnabled(!0),e.scene._renderer.setColorTextureEnabled(!0),e.scene._renderer.setPBREnabled(!0),e.scene._renderer.setSAOEnabled(!0),e.scene._renderer.setTransparentEnabled(!0),s=!1};this._onCanvasBoundary=e.scene.canvas.on("boundary",r),this._onCameraMatrix=e.scene.camera.on("matrix",r),this._onSceneTick=e.scene.on("tick",(e=>{s&&(i-=e.deltaTime,(!this._delayBeforeRestore||i<=0)&&o())}));let n=!1;this._onSceneMouseDown=e.scene.input.on("mousedown",(()=>{n=!0})),this._onSceneMouseUp=e.scene.input.on("mouseup",(()=>{n=!1})),this._onSceneMouseMove=e.scene.input.on("mousemove",(()=>{n&&r()}))}get hideColorTexture(){return this._hideColorTexture}set hideColorTexture(e){this._hideColorTexture=e}get hidePBR(){return this._hidePBR}set hidePBR(e){this._hidePBR=e}get hideSAO(){return this._hideSAO}set hideSAO(e){this._hideSAO=e}get hideEdges(){return this._hideEdges}set hideEdges(e){this._hideEdges=e}get hideTransparentObjects(){return this._hideTransparentObjects}set hideTransparentObjects(e){this._hideTransparentObjects=!1!==e}get scaleCanvasResolution(){return this._scaleCanvasResolution}set scaleCanvasResolution(e){this._scaleCanvasResolution=e}get defaultScaleCanvasResolutionFactor(){return this._defaultScaleCanvasResolutionFactor}set defaultScaleCanvasResolutionFactor(e){this._defaultScaleCanvasResolutionFactor=e||1}get scaleCanvasResolutionFactor(){return this._scaleCanvasResolutionFactor}set scaleCanvasResolutionFactor(e){this._scaleCanvasResolutionFactor=e||.6}get delayBeforeRestore(){return this._delayBeforeRestore}set delayBeforeRestore(e){this._delayBeforeRestore=e}get delayBeforeRestoreSeconds(){return this._delayBeforeRestoreSeconds}set delayBeforeRestoreSeconds(e){this._delayBeforeRestoreSeconds=null!=e?e:.5}send(e,t){}destroy(){this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),super.destroy()}},exports.FloatType=1015,exports.Fresnel=class extends D{get type(){return"Fresnel"}constructor(e,t={}){super(e,t),this._state=new tt({edgeColor:c.vec3([0,0,0]),centerColor:c.vec3([1,1,1]),edgeBias:0,centerBias:1,power:1}),this.edgeColor=t.edgeColor,this.centerColor=t.centerColor,this.edgeBias=t.edgeBias,this.centerBias=t.centerBias,this.power=t.power}set edgeColor(e){this._state.edgeColor.set(e||[0,0,0]),this.glRedraw()}get edgeColor(){return this._state.edgeColor}set centerColor(e){this._state.centerColor.set(e||[1,1,1]),this.glRedraw()}get centerColor(){return this._state.centerColor}set edgeBias(e){this._state.edgeBias=e||0,this.glRedraw()}get edgeBias(){return this._state.edgeBias}set centerBias(e){this._state.centerBias=null!=e?e:1,this.glRedraw()}get centerBias(){return this._state.centerBias}set power(e){this._state.power=null!=e?e:1,this.glRedraw()}get power(){return this._state.power}destroy(){super.destroy(),this._state.destroy()}},exports.Frustum=U,exports.FrustumPlane=L,exports.GIFMediaType=1e4,exports.GLTFDefaultDataSource=lh,exports.GLTFLoaderPlugin=class extends V{constructor(e,t={}){super("GLTFLoader",e,t),this._sceneModelLoader=new mB(this,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults}set dataSource(e){this._dataSource=e||new lh}get dataSource(){return this._dataSource}set objectDefaults(e){this._objectDefaults=e||FB}get objectDefaults(){return this._objectDefaults}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new WA(this.viewer.scene,_.apply(e,{isModel:!0,dtxEnabled:e.dtxEnabled})),i=t.id;if(!e.src&&!e.gltf)return this.error("load() param expected: src or gltf"),t;if(e.metaModelSrc||e.metaModelJSON){const s=e.objectDefaults||this._objectDefaults||FB,r=r=>{let o;if(this.viewer.metaScene.createMetaModel(i,r,{includeTypes:e.includeTypes,excludeTypes:e.excludeTypes}),this.viewer.scene.canvas.spinner.processes--,e.includeTypes){o={};for(let t=0,i=e.includeTypes.length;t{const r=t.name;if(!r)return!0;const o=r,n=this.viewer.metaScene.metaObjects[o],a=(n?n.type:"DEFAULT")||"DEFAULT";i.createEntity={id:o,isObject:!0};const l=s[a];return l&&(!1===l.visible&&(i.createEntity.visible=!1),l.colorize&&(i.createEntity.colorize=l.colorize),!1===l.pickable&&(i.createEntity.pickable=!1),void 0!==l.opacity&&null!==l.opacity&&(i.createEntity.opacity=l.opacity)),!0},e.src?this._sceneModelLoader.load(this,e.src,r,e,t):this._sceneModelLoader.parse(this,e.gltf,r,e,t)};if(e.metaModelSrc){const t=e.metaModelSrc;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getMetaModel(t,(e=>{this.viewer.scene.canvas.spinner.processes--,r(e)}),(e=>{this.error(`load(): Failed to load model metadata for model '${i} from '${t}' - ${e}`),this.viewer.scene.canvas.spinner.processes--}))}else e.metaModelJSON&&r(e.metaModelJSON)}else e.handleGLTFNode=(e,t,i)=>{const s=t.name;if(!s)return!0;const r=s;return i.createEntity={id:r,isObject:!0},!0},e.src?this._sceneModelLoader.load(this,e.src,null,e,t):this._sceneModelLoader.parse(this,e.gltf,null,e,t);return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}},exports.HalfFloatType=1016,exports.ImagePlane=class extends D{constructor(e,t={}){super(e,t),this._src=null,this._image=null,this._pos=c.vec3(),this._origin=c.vec3(),this._rtcPos=c.vec3(),this._dir=c.vec3(),this._size=1,this._imageSize=c.vec2(),this._texture=new Ps(this),this._plane=new Ki(this,{geometry:new kt(this,Ss({center:[0,0,0],xSize:1,zSize:1,xSegments:10,zSegments:10})),material:new Ht(this,{diffuse:[0,0,0],ambient:[0,0,0],specular:[0,0,0],diffuseMap:this._texture,emissiveMap:this._texture,backfaces:!0}),clippable:t.clippable}),this._grid=new Ki(this,{geometry:new kt(this,Ds({size:1,divisions:10})),material:new Ht(this,{diffuse:[0,0,0],ambient:[0,0,0],emissive:[.2,.8,.2]}),position:[0,.001,0],clippable:t.clippable}),this._node=new As(this,{rotation:[0,0,0],position:[0,0,0],scale:[1,1,1],clippable:!1,children:[this._plane,this._grid]}),this._gridVisible=!1,this.visible=!0,this.gridVisible=t.gridVisible,this.position=t.position,this.rotation=t.rotation,this.dir=t.dir,this.size=t.size,this.collidable=t.collidable,this.clippable=t.clippable,this.pickable=t.pickable,this.opacity=t.opacity,t.image?this.image=t.image:this.src=t.src}set visible(e){this._plane.visible=e,this._grid.visible=this._gridVisible&&e}get visible(){return this._plane.visible}set gridVisible(e){e=!1!==e,this._gridVisible=e,this._grid.visible=this._gridVisible&&this.visible}get gridVisible(){return this._gridVisible}set image(e){this._image=e,this._image&&(this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}get image(){return this._image}set src(e){if(this._src=e,this._src){this._image=null;const e=new Image;e.onload=()=>{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set position(e){this._pos.set(e||[0,0,0]),G(this._pos,this._origin,this._rtcPos),this._node.origin=this._origin,this._node.position=this._rtcPos}get position(){return this._pos}set rotation(e){this._node.rotation=e}get rotation(){return this._node.rotation}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set dir(e){if(this._dir.set(e||[0,0,-1]),e){const t=this.scene.center,i=[-this._dir[0],-this._dir[1],-this._dir[2]];c.subVec3(t,this.position,xh);const s=-c.dotVec3(i,xh);c.normalizeVec3(i),c.mulVec3Scalar(i,s,Bh),c.vec3PairToQuaternion(wh,e,Ph),this._node.quaternion=Ph}}get dir(){return this._dir}set collidable(e){this._node.collidable=!1!==e}get collidable(){return this._node.collidable}set clippable(e){this._node.clippable=!1!==e}get clippable(){return this._node.clippable}set pickable(e){this._node.pickable=!1!==e}get pickable(){return this._node.pickable}set opacity(e){this._node.opacity=e}get opacity(){return this._node.opacity}destroy(){super.destroy()}_updatePlaneSizeFromImage(){const e=this._size,t=this._imageSize[0],i=this._imageSize[1];if(t>i){const s=i/t;this._node.scale=[e,1,e*s]}else{const s=t/i;this._node.scale=[e*s,1,e]}}},exports.IntType=1013,exports.JPEGMediaType=10001,exports.KTX2TextureTranscoder=_A,exports.LASLoaderPlugin=class extends V{constructor(e,t={}){super("lasLoader",e,t),this.dataSource=t.dataSource,this.skip=t.skip,this.fp64=t.fp64,this.colorDepth=t.colorDepth}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new yP}get skip(){return this._skip}set skip(e){this._skip=e||1}get fp64(){return this._fp64}set fp64(e){this._fp64=!!e}get colorDepth(){return this._colorDepth}set colorDepth(e){this._colorDepth=e||"auto"}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new WA(this.viewer.scene,_.apply(e,{isModel:!0}));if(!e.src&&!e.las)return this.error("load() param expected: src or las"),t;const i={las:{skip:this._skip,fp64:this._fp64,colorDepth:this._colorDepth}};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.las,e,i,t).then((()=>{s.processes--}),(e=>{s.processes--,this.error(e),t.fire("error",e)}))}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getLAS(t.src,(e=>{this._parseModel(e,t,i,s).then((()=>{r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){function r(e){const i=e.value;if(t.rotateX&&i)for(let e=0,t=i.length;e{if(s.destroyed)return void l();const A=t.stats||{};A.sourceFormat="LAS",A.schemaVersion="",A.title="",A.author="",A.created="",A.numMetaObjects=0,A.numPropertySets=0,A.numObjects=0,A.numGeometries=0,A.numTriangles=0,A.numVertices=0;try{const A=PP(e);Lb(e,xP,i).then((e=>{const h=e.attributes,u=e.loaderData,d=void 0!==u.pointsFormatId?u.pointsFormatId:-1;if(!h.POSITION)return s.finalize(),void l("No positions found in file");let p,f;switch(d){case 0:p=r(h.POSITION),f=n(h.intensity);break;case 1:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=n(h.intensity);break;case 2:case 3:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=o(h.COLOR_0,h.intensity)}const g=FP(p,15e5),m=FP(f,2e6),_=[];for(let e=0,t=g.length;e{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))})),a()}))}catch(e){s.finalize(),l(e)}}))}},exports.LambertMaterial=hs,exports.LightMap=class extends Eh{get type(){return"LightMap"}constructor(e,t={}){super(e,t),this.scene._lightMapCreated(this)}destroy(){super.destroy(),this.scene._lightMapDestroyed(this)}},exports.LineSet=XA,exports.LinearEncoding=3e3,exports.LinearFilter=1006,exports.LinearMipMapLinearFilter=1008,exports.LinearMipMapNearestFilter=1007,exports.LinearMipmapLinearFilter=1008,exports.LinearMipmapNearestFilter=1007,exports.Loader=dA,exports.LoadingManager=cA,exports.LocaleService=Ah,exports.LuminanceAlphaFormat=1025,exports.LuminanceFormat=1024,exports.Map=e,exports.Marker=ae,exports.MarqueePicker=N,exports.MarqueePickerMouseControl=class extends D{constructor(e){super(e.marqueePicker,e);const t=e.marqueePicker,i=t.viewer.scene.canvas.canvas;let s,r,o,n,a,l,A,h=!1,c=!1,u=!1;i.addEventListener("mousedown",(e=>{this.getActive()&&0===e.button&&(A=setTimeout((function(){const o=t.viewer.scene.input;o.keyDown[o.KEY_CTRL]||t.clear(),s=e.pageX,r=e.pageY,a=e.offsetX,t.setMarqueeCorner1([s,r]),h=!0,t.viewer.cameraControl.pointerEnabled=!1,t.setMarqueeVisible(!0),i.style.cursor="crosshair"}),400),c=!0)})),i.addEventListener("mouseup",(e=>{if(!this.getActive())return;if(!h&&!u)return;if(0!==e.button)return;clearTimeout(A),o=e.pageX,n=e.pageY;const i=Math.abs(o-s),a=Math.abs(n-r);h=!1,t.viewer.cameraControl.pointerEnabled=!0,u&&(u=!1),(i>3||a>3)&&t.pick()})),document.addEventListener("mouseup",(e=>{this.getActive()&&0===e.button&&(clearTimeout(A),h&&(t.setMarqueeVisible(!1),h=!1,c=!1,u=!0,t.viewer.cameraControl.pointerEnabled=!0))}),!0),i.addEventListener("mousemove",(e=>{this.getActive()&&0===e.button&&c&&(clearTimeout(A),h&&(o=e.pageX,n=e.pageY,l=e.offsetX,t.setMarqueeVisible(!0),t.setMarqueeCorner2([o,n]),t.setPickMode(a{e.camera.zUp?(this._zUp=!0,this._cubeTextureCanvas.setZUp(),this._repaint(),this._synchCamera()):e.camera.yUp&&(this._zUp=!1,this._cubeTextureCanvas.setYUp(),this._repaint(),this._synchCamera())})),this._onCameraFOV=e.camera.perspective.on("fov",(e=>{this._synchProjection&&(this._navCubeCamera.perspective.fov=e)})),this._onCameraProjection=e.camera.on("projection",(e=>{this._synchProjection&&(this._navCubeCamera.projection="ortho"===e||"perspective"===e?e:"perspective")}));var o=-1;function n(e){var t=[0,0];if(e){for(var i=e.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t}var a,l,A=null,h=null,u=!1,d=!1,p=.5;s._navCubeCanvas.addEventListener("mouseenter",s._onMouseEnter=function(e){d=!0}),s._navCubeCanvas.addEventListener("mouseleave",s._onMouseLeave=function(e){d=!1}),s._navCubeCanvas.addEventListener("mousedown",s._onMouseDown=function(e){if(1===e.which){A=e.x,h=e.y,a=e.clientX,l=e.clientY;var t=n(e),s=i.pick({canvasPos:t});u=!!s}}),document.addEventListener("mouseup",s._onMouseUp=function(e){if(1===e.which&&(u=!1,null!==A)){var t=n(e),a=i.pick({canvasPos:t,pickSurface:!0});if(a&&a.uv){var l=s._cubeTextureCanvas.getArea(a.uv);if(l>=0&&(document.body.style.cursor="pointer",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),l>=0)){if(s._cubeTextureCanvas.setAreaHighlighted(l,!0),o=l,s._repaint(),e.xA+3||e.yh+3)return;var c=s._cubeTextureCanvas.getAreaDir(l);if(c){var d=s._cubeTextureCanvas.getAreaUp(l);s._isProjectNorth&&s._projectNorthOffsetAngle&&(c=r(1,c,IB),d=r(1,d,DB)),f(c,d,(function(){o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),document.body.style.cursor="pointer",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),l>=0&&(s._cubeTextureCanvas.setAreaHighlighted(l,!1),o=-1,s._repaint())}))}}}}}),document.addEventListener("mousemove",s._onMouseMove=function(t){if(o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),1!==t.buttons||u){if(u){var r=t.clientX,A=t.clientY;return document.body.style.cursor="move",void function(t,i){var s=(t-a)*-p,r=(i-l)*-p;e.camera.orbitYaw(s),e.camera.orbitPitch(-r),a=t,l=i}(r,A)}if(d){var h=n(t),c=i.pick({canvasPos:h,pickSurface:!0});if(c){if(c.uv){document.body.style.cursor="pointer";var f=s._cubeTextureCanvas.getArea(c.uv);if(f===o)return;o>=0&&s._cubeTextureCanvas.setAreaHighlighted(o,!1),f>=0&&(s._cubeTextureCanvas.setAreaHighlighted(f,!0),s._repaint(),o=f)}}else document.body.style.cursor="default",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1)}}});var f=function(){var t=c.vec3();return function(i,r,o){var n=s._fitVisible?e.scene.getAABB(e.scene.visibleObjectIds):e.scene.aabb,a=c.getAABB3Diag(n);c.getAABB3Center(n,t);var l=Math.abs(a/Math.tan(s._cameraFitFOV*c.DEGTORAD));e.cameraControl.pivotPos=t,s._cameraFly?e.cameraFlight.flyTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*a,fitFOV:s._cameraFitFOV,duration:s._cameraFlyDuration},o):e.cameraFlight.jumpTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*a,fitFOV:s._cameraFitFOV},o)}}();this._onUpdated=e.localeService.on("updated",(()=>{this._cubeTextureCanvas.clear(),this._repaint()})),this.setVisible(t.visible),this.setCameraFitFOV(t.cameraFitFOV),this.setCameraFly(t.cameraFly),this.setCameraFlyDuration(t.cameraFlyDuration),this.setFitVisible(t.fitVisible),this.setSynchProjection(t.synchProjection)}send(e,t){if("language"===e)this._cubeTextureCanvas.clear(),this._repaint()}_repaint(){const e=this._cubeTextureCanvas.getImage();this._cubeMesh.material.diffuseMap.image=e,this._cubeMesh.material.emissiveMap.image=e}setVisible(e=!0){this._navCubeCanvas&&(this._cubeMesh.visible=e,this._shadow&&(this._shadow.visible=e),this._navCubeCanvas.style.visibility=e?"visible":"hidden")}getVisible(){return!!this._navCubeCanvas&&this._cubeMesh.visible}setFitVisible(e=!1){this._fitVisible=e}getFitVisible(){return this._fitVisible}setCameraFly(e=!0){this._cameraFly=e}getCameraFly(){return this._cameraFly}setCameraFitFOV(e=45){this._cameraFitFOV=e}getCameraFitFOV(){return this._cameraFitFOV}setCameraFlyDuration(e=.5){this._cameraFlyDuration=e}getCameraFlyDuration(){return this._cameraFlyDuration}setSynchProjection(e=!1){this._synchProjection=e}getSynchProjection(){return this._synchProjection}setIsProjectNorth(e=!1){this._isProjectNorth=e}getIsProjectNorth(){return this._isProjectNorth}setProjectNorthOffsetAngle(e){this._projectNorthOffsetAngle=e}getProjectNorthOffsetAngle(){return this._projectNorthOffsetAngle}destroy(){this._navCubeCanvas&&(this.viewer.localeService.off(this._onUpdated),this.viewer.camera.off(this._onCameraMatrix),this.viewer.camera.off(this._onCameraWorldAxis),this.viewer.camera.perspective.off(this._onCameraFOV),this.viewer.camera.off(this._onCameraProjection),this._navCubeCanvas.removeEventListener("mouseenter",this._onMouseEnter),this._navCubeCanvas.removeEventListener("mouseleave",this._onMouseLeave),this._navCubeCanvas.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),this._navCubeCanvas=null,this._cubeTextureCanvas.destroy(),this._cubeTextureCanvas=null,this._onMouseEnter=null,this._onMouseLeave=null,this._onMouseDown=null,this._onMouseMove=null,this._onMouseUp=null),this._navCubeScene.destroy(),this._navCubeScene=null,this._cubeMesh=null,this._shadow=null,super.destroy()}},exports.NearestFilter=1003,exports.NearestMipMapLinearFilter=1005,exports.NearestMipMapNearestFilter=1004,exports.NearestMipmapLinearFilter=1005,exports.NearestMipmapNearestFilter=1004,exports.Node=As,exports.OBJLoaderPlugin=class extends V{constructor(e,t){super("OBJLoader",e,t),this._sceneGraphLoader=new TB}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new As(this.viewer.scene,_.apply(e,{isModel:!0}));const i=t.id,s=e.src;if(!s)return this.error("load() param expected: src"),t;if(e.metaModelSrc){const r=e.metaModelSrc;_.loadJSON(r,(r=>{this.viewer.metaScene.createMetaModel(i,r),this._sceneGraphLoader.load(t,s,e)}),(e=>{this.error(`load(): Failed to load model modelMetadata for model '${i} from '${r}' - ${e}`)}))}else this._sceneGraphLoader.load(t,s,e);return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}},exports.ObjectsKdTree3=class{constructor(e){if(!e)throw"Parameter expected: cfg";if(!e.viewer)throw"Parameter expected: cfg.viewer";this.viewer=e.viewer,this._maxTreeDepth=e.maxTreeDepth||15,this._root=null,this._needsRebuild=!0,this._onModelLoaded=this.viewer.scene.on("modelLoaded",(e=>{this._needsRebuild=!0})),this._onModelUnloaded=this.viewer.scene.on("modelUnloaded",(e=>{this._needsRebuild=!0}))}get root(){return this._needsRebuild&&this._rebuild(),this._root}_rebuild(){const e=this.viewer.scene;this._root={aabb:e.getAABB()};for(let t in e.objects){const i=e.objects[t];this._insertEntity(this._root,i,1)}this._needsRebuild=!1}_insertEntity(e,t,i){const s=t.aabb;if(i>=this._maxTreeDepth)return e.entities=e.entities||[],void e.entities.push(t);if(e.left&&c.containsAABB3(e.left.aabb,s))return void this._insertEntity(e.left,t,i+1);if(e.right&&c.containsAABB3(e.right.aabb,s))return void this._insertEntity(e.right,t,i+1);const r=e.aabb;u[0]=r[3]-r[0],u[1]=r[4]-r[1],u[2]=r[5]-r[2];let o=0;if(u[1]>u[o]&&(o=1),u[2]>u[o]&&(o=2),!e.left){const n=r.slice();if(n[o+3]=(r[o]+r[o+3])/2,e.left={aabb:n},c.containsAABB3(n,s))return void this._insertEntity(e.left,t,i+1)}if(!e.right){const n=r.slice();if(n[o]=(r[o]+r[o+3])/2,e.right={aabb:n},c.containsAABB3(n,s))return void this._insertEntity(e.right,t,i+1)}e.entities=e.entities||[],e.entities.push(t)}destroy(){const e=this.viewer.scene;e.off(this._onModelLoaded),e.off(this._onModelUnloaded),this._root=null,this._needsRebuild=!0}},exports.ObjectsMemento=Th,exports.PNGMediaType=10002,exports.Path=class extends uh{constructor(e,t={}){super(e,t),this._cachedLengths=[],this._dirty=!0,this._curves=[],this._t=0,this._dirtySubs=[],this._destroyedSubs=[],this.curves=t.curves||[],this.t=t.t}addCurve(e){this._curves.push(e),this._dirty=!0}set curves(e){var t,i,s;for(e=e||[],i=0,s=this._curves.length;i1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}get length(){var e=this._getCurveLengths();return e[e.length-1]}getPoint(e){for(var t,i=e*this.length,s=this._getCurveLengths(),r=0;r=i){var o=1-(s[r]-i)/(t=this._curves[r]).length;return t.getPointAt(o)}r++}return null}_getCurveLengths(){if(!this._dirty)return this._cachedLengths;var e,t=[],i=0,s=this._curves.length;for(e=0;e{this._shadowViewMatrixDirty=!0})),this._onCameraProjMatrix=s.on("projMatrix",(()=>{this._shadowProjMatrixDirty=!0})),this._onCanvasBoundary=r.on("boundary",(()=>{this._shadowProjMatrixDirty=!0})),this._state=new tt({type:"point",pos:c.vec3([1,1,1]),color:c.vec3([.7,.7,.8]),intensity:1,attenuation:[0,0,0],space:t.space||"view",castsShadow:!1,getShadowViewMatrix:()=>{if(i._shadowViewMatrixDirty){i._shadowViewMatrix||(i._shadowViewMatrix=c.identityMat4());const e=i._state.pos,t=s.look,r=s.up;c.lookAtMat4v(e,t,r,i._shadowViewMatrix),i._shadowViewMatrixDirty=!1}return i._shadowViewMatrix},getShadowProjMatrix:()=>{if(i._shadowProjMatrixDirty){i._shadowProjMatrix||(i._shadowProjMatrix=c.identityMat4());const e=i.scene.canvas.canvas;c.perspectiveMat4(Math.PI/180*70,e.clientWidth/e.clientHeight,.1,500,i._shadowProjMatrix),i._shadowProjMatrixDirty=!1}return i._shadowProjMatrix},getShadowRenderBuf:()=>(i._shadowRenderBuf||(i._shadowRenderBuf=new Je(i.scene.canvas.canvas,i.scene.canvas.gl,{size:[1024,1024]})),i._shadowRenderBuf)}),this.pos=t.pos,this.color=t.color,this.intensity=t.intensity,this.constantAttenuation=t.constantAttenuation,this.linearAttenuation=t.linearAttenuation,this.quadraticAttenuation=t.quadraticAttenuation,this.castsShadow=t.castsShadow,this.scene._lightCreated(this)}set pos(e){this._state.pos.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}get pos(){return this._state.pos}set color(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}get color(){return this._state.color}set intensity(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}get intensity(){return this._state.intensity}set constantAttenuation(e){this._state.attenuation[0]=e||0,this.glRedraw()}get constantAttenuation(){return this._state.attenuation[0]}set linearAttenuation(e){this._state.attenuation[1]=e||0,this.glRedraw()}get linearAttenuation(){return this._state.attenuation[1]}set quadraticAttenuation(e){this._state.attenuation[2]=e||0,this.glRedraw()}get quadraticAttenuation(){return this._state.attenuation[2]}set castsShadow(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}get castsShadow(){return this._state.castsShadow}destroy(){const e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),super.destroy(),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}},exports.PointerCircle=Q,exports.PointerLens=class{constructor(e,t={}){this.viewer=e,this.scene=this.viewer.scene,this._lensCursorDiv=document.createElement("div"),this.viewer.scene.canvas.canvas.parentNode.insertBefore(this._lensCursorDiv,this.viewer.scene.canvas.canvas),this._lensCursorDiv.style.background="pink",this._lensCursorDiv.style.border="2px solid red",this._lensCursorDiv.style.borderRadius="20px",this._lensCursorDiv.style.width="10px",this._lensCursorDiv.style.height="10px",this._lensCursorDiv.style.margin="-200px -200px",this._lensCursorDiv.style.zIndex="100000",this._lensCursorDiv.style.position="absolute",this._lensCursorDiv.style.pointerEvents="none",this._lensContainer=document.createElement("div"),this._lensContainer.style.border="1px solid black",this._lensContainer.style.background="white",this._lensContainer.style.borderRadius="50%",this._lensContainer.style.width="300px",this._lensContainer.style.height="300px",this._lensContainer.style.marginTop="85px",this._lensContainer.style.marginLeft="25px",this._lensContainer.style.zIndex="15000",this._lensContainer.style.position="absolute",this._lensContainer.style.pointerEvents="none",this._lensContainer.style.visibility="hidden",this._lensCanvas=document.createElement("canvas"),this._lensCanvas.style.borderRadius="50%",this._lensCanvas.style.width="300px",this._lensCanvas.style.height="300px",this._lensCanvas.style.zIndex="15000",this._lensCanvas.style.pointerEvents="none",document.body.appendChild(this._lensContainer),this._lensContainer.appendChild(this._lensCanvas),this._lensCanvasContext=this._lensCanvas.getContext("2d"),this._canvasElement=this.viewer.scene.canvas.canvas,this._canvasPos=null,this._snappedCanvasPos=null,this._lensPosToggle=!0,this._zoomLevel=t.zoomLevel||2,this._active=!1!==t.active,this._visible=!1,this._snapped=!1,this._onViewerRendering=this.viewer.scene.on("rendering",(()=>{this._active&&this._visible&&this.update()}))}update(){if(!this._active||!this._visible)return;if(!this._canvasPos)return;const e=this._lensContainer.getBoundingClientRect(),t=this._canvasElement.getBoundingClientRect(),i=this._canvasPos[0]e.left&&this._canvasPos[1]e.top;this._lensContainer.style.marginLeft="25px",i&&(this._lensPosToggle?this._lensContainer.style.marginTop=t.bottom-t.top-this._lensCanvas.height-85+"px":this._lensContainer.style.marginTop="85px",this._lensPosToggle=!this._lensPosToggle),this._lensCanvasContext.clearRect(0,0,this._lensCanvas.width,this._lensCanvas.height);const s=Math.max(this._lensCanvas.width,this._lensCanvas.height)/this._zoomLevel;this._lensCanvasContext.drawImage(this._canvasElement,this._canvasPos[0]-s/2,this._canvasPos[1]-s/2,s,s,0,0,this._lensCanvas.width,this._lensCanvas.height);const r=[(e.left+e.right)/2,(e.top+e.bottom)/2];if(this._snappedCanvasPos){const e=this._snappedCanvasPos[0]-this._canvasPos[0],t=this._snappedCanvasPos[1]-this._canvasPos[1];this._lensCursorDiv.style.marginLeft=r[0]+e*this._zoomLevel-10+"px",this._lensCursorDiv.style.marginTop=r[1]+t*this._zoomLevel-10+"px"}else this._lensCursorDiv.style.marginLeft=r[0]-10+"px",this._lensCursorDiv.style.marginTop=r[1]-10+"px"}set zoomFactor(e){this._zoomFactor=e,this.update()}get zoomFactor(){return this._zoomFactor}set canvasPos(e){this._canvasPos=e,this.update()}get canvasPos(){return this._canvasPos}set snappedCanvasPos(e){this._snappedCanvasPos=e,this.update()}get snappedCanvasPos(){return this._snappedCanvasPos}set snapped(e){this._snapped=e,e?(this._lensCursorDiv.style.background="greenyellow",this._lensCursorDiv.style.border="2px solid green"):(this._lensCursorDiv.style.background="pink",this._lensCursorDiv.style.border="2px solid red")}get snapped(){return this._snapped}set active(e){this._active=e,this._lensContainer.style.visibility=e&&this._visible?"visible":"hidden",e&&this._visible||(this._lensCursorDiv.style.marginLeft="-100px",this._lensCursorDiv.style.marginTop="-100px"),this.update()}get active(){return this._active}set visible(e){this._visible=e,this._lensContainer.style.visibility=e&&this._active?"visible":"hidden",e&&this._active||(this._lensCursorDiv.style.marginLeft="-100px",this._lensCursorDiv.style.marginTop="-100px"),this.update()}get visible(){return this._visible}destroy(){this._destroyed||(this.viewer.scene.off(this._onViewerRendering),this._lensContainer.removeChild(this._lensCanvas),document.body.removeChild(this._lensContainer),this._destroyed=!0)}},exports.QuadraticBezierCurve=class extends uh{constructor(e,t={}){super(e,t),this.v0=t.v0,this.v1=t.v1,this.v2=t.v2,this.t=t.t}set v0(e){this._v0=e||c.vec3([0,0,0])}get v0(){return this._v0}set v1(e){this._v1=e||c.vec3([0,0,0])}get v1(){return this._v1}set v2(e){this._v2=e||c.vec3([0,0,0])}get v2(){return this._v2}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=c.vec3();return t[0]=c.b2(e,this._v0[0],this._v1[0],this._v2[0]),t[1]=c.b2(e,this._v0[1],this._v1[1],this._v2[1]),t[2]=c.b2(e,this._v0[2],this._v1[2],this._v2[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,t:this._t}}},exports.Queue=d,exports.RGBAFormat=1023,exports.RGBAIntegerFormat=1033,exports.RGBA_ASTC_10x10_Format=37819,exports.RGBA_ASTC_10x5_Format=37816,exports.RGBA_ASTC_10x6_Format=37817,exports.RGBA_ASTC_10x8_Format=37818,exports.RGBA_ASTC_12x10_Format=37820,exports.RGBA_ASTC_12x12_Format=37821,exports.RGBA_ASTC_4x4_Format=37808,exports.RGBA_ASTC_5x4_Format=37809,exports.RGBA_ASTC_5x5_Format=37810,exports.RGBA_ASTC_6x5_Format=37811,exports.RGBA_ASTC_6x6_Format=37812,exports.RGBA_ASTC_8x5_Format=37813,exports.RGBA_ASTC_8x6_Format=37814,exports.RGBA_ASTC_8x8_Format=37815,exports.RGBA_BPTC_Format=36492,exports.RGBA_ETC2_EAC_Format=37496,exports.RGBA_PVRTC_2BPPV1_Format=35843,exports.RGBA_PVRTC_4BPPV1_Format=35842,exports.RGBA_S3TC_DXT1_Format=33777,exports.RGBA_S3TC_DXT3_Format=33778,exports.RGBA_S3TC_DXT5_Format=33779,exports.RGBFormat=1022,exports.RGB_ETC1_Format=36196,exports.RGB_ETC2_Format=37492,exports.RGB_PVRTC_2BPPV1_Format=35841,exports.RGB_PVRTC_4BPPV1_Format=35840,exports.RGB_S3TC_DXT1_Format=33776,exports.RGFormat=1030,exports.RGIntegerFormat=1031,exports.ReadableGeometry=kt,exports.RedFormat=1028,exports.RedIntegerFormat=1029,exports.ReflectionMap=class extends Eh{get type(){return"ReflectionMap"}constructor(e,t={}){super(e,t),this.scene._lightsState.addReflectionMap(this._state),this.scene._reflectionMapCreated(this)}destroy(){super.destroy(),this.scene._reflectionMapDestroyed(this)}},exports.RepeatWrapping=1e3,exports.STLDefaultDataSource=rw,exports.STLLoaderPlugin=class extends V{constructor(e,t={}){super("STLLoader",e,t),this._sceneGraphLoader=new nw,this.dataSource=t.dataSource}set dataSource(e){this._dataSource=e||new rw}get dataSource(){return this._dataSource}load(e){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new As(this.viewer.scene,_.apply(e,{isModel:!0})),i=e.src,s=e.stl;return i||s?(i?this._sceneGraphLoader.load(this,t,i,e):this._sceneGraphLoader.parse(this,t,s,e),t):(this.error("load() param expected: either 'src' or 'stl'"),t)}},exports.SceneModel=WA,exports.SceneModelMesh=Ns,exports.SceneModelTransform=kA,exports.SectionPlane=$i,exports.SectionPlanesPlugin=class extends V{constructor(e,t={}){if(super("SectionPlanes",e),this._freeControls=[],this._sectionPlanes=e.scene.sectionPlanes,this._controls={},this._shownControlId=null,null!==t.overviewCanvasId&&void 0!==t.overviewCanvasId){const e=document.getElementById(t.overviewCanvasId);e?this._overview=new GB(this,{overviewCanvas:e,visible:t.overviewVisible,onHoverEnterPlane:e=>{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;zB.set(this.viewer.scene.aabb),c.getAABB3Center(zB,WB),zB[0]+=t[0]-WB[0],zB[1]+=t[1]-WB[1],zB[2]+=t[2]-WB[2],zB[3]+=t[0]-WB[0],zB[4]+=t[1]-WB[1],zB[5]+=t[2]-WB[2],this.viewer.cameraFlight.flyTo({aabb:zB,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn("Can't find overview canvas: '"+t.overviewCanvasId+"' - will create plugin without overview")}this._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(e=>{this._sectionPlaneCreated(e)}))}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);return new $i(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new HB(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}getShownControl(){return this._shownControlId}hideControl(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(var t=0,i=e.length;t{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set collidable(e){this._mesh.collidable=!1!==e}get collidable(){return this._mesh.collidable}set clippable(e){this._mesh.clippable=!1!==e}get clippable(){return this._mesh.clippable}set pickable(e){this._mesh.pickable=!1!==e}get pickable(){return this._mesh.pickable}set opacity(e){this._mesh.opacity=e}get opacity(){return this._mesh.opacity}_updatePlaneSizeFromImage(){const e=.5*this._size,t=this._imageSize[0],i=this._imageSize[1],s=i/t;this._geometry.positions=t>i?[e,e*s,0,-e,e*s,0,-e,-e*s,0,e,-e*s,0]:[e/s,e,0,-e/s,e,0,-e/s,-e,0,e/s,-e,0]}},exports.StoreyViewsPlugin=class extends V{constructor(e,t={}){super("StoreyViews",e),this._objectsMemento=new Th,this._cameraMemento=new Ih,this.storeys={},this.modelStoreys={},this._fitStoreyMaps=!!t.fitStoreyMaps,this._onModelLoaded=this.viewer.scene.on("modelLoaded",(e=>{this._registerModelStoreys(e),this.fire("storeys",this.storeys)}))}_registerModelStoreys(e){const t=this.viewer,i=t.scene,s=t.metaScene,r=s.metaModels[e],o=i.models[e];if(!r||!r.rootMetaObjects)return;const n=r.rootMetaObjects;for(let t=0,r=n.length;t.5?a.length:0,h=new KB(this,o.aabb,l,e,n,A);h._onModelDestroyed=o.once("destroyed",(()=>{this._deregisterModelStoreys(e),this.fire("storeys",this.storeys)})),this.storeys[n]=h,this.modelStoreys[e]||(this.modelStoreys[e]={}),this.modelStoreys[e][n]=h}}}_deregisterModelStoreys(e){const t=this.modelStoreys[e];if(t){const i=this.viewer.scene;for(let e in t)if(t.hasOwnProperty(e)){const s=t[e],r=i.models[s.modelId];r&&r.off(s._onModelDestroyed),delete this.storeys[e]}delete this.modelStoreys[e]}}get fitStoreyMaps(){return this._fitStoreyMaps}gotoStoreyCamera(e,t={}){const i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),void(t.done&&t.done());const s=this.viewer,r=s.scene.camera,o=i.storeyAABB;if(o[3]{t.done()})):(s.cameraFlight.jumpTo(_.apply(t,{eye:h,look:n,up:u,orthoScale:A})),s.camera.ortho.scale=A)}showStoreyObjects(e,t={}){if(!this.storeys[e])return void this.error("IfcBuildingStorey not found with this ID: "+e);const i=this.viewer,s=i.scene;i.metaScene.metaObjects[e]&&(t.hideOthers&&s.setObjectsVisible(i.scene.visibleObjectIds,!1),this.withStoreyObjects(e,((e,t)=>{e&&(e.visible=!0)})))}withStoreyObjects(e,t){const i=this.viewer,s=i.scene,r=i.metaScene,o=r.metaObjects[e];if(!o)return;const n=o.getObjectIDsInSubtree();for(var a=0,l=n.length;au[1]&&u[0]>u[2],p=!d&&u[1]>u[0]&&u[1]>u[2];!d&&!p&&u[2]>u[0]&&(u[2],u[1]);const f=e.width/A,g=p?e.height/c:e.height/h;return i[0]=Math.floor(e.width-(t[0]-n)*f),i[1]=Math.floor(e.height-(t[2]-l)*g),i[0]>=0&&i[0]=0&&i[1]<=e.height}worldDirToStoreyMap(e,t,i){const s=this.viewer.camera,r=s.eye,o=s.look,n=c.subVec3(o,r,JB),a=s.worldUp,l=a[0]>a[1]&&a[0]>a[2],A=!l&&a[1]>a[0]&&a[1]>a[2];!l&&!A&&a[2]>a[0]&&(a[2],a[1]),l?(i[0]=n[1],i[1]=n[2]):A?(i[0]=n[0],i[1]=n[2]):(i[0]=n[0],i[1]=n[1]),c.normalizeVec2(i)}destroy(){this.viewer.scene.off(this._onModelLoaded),super.destroy()}},exports.Texture=Ps,exports.TextureTranscoder=class{transcode(e,t,i={}){}destroy(){}},exports.TreeViewPlugin=class extends V{constructor(e,t={}){super("TreeViewPlugin",e),this.errors=[],this.valid=!0;const i=t.containerElement||document.getElementById(t.containerElementId);if(i instanceof HTMLElement){for(let e=0;;e++)if(!pw[e]){pw[e]=this,this._index=e,this._id=`tree-${e}`;break}if(this._containerElement=i,this._metaModels={},this._autoAddModels=!1!==t.autoAddModels,this._autoExpandDepth=t.autoExpandDepth||0,this._sortNodes=!1!==t.sortNodes,this._viewer=e,this._rootElement=null,this._muteSceneEvents=!1,this._muteTreeEvents=!1,this._rootNodes=[],this._objectNodes={},this._nodeNodes={},this._rootNames={},this._sortNodes=t.sortNodes,this._pruneEmptyNodes=t.pruneEmptyNodes,this._showListItemElementId=null,this._renderService=t.renderService||new dw,!this._renderService)throw new Error("TreeViewPlugin: no render service set");if(this._containerElement.oncontextmenu=e=>{e.preventDefault()},this._onObjectVisibility=this._viewer.scene.on("objectVisibility",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;const s=e.visible;if(!(s!==i.checked))return;this._muteTreeEvents=!0,i.checked=s,s?i.numVisibleEntities++:i.numVisibleEntities--,this._renderService.setCheckbox(i.nodeId,s);let r=i.parent;for(;r;)r.checked=s,s?r.numVisibleEntities++:r.numVisibleEntities--,this._renderService.setCheckbox(r.nodeId,r.numVisibleEntities>0),r=r.parent;this._muteTreeEvents=!1})),this._onObjectXrayed=this._viewer.scene.on("objectXRayed",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;this._muteTreeEvents=!0;const s=e.xrayed;s!==i.xrayed&&(i.xrayed=s,this._renderService.setXRayed(i.nodeId,s),this._muteTreeEvents=!1)})),this._switchExpandHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._expandSwitchElement(t)},this._switchCollapseHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._collapseSwitchElement(t)},this._checkboxChangeHandler=e=>{if(this._muteTreeEvents)return;this._muteSceneEvents=!0;const t=e.target,i=this._renderService.isChecked(t),s=this._renderService.getIdFromCheckbox(t),r=this._nodeNodes[s],o=this._viewer.scene.objects;let n=0;this._withNodeTree(r,(e=>{const t=e.objectId,s=o[t],r=0===e.children.length;e.numVisibleEntities=i?e.numEntities:0,r&&i!==e.checked&&n++,e.checked=i,this._renderService.setCheckbox(e.nodeId,i),s&&(s.visible=i)}));let a=r.parent;for(;a;)a.checked=i,i?a.numVisibleEntities+=n:a.numVisibleEntities-=n,this._renderService.setCheckbox(a.nodeId,a.numVisibleEntities>0),a=a.parent;this._muteSceneEvents=!1},this._hierarchy=t.hierarchy||"containment",this._autoExpandDepth=t.autoExpandDepth||0,this._autoAddModels){const e=Object.keys(this.viewer.metaScene.metaModels);for(let t=0,i=e.length;t{this.viewer.metaScene.metaModels[e]&&this.addModel(e)}))}this.hierarchy=t.hierarchy}else this.error("Mandatory config expected: valid containerElementId or containerElement")}set hierarchy(e){"containment"!==(e=e||"containment")&&"storeys"!==e&&"types"!==e&&(this.error("Unsupported value for `hierarchy' - defaulting to 'containment'"),e="containment"),this._hierarchy!==e&&(this._hierarchy=e,this._createNodes())}get hierarchy(){return this._hierarchy}addModel(e,t={}){if(!this._containerElement)return;const i=this.viewer.scene.models[e];if(!i)throw"Model not found: "+e;const s=this.viewer.metaScene.metaModels[e];s?this._metaModels[e]?this.warn("Model already added: "+e):(this._metaModels[e]=s,t&&t.rootName&&(this._rootNames[e]=t.rootName),i.on("destroyed",(()=>{this.removeModel(i.id)})),this._createNodes()):this.error("MetaModel not found: "+e)}removeModel(e){if(!this._containerElement)return;this._metaModels[e]&&(this._rootNames[e]&&delete this._rootNames[e],delete this._metaModels[e],this._createNodes())}showNode(e){this.unShowNode();const t=this._objectNodes[e];if(!t)return;const i=t.nodeId,s=this._renderService.getSwitchElement(i);if(s)return this._expandSwitchElement(s),s.scrollIntoView(),!0;const r=[];r.unshift(t);let o=t.parent;for(;o;)r.unshift(o),o=o.parent;for(let e=0,t=r.length;e{if(s===e)return;const r=this._renderService.getSwitchElement(i.nodeId);if(r){this._expandSwitchElement(r);const e=i.children;for(var o=0,n=e.length;o0;return this.valid}_validateMetaModelForStoreysHierarchy(e=0,t,i){return!0}_createEnabledNodes(){switch(this._pruneEmptyNodes&&this._findEmptyNodes(),this._hierarchy){case"storeys":this._createStoreysNodes(),0===this._rootNodes.length&&this.error("Failed to build storeys hierarchy");break;case"types":this._createTypesNodes();break;default:this._createContainmentNodes()}this._sortNodes&&this._doSortNodes(),this._synchNodesToEntities(),this._createTrees(),this.expandToDepth(this._autoExpandDepth)}_createDisabledNodes(){const e=this._renderService.createRootNode();this._rootElement=e,this._containerElement.appendChild(e);const t=this._viewer.metaScene.rootMetaObjects;for(let i in t){const s=t[i],r=s.type,o=s.name,n=o&&""!==o&&"Undefined"!==o&&"Default"!==o?o:r,a=this._renderService.createDisabledNodeElement(n);e.appendChild(a)}}_findEmptyNodes(){const e=this._viewer.metaScene.rootMetaObjects;for(let t in e)this._findEmptyNodes2(e[t])}_findEmptyNodes2(e,t=0){const i=this.viewer.scene,s=e.children,r=e.id,o=i.objects[r];if(e._countEntities=0,o&&e._countEntities++,s)for(let t=0,i=s.length;t{e.aabb&&r.aabb||(e.aabb||(e.aabb=t.getAABB(s.getObjectIDsInSubtree(e.objectId))),r.aabb||(r.aabb=t.getAABB(s.getObjectIDsInSubtree(r.objectId))));let o=0;return o=i.xUp?0:i.yUp?1:2,e.aabb[o]>r.aabb[o]?-1:e.aabb[o]s?1:0}_synchNodesToEntities(){const e=Object.keys(this.viewer.metaScene.metaObjects),t=this._viewer.metaScene.metaObjects,i=this._viewer.scene.objects;for(let s=0,r=e.length;sthis._createNodeElement(e))),t=this._renderService.createRootNode();e.forEach((e=>{t.appendChild(e)})),this._containerElement.appendChild(t),this._rootElement=t}_createNodeElement(e){return this._renderService.createNodeElement(e,this._switchExpandHandler,this._checkboxChangeHandler,(t=>{this.fire("contextmenu",{event:t,viewer:this._viewer,treeViewPlugin:this,treeViewNode:e}),t.preventDefault()}),(t=>{this.fire("nodeTitleClicked",{event:t,viewer:this._viewer,treeViewPlugin:this,treeViewNode:e}),t.preventDefault()}))}_expandSwitchElement(e){if(this._renderService.isExpanded(e))return;const t=this._renderService.getId(e),i=this._nodeNodes[t].children.map((e=>this._createNodeElement(e)));this._renderService.addChildren(e,i),this._renderService.expand(e,this._switchExpandHandler,this._switchCollapseHandler)}_collapseNode(e){const t=this._renderService.getSwitchElement(e);this._collapseSwitchElement(t)}_collapseSwitchElement(e){this._renderService.collapse(e,this._switchExpandHandler,this._switchCollapseHandler)}},exports.UnsignedByteType=1009,exports.UnsignedInt248Type=1020,exports.UnsignedIntType=1014,exports.UnsignedShort4444Type=1017,exports.UnsignedShort5551Type=1018,exports.UnsignedShortType=1012,exports.VBOGeometry=Fs,exports.ViewCullPlugin=class extends V{constructor(e,t={}){super("ViewCull",e),this._objectCullStates=function(e){const t=e.id;let i=gw[t];return i||(i=new fw(e),gw[t]=i,e.on("destroyed",(()=>{delete gw[t],i._destroy()}))),i}(e.scene),this._maxTreeDepth=t.maxTreeDepth||8,this._modelInfos={},this._frustum=new U,this._kdRoot=null,this._frustumDirty=!1,this._kdTreeDirty=!1,this._onViewMatrix=e.scene.camera.on("viewMatrix",(()=>{this._frustumDirty=!0})),this._onProjMatrix=e.scene.camera.on("projMatMatrix",(()=>{this._frustumDirty=!0})),this._onModelLoaded=e.scene.on("modelLoaded",(e=>{const t=this.viewer.scene.models[e];t&&this._addModel(t)})),this._onSceneTick=e.scene.on("tick",(()=>{this._doCull()}))}set enabled(e){this._enabled=e}get enabled(){return this._enabled}_addModel(e){const t={model:e,onDestroyed:e.on("destroyed",(()=>{this._removeModel(e)}))};this._modelInfos[e.id]=t,this._kdTreeDirty=!0}_removeModel(e){const t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._kdTreeDirty=!0)}_doCull(){const e=this._frustumDirty||this._kdTreeDirty;if(this._frustumDirty&&this._buildFrustum(),this._kdTreeDirty&&this._buildKDTree(),e){const e=this._kdRoot;e&&this._visitKDNode(e)}}_buildFrustum(){const e=this.viewer.scene.camera;k(this._frustum,e.viewMatrix,e.projMatrix),this._frustumDirty=!1}_buildKDTree(){const e=this.viewer.scene;this._kdRoot,this._kdRoot={aabb:e.getAABB(),intersection:U.INTERSECT};for(let e=0,t=this._objectCullStates.numObjects;e=this._maxTreeDepth)return e.objects=e.objects||[],e.objects.push(i),void c.expandAABB3(e.aabb,r);if(e.left&&c.containsAABB3(e.left.aabb,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1);if(e.right&&c.containsAABB3(e.right.aabb,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1);const o=e.aabb;mw[0]=o[3]-o[0],mw[1]=o[4]-o[1],mw[2]=o[5]-o[2];let n=0;if(mw[1]>mw[n]&&(n=1),mw[2]>mw[n]&&(n=2),!e.left){const a=o.slice();if(a[n+3]=(o[n]+o[n+3])/2,e.left={aabb:a,intersection:U.INTERSECT},c.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1)}if(!e.right){const a=o.slice();if(a[n]=(o[n]+o[n+3])/2,e.right={aabb:a,intersection:U.INTERSECT},c.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1)}e.objects=e.objects||[],e.objects.push(i),c.expandAABB3(e.aabb,r)}_visitKDNode(e,t=U.INTERSECT){if(t!==U.INTERSECT&&e.intersects===t)return;t===U.INTERSECT&&(t=O(this._frustum,e.aabb),e.intersects=t);const i=t===U.OUTSIDE,s=e.objects;if(s&&s.length>0)for(let e=0,t=s.length;e{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=t.stats||{};if(r.sourceFormat="IFC",r.schemaVersion="",r.title="",r.author="",r.created="",r.numMetaObjects=0,r.numPropertySets=0,r.numObjects=0,r.numGeometries=0,r.numTriangles=0,r.numVertices=0,!this._ifcAPI)throw"WebIFCLoaderPlugin has no WebIFC instance configured - please inject via WebIFCLoaderPlugin constructor";const o=new Uint8Array(e),n=this._ifcAPI.OpenModel(o),a=this._ifcAPI.GetModelSchema(n),l=this._ifcAPI.GetLineIDsWithType(n,this._webIFC.IFCPROJECT).get(0),A=!1!==t.loadMetadata,h={modelID:n,modelSchema:a,sceneModel:s,loadMetadata:A,metadata:A?{id:"",projectId:""+l,author:"",createdAt:"",schema:"",creatingApplication:"",metaObjects:[],propertySets:[]}:null,metaObjects:{},options:i,log:function(e){},nextId:0,stats:r};if(A){if(i.includeTypes){h.includeTypes={};for(let e=0,t=i.includeTypes.length;e{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_parseMetaObjects(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCPROJECT).get(0),i=this._ifcAPI.GetLine(e.modelID,t);this._parseSpatialChildren(e,i)}_parseSpatialChildren(e,t,i){const s=this._ifcAPI.GetNameFromTypeCode(t.type);if(e.includeTypes&&!e.includeTypes[s])return;if(e.excludeTypes&&e.excludeTypes[s])return;this._createMetaObject(e,t,i);const r=t.GlobalId.value;this._parseRelatedItemsOfType(e,t.expressID,"RelatingObject","RelatedObjects",this._webIFC.IFCRELAGGREGATES,r),this._parseRelatedItemsOfType(e,t.expressID,"RelatingStructure","RelatedElements",this._webIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,r)}_createMetaObject(e,t,i){const s=t.GlobalId.value,r=this._ifcAPI.GetNameFromTypeCode(t.type),o={id:s,name:t.Name&&""!==t.Name.value?t.Name.value:r,type:r,parent:i};e.metadata.metaObjects.push(o),e.metaObjects[s]=o,e.stats.numMetaObjects++}_parseRelatedItemsOfType(e,t,i,s,r,o){const n=this._ifcAPI.GetLineIDsWithType(e.modelID,r);for(let r=0;re.value)).includes(t)}else h=A.value===t;if(h){const t=l[s];if(Array.isArray(t))t.forEach((t=>{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}));else{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}}}}_parsePropertySets(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCRELDEFINESBYPROPERTIES);for(let i=0;i0){const o="Default",n=t.Name.value,a=[];for(let e=0,t=s.length;e{const i=t.expressID,s=t.geometries,r=[],o=this._ifcAPI.GetLine(e.modelID,i).GlobalId.value;if(e.loadMetadata){const t=o,i=e.metaObjects[t];if(e.includeTypes&&(!i||!e.includeTypes[i.type]))return;if(e.excludeTypes&&(!i||e.excludeTypes[i.type]))return}const n=c.mat4(),a=c.vec3();for(let t=0,i=s.size();t{o.finalize(),a.finalize(),this.viewer.scene.canvas.spinner.processes--,o.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(a.id)})),this.scheduleTask((()=>{o.destroyed||(o.scene.fire("modelLoaded",o.id),o.fire("loaded",!0,!1))}))},A=e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e),o.fire("error",e)};let h=0;const c={getNextId:()=>`${n}.${h++}`};if(e.metaModelSrc||e.metaModelData)if(e.metaModelSrc){const r=e.metaModelSrc;this._dataSource.getMetaModel(r,(r=>{o.destroyed||(a.loadData(r,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()))}),(e=>{A(`load(): Failed to load model metadata for model '${n} from '${r}' - ${e}`)}))}else e.metaModelData&&(a.loadData(e.metaModelData,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()));else if(e.src)this._loadModel(e.src,e,t,o,a,c,l,A);else if(e.xkt)this._parseModel(e.xkt,e,t,o,a,c),l();else if(e.manifestSrc||e.manifest){const r=e.manifestSrc?function(e){const t=e.split("/");return t.pop(),t.join("/")+"/"}(e.manifestSrc):"",n=(e,o,n)=>{let l=0;const A=()=>{l>=e.length?o():this._dataSource.getMetaModel(`${r}${e[l]}`,(e=>{a.loadData(e,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),l++,this.scheduleTask(A,100)}),n)};A()},h=(i,s,n)=>{let a=0;const l=()=>{a>=i.length?s():this._dataSource.getXKT(`${r}${i[a]}`,(i=>{this._parseModel(i,e,t,o,null,c),a++,this.scheduleTask(l,100)}),n)};l()},u=(i,s,n)=>{let l=0;const A=()=>{l>=i.length?s():this._dataSource.getXKT(`${r}${i[l]}`,(i=>{this._parseModel(i,e,t,o,a,c),l++,this.scheduleTask(A,100)}),n)};A()};if(e.manifest){const t=e.manifest,i=t.xktFiles;if(!i||0===i.length)return void A("load(): Failed to load model manifest - manifest not valid");const s=t.metaModelFiles;s?n(s,(()=>{h(i,l,A)}),A):u(i,l,A)}else this._dataSource.getManifest(e.manifestSrc,(e=>{if(o.destroyed)return;const t=e.xktFiles;if(!t||0===t.length)return void A("load(): Failed to load model manifest - manifest not valid");const i=e.metaModelFiles;i?n(i,(()=>{h(t,l,A)}),A):u(t,l,A)}),A)}return o}_loadModel(e,t,i,s,r,o,n,a){this._dataSource.getXKT(t.src,(e=>{this._parseModel(e,t,i,s,r,o),n()}),a)}_parseModel(e,t,i,s,r,o){if(s.destroyed)return;const n=new DataView(e),a=new Uint8Array(e),l=n.getUint32(0,!0),A=oP[l];if(!A)return void this.error("Unsupported .XKT file version: "+l+" - this XKTLoaderPlugin supports versions "+Object.keys(oP));this.log("Loading .xkt V"+l);const h=n.getUint32(4,!0),c=[];let u=4*(h+2);for(let e=0;e[...e])).flat();return Rs({id:e.id,points:t})},exports.buildSphereGeometry=Yi,exports.buildTorusGeometry=Ts,exports.buildVectorTextGeometry=qi,exports.createRTCViewMat=j,exports.frustumIntersectsAABB3=O,exports.getKTX2TextureTranscoder=bA,exports.getPlaneRTCPos=W,exports.load3DSGeometry=function(e,t={}){return new Promise((function(i,s){t.src||(console.error("load3DSGeometry: Parameter expected: src"),s());var r=e.canvas.spinner;r.processes++,_.loadArraybuffer(t.src,(function(e){e.byteLength||(console.error("load3DSGeometry: no data loaded"),r.processes--,s());var o=Es.parse.from3DS(e).edit.objects[0].mesh,n=o.vertices,a=o.uvt,l=o.indices;r.processes--,i(_.apply(t,{primitive:"triangles",positions:n,normals:null,uv:a,indices:l}))}),(function(e){console.error("load3DSGeometry: "+e),r.processes--,s()}))}))},exports.loadOBJGeometry=function(e,t={}){return new Promise((function(i,s){t.src||(console.error("loadOBJGeometry: Parameter expected: src"),s());var r=e.canvas.spinner;r.processes++,_.loadArraybuffer(t.src,(function(e){e.byteLength||(console.error("loadOBJGeometry: no data loaded"),r.processes--,s());for(var o=Es.parse.fromOBJ(e),n=Es.edit.unwrap(o.i_verts,o.c_verts,3),a=Es.edit.unwrap(o.i_norms,o.c_norms,3),l=Es.edit.unwrap(o.i_uvt,o.c_uvt,2),A=new Int32Array(o.i_verts.length),h=0;h0?a:null,autoNormals:0===a.length,uv:l,indices:A}))}),(function(e){console.error("loadOBJGeometry: "+e),r.processes--,s()}))}))},exports.math=c,exports.rtcToWorldPos=function(e,t,i){return i[0]=e[0]+t[0],i[1]=e[1]+t[1],i[2]=e[2]+t[2],i},exports.sRGBEncoding=3001,exports.setFrustum=k,exports.stats=p,exports.utils=_,exports.worldToRTCPos=G,exports.worldToRTCPositions=z; +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).pako={})}(void 0,(function(e){function t(e){let t=e.length;for(;--t>=0;)e[t]=0}const i=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),o=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),n=new Array(576);t(n);const a=new Array(60);t(a);const l=new Array(512);t(l);const A=new Array(256);t(A);const h=new Array(29);t(h);const c=new Array(30);function u(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}let d,p,f;function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(c);const m=e=>e<256?l[e]:l[256+(e>>>7)],_=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},v=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<{v(e,i[2*t],i[2*t+1])},y=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},x=(e,t,i)=>{const s=new Array(16);let r,o,n=0;for(r=1;r<=15;r++)n=n+i[r-1]<<1,s[r]=n;for(o=0;o<=t;o++){let t=e[2*o+1];0!==t&&(e[2*o]=y(s[t]++,t))}},B=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},w=e=>{e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},P=(e,t,i,s)=>{const r=2*t,o=2*i;return e[r]{const s=e.heap[i];let r=i<<1;for(;r<=e.heap_len&&(r{let o,n,a,l,u=0;if(0!==e.sym_next)do{o=255&e.pending_buf[e.sym_buf+u++],o+=(255&e.pending_buf[e.sym_buf+u++])<<8,n=e.pending_buf[e.sym_buf+u++],0===o?b(e,n,t):(a=A[n],b(e,a+256+1,t),l=i[a],0!==l&&(n-=h[a],v(e,n,l)),o--,a=m(o),b(e,a,r),l=s[a],0!==l&&(o-=c[a],v(e,o,l)))}while(u{const i=t.dyn_tree,s=t.stat_desc.static_tree,r=t.stat_desc.has_stree,o=t.stat_desc.elems;let n,a,l,A=-1;for(e.heap_len=0,e.heap_max=573,n=0;n>1;n>=1;n--)C(e,i,n);l=o;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],C(e,i,1),a=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=a,i[2*l]=i[2*n]+i[2*a],e.depth[l]=(e.depth[n]>=e.depth[a]?e.depth[n]:e.depth[a])+1,i[2*n+1]=i[2*a+1]=l,e.heap[1]=l++,C(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,s=t.max_code,r=t.stat_desc.static_tree,o=t.stat_desc.has_stree,n=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let A,h,c,u,d,p,f=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(i[2*e.heap[e.heap_max]+1]=0,A=e.heap_max+1;A<573;A++)h=e.heap[A],u=i[2*i[2*h+1]+1]+1,u>l&&(u=l,f++),i[2*h+1]=u,h>s||(e.bl_count[u]++,d=0,h>=a&&(d=n[h-a]),p=i[2*h],e.opt_len+=p*(u+d),o&&(e.static_len+=p*(r[2*h+1]+d)));if(0!==f){do{for(u=l-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[l]--,f-=2}while(f>0);for(u=l;0!==u;u--)for(h=e.bl_count[u];0!==h;)c=e.heap[--A],c>s||(i[2*c+1]!==u&&(e.opt_len+=(u-i[2*c+1])*i[2*c],i[2*c+1]=u),h--)}})(e,t),x(i,A,e.bl_count)},E=(e,t,i)=>{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=n,n=t[2*(s+1)+1],++a{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),s=0;s<=i;s++)if(r=n,n=t[2*(s+1)+1],!(++a{v(e,0+(s?1:0),3),w(e),_(e,i),_(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var T={_tr_init:e=>{D||((()=>{let e,t,o,g,m;const _=new Array(16);for(o=0,g=0;g<28;g++)for(h[g]=o,e=0;e<1<>=7;g<30;g++)for(c[g]=m<<7,e=0;e<1<{let r,l,A=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),F(e,e.l_desc),F(e,e.d_desc),A=(e=>{let t;for(E(e,e.dyn_ltree,e.l_desc.max_code),E(e,e.dyn_dtree,e.d_desc.max_code),F(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*o[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,l=e.static_len+3+7>>>3,l<=r&&(r=l)):r=l=i+5,i+4<=r&&-1!==t?S(e,t,i,s):4===e.strategy||l===r?(v(e,2+(s?1:0),3),M(e,n,a)):(v(e,4+(s?1:0),3),((e,t,i,s)=>{let r;for(v(e,t-257,5),v(e,i-1,5),v(e,s-4,4),r=0;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(A[i]+256+1)]++,e.dyn_dtree[2*m(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{v(e,2,3),b(e,256,n),(e=>{16===e.bi_valid?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},R=(e,t,i,s)=>{let r=65535&e|0,o=e>>>16&65535|0,n=0;for(;0!==i;){n=i>2e3?2e3:i,i-=n;do{r=r+t[s++]|0,o=o+r|0}while(--n);r%=65521,o%=65521}return r|o<<16|0};const L=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var U=(e,t,i,s)=>{const r=L,o=s+i;e^=-1;for(let i=s;i>>8^r[255&(e^t[i])];return-1^e},k={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},O={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:N,_tr_stored_block:Q,_tr_flush_block:V,_tr_tally:H,_tr_align:j}=T,{Z_NO_FLUSH:G,Z_PARTIAL_FLUSH:z,Z_FULL_FLUSH:W,Z_FINISH:K,Z_BLOCK:X,Z_OK:J,Z_STREAM_END:Y,Z_STREAM_ERROR:Z,Z_DATA_ERROR:q,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:ee,Z_FILTERED:te,Z_HUFFMAN_ONLY:ie,Z_RLE:se,Z_FIXED:re,Z_DEFAULT_STRATEGY:oe,Z_UNKNOWN:ne,Z_DEFLATED:ae}=O,le=258,Ae=262,he=42,ce=113,ue=666,de=(e,t)=>(e.msg=k[t],t),pe=e=>2*e-(e>4?9:0),fe=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ge=e=>{let t,i,s,r=e.w_size;t=e.hash_size,s=t;do{i=e.head[--s],e.head[s]=i>=r?i-r:0}while(--t);t=r,s=t;do{i=e.prev[--s],e.prev[s]=i>=r?i-r:0}while(--t)};let me=(e,t,i)=>(t<{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},ve=(e,t)=>{V(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,_e(e.strm)},be=(e,t)=>{e.pending_buf[e.pending++]=t},ye=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},xe=(e,t,i,s)=>{let r=e.avail_in;return r>s&&(r=s),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=R(e.adler,t,r,i):2===e.state.wrap&&(e.adler=U(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},Be=(e,t)=>{let i,s,r=e.max_chain_length,o=e.strstart,n=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-Ae?e.strstart-(e.w_size-Ae):0,A=e.window,h=e.w_mask,c=e.prev,u=e.strstart+le;let d=A[o+n-1],p=A[o+n];e.prev_length>=e.good_match&&(r>>=2),a>e.lookahead&&(a=e.lookahead);do{if(i=t,A[i+n]===p&&A[i+n-1]===d&&A[i]===A[o]&&A[++i]===A[o+1]){o+=2,i++;do{}while(A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&on){if(e.match_start=t,n=s,s>=a)break;d=A[o+n-1],p=A[o+n]}}}while((t=c[t&h])>l&&0!=--r);return n<=e.lookahead?n:e.lookahead},we=e=>{const t=e.w_size;let i,s,r;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ae)&&(e.window.set(e.window.subarray(t,t+t-s),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ge(e),s+=t),0===e.strm.avail_in)break;if(i=xe(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=i,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=me(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=me(e,e.ins_h,e.window[r+3-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let i,s,r,o=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n=0,a=e.strm.avail_in;do{if(i=65535,r=e.bi_valid+42>>3,e.strm.avail_outs+e.strm.avail_in&&(i=s+e.strm.avail_in),i>r&&(i=r),i>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,_e(e.strm),s&&(s>i&&(s=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,i-=s),i&&(xe(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===n);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_waterr&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(xe(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water>3,r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r,o=r>e.w_size?e.w_size:r,s=e.strstart-e.block_start,(s>=o||(s||t===K)&&t!==G&&0===e.strm.avail_in&&s<=r)&&(i=s>r?r:s,n=t===K&&0===e.strm.avail_in&&i===s?1:0,Q(e,e.block_start,i,n),e.block_start+=i,_e(e.strm)),n?3:1)},Ce=(e,t)=>{let i,s;for(;;){if(e.lookahead=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-Ae&&(e.match_length=Be(e,i)),e.match_length>=3)if(s=H(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=me(e,e.ins_h,e.window[e.strstart+1]);else s=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2},Me=(e,t)=>{let i,s,r;for(;;){if(e.lookahead=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=H(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,s&&(ve(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(s=H(e,0,e.window[e.strstart-1]),s&&ve(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=H(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2};function Fe(e,t,i,s,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=s,this.func=r}const Ee=[new Fe(0,0,0,0,Pe),new Fe(4,4,8,4,Ce),new Fe(4,5,16,8,Ce),new Fe(4,6,32,32,Ce),new Fe(4,4,16,16,Me),new Fe(8,16,32,32,Me),new Fe(8,16,128,128,Me),new Fe(8,32,128,256,Me),new Fe(32,128,258,1024,Me),new Fe(32,258,258,4096,Me)];function Ie(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ae,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),fe(this.dyn_ltree),fe(this.dyn_dtree),fe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),fe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),fe(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const De=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==he&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==ce&&t.status!==ue?1:0},Se=e=>{if(De(e))return de(e,Z);e.total_in=e.total_out=0,e.data_type=ne;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?he:ce,e.adler=2===t.wrap?0:1,t.last_flush=-2,N(t),J},Te=e=>{const t=Se(e);var i;return t===J&&((i=e.state).window_size=2*i.w_size,fe(i.head),i.max_lazy_match=Ee[i.level].max_lazy,i.good_match=Ee[i.level].good_length,i.nice_match=Ee[i.level].nice_length,i.max_chain_length=Ee[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),t},Re=(e,t,i,s,r,o)=>{if(!e)return Z;let n=1;if(t===ee&&(t=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),r<1||r>9||i!==ae||s<8||s>15||t<0||t>9||o<0||o>re||8===s&&1!==n)return de(e,Z);8===s&&(s=9);const a=new Ie;return e.state=a,a.strm=e,a.status=he,a.wrap=n,a.gzhead=null,a.w_bits=s,a.w_size=1<De(e)||2!==e.state.wrap?Z:(e.state.gzhead=t,J),ke=(e,t)=>{if(De(e)||t>X||t<0)return e?de(e,Z):Z;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ue&&t!==K)return de(e,0===e.avail_out?$:Z);const s=i.last_flush;if(i.last_flush=t,0!==i.pending){if(_e(e),0===e.avail_out)return i.last_flush=-1,J}else if(0===e.avail_in&&pe(t)<=pe(s)&&t!==K)return de(e,$);if(i.status===ue&&0!==e.avail_in)return de(e,$);if(i.status===he&&0===i.wrap&&(i.status=ce),i.status===he){let t=ae+(i.w_bits-8<<4)<<8,s=-1;if(s=i.strategy>=ie||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=s<<6,0!==i.strstart&&(t|=32),t+=31-t%31,ye(i,t),0!==i.strstart&&(ye(i,e.adler>>>16),ye(i,65535&e.adler)),e.adler=1,i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(57===i.status)if(e.adler=0,be(i,31),be(i,139),be(i,8),i.gzhead)be(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),be(i,255&i.gzhead.time),be(i,i.gzhead.time>>8&255),be(i,i.gzhead.time>>16&255),be(i,i.gzhead.time>>24&255),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(be(i,255&i.gzhead.extra.length),be(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=U(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(be(i,0),be(i,0),be(i,0),be(i,0),be(i,0),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,3),i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J;if(69===i.status){if(i.gzhead.extra){let t=i.pending,s=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+s>i.pending_buf_size;){let r=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=r,_e(e),0!==i.pending)return i.last_flush=-1,J;t=0,s-=r}let r=new Uint8Array(i.gzhead.extra);i.pending_buf.set(r.subarray(i.gzindex,i.gzindex+s),i.pending),i.pending+=s,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindexs&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindexs&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(_e(e),0!==i.pending))return i.last_flush=-1,J;be(i,255&e.adler),be(i,e.adler>>8&255),e.adler=0}if(i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(0!==e.avail_in||0!==i.lookahead||t!==G&&i.status!==ue){let s=0===i.level?Pe(i,t):i.strategy===ie?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(we(e),0===e.lookahead)){if(t===G)return 1;break}if(e.match_length=0,i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===se?((e,t)=>{let i,s,r,o;const n=e.window;for(;;){if(e.lookahead<=le){if(we(e),e.lookahead<=le&&t===G)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=e.strstart-1,s=n[r],s===n[++r]&&s===n[++r]&&s===n[++r])){o=e.strstart+le;do{}while(s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=H(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):Ee[i.level].func(i,t);if(3!==s&&4!==s||(i.status=ue),1===s||3===s)return 0===e.avail_out&&(i.last_flush=-1),J;if(2===s&&(t===z?j(i):t!==X&&(Q(i,0,0,!1),t===W&&(fe(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),_e(e),0===e.avail_out))return i.last_flush=-1,J}return t!==K?J:i.wrap<=0?Y:(2===i.wrap?(be(i,255&e.adler),be(i,e.adler>>8&255),be(i,e.adler>>16&255),be(i,e.adler>>24&255),be(i,255&e.total_in),be(i,e.total_in>>8&255),be(i,e.total_in>>16&255),be(i,e.total_in>>24&255)):(ye(i,e.adler>>>16),ye(i,65535&e.adler)),_e(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?J:Y)},Oe=e=>{if(De(e))return Z;const t=e.state.status;return e.state=null,t===ce?de(e,q):J},Ne=(e,t)=>{let i=t.length;if(De(e))return Z;const s=e.state,r=s.wrap;if(2===r||1===r&&s.status!==he||s.lookahead)return Z;if(1===r&&(e.adler=R(e.adler,t,i,0)),s.wrap=0,i>=s.w_size){0===r&&(fe(s.head),s.strstart=0,s.block_start=0,s.insert=0);let e=new Uint8Array(s.w_size);e.set(t.subarray(i-s.w_size,i),0),t=e,i=s.w_size}const o=e.avail_in,n=e.next_in,a=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,we(s);s.lookahead>=3;){let e=s.strstart,t=s.lookahead-2;do{s.ins_h=me(s,s.ins_h,s.window[e+3-1]),s.prev[e&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=e,e++}while(--t);s.strstart=e,s.lookahead=2,we(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,e.next_in=n,e.input=a,e.avail_in=o,s.wrap=r,J};const Qe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Ve=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Qe(i,t)&&(e[t]=i[t])}}return e},He=e=>{let t=0;for(let i=0,s=e.length;i=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ge[254]=Ge[254]=1;var ze=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,s,r,o,n=e.length,a=0;for(r=0;r>>6,t[o++]=128|63&i):i<65536?(t[o++]=224|i>>>12,t[o++]=128|i>>>6&63,t[o++]=128|63&i):(t[o++]=240|i>>>18,t[o++]=128|i>>>12&63,t[o++]=128|i>>>6&63,t[o++]=128|63&i);return t},We=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let s,r;const o=new Array(2*i);for(r=0,s=0;s4)o[r++]=65533,s+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&s1?o[r++]=65533:t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&je)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let s=0;s{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Ge[e[i]]>t?i:t},Xe=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Je=Object.prototype.toString,{Z_NO_FLUSH:Ye,Z_SYNC_FLUSH:Ze,Z_FULL_FLUSH:qe,Z_FINISH:$e,Z_OK:et,Z_STREAM_END:tt,Z_DEFAULT_COMPRESSION:it,Z_DEFAULT_STRATEGY:st,Z_DEFLATED:rt}=O;function ot(e){this.options=Ve({level:it,method:rt,chunkSize:16384,windowBits:15,memLevel:8,strategy:st},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Le(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==et)throw new Error(k[i]);if(t.header&&Ue(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ze(t.dictionary):"[object ArrayBuffer]"===Je.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ne(this.strm,e),i!==et)throw new Error(k[i]);this._dict_set=!0}}function nt(e,t){const i=new ot(t);if(i.push(e,!0),i.err)throw i.msg||k[i.err];return i.result}ot.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize;let r,o;if(this.ended)return!1;for(o=t===~~t?t:!0===t?$e:Ye,"string"==typeof e?i.input=ze(e):"[object ArrayBuffer]"===Je.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),(o===Ze||o===qe)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(r=ke(i,o),r===tt)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=Oe(this.strm),this.onEnd(r),this.ended=!0,r===et;if(0!==i.avail_out){if(o>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ot.prototype.onData=function(e){this.chunks.push(e)},ot.prototype.onEnd=function(e){e===et&&(this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var at={Deflate:ot,deflate:nt,deflateRaw:function(e,t){return(t=t||{}).raw=!0,nt(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,nt(e,t)},constants:O};const lt=16209;var At=function(e,t){let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,x,B,w,P;const C=e.state;i=e.next_in,w=e.input,s=i+(e.avail_in-5),r=e.next_out,P=e.output,o=r-(t-e.avail_out),n=r+(e.avail_out-257),a=C.dmax,l=C.wsize,A=C.whave,h=C.wnext,c=C.window,u=C.hold,d=C.bits,p=C.lencode,f=C.distcode,g=(1<>>24,u>>>=v,d-=v,v=_>>>16&255,0===v)P[r++]=65535&_;else{if(!(16&v)){if(0==(64&v)){_=p[(65535&_)+(u&(1<>>=v,d-=v),d<15&&(u+=w[i++]<>>24,u>>>=v,d-=v,v=_>>>16&255,!(16&v)){if(0==(64&v)){_=f[(65535&_)+(u&(1<a){e.msg="invalid distance too far back",C.mode=lt;break e}if(u>>>=v,d-=v,v=r-o,y>v){if(v=y-v,v>A&&C.sane){e.msg="invalid distance too far back",C.mode=lt;break e}if(x=0,B=c,0===h){if(x+=l-v,v2;)P[r++]=B[x++],P[r++]=B[x++],P[r++]=B[x++],b-=3;b&&(P[r++]=B[x++],b>1&&(P[r++]=B[x++]))}else{x=r-y;do{P[r++]=P[x++],P[r++]=P[x++],P[r++]=P[x++],b-=3}while(b>2);b&&(P[r++]=P[x++],b>1&&(P[r++]=P[x++]))}break}}break}}while(i>3,i-=b,d-=b<<3,u&=(1<{const l=a.bits;let A,h,c,u,d,p,f=0,g=0,m=0,_=0,v=0,b=0,y=0,x=0,B=0,w=0,P=null;const C=new Uint16Array(16),M=new Uint16Array(16);let F,E,I,D=null;for(f=0;f<=15;f++)C[f]=0;for(g=0;g=1&&0===C[_];_--);if(v>_&&(v=_),0===_)return r[o++]=20971520,r[o++]=20971520,a.bits=1,0;for(m=1;m<_&&0===C[m];m++);for(v0&&(0===e||1!==_))return-1;for(M[1]=0,f=1;f<15;f++)M[f+1]=M[f]+C[f];for(g=0;g852||2===e&&B>592)return 1;for(;;){F=f-y,n[g]+1=p?(E=D[n[g]-p],I=P[n[g]-p]):(E=96,I=0),A=1<>y)+h]=F<<24|E<<16|I|0}while(0!==h);for(A=1<>=1;if(0!==A?(w&=A-1,w+=A):w=0,g++,0==--C[f]){if(f===_)break;f=t[i+n[g]]}if(f>v&&(w&u)!==c){for(0===y&&(y=v),d+=m,b=f-y,x=1<852||2===e&&B>592)return 1;c=w&u,r[c]=v<<24|b<<16|d-o|0}}return 0!==w&&(r[d+w]=f-y<<24|64<<16|0),a.bits=v,0};const{Z_FINISH:ft,Z_BLOCK:gt,Z_TREES:mt,Z_OK:_t,Z_STREAM_END:vt,Z_NEED_DICT:bt,Z_STREAM_ERROR:yt,Z_DATA_ERROR:xt,Z_MEM_ERROR:Bt,Z_BUF_ERROR:wt,Z_DEFLATED:Pt}=O,Ct=16180,Mt=16190,Ft=16191,Et=16192,It=16194,Dt=16199,St=16200,Tt=16206,Rt=16209,Lt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const kt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},Ot=e=>{if(kt(e))return yt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ct,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,_t},Nt=e=>{if(kt(e))return yt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Ot(e)},Qt=(e,t)=>{let i;if(kt(e))return yt;const s=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?yt:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,Nt(e))},Vt=(e,t)=>{if(!e)return yt;const i=new Ut;e.state=i,i.strm=e,i.window=null,i.mode=Ct;const s=Qt(e,t);return s!==_t&&(e.state=null),s};let Ht,jt,Gt=!0;const zt=e=>{if(Gt){Ht=new Int32Array(512),jt=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(pt(1,e.lens,0,288,Ht,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;pt(2,e.lens,0,32,jt,0,e.work,{bits:5}),Gt=!1}e.lencode=Ht,e.lenbits=9,e.distcode=jt,e.distbits=5},Wt=(e,t,i,s)=>{let r;const o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(i-o.wsize,i),0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>s&&(r=s),o.window.set(t.subarray(i-s,i-s+r),o.wnext),(s-=r)?(o.window.set(t.subarray(i-s,i),0),o.wnext=s,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave{let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,x,B,w=0;const P=new Uint8Array(4);let C,M;const F=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(kt(e)||!e.output||!e.input&&0!==e.avail_in)return yt;i=e.state,i.mode===Ft&&(i.mode=Et),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,c=a,u=l,B=_t;e:for(;;)switch(i.mode){case Ct:if(0===i.wrap){i.mode=Et;break}for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>>8&255,i.check=U(i.check,P,2,0),A=0,h=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&A)<<8)+(A>>8))%31){e.msg="incorrect header check",i.mode=Rt;break}if((15&A)!==Pt){e.msg="unknown compression method",i.mode=Rt;break}if(A>>>=4,h-=4,x=8+(15&A),0===i.wbits&&(i.wbits=x),x>15||x>i.wbits){e.msg="invalid window size",i.mode=Rt;break}i.dmax=1<>8&1),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16182;case 16182:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<>>8&255,P[2]=A>>>16&255,P[3]=A>>>24&255,i.check=U(i.check,P,4,0)),A=0,h=0,i.mode=16183;case 16183:for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>8),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16184;case 16184:if(1024&i.flags){for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(d=i.length,d>a&&(d=a),d&&(i.head&&(x=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(o,o+d),x)),512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,i.length-=d),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===a)break e;d=0;do{x=s[o+d++],i.head&&x&&i.length<65536&&(i.head.name+=String.fromCharCode(x))}while(x&&d>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Ft;break;case 16189:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<>>=7&h,h-=7&h,i.mode=Tt;break}for(;h<3;){if(0===a)break e;a--,A+=s[o++]<>>=1,h-=1,3&A){case 0:i.mode=16193;break;case 1:if(zt(i),i.mode=Dt,t===mt){A>>>=2,h-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Rt}A>>>=2,h-=2;break;case 16193:for(A>>>=7&h,h-=7&h;h<32;){if(0===a)break e;a--,A+=s[o++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=Rt;break}if(i.length=65535&A,A=0,h=0,i.mode=It,t===mt)break e;case It:i.mode=16195;case 16195:if(d=i.length,d){if(d>a&&(d=a),d>l&&(d=l),0===d)break e;r.set(s.subarray(o,o+d),n),a-=d,o+=d,l-=d,n+=d,i.length-=d;break}i.mode=Ft;break;case 16196:for(;h<14;){if(0===a)break e;a--,A+=s[o++]<>>=5,h-=5,i.ndist=1+(31&A),A>>>=5,h-=5,i.ncode=4+(15&A),A>>>=4,h-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Rt;break}i.have=0,i.mode=16197;case 16197:for(;i.have>>=3,h-=3}for(;i.have<19;)i.lens[F[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,C={bits:i.lenbits},B=pt(0,i.lens,0,19,i.lencode,0,i.work,C),i.lenbits=C.bits,B){e.msg="invalid code lengths set",i.mode=Rt;break}i.have=0,i.mode=16198;case 16198:for(;i.have>>24,m=w>>>16&255,_=65535&w,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=g,h-=g,i.lens[i.have++]=_;else{if(16===_){for(M=g+2;h>>=g,h-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=Rt;break}x=i.lens[i.have-1],d=3+(3&A),A>>>=2,h-=2}else if(17===_){for(M=g+3;h>>=g,h-=g,x=0,d=3+(7&A),A>>>=3,h-=3}else{for(M=g+7;h>>=g,h-=g,x=0,d=11+(127&A),A>>>=7,h-=7}if(i.have+d>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Rt;break}for(;d--;)i.lens[i.have++]=x}}if(i.mode===Rt)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Rt;break}if(i.lenbits=9,C={bits:i.lenbits},B=pt(1,i.lens,0,i.nlen,i.lencode,0,i.work,C),i.lenbits=C.bits,B){e.msg="invalid literal/lengths set",i.mode=Rt;break}if(i.distbits=6,i.distcode=i.distdyn,C={bits:i.distbits},B=pt(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,C),i.distbits=C.bits,B){e.msg="invalid distances set",i.mode=Rt;break}if(i.mode=Dt,t===mt)break e;case Dt:i.mode=St;case St:if(a>=6&&l>=258){e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,At(e,u),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,i.mode===Ft&&(i.back=-1);break}for(i.back=0;w=i.lencode[A&(1<>>24,m=w>>>16&255,_=65535&w,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>v)],g=w>>>24,m=w>>>16&255,_=65535&w,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,i.length=_,0===m){i.mode=16205;break}if(32&m){i.back=-1,i.mode=Ft;break}if(64&m){e.msg="invalid literal/length code",i.mode=Rt;break}i.extra=15&m,i.mode=16201;case 16201:if(i.extra){for(M=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;w=i.distcode[A&(1<>>24,m=w>>>16&255,_=65535&w,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>v)],g=w>>>24,m=w>>>16&255,_=65535&w,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,64&m){e.msg="invalid distance code",i.mode=Rt;break}i.offset=_,i.extra=15&m,i.mode=16203;case 16203:if(i.extra){for(M=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Rt;break}i.mode=16204;case 16204:if(0===l)break e;if(d=u-l,i.offset>d){if(d=i.offset-d,d>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Rt;break}d>i.wnext?(d-=i.wnext,p=i.wsize-d):p=i.wnext-d,d>i.length&&(d=i.length),f=i.window}else f=r,p=n-i.offset,d=i.length;d>l&&(d=l),l-=d,i.length-=d;do{r[n++]=f[p++]}while(--d);0===i.length&&(i.mode=St);break;case 16205:if(0===l)break e;r[n++]=i.length,l--,i.mode=St;break;case Tt:if(i.wrap){for(;h<32;){if(0===a)break e;a--,A|=s[o++]<{if(kt(e))return yt;let t=e.state;return t.window&&(t.window=null),e.state=null,_t},Zt=(e,t)=>{if(kt(e))return yt;const i=e.state;return 0==(2&i.wrap)?yt:(i.head=t,t.done=!1,_t)},qt=(e,t)=>{const i=t.length;let s,r,o;return kt(e)?yt:(s=e.state,0!==s.wrap&&s.mode!==Mt?yt:s.mode===Mt&&(r=1,r=R(r,t,i,0),r!==s.check)?xt:(o=Wt(e,t,i,i),o?(s.mode=16210,Bt):(s.havedict=1,_t)))},$t=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const ei=Object.prototype.toString,{Z_NO_FLUSH:ti,Z_FINISH:ii,Z_OK:si,Z_STREAM_END:ri,Z_NEED_DICT:oi,Z_STREAM_ERROR:ni,Z_DATA_ERROR:ai,Z_MEM_ERROR:li}=O;function Ai(e){this.options=Ve({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Xt(this.strm,t.windowBits);if(i!==si)throw new Error(k[i]);if(this.header=new $t,Zt(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ze(t.dictionary):"[object ArrayBuffer]"===ei.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=qt(this.strm,t.dictionary),i!==si)))throw new Error(k[i])}function hi(e,t){const i=new Ai(t);if(i.push(e),i.err)throw i.msg||k[i.err];return i.result}Ai.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize,r=this.options.dictionary;let o,n,a;if(this.ended)return!1;for(n=t===~~t?t:!0===t?ii:ti,"[object ArrayBuffer]"===ei.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),o=Jt(i,n),o===oi&&r&&(o=qt(i,r),o===si?o=Jt(i,n):o===ai&&(o=oi));i.avail_in>0&&o===ri&&i.state.wrap>0&&0!==e[i.next_in];)Kt(i),o=Jt(i,n);switch(o){case ni:case ai:case oi:case li:return this.onEnd(o),this.ended=!0,!1}if(a=i.avail_out,i.next_out&&(0===i.avail_out||o===ri))if("string"===this.options.to){let e=Ke(i.output,i.next_out),t=i.next_out-e,r=We(i.output,e);i.next_out=t,i.avail_out=s-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(r)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(o!==si||0!==a){if(o===ri)return o=Yt(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},Ai.prototype.onData=function(e){this.chunks.push(e)},Ai.prototype.onEnd=function(e){e===si&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ci={Inflate:Ai,inflate:hi,inflateRaw:function(e,t){return(t=t||{}).raw=!0,hi(e,t)},ungzip:hi,constants:O};const{Deflate:ui,deflate:di,deflateRaw:pi,gzip:fi}=at,{Inflate:gi,inflate:mi,inflateRaw:_i,ungzip:vi}=ci;var bi=ui,yi=di,xi=pi,Bi=fi,wi=gi,Pi=mi,Ci=_i,Mi=vi,Fi=O,Ei={Deflate:bi,deflate:yi,deflateRaw:xi,gzip:Bi,Inflate:wi,inflate:Pi,inflateRaw:Ci,ungzip:Mi,constants:Fi};e.Deflate=bi,e.Inflate=wi,e.constants=Fi,e.default=Ei,e.deflate=yi,e.deflateRaw=xi,e.gzip=Bi,e.inflate=Pi,e.inflateRaw=Ci,e.ungzip=Mi,Object.defineProperty(e,"__esModule",{value:!0})}));var vw=Object.freeze({__proto__:null});let bw=window.pako||vw;bw.inflate||(bw=bw.default);const yw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const xw={version:1,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11]}}(i),a=function(e){return{positions:new Uint16Array(bw.inflate(e.positions).buffer),normals:new Int8Array(bw.inflate(e.normals).buffer),indices:new Uint32Array(bw.inflate(e.indices).buffer),edgeIndices:new Uint32Array(bw.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(bw.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(bw.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(bw.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(bw.inflate(e.meshColors).buffer),entityIDs:bw.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(bw.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(bw.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(bw.inflate(e.positionsDecodeMatrix).buffer)}}(n);!function(e,t,i,s,r,o){o.getNextId(),s.positionsCompression="precompressed",s.normalsCompression="precompressed";const n=i.positions,a=i.normals,l=i.indices,A=i.edgeIndices,h=i.meshPositions,u=i.meshIndices,d=i.meshEdgesIndices,p=i.meshColors,f=JSON.parse(i.entityIDs),g=i.entityMeshes,m=i.entityIsObjects,v=h.length,b=g.length;for(let r=0;rg[e]g[t]?1:0));for(let e=0;e1||(F[i]=e)}}for(let e=0;e1,o=Iw(m.subarray(4*t,4*t+3)),u=m[4*t+3]/255,v=a.subarray(d[t],i?a.length:d[t+1]),y=l.subarray(d[t],i?l.length:d[t+1]),x=A.subarray(p[t],i?A.length:p[t+1]),w=h.subarray(f[t],i?h.length:f[t+1]),M=c.subarray(g[t],g[t]+16);if(r){const e=`${n}-geometry.${t}`;s.createGeometry({id:e,primitive:"triangles",positionsCompressed:v,normalsCompressed:y,indices:x,edgeIndices:w,positionsDecodeMatrix:M})}else{const e=`${n}-${t}`;b[F[t]];const i={};s.createMesh(_.apply(i,{id:e,primitive:"triangles",positionsCompressed:v,normalsCompressed:y,indices:x,edgeIndices:w,positionsDecodeMatrix:M,color:o,opacity:u}))}}let E=0;for(let e=0;e1){const t={},r=`${n}-instance.${E++}`,o=`${n}-geometry.${i}`,a=16*x[e],A=u.subarray(a,a+16);s.createMesh(_.apply(t,{id:r,geometryId:o,matrix:A})),l.push(r)}else l.push(i)}if(l.length>0){const e={};s.createEntity(_.apply(e,{id:r,isObject:!0,meshIds:l}))}}}(0,0,a,s,0,o)}};let Sw=window.pako||vw;Sw.inflate||(Sw=Sw.default);const Tw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const Rw={version:5,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i),a=function(e){return{positions:new Float32Array(Sw.inflate(e.positions).buffer),normals:new Int8Array(Sw.inflate(e.normals).buffer),indices:new Uint32Array(Sw.inflate(e.indices).buffer),edgeIndices:new Uint32Array(Sw.inflate(e.edgeIndices).buffer),matrices:new Float32Array(Sw.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(Sw.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(Sw.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(Sw.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(Sw.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(Sw.inflate(e.primitiveInstances).buffer),eachEntityId:Sw.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(Sw.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(Sw.inflate(e.eachEntityMatricesPortion).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="disabled",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColor,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),v=i.eachEntityPrimitiveInstancesPortion,b=i.eachEntityMatricesPortion,y=u.length,x=g.length,B=new Uint8Array(y),w=m.length;for(let e=0;e1||(P[i]=e)}}for(let e=0;e1,r=Tw(f.subarray(4*e,4*e+3)),o=f[4*e+3]/255,c=a.subarray(u[e],t?a.length:u[e+1]),g=l.subarray(u[e],t?l.length:u[e+1]),v=A.subarray(d[e],t?A.length:d[e+1]),b=h.subarray(p[e],t?h.length:p[e+1]);if(i){const t=`${n}-geometry.${e}`;s.createGeometry({id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:v,edgeIndices:b})}else{const t=e;m[P[e]];const i={};s.createMesh(_.apply(i,{id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:v,edgeIndices:b,color:r,opacity:o}))}}let C=0;for(let e=0;e1){const t={},r="instance."+C++,o="geometry"+i,n=16*b[e],l=c.subarray(n,n+16);s.createMesh(_.apply(t,{id:r,geometryId:o,matrix:l})),a.push(r)}else a.push(i)}if(a.length>0){const e={};s.createEntity(_.apply(e,{id:r,isObject:!0,meshIds:a}))}}}(0,0,a,s,0,o)}};let Lw=window.pako||vw;Lw.inflate||(Lw=Lw.default);const Uw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const kw={version:6,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:Lw.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:Lw.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,u=i.matrices,d=i.reusedPrimitivesDecodeMatrix,p=i.eachPrimitivePositionsAndNormalsPortion,f=i.eachPrimitiveIndicesPortion,g=i.eachPrimitiveEdgeIndicesPortion,m=i.eachPrimitiveColorAndOpacity,v=i.primitiveInstances,b=JSON.parse(i.eachEntityId),y=i.eachEntityPrimitiveInstancesPortion,x=i.eachEntityMatricesPortion,B=i.eachTileAABB,w=i.eachTileEntitiesPortion,P=p.length,C=v.length,M=b.length,F=w.length,E=new Uint32Array(P);for(let e=0;e1,c=t===P-1,u=a.subarray(p[t],c?a.length:p[t+1]),b=l.subarray(p[t],c?l.length:p[t+1]),y=A.subarray(f[t],c?A.length:f[t+1]),x=h.subarray(g[t],c?h.length:g[t+1]),B=Uw(m.subarray(4*t,4*t+3)),w=m[4*t+3]/255,C=o.getNextId();if(r){const e=`${n}-geometry.${i}.${t}`;U[e]||(s.createGeometry({id:e,primitive:"triangles",positionsCompressed:u,indices:y,edgeIndices:x,positionsDecodeMatrix:d}),U[e]=!0),s.createMesh(_.apply(N,{id:C,geometryId:e,origin:I,matrix:F,color:B,opacity:w})),R.push(C)}else s.createMesh(_.apply(N,{id:C,origin:I,primitive:"triangles",positionsCompressed:u,normalsCompressed:b,indices:y,edgeIndices:x,positionsDecodeMatrix:L,color:B,opacity:w})),R.push(C)}R.length>0&&s.createEntity(_.apply(O,{id:w,isObject:!0,meshIds:R}))}}}(e,t,a,s,0,o)}};let Ow=window.pako||vw;Ow.inflate||(Ow=Ow.default);const Nw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function Qw(e){const t=[];for(let i=0,s=e.length;i1,c=t===E-1,P=Nw(w.subarray(6*e,6*e+3)),C=w[6*e+3]/255,M=w[6*e+4]/255,F=w[6*e+5]/255,I=o.getNextId();if(r){const r=B[e],o=d.slice(r,r+16),x=`${n}-geometry.${i}.${t}`;if(!Q[x]){let e,i,r,o,n,d;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],c?a.length:g[t+1]),r=l.subarray(m[t],c?l.length:m[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]),d=u.subarray(y[t],c?u.length:y[t+1]);break;case 1:e="surface",i=a.subarray(g[t],c?a.length:g[t+1]),r=l.subarray(m[t],c?l.length:m[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]),d=u.subarray(y[t],c?u.length:y[t+1]);break;case 2:e="points",i=a.subarray(g[t],c?a.length:g[t+1]),o=Qw(A.subarray(v[t],c?A.length:v[t+1]));break;case 3:e="lines",i=a.subarray(g[t],c?a.length:g[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]);break;default:continue}s.createGeometry({id:x,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:d,positionsDecodeMatrix:p}),Q[x]=!0}s.createMesh(_.apply(V,{id:I,geometryId:x,origin:R,matrix:o,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}else{let e,i,r,o,n,d;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],c?a.length:g[t+1]),r=l.subarray(m[t],c?l.length:m[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]),d=u.subarray(y[t],c?u.length:y[t+1]);break;case 1:e="surface",i=a.subarray(g[t],c?a.length:g[t+1]),r=l.subarray(m[t],c?l.length:m[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]),d=u.subarray(y[t],c?u.length:y[t+1]);break;case 2:e="points",i=a.subarray(g[t],c?a.length:g[t+1]),o=Qw(A.subarray(v[t],c?A.length:v[t+1]));break;case 3:e="lines",i=a.subarray(g[t],c?a.length:g[t+1]),n=h.subarray(b[t],c?h.length:b[t+1]);break;default:continue}s.createMesh(_.apply(V,{id:I,origin:R,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:d,positionsDecodeMatrix:N,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}}U.length>0&&s.createEntity(_.apply(O,{id:F,isObject:!0,meshIds:U}))}}}(e,t,a,s,0,o)}};let Hw=window.pako||vw;Hw.inflate||(Hw=Hw.default);const jw=c.vec4(),Gw=c.vec4();const zw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function Ww(e){const t=[];for(let i=0,s=e.length;i1,l=r===L-1,A=zw(E.subarray(6*e,6*e+3)),h=E[6*e+3]/255,u=E[6*e+4]/255,I=E[6*e+5]/255,D=o.getNextId();if(a){const o=F[e],a=v.slice(o,o+16),M=`${n}-geometry.${i}.${r}`;let E=H[M];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(y[r]){case 0:E.primitiveName="solid",E.geometryPositions=d.subarray(x[r],l?d.length:x[r+1]),E.geometryNormals=p.subarray(B[r],l?p.length:B[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=d.subarray(x[r],l?d.length:x[r+1]),E.geometryNormals=p.subarray(B[r],l?p.length:B[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=d.subarray(x[r],l?d.length:x[r+1]),E.geometryColors=Ww(f.subarray(w[r],l?f.length:w[r+1])),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=d.subarray(x[r],l?d.length:x[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i0&&n.length>0;break;case 1:e="surface",t=d.subarray(x[r],l?d.length:x[r+1]),i=p.subarray(B[r],l?p.length:B[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),a=m.subarray(C[r],l?m.length:C[r+1]),c=t.length>0&&n.length>0;break;case 2:e="points",t=d.subarray(x[r],l?d.length:x[r+1]),o=Ww(f.subarray(w[r],l?f.length:w[r+1])),c=t.length>0;break;case 3:e="lines",t=d.subarray(x[r],l?d.length:x[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),c=t.length>0&&n.length>0;break;default:continue}c&&(s.createMesh(_.apply(G,{id:D,origin:Q,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:R,color:A,metallic:u,roughness:I,opacity:h})),T.push(D))}}T.length>0&&s.createEntity(_.apply(j,{id:A,isObject:!0,meshIds:T}))}}}(e,t,a,s,r,o)}};let Xw=window.pako||vw;Xw.inflate||(Xw=Xw.default);const Jw=c.vec4(),Yw=c.vec4();const Zw=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const qw={version:9,parse:function(e,t,i,s,r,o){const n=function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:Xw.inflate(e,t).buffer}return{metadata:JSON.parse(Xw.inflate(e.metadata,{to:"string"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(Xw.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.metadata,l=i.positions,A=i.normals,h=i.colors,u=i.indices,d=i.edgeIndices,p=i.matrices,f=i.reusedGeometriesDecodeMatrix,g=i.eachGeometryPrimitiveType,m=i.eachGeometryPositionsPortion,v=i.eachGeometryNormalsPortion,b=i.eachGeometryColorsPortion,y=i.eachGeometryIndicesPortion,x=i.eachGeometryEdgeIndicesPortion,B=i.eachMeshGeometriesPortion,w=i.eachMeshMatricesPortion,P=i.eachMeshMaterial,C=i.eachEntityId,M=i.eachEntityMeshesPortion,F=i.eachTileAABB,E=i.eachTileEntitiesPortion,I=m.length,D=B.length,S=M.length,T=E.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});const R=new Uint32Array(I);for(let e=0;e1,C=r===I-1,M=Zw(P.subarray(6*e,6*e+3)),F=P[6*e+3]/255,E=P[6*e+4]/255,D=P[6*e+5]/255,S=o.getNextId();if(a){const o=w[e],a=p.slice(o,o+16),B=`${n}-geometry.${i}.${r}`;let P=k[B];if(!P){P={batchThisMesh:!t.reuseGeometries};let e=!1;switch(g[r]){case 0:P.primitiveName="solid",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(v[r],C?A.length:v[r+1]),P.geometryIndices=u.subarray(y[r],C?u.length:y[r+1]),P.geometryEdgeIndices=d.subarray(x[r],C?d.length:x[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 1:P.primitiveName="surface",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(v[r],C?A.length:v[r+1]),P.geometryIndices=u.subarray(y[r],C?u.length:y[r+1]),P.geometryEdgeIndices=d.subarray(x[r],C?d.length:x[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 2:P.primitiveName="points",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryColors=h.subarray(b[r],C?h.length:b[r+1]),e=P.geometryPositions.length>0;break;case 3:P.primitiveName="lines",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryIndices=u.subarray(y[r],C?u.length:y[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;default:continue}if(e||(P=null),P&&(P.geometryPositions.length,P.batchThisMesh)){P.decompressedPositions=new Float32Array(P.geometryPositions.length),P.transformedAndRecompressedPositions=new Uint16Array(P.geometryPositions.length);const e=P.geometryPositions,t=P.decompressedPositions;for(let i=0,s=e.length;i0&&n.length>0;break;case 1:e="surface",t=l.subarray(m[r],C?l.length:m[r+1]),i=A.subarray(v[r],C?A.length:v[r+1]),n=u.subarray(y[r],C?u.length:y[r+1]),a=d.subarray(x[r],C?d.length:x[r+1]),c=t.length>0&&n.length>0;break;case 2:e="points",t=l.subarray(m[r],C?l.length:m[r+1]),o=h.subarray(b[r],C?h.length:b[r+1]),c=t.length>0;break;case 3:e="lines",t=l.subarray(m[r],C?l.length:m[r+1]),n=u.subarray(y[r],C?u.length:y[r+1]),c=t.length>0&&n.length>0;break;default:continue}c&&(s.createMesh(_.apply(j,{id:S,origin:L,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:Q,color:M,metallic:E,roughness:D,opacity:F})),O.push(S))}}O.length>0&&s.createEntity(_.apply(H,{id:F,isObject:!0,meshIds:O}))}}}(e,t,a,s,r,o)}};let $w=window.pako||vw;$w.inflate||($w=$w.default);const eP=c.vec4(),tP=c.vec4();const iP=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function sP(e,t){const i=[];if(t.length>1)for(let e=0,s=t.length-1;e1)for(let t=0,s=e.length/3-1;t0,a=9*e,c=1===h[a+0],u=h[a+1];h[a+2],h[a+3];const d=h[a+4],p=h[a+5],f=h[a+6],g=h[a+7],m=h[a+8];if(o){const t=new Uint8Array(l.subarray(i,r)).buffer,o=`${n}-texture-${e}`;if(c)s.createTexture({id:o,buffers:[t],minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m});else{const e=new Blob([t],{type:10001===u?"image/jpeg":10002===u?"image/png":"image/gif"}),i=(window.URL||window.webkitURL).createObjectURL(e),r=document.createElement("img");r.src=i,s.createTexture({id:o,image:r,minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m})}}}for(let e=0;e=0?`${n}-texture-${r}`:null,normalsTextureId:a>=0?`${n}-texture-${a}`:null,metallicRoughnessTextureId:o>=0?`${n}-texture-${o}`:null,emissiveTextureId:l>=0?`${n}-texture-${l}`:null,occlusionTextureId:A>=0?`${n}-texture-${A}`:null})}const j=new Uint32Array(N);for(let e=0;e1,l=r===N-1,A=D[e],h=A>=0?`${n}-textureSet-${A}`:null,T=iP(S.subarray(6*e,6*e+3)),R=S[6*e+3]/255,L=S[6*e+4]/255,O=S[6*e+5]/255,Q=o.getNextId();if(a){const o=I[e],a=b.slice(o,o+16),A=`${n}-geometry.${i}.${r}`;let E=W[A];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(x[r]){case 0:E.primitiveName="solid",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=d.subarray(w[r],l?d.length:w[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=d.subarray(w[r],l?d.length:w[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryColors=p.subarray(P[r],l?p.length:P[r+1]),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 4:E.primitiveName="lines",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryIndices=sP(E.geometryPositions,g.subarray(M[r],l?g.length:M[r+1])),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length),E.transformedAndRecompressedPositions=new Uint16Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i0&&a.length>0;break;case 1:e="surface",t=u.subarray(B[r],l?u.length:B[r+1]),i=d.subarray(w[r],l?d.length:w[r+1]),o=f.subarray(C[r],l?f.length:C[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),A=m.subarray(F[r],l?m.length:F[r+1]),c=t.length>0&&a.length>0;break;case 2:e="points",t=u.subarray(B[r],l?u.length:B[r+1]),n=p.subarray(P[r],l?p.length:P[r+1]),c=t.length>0;break;case 3:e="lines",t=u.subarray(B[r],l?u.length:B[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),c=t.length>0&&a.length>0;break;case 4:e="lines",t=u.subarray(B[r],l?u.length:B[r+1]),a=sP(t,g.subarray(M[r],l?g.length:M[r+1])),c=t.length>0&&a.length>0;break;default:continue}c&&(s.createMesh(_.apply(H,{id:Q,textureSetId:h,origin:G,primitive:e,positionsCompressed:t,normalsCompressed:i,uv:o&&o.length>0?o:null,colorsCompressed:n,indices:a,edgeIndices:A,positionsDecodeMatrix:v,color:T,metallic:L,roughness:O,opacity:R})),U.push(Q))}}U.length>0&&s.createEntity(_.apply(Q,{id:l,isObject:!0,meshIds:U}))}}}(e,t,a,s,r,o)}},oP={};oP[xw.version]=xw,oP[Pw.version]=Pw,oP[Fw.version]=Fw,oP[Dw.version]=Dw,oP[Rw.version]=Rw,oP[kw.version]=kw,oP[Vw.version]=Vw,oP[Kw.version]=Kw,oP[qw.version]=qw,oP[rP.version]=rP;var nP={};!function(e){var t,i="File format is not recognized.",s="Error while reading zip file.",r="Error while reading file data.",o=524288,n="text/plain";try{t=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function a(){this.crc=-1}function l(){}function A(e,t){var i,s;return i=new ArrayBuffer(e),s=new Uint8Array(i),t&&s.set(t,0),{buffer:i,array:s,view:new DataView(i)}}function h(){}function c(e){var t,i=this;i.size=0,i.init=function(s,r){var o=new Blob([e],{type:n});(t=new d(o)).init((function(){i.size=t.size,s()}),r)},i.readUint8Array=function(e,i,s,r){t.readUint8Array(e,i,s,r)}}function u(t){var i,s=this;s.size=0,s.init=function(e){for(var r=t.length;"="==t.charAt(r-1);)r--;i=t.indexOf(",")+1,s.size=Math.floor(.75*(r-i)),e()},s.readUint8Array=function(s,r,o){var n,a=A(r),l=4*Math.floor(s/3),h=4*Math.ceil((s+r)/3),c=e.atob(t.substring(l+i,h+i)),u=s-3*Math.floor(l/4);for(n=u;ne.size)throw new RangeError("offset:"+t+", length:"+i+", size:"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function p(){}function f(e){var i,s=this;s.init=function(e){i=new Blob([],{type:n}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:n}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function g(t){var i=this,s="",r="";i.init=function(e){s+="data:"+(t||"")+";base64,",e()},i.writeUint8Array=function(t,i){var o,n=r.length,a=r;for(r="",o=0;o<3*Math.floor((n+t.length)/3)-n;o++)a+=String.fromCharCode(t[o]);for(;o2?s+=e.btoa(a):r=a,i()},i.getData=function(t){t(s+e.btoa(r))}}function m(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function _(e,t,i,s,r,n,a,l,A,h){var c,u,d,p=0,f=t.sn;function g(){e.removeEventListener("message",m,!1),l(u,d)}function m(t){var i=t.data,r=i.data,o=i.error;if(o)return o.toString=function(){return"Error: "+this.message},void A(o);if(i.sn===f)switch("number"==typeof i.codecTime&&(e.codecTime+=i.codecTime),"number"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case"append":r?(u+=r.length,s.writeUint8Array(r,(function(){_()}),h)):_();break;case"flush":d=i.crc,r?(u+=r.length,s.writeUint8Array(r,(function(){g()}),h)):g();break;case"progress":a&&a(c+i.loaded,n);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",i)}}function _(){(c=p*o)<=n?i.readUint8Array(r+c,Math.min(o,n-c),(function(i){a&&a(c,n);var s=0===c?t:{sn:f};s.type="append",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}p++}),A):e.postMessage({sn:f,type:"flush"})}u=0,e.addEventListener("message",m,!1),_()}function v(e,t,i,s,r,n,l,A,h,c){var u,d=0,p=0,f="input"===n,g="output"===n,m=new a;!function n(){var a;if((u=d*o)127?r[i-128]:String.fromCharCode(i);return s}function x(e){return decodeURIComponent(escape(e))}function B(e){var t,i="";for(t=0;t>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function P(t,o,n){var a=0;function l(){}l.prototype.getData=function(s,o,l,h){var c=this;function u(e,t){h&&!function(e){var t=A(4);return t.view.setUint32(0,e),c.crc32==t.view.getUint32(0)}(t)?n("CRC failed."):s.getData((function(e){o(e)}))}function d(e){n(e||r)}function p(e){n(e||"Error while writing file data.")}t.readUint8Array(c.offset,30,(function(r){var o,f=A(r.length,r);1347093252==f.view.getUint32(0)?(w(c,f,4,!1,n),o=c.offset+30+c.filenameLength+c.extraFieldLength,s.init((function(){0===c.compressionMethod?b(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p):function(t,i,s,r,o,n,a,l,A,h,c){var u=a?"output":"none";e.zip.useWebWorkers?_(t,{sn:i,codecClass:"Inflater",crcType:u},s,r,o,n,A,l,h,c):v(new e.zip.Inflater,s,r,o,n,u,A,l,h,c)}(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p)}),p)):n(i)}),d)};var h={getEntries:function(e){var r=this._worker;!function(e){t.size<22?n(i):r(22,(function(){r(Math.min(65558,t.size),(function(){n(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){n(s)}))}}((function(o){var a,h;a=o.getUint32(16,!0),h=o.getUint16(8,!0),a<0||a>=t.size?n(i):t.readUint8Array(a,t.size-a,(function(t){var s,o,a,c,u=0,d=[],p=A(t.length,t);for(s=0;s>>8^i[255&(t^e[s])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},c.prototype=new h,c.prototype.constructor=c,u.prototype=new h,u.prototype.constructor=u,d.prototype=new h,d.prototype.constructor=d,p.prototype.getData=function(e){e(this.data)},f.prototype=new p,f.prototype.constructor=f,g.prototype=new p,g.prototype.constructor=g,m.prototype=new p,m.prototype.constructor=m;var E={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function I(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error("zip.workerScripts."+t+" is not an array!"));r=function(e){var t=document.createElement("a");return e.map((function(e){return t.href=e,t.href}))}(r)}else(r=E[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+r[0];var o=new Worker(r[0]);o.codecTime=o.crcTime=0,o.postMessage({type:"importScripts",scripts:r.slice(1)}),o.addEventListener("message",(function e(t){var r=t.data;if(r.error)return o.terminate(),void s(r.error);"importScripts"===r.type&&(o.removeEventListener("message",e),o.removeEventListener("error",n),i(o))})),o.addEventListener("error",n)}else s(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function n(e){o.terminate(),s(e)}}function D(e){console.error(e)}e.zip={Reader:h,Writer:p,BlobReader:d,Data64URIReader:u,TextReader:c,BlobWriter:m,Data64URIWriter:g,TextWriter:f,createReader:function(e,t,i){i=i||D,e.init((function(){P(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||D,s=!!s,e.init((function(){F(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(nP);const aP=nP.zip;!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function o(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener("load",(function(){t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener("error",s,!1),r.open("GET",e),r.responseType="arraybuffer",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement("a");return t.href=e,"http:"===t.protocol||"https:"===t.protocol}(e)){var o=new XMLHttpRequest;o.addEventListener("load",(function(){t.size=Number(o.getResponseHeader("Content-Length")),t.size?s():i(s,r)}),!1),o.addEventListener("error",r,!1),o.open("HEAD",e),o.send()}else i(s,r)},t.readUint8Array=function(e,s,r,o){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),o)}}function n(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener("load",(function(){t.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?i():s("HTTP Range not supported.")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="arraybuffer",o.setRequestHeader("Range","bytes="+t+"-"+(t+i-1)),o.addEventListener("load",(function(){s(o.response)}),!1),o.addEventListener("error",r,!1),o.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function a(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function A(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,o){var n=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=o,s.write(n)},r.getData=function(t){e.file(t)}}o.prototype=new s,o.prototype.constructor=o,n.prototype=new s,n.prototype.constructor=n,a.prototype=new s,a.prototype.constructor=a,l.prototype=new r,l.prototype.constructor=l,A.prototype=new r,A.prototype.constructor=A,e.FileWriter=A,e.HttpReader=o,e.HttpRangeReader=n,e.ArrayBufferReader=a,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,o){if(i.directory)return o?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw"Parent entry is not a directory."}(this,i,{data:s,Reader:r?n:o})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new n(e):new o(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(aP);const lP=["4.2"];class AP{constructor(e,t={}){this.supportedSchemas=lP,this._xrayOpacity=.7,this._src=null,this._options=t,this.viewpoint=null,t.workerScriptsPath?(aP.workerScriptsPath=t.workerScriptsPath,this.src=t.src,this.xrayOpacity=.7,this.displayEffect=t.displayEffect,this.createMetaModel=t.createMetaModel):e.error("Config expected: workerScriptsPath")}load(e,t,i,s,r,o){switch(s.materialType){case"MetallicMaterial":t._defaultMaterial=new ds(t,{baseColor:[1,1,1],metallic:.6,roughness:.6});break;case"SpecularMaterial":t._defaultMaterial=new gs(t,{diffuse:[1,1,1],specular:c.vec3([1,1,1]),glossiness:.5});break;default:t._defaultMaterial=new Ht(t,{reflectivity:.75,shiness:100,diffuse:[1,1,1]})}t._wireframeMaterial=new hs(t,{color:[0,0,0],lineWidth:2});var n=t.scene.canvas.spinner;n.processes++,hP(e,t,i,s,(function(){n.processes--,r&&r(),t.fire("loaded",!0,!1)}),(function(e){n.processes--,t.error(e),o&&o(e),t.fire("error",e)}),(function(e){console.log("Error, Will Robinson: "+e)}))}}var hP=function(e,t,i,s,r,o){!function(e,t,i){var s=new _P;s.load(e,(function(){t(s)}),(function(e){i("Error loading ZIP archive: "+e)}))}(i,(function(i){cP(e,i,s,t,r,o)}),o)},cP=function(){return function(t,i,s,r,o){var n={plugin:t,zip:i,edgeThreshold:30,materialType:s.materialType,scene:r.scene,modelNode:r,info:{references:{}},materials:{}};s.createMetaModel&&(n.metaModelData={modelId:r.id,metaObjects:[{name:r.id,type:"Default",id:r.id}]}),r.scene.loading++,function(t,i){t.zip.getFile("Manifest.xml",(function(s,r){for(var o=r.children,n=0,a=o.length;n0){for(var n=o.trim().split(" "),a=new Int16Array(n.length),l=0,A=0,h=n.length;A0){i.primitive="triangles";for(var o=[],n=0,a=r.length;n=t.length)i();else{var a=t[o].id,l=a.lastIndexOf(":");l>0&&(a=a.substring(l+1));var A=a.lastIndexOf("#");A>0&&(a=a.substring(0,A)),s[a]?r(o+1):function(e,t,i){e.zip.getFile(t,(function(t,s){!function(e,t,i){for(var s,r=t.children,o=0,n=r.length;o0)for(var s=0,r=t.length;s{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n{let t=0,i=0,s=0;const r=new DataView(e),o=new Uint8Array(6e3),n=({item:s,format:o,size:n})=>{let a,l;switch(o){case"char":return l=new Uint8Array(e,t,n),t+=n,a=MP(l),[s,a];case"uShort":return a=r.getUint16(t,!0),t+=n,[s,a];case"uLong":return a=r.getUint32(t,!0),"NumberOfVariableLengthRecords"===s&&(i=a),t+=n,[s,a];case"uChar":return a=r.getUint8(t),t+=n,[s,a];case"double":return a=r.getFloat64(t,!0),t+=n,[s,a];default:t+=n}};return(()=>{const e={};BP.forEach((t=>{const i=n({...t});if(void 0!==i){if("FileSignature"===i[0]&&"LASF"!==i[1])throw new Error("Ivalid FileSignature. Is this a LAS/LAZ file");e[i[0]]=i[1]}}));const r=[];let a=i;for(;a--;){const e={};wP.forEach((i=>{const r=n({...i});e[r[0]]=r[1],"UserId"===r[0]&&"LASF_Projection"===r[1]&&(s=t-18+54)})),r.push(e)}const l=(e=>{if(void 0===e)return;const t=s+e.RecordLengthAfterHeader,i=o.slice(s,t),r=CP(i),n=new DataView(r);let a=6,l=Number(n.getUint16(a,!0));const A=[];for(;l--;){const e={};e.key=n.getUint16(a+=2,!0),e.tiffTagLocation=n.getUint16(a+=2,!0),e.count=n.getUint16(a+=2,!0),e.valueOffset=n.getUint16(a+=2,!0),A.push(e)}const h=A.find((e=>3072===e.key));if(h&&h.hasOwnProperty("valueOffset"))return h.valueOffset})(r.find((e=>"LASF_Projection"===e.UserId)));return l&&(e.epsg=l),e})()},CP=e=>{let t=new ArrayBuffer(e.length),i=new Uint8Array(t);for(let t=0;t{let t="";return e.forEach((e=>{let i=String.fromCharCode(e);"\0"!==i&&(t+=i)})),t.trim()};function FP(e,t){if(t>=e.length)return e;let i=[];for(let s=0;s{t(e)}),(function(e){i(e)}))}}function IP(e,t,i){i=i||2;var s,r,o,n,a,l,A,h=t&&t.length,c=h?t[0]*i:e.length,u=DP(e,0,c,i,!0),d=[];if(!u||u.next===u.prev)return d;if(h&&(u=function(e,t,i,s){var r,o,n,a=[];for(r=0,o=t.length;r80*i){s=o=e[0],r=n=e[1];for(var p=i;po&&(o=a),l>n&&(n=l);A=0!==(A=Math.max(o-s,n-r))?1/A:0}return TP(u,d,i,s,r,A),d}function DP(e,t,i,s,r){var o,n;if(r===tC(e,t,i,s)>0)for(o=t;o=t;o-=s)n=qP(o,e[o],e[o+1],n);return n&&WP(n,n.next)&&($P(n),n=n.next),n}function SP(e,t){if(!e)return e;t||(t=e);var i,s=e;do{if(i=!1,s.steiner||!WP(s,s.next)&&0!==zP(s.prev,s,s.next))s=s.next;else{if($P(s),(s=t=s.prev)===s.next)break;i=!0}}while(i||s!==t);return t}function TP(e,t,i,s,r,o,n){if(e){!n&&o&&function(e,t,i,s){var r=e;do{null===r.z&&(r.z=VP(r.x,r.y,t,i,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,i,s,r,o,n,a,l,A=1;do{for(i=e,e=null,o=null,n=0;i;){for(n++,s=i,a=0,t=0;t0||l>0&&s;)0!==a&&(0===l||!s||i.z<=s.z)?(r=i,i=i.nextZ,a--):(r=s,s=s.nextZ,l--),o?o.nextZ=r:e=r,r.prevZ=o,o=r;i=s}o.nextZ=null,A*=2}while(n>1)}(r)}(e,s,r,o);for(var a,l,A=e;e.prev!==e.next;)if(a=e.prev,l=e.next,o?LP(e,s,r,o):RP(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),$P(e),e=l.next,A=l.next;else if((e=l)===A){n?1===n?TP(e=UP(SP(e),t,i),t,i,s,r,o,2):2===n&&kP(e,t,i,s,r,o):TP(SP(e),t,i,s,r,o,1);break}}}function RP(e){var t=e.prev,i=e,s=e.next;if(zP(t,i,s)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(jP(t.x,t.y,i.x,i.y,s.x,s.y,r.x,r.y)&&zP(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function LP(e,t,i,s){var r=e.prev,o=e,n=e.next;if(zP(r,o,n)>=0)return!1;for(var a=r.xo.x?r.x>n.x?r.x:n.x:o.x>n.x?o.x:n.x,h=r.y>o.y?r.y>n.y?r.y:n.y:o.y>n.y?o.y:n.y,c=VP(a,l,t,i,s),u=VP(A,h,t,i,s),d=e.prevZ,p=e.nextZ;d&&d.z>=c&&p&&p.z<=u;){if(d!==e.prev&&d!==e.next&&jP(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&zP(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,p!==e.prev&&p!==e.next&&jP(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&zP(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;d&&d.z>=c;){if(d!==e.prev&&d!==e.next&&jP(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&zP(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;p&&p.z<=u;){if(p!==e.prev&&p!==e.next&&jP(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&zP(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function UP(e,t,i){var s=e;do{var r=s.prev,o=s.next.next;!WP(r,o)&&KP(r,s,s.next,o)&&YP(r,o)&&YP(o,r)&&(t.push(r.i/i),t.push(s.i/i),t.push(o.i/i),$P(s),$P(s.next),s=e=o),s=s.next}while(s!==e);return SP(s)}function kP(e,t,i,s,r,o){var n=e;do{for(var a=n.next.next;a!==n.prev;){if(n.i!==a.i&&GP(n,a)){var l=ZP(n,a);return n=SP(n,n.next),l=SP(l,l.next),TP(n,t,i,s,r,o),void TP(l,t,i,s,r,o)}a=a.next}n=n.next}while(n!==e)}function OP(e,t){return e.x-t.x}function NP(e,t){if(t=function(e,t){var i,s=t,r=e.x,o=e.y,n=-1/0;do{if(o<=s.y&&o>=s.next.y&&s.next.y!==s.y){var a=s.x+(o-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(a<=r&&a>n){if(n=a,a===r){if(o===s.y)return s;if(o===s.next.y)return s.next}i=s.x=s.x&&s.x>=h&&r!==s.x&&jP(oi.x||s.x===i.x&&QP(i,s)))&&(i=s,u=l)),s=s.next}while(s!==A);return i}(e,t),t){var i=ZP(t,e);SP(t,t.next),SP(i,i.next)}}function QP(e,t){return zP(e.prev,e,t.prev)<0&&zP(t.next,e,e.next)<0}function VP(e,t,i,s,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function HP(e){var t=e,i=e;do{(t.x=0&&(e-n)*(s-a)-(i-n)*(t-a)>=0&&(i-n)*(o-a)-(r-n)*(s-a)>=0}function GP(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&KP(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(YP(e,t)&&YP(t,e)&&function(e,t){var i=e,s=!1,r=(e.x+t.x)/2,o=(e.y+t.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&r<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next}while(i!==e);return s}(e,t)&&(zP(e.prev,e,t.prev)||zP(e,t.prev,t))||WP(e,t)&&zP(e.prev,e,e.next)>0&&zP(t.prev,t,t.next)>0)}function zP(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function WP(e,t){return e.x===t.x&&e.y===t.y}function KP(e,t,i,s){var r=JP(zP(e,t,i)),o=JP(zP(e,t,s)),n=JP(zP(i,s,e)),a=JP(zP(i,s,t));return r!==o&&n!==a||(!(0!==r||!XP(e,i,t))||(!(0!==o||!XP(e,s,t))||(!(0!==n||!XP(i,e,s))||!(0!==a||!XP(i,t,s)))))}function XP(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function JP(e){return e>0?1:e<0?-1:0}function YP(e,t){return zP(e.prev,e,e.next)<0?zP(e,t,e.next)>=0&&zP(e,e.prev,t)>=0:zP(e,t,e.prev)<0||zP(e,e.next,t)<0}function ZP(e,t){var i=new eC(e.i,e.x,e.y),s=new eC(t.i,t.x,t.y),r=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=r,r.prev=i,s.next=i,i.prev=s,o.next=s,s.prev=o,s}function qP(e,t,i,s){var r=new eC(e,t,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function $P(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function eC(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function tC(e,t,i,s){for(var r=0,o=t,n=i-s;o0&&(s+=e[r-1].length,i.holes.push(s))}return i};const iC=c.vec2(),sC=c.vec3(),rC=c.vec3(),oC=c.vec3();class nC{constructor(){}getDotBIM(e,t,i){_.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}}exports.AlphaFormat=1021,exports.AmbientLight=Pt,exports.AngleMeasurementsControl=fe,exports.AngleMeasurementsMouseControl=ge,exports.AngleMeasurementsPlugin=class extends V{constructor(e,t={}){super("AngleMeasurements",e),this._container=t.container||document.body,this._defaultControl=null,this._measurements={},this.defaultColor=void 0!==t.defaultColor?t.defaultColor:"#00BBFF",this.defaultLabelsVisible=!1!==t.defaultLabelsVisible,this.zIndex=t.zIndex||1e4,this._onMouseOver=(e,t)=>{this.fire("mouseOver",{plugin:this,angleMeasurement:t,measurement:t,event:e})},this._onMouseLeave=(e,t)=>{this.fire("mouseLeave",{plugin:this,angleMeasurement:t,measurement:t,event:e})},this._onContextMenu=(e,t)=>{this.fire("contextMenu",{plugin:this,angleMeasurement:t,measurement:t,event:e})}}getContainerElement(){return this._container}send(e,t){}get control(){return this._defaultControl||(this._defaultControl=new ge(this,{})),this._defaultControl}get measurements(){return this._measurements}createMeasurement(e={}){this.viewer.scene.components[e.id]&&(this.error("Viewer scene component with this ID already exists: "+e.id),delete e.id);const t=e.origin,i=e.corner,s=e.target,r=new pe(this,{id:e.id,plugin:this,container:this._container,origin:{entity:t.entity,worldPos:t.worldPos},corner:{entity:i.entity,worldPos:i.worldPos},target:{entity:s.entity,worldPos:s.worldPos},visible:e.visible,originVisible:!0,originWireVisible:!0,cornerVisible:!0,targetWireVisible:!0,targetVisible:!0,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[r.id]=r,r.on("destroyed",(()=>{delete this._measurements[r.id]})),r.clickable=!0,this.fire("measurementCreated",r),r}destroyMeasurement(e){const t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("AngleMeasurement not found: "+e)}setLabelsShown(e){for(const[t,i]of Object.entries(this.measurements))i.labelShown=e}clear(){const e=Object.keys(this._measurements);for(var t=0,i=e.length;t{this.plugin.viewer.cameraControl.active=!1},u=()=>{this.plugin.viewer.cameraControl.active=!0},d=()=>{o&&(clearTimeout(o),o=null),this._currentAngleMeasurement&&(this._currentAngleMeasurement.destroy(),this._currentAngleMeasurement=null),u(),this._touchState=0};i.addEventListener("touchstart",this._onCanvasTouchStart=i=>{const l=i.touches.length;if(1!==l)return void(o&&(clearTimeout(o),o=null));const u=i.touches[0],p=u.clientX,f=u.clientY;switch(n.set([p,f]),a.set([p,f]),this._touchState){case 0:if(1!==l&&null!==o)return void d();const i=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping});if(i&&i.snapped)s.set(i.worldPos),this.pointerCircle.start(i.snappedCanvasPos);else{const e=t.pick({canvasPos:a,pickSurface:!0});if(!e||!e.worldPos)return;s.set(e.worldPos),this.pointerCircle.start(e.canvasPos)}o=setTimeout((()=>{1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{if(o=null,1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{if(o=null,1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{this.pointerCircle.stop();const i=e.touches.length;if(1!==i||1!==e.changedTouches.length)return void(o&&(clearTimeout(o),o=null));const r=e.touches[0],n=r.clientX,l=r.clientY;if(r.identifier!==A)return;let h,c;switch(a.set([n,l]),this._touchState){case 2:this.pointerLens&&(this.pointerLens.canvasPos=a),h=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),h&&h.snapped?(this.pointerLens&&(this.pointerLens.snappedCanvasPos=h.snappedCanvasPos,this.pointerLens.snapped=!0),s.set(h.worldPos),this._currentAngleMeasurement.origin.worldPos=h.worldPos):(c=t.pick({canvasPos:a,pickSurface:!0}),c&&c.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=c.canvasPos,this.pointerLens.snapped=!1),s.set(c.worldPos),this._currentAngleMeasurement.origin.worldPos=c.worldPos):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)),this._touchState=2;break;case 5:if(1!==i&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),h=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),h&&h.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=h.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentAngleMeasurement.corner.worldPos=h.worldPos,this._currentAngleMeasurement.originVisible=!0,this._currentAngleMeasurement.originWireVisible=!0,this._currentAngleMeasurement.cornerVisible=!0,this._currentAngleMeasurement.cornerWireVisible=!1,this._currentAngleMeasurement.targetVisible=!1,this._currentAngleMeasurement.targetWireVisible=!1,this._currentAngleMeasurement.angleVisible=!1):(c=t.pick({canvasPos:a,pickSurface:!0}),c&&c.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=c.canvasPos,this.pointerLens.snapped=!1),this._currentAngleMeasurement.corner.worldPos=c.worldPos,this._currentAngleMeasurement.originVisible=!0,this._currentAngleMeasurement.originWireVisible=!0,this._currentAngleMeasurement.cornerVisible=!0,this._currentAngleMeasurement.cornerWireVisible=!1,this._currentAngleMeasurement.targetVisible=!1,this._currentAngleMeasurement.targetWireVisible=!1,this._currentAngleMeasurement.angleVisible=!1)),this._touchState=5;break;case 8:if(1!==i&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),h=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),h&&h.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=h.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentAngleMeasurement.target.worldPos=h.worldPos,this._currentAngleMeasurement.originVisible=!0,this._currentAngleMeasurement.originWireVisible=!0,this._currentAngleMeasurement.cornerVisible=!0,this._currentAngleMeasurement.cornerWireVisible=!0,this._currentAngleMeasurement.targetVisible=!0,this._currentAngleMeasurement.targetWireVisible=!0,this._currentAngleMeasurement.angleVisible=!0):(c=t.pick({canvasPos:a,pickSurface:!0}),c&&c.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=c.canvasPos,this.pointerLens.snapped=!1),this._currentAngleMeasurement.target.worldPos=c.worldPos,this._currentAngleMeasurement.originVisible=!0,this._currentAngleMeasurement.originWireVisible=!0,this._currentAngleMeasurement.cornerVisible=!0,this._currentAngleMeasurement.cornerWireVisible=!0,this._currentAngleMeasurement.targetVisible=!0,this._currentAngleMeasurement.targetWireVisible=!0,this._currentAngleMeasurement.angleVisible=!0)),this._touchState=8}}),{passive:!0}),i.addEventListener("touchend",this._onCanvasTouchEnd=i=>{this.pointerCircle.stop();const s=i.changedTouches.length;if(1!==s)return;const h=i.changedTouches[0],d=h.clientX,p=h.clientY;if(h.identifier===A)switch(o&&(clearTimeout(o),o=null),l.set([d,p]),this._touchState){case 1:{if(1!==s||d>n[0]+r||dn[1]+r||pn[0]+r||dn[1]+r||pn[0]+r||dn[1]+r||p",this._markerHTML=t.markerHTML||"
",this._container=t.container||document.body,this._values=t.values||{},this.annotations={},this.surfaceOffset=t.surfaceOffset}getContainerElement(){return this._container}send(e,t){if("clearAnnotations"===e)this.clear()}set surfaceOffset(e){null==e&&(e=.3),this._surfaceOffset=e}get surfaceOffset(){return this._surfaceOffset}createAnnotation(e){var t,i;if(this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id),e.pickResult=e.pickResult||e.pickRecord,e.pickResult){const s=e.pickResult;if(s.worldPos&&s.worldNormal){const e=c.normalizeVec3(s.worldNormal,_e),r=c.mulVec3Scalar(e,this._surfaceOffset,ve);t=c.addVec3(s.worldPos,r,be),i=s.entity}else this.error("Param 'pickResult' does not have both worldPos and worldNormal")}else t=e.worldPos,i=e.entity;var s=null;e.markerElementId&&((s=document.getElementById(e.markerElementId))||this.error("Can't find DOM element for 'markerElementId' value '"+e.markerElementId+"' - defaulting to internally-generated empty DIV"));var r=null;e.labelElementId&&((r=document.getElementById(e.labelElementId))||this.error("Can't find DOM element for 'labelElementId' value '"+e.labelElementId+"' - defaulting to internally-generated empty DIV"));const o=new me(this.viewer.scene,{id:e.id,plugin:this,entity:i,worldPos:t,container:this._container,markerElement:s,labelElement:r,markerHTML:e.markerHTML||this._markerHTML,labelHTML:e.labelHTML||this._labelHTML,occludable:e.occludable,values:_.apply(e.values,_.apply(this._values,{})),markerShown:e.markerShown,labelShown:e.labelShown,eye:e.eye,look:e.look,up:e.up,projection:e.projection,visible:!1!==e.visible});return this.annotations[o.id]=o,o.on("destroyed",(()=>{delete this.annotations[o.id],this.fire("annotationDestroyed",o.id)})),this.fire("annotationCreated",o.id),o}destroyAnnotation(e){var t=this.annotations[e];t?t.destroy():this.log("Annotation not found: "+e)}clear(){const e=Object.keys(this.annotations);for(var t=0,i=e.length;tp.has(e.id)||g.has(e.id)||f.has(e.id))).reduce(((e,i)=>{let s,r=function(e){let t="";return t+=Math.round(255*e[0]).toString(16).padStart(2,"0"),t+=Math.round(255*e[1]).toString(16).padStart(2,"0"),t+=Math.round(255*e[2]).toString(16).padStart(2,"0"),t}(i.colorize);i.xrayed?(s=0===t.xrayMaterial.fillAlpha&&0!==t.xrayMaterial.edgeAlpha?.1:t.xrayMaterial.fillAlpha,s=Math.round(255*s).toString(16).padStart(2,"0"),r=s+r):p.has(i.id)&&(s=Math.round(255*i.opacity).toString(16).padStart(2,"0"),r=s+r),e[r]||(e[r]=[]);const o=i.id,n=i.originalSystemId,a={ifc_guid:n,originating_system:this.originatingSystem};return n!==o&&(a.authoring_tool_id=o),e[r].push(a),e}),{}),_=Object.entries(m).map((([e,t])=>({color:e,components:t})));o.components.coloring=_;const v=t.objectIds,b=t.visibleObjects,y=t.visibleObjectIds,x=v.filter((e=>!b[e])),B=t.selectedObjectIds;return e.defaultInvisible||y.length0&&e.clipping_planes.forEach((function(e){let t=eh(e.location,JA),i=eh(e.direction,JA);A&&c.negateVec3(i),c.subVec3(t,l),r.yUp&&(t=ih(t),i=ih(i)),new $i(s,{pos:t,dir:i})})),s.clearLines(),e.lines&&e.lines.length>0){const t=[],i=[];let r=0;e.lines.forEach((e=>{e.start_point&&e.end_point&&(t.push(e.start_point.x),t.push(e.start_point.y),t.push(e.start_point.z),t.push(e.end_point.x),t.push(e.end_point.y),t.push(e.end_point.z),i.push(r++),i.push(r++))})),new XA(s,{positions:t,indices:i,clippable:!1,collidable:!0})}if(s.clearBitmaps(),e.bitmaps&&e.bitmaps.length>0&&e.bitmaps.forEach((function(e){const t=e.bitmap_type||"jpg",i=e.bitmap_data;let o=eh(e.location,YA),n=eh(e.normal,ZA),a=eh(e.up,qA),l=e.height||1;t&&i&&o&&n&&a&&(r.yUp&&(o=ih(o),n=ih(n),a=ih(a)),new Ls(s,{src:i,type:t,pos:o,normal:n,up:a,clippable:!1,collidable:!0,height:l}))})),a&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),s.setObjectsHighlighted(s.highlightedObjectIds,!1),s.setObjectsSelected(s.selectedObjectIds,!1)),e.components){if(e.components.visibility){e.components.visibility.default_visibility?(s.setObjectsVisible(s.objectIds,!0),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!1))))):(s.setObjectsVisible(s.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!0)))));const r=e.components.visibility.view_setup_hints;r&&(!1===r.spaces_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcSpace"),!1),void 0!==r.spaces_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcSpace"),!0),r.space_boundaries_visible,!1===r.openings_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcOpening"),!0),r.space_boundaries_translucent,void 0!==r.openings_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcOpening"),!0))}e.components.selection&&(s.setObjectsSelected(s.selectedObjectIds,!1),e.components.selection.forEach((e=>this._withBCFComponent(t,e,(e=>e.selected=!0))))),e.components.translucency&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),e.components.translucency.forEach((e=>this._withBCFComponent(t,e,(e=>e.xrayed=!0))))),e.components.coloring&&e.components.coloring.forEach((e=>{let i=e.color,s=0,r=!1;8===i.length&&(s=parseInt(i.substring(0,2),16)/256,s<=1&&s>=.95&&(s=1),i=i.substring(2),r=!0);const o=[parseInt(i.substring(0,2),16)/256,parseInt(i.substring(2,4),16)/256,parseInt(i.substring(4,6),16)/256];e.components.map((e=>this._withBCFComponent(t,e,(e=>{e.colorize=o,r&&(e.opacity=s)}))))}))}if(e.perspective_camera||e.orthogonal_camera){let a,A,h,u;if(e.perspective_camera?(a=eh(e.perspective_camera.camera_view_point,JA),A=eh(e.perspective_camera.camera_direction,JA),h=eh(e.perspective_camera.camera_up_vector,JA),r.perspective.fov=e.perspective_camera.field_of_view,u="perspective"):(a=eh(e.orthogonal_camera.camera_view_point,JA),A=eh(e.orthogonal_camera.camera_direction,JA),h=eh(e.orthogonal_camera.camera_up_vector,JA),r.ortho.scale=e.orthogonal_camera.view_to_world_scale,u="ortho"),c.subVec3(a,l),r.yUp&&(a=ih(a),A=ih(A),h=ih(h)),o){const e=s.pick({pickSurface:!0,origin:a,direction:A});A=e?e.worldPos:c.addVec3(a,A,JA)}else A=c.addVec3(a,A,JA);n?(r.eye=a,r.look=A,r.up=h,r.projection=u):i.cameraFlight.flyTo({eye:a,look:A,up:h,duration:t.duration,projection:u})}}_withBCFComponent(e,t,i){const s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){const o=t.authoring_tool_id,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}}if(t.ifc_guid){const o=t.ifc_guid,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}Object.keys(r.models).forEach((t=>{const n=c.globalizeObjectId(t,o),a=r.objects[n];if(a)i(a);else if(e.updateCompositeObjects){s.metaScene.metaObjects[n]&&r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}}))}}destroy(){super.destroy()}},exports.Bitmap=Ls,exports.ByteType=1010,exports.CameraMemento=Ih,exports.CameraPath=class extends D{get type(){return"CameraPath"}constructor(e,t={}){super(e,t),this._frames=[],this._eyeCurve=new dh(this),this._lookCurve=new dh(this),this._upCurve=new dh(this),t.frames&&(this.addFrames(t.frames),this.smoothFrameTimes(1))}get frames(){return this._frames}get eyeCurve(){return this._eyeCurve}get lookCurve(){return this._lookCurve}get upCurve(){return this._upCurve}saveFrame(e){const t=this.scene.camera;this.addFrame(e,t.eye,t.look,t.up)}addFrame(e,t,i,s){const r={t:e,eye:t.slice(0),look:i.slice(0),up:s.slice(0)};this._frames.push(r),this._eyeCurve.points.push(r.eye),this._lookCurve.points.push(r.look),this._upCurve.points.push(r.up)}addFrames(e){let t;for(let i=0,s=e.length;i1?1:e,t.eye=this._eyeCurve.getPoint(e,ph),t.look=this._lookCurve.getPoint(e,ph),t.up=this._upCurve.getPoint(e,ph)}sampleFrame(e,t,i,s){e=e<0?0:e>1?1:e,this._eyeCurve.getPoint(e,t),this._lookCurve.getPoint(e,i),this._upCurve.getPoint(e,s)}smoothFrameTimes(e){if(0===this._frames.length)return;const t=c.vec3();var i=0;this._frames[0].t=0;const s=[];for(let e=1,o=this._frames.length;e{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=e.transform?this._transformVertices(e.vertices,e.transform,i.rotateX):e.vertices,o=t.stats||{};o.sourceFormat=e.type||"CityJSON",o.schemaVersion=e.version||"",o.title="",o.author="",o.created="",o.numMetaObjects=0,o.numPropertySets=0,o.numObjects=0,o.numGeometries=0,o.numTriangles=0,o.numVertices=0;const n=!1!==t.loadMetadata,a=n?{id:c.createUUID(),name:"Model",type:"Model"}:null,l=n?{id:"",projectId:"",author:"",createdAt:"",schema:e.version||"",creatingApplication:"",metaObjects:[a],propertySets:[]}:null,A={data:e,vertices:r,sceneModel:s,loadMetadata:n,metadata:l,rootMetaObject:a,nextId:0,stats:o};if(this._parseCityJSON(A),s.finalize(),n){const e=s.id;this.viewer.metaScene.createMetaModel(e,A.metadata,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_transformVertices(e,t,i){const s=[],r=t.scale||c.vec3([1,1,1]),o=t.translate||c.vec3([0,0,0]);for(let t=0,n=0;t0))return;const o=[];for(let i=0,s=t.geometry.length;i0){const r=t[s[0]];if(void 0!==r.value)n=e[r.value];else{const t=r.values;if(t){a=[];for(let s=0,r=t.length;s0&&(s.createEntity({id:i,meshIds:o,isObject:!0}),e.stats.numObjects++)}_parseGeometrySurfacesWithOwnMaterials(e,t,i,s){switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":const r=t.boundaries;this._parseSurfacesWithOwnMaterials(e,i,r,s);break;case"Solid":const o=t.boundaries;for(let t=0;t0&&h.push(A.length);const i=this._extractLocalIndices(e,a[t],u,d);A.push(...i)}if(3===A.length)d.indices.push(A[0]),d.indices.push(A[1]),d.indices.push(A[2]);else if(A.length>3){const e=[];for(let t=0;t0&&n.indices.length>0){const t=""+e.nextId++;r.createMesh({id:t,primitive:"triangles",positions:n.positions,indices:n.indices,color:i&&i.diffuseColor?i.diffuseColor:[.8,.8,.8],opacity:1}),s.push(t),e.stats.numGeometries++,e.stats.numVertices+=n.positions.length/3,e.stats.numTriangles+=n.indices.length/3}}_parseSurfacesWithSharedMaterial(e,t,i,s){const r=e.vertices;for(let o=0;o0&&a.push(n.length);const l=this._extractLocalIndices(e,t[o][r],i,s);n.push(...l)}if(3===n.length)s.indices.push(n[0]),s.indices.push(n[1]),s.indices.push(n[2]);else if(n.length>3){let e=[];for(let t=0;t{e.target.classList.contains("xeokit-context-menu-item")||this.hide()})),document.addEventListener("touchstart",this._canvasTouchStartHandler=e=>{e.target.classList.contains("xeokit-context-menu-item")||this.hide()})),e.items&&(this.items=e.items),this._hideOnAction=!1!==e.hideOnAction,this.context=e.context,this.enabled=!1!==e.enabled,this.hide()}on(e,t){let i=this._eventSubs[e];i||(i=[],this._eventSubs[e]=i),i.push(t)}fire(e,t){const i=this._eventSubs[e];if(i)for(let e=0,s=i.length;e{const o=this._getNextId(),n=new i(o);for(let i=0,o=e.length;i0,A=this._getNextId(),h=i.getTitle||(()=>i.title||""),c=i.doAction||i.callback||(()=>{}),u=i.getEnabled||(()=>!0),d=i.getShown||(()=>!0),p=new r(A,h,c,u,d);if(p.parentMenu=n,a.items.push(p),l){const e=t(s);p.subMenu=e,e.parentItem=p}this._itemList.push(p),this._itemMap[p.id]=p}}return this._menuList.push(n),this._menuMap[n.id]=n,n};this._rootMenu=t(e)}_getNextId(){return"ContextMenu_"+this._id+"_"+this._nextId++}_createUI(){const e=t=>{this._createMenuUI(t);const i=t.groups;for(let t=0,s=i.length;t'),i.push("
    "),t)for(let e=0,s=t.length;e'+l+" [MORE]"):i.push('
  • '+l+"
  • ")}}i.push("
"),i.push("");const s=i.join("");document.body.insertAdjacentHTML("beforeend",s);const r=document.querySelector("."+e.id);e.menuElement=r,r.style["border-radius"]="4px",r.style.display="none",r.style["z-index"]=3e5,r.style.background="white",r.style.border="1px solid black",r.style["box-shadow"]="0 4px 5px 0 gray",r.oncontextmenu=e=>{e.preventDefault()};const o=this;let n=null;if(t)for(let e=0,i=t.length;e{e.preventDefault();const i=t.subMenu;if(!i)return void(n&&(o._hideMenu(n.id),n=null));if(n&&n.id!==i.id&&(o._hideMenu(n.id),n=null),!1===t.enabled)return;const s=t.itemElement,r=i.menuElement,a=s.getBoundingClientRect();r.getBoundingClientRect();a.right+200>window.innerWidth?o._showMenu(i.id,a.left-200,a.top-1):o._showMenu(i.id,a.right-5,a.top-1),n=i})),s||(t.itemElement.addEventListener("click",(e=>{e.preventDefault(),o._context&&!1!==t.enabled&&(t.doAction&&t.doAction(o._context),this._hideOnAction?o.hide():(o._updateItemsTitles(),o._updateItemsEnabledStatus()))})),t.itemElement.addEventListener("mouseup",(e=>{3===e.which&&(e.preventDefault(),o._context&&!1!==t.enabled&&(t.doAction&&t.doAction(o._context),this._hideOnAction?o.hide():(o._updateItemsTitles(),o._updateItemsEnabledStatus())))})),t.itemElement.addEventListener("mouseenter",(e=>{e.preventDefault(),!1!==t.enabled&&t.doHover&&t.doHover(o._context)})))):console.error("ContextMenu item element not found: "+t.id)}}}_updateItemsTitles(){if(this._context)for(let e=0,t=this._itemList.length;ewindow.innerHeight&&(i=window.innerHeight-s),t+r>window.innerWidth&&(t=window.innerWidth-r),e.style.left=t+"px",e.style.top=i+"px"}_hideMenuElement(e){e.style.display="none"}},exports.CubicBezierCurve=class extends uh{constructor(e,t={}){super(e,t),this.v0=t.v0,this.v1=t.v1,this.v2=t.v2,this.v3=t.v3,this.t=t.t}set v0(e){this._v0=e||c.vec3([0,0,0])}get v0(){return this._v0}set v1(e){this._v1=e||c.vec3([0,0,0])}get v1(){return this._v1}set v2(e){this._v2=e||c.vec3([0,0,0])}get v2(){return this._v2}set v3(e){this.fire("v3",this._v3=e||c.vec3([0,0,0]))}get v3(){return this._v3}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=c.vec3();return t[0]=c.b3(e,this._v0[0],this._v1[0],this._v2[0],this._v3[0]),t[1]=c.b3(e,this._v0[1],this._v1[1],this._v2[1],this._v3[1]),t[2]=c.b3(e,this._v0[2],this._v1[2],this._v2[2],this._v3[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,v3:this._v3,t:this._t}}},exports.Curve=uh,exports.DefaultLoadingManager=uA,exports.DepthFormat=1026,exports.DepthStencilFormat=1027,exports.DirLight=wt,exports.DistanceMeasurementsControl=nh,exports.DistanceMeasurementsMouseControl=ah,exports.DistanceMeasurementsPlugin=class extends V{constructor(e,t={}){super("DistanceMeasurements",e),this._pointerLens=t.pointerLens,this._container=t.container||document.body,this._defaultControl=null,this._measurements={},this.labelMinAxisLength=t.labelMinAxisLength,this.defaultVisible=!1!==t.defaultVisible,this.defaultOriginVisible=!1!==t.defaultOriginVisible,this.defaultTargetVisible=!1!==t.defaultTargetVisible,this.defaultWireVisible=!1!==t.defaultWireVisible,this.defaultXLabelEnabled=!1!==t.defaultXLabelEnabled,this.defaultYLabelEnabled=!1!==t.defaultYLabelEnabled,this.defaultZLabelEnabled=!1!==t.defaultZLabelEnabled,this.defaultLengthLabelEnabled=!1!==t.defaultLengthLabelEnabled,this.defaultLabelsVisible=!1!==t.defaultLabelsVisible,this.defaultAxisVisible=!1!==t.defaultAxisVisible,this.defaultXAxisVisible=!1!==t.defaultXAxisVisible,this.defaultYAxisVisible=!1!==t.defaultYAxisVisible,this.defaultZAxisVisible=!1!==t.defaultZAxisVisible,this.defaultColor=void 0!==t.defaultColor?t.defaultColor:"#00BBFF",this.zIndex=t.zIndex||1e4,this.defaultLabelsOnWires=!1!==t.defaultLabelsOnWires,this._onMouseOver=(e,t)=>{this.fire("mouseOver",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onMouseLeave=(e,t)=>{this.fire("mouseLeave",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onContextMenu=(e,t)=>{this.fire("contextMenu",{plugin:this,distanceMeasurement:t,measurement:t,event:e})}}getContainerElement(){return this._container}send(e,t){}get pointerLens(){return this._pointerLens}get control(){return this._defaultControl||(this._defaultControl=new ah(this,{})),this._defaultControl}get measurements(){return this._measurements}set labelMinAxisLength(e){e<1&&(this.error("labelMinAxisLength must be >= 1; defaulting to 25"),e=25),this._labelMinAxisLength=e||25}get labelMinAxisLength(){return this._labelMinAxisLength}createMeasurement(e={}){this.viewer.scene.components[e.id]&&(this.error("Viewer scene component with this ID already exists: "+e.id),delete e.id);const t=e.origin,i=e.target,s=new oh(this,{id:e.id,plugin:this,container:this._container,origin:{entity:t.entity,worldPos:t.worldPos},target:{entity:i.entity,worldPos:i.worldPos},visible:e.visible,wireVisible:e.wireVisible,axisVisible:!1!==e.axisVisible&&!1!==this.defaultAxisVisible,xAxisVisible:!1!==e.xAxisVisible&&!1!==this.defaultXAxisVisible,yAxisVisible:!1!==e.yAxisVisible&&!1!==this.defaultYAxisVisible,zAxisVisible:!1!==e.zAxisVisible&&!1!==this.defaultZAxisVisible,xLabelEnabled:!1!==e.xLabelEnabled&&!1!==this.defaultXLabelEnabled,yLabelEnabled:!1!==e.yLabelEnabled&&!1!==this.defaultYLabelEnabled,zLabelEnabled:!1!==e.zLabelEnabled&&!1!==this.defaultZLabelEnabled,lengthLabelEnabled:!1!==e.lengthLabelEnabled&&!1!==this.defaultLengthLabelEnabled,labelsVisible:!1!==e.labelsVisible&&!1!==this.defaultLabelsVisible,originVisible:e.originVisible,targetVisible:e.targetVisible,color:e.color,labelsOnWires:!1!==e.labelsOnWires&&!1!==this.defaultLabelsOnWires,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[s.id]=s,s.clickable=!0,s.on("destroyed",(()=>{delete this._measurements[s.id]})),this.fire("measurementCreated",s),s}destroyMeasurement(e){const t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("DistanceMeasurement not found: "+e)}setLabelsShown(e){for(const[t,i]of Object.entries(this.measurements))i.labelShown=e}setAxisVisible(e){for(const[t,i]of Object.entries(this.measurements))i.axisVisible=e;this.defaultAxisVisible=e}getAxisVisible(){return this.defaultAxisVisible}clear(){const e=Object.keys(this._measurements);for(var t=0,i=e.length;t{this.plugin.viewer.cameraControl.active=!1},u=()=>{this.plugin.viewer.cameraControl.active=!0},d=()=>{o&&(clearTimeout(o),o=null),this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),u(),this._touchState=0};i.addEventListener("touchstart",this._onCanvasTouchStart=i=>{const l=i.touches.length;if(1!==l)return void(o&&(clearTimeout(o),o=null));const u=i.touches[0],p=u.clientX,f=u.clientY;switch(n.set([p,f]),a.set([p,f]),this._touchState){case 0:if(1!==l&&null!==o)return void d();const i=t.pick({canvasPos:a,snapping:this._snapping,snapToEdge:this._snapping});if(i&&i.snapped)s.set(i.worldPos),this.pointerCircle.start(i.snappedCanvasPos);else{const e=t.pick({canvasPos:a,pickSurface:!0});if(!e||!e.worldPos)return;s.set(e.worldPos),this.pointerCircle.start(e.canvasPos)}o=setTimeout((()=>{1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{if(o=null,1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{this.pointerCircle.stop();const r=i.touches.length;if(1!==r||1!==i.changedTouches.length)return void(o&&(clearTimeout(o),o=null));const n=i.touches[0],l=n.clientX,h=n.clientY;if(n.identifier!==A)return;let u,d;switch(a.set([l,h]),this._touchState){case 2:this.pointerLens&&(this.pointerLens.canvasPos=a),u=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),u&&u.snapped?(this.pointerLens&&(this.pointerLens.snappedCanvasPos=u.snappedCanvasPos,this.pointerLens.snapped=!0),s.set(u.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=u.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:c.createUUID(),origin:{worldPos:u.worldPos,entity:u.entity},target:{worldPos:u.worldPos,entity:u.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):(d=t.pick({canvasPos:a,pickSurface:!0}),d&&d.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=d.canvasPos,this.pointerLens.snapped=!1),s.set(d.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=d.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:c.createUUID(),origin:{worldPos:d.worldPos,entity:d.entity},target:{worldPos:d.worldPos,entity:d.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)),this._touchState=2;break;case 5:if(1!==r&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),u=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),u&&u.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=u.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentDistanceMeasurement.target.worldPos=u.worldPos,this._currentDistanceMeasurement.target.entity=u.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0):(d=t.pick({canvasPos:a,pickSurface:!0}),d&&d.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=d.canvasPos,this.pointerLens.snapped=!1),this._currentDistanceMeasurement.target.worldPos=d.worldPos,this._currentDistanceMeasurement.target.entity=d.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0)),this._touchState=5}}),{passive:!0}),i.addEventListener("touchend",this._onCanvasTouchEnd=i=>{this.pointerCircle.stop();const s=i.changedTouches.length;if(1!==s)return;const h=i.changedTouches[0],d=h.clientX,p=h.clientY;if(h.identifier===A)switch(o&&(clearTimeout(o),o=null),l.set([d,p]),this._touchState){case 1:{if(1!==s||d>n[0]+r||dn[1]+r||pn[0]+r||dn[1]+r||p{const t=e.fileData,n=e.sceneModel,a={},l={},A=c.createUUID(),h=c.createUUID(),u=c.createUUID(),d=c.createUUID(),p={metaObjects:[{id:A,name:"IfcProject",type:"IfcProject",parent:null},{id:h,name:"IfcSite",type:"IfcSite",parent:A},{id:u,name:"IfcBuilding",type:"IfcBuilding",parent:h},{id:d,name:"IfcBuildingStorey",type:"IfcBuildingStorey",parent:u}],propertySets:[]};for(let e=0,i=t.meshes.length;e{if(l[e])return;const i=a[e],s=t.meshes[i];n.createGeometry({id:e,primitive:"triangles",positions:s.coordinates,indices:s.indices}),l[e]=!0},g=t.elements;for(let e=0,t=g.length;e{n.destroyed||(n.scene.fire("modelLoaded",n.id),n.fire("loaded",!0,!1))}))};if(e.src){const i=e.src;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getDotBIM(i,(e=>{n({fileData:e,sceneModel:t,nextId:0,error:function(e){}}),this.viewer.scene.canvas.spinner.processes--}),(e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e)}))}else if(e.dotBIM){const i={fileData:e.dotBIM,sceneModel:t,nextId:0,error:function(e){}};n(i)}return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}},exports.EdgeMaterial=Wt,exports.EmphasisMaterial=Gt,exports.FaceAlignedSectionPlanesPlugin=class extends V{constructor(e,t={}){if(super("FaceAlignedSectionPlanesPlugin",e),this._freeControls=[],this._sectionPlanes=e.scene.sectionPlanes,this._controls={},this._shownControlId=null,this._dragSensitivity=t.dragSensitivity||1,null!==t.overviewCanvasId&&void 0!==t.overviewCanvasId){const e=document.getElementById(t.overviewCanvasId);e?this._overview=new tw(this,{overviewCanvas:e,visible:t.overviewVisible,onHoverEnterPlane:e=>{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;iw.set(this.viewer.scene.aabb),c.getAABB3Center(iw,sw),iw[0]+=t[0]-sw[0],iw[1]+=t[1]-sw[1],iw[2]+=t[2]-sw[2],iw[3]+=t[0]-sw[0],iw[4]+=t[1]-sw[1],iw[5]+=t[2]-sw[2],this.viewer.cameraFlight.flyTo({aabb:iw,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn("Can't find overview canvas: '"+t.overviewCanvasId+"' - will create plugin without overview")}null===t.controlElementId||void 0===t.controlElementId?this.error("Parameter expected: controlElementId"):(this._controlElement=document.getElementById(t.controlElementId),this._controlElement||this.warn("Can't find control element: '"+t.controlElementId+"' - will create plugin without control element")),this._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(e=>{this._sectionPlaneCreated(e)}))}setDragSensitivity(e){this._dragSensitivity=e||1}getDragSensitivity(){return this._dragSensitivity}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);return new $i(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new $B(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}getShownControl(){return this._shownControlId}hideControl(){for(let e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){let t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(let t=0,i=e.length;t{i=1e3*this._delayBeforeRestoreSeconds,s||(e.scene._renderer.setColorTextureEnabled(!this._hideColorTexture),e.scene._renderer.setPBREnabled(!this._hidePBR),e.scene._renderer.setSAOEnabled(!this._hideSAO),e.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects),e.scene._renderer.setEdgesEnabled(!this._hideEdges),this._scaleCanvasResolution?e.scene.canvas.resolutionScale=this._scaleCanvasResolutionFactor:e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,s=!0)},o=()=>{e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,e.scene._renderer.setEdgesEnabled(!0),e.scene._renderer.setColorTextureEnabled(!0),e.scene._renderer.setPBREnabled(!0),e.scene._renderer.setSAOEnabled(!0),e.scene._renderer.setTransparentEnabled(!0),s=!1};this._onCanvasBoundary=e.scene.canvas.on("boundary",r),this._onCameraMatrix=e.scene.camera.on("matrix",r),this._onSceneTick=e.scene.on("tick",(e=>{s&&(i-=e.deltaTime,(!this._delayBeforeRestore||i<=0)&&o())}));let n=!1;this._onSceneMouseDown=e.scene.input.on("mousedown",(()=>{n=!0})),this._onSceneMouseUp=e.scene.input.on("mouseup",(()=>{n=!1})),this._onSceneMouseMove=e.scene.input.on("mousemove",(()=>{n&&r()}))}get hideColorTexture(){return this._hideColorTexture}set hideColorTexture(e){this._hideColorTexture=e}get hidePBR(){return this._hidePBR}set hidePBR(e){this._hidePBR=e}get hideSAO(){return this._hideSAO}set hideSAO(e){this._hideSAO=e}get hideEdges(){return this._hideEdges}set hideEdges(e){this._hideEdges=e}get hideTransparentObjects(){return this._hideTransparentObjects}set hideTransparentObjects(e){this._hideTransparentObjects=!1!==e}get scaleCanvasResolution(){return this._scaleCanvasResolution}set scaleCanvasResolution(e){this._scaleCanvasResolution=e}get defaultScaleCanvasResolutionFactor(){return this._defaultScaleCanvasResolutionFactor}set defaultScaleCanvasResolutionFactor(e){this._defaultScaleCanvasResolutionFactor=e||1}get scaleCanvasResolutionFactor(){return this._scaleCanvasResolutionFactor}set scaleCanvasResolutionFactor(e){this._scaleCanvasResolutionFactor=e||.6}get delayBeforeRestore(){return this._delayBeforeRestore}set delayBeforeRestore(e){this._delayBeforeRestore=e}get delayBeforeRestoreSeconds(){return this._delayBeforeRestoreSeconds}set delayBeforeRestoreSeconds(e){this._delayBeforeRestoreSeconds=null!=e?e:.5}send(e,t){}destroy(){this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),super.destroy()}},exports.FloatType=1015,exports.Fresnel=class extends D{get type(){return"Fresnel"}constructor(e,t={}){super(e,t),this._state=new tt({edgeColor:c.vec3([0,0,0]),centerColor:c.vec3([1,1,1]),edgeBias:0,centerBias:1,power:1}),this.edgeColor=t.edgeColor,this.centerColor=t.centerColor,this.edgeBias=t.edgeBias,this.centerBias=t.centerBias,this.power=t.power}set edgeColor(e){this._state.edgeColor.set(e||[0,0,0]),this.glRedraw()}get edgeColor(){return this._state.edgeColor}set centerColor(e){this._state.centerColor.set(e||[1,1,1]),this.glRedraw()}get centerColor(){return this._state.centerColor}set edgeBias(e){this._state.edgeBias=e||0,this.glRedraw()}get edgeBias(){return this._state.edgeBias}set centerBias(e){this._state.centerBias=null!=e?e:1,this.glRedraw()}get centerBias(){return this._state.centerBias}set power(e){this._state.power=null!=e?e:1,this.glRedraw()}get power(){return this._state.power}destroy(){super.destroy(),this._state.destroy()}},exports.Frustum=U,exports.FrustumPlane=L,exports.GIFMediaType=1e4,exports.GLTFDefaultDataSource=lh,exports.GLTFLoaderPlugin=class extends V{constructor(e,t={}){super("GLTFLoader",e,t),this._sceneModelLoader=new mB(this,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults}set dataSource(e){this._dataSource=e||new lh}get dataSource(){return this._dataSource}set objectDefaults(e){this._objectDefaults=e||FB}get objectDefaults(){return this._objectDefaults}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new WA(this.viewer.scene,_.apply(e,{isModel:!0,dtxEnabled:e.dtxEnabled})),i=t.id;if(!e.src&&!e.gltf)return this.error("load() param expected: src or gltf"),t;if(e.metaModelSrc||e.metaModelJSON){const s=e.objectDefaults||this._objectDefaults||FB,r=r=>{let o;if(this.viewer.metaScene.createMetaModel(i,r,{includeTypes:e.includeTypes,excludeTypes:e.excludeTypes}),this.viewer.scene.canvas.spinner.processes--,e.includeTypes){o={};for(let t=0,i=e.includeTypes.length;t{const r=t.name;if(!r)return!0;const o=r,n=this.viewer.metaScene.metaObjects[o],a=(n?n.type:"DEFAULT")||"DEFAULT";i.createEntity={id:o,isObject:!0};const l=s[a];return l&&(!1===l.visible&&(i.createEntity.visible=!1),l.colorize&&(i.createEntity.colorize=l.colorize),!1===l.pickable&&(i.createEntity.pickable=!1),void 0!==l.opacity&&null!==l.opacity&&(i.createEntity.opacity=l.opacity)),!0},e.src?this._sceneModelLoader.load(this,e.src,r,e,t):this._sceneModelLoader.parse(this,e.gltf,r,e,t)};if(e.metaModelSrc){const t=e.metaModelSrc;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getMetaModel(t,(e=>{this.viewer.scene.canvas.spinner.processes--,r(e)}),(e=>{this.error(`load(): Failed to load model metadata for model '${i} from '${t}' - ${e}`),this.viewer.scene.canvas.spinner.processes--}))}else e.metaModelJSON&&r(e.metaModelJSON)}else e.handleGLTFNode=(e,t,i)=>{const s=t.name;if(!s)return!0;const r=s;return i.createEntity={id:r,isObject:!0},!0},e.src?this._sceneModelLoader.load(this,e.src,null,e,t):this._sceneModelLoader.parse(this,e.gltf,null,e,t);return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}},exports.HalfFloatType=1016,exports.ImagePlane=class extends D{constructor(e,t={}){super(e,t),this._src=null,this._image=null,this._pos=c.vec3(),this._origin=c.vec3(),this._rtcPos=c.vec3(),this._dir=c.vec3(),this._size=1,this._imageSize=c.vec2(),this._texture=new Ps(this),this._plane=new Ki(this,{geometry:new kt(this,Ss({center:[0,0,0],xSize:1,zSize:1,xSegments:10,zSegments:10})),material:new Ht(this,{diffuse:[0,0,0],ambient:[0,0,0],specular:[0,0,0],diffuseMap:this._texture,emissiveMap:this._texture,backfaces:!0}),clippable:t.clippable}),this._grid=new Ki(this,{geometry:new kt(this,Ds({size:1,divisions:10})),material:new Ht(this,{diffuse:[0,0,0],ambient:[0,0,0],emissive:[.2,.8,.2]}),position:[0,.001,0],clippable:t.clippable}),this._node=new As(this,{rotation:[0,0,0],position:[0,0,0],scale:[1,1,1],clippable:!1,children:[this._plane,this._grid]}),this._gridVisible=!1,this.visible=!0,this.gridVisible=t.gridVisible,this.position=t.position,this.rotation=t.rotation,this.dir=t.dir,this.size=t.size,this.collidable=t.collidable,this.clippable=t.clippable,this.pickable=t.pickable,this.opacity=t.opacity,t.image?this.image=t.image:this.src=t.src}set visible(e){this._plane.visible=e,this._grid.visible=this._gridVisible&&e}get visible(){return this._plane.visible}set gridVisible(e){e=!1!==e,this._gridVisible=e,this._grid.visible=this._gridVisible&&this.visible}get gridVisible(){return this._gridVisible}set image(e){this._image=e,this._image&&(this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}get image(){return this._image}set src(e){if(this._src=e,this._src){this._image=null;const e=new Image;e.onload=()=>{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set position(e){this._pos.set(e||[0,0,0]),G(this._pos,this._origin,this._rtcPos),this._node.origin=this._origin,this._node.position=this._rtcPos}get position(){return this._pos}set rotation(e){this._node.rotation=e}get rotation(){return this._node.rotation}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set dir(e){if(this._dir.set(e||[0,0,-1]),e){const t=this.scene.center,i=[-this._dir[0],-this._dir[1],-this._dir[2]];c.subVec3(t,this.position,xh);const s=-c.dotVec3(i,xh);c.normalizeVec3(i),c.mulVec3Scalar(i,s,Bh),c.vec3PairToQuaternion(wh,e,Ph),this._node.quaternion=Ph}}get dir(){return this._dir}set collidable(e){this._node.collidable=!1!==e}get collidable(){return this._node.collidable}set clippable(e){this._node.clippable=!1!==e}get clippable(){return this._node.clippable}set pickable(e){this._node.pickable=!1!==e}get pickable(){return this._node.pickable}set opacity(e){this._node.opacity=e}get opacity(){return this._node.opacity}destroy(){super.destroy()}_updatePlaneSizeFromImage(){const e=this._size,t=this._imageSize[0],i=this._imageSize[1];if(t>i){const s=i/t;this._node.scale=[e,1,e*s]}else{const s=t/i;this._node.scale=[e*s,1,e]}}},exports.IntType=1013,exports.JPEGMediaType=10001,exports.KTX2TextureTranscoder=_A,exports.LASLoaderPlugin=class extends V{constructor(e,t={}){super("lasLoader",e,t),this.dataSource=t.dataSource,this.skip=t.skip,this.fp64=t.fp64,this.colorDepth=t.colorDepth}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new yP}get skip(){return this._skip}set skip(e){this._skip=e||1}get fp64(){return this._fp64}set fp64(e){this._fp64=!!e}get colorDepth(){return this._colorDepth}set colorDepth(e){this._colorDepth=e||"auto"}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new WA(this.viewer.scene,_.apply(e,{isModel:!0}));if(!e.src&&!e.las)return this.error("load() param expected: src or las"),t;const i={las:{skip:this._skip,fp64:this._fp64,colorDepth:this._colorDepth}};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.las,e,i,t).then((()=>{s.processes--}),(e=>{s.processes--,this.error(e),t.fire("error",e)}))}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getLAS(t.src,(e=>{this._parseModel(e,t,i,s).then((()=>{r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){function r(e){const i=e.value;if(t.rotateX&&i)for(let e=0,t=i.length;e{if(s.destroyed)return void l();const A=t.stats||{};A.sourceFormat="LAS",A.schemaVersion="",A.title="",A.author="",A.created="",A.numMetaObjects=0,A.numPropertySets=0,A.numObjects=0,A.numGeometries=0,A.numTriangles=0,A.numVertices=0;try{const A=PP(e);Lb(e,xP,i).then((e=>{const h=e.attributes,u=e.loaderData,d=void 0!==u.pointsFormatId?u.pointsFormatId:-1;if(!h.POSITION)return s.finalize(),void l("No positions found in file");let p,f;switch(d){case 0:p=r(h.POSITION),f=n(h.intensity);break;case 1:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=n(h.intensity);break;case 2:case 3:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=o(h.COLOR_0,h.intensity)}const g=FP(p,15e5),m=FP(f,2e6),_=[];for(let e=0,t=g.length;e{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))})),a()}))}catch(e){s.finalize(),l(e)}}))}},exports.LambertMaterial=hs,exports.LightMap=class extends Eh{get type(){return"LightMap"}constructor(e,t={}){super(e,t),this.scene._lightMapCreated(this)}destroy(){super.destroy(),this.scene._lightMapDestroyed(this)}},exports.LineSet=XA,exports.LinearEncoding=3e3,exports.LinearFilter=1006,exports.LinearMipMapLinearFilter=1008,exports.LinearMipMapNearestFilter=1007,exports.LinearMipmapLinearFilter=1008,exports.LinearMipmapNearestFilter=1007,exports.Loader=dA,exports.LoadingManager=cA,exports.LocaleService=Ah,exports.LuminanceAlphaFormat=1025,exports.LuminanceFormat=1024,exports.Map=e,exports.Marker=ae,exports.MarqueePicker=N,exports.MarqueePickerMouseControl=class extends D{constructor(e){super(e.marqueePicker,e);const t=e.marqueePicker,i=t.viewer.scene.canvas.canvas;let s,r,o,n,a,l,A,h=!1,c=!1,u=!1;i.addEventListener("mousedown",(e=>{this.getActive()&&0===e.button&&(A=setTimeout((function(){const o=t.viewer.scene.input;o.keyDown[o.KEY_CTRL]||t.clear(),s=e.pageX,r=e.pageY,a=e.offsetX,t.setMarqueeCorner1([s,r]),h=!0,t.viewer.cameraControl.pointerEnabled=!1,t.setMarqueeVisible(!0),i.style.cursor="crosshair"}),400),c=!0)})),i.addEventListener("mouseup",(e=>{if(!this.getActive())return;if(!h&&!u)return;if(0!==e.button)return;clearTimeout(A),o=e.pageX,n=e.pageY;const i=Math.abs(o-s),a=Math.abs(n-r);h=!1,t.viewer.cameraControl.pointerEnabled=!0,u&&(u=!1),(i>3||a>3)&&t.pick()})),document.addEventListener("mouseup",(e=>{this.getActive()&&0===e.button&&(clearTimeout(A),h&&(t.setMarqueeVisible(!1),h=!1,c=!1,u=!0,t.viewer.cameraControl.pointerEnabled=!0))}),!0),i.addEventListener("mousemove",(e=>{this.getActive()&&0===e.button&&c&&(clearTimeout(A),h&&(o=e.pageX,n=e.pageY,l=e.offsetX,t.setMarqueeVisible(!0),t.setMarqueeCorner2([o,n]),t.setPickMode(a{e.camera.zUp?(this._zUp=!0,this._cubeTextureCanvas.setZUp(),this._repaint(),this._synchCamera()):e.camera.yUp&&(this._zUp=!1,this._cubeTextureCanvas.setYUp(),this._repaint(),this._synchCamera())})),this._onCameraFOV=e.camera.perspective.on("fov",(e=>{this._synchProjection&&(this._navCubeCamera.perspective.fov=e)})),this._onCameraProjection=e.camera.on("projection",(e=>{this._synchProjection&&(this._navCubeCamera.projection="ortho"===e||"perspective"===e?e:"perspective")}));var o=-1;function n(e){var t=[0,0];if(e){for(var i=e.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t}var a,l,A=null,h=null,u=!1,d=!1,p=.5;s._navCubeCanvas.addEventListener("mouseenter",s._onMouseEnter=function(e){d=!0}),s._navCubeCanvas.addEventListener("mouseleave",s._onMouseLeave=function(e){d=!1}),s._navCubeCanvas.addEventListener("mousedown",s._onMouseDown=function(e){if(1===e.which){A=e.x,h=e.y,a=e.clientX,l=e.clientY;var t=n(e),s=i.pick({canvasPos:t});u=!!s}}),document.addEventListener("mouseup",s._onMouseUp=function(e){if(1===e.which&&(u=!1,null!==A)){var t=n(e),a=i.pick({canvasPos:t,pickSurface:!0});if(a&&a.uv){var l=s._cubeTextureCanvas.getArea(a.uv);if(l>=0&&(document.body.style.cursor="pointer",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),l>=0)){if(s._cubeTextureCanvas.setAreaHighlighted(l,!0),o=l,s._repaint(),e.xA+3||e.yh+3)return;var c=s._cubeTextureCanvas.getAreaDir(l);if(c){var d=s._cubeTextureCanvas.getAreaUp(l);s._isProjectNorth&&s._projectNorthOffsetAngle&&(c=r(1,c,IB),d=r(1,d,DB)),f(c,d,(function(){o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),document.body.style.cursor="pointer",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),l>=0&&(s._cubeTextureCanvas.setAreaHighlighted(l,!1),o=-1,s._repaint())}))}}}}}),document.addEventListener("mousemove",s._onMouseMove=function(t){if(o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),1!==t.buttons||u){if(u){var r=t.clientX,A=t.clientY;return document.body.style.cursor="move",void function(t,i){var s=(t-a)*-p,r=(i-l)*-p;e.camera.orbitYaw(s),e.camera.orbitPitch(-r),a=t,l=i}(r,A)}if(d){var h=n(t),c=i.pick({canvasPos:h,pickSurface:!0});if(c){if(c.uv){document.body.style.cursor="pointer";var f=s._cubeTextureCanvas.getArea(c.uv);if(f===o)return;o>=0&&s._cubeTextureCanvas.setAreaHighlighted(o,!1),f>=0&&(s._cubeTextureCanvas.setAreaHighlighted(f,!0),s._repaint(),o=f)}}else document.body.style.cursor="default",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1)}}});var f=function(){var t=c.vec3();return function(i,r,o){var n=s._fitVisible?e.scene.getAABB(e.scene.visibleObjectIds):e.scene.aabb,a=c.getAABB3Diag(n);c.getAABB3Center(n,t);var l=Math.abs(a/Math.tan(s._cameraFitFOV*c.DEGTORAD));e.cameraControl.pivotPos=t,s._cameraFly?e.cameraFlight.flyTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*a,fitFOV:s._cameraFitFOV,duration:s._cameraFlyDuration},o):e.cameraFlight.jumpTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*a,fitFOV:s._cameraFitFOV},o)}}();this._onUpdated=e.localeService.on("updated",(()=>{this._cubeTextureCanvas.clear(),this._repaint()})),this.setVisible(t.visible),this.setCameraFitFOV(t.cameraFitFOV),this.setCameraFly(t.cameraFly),this.setCameraFlyDuration(t.cameraFlyDuration),this.setFitVisible(t.fitVisible),this.setSynchProjection(t.synchProjection)}send(e,t){if("language"===e)this._cubeTextureCanvas.clear(),this._repaint()}_repaint(){const e=this._cubeTextureCanvas.getImage();this._cubeMesh.material.diffuseMap.image=e,this._cubeMesh.material.emissiveMap.image=e}setVisible(e=!0){this._navCubeCanvas&&(this._cubeMesh.visible=e,this._shadow&&(this._shadow.visible=e),this._navCubeCanvas.style.visibility=e?"visible":"hidden")}getVisible(){return!!this._navCubeCanvas&&this._cubeMesh.visible}setFitVisible(e=!1){this._fitVisible=e}getFitVisible(){return this._fitVisible}setCameraFly(e=!0){this._cameraFly=e}getCameraFly(){return this._cameraFly}setCameraFitFOV(e=45){this._cameraFitFOV=e}getCameraFitFOV(){return this._cameraFitFOV}setCameraFlyDuration(e=.5){this._cameraFlyDuration=e}getCameraFlyDuration(){return this._cameraFlyDuration}setSynchProjection(e=!1){this._synchProjection=e}getSynchProjection(){return this._synchProjection}setIsProjectNorth(e=!1){this._isProjectNorth=e}getIsProjectNorth(){return this._isProjectNorth}setProjectNorthOffsetAngle(e){this._projectNorthOffsetAngle=e}getProjectNorthOffsetAngle(){return this._projectNorthOffsetAngle}destroy(){this._navCubeCanvas&&(this.viewer.localeService.off(this._onUpdated),this.viewer.camera.off(this._onCameraMatrix),this.viewer.camera.off(this._onCameraWorldAxis),this.viewer.camera.perspective.off(this._onCameraFOV),this.viewer.camera.off(this._onCameraProjection),this._navCubeCanvas.removeEventListener("mouseenter",this._onMouseEnter),this._navCubeCanvas.removeEventListener("mouseleave",this._onMouseLeave),this._navCubeCanvas.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),this._navCubeCanvas=null,this._cubeTextureCanvas.destroy(),this._cubeTextureCanvas=null,this._onMouseEnter=null,this._onMouseLeave=null,this._onMouseDown=null,this._onMouseMove=null,this._onMouseUp=null),this._navCubeScene.destroy(),this._navCubeScene=null,this._cubeMesh=null,this._shadow=null,super.destroy()}},exports.NearestFilter=1003,exports.NearestMipMapLinearFilter=1005,exports.NearestMipMapNearestFilter=1004,exports.NearestMipmapLinearFilter=1005,exports.NearestMipmapNearestFilter=1004,exports.Node=As,exports.OBJLoaderPlugin=class extends V{constructor(e,t){super("OBJLoader",e,t),this._sceneGraphLoader=new TB}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new As(this.viewer.scene,_.apply(e,{isModel:!0}));const i=t.id,s=e.src;if(!s)return this.error("load() param expected: src"),t;if(e.metaModelSrc){const r=e.metaModelSrc;_.loadJSON(r,(r=>{this.viewer.metaScene.createMetaModel(i,r),this._sceneGraphLoader.load(t,s,e)}),(e=>{this.error(`load(): Failed to load model modelMetadata for model '${i} from '${r}' - ${e}`)}))}else this._sceneGraphLoader.load(t,s,e);return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}},exports.ObjectsKdTree3=class{constructor(e){if(!e)throw"Parameter expected: cfg";if(!e.viewer)throw"Parameter expected: cfg.viewer";this.viewer=e.viewer,this._maxTreeDepth=e.maxTreeDepth||15,this._root=null,this._needsRebuild=!0,this._onModelLoaded=this.viewer.scene.on("modelLoaded",(e=>{this._needsRebuild=!0})),this._onModelUnloaded=this.viewer.scene.on("modelUnloaded",(e=>{this._needsRebuild=!0}))}get root(){return this._needsRebuild&&this._rebuild(),this._root}_rebuild(){const e=this.viewer.scene;this._root={aabb:e.getAABB()};for(let t in e.objects){const i=e.objects[t];this._insertEntity(this._root,i,1)}this._needsRebuild=!1}_insertEntity(e,t,i){const s=t.aabb;if(i>=this._maxTreeDepth)return e.entities=e.entities||[],void e.entities.push(t);if(e.left&&c.containsAABB3(e.left.aabb,s))return void this._insertEntity(e.left,t,i+1);if(e.right&&c.containsAABB3(e.right.aabb,s))return void this._insertEntity(e.right,t,i+1);const r=e.aabb;u[0]=r[3]-r[0],u[1]=r[4]-r[1],u[2]=r[5]-r[2];let o=0;if(u[1]>u[o]&&(o=1),u[2]>u[o]&&(o=2),!e.left){const n=r.slice();if(n[o+3]=(r[o]+r[o+3])/2,e.left={aabb:n},c.containsAABB3(n,s))return void this._insertEntity(e.left,t,i+1)}if(!e.right){const n=r.slice();if(n[o]=(r[o]+r[o+3])/2,e.right={aabb:n},c.containsAABB3(n,s))return void this._insertEntity(e.right,t,i+1)}e.entities=e.entities||[],e.entities.push(t)}destroy(){const e=this.viewer.scene;e.off(this._onModelLoaded),e.off(this._onModelUnloaded),this._root=null,this._needsRebuild=!0}},exports.ObjectsMemento=Th,exports.PNGMediaType=10002,exports.Path=class extends uh{constructor(e,t={}){super(e,t),this._cachedLengths=[],this._dirty=!0,this._curves=[],this._t=0,this._dirtySubs=[],this._destroyedSubs=[],this.curves=t.curves||[],this.t=t.t}addCurve(e){this._curves.push(e),this._dirty=!0}set curves(e){var t,i,s;for(e=e||[],i=0,s=this._curves.length;i1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}get length(){var e=this._getCurveLengths();return e[e.length-1]}getPoint(e){for(var t,i=e*this.length,s=this._getCurveLengths(),r=0;r=i){var o=1-(s[r]-i)/(t=this._curves[r]).length;return t.getPointAt(o)}r++}return null}_getCurveLengths(){if(!this._dirty)return this._cachedLengths;var e,t=[],i=0,s=this._curves.length;for(e=0;e{this._shadowViewMatrixDirty=!0})),this._onCameraProjMatrix=s.on("projMatrix",(()=>{this._shadowProjMatrixDirty=!0})),this._onCanvasBoundary=r.on("boundary",(()=>{this._shadowProjMatrixDirty=!0})),this._state=new tt({type:"point",pos:c.vec3([1,1,1]),color:c.vec3([.7,.7,.8]),intensity:1,attenuation:[0,0,0],space:t.space||"view",castsShadow:!1,getShadowViewMatrix:()=>{if(i._shadowViewMatrixDirty){i._shadowViewMatrix||(i._shadowViewMatrix=c.identityMat4());const e=i._state.pos,t=s.look,r=s.up;c.lookAtMat4v(e,t,r,i._shadowViewMatrix),i._shadowViewMatrixDirty=!1}return i._shadowViewMatrix},getShadowProjMatrix:()=>{if(i._shadowProjMatrixDirty){i._shadowProjMatrix||(i._shadowProjMatrix=c.identityMat4());const e=i.scene.canvas.canvas;c.perspectiveMat4(Math.PI/180*70,e.clientWidth/e.clientHeight,.1,500,i._shadowProjMatrix),i._shadowProjMatrixDirty=!1}return i._shadowProjMatrix},getShadowRenderBuf:()=>(i._shadowRenderBuf||(i._shadowRenderBuf=new Je(i.scene.canvas.canvas,i.scene.canvas.gl,{size:[1024,1024]})),i._shadowRenderBuf)}),this.pos=t.pos,this.color=t.color,this.intensity=t.intensity,this.constantAttenuation=t.constantAttenuation,this.linearAttenuation=t.linearAttenuation,this.quadraticAttenuation=t.quadraticAttenuation,this.castsShadow=t.castsShadow,this.scene._lightCreated(this)}set pos(e){this._state.pos.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}get pos(){return this._state.pos}set color(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}get color(){return this._state.color}set intensity(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}get intensity(){return this._state.intensity}set constantAttenuation(e){this._state.attenuation[0]=e||0,this.glRedraw()}get constantAttenuation(){return this._state.attenuation[0]}set linearAttenuation(e){this._state.attenuation[1]=e||0,this.glRedraw()}get linearAttenuation(){return this._state.attenuation[1]}set quadraticAttenuation(e){this._state.attenuation[2]=e||0,this.glRedraw()}get quadraticAttenuation(){return this._state.attenuation[2]}set castsShadow(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}get castsShadow(){return this._state.castsShadow}destroy(){const e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),super.destroy(),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}},exports.PointerCircle=Q,exports.PointerLens=class{constructor(e,t={}){this.viewer=e,this.scene=this.viewer.scene,this._lensCursorDiv=document.createElement("div"),this.viewer.scene.canvas.canvas.parentNode.insertBefore(this._lensCursorDiv,this.viewer.scene.canvas.canvas),this._lensCursorDiv.style.background="pink",this._lensCursorDiv.style.border="2px solid red",this._lensCursorDiv.style.borderRadius="20px",this._lensCursorDiv.style.width="10px",this._lensCursorDiv.style.height="10px",this._lensCursorDiv.style.margin="-200px -200px",this._lensCursorDiv.style.zIndex="100000",this._lensCursorDiv.style.position="absolute",this._lensCursorDiv.style.pointerEvents="none",this._lensContainer=document.createElement("div"),this._lensContainer.style.border="1px solid black",this._lensContainer.style.background="white",this._lensContainer.style.borderRadius="50%",this._lensContainer.style.width="300px",this._lensContainer.style.height="300px",this._lensContainer.style.marginTop="85px",this._lensContainer.style.marginLeft="25px",this._lensContainer.style.zIndex="15000",this._lensContainer.style.position="absolute",this._lensContainer.style.pointerEvents="none",this._lensContainer.style.visibility="hidden",this._lensCanvas=document.createElement("canvas"),this._lensCanvas.style.borderRadius="50%",this._lensCanvas.style.width="300px",this._lensCanvas.style.height="300px",this._lensCanvas.style.zIndex="15000",this._lensCanvas.style.pointerEvents="none",document.body.appendChild(this._lensContainer),this._lensContainer.appendChild(this._lensCanvas),this._lensCanvasContext=this._lensCanvas.getContext("2d"),this._canvasElement=this.viewer.scene.canvas.canvas,this._canvasPos=null,this._snappedCanvasPos=null,this._lensPosToggle=!0,this._zoomLevel=t.zoomLevel||2,this._active=!1!==t.active,this._visible=!1,this._snapped=!1,this._onViewerRendering=this.viewer.scene.on("rendering",(()=>{this._active&&this._visible&&this.update()}))}update(){if(!this._active||!this._visible)return;if(!this._canvasPos)return;const e=this._lensContainer.getBoundingClientRect(),t=this._canvasElement.getBoundingClientRect(),i=this._canvasPos[0]e.left&&this._canvasPos[1]e.top;this._lensContainer.style.marginLeft="25px",i&&(this._lensPosToggle?this._lensContainer.style.marginTop=t.bottom-t.top-this._lensCanvas.height-85+"px":this._lensContainer.style.marginTop="85px",this._lensPosToggle=!this._lensPosToggle),this._lensCanvasContext.clearRect(0,0,this._lensCanvas.width,this._lensCanvas.height);const s=Math.max(this._lensCanvas.width,this._lensCanvas.height)/this._zoomLevel;this._lensCanvasContext.drawImage(this._canvasElement,this._canvasPos[0]-s/2,this._canvasPos[1]-s/2,s,s,0,0,this._lensCanvas.width,this._lensCanvas.height);const r=[(e.left+e.right)/2,(e.top+e.bottom)/2];if(this._snappedCanvasPos){const e=this._snappedCanvasPos[0]-this._canvasPos[0],t=this._snappedCanvasPos[1]-this._canvasPos[1];this._lensCursorDiv.style.marginLeft=r[0]+e*this._zoomLevel-10+"px",this._lensCursorDiv.style.marginTop=r[1]+t*this._zoomLevel-10+"px"}else this._lensCursorDiv.style.marginLeft=r[0]-10+"px",this._lensCursorDiv.style.marginTop=r[1]-10+"px"}set zoomFactor(e){this._zoomFactor=e,this.update()}get zoomFactor(){return this._zoomFactor}set canvasPos(e){this._canvasPos=e,this.update()}get canvasPos(){return this._canvasPos}set snappedCanvasPos(e){this._snappedCanvasPos=e,this.update()}get snappedCanvasPos(){return this._snappedCanvasPos}set snapped(e){this._snapped=e,e?(this._lensCursorDiv.style.background="greenyellow",this._lensCursorDiv.style.border="2px solid green"):(this._lensCursorDiv.style.background="pink",this._lensCursorDiv.style.border="2px solid red")}get snapped(){return this._snapped}set active(e){this._active=e,this._lensContainer.style.visibility=e&&this._visible?"visible":"hidden",e&&this._visible||(this._lensCursorDiv.style.marginLeft="-100px",this._lensCursorDiv.style.marginTop="-100px"),this.update()}get active(){return this._active}set visible(e){this._visible=e,this._lensContainer.style.visibility=e&&this._active?"visible":"hidden",e&&this._active||(this._lensCursorDiv.style.marginLeft="-100px",this._lensCursorDiv.style.marginTop="-100px"),this.update()}get visible(){return this._visible}destroy(){this._destroyed||(this.viewer.scene.off(this._onViewerRendering),this._lensContainer.removeChild(this._lensCanvas),document.body.removeChild(this._lensContainer),this._destroyed=!0)}},exports.QuadraticBezierCurve=class extends uh{constructor(e,t={}){super(e,t),this.v0=t.v0,this.v1=t.v1,this.v2=t.v2,this.t=t.t}set v0(e){this._v0=e||c.vec3([0,0,0])}get v0(){return this._v0}set v1(e){this._v1=e||c.vec3([0,0,0])}get v1(){return this._v1}set v2(e){this._v2=e||c.vec3([0,0,0])}get v2(){return this._v2}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=c.vec3();return t[0]=c.b2(e,this._v0[0],this._v1[0],this._v2[0]),t[1]=c.b2(e,this._v0[1],this._v1[1],this._v2[1]),t[2]=c.b2(e,this._v0[2],this._v1[2],this._v2[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,t:this._t}}},exports.Queue=d,exports.RGBAFormat=1023,exports.RGBAIntegerFormat=1033,exports.RGBA_ASTC_10x10_Format=37819,exports.RGBA_ASTC_10x5_Format=37816,exports.RGBA_ASTC_10x6_Format=37817,exports.RGBA_ASTC_10x8_Format=37818,exports.RGBA_ASTC_12x10_Format=37820,exports.RGBA_ASTC_12x12_Format=37821,exports.RGBA_ASTC_4x4_Format=37808,exports.RGBA_ASTC_5x4_Format=37809,exports.RGBA_ASTC_5x5_Format=37810,exports.RGBA_ASTC_6x5_Format=37811,exports.RGBA_ASTC_6x6_Format=37812,exports.RGBA_ASTC_8x5_Format=37813,exports.RGBA_ASTC_8x6_Format=37814,exports.RGBA_ASTC_8x8_Format=37815,exports.RGBA_BPTC_Format=36492,exports.RGBA_ETC2_EAC_Format=37496,exports.RGBA_PVRTC_2BPPV1_Format=35843,exports.RGBA_PVRTC_4BPPV1_Format=35842,exports.RGBA_S3TC_DXT1_Format=33777,exports.RGBA_S3TC_DXT3_Format=33778,exports.RGBA_S3TC_DXT5_Format=33779,exports.RGBFormat=1022,exports.RGB_ETC1_Format=36196,exports.RGB_ETC2_Format=37492,exports.RGB_PVRTC_2BPPV1_Format=35841,exports.RGB_PVRTC_4BPPV1_Format=35840,exports.RGB_S3TC_DXT1_Format=33776,exports.RGFormat=1030,exports.RGIntegerFormat=1031,exports.ReadableGeometry=kt,exports.RedFormat=1028,exports.RedIntegerFormat=1029,exports.ReflectionMap=class extends Eh{get type(){return"ReflectionMap"}constructor(e,t={}){super(e,t),this.scene._lightsState.addReflectionMap(this._state),this.scene._reflectionMapCreated(this)}destroy(){super.destroy(),this.scene._reflectionMapDestroyed(this)}},exports.RepeatWrapping=1e3,exports.STLDefaultDataSource=rw,exports.STLLoaderPlugin=class extends V{constructor(e,t={}){super("STLLoader",e,t),this._sceneGraphLoader=new nw,this.dataSource=t.dataSource}set dataSource(e){this._dataSource=e||new rw}get dataSource(){return this._dataSource}load(e){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new As(this.viewer.scene,_.apply(e,{isModel:!0})),i=e.src,s=e.stl;return i||s?(i?this._sceneGraphLoader.load(this,t,i,e):this._sceneGraphLoader.parse(this,t,s,e),t):(this.error("load() param expected: either 'src' or 'stl'"),t)}},exports.SceneModel=WA,exports.SceneModelMesh=Ns,exports.SceneModelTransform=kA,exports.SectionPlane=$i,exports.SectionPlanesPlugin=class extends V{constructor(e,t={}){if(super("SectionPlanes",e),this._freeControls=[],this._sectionPlanes=e.scene.sectionPlanes,this._controls={},this._shownControlId=null,null!==t.overviewCanvasId&&void 0!==t.overviewCanvasId){const e=document.getElementById(t.overviewCanvasId);e?this._overview=new GB(this,{overviewCanvas:e,visible:t.overviewVisible,onHoverEnterPlane:e=>{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;zB.set(this.viewer.scene.aabb),c.getAABB3Center(zB,WB),zB[0]+=t[0]-WB[0],zB[1]+=t[1]-WB[1],zB[2]+=t[2]-WB[2],zB[3]+=t[0]-WB[0],zB[4]+=t[1]-WB[1],zB[5]+=t[2]-WB[2],this.viewer.cameraFlight.flyTo({aabb:zB,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn("Can't find overview canvas: '"+t.overviewCanvasId+"' - will create plugin without overview")}this._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(e=>{this._sectionPlaneCreated(e)}))}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);return new $i(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new HB(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}getShownControl(){return this._shownControlId}hideControl(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(var t=0,i=e.length;t{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set collidable(e){this._mesh.collidable=!1!==e}get collidable(){return this._mesh.collidable}set clippable(e){this._mesh.clippable=!1!==e}get clippable(){return this._mesh.clippable}set pickable(e){this._mesh.pickable=!1!==e}get pickable(){return this._mesh.pickable}set opacity(e){this._mesh.opacity=e}get opacity(){return this._mesh.opacity}_updatePlaneSizeFromImage(){const e=.5*this._size,t=this._imageSize[0],i=this._imageSize[1],s=i/t;this._geometry.positions=t>i?[e,e*s,0,-e,e*s,0,-e,-e*s,0,e,-e*s,0]:[e/s,e,0,-e/s,e,0,-e/s,-e,0,e/s,-e,0]}},exports.StoreyViewsPlugin=class extends V{constructor(e,t={}){super("StoreyViews",e),this._objectsMemento=new Th,this._cameraMemento=new Ih,this.storeys={},this.modelStoreys={},this._fitStoreyMaps=!!t.fitStoreyMaps,this._onModelLoaded=this.viewer.scene.on("modelLoaded",(e=>{this._registerModelStoreys(e),this.fire("storeys",this.storeys)}))}_registerModelStoreys(e){const t=this.viewer,i=t.scene,s=t.metaScene,r=s.metaModels[e],o=i.models[e];if(!r||!r.rootMetaObjects)return;const n=r.rootMetaObjects;for(let t=0,r=n.length;t.5?a.length:0,h=new KB(this,o.aabb,l,e,n,A);h._onModelDestroyed=o.once("destroyed",(()=>{this._deregisterModelStoreys(e),this.fire("storeys",this.storeys)})),this.storeys[n]=h,this.modelStoreys[e]||(this.modelStoreys[e]={}),this.modelStoreys[e][n]=h}}}_deregisterModelStoreys(e){const t=this.modelStoreys[e];if(t){const i=this.viewer.scene;for(let e in t)if(t.hasOwnProperty(e)){const s=t[e],r=i.models[s.modelId];r&&r.off(s._onModelDestroyed),delete this.storeys[e]}delete this.modelStoreys[e]}}get fitStoreyMaps(){return this._fitStoreyMaps}gotoStoreyCamera(e,t={}){const i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),void(t.done&&t.done());const s=this.viewer,r=s.scene.camera,o=i.storeyAABB;if(o[3]{t.done()})):(s.cameraFlight.jumpTo(_.apply(t,{eye:h,look:n,up:u,orthoScale:A})),s.camera.ortho.scale=A)}showStoreyObjects(e,t={}){if(!this.storeys[e])return void this.error("IfcBuildingStorey not found with this ID: "+e);const i=this.viewer,s=i.scene;i.metaScene.metaObjects[e]&&(t.hideOthers&&s.setObjectsVisible(i.scene.visibleObjectIds,!1),this.withStoreyObjects(e,((e,t)=>{e&&(e.visible=!0)})))}withStoreyObjects(e,t){const i=this.viewer,s=i.scene,r=i.metaScene,o=r.metaObjects[e];if(!o)return;const n=o.getObjectIDsInSubtree();for(var a=0,l=n.length;au[1]&&u[0]>u[2],p=!d&&u[1]>u[0]&&u[1]>u[2];!d&&!p&&u[2]>u[0]&&(u[2],u[1]);const f=e.width/A,g=p?e.height/c:e.height/h;return i[0]=Math.floor(e.width-(t[0]-n)*f),i[1]=Math.floor(e.height-(t[2]-l)*g),i[0]>=0&&i[0]=0&&i[1]<=e.height}worldDirToStoreyMap(e,t,i){const s=this.viewer.camera,r=s.eye,o=s.look,n=c.subVec3(o,r,JB),a=s.worldUp,l=a[0]>a[1]&&a[0]>a[2],A=!l&&a[1]>a[0]&&a[1]>a[2];!l&&!A&&a[2]>a[0]&&(a[2],a[1]),l?(i[0]=n[1],i[1]=n[2]):A?(i[0]=n[0],i[1]=n[2]):(i[0]=n[0],i[1]=n[1]),c.normalizeVec2(i)}destroy(){this.viewer.scene.off(this._onModelLoaded),super.destroy()}},exports.Texture=Ps,exports.TextureTranscoder=class{transcode(e,t,i={}){}destroy(){}},exports.TreeViewPlugin=class extends V{constructor(e,t={}){super("TreeViewPlugin",e),this.errors=[],this.valid=!0;const i=t.containerElement||document.getElementById(t.containerElementId);if(i instanceof HTMLElement){for(let e=0;;e++)if(!pw[e]){pw[e]=this,this._index=e,this._id=`tree-${e}`;break}if(this._containerElement=i,this._metaModels={},this._autoAddModels=!1!==t.autoAddModels,this._autoExpandDepth=t.autoExpandDepth||0,this._sortNodes=!1!==t.sortNodes,this._viewer=e,this._rootElement=null,this._muteSceneEvents=!1,this._muteTreeEvents=!1,this._rootNodes=[],this._objectNodes={},this._nodeNodes={},this._rootNames={},this._sortNodes=t.sortNodes,this._pruneEmptyNodes=t.pruneEmptyNodes,this._showListItemElementId=null,this._renderService=t.renderService||new dw,!this._renderService)throw new Error("TreeViewPlugin: no render service set");if(this._containerElement.oncontextmenu=e=>{e.preventDefault()},this._onObjectVisibility=this._viewer.scene.on("objectVisibility",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;const s=e.visible;if(!(s!==i.checked))return;this._muteTreeEvents=!0,i.checked=s,s?i.numVisibleEntities++:i.numVisibleEntities--,this._renderService.setCheckbox(i.nodeId,s);let r=i.parent;for(;r;)r.checked=s,s?r.numVisibleEntities++:r.numVisibleEntities--,this._renderService.setCheckbox(r.nodeId,r.numVisibleEntities>0),r=r.parent;this._muteTreeEvents=!1})),this._onObjectXrayed=this._viewer.scene.on("objectXRayed",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;this._muteTreeEvents=!0;const s=e.xrayed;s!==i.xrayed&&(i.xrayed=s,this._renderService.setXRayed(i.nodeId,s),this._muteTreeEvents=!1)})),this._switchExpandHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._expandSwitchElement(t)},this._switchCollapseHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._collapseSwitchElement(t)},this._checkboxChangeHandler=e=>{if(this._muteTreeEvents)return;this._muteSceneEvents=!0;const t=e.target,i=this._renderService.isChecked(t),s=this._renderService.getIdFromCheckbox(t),r=this._nodeNodes[s],o=this._viewer.scene.objects;let n=0;this._withNodeTree(r,(e=>{const t=e.objectId,s=o[t],r=0===e.children.length;e.numVisibleEntities=i?e.numEntities:0,r&&i!==e.checked&&n++,e.checked=i,this._renderService.setCheckbox(e.nodeId,i),s&&(s.visible=i)}));let a=r.parent;for(;a;)a.checked=i,i?a.numVisibleEntities+=n:a.numVisibleEntities-=n,this._renderService.setCheckbox(a.nodeId,a.numVisibleEntities>0),a=a.parent;this._muteSceneEvents=!1},this._hierarchy=t.hierarchy||"containment",this._autoExpandDepth=t.autoExpandDepth||0,this._autoAddModels){const e=Object.keys(this.viewer.metaScene.metaModels);for(let t=0,i=e.length;t{this.viewer.metaScene.metaModels[e]&&this.addModel(e)}))}this.hierarchy=t.hierarchy}else this.error("Mandatory config expected: valid containerElementId or containerElement")}set hierarchy(e){"containment"!==(e=e||"containment")&&"storeys"!==e&&"types"!==e&&(this.error("Unsupported value for `hierarchy' - defaulting to 'containment'"),e="containment"),this._hierarchy!==e&&(this._hierarchy=e,this._createNodes())}get hierarchy(){return this._hierarchy}addModel(e,t={}){if(!this._containerElement)return;const i=this.viewer.scene.models[e];if(!i)throw"Model not found: "+e;const s=this.viewer.metaScene.metaModels[e];s?this._metaModels[e]?this.warn("Model already added: "+e):(this._metaModels[e]=s,t&&t.rootName&&(this._rootNames[e]=t.rootName),i.on("destroyed",(()=>{this.removeModel(i.id)})),this._createNodes()):this.error("MetaModel not found: "+e)}removeModel(e){if(!this._containerElement)return;this._metaModels[e]&&(this._rootNames[e]&&delete this._rootNames[e],delete this._metaModels[e],this._createNodes())}showNode(e){this.unShowNode();const t=this._objectNodes[e];if(!t)return;const i=t.nodeId,s=this._renderService.getSwitchElement(i);if(s)return this._expandSwitchElement(s),s.scrollIntoView(),!0;const r=[];r.unshift(t);let o=t.parent;for(;o;)r.unshift(o),o=o.parent;for(let e=0,t=r.length;e{if(s===e)return;const r=this._renderService.getSwitchElement(i.nodeId);if(r){this._expandSwitchElement(r);const e=i.children;for(var o=0,n=e.length;o0;return this.valid}_validateMetaModelForStoreysHierarchy(e=0,t,i){return!0}_createEnabledNodes(){switch(this._pruneEmptyNodes&&this._findEmptyNodes(),this._hierarchy){case"storeys":this._createStoreysNodes(),0===this._rootNodes.length&&this.error("Failed to build storeys hierarchy");break;case"types":this._createTypesNodes();break;default:this._createContainmentNodes()}this._sortNodes&&this._doSortNodes(),this._synchNodesToEntities(),this._createTrees(),this.expandToDepth(this._autoExpandDepth)}_createDisabledNodes(){const e=this._renderService.createRootNode();this._rootElement=e,this._containerElement.appendChild(e);const t=this._viewer.metaScene.rootMetaObjects;for(let i in t){const s=t[i],r=s.type,o=s.name,n=o&&""!==o&&"Undefined"!==o&&"Default"!==o?o:r,a=this._renderService.createDisabledNodeElement(n);e.appendChild(a)}}_findEmptyNodes(){const e=this._viewer.metaScene.rootMetaObjects;for(let t in e)this._findEmptyNodes2(e[t])}_findEmptyNodes2(e,t=0){const i=this.viewer.scene,s=e.children,r=e.id,o=i.objects[r];if(e._countEntities=0,o&&e._countEntities++,s)for(let t=0,i=s.length;t{e.aabb&&r.aabb||(e.aabb||(e.aabb=t.getAABB(s.getObjectIDsInSubtree(e.objectId))),r.aabb||(r.aabb=t.getAABB(s.getObjectIDsInSubtree(r.objectId))));let o=0;return o=i.xUp?0:i.yUp?1:2,e.aabb[o]>r.aabb[o]?-1:e.aabb[o]s?1:0}_synchNodesToEntities(){const e=Object.keys(this.viewer.metaScene.metaObjects),t=this._viewer.metaScene.metaObjects,i=this._viewer.scene.objects;for(let s=0,r=e.length;sthis._createNodeElement(e))),t=this._renderService.createRootNode();e.forEach((e=>{t.appendChild(e)})),this._containerElement.appendChild(t),this._rootElement=t}_createNodeElement(e){return this._renderService.createNodeElement(e,this._switchExpandHandler,this._checkboxChangeHandler,(t=>{this.fire("contextmenu",{event:t,viewer:this._viewer,treeViewPlugin:this,treeViewNode:e}),t.preventDefault()}),(t=>{this.fire("nodeTitleClicked",{event:t,viewer:this._viewer,treeViewPlugin:this,treeViewNode:e}),t.preventDefault()}))}_expandSwitchElement(e){if(this._renderService.isExpanded(e))return;const t=this._renderService.getId(e),i=this._nodeNodes[t].children.map((e=>this._createNodeElement(e)));this._renderService.addChildren(e,i),this._renderService.expand(e,this._switchExpandHandler,this._switchCollapseHandler)}_collapseNode(e){const t=this._renderService.getSwitchElement(e);this._collapseSwitchElement(t)}_collapseSwitchElement(e){this._renderService.collapse(e,this._switchExpandHandler,this._switchCollapseHandler)}},exports.UnsignedByteType=1009,exports.UnsignedInt248Type=1020,exports.UnsignedIntType=1014,exports.UnsignedShort4444Type=1017,exports.UnsignedShort5551Type=1018,exports.UnsignedShortType=1012,exports.VBOGeometry=Fs,exports.ViewCullPlugin=class extends V{constructor(e,t={}){super("ViewCull",e),this._objectCullStates=function(e){const t=e.id;let i=gw[t];return i||(i=new fw(e),gw[t]=i,e.on("destroyed",(()=>{delete gw[t],i._destroy()}))),i}(e.scene),this._maxTreeDepth=t.maxTreeDepth||8,this._modelInfos={},this._frustum=new U,this._kdRoot=null,this._frustumDirty=!1,this._kdTreeDirty=!1,this._onViewMatrix=e.scene.camera.on("viewMatrix",(()=>{this._frustumDirty=!0})),this._onProjMatrix=e.scene.camera.on("projMatMatrix",(()=>{this._frustumDirty=!0})),this._onModelLoaded=e.scene.on("modelLoaded",(e=>{const t=this.viewer.scene.models[e];t&&this._addModel(t)})),this._onSceneTick=e.scene.on("tick",(()=>{this._doCull()}))}set enabled(e){this._enabled=e}get enabled(){return this._enabled}_addModel(e){const t={model:e,onDestroyed:e.on("destroyed",(()=>{this._removeModel(e)}))};this._modelInfos[e.id]=t,this._kdTreeDirty=!0}_removeModel(e){const t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._kdTreeDirty=!0)}_doCull(){const e=this._frustumDirty||this._kdTreeDirty;if(this._frustumDirty&&this._buildFrustum(),this._kdTreeDirty&&this._buildKDTree(),e){const e=this._kdRoot;e&&this._visitKDNode(e)}}_buildFrustum(){const e=this.viewer.scene.camera;k(this._frustum,e.viewMatrix,e.projMatrix),this._frustumDirty=!1}_buildKDTree(){const e=this.viewer.scene;this._kdRoot,this._kdRoot={aabb:e.getAABB(),intersection:U.INTERSECT};for(let e=0,t=this._objectCullStates.numObjects;e=this._maxTreeDepth)return e.objects=e.objects||[],e.objects.push(i),void c.expandAABB3(e.aabb,r);if(e.left&&c.containsAABB3(e.left.aabb,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1);if(e.right&&c.containsAABB3(e.right.aabb,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1);const o=e.aabb;mw[0]=o[3]-o[0],mw[1]=o[4]-o[1],mw[2]=o[5]-o[2];let n=0;if(mw[1]>mw[n]&&(n=1),mw[2]>mw[n]&&(n=2),!e.left){const a=o.slice();if(a[n+3]=(o[n]+o[n+3])/2,e.left={aabb:a,intersection:U.INTERSECT},c.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1)}if(!e.right){const a=o.slice();if(a[n]=(o[n]+o[n+3])/2,e.right={aabb:a,intersection:U.INTERSECT},c.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1)}e.objects=e.objects||[],e.objects.push(i),c.expandAABB3(e.aabb,r)}_visitKDNode(e,t=U.INTERSECT){if(t!==U.INTERSECT&&e.intersects===t)return;t===U.INTERSECT&&(t=O(this._frustum,e.aabb),e.intersects=t);const i=t===U.OUTSIDE,s=e.objects;if(s&&s.length>0)for(let e=0,t=s.length;e{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=t.stats||{};if(r.sourceFormat="IFC",r.schemaVersion="",r.title="",r.author="",r.created="",r.numMetaObjects=0,r.numPropertySets=0,r.numObjects=0,r.numGeometries=0,r.numTriangles=0,r.numVertices=0,!this._ifcAPI)throw"WebIFCLoaderPlugin has no WebIFC instance configured - please inject via WebIFCLoaderPlugin constructor";const o=new Uint8Array(e),n=this._ifcAPI.OpenModel(o),a=this._ifcAPI.GetModelSchema(n),l=this._ifcAPI.GetLineIDsWithType(n,this._webIFC.IFCPROJECT).get(0),A=!1!==t.loadMetadata,h={modelID:n,modelSchema:a,sceneModel:s,loadMetadata:A,metadata:A?{id:"",projectId:""+l,author:"",createdAt:"",schema:"",creatingApplication:"",metaObjects:[],propertySets:[]}:null,metaObjects:{},options:i,log:function(e){},nextId:0,stats:r};if(A){if(i.includeTypes){h.includeTypes={};for(let e=0,t=i.includeTypes.length;e{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_parseMetaObjects(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCPROJECT).get(0),i=this._ifcAPI.GetLine(e.modelID,t);this._parseSpatialChildren(e,i)}_parseSpatialChildren(e,t,i){const s=this._ifcAPI.GetNameFromTypeCode(t.type);if(e.includeTypes&&!e.includeTypes[s])return;if(e.excludeTypes&&e.excludeTypes[s])return;this._createMetaObject(e,t,i);const r=t.GlobalId.value;this._parseRelatedItemsOfType(e,t.expressID,"RelatingObject","RelatedObjects",this._webIFC.IFCRELAGGREGATES,r),this._parseRelatedItemsOfType(e,t.expressID,"RelatingStructure","RelatedElements",this._webIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,r)}_createMetaObject(e,t,i){const s=t.GlobalId.value,r=this._ifcAPI.GetNameFromTypeCode(t.type),o={id:s,name:t.Name&&""!==t.Name.value?t.Name.value:r,type:r,parent:i};e.metadata.metaObjects.push(o),e.metaObjects[s]=o,e.stats.numMetaObjects++}_parseRelatedItemsOfType(e,t,i,s,r,o){const n=this._ifcAPI.GetLineIDsWithType(e.modelID,r);for(let r=0;re.value)).includes(t)}else h=A.value===t;if(h){const t=l[s];if(Array.isArray(t))t.forEach((t=>{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}));else{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}}}}_parsePropertySets(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCRELDEFINESBYPROPERTIES);for(let i=0;i0){const o="Default",n=t.Name.value,a=[];for(let e=0,t=s.length;e{const i=t.expressID,s=t.geometries,r=[],o=this._ifcAPI.GetLine(e.modelID,i).GlobalId.value;if(e.loadMetadata){const t=o,i=e.metaObjects[t];if(e.includeTypes&&(!i||!e.includeTypes[i.type]))return;if(e.excludeTypes&&(!i||e.excludeTypes[i.type]))return}const n=c.mat4(),a=c.vec3();for(let t=0,i=s.size();t{o.finalize(),a.finalize(),this.viewer.scene.canvas.spinner.processes--,o.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(a.id)})),this.scheduleTask((()=>{o.destroyed||(o.scene.fire("modelLoaded",o.id),o.fire("loaded",!0,!1))}))},A=e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e),o.fire("error",e)};let h=0;const c={getNextId:()=>`${n}.${h++}`};if(e.metaModelSrc||e.metaModelData)if(e.metaModelSrc){const r=e.metaModelSrc;this._dataSource.getMetaModel(r,(r=>{o.destroyed||(a.loadData(r,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()))}),(e=>{A(`load(): Failed to load model metadata for model '${n} from '${r}' - ${e}`)}))}else e.metaModelData&&(a.loadData(e.metaModelData,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()));else if(e.src)this._loadModel(e.src,e,t,o,a,c,l,A);else if(e.xkt)this._parseModel(e.xkt,e,t,o,a,c),l();else if(e.manifestSrc||e.manifest){const r=e.manifestSrc?function(e){const t=e.split("/");return t.pop(),t.join("/")+"/"}(e.manifestSrc):"",n=(e,o,n)=>{let l=0;const A=()=>{l>=e.length?o():this._dataSource.getMetaModel(`${r}${e[l]}`,(e=>{a.loadData(e,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),l++,this.scheduleTask(A,100)}),n)};A()},h=(i,s,n)=>{let a=0;const l=()=>{a>=i.length?s():this._dataSource.getXKT(`${r}${i[a]}`,(i=>{this._parseModel(i,e,t,o,null,c),a++,this.scheduleTask(l,100)}),n)};l()},u=(i,s,n)=>{let l=0;const A=()=>{l>=i.length?s():this._dataSource.getXKT(`${r}${i[l]}`,(i=>{this._parseModel(i,e,t,o,a,c),l++,this.scheduleTask(A,100)}),n)};A()};if(e.manifest){const t=e.manifest,i=t.xktFiles;if(!i||0===i.length)return void A("load(): Failed to load model manifest - manifest not valid");const s=t.metaModelFiles;s?n(s,(()=>{h(i,l,A)}),A):u(i,l,A)}else this._dataSource.getManifest(e.manifestSrc,(e=>{if(o.destroyed)return;const t=e.xktFiles;if(!t||0===t.length)return void A("load(): Failed to load model manifest - manifest not valid");const i=e.metaModelFiles;i?n(i,(()=>{h(t,l,A)}),A):u(t,l,A)}),A)}return o}_loadModel(e,t,i,s,r,o,n,a){this._dataSource.getXKT(t.src,(e=>{this._parseModel(e,t,i,s,r,o),n()}),a)}_parseModel(e,t,i,s,r,o){if(s.destroyed)return;const n=new DataView(e),a=new Uint8Array(e),l=n.getUint32(0,!0),A=oP[l];if(!A)return void this.error("Unsupported .XKT file version: "+l+" - this XKTLoaderPlugin supports versions "+Object.keys(oP));this.log("Loading .xkt V"+l);const h=n.getUint32(4,!0),c=[];let u=4*(h+2);for(let e=0;e[...e])).flat();return Rs({id:e.id,points:t})},exports.buildSphereGeometry=Yi,exports.buildTorusGeometry=Ts,exports.buildVectorTextGeometry=qi,exports.createRTCViewMat=j,exports.frustumIntersectsAABB3=O,exports.getKTX2TextureTranscoder=bA,exports.getPlaneRTCPos=W,exports.load3DSGeometry=function(e,t={}){return new Promise((function(i,s){t.src||(console.error("load3DSGeometry: Parameter expected: src"),s());var r=e.canvas.spinner;r.processes++,_.loadArraybuffer(t.src,(function(e){e.byteLength||(console.error("load3DSGeometry: no data loaded"),r.processes--,s());var o=Es.parse.from3DS(e).edit.objects[0].mesh,n=o.vertices,a=o.uvt,l=o.indices;r.processes--,i(_.apply(t,{primitive:"triangles",positions:n,normals:null,uv:a,indices:l}))}),(function(e){console.error("load3DSGeometry: "+e),r.processes--,s()}))}))},exports.loadOBJGeometry=function(e,t={}){return new Promise((function(i,s){t.src||(console.error("loadOBJGeometry: Parameter expected: src"),s());var r=e.canvas.spinner;r.processes++,_.loadArraybuffer(t.src,(function(e){e.byteLength||(console.error("loadOBJGeometry: no data loaded"),r.processes--,s());for(var o=Es.parse.fromOBJ(e),n=Es.edit.unwrap(o.i_verts,o.c_verts,3),a=Es.edit.unwrap(o.i_norms,o.c_norms,3),l=Es.edit.unwrap(o.i_uvt,o.c_uvt,2),A=new Int32Array(o.i_verts.length),h=0;h0?a:null,autoNormals:0===a.length,uv:l,indices:A}))}),(function(e){console.error("loadOBJGeometry: "+e),r.processes--,s()}))}))},exports.math=c,exports.rtcToWorldPos=function(e,t,i){return i[0]=e[0]+t[0],i[1]=e[1]+t[1],i[2]=e[2]+t[2],i},exports.sRGBEncoding=3001,exports.setFrustum=k,exports.stats=p,exports.utils=_,exports.worldToRTCPos=G,exports.worldToRTCPositions=z; diff --git a/dist/xeokit-sdk.min.es.js b/dist/xeokit-sdk.min.es.js index 795df7961a..80386b2c1e 100644 --- a/dist/xeokit-sdk.min.es.js +++ b/dist/xeokit-sdk.min.es.js @@ -14,7 +14,7 @@ class e{constructor(e,t){this.items=e||[],this._lastUniqueId=(t||0)+1}addItem(){ /** * @author https://github.com/tmarti, with support from https://tribia.com/ * @license MIT - **/let $h=null;function ec(e,t){const i=3*e,s=3*t;let r,o,n,a,l,A;const h=Math.min(r=$h[i],o=$h[i+1],n=$h[i+2]),c=Math.min(a=$h[s],l=$h[s+1],A=$h[s+2]);if(h!==c)return h-c;const u=Math.max(r,o,n),d=Math.max(a,l,A);return u!==d?u-d:0}let tc=null;function ic(e,t){let i=tc[2*e]-tc[2*t];return 0!==i?i:tc[2*e+1]-tc[2*t+1]}function sc(e,t,i=!1){const s=e.positionsCompressed||[],r=function(e,t){const i=new Int32Array(e.length/3);for(let e=0,t=i.length;e>t;i.sort(ec);const s=new Int32Array(e.length);for(let t=0,r=i.length;te[t+1]){let i=e[t];e[t]=e[t+1],e[t+1]=i}tc=new Int32Array(e),t.sort(ic);const i=new Int32Array(e.length);for(let s=0,r=t.length;st){let i=e;e=t,t=i}function i(i,s){return i!==e?e-i:s!==t?t-s:0}let s=0,r=(o.length>>1)-1;for(;s<=r;){const e=r+s>>1,t=i(o[2*e],o[2*e+1]);if(t>0)s=e+1;else{if(!(t<0))return e;r=e-1}}return-s-1}const a=new Int32Array(o.length/2);a.fill(0);const l=s.length/3;if(l>8*(1<u.maxNumPositions&&(u=c()),u.bucketNumber>8)return[e];let p;-1===A[l]&&(A[l]=u.numPositions++,u.positionsCompressed.push(s[3*l]),u.positionsCompressed.push(s[3*l+1]),u.positionsCompressed.push(s[3*l+2])),-1===A[h]&&(A[h]=u.numPositions++,u.positionsCompressed.push(s[3*h]),u.positionsCompressed.push(s[3*h+1]),u.positionsCompressed.push(s[3*h+2])),-1===A[d]&&(A[d]=u.numPositions++,u.positionsCompressed.push(s[3*d]),u.positionsCompressed.push(s[3*d+1]),u.positionsCompressed.push(s[3*d+2])),u.indices.push(A[l]),u.indices.push(A[h]),u.indices.push(A[d]),(p=n(l,h))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(l,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(h,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]]))}const d=t/8*2,p=t/8,f=2*s.length+(r.length+o.length)*d;let g=0,m=-s.length/3;return h.forEach((e=>{g+=2*e.positionsCompressed.length+(e.indices.length+e.edgeIndices.length)*p,m+=e.positionsCompressed.length/3})),g>f?[e]:(i&&function(e,t){const i={},s={};let r=0;e.forEach((e=>{const t=e.indices,o=e.edgeIndices,n=e.positionsCompressed;for(let e=0,s=t.length;e0){const e=t._meshes;for(let t=0,i=e.length;t0){const e=this._meshes;for(let t=0,i=e.length;t{this._viewMatrixDirty=!0})),this._meshesWithDirtyMatrices=[],this._numMeshesWithDirtyMatrices=0,this._onTick=this.scene.on("tick",(()=>{for(;this._numMeshesWithDirtyMatrices>0;)this._meshesWithDirtyMatrices[--this._numMeshesWithDirtyMatrices]._updateMatrix()})),this._createDefaultTextureSet(),this.visible=t.visible,this.culled=t.culled,this.pickable=t.pickable,this.clippable=t.clippable,this.collidable=t.collidable,this.castsShadow=t.castsShadow,this.receivesShadow=t.receivesShadow,this.xrayed=t.xrayed,this.highlighted=t.highlighted,this.selected=t.selected,this.edges=t.edges,this.colorize=t.colorize,this.opacity=t.opacity,this.backfaces=t.backfaces}_meshMatrixDirty(e){this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++]=e}_createDefaultTextureSet(){const e=new kh({id:"defaultColorTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})}),t=new kh({id:"defaultMetalRoughTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,1,1,1]})}),i=new kh({id:"defaultNormalsTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,0,0,0]})}),s=new kh({id:"defaultEmissiveTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,0,0,1]})}),r=new kh({id:"defaultOcclusionTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})});this._textures.defaultColorTexture=e,this._textures.defaultMetalRoughTexture=t,this._textures.defaultNormalsTexture=i,this._textures.defaultEmissiveTexture=s,this._textures.defaultOcclusionTexture=r,this._textureSets.defaultTextureSet=new Uh({id:"defaultTextureSet",model:this,colorTexture:e,metallicRoughnessTexture:t,normalsTexture:i,emissiveTexture:s,occlusionTexture:r})}get isPerformanceModel(){return!0}get transforms(){return this._transforms}get textures(){return this._textures}get textureSets(){return this._textureSets}get meshes(){return this._meshes}get objects(){return this._entities}get origin(){return this._origin}set position(e){this._position.set(e||[0,0,0]),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get position(){return this._position}set rotation(e){this._rotation.set(e||[0,0,0]),d.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get rotation(){return this._rotation}set quaternion(e){this._quaternion.set(e||[0,0,0,1]),d.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get quaternion(){return this._quaternion}set scale(e){}get scale(){return this._scale}set matrix(e){this._matrix.set(e||_c),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),d.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),d.translateMat4v(this._position,this._matrix),this._matrixDirty=!1,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get matrix(){return this._matrixDirty&&this._rebuildMatrices(),this._matrix}get rotationMatrix(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrix}_rebuildMatrices(){this._matrixDirty&&(d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),d.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),d.translateMat4v(this._position,this._matrix),this._matrixDirty=!1)}get rotationMatrixConjugate(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrixConjugate}_setWorldMatrixDirty(){this._matrixDirty=!0,this._aabbDirty=!0}_transformDirty(){this._matrixDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0}_sceneModelDirty(){this.scene._aabbDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0,this._matrixDirty=!0;for(let e=0,t=this._entityList.length;e0}set visible(e){e=!1!==e,this._visible=e;for(let t=0,i=this._entityList.length;t0}set xrayed(e){e=!!e,this._xrayed=e;for(let t=0,i=this._entityList.length;t0}set highlighted(e){e=!!e,this._highlighted=e;for(let t=0,i=this._entityList.length;t0}set selected(e){e=!!e,this._selected=e;for(let t=0,i=this._entityList.length;t0}set edges(e){e=!!e,this._edges=e;for(let t=0,i=this._entityList.length;t0}set pickable(e){e=!1!==e,this._pickable=e;for(let t=0,i=this._entityList.length;t0)e.colorsCompressed=new Uint8Array(e.colorsCompressed);else if(e.colors&&e.colors.length>0){const t=e.colors,i=new Uint8Array(t.length);for(let e=0,s=t.length;e{l.setImage(A,{minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,flipY:e.flipY,encoding:a}),this.glRedraw()},A.src=e.src;break;default:this._textureTranscoder?y.loadArraybuffer(e.src,(e=>{e.byteLength?this._textureTranscoder.transcode([e],l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'src': file data is zero length")}),(function(e){this.error(`[createTexture] Can't create texture from 'src': ${e}`)})):this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${t}')`)}}else e.buffers&&(this._textureTranscoder?this._textureTranscoder.transcode(e.buffers,l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option"));this._textures[t]=new kh({id:t,texture:l})}createTextureSet(e){const t=e.id;if(null==t)return void this.error("[createTextureSet] Config missing: id");if(this._textureSets[t])return void this.error(`[createTextureSet] Texture set already created: ${t}`);let i,s,r,o,n;if(void 0!==e.colorTextureId&&null!==e.colorTextureId){if(i=this._textures[e.colorTextureId],!i)return void this.error(`[createTextureSet] Texture not found: ${e.colorTextureId} - ensure that you create it first with createTexture()`)}else i=this._textures.defaultColorTexture;if(void 0!==e.metallicRoughnessTextureId&&null!==e.metallicRoughnessTextureId){if(s=this._textures[e.metallicRoughnessTextureId],!s)return void this.error(`[createTextureSet] Texture not found: ${e.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`)}else s=this._textures.defaultMetalRoughTexture;if(void 0!==e.normalsTextureId&&null!==e.normalsTextureId){if(r=this._textures[e.normalsTextureId],!r)return void this.error(`[createTextureSet] Texture not found: ${e.normalsTextureId} - ensure that you create it first with createTexture()`)}else r=this._textures.defaultNormalsTexture;if(void 0!==e.emissiveTextureId&&null!==e.emissiveTextureId){if(o=this._textures[e.emissiveTextureId],!o)return void this.error(`[createTextureSet] Texture not found: ${e.emissiveTextureId} - ensure that you create it first with createTexture()`)}else o=this._textures.defaultEmissiveTexture;if(void 0!==e.occlusionTextureId&&null!==e.occlusionTextureId){if(n=this._textures[e.occlusionTextureId],!n)return void this.error(`[createTextureSet] Texture not found: ${e.occlusionTextureId} - ensure that you create it first with createTexture()`)}else n=this._textures.defaultOcclusionTexture;const a=new Uh({id:t,model:this,colorTexture:i,metallicRoughnessTexture:s,normalsTexture:r,emissiveTexture:o,occlusionTexture:n});return this._textureSets[t]=a,a}createTransform(e){if(void 0===e.id||null===e.id)return void this.error("[createTransform] SceneModel.createTransform() config missing: id");if(this._transforms[e.id])return void this.error(`[createTransform] SceneModel already has a transform with this ID: ${e.id}`);let t;if(e.parentTransformId&&(t=this._transforms[e.parentTransformId],!t))return void this.error("[createTransform] SceneModel.createTransform() config missing: id");const i=new cc({id:e.id,model:this,parent:t,matrix:e.matrix,position:e.position,scale:e.scale,rotation:e.rotation,quaternion:e.quaternion});return this._transforms[i.id]=i,i}createMesh(e){if(void 0===e.id||null===e.id)return this.error("[createMesh] SceneModel.createMesh() config missing: id"),!1;if(this._meshes[e.id])return this.error(`[createMesh] SceneModel already has a mesh with this ID: ${e.id}`),!1;if(!(void 0!==e.geometryId)){if(void 0!==e.primitive&&null!==e.primitive||(e.primitive="triangles"),"points"!==e.primitive&&"lines"!==e.primitive&&"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)return this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`),!1;if(!e.positions&&!e.positionsCompressed&&!e.buckets)return this.error("Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)"),!1;if(e.positions&&(e.positionsDecodeMatrix||e.positionsDecodeBoundary))return this.error("Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.positionsCompressed&&!e.positionsDecodeMatrix&&!e.positionsDecodeBoundary)return this.error("Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.uvCompressed&&!e.uvDecodeMatrix)return this.error("Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)"),!1;if(!(e.buckets||e.indices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)){const t=(e.positions||e.positionsCompressed).length/3;e.indices=this._createDefaultIndices(t)}if(!e.buckets&&!e.indices&&"points"!==e.primitive)return e.indices=this._createDefaultIndices(numIndices),this.error(`Param expected: indices (required for '${e.primitive}' primitive type)`),!1;if((e.matrix||e.position||e.rotation||e.scale)&&(e.positionsCompressed||e.positionsDecodeBoundary))return this.error("Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'"),!1;const t=!(!this._dtxEnabled||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||e.textureSetId);if(e.origin=e.origin?d.addVec3(this._origin,e.origin,d.vec3()):this._origin,e.matrix)e.meshMatrix=e.matrix;else if(e.scale||e.rotation||e.position){const t=e.scale||pc,i=e.position||fc,s=e.rotation||gc;d.eulerToQuaternion(s,"XYZ",mc),e.meshMatrix=d.composeMat4(i,mc,t,d.mat4())}if(e.positionsDecodeBoundary&&(e.positionsDecodeMatrix=cn(e.positionsDecodeBoundary,d.mat4())),t){if(e.type=2,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):vc,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.positions){const t=d.vec3(),i=[];J(e.positions,i,t)&&(e.positions=i,e.origin=d.addVec3(e.origin,t,t))}if(e.positions){const t=d.collapseAABB3();e.positionsDecodeMatrix=d.mat4(),d.expandAABB3Points3(t,e.positions),e.positionsCompressed=hn(e.positions,t,e.positionsDecodeMatrix),e.aabb=t}else if(e.positionsCompressed){const t=d.collapseAABB3();d.expandAABB3Points3(t,e.positionsCompressed),Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.buckets){const t=d.collapseAABB3();for(let i=0,s=e.buckets.length;i>24&255,r=i>>16&255,o=i>>8&255,n=255&i;switch(e.pickColor=new Uint8Array([n,o,r,s]),e.solid="solid"===e.primitive,t.origin=d.vec3(e.origin),e.type){case 2:t.layer=this._getDTXLayer(e),t.aabb=e.aabb;break;case 1:t.layer=this._getVBOBatchingLayer(e),t.aabb=e.aabb;break;case 0:t.layer=this._getVBOInstancingLayer(e),t.aabb=e.aabb}return e.transform&&(e.meshMatrix=e.transform.worldMatrix),t.portionId=t.layer.createPortion(t,e),this._meshes[e.id]=t,this._unusedMeshes[e.id]=t,this._meshList.push(t),t}_getNumPrimitives(e){let t=0;switch(e.geometry?e.geometry.primitive:e.primitive){case"triangles":case"solid":case"surface":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i>>0).toString(16)}_getVBOInstancingLayer(e){const t=this,i=e.origin,s=e.textureSetId||"-",r=e.geometryId,o=`${Math.round(i[0])}.${Math.round(i[1])}.${Math.round(i[2])}.${s}.${r}`;let n=this._vboInstancingLayers[o];if(n)return n;let a=e.textureSet;const l=e.geometry;for(;!n;)switch(l.primitive){case"triangles":case"surface":n=new fa({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!1});break;case"solid":n=new fa({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!0});break;case"lines":n=new el({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0});break;case"points":n=new Kl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0})}return this._vboInstancingLayers[o]=n,this.layerList.push(n),n}createEntity(e){if(void 0===e.id?e.id=d.createUUID():this.scene.components[e.id]&&(this.error(`Scene already has a Component with this ID: ${e.id} - will assign random ID`),e.id=d.createUUID()),void 0===e.meshIds)return void this.error("Config missing: meshIds");let t=0;this._visible&&!1!==e.visible&&(t|=q),this._pickable&&!1!==e.pickable&&(t|=ee),this._culled&&!1!==e.culled&&(t|=$),this._clippable&&!1!==e.clippable&&(t|=te),this._collidable&&!1!==e.collidable&&(t|=ie),this._edges&&!1!==e.edges&&(t|=ne),this._xrayed&&!1!==e.xrayed&&(t|=se),this._highlighted&&!1!==e.highlighted&&(t|=re),this._selected&&!1!==e.selected&&(t|=oe),e.flags=t,this._createEntity(e)}_createEntity(e){let t=[];for(let i=0,s=e.meshIds.length;ie.sortIdt.sortId?1:0));for(let e=0,t=this.layerList.length;e0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}_updateRenderFlagsVisibleLayers(){const e=this.renderFlags;e.numLayers=this.layerList.length,e.numVisibleLayers=0;for(let t=0,i=this.layerList.length;t0){const t=`${this.id}-dummyEntityForUnusedMeshes`;this.warn(`Creating dummy SceneModelEntity "${t}" for unused SceneMeshes: [${e.join(",")}]`),this.createEntity({id:t,meshIds:e,isObject:!0})}this._unusedMeshes={}}_getActiveSectionPlanesForLayer(e){const t=this.renderFlags,i=this.scene._sectionPlanesState.sectionPlanes,s=i.length,r=e.layerIndex*s;if(s>0)for(let e=0;e0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){const t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0){this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions0&&(e.edgesTransparent=!0))}if(this.numSelectedLayerPortions>0){const t=this.scene.selectedMaterial._state;t.fill&&(t.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){const t=this.scene.highlightMaterial._state;t.fill&&(t.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}drawColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i65536?16:8)}else n=[{positionsCompressed:s,indices:r,edgeIndices:o}];return n}class Bc extends R{constructor(e,t={}){if(super(e,t),this._positions=t.positions||[],t.indices)this._indices=t.indices;else{this._indices=[];for(let e=0,t=this._positions.length/3-1;ep.has(e.id)||g.has(e.id)||f.has(e.id))).reduce(((e,i)=>{let s,r=function(e){let t="";return t+=Math.round(255*e[0]).toString(16).padStart(2,"0"),t+=Math.round(255*e[1]).toString(16).padStart(2,"0"),t+=Math.round(255*e[2]).toString(16).padStart(2,"0"),t}(i.colorize);i.xrayed?(s=0===t.xrayMaterial.fillAlpha&&0!==t.xrayMaterial.edgeAlpha?.1:t.xrayMaterial.fillAlpha,s=Math.round(255*s).toString(16).padStart(2,"0"),r=s+r):p.has(i.id)&&(s=Math.round(255*i.opacity).toString(16).padStart(2,"0"),r=s+r),e[r]||(e[r]=[]);const o=i.id,n=i.originalSystemId,a={ifc_guid:n,originating_system:this.originatingSystem};return n!==o&&(a.authoring_tool_id=o),e[r].push(a),e}),{}),_=Object.entries(m).map((([e,t])=>({color:e,components:t})));o.components.coloring=_;const v=t.objectIds,b=t.visibleObjects,y=t.visibleObjectIds,B=v.filter((e=>!b[e])),w=t.selectedObjectIds;return e.defaultInvisible||y.length0&&e.clipping_planes.forEach((function(e){let t=Ec(e.location,wc),i=Ec(e.direction,wc);A&&d.negateVec3(i),d.subVec3(t,l),r.yUp&&(t=Dc(t),i=Dc(i)),new Br(s,{pos:t,dir:i})})),s.clearLines(),e.lines&&e.lines.length>0){const t=[],i=[];let r=0;e.lines.forEach((e=>{e.start_point&&e.end_point&&(t.push(e.start_point.x),t.push(e.start_point.y),t.push(e.start_point.z),t.push(e.end_point.x),t.push(e.end_point.y),t.push(e.end_point.z),i.push(r++),i.push(r++))})),new Bc(s,{positions:t,indices:i,clippable:!1,collidable:!0})}if(s.clearBitmaps(),e.bitmaps&&e.bitmaps.length>0&&e.bitmaps.forEach((function(e){const t=e.bitmap_type||"jpg",i=e.bitmap_data;let o=Ec(e.location,xc),n=Ec(e.normal,Pc),a=Ec(e.up,Cc),l=e.height||1;t&&i&&o&&n&&a&&(r.yUp&&(o=Dc(o),n=Dc(n),a=Dc(a)),new Ao(s,{src:i,type:t,pos:o,normal:n,up:a,clippable:!1,collidable:!0,height:l}))})),a&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),s.setObjectsHighlighted(s.highlightedObjectIds,!1),s.setObjectsSelected(s.selectedObjectIds,!1)),e.components){if(e.components.visibility){e.components.visibility.default_visibility?(s.setObjectsVisible(s.objectIds,!0),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!1))))):(s.setObjectsVisible(s.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!0)))));const r=e.components.visibility.view_setup_hints;r&&(!1===r.spaces_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcSpace"),!1),void 0!==r.spaces_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcSpace"),!0),r.space_boundaries_visible,!1===r.openings_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcOpening"),!0),r.space_boundaries_translucent,void 0!==r.openings_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcOpening"),!0))}e.components.selection&&(s.setObjectsSelected(s.selectedObjectIds,!1),e.components.selection.forEach((e=>this._withBCFComponent(t,e,(e=>e.selected=!0))))),e.components.translucency&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),e.components.translucency.forEach((e=>this._withBCFComponent(t,e,(e=>e.xrayed=!0))))),e.components.coloring&&e.components.coloring.forEach((e=>{let i=e.color,s=0,r=!1;8===i.length&&(s=parseInt(i.substring(0,2),16)/256,s<=1&&s>=.95&&(s=1),i=i.substring(2),r=!0);const o=[parseInt(i.substring(0,2),16)/256,parseInt(i.substring(2,4),16)/256,parseInt(i.substring(4,6),16)/256];e.components.map((e=>this._withBCFComponent(t,e,(e=>{e.colorize=o,r&&(e.opacity=s)}))))}))}if(e.perspective_camera||e.orthogonal_camera){let a,A,h,c;if(e.perspective_camera?(a=Ec(e.perspective_camera.camera_view_point,wc),A=Ec(e.perspective_camera.camera_direction,wc),h=Ec(e.perspective_camera.camera_up_vector,wc),r.perspective.fov=e.perspective_camera.field_of_view,c="perspective"):(a=Ec(e.orthogonal_camera.camera_view_point,wc),A=Ec(e.orthogonal_camera.camera_direction,wc),h=Ec(e.orthogonal_camera.camera_up_vector,wc),r.ortho.scale=e.orthogonal_camera.view_to_world_scale,c="ortho"),d.subVec3(a,l),r.yUp&&(a=Dc(a),A=Dc(A),h=Dc(h)),o){const e=s.pick({pickSurface:!0,origin:a,direction:A});A=e?e.worldPos:d.addVec3(a,A,wc)}else A=d.addVec3(a,A,wc);n?(r.eye=a,r.look=A,r.up=h,r.projection=c):i.cameraFlight.flyTo({eye:a,look:A,up:h,duration:t.duration,projection:c})}}_withBCFComponent(e,t,i){const s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){const o=t.authoring_tool_id,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}}if(t.ifc_guid){const o=t.ifc_guid,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}Object.keys(r.models).forEach((t=>{const n=d.globalizeObjectId(t,o),a=r.objects[n];if(a)i(a);else if(e.updateCompositeObjects){s.metaScene.metaObjects[n]&&r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}}))}}destroy(){super.destroy()}}function Fc(e){return{x:e[0],y:e[1],z:e[2]}}function Ec(e,t){return(t=new Float64Array(3))[0]=e.x,t[1]=e.y,t[2]=e.z,t}function Ic(e){return new Float64Array([e[0],-e[2],e[1]])}function Dc(e){return new Float64Array([e[0],e[2],-e[1]])}const Sc=d.vec3(),Tc=(e,t,i,s)=>{var r=e-i,o=t-s;return Math.sqrt(r*r+o*o)};class Rc extends R{constructor(e,t={}){if(super(e.viewer.scene,t),this.plugin=e,this._container=t.container,!this._container)throw"config missing: container";this._eventSubs={};var i=this.plugin.viewer.scene;this._originMarker=new ue(i,t.origin),this._targetMarker=new ue(i,t.target),this._originWorld=d.vec3(),this._targetWorld=d.vec3(),this._wp=new Float64Array(24),this._vp=new Float64Array(24),this._pp=new Float64Array(24),this._cp=new Float64Array(8),this._xAxisLabelCulled=!1,this._yAxisLabelCulled=!1,this._zAxisLabelCulled=!1,this._color=t.color||this.plugin.defaultColor;const s=t.onMouseOver?e=>{t.onMouseOver(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseover",e))}:null,r=t.onMouseLeave?e=>{t.onMouseLeave(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseleave",e))}:null,o=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousedown",e))},n=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseup",e))},a=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousemove",e))},l=t.onContextMenu?e=>{t.onContextMenu(e,this)}:null,A=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent("wheel",e))};this._originDot=new fe(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._targetDot=new fe(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthWire=new pe(this._container,{color:this._color,thickness:2,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisWire=new pe(this._container,{color:"#FF0000",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisWire=new pe(this._container,{color:"green",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisWire=new pe(this._container,{color:"blue",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthLabel=new ge(this._container,{fillColor:this._color,prefix:"",text:"",zIndex:void 0!==e.zIndex?e.zIndex+4:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisLabel=new ge(this._container,{fillColor:"red",prefix:"X",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisLabel=new ge(this._container,{fillColor:"green",prefix:"Y",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisLabel=new ge(this._container,{fillColor:"blue",prefix:"Z",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._measurementOrientation="Horizontal",this._wpDirty=!1,this._vpDirty=!1,this._cpDirty=!1,this._sectionPlanesDirty=!0,this._visible=!1,this._originVisible=!1,this._targetVisible=!1,this._wireVisible=!1,this._axisVisible=!1,this._xAxisVisible=!1,this._yAxisVisible=!1,this._zAxisVisible=!1,this._axisEnabled=!0,this._xLabelEnabled=!1,this._yLabelEnabled=!1,this._zLabelEnabled=!1,this._lengthLabelEnabled=!1,this._labelsVisible=!1,this._labelsOnWires=!1,this._clickable=!1,this._originMarker.on("worldPos",(e=>{this._originWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._targetMarker.on("worldPos",(e=>{this._targetWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._onViewMatrix=i.camera.on("viewMatrix",(()=>{this._vpDirty=!0,this._needUpdate(0)})),this._onProjMatrix=i.camera.on("projMatrix",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onCanvasBoundary=i.canvas.on("boundary",(()=>{this._cpDirty=!0,this._needUpdate(0)})),this._onMetricsUnits=i.metrics.on("units",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsScale=i.metrics.on("scale",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsOrigin=i.metrics.on("origin",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onSectionPlaneUpdated=i.on("sectionPlaneUpdated",(()=>{this._sectionPlanesDirty=!0,this._needUpdate()})),this.approximate=t.approximate,this.visible=t.visible,this.originVisible=t.originVisible,this.targetVisible=t.targetVisible,this.wireVisible=t.wireVisible,this.axisVisible=t.axisVisible,this.xAxisVisible=t.xAxisVisible,this.yAxisVisible=t.yAxisVisible,this.zAxisVisible=t.zAxisVisible,this.xLabelEnabled=t.xLabelEnabled,this.yLabelEnabled=t.yLabelEnabled,this.zLabelEnabled=t.zLabelEnabled,this.lengthLabelEnabled=t.lengthLabelEnabled,this.labelsVisible=t.labelsVisible,this.labelsOnWires=t.labelsOnWires}_update(){if(!this._visible)return;const e=this.plugin.viewer.scene;if(this._wpDirty&&(this._measurementOrientation=function(e,t,i){return Math.abs(t[1]-e[1])>i?"Vertical":"Horizontal"}(this._originWorld,this._targetWorld,1),"Vertical"===this._measurementOrientation?(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._originWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._originWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1):(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._targetWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._targetWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1),this._wpDirty=!1,this._vpDirty=!0),this._vpDirty&&(d.transformPositions4(e.camera.viewMatrix,this._wp,this._vp),this._vp[3]=1,this._vp[7]=1,this._vp[11]=1,this._vp[15]=1,this._vpDirty=!1,this._cpDirty=!0),this._sectionPlanesDirty){if(this._isSliced(this._originWorld)||this._isSliced(this._targetWorld))return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setCulled(!0),this._yAxisWire.setCulled(!0),this._zAxisWire.setCulled(!0),this._lengthWire.setCulled(!0),this._originDot.setCulled(!0),void this._targetDot.setCulled(!0);this._xAxisLabel.setCulled(!1),this._yAxisLabel.setCulled(!1),this._zAxisLabel.setCulled(!1),this._lengthLabel.setCulled(!1),this._xAxisWire.setCulled(!1),this._yAxisWire.setCulled(!1),this._zAxisWire.setCulled(!1),this._lengthWire.setCulled(!1),this._originDot.setCulled(!1),this._targetDot.setCulled(!1),this._sectionPlanesDirty=!0}const t=this._originMarker.viewPos[2],i=this._targetMarker.viewPos[2];if(t>-.3||i>-.3)return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setVisible(!1),this._yAxisWire.setVisible(!1),this._zAxisWire.setVisible(!1),this._lengthWire.setVisible(!1),this._originDot.setVisible(!1),void this._targetDot.setVisible(!1);if(this._cpDirty){d.transformPositions4(e.camera.project.matrix,this._vp,this._pp);var s=this._pp,r=this._cp,o=e.canvas.canvas.getBoundingClientRect();const t=this._container.getBoundingClientRect();var n=o.top-t.top,a=o.left-t.left,l=e.canvas.boundary,A=l[2],h=l[3],c=0;const i=this.plugin.viewer.scene.metrics,f=i.scale,g=i.units,m=i.unitsInfo[g].abbrev;for(var u=0,p=s.length;ue.offsetTop+(e.offsetParent&&e.offsetParent!==s.parentNode&&h(e.offsetParent)),c=e=>e.offsetLeft+(e.offsetParent&&e.offsetParent!==s.parentNode&&c(e.offsetParent)),u=d.vec2();this._onCameraControlHoverSnapOrSurface=i.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",(e=>{const t=e.snappedCanvasPos||e.canvasPos;r=!0,o.set(e.worldPos),n.set(e.canvasPos),0===this._mouseState?(this._canvasToPagePos?(this._canvasToPagePos(s,t,u),this._markerDiv.style.left=u[0]-5+"px",this._markerDiv.style.top=u[1]-5+"px"):(this._markerDiv.style.left=c(s)+t[0]-5+"px",this._markerDiv.style.top=h(s)+t[1]-5+"px"),this._markerDiv.style.background="pink",e.snappedToVertex||e.snappedToEdge?(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos,this.pointerLens.snapped=!0),this._markerDiv.style.background="greenyellow",this._markerDiv.style.border="2px solid green"):(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.canvasPos,this.pointerLens.snapped=!1),this._markerDiv.style.background="pink",this._markerDiv.style.border="2px solid red"),A=e.entity):(this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px"),s.style.cursor="pointer",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=this._currentDistanceMeasurementInitState.wireVisible,this._currentDistanceMeasurement.axisVisible=this._currentDistanceMeasurementInitState.axisVisible&&this.distanceMeasurementsPlugin.defaultAxisVisible,this._currentDistanceMeasurement.xAxisVisible=this._currentDistanceMeasurementInitState.xAxisVisible&&this.distanceMeasurementsPlugin.defaultXAxisVisible,this._currentDistanceMeasurement.yAxisVisible=this._currentDistanceMeasurementInitState.yAxisVisible&&this.distanceMeasurementsPlugin.defaultYAxisVisible,this._currentDistanceMeasurement.zAxisVisible=this._currentDistanceMeasurementInitState.zAxisVisible&&this.distanceMeasurementsPlugin.defaultZAxisVisible,this._currentDistanceMeasurement.targetVisible=this._currentDistanceMeasurementInitState.targetVisible,this._currentDistanceMeasurement.target.worldPos=o.slice(),this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px")})),s.addEventListener("mousedown",this._onMouseDown=e=>{1===e.which&&(a=e.clientX,l=e.clientY)}),s.addEventListener("mouseup",this._onMouseUp=t=>{1===t.which&&(t.clientX>a+20||t.clientXl+20||t.clientY{this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos),r=!1,this._markerDiv.style.left="-100px",this._markerDiv.style.top="-100px",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.axisVisible=!1),s.style.cursor="default"})),this._active=!0}deactivate(){if(!this._active)return;this.fire("activated",!1),this.pointerLens&&(this.pointerLens.visible=!1),this._markerDiv&&this._destroyMarkerDiv(),this.reset();const e=this.scene.canvas.canvas;e.removeEventListener("mousedown",this._onMouseDown),e.removeEventListener("mouseup",this._onMouseUp);const t=this.distanceMeasurementsPlugin.viewer.cameraControl;t.off(this._onCameraControlHoverSnapOrSurface),t.off(this._onCameraControlHoverSnapOrSurfaceOff),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._active=!1}reset(){this._active&&(this._destroyMarkerDiv(),this._initMarkerDiv(),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._mouseState=0)}get currentMeasurement(){return this._currentDistanceMeasurement}destroy(){this.deactivate(),super.destroy()}}class kc extends z{constructor(e,t={}){super("DistanceMeasurements",e),this._pointerLens=t.pointerLens,this._container=t.container||document.body,this._defaultControl=null,this._measurements={},this.labelMinAxisLength=t.labelMinAxisLength,this.defaultVisible=!1!==t.defaultVisible,this.defaultOriginVisible=!1!==t.defaultOriginVisible,this.defaultTargetVisible=!1!==t.defaultTargetVisible,this.defaultWireVisible=!1!==t.defaultWireVisible,this.defaultXLabelEnabled=!1!==t.defaultXLabelEnabled,this.defaultYLabelEnabled=!1!==t.defaultYLabelEnabled,this.defaultZLabelEnabled=!1!==t.defaultZLabelEnabled,this.defaultLengthLabelEnabled=!1!==t.defaultLengthLabelEnabled,this.defaultLabelsVisible=!1!==t.defaultLabelsVisible,this.defaultAxisVisible=!1!==t.defaultAxisVisible,this.defaultXAxisVisible=!1!==t.defaultXAxisVisible,this.defaultYAxisVisible=!1!==t.defaultYAxisVisible,this.defaultZAxisVisible=!1!==t.defaultZAxisVisible,this.defaultColor=void 0!==t.defaultColor?t.defaultColor:"#00BBFF",this.zIndex=t.zIndex||1e4,this.defaultLabelsOnWires=!1!==t.defaultLabelsOnWires,this._onMouseOver=(e,t)=>{this.fire("mouseOver",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onMouseLeave=(e,t)=>{this.fire("mouseLeave",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onContextMenu=(e,t)=>{this.fire("contextMenu",{plugin:this,distanceMeasurement:t,measurement:t,event:e})}}getContainerElement(){return this._container}send(e,t){}get pointerLens(){return this._pointerLens}get control(){return this._defaultControl||(this._defaultControl=new Uc(this,{})),this._defaultControl}get measurements(){return this._measurements}set labelMinAxisLength(e){e<1&&(this.error("labelMinAxisLength must be >= 1; defaulting to 25"),e=25),this._labelMinAxisLength=e||25}get labelMinAxisLength(){return this._labelMinAxisLength}createMeasurement(e={}){this.viewer.scene.components[e.id]&&(this.error("Viewer scene component with this ID already exists: "+e.id),delete e.id);const t=e.origin,i=e.target,s=new Rc(this,{id:e.id,plugin:this,container:this._container,origin:{entity:t.entity,worldPos:t.worldPos},target:{entity:i.entity,worldPos:i.worldPos},visible:e.visible,wireVisible:e.wireVisible,axisVisible:!1!==e.axisVisible&&!1!==this.defaultAxisVisible,xAxisVisible:!1!==e.xAxisVisible&&!1!==this.defaultXAxisVisible,yAxisVisible:!1!==e.yAxisVisible&&!1!==this.defaultYAxisVisible,zAxisVisible:!1!==e.zAxisVisible&&!1!==this.defaultZAxisVisible,xLabelEnabled:!1!==e.xLabelEnabled&&!1!==this.defaultXLabelEnabled,yLabelEnabled:!1!==e.yLabelEnabled&&!1!==this.defaultYLabelEnabled,zLabelEnabled:!1!==e.zLabelEnabled&&!1!==this.defaultZLabelEnabled,lengthLabelEnabled:!1!==e.lengthLabelEnabled&&!1!==this.defaultLengthLabelEnabled,labelsVisible:!1!==e.labelsVisible&&!1!==this.defaultLabelsVisible,originVisible:e.originVisible,targetVisible:e.targetVisible,color:e.color,labelsOnWires:!1!==e.labelsOnWires&&!1!==this.defaultLabelsOnWires,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[s.id]=s,s.clickable=!0,s.on("destroyed",(()=>{delete this._measurements[s.id]})),this.fire("measurementCreated",s),s}destroyMeasurement(e){const t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("DistanceMeasurement not found: "+e)}setLabelsShown(e){for(const[t,i]of Object.entries(this.measurements))i.labelShown=e}setAxisVisible(e){for(const[t,i]of Object.entries(this.measurements))i.axisVisible=e;this.defaultAxisVisible=e}getAxisVisible(){return this.defaultAxisVisible}clear(){const e=Object.keys(this._measurements);for(var t=0,i=e.length;t{this.plugin.viewer.cameraControl.active=!1},c=()=>{this.plugin.viewer.cameraControl.active=!0},u=()=>{o&&(clearTimeout(o),o=null),this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),c(),this._touchState=0};i.addEventListener("touchstart",this._onCanvasTouchStart=i=>{const l=i.touches.length;if(1!==l)return void(o&&(clearTimeout(o),o=null));const c=i.touches[0],p=c.clientX,f=c.clientY;switch(n.set([p,f]),a.set([p,f]),this._touchState){case 0:if(1!==l&&null!==o)return void u();const i=t.pick({canvasPos:a,snapping:this._snapping,snapToEdge:this._snapping});if(i&&i.snapped)s.set(i.worldPos),this.pointerCircle.start(i.snappedCanvasPos);else{const e=t.pick({canvasPos:a,pickSurface:!0});if(!e||!e.worldPos)return;s.set(e.worldPos),this.pointerCircle.start(e.canvasPos)}o=setTimeout((()=>{1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{if(o=null,1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{this.pointerCircle.stop();const r=i.touches.length;if(1!==r||1!==i.changedTouches.length)return void(o&&(clearTimeout(o),o=null));const n=i.touches[0],l=n.clientX,h=n.clientY;if(n.identifier!==A)return;let c,u;switch(a.set([l,h]),this._touchState){case 2:this.pointerLens&&(this.pointerLens.canvasPos=a),c=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),c&&c.snapped?(this.pointerLens&&(this.pointerLens.snappedCanvasPos=c.snappedCanvasPos,this.pointerLens.snapped=!0),s.set(c.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=c.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:c.worldPos,entity:c.entity},target:{worldPos:c.worldPos,entity:c.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):(u=t.pick({canvasPos:a,pickSurface:!0}),u&&u.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=u.canvasPos,this.pointerLens.snapped=!1),s.set(u.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=u.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:u.worldPos,entity:u.entity},target:{worldPos:u.worldPos,entity:u.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)),this._touchState=2;break;case 5:if(1!==r&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),c=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),c&&c.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=c.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentDistanceMeasurement.target.worldPos=c.worldPos,this._currentDistanceMeasurement.target.entity=c.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0):(u=t.pick({canvasPos:a,pickSurface:!0}),u&&u.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=u.canvasPos,this.pointerLens.snapped=!1),this._currentDistanceMeasurement.target.worldPos=u.worldPos,this._currentDistanceMeasurement.target.entity=u.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0)),this._touchState=5}}),{passive:!0}),i.addEventListener("touchend",this._onCanvasTouchEnd=i=>{this.pointerCircle.stop();const s=i.changedTouches.length;if(1!==s)return;const h=i.changedTouches[0],u=h.clientX,p=h.clientY;if(h.identifier===A)switch(o&&(clearTimeout(o),o=null),l.set([u,p]),this._touchState){case 1:{if(1!==s||u>n[0]+r||un[1]+r||pn[0]+r||un[1]+r||p{i=1e3*this._delayBeforeRestoreSeconds,s||(e.scene._renderer.setColorTextureEnabled(!this._hideColorTexture),e.scene._renderer.setPBREnabled(!this._hidePBR),e.scene._renderer.setSAOEnabled(!this._hideSAO),e.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects),e.scene._renderer.setEdgesEnabled(!this._hideEdges),this._scaleCanvasResolution?e.scene.canvas.resolutionScale=this._scaleCanvasResolutionFactor:e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,s=!0)},o=()=>{e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,e.scene._renderer.setEdgesEnabled(!0),e.scene._renderer.setColorTextureEnabled(!0),e.scene._renderer.setPBREnabled(!0),e.scene._renderer.setSAOEnabled(!0),e.scene._renderer.setTransparentEnabled(!0),s=!1};this._onCanvasBoundary=e.scene.canvas.on("boundary",r),this._onCameraMatrix=e.scene.camera.on("matrix",r),this._onSceneTick=e.scene.on("tick",(e=>{s&&(i-=e.deltaTime,(!this._delayBeforeRestore||i<=0)&&o())}));let n=!1;this._onSceneMouseDown=e.scene.input.on("mousedown",(()=>{n=!0})),this._onSceneMouseUp=e.scene.input.on("mouseup",(()=>{n=!1})),this._onSceneMouseMove=e.scene.input.on("mousemove",(()=>{n&&r()}))}get hideColorTexture(){return this._hideColorTexture}set hideColorTexture(e){this._hideColorTexture=e}get hidePBR(){return this._hidePBR}set hidePBR(e){this._hidePBR=e}get hideSAO(){return this._hideSAO}set hideSAO(e){this._hideSAO=e}get hideEdges(){return this._hideEdges}set hideEdges(e){this._hideEdges=e}get hideTransparentObjects(){return this._hideTransparentObjects}set hideTransparentObjects(e){this._hideTransparentObjects=!1!==e}get scaleCanvasResolution(){return this._scaleCanvasResolution}set scaleCanvasResolution(e){this._scaleCanvasResolution=e}get defaultScaleCanvasResolutionFactor(){return this._defaultScaleCanvasResolutionFactor}set defaultScaleCanvasResolutionFactor(e){this._defaultScaleCanvasResolutionFactor=e||1}get scaleCanvasResolutionFactor(){return this._scaleCanvasResolutionFactor}set scaleCanvasResolutionFactor(e){this._scaleCanvasResolutionFactor=e||.6}get delayBeforeRestore(){return this._delayBeforeRestore}set delayBeforeRestore(e){this._delayBeforeRestore=e}get delayBeforeRestoreSeconds(){return this._delayBeforeRestoreSeconds}set delayBeforeRestoreSeconds(e){this._delayBeforeRestoreSeconds=null!=e?e:.5}send(e,t){}destroy(){this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),super.destroy()}}class Qc{constructor(){}getMetaModel(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getGLTF(e,t,i){y.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getGLB(e,t,i){y.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getArrayBuffer(e,t,i,s){!function(e,t,i,s){var r=()=>{};i=i||r,s=s||r;const o=/^data:(.*?)(;base64)?,(.*)$/,n=t.match(o);if(n){const e=!!n[2];var a=n[3];a=window.decodeURIComponent(a),e&&(a=window.atob(a));try{const e=new ArrayBuffer(a.length),t=new Uint8Array(e);for(var l=0;l{i(e)}),(function(e){s(e)}))}}class Vc{constructor(e={}){this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale="en",this._messages={},this._locales=[],this._locale="en",this.messages=e.messages,this.locale=e.locale}set messages(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire("updated",this)}loadMessages(e={}){for(let t in e)this._messages[t]=e[t];this.messages=this._messages}clearMessages(){this.messages={}}get locales(){return this._locales}set locale(e){e=e||"de",this._locale!==e&&(this._locale=e,this.fire("updated",e))}get locale(){return this._locale}translate(e,t){const i=this._messages[this._locale];if(!i)return null;const s=Hc(e,i);return s?t?jc(s,t):s:null}translatePlurals(e,t,i){const s=this._messages[this._locale];if(!s)return null;let r=Hc(e,s);return r=0===(t=parseInt(""+t,10))?r.zero:t>1?r.other:r.one,r?(r=jc(r,[t]),i&&(r=jc(r,i)),r):null}fire(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);const s=this._eventSubs[e];if(s)for(const e in s)if(s.hasOwnProperty(e)){s[e].callback(t)}}on(t,i){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new e),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});let s=this._eventSubs[t];s||(s={},this._eventSubs[t]=s);const r=this._eventSubIDMap.addItem();s[r]={callback:i},this._eventSubEvents[r]=t;const o=this._events[t];return void 0!==o&&i(o),r}off(e){if(null==e)return;if(!this._eventSubEvents)return;const t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];const i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}function Hc(e,t){if(t[e])return t[e];const i=e.split(".");let s=t;for(let e=0,t=i.length;s&&e1?1:e}get t(){return this._t}get tangent(){return this.getTangent(this._t)}get length(){var e=this._getLengths();return e[e.length-1]}getTangent(e){var t=1e-4;void 0===e&&(e=this._t);var i=e-t,s=e+t;i<0&&(i=0),s>1&&(s=1);var r=this.getPoint(i),o=this.getPoint(s),n=d.subVec3(o,r,[]);return d.normalizeVec3(n,[])}getPointAt(e){var t=this.getUToTMapping(e);return this.getPoint(t)}getPoints(e){e||(e=5);var t,i=[];for(t=0;t<=e;t++)i.push(this.getPoint(t/e));return i}_getLengths(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i,s=[],r=this.getPoint(0),o=0;for(s.push(0),i=1;i<=e;i++)t=this.getPoint(i/e),o+=d.lenVec3(d.subVec3(t,r,[])),s.push(o),r=t;return this.cacheArcLengths=s,s}_updateArcLengths(){this.needsUpdate=!0,this._getLengths()}getUToTMapping(e,t){var i,s=this._getLengths(),r=0,o=s.length;i=t||e*s[o-1];for(var n,a=0,l=o-1;a<=l;)if((n=s[r=Math.floor(a+(l-a)/2)]-i)<0)a=r+1;else{if(!(n>0)){l=r;break}l=r-1}if(s[r=l]===i)return r/(o-1);var A=s[r];return(r+(i-A)/(s[r+1]-A))/(o-1)}}class zc extends Gc{constructor(e,t={}){super(e,t),this.points=t.points,this.t=t.t}set points(e){this._points=e||[]}get points(){return this._points}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=this.points;if(!(t.length<3)){var i=(t.length-1)*e,s=Math.floor(i),r=i-s,o=t[0===s?s:s-1],n=t[s],a=t[s>t.length-2?t.length-1:s+1],l=t[s>t.length-3?t.length-1:s+2],A=d.vec3();return A[0]=d.catmullRomInterpolate(o[0],n[0],a[0],l[0],r),A[1]=d.catmullRomInterpolate(o[1],n[1],a[1],l[1],r),A[2]=d.catmullRomInterpolate(o[2],n[2],a[2],l[2],r),A}this.error("Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].")}getJSON(){return{points:points,t:this._t}}}const Wc=d.vec3();class Kc extends R{get type(){return"CameraPath"}constructor(e,t={}){super(e,t),this._frames=[],this._eyeCurve=new zc(this),this._lookCurve=new zc(this),this._upCurve=new zc(this),t.frames&&(this.addFrames(t.frames),this.smoothFrameTimes(1))}get frames(){return this._frames}get eyeCurve(){return this._eyeCurve}get lookCurve(){return this._lookCurve}get upCurve(){return this._upCurve}saveFrame(e){const t=this.scene.camera;this.addFrame(e,t.eye,t.look,t.up)}addFrame(e,t,i,s){const r={t:e,eye:t.slice(0),look:i.slice(0),up:s.slice(0)};this._frames.push(r),this._eyeCurve.points.push(r.eye),this._lookCurve.points.push(r.look),this._upCurve.points.push(r.up)}addFrames(e){let t;for(let i=0,s=e.length;i1?1:e,t.eye=this._eyeCurve.getPoint(e,Wc),t.look=this._lookCurve.getPoint(e,Wc),t.up=this._upCurve.getPoint(e,Wc)}sampleFrame(e,t,i,s){e=e<0?0:e>1?1:e,this._eyeCurve.getPoint(e,t),this._lookCurve.getPoint(e,i),this._upCurve.getPoint(e,s)}smoothFrameTimes(e){if(0===this._frames.length)return;const t=d.vec3();var i=0;this._frames[0].t=0;const s=[];for(let e=1,o=this._frames.length;e=1;e>1&&(e=1);const i=this.easing?$c._ease(e,0,1,1):e,s=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?(d.subVec3(s.eye,s.look,qc),s.eye=d.lerpVec3(i,0,1,this._eye1,this._eye2,Yc),s.look=d.subVec3(Yc,qc,Jc)):this._flyingLook&&(s.look=d.lerpVec3(i,0,1,this._look1,this._look2,Jc),s.up=d.lerpVec3(i,0,1,this._up1,this._up2,Zc)):this._flyingEyeLookUp&&(s.eye=d.lerpVec3(i,0,1,this._eye1,this._eye2,Yc),s.look=d.lerpVec3(i,0,1,this._look1,this._look2,Jc),s.up=d.lerpVec3(i,0,1,this._up1,this._up2,Zc)),this._projection2){const t="ortho"===this._projection2?$c._easeOutExpo(e,0,1,1):$c._easeInCubic(e,0,1,1);s.customProjection.matrix=d.lerpMat4(t,0,1,this._projMatrix1,this._projMatrix2)}else s.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return s.ortho.scale=this._orthoScale2,void this.stop();I.scheduleTask(this._update,this)}static _ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}static _easeInCubic(e,t,i,s){return i*(e/=s)*e*e+t}static _easeOutExpo(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}stop(){if(!this._flying)return;this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);const e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire("stopped",!0,!0)}cancel(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire("canceled",!0,!0))}set duration(e){this._duration=e?1e3*e:500,this.stop()}get duration(){return this._duration/1e3}set fit(e){this._fit=!1!==e}get fit(){return this._fit}set fitFOV(e){this._fitFOV=e||45}get fitFOV(){return this._fitFOV}set trail(e){this._trail=!!e}get trail(){return this._trail}destroy(){this.stop(),super.destroy()}}class eu extends R{get type(){return"CameraPathAnimation"}constructor(e,t={}){super(e,t),this._cameraFlightAnimation=new $c(this),this._t=0,this.state=eu.SCRUBBING,this._playingFromT=0,this._playingToT=0,this._playingRate=t.playingRate||1,this._playingDir=1,this._lastTime=null,this.cameraPath=t.cameraPath,this._tick=this.scene.on("tick",this._updateT,this)}_updateT(){const e=this._cameraPath;if(!e)return;let t,i;const s=performance.now(),r=this._lastTime?.001*(s-this._lastTime):0;if(this._lastTime=s,0!==r)switch(this.state){case eu.SCRUBBING:return;case eu.PLAYING:if(this._t+=this._playingRate*r,t=this._cameraPath.frames.length,0===t||this._playingDir<0&&this._t<=0||this._playingDir>0&&this._t>=this._cameraPath.frames[t-1].t)return this.state=eu.SCRUBBING,this._t=this._cameraPath.frames[t-1].t,void this.fire("stopped");e.loadFrame(this._t);break;case eu.PLAYING_TO:i=this._t+this._playingRate*r*this._playingDir,(this._playingDir<0&&i<=this._playingToT||this._playingDir>0&&i>=this._playingToT)&&(i=this._playingToT,this.state=eu.SCRUBBING,this.fire("stopped")),this._t=i,e.loadFrame(this._t)}}_ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}set cameraPath(e){this._cameraPath=e}get cameraPath(){return this._cameraPath}set rate(e){this._playingRate=e}get rate(){return this._playingRate}play(){this._cameraPath&&(this._lastTime=null,this.state=eu.PLAYING)}playToT(e){this._cameraPath&&(this._playingFromT=this._t,this._playingToT=e,this._playingDir=this._playingToT-this._playingFromT<0?-1:1,this._lastTime=null,this.state=eu.PLAYING_TO)}playToFrame(e){const t=this._cameraPath;if(!t)return;const i=t.frames[e];i?this.playToT(i.t):this.error("playToFrame - frame index out of range: "+e)}flyToFrame(e,t){const i=this._cameraPath;if(!i)return;const s=i.frames[e];s?(this.state=eu.SCRUBBING,this._cameraFlightAnimation.flyTo(s,t)):this.error("flyToFrame - frame index out of range: "+e)}scrubToT(e){const t=this._cameraPath;if(!t)return;this.scene.camera&&(this._t=e,t.loadFrame(this._t),this.state=eu.SCRUBBING)}scrubToFrame(e){const t=this._cameraPath;if(!t)return;if(!this.scene.camera)return;t.frames[e]?(t.loadFrame(this._t),this.state=eu.SCRUBBING):this.error("playToFrame - frame index out of range: "+e)}stop(){this.state=eu.SCRUBBING,this.fire("stopped")}destroy(){super.destroy(),this.scene.off(this._tick)}}eu.STOPPED=0,eu.SCRUBBING=1,eu.PLAYING=2,eu.PLAYING_TO=3;const tu=d.vec3(),iu=d.vec3();d.vec3();const su=d.vec3([0,-1,0]),ru=d.vec4([0,0,0,1]);class ou extends R{constructor(e,t={}){super(e,t),this._src=null,this._image=null,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._dir=d.vec3(),this._size=1,this._imageSize=d.vec2(),this._texture=new Xr(this),this._plane=new fr(this,{geometry:new zt(this,oo({center:[0,0,0],xSize:1,zSize:1,xSegments:10,zSegments:10})),material:new Yt(this,{diffuse:[0,0,0],ambient:[0,0,0],specular:[0,0,0],diffuseMap:this._texture,emissiveMap:this._texture,backfaces:!0}),clippable:t.clippable}),this._grid=new fr(this,{geometry:new zt(this,ro({size:1,divisions:10})),material:new Yt(this,{diffuse:[0,0,0],ambient:[0,0,0],emissive:[.2,.8,.2]}),position:[0,.001,0],clippable:t.clippable}),this._node=new Sr(this,{rotation:[0,0,0],position:[0,0,0],scale:[1,1,1],clippable:!1,children:[this._plane,this._grid]}),this._gridVisible=!1,this.visible=!0,this.gridVisible=t.gridVisible,this.position=t.position,this.rotation=t.rotation,this.dir=t.dir,this.size=t.size,this.collidable=t.collidable,this.clippable=t.clippable,this.pickable=t.pickable,this.opacity=t.opacity,t.image?this.image=t.image:this.src=t.src}set visible(e){this._plane.visible=e,this._grid.visible=this._gridVisible&&e}get visible(){return this._plane.visible}set gridVisible(e){e=!1!==e,this._gridVisible=e,this._grid.visible=this._gridVisible&&this.visible}get gridVisible(){return this._gridVisible}set image(e){this._image=e,this._image&&(this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}get image(){return this._image}set src(e){if(this._src=e,this._src){this._image=null;const e=new Image;e.onload=()=>{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set position(e){this._pos.set(e||[0,0,0]),X(this._pos,this._origin,this._rtcPos),this._node.origin=this._origin,this._node.position=this._rtcPos}get position(){return this._pos}set rotation(e){this._node.rotation=e}get rotation(){return this._node.rotation}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set dir(e){if(this._dir.set(e||[0,0,-1]),e){const t=this.scene.center,i=[-this._dir[0],-this._dir[1],-this._dir[2]];d.subVec3(t,this.position,tu);const s=-d.dotVec3(i,tu);d.normalizeVec3(i),d.mulVec3Scalar(i,s,iu),d.vec3PairToQuaternion(su,e,ru),this._node.quaternion=ru}}get dir(){return this._dir}set collidable(e){this._node.collidable=!1!==e}get collidable(){return this._node.collidable}set clippable(e){this._node.clippable=!1!==e}get clippable(){return this._node.clippable}set pickable(e){this._node.pickable=!1!==e}get pickable(){return this._node.pickable}set opacity(e){this._node.opacity=e}get opacity(){return this._node.opacity}destroy(){super.destroy()}_updatePlaneSizeFromImage(){const e=this._size,t=this._imageSize[0],i=this._imageSize[1];if(t>i){const s=i/t;this._node.scale=[e,1,e*s]}else{const s=t/i;this._node.scale=[e*s,1,e]}}}class nu extends Dt{get type(){return"PointLight"}constructor(e,t={}){super(e,t);const i=this;this._shadowRenderBuf=null,this._shadowViewMatrix=null,this._shadowProjMatrix=null,this._shadowViewMatrixDirty=!0,this._shadowProjMatrixDirty=!0;const s=this.scene.camera,r=this.scene.canvas;this._onCameraViewMatrix=s.on("viewMatrix",(()=>{this._shadowViewMatrixDirty=!0})),this._onCameraProjMatrix=s.on("projMatrix",(()=>{this._shadowProjMatrixDirty=!0})),this._onCanvasBoundary=r.on("boundary",(()=>{this._shadowProjMatrixDirty=!0})),this._state=new At({type:"point",pos:d.vec3([1,1,1]),color:d.vec3([.7,.7,.8]),intensity:1,attenuation:[0,0,0],space:t.space||"view",castsShadow:!1,getShadowViewMatrix:()=>{if(i._shadowViewMatrixDirty){i._shadowViewMatrix||(i._shadowViewMatrix=d.identityMat4());const e=i._state.pos,t=s.look,r=s.up;d.lookAtMat4v(e,t,r,i._shadowViewMatrix),i._shadowViewMatrixDirty=!1}return i._shadowViewMatrix},getShadowProjMatrix:()=>{if(i._shadowProjMatrixDirty){i._shadowProjMatrix||(i._shadowProjMatrix=d.identityMat4());const e=i.scene.canvas.canvas;d.perspectiveMat4(Math.PI/180*70,e.clientWidth/e.clientHeight,.1,500,i._shadowProjMatrix),i._shadowProjMatrixDirty=!1}return i._shadowProjMatrix},getShadowRenderBuf:()=>(i._shadowRenderBuf||(i._shadowRenderBuf=new st(i.scene.canvas.canvas,i.scene.canvas.gl,{size:[1024,1024]})),i._shadowRenderBuf)}),this.pos=t.pos,this.color=t.color,this.intensity=t.intensity,this.constantAttenuation=t.constantAttenuation,this.linearAttenuation=t.linearAttenuation,this.quadraticAttenuation=t.quadraticAttenuation,this.castsShadow=t.castsShadow,this.scene._lightCreated(this)}set pos(e){this._state.pos.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}get pos(){return this._state.pos}set color(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}get color(){return this._state.color}set intensity(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}get intensity(){return this._state.intensity}set constantAttenuation(e){this._state.attenuation[0]=e||0,this.glRedraw()}get constantAttenuation(){return this._state.attenuation[0]}set linearAttenuation(e){this._state.attenuation[1]=e||0,this.glRedraw()}get linearAttenuation(){return this._state.attenuation[1]}set quadraticAttenuation(e){this._state.attenuation[2]=e||0,this.glRedraw()}get quadraticAttenuation(){return this._state.attenuation[2]}set castsShadow(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}get castsShadow(){return this._state.castsShadow}destroy(){const e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),super.destroy(),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}}function au(e){if(!lu(e.width)||!lu(e.height)){const t=document.createElement("canvas");t.width=Au(e.width),t.height=Au(e.height);t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),e=t}return e}function lu(e){return 0==(e&e-1)}function Au(e){--e;for(let t=1;t<32;t<<=1)e|=e>>t;return e+1}class hu extends R{get type(){return"CubeTexture"}constructor(e,t={}){super(e,t);const i=this.scene.canvas.gl;this._state=new At({texture:new Hr({gl:i,target:i.TEXTURE_CUBE_MAP}),flipY:this._checkFlipY(t.minFilter),encoding:this._checkEncoding(t.encoding),minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,mipmaps:!0}),this._src=t.src,this._images=[],this._loadSrc(t.src),m.memory.textures++}_checkFlipY(e){return!!e}_checkEncoding(e){return 3e3!==(e=e||3e3)&&3001!==e&&(this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),e=3e3),e}_webglContextRestored(){this.scene.canvas.gl,this._state.texture=null,this._src&&this._loadSrc(this._src)}_loadSrc(e){const t=this,i=this.scene.canvas.gl;this._images=[];let s=!1,r=0;for(let o=0;o{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set collidable(e){this._mesh.collidable=!1!==e}get collidable(){return this._mesh.collidable}set clippable(e){this._mesh.clippable=!1!==e}get clippable(){return this._mesh.clippable}set pickable(e){this._mesh.pickable=!1!==e}get pickable(){return this._mesh.pickable}set opacity(e){this._mesh.opacity=e}get opacity(){return this._mesh.opacity}_updatePlaneSizeFromImage(){const e=.5*this._size,t=this._imageSize[0],i=this._imageSize[1],s=i/t;this._geometry.positions=t>i?[e,e*s,0,-e,e*s,0,-e,-e*s,0,e,-e*s,0]:[e/s,e,0,-e/s,e,0,-e/s,-e,0,e/s,-e,0]}}class pu{constructor(e){this._eye=d.vec3(),this._look=d.vec3(),this._up=d.vec3(),this._projection={},e&&this.saveCamera(e)}saveCamera(e){const t=e.camera,i=t.project;switch(this._eye.set(t.eye),this._look.set(t.look),this._up.set(t.up),t.projection){case"perspective":this._projection={projection:"perspective",fov:i.fov,fovAxis:i.fovAxis,near:i.near,far:i.far};break;case"ortho":this._projection={projection:"ortho",scale:i.scale,near:i.near,far:i.far};break;case"frustum":this._projection={projection:"frustum",left:i.left,right:i.right,top:i.top,bottom:i.bottom,near:i.near,far:i.far};break;case"custom":this._projection={projection:"custom",matrix:i.matrix.slice()}}}restoreCamera(e,t){const i=e.camera,s=this._projection;function r(){switch(s.type){case"perspective":i.perspective.fov=s.fov,i.perspective.fovAxis=s.fovAxis,i.perspective.near=s.near,i.perspective.far=s.far;break;case"ortho":i.ortho.scale=s.scale,i.ortho.near=s.near,i.ortho.far=s.far;break;case"frustum":i.frustum.left=s.left,i.frustum.right=s.right,i.frustum.top=s.top,i.frustum.bottom=s.bottom,i.frustum.near=s.near,i.frustum.far=s.far;break;case"custom":i.customProjection.matrix=s.matrix}}t?e.viewer.cameraFlight.flyTo({eye:this._eye,look:this._look,up:this._up,orthoScale:s.scale,projection:s.projection},(()=>{r(),t()})):(i.eye=this._eye,i.look=this._look,i.up=this._up,r(),i.projection=s.projection)}}const fu=d.vec3();class gu{constructor(e){if(this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsOpacity=[],this.numObjects=0,e){const t=e.metaScene.scene;this.saveObjects(t,e)}}saveObjects(e,t,i){this.numObjects=0,this._mask=i?y.apply(i,{}):null;const s=!i||i.visible,r=!i||i.edges,o=!i||i.xrayed,n=!i||i.highlighted,a=!i||i.selected,l=!i||i.clippable,A=!i||i.pickable,h=!i||i.colorize,c=!i||i.opacity,u=t.metaObjects,d=e.objects;for(let e=0,t=u.length;e1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=d.vec3();return t[0]=d.b3(e,this._v0[0],this._v1[0],this._v2[0],this._v3[0]),t[1]=d.b3(e,this._v0[1],this._v1[1],this._v2[1],this._v3[1]),t[2]=d.b3(e,this._v0[2],this._v1[2],this._v2[2],this._v3[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,v3:this._v3,t:this._t}}}class bu extends Gc{constructor(e,t={}){super(e,t),this._cachedLengths=[],this._dirty=!0,this._curves=[],this._t=0,this._dirtySubs=[],this._destroyedSubs=[],this.curves=t.curves||[],this.t=t.t}addCurve(e){this._curves.push(e),this._dirty=!0}set curves(e){var t,i,s;for(e=e||[],i=0,s=this._curves.length;i1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}get length(){var e=this._getCurveLengths();return e[e.length-1]}getPoint(e){for(var t,i=e*this.length,s=this._getCurveLengths(),r=0;r=i){var o=1-(s[r]-i)/(t=this._curves[r]).length;return t.getPointAt(o)}r++}return null}_getCurveLengths(){if(!this._dirty)return this._cachedLengths;var e,t=[],i=0,s=this._curves.length;for(e=0;e1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=d.vec3();return t[0]=d.b2(e,this._v0[0],this._v1[0],this._v2[0]),t[1]=d.b2(e,this._v0[1],this._v1[1],this._v2[1]),t[2]=d.b2(e,this._v0[2],this._v1[2],this._v2[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,t:this._t}}}class Bu extends bc{constructor(e,t={}){super(e,t)}}class wu extends R{constructor(e,t={}){super(e,t),this._skyboxMesh=new fr(this,{geometry:new zt(this,{primitive:"triangles",positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),background:!0,scale:[2e3,2e3,2e3],rotation:[0,-90,0],material:new Yt(this,{ambient:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],emissive:[1,1,1],emissiveMap:new Xr(this,{src:t.src,flipY:!0,wrapS:"clampToEdge",wrapT:"clampToEdge",encoding:t.encoding||"sRGB"}),backfaces:!0}),visible:!1,pickable:!1,clippable:!1,collidable:!1}),this.size=t.size,this.active=t.active}set size(e){this._size=e||1e3,this._skyboxMesh.scale=[this._size,this._size,this._size]}get size(){return this._size}set active(e){this._skyboxMesh.visible=e}get active(){return this._skyboxMesh.visible}}class xu{transcode(e,t,i={}){}destroy(){}}const Pu=d.vec4(),Cu=d.vec4(),Mu=d.vec3(),Fu=d.vec3(),Eu=d.vec3(),Iu=d.vec4(),Du=d.vec4(),Su=d.vec4();class Tu{constructor(e){this._scene=e}dollyToCanvasPos(e,t,i){let s=!1;const r=this._scene.camera;if(e){const t=d.subVec3(e,r.eye,Mu);s=d.lenVec3(t){this._cameraDirty=!0})),this._onProjMatrix=this._scene.camera.on("projMatrix",(()=>{this._cameraDirty=!0})),this._onTick=this._scene.on("tick",(()=>{this.updatePivotElement(),this.updatePivotSphere()}))}createPivotSphere(){const e=this.getPivotPos(),t=d.vec3();d.decomposeMat4(d.inverseMat4(this._scene.viewer.camera.viewMatrix,d.mat4()),t,d.vec4(),d.vec3());const i=d.distVec3(t,e);let s=Math.tan(Math.PI/500)*i*this._pivotSphereSize;"ortho"==this._scene.camera.projection&&(s/=this._scene.camera.ortho.scale/2),X(e,this._rtcCenter,this._rtcPos),this._pivotSphereGeometry=new qr(this._scene,_r({radius:s})),this._pivotSphere=new fr(this._scene,{geometry:this._pivotSphereGeometry,material:this._pivotSphereMaterial,pickable:!1,position:this._rtcPos,rtcCenter:this._rtcCenter})}destroyPivotSphere(){this._pivotSphere&&(this._pivotSphere.destroy(),this._pivotSphere=null),this._pivotSphereGeometry&&(this._pivotSphereGeometry.destroy(),this._pivotSphereGeometry=null)}updatePivotElement(){const e=this._scene.camera,t=this._scene.canvas;if(this._pivoting&&this._cameraDirty){d.transformPoint3(e.viewMatrix,this.getPivotPos(),this._pivotViewPos),this._pivotViewPos[3]=1,d.transformPoint4(e.projMatrix,this._pivotViewPos,this._pivotProjPos);const i=t.boundary,s=i[2],r=i[3];this._pivotCanvasPos[0]=Math.floor((1+this._pivotProjPos[0]/this._pivotProjPos[3])*s/2),this._pivotCanvasPos[1]=Math.floor((1-this._pivotProjPos[1]/this._pivotProjPos[3])*r/2);let o=t._lastBoundingClientRect;if(!o||t._canvasSizeChanged){const e=t.canvas;o=t._lastBoundingClientRect=e.getBoundingClientRect()}this._pivotElement&&(this._pivotElement.style.left=Math.floor(o.left+this._pivotCanvasPos[0])-this._pivotElement.clientWidth/2+window.scrollX+"px",this._pivotElement.style.top=Math.floor(o.top+this._pivotCanvasPos[1])-this._pivotElement.clientHeight/2+window.scrollY+"px"),this._cameraDirty=!1}}updatePivotSphere(){this._pivoting&&this._pivotSphere&&(X(this.getPivotPos(),this._rtcCenter,this._rtcPos),d.compareVec3(this._rtcPos,this._pivotSphere.position)||(this.destroyPivotSphere(),this.createPivotSphere()))}setPivotElement(e){this._pivotElement=e}enablePivotSphere(e={}){this.destroyPivotSphere(),this._pivotSphereEnabled=!0,e.size&&(this._pivotSphereSize=e.size);const t=e.color||[1,0,0];this._pivotSphereMaterial=new Yt(this._scene,{emissive:t,ambient:t,specular:[0,0,0],diffuse:[0,0,0]})}disablePivotSphere(){this.destroyPivotSphere(),this._pivotSphereEnabled=!1}startPivot(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;const e=this._scene.camera;let t=d.lookAtMat4v(e.eye,e.look,e.worldUp);d.transformPoint3(t,this.getPivotPos(),this._cameraOffset);const i=this.getPivotPos();this._cameraOffset[2]+=d.distVec3(e.eye,i),t=d.inverseMat4(t);const s=d.transformVec3(t,this._cameraOffset),r=d.vec3();if(d.subVec3(e.eye,i,r),d.addVec3(r,s),e.zUp){const e=r[1];r[1]=r[2],r[2]=e}this._radius=d.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}_cameraLookingDownwards(){const e=this._scene.camera,t=d.normalizeVec3(d.subVec3(e.look,e.eye,Ru)),i=d.cross3Vec3(t,e.worldUp,Lu);return d.sqLenVec3(i)<=1e-4}getPivoting(){return this._pivoting}setPivotPos(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}setCanvasPivotPos(e){const t=this._scene.camera,i=Math.abs(d.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),n=[0,0,-1,1],a=d.dotVec4(n,r)/d.dotVec4(n,o),l=ku;t.project.unproject(e,a,Ou,Nu,l);const A=d.normalizeVec3(d.subVec3(l,t.eye,Ru)),h=d.addVec3(t.eye,d.mulVec3Scalar(A,i,Lu),Uu);this.setPivotPos(h)}getPivotPos(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}continuePivot(e,t){if(!this._pivoting)return;if(0===e&&0===t)return;const i=this._scene.camera;var s=-e;const r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=d.clamp(this._polar,.001,Math.PI-.001);const o=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){const e=o[1];o[1]=o[2],o[2]=e}const n=d.lenVec3(d.subVec3(i.look,i.eye,d.vec3())),a=this.getPivotPos();d.addVec3(o,a);let l=d.lookAtMat4v(o,a,i.worldUp);l=d.inverseMat4(l);const A=d.transformVec3(l,this._cameraOffset);l[12]-=A[0],l[13]-=A[1],l[14]-=A[2];const h=[l[8],l[9],l[10]];i.eye=[l[12],l[13],l[14]],d.subVec3(i.eye,d.mulVec3Scalar(h,n),i.look),i.up=[l[4],l[5],l[6]],this.showPivot()}showPivot(){this._shown||(this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility="visible"),this._pivotSphereEnabled&&(this.destroyPivotSphere(),this.createPivotSphere()),this._shown=!0)}hidePivot(){this._shown&&(this._pivotElement&&(this._pivotElement.style.visibility="hidden"),this._pivotSphereEnabled&&this.destroyPivotSphere(),this._shown=!1)}endPivot(){this._pivoting=!1}destroy(){this.destroyPivotSphere(),this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}class Vu{constructor(e,t){this._scene=e.scene,this._cameraControl=e,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=t,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick=!1,this.pickCursorPos=d.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._lastHash=null,this._needFireEvents=0}update(){if(!this._configs.pointerEnabled)return;if(!this.schedulePickEntity&&!this.schedulePickSurface)return;const e=`${~~this.pickCursorPos[0]}-${~~this.pickCursorPos[1]}-${this.scheduleSnapOrPick}-${this.schedulePickSurface}-${this.schedulePickEntity}`;if(this._lastHash===e)return;this.picked=!1,this.pickedSurface=!1,this.snappedOrPicked=!1,this.hoveredSnappedOrSurfaceOff=!1;const t=this._cameraControl.hasSubs("hoverSurface");if(this.scheduleSnapOrPick){const e=this._scene.pick({canvasPos:this.pickCursorPos,snapRadius:this._configs.snapRadius,snapToVertex:this._configs.snapToVertex,snapToEdge:this._configs.snapToEdge});e&&(e.snappedToEdge||e.snappedToVertex)?(this.snapPickResult=e,this.snappedOrPicked=!0,this._needFireEvents++):(this.schedulePickSurface=!0,this.snapPickResult=null)}if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){const e=this.pickResult.canvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents+=t?1:0,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.hoveredSnappedOrSurfaceOff=!0,void(this.scheduleSnapOrPick=!1)}if(this.schedulePickEntity&&this.pickResult&&(this.pickResult.canvasPos||this.pickResult.snappedCanvasPos)){const e=this.pickResult.canvasPos||this.pickResult.snappedCanvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface||this.scheduleSnapOrPick&&!this.snapPickResult?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult?(this.picked=!0,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.pickedSurface=!0,this._needFireEvents++):this.scheduleSnapOrPick&&(this.hoveredSnappedOrSurfaceOff=!0,this._needFireEvents++)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents++)),this.scheduleSnapOrPick=!1,this.schedulePickEntity=!1,this.schedulePickSurface=!1}fireEvents(){if(0!==this._needFireEvents){if(this.hoveredSnappedOrSurfaceOff&&this._cameraControl.fire("hoverSnapOrSurfaceOff",{canvasPos:this.pickCursorPos,pointerPos:this.pickCursorPos},!0),this.snappedOrPicked)if(this.snapPickResult){const e=new Le;e.entity=this.snapPickResult.entity,e.snappedToVertex=this.snapPickResult.snappedToVertex,e.snappedToEdge=this.snapPickResult.snappedToEdge,e.worldPos=this.snapPickResult.worldPos,e.canvasPos=this.pickCursorPos,e.snappedCanvasPos=this.snapPickResult.snappedCanvasPos,this._cameraControl.fire("hoverSnapOrSurface",e,!0),this.snapPickResult=null}else this._cameraControl.fire("hoverSnapOrSurface",this.pickResult,!0);if(this.picked&&this.pickResult&&(this.pickResult.entity||this.pickResult.worldPos)){if(this.pickResult.entity){const e=this.pickResult.entity.id;this._lastPickedEntityId!==e&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire("hoverEnter",this.pickResult,!0),this._lastPickedEntityId=e)}this._cameraControl.fire("hover",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire("hoverSurface",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire("hoverOff",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=0}}}const Hu=d.vec2();class ju{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController;let n,a,l,A=0,h=0,c=0,u=0,p=!1;const f=d.vec3();let g=!0;const m=this._scene.canvas.canvas,_=[];function v(e=!0){m.style.cursor="move",A=s.pointerCanvasPos[0],h=s.pointerCanvasPos[1],c=s.pointerCanvasPos[0],u=s.pointerCanvasPos[1],e&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(p=!0,f.set(o.pickResult.worldPos)):p=!1)}document.addEventListener("keydown",this._documentKeyDownHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!0}),document.addEventListener("keyup",this._documentKeyUpHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!1}),m.addEventListener("mousedown",this._mouseDownHandler=t=>{if(i.active&&i.pointerEnabled)switch(t.which){case 1:_[e.input.KEY_SHIFT]||i.planView?(n=!0,v()):(n=!0,v(!1));break;case 2:a=!0,v();break;case 3:l=!0,i.panRightClick&&v()}}),document.addEventListener("mousemove",this._documentMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(!n&&!a&&!l)return;const o=e.canvas.boundary,c=o[2],u=o[3],g=s.pointerCanvasPos[0],m=s.pointerCanvasPos[1],v=_[e.input.KEY_SHIFT]||i.planView||!i.panRightClick&&a||i.panRightClick&&l,b=document.pointerLockElement?t.movementX:g-A,y=document.pointerLockElement?t.movementY:m-h;if(v){const t=e.camera;if("perspective"===t.projection){const i=Math.abs(p?d.lenVec3(d.subVec3(f,e.camera.eye,[])):e.camera.eyeLookDist)*Math.tan(t.perspective.fov/2*Math.PI/180);r.panDeltaX+=1.5*b*i/u,r.panDeltaY+=1.5*y*i/u}else r.panDeltaX+=.5*t.ortho.scale*(b/u),r.panDeltaY+=.5*t.ortho.scale*(y/u)}else!n||a||l||i.planView||(i.firstPerson?(r.rotateDeltaY-=b/c*i.dragRotationRate/2,r.rotateDeltaX+=y/u*(i.dragRotationRate/4)):(r.rotateDeltaY-=b/c*(1.5*i.dragRotationRate),r.rotateDeltaX+=y/u*(1.5*i.dragRotationRate)));A=g,h=m}),m.addEventListener("mousemove",this._canvasMouseMoveHandler=e=>{i.active&&i.pointerEnabled&&s.mouseover&&(g=!0)}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{if(i.active&&i.pointerEnabled)switch(e.which){case 1:case 2:case 3:n=!1,a=!1,l=!1}}),m.addEventListener("mouseup",this._mouseUpHandler=e=>{if(i.active&&i.pointerEnabled){if(3===e.which){!function(e,t){if(e){let i=e.target,s=0,r=0,o=0,n=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,o+=i.scrollLeft,n+=i.scrollTop,i=i.offsetParent;t[0]=e.pageX+o-s,t[1]=e.pageY+n-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,Hu);const i=Hu[0],s=Hu[1];Math.abs(i-c)<3&&Math.abs(s-u)<3&&t.cameraControl.fire("rightClick",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:Hu,event:e},!0)}m.style.removeProperty("cursor")}}),m.addEventListener("mouseenter",this._mouseEnterHandler=()=>{i.active&&i.pointerEnabled});const b=1/60;let y=null;m.addEventListener("wheel",this._mouseWheelHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=performance.now()/1e3;var o=null!==y?t-y:0;y=t,o>.05&&(o=.05),o{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const n=r._isKeyDownForAction(r.AXIS_VIEW_RIGHT),a=r._isKeyDownForAction(r.AXIS_VIEW_BACK),l=r._isKeyDownForAction(r.AXIS_VIEW_LEFT),A=r._isKeyDownForAction(r.AXIS_VIEW_FRONT),h=r._isKeyDownForAction(r.AXIS_VIEW_TOP),c=r._isKeyDownForAction(r.AXIS_VIEW_BOTTOM);if(!(n||a||l||A||h||c))return;const u=e.aabb,p=d.getAABB3Diag(u);d.getAABB3Center(u,Gu);const f=Math.abs(p/Math.tan(t.cameraFlight.fitFOV*d.DEGTORAD)),g=1.1*p;Ju.orthoScale=g,n?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldRight,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):a?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldForward,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):l?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldRight,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):A?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldForward,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):h?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldUp,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(d.normalizeVec3(d.mulVec3Scalar(o.worldForward,1,Wu),Ku))):c&&(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldUp,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(d.normalizeVec3(d.mulVec3Scalar(o.worldForward,-1,Wu)))),!i.firstPerson&&i.followPointer&&t.pivotController.setPivotPos(Gu),t.cameraFlight.duration>0?t.cameraFlight.flyTo(Ju,(()=>{t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot()})):(t.cameraFlight.jumpTo(Ju),t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot())}))}reset(){}destroy(){this._scene.input.off(this._onSceneKeyDown)}}class Zu{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=t.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;let l=!1,A=!1;const h=this._scene.canvas.canvas,c=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i&&i.entity?i.entity.aabb:e.aabb;if(s){const i=e.camera;d.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})},u=e.tickify(this._canvasMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(l||A)return;const r=a.hasSubs("hover"),n=a.hasSubs("hoverEnter"),h=a.hasSubs("hoverOut"),c=a.hasSubs("hoverOff"),u=a.hasSubs("hoverSurface"),d=a.hasSubs("hoverSnapOrSurface");if(r||n||h||c||u||d)if(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=u,o.scheduleSnapOrPick=d,o.update(),o.pickResult){if(o.pickResult.entity){const t=o.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),a.fire("hoverEnter",o.pickResult,!0),this._lastPickedEntityId=t)}a.fire("hover",o.pickResult,!0),(o.pickResult.worldPos||o.pickResult.snappedWorldPos)&&a.fire("hoverSurface",o.pickResult,!0)}else void 0!==this._lastPickedEntityId&&(a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),a.fire("hoverOff",{canvasPos:o.pickCursorPos},!0)});h.addEventListener("mousemove",u),h.addEventListener("mousedown",this._canvasMouseDownHandler=t=>{1===t.which&&(l=!0),3===t.which&&(A=!0);if(1===t.which&&i.active&&i.pointerEnabled&&(s.mouseDownClientX=t.clientX,s.mouseDownClientY=t.clientY,s.mouseDownCursorX=s.pointerCanvasPos[0],s.mouseDownCursorY=s.pointerCanvasPos[1],!i.firstPerson&&i.followPointer&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),1===t.which))){const t=o.pickResult;t&&t.worldPos?(n.setPivotPos(t.worldPos),n.startPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),n.startPivot())}}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{1===e.which&&(l=!1),3===e.which&&(A=!1),n.getPivoting()&&n.endPivot()}),h.addEventListener("mouseup",this._canvasMouseUpHandler=r=>{if(!i.active||!i.pointerEnabled)return;if(!(1===r.which))return;if(n.hidePivot(),Math.abs(r.clientX-s.mouseDownClientX)>3||Math.abs(r.clientY-s.mouseDownClientY)>3)return;const l=a.hasSubs("picked"),A=a.hasSubs("pickedNothing"),h=a.hasSubs("pickedSurface"),u=a.hasSubs("doublePicked"),p=a.hasSubs("doublePickedSurface"),f=a.hasSubs("doublePickedNothing");if(!(i.doublePickFlyTo||u||p||f))return(l||A||h)&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=h,o.update(),o.pickResult?(a.fire("picked",o.pickResult,!0),o.pickedSurface&&a.fire("pickedSurface",o.pickResult,!0)):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0)),void(this._clicks=0);if(this._clicks++,1===this._clicks){o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo,o.schedulePickSurface=h,o.update();const e=o.pickResult,r=o.pickedSurface;this._timeout=setTimeout((()=>{e?(a.fire("picked",e,!0),r&&(a.fire("pickedSurface",e,!0),!i.firstPerson&&i.followPointer&&(t.pivotController.setPivotPos(e.worldPos),t.pivotController.startPivot()&&t.pivotController.showPivot()))):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0),this._clicks=0}),i.doubleClickTimeFrame)}else{if(null!==this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null),o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo||u||p,o.schedulePickSurface=o.schedulePickEntity&&p,o.update(),o.pickResult){if(a.fire("doublePicked",o.pickResult,!0),o.pickedSurface&&a.fire("doublePickedSurface",o.pickResult,!0),i.doublePickFlyTo&&(c(o.pickResult),!i.firstPerson&&i.followPointer)){const e=o.pickResult.entity.aabb,i=d.getAABB3Center(e);t.pivotController.setPivotPos(i),t.pivotController.startPivot()&&t.pivotController.showPivot()}}else if(a.fire("doublePickedNothing",{canvasPos:s.pointerCanvasPos},!0),i.doublePickFlyTo&&(c(),!i.firstPerson&&i.followPointer)){const i=e.aabb,s=d.getAABB3Center(i);t.pivotController.setPivotPos(s),t.pivotController.startPivot()&&t.pivotController.showPivot()}this._clicks=0}},!1)}reset(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("mousemove",this._canvasMouseMoveHandler),e.removeEventListener("mousedown",this._canvasMouseDownHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}class qu{constructor(e,t,i,s,r){this._scene=e;const o=e.input,n=[],a=e.canvas.canvas;let l=!0;this._onSceneMouseMove=o.on("mousemove",(()=>{l=!0})),this._onSceneKeyDown=o.on("keydown",(t=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&s.mouseover&&(n[t]=!0,t===o.KEY_SHIFT&&(a.style.cursor="move"))})),this._onSceneKeyUp=o.on("keyup",(s=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&(n[s]=!1,s===o.KEY_SHIFT&&(a.style.cursor=null),t.pivotController.getPivoting()&&t.pivotController.endPivot())})),this._onTick=e.on("tick",(a=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const A=t.cameraControl,h=a.deltaTime/1e3;if(!i.planView){const e=A._isKeyDownForAction(A.ROTATE_Y_POS,n),s=A._isKeyDownForAction(A.ROTATE_Y_NEG,n),o=A._isKeyDownForAction(A.ROTATE_X_POS,n),a=A._isKeyDownForAction(A.ROTATE_X_NEG,n),l=h*i.keyboardRotationRate;(e||s||o||a)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),e?r.rotateDeltaY+=l:s&&(r.rotateDeltaY-=l),o?r.rotateDeltaX+=l:a&&(r.rotateDeltaX-=l),!i.firstPerson&&i.followPointer&&t.pivotController.startPivot())}if(!n[o.KEY_CTRL]&&!n[o.KEY_ALT]){const e=A._isKeyDownForAction(A.DOLLY_BACKWARDS,n),o=A._isKeyDownForAction(A.DOLLY_FORWARDS,n);if(e||o){const n=h*i.keyboardDollyRate;!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),o?r.dollyDelta-=n:e&&(r.dollyDelta+=n),l&&(s.followPointerDirty=!0,l=!1)}}const c=A._isKeyDownForAction(A.PAN_FORWARDS,n),u=A._isKeyDownForAction(A.PAN_BACKWARDS,n),d=A._isKeyDownForAction(A.PAN_LEFT,n),p=A._isKeyDownForAction(A.PAN_RIGHT,n),f=A._isKeyDownForAction(A.PAN_UP,n),g=A._isKeyDownForAction(A.PAN_DOWN,n),m=(n[o.KEY_ALT]?.3:1)*h*i.keyboardPanRate;(c||u||d||p||f||g)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),g?r.panDeltaY+=m:f&&(r.panDeltaY+=-m),p?r.panDeltaX+=-m:d&&(r.panDeltaX+=m),u?r.panDeltaZ+=m:c&&(r.panDeltaZ+=-m))}))}reset(){}destroy(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}const $u=d.vec3();class ed{constructor(e,t,i,s,r){this._scene=e;const o=e.camera,n=t.pickController,a=t.pivotController,l=t.panController;let A=1,h=1,c=null;this._onTick=e.on("tick",(()=>{if(!i.active||!i.pointerEnabled)return;let t="default";if(Math.abs(r.dollyDelta)<.001&&(r.dollyDelta=0),Math.abs(r.rotateDeltaX)<.001&&(r.rotateDeltaX=0),Math.abs(r.rotateDeltaY)<.001&&(r.rotateDeltaY=0),0===r.rotateDeltaX&&0===r.rotateDeltaY||(r.dollyDelta=0),i.followPointer){if(--A<=0&&(A=1,0!==r.dollyDelta)){if(0===r.rotateDeltaY&&0===r.rotateDeltaX&&i.followPointer&&s.followPointerDirty&&(n.pickCursorPos=s.pointerCanvasPos,n.schedulePickSurface=!0,n.update(),n.pickResult&&n.pickResult.worldPos?c=n.pickResult.worldPos:(h=1,c=null),s.followPointerDirty=!1),c){const t=Math.abs(d.lenVec3(d.subVec3(c,e.camera.eye,$u)));h=t/i.dollyProximityThreshold}h{s.mouseover=!0}),o.addEventListener("mouseleave",this._mouseLeaveHandler=()=>{s.mouseover=!1,o.style.cursor=null}),document.addEventListener("mousemove",this._mouseMoveHandler=e=>{id(e,o,s.pointerCanvasPos)}),o.addEventListener("mousedown",this._mouseDownHandler=e=>{i.active&&i.pointerEnabled&&(id(e,o,s.pointerCanvasPos),s.mouseover=!0)}),o.addEventListener("mouseup",this._mouseUpHandler=e=>{i.active&&i.pointerEnabled})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener("mousemove",this._mouseMoveHandler),e.removeEventListener("mouseenter",this._mouseEnterHandler),e.removeEventListener("mouseleave",this._mouseLeaveHandler),e.removeEventListener("mousedown",this._mouseDownHandler),e.removeEventListener("mouseup",this._mouseUpHandler)}}function id(e,t,i){if(e){const{left:s,top:r}=t.getBoundingClientRect();i[0]=e.clientX-s,i[1]=e.clientY-r}else e=window.event,i[0]=e.x,i[1]=e.y;return i}const sd=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class rd{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=d.vec2(),l=d.vec2(),A=d.vec2(),h=d.vec2(),c=[],u=this._scene.canvas.canvas;let p=0,f=!1;this._onTick=e.on("tick",(()=>{f=!1})),u.addEventListener("touchstart",this._canvasTouchStartHandler=t=>{if(!i.active||!i.pointerEnabled)return;t.preventDefault();const r=t.touches,l=t.changedTouches;for(s.touchStartTime=Date.now(),1===r.length&&1===l.length&&(sd(r[0],a),i.followPointer&&(o.pickCursorPos=a,o.schedulePickSurface=!0,o.update(),i.planView||(o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(n.setPivotPos(o.pickResult.worldPos),!i.firstPerson&&n.startPivot()&&n.showPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),!i.firstPerson&&n.startPivot()&&n.showPivot()))));c.length{n.getPivoting()&&n.endPivot()}),u.addEventListener("touchmove",this._canvasTouchMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(t.stopPropagation(),t.preventDefault(),f)return;f=!0;const n=e.canvas.boundary,a=n[2],u=n[3],g=t.touches;if(t.touches.length===p){if(1===p){sd(g[0],l),d.subVec2(l,c[0],h);const t=h[0],o=h[1];if(null!==s.longTouchTimeout&&(Math.abs(t)>i.longTapRadius||Math.abs(o)>i.longTapRadius)&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),i.planView){const s=e.camera;if("perspective"===s.projection){const n=Math.abs(e.camera.eyeLookDist)*Math.tan(s.perspective.fov/2*Math.PI/180);r.panDeltaX+=t*n/u*i.touchPanRate,r.panDeltaY+=o*n/u*i.touchPanRate}else r.panDeltaX+=.5*s.ortho.scale*(t/u)*i.touchPanRate,r.panDeltaY+=.5*s.ortho.scale*(o/u)*i.touchPanRate}else r.rotateDeltaY-=t/a*(1*i.dragRotationRate),r.rotateDeltaX+=o/u*(1.5*i.dragRotationRate)}else if(2===p){const t=g[0],n=g[1];sd(t,l),sd(n,A);const a=d.geometricMeanVec2(c[0],c[1]),h=d.geometricMeanVec2(l,A),p=d.vec2();d.subVec2(a,h,p);const f=p[0],m=p[1],_=e.camera,v=d.distVec2([t.pageX,t.pageY],[n.pageX,n.pageY]),b=(d.distVec2(c[0],c[1])-v)*i.touchDollyRate;if(r.dollyDelta=b,Math.abs(b)<1)if("perspective"===_.projection){const t=o.pickResult?o.pickResult.worldPos:e.center,s=Math.abs(d.lenVec3(d.subVec3(t,e.camera.eye,[])))*Math.tan(_.perspective.fov/2*Math.PI/180);r.panDeltaX-=f*s/u*i.touchPanRate,r.panDeltaY-=m*s/u*i.touchPanRate}else r.panDeltaX-=.5*_.ortho.scale*(f/u)*i.touchPanRate,r.panDeltaY-=.5*_.ortho.scale*(m/u)*i.touchPanRate;s.pointerCanvasPos=h}for(let e=0;e{let s;i&&i.worldPos&&(s=i.worldPos);const r=i?i.entity.aabb:e.aabb;if(s){const i=e.camera;d.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})};u.addEventListener("touchstart",this._canvasTouchStartHandler=e=>{if(!i.active||!i.pointerEnabled)return;null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null);const r=e.touches,o=e.changedTouches;if(a=Date.now(),1===r.length&&1===o.length){h=a,od(r[0],A);const o=A[0],n=A[1],l=r[0].pageX,c=r[0].pageY;s.longTouchTimeout=setTimeout((()=>{t.cameraControl.fire("rightClick",{pagePos:[Math.round(l),Math.round(c)],canvasPos:[Math.round(o),Math.round(n)],event:e},!0),s.longTouchTimeout=null}),i.longTapTimeout)}else h=-1;for(;l.length{if(!i.active||!i.pointerEnabled)return;const t=Date.now(),r=e.touches,a=e.changedTouches,u=n.hasSubs("pickedSurface");null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),0===r.length&&1===a.length&&h>-1&&t-h<150&&(c>-1&&h-c<325?(od(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("doublePicked",o.pickResult),o.pickedSurface&&n.fire("doublePickedSurface",o.pickResult),i.doublePickFlyTo&&p(o.pickResult)):(n.fire("doublePickedNothing"),i.doublePickFlyTo&&p()),c=-1):d.distVec2(l[0],A)<4&&(od(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("picked",o.pickResult),o.pickedSurface&&n.fire("pickedSurface",o.pickResult)):n.fire("pickedNothing"),c=t),h=-1),l.length=r.length;for(let e=0,t=r.length;e{e.preventDefault()},this._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:"qwerty",navMode:"orbit",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,doubleClickTimeFrame:250,snapToVertex:true,snapToEdge:true,snapRadius:30,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},this._states={pointerCanvasPos:d.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:d.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},this._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};const i=this.scene;this._controllers={cameraControl:this,pickController:new Vu(this,this._configs),pivotController:new Qu(i,this._configs),panController:new Tu(i),cameraFlight:new $c(this,{duration:.5})},this._handlers=[new td(this.scene,this._controllers,this._configs,this._states,this._updates),new rd(this.scene,this._controllers,this._configs,this._states,this._updates),new ju(this.scene,this._controllers,this._configs,this._states,this._updates),new Yu(this.scene,this._controllers,this._configs,this._states,this._updates),new Zu(this.scene,this._controllers,this._configs,this._states,this._updates),new nd(this.scene,this._controllers,this._configs,this._states,this._updates),new qu(this.scene,this._controllers,this._configs,this._states,this._updates)],this._cameraUpdater=new ed(this.scene,this._controllers,this._configs,this._states,this._updates),this.navMode=t.navMode,t.planView&&(this.planView=t.planView),this.constrainVertical=t.constrainVertical,t.keyboardLayout?this.keyboardLayout=t.keyboardLayout:this.keyMap=t.keyMap,this.doublePickFlyTo=t.doublePickFlyTo,this.panRightClick=t.panRightClick,this.active=t.active,this.followPointer=t.followPointer,this.rotationInertia=t.rotationInertia,this.keyboardPanRate=t.keyboardPanRate,this.touchPanRate=t.touchPanRate,this.keyboardRotationRate=t.keyboardRotationRate,this.dragRotationRate=t.dragRotationRate,this.touchDollyRate=t.touchDollyRate,this.dollyInertia=t.dollyInertia,this.dollyProximityThreshold=t.dollyProximityThreshold,this.dollyMinSpeed=t.dollyMinSpeed,this.panInertia=t.panInertia,this.pointerEnabled=!0,this.keyboardDollyRate=t.keyboardDollyRate,this.mouseWheelDollyRate=t.mouseWheelDollyRate}set keyMap(e){if(e=e||"qwerty",y.isString(e)){const t=this.scene.input,i={};switch(e){default:this.error("Unsupported value for 'keyMap': "+e+" defaulting to 'qwerty'");case"qwerty":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case"azerty":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{const t=e;this._keyMap=t}}get keyMap(){return this._keyMap}_isKeyDownForAction(e,t){const i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(let e=0,s=i.length;e0?dd(t):null,n=i&&i.length>0?dd(i):null,a=e=>{if(!e)return;var t=!0;(n&&n[e.type]||o&&!o[e.type])&&(t=!1),t&&s.push(e.id);const i=e.children;if(i)for(var r=0,l=i.length;r>t;i.sort(ec);const s=new Int32Array(e.length);for(let t=0,r=i.length;te[t+1]){let i=e[t];e[t]=e[t+1],e[t+1]=i}tc=new Int32Array(e),t.sort(ic);const i=new Int32Array(e.length);for(let s=0,r=t.length;st){let i=e;e=t,t=i}function i(i,s){return i!==e?e-i:s!==t?t-s:0}let s=0,r=(o.length>>1)-1;for(;s<=r;){const e=r+s>>1,t=i(o[2*e],o[2*e+1]);if(t>0)s=e+1;else{if(!(t<0))return e;r=e-1}}return-s-1}const a=new Int32Array(o.length/2);a.fill(0);const l=s.length/3;if(l>8*(1<u.maxNumPositions&&(u=c()),u.bucketNumber>8)return[e];let p;-1===A[l]&&(A[l]=u.numPositions++,u.positionsCompressed.push(s[3*l]),u.positionsCompressed.push(s[3*l+1]),u.positionsCompressed.push(s[3*l+2])),-1===A[h]&&(A[h]=u.numPositions++,u.positionsCompressed.push(s[3*h]),u.positionsCompressed.push(s[3*h+1]),u.positionsCompressed.push(s[3*h+2])),-1===A[d]&&(A[d]=u.numPositions++,u.positionsCompressed.push(s[3*d]),u.positionsCompressed.push(s[3*d+1]),u.positionsCompressed.push(s[3*d+2])),u.indices.push(A[l]),u.indices.push(A[h]),u.indices.push(A[d]),(p=n(l,h))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(l,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(h,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]]))}const d=t/8*2,p=t/8,f=2*s.length+(r.length+o.length)*d;let g=0,m=-s.length/3;return h.forEach((e=>{g+=2*e.positionsCompressed.length+(e.indices.length+e.edgeIndices.length)*p,m+=e.positionsCompressed.length/3})),g>f?[e]:(i&&function(e,t){const i={},s={};let r=0;e.forEach((e=>{const t=e.indices,o=e.edgeIndices,n=e.positionsCompressed;for(let e=0,s=t.length;e0){const e=t._meshes;for(let t=0,i=e.length;t0){const e=this._meshes;for(let t=0,i=e.length;t{this._viewMatrixDirty=!0})),this._meshesWithDirtyMatrices=[],this._numMeshesWithDirtyMatrices=0,this._onTick=this.scene.on("tick",(()=>{for(;this._numMeshesWithDirtyMatrices>0;)this._meshesWithDirtyMatrices[--this._numMeshesWithDirtyMatrices]._updateMatrix()})),this._createDefaultTextureSet(),this.visible=t.visible,this.culled=t.culled,this.pickable=t.pickable,this.clippable=t.clippable,this.collidable=t.collidable,this.castsShadow=t.castsShadow,this.receivesShadow=t.receivesShadow,this.xrayed=t.xrayed,this.highlighted=t.highlighted,this.selected=t.selected,this.edges=t.edges,this.colorize=t.colorize,this.opacity=t.opacity,this.backfaces=t.backfaces}_meshMatrixDirty(e){this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++]=e}_createDefaultTextureSet(){const e=new kh({id:"defaultColorTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})}),t=new kh({id:"defaultMetalRoughTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,1,1,1]})}),i=new kh({id:"defaultNormalsTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,0,0,0]})}),s=new kh({id:"defaultEmissiveTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,0,0,1]})}),r=new kh({id:"defaultOcclusionTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})});this._textures.defaultColorTexture=e,this._textures.defaultMetalRoughTexture=t,this._textures.defaultNormalsTexture=i,this._textures.defaultEmissiveTexture=s,this._textures.defaultOcclusionTexture=r,this._textureSets.defaultTextureSet=new Uh({id:"defaultTextureSet",model:this,colorTexture:e,metallicRoughnessTexture:t,normalsTexture:i,emissiveTexture:s,occlusionTexture:r})}get isPerformanceModel(){return!0}get transforms(){return this._transforms}get textures(){return this._textures}get textureSets(){return this._textureSets}get meshes(){return this._meshes}get objects(){return this._entities}get origin(){return this._origin}set position(e){this._position.set(e||[0,0,0]),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get position(){return this._position}set rotation(e){this._rotation.set(e||[0,0,0]),d.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get rotation(){return this._rotation}set quaternion(e){this._quaternion.set(e||[0,0,0,1]),d.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get quaternion(){return this._quaternion}set scale(e){}get scale(){return this._scale}set matrix(e){this._matrix.set(e||_c),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),d.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),d.translateMat4v(this._position,this._matrix),this._matrixDirty=!1,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get matrix(){return this._matrixDirty&&this._rebuildMatrices(),this._matrix}get rotationMatrix(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrix}_rebuildMatrices(){this._matrixDirty&&(d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),d.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),d.translateMat4v(this._position,this._matrix),this._matrixDirty=!1)}get rotationMatrixConjugate(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrixConjugate}_setWorldMatrixDirty(){this._matrixDirty=!0,this._aabbDirty=!0}_transformDirty(){this._matrixDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0}_sceneModelDirty(){this.scene._aabbDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0,this._matrixDirty=!0;for(let e=0,t=this._entityList.length;e0}set visible(e){e=!1!==e,this._visible=e;for(let t=0,i=this._entityList.length;t0}set xrayed(e){e=!!e,this._xrayed=e;for(let t=0,i=this._entityList.length;t0}set highlighted(e){e=!!e,this._highlighted=e;for(let t=0,i=this._entityList.length;t0}set selected(e){e=!!e,this._selected=e;for(let t=0,i=this._entityList.length;t0}set edges(e){e=!!e,this._edges=e;for(let t=0,i=this._entityList.length;t0}set pickable(e){e=!1!==e,this._pickable=e;for(let t=0,i=this._entityList.length;t0)e.colorsCompressed=new Uint8Array(e.colorsCompressed);else if(e.colors&&e.colors.length>0){const t=e.colors,i=new Uint8Array(t.length);for(let e=0,s=t.length;e{l.setImage(A,{minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,flipY:e.flipY,encoding:a}),this.glRedraw()},A.src=e.src;break;default:this._textureTranscoder?y.loadArraybuffer(e.src,(e=>{e.byteLength?this._textureTranscoder.transcode([e],l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'src': file data is zero length")}),(function(e){this.error(`[createTexture] Can't create texture from 'src': ${e}`)})):this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${t}')`)}}else e.buffers&&(this._textureTranscoder?this._textureTranscoder.transcode(e.buffers,l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option"));this._textures[t]=new kh({id:t,texture:l})}createTextureSet(e){const t=e.id;if(null==t)return void this.error("[createTextureSet] Config missing: id");if(this._textureSets[t])return void this.error(`[createTextureSet] Texture set already created: ${t}`);let i,s,r,o,n;if(void 0!==e.colorTextureId&&null!==e.colorTextureId){if(i=this._textures[e.colorTextureId],!i)return void this.error(`[createTextureSet] Texture not found: ${e.colorTextureId} - ensure that you create it first with createTexture()`)}else i=this._textures.defaultColorTexture;if(void 0!==e.metallicRoughnessTextureId&&null!==e.metallicRoughnessTextureId){if(s=this._textures[e.metallicRoughnessTextureId],!s)return void this.error(`[createTextureSet] Texture not found: ${e.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`)}else s=this._textures.defaultMetalRoughTexture;if(void 0!==e.normalsTextureId&&null!==e.normalsTextureId){if(r=this._textures[e.normalsTextureId],!r)return void this.error(`[createTextureSet] Texture not found: ${e.normalsTextureId} - ensure that you create it first with createTexture()`)}else r=this._textures.defaultNormalsTexture;if(void 0!==e.emissiveTextureId&&null!==e.emissiveTextureId){if(o=this._textures[e.emissiveTextureId],!o)return void this.error(`[createTextureSet] Texture not found: ${e.emissiveTextureId} - ensure that you create it first with createTexture()`)}else o=this._textures.defaultEmissiveTexture;if(void 0!==e.occlusionTextureId&&null!==e.occlusionTextureId){if(n=this._textures[e.occlusionTextureId],!n)return void this.error(`[createTextureSet] Texture not found: ${e.occlusionTextureId} - ensure that you create it first with createTexture()`)}else n=this._textures.defaultOcclusionTexture;const a=new Uh({id:t,model:this,colorTexture:i,metallicRoughnessTexture:s,normalsTexture:r,emissiveTexture:o,occlusionTexture:n});return this._textureSets[t]=a,a}createTransform(e){if(void 0===e.id||null===e.id)return void this.error("[createTransform] SceneModel.createTransform() config missing: id");if(this._transforms[e.id])return void this.error(`[createTransform] SceneModel already has a transform with this ID: ${e.id}`);let t;if(e.parentTransformId&&(t=this._transforms[e.parentTransformId],!t))return void this.error("[createTransform] SceneModel.createTransform() config missing: id");const i=new cc({id:e.id,model:this,parent:t,matrix:e.matrix,position:e.position,scale:e.scale,rotation:e.rotation,quaternion:e.quaternion});return this._transforms[i.id]=i,i}createMesh(e){if(void 0===e.id||null===e.id)return this.error("[createMesh] SceneModel.createMesh() config missing: id"),!1;if(this._meshes[e.id])return this.error(`[createMesh] SceneModel already has a mesh with this ID: ${e.id}`),!1;if(!(void 0!==e.geometryId)){if(void 0!==e.primitive&&null!==e.primitive||(e.primitive="triangles"),"points"!==e.primitive&&"lines"!==e.primitive&&"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)return this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`),!1;if(!e.positions&&!e.positionsCompressed&&!e.buckets)return this.error("Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)"),!1;if(e.positions&&(e.positionsDecodeMatrix||e.positionsDecodeBoundary))return this.error("Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.positionsCompressed&&!e.positionsDecodeMatrix&&!e.positionsDecodeBoundary)return this.error("Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.uvCompressed&&!e.uvDecodeMatrix)return this.error("Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)"),!1;if(!(e.buckets||e.indices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)){const t=(e.positions||e.positionsCompressed).length/3;e.indices=this._createDefaultIndices(t)}if(!e.buckets&&!e.indices&&"points"!==e.primitive)return e.indices=this._createDefaultIndices(numIndices),this.error(`Param expected: indices (required for '${e.primitive}' primitive type)`),!1;if((e.matrix||e.position||e.rotation||e.scale)&&(e.positionsCompressed||e.positionsDecodeBoundary))return this.error("Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'"),!1;const t=!(!this._dtxEnabled||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||e.textureSetId);if(e.origin=e.origin?d.addVec3(this._origin,e.origin,d.vec3()):this._origin,e.matrix)e.meshMatrix=e.matrix;else if(e.scale||e.rotation||e.position||e.quaternion){const t=e.scale||fc,i=e.position||gc;e.rotation?(d.eulerToQuaternion(e.rotation,"XYZ",pc),e.meshMatrix=d.composeMat4(i,pc,t,d.mat4())):e.meshMatrix=d.composeMat4(i,e.quaternion||mc,t,d.mat4())}if(e.positionsDecodeBoundary&&(e.positionsDecodeMatrix=cn(e.positionsDecodeBoundary,d.mat4())),t){if(e.type=2,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):vc,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.positions){const t=d.vec3(),i=[];J(e.positions,i,t)&&(e.positions=i,e.origin=d.addVec3(e.origin,t,t))}if(e.positions){const t=d.collapseAABB3();e.positionsDecodeMatrix=d.mat4(),d.expandAABB3Points3(t,e.positions),e.positionsCompressed=hn(e.positions,t,e.positionsDecodeMatrix),e.aabb=t}else if(e.positionsCompressed){const t=d.collapseAABB3();d.expandAABB3Points3(t,e.positionsCompressed),Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.buckets){const t=d.collapseAABB3();for(let i=0,s=e.buckets.length;i>24&255,r=i>>16&255,o=i>>8&255,n=255&i;switch(e.pickColor=new Uint8Array([n,o,r,s]),e.solid="solid"===e.primitive,t.origin=d.vec3(e.origin),e.type){case 2:t.layer=this._getDTXLayer(e),t.aabb=e.aabb;break;case 1:t.layer=this._getVBOBatchingLayer(e),t.aabb=e.aabb;break;case 0:t.layer=this._getVBOInstancingLayer(e),t.aabb=e.aabb}return e.transform&&(e.meshMatrix=e.transform.worldMatrix),t.portionId=t.layer.createPortion(t,e),this._meshes[e.id]=t,this._unusedMeshes[e.id]=t,this._meshList.push(t),t}_getNumPrimitives(e){let t=0;switch(e.geometry?e.geometry.primitive:e.primitive){case"triangles":case"solid":case"surface":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i>>0).toString(16)}_getVBOInstancingLayer(e){const t=this,i=e.origin,s=e.textureSetId||"-",r=e.geometryId,o=`${Math.round(i[0])}.${Math.round(i[1])}.${Math.round(i[2])}.${s}.${r}`;let n=this._vboInstancingLayers[o];if(n)return n;let a=e.textureSet;const l=e.geometry;for(;!n;)switch(l.primitive){case"triangles":case"surface":n=new fa({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!1});break;case"solid":n=new fa({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!0});break;case"lines":n=new el({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0});break;case"points":n=new Kl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0})}return this._vboInstancingLayers[o]=n,this.layerList.push(n),n}createEntity(e){if(void 0===e.id?e.id=d.createUUID():this.scene.components[e.id]&&(this.error(`Scene already has a Component with this ID: ${e.id} - will assign random ID`),e.id=d.createUUID()),void 0===e.meshIds)return void this.error("Config missing: meshIds");let t=0;this._visible&&!1!==e.visible&&(t|=q),this._pickable&&!1!==e.pickable&&(t|=ee),this._culled&&!1!==e.culled&&(t|=$),this._clippable&&!1!==e.clippable&&(t|=te),this._collidable&&!1!==e.collidable&&(t|=ie),this._edges&&!1!==e.edges&&(t|=ne),this._xrayed&&!1!==e.xrayed&&(t|=se),this._highlighted&&!1!==e.highlighted&&(t|=re),this._selected&&!1!==e.selected&&(t|=oe),e.flags=t,this._createEntity(e)}_createEntity(e){let t=[];for(let i=0,s=e.meshIds.length;ie.sortIdt.sortId?1:0));for(let e=0,t=this.layerList.length;e0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}_updateRenderFlagsVisibleLayers(){const e=this.renderFlags;e.numLayers=this.layerList.length,e.numVisibleLayers=0;for(let t=0,i=this.layerList.length;t0){const t=`${this.id}-dummyEntityForUnusedMeshes`;this.warn(`Creating dummy SceneModelEntity "${t}" for unused SceneMeshes: [${e.join(",")}]`),this.createEntity({id:t,meshIds:e,isObject:!0})}this._unusedMeshes={}}_getActiveSectionPlanesForLayer(e){const t=this.renderFlags,i=this.scene._sectionPlanesState.sectionPlanes,s=i.length,r=e.layerIndex*s;if(s>0)for(let e=0;e0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){const t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0){this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions0&&(e.edgesTransparent=!0))}if(this.numSelectedLayerPortions>0){const t=this.scene.selectedMaterial._state;t.fill&&(t.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){const t=this.scene.highlightMaterial._state;t.fill&&(t.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}drawColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i65536?16:8)}else n=[{positionsCompressed:s,indices:r,edgeIndices:o}];return n}class Bc extends R{constructor(e,t={}){if(super(e,t),this._positions=t.positions||[],t.indices)this._indices=t.indices;else{this._indices=[];for(let e=0,t=this._positions.length/3-1;ep.has(e.id)||g.has(e.id)||f.has(e.id))).reduce(((e,i)=>{let s,r=function(e){let t="";return t+=Math.round(255*e[0]).toString(16).padStart(2,"0"),t+=Math.round(255*e[1]).toString(16).padStart(2,"0"),t+=Math.round(255*e[2]).toString(16).padStart(2,"0"),t}(i.colorize);i.xrayed?(s=0===t.xrayMaterial.fillAlpha&&0!==t.xrayMaterial.edgeAlpha?.1:t.xrayMaterial.fillAlpha,s=Math.round(255*s).toString(16).padStart(2,"0"),r=s+r):p.has(i.id)&&(s=Math.round(255*i.opacity).toString(16).padStart(2,"0"),r=s+r),e[r]||(e[r]=[]);const o=i.id,n=i.originalSystemId,a={ifc_guid:n,originating_system:this.originatingSystem};return n!==o&&(a.authoring_tool_id=o),e[r].push(a),e}),{}),_=Object.entries(m).map((([e,t])=>({color:e,components:t})));o.components.coloring=_;const v=t.objectIds,b=t.visibleObjects,y=t.visibleObjectIds,B=v.filter((e=>!b[e])),w=t.selectedObjectIds;return e.defaultInvisible||y.length0&&e.clipping_planes.forEach((function(e){let t=Ec(e.location,wc),i=Ec(e.direction,wc);A&&d.negateVec3(i),d.subVec3(t,l),r.yUp&&(t=Dc(t),i=Dc(i)),new Br(s,{pos:t,dir:i})})),s.clearLines(),e.lines&&e.lines.length>0){const t=[],i=[];let r=0;e.lines.forEach((e=>{e.start_point&&e.end_point&&(t.push(e.start_point.x),t.push(e.start_point.y),t.push(e.start_point.z),t.push(e.end_point.x),t.push(e.end_point.y),t.push(e.end_point.z),i.push(r++),i.push(r++))})),new Bc(s,{positions:t,indices:i,clippable:!1,collidable:!0})}if(s.clearBitmaps(),e.bitmaps&&e.bitmaps.length>0&&e.bitmaps.forEach((function(e){const t=e.bitmap_type||"jpg",i=e.bitmap_data;let o=Ec(e.location,xc),n=Ec(e.normal,Pc),a=Ec(e.up,Cc),l=e.height||1;t&&i&&o&&n&&a&&(r.yUp&&(o=Dc(o),n=Dc(n),a=Dc(a)),new Ao(s,{src:i,type:t,pos:o,normal:n,up:a,clippable:!1,collidable:!0,height:l}))})),a&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),s.setObjectsHighlighted(s.highlightedObjectIds,!1),s.setObjectsSelected(s.selectedObjectIds,!1)),e.components){if(e.components.visibility){e.components.visibility.default_visibility?(s.setObjectsVisible(s.objectIds,!0),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!1))))):(s.setObjectsVisible(s.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!0)))));const r=e.components.visibility.view_setup_hints;r&&(!1===r.spaces_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcSpace"),!1),void 0!==r.spaces_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcSpace"),!0),r.space_boundaries_visible,!1===r.openings_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcOpening"),!0),r.space_boundaries_translucent,void 0!==r.openings_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcOpening"),!0))}e.components.selection&&(s.setObjectsSelected(s.selectedObjectIds,!1),e.components.selection.forEach((e=>this._withBCFComponent(t,e,(e=>e.selected=!0))))),e.components.translucency&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),e.components.translucency.forEach((e=>this._withBCFComponent(t,e,(e=>e.xrayed=!0))))),e.components.coloring&&e.components.coloring.forEach((e=>{let i=e.color,s=0,r=!1;8===i.length&&(s=parseInt(i.substring(0,2),16)/256,s<=1&&s>=.95&&(s=1),i=i.substring(2),r=!0);const o=[parseInt(i.substring(0,2),16)/256,parseInt(i.substring(2,4),16)/256,parseInt(i.substring(4,6),16)/256];e.components.map((e=>this._withBCFComponent(t,e,(e=>{e.colorize=o,r&&(e.opacity=s)}))))}))}if(e.perspective_camera||e.orthogonal_camera){let a,A,h,c;if(e.perspective_camera?(a=Ec(e.perspective_camera.camera_view_point,wc),A=Ec(e.perspective_camera.camera_direction,wc),h=Ec(e.perspective_camera.camera_up_vector,wc),r.perspective.fov=e.perspective_camera.field_of_view,c="perspective"):(a=Ec(e.orthogonal_camera.camera_view_point,wc),A=Ec(e.orthogonal_camera.camera_direction,wc),h=Ec(e.orthogonal_camera.camera_up_vector,wc),r.ortho.scale=e.orthogonal_camera.view_to_world_scale,c="ortho"),d.subVec3(a,l),r.yUp&&(a=Dc(a),A=Dc(A),h=Dc(h)),o){const e=s.pick({pickSurface:!0,origin:a,direction:A});A=e?e.worldPos:d.addVec3(a,A,wc)}else A=d.addVec3(a,A,wc);n?(r.eye=a,r.look=A,r.up=h,r.projection=c):i.cameraFlight.flyTo({eye:a,look:A,up:h,duration:t.duration,projection:c})}}_withBCFComponent(e,t,i){const s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){const o=t.authoring_tool_id,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}}if(t.ifc_guid){const o=t.ifc_guid,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}Object.keys(r.models).forEach((t=>{const n=d.globalizeObjectId(t,o),a=r.objects[n];if(a)i(a);else if(e.updateCompositeObjects){s.metaScene.metaObjects[n]&&r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}}))}}destroy(){super.destroy()}}function Fc(e){return{x:e[0],y:e[1],z:e[2]}}function Ec(e,t){return(t=new Float64Array(3))[0]=e.x,t[1]=e.y,t[2]=e.z,t}function Ic(e){return new Float64Array([e[0],-e[2],e[1]])}function Dc(e){return new Float64Array([e[0],e[2],-e[1]])}const Sc=d.vec3(),Tc=(e,t,i,s)=>{var r=e-i,o=t-s;return Math.sqrt(r*r+o*o)};class Rc extends R{constructor(e,t={}){if(super(e.viewer.scene,t),this.plugin=e,this._container=t.container,!this._container)throw"config missing: container";this._eventSubs={};var i=this.plugin.viewer.scene;this._originMarker=new ue(i,t.origin),this._targetMarker=new ue(i,t.target),this._originWorld=d.vec3(),this._targetWorld=d.vec3(),this._wp=new Float64Array(24),this._vp=new Float64Array(24),this._pp=new Float64Array(24),this._cp=new Float64Array(8),this._xAxisLabelCulled=!1,this._yAxisLabelCulled=!1,this._zAxisLabelCulled=!1,this._color=t.color||this.plugin.defaultColor;const s=t.onMouseOver?e=>{t.onMouseOver(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseover",e))}:null,r=t.onMouseLeave?e=>{t.onMouseLeave(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseleave",e))}:null,o=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousedown",e))},n=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseup",e))},a=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousemove",e))},l=t.onContextMenu?e=>{t.onContextMenu(e,this)}:null,A=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent("wheel",e))};this._originDot=new fe(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._targetDot=new fe(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthWire=new pe(this._container,{color:this._color,thickness:2,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisWire=new pe(this._container,{color:"#FF0000",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisWire=new pe(this._container,{color:"green",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisWire=new pe(this._container,{color:"blue",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthLabel=new ge(this._container,{fillColor:this._color,prefix:"",text:"",zIndex:void 0!==e.zIndex?e.zIndex+4:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisLabel=new ge(this._container,{fillColor:"red",prefix:"X",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisLabel=new ge(this._container,{fillColor:"green",prefix:"Y",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisLabel=new ge(this._container,{fillColor:"blue",prefix:"Z",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._measurementOrientation="Horizontal",this._wpDirty=!1,this._vpDirty=!1,this._cpDirty=!1,this._sectionPlanesDirty=!0,this._visible=!1,this._originVisible=!1,this._targetVisible=!1,this._wireVisible=!1,this._axisVisible=!1,this._xAxisVisible=!1,this._yAxisVisible=!1,this._zAxisVisible=!1,this._axisEnabled=!0,this._xLabelEnabled=!1,this._yLabelEnabled=!1,this._zLabelEnabled=!1,this._lengthLabelEnabled=!1,this._labelsVisible=!1,this._labelsOnWires=!1,this._clickable=!1,this._originMarker.on("worldPos",(e=>{this._originWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._targetMarker.on("worldPos",(e=>{this._targetWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._onViewMatrix=i.camera.on("viewMatrix",(()=>{this._vpDirty=!0,this._needUpdate(0)})),this._onProjMatrix=i.camera.on("projMatrix",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onCanvasBoundary=i.canvas.on("boundary",(()=>{this._cpDirty=!0,this._needUpdate(0)})),this._onMetricsUnits=i.metrics.on("units",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsScale=i.metrics.on("scale",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsOrigin=i.metrics.on("origin",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onSectionPlaneUpdated=i.on("sectionPlaneUpdated",(()=>{this._sectionPlanesDirty=!0,this._needUpdate()})),this.approximate=t.approximate,this.visible=t.visible,this.originVisible=t.originVisible,this.targetVisible=t.targetVisible,this.wireVisible=t.wireVisible,this.axisVisible=t.axisVisible,this.xAxisVisible=t.xAxisVisible,this.yAxisVisible=t.yAxisVisible,this.zAxisVisible=t.zAxisVisible,this.xLabelEnabled=t.xLabelEnabled,this.yLabelEnabled=t.yLabelEnabled,this.zLabelEnabled=t.zLabelEnabled,this.lengthLabelEnabled=t.lengthLabelEnabled,this.labelsVisible=t.labelsVisible,this.labelsOnWires=t.labelsOnWires}_update(){if(!this._visible)return;const e=this.plugin.viewer.scene;if(this._wpDirty&&(this._measurementOrientation=function(e,t,i){return Math.abs(t[1]-e[1])>i?"Vertical":"Horizontal"}(this._originWorld,this._targetWorld,1),"Vertical"===this._measurementOrientation?(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._originWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._originWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1):(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._targetWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._targetWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1),this._wpDirty=!1,this._vpDirty=!0),this._vpDirty&&(d.transformPositions4(e.camera.viewMatrix,this._wp,this._vp),this._vp[3]=1,this._vp[7]=1,this._vp[11]=1,this._vp[15]=1,this._vpDirty=!1,this._cpDirty=!0),this._sectionPlanesDirty){if(this._isSliced(this._originWorld)||this._isSliced(this._targetWorld))return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setCulled(!0),this._yAxisWire.setCulled(!0),this._zAxisWire.setCulled(!0),this._lengthWire.setCulled(!0),this._originDot.setCulled(!0),void this._targetDot.setCulled(!0);this._xAxisLabel.setCulled(!1),this._yAxisLabel.setCulled(!1),this._zAxisLabel.setCulled(!1),this._lengthLabel.setCulled(!1),this._xAxisWire.setCulled(!1),this._yAxisWire.setCulled(!1),this._zAxisWire.setCulled(!1),this._lengthWire.setCulled(!1),this._originDot.setCulled(!1),this._targetDot.setCulled(!1),this._sectionPlanesDirty=!0}const t=this._originMarker.viewPos[2],i=this._targetMarker.viewPos[2];if(t>-.3||i>-.3)return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setVisible(!1),this._yAxisWire.setVisible(!1),this._zAxisWire.setVisible(!1),this._lengthWire.setVisible(!1),this._originDot.setVisible(!1),void this._targetDot.setVisible(!1);if(this._cpDirty){d.transformPositions4(e.camera.project.matrix,this._vp,this._pp);var s=this._pp,r=this._cp,o=e.canvas.canvas.getBoundingClientRect();const t=this._container.getBoundingClientRect();var n=o.top-t.top,a=o.left-t.left,l=e.canvas.boundary,A=l[2],h=l[3],c=0;const i=this.plugin.viewer.scene.metrics,f=i.scale,g=i.units,m=i.unitsInfo[g].abbrev;for(var u=0,p=s.length;ue.offsetTop+(e.offsetParent&&e.offsetParent!==s.parentNode&&h(e.offsetParent)),c=e=>e.offsetLeft+(e.offsetParent&&e.offsetParent!==s.parentNode&&c(e.offsetParent)),u=d.vec2();this._onCameraControlHoverSnapOrSurface=i.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",(e=>{const t=e.snappedCanvasPos||e.canvasPos;r=!0,o.set(e.worldPos),n.set(e.canvasPos),0===this._mouseState?(this._canvasToPagePos?(this._canvasToPagePos(s,t,u),this._markerDiv.style.left=u[0]-5+"px",this._markerDiv.style.top=u[1]-5+"px"):(this._markerDiv.style.left=c(s)+t[0]-5+"px",this._markerDiv.style.top=h(s)+t[1]-5+"px"),this._markerDiv.style.background="pink",e.snappedToVertex||e.snappedToEdge?(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos,this.pointerLens.snapped=!0),this._markerDiv.style.background="greenyellow",this._markerDiv.style.border="2px solid green"):(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.canvasPos,this.pointerLens.snapped=!1),this._markerDiv.style.background="pink",this._markerDiv.style.border="2px solid red"),A=e.entity):(this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px"),s.style.cursor="pointer",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=this._currentDistanceMeasurementInitState.wireVisible,this._currentDistanceMeasurement.axisVisible=this._currentDistanceMeasurementInitState.axisVisible&&this.distanceMeasurementsPlugin.defaultAxisVisible,this._currentDistanceMeasurement.xAxisVisible=this._currentDistanceMeasurementInitState.xAxisVisible&&this.distanceMeasurementsPlugin.defaultXAxisVisible,this._currentDistanceMeasurement.yAxisVisible=this._currentDistanceMeasurementInitState.yAxisVisible&&this.distanceMeasurementsPlugin.defaultYAxisVisible,this._currentDistanceMeasurement.zAxisVisible=this._currentDistanceMeasurementInitState.zAxisVisible&&this.distanceMeasurementsPlugin.defaultZAxisVisible,this._currentDistanceMeasurement.targetVisible=this._currentDistanceMeasurementInitState.targetVisible,this._currentDistanceMeasurement.target.worldPos=o.slice(),this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px")})),s.addEventListener("mousedown",this._onMouseDown=e=>{1===e.which&&(a=e.clientX,l=e.clientY)}),s.addEventListener("mouseup",this._onMouseUp=t=>{1===t.which&&(t.clientX>a+20||t.clientXl+20||t.clientY{this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos),r=!1,this._markerDiv.style.left="-100px",this._markerDiv.style.top="-100px",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.axisVisible=!1),s.style.cursor="default"})),this._active=!0}deactivate(){if(!this._active)return;this.fire("activated",!1),this.pointerLens&&(this.pointerLens.visible=!1),this._markerDiv&&this._destroyMarkerDiv(),this.reset();const e=this.scene.canvas.canvas;e.removeEventListener("mousedown",this._onMouseDown),e.removeEventListener("mouseup",this._onMouseUp);const t=this.distanceMeasurementsPlugin.viewer.cameraControl;t.off(this._onCameraControlHoverSnapOrSurface),t.off(this._onCameraControlHoverSnapOrSurfaceOff),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._active=!1}reset(){this._active&&(this._destroyMarkerDiv(),this._initMarkerDiv(),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._mouseState=0)}get currentMeasurement(){return this._currentDistanceMeasurement}destroy(){this.deactivate(),super.destroy()}}class kc extends z{constructor(e,t={}){super("DistanceMeasurements",e),this._pointerLens=t.pointerLens,this._container=t.container||document.body,this._defaultControl=null,this._measurements={},this.labelMinAxisLength=t.labelMinAxisLength,this.defaultVisible=!1!==t.defaultVisible,this.defaultOriginVisible=!1!==t.defaultOriginVisible,this.defaultTargetVisible=!1!==t.defaultTargetVisible,this.defaultWireVisible=!1!==t.defaultWireVisible,this.defaultXLabelEnabled=!1!==t.defaultXLabelEnabled,this.defaultYLabelEnabled=!1!==t.defaultYLabelEnabled,this.defaultZLabelEnabled=!1!==t.defaultZLabelEnabled,this.defaultLengthLabelEnabled=!1!==t.defaultLengthLabelEnabled,this.defaultLabelsVisible=!1!==t.defaultLabelsVisible,this.defaultAxisVisible=!1!==t.defaultAxisVisible,this.defaultXAxisVisible=!1!==t.defaultXAxisVisible,this.defaultYAxisVisible=!1!==t.defaultYAxisVisible,this.defaultZAxisVisible=!1!==t.defaultZAxisVisible,this.defaultColor=void 0!==t.defaultColor?t.defaultColor:"#00BBFF",this.zIndex=t.zIndex||1e4,this.defaultLabelsOnWires=!1!==t.defaultLabelsOnWires,this._onMouseOver=(e,t)=>{this.fire("mouseOver",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onMouseLeave=(e,t)=>{this.fire("mouseLeave",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onContextMenu=(e,t)=>{this.fire("contextMenu",{plugin:this,distanceMeasurement:t,measurement:t,event:e})}}getContainerElement(){return this._container}send(e,t){}get pointerLens(){return this._pointerLens}get control(){return this._defaultControl||(this._defaultControl=new Uc(this,{})),this._defaultControl}get measurements(){return this._measurements}set labelMinAxisLength(e){e<1&&(this.error("labelMinAxisLength must be >= 1; defaulting to 25"),e=25),this._labelMinAxisLength=e||25}get labelMinAxisLength(){return this._labelMinAxisLength}createMeasurement(e={}){this.viewer.scene.components[e.id]&&(this.error("Viewer scene component with this ID already exists: "+e.id),delete e.id);const t=e.origin,i=e.target,s=new Rc(this,{id:e.id,plugin:this,container:this._container,origin:{entity:t.entity,worldPos:t.worldPos},target:{entity:i.entity,worldPos:i.worldPos},visible:e.visible,wireVisible:e.wireVisible,axisVisible:!1!==e.axisVisible&&!1!==this.defaultAxisVisible,xAxisVisible:!1!==e.xAxisVisible&&!1!==this.defaultXAxisVisible,yAxisVisible:!1!==e.yAxisVisible&&!1!==this.defaultYAxisVisible,zAxisVisible:!1!==e.zAxisVisible&&!1!==this.defaultZAxisVisible,xLabelEnabled:!1!==e.xLabelEnabled&&!1!==this.defaultXLabelEnabled,yLabelEnabled:!1!==e.yLabelEnabled&&!1!==this.defaultYLabelEnabled,zLabelEnabled:!1!==e.zLabelEnabled&&!1!==this.defaultZLabelEnabled,lengthLabelEnabled:!1!==e.lengthLabelEnabled&&!1!==this.defaultLengthLabelEnabled,labelsVisible:!1!==e.labelsVisible&&!1!==this.defaultLabelsVisible,originVisible:e.originVisible,targetVisible:e.targetVisible,color:e.color,labelsOnWires:!1!==e.labelsOnWires&&!1!==this.defaultLabelsOnWires,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[s.id]=s,s.clickable=!0,s.on("destroyed",(()=>{delete this._measurements[s.id]})),this.fire("measurementCreated",s),s}destroyMeasurement(e){const t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("DistanceMeasurement not found: "+e)}setLabelsShown(e){for(const[t,i]of Object.entries(this.measurements))i.labelShown=e}setAxisVisible(e){for(const[t,i]of Object.entries(this.measurements))i.axisVisible=e;this.defaultAxisVisible=e}getAxisVisible(){return this.defaultAxisVisible}clear(){const e=Object.keys(this._measurements);for(var t=0,i=e.length;t{this.plugin.viewer.cameraControl.active=!1},c=()=>{this.plugin.viewer.cameraControl.active=!0},u=()=>{o&&(clearTimeout(o),o=null),this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),c(),this._touchState=0};i.addEventListener("touchstart",this._onCanvasTouchStart=i=>{const l=i.touches.length;if(1!==l)return void(o&&(clearTimeout(o),o=null));const c=i.touches[0],p=c.clientX,f=c.clientY;switch(n.set([p,f]),a.set([p,f]),this._touchState){case 0:if(1!==l&&null!==o)return void u();const i=t.pick({canvasPos:a,snapping:this._snapping,snapToEdge:this._snapping});if(i&&i.snapped)s.set(i.worldPos),this.pointerCircle.start(i.snappedCanvasPos);else{const e=t.pick({canvasPos:a,pickSurface:!0});if(!e||!e.worldPos)return;s.set(e.worldPos),this.pointerCircle.start(e.canvasPos)}o=setTimeout((()=>{1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{if(o=null,1!==l||a[0]>n[0]+r||a[0]n[1]+r||a[1]{this.pointerCircle.stop();const r=i.touches.length;if(1!==r||1!==i.changedTouches.length)return void(o&&(clearTimeout(o),o=null));const n=i.touches[0],l=n.clientX,h=n.clientY;if(n.identifier!==A)return;let c,u;switch(a.set([l,h]),this._touchState){case 2:this.pointerLens&&(this.pointerLens.canvasPos=a),c=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),c&&c.snapped?(this.pointerLens&&(this.pointerLens.snappedCanvasPos=c.snappedCanvasPos,this.pointerLens.snapped=!0),s.set(c.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=c.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:c.worldPos,entity:c.entity},target:{worldPos:c.worldPos,entity:c.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):(u=t.pick({canvasPos:a,pickSurface:!0}),u&&u.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=u.canvasPos,this.pointerLens.snapped=!1),s.set(u.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=u.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:u.worldPos,entity:u.entity},target:{worldPos:u.worldPos,entity:u.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)),this._touchState=2;break;case 5:if(1!==r&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),c=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),c&&c.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=c.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentDistanceMeasurement.target.worldPos=c.worldPos,this._currentDistanceMeasurement.target.entity=c.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0):(u=t.pick({canvasPos:a,pickSurface:!0}),u&&u.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=u.canvasPos,this.pointerLens.snapped=!1),this._currentDistanceMeasurement.target.worldPos=u.worldPos,this._currentDistanceMeasurement.target.entity=u.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0)),this._touchState=5}}),{passive:!0}),i.addEventListener("touchend",this._onCanvasTouchEnd=i=>{this.pointerCircle.stop();const s=i.changedTouches.length;if(1!==s)return;const h=i.changedTouches[0],u=h.clientX,p=h.clientY;if(h.identifier===A)switch(o&&(clearTimeout(o),o=null),l.set([u,p]),this._touchState){case 1:{if(1!==s||u>n[0]+r||un[1]+r||pn[0]+r||un[1]+r||p{i=1e3*this._delayBeforeRestoreSeconds,s||(e.scene._renderer.setColorTextureEnabled(!this._hideColorTexture),e.scene._renderer.setPBREnabled(!this._hidePBR),e.scene._renderer.setSAOEnabled(!this._hideSAO),e.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects),e.scene._renderer.setEdgesEnabled(!this._hideEdges),this._scaleCanvasResolution?e.scene.canvas.resolutionScale=this._scaleCanvasResolutionFactor:e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,s=!0)},o=()=>{e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,e.scene._renderer.setEdgesEnabled(!0),e.scene._renderer.setColorTextureEnabled(!0),e.scene._renderer.setPBREnabled(!0),e.scene._renderer.setSAOEnabled(!0),e.scene._renderer.setTransparentEnabled(!0),s=!1};this._onCanvasBoundary=e.scene.canvas.on("boundary",r),this._onCameraMatrix=e.scene.camera.on("matrix",r),this._onSceneTick=e.scene.on("tick",(e=>{s&&(i-=e.deltaTime,(!this._delayBeforeRestore||i<=0)&&o())}));let n=!1;this._onSceneMouseDown=e.scene.input.on("mousedown",(()=>{n=!0})),this._onSceneMouseUp=e.scene.input.on("mouseup",(()=>{n=!1})),this._onSceneMouseMove=e.scene.input.on("mousemove",(()=>{n&&r()}))}get hideColorTexture(){return this._hideColorTexture}set hideColorTexture(e){this._hideColorTexture=e}get hidePBR(){return this._hidePBR}set hidePBR(e){this._hidePBR=e}get hideSAO(){return this._hideSAO}set hideSAO(e){this._hideSAO=e}get hideEdges(){return this._hideEdges}set hideEdges(e){this._hideEdges=e}get hideTransparentObjects(){return this._hideTransparentObjects}set hideTransparentObjects(e){this._hideTransparentObjects=!1!==e}get scaleCanvasResolution(){return this._scaleCanvasResolution}set scaleCanvasResolution(e){this._scaleCanvasResolution=e}get defaultScaleCanvasResolutionFactor(){return this._defaultScaleCanvasResolutionFactor}set defaultScaleCanvasResolutionFactor(e){this._defaultScaleCanvasResolutionFactor=e||1}get scaleCanvasResolutionFactor(){return this._scaleCanvasResolutionFactor}set scaleCanvasResolutionFactor(e){this._scaleCanvasResolutionFactor=e||.6}get delayBeforeRestore(){return this._delayBeforeRestore}set delayBeforeRestore(e){this._delayBeforeRestore=e}get delayBeforeRestoreSeconds(){return this._delayBeforeRestoreSeconds}set delayBeforeRestoreSeconds(e){this._delayBeforeRestoreSeconds=null!=e?e:.5}send(e,t){}destroy(){this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),super.destroy()}}class Qc{constructor(){}getMetaModel(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getGLTF(e,t,i){y.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getGLB(e,t,i){y.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getArrayBuffer(e,t,i,s){!function(e,t,i,s){var r=()=>{};i=i||r,s=s||r;const o=/^data:(.*?)(;base64)?,(.*)$/,n=t.match(o);if(n){const e=!!n[2];var a=n[3];a=window.decodeURIComponent(a),e&&(a=window.atob(a));try{const e=new ArrayBuffer(a.length),t=new Uint8Array(e);for(var l=0;l{i(e)}),(function(e){s(e)}))}}class Vc{constructor(e={}){this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale="en",this._messages={},this._locales=[],this._locale="en",this.messages=e.messages,this.locale=e.locale}set messages(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire("updated",this)}loadMessages(e={}){for(let t in e)this._messages[t]=e[t];this.messages=this._messages}clearMessages(){this.messages={}}get locales(){return this._locales}set locale(e){e=e||"de",this._locale!==e&&(this._locale=e,this.fire("updated",e))}get locale(){return this._locale}translate(e,t){const i=this._messages[this._locale];if(!i)return null;const s=Hc(e,i);return s?t?jc(s,t):s:null}translatePlurals(e,t,i){const s=this._messages[this._locale];if(!s)return null;let r=Hc(e,s);return r=0===(t=parseInt(""+t,10))?r.zero:t>1?r.other:r.one,r?(r=jc(r,[t]),i&&(r=jc(r,i)),r):null}fire(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);const s=this._eventSubs[e];if(s)for(const e in s)if(s.hasOwnProperty(e)){s[e].callback(t)}}on(t,i){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new e),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});let s=this._eventSubs[t];s||(s={},this._eventSubs[t]=s);const r=this._eventSubIDMap.addItem();s[r]={callback:i},this._eventSubEvents[r]=t;const o=this._events[t];return void 0!==o&&i(o),r}off(e){if(null==e)return;if(!this._eventSubEvents)return;const t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];const i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}function Hc(e,t){if(t[e])return t[e];const i=e.split(".");let s=t;for(let e=0,t=i.length;s&&e1?1:e}get t(){return this._t}get tangent(){return this.getTangent(this._t)}get length(){var e=this._getLengths();return e[e.length-1]}getTangent(e){var t=1e-4;void 0===e&&(e=this._t);var i=e-t,s=e+t;i<0&&(i=0),s>1&&(s=1);var r=this.getPoint(i),o=this.getPoint(s),n=d.subVec3(o,r,[]);return d.normalizeVec3(n,[])}getPointAt(e){var t=this.getUToTMapping(e);return this.getPoint(t)}getPoints(e){e||(e=5);var t,i=[];for(t=0;t<=e;t++)i.push(this.getPoint(t/e));return i}_getLengths(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i,s=[],r=this.getPoint(0),o=0;for(s.push(0),i=1;i<=e;i++)t=this.getPoint(i/e),o+=d.lenVec3(d.subVec3(t,r,[])),s.push(o),r=t;return this.cacheArcLengths=s,s}_updateArcLengths(){this.needsUpdate=!0,this._getLengths()}getUToTMapping(e,t){var i,s=this._getLengths(),r=0,o=s.length;i=t||e*s[o-1];for(var n,a=0,l=o-1;a<=l;)if((n=s[r=Math.floor(a+(l-a)/2)]-i)<0)a=r+1;else{if(!(n>0)){l=r;break}l=r-1}if(s[r=l]===i)return r/(o-1);var A=s[r];return(r+(i-A)/(s[r+1]-A))/(o-1)}}class zc extends Gc{constructor(e,t={}){super(e,t),this.points=t.points,this.t=t.t}set points(e){this._points=e||[]}get points(){return this._points}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=this.points;if(!(t.length<3)){var i=(t.length-1)*e,s=Math.floor(i),r=i-s,o=t[0===s?s:s-1],n=t[s],a=t[s>t.length-2?t.length-1:s+1],l=t[s>t.length-3?t.length-1:s+2],A=d.vec3();return A[0]=d.catmullRomInterpolate(o[0],n[0],a[0],l[0],r),A[1]=d.catmullRomInterpolate(o[1],n[1],a[1],l[1],r),A[2]=d.catmullRomInterpolate(o[2],n[2],a[2],l[2],r),A}this.error("Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].")}getJSON(){return{points:points,t:this._t}}}const Wc=d.vec3();class Kc extends R{get type(){return"CameraPath"}constructor(e,t={}){super(e,t),this._frames=[],this._eyeCurve=new zc(this),this._lookCurve=new zc(this),this._upCurve=new zc(this),t.frames&&(this.addFrames(t.frames),this.smoothFrameTimes(1))}get frames(){return this._frames}get eyeCurve(){return this._eyeCurve}get lookCurve(){return this._lookCurve}get upCurve(){return this._upCurve}saveFrame(e){const t=this.scene.camera;this.addFrame(e,t.eye,t.look,t.up)}addFrame(e,t,i,s){const r={t:e,eye:t.slice(0),look:i.slice(0),up:s.slice(0)};this._frames.push(r),this._eyeCurve.points.push(r.eye),this._lookCurve.points.push(r.look),this._upCurve.points.push(r.up)}addFrames(e){let t;for(let i=0,s=e.length;i1?1:e,t.eye=this._eyeCurve.getPoint(e,Wc),t.look=this._lookCurve.getPoint(e,Wc),t.up=this._upCurve.getPoint(e,Wc)}sampleFrame(e,t,i,s){e=e<0?0:e>1?1:e,this._eyeCurve.getPoint(e,t),this._lookCurve.getPoint(e,i),this._upCurve.getPoint(e,s)}smoothFrameTimes(e){if(0===this._frames.length)return;const t=d.vec3();var i=0;this._frames[0].t=0;const s=[];for(let e=1,o=this._frames.length;e=1;e>1&&(e=1);const i=this.easing?$c._ease(e,0,1,1):e,s=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?(d.subVec3(s.eye,s.look,qc),s.eye=d.lerpVec3(i,0,1,this._eye1,this._eye2,Yc),s.look=d.subVec3(Yc,qc,Jc)):this._flyingLook&&(s.look=d.lerpVec3(i,0,1,this._look1,this._look2,Jc),s.up=d.lerpVec3(i,0,1,this._up1,this._up2,Zc)):this._flyingEyeLookUp&&(s.eye=d.lerpVec3(i,0,1,this._eye1,this._eye2,Yc),s.look=d.lerpVec3(i,0,1,this._look1,this._look2,Jc),s.up=d.lerpVec3(i,0,1,this._up1,this._up2,Zc)),this._projection2){const t="ortho"===this._projection2?$c._easeOutExpo(e,0,1,1):$c._easeInCubic(e,0,1,1);s.customProjection.matrix=d.lerpMat4(t,0,1,this._projMatrix1,this._projMatrix2)}else s.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return s.ortho.scale=this._orthoScale2,void this.stop();I.scheduleTask(this._update,this)}static _ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}static _easeInCubic(e,t,i,s){return i*(e/=s)*e*e+t}static _easeOutExpo(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}stop(){if(!this._flying)return;this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);const e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire("stopped",!0,!0)}cancel(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire("canceled",!0,!0))}set duration(e){this._duration=e?1e3*e:500,this.stop()}get duration(){return this._duration/1e3}set fit(e){this._fit=!1!==e}get fit(){return this._fit}set fitFOV(e){this._fitFOV=e||45}get fitFOV(){return this._fitFOV}set trail(e){this._trail=!!e}get trail(){return this._trail}destroy(){this.stop(),super.destroy()}}class eu extends R{get type(){return"CameraPathAnimation"}constructor(e,t={}){super(e,t),this._cameraFlightAnimation=new $c(this),this._t=0,this.state=eu.SCRUBBING,this._playingFromT=0,this._playingToT=0,this._playingRate=t.playingRate||1,this._playingDir=1,this._lastTime=null,this.cameraPath=t.cameraPath,this._tick=this.scene.on("tick",this._updateT,this)}_updateT(){const e=this._cameraPath;if(!e)return;let t,i;const s=performance.now(),r=this._lastTime?.001*(s-this._lastTime):0;if(this._lastTime=s,0!==r)switch(this.state){case eu.SCRUBBING:return;case eu.PLAYING:if(this._t+=this._playingRate*r,t=this._cameraPath.frames.length,0===t||this._playingDir<0&&this._t<=0||this._playingDir>0&&this._t>=this._cameraPath.frames[t-1].t)return this.state=eu.SCRUBBING,this._t=this._cameraPath.frames[t-1].t,void this.fire("stopped");e.loadFrame(this._t);break;case eu.PLAYING_TO:i=this._t+this._playingRate*r*this._playingDir,(this._playingDir<0&&i<=this._playingToT||this._playingDir>0&&i>=this._playingToT)&&(i=this._playingToT,this.state=eu.SCRUBBING,this.fire("stopped")),this._t=i,e.loadFrame(this._t)}}_ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}set cameraPath(e){this._cameraPath=e}get cameraPath(){return this._cameraPath}set rate(e){this._playingRate=e}get rate(){return this._playingRate}play(){this._cameraPath&&(this._lastTime=null,this.state=eu.PLAYING)}playToT(e){this._cameraPath&&(this._playingFromT=this._t,this._playingToT=e,this._playingDir=this._playingToT-this._playingFromT<0?-1:1,this._lastTime=null,this.state=eu.PLAYING_TO)}playToFrame(e){const t=this._cameraPath;if(!t)return;const i=t.frames[e];i?this.playToT(i.t):this.error("playToFrame - frame index out of range: "+e)}flyToFrame(e,t){const i=this._cameraPath;if(!i)return;const s=i.frames[e];s?(this.state=eu.SCRUBBING,this._cameraFlightAnimation.flyTo(s,t)):this.error("flyToFrame - frame index out of range: "+e)}scrubToT(e){const t=this._cameraPath;if(!t)return;this.scene.camera&&(this._t=e,t.loadFrame(this._t),this.state=eu.SCRUBBING)}scrubToFrame(e){const t=this._cameraPath;if(!t)return;if(!this.scene.camera)return;t.frames[e]?(t.loadFrame(this._t),this.state=eu.SCRUBBING):this.error("playToFrame - frame index out of range: "+e)}stop(){this.state=eu.SCRUBBING,this.fire("stopped")}destroy(){super.destroy(),this.scene.off(this._tick)}}eu.STOPPED=0,eu.SCRUBBING=1,eu.PLAYING=2,eu.PLAYING_TO=3;const tu=d.vec3(),iu=d.vec3();d.vec3();const su=d.vec3([0,-1,0]),ru=d.vec4([0,0,0,1]);class ou extends R{constructor(e,t={}){super(e,t),this._src=null,this._image=null,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._dir=d.vec3(),this._size=1,this._imageSize=d.vec2(),this._texture=new Xr(this),this._plane=new fr(this,{geometry:new zt(this,oo({center:[0,0,0],xSize:1,zSize:1,xSegments:10,zSegments:10})),material:new Yt(this,{diffuse:[0,0,0],ambient:[0,0,0],specular:[0,0,0],diffuseMap:this._texture,emissiveMap:this._texture,backfaces:!0}),clippable:t.clippable}),this._grid=new fr(this,{geometry:new zt(this,ro({size:1,divisions:10})),material:new Yt(this,{diffuse:[0,0,0],ambient:[0,0,0],emissive:[.2,.8,.2]}),position:[0,.001,0],clippable:t.clippable}),this._node=new Sr(this,{rotation:[0,0,0],position:[0,0,0],scale:[1,1,1],clippable:!1,children:[this._plane,this._grid]}),this._gridVisible=!1,this.visible=!0,this.gridVisible=t.gridVisible,this.position=t.position,this.rotation=t.rotation,this.dir=t.dir,this.size=t.size,this.collidable=t.collidable,this.clippable=t.clippable,this.pickable=t.pickable,this.opacity=t.opacity,t.image?this.image=t.image:this.src=t.src}set visible(e){this._plane.visible=e,this._grid.visible=this._gridVisible&&e}get visible(){return this._plane.visible}set gridVisible(e){e=!1!==e,this._gridVisible=e,this._grid.visible=this._gridVisible&&this.visible}get gridVisible(){return this._gridVisible}set image(e){this._image=e,this._image&&(this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}get image(){return this._image}set src(e){if(this._src=e,this._src){this._image=null;const e=new Image;e.onload=()=>{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set position(e){this._pos.set(e||[0,0,0]),X(this._pos,this._origin,this._rtcPos),this._node.origin=this._origin,this._node.position=this._rtcPos}get position(){return this._pos}set rotation(e){this._node.rotation=e}get rotation(){return this._node.rotation}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set dir(e){if(this._dir.set(e||[0,0,-1]),e){const t=this.scene.center,i=[-this._dir[0],-this._dir[1],-this._dir[2]];d.subVec3(t,this.position,tu);const s=-d.dotVec3(i,tu);d.normalizeVec3(i),d.mulVec3Scalar(i,s,iu),d.vec3PairToQuaternion(su,e,ru),this._node.quaternion=ru}}get dir(){return this._dir}set collidable(e){this._node.collidable=!1!==e}get collidable(){return this._node.collidable}set clippable(e){this._node.clippable=!1!==e}get clippable(){return this._node.clippable}set pickable(e){this._node.pickable=!1!==e}get pickable(){return this._node.pickable}set opacity(e){this._node.opacity=e}get opacity(){return this._node.opacity}destroy(){super.destroy()}_updatePlaneSizeFromImage(){const e=this._size,t=this._imageSize[0],i=this._imageSize[1];if(t>i){const s=i/t;this._node.scale=[e,1,e*s]}else{const s=t/i;this._node.scale=[e*s,1,e]}}}class nu extends Dt{get type(){return"PointLight"}constructor(e,t={}){super(e,t);const i=this;this._shadowRenderBuf=null,this._shadowViewMatrix=null,this._shadowProjMatrix=null,this._shadowViewMatrixDirty=!0,this._shadowProjMatrixDirty=!0;const s=this.scene.camera,r=this.scene.canvas;this._onCameraViewMatrix=s.on("viewMatrix",(()=>{this._shadowViewMatrixDirty=!0})),this._onCameraProjMatrix=s.on("projMatrix",(()=>{this._shadowProjMatrixDirty=!0})),this._onCanvasBoundary=r.on("boundary",(()=>{this._shadowProjMatrixDirty=!0})),this._state=new At({type:"point",pos:d.vec3([1,1,1]),color:d.vec3([.7,.7,.8]),intensity:1,attenuation:[0,0,0],space:t.space||"view",castsShadow:!1,getShadowViewMatrix:()=>{if(i._shadowViewMatrixDirty){i._shadowViewMatrix||(i._shadowViewMatrix=d.identityMat4());const e=i._state.pos,t=s.look,r=s.up;d.lookAtMat4v(e,t,r,i._shadowViewMatrix),i._shadowViewMatrixDirty=!1}return i._shadowViewMatrix},getShadowProjMatrix:()=>{if(i._shadowProjMatrixDirty){i._shadowProjMatrix||(i._shadowProjMatrix=d.identityMat4());const e=i.scene.canvas.canvas;d.perspectiveMat4(Math.PI/180*70,e.clientWidth/e.clientHeight,.1,500,i._shadowProjMatrix),i._shadowProjMatrixDirty=!1}return i._shadowProjMatrix},getShadowRenderBuf:()=>(i._shadowRenderBuf||(i._shadowRenderBuf=new st(i.scene.canvas.canvas,i.scene.canvas.gl,{size:[1024,1024]})),i._shadowRenderBuf)}),this.pos=t.pos,this.color=t.color,this.intensity=t.intensity,this.constantAttenuation=t.constantAttenuation,this.linearAttenuation=t.linearAttenuation,this.quadraticAttenuation=t.quadraticAttenuation,this.castsShadow=t.castsShadow,this.scene._lightCreated(this)}set pos(e){this._state.pos.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}get pos(){return this._state.pos}set color(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}get color(){return this._state.color}set intensity(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}get intensity(){return this._state.intensity}set constantAttenuation(e){this._state.attenuation[0]=e||0,this.glRedraw()}get constantAttenuation(){return this._state.attenuation[0]}set linearAttenuation(e){this._state.attenuation[1]=e||0,this.glRedraw()}get linearAttenuation(){return this._state.attenuation[1]}set quadraticAttenuation(e){this._state.attenuation[2]=e||0,this.glRedraw()}get quadraticAttenuation(){return this._state.attenuation[2]}set castsShadow(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}get castsShadow(){return this._state.castsShadow}destroy(){const e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),super.destroy(),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}}function au(e){if(!lu(e.width)||!lu(e.height)){const t=document.createElement("canvas");t.width=Au(e.width),t.height=Au(e.height);t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),e=t}return e}function lu(e){return 0==(e&e-1)}function Au(e){--e;for(let t=1;t<32;t<<=1)e|=e>>t;return e+1}class hu extends R{get type(){return"CubeTexture"}constructor(e,t={}){super(e,t);const i=this.scene.canvas.gl;this._state=new At({texture:new Hr({gl:i,target:i.TEXTURE_CUBE_MAP}),flipY:this._checkFlipY(t.minFilter),encoding:this._checkEncoding(t.encoding),minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,mipmaps:!0}),this._src=t.src,this._images=[],this._loadSrc(t.src),m.memory.textures++}_checkFlipY(e){return!!e}_checkEncoding(e){return 3e3!==(e=e||3e3)&&3001!==e&&(this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),e=3e3),e}_webglContextRestored(){this.scene.canvas.gl,this._state.texture=null,this._src&&this._loadSrc(this._src)}_loadSrc(e){const t=this,i=this.scene.canvas.gl;this._images=[];let s=!1,r=0;for(let o=0;o{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set collidable(e){this._mesh.collidable=!1!==e}get collidable(){return this._mesh.collidable}set clippable(e){this._mesh.clippable=!1!==e}get clippable(){return this._mesh.clippable}set pickable(e){this._mesh.pickable=!1!==e}get pickable(){return this._mesh.pickable}set opacity(e){this._mesh.opacity=e}get opacity(){return this._mesh.opacity}_updatePlaneSizeFromImage(){const e=.5*this._size,t=this._imageSize[0],i=this._imageSize[1],s=i/t;this._geometry.positions=t>i?[e,e*s,0,-e,e*s,0,-e,-e*s,0,e,-e*s,0]:[e/s,e,0,-e/s,e,0,-e/s,-e,0,e/s,-e,0]}}class pu{constructor(e){this._eye=d.vec3(),this._look=d.vec3(),this._up=d.vec3(),this._projection={},e&&this.saveCamera(e)}saveCamera(e){const t=e.camera,i=t.project;switch(this._eye.set(t.eye),this._look.set(t.look),this._up.set(t.up),t.projection){case"perspective":this._projection={projection:"perspective",fov:i.fov,fovAxis:i.fovAxis,near:i.near,far:i.far};break;case"ortho":this._projection={projection:"ortho",scale:i.scale,near:i.near,far:i.far};break;case"frustum":this._projection={projection:"frustum",left:i.left,right:i.right,top:i.top,bottom:i.bottom,near:i.near,far:i.far};break;case"custom":this._projection={projection:"custom",matrix:i.matrix.slice()}}}restoreCamera(e,t){const i=e.camera,s=this._projection;function r(){switch(s.type){case"perspective":i.perspective.fov=s.fov,i.perspective.fovAxis=s.fovAxis,i.perspective.near=s.near,i.perspective.far=s.far;break;case"ortho":i.ortho.scale=s.scale,i.ortho.near=s.near,i.ortho.far=s.far;break;case"frustum":i.frustum.left=s.left,i.frustum.right=s.right,i.frustum.top=s.top,i.frustum.bottom=s.bottom,i.frustum.near=s.near,i.frustum.far=s.far;break;case"custom":i.customProjection.matrix=s.matrix}}t?e.viewer.cameraFlight.flyTo({eye:this._eye,look:this._look,up:this._up,orthoScale:s.scale,projection:s.projection},(()=>{r(),t()})):(i.eye=this._eye,i.look=this._look,i.up=this._up,r(),i.projection=s.projection)}}const fu=d.vec3();class gu{constructor(e){if(this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsOpacity=[],this.numObjects=0,e){const t=e.metaScene.scene;this.saveObjects(t,e)}}saveObjects(e,t,i){this.numObjects=0,this._mask=i?y.apply(i,{}):null;const s=!i||i.visible,r=!i||i.edges,o=!i||i.xrayed,n=!i||i.highlighted,a=!i||i.selected,l=!i||i.clippable,A=!i||i.pickable,h=!i||i.colorize,c=!i||i.opacity,u=t.metaObjects,d=e.objects;for(let e=0,t=u.length;e1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=d.vec3();return t[0]=d.b3(e,this._v0[0],this._v1[0],this._v2[0],this._v3[0]),t[1]=d.b3(e,this._v0[1],this._v1[1],this._v2[1],this._v3[1]),t[2]=d.b3(e,this._v0[2],this._v1[2],this._v2[2],this._v3[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,v3:this._v3,t:this._t}}}class bu extends Gc{constructor(e,t={}){super(e,t),this._cachedLengths=[],this._dirty=!0,this._curves=[],this._t=0,this._dirtySubs=[],this._destroyedSubs=[],this.curves=t.curves||[],this.t=t.t}addCurve(e){this._curves.push(e),this._dirty=!0}set curves(e){var t,i,s;for(e=e||[],i=0,s=this._curves.length;i1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}get length(){var e=this._getCurveLengths();return e[e.length-1]}getPoint(e){for(var t,i=e*this.length,s=this._getCurveLengths(),r=0;r=i){var o=1-(s[r]-i)/(t=this._curves[r]).length;return t.getPointAt(o)}r++}return null}_getCurveLengths(){if(!this._dirty)return this._cachedLengths;var e,t=[],i=0,s=this._curves.length;for(e=0;e1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=d.vec3();return t[0]=d.b2(e,this._v0[0],this._v1[0],this._v2[0]),t[1]=d.b2(e,this._v0[1],this._v1[1],this._v2[1]),t[2]=d.b2(e,this._v0[2],this._v1[2],this._v2[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,t:this._t}}}class Bu extends bc{constructor(e,t={}){super(e,t)}}class wu extends R{constructor(e,t={}){super(e,t),this._skyboxMesh=new fr(this,{geometry:new zt(this,{primitive:"triangles",positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),background:!0,scale:[2e3,2e3,2e3],rotation:[0,-90,0],material:new Yt(this,{ambient:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],emissive:[1,1,1],emissiveMap:new Xr(this,{src:t.src,flipY:!0,wrapS:"clampToEdge",wrapT:"clampToEdge",encoding:t.encoding||"sRGB"}),backfaces:!0}),visible:!1,pickable:!1,clippable:!1,collidable:!1}),this.size=t.size,this.active=t.active}set size(e){this._size=e||1e3,this._skyboxMesh.scale=[this._size,this._size,this._size]}get size(){return this._size}set active(e){this._skyboxMesh.visible=e}get active(){return this._skyboxMesh.visible}}class xu{transcode(e,t,i={}){}destroy(){}}const Pu=d.vec4(),Cu=d.vec4(),Mu=d.vec3(),Fu=d.vec3(),Eu=d.vec3(),Iu=d.vec4(),Du=d.vec4(),Su=d.vec4();class Tu{constructor(e){this._scene=e}dollyToCanvasPos(e,t,i){let s=!1;const r=this._scene.camera;if(e){const t=d.subVec3(e,r.eye,Mu);s=d.lenVec3(t){this._cameraDirty=!0})),this._onProjMatrix=this._scene.camera.on("projMatrix",(()=>{this._cameraDirty=!0})),this._onTick=this._scene.on("tick",(()=>{this.updatePivotElement(),this.updatePivotSphere()}))}createPivotSphere(){const e=this.getPivotPos(),t=d.vec3();d.decomposeMat4(d.inverseMat4(this._scene.viewer.camera.viewMatrix,d.mat4()),t,d.vec4(),d.vec3());const i=d.distVec3(t,e);let s=Math.tan(Math.PI/500)*i*this._pivotSphereSize;"ortho"==this._scene.camera.projection&&(s/=this._scene.camera.ortho.scale/2),X(e,this._rtcCenter,this._rtcPos),this._pivotSphereGeometry=new qr(this._scene,_r({radius:s})),this._pivotSphere=new fr(this._scene,{geometry:this._pivotSphereGeometry,material:this._pivotSphereMaterial,pickable:!1,position:this._rtcPos,rtcCenter:this._rtcCenter})}destroyPivotSphere(){this._pivotSphere&&(this._pivotSphere.destroy(),this._pivotSphere=null),this._pivotSphereGeometry&&(this._pivotSphereGeometry.destroy(),this._pivotSphereGeometry=null)}updatePivotElement(){const e=this._scene.camera,t=this._scene.canvas;if(this._pivoting&&this._cameraDirty){d.transformPoint3(e.viewMatrix,this.getPivotPos(),this._pivotViewPos),this._pivotViewPos[3]=1,d.transformPoint4(e.projMatrix,this._pivotViewPos,this._pivotProjPos);const i=t.boundary,s=i[2],r=i[3];this._pivotCanvasPos[0]=Math.floor((1+this._pivotProjPos[0]/this._pivotProjPos[3])*s/2),this._pivotCanvasPos[1]=Math.floor((1-this._pivotProjPos[1]/this._pivotProjPos[3])*r/2);let o=t._lastBoundingClientRect;if(!o||t._canvasSizeChanged){const e=t.canvas;o=t._lastBoundingClientRect=e.getBoundingClientRect()}this._pivotElement&&(this._pivotElement.style.left=Math.floor(o.left+this._pivotCanvasPos[0])-this._pivotElement.clientWidth/2+window.scrollX+"px",this._pivotElement.style.top=Math.floor(o.top+this._pivotCanvasPos[1])-this._pivotElement.clientHeight/2+window.scrollY+"px"),this._cameraDirty=!1}}updatePivotSphere(){this._pivoting&&this._pivotSphere&&(X(this.getPivotPos(),this._rtcCenter,this._rtcPos),d.compareVec3(this._rtcPos,this._pivotSphere.position)||(this.destroyPivotSphere(),this.createPivotSphere()))}setPivotElement(e){this._pivotElement=e}enablePivotSphere(e={}){this.destroyPivotSphere(),this._pivotSphereEnabled=!0,e.size&&(this._pivotSphereSize=e.size);const t=e.color||[1,0,0];this._pivotSphereMaterial=new Yt(this._scene,{emissive:t,ambient:t,specular:[0,0,0],diffuse:[0,0,0]})}disablePivotSphere(){this.destroyPivotSphere(),this._pivotSphereEnabled=!1}startPivot(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;const e=this._scene.camera;let t=d.lookAtMat4v(e.eye,e.look,e.worldUp);d.transformPoint3(t,this.getPivotPos(),this._cameraOffset);const i=this.getPivotPos();this._cameraOffset[2]+=d.distVec3(e.eye,i),t=d.inverseMat4(t);const s=d.transformVec3(t,this._cameraOffset),r=d.vec3();if(d.subVec3(e.eye,i,r),d.addVec3(r,s),e.zUp){const e=r[1];r[1]=r[2],r[2]=e}this._radius=d.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}_cameraLookingDownwards(){const e=this._scene.camera,t=d.normalizeVec3(d.subVec3(e.look,e.eye,Ru)),i=d.cross3Vec3(t,e.worldUp,Lu);return d.sqLenVec3(i)<=1e-4}getPivoting(){return this._pivoting}setPivotPos(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}setCanvasPivotPos(e){const t=this._scene.camera,i=Math.abs(d.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),n=[0,0,-1,1],a=d.dotVec4(n,r)/d.dotVec4(n,o),l=ku;t.project.unproject(e,a,Ou,Nu,l);const A=d.normalizeVec3(d.subVec3(l,t.eye,Ru)),h=d.addVec3(t.eye,d.mulVec3Scalar(A,i,Lu),Uu);this.setPivotPos(h)}getPivotPos(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}continuePivot(e,t){if(!this._pivoting)return;if(0===e&&0===t)return;const i=this._scene.camera;var s=-e;const r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=d.clamp(this._polar,.001,Math.PI-.001);const o=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){const e=o[1];o[1]=o[2],o[2]=e}const n=d.lenVec3(d.subVec3(i.look,i.eye,d.vec3())),a=this.getPivotPos();d.addVec3(o,a);let l=d.lookAtMat4v(o,a,i.worldUp);l=d.inverseMat4(l);const A=d.transformVec3(l,this._cameraOffset);l[12]-=A[0],l[13]-=A[1],l[14]-=A[2];const h=[l[8],l[9],l[10]];i.eye=[l[12],l[13],l[14]],d.subVec3(i.eye,d.mulVec3Scalar(h,n),i.look),i.up=[l[4],l[5],l[6]],this.showPivot()}showPivot(){this._shown||(this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility="visible"),this._pivotSphereEnabled&&(this.destroyPivotSphere(),this.createPivotSphere()),this._shown=!0)}hidePivot(){this._shown&&(this._pivotElement&&(this._pivotElement.style.visibility="hidden"),this._pivotSphereEnabled&&this.destroyPivotSphere(),this._shown=!1)}endPivot(){this._pivoting=!1}destroy(){this.destroyPivotSphere(),this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}class Vu{constructor(e,t){this._scene=e.scene,this._cameraControl=e,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=t,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick=!1,this.pickCursorPos=d.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._lastHash=null,this._needFireEvents=0}update(){if(!this._configs.pointerEnabled)return;if(!this.schedulePickEntity&&!this.schedulePickSurface)return;const e=`${~~this.pickCursorPos[0]}-${~~this.pickCursorPos[1]}-${this.scheduleSnapOrPick}-${this.schedulePickSurface}-${this.schedulePickEntity}`;if(this._lastHash===e)return;this.picked=!1,this.pickedSurface=!1,this.snappedOrPicked=!1,this.hoveredSnappedOrSurfaceOff=!1;const t=this._cameraControl.hasSubs("hoverSurface");if(this.scheduleSnapOrPick){const e=this._scene.pick({canvasPos:this.pickCursorPos,snapRadius:this._configs.snapRadius,snapToVertex:this._configs.snapToVertex,snapToEdge:this._configs.snapToEdge});e&&(e.snappedToEdge||e.snappedToVertex)?(this.snapPickResult=e,this.snappedOrPicked=!0,this._needFireEvents++):(this.schedulePickSurface=!0,this.snapPickResult=null)}if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){const e=this.pickResult.canvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents+=t?1:0,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.hoveredSnappedOrSurfaceOff=!0,void(this.scheduleSnapOrPick=!1)}if(this.schedulePickEntity&&this.pickResult&&(this.pickResult.canvasPos||this.pickResult.snappedCanvasPos)){const e=this.pickResult.canvasPos||this.pickResult.snappedCanvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface||this.scheduleSnapOrPick&&!this.snapPickResult?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult?(this.picked=!0,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.pickedSurface=!0,this._needFireEvents++):this.scheduleSnapOrPick&&(this.hoveredSnappedOrSurfaceOff=!0,this._needFireEvents++)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents++)),this.scheduleSnapOrPick=!1,this.schedulePickEntity=!1,this.schedulePickSurface=!1}fireEvents(){if(0!==this._needFireEvents){if(this.hoveredSnappedOrSurfaceOff&&this._cameraControl.fire("hoverSnapOrSurfaceOff",{canvasPos:this.pickCursorPos,pointerPos:this.pickCursorPos},!0),this.snappedOrPicked)if(this.snapPickResult){const e=new Le;e.entity=this.snapPickResult.entity,e.snappedToVertex=this.snapPickResult.snappedToVertex,e.snappedToEdge=this.snapPickResult.snappedToEdge,e.worldPos=this.snapPickResult.worldPos,e.canvasPos=this.pickCursorPos,e.snappedCanvasPos=this.snapPickResult.snappedCanvasPos,this._cameraControl.fire("hoverSnapOrSurface",e,!0),this.snapPickResult=null}else this._cameraControl.fire("hoverSnapOrSurface",this.pickResult,!0);if(this.picked&&this.pickResult&&(this.pickResult.entity||this.pickResult.worldPos)){if(this.pickResult.entity){const e=this.pickResult.entity.id;this._lastPickedEntityId!==e&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire("hoverEnter",this.pickResult,!0),this._lastPickedEntityId=e)}this._cameraControl.fire("hover",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire("hoverSurface",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire("hoverOff",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=0}}}const Hu=d.vec2();class ju{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController;let n,a,l,A=0,h=0,c=0,u=0,p=!1;const f=d.vec3();let g=!0;const m=this._scene.canvas.canvas,_=[];function v(e=!0){m.style.cursor="move",A=s.pointerCanvasPos[0],h=s.pointerCanvasPos[1],c=s.pointerCanvasPos[0],u=s.pointerCanvasPos[1],e&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(p=!0,f.set(o.pickResult.worldPos)):p=!1)}document.addEventListener("keydown",this._documentKeyDownHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!0}),document.addEventListener("keyup",this._documentKeyUpHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!1}),m.addEventListener("mousedown",this._mouseDownHandler=t=>{if(i.active&&i.pointerEnabled)switch(t.which){case 1:_[e.input.KEY_SHIFT]||i.planView?(n=!0,v()):(n=!0,v(!1));break;case 2:a=!0,v();break;case 3:l=!0,i.panRightClick&&v()}}),document.addEventListener("mousemove",this._documentMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(!n&&!a&&!l)return;const o=e.canvas.boundary,c=o[2],u=o[3],g=s.pointerCanvasPos[0],m=s.pointerCanvasPos[1],v=_[e.input.KEY_SHIFT]||i.planView||!i.panRightClick&&a||i.panRightClick&&l,b=document.pointerLockElement?t.movementX:g-A,y=document.pointerLockElement?t.movementY:m-h;if(v){const t=e.camera;if("perspective"===t.projection){const i=Math.abs(p?d.lenVec3(d.subVec3(f,e.camera.eye,[])):e.camera.eyeLookDist)*Math.tan(t.perspective.fov/2*Math.PI/180);r.panDeltaX+=1.5*b*i/u,r.panDeltaY+=1.5*y*i/u}else r.panDeltaX+=.5*t.ortho.scale*(b/u),r.panDeltaY+=.5*t.ortho.scale*(y/u)}else!n||a||l||i.planView||(i.firstPerson?(r.rotateDeltaY-=b/c*i.dragRotationRate/2,r.rotateDeltaX+=y/u*(i.dragRotationRate/4)):(r.rotateDeltaY-=b/c*(1.5*i.dragRotationRate),r.rotateDeltaX+=y/u*(1.5*i.dragRotationRate)));A=g,h=m}),m.addEventListener("mousemove",this._canvasMouseMoveHandler=e=>{i.active&&i.pointerEnabled&&s.mouseover&&(g=!0)}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{if(i.active&&i.pointerEnabled)switch(e.which){case 1:case 2:case 3:n=!1,a=!1,l=!1}}),m.addEventListener("mouseup",this._mouseUpHandler=e=>{if(i.active&&i.pointerEnabled){if(3===e.which){!function(e,t){if(e){let i=e.target,s=0,r=0,o=0,n=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,o+=i.scrollLeft,n+=i.scrollTop,i=i.offsetParent;t[0]=e.pageX+o-s,t[1]=e.pageY+n-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,Hu);const i=Hu[0],s=Hu[1];Math.abs(i-c)<3&&Math.abs(s-u)<3&&t.cameraControl.fire("rightClick",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:Hu,event:e},!0)}m.style.removeProperty("cursor")}}),m.addEventListener("mouseenter",this._mouseEnterHandler=()=>{i.active&&i.pointerEnabled});const b=1/60;let y=null;m.addEventListener("wheel",this._mouseWheelHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=performance.now()/1e3;var o=null!==y?t-y:0;y=t,o>.05&&(o=.05),o{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const n=r._isKeyDownForAction(r.AXIS_VIEW_RIGHT),a=r._isKeyDownForAction(r.AXIS_VIEW_BACK),l=r._isKeyDownForAction(r.AXIS_VIEW_LEFT),A=r._isKeyDownForAction(r.AXIS_VIEW_FRONT),h=r._isKeyDownForAction(r.AXIS_VIEW_TOP),c=r._isKeyDownForAction(r.AXIS_VIEW_BOTTOM);if(!(n||a||l||A||h||c))return;const u=e.aabb,p=d.getAABB3Diag(u);d.getAABB3Center(u,Gu);const f=Math.abs(p/Math.tan(t.cameraFlight.fitFOV*d.DEGTORAD)),g=1.1*p;Ju.orthoScale=g,n?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldRight,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):a?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldForward,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):l?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldRight,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):A?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldForward,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):h?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldUp,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(d.normalizeVec3(d.mulVec3Scalar(o.worldForward,1,Wu),Ku))):c&&(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldUp,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(d.normalizeVec3(d.mulVec3Scalar(o.worldForward,-1,Wu)))),!i.firstPerson&&i.followPointer&&t.pivotController.setPivotPos(Gu),t.cameraFlight.duration>0?t.cameraFlight.flyTo(Ju,(()=>{t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot()})):(t.cameraFlight.jumpTo(Ju),t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot())}))}reset(){}destroy(){this._scene.input.off(this._onSceneKeyDown)}}class Zu{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=t.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;let l=!1,A=!1;const h=this._scene.canvas.canvas,c=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i&&i.entity?i.entity.aabb:e.aabb;if(s){const i=e.camera;d.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})},u=e.tickify(this._canvasMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(l||A)return;const r=a.hasSubs("hover"),n=a.hasSubs("hoverEnter"),h=a.hasSubs("hoverOut"),c=a.hasSubs("hoverOff"),u=a.hasSubs("hoverSurface"),d=a.hasSubs("hoverSnapOrSurface");if(r||n||h||c||u||d)if(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=u,o.scheduleSnapOrPick=d,o.update(),o.pickResult){if(o.pickResult.entity){const t=o.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),a.fire("hoverEnter",o.pickResult,!0),this._lastPickedEntityId=t)}a.fire("hover",o.pickResult,!0),(o.pickResult.worldPos||o.pickResult.snappedWorldPos)&&a.fire("hoverSurface",o.pickResult,!0)}else void 0!==this._lastPickedEntityId&&(a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),a.fire("hoverOff",{canvasPos:o.pickCursorPos},!0)});h.addEventListener("mousemove",u),h.addEventListener("mousedown",this._canvasMouseDownHandler=t=>{1===t.which&&(l=!0),3===t.which&&(A=!0);if(1===t.which&&i.active&&i.pointerEnabled&&(s.mouseDownClientX=t.clientX,s.mouseDownClientY=t.clientY,s.mouseDownCursorX=s.pointerCanvasPos[0],s.mouseDownCursorY=s.pointerCanvasPos[1],!i.firstPerson&&i.followPointer&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),1===t.which))){const t=o.pickResult;t&&t.worldPos?(n.setPivotPos(t.worldPos),n.startPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),n.startPivot())}}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{1===e.which&&(l=!1),3===e.which&&(A=!1),n.getPivoting()&&n.endPivot()}),h.addEventListener("mouseup",this._canvasMouseUpHandler=r=>{if(!i.active||!i.pointerEnabled)return;if(!(1===r.which))return;if(n.hidePivot(),Math.abs(r.clientX-s.mouseDownClientX)>3||Math.abs(r.clientY-s.mouseDownClientY)>3)return;const l=a.hasSubs("picked"),A=a.hasSubs("pickedNothing"),h=a.hasSubs("pickedSurface"),u=a.hasSubs("doublePicked"),p=a.hasSubs("doublePickedSurface"),f=a.hasSubs("doublePickedNothing");if(!(i.doublePickFlyTo||u||p||f))return(l||A||h)&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=h,o.update(),o.pickResult?(a.fire("picked",o.pickResult,!0),o.pickedSurface&&a.fire("pickedSurface",o.pickResult,!0)):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0)),void(this._clicks=0);if(this._clicks++,1===this._clicks){o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo,o.schedulePickSurface=h,o.update();const e=o.pickResult,r=o.pickedSurface;this._timeout=setTimeout((()=>{e?(a.fire("picked",e,!0),r&&(a.fire("pickedSurface",e,!0),!i.firstPerson&&i.followPointer&&(t.pivotController.setPivotPos(e.worldPos),t.pivotController.startPivot()&&t.pivotController.showPivot()))):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0),this._clicks=0}),i.doubleClickTimeFrame)}else{if(null!==this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null),o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo||u||p,o.schedulePickSurface=o.schedulePickEntity&&p,o.update(),o.pickResult){if(a.fire("doublePicked",o.pickResult,!0),o.pickedSurface&&a.fire("doublePickedSurface",o.pickResult,!0),i.doublePickFlyTo&&(c(o.pickResult),!i.firstPerson&&i.followPointer)){const e=o.pickResult.entity.aabb,i=d.getAABB3Center(e);t.pivotController.setPivotPos(i),t.pivotController.startPivot()&&t.pivotController.showPivot()}}else if(a.fire("doublePickedNothing",{canvasPos:s.pointerCanvasPos},!0),i.doublePickFlyTo&&(c(),!i.firstPerson&&i.followPointer)){const i=e.aabb,s=d.getAABB3Center(i);t.pivotController.setPivotPos(s),t.pivotController.startPivot()&&t.pivotController.showPivot()}this._clicks=0}},!1)}reset(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("mousemove",this._canvasMouseMoveHandler),e.removeEventListener("mousedown",this._canvasMouseDownHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}class qu{constructor(e,t,i,s,r){this._scene=e;const o=e.input,n=[],a=e.canvas.canvas;let l=!0;this._onSceneMouseMove=o.on("mousemove",(()=>{l=!0})),this._onSceneKeyDown=o.on("keydown",(t=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&s.mouseover&&(n[t]=!0,t===o.KEY_SHIFT&&(a.style.cursor="move"))})),this._onSceneKeyUp=o.on("keyup",(s=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&(n[s]=!1,s===o.KEY_SHIFT&&(a.style.cursor=null),t.pivotController.getPivoting()&&t.pivotController.endPivot())})),this._onTick=e.on("tick",(a=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const A=t.cameraControl,h=a.deltaTime/1e3;if(!i.planView){const e=A._isKeyDownForAction(A.ROTATE_Y_POS,n),s=A._isKeyDownForAction(A.ROTATE_Y_NEG,n),o=A._isKeyDownForAction(A.ROTATE_X_POS,n),a=A._isKeyDownForAction(A.ROTATE_X_NEG,n),l=h*i.keyboardRotationRate;(e||s||o||a)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),e?r.rotateDeltaY+=l:s&&(r.rotateDeltaY-=l),o?r.rotateDeltaX+=l:a&&(r.rotateDeltaX-=l),!i.firstPerson&&i.followPointer&&t.pivotController.startPivot())}if(!n[o.KEY_CTRL]&&!n[o.KEY_ALT]){const e=A._isKeyDownForAction(A.DOLLY_BACKWARDS,n),o=A._isKeyDownForAction(A.DOLLY_FORWARDS,n);if(e||o){const n=h*i.keyboardDollyRate;!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),o?r.dollyDelta-=n:e&&(r.dollyDelta+=n),l&&(s.followPointerDirty=!0,l=!1)}}const c=A._isKeyDownForAction(A.PAN_FORWARDS,n),u=A._isKeyDownForAction(A.PAN_BACKWARDS,n),d=A._isKeyDownForAction(A.PAN_LEFT,n),p=A._isKeyDownForAction(A.PAN_RIGHT,n),f=A._isKeyDownForAction(A.PAN_UP,n),g=A._isKeyDownForAction(A.PAN_DOWN,n),m=(n[o.KEY_ALT]?.3:1)*h*i.keyboardPanRate;(c||u||d||p||f||g)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),g?r.panDeltaY+=m:f&&(r.panDeltaY+=-m),p?r.panDeltaX+=-m:d&&(r.panDeltaX+=m),u?r.panDeltaZ+=m:c&&(r.panDeltaZ+=-m))}))}reset(){}destroy(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}const $u=d.vec3();class ed{constructor(e,t,i,s,r){this._scene=e;const o=e.camera,n=t.pickController,a=t.pivotController,l=t.panController;let A=1,h=1,c=null;this._onTick=e.on("tick",(()=>{if(!i.active||!i.pointerEnabled)return;let t="default";if(Math.abs(r.dollyDelta)<.001&&(r.dollyDelta=0),Math.abs(r.rotateDeltaX)<.001&&(r.rotateDeltaX=0),Math.abs(r.rotateDeltaY)<.001&&(r.rotateDeltaY=0),0===r.rotateDeltaX&&0===r.rotateDeltaY||(r.dollyDelta=0),i.followPointer){if(--A<=0&&(A=1,0!==r.dollyDelta)){if(0===r.rotateDeltaY&&0===r.rotateDeltaX&&i.followPointer&&s.followPointerDirty&&(n.pickCursorPos=s.pointerCanvasPos,n.schedulePickSurface=!0,n.update(),n.pickResult&&n.pickResult.worldPos?c=n.pickResult.worldPos:(h=1,c=null),s.followPointerDirty=!1),c){const t=Math.abs(d.lenVec3(d.subVec3(c,e.camera.eye,$u)));h=t/i.dollyProximityThreshold}h{s.mouseover=!0}),o.addEventListener("mouseleave",this._mouseLeaveHandler=()=>{s.mouseover=!1,o.style.cursor=null}),document.addEventListener("mousemove",this._mouseMoveHandler=e=>{id(e,o,s.pointerCanvasPos)}),o.addEventListener("mousedown",this._mouseDownHandler=e=>{i.active&&i.pointerEnabled&&(id(e,o,s.pointerCanvasPos),s.mouseover=!0)}),o.addEventListener("mouseup",this._mouseUpHandler=e=>{i.active&&i.pointerEnabled})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener("mousemove",this._mouseMoveHandler),e.removeEventListener("mouseenter",this._mouseEnterHandler),e.removeEventListener("mouseleave",this._mouseLeaveHandler),e.removeEventListener("mousedown",this._mouseDownHandler),e.removeEventListener("mouseup",this._mouseUpHandler)}}function id(e,t,i){if(e){const{left:s,top:r}=t.getBoundingClientRect();i[0]=e.clientX-s,i[1]=e.clientY-r}else e=window.event,i[0]=e.x,i[1]=e.y;return i}const sd=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class rd{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=d.vec2(),l=d.vec2(),A=d.vec2(),h=d.vec2(),c=[],u=this._scene.canvas.canvas;let p=0,f=!1;this._onTick=e.on("tick",(()=>{f=!1})),u.addEventListener("touchstart",this._canvasTouchStartHandler=t=>{if(!i.active||!i.pointerEnabled)return;t.preventDefault();const r=t.touches,l=t.changedTouches;for(s.touchStartTime=Date.now(),1===r.length&&1===l.length&&(sd(r[0],a),i.followPointer&&(o.pickCursorPos=a,o.schedulePickSurface=!0,o.update(),i.planView||(o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(n.setPivotPos(o.pickResult.worldPos),!i.firstPerson&&n.startPivot()&&n.showPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),!i.firstPerson&&n.startPivot()&&n.showPivot()))));c.length{n.getPivoting()&&n.endPivot()}),u.addEventListener("touchmove",this._canvasTouchMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(t.stopPropagation(),t.preventDefault(),f)return;f=!0;const n=e.canvas.boundary,a=n[2],u=n[3],g=t.touches;if(t.touches.length===p){if(1===p){sd(g[0],l),d.subVec2(l,c[0],h);const t=h[0],o=h[1];if(null!==s.longTouchTimeout&&(Math.abs(t)>i.longTapRadius||Math.abs(o)>i.longTapRadius)&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),i.planView){const s=e.camera;if("perspective"===s.projection){const n=Math.abs(e.camera.eyeLookDist)*Math.tan(s.perspective.fov/2*Math.PI/180);r.panDeltaX+=t*n/u*i.touchPanRate,r.panDeltaY+=o*n/u*i.touchPanRate}else r.panDeltaX+=.5*s.ortho.scale*(t/u)*i.touchPanRate,r.panDeltaY+=.5*s.ortho.scale*(o/u)*i.touchPanRate}else r.rotateDeltaY-=t/a*(1*i.dragRotationRate),r.rotateDeltaX+=o/u*(1.5*i.dragRotationRate)}else if(2===p){const t=g[0],n=g[1];sd(t,l),sd(n,A);const a=d.geometricMeanVec2(c[0],c[1]),h=d.geometricMeanVec2(l,A),p=d.vec2();d.subVec2(a,h,p);const f=p[0],m=p[1],_=e.camera,v=d.distVec2([t.pageX,t.pageY],[n.pageX,n.pageY]),b=(d.distVec2(c[0],c[1])-v)*i.touchDollyRate;if(r.dollyDelta=b,Math.abs(b)<1)if("perspective"===_.projection){const t=o.pickResult?o.pickResult.worldPos:e.center,s=Math.abs(d.lenVec3(d.subVec3(t,e.camera.eye,[])))*Math.tan(_.perspective.fov/2*Math.PI/180);r.panDeltaX-=f*s/u*i.touchPanRate,r.panDeltaY-=m*s/u*i.touchPanRate}else r.panDeltaX-=.5*_.ortho.scale*(f/u)*i.touchPanRate,r.panDeltaY-=.5*_.ortho.scale*(m/u)*i.touchPanRate;s.pointerCanvasPos=h}for(let e=0;e{let s;i&&i.worldPos&&(s=i.worldPos);const r=i?i.entity.aabb:e.aabb;if(s){const i=e.camera;d.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})};u.addEventListener("touchstart",this._canvasTouchStartHandler=e=>{if(!i.active||!i.pointerEnabled)return;null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null);const r=e.touches,o=e.changedTouches;if(a=Date.now(),1===r.length&&1===o.length){h=a,od(r[0],A);const o=A[0],n=A[1],l=r[0].pageX,c=r[0].pageY;s.longTouchTimeout=setTimeout((()=>{t.cameraControl.fire("rightClick",{pagePos:[Math.round(l),Math.round(c)],canvasPos:[Math.round(o),Math.round(n)],event:e},!0),s.longTouchTimeout=null}),i.longTapTimeout)}else h=-1;for(;l.length{if(!i.active||!i.pointerEnabled)return;const t=Date.now(),r=e.touches,a=e.changedTouches,u=n.hasSubs("pickedSurface");null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),0===r.length&&1===a.length&&h>-1&&t-h<150&&(c>-1&&h-c<325?(od(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("doublePicked",o.pickResult),o.pickedSurface&&n.fire("doublePickedSurface",o.pickResult),i.doublePickFlyTo&&p(o.pickResult)):(n.fire("doublePickedNothing"),i.doublePickFlyTo&&p()),c=-1):d.distVec2(l[0],A)<4&&(od(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("picked",o.pickResult),o.pickedSurface&&n.fire("pickedSurface",o.pickResult)):n.fire("pickedNothing"),c=t),h=-1),l.length=r.length;for(let e=0,t=r.length;e{e.preventDefault()},this._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:"qwerty",navMode:"orbit",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,doubleClickTimeFrame:250,snapToVertex:true,snapToEdge:true,snapRadius:30,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},this._states={pointerCanvasPos:d.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:d.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},this._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};const i=this.scene;this._controllers={cameraControl:this,pickController:new Vu(this,this._configs),pivotController:new Qu(i,this._configs),panController:new Tu(i),cameraFlight:new $c(this,{duration:.5})},this._handlers=[new td(this.scene,this._controllers,this._configs,this._states,this._updates),new rd(this.scene,this._controllers,this._configs,this._states,this._updates),new ju(this.scene,this._controllers,this._configs,this._states,this._updates),new Yu(this.scene,this._controllers,this._configs,this._states,this._updates),new Zu(this.scene,this._controllers,this._configs,this._states,this._updates),new nd(this.scene,this._controllers,this._configs,this._states,this._updates),new qu(this.scene,this._controllers,this._configs,this._states,this._updates)],this._cameraUpdater=new ed(this.scene,this._controllers,this._configs,this._states,this._updates),this.navMode=t.navMode,t.planView&&(this.planView=t.planView),this.constrainVertical=t.constrainVertical,t.keyboardLayout?this.keyboardLayout=t.keyboardLayout:this.keyMap=t.keyMap,this.doublePickFlyTo=t.doublePickFlyTo,this.panRightClick=t.panRightClick,this.active=t.active,this.followPointer=t.followPointer,this.rotationInertia=t.rotationInertia,this.keyboardPanRate=t.keyboardPanRate,this.touchPanRate=t.touchPanRate,this.keyboardRotationRate=t.keyboardRotationRate,this.dragRotationRate=t.dragRotationRate,this.touchDollyRate=t.touchDollyRate,this.dollyInertia=t.dollyInertia,this.dollyProximityThreshold=t.dollyProximityThreshold,this.dollyMinSpeed=t.dollyMinSpeed,this.panInertia=t.panInertia,this.pointerEnabled=!0,this.keyboardDollyRate=t.keyboardDollyRate,this.mouseWheelDollyRate=t.mouseWheelDollyRate}set keyMap(e){if(e=e||"qwerty",y.isString(e)){const t=this.scene.input,i={};switch(e){default:this.error("Unsupported value for 'keyMap': "+e+" defaulting to 'qwerty'");case"qwerty":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case"azerty":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{const t=e;this._keyMap=t}}get keyMap(){return this._keyMap}_isKeyDownForAction(e,t){const i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(let e=0,s=i.length;e0?dd(t):null,n=i&&i.length>0?dd(i):null,a=e=>{if(!e)return;var t=!0;(n&&n[e.type]||o&&!o[e.type])&&(t=!1),t&&s.push(e.id);const i=e.children;if(i)for(var r=0,l=i.length;r * Copyright (c) 2022 Niklas von Hertzen @@ -34,4 +34,4 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */var pd=function(e,t){return pd=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},pd(e,t)};function fd(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}pd(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var gd=function(){return gd=Object.assign||function(e){for(var t,i=1,s=arguments.length;i0&&r[r.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=55296&&r<=56319&&i>10),n%1024+56320)),(r+1===i||s.length>16384)&&(o+=String.fromCharCode.apply(String,s),s.length=0)}return o},xd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Pd="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cd=0;Cd=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Sd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Td="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Rd=0;Rd>4,h[l++]=(15&s)<<4|r>>2,h[l++]=(3&r)<<6|63&o;return A}(e),n=Array.isArray(o)?function(e){for(var t=e.length,i=[],s=0;s0;){var n=s[--o];if(Array.isArray(e)?-1!==e.indexOf(n):e===n)for(var a=i;a<=s.length;){var l;if((l=s[++a])===t)return!0;if(l!==Ld)break}if(n!==Ld)break}return!1},fp=function(e,t){for(var i=e;i>=0;){var s=t[i];if(s!==Ld)return s;i--}return 0},gp=function(e,t,i,s,r){if(0===i[s])return"×";var o=s-1;if(Array.isArray(r)&&!0===r[o])return"×";var n=o-1,a=o+1,l=t[o],A=n>=0?t[n]:0,h=t[a];if(2===l&&3===h)return"×";if(-1!==lp.indexOf(l))return"!";if(-1!==lp.indexOf(h))return"×";if(-1!==Ap.indexOf(h))return"×";if(8===fp(o,t))return"÷";if(11===np.get(e[o]))return"×";if((l===Yd||l===Zd)&&11===np.get(e[a]))return"×";if(7===l||7===h)return"×";if(9===l)return"×";if(-1===[Ld,Ud,kd].indexOf(l)&&9===h)return"×";if(-1!==[Od,Nd,Qd,Gd,Xd].indexOf(h))return"×";if(fp(o,t)===jd)return"×";if(pp(23,jd,o,t))return"×";if(pp([Od,Nd],Hd,o,t))return"×";if(pp(12,12,o,t))return"×";if(l===Ld)return"÷";if(23===l||23===h)return"×";if(16===h||16===l)return"÷";if(-1!==[Ud,kd,Hd].indexOf(h)||14===l)return"×";if(36===A&&-1!==dp.indexOf(l))return"×";if(l===Xd&&36===h)return"×";if(h===Vd)return"×";if(-1!==ap.indexOf(h)&&l===zd||-1!==ap.indexOf(l)&&h===zd)return"×";if(l===Kd&&-1!==[ep,Yd,Zd].indexOf(h)||-1!==[ep,Yd,Zd].indexOf(l)&&h===Wd)return"×";if(-1!==ap.indexOf(l)&&-1!==hp.indexOf(h)||-1!==hp.indexOf(l)&&-1!==ap.indexOf(h))return"×";if(-1!==[Kd,Wd].indexOf(l)&&(h===zd||-1!==[jd,kd].indexOf(h)&&t[a+1]===zd)||-1!==[jd,kd].indexOf(l)&&h===zd||l===zd&&-1!==[zd,Xd,Gd].indexOf(h))return"×";if(-1!==[zd,Xd,Gd,Od,Nd].indexOf(h))for(var c=o;c>=0;){if((u=t[c])===zd)return"×";if(-1===[Xd,Gd].indexOf(u))break;c--}if(-1!==[Kd,Wd].indexOf(h))for(c=-1!==[Od,Nd].indexOf(l)?n:o;c>=0;){var u;if((u=t[c])===zd)return"×";if(-1===[Xd,Gd].indexOf(u))break;c--}if(tp===l&&-1!==[tp,ip,qd,$d].indexOf(h)||-1!==[ip,qd].indexOf(l)&&-1!==[ip,sp].indexOf(h)||-1!==[sp,$d].indexOf(l)&&h===sp)return"×";if(-1!==up.indexOf(l)&&-1!==[Vd,Wd].indexOf(h)||-1!==up.indexOf(h)&&l===Kd)return"×";if(-1!==ap.indexOf(l)&&-1!==ap.indexOf(h))return"×";if(l===Gd&&-1!==ap.indexOf(h))return"×";if(-1!==ap.concat(zd).indexOf(l)&&h===jd&&-1===op.indexOf(e[a])||-1!==ap.concat(zd).indexOf(h)&&l===Nd)return"×";if(41===l&&41===h){for(var d=i[o],p=1;d>0&&41===t[--d];)p++;if(p%2!=0)return"×"}return l===Yd&&h===Zd?"×":"÷"},mp=function(e,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var i=function(e,t){void 0===t&&(t="strict");var i=[],s=[],r=[];return e.forEach((function(e,o){var n=np.get(e);if(n>50?(r.push(!0),n-=50):r.push(!1),-1!==["normal","auto","loose"].indexOf(t)&&-1!==[8208,8211,12316,12448].indexOf(e))return s.push(o),i.push(16);if(4===n||11===n){if(0===o)return s.push(o),i.push(Jd);var a=i[o-1];return-1===cp.indexOf(a)?(s.push(s[o-1]),i.push(a)):(s.push(o),i.push(Jd))}return s.push(o),31===n?i.push("strict"===t?Hd:ep):n===rp||29===n?i.push(Jd):43===n?e>=131072&&e<=196605||e>=196608&&e<=262141?i.push(ep):i.push(Jd):void i.push(n)})),[s,i,r]}(e,t.lineBreak),s=i[0],r=i[1],o=i[2];"break-all"!==t.wordBreak&&"break-word"!==t.wordBreak||(r=r.map((function(e){return-1!==[zd,Jd,rp].indexOf(e)?ep:e})));var n="keep-all"===t.wordBreak?o.map((function(t,i){return t&&e[i]>=19968&&e[i]<=40959})):void 0;return[s,r,n]},_p=function(){function e(e,t,i,s){this.codePoints=e,this.required="!"===t,this.start=i,this.end=s}return e.prototype.slice=function(){return wd.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),vp=function(e){return e>=48&&e<=57},bp=function(e){return vp(e)||e>=65&&e<=70||e>=97&&e<=102},yp=function(e){return 10===e||9===e||32===e},Bp=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},wp=function(e){return Bp(e)||vp(e)||45===e},xp=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},Pp=function(e,t){return 92===e&&10!==t},Cp=function(e,t,i){return 45===e?Bp(t)||Pp(t,i):!!Bp(e)||!(92!==e||!Pp(e,t))},Mp=function(e,t,i){return 43===e||45===e?!!vp(t)||46===t&&vp(i):vp(46===e?t:e)},Fp=function(e){var t=0,i=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(i=-1),t++);for(var s=[];vp(e[t]);)s.push(e[t++]);var r=s.length?parseInt(wd.apply(void 0,s),10):0;46===e[t]&&t++;for(var o=[];vp(e[t]);)o.push(e[t++]);var n=o.length,a=n?parseInt(wd.apply(void 0,o),10):0;69!==e[t]&&101!==e[t]||t++;var l=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(l=-1),t++);for(var A=[];vp(e[t]);)A.push(e[t++]);var h=A.length?parseInt(wd.apply(void 0,A),10):0;return i*(r+a*Math.pow(10,-n))*Math.pow(10,l*h)},Ep={type:2},Ip={type:3},Dp={type:4},Sp={type:13},Tp={type:8},Rp={type:21},Lp={type:9},Up={type:10},kp={type:11},Op={type:12},Np={type:14},Qp={type:23},Vp={type:1},Hp={type:25},jp={type:24},Gp={type:26},zp={type:27},Wp={type:28},Kp={type:29},Xp={type:31},Jp={type:32},Yp=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(Bd(e))},e.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==Jp;)e.push(t),t=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var t=this.peekCodePoint(0),i=this.peekCodePoint(1),s=this.peekCodePoint(2);if(wp(t)||Pp(i,s)){var r=Cp(t,i,s)?2:1;return{type:5,value:this.consumeName(),flags:r}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Sp;break;case 39:return this.consumeStringToken(39);case 40:return Ep;case 41:return Ip;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Np;break;case 43:if(Mp(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return Dp;case 45:var o=e,n=this.peekCodePoint(0),a=this.peekCodePoint(1);if(Mp(o,n,a))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(Cp(o,n,a))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(45===n&&62===a)return this.consumeCodePoint(),this.consumeCodePoint(),jp;break;case 46:if(Mp(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var l=this.consumeCodePoint();if(42===l&&47===(l=this.consumeCodePoint()))return this.consumeToken();if(-1===l)return this.consumeToken()}break;case 58:return Gp;case 59:return zp;case 60:if(33===this.peekCodePoint(0)&&45===this.peekCodePoint(1)&&45===this.peekCodePoint(2))return this.consumeCodePoint(),this.consumeCodePoint(),Hp;break;case 64:var A=this.peekCodePoint(0),h=this.peekCodePoint(1),c=this.peekCodePoint(2);if(Cp(A,h,c))return{type:7,value:this.consumeName()};break;case 91:return Wp;case 92:if(Pp(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return Kp;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Tp;break;case 123:return kp;case 125:return Op;case 117:case 85:var u=this.peekCodePoint(0),d=this.peekCodePoint(1);return 43!==u||!bp(d)&&63!==d||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Lp;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),Rp;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Up;break;case-1:return Jp}return yp(e)?(this.consumeWhiteSpace(),Xp):vp(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):Bp(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:wd(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();bp(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var i=!1;63===t&&e.length<6;)e.push(t),t=this.consumeCodePoint(),i=!0;if(i)return{type:30,start:parseInt(wd.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(wd.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var s=parseInt(wd.apply(void 0,e),16);if(45===this.peekCodePoint(0)&&bp(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var r=[];bp(t)&&r.length<6;)r.push(t),t=this.consumeCodePoint();return{type:30,start:s,end:parseInt(wd.apply(void 0,r),16)}}return{type:30,start:s,end:s}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),-1===this.peekCodePoint(0))return{type:22,value:""};var t=this.peekCodePoint(0);if(39===t||34===t){var i=this.consumeStringToken(this.consumeCodePoint());return 0===i.type&&(this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:i.value}):(this.consumeBadUrlRemnants(),Qp)}for(;;){var s=this.consumeCodePoint();if(-1===s||41===s)return{type:22,value:wd.apply(void 0,e)};if(yp(s))return this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:wd.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Qp);if(34===s||39===s||40===s||xp(s))return this.consumeBadUrlRemnants(),Qp;if(92===s){if(!Pp(s,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Qp;e.push(this.consumeEscapedCodePoint())}else e.push(s)}},e.prototype.consumeWhiteSpace=function(){for(;yp(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||-1===e)return;Pp(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var t="";e>0;){var i=Math.min(5e4,e);t+=wd.apply(void 0,this._value.splice(0,i)),e-=i}return this._value.shift(),t},e.prototype.consumeStringToken=function(e){for(var t="",i=0;;){var s=this._value[i];if(-1===s||void 0===s||s===e)return{type:0,value:t+=this.consumeStringSlice(i)};if(10===s)return this._value.splice(0,i),Vp;if(92===s){var r=this._value[i+1];-1!==r&&void 0!==r&&(10===r?(t+=this.consumeStringSlice(i),i=-1,this._value.shift()):Pp(s,r)&&(t+=this.consumeStringSlice(i),t+=wd(this.consumeEscapedCodePoint()),i=-1))}i++}},e.prototype.consumeNumber=function(){var e=[],t=4,i=this.peekCodePoint(0);for(43!==i&&45!==i||e.push(this.consumeCodePoint());vp(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0);var s=this.peekCodePoint(1);if(46===i&&vp(s))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;vp(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0),s=this.peekCodePoint(1);var r=this.peekCodePoint(2);if((69===i||101===i)&&((43===s||45===s)&&vp(r)||vp(s)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;vp(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[Fp(e),t]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],i=e[1],s=this.peekCodePoint(0),r=this.peekCodePoint(1),o=this.peekCodePoint(2);return Cp(s,r,o)?{type:15,number:t,flags:i,unit:this.consumeName()}:37===s?(this.consumeCodePoint(),{type:16,number:t,flags:i}):{type:17,number:t,flags:i}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(bp(e)){for(var t=wd(e);bp(this.peekCodePoint(0))&&t.length<6;)t+=wd(this.consumeCodePoint());yp(this.peekCodePoint(0))&&this.consumeCodePoint();var i=parseInt(t,16);return 0===i||function(e){return e>=55296&&e<=57343}(i)||i>1114111?65533:i}return-1===e?65533:e},e.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(wp(t))e+=wd(t);else{if(!Pp(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),e;e+=wd(this.consumeEscapedCodePoint())}}},e}(),Zp=function(){function e(e){this._tokens=e}return e.create=function(t){var i=new Yp;return i.write(t),new e(i.read())},e.parseValue=function(t){return e.create(t).parseComponentValue()},e.parseValues=function(t){return e.create(t).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(32===t.type)return e;e.push(t),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},i=this.consumeToken();;){if(32===i.type||af(i,e))return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue()),i=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var i=this.consumeToken();if(32===i.type||3===i.type)return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?Jp:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),qp=function(e){return 15===e.type},$p=function(e){return 17===e.type},ef=function(e){return 20===e.type},tf=function(e){return 0===e.type},sf=function(e,t){return ef(e)&&e.value===t},rf=function(e){return 31!==e.type},of=function(e){return 31!==e.type&&4!==e.type},nf=function(e){var t=[],i=[];return e.forEach((function(e){if(4===e.type){if(0===i.length)throw new Error("Error parsing function args, zero tokens for arg");return t.push(i),void(i=[])}31!==e.type&&i.push(e)})),i.length&&t.push(i),t},af=function(e,t){return 11===t&&12===e.type||(28===t&&29===e.type||2===t&&3===e.type)},lf=function(e){return 17===e.type||15===e.type},Af=function(e){return 16===e.type||lf(e)},hf=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},cf={type:17,number:0,flags:4},uf={type:16,number:50,flags:4},df={type:16,number:100,flags:4},pf=function(e,t,i){var s=e[0],r=e[1];return[ff(s,t),ff(void 0!==r?r:s,i)]},ff=function(e,t){if(16===e.type)return e.number/100*t;if(qp(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},gf=function(e,t){if(15===t.type)switch(t.unit){case"deg":return Math.PI*t.number/180;case"grad":return Math.PI/200*t.number;case"rad":return t.number;case"turn":return 2*Math.PI*t.number}throw new Error("Unsupported angle type")},mf=function(e){return 15===e.type&&("deg"===e.unit||"grad"===e.unit||"rad"===e.unit||"turn"===e.unit)},_f=function(e){switch(e.filter(ef).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[cf,cf];case"to top":case"bottom":return vf(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[cf,df];case"to right":case"left":return vf(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[df,df];case"to bottom":case"top":return vf(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[df,cf];case"to left":case"right":return vf(270)}return 0},vf=function(e){return Math.PI*e/180},bf=function(e,t){if(18===t.type){var i=Ff[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return i(e,t.values)}if(5===t.type){if(3===t.value.length){var s=t.value.substring(0,1),r=t.value.substring(1,2),o=t.value.substring(2,3);return wf(parseInt(s+s,16),parseInt(r+r,16),parseInt(o+o,16),1)}if(4===t.value.length){s=t.value.substring(0,1),r=t.value.substring(1,2),o=t.value.substring(2,3);var n=t.value.substring(3,4);return wf(parseInt(s+s,16),parseInt(r+r,16),parseInt(o+o,16),parseInt(n+n,16)/255)}if(6===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),o=t.value.substring(4,6);return wf(parseInt(s,16),parseInt(r,16),parseInt(o,16),1)}if(8===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),o=t.value.substring(4,6),n=t.value.substring(6,8);return wf(parseInt(s,16),parseInt(r,16),parseInt(o,16),parseInt(n,16)/255)}}if(20===t.type){var a=If[t.value.toUpperCase()];if(void 0!==a)return a}return If.TRANSPARENT},yf=function(e){return 0==(255&e)},Bf=function(e){var t=255&e,i=255&e>>8,s=255&e>>16,r=255&e>>24;return t<255?"rgba("+r+","+s+","+i+","+t/255+")":"rgb("+r+","+s+","+i+")"},wf=function(e,t,i,s){return(e<<24|t<<16|i<<8|Math.round(255*s)<<0)>>>0},xf=function(e,t){if(17===e.type)return e.number;if(16===e.type){var i=3===t?1:255;return 3===t?e.number/100*i:Math.round(e.number/100*i)}return 0},Pf=function(e,t){var i=t.filter(of);if(3===i.length){var s=i.map(xf),r=s[0],o=s[1],n=s[2];return wf(r,o,n,1)}if(4===i.length){var a=i.map(xf),l=(r=a[0],o=a[1],n=a[2],a[3]);return wf(r,o,n,l)}return 0};function Cf(e,t,i){return i<0&&(i+=1),i>=1&&(i-=1),i<1/6?(t-e)*i*6+e:i<.5?t:i<2/3?6*(t-e)*(2/3-i)+e:e}var Mf=function(e,t){var i=t.filter(of),s=i[0],r=i[1],o=i[2],n=i[3],a=(17===s.type?vf(s.number):gf(e,s))/(2*Math.PI),l=Af(r)?r.number/100:0,A=Af(o)?o.number/100:0,h=void 0!==n&&Af(n)?ff(n,1):1;if(0===l)return wf(255*A,255*A,255*A,1);var c=A<=.5?A*(l+1):A+l-A*l,u=2*A-c,d=Cf(u,c,a+1/3),p=Cf(u,c,a),f=Cf(u,c,a-1/3);return wf(255*d,255*p,255*f,h)},Ff={hsl:Mf,hsla:Mf,rgb:Pf,rgba:Pf},Ef=function(e,t){return bf(e,Zp.create(t).parseComponentValue())},If={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Df={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(ef(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Sf={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Tf=function(e,t){var i=bf(e,t[0]),s=t[1];return s&&Af(s)?{color:i,stop:s}:{color:i,stop:null}},Rf=function(e,t){var i=e[0],s=e[e.length-1];null===i.stop&&(i.stop=cf),null===s.stop&&(s.stop=df);for(var r=[],o=0,n=0;no?r.push(l):r.push(o),o=l}else r.push(null)}var A=null;for(n=0;ne.optimumDistance)?{optimumCorner:t,optimumDistance:a}:e}),{optimumDistance:r?1/0:-1/0,optimumCorner:null}).optimumCorner},Of=function(e,t){var i=vf(180),s=[];return nf(t).forEach((function(t,r){if(0===r){var o=t[0];if(20===o.type&&-1!==["top","left","right","bottom"].indexOf(o.value))return void(i=_f(t));if(mf(o))return void(i=(gf(e,o)+vf(270))%vf(360))}var n=Tf(e,t);s.push(n)})),{angle:i,stops:s,type:1}},Nf=function(e,t){var i=0,s=3,r=[],o=[];return nf(t).forEach((function(t,n){var a=!0;if(0===n?a=t.reduce((function(e,t){if(ef(t))switch(t.value){case"center":return o.push(uf),!1;case"top":case"left":return o.push(cf),!1;case"right":case"bottom":return o.push(df),!1}else if(Af(t)||lf(t))return o.push(t),!1;return e}),a):1===n&&(a=t.reduce((function(e,t){if(ef(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"contain":case"closest-side":return s=0,!1;case"farthest-side":return s=1,!1;case"closest-corner":return s=2,!1;case"cover":case"farthest-corner":return s=3,!1}else if(lf(t)||Af(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)),a){var l=Tf(e,t);r.push(l)}})),{size:s,shape:i,stops:r,position:o,type:2}},Qf=function(e,t){if(22===t.type){var i={url:t.value,type:0};return e.cache.addImage(t.value),i}if(18===t.type){var s=Hf[t.name];if(void 0===s)throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return s(e,t.values)}throw new Error("Unsupported image type "+t.type)};var Vf,Hf={"linear-gradient":function(e,t){var i=vf(180),s=[];return nf(t).forEach((function(t,r){if(0===r){var o=t[0];if(20===o.type&&"to"===o.value)return void(i=_f(t));if(mf(o))return void(i=gf(e,o))}var n=Tf(e,t);s.push(n)})),{angle:i,stops:s,type:1}},"-moz-linear-gradient":Of,"-ms-linear-gradient":Of,"-o-linear-gradient":Of,"-webkit-linear-gradient":Of,"radial-gradient":function(e,t){var i=0,s=3,r=[],o=[];return nf(t).forEach((function(t,n){var a=!0;if(0===n){var l=!1;a=t.reduce((function(e,t){if(l)if(ef(t))switch(t.value){case"center":return o.push(uf),e;case"top":case"left":return o.push(cf),e;case"right":case"bottom":return o.push(df),e}else(Af(t)||lf(t))&&o.push(t);else if(ef(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"at":return l=!0,!1;case"closest-side":return s=0,!1;case"cover":case"farthest-side":return s=1,!1;case"contain":case"closest-corner":return s=2,!1;case"farthest-corner":return s=3,!1}else if(lf(t)||Af(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)}if(a){var A=Tf(e,t);r.push(A)}})),{size:s,shape:i,stops:r,position:o,type:2}},"-moz-radial-gradient":Nf,"-ms-radial-gradient":Nf,"-o-radial-gradient":Nf,"-webkit-radial-gradient":Nf,"-webkit-gradient":function(e,t){var i=vf(180),s=[],r=1;return nf(t).forEach((function(t,i){var o=t[0];if(0===i){if(ef(o)&&"linear"===o.value)return void(r=1);if(ef(o)&&"radial"===o.value)return void(r=2)}if(18===o.type)if("from"===o.name){var n=bf(e,o.values[0]);s.push({stop:cf,color:n})}else if("to"===o.name){n=bf(e,o.values[0]);s.push({stop:df,color:n})}else if("color-stop"===o.name){var a=o.values.filter(of);if(2===a.length){n=bf(e,a[1]);var l=a[0];$p(l)&&s.push({stop:{type:16,number:100*l.number,flags:l.flags},color:n})}}})),1===r?{angle:(i+vf(180))%vf(360),stops:s,type:r}:{size:3,shape:0,stops:s,position:[],type:r}}},jf={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var i=t[0];return 20===i.type&&"none"===i.value?[]:t.filter((function(e){return of(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!Hf[e.name])}(e)})).map((function(t){return Qf(e,t)}))}},Gf={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(ef(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},zf={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,t){return nf(t).map((function(e){return e.filter(Af)})).map(hf)}},Wf={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,t){return nf(t).map((function(e){return e.filter(ef).map((function(e){return e.value})).join(" ")})).map(Kf)}},Kf=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(Vf||(Vf={}));var Xf,Jf={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,t){return nf(t).map((function(e){return e.filter(Yf)}))}},Yf=function(e){return ef(e)||Af(e)},Zf=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},qf=Zf("top"),$f=Zf("right"),eg=Zf("bottom"),tg=Zf("left"),ig=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return hf(t.filter(Af))}}},sg=ig("top-left"),rg=ig("top-right"),og=ig("bottom-right"),ng=ig("bottom-left"),ag=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},lg=ag("top"),Ag=ag("right"),hg=ag("bottom"),cg=ag("left"),ug=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return qp(t)?t.number:0}}},dg=ug("top"),pg=ug("right"),fg=ug("bottom"),gg=ug("left"),mg={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},_g={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,t){return"rtl"===t?1:0}},vg={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,t){return t.filter(ef).reduce((function(e,t){return e|bg(t.value)}),0)}},bg=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},yg={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},Bg={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,t){return 20===t.type&&"normal"===t.value?0:17===t.type||15===t.type?t.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(Xf||(Xf={}));var wg,xg={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"strict"===t?Xf.STRICT:Xf.NORMAL}},Pg={name:"line-height",initialValue:"normal",prefix:!1,type:4},Cg=function(e,t){return ef(e)&&"normal"===e.value?1.2*t:17===e.type?t*e.number:Af(e)?ff(e,t):t},Mg={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,t){return 20===t.type&&"none"===t.value?null:Qf(e,t)}},Fg={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,t){return"inside"===t?0:1}},Eg={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},Ig=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},Dg=Ig("top"),Sg=Ig("right"),Tg=Ig("bottom"),Rg=Ig("left"),Lg={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,t){return t.filter(ef).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},Ug={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"break-word"===t?"break-word":"normal"}},kg=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Og=kg("top"),Ng=kg("right"),Qg=kg("bottom"),Vg=kg("left"),Hg={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,t){switch(t){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},jg={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Gg={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&sf(t[0],"none")?[]:nf(t).map((function(t){for(var i={color:If.TRANSPARENT,offsetX:cf,offsetY:cf,blur:cf},s=0,r=0;r1?1:0],this.overflowWrap=wm(e,Ug,t.overflowWrap),this.paddingTop=wm(e,Og,t.paddingTop),this.paddingRight=wm(e,Ng,t.paddingRight),this.paddingBottom=wm(e,Qg,t.paddingBottom),this.paddingLeft=wm(e,Vg,t.paddingLeft),this.paintOrder=wm(e,mm,t.paintOrder),this.position=wm(e,jg,t.position),this.textAlign=wm(e,Hg,t.textAlign),this.textDecorationColor=wm(e,im,null!==(i=t.textDecorationColor)&&void 0!==i?i:t.color),this.textDecorationLine=wm(e,sm,null!==(s=t.textDecorationLine)&&void 0!==s?s:t.textDecoration),this.textShadow=wm(e,Gg,t.textShadow),this.textTransform=wm(e,zg,t.textTransform),this.transform=wm(e,Wg,t.transform),this.transformOrigin=wm(e,Yg,t.transformOrigin),this.visibility=wm(e,Zg,t.visibility),this.webkitTextStrokeColor=wm(e,_m,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=wm(e,vm,t.webkitTextStrokeWidth),this.wordBreak=wm(e,qg,t.wordBreak),this.zIndex=wm(e,$g,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return yf(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return Am(this.display,4)||Am(this.display,33554432)||Am(this.display,268435456)||Am(this.display,536870912)||Am(this.display,67108864)||Am(this.display,134217728)},e}(),ym=function(e,t){this.content=wm(e,hm,t.content),this.quotes=wm(e,pm,t.quotes)},Bm=function(e,t){this.counterIncrement=wm(e,cm,t.counterIncrement),this.counterReset=wm(e,um,t.counterReset)},wm=function(e,t,i){var s=new Yp,r=null!=i?i.toString():t.initialValue;s.write(r);var o=new Zp(s.read());switch(t.type){case 2:var n=o.parseComponentValue();return t.parse(e,ef(n)?n.value:t.initialValue);case 0:return t.parse(e,o.parseComponentValue());case 1:return t.parse(e,o.parseComponentValues());case 4:return o.parseComponentValue();case 3:switch(t.format){case"angle":return gf(e,o.parseComponentValue());case"color":return bf(e,o.parseComponentValue());case"image":return Qf(e,o.parseComponentValue());case"length":var a=o.parseComponentValue();return lf(a)?a:cf;case"length-percentage":var l=o.parseComponentValue();return Af(l)?l:cf;case"time":return em(e,o.parseComponentValue())}}},xm=function(e,t){var i=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===i||t===i},Pm=function(e,t){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,xm(t,3),this.styles=new bm(e,window.getComputedStyle(t,null)),P_(t)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(t.style.animationDuration="0s"),null!==this.styles.transform&&(t.style.transform="none")),this.bounds=yd(this.context,t),xm(t,4)&&(this.flags|=16)},Cm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Mm="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Fm=0;Fm=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Dm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Sm="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Tm=0;Tm>10),n%1024+56320)),(r+1===i||s.length>16384)&&(o+=String.fromCharCode.apply(String,s),s.length=0)}return o},Qm=function(e,t){var i,s,r,o=function(e){var t,i,s,r,o,n=.75*e.length,a=e.length,l=0;"="===e[e.length-1]&&(n--,"="===e[e.length-2]&&n--);var A="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(n):new Array(n),h=Array.isArray(A)?A:new Uint8Array(A);for(t=0;t>4,h[l++]=(15&s)<<4|r>>2,h[l++]=(3&r)<<6|63&o;return A}(e),n=Array.isArray(o)?function(e){for(var t=e.length,i=[],s=0;s=55296&&r<=56319&&i=i)return{done:!0,value:null};for(var e="×";sn.x||r.y>n.y;return n=r,0===t||a}));return e.body.removeChild(t),a}(document);return Object.defineProperty(Km,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var t=new Image,i=e.createElement("canvas"),s=i.getContext("2d");if(!s)return!1;t.src="data:image/svg+xml,";try{s.drawImage(t,0,0),i.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(Km,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var t=e.createElement("canvas"),i=100;t.width=i,t.height=i;var s=t.getContext("2d");if(!s)return Promise.reject(!1);s.fillStyle="rgb(0, 255, 0)",s.fillRect(0,0,i,i);var r=new Image,o=t.toDataURL();r.src=o;var n=zm(i,i,0,0,r);return s.fillStyle="red",s.fillRect(0,0,i,i),Wm(n).then((function(t){s.drawImage(t,0,0);var r=s.getImageData(0,0,i,i).data;s.fillStyle="red",s.fillRect(0,0,i,i);var n=e.createElement("div");return n.style.backgroundImage="url("+o+")",n.style.height="100px",Gm(r)?Wm(zm(i,i,0,0,n)):Promise.reject(!1)})).then((function(e){return s.drawImage(e,0,0),Gm(s.getImageData(0,0,i,i).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(Km,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(Km,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Km,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Km,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Km,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},Xm=function(e,t){this.text=e,this.bounds=t},Jm=function(e,t){var i=t.ownerDocument;if(i){var s=i.createElement("html2canvaswrapper");s.appendChild(t.cloneNode(!0));var r=t.parentNode;if(r){r.replaceChild(s,t);var o=yd(e,s);return s.firstChild&&r.replaceChild(s.firstChild,s),o}}return bd.EMPTY},Ym=function(e,t,i){var s=e.ownerDocument;if(!s)throw new Error("Node has no owner document");var r=s.createRange();return r.setStart(e,t),r.setEnd(e,t+i),r},Zm=function(e){if(Km.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return function(e){for(var t,i=jm(e),s=[];!(t=i.next()).done;)t.value&&s.push(t.value.slice());return s}(e)},qm=function(e,t){return 0!==t.letterSpacing?Zm(e):function(e,t){if(Km.SUPPORT_NATIVE_TEXT_SEGMENTATION){var i=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(i.segment(e)).map((function(e){return e.segment}))}return e_(e,t)}(e,t)},$m=[32,160,4961,65792,65793,4153,4241],e_=function(e,t){for(var i,s=function(e,t){var i=Bd(e),s=mp(i,t),r=s[0],o=s[1],n=s[2],a=i.length,l=0,A=0;return{next:function(){if(A>=a)return{done:!0,value:null};for(var e="×";A0)if(Km.SUPPORT_RANGE_BOUNDS){var r=Ym(s,n,t.length).getClientRects();if(r.length>1){var a=Zm(t),l=0;a.forEach((function(t){o.push(new Xm(t,bd.fromDOMRectList(e,Ym(s,l+n,t.length).getClientRects()))),l+=t.length}))}else o.push(new Xm(t,bd.fromDOMRectList(e,r)))}else{var A=s.splitText(t.length);o.push(new Xm(t,Jm(e,s))),s=A}else Km.SUPPORT_RANGE_BOUNDS||(s=s.splitText(t.length));n+=t.length})),o}(e,this.text,i,t)},i_=function(e,t){switch(t){case 1:return e.toLowerCase();case 3:return e.replace(s_,r_);case 2:return e.toUpperCase();default:return e}},s_=/(^|\s|:|-|\(|\))([a-z])/g,r_=function(e,t,i){return e.length>0?t+i.toUpperCase():e},o_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.src=i.currentSrc||i.src,s.intrinsicWidth=i.naturalWidth,s.intrinsicHeight=i.naturalHeight,s.context.cache.addImage(s.src),s}return fd(t,e),t}(Pm),n_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.canvas=i,s.intrinsicWidth=i.width,s.intrinsicHeight=i.height,s}return fd(t,e),t}(Pm),a_=function(e){function t(t,i){var s=e.call(this,t,i)||this,r=new XMLSerializer,o=yd(t,i);return i.setAttribute("width",o.width+"px"),i.setAttribute("height",o.height+"px"),s.svg="data:image/svg+xml,"+encodeURIComponent(r.serializeToString(i)),s.intrinsicWidth=i.width.baseVal.value,s.intrinsicHeight=i.height.baseVal.value,s.context.cache.addImage(s.svg),s}return fd(t,e),t}(Pm),l_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.value=i.value,s}return fd(t,e),t}(Pm),A_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.start=i.start,s.reversed="boolean"==typeof i.reversed&&!0===i.reversed,s}return fd(t,e),t}(Pm),h_=[{type:15,flags:0,unit:"px",number:3}],c_=[{type:16,flags:0,number:50}],u_="password",d_=function(e){function t(t,i){var s,r=e.call(this,t,i)||this;switch(r.type=i.type.toLowerCase(),r.checked=i.checked,r.value=function(e){var t=e.type===u_?new Array(e.value.length+1).join("•"):e.value;return 0===t.length?e.placeholder||"":t}(i),"checkbox"!==r.type&&"radio"!==r.type||(r.styles.backgroundColor=3739148031,r.styles.borderTopColor=r.styles.borderRightColor=r.styles.borderBottomColor=r.styles.borderLeftColor=2779096575,r.styles.borderTopWidth=r.styles.borderRightWidth=r.styles.borderBottomWidth=r.styles.borderLeftWidth=1,r.styles.borderTopStyle=r.styles.borderRightStyle=r.styles.borderBottomStyle=r.styles.borderLeftStyle=1,r.styles.backgroundClip=[0],r.styles.backgroundOrigin=[0],r.bounds=(s=r.bounds).width>s.height?new bd(s.left+(s.width-s.height)/2,s.top,s.height,s.height):s.width0)i.textNodes.push(new t_(e,r,i.styles));else if(x_(r))if(N_(r)&&r.assignedNodes)r.assignedNodes().forEach((function(t){return __(e,t,i,s)}));else{var n=v_(e,r);n.styles.isVisible()&&(y_(r,n,s)?n.flags|=4:B_(n.styles)&&(n.flags|=2),-1!==m_.indexOf(r.tagName)&&(n.flags|=8),i.elements.push(n),r.slot,r.shadowRoot?__(e,r.shadowRoot,n,s):k_(r)||I_(r)||O_(r)||__(e,r,n,s))}},v_=function(e,t){return R_(t)?new o_(e,t):S_(t)?new n_(e,t):I_(t)?new a_(e,t):M_(t)?new l_(e,t):F_(t)?new A_(e,t):E_(t)?new d_(e,t):O_(t)?new p_(e,t):k_(t)?new f_(e,t):L_(t)?new g_(e,t):new Pm(e,t)},b_=function(e,t){var i=v_(e,t);return i.flags|=4,__(e,t,i,i),i},y_=function(e,t,i){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||D_(e)&&i.styles.isTransparent()},B_=function(e){return e.isPositioned()||e.isFloating()},w_=function(e){return e.nodeType===Node.TEXT_NODE},x_=function(e){return e.nodeType===Node.ELEMENT_NODE},P_=function(e){return x_(e)&&void 0!==e.style&&!C_(e)},C_=function(e){return"object"==typeof e.className},M_=function(e){return"LI"===e.tagName},F_=function(e){return"OL"===e.tagName},E_=function(e){return"INPUT"===e.tagName},I_=function(e){return"svg"===e.tagName},D_=function(e){return"BODY"===e.tagName},S_=function(e){return"CANVAS"===e.tagName},T_=function(e){return"VIDEO"===e.tagName},R_=function(e){return"IMG"===e.tagName},L_=function(e){return"IFRAME"===e.tagName},U_=function(e){return"STYLE"===e.tagName},k_=function(e){return"TEXTAREA"===e.tagName},O_=function(e){return"SELECT"===e.tagName},N_=function(e){return"SLOT"===e.tagName},Q_=function(e){return e.tagName.indexOf("-")>0},V_=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(e){var t=this.counters[e];return t||[]},e.prototype.pop=function(e){var t=this;e.forEach((function(e){return t.counters[e].pop()}))},e.prototype.parse=function(e){var t=this,i=e.counterIncrement,s=e.counterReset,r=!0;null!==i&&i.forEach((function(e){var i=t.counters[e.counter];i&&0!==e.increment&&(r=!1,i.length||i.push(1),i[Math.max(0,i.length-1)]+=e.increment)}));var o=[];return r&&s.forEach((function(e){var i=t.counters[e.counter];o.push(e.counter),i||(i=t.counters[e.counter]=[]),i.push(e.reset)})),o},e}(),H_={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},j_={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},G_={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},z_={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},W_=function(e,t,i,s,r,o){return ei?Z_(e,r,o.length>0):s.integers.reduce((function(t,i,r){for(;e>=i;)e-=i,t+=s.values[r];return t}),"")+o},K_=function(e,t,i,s){var r="";do{i||e--,r=s(e)+r,e/=t}while(e*t>=t);return r},X_=function(e,t,i,s,r){var o=i-t+1;return(e<0?"-":"")+(K_(Math.abs(e),o,s,(function(e){return wd(Math.floor(e%o)+t)}))+r)},J_=function(e,t,i){void 0===i&&(i=". ");var s=t.length;return K_(Math.abs(e),s,!1,(function(e){return t[Math.floor(e%s)]}))+i},Y_=function(e,t,i,s,r,o){if(e<-9999||e>9999)return Z_(e,4,r.length>0);var n=Math.abs(e),a=r;if(0===n)return t[0]+a;for(var l=0;n>0&&l<=4;l++){var A=n%10;0===A&&Am(o,1)&&""!==a?a=t[A]+a:A>1||1===A&&0===l||1===A&&1===l&&Am(o,2)||1===A&&1===l&&Am(o,4)&&e>100||1===A&&l>1&&Am(o,8)?a=t[A]+(l>0?i[l-1]:"")+a:1===A&&l>0&&(a=i[l-1]+a),n=Math.floor(n/10)}return(e<0?s:"")+a},Z_=function(e,t,i){var s=i?". ":"",r=i?"、":"",o=i?", ":"",n=i?" ":"";switch(t){case 0:return"•"+n;case 1:return"◦"+n;case 2:return"◾"+n;case 5:var a=X_(e,48,57,!0,s);return a.length<4?"0"+a:a;case 4:return J_(e,"〇一二三四五六七八九",r);case 6:return W_(e,1,3999,H_,3,s).toLowerCase();case 7:return W_(e,1,3999,H_,3,s);case 8:return X_(e,945,969,!1,s);case 9:return X_(e,97,122,!1,s);case 10:return X_(e,65,90,!1,s);case 11:return X_(e,1632,1641,!0,s);case 12:case 49:return W_(e,1,9999,j_,3,s);case 35:return W_(e,1,9999,j_,3,s).toLowerCase();case 13:return X_(e,2534,2543,!0,s);case 14:case 30:return X_(e,6112,6121,!0,s);case 15:return J_(e,"子丑寅卯辰巳午未申酉戌亥",r);case 16:return J_(e,"甲乙丙丁戊己庚辛壬癸",r);case 17:case 48:return Y_(e,"零一二三四五六七八九","十百千萬","負",r,14);case 47:return Y_(e,"零壹貳參肆伍陸柒捌玖","拾佰仟萬","負",r,15);case 42:return Y_(e,"零一二三四五六七八九","十百千萬","负",r,14);case 41:return Y_(e,"零壹贰叁肆伍陆柒捌玖","拾佰仟萬","负",r,15);case 26:return Y_(e,"〇一二三四五六七八九","十百千万","マイナス",r,0);case 25:return Y_(e,"零壱弐参四伍六七八九","拾百千万","マイナス",r,7);case 31:return Y_(e,"영일이삼사오육칠팔구","십백천만","마이너스",o,7);case 33:return Y_(e,"零一二三四五六七八九","十百千萬","마이너스",o,0);case 32:return Y_(e,"零壹貳參四五六七八九","拾百千","마이너스",o,7);case 18:return X_(e,2406,2415,!0,s);case 20:return W_(e,1,19999,z_,3,s);case 21:return X_(e,2790,2799,!0,s);case 22:return X_(e,2662,2671,!0,s);case 22:return W_(e,1,10999,G_,3,s);case 23:return J_(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return J_(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return X_(e,3302,3311,!0,s);case 28:return J_(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",r);case 29:return J_(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",r);case 34:return X_(e,3792,3801,!0,s);case 37:return X_(e,6160,6169,!0,s);case 38:return X_(e,4160,4169,!0,s);case 39:return X_(e,2918,2927,!0,s);case 40:return X_(e,1776,1785,!0,s);case 43:return X_(e,3046,3055,!0,s);case 44:return X_(e,3174,3183,!0,s);case 45:return X_(e,3664,3673,!0,s);case 46:return X_(e,3872,3881,!0,s);default:return X_(e,48,57,!0,s)}},q_=function(){function e(e,t,i){if(this.context=e,this.options=i,this.scrolledElements=[],this.referenceElement=t,this.counters=new V_,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,t){var i=this,s=ev(e,t);if(!s.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,o=e.defaultView.pageYOffset,n=s.contentWindow,a=n.document,l=sv(s).then((function(){return md(i,void 0,void 0,(function(){var e,i;return _d(this,(function(r){switch(r.label){case 0:return this.scrolledElements.forEach(lv),n&&(n.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||n.scrollY===t.top&&n.scrollX===t.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(n.scrollX-t.left,n.scrollY-t.top,0,0))),e=this.options.onclone,void 0===(i=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:r.sent(),r.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,iv(a)]:[3,4];case 3:r.sent(),r.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(a,i)})).then((function(){return s}))]:[2,s]}}))}))}));return a.open(),a.write(nv(document.doctype)+""),av(this.referenceElement.ownerDocument,r,o),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},e.prototype.createElementClone=function(e){if(xm(e,2),S_(e))return this.createCanvasClone(e);if(T_(e))return this.createVideoClone(e);if(U_(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return R_(t)&&(R_(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),"lazy"===t.loading&&(t.loading="eager")),Q_(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return ov(e.style,t),t},e.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var i=[].slice.call(t.cssRules,0).reduce((function(e,t){return t&&"string"==typeof t.cssText?e+t.cssText:e}),""),s=e.cloneNode(!1);return s.textContent=i,s}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var i=e.ownerDocument.createElement("img");try{return i.src=e.toDataURL(),i}catch(t){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var s=e.cloneNode(!1);try{s.width=e.width,s.height=e.height;var r=e.getContext("2d"),o=s.getContext("2d");if(o)if(!this.options.allowTaint&&r)o.putImageData(r.getImageData(0,0,e.width,e.height),0,0);else{var n=null!==(t=e.getContext("webgl2"))&&void 0!==t?t:e.getContext("webgl");if(n){var a=n.getContextAttributes();!1===(null==a?void 0:a.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}o.drawImage(e,0,0)}return s}catch(t){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return s},e.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var i=t.getContext("2d");try{return i&&(i.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||i.getImageData(0,0,t.width,t.height)),t}catch(t){this.context.logger.info("Unable to clone video as it is tainted",e)}var s=e.ownerDocument.createElement("canvas");return s.width=e.offsetWidth,s.height=e.offsetHeight,s},e.prototype.appendChildNode=function(e,t,i){x_(t)&&(function(e){return"SCRIPT"===e.tagName}(t)||t.hasAttribute("data-html2canvas-ignore")||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(t))||this.options.copyStyles&&x_(t)&&U_(t)||e.appendChild(this.cloneNode(t,i))},e.prototype.cloneChildNodes=function(e,t,i){for(var s=this,r=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;r;r=r.nextSibling)if(x_(r)&&N_(r)&&"function"==typeof r.assignedNodes){var o=r.assignedNodes();o.length&&o.forEach((function(e){return s.appendChildNode(t,e,i)}))}else this.appendChildNode(t,r,i)},e.prototype.cloneNode=function(e,t){if(w_(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var i=e.ownerDocument.defaultView;if(i&&x_(e)&&(P_(e)||C_(e))){var s=this.createElementClone(e);s.style.transitionProperty="none";var r=i.getComputedStyle(e),o=i.getComputedStyle(e,":before"),n=i.getComputedStyle(e,":after");this.referenceElement===e&&P_(s)&&(this.clonedReferenceElement=s),D_(s)&&cv(s);var a=this.counters.parse(new Bm(this.context,r)),l=this.resolvePseudoContent(e,s,o,Rm.BEFORE);Q_(e)&&(t=!0),T_(e)||this.cloneChildNodes(e,s,t),l&&s.insertBefore(l,s.firstChild);var A=this.resolvePseudoContent(e,s,n,Rm.AFTER);return A&&s.appendChild(A),this.counters.pop(a),(r&&(this.options.copyStyles||C_(e))&&!L_(e)||t)&&ov(r,s),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([s,e.scrollLeft,e.scrollTop]),(k_(e)||O_(e))&&(k_(s)||O_(s))&&(s.value=e.value),s}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,t,i,s){var r=this;if(i){var o=i.content,n=t.ownerDocument;if(n&&o&&"none"!==o&&"-moz-alt-content"!==o&&"none"!==i.display){this.counters.parse(new Bm(this.context,i));var a=new ym(this.context,i),l=n.createElement("html2canvaspseudoelement");ov(i,l),a.content.forEach((function(t){if(0===t.type)l.appendChild(n.createTextNode(t.value));else if(22===t.type){var i=n.createElement("img");i.src=t.value,i.style.opacity="1",l.appendChild(i)}else if(18===t.type){if("attr"===t.name){var s=t.values.filter(ef);s.length&&l.appendChild(n.createTextNode(e.getAttribute(s[0].value)||""))}else if("counter"===t.name){var o=t.values.filter(of),A=o[0],h=o[1];if(A&&ef(A)){var c=r.counters.getCounterValue(A.value),u=h&&ef(h)?Eg.parse(r.context,h.value):3;l.appendChild(n.createTextNode(Z_(c,u,!1)))}}else if("counters"===t.name){var d=t.values.filter(of),p=(A=d[0],d[1]);h=d[2];if(A&&ef(A)){var f=r.counters.getCounterValues(A.value),g=h&&ef(h)?Eg.parse(r.context,h.value):3,m=p&&0===p.type?p.value:"",_=f.map((function(e){return Z_(e,g,!1)})).join(m);l.appendChild(n.createTextNode(_))}}}else if(20===t.type)switch(t.value){case"open-quote":l.appendChild(n.createTextNode(fm(a.quotes,r.quoteDepth++,!0)));break;case"close-quote":l.appendChild(n.createTextNode(fm(a.quotes,--r.quoteDepth,!1)));break;default:l.appendChild(n.createTextNode(t.value))}})),l.className=Av+" "+hv;var A=s===Rm.BEFORE?" "+Av:" "+hv;return C_(t)?t.className.baseValue+=A:t.className+=A,l}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Rm||(Rm={}));var $_,ev=function(e,t){var i=e.createElement("iframe");return i.className="html2canvas-container",i.style.visibility="hidden",i.style.position="fixed",i.style.left="-10000px",i.style.top="0px",i.style.border="0",i.width=t.width.toString(),i.height=t.height.toString(),i.scrolling="no",i.setAttribute("data-html2canvas-ignore","true"),e.body.appendChild(i),i},tv=function(e){return new Promise((function(t){e.complete?t():e.src?(e.onload=t,e.onerror=t):t()}))},iv=function(e){return Promise.all([].slice.call(e.images,0).map(tv))},sv=function(e){return new Promise((function(t,i){var s=e.contentWindow;if(!s)return i("No window assigned for iframe");var r=s.document;s.onload=e.onload=function(){s.onload=e.onload=null;var i=setInterval((function(){r.body.childNodes.length>0&&"complete"===r.readyState&&(clearInterval(i),t(e))}),50)}}))},rv=["all","d","content"],ov=function(e,t){for(var i=e.length-1;i>=0;i--){var s=e.item(i);-1===rv.indexOf(s)&&t.style.setProperty(s,e.getPropertyValue(s))}return t},nv=function(e){var t="";return e&&(t+=""),t},av=function(e,t,i){e&&e.defaultView&&(t!==e.defaultView.pageXOffset||i!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(t,i)},lv=function(e){var t=e[0],i=e[1],s=e[2];t.scrollLeft=i,t.scrollTop=s},Av="___html2canvas___pseudoelement_before",hv="___html2canvas___pseudoelement_after",cv=function(e){uv(e,"."+Av+':before{\n content: "" !important;\n display: none !important;\n}\n .'+hv+':after{\n content: "" !important;\n display: none !important;\n}')},uv=function(e,t){var i=e.ownerDocument;if(i){var s=i.createElement("style");s.textContent=t,e.appendChild(s)}},dv=function(){function e(){}return e.getOrigin=function(t){var i=e._link;return i?(i.href=t,i.href=i.href,i.protocol+i.hostname+i.port):"about:blank"},e.isSameOrigin=function(t){return e.getOrigin(t)===e._origin},e.setContext=function(t){e._link=t.document.createElement("a"),e._origin=e.getOrigin(t.location.href)},e._origin="about:blank",e}(),pv=function(){function e(e,t){this.context=e,this._options=t,this._cache={}}return e.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)?t:yv(e)||_v(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),t):t},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return md(this,void 0,void 0,(function(){var t,i,s,r,o=this;return _d(this,(function(n){switch(n.label){case 0:return t=dv.isSameOrigin(e),i=!vv(e)&&!0===this._options.useCORS&&Km.SUPPORT_CORS_IMAGES&&!t,s=!vv(e)&&!t&&!yv(e)&&"string"==typeof this._options.proxy&&Km.SUPPORT_CORS_XHR&&!i,t||!1!==this._options.allowTaint||vv(e)||yv(e)||s||i?(r=e,s?[4,this.proxy(r)]:[3,2]):[2];case 1:r=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,t){var s=new Image;s.onload=function(){return e(s)},s.onerror=t,(bv(r)||i)&&(s.crossOrigin="anonymous"),s.src=r,!0===s.complete&&setTimeout((function(){return e(s)}),500),o._options.imageTimeout>0&&setTimeout((function(){return t("Timed out ("+o._options.imageTimeout+"ms) loading image")}),o._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var t=this,i=this._options.proxy;if(!i)throw new Error("No proxy defined");var s=e.substring(0,256);return new Promise((function(r,o){var n=Km.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(200===a.status)if("text"===n)r(a.response);else{var e=new FileReader;e.addEventListener("load",(function(){return r(e.result)}),!1),e.addEventListener("error",(function(e){return o(e)}),!1),e.readAsDataURL(a.response)}else o("Failed to proxy resource "+s+" with status code "+a.status)},a.onerror=o;var l=i.indexOf("?")>-1?"&":"?";if(a.open("GET",""+i+l+"url="+encodeURIComponent(e)+"&responseType="+n),"text"!==n&&a instanceof XMLHttpRequest&&(a.responseType=n),t._options.imageTimeout){var A=t._options.imageTimeout;a.timeout=A,a.ontimeout=function(){return o("Timed out ("+A+"ms) proxying "+s)}}a.send()}))},e}(),fv=/^data:image\/svg\+xml/i,gv=/^data:image\/.*;base64,/i,mv=/^data:image\/.*/i,_v=function(e){return Km.SUPPORT_SVG_DRAWING||!Bv(e)},vv=function(e){return mv.test(e)},bv=function(e){return gv.test(e)},yv=function(e){return"blob"===e.substr(0,4)},Bv=function(e){return"svg"===e.substr(-3).toLowerCase()||fv.test(e)},wv=function(){function e(e,t){this.type=0,this.x=e,this.y=t}return e.prototype.add=function(t,i){return new e(this.x+t,this.y+i)},e}(),xv=function(e,t,i){return new wv(e.x+(t.x-e.x)*i,e.y+(t.y-e.y)*i)},Pv=function(){function e(e,t,i,s){this.type=1,this.start=e,this.startControl=t,this.endControl=i,this.end=s}return e.prototype.subdivide=function(t,i){var s=xv(this.start,this.startControl,t),r=xv(this.startControl,this.endControl,t),o=xv(this.endControl,this.end,t),n=xv(s,r,t),a=xv(r,o,t),l=xv(n,a,t);return i?new e(this.start,s,n,l):new e(l,a,o,this.end)},e.prototype.add=function(t,i){return new e(this.start.add(t,i),this.startControl.add(t,i),this.endControl.add(t,i),this.end.add(t,i))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),Cv=function(e){return 1===e.type},Mv=function(e){var t=e.styles,i=e.bounds,s=pf(t.borderTopLeftRadius,i.width,i.height),r=s[0],o=s[1],n=pf(t.borderTopRightRadius,i.width,i.height),a=n[0],l=n[1],A=pf(t.borderBottomRightRadius,i.width,i.height),h=A[0],c=A[1],u=pf(t.borderBottomLeftRadius,i.width,i.height),d=u[0],p=u[1],f=[];f.push((r+a)/i.width),f.push((d+h)/i.width),f.push((o+p)/i.height),f.push((l+c)/i.height);var g=Math.max.apply(Math,f);g>1&&(r/=g,o/=g,a/=g,l/=g,h/=g,c/=g,d/=g,p/=g);var m=i.width-a,_=i.height-c,v=i.width-h,b=i.height-p,y=t.borderTopWidth,B=t.borderRightWidth,w=t.borderBottomWidth,x=t.borderLeftWidth,P=ff(t.paddingTop,e.bounds.width),C=ff(t.paddingRight,e.bounds.width),M=ff(t.paddingBottom,e.bounds.width),F=ff(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=r>0||o>0?Fv(i.left+x/3,i.top+y/3,r-x/3,o-y/3,$_.TOP_LEFT):new wv(i.left+x/3,i.top+y/3),this.topRightBorderDoubleOuterBox=r>0||o>0?Fv(i.left+m,i.top+y/3,a-B/3,l-y/3,$_.TOP_RIGHT):new wv(i.left+i.width-B/3,i.top+y/3),this.bottomRightBorderDoubleOuterBox=h>0||c>0?Fv(i.left+v,i.top+_,h-B/3,c-w/3,$_.BOTTOM_RIGHT):new wv(i.left+i.width-B/3,i.top+i.height-w/3),this.bottomLeftBorderDoubleOuterBox=d>0||p>0?Fv(i.left+x/3,i.top+b,d-x/3,p-w/3,$_.BOTTOM_LEFT):new wv(i.left+x/3,i.top+i.height-w/3),this.topLeftBorderDoubleInnerBox=r>0||o>0?Fv(i.left+2*x/3,i.top+2*y/3,r-2*x/3,o-2*y/3,$_.TOP_LEFT):new wv(i.left+2*x/3,i.top+2*y/3),this.topRightBorderDoubleInnerBox=r>0||o>0?Fv(i.left+m,i.top+2*y/3,a-2*B/3,l-2*y/3,$_.TOP_RIGHT):new wv(i.left+i.width-2*B/3,i.top+2*y/3),this.bottomRightBorderDoubleInnerBox=h>0||c>0?Fv(i.left+v,i.top+_,h-2*B/3,c-2*w/3,$_.BOTTOM_RIGHT):new wv(i.left+i.width-2*B/3,i.top+i.height-2*w/3),this.bottomLeftBorderDoubleInnerBox=d>0||p>0?Fv(i.left+2*x/3,i.top+b,d-2*x/3,p-2*w/3,$_.BOTTOM_LEFT):new wv(i.left+2*x/3,i.top+i.height-2*w/3),this.topLeftBorderStroke=r>0||o>0?Fv(i.left+x/2,i.top+y/2,r-x/2,o-y/2,$_.TOP_LEFT):new wv(i.left+x/2,i.top+y/2),this.topRightBorderStroke=r>0||o>0?Fv(i.left+m,i.top+y/2,a-B/2,l-y/2,$_.TOP_RIGHT):new wv(i.left+i.width-B/2,i.top+y/2),this.bottomRightBorderStroke=h>0||c>0?Fv(i.left+v,i.top+_,h-B/2,c-w/2,$_.BOTTOM_RIGHT):new wv(i.left+i.width-B/2,i.top+i.height-w/2),this.bottomLeftBorderStroke=d>0||p>0?Fv(i.left+x/2,i.top+b,d-x/2,p-w/2,$_.BOTTOM_LEFT):new wv(i.left+x/2,i.top+i.height-w/2),this.topLeftBorderBox=r>0||o>0?Fv(i.left,i.top,r,o,$_.TOP_LEFT):new wv(i.left,i.top),this.topRightBorderBox=a>0||l>0?Fv(i.left+m,i.top,a,l,$_.TOP_RIGHT):new wv(i.left+i.width,i.top),this.bottomRightBorderBox=h>0||c>0?Fv(i.left+v,i.top+_,h,c,$_.BOTTOM_RIGHT):new wv(i.left+i.width,i.top+i.height),this.bottomLeftBorderBox=d>0||p>0?Fv(i.left,i.top+b,d,p,$_.BOTTOM_LEFT):new wv(i.left,i.top+i.height),this.topLeftPaddingBox=r>0||o>0?Fv(i.left+x,i.top+y,Math.max(0,r-x),Math.max(0,o-y),$_.TOP_LEFT):new wv(i.left+x,i.top+y),this.topRightPaddingBox=a>0||l>0?Fv(i.left+Math.min(m,i.width-B),i.top+y,m>i.width+B?0:Math.max(0,a-B),Math.max(0,l-y),$_.TOP_RIGHT):new wv(i.left+i.width-B,i.top+y),this.bottomRightPaddingBox=h>0||c>0?Fv(i.left+Math.min(v,i.width-x),i.top+Math.min(_,i.height-w),Math.max(0,h-B),Math.max(0,c-w),$_.BOTTOM_RIGHT):new wv(i.left+i.width-B,i.top+i.height-w),this.bottomLeftPaddingBox=d>0||p>0?Fv(i.left+x,i.top+Math.min(b,i.height-w),Math.max(0,d-x),Math.max(0,p-w),$_.BOTTOM_LEFT):new wv(i.left+x,i.top+i.height-w),this.topLeftContentBox=r>0||o>0?Fv(i.left+x+F,i.top+y+P,Math.max(0,r-(x+F)),Math.max(0,o-(y+P)),$_.TOP_LEFT):new wv(i.left+x+F,i.top+y+P),this.topRightContentBox=a>0||l>0?Fv(i.left+Math.min(m,i.width+x+F),i.top+y+P,m>i.width+x+F?0:a-x+F,l-(y+P),$_.TOP_RIGHT):new wv(i.left+i.width-(B+C),i.top+y+P),this.bottomRightContentBox=h>0||c>0?Fv(i.left+Math.min(v,i.width-(x+F)),i.top+Math.min(_,i.height+y+P),Math.max(0,h-(B+C)),c-(w+M),$_.BOTTOM_RIGHT):new wv(i.left+i.width-(B+C),i.top+i.height-(w+M)),this.bottomLeftContentBox=d>0||p>0?Fv(i.left+x+F,i.top+b,Math.max(0,d-(x+F)),p-(w+M),$_.BOTTOM_LEFT):new wv(i.left+x+F,i.top+i.height-(w+M))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}($_||($_={}));var Fv=function(e,t,i,s,r){var o=(Math.sqrt(2)-1)/3*4,n=i*o,a=s*o,l=e+i,A=t+s;switch(r){case $_.TOP_LEFT:return new Pv(new wv(e,A),new wv(e,A-a),new wv(l-n,t),new wv(l,t));case $_.TOP_RIGHT:return new Pv(new wv(e,t),new wv(e+n,t),new wv(l,A-a),new wv(l,A));case $_.BOTTOM_RIGHT:return new Pv(new wv(l,t),new wv(l,t+a),new wv(e+n,A),new wv(e,A));case $_.BOTTOM_LEFT:default:return new Pv(new wv(l,A),new wv(l-n,A),new wv(e,t+a),new wv(e,t))}},Ev=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},Iv=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},Dv=function(e,t,i){this.offsetX=e,this.offsetY=t,this.matrix=i,this.type=0,this.target=6},Sv=function(e,t){this.path=e,this.target=t,this.type=1},Tv=function(e){this.opacity=e,this.type=2,this.target=6},Rv=function(e){return 1===e.type},Lv=function(e,t){return e.length===t.length&&e.some((function(e,i){return e===t[i]}))},Uv=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},kv=function(){function e(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new Mv(this.container),this.container.styles.opacity<1&&this.effects.push(new Tv(this.container.styles.opacity)),null!==this.container.styles.transform){var i=this.container.bounds.left+this.container.styles.transformOrigin[0].number,s=this.container.bounds.top+this.container.styles.transformOrigin[1].number,r=this.container.styles.transform;this.effects.push(new Dv(i,s,r))}if(0!==this.container.styles.overflowX){var o=Ev(this.curves),n=Iv(this.curves);Lv(o,n)?this.effects.push(new Sv(o,6)):(this.effects.push(new Sv(o,2)),this.effects.push(new Sv(n,4)))}}return e.prototype.getEffects=function(e){for(var t=-1===[2,3].indexOf(this.container.styles.position),i=this.parent,s=this.effects.slice(0);i;){var r=i.effects.filter((function(e){return!Rv(e)}));if(t||0!==i.container.styles.position||!i.parent){if(s.unshift.apply(s,r),t=-1===[2,3].indexOf(i.container.styles.position),0!==i.container.styles.overflowX){var o=Ev(i.curves),n=Iv(i.curves);Lv(o,n)||s.unshift(new Sv(n,6))}}else s.unshift.apply(s,r);i=i.parent}return s.filter((function(t){return Am(t.target,e)}))},e}(),Ov=function(e,t,i,s){e.container.elements.forEach((function(r){var o=Am(r.flags,4),n=Am(r.flags,2),a=new kv(r,e);Am(r.styles.display,2048)&&s.push(a);var l=Am(r.flags,8)?[]:s;if(o||n){var A=o||r.styles.isPositioned()?i:t,h=new Uv(a);if(r.styles.isPositioned()||r.styles.opacity<1||r.styles.isTransformed()){var c=r.styles.zIndex.order;if(c<0){var u=0;A.negativeZIndex.some((function(e,t){return c>e.element.container.styles.zIndex.order?(u=t,!1):u>0})),A.negativeZIndex.splice(u,0,h)}else if(c>0){var d=0;A.positiveZIndex.some((function(e,t){return c>=e.element.container.styles.zIndex.order?(d=t+1,!1):d>0})),A.positiveZIndex.splice(d,0,h)}else A.zeroOrAutoZIndexOrTransformedOrOpacity.push(h)}else r.styles.isFloating()?A.nonPositionedFloats.push(h):A.nonPositionedInlineLevel.push(h);Ov(a,h,o?h:i,l)}else r.styles.isInlineLevel()?t.inlineLevel.push(a):t.nonInlineLevel.push(a),Ov(a,t,i,l);Am(r.flags,8)&&Nv(r,l)}))},Nv=function(e,t){for(var i=e instanceof A_?e.start:1,s=e instanceof A_&&e.reversed,r=0;r0&&e.intrinsicHeight>0){var s=Gv(e),r=Iv(t);this.path(r),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(i,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(e){return md(this,void 0,void 0,(function(){var i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v;return _d(this,(function(b){switch(b.label){case 0:this.applyEffects(e.getEffects(4)),i=e.container,s=e.curves,r=i.styles,o=0,n=i.textNodes,b.label=1;case 1:return o0&&w>0&&(m=s.ctx.createPattern(p,"repeat"),s.renderRepeat(v,m,P,C))):function(e){return 2===e.type}(i)&&(_=zv(e,t,[null,null,null]),v=_[0],b=_[1],y=_[2],B=_[3],w=_[4],x=0===i.position.length?[uf]:i.position,P=ff(x[0],B),C=ff(x[x.length-1],w),M=function(e,t,i,s,r){var o=0,n=0;switch(e.size){case 0:0===e.shape?o=n=Math.min(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(o=Math.min(Math.abs(t),Math.abs(t-s)),n=Math.min(Math.abs(i),Math.abs(i-r)));break;case 2:if(0===e.shape)o=n=Math.min(Uf(t,i),Uf(t,i-r),Uf(t-s,i),Uf(t-s,i-r));else if(1===e.shape){var a=Math.min(Math.abs(i),Math.abs(i-r))/Math.min(Math.abs(t),Math.abs(t-s)),l=kf(s,r,t,i,!0),A=l[0],h=l[1];n=a*(o=Uf(A-t,(h-i)/a))}break;case 1:0===e.shape?o=n=Math.max(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(o=Math.max(Math.abs(t),Math.abs(t-s)),n=Math.max(Math.abs(i),Math.abs(i-r)));break;case 3:if(0===e.shape)o=n=Math.max(Uf(t,i),Uf(t,i-r),Uf(t-s,i),Uf(t-s,i-r));else if(1===e.shape){a=Math.max(Math.abs(i),Math.abs(i-r))/Math.max(Math.abs(t),Math.abs(t-s));var c=kf(s,r,t,i,!1);A=c[0],h=c[1],n=a*(o=Uf(A-t,(h-i)/a))}}return Array.isArray(e.size)&&(o=ff(e.size[0],s),n=2===e.size.length?ff(e.size[1],r):o),[o,n]}(i,P,C,B,w),F=M[0],E=M[1],F>0&&E>0&&(I=s.ctx.createRadialGradient(b+P,y+C,0,b+P,y+C,F),Rf(i.stops,2*F).forEach((function(e){return I.addColorStop(e.stop,Bf(e.color))})),s.path(v),s.ctx.fillStyle=I,F!==E?(D=e.bounds.left+.5*e.bounds.width,S=e.bounds.top+.5*e.bounds.height,R=1/(T=E/F),s.ctx.save(),s.ctx.translate(D,S),s.ctx.transform(1,0,0,T,0,0),s.ctx.translate(-D,-S),s.ctx.fillRect(b,R*(y-S)+S,B,w*R),s.ctx.restore()):s.ctx.fill())),L.label=6;case 6:return t--,[2]}}))},s=this,r=0,o=e.styles.backgroundImage.slice(0).reverse(),a.label=1;case 1:return r0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,o,e.curves,2)]:[3,11]:[3,13];case 4:return h.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,o,e.curves,3)];case 6:return h.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,o,e.curves)];case 8:return h.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,o,e.curves)];case 10:h.sent(),h.label=11;case 11:o++,h.label=12;case 12:return n++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(e,t,i,s,r){return md(this,void 0,void 0,(function(){var o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b;return _d(this,(function(y){return this.ctx.save(),o=function(e,t){switch(t){case 0:return Vv(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return Vv(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return Vv(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return Vv(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(s,i),n=Qv(s,i),2===r&&(this.path(n),this.ctx.clip()),Cv(n[0])?(a=n[0].start.x,l=n[0].start.y):(a=n[0].x,l=n[0].y),Cv(n[1])?(A=n[1].end.x,h=n[1].end.y):(A=n[1].x,h=n[1].y),c=0===i||2===i?Math.abs(a-A):Math.abs(l-h),this.ctx.beginPath(),3===r?this.formatPath(o):this.formatPath(n.slice(0,2)),u=t<3?3*t:2*t,d=t<3?2*t:t,3===r&&(u=t,d=t),p=!0,c<=2*u?p=!1:c<=2*u+d?(u*=f=c/(2*u+d),d*=f):(g=Math.floor((c+d)/(u+d)),m=(c-g*u)/(g-1),d=(_=(c-(g+1)*u)/g)<=0||Math.abs(d-m){})),wb(this,"_reject",(()=>{})),this.name=e,this.workerThread=t,this.result=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}postMessage(e,t){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:t})}done(e){gb(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){gb(this.isRunning),this.isRunning=!1,this._reject(e)}}class Pb{}const Cb=new Map;function Mb(e){gb(e.source&&!e.url||!e.source&&e.url);let t=Cb.get(e.source||e.url);return t||(e.url&&(t=function(e){if(!e.startsWith("http"))return e;return Fb((t=e,"try {\n importScripts('".concat(t,"');\n} catch (error) {\n console.error(error);\n throw error;\n}")));var t}(e.url),Cb.set(e.url,t)),e.source&&(t=Fb(e.source),Cb.set(e.source,t))),gb(t),t}function Fb(e){const t=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(t)}function Eb(e,t=!0,i){const s=i||new Set;if(e){if(Ib(e))s.add(e);else if(Ib(e.buffer))s.add(e.buffer);else if(ArrayBuffer.isView(e));else if(t&&"object"==typeof e)for(const i in e)Eb(e[i],t,s)}else;return void 0===i?Array.from(s):[]}function Ib(e){return!!e&&(e instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&e instanceof MessagePort||("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)))}const Db=()=>{};class Sb{static isSupported(){return"undefined"!=typeof Worker&&vb||void 0!==typeof Pb}constructor(e){wb(this,"name",void 0),wb(this,"source",void 0),wb(this,"url",void 0),wb(this,"terminated",!1),wb(this,"worker",void 0),wb(this,"onMessage",void 0),wb(this,"onError",void 0),wb(this,"_loadableURL","");const{name:t,source:i,url:s}=e;gb(i||s),this.name=t,this.source=i,this.url=s,this.onMessage=Db,this.onError=e=>console.log(e),this.worker=vb?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Db,this.onError=Db,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,t){t=t||Eb(e),this.worker.postMessage(e,t)}_getErrorFromErrorEvent(e){let t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),e.message&&(t+="".concat(e.message," in ")),e.lineno&&(t+=":".concat(e.lineno,":").concat(e.colno)),new Error(t)}_createBrowserWorker(){this._loadableURL=Mb({source:this.source,url:this.url});const e=new Worker(this._loadableURL,{name:this.name});return e.onmessage=e=>{e.data?this.onMessage(e.data):this.onError(new Error("No data received"))},e.onerror=e=>{this.onError(this._getErrorFromErrorEvent(e)),this.terminated=!0},e.onmessageerror=e=>console.error(e),e}_createNodeWorker(){let e;if(this.url){const t=this.url.includes(":/")||this.url.startsWith("/")?this.url:"./".concat(this.url);e=new Pb(t,{eval:!1})}else{if(!this.source)throw new Error("no worker");e=new Pb(this.source,{eval:!0})}return e.on("message",(e=>{this.onMessage(e)})),e.on("error",(e=>{this.onError(e)})),e.on("exit",(e=>{})),e}}class Tb{static isSupported(){return Sb.isSupported()}constructor(e){wb(this,"name","unnamed"),wb(this,"source",void 0),wb(this,"url",void 0),wb(this,"maxConcurrency",1),wb(this,"maxMobileConcurrency",1),wb(this,"onDebug",(()=>{})),wb(this,"reuseWorkers",!0),wb(this,"props",{}),wb(this,"jobQueue",[]),wb(this,"idleQueue",[]),wb(this,"count",0),wb(this,"isDestroyed",!1),this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach((e=>e.destroy())),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}async startJob(e,t=((e,t,i)=>e.done(i)),i=((e,t)=>e.error(t))){const s=new Promise((s=>(this.jobQueue.push({name:e,onMessage:t,onError:i,onStart:s}),this)));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;const e=this._getAvailableWorker();if(!e)return;const t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:e,backlog:this.jobQueue.length});const i=new xb(t.name,e);e.onMessage=e=>t.onMessage(i,e.type,e.payload),e.onError=e=>t.onError(i,e),t.onStart(i);try{await i.result}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}};class Lb{static isSupported(){return Sb.isSupported()}static getWorkerFarm(e={}){return Lb._workerFarm=Lb._workerFarm||new Lb({}),Lb._workerFarm.setProps(e),Lb._workerFarm}constructor(e){wb(this,"props",void 0),wb(this,"workerPools",new Map),this.props={...Rb},this.setProps(e),this.workerPools=new Map}destroy(){for(const e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props={...this.props,...e};for(const e of this.workerPools.values())e.setProps(this._getWorkerPoolProps())}getWorkerPool(e){const{name:t,source:i,url:s}=e;let r=this.workerPools.get(t);return r||(r=new Tb({name:t,source:i,url:s}),r.setProps(this._getWorkerPoolProps()),this.workerPools.set(t,r)),r}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}wb(Lb,"_workerFarm",void 0);var Ub=Object.freeze({__proto__:null,default:{}});const kb={};async function Ob(e,t=null,i={}){return t&&(e=function(e,t,i){if(e.startsWith("http"))return e;const s=i.modules||{};if(s[e])return s[e];if(!vb)return"modules/".concat(t,"/dist/libs/").concat(e);if(i.CDN)return gb(i.CDN.startsWith("http")),"".concat(i.CDN,"/").concat(t,"@").concat("3.2.6","/dist/libs/").concat(e);if(bb)return"../src/libs/".concat(e);return"modules/".concat(t,"/src/libs/").concat(e)}(e,t,i)),kb[e]=kb[e]||async function(e){if(e.endsWith("wasm")){const t=await fetch(e);return await t.arrayBuffer()}if(!vb)try{return Ub&&void 0}catch{return null}if(bb)return importScripts(e);const t=await fetch(e);return function(e,t){if(!vb)return;if(bb)return eval.call(_b,e),null;const i=document.createElement("script");i.id=t;try{i.appendChild(document.createTextNode(e))}catch(t){i.text=e}return document.body.appendChild(i),null}(await t.text(),e)}(e),await kb[e]}async function Nb(e,t,i,s,r){const o=e.id,n=function(e,t={}){const i=t[e.id]||{},s="".concat(e.id,"-worker.js");let r=i.workerUrl;if(r||"compression"!==e.id||(r=t.workerUrl),"test"===t._workerType&&(r="modules/".concat(e.module,"/dist/").concat(s)),!r){let t=e.version;"latest"===t&&(t="latest");const i=t?"@".concat(t):"";r="https://unpkg.com/@loaders.gl/".concat(e.module).concat(i,"/dist/").concat(s)}return gb(r),r}(e,i),a=Lb.getWorkerFarm(i).getWorkerPool({name:o,url:n});i=JSON.parse(JSON.stringify(i)),s=JSON.parse(JSON.stringify(s||{}));const l=await a.startJob("process-on-worker",Qb.bind(null,r));l.postMessage("process",{input:t,options:i,context:s});const A=await l.result;return await A.result}async function Qb(e,t,i,s){switch(i){case"done":t.done(s);break;case"error":t.error(new Error(s.error));break;case"process":const{id:r,input:o,options:n}=s;try{const i=await e(o,n);t.postMessage("done",{id:r,result:i})}catch(e){const i=e instanceof Error?e.message:"unknown error";t.postMessage("error",{id:r,error:i})}break;default:console.warn("parse-with-worker unknown message ".concat(i))}}function Vb(e,t,i){if(e.byteLength<=t+i)return"";const s=new DataView(e);let r="";for(let e=0;e=0),db(t>0),e+(t-1)&~(t-1)}function Kb(e,t,i){let s;if(e instanceof ArrayBuffer)s=new Uint8Array(e);else{const t=e.byteOffset,i=e.byteLength;s=new Uint8Array(e.buffer||e.arrayBuffer,t,i)}return t.set(s,i),i+Wb(s.byteLength,4)}async function Xb(e){const t=[];for await(const i of e)t.push(i);return function(...e){const t=e.map((e=>e instanceof ArrayBuffer?new Uint8Array(e):e)),i=t.reduce(((e,t)=>e+t.byteLength),0),s=new Uint8Array(i);let r=0;for(const e of t)s.set(e,r),r+=e.byteLength;return s.buffer}(...t)}const Jb={};const Yb=e=>"function"==typeof e,Zb=e=>null!==e&&"object"==typeof e,qb=e=>Zb(e)&&e.constructor==={}.constructor,$b=e=>"undefined"!=typeof Response&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json,ey=e=>"undefined"!=typeof Blob&&e instanceof Blob,ty=e=>(e=>"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||Zb(e)&&Yb(e.tee)&&Yb(e.cancel)&&Yb(e.getReader))(e)||(e=>Zb(e)&&Yb(e.read)&&Yb(e.pipe)&&(e=>"boolean"==typeof e)(e.readable))(e),iy=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,sy=/^([-\w.]+\/[-\w.+]+)/;function ry(e){const t=sy.exec(e);return t?t[1]:e}function oy(e){const t=iy.exec(e);return t?t[1]:""}const ny=/\?.*/;function ay(e){if($b(e)){const t=ly(e.url||"");return{url:t,type:ry(e.headers.get("content-type")||"")||oy(t)}}return ey(e)?{url:ly(e.name||""),type:e.type||""}:"string"==typeof e?{url:ly(e),type:oy(e)}:{url:"",type:""}}function ly(e){return e.replace(ny,"")}async function Ay(e){if($b(e))return e;const t={},i=function(e){return $b(e)?e.headers["content-length"]||-1:ey(e)?e.size:"string"==typeof e?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}(e);i>=0&&(t["content-length"]=String(i));const{url:s,type:r}=ay(e);r&&(t["content-type"]=r);const o=await async function(e){const t=5;if("string"==typeof e)return"data:,".concat(e.slice(0,t));if(e instanceof Blob){const t=e.slice(0,5);return await new Promise((e=>{const i=new FileReader;i.onload=t=>{var i;return e(null==t||null===(i=t.target)||void 0===i?void 0:i.result)},i.readAsDataURL(t)}))}if(e instanceof ArrayBuffer){const i=function(e){let t="";const i=new Uint8Array(e);for(let e=0;e=0)}();class gy{constructor(e,t,i="sessionStorage"){this.storage=function(e){try{const t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}(i),this.id=e,this.config={},Object.assign(this.config,t),this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){return this.config={},this.updateConfiguration(e)}updateConfiguration(e){if(Object.assign(this.config,e),this.storage){const e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}return this}_loadConfiguration(){let e={};if(this.storage){const t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}function my(e,t,i,s=600){const r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));const o=e.width*i,n=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(n/2),"px ").concat(Math.floor(o/2),"px;"),"line-height:".concat(n,"px;"),"background:url(".concat(r,");"),"background-size:".concat(o,"px ").concat(n,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}const _y={BLACK:30,RED:31,GREEN:32,YELLOW:33,BLUE:34,MAGENTA:35,CYAN:36,WHITE:37,BRIGHT_BLACK:90,BRIGHT_RED:91,BRIGHT_GREEN:92,BRIGHT_YELLOW:93,BRIGHT_BLUE:94,BRIGHT_MAGENTA:95,BRIGHT_CYAN:96,BRIGHT_WHITE:97};function vy(e){return"string"==typeof e?_y[e.toUpperCase()]||_y.WHITE:e}function by(e,t){if(!e)throw new Error(t||"Assertion failed")}function yy(){let e;if(fy&&uy.performance)e=uy.performance.now();else if(dy.hrtime){const t=dy.hrtime();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}const By={debug:fy&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},wy={enabled:!0,level:0};function xy(){}const Py={},Cy={once:!0};function My(e){for(const t in e)for(const i in e[t])return i||"untitled";return"empty"}class Fy{constructor({id:e}={id:""}){this.id=e,this.VERSION=py,this._startTs=yy(),this._deltaTs=yy(),this.LOG_THROTTLE_TIMEOUT=0,this._storage=new gy("__probe-".concat(this.id,"__"),wy),this.userData={},this.timeStamp("".concat(this.id," started")),function(e,t=["constructor"]){const i=Object.getPrototypeOf(e),s=Object.getOwnPropertyNames(i);for(const i of s)"function"==typeof e[i]&&(t.find((e=>i===e))||(e[i]=e[i].bind(e)))}(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((yy()-this._startTs).toPrecision(10))}getDelta(){return Number((yy()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(e=!0){return this._storage.updateConfiguration({enabled:e}),this}setLevel(e){return this._storage.updateConfiguration({level:e}),this}assert(e,t){by(e,t)}warn(e){return this._getLogFunction(0,e,By.warn,arguments,Cy)}error(e){return this._getLogFunction(0,e,By.error,arguments)}deprecated(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}removed(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}probe(e,t){return this._getLogFunction(e,t,By.log,arguments,{time:!0,once:!0})}log(e,t){return this._getLogFunction(e,t,By.debug,arguments)}info(e,t){return this._getLogFunction(e,t,console.info,arguments)}once(e,t){return this._getLogFunction(e,t,By.debug||By.info,arguments,Cy)}table(e,t,i){return t?this._getLogFunction(e,t,console.table||xy,i&&[i],{tag:My(t)}):xy}image({logLevel:e,priority:t,image:i,message:s="",scale:r=1}){return this._shouldLog(e||t)?fy?function({image:e,message:t="",scale:i=1}){if("string"==typeof e){const s=new Image;return s.onload=()=>{const e=my(s,t,i);console.log(...e)},s.src=e,xy}const s=e.nodeName||"";if("img"===s.toLowerCase())return console.log(...my(e,t,i)),xy;if("canvas"===s.toLowerCase()){const s=new Image;return s.onload=()=>console.log(...my(s,t,i)),s.src=e.toDataURL(),xy}return xy}({image:i,message:s,scale:r}):function({image:e,message:t="",scale:i=1}){let s=null;try{s=module.require("asciify-image")}catch(e){}if(s)return()=>s(e,{fit:"box",width:"".concat(Math.round(80*i),"%")}).then((e=>console.log(e)));return xy}({image:i,message:s,scale:r}):xy}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}get(e){return this._storage.config[e]}set(e,t){this._storage.updateConfiguration({[e]:t})}time(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}timeEnd(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(e,t){return this._getLogFunction(e,t,console.timeStamp||xy)}group(e,t,i={collapsed:!1}){i=Iy({logLevel:e,message:t,opts:i});const{collapsed:s}=i;return i.method=(s?console.groupCollapsed:console.group)||console.info,this._getLogFunction(i)}groupCollapsed(e,t,i={}){return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||xy)}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=Ey(e)}_getLogFunction(e,t,i,s=[],r){if(this._shouldLog(e)){r=Iy({logLevel:e,message:t,args:s,opts:r}),by(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=yy();const o=r.tag||r.message;if(r.once){if(Py[o])return xy;Py[o]=yy()}return t=function(e,t,i){if("string"==typeof t){const s=i.time?function(e,t=8){const i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}(function(e){let t;return t=e<10?"".concat(e.toFixed(2),"ms"):e<100?"".concat(e.toFixed(1),"ms"):e<1e3?"".concat(e.toFixed(0),"ms"):"".concat((e/1e3).toFixed(2),"s"),t}(i.total)):"";t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),t=function(e,t,i){return fy||"string"!=typeof e||(t&&(t=vy(t),e="[".concat(t,"m").concat(e,"")),i&&(t=vy(i),e="[".concat(i+10,"m").concat(e,""))),e}(t,i.color,i.background)}return t}(this.id,r.message,r),i.bind(console,t,...r.args)}return xy}}function Ey(e){if(!e)return 0;let t;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return by(Number.isFinite(t)&&t>=0),t}function Iy(e){const{logLevel:t,message:i}=e;e.logLevel=Ey(t);const s=e.args?Array.from(e.args):[];for(;s.length&&s.shift()!==i;);switch(e.args=s,typeof t){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());const r=typeof e.message;return by("string"===r||"object"===r),Object.assign(e,e.opts)}Fy.VERSION=py;const Dy=new Fy({id:"loaders.gl"});class Sy{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}const Ty={fetch:null,mimeType:void 0,nothrow:!1,log:new class{constructor(){wb(this,"console",void 0),this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}},CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:pb,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},Ry={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function Ly(){globalThis.loaders=globalThis.loaders||{};const{loaders:e}=globalThis;return e._state=e._state||{},e._state}const Uy=()=>{const e=Ly();return e.globalOptions=e.globalOptions||{...Ty},e.globalOptions};function ky(e,t,i,s){return i=i||[],function(e,t){Ny(e,null,Ty,Ry,t);for(const i of t){const s=e&&e[i.id]||{},r=i.options&&i.options[i.id]||{},o=i.deprecatedOptions&&i.deprecatedOptions[i.id]||{};Ny(s,i.id,r,o,t)}}(e,i=Array.isArray(i)?i:[i]),function(e,t,i){const s={...e.options||{}};(function(e,t){t&&!("baseUri"in e)&&(e.baseUri=t)})(s,i),null===s.log&&(s.log=new Sy);return Vy(s,Uy()),Vy(s,t),s}(t,e,s)}function Oy(e,t){const i=Uy(),s=e||i;return"function"==typeof s.fetch?s.fetch:Zb(s.fetch)?e=>hy(e,s):null!=t&&t.fetch?null==t?void 0:t.fetch:hy}function Ny(e,t,i,s,r){const o=t||"Top level",n=t?"".concat(t,"."):"";for(const a in e){const l=!t&&Zb(e[a]),A="baseUri"===a&&!t,h="workerUrl"===a&&t;if(!(a in i)&&!A&&!h)if(a in s)Dy.warn("".concat(o," loader option '").concat(n).concat(a,"' no longer supported, use '").concat(s[a],"'"))();else if(!l){const e=Qy(a,r);Dy.warn("".concat(o," loader option '").concat(n).concat(a,"' not recognized. ").concat(e))()}}}function Qy(e,t){const i=e.toLowerCase();let s="";for(const r of t)for(const t in r.options){if(e===t)return"Did you mean '".concat(r.id,".").concat(t,"'?");const o=t.toLowerCase();(i.startsWith(o)||o.startsWith(i))&&(s=s||"Did you mean '".concat(r.id,".").concat(t,"'?"))}return s}function Vy(e,t){for(const i in t)if(i in t){const s=t[i];qb(s)&&qb(e[i])?e[i]={...e[i],...t[i]}:e[i]=t[i]}}function Hy(e){var t;if(!e)return!1;Array.isArray(e)&&(e=e[0]);return Array.isArray(null===(t=e)||void 0===t?void 0:t.extensions)}function jy(e){var t,i;let s;return db(e,"null loader"),db(Hy(e),"invalid loader"),Array.isArray(e)&&(s=e[1],e=e[0],e={...e,options:{...e.options,...s}}),(null!==(t=e)&&void 0!==t&&t.parseTextSync||null!==(i=e)&&void 0!==i&&i.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}function Gy(){return(()=>{const e=Ly();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry})()}function zy(){return!("object"==typeof process&&"[object process]"===String(process)&&!process.browser)||function(e){if("undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof process&&"object"==typeof process.versions&&Boolean(process.versions.electron))return!0;const t="object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent,i=e||t;return!!(i&&i.indexOf("Electron")>=0)}()}const Wy={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document,process:"object"==typeof process&&process},Ky=Wy.window||Wy.self||Wy.global,Xy=Wy.process||{},Jy="undefined"!=typeof __VERSION__?__VERSION__:"untranspiled source";zy();class Yy{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sessionStorage";wb(this,"storage",void 0),wb(this,"id",void 0),wb(this,"config",{}),this.storage=function(e){try{const t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}(i),this.id=e,this.config={},Object.assign(this.config,t),this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){return this.config={},this.updateConfiguration(e)}updateConfiguration(e){if(Object.assign(this.config,e),this.storage){const e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}return this}_loadConfiguration(){let e={};if(this.storage){const t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}function Zy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:600;const r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));const o=e.width*i,n=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(n/2),"px ").concat(Math.floor(o/2),"px;"),"line-height:".concat(n,"px;"),"background:url(".concat(r,");"),"background-size:".concat(o,"px ").concat(n,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}let qy;function $y(e){return"string"==typeof e?qy[e.toUpperCase()]||qy.WHITE:e}function eB(e,t){if(!e)throw new Error(t||"Assertion failed")}function tB(){let e;var t,i;if(zy&&"performance"in Ky)e=null==Ky||null===(t=Ky.performance)||void 0===t||null===(i=t.now)||void 0===i?void 0:i.call(t);else if("hrtime"in Xy){var s;const t=null==Xy||null===(s=Xy.hrtime)||void 0===s?void 0:s.call(Xy);e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}!function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"}(qy||(qy={}));const iB={debug:zy&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},sB={enabled:!0,level:0};function rB(){}const oB={},nB={once:!0};class aB{constructor(){let{id:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:""};wb(this,"id",void 0),wb(this,"VERSION",Jy),wb(this,"_startTs",tB()),wb(this,"_deltaTs",tB()),wb(this,"_storage",void 0),wb(this,"userData",{}),wb(this,"LOG_THROTTLE_TIMEOUT",0),this.id=e,this._storage=new Yy("__probe-".concat(this.id,"__"),sB),this.userData={},this.timeStamp("".concat(this.id," started")),function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["constructor"];const i=Object.getPrototypeOf(e),s=Object.getOwnPropertyNames(i);for(const i of s)"function"==typeof e[i]&&(t.find((e=>i===e))||(e[i]=e[i].bind(e)))}(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((tB()-this._startTs).toPrecision(10))}getDelta(){return Number((tB()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._storage.updateConfiguration({enabled:e}),this}setLevel(e){return this._storage.updateConfiguration({level:e}),this}get(e){return this._storage.config[e]}set(e,t){this._storage.updateConfiguration({[e]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(e,t){eB(e,t)}warn(e){return this._getLogFunction(0,e,iB.warn,arguments,nB)}error(e){return this._getLogFunction(0,e,iB.error,arguments)}deprecated(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}removed(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}probe(e,t){return this._getLogFunction(e,t,iB.log,arguments,{time:!0,once:!0})}log(e,t){return this._getLogFunction(e,t,iB.debug,arguments)}info(e,t){return this._getLogFunction(e,t,console.info,arguments)}once(e,t){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r{const t=Zy(e,i,s);console.log(...t)},e.src=t,rB}const r=t.nodeName||"";if("img"===r.toLowerCase())return console.log(...Zy(t,i,s)),rB;if("canvas"===r.toLowerCase()){const e=new Image;return e.onload=()=>console.log(...Zy(e,i,s)),e.src=t.toDataURL(),rB}return rB}({image:s,message:r,scale:o}):function(e){let{image:t,message:i="",scale:s=1}=e,r=null;try{r=module.require("asciify-image")}catch(e){}if(r)return()=>r(t,{fit:"box",width:"".concat(Math.round(80*s),"%")}).then((e=>console.log(e)));return rB}({image:s,message:r,scale:o}):rB}time(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}timeEnd(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(e,t){return this._getLogFunction(e,t,console.timeStamp||rB)}group(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{collapsed:!1};const s=AB({logLevel:e,message:t,opts:i}),{collapsed:r}=i;return s.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||rB)}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=lB(e)}_getLogFunction(e,t,i,s,r){if(this._shouldLog(e)){r=AB({logLevel:e,message:t,args:s,opts:r}),eB(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=tB();const o=r.tag||r.message;if(r.once){if(oB[o])return rB;oB[o]=tB()}return t=function(e,t,i){if("string"==typeof t){const s=i.time?function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;const i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}(function(e){let t;return t=e<10?"".concat(e.toFixed(2),"ms"):e<100?"".concat(e.toFixed(1),"ms"):e<1e3?"".concat(e.toFixed(0),"ms"):"".concat((e/1e3).toFixed(2),"s"),t}(i.total)):"";t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),t=function(e,t,i){return zy||"string"!=typeof e||(t&&(t=$y(t),e="[".concat(t,"m").concat(e,"")),i&&(t=$y(i),e="[".concat(i+10,"m").concat(e,""))),e}(t,i.color,i.background)}return t}(this.id,r.message,r),i.bind(console,t,...r.args)}return rB}}function lB(e){if(!e)return 0;let t;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return eB(Number.isFinite(t)&&t>=0),t}function AB(e){const{logLevel:t,message:i}=e;e.logLevel=lB(t);const s=e.args?Array.from(e.args):[];for(;s.length&&s.shift()!==i;);switch(typeof t){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());const r=typeof e.message;return eB("string"===r||"object"===r),Object.assign(e,{args:s},e.opts)}function hB(e){for(const t in e)for(const i in e[t])return i||"untitled";return"empty"}wb(aB,"VERSION",Jy);const cB=new aB({id:"loaders.gl"}),uB=/\.([^.]+)$/;function dB(e,t=[],i,s){if(!pB(e))return null;if(t&&!Array.isArray(t))return jy(t);let r=[];t&&(r=r.concat(t)),null!=i&&i.ignoreRegisteredLoaders||r.push(...Gy()),function(e){for(const t of e)jy(t)}(r);const o=function(e,t,i,s){const{url:r,type:o}=ay(e),n=r||(null==s?void 0:s.url);let a=null,l="";null!=i&&i.mimeType&&(a=gB(t,null==i?void 0:i.mimeType),l="match forced by supplied MIME type ".concat(null==i?void 0:i.mimeType));var A;a=a||function(e,t){const i=t&&uB.exec(t),s=i&&i[1];return s?function(e,t){t=t.toLowerCase();for(const i of e)for(const e of i.extensions)if(e.toLowerCase()===t)return i;return null}(e,s):null}(t,n),l=l||(a?"matched url ".concat(n):""),a=a||gB(t,o),l=l||(a?"matched MIME type ".concat(o):""),a=a||function(e,t){if(!t)return null;for(const i of e)if("string"==typeof t){if(mB(t,i))return i}else if(ArrayBuffer.isView(t)){if(_B(t.buffer,t.byteOffset,i))return i}else if(t instanceof ArrayBuffer){if(_B(t,0,i))return i}return null}(t,e),l=l||(a?"matched initial data ".concat(vB(e)):""),a=a||gB(t,null==i?void 0:i.fallbackMimeType),l=l||(a?"matched fallback MIME type ".concat(o):""),l&&cB.log(1,"selectLoader selected ".concat(null===(A=a)||void 0===A?void 0:A.name,": ").concat(l,"."));return a}(e,r,i,s);if(!(o||null!=i&&i.nothrow))throw new Error(fB(e));return o}function pB(e){return!(e instanceof Response&&204===e.status)}function fB(e){const{url:t,type:i}=ay(e);let s="No valid loader found (";s+=t?"".concat(function(e){const t=e&&e.lastIndexOf("/");return t>=0?e.substr(t+1):""}(t),", "):"no url provided, ",s+="MIME type: ".concat(i?'"'.concat(i,'"'):"not provided",", ");const r=e?vB(e):"";return s+=r?' first bytes: "'.concat(r,'"'):"first bytes: not available",s+=")",s}function gB(e,t){for(const i of e){if(i.mimeTypes&&i.mimeTypes.includes(t))return i;if(t==="application/x.".concat(i.id))return i}return null}function mB(e,t){if(t.testText)return t.testText(e);return(Array.isArray(t.tests)?t.tests:[t.tests]).some((t=>e.startsWith(t)))}function _B(e,t,i){return(Array.isArray(i.tests)?i.tests:[i.tests]).some((s=>function(e,t,i,s){if(s instanceof ArrayBuffer)return function(e,t,i){if(i=i||e.byteLength,e.byteLength60?"".concat(t.slice(0,60),"..."):t}catch(e){}return t}(e);throw new Error(t)}}(i),t.binary?await i.arrayBuffer():await i.text()}if(ty(e)&&(e=wB(e,i)),(r=e)&&"function"==typeof r[Symbol.iterator]||(e=>e&&"function"==typeof e[Symbol.asyncIterator])(e))return Xb(e);var r;throw new Error(xB)}async function CB(e,t,i,s){gb(!s||"object"==typeof s),!t||Array.isArray(t)||Hy(t)||(s=void 0,i=t,t=void 0),e=await e,i=i||{};const{url:r}=ay(e),o=function(e,t){if(!t&&e&&!Array.isArray(e))return e;let i;if(e&&(i=Array.isArray(e)?e:[e]),t&&t.loaders){const e=Array.isArray(t.loaders)?t.loaders:[t.loaders];i=i?[...i,...e]:e}return i&&i.length?i:null}(t,s),n=await async function(e,t=[],i,s){if(!pB(e))return null;let r=dB(e,t,{...i,nothrow:!0},s);if(r)return r;if(ey(e)&&(r=dB(e=await e.slice(0,10).arrayBuffer(),t,i,s)),!(r||null!=i&&i.nothrow))throw new Error(fB(e));return r}(e,o,i);return n?(s=function(e,t,i=null){if(i)return i;const s={fetch:Oy(t,e),...e};return Array.isArray(s.loaders)||(s.loaders=null),s}({url:r,parse:CB,loaders:o},i=ky(i,n,o,r),s),await async function(e,t,i,s){if(function(e,t="3.2.6"){gb(e,"no worker provided");const i=e.version}(e),$b(t)){const e=t,{ok:i,redirected:r,status:o,statusText:n,type:a,url:l}=e,A=Object.fromEntries(e.headers.entries());s.response={headers:A,ok:i,redirected:r,status:o,statusText:n,type:a,url:l}}if(t=await PB(t,e,i),e.parseTextSync&&"string"==typeof t)return i.dataType="text",e.parseTextSync(t,i,s,e);if(function(e,t){return!!Lb.isSupported()&&!!(vb||null!=t&&t._nodeWorkers)&&e.worker&&(null==t?void 0:t.worker)}(e,i))return await Nb(e,t,i,s,CB);if(e.parseText&&"string"==typeof t)return await e.parseText(t,i,s,e);if(e.parse)return await e.parse(t,i,s,e);throw gb(!e.parseSync),new Error("".concat(e.id," loader - no parser found and worker is disabled"))}(n,e,i,s)):null}const MB="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.wasm"),FB="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.js");let EB,IB;async function DB(e){const t=e.modules||{};return t.basis?t.basis:(EB=EB||async function(e){let t=null,i=null;return[t,i]=await Promise.all([await Ob("basis_transcoder.js","textures",e),await Ob("basis_transcoder.wasm","textures",e)]),t=t||globalThis.BASIS,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e(i).then((e=>{const{BasisFile:i,initializeBasis:s}=e;s(),t({BasisFile:i})}))}))}(t,i)}(e),await EB)}async function SB(e){const t=e.modules||{};return t.basisEncoder?t.basisEncoder:(IB=IB||async function(e){let t=null,i=null;return[t,i]=await Promise.all([await Ob(FB,"textures",e),await Ob(MB,"textures",e)]),t=t||globalThis.BASIS,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e(i).then((e=>{const{BasisFile:i,KTX2File:s,initializeBasis:r,BasisEncoder:o}=e;r(),t({BasisFile:i,KTX2File:s,BasisEncoder:o})}))}))}(t,i)}(e),await IB)}const TB=33776,RB=33779,LB=35840,UB=35842,kB=36196,OB=37808,NB=["","WEBKIT_","MOZ_"],QB={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"};let VB=null;function HB(e){if(!VB){e=e||function(){try{return document.createElement("canvas").getContext("webgl")}catch(e){return null}}()||void 0,VB=new Set;for(const t of NB)for(const i in QB)if(e&&e.getExtension("".concat(t).concat(i))){const e=QB[i];VB.add(e)}}return VB}var jB,GB,zB,WB,KB,XB,JB,YB,ZB;(ZB=jB||(jB={}))[ZB.NONE=0]="NONE",ZB[ZB.BASISLZ=1]="BASISLZ",ZB[ZB.ZSTD=2]="ZSTD",ZB[ZB.ZLIB=3]="ZLIB",function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}(GB||(GB={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(zB||(zB={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(WB||(WB={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(KB||(KB={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(XB||(XB={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(JB||(JB={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(YB||(YB={}));const qB=[171,75,84,88,32,50,48,187,13,10,26,10];const $B={etc1:{basisFormat:0,compressed:!0,format:kB},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:TB},bc3:{basisFormat:3,compressed:!0,format:RB},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:LB},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:UB},"astc-4x4":{basisFormat:10,compressed:!0,format:OB},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};function ew(e,t,i){const s=new e(new Uint8Array(t));try{if(!s.startTranscoding())throw new Error("Failed to start basis transcoding");const e=s.getNumImages(),t=[];for(let r=0;r{try{i.onload=()=>t(i),i.onerror=t=>s(new Error("Could not load image ".concat(e,": ").concat(t)))}catch(e){s(e)}}))}(o||s,t)}finally{o&&r.revokeObjectURL(o)}}const _w={};let vw=!0;async function bw(e,t,i){let s;if(fw(i)){s=await mw(e,t,i)}else s=gw(e,i);const r=t&&t.imagebitmap;return await async function(e,t=null){!function(e){for(const t in e||_w)return!1;return!0}(t)&&vw||(t=null);if(t)try{return await createImageBitmap(e,t)}catch(e){console.warn(e),vw=!1}return await createImageBitmap(e)}(s,r)}function yw(e){const t=Bw(e);return function(e){const t=Bw(e);if(!(t.byteLength>=24&&2303741511===t.getUint32(0,false)))return null;return{mimeType:"image/png",width:t.getUint32(16,false),height:t.getUint32(20,false)}}(t)||function(e){const t=Bw(e);if(!(t.byteLength>=3&&65496===t.getUint16(0,false)&&255===t.getUint8(2)))return null;const{tableMarkers:i,sofMarkers:s}=function(){const e=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)e.add(t);const t=new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502]);return{tableMarkers:e,sofMarkers:t}}();let r=2;for(;r+9=10&&1195984440===t.getUint32(0,false)))return null;return{mimeType:"image/gif",width:t.getUint16(6,true),height:t.getUint16(8,true)}}(t)||function(e){const t=Bw(e);if(!(t.byteLength>=14&&16973===t.getUint16(0,false)&&t.getUint32(2,true)===t.byteLength))return null;return{mimeType:"image/bmp",width:t.getUint32(18,true),height:t.getUint32(22,true)}}(t)}function Bw(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}const ww={id:"image",module:"images",name:"Images",version:"3.2.6",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg"],parse:async function(e,t,i){const s=((t=t||{}).image||{}).type||"auto",{url:r}=i||{};let o;switch(function(e){switch(e){case"auto":case"data":return function(){if(Aw)return"imagebitmap";if(lw)return"image";if(cw)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(e){switch(e){case"auto":return Aw||lw||cw;case"imagebitmap":return Aw;case"image":return lw;case"data":return cw;default:throw new Error("@loaders.gl/images: image ".concat(e," not supported in this environment"))}}(e),e}}(s)){case"imagebitmap":o=await bw(e,t,r);break;case"image":o=await mw(e,t,r);break;case"data":o=await async function(e,t){const{mimeType:i}=yw(e)||{},s=globalThis._parseImageNode;return db(s),await s(e,i)}(e);break;default:db(!1)}return"data"===s&&(o=function(e){switch(uw(e)){case"data":return e;case"image":case"imagebitmap":const t=document.createElement("canvas"),i=t.getContext("2d");if(!i)throw new Error("getImageData");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0),i.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}(o)),o},tests:[e=>Boolean(yw(new DataView(e)))],options:{image:{type:"auto",decode:!0}}},xw=["image/png","image/jpeg","image/gif"],Pw={};function Cw(e){return void 0===Pw[e]&&(Pw[e]=function(e){switch(e){case"image/webp":return function(){if(!pb)return!1;try{return 0===document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp")}catch{return!1}}();case"image/svg":return pb;default:if(!pb){const{_parseImageNode:t}=globalThis;return Boolean(t)&&xw.includes(e)}return!0}}(e)),Pw[e]}function Mw(e,t){if(!e)throw new Error(t||"assert failed: gltf")}function Fw(e,t){if(e.startsWith("data:")||e.startsWith("http:")||e.startsWith("https:"))return e;const i=t.baseUri||t.uri;if(!i)throw new Error("'baseUri' must be provided to resolve relative url ".concat(e));return i.substr(0,i.lastIndexOf("/")+1)+e}const Ew=["SCALAR","VEC2","VEC3","VEC4"],Iw=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Dw=new Map(Iw),Sw={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Tw={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Rw={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Lw(e){return Ew[e-1]||Ew[0]}function Uw(e){const t=Dw.get(e.constructor);if(!t)throw new Error("Illegal typed array");return t}function kw(e,t){const i=Rw[e.componentType],s=Sw[e.type],r=Tw[e.componentType],o=e.count*s,n=e.count*s*r;return Mw(n>=0&&n<=t.byteLength),{ArrayType:i,length:o,byteLength:n}}const Ow={asset:{version:"2.0",generator:"loaders.gl"},buffers:[]};class Nw{constructor(e){wb(this,"gltf",void 0),wb(this,"sourceBuffers",void 0),wb(this,"byteLength",void 0),this.gltf=e||{json:{...Ow},buffers:[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}getExtension(e){const t=this.getUsedExtensions().find((t=>t===e)),i=this.json.extensions||{};return t?i[e]||!0:null}getRequiredExtension(e){const t=this.getRequiredExtensions().find((t=>t===e));return t?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if("object"==typeof t)return t;const i=this.json[e]&&this.json[e][t];if(!i)throw new Error("glTF file error: Could not find ".concat(e,"[").concat(t,"]"));return i}getTypedArrayForBufferView(e){const t=(e=this.getBufferView(e)).buffer,i=this.gltf.buffers[t];Mw(i);const s=(e.byteOffset||0)+i.byteOffset;return new Uint8Array(i.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){e=this.getAccessor(e);const t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,{ArrayType:s,length:r}=kw(e,t);return new s(i,t.byteOffset+e.byteOffset,r)}getTypedArrayForImageData(e){e=this.getAccessor(e);const t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(i,s,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,i){return e.extensions=e.extensions||{},e.extensions[t]=i,this.registerUsedExtension(t),this}setObjectExtension(e,t,i){(e.extensions||{})[t]=i}removeObjectExtension(e,t){const i=e.extensions||{},s=i[t];return delete i[t],s}addExtension(e,t={}){return Mw(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return Mw(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find((t=>t===e))||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find((t=>t===e))||this.json.extensionsRequired.push(e)}removeExtension(e){this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e),this.json.extensions&&delete this.json.extensions[e]}setDefaultScene(e){this.json.scene=e}addScene(e){const{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){const{meshIndex:t,matrix:i}=e;this.json.nodes=this.json.nodes||[];const s={mesh:t};return i&&(s.matrix=i),this.json.nodes.push(s),this.json.nodes.length-1}addMesh(e){const{attributes:t,indices:i,material:s,mode:r=4}=e,o={primitives:[{attributes:this._addAttributes(t),mode:r}]};if(i){const e=this._addIndices(i);o.primitives[0].indices=e}return Number.isFinite(s)&&(o.primitives[0].material=s),this.json.meshes=this.json.meshes||[],this.json.meshes.push(o),this.json.meshes.length-1}addPointCloud(e){const t={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(t),this.json.meshes.length-1}addImage(e,t){const i=yw(e),s=t||(null==i?void 0:i.mimeType),r={bufferView:this.addBufferView(e),mimeType:s};return this.json.images=this.json.images||[],this.json.images.push(r),this.json.images.length-1}addBufferView(e){const t=e.byteLength;Mw(Number.isFinite(t)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);const i={buffer:0,byteOffset:this.byteLength,byteLength:t};return this.byteLength+=Wb(t,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(i),this.json.bufferViews.length-1}addAccessor(e,t){const i={bufferView:e,type:Lw(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(i),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){const i=this.addBufferView(e);let s={min:t.min,max:t.max};s.min&&s.max||(s=this._getAccessorMinMax(e,t.size));const r={size:t.size,componentType:Uw(e),count:Math.round(e.length/t.size),min:s.min,max:s.max};return this.addAccessor(i,Object.assign(r,t))}addTexture(e){const{imageIndex:t}=e,i={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(i),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){var e,t;this.gltf.buffers=[];const i=this.byteLength,s=new ArrayBuffer(i),r=new Uint8Array(s);let o=0;for(const e of this.sourceBuffers||[])o=Kb(e,r,o);null!==(e=this.json)&&void 0!==e&&null!==(t=e.buffers)&&void 0!==t&&t[0]?this.json.buffers[0].byteLength=i:this.json.buffers=[{byteLength:i}],this.gltf.binary=s,this.sourceBuffers=[s]}_removeStringFromArray(e,t){let i=!0;for(;i;){const s=e.indexOf(t);s>-1?e.splice(s,1):i=!1}}_addAttributes(e={}){const t={};for(const i in e){const s=e[i],r=this._getGltfAttributeName(i),o=this.addBinaryBuffer(s.value,s);t[r]=o}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){const i={min:null,max:null};if(e.length96?s-71:s>64?s-65:s>47?s+4:s>46?63:62}let i=0;for(let s=0;st[e.name]));return new $w(i,this.metadata)}selectAt(...e){const t=e.map((e=>this.fields[e])).filter(Boolean);return new $w(t,this.metadata)}assign(e){let t,i=this.metadata;if(e instanceof $w){const s=e;t=s.fields,i=ex(ex(new Map,this.metadata),s.metadata)}else t=e;const s=Object.create(null);for(const e of this.fields)s[e.name]=e;for(const e of t)s[e.name]=e;const r=Object.values(s);return new $w(r,i)}}function ex(e,t){return new Map([...e||new Map,...t||new Map])}class tx{constructor(e,t,i=!1,s=new Map){wb(this,"name",void 0),wb(this,"type",void 0),wb(this,"nullable",void 0),wb(this,"metadata",void 0),this.name=e,this.type=t,this.nullable=i,this.metadata=s}get typeId(){return this.type&&this.type.typeId}clone(){return new tx(this.name,this.type,this.nullable,this.metadata)}compareTo(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}toString(){return"".concat(this.type).concat(this.nullable?", nullable":"").concat(this.metadata?", metadata: ".concat(this.metadata):"")}}let ix,sx,rx,ox;!function(e){e[e.NONE=0]="NONE",e[e.Null=1]="Null",e[e.Int=2]="Int",e[e.Float=3]="Float",e[e.Binary=4]="Binary",e[e.Utf8=5]="Utf8",e[e.Bool=6]="Bool",e[e.Decimal=7]="Decimal",e[e.Date=8]="Date",e[e.Time=9]="Time",e[e.Timestamp=10]="Timestamp",e[e.Interval=11]="Interval",e[e.List=12]="List",e[e.Struct=13]="Struct",e[e.Union=14]="Union",e[e.FixedSizeBinary=15]="FixedSizeBinary",e[e.FixedSizeList=16]="FixedSizeList",e[e.Map=17]="Map",e[e.Dictionary=-1]="Dictionary",e[e.Int8=-2]="Int8",e[e.Int16=-3]="Int16",e[e.Int32=-4]="Int32",e[e.Int64=-5]="Int64",e[e.Uint8=-6]="Uint8",e[e.Uint16=-7]="Uint16",e[e.Uint32=-8]="Uint32",e[e.Uint64=-9]="Uint64",e[e.Float16=-10]="Float16",e[e.Float32=-11]="Float32",e[e.Float64=-12]="Float64",e[e.DateDay=-13]="DateDay",e[e.DateMillisecond=-14]="DateMillisecond",e[e.TimestampSecond=-15]="TimestampSecond",e[e.TimestampMillisecond=-16]="TimestampMillisecond",e[e.TimestampMicrosecond=-17]="TimestampMicrosecond",e[e.TimestampNanosecond=-18]="TimestampNanosecond",e[e.TimeSecond=-19]="TimeSecond",e[e.TimeMillisecond=-20]="TimeMillisecond",e[e.TimeMicrosecond=-21]="TimeMicrosecond",e[e.TimeNanosecond=-22]="TimeNanosecond",e[e.DenseUnion=-23]="DenseUnion",e[e.SparseUnion=-24]="SparseUnion",e[e.IntervalDayTime=-25]="IntervalDayTime",e[e.IntervalYearMonth=-26]="IntervalYearMonth"}(ix||(ix={}));class nx{static isNull(e){return e&&e.typeId===ix.Null}static isInt(e){return e&&e.typeId===ix.Int}static isFloat(e){return e&&e.typeId===ix.Float}static isBinary(e){return e&&e.typeId===ix.Binary}static isUtf8(e){return e&&e.typeId===ix.Utf8}static isBool(e){return e&&e.typeId===ix.Bool}static isDecimal(e){return e&&e.typeId===ix.Decimal}static isDate(e){return e&&e.typeId===ix.Date}static isTime(e){return e&&e.typeId===ix.Time}static isTimestamp(e){return e&&e.typeId===ix.Timestamp}static isInterval(e){return e&&e.typeId===ix.Interval}static isList(e){return e&&e.typeId===ix.List}static isStruct(e){return e&&e.typeId===ix.Struct}static isUnion(e){return e&&e.typeId===ix.Union}static isFixedSizeBinary(e){return e&&e.typeId===ix.FixedSizeBinary}static isFixedSizeList(e){return e&&e.typeId===ix.FixedSizeList}static isMap(e){return e&&e.typeId===ix.Map}static isDictionary(e){return e&&e.typeId===ix.Dictionary}get typeId(){return ix.NONE}compareTo(e){return this===e}}sx=Symbol.toStringTag;class ax extends nx{constructor(e,t){super(),wb(this,"isSigned",void 0),wb(this,"bitWidth",void 0),this.isSigned=e,this.bitWidth=t}get typeId(){return ix.Int}get[sx](){return"Int"}toString(){return"".concat(this.isSigned?"I":"Ui","nt").concat(this.bitWidth)}}class lx extends ax{constructor(){super(!0,8)}}class Ax extends ax{constructor(){super(!0,16)}}class hx extends ax{constructor(){super(!0,32)}}class cx extends ax{constructor(){super(!1,8)}}class ux extends ax{constructor(){super(!1,16)}}class dx extends ax{constructor(){super(!1,32)}}const px=32,fx=64;rx=Symbol.toStringTag;class gx extends nx{constructor(e){super(),wb(this,"precision",void 0),this.precision=e}get typeId(){return ix.Float}get[rx](){return"Float"}toString(){return"Float".concat(this.precision)}}class mx extends gx{constructor(){super(px)}}class _x extends gx{constructor(){super(fx)}}ox=Symbol.toStringTag;class vx extends nx{constructor(e,t){super(),wb(this,"listSize",void 0),wb(this,"children",void 0),this.listSize=e,this.children=[t]}get typeId(){return ix.FixedSizeList}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get[ox](){return"FixedSizeList"}toString(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">")}}function bx(e,t,i){const s=function(e){switch(e.constructor){case Int8Array:return new lx;case Uint8Array:return new cx;case Int16Array:return new Ax;case Uint16Array:return new ux;case Int32Array:return new hx;case Uint32Array:return new dx;case Float32Array:return new mx;case Float64Array:return new _x;default:throw new Error("array type not supported")}}(t.value),r=i||function(e){const t=new Map;"byteOffset"in e&&t.set("byteOffset",e.byteOffset.toString(10));"byteStride"in e&&t.set("byteStride",e.byteStride.toString(10));"normalized"in e&&t.set("normalized",e.normalized.toString());return t}(t);return new tx(e,new vx(t.size,new tx("value",s)),!1,r)}function yx(e,t,i){return bx(e,t,i?Bx(i.metadata):void 0)}function Bx(e){const t=new Map;for(const i in e)t.set("".concat(i,".string"),JSON.stringify(e[i]));return t}const wx={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},xx={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array};class Px{constructor(e){wb(this,"draco",void 0),wb(this,"decoder",void 0),wb(this,"metadataQuerier",void 0),this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){const i=new this.draco.DecoderBuffer;i.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);const s=this.decoder.GetEncodedGeometryType(i),r=s===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let e;switch(s){case this.draco.TRIANGULAR_MESH:e=this.decoder.DecodeBufferToMesh(i,r);break;case this.draco.POINT_CLOUD:e=this.decoder.DecodeBufferToPointCloud(i,r);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!e.ok()||!r.ptr){const t="DRACO decompression failed: ".concat(e.error_msg());throw new Error(t)}const o=this._getDracoLoaderData(r,s,t),n=this._getMeshData(r,o,t),a=function(e){let t=1/0,i=1/0,s=1/0,r=-1/0,o=-1/0,n=-1/0;const a=e.POSITION?e.POSITION.value:[],l=a&&a.length;for(let e=0;er?l:r,o=A>o?A:o,n=h>n?h:n}return[[t,i,s],[r,o,n]]}(n.attributes),l=function(e,t,i){const s=Bx(t.metadata),r=[],o=function(e){const t={};for(const i in e){const s=e[i];t[s.name||"undefined"]=s}return t}(t.attributes);for(const t in e){const i=yx(t,e[t],o[t]);r.push(i)}if(i){const e=yx("indices",i);r.push(e)}return new $w(r,s)}(n.attributes,o,n.indices);return{loader:"draco",loaderData:o,header:{vertexCount:r.num_points(),boundingBox:a},...n,schema:l}}finally{this.draco.destroy(i),r&&this.draco.destroy(r)}}_getDracoLoaderData(e,t,i){const s=this._getTopLevelMetadata(e),r=this._getDracoAttributes(e,i);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:s,attributes:r}}_getDracoAttributes(e,t){const i={};for(let s=0;sthis.decoder[e])).includes(s)){const t=new this.draco.AttributeQuantizationTransform;try{if(t.InitFromAttribute(e))return{quantization_bits:t.quantization_bits(),range:t.range(),min_values:new Float32Array([1,2,3]).map((e=>t.min_value(e)))}}finally{this.draco.destroy(t)}}return null}_getOctahedronTransform(e,t){const{octahedronAttributes:i=[]}=t,s=e.attribute_type();if(i.map((e=>this.decoder[e])).includes(s)){const t=new this.draco.AttributeQuantizationTransform;try{if(t.InitFromAttribute(e))return{quantization_bits:t.quantization_bits()}}finally{this.draco.destroy(t)}}return null}}const Cx="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_decoder.js"),Mx="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_wasm_wrapper.js"),Fx="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_decoder.wasm");let Ex;async function Ix(e){const t=e.modules||{};return Ex=t.draco3d?Ex||t.draco3d.createDecoderModule({}).then((e=>({draco:e}))):Ex||async function(e){let t,i;if("js"===(e.draco&&e.draco.decoderType))t=await Ob(Cx,"draco",e);else[t,i]=await Promise.all([await Ob(Mx,"draco",e),await Ob(Fx,"draco",e)]);return t=t||globalThis.DracoDecoderModule,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e({...i,onModuleLoaded:e=>t({draco:e})})}))}(t,i)}(e),await Ex}const Dx={...qw,parse:async function(e,t){const{draco:i}=await Ix(t),s=new Px(i);try{return s.parseSync(e,null==t?void 0:t.draco)}finally{s.destroy()}}};function Sx(e){const{buffer:t,size:i,count:s}=function(e){let t=e,i=1,s=0;e&&e.value&&(t=e.value,i=e.size||1);t&&(ArrayBuffer.isView(t)||(t=function(e,t,i=!1){if(!e)return null;if(Array.isArray(e))return new t(e);if(i&&!(e instanceof t))return new t(e);return e}(t,Float32Array)),s=t.length/i);return{buffer:t,size:i,count:s}}(e);return{value:t,size:i,byteOffset:0,count:s,type:Lw(i),componentType:Uw(t)}}async function Tx(e,t,i,s){const r=e.getObjectExtension(t,"KHR_draco_mesh_compression");if(!r)return;const o=e.getTypedArrayForBufferView(r.bufferView),n=zb(o.buffer,o.byteOffset),{parse:a}=s,l={...i};delete l["3d-tiles"];const A=await a(n,Dx,l,s),h=function(e){const t={};for(const i in e){const s=e[i];if("indices"!==i){const e=Sx(s);t[i]=e}}return t}(A.attributes);for(const[i,s]of Object.entries(h))if(i in t.attributes){const r=t.attributes[i],o=e.getAccessor(r);null!=o&&o.min&&null!=o&&o.max&&(s.min=o.min,s.max=o.max)}t.attributes=h,A.indices&&(t.indices=Sx(A.indices)),function(e){if(!e.attributes&&Object.keys(e.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}(t)}function Rx(e,t,i=4,s,r){var o;if(!s.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");const n=s.DracoWriter.encodeSync({attributes:e}),a=null==r||null===(o=r.parseSync)||void 0===o?void 0:o.call(r,{attributes:e}),l=s._addFauxAttributes(a.attributes);return{primitives:[{attributes:l,mode:i,extensions:{KHR_draco_mesh_compression:{bufferView:s.addBufferView(n),attributes:l}}}]}}function*Lx(e){for(const t of e.json.meshes||[])for(const e of t.primitives)yield e}var Ux=Object.freeze({__proto__:null,name:"KHR_draco_mesh_compression",preprocess:function(e,t,i){const s=new Nw(e);for(const e of Lx(s))s.getObjectExtension(e,"KHR_draco_mesh_compression")},decode:async function(e,t,i){var s;if(null==t||null===(s=t.gltf)||void 0===s||!s.decompressMeshes)return;const r=new Nw(e),o=[];for(const e of Lx(r))r.getObjectExtension(e,"KHR_draco_mesh_compression")&&o.push(Tx(r,e,t,i));await Promise.all(o),r.removeExtension("KHR_draco_mesh_compression")},encode:function(e,t={}){const i=new Nw(e);for(const e of i.json.meshes||[])Rx(e),i.addRequiredExtension("KHR_draco_mesh_compression")}});var kx=Object.freeze({__proto__:null,name:"KHR_lights_punctual",decode:async function(e){const t=new Nw(e),{json:i}=t,s=t.getExtension("KHR_lights_punctual");s&&(t.json.lights=s.lights,t.removeExtension("KHR_lights_punctual"));for(const e of i.nodes||[]){const i=t.getObjectExtension(e,"KHR_lights_punctual");i&&(e.light=i.light),t.removeObjectExtension(e,"KHR_lights_punctual")}},encode:async function(e){const t=new Nw(e),{json:i}=t;if(i.lights){const e=t.addExtension("KHR_lights_punctual");Mw(!e.lights),e.lights=i.lights,delete i.lights}if(t.json.lights){for(const e of t.json.lights){const i=e.node;t.addObjectExtension(i,"KHR_lights_punctual",e)}delete t.json.lights}}});function Ox(e,t){const i=Object.assign({},e.values);return Object.keys(e.uniforms||{}).forEach((t=>{e.uniforms[t].value&&!(t in i)&&(i[t]=e.uniforms[t].value)})),Object.keys(i).forEach((e=>{"object"==typeof i[e]&&void 0!==i[e].index&&(i[e].texture=t.getTexture(i[e].index))})),i}const Nx=[Jw,Yw,Zw,Ux,kx,Object.freeze({__proto__:null,name:"KHR_materials_unlit",decode:async function(e){const t=new Nw(e),{json:i}=t;t.removeExtension("KHR_materials_unlit");for(const e of i.materials||[]){e.extensions&&e.extensions.KHR_materials_unlit&&(e.unlit=!0),t.removeObjectExtension(e,"KHR_materials_unlit")}},encode:function(e){const t=new Nw(e),{json:i}=t;if(t.materials)for(const e of i.materials||[])e.unlit&&(delete e.unlit,t.addObjectExtension(e,"KHR_materials_unlit",{}),t.addExtension("KHR_materials_unlit"))}}),Object.freeze({__proto__:null,name:"KHR_techniques_webgl",decode:async function(e){const t=new Nw(e),{json:i}=t,s=t.getExtension("KHR_techniques_webgl");if(s){const e=function(e,t){const{programs:i=[],shaders:s=[],techniques:r=[]}=e,o=new TextDecoder;return s.forEach((e=>{if(!Number.isFinite(e.bufferView))throw new Error("KHR_techniques_webgl: no shader code");e.code=o.decode(t.getTypedArrayForBufferView(e.bufferView))})),i.forEach((e=>{e.fragmentShader=s[e.fragmentShader],e.vertexShader=s[e.vertexShader]})),r.forEach((e=>{e.program=i[e.program]})),r}(s,t);for(const s of i.materials||[]){const i=t.getObjectExtension(s,"KHR_techniques_webgl");i&&(s.technique=Object.assign({},i,e[i.technique]),s.technique.values=Ox(s.technique,t)),t.removeObjectExtension(s,"KHR_techniques_webgl")}t.removeExtension("KHR_techniques_webgl")}},encode:async function(e,t){}})];function Qx(e,t){var i;const s=(null==t||null===(i=t.gltf)||void 0===i?void 0:i.excludeExtensions)||{};return!(e in s&&!s[e])}const Vx={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},Hx={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"};class jx{constructor(){wb(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}}),wb(this,"json",void 0)}normalize(e,t){this.json=e.json;const i=e.json;switch(i.asset&&i.asset.version){case"2.0":return;case void 0:case"1.0":break;default:return void console.warn("glTF: Unknown version ".concat(i.asset.version))}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(i),this._convertTopLevelObjectsToArrays(i),function(e){const t=new Nw(e),{json:i}=t;for(const e of i.images||[]){const i=t.getObjectExtension(e,"KHR_binary_glTF");i&&Object.assign(e,i),t.removeObjectExtension(e,"KHR_binary_glTF")}i.buffers&&i.buffers[0]&&delete i.buffers[0].uri,t.removeExtension("KHR_binary_glTF")}(e),this._convertObjectIdsToArrayIndices(i),this._updateObjects(i),this._updateMaterial(i)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(const t in Vx)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){const i=e[t];if(i&&!Array.isArray(i)){e[t]=[];for(const s in i){const r=i[s];r.id=r.id||s;const o=e[t].length;e[t].push(r),this.idToIndexMap[t][s]=o}}}_convertObjectIdsToArrayIndices(e){for(const t in Vx)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(const t of e.textures)this._convertTextureIds(t);for(const t of e.meshes)this._convertMeshIds(t);for(const t of e.nodes)this._convertNodeIds(t);for(const t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(const t of e.primitives){const{attributes:e,indices:i,material:s}=t;for(const t in e)e[t]=this._convertIdToIndex(e[t],"accessor");i&&(t.indices=this._convertIdToIndex(i,"accessor")),s&&(t.material=this._convertIdToIndex(s,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map((e=>this._convertIdToIndex(e,"node")))),e.meshes&&(e.meshes=e.meshes.map((e=>this._convertIdToIndex(e,"mesh"))))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map((e=>this._convertIdToIndex(e,"node"))))}_convertIdsToIndices(e,t){e[t]||(console.warn("gltf v1: json doesn't contain attribute ".concat(t)),e[t]=[]);for(const i of e[t])for(const e in i){const t=i[e],s=this._convertIdToIndex(t,e);i[e]=s}}_convertIdToIndex(e,t){const i=Hx[t];if(i in this.idToIndexMap){const s=this.idToIndexMap[i][e];if(!Number.isFinite(s))throw new Error("gltf v1: failed to resolve ".concat(t," with id ").concat(e));return s}return e}_updateObjects(e){for(const e of this.json.buffers)delete e.type}_updateMaterial(e){for(const s of e.materials){var t,i;s.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};const r=(null===(t=s.values)||void 0===t?void 0:t.tex)||(null===(i=s.values)||void 0===i?void 0:i.texture2d_0),o=e.textures.findIndex((e=>e.id===r));-1!==o&&(s.pbrMetallicRoughness.baseColorTexture={index:o})}}}const Gx={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},zx={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Wx=10240,Kx=10241,Xx=10242,Jx=10243,Yx=10497,Zx={magFilter:Wx,minFilter:Kx,wrapS:Xx,wrapT:Jx},qx={[Wx]:9729,[Kx]:9986,[Xx]:Yx,[Jx]:Yx};class $x{constructor(){wb(this,"baseUri",""),wb(this,"json",{}),wb(this,"buffers",[]),wb(this,"images",[])}postProcess(e,t={}){const{json:i,buffers:s=[],images:r=[],baseUri:o=""}=e;return Mw(i),this.baseUri=o,this.json=i,this.buffers=s,this.images=r,this._resolveTree(this.json,t),this.json}_resolveTree(e,t={}){e.bufferViews&&(e.bufferViews=e.bufferViews.map(((e,t)=>this._resolveBufferView(e,t)))),e.images&&(e.images=e.images.map(((e,t)=>this._resolveImage(e,t)))),e.samplers&&(e.samplers=e.samplers.map(((e,t)=>this._resolveSampler(e,t)))),e.textures&&(e.textures=e.textures.map(((e,t)=>this._resolveTexture(e,t)))),e.accessors&&(e.accessors=e.accessors.map(((e,t)=>this._resolveAccessor(e,t)))),e.materials&&(e.materials=e.materials.map(((e,t)=>this._resolveMaterial(e,t)))),e.meshes&&(e.meshes=e.meshes.map(((e,t)=>this._resolveMesh(e,t)))),e.nodes&&(e.nodes=e.nodes.map(((e,t)=>this._resolveNode(e,t)))),e.skins&&(e.skins=e.skins.map(((e,t)=>this._resolveSkin(e,t)))),e.scenes&&(e.scenes=e.scenes.map(((e,t)=>this._resolveScene(e,t)))),void 0!==e.scene&&(e.scene=e.scenes[this.json.scene])}getScene(e){return this._get("scenes",e)}getNode(e){return this._get("nodes",e)}getSkin(e){return this._get("skins",e)}getMesh(e){return this._get("meshes",e)}getMaterial(e){return this._get("materials",e)}getAccessor(e){return this._get("accessors",e)}getCamera(e){return null}getTexture(e){return this._get("textures",e)}getSampler(e){return this._get("samplers",e)}getImage(e){return this._get("images",e)}getBufferView(e){return this._get("bufferViews",e)}getBuffer(e){return this._get("buffers",e)}_get(e,t){if("object"==typeof t)return t;const i=this.json[e]&&this.json[e][t];return i||console.warn("glTF file error: Could not find ".concat(e,"[").concat(t,"]")),i}_resolveScene(e,t){return e.id=e.id||"scene-".concat(t),e.nodes=(e.nodes||[]).map((e=>this.getNode(e))),e}_resolveNode(e,t){return e.id=e.id||"node-".concat(t),e.children&&(e.children=e.children.map((e=>this.getNode(e)))),void 0!==e.mesh?e.mesh=this.getMesh(e.mesh):void 0!==e.meshes&&e.meshes.length&&(e.mesh=e.meshes.reduce(((e,t)=>{const i=this.getMesh(t);return e.id=i.id,e.primitives=e.primitives.concat(i.primitives),e}),{primitives:[]})),void 0!==e.camera&&(e.camera=this.getCamera(e.camera)),void 0!==e.skin&&(e.skin=this.getSkin(e.skin)),e}_resolveSkin(e,t){return e.id=e.id||"skin-".concat(t),e.inverseBindMatrices=this.getAccessor(e.inverseBindMatrices),e}_resolveMesh(e,t){return e.id=e.id||"mesh-".concat(t),e.primitives&&(e.primitives=e.primitives.map((e=>{const t=(e={...e}).attributes;e.attributes={};for(const i in t)e.attributes[i]=this.getAccessor(t[i]);return void 0!==e.indices&&(e.indices=this.getAccessor(e.indices)),void 0!==e.material&&(e.material=this.getMaterial(e.material)),e}))),e}_resolveMaterial(e,t){if(e.id=e.id||"material-".concat(t),e.normalTexture&&(e.normalTexture={...e.normalTexture},e.normalTexture.texture=this.getTexture(e.normalTexture.index)),e.occlusionTexture&&(e.occlustionTexture={...e.occlustionTexture},e.occlusionTexture.texture=this.getTexture(e.occlusionTexture.index)),e.emissiveTexture&&(e.emmisiveTexture={...e.emmisiveTexture},e.emissiveTexture.texture=this.getTexture(e.emissiveTexture.index)),e.emissiveFactor||(e.emissiveFactor=e.emmisiveTexture?[1,1,1]:[0,0,0]),e.pbrMetallicRoughness){e.pbrMetallicRoughness={...e.pbrMetallicRoughness};const t=e.pbrMetallicRoughness;t.baseColorTexture&&(t.baseColorTexture={...t.baseColorTexture},t.baseColorTexture.texture=this.getTexture(t.baseColorTexture.index)),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture={...t.metallicRoughnessTexture},t.metallicRoughnessTexture.texture=this.getTexture(t.metallicRoughnessTexture.index))}return e}_resolveAccessor(e,t){var i,s;if(e.id=e.id||"accessor-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView)),e.bytesPerComponent=(i=e.componentType,zx[i]),e.components=(s=e.type,Gx[s]),e.bytesPerElement=e.bytesPerComponent*e.components,e.bufferView){const t=e.bufferView.buffer,{ArrayType:i,byteLength:s}=kw(e,e.bufferView),r=(e.bufferView.byteOffset||0)+(e.byteOffset||0)+t.byteOffset;let o=t.arrayBuffer.slice(r,r+s);e.bufferView.byteStride&&(o=this._getValueFromInterleavedBuffer(t,r,e.bufferView.byteStride,e.bytesPerElement,e.count)),e.value=new i(o)}return e}_getValueFromInterleavedBuffer(e,t,i,s,r){const o=new Uint8Array(r*s);for(let n=0;n20);const s=t.getUint32(i+0,tP),r=t.getUint32(i+4,tP);return i+=8,db(0===r),sP(e,t,i,s),i+=s,i+=rP(e,t,i,e.header.byteLength)}(e,r,i);case 2:return function(e,t,i,s){return db(e.header.byteLength>20),function(e,t,i,s){for(;i+8<=e.header.byteLength;){const r=t.getUint32(i+0,tP),o=t.getUint32(i+4,tP);switch(i+=8,o){case 1313821514:sP(e,t,i,r);break;case 5130562:rP(e,t,i,r);break;case 0:s.strict||sP(e,t,i,r);break;case 1:s.strict||rP(e,t,i,r)}i+=Wb(r,4)}}(e,t,i,s),i+e.header.byteLength}(e,r,i,{});default:throw new Error("Invalid GLB version ".concat(e.version,". Only supports v1 and v2."))}}function sP(e,t,i,s){const r=new Uint8Array(t.buffer,i,s),o=new TextDecoder("utf8").decode(r);return e.json=JSON.parse(o),Wb(s,4)}function rP(e,t,i,s){return e.header.hasBinChunk=!0,e.binChunks.push({byteOffset:i,byteLength:s,arrayBuffer:t.buffer}),Wb(s,4)}async function oP(e,t,i=0,s,r){var o,n,a,l;!function(e,t,i,s){s.uri&&(e.baseUri=s.uri);if(t instanceof ArrayBuffer&&!function(e,t=0,i={}){const s=new DataView(e),{magic:r=eP}=i,o=s.getUint32(t,!1);return o===r||o===eP}(t,i,s)){t=(new TextDecoder).decode(t)}if("string"==typeof t)e.json=Hb(t);else if(t instanceof ArrayBuffer){const r={};i=iP(r,t,i,s.glb),Mw("glTF"===r.type,"Invalid GLB magic string ".concat(r.type)),e._glb=r,e.json=r.json}else Mw(!1,"GLTF: must be ArrayBuffer or string");const r=e.json.buffers||[];if(e.buffers=new Array(r.length).fill(null),e._glb&&e._glb.header.hasBinChunk){const{binChunks:t}=e._glb;e.buffers[0]={arrayBuffer:t[0].arrayBuffer,byteOffset:t[0].byteOffset,byteLength:t[0].byteLength}}const o=e.json.images||[];e.images=new Array(o.length).fill({})}(e,t,i,s),function(e,t={}){(new jx).normalize(e,t)}(e,{normalize:null==s||null===(o=s.gltf)||void 0===o?void 0:o.normalize}),function(e,t={},i){const s=Nx.filter((e=>Qx(e.name,t)));for(const o of s){var r;null===(r=o.preprocess)||void 0===r||r.call(o,e,t,i)}}(e,s,r);const A=[];if(null!=s&&null!==(n=s.gltf)&&void 0!==n&&n.loadBuffers&&e.json.buffers&&await async function(e,t,i){const s=e.json.buffers||[];for(let n=0;nQx(e.name,t)));for(const o of s){var r;await(null===(r=o.decode)||void 0===r?void 0:r.call(o,e,t,i))}}(e,s,r);return A.push(h),await Promise.all(A),null!=s&&null!==(l=s.gltf)&&void 0!==l&&l.postProcess?function(e,t){return(new $x).postProcess(e,t)}(e,s):e}async function nP(e,t,i,s,r){const{fetch:o,parse:n}=r;let a;if(t.uri){const e=Fw(t.uri,s),i=await o(e);a=await i.arrayBuffer()}if(Number.isFinite(t.bufferView)){const i=function(e,t,i){const s=e.bufferViews[i];Mw(s);const r=t[s.buffer];Mw(r);const o=(s.byteOffset||0)+r.byteOffset;return new Uint8Array(r.arrayBuffer,o,s.byteLength)}(e.json,e.buffers,t.bufferView);a=zb(i.buffer,i.byteOffset,i.byteLength)}Mw(a,"glTF image has no data");let l=await n(a,[ww,nw],{mimeType:t.mimeType,basis:s.basis||{format:ow()}},r);l&&l[0]&&(l={compressed:!0,mipmaps:!1,width:l[0].width,height:l[0].height,data:l[0]}),e.images=e.images||[],e.images[i]=l}const aP={name:"glTF",id:"gltf",module:"gltf",version:"3.2.6",extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:async function(e,t={},i){(t={...aP.options,...t}).gltf={...aP.options.gltf,...t.gltf};const{byteOffset:s=0}=t;return await oP({},e,s,t,i)},options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0,postProcess:!0},log:console},deprecatedOptions:{fetchImages:"gltf.loadImages",createImages:"gltf.loadImages",decompress:"gltf.decompressMeshes",postProcess:"gltf.postProcess",gltf:{decompress:"gltf.decompressMeshes"}}};class lP{constructor(e){}load(e,t,i,s,r,o,n){!function(e,t,i,s,r,o,n){const a=e.viewer.scene.canvas.spinner;a.processes++;"glb"===t.split(".").pop()?e.dataSource.getGLB(t,(n=>{s.basePath=hP(t),cP(e,t,n,i,s,r,o),a.processes--}),(e=>{a.processes--,n(e)})):e.dataSource.getGLTF(t,(n=>{s.basePath=hP(t),cP(e,t,n,i,s,r,o),a.processes--}),(e=>{a.processes--,n(e)}))}(e,t,i,s=s||{},r,(function(){I.scheduleTask((function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1)})),o&&o()}),(function(t){e.error(t),n&&n(t),r.fire("error",t)}))}parse(e,t,i,s,r,o,n){cP(e,"",t,i,s=s||{},r,(function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1),o&&o()}))}}function AP(e){const t={},i={},s=e.metaObjects||[],r={};for(let e=0,t=s.length;e{const l={src:t,entityId:r.entityId,metaModelCorrections:s?AP(s):null,loadBuffer:r.loadBuffer,basePath:r.basePath,handlenode:r.handlenode,backfaces:!!r.backfaces,gltfData:i,scene:o.scene,plugin:e,sceneModel:o,numObjects:0,nodes:[],nextId:0,log:t=>{e.log(t)}};!function(e){const t=e.gltfData.textures;if(t)for(let i=0,s=t.length;i0)for(let t=0;t0){null==s&&e.log("Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT");let t=s;if(e.metaModelCorrections){const i=e.metaModelCorrections.eachChildRoot[t];if(i){const t=e.metaModelCorrections.eachRootStats[i.id];t.countChildren++,t.countChildren>=t.numChildren&&(o.createEntity({id:i.id,meshIds:gP,isObject:!0}),gP.length=0)}else{e.metaModelCorrections.metaObjectsMap[t]&&(o.createEntity({id:t,meshIds:gP,isObject:!0}),gP.length=0)}}else o.createEntity({id:t,meshIds:gP,isObject:!0}),gP.length=0}}}function _P(e,t){e.plugin.error(t)}const vP={DEFAULT:{}};class bP extends z{constructor(e,t={}){super("GLTFLoader",e,t),this._sceneModelLoader=new lP(this,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults}set dataSource(e){this._dataSource=e||new Qc}get dataSource(){return this._dataSource}set objectDefaults(e){this._objectDefaults=e||vP}get objectDefaults(){return this._objectDefaults}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,dtxEnabled:e.dtxEnabled})),i=t.id;if(!e.src&&!e.gltf)return this.error("load() param expected: src or gltf"),t;if(e.metaModelSrc||e.metaModelJSON){const s=e.objectDefaults||this._objectDefaults||vP,r=r=>{let o;if(this.viewer.metaScene.createMetaModel(i,r,{includeTypes:e.includeTypes,excludeTypes:e.excludeTypes}),this.viewer.scene.canvas.spinner.processes--,e.includeTypes){o={};for(let t=0,i=e.includeTypes.length;t{const r=t.name;if(!r)return!0;const o=r,n=this.viewer.metaScene.metaObjects[o],a=(n?n.type:"DEFAULT")||"DEFAULT";i.createEntity={id:o,isObject:!0};const l=s[a];return l&&(!1===l.visible&&(i.createEntity.visible=!1),l.colorize&&(i.createEntity.colorize=l.colorize),!1===l.pickable&&(i.createEntity.pickable=!1),void 0!==l.opacity&&null!==l.opacity&&(i.createEntity.opacity=l.opacity)),!0},e.src?this._sceneModelLoader.load(this,e.src,r,e,t):this._sceneModelLoader.parse(this,e.gltf,r,e,t)};if(e.metaModelSrc){const t=e.metaModelSrc;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getMetaModel(t,(e=>{this.viewer.scene.canvas.spinner.processes--,r(e)}),(e=>{this.error(`load(): Failed to load model metadata for model '${i} from '${t}' - ${e}`),this.viewer.scene.canvas.spinner.processes--}))}else e.metaModelJSON&&r(e.metaModelJSON)}else e.handleGLTFNode=(e,t,i)=>{const s=t.name;if(!s)return!0;const r=s;return i.createEntity={id:r,isObject:!0},!0},e.src?this._sceneModelLoader.load(this,e.src,null,e,t):this._sceneModelLoader.parse(this,e.gltf,null,e,t);return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}}function yP(e,t,i={}){const s="lightgrey",r=i.hoverColor||"rgba(0,0,0,0.4)",o=i.textColor||"black",n=500,a=n+n/3,l=a/24,A=[{boundary:[6,6,6,6],color:i.frontColor||i.color||"#55FF55"},{boundary:[18,6,6,6],color:i.backColor||i.color||"#55FF55"},{boundary:[12,6,6,6],color:i.rightColor||i.color||"#FF5555"},{boundary:[0,6,6,6],color:i.leftColor||i.color||"#FF5555"},{boundary:[6,0,6,6],color:i.topColor||i.color||"#7777FF"},{boundary:[6,12,6,6],color:i.bottomColor||i.color||"#7777FF"}],h=[{label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,1,0],up:[0,0,1]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,-1,0],up:[0,0,1]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,0,1]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,0,1]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,0,1],up:[0,-1,0]},{boundaries:[[7,5,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,0,-1],up:[1,0,1]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-1,-1],up:[0,-1,1]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,0,-1],up:[-1,0,1]},{boundaries:[[7,11,4,2]],dir:[0,1,1],up:[0,-1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,0,1],up:[-1,0,1]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,-1,1],up:[0,1,1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,0,1],up:[1,0,1]},{boundaries:[[5,7,2,4]],dir:[1,1,0],up:[0,0,1]},{boundaries:[[11,7,2,4]],dir:[-1,1,0],up:[0,0,1]},{boundaries:[[17,7,2,4]],dir:[-1,-1,0],up:[0,0,1]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,-1,0],up:[0,0,1]},{boundaries:[[5,11,2,2]],dir:[1,1,1],up:[-1,-1,1]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[1,-1,1],up:[-1,1,1]},{boundaries:[[5,5,2,2]],dir:[1,1,-1],up:[1,1,1]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-1,-1,1],up:[1,1,1]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-1,-1,-1],up:[-1,-1,1]},{boundaries:[[11,11,2,2]],dir:[-1,1,1],up:[1,-1,1]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[1,-1,-1],up:[1,-1,1]},{boundaries:[[11,5,2,2]],dir:[-1,1,-1],up:[-1,1,1]}];i.frontColor||i.color,i.backColor||i.color,i.rightColor||i.color,i.leftColor||i.color,i.topColor||i.color,i.bottomColor||i.color;const c=[{yUp:"",label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,0,1],up:[0,1,0]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,1,0]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,1,0]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,-1,0],up:[0,0,-1]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,1,0],up:[0,0,1]},{boundaries:[[7,5,4,2]],dir:[0,-.7071,-.7071],up:[0,.7071,-.7071]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,-1,0],up:[1,1,0]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-.7071,.7071],up:[0,.7071,.7071]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,-1,0],up:[-1,1,0]},{boundaries:[[7,11,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,1,0],up:[-1,1,0]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,1,1],up:[0,1,-1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,1,0],up:[1,1,0]},{boundaries:[[5,7,2,4]],dir:[1,0,-1],up:[0,1,0]},{boundaries:[[11,7,2,4]],dir:[-1,0,-1],up:[0,1,0]},{boundaries:[[17,7,2,4]],dir:[-1,0,1],up:[0,1,0]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,0,1],up:[0,1,0]},{boundaries:[[5,11,2,2]],dir:[.5,.7071,-.5],up:[-.5,.7071,.5]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[.5,.7071,.5],up:[-.5,.7071,-.5]},{boundaries:[[5,5,2,2]],dir:[.5,-.7071,-.5],up:[.5,.7071,-.5]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-.5,.7071,.5],up:[.5,.7071,-.5]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-.5,-.7071,.5],up:[-.5,.7071,.5]},{boundaries:[[11,11,2,2]],dir:[-.5,.7071,-.5],up:[.5,.7071,.5]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[.5,-.7071,.5],up:[.5,.7071,.5]},{boundaries:[[11,5,2,2]],dir:[-.5,-.7071,-.5],up:[-.5,.7071,-.5]}];for(let e=0,t=h.length;e=r[0]*l&&t<=(r[0]+r[2])*l&&i>=r[1]*l&&i<=(r[1]+r[3])*l)return s}}return-1},this.setAreaHighlighted=function(e,t){var i=u[e];if(!i)throw"Area not found: "+e;i.highlighted=!!t,g()},this.getAreaDir=function(e){var t=u[e];if(!t)throw"Unknown area: "+e;return t.dir},this.getAreaUp=function(e){var t=u[e];if(!t)throw"Unknown area: "+e;return t.up},this.getImage=function(){return this._textureCanvas},this.destroy=function(){this._textureCanvas&&(this._textureCanvas.parentNode.removeChild(this._textureCanvas),this._textureCanvas=null)}}const BP=d.vec3(),wP=d.vec3();d.mat4();class xP extends z{constructor(e,t={}){super("NavCube",e,t),e.navCube=this;try{this._navCubeScene=new hi(e,{canvasId:t.canvasId,canvasElement:t.canvasElement,transparent:!0}),this._navCubeCanvas=this._navCubeScene.canvas.canvas,this._navCubeScene.input.keyboardEnabled=!1}catch(e){return void this.error(e)}const i=this._navCubeScene;i.clearLights(),new St(i,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new St(i,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new St(i,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._navCubeCamera=i.camera,this._navCubeCamera.ortho.scale=7,this._navCubeCamera.ortho.near=.1,this._navCubeCamera.ortho.far=2e3,i.edgeMaterial.edgeColor=[.2,.2,.2],i.edgeMaterial.edgeAlpha=.6,this._zUp=Boolean(e.camera.zUp);var s=this;this.setIsProjectNorth(t.isProjectNorth),this.setProjectNorthOffsetAngle(t.projectNorthOffsetAngle);const r=function(){const e=d.mat4();return function(t,i,r){return d.identityMat4(e),d.rotationMat4v(t*s._projectNorthOffsetAngle*d.DEGTORAD,[0,1,0],e),d.transformVec3(e,i,r)}}();this._synchCamera=function(){var t=d.rotationMat4c(-90*d.DEGTORAD,1,0,0),i=d.vec3(),o=d.vec3(),n=d.vec3();return function(){var a=e.camera.eye,l=e.camera.look,A=e.camera.up;i=d.mulVec3Scalar(d.normalizeVec3(d.subVec3(a,l,i)),5),s._isProjectNorth&&s._projectNorthOffsetAngle&&(i=r(-1,i,BP),A=r(-1,A,wP)),s._zUp?(d.transformVec3(t,i,o),d.transformVec3(t,A,n),s._navCubeCamera.look=[0,0,0],s._navCubeCamera.eye=d.transformVec3(t,i,o),s._navCubeCamera.up=d.transformPoint3(t,A,n)):(s._navCubeCamera.look=[0,0,0],s._navCubeCamera.eye=i,s._navCubeCamera.up=A)}}(),this._cubeTextureCanvas=new yP(e,i,t),this._cubeSampler=new Xr(i,{image:this._cubeTextureCanvas.getImage(),flipY:!0,wrapS:1001,wrapT:1001}),this._cubeMesh=new fr(i,{geometry:new zt(i,{primitive:"triangles",normals:[0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1],positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),material:new Yt(i,{diffuse:[.4,.4,.4],specular:[.4,.4,.4],emissive:[.6,.6,.6],diffuseMap:this._cubeSampler,emissiveMap:this._cubeSampler}),visible:!0,edges:!0}),this._shadow=!1===t.shadowVisible?null:new fr(i,{geometry:new zt(i,mr({center:[0,0,0],radiusTop:.001,radiusBottom:1.4,height:.01,radialSegments:20,heightSegments:1,openEnded:!0})),material:new Yt(i,{diffuse:[0,0,0],specular:[0,0,0],emissive:[0,0,0],alpha:.5}),position:[0,-1.5,0],visible:!0,pickable:!1,backfaces:!1}),this._onCameraMatrix=e.camera.on("matrix",this._synchCamera),this._onCameraWorldAxis=e.camera.on("worldAxis",(()=>{e.camera.zUp?(this._zUp=!0,this._cubeTextureCanvas.setZUp(),this._repaint(),this._synchCamera()):e.camera.yUp&&(this._zUp=!1,this._cubeTextureCanvas.setYUp(),this._repaint(),this._synchCamera())})),this._onCameraFOV=e.camera.perspective.on("fov",(e=>{this._synchProjection&&(this._navCubeCamera.perspective.fov=e)})),this._onCameraProjection=e.camera.on("projection",(e=>{this._synchProjection&&(this._navCubeCamera.projection="ortho"===e||"perspective"===e?e:"perspective")}));var o=-1;function n(e){var t=[0,0];if(e){for(var i=e.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t}var a,l,A=null,h=null,c=!1,u=!1,p=.5;s._navCubeCanvas.addEventListener("mouseenter",s._onMouseEnter=function(e){u=!0}),s._navCubeCanvas.addEventListener("mouseleave",s._onMouseLeave=function(e){u=!1}),s._navCubeCanvas.addEventListener("mousedown",s._onMouseDown=function(e){if(1===e.which){A=e.x,h=e.y,a=e.clientX,l=e.clientY;var t=n(e),s=i.pick({canvasPos:t});c=!!s}}),document.addEventListener("mouseup",s._onMouseUp=function(e){if(1===e.which&&(c=!1,null!==A)){var t=n(e),a=i.pick({canvasPos:t,pickSurface:!0});if(a&&a.uv){var l=s._cubeTextureCanvas.getArea(a.uv);if(l>=0&&(document.body.style.cursor="pointer",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),l>=0)){if(s._cubeTextureCanvas.setAreaHighlighted(l,!0),o=l,s._repaint(),e.xA+3||e.yh+3)return;var u=s._cubeTextureCanvas.getAreaDir(l);if(u){var d=s._cubeTextureCanvas.getAreaUp(l);s._isProjectNorth&&s._projectNorthOffsetAngle&&(u=r(1,u,BP),d=r(1,d,wP)),f(u,d,(function(){o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),document.body.style.cursor="pointer",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),l>=0&&(s._cubeTextureCanvas.setAreaHighlighted(l,!1),o=-1,s._repaint())}))}}}}}),document.addEventListener("mousemove",s._onMouseMove=function(t){if(o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),1!==t.buttons||c){if(c){var r=t.clientX,A=t.clientY;return document.body.style.cursor="move",void function(t,i){var s=(t-a)*-p,r=(i-l)*-p;e.camera.orbitYaw(s),e.camera.orbitPitch(-r),a=t,l=i}(r,A)}if(u){var h=n(t),d=i.pick({canvasPos:h,pickSurface:!0});if(d){if(d.uv){document.body.style.cursor="pointer";var f=s._cubeTextureCanvas.getArea(d.uv);if(f===o)return;o>=0&&s._cubeTextureCanvas.setAreaHighlighted(o,!1),f>=0&&(s._cubeTextureCanvas.setAreaHighlighted(f,!0),s._repaint(),o=f)}}else document.body.style.cursor="default",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1)}}});var f=function(){var t=d.vec3();return function(i,r,o){var n=s._fitVisible?e.scene.getAABB(e.scene.visibleObjectIds):e.scene.aabb,a=d.getAABB3Diag(n);d.getAABB3Center(n,t);var l=Math.abs(a/Math.tan(s._cameraFitFOV*d.DEGTORAD));e.cameraControl.pivotPos=t,s._cameraFly?e.cameraFlight.flyTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*a,fitFOV:s._cameraFitFOV,duration:s._cameraFlyDuration},o):e.cameraFlight.jumpTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*a,fitFOV:s._cameraFitFOV},o)}}();this._onUpdated=e.localeService.on("updated",(()=>{this._cubeTextureCanvas.clear(),this._repaint()})),this.setVisible(t.visible),this.setCameraFitFOV(t.cameraFitFOV),this.setCameraFly(t.cameraFly),this.setCameraFlyDuration(t.cameraFlyDuration),this.setFitVisible(t.fitVisible),this.setSynchProjection(t.synchProjection)}send(e,t){if("language"===e)this._cubeTextureCanvas.clear(),this._repaint()}_repaint(){const e=this._cubeTextureCanvas.getImage();this._cubeMesh.material.diffuseMap.image=e,this._cubeMesh.material.emissiveMap.image=e}setVisible(e=!0){this._navCubeCanvas&&(this._cubeMesh.visible=e,this._shadow&&(this._shadow.visible=e),this._navCubeCanvas.style.visibility=e?"visible":"hidden")}getVisible(){return!!this._navCubeCanvas&&this._cubeMesh.visible}setFitVisible(e=!1){this._fitVisible=e}getFitVisible(){return this._fitVisible}setCameraFly(e=!0){this._cameraFly=e}getCameraFly(){return this._cameraFly}setCameraFitFOV(e=45){this._cameraFitFOV=e}getCameraFitFOV(){return this._cameraFitFOV}setCameraFlyDuration(e=.5){this._cameraFlyDuration=e}getCameraFlyDuration(){return this._cameraFlyDuration}setSynchProjection(e=!1){this._synchProjection=e}getSynchProjection(){return this._synchProjection}setIsProjectNorth(e=!1){this._isProjectNorth=e}getIsProjectNorth(){return this._isProjectNorth}setProjectNorthOffsetAngle(e){this._projectNorthOffsetAngle=e}getProjectNorthOffsetAngle(){return this._projectNorthOffsetAngle}destroy(){this._navCubeCanvas&&(this.viewer.localeService.off(this._onUpdated),this.viewer.camera.off(this._onCameraMatrix),this.viewer.camera.off(this._onCameraWorldAxis),this.viewer.camera.perspective.off(this._onCameraFOV),this.viewer.camera.off(this._onCameraProjection),this._navCubeCanvas.removeEventListener("mouseenter",this._onMouseEnter),this._navCubeCanvas.removeEventListener("mouseleave",this._onMouseLeave),this._navCubeCanvas.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),this._navCubeCanvas=null,this._cubeTextureCanvas.destroy(),this._cubeTextureCanvas=null,this._onMouseEnter=null,this._onMouseLeave=null,this._onMouseDown=null,this._onMouseMove=null,this._onMouseUp=null),this._navCubeScene.destroy(),this._navCubeScene=null,this._cubeMesh=null,this._shadow=null,super.destroy()}}const PP=d.vec3();class CP{load(e,t,i={}){var s=e.scene.canvas.spinner;s.processes++,MP(e,t,(function(t){!function(e,t,i){for(var s=t.basePath,r=Object.keys(t.materialLibraries),o=r.length,n=0,a=o;n=0?i-1:i+t/3)}function r(e,t){var i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)}function o(e,t){var i=parseInt(e,10);return 2*(i>=0?i-1:i+t/2)}function n(e,t,i,s){var r=e.positions,o=e.object.geometry.positions;o.push(r[t+0]),o.push(r[t+1]),o.push(r[t+2]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[i+2]),o.push(r[s+0]),o.push(r[s+1]),o.push(r[s+2])}function a(e,t){var i=e.positions,s=e.object.geometry.positions;s.push(i[t+0]),s.push(i[t+1]),s.push(i[t+2])}function l(e,t,i,s){var r=e.normals,o=e.object.geometry.normals;o.push(r[t+0]),o.push(r[t+1]),o.push(r[t+2]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[i+2]),o.push(r[s+0]),o.push(r[s+1]),o.push(r[s+2])}function A(e,t,i,s){var r=e.uv,o=e.object.geometry.uv;o.push(r[t+0]),o.push(r[t+1]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[s+0]),o.push(r[s+1])}function h(e,t){var i=e.uv,s=e.object.geometry.uv;s.push(i[t+0]),s.push(i[t+1])}function c(e,t,i,a,h,c,u,d,p,f,g,m,_){var v,b=e.positions.length,y=s(t,b),B=s(i,b),w=s(a,b);if(void 0===h?n(e,y,B,w):(n(e,y,B,v=s(h,b)),n(e,B,w,v)),void 0!==c){var x=e.uv.length;y=o(c,x),B=o(u,x),w=o(d,x),void 0===h?A(e,y,B,w):(A(e,y,B,v=o(p,x)),A(e,B,w,v))}if(void 0!==f){var P=e.normals.length;y=r(f,P),B=f===g?y:r(g,P),w=f===m?y:r(m,P),void 0===h?l(e,y,B,w):(l(e,y,B,v=r(_,P)),l(e,B,w,v))}}function u(e,t,i){e.object.geometry.type="Line";for(var r=e.positions.length,n=e.uv.length,l=0,A=t.length;l=0?n.substring(0,a):n).toLowerCase(),A=(A=a>=0?n.substring(a+1):"").trim(),l.toLowerCase()){case"newmtl":i(e,u),u={id:A},d=!0;break;case"ka":u.ambient=s(A);break;case"kd":u.diffuse=s(A);break;case"ks":u.specular=s(A);break;case"map_kd":u.diffuseMap||(u.diffuseMap=t(e,o,A,"sRGB"));break;case"map_ks":u.specularMap||(u.specularMap=t(e,o,A,"linear"));break;case"map_bump":case"bump":u.normalMap||(u.normalMap=t(e,o,A));break;case"ns":u.shininess=parseFloat(A);break;case"d":(h=parseFloat(A))<1&&(u.alpha=h,u.alphaMode="blend");break;case"tr":(h=parseFloat(A))>0&&(u.alpha=1-h,u.alphaMode="blend")}d&&i(e,u)};function t(e,t,i,s){var r={},o=i.split(/\s+/),n=o.indexOf("-bm");return n>=0&&o.splice(n,2),(n=o.indexOf("-s"))>=0&&(r.scale=[parseFloat(o[n+1]),parseFloat(o[n+2])],o.splice(n,4)),(n=o.indexOf("-o"))>=0&&(r.translate=[parseFloat(o[n+1]),parseFloat(o[n+2])],o.splice(n,4)),r.src=t+o.join(" ").trim(),r.flipY=!0,r.encoding=s||"linear",new Xr(e,r).id}function i(e,t){new Yt(e,t)}function s(t){var i=t.split(e,3);return[parseFloat(i[0]),parseFloat(i[1]),parseFloat(i[2])]}}();function DP(e,t){for(var i=0,s=t.objects.length;i0&&(n.normals=o.normals),o.uv.length>0&&(n.uv=o.uv);for(var a=new Array(n.positions.length/3),l=0;l{this.viewer.metaScene.createMetaModel(i,r),this._sceneGraphLoader.load(t,s,e)}),(e=>{this.error(`load(): Failed to load model modelMetadata for model '${i} from '${r}' - ${e}`)}))}else this._sceneGraphLoader.load(t,s,e);return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}}const RP=new Float64Array([0,0,1]),LP=new Float64Array(4);class UP{constructor(e){this.id=null,this._viewer=e.viewer,this._visible=!1,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._baseDir=d.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}_setSectionPlane(e){this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(()=>{this._setPos(this._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(()=>{this._ignoreNextSectionPlaneDirUpdate?this._ignoreNextSectionPlaneDirUpdate=!1:this._setDir(this._sectionPlane.dir)})))}get sectionPlane(){return this._sectionPlane}_setPos(e){this._pos.set(e),X(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}_setDir(e){this._baseDir.set(e),this._rootNode.quaternion=d.vec3PairToQuaternion(RP,e,LP)}_setSectionPlaneDir(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}setVisible(e=!0){if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}getVisible(){return this._visible}setCulled(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}_createNodes(){const e=!1,t=this._viewer.scene,i=.01;this._rootNode=new Sr(t,{position:[0,0,0],scale:[5,5,5],isObject:!1});const s=this._rootNode,r={arrowHead:new zt(s,mr({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new zt(s,mr({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),arrowHeadHandle:new zt(s,mr({radiusTop:.09,radiusBottom:.09,radialSegments:8,heightSegments:1,height:.37,openEnded:!1})),curve:new zt(s,no({radius:.8,tube:i,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),curveHandle:new zt(s,no({radius:.8,tube:.06,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),hoop:new zt(s,no({radius:.8,tube:i,radialSegments:64,tubeSegments:8,arc:2*Math.PI})),axis:new zt(s,mr({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1})),axisHandle:new zt(s,mr({radiusTop:.08,radiusBottom:.08,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},o={pickable:new Yt(s,{diffuse:[1,1,0],alpha:0,alphaMode:"blend"}),red:new Yt(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new qt(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6}),green:new Yt(s,{diffuse:[0,1,0],emissive:[0,1,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightGreen:new qt(s,{edges:!1,fill:!0,fillColor:[0,1,0],fillAlpha:.6}),blue:new Yt(s,{diffuse:[0,0,1],emissive:[0,0,1],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightBlue:new qt(s,{edges:!1,fill:!0,fillColor:[0,0,1],fillAlpha:.2}),center:new Yt(s,{diffuse:[0,0,0],emissive:[0,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80}),highlightBall:new qt(s,{edges:!1,fill:!0,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1}),highlightPlane:new qt(s,{edges:!0,edgeWidth:3,fill:!1,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1})};this._displayMeshes={plane:s.addChild(new fr(s,{geometry:new zt(s,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Yt(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,ghostMaterial:new qt(s,{edges:!1,filled:!0,fillColor:[1,1,0],edgeColor:[0,0,0],fillAlpha:.1,backfaces:!0}),pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1],isObject:!1}),e),planeFrame:s.addChild(new fr(s,{geometry:new zt(s,no({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Yt(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),highlightMaterial:new qt(s,{edges:!1,edgeColor:[0,0,0],filled:!0,fillColor:[.8,.8,.8],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45],isObject:!1}),e),xCurve:s.addChild(new fr(s,{geometry:r.curve,material:o.red,matrix:function(){const e=d.rotationMat4v(90*d.DEGTORAD,[0,1,0],d.identityMat4()),t=d.rotationMat4v(270*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveHandle:s.addChild(new fr(s,{geometry:r.curveHandle,material:o.pickable,matrix:function(){const e=d.rotationMat4v(90*d.DEGTORAD,[0,1,0],d.identityMat4()),t=d.rotationMat4v(270*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveArrow1:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=d.translateMat4c(0,-.07,-.8,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(0*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xCurveArrow2:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=d.translateMat4c(0,-.8,-.07,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurve:s.addChild(new fr(s,{geometry:r.curve,material:o.green,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveHandle:s.addChild(new fr(s,{geometry:r.curveHandle,material:o.pickable,rotation:[-90,0,0],pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveArrow1:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=d.translateMat4c(.07,0,-.8,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurveArrow2:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=d.translateMat4c(.8,0,-.07,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurve:s.addChild(new fr(s,{geometry:r.curve,material:o.blue,matrix:d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4()),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveHandle:s.addChild(new fr(s,{geometry:r.curveHandle,material:o.pickable,matrix:d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4()),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveCurveArrow1:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=d.translateMat4c(.8,-.07,0,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4());return d.mulMat4(e,t,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveArrow2:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=d.translateMat4c(.05,-.8,0,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),center:s.addChild(new fr(s,{geometry:new zt(s,_r({radius:.05})),material:o.center,pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrowHandle:s.addChild(new fr(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxis:s.addChild(new fr(s,{geometry:r.axis,material:o.red,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisHandle:s.addChild(new fr(s,{geometry:r.axisHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrowHandle:s.addChild(new fr(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,opacity:.2,isObject:!1}),e),yShaft:s.addChild(new fr(s,{geometry:r.axis,material:o.green,position:[0,-.5,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yShaftHandle:s.addChild(new fr(s,{geometry:r.axisHandle,material:o.pickable,position:[0,-.5,0],pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrowHandle:s.addChild(new fr(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zShaft:s.addChild(new fr(s,{geometry:r.axis,material:o.blue,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1,isObject:!1}),e),zAxisHandle:s.addChild(new fr(s,{geometry:r.axisHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),clippable:!1,pickable:!0,collidable:!0,visible:!1,isObject:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new fr(s,{geometry:new zt(s,no({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Yt(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new qt(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45],isObject:!1}),e),xHoop:s.addChild(new fr(s,{geometry:r.hoop,material:o.red,highlighted:!0,highlightMaterial:o.highlightRed,matrix:function(){const e=d.rotationMat4v(90*d.DEGTORAD,[0,1,0],d.identityMat4()),t=d.rotationMat4v(270*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yHoop:s.addChild(new fr(s,{geometry:r.hoop,material:o.green,highlighted:!0,highlightMaterial:o.highlightGreen,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zHoop:s.addChild(new fr(s,{geometry:r.hoop,material:o.blue,highlighted:!0,highlightMaterial:o.highlightBlue,matrix:d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4()),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHeadBig,material:o.red,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHeadBig,material:o.green,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHeadBig,material:o.blue,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e)}}_bindEvents(){const e=this;var t=!1;const i=-1,s=0,r=1,o=2,n=3,a=4,l=5,A=this._rootNode;var h=null,c=null;const u=d.vec2(),p=d.vec3([1,0,0]),f=d.vec3([0,1,0]),g=d.vec3([0,0,1]),m=this._viewer.scene.canvas.canvas,_=this._viewer.camera,v=this._viewer.scene;{const e=d.vec3([0,0,0]);let t=-1;this._onCameraViewMatrix=v.camera.on("viewMatrix",(()=>{})),this._onCameraProjMatrix=v.camera.on("projMatrix",(()=>{})),this._onSceneTick=v.on("tick",(()=>{const i=Math.abs(d.lenVec3(d.subVec3(v.camera.eye,this._pos,e)));if(i!==t&&"perspective"===_.projection){const e=.07*(Math.tan(_.perspective.fov*d.DEGTORAD)*i);A.scale=[e,e,e],t=i}if("ortho"===_.projection){const e=_.ortho.scale/10;A.scale=[e,e,e],t=i}}))}const b=function(){const e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),y=function(){const t=d.mat4();return function(i,s){return d.quaternionToMat4(e._rootNode.quaternion,t),d.transformVec3(t,i,s),d.normalizeVec3(s),s}}();var B=function(){const e=d.vec3();return function(t){const i=Math.abs(t[0]);return i>Math.abs(t[1])&&i>Math.abs(t[2])?d.cross3Vec3(t,[0,1,0],e):d.cross3Vec3(t,[1,0,0],e),d.cross3Vec3(e,t,e),d.normalizeVec3(e),e}}();const w=function(){const t=d.vec3(),i=d.vec3(),s=d.vec4();return function(r,o,n){y(r,s);const a=B(s,o,n);P(o,a,t),P(n,a,i),d.subVec3(i,t);const l=d.dotVec3(i,s);e._pos[0]+=s[0]*l,e._pos[1]+=s[1]*l,e._pos[2]+=s[2]*l,e._rootNode.position=e._pos,e._sectionPlane&&(e._sectionPlane.pos=e._pos)}}();var x=function(){const t=d.vec4(),i=d.vec4(),s=d.vec4(),r=d.vec4();return function(o,n,a){y(o,r);if(!(P(n,r,t)&&P(a,r,i))){const e=B(r,n,a);P(n,e,t,1),P(a,e,i,1);var l=d.dotVec3(t,r);t[0]-=l*r[0],t[1]-=l*r[1],t[2]-=l*r[2],l=d.dotVec3(i,r),i[0]-=l*r[0],i[1]-=l*r[1],i[2]-=l*r[2]}d.normalizeVec3(t),d.normalizeVec3(i),l=d.dotVec3(t,i),l=d.clamp(l,-1,1);var A=Math.acos(l)*d.RADTODEG;d.cross3Vec3(t,i,s),d.dotVec3(s,r)<0&&(A=-A),e._rootNode.rotate(o,A),C()}}(),P=function(){const t=d.vec4([0,0,0,1]),i=d.mat4();return function(s,r,o,n){n=n||0,t[0]=s[0]/m.width*2-1,t[1]=-(s[1]/m.height*2-1),t[2]=0,t[3]=1,d.mulMat4(_.projMatrix,_.viewMatrix,i),d.inverseMat4(i),d.transformVec4(i,t,t),d.mulVec4Scalar(t,1/t[3]);var a=_.eye;d.subVec4(t,a,t);const l=e._sectionPlane.pos;var A=-d.dotVec3(l,r)-n,h=d.dotVec3(r,t);if(Math.abs(h)>.005){var c=-(d.dotVec3(r,a)+A)/h;return d.mulVec3Scalar(t,c,o),d.addVec3(o,a),d.subVec3(o,l,o),!0}return!1}}();const C=function(){const t=d.vec3(),i=d.mat4();return function(){e.sectionPlane&&(d.quaternionToMat4(A.quaternion,i),d.transformVec3(i,[0,0,1],t),e._setSectionPlaneDir(t))}}();var M,F=!1;this._onCameraControlHover=this._viewer.cameraControl.on("hoverEnter",(e=>{if(!this._visible)return;if(F)return;var A;t=!1,M&&(M.visible=!1);switch(e.entity.id){case this._displayMeshes.xAxisArrowHandle.id:case this._displayMeshes.xAxisHandle.id:A=this._affordanceMeshes.xAxisArrow,h=s;break;case this._displayMeshes.yAxisArrowHandle.id:case this._displayMeshes.yShaftHandle.id:A=this._affordanceMeshes.yAxisArrow,h=r;break;case this._displayMeshes.zAxisArrowHandle.id:case this._displayMeshes.zAxisHandle.id:A=this._affordanceMeshes.zAxisArrow,h=o;break;case this._displayMeshes.xCurveHandle.id:A=this._affordanceMeshes.xHoop,h=n;break;case this._displayMeshes.yCurveHandle.id:A=this._affordanceMeshes.yHoop,h=a;break;case this._displayMeshes.zCurveHandle.id:A=this._affordanceMeshes.zHoop,h=l;break;default:return void(h=i)}A&&(A.visible=!0),M=A,t=!0})),this._onCameraControlHoverLeave=this._viewer.cameraControl.on("hoverOutEntity",(e=>{this._visible&&(M&&(M.visible=!1),M=null,h=i)})),m.addEventListener("mousedown",this._canvasMouseDownListener=e=>{if(e.preventDefault(),this._visible&&t&&(this._viewer.cameraControl.pointerEnabled=!1,1===e.which)){F=!0;var i=b(e);c=h,u[0]=i[0],u[1]=i[1]}}),m.addEventListener("mousemove",this._canvasMouseMoveListener=e=>{if(!this._visible)return;if(!F)return;var t=b(e);const i=t[0],A=t[1];switch(c){case s:w(p,u,t);break;case r:w(f,u,t);break;case o:w(g,u,t);break;case n:x(p,u,t);break;case a:x(f,u,t);break;case l:x(g,u,t)}u[0]=i,u[1]=A}),m.addEventListener("mouseup",this._canvasMouseUpListener=e=>{this._visible&&(this._viewer.cameraControl.pointerEnabled=!0,F&&(e.which,F=!1,t=!1))}),m.addEventListener("wheel",this._canvasWheelListener=e=>{if(this._visible)Math.max(-1,Math.min(1,40*-e.deltaY))})}_destroy(){this._unbindEvents(),this._destroyNodes()}_unbindEvents(){const e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=e.cameraControl;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix),r.off(this._onCameraControlHover),r.off(this._onCameraControlHoverLeave)}_destroyNodes(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}class kP{constructor(e,t,i){this.id=i.id,this._sectionPlane=i,this._mesh=new fr(t,{id:i.id,geometry:new zt(t,Wt({xSize:.5,ySize:.5,zSize:.001})),material:new Yt(t,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new ei(t,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new qt(t,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new qt(t,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});{const e=d.vec3([0,0,0]),t=d.vec3(),i=d.vec3([0,0,1]),s=d.vec4(4),r=d.vec3(),o=()=>{const o=this._sectionPlane.scene.center,n=[-this._sectionPlane.dir[0],-this._sectionPlane.dir[1],-this._sectionPlane.dir[2]];d.subVec3(o,this._sectionPlane.pos,e);const a=-d.dotVec3(n,e);d.normalizeVec3(n),d.mulVec3Scalar(n,a,t);const l=d.vec3PairToQuaternion(i,this._sectionPlane.dir,s);r[0]=.1*t[0],r[1]=.1*t[1],r[2]=.1*t[2],this._mesh.quaternion=l,this._mesh.position=r};this._onSectionPlanePos=this._sectionPlane.on("pos",o),this._onSectionPlaneDir=this._sectionPlane.on("dir",o)}this._highlighted=!1,this._selected=!1}setHighlighted(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}getHighlighted(){return this._highlighted}setSelected(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}getSelected(){return this._selected}destroy(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}class OP{constructor(e,t){if(!(t.onHoverEnterPlane&&t.onHoverLeavePlane&&t.onClickedNothing&&t.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=e,this._viewer=e.viewer,this._onHoverEnterPlane=t.onHoverEnterPlane,this._onHoverLeavePlane=t.onHoverLeavePlane,this._onClickedNothing=t.onClickedNothing,this._onClickedPlane=t.onClickedPlane,this._visible=!0,this._planes={},this._canvas=t.overviewCanvas,this._scene=new hi(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new St(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new St(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new St(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;{const e=this._scene.camera,t=d.rotationMat4c(-90*d.DEGTORAD,1,0,0),i=d.vec3(),s=d.vec3(),r=d.vec3();this._synchCamera=()=>{const o=this._viewer.camera.eye,n=this._viewer.camera.look,a=this._viewer.camera.up;d.mulVec3Scalar(d.normalizeVec3(d.subVec3(o,n,i)),7),this._zUp?(d.transformVec3(t,i,s),d.transformVec3(t,a,r),e.look=[0,0,0],e.eye=d.transformVec3(t,i,s),e.up=d.transformPoint3(t,a,r)):(e.look=[0,0,0],e.eye=i,e.up=a)}}this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(e=>{this._scene.camera.perspective.fov=e}));var i=null;this._onInputMouseMove=this._scene.input.on("mousemove",(e=>{const t=this._scene.pick({canvasPos:e});if(t){if(!i||t.entity.id!==i.id){if(i){this._planes[i.id]&&this._onHoverLeavePlane(i.id)}i=t.entity;this._planes[i.id]&&this._onHoverEnterPlane(i.id)}}else i&&(this._onHoverLeavePlane(i.id),i=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=()=>{if(i){this._planes[i.id]&&this._onClickedPlane(i.id)}else this._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=()=>{i&&(this._onHoverLeavePlane(i.id),i=null)}),this.setVisible(t.overviewVisible)}addSectionPlane(e){this._planes[e.id]=new kP(this,this._scene,e)}setPlaneHighlighted(e,t){const i=this._planes[e];i&&i.setHighlighted(t)}setPlaneSelected(e,t){const i=this._planes[e];i&&i.setSelected(t)}removeSectionPlane(e){const t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}setVisible(e=!0){this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}getVisible(){return this._visible}destroy(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}const NP=d.AABB3(),QP=d.vec3();class VP extends z{constructor(e,t={}){if(super("SectionPlanes",e),this._freeControls=[],this._sectionPlanes=e.scene.sectionPlanes,this._controls={},this._shownControlId=null,null!==t.overviewCanvasId&&void 0!==t.overviewCanvasId){const e=document.getElementById(t.overviewCanvasId);e?this._overview=new OP(this,{overviewCanvas:e,visible:t.overviewVisible,onHoverEnterPlane:e=>{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;NP.set(this.viewer.scene.aabb),d.getAABB3Center(NP,QP),NP[0]+=t[0]-QP[0],NP[1]+=t[1]-QP[1],NP[2]+=t[2]-QP[2],NP[3]+=t[0]-QP[0],NP[4]+=t[1]-QP[1],NP[5]+=t[2]-QP[2],this.viewer.cameraFlight.flyTo({aabb:NP,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn("Can't find overview canvas: '"+t.overviewCanvasId+"' - will create plugin without overview")}this._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(e=>{this._sectionPlaneCreated(e)}))}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);return new Br(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new UP(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}getShownControl(){return this._shownControlId}hideControl(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(var t=0,i=e.length;t{this._registerModelStoreys(e),this.fire("storeys",this.storeys)}))}_registerModelStoreys(e){const t=this.viewer,i=t.scene,s=t.metaScene,r=s.metaModels[e],o=i.models[e];if(!r||!r.rootMetaObjects)return;const n=r.rootMetaObjects;for(let t=0,r=n.length;t.5?a.length:0,h=new HP(this,o.aabb,l,e,n,A);h._onModelDestroyed=o.once("destroyed",(()=>{this._deregisterModelStoreys(e),this.fire("storeys",this.storeys)})),this.storeys[n]=h,this.modelStoreys[e]||(this.modelStoreys[e]={}),this.modelStoreys[e][n]=h}}}_deregisterModelStoreys(e){const t=this.modelStoreys[e];if(t){const i=this.viewer.scene;for(let e in t)if(t.hasOwnProperty(e)){const s=t[e],r=i.models[s.modelId];r&&r.off(s._onModelDestroyed),delete this.storeys[e]}delete this.modelStoreys[e]}}get fitStoreyMaps(){return this._fitStoreyMaps}gotoStoreyCamera(e,t={}){const i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),void(t.done&&t.done());const s=this.viewer,r=s.scene.camera,o=i.storeyAABB;if(o[3]{t.done()})):(s.cameraFlight.jumpTo(y.apply(t,{eye:h,look:n,up:c,orthoScale:A})),s.camera.ortho.scale=A)}showStoreyObjects(e,t={}){if(!this.storeys[e])return void this.error("IfcBuildingStorey not found with this ID: "+e);const i=this.viewer,s=i.scene;i.metaScene.metaObjects[e]&&(t.hideOthers&&s.setObjectsVisible(i.scene.visibleObjectIds,!1),this.withStoreyObjects(e,((e,t)=>{e&&(e.visible=!0)})))}withStoreyObjects(e,t){const i=this.viewer,s=i.scene,r=i.metaScene,o=r.metaObjects[e];if(!o)return;const n=o.getObjectIDsInSubtree();for(var a=0,l=n.length;au[1]&&u[0]>u[2],p=!d&&u[1]>u[0]&&u[1]>u[2];!d&&!p&&u[2]>u[0]&&(u[2],u[1]);const f=e.width/A,g=p?e.height/c:e.height/h;return i[0]=Math.floor(e.width-(t[0]-n)*f),i[1]=Math.floor(e.height-(t[2]-l)*g),i[0]>=0&&i[0]=0&&i[1]<=e.height}worldDirToStoreyMap(e,t,i){const s=this.viewer.camera,r=s.eye,o=s.look,n=d.subVec3(o,r,GP),a=s.worldUp,l=a[0]>a[1]&&a[0]>a[2],A=!l&&a[1]>a[0]&&a[1]>a[2];!l&&!A&&a[2]>a[0]&&(a[2],a[1]),l?(i[0]=n[1],i[1]=n[2]):A?(i[0]=n[0],i[1]=n[2]):(i[0]=n[0],i[1]=n[1]),d.normalizeVec2(i)}destroy(){this.viewer.scene.off(this._onModelLoaded),super.destroy()}}const KP=new Float64Array([0,0,1]),XP=new Float64Array(4);class JP{constructor(e){this.id=null,this._viewer=e.viewer,this._plugin=e,this._visible=!1,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._baseDir=d.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}_setSectionPlane(e){this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(()=>{this._setPos(this._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(()=>{this._ignoreNextSectionPlaneDirUpdate?this._ignoreNextSectionPlaneDirUpdate=!1:this._setDir(this._sectionPlane.dir)})))}get sectionPlane(){return this._sectionPlane}_setPos(e){this._pos.set(e),X(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}_setDir(e){this._baseDir.set(e),this._rootNode.quaternion=d.vec3PairToQuaternion(KP,e,XP)}_setSectionPlaneDir(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}setVisible(e=!0){if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}getVisible(){return this._visible}setCulled(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}_createNodes(){const e=!1,t=this._viewer.scene,i=.01;this._rootNode=new Sr(t,{position:[0,0,0],scale:[5,5,5]});const s=this._rootNode,r={arrowHead:new zt(s,mr({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new zt(s,mr({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),axis:new zt(s,mr({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},o={red:new Yt(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),green:new Yt(s,{diffuse:[0,1,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),blue:new Yt(s,{diffuse:[0,0,1],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new qt(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6})};this._displayMeshes={plane:s.addChild(new fr(s,{geometry:new zt(s,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Yt(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1]}),e),planeFrame:s.addChild(new fr(s,{geometry:new zt(s,no({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Yt(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45]}),e),center:s.addChild(new fr(s,{geometry:new zt(s,_r({radius:.05})),material:o.center,pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zShaft:s.addChild(new fr(s,{geometry:r.axis,material:o.blue,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new fr(s,{geometry:new zt(s,no({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Yt(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new qt(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45]}),e),zAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHeadBig,material:o.blue,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e)}}_bindEvents(){const e=this._rootNode,t=d.vec2(),i=this._viewer.camera,s=this._viewer.scene;let r=0,o=!1;{const t=d.vec3([0,0,0]);let n=-1;this._onCameraViewMatrix=s.camera.on("viewMatrix",(()=>{})),this._onCameraProjMatrix=s.camera.on("projMatrix",(()=>{})),this._onSceneTick=s.on("tick",(()=>{o=!1;const l=Math.abs(d.lenVec3(d.subVec3(s.camera.eye,this._pos,t)));if(l!==n&&"perspective"===i.projection){const t=.07*(Math.tan(i.perspective.fov*d.DEGTORAD)*l);e.scale=[t,t,t],n=l}if("ortho"===i.projection){const t=i.ortho.scale/10;e.scale=[t,t,t],n=l}0!==r&&(a(r),r=0)}))}const n=function(){const e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),a=e=>{const t=this._sectionPlane.pos,i=this._sectionPlane.dir;d.addVec3(t,d.mulVec3Scalar(i,.1*e*this._plugin.getDragSensitivity(),d.vec3())),this._sectionPlane.pos=t};{let e=!1;this._plugin._controlElement.addEventListener("mousedown",this._canvasMouseDownListener=i=>{if(i.preventDefault(),this._visible&&(this._viewer.cameraControl.pointerEnabled=!1,1===i.which)){e=!0;var s=n(i);t[0]=s[0],t[1]=s[1]}}),this._plugin._controlElement.addEventListener("mousemove",this._canvasMouseMoveListener=i=>{if(!this._visible)return;if(!e)return;if(o)return;var s=n(i);const r=s[0],l=s[1];a(l-t[1]),t[0]=r,t[1]=l}),this._plugin._controlElement.addEventListener("mouseup",this._canvasMouseUpListener=t=>{this._visible&&(this._viewer.cameraControl.pointerEnabled=!0,e&&(t.which,e=!1))}),this._plugin._controlElement.addEventListener("wheel",this._canvasWheelListener=e=>{this._visible&&(r+=Math.max(-1,Math.min(1,40*-e.deltaY)))})}{let e,t,i=null;this._plugin._controlElement.addEventListener("touchstart",this._handleTouchStart=t=>{t.stopPropagation(),t.preventDefault(),this._visible&&(e=t.touches[0].clientY,i=e,r=0)}),this._plugin._controlElement.addEventListener("touchmove",this._handleTouchMove=e=>{e.stopPropagation(),e.preventDefault(),this._visible&&(o||(o=!0,t=e.touches[0].clientY,null!==i&&(r+=t-i),i=t))}),this._plugin._controlElement.addEventListener("touchend",this._handleTouchEnd=i=>{i.stopPropagation(),i.preventDefault(),this._visible&&(e=null,t=null,r=0)})}}_destroy(){this._unbindEvents(),this._destroyNodes()}_unbindEvents(){const e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=this._plugin._controlElement;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),r.removeEventListener("touchstart",this._handleTouchStart),r.removeEventListener("touchmove",this._handleTouchMove),r.removeEventListener("touchend",this._handleTouchEnd),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix)}_destroyNodes(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}class YP{constructor(e,t,i){this.id=i.id,this._sectionPlane=i,this._mesh=new fr(t,{id:i.id,geometry:new zt(t,Wt({xSize:.5,ySize:.5,zSize:.001})),material:new Yt(t,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new ei(t,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new qt(t,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new qt(t,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});{const e=d.vec3([0,0,0]),t=d.vec3(),i=d.vec3([0,0,1]),s=d.vec4(4),r=d.vec3(),o=()=>{const o=this._sectionPlane.scene.center,n=[-this._sectionPlane.dir[0],-this._sectionPlane.dir[1],-this._sectionPlane.dir[2]];d.subVec3(o,this._sectionPlane.pos,e);const a=-d.dotVec3(n,e);d.normalizeVec3(n),d.mulVec3Scalar(n,a,t);const l=d.vec3PairToQuaternion(i,this._sectionPlane.dir,s);r[0]=.1*t[0],r[1]=.1*t[1],r[2]=.1*t[2],this._mesh.quaternion=l,this._mesh.position=r};this._onSectionPlanePos=this._sectionPlane.on("pos",o),this._onSectionPlaneDir=this._sectionPlane.on("dir",o)}this._highlighted=!1,this._selected=!1}setHighlighted(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}getHighlighted(){return this._highlighted}setSelected(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}getSelected(){return this._selected}destroy(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}class ZP{constructor(e,t){if(!(t.onHoverEnterPlane&&t.onHoverLeavePlane&&t.onClickedNothing&&t.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=e,this._viewer=e.viewer,this._onHoverEnterPlane=t.onHoverEnterPlane,this._onHoverLeavePlane=t.onHoverLeavePlane,this._onClickedNothing=t.onClickedNothing,this._onClickedPlane=t.onClickedPlane,this._visible=!0,this._planes={},this._canvas=t.overviewCanvas,this._scene=new hi(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new St(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new St(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new St(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;{const e=this._scene.camera,t=d.rotationMat4c(-90*d.DEGTORAD,1,0,0),i=d.vec3(),s=d.vec3(),r=d.vec3();this._synchCamera=()=>{const o=this._viewer.camera.eye,n=this._viewer.camera.look,a=this._viewer.camera.up;d.mulVec3Scalar(d.normalizeVec3(d.subVec3(o,n,i)),7),this._zUp?(d.transformVec3(t,i,s),d.transformVec3(t,a,r),e.look=[0,0,0],e.eye=d.transformVec3(t,i,s),e.up=d.transformPoint3(t,a,r)):(e.look=[0,0,0],e.eye=i,e.up=a)}}this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(e=>{this._scene.camera.perspective.fov=e}));var i=null;this._onInputMouseMove=this._scene.input.on("mousemove",(e=>{const t=this._scene.pick({canvasPos:e});if(t){if(!i||t.entity.id!==i.id){if(i){this._planes[i.id]&&this._onHoverLeavePlane(i.id)}i=t.entity;this._planes[i.id]&&this._onHoverEnterPlane(i.id)}}else i&&(this._onHoverLeavePlane(i.id),i=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=()=>{if(i){this._planes[i.id]&&this._onClickedPlane(i.id)}else this._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=()=>{i&&(this._onHoverLeavePlane(i.id),i=null)}),this.setVisible(t.overviewVisible)}addSectionPlane(e){this._planes[e.id]=new YP(this,this._scene,e)}setPlaneHighlighted(e,t){const i=this._planes[e];i&&i.setHighlighted(t)}setPlaneSelected(e,t){const i=this._planes[e];i&&i.setSelected(t)}removeSectionPlane(e){const t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}setVisible(e=!0){this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}getVisible(){return this._visible}destroy(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}const qP=d.AABB3(),$P=d.vec3();class eC extends z{constructor(e,t={}){if(super("FaceAlignedSectionPlanesPlugin",e),this._freeControls=[],this._sectionPlanes=e.scene.sectionPlanes,this._controls={},this._shownControlId=null,this._dragSensitivity=t.dragSensitivity||1,null!==t.overviewCanvasId&&void 0!==t.overviewCanvasId){const e=document.getElementById(t.overviewCanvasId);e?this._overview=new ZP(this,{overviewCanvas:e,visible:t.overviewVisible,onHoverEnterPlane:e=>{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;qP.set(this.viewer.scene.aabb),d.getAABB3Center(qP,$P),qP[0]+=t[0]-$P[0],qP[1]+=t[1]-$P[1],qP[2]+=t[2]-$P[2],qP[3]+=t[0]-$P[0],qP[4]+=t[1]-$P[1],qP[5]+=t[2]-$P[2],this.viewer.cameraFlight.flyTo({aabb:qP,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn("Can't find overview canvas: '"+t.overviewCanvasId+"' - will create plugin without overview")}null===t.controlElementId||void 0===t.controlElementId?this.error("Parameter expected: controlElementId"):(this._controlElement=document.getElementById(t.controlElementId),this._controlElement||this.warn("Can't find control element: '"+t.controlElementId+"' - will create plugin without control element")),this._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(e=>{this._sectionPlaneCreated(e)}))}setDragSensitivity(e){this._dragSensitivity=e||1}getDragSensitivity(){return this._dragSensitivity}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);return new Br(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new JP(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}getShownControl(){return this._shownControlId}hideControl(){for(let e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){let t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(let t=0,i=e.length;t>5&31)/31,l=(e>>10&31)/31):(n=h,a=c,l=u),(y&&n!==p||a!==f||l!==g)&&(null!==p&&(m=!0),p=n,f=a,g=l)}for(let e=1;e<=3;e++){let i=t+12*e;v.push(r.getFloat32(i,!0)),v.push(r.getFloat32(i+4,!0)),v.push(r.getFloat32(i+8,!0)),b.push(o,B,w),d&&A.push(n,a,l,1)}y&&m&&(lC(i,v,b,A,_,s),v=[],b=[],A=A?[]:null,m=!1)}v.length>0&&lC(i,v,b,A,_,s)}function aC(e,t,i,s){const r=/facet([\s\S]*?)endfacet/g;let o=0;const n=/[\s]+([+-]?(?:\d+.\d+|\d+.|\d+|.\d+)(?:[eE][+-]?\d+)?)/.source,a=new RegExp("vertex"+n+n+n,"g"),l=new RegExp("normal"+n+n+n,"g"),A=[],h=[];let c,u,d,p,f,g,m;for(;null!==(p=r.exec(t));){for(f=0,g=0,m=p[0];null!==(p=l.exec(m));)c=parseFloat(p[1]),u=parseFloat(p[2]),d=parseFloat(p[3]),g++;for(;null!==(p=a.exec(m));)A.push(parseFloat(p[1]),parseFloat(p[2]),parseFloat(p[3])),h.push(c,u,d),f++;1!==g&&e.error("Error in normal of face "+o),3!==f&&e.error("Error in positions of face "+o),o++}lC(i,A,h,null,new Ur(i,{roughness:.5}),s)}function lC(e,t,i,s,r,o){const n=new Int32Array(t.length/3);for(let e=0,t=n.length;e0?i:null,s=s&&s.length>0?s:null,o.smoothNormals&&d.faceToVertexNormals(t,i,o);const a=sC;J(t,t,a);const l=new zt(e,{primitive:"triangles",positions:t,normals:i,colors:s,indices:n}),A=new fr(e,{origin:0!==a[0]||0!==a[1]||0!==a[2]?a:null,geometry:l,material:r,edges:o.edges});e.addChild(A)}function AC(e){return"string"!=typeof e?function(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t="";for(let i=0,s=e.length;i0){const i=document.createElement("a");i.href="#",i.id=`switch-${e.nodeId}`,i.textContent="+",i.classList.add("plus"),t&&i.addEventListener("click",t),o.appendChild(i)}const n=document.createElement("input");n.id=`checkbox-${e.nodeId}`,n.type="checkbox",n.checked=e.checked,n.style["pointer-events"]="all",i&&n.addEventListener("change",i),o.appendChild(n);const a=document.createElement("span");return a.textContent=e.title,o.appendChild(a),s&&(a.oncontextmenu=s),r&&(a.onclick=r),o}createDisabledNodeElement(e){const t=document.createElement("li"),i=document.createElement("a");i.href="#",i.textContent="!",i.classList.add("warn"),i.classList.add("warning"),t.appendChild(i);const s=document.createElement("span");return s.textContent=e,t.appendChild(s),t}addChildren(e,t){const i=document.createElement("ul");t.forEach((e=>{i.appendChild(e)})),e.parentElement.appendChild(i)}expand(e,t,i){e.classList.remove("plus"),e.classList.add("minus"),e.textContent="-",e.removeEventListener("click",t),e.addEventListener("click",i)}collapse(e,t,i){if(!e)return;const s=e.parentElement;if(!s)return;const r=s.querySelector("ul");r&&(s.removeChild(r),e.classList.remove("minus"),e.classList.add("plus"),e.textContent="+",e.removeEventListener("click",i),e.addEventListener("click",t))}isExpanded(e){return void 0!==e.parentElement.getElementsByTagName("li")[0]}getId(e){return e.parentElement.id}getIdFromCheckbox(e){return e.id.replace("checkbox-","")}getSwitchElement(e){return document.getElementById(`switch-${e}`)}isChecked(e){return e.checked}setCheckbox(e,t){const i=document.getElementById(`checkbox-${e}`);i&&t!==i.checked&&(i.checked=t)}setXRayed(e,t){const i=document.getElementById(e);i&&(t?i.classList.add("xrayed-node"):i.classList.remove("xrayed-node"))}setHighlighted(e,t){const i=document.getElementById(e);i&&(t?(i.scrollIntoView({block:"center"}),i.classList.add("highlighted-node")):i.classList.remove("highlighted-node"))}}const dC=[];class pC extends z{constructor(e,t={}){super("TreeViewPlugin",e),this.errors=[],this.valid=!0;const i=t.containerElement||document.getElementById(t.containerElementId);if(i instanceof HTMLElement){for(let e=0;;e++)if(!dC[e]){dC[e]=this,this._index=e,this._id=`tree-${e}`;break}if(this._containerElement=i,this._metaModels={},this._autoAddModels=!1!==t.autoAddModels,this._autoExpandDepth=t.autoExpandDepth||0,this._sortNodes=!1!==t.sortNodes,this._viewer=e,this._rootElement=null,this._muteSceneEvents=!1,this._muteTreeEvents=!1,this._rootNodes=[],this._objectNodes={},this._nodeNodes={},this._rootNames={},this._sortNodes=t.sortNodes,this._pruneEmptyNodes=t.pruneEmptyNodes,this._showListItemElementId=null,this._renderService=t.renderService||new uC,!this._renderService)throw new Error("TreeViewPlugin: no render service set");if(this._containerElement.oncontextmenu=e=>{e.preventDefault()},this._onObjectVisibility=this._viewer.scene.on("objectVisibility",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;const s=e.visible;if(!(s!==i.checked))return;this._muteTreeEvents=!0,i.checked=s,s?i.numVisibleEntities++:i.numVisibleEntities--,this._renderService.setCheckbox(i.nodeId,s);let r=i.parent;for(;r;)r.checked=s,s?r.numVisibleEntities++:r.numVisibleEntities--,this._renderService.setCheckbox(r.nodeId,r.numVisibleEntities>0),r=r.parent;this._muteTreeEvents=!1})),this._onObjectXrayed=this._viewer.scene.on("objectXRayed",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;this._muteTreeEvents=!0;const s=e.xrayed;s!==i.xrayed&&(i.xrayed=s,this._renderService.setXRayed(i.nodeId,s),this._muteTreeEvents=!1)})),this._switchExpandHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._expandSwitchElement(t)},this._switchCollapseHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._collapseSwitchElement(t)},this._checkboxChangeHandler=e=>{if(this._muteTreeEvents)return;this._muteSceneEvents=!0;const t=e.target,i=this._renderService.isChecked(t),s=this._renderService.getIdFromCheckbox(t),r=this._nodeNodes[s],o=this._viewer.scene.objects;let n=0;this._withNodeTree(r,(e=>{const t=e.objectId,s=o[t],r=0===e.children.length;e.numVisibleEntities=i?e.numEntities:0,r&&i!==e.checked&&n++,e.checked=i,this._renderService.setCheckbox(e.nodeId,i),s&&(s.visible=i)}));let a=r.parent;for(;a;)a.checked=i,i?a.numVisibleEntities+=n:a.numVisibleEntities-=n,this._renderService.setCheckbox(a.nodeId,a.numVisibleEntities>0),a=a.parent;this._muteSceneEvents=!1},this._hierarchy=t.hierarchy||"containment",this._autoExpandDepth=t.autoExpandDepth||0,this._autoAddModels){const e=Object.keys(this.viewer.metaScene.metaModels);for(let t=0,i=e.length;t{this.viewer.metaScene.metaModels[e]&&this.addModel(e)}))}this.hierarchy=t.hierarchy}else this.error("Mandatory config expected: valid containerElementId or containerElement")}set hierarchy(e){"containment"!==(e=e||"containment")&&"storeys"!==e&&"types"!==e&&(this.error("Unsupported value for `hierarchy' - defaulting to 'containment'"),e="containment"),this._hierarchy!==e&&(this._hierarchy=e,this._createNodes())}get hierarchy(){return this._hierarchy}addModel(e,t={}){if(!this._containerElement)return;const i=this.viewer.scene.models[e];if(!i)throw"Model not found: "+e;const s=this.viewer.metaScene.metaModels[e];s?this._metaModels[e]?this.warn("Model already added: "+e):(this._metaModels[e]=s,t&&t.rootName&&(this._rootNames[e]=t.rootName),i.on("destroyed",(()=>{this.removeModel(i.id)})),this._createNodes()):this.error("MetaModel not found: "+e)}removeModel(e){if(!this._containerElement)return;this._metaModels[e]&&(this._rootNames[e]&&delete this._rootNames[e],delete this._metaModels[e],this._createNodes())}showNode(e){this.unShowNode();const t=this._objectNodes[e];if(!t)return;const i=t.nodeId,s=this._renderService.getSwitchElement(i);if(s)return this._expandSwitchElement(s),s.scrollIntoView(),!0;const r=[];r.unshift(t);let o=t.parent;for(;o;)r.unshift(o),o=o.parent;for(let e=0,t=r.length;e{if(s===e)return;const r=this._renderService.getSwitchElement(i.nodeId);if(r){this._expandSwitchElement(r);const e=i.children;for(var o=0,n=e.length;o0;return this.valid}_validateMetaModelForStoreysHierarchy(e=0,t,i){return!0}_createEnabledNodes(){switch(this._pruneEmptyNodes&&this._findEmptyNodes(),this._hierarchy){case"storeys":this._createStoreysNodes(),0===this._rootNodes.length&&this.error("Failed to build storeys hierarchy");break;case"types":this._createTypesNodes();break;default:this._createContainmentNodes()}this._sortNodes&&this._doSortNodes(),this._synchNodesToEntities(),this._createTrees(),this.expandToDepth(this._autoExpandDepth)}_createDisabledNodes(){const e=this._renderService.createRootNode();this._rootElement=e,this._containerElement.appendChild(e);const t=this._viewer.metaScene.rootMetaObjects;for(let i in t){const s=t[i],r=s.type,o=s.name,n=o&&""!==o&&"Undefined"!==o&&"Default"!==o?o:r,a=this._renderService.createDisabledNodeElement(n);e.appendChild(a)}}_findEmptyNodes(){const e=this._viewer.metaScene.rootMetaObjects;for(let t in e)this._findEmptyNodes2(e[t])}_findEmptyNodes2(e,t=0){const i=this.viewer.scene,s=e.children,r=e.id,o=i.objects[r];if(e._countEntities=0,o&&e._countEntities++,s)for(let t=0,i=s.length;t{e.aabb&&r.aabb||(e.aabb||(e.aabb=t.getAABB(s.getObjectIDsInSubtree(e.objectId))),r.aabb||(r.aabb=t.getAABB(s.getObjectIDsInSubtree(r.objectId))));let o=0;return o=i.xUp?0:i.yUp?1:2,e.aabb[o]>r.aabb[o]?-1:e.aabb[o]s?1:0}_synchNodesToEntities(){const e=Object.keys(this.viewer.metaScene.metaObjects),t=this._viewer.metaScene.metaObjects,i=this._viewer.scene.objects;for(let s=0,r=e.length;sthis._createNodeElement(e))),t=this._renderService.createRootNode();e.forEach((e=>{t.appendChild(e)})),this._containerElement.appendChild(t),this._rootElement=t}_createNodeElement(e){return this._renderService.createNodeElement(e,this._switchExpandHandler,this._checkboxChangeHandler,(t=>{this.fire("contextmenu",{event:t,viewer:this._viewer,treeViewPlugin:this,treeViewNode:e}),t.preventDefault()}),(t=>{this.fire("nodeTitleClicked",{event:t,viewer:this._viewer,treeViewPlugin:this,treeViewNode:e}),t.preventDefault()}))}_expandSwitchElement(e){if(this._renderService.isExpanded(e))return;const t=this._renderService.getId(e),i=this._nodeNodes[t].children.map((e=>this._createNodeElement(e)));this._renderService.addChildren(e,i),this._renderService.expand(e,this._switchExpandHandler,this._switchCollapseHandler)}_collapseNode(e){const t=this._renderService.getSwitchElement(e);this._collapseSwitchElement(t)}_collapseSwitchElement(e){this._renderService.collapse(e,this._switchExpandHandler,this._switchCollapseHandler)}}class fC{constructor(e){this._scene=e,this._objects=[],this._objectsViewCulled=[],this._objectsDetailCulled=[],this._objectsChanged=[],this._objectsChangedList=[],this._modelInfos={},this._numObjects=0,this._lenObjectsChangedList=0,this._dirty=!0,this._onModelLoaded=e.on("modelLoaded",(t=>{const i=e.models[t];i&&this._addModel(i)})),this._onTick=e.on("tick",(()=>{this._dirty&&this._build(),this._applyChanges()}))}_addModel(e){const t={model:e,onDestroyed:e.on("destroyed",(()=>{this._removeModel(e)}))};this._modelInfos[e.id]=t,this._dirty=!0}_removeModel(e){const t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._dirty=!0)}_build(){if(!this._dirty)return;this._applyChanges();const e=this._scene.objects;for(let e=0;e0){for(let e=0;e{delete gC[t],i._destroy()}))),i}(e.scene),this._maxTreeDepth=t.maxTreeDepth||8,this._modelInfos={},this._frustum=new N,this._kdRoot=null,this._frustumDirty=!1,this._kdTreeDirty=!1,this._onViewMatrix=e.scene.camera.on("viewMatrix",(()=>{this._frustumDirty=!0})),this._onProjMatrix=e.scene.camera.on("projMatMatrix",(()=>{this._frustumDirty=!0})),this._onModelLoaded=e.scene.on("modelLoaded",(e=>{const t=this.viewer.scene.models[e];t&&this._addModel(t)})),this._onSceneTick=e.scene.on("tick",(()=>{this._doCull()}))}set enabled(e){this._enabled=e}get enabled(){return this._enabled}_addModel(e){const t={model:e,onDestroyed:e.on("destroyed",(()=>{this._removeModel(e)}))};this._modelInfos[e.id]=t,this._kdTreeDirty=!0}_removeModel(e){const t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._kdTreeDirty=!0)}_doCull(){const e=this._frustumDirty||this._kdTreeDirty;if(this._frustumDirty&&this._buildFrustum(),this._kdTreeDirty&&this._buildKDTree(),e){const e=this._kdRoot;e&&this._visitKDNode(e)}}_buildFrustum(){const e=this.viewer.scene.camera;Q(this._frustum,e.viewMatrix,e.projMatrix),this._frustumDirty=!1}_buildKDTree(){const e=this.viewer.scene;this._kdRoot,this._kdRoot={aabb:e.getAABB(),intersection:N.INTERSECT};for(let e=0,t=this._objectCullStates.numObjects;e=this._maxTreeDepth)return e.objects=e.objects||[],e.objects.push(i),void d.expandAABB3(e.aabb,r);if(e.left&&d.containsAABB3(e.left.aabb,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1);if(e.right&&d.containsAABB3(e.right.aabb,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1);const o=e.aabb;mC[0]=o[3]-o[0],mC[1]=o[4]-o[1],mC[2]=o[5]-o[2];let n=0;if(mC[1]>mC[n]&&(n=1),mC[2]>mC[n]&&(n=2),!e.left){const a=o.slice();if(a[n+3]=(o[n]+o[n+3])/2,e.left={aabb:a,intersection:N.INTERSECT},d.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1)}if(!e.right){const a=o.slice();if(a[n]=(o[n]+o[n+3])/2,e.right={aabb:a,intersection:N.INTERSECT},d.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1)}e.objects=e.objects||[],e.objects.push(i),d.expandAABB3(e.aabb,r)}_visitKDNode(e,t=N.INTERSECT){if(t!==N.INTERSECT&&e.intersects===t)return;t===N.INTERSECT&&(t=V(this._frustum,e.aabb),e.intersects=t);const i=t===N.OUTSIDE,s=e.objects;if(s&&s.length>0)for(let e=0,t=s.length;e{t(e)}),(function(e){i(e)}))}getMetaModel(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getXKT(e,t,i){var s=()=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n=0;)e[t]=0}const i=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),o=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),n=new Array(576);t(n);const a=new Array(60);t(a);const l=new Array(512);t(l);const A=new Array(256);t(A);const h=new Array(29);t(h);const c=new Array(30);function u(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}let d,p,f;function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(c);const m=e=>e<256?l[e]:l[256+(e>>>7)],_=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},v=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<{v(e,i[2*t],i[2*t+1])},y=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},B=(e,t,i)=>{const s=new Array(16);let r,o,n=0;for(r=1;r<=15;r++)n=n+i[r-1]<<1,s[r]=n;for(o=0;o<=t;o++){let t=e[2*o+1];0!==t&&(e[2*o]=y(s[t]++,t))}},w=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},x=e=>{e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},P=(e,t,i,s)=>{const r=2*t,o=2*i;return e[r]{const s=e.heap[i];let r=i<<1;for(;r<=e.heap_len&&(r{let o,n,a,l,u=0;if(0!==e.sym_next)do{o=255&e.pending_buf[e.sym_buf+u++],o+=(255&e.pending_buf[e.sym_buf+u++])<<8,n=e.pending_buf[e.sym_buf+u++],0===o?b(e,n,t):(a=A[n],b(e,a+256+1,t),l=i[a],0!==l&&(n-=h[a],v(e,n,l)),o--,a=m(o),b(e,a,r),l=s[a],0!==l&&(o-=c[a],v(e,o,l)))}while(u{const i=t.dyn_tree,s=t.stat_desc.static_tree,r=t.stat_desc.has_stree,o=t.stat_desc.elems;let n,a,l,A=-1;for(e.heap_len=0,e.heap_max=573,n=0;n>1;n>=1;n--)C(e,i,n);l=o;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],C(e,i,1),a=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=a,i[2*l]=i[2*n]+i[2*a],e.depth[l]=(e.depth[n]>=e.depth[a]?e.depth[n]:e.depth[a])+1,i[2*n+1]=i[2*a+1]=l,e.heap[1]=l++,C(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,s=t.max_code,r=t.stat_desc.static_tree,o=t.stat_desc.has_stree,n=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let A,h,c,u,d,p,f=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(i[2*e.heap[e.heap_max]+1]=0,A=e.heap_max+1;A<573;A++)h=e.heap[A],u=i[2*i[2*h+1]+1]+1,u>l&&(u=l,f++),i[2*h+1]=u,h>s||(e.bl_count[u]++,d=0,h>=a&&(d=n[h-a]),p=i[2*h],e.opt_len+=p*(u+d),o&&(e.static_len+=p*(r[2*h+1]+d)));if(0!==f){do{for(u=l-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[l]--,f-=2}while(f>0);for(u=l;0!==u;u--)for(h=e.bl_count[u];0!==h;)c=e.heap[--A],c>s||(i[2*c+1]!==u&&(e.opt_len+=(u-i[2*c+1])*i[2*c],i[2*c+1]=u),h--)}})(e,t),B(i,A,e.bl_count)},E=(e,t,i)=>{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=n,n=t[2*(s+1)+1],++a{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),s=0;s<=i;s++)if(r=n,n=t[2*(s+1)+1],!(++a{v(e,0+(s?1:0),3),x(e),_(e,i),_(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var T={_tr_init:e=>{D||((()=>{let e,t,o,g,m;const _=new Array(16);for(o=0,g=0;g<28;g++)for(h[g]=o,e=0;e<1<>=7;g<30;g++)for(c[g]=m<<7,e=0;e<1<{let r,l,A=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),F(e,e.l_desc),F(e,e.d_desc),A=(e=>{let t;for(E(e,e.dyn_ltree,e.l_desc.max_code),E(e,e.dyn_dtree,e.d_desc.max_code),F(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*o[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,l=e.static_len+3+7>>>3,l<=r&&(r=l)):r=l=i+5,i+4<=r&&-1!==t?S(e,t,i,s):4===e.strategy||l===r?(v(e,2+(s?1:0),3),M(e,n,a)):(v(e,4+(s?1:0),3),((e,t,i,s)=>{let r;for(v(e,t-257,5),v(e,i-1,5),v(e,s-4,4),r=0;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(A[i]+256+1)]++,e.dyn_dtree[2*m(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{v(e,2,3),b(e,256,n),(e=>{16===e.bi_valid?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},R=(e,t,i,s)=>{let r=65535&e|0,o=e>>>16&65535|0,n=0;for(;0!==i;){n=i>2e3?2e3:i,i-=n;do{r=r+t[s++]|0,o=o+r|0}while(--n);r%=65521,o%=65521}return r|o<<16|0};const L=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var U=(e,t,i,s)=>{const r=L,o=s+i;e^=-1;for(let i=s;i>>8^r[255&(e^t[i])];return-1^e},k={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},O={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:N,_tr_stored_block:Q,_tr_flush_block:V,_tr_tally:H,_tr_align:j}=T,{Z_NO_FLUSH:G,Z_PARTIAL_FLUSH:z,Z_FULL_FLUSH:W,Z_FINISH:K,Z_BLOCK:X,Z_OK:J,Z_STREAM_END:Y,Z_STREAM_ERROR:Z,Z_DATA_ERROR:q,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:ee,Z_FILTERED:te,Z_HUFFMAN_ONLY:ie,Z_RLE:se,Z_FIXED:re,Z_DEFAULT_STRATEGY:oe,Z_UNKNOWN:ne,Z_DEFLATED:ae}=O,le=258,Ae=262,he=42,ce=113,ue=666,de=(e,t)=>(e.msg=k[t],t),pe=e=>2*e-(e>4?9:0),fe=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ge=e=>{let t,i,s,r=e.w_size;t=e.hash_size,s=t;do{i=e.head[--s],e.head[s]=i>=r?i-r:0}while(--t);t=r,s=t;do{i=e.prev[--s],e.prev[s]=i>=r?i-r:0}while(--t)};let me=(e,t,i)=>(t<{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},ve=(e,t)=>{V(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,_e(e.strm)},be=(e,t)=>{e.pending_buf[e.pending++]=t},ye=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Be=(e,t,i,s)=>{let r=e.avail_in;return r>s&&(r=s),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=R(e.adler,t,r,i):2===e.state.wrap&&(e.adler=U(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},we=(e,t)=>{let i,s,r=e.max_chain_length,o=e.strstart,n=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-Ae?e.strstart-(e.w_size-Ae):0,A=e.window,h=e.w_mask,c=e.prev,u=e.strstart+le;let d=A[o+n-1],p=A[o+n];e.prev_length>=e.good_match&&(r>>=2),a>e.lookahead&&(a=e.lookahead);do{if(i=t,A[i+n]===p&&A[i+n-1]===d&&A[i]===A[o]&&A[++i]===A[o+1]){o+=2,i++;do{}while(A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&on){if(e.match_start=t,n=s,s>=a)break;d=A[o+n-1],p=A[o+n]}}}while((t=c[t&h])>l&&0!=--r);return n<=e.lookahead?n:e.lookahead},xe=e=>{const t=e.w_size;let i,s,r;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ae)&&(e.window.set(e.window.subarray(t,t+t-s),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ge(e),s+=t),0===e.strm.avail_in)break;if(i=Be(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=i,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=me(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=me(e,e.ins_h,e.window[r+3-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let i,s,r,o=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n=0,a=e.strm.avail_in;do{if(i=65535,r=e.bi_valid+42>>3,e.strm.avail_outs+e.strm.avail_in&&(i=s+e.strm.avail_in),i>r&&(i=r),i>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,_e(e.strm),s&&(s>i&&(s=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,i-=s),i&&(Be(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===n);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_waterr&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(Be(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water>3,r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r,o=r>e.w_size?e.w_size:r,s=e.strstart-e.block_start,(s>=o||(s||t===K)&&t!==G&&0===e.strm.avail_in&&s<=r)&&(i=s>r?r:s,n=t===K&&0===e.strm.avail_in&&i===s?1:0,Q(e,e.block_start,i,n),e.block_start+=i,_e(e.strm)),n?3:1)},Ce=(e,t)=>{let i,s;for(;;){if(e.lookahead=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-Ae&&(e.match_length=we(e,i)),e.match_length>=3)if(s=H(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=me(e,e.ins_h,e.window[e.strstart+1]);else s=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2},Me=(e,t)=>{let i,s,r;for(;;){if(e.lookahead=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=H(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,s&&(ve(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(s=H(e,0,e.window[e.strstart-1]),s&&ve(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=H(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2};function Fe(e,t,i,s,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=s,this.func=r}const Ee=[new Fe(0,0,0,0,Pe),new Fe(4,4,8,4,Ce),new Fe(4,5,16,8,Ce),new Fe(4,6,32,32,Ce),new Fe(4,4,16,16,Me),new Fe(8,16,32,32,Me),new Fe(8,16,128,128,Me),new Fe(8,32,128,256,Me),new Fe(32,128,258,1024,Me),new Fe(32,258,258,4096,Me)];function Ie(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ae,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),fe(this.dyn_ltree),fe(this.dyn_dtree),fe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),fe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),fe(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const De=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==he&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==ce&&t.status!==ue?1:0},Se=e=>{if(De(e))return de(e,Z);e.total_in=e.total_out=0,e.data_type=ne;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?he:ce,e.adler=2===t.wrap?0:1,t.last_flush=-2,N(t),J},Te=e=>{const t=Se(e);var i;return t===J&&((i=e.state).window_size=2*i.w_size,fe(i.head),i.max_lazy_match=Ee[i.level].max_lazy,i.good_match=Ee[i.level].good_length,i.nice_match=Ee[i.level].nice_length,i.max_chain_length=Ee[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),t},Re=(e,t,i,s,r,o)=>{if(!e)return Z;let n=1;if(t===ee&&(t=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),r<1||r>9||i!==ae||s<8||s>15||t<0||t>9||o<0||o>re||8===s&&1!==n)return de(e,Z);8===s&&(s=9);const a=new Ie;return e.state=a,a.strm=e,a.status=he,a.wrap=n,a.gzhead=null,a.w_bits=s,a.w_size=1<De(e)||2!==e.state.wrap?Z:(e.state.gzhead=t,J),ke=(e,t)=>{if(De(e)||t>X||t<0)return e?de(e,Z):Z;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ue&&t!==K)return de(e,0===e.avail_out?$:Z);const s=i.last_flush;if(i.last_flush=t,0!==i.pending){if(_e(e),0===e.avail_out)return i.last_flush=-1,J}else if(0===e.avail_in&&pe(t)<=pe(s)&&t!==K)return de(e,$);if(i.status===ue&&0!==e.avail_in)return de(e,$);if(i.status===he&&0===i.wrap&&(i.status=ce),i.status===he){let t=ae+(i.w_bits-8<<4)<<8,s=-1;if(s=i.strategy>=ie||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=s<<6,0!==i.strstart&&(t|=32),t+=31-t%31,ye(i,t),0!==i.strstart&&(ye(i,e.adler>>>16),ye(i,65535&e.adler)),e.adler=1,i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(57===i.status)if(e.adler=0,be(i,31),be(i,139),be(i,8),i.gzhead)be(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),be(i,255&i.gzhead.time),be(i,i.gzhead.time>>8&255),be(i,i.gzhead.time>>16&255),be(i,i.gzhead.time>>24&255),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(be(i,255&i.gzhead.extra.length),be(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=U(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(be(i,0),be(i,0),be(i,0),be(i,0),be(i,0),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,3),i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J;if(69===i.status){if(i.gzhead.extra){let t=i.pending,s=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+s>i.pending_buf_size;){let r=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=r,_e(e),0!==i.pending)return i.last_flush=-1,J;t=0,s-=r}let r=new Uint8Array(i.gzhead.extra);i.pending_buf.set(r.subarray(i.gzindex,i.gzindex+s),i.pending),i.pending+=s,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindexs&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindexs&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(_e(e),0!==i.pending))return i.last_flush=-1,J;be(i,255&e.adler),be(i,e.adler>>8&255),e.adler=0}if(i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(0!==e.avail_in||0!==i.lookahead||t!==G&&i.status!==ue){let s=0===i.level?Pe(i,t):i.strategy===ie?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(xe(e),0===e.lookahead)){if(t===G)return 1;break}if(e.match_length=0,i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===se?((e,t)=>{let i,s,r,o;const n=e.window;for(;;){if(e.lookahead<=le){if(xe(e),e.lookahead<=le&&t===G)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=e.strstart-1,s=n[r],s===n[++r]&&s===n[++r]&&s===n[++r])){o=e.strstart+le;do{}while(s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=H(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):Ee[i.level].func(i,t);if(3!==s&&4!==s||(i.status=ue),1===s||3===s)return 0===e.avail_out&&(i.last_flush=-1),J;if(2===s&&(t===z?j(i):t!==X&&(Q(i,0,0,!1),t===W&&(fe(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),_e(e),0===e.avail_out))return i.last_flush=-1,J}return t!==K?J:i.wrap<=0?Y:(2===i.wrap?(be(i,255&e.adler),be(i,e.adler>>8&255),be(i,e.adler>>16&255),be(i,e.adler>>24&255),be(i,255&e.total_in),be(i,e.total_in>>8&255),be(i,e.total_in>>16&255),be(i,e.total_in>>24&255)):(ye(i,e.adler>>>16),ye(i,65535&e.adler)),_e(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?J:Y)},Oe=e=>{if(De(e))return Z;const t=e.state.status;return e.state=null,t===ce?de(e,q):J},Ne=(e,t)=>{let i=t.length;if(De(e))return Z;const s=e.state,r=s.wrap;if(2===r||1===r&&s.status!==he||s.lookahead)return Z;if(1===r&&(e.adler=R(e.adler,t,i,0)),s.wrap=0,i>=s.w_size){0===r&&(fe(s.head),s.strstart=0,s.block_start=0,s.insert=0);let e=new Uint8Array(s.w_size);e.set(t.subarray(i-s.w_size,i),0),t=e,i=s.w_size}const o=e.avail_in,n=e.next_in,a=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,xe(s);s.lookahead>=3;){let e=s.strstart,t=s.lookahead-2;do{s.ins_h=me(s,s.ins_h,s.window[e+3-1]),s.prev[e&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=e,e++}while(--t);s.strstart=e,s.lookahead=2,xe(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,e.next_in=n,e.input=a,e.avail_in=o,s.wrap=r,J};const Qe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Ve=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Qe(i,t)&&(e[t]=i[t])}}return e},He=e=>{let t=0;for(let i=0,s=e.length;i=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ge[254]=Ge[254]=1;var ze=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,s,r,o,n=e.length,a=0;for(r=0;r>>6,t[o++]=128|63&i):i<65536?(t[o++]=224|i>>>12,t[o++]=128|i>>>6&63,t[o++]=128|63&i):(t[o++]=240|i>>>18,t[o++]=128|i>>>12&63,t[o++]=128|i>>>6&63,t[o++]=128|63&i);return t},We=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let s,r;const o=new Array(2*i);for(r=0,s=0;s4)o[r++]=65533,s+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&s1?o[r++]=65533:t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&je)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let s=0;s{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Ge[e[i]]>t?i:t},Xe=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Je=Object.prototype.toString,{Z_NO_FLUSH:Ye,Z_SYNC_FLUSH:Ze,Z_FULL_FLUSH:qe,Z_FINISH:$e,Z_OK:et,Z_STREAM_END:tt,Z_DEFAULT_COMPRESSION:it,Z_DEFAULT_STRATEGY:st,Z_DEFLATED:rt}=O;function ot(e){this.options=Ve({level:it,method:rt,chunkSize:16384,windowBits:15,memLevel:8,strategy:st},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Le(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==et)throw new Error(k[i]);if(t.header&&Ue(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ze(t.dictionary):"[object ArrayBuffer]"===Je.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ne(this.strm,e),i!==et)throw new Error(k[i]);this._dict_set=!0}}function nt(e,t){const i=new ot(t);if(i.push(e,!0),i.err)throw i.msg||k[i.err];return i.result}ot.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize;let r,o;if(this.ended)return!1;for(o=t===~~t?t:!0===t?$e:Ye,"string"==typeof e?i.input=ze(e):"[object ArrayBuffer]"===Je.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),(o===Ze||o===qe)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(r=ke(i,o),r===tt)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=Oe(this.strm),this.onEnd(r),this.ended=!0,r===et;if(0!==i.avail_out){if(o>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ot.prototype.onData=function(e){this.chunks.push(e)},ot.prototype.onEnd=function(e){e===et&&(this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var at={Deflate:ot,deflate:nt,deflateRaw:function(e,t){return(t=t||{}).raw=!0,nt(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,nt(e,t)},constants:O};const lt=16209;var At=function(e,t){let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x,P;const C=e.state;i=e.next_in,x=e.input,s=i+(e.avail_in-5),r=e.next_out,P=e.output,o=r-(t-e.avail_out),n=r+(e.avail_out-257),a=C.dmax,l=C.wsize,A=C.whave,h=C.wnext,c=C.window,u=C.hold,d=C.bits,p=C.lencode,f=C.distcode,g=(1<>>24,u>>>=v,d-=v,v=_>>>16&255,0===v)P[r++]=65535&_;else{if(!(16&v)){if(0==(64&v)){_=p[(65535&_)+(u&(1<>>=v,d-=v),d<15&&(u+=x[i++]<>>24,u>>>=v,d-=v,v=_>>>16&255,!(16&v)){if(0==(64&v)){_=f[(65535&_)+(u&(1<a){e.msg="invalid distance too far back",C.mode=lt;break e}if(u>>>=v,d-=v,v=r-o,y>v){if(v=y-v,v>A&&C.sane){e.msg="invalid distance too far back",C.mode=lt;break e}if(B=0,w=c,0===h){if(B+=l-v,v2;)P[r++]=w[B++],P[r++]=w[B++],P[r++]=w[B++],b-=3;b&&(P[r++]=w[B++],b>1&&(P[r++]=w[B++]))}else{B=r-y;do{P[r++]=P[B++],P[r++]=P[B++],P[r++]=P[B++],b-=3}while(b>2);b&&(P[r++]=P[B++],b>1&&(P[r++]=P[B++]))}break}}break}}while(i>3,i-=b,d-=b<<3,u&=(1<{const l=a.bits;let A,h,c,u,d,p,f=0,g=0,m=0,_=0,v=0,b=0,y=0,B=0,w=0,x=0,P=null;const C=new Uint16Array(16),M=new Uint16Array(16);let F,E,I,D=null;for(f=0;f<=15;f++)C[f]=0;for(g=0;g=1&&0===C[_];_--);if(v>_&&(v=_),0===_)return r[o++]=20971520,r[o++]=20971520,a.bits=1,0;for(m=1;m<_&&0===C[m];m++);for(v0&&(0===e||1!==_))return-1;for(M[1]=0,f=1;f<15;f++)M[f+1]=M[f]+C[f];for(g=0;g852||2===e&&w>592)return 1;for(;;){F=f-y,n[g]+1=p?(E=D[n[g]-p],I=P[n[g]-p]):(E=96,I=0),A=1<>y)+h]=F<<24|E<<16|I|0}while(0!==h);for(A=1<>=1;if(0!==A?(x&=A-1,x+=A):x=0,g++,0==--C[f]){if(f===_)break;f=t[i+n[g]]}if(f>v&&(x&u)!==c){for(0===y&&(y=v),d+=m,b=f-y,B=1<852||2===e&&w>592)return 1;c=x&u,r[c]=v<<24|b<<16|d-o|0}}return 0!==x&&(r[d+x]=f-y<<24|64<<16|0),a.bits=v,0};const{Z_FINISH:ft,Z_BLOCK:gt,Z_TREES:mt,Z_OK:_t,Z_STREAM_END:vt,Z_NEED_DICT:bt,Z_STREAM_ERROR:yt,Z_DATA_ERROR:Bt,Z_MEM_ERROR:wt,Z_BUF_ERROR:xt,Z_DEFLATED:Pt}=O,Ct=16180,Mt=16190,Ft=16191,Et=16192,It=16194,Dt=16199,St=16200,Tt=16206,Rt=16209,Lt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const kt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},Ot=e=>{if(kt(e))return yt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ct,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,_t},Nt=e=>{if(kt(e))return yt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Ot(e)},Qt=(e,t)=>{let i;if(kt(e))return yt;const s=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?yt:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,Nt(e))},Vt=(e,t)=>{if(!e)return yt;const i=new Ut;e.state=i,i.strm=e,i.window=null,i.mode=Ct;const s=Qt(e,t);return s!==_t&&(e.state=null),s};let Ht,jt,Gt=!0;const zt=e=>{if(Gt){Ht=new Int32Array(512),jt=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(pt(1,e.lens,0,288,Ht,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;pt(2,e.lens,0,32,jt,0,e.work,{bits:5}),Gt=!1}e.lencode=Ht,e.lenbits=9,e.distcode=jt,e.distbits=5},Wt=(e,t,i,s)=>{let r;const o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(i-o.wsize,i),0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>s&&(r=s),o.window.set(t.subarray(i-s,i-s+r),o.wnext),(s-=r)?(o.window.set(t.subarray(i-s,i),0),o.wnext=s,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave{let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x=0;const P=new Uint8Array(4);let C,M;const F=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(kt(e)||!e.output||!e.input&&0!==e.avail_in)return yt;i=e.state,i.mode===Ft&&(i.mode=Et),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,c=a,u=l,w=_t;e:for(;;)switch(i.mode){case Ct:if(0===i.wrap){i.mode=Et;break}for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>>8&255,i.check=U(i.check,P,2,0),A=0,h=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&A)<<8)+(A>>8))%31){e.msg="incorrect header check",i.mode=Rt;break}if((15&A)!==Pt){e.msg="unknown compression method",i.mode=Rt;break}if(A>>>=4,h-=4,B=8+(15&A),0===i.wbits&&(i.wbits=B),B>15||B>i.wbits){e.msg="invalid window size",i.mode=Rt;break}i.dmax=1<>8&1),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16182;case 16182:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<>>8&255,P[2]=A>>>16&255,P[3]=A>>>24&255,i.check=U(i.check,P,4,0)),A=0,h=0,i.mode=16183;case 16183:for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>8),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16184;case 16184:if(1024&i.flags){for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(d=i.length,d>a&&(d=a),d&&(i.head&&(B=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(o,o+d),B)),512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,i.length-=d),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===a)break e;d=0;do{B=s[o+d++],i.head&&B&&i.length<65536&&(i.head.name+=String.fromCharCode(B))}while(B&&d>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Ft;break;case 16189:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<>>=7&h,h-=7&h,i.mode=Tt;break}for(;h<3;){if(0===a)break e;a--,A+=s[o++]<>>=1,h-=1,3&A){case 0:i.mode=16193;break;case 1:if(zt(i),i.mode=Dt,t===mt){A>>>=2,h-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Rt}A>>>=2,h-=2;break;case 16193:for(A>>>=7&h,h-=7&h;h<32;){if(0===a)break e;a--,A+=s[o++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=Rt;break}if(i.length=65535&A,A=0,h=0,i.mode=It,t===mt)break e;case It:i.mode=16195;case 16195:if(d=i.length,d){if(d>a&&(d=a),d>l&&(d=l),0===d)break e;r.set(s.subarray(o,o+d),n),a-=d,o+=d,l-=d,n+=d,i.length-=d;break}i.mode=Ft;break;case 16196:for(;h<14;){if(0===a)break e;a--,A+=s[o++]<>>=5,h-=5,i.ndist=1+(31&A),A>>>=5,h-=5,i.ncode=4+(15&A),A>>>=4,h-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Rt;break}i.have=0,i.mode=16197;case 16197:for(;i.have>>=3,h-=3}for(;i.have<19;)i.lens[F[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,C={bits:i.lenbits},w=pt(0,i.lens,0,19,i.lencode,0,i.work,C),i.lenbits=C.bits,w){e.msg="invalid code lengths set",i.mode=Rt;break}i.have=0,i.mode=16198;case 16198:for(;i.have>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=g,h-=g,i.lens[i.have++]=_;else{if(16===_){for(M=g+2;h>>=g,h-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=Rt;break}B=i.lens[i.have-1],d=3+(3&A),A>>>=2,h-=2}else if(17===_){for(M=g+3;h>>=g,h-=g,B=0,d=3+(7&A),A>>>=3,h-=3}else{for(M=g+7;h>>=g,h-=g,B=0,d=11+(127&A),A>>>=7,h-=7}if(i.have+d>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Rt;break}for(;d--;)i.lens[i.have++]=B}}if(i.mode===Rt)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Rt;break}if(i.lenbits=9,C={bits:i.lenbits},w=pt(1,i.lens,0,i.nlen,i.lencode,0,i.work,C),i.lenbits=C.bits,w){e.msg="invalid literal/lengths set",i.mode=Rt;break}if(i.distbits=6,i.distcode=i.distdyn,C={bits:i.distbits},w=pt(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,C),i.distbits=C.bits,w){e.msg="invalid distances set",i.mode=Rt;break}if(i.mode=Dt,t===mt)break e;case Dt:i.mode=St;case St:if(a>=6&&l>=258){e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,At(e,u),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,i.mode===Ft&&(i.back=-1);break}for(i.back=0;x=i.lencode[A&(1<>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>v)],g=x>>>24,m=x>>>16&255,_=65535&x,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,i.length=_,0===m){i.mode=16205;break}if(32&m){i.back=-1,i.mode=Ft;break}if(64&m){e.msg="invalid literal/length code",i.mode=Rt;break}i.extra=15&m,i.mode=16201;case 16201:if(i.extra){for(M=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;x=i.distcode[A&(1<>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>v)],g=x>>>24,m=x>>>16&255,_=65535&x,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,64&m){e.msg="invalid distance code",i.mode=Rt;break}i.offset=_,i.extra=15&m,i.mode=16203;case 16203:if(i.extra){for(M=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Rt;break}i.mode=16204;case 16204:if(0===l)break e;if(d=u-l,i.offset>d){if(d=i.offset-d,d>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Rt;break}d>i.wnext?(d-=i.wnext,p=i.wsize-d):p=i.wnext-d,d>i.length&&(d=i.length),f=i.window}else f=r,p=n-i.offset,d=i.length;d>l&&(d=l),l-=d,i.length-=d;do{r[n++]=f[p++]}while(--d);0===i.length&&(i.mode=St);break;case 16205:if(0===l)break e;r[n++]=i.length,l--,i.mode=St;break;case Tt:if(i.wrap){for(;h<32;){if(0===a)break e;a--,A|=s[o++]<{if(kt(e))return yt;let t=e.state;return t.window&&(t.window=null),e.state=null,_t},Zt=(e,t)=>{if(kt(e))return yt;const i=e.state;return 0==(2&i.wrap)?yt:(i.head=t,t.done=!1,_t)},qt=(e,t)=>{const i=t.length;let s,r,o;return kt(e)?yt:(s=e.state,0!==s.wrap&&s.mode!==Mt?yt:s.mode===Mt&&(r=1,r=R(r,t,i,0),r!==s.check)?Bt:(o=Wt(e,t,i,i),o?(s.mode=16210,wt):(s.havedict=1,_t)))},$t=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const ei=Object.prototype.toString,{Z_NO_FLUSH:ti,Z_FINISH:ii,Z_OK:si,Z_STREAM_END:ri,Z_NEED_DICT:oi,Z_STREAM_ERROR:ni,Z_DATA_ERROR:ai,Z_MEM_ERROR:li}=O;function Ai(e){this.options=Ve({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Xt(this.strm,t.windowBits);if(i!==si)throw new Error(k[i]);if(this.header=new $t,Zt(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ze(t.dictionary):"[object ArrayBuffer]"===ei.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=qt(this.strm,t.dictionary),i!==si)))throw new Error(k[i])}function hi(e,t){const i=new Ai(t);if(i.push(e),i.err)throw i.msg||k[i.err];return i.result}Ai.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize,r=this.options.dictionary;let o,n,a;if(this.ended)return!1;for(n=t===~~t?t:!0===t?ii:ti,"[object ArrayBuffer]"===ei.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),o=Jt(i,n),o===oi&&r&&(o=qt(i,r),o===si?o=Jt(i,n):o===ai&&(o=oi));i.avail_in>0&&o===ri&&i.state.wrap>0&&0!==e[i.next_in];)Kt(i),o=Jt(i,n);switch(o){case ni:case ai:case oi:case li:return this.onEnd(o),this.ended=!0,!1}if(a=i.avail_out,i.next_out&&(0===i.avail_out||o===ri))if("string"===this.options.to){let e=Ke(i.output,i.next_out),t=i.next_out-e,r=We(i.output,e);i.next_out=t,i.avail_out=s-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(r)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(o!==si||0!==a){if(o===ri)return o=Yt(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},Ai.prototype.onData=function(e){this.chunks.push(e)},Ai.prototype.onEnd=function(e){e===si&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ci={Inflate:Ai,inflate:hi,inflateRaw:function(e,t){return(t=t||{}).raw=!0,hi(e,t)},ungzip:hi,constants:O};const{Deflate:ui,deflate:di,deflateRaw:pi,gzip:fi}=at,{Inflate:gi,inflate:mi,inflateRaw:_i,ungzip:vi}=ci;var bi=ui,yi=di,Bi=pi,wi=fi,xi=gi,Pi=mi,Ci=_i,Mi=vi,Fi=O,Ei={Deflate:bi,deflate:yi,deflateRaw:Bi,gzip:wi,Inflate:xi,inflate:Pi,inflateRaw:Ci,ungzip:Mi,constants:Fi};e.Deflate=bi,e.Inflate=xi,e.constants=Fi,e.default=Ei,e.deflate=yi,e.deflateRaw=Bi,e.gzip=wi,e.inflate=Pi,e.inflateRaw=Ci,e.ungzip=Mi,Object.defineProperty(e,"__esModule",{value:!0})}));var bC=Object.freeze({__proto__:null});let yC=window.pako||bC;yC.inflate||(yC=yC.default);const BC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const wC={version:1,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11]}}(i),a=function(e){return{positions:new Uint16Array(yC.inflate(e.positions).buffer),normals:new Int8Array(yC.inflate(e.normals).buffer),indices:new Uint32Array(yC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(yC.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(yC.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(yC.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(yC.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(yC.inflate(e.meshColors).buffer),entityIDs:yC.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(yC.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(yC.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(yC.inflate(e.positionsDecodeMatrix).buffer)}}(n);!function(e,t,i,s,r,o){o.getNextId(),s.positionsCompression="precompressed",s.normalsCompression="precompressed";const n=i.positions,a=i.normals,l=i.indices,A=i.edgeIndices,h=i.meshPositions,c=i.meshIndices,u=i.meshEdgesIndices,p=i.meshColors,f=JSON.parse(i.entityIDs),g=i.entityMeshes,m=i.entityIsObjects,_=h.length,v=g.length;for(let r=0;rg[e]g[t]?1:0));for(let e=0;e1||(F[i]=e)}}for(let e=0;e1,o=DC(m.subarray(4*t,4*t+3)),u=m[4*t+3]/255,_=a.subarray(d[t],i?a.length:d[t+1]),b=l.subarray(d[t],i?l.length:d[t+1]),B=A.subarray(p[t],i?A.length:p[t+1]),x=h.subarray(f[t],i?h.length:f[t+1]),M=c.subarray(g[t],g[t]+16);if(r){const e=`${n}-geometry.${t}`;s.createGeometry({id:e,primitive:"triangles",positionsCompressed:_,normalsCompressed:b,indices:B,edgeIndices:x,positionsDecodeMatrix:M})}else{const e=`${n}-${t}`;v[F[t]];const i={};s.createMesh(y.apply(i,{id:e,primitive:"triangles",positionsCompressed:_,normalsCompressed:b,indices:B,edgeIndices:x,positionsDecodeMatrix:M,color:o,opacity:u}))}}let E=0;for(let e=0;e1){const t={},r=`${n}-instance.${E++}`,o=`${n}-geometry.${i}`,a=16*B[e],A=u.subarray(a,a+16);s.createMesh(y.apply(t,{id:r,geometryId:o,matrix:A})),l.push(r)}else l.push(i)}if(l.length>0){const e={};s.createEntity(y.apply(e,{id:r,isObject:!0,meshIds:l}))}}}(0,0,a,s,0,o)}};let TC=window.pako||bC;TC.inflate||(TC=TC.default);const RC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const LC={version:5,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i),a=function(e){return{positions:new Float32Array(TC.inflate(e.positions).buffer),normals:new Int8Array(TC.inflate(e.normals).buffer),indices:new Uint32Array(TC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(TC.inflate(e.edgeIndices).buffer),matrices:new Float32Array(TC.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(TC.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(TC.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(TC.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(TC.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(TC.inflate(e.primitiveInstances).buffer),eachEntityId:TC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(TC.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(TC.inflate(e.eachEntityMatricesPortion).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="disabled",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColor,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),_=i.eachEntityPrimitiveInstancesPortion,v=i.eachEntityMatricesPortion,b=u.length,B=g.length,w=new Uint8Array(b),x=m.length;for(let e=0;e1||(P[i]=e)}}for(let e=0;e1,r=RC(f.subarray(4*e,4*e+3)),o=f[4*e+3]/255,c=a.subarray(u[e],t?a.length:u[e+1]),g=l.subarray(u[e],t?l.length:u[e+1]),_=A.subarray(d[e],t?A.length:d[e+1]),v=h.subarray(p[e],t?h.length:p[e+1]);if(i){const t=`${n}-geometry.${e}`;s.createGeometry({id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:_,edgeIndices:v})}else{const t=e;m[P[e]];const i={};s.createMesh(y.apply(i,{id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:_,edgeIndices:v,color:r,opacity:o}))}}let C=0;for(let e=0;e1){const t={},r="instance."+C++,o="geometry"+i,n=16*v[e],l=c.subarray(n,n+16);s.createMesh(y.apply(t,{id:r,geometryId:o,matrix:l})),a.push(r)}else a.push(i)}if(a.length>0){const e={};s.createEntity(y.apply(e,{id:r,isObject:!0,meshIds:a}))}}}(0,0,a,s,0,o)}};let UC=window.pako||bC;UC.inflate||(UC=UC.default);const kC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const OC={version:6,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:UC.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:UC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.reusedPrimitivesDecodeMatrix,p=i.eachPrimitivePositionsAndNormalsPortion,f=i.eachPrimitiveIndicesPortion,g=i.eachPrimitiveEdgeIndicesPortion,m=i.eachPrimitiveColorAndOpacity,_=i.primitiveInstances,v=JSON.parse(i.eachEntityId),b=i.eachEntityPrimitiveInstancesPortion,B=i.eachEntityMatricesPortion,w=i.eachTileAABB,x=i.eachTileEntitiesPortion,P=p.length,C=_.length,M=v.length,F=x.length,E=new Uint32Array(P);for(let e=0;e1,c=t===P-1,d=a.subarray(p[t],c?a.length:p[t+1]),v=l.subarray(p[t],c?l.length:p[t+1]),b=A.subarray(f[t],c?A.length:f[t+1]),B=h.subarray(g[t],c?h.length:g[t+1]),w=kC(m.subarray(4*t,4*t+3)),x=m[4*t+3]/255,C=o.getNextId();if(r){const e=`${n}-geometry.${i}.${t}`;U[e]||(s.createGeometry({id:e,primitive:"triangles",positionsCompressed:d,indices:b,edgeIndices:B,positionsDecodeMatrix:u}),U[e]=!0),s.createMesh(y.apply(N,{id:C,geometryId:e,origin:I,matrix:F,color:w,opacity:x})),R.push(C)}else s.createMesh(y.apply(N,{id:C,origin:I,primitive:"triangles",positionsCompressed:d,normalsCompressed:v,indices:b,edgeIndices:B,positionsDecodeMatrix:L,color:w,opacity:x})),R.push(C)}R.length>0&&s.createEntity(y.apply(O,{id:x,isObject:!0,meshIds:R}))}}}(e,t,a,s,0,o)}};let NC=window.pako||bC;NC.inflate||(NC=NC.default);const QC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function VC(e){const t=[];for(let i=0,s=e.length;i1,d=t===E-1,P=QC(x.subarray(6*e,6*e+3)),C=x[6*e+3]/255,M=x[6*e+4]/255,F=x[6*e+5]/255,I=o.getNextId();if(r){const r=w[e],o=u.slice(r,r+16),B=`${n}-geometry.${i}.${t}`;if(!Q[B]){let e,i,r,o,n,u;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 1:e="surface",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 2:e="points",i=a.subarray(g[t],d?a.length:g[t+1]),o=VC(A.subarray(_[t],d?A.length:_[t+1]));break;case 3:e="lines",i=a.subarray(g[t],d?a.length:g[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]);break;default:continue}s.createGeometry({id:B,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:u,positionsDecodeMatrix:p}),Q[B]=!0}s.createMesh(y.apply(V,{id:I,geometryId:B,origin:R,matrix:o,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}else{let e,i,r,o,n,u;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 1:e="surface",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 2:e="points",i=a.subarray(g[t],d?a.length:g[t+1]),o=VC(A.subarray(_[t],d?A.length:_[t+1]));break;case 3:e="lines",i=a.subarray(g[t],d?a.length:g[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]);break;default:continue}s.createMesh(y.apply(V,{id:I,origin:R,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:u,positionsDecodeMatrix:N,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}}U.length>0&&s.createEntity(y.apply(O,{id:F,isObject:!0,meshIds:U}))}}}(e,t,a,s,0,o)}};let jC=window.pako||bC;jC.inflate||(jC=jC.default);const GC=d.vec4(),zC=d.vec4();const WC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function KC(e){const t=[];for(let i=0,s=e.length;i1,l=r===L-1,A=WC(E.subarray(6*e,6*e+3)),h=E[6*e+3]/255,c=E[6*e+4]/255,I=E[6*e+5]/255,D=o.getNextId();if(a){const o=F[e],a=_.slice(o,o+16),M=`${n}-geometry.${i}.${r}`;let E=H[M];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(b[r]){case 0:E.primitiveName="solid",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=p.subarray(w[r],l?p.length:w[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=p.subarray(w[r],l?p.length:w[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryColors=KC(f.subarray(x[r],l?f.length:x[r+1])),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i0&&n.length>0;break;case 1:e="surface",t=u.subarray(B[r],l?u.length:B[r+1]),i=p.subarray(w[r],l?p.length:w[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),a=m.subarray(C[r],l?m.length:C[r+1]),d=t.length>0&&n.length>0;break;case 2:e="points",t=u.subarray(B[r],l?u.length:B[r+1]),o=KC(f.subarray(x[r],l?f.length:x[r+1])),d=t.length>0;break;case 3:e="lines",t=u.subarray(B[r],l?u.length:B[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),d=t.length>0&&n.length>0;break;default:continue}d&&(s.createMesh(y.apply(G,{id:D,origin:Q,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:R,color:A,metallic:c,roughness:I,opacity:h})),T.push(D))}}T.length>0&&s.createEntity(y.apply(j,{id:A,isObject:!0,meshIds:T}))}}}(e,t,a,s,r,o)}};let JC=window.pako||bC;JC.inflate||(JC=JC.default);const YC=d.vec4(),ZC=d.vec4();const qC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const $C={version:9,parse:function(e,t,i,s,r,o){const n=function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:JC.inflate(e,t).buffer}return{metadata:JSON.parse(JC.inflate(e.metadata,{to:"string"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(JC.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.metadata,l=i.positions,A=i.normals,h=i.colors,c=i.indices,u=i.edgeIndices,p=i.matrices,f=i.reusedGeometriesDecodeMatrix,g=i.eachGeometryPrimitiveType,m=i.eachGeometryPositionsPortion,_=i.eachGeometryNormalsPortion,v=i.eachGeometryColorsPortion,b=i.eachGeometryIndicesPortion,B=i.eachGeometryEdgeIndicesPortion,w=i.eachMeshGeometriesPortion,x=i.eachMeshMatricesPortion,P=i.eachMeshMaterial,C=i.eachEntityId,M=i.eachEntityMeshesPortion,F=i.eachTileAABB,E=i.eachTileEntitiesPortion,I=m.length,D=w.length,S=M.length,T=E.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});const R=new Uint32Array(I);for(let e=0;e1,C=r===I-1,M=qC(P.subarray(6*e,6*e+3)),F=P[6*e+3]/255,E=P[6*e+4]/255,D=P[6*e+5]/255,S=o.getNextId();if(a){const o=x[e],a=p.slice(o,o+16),w=`${n}-geometry.${i}.${r}`;let P=k[w];if(!P){P={batchThisMesh:!t.reuseGeometries};let e=!1;switch(g[r]){case 0:P.primitiveName="solid",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(_[r],C?A.length:_[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),P.geometryEdgeIndices=u.subarray(B[r],C?u.length:B[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 1:P.primitiveName="surface",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(_[r],C?A.length:_[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),P.geometryEdgeIndices=u.subarray(B[r],C?u.length:B[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 2:P.primitiveName="points",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryColors=h.subarray(v[r],C?h.length:v[r+1]),e=P.geometryPositions.length>0;break;case 3:P.primitiveName="lines",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;default:continue}if(e||(P=null),P&&(P.geometryPositions.length,P.batchThisMesh)){P.decompressedPositions=new Float32Array(P.geometryPositions.length),P.transformedAndRecompressedPositions=new Uint16Array(P.geometryPositions.length);const e=P.geometryPositions,t=P.decompressedPositions;for(let i=0,s=e.length;i0&&n.length>0;break;case 1:e="surface",t=l.subarray(m[r],C?l.length:m[r+1]),i=A.subarray(_[r],C?A.length:_[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),a=u.subarray(B[r],C?u.length:B[r+1]),d=t.length>0&&n.length>0;break;case 2:e="points",t=l.subarray(m[r],C?l.length:m[r+1]),o=h.subarray(v[r],C?h.length:v[r+1]),d=t.length>0;break;case 3:e="lines",t=l.subarray(m[r],C?l.length:m[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),d=t.length>0&&n.length>0;break;default:continue}d&&(s.createMesh(y.apply(j,{id:S,origin:L,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:Q,color:M,metallic:E,roughness:D,opacity:F})),O.push(S))}}O.length>0&&s.createEntity(y.apply(H,{id:F,isObject:!0,meshIds:O}))}}}(e,t,a,s,r,o)}};let eM=window.pako||bC;eM.inflate||(eM=eM.default);const tM=d.vec4(),iM=d.vec4();const sM=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function rM(e,t){const i=[];if(t.length>1)for(let e=0,s=t.length-1;e1)for(let t=0,s=e.length/3-1;t0,a=9*e,c=1===h[a+0],u=h[a+1];h[a+2],h[a+3];const d=h[a+4],p=h[a+5],f=h[a+6],g=h[a+7],m=h[a+8];if(o){const t=new Uint8Array(l.subarray(i,r)).buffer,o=`${n}-texture-${e}`;if(c)s.createTexture({id:o,buffers:[t],minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m});else{const e=new Blob([t],{type:10001===u?"image/jpeg":10002===u?"image/png":"image/gif"}),i=(window.URL||window.webkitURL).createObjectURL(e),r=document.createElement("img");r.src=i,s.createTexture({id:o,image:r,minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m})}}}for(let e=0;e=0?`${n}-texture-${r}`:null,normalsTextureId:a>=0?`${n}-texture-${a}`:null,metallicRoughnessTextureId:o>=0?`${n}-texture-${o}`:null,emissiveTextureId:l>=0?`${n}-texture-${l}`:null,occlusionTextureId:A>=0?`${n}-texture-${A}`:null})}const j=new Uint32Array(N);for(let e=0;e1,l=r===N-1,A=D[e],h=A>=0?`${n}-textureSet-${A}`:null,T=sM(S.subarray(6*e,6*e+3)),R=S[6*e+3]/255,L=S[6*e+4]/255,O=S[6*e+5]/255,Q=o.getNextId();if(a){const o=I[e],a=v.slice(o,o+16),A=`${n}-geometry.${i}.${r}`;let E=W[A];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(B[r]){case 0:E.primitiveName="solid",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryNormals=u.subarray(x[r],l?u.length:x[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryNormals=u.subarray(x[r],l?u.length:x[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryColors=p.subarray(P[r],l?p.length:P[r+1]),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 4:E.primitiveName="lines",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryIndices=rM(E.geometryPositions,g.subarray(M[r],l?g.length:M[r+1])),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length),E.transformedAndRecompressedPositions=new Uint16Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i0&&a.length>0;break;case 1:e="surface",t=c.subarray(w[r],l?c.length:w[r+1]),i=u.subarray(x[r],l?u.length:x[r+1]),o=f.subarray(C[r],l?f.length:C[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),A=m.subarray(F[r],l?m.length:F[r+1]),d=t.length>0&&a.length>0;break;case 2:e="points",t=c.subarray(w[r],l?c.length:w[r+1]),n=p.subarray(P[r],l?p.length:P[r+1]),d=t.length>0;break;case 3:e="lines",t=c.subarray(w[r],l?c.length:w[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),d=t.length>0&&a.length>0;break;case 4:e="lines",t=c.subarray(w[r],l?c.length:w[r+1]),a=rM(t,g.subarray(M[r],l?g.length:M[r+1])),d=t.length>0&&a.length>0;break;default:continue}d&&(s.createMesh(y.apply(H,{id:Q,textureSetId:h,origin:G,primitive:e,positionsCompressed:t,normalsCompressed:i,uv:o&&o.length>0?o:null,colorsCompressed:n,indices:a,edgeIndices:A,positionsDecodeMatrix:_,color:T,metallic:L,roughness:O,opacity:R})),U.push(Q))}}U.length>0&&s.createEntity(y.apply(Q,{id:l,isObject:!0,meshIds:U}))}}}(e,t,a,s,r,o)}},nM={};nM[wC.version]=wC,nM[CC.version]=CC,nM[EC.version]=EC,nM[SC.version]=SC,nM[LC.version]=LC,nM[OC.version]=OC,nM[HC.version]=HC,nM[XC.version]=XC,nM[$C.version]=$C,nM[oM.version]=oM;class aM extends z{constructor(e,t={}){super("XKTLoader",e,t),this._maxGeometryBatchSize=t.maxGeometryBatchSize,this.textureTranscoder=t.textureTranscoder,this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults,this.includeTypes=t.includeTypes,this.excludeTypes=t.excludeTypes,this.excludeUnclassifiedObjects=t.excludeUnclassifiedObjects,this.reuseGeometries=t.reuseGeometries}get supportedVersions(){return Object.keys(nM)}get textureTranscoder(){return this._textureTranscoder}set textureTranscoder(e){this._textureTranscoder=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new vC}get objectDefaults(){return this._objectDefaults}set objectDefaults(e){this._objectDefaults=e||vP}get includeTypes(){return this._includeTypes}set includeTypes(e){this._includeTypes=e}get excludeTypes(){return this._excludeTypes}set excludeTypes(e){this._excludeTypes=e}get excludeUnclassifiedObjects(){return this._excludeUnclassifiedObjects}set excludeUnclassifiedObjects(e){this._excludeUnclassifiedObjects=!!e}get globalizeObjectIds(){return this._globalizeObjectIds}set globalizeObjectIds(e){this._globalizeObjectIds=!!e}get reuseGeometries(){return this._reuseGeometries}set reuseGeometries(e){this._reuseGeometries=!1!==e}load(e={}){if(e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id),!(e.src||e.xkt||e.manifestSrc||e.manifest))return this.error("load() param expected: src, xkt, manifestSrc or manifestData"),o;const t={},i=e.includeTypes||this._includeTypes,s=e.excludeTypes||this._excludeTypes,r=e.objectDefaults||this._objectDefaults;if(t.reuseGeometries=null!==e.reuseGeometries&&void 0!==e.reuseGeometries?e.reuseGeometries:!1!==this._reuseGeometries,i){t.includeTypesMap={};for(let e=0,s=i.length;e{o.finalize(),a.finalize(),this.viewer.scene.canvas.spinner.processes--,o.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(a.id)})),this.scheduleTask((()=>{o.destroyed||(o.scene.fire("modelLoaded",o.id),o.fire("loaded",!0,!1))}))},A=e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e),o.fire("error",e)};let h=0;const c={getNextId:()=>`${n}.${h++}`};if(e.metaModelSrc||e.metaModelData)if(e.metaModelSrc){const r=e.metaModelSrc;this._dataSource.getMetaModel(r,(r=>{o.destroyed||(a.loadData(r,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()))}),(e=>{A(`load(): Failed to load model metadata for model '${n} from '${r}' - ${e}`)}))}else e.metaModelData&&(a.loadData(e.metaModelData,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()));else if(e.src)this._loadModel(e.src,e,t,o,a,c,l,A);else if(e.xkt)this._parseModel(e.xkt,e,t,o,a,c),l();else if(e.manifestSrc||e.manifest){const r=e.manifestSrc?function(e){const t=e.split("/");return t.pop(),t.join("/")+"/"}(e.manifestSrc):"",n=(e,o,n)=>{let l=0;const A=()=>{l>=e.length?o():this._dataSource.getMetaModel(`${r}${e[l]}`,(e=>{a.loadData(e,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),l++,this.scheduleTask(A,100)}),n)};A()},h=(i,s,n)=>{let a=0;const l=()=>{a>=i.length?s():this._dataSource.getXKT(`${r}${i[a]}`,(i=>{this._parseModel(i,e,t,o,null,c),a++,this.scheduleTask(l,100)}),n)};l()},u=(i,s,n)=>{let l=0;const A=()=>{l>=i.length?s():this._dataSource.getXKT(`${r}${i[l]}`,(i=>{this._parseModel(i,e,t,o,a,c),l++,this.scheduleTask(A,100)}),n)};A()};if(e.manifest){const t=e.manifest,i=t.xktFiles;if(!i||0===i.length)return void A("load(): Failed to load model manifest - manifest not valid");const s=t.metaModelFiles;s?n(s,(()=>{h(i,l,A)}),A):u(i,l,A)}else this._dataSource.getManifest(e.manifestSrc,(e=>{if(o.destroyed)return;const t=e.xktFiles;if(!t||0===t.length)return void A("load(): Failed to load model manifest - manifest not valid");const i=e.metaModelFiles;i?n(i,(()=>{h(t,l,A)}),A):u(t,l,A)}),A)}return o}_loadModel(e,t,i,s,r,o,n,a){this._dataSource.getXKT(t.src,(e=>{this._parseModel(e,t,i,s,r,o),n()}),a)}_parseModel(e,t,i,s,r,o){if(s.destroyed)return;const n=new DataView(e),a=new Uint8Array(e),l=n.getUint32(0,!0),A=nM[l];if(!A)return void this.error("Unsupported .XKT file version: "+l+" - this XKTLoaderPlugin supports versions "+Object.keys(nM));this.log("Loading .xkt V"+l);const h=n.getUint32(4,!0),c=[];let u=4*(h+2);for(let e=0;ee.size)throw new RangeError("offset:"+t+", length:"+i+", size:"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function p(){}function f(e){var i,s=this;s.init=function(e){i=new Blob([],{type:n}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:n}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function g(t){var i=this,s="",r="";i.init=function(e){s+="data:"+(t||"")+";base64,",e()},i.writeUint8Array=function(t,i){var o,n=r.length,a=r;for(r="",o=0;o<3*Math.floor((n+t.length)/3)-n;o++)a+=String.fromCharCode(t[o]);for(;o2?s+=e.btoa(a):r=a,i()},i.getData=function(t){t(s+e.btoa(r))}}function m(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function _(e,t,i,s,r,n,a,l,A,h){var c,u,d,p=0,f=t.sn;function g(){e.removeEventListener("message",m,!1),l(u,d)}function m(t){var i=t.data,r=i.data,o=i.error;if(o)return o.toString=function(){return"Error: "+this.message},void A(o);if(i.sn===f)switch("number"==typeof i.codecTime&&(e.codecTime+=i.codecTime),"number"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case"append":r?(u+=r.length,s.writeUint8Array(r,(function(){_()}),h)):_();break;case"flush":d=i.crc,r?(u+=r.length,s.writeUint8Array(r,(function(){g()}),h)):g();break;case"progress":a&&a(c+i.loaded,n);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",i)}}function _(){(c=p*o)<=n?i.readUint8Array(r+c,Math.min(o,n-c),(function(i){a&&a(c,n);var s=0===c?t:{sn:f};s.type="append",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}p++}),A):e.postMessage({sn:f,type:"flush"})}u=0,e.addEventListener("message",m,!1),_()}function v(e,t,i,s,r,n,l,A,h,c){var u,d=0,p=0,f="input"===n,g="output"===n,m=new a;!function n(){var a;if((u=d*o)127?r[i-128]:String.fromCharCode(i);return s}function B(e){return decodeURIComponent(escape(e))}function w(e){var t,i="";for(t=0;t>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function P(t,o,n){var a=0;function l(){}l.prototype.getData=function(s,o,l,h){var c=this;function u(e,t){h&&!function(e){var t=A(4);return t.view.setUint32(0,e),c.crc32==t.view.getUint32(0)}(t)?n("CRC failed."):s.getData((function(e){o(e)}))}function d(e){n(e||r)}function p(e){n(e||"Error while writing file data.")}t.readUint8Array(c.offset,30,(function(r){var o,f=A(r.length,r);1347093252==f.view.getUint32(0)?(x(c,f,4,!1,n),o=c.offset+30+c.filenameLength+c.extraFieldLength,s.init((function(){0===c.compressionMethod?b(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p):function(t,i,s,r,o,n,a,l,A,h,c){var u=a?"output":"none";e.zip.useWebWorkers?_(t,{sn:i,codecClass:"Inflater",crcType:u},s,r,o,n,A,l,h,c):v(new e.zip.Inflater,s,r,o,n,u,A,l,h,c)}(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p)}),p)):n(i)}),d)};var h={getEntries:function(e){var r=this._worker;!function(e){t.size<22?n(i):r(22,(function(){r(Math.min(65558,t.size),(function(){n(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){n(s)}))}}((function(o){var a,h;a=o.getUint32(16,!0),h=o.getUint16(8,!0),a<0||a>=t.size?n(i):t.readUint8Array(a,t.size-a,(function(t){var s,o,a,c,u=0,d=[],p=A(t.length,t);for(s=0;s>>8^i[255&(t^e[s])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},c.prototype=new h,c.prototype.constructor=c,u.prototype=new h,u.prototype.constructor=u,d.prototype=new h,d.prototype.constructor=d,p.prototype.getData=function(e){e(this.data)},f.prototype=new p,f.prototype.constructor=f,g.prototype=new p,g.prototype.constructor=g,m.prototype=new p,m.prototype.constructor=m;var E={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function I(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error("zip.workerScripts."+t+" is not an array!"));r=function(e){var t=document.createElement("a");return e.map((function(e){return t.href=e,t.href}))}(r)}else(r=E[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+r[0];var o=new Worker(r[0]);o.codecTime=o.crcTime=0,o.postMessage({type:"importScripts",scripts:r.slice(1)}),o.addEventListener("message",(function e(t){var r=t.data;if(r.error)return o.terminate(),void s(r.error);"importScripts"===r.type&&(o.removeEventListener("message",e),o.removeEventListener("error",n),i(o))})),o.addEventListener("error",n)}else s(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function n(e){o.terminate(),s(e)}}function D(e){console.error(e)}e.zip={Reader:h,Writer:p,BlobReader:d,Data64URIReader:u,TextReader:c,BlobWriter:m,Data64URIWriter:g,TextWriter:f,createReader:function(e,t,i){i=i||D,e.init((function(){P(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||D,s=!!s,e.init((function(){F(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(lM);const AM=lM.zip;!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function o(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener("load",(function(){t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener("error",s,!1),r.open("GET",e),r.responseType="arraybuffer",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement("a");return t.href=e,"http:"===t.protocol||"https:"===t.protocol}(e)){var o=new XMLHttpRequest;o.addEventListener("load",(function(){t.size=Number(o.getResponseHeader("Content-Length")),t.size?s():i(s,r)}),!1),o.addEventListener("error",r,!1),o.open("HEAD",e),o.send()}else i(s,r)},t.readUint8Array=function(e,s,r,o){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),o)}}function n(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener("load",(function(){t.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?i():s("HTTP Range not supported.")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="arraybuffer",o.setRequestHeader("Range","bytes="+t+"-"+(t+i-1)),o.addEventListener("load",(function(){s(o.response)}),!1),o.addEventListener("error",r,!1),o.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function a(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function A(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,o){var n=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=o,s.write(n)},r.getData=function(t){e.file(t)}}o.prototype=new s,o.prototype.constructor=o,n.prototype=new s,n.prototype.constructor=n,a.prototype=new s,a.prototype.constructor=a,l.prototype=new r,l.prototype.constructor=l,A.prototype=new r,A.prototype.constructor=A,e.FileWriter=A,e.HttpReader=o,e.HttpRangeReader=n,e.ArrayBufferReader=a,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,o){if(i.directory)return o?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw"Parent entry is not a directory."}(this,i,{data:s,Reader:r?n:o})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new n(e):new o(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(AM);const hM=["4.2"];class cM{constructor(e,t={}){this.supportedSchemas=hM,this._xrayOpacity=.7,this._src=null,this._options=t,this.viewpoint=null,t.workerScriptsPath?(AM.workerScriptsPath=t.workerScriptsPath,this.src=t.src,this.xrayOpacity=.7,this.displayEffect=t.displayEffect,this.createMetaModel=t.createMetaModel):e.error("Config expected: workerScriptsPath")}load(e,t,i,s,r,o){switch(s.materialType){case"MetallicMaterial":t._defaultMaterial=new Ur(t,{baseColor:[1,1,1],metallic:.6,roughness:.6});break;case"SpecularMaterial":t._defaultMaterial=new Nr(t,{diffuse:[1,1,1],specular:d.vec3([1,1,1]),glossiness:.5});break;default:t._defaultMaterial=new Yt(t,{reflectivity:.75,shiness:100,diffuse:[1,1,1]})}t._wireframeMaterial=new Tr(t,{color:[0,0,0],lineWidth:2});var n=t.scene.canvas.spinner;n.processes++,uM(e,t,i,s,(function(){n.processes--,r&&r(),t.fire("loaded",!0,!1)}),(function(e){n.processes--,t.error(e),o&&o(e),t.fire("error",e)}),(function(e){console.log("Error, Will Robinson: "+e)}))}}var uM=function(e,t,i,s,r,o){!function(e,t,i){var s=new bM;s.load(e,(function(){t(s)}),(function(e){i("Error loading ZIP archive: "+e)}))}(i,(function(i){dM(e,i,s,t,r,o)}),o)},dM=function(){return function(t,i,s,r,o){var n={plugin:t,zip:i,edgeThreshold:30,materialType:s.materialType,scene:r.scene,modelNode:r,info:{references:{}},materials:{}};s.createMetaModel&&(n.metaModelData={modelId:r.id,metaObjects:[{name:r.id,type:"Default",id:r.id}]}),r.scene.loading++,function(t,i){t.zip.getFile("Manifest.xml",(function(s,r){for(var o=r.children,n=0,a=o.length;n0){for(var n=o.trim().split(" "),a=new Int16Array(n.length),l=0,A=0,h=n.length;A0){i.primitive="triangles";for(var o=[],n=0,a=r.length;n=t.length)i();else{var a=t[o].id,l=a.lastIndexOf(":");l>0&&(a=a.substring(l+1));var A=a.lastIndexOf("#");A>0&&(a=a.substring(0,A)),s[a]?r(o+1):function(e,t,i){e.zip.getFile(t,(function(t,s){!function(e,t,i){for(var s,r=t.children,o=0,n=r.length;o0)for(var s=0,r=t.length;s{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=t.stats||{};if(r.sourceFormat="IFC",r.schemaVersion="",r.title="",r.author="",r.created="",r.numMetaObjects=0,r.numPropertySets=0,r.numObjects=0,r.numGeometries=0,r.numTriangles=0,r.numVertices=0,!this._ifcAPI)throw"WebIFCLoaderPlugin has no WebIFC instance configured - please inject via WebIFCLoaderPlugin constructor";const o=new Uint8Array(e),n=this._ifcAPI.OpenModel(o),a=this._ifcAPI.GetModelSchema(n),l=this._ifcAPI.GetLineIDsWithType(n,this._webIFC.IFCPROJECT).get(0),A=!1!==t.loadMetadata,h={modelID:n,modelSchema:a,sceneModel:s,loadMetadata:A,metadata:A?{id:"",projectId:""+l,author:"",createdAt:"",schema:"",creatingApplication:"",metaObjects:[],propertySets:[]}:null,metaObjects:{},options:i,log:function(e){},nextId:0,stats:r};if(A){if(i.includeTypes){h.includeTypes={};for(let e=0,t=i.includeTypes.length;e{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_parseMetaObjects(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCPROJECT).get(0),i=this._ifcAPI.GetLine(e.modelID,t);this._parseSpatialChildren(e,i)}_parseSpatialChildren(e,t,i){const s=this._ifcAPI.GetNameFromTypeCode(t.type);if(e.includeTypes&&!e.includeTypes[s])return;if(e.excludeTypes&&e.excludeTypes[s])return;this._createMetaObject(e,t,i);const r=t.GlobalId.value;this._parseRelatedItemsOfType(e,t.expressID,"RelatingObject","RelatedObjects",this._webIFC.IFCRELAGGREGATES,r),this._parseRelatedItemsOfType(e,t.expressID,"RelatingStructure","RelatedElements",this._webIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,r)}_createMetaObject(e,t,i){const s=t.GlobalId.value,r=this._ifcAPI.GetNameFromTypeCode(t.type),o={id:s,name:t.Name&&""!==t.Name.value?t.Name.value:r,type:r,parent:i};e.metadata.metaObjects.push(o),e.metaObjects[s]=o,e.stats.numMetaObjects++}_parseRelatedItemsOfType(e,t,i,s,r,o){const n=this._ifcAPI.GetLineIDsWithType(e.modelID,r);for(let r=0;re.value)).includes(t)}else h=A.value===t;if(h){const t=l[s];if(Array.isArray(t))t.forEach((t=>{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}));else{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}}}}_parsePropertySets(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCRELDEFINESBYPROPERTIES);for(let i=0;i0){const o="Default",n=t.Name.value,a=[];for(let e=0,t=s.length;e{const i=t.expressID,s=t.geometries,r=[],o=this._ifcAPI.GetLine(e.modelID,i).GlobalId.value;if(e.loadMetadata){const t=o,i=e.metaObjects[t];if(e.includeTypes&&(!i||!e.includeTypes[i.type]))return;if(e.excludeTypes&&(!i||e.excludeTypes[i.type]))return}const n=d.mat4(),a=d.vec3();for(let t=0,i=s.size();t{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n{let t=0,i=0,s=0;const r=new DataView(e),o=new Uint8Array(6e3),n=({item:s,format:o,size:n})=>{let a,l;switch(o){case"char":return l=new Uint8Array(e,t,n),t+=n,a=DM(l),[s,a];case"uShort":return a=r.getUint16(t,!0),t+=n,[s,a];case"uLong":return a=r.getUint32(t,!0),"NumberOfVariableLengthRecords"===s&&(i=a),t+=n,[s,a];case"uChar":return a=r.getUint8(t),t+=n,[s,a];case"double":return a=r.getFloat64(t,!0),t+=n,[s,a];default:t+=n}};return(()=>{const e={};MM.forEach((t=>{const i=n({...t});if(void 0!==i){if("FileSignature"===i[0]&&"LASF"!==i[1])throw new Error("Ivalid FileSignature. Is this a LAS/LAZ file");e[i[0]]=i[1]}}));const r=[];let a=i;for(;a--;){const e={};FM.forEach((i=>{const r=n({...i});e[r[0]]=r[1],"UserId"===r[0]&&"LASF_Projection"===r[1]&&(s=t-18+54)})),r.push(e)}const l=(e=>{if(void 0===e)return;const t=s+e.RecordLengthAfterHeader,i=o.slice(s,t),r=IM(i),n=new DataView(r);let a=6,l=Number(n.getUint16(a,!0));const A=[];for(;l--;){const e={};e.key=n.getUint16(a+=2,!0),e.tiffTagLocation=n.getUint16(a+=2,!0),e.count=n.getUint16(a+=2,!0),e.valueOffset=n.getUint16(a+=2,!0),A.push(e)}const h=A.find((e=>3072===e.key));if(h&&h.hasOwnProperty("valueOffset"))return h.valueOffset})(r.find((e=>"LASF_Projection"===e.UserId)));return l&&(e.epsg=l),e})()},IM=e=>{let t=new ArrayBuffer(e.length),i=new Uint8Array(t);for(let t=0;t{let t="";return e.forEach((e=>{let i=String.fromCharCode(e);"\0"!==i&&(t+=i)})),t.trim()};class SM extends z{constructor(e,t={}){super("lasLoader",e,t),this.dataSource=t.dataSource,this.skip=t.skip,this.fp64=t.fp64,this.colorDepth=t.colorDepth}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new PM}get skip(){return this._skip}set skip(e){this._skip=e||1}get fp64(){return this._fp64}set fp64(e){this._fp64=!!e}get colorDepth(){return this._colorDepth}set colorDepth(e){this._colorDepth=e||"auto"}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0}));if(!e.src&&!e.las)return this.error("load() param expected: src or las"),t;const i={las:{skip:this._skip,fp64:this._fp64,colorDepth:this._colorDepth}};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.las,e,i,t).then((()=>{s.processes--}),(e=>{s.processes--,this.error(e),t.fire("error",e)}))}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getLAS(t.src,(e=>{this._parseModel(e,t,i,s).then((()=>{r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){function r(e){const i=e.value;if(t.rotateX&&i)for(let e=0,t=i.length;e{if(s.destroyed)return void l();const A=t.stats||{};A.sourceFormat="LAS",A.schemaVersion="",A.title="",A.author="",A.created="",A.numMetaObjects=0,A.numPropertySets=0,A.numObjects=0,A.numGeometries=0,A.numTriangles=0,A.numVertices=0;try{const A=EM(e);CB(e,CM,i).then((e=>{const h=e.attributes,c=e.loaderData,u=void 0!==c.pointsFormatId?c.pointsFormatId:-1;if(!h.POSITION)return s.finalize(),void l("No positions found in file");let p,f;switch(u){case 0:p=r(h.POSITION),f=n(h.intensity);break;case 1:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=n(h.intensity);break;case 2:case 3:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=o(h.COLOR_0,h.intensity)}const g=TM(p,15e5),m=TM(f,2e6),_=[];for(let e=0,t=g.length;e{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))})),a()}))}catch(e){s.finalize(),l(e)}}))}}function TM(e,t){if(t>=e.length)return e;let i=[];for(let s=0;s{t(e)}),(function(e){i(e)}))}}function LM(e,t,i){i=i||2;var s,r,o,n,a,l,A,h=t&&t.length,c=h?t[0]*i:e.length,u=UM(e,0,c,i,!0),d=[];if(!u||u.next===u.prev)return d;if(h&&(u=function(e,t,i,s){var r,o,n,a=[];for(r=0,o=t.length;r80*i){s=o=e[0],r=n=e[1];for(var p=i;po&&(o=a),l>n&&(n=l);A=0!==(A=Math.max(o-s,n-r))?1/A:0}return OM(u,d,i,s,r,A),d}function UM(e,t,i,s,r){var o,n;if(r===nF(e,t,i,s)>0)for(o=t;o=t;o-=s)n=sF(o,e[o],e[o+1],n);return n&&ZM(n,n.next)&&(rF(n),n=n.next),n}function kM(e,t){if(!e)return e;t||(t=e);var i,s=e;do{if(i=!1,s.steiner||!ZM(s,s.next)&&0!==YM(s.prev,s,s.next))s=s.next;else{if(rF(s),(s=t=s.prev)===s.next)break;i=!0}}while(i||s!==t);return t}function OM(e,t,i,s,r,o,n){if(e){!n&&o&&function(e,t,i,s){var r=e;do{null===r.z&&(r.z=WM(r.x,r.y,t,i,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,i,s,r,o,n,a,l,A=1;do{for(i=e,e=null,o=null,n=0;i;){for(n++,s=i,a=0,t=0;t0||l>0&&s;)0!==a&&(0===l||!s||i.z<=s.z)?(r=i,i=i.nextZ,a--):(r=s,s=s.nextZ,l--),o?o.nextZ=r:e=r,r.prevZ=o,o=r;i=s}o.nextZ=null,A*=2}while(n>1)}(r)}(e,s,r,o);for(var a,l,A=e;e.prev!==e.next;)if(a=e.prev,l=e.next,o?QM(e,s,r,o):NM(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),rF(e),e=l.next,A=l.next;else if((e=l)===A){n?1===n?OM(e=VM(kM(e),t,i),t,i,s,r,o,2):2===n&&HM(e,t,i,s,r,o):OM(kM(e),t,i,s,r,o,1);break}}}function NM(e){var t=e.prev,i=e,s=e.next;if(YM(t,i,s)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(XM(t.x,t.y,i.x,i.y,s.x,s.y,r.x,r.y)&&YM(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function QM(e,t,i,s){var r=e.prev,o=e,n=e.next;if(YM(r,o,n)>=0)return!1;for(var a=r.xo.x?r.x>n.x?r.x:n.x:o.x>n.x?o.x:n.x,h=r.y>o.y?r.y>n.y?r.y:n.y:o.y>n.y?o.y:n.y,c=WM(a,l,t,i,s),u=WM(A,h,t,i,s),d=e.prevZ,p=e.nextZ;d&&d.z>=c&&p&&p.z<=u;){if(d!==e.prev&&d!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&YM(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,p!==e.prev&&p!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&YM(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;d&&d.z>=c;){if(d!==e.prev&&d!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&YM(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;p&&p.z<=u;){if(p!==e.prev&&p!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&YM(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function VM(e,t,i){var s=e;do{var r=s.prev,o=s.next.next;!ZM(r,o)&&qM(r,s,s.next,o)&&tF(r,o)&&tF(o,r)&&(t.push(r.i/i),t.push(s.i/i),t.push(o.i/i),rF(s),rF(s.next),s=e=o),s=s.next}while(s!==e);return kM(s)}function HM(e,t,i,s,r,o){var n=e;do{for(var a=n.next.next;a!==n.prev;){if(n.i!==a.i&&JM(n,a)){var l=iF(n,a);return n=kM(n,n.next),l=kM(l,l.next),OM(n,t,i,s,r,o),void OM(l,t,i,s,r,o)}a=a.next}n=n.next}while(n!==e)}function jM(e,t){return e.x-t.x}function GM(e,t){if(t=function(e,t){var i,s=t,r=e.x,o=e.y,n=-1/0;do{if(o<=s.y&&o>=s.next.y&&s.next.y!==s.y){var a=s.x+(o-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(a<=r&&a>n){if(n=a,a===r){if(o===s.y)return s;if(o===s.next.y)return s.next}i=s.x=s.x&&s.x>=h&&r!==s.x&&XM(oi.x||s.x===i.x&&zM(i,s)))&&(i=s,u=l)),s=s.next}while(s!==A);return i}(e,t),t){var i=iF(t,e);kM(t,t.next),kM(i,i.next)}}function zM(e,t){return YM(e.prev,e,t.prev)<0&&YM(t.next,e,e.next)<0}function WM(e,t,i,s,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function KM(e){var t=e,i=e;do{(t.x=0&&(e-n)*(s-a)-(i-n)*(t-a)>=0&&(i-n)*(o-a)-(r-n)*(s-a)>=0}function JM(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&qM(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(tF(e,t)&&tF(t,e)&&function(e,t){var i=e,s=!1,r=(e.x+t.x)/2,o=(e.y+t.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&r<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next}while(i!==e);return s}(e,t)&&(YM(e.prev,e,t.prev)||YM(e,t.prev,t))||ZM(e,t)&&YM(e.prev,e,e.next)>0&&YM(t.prev,t,t.next)>0)}function YM(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function ZM(e,t){return e.x===t.x&&e.y===t.y}function qM(e,t,i,s){var r=eF(YM(e,t,i)),o=eF(YM(e,t,s)),n=eF(YM(i,s,e)),a=eF(YM(i,s,t));return r!==o&&n!==a||(!(0!==r||!$M(e,i,t))||(!(0!==o||!$M(e,s,t))||(!(0!==n||!$M(i,e,s))||!(0!==a||!$M(i,t,s)))))}function $M(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function eF(e){return e>0?1:e<0?-1:0}function tF(e,t){return YM(e.prev,e,e.next)<0?YM(e,t,e.next)>=0&&YM(e,e.prev,t)>=0:YM(e,t,e.prev)<0||YM(e,e.next,t)<0}function iF(e,t){var i=new oF(e.i,e.x,e.y),s=new oF(t.i,t.x,t.y),r=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=r,r.prev=i,s.next=i,i.prev=s,o.next=s,s.prev=o,s}function sF(e,t,i,s){var r=new oF(e,t,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function rF(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function oF(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function nF(e,t,i,s){for(var r=0,o=t,n=i-s;o0&&(s+=e[r-1].length,i.holes.push(s))}return i};const aF=d.vec2(),lF=d.vec3(),AF=d.vec3(),hF=d.vec3();class cF extends z{constructor(e,t={}){super("cityJSONLoader",e,t),this.dataSource=t.dataSource}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new RM}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,edges:!0}));if(!e.src&&!e.cityJSON)return this.error("load() param expected: src or cityJSON"),t;const i={};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.cityJSON,e,i,t),s.processes--}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getCityJSON(t.src,(e=>{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=e.transform?this._transformVertices(e.vertices,e.transform,i.rotateX):e.vertices,o=t.stats||{};o.sourceFormat=e.type||"CityJSON",o.schemaVersion=e.version||"",o.title="",o.author="",o.created="",o.numMetaObjects=0,o.numPropertySets=0,o.numObjects=0,o.numGeometries=0,o.numTriangles=0,o.numVertices=0;const n=!1!==t.loadMetadata,a=n?{id:d.createUUID(),name:"Model",type:"Model"}:null,l=n?{id:"",projectId:"",author:"",createdAt:"",schema:e.version||"",creatingApplication:"",metaObjects:[a],propertySets:[]}:null,A={data:e,vertices:r,sceneModel:s,loadMetadata:n,metadata:l,rootMetaObject:a,nextId:0,stats:o};if(this._parseCityJSON(A),s.finalize(),n){const e=s.id;this.viewer.metaScene.createMetaModel(e,A.metadata,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_transformVertices(e,t,i){const s=[],r=t.scale||d.vec3([1,1,1]),o=t.translate||d.vec3([0,0,0]);for(let t=0,n=0;t0))return;const o=[];for(let i=0,s=t.geometry.length;i0){const r=t[s[0]];if(void 0!==r.value)n=e[r.value];else{const t=r.values;if(t){a=[];for(let s=0,r=t.length;s0&&(s.createEntity({id:i,meshIds:o,isObject:!0}),e.stats.numObjects++)}_parseGeometrySurfacesWithOwnMaterials(e,t,i,s){switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":const r=t.boundaries;this._parseSurfacesWithOwnMaterials(e,i,r,s);break;case"Solid":const o=t.boundaries;for(let t=0;t0&&h.push(A.length);const i=this._extractLocalIndices(e,a[t],c,u);A.push(...i)}if(3===A.length)u.indices.push(A[0]),u.indices.push(A[1]),u.indices.push(A[2]);else if(A.length>3){const e=[];for(let t=0;t0&&n.indices.length>0){const t=""+e.nextId++;r.createMesh({id:t,primitive:"triangles",positions:n.positions,indices:n.indices,color:i&&i.diffuseColor?i.diffuseColor:[.8,.8,.8],opacity:1}),s.push(t),e.stats.numGeometries++,e.stats.numVertices+=n.positions.length/3,e.stats.numTriangles+=n.indices.length/3}}_parseSurfacesWithSharedMaterial(e,t,i,s){const r=e.vertices;for(let o=0;o0&&a.push(n.length);const l=this._extractLocalIndices(e,t[o][r],i,s);n.push(...l)}if(3===n.length)s.indices.push(n[0]),s.indices.push(n[1]),s.indices.push(n[2]);else if(n.length>3){let e=[];for(let t=0;t=0;)e[t]=0}const i=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),o=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),n=new Array(576);t(n);const a=new Array(60);t(a);const l=new Array(512);t(l);const A=new Array(256);t(A);const h=new Array(29);t(h);const c=new Array(30);function u(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}let d,p,f;function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(c);const m=e=>e<256?l[e]:l[256+(e>>>7)],_=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},v=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<{v(e,i[2*t],i[2*t+1])},y=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},B=(e,t,i)=>{const s=new Array(16);let r,o,n=0;for(r=1;r<=15;r++)n=n+i[r-1]<<1,s[r]=n;for(o=0;o<=t;o++){let t=e[2*o+1];0!==t&&(e[2*o]=y(s[t]++,t))}},w=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},x=e=>{e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},P=(e,t,i,s)=>{const r=2*t,o=2*i;return e[r]{const s=e.heap[i];let r=i<<1;for(;r<=e.heap_len&&(r{let o,n,a,l,u=0;if(0!==e.sym_next)do{o=255&e.pending_buf[e.sym_buf+u++],o+=(255&e.pending_buf[e.sym_buf+u++])<<8,n=e.pending_buf[e.sym_buf+u++],0===o?b(e,n,t):(a=A[n],b(e,a+256+1,t),l=i[a],0!==l&&(n-=h[a],v(e,n,l)),o--,a=m(o),b(e,a,r),l=s[a],0!==l&&(o-=c[a],v(e,o,l)))}while(u{const i=t.dyn_tree,s=t.stat_desc.static_tree,r=t.stat_desc.has_stree,o=t.stat_desc.elems;let n,a,l,A=-1;for(e.heap_len=0,e.heap_max=573,n=0;n>1;n>=1;n--)C(e,i,n);l=o;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],C(e,i,1),a=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=a,i[2*l]=i[2*n]+i[2*a],e.depth[l]=(e.depth[n]>=e.depth[a]?e.depth[n]:e.depth[a])+1,i[2*n+1]=i[2*a+1]=l,e.heap[1]=l++,C(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,s=t.max_code,r=t.stat_desc.static_tree,o=t.stat_desc.has_stree,n=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let A,h,c,u,d,p,f=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(i[2*e.heap[e.heap_max]+1]=0,A=e.heap_max+1;A<573;A++)h=e.heap[A],u=i[2*i[2*h+1]+1]+1,u>l&&(u=l,f++),i[2*h+1]=u,h>s||(e.bl_count[u]++,d=0,h>=a&&(d=n[h-a]),p=i[2*h],e.opt_len+=p*(u+d),o&&(e.static_len+=p*(r[2*h+1]+d)));if(0!==f){do{for(u=l-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[l]--,f-=2}while(f>0);for(u=l;0!==u;u--)for(h=e.bl_count[u];0!==h;)c=e.heap[--A],c>s||(i[2*c+1]!==u&&(e.opt_len+=(u-i[2*c+1])*i[2*c],i[2*c+1]=u),h--)}})(e,t),B(i,A,e.bl_count)},E=(e,t,i)=>{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=n,n=t[2*(s+1)+1],++a{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),s=0;s<=i;s++)if(r=n,n=t[2*(s+1)+1],!(++a{v(e,0+(s?1:0),3),x(e),_(e,i),_(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var T={_tr_init:e=>{D||((()=>{let e,t,o,g,m;const _=new Array(16);for(o=0,g=0;g<28;g++)for(h[g]=o,e=0;e<1<>=7;g<30;g++)for(c[g]=m<<7,e=0;e<1<{let r,l,A=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),F(e,e.l_desc),F(e,e.d_desc),A=(e=>{let t;for(E(e,e.dyn_ltree,e.l_desc.max_code),E(e,e.dyn_dtree,e.d_desc.max_code),F(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*o[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,l=e.static_len+3+7>>>3,l<=r&&(r=l)):r=l=i+5,i+4<=r&&-1!==t?S(e,t,i,s):4===e.strategy||l===r?(v(e,2+(s?1:0),3),M(e,n,a)):(v(e,4+(s?1:0),3),((e,t,i,s)=>{let r;for(v(e,t-257,5),v(e,i-1,5),v(e,s-4,4),r=0;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(A[i]+256+1)]++,e.dyn_dtree[2*m(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{v(e,2,3),b(e,256,n),(e=>{16===e.bi_valid?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},R=(e,t,i,s)=>{let r=65535&e|0,o=e>>>16&65535|0,n=0;for(;0!==i;){n=i>2e3?2e3:i,i-=n;do{r=r+t[s++]|0,o=o+r|0}while(--n);r%=65521,o%=65521}return r|o<<16|0};const L=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var U=(e,t,i,s)=>{const r=L,o=s+i;e^=-1;for(let i=s;i>>8^r[255&(e^t[i])];return-1^e},k={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},O={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:N,_tr_stored_block:Q,_tr_flush_block:V,_tr_tally:H,_tr_align:j}=T,{Z_NO_FLUSH:G,Z_PARTIAL_FLUSH:z,Z_FULL_FLUSH:W,Z_FINISH:K,Z_BLOCK:X,Z_OK:J,Z_STREAM_END:Y,Z_STREAM_ERROR:Z,Z_DATA_ERROR:q,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:ee,Z_FILTERED:te,Z_HUFFMAN_ONLY:ie,Z_RLE:se,Z_FIXED:re,Z_DEFAULT_STRATEGY:oe,Z_UNKNOWN:ne,Z_DEFLATED:ae}=O,le=258,Ae=262,he=42,ce=113,ue=666,de=(e,t)=>(e.msg=k[t],t),pe=e=>2*e-(e>4?9:0),fe=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ge=e=>{let t,i,s,r=e.w_size;t=e.hash_size,s=t;do{i=e.head[--s],e.head[s]=i>=r?i-r:0}while(--t);t=r,s=t;do{i=e.prev[--s],e.prev[s]=i>=r?i-r:0}while(--t)};let me=(e,t,i)=>(t<{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},ve=(e,t)=>{V(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,_e(e.strm)},be=(e,t)=>{e.pending_buf[e.pending++]=t},ye=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Be=(e,t,i,s)=>{let r=e.avail_in;return r>s&&(r=s),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=R(e.adler,t,r,i):2===e.state.wrap&&(e.adler=U(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},we=(e,t)=>{let i,s,r=e.max_chain_length,o=e.strstart,n=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-Ae?e.strstart-(e.w_size-Ae):0,A=e.window,h=e.w_mask,c=e.prev,u=e.strstart+le;let d=A[o+n-1],p=A[o+n];e.prev_length>=e.good_match&&(r>>=2),a>e.lookahead&&(a=e.lookahead);do{if(i=t,A[i+n]===p&&A[i+n-1]===d&&A[i]===A[o]&&A[++i]===A[o+1]){o+=2,i++;do{}while(A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&on){if(e.match_start=t,n=s,s>=a)break;d=A[o+n-1],p=A[o+n]}}}while((t=c[t&h])>l&&0!=--r);return n<=e.lookahead?n:e.lookahead},xe=e=>{const t=e.w_size;let i,s,r;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ae)&&(e.window.set(e.window.subarray(t,t+t-s),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ge(e),s+=t),0===e.strm.avail_in)break;if(i=Be(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=i,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=me(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=me(e,e.ins_h,e.window[r+3-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let i,s,r,o=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n=0,a=e.strm.avail_in;do{if(i=65535,r=e.bi_valid+42>>3,e.strm.avail_outs+e.strm.avail_in&&(i=s+e.strm.avail_in),i>r&&(i=r),i>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,_e(e.strm),s&&(s>i&&(s=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,i-=s),i&&(Be(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===n);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_waterr&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(Be(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water>3,r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r,o=r>e.w_size?e.w_size:r,s=e.strstart-e.block_start,(s>=o||(s||t===K)&&t!==G&&0===e.strm.avail_in&&s<=r)&&(i=s>r?r:s,n=t===K&&0===e.strm.avail_in&&i===s?1:0,Q(e,e.block_start,i,n),e.block_start+=i,_e(e.strm)),n?3:1)},Ce=(e,t)=>{let i,s;for(;;){if(e.lookahead=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-Ae&&(e.match_length=we(e,i)),e.match_length>=3)if(s=H(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=me(e,e.ins_h,e.window[e.strstart+1]);else s=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2},Me=(e,t)=>{let i,s,r;for(;;){if(e.lookahead=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=H(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,s&&(ve(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(s=H(e,0,e.window[e.strstart-1]),s&&ve(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=H(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2};function Fe(e,t,i,s,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=s,this.func=r}const Ee=[new Fe(0,0,0,0,Pe),new Fe(4,4,8,4,Ce),new Fe(4,5,16,8,Ce),new Fe(4,6,32,32,Ce),new Fe(4,4,16,16,Me),new Fe(8,16,32,32,Me),new Fe(8,16,128,128,Me),new Fe(8,32,128,256,Me),new Fe(32,128,258,1024,Me),new Fe(32,258,258,4096,Me)];function Ie(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ae,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),fe(this.dyn_ltree),fe(this.dyn_dtree),fe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),fe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),fe(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const De=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==he&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==ce&&t.status!==ue?1:0},Se=e=>{if(De(e))return de(e,Z);e.total_in=e.total_out=0,e.data_type=ne;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?he:ce,e.adler=2===t.wrap?0:1,t.last_flush=-2,N(t),J},Te=e=>{const t=Se(e);var i;return t===J&&((i=e.state).window_size=2*i.w_size,fe(i.head),i.max_lazy_match=Ee[i.level].max_lazy,i.good_match=Ee[i.level].good_length,i.nice_match=Ee[i.level].nice_length,i.max_chain_length=Ee[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),t},Re=(e,t,i,s,r,o)=>{if(!e)return Z;let n=1;if(t===ee&&(t=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),r<1||r>9||i!==ae||s<8||s>15||t<0||t>9||o<0||o>re||8===s&&1!==n)return de(e,Z);8===s&&(s=9);const a=new Ie;return e.state=a,a.strm=e,a.status=he,a.wrap=n,a.gzhead=null,a.w_bits=s,a.w_size=1<De(e)||2!==e.state.wrap?Z:(e.state.gzhead=t,J),ke=(e,t)=>{if(De(e)||t>X||t<0)return e?de(e,Z):Z;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ue&&t!==K)return de(e,0===e.avail_out?$:Z);const s=i.last_flush;if(i.last_flush=t,0!==i.pending){if(_e(e),0===e.avail_out)return i.last_flush=-1,J}else if(0===e.avail_in&&pe(t)<=pe(s)&&t!==K)return de(e,$);if(i.status===ue&&0!==e.avail_in)return de(e,$);if(i.status===he&&0===i.wrap&&(i.status=ce),i.status===he){let t=ae+(i.w_bits-8<<4)<<8,s=-1;if(s=i.strategy>=ie||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=s<<6,0!==i.strstart&&(t|=32),t+=31-t%31,ye(i,t),0!==i.strstart&&(ye(i,e.adler>>>16),ye(i,65535&e.adler)),e.adler=1,i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(57===i.status)if(e.adler=0,be(i,31),be(i,139),be(i,8),i.gzhead)be(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),be(i,255&i.gzhead.time),be(i,i.gzhead.time>>8&255),be(i,i.gzhead.time>>16&255),be(i,i.gzhead.time>>24&255),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(be(i,255&i.gzhead.extra.length),be(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=U(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(be(i,0),be(i,0),be(i,0),be(i,0),be(i,0),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,3),i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J;if(69===i.status){if(i.gzhead.extra){let t=i.pending,s=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+s>i.pending_buf_size;){let r=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=r,_e(e),0!==i.pending)return i.last_flush=-1,J;t=0,s-=r}let r=new Uint8Array(i.gzhead.extra);i.pending_buf.set(r.subarray(i.gzindex,i.gzindex+s),i.pending),i.pending+=s,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindexs&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindexs&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(_e(e),0!==i.pending))return i.last_flush=-1,J;be(i,255&e.adler),be(i,e.adler>>8&255),e.adler=0}if(i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(0!==e.avail_in||0!==i.lookahead||t!==G&&i.status!==ue){let s=0===i.level?Pe(i,t):i.strategy===ie?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(xe(e),0===e.lookahead)){if(t===G)return 1;break}if(e.match_length=0,i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===se?((e,t)=>{let i,s,r,o;const n=e.window;for(;;){if(e.lookahead<=le){if(xe(e),e.lookahead<=le&&t===G)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=e.strstart-1,s=n[r],s===n[++r]&&s===n[++r]&&s===n[++r])){o=e.strstart+le;do{}while(s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=H(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):Ee[i.level].func(i,t);if(3!==s&&4!==s||(i.status=ue),1===s||3===s)return 0===e.avail_out&&(i.last_flush=-1),J;if(2===s&&(t===z?j(i):t!==X&&(Q(i,0,0,!1),t===W&&(fe(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),_e(e),0===e.avail_out))return i.last_flush=-1,J}return t!==K?J:i.wrap<=0?Y:(2===i.wrap?(be(i,255&e.adler),be(i,e.adler>>8&255),be(i,e.adler>>16&255),be(i,e.adler>>24&255),be(i,255&e.total_in),be(i,e.total_in>>8&255),be(i,e.total_in>>16&255),be(i,e.total_in>>24&255)):(ye(i,e.adler>>>16),ye(i,65535&e.adler)),_e(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?J:Y)},Oe=e=>{if(De(e))return Z;const t=e.state.status;return e.state=null,t===ce?de(e,q):J},Ne=(e,t)=>{let i=t.length;if(De(e))return Z;const s=e.state,r=s.wrap;if(2===r||1===r&&s.status!==he||s.lookahead)return Z;if(1===r&&(e.adler=R(e.adler,t,i,0)),s.wrap=0,i>=s.w_size){0===r&&(fe(s.head),s.strstart=0,s.block_start=0,s.insert=0);let e=new Uint8Array(s.w_size);e.set(t.subarray(i-s.w_size,i),0),t=e,i=s.w_size}const o=e.avail_in,n=e.next_in,a=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,xe(s);s.lookahead>=3;){let e=s.strstart,t=s.lookahead-2;do{s.ins_h=me(s,s.ins_h,s.window[e+3-1]),s.prev[e&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=e,e++}while(--t);s.strstart=e,s.lookahead=2,xe(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,e.next_in=n,e.input=a,e.avail_in=o,s.wrap=r,J};const Qe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Ve=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Qe(i,t)&&(e[t]=i[t])}}return e},He=e=>{let t=0;for(let i=0,s=e.length;i=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ge[254]=Ge[254]=1;var ze=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,s,r,o,n=e.length,a=0;for(r=0;r>>6,t[o++]=128|63&i):i<65536?(t[o++]=224|i>>>12,t[o++]=128|i>>>6&63,t[o++]=128|63&i):(t[o++]=240|i>>>18,t[o++]=128|i>>>12&63,t[o++]=128|i>>>6&63,t[o++]=128|63&i);return t},We=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let s,r;const o=new Array(2*i);for(r=0,s=0;s4)o[r++]=65533,s+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&s1?o[r++]=65533:t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&je)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let s=0;s{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Ge[e[i]]>t?i:t},Xe=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Je=Object.prototype.toString,{Z_NO_FLUSH:Ye,Z_SYNC_FLUSH:Ze,Z_FULL_FLUSH:qe,Z_FINISH:$e,Z_OK:et,Z_STREAM_END:tt,Z_DEFAULT_COMPRESSION:it,Z_DEFAULT_STRATEGY:st,Z_DEFLATED:rt}=O;function ot(e){this.options=Ve({level:it,method:rt,chunkSize:16384,windowBits:15,memLevel:8,strategy:st},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Le(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==et)throw new Error(k[i]);if(t.header&&Ue(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ze(t.dictionary):"[object ArrayBuffer]"===Je.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ne(this.strm,e),i!==et)throw new Error(k[i]);this._dict_set=!0}}function nt(e,t){const i=new ot(t);if(i.push(e,!0),i.err)throw i.msg||k[i.err];return i.result}ot.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize;let r,o;if(this.ended)return!1;for(o=t===~~t?t:!0===t?$e:Ye,"string"==typeof e?i.input=ze(e):"[object ArrayBuffer]"===Je.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),(o===Ze||o===qe)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(r=ke(i,o),r===tt)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=Oe(this.strm),this.onEnd(r),this.ended=!0,r===et;if(0!==i.avail_out){if(o>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ot.prototype.onData=function(e){this.chunks.push(e)},ot.prototype.onEnd=function(e){e===et&&(this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var at={Deflate:ot,deflate:nt,deflateRaw:function(e,t){return(t=t||{}).raw=!0,nt(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,nt(e,t)},constants:O};const lt=16209;var At=function(e,t){let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x,P;const C=e.state;i=e.next_in,x=e.input,s=i+(e.avail_in-5),r=e.next_out,P=e.output,o=r-(t-e.avail_out),n=r+(e.avail_out-257),a=C.dmax,l=C.wsize,A=C.whave,h=C.wnext,c=C.window,u=C.hold,d=C.bits,p=C.lencode,f=C.distcode,g=(1<>>24,u>>>=v,d-=v,v=_>>>16&255,0===v)P[r++]=65535&_;else{if(!(16&v)){if(0==(64&v)){_=p[(65535&_)+(u&(1<>>=v,d-=v),d<15&&(u+=x[i++]<>>24,u>>>=v,d-=v,v=_>>>16&255,!(16&v)){if(0==(64&v)){_=f[(65535&_)+(u&(1<a){e.msg="invalid distance too far back",C.mode=lt;break e}if(u>>>=v,d-=v,v=r-o,y>v){if(v=y-v,v>A&&C.sane){e.msg="invalid distance too far back",C.mode=lt;break e}if(B=0,w=c,0===h){if(B+=l-v,v2;)P[r++]=w[B++],P[r++]=w[B++],P[r++]=w[B++],b-=3;b&&(P[r++]=w[B++],b>1&&(P[r++]=w[B++]))}else{B=r-y;do{P[r++]=P[B++],P[r++]=P[B++],P[r++]=P[B++],b-=3}while(b>2);b&&(P[r++]=P[B++],b>1&&(P[r++]=P[B++]))}break}}break}}while(i>3,i-=b,d-=b<<3,u&=(1<{const l=a.bits;let A,h,c,u,d,p,f=0,g=0,m=0,_=0,v=0,b=0,y=0,B=0,w=0,x=0,P=null;const C=new Uint16Array(16),M=new Uint16Array(16);let F,E,I,D=null;for(f=0;f<=15;f++)C[f]=0;for(g=0;g=1&&0===C[_];_--);if(v>_&&(v=_),0===_)return r[o++]=20971520,r[o++]=20971520,a.bits=1,0;for(m=1;m<_&&0===C[m];m++);for(v0&&(0===e||1!==_))return-1;for(M[1]=0,f=1;f<15;f++)M[f+1]=M[f]+C[f];for(g=0;g852||2===e&&w>592)return 1;for(;;){F=f-y,n[g]+1=p?(E=D[n[g]-p],I=P[n[g]-p]):(E=96,I=0),A=1<>y)+h]=F<<24|E<<16|I|0}while(0!==h);for(A=1<>=1;if(0!==A?(x&=A-1,x+=A):x=0,g++,0==--C[f]){if(f===_)break;f=t[i+n[g]]}if(f>v&&(x&u)!==c){for(0===y&&(y=v),d+=m,b=f-y,B=1<852||2===e&&w>592)return 1;c=x&u,r[c]=v<<24|b<<16|d-o|0}}return 0!==x&&(r[d+x]=f-y<<24|64<<16|0),a.bits=v,0};const{Z_FINISH:ft,Z_BLOCK:gt,Z_TREES:mt,Z_OK:_t,Z_STREAM_END:vt,Z_NEED_DICT:bt,Z_STREAM_ERROR:yt,Z_DATA_ERROR:Bt,Z_MEM_ERROR:wt,Z_BUF_ERROR:xt,Z_DEFLATED:Pt}=O,Ct=16180,Mt=16190,Ft=16191,Et=16192,It=16194,Dt=16199,St=16200,Tt=16206,Rt=16209,Lt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const kt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},Ot=e=>{if(kt(e))return yt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ct,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,_t},Nt=e=>{if(kt(e))return yt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Ot(e)},Qt=(e,t)=>{let i;if(kt(e))return yt;const s=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?yt:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,Nt(e))},Vt=(e,t)=>{if(!e)return yt;const i=new Ut;e.state=i,i.strm=e,i.window=null,i.mode=Ct;const s=Qt(e,t);return s!==_t&&(e.state=null),s};let Ht,jt,Gt=!0;const zt=e=>{if(Gt){Ht=new Int32Array(512),jt=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(pt(1,e.lens,0,288,Ht,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;pt(2,e.lens,0,32,jt,0,e.work,{bits:5}),Gt=!1}e.lencode=Ht,e.lenbits=9,e.distcode=jt,e.distbits=5},Wt=(e,t,i,s)=>{let r;const o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(i-o.wsize,i),0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>s&&(r=s),o.window.set(t.subarray(i-s,i-s+r),o.wnext),(s-=r)?(o.window.set(t.subarray(i-s,i),0),o.wnext=s,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave{let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x=0;const P=new Uint8Array(4);let C,M;const F=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(kt(e)||!e.output||!e.input&&0!==e.avail_in)return yt;i=e.state,i.mode===Ft&&(i.mode=Et),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,c=a,u=l,w=_t;e:for(;;)switch(i.mode){case Ct:if(0===i.wrap){i.mode=Et;break}for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>>8&255,i.check=U(i.check,P,2,0),A=0,h=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&A)<<8)+(A>>8))%31){e.msg="incorrect header check",i.mode=Rt;break}if((15&A)!==Pt){e.msg="unknown compression method",i.mode=Rt;break}if(A>>>=4,h-=4,B=8+(15&A),0===i.wbits&&(i.wbits=B),B>15||B>i.wbits){e.msg="invalid window size",i.mode=Rt;break}i.dmax=1<>8&1),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16182;case 16182:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<>>8&255,P[2]=A>>>16&255,P[3]=A>>>24&255,i.check=U(i.check,P,4,0)),A=0,h=0,i.mode=16183;case 16183:for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>8),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16184;case 16184:if(1024&i.flags){for(;h<16;){if(0===a)break e;a--,A+=s[o++]<>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(d=i.length,d>a&&(d=a),d&&(i.head&&(B=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(o,o+d),B)),512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,i.length-=d),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===a)break e;d=0;do{B=s[o+d++],i.head&&B&&i.length<65536&&(i.head.name+=String.fromCharCode(B))}while(B&&d>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Ft;break;case 16189:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<>>=7&h,h-=7&h,i.mode=Tt;break}for(;h<3;){if(0===a)break e;a--,A+=s[o++]<>>=1,h-=1,3&A){case 0:i.mode=16193;break;case 1:if(zt(i),i.mode=Dt,t===mt){A>>>=2,h-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Rt}A>>>=2,h-=2;break;case 16193:for(A>>>=7&h,h-=7&h;h<32;){if(0===a)break e;a--,A+=s[o++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=Rt;break}if(i.length=65535&A,A=0,h=0,i.mode=It,t===mt)break e;case It:i.mode=16195;case 16195:if(d=i.length,d){if(d>a&&(d=a),d>l&&(d=l),0===d)break e;r.set(s.subarray(o,o+d),n),a-=d,o+=d,l-=d,n+=d,i.length-=d;break}i.mode=Ft;break;case 16196:for(;h<14;){if(0===a)break e;a--,A+=s[o++]<>>=5,h-=5,i.ndist=1+(31&A),A>>>=5,h-=5,i.ncode=4+(15&A),A>>>=4,h-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Rt;break}i.have=0,i.mode=16197;case 16197:for(;i.have>>=3,h-=3}for(;i.have<19;)i.lens[F[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,C={bits:i.lenbits},w=pt(0,i.lens,0,19,i.lencode,0,i.work,C),i.lenbits=C.bits,w){e.msg="invalid code lengths set",i.mode=Rt;break}i.have=0,i.mode=16198;case 16198:for(;i.have>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=g,h-=g,i.lens[i.have++]=_;else{if(16===_){for(M=g+2;h>>=g,h-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=Rt;break}B=i.lens[i.have-1],d=3+(3&A),A>>>=2,h-=2}else if(17===_){for(M=g+3;h>>=g,h-=g,B=0,d=3+(7&A),A>>>=3,h-=3}else{for(M=g+7;h>>=g,h-=g,B=0,d=11+(127&A),A>>>=7,h-=7}if(i.have+d>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Rt;break}for(;d--;)i.lens[i.have++]=B}}if(i.mode===Rt)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Rt;break}if(i.lenbits=9,C={bits:i.lenbits},w=pt(1,i.lens,0,i.nlen,i.lencode,0,i.work,C),i.lenbits=C.bits,w){e.msg="invalid literal/lengths set",i.mode=Rt;break}if(i.distbits=6,i.distcode=i.distdyn,C={bits:i.distbits},w=pt(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,C),i.distbits=C.bits,w){e.msg="invalid distances set",i.mode=Rt;break}if(i.mode=Dt,t===mt)break e;case Dt:i.mode=St;case St:if(a>=6&&l>=258){e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,At(e,u),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,i.mode===Ft&&(i.back=-1);break}for(i.back=0;x=i.lencode[A&(1<>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>v)],g=x>>>24,m=x>>>16&255,_=65535&x,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,i.length=_,0===m){i.mode=16205;break}if(32&m){i.back=-1,i.mode=Ft;break}if(64&m){e.msg="invalid literal/length code",i.mode=Rt;break}i.extra=15&m,i.mode=16201;case 16201:if(i.extra){for(M=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;x=i.distcode[A&(1<>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<>v)],g=x>>>24,m=x>>>16&255,_=65535&x,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,64&m){e.msg="invalid distance code",i.mode=Rt;break}i.offset=_,i.extra=15&m,i.mode=16203;case 16203:if(i.extra){for(M=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Rt;break}i.mode=16204;case 16204:if(0===l)break e;if(d=u-l,i.offset>d){if(d=i.offset-d,d>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Rt;break}d>i.wnext?(d-=i.wnext,p=i.wsize-d):p=i.wnext-d,d>i.length&&(d=i.length),f=i.window}else f=r,p=n-i.offset,d=i.length;d>l&&(d=l),l-=d,i.length-=d;do{r[n++]=f[p++]}while(--d);0===i.length&&(i.mode=St);break;case 16205:if(0===l)break e;r[n++]=i.length,l--,i.mode=St;break;case Tt:if(i.wrap){for(;h<32;){if(0===a)break e;a--,A|=s[o++]<{if(kt(e))return yt;let t=e.state;return t.window&&(t.window=null),e.state=null,_t},Zt=(e,t)=>{if(kt(e))return yt;const i=e.state;return 0==(2&i.wrap)?yt:(i.head=t,t.done=!1,_t)},qt=(e,t)=>{const i=t.length;let s,r,o;return kt(e)?yt:(s=e.state,0!==s.wrap&&s.mode!==Mt?yt:s.mode===Mt&&(r=1,r=R(r,t,i,0),r!==s.check)?Bt:(o=Wt(e,t,i,i),o?(s.mode=16210,wt):(s.havedict=1,_t)))},$t=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const ei=Object.prototype.toString,{Z_NO_FLUSH:ti,Z_FINISH:ii,Z_OK:si,Z_STREAM_END:ri,Z_NEED_DICT:oi,Z_STREAM_ERROR:ni,Z_DATA_ERROR:ai,Z_MEM_ERROR:li}=O;function Ai(e){this.options=Ve({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Xt(this.strm,t.windowBits);if(i!==si)throw new Error(k[i]);if(this.header=new $t,Zt(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ze(t.dictionary):"[object ArrayBuffer]"===ei.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=qt(this.strm,t.dictionary),i!==si)))throw new Error(k[i])}function hi(e,t){const i=new Ai(t);if(i.push(e),i.err)throw i.msg||k[i.err];return i.result}Ai.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize,r=this.options.dictionary;let o,n,a;if(this.ended)return!1;for(n=t===~~t?t:!0===t?ii:ti,"[object ArrayBuffer]"===ei.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),o=Jt(i,n),o===oi&&r&&(o=qt(i,r),o===si?o=Jt(i,n):o===ai&&(o=oi));i.avail_in>0&&o===ri&&i.state.wrap>0&&0!==e[i.next_in];)Kt(i),o=Jt(i,n);switch(o){case ni:case ai:case oi:case li:return this.onEnd(o),this.ended=!0,!1}if(a=i.avail_out,i.next_out&&(0===i.avail_out||o===ri))if("string"===this.options.to){let e=Ke(i.output,i.next_out),t=i.next_out-e,r=We(i.output,e);i.next_out=t,i.avail_out=s-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(r)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(o!==si||0!==a){if(o===ri)return o=Yt(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},Ai.prototype.onData=function(e){this.chunks.push(e)},Ai.prototype.onEnd=function(e){e===si&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ci={Inflate:Ai,inflate:hi,inflateRaw:function(e,t){return(t=t||{}).raw=!0,hi(e,t)},ungzip:hi,constants:O};const{Deflate:ui,deflate:di,deflateRaw:pi,gzip:fi}=at,{Inflate:gi,inflate:mi,inflateRaw:_i,ungzip:vi}=ci;var bi=ui,yi=di,Bi=pi,wi=fi,xi=gi,Pi=mi,Ci=_i,Mi=vi,Fi=O,Ei={Deflate:bi,deflate:yi,deflateRaw:Bi,gzip:wi,Inflate:xi,inflate:Pi,inflateRaw:Ci,ungzip:Mi,constants:Fi};e.Deflate=bi,e.Inflate=xi,e.constants=Fi,e.default=Ei,e.deflate=yi,e.deflateRaw=Bi,e.gzip=wi,e.inflate=Pi,e.inflateRaw=Ci,e.ungzip=Mi,Object.defineProperty(e,"__esModule",{value:!0})}));var bC=Object.freeze({__proto__:null});let yC=window.pako||bC;yC.inflate||(yC=yC.default);const BC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const wC={version:1,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11]}}(i),a=function(e){return{positions:new Uint16Array(yC.inflate(e.positions).buffer),normals:new Int8Array(yC.inflate(e.normals).buffer),indices:new Uint32Array(yC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(yC.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(yC.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(yC.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(yC.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(yC.inflate(e.meshColors).buffer),entityIDs:yC.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(yC.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(yC.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(yC.inflate(e.positionsDecodeMatrix).buffer)}}(n);!function(e,t,i,s,r,o){o.getNextId(),s.positionsCompression="precompressed",s.normalsCompression="precompressed";const n=i.positions,a=i.normals,l=i.indices,A=i.edgeIndices,h=i.meshPositions,c=i.meshIndices,u=i.meshEdgesIndices,p=i.meshColors,f=JSON.parse(i.entityIDs),g=i.entityMeshes,m=i.entityIsObjects,_=h.length,v=g.length;for(let r=0;rg[e]g[t]?1:0));for(let e=0;e1||(F[i]=e)}}for(let e=0;e1,o=DC(m.subarray(4*t,4*t+3)),u=m[4*t+3]/255,_=a.subarray(d[t],i?a.length:d[t+1]),b=l.subarray(d[t],i?l.length:d[t+1]),B=A.subarray(p[t],i?A.length:p[t+1]),x=h.subarray(f[t],i?h.length:f[t+1]),M=c.subarray(g[t],g[t]+16);if(r){const e=`${n}-geometry.${t}`;s.createGeometry({id:e,primitive:"triangles",positionsCompressed:_,normalsCompressed:b,indices:B,edgeIndices:x,positionsDecodeMatrix:M})}else{const e=`${n}-${t}`;v[F[t]];const i={};s.createMesh(y.apply(i,{id:e,primitive:"triangles",positionsCompressed:_,normalsCompressed:b,indices:B,edgeIndices:x,positionsDecodeMatrix:M,color:o,opacity:u}))}}let E=0;for(let e=0;e1){const t={},r=`${n}-instance.${E++}`,o=`${n}-geometry.${i}`,a=16*B[e],A=u.subarray(a,a+16);s.createMesh(y.apply(t,{id:r,geometryId:o,matrix:A})),l.push(r)}else l.push(i)}if(l.length>0){const e={};s.createEntity(y.apply(e,{id:r,isObject:!0,meshIds:l}))}}}(0,0,a,s,0,o)}};let TC=window.pako||bC;TC.inflate||(TC=TC.default);const RC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const LC={version:5,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i),a=function(e){return{positions:new Float32Array(TC.inflate(e.positions).buffer),normals:new Int8Array(TC.inflate(e.normals).buffer),indices:new Uint32Array(TC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(TC.inflate(e.edgeIndices).buffer),matrices:new Float32Array(TC.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(TC.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(TC.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(TC.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(TC.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(TC.inflate(e.primitiveInstances).buffer),eachEntityId:TC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(TC.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(TC.inflate(e.eachEntityMatricesPortion).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="disabled",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColor,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),_=i.eachEntityPrimitiveInstancesPortion,v=i.eachEntityMatricesPortion,b=u.length,B=g.length,w=new Uint8Array(b),x=m.length;for(let e=0;e1||(P[i]=e)}}for(let e=0;e1,r=RC(f.subarray(4*e,4*e+3)),o=f[4*e+3]/255,c=a.subarray(u[e],t?a.length:u[e+1]),g=l.subarray(u[e],t?l.length:u[e+1]),_=A.subarray(d[e],t?A.length:d[e+1]),v=h.subarray(p[e],t?h.length:p[e+1]);if(i){const t=`${n}-geometry.${e}`;s.createGeometry({id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:_,edgeIndices:v})}else{const t=e;m[P[e]];const i={};s.createMesh(y.apply(i,{id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:_,edgeIndices:v,color:r,opacity:o}))}}let C=0;for(let e=0;e1){const t={},r="instance."+C++,o="geometry"+i,n=16*v[e],l=c.subarray(n,n+16);s.createMesh(y.apply(t,{id:r,geometryId:o,matrix:l})),a.push(r)}else a.push(i)}if(a.length>0){const e={};s.createEntity(y.apply(e,{id:r,isObject:!0,meshIds:a}))}}}(0,0,a,s,0,o)}};let UC=window.pako||bC;UC.inflate||(UC=UC.default);const kC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const OC={version:6,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:UC.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:UC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.reusedPrimitivesDecodeMatrix,p=i.eachPrimitivePositionsAndNormalsPortion,f=i.eachPrimitiveIndicesPortion,g=i.eachPrimitiveEdgeIndicesPortion,m=i.eachPrimitiveColorAndOpacity,_=i.primitiveInstances,v=JSON.parse(i.eachEntityId),b=i.eachEntityPrimitiveInstancesPortion,B=i.eachEntityMatricesPortion,w=i.eachTileAABB,x=i.eachTileEntitiesPortion,P=p.length,C=_.length,M=v.length,F=x.length,E=new Uint32Array(P);for(let e=0;e1,c=t===P-1,d=a.subarray(p[t],c?a.length:p[t+1]),v=l.subarray(p[t],c?l.length:p[t+1]),b=A.subarray(f[t],c?A.length:f[t+1]),B=h.subarray(g[t],c?h.length:g[t+1]),w=kC(m.subarray(4*t,4*t+3)),x=m[4*t+3]/255,C=o.getNextId();if(r){const e=`${n}-geometry.${i}.${t}`;U[e]||(s.createGeometry({id:e,primitive:"triangles",positionsCompressed:d,indices:b,edgeIndices:B,positionsDecodeMatrix:u}),U[e]=!0),s.createMesh(y.apply(N,{id:C,geometryId:e,origin:I,matrix:F,color:w,opacity:x})),R.push(C)}else s.createMesh(y.apply(N,{id:C,origin:I,primitive:"triangles",positionsCompressed:d,normalsCompressed:v,indices:b,edgeIndices:B,positionsDecodeMatrix:L,color:w,opacity:x})),R.push(C)}R.length>0&&s.createEntity(y.apply(O,{id:x,isObject:!0,meshIds:R}))}}}(e,t,a,s,0,o)}};let NC=window.pako||bC;NC.inflate||(NC=NC.default);const QC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function VC(e){const t=[];for(let i=0,s=e.length;i1,d=t===E-1,P=QC(x.subarray(6*e,6*e+3)),C=x[6*e+3]/255,M=x[6*e+4]/255,F=x[6*e+5]/255,I=o.getNextId();if(r){const r=w[e],o=u.slice(r,r+16),B=`${n}-geometry.${i}.${t}`;if(!Q[B]){let e,i,r,o,n,u;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 1:e="surface",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 2:e="points",i=a.subarray(g[t],d?a.length:g[t+1]),o=VC(A.subarray(_[t],d?A.length:_[t+1]));break;case 3:e="lines",i=a.subarray(g[t],d?a.length:g[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]);break;default:continue}s.createGeometry({id:B,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:u,positionsDecodeMatrix:p}),Q[B]=!0}s.createMesh(y.apply(V,{id:I,geometryId:B,origin:R,matrix:o,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}else{let e,i,r,o,n,u;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 1:e="surface",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 2:e="points",i=a.subarray(g[t],d?a.length:g[t+1]),o=VC(A.subarray(_[t],d?A.length:_[t+1]));break;case 3:e="lines",i=a.subarray(g[t],d?a.length:g[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]);break;default:continue}s.createMesh(y.apply(V,{id:I,origin:R,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:u,positionsDecodeMatrix:N,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}}U.length>0&&s.createEntity(y.apply(O,{id:F,isObject:!0,meshIds:U}))}}}(e,t,a,s,0,o)}};let jC=window.pako||bC;jC.inflate||(jC=jC.default);const GC=d.vec4(),zC=d.vec4();const WC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function KC(e){const t=[];for(let i=0,s=e.length;i1,l=r===L-1,A=WC(E.subarray(6*e,6*e+3)),h=E[6*e+3]/255,c=E[6*e+4]/255,I=E[6*e+5]/255,D=o.getNextId();if(a){const o=F[e],a=_.slice(o,o+16),M=`${n}-geometry.${i}.${r}`;let E=H[M];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(b[r]){case 0:E.primitiveName="solid",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=p.subarray(w[r],l?p.length:w[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=p.subarray(w[r],l?p.length:w[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryColors=KC(f.subarray(x[r],l?f.length:x[r+1])),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i0&&n.length>0;break;case 1:e="surface",t=u.subarray(B[r],l?u.length:B[r+1]),i=p.subarray(w[r],l?p.length:w[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),a=m.subarray(C[r],l?m.length:C[r+1]),d=t.length>0&&n.length>0;break;case 2:e="points",t=u.subarray(B[r],l?u.length:B[r+1]),o=KC(f.subarray(x[r],l?f.length:x[r+1])),d=t.length>0;break;case 3:e="lines",t=u.subarray(B[r],l?u.length:B[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),d=t.length>0&&n.length>0;break;default:continue}d&&(s.createMesh(y.apply(G,{id:D,origin:Q,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:R,color:A,metallic:c,roughness:I,opacity:h})),T.push(D))}}T.length>0&&s.createEntity(y.apply(j,{id:A,isObject:!0,meshIds:T}))}}}(e,t,a,s,r,o)}};let JC=window.pako||bC;JC.inflate||(JC=JC.default);const YC=d.vec4(),ZC=d.vec4();const qC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const $C={version:9,parse:function(e,t,i,s,r,o){const n=function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:JC.inflate(e,t).buffer}return{metadata:JSON.parse(JC.inflate(e.metadata,{to:"string"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(JC.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.metadata,l=i.positions,A=i.normals,h=i.colors,c=i.indices,u=i.edgeIndices,p=i.matrices,f=i.reusedGeometriesDecodeMatrix,g=i.eachGeometryPrimitiveType,m=i.eachGeometryPositionsPortion,_=i.eachGeometryNormalsPortion,v=i.eachGeometryColorsPortion,b=i.eachGeometryIndicesPortion,B=i.eachGeometryEdgeIndicesPortion,w=i.eachMeshGeometriesPortion,x=i.eachMeshMatricesPortion,P=i.eachMeshMaterial,C=i.eachEntityId,M=i.eachEntityMeshesPortion,F=i.eachTileAABB,E=i.eachTileEntitiesPortion,I=m.length,D=w.length,S=M.length,T=E.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});const R=new Uint32Array(I);for(let e=0;e1,C=r===I-1,M=qC(P.subarray(6*e,6*e+3)),F=P[6*e+3]/255,E=P[6*e+4]/255,D=P[6*e+5]/255,S=o.getNextId();if(a){const o=x[e],a=p.slice(o,o+16),w=`${n}-geometry.${i}.${r}`;let P=k[w];if(!P){P={batchThisMesh:!t.reuseGeometries};let e=!1;switch(g[r]){case 0:P.primitiveName="solid",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(_[r],C?A.length:_[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),P.geometryEdgeIndices=u.subarray(B[r],C?u.length:B[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 1:P.primitiveName="surface",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(_[r],C?A.length:_[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),P.geometryEdgeIndices=u.subarray(B[r],C?u.length:B[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 2:P.primitiveName="points",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryColors=h.subarray(v[r],C?h.length:v[r+1]),e=P.geometryPositions.length>0;break;case 3:P.primitiveName="lines",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;default:continue}if(e||(P=null),P&&(P.geometryPositions.length,P.batchThisMesh)){P.decompressedPositions=new Float32Array(P.geometryPositions.length),P.transformedAndRecompressedPositions=new Uint16Array(P.geometryPositions.length);const e=P.geometryPositions,t=P.decompressedPositions;for(let i=0,s=e.length;i0&&n.length>0;break;case 1:e="surface",t=l.subarray(m[r],C?l.length:m[r+1]),i=A.subarray(_[r],C?A.length:_[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),a=u.subarray(B[r],C?u.length:B[r+1]),d=t.length>0&&n.length>0;break;case 2:e="points",t=l.subarray(m[r],C?l.length:m[r+1]),o=h.subarray(v[r],C?h.length:v[r+1]),d=t.length>0;break;case 3:e="lines",t=l.subarray(m[r],C?l.length:m[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),d=t.length>0&&n.length>0;break;default:continue}d&&(s.createMesh(y.apply(j,{id:S,origin:L,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:Q,color:M,metallic:E,roughness:D,opacity:F})),O.push(S))}}O.length>0&&s.createEntity(y.apply(H,{id:F,isObject:!0,meshIds:O}))}}}(e,t,a,s,r,o)}};let eM=window.pako||bC;eM.inflate||(eM=eM.default);const tM=d.vec4(),iM=d.vec4();const sM=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function rM(e,t){const i=[];if(t.length>1)for(let e=0,s=t.length-1;e1)for(let t=0,s=e.length/3-1;t0,a=9*e,c=1===h[a+0],u=h[a+1];h[a+2],h[a+3];const d=h[a+4],p=h[a+5],f=h[a+6],g=h[a+7],m=h[a+8];if(o){const t=new Uint8Array(l.subarray(i,r)).buffer,o=`${n}-texture-${e}`;if(c)s.createTexture({id:o,buffers:[t],minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m});else{const e=new Blob([t],{type:10001===u?"image/jpeg":10002===u?"image/png":"image/gif"}),i=(window.URL||window.webkitURL).createObjectURL(e),r=document.createElement("img");r.src=i,s.createTexture({id:o,image:r,minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m})}}}for(let e=0;e=0?`${n}-texture-${r}`:null,normalsTextureId:a>=0?`${n}-texture-${a}`:null,metallicRoughnessTextureId:o>=0?`${n}-texture-${o}`:null,emissiveTextureId:l>=0?`${n}-texture-${l}`:null,occlusionTextureId:A>=0?`${n}-texture-${A}`:null})}const j=new Uint32Array(N);for(let e=0;e1,l=r===N-1,A=D[e],h=A>=0?`${n}-textureSet-${A}`:null,T=sM(S.subarray(6*e,6*e+3)),R=S[6*e+3]/255,L=S[6*e+4]/255,O=S[6*e+5]/255,Q=o.getNextId();if(a){const o=I[e],a=v.slice(o,o+16),A=`${n}-geometry.${i}.${r}`;let E=W[A];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(B[r]){case 0:E.primitiveName="solid",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryNormals=u.subarray(x[r],l?u.length:x[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryNormals=u.subarray(x[r],l?u.length:x[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryColors=p.subarray(P[r],l?p.length:P[r+1]),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 4:E.primitiveName="lines",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryIndices=rM(E.geometryPositions,g.subarray(M[r],l?g.length:M[r+1])),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length),E.transformedAndRecompressedPositions=new Uint16Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i0&&a.length>0;break;case 1:e="surface",t=c.subarray(w[r],l?c.length:w[r+1]),i=u.subarray(x[r],l?u.length:x[r+1]),o=f.subarray(C[r],l?f.length:C[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),A=m.subarray(F[r],l?m.length:F[r+1]),d=t.length>0&&a.length>0;break;case 2:e="points",t=c.subarray(w[r],l?c.length:w[r+1]),n=p.subarray(P[r],l?p.length:P[r+1]),d=t.length>0;break;case 3:e="lines",t=c.subarray(w[r],l?c.length:w[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),d=t.length>0&&a.length>0;break;case 4:e="lines",t=c.subarray(w[r],l?c.length:w[r+1]),a=rM(t,g.subarray(M[r],l?g.length:M[r+1])),d=t.length>0&&a.length>0;break;default:continue}d&&(s.createMesh(y.apply(H,{id:Q,textureSetId:h,origin:G,primitive:e,positionsCompressed:t,normalsCompressed:i,uv:o&&o.length>0?o:null,colorsCompressed:n,indices:a,edgeIndices:A,positionsDecodeMatrix:_,color:T,metallic:L,roughness:O,opacity:R})),U.push(Q))}}U.length>0&&s.createEntity(y.apply(Q,{id:l,isObject:!0,meshIds:U}))}}}(e,t,a,s,r,o)}},nM={};nM[wC.version]=wC,nM[CC.version]=CC,nM[EC.version]=EC,nM[SC.version]=SC,nM[LC.version]=LC,nM[OC.version]=OC,nM[HC.version]=HC,nM[XC.version]=XC,nM[$C.version]=$C,nM[oM.version]=oM;class aM extends z{constructor(e,t={}){super("XKTLoader",e,t),this._maxGeometryBatchSize=t.maxGeometryBatchSize,this.textureTranscoder=t.textureTranscoder,this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults,this.includeTypes=t.includeTypes,this.excludeTypes=t.excludeTypes,this.excludeUnclassifiedObjects=t.excludeUnclassifiedObjects,this.reuseGeometries=t.reuseGeometries}get supportedVersions(){return Object.keys(nM)}get textureTranscoder(){return this._textureTranscoder}set textureTranscoder(e){this._textureTranscoder=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new vC}get objectDefaults(){return this._objectDefaults}set objectDefaults(e){this._objectDefaults=e||vP}get includeTypes(){return this._includeTypes}set includeTypes(e){this._includeTypes=e}get excludeTypes(){return this._excludeTypes}set excludeTypes(e){this._excludeTypes=e}get excludeUnclassifiedObjects(){return this._excludeUnclassifiedObjects}set excludeUnclassifiedObjects(e){this._excludeUnclassifiedObjects=!!e}get globalizeObjectIds(){return this._globalizeObjectIds}set globalizeObjectIds(e){this._globalizeObjectIds=!!e}get reuseGeometries(){return this._reuseGeometries}set reuseGeometries(e){this._reuseGeometries=!1!==e}load(e={}){if(e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id),!(e.src||e.xkt||e.manifestSrc||e.manifest))return this.error("load() param expected: src, xkt, manifestSrc or manifestData"),o;const t={},i=e.includeTypes||this._includeTypes,s=e.excludeTypes||this._excludeTypes,r=e.objectDefaults||this._objectDefaults;if(t.reuseGeometries=null!==e.reuseGeometries&&void 0!==e.reuseGeometries?e.reuseGeometries:!1!==this._reuseGeometries,i){t.includeTypesMap={};for(let e=0,s=i.length;e{o.finalize(),a.finalize(),this.viewer.scene.canvas.spinner.processes--,o.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(a.id)})),this.scheduleTask((()=>{o.destroyed||(o.scene.fire("modelLoaded",o.id),o.fire("loaded",!0,!1))}))},A=e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e),o.fire("error",e)};let h=0;const c={getNextId:()=>`${n}.${h++}`};if(e.metaModelSrc||e.metaModelData)if(e.metaModelSrc){const r=e.metaModelSrc;this._dataSource.getMetaModel(r,(r=>{o.destroyed||(a.loadData(r,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()))}),(e=>{A(`load(): Failed to load model metadata for model '${n} from '${r}' - ${e}`)}))}else e.metaModelData&&(a.loadData(e.metaModelData,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()));else if(e.src)this._loadModel(e.src,e,t,o,a,c,l,A);else if(e.xkt)this._parseModel(e.xkt,e,t,o,a,c),l();else if(e.manifestSrc||e.manifest){const r=e.manifestSrc?function(e){const t=e.split("/");return t.pop(),t.join("/")+"/"}(e.manifestSrc):"",n=(e,o,n)=>{let l=0;const A=()=>{l>=e.length?o():this._dataSource.getMetaModel(`${r}${e[l]}`,(e=>{a.loadData(e,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),l++,this.scheduleTask(A,100)}),n)};A()},h=(i,s,n)=>{let a=0;const l=()=>{a>=i.length?s():this._dataSource.getXKT(`${r}${i[a]}`,(i=>{this._parseModel(i,e,t,o,null,c),a++,this.scheduleTask(l,100)}),n)};l()},u=(i,s,n)=>{let l=0;const A=()=>{l>=i.length?s():this._dataSource.getXKT(`${r}${i[l]}`,(i=>{this._parseModel(i,e,t,o,a,c),l++,this.scheduleTask(A,100)}),n)};A()};if(e.manifest){const t=e.manifest,i=t.xktFiles;if(!i||0===i.length)return void A("load(): Failed to load model manifest - manifest not valid");const s=t.metaModelFiles;s?n(s,(()=>{h(i,l,A)}),A):u(i,l,A)}else this._dataSource.getManifest(e.manifestSrc,(e=>{if(o.destroyed)return;const t=e.xktFiles;if(!t||0===t.length)return void A("load(): Failed to load model manifest - manifest not valid");const i=e.metaModelFiles;i?n(i,(()=>{h(t,l,A)}),A):u(t,l,A)}),A)}return o}_loadModel(e,t,i,s,r,o,n,a){this._dataSource.getXKT(t.src,(e=>{this._parseModel(e,t,i,s,r,o),n()}),a)}_parseModel(e,t,i,s,r,o){if(s.destroyed)return;const n=new DataView(e),a=new Uint8Array(e),l=n.getUint32(0,!0),A=nM[l];if(!A)return void this.error("Unsupported .XKT file version: "+l+" - this XKTLoaderPlugin supports versions "+Object.keys(nM));this.log("Loading .xkt V"+l);const h=n.getUint32(4,!0),c=[];let u=4*(h+2);for(let e=0;ee.size)throw new RangeError("offset:"+t+", length:"+i+", size:"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function p(){}function f(e){var i,s=this;s.init=function(e){i=new Blob([],{type:n}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:n}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function g(t){var i=this,s="",r="";i.init=function(e){s+="data:"+(t||"")+";base64,",e()},i.writeUint8Array=function(t,i){var o,n=r.length,a=r;for(r="",o=0;o<3*Math.floor((n+t.length)/3)-n;o++)a+=String.fromCharCode(t[o]);for(;o2?s+=e.btoa(a):r=a,i()},i.getData=function(t){t(s+e.btoa(r))}}function m(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function _(e,t,i,s,r,n,a,l,A,h){var c,u,d,p=0,f=t.sn;function g(){e.removeEventListener("message",m,!1),l(u,d)}function m(t){var i=t.data,r=i.data,o=i.error;if(o)return o.toString=function(){return"Error: "+this.message},void A(o);if(i.sn===f)switch("number"==typeof i.codecTime&&(e.codecTime+=i.codecTime),"number"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case"append":r?(u+=r.length,s.writeUint8Array(r,(function(){_()}),h)):_();break;case"flush":d=i.crc,r?(u+=r.length,s.writeUint8Array(r,(function(){g()}),h)):g();break;case"progress":a&&a(c+i.loaded,n);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",i)}}function _(){(c=p*o)<=n?i.readUint8Array(r+c,Math.min(o,n-c),(function(i){a&&a(c,n);var s=0===c?t:{sn:f};s.type="append",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}p++}),A):e.postMessage({sn:f,type:"flush"})}u=0,e.addEventListener("message",m,!1),_()}function v(e,t,i,s,r,n,l,A,h,c){var u,d=0,p=0,f="input"===n,g="output"===n,m=new a;!function n(){var a;if((u=d*o)127?r[i-128]:String.fromCharCode(i);return s}function B(e){return decodeURIComponent(escape(e))}function w(e){var t,i="";for(t=0;t>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function P(t,o,n){var a=0;function l(){}l.prototype.getData=function(s,o,l,h){var c=this;function u(e,t){h&&!function(e){var t=A(4);return t.view.setUint32(0,e),c.crc32==t.view.getUint32(0)}(t)?n("CRC failed."):s.getData((function(e){o(e)}))}function d(e){n(e||r)}function p(e){n(e||"Error while writing file data.")}t.readUint8Array(c.offset,30,(function(r){var o,f=A(r.length,r);1347093252==f.view.getUint32(0)?(x(c,f,4,!1,n),o=c.offset+30+c.filenameLength+c.extraFieldLength,s.init((function(){0===c.compressionMethod?b(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p):function(t,i,s,r,o,n,a,l,A,h,c){var u=a?"output":"none";e.zip.useWebWorkers?_(t,{sn:i,codecClass:"Inflater",crcType:u},s,r,o,n,A,l,h,c):v(new e.zip.Inflater,s,r,o,n,u,A,l,h,c)}(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p)}),p)):n(i)}),d)};var h={getEntries:function(e){var r=this._worker;!function(e){t.size<22?n(i):r(22,(function(){r(Math.min(65558,t.size),(function(){n(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){n(s)}))}}((function(o){var a,h;a=o.getUint32(16,!0),h=o.getUint16(8,!0),a<0||a>=t.size?n(i):t.readUint8Array(a,t.size-a,(function(t){var s,o,a,c,u=0,d=[],p=A(t.length,t);for(s=0;s>>8^i[255&(t^e[s])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},c.prototype=new h,c.prototype.constructor=c,u.prototype=new h,u.prototype.constructor=u,d.prototype=new h,d.prototype.constructor=d,p.prototype.getData=function(e){e(this.data)},f.prototype=new p,f.prototype.constructor=f,g.prototype=new p,g.prototype.constructor=g,m.prototype=new p,m.prototype.constructor=m;var E={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function I(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error("zip.workerScripts."+t+" is not an array!"));r=function(e){var t=document.createElement("a");return e.map((function(e){return t.href=e,t.href}))}(r)}else(r=E[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+r[0];var o=new Worker(r[0]);o.codecTime=o.crcTime=0,o.postMessage({type:"importScripts",scripts:r.slice(1)}),o.addEventListener("message",(function e(t){var r=t.data;if(r.error)return o.terminate(),void s(r.error);"importScripts"===r.type&&(o.removeEventListener("message",e),o.removeEventListener("error",n),i(o))})),o.addEventListener("error",n)}else s(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function n(e){o.terminate(),s(e)}}function D(e){console.error(e)}e.zip={Reader:h,Writer:p,BlobReader:d,Data64URIReader:u,TextReader:c,BlobWriter:m,Data64URIWriter:g,TextWriter:f,createReader:function(e,t,i){i=i||D,e.init((function(){P(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||D,s=!!s,e.init((function(){F(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(lM);const AM=lM.zip;!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function o(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener("load",(function(){t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener("error",s,!1),r.open("GET",e),r.responseType="arraybuffer",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement("a");return t.href=e,"http:"===t.protocol||"https:"===t.protocol}(e)){var o=new XMLHttpRequest;o.addEventListener("load",(function(){t.size=Number(o.getResponseHeader("Content-Length")),t.size?s():i(s,r)}),!1),o.addEventListener("error",r,!1),o.open("HEAD",e),o.send()}else i(s,r)},t.readUint8Array=function(e,s,r,o){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),o)}}function n(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener("load",(function(){t.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?i():s("HTTP Range not supported.")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="arraybuffer",o.setRequestHeader("Range","bytes="+t+"-"+(t+i-1)),o.addEventListener("load",(function(){s(o.response)}),!1),o.addEventListener("error",r,!1),o.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function a(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function A(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,o){var n=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=o,s.write(n)},r.getData=function(t){e.file(t)}}o.prototype=new s,o.prototype.constructor=o,n.prototype=new s,n.prototype.constructor=n,a.prototype=new s,a.prototype.constructor=a,l.prototype=new r,l.prototype.constructor=l,A.prototype=new r,A.prototype.constructor=A,e.FileWriter=A,e.HttpReader=o,e.HttpRangeReader=n,e.ArrayBufferReader=a,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,o){if(i.directory)return o?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw"Parent entry is not a directory."}(this,i,{data:s,Reader:r?n:o})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new n(e):new o(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(AM);const hM=["4.2"];class cM{constructor(e,t={}){this.supportedSchemas=hM,this._xrayOpacity=.7,this._src=null,this._options=t,this.viewpoint=null,t.workerScriptsPath?(AM.workerScriptsPath=t.workerScriptsPath,this.src=t.src,this.xrayOpacity=.7,this.displayEffect=t.displayEffect,this.createMetaModel=t.createMetaModel):e.error("Config expected: workerScriptsPath")}load(e,t,i,s,r,o){switch(s.materialType){case"MetallicMaterial":t._defaultMaterial=new Ur(t,{baseColor:[1,1,1],metallic:.6,roughness:.6});break;case"SpecularMaterial":t._defaultMaterial=new Nr(t,{diffuse:[1,1,1],specular:d.vec3([1,1,1]),glossiness:.5});break;default:t._defaultMaterial=new Yt(t,{reflectivity:.75,shiness:100,diffuse:[1,1,1]})}t._wireframeMaterial=new Tr(t,{color:[0,0,0],lineWidth:2});var n=t.scene.canvas.spinner;n.processes++,uM(e,t,i,s,(function(){n.processes--,r&&r(),t.fire("loaded",!0,!1)}),(function(e){n.processes--,t.error(e),o&&o(e),t.fire("error",e)}),(function(e){console.log("Error, Will Robinson: "+e)}))}}var uM=function(e,t,i,s,r,o){!function(e,t,i){var s=new bM;s.load(e,(function(){t(s)}),(function(e){i("Error loading ZIP archive: "+e)}))}(i,(function(i){dM(e,i,s,t,r,o)}),o)},dM=function(){return function(t,i,s,r,o){var n={plugin:t,zip:i,edgeThreshold:30,materialType:s.materialType,scene:r.scene,modelNode:r,info:{references:{}},materials:{}};s.createMetaModel&&(n.metaModelData={modelId:r.id,metaObjects:[{name:r.id,type:"Default",id:r.id}]}),r.scene.loading++,function(t,i){t.zip.getFile("Manifest.xml",(function(s,r){for(var o=r.children,n=0,a=o.length;n0){for(var n=o.trim().split(" "),a=new Int16Array(n.length),l=0,A=0,h=n.length;A0){i.primitive="triangles";for(var o=[],n=0,a=r.length;n=t.length)i();else{var a=t[o].id,l=a.lastIndexOf(":");l>0&&(a=a.substring(l+1));var A=a.lastIndexOf("#");A>0&&(a=a.substring(0,A)),s[a]?r(o+1):function(e,t,i){e.zip.getFile(t,(function(t,s){!function(e,t,i){for(var s,r=t.children,o=0,n=r.length;o0)for(var s=0,r=t.length;s{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=t.stats||{};if(r.sourceFormat="IFC",r.schemaVersion="",r.title="",r.author="",r.created="",r.numMetaObjects=0,r.numPropertySets=0,r.numObjects=0,r.numGeometries=0,r.numTriangles=0,r.numVertices=0,!this._ifcAPI)throw"WebIFCLoaderPlugin has no WebIFC instance configured - please inject via WebIFCLoaderPlugin constructor";const o=new Uint8Array(e),n=this._ifcAPI.OpenModel(o),a=this._ifcAPI.GetModelSchema(n),l=this._ifcAPI.GetLineIDsWithType(n,this._webIFC.IFCPROJECT).get(0),A=!1!==t.loadMetadata,h={modelID:n,modelSchema:a,sceneModel:s,loadMetadata:A,metadata:A?{id:"",projectId:""+l,author:"",createdAt:"",schema:"",creatingApplication:"",metaObjects:[],propertySets:[]}:null,metaObjects:{},options:i,log:function(e){},nextId:0,stats:r};if(A){if(i.includeTypes){h.includeTypes={};for(let e=0,t=i.includeTypes.length;e{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_parseMetaObjects(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCPROJECT).get(0),i=this._ifcAPI.GetLine(e.modelID,t);this._parseSpatialChildren(e,i)}_parseSpatialChildren(e,t,i){const s=this._ifcAPI.GetNameFromTypeCode(t.type);if(e.includeTypes&&!e.includeTypes[s])return;if(e.excludeTypes&&e.excludeTypes[s])return;this._createMetaObject(e,t,i);const r=t.GlobalId.value;this._parseRelatedItemsOfType(e,t.expressID,"RelatingObject","RelatedObjects",this._webIFC.IFCRELAGGREGATES,r),this._parseRelatedItemsOfType(e,t.expressID,"RelatingStructure","RelatedElements",this._webIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,r)}_createMetaObject(e,t,i){const s=t.GlobalId.value,r=this._ifcAPI.GetNameFromTypeCode(t.type),o={id:s,name:t.Name&&""!==t.Name.value?t.Name.value:r,type:r,parent:i};e.metadata.metaObjects.push(o),e.metaObjects[s]=o,e.stats.numMetaObjects++}_parseRelatedItemsOfType(e,t,i,s,r,o){const n=this._ifcAPI.GetLineIDsWithType(e.modelID,r);for(let r=0;re.value)).includes(t)}else h=A.value===t;if(h){const t=l[s];if(Array.isArray(t))t.forEach((t=>{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}));else{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}}}}_parsePropertySets(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCRELDEFINESBYPROPERTIES);for(let i=0;i0){const o="Default",n=t.Name.value,a=[];for(let e=0,t=s.length;e{const i=t.expressID,s=t.geometries,r=[],o=this._ifcAPI.GetLine(e.modelID,i).GlobalId.value;if(e.loadMetadata){const t=o,i=e.metaObjects[t];if(e.includeTypes&&(!i||!e.includeTypes[i.type]))return;if(e.excludeTypes&&(!i||e.excludeTypes[i.type]))return}const n=d.mat4(),a=d.vec3();for(let t=0,i=s.size();t{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n{let t=0,i=0,s=0;const r=new DataView(e),o=new Uint8Array(6e3),n=({item:s,format:o,size:n})=>{let a,l;switch(o){case"char":return l=new Uint8Array(e,t,n),t+=n,a=DM(l),[s,a];case"uShort":return a=r.getUint16(t,!0),t+=n,[s,a];case"uLong":return a=r.getUint32(t,!0),"NumberOfVariableLengthRecords"===s&&(i=a),t+=n,[s,a];case"uChar":return a=r.getUint8(t),t+=n,[s,a];case"double":return a=r.getFloat64(t,!0),t+=n,[s,a];default:t+=n}};return(()=>{const e={};MM.forEach((t=>{const i=n({...t});if(void 0!==i){if("FileSignature"===i[0]&&"LASF"!==i[1])throw new Error("Ivalid FileSignature. Is this a LAS/LAZ file");e[i[0]]=i[1]}}));const r=[];let a=i;for(;a--;){const e={};FM.forEach((i=>{const r=n({...i});e[r[0]]=r[1],"UserId"===r[0]&&"LASF_Projection"===r[1]&&(s=t-18+54)})),r.push(e)}const l=(e=>{if(void 0===e)return;const t=s+e.RecordLengthAfterHeader,i=o.slice(s,t),r=IM(i),n=new DataView(r);let a=6,l=Number(n.getUint16(a,!0));const A=[];for(;l--;){const e={};e.key=n.getUint16(a+=2,!0),e.tiffTagLocation=n.getUint16(a+=2,!0),e.count=n.getUint16(a+=2,!0),e.valueOffset=n.getUint16(a+=2,!0),A.push(e)}const h=A.find((e=>3072===e.key));if(h&&h.hasOwnProperty("valueOffset"))return h.valueOffset})(r.find((e=>"LASF_Projection"===e.UserId)));return l&&(e.epsg=l),e})()},IM=e=>{let t=new ArrayBuffer(e.length),i=new Uint8Array(t);for(let t=0;t{let t="";return e.forEach((e=>{let i=String.fromCharCode(e);"\0"!==i&&(t+=i)})),t.trim()};class SM extends z{constructor(e,t={}){super("lasLoader",e,t),this.dataSource=t.dataSource,this.skip=t.skip,this.fp64=t.fp64,this.colorDepth=t.colorDepth}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new PM}get skip(){return this._skip}set skip(e){this._skip=e||1}get fp64(){return this._fp64}set fp64(e){this._fp64=!!e}get colorDepth(){return this._colorDepth}set colorDepth(e){this._colorDepth=e||"auto"}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0}));if(!e.src&&!e.las)return this.error("load() param expected: src or las"),t;const i={las:{skip:this._skip,fp64:this._fp64,colorDepth:this._colorDepth}};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.las,e,i,t).then((()=>{s.processes--}),(e=>{s.processes--,this.error(e),t.fire("error",e)}))}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getLAS(t.src,(e=>{this._parseModel(e,t,i,s).then((()=>{r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){function r(e){const i=e.value;if(t.rotateX&&i)for(let e=0,t=i.length;e{if(s.destroyed)return void l();const A=t.stats||{};A.sourceFormat="LAS",A.schemaVersion="",A.title="",A.author="",A.created="",A.numMetaObjects=0,A.numPropertySets=0,A.numObjects=0,A.numGeometries=0,A.numTriangles=0,A.numVertices=0;try{const A=EM(e);CB(e,CM,i).then((e=>{const h=e.attributes,c=e.loaderData,u=void 0!==c.pointsFormatId?c.pointsFormatId:-1;if(!h.POSITION)return s.finalize(),void l("No positions found in file");let p,f;switch(u){case 0:p=r(h.POSITION),f=n(h.intensity);break;case 1:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=n(h.intensity);break;case 2:case 3:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=o(h.COLOR_0,h.intensity)}const g=TM(p,15e5),m=TM(f,2e6),_=[];for(let e=0,t=g.length;e{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))})),a()}))}catch(e){s.finalize(),l(e)}}))}}function TM(e,t){if(t>=e.length)return e;let i=[];for(let s=0;s{t(e)}),(function(e){i(e)}))}}function LM(e,t,i){i=i||2;var s,r,o,n,a,l,A,h=t&&t.length,c=h?t[0]*i:e.length,u=UM(e,0,c,i,!0),d=[];if(!u||u.next===u.prev)return d;if(h&&(u=function(e,t,i,s){var r,o,n,a=[];for(r=0,o=t.length;r80*i){s=o=e[0],r=n=e[1];for(var p=i;po&&(o=a),l>n&&(n=l);A=0!==(A=Math.max(o-s,n-r))?1/A:0}return OM(u,d,i,s,r,A),d}function UM(e,t,i,s,r){var o,n;if(r===nF(e,t,i,s)>0)for(o=t;o=t;o-=s)n=sF(o,e[o],e[o+1],n);return n&&ZM(n,n.next)&&(rF(n),n=n.next),n}function kM(e,t){if(!e)return e;t||(t=e);var i,s=e;do{if(i=!1,s.steiner||!ZM(s,s.next)&&0!==YM(s.prev,s,s.next))s=s.next;else{if(rF(s),(s=t=s.prev)===s.next)break;i=!0}}while(i||s!==t);return t}function OM(e,t,i,s,r,o,n){if(e){!n&&o&&function(e,t,i,s){var r=e;do{null===r.z&&(r.z=WM(r.x,r.y,t,i,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,i,s,r,o,n,a,l,A=1;do{for(i=e,e=null,o=null,n=0;i;){for(n++,s=i,a=0,t=0;t0||l>0&&s;)0!==a&&(0===l||!s||i.z<=s.z)?(r=i,i=i.nextZ,a--):(r=s,s=s.nextZ,l--),o?o.nextZ=r:e=r,r.prevZ=o,o=r;i=s}o.nextZ=null,A*=2}while(n>1)}(r)}(e,s,r,o);for(var a,l,A=e;e.prev!==e.next;)if(a=e.prev,l=e.next,o?QM(e,s,r,o):NM(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),rF(e),e=l.next,A=l.next;else if((e=l)===A){n?1===n?OM(e=VM(kM(e),t,i),t,i,s,r,o,2):2===n&&HM(e,t,i,s,r,o):OM(kM(e),t,i,s,r,o,1);break}}}function NM(e){var t=e.prev,i=e,s=e.next;if(YM(t,i,s)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(XM(t.x,t.y,i.x,i.y,s.x,s.y,r.x,r.y)&&YM(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function QM(e,t,i,s){var r=e.prev,o=e,n=e.next;if(YM(r,o,n)>=0)return!1;for(var a=r.xo.x?r.x>n.x?r.x:n.x:o.x>n.x?o.x:n.x,h=r.y>o.y?r.y>n.y?r.y:n.y:o.y>n.y?o.y:n.y,c=WM(a,l,t,i,s),u=WM(A,h,t,i,s),d=e.prevZ,p=e.nextZ;d&&d.z>=c&&p&&p.z<=u;){if(d!==e.prev&&d!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&YM(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,p!==e.prev&&p!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&YM(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;d&&d.z>=c;){if(d!==e.prev&&d!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&YM(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;p&&p.z<=u;){if(p!==e.prev&&p!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&YM(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function VM(e,t,i){var s=e;do{var r=s.prev,o=s.next.next;!ZM(r,o)&&qM(r,s,s.next,o)&&tF(r,o)&&tF(o,r)&&(t.push(r.i/i),t.push(s.i/i),t.push(o.i/i),rF(s),rF(s.next),s=e=o),s=s.next}while(s!==e);return kM(s)}function HM(e,t,i,s,r,o){var n=e;do{for(var a=n.next.next;a!==n.prev;){if(n.i!==a.i&&JM(n,a)){var l=iF(n,a);return n=kM(n,n.next),l=kM(l,l.next),OM(n,t,i,s,r,o),void OM(l,t,i,s,r,o)}a=a.next}n=n.next}while(n!==e)}function jM(e,t){return e.x-t.x}function GM(e,t){if(t=function(e,t){var i,s=t,r=e.x,o=e.y,n=-1/0;do{if(o<=s.y&&o>=s.next.y&&s.next.y!==s.y){var a=s.x+(o-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(a<=r&&a>n){if(n=a,a===r){if(o===s.y)return s;if(o===s.next.y)return s.next}i=s.x=s.x&&s.x>=h&&r!==s.x&&XM(oi.x||s.x===i.x&&zM(i,s)))&&(i=s,u=l)),s=s.next}while(s!==A);return i}(e,t),t){var i=iF(t,e);kM(t,t.next),kM(i,i.next)}}function zM(e,t){return YM(e.prev,e,t.prev)<0&&YM(t.next,e,e.next)<0}function WM(e,t,i,s,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function KM(e){var t=e,i=e;do{(t.x=0&&(e-n)*(s-a)-(i-n)*(t-a)>=0&&(i-n)*(o-a)-(r-n)*(s-a)>=0}function JM(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&qM(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(tF(e,t)&&tF(t,e)&&function(e,t){var i=e,s=!1,r=(e.x+t.x)/2,o=(e.y+t.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&r<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next}while(i!==e);return s}(e,t)&&(YM(e.prev,e,t.prev)||YM(e,t.prev,t))||ZM(e,t)&&YM(e.prev,e,e.next)>0&&YM(t.prev,t,t.next)>0)}function YM(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function ZM(e,t){return e.x===t.x&&e.y===t.y}function qM(e,t,i,s){var r=eF(YM(e,t,i)),o=eF(YM(e,t,s)),n=eF(YM(i,s,e)),a=eF(YM(i,s,t));return r!==o&&n!==a||(!(0!==r||!$M(e,i,t))||(!(0!==o||!$M(e,s,t))||(!(0!==n||!$M(i,e,s))||!(0!==a||!$M(i,t,s)))))}function $M(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function eF(e){return e>0?1:e<0?-1:0}function tF(e,t){return YM(e.prev,e,e.next)<0?YM(e,t,e.next)>=0&&YM(e,e.prev,t)>=0:YM(e,t,e.prev)<0||YM(e,e.next,t)<0}function iF(e,t){var i=new oF(e.i,e.x,e.y),s=new oF(t.i,t.x,t.y),r=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=r,r.prev=i,s.next=i,i.prev=s,o.next=s,s.prev=o,s}function sF(e,t,i,s){var r=new oF(e,t,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function rF(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function oF(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function nF(e,t,i,s){for(var r=0,o=t,n=i-s;o0&&(s+=e[r-1].length,i.holes.push(s))}return i};const aF=d.vec2(),lF=d.vec3(),AF=d.vec3(),hF=d.vec3();class cF extends z{constructor(e,t={}){super("cityJSONLoader",e,t),this.dataSource=t.dataSource}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new RM}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,edges:!0}));if(!e.src&&!e.cityJSON)return this.error("load() param expected: src or cityJSON"),t;const i={};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.cityJSON,e,i,t),s.processes--}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getCityJSON(t.src,(e=>{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=e.transform?this._transformVertices(e.vertices,e.transform,i.rotateX):e.vertices,o=t.stats||{};o.sourceFormat=e.type||"CityJSON",o.schemaVersion=e.version||"",o.title="",o.author="",o.created="",o.numMetaObjects=0,o.numPropertySets=0,o.numObjects=0,o.numGeometries=0,o.numTriangles=0,o.numVertices=0;const n=!1!==t.loadMetadata,a=n?{id:d.createUUID(),name:"Model",type:"Model"}:null,l=n?{id:"",projectId:"",author:"",createdAt:"",schema:e.version||"",creatingApplication:"",metaObjects:[a],propertySets:[]}:null,A={data:e,vertices:r,sceneModel:s,loadMetadata:n,metadata:l,rootMetaObject:a,nextId:0,stats:o};if(this._parseCityJSON(A),s.finalize(),n){const e=s.id;this.viewer.metaScene.createMetaModel(e,A.metadata,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_transformVertices(e,t,i){const s=[],r=t.scale||d.vec3([1,1,1]),o=t.translate||d.vec3([0,0,0]);for(let t=0,n=0;t0))return;const o=[];for(let i=0,s=t.geometry.length;i0){const r=t[s[0]];if(void 0!==r.value)n=e[r.value];else{const t=r.values;if(t){a=[];for(let s=0,r=t.length;s0&&(s.createEntity({id:i,meshIds:o,isObject:!0}),e.stats.numObjects++)}_parseGeometrySurfacesWithOwnMaterials(e,t,i,s){switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":const r=t.boundaries;this._parseSurfacesWithOwnMaterials(e,i,r,s);break;case"Solid":const o=t.boundaries;for(let t=0;t0&&h.push(A.length);const i=this._extractLocalIndices(e,a[t],c,u);A.push(...i)}if(3===A.length)u.indices.push(A[0]),u.indices.push(A[1]),u.indices.push(A[2]);else if(A.length>3){const e=[];for(let t=0;t0&&n.indices.length>0){const t=""+e.nextId++;r.createMesh({id:t,primitive:"triangles",positions:n.positions,indices:n.indices,color:i&&i.diffuseColor?i.diffuseColor:[.8,.8,.8],opacity:1}),s.push(t),e.stats.numGeometries++,e.stats.numVertices+=n.positions.length/3,e.stats.numTriangles+=n.indices.length/3}}_parseSurfacesWithSharedMaterial(e,t,i,s){const r=e.vertices;for(let o=0;o0&&a.push(n.length);const l=this._extractLocalIndices(e,t[o][r],i,s);n.push(...l)}if(3===n.length)s.indices.push(n[0]),s.indices.push(n[1]),s.indices.push(n[2]);else if(n.length>3){let e=[];for(let t=0;t{t(e)}),(function(e){i(e)}))}}class dF extends z{constructor(e,t={}){super("DotBIMLoader",e,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults}set dataSource(e){this._dataSource=e||new uF}get dataSource(){return this._dataSource}set objectDefaults(e){this._objectDefaults=e||vP}get objectDefaults(){return this._objectDefaults}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,backfaces:e.backfaces,dtxEnabled:e.dtxEnabled,rotation:e.rotation,origin:e.origin})),i=t.id;if(!e.src&&!e.dotBIM)return this.error("load() param expected: src or dotBIM"),t;const s=e.objectDefaults||this._objectDefaults||vP;let r,o;if(e.includeTypes){r={};for(let t=0,i=e.includeTypes.length;t{const t=e.fileData,n=e.sceneModel,a={},l={},A=d.createUUID(),h=d.createUUID(),c=d.createUUID(),u=d.createUUID(),p={metaObjects:[{id:A,name:"IfcProject",type:"IfcProject",parent:null},{id:h,name:"IfcSite",type:"IfcSite",parent:A},{id:c,name:"IfcBuilding",type:"IfcBuilding",parent:h},{id:u,name:"IfcBuildingStorey",type:"IfcBuildingStorey",parent:c}],propertySets:[]};for(let e=0,i=t.meshes.length;e{if(l[e])return;const i=a[e],s=t.meshes[i];n.createGeometry({id:e,primitive:"triangles",positions:s.coordinates,indices:s.indices}),l[e]=!0},g=t.elements;for(let e=0,t=g.length;e{n.destroyed||(n.scene.fire("modelLoaded",n.id),n.fire("loaded",!0,!1))}))};if(e.src){const i=e.src;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getDotBIM(i,(e=>{n({fileData:e,sceneModel:t,nextId:0,error:function(e){}}),this.viewer.scene.canvas.spinner.processes--}),(e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e)}))}else if(e.dotBIM){const i={fileData:e.dotBIM,sceneModel:t,nextId:0,error:function(e){}};n(i)}return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}}export{Li as AlphaFormat,Tt as AmbientLight,be as AngleMeasurementsControl,ye as AngleMeasurementsMouseControl,Be as AngleMeasurementsPlugin,we as AngleMeasurementsTouchControl,Fe as AnnotationsPlugin,yr as AxisGizmoPlugin,Mc as BCFViewpointsPlugin,Ao as Bitmap,Pi as ByteType,pu as CameraMemento,Kc as CameraPath,eu as CameraPathAnimation,cF as CityJSONLoaderPlugin,ui as ClampToEdgeWrapping,R as Component,xs as CompressedMediaType,on as Configs,o as ContextMenu,vu as CubicBezierCurve,Gc as Curve,Qh as DefaultLoadingManager,Qi as DepthFormat,Vi as DepthStencilFormat,St as DirLight,Lc as DistanceMeasurementsControl,Uc as DistanceMeasurementsMouseControl,kc as DistanceMeasurementsPlugin,Oc as DistanceMeasurementsTouchControl,uF as DotBIMDefaultDataSource,dF as DotBIMLoaderPlugin,ei as EdgeMaterial,qt as EmphasisMaterial,eC as FaceAlignedSectionPlanesPlugin,Nc as FastNavPlugin,Ii as FloatType,Jr as Fresnel,N as Frustum,O as FrustumPlane,ys as GIFMediaType,Qc as GLTFDefaultDataSource,bP as GLTFLoaderPlugin,Di as HalfFloatType,ou as ImagePlane,Fi as IntType,Bs as JPEGMediaType,Wh as KTX2TextureTranscoder,SM as LASLoaderPlugin,Tr as LambertMaterial,uu as LightMap,Bc as LineSet,vs as LinearEncoding,vi as LinearFilter,wi as LinearMipMapLinearFilter,yi as LinearMipMapNearestFilter,Bi as LinearMipmapLinearFilter,bi as LinearMipmapNearestFilter,Vh as Loader,Nh as LoadingManager,Vc as LocaleService,Ni as LuminanceAlphaFormat,Oi as LuminanceFormat,e as Map,ue as Marker,H as MarqueePicker,j as MarqueePickerMouseControl,fr as Mesh,Ur as MetallicMaterial,di as MirroredRepeatWrapping,gu as ModelMemento,xP as NavCubePlugin,pi as NearestFilter,_i as NearestMipMapLinearFilter,fi as NearestMipMapNearestFilter,mi as NearestMipmapLinearFilter,gi as NearestMipmapNearestFilter,Sr as Node,TP as OBJLoaderPlugin,f as ObjectsKdTree3,_u as ObjectsMemento,ws as PNGMediaType,bu as Path,Bu as PerformanceModel,Yt as PhongMaterial,Le as PickResult,z as Plugin,nu as PointLight,G as PointerCircle,n as PointerLens,yu as QuadraticBezierCurve,g as Queue,ki as RGBAFormat,Wi as RGBAIntegerFormat,fs as RGBA_ASTC_10x10_Format,us as RGBA_ASTC_10x5_Format,ds as RGBA_ASTC_10x6_Format,ps as RGBA_ASTC_10x8_Format,gs as RGBA_ASTC_12x10_Format,ms as RGBA_ASTC_12x12_Format,rs as RGBA_ASTC_4x4_Format,os as RGBA_ASTC_5x4_Format,ns as RGBA_ASTC_5x5_Format,as as RGBA_ASTC_6x5_Format,ls as RGBA_ASTC_6x6_Format,As as RGBA_ASTC_8x5_Format,hs as RGBA_ASTC_8x6_Format,cs as RGBA_ASTC_8x8_Format,_s as RGBA_BPTC_Format,ss as RGBA_ETC2_EAC_Format,es as RGBA_PVRTC_2BPPV1_Format,$i as RGBA_PVRTC_4BPPV1_Format,Xi as RGBA_S3TC_DXT1_Format,Ji as RGBA_S3TC_DXT3_Format,Yi as RGBA_S3TC_DXT5_Format,Ui as RGBFormat,ts as RGB_ETC1_Format,is as RGB_ETC2_Format,qi as RGB_PVRTC_2BPPV1_Format,Zi as RGB_PVRTC_4BPPV1_Format,Ki as RGB_S3TC_DXT1_Format,Gi as RGFormat,zi as RGIntegerFormat,zt as ReadableGeometry,Hi as RedFormat,ji as RedIntegerFormat,cu as ReflectionMap,ci as RepeatWrapping,iC as STLDefaultDataSource,cC as STLLoaderPlugin,bc as SceneModel,po as SceneModelMesh,cc as SceneModelTransform,Br as SectionPlane,VP as SectionPlanesPlugin,Ci as ShortType,wu as Skybox,tC as SkyboxesPlugin,Nr as SpecularMaterial,zc as SplineCurve,du as SpriteMarker,WP as StoreyViewsPlugin,Xr as Texture,xu as TextureTranscoder,pC as TreeViewPlugin,xi as UnsignedByteType,Ri as UnsignedInt248Type,Ei as UnsignedIntType,Si as UnsignedShort4444Type,Ti as UnsignedShort5551Type,Mi as UnsignedShortType,qr as VBOGeometry,_C as ViewCullPlugin,ub as Viewer,xM as WebIFCLoaderPlugin,Gh as WorkerPool,vC as XKTDefaultDataSource,aM as XKTLoaderPlugin,BM as XML3DLoaderPlugin,Wt as buildBoxGeometry,io as buildBoxLinesGeometry,so as buildBoxLinesGeometryFromAABB,mr as buildCylinderGeometry,ro as buildGridGeometry,oo as buildPlaneGeometry,ao as buildPolylineGeometry,lo as buildPolylineGeometryFromCurve,_r as buildSphereGeometry,no as buildTorusGeometry,br as buildVectorTextGeometry,K as createRTCViewMat,V as frustumIntersectsAABB3,Xh as getKTX2TextureTranscoder,Z as getPlaneRTCPos,eo as load3DSGeometry,to as loadOBJGeometry,d as math,Y as rtcToWorldPos,bs as sRGBEncoding,Q as setFrustum,m as stats,y as utils,X as worldToRTCPos,J as worldToRTCPositions}; diff --git a/dist/xeokit-sdk.min.es5.js b/dist/xeokit-sdk.min.es5.js index a19e0ea35a..bdef8a4d3c 100644 --- a/dist/xeokit-sdk.min.es5.js +++ b/dist/xeokit-sdk.min.es5.js @@ -14,7 +14,7 @@ var e,t=a().mark(XB),i=a().mark(JB),s=a().mark(oM);function r(e,t){var i=Object. /** * @author https://github.com/tmarti, with support from https://tribia.com/ * @license MIT - **/var jc=null;function Gc(e,t){var i,s,r,n,o,a,l=3*e,u=3*t,A=Math.min(i=jc[l],s=jc[l+1],r=jc[l+2]),c=Math.min(n=jc[u],o=jc[u+1],a=jc[u+2]);if(A!==c)return A-c;var h=Math.max(i,s,r),d=Math.max(n,o,a);return h!==d?h-d:0}function zc(e,t){for(var i=new Int32Array(e.length/3),s=0,r=i.length;s>t;i.sort(Gc);for(var a=new Int32Array(e.length),l=0,u=i.length;le[r+1]){var o=e[r];e[r]=e[r+1],e[r+1]=o}Wc=new Int32Array(e),t.sort(Kc);for(var a=new Int32Array(e.length),l=0,u=t.length;l0)for(var s=i._meshes,r=0,n=s.length;r0)for(var o=this._meshes,a=0,l=o.length;a1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._dtxEnabled=s.scene.dtxEnabled&&!1!==r.dtxEnabled,s._enableVertexWelding=!1,s._enableIndexBucketing=!1,s._vboBatchingLayerScratchMemory=oo(),s._textureTranscoder=r.textureTranscoder||Oc(s.scene.viewer),s._maxGeometryBatchSize=r.maxGeometryBatchSize,s._aabb=$.collapseAABB3(),s._aabbDirty=!0,s._quantizationRanges={},s._vboInstancingLayers={},s._vboBatchingLayers={},s._dtxLayers={},s._meshList=[],s.layerList=[],s._entityList=[],s._geometries={},s._dtxBuckets={},s._textures={},s._textureSets={},s._transforms={},s._meshes={},s._unusedMeshes={},s._entities={},s.renderFlags=new Kr,s.numGeometries=0,s.numPortions=0,s.numVisibleLayerPortions=0,s.numTransparentLayerPortions=0,s.numXRayedLayerPortions=0,s.numHighlightedLayerPortions=0,s.numSelectedLayerPortions=0,s.numEdgesLayerPortions=0,s.numPickableLayerPortions=0,s.numClippableLayerPortions=0,s.numCulledLayerPortions=0,s.numEntities=0,s._numTriangles=0,s._numLines=0,s._numPoints=0,s._edgeThreshold=r.edgeThreshold||10,s._origin=$.vec3(r.origin||[0,0,0]),s._position=$.vec3(r.position||[0,0,0]),s._rotation=$.vec3(r.rotation||[0,0,0]),s._quaternion=$.vec4(r.quaternion||[0,0,0,1]),s._conjugateQuaternion=$.vec4(r.quaternion||[0,0,0,1]),r.rotation&&$.eulerToQuaternion(s._rotation,"XYZ",s._quaternion),s._scale=$.vec3(r.scale||[1,1,1]),s._worldRotationMatrix=$.mat4(),s._worldRotationMatrixConjugate=$.mat4(),s._matrix=$.mat4(),s._matrixDirty=!0,s._rebuildMatrices(),s._worldNormalMatrix=$.mat4(),$.inverseMat4(s._matrix,s._worldNormalMatrix),$.transposeMat4(s._worldNormalMatrix),(r.matrix||r.position||r.rotation||r.scale||r.quaternion)&&(s._viewMatrix=$.mat4(),s._viewNormalMatrix=$.mat4(),s._viewMatrixDirty=!0,s._matrixNonIdentity=!0),s._opacity=1,s._colorize=[1,1,1],s._saoEnabled=!1!==r.saoEnabled,s._pbrEnabled=!1!==r.pbrEnabled,s._colorTextureEnabled=!1!==r.colorTextureEnabled,s._isModel=r.isModel,s._isModel&&s.scene._registerModel(b(s)),s._onCameraViewMatrix=s.scene.camera.on("matrix",(function(){s._viewMatrixDirty=!0})),s._meshesWithDirtyMatrices=[],s._numMeshesWithDirtyMatrices=0,s._onTick=s.scene.on("tick",(function(){for(;s._numMeshesWithDirtyMatrices>0;)s._meshesWithDirtyMatrices[--s._numMeshesWithDirtyMatrices]._updateMatrix()})),s._createDefaultTextureSet(),s.visible=r.visible,s.culled=r.culled,s.pickable=r.pickable,s.clippable=r.clippable,s.collidable=r.collidable,s.castsShadow=r.castsShadow,s.receivesShadow=r.receivesShadow,s.xrayed=r.xrayed,s.highlighted=r.highlighted,s.selected=r.selected,s.edges=r.edges,s.colorize=r.colorize,s.opacity=r.opacity,s.backfaces=r.backfaces,s}return C(i,[{key:"_meshMatrixDirty",value:function(e){this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++]=e}},{key:"_createDefaultTextureSet",value:function(){var e=new Mc({id:"defaultColorTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})}),t=new Mc({id:"defaultMetalRoughTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[0,1,1,1]})}),i=new Mc({id:"defaultNormalsTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[0,0,0,0]})}),s=new Mc({id:"defaultEmissiveTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[0,0,0,1]})}),r=new Mc({id:"defaultOcclusionTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})});this._textures.defaultColorTexture=e,this._textures.defaultMetalRoughTexture=t,this._textures.defaultNormalsTexture=i,this._textures.defaultEmissiveTexture=s,this._textures.defaultOcclusionTexture=r,this._textureSets.defaultTextureSet=new Cc({id:"defaultTextureSet",model:this,colorTexture:e,metallicRoughnessTexture:t,normalsTexture:i,emissiveTexture:s,occlusionTexture:r})}},{key:"isPerformanceModel",get:function(){return!0}},{key:"transforms",get:function(){return this._transforms}},{key:"textures",get:function(){return this._textures}},{key:"textureSets",get:function(){return this._textureSets}},{key:"meshes",get:function(){return this._meshes}},{key:"objects",get:function(){return this._entities}},{key:"origin",get:function(){return this._origin}},{key:"position",get:function(){return this._position},set:function(e){this._position.set(e||[0,0,0]),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}},{key:"rotation",get:function(){return this._rotation},set:function(e){this._rotation.set(e||[0,0,0]),$.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}},{key:"quaternion",get:function(){return this._quaternion},set:function(e){this._quaternion.set(e||[0,0,0,1]),$.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}},{key:"scale",get:function(){return this._scale},set:function(e){}},{key:"matrix",get:function(){return this._matrixDirty&&this._rebuildMatrices(),this._matrix},set:function(e){this._matrix.set(e||Ah),$.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),$.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),$.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),$.translateMat4v(this._position,this._matrix),this._matrixDirty=!1,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}},{key:"rotationMatrix",get:function(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrix}},{key:"_rebuildMatrices",value:function(){this._matrixDirty&&($.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),$.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),$.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),$.translateMat4v(this._position,this._matrix),this._matrixDirty=!1)}},{key:"rotationMatrixConjugate",get:function(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrixConjugate}},{key:"_setWorldMatrixDirty",value:function(){this._matrixDirty=!0,this._aabbDirty=!0}},{key:"_transformDirty",value:function(){this._matrixDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0}},{key:"_sceneModelDirty",value:function(){this.scene._aabbDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0,this._matrixDirty=!0;for(var e=0,t=this._entityList.length;e0},set:function(e){e=!1!==e,this._visible=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!!e,this._xrayed=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!!e,this._highlighted=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!!e,this._selected=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!!e,this._edges=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!1!==e,this._pickable=e;for(var t=0,i=this._entityList.length;t0)e.colorsCompressed=new Uint8Array(e.colorsCompressed);else if(e.colors&&e.colors.length>0){for(var l=e.colors,u=new Uint8Array(l.length),A=0,c=l.length;A>24&255,r=i>>16&255,n=i>>8&255,o=255&i;switch(e.pickColor=new Uint8Array([o,n,r,s]),e.solid="solid"===e.primitive,t.origin=$.vec3(e.origin),e.type){case 2:t.layer=this._getDTXLayer(e),t.aabb=e.aabb;break;case 1:t.layer=this._getVBOBatchingLayer(e),t.aabb=e.aabb;break;case 0:t.layer=this._getVBOInstancingLayer(e),t.aabb=e.aabb}return e.transform&&(e.meshMatrix=e.transform.worldMatrix),t.portionId=t.layer.createPortion(t,e),this._meshes[e.id]=t,this._unusedMeshes[e.id]=t,this._meshList.push(t),t}},{key:"_getNumPrimitives",value:function(e){var t=0;switch(e.geometry?e.geometry.primitive:e.primitive){case"triangles":case"solid":case"surface":switch(e.type){case 2:for(var i=0,s=e.buckets.length;i>>0).toString(16)}},{key:"_getVBOInstancingLayer",value:function(e){var t=this,i=e.origin,s=e.textureSetId||"-",r=e.geometryId,n="".concat(Math.round(i[0]),".").concat(Math.round(i[1]),".").concat(Math.round(i[2]),".").concat(s,".").concat(r),o=this._vboInstancingLayers[n];if(o)return o;for(var a=e.textureSet,l=e.geometry;!o;)switch(l.primitive){case"triangles":case"surface":o=new nl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!1});break;case"solid":o=new nl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!0});break;case"lines":o=new Gl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0});break;case"points":o=new Uu({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0})}return this._vboInstancingLayers[n]=o,this.layerList.push(o),o}},{key:"createEntity",value:function(e){if(void 0===e.id?e.id=$.createUUID():this.scene.components[e.id]&&(this.error("Scene already has a Component with this ID: ".concat(e.id," - will assign random ID")),e.id=$.createUUID()),void 0!==e.meshIds){var t=0;this._visible&&!1!==e.visible&&(t|=Qe),this._pickable&&!1!==e.pickable&&(t|=He),this._culled&&!1!==e.culled&&(t|=Ve),this._clippable&&!1!==e.clippable&&(t|=je),this._collidable&&!1!==e.collidable&&(t|=Ge),this._edges&&!1!==e.edges&&(t|=Xe),this._xrayed&&!1!==e.xrayed&&(t|=ze),this._highlighted&&!1!==e.highlighted&&(t|=We),this._selected&&!1!==e.selected&&(t|=Ke),e.flags=t,this._createEntity(e)}else this.error("Config missing: meshIds")}},{key:"_createEntity",value:function(e){for(var t=[],i=0,s=e.meshIds.length;it.sortId?1:0}));for(var o=0,a=this.layerList.length;o0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}},{key:"_updateRenderFlagsVisibleLayers",value:function(){var e=this.renderFlags;e.numLayers=this.layerList.length,e.numVisibleLayers=0;for(var t=0,i=this.layerList.length;t0){var t="".concat(this.id,"-dummyEntityForUnusedMeshes");this.warn('Creating dummy SceneModelEntity "'.concat(t,'" for unused SceneMeshes: [').concat(e.join(","),"]")),this.createEntity({id:t,meshIds:e,isObject:!0})}this._unusedMeshes={}}},{key:"_getActiveSectionPlanesForLayer",value:function(e){var t=this.renderFlags,i=this.scene._sectionPlanesState.sectionPlanes,s=i.length,r=e.layerIndex*s;if(s>0)for(var n=0;n0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){var t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0)this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions0&&(e.edgesTransparent=!0));if(this.numSelectedLayerPortions>0){var i=this.scene.selectedMaterial._state;i.fill&&(i.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),i.edges&&(i.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){var s=this.scene.highlightMaterial._state;s.fill&&(s.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),s.edges&&(s.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}}},{key:"drawColorOpaque",value:function(e){for(var t=this.renderFlags,i=0,s=t.visibleLayers.length;i2&&void 0!==arguments[2]&&arguments[2],s=e.positionsCompressed||[],r=zc(e.indices||[],t),n=Xc(e.edgeIndices||[]);function o(e,t){if(e>t){var i=e;e=t,t=i}function s(i,s){return i!==e?e-i:s!==t?t-s:0}for(var r=0,o=(n.length>>1)-1;r<=o;){var a=o+r>>1,l=s(n[2*a],n[2*a+1]);if(l>0)r=a+1;else{if(!(l<0))return a;o=a-1}}return-r-1}var a=new Int32Array(n.length/2);a.fill(0);var l=s.length/3;if(l>8*(1<h.maxNumPositions&&(h=c()),h.bucketNumber>8)return[e];-1===u[v]&&(u[v]=h.numPositions++,h.positionsCompressed.push(s[3*v]),h.positionsCompressed.push(s[3*v+1]),h.positionsCompressed.push(s[3*v+2])),-1===u[g]&&(u[g]=h.numPositions++,h.positionsCompressed.push(s[3*g]),h.positionsCompressed.push(s[3*g+1]),h.positionsCompressed.push(s[3*g+2])),-1===u[m]&&(u[m]=h.numPositions++,h.positionsCompressed.push(s[3*m]),h.positionsCompressed.push(s[3*m+1]),h.positionsCompressed.push(s[3*m+2])),h.indices.push(u[v]),h.indices.push(u[g]),h.indices.push(u[m]);var _=void 0;(_=o(v,g))>=0&&0===a[_]&&(a[_]=1,h.edgeIndices.push(u[n[2*_]]),h.edgeIndices.push(u[n[2*_+1]])),(_=o(v,m))>=0&&0===a[_]&&(a[_]=1,h.edgeIndices.push(u[n[2*_]]),h.edgeIndices.push(u[n[2*_+1]])),(_=o(g,m))>=0&&0===a[_]&&(a[_]=1,h.edgeIndices.push(u[n[2*_]]),h.edgeIndices.push(u[n[2*_+1]]))}var y=t/8*2,b=t/8,w=2*s.length+(r.length+n.length)*y,B=0;return s.length,A.forEach((function(e){B+=2*e.positionsCompressed.length+(e.indices.length+e.edgeIndices.length)*b,e.positionsCompressed.length})),B>w?[e]:(i&&Jc(A,e),A)}({positionsCompressed:s,indices:r,edgeIndices:n},s.length/3>65536?16:8):o=[{positionsCompressed:s,indices:r,edgeIndices:n}];return o}var ph=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,e,r))._positions=r.positions||[],r.indices)s._indices=r.indices;else{s._indices=[];for(var n=0,o=s._positions.length/3-1;n1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"BCFViewpoints",e,r)).originatingSystem=r.originatingSystem||"xeokit.io",s.authoringTool=r.authoringTool||"xeokit.io",s}return C(i,[{key:"getViewpoint",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=this.viewer.scene,s=i.camera,r=i.realWorldOffset,n=!0===t.reverseClippingPlanes,o={},a=$.normalizeVec3($.subVec3(s.look,s.eye,$.vec3())),l=s.eye,u=s.up;s.yUp&&(a=wh(a),l=wh(l),u=wh(u));var A=yh($.addVec3(l,r));"ortho"===s.projection?o.orthogonal_camera={camera_view_point:A,camera_direction:yh(a),camera_up_vector:yh(u),view_to_world_scale:s.ortho.scale}:o.perspective_camera={camera_view_point:A,camera_direction:yh(a),camera_up_vector:yh(u),field_of_view:s.perspective.fov};var c=i.sectionPlanes;for(var d in c)if(c.hasOwnProperty(d)){var p=c[d];if(!p.active)continue;var f=p.pos,v=void 0;v=n?$.negateVec3(p.dir,$.vec3()):p.dir,s.yUp&&(f=wh(f),v=wh(v)),$.addVec3(f,r),f=yh(f),v=yh(v),o.clipping_planes||(o.clipping_planes=[]),o.clipping_planes.push({location:f,direction:v})}var g=i.lineSets;for(var m in g)if(g.hasOwnProperty(m)){var _=g[m];o.lines||(o.lines=[]);for(var y=_.positions,b=_.indices,w=0,B=b.length/2;w1&&void 0!==arguments[1]?arguments[1]:{};if(e){var s=this.viewer,r=s.scene,n=r.camera,o=!1!==i.rayCast,a=!1!==i.immediate,l=!1!==i.reset,u=r.realWorldOffset,A=!0===i.reverseClippingPlanes;if(r.clearSectionPlanes(),e.clipping_planes&&e.clipping_planes.length>0&&e.clipping_planes.forEach((function(e){var t=bh(e.location,fh),i=bh(e.direction,fh);A&&$.negateVec3(i),$.subVec3(t,u),n.yUp&&(t=Bh(t),i=Bh(i)),new hn(r,{pos:t,dir:i})})),r.clearLines(),e.lines&&e.lines.length>0){var c=[],h=[],d=0;e.lines.forEach((function(e){e.start_point&&e.end_point&&(c.push(e.start_point.x),c.push(e.start_point.y),c.push(e.start_point.z),c.push(e.end_point.x),c.push(e.end_point.y),c.push(e.end_point.z),h.push(d++),h.push(d++))})),new ph(r,{positions:c,indices:h,clippable:!1,collidable:!0})}if(r.clearBitmaps(),e.bitmaps&&e.bitmaps.length>0&&e.bitmaps.forEach((function(e){var t=e.bitmap_type||"jpg",i=e.bitmap_data,s=bh(e.location,vh),o=bh(e.normal,gh),a=bh(e.up,mh),l=e.height||1;t&&i&&s&&o&&a&&(n.yUp&&(s=Bh(s),o=Bh(o),a=Bh(a)),new $n(r,{src:i,type:t,pos:s,normal:o,up:a,clippable:!1,collidable:!0,height:l}))})),l&&(r.setObjectsXRayed(r.xrayedObjectIds,!1),r.setObjectsHighlighted(r.highlightedObjectIds,!1),r.setObjectsSelected(r.selectedObjectIds,!1)),e.components){if(e.components.visibility){e.components.visibility.default_visibility?(r.setObjectsVisible(r.objectIds,!0),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((function(e){return t._withBCFComponent(i,e,(function(e){return e.visible=!1}))}))):(r.setObjectsVisible(r.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((function(e){return t._withBCFComponent(i,e,(function(e){return e.visible=!0}))})));var p=e.components.visibility.view_setup_hints;p&&(!1===p.spaces_visible&&r.setObjectsVisible(s.metaScene.getObjectIDsByType("IfcSpace"),!1),void 0!==p.spaces_translucent&&r.setObjectsXRayed(s.metaScene.getObjectIDsByType("IfcSpace"),!0),p.space_boundaries_visible,!1===p.openings_visible&&r.setObjectsVisible(s.metaScene.getObjectIDsByType("IfcOpening"),!0),p.space_boundaries_translucent,void 0!==p.openings_translucent&&r.setObjectsXRayed(s.metaScene.getObjectIDsByType("IfcOpening"),!0))}e.components.selection&&(r.setObjectsSelected(r.selectedObjectIds,!1),e.components.selection.forEach((function(e){return t._withBCFComponent(i,e,(function(e){return e.selected=!0}))}))),e.components.translucency&&(r.setObjectsXRayed(r.xrayedObjectIds,!1),e.components.translucency.forEach((function(e){return t._withBCFComponent(i,e,(function(e){return e.xrayed=!0}))}))),e.components.coloring&&e.components.coloring.forEach((function(e){var s=e.color,r=0,n=!1;8===s.length&&((r=parseInt(s.substring(0,2),16)/256)<=1&&r>=.95&&(r=1),s=s.substring(2),n=!0);var o=[parseInt(s.substring(0,2),16)/256,parseInt(s.substring(2,4),16)/256,parseInt(s.substring(4,6),16)/256];e.components.map((function(e){return t._withBCFComponent(i,e,(function(e){e.colorize=o,n&&(e.opacity=r)}))}))}))}if(e.perspective_camera||e.orthogonal_camera){var f,v,g,m;if(e.perspective_camera?(f=bh(e.perspective_camera.camera_view_point,fh),v=bh(e.perspective_camera.camera_direction,fh),g=bh(e.perspective_camera.camera_up_vector,fh),n.perspective.fov=e.perspective_camera.field_of_view,m="perspective"):(f=bh(e.orthogonal_camera.camera_view_point,fh),v=bh(e.orthogonal_camera.camera_direction,fh),g=bh(e.orthogonal_camera.camera_up_vector,fh),n.ortho.scale=e.orthogonal_camera.view_to_world_scale,m="ortho"),$.subVec3(f,u),n.yUp&&(f=Bh(f),v=Bh(v),g=Bh(g)),o){var _=r.pick({pickSurface:!0,origin:f,direction:v});v=_?_.worldPos:$.addVec3(f,v,fh)}else v=$.addVec3(f,v,fh);a?(n.eye=f,n.look=v,n.up=g,n.projection=m):s.cameraFlight.flyTo({eye:f,look:v,up:g,duration:i.duration,projection:m})}}}},{key:"_withBCFComponent",value:function(e,t,i){var s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){var n=t.authoring_tool_id,o=r.objects[n];if(o)return void i(o);if(e.updateCompositeObjects)if(s.metaScene.metaObjects[n])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}if(t.ifc_guid){var a=t.ifc_guid,l=r.objects[a];if(l)return void i(l);if(e.updateCompositeObjects)if(s.metaScene.metaObjects[a])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(a),i);Object.keys(r.models).forEach((function(t){var n=$.globalizeObjectId(t,a),o=r.objects[n];o?i(o):e.updateCompositeObjects&&s.metaScene.metaObjects[n]&&r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}))}}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this)}}]),i}();function yh(e){return{x:e[0],y:e[1],z:e[2]}}function bh(e,t){return(t=new Float64Array(3))[0]=e.x,t[1]=e.y,t[2]=e.z,t}function wh(e){return new Float64Array([e[0],-e[2],e[1]])}function Bh(e){return new Float64Array([e[0],e[2],-e[1]])}function xh(e){var t="";return t+=Math.round(255*e[0]).toString(16).padStart(2,"0"),t+=Math.round(255*e[1]).toString(16).padStart(2,"0"),t+=Math.round(255*e[2]).toString(16).padStart(2,"0")}var Ph=$.vec3(),Ch=function(e,t,i,s){var r=e-i,n=t-s;return Math.sqrt(r*r+n*n)};var Mh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,e.viewer.scene,r)).plugin=e,s._container=r.container,!s._container)throw"config missing: container";s._eventSubs={};var n=s.plugin.viewer.scene;s._originMarker=new et(n,r.origin),s._targetMarker=new et(n,r.target),s._originWorld=$.vec3(),s._targetWorld=$.vec3(),s._wp=new Float64Array(24),s._vp=new Float64Array(24),s._pp=new Float64Array(24),s._cp=new Float64Array(8),s._xAxisLabelCulled=!1,s._yAxisLabelCulled=!1,s._zAxisLabelCulled=!1,s._color=r.color||s.plugin.defaultColor;var o=r.onMouseOver?function(e){r.onMouseOver(e,b(s)),s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseover",e))}:null,a=r.onMouseLeave?function(e){r.onMouseLeave(e,b(s)),s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseleave",e))}:null,l=function(e){s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousedown",e))},u=function(e){s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseup",e))},A=function(e){s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousemove",e))},c=r.onContextMenu?function(e){r.onContextMenu(e,b(s))}:null,h=function(e){s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent("wheel",e))};return s._originDot=new st(s._container,{fillColor:s._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._targetDot=new st(s._container,{fillColor:s._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._lengthWire=new it(s._container,{color:s._color,thickness:2,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._xAxisWire=new it(s._container,{color:"#FF0000",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._yAxisWire=new it(s._container,{color:"green",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._zAxisWire=new it(s._container,{color:"blue",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._lengthLabel=new rt(s._container,{fillColor:s._color,prefix:"",text:"",zIndex:void 0!==e.zIndex?e.zIndex+4:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._xAxisLabel=new rt(s._container,{fillColor:"red",prefix:"X",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._yAxisLabel=new rt(s._container,{fillColor:"green",prefix:"Y",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._zAxisLabel=new rt(s._container,{fillColor:"blue",prefix:"Z",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._measurementOrientation="Horizontal",s._wpDirty=!1,s._vpDirty=!1,s._cpDirty=!1,s._sectionPlanesDirty=!0,s._visible=!1,s._originVisible=!1,s._targetVisible=!1,s._wireVisible=!1,s._axisVisible=!1,s._xAxisVisible=!1,s._yAxisVisible=!1,s._zAxisVisible=!1,s._axisEnabled=!0,s._xLabelEnabled=!1,s._yLabelEnabled=!1,s._zLabelEnabled=!1,s._lengthLabelEnabled=!1,s._labelsVisible=!1,s._labelsOnWires=!1,s._clickable=!1,s._originMarker.on("worldPos",(function(e){s._originWorld.set(e||[0,0,0]),s._wpDirty=!0,s._needUpdate(0)})),s._targetMarker.on("worldPos",(function(e){s._targetWorld.set(e||[0,0,0]),s._wpDirty=!0,s._needUpdate(0)})),s._onViewMatrix=n.camera.on("viewMatrix",(function(){s._vpDirty=!0,s._needUpdate(0)})),s._onProjMatrix=n.camera.on("projMatrix",(function(){s._cpDirty=!0,s._needUpdate()})),s._onCanvasBoundary=n.canvas.on("boundary",(function(){s._cpDirty=!0,s._needUpdate(0)})),s._onMetricsUnits=n.metrics.on("units",(function(){s._cpDirty=!0,s._needUpdate()})),s._onMetricsScale=n.metrics.on("scale",(function(){s._cpDirty=!0,s._needUpdate()})),s._onMetricsOrigin=n.metrics.on("origin",(function(){s._cpDirty=!0,s._needUpdate()})),s._onSectionPlaneUpdated=n.on("sectionPlaneUpdated",(function(){s._sectionPlanesDirty=!0,s._needUpdate()})),s.approximate=r.approximate,s.visible=r.visible,s.originVisible=r.originVisible,s.targetVisible=r.targetVisible,s.wireVisible=r.wireVisible,s.axisVisible=r.axisVisible,s.xAxisVisible=r.xAxisVisible,s.yAxisVisible=r.yAxisVisible,s.zAxisVisible=r.zAxisVisible,s.xLabelEnabled=r.xLabelEnabled,s.yLabelEnabled=r.yLabelEnabled,s.zLabelEnabled=r.zLabelEnabled,s.lengthLabelEnabled=r.lengthLabelEnabled,s.labelsVisible=r.labelsVisible,s.labelsOnWires=r.labelsOnWires,s}return C(i,[{key:"_update",value:function(){if(this._visible){var e=this.plugin.viewer.scene;if(this._wpDirty&&(this._measurementOrientation=function(e,t,i){return Math.abs(t[1]-e[1])>i?"Vertical":"Horizontal"}(this._originWorld,this._targetWorld,1),"Vertical"===this._measurementOrientation?(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._originWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._originWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1):(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._targetWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._targetWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1),this._wpDirty=!1,this._vpDirty=!0),this._vpDirty&&($.transformPositions4(e.camera.viewMatrix,this._wp,this._vp),this._vp[3]=1,this._vp[7]=1,this._vp[11]=1,this._vp[15]=1,this._vpDirty=!1,this._cpDirty=!0),this._sectionPlanesDirty){if(this._isSliced(this._originWorld)||this._isSliced(this._targetWorld))return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setCulled(!0),this._yAxisWire.setCulled(!0),this._zAxisWire.setCulled(!0),this._lengthWire.setCulled(!0),this._originDot.setCulled(!0),void this._targetDot.setCulled(!0);this._xAxisLabel.setCulled(!1),this._yAxisLabel.setCulled(!1),this._zAxisLabel.setCulled(!1),this._lengthLabel.setCulled(!1),this._xAxisWire.setCulled(!1),this._yAxisWire.setCulled(!1),this._zAxisWire.setCulled(!1),this._lengthWire.setCulled(!1),this._originDot.setCulled(!1),this._targetDot.setCulled(!1),this._sectionPlanesDirty=!0}var t=this._originMarker.viewPos[2],i=this._targetMarker.viewPos[2];if(t>-.3||i>-.3)return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setVisible(!1),this._yAxisWire.setVisible(!1),this._zAxisWire.setVisible(!1),this._lengthWire.setVisible(!1),this._originDot.setVisible(!1),void this._targetDot.setVisible(!1);if(this._cpDirty){$.transformPositions4(e.camera.project.matrix,this._vp,this._pp);for(var s=this._pp,r=this._cp,n=e.canvas.canvas.getBoundingClientRect(),o=this._container.getBoundingClientRect(),a=n.top-o.top,l=n.left-o.left,u=e.canvas.boundary,A=u[2],c=u[3],h=0,d=this.plugin.viewer.scene.metrics,p=d.scale,f=d.units,v=d.unitsInfo[f].abbrev,g=0,m=s.length;g1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e.viewer.scene))._canvasToPagePos=r.canvasToPagePos,s.pointerLens=r.pointerLens,s._active=!1,s._currentDistanceMeasurement=null,s._currentDistanceMeasurementInitState={wireVisible:null,axisVisible:null,xAxisVisible:null,yaxisVisible:null,zAxisVisible:null,targetVisible:null},s._initMarkerDiv(),s._onCameraControlHoverSnapOrSurface=null,s._onCameraControlHoverSnapOrSurfaceOff=null,s._onMouseDown=null,s._onMouseUp=null,s._onCanvasTouchStart=null,s._onCanvasTouchEnd=null,s._snapping=!1!==r.snapping,s._mouseState=0,s._attachPlugin(e,r),s}return C(i,[{key:"_initMarkerDiv",value:function(){var e=document.createElement("div");e.setAttribute("id","myMarkerDiv");var t=this.scene.canvas.canvas;t.parentNode.insertBefore(e,t),e.style.background="black",e.style.border="2px solid blue",e.style.borderRadius="10px",e.style.width="5px",e.style.height="5px",e.style.top="-200px",e.style.left="-200px",e.style.margin="0 0",e.style.zIndex="100",e.style.position="absolute",e.style.pointerEvents="none",this._markerDiv=e}},{key:"_destroyMarkerDiv",value:function(){if(this._markerDiv){var e=document.getElementById("myMarkerDiv");e.parentNode.removeChild(e),this._markerDiv=null}}},{key:"_attachPlugin",value:function(e){this.distanceMeasurementsPlugin=e,this.plugin=e}},{key:"active",get:function(){return this._active}},{key:"snapping",get:function(){return this._snapping},set:function(e){e!==this._snapping?(this._snapping=e,this.deactivate(),this.activate()):this._snapping=e}},{key:"activate",value:function(){var e=this;if(!this._active){this._markerDiv||this._initMarkerDiv(),this.fire("activated",!0);var t=this.distanceMeasurementsPlugin,i=this.scene,s=t.viewer.cameraControl,r=i.canvas.canvas;i.input;var n,o,a=!1,l=$.vec3(),u=$.vec2(),A=null;this._mouseState=0;var c=function e(t){return t.offsetTop+(t.offsetParent&&t.offsetParent!==r.parentNode&&e(t.offsetParent))},h=function e(t){return t.offsetLeft+(t.offsetParent&&t.offsetParent!==r.parentNode&&e(t.offsetParent))},d=$.vec2();this._onCameraControlHoverSnapOrSurface=s.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",(function(t){var i=t.snappedCanvasPos||t.canvasPos;a=!0,l.set(t.worldPos),u.set(t.canvasPos),0===e._mouseState?(e._canvasToPagePos?(e._canvasToPagePos(r,i,d),e._markerDiv.style.left="".concat(d[0]-5,"px"),e._markerDiv.style.top="".concat(d[1]-5,"px")):(e._markerDiv.style.left="".concat(h(r)+i[0]-5,"px"),e._markerDiv.style.top="".concat(c(r)+i[1]-5,"px")),e._markerDiv.style.background="pink",t.snappedToVertex||t.snappedToEdge?(e.pointerLens&&(e.pointerLens.visible=!0,e.pointerLens.canvasPos=t.canvasPos,e.pointerLens.snappedCanvasPos=t.snappedCanvasPos||t.canvasPos,e.pointerLens.snapped=!0),e._markerDiv.style.background="greenyellow",e._markerDiv.style.border="2px solid green"):(e.pointerLens&&(e.pointerLens.visible=!0,e.pointerLens.canvasPos=t.canvasPos,e.pointerLens.snappedCanvasPos=t.canvasPos,e.pointerLens.snapped=!1),e._markerDiv.style.background="pink",e._markerDiv.style.border="2px solid red"),A=t.entity):(e._markerDiv.style.left="-10000px",e._markerDiv.style.top="-10000px"),r.style.cursor="pointer",e._currentDistanceMeasurement&&(e._currentDistanceMeasurement.wireVisible=e._currentDistanceMeasurementInitState.wireVisible,e._currentDistanceMeasurement.axisVisible=e._currentDistanceMeasurementInitState.axisVisible&&e.distanceMeasurementsPlugin.defaultAxisVisible,e._currentDistanceMeasurement.xAxisVisible=e._currentDistanceMeasurementInitState.xAxisVisible&&e.distanceMeasurementsPlugin.defaultXAxisVisible,e._currentDistanceMeasurement.yAxisVisible=e._currentDistanceMeasurementInitState.yAxisVisible&&e.distanceMeasurementsPlugin.defaultYAxisVisible,e._currentDistanceMeasurement.zAxisVisible=e._currentDistanceMeasurementInitState.zAxisVisible&&e.distanceMeasurementsPlugin.defaultZAxisVisible,e._currentDistanceMeasurement.targetVisible=e._currentDistanceMeasurementInitState.targetVisible,e._currentDistanceMeasurement.target.worldPos=l.slice(),e._markerDiv.style.left="-10000px",e._markerDiv.style.top="-10000px")})),r.addEventListener("mousedown",this._onMouseDown=function(e){1===e.which&&(n=e.clientX,o=e.clientY)}),r.addEventListener("mouseup",this._onMouseUp=function(i){1===i.which&&(i.clientX>n+20||i.clientXo+20||i.clientY1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"DistanceMeasurements",e))._pointerLens=r.pointerLens,s._container=r.container||document.body,s._defaultControl=null,s._measurements={},s.labelMinAxisLength=r.labelMinAxisLength,s.defaultVisible=!1!==r.defaultVisible,s.defaultOriginVisible=!1!==r.defaultOriginVisible,s.defaultTargetVisible=!1!==r.defaultTargetVisible,s.defaultWireVisible=!1!==r.defaultWireVisible,s.defaultXLabelEnabled=!1!==r.defaultXLabelEnabled,s.defaultYLabelEnabled=!1!==r.defaultYLabelEnabled,s.defaultZLabelEnabled=!1!==r.defaultZLabelEnabled,s.defaultLengthLabelEnabled=!1!==r.defaultLengthLabelEnabled,s.defaultLabelsVisible=!1!==r.defaultLabelsVisible,s.defaultAxisVisible=!1!==r.defaultAxisVisible,s.defaultXAxisVisible=!1!==r.defaultXAxisVisible,s.defaultYAxisVisible=!1!==r.defaultYAxisVisible,s.defaultZAxisVisible=!1!==r.defaultZAxisVisible,s.defaultColor=void 0!==r.defaultColor?r.defaultColor:"#00BBFF",s.zIndex=r.zIndex||1e4,s.defaultLabelsOnWires=!1!==r.defaultLabelsOnWires,s._onMouseOver=function(e,t){s.fire("mouseOver",{plugin:b(s),distanceMeasurement:t,measurement:t,event:e})},s._onMouseLeave=function(e,t){s.fire("mouseLeave",{plugin:b(s),distanceMeasurement:t,measurement:t,event:e})},s._onContextMenu=function(e,t){s.fire("contextMenu",{plugin:b(s),distanceMeasurement:t,measurement:t,event:e})},s}return C(i,[{key:"getContainerElement",value:function(){return this._container}},{key:"send",value:function(e,t){}},{key:"pointerLens",get:function(){return this._pointerLens}},{key:"control",get:function(){return this._defaultControl||(this._defaultControl=new Fh(this,{})),this._defaultControl}},{key:"measurements",get:function(){return this._measurements}},{key:"labelMinAxisLength",get:function(){return this._labelMinAxisLength},set:function(e){e<1&&(this.error("labelMinAxisLength must be >= 1; defaulting to 25"),e=25),this._labelMinAxisLength=e||25}},{key:"createMeasurement",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.viewer.scene.components[t.id]&&(this.error("Viewer scene component with this ID already exists: "+t.id),delete t.id);var i=t.origin,s=t.target,r=new Mh(this,{id:t.id,plugin:this,container:this._container,origin:{entity:i.entity,worldPos:i.worldPos},target:{entity:s.entity,worldPos:s.worldPos},visible:t.visible,wireVisible:t.wireVisible,axisVisible:!1!==t.axisVisible&&!1!==this.defaultAxisVisible,xAxisVisible:!1!==t.xAxisVisible&&!1!==this.defaultXAxisVisible,yAxisVisible:!1!==t.yAxisVisible&&!1!==this.defaultYAxisVisible,zAxisVisible:!1!==t.zAxisVisible&&!1!==this.defaultZAxisVisible,xLabelEnabled:!1!==t.xLabelEnabled&&!1!==this.defaultXLabelEnabled,yLabelEnabled:!1!==t.yLabelEnabled&&!1!==this.defaultYLabelEnabled,zLabelEnabled:!1!==t.zLabelEnabled&&!1!==this.defaultZLabelEnabled,lengthLabelEnabled:!1!==t.lengthLabelEnabled&&!1!==this.defaultLengthLabelEnabled,labelsVisible:!1!==t.labelsVisible&&!1!==this.defaultLabelsVisible,originVisible:t.originVisible,targetVisible:t.targetVisible,color:t.color,labelsOnWires:!1!==t.labelsOnWires&&!1!==this.defaultLabelsOnWires,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[r.id]=r,r.clickable=!0,r.on("destroyed",(function(){delete e._measurements[r.id]})),this.fire("measurementCreated",r),r}},{key:"destroyMeasurement",value:function(e){var t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("DistanceMeasurement not found: "+e)}},{key:"setLabelsShown",value:function(e){for(var t=0,i=Object.entries(this.measurements);t1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),(s=t.call(this,e.viewer.scene)).pointerLens=r.pointerLens,s.pointerCircle=new De(e.viewer),s._active=!1;var n=document.createElement("div"),o=s.scene.canvas.canvas;return o.parentNode.insertBefore(n,o),n.style.background="black",n.style.border="2px solid blue",n.style.borderRadius="10px",n.style.width="5px",n.style.height="5px",n.style.margin="-200px -200px",n.style.zIndex="100",n.style.position="absolute",n.style.pointerEvents="none",s.markerDiv=n,s._currentDistanceMeasurement=null,s._currentDistanceMeasurementInitState={wireVisible:null,axisVisible:null,xAxisVisible:null,yaxisVisible:null,zAxisVisible:null,targetVisible:null},s._onCanvasTouchStart=null,s._onCanvasTouchEnd=null,s._longTouchTimeoutMs=300,s._snapping=!1!==r.snapping,s._touchState=0,s._attachPlugin(e,r),s}return C(i,[{key:"_attachPlugin",value:function(e){this.distanceMeasurementsPlugin=e,this.plugin=e}},{key:"active",get:function(){return this._active}},{key:"snapping",get:function(){return this._snapping},set:function(e){e!==this._snapping?(this._snapping=e,this.deactivate(),this.activate()):this._snapping=e}},{key:"activate",value:function(){var e=this;if(!this._active){var t=this.plugin,i=this.scene,s=i.canvas.canvas;t.pointerLens;var r=$.vec3(),n=20,o=null;this._touchState=0;var a=$.vec2(),l=$.vec2(),u=$.vec2(),A=null,c=function(){e.plugin.viewer.cameraControl.active=!1},h=function(){e.plugin.viewer.cameraControl.active=!0};s.addEventListener("touchstart",this._onCanvasTouchStart=function(s){var u=s.touches.length;if(1===u){var d=s.touches[0],p=d.clientX,f=d.clientY;switch(a.set([p,f]),l.set([p,f]),e._touchState){case 0:if(1!==u&&null!==o)return o&&(clearTimeout(o),o=null),e._currentDistanceMeasurement&&(e._currentDistanceMeasurement.destroy(),e._currentDistanceMeasurement=null),h(),void(e._touchState=0);var v=i.pick({canvasPos:l,snapping:e._snapping,snapToEdge:e._snapping});if(v&&v.snapped)r.set(v.worldPos),e.pointerCircle.start(v.snappedCanvasPos);else{var g=i.pick({canvasPos:l,pickSurface:!0});if(!g||!g.worldPos)return;r.set(g.worldPos),e.pointerCircle.start(g.canvasPos)}o=setTimeout((function(){1!==u||l[0]>a[0]+n||l[0]a[1]+n||l[1]a[0]+n||l[0]a[1]+n||l[1]a[0]+n||da[1]+n||pa[0]+n||da[1]+n||p1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),(s=t.call(this,"FastNav",e))._hideColorTexture=!1!==r.hideColorTexture,s._hidePBR=!1!==r.hidePBR,s._hideSAO=!1!==r.hideSAO,s._hideEdges=!1!==r.hideEdges,s._hideTransparentObjects=!!r.hideTransparentObjects,s._scaleCanvasResolution=!!r.scaleCanvasResolution,s._defaultScaleCanvasResolutionFactor=r.defaultScaleCanvasResolutionFactor||1,s._scaleCanvasResolutionFactor=r.scaleCanvasResolutionFactor||.6,s._delayBeforeRestore=!1!==r.delayBeforeRestore,s._delayBeforeRestoreSeconds=r.delayBeforeRestoreSeconds||.5;var n=1e3*s._delayBeforeRestoreSeconds,o=!1,a=function(){n=1e3*s._delayBeforeRestoreSeconds,o||(e.scene._renderer.setColorTextureEnabled(!s._hideColorTexture),e.scene._renderer.setPBREnabled(!s._hidePBR),e.scene._renderer.setSAOEnabled(!s._hideSAO),e.scene._renderer.setTransparentEnabled(!s._hideTransparentObjects),e.scene._renderer.setEdgesEnabled(!s._hideEdges),s._scaleCanvasResolution?e.scene.canvas.resolutionScale=s._scaleCanvasResolutionFactor:e.scene.canvas.resolutionScale=s._defaultScaleCanvasResolutionFactor,o=!0)},l=function(){e.scene.canvas.resolutionScale=s._defaultScaleCanvasResolutionFactor,e.scene._renderer.setEdgesEnabled(!0),e.scene._renderer.setColorTextureEnabled(!0),e.scene._renderer.setPBREnabled(!0),e.scene._renderer.setSAOEnabled(!0),e.scene._renderer.setTransparentEnabled(!0),o=!1};s._onCanvasBoundary=e.scene.canvas.on("boundary",a),s._onCameraMatrix=e.scene.camera.on("matrix",a),s._onSceneTick=e.scene.on("tick",(function(e){o&&(n-=e.deltaTime,(!s._delayBeforeRestore||n<=0)&&l())}));var u=!1;return s._onSceneMouseDown=e.scene.input.on("mousedown",(function(){u=!0})),s._onSceneMouseUp=e.scene.input.on("mouseup",(function(){u=!1})),s._onSceneMouseMove=e.scene.input.on("mousemove",(function(){u&&a()})),s}return C(i,[{key:"hideColorTexture",get:function(){return this._hideColorTexture},set:function(e){this._hideColorTexture=e}},{key:"hidePBR",get:function(){return this._hidePBR},set:function(e){this._hidePBR=e}},{key:"hideSAO",get:function(){return this._hideSAO},set:function(e){this._hideSAO=e}},{key:"hideEdges",get:function(){return this._hideEdges},set:function(e){this._hideEdges=e}},{key:"hideTransparentObjects",get:function(){return this._hideTransparentObjects},set:function(e){this._hideTransparentObjects=!1!==e}},{key:"scaleCanvasResolution",get:function(){return this._scaleCanvasResolution},set:function(e){this._scaleCanvasResolution=e}},{key:"defaultScaleCanvasResolutionFactor",get:function(){return this._defaultScaleCanvasResolutionFactor},set:function(e){this._defaultScaleCanvasResolutionFactor=e||1}},{key:"scaleCanvasResolutionFactor",get:function(){return this._scaleCanvasResolutionFactor},set:function(e){this._scaleCanvasResolutionFactor=e||.6}},{key:"delayBeforeRestore",get:function(){return this._delayBeforeRestore},set:function(e){this._delayBeforeRestore=e}},{key:"delayBeforeRestoreSeconds",get:function(){return this._delayBeforeRestoreSeconds},set:function(e){this._delayBeforeRestoreSeconds=null!=e?e:.5}},{key:"send",value:function(e,t){}},{key:"destroy",value:function(){this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),f(w(i.prototype),"destroy",this).call(this)}}]),i}(),Sh=function(){function e(){x(this,e)}return C(e,[{key:"getMetaModel",value:function(e,t,i){le.loadJSON(e,(function(e){t(e)}),(function(e){i(e)}))}},{key:"getGLTF",value:function(e,t,i){le.loadArraybuffer(e,(function(e){t(e)}),(function(e){i(e)}))}},{key:"getGLB",value:function(e,t,i){le.loadArraybuffer(e,(function(e){t(e)}),(function(e){i(e)}))}},{key:"getArrayBuffer",value:function(e,t,i,s){!function(e,t,i,s){var r=function(){};i=i||r,s=s||r;var n=/^data:(.*?)(;base64)?,(.*)$/,o=t.match(n);if(o){var a=!!o[2],l=o[3];l=window.decodeURIComponent(l),a&&(l=window.atob(l));try{for(var u=new ArrayBuffer(l.length),A=new Uint8Array(u),c=0;c0&&void 0!==arguments[0]?arguments[0]:{};x(this,e),this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale="en",this._messages={},this._locales=[],this._locale="en",this.messages=t.messages,this.locale=t.locale}return C(e,[{key:"messages",set:function(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire("updated",this)}},{key:"loadMessages",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t in e)this._messages[t]=e[t];this.messages=this._messages}},{key:"clearMessages",value:function(){this.messages={}}},{key:"locales",get:function(){return this._locales}},{key:"locale",get:function(){return this._locale},set:function(e){e=e||"de",this._locale!==e&&(this._locale=e,this.fire("updated",e))}},{key:"translate",value:function(e,t){var i=this._messages[this._locale];if(!i)return null;var s=Lh(e,i);return s?t?Rh(s,t):s:null}},{key:"translatePlurals",value:function(e,t,i){var s=this._messages[this._locale];if(!s)return null;var r=Lh(e,s);return(r=0===(t=parseInt(""+t,10))?r.zero:t>1?r.other:r.one)?(r=Rh(r,[t]),i&&(r=Rh(r,i)),r):null}},{key:"fire",value:function(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);var s=this._eventSubs[e];if(s)for(var r in s){if(s.hasOwnProperty(r))s[r].callback(t)}}},{key:"on",value:function(e,t){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new Q),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});var i=this._eventSubs[e];i||(i={},this._eventSubs[e]=i);var s=this._eventSubIDMap.addItem();i[s]={callback:t},this._eventSubEvents[s]=e;var r=this._events[e];return void 0!==r&&t(r),s}},{key:"off",value:function(e){if(null!=e&&this._eventSubEvents){var t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];var i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}}]),e}();function Lh(e,t){if(t[e])return t[e];for(var i=e.split("."),s=t,r=0,n=i.length;s&&r1&&void 0!==arguments[1]?arguments[1]:[];return e.replace(/\{\{|\}\}|\{(\d+)\}/g,(function(e,i){return"{{"===e?"{":"}}"===e?"}":t[i]}))}var Uh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).t=r.t,s}return C(i,[{key:"t",get:function(){return this._t},set:function(e){e=e||0,this._t=e<0?0:e>1?1:e}},{key:"tangent",get:function(){return this.getTangent(this._t)}},{key:"length",get:function(){var e=this._getLengths();return e[e.length-1]}},{key:"getTangent",value:function(e){var t=1e-4;void 0===e&&(e=this._t);var i=e-t,s=e+t;i<0&&(i=0),s>1&&(s=1);var r=this.getPoint(i),n=this.getPoint(s),o=$.subVec3(n,r,[]);return $.normalizeVec3(o,[])}},{key:"getPointAt",value:function(e){var t=this.getUToTMapping(e);return this.getPoint(t)}},{key:"getPoints",value:function(e){e||(e=5);var t,i=[];for(t=0;t<=e;t++)i.push(this.getPoint(t/e));return i}},{key:"_getLengths",value:function(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i,s=[],r=this.getPoint(0),n=0;for(s.push(0),i=1;i<=e;i++)t=this.getPoint(i/e),n+=$.lenVec3($.subVec3(t,r,[])),s.push(n),r=t;return this.cacheArcLengths=s,s}},{key:"_updateArcLengths",value:function(){this.needsUpdate=!0,this._getLengths()}},{key:"getUToTMapping",value:function(e,t){var i,s=this._getLengths(),r=0,n=s.length;i=t||e*s[n-1];for(var o,a=0,l=n-1;a<=l;)if((o=s[r=Math.floor(a+(l-a)/2)]-i)<0)a=r+1;else{if(!(o>0)){l=r;break}l=r-1}if(s[r=l]===i)return r/(n-1);var u=s[r];return(r+(i-u)/(s[r+1]-u))/(n-1)}}]),i}(),Oh=function(e){g(i,Uh);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).points=r.points,s.t=r.t,s}return C(i,[{key:"points",get:function(){return this._points},set:function(e){this._points=e||[]}},{key:"t",get:function(){return this._t},set:function(e){e=e||0,this._t=e<0?0:e>1?1:e}},{key:"point",get:function(){return this.getPoint(this._t)}},{key:"getPoint",value:function(e){var t=this.points;if(!(t.length<3)){var i=(t.length-1)*e,s=Math.floor(i),r=i-s,n=t[0===s?s:s-1],o=t[s],a=t[s>t.length-2?t.length-1:s+1],l=t[s>t.length-3?t.length-1:s+2],u=$.vec3();return u[0]=$.catmullRomInterpolate(n[0],o[0],a[0],l[0],r),u[1]=$.catmullRomInterpolate(n[1],o[1],a[1],l[1],r),u[2]=$.catmullRomInterpolate(n[2],o[2],a[2],l[2],r),u}this.error("Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].")}},{key:"getJSON",value:function(){return{points:points,t:this._t}}}]),i}(),Nh=$.vec3(),Qh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._frames=[],s._eyeCurve=new Oh(b(s)),s._lookCurve=new Oh(b(s)),s._upCurve=new Oh(b(s)),r.frames&&(s.addFrames(r.frames),s.smoothFrameTimes(1)),s}return C(i,[{key:"type",get:function(){return"CameraPath"}},{key:"frames",get:function(){return this._frames}},{key:"eyeCurve",get:function(){return this._eyeCurve}},{key:"lookCurve",get:function(){return this._lookCurve}},{key:"upCurve",get:function(){return this._upCurve}},{key:"saveFrame",value:function(e){var t=this.scene.camera;this.addFrame(e,t.eye,t.look,t.up)}},{key:"addFrame",value:function(e,t,i,s){var r={t:e,eye:t.slice(0),look:i.slice(0),up:s.slice(0)};this._frames.push(r),this._eyeCurve.points.push(r.eye),this._lookCurve.points.push(r.look),this._upCurve.points.push(r.up)}},{key:"addFrames",value:function(e){for(var t,i=0,s=e.length;i1?1:e,t.eye=this._eyeCurve.getPoint(e,Nh),t.look=this._lookCurve.getPoint(e,Nh),t.up=this._upCurve.getPoint(e,Nh)}},{key:"sampleFrame",value:function(e,t,i,s){e=e<0?0:e>1?1:e,this._eyeCurve.getPoint(e,t),this._lookCurve.getPoint(e,i),this._upCurve.getPoint(e,s)}},{key:"smoothFrameTimes",value:function(e){if(0!==this._frames.length){var t=$.vec3(),i=0;this._frames[0].t=0;for(var s=[],r=1,n=this._frames.length;r1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._look1=$.vec3(),s._eye1=$.vec3(),s._up1=$.vec3(),s._look2=$.vec3(),s._eye2=$.vec3(),s._up2=$.vec3(),s._orthoScale1=1,s._orthoScale2=1,s._flying=!1,s._flyEyeLookUp=!1,s._flyingEye=!1,s._flyingLook=!1,s._callback=null,s._callbackScope=null,s._time1=null,s._time2=null,s.easing=!1!==r.easing,s.duration=r.duration,s.fit=r.fit,s.fitFOV=r.fitFOV,s.trail=r.trail,s}return C(i,[{key:"type",get:function(){return"CameraFlightAnimation"}},{key:"flyTo",value:function(e,t,i){e=e||this.scene,this._flying&&this.stop(),this._flying=!1,this._flyingEye=!1,this._flyingLook=!1,this._flyingEyeLookUp=!1,this._callback=t,this._callbackScope=i;var s,r,n,o,a,l=this.scene.camera,u=!!e.projection&&e.projection!==l.projection;if(this._eye1[0]=l.eye[0],this._eye1[1]=l.eye[1],this._eye1[2]=l.eye[2],this._look1[0]=l.look[0],this._look1[1]=l.look[1],this._look1[2]=l.look[2],this._up1[0]=l.up[0],this._up1[1]=l.up[1],this._up1[2]=l.up[2],this._orthoScale1=l.ortho.scale,this._orthoScale2=e.orthoScale||this._orthoScale1,e.aabb)s=e.aabb;else if(6===e.length)s=e;else if(e.eye&&e.look||e.up)r=e.eye,n=e.look,o=e.up;else if(e.eye)r=e.eye;else if(e.look)n=e.look;else{var A=e;if((le.isNumeric(A)||le.isString(A))&&(a=A,!(A=this.scene.components[a])))return this.error("Component not found: "+le.inQuotes(a)),void(t&&(i?t.call(i):t()));u||(s=A.aabb||this.scene.aabb)}var c=e.poi;if(s){if(s[3]=1;e>1&&(e=1);var s=this.easing?i._ease(e,0,1,1):e,r=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?($.subVec3(r.eye,r.look,zh),r.eye=$.lerpVec3(s,0,1,this._eye1,this._eye2,jh),r.look=$.subVec3(jh,zh,Hh)):this._flyingLook&&(r.look=$.lerpVec3(s,0,1,this._look1,this._look2,Hh),r.up=$.lerpVec3(s,0,1,this._up1,this._up2,Gh)):this._flyingEyeLookUp&&(r.eye=$.lerpVec3(s,0,1,this._eye1,this._eye2,jh),r.look=$.lerpVec3(s,0,1,this._look1,this._look2,Hh),r.up=$.lerpVec3(s,0,1,this._up1,this._up2,Gh)),this._projection2){var n="ortho"===this._projection2?i._easeOutExpo(e,0,1,1):i._easeInCubic(e,0,1,1);r.customProjection.matrix=$.lerpMat4(n,0,1,this._projMatrix1,this._projMatrix2)}else r.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return r.ortho.scale=this._orthoScale2,void this.stop();_e.scheduleTask(this._update,this)}}},{key:"stop",value:function(){if(this._flying){this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);var e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire("stopped",!0,!0)}}},{key:"cancel",value:function(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire("canceled",!0,!0))}},{key:"duration",get:function(){return this._duration/1e3},set:function(e){this._duration=e?1e3*e:500,this.stop()}},{key:"fit",get:function(){return this._fit},set:function(e){this._fit=!1!==e}},{key:"fitFOV",get:function(){return this._fitFOV},set:function(e){this._fitFOV=e||45}},{key:"trail",get:function(){return this._trail},set:function(e){this._trail=!!e}},{key:"destroy",value:function(){this.stop(),f(w(i.prototype),"destroy",this).call(this)}}],[{key:"_ease",value:function(e,t,i,s){return-i*(e/=s)*(e-2)+t}},{key:"_easeInCubic",value:function(e,t,i,s){return i*(e/=s)*e*e+t}},{key:"_easeOutExpo",value:function(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}}]),i}(),Kh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._cameraFlightAnimation=new Wh(b(s)),s._t=0,s.state=i.SCRUBBING,s._playingFromT=0,s._playingToT=0,s._playingRate=r.playingRate||1,s._playingDir=1,s._lastTime=null,s.cameraPath=r.cameraPath,s._tick=s.scene.on("tick",s._updateT,b(s)),s}return C(i,[{key:"type",get:function(){return"CameraPathAnimation"}},{key:"_updateT",value:function(){var e=this._cameraPath;if(e){var t,s,r=performance.now(),n=this._lastTime?.001*(r-this._lastTime):0;if(this._lastTime=r,0!==n)switch(this.state){case i.SCRUBBING:return;case i.PLAYING:if(this._t+=this._playingRate*n,0===(t=this._cameraPath.frames.length)||this._playingDir<0&&this._t<=0||this._playingDir>0&&this._t>=this._cameraPath.frames[t-1].t)return this.state=i.SCRUBBING,this._t=this._cameraPath.frames[t-1].t,void this.fire("stopped");e.loadFrame(this._t);break;case i.PLAYING_TO:s=this._t+this._playingRate*n*this._playingDir,(this._playingDir<0&&s<=this._playingToT||this._playingDir>0&&s>=this._playingToT)&&(s=this._playingToT,this.state=i.SCRUBBING,this.fire("stopped")),this._t=s,e.loadFrame(this._t)}}}},{key:"_ease",value:function(e,t,i,s){return-i*(e/=s)*(e-2)+t}},{key:"cameraPath",get:function(){return this._cameraPath},set:function(e){this._cameraPath=e}},{key:"rate",get:function(){return this._playingRate},set:function(e){this._playingRate=e}},{key:"play",value:function(){this._cameraPath&&(this._lastTime=null,this.state=i.PLAYING)}},{key:"playToT",value:function(e){this._cameraPath&&(this._playingFromT=this._t,this._playingToT=e,this._playingDir=this._playingToT-this._playingFromT<0?-1:1,this._lastTime=null,this.state=i.PLAYING_TO)}},{key:"playToFrame",value:function(e){var t=this._cameraPath;if(t){var i=t.frames[e];i?this.playToT(i.t):this.error("playToFrame - frame index out of range: "+e)}}},{key:"flyToFrame",value:function(e,t){var s=this._cameraPath;if(s){var r=s.frames[e];r?(this.state=i.SCRUBBING,this._cameraFlightAnimation.flyTo(r,t)):this.error("flyToFrame - frame index out of range: "+e)}}},{key:"scrubToT",value:function(e){var t=this._cameraPath;t&&(this.scene.camera&&(this._t=e,t.loadFrame(this._t),this.state=i.SCRUBBING))}},{key:"scrubToFrame",value:function(e){var t=this._cameraPath;t&&(this.scene.camera&&(t.frames[e]?(t.loadFrame(this._t),this.state=i.SCRUBBING):this.error("playToFrame - frame index out of range: "+e)))}},{key:"stop",value:function(){this.state=i.SCRUBBING,this.fire("stopped")}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this),this.scene.off(this._tick)}}]),i}();Kh.STOPPED=0,Kh.SCRUBBING=1,Kh.PLAYING=2,Kh.PLAYING_TO=3;var Xh=$.vec3(),Jh=$.vec3();$.vec3();var Yh=$.vec3([0,-1,0]),Zh=$.vec4([0,0,0,1]),qh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._src=null,s._image=null,s._pos=$.vec3(),s._origin=$.vec3(),s._rtcPos=$.vec3(),s._dir=$.vec3(),s._size=1,s._imageSize=$.vec2(),s._texture=new On(b(s)),s._plane=new nn(b(s),{geometry:new Ti(b(s),Jn({center:[0,0,0],xSize:1,zSize:1,xSegments:10,zSegments:10})),material:new Ni(b(s),{diffuse:[0,0,0],ambient:[0,0,0],specular:[0,0,0],diffuseMap:s._texture,emissiveMap:s._texture,backfaces:!0}),clippable:r.clippable}),s._grid=new nn(b(s),{geometry:new Ti(b(s),Xn({size:1,divisions:10})),material:new Ni(b(s),{diffuse:[0,0,0],ambient:[0,0,0],emissive:[.2,.8,.2]}),position:[0,.001,0],clippable:r.clippable}),s._node=new wn(b(s),{rotation:[0,0,0],position:[0,0,0],scale:[1,1,1],clippable:!1,children:[s._plane,s._grid]}),s._gridVisible=!1,s.visible=!0,s.gridVisible=r.gridVisible,s.position=r.position,s.rotation=r.rotation,s.dir=r.dir,s.size=r.size,s.collidable=r.collidable,s.clippable=r.clippable,s.pickable=r.pickable,s.opacity=r.opacity,r.image?s.image=r.image:s.src=r.src,s}return C(i,[{key:"visible",get:function(){return this._plane.visible},set:function(e){this._plane.visible=e,this._grid.visible=this._gridVisible&&e}},{key:"gridVisible",get:function(){return this._gridVisible},set:function(e){e=!1!==e,this._gridVisible=e,this._grid.visible=this._gridVisible&&this.visible}},{key:"image",get:function(){return this._image},set:function(e){this._image=e,this._image&&(this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}},{key:"src",get:function(){return this._src},set:function(e){var t=this;if(this._src=e,this._src){this._image=null;var i=new Image;i.onload=function(){t._texture.image=i,t._imageSize[0]=i.width,t._imageSize[1]=i.height,t._updatePlaneSizeFromImage()},i.src=this._src}}},{key:"position",get:function(){return this._pos},set:function(e){this._pos.set(e||[0,0,0]),Re(this._pos,this._origin,this._rtcPos),this._node.origin=this._origin,this._node.position=this._rtcPos}},{key:"rotation",get:function(){return this._node.rotation},set:function(e){this._node.rotation=e}},{key:"size",get:function(){return this._size},set:function(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}},{key:"dir",get:function(){return this._dir},set:function(e){if(this._dir.set(e||[0,0,-1]),e){var t=this.scene.center,i=[-this._dir[0],-this._dir[1],-this._dir[2]];$.subVec3(t,this.position,Xh);var s=-$.dotVec3(i,Xh);$.normalizeVec3(i),$.mulVec3Scalar(i,s,Jh),$.vec3PairToQuaternion(Yh,e,Zh),this._node.quaternion=Zh}}},{key:"collidable",get:function(){return this._node.collidable},set:function(e){this._node.collidable=!1!==e}},{key:"clippable",get:function(){return this._node.clippable},set:function(e){this._node.clippable=!1!==e}},{key:"pickable",get:function(){return this._node.pickable},set:function(e){this._node.pickable=!1!==e}},{key:"opacity",get:function(){return this._node.opacity},set:function(e){this._node.opacity=e}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this)}},{key:"_updatePlaneSizeFromImage",value:function(){var e=this._size,t=this._imageSize[0],i=this._imageSize[1];if(t>i){var s=i/t;this._node.scale=[e,1,e*s]}else{var r=t/i;this._node.scale=[e*r,1,e]}}}]),i}(),$h=function(e){g(i,yi);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,i);var n=b(s=t.call(this,e,r));s._shadowRenderBuf=null,s._shadowViewMatrix=null,s._shadowProjMatrix=null,s._shadowViewMatrixDirty=!0,s._shadowProjMatrixDirty=!0;var o=s.scene.camera,a=s.scene.canvas;return s._onCameraViewMatrix=o.on("viewMatrix",(function(){s._shadowViewMatrixDirty=!0})),s._onCameraProjMatrix=o.on("projMatrix",(function(){s._shadowProjMatrixDirty=!0})),s._onCanvasBoundary=a.on("boundary",(function(){s._shadowProjMatrixDirty=!0})),s._state=new qt({type:"point",pos:$.vec3([1,1,1]),color:$.vec3([.7,.7,.8]),intensity:1,attenuation:[0,0,0],space:r.space||"view",castsShadow:!1,getShadowViewMatrix:function(){if(n._shadowViewMatrixDirty){n._shadowViewMatrix||(n._shadowViewMatrix=$.identityMat4());var e=n._state.pos,t=o.look,i=o.up;$.lookAtMat4v(e,t,i,n._shadowViewMatrix),n._shadowViewMatrixDirty=!1}return n._shadowViewMatrix},getShadowProjMatrix:function(){if(n._shadowProjMatrixDirty){n._shadowProjMatrix||(n._shadowProjMatrix=$.identityMat4());var e=n.scene.canvas.canvas;$.perspectiveMat4(Math.PI/180*70,e.clientWidth/e.clientHeight,.1,500,n._shadowProjMatrix),n._shadowProjMatrixDirty=!1}return n._shadowProjMatrix},getShadowRenderBuf:function(){return n._shadowRenderBuf||(n._shadowRenderBuf=new Wt(n.scene.canvas.canvas,n.scene.canvas.gl,{size:[1024,1024]})),n._shadowRenderBuf}}),s.pos=r.pos,s.color=r.color,s.intensity=r.intensity,s.constantAttenuation=r.constantAttenuation,s.linearAttenuation=r.linearAttenuation,s.quadraticAttenuation=r.quadraticAttenuation,s.castsShadow=r.castsShadow,s.scene._lightCreated(b(s)),s}return C(i,[{key:"type",get:function(){return"PointLight"}},{key:"pos",get:function(){return this._state.pos},set:function(e){this._state.pos.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}},{key:"color",get:function(){return this._state.color},set:function(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}},{key:"intensity",get:function(){return this._state.intensity},set:function(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}},{key:"constantAttenuation",get:function(){return this._state.attenuation[0]},set:function(e){this._state.attenuation[0]=e||0,this.glRedraw()}},{key:"linearAttenuation",get:function(){return this._state.attenuation[1]},set:function(e){this._state.attenuation[1]=e||0,this.glRedraw()}},{key:"quadraticAttenuation",get:function(){return this._state.attenuation[2]},set:function(e){this._state.attenuation[2]=e||0,this.glRedraw()}},{key:"castsShadow",get:function(){return this._state.castsShadow},set:function(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}},{key:"destroy",value:function(){var e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),f(w(i.prototype),"destroy",this).call(this),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}}]),i}();function ed(e){return 0==(e&e-1)}function td(e){--e;for(var t=1;t<32;t<<=1)e|=e>>t;return e+1}var id=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,i);var n=(s=t.call(this,e,r)).scene.canvas.gl;return s._state=new qt({texture:new Dn({gl:n,target:n.TEXTURE_CUBE_MAP}),flipY:s._checkFlipY(r.minFilter),encoding:s._checkEncoding(r.encoding),minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,mipmaps:!0}),s._src=r.src,s._images=[],s._loadSrc(r.src),se.memory.textures++,s}return C(i,[{key:"type",get:function(){return"CubeTexture"}},{key:"_checkFlipY",value:function(e){return!!e}},{key:"_checkEncoding",value:function(e){return 3e3!==(e=e||3e3)&&3001!==e&&(this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),e=3e3),e}},{key:"_webglContextRestored",value:function(){this.scene.canvas.gl,this._state.texture=null,this._src&&this._loadSrc(this._src)}},{key:"_loadSrc",value:function(e){var t=this,i=this.scene.canvas.gl;this._images=[];for(var s=!1,r=0,n=function(n){var o,a,l=new Image;l.onload=(o=l,a=n,function(){if(!s&&(o=function(e){if(!ed(e.width)||!ed(e.height)){var t=document.createElement("canvas");t.width=td(e.width),t.height=td(e.height),t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),e=t}return e}(o),t._images[a]=o,6==++r)){var e=t._state.texture;e||(e=new Dn({gl:i,target:i.TEXTURE_CUBE_MAP}),t._state.texture=e),e.setImage(t._images,t._state),t.fire("loaded",t._src,!1),t.glRedraw()}}),l.onerror=function(){s=!0},l.src=e[n]},o=0;o1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).scene._lightsState.addReflectionMap(s._state),s.scene._reflectionMapCreated(b(s)),s}return C(i,[{key:"type",get:function(){return"ReflectionMap"}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this),this.scene._reflectionMapDestroyed(this)}}]),i}(),rd=function(e){g(i,id);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).scene._lightMapCreated(b(s)),s}return C(i,[{key:"type",get:function(){return"LightMap"}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this),this.scene._lightMapDestroyed(this)}}]),i}(),nd=function(e){g(i,et);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,{entity:r.entity,occludable:r.occludable,worldPos:r.worldPos}))._occluded=!1,s._visible=!0,s._src=null,s._image=null,s._pos=$.vec3(),s._origin=$.vec3(),s._rtcPos=$.vec3(),s._dir=$.vec3(),s._size=1,s._imageSize=$.vec2(),s._texture=new On(b(s),{src:r.src}),s._geometry=new Ti(b(s),{primitive:"triangles",positions:[3,3,0,-3,3,0,-3,-3,0,3,-3,0],normals:[-1,0,0,-1,0,0,-1,0,0,-1,0,0],uv:[1,-1,0,-1,0,0,1,0],indices:[0,1,2,0,2,3]}),s._mesh=new nn(b(s),{geometry:s._geometry,material:new Ni(b(s),{ambient:[.9,.3,.9],shininess:30,diffuseMap:s._texture,backfaces:!0}),scale:[1,1,1],position:r.worldPos,rotation:[90,0,0],billboard:"spherical",occluder:!1}),s.visible=!0,s.collidable=r.collidable,s.clippable=r.clippable,s.pickable=r.pickable,s.opacity=r.opacity,s.size=r.size,r.image?s.image=r.image:s.src=r.src,s}return C(i,[{key:"_setVisible",value:function(e){this._occluded=!e,this._mesh.visible=this._visible&&!this._occluded,f(w(i.prototype),"_setVisible",this).call(this,e)}},{key:"visible",get:function(){return this._visible},set:function(e){this._visible=null==e||e,this._mesh.visible=this._visible&&!this._occluded}},{key:"image",get:function(){return this._image},set:function(e){this._image=e,this._image&&(this._imageSize[0]=this._image.width,this._imageSize[1]=this._image.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}},{key:"src",get:function(){return this._src},set:function(e){var t=this;if(this._src=e,this._src){this._image=null;var i=new Image;i.onload=function(){t._texture.image=i,t._imageSize[0]=i.width,t._imageSize[1]=i.height,t._updatePlaneSizeFromImage()},i.src=this._src}}},{key:"size",get:function(){return this._size},set:function(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}},{key:"collidable",get:function(){return this._mesh.collidable},set:function(e){this._mesh.collidable=!1!==e}},{key:"clippable",get:function(){return this._mesh.clippable},set:function(e){this._mesh.clippable=!1!==e}},{key:"pickable",get:function(){return this._mesh.pickable},set:function(e){this._mesh.pickable=!1!==e}},{key:"opacity",get:function(){return this._mesh.opacity},set:function(e){this._mesh.opacity=e}},{key:"_updatePlaneSizeFromImage",value:function(){var e=.5*this._size,t=this._imageSize[0],i=this._imageSize[1],s=i/t;this._geometry.positions=t>i?[e,e*s,0,-e,e*s,0,-e,-e*s,0,e,-e*s,0]:[e/s,e,0,-e/s,e,0,-e/s,-e,0,e/s,-e,0]}}]),i}(),od=function(){function e(t){x(this,e),this._eye=$.vec3(),this._look=$.vec3(),this._up=$.vec3(),this._projection={},t&&this.saveCamera(t)}return C(e,[{key:"saveCamera",value:function(e){var t=e.camera,i=t.project;switch(this._eye.set(t.eye),this._look.set(t.look),this._up.set(t.up),t.projection){case"perspective":this._projection={projection:"perspective",fov:i.fov,fovAxis:i.fovAxis,near:i.near,far:i.far};break;case"ortho":this._projection={projection:"ortho",scale:i.scale,near:i.near,far:i.far};break;case"frustum":this._projection={projection:"frustum",left:i.left,right:i.right,top:i.top,bottom:i.bottom,near:i.near,far:i.far};break;case"custom":this._projection={projection:"custom",matrix:i.matrix.slice()}}}},{key:"restoreCamera",value:function(e,t){var i=e.camera,s=this._projection;function r(){switch(s.type){case"perspective":i.perspective.fov=s.fov,i.perspective.fovAxis=s.fovAxis,i.perspective.near=s.near,i.perspective.far=s.far;break;case"ortho":i.ortho.scale=s.scale,i.ortho.near=s.near,i.ortho.far=s.far;break;case"frustum":i.frustum.left=s.left,i.frustum.right=s.right,i.frustum.top=s.top,i.frustum.bottom=s.bottom,i.frustum.near=s.near,i.frustum.far=s.far;break;case"custom":i.customProjection.matrix=s.matrix}}t?e.viewer.cameraFlight.flyTo({eye:this._eye,look:this._look,up:this._up,orthoScale:s.scale,projection:s.projection},(function(){r(),t()})):(i.eye=this._eye,i.look=this._look,i.up=this._up,r(),i.projection=s.projection)}}]),e}(),ad=$.vec3(),ld=function(){function e(t){if(x(this,e),this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsOpacity=[],this.numObjects=0,t){var i=t.metaScene.scene;this.saveObjects(i,t)}}return C(e,[{key:"saveObjects",value:function(e,t,i){this.numObjects=0,this._mask=i?le.apply(i,{}):null;for(var s=!i||i.visible,r=!i||i.edges,n=!i||i.xrayed,o=!i||i.highlighted,a=!i||i.selected,l=!i||i.clippable,u=!i||i.pickable,A=!i||i.colorize,c=!i||i.opacity,h=t.metaObjects,d=e.objects,p=0,f=h.length;p1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).v0=r.v0,s.v1=r.v1,s.v2=r.v2,s.v3=r.v3,s.t=r.t,s}return C(i,[{key:"v0",get:function(){return this._v0},set:function(e){this._v0=e||$.vec3([0,0,0])}},{key:"v1",get:function(){return this._v1},set:function(e){this._v1=e||$.vec3([0,0,0])}},{key:"v2",get:function(){return this._v2},set:function(e){this._v2=e||$.vec3([0,0,0])}},{key:"v3",get:function(){return this._v3},set:function(e){this.fire("v3",this._v3=e||$.vec3([0,0,0]))}},{key:"t",get:function(){return this._t},set:function(e){e=e||0,this._t=e<0?0:e>1?1:e}},{key:"point",get:function(){return this.getPoint(this._t)}},{key:"getPoint",value:function(e){var t=$.vec3();return t[0]=$.b3(e,this._v0[0],this._v1[0],this._v2[0],this._v3[0]),t[1]=$.b3(e,this._v0[1],this._v1[1],this._v2[1],this._v3[1]),t[2]=$.b3(e,this._v0[2],this._v1[2],this._v2[2],this._v3[2]),t}},{key:"getJSON",value:function(){return{v0:this._v0,v1:this._v1,v2:this._v2,v3:this._v3,t:this._t}}}]),i}(),hd=function(e){g(i,Uh);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._cachedLengths=[],s._dirty=!0,s._curves=[],s._t=0,s._dirtySubs=[],s._destroyedSubs=[],s.curves=r.curves||[],s.t=r.t,s}return C(i,[{key:"addCurve",value:function(e){this._curves.push(e),this._dirty=!0}},{key:"curves",get:function(){return this._curves},set:function(e){var t,i,s;for(e=e||[],i=0,s=this._curves.length;i1?1:e}},{key:"point",get:function(){return this.getPoint(this._t)}},{key:"length",get:function(){var e=this._getCurveLengths();return e[e.length-1]}},{key:"getPoint",value:function(e){for(var t,i=e*this.length,s=this._getCurveLengths(),r=0;r=i){var n=1-(s[r]-i)/(t=this._curves[r]).length;return t.getPointAt(n)}r++}return null}},{key:"_getCurveLengths",value:function(){if(!this._dirty)return this._cachedLengths;var e,t=[],i=0,s=this._curves.length;for(e=0;e1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).v0=r.v0,s.v1=r.v1,s.v2=r.v2,s.t=r.t,s}return C(i,[{key:"v0",get:function(){return this._v0},set:function(e){this._v0=e||$.vec3([0,0,0])}},{key:"v1",get:function(){return this._v1},set:function(e){this._v1=e||$.vec3([0,0,0])}},{key:"v2",get:function(){return this._v2},set:function(e){this._v2=e||$.vec3([0,0,0])}},{key:"t",get:function(){return this._t},set:function(e){e=e||0,this._t=e<0?0:e>1?1:e}},{key:"point",get:function(){return this.getPoint(this._t)}},{key:"getPoint",value:function(e){var t=$.vec3();return t[0]=$.b2(e,this._v0[0],this._v1[0],this._v2[0]),t[1]=$.b2(e,this._v0[1],this._v1[1],this._v2[1]),t[2]=$.b2(e,this._v0[2],this._v1[2],this._v2[2]),t}},{key:"getJSON",value:function(){return{v0:this._v0,v1:this._v1,v2:this._v2,t:this._t}}}]),i}(),pd=function(e){g(i,hh);var t=_(i);function i(e){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),t.call(this,e,s)}return C(i)}(),fd=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._skyboxMesh=new nn(b(s),{geometry:new Ti(b(s),{primitive:"triangles",positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),background:!0,scale:[2e3,2e3,2e3],rotation:[0,-90,0],material:new Ni(b(s),{ambient:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],emissive:[1,1,1],emissiveMap:new On(b(s),{src:r.src,flipY:!0,wrapS:"clampToEdge",wrapT:"clampToEdge",encoding:r.encoding||"sRGB"}),backfaces:!0}),visible:!1,pickable:!1,clippable:!1,collidable:!1}),s.size=r.size,s.active=r.active,s}return C(i,[{key:"size",get:function(){return this._size},set:function(e){this._size=e||1e3,this._skyboxMesh.scale=[this._size,this._size,this._size]}},{key:"active",get:function(){return this._skyboxMesh.visible},set:function(e){this._skyboxMesh.visible=e}}]),i}(),vd=function(){function e(){x(this,e)}return C(e,[{key:"transcode",value:function(e,t){}},{key:"destroy",value:function(){}}]),e}(),gd=$.vec4(),md=$.vec4(),_d=$.vec3(),yd=$.vec3(),bd=$.vec3(),wd=$.vec4(),Bd=$.vec4(),xd=$.vec4(),Pd=function(){function e(t){x(this,e),this._scene=t}return C(e,[{key:"dollyToCanvasPos",value:function(e,t,i){var s=!1,r=this._scene.camera;if(e){var n=$.subVec3(e,r.eye,_d);s=$.lenVec3(n)0&&void 0!==arguments[0]?arguments[0]:{};this.destroyPivotSphere(),this._pivotSphereEnabled=!0,e.size&&(this._pivotSphereSize=e.size);var t=e.color||[1,0,0];this._pivotSphereMaterial=new Ni(this._scene,{emissive:t,ambient:t,specular:[0,0,0],diffuse:[0,0,0]})}},{key:"disablePivotSphere",value:function(){this.destroyPivotSphere(),this._pivotSphereEnabled=!1}},{key:"startPivot",value:function(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;var e=this._scene.camera,t=$.lookAtMat4v(e.eye,e.look,e.worldUp);$.transformPoint3(t,this.getPivotPos(),this._cameraOffset);var i=this.getPivotPos();this._cameraOffset[2]+=$.distVec3(e.eye,i),t=$.inverseMat4(t);var s=$.transformVec3(t,this._cameraOffset),r=$.vec3();if($.subVec3(e.eye,i,r),$.addVec3(r,s),e.zUp){var n=r[1];r[1]=r[2],r[2]=n}this._radius=$.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}},{key:"_cameraLookingDownwards",value:function(){var e=this._scene.camera,t=$.normalizeVec3($.subVec3(e.look,e.eye,Cd)),i=$.cross3Vec3(t,e.worldUp,Md);return $.sqLenVec3(i)<=1e-4}},{key:"getPivoting",value:function(){return this._pivoting}},{key:"setPivotPos",value:function(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}},{key:"setCanvasPivotPos",value:function(e){var t=this._scene.camera,i=Math.abs($.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),n=s.subarray(12),o=[0,0,-1,1],a=$.dotVec4(o,r)/$.dotVec4(o,n),l=Fd;t.project.unproject(e,a,kd,Id,l);var u=$.normalizeVec3($.subVec3(l,t.eye,Cd)),A=$.addVec3(t.eye,$.mulVec3Scalar(u,i,Md),Ed);this.setPivotPos(A)}},{key:"getPivotPos",value:function(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}},{key:"continuePivot",value:function(e,t){if(this._pivoting&&(0!==e||0!==t)){var i=this._scene.camera,s=-e,r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=$.clamp(this._polar,.001,Math.PI-.001);var n=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){var o=n[1];n[1]=n[2],n[2]=o}var a=$.lenVec3($.subVec3(i.look,i.eye,$.vec3())),l=this.getPivotPos();$.addVec3(n,l);var u=$.lookAtMat4v(n,l,i.worldUp);u=$.inverseMat4(u);var A=$.transformVec3(u,this._cameraOffset);u[12]-=A[0],u[13]-=A[1],u[14]-=A[2];var c=[u[8],u[9],u[10]];i.eye=[u[12],u[13],u[14]],$.subVec3(i.eye,$.mulVec3Scalar(c,a),i.look),i.up=[u[4],u[5],u[6]],this.showPivot()}}},{key:"showPivot",value:function(){this._shown||(this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility="visible"),this._pivotSphereEnabled&&(this.destroyPivotSphere(),this.createPivotSphere()),this._shown=!0)}},{key:"hidePivot",value:function(){this._shown&&(this._pivotElement&&(this._pivotElement.style.visibility="hidden"),this._pivotSphereEnabled&&this.destroyPivotSphere(),this._shown=!1)}},{key:"endPivot",value:function(){this._pivoting=!1}},{key:"destroy",value:function(){this.destroyPivotSphere(),this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}]),e}(),Sd=function(){function e(t,i){x(this,e),this._scene=t.scene,this._cameraControl=t,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=i,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick=!1,this.pickCursorPos=$.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._lastHash=null,this._needFireEvents=0}return C(e,[{key:"update",value:function(){if(this._configs.pointerEnabled&&(this.schedulePickEntity||this.schedulePickSurface)){var e="".concat(~~this.pickCursorPos[0],"-").concat(~~this.pickCursorPos[1],"-").concat(this.scheduleSnapOrPick,"-").concat(this.schedulePickSurface,"-").concat(this.schedulePickEntity);if(this._lastHash!==e){this.picked=!1,this.pickedSurface=!1,this.snappedOrPicked=!1,this.hoveredSnappedOrSurfaceOff=!1;var t=this._cameraControl.hasSubs("hoverSurface");if(this.scheduleSnapOrPick){var i=this._scene.pick({canvasPos:this.pickCursorPos,snapRadius:this._configs.snapRadius,snapToVertex:this._configs.snapToVertex,snapToEdge:this._configs.snapToEdge});i&&(i.snappedToEdge||i.snappedToVertex)?(this.snapPickResult=i,this.snappedOrPicked=!0,this._needFireEvents++):(this.schedulePickSurface=!0,this.snapPickResult=null)}if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){var s=this.pickResult.canvasPos;if(s[0]===this.pickCursorPos[0]&&s[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents+=t?1:0,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.hoveredSnappedOrSurfaceOff=!0,void(this.scheduleSnapOrPick=!1)}if(this.schedulePickEntity&&this.pickResult&&(this.pickResult.canvasPos||this.pickResult.snappedCanvasPos)){var r=this.pickResult.canvasPos||this.pickResult.snappedCanvasPos;if(r[0]===this.pickCursorPos[0]&&r[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface||this.scheduleSnapOrPick&&!this.snapPickResult?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult?(this.picked=!0,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.pickedSurface=!0,this._needFireEvents++):this.scheduleSnapOrPick&&(this.hoveredSnappedOrSurfaceOff=!0,this._needFireEvents++)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents++)),this.scheduleSnapOrPick=!1,this.schedulePickEntity=!1,this.schedulePickSurface=!1}}}},{key:"fireEvents",value:function(){if(0!==this._needFireEvents){if(this.hoveredSnappedOrSurfaceOff&&this._cameraControl.fire("hoverSnapOrSurfaceOff",{canvasPos:this.pickCursorPos,pointerPos:this.pickCursorPos},!0),this.snappedOrPicked)if(this.snapPickResult){var e=new xt;e.entity=this.snapPickResult.entity,e.snappedToVertex=this.snapPickResult.snappedToVertex,e.snappedToEdge=this.snapPickResult.snappedToEdge,e.worldPos=this.snapPickResult.worldPos,e.canvasPos=this.pickCursorPos,e.snappedCanvasPos=this.snapPickResult.snappedCanvasPos,this._cameraControl.fire("hoverSnapOrSurface",e,!0),this.snapPickResult=null}else this._cameraControl.fire("hoverSnapOrSurface",this.pickResult,!0);if(this.picked&&this.pickResult&&(this.pickResult.entity||this.pickResult.worldPos)){if(this.pickResult.entity){var t=this.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire("hoverEnter",this.pickResult,!0),this._lastPickedEntityId=t)}this._cameraControl.fire("hover",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire("hoverSurface",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire("hoverOff",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=0}}}]),e}(),Td=$.vec2(),Ld=function(){function e(t,i,s,r,n){x(this,e),this._scene=t;var o,a,l,u=i.pickController,A=0,c=0,h=0,d=0,p=!1,f=$.vec3(),v=!0,g=this._scene.canvas.canvas,m=[];function _(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];g.style.cursor="move",y(),e&&b()}function y(){A=r.pointerCanvasPos[0],c=r.pointerCanvasPos[1],h=r.pointerCanvasPos[0],d=r.pointerCanvasPos[1]}function b(){u.pickCursorPos=r.pointerCanvasPos,u.schedulePickSurface=!0,u.update(),u.picked&&u.pickedSurface&&u.pickResult&&u.pickResult.worldPos?(p=!0,f.set(u.pickResult.worldPos)):p=!1}document.addEventListener("keydown",this._documentKeyDownHandler=function(e){if(s.active&&s.pointerEnabled&&t.input.keyboardEnabled){var i=e.keyCode;m[i]=!0}}),document.addEventListener("keyup",this._documentKeyUpHandler=function(e){if(s.active&&s.pointerEnabled&&t.input.keyboardEnabled){var i=e.keyCode;m[i]=!1}}),g.addEventListener("mousedown",this._mouseDownHandler=function(e){if(s.active&&s.pointerEnabled)switch(e.which){case 1:m[t.input.KEY_SHIFT]||s.planView?(o=!0,_()):(o=!0,_(!1));break;case 2:a=!0,_();break;case 3:l=!0,s.panRightClick&&_()}}),document.addEventListener("mousemove",this._documentMouseMoveHandler=function(e){if(s.active&&s.pointerEnabled&&(o||a||l)){var i=t.canvas.boundary,u=i[2],h=i[3],d=r.pointerCanvasPos[0],v=r.pointerCanvasPos[1],g=m[t.input.KEY_SHIFT]||s.planView||!s.panRightClick&&a||s.panRightClick&&l,_=document.pointerLockElement?e.movementX:d-A,y=document.pointerLockElement?e.movementY:v-c;if(g){var b=t.camera;if("perspective"===b.projection){var w=Math.abs(p?$.lenVec3($.subVec3(f,t.camera.eye,[])):t.camera.eyeLookDist)*Math.tan(b.perspective.fov/2*Math.PI/180);n.panDeltaX+=1.5*_*w/h,n.panDeltaY+=1.5*y*w/h}else n.panDeltaX+=.5*b.ortho.scale*(_/h),n.panDeltaY+=.5*b.ortho.scale*(y/h)}else!o||a||l||s.planView||(s.firstPerson?(n.rotateDeltaY-=_/u*s.dragRotationRate/2,n.rotateDeltaX+=y/h*(s.dragRotationRate/4)):(n.rotateDeltaY-=_/u*(1.5*s.dragRotationRate),n.rotateDeltaX+=y/h*(1.5*s.dragRotationRate)));A=d,c=v}}),g.addEventListener("mousemove",this._canvasMouseMoveHandler=function(e){s.active&&s.pointerEnabled&&r.mouseover&&(v=!0)}),document.addEventListener("mouseup",this._documentMouseUpHandler=function(e){if(s.active&&s.pointerEnabled)switch(e.which){case 1:case 2:case 3:o=!1,a=!1,l=!1}}),g.addEventListener("mouseup",this._mouseUpHandler=function(e){if(s.active&&s.pointerEnabled){if(3===e.which){!function(e,t){if(e){for(var i=e.target,s=0,r=0,n=0,o=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,n+=i.scrollLeft,o+=i.scrollTop,i=i.offsetParent;t[0]=e.pageX+n-s,t[1]=e.pageY+o-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,Td);var t=Td[0],r=Td[1];Math.abs(t-h)<3&&Math.abs(r-d)<3&&i.cameraControl.fire("rightClick",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:Td,event:e},!0)}g.style.removeProperty("cursor")}}),g.addEventListener("mouseenter",this._mouseEnterHandler=function(){s.active&&s.pointerEnabled});var w=1/60,B=null;g.addEventListener("wheel",this._mouseWheelHandler=function(e){if(s.active&&s.pointerEnabled){var t=performance.now()/1e3,i=null!==B?t-B:0;B=t,i>.05&&(i=.05),i0?i.cameraFlight.flyTo(Vd,(function(){i.pivotController.getPivoting()&&s.followPointer&&i.pivotController.showPivot()})):(i.cameraFlight.jumpTo(Vd),i.pivotController.getPivoting()&&s.followPointer&&i.pivotController.showPivot())}}}))}return C(e,[{key:"reset",value:function(){}},{key:"destroy",value:function(){this._scene.input.off(this._onSceneKeyDown)}}]),e}(),jd=function(){function e(t,i,s,r,n){var o=this;x(this,e),this._scene=t;var a=i.pickController,l=i.pivotController,u=i.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;var A=!1,c=!1,h=this._scene.canvas.canvas,d=function(e){var s;e&&e.worldPos&&(s=e.worldPos);var r=e&&e.entity?e.entity.aabb:t.aabb;if(s){var n=t.camera;$.subVec3(n.eye,n.look,[]),i.cameraFlight.flyTo({aabb:r})}else i.cameraFlight.flyTo({aabb:r})},p=t.tickify(this._canvasMouseMoveHandler=function(e){if(s.active&&s.pointerEnabled&&!A&&!c){var i=u.hasSubs("hover"),n=u.hasSubs("hoverEnter"),l=u.hasSubs("hoverOut"),h=u.hasSubs("hoverOff"),d=u.hasSubs("hoverSurface"),p=u.hasSubs("hoverSnapOrSurface");if(i||n||l||h||d||p)if(a.pickCursorPos=r.pointerCanvasPos,a.schedulePickEntity=!0,a.schedulePickSurface=d,a.scheduleSnapOrPick=p,a.update(),a.pickResult){if(a.pickResult.entity){var f=a.pickResult.entity.id;o._lastPickedEntityId!==f&&(void 0!==o._lastPickedEntityId&&u.fire("hoverOut",{entity:t.objects[o._lastPickedEntityId]},!0),u.fire("hoverEnter",a.pickResult,!0),o._lastPickedEntityId=f)}u.fire("hover",a.pickResult,!0),(a.pickResult.worldPos||a.pickResult.snappedWorldPos)&&u.fire("hoverSurface",a.pickResult,!0)}else void 0!==o._lastPickedEntityId&&(u.fire("hoverOut",{entity:t.objects[o._lastPickedEntityId]},!0),o._lastPickedEntityId=void 0),u.fire("hoverOff",{canvasPos:a.pickCursorPos},!0)}});h.addEventListener("mousemove",p),h.addEventListener("mousedown",this._canvasMouseDownHandler=function(e){if(1===e.which&&(A=!0),3===e.which&&(c=!0),1===e.which&&s.active&&s.pointerEnabled&&(r.mouseDownClientX=e.clientX,r.mouseDownClientY=e.clientY,r.mouseDownCursorX=r.pointerCanvasPos[0],r.mouseDownCursorY=r.pointerCanvasPos[1],!s.firstPerson&&s.followPointer&&(a.pickCursorPos=r.pointerCanvasPos,a.schedulePickSurface=!0,a.update(),1===e.which))){var i=a.pickResult;i&&i.worldPos?(l.setPivotPos(i.worldPos),l.startPivot()):(s.smartPivot?l.setCanvasPivotPos(r.pointerCanvasPos):l.setPivotPos(t.camera.look),l.startPivot())}}),document.addEventListener("mouseup",this._documentMouseUpHandler=function(e){1===e.which&&(A=!1),3===e.which&&(c=!1),l.getPivoting()&&l.endPivot()}),h.addEventListener("mouseup",this._canvasMouseUpHandler=function(e){if(s.active&&s.pointerEnabled&&(1===e.which&&(l.hidePivot(),!(Math.abs(e.clientX-r.mouseDownClientX)>3||Math.abs(e.clientY-r.mouseDownClientY)>3)))){var n=u.hasSubs("picked"),A=u.hasSubs("pickedNothing"),c=u.hasSubs("pickedSurface"),h=u.hasSubs("doublePicked"),p=u.hasSubs("doublePickedSurface"),f=u.hasSubs("doublePickedNothing");if(!(s.doublePickFlyTo||h||p||f))return(n||A||c)&&(a.pickCursorPos=r.pointerCanvasPos,a.schedulePickEntity=!0,a.schedulePickSurface=c,a.update(),a.pickResult?(u.fire("picked",a.pickResult,!0),a.pickedSurface&&u.fire("pickedSurface",a.pickResult,!0)):u.fire("pickedNothing",{canvasPos:r.pointerCanvasPos},!0)),void(o._clicks=0);if(o._clicks++,1===o._clicks){a.pickCursorPos=r.pointerCanvasPos,a.schedulePickEntity=s.doublePickFlyTo,a.schedulePickSurface=c,a.update();var v=a.pickResult,g=a.pickedSurface;o._timeout=setTimeout((function(){v?(u.fire("picked",v,!0),g&&(u.fire("pickedSurface",v,!0),!s.firstPerson&&s.followPointer&&(i.pivotController.setPivotPos(v.worldPos),i.pivotController.startPivot()&&i.pivotController.showPivot()))):u.fire("pickedNothing",{canvasPos:r.pointerCanvasPos},!0),o._clicks=0}),s.doubleClickTimeFrame)}else{if(null!==o._timeout&&(window.clearTimeout(o._timeout),o._timeout=null),a.pickCursorPos=r.pointerCanvasPos,a.schedulePickEntity=s.doublePickFlyTo||h||p,a.schedulePickSurface=a.schedulePickEntity&&p,a.update(),a.pickResult){if(u.fire("doublePicked",a.pickResult,!0),a.pickedSurface&&u.fire("doublePickedSurface",a.pickResult,!0),s.doublePickFlyTo&&(d(a.pickResult),!s.firstPerson&&s.followPointer)){var m=a.pickResult.entity.aabb,_=$.getAABB3Center(m);i.pivotController.setPivotPos(_),i.pivotController.startPivot()&&i.pivotController.showPivot()}}else if(u.fire("doublePickedNothing",{canvasPos:r.pointerCanvasPos},!0),s.doublePickFlyTo&&(d(),!s.firstPerson&&s.followPointer)){var y=t.aabb,b=$.getAABB3Center(y);i.pivotController.setPivotPos(b),i.pivotController.startPivot()&&i.pivotController.showPivot()}o._clicks=0}}},!1)}return C(e,[{key:"reset",value:function(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}},{key:"destroy",value:function(){var e=this._scene.canvas.canvas;e.removeEventListener("mousemove",this._canvasMouseMoveHandler),e.removeEventListener("mousedown",this._canvasMouseDownHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}]),e}(),Gd=function(){function e(t,i,s,r,n){x(this,e),this._scene=t;var o=t.input,a=[],l=t.canvas.canvas,u=!0;this._onSceneMouseMove=o.on("mousemove",(function(){u=!0})),this._onSceneKeyDown=o.on("keydown",(function(e){s.active&&s.pointerEnabled&&t.input.keyboardEnabled&&r.mouseover&&(a[e]=!0,e===o.KEY_SHIFT&&(l.style.cursor="move"))})),this._onSceneKeyUp=o.on("keyup",(function(e){s.active&&s.pointerEnabled&&t.input.keyboardEnabled&&(a[e]=!1,e===o.KEY_SHIFT&&(l.style.cursor=null),i.pivotController.getPivoting()&&i.pivotController.endPivot())})),this._onTick=t.on("tick",(function(e){if(s.active&&s.pointerEnabled&&t.input.keyboardEnabled&&r.mouseover){var l=i.cameraControl,A=e.deltaTime/1e3;if(!s.planView){var c=l._isKeyDownForAction(l.ROTATE_Y_POS,a),h=l._isKeyDownForAction(l.ROTATE_Y_NEG,a),d=l._isKeyDownForAction(l.ROTATE_X_POS,a),p=l._isKeyDownForAction(l.ROTATE_X_NEG,a),f=A*s.keyboardRotationRate;(c||h||d||p)&&(!s.firstPerson&&s.followPointer&&i.pivotController.startPivot(),c?n.rotateDeltaY+=f:h&&(n.rotateDeltaY-=f),d?n.rotateDeltaX+=f:p&&(n.rotateDeltaX-=f),!s.firstPerson&&s.followPointer&&i.pivotController.startPivot())}if(!a[o.KEY_CTRL]&&!a[o.KEY_ALT]){var v=l._isKeyDownForAction(l.DOLLY_BACKWARDS,a),g=l._isKeyDownForAction(l.DOLLY_FORWARDS,a);if(v||g){var m=A*s.keyboardDollyRate;!s.firstPerson&&s.followPointer&&i.pivotController.startPivot(),g?n.dollyDelta-=m:v&&(n.dollyDelta+=m),u&&(r.followPointerDirty=!0,u=!1)}}var _=l._isKeyDownForAction(l.PAN_FORWARDS,a),y=l._isKeyDownForAction(l.PAN_BACKWARDS,a),b=l._isKeyDownForAction(l.PAN_LEFT,a),w=l._isKeyDownForAction(l.PAN_RIGHT,a),B=l._isKeyDownForAction(l.PAN_UP,a),x=l._isKeyDownForAction(l.PAN_DOWN,a),P=(a[o.KEY_ALT]?.3:1)*A*s.keyboardPanRate;(_||y||b||w||B||x)&&(!s.firstPerson&&s.followPointer&&i.pivotController.startPivot(),x?n.panDeltaY+=P:B&&(n.panDeltaY+=-P),w?n.panDeltaX+=-P:b&&(n.panDeltaX+=P),y?n.panDeltaZ+=P:_&&(n.panDeltaZ+=-P))}}))}return C(e,[{key:"reset",value:function(){}},{key:"destroy",value:function(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}]),e}(),zd=$.vec3(),Wd=function(){function e(t,i,s,r,n){x(this,e),this._scene=t;var o=t.camera,a=i.pickController,l=i.pivotController,u=i.panController,A=1,c=1,h=null;this._onTick=t.on("tick",(function(){if(s.active&&s.pointerEnabled){var e="default";if(Math.abs(n.dollyDelta)<.001&&(n.dollyDelta=0),Math.abs(n.rotateDeltaX)<.001&&(n.rotateDeltaX=0),Math.abs(n.rotateDeltaY)<.001&&(n.rotateDeltaY=0),0===n.rotateDeltaX&&0===n.rotateDeltaY||(n.dollyDelta=0),s.followPointer){if(--A<=0&&(A=1,0!==n.dollyDelta)){if(0===n.rotateDeltaY&&0===n.rotateDeltaX&&s.followPointer&&r.followPointerDirty&&(a.pickCursorPos=r.pointerCanvasPos,a.schedulePickSurface=!0,a.update(),a.pickResult&&a.pickResult.worldPos?h=a.pickResult.worldPos:(c=1,h=null),r.followPointerDirty=!1),h){var i=Math.abs($.lenVec3($.subVec3(h,t.camera.eye,zd)));c=i/s.dollyProximityThreshold}cs.longTapRadius||Math.abs(g)>s.longTapRadius)&&(clearTimeout(r.longTouchTimeout),r.longTouchTimeout=null),s.planView){var m=t.camera;if("perspective"===m.projection){var _=Math.abs(t.camera.eyeLookDist)*Math.tan(m.perspective.fov/2*Math.PI/180);n.panDeltaX+=v*_/l*s.touchPanRate,n.panDeltaY+=g*_/l*s.touchPanRate}else n.panDeltaX+=.5*m.ortho.scale*(v/l)*s.touchPanRate,n.panDeltaY+=.5*m.ortho.scale*(g/l)*s.touchPanRate}else n.rotateDeltaY-=v/a*(1*s.dragRotationRate),n.rotateDeltaX+=g/l*(1.5*s.dragRotationRate)}else if(2===p){var y=d[0],b=d[1];Jd(y,u),Jd(b,A);var w=$.geometricMeanVec2(h[0],h[1]),B=$.geometricMeanVec2(u,A),x=$.vec2();$.subVec2(w,B,x);var P=x[0],C=x[1],M=t.camera,E=$.distVec2([y.pageX,y.pageY],[b.pageX,b.pageY]),F=($.distVec2(h[0],h[1])-E)*s.touchDollyRate;if(n.dollyDelta=F,Math.abs(F)<1)if("perspective"===M.projection){var k=o.pickResult?o.pickResult.worldPos:t.center,I=Math.abs($.lenVec3($.subVec3(k,t.camera.eye,[])))*Math.tan(M.perspective.fov/2*Math.PI/180);n.panDeltaX-=P*I/l*s.touchPanRate,n.panDeltaY-=C*I/l*s.touchPanRate}else n.panDeltaX-=.5*M.ortho.scale*(P/l)*s.touchPanRate,n.panDeltaY-=.5*M.ortho.scale*(C/l)*s.touchPanRate;r.pointerCanvasPos=B}for(var D=0;D-1&&t-c<150&&(h>-1&&c-h<325?(Zd(n[0],a.pickCursorPos),a.schedulePickEntity=!0,a.schedulePickSurface=o,a.update(),a.pickResult?(a.pickResult.touchInput=!0,l.fire("doublePicked",a.pickResult),a.pickedSurface&&l.fire("doublePickedSurface",a.pickResult),s.doublePickFlyTo&&p(a.pickResult)):(l.fire("doublePickedNothing"),s.doublePickFlyTo&&p()),h=-1):$.distVec2(u[0],A)<4&&(Zd(n[0],a.pickCursorPos),a.schedulePickEntity=!0,a.schedulePickSurface=o,a.update(),a.pickResult?(a.pickResult.touchInput=!0,l.fire("picked",a.pickResult),a.pickedSurface&&l.fire("pickedSurface",a.pickResult)):l.fire("pickedNothing"),h=t),c=-1),u.length=i.length;for(var d=0,f=i.length;d1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),(s=t.call(this,e,r)).PAN_LEFT=0,s.PAN_RIGHT=1,s.PAN_UP=2,s.PAN_DOWN=3,s.PAN_FORWARDS=4,s.PAN_BACKWARDS=5,s.ROTATE_X_POS=6,s.ROTATE_X_NEG=7,s.ROTATE_Y_POS=8,s.ROTATE_Y_NEG=9,s.DOLLY_FORWARDS=10,s.DOLLY_BACKWARDS=11,s.AXIS_VIEW_RIGHT=12,s.AXIS_VIEW_BACK=13,s.AXIS_VIEW_LEFT=14,s.AXIS_VIEW_FRONT=15,s.AXIS_VIEW_TOP=16,s.AXIS_VIEW_BOTTOM=17,s._keyMap={},s.scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},s._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:"qwerty",navMode:"orbit",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,doubleClickTimeFrame:250,snapToVertex:true,snapToEdge:true,snapRadius:30,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},s._states={pointerCanvasPos:$.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:$.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},s._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};var n=s.scene;return s._controllers={cameraControl:b(s),pickController:new Sd(b(s),s._configs),pivotController:new Dd(n,s._configs),panController:new Pd(n),cameraFlight:new Wh(b(s),{duration:.5})},s._handlers=[new Kd(s.scene,s._controllers,s._configs,s._states,s._updates),new Yd(s.scene,s._controllers,s._configs,s._states,s._updates),new Ld(s.scene,s._controllers,s._configs,s._states,s._updates),new Hd(s.scene,s._controllers,s._configs,s._states,s._updates),new jd(s.scene,s._controllers,s._configs,s._states,s._updates),new qd(s.scene,s._controllers,s._configs,s._states,s._updates),new Gd(s.scene,s._controllers,s._configs,s._states,s._updates)],s._cameraUpdater=new Wd(s.scene,s._controllers,s._configs,s._states,s._updates),s.navMode=r.navMode,r.planView&&(s.planView=r.planView),s.constrainVertical=r.constrainVertical,r.keyboardLayout?s.keyboardLayout=r.keyboardLayout:s.keyMap=r.keyMap,s.doublePickFlyTo=r.doublePickFlyTo,s.panRightClick=r.panRightClick,s.active=r.active,s.followPointer=r.followPointer,s.rotationInertia=r.rotationInertia,s.keyboardPanRate=r.keyboardPanRate,s.touchPanRate=r.touchPanRate,s.keyboardRotationRate=r.keyboardRotationRate,s.dragRotationRate=r.dragRotationRate,s.touchDollyRate=r.touchDollyRate,s.dollyInertia=r.dollyInertia,s.dollyProximityThreshold=r.dollyProximityThreshold,s.dollyMinSpeed=r.dollyMinSpeed,s.panInertia=r.panInertia,s.pointerEnabled=!0,s.keyboardDollyRate=r.keyboardDollyRate,s.mouseWheelDollyRate=r.mouseWheelDollyRate,s}return C(i,[{key:"keyMap",get:function(){return this._keyMap},set:function(e){if(e=e||"qwerty",le.isString(e)){var t=this.scene.input,i={};switch(e){default:this.error("Unsupported value for 'keyMap': "+e+" defaulting to 'qwerty'");case"qwerty":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case"azerty":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{var s=e;this._keyMap=s}}},{key:"_isKeyDownForAction",value:function(e,t){var i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(var s=0,r=i.length;s0&&void 0!==arguments[0]?arguments[0]:{};this._controllers.pivotController.enablePivotSphere(e)}},{key:"disablePivotSphere",value:function(){this._controllers.pivotController.disablePivotSphere()}},{key:"smartPivot",get:function(){return this._configs.smartPivot},set:function(e){this._configs.smartPivot=!1!==e}},{key:"doubleClickTimeFrame",get:function(){return this._configs.doubleClickTimeFrame},set:function(e){this._configs.doubleClickTimeFrame=null!=e?e:250}},{key:"destroy",value:function(){this._destroyHandlers(),this._destroyControllers(),this._cameraUpdater.destroy(),f(w(i.prototype),"destroy",this).call(this)}},{key:"_destroyHandlers",value:function(){for(var e=0,t=this._handlers.length;e1&&void 0!==arguments[1]?arguments[1]:{};if(this.finalized)throw"MetaScene already finalized - can't add more data";this._globalizeIDs(e,t);var i=this.metaScene,s=e.properties;if(e.propertySets)for(var r=0,n=e.propertySets.length;r0?np(t):null,o=i&&i.length>0?np(i):null;return function e(t){if(t){var i=!0;(o&&o[t.type]||n&&!n[t.type])&&(i=!1),i&&s.push(t.id);var r=t.children;if(r)for(var a=0,l=r.length;a>t;i.sort(Gc);for(var a=new Int32Array(e.length),l=0,u=i.length;le[r+1]){var o=e[r];e[r]=e[r+1],e[r+1]=o}Wc=new Int32Array(e),t.sort(Kc);for(var a=new Int32Array(e.length),l=0,u=t.length;l0)for(var s=i._meshes,r=0,n=s.length;r0)for(var o=this._meshes,a=0,l=o.length;a1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._dtxEnabled=s.scene.dtxEnabled&&!1!==r.dtxEnabled,s._enableVertexWelding=!1,s._enableIndexBucketing=!1,s._vboBatchingLayerScratchMemory=oo(),s._textureTranscoder=r.textureTranscoder||Oc(s.scene.viewer),s._maxGeometryBatchSize=r.maxGeometryBatchSize,s._aabb=$.collapseAABB3(),s._aabbDirty=!0,s._quantizationRanges={},s._vboInstancingLayers={},s._vboBatchingLayers={},s._dtxLayers={},s._meshList=[],s.layerList=[],s._entityList=[],s._geometries={},s._dtxBuckets={},s._textures={},s._textureSets={},s._transforms={},s._meshes={},s._unusedMeshes={},s._entities={},s.renderFlags=new Kr,s.numGeometries=0,s.numPortions=0,s.numVisibleLayerPortions=0,s.numTransparentLayerPortions=0,s.numXRayedLayerPortions=0,s.numHighlightedLayerPortions=0,s.numSelectedLayerPortions=0,s.numEdgesLayerPortions=0,s.numPickableLayerPortions=0,s.numClippableLayerPortions=0,s.numCulledLayerPortions=0,s.numEntities=0,s._numTriangles=0,s._numLines=0,s._numPoints=0,s._edgeThreshold=r.edgeThreshold||10,s._origin=$.vec3(r.origin||[0,0,0]),s._position=$.vec3(r.position||[0,0,0]),s._rotation=$.vec3(r.rotation||[0,0,0]),s._quaternion=$.vec4(r.quaternion||[0,0,0,1]),s._conjugateQuaternion=$.vec4(r.quaternion||[0,0,0,1]),r.rotation&&$.eulerToQuaternion(s._rotation,"XYZ",s._quaternion),s._scale=$.vec3(r.scale||[1,1,1]),s._worldRotationMatrix=$.mat4(),s._worldRotationMatrixConjugate=$.mat4(),s._matrix=$.mat4(),s._matrixDirty=!0,s._rebuildMatrices(),s._worldNormalMatrix=$.mat4(),$.inverseMat4(s._matrix,s._worldNormalMatrix),$.transposeMat4(s._worldNormalMatrix),(r.matrix||r.position||r.rotation||r.scale||r.quaternion)&&(s._viewMatrix=$.mat4(),s._viewNormalMatrix=$.mat4(),s._viewMatrixDirty=!0,s._matrixNonIdentity=!0),s._opacity=1,s._colorize=[1,1,1],s._saoEnabled=!1!==r.saoEnabled,s._pbrEnabled=!1!==r.pbrEnabled,s._colorTextureEnabled=!1!==r.colorTextureEnabled,s._isModel=r.isModel,s._isModel&&s.scene._registerModel(b(s)),s._onCameraViewMatrix=s.scene.camera.on("matrix",(function(){s._viewMatrixDirty=!0})),s._meshesWithDirtyMatrices=[],s._numMeshesWithDirtyMatrices=0,s._onTick=s.scene.on("tick",(function(){for(;s._numMeshesWithDirtyMatrices>0;)s._meshesWithDirtyMatrices[--s._numMeshesWithDirtyMatrices]._updateMatrix()})),s._createDefaultTextureSet(),s.visible=r.visible,s.culled=r.culled,s.pickable=r.pickable,s.clippable=r.clippable,s.collidable=r.collidable,s.castsShadow=r.castsShadow,s.receivesShadow=r.receivesShadow,s.xrayed=r.xrayed,s.highlighted=r.highlighted,s.selected=r.selected,s.edges=r.edges,s.colorize=r.colorize,s.opacity=r.opacity,s.backfaces=r.backfaces,s}return C(i,[{key:"_meshMatrixDirty",value:function(e){this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++]=e}},{key:"_createDefaultTextureSet",value:function(){var e=new Mc({id:"defaultColorTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})}),t=new Mc({id:"defaultMetalRoughTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[0,1,1,1]})}),i=new Mc({id:"defaultNormalsTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[0,0,0,0]})}),s=new Mc({id:"defaultEmissiveTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[0,0,0,1]})}),r=new Mc({id:"defaultOcclusionTexture",texture:new Dn({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})});this._textures.defaultColorTexture=e,this._textures.defaultMetalRoughTexture=t,this._textures.defaultNormalsTexture=i,this._textures.defaultEmissiveTexture=s,this._textures.defaultOcclusionTexture=r,this._textureSets.defaultTextureSet=new Cc({id:"defaultTextureSet",model:this,colorTexture:e,metallicRoughnessTexture:t,normalsTexture:i,emissiveTexture:s,occlusionTexture:r})}},{key:"isPerformanceModel",get:function(){return!0}},{key:"transforms",get:function(){return this._transforms}},{key:"textures",get:function(){return this._textures}},{key:"textureSets",get:function(){return this._textureSets}},{key:"meshes",get:function(){return this._meshes}},{key:"objects",get:function(){return this._entities}},{key:"origin",get:function(){return this._origin}},{key:"position",get:function(){return this._position},set:function(e){this._position.set(e||[0,0,0]),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}},{key:"rotation",get:function(){return this._rotation},set:function(e){this._rotation.set(e||[0,0,0]),$.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}},{key:"quaternion",get:function(){return this._quaternion},set:function(e){this._quaternion.set(e||[0,0,0,1]),$.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}},{key:"scale",get:function(){return this._scale},set:function(e){}},{key:"matrix",get:function(){return this._matrixDirty&&this._rebuildMatrices(),this._matrix},set:function(e){this._matrix.set(e||Ah),$.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),$.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),$.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),$.translateMat4v(this._position,this._matrix),this._matrixDirty=!1,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}},{key:"rotationMatrix",get:function(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrix}},{key:"_rebuildMatrices",value:function(){this._matrixDirty&&($.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),$.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),$.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),$.translateMat4v(this._position,this._matrix),this._matrixDirty=!1)}},{key:"rotationMatrixConjugate",get:function(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrixConjugate}},{key:"_setWorldMatrixDirty",value:function(){this._matrixDirty=!0,this._aabbDirty=!0}},{key:"_transformDirty",value:function(){this._matrixDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0}},{key:"_sceneModelDirty",value:function(){this.scene._aabbDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0,this._matrixDirty=!0;for(var e=0,t=this._entityList.length;e0},set:function(e){e=!1!==e,this._visible=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!!e,this._xrayed=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!!e,this._highlighted=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!!e,this._selected=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!!e,this._edges=e;for(var t=0,i=this._entityList.length;t0},set:function(e){e=!1!==e,this._pickable=e;for(var t=0,i=this._entityList.length;t0)e.colorsCompressed=new Uint8Array(e.colorsCompressed);else if(e.colors&&e.colors.length>0){for(var l=e.colors,u=new Uint8Array(l.length),A=0,c=l.length;A>24&255,r=i>>16&255,n=i>>8&255,o=255&i;switch(e.pickColor=new Uint8Array([o,n,r,s]),e.solid="solid"===e.primitive,t.origin=$.vec3(e.origin),e.type){case 2:t.layer=this._getDTXLayer(e),t.aabb=e.aabb;break;case 1:t.layer=this._getVBOBatchingLayer(e),t.aabb=e.aabb;break;case 0:t.layer=this._getVBOInstancingLayer(e),t.aabb=e.aabb}return e.transform&&(e.meshMatrix=e.transform.worldMatrix),t.portionId=t.layer.createPortion(t,e),this._meshes[e.id]=t,this._unusedMeshes[e.id]=t,this._meshList.push(t),t}},{key:"_getNumPrimitives",value:function(e){var t=0;switch(e.geometry?e.geometry.primitive:e.primitive){case"triangles":case"solid":case"surface":switch(e.type){case 2:for(var i=0,s=e.buckets.length;i>>0).toString(16)}},{key:"_getVBOInstancingLayer",value:function(e){var t=this,i=e.origin,s=e.textureSetId||"-",r=e.geometryId,n="".concat(Math.round(i[0]),".").concat(Math.round(i[1]),".").concat(Math.round(i[2]),".").concat(s,".").concat(r),o=this._vboInstancingLayers[n];if(o)return o;for(var a=e.textureSet,l=e.geometry;!o;)switch(l.primitive){case"triangles":case"surface":o=new nl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!1});break;case"solid":o=new nl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!0});break;case"lines":o=new Gl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0});break;case"points":o=new Uu({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0})}return this._vboInstancingLayers[n]=o,this.layerList.push(o),o}},{key:"createEntity",value:function(e){if(void 0===e.id?e.id=$.createUUID():this.scene.components[e.id]&&(this.error("Scene already has a Component with this ID: ".concat(e.id," - will assign random ID")),e.id=$.createUUID()),void 0!==e.meshIds){var t=0;this._visible&&!1!==e.visible&&(t|=Qe),this._pickable&&!1!==e.pickable&&(t|=He),this._culled&&!1!==e.culled&&(t|=Ve),this._clippable&&!1!==e.clippable&&(t|=je),this._collidable&&!1!==e.collidable&&(t|=Ge),this._edges&&!1!==e.edges&&(t|=Xe),this._xrayed&&!1!==e.xrayed&&(t|=ze),this._highlighted&&!1!==e.highlighted&&(t|=We),this._selected&&!1!==e.selected&&(t|=Ke),e.flags=t,this._createEntity(e)}else this.error("Config missing: meshIds")}},{key:"_createEntity",value:function(e){for(var t=[],i=0,s=e.meshIds.length;it.sortId?1:0}));for(var o=0,a=this.layerList.length;o0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}},{key:"_updateRenderFlagsVisibleLayers",value:function(){var e=this.renderFlags;e.numLayers=this.layerList.length,e.numVisibleLayers=0;for(var t=0,i=this.layerList.length;t0){var t="".concat(this.id,"-dummyEntityForUnusedMeshes");this.warn('Creating dummy SceneModelEntity "'.concat(t,'" for unused SceneMeshes: [').concat(e.join(","),"]")),this.createEntity({id:t,meshIds:e,isObject:!0})}this._unusedMeshes={}}},{key:"_getActiveSectionPlanesForLayer",value:function(e){var t=this.renderFlags,i=this.scene._sectionPlanesState.sectionPlanes,s=i.length,r=e.layerIndex*s;if(s>0)for(var n=0;n0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){var t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0)this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions0&&(e.edgesTransparent=!0));if(this.numSelectedLayerPortions>0){var i=this.scene.selectedMaterial._state;i.fill&&(i.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),i.edges&&(i.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){var s=this.scene.highlightMaterial._state;s.fill&&(s.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),s.edges&&(s.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}}},{key:"drawColorOpaque",value:function(e){for(var t=this.renderFlags,i=0,s=t.visibleLayers.length;i2&&void 0!==arguments[2]&&arguments[2],s=e.positionsCompressed||[],r=zc(e.indices||[],t),n=Xc(e.edgeIndices||[]);function o(e,t){if(e>t){var i=e;e=t,t=i}function s(i,s){return i!==e?e-i:s!==t?t-s:0}for(var r=0,o=(n.length>>1)-1;r<=o;){var a=o+r>>1,l=s(n[2*a],n[2*a+1]);if(l>0)r=a+1;else{if(!(l<0))return a;o=a-1}}return-r-1}var a=new Int32Array(n.length/2);a.fill(0);var l=s.length/3;if(l>8*(1<h.maxNumPositions&&(h=c()),h.bucketNumber>8)return[e];-1===u[v]&&(u[v]=h.numPositions++,h.positionsCompressed.push(s[3*v]),h.positionsCompressed.push(s[3*v+1]),h.positionsCompressed.push(s[3*v+2])),-1===u[g]&&(u[g]=h.numPositions++,h.positionsCompressed.push(s[3*g]),h.positionsCompressed.push(s[3*g+1]),h.positionsCompressed.push(s[3*g+2])),-1===u[m]&&(u[m]=h.numPositions++,h.positionsCompressed.push(s[3*m]),h.positionsCompressed.push(s[3*m+1]),h.positionsCompressed.push(s[3*m+2])),h.indices.push(u[v]),h.indices.push(u[g]),h.indices.push(u[m]);var _=void 0;(_=o(v,g))>=0&&0===a[_]&&(a[_]=1,h.edgeIndices.push(u[n[2*_]]),h.edgeIndices.push(u[n[2*_+1]])),(_=o(v,m))>=0&&0===a[_]&&(a[_]=1,h.edgeIndices.push(u[n[2*_]]),h.edgeIndices.push(u[n[2*_+1]])),(_=o(g,m))>=0&&0===a[_]&&(a[_]=1,h.edgeIndices.push(u[n[2*_]]),h.edgeIndices.push(u[n[2*_+1]]))}var y=t/8*2,b=t/8,w=2*s.length+(r.length+n.length)*y,B=0;return s.length,A.forEach((function(e){B+=2*e.positionsCompressed.length+(e.indices.length+e.edgeIndices.length)*b,e.positionsCompressed.length})),B>w?[e]:(i&&Jc(A,e),A)}({positionsCompressed:s,indices:r,edgeIndices:n},s.length/3>65536?16:8):o=[{positionsCompressed:s,indices:r,edgeIndices:n}];return o}var ph=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,e,r))._positions=r.positions||[],r.indices)s._indices=r.indices;else{s._indices=[];for(var n=0,o=s._positions.length/3-1;n1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"BCFViewpoints",e,r)).originatingSystem=r.originatingSystem||"xeokit.io",s.authoringTool=r.authoringTool||"xeokit.io",s}return C(i,[{key:"getViewpoint",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=this.viewer.scene,s=i.camera,r=i.realWorldOffset,n=!0===t.reverseClippingPlanes,o={},a=$.normalizeVec3($.subVec3(s.look,s.eye,$.vec3())),l=s.eye,u=s.up;s.yUp&&(a=wh(a),l=wh(l),u=wh(u));var A=yh($.addVec3(l,r));"ortho"===s.projection?o.orthogonal_camera={camera_view_point:A,camera_direction:yh(a),camera_up_vector:yh(u),view_to_world_scale:s.ortho.scale}:o.perspective_camera={camera_view_point:A,camera_direction:yh(a),camera_up_vector:yh(u),field_of_view:s.perspective.fov};var c=i.sectionPlanes;for(var d in c)if(c.hasOwnProperty(d)){var p=c[d];if(!p.active)continue;var f=p.pos,v=void 0;v=n?$.negateVec3(p.dir,$.vec3()):p.dir,s.yUp&&(f=wh(f),v=wh(v)),$.addVec3(f,r),f=yh(f),v=yh(v),o.clipping_planes||(o.clipping_planes=[]),o.clipping_planes.push({location:f,direction:v})}var g=i.lineSets;for(var m in g)if(g.hasOwnProperty(m)){var _=g[m];o.lines||(o.lines=[]);for(var y=_.positions,b=_.indices,w=0,B=b.length/2;w1&&void 0!==arguments[1]?arguments[1]:{};if(e){var s=this.viewer,r=s.scene,n=r.camera,o=!1!==i.rayCast,a=!1!==i.immediate,l=!1!==i.reset,u=r.realWorldOffset,A=!0===i.reverseClippingPlanes;if(r.clearSectionPlanes(),e.clipping_planes&&e.clipping_planes.length>0&&e.clipping_planes.forEach((function(e){var t=bh(e.location,fh),i=bh(e.direction,fh);A&&$.negateVec3(i),$.subVec3(t,u),n.yUp&&(t=Bh(t),i=Bh(i)),new hn(r,{pos:t,dir:i})})),r.clearLines(),e.lines&&e.lines.length>0){var c=[],h=[],d=0;e.lines.forEach((function(e){e.start_point&&e.end_point&&(c.push(e.start_point.x),c.push(e.start_point.y),c.push(e.start_point.z),c.push(e.end_point.x),c.push(e.end_point.y),c.push(e.end_point.z),h.push(d++),h.push(d++))})),new ph(r,{positions:c,indices:h,clippable:!1,collidable:!0})}if(r.clearBitmaps(),e.bitmaps&&e.bitmaps.length>0&&e.bitmaps.forEach((function(e){var t=e.bitmap_type||"jpg",i=e.bitmap_data,s=bh(e.location,vh),o=bh(e.normal,gh),a=bh(e.up,mh),l=e.height||1;t&&i&&s&&o&&a&&(n.yUp&&(s=Bh(s),o=Bh(o),a=Bh(a)),new $n(r,{src:i,type:t,pos:s,normal:o,up:a,clippable:!1,collidable:!0,height:l}))})),l&&(r.setObjectsXRayed(r.xrayedObjectIds,!1),r.setObjectsHighlighted(r.highlightedObjectIds,!1),r.setObjectsSelected(r.selectedObjectIds,!1)),e.components){if(e.components.visibility){e.components.visibility.default_visibility?(r.setObjectsVisible(r.objectIds,!0),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((function(e){return t._withBCFComponent(i,e,(function(e){return e.visible=!1}))}))):(r.setObjectsVisible(r.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((function(e){return t._withBCFComponent(i,e,(function(e){return e.visible=!0}))})));var p=e.components.visibility.view_setup_hints;p&&(!1===p.spaces_visible&&r.setObjectsVisible(s.metaScene.getObjectIDsByType("IfcSpace"),!1),void 0!==p.spaces_translucent&&r.setObjectsXRayed(s.metaScene.getObjectIDsByType("IfcSpace"),!0),p.space_boundaries_visible,!1===p.openings_visible&&r.setObjectsVisible(s.metaScene.getObjectIDsByType("IfcOpening"),!0),p.space_boundaries_translucent,void 0!==p.openings_translucent&&r.setObjectsXRayed(s.metaScene.getObjectIDsByType("IfcOpening"),!0))}e.components.selection&&(r.setObjectsSelected(r.selectedObjectIds,!1),e.components.selection.forEach((function(e){return t._withBCFComponent(i,e,(function(e){return e.selected=!0}))}))),e.components.translucency&&(r.setObjectsXRayed(r.xrayedObjectIds,!1),e.components.translucency.forEach((function(e){return t._withBCFComponent(i,e,(function(e){return e.xrayed=!0}))}))),e.components.coloring&&e.components.coloring.forEach((function(e){var s=e.color,r=0,n=!1;8===s.length&&((r=parseInt(s.substring(0,2),16)/256)<=1&&r>=.95&&(r=1),s=s.substring(2),n=!0);var o=[parseInt(s.substring(0,2),16)/256,parseInt(s.substring(2,4),16)/256,parseInt(s.substring(4,6),16)/256];e.components.map((function(e){return t._withBCFComponent(i,e,(function(e){e.colorize=o,n&&(e.opacity=r)}))}))}))}if(e.perspective_camera||e.orthogonal_camera){var f,v,g,m;if(e.perspective_camera?(f=bh(e.perspective_camera.camera_view_point,fh),v=bh(e.perspective_camera.camera_direction,fh),g=bh(e.perspective_camera.camera_up_vector,fh),n.perspective.fov=e.perspective_camera.field_of_view,m="perspective"):(f=bh(e.orthogonal_camera.camera_view_point,fh),v=bh(e.orthogonal_camera.camera_direction,fh),g=bh(e.orthogonal_camera.camera_up_vector,fh),n.ortho.scale=e.orthogonal_camera.view_to_world_scale,m="ortho"),$.subVec3(f,u),n.yUp&&(f=Bh(f),v=Bh(v),g=Bh(g)),o){var _=r.pick({pickSurface:!0,origin:f,direction:v});v=_?_.worldPos:$.addVec3(f,v,fh)}else v=$.addVec3(f,v,fh);a?(n.eye=f,n.look=v,n.up=g,n.projection=m):s.cameraFlight.flyTo({eye:f,look:v,up:g,duration:i.duration,projection:m})}}}},{key:"_withBCFComponent",value:function(e,t,i){var s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){var n=t.authoring_tool_id,o=r.objects[n];if(o)return void i(o);if(e.updateCompositeObjects)if(s.metaScene.metaObjects[n])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}if(t.ifc_guid){var a=t.ifc_guid,l=r.objects[a];if(l)return void i(l);if(e.updateCompositeObjects)if(s.metaScene.metaObjects[a])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(a),i);Object.keys(r.models).forEach((function(t){var n=$.globalizeObjectId(t,a),o=r.objects[n];o?i(o):e.updateCompositeObjects&&s.metaScene.metaObjects[n]&&r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}))}}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this)}}]),i}();function yh(e){return{x:e[0],y:e[1],z:e[2]}}function bh(e,t){return(t=new Float64Array(3))[0]=e.x,t[1]=e.y,t[2]=e.z,t}function wh(e){return new Float64Array([e[0],-e[2],e[1]])}function Bh(e){return new Float64Array([e[0],e[2],-e[1]])}function xh(e){var t="";return t+=Math.round(255*e[0]).toString(16).padStart(2,"0"),t+=Math.round(255*e[1]).toString(16).padStart(2,"0"),t+=Math.round(255*e[2]).toString(16).padStart(2,"0")}var Ph=$.vec3(),Ch=function(e,t,i,s){var r=e-i,n=t-s;return Math.sqrt(r*r+n*n)};var Mh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,e.viewer.scene,r)).plugin=e,s._container=r.container,!s._container)throw"config missing: container";s._eventSubs={};var n=s.plugin.viewer.scene;s._originMarker=new et(n,r.origin),s._targetMarker=new et(n,r.target),s._originWorld=$.vec3(),s._targetWorld=$.vec3(),s._wp=new Float64Array(24),s._vp=new Float64Array(24),s._pp=new Float64Array(24),s._cp=new Float64Array(8),s._xAxisLabelCulled=!1,s._yAxisLabelCulled=!1,s._zAxisLabelCulled=!1,s._color=r.color||s.plugin.defaultColor;var o=r.onMouseOver?function(e){r.onMouseOver(e,b(s)),s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseover",e))}:null,a=r.onMouseLeave?function(e){r.onMouseLeave(e,b(s)),s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseleave",e))}:null,l=function(e){s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousedown",e))},u=function(e){s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseup",e))},A=function(e){s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousemove",e))},c=r.onContextMenu?function(e){r.onContextMenu(e,b(s))}:null,h=function(e){s.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent("wheel",e))};return s._originDot=new st(s._container,{fillColor:s._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._targetDot=new st(s._container,{fillColor:s._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._lengthWire=new it(s._container,{color:s._color,thickness:2,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._xAxisWire=new it(s._container,{color:"#FF0000",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._yAxisWire=new it(s._container,{color:"green",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._zAxisWire=new it(s._container,{color:"blue",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._lengthLabel=new rt(s._container,{fillColor:s._color,prefix:"",text:"",zIndex:void 0!==e.zIndex?e.zIndex+4:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._xAxisLabel=new rt(s._container,{fillColor:"red",prefix:"X",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._yAxisLabel=new rt(s._container,{fillColor:"green",prefix:"Y",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._zAxisLabel=new rt(s._container,{fillColor:"blue",prefix:"Z",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:o,onMouseLeave:a,onMouseWheel:h,onMouseDown:l,onMouseUp:u,onMouseMove:A,onContextMenu:c}),s._measurementOrientation="Horizontal",s._wpDirty=!1,s._vpDirty=!1,s._cpDirty=!1,s._sectionPlanesDirty=!0,s._visible=!1,s._originVisible=!1,s._targetVisible=!1,s._wireVisible=!1,s._axisVisible=!1,s._xAxisVisible=!1,s._yAxisVisible=!1,s._zAxisVisible=!1,s._axisEnabled=!0,s._xLabelEnabled=!1,s._yLabelEnabled=!1,s._zLabelEnabled=!1,s._lengthLabelEnabled=!1,s._labelsVisible=!1,s._labelsOnWires=!1,s._clickable=!1,s._originMarker.on("worldPos",(function(e){s._originWorld.set(e||[0,0,0]),s._wpDirty=!0,s._needUpdate(0)})),s._targetMarker.on("worldPos",(function(e){s._targetWorld.set(e||[0,0,0]),s._wpDirty=!0,s._needUpdate(0)})),s._onViewMatrix=n.camera.on("viewMatrix",(function(){s._vpDirty=!0,s._needUpdate(0)})),s._onProjMatrix=n.camera.on("projMatrix",(function(){s._cpDirty=!0,s._needUpdate()})),s._onCanvasBoundary=n.canvas.on("boundary",(function(){s._cpDirty=!0,s._needUpdate(0)})),s._onMetricsUnits=n.metrics.on("units",(function(){s._cpDirty=!0,s._needUpdate()})),s._onMetricsScale=n.metrics.on("scale",(function(){s._cpDirty=!0,s._needUpdate()})),s._onMetricsOrigin=n.metrics.on("origin",(function(){s._cpDirty=!0,s._needUpdate()})),s._onSectionPlaneUpdated=n.on("sectionPlaneUpdated",(function(){s._sectionPlanesDirty=!0,s._needUpdate()})),s.approximate=r.approximate,s.visible=r.visible,s.originVisible=r.originVisible,s.targetVisible=r.targetVisible,s.wireVisible=r.wireVisible,s.axisVisible=r.axisVisible,s.xAxisVisible=r.xAxisVisible,s.yAxisVisible=r.yAxisVisible,s.zAxisVisible=r.zAxisVisible,s.xLabelEnabled=r.xLabelEnabled,s.yLabelEnabled=r.yLabelEnabled,s.zLabelEnabled=r.zLabelEnabled,s.lengthLabelEnabled=r.lengthLabelEnabled,s.labelsVisible=r.labelsVisible,s.labelsOnWires=r.labelsOnWires,s}return C(i,[{key:"_update",value:function(){if(this._visible){var e=this.plugin.viewer.scene;if(this._wpDirty&&(this._measurementOrientation=function(e,t,i){return Math.abs(t[1]-e[1])>i?"Vertical":"Horizontal"}(this._originWorld,this._targetWorld,1),"Vertical"===this._measurementOrientation?(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._originWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._originWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1):(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._targetWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._targetWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1),this._wpDirty=!1,this._vpDirty=!0),this._vpDirty&&($.transformPositions4(e.camera.viewMatrix,this._wp,this._vp),this._vp[3]=1,this._vp[7]=1,this._vp[11]=1,this._vp[15]=1,this._vpDirty=!1,this._cpDirty=!0),this._sectionPlanesDirty){if(this._isSliced(this._originWorld)||this._isSliced(this._targetWorld))return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setCulled(!0),this._yAxisWire.setCulled(!0),this._zAxisWire.setCulled(!0),this._lengthWire.setCulled(!0),this._originDot.setCulled(!0),void this._targetDot.setCulled(!0);this._xAxisLabel.setCulled(!1),this._yAxisLabel.setCulled(!1),this._zAxisLabel.setCulled(!1),this._lengthLabel.setCulled(!1),this._xAxisWire.setCulled(!1),this._yAxisWire.setCulled(!1),this._zAxisWire.setCulled(!1),this._lengthWire.setCulled(!1),this._originDot.setCulled(!1),this._targetDot.setCulled(!1),this._sectionPlanesDirty=!0}var t=this._originMarker.viewPos[2],i=this._targetMarker.viewPos[2];if(t>-.3||i>-.3)return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setVisible(!1),this._yAxisWire.setVisible(!1),this._zAxisWire.setVisible(!1),this._lengthWire.setVisible(!1),this._originDot.setVisible(!1),void this._targetDot.setVisible(!1);if(this._cpDirty){$.transformPositions4(e.camera.project.matrix,this._vp,this._pp);for(var s=this._pp,r=this._cp,n=e.canvas.canvas.getBoundingClientRect(),o=this._container.getBoundingClientRect(),a=n.top-o.top,l=n.left-o.left,u=e.canvas.boundary,A=u[2],c=u[3],h=0,d=this.plugin.viewer.scene.metrics,p=d.scale,f=d.units,v=d.unitsInfo[f].abbrev,g=0,m=s.length;g1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e.viewer.scene))._canvasToPagePos=r.canvasToPagePos,s.pointerLens=r.pointerLens,s._active=!1,s._currentDistanceMeasurement=null,s._currentDistanceMeasurementInitState={wireVisible:null,axisVisible:null,xAxisVisible:null,yaxisVisible:null,zAxisVisible:null,targetVisible:null},s._initMarkerDiv(),s._onCameraControlHoverSnapOrSurface=null,s._onCameraControlHoverSnapOrSurfaceOff=null,s._onMouseDown=null,s._onMouseUp=null,s._onCanvasTouchStart=null,s._onCanvasTouchEnd=null,s._snapping=!1!==r.snapping,s._mouseState=0,s._attachPlugin(e,r),s}return C(i,[{key:"_initMarkerDiv",value:function(){var e=document.createElement("div");e.setAttribute("id","myMarkerDiv");var t=this.scene.canvas.canvas;t.parentNode.insertBefore(e,t),e.style.background="black",e.style.border="2px solid blue",e.style.borderRadius="10px",e.style.width="5px",e.style.height="5px",e.style.top="-200px",e.style.left="-200px",e.style.margin="0 0",e.style.zIndex="100",e.style.position="absolute",e.style.pointerEvents="none",this._markerDiv=e}},{key:"_destroyMarkerDiv",value:function(){if(this._markerDiv){var e=document.getElementById("myMarkerDiv");e.parentNode.removeChild(e),this._markerDiv=null}}},{key:"_attachPlugin",value:function(e){this.distanceMeasurementsPlugin=e,this.plugin=e}},{key:"active",get:function(){return this._active}},{key:"snapping",get:function(){return this._snapping},set:function(e){e!==this._snapping?(this._snapping=e,this.deactivate(),this.activate()):this._snapping=e}},{key:"activate",value:function(){var e=this;if(!this._active){this._markerDiv||this._initMarkerDiv(),this.fire("activated",!0);var t=this.distanceMeasurementsPlugin,i=this.scene,s=t.viewer.cameraControl,r=i.canvas.canvas;i.input;var n,o,a=!1,l=$.vec3(),u=$.vec2(),A=null;this._mouseState=0;var c=function e(t){return t.offsetTop+(t.offsetParent&&t.offsetParent!==r.parentNode&&e(t.offsetParent))},h=function e(t){return t.offsetLeft+(t.offsetParent&&t.offsetParent!==r.parentNode&&e(t.offsetParent))},d=$.vec2();this._onCameraControlHoverSnapOrSurface=s.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",(function(t){var i=t.snappedCanvasPos||t.canvasPos;a=!0,l.set(t.worldPos),u.set(t.canvasPos),0===e._mouseState?(e._canvasToPagePos?(e._canvasToPagePos(r,i,d),e._markerDiv.style.left="".concat(d[0]-5,"px"),e._markerDiv.style.top="".concat(d[1]-5,"px")):(e._markerDiv.style.left="".concat(h(r)+i[0]-5,"px"),e._markerDiv.style.top="".concat(c(r)+i[1]-5,"px")),e._markerDiv.style.background="pink",t.snappedToVertex||t.snappedToEdge?(e.pointerLens&&(e.pointerLens.visible=!0,e.pointerLens.canvasPos=t.canvasPos,e.pointerLens.snappedCanvasPos=t.snappedCanvasPos||t.canvasPos,e.pointerLens.snapped=!0),e._markerDiv.style.background="greenyellow",e._markerDiv.style.border="2px solid green"):(e.pointerLens&&(e.pointerLens.visible=!0,e.pointerLens.canvasPos=t.canvasPos,e.pointerLens.snappedCanvasPos=t.canvasPos,e.pointerLens.snapped=!1),e._markerDiv.style.background="pink",e._markerDiv.style.border="2px solid red"),A=t.entity):(e._markerDiv.style.left="-10000px",e._markerDiv.style.top="-10000px"),r.style.cursor="pointer",e._currentDistanceMeasurement&&(e._currentDistanceMeasurement.wireVisible=e._currentDistanceMeasurementInitState.wireVisible,e._currentDistanceMeasurement.axisVisible=e._currentDistanceMeasurementInitState.axisVisible&&e.distanceMeasurementsPlugin.defaultAxisVisible,e._currentDistanceMeasurement.xAxisVisible=e._currentDistanceMeasurementInitState.xAxisVisible&&e.distanceMeasurementsPlugin.defaultXAxisVisible,e._currentDistanceMeasurement.yAxisVisible=e._currentDistanceMeasurementInitState.yAxisVisible&&e.distanceMeasurementsPlugin.defaultYAxisVisible,e._currentDistanceMeasurement.zAxisVisible=e._currentDistanceMeasurementInitState.zAxisVisible&&e.distanceMeasurementsPlugin.defaultZAxisVisible,e._currentDistanceMeasurement.targetVisible=e._currentDistanceMeasurementInitState.targetVisible,e._currentDistanceMeasurement.target.worldPos=l.slice(),e._markerDiv.style.left="-10000px",e._markerDiv.style.top="-10000px")})),r.addEventListener("mousedown",this._onMouseDown=function(e){1===e.which&&(n=e.clientX,o=e.clientY)}),r.addEventListener("mouseup",this._onMouseUp=function(i){1===i.which&&(i.clientX>n+20||i.clientXo+20||i.clientY1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"DistanceMeasurements",e))._pointerLens=r.pointerLens,s._container=r.container||document.body,s._defaultControl=null,s._measurements={},s.labelMinAxisLength=r.labelMinAxisLength,s.defaultVisible=!1!==r.defaultVisible,s.defaultOriginVisible=!1!==r.defaultOriginVisible,s.defaultTargetVisible=!1!==r.defaultTargetVisible,s.defaultWireVisible=!1!==r.defaultWireVisible,s.defaultXLabelEnabled=!1!==r.defaultXLabelEnabled,s.defaultYLabelEnabled=!1!==r.defaultYLabelEnabled,s.defaultZLabelEnabled=!1!==r.defaultZLabelEnabled,s.defaultLengthLabelEnabled=!1!==r.defaultLengthLabelEnabled,s.defaultLabelsVisible=!1!==r.defaultLabelsVisible,s.defaultAxisVisible=!1!==r.defaultAxisVisible,s.defaultXAxisVisible=!1!==r.defaultXAxisVisible,s.defaultYAxisVisible=!1!==r.defaultYAxisVisible,s.defaultZAxisVisible=!1!==r.defaultZAxisVisible,s.defaultColor=void 0!==r.defaultColor?r.defaultColor:"#00BBFF",s.zIndex=r.zIndex||1e4,s.defaultLabelsOnWires=!1!==r.defaultLabelsOnWires,s._onMouseOver=function(e,t){s.fire("mouseOver",{plugin:b(s),distanceMeasurement:t,measurement:t,event:e})},s._onMouseLeave=function(e,t){s.fire("mouseLeave",{plugin:b(s),distanceMeasurement:t,measurement:t,event:e})},s._onContextMenu=function(e,t){s.fire("contextMenu",{plugin:b(s),distanceMeasurement:t,measurement:t,event:e})},s}return C(i,[{key:"getContainerElement",value:function(){return this._container}},{key:"send",value:function(e,t){}},{key:"pointerLens",get:function(){return this._pointerLens}},{key:"control",get:function(){return this._defaultControl||(this._defaultControl=new Fh(this,{})),this._defaultControl}},{key:"measurements",get:function(){return this._measurements}},{key:"labelMinAxisLength",get:function(){return this._labelMinAxisLength},set:function(e){e<1&&(this.error("labelMinAxisLength must be >= 1; defaulting to 25"),e=25),this._labelMinAxisLength=e||25}},{key:"createMeasurement",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.viewer.scene.components[t.id]&&(this.error("Viewer scene component with this ID already exists: "+t.id),delete t.id);var i=t.origin,s=t.target,r=new Mh(this,{id:t.id,plugin:this,container:this._container,origin:{entity:i.entity,worldPos:i.worldPos},target:{entity:s.entity,worldPos:s.worldPos},visible:t.visible,wireVisible:t.wireVisible,axisVisible:!1!==t.axisVisible&&!1!==this.defaultAxisVisible,xAxisVisible:!1!==t.xAxisVisible&&!1!==this.defaultXAxisVisible,yAxisVisible:!1!==t.yAxisVisible&&!1!==this.defaultYAxisVisible,zAxisVisible:!1!==t.zAxisVisible&&!1!==this.defaultZAxisVisible,xLabelEnabled:!1!==t.xLabelEnabled&&!1!==this.defaultXLabelEnabled,yLabelEnabled:!1!==t.yLabelEnabled&&!1!==this.defaultYLabelEnabled,zLabelEnabled:!1!==t.zLabelEnabled&&!1!==this.defaultZLabelEnabled,lengthLabelEnabled:!1!==t.lengthLabelEnabled&&!1!==this.defaultLengthLabelEnabled,labelsVisible:!1!==t.labelsVisible&&!1!==this.defaultLabelsVisible,originVisible:t.originVisible,targetVisible:t.targetVisible,color:t.color,labelsOnWires:!1!==t.labelsOnWires&&!1!==this.defaultLabelsOnWires,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[r.id]=r,r.clickable=!0,r.on("destroyed",(function(){delete e._measurements[r.id]})),this.fire("measurementCreated",r),r}},{key:"destroyMeasurement",value:function(e){var t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("DistanceMeasurement not found: "+e)}},{key:"setLabelsShown",value:function(e){for(var t=0,i=Object.entries(this.measurements);t1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),(s=t.call(this,e.viewer.scene)).pointerLens=r.pointerLens,s.pointerCircle=new De(e.viewer),s._active=!1;var n=document.createElement("div"),o=s.scene.canvas.canvas;return o.parentNode.insertBefore(n,o),n.style.background="black",n.style.border="2px solid blue",n.style.borderRadius="10px",n.style.width="5px",n.style.height="5px",n.style.margin="-200px -200px",n.style.zIndex="100",n.style.position="absolute",n.style.pointerEvents="none",s.markerDiv=n,s._currentDistanceMeasurement=null,s._currentDistanceMeasurementInitState={wireVisible:null,axisVisible:null,xAxisVisible:null,yaxisVisible:null,zAxisVisible:null,targetVisible:null},s._onCanvasTouchStart=null,s._onCanvasTouchEnd=null,s._longTouchTimeoutMs=300,s._snapping=!1!==r.snapping,s._touchState=0,s._attachPlugin(e,r),s}return C(i,[{key:"_attachPlugin",value:function(e){this.distanceMeasurementsPlugin=e,this.plugin=e}},{key:"active",get:function(){return this._active}},{key:"snapping",get:function(){return this._snapping},set:function(e){e!==this._snapping?(this._snapping=e,this.deactivate(),this.activate()):this._snapping=e}},{key:"activate",value:function(){var e=this;if(!this._active){var t=this.plugin,i=this.scene,s=i.canvas.canvas;t.pointerLens;var r=$.vec3(),n=20,o=null;this._touchState=0;var a=$.vec2(),l=$.vec2(),u=$.vec2(),A=null,c=function(){e.plugin.viewer.cameraControl.active=!1},h=function(){e.plugin.viewer.cameraControl.active=!0};s.addEventListener("touchstart",this._onCanvasTouchStart=function(s){var u=s.touches.length;if(1===u){var d=s.touches[0],p=d.clientX,f=d.clientY;switch(a.set([p,f]),l.set([p,f]),e._touchState){case 0:if(1!==u&&null!==o)return o&&(clearTimeout(o),o=null),e._currentDistanceMeasurement&&(e._currentDistanceMeasurement.destroy(),e._currentDistanceMeasurement=null),h(),void(e._touchState=0);var v=i.pick({canvasPos:l,snapping:e._snapping,snapToEdge:e._snapping});if(v&&v.snapped)r.set(v.worldPos),e.pointerCircle.start(v.snappedCanvasPos);else{var g=i.pick({canvasPos:l,pickSurface:!0});if(!g||!g.worldPos)return;r.set(g.worldPos),e.pointerCircle.start(g.canvasPos)}o=setTimeout((function(){1!==u||l[0]>a[0]+n||l[0]a[1]+n||l[1]a[0]+n||l[0]a[1]+n||l[1]a[0]+n||da[1]+n||pa[0]+n||da[1]+n||p1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),(s=t.call(this,"FastNav",e))._hideColorTexture=!1!==r.hideColorTexture,s._hidePBR=!1!==r.hidePBR,s._hideSAO=!1!==r.hideSAO,s._hideEdges=!1!==r.hideEdges,s._hideTransparentObjects=!!r.hideTransparentObjects,s._scaleCanvasResolution=!!r.scaleCanvasResolution,s._defaultScaleCanvasResolutionFactor=r.defaultScaleCanvasResolutionFactor||1,s._scaleCanvasResolutionFactor=r.scaleCanvasResolutionFactor||.6,s._delayBeforeRestore=!1!==r.delayBeforeRestore,s._delayBeforeRestoreSeconds=r.delayBeforeRestoreSeconds||.5;var n=1e3*s._delayBeforeRestoreSeconds,o=!1,a=function(){n=1e3*s._delayBeforeRestoreSeconds,o||(e.scene._renderer.setColorTextureEnabled(!s._hideColorTexture),e.scene._renderer.setPBREnabled(!s._hidePBR),e.scene._renderer.setSAOEnabled(!s._hideSAO),e.scene._renderer.setTransparentEnabled(!s._hideTransparentObjects),e.scene._renderer.setEdgesEnabled(!s._hideEdges),s._scaleCanvasResolution?e.scene.canvas.resolutionScale=s._scaleCanvasResolutionFactor:e.scene.canvas.resolutionScale=s._defaultScaleCanvasResolutionFactor,o=!0)},l=function(){e.scene.canvas.resolutionScale=s._defaultScaleCanvasResolutionFactor,e.scene._renderer.setEdgesEnabled(!0),e.scene._renderer.setColorTextureEnabled(!0),e.scene._renderer.setPBREnabled(!0),e.scene._renderer.setSAOEnabled(!0),e.scene._renderer.setTransparentEnabled(!0),o=!1};s._onCanvasBoundary=e.scene.canvas.on("boundary",a),s._onCameraMatrix=e.scene.camera.on("matrix",a),s._onSceneTick=e.scene.on("tick",(function(e){o&&(n-=e.deltaTime,(!s._delayBeforeRestore||n<=0)&&l())}));var u=!1;return s._onSceneMouseDown=e.scene.input.on("mousedown",(function(){u=!0})),s._onSceneMouseUp=e.scene.input.on("mouseup",(function(){u=!1})),s._onSceneMouseMove=e.scene.input.on("mousemove",(function(){u&&a()})),s}return C(i,[{key:"hideColorTexture",get:function(){return this._hideColorTexture},set:function(e){this._hideColorTexture=e}},{key:"hidePBR",get:function(){return this._hidePBR},set:function(e){this._hidePBR=e}},{key:"hideSAO",get:function(){return this._hideSAO},set:function(e){this._hideSAO=e}},{key:"hideEdges",get:function(){return this._hideEdges},set:function(e){this._hideEdges=e}},{key:"hideTransparentObjects",get:function(){return this._hideTransparentObjects},set:function(e){this._hideTransparentObjects=!1!==e}},{key:"scaleCanvasResolution",get:function(){return this._scaleCanvasResolution},set:function(e){this._scaleCanvasResolution=e}},{key:"defaultScaleCanvasResolutionFactor",get:function(){return this._defaultScaleCanvasResolutionFactor},set:function(e){this._defaultScaleCanvasResolutionFactor=e||1}},{key:"scaleCanvasResolutionFactor",get:function(){return this._scaleCanvasResolutionFactor},set:function(e){this._scaleCanvasResolutionFactor=e||.6}},{key:"delayBeforeRestore",get:function(){return this._delayBeforeRestore},set:function(e){this._delayBeforeRestore=e}},{key:"delayBeforeRestoreSeconds",get:function(){return this._delayBeforeRestoreSeconds},set:function(e){this._delayBeforeRestoreSeconds=null!=e?e:.5}},{key:"send",value:function(e,t){}},{key:"destroy",value:function(){this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),f(w(i.prototype),"destroy",this).call(this)}}]),i}(),Sh=function(){function e(){x(this,e)}return C(e,[{key:"getMetaModel",value:function(e,t,i){le.loadJSON(e,(function(e){t(e)}),(function(e){i(e)}))}},{key:"getGLTF",value:function(e,t,i){le.loadArraybuffer(e,(function(e){t(e)}),(function(e){i(e)}))}},{key:"getGLB",value:function(e,t,i){le.loadArraybuffer(e,(function(e){t(e)}),(function(e){i(e)}))}},{key:"getArrayBuffer",value:function(e,t,i,s){!function(e,t,i,s){var r=function(){};i=i||r,s=s||r;var n=/^data:(.*?)(;base64)?,(.*)$/,o=t.match(n);if(o){var a=!!o[2],l=o[3];l=window.decodeURIComponent(l),a&&(l=window.atob(l));try{for(var u=new ArrayBuffer(l.length),A=new Uint8Array(u),c=0;c0&&void 0!==arguments[0]?arguments[0]:{};x(this,e),this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale="en",this._messages={},this._locales=[],this._locale="en",this.messages=t.messages,this.locale=t.locale}return C(e,[{key:"messages",set:function(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire("updated",this)}},{key:"loadMessages",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t in e)this._messages[t]=e[t];this.messages=this._messages}},{key:"clearMessages",value:function(){this.messages={}}},{key:"locales",get:function(){return this._locales}},{key:"locale",get:function(){return this._locale},set:function(e){e=e||"de",this._locale!==e&&(this._locale=e,this.fire("updated",e))}},{key:"translate",value:function(e,t){var i=this._messages[this._locale];if(!i)return null;var s=Lh(e,i);return s?t?Rh(s,t):s:null}},{key:"translatePlurals",value:function(e,t,i){var s=this._messages[this._locale];if(!s)return null;var r=Lh(e,s);return(r=0===(t=parseInt(""+t,10))?r.zero:t>1?r.other:r.one)?(r=Rh(r,[t]),i&&(r=Rh(r,i)),r):null}},{key:"fire",value:function(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);var s=this._eventSubs[e];if(s)for(var r in s){if(s.hasOwnProperty(r))s[r].callback(t)}}},{key:"on",value:function(e,t){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new Q),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});var i=this._eventSubs[e];i||(i={},this._eventSubs[e]=i);var s=this._eventSubIDMap.addItem();i[s]={callback:t},this._eventSubEvents[s]=e;var r=this._events[e];return void 0!==r&&t(r),s}},{key:"off",value:function(e){if(null!=e&&this._eventSubEvents){var t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];var i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}}]),e}();function Lh(e,t){if(t[e])return t[e];for(var i=e.split("."),s=t,r=0,n=i.length;s&&r1&&void 0!==arguments[1]?arguments[1]:[];return e.replace(/\{\{|\}\}|\{(\d+)\}/g,(function(e,i){return"{{"===e?"{":"}}"===e?"}":t[i]}))}var Uh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).t=r.t,s}return C(i,[{key:"t",get:function(){return this._t},set:function(e){e=e||0,this._t=e<0?0:e>1?1:e}},{key:"tangent",get:function(){return this.getTangent(this._t)}},{key:"length",get:function(){var e=this._getLengths();return e[e.length-1]}},{key:"getTangent",value:function(e){var t=1e-4;void 0===e&&(e=this._t);var i=e-t,s=e+t;i<0&&(i=0),s>1&&(s=1);var r=this.getPoint(i),n=this.getPoint(s),o=$.subVec3(n,r,[]);return $.normalizeVec3(o,[])}},{key:"getPointAt",value:function(e){var t=this.getUToTMapping(e);return this.getPoint(t)}},{key:"getPoints",value:function(e){e||(e=5);var t,i=[];for(t=0;t<=e;t++)i.push(this.getPoint(t/e));return i}},{key:"_getLengths",value:function(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i,s=[],r=this.getPoint(0),n=0;for(s.push(0),i=1;i<=e;i++)t=this.getPoint(i/e),n+=$.lenVec3($.subVec3(t,r,[])),s.push(n),r=t;return this.cacheArcLengths=s,s}},{key:"_updateArcLengths",value:function(){this.needsUpdate=!0,this._getLengths()}},{key:"getUToTMapping",value:function(e,t){var i,s=this._getLengths(),r=0,n=s.length;i=t||e*s[n-1];for(var o,a=0,l=n-1;a<=l;)if((o=s[r=Math.floor(a+(l-a)/2)]-i)<0)a=r+1;else{if(!(o>0)){l=r;break}l=r-1}if(s[r=l]===i)return r/(n-1);var u=s[r];return(r+(i-u)/(s[r+1]-u))/(n-1)}}]),i}(),Oh=function(e){g(i,Uh);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).points=r.points,s.t=r.t,s}return C(i,[{key:"points",get:function(){return this._points},set:function(e){this._points=e||[]}},{key:"t",get:function(){return this._t},set:function(e){e=e||0,this._t=e<0?0:e>1?1:e}},{key:"point",get:function(){return this.getPoint(this._t)}},{key:"getPoint",value:function(e){var t=this.points;if(!(t.length<3)){var i=(t.length-1)*e,s=Math.floor(i),r=i-s,n=t[0===s?s:s-1],o=t[s],a=t[s>t.length-2?t.length-1:s+1],l=t[s>t.length-3?t.length-1:s+2],u=$.vec3();return u[0]=$.catmullRomInterpolate(n[0],o[0],a[0],l[0],r),u[1]=$.catmullRomInterpolate(n[1],o[1],a[1],l[1],r),u[2]=$.catmullRomInterpolate(n[2],o[2],a[2],l[2],r),u}this.error("Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].")}},{key:"getJSON",value:function(){return{points:points,t:this._t}}}]),i}(),Nh=$.vec3(),Qh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._frames=[],s._eyeCurve=new Oh(b(s)),s._lookCurve=new Oh(b(s)),s._upCurve=new Oh(b(s)),r.frames&&(s.addFrames(r.frames),s.smoothFrameTimes(1)),s}return C(i,[{key:"type",get:function(){return"CameraPath"}},{key:"frames",get:function(){return this._frames}},{key:"eyeCurve",get:function(){return this._eyeCurve}},{key:"lookCurve",get:function(){return this._lookCurve}},{key:"upCurve",get:function(){return this._upCurve}},{key:"saveFrame",value:function(e){var t=this.scene.camera;this.addFrame(e,t.eye,t.look,t.up)}},{key:"addFrame",value:function(e,t,i,s){var r={t:e,eye:t.slice(0),look:i.slice(0),up:s.slice(0)};this._frames.push(r),this._eyeCurve.points.push(r.eye),this._lookCurve.points.push(r.look),this._upCurve.points.push(r.up)}},{key:"addFrames",value:function(e){for(var t,i=0,s=e.length;i1?1:e,t.eye=this._eyeCurve.getPoint(e,Nh),t.look=this._lookCurve.getPoint(e,Nh),t.up=this._upCurve.getPoint(e,Nh)}},{key:"sampleFrame",value:function(e,t,i,s){e=e<0?0:e>1?1:e,this._eyeCurve.getPoint(e,t),this._lookCurve.getPoint(e,i),this._upCurve.getPoint(e,s)}},{key:"smoothFrameTimes",value:function(e){if(0!==this._frames.length){var t=$.vec3(),i=0;this._frames[0].t=0;for(var s=[],r=1,n=this._frames.length;r1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._look1=$.vec3(),s._eye1=$.vec3(),s._up1=$.vec3(),s._look2=$.vec3(),s._eye2=$.vec3(),s._up2=$.vec3(),s._orthoScale1=1,s._orthoScale2=1,s._flying=!1,s._flyEyeLookUp=!1,s._flyingEye=!1,s._flyingLook=!1,s._callback=null,s._callbackScope=null,s._time1=null,s._time2=null,s.easing=!1!==r.easing,s.duration=r.duration,s.fit=r.fit,s.fitFOV=r.fitFOV,s.trail=r.trail,s}return C(i,[{key:"type",get:function(){return"CameraFlightAnimation"}},{key:"flyTo",value:function(e,t,i){e=e||this.scene,this._flying&&this.stop(),this._flying=!1,this._flyingEye=!1,this._flyingLook=!1,this._flyingEyeLookUp=!1,this._callback=t,this._callbackScope=i;var s,r,n,o,a,l=this.scene.camera,u=!!e.projection&&e.projection!==l.projection;if(this._eye1[0]=l.eye[0],this._eye1[1]=l.eye[1],this._eye1[2]=l.eye[2],this._look1[0]=l.look[0],this._look1[1]=l.look[1],this._look1[2]=l.look[2],this._up1[0]=l.up[0],this._up1[1]=l.up[1],this._up1[2]=l.up[2],this._orthoScale1=l.ortho.scale,this._orthoScale2=e.orthoScale||this._orthoScale1,e.aabb)s=e.aabb;else if(6===e.length)s=e;else if(e.eye&&e.look||e.up)r=e.eye,n=e.look,o=e.up;else if(e.eye)r=e.eye;else if(e.look)n=e.look;else{var A=e;if((le.isNumeric(A)||le.isString(A))&&(a=A,!(A=this.scene.components[a])))return this.error("Component not found: "+le.inQuotes(a)),void(t&&(i?t.call(i):t()));u||(s=A.aabb||this.scene.aabb)}var c=e.poi;if(s){if(s[3]=1;e>1&&(e=1);var s=this.easing?i._ease(e,0,1,1):e,r=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?($.subVec3(r.eye,r.look,zh),r.eye=$.lerpVec3(s,0,1,this._eye1,this._eye2,jh),r.look=$.subVec3(jh,zh,Hh)):this._flyingLook&&(r.look=$.lerpVec3(s,0,1,this._look1,this._look2,Hh),r.up=$.lerpVec3(s,0,1,this._up1,this._up2,Gh)):this._flyingEyeLookUp&&(r.eye=$.lerpVec3(s,0,1,this._eye1,this._eye2,jh),r.look=$.lerpVec3(s,0,1,this._look1,this._look2,Hh),r.up=$.lerpVec3(s,0,1,this._up1,this._up2,Gh)),this._projection2){var n="ortho"===this._projection2?i._easeOutExpo(e,0,1,1):i._easeInCubic(e,0,1,1);r.customProjection.matrix=$.lerpMat4(n,0,1,this._projMatrix1,this._projMatrix2)}else r.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return r.ortho.scale=this._orthoScale2,void this.stop();_e.scheduleTask(this._update,this)}}},{key:"stop",value:function(){if(this._flying){this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);var e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire("stopped",!0,!0)}}},{key:"cancel",value:function(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire("canceled",!0,!0))}},{key:"duration",get:function(){return this._duration/1e3},set:function(e){this._duration=e?1e3*e:500,this.stop()}},{key:"fit",get:function(){return this._fit},set:function(e){this._fit=!1!==e}},{key:"fitFOV",get:function(){return this._fitFOV},set:function(e){this._fitFOV=e||45}},{key:"trail",get:function(){return this._trail},set:function(e){this._trail=!!e}},{key:"destroy",value:function(){this.stop(),f(w(i.prototype),"destroy",this).call(this)}}],[{key:"_ease",value:function(e,t,i,s){return-i*(e/=s)*(e-2)+t}},{key:"_easeInCubic",value:function(e,t,i,s){return i*(e/=s)*e*e+t}},{key:"_easeOutExpo",value:function(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}}]),i}(),Kh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._cameraFlightAnimation=new Wh(b(s)),s._t=0,s.state=i.SCRUBBING,s._playingFromT=0,s._playingToT=0,s._playingRate=r.playingRate||1,s._playingDir=1,s._lastTime=null,s.cameraPath=r.cameraPath,s._tick=s.scene.on("tick",s._updateT,b(s)),s}return C(i,[{key:"type",get:function(){return"CameraPathAnimation"}},{key:"_updateT",value:function(){var e=this._cameraPath;if(e){var t,s,r=performance.now(),n=this._lastTime?.001*(r-this._lastTime):0;if(this._lastTime=r,0!==n)switch(this.state){case i.SCRUBBING:return;case i.PLAYING:if(this._t+=this._playingRate*n,0===(t=this._cameraPath.frames.length)||this._playingDir<0&&this._t<=0||this._playingDir>0&&this._t>=this._cameraPath.frames[t-1].t)return this.state=i.SCRUBBING,this._t=this._cameraPath.frames[t-1].t,void this.fire("stopped");e.loadFrame(this._t);break;case i.PLAYING_TO:s=this._t+this._playingRate*n*this._playingDir,(this._playingDir<0&&s<=this._playingToT||this._playingDir>0&&s>=this._playingToT)&&(s=this._playingToT,this.state=i.SCRUBBING,this.fire("stopped")),this._t=s,e.loadFrame(this._t)}}}},{key:"_ease",value:function(e,t,i,s){return-i*(e/=s)*(e-2)+t}},{key:"cameraPath",get:function(){return this._cameraPath},set:function(e){this._cameraPath=e}},{key:"rate",get:function(){return this._playingRate},set:function(e){this._playingRate=e}},{key:"play",value:function(){this._cameraPath&&(this._lastTime=null,this.state=i.PLAYING)}},{key:"playToT",value:function(e){this._cameraPath&&(this._playingFromT=this._t,this._playingToT=e,this._playingDir=this._playingToT-this._playingFromT<0?-1:1,this._lastTime=null,this.state=i.PLAYING_TO)}},{key:"playToFrame",value:function(e){var t=this._cameraPath;if(t){var i=t.frames[e];i?this.playToT(i.t):this.error("playToFrame - frame index out of range: "+e)}}},{key:"flyToFrame",value:function(e,t){var s=this._cameraPath;if(s){var r=s.frames[e];r?(this.state=i.SCRUBBING,this._cameraFlightAnimation.flyTo(r,t)):this.error("flyToFrame - frame index out of range: "+e)}}},{key:"scrubToT",value:function(e){var t=this._cameraPath;t&&(this.scene.camera&&(this._t=e,t.loadFrame(this._t),this.state=i.SCRUBBING))}},{key:"scrubToFrame",value:function(e){var t=this._cameraPath;t&&(this.scene.camera&&(t.frames[e]?(t.loadFrame(this._t),this.state=i.SCRUBBING):this.error("playToFrame - frame index out of range: "+e)))}},{key:"stop",value:function(){this.state=i.SCRUBBING,this.fire("stopped")}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this),this.scene.off(this._tick)}}]),i}();Kh.STOPPED=0,Kh.SCRUBBING=1,Kh.PLAYING=2,Kh.PLAYING_TO=3;var Xh=$.vec3(),Jh=$.vec3();$.vec3();var Yh=$.vec3([0,-1,0]),Zh=$.vec4([0,0,0,1]),qh=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._src=null,s._image=null,s._pos=$.vec3(),s._origin=$.vec3(),s._rtcPos=$.vec3(),s._dir=$.vec3(),s._size=1,s._imageSize=$.vec2(),s._texture=new On(b(s)),s._plane=new nn(b(s),{geometry:new Ti(b(s),Jn({center:[0,0,0],xSize:1,zSize:1,xSegments:10,zSegments:10})),material:new Ni(b(s),{diffuse:[0,0,0],ambient:[0,0,0],specular:[0,0,0],diffuseMap:s._texture,emissiveMap:s._texture,backfaces:!0}),clippable:r.clippable}),s._grid=new nn(b(s),{geometry:new Ti(b(s),Xn({size:1,divisions:10})),material:new Ni(b(s),{diffuse:[0,0,0],ambient:[0,0,0],emissive:[.2,.8,.2]}),position:[0,.001,0],clippable:r.clippable}),s._node=new wn(b(s),{rotation:[0,0,0],position:[0,0,0],scale:[1,1,1],clippable:!1,children:[s._plane,s._grid]}),s._gridVisible=!1,s.visible=!0,s.gridVisible=r.gridVisible,s.position=r.position,s.rotation=r.rotation,s.dir=r.dir,s.size=r.size,s.collidable=r.collidable,s.clippable=r.clippable,s.pickable=r.pickable,s.opacity=r.opacity,r.image?s.image=r.image:s.src=r.src,s}return C(i,[{key:"visible",get:function(){return this._plane.visible},set:function(e){this._plane.visible=e,this._grid.visible=this._gridVisible&&e}},{key:"gridVisible",get:function(){return this._gridVisible},set:function(e){e=!1!==e,this._gridVisible=e,this._grid.visible=this._gridVisible&&this.visible}},{key:"image",get:function(){return this._image},set:function(e){this._image=e,this._image&&(this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}},{key:"src",get:function(){return this._src},set:function(e){var t=this;if(this._src=e,this._src){this._image=null;var i=new Image;i.onload=function(){t._texture.image=i,t._imageSize[0]=i.width,t._imageSize[1]=i.height,t._updatePlaneSizeFromImage()},i.src=this._src}}},{key:"position",get:function(){return this._pos},set:function(e){this._pos.set(e||[0,0,0]),Re(this._pos,this._origin,this._rtcPos),this._node.origin=this._origin,this._node.position=this._rtcPos}},{key:"rotation",get:function(){return this._node.rotation},set:function(e){this._node.rotation=e}},{key:"size",get:function(){return this._size},set:function(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}},{key:"dir",get:function(){return this._dir},set:function(e){if(this._dir.set(e||[0,0,-1]),e){var t=this.scene.center,i=[-this._dir[0],-this._dir[1],-this._dir[2]];$.subVec3(t,this.position,Xh);var s=-$.dotVec3(i,Xh);$.normalizeVec3(i),$.mulVec3Scalar(i,s,Jh),$.vec3PairToQuaternion(Yh,e,Zh),this._node.quaternion=Zh}}},{key:"collidable",get:function(){return this._node.collidable},set:function(e){this._node.collidable=!1!==e}},{key:"clippable",get:function(){return this._node.clippable},set:function(e){this._node.clippable=!1!==e}},{key:"pickable",get:function(){return this._node.pickable},set:function(e){this._node.pickable=!1!==e}},{key:"opacity",get:function(){return this._node.opacity},set:function(e){this._node.opacity=e}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this)}},{key:"_updatePlaneSizeFromImage",value:function(){var e=this._size,t=this._imageSize[0],i=this._imageSize[1];if(t>i){var s=i/t;this._node.scale=[e,1,e*s]}else{var r=t/i;this._node.scale=[e*r,1,e]}}}]),i}(),$h=function(e){g(i,yi);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,i);var n=b(s=t.call(this,e,r));s._shadowRenderBuf=null,s._shadowViewMatrix=null,s._shadowProjMatrix=null,s._shadowViewMatrixDirty=!0,s._shadowProjMatrixDirty=!0;var o=s.scene.camera,a=s.scene.canvas;return s._onCameraViewMatrix=o.on("viewMatrix",(function(){s._shadowViewMatrixDirty=!0})),s._onCameraProjMatrix=o.on("projMatrix",(function(){s._shadowProjMatrixDirty=!0})),s._onCanvasBoundary=a.on("boundary",(function(){s._shadowProjMatrixDirty=!0})),s._state=new qt({type:"point",pos:$.vec3([1,1,1]),color:$.vec3([.7,.7,.8]),intensity:1,attenuation:[0,0,0],space:r.space||"view",castsShadow:!1,getShadowViewMatrix:function(){if(n._shadowViewMatrixDirty){n._shadowViewMatrix||(n._shadowViewMatrix=$.identityMat4());var e=n._state.pos,t=o.look,i=o.up;$.lookAtMat4v(e,t,i,n._shadowViewMatrix),n._shadowViewMatrixDirty=!1}return n._shadowViewMatrix},getShadowProjMatrix:function(){if(n._shadowProjMatrixDirty){n._shadowProjMatrix||(n._shadowProjMatrix=$.identityMat4());var e=n.scene.canvas.canvas;$.perspectiveMat4(Math.PI/180*70,e.clientWidth/e.clientHeight,.1,500,n._shadowProjMatrix),n._shadowProjMatrixDirty=!1}return n._shadowProjMatrix},getShadowRenderBuf:function(){return n._shadowRenderBuf||(n._shadowRenderBuf=new Wt(n.scene.canvas.canvas,n.scene.canvas.gl,{size:[1024,1024]})),n._shadowRenderBuf}}),s.pos=r.pos,s.color=r.color,s.intensity=r.intensity,s.constantAttenuation=r.constantAttenuation,s.linearAttenuation=r.linearAttenuation,s.quadraticAttenuation=r.quadraticAttenuation,s.castsShadow=r.castsShadow,s.scene._lightCreated(b(s)),s}return C(i,[{key:"type",get:function(){return"PointLight"}},{key:"pos",get:function(){return this._state.pos},set:function(e){this._state.pos.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}},{key:"color",get:function(){return this._state.color},set:function(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}},{key:"intensity",get:function(){return this._state.intensity},set:function(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}},{key:"constantAttenuation",get:function(){return this._state.attenuation[0]},set:function(e){this._state.attenuation[0]=e||0,this.glRedraw()}},{key:"linearAttenuation",get:function(){return this._state.attenuation[1]},set:function(e){this._state.attenuation[1]=e||0,this.glRedraw()}},{key:"quadraticAttenuation",get:function(){return this._state.attenuation[2]},set:function(e){this._state.attenuation[2]=e||0,this.glRedraw()}},{key:"castsShadow",get:function(){return this._state.castsShadow},set:function(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}},{key:"destroy",value:function(){var e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),f(w(i.prototype),"destroy",this).call(this),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}}]),i}();function ed(e){return 0==(e&e-1)}function td(e){--e;for(var t=1;t<32;t<<=1)e|=e>>t;return e+1}var id=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,i);var n=(s=t.call(this,e,r)).scene.canvas.gl;return s._state=new qt({texture:new Dn({gl:n,target:n.TEXTURE_CUBE_MAP}),flipY:s._checkFlipY(r.minFilter),encoding:s._checkEncoding(r.encoding),minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,mipmaps:!0}),s._src=r.src,s._images=[],s._loadSrc(r.src),se.memory.textures++,s}return C(i,[{key:"type",get:function(){return"CubeTexture"}},{key:"_checkFlipY",value:function(e){return!!e}},{key:"_checkEncoding",value:function(e){return 3e3!==(e=e||3e3)&&3001!==e&&(this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),e=3e3),e}},{key:"_webglContextRestored",value:function(){this.scene.canvas.gl,this._state.texture=null,this._src&&this._loadSrc(this._src)}},{key:"_loadSrc",value:function(e){var t=this,i=this.scene.canvas.gl;this._images=[];for(var s=!1,r=0,n=function(n){var o,a,l=new Image;l.onload=(o=l,a=n,function(){if(!s&&(o=function(e){if(!ed(e.width)||!ed(e.height)){var t=document.createElement("canvas");t.width=td(e.width),t.height=td(e.height),t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),e=t}return e}(o),t._images[a]=o,6==++r)){var e=t._state.texture;e||(e=new Dn({gl:i,target:i.TEXTURE_CUBE_MAP}),t._state.texture=e),e.setImage(t._images,t._state),t.fire("loaded",t._src,!1),t.glRedraw()}}),l.onerror=function(){s=!0},l.src=e[n]},o=0;o1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).scene._lightsState.addReflectionMap(s._state),s.scene._reflectionMapCreated(b(s)),s}return C(i,[{key:"type",get:function(){return"ReflectionMap"}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this),this.scene._reflectionMapDestroyed(this)}}]),i}(),rd=function(e){g(i,id);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).scene._lightMapCreated(b(s)),s}return C(i,[{key:"type",get:function(){return"LightMap"}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this),this.scene._lightMapDestroyed(this)}}]),i}(),nd=function(e){g(i,et);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,{entity:r.entity,occludable:r.occludable,worldPos:r.worldPos}))._occluded=!1,s._visible=!0,s._src=null,s._image=null,s._pos=$.vec3(),s._origin=$.vec3(),s._rtcPos=$.vec3(),s._dir=$.vec3(),s._size=1,s._imageSize=$.vec2(),s._texture=new On(b(s),{src:r.src}),s._geometry=new Ti(b(s),{primitive:"triangles",positions:[3,3,0,-3,3,0,-3,-3,0,3,-3,0],normals:[-1,0,0,-1,0,0,-1,0,0,-1,0,0],uv:[1,-1,0,-1,0,0,1,0],indices:[0,1,2,0,2,3]}),s._mesh=new nn(b(s),{geometry:s._geometry,material:new Ni(b(s),{ambient:[.9,.3,.9],shininess:30,diffuseMap:s._texture,backfaces:!0}),scale:[1,1,1],position:r.worldPos,rotation:[90,0,0],billboard:"spherical",occluder:!1}),s.visible=!0,s.collidable=r.collidable,s.clippable=r.clippable,s.pickable=r.pickable,s.opacity=r.opacity,s.size=r.size,r.image?s.image=r.image:s.src=r.src,s}return C(i,[{key:"_setVisible",value:function(e){this._occluded=!e,this._mesh.visible=this._visible&&!this._occluded,f(w(i.prototype),"_setVisible",this).call(this,e)}},{key:"visible",get:function(){return this._visible},set:function(e){this._visible=null==e||e,this._mesh.visible=this._visible&&!this._occluded}},{key:"image",get:function(){return this._image},set:function(e){this._image=e,this._image&&(this._imageSize[0]=this._image.width,this._imageSize[1]=this._image.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}},{key:"src",get:function(){return this._src},set:function(e){var t=this;if(this._src=e,this._src){this._image=null;var i=new Image;i.onload=function(){t._texture.image=i,t._imageSize[0]=i.width,t._imageSize[1]=i.height,t._updatePlaneSizeFromImage()},i.src=this._src}}},{key:"size",get:function(){return this._size},set:function(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}},{key:"collidable",get:function(){return this._mesh.collidable},set:function(e){this._mesh.collidable=!1!==e}},{key:"clippable",get:function(){return this._mesh.clippable},set:function(e){this._mesh.clippable=!1!==e}},{key:"pickable",get:function(){return this._mesh.pickable},set:function(e){this._mesh.pickable=!1!==e}},{key:"opacity",get:function(){return this._mesh.opacity},set:function(e){this._mesh.opacity=e}},{key:"_updatePlaneSizeFromImage",value:function(){var e=.5*this._size,t=this._imageSize[0],i=this._imageSize[1],s=i/t;this._geometry.positions=t>i?[e,e*s,0,-e,e*s,0,-e,-e*s,0,e,-e*s,0]:[e/s,e,0,-e/s,e,0,-e/s,-e,0,e/s,-e,0]}}]),i}(),od=function(){function e(t){x(this,e),this._eye=$.vec3(),this._look=$.vec3(),this._up=$.vec3(),this._projection={},t&&this.saveCamera(t)}return C(e,[{key:"saveCamera",value:function(e){var t=e.camera,i=t.project;switch(this._eye.set(t.eye),this._look.set(t.look),this._up.set(t.up),t.projection){case"perspective":this._projection={projection:"perspective",fov:i.fov,fovAxis:i.fovAxis,near:i.near,far:i.far};break;case"ortho":this._projection={projection:"ortho",scale:i.scale,near:i.near,far:i.far};break;case"frustum":this._projection={projection:"frustum",left:i.left,right:i.right,top:i.top,bottom:i.bottom,near:i.near,far:i.far};break;case"custom":this._projection={projection:"custom",matrix:i.matrix.slice()}}}},{key:"restoreCamera",value:function(e,t){var i=e.camera,s=this._projection;function r(){switch(s.type){case"perspective":i.perspective.fov=s.fov,i.perspective.fovAxis=s.fovAxis,i.perspective.near=s.near,i.perspective.far=s.far;break;case"ortho":i.ortho.scale=s.scale,i.ortho.near=s.near,i.ortho.far=s.far;break;case"frustum":i.frustum.left=s.left,i.frustum.right=s.right,i.frustum.top=s.top,i.frustum.bottom=s.bottom,i.frustum.near=s.near,i.frustum.far=s.far;break;case"custom":i.customProjection.matrix=s.matrix}}t?e.viewer.cameraFlight.flyTo({eye:this._eye,look:this._look,up:this._up,orthoScale:s.scale,projection:s.projection},(function(){r(),t()})):(i.eye=this._eye,i.look=this._look,i.up=this._up,r(),i.projection=s.projection)}}]),e}(),ad=$.vec3(),ld=function(){function e(t){if(x(this,e),this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsOpacity=[],this.numObjects=0,t){var i=t.metaScene.scene;this.saveObjects(i,t)}}return C(e,[{key:"saveObjects",value:function(e,t,i){this.numObjects=0,this._mask=i?le.apply(i,{}):null;for(var s=!i||i.visible,r=!i||i.edges,n=!i||i.xrayed,o=!i||i.highlighted,a=!i||i.selected,l=!i||i.clippable,u=!i||i.pickable,A=!i||i.colorize,c=!i||i.opacity,h=t.metaObjects,d=e.objects,p=0,f=h.length;p1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).v0=r.v0,s.v1=r.v1,s.v2=r.v2,s.v3=r.v3,s.t=r.t,s}return C(i,[{key:"v0",get:function(){return this._v0},set:function(e){this._v0=e||$.vec3([0,0,0])}},{key:"v1",get:function(){return this._v1},set:function(e){this._v1=e||$.vec3([0,0,0])}},{key:"v2",get:function(){return this._v2},set:function(e){this._v2=e||$.vec3([0,0,0])}},{key:"v3",get:function(){return this._v3},set:function(e){this.fire("v3",this._v3=e||$.vec3([0,0,0]))}},{key:"t",get:function(){return this._t},set:function(e){e=e||0,this._t=e<0?0:e>1?1:e}},{key:"point",get:function(){return this.getPoint(this._t)}},{key:"getPoint",value:function(e){var t=$.vec3();return t[0]=$.b3(e,this._v0[0],this._v1[0],this._v2[0],this._v3[0]),t[1]=$.b3(e,this._v0[1],this._v1[1],this._v2[1],this._v3[1]),t[2]=$.b3(e,this._v0[2],this._v1[2],this._v2[2],this._v3[2]),t}},{key:"getJSON",value:function(){return{v0:this._v0,v1:this._v1,v2:this._v2,v3:this._v3,t:this._t}}}]),i}(),hd=function(e){g(i,Uh);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._cachedLengths=[],s._dirty=!0,s._curves=[],s._t=0,s._dirtySubs=[],s._destroyedSubs=[],s.curves=r.curves||[],s.t=r.t,s}return C(i,[{key:"addCurve",value:function(e){this._curves.push(e),this._dirty=!0}},{key:"curves",get:function(){return this._curves},set:function(e){var t,i,s;for(e=e||[],i=0,s=this._curves.length;i1?1:e}},{key:"point",get:function(){return this.getPoint(this._t)}},{key:"length",get:function(){var e=this._getCurveLengths();return e[e.length-1]}},{key:"getPoint",value:function(e){for(var t,i=e*this.length,s=this._getCurveLengths(),r=0;r=i){var n=1-(s[r]-i)/(t=this._curves[r]).length;return t.getPointAt(n)}r++}return null}},{key:"_getCurveLengths",value:function(){if(!this._dirty)return this._cachedLengths;var e,t=[],i=0,s=this._curves.length;for(e=0;e1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r)).v0=r.v0,s.v1=r.v1,s.v2=r.v2,s.t=r.t,s}return C(i,[{key:"v0",get:function(){return this._v0},set:function(e){this._v0=e||$.vec3([0,0,0])}},{key:"v1",get:function(){return this._v1},set:function(e){this._v1=e||$.vec3([0,0,0])}},{key:"v2",get:function(){return this._v2},set:function(e){this._v2=e||$.vec3([0,0,0])}},{key:"t",get:function(){return this._t},set:function(e){e=e||0,this._t=e<0?0:e>1?1:e}},{key:"point",get:function(){return this.getPoint(this._t)}},{key:"getPoint",value:function(e){var t=$.vec3();return t[0]=$.b2(e,this._v0[0],this._v1[0],this._v2[0]),t[1]=$.b2(e,this._v0[1],this._v1[1],this._v2[1]),t[2]=$.b2(e,this._v0[2],this._v1[2],this._v2[2]),t}},{key:"getJSON",value:function(){return{v0:this._v0,v1:this._v1,v2:this._v2,t:this._t}}}]),i}(),pd=function(e){g(i,hh);var t=_(i);function i(e){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),t.call(this,e,s)}return C(i)}(),fd=function(e){g(i,we);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,e,r))._skyboxMesh=new nn(b(s),{geometry:new Ti(b(s),{primitive:"triangles",positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),background:!0,scale:[2e3,2e3,2e3],rotation:[0,-90,0],material:new Ni(b(s),{ambient:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],emissive:[1,1,1],emissiveMap:new On(b(s),{src:r.src,flipY:!0,wrapS:"clampToEdge",wrapT:"clampToEdge",encoding:r.encoding||"sRGB"}),backfaces:!0}),visible:!1,pickable:!1,clippable:!1,collidable:!1}),s.size=r.size,s.active=r.active,s}return C(i,[{key:"size",get:function(){return this._size},set:function(e){this._size=e||1e3,this._skyboxMesh.scale=[this._size,this._size,this._size]}},{key:"active",get:function(){return this._skyboxMesh.visible},set:function(e){this._skyboxMesh.visible=e}}]),i}(),vd=function(){function e(){x(this,e)}return C(e,[{key:"transcode",value:function(e,t){}},{key:"destroy",value:function(){}}]),e}(),gd=$.vec4(),md=$.vec4(),_d=$.vec3(),yd=$.vec3(),bd=$.vec3(),wd=$.vec4(),Bd=$.vec4(),xd=$.vec4(),Pd=function(){function e(t){x(this,e),this._scene=t}return C(e,[{key:"dollyToCanvasPos",value:function(e,t,i){var s=!1,r=this._scene.camera;if(e){var n=$.subVec3(e,r.eye,_d);s=$.lenVec3(n)0&&void 0!==arguments[0]?arguments[0]:{};this.destroyPivotSphere(),this._pivotSphereEnabled=!0,e.size&&(this._pivotSphereSize=e.size);var t=e.color||[1,0,0];this._pivotSphereMaterial=new Ni(this._scene,{emissive:t,ambient:t,specular:[0,0,0],diffuse:[0,0,0]})}},{key:"disablePivotSphere",value:function(){this.destroyPivotSphere(),this._pivotSphereEnabled=!1}},{key:"startPivot",value:function(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;var e=this._scene.camera,t=$.lookAtMat4v(e.eye,e.look,e.worldUp);$.transformPoint3(t,this.getPivotPos(),this._cameraOffset);var i=this.getPivotPos();this._cameraOffset[2]+=$.distVec3(e.eye,i),t=$.inverseMat4(t);var s=$.transformVec3(t,this._cameraOffset),r=$.vec3();if($.subVec3(e.eye,i,r),$.addVec3(r,s),e.zUp){var n=r[1];r[1]=r[2],r[2]=n}this._radius=$.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}},{key:"_cameraLookingDownwards",value:function(){var e=this._scene.camera,t=$.normalizeVec3($.subVec3(e.look,e.eye,Cd)),i=$.cross3Vec3(t,e.worldUp,Md);return $.sqLenVec3(i)<=1e-4}},{key:"getPivoting",value:function(){return this._pivoting}},{key:"setPivotPos",value:function(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}},{key:"setCanvasPivotPos",value:function(e){var t=this._scene.camera,i=Math.abs($.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),n=s.subarray(12),o=[0,0,-1,1],a=$.dotVec4(o,r)/$.dotVec4(o,n),l=Fd;t.project.unproject(e,a,kd,Id,l);var u=$.normalizeVec3($.subVec3(l,t.eye,Cd)),A=$.addVec3(t.eye,$.mulVec3Scalar(u,i,Md),Ed);this.setPivotPos(A)}},{key:"getPivotPos",value:function(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}},{key:"continuePivot",value:function(e,t){if(this._pivoting&&(0!==e||0!==t)){var i=this._scene.camera,s=-e,r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=$.clamp(this._polar,.001,Math.PI-.001);var n=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){var o=n[1];n[1]=n[2],n[2]=o}var a=$.lenVec3($.subVec3(i.look,i.eye,$.vec3())),l=this.getPivotPos();$.addVec3(n,l);var u=$.lookAtMat4v(n,l,i.worldUp);u=$.inverseMat4(u);var A=$.transformVec3(u,this._cameraOffset);u[12]-=A[0],u[13]-=A[1],u[14]-=A[2];var c=[u[8],u[9],u[10]];i.eye=[u[12],u[13],u[14]],$.subVec3(i.eye,$.mulVec3Scalar(c,a),i.look),i.up=[u[4],u[5],u[6]],this.showPivot()}}},{key:"showPivot",value:function(){this._shown||(this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility="visible"),this._pivotSphereEnabled&&(this.destroyPivotSphere(),this.createPivotSphere()),this._shown=!0)}},{key:"hidePivot",value:function(){this._shown&&(this._pivotElement&&(this._pivotElement.style.visibility="hidden"),this._pivotSphereEnabled&&this.destroyPivotSphere(),this._shown=!1)}},{key:"endPivot",value:function(){this._pivoting=!1}},{key:"destroy",value:function(){this.destroyPivotSphere(),this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}]),e}(),Sd=function(){function e(t,i){x(this,e),this._scene=t.scene,this._cameraControl=t,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=i,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick=!1,this.pickCursorPos=$.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._lastHash=null,this._needFireEvents=0}return C(e,[{key:"update",value:function(){if(this._configs.pointerEnabled&&(this.schedulePickEntity||this.schedulePickSurface)){var e="".concat(~~this.pickCursorPos[0],"-").concat(~~this.pickCursorPos[1],"-").concat(this.scheduleSnapOrPick,"-").concat(this.schedulePickSurface,"-").concat(this.schedulePickEntity);if(this._lastHash!==e){this.picked=!1,this.pickedSurface=!1,this.snappedOrPicked=!1,this.hoveredSnappedOrSurfaceOff=!1;var t=this._cameraControl.hasSubs("hoverSurface");if(this.scheduleSnapOrPick){var i=this._scene.pick({canvasPos:this.pickCursorPos,snapRadius:this._configs.snapRadius,snapToVertex:this._configs.snapToVertex,snapToEdge:this._configs.snapToEdge});i&&(i.snappedToEdge||i.snappedToVertex)?(this.snapPickResult=i,this.snappedOrPicked=!0,this._needFireEvents++):(this.schedulePickSurface=!0,this.snapPickResult=null)}if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){var s=this.pickResult.canvasPos;if(s[0]===this.pickCursorPos[0]&&s[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents+=t?1:0,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.hoveredSnappedOrSurfaceOff=!0,void(this.scheduleSnapOrPick=!1)}if(this.schedulePickEntity&&this.pickResult&&(this.pickResult.canvasPos||this.pickResult.snappedCanvasPos)){var r=this.pickResult.canvasPos||this.pickResult.snappedCanvasPos;if(r[0]===this.pickCursorPos[0]&&r[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface||this.scheduleSnapOrPick&&!this.snapPickResult?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult?(this.picked=!0,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.pickedSurface=!0,this._needFireEvents++):this.scheduleSnapOrPick&&(this.hoveredSnappedOrSurfaceOff=!0,this._needFireEvents++)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents++)),this.scheduleSnapOrPick=!1,this.schedulePickEntity=!1,this.schedulePickSurface=!1}}}},{key:"fireEvents",value:function(){if(0!==this._needFireEvents){if(this.hoveredSnappedOrSurfaceOff&&this._cameraControl.fire("hoverSnapOrSurfaceOff",{canvasPos:this.pickCursorPos,pointerPos:this.pickCursorPos},!0),this.snappedOrPicked)if(this.snapPickResult){var e=new xt;e.entity=this.snapPickResult.entity,e.snappedToVertex=this.snapPickResult.snappedToVertex,e.snappedToEdge=this.snapPickResult.snappedToEdge,e.worldPos=this.snapPickResult.worldPos,e.canvasPos=this.pickCursorPos,e.snappedCanvasPos=this.snapPickResult.snappedCanvasPos,this._cameraControl.fire("hoverSnapOrSurface",e,!0),this.snapPickResult=null}else this._cameraControl.fire("hoverSnapOrSurface",this.pickResult,!0);if(this.picked&&this.pickResult&&(this.pickResult.entity||this.pickResult.worldPos)){if(this.pickResult.entity){var t=this.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire("hoverEnter",this.pickResult,!0),this._lastPickedEntityId=t)}this._cameraControl.fire("hover",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire("hoverSurface",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire("hoverOff",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=0}}}]),e}(),Td=$.vec2(),Ld=function(){function e(t,i,s,r,n){x(this,e),this._scene=t;var o,a,l,u=i.pickController,A=0,c=0,h=0,d=0,p=!1,f=$.vec3(),v=!0,g=this._scene.canvas.canvas,m=[];function _(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];g.style.cursor="move",y(),e&&b()}function y(){A=r.pointerCanvasPos[0],c=r.pointerCanvasPos[1],h=r.pointerCanvasPos[0],d=r.pointerCanvasPos[1]}function b(){u.pickCursorPos=r.pointerCanvasPos,u.schedulePickSurface=!0,u.update(),u.picked&&u.pickedSurface&&u.pickResult&&u.pickResult.worldPos?(p=!0,f.set(u.pickResult.worldPos)):p=!1}document.addEventListener("keydown",this._documentKeyDownHandler=function(e){if(s.active&&s.pointerEnabled&&t.input.keyboardEnabled){var i=e.keyCode;m[i]=!0}}),document.addEventListener("keyup",this._documentKeyUpHandler=function(e){if(s.active&&s.pointerEnabled&&t.input.keyboardEnabled){var i=e.keyCode;m[i]=!1}}),g.addEventListener("mousedown",this._mouseDownHandler=function(e){if(s.active&&s.pointerEnabled)switch(e.which){case 1:m[t.input.KEY_SHIFT]||s.planView?(o=!0,_()):(o=!0,_(!1));break;case 2:a=!0,_();break;case 3:l=!0,s.panRightClick&&_()}}),document.addEventListener("mousemove",this._documentMouseMoveHandler=function(e){if(s.active&&s.pointerEnabled&&(o||a||l)){var i=t.canvas.boundary,u=i[2],h=i[3],d=r.pointerCanvasPos[0],v=r.pointerCanvasPos[1],g=m[t.input.KEY_SHIFT]||s.planView||!s.panRightClick&&a||s.panRightClick&&l,_=document.pointerLockElement?e.movementX:d-A,y=document.pointerLockElement?e.movementY:v-c;if(g){var b=t.camera;if("perspective"===b.projection){var w=Math.abs(p?$.lenVec3($.subVec3(f,t.camera.eye,[])):t.camera.eyeLookDist)*Math.tan(b.perspective.fov/2*Math.PI/180);n.panDeltaX+=1.5*_*w/h,n.panDeltaY+=1.5*y*w/h}else n.panDeltaX+=.5*b.ortho.scale*(_/h),n.panDeltaY+=.5*b.ortho.scale*(y/h)}else!o||a||l||s.planView||(s.firstPerson?(n.rotateDeltaY-=_/u*s.dragRotationRate/2,n.rotateDeltaX+=y/h*(s.dragRotationRate/4)):(n.rotateDeltaY-=_/u*(1.5*s.dragRotationRate),n.rotateDeltaX+=y/h*(1.5*s.dragRotationRate)));A=d,c=v}}),g.addEventListener("mousemove",this._canvasMouseMoveHandler=function(e){s.active&&s.pointerEnabled&&r.mouseover&&(v=!0)}),document.addEventListener("mouseup",this._documentMouseUpHandler=function(e){if(s.active&&s.pointerEnabled)switch(e.which){case 1:case 2:case 3:o=!1,a=!1,l=!1}}),g.addEventListener("mouseup",this._mouseUpHandler=function(e){if(s.active&&s.pointerEnabled){if(3===e.which){!function(e,t){if(e){for(var i=e.target,s=0,r=0,n=0,o=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,n+=i.scrollLeft,o+=i.scrollTop,i=i.offsetParent;t[0]=e.pageX+n-s,t[1]=e.pageY+o-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,Td);var t=Td[0],r=Td[1];Math.abs(t-h)<3&&Math.abs(r-d)<3&&i.cameraControl.fire("rightClick",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:Td,event:e},!0)}g.style.removeProperty("cursor")}}),g.addEventListener("mouseenter",this._mouseEnterHandler=function(){s.active&&s.pointerEnabled});var w=1/60,B=null;g.addEventListener("wheel",this._mouseWheelHandler=function(e){if(s.active&&s.pointerEnabled){var t=performance.now()/1e3,i=null!==B?t-B:0;B=t,i>.05&&(i=.05),i0?i.cameraFlight.flyTo(Vd,(function(){i.pivotController.getPivoting()&&s.followPointer&&i.pivotController.showPivot()})):(i.cameraFlight.jumpTo(Vd),i.pivotController.getPivoting()&&s.followPointer&&i.pivotController.showPivot())}}}))}return C(e,[{key:"reset",value:function(){}},{key:"destroy",value:function(){this._scene.input.off(this._onSceneKeyDown)}}]),e}(),jd=function(){function e(t,i,s,r,n){var o=this;x(this,e),this._scene=t;var a=i.pickController,l=i.pivotController,u=i.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;var A=!1,c=!1,h=this._scene.canvas.canvas,d=function(e){var s;e&&e.worldPos&&(s=e.worldPos);var r=e&&e.entity?e.entity.aabb:t.aabb;if(s){var n=t.camera;$.subVec3(n.eye,n.look,[]),i.cameraFlight.flyTo({aabb:r})}else i.cameraFlight.flyTo({aabb:r})},p=t.tickify(this._canvasMouseMoveHandler=function(e){if(s.active&&s.pointerEnabled&&!A&&!c){var i=u.hasSubs("hover"),n=u.hasSubs("hoverEnter"),l=u.hasSubs("hoverOut"),h=u.hasSubs("hoverOff"),d=u.hasSubs("hoverSurface"),p=u.hasSubs("hoverSnapOrSurface");if(i||n||l||h||d||p)if(a.pickCursorPos=r.pointerCanvasPos,a.schedulePickEntity=!0,a.schedulePickSurface=d,a.scheduleSnapOrPick=p,a.update(),a.pickResult){if(a.pickResult.entity){var f=a.pickResult.entity.id;o._lastPickedEntityId!==f&&(void 0!==o._lastPickedEntityId&&u.fire("hoverOut",{entity:t.objects[o._lastPickedEntityId]},!0),u.fire("hoverEnter",a.pickResult,!0),o._lastPickedEntityId=f)}u.fire("hover",a.pickResult,!0),(a.pickResult.worldPos||a.pickResult.snappedWorldPos)&&u.fire("hoverSurface",a.pickResult,!0)}else void 0!==o._lastPickedEntityId&&(u.fire("hoverOut",{entity:t.objects[o._lastPickedEntityId]},!0),o._lastPickedEntityId=void 0),u.fire("hoverOff",{canvasPos:a.pickCursorPos},!0)}});h.addEventListener("mousemove",p),h.addEventListener("mousedown",this._canvasMouseDownHandler=function(e){if(1===e.which&&(A=!0),3===e.which&&(c=!0),1===e.which&&s.active&&s.pointerEnabled&&(r.mouseDownClientX=e.clientX,r.mouseDownClientY=e.clientY,r.mouseDownCursorX=r.pointerCanvasPos[0],r.mouseDownCursorY=r.pointerCanvasPos[1],!s.firstPerson&&s.followPointer&&(a.pickCursorPos=r.pointerCanvasPos,a.schedulePickSurface=!0,a.update(),1===e.which))){var i=a.pickResult;i&&i.worldPos?(l.setPivotPos(i.worldPos),l.startPivot()):(s.smartPivot?l.setCanvasPivotPos(r.pointerCanvasPos):l.setPivotPos(t.camera.look),l.startPivot())}}),document.addEventListener("mouseup",this._documentMouseUpHandler=function(e){1===e.which&&(A=!1),3===e.which&&(c=!1),l.getPivoting()&&l.endPivot()}),h.addEventListener("mouseup",this._canvasMouseUpHandler=function(e){if(s.active&&s.pointerEnabled&&(1===e.which&&(l.hidePivot(),!(Math.abs(e.clientX-r.mouseDownClientX)>3||Math.abs(e.clientY-r.mouseDownClientY)>3)))){var n=u.hasSubs("picked"),A=u.hasSubs("pickedNothing"),c=u.hasSubs("pickedSurface"),h=u.hasSubs("doublePicked"),p=u.hasSubs("doublePickedSurface"),f=u.hasSubs("doublePickedNothing");if(!(s.doublePickFlyTo||h||p||f))return(n||A||c)&&(a.pickCursorPos=r.pointerCanvasPos,a.schedulePickEntity=!0,a.schedulePickSurface=c,a.update(),a.pickResult?(u.fire("picked",a.pickResult,!0),a.pickedSurface&&u.fire("pickedSurface",a.pickResult,!0)):u.fire("pickedNothing",{canvasPos:r.pointerCanvasPos},!0)),void(o._clicks=0);if(o._clicks++,1===o._clicks){a.pickCursorPos=r.pointerCanvasPos,a.schedulePickEntity=s.doublePickFlyTo,a.schedulePickSurface=c,a.update();var v=a.pickResult,g=a.pickedSurface;o._timeout=setTimeout((function(){v?(u.fire("picked",v,!0),g&&(u.fire("pickedSurface",v,!0),!s.firstPerson&&s.followPointer&&(i.pivotController.setPivotPos(v.worldPos),i.pivotController.startPivot()&&i.pivotController.showPivot()))):u.fire("pickedNothing",{canvasPos:r.pointerCanvasPos},!0),o._clicks=0}),s.doubleClickTimeFrame)}else{if(null!==o._timeout&&(window.clearTimeout(o._timeout),o._timeout=null),a.pickCursorPos=r.pointerCanvasPos,a.schedulePickEntity=s.doublePickFlyTo||h||p,a.schedulePickSurface=a.schedulePickEntity&&p,a.update(),a.pickResult){if(u.fire("doublePicked",a.pickResult,!0),a.pickedSurface&&u.fire("doublePickedSurface",a.pickResult,!0),s.doublePickFlyTo&&(d(a.pickResult),!s.firstPerson&&s.followPointer)){var m=a.pickResult.entity.aabb,_=$.getAABB3Center(m);i.pivotController.setPivotPos(_),i.pivotController.startPivot()&&i.pivotController.showPivot()}}else if(u.fire("doublePickedNothing",{canvasPos:r.pointerCanvasPos},!0),s.doublePickFlyTo&&(d(),!s.firstPerson&&s.followPointer)){var y=t.aabb,b=$.getAABB3Center(y);i.pivotController.setPivotPos(b),i.pivotController.startPivot()&&i.pivotController.showPivot()}o._clicks=0}}},!1)}return C(e,[{key:"reset",value:function(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}},{key:"destroy",value:function(){var e=this._scene.canvas.canvas;e.removeEventListener("mousemove",this._canvasMouseMoveHandler),e.removeEventListener("mousedown",this._canvasMouseDownHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}]),e}(),Gd=function(){function e(t,i,s,r,n){x(this,e),this._scene=t;var o=t.input,a=[],l=t.canvas.canvas,u=!0;this._onSceneMouseMove=o.on("mousemove",(function(){u=!0})),this._onSceneKeyDown=o.on("keydown",(function(e){s.active&&s.pointerEnabled&&t.input.keyboardEnabled&&r.mouseover&&(a[e]=!0,e===o.KEY_SHIFT&&(l.style.cursor="move"))})),this._onSceneKeyUp=o.on("keyup",(function(e){s.active&&s.pointerEnabled&&t.input.keyboardEnabled&&(a[e]=!1,e===o.KEY_SHIFT&&(l.style.cursor=null),i.pivotController.getPivoting()&&i.pivotController.endPivot())})),this._onTick=t.on("tick",(function(e){if(s.active&&s.pointerEnabled&&t.input.keyboardEnabled&&r.mouseover){var l=i.cameraControl,A=e.deltaTime/1e3;if(!s.planView){var c=l._isKeyDownForAction(l.ROTATE_Y_POS,a),h=l._isKeyDownForAction(l.ROTATE_Y_NEG,a),d=l._isKeyDownForAction(l.ROTATE_X_POS,a),p=l._isKeyDownForAction(l.ROTATE_X_NEG,a),f=A*s.keyboardRotationRate;(c||h||d||p)&&(!s.firstPerson&&s.followPointer&&i.pivotController.startPivot(),c?n.rotateDeltaY+=f:h&&(n.rotateDeltaY-=f),d?n.rotateDeltaX+=f:p&&(n.rotateDeltaX-=f),!s.firstPerson&&s.followPointer&&i.pivotController.startPivot())}if(!a[o.KEY_CTRL]&&!a[o.KEY_ALT]){var v=l._isKeyDownForAction(l.DOLLY_BACKWARDS,a),g=l._isKeyDownForAction(l.DOLLY_FORWARDS,a);if(v||g){var m=A*s.keyboardDollyRate;!s.firstPerson&&s.followPointer&&i.pivotController.startPivot(),g?n.dollyDelta-=m:v&&(n.dollyDelta+=m),u&&(r.followPointerDirty=!0,u=!1)}}var _=l._isKeyDownForAction(l.PAN_FORWARDS,a),y=l._isKeyDownForAction(l.PAN_BACKWARDS,a),b=l._isKeyDownForAction(l.PAN_LEFT,a),w=l._isKeyDownForAction(l.PAN_RIGHT,a),B=l._isKeyDownForAction(l.PAN_UP,a),x=l._isKeyDownForAction(l.PAN_DOWN,a),P=(a[o.KEY_ALT]?.3:1)*A*s.keyboardPanRate;(_||y||b||w||B||x)&&(!s.firstPerson&&s.followPointer&&i.pivotController.startPivot(),x?n.panDeltaY+=P:B&&(n.panDeltaY+=-P),w?n.panDeltaX+=-P:b&&(n.panDeltaX+=P),y?n.panDeltaZ+=P:_&&(n.panDeltaZ+=-P))}}))}return C(e,[{key:"reset",value:function(){}},{key:"destroy",value:function(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}]),e}(),zd=$.vec3(),Wd=function(){function e(t,i,s,r,n){x(this,e),this._scene=t;var o=t.camera,a=i.pickController,l=i.pivotController,u=i.panController,A=1,c=1,h=null;this._onTick=t.on("tick",(function(){if(s.active&&s.pointerEnabled){var e="default";if(Math.abs(n.dollyDelta)<.001&&(n.dollyDelta=0),Math.abs(n.rotateDeltaX)<.001&&(n.rotateDeltaX=0),Math.abs(n.rotateDeltaY)<.001&&(n.rotateDeltaY=0),0===n.rotateDeltaX&&0===n.rotateDeltaY||(n.dollyDelta=0),s.followPointer){if(--A<=0&&(A=1,0!==n.dollyDelta)){if(0===n.rotateDeltaY&&0===n.rotateDeltaX&&s.followPointer&&r.followPointerDirty&&(a.pickCursorPos=r.pointerCanvasPos,a.schedulePickSurface=!0,a.update(),a.pickResult&&a.pickResult.worldPos?h=a.pickResult.worldPos:(c=1,h=null),r.followPointerDirty=!1),h){var i=Math.abs($.lenVec3($.subVec3(h,t.camera.eye,zd)));c=i/s.dollyProximityThreshold}cs.longTapRadius||Math.abs(g)>s.longTapRadius)&&(clearTimeout(r.longTouchTimeout),r.longTouchTimeout=null),s.planView){var m=t.camera;if("perspective"===m.projection){var _=Math.abs(t.camera.eyeLookDist)*Math.tan(m.perspective.fov/2*Math.PI/180);n.panDeltaX+=v*_/l*s.touchPanRate,n.panDeltaY+=g*_/l*s.touchPanRate}else n.panDeltaX+=.5*m.ortho.scale*(v/l)*s.touchPanRate,n.panDeltaY+=.5*m.ortho.scale*(g/l)*s.touchPanRate}else n.rotateDeltaY-=v/a*(1*s.dragRotationRate),n.rotateDeltaX+=g/l*(1.5*s.dragRotationRate)}else if(2===p){var y=d[0],b=d[1];Jd(y,u),Jd(b,A);var w=$.geometricMeanVec2(h[0],h[1]),B=$.geometricMeanVec2(u,A),x=$.vec2();$.subVec2(w,B,x);var P=x[0],C=x[1],M=t.camera,E=$.distVec2([y.pageX,y.pageY],[b.pageX,b.pageY]),F=($.distVec2(h[0],h[1])-E)*s.touchDollyRate;if(n.dollyDelta=F,Math.abs(F)<1)if("perspective"===M.projection){var k=o.pickResult?o.pickResult.worldPos:t.center,I=Math.abs($.lenVec3($.subVec3(k,t.camera.eye,[])))*Math.tan(M.perspective.fov/2*Math.PI/180);n.panDeltaX-=P*I/l*s.touchPanRate,n.panDeltaY-=C*I/l*s.touchPanRate}else n.panDeltaX-=.5*M.ortho.scale*(P/l)*s.touchPanRate,n.panDeltaY-=.5*M.ortho.scale*(C/l)*s.touchPanRate;r.pointerCanvasPos=B}for(var D=0;D-1&&t-c<150&&(h>-1&&c-h<325?(Zd(n[0],a.pickCursorPos),a.schedulePickEntity=!0,a.schedulePickSurface=o,a.update(),a.pickResult?(a.pickResult.touchInput=!0,l.fire("doublePicked",a.pickResult),a.pickedSurface&&l.fire("doublePickedSurface",a.pickResult),s.doublePickFlyTo&&p(a.pickResult)):(l.fire("doublePickedNothing"),s.doublePickFlyTo&&p()),h=-1):$.distVec2(u[0],A)<4&&(Zd(n[0],a.pickCursorPos),a.schedulePickEntity=!0,a.schedulePickSurface=o,a.update(),a.pickResult?(a.pickResult.touchInput=!0,l.fire("picked",a.pickResult),a.pickedSurface&&l.fire("pickedSurface",a.pickResult)):l.fire("pickedNothing"),h=t),c=-1),u.length=i.length;for(var d=0,f=i.length;d1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),(s=t.call(this,e,r)).PAN_LEFT=0,s.PAN_RIGHT=1,s.PAN_UP=2,s.PAN_DOWN=3,s.PAN_FORWARDS=4,s.PAN_BACKWARDS=5,s.ROTATE_X_POS=6,s.ROTATE_X_NEG=7,s.ROTATE_Y_POS=8,s.ROTATE_Y_NEG=9,s.DOLLY_FORWARDS=10,s.DOLLY_BACKWARDS=11,s.AXIS_VIEW_RIGHT=12,s.AXIS_VIEW_BACK=13,s.AXIS_VIEW_LEFT=14,s.AXIS_VIEW_FRONT=15,s.AXIS_VIEW_TOP=16,s.AXIS_VIEW_BOTTOM=17,s._keyMap={},s.scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},s._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:"qwerty",navMode:"orbit",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,doubleClickTimeFrame:250,snapToVertex:true,snapToEdge:true,snapRadius:30,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},s._states={pointerCanvasPos:$.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:$.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},s._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};var n=s.scene;return s._controllers={cameraControl:b(s),pickController:new Sd(b(s),s._configs),pivotController:new Dd(n,s._configs),panController:new Pd(n),cameraFlight:new Wh(b(s),{duration:.5})},s._handlers=[new Kd(s.scene,s._controllers,s._configs,s._states,s._updates),new Yd(s.scene,s._controllers,s._configs,s._states,s._updates),new Ld(s.scene,s._controllers,s._configs,s._states,s._updates),new Hd(s.scene,s._controllers,s._configs,s._states,s._updates),new jd(s.scene,s._controllers,s._configs,s._states,s._updates),new qd(s.scene,s._controllers,s._configs,s._states,s._updates),new Gd(s.scene,s._controllers,s._configs,s._states,s._updates)],s._cameraUpdater=new Wd(s.scene,s._controllers,s._configs,s._states,s._updates),s.navMode=r.navMode,r.planView&&(s.planView=r.planView),s.constrainVertical=r.constrainVertical,r.keyboardLayout?s.keyboardLayout=r.keyboardLayout:s.keyMap=r.keyMap,s.doublePickFlyTo=r.doublePickFlyTo,s.panRightClick=r.panRightClick,s.active=r.active,s.followPointer=r.followPointer,s.rotationInertia=r.rotationInertia,s.keyboardPanRate=r.keyboardPanRate,s.touchPanRate=r.touchPanRate,s.keyboardRotationRate=r.keyboardRotationRate,s.dragRotationRate=r.dragRotationRate,s.touchDollyRate=r.touchDollyRate,s.dollyInertia=r.dollyInertia,s.dollyProximityThreshold=r.dollyProximityThreshold,s.dollyMinSpeed=r.dollyMinSpeed,s.panInertia=r.panInertia,s.pointerEnabled=!0,s.keyboardDollyRate=r.keyboardDollyRate,s.mouseWheelDollyRate=r.mouseWheelDollyRate,s}return C(i,[{key:"keyMap",get:function(){return this._keyMap},set:function(e){if(e=e||"qwerty",le.isString(e)){var t=this.scene.input,i={};switch(e){default:this.error("Unsupported value for 'keyMap': "+e+" defaulting to 'qwerty'");case"qwerty":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case"azerty":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{var s=e;this._keyMap=s}}},{key:"_isKeyDownForAction",value:function(e,t){var i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(var s=0,r=i.length;s0&&void 0!==arguments[0]?arguments[0]:{};this._controllers.pivotController.enablePivotSphere(e)}},{key:"disablePivotSphere",value:function(){this._controllers.pivotController.disablePivotSphere()}},{key:"smartPivot",get:function(){return this._configs.smartPivot},set:function(e){this._configs.smartPivot=!1!==e}},{key:"doubleClickTimeFrame",get:function(){return this._configs.doubleClickTimeFrame},set:function(e){this._configs.doubleClickTimeFrame=null!=e?e:250}},{key:"destroy",value:function(){this._destroyHandlers(),this._destroyControllers(),this._cameraUpdater.destroy(),f(w(i.prototype),"destroy",this).call(this)}},{key:"_destroyHandlers",value:function(){for(var e=0,t=this._handlers.length;e1&&void 0!==arguments[1]?arguments[1]:{};if(this.finalized)throw"MetaScene already finalized - can't add more data";this._globalizeIDs(e,t);var i=this.metaScene,s=e.properties;if(e.propertySets)for(var r=0,n=e.propertySets.length;r0?np(t):null,o=i&&i.length>0?np(i):null;return function e(t){if(t){var i=!0;(o&&o[t.type]||n&&!n[t.type])&&(i=!1),i&&s.push(t.id);var r=t.children;if(r)for(var a=0,l=r.length;a * Copyright (c) 2022 Niklas von Hertzen @@ -33,4 +33,4 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var op=function(e,t){return op=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},op(e,t)};function ap(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}op(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var lp=function(){return lp=Object.assign||function(e){for(var t,i=1,s=arguments.length;i0&&r[r.length-1])||6!==n[0]&&2!==n[0])){o=0;continue}if(3===n[0]&&(!r||n[1]>r[0]&&n[1]=55296&&r<=56319&&i>10),o%1024+56320)),(r+1===i||s.length>16384)&&(n+=String.fromCharCode.apply(String,s),s.length=0)}return n},vp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",gp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),mp=0;mp=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),xp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Pp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cp=0;Cp>4,A[l++]=(15&s)<<4|r>>2,A[l++]=(3&r)<<6|63&n;return u}(e),o=Array.isArray(n)?function(e){for(var t=e.length,i=[],s=0;s0;){var o=s[--n];if(Array.isArray(e)?-1!==e.indexOf(o):e===o)for(var a=i;a<=s.length;){var l;if((l=s[++a])===t)return!0;if(l!==Mp)break}if(o!==Mp)break}return!1},lf=function(e,t){for(var i=e;i>=0;){var s=t[i];if(s!==Mp)return s;i--}return 0},uf=function(e,t,i,s,r){if(0===i[s])return"×";var n=s-1;if(Array.isArray(r)&&!0===r[n])return"×";var o=n-1,a=n+1,l=t[n],u=o>=0?t[o]:0,A=t[a];if(2===l&&3===A)return"×";if(-1!==ef.indexOf(l))return"!";if(-1!==ef.indexOf(A))return"×";if(-1!==tf.indexOf(A))return"×";if(8===lf(n,t))return"÷";if(11===qp.get(e[n]))return"×";if((l===Hp||l===jp)&&11===qp.get(e[a]))return"×";if(7===l||7===A)return"×";if(9===l)return"×";if(-1===[Mp,Ep,Fp].indexOf(l)&&9===A)return"×";if(-1!==[kp,Ip,Dp,Rp,Qp].indexOf(A))return"×";if(lf(n,t)===Lp)return"×";if(af(23,Lp,n,t))return"×";if(af([kp,Ip],Tp,n,t))return"×";if(af(12,12,n,t))return"×";if(l===Mp)return"÷";if(23===l||23===A)return"×";if(16===A||16===l)return"÷";if(-1!==[Ep,Fp,Tp].indexOf(A)||14===l)return"×";if(36===u&&-1!==of.indexOf(l))return"×";if(l===Qp&&36===A)return"×";if(A===Sp)return"×";if(-1!==$p.indexOf(A)&&l===Up||-1!==$p.indexOf(l)&&A===Up)return"×";if(l===Np&&-1!==[Wp,Hp,jp].indexOf(A)||-1!==[Wp,Hp,jp].indexOf(l)&&A===Op)return"×";if(-1!==$p.indexOf(l)&&-1!==sf.indexOf(A)||-1!==sf.indexOf(l)&&-1!==$p.indexOf(A))return"×";if(-1!==[Np,Op].indexOf(l)&&(A===Up||-1!==[Lp,Fp].indexOf(A)&&t[a+1]===Up)||-1!==[Lp,Fp].indexOf(l)&&A===Up||l===Up&&-1!==[Up,Qp,Rp].indexOf(A))return"×";if(-1!==[Up,Qp,Rp,kp,Ip].indexOf(A))for(var c=n;c>=0;){if((h=t[c])===Up)return"×";if(-1===[Qp,Rp].indexOf(h))break;c--}if(-1!==[Np,Op].indexOf(A))for(c=-1!==[kp,Ip].indexOf(l)?o:n;c>=0;){var h;if((h=t[c])===Up)return"×";if(-1===[Qp,Rp].indexOf(h))break;c--}if(Kp===l&&-1!==[Kp,Xp,Gp,zp].indexOf(A)||-1!==[Xp,Gp].indexOf(l)&&-1!==[Xp,Jp].indexOf(A)||-1!==[Jp,zp].indexOf(l)&&A===Jp)return"×";if(-1!==nf.indexOf(l)&&-1!==[Sp,Op].indexOf(A)||-1!==nf.indexOf(A)&&l===Np)return"×";if(-1!==$p.indexOf(l)&&-1!==$p.indexOf(A))return"×";if(l===Rp&&-1!==$p.indexOf(A))return"×";if(-1!==$p.concat(Up).indexOf(l)&&A===Lp&&-1===Zp.indexOf(e[a])||-1!==$p.concat(Up).indexOf(A)&&l===Ip)return"×";if(41===l&&41===A){for(var d=i[n],p=1;d>0&&41===t[--d];)p++;if(p%2!=0)return"×"}return l===Hp&&A===jp?"×":"÷"},Af=function(e,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var i=function(e,t){void 0===t&&(t="strict");var i=[],s=[],r=[];return e.forEach((function(e,n){var o=qp.get(e);if(o>50?(r.push(!0),o-=50):r.push(!1),-1!==["normal","auto","loose"].indexOf(t)&&-1!==[8208,8211,12316,12448].indexOf(e))return s.push(n),i.push(16);if(4===o||11===o){if(0===n)return s.push(n),i.push(Vp);var a=i[n-1];return-1===rf.indexOf(a)?(s.push(s[n-1]),i.push(a)):(s.push(n),i.push(Vp))}return s.push(n),31===o?i.push("strict"===t?Tp:Wp):o===Yp||29===o?i.push(Vp):43===o?e>=131072&&e<=196605||e>=196608&&e<=262141?i.push(Wp):i.push(Vp):void i.push(o)})),[s,i,r]}(e,t.lineBreak),s=i[0],r=i[1],n=i[2];"break-all"!==t.wordBreak&&"break-word"!==t.wordBreak||(r=r.map((function(e){return-1!==[Up,Vp,Yp].indexOf(e)?Wp:e})));var o="keep-all"===t.wordBreak?n.map((function(t,i){return t&&e[i]>=19968&&e[i]<=40959})):void 0;return[s,r,o]},cf=function(){function e(e,t,i,s){this.codePoints=e,this.required="!"===t,this.start=i,this.end=s}return e.prototype.slice=function(){return fp.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),hf=function(e){return e>=48&&e<=57},df=function(e){return hf(e)||e>=65&&e<=70||e>=97&&e<=102},pf=function(e){return 10===e||9===e||32===e},ff=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},vf=function(e){return ff(e)||hf(e)||45===e},gf=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},mf=function(e,t){return 92===e&&10!==t},_f=function(e,t,i){return 45===e?ff(t)||mf(t,i):!!ff(e)||!(92!==e||!mf(e,t))},yf=function(e,t,i){return 43===e||45===e?!!hf(t)||46===t&&hf(i):hf(46===e?t:e)},bf=function(e){var t=0,i=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(i=-1),t++);for(var s=[];hf(e[t]);)s.push(e[t++]);var r=s.length?parseInt(fp.apply(void 0,s),10):0;46===e[t]&&t++;for(var n=[];hf(e[t]);)n.push(e[t++]);var o=n.length,a=o?parseInt(fp.apply(void 0,n),10):0;69!==e[t]&&101!==e[t]||t++;var l=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(l=-1),t++);for(var u=[];hf(e[t]);)u.push(e[t++]);var A=u.length?parseInt(fp.apply(void 0,u),10):0;return i*(r+a*Math.pow(10,-o))*Math.pow(10,l*A)},wf={type:2},Bf={type:3},xf={type:4},Pf={type:13},Cf={type:8},Mf={type:21},Ef={type:9},Ff={type:10},kf={type:11},If={type:12},Df={type:14},Sf={type:23},Tf={type:1},Lf={type:25},Rf={type:24},Uf={type:26},Of={type:27},Nf={type:28},Qf={type:29},Vf={type:31},Hf={type:32},jf=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(pp(e))},e.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==Hf;)e.push(t),t=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var t=this.peekCodePoint(0),i=this.peekCodePoint(1),s=this.peekCodePoint(2);if(vf(t)||mf(i,s)){var r=_f(t,i,s)?2:1;return{type:5,value:this.consumeName(),flags:r}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Pf;break;case 39:return this.consumeStringToken(39);case 40:return wf;case 41:return Bf;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Df;break;case 43:if(yf(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return xf;case 45:var n=e,o=this.peekCodePoint(0),a=this.peekCodePoint(1);if(yf(n,o,a))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(_f(n,o,a))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(45===o&&62===a)return this.consumeCodePoint(),this.consumeCodePoint(),Rf;break;case 46:if(yf(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var l=this.consumeCodePoint();if(42===l&&47===(l=this.consumeCodePoint()))return this.consumeToken();if(-1===l)return this.consumeToken()}break;case 58:return Uf;case 59:return Of;case 60:if(33===this.peekCodePoint(0)&&45===this.peekCodePoint(1)&&45===this.peekCodePoint(2))return this.consumeCodePoint(),this.consumeCodePoint(),Lf;break;case 64:var u=this.peekCodePoint(0),A=this.peekCodePoint(1),c=this.peekCodePoint(2);if(_f(u,A,c))return{type:7,value:this.consumeName()};break;case 91:return Nf;case 92:if(mf(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return Qf;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Cf;break;case 123:return kf;case 125:return If;case 117:case 85:var h=this.peekCodePoint(0),d=this.peekCodePoint(1);return 43!==h||!df(d)&&63!==d||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ef;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),Mf;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ff;break;case-1:return Hf}return pf(e)?(this.consumeWhiteSpace(),Vf):hf(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):ff(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:fp(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();df(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var i=!1;63===t&&e.length<6;)e.push(t),t=this.consumeCodePoint(),i=!0;if(i)return{type:30,start:parseInt(fp.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(fp.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var s=parseInt(fp.apply(void 0,e),16);if(45===this.peekCodePoint(0)&&df(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var r=[];df(t)&&r.length<6;)r.push(t),t=this.consumeCodePoint();return{type:30,start:s,end:parseInt(fp.apply(void 0,r),16)}}return{type:30,start:s,end:s}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),-1===this.peekCodePoint(0))return{type:22,value:""};var t=this.peekCodePoint(0);if(39===t||34===t){var i=this.consumeStringToken(this.consumeCodePoint());return 0===i.type&&(this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:i.value}):(this.consumeBadUrlRemnants(),Sf)}for(;;){var s=this.consumeCodePoint();if(-1===s||41===s)return{type:22,value:fp.apply(void 0,e)};if(pf(s))return this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:fp.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Sf);if(34===s||39===s||40===s||gf(s))return this.consumeBadUrlRemnants(),Sf;if(92===s){if(!mf(s,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Sf;e.push(this.consumeEscapedCodePoint())}else e.push(s)}},e.prototype.consumeWhiteSpace=function(){for(;pf(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||-1===e)return;mf(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var t="";e>0;){var i=Math.min(5e4,e);t+=fp.apply(void 0,this._value.splice(0,i)),e-=i}return this._value.shift(),t},e.prototype.consumeStringToken=function(e){for(var t="",i=0;;){var s=this._value[i];if(-1===s||void 0===s||s===e)return{type:0,value:t+=this.consumeStringSlice(i)};if(10===s)return this._value.splice(0,i),Tf;if(92===s){var r=this._value[i+1];-1!==r&&void 0!==r&&(10===r?(t+=this.consumeStringSlice(i),i=-1,this._value.shift()):mf(s,r)&&(t+=this.consumeStringSlice(i),t+=fp(this.consumeEscapedCodePoint()),i=-1))}i++}},e.prototype.consumeNumber=function(){var e=[],t=4,i=this.peekCodePoint(0);for(43!==i&&45!==i||e.push(this.consumeCodePoint());hf(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0);var s=this.peekCodePoint(1);if(46===i&&hf(s))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;hf(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0),s=this.peekCodePoint(1);var r=this.peekCodePoint(2);if((69===i||101===i)&&((43===s||45===s)&&hf(r)||hf(s)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;hf(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[bf(e),t]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],i=e[1],s=this.peekCodePoint(0),r=this.peekCodePoint(1),n=this.peekCodePoint(2);return _f(s,r,n)?{type:15,number:t,flags:i,unit:this.consumeName()}:37===s?(this.consumeCodePoint(),{type:16,number:t,flags:i}):{type:17,number:t,flags:i}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(df(e)){for(var t=fp(e);df(this.peekCodePoint(0))&&t.length<6;)t+=fp(this.consumeCodePoint());pf(this.peekCodePoint(0))&&this.consumeCodePoint();var i=parseInt(t,16);return 0===i||function(e){return e>=55296&&e<=57343}(i)||i>1114111?65533:i}return-1===e?65533:e},e.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(vf(t))e+=fp(t);else{if(!mf(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),e;e+=fp(this.consumeEscapedCodePoint())}}},e}(),Gf=function(){function e(e){this._tokens=e}return e.create=function(t){var i=new jf;return i.write(t),new e(i.read())},e.parseValue=function(t){return e.create(t).parseComponentValue()},e.parseValues=function(t){return e.create(t).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(32===t.type)return e;e.push(t),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},i=this.consumeToken();;){if(32===i.type||$f(i,e))return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue()),i=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var i=this.consumeToken();if(32===i.type||3===i.type)return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?Hf:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),zf=function(e){return 15===e.type},Wf=function(e){return 17===e.type},Kf=function(e){return 20===e.type},Xf=function(e){return 0===e.type},Jf=function(e,t){return Kf(e)&&e.value===t},Yf=function(e){return 31!==e.type},Zf=function(e){return 31!==e.type&&4!==e.type},qf=function(e){var t=[],i=[];return e.forEach((function(e){if(4===e.type){if(0===i.length)throw new Error("Error parsing function args, zero tokens for arg");return t.push(i),void(i=[])}31!==e.type&&i.push(e)})),i.length&&t.push(i),t},$f=function(e,t){return 11===t&&12===e.type||(28===t&&29===e.type||2===t&&3===e.type)},ev=function(e){return 17===e.type||15===e.type},tv=function(e){return 16===e.type||ev(e)},iv=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},sv={type:17,number:0,flags:4},rv={type:16,number:50,flags:4},nv={type:16,number:100,flags:4},ov=function(e,t,i){var s=e[0],r=e[1];return[av(s,t),av(void 0!==r?r:s,i)]},av=function(e,t){if(16===e.type)return e.number/100*t;if(zf(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},lv=function(e,t){if(15===t.type)switch(t.unit){case"deg":return Math.PI*t.number/180;case"grad":return Math.PI/200*t.number;case"rad":return t.number;case"turn":return 2*Math.PI*t.number}throw new Error("Unsupported angle type")},uv=function(e){return 15===e.type&&("deg"===e.unit||"grad"===e.unit||"rad"===e.unit||"turn"===e.unit)},Av=function(e){switch(e.filter(Kf).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[sv,sv];case"to top":case"bottom":return cv(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[sv,nv];case"to right":case"left":return cv(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[nv,nv];case"to bottom":case"top":return cv(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[nv,sv];case"to left":case"right":return cv(270)}return 0},cv=function(e){return Math.PI*e/180},hv=function(e,t){if(18===t.type){var i=yv[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return i(e,t.values)}if(5===t.type){if(3===t.value.length){var s=t.value.substring(0,1),r=t.value.substring(1,2),n=t.value.substring(2,3);return fv(parseInt(s+s,16),parseInt(r+r,16),parseInt(n+n,16),1)}if(4===t.value.length){s=t.value.substring(0,1),r=t.value.substring(1,2),n=t.value.substring(2,3);var o=t.value.substring(3,4);return fv(parseInt(s+s,16),parseInt(r+r,16),parseInt(n+n,16),parseInt(o+o,16)/255)}if(6===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),n=t.value.substring(4,6);return fv(parseInt(s,16),parseInt(r,16),parseInt(n,16),1)}if(8===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),n=t.value.substring(4,6),o=t.value.substring(6,8);return fv(parseInt(s,16),parseInt(r,16),parseInt(n,16),parseInt(o,16)/255)}}if(20===t.type){var a=wv[t.value.toUpperCase()];if(void 0!==a)return a}return wv.TRANSPARENT},dv=function(e){return 0==(255&e)},pv=function(e){var t=255&e,i=255&e>>8,s=255&e>>16,r=255&e>>24;return t<255?"rgba("+r+","+s+","+i+","+t/255+")":"rgb("+r+","+s+","+i+")"},fv=function(e,t,i,s){return(e<<24|t<<16|i<<8|Math.round(255*s)<<0)>>>0},vv=function(e,t){if(17===e.type)return e.number;if(16===e.type){var i=3===t?1:255;return 3===t?e.number/100*i:Math.round(e.number/100*i)}return 0},gv=function(e,t){var i=t.filter(Zf);if(3===i.length){var s=i.map(vv),r=s[0],n=s[1],o=s[2];return fv(r,n,o,1)}if(4===i.length){var a=i.map(vv),l=(r=a[0],n=a[1],o=a[2],a[3]);return fv(r,n,o,l)}return 0};function mv(e,t,i){return i<0&&(i+=1),i>=1&&(i-=1),i<1/6?(t-e)*i*6+e:i<.5?t:i<2/3?6*(t-e)*(2/3-i)+e:e}var _v=function(e,t){var i=t.filter(Zf),s=i[0],r=i[1],n=i[2],o=i[3],a=(17===s.type?cv(s.number):lv(e,s))/(2*Math.PI),l=tv(r)?r.number/100:0,u=tv(n)?n.number/100:0,A=void 0!==o&&tv(o)?av(o,1):1;if(0===l)return fv(255*u,255*u,255*u,1);var c=u<=.5?u*(l+1):u+l-u*l,h=2*u-c,d=mv(h,c,a+1/3),p=mv(h,c,a),f=mv(h,c,a-1/3);return fv(255*d,255*p,255*f,A)},yv={hsl:_v,hsla:_v,rgb:gv,rgba:gv},bv=function(e,t){return hv(e,Gf.create(t).parseComponentValue())},wv={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Bv={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(Kf(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},xv={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Pv=function(e,t){var i=hv(e,t[0]),s=t[1];return s&&tv(s)?{color:i,stop:s}:{color:i,stop:null}},Cv=function(e,t){var i=e[0],s=e[e.length-1];null===i.stop&&(i.stop=sv),null===s.stop&&(s.stop=nv);for(var r=[],n=0,o=0;on?r.push(l):r.push(n),n=l}else r.push(null)}var u=null;for(o=0;oe.optimumDistance)?{optimumCorner:t,optimumDistance:a}:e}),{optimumDistance:r?1/0:-1/0,optimumCorner:null}).optimumCorner},kv=function(e,t){var i=cv(180),s=[];return qf(t).forEach((function(t,r){if(0===r){var n=t[0];if(20===n.type&&-1!==["top","left","right","bottom"].indexOf(n.value))return void(i=Av(t));if(uv(n))return void(i=(lv(e,n)+cv(270))%cv(360))}var o=Pv(e,t);s.push(o)})),{angle:i,stops:s,type:1}},Iv=function(e,t){var i=0,s=3,r=[],n=[];return qf(t).forEach((function(t,o){var a=!0;if(0===o?a=t.reduce((function(e,t){if(Kf(t))switch(t.value){case"center":return n.push(rv),!1;case"top":case"left":return n.push(sv),!1;case"right":case"bottom":return n.push(nv),!1}else if(tv(t)||ev(t))return n.push(t),!1;return e}),a):1===o&&(a=t.reduce((function(e,t){if(Kf(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"contain":case"closest-side":return s=0,!1;case"farthest-side":return s=1,!1;case"closest-corner":return s=2,!1;case"cover":case"farthest-corner":return s=3,!1}else if(ev(t)||tv(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)),a){var l=Pv(e,t);r.push(l)}})),{size:s,shape:i,stops:r,position:n,type:2}},Dv=function(e,t){if(22===t.type){var i={url:t.value,type:0};return e.cache.addImage(t.value),i}if(18===t.type){var s=Tv[t.name];if(void 0===s)throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return s(e,t.values)}throw new Error("Unsupported image type "+t.type)};var Sv,Tv={"linear-gradient":function(e,t){var i=cv(180),s=[];return qf(t).forEach((function(t,r){if(0===r){var n=t[0];if(20===n.type&&"to"===n.value)return void(i=Av(t));if(uv(n))return void(i=lv(e,n))}var o=Pv(e,t);s.push(o)})),{angle:i,stops:s,type:1}},"-moz-linear-gradient":kv,"-ms-linear-gradient":kv,"-o-linear-gradient":kv,"-webkit-linear-gradient":kv,"radial-gradient":function(e,t){var i=0,s=3,r=[],n=[];return qf(t).forEach((function(t,o){var a=!0;if(0===o){var l=!1;a=t.reduce((function(e,t){if(l)if(Kf(t))switch(t.value){case"center":return n.push(rv),e;case"top":case"left":return n.push(sv),e;case"right":case"bottom":return n.push(nv),e}else(tv(t)||ev(t))&&n.push(t);else if(Kf(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"at":return l=!0,!1;case"closest-side":return s=0,!1;case"cover":case"farthest-side":return s=1,!1;case"contain":case"closest-corner":return s=2,!1;case"farthest-corner":return s=3,!1}else if(ev(t)||tv(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)}if(a){var u=Pv(e,t);r.push(u)}})),{size:s,shape:i,stops:r,position:n,type:2}},"-moz-radial-gradient":Iv,"-ms-radial-gradient":Iv,"-o-radial-gradient":Iv,"-webkit-radial-gradient":Iv,"-webkit-gradient":function(e,t){var i=cv(180),s=[],r=1;return qf(t).forEach((function(t,i){var n=t[0];if(0===i){if(Kf(n)&&"linear"===n.value)return void(r=1);if(Kf(n)&&"radial"===n.value)return void(r=2)}if(18===n.type)if("from"===n.name){var o=hv(e,n.values[0]);s.push({stop:sv,color:o})}else if("to"===n.name){o=hv(e,n.values[0]);s.push({stop:nv,color:o})}else if("color-stop"===n.name){var a=n.values.filter(Zf);if(2===a.length){o=hv(e,a[1]);var l=a[0];Wf(l)&&s.push({stop:{type:16,number:100*l.number,flags:l.flags},color:o})}}})),1===r?{angle:(i+cv(180))%cv(360),stops:s,type:r}:{size:3,shape:0,stops:s,position:[],type:r}}},Lv={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var i=t[0];return 20===i.type&&"none"===i.value?[]:t.filter((function(e){return Zf(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!Tv[e.name])}(e)})).map((function(t){return Dv(e,t)}))}},Rv={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(Kf(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Uv={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,t){return qf(t).map((function(e){return e.filter(tv)})).map(iv)}},Ov={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,t){return qf(t).map((function(e){return e.filter(Kf).map((function(e){return e.value})).join(" ")})).map(Nv)}},Nv=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(Sv||(Sv={}));var Qv,Vv={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,t){return qf(t).map((function(e){return e.filter(Hv)}))}},Hv=function(e){return Kf(e)||tv(e)},jv=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Gv=jv("top"),zv=jv("right"),Wv=jv("bottom"),Kv=jv("left"),Xv=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return iv(t.filter(tv))}}},Jv=Xv("top-left"),Yv=Xv("top-right"),Zv=Xv("bottom-right"),qv=Xv("bottom-left"),$v=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},eg=$v("top"),tg=$v("right"),ig=$v("bottom"),sg=$v("left"),rg=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return zf(t)?t.number:0}}},ng=rg("top"),og=rg("right"),ag=rg("bottom"),lg=rg("left"),ug={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Ag={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,t){return"rtl"===t?1:0}},cg={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,t){return t.filter(Kf).reduce((function(e,t){return e|hg(t.value)}),0)}},hg=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},dg={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},pg={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,t){return 20===t.type&&"normal"===t.value?0:17===t.type||15===t.type?t.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(Qv||(Qv={}));var fg,vg={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"strict"===t?Qv.STRICT:Qv.NORMAL}},gg={name:"line-height",initialValue:"normal",prefix:!1,type:4},mg=function(e,t){return Kf(e)&&"normal"===e.value?1.2*t:17===e.type?t*e.number:tv(e)?av(e,t):t},_g={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,t){return 20===t.type&&"none"===t.value?null:Dv(e,t)}},yg={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,t){return"inside"===t?0:1}},bg={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},wg=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},Bg=wg("top"),xg=wg("right"),Pg=wg("bottom"),Cg=wg("left"),Mg={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,t){return t.filter(Kf).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},Eg={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"break-word"===t?"break-word":"normal"}},Fg=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},kg=Fg("top"),Ig=Fg("right"),Dg=Fg("bottom"),Sg=Fg("left"),Tg={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,t){switch(t){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},Lg={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Rg={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&Jf(t[0],"none")?[]:qf(t).map((function(t){for(var i={color:wv.TRANSPARENT,offsetX:sv,offsetY:sv,blur:sv},s=0,r=0;r1?1:0],this.overflowWrap=fm(e,Eg,t.overflowWrap),this.paddingTop=fm(e,kg,t.paddingTop),this.paddingRight=fm(e,Ig,t.paddingRight),this.paddingBottom=fm(e,Dg,t.paddingBottom),this.paddingLeft=fm(e,Sg,t.paddingLeft),this.paintOrder=fm(e,um,t.paintOrder),this.position=fm(e,Lg,t.position),this.textAlign=fm(e,Tg,t.textAlign),this.textDecorationColor=fm(e,Xg,null!==(i=t.textDecorationColor)&&void 0!==i?i:t.color),this.textDecorationLine=fm(e,Jg,null!==(s=t.textDecorationLine)&&void 0!==s?s:t.textDecoration),this.textShadow=fm(e,Rg,t.textShadow),this.textTransform=fm(e,Ug,t.textTransform),this.transform=fm(e,Og,t.transform),this.transformOrigin=fm(e,Hg,t.transformOrigin),this.visibility=fm(e,jg,t.visibility),this.webkitTextStrokeColor=fm(e,Am,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=fm(e,cm,t.webkitTextStrokeWidth),this.wordBreak=fm(e,Gg,t.wordBreak),this.zIndex=fm(e,zg,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return dv(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return tm(this.display,4)||tm(this.display,33554432)||tm(this.display,268435456)||tm(this.display,536870912)||tm(this.display,67108864)||tm(this.display,134217728)},e}(),dm=function(e,t){this.content=fm(e,im,t.content),this.quotes=fm(e,om,t.quotes)},pm=function(e,t){this.counterIncrement=fm(e,sm,t.counterIncrement),this.counterReset=fm(e,rm,t.counterReset)},fm=function(e,t,i){var s=new jf,r=null!=i?i.toString():t.initialValue;s.write(r);var n=new Gf(s.read());switch(t.type){case 2:var o=n.parseComponentValue();return t.parse(e,Kf(o)?o.value:t.initialValue);case 0:return t.parse(e,n.parseComponentValue());case 1:return t.parse(e,n.parseComponentValues());case 4:return n.parseComponentValue();case 3:switch(t.format){case"angle":return lv(e,n.parseComponentValue());case"color":return hv(e,n.parseComponentValue());case"image":return Dv(e,n.parseComponentValue());case"length":var a=n.parseComponentValue();return ev(a)?a:sv;case"length-percentage":var l=n.parseComponentValue();return tv(l)?l:sv;case"time":return Wg(e,n.parseComponentValue())}}},vm=function(e,t){var i=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===i||t===i},gm=function(e,t){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,vm(t,3),this.styles=new hm(e,window.getComputedStyle(t,null)),g_(t)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(t.style.animationDuration="0s"),null!==this.styles.transform&&(t.style.transform="none")),this.bounds=dp(this.context,t),vm(t,4)&&(this.flags|=16)},mm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",_m="undefined"==typeof Uint8Array?[]:new Uint8Array(256),ym=0;ym=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Bm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xm="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Pm=0;Pm>10),o%1024+56320)),(r+1===i||s.length>16384)&&(n+=String.fromCharCode.apply(String,s),s.length=0)}return n},Dm=function(e,t){var i,s,r,n=function(e){var t,i,s,r,n,o=.75*e.length,a=e.length,l=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var u="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(o):new Array(o),A=Array.isArray(u)?u:new Uint8Array(u);for(t=0;t>4,A[l++]=(15&s)<<4|r>>2,A[l++]=(3&r)<<6|63&n;return u}(e),o=Array.isArray(n)?function(e){for(var t=e.length,i=[],s=0;s=55296&&r<=56319&&i=i)return{done:!0,value:null};for(var e="×";so.x||r.y>o.y;return o=r,0===t||a}));return e.body.removeChild(t),a}(document);return Object.defineProperty(Nm,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var t=new Image,i=e.createElement("canvas"),s=i.getContext("2d");if(!s)return!1;t.src="data:image/svg+xml,";try{s.drawImage(t,0,0),i.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(Nm,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var t=e.createElement("canvas"),i=100;t.width=i,t.height=i;var s=t.getContext("2d");if(!s)return Promise.reject(!1);s.fillStyle="rgb(0, 255, 0)",s.fillRect(0,0,i,i);var r=new Image,n=t.toDataURL();r.src=n;var o=Um(i,i,0,0,r);return s.fillStyle="red",s.fillRect(0,0,i,i),Om(o).then((function(t){s.drawImage(t,0,0);var r=s.getImageData(0,0,i,i).data;s.fillStyle="red",s.fillRect(0,0,i,i);var o=e.createElement("div");return o.style.backgroundImage="url("+n+")",o.style.height="100px",Rm(r)?Om(Um(i,i,0,0,o)):Promise.reject(!1)})).then((function(e){return s.drawImage(e,0,0),Rm(s.getImageData(0,0,i,i).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(Nm,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(Nm,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Nm,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Nm,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Nm,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},Qm=function(e,t){this.text=e,this.bounds=t},Vm=function(e,t){var i=t.ownerDocument;if(i){var s=i.createElement("html2canvaswrapper");s.appendChild(t.cloneNode(!0));var r=t.parentNode;if(r){r.replaceChild(s,t);var n=dp(e,s);return s.firstChild&&r.replaceChild(s.firstChild,s),n}}return hp.EMPTY},Hm=function(e,t,i){var s=e.ownerDocument;if(!s)throw new Error("Node has no owner document");var r=s.createRange();return r.setStart(e,t),r.setEnd(e,t+i),r},jm=function(e){if(Nm.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return function(e){for(var t,i=Lm(e),s=[];!(t=i.next()).done;)t.value&&s.push(t.value.slice());return s}(e)},Gm=function(e,t){return 0!==t.letterSpacing?jm(e):function(e,t){if(Nm.SUPPORT_NATIVE_TEXT_SEGMENTATION){var i=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(i.segment(e)).map((function(e){return e.segment}))}return Wm(e,t)}(e,t)},zm=[32,160,4961,65792,65793,4153,4241],Wm=function(e,t){for(var i,s=function(e,t){var i=pp(e),s=Af(i,t),r=s[0],n=s[1],o=s[2],a=i.length,l=0,u=0;return{next:function(){if(u>=a)return{done:!0,value:null};for(var e="×";u0)if(Nm.SUPPORT_RANGE_BOUNDS){var r=Hm(s,o,t.length).getClientRects();if(r.length>1){var a=jm(t),l=0;a.forEach((function(t){n.push(new Qm(t,hp.fromDOMRectList(e,Hm(s,l+o,t.length).getClientRects()))),l+=t.length}))}else n.push(new Qm(t,hp.fromDOMRectList(e,r)))}else{var u=s.splitText(t.length);n.push(new Qm(t,Vm(e,s))),s=u}else Nm.SUPPORT_RANGE_BOUNDS||(s=s.splitText(t.length));o+=t.length})),n}(e,this.text,i,t)},Xm=function(e,t){switch(t){case 1:return e.toLowerCase();case 3:return e.replace(Jm,Ym);case 2:return e.toUpperCase();default:return e}},Jm=/(^|\s|:|-|\(|\))([a-z])/g,Ym=function(e,t,i){return e.length>0?t+i.toUpperCase():e},Zm=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.src=i.currentSrc||i.src,s.intrinsicWidth=i.naturalWidth,s.intrinsicHeight=i.naturalHeight,s.context.cache.addImage(s.src),s}return ap(t,e),t}(gm),qm=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.canvas=i,s.intrinsicWidth=i.width,s.intrinsicHeight=i.height,s}return ap(t,e),t}(gm),$m=function(e){function t(t,i){var s=e.call(this,t,i)||this,r=new XMLSerializer,n=dp(t,i);return i.setAttribute("width",n.width+"px"),i.setAttribute("height",n.height+"px"),s.svg="data:image/svg+xml,"+encodeURIComponent(r.serializeToString(i)),s.intrinsicWidth=i.width.baseVal.value,s.intrinsicHeight=i.height.baseVal.value,s.context.cache.addImage(s.svg),s}return ap(t,e),t}(gm),e_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.value=i.value,s}return ap(t,e),t}(gm),t_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.start=i.start,s.reversed="boolean"==typeof i.reversed&&!0===i.reversed,s}return ap(t,e),t}(gm),i_=[{type:15,flags:0,unit:"px",number:3}],s_=[{type:16,flags:0,number:50}],r_="password",n_=function(e){function t(t,i){var s,r=e.call(this,t,i)||this;switch(r.type=i.type.toLowerCase(),r.checked=i.checked,r.value=function(e){var t=e.type===r_?new Array(e.value.length+1).join("•"):e.value;return 0===t.length?e.placeholder||"":t}(i),"checkbox"!==r.type&&"radio"!==r.type||(r.styles.backgroundColor=3739148031,r.styles.borderTopColor=r.styles.borderRightColor=r.styles.borderBottomColor=r.styles.borderLeftColor=2779096575,r.styles.borderTopWidth=r.styles.borderRightWidth=r.styles.borderBottomWidth=r.styles.borderLeftWidth=1,r.styles.borderTopStyle=r.styles.borderRightStyle=r.styles.borderBottomStyle=r.styles.borderLeftStyle=1,r.styles.backgroundClip=[0],r.styles.backgroundOrigin=[0],r.bounds=(s=r.bounds).width>s.height?new hp(s.left+(s.width-s.height)/2,s.top,s.height,s.height):s.width0)s.textNodes.push(new Km(t,n,s.styles));else if(v_(n))if(I_(n)&&n.assignedNodes)n.assignedNodes().forEach((function(i){return e(t,i,s,r)}));else{var a=c_(t,n);a.styles.isVisible()&&(d_(n,a,r)?a.flags|=4:p_(a.styles)&&(a.flags|=2),-1!==u_.indexOf(n.tagName)&&(a.flags|=8),s.elements.push(a),n.slot,n.shadowRoot?e(t,n.shadowRoot,a,r):F_(n)||w_(n)||k_(n)||e(t,n,a,r))}},c_=function(e,t){return C_(t)?new Zm(e,t):x_(t)?new qm(e,t):w_(t)?new $m(e,t):__(t)?new e_(e,t):y_(t)?new t_(e,t):b_(t)?new n_(e,t):k_(t)?new o_(e,t):F_(t)?new a_(e,t):M_(t)?new l_(e,t):new gm(e,t)},h_=function(e,t){var i=c_(e,t);return i.flags|=4,A_(e,t,i,i),i},d_=function(e,t,i){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||B_(e)&&i.styles.isTransparent()},p_=function(e){return e.isPositioned()||e.isFloating()},f_=function(e){return e.nodeType===Node.TEXT_NODE},v_=function(e){return e.nodeType===Node.ELEMENT_NODE},g_=function(e){return v_(e)&&void 0!==e.style&&!m_(e)},m_=function(e){return"object"===B(e.className)},__=function(e){return"LI"===e.tagName},y_=function(e){return"OL"===e.tagName},b_=function(e){return"INPUT"===e.tagName},w_=function(e){return"svg"===e.tagName},B_=function(e){return"BODY"===e.tagName},x_=function(e){return"CANVAS"===e.tagName},P_=function(e){return"VIDEO"===e.tagName},C_=function(e){return"IMG"===e.tagName},M_=function(e){return"IFRAME"===e.tagName},E_=function(e){return"STYLE"===e.tagName},F_=function(e){return"TEXTAREA"===e.tagName},k_=function(e){return"SELECT"===e.tagName},I_=function(e){return"SLOT"===e.tagName},D_=function(e){return e.tagName.indexOf("-")>0},S_=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(e){var t=this.counters[e];return t||[]},e.prototype.pop=function(e){var t=this;e.forEach((function(e){return t.counters[e].pop()}))},e.prototype.parse=function(e){var t=this,i=e.counterIncrement,s=e.counterReset,r=!0;null!==i&&i.forEach((function(e){var i=t.counters[e.counter];i&&0!==e.increment&&(r=!1,i.length||i.push(1),i[Math.max(0,i.length-1)]+=e.increment)}));var n=[];return r&&s.forEach((function(e){var i=t.counters[e.counter];n.push(e.counter),i||(i=t.counters[e.counter]=[]),i.push(e.reset)})),n},e}(),T_={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},L_={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},R_={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},U_={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},O_=function(e,t,i,s,r,n){return ei?j_(e,r,n.length>0):s.integers.reduce((function(t,i,r){for(;e>=i;)e-=i,t+=s.values[r];return t}),"")+n},N_=function(e,t,i,s){var r="";do{i||e--,r=s(e)+r,e/=t}while(e*t>=t);return r},Q_=function(e,t,i,s,r){var n=i-t+1;return(e<0?"-":"")+(N_(Math.abs(e),n,s,(function(e){return fp(Math.floor(e%n)+t)}))+r)},V_=function(e,t,i){void 0===i&&(i=". ");var s=t.length;return N_(Math.abs(e),s,!1,(function(e){return t[Math.floor(e%s)]}))+i},H_=function(e,t,i,s,r,n){if(e<-9999||e>9999)return j_(e,4,r.length>0);var o=Math.abs(e),a=r;if(0===o)return t[0]+a;for(var l=0;o>0&&l<=4;l++){var u=o%10;0===u&&tm(n,1)&&""!==a?a=t[u]+a:u>1||1===u&&0===l||1===u&&1===l&&tm(n,2)||1===u&&1===l&&tm(n,4)&&e>100||1===u&&l>1&&tm(n,8)?a=t[u]+(l>0?i[l-1]:"")+a:1===u&&l>0&&(a=i[l-1]+a),o=Math.floor(o/10)}return(e<0?s:"")+a},j_=function(e,t,i){var s=i?". ":"",r=i?"、":"",n=i?", ":"",o=i?" ":"";switch(t){case 0:return"•"+o;case 1:return"◦"+o;case 2:return"◾"+o;case 5:var a=Q_(e,48,57,!0,s);return a.length<4?"0"+a:a;case 4:return V_(e,"〇一二三四五六七八九",r);case 6:return O_(e,1,3999,T_,3,s).toLowerCase();case 7:return O_(e,1,3999,T_,3,s);case 8:return Q_(e,945,969,!1,s);case 9:return Q_(e,97,122,!1,s);case 10:return Q_(e,65,90,!1,s);case 11:return Q_(e,1632,1641,!0,s);case 12:case 49:return O_(e,1,9999,L_,3,s);case 35:return O_(e,1,9999,L_,3,s).toLowerCase();case 13:return Q_(e,2534,2543,!0,s);case 14:case 30:return Q_(e,6112,6121,!0,s);case 15:return V_(e,"子丑寅卯辰巳午未申酉戌亥",r);case 16:return V_(e,"甲乙丙丁戊己庚辛壬癸",r);case 17:case 48:return H_(e,"零一二三四五六七八九","十百千萬","負",r,14);case 47:return H_(e,"零壹貳參肆伍陸柒捌玖","拾佰仟萬","負",r,15);case 42:return H_(e,"零一二三四五六七八九","十百千萬","负",r,14);case 41:return H_(e,"零壹贰叁肆伍陆柒捌玖","拾佰仟萬","负",r,15);case 26:return H_(e,"〇一二三四五六七八九","十百千万","マイナス",r,0);case 25:return H_(e,"零壱弐参四伍六七八九","拾百千万","マイナス",r,7);case 31:return H_(e,"영일이삼사오육칠팔구","십백천만","마이너스",n,7);case 33:return H_(e,"零一二三四五六七八九","十百千萬","마이너스",n,0);case 32:return H_(e,"零壹貳參四五六七八九","拾百千","마이너스",n,7);case 18:return Q_(e,2406,2415,!0,s);case 20:return O_(e,1,19999,U_,3,s);case 21:return Q_(e,2790,2799,!0,s);case 22:return Q_(e,2662,2671,!0,s);case 22:return O_(e,1,10999,R_,3,s);case 23:return V_(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return V_(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return Q_(e,3302,3311,!0,s);case 28:return V_(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",r);case 29:return V_(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",r);case 34:return Q_(e,3792,3801,!0,s);case 37:return Q_(e,6160,6169,!0,s);case 38:return Q_(e,4160,4169,!0,s);case 39:return Q_(e,2918,2927,!0,s);case 40:return Q_(e,1776,1785,!0,s);case 43:return Q_(e,3046,3055,!0,s);case 44:return Q_(e,3174,3183,!0,s);case 45:return Q_(e,3664,3673,!0,s);case 46:return Q_(e,3872,3881,!0,s);default:return Q_(e,48,57,!0,s)}},G_=function(){function e(e,t,i){if(this.context=e,this.options=i,this.scrolledElements=[],this.referenceElement=t,this.counters=new S_,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,t){var i=this,s=W_(e,t);if(!s.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,n=e.defaultView.pageYOffset,o=s.contentWindow,a=o.document,l=J_(s).then((function(){return up(i,void 0,void 0,(function(){var e,i;return Ap(this,(function(r){switch(r.label){case 0:return this.scrolledElements.forEach(ey),o&&(o.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||o.scrollY===t.top&&o.scrollX===t.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-t.left,o.scrollY-t.top,0,0))),e=this.options.onclone,void 0===(i=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:r.sent(),r.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,X_(a)]:[3,4];case 3:r.sent(),r.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(a,i)})).then((function(){return s}))]:[2,s]}}))}))}));return a.open(),a.write(q_(document.doctype)+""),$_(this.referenceElement.ownerDocument,r,n),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},e.prototype.createElementClone=function(e){if(vm(e,2),x_(e))return this.createCanvasClone(e);if(P_(e))return this.createVideoClone(e);if(E_(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return C_(t)&&(C_(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),"lazy"===t.loading&&(t.loading="eager")),D_(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return Z_(e.style,t),t},e.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var i=[].slice.call(t.cssRules,0).reduce((function(e,t){return t&&"string"==typeof t.cssText?e+t.cssText:e}),""),s=e.cloneNode(!1);return s.textContent=i,s}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var i=e.ownerDocument.createElement("img");try{return i.src=e.toDataURL(),i}catch(t){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var s=e.cloneNode(!1);try{s.width=e.width,s.height=e.height;var r=e.getContext("2d"),n=s.getContext("2d");if(n)if(!this.options.allowTaint&&r)n.putImageData(r.getImageData(0,0,e.width,e.height),0,0);else{var o=null!==(t=e.getContext("webgl2"))&&void 0!==t?t:e.getContext("webgl");if(o){var a=o.getContextAttributes();!1===(null==a?void 0:a.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}n.drawImage(e,0,0)}return s}catch(t){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return s},e.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var i=t.getContext("2d");try{return i&&(i.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||i.getImageData(0,0,t.width,t.height)),t}catch(t){this.context.logger.info("Unable to clone video as it is tainted",e)}var s=e.ownerDocument.createElement("canvas");return s.width=e.offsetWidth,s.height=e.offsetHeight,s},e.prototype.appendChildNode=function(e,t,i){v_(t)&&(function(e){return"SCRIPT"===e.tagName}(t)||t.hasAttribute("data-html2canvas-ignore")||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(t))||this.options.copyStyles&&v_(t)&&E_(t)||e.appendChild(this.cloneNode(t,i))},e.prototype.cloneChildNodes=function(e,t,i){for(var s=this,r=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;r;r=r.nextSibling)if(v_(r)&&I_(r)&&"function"==typeof r.assignedNodes){var n=r.assignedNodes();n.length&&n.forEach((function(e){return s.appendChildNode(t,e,i)}))}else this.appendChildNode(t,r,i)},e.prototype.cloneNode=function(e,t){if(f_(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var i=e.ownerDocument.defaultView;if(i&&v_(e)&&(g_(e)||m_(e))){var s=this.createElementClone(e);s.style.transitionProperty="none";var r=i.getComputedStyle(e),n=i.getComputedStyle(e,":before"),o=i.getComputedStyle(e,":after");this.referenceElement===e&&g_(s)&&(this.clonedReferenceElement=s),B_(s)&&sy(s);var a=this.counters.parse(new pm(this.context,r)),l=this.resolvePseudoContent(e,s,n,Cm.BEFORE);D_(e)&&(t=!0),P_(e)||this.cloneChildNodes(e,s,t),l&&s.insertBefore(l,s.firstChild);var u=this.resolvePseudoContent(e,s,o,Cm.AFTER);return u&&s.appendChild(u),this.counters.pop(a),(r&&(this.options.copyStyles||m_(e))&&!M_(e)||t)&&Z_(r,s),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([s,e.scrollLeft,e.scrollTop]),(F_(e)||k_(e))&&(F_(s)||k_(s))&&(s.value=e.value),s}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,t,i,s){var r=this;if(i){var n=i.content,o=t.ownerDocument;if(o&&n&&"none"!==n&&"-moz-alt-content"!==n&&"none"!==i.display){this.counters.parse(new pm(this.context,i));var a=new dm(this.context,i),l=o.createElement("html2canvaspseudoelement");Z_(i,l),a.content.forEach((function(t){if(0===t.type)l.appendChild(o.createTextNode(t.value));else if(22===t.type){var i=o.createElement("img");i.src=t.value,i.style.opacity="1",l.appendChild(i)}else if(18===t.type){if("attr"===t.name){var s=t.values.filter(Kf);s.length&&l.appendChild(o.createTextNode(e.getAttribute(s[0].value)||""))}else if("counter"===t.name){var n=t.values.filter(Zf),u=n[0],A=n[1];if(u&&Kf(u)){var c=r.counters.getCounterValue(u.value),h=A&&Kf(A)?bg.parse(r.context,A.value):3;l.appendChild(o.createTextNode(j_(c,h,!1)))}}else if("counters"===t.name){var d=t.values.filter(Zf),p=(u=d[0],d[1]);A=d[2];if(u&&Kf(u)){var f=r.counters.getCounterValues(u.value),v=A&&Kf(A)?bg.parse(r.context,A.value):3,g=p&&0===p.type?p.value:"",m=f.map((function(e){return j_(e,v,!1)})).join(g);l.appendChild(o.createTextNode(m))}}}else if(20===t.type)switch(t.value){case"open-quote":l.appendChild(o.createTextNode(am(a.quotes,r.quoteDepth++,!0)));break;case"close-quote":l.appendChild(o.createTextNode(am(a.quotes,--r.quoteDepth,!1)));break;default:l.appendChild(o.createTextNode(t.value))}})),l.className=ty+" "+iy;var u=s===Cm.BEFORE?" "+ty:" "+iy;return m_(t)?t.className.baseValue+=u:t.className+=u,l}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Cm||(Cm={}));var z_,W_=function(e,t){var i=e.createElement("iframe");return i.className="html2canvas-container",i.style.visibility="hidden",i.style.position="fixed",i.style.left="-10000px",i.style.top="0px",i.style.border="0",i.width=t.width.toString(),i.height=t.height.toString(),i.scrolling="no",i.setAttribute("data-html2canvas-ignore","true"),e.body.appendChild(i),i},K_=function(e){return new Promise((function(t){e.complete?t():e.src?(e.onload=t,e.onerror=t):t()}))},X_=function(e){return Promise.all([].slice.call(e.images,0).map(K_))},J_=function(e){return new Promise((function(t,i){var s=e.contentWindow;if(!s)return i("No window assigned for iframe");var r=s.document;s.onload=e.onload=function(){s.onload=e.onload=null;var i=setInterval((function(){r.body.childNodes.length>0&&"complete"===r.readyState&&(clearInterval(i),t(e))}),50)}}))},Y_=["all","d","content"],Z_=function(e,t){for(var i=e.length-1;i>=0;i--){var s=e.item(i);-1===Y_.indexOf(s)&&t.style.setProperty(s,e.getPropertyValue(s))}return t},q_=function(e){var t="";return e&&(t+=""),t},$_=function(e,t,i){e&&e.defaultView&&(t!==e.defaultView.pageXOffset||i!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(t,i)},ey=function(e){var t=e[0],i=e[1],s=e[2];t.scrollLeft=i,t.scrollTop=s},ty="___html2canvas___pseudoelement_before",iy="___html2canvas___pseudoelement_after",sy=function(e){ry(e,"."+ty+':before{\n content: "" !important;\n display: none !important;\n}\n .'+iy+':after{\n content: "" !important;\n display: none !important;\n}')},ry=function(e,t){var i=e.ownerDocument;if(i){var s=i.createElement("style");s.textContent=t,e.appendChild(s)}},ny=function(){function e(){}return e.getOrigin=function(t){var i=e._link;return i?(i.href=t,i.href=i.href,i.protocol+i.hostname+i.port):"about:blank"},e.isSameOrigin=function(t){return e.getOrigin(t)===e._origin},e.setContext=function(t){e._link=t.document.createElement("a"),e._origin=e.getOrigin(t.location.href)},e._origin="about:blank",e}(),oy=function(){function e(e,t){this.context=e,this._options=t,this._cache={}}return e.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)?t:dy(e)||Ay(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),t):t},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return up(this,void 0,void 0,(function(){var t,i,s,r,n=this;return Ap(this,(function(o){switch(o.label){case 0:return t=ny.isSameOrigin(e),i=!cy(e)&&!0===this._options.useCORS&&Nm.SUPPORT_CORS_IMAGES&&!t,s=!cy(e)&&!t&&!dy(e)&&"string"==typeof this._options.proxy&&Nm.SUPPORT_CORS_XHR&&!i,t||!1!==this._options.allowTaint||cy(e)||dy(e)||s||i?(r=e,s?[4,this.proxy(r)]:[3,2]):[2];case 1:r=o.sent(),o.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,t){var s=new Image;s.onload=function(){return e(s)},s.onerror=t,(hy(r)||i)&&(s.crossOrigin="anonymous"),s.src=r,!0===s.complete&&setTimeout((function(){return e(s)}),500),n._options.imageTimeout>0&&setTimeout((function(){return t("Timed out ("+n._options.imageTimeout+"ms) loading image")}),n._options.imageTimeout)}))];case 3:return[2,o.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var t=this,i=this._options.proxy;if(!i)throw new Error("No proxy defined");var s=e.substring(0,256);return new Promise((function(r,n){var o=Nm.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(200===a.status)if("text"===o)r(a.response);else{var e=new FileReader;e.addEventListener("load",(function(){return r(e.result)}),!1),e.addEventListener("error",(function(e){return n(e)}),!1),e.readAsDataURL(a.response)}else n("Failed to proxy resource "+s+" with status code "+a.status)},a.onerror=n;var l=i.indexOf("?")>-1?"&":"?";if(a.open("GET",""+i+l+"url="+encodeURIComponent(e)+"&responseType="+o),"text"!==o&&a instanceof XMLHttpRequest&&(a.responseType=o),t._options.imageTimeout){var u=t._options.imageTimeout;a.timeout=u,a.ontimeout=function(){return n("Timed out ("+u+"ms) proxying "+s)}}a.send()}))},e}(),ay=/^data:image\/svg\+xml/i,ly=/^data:image\/.*;base64,/i,uy=/^data:image\/.*/i,Ay=function(e){return Nm.SUPPORT_SVG_DRAWING||!py(e)},cy=function(e){return uy.test(e)},hy=function(e){return ly.test(e)},dy=function(e){return"blob"===e.substr(0,4)},py=function(e){return"svg"===e.substr(-3).toLowerCase()||ay.test(e)},fy=function(){function e(e,t){this.type=0,this.x=e,this.y=t}return e.prototype.add=function(t,i){return new e(this.x+t,this.y+i)},e}(),vy=function(e,t,i){return new fy(e.x+(t.x-e.x)*i,e.y+(t.y-e.y)*i)},gy=function(){function e(e,t,i,s){this.type=1,this.start=e,this.startControl=t,this.endControl=i,this.end=s}return e.prototype.subdivide=function(t,i){var s=vy(this.start,this.startControl,t),r=vy(this.startControl,this.endControl,t),n=vy(this.endControl,this.end,t),o=vy(s,r,t),a=vy(r,n,t),l=vy(o,a,t);return i?new e(this.start,s,o,l):new e(l,a,n,this.end)},e.prototype.add=function(t,i){return new e(this.start.add(t,i),this.startControl.add(t,i),this.endControl.add(t,i),this.end.add(t,i))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),my=function(e){return 1===e.type},_y=function(e){var t=e.styles,i=e.bounds,s=ov(t.borderTopLeftRadius,i.width,i.height),r=s[0],n=s[1],o=ov(t.borderTopRightRadius,i.width,i.height),a=o[0],l=o[1],u=ov(t.borderBottomRightRadius,i.width,i.height),A=u[0],c=u[1],h=ov(t.borderBottomLeftRadius,i.width,i.height),d=h[0],p=h[1],f=[];f.push((r+a)/i.width),f.push((d+A)/i.width),f.push((n+p)/i.height),f.push((l+c)/i.height);var v=Math.max.apply(Math,f);v>1&&(r/=v,n/=v,a/=v,l/=v,A/=v,c/=v,d/=v,p/=v);var g=i.width-a,m=i.height-c,_=i.width-A,y=i.height-p,b=t.borderTopWidth,w=t.borderRightWidth,B=t.borderBottomWidth,x=t.borderLeftWidth,P=av(t.paddingTop,e.bounds.width),C=av(t.paddingRight,e.bounds.width),M=av(t.paddingBottom,e.bounds.width),E=av(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=r>0||n>0?yy(i.left+x/3,i.top+b/3,r-x/3,n-b/3,z_.TOP_LEFT):new fy(i.left+x/3,i.top+b/3),this.topRightBorderDoubleOuterBox=r>0||n>0?yy(i.left+g,i.top+b/3,a-w/3,l-b/3,z_.TOP_RIGHT):new fy(i.left+i.width-w/3,i.top+b/3),this.bottomRightBorderDoubleOuterBox=A>0||c>0?yy(i.left+_,i.top+m,A-w/3,c-B/3,z_.BOTTOM_RIGHT):new fy(i.left+i.width-w/3,i.top+i.height-B/3),this.bottomLeftBorderDoubleOuterBox=d>0||p>0?yy(i.left+x/3,i.top+y,d-x/3,p-B/3,z_.BOTTOM_LEFT):new fy(i.left+x/3,i.top+i.height-B/3),this.topLeftBorderDoubleInnerBox=r>0||n>0?yy(i.left+2*x/3,i.top+2*b/3,r-2*x/3,n-2*b/3,z_.TOP_LEFT):new fy(i.left+2*x/3,i.top+2*b/3),this.topRightBorderDoubleInnerBox=r>0||n>0?yy(i.left+g,i.top+2*b/3,a-2*w/3,l-2*b/3,z_.TOP_RIGHT):new fy(i.left+i.width-2*w/3,i.top+2*b/3),this.bottomRightBorderDoubleInnerBox=A>0||c>0?yy(i.left+_,i.top+m,A-2*w/3,c-2*B/3,z_.BOTTOM_RIGHT):new fy(i.left+i.width-2*w/3,i.top+i.height-2*B/3),this.bottomLeftBorderDoubleInnerBox=d>0||p>0?yy(i.left+2*x/3,i.top+y,d-2*x/3,p-2*B/3,z_.BOTTOM_LEFT):new fy(i.left+2*x/3,i.top+i.height-2*B/3),this.topLeftBorderStroke=r>0||n>0?yy(i.left+x/2,i.top+b/2,r-x/2,n-b/2,z_.TOP_LEFT):new fy(i.left+x/2,i.top+b/2),this.topRightBorderStroke=r>0||n>0?yy(i.left+g,i.top+b/2,a-w/2,l-b/2,z_.TOP_RIGHT):new fy(i.left+i.width-w/2,i.top+b/2),this.bottomRightBorderStroke=A>0||c>0?yy(i.left+_,i.top+m,A-w/2,c-B/2,z_.BOTTOM_RIGHT):new fy(i.left+i.width-w/2,i.top+i.height-B/2),this.bottomLeftBorderStroke=d>0||p>0?yy(i.left+x/2,i.top+y,d-x/2,p-B/2,z_.BOTTOM_LEFT):new fy(i.left+x/2,i.top+i.height-B/2),this.topLeftBorderBox=r>0||n>0?yy(i.left,i.top,r,n,z_.TOP_LEFT):new fy(i.left,i.top),this.topRightBorderBox=a>0||l>0?yy(i.left+g,i.top,a,l,z_.TOP_RIGHT):new fy(i.left+i.width,i.top),this.bottomRightBorderBox=A>0||c>0?yy(i.left+_,i.top+m,A,c,z_.BOTTOM_RIGHT):new fy(i.left+i.width,i.top+i.height),this.bottomLeftBorderBox=d>0||p>0?yy(i.left,i.top+y,d,p,z_.BOTTOM_LEFT):new fy(i.left,i.top+i.height),this.topLeftPaddingBox=r>0||n>0?yy(i.left+x,i.top+b,Math.max(0,r-x),Math.max(0,n-b),z_.TOP_LEFT):new fy(i.left+x,i.top+b),this.topRightPaddingBox=a>0||l>0?yy(i.left+Math.min(g,i.width-w),i.top+b,g>i.width+w?0:Math.max(0,a-w),Math.max(0,l-b),z_.TOP_RIGHT):new fy(i.left+i.width-w,i.top+b),this.bottomRightPaddingBox=A>0||c>0?yy(i.left+Math.min(_,i.width-x),i.top+Math.min(m,i.height-B),Math.max(0,A-w),Math.max(0,c-B),z_.BOTTOM_RIGHT):new fy(i.left+i.width-w,i.top+i.height-B),this.bottomLeftPaddingBox=d>0||p>0?yy(i.left+x,i.top+Math.min(y,i.height-B),Math.max(0,d-x),Math.max(0,p-B),z_.BOTTOM_LEFT):new fy(i.left+x,i.top+i.height-B),this.topLeftContentBox=r>0||n>0?yy(i.left+x+E,i.top+b+P,Math.max(0,r-(x+E)),Math.max(0,n-(b+P)),z_.TOP_LEFT):new fy(i.left+x+E,i.top+b+P),this.topRightContentBox=a>0||l>0?yy(i.left+Math.min(g,i.width+x+E),i.top+b+P,g>i.width+x+E?0:a-x+E,l-(b+P),z_.TOP_RIGHT):new fy(i.left+i.width-(w+C),i.top+b+P),this.bottomRightContentBox=A>0||c>0?yy(i.left+Math.min(_,i.width-(x+E)),i.top+Math.min(m,i.height+b+P),Math.max(0,A-(w+C)),c-(B+M),z_.BOTTOM_RIGHT):new fy(i.left+i.width-(w+C),i.top+i.height-(B+M)),this.bottomLeftContentBox=d>0||p>0?yy(i.left+x+E,i.top+y,Math.max(0,d-(x+E)),p-(B+M),z_.BOTTOM_LEFT):new fy(i.left+x+E,i.top+i.height-(B+M))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(z_||(z_={}));var yy=function(e,t,i,s,r){var n=(Math.sqrt(2)-1)/3*4,o=i*n,a=s*n,l=e+i,u=t+s;switch(r){case z_.TOP_LEFT:return new gy(new fy(e,u),new fy(e,u-a),new fy(l-o,t),new fy(l,t));case z_.TOP_RIGHT:return new gy(new fy(e,t),new fy(e+o,t),new fy(l,u-a),new fy(l,u));case z_.BOTTOM_RIGHT:return new gy(new fy(l,t),new fy(l,t+a),new fy(e+o,u),new fy(e,u));case z_.BOTTOM_LEFT:default:return new gy(new fy(l,u),new fy(l-o,u),new fy(e,t+a),new fy(e,t))}},by=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},wy=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},By=function(e,t,i){this.offsetX=e,this.offsetY=t,this.matrix=i,this.type=0,this.target=6},xy=function(e,t){this.path=e,this.target=t,this.type=1},Py=function(e){this.opacity=e,this.type=2,this.target=6},Cy=function(e){return 1===e.type},My=function(e,t){return e.length===t.length&&e.some((function(e,i){return e===t[i]}))},Ey=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Fy=function(){function e(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new _y(this.container),this.container.styles.opacity<1&&this.effects.push(new Py(this.container.styles.opacity)),null!==this.container.styles.transform){var i=this.container.bounds.left+this.container.styles.transformOrigin[0].number,s=this.container.bounds.top+this.container.styles.transformOrigin[1].number,r=this.container.styles.transform;this.effects.push(new By(i,s,r))}if(0!==this.container.styles.overflowX){var n=by(this.curves),o=wy(this.curves);My(n,o)?this.effects.push(new xy(n,6)):(this.effects.push(new xy(n,2)),this.effects.push(new xy(o,4)))}}return e.prototype.getEffects=function(e){for(var t=-1===[2,3].indexOf(this.container.styles.position),i=this.parent,s=this.effects.slice(0);i;){var r=i.effects.filter((function(e){return!Cy(e)}));if(t||0!==i.container.styles.position||!i.parent){if(s.unshift.apply(s,r),t=-1===[2,3].indexOf(i.container.styles.position),0!==i.container.styles.overflowX){var n=by(i.curves),o=wy(i.curves);My(n,o)||s.unshift(new xy(o,6))}}else s.unshift.apply(s,r);i=i.parent}return s.filter((function(t){return tm(t.target,e)}))},e}(),ky=function e(t,i,s,r){t.container.elements.forEach((function(n){var o=tm(n.flags,4),a=tm(n.flags,2),l=new Fy(n,t);tm(n.styles.display,2048)&&r.push(l);var u=tm(n.flags,8)?[]:r;if(o||a){var A=o||n.styles.isPositioned()?s:i,c=new Ey(l);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var h=n.styles.zIndex.order;if(h<0){var d=0;A.negativeZIndex.some((function(e,t){return h>e.element.container.styles.zIndex.order?(d=t,!1):d>0})),A.negativeZIndex.splice(d,0,c)}else if(h>0){var p=0;A.positiveZIndex.some((function(e,t){return h>=e.element.container.styles.zIndex.order?(p=t+1,!1):p>0})),A.positiveZIndex.splice(p,0,c)}else A.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?A.nonPositionedFloats.push(c):A.nonPositionedInlineLevel.push(c);e(l,c,o?c:s,u)}else n.styles.isInlineLevel()?i.inlineLevel.push(l):i.nonInlineLevel.push(l),e(l,i,s,u);tm(n.flags,8)&&Iy(n,u)}))},Iy=function(e,t){for(var i=e instanceof t_?e.start:1,s=e instanceof t_&&e.reversed,r=0;r0&&e.intrinsicHeight>0){var s=Uy(e),r=wy(t);this.path(r),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(i,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(e){return up(this,void 0,void 0,(function(){var i,s,r,n,o,a,l,u,A,c,h,d,p,f,v,g,m,_;return Ap(this,(function(y){switch(y.label){case 0:this.applyEffects(e.getEffects(4)),i=e.container,s=e.curves,r=i.styles,n=0,o=i.textNodes,y.label=1;case 1:return n0&&B>0&&(g=s.ctx.createPattern(p,"repeat"),s.renderRepeat(_,g,P,C))):function(e){return 2===e.type}(i)&&(m=Oy(e,t,[null,null,null]),_=m[0],y=m[1],b=m[2],w=m[3],B=m[4],x=0===i.position.length?[rv]:i.position,P=av(x[0],w),C=av(x[x.length-1],B),M=function(e,t,i,s,r){var n=0,o=0;switch(e.size){case 0:0===e.shape?n=o=Math.min(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(n=Math.min(Math.abs(t),Math.abs(t-s)),o=Math.min(Math.abs(i),Math.abs(i-r)));break;case 2:if(0===e.shape)n=o=Math.min(Ev(t,i),Ev(t,i-r),Ev(t-s,i),Ev(t-s,i-r));else if(1===e.shape){var a=Math.min(Math.abs(i),Math.abs(i-r))/Math.min(Math.abs(t),Math.abs(t-s)),l=Fv(s,r,t,i,!0),u=l[0],A=l[1];o=a*(n=Ev(u-t,(A-i)/a))}break;case 1:0===e.shape?n=o=Math.max(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(n=Math.max(Math.abs(t),Math.abs(t-s)),o=Math.max(Math.abs(i),Math.abs(i-r)));break;case 3:if(0===e.shape)n=o=Math.max(Ev(t,i),Ev(t,i-r),Ev(t-s,i),Ev(t-s,i-r));else if(1===e.shape){a=Math.max(Math.abs(i),Math.abs(i-r))/Math.max(Math.abs(t),Math.abs(t-s));var c=Fv(s,r,t,i,!1);u=c[0],A=c[1],o=a*(n=Ev(u-t,(A-i)/a))}}return Array.isArray(e.size)&&(n=av(e.size[0],s),o=2===e.size.length?av(e.size[1],r):n),[n,o]}(i,P,C,w,B),E=M[0],F=M[1],E>0&&F>0&&(k=s.ctx.createRadialGradient(y+P,b+C,0,y+P,b+C,E),Cv(i.stops,2*E).forEach((function(e){return k.addColorStop(e.stop,pv(e.color))})),s.path(_),s.ctx.fillStyle=k,E!==F?(I=e.bounds.left+.5*e.bounds.width,D=e.bounds.top+.5*e.bounds.height,T=1/(S=F/E),s.ctx.save(),s.ctx.translate(I,D),s.ctx.transform(1,0,0,S,0,0),s.ctx.translate(-I,-D),s.ctx.fillRect(y,T*(b-D)+D,w,B*T),s.ctx.restore()):s.ctx.fill())),L.label=6;case 6:return t--,[2]}}))},s=this,r=0,n=e.styles.backgroundImage.slice(0).reverse(),a.label=1;case 1:return r0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,n,e.curves,2)]:[3,11]:[3,13];case 4:return A.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,n,e.curves,3)];case 6:return A.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,n,e.curves)];case 8:return A.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,n,e.curves)];case 10:A.sent(),A.label=11;case 11:n++,A.label=12;case 12:return o++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(e,t,i,s,r){return up(this,void 0,void 0,(function(){var n,o,a,l,u,A,c,h,d,p,f,v,g,m,_,y;return Ap(this,(function(b){return this.ctx.save(),n=function(e,t){switch(t){case 0:return Ty(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return Ty(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return Ty(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return Ty(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(s,i),o=Sy(s,i),2===r&&(this.path(o),this.ctx.clip()),my(o[0])?(a=o[0].start.x,l=o[0].start.y):(a=o[0].x,l=o[0].y),my(o[1])?(u=o[1].end.x,A=o[1].end.y):(u=o[1].x,A=o[1].y),c=0===i||2===i?Math.abs(a-u):Math.abs(l-A),this.ctx.beginPath(),3===r?this.formatPath(n):this.formatPath(o.slice(0,2)),h=t<3?3*t:2*t,d=t<3?2*t:t,3===r&&(h=t,d=t),p=!0,c<=2*h?p=!1:c<=2*h+d?(h*=f=c/(2*h+d),d*=f):(v=Math.floor((c+d)/(h+d)),g=(c-v*h)/(v-1),d=(m=(c-(v+1)*h)/v)<=0||Math.abs(d-g)0&&void 0!==arguments[0]?arguments[0]:{},t=!this._snapshotBegun,i=void 0!==e.width&&void 0!==e.height,s=this.scene.canvas.canvas,r=s.clientWidth,n=s.clientHeight,o=e.width?Math.floor(e.width):s.width,a=e.height?Math.floor(e.height):s.height;i&&(s.width=o,s.height=a),this._snapshotBegun||this.beginSnapshot({width:o,height:a}),e.includeGizmos||this.sendToPlugins("snapshotStarting");for(var l={},u=0,A=this._plugins.length;u0&&void 0!==b[0]?b[0]:{},i=!this._snapshotBegun,s=void 0!==t.width&&void 0!==t.height,r=this.scene.canvas.canvas,n=r.clientWidth,o=r.clientHeight,l=t.width?Math.floor(t.width):r.width,u=t.height?Math.floor(t.height):r.height,s&&(r.width=l,r.height=u),this._snapshotBegun||this.beginSnapshot(),t.includeGizmos||this.sendToPlugins("snapshotStarting"),this.scene._renderer.renderSnapshot(),A=this.scene._renderer.readSnapshotAsCanvas(),s&&(r.width=n,r.height=o,this.scene.glRedraw()),c={},h=[],d=0,p=this._plugins.length;d1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0,s=i||new Set;if(e){if(Bb(e))s.add(e);else if(Bb(e.buffer))s.add(e.buffer);else if(ArrayBuffer.isView(e));else if(t&&"object"===B(e))for(var r in e)wb(e[r],t,s)}else;return void 0===i?Array.from(s):[]}function Bb(e){return!!e&&(e instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&e instanceof MessagePort||("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)))}var xb=function(){},Pb=function(){function e(t){x(this,e),vb(this,"name",void 0),vb(this,"source",void 0),vb(this,"url",void 0),vb(this,"terminated",!1),vb(this,"worker",void 0),vb(this,"onMessage",void 0),vb(this,"onError",void 0),vb(this,"_loadableURL","");var i=t.name,s=t.source,r=t.url;ub(s||r),this.name=i,this.source=s,this.url=r,this.onMessage=xb,this.onError=function(e){return console.log(e)},this.worker=hb?this._createBrowserWorker():this._createNodeWorker()}return C(e,[{key:"destroy",value:function(){this.onMessage=xb,this.onError=xb,this.worker.terminate(),this.terminated=!0}},{key:"isRunning",get:function(){return Boolean(this.onMessage)}},{key:"postMessage",value:function(e,t){t=t||wb(e),this.worker.postMessage(e,t)}},{key:"_getErrorFromErrorEvent",value:function(e){var t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),e.message&&(t+="".concat(e.message," in ")),e.lineno&&(t+=":".concat(e.lineno,":").concat(e.colno)),new Error(t)}},{key:"_createBrowserWorker",value:function(){var e=this;this._loadableURL=yb({source:this.source,url:this.url});var t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=function(t){t.data?e.onMessage(t.data):e.onError(new Error("No data received"))},t.onerror=function(t){e.onError(e._getErrorFromErrorEvent(t)),e.terminated=!0},t.onmessageerror=function(e){return console.error(e)},t}},{key:"_createNodeWorker",value:function(){var e,t=this;if(this.url){var i=this.url.includes(":/")||this.url.startsWith("/")?this.url:"./".concat(this.url);e=new mb(i,{eval:!1})}else{if(!this.source)throw new Error("no worker");e=new mb(this.source,{eval:!0})}return e.on("message",(function(e){t.onMessage(e)})),e.on("error",(function(e){t.onError(e)})),e.on("exit",(function(e){})),e}}],[{key:"isSupported",value:function(){return"undefined"!=typeof Worker&&hb||void 0!==B(mb)}}]),e}(),Cb=function(){function e(t){x(this,e),vb(this,"name","unnamed"),vb(this,"source",void 0),vb(this,"url",void 0),vb(this,"maxConcurrency",1),vb(this,"maxMobileConcurrency",1),vb(this,"onDebug",(function(){})),vb(this,"reuseWorkers",!0),vb(this,"props",{}),vb(this,"jobQueue",[]),vb(this,"idleQueue",[]),vb(this,"count",0),vb(this,"isDestroyed",!1),this.source=t.source,this.url=t.url,this.setProps(t)}var t,i;return C(e,[{key:"destroy",value:function(){this.idleQueue.forEach((function(e){return e.destroy()})),this.isDestroyed=!0}},{key:"setProps",value:function(e){this.props=n(n({},this.props),e),void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}},{key:"startJob",value:(i=u(a().mark((function e(t){var i,s,r,n=this,o=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=o.length>1&&void 0!==o[1]?o[1]:function(e,t,i){return e.done(i)},s=o.length>2&&void 0!==o[2]?o[2]:function(e,t){return e.error(t)},r=new Promise((function(e){return n.jobQueue.push({name:t,onMessage:i,onError:s,onStart:e}),n})),this._startQueuedJob(),e.next=6,r;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"_startQueuedJob",value:(t=u(a().mark((function e(){var t,i,s;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.jobQueue.length){e.next=2;break}return e.abrupt("return");case 2:if(t=this._getAvailableWorker()){e.next=5;break}return e.abrupt("return");case 5:if(!(i=this.jobQueue.shift())){e.next=18;break}return this.onDebug({message:"Starting job",name:i.name,workerThread:t,backlog:this.jobQueue.length}),s=new gb(i.name,t),t.onMessage=function(e){return i.onMessage(s,e.type,e.payload)},t.onError=function(e){return i.onError(s,e)},i.onStart(s),e.prev=12,e.next=15,s.result;case 15:return e.prev=15,this.returnWorkerToQueue(t),e.finish(15);case 18:case"end":return e.stop()}}),e,this,[[12,,15,18]])}))),function(){return t.apply(this,arguments)})},{key:"returnWorkerToQueue",value:function(e){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}},{key:"_getAvailableWorker",value:function(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count0&&void 0!==arguments[0]?arguments[0]:{};return e._workerFarm=e._workerFarm||new e({}),e._workerFarm.setProps(t),e._workerFarm}}]),e}();vb(Eb,"_workerFarm",void 0);function Fb(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t[e.id]||{},s="".concat(e.id,"-worker.js"),r=i.workerUrl;if(r||"compression"!==e.id||(r=t.workerUrl),"test"===t._workerType&&(r="modules/".concat(e.module,"/dist/").concat(s)),!r){var n=e.version;"latest"===n&&(n="latest");var o=n?"@".concat(n):"";r="https://unpkg.com/@loaders.gl/".concat(e.module).concat(o,"/dist/").concat(s)}return ub(r),r}function kb(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"3.2.6";ub(e,"no worker provided");var i=e.version;return!(!t||!i)}var Ib=Object.freeze({__proto__:null,default:{}}),Db={};function Sb(e){return Tb.apply(this,arguments)}function Tb(){return Tb=u(a().mark((function e(t){var i,s,r=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=r.length>1&&void 0!==r[1]?r[1]:null,s=r.length>2&&void 0!==r[2]?r[2]:{},i&&(t=Lb(t,i,s)),Db[t]=Db[t]||Rb(t),e.next=6,Db[t];case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)}))),Tb.apply(this,arguments)}function Lb(e,t,i){if(e.startsWith("http"))return e;var s=i.modules||{};return s[e]?s[e]:hb?i.CDN?(ub(i.CDN.startsWith("http")),"".concat(i.CDN,"/").concat(t,"@").concat("3.2.6","/dist/libs/").concat(e)):db?"../src/libs/".concat(e):"modules/".concat(t,"/src/libs/").concat(e):"modules/".concat(t,"/dist/libs/").concat(e)}function Rb(e){return Ub.apply(this,arguments)}function Ub(){return(Ub=u(a().mark((function e(t){var i,s,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.endsWith("wasm")){e.next=7;break}return e.next=3,fetch(t);case 3:return i=e.sent,e.next=6,i.arrayBuffer();case 6:return e.abrupt("return",e.sent);case 7:if(hb){e.next=20;break}if(e.prev=8,e.t0=Ib&&void 0,!e.t0){e.next=14;break}return e.next=13,(void 0)(t);case 13:e.t0=e.sent;case 14:return e.abrupt("return",e.t0);case 17:return e.prev=17,e.t1=e.catch(8),e.abrupt("return",null);case 20:if(!db){e.next=22;break}return e.abrupt("return",importScripts(t));case 22:return e.next=24,fetch(t);case 24:return s=e.sent,e.next=27,s.text();case 27:return r=e.sent,e.abrupt("return",Ob(r,t));case 29:case"end":return e.stop()}}),e,null,[[8,17]])})))).apply(this,arguments)}function Ob(e,t){if(hb){if(db)return eval.call(cb,e),null;var i=document.createElement("script");i.id=t;try{i.appendChild(document.createTextNode(e))}catch(t){i.text=e}return document.body.appendChild(i),null}}function Nb(e,t){return!!Eb.isSupported()&&(!!(hb||null!=t&&t._nodeWorkers)&&(e.worker&&(null==t?void 0:t.worker)))}function Qb(e,t,i,s,r){return Vb.apply(this,arguments)}function Vb(){return Vb=u(a().mark((function e(t,i,s,r,n){var o,l,u,A,c,h;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.id,l=Fb(t,s),u=Eb.getWorkerFarm(s),A=u.getWorkerPool({name:o,url:l}),s=JSON.parse(JSON.stringify(s)),r=JSON.parse(JSON.stringify(r||{})),e.next=8,A.startJob("process-on-worker",Hb.bind(null,n));case 8:return(c=e.sent).postMessage("process",{input:i,options:s,context:r}),e.next=12,c.result;case 12:return h=e.sent,e.next=15,h.result;case 15:return e.abrupt("return",e.sent);case 16:case"end":return e.stop()}}),e)}))),Vb.apply(this,arguments)}function Hb(e,t,i,s){return jb.apply(this,arguments)}function jb(){return(jb=u(a().mark((function e(t,i,s,r){var n,o,l,u,A;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=s,e.next="done"===e.t0?3:"error"===e.t0?5:"process"===e.t0?7:20;break;case 3:return i.done(r),e.abrupt("break",21);case 5:return i.error(new Error(r.error)),e.abrupt("break",21);case 7:return n=r.id,o=r.input,l=r.options,e.prev=8,e.next=11,t(o,l);case 11:u=e.sent,i.postMessage("done",{id:n,result:u}),e.next=19;break;case 15:e.prev=15,e.t1=e.catch(8),A=e.t1 instanceof Error?e.t1.message:"unknown error",i.postMessage("error",{id:n,error:A});case 19:return e.abrupt("break",21);case 20:console.warn("parse-with-worker unknown message ".concat(s));case 21:case"end":return e.stop()}}),e,null,[[8,15]])})))).apply(this,arguments)}function Gb(e,t,i){if(e.byteLength<=t+i)return"";for(var s=new DataView(e),r="",n=0;n1&&void 0!==arguments[1]?arguments[1]:5;if("string"==typeof e)return e.slice(0,t);if(ArrayBuffer.isView(e))return Gb(e.buffer,e.byteOffset,t);if(e instanceof ArrayBuffer){return Gb(e,0,t)}return""}(e),'"'))}}function Wb(e){return e&&"object"===B(e)&&e.isBuffer}function Kb(e){if(Wb(e))return Wb(t=e)?new Uint8Array(t.buffer,t.byteOffset,t.length).slice().buffer:t;var t;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return 0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("string"==typeof e){var i=e;return(new TextEncoder).encode(i).buffer}if(e&&"object"===B(e)&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function Xb(){for(var e=arguments.length,t=new Array(e),i=0;i=0),ob(t>0),e+(t-1)&~(t-1)}function Zb(e,t,i){var s;if(e instanceof ArrayBuffer)s=new Uint8Array(e);else{var r=e.byteOffset,n=e.byteLength;s=new Uint8Array(e.buffer||e.arrayBuffer,r,n)}return t.set(s,i),i+Yb(s.byteLength,4)}function qb(e){return $b.apply(this,arguments)}function $b(){return($b=u(a().mark((function e(t){var i,s,r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=[],s=!1,r=!1,e.prev=3,o=I(t);case 5:return e.next=7,o.next();case 7:if(!(s=!(l=e.sent).done)){e.next=13;break}u=l.value,i.push(u);case 10:s=!1,e.next=5;break;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(3),r=!0,n=e.t0;case 19:if(e.prev=19,e.prev=20,!s||null==o.return){e.next=24;break}return e.next=24,o.return();case 24:if(e.prev=24,!r){e.next=27;break}throw n;case 27:return e.finish(24);case 28:return e.finish(19);case 29:return e.abrupt("return",Xb.apply(void 0,i));case 30:case"end":return e.stop()}}),e,null,[[3,15,19,29],[20,,24,28]])})))).apply(this,arguments)}var ew={};function tw(e){for(var t in ew)if(e.startsWith(t)){var i=ew[t];e=e.replace(t,i)}return e.startsWith("http://")||e.startsWith("https://")||(e="".concat("").concat(e)),e}var iw=function(e){return"function"==typeof e},sw=function(e){return null!==e&&"object"===B(e)},rw=function(e){return sw(e)&&e.constructor==={}.constructor},nw=function(e){return e&&"function"==typeof e[Symbol.iterator]},ow=function(e){return e&&"function"==typeof e[Symbol.asyncIterator]},aw=function(e){return"undefined"!=typeof Response&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json},lw=function(e){return"undefined"!=typeof Blob&&e instanceof Blob},uw=function(e){return function(e){return"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||sw(e)&&iw(e.tee)&&iw(e.cancel)&&iw(e.getReader)}(e)||function(e){return sw(e)&&iw(e.read)&&iw(e.pipe)&&function(e){return"boolean"==typeof e}(e.readable)}(e)},Aw=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,cw=/^([-\w.]+\/[-\w.+]+)/;function hw(e){var t=cw.exec(e);return t?t[1]:e}function dw(e){var t=Aw.exec(e);return t?t[1]:""}var pw=/\?.*/;function fw(e){if(aw(e)){var t=gw(e.url||"");return{url:t,type:hw(e.headers.get("content-type")||"")||dw(t)}}return lw(e)?{url:gw(e.name||""),type:e.type||""}:"string"==typeof e?{url:gw(e),type:dw(e)}:{url:"",type:""}}function vw(e){return aw(e)?e.headers["content-length"]||-1:lw(e)?e.size:"string"==typeof e?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}function gw(e){return e.replace(pw,"")}function mw(e){return _w.apply(this,arguments)}function _w(){return(_w=u(a().mark((function e(t){var i,s,r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!aw(t)){e.next=2;break}return e.abrupt("return",t);case 2:return i={},(s=vw(t))>=0&&(i["content-length"]=String(s)),r=fw(t),n=r.url,(o=r.type)&&(i["content-type"]=o),e.next=9,xw(t);case 9:return(l=e.sent)&&(i["x-first-bytes"]=l),"string"==typeof t&&(t=(new TextEncoder).encode(t)),u=new Response(t,{headers:i}),Object.defineProperty(u,"url",{value:n}),e.abrupt("return",u);case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function yw(e){return bw.apply(this,arguments)}function bw(){return(bw=u(a().mark((function e(t){var i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.ok){e.next=5;break}return e.next=3,ww(t);case 3:throw i=e.sent,new Error(i);case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ww(e){return Bw.apply(this,arguments)}function Bw(){return(Bw=u(a().mark((function e(t){var i,s,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i="Failed to fetch resource ".concat(t.url," (").concat(t.status,"): "),e.prev=1,s=t.headers.get("Content-Type"),r=t.statusText,!s.includes("application/json")){e.next=11;break}return e.t0=r,e.t1=" ",e.next=9,t.text();case 9:e.t2=e.sent,r=e.t0+=e.t1.concat.call(e.t1,e.t2);case 11:i=(i+=r).length>60?"".concat(i.slice(0,60),"..."):i,e.next=17;break;case 15:e.prev=15,e.t3=e.catch(1);case 17:return e.abrupt("return",i);case 18:case"end":return e.stop()}}),e,null,[[1,15]])})))).apply(this,arguments)}function xw(e){return Pw.apply(this,arguments)}function Pw(){return(Pw=u(a().mark((function e(t){var i,s,r,n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=5,"string"!=typeof t){e.next=3;break}return e.abrupt("return","data:,".concat(t.slice(0,i)));case 3:if(!(t instanceof Blob)){e.next=8;break}return s=t.slice(0,5),e.next=7,new Promise((function(e){var t=new FileReader;t.onload=function(t){var i;return e(null==t||null===(i=t.target)||void 0===i?void 0:i.result)},t.readAsDataURL(s)}));case 7:return e.abrupt("return",e.sent);case 8:if(!(t instanceof ArrayBuffer)){e.next=12;break}return r=t.slice(0,i),n=Cw(r),e.abrupt("return","data:base64,".concat(n));case 12:return e.abrupt("return",null);case 13:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Cw(e){for(var t="",i=new Uint8Array(e),s=0;s=0)}();function Tw(e){try{var t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}var Lw=function(){function e(t,i){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sessionStorage";x(this,e),this.storage=Tw(s),this.id=t,this.config={},Object.assign(this.config,i),this._loadConfiguration()}return C(e,[{key:"getConfiguration",value:function(){return this.config}},{key:"setConfiguration",value:function(e){return this.config={},this.updateConfiguration(e)}},{key:"updateConfiguration",value:function(e){if(Object.assign(this.config,e),this.storage){var t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}return this}},{key:"_loadConfiguration",value:function(){var e={};if(this.storage){var t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}]),e}();function Rw(e,t,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:600,r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));var n=e.width*i,o=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(o/2),"px ").concat(Math.floor(n/2),"px;"),"line-height:".concat(o,"px;"),"background:url(".concat(r,");"),"background-size:".concat(n,"px ").concat(o,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}var Uw={BLACK:30,RED:31,GREEN:32,YELLOW:33,BLUE:34,MAGENTA:35,CYAN:36,WHITE:37,BRIGHT_BLACK:90,BRIGHT_RED:91,BRIGHT_GREEN:92,BRIGHT_YELLOW:93,BRIGHT_BLUE:94,BRIGHT_MAGENTA:95,BRIGHT_CYAN:96,BRIGHT_WHITE:97};function Ow(e){return"string"==typeof e?Uw[e.toUpperCase()]||Uw.WHITE:e}function Nw(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["constructor"],s=Object.getPrototypeOf(e),r=Object.getOwnPropertyNames(s),n=c(r);try{var o=function(){var s=t.value;"function"==typeof e[s]&&(i.find((function(e){return s===e}))||(e[s]=e[s].bind(e)))};for(n.s();!(t=n.n()).done;)o()}catch(e){n.e(e)}finally{n.f()}}function Qw(e,t){if(!e)throw new Error(t||"Assertion failed")}function Vw(){var e;if(Sw&&kw.performance)e=kw.performance.now();else if(Iw.hrtime){var t=Iw.hrtime();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}var Hw={debug:Sw&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},jw={enabled:!0,level:0};function Gw(){}var zw={},Ww={once:!0};function Kw(e){for(var t in e)for(var i in e[t])return i||"untitled";return"empty"}var Xw=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:""},i=t.id;x(this,e),this.id=i,this.VERSION=Dw,this._startTs=Vw(),this._deltaTs=Vw(),this.LOG_THROTTLE_TIMEOUT=0,this._storage=new Lw("__probe-".concat(this.id,"__"),jw),this.userData={},this.timeStamp("".concat(this.id," started")),Nw(this),Object.seal(this)}return C(e,[{key:"level",get:function(){return this.getLevel()},set:function(e){this.setLevel(e)}},{key:"isEnabled",value:function(){return this._storage.config.enabled}},{key:"getLevel",value:function(){return this._storage.config.level}},{key:"getTotal",value:function(){return Number((Vw()-this._startTs).toPrecision(10))}},{key:"getDelta",value:function(){return Number((Vw()-this._deltaTs).toPrecision(10))}},{key:"priority",get:function(){return this.level},set:function(e){this.level=e}},{key:"getPriority",value:function(){return this.level}},{key:"enable",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._storage.updateConfiguration({enabled:e}),this}},{key:"setLevel",value:function(e){return this._storage.updateConfiguration({level:e}),this}},{key:"assert",value:function(e,t){Qw(e,t)}},{key:"warn",value:function(e){return this._getLogFunction(0,e,Hw.warn,arguments,Ww)}},{key:"error",value:function(e){return this._getLogFunction(0,e,Hw.error,arguments)}},{key:"deprecated",value:function(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}},{key:"removed",value:function(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}},{key:"probe",value:function(e,t){return this._getLogFunction(e,t,Hw.log,arguments,{time:!0,once:!0})}},{key:"log",value:function(e,t){return this._getLogFunction(e,t,Hw.debug,arguments)}},{key:"info",value:function(e,t){return this._getLogFunction(e,t,console.info,arguments)}},{key:"once",value:function(e,t){return this._getLogFunction(e,t,Hw.debug||Hw.info,arguments,Ww)}},{key:"table",value:function(e,t,i){return t?this._getLogFunction(e,t,console.table||Gw,i&&[i],{tag:Kw(t)}):Gw}},{key:"image",value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){var t=e.logLevel,i=e.priority,s=e.image,r=e.message,n=void 0===r?"":r,o=e.scale,a=void 0===o?1:o;return this._shouldLog(t||i)?Sw?function(e){var t=e.image,i=e.message,s=void 0===i?"":i,r=e.scale,n=void 0===r?1:r;if("string"==typeof t){var o=new Image;return o.onload=function(){var e,t=Rw(o,s,n);(e=console).log.apply(e,A(t))},o.src=t,Gw}var a=t.nodeName||"";if("img"===a.toLowerCase()){var l;return(l=console).log.apply(l,A(Rw(t,s,n))),Gw}if("canvas"===a.toLowerCase()){var u=new Image;return u.onload=function(){var e;return(e=console).log.apply(e,A(Rw(u,s,n)))},u.src=t.toDataURL(),Gw}return Gw}({image:s,message:n,scale:a}):function(e){var t=e.image,i=(e.message,e.scale),s=void 0===i?1:i,r=null;try{r=module.require("asciify-image")}catch(e){}if(r)return function(){return r(t,{fit:"box",width:"".concat(Math.round(80*s),"%")}).then((function(e){return console.log(e)}))};return Gw}({image:s,message:n,scale:a}):Gw}))},{key:"settings",value:function(){console.table?console.table(this._storage.config):console.log(this._storage.config)}},{key:"get",value:function(e){return this._storage.config[e]}},{key:"set",value:function(e,t){this._storage.updateConfiguration(o({},e,t))}},{key:"time",value:function(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}},{key:"timeEnd",value:function(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}},{key:"timeStamp",value:function(e,t){return this._getLogFunction(e,t,console.timeStamp||Gw)}},{key:"group",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{collapsed:!1},s=i=Yw({logLevel:e,message:t,opts:i}),r=s.collapsed;return i.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(i)}},{key:"groupCollapsed",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.group(e,t,Object.assign({},i,{collapsed:!0}))}},{key:"groupEnd",value:function(e){return this._getLogFunction(e,"",console.groupEnd||Gw)}},{key:"withGroup",value:function(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}},{key:"trace",value:function(){console.trace&&console.trace()}},{key:"_shouldLog",value:function(e){return this.isEnabled()&&this.getLevel()>=Jw(e)}},{key:"_getLogFunction",value:function(e,t,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],r=arguments.length>4?arguments[4]:void 0;if(this._shouldLog(e)){var n;r=Yw({logLevel:e,message:t,args:s,opts:r}),Qw(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=Vw();var o=r.tag||r.message;if(r.once){if(zw[o])return Gw;zw[o]=Vw()}return t=Zw(this.id,r.message,r),(n=i).bind.apply(n,[console,t].concat(A(r.args)))}return Gw}}]),e}();function Jw(e){if(!e)return 0;var t;switch(B(e)){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return Qw(Number.isFinite(t)&&t>=0),t}function Yw(e){var t=e.logLevel,i=e.message;e.logLevel=Jw(t);for(var s=e.args?Array.from(e.args):[];s.length&&s.shift()!==i;);switch(e.args=s,B(t)){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());var r=B(e.message);return Qw("string"===r||"object"===r),Object.assign(e,e.opts)}function Zw(e,t,i){if("string"==typeof t){var s=i.time?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}((r=i.total)<10?"".concat(r.toFixed(2),"ms"):r<100?"".concat(r.toFixed(1),"ms"):r<1e3?"".concat(r.toFixed(0),"ms"):"".concat((r/1e3).toFixed(2),"s")):"";t=function(e,t,i){return Sw||"string"!=typeof e||(t&&(t=Ow(t),e="[".concat(t,"m").concat(e,"")),i&&(t=Ow(i),e="[".concat(i+10,"m").concat(e,""))),e}(t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),i.color,i.background)}var r;return t}Xw.VERSION=Dw;var qw=new Xw({id:"loaders.gl"}),$w=function(){function e(){x(this,e)}return C(e,[{key:"log",value:function(){return function(){}}},{key:"info",value:function(){return function(){}}},{key:"warn",value:function(){return function(){}}},{key:"error",value:function(){return function(){}}}]),e}(),eB={fetch:null,mimeType:void 0,nothrow:!1,log:new(function(){function e(){x(this,e),vb(this,"console",void 0),this.console=console}return C(e,[{key:"log",value:function(){for(var e,t=arguments.length,i=new Array(t),s=0;s=0)}()}var dB={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document,process:"object"===("undefined"==typeof process?"undefined":B(process))&&process},pB=dB.window||dB.self||dB.global,fB=dB.process||{},vB="undefined"!=typeof __VERSION__?__VERSION__:"untranspiled source";function gB(e){try{var t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}hB();var mB,_B=function(){function e(t){x(this,e);var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sessionStorage";vb(this,"storage",void 0),vb(this,"id",void 0),vb(this,"config",{}),this.storage=gB(s),this.id=t,this.config={},Object.assign(this.config,i),this._loadConfiguration()}return C(e,[{key:"getConfiguration",value:function(){return this.config}},{key:"setConfiguration",value:function(e){return this.config={},this.updateConfiguration(e)}},{key:"updateConfiguration",value:function(e){if(Object.assign(this.config,e),this.storage){var t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}return this}},{key:"_loadConfiguration",value:function(){var e={};if(this.storage){var t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}]),e}();function yB(e,t,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:600,r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));var n=e.width*i,o=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(o/2),"px ").concat(Math.floor(n/2),"px;"),"line-height:".concat(o,"px;"),"background:url(".concat(r,");"),"background-size:".concat(n,"px ").concat(o,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}function bB(e){return"string"==typeof e?mB[e.toUpperCase()]||mB.WHITE:e}function wB(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["constructor"],s=Object.getPrototypeOf(e),r=Object.getOwnPropertyNames(s),n=c(r);try{var o=function(){var s=t.value;"function"==typeof e[s]&&(i.find((function(e){return s===e}))||(e[s]=e[s].bind(e)))};for(n.s();!(t=n.n()).done;)o()}catch(e){n.e(e)}finally{n.f()}}function BB(e,t){if(!e)throw new Error(t||"Assertion failed")}function xB(){var e,t,i;if(hB&&"performance"in pB)e=null==pB||null===(t=pB.performance)||void 0===t||null===(i=t.now)||void 0===i?void 0:i.call(t);else if("hrtime"in fB){var s,r=null==fB||null===(s=fB.hrtime)||void 0===s?void 0:s.call(fB);e=1e3*r[0]+r[1]/1e6}else e=Date.now();return e}!function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"}(mB||(mB={}));var PB={debug:hB&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},CB={enabled:!0,level:0};function MB(){}var EB={},FB={once:!0},kB=function(){function e(){x(this,e);var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:""},i=t.id;vb(this,"id",void 0),vb(this,"VERSION",vB),vb(this,"_startTs",xB()),vb(this,"_deltaTs",xB()),vb(this,"_storage",void 0),vb(this,"userData",{}),vb(this,"LOG_THROTTLE_TIMEOUT",0),this.id=i,this._storage=new _B("__probe-".concat(this.id,"__"),CB),this.userData={},this.timeStamp("".concat(this.id," started")),wB(this),Object.seal(this)}return C(e,[{key:"level",get:function(){return this.getLevel()},set:function(e){this.setLevel(e)}},{key:"isEnabled",value:function(){return this._storage.config.enabled}},{key:"getLevel",value:function(){return this._storage.config.level}},{key:"getTotal",value:function(){return Number((xB()-this._startTs).toPrecision(10))}},{key:"getDelta",value:function(){return Number((xB()-this._deltaTs).toPrecision(10))}},{key:"priority",get:function(){return this.level},set:function(e){this.level=e}},{key:"getPriority",value:function(){return this.level}},{key:"enable",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._storage.updateConfiguration({enabled:e}),this}},{key:"setLevel",value:function(e){return this._storage.updateConfiguration({level:e}),this}},{key:"get",value:function(e){return this._storage.config[e]}},{key:"set",value:function(e,t){this._storage.updateConfiguration(o({},e,t))}},{key:"settings",value:function(){console.table?console.table(this._storage.config):console.log(this._storage.config)}},{key:"assert",value:function(e,t){BB(e,t)}},{key:"warn",value:function(e){return this._getLogFunction(0,e,PB.warn,arguments,FB)}},{key:"error",value:function(e){return this._getLogFunction(0,e,PB.error,arguments)}},{key:"deprecated",value:function(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}},{key:"removed",value:function(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}},{key:"probe",value:function(e,t){return this._getLogFunction(e,t,PB.log,arguments,{time:!0,once:!0})}},{key:"log",value:function(e,t){return this._getLogFunction(e,t,PB.debug,arguments)}},{key:"info",value:function(e,t){return this._getLogFunction(e,t,console.info,arguments)}},{key:"once",value:function(e,t){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r2&&void 0!==arguments[2]?arguments[2]:{collapsed:!1},s=DB({logLevel:e,message:t,opts:i}),r=i.collapsed;return s.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}},{key:"groupCollapsed",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.group(e,t,Object.assign({},i,{collapsed:!0}))}},{key:"groupEnd",value:function(e){return this._getLogFunction(e,"",console.groupEnd||MB)}},{key:"withGroup",value:function(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}},{key:"trace",value:function(){console.trace&&console.trace()}},{key:"_shouldLog",value:function(e){return this.isEnabled()&&this.getLevel()>=IB(e)}},{key:"_getLogFunction",value:function(e,t,i,s,r){if(this._shouldLog(e)){var n;r=DB({logLevel:e,message:t,args:s,opts:r}),BB(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=xB();var o=r.tag||r.message;if(r.once){if(EB[o])return MB;EB[o]=xB()}return t=function(e,t,i){if("string"==typeof t){var s=i.time?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}((r=i.total)<10?"".concat(r.toFixed(2),"ms"):r<100?"".concat(r.toFixed(1),"ms"):r<1e3?"".concat(r.toFixed(0),"ms"):"".concat((r/1e3).toFixed(2),"s")):"";t=function(e,t,i){return hB||"string"!=typeof e||(t&&(t=bB(t),e="[".concat(t,"m").concat(e,"")),i&&(t=bB(i),e="[".concat(i+10,"m").concat(e,""))),e}(t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),i.color,i.background)}var r;return t}(this.id,r.message,r),(n=i).bind.apply(n,[console,t].concat(A(r.args)))}return MB}}]),e}();function IB(e){if(!e)return 0;var t;switch(B(e)){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return BB(Number.isFinite(t)&&t>=0),t}function DB(e){var t=e.logLevel,i=e.message;e.logLevel=IB(t);for(var s=e.args?Array.from(e.args):[];s.length&&s.shift()!==i;);switch(B(t)){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());var r=B(e.message);return BB("string"===r||"object"===r),Object.assign(e,{args:s},e.opts)}function SB(e){for(var t in e)for(var i in e[t])return i||"untitled";return"empty"}vb(kB,"VERSION",vB);var TB=new kB({id:"loaders.gl"}),LB=/\.([^.]+)$/;function RB(e){return UB.apply(this,arguments)}function UB(){return UB=u(a().mark((function e(t){var i,s,r,o,l=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=l.length>1&&void 0!==l[1]?l[1]:[],s=l.length>2?l[2]:void 0,r=l.length>3?l[3]:void 0,QB(t)){e.next=5;break}return e.abrupt("return",null);case 5:if(!(o=OB(t,i,n(n({},s),{},{nothrow:!0}),r))){e.next=8;break}return e.abrupt("return",o);case 8:if(!lw(t)){e.next=13;break}return e.next=11,t.slice(0,10).arrayBuffer();case 11:t=e.sent,o=OB(t,i,s,r);case 13:if(o||null!=s&&s.nothrow){e.next=15;break}throw new Error(VB(t));case 15:return e.abrupt("return",o);case 16:case"end":return e.stop()}}),e)}))),UB.apply(this,arguments)}function OB(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0;if(!QB(e))return null;if(t&&!Array.isArray(t))return AB(t);var r,n=[];(t&&(n=n.concat(t)),null!=i&&i.ignoreRegisteredLoaders)||(r=n).push.apply(r,A(cB()));HB(n);var o=NB(e,n,i,s);if(!(o||null!=i&&i.nothrow))throw new Error(VB(e));return o}function NB(e,t,i,s){var r,n=fw(e),o=n.url,a=n.type,l=o||(null==s?void 0:s.url),u=null,A="";(null!=i&&i.mimeType&&(u=jB(t,null==i?void 0:i.mimeType),A="match forced by supplied MIME type ".concat(null==i?void 0:i.mimeType)),u=u||function(e,t){var i=t&&LB.exec(t),s=i&&i[1];return s?function(e,t){t=t.toLowerCase();var i,s=c(e);try{for(s.s();!(i=s.n()).done;){var r,n=i.value,o=c(n.extensions);try{for(o.s();!(r=o.n()).done;){if(r.value.toLowerCase()===t)return n}}catch(e){o.e(e)}finally{o.f()}}}catch(e){s.e(e)}finally{s.f()}return null}(e,s):null}(t,l),A=A||(u?"matched url ".concat(l):""),u=u||jB(t,a),A=A||(u?"matched MIME type ".concat(a):""),u=u||function(e,t){if(!t)return null;var i,s=c(e);try{for(s.s();!(i=s.n()).done;){var r=i.value;if("string"==typeof t){if(GB(t,r))return r}else if(ArrayBuffer.isView(t)){if(zB(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer){if(zB(t,0,r))return r}}}catch(e){s.e(e)}finally{s.f()}return null}(t,e),A=A||(u?"matched initial data ".concat(WB(e)):""),u=u||jB(t,null==i?void 0:i.fallbackMimeType),A=A||(u?"matched fallback MIME type ".concat(a):""))&&TB.log(1,"selectLoader selected ".concat(null===(r=u)||void 0===r?void 0:r.name,": ").concat(A,"."));return u}function QB(e){return!(e instanceof Response&&204===e.status)}function VB(e){var t=fw(e),i=t.url,s=t.type,r="No valid loader found (";r+=i?"".concat(function(e){var t=e&&e.lastIndexOf("/");return t>=0?e.substr(t+1):""}(i),", "):"no url provided, ",r+="MIME type: ".concat(s?'"'.concat(s,'"'):"not provided",", ");var n=e?WB(e):"";return r+=n?' first bytes: "'.concat(n,'"'):"first bytes: not available",r+=")"}function HB(e){var t,i=c(e);try{for(i.s();!(t=i.n()).done;){AB(t.value)}}catch(e){i.e(e)}finally{i.f()}}function jB(e,t){var i,s=c(e);try{for(s.s();!(i=s.n()).done;){var r=i.value;if(r.mimeTypes&&r.mimeTypes.includes(t))return r;if(t==="application/x.".concat(r.id))return r}}catch(e){s.e(e)}finally{s.f()}return null}function GB(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some((function(t){return e.startsWith(t)}))}function zB(e,t,i){return(Array.isArray(i.tests)?i.tests:[i.tests]).some((function(s){return function(e,t,i,s){if(s instanceof ArrayBuffer)return function(e,t,i){if(i=i||e.byteLength,e.byteLength1&&void 0!==arguments[1]?arguments[1]:5;if("string"==typeof e)return e.slice(0,t);if(ArrayBuffer.isView(e))return KB(e.buffer,e.byteOffset,t);if(e instanceof ArrayBuffer){var i=0;return KB(e,i,t)}return""}function KB(e,t,i){if(e.byteLength1&&void 0!==A[1]?A[1]:{},s=t.chunkSize,r=void 0===s?262144:s,n=0;case 3:if(!(n2&&void 0!==arguments[2]?arguments[2]:null;if(i)return i;var s=n({fetch:nB(t,e)},e);return Array.isArray(s.loaders)||(s.loaders=null),s}function ox(e,t){if(!t&&e&&!Array.isArray(e))return e;var i;if(e&&(i=Array.isArray(e)?e:[e]),t&&t.loaders){var s=Array.isArray(t.loaders)?t.loaders:[t.loaders];i=i?[].concat(A(i),A(s)):s}return i&&i.length?i:null}function ax(e,t,i,s){return lx.apply(this,arguments)}function lx(){return(lx=u(a().mark((function e(t,i,s,r){var n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return ub(!r||"object"===B(r)),!i||Array.isArray(i)||uB(i)||(r=void 0,s=i,i=void 0),e.next=4,t;case 4:return t=e.sent,s=s||{},n=fw(t),o=n.url,l=ox(i,r),e.next=11,RB(t,l,s);case 11:if(u=e.sent){e.next=14;break}return e.abrupt("return",null);case 14:return s=rB(s,u,l,o),r=nx({url:o,parse:ax,loaders:l},s,r),e.next=18,ux(u,t,s,r);case 18:return e.abrupt("return",e.sent);case 19:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ux(e,t,i,s){return Ax.apply(this,arguments)}function Ax(){return(Ax=u(a().mark((function e(t,i,s,r){var n,o,l,u,A,c,h,d;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return kb(t),aw(i)&&(o=(n=i).ok,l=n.redirected,u=n.status,A=n.statusText,c=n.type,h=n.url,d=Object.fromEntries(n.headers.entries()),r.response={headers:d,ok:o,redirected:l,status:u,statusText:A,type:c,url:h}),e.next=4,sx(i,t,s);case 4:if(i=e.sent,!t.parseTextSync||"string"!=typeof i){e.next=8;break}return s.dataType="text",e.abrupt("return",t.parseTextSync(i,s,r,t));case 8:if(!Nb(t,s)){e.next=12;break}return e.next=11,Qb(t,i,s,r,ax);case 11:case 15:case 19:return e.abrupt("return",e.sent);case 12:if(!t.parseText||"string"!=typeof i){e.next=16;break}return e.next=15,t.parseText(i,s,r,t);case 16:if(!t.parse){e.next=20;break}return e.next=19,t.parse(i,s,r,t);case 20:throw ub(!t.parseSync),new Error("".concat(t.id," loader - no parser found and worker is disabled"));case 22:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var cx,hx,dx="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.wasm"),px="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.js");function fx(e){return vx.apply(this,arguments)}function vx(){return(vx=u(a().mark((function e(t){var i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(i=t.modules||{}).basis){e.next=3;break}return e.abrupt("return",i.basis);case 3:return cx=cx||gx(t),e.next=6,cx;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function gx(e){return mx.apply(this,arguments)}function mx(){return(mx=u(a().mark((function e(t){var i,s,r,n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=null,s=null,e.t0=Promise,e.next=5,Sb("basis_transcoder.js","textures",t);case 5:return e.t1=e.sent,e.next=8,Sb("basis_transcoder.wasm","textures",t);case 8:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=12,e.t0.all.call(e.t0,e.t3);case 12:return r=e.sent,n=h(r,2),i=n[0],s=n[1],i=i||globalThis.BASIS,e.next=19,_x(i,s);case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function _x(e,t){var i={};return t&&(i.wasmBinary=t),new Promise((function(t){e(i).then((function(e){var i=e.BasisFile;(0,e.initializeBasis)(),t({BasisFile:i})}))}))}function yx(e){return bx.apply(this,arguments)}function bx(){return(bx=u(a().mark((function e(t){var i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(i=t.modules||{}).basisEncoder){e.next=3;break}return e.abrupt("return",i.basisEncoder);case 3:return hx=hx||wx(t),e.next=6,hx;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function wx(e){return Bx.apply(this,arguments)}function Bx(){return(Bx=u(a().mark((function e(t){var i,s,r,n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=null,s=null,e.t0=Promise,e.next=5,Sb(px,"textures",t);case 5:return e.t1=e.sent,e.next=8,Sb(dx,"textures",t);case 8:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=12,e.t0.all.call(e.t0,e.t3);case 12:return r=e.sent,n=h(r,2),i=n[0],s=n[1],i=i||globalThis.BASIS,e.next=19,xx(i,s);case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function xx(e,t){var i={};return t&&(i.wasmBinary=t),new Promise((function(t){e(i).then((function(e){var i=e.BasisFile,s=e.KTX2File,r=e.initializeBasis,n=e.BasisEncoder;r(),t({BasisFile:i,KTX2File:s,BasisEncoder:n})}))}))}var Px,Cx,Mx,Ex,Fx,kx,Ix,Dx,Sx,Tx=33776,Lx=33779,Rx=35840,Ux=35842,Ox=36196,Nx=37808,Qx=["","WEBKIT_","MOZ_"],Vx={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},Hx=null;function jx(e){if(!Hx){e=e||function(){try{return document.createElement("canvas").getContext("webgl")}catch(e){return null}}()||void 0,Hx=new Set;var t,i=c(Qx);try{for(i.s();!(t=i.n()).done;){var s=t.value;for(var r in Vx)if(e&&e.getExtension("".concat(s).concat(r))){var n=Vx[r];Hx.add(n)}}}catch(e){i.e(e)}finally{i.f()}}return Hx}(Sx=Px||(Px={}))[Sx.NONE=0]="NONE",Sx[Sx.BASISLZ=1]="BASISLZ",Sx[Sx.ZSTD=2]="ZSTD",Sx[Sx.ZLIB=3]="ZLIB",function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}(Cx||(Cx={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(Mx||(Mx={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(Ex||(Ex={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(Fx||(Fx={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(kx||(kx={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(Ix||(Ix={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(Dx||(Dx={}));var Gx=[171,75,84,88,32,50,48,187,13,10,26,10];function zx(e){var t=new Uint8Array(e);return!(t.byteLength1&&void 0!==s[1]?s[1]:null)&&mP||(i=null),!i){e.next=13;break}return e.prev=3,e.next=6,createImageBitmap(t,i);case 6:return e.abrupt("return",e.sent);case 9:e.prev=9,e.t0=e.catch(3),console.warn(e.t0),mP=!1;case 13:return e.next=15,createImageBitmap(t);case 15:return e.abrupt("return",e.sent);case 16:case"end":return e.stop()}}),e,null,[[3,9]])}))),wP.apply(this,arguments)}function BP(e){for(var t in e||gP)return!1;return!0}function xP(e){var t=PP(e);return function(e){var t=PP(e);if(!(t.byteLength>=24&&2303741511===t.getUint32(0,false)))return null;return{mimeType:"image/png",width:t.getUint32(16,false),height:t.getUint32(20,false)}}(t)||function(e){var t=PP(e);if(!(t.byteLength>=3&&65496===t.getUint16(0,false)&&255===t.getUint8(2)))return null;var i=function(){for(var e=new Set([65499,65476,65484,65501,65534]),t=65504;t<65520;++t)e.add(t);var i=new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502]);return{tableMarkers:e,sofMarkers:i}}(),s=i.tableMarkers,r=i.sofMarkers,n=2;for(;n+9=10&&1195984440===t.getUint32(0,false)))return null;return{mimeType:"image/gif",width:t.getUint16(6,true),height:t.getUint16(8,true)}}(t)||function(e){var t=PP(e);if(!(t.byteLength>=14&&16973===t.getUint16(0,false)&&t.getUint32(2,true)===t.byteLength))return null;return{mimeType:"image/bmp",width:t.getUint32(18,true),height:t.getUint32(22,true)}}(t)}function PP(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}function CP(e,t){return MP.apply(this,arguments)}function MP(){return MP=u(a().mark((function e(t,i){var s,r,n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=xP(t)||{},r=s.mimeType,ob(n=globalThis._parseImageNode),e.next=5,n(t,r);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),MP.apply(this,arguments)}function EP(){return(EP=u(a().mark((function e(t,i,s){var r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=(i=i||{}).image||{},n=r.type||"auto",o=(s||{}).url,l=FP(n),e.t0=l,e.next="imagebitmap"===e.t0?8:"image"===e.t0?12:"data"===e.t0?16:20;break;case 8:return e.next=10,_P(t,i,o);case 10:return u=e.sent,e.abrupt("break",21);case 12:return e.next=14,dP(t,i,o);case 14:return u=e.sent,e.abrupt("break",21);case 16:return e.next=18,CP(t);case 18:return u=e.sent,e.abrupt("break",21);case 20:ob(!1);case 21:return"data"===n&&(u=aP(u)),e.abrupt("return",u);case 23:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function FP(e){switch(e){case"auto":case"data":return function(){if(sP)return"imagebitmap";if(iP)return"image";if(nP)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(e){switch(e){case"auto":return sP||iP||nP;case"imagebitmap":return sP;case"image":return iP;case"data":return nP;default:throw new Error("@loaders.gl/images: image ".concat(e," not supported in this environment"))}}(e),e}}var kP={id:"image",module:"images",name:"Images",version:"3.2.6",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg"],parse:function(e,t,i){return EP.apply(this,arguments)},tests:[function(e){return Boolean(xP(new DataView(e)))}],options:{image:{type:"auto",decode:!0}}},IP=["image/png","image/jpeg","image/gif"],DP={};function SP(e){return void 0===DP[e]&&(DP[e]=function(e){switch(e){case"image/webp":return function(){if(!ab)return!1;try{return 0===document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp")}catch(e){return!1}}();case"image/svg":return ab;default:if(!ab){var t=globalThis._parseImageNode;return Boolean(t)&&IP.includes(e)}return!0}}(e)),DP[e]}function TP(e,t){if(!e)throw new Error(t||"assert failed: gltf")}function LP(e,t){if(e.startsWith("data:")||e.startsWith("http:")||e.startsWith("https:"))return e;var i=t.baseUri||t.uri;if(!i)throw new Error("'baseUri' must be provided to resolve relative url ".concat(e));return i.substr(0,i.lastIndexOf("/")+1)+e}function RP(e,t,i){var s=e.bufferViews[i];TP(s);var r=t[s.buffer];TP(r);var n=(s.byteOffset||0)+r.byteOffset;return new Uint8Array(r.arrayBuffer,n,s.byteLength)}var UP=["SCALAR","VEC2","VEC3","VEC4"],OP=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],NP=new Map(OP),QP={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},VP={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},HP={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function jP(e){return UP[e-1]||UP[0]}function GP(e){var t=NP.get(e.constructor);if(!t)throw new Error("Illegal typed array");return t}function zP(e,t){var i=HP[e.componentType],s=QP[e.type],r=VP[e.componentType],n=e.count*s,o=e.count*s*r;return TP(o>=0&&o<=t.byteLength),{ArrayType:i,length:n,byteLength:o}}var WP,KP={asset:{version:"2.0",generator:"loaders.gl"},buffers:[]},XP=function(){function e(t){x(this,e),vb(this,"gltf",void 0),vb(this,"sourceBuffers",void 0),vb(this,"byteLength",void 0),this.gltf=t||{json:n({},KP),buffers:[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}return C(e,[{key:"json",get:function(){return this.gltf.json}},{key:"getApplicationData",value:function(e){return this.json[e]}},{key:"getExtraData",value:function(e){return(this.json.extras||{})[e]}},{key:"getExtension",value:function(e){var t=this.getUsedExtensions().find((function(t){return t===e})),i=this.json.extensions||{};return t?i[e]||!0:null}},{key:"getRequiredExtension",value:function(e){var t=this.getRequiredExtensions().find((function(t){return t===e}));return t?this.getExtension(e):null}},{key:"getRequiredExtensions",value:function(){return this.json.extensionsRequired||[]}},{key:"getUsedExtensions",value:function(){return this.json.extensionsUsed||[]}},{key:"getObjectExtension",value:function(e,t){return(e.extensions||{})[t]}},{key:"getScene",value:function(e){return this.getObject("scenes",e)}},{key:"getNode",value:function(e){return this.getObject("nodes",e)}},{key:"getSkin",value:function(e){return this.getObject("skins",e)}},{key:"getMesh",value:function(e){return this.getObject("meshes",e)}},{key:"getMaterial",value:function(e){return this.getObject("materials",e)}},{key:"getAccessor",value:function(e){return this.getObject("accessors",e)}},{key:"getTexture",value:function(e){return this.getObject("textures",e)}},{key:"getSampler",value:function(e){return this.getObject("samplers",e)}},{key:"getImage",value:function(e){return this.getObject("images",e)}},{key:"getBufferView",value:function(e){return this.getObject("bufferViews",e)}},{key:"getBuffer",value:function(e){return this.getObject("buffers",e)}},{key:"getObject",value:function(e,t){if("object"===B(t))return t;var i=this.json[e]&&this.json[e][t];if(!i)throw new Error("glTF file error: Could not find ".concat(e,"[").concat(t,"]"));return i}},{key:"getTypedArrayForBufferView",value:function(e){var t=(e=this.getBufferView(e)).buffer,i=this.gltf.buffers[t];TP(i);var s=(e.byteOffset||0)+i.byteOffset;return new Uint8Array(i.arrayBuffer,s,e.byteLength)}},{key:"getTypedArrayForAccessor",value:function(e){e=this.getAccessor(e);var t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,s=zP(e,t),r=s.ArrayType,n=s.length;return new r(i,t.byteOffset+e.byteOffset,n)}},{key:"getTypedArrayForImageData",value:function(e){e=this.getAccessor(e);var t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(i,s,t.byteLength)}},{key:"addApplicationData",value:function(e,t){return this.json[e]=t,this}},{key:"addExtraData",value:function(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}},{key:"addObjectExtension",value:function(e,t,i){return e.extensions=e.extensions||{},e.extensions[t]=i,this.registerUsedExtension(t),this}},{key:"setObjectExtension",value:function(e,t,i){(e.extensions||{})[t]=i}},{key:"removeObjectExtension",value:function(e,t){var i=e.extensions||{},s=i[t];return delete i[t],s}},{key:"addExtension",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return TP(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}},{key:"addRequiredExtension",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return TP(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}},{key:"registerUsedExtension",value:function(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find((function(t){return t===e}))||this.json.extensionsUsed.push(e)}},{key:"registerRequiredExtension",value:function(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find((function(t){return t===e}))||this.json.extensionsRequired.push(e)}},{key:"removeExtension",value:function(e){this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e),this.json.extensions&&delete this.json.extensions[e]}},{key:"setDefaultScene",value:function(e){this.json.scene=e}},{key:"addScene",value:function(e){var t=e.nodeIndices;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}},{key:"addNode",value:function(e){var t=e.meshIndex,i=e.matrix;this.json.nodes=this.json.nodes||[];var s={mesh:t};return i&&(s.matrix=i),this.json.nodes.push(s),this.json.nodes.length-1}},{key:"addMesh",value:function(e){var t=e.attributes,i=e.indices,s=e.material,r=e.mode,n=void 0===r?4:r,o={primitives:[{attributes:this._addAttributes(t),mode:n}]};if(i){var a=this._addIndices(i);o.primitives[0].indices=a}return Number.isFinite(s)&&(o.primitives[0].material=s),this.json.meshes=this.json.meshes||[],this.json.meshes.push(o),this.json.meshes.length-1}},{key:"addPointCloud",value:function(e){var t={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(t),this.json.meshes.length-1}},{key:"addImage",value:function(e,t){var i=xP(e),s=t||(null==i?void 0:i.mimeType),r={bufferView:this.addBufferView(e),mimeType:s};return this.json.images=this.json.images||[],this.json.images.push(r),this.json.images.length-1}},{key:"addBufferView",value:function(e){var t=e.byteLength;TP(Number.isFinite(t)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);var i={buffer:0,byteOffset:this.byteLength,byteLength:t};return this.byteLength+=Yb(t,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(i),this.json.bufferViews.length-1}},{key:"addAccessor",value:function(e,t){var i={bufferView:e,type:jP(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(i),this.json.accessors.length-1}},{key:"addBinaryBuffer",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{size:3},i=this.addBufferView(e),s={min:t.min,max:t.max};s.min&&s.max||(s=this._getAccessorMinMax(e,t.size));var r={size:t.size,componentType:GP(e),count:Math.round(e.length/t.size),min:s.min,max:s.max};return this.addAccessor(i,Object.assign(r,t))}},{key:"addTexture",value:function(e){var t={source:e.imageIndex};return this.json.textures=this.json.textures||[],this.json.textures.push(t),this.json.textures.length-1}},{key:"addMaterial",value:function(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}},{key:"createBinaryChunk",value:function(){var e,t;this.gltf.buffers=[];var i,s=this.byteLength,r=new ArrayBuffer(s),n=new Uint8Array(r),o=0,a=c(this.sourceBuffers||[]);try{for(a.s();!(i=a.n()).done;){o=Zb(i.value,n,o)}}catch(e){a.e(e)}finally{a.f()}null!==(e=this.json)&&void 0!==e&&null!==(t=e.buffers)&&void 0!==t&&t[0]?this.json.buffers[0].byteLength=s:this.json.buffers=[{byteLength:s}],this.gltf.binary=r,this.sourceBuffers=[r]}},{key:"_removeStringFromArray",value:function(e,t){for(var i=!0;i;){var s=e.indexOf(t);s>-1?e.splice(s,1):i=!1}}},{key:"_addAttributes",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={};for(var i in e){var s=e[i],r=this._getGltfAttributeName(i),n=this.addBinaryBuffer(s.value,s);t[r]=n}return t}},{key:"_addIndices",value:function(e){return this.addBinaryBuffer(e,{size:1})}},{key:"_getGltfAttributeName",value:function(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}},{key:"_getAccessorMinMax",value:function(e,t){var i={min:null,max:null};if(e.length5&&void 0!==u[5]?u[5]:"NONE",e.next=3,sC();case 3:lC(l=e.sent,l.exports[eC[n]],t,i,s,r,l.exports[$P[o||"NONE"]]);case 5:case"end":return e.stop()}}),e)}))),iC.apply(this,arguments)}function sC(){return rC.apply(this,arguments)}function rC(){return(rC=u(a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return WP||(WP=nC()),e.abrupt("return",WP);case 2:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function nC(){return oC.apply(this,arguments)}function oC(){return(oC=u(a().mark((function e(){var t,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=JP,WebAssembly.validate(ZP)&&(t=YP,console.log("Warning: meshopt_decoder is using experimental SIMD support")),e.next=4,WebAssembly.instantiate(aC(t),{});case 4:return i=e.sent,e.next=7,i.instance.exports.__wasm_call_ctors();case 7:return e.abrupt("return",i.instance);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function aC(e){for(var t=new Uint8Array(e.length),i=0;i96?s-71:s>64?s-65:s>47?s+4:s>46?63:62}for(var r=0,n=0;nr?A:r,n=c>n?c:n,o=h>o?h:o}return[[t,i,s],[r,n,o]]}var gC=function(){function e(t,i){x(this,e),vb(this,"fields",void 0),vb(this,"metadata",void 0),function(e,t){if(!e)throw new Error(t||"loader assertion failed.")}(Array.isArray(t)),function(e){var t,i={},s=c(e);try{for(s.s();!(t=s.n()).done;){var r=t.value;i[r.name]&&console.warn("Schema: duplicated field name",r.name,r),i[r.name]=!0}}catch(e){s.e(e)}finally{s.f()}}(t),this.fields=t,this.metadata=i||new Map}return C(e,[{key:"compareTo",value:function(e){if(this.metadata!==e.metadata)return!1;if(this.fields.length!==e.fields.length)return!1;for(var t=0;t2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new Map;x(this,e),vb(this,"name",void 0),vb(this,"type",void 0),vb(this,"nullable",void 0),vb(this,"metadata",void 0),this.name=t,this.type=i,this.nullable=s,this.metadata=r}return C(e,[{key:"typeId",get:function(){return this.type&&this.type.typeId}},{key:"clone",value:function(){return new e(this.name,this.type,this.nullable,this.metadata)}},{key:"compareTo",value:function(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}},{key:"toString",value:function(){return"".concat(this.type).concat(this.nullable?", nullable":"").concat(this.metadata?", metadata: ".concat(this.metadata):"")}}]),e}();!function(e){e[e.NONE=0]="NONE",e[e.Null=1]="Null",e[e.Int=2]="Int",e[e.Float=3]="Float",e[e.Binary=4]="Binary",e[e.Utf8=5]="Utf8",e[e.Bool=6]="Bool",e[e.Decimal=7]="Decimal",e[e.Date=8]="Date",e[e.Time=9]="Time",e[e.Timestamp=10]="Timestamp",e[e.Interval=11]="Interval",e[e.List=12]="List",e[e.Struct=13]="Struct",e[e.Union=14]="Union",e[e.FixedSizeBinary=15]="FixedSizeBinary",e[e.FixedSizeList=16]="FixedSizeList",e[e.Map=17]="Map",e[e.Dictionary=-1]="Dictionary",e[e.Int8=-2]="Int8",e[e.Int16=-3]="Int16",e[e.Int32=-4]="Int32",e[e.Int64=-5]="Int64",e[e.Uint8=-6]="Uint8",e[e.Uint16=-7]="Uint16",e[e.Uint32=-8]="Uint32",e[e.Uint64=-9]="Uint64",e[e.Float16=-10]="Float16",e[e.Float32=-11]="Float32",e[e.Float64=-12]="Float64",e[e.DateDay=-13]="DateDay",e[e.DateMillisecond=-14]="DateMillisecond",e[e.TimestampSecond=-15]="TimestampSecond",e[e.TimestampMillisecond=-16]="TimestampMillisecond",e[e.TimestampMicrosecond=-17]="TimestampMicrosecond",e[e.TimestampNanosecond=-18]="TimestampNanosecond",e[e.TimeSecond=-19]="TimeSecond",e[e.TimeMillisecond=-20]="TimeMillisecond",e[e.TimeMicrosecond=-21]="TimeMicrosecond",e[e.TimeNanosecond=-22]="TimeNanosecond",e[e.DenseUnion=-23]="DenseUnion",e[e.SparseUnion=-24]="SparseUnion",e[e.IntervalDayTime=-25]="IntervalDayTime",e[e.IntervalYearMonth=-26]="IntervalYearMonth"}(_C||(_C={}));var bC=function(){function e(){x(this,e)}return C(e,[{key:"typeId",get:function(){return _C.NONE}},{key:"compareTo",value:function(e){return this===e}}],[{key:"isNull",value:function(e){return e&&e.typeId===_C.Null}},{key:"isInt",value:function(e){return e&&e.typeId===_C.Int}},{key:"isFloat",value:function(e){return e&&e.typeId===_C.Float}},{key:"isBinary",value:function(e){return e&&e.typeId===_C.Binary}},{key:"isUtf8",value:function(e){return e&&e.typeId===_C.Utf8}},{key:"isBool",value:function(e){return e&&e.typeId===_C.Bool}},{key:"isDecimal",value:function(e){return e&&e.typeId===_C.Decimal}},{key:"isDate",value:function(e){return e&&e.typeId===_C.Date}},{key:"isTime",value:function(e){return e&&e.typeId===_C.Time}},{key:"isTimestamp",value:function(e){return e&&e.typeId===_C.Timestamp}},{key:"isInterval",value:function(e){return e&&e.typeId===_C.Interval}},{key:"isList",value:function(e){return e&&e.typeId===_C.List}},{key:"isStruct",value:function(e){return e&&e.typeId===_C.Struct}},{key:"isUnion",value:function(e){return e&&e.typeId===_C.Union}},{key:"isFixedSizeBinary",value:function(e){return e&&e.typeId===_C.FixedSizeBinary}},{key:"isFixedSizeList",value:function(e){return e&&e.typeId===_C.FixedSizeList}},{key:"isMap",value:function(e){return e&&e.typeId===_C.Map}},{key:"isDictionary",value:function(e){return e&&e.typeId===_C.Dictionary}}]),e}(),wC=function(e,t){g(s,bC);var i=_(s);function s(e,t){var r;return x(this,s),vb(b(r=i.call(this)),"isSigned",void 0),vb(b(r),"bitWidth",void 0),r.isSigned=e,r.bitWidth=t,r}return C(s,[{key:"typeId",get:function(){return _C.Int}},{key:t,get:function(){return"Int"}},{key:"toString",value:function(){return"".concat(this.isSigned?"I":"Ui","nt").concat(this.bitWidth)}}]),s}(0,Symbol.toStringTag),BC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!0,8)}return C(i)}(),xC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!0,16)}return C(i)}(),PC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!0,32)}return C(i)}(),CC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!1,8)}return C(i)}(),MC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!1,16)}return C(i)}(),EC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!1,32)}return C(i)}(),FC=32,kC=64,IC=function(e,t){g(s,bC);var i=_(s);function s(e){var t;return x(this,s),vb(b(t=i.call(this)),"precision",void 0),t.precision=e,t}return C(s,[{key:"typeId",get:function(){return _C.Float}},{key:t,get:function(){return"Float"}},{key:"toString",value:function(){return"Float".concat(this.precision)}}]),s}(0,Symbol.toStringTag),DC=function(e){g(i,IC);var t=_(i);function i(){return x(this,i),t.call(this,FC)}return C(i)}(),SC=function(e){g(i,IC);var t=_(i);function i(){return x(this,i),t.call(this,kC)}return C(i)}(),TC=function(e,t){g(s,bC);var i=_(s);function s(e,t){var r;return x(this,s),vb(b(r=i.call(this)),"listSize",void 0),vb(b(r),"children",void 0),r.listSize=e,r.children=[t],r}return C(s,[{key:"typeId",get:function(){return _C.FixedSizeList}},{key:"valueType",get:function(){return this.children[0].type}},{key:"valueField",get:function(){return this.children[0]}},{key:t,get:function(){return"FixedSizeList"}},{key:"toString",value:function(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">")}}]),s}(0,Symbol.toStringTag);function LC(e,t,i){var s=function(e){switch(e.constructor){case Int8Array:return new BC;case Uint8Array:return new CC;case Int16Array:return new xC;case Uint16Array:return new MC;case Int32Array:return new PC;case Uint32Array:return new EC;case Float32Array:return new DC;case Float64Array:return new SC;default:throw new Error("array type not supported")}}(t.value),r=i||function(e){var t=new Map;"byteOffset"in e&&t.set("byteOffset",e.byteOffset.toString(10));"byteStride"in e&&t.set("byteStride",e.byteStride.toString(10));"normalized"in e&&t.set("normalized",e.normalized.toString());return t}(t);return new yC(e,new TC(t.size,new yC("value",s)),!1,r)}function RC(e,t,i){var s=OC(t.metadata),r=[],n=function(e){var t={};for(var i in e){var s=e[i];t[s.name||"undefined"]=s}return t}(t.attributes);for(var o in e){var a=UC(o,e[o],n[o]);r.push(a)}if(i){var l=UC("indices",i);r.push(l)}return new gC(r,s)}function UC(e,t,i){return LC(e,t,i?OC(i.metadata):void 0)}function OC(e){var t=new Map;for(var i in e)t.set("".concat(i,".string"),JSON.stringify(e[i]));return t}var NC={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},QC={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},VC=function(){function e(t){x(this,e),vb(this,"draco",void 0),vb(this,"decoder",void 0),vb(this,"metadataQuerier",void 0),this.draco=t,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}return C(e,[{key:"destroy",value:function(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}},{key:"parseSync",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=new this.draco.DecoderBuffer;i.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);var s=this.decoder.GetEncodedGeometryType(i),r=s===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{var o;switch(s){case this.draco.TRIANGULAR_MESH:o=this.decoder.DecodeBufferToMesh(i,r);break;case this.draco.POINT_CLOUD:o=this.decoder.DecodeBufferToPointCloud(i,r);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!o.ok()||!r.ptr){var a="DRACO decompression failed: ".concat(o.error_msg());throw new Error(a)}var l=this._getDracoLoaderData(r,s,t),u=this._getMeshData(r,l,t),A=vC(u.attributes),c=RC(u.attributes,l,u.indices),h=n(n({loader:"draco",loaderData:l,header:{vertexCount:r.num_points(),boundingBox:A}},u),{},{schema:c});return h}finally{this.draco.destroy(i),r&&this.draco.destroy(r)}}},{key:"_getDracoLoaderData",value:function(e,t,i){var s=this._getTopLevelMetadata(e),r=this._getDracoAttributes(e,i);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:s,attributes:r}}},{key:"_getDracoAttributes",value:function(e,t){for(var i={},s=0;s2&&void 0!==arguments[2]&&arguments[2];if(!e)return null;if(Array.isArray(e))return new t(e);if(i&&!(e instanceof t))return new t(e);return e}(t,Float32Array)),s=t.length/i);return{buffer:t,size:i,count:s}}(e),i=t.buffer,s=t.size;return{value:i,size:s,byteOffset:0,count:t.count,type:jP(s),componentType:GP(i)}}function tM(){return(tM=u(a().mark((function e(t,i,s){var r,n,o,l,u,A;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=i&&null!==(r=i.gltf)&&void 0!==r&&r.decompressMeshes){e.next=2;break}return e.abrupt("return");case 2:n=new XP(t),o=[],l=c(oM(n));try{for(l.s();!(u=l.n()).done;)A=u.value,n.getObjectExtension(A,"KHR_draco_mesh_compression")&&o.push(iM(n,A,i,s))}catch(e){l.e(e)}finally{l.f()}return e.next=8,Promise.all(o);case 8:n.removeExtension("KHR_draco_mesh_compression");case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function iM(e,t,i,s){return sM.apply(this,arguments)}function sM(){return sM=u(a().mark((function e(t,i,s,r){var o,l,u,A,c,d,p,f,v,g,m,_,y,b;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.getObjectExtension(i,"KHR_draco_mesh_compression")){e.next=3;break}return e.abrupt("return");case 3:return l=t.getTypedArrayForBufferView(o.bufferView),u=Jb(l.buffer,l.byteOffset),A=r.parse,delete(c=n({},s))["3d-tiles"],e.next=10,A(u,ZC,c,r);case 10:for(d=e.sent,p=$C(d.attributes),f=0,v=Object.entries(p);f2&&void 0!==arguments[2]?arguments[2]:4,r=arguments.length>3?arguments[3]:void 0,n=arguments.length>4?arguments[4]:void 0;if(!r.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");var a=r.DracoWriter.encodeSync({attributes:e}),l=null==n||null===(i=n.parseSync)||void 0===i?void 0:i.call(n,{attributes:e}),u=r._addFauxAttributes(l.attributes),A=r.addBufferView(a),c={primitives:[{attributes:u,mode:s,extensions:o({},"KHR_draco_mesh_compression",{bufferView:A,attributes:u})}]};return c}function nM(e){if(!e.attributes&&Object.keys(e.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function oM(e){var t,i,r,n,o,l;return a().wrap((function(s){for(;;)switch(s.prev=s.next){case 0:t=c(e.json.meshes||[]),s.prev=1,t.s();case 3:if((i=t.n()).done){s.next=24;break}r=i.value,n=c(r.primitives),s.prev=6,n.s();case 8:if((o=n.n()).done){s.next=14;break}return l=o.value,s.next=12,l;case 12:s.next=8;break;case 14:s.next=19;break;case 16:s.prev=16,s.t0=s.catch(6),n.e(s.t0);case 19:return s.prev=19,n.f(),s.finish(19);case 22:s.next=3;break;case 24:s.next=29;break;case 26:s.prev=26,s.t1=s.catch(1),t.e(s.t1);case 29:return s.prev=29,t.f(),s.finish(29);case 32:case"end":return s.stop()}}),s,null,[[1,26,29,32],[6,16,19,22]])}function aM(){return(aM=u(a().mark((function e(t){var i,s,r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=new XP(t),s=i.json,(r=i.getExtension("KHR_lights_punctual"))&&(i.json.lights=r.lights,i.removeExtension("KHR_lights_punctual")),n=c(s.nodes||[]);try{for(n.s();!(o=n.n()).done;)l=o.value,(u=i.getObjectExtension(l,"KHR_lights_punctual"))&&(l.light=u.light),i.removeObjectExtension(l,"KHR_lights_punctual")}catch(e){n.e(e)}finally{n.f()}case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function lM(){return(lM=u(a().mark((function e(t){var i,s,r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=new XP(t),(s=i.json).lights&&(TP(!(r=i.addExtension("KHR_lights_punctual")).lights),r.lights=s.lights,delete s.lights),i.json.lights){n=c(i.json.lights);try{for(n.s();!(o=n.n()).done;)l=o.value,u=l.node,i.addObjectExtension(u,"KHR_lights_punctual",l)}catch(e){n.e(e)}finally{n.f()}delete i.json.lights}case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function uM(){return(uM=u(a().mark((function e(t){var i,s,r,n,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=new XP(t),s=i.json,i.removeExtension("KHR_materials_unlit"),r=c(s.materials||[]);try{for(r.s();!(n=r.n()).done;)o=n.value,o.extensions&&o.extensions.KHR_materials_unlit&&(o.unlit=!0),i.removeObjectExtension(o,"KHR_materials_unlit")}catch(e){r.e(e)}finally{r.f()}case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function AM(){return(AM=u(a().mark((function e(t){var i,s,r,n,o,l,u,A;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=new XP(t),s=i.json,r=i.getExtension("KHR_techniques_webgl")){n=hM(r,i),o=c(s.materials||[]);try{for(o.s();!(l=o.n()).done;)u=l.value,(A=i.getObjectExtension(u,"KHR_techniques_webgl"))&&(u.technique=Object.assign({},A,n[A.technique]),u.technique.values=dM(u.technique,i)),i.removeObjectExtension(u,"KHR_techniques_webgl")}catch(e){o.e(e)}finally{o.f()}i.removeExtension("KHR_techniques_webgl")}case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function cM(){return(cM=u(a().mark((function e(t,i){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function hM(e,t){var i=e.programs,s=void 0===i?[]:i,r=e.shaders,n=void 0===r?[]:r,o=e.techniques,a=void 0===o?[]:o,l=new TextDecoder;return n.forEach((function(e){if(!Number.isFinite(e.bufferView))throw new Error("KHR_techniques_webgl: no shader code");e.code=l.decode(t.getTypedArrayForBufferView(e.bufferView))})),s.forEach((function(e){e.fragmentShader=n[e.fragmentShader],e.vertexShader=n[e.vertexShader]})),a.forEach((function(e){e.program=s[e.program]})),a}function dM(e,t){var i=Object.assign({},e.values);return Object.keys(e.uniforms||{}).forEach((function(t){e.uniforms[t].value&&!(t in i)&&(i[t]=e.uniforms[t].value)})),Object.keys(i).forEach((function(e){"object"===B(i[e])&&void 0!==i[e].index&&(i[e].texture=t.getTexture(i[e].index))})),i}var pM=[hC,dC,pC,Object.freeze({__proto__:null,name:"KHR_draco_mesh_compression",preprocess:function(e,t,i){var s,r=new XP(e),n=c(oM(r));try{for(n.s();!(s=n.n()).done;){var o=s.value;r.getObjectExtension(o,"KHR_draco_mesh_compression")}}catch(e){n.e(e)}finally{n.f()}},decode:function(e,t,i){return tM.apply(this,arguments)},encode:function(e){var t,i=new XP(e),s=c(i.json.meshes||[]);try{for(s.s();!(t=s.n()).done;){var r=t.value;rM(r),i.addRequiredExtension("KHR_draco_mesh_compression")}}catch(e){s.e(e)}finally{s.f()}}}),Object.freeze({__proto__:null,name:"KHR_lights_punctual",decode:function(e){return aM.apply(this,arguments)},encode:function(e){return lM.apply(this,arguments)}}),Object.freeze({__proto__:null,name:"KHR_materials_unlit",decode:function(e){return uM.apply(this,arguments)},encode:function(e){var t=new XP(e),i=t.json;if(t.materials){var s,r=c(i.materials||[]);try{for(r.s();!(s=r.n()).done;){var n=s.value;n.unlit&&(delete n.unlit,t.addObjectExtension(n,"KHR_materials_unlit",{}),t.addExtension("KHR_materials_unlit"))}}catch(e){r.e(e)}finally{r.f()}}}}),Object.freeze({__proto__:null,name:"KHR_techniques_webgl",decode:function(e){return AM.apply(this,arguments)},encode:function(e,t){return cM.apply(this,arguments)}})];function fM(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0,r=pM.filter((function(e){return mM(e.name,i)})),n=c(r);try{for(n.s();!(t=n.n()).done;){var o,a=t.value;null===(o=a.preprocess)||void 0===o||o.call(a,e,i,s)}}catch(e){n.e(e)}finally{n.f()}}function vM(e){return gM.apply(this,arguments)}function gM(){return gM=u(a().mark((function e(t){var i,s,r,n,o,l,u,A=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=A.length>1&&void 0!==A[1]?A[1]:{},s=A.length>2?A[2]:void 0,r=pM.filter((function(e){return mM(e.name,i)})),n=c(r),e.prev=4,n.s();case 6:if((o=n.n()).done){e.next=12;break}return l=o.value,e.next=10,null===(u=l.decode)||void 0===u?void 0:u.call(l,t,i,s);case 10:e.next=6;break;case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(4),n.e(e.t0);case 17:return e.prev=17,n.f(),e.finish(17);case 20:case"end":return e.stop()}}),e,null,[[4,14,17,20]])}))),gM.apply(this,arguments)}function mM(e,t){var i,s=(null==t||null===(i=t.gltf)||void 0===i?void 0:i.excludeExtensions)||{};return!(e in s&&!s[e])}var _M={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},yM={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},bM=function(){function e(){x(this,e),vb(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}}),vb(this,"json",void 0)}return C(e,[{key:"normalize",value:function(e,t){this.json=e.json;var i=e.json;switch(i.asset&&i.asset.version){case"2.0":return;case void 0:case"1.0":break;default:return void console.warn("glTF: Unknown version ".concat(i.asset.version))}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(i),this._convertTopLevelObjectsToArrays(i),function(e){var t,i=new XP(e),s=i.json,r=c(s.images||[]);try{for(r.s();!(t=r.n()).done;){var n=t.value,o=i.getObjectExtension(n,"KHR_binary_glTF");o&&Object.assign(n,o),i.removeObjectExtension(n,"KHR_binary_glTF")}}catch(e){r.e(e)}finally{r.f()}s.buffers&&s.buffers[0]&&delete s.buffers[0].uri,i.removeExtension("KHR_binary_glTF")}(e),this._convertObjectIdsToArrayIndices(i),this._updateObjects(i),this._updateMaterial(i)}},{key:"_addAsset",value:function(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}},{key:"_convertTopLevelObjectsToArrays",value:function(e){for(var t in _M)this._convertTopLevelObjectToArray(e,t)}},{key:"_convertTopLevelObjectToArray",value:function(e,t){var i=e[t];if(i&&!Array.isArray(i))for(var s in e[t]=[],i){var r=i[s];r.id=r.id||s;var n=e[t].length;e[t].push(r),this.idToIndexMap[t][s]=n}}},{key:"_convertObjectIdsToArrayIndices",value:function(e){for(var t in _M)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));var i,s=c(e.textures);try{for(s.s();!(i=s.n()).done;){var r=i.value;this._convertTextureIds(r)}}catch(e){s.e(e)}finally{s.f()}var n,o=c(e.meshes);try{for(o.s();!(n=o.n()).done;){var a=n.value;this._convertMeshIds(a)}}catch(e){o.e(e)}finally{o.f()}var l,u=c(e.nodes);try{for(u.s();!(l=u.n()).done;){var A=l.value;this._convertNodeIds(A)}}catch(e){u.e(e)}finally{u.f()}var h,d=c(e.scenes);try{for(d.s();!(h=d.n()).done;){var p=h.value;this._convertSceneIds(p)}}catch(e){d.e(e)}finally{d.f()}}},{key:"_convertTextureIds",value:function(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}},{key:"_convertMeshIds",value:function(e){var t,i=c(e.primitives);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.attributes,n=s.indices,o=s.material;for(var a in r)r[a]=this._convertIdToIndex(r[a],"accessor");n&&(s.indices=this._convertIdToIndex(n,"accessor")),o&&(s.material=this._convertIdToIndex(o,"material"))}}catch(e){i.e(e)}finally{i.f()}}},{key:"_convertNodeIds",value:function(e){var t=this;e.children&&(e.children=e.children.map((function(e){return t._convertIdToIndex(e,"node")}))),e.meshes&&(e.meshes=e.meshes.map((function(e){return t._convertIdToIndex(e,"mesh")})))}},{key:"_convertSceneIds",value:function(e){var t=this;e.nodes&&(e.nodes=e.nodes.map((function(e){return t._convertIdToIndex(e,"node")})))}},{key:"_convertIdsToIndices",value:function(e,t){e[t]||(console.warn("gltf v1: json doesn't contain attribute ".concat(t)),e[t]=[]);var i,s=c(e[t]);try{for(s.s();!(i=s.n()).done;){var r=i.value;for(var n in r){var o=r[n],a=this._convertIdToIndex(o,n);r[n]=a}}}catch(e){s.e(e)}finally{s.f()}}},{key:"_convertIdToIndex",value:function(e,t){var i=yM[t];if(i in this.idToIndexMap){var s=this.idToIndexMap[i][e];if(!Number.isFinite(s))throw new Error("gltf v1: failed to resolve ".concat(t," with id ").concat(e));return s}return e}},{key:"_updateObjects",value:function(e){var t,i=c(this.json.buffers);try{for(i.s();!(t=i.n()).done;){delete t.value.type}}catch(e){i.e(e)}finally{i.f()}}},{key:"_updateMaterial",value:function(e){var t,i=c(e.materials);try{var s=function(){var i=t.value;i.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};var s=(null===(r=i.values)||void 0===r?void 0:r.tex)||(null===(n=i.values)||void 0===n?void 0:n.texture2d_0),o=e.textures.findIndex((function(e){return e.id===s}));-1!==o&&(i.pbrMetallicRoughness.baseColorTexture={index:o})};for(i.s();!(t=i.n()).done;){var r,n;s()}}catch(e){i.e(e)}finally{i.f()}}}]),e}();function wM(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(new bM).normalize(e,t)}var BM={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},xM={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},PM=10240,CM=10241,MM=10242,EM=10243,FM=10497,kM=9986,IM={magFilter:PM,minFilter:CM,wrapS:MM,wrapT:EM},DM=(o(e={},PM,9729),o(e,CM,kM),o(e,MM,FM),o(e,EM,FM),e);var SM=function(){function e(){x(this,e),vb(this,"baseUri",""),vb(this,"json",{}),vb(this,"buffers",[]),vb(this,"images",[])}return C(e,[{key:"postProcess",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=e.json,s=e.buffers,r=void 0===s?[]:s,n=e.images,o=void 0===n?[]:n,a=e.baseUri,l=void 0===a?"":a;return TP(i),this.baseUri=l,this.json=i,this.buffers=r,this.images=o,this._resolveTree(this.json,t),this.json}},{key:"_resolveTree",value:function(e){var t=this;e.bufferViews&&(e.bufferViews=e.bufferViews.map((function(e,i){return t._resolveBufferView(e,i)}))),e.images&&(e.images=e.images.map((function(e,i){return t._resolveImage(e,i)}))),e.samplers&&(e.samplers=e.samplers.map((function(e,i){return t._resolveSampler(e,i)}))),e.textures&&(e.textures=e.textures.map((function(e,i){return t._resolveTexture(e,i)}))),e.accessors&&(e.accessors=e.accessors.map((function(e,i){return t._resolveAccessor(e,i)}))),e.materials&&(e.materials=e.materials.map((function(e,i){return t._resolveMaterial(e,i)}))),e.meshes&&(e.meshes=e.meshes.map((function(e,i){return t._resolveMesh(e,i)}))),e.nodes&&(e.nodes=e.nodes.map((function(e,i){return t._resolveNode(e,i)}))),e.skins&&(e.skins=e.skins.map((function(e,i){return t._resolveSkin(e,i)}))),e.scenes&&(e.scenes=e.scenes.map((function(e,i){return t._resolveScene(e,i)}))),void 0!==e.scene&&(e.scene=e.scenes[this.json.scene])}},{key:"getScene",value:function(e){return this._get("scenes",e)}},{key:"getNode",value:function(e){return this._get("nodes",e)}},{key:"getSkin",value:function(e){return this._get("skins",e)}},{key:"getMesh",value:function(e){return this._get("meshes",e)}},{key:"getMaterial",value:function(e){return this._get("materials",e)}},{key:"getAccessor",value:function(e){return this._get("accessors",e)}},{key:"getCamera",value:function(e){return null}},{key:"getTexture",value:function(e){return this._get("textures",e)}},{key:"getSampler",value:function(e){return this._get("samplers",e)}},{key:"getImage",value:function(e){return this._get("images",e)}},{key:"getBufferView",value:function(e){return this._get("bufferViews",e)}},{key:"getBuffer",value:function(e){return this._get("buffers",e)}},{key:"_get",value:function(e,t){if("object"===B(t))return t;var i=this.json[e]&&this.json[e][t];return i||console.warn("glTF file error: Could not find ".concat(e,"[").concat(t,"]")),i}},{key:"_resolveScene",value:function(e,t){var i=this;return e.id=e.id||"scene-".concat(t),e.nodes=(e.nodes||[]).map((function(e){return i.getNode(e)})),e}},{key:"_resolveNode",value:function(e,t){var i=this;return e.id=e.id||"node-".concat(t),e.children&&(e.children=e.children.map((function(e){return i.getNode(e)}))),void 0!==e.mesh?e.mesh=this.getMesh(e.mesh):void 0!==e.meshes&&e.meshes.length&&(e.mesh=e.meshes.reduce((function(e,t){var s=i.getMesh(t);return e.id=s.id,e.primitives=e.primitives.concat(s.primitives),e}),{primitives:[]})),void 0!==e.camera&&(e.camera=this.getCamera(e.camera)),void 0!==e.skin&&(e.skin=this.getSkin(e.skin)),e}},{key:"_resolveSkin",value:function(e,t){return e.id=e.id||"skin-".concat(t),e.inverseBindMatrices=this.getAccessor(e.inverseBindMatrices),e}},{key:"_resolveMesh",value:function(e,t){var i=this;return e.id=e.id||"mesh-".concat(t),e.primitives&&(e.primitives=e.primitives.map((function(e){var t=(e=n({},e)).attributes;for(var s in e.attributes={},t)e.attributes[s]=i.getAccessor(t[s]);return void 0!==e.indices&&(e.indices=i.getAccessor(e.indices)),void 0!==e.material&&(e.material=i.getMaterial(e.material)),e}))),e}},{key:"_resolveMaterial",value:function(e,t){if(e.id=e.id||"material-".concat(t),e.normalTexture&&(e.normalTexture=n({},e.normalTexture),e.normalTexture.texture=this.getTexture(e.normalTexture.index)),e.occlusionTexture&&(e.occlustionTexture=n({},e.occlustionTexture),e.occlusionTexture.texture=this.getTexture(e.occlusionTexture.index)),e.emissiveTexture&&(e.emmisiveTexture=n({},e.emmisiveTexture),e.emissiveTexture.texture=this.getTexture(e.emissiveTexture.index)),e.emissiveFactor||(e.emissiveFactor=e.emmisiveTexture?[1,1,1]:[0,0,0]),e.pbrMetallicRoughness){e.pbrMetallicRoughness=n({},e.pbrMetallicRoughness);var i=e.pbrMetallicRoughness;i.baseColorTexture&&(i.baseColorTexture=n({},i.baseColorTexture),i.baseColorTexture.texture=this.getTexture(i.baseColorTexture.index)),i.metallicRoughnessTexture&&(i.metallicRoughnessTexture=n({},i.metallicRoughnessTexture),i.metallicRoughnessTexture.texture=this.getTexture(i.metallicRoughnessTexture.index))}return e}},{key:"_resolveAccessor",value:function(e,t){var i,s;if(e.id=e.id||"accessor-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView)),e.bytesPerComponent=(i=e.componentType,xM[i]),e.components=(s=e.type,BM[s]),e.bytesPerElement=e.bytesPerComponent*e.components,e.bufferView){var r=e.bufferView.buffer,n=zP(e,e.bufferView),o=n.ArrayType,a=n.byteLength,l=(e.bufferView.byteOffset||0)+(e.byteOffset||0)+r.byteOffset,u=r.arrayBuffer.slice(l,l+a);e.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(r,l,e.bufferView.byteStride,e.bytesPerElement,e.count)),e.value=new o(u)}return e}},{key:"_getValueFromInterleavedBuffer",value:function(e,t,i,s,r){for(var n=new Uint8Array(r*s),o=0;o1&&void 0!==arguments[1]?arguments[1]:0;return"".concat(String.fromCharCode(e.getUint8(t+0))).concat(String.fromCharCode(e.getUint8(t+1))).concat(String.fromCharCode(e.getUint8(t+2))).concat(String.fromCharCode(e.getUint8(t+3)))}function UM(e,t,i){ob(e.header.byteLength>20);var s=t.getUint32(i+0,LM),r=t.getUint32(i+4,LM);return i+=8,ob(0===r),NM(e,t,i,s),i+=s,i+=QM(e,t,i,e.header.byteLength)}function OM(e,t,i,s){return ob(e.header.byteLength>20),function(e,t,i,s){for(;i+8<=e.header.byteLength;){var r=t.getUint32(i+0,LM),n=t.getUint32(i+4,LM);switch(i+=8,n){case 1313821514:NM(e,t,i,r);break;case 5130562:QM(e,t,i,r);break;case 0:s.strict||NM(e,t,i,r);break;case 1:s.strict||QM(e,t,i,r)}i+=Yb(r,4)}}(e,t,i,s),i+e.header.byteLength}function NM(e,t,i,s){var r=new Uint8Array(t.buffer,i,s),n=new TextDecoder("utf8").decode(r);return e.json=JSON.parse(n),Yb(s,4)}function QM(e,t,i,s){return e.header.hasBinChunk=!0,e.binChunks.push({byteOffset:i,byteLength:s,arrayBuffer:t.buffer}),Yb(s,4)}function VM(e,t){return HM.apply(this,arguments)}function HM(){return HM=u(a().mark((function e(t,i){var s,r,n,o,l,u,A,c,h,d,p=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=p.length>2&&void 0!==p[2]?p[2]:0,r=p.length>3?p[3]:void 0,n=p.length>4?p[4]:void 0,jM(t,i,s,r),wM(t,{normalize:null==r||null===(o=r.gltf)||void 0===o?void 0:o.normalize}),fM(t,r,n),c=[],null==r||null===(l=r.gltf)||void 0===l||!l.loadBuffers||!t.json.buffers){e.next=10;break}return e.next=10,GM(t,r,n);case 10:return null!=r&&null!==(u=r.gltf)&&void 0!==u&&u.loadImages&&(h=WM(t,r,n),c.push(h)),d=vM(t,r,n),c.push(d),e.next=15,Promise.all(c);case 15:return e.abrupt("return",null!=r&&null!==(A=r.gltf)&&void 0!==A&&A.postProcess?TM(t,r):t);case 16:case"end":return e.stop()}}),e)}))),HM.apply(this,arguments)}function jM(e,t,i,s){(s.uri&&(e.baseUri=s.uri),t instanceof ArrayBuffer&&!function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=new DataView(e),r=i.magic,n=void 0===r?1735152710:r,o=s.getUint32(t,!1);return o===n||1735152710===o}(t,i,s))&&(t=(new TextDecoder).decode(t));if("string"==typeof t)e.json=zb(t);else if(t instanceof ArrayBuffer){var r={};i=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=new DataView(t),r=RM(s,i+0),n=s.getUint32(i+4,LM),o=s.getUint32(i+8,LM);switch(Object.assign(e,{header:{byteOffset:i,byteLength:o,hasBinChunk:!1},type:r,version:n,json:{},binChunks:[]}),i+=12,e.version){case 1:return UM(e,s,i);case 2:return OM(e,s,i,{});default:throw new Error("Invalid GLB version ".concat(e.version,". Only supports v1 and v2."))}}(r,t,i,s.glb),TP("glTF"===r.type,"Invalid GLB magic string ".concat(r.type)),e._glb=r,e.json=r.json}else TP(!1,"GLTF: must be ArrayBuffer or string");var n=e.json.buffers||[];if(e.buffers=new Array(n.length).fill(null),e._glb&&e._glb.header.hasBinChunk){var o=e._glb.binChunks;e.buffers[0]={arrayBuffer:o[0].arrayBuffer,byteOffset:o[0].byteOffset,byteLength:o[0].byteLength}}var a=e.json.images||[];e.images=new Array(a.length).fill({})}function GM(e,t,i){return zM.apply(this,arguments)}function zM(){return(zM=u(a().mark((function e(t,i,s){var r,n,o,l,u,A,c,h;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.json.buffers||[],n=0;case 2:if(!(n1&&void 0!==u[1]?u[1]:{},s=u.length>2?u[2]:void 0,(i=n(n({},ZM.options),i)).gltf=n(n({},ZM.options.gltf),i.gltf),r=i.byteOffset,o=void 0===r?0:r,l={},e.next=8,VM(l,t,o,i,s);case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}}),e)}))),qM.apply(this,arguments)}var $M=function(){function e(t){x(this,e)}return C(e,[{key:"load",value:function(e,t,i,s,r,n,o){!function(e,t,i,s,r,n,o){var a=e.viewer.scene.canvas.spinner;a.processes++,"glb"===t.split(".").pop()?e.dataSource.getGLB(t,(function(o){s.basePath=tE(t),iE(e,t,o,i,s,r,n),a.processes--}),(function(e){a.processes--,o(e)})):e.dataSource.getGLTF(t,(function(o){s.basePath=tE(t),iE(e,t,o,i,s,r,n),a.processes--}),(function(e){a.processes--,o(e)}))}(e,t,i,s=s||{},r,(function(){_e.scheduleTask((function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1)})),n&&n()}),(function(t){e.error(t),o&&o(t),r.fire("error",t)}))}},{key:"parse",value:function(e,t,i,s,r,n,o){iE(e,"",t,i,s=s||{},r,(function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1),n&&n()}))}}]),e}();function eE(e){for(var t={},i={},s=e.metaObjects||[],r={},n=0,o=s.length;n0)for(var A=0;A0){null==y&&e.log("Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT");var b=y;if(e.metaModelCorrections){var w=e.metaModelCorrections.eachChildRoot[b];if(w){var B=e.metaModelCorrections.eachRootStats[w.id];B.countChildren++,B.countChildren>=B.numChildren&&(n.createEntity({id:w.id,meshIds:aE,isObject:!0}),aE.length=0)}else{e.metaModelCorrections.metaObjectsMap[b]&&(n.createEntity({id:b,meshIds:aE,isObject:!0}),aE.length=0)}}else n.createEntity({id:b,meshIds:aE,isObject:!0}),aE.length=0}}}function uE(e,t){e.plugin.error(t)}var AE={DEFAULT:{}},cE=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"GLTFLoader",e,r))._sceneModelLoader=new $M(b(s),r),s.dataSource=r.dataSource,s.objectDefaults=r.objectDefaults,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new Sh}},{key:"objectDefaults",get:function(){return this._objectDefaults},set:function(e){this._objectDefaults=e||AE}},{key:"load",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id);var i=new hh(this.viewer.scene,le.apply(t,{isModel:!0,dtxEnabled:t.dtxEnabled})),s=i.id;if(!t.src&&!t.gltf)return this.error("load() param expected: src or gltf"),i;if(t.metaModelSrc||t.metaModelJSON){var r=t.objectDefaults||this._objectDefaults||AE,n=function(n){var o;if(e.viewer.metaScene.createMetaModel(s,n,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes}),e.viewer.scene.canvas.spinner.processes--,t.includeTypes){o={};for(var a=0,l=t.includeTypes.length;a2&&void 0!==arguments[2]?arguments[2]:{},s="lightgrey",r=i.hoverColor||"rgba(0,0,0,0.4)",n=i.textColor||"black",o=500,a=o+o/3,l=a/24,u=[{boundary:[6,6,6,6],color:i.frontColor||i.color||"#55FF55"},{boundary:[18,6,6,6],color:i.backColor||i.color||"#55FF55"},{boundary:[12,6,6,6],color:i.rightColor||i.color||"#FF5555"},{boundary:[0,6,6,6],color:i.leftColor||i.color||"#FF5555"},{boundary:[6,0,6,6],color:i.topColor||i.color||"#7777FF"},{boundary:[6,12,6,6],color:i.bottomColor||i.color||"#7777FF"}],A=[{label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,1,0],up:[0,0,1]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,-1,0],up:[0,0,1]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,0,1]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,0,1]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,0,1],up:[0,-1,0]},{boundaries:[[7,5,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,0,-1],up:[1,0,1]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-1,-1],up:[0,-1,1]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,0,-1],up:[-1,0,1]},{boundaries:[[7,11,4,2]],dir:[0,1,1],up:[0,-1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,0,1],up:[-1,0,1]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,-1,1],up:[0,1,1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,0,1],up:[1,0,1]},{boundaries:[[5,7,2,4]],dir:[1,1,0],up:[0,0,1]},{boundaries:[[11,7,2,4]],dir:[-1,1,0],up:[0,0,1]},{boundaries:[[17,7,2,4]],dir:[-1,-1,0],up:[0,0,1]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,-1,0],up:[0,0,1]},{boundaries:[[5,11,2,2]],dir:[1,1,1],up:[-1,-1,1]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[1,-1,1],up:[-1,1,1]},{boundaries:[[5,5,2,2]],dir:[1,1,-1],up:[1,1,1]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-1,-1,1],up:[1,1,1]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-1,-1,-1],up:[-1,-1,1]},{boundaries:[[11,11,2,2]],dir:[-1,1,1],up:[1,-1,1]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[1,-1,-1],up:[1,-1,1]},{boundaries:[[11,5,2,2]],dir:[-1,1,-1],up:[-1,1,1]}];i.frontColor||i.color,i.backColor||i.color,i.rightColor||i.color,i.leftColor||i.color,i.topColor||i.color,i.bottomColor||i.color;for(var c=[{yUp:"",label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,0,1],up:[0,1,0]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,1,0]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,1,0]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,-1,0],up:[0,0,-1]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,1,0],up:[0,0,1]},{boundaries:[[7,5,4,2]],dir:[0,-.7071,-.7071],up:[0,.7071,-.7071]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,-1,0],up:[1,1,0]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-.7071,.7071],up:[0,.7071,.7071]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,-1,0],up:[-1,1,0]},{boundaries:[[7,11,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,1,0],up:[-1,1,0]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,1,1],up:[0,1,-1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,1,0],up:[1,1,0]},{boundaries:[[5,7,2,4]],dir:[1,0,-1],up:[0,1,0]},{boundaries:[[11,7,2,4]],dir:[-1,0,-1],up:[0,1,0]},{boundaries:[[17,7,2,4]],dir:[-1,0,1],up:[0,1,0]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,0,1],up:[0,1,0]},{boundaries:[[5,11,2,2]],dir:[.5,.7071,-.5],up:[-.5,.7071,.5]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[.5,.7071,.5],up:[-.5,.7071,-.5]},{boundaries:[[5,5,2,2]],dir:[.5,-.7071,-.5],up:[.5,.7071,-.5]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-.5,.7071,.5],up:[.5,.7071,-.5]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-.5,-.7071,.5],up:[-.5,.7071,.5]},{boundaries:[[11,11,2,2]],dir:[-.5,.7071,-.5],up:[.5,.7071,.5]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[.5,-.7071,.5],up:[.5,.7071,.5]},{boundaries:[[11,5,2,2]],dir:[-.5,-.7071,-.5],up:[-.5,.7071,-.5]}],h=0,d=A.length;h=c[0]*l&&t<=(c[0]+c[2])*l&&i>=c[1]*l&&i<=(c[1]+c[3])*l)return s}return-1},this.setAreaHighlighted=function(e,t){var i=v[e];if(!i)throw"Area not found: "+e;i.highlighted=!!t,y()},this.getAreaDir=function(e){var t=v[e];if(!t)throw"Unknown area: "+e;return t.dir},this.getAreaUp=function(e){var t=v[e];if(!t)throw"Unknown area: "+e;return t.up},this.getImage=function(){return this._textureCanvas},this.destroy=function(){this._textureCanvas&&(this._textureCanvas.parentNode.removeChild(this._textureCanvas),this._textureCanvas=null)}}var dE=$.vec3(),pE=$.vec3();$.mat4();var fE=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),s=t.call(this,"NavCube",e,r),e.navCube=b(s);var n=!0;try{s._navCubeScene=new $i(e,{canvasId:r.canvasId,canvasElement:r.canvasElement,transparent:!0}),s._navCubeCanvas=s._navCubeScene.canvas.canvas,s._navCubeScene.input.keyboardEnabled=!1}catch(e){return s.error(e),y(s)}var o=s._navCubeScene;o.clearLights(),new bi(o,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new bi(o,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new bi(o,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),s._navCubeCamera=o.camera,s._navCubeCamera.ortho.scale=7,s._navCubeCamera.ortho.near=.1,s._navCubeCamera.ortho.far=2e3,o.edgeMaterial.edgeColor=[.2,.2,.2],o.edgeMaterial.edgeAlpha=.6,s._zUp=Boolean(e.camera.zUp);var a=b(s);s.setIsProjectNorth(r.isProjectNorth),s.setProjectNorthOffsetAngle(r.projectNorthOffsetAngle);var l,u=(l=$.mat4(),function(e,t,i){return $.identityMat4(l),$.rotationMat4v(e*a._projectNorthOffsetAngle*$.DEGTORAD,[0,1,0],l),$.transformVec3(l,t,i)});s._synchCamera=function(){var t=$.rotationMat4c(-90*$.DEGTORAD,1,0,0),i=$.vec3(),s=$.vec3(),r=$.vec3();return function(){var n=e.camera.eye,o=e.camera.look,l=e.camera.up;i=$.mulVec3Scalar($.normalizeVec3($.subVec3(n,o,i)),5),a._isProjectNorth&&a._projectNorthOffsetAngle&&(i=u(-1,i,dE),l=u(-1,l,pE)),a._zUp?($.transformVec3(t,i,s),$.transformVec3(t,l,r),a._navCubeCamera.look=[0,0,0],a._navCubeCamera.eye=$.transformVec3(t,i,s),a._navCubeCamera.up=$.transformPoint3(t,l,r)):(a._navCubeCamera.look=[0,0,0],a._navCubeCamera.eye=i,a._navCubeCamera.up=l)}}(),s._cubeTextureCanvas=new hE(e,o,r),s._cubeSampler=new On(o,{image:s._cubeTextureCanvas.getImage(),flipY:!0,wrapS:1001,wrapT:1001}),s._cubeMesh=new nn(o,{geometry:new Ti(o,{primitive:"triangles",normals:[0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1],positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),material:new Ni(o,{diffuse:[.4,.4,.4],specular:[.4,.4,.4],emissive:[.6,.6,.6],diffuseMap:s._cubeSampler,emissiveMap:s._cubeSampler}),visible:!!n,edges:!0}),s._shadow=!1===r.shadowVisible?null:new nn(o,{geometry:new Ti(o,an({center:[0,0,0],radiusTop:.001,radiusBottom:1.4,height:.01,radialSegments:20,heightSegments:1,openEnded:!0})),material:new Ni(o,{diffuse:[0,0,0],specular:[0,0,0],emissive:[0,0,0],alpha:.5}),position:[0,-1.5,0],visible:!!n,pickable:!1,backfaces:!1}),s._onCameraMatrix=e.camera.on("matrix",s._synchCamera),s._onCameraWorldAxis=e.camera.on("worldAxis",(function(){e.camera.zUp?(s._zUp=!0,s._cubeTextureCanvas.setZUp(),s._repaint(),s._synchCamera()):e.camera.yUp&&(s._zUp=!1,s._cubeTextureCanvas.setYUp(),s._repaint(),s._synchCamera())})),s._onCameraFOV=e.camera.perspective.on("fov",(function(e){s._synchProjection&&(s._navCubeCamera.perspective.fov=e)})),s._onCameraProjection=e.camera.on("projection",(function(e){s._synchProjection&&(s._navCubeCamera.projection="ortho"===e||"perspective"===e?e:"perspective")}));var A=-1;function c(t,i){var s=(t-d)*-_,r=(i-p)*-_;e.camera.orbitYaw(s),e.camera.orbitPitch(-r),d=t,p=i}function h(e){var t=[0,0];if(e){for(var i=e.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t}var d,p,f=null,v=null,g=!1,m=!1,_=.5;a._navCubeCanvas.addEventListener("mouseenter",a._onMouseEnter=function(e){m=!0}),a._navCubeCanvas.addEventListener("mouseleave",a._onMouseLeave=function(e){m=!1}),a._navCubeCanvas.addEventListener("mousedown",a._onMouseDown=function(e){if(1===e.which){f=e.x,v=e.y,d=e.clientX,p=e.clientY;var t=h(e),i=o.pick({canvasPos:t});g=!!i}}),document.addEventListener("mouseup",a._onMouseUp=function(e){if(1===e.which&&(g=!1,null!==f)){var t=h(e),i=o.pick({canvasPos:t,pickSurface:!0});if(i&&i.uv){var s=a._cubeTextureCanvas.getArea(i.uv);if(s>=0&&(document.body.style.cursor="pointer",A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1),s>=0)){if(a._cubeTextureCanvas.setAreaHighlighted(s,!0),A=s,a._repaint(),e.xf+3||e.yv+3)return;var r=a._cubeTextureCanvas.getAreaDir(s);if(r){var n=a._cubeTextureCanvas.getAreaUp(s);a._isProjectNorth&&a._projectNorthOffsetAngle&&(r=u(1,r,dE),n=u(1,n,pE)),w(r,n,(function(){A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1),document.body.style.cursor="pointer",A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1),s>=0&&(a._cubeTextureCanvas.setAreaHighlighted(s,!1),A=-1,a._repaint())}))}}}}}),document.addEventListener("mousemove",a._onMouseMove=function(e){if(A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1),1!==e.buttons||g){if(g){var t=e.clientX,i=e.clientY;return document.body.style.cursor="move",void c(t,i)}if(m){var s=h(e),r=o.pick({canvasPos:s,pickSurface:!0});if(r){if(r.uv){document.body.style.cursor="pointer";var n=a._cubeTextureCanvas.getArea(r.uv);if(n===A)return;A>=0&&a._cubeTextureCanvas.setAreaHighlighted(A,!1),n>=0&&(a._cubeTextureCanvas.setAreaHighlighted(n,!0),a._repaint(),A=n)}}else document.body.style.cursor="default",A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1)}}});var w=function(){var t=$.vec3();return function(i,s,r){var n=a._fitVisible?e.scene.getAABB(e.scene.visibleObjectIds):e.scene.aabb,o=$.getAABB3Diag(n);$.getAABB3Center(n,t);var l=Math.abs(o/Math.tan(a._cameraFitFOV*$.DEGTORAD));e.cameraControl.pivotPos=t,a._cameraFly?e.cameraFlight.flyTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:s||[0,1,0],orthoScale:1.1*o,fitFOV:a._cameraFitFOV,duration:a._cameraFlyDuration},r):e.cameraFlight.jumpTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:s||[0,1,0],orthoScale:1.1*o,fitFOV:a._cameraFitFOV},r)}}();return s._onUpdated=e.localeService.on("updated",(function(){s._cubeTextureCanvas.clear(),s._repaint()})),s.setVisible(r.visible),s.setCameraFitFOV(r.cameraFitFOV),s.setCameraFly(r.cameraFly),s.setCameraFlyDuration(r.cameraFlyDuration),s.setFitVisible(r.fitVisible),s.setSynchProjection(r.synchProjection),s}return C(i,[{key:"send",value:function(e,t){if("language"===e)this._cubeTextureCanvas.clear(),this._repaint()}},{key:"_repaint",value:function(){var e=this._cubeTextureCanvas.getImage();this._cubeMesh.material.diffuseMap.image=e,this._cubeMesh.material.emissiveMap.image=e}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._navCubeCanvas&&(this._cubeMesh.visible=e,this._shadow&&(this._shadow.visible=e),this._navCubeCanvas.style.visibility=e?"visible":"hidden")}},{key:"getVisible",value:function(){return!!this._navCubeCanvas&&this._cubeMesh.visible}},{key:"setFitVisible",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._fitVisible=e}},{key:"getFitVisible",value:function(){return this._fitVisible}},{key:"setCameraFly",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._cameraFly=e}},{key:"getCameraFly",value:function(){return this._cameraFly}},{key:"setCameraFitFOV",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:45;this._cameraFitFOV=e}},{key:"getCameraFitFOV",value:function(){return this._cameraFitFOV}},{key:"setCameraFlyDuration",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;this._cameraFlyDuration=e}},{key:"getCameraFlyDuration",value:function(){return this._cameraFlyDuration}},{key:"setSynchProjection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._synchProjection=e}},{key:"getSynchProjection",value:function(){return this._synchProjection}},{key:"setIsProjectNorth",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._isProjectNorth=e}},{key:"getIsProjectNorth",value:function(){return this._isProjectNorth}},{key:"setProjectNorthOffsetAngle",value:function(e){this._projectNorthOffsetAngle=e}},{key:"getProjectNorthOffsetAngle",value:function(){return this._projectNorthOffsetAngle}},{key:"destroy",value:function(){this._navCubeCanvas&&(this.viewer.localeService.off(this._onUpdated),this.viewer.camera.off(this._onCameraMatrix),this.viewer.camera.off(this._onCameraWorldAxis),this.viewer.camera.perspective.off(this._onCameraFOV),this.viewer.camera.off(this._onCameraProjection),this._navCubeCanvas.removeEventListener("mouseenter",this._onMouseEnter),this._navCubeCanvas.removeEventListener("mouseleave",this._onMouseLeave),this._navCubeCanvas.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),this._navCubeCanvas=null,this._cubeTextureCanvas.destroy(),this._cubeTextureCanvas=null,this._onMouseEnter=null,this._onMouseLeave=null,this._onMouseDown=null,this._onMouseMove=null,this._onMouseUp=null),this._navCubeScene.destroy(),this._navCubeScene=null,this._cubeMesh=null,this._shadow=null,f(w(i.prototype),"destroy",this).call(this)}}]),i}(),vE=$.vec3(),gE=function(){function e(){x(this,e)}return C(e,[{key:"load",value:function(e,t){var i=e.scene.canvas.spinner;i.processes++,mE(e,t,(function(t){yE(e,t,(function(){BE(e,t),i.processes--,_e.scheduleTask((function(){e.fire("loaded",!0,!1)}))}))}))}},{key:"parse",value:function(e,t,i,s){if(t){var r=_E(e,t,null);i&&wE(e,i,s),BE(e,r),e.src=null,e.fire("loaded",!0,!1)}else this.warn("load() param expected: objText")}}]),e}(),mE=function(e,t,i){xE(t,(function(s){var r=_E(e,s,t);i(r)}),(function(t){e.error(t)}))},_E=function(){var e={vertex_pattern:/^v\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,normal_pattern:/^vn\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,uv_pattern:/^vt\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,face_vertex:/^f\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)(?:\s+(-?\d+))?/,face_vertex_uv:/^f\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+))?/,face_vertex_uv_normal:/^f\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+)\/(-?\d+))?/,face_vertex_normal:/^f\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)(?:\s+(-?\d+)\/\/(-?\d+))?/,object_pattern:/^[og]\s*(.+)?/,smoothing_pattern:/^s\s+(\d+|on|off)/,material_library_pattern:/^mtllib /,material_use_pattern:/^usemtl /};return function(s,r,n){var o={src:n=n||"",basePath:t(n),objects:[],object:{},positions:[],normals:[],uv:[],materialLibraries:{}};i(o,"",!1),-1!==r.indexOf("\r\n")&&(r=r.replace("\r\n","\n"));for(var a=r.split("\n"),l="",u="",A="",d=[],p="function"==typeof"".trimLeft,f=0,v=a.length;f=0?i-1:i+t/3)}function r(e,t){var i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)}function n(e,t){var i=parseInt(e,10);return 2*(i>=0?i-1:i+t/2)}function o(e,t,i,s){var r=e.positions,n=e.object.geometry.positions;n.push(r[t+0]),n.push(r[t+1]),n.push(r[t+2]),n.push(r[i+0]),n.push(r[i+1]),n.push(r[i+2]),n.push(r[s+0]),n.push(r[s+1]),n.push(r[s+2])}function a(e,t){var i=e.positions,s=e.object.geometry.positions;s.push(i[t+0]),s.push(i[t+1]),s.push(i[t+2])}function l(e,t,i,s){var r=e.normals,n=e.object.geometry.normals;n.push(r[t+0]),n.push(r[t+1]),n.push(r[t+2]),n.push(r[i+0]),n.push(r[i+1]),n.push(r[i+2]),n.push(r[s+0]),n.push(r[s+1]),n.push(r[s+2])}function u(e,t,i,s){var r=e.uv,n=e.object.geometry.uv;n.push(r[t+0]),n.push(r[t+1]),n.push(r[i+0]),n.push(r[i+1]),n.push(r[s+0]),n.push(r[s+1])}function A(e,t){var i=e.uv,s=e.object.geometry.uv;s.push(i[t+0]),s.push(i[t+1])}function c(e,t,i,a,A,c,h,d,p,f,v,g,m){var _,y=e.positions.length,b=s(t,y),w=s(i,y),B=s(a,y);if(void 0===A?o(e,b,w,B):(o(e,b,w,_=s(A,y)),o(e,w,B,_)),void 0!==c){var x=e.uv.length;b=n(c,x),w=n(h,x),B=n(d,x),void 0===A?u(e,b,w,B):(u(e,b,w,_=n(p,x)),u(e,w,B,_))}if(void 0!==f){var P=e.normals.length;b=r(f,P),w=f===v?b:r(v,P),B=f===g?b:r(g,P),void 0===A?l(e,b,w,B):(l(e,b,w,_=r(m,P)),l(e,w,B,_))}}function h(e,t,i){e.object.geometry.type="Line";for(var r=e.positions.length,o=e.uv.length,l=0,u=t.length;l=0?o.substring(0,a):o).toLowerCase(),u=(u=a>=0?o.substring(a+1):"").trim(),l.toLowerCase()){case"newmtl":i(e,h),h={id:u},d=!0;break;case"ka":h.ambient=s(u);break;case"kd":h.diffuse=s(u);break;case"ks":h.specular=s(u);break;case"map_kd":h.diffuseMap||(h.diffuseMap=t(e,n,u,"sRGB"));break;case"map_ks":h.specularMap||(h.specularMap=t(e,n,u,"linear"));break;case"map_bump":case"bump":h.normalMap||(h.normalMap=t(e,n,u));break;case"ns":h.shininess=parseFloat(u);break;case"d":(A=parseFloat(u))<1&&(h.alpha=A,h.alphaMode="blend");break;case"tr":(A=parseFloat(u))>0&&(h.alpha=1-A,h.alphaMode="blend")}d&&i(e,h)};function t(e,t,i,s){var r={},n=i.split(/\s+/),o=n.indexOf("-bm");return o>=0&&n.splice(o,2),(o=n.indexOf("-s"))>=0&&(r.scale=[parseFloat(n[o+1]),parseFloat(n[o+2])],n.splice(o,4)),(o=n.indexOf("-o"))>=0&&(r.translate=[parseFloat(n[o+1]),parseFloat(n[o+2])],n.splice(o,4)),r.src=t+n.join(" ").trim(),r.flipY=!0,r.encoding=s||"linear",new On(e,r).id}function i(e,t){new Ni(e,t)}function s(t){var i=t.split(e,3);return[parseFloat(i[0]),parseFloat(i[1]),parseFloat(i[2])]}}();function BE(e,t){for(var i=0,s=t.objects.length;i0&&(o.normals=n.normals),n.uv.length>0&&(o.uv=n.uv);for(var a=new Array(o.positions.length/3),l=0;l0&&void 0!==arguments[0]?arguments[0]:{};t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id);var i=new wn(this.viewer.scene,le.apply(t,{isModel:!0})),s=i.id,r=t.src;if(!r)return this.error("load() param expected: src"),i;if(t.metaModelSrc){var n=t.metaModelSrc;le.loadJSON(n,(function(n){e.viewer.metaScene.createMetaModel(s,n),e._sceneGraphLoader.load(i,r,t)}),(function(t){e.error("load(): Failed to load model modelMetadata for model '".concat(s," from '").concat(n,"' - ").concat(t))}))}else this._sceneGraphLoader.load(i,r,t);return i.once("destroyed",(function(){e.viewer.metaScene.destroyMetaModel(s)})),i}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this)}}]),i}(),CE=new Float64Array([0,0,1]),ME=new Float64Array(4),EE=function(){function e(t){x(this,e),this.id=null,this._viewer=t.viewer,this._visible=!1,this._pos=$.vec3(),this._origin=$.vec3(),this._rtcPos=$.vec3(),this._baseDir=$.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}return C(e,[{key:"_setSectionPlane",value:function(e){var t=this;this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(function(){t._setPos(t._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(function(){t._ignoreNextSectionPlaneDirUpdate?t._ignoreNextSectionPlaneDirUpdate=!1:t._setDir(t._sectionPlane.dir)})))}},{key:"sectionPlane",get:function(){return this._sectionPlane}},{key:"_setPos",value:function(e){this._pos.set(e),Re(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}},{key:"_setDir",value:function(e){this._baseDir.set(e),this._rootNode.quaternion=$.vec3PairToQuaternion(CE,e,ME)}},{key:"_setSectionPlaneDir",value:function(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}},{key:"getVisible",value:function(){return this._visible}},{key:"setCulled",value:function(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}},{key:"_createNodes",value:function(){var e=!1,t=this._viewer.scene,i=.01;this._rootNode=new wn(t,{position:[0,0,0],scale:[5,5,5],isObject:!1});var s,r,n=this._rootNode,o={arrowHead:new Ti(n,an({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new Ti(n,an({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),arrowHeadHandle:new Ti(n,an({radiusTop:.09,radiusBottom:.09,radialSegments:8,heightSegments:1,height:.37,openEnded:!1})),curve:new Ti(n,Yn({radius:.8,tube:i,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),curveHandle:new Ti(n,Yn({radius:.8,tube:.06,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),hoop:new Ti(n,Yn({radius:.8,tube:i,radialSegments:64,tubeSegments:8,arc:2*Math.PI})),axis:new Ti(n,an({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1})),axisHandle:new Ti(n,an({radiusTop:.08,radiusBottom:.08,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},a={pickable:new Ni(n,{diffuse:[1,1,0],alpha:0,alphaMode:"blend"}),red:new Ni(n,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new Vi(n,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6}),green:new Ni(n,{diffuse:[0,1,0],emissive:[0,1,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightGreen:new Vi(n,{edges:!1,fill:!0,fillColor:[0,1,0],fillAlpha:.6}),blue:new Ni(n,{diffuse:[0,0,1],emissive:[0,0,1],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightBlue:new Vi(n,{edges:!1,fill:!0,fillColor:[0,0,1],fillAlpha:.2}),center:new Ni(n,{diffuse:[0,0,0],emissive:[0,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80}),highlightBall:new Vi(n,{edges:!1,fill:!0,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1}),highlightPlane:new Vi(n,{edges:!0,edgeWidth:3,fill:!1,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1})};this._displayMeshes={plane:n.addChild(new nn(n,{geometry:new Ti(n,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Ni(n,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,ghostMaterial:new Vi(n,{edges:!1,filled:!0,fillColor:[1,1,0],edgeColor:[0,0,0],fillAlpha:.1,backfaces:!0}),pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1],isObject:!1}),e),planeFrame:n.addChild(new nn(n,{geometry:new Ti(n,Yn({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ni(n,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),highlightMaterial:new Vi(n,{edges:!1,edgeColor:[0,0,0],filled:!0,fillColor:[.8,.8,.8],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45],isObject:!1}),e),xCurve:n.addChild(new nn(n,{geometry:o.curve,material:a.red,matrix:(s=$.rotationMat4v(90*$.DEGTORAD,[0,1,0],$.identityMat4()),r=$.rotationMat4v(270*$.DEGTORAD,[1,0,0],$.identityMat4()),$.mulMat4(r,s,$.identityMat4())),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveHandle:n.addChild(new nn(n,{geometry:o.curveHandle,material:a.pickable,matrix:function(){var e=$.rotationMat4v(90*$.DEGTORAD,[0,1,0],$.identityMat4()),t=$.rotationMat4v(270*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveArrow1:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.red,matrix:function(){var e=$.translateMat4c(0,-.07,-.8,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(0*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xCurveArrow2:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.red,matrix:function(){var e=$.translateMat4c(0,-.8,-.07,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurve:n.addChild(new nn(n,{geometry:o.curve,material:a.green,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveHandle:n.addChild(new nn(n,{geometry:o.curveHandle,material:a.pickable,rotation:[-90,0,0],pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveArrow1:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.green,matrix:function(){var e=$.translateMat4c(.07,0,-.8,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurveArrow2:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.green,matrix:function(){var e=$.translateMat4c(.8,0,-.07,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurve:n.addChild(new nn(n,{geometry:o.curve,material:a.blue,matrix:$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4()),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveHandle:n.addChild(new nn(n,{geometry:o.curveHandle,material:a.pickable,matrix:$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4()),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveCurveArrow1:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.blue,matrix:function(){var e=$.translateMat4c(.8,-.07,0,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4());return $.mulMat4(e,t,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveArrow2:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.blue,matrix:function(){var e=$.translateMat4c(.05,-.8,0,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),center:n.addChild(new nn(n,{geometry:new Ti(n,ln({radius:.05})),material:a.center,pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.red,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrowHandle:n.addChild(new nn(n,{geometry:o.arrowHeadHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxis:n.addChild(new nn(n,{geometry:o.axis,material:a.red,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisHandle:n.addChild(new nn(n,{geometry:o.axisHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.green,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrowHandle:n.addChild(new nn(n,{geometry:o.arrowHeadHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,opacity:.2,isObject:!1}),e),yShaft:n.addChild(new nn(n,{geometry:o.axis,material:a.green,position:[0,-.5,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yShaftHandle:n.addChild(new nn(n,{geometry:o.axisHandle,material:a.pickable,position:[0,-.5,0],pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.blue,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrowHandle:n.addChild(new nn(n,{geometry:o.arrowHeadHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zShaft:n.addChild(new nn(n,{geometry:o.axis,material:a.blue,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1,isObject:!1}),e),zAxisHandle:n.addChild(new nn(n,{geometry:o.axisHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),clippable:!1,pickable:!0,collidable:!0,visible:!1,isObject:!1}),e)},this._affordanceMeshes={planeFrame:n.addChild(new nn(n,{geometry:new Ti(n,Yn({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ni(n,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new Vi(n,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45],isObject:!1}),e),xHoop:n.addChild(new nn(n,{geometry:o.hoop,material:a.red,highlighted:!0,highlightMaterial:a.highlightRed,matrix:function(){var e=$.rotationMat4v(90*$.DEGTORAD,[0,1,0],$.identityMat4()),t=$.rotationMat4v(270*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yHoop:n.addChild(new nn(n,{geometry:o.hoop,material:a.green,highlighted:!0,highlightMaterial:a.highlightGreen,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zHoop:n.addChild(new nn(n,{geometry:o.hoop,material:a.blue,highlighted:!0,highlightMaterial:a.highlightBlue,matrix:$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4()),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHeadBig,material:a.red,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHeadBig,material:a.green,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHeadBig,material:a.blue,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e)}}},{key:"_bindEvents",value:function(){var e=this,t=this,i=!1,s=-1,r=0,n=1,o=2,a=3,l=4,u=5,A=this._rootNode,c=null,h=null,d=$.vec2(),p=$.vec3([1,0,0]),f=$.vec3([0,1,0]),v=$.vec3([0,0,1]),g=this._viewer.scene.canvas.canvas,m=this._viewer.camera,_=this._viewer.scene,y=$.vec3([0,0,0]),b=-1;this._onCameraViewMatrix=_.camera.on("viewMatrix",(function(){})),this._onCameraProjMatrix=_.camera.on("projMatrix",(function(){})),this._onSceneTick=_.on("tick",(function(){var t=Math.abs($.lenVec3($.subVec3(_.camera.eye,e._pos,y)));if(t!==b&&"perspective"===m.projection){var i=.07*(Math.tan(m.perspective.fov*$.DEGTORAD)*t);A.scale=[i,i,i],b=t}if("ortho"===m.projection){var s=m.ortho.scale/10;A.scale=[s,s,s],b=t}}));var w,B,x,P,C,M=function(){var e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),E=function(){var e=$.mat4();return function(i,s){return $.quaternionToMat4(t._rootNode.quaternion,e),$.transformVec3(e,i,s),$.normalizeVec3(s),s}}(),F=(w=$.vec3(),function(e){var t=Math.abs(e[0]);return t>Math.abs(e[1])&&t>Math.abs(e[2])?$.cross3Vec3(e,[0,1,0],w):$.cross3Vec3(e,[1,0,0],w),$.cross3Vec3(w,e,w),$.normalizeVec3(w),w}),k=(B=$.vec3(),x=$.vec3(),P=$.vec4(),function(e,i,s){E(e,P);var r=F(P,i,s);D(i,r,B),D(s,r,x),$.subVec3(x,B);var n=$.dotVec3(x,P);t._pos[0]+=P[0]*n,t._pos[1]+=P[1]*n,t._pos[2]+=P[2]*n,t._rootNode.position=t._pos,t._sectionPlane&&(t._sectionPlane.pos=t._pos)}),I=function(){var e=$.vec4(),i=$.vec4(),s=$.vec4(),r=$.vec4();return function(n,o,a){if(E(n,r),!(D(o,r,e)&&D(a,r,i))){var l=F(r,o,a);D(o,l,e,1),D(a,l,i,1);var u=$.dotVec3(e,r);e[0]-=u*r[0],e[1]-=u*r[1],e[2]-=u*r[2],u=$.dotVec3(i,r),i[0]-=u*r[0],i[1]-=u*r[1],i[2]-=u*r[2]}$.normalizeVec3(e),$.normalizeVec3(i),u=$.dotVec3(e,i),u=$.clamp(u,-1,1);var A=Math.acos(u)*$.RADTODEG;$.cross3Vec3(e,i,s),$.dotVec3(s,r)<0&&(A=-A),t._rootNode.rotate(n,A),S()}}(),D=function(){var e=$.vec4([0,0,0,1]),i=$.mat4();return function(s,r,n,o){o=o||0,e[0]=s[0]/g.width*2-1,e[1]=-(s[1]/g.height*2-1),e[2]=0,e[3]=1,$.mulMat4(m.projMatrix,m.viewMatrix,i),$.inverseMat4(i),$.transformVec4(i,e,e),$.mulVec4Scalar(e,1/e[3]);var a=m.eye;$.subVec4(e,a,e);var l=t._sectionPlane.pos,u=-$.dotVec3(l,r)-o,A=$.dotVec3(r,e);if(Math.abs(A)>.005){var c=-($.dotVec3(r,a)+u)/A;return $.mulVec3Scalar(e,c,n),$.addVec3(n,a),$.subVec3(n,l,n),!0}return!1}}(),S=function(){var e=$.vec3(),i=$.mat4();return function(){t.sectionPlane&&($.quaternionToMat4(A.quaternion,i),$.transformVec3(i,[0,0,1],e),t._setSectionPlaneDir(e))}}(),T=!1;this._onCameraControlHover=this._viewer.cameraControl.on("hoverEnter",(function(t){if(e._visible&&!T){var A;switch(i=!1,C&&(C.visible=!1),t.entity.id){case e._displayMeshes.xAxisArrowHandle.id:case e._displayMeshes.xAxisHandle.id:A=e._affordanceMeshes.xAxisArrow,c=r;break;case e._displayMeshes.yAxisArrowHandle.id:case e._displayMeshes.yShaftHandle.id:A=e._affordanceMeshes.yAxisArrow,c=n;break;case e._displayMeshes.zAxisArrowHandle.id:case e._displayMeshes.zAxisHandle.id:A=e._affordanceMeshes.zAxisArrow,c=o;break;case e._displayMeshes.xCurveHandle.id:A=e._affordanceMeshes.xHoop,c=a;break;case e._displayMeshes.yCurveHandle.id:A=e._affordanceMeshes.yHoop,c=l;break;case e._displayMeshes.zCurveHandle.id:A=e._affordanceMeshes.zHoop,c=u;break;default:return void(c=s)}A&&(A.visible=!0),C=A,i=!0}})),this._onCameraControlHoverLeave=this._viewer.cameraControl.on("hoverOutEntity",(function(t){e._visible&&(C&&(C.visible=!1),C=null,c=s)})),g.addEventListener("mousedown",this._canvasMouseDownListener=function(t){if(t.preventDefault(),e._visible&&i&&(e._viewer.cameraControl.pointerEnabled=!1,1===t.which)){T=!0;var s=M(t);h=c,d[0]=s[0],d[1]=s[1]}}),g.addEventListener("mousemove",this._canvasMouseMoveListener=function(t){if(e._visible&&T){var i=M(t),s=i[0],A=i[1];switch(h){case r:k(p,d,i);break;case n:k(f,d,i);break;case o:k(v,d,i);break;case a:I(p,d,i);break;case l:I(f,d,i);break;case u:I(v,d,i)}d[0]=s,d[1]=A}}),g.addEventListener("mouseup",this._canvasMouseUpListener=function(t){e._visible&&(e._viewer.cameraControl.pointerEnabled=!0,T&&(t.which,T=!1,i=!1))}),g.addEventListener("wheel",this._canvasWheelListener=function(t){if(e._visible)Math.max(-1,Math.min(1,40*-t.deltaY))})}},{key:"_destroy",value:function(){this._unbindEvents(),this._destroyNodes()}},{key:"_unbindEvents",value:function(){var e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=e.cameraControl;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix),r.off(this._onCameraControlHover),r.off(this._onCameraControlHoverLeave)}},{key:"_destroyNodes",value:function(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}]),e}(),FE=function(){function e(t,i,s){var r=this;x(this,e),this.id=s.id,this._sectionPlane=s,this._mesh=new nn(i,{id:s.id,geometry:new Ti(i,Li({xSize:.5,ySize:.5,zSize:.001})),material:new Ni(i,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new ji(i,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new Vi(i,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new Vi(i,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});var n=$.vec3([0,0,0]),o=$.vec3(),a=$.vec3([0,0,1]),l=$.vec4(4),u=$.vec3(),A=function(){var e=r._sectionPlane.scene.center,t=[-r._sectionPlane.dir[0],-r._sectionPlane.dir[1],-r._sectionPlane.dir[2]];$.subVec3(e,r._sectionPlane.pos,n);var i=-$.dotVec3(t,n);$.normalizeVec3(t),$.mulVec3Scalar(t,i,o);var s=$.vec3PairToQuaternion(a,r._sectionPlane.dir,l);u[0]=.1*o[0],u[1]=.1*o[1],u[2]=.1*o[2],r._mesh.quaternion=s,r._mesh.position=u};this._onSectionPlanePos=this._sectionPlane.on("pos",A),this._onSectionPlaneDir=this._sectionPlane.on("dir",A),this._highlighted=!1,this._selected=!1}return C(e,[{key:"setHighlighted",value:function(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}},{key:"getHighlighted",value:function(){return this._highlighted}},{key:"setSelected",value:function(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}},{key:"getSelected",value:function(){return this._selected}},{key:"destroy",value:function(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}]),e}(),kE=function(){function e(t,i){var s=this;if(x(this,e),!(i.onHoverEnterPlane&&i.onHoverLeavePlane&&i.onClickedNothing&&i.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=t,this._viewer=t.viewer,this._onHoverEnterPlane=i.onHoverEnterPlane,this._onHoverLeavePlane=i.onHoverLeavePlane,this._onClickedNothing=i.onClickedNothing,this._onClickedPlane=i.onClickedPlane,this._visible=!0,this._planes={},this._canvas=i.overviewCanvas,this._scene=new $i(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new bi(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new bi(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new bi(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;var r=this._scene.camera,n=$.rotationMat4c(-90*$.DEGTORAD,1,0,0),o=$.vec3(),a=$.vec3(),l=$.vec3();this._synchCamera=function(){var e=s._viewer.camera.eye,t=s._viewer.camera.look,i=s._viewer.camera.up;$.mulVec3Scalar($.normalizeVec3($.subVec3(e,t,o)),7),s._zUp?($.transformVec3(n,o,a),$.transformVec3(n,i,l),r.look=[0,0,0],r.eye=$.transformVec3(n,o,a),r.up=$.transformPoint3(n,i,l)):(r.look=[0,0,0],r.eye=o,r.up=i)},this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(function(e){s._scene.camera.perspective.fov=e}));var u=null;this._onInputMouseMove=this._scene.input.on("mousemove",(function(e){var t=s._scene.pick({canvasPos:e});if(t){if(!u||t.entity.id!==u.id){if(u)s._planes[u.id]&&s._onHoverLeavePlane(u.id);u=t.entity,s._planes[u.id]&&s._onHoverEnterPlane(u.id)}}else u&&(s._onHoverLeavePlane(u.id),u=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=function(){u?s._planes[u.id]&&s._onClickedPlane(u.id):s._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=function(){u&&(s._onHoverLeavePlane(u.id),u=null)}),this.setVisible(i.overviewVisible)}return C(e,[{key:"addSectionPlane",value:function(e){this._planes[e.id]=new FE(this,this._scene,e)}},{key:"setPlaneHighlighted",value:function(e,t){var i=this._planes[e];i&&i.setHighlighted(t)}},{key:"setPlaneSelected",value:function(e,t){var i=this._planes[e];i&&i.setSelected(t)}},{key:"removeSectionPlane",value:function(e){var t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}},{key:"getVisible",value:function(){return this._visible}},{key:"destroy",value:function(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}]),e}(),IE=$.AABB3(),DE=$.vec3(),SE=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,"SectionPlanes",e))._freeControls=[],s._sectionPlanes=e.scene.sectionPlanes,s._controls={},s._shownControlId=null,null!==r.overviewCanvasId&&void 0!==r.overviewCanvasId){var n=document.getElementById(r.overviewCanvasId);n?s._overview=new kE(b(s),{overviewCanvas:n,visible:r.overviewVisible,onHoverEnterPlane:function(e){s._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:function(e){s._overview.setPlaneHighlighted(e,!1)},onClickedPlane:function(e){if(s.getShownControl()!==e){s.showControl(e);var t=s.sectionPlanes[e].pos;IE.set(s.viewer.scene.aabb),$.getAABB3Center(IE,DE),IE[0]+=t[0]-DE[0],IE[1]+=t[1]-DE[1],IE[2]+=t[2]-DE[2],IE[3]+=t[0]-DE[0],IE[4]+=t[1]-DE[1],IE[5]+=t[2]-DE[2],s.viewer.cameraFlight.flyTo({aabb:IE,fitFOV:65})}else s.hideControl()},onClickedNothing:function(){s.hideControl()}}):s.warn("Can't find overview canvas: '"+r.overviewCanvasId+"' - will create plugin without overview")}return s._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(function(e){s._sectionPlaneCreated(e)})),s}return C(i,[{key:"setOverviewVisible",value:function(e){this._overview&&this._overview.setVisible(e)}},{key:"getOverviewVisible",value:function(){if(this._overview)return this._overview.getVisible()}},{key:"sectionPlanes",get:function(){return this._sectionPlanes}},{key:"createSectionPlane",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);var t=new hn(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0});return t}},{key:"_sectionPlaneCreated",value:function(e){var t=this,i=this._freeControls.length>0?this._freeControls.pop():new EE(this);i._setSectionPlane(e),i.setVisible(!1),this._controls[e.id]=i,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(function(){t._sectionPlaneDestroyed(e)}))}},{key:"flipSectionPlanes",value:function(){var e=this.viewer.scene.sectionPlanes;for(var t in e){e[t].flipDir()}}},{key:"showControl",value:function(e){var t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}},{key:"getShownControl",value:function(){return this._shownControlId}},{key:"hideControl",value:function(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}},{key:"destroySectionPlane",value:function(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}},{key:"_sectionPlaneDestroyed",value:function(e){this._overview&&this._overview.removeSectionPlane(e);var t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}},{key:"clear",value:function(){for(var e=Object.keys(this._sectionPlanes),t=0,i=e.length;t1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"StoreyViews",e))._objectsMemento=new Ad,s._cameraMemento=new od,s.storeys={},s.modelStoreys={},s._fitStoreyMaps=!!r.fitStoreyMaps,s._onModelLoaded=s.viewer.scene.on("modelLoaded",(function(e){s._registerModelStoreys(e),s.fire("storeys",s.storeys)})),s}return C(i,[{key:"_registerModelStoreys",value:function(e){var t=this,i=this.viewer,s=i.scene,r=i.metaScene,n=r.metaModels[e],o=s.models[e];if(n&&n.rootMetaObjects)for(var a=n.rootMetaObjects,l=0,u=a.length;l.5?p.length:0,g=new TE(this,o.aabb,f,e,d,v);g._onModelDestroyed=o.once("destroyed",(function(){t._deregisterModelStoreys(e),t.fire("storeys",t.storeys)})),this.storeys[d]=g,this.modelStoreys[e]||(this.modelStoreys[e]={}),this.modelStoreys[e][d]=g}}},{key:"_deregisterModelStoreys",value:function(e){var t=this.modelStoreys[e];if(t){var i=this.viewer.scene;for(var s in t)if(t.hasOwnProperty(s)){var r=t[s],n=i.models[r.modelId];n&&n.off(r._onModelDestroyed),delete this.storeys[s]}delete this.modelStoreys[e]}}},{key:"fitStoreyMaps",get:function(){return this._fitStoreyMaps}},{key:"gotoStoreyCamera",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),void(t.done&&t.done());var s=this.viewer,r=s.scene,n=r.camera,o=i.storeyAABB;if(o[3]1&&void 0!==arguments[1]?arguments[1]:{},i=this.storeys[e];if(i){var s=this.viewer,r=s.scene,n=s.metaScene,o=n.metaObjects[e];o&&(t.hideOthers&&r.setObjectsVisible(s.scene.visibleObjectIds,!1),this.withStoreyObjects(e,(function(e,t){e&&(e.visible=!0)})))}else this.error("IfcBuildingStorey not found with this ID: "+e)}},{key:"withStoreyObjects",value:function(e,t){var i=this.viewer,s=i.scene,r=i.metaScene,n=r.metaObjects[e];if(n)for(var o=n.getObjectIDsInSubtree(),a=0,l=o.length;a1&&void 0!==arguments[1]?arguments[1]:{},i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),OE;var s,r,n=this.viewer,o=n.scene,a=t.format||"png",l=this._fitStoreyMaps?i.storeyAABB:i.modelAABB,u=Math.abs((l[5]-l[2])/(l[3]-l[0])),A=t.padding||0;t.width&&t.height?(s=t.width,r=t.height):t.height?(r=t.height,s=Math.round(r/u)):t.width?(s=t.width,r=Math.round(s*u)):(s=300,r=Math.round(s*u)),this._objectsMemento.saveObjects(o),this._cameraMemento.saveCamera(o),this.showStoreyObjects(e,le.apply(t,{hideOthers:!0})),this._arrangeStoreyMapCamera(i);var c=n.getSnapshot({width:s,height:r,format:a});return this._objectsMemento.restoreObjects(o),this._cameraMemento.restoreCamera(o),new LE(e,c,a,s,r,A)}},{key:"_arrangeStoreyMapCamera",value:function(e){var t=this.viewer,i=t.scene.camera,s=this._fitStoreyMaps?e.storeyAABB:e.modelAABB,r=$.getAABB3Center(s),n=RE;n[0]=r[0]+.5*i.worldUp[0],n[1]=r[1]+.5*i.worldUp[1],n[2]=r[2]+.5*i.worldUp[2];var o=i.worldForward;t.cameraFlight.jumpTo({eye:n,look:r,up:o});var a=(s[3]-s[0])/2,l=(s[4]-s[1])/2,u=(s[5]-s[2])/2,A=-a,c=+a,h=-l,d=+l,p=-u,f=+u;t.camera.customProjection.matrix=$.orthoMat4c(A,c,p,f,h,d,UE),t.camera.projection="customProjection"}},{key:"pickStoreyMap",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=e.storeyId,r=this.storeys[s];if(!r)return this.error("IfcBuildingStorey not found with this ID: "+s),null;var n=1-t[0]/e.width,o=1-t[1]/e.height,a=this._fitStoreyMaps?r.storeyAABB:r.modelAABB,l=a[0],u=a[1],A=a[2],c=a[3],h=a[4],d=a[5],p=c-l,f=h-u,v=d-A,g=$.vec3([l+p*n,u+.5*f,A+v*o]),m=$.vec3([0,-1,0]),_=$.addVec3(g,m,RE),y=this.viewer.camera.worldForward,b=$.lookAtMat4v(g,_,y,UE),w=this.viewer.scene.pick({pickSurface:i.pickSurface,pickInvisible:!0,matrix:b});return w}},{key:"storeyMapToWorldPos",value:function(e,t){var i=e.storeyId,s=this.storeys[i];if(!s)return this.error("IfcBuildingStorey not found with this ID: "+i),null;var r=1-t[0]/e.width,n=1-t[1]/e.height,o=this._fitStoreyMaps?s.storeyAABB:s.modelAABB,a=o[0],l=o[1],u=o[2],A=o[3],c=o[4],h=o[5],d=A-a,p=c-l,f=h-u,v=$.vec3([a+d*r,l+.5*p,u+f*n]);return v}},{key:"getStoreyContainingWorldPos",value:function(e){for(var t in this.storeys){var i=this.storeys[t];if($.point3AABB3Intersect(i.storeyAABB,e))return t}return null}},{key:"worldPosToStoreyMap",value:function(e,t,i){var s=e.storeyId,r=this.storeys[s];if(!r)return this.error("IfcBuildingStorey not found with this ID: "+s),!1;var n=this._fitStoreyMaps?r.storeyAABB:r.modelAABB,o=n[0],a=n[1],l=n[2],u=n[3]-o,A=n[4]-a,c=n[5]-l,h=this.viewer.camera.worldUp,d=h[0]>h[1]&&h[0]>h[2],p=!d&&h[1]>h[0]&&h[1]>h[2];!d&&!p&&h[2]>h[0]&&(h[2],h[1]);var f=e.width/u,v=p?e.height/c:e.height/A;return i[0]=Math.floor(e.width-(t[0]-o)*f),i[1]=Math.floor(e.height-(t[2]-l)*v),i[0]>=0&&i[0]=0&&i[1]<=e.height}},{key:"worldDirToStoreyMap",value:function(e,t,i){var s=this.viewer.camera,r=s.eye,n=s.look,o=$.subVec3(n,r,RE),a=s.worldUp,l=a[0]>a[1]&&a[0]>a[2],u=!l&&a[1]>a[0]&&a[1]>a[2];!l&&!u&&a[2]>a[0]&&(a[2],a[1]),l?(i[0]=o[1],i[1]=o[2]):u?(i[0]=o[0],i[1]=o[2]):(i[0]=o[0],i[1]=o[1]),$.normalizeVec2(i)}},{key:"destroy",value:function(){this.viewer.scene.off(this._onModelLoaded),f(w(i.prototype),"destroy",this).call(this)}}]),i}(),QE=new Float64Array([0,0,1]),VE=new Float64Array(4),HE=function(){function e(t){x(this,e),this.id=null,this._viewer=t.viewer,this._plugin=t,this._visible=!1,this._pos=$.vec3(),this._origin=$.vec3(),this._rtcPos=$.vec3(),this._baseDir=$.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}return C(e,[{key:"_setSectionPlane",value:function(e){var t=this;this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(function(){t._setPos(t._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(function(){t._ignoreNextSectionPlaneDirUpdate?t._ignoreNextSectionPlaneDirUpdate=!1:t._setDir(t._sectionPlane.dir)})))}},{key:"sectionPlane",get:function(){return this._sectionPlane}},{key:"_setPos",value:function(e){this._pos.set(e),Re(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}},{key:"_setDir",value:function(e){this._baseDir.set(e),this._rootNode.quaternion=$.vec3PairToQuaternion(QE,e,VE)}},{key:"_setSectionPlaneDir",value:function(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}},{key:"getVisible",value:function(){return this._visible}},{key:"setCulled",value:function(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}},{key:"_createNodes",value:function(){var e=!1,t=this._viewer.scene,i=.01;this._rootNode=new wn(t,{position:[0,0,0],scale:[5,5,5]});var s=this._rootNode,r={arrowHead:new Ti(s,an({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new Ti(s,an({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),axis:new Ti(s,an({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},n={red:new Ni(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),green:new Ni(s,{diffuse:[0,1,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),blue:new Ni(s,{diffuse:[0,0,1],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new Vi(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6})};this._displayMeshes={plane:s.addChild(new nn(s,{geometry:new Ti(s,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Ni(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1]}),e),planeFrame:s.addChild(new nn(s,{geometry:new Ti(s,Yn({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ni(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45]}),e),center:s.addChild(new nn(s,{geometry:new Ti(s,ln({radius:.05})),material:n.center,pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zAxisArrow:s.addChild(new nn(s,{geometry:r.arrowHead,material:n.blue,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zShaft:s.addChild(new nn(s,{geometry:r.axis,material:n.blue,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new nn(s,{geometry:new Ti(s,Yn({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ni(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new Vi(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45]}),e),zAxisArrow:s.addChild(new nn(s,{geometry:r.arrowHeadBig,material:n.blue,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e)}}},{key:"_bindEvents",value:function(){var e=this,t=this._rootNode,i=$.vec2(),s=this._viewer.camera,r=this._viewer.scene,n=0,o=!1,a=$.vec3([0,0,0]),l=-1;this._onCameraViewMatrix=r.camera.on("viewMatrix",(function(){})),this._onCameraProjMatrix=r.camera.on("projMatrix",(function(){})),this._onSceneTick=r.on("tick",(function(){o=!1;var i=Math.abs($.lenVec3($.subVec3(r.camera.eye,e._pos,a)));if(i!==l&&"perspective"===s.projection){var u=.07*(Math.tan(s.perspective.fov*$.DEGTORAD)*i);t.scale=[u,u,u],l=i}if("ortho"===s.projection){var c=s.ortho.scale/10;t.scale=[c,c,c],l=i}0!==n&&(A(n),n=0)}));var u=function(){var e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),A=function(t){var i=e._sectionPlane.pos,s=e._sectionPlane.dir;$.addVec3(i,$.mulVec3Scalar(s,.1*t*e._plugin.getDragSensitivity(),$.vec3())),e._sectionPlane.pos=i},c=!1;this._plugin._controlElement.addEventListener("mousedown",this._canvasMouseDownListener=function(t){if(t.preventDefault(),e._visible&&(e._viewer.cameraControl.pointerEnabled=!1,1===t.which)){c=!0;var s=u(t);i[0]=s[0],i[1]=s[1]}}),this._plugin._controlElement.addEventListener("mousemove",this._canvasMouseMoveListener=function(t){if(e._visible&&c&&!o){var s=u(t),r=s[0],n=s[1];A(n-i[1]),i[0]=r,i[1]=n}}),this._plugin._controlElement.addEventListener("mouseup",this._canvasMouseUpListener=function(t){e._visible&&(e._viewer.cameraControl.pointerEnabled=!0,c&&(t.which,c=!1))}),this._plugin._controlElement.addEventListener("wheel",this._canvasWheelListener=function(t){e._visible&&(n+=Math.max(-1,Math.min(1,40*-t.deltaY)))});var h,d,p=null;this._plugin._controlElement.addEventListener("touchstart",this._handleTouchStart=function(t){t.stopPropagation(),t.preventDefault(),e._visible&&(h=t.touches[0].clientY,p=h,n=0)}),this._plugin._controlElement.addEventListener("touchmove",this._handleTouchMove=function(t){t.stopPropagation(),t.preventDefault(),e._visible&&(o||(o=!0,d=t.touches[0].clientY,null!==p&&(n+=d-p),p=d))}),this._plugin._controlElement.addEventListener("touchend",this._handleTouchEnd=function(t){t.stopPropagation(),t.preventDefault(),e._visible&&(h=null,d=null,n=0)})}},{key:"_destroy",value:function(){this._unbindEvents(),this._destroyNodes()}},{key:"_unbindEvents",value:function(){var e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=this._plugin._controlElement;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),r.removeEventListener("touchstart",this._handleTouchStart),r.removeEventListener("touchmove",this._handleTouchMove),r.removeEventListener("touchend",this._handleTouchEnd),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix)}},{key:"_destroyNodes",value:function(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}]),e}(),jE=function(){function e(t,i,s){var r=this;x(this,e),this.id=s.id,this._sectionPlane=s,this._mesh=new nn(i,{id:s.id,geometry:new Ti(i,Li({xSize:.5,ySize:.5,zSize:.001})),material:new Ni(i,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new ji(i,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new Vi(i,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new Vi(i,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});var n=$.vec3([0,0,0]),o=$.vec3(),a=$.vec3([0,0,1]),l=$.vec4(4),u=$.vec3(),A=function(){var e=r._sectionPlane.scene.center,t=[-r._sectionPlane.dir[0],-r._sectionPlane.dir[1],-r._sectionPlane.dir[2]];$.subVec3(e,r._sectionPlane.pos,n);var i=-$.dotVec3(t,n);$.normalizeVec3(t),$.mulVec3Scalar(t,i,o);var s=$.vec3PairToQuaternion(a,r._sectionPlane.dir,l);u[0]=.1*o[0],u[1]=.1*o[1],u[2]=.1*o[2],r._mesh.quaternion=s,r._mesh.position=u};this._onSectionPlanePos=this._sectionPlane.on("pos",A),this._onSectionPlaneDir=this._sectionPlane.on("dir",A),this._highlighted=!1,this._selected=!1}return C(e,[{key:"setHighlighted",value:function(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}},{key:"getHighlighted",value:function(){return this._highlighted}},{key:"setSelected",value:function(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}},{key:"getSelected",value:function(){return this._selected}},{key:"destroy",value:function(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}]),e}(),GE=function(){function e(t,i){var s=this;if(x(this,e),!(i.onHoverEnterPlane&&i.onHoverLeavePlane&&i.onClickedNothing&&i.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=t,this._viewer=t.viewer,this._onHoverEnterPlane=i.onHoverEnterPlane,this._onHoverLeavePlane=i.onHoverLeavePlane,this._onClickedNothing=i.onClickedNothing,this._onClickedPlane=i.onClickedPlane,this._visible=!0,this._planes={},this._canvas=i.overviewCanvas,this._scene=new $i(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new bi(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new bi(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new bi(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;var r=this._scene.camera,n=$.rotationMat4c(-90*$.DEGTORAD,1,0,0),o=$.vec3(),a=$.vec3(),l=$.vec3();this._synchCamera=function(){var e=s._viewer.camera.eye,t=s._viewer.camera.look,i=s._viewer.camera.up;$.mulVec3Scalar($.normalizeVec3($.subVec3(e,t,o)),7),s._zUp?($.transformVec3(n,o,a),$.transformVec3(n,i,l),r.look=[0,0,0],r.eye=$.transformVec3(n,o,a),r.up=$.transformPoint3(n,i,l)):(r.look=[0,0,0],r.eye=o,r.up=i)},this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(function(e){s._scene.camera.perspective.fov=e}));var u=null;this._onInputMouseMove=this._scene.input.on("mousemove",(function(e){var t=s._scene.pick({canvasPos:e});if(t){if(!u||t.entity.id!==u.id){if(u)s._planes[u.id]&&s._onHoverLeavePlane(u.id);u=t.entity,s._planes[u.id]&&s._onHoverEnterPlane(u.id)}}else u&&(s._onHoverLeavePlane(u.id),u=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=function(){u?s._planes[u.id]&&s._onClickedPlane(u.id):s._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=function(){u&&(s._onHoverLeavePlane(u.id),u=null)}),this.setVisible(i.overviewVisible)}return C(e,[{key:"addSectionPlane",value:function(e){this._planes[e.id]=new jE(this,this._scene,e)}},{key:"setPlaneHighlighted",value:function(e,t){var i=this._planes[e];i&&i.setHighlighted(t)}},{key:"setPlaneSelected",value:function(e,t){var i=this._planes[e];i&&i.setSelected(t)}},{key:"removeSectionPlane",value:function(e){var t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}},{key:"getVisible",value:function(){return this._visible}},{key:"destroy",value:function(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}]),e}(),zE=$.AABB3(),WE=$.vec3(),KE=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,"FaceAlignedSectionPlanesPlugin",e))._freeControls=[],s._sectionPlanes=e.scene.sectionPlanes,s._controls={},s._shownControlId=null,s._dragSensitivity=r.dragSensitivity||1,null!==r.overviewCanvasId&&void 0!==r.overviewCanvasId){var n=document.getElementById(r.overviewCanvasId);n?s._overview=new GE(b(s),{overviewCanvas:n,visible:r.overviewVisible,onHoverEnterPlane:function(e){s._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:function(e){s._overview.setPlaneHighlighted(e,!1)},onClickedPlane:function(e){if(s.getShownControl()!==e){s.showControl(e);var t=s.sectionPlanes[e].pos;zE.set(s.viewer.scene.aabb),$.getAABB3Center(zE,WE),zE[0]+=t[0]-WE[0],zE[1]+=t[1]-WE[1],zE[2]+=t[2]-WE[2],zE[3]+=t[0]-WE[0],zE[4]+=t[1]-WE[1],zE[5]+=t[2]-WE[2],s.viewer.cameraFlight.flyTo({aabb:zE,fitFOV:65})}else s.hideControl()},onClickedNothing:function(){s.hideControl()}}):s.warn("Can't find overview canvas: '"+r.overviewCanvasId+"' - will create plugin without overview")}return null===r.controlElementId||void 0===r.controlElementId?s.error("Parameter expected: controlElementId"):(s._controlElement=document.getElementById(r.controlElementId),s._controlElement||s.warn("Can't find control element: '"+r.controlElementId+"' - will create plugin without control element")),s._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(function(e){s._sectionPlaneCreated(e)})),s}return C(i,[{key:"setDragSensitivity",value:function(e){this._dragSensitivity=e||1}},{key:"getDragSensitivity",value:function(){return this._dragSensitivity}},{key:"setOverviewVisible",value:function(e){this._overview&&this._overview.setVisible(e)}},{key:"getOverviewVisible",value:function(){if(this._overview)return this._overview.getVisible()}},{key:"sectionPlanes",get:function(){return this._sectionPlanes}},{key:"createSectionPlane",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);var t=new hn(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0});return t}},{key:"_sectionPlaneCreated",value:function(e){var t=this,i=this._freeControls.length>0?this._freeControls.pop():new HE(this);i._setSectionPlane(e),i.setVisible(!1),this._controls[e.id]=i,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(function(){t._sectionPlaneDestroyed(e)}))}},{key:"flipSectionPlanes",value:function(){var e=this.viewer.scene.sectionPlanes;for(var t in e){e[t].flipDir()}}},{key:"showControl",value:function(e){var t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}},{key:"getShownControl",value:function(){return this._shownControlId}},{key:"hideControl",value:function(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}},{key:"destroySectionPlane",value:function(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}},{key:"_sectionPlaneDestroyed",value:function(e){this._overview&&this._overview.removeSectionPlane(e);var t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}},{key:"clear",value:function(){for(var e=Object.keys(this._sectionPlanes),t=0,i=e.length;t>5&31)/31,o=(E>>10&31)/31):(r=l,n=u,o=A),(w&&r!==p||n!==f||o!==v)&&(null!==p&&(g=!0),p=r,f=n,v=o)}for(var F=1;F<=3;F++){var k=x+12*F;y.push(c.getFloat32(k,!0)),y.push(c.getFloat32(k+4,!0)),y.push(c.getFloat32(k+8,!0)),b.push(P,C,M),d&&a.push(r,n,o,1)}w&&g&&(tF(i,y,b,a,_,s),y=[],b=[],a=a?[]:null,g=!1)}y.length>0&&tF(i,y,b,a,_,s)}function eF(e,t,i,s){for(var r,n,o,a,l,u,A,c=/facet([\s\S]*?)endfacet/g,h=0,d=/[\s]+([+-]?(?:\d+.\d+|\d+.|\d+|.\d+)(?:[eE][+-]?\d+)?)/.source,p=new RegExp("vertex"+d+d+d,"g"),f=new RegExp("normal"+d+d+d,"g"),v=[],g=[];null!==(a=c.exec(t));){for(l=0,u=0,A=a[0];null!==(a=f.exec(A));)r=parseFloat(a[1]),n=parseFloat(a[2]),o=parseFloat(a[3]),u++;for(;null!==(a=p.exec(A));)v.push(parseFloat(a[1]),parseFloat(a[2]),parseFloat(a[3])),g.push(r,n,o),l++;1!==u&&e.error("Error in normal of face "+h),3!==l&&e.error("Error in positions of face "+h),h++}tF(i,v,g,null,new Cn(i,{roughness:.5}),s)}function tF(e,t,i,s,r,n){for(var o=new Int32Array(t.length/3),a=0,l=o.length;a0?i:null,s=s&&s.length>0?s:null,n.smoothNormals&&$.faceToVertexNormals(t,i,n);var u=YE;Ue(t,t,u);var A=new Ti(e,{primitive:"triangles",positions:t,normals:i,colors:s,indices:o}),c=new nn(e,{origin:0!==u[0]||0!==u[1]||0!==u[2]?u:null,geometry:A,material:r,edges:n.edges});e.addChild(c)}function iF(e){return"string"!=typeof e?function(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);for(var t="",i=0,s=e.length;i1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"STLLoader",e,r))._sceneGraphLoader=new ZE,s.dataSource=r.dataSource,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new JE}},{key:"load",value:function(e){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new wn(this.viewer.scene,le.apply(e,{isModel:!0})),i=e.src,s=e.stl;return i||s?(i?this._sceneGraphLoader.load(this,t,i,e):this._sceneGraphLoader.parse(this,t,s,e),t):(this.error("load() param expected: either 'src' or 'stl'"),t)}}]),i}(),nF=function(){function e(){x(this,e)}return C(e,[{key:"createRootNode",value:function(){return document.createElement("ul")}},{key:"createNodeElement",value:function(e,t,i,s,r){var n=document.createElement("li");if(n.id=e.nodeId,e.xrayed&&n.classList.add("xrayed-node"),e.children.length>0){var o=document.createElement("a");o.href="#",o.id="switch-".concat(e.nodeId),o.textContent="+",o.classList.add("plus"),t&&o.addEventListener("click",t),n.appendChild(o)}var a=document.createElement("input");a.id="checkbox-".concat(e.nodeId),a.type="checkbox",a.checked=e.checked,a.style["pointer-events"]="all",i&&a.addEventListener("change",i),n.appendChild(a);var l=document.createElement("span");return l.textContent=e.title,n.appendChild(l),s&&(l.oncontextmenu=s),r&&(l.onclick=r),n}},{key:"createDisabledNodeElement",value:function(e){var t=document.createElement("li"),i=document.createElement("a");i.href="#",i.textContent="!",i.classList.add("warn"),i.classList.add("warning"),t.appendChild(i);var s=document.createElement("span");return s.textContent=e,t.appendChild(s),t}},{key:"addChildren",value:function(e,t){var i=document.createElement("ul");t.forEach((function(e){i.appendChild(e)})),e.parentElement.appendChild(i)}},{key:"expand",value:function(e,t,i){e.classList.remove("plus"),e.classList.add("minus"),e.textContent="-",e.removeEventListener("click",t),e.addEventListener("click",i)}},{key:"collapse",value:function(e,t,i){if(e){var s=e.parentElement;if(s){var r=s.querySelector("ul");r&&(s.removeChild(r),e.classList.remove("minus"),e.classList.add("plus"),e.textContent="+",e.removeEventListener("click",i),e.addEventListener("click",t))}}}},{key:"isExpanded",value:function(e){return void 0!==e.parentElement.getElementsByTagName("li")[0]}},{key:"getId",value:function(e){return e.parentElement.id}},{key:"getIdFromCheckbox",value:function(e){return e.id.replace("checkbox-","")}},{key:"getSwitchElement",value:function(e){return document.getElementById("switch-".concat(e))}},{key:"isChecked",value:function(e){return e.checked}},{key:"setCheckbox",value:function(e,t){var i=document.getElementById("checkbox-".concat(e));i&&t!==i.checked&&(i.checked=t)}},{key:"setXRayed",value:function(e,t){var i=document.getElementById(e);i&&(t?i.classList.add("xrayed-node"):i.classList.remove("xrayed-node"))}},{key:"setHighlighted",value:function(e,t){var i=document.getElementById(e);i&&(t?(i.scrollIntoView({block:"center"}),i.classList.add("highlighted-node")):i.classList.remove("highlighted-node"))}}]),e}(),oF=[],aF=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),(s=t.call(this,"TreeViewPlugin",e)).errors=[],s.valid=!0;var n=r.containerElement||document.getElementById(r.containerElementId);if(!(n instanceof HTMLElement))return s.error("Mandatory config expected: valid containerElementId or containerElement"),y(s);for(var o=0;;o++)if(!oF[o]){oF[o]=b(s),s._index=o,s._id="tree-".concat(o);break}if(s._containerElement=n,s._metaModels={},s._autoAddModels=!1!==r.autoAddModels,s._autoExpandDepth=r.autoExpandDepth||0,s._sortNodes=!1!==r.sortNodes,s._viewer=e,s._rootElement=null,s._muteSceneEvents=!1,s._muteTreeEvents=!1,s._rootNodes=[],s._objectNodes={},s._nodeNodes={},s._rootNames={},s._sortNodes=r.sortNodes,s._pruneEmptyNodes=r.pruneEmptyNodes,s._showListItemElementId=null,s._renderService=r.renderService||new nF,!s._renderService)throw new Error("TreeViewPlugin: no render service set");if(s._containerElement.oncontextmenu=function(e){e.preventDefault()},s._onObjectVisibility=s._viewer.scene.on("objectVisibility",(function(e){if(!s._muteSceneEvents){var t=e.id,i=s._objectNodes[t];if(i){var r=e.visible;if(r!==i.checked){s._muteTreeEvents=!0,i.checked=r,r?i.numVisibleEntities++:i.numVisibleEntities--,s._renderService.setCheckbox(i.nodeId,r);for(var n=i.parent;n;)n.checked=r,r?n.numVisibleEntities++:n.numVisibleEntities--,s._renderService.setCheckbox(n.nodeId,n.numVisibleEntities>0),n=n.parent;s._muteTreeEvents=!1}}}})),s._onObjectXrayed=s._viewer.scene.on("objectXRayed",(function(e){if(!s._muteSceneEvents){var t=e.id,i=s._objectNodes[t];if(i){s._muteTreeEvents=!0;var r=e.xrayed;r!==i.xrayed&&(i.xrayed=r,s._renderService.setXRayed(i.nodeId,r),s._muteTreeEvents=!1)}}})),s._switchExpandHandler=function(e){e.preventDefault(),e.stopPropagation();var t=e.target;s._expandSwitchElement(t)},s._switchCollapseHandler=function(e){e.preventDefault(),e.stopPropagation();var t=e.target;s._collapseSwitchElement(t)},s._checkboxChangeHandler=function(e){if(!s._muteTreeEvents){s._muteSceneEvents=!0;var t=e.target,i=s._renderService.isChecked(t),r=s._renderService.getIdFromCheckbox(t),n=s._nodeNodes[r],o=s._viewer.scene.objects,a=0;s._withNodeTree(n,(function(e){var t=e.objectId,r=o[t],n=0===e.children.length;e.numVisibleEntities=i?e.numEntities:0,n&&i!==e.checked&&a++,e.checked=i,s._renderService.setCheckbox(e.nodeId,i),r&&(r.visible=i)}));for(var l=n.parent;l;)l.checked=i,i?l.numVisibleEntities+=a:l.numVisibleEntities-=a,s._renderService.setCheckbox(l.nodeId,l.numVisibleEntities>0),l=l.parent;s._muteSceneEvents=!1}},s._hierarchy=r.hierarchy||"containment",s._autoExpandDepth=r.autoExpandDepth||0,s._autoAddModels){for(var a=Object.keys(s.viewer.metaScene.metaModels),l=0,u=a.length;l1&&void 0!==arguments[1]?arguments[1]:{};if(this._containerElement){var s=this.viewer.scene.models[e];if(!s)throw"Model not found: "+e;var r=this.viewer.metaScene.metaModels[e];r?this._metaModels[e]?this.warn("Model already added: "+e):(this._metaModels[e]=r,i&&i.rootName&&(this._rootNames[e]=i.rootName),s.on("destroyed",(function(){t.removeModel(s.id)})),this._createNodes()):this.error("MetaModel not found: "+e)}}},{key:"removeModel",value:function(e){this._containerElement&&(this._metaModels[e]&&(this._rootNames[e]&&delete this._rootNames[e],delete this._metaModels[e],this._createNodes()))}},{key:"showNode",value:function(e){this.unShowNode();var t=this._objectNodes[e];if(t){var i=t.nodeId,s=this._renderService.getSwitchElement(i);if(s)return this._expandSwitchElement(s),s.scrollIntoView(),!0;var r=[];r.unshift(t);for(var n=t.parent;n;)r.unshift(n),n=n.parent;for(var o=0,a=r.length;o0;return this.valid}},{key:"_validateMetaModelForStoreysHierarchy",value:function(){return!0}},{key:"_createEnabledNodes",value:function(){switch(this._pruneEmptyNodes&&this._findEmptyNodes(),this._hierarchy){case"storeys":this._createStoreysNodes(),0===this._rootNodes.length&&this.error("Failed to build storeys hierarchy");break;case"types":this._createTypesNodes();break;default:this._createContainmentNodes()}this._sortNodes&&this._doSortNodes(),this._synchNodesToEntities(),this._createTrees(),this.expandToDepth(this._autoExpandDepth)}},{key:"_createDisabledNodes",value:function(){var e=this._renderService.createRootNode();this._rootElement=e,this._containerElement.appendChild(e);var t=this._viewer.metaScene.rootMetaObjects;for(var i in t){var s=t[i],r=s.type,n=s.name,o=n&&""!==n&&"Undefined"!==n&&"Default"!==n?n:r,a=this._renderService.createDisabledNodeElement(o);e.appendChild(a)}}},{key:"_findEmptyNodes",value:function(){var e=this._viewer.metaScene.rootMetaObjects;for(var t in e)this._findEmptyNodes2(e[t])}},{key:"_findEmptyNodes2",value:function(e){var t=this.viewer,i=t.scene,s=e.children,r=e.id,n=i.objects[r];if(e._countEntities=0,n&&e._countEntities++,s)for(var o=0,a=s.length;or.aabb[n]?-1:e.aabb[n]s?1:0}},{key:"_synchNodesToEntities",value:function(){for(var e=Object.keys(this.viewer.metaScene.metaObjects),t=this._viewer.metaScene.metaObjects,i=this._viewer.scene.objects,s=0,r=e.length;s0){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"ViewCull",e))._objectCullStates=AF(e.scene),s._maxTreeDepth=r.maxTreeDepth||8,s._modelInfos={},s._frustum=new Me,s._kdRoot=null,s._frustumDirty=!1,s._kdTreeDirty=!1,s._onViewMatrix=e.scene.camera.on("viewMatrix",(function(){s._frustumDirty=!0})),s._onProjMatrix=e.scene.camera.on("projMatMatrix",(function(){s._frustumDirty=!0})),s._onModelLoaded=e.scene.on("modelLoaded",(function(e){var t=s.viewer.scene.models[e];t&&s._addModel(t)})),s._onSceneTick=e.scene.on("tick",(function(){s._doCull()})),s}return C(i,[{key:"enabled",get:function(){return this._enabled},set:function(e){this._enabled=e}},{key:"_addModel",value:function(e){var t=this,i={model:e,onDestroyed:e.on("destroyed",(function(){t._removeModel(e)}))};this._modelInfos[e.id]=i,this._kdTreeDirty=!0}},{key:"_removeModel",value:function(e){var t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._kdTreeDirty=!0)}},{key:"_doCull",value:function(){var e=this._frustumDirty||this._kdTreeDirty;if(this._frustumDirty&&this._buildFrustum(),this._kdTreeDirty&&this._buildKDTree(),e){var t=this._kdRoot;t&&this._visitKDNode(t)}}},{key:"_buildFrustum",value:function(){var e=this.viewer.scene.camera;Ee(this._frustum,e.viewMatrix,e.projMatrix),this._frustumDirty=!1}},{key:"_buildKDTree",value:function(){var e=this.viewer.scene;this._kdRoot,this._kdRoot={aabb:e.getAABB(),intersection:Me.INTERSECT};for(var t=0,i=this._objectCullStates.numObjects;t=this._maxTreeDepth)return e.objects=e.objects||[],e.objects.push(i),void $.expandAABB3(e.aabb,r);if(e.left&&$.containsAABB3(e.left.aabb,r))this._insertEntityIntoKDTree(e.left,t,i,s+1);else if(e.right&&$.containsAABB3(e.right.aabb,r))this._insertEntityIntoKDTree(e.right,t,i,s+1);else{var n=e.aabb;cF[0]=n[3]-n[0],cF[1]=n[4]-n[1],cF[2]=n[5]-n[2];var o=0;if(cF[1]>cF[o]&&(o=1),cF[2]>cF[o]&&(o=2),!e.left){var a=n.slice();if(a[o+3]=(n[o]+n[o+3])/2,e.left={aabb:a,intersection:Me.INTERSECT},$.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1)}if(!e.right){var l=n.slice();if(l[o]=(n[o]+n[o+3])/2,e.right={aabb:l,intersection:Me.INTERSECT},$.containsAABB3(l,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1)}e.objects=e.objects||[],e.objects.push(i),$.expandAABB3(e.aabb,r)}}},{key:"_visitKDNode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Me.INTERSECT;if(t===Me.INTERSECT||e.intersects!==t){t===Me.INTERSECT&&(t=Fe(this._frustum,e.aabb),e.intersects=t);var i=t===Me.OUTSIDE,s=e.objects;if(s&&s.length>0)for(var r=0,n=s.length;r=0;)e[t]=0}var i=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=new Array(576);t(o);var a=new Array(60);t(a);var l=new Array(512);t(l);var u=new Array(256);t(u);var A=new Array(29);t(A);var c,h,d,p=new Array(30);function f(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}function v(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(p);var g=function(e){return e<256?l[e]:l[256+(e>>>7)]},m=function(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},_=function(e,t,i){e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<>>=1,i<<=1}while(--t>0);return i>>>1},w=function(e,t,i){var s,r,n=new Array(16),o=0;for(s=1;s<=15;s++)o=o+i[s-1]<<1,n[s]=o;for(r=0;r<=t;r++){var a=e[2*r+1];0!==a&&(e[2*r]=b(n[a]++,a))}},x=function(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},P=function(e){e.bi_valid>8?m(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},C=function(e,t,i,s){var r=2*t,n=2*i;return e[r]>1;i>=1;i--)M(e,n,i);r=l;do{i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],M(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=s,n[2*r]=n[2*i]+n[2*s],e.depth[r]=(e.depth[i]>=e.depth[s]?e.depth[i]:e.depth[s])+1,n[2*i+1]=n[2*s+1]=r,e.heap[1]=r++,M(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var i,s,r,n,o,a,l=t.dyn_tree,u=t.max_code,A=t.stat_desc.static_tree,c=t.stat_desc.has_stree,h=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,f=0;for(n=0;n<=15;n++)e.bl_count[n]=0;for(l[2*e.heap[e.heap_max]+1]=0,i=e.heap_max+1;i<573;i++)(n=l[2*l[2*(s=e.heap[i])+1]+1]+1)>p&&(n=p,f++),l[2*s+1]=n,s>u||(e.bl_count[n]++,o=0,s>=d&&(o=h[s-d]),a=l[2*s],e.opt_len+=a*(n+o),c&&(e.static_len+=a*(A[2*s+1]+o)));if(0!==f){do{for(n=p-1;0===e.bl_count[n];)n--;e.bl_count[n]--,e.bl_count[n+1]+=2,e.bl_count[p]--,f-=2}while(f>0);for(n=p;0!==n;n--)for(s=e.bl_count[n];0!==s;)(r=e.heap[--i])>u||(l[2*r+1]!==n&&(e.opt_len+=(n-l[2*r+1])*l[2*r],l[2*r+1]=n),s--)}}(e,t),w(n,u,e.bl_count)},k=function(e,t,i){var s,r,n=-1,o=t[1],a=0,l=7,u=4;for(0===o&&(l=138,u=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=o,o=t[2*(s+1)+1],++a>=7;v<30;v++)for(p[v]=g<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),F(e,e.l_desc),F(e,e.d_desc),u=function(e){var t;for(k(e,e.dyn_ltree,e.l_desc.max_code),k(e,e.dyn_dtree,e.d_desc.max_code),F(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*n[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),r=e.opt_len+3+7>>>3,(l=e.static_len+3+7>>>3)<=r&&(r=l)):r=l=i+5,i+4<=r&&-1!==t?S(e,t,i,s):4===e.strategy||l===r?(_(e,2+(s?1:0),3),E(e,o,a)):(_(e,4+(s?1:0),3),function(e,t,i,s){var r;for(_(e,t-257,5),_(e,i-1,5),_(e,s-4,4),r=0;r>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(u[i]+256+1)]++,e.dyn_dtree[2*g(t)]++),e.sym_next===e.sym_end},O=function(e){_(e,2,3),y(e,256,o),function(e){16===e.bi_valid?(m(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)},N=function(e,t,i,s){for(var r=65535&e|0,n=e>>>16&65535|0,o=0;0!==i;){i-=o=i>2e3?2e3:i;do{n=n+(r=r+t[s++]|0)|0}while(--o);r%=65521,n%=65521}return r|n<<16|0},Q=new Uint32Array(function(){for(var e,t=[],i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}()),V=function(e,t,i,s){var r=Q,n=s+i;e^=-1;for(var o=s;o>>8^r[255&(e^t[o])];return-1^e},H={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},j={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},G=T,z=L,W=R,K=U,X=O,J=j.Z_NO_FLUSH,Y=j.Z_PARTIAL_FLUSH,Z=j.Z_FULL_FLUSH,q=j.Z_FINISH,$=j.Z_BLOCK,ee=j.Z_OK,te=j.Z_STREAM_END,ie=j.Z_STREAM_ERROR,se=j.Z_DATA_ERROR,re=j.Z_BUF_ERROR,ne=j.Z_DEFAULT_COMPRESSION,oe=j.Z_FILTERED,ae=j.Z_HUFFMAN_ONLY,le=j.Z_RLE,ue=j.Z_FIXED,Ae=j.Z_UNKNOWN,ce=j.Z_DEFLATED,he=258,de=262,pe=42,fe=113,ve=666,ge=function(e,t){return e.msg=H[t],t},me=function(e){return 2*e-(e>4?9:0)},_e=function(e){for(var t=e.length;--t>=0;)e[t]=0},ye=function(e){var t,i,s,r=e.w_size;s=t=e.hash_size;do{i=e.head[--s],e.head[s]=i>=r?i-r:0}while(--t);s=t=r;do{i=e.prev[--s],e.prev[s]=i>=r?i-r:0}while(--t)},be=function(e,t,i){return(t<e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Be=function(e,t){W(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,we(e.strm)},xe=function(e,t){e.pending_buf[e.pending++]=t},Pe=function(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Ce=function(e,t,i,s){var r=e.avail_in;return r>s&&(r=s),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=N(e.adler,t,r,i):2===e.state.wrap&&(e.adler=V(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},Me=function(e,t){var i,s,r=e.max_chain_length,n=e.strstart,o=e.prev_length,a=e.nice_match,l=e.strstart>e.w_size-de?e.strstart-(e.w_size-de):0,u=e.window,A=e.w_mask,c=e.prev,h=e.strstart+he,d=u[n+o-1],p=u[n+o];e.prev_length>=e.good_match&&(r>>=2),a>e.lookahead&&(a=e.lookahead);do{if(u[(i=t)+o]===p&&u[i+o-1]===d&&u[i]===u[n]&&u[++i]===u[n+1]){n+=2,i++;do{}while(u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&no){if(e.match_start=t,o=s,s>=a)break;d=u[n+o-1],p=u[n+o]}}}while((t=c[t&A])>l&&0!=--r);return o<=e.lookahead?o:e.lookahead},Ee=function(e){var t,i,s,r=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=r+(r-de)&&(e.window.set(e.window.subarray(r,r+r-i),0),e.match_start-=r,e.strstart-=r,e.block_start-=r,e.insert>e.strstart&&(e.insert=e.strstart),ye(e),i+=r),0===e.strm.avail_in)break;if(t=Ce(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=t,e.lookahead+e.insert>=3)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=be(e,e.ins_h,e.window[s+1]);e.insert&&(e.ins_h=be(e,e.ins_h,e.window[s+3-1]),e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookaheade.w_size?e.w_size:e.pending_buf_size-5,o=0,a=e.strm.avail_in;do{if(i=65535,r=e.bi_valid+42>>3,e.strm.avail_out(s=e.strstart-e.block_start)+e.strm.avail_in&&(i=s+e.strm.avail_in),i>r&&(i=r),i>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,we(e.strm),s&&(s>i&&(s=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,i-=s),i&&(Ce(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===o);return(a-=e.strm.avail_in)&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_waterr&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(Ce(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water>3,n=(r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r)>e.w_size?e.w_size:r,((s=e.strstart-e.block_start)>=n||(s||t===q)&&t!==J&&0===e.strm.avail_in&&s<=r)&&(i=s>r?r:s,o=t===q&&0===e.strm.avail_in&&i===s?1:0,z(e,e.block_start,i,o),e.block_start+=i,we(e.strm)),o?3:1)},ke=function(e,t){for(var i,s;;){if(e.lookahead=3&&(e.ins_h=be(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-de&&(e.match_length=Me(e,i)),e.match_length>=3)if(s=K(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=be(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=be(e,e.ins_h,e.window[e.strstart+1]);else s=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(Be(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===q?(Be(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Be(e,!1),0===e.strm.avail_out)?1:2},Ie=function(e,t){for(var i,s,r;;){if(e.lookahead=3&&(e.ins_h=be(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=K(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=be(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,s&&(Be(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((s=K(e,0,e.window[e.strstart-1]))&&Be(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=K(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===q?(Be(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Be(e,!1),0===e.strm.avail_out)?1:2};function De(e,t,i,s,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=s,this.func=r}var Se=[new De(0,0,0,0,Fe),new De(4,4,8,4,ke),new De(4,5,16,8,ke),new De(4,6,32,32,ke),new De(4,4,16,16,Ie),new De(8,16,32,32,Ie),new De(8,16,128,128,Ie),new De(8,32,128,256,Ie),new De(32,128,258,1024,Ie),new De(32,258,258,4096,Ie)];function Te(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ce,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),_e(this.dyn_ltree),_e(this.dyn_dtree),_e(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),_e(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),_e(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Le=function(e){if(!e)return 1;var t=e.state;return!t||t.strm!==e||t.status!==pe&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==fe&&t.status!==ve?1:0},Re=function(e){if(Le(e))return ge(e,ie);e.total_in=e.total_out=0,e.data_type=Ae;var t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?pe:fe,e.adler=2===t.wrap?0:1,t.last_flush=-2,G(t),ee},Ue=function(e){var t,i=Re(e);return i===ee&&((t=e.state).window_size=2*t.w_size,_e(t.head),t.max_lazy_match=Se[t.level].max_lazy,t.good_match=Se[t.level].good_length,t.nice_match=Se[t.level].nice_length,t.max_chain_length=Se[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=2,t.match_available=0,t.ins_h=0),i},Oe=function(e,t,i,s,r,n){if(!e)return ie;var o=1;if(t===ne&&(t=6),s<0?(o=0,s=-s):s>15&&(o=2,s-=16),r<1||r>9||i!==ce||s<8||s>15||t<0||t>9||n<0||n>ue||8===s&&1!==o)return ge(e,ie);8===s&&(s=9);var a=new Te;return e.state=a,a.strm=e,a.status=pe,a.wrap=o,a.gzhead=null,a.w_bits=s,a.w_size=1<$||t<0)return e?ge(e,ie):ie;var i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ve&&t!==q)return ge(e,0===e.avail_out?re:ie);var s=i.last_flush;if(i.last_flush=t,0!==i.pending){if(we(e),0===e.avail_out)return i.last_flush=-1,ee}else if(0===e.avail_in&&me(t)<=me(s)&&t!==q)return ge(e,re);if(i.status===ve&&0!==e.avail_in)return ge(e,re);if(i.status===pe&&0===i.wrap&&(i.status=fe),i.status===pe){var r=ce+(i.w_bits-8<<4)<<8;if(r|=(i.strategy>=ae||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(r|=32),Pe(i,r+=31-r%31),0!==i.strstart&&(Pe(i,e.adler>>>16),Pe(i,65535&e.adler)),e.adler=1,i.status=fe,we(e),0!==i.pending)return i.last_flush=-1,ee}if(57===i.status)if(e.adler=0,xe(i,31),xe(i,139),xe(i,8),i.gzhead)xe(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),xe(i,255&i.gzhead.time),xe(i,i.gzhead.time>>8&255),xe(i,i.gzhead.time>>16&255),xe(i,i.gzhead.time>>24&255),xe(i,9===i.level?2:i.strategy>=ae||i.level<2?4:0),xe(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(xe(i,255&i.gzhead.extra.length),xe(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=V(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(xe(i,0),xe(i,0),xe(i,0),xe(i,0),xe(i,0),xe(i,9===i.level?2:i.strategy>=ae||i.level<2?4:0),xe(i,3),i.status=fe,we(e),0!==i.pending)return i.last_flush=-1,ee;if(69===i.status){if(i.gzhead.extra){for(var n=i.pending,o=(65535&i.gzhead.extra.length)-i.gzindex;i.pending+o>i.pending_buf_size;){var a=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+a),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>n&&(e.adler=V(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex+=a,we(e),0!==i.pending)return i.last_flush=-1,ee;n=0,o-=a}var l=new Uint8Array(i.gzhead.extra);i.pending_buf.set(l.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending+=o,i.gzhead.hcrc&&i.pending>n&&(e.adler=V(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){var u,A=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>A&&(e.adler=V(e.adler,i.pending_buf,i.pending-A,A)),we(e),0!==i.pending)return i.last_flush=-1,ee;A=0}u=i.gzindexA&&(e.adler=V(e.adler,i.pending_buf,i.pending-A,A)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){var c,h=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>h&&(e.adler=V(e.adler,i.pending_buf,i.pending-h,h)),we(e),0!==i.pending)return i.last_flush=-1,ee;h=0}c=i.gzindexh&&(e.adler=V(e.adler,i.pending_buf,i.pending-h,h))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(we(e),0!==i.pending))return i.last_flush=-1,ee;xe(i,255&e.adler),xe(i,e.adler>>8&255),e.adler=0}if(i.status=fe,we(e),0!==i.pending)return i.last_flush=-1,ee}if(0!==e.avail_in||0!==i.lookahead||t!==J&&i.status!==ve){var d=0===i.level?Fe(i,t):i.strategy===ae?function(e,t){for(var i;;){if(0===e.lookahead&&(Ee(e),0===e.lookahead)){if(t===J)return 1;break}if(e.match_length=0,i=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Be(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===q?(Be(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Be(e,!1),0===e.strm.avail_out)?1:2}(i,t):i.strategy===le?function(e,t){for(var i,s,r,n,o=e.window;;){if(e.lookahead<=he){if(Ee(e),e.lookahead<=he&&t===J)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&((s=o[r=e.strstart-1])===o[++r]&&s===o[++r]&&s===o[++r])){n=e.strstart+he;do{}while(s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=K(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Be(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===q?(Be(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Be(e,!1),0===e.strm.avail_out)?1:2}(i,t):Se[i.level].func(i,t);if(3!==d&&4!==d||(i.status=ve),1===d||3===d)return 0===e.avail_out&&(i.last_flush=-1),ee;if(2===d&&(t===Y?X(i):t!==$&&(z(i,0,0,!1),t===Z&&(_e(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),we(e),0===e.avail_out))return i.last_flush=-1,ee}return t!==q?ee:i.wrap<=0?te:(2===i.wrap?(xe(i,255&e.adler),xe(i,e.adler>>8&255),xe(i,e.adler>>16&255),xe(i,e.adler>>24&255),xe(i,255&e.total_in),xe(i,e.total_in>>8&255),xe(i,e.total_in>>16&255),xe(i,e.total_in>>24&255)):(Pe(i,e.adler>>>16),Pe(i,65535&e.adler)),we(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?ee:te)},He=function(e){if(Le(e))return ie;var t=e.state.status;return e.state=null,t===fe?ge(e,se):ee},je=function(e,t){var i=t.length;if(Le(e))return ie;var s=e.state,r=s.wrap;if(2===r||1===r&&s.status!==pe||s.lookahead)return ie;if(1===r&&(e.adler=N(e.adler,t,i,0)),s.wrap=0,i>=s.w_size){0===r&&(_e(s.head),s.strstart=0,s.block_start=0,s.insert=0);var n=new Uint8Array(s.w_size);n.set(t.subarray(i-s.w_size,i),0),t=n,i=s.w_size}var o=e.avail_in,a=e.next_in,l=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Ee(s);s.lookahead>=3;){var u=s.strstart,A=s.lookahead-2;do{s.ins_h=be(s,s.ins_h,s.window[u+3-1]),s.prev[u&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=u,u++}while(--A);s.strstart=u,s.lookahead=2,Ee(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,e.next_in=a,e.input=l,e.avail_in=o,s.wrap=r,ee},Ge=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},ze=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var i=t.shift();if(i){if("object"!=B(i))throw new TypeError(i+"must be non-object");for(var s in i)Ge(i,s)&&(e[s]=i[s])}}return e},We=function(e){for(var t=0,i=0,s=e.length;i=252?6:Je>=248?5:Je>=240?4:Je>=224?3:Je>=192?2:1;Xe[254]=Xe[254]=1;var Ye=function(e){if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);var t,i,s,r,n,o=e.length,a=0;for(r=0;r>>6,t[n++]=128|63&i):i<65536?(t[n++]=224|i>>>12,t[n++]=128|i>>>6&63,t[n++]=128|63&i):(t[n++]=240|i>>>18,t[n++]=128|i>>>12&63,t[n++]=128|i>>>6&63,t[n++]=128|63&i);return t},Ze=function(e,t){var i,s,r=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));var n=new Array(2*r);for(s=0,i=0;i4)n[s++]=65533,i+=a-1;else{for(o&=2===a?31:3===a?15:7;a>1&&i1?n[s++]=65533:o<65536?n[s++]=o:(o-=65536,n[s++]=55296|o>>10&1023,n[s++]=56320|1023&o)}}}return function(e,t){if(t<65534&&e.subarray&&Ke)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));for(var i="",s=0;se.length&&(t=e.length);for(var i=t-1;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Xe[e[i]]>t?i:t},$e=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},et=Object.prototype.toString,tt=j.Z_NO_FLUSH,it=j.Z_SYNC_FLUSH,st=j.Z_FULL_FLUSH,rt=j.Z_FINISH,nt=j.Z_OK,ot=j.Z_STREAM_END,at=j.Z_DEFAULT_COMPRESSION,lt=j.Z_DEFAULT_STRATEGY,ut=j.Z_DEFLATED;function At(e){this.options=ze({level:at,method:ut,chunkSize:16384,windowBits:15,memLevel:8,strategy:lt},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new $e,this.strm.avail_out=0;var i=Ne(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==nt)throw new Error(H[i]);if(t.header&&Qe(this.strm,t.header),t.dictionary){var s;if(s="string"==typeof t.dictionary?Ye(t.dictionary):"[object ArrayBuffer]"===et.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(i=je(this.strm,s))!==nt)throw new Error(H[i]);this._dict_set=!0}}function ct(e,t){var i=new At(t);if(i.push(e,!0),i.err)throw i.msg||H[i.err];return i.result}At.prototype.push=function(e,t){var i,s,r=this.strm,n=this.options.chunkSize;if(this.ended)return!1;for(s=t===~~t?t:!0===t?rt:tt,"string"==typeof e?r.input=Ye(e):"[object ArrayBuffer]"===et.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(s===it||s===st)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if((i=Ve(r,s))===ot)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=He(this.strm),this.onEnd(i),this.ended=!0,i===nt;if(0!==r.avail_out){if(s>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},At.prototype.onData=function(e){this.chunks.push(e)},At.prototype.onEnd=function(e){e===nt&&(this.result=We(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ht=At,dt=ct,pt=function(e,t){return(t=t||{}).raw=!0,ct(e,t)},ft=function(e,t){return(t=t||{}).gzip=!0,ct(e,t)},vt=16209,gt=function(e,t){var i,s,r,n,o,a,l,u,A,c,h,d,p,f,v,g,m,_,y,b,w,B,x,P,C=e.state;i=e.next_in,x=e.input,s=i+(e.avail_in-5),r=e.next_out,P=e.output,n=r-(t-e.avail_out),o=r+(e.avail_out-257),a=C.dmax,l=C.wsize,u=C.whave,A=C.wnext,c=C.window,h=C.hold,d=C.bits,p=C.lencode,f=C.distcode,v=(1<>>=_=m>>>24,d-=_,0===(_=m>>>16&255))P[r++]=65535&m;else{if(!(16&_)){if(0==(64&_)){m=p[(65535&m)+(h&(1<<_)-1)];continue t}if(32&_){C.mode=16191;break e}e.msg="invalid literal/length code",C.mode=vt;break e}y=65535&m,(_&=15)&&(d<_&&(h+=x[i++]<>>=_,d-=_),d<15&&(h+=x[i++]<>>=_=m>>>24,d-=_,!(16&(_=m>>>16&255))){if(0==(64&_)){m=f[(65535&m)+(h&(1<<_)-1)];continue i}e.msg="invalid distance code",C.mode=vt;break e}if(b=65535&m,d<(_&=15)&&(h+=x[i++]<a){e.msg="invalid distance too far back",C.mode=vt;break e}if(h>>>=_,d-=_,b>(_=r-n)){if((_=b-_)>u&&C.sane){e.msg="invalid distance too far back",C.mode=vt;break e}if(w=0,B=c,0===A){if(w+=l-_,_2;)P[r++]=B[w++],P[r++]=B[w++],P[r++]=B[w++],y-=3;y&&(P[r++]=B[w++],y>1&&(P[r++]=B[w++]))}else{w=r-b;do{P[r++]=P[w++],P[r++]=P[w++],P[r++]=P[w++],y-=3}while(y>2);y&&(P[r++]=P[w++],y>1&&(P[r++]=P[w++]))}break}}break}}while(i>3,h&=(1<<(d-=y<<3))-1,e.next_in=i,e.next_out=r,e.avail_in=i=1&&0===F[b];b--);if(w>b&&(w=b),0===b)return r[n++]=20971520,r[n++]=20971520,a.bits=1,0;for(y=1;y0&&(0===e||1!==b))return-1;for(k[1]=0,m=1;m<15;m++)k[m+1]=k[m]+F[m];for(_=0;_852||2===e&&C>592)return 1;for(;;){p=m-x,o[_]+1=d?(f=I[o[_]-d],v=E[o[_]-d]):(f=96,v=0),l=1<>x)+(u-=l)]=p<<24|f<<16|v|0}while(0!==u);for(l=1<>=1;if(0!==l?(M&=l-1,M+=l):M=0,_++,0==--F[m]){if(m===b)break;m=t[i+o[_]]}if(m>w&&(M&c)!==A){for(0===x&&(x=w),h+=y,P=1<<(B=m-x);B+x852||2===e&&C>592)return 1;r[A=M&c]=w<<24|B<<16|h-n|0}}return 0!==M&&(r[h+M]=m-x<<24|64<<16|0),a.bits=w,0},Bt=j.Z_FINISH,xt=j.Z_BLOCK,Pt=j.Z_TREES,Ct=j.Z_OK,Mt=j.Z_STREAM_END,Et=j.Z_NEED_DICT,Ft=j.Z_STREAM_ERROR,kt=j.Z_DATA_ERROR,It=j.Z_MEM_ERROR,Dt=j.Z_BUF_ERROR,St=j.Z_DEFLATED,Tt=16180,Lt=16190,Rt=16191,Ut=16192,Ot=16194,Nt=16199,Qt=16200,Vt=16206,Ht=16209,jt=function(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)};function Gt(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var zt,Wt,Kt=function(e){if(!e)return 1;var t=e.state;return!t||t.strm!==e||t.mode16211?1:0},Xt=function(e){if(Kt(e))return Ft;var t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Tt,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,Ct},Jt=function(e){if(Kt(e))return Ft;var t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Xt(e)},Yt=function(e,t){var i;if(Kt(e))return Ft;var s=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Ft:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,Jt(e))},Zt=function(e,t){if(!e)return Ft;var i=new Gt;e.state=i,i.strm=e,i.window=null,i.mode=Tt;var s=Yt(e,t);return s!==Ct&&(e.state=null),s},qt=!0,$t=function(e){if(qt){zt=new Int32Array(512),Wt=new Int32Array(32);for(var t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(wt(1,e.lens,0,288,zt,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;wt(2,e.lens,0,32,Wt,0,e.work,{bits:5}),qt=!1}e.lencode=zt,e.lenbits=9,e.distcode=Wt,e.distbits=5},ei=function(e,t,i,s){var r,n=e.state;return null===n.window&&(n.wsize=1<=n.wsize?(n.window.set(t.subarray(i-n.wsize,i),0),n.wnext=0,n.whave=n.wsize):((r=n.wsize-n.wnext)>s&&(r=s),n.window.set(t.subarray(i-s,i-s+r),n.wnext),(s-=r)?(n.window.set(t.subarray(i-s,i),0),n.wnext=s,n.whave=n.wsize):(n.wnext+=r,n.wnext===n.wsize&&(n.wnext=0),n.whave>>8&255,i.check=V(i.check,M,2,0),u=0,A=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",i.mode=Ht;break}if((15&u)!==St){e.msg="unknown compression method",i.mode=Ht;break}if(A-=4,w=8+(15&(u>>>=4)),0===i.wbits&&(i.wbits=w),w>15||w>i.wbits){e.msg="invalid window size",i.mode=Ht;break}i.dmax=1<>8&1),512&i.flags&&4&i.wrap&&(M[0]=255&u,M[1]=u>>>8&255,i.check=V(i.check,M,2,0)),u=0,A=0,i.mode=16182;case 16182:for(;A<32;){if(0===a)break e;a--,u+=s[n++]<>>8&255,M[2]=u>>>16&255,M[3]=u>>>24&255,i.check=V(i.check,M,4,0)),u=0,A=0,i.mode=16183;case 16183:for(;A<16;){if(0===a)break e;a--,u+=s[n++]<>8),512&i.flags&&4&i.wrap&&(M[0]=255&u,M[1]=u>>>8&255,i.check=V(i.check,M,2,0)),u=0,A=0,i.mode=16184;case 16184:if(1024&i.flags){for(;A<16;){if(0===a)break e;a--,u+=s[n++]<>>8&255,i.check=V(i.check,M,2,0)),u=0,A=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&((d=i.length)>a&&(d=a),d&&(i.head&&(w=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(n,n+d),w)),512&i.flags&&4&i.wrap&&(i.check=V(i.check,s,d,n)),a-=d,n+=d,i.length-=d),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===a)break e;d=0;do{w=s[n+d++],i.head&&w&&i.length<65536&&(i.head.name+=String.fromCharCode(w))}while(w&&d>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Rt;break;case 16189:for(;A<32;){if(0===a)break e;a--,u+=s[n++]<>>=7&A,A-=7&A,i.mode=Vt;break}for(;A<3;){if(0===a)break e;a--,u+=s[n++]<>>=1)){case 0:i.mode=16193;break;case 1:if($t(i),i.mode=Nt,t===Pt){u>>>=2,A-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Ht}u>>>=2,A-=2;break;case 16193:for(u>>>=7&A,A-=7&A;A<32;){if(0===a)break e;a--,u+=s[n++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=Ht;break}if(i.length=65535&u,u=0,A=0,i.mode=Ot,t===Pt)break e;case Ot:i.mode=16195;case 16195:if(d=i.length){if(d>a&&(d=a),d>l&&(d=l),0===d)break e;r.set(s.subarray(n,n+d),o),a-=d,n+=d,l-=d,o+=d,i.length-=d;break}i.mode=Rt;break;case 16196:for(;A<14;){if(0===a)break e;a--,u+=s[n++]<>>=5,A-=5,i.ndist=1+(31&u),u>>>=5,A-=5,i.ncode=4+(15&u),u>>>=4,A-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Ht;break}i.have=0,i.mode=16197;case 16197:for(;i.have>>=3,A-=3}for(;i.have<19;)i.lens[E[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,x={bits:i.lenbits},B=wt(0,i.lens,0,19,i.lencode,0,i.work,x),i.lenbits=x.bits,B){e.msg="invalid code lengths set",i.mode=Ht;break}i.have=0,i.mode=16198;case 16198:for(;i.have>>16&255,m=65535&C,!((v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>>=v,A-=v,i.lens[i.have++]=m;else{if(16===m){for(P=v+2;A>>=v,A-=v,0===i.have){e.msg="invalid bit length repeat",i.mode=Ht;break}w=i.lens[i.have-1],d=3+(3&u),u>>>=2,A-=2}else if(17===m){for(P=v+3;A>>=v)),u>>>=3,A-=3}else{for(P=v+7;A>>=v)),u>>>=7,A-=7}if(i.have+d>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Ht;break}for(;d--;)i.lens[i.have++]=w}}if(i.mode===Ht)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Ht;break}if(i.lenbits=9,x={bits:i.lenbits},B=wt(1,i.lens,0,i.nlen,i.lencode,0,i.work,x),i.lenbits=x.bits,B){e.msg="invalid literal/lengths set",i.mode=Ht;break}if(i.distbits=6,i.distcode=i.distdyn,x={bits:i.distbits},B=wt(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,x),i.distbits=x.bits,B){e.msg="invalid distances set",i.mode=Ht;break}if(i.mode=Nt,t===Pt)break e;case Nt:i.mode=Qt;case Qt:if(a>=6&&l>=258){e.next_out=o,e.avail_out=l,e.next_in=n,e.avail_in=a,i.hold=u,i.bits=A,gt(e,h),o=e.next_out,r=e.output,l=e.avail_out,n=e.next_in,s=e.input,a=e.avail_in,u=i.hold,A=i.bits,i.mode===Rt&&(i.back=-1);break}for(i.back=0;g=(C=i.lencode[u&(1<>>16&255,m=65535&C,!((v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>_)])>>>16&255,m=65535&C,!(_+(v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>>=_,A-=_,i.back+=_}if(u>>>=v,A-=v,i.back+=v,i.length=m,0===g){i.mode=16205;break}if(32&g){i.back=-1,i.mode=Rt;break}if(64&g){e.msg="invalid literal/length code",i.mode=Ht;break}i.extra=15&g,i.mode=16201;case 16201:if(i.extra){for(P=i.extra;A>>=i.extra,A-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;g=(C=i.distcode[u&(1<>>16&255,m=65535&C,!((v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>_)])>>>16&255,m=65535&C,!(_+(v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>>=_,A-=_,i.back+=_}if(u>>>=v,A-=v,i.back+=v,64&g){e.msg="invalid distance code",i.mode=Ht;break}i.offset=m,i.extra=15&g,i.mode=16203;case 16203:if(i.extra){for(P=i.extra;A>>=i.extra,A-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Ht;break}i.mode=16204;case 16204:if(0===l)break e;if(d=h-l,i.offset>d){if((d=i.offset-d)>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Ht;break}d>i.wnext?(d-=i.wnext,p=i.wsize-d):p=i.wnext-d,d>i.length&&(d=i.length),f=i.window}else f=r,p=o-i.offset,d=i.length;d>l&&(d=l),l-=d,i.length-=d;do{r[o++]=f[p++]}while(--d);0===i.length&&(i.mode=Qt);break;case 16205:if(0===l)break e;r[o++]=i.length,l--,i.mode=Qt;break;case Vt:if(i.wrap){for(;A<32;){if(0===a)break e;a--,u|=s[n++]<=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new $e,this.strm.avail_out=0;var i=ii(this.strm,t.windowBits);if(i!==ci)throw new Error(H[i]);if(this.header=new ai,ni(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Ye(t.dictionary):"[object ArrayBuffer]"===li.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=oi(this.strm,t.dictionary))!==ci))throw new Error(H[i])}function mi(e,t){var i=new gi(t);if(i.push(e),i.err)throw i.msg||H[i.err];return i.result}gi.prototype.push=function(e,t){var i,s,r,n=this.strm,o=this.options.chunkSize,a=this.options.dictionary;if(this.ended)return!1;for(s=t===~~t?t:!0===t?Ai:ui,"[object ArrayBuffer]"===li.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(o),n.next_out=0,n.avail_out=o),(i=si(n,s))===di&&a&&((i=oi(n,a))===ci?i=si(n,s):i===fi&&(i=di));n.avail_in>0&&i===hi&&n.state.wrap>0&&0!==e[n.next_in];)ti(n),i=si(n,s);switch(i){case pi:case fi:case di:case vi:return this.onEnd(i),this.ended=!0,!1}if(r=n.avail_out,n.next_out&&(0===n.avail_out||i===hi))if("string"===this.options.to){var l=qe(n.output,n.next_out),u=n.next_out-l,A=Ze(n.output,l);n.next_out=u,n.avail_out=o-u,u&&n.output.set(n.output.subarray(l,l+u),0),this.onData(A)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(i!==ci||0!==r){if(i===hi)return i=ri(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},gi.prototype.onData=function(e){this.chunks.push(e)},gi.prototype.onEnd=function(e){e===ci&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=We(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var _i=function(e,t){return(t=t||{}).raw=!0,mi(e,t)},yi=ht,bi=dt,wi=pt,Bi=ft,xi=gi,Pi=mi,Ci=_i,Mi=mi,Ei=j,Fi={Deflate:yi,deflate:bi,deflateRaw:wi,gzip:Bi,Inflate:xi,inflate:Pi,inflateRaw:Ci,ungzip:Mi,constants:Ei};e.Deflate=yi,e.Inflate=xi,e.constants=Ei,e.default=Fi,e.deflate=bi,e.deflateRaw=wi,e.gzip=Bi,e.inflate=Pi,e.inflateRaw=Ci,e.ungzip=Mi,Object.defineProperty(e,"__esModule",{value:!0})}));var pF=Object.freeze({__proto__:null}),fF=window.pako||pF;fF.inflate||(fF=fF.default);var vF,gF=(vF=new Float32Array(3),function(e){return vF[0]=e[0]/255,vF[1]=e[1]/255,vF[2]=e[2]/255,vF});var mF={version:1,parse:function(e,t,i,s,r,n){var o=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11]}}(i),a=function(e){return{positions:new Uint16Array(fF.inflate(e.positions).buffer),normals:new Int8Array(fF.inflate(e.normals).buffer),indices:new Uint32Array(fF.inflate(e.indices).buffer),edgeIndices:new Uint32Array(fF.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(fF.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(fF.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(fF.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(fF.inflate(e.meshColors).buffer),entityIDs:fF.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(fF.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(fF.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(fF.inflate(e.positionsDecodeMatrix).buffer)}}(o);!function(e,t,i,s,r,n){n.getNextId(),s.positionsCompression="precompressed",s.normalsCompression="precompressed";for(var o=i.positions,a=i.normals,l=i.indices,u=i.edgeIndices,A=i.meshPositions,c=i.meshIndices,h=i.meshEdgesIndices,d=i.meshColors,p=JSON.parse(i.entityIDs),f=i.entityMeshes,v=i.entityIsObjects,g=A.length,m=f.length,_=0;_v[t]?1:0}));for(var E=0;E1||(F[R]=k)}for(var U=0;U1,V=CF(g.subarray(4*O,4*O+3)),H=g[4*O+3]/255,j=a.subarray(d[O],N?a.length:d[O+1]),G=l.subarray(d[O],N?l.length:d[O+1]),z=u.subarray(p[O],N?u.length:p[O+1]),W=A.subarray(f[O],N?A.length:f[O+1]),K=c.subarray(v[O],v[O]+16);if(Q){var X="".concat(o,"-geometry.").concat(O);s.createGeometry({id:X,primitive:"triangles",positionsCompressed:j,normalsCompressed:G,indices:z,edgeIndices:W,positionsDecodeMatrix:K})}else{var J="".concat(o,"-").concat(O);_[F[O]],s.createMesh(le.apply({},{id:J,primitive:"triangles",positionsCompressed:j,normalsCompressed:G,indices:z,edgeIndices:W,positionsDecodeMatrix:K,color:V,opacity:H}))}}for(var Y=0,Z=0;Z1){var oe="".concat(o,"-instance.").concat(Y++),ae="".concat(o,"-geometry.").concat(ne),ue=16*b[Z],Ae=h.subarray(ue,ue+16);s.createMesh(le.apply({},{id:oe,geometryId:ae,matrix:Ae})),se.push(oe)}else se.push(ne)}se.length>0&&s.createEntity(le.apply({},{id:ee,isObject:!0,meshIds:se}))}}(0,0,a,s,0,n)}},EF=window.pako||pF;EF.inflate||(EF=EF.default);var FF=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();var kF={version:5,parse:function(e,t,i,s,r,n){var o=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i),a=function(e){return{positions:new Float32Array(EF.inflate(e.positions).buffer),normals:new Int8Array(EF.inflate(e.normals).buffer),indices:new Uint32Array(EF.inflate(e.indices).buffer),edgeIndices:new Uint32Array(EF.inflate(e.edgeIndices).buffer),matrices:new Float32Array(EF.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(EF.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(EF.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(EF.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(EF.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(EF.inflate(e.primitiveInstances).buffer),eachEntityId:EF.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(EF.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(EF.inflate(e.eachEntityMatricesPortion).buffer)}}(o);!function(e,t,i,s,r,n){var o=n.getNextId();s.positionsCompression="disabled",s.normalsCompression="precompressed";for(var a=i.positions,l=i.normals,u=i.indices,A=i.edgeIndices,c=i.matrices,h=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColor,v=i.primitiveInstances,g=JSON.parse(i.eachEntityId),m=i.eachEntityPrimitiveInstancesPortion,_=i.eachEntityMatricesPortion,y=h.length,b=v.length,w=new Uint8Array(y),B=g.length,x=0;x1||(P[D]=C)}for(var S=0;S1,R=FF(f.subarray(4*S,4*S+3)),U=f[4*S+3]/255,O=a.subarray(h[S],T?a.length:h[S+1]),N=l.subarray(h[S],T?l.length:h[S+1]),Q=u.subarray(d[S],T?u.length:d[S+1]),V=A.subarray(p[S],T?A.length:p[S+1]);if(L){var H="".concat(o,"-geometry.").concat(S);s.createGeometry({id:H,primitive:"triangles",positionsCompressed:O,normalsCompressed:N,indices:Q,edgeIndices:V})}else{var j=S;g[P[S]],s.createMesh(le.apply({},{id:j,primitive:"triangles",positionsCompressed:O,normalsCompressed:N,indices:Q,edgeIndices:V,color:R,opacity:U}))}}for(var G=0,z=0;z1){var ee="instance."+G++,te="geometry"+$,ie=16*_[z],se=c.subarray(ie,ie+16);s.createMesh(le.apply({},{id:ee,geometryId:te,matrix:se})),Z.push(ee)}else Z.push($)}Z.length>0&&s.createEntity(le.apply({},{id:X,isObject:!0,meshIds:Z}))}}(0,0,a,s,0,n)}},IF=window.pako||pF;IF.inflate||(IF=IF.default);var DF,SF=(DF=new Float32Array(3),function(e){return DF[0]=e[0]/255,DF[1]=e[1]/255,DF[2]=e[2]/255,DF});var TF={version:6,parse:function(e,t,i,s,r,n){var o=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:IF.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:IF.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(o);!function(e,t,i,s,r,n){for(var o=n.getNextId(),a=i.positions,l=i.normals,u=i.indices,A=i.edgeIndices,c=i.matrices,h=i.reusedPrimitivesDecodeMatrix,d=i.eachPrimitivePositionsAndNormalsPortion,p=i.eachPrimitiveIndicesPortion,f=i.eachPrimitiveEdgeIndicesPortion,v=i.eachPrimitiveColorAndOpacity,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),_=i.eachEntityPrimitiveInstancesPortion,y=i.eachEntityMatricesPortion,b=i.eachTileAABB,w=i.eachTileEntitiesPortion,B=d.length,x=g.length,P=m.length,C=w.length,M=new Uint32Array(B),E=0;E1,se=te===B-1,re=a.subarray(d[te],se?a.length:d[te+1]),ne=l.subarray(d[te],se?l.length:d[te+1]),oe=u.subarray(p[te],se?u.length:p[te+1]),ae=A.subarray(f[te],se?A.length:f[te+1]),ue=SF(v.subarray(4*te,4*te+3)),Ae=v[4*te+3]/255,ce=n.getNextId();if(ie){var he="".concat(o,"-geometry.").concat(D,".").concat(te);N[he]||(s.createGeometry({id:he,primitive:"triangles",positionsCompressed:re,indices:oe,edgeIndices:ae,positionsDecodeMatrix:h}),N[he]=!0),s.createMesh(le.apply(Z,{id:ce,geometryId:he,origin:k,matrix:G,color:ue,opacity:Ae})),X.push(ce)}else s.createMesh(le.apply(Z,{id:ce,origin:k,primitive:"triangles",positionsCompressed:re,normalsCompressed:ne,indices:oe,edgeIndices:ae,positionsDecodeMatrix:O,color:ue,opacity:Ae})),X.push(ce)}X.length>0&&s.createEntity(le.apply(Y,{id:H,isObject:!0,meshIds:X}))}}}(e,t,a,s,0,n)}},LF=window.pako||pF;LF.inflate||(LF=LF.default);var RF=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function UF(e){for(var t=[],i=0,s=e.length;i1,ne=se===M-1,oe=RF(w.subarray(6*ie,6*ie+3)),ae=w[6*ie+3]/255,ue=w[6*ie+4]/255,Ae=w[6*ie+5]/255,ce=n.getNextId();if(re){var he=b[ie],de=h.slice(he,he+16),pe="".concat(o,"-geometry.").concat(R,".").concat(se);if(!j[pe]){var fe=void 0,ve=void 0,ge=void 0,me=void 0,_e=void 0,ye=void 0;switch(p[se]){case 0:fe="solid",ve=a.subarray(f[se],ne?a.length:f[se+1]),ge=l.subarray(v[se],ne?l.length:v[se+1]),_e=A.subarray(m[se],ne?A.length:m[se+1]),ye=c.subarray(_[se],ne?c.length:_[se+1]);break;case 1:fe="surface",ve=a.subarray(f[se],ne?a.length:f[se+1]),ge=l.subarray(v[se],ne?l.length:v[se+1]),_e=A.subarray(m[se],ne?A.length:m[se+1]),ye=c.subarray(_[se],ne?c.length:_[se+1]);break;case 2:fe="points",ve=a.subarray(f[se],ne?a.length:f[se+1]),me=UF(u.subarray(g[se],ne?u.length:g[se+1]));break;case 3:fe="lines",ve=a.subarray(f[se],ne?a.length:f[se+1]),_e=A.subarray(m[se],ne?A.length:m[se+1]);break;default:continue}s.createGeometry({id:pe,primitive:fe,positionsCompressed:ve,normalsCompressed:ge,colors:me,indices:_e,edgeIndices:ye,positionsDecodeMatrix:d}),j[pe]=!0}s.createMesh(le.apply(ee,{id:ce,geometryId:pe,origin:T,matrix:de,color:oe,metallic:ue,roughness:Ae,opacity:ae})),Y.push(ce)}else{var be=void 0,we=void 0,Be=void 0,xe=void 0,Pe=void 0,Ce=void 0;switch(p[se]){case 0:be="solid",we=a.subarray(f[se],ne?a.length:f[se+1]),Be=l.subarray(v[se],ne?l.length:v[se+1]),Pe=A.subarray(m[se],ne?A.length:m[se+1]),Ce=c.subarray(_[se],ne?c.length:_[se+1]);break;case 1:be="surface",we=a.subarray(f[se],ne?a.length:f[se+1]),Be=l.subarray(v[se],ne?l.length:v[se+1]),Pe=A.subarray(m[se],ne?A.length:m[se+1]),Ce=c.subarray(_[se],ne?c.length:_[se+1]);break;case 2:be="points",we=a.subarray(f[se],ne?a.length:f[se+1]),xe=UF(u.subarray(g[se],ne?u.length:g[se+1]));break;case 3:be="lines",we=a.subarray(f[se],ne?a.length:f[se+1]),Pe=A.subarray(m[se],ne?A.length:m[se+1]);break;default:continue}s.createMesh(le.apply(ee,{id:ce,origin:T,primitive:be,positionsCompressed:we,normalsCompressed:Be,colors:xe,indices:Pe,edgeIndices:Ce,positionsDecodeMatrix:H,color:oe,metallic:ue,roughness:Ae,opacity:ae})),Y.push(ce)}}Y.length>0&&s.createEntity(le.apply(q,{id:W,isObject:!0,meshIds:Y}))}}}(e,t,a,s,0,n)}},NF=window.pako||pF;NF.inflate||(NF=NF.default);var QF=$.vec4(),VF=$.vec4();var HF=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function jF(e){for(var t=[],i=0,s=e.length;i1,ye=me===S-1,be=HF(M.subarray(6*ge,6*ge+3)),we=M[6*ge+3]/255,Be=M[6*ge+4]/255,xe=M[6*ge+5]/255,Pe=n.getNextId();if(_e){var Ce=C[ge],Me=g.slice(Ce,Ce+16),Ee="".concat(o,"-geometry.").concat(Y,".").concat(me),Fe=J[Ee];if(!Fe){Fe={batchThisMesh:!t.reuseGeometries};var ke=!1;switch(_[me]){case 0:Fe.primitiveName="solid",Fe.geometryPositions=h.subarray(y[me],ye?h.length:y[me+1]),Fe.geometryNormals=d.subarray(b[me],ye?d.length:b[me+1]),Fe.geometryIndices=f.subarray(B[me],ye?f.length:B[me+1]),Fe.geometryEdgeIndices=v.subarray(x[me],ye?v.length:x[me+1]),ke=Fe.geometryPositions.length>0&&Fe.geometryIndices.length>0;break;case 1:Fe.primitiveName="surface",Fe.geometryPositions=h.subarray(y[me],ye?h.length:y[me+1]),Fe.geometryNormals=d.subarray(b[me],ye?d.length:b[me+1]),Fe.geometryIndices=f.subarray(B[me],ye?f.length:B[me+1]),Fe.geometryEdgeIndices=v.subarray(x[me],ye?v.length:x[me+1]),ke=Fe.geometryPositions.length>0&&Fe.geometryIndices.length>0;break;case 2:Fe.primitiveName="points",Fe.geometryPositions=h.subarray(y[me],ye?h.length:y[me+1]),Fe.geometryColors=jF(p.subarray(w[me],ye?p.length:w[me+1])),ke=Fe.geometryPositions.length>0;break;case 3:Fe.primitiveName="lines",Fe.geometryPositions=h.subarray(y[me],ye?h.length:y[me+1]),Fe.geometryIndices=f.subarray(B[me],ye?f.length:B[me+1]),ke=Fe.geometryPositions.length>0&&Fe.geometryIndices.length>0;break;default:continue}if(ke||(Fe=null),Fe&&(Fe.geometryPositions.length,Fe.batchThisMesh)){Fe.decompressedPositions=new Float32Array(Fe.geometryPositions.length);for(var Ie=Fe.geometryPositions,De=Fe.decompressedPositions,Se=0,Te=Ie.length;Se0&&je.length>0;break;case 1:Ne="surface",Qe=h.subarray(y[me],ye?h.length:y[me+1]),Ve=d.subarray(b[me],ye?d.length:b[me+1]),je=f.subarray(B[me],ye?f.length:B[me+1]),Ge=v.subarray(x[me],ye?v.length:x[me+1]),ze=Qe.length>0&&je.length>0;break;case 2:Ne="points",Qe=h.subarray(y[me],ye?h.length:y[me+1]),He=jF(p.subarray(w[me],ye?p.length:w[me+1])),ze=Qe.length>0;break;case 3:Ne="lines",Qe=h.subarray(y[me],ye?h.length:y[me+1]),je=f.subarray(B[me],ye?f.length:B[me+1]),ze=Qe.length>0&&je.length>0;break;default:continue}ze&&(s.createMesh(le.apply(fe,{id:Pe,origin:K,primitive:Ne,positionsCompressed:Qe,normalsCompressed:Ve,colorsCompressed:He,indices:je,edgeIndices:Ge,positionsDecodeMatrix:se,color:be,metallic:Be,roughness:xe,opacity:we})),he.push(Pe))}}he.length>0&&s.createEntity(le.apply(pe,{id:ae,isObject:!0,meshIds:he}))}}}(e,t,a,s,r,n)}},zF=window.pako||pF;zF.inflate||(zF=zF.default);var WF=$.vec4(),KF=$.vec4();var XF=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();var JF={version:9,parse:function(e,t,i,s,r,n){var o=function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:zF.inflate(e,t).buffer}return{metadata:JSON.parse(zF.inflate(e.metadata,{to:"string"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(zF.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(o);!function(e,t,i,s,r,n){var o=n.getNextId(),a=i.metadata,l=i.positions,u=i.normals,A=i.colors,c=i.indices,h=i.edgeIndices,d=i.matrices,p=i.reusedGeometriesDecodeMatrix,f=i.eachGeometryPrimitiveType,v=i.eachGeometryPositionsPortion,g=i.eachGeometryNormalsPortion,m=i.eachGeometryColorsPortion,_=i.eachGeometryIndicesPortion,y=i.eachGeometryEdgeIndicesPortion,b=i.eachMeshGeometriesPortion,w=i.eachMeshMatricesPortion,B=i.eachMeshMaterial,x=i.eachEntityId,P=i.eachEntityMeshesPortion,C=i.eachTileAABB,M=i.eachTileEntitiesPortion,E=v.length,F=b.length,k=P.length,I=M.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});for(var D=new Uint32Array(E),S=0;S1,ae=ne===E-1,ue=XF(B.subarray(6*re,6*re+3)),Ae=B[6*re+3]/255,ce=B[6*re+4]/255,he=B[6*re+5]/255,de=n.getNextId();if(oe){var pe=w[re],fe=d.slice(pe,pe+16),ve="".concat(o,"-geometry.").concat(O,".").concat(ne),ge=U[ve];if(!ge){ge={batchThisMesh:!t.reuseGeometries};var me=!1;switch(f[ne]){case 0:ge.primitiveName="solid",ge.geometryPositions=l.subarray(v[ne],ae?l.length:v[ne+1]),ge.geometryNormals=u.subarray(g[ne],ae?u.length:g[ne+1]),ge.geometryIndices=c.subarray(_[ne],ae?c.length:_[ne+1]),ge.geometryEdgeIndices=h.subarray(y[ne],ae?h.length:y[ne+1]),me=ge.geometryPositions.length>0&&ge.geometryIndices.length>0;break;case 1:ge.primitiveName="surface",ge.geometryPositions=l.subarray(v[ne],ae?l.length:v[ne+1]),ge.geometryNormals=u.subarray(g[ne],ae?u.length:g[ne+1]),ge.geometryIndices=c.subarray(_[ne],ae?c.length:_[ne+1]),ge.geometryEdgeIndices=h.subarray(y[ne],ae?h.length:y[ne+1]),me=ge.geometryPositions.length>0&&ge.geometryIndices.length>0;break;case 2:ge.primitiveName="points",ge.geometryPositions=l.subarray(v[ne],ae?l.length:v[ne+1]),ge.geometryColors=A.subarray(m[ne],ae?A.length:m[ne+1]),me=ge.geometryPositions.length>0;break;case 3:ge.primitiveName="lines",ge.geometryPositions=l.subarray(v[ne],ae?l.length:v[ne+1]),ge.geometryIndices=c.subarray(_[ne],ae?c.length:_[ne+1]),me=ge.geometryPositions.length>0&&ge.geometryIndices.length>0;break;default:continue}if(me||(ge=null),ge&&(ge.geometryPositions.length,ge.batchThisMesh)){ge.decompressedPositions=new Float32Array(ge.geometryPositions.length),ge.transformedAndRecompressedPositions=new Uint16Array(ge.geometryPositions.length);for(var _e=ge.geometryPositions,ye=ge.decompressedPositions,be=0,we=_e.length;be0&&Ie.length>0;break;case 1:Me="surface",Ee=l.subarray(v[ne],ae?l.length:v[ne+1]),Fe=u.subarray(g[ne],ae?u.length:g[ne+1]),Ie=c.subarray(_[ne],ae?c.length:_[ne+1]),De=h.subarray(y[ne],ae?h.length:y[ne+1]),Se=Ee.length>0&&Ie.length>0;break;case 2:Me="points",Ee=l.subarray(v[ne],ae?l.length:v[ne+1]),ke=A.subarray(m[ne],ae?A.length:m[ne+1]),Se=Ee.length>0;break;case 3:Me="lines",Ee=l.subarray(v[ne],ae?l.length:v[ne+1]),Ie=c.subarray(_[ne],ae?c.length:_[ne+1]),Se=Ee.length>0&&Ie.length>0;break;default:continue}Se&&(s.createMesh(le.apply(ie,{id:de,origin:L,primitive:Me,positionsCompressed:Ee,normalsCompressed:Fe,colorsCompressed:ke,indices:Ie,edgeIndices:De,positionsDecodeMatrix:G,color:ue,metallic:ce,roughness:he,opacity:Ae})),q.push(de))}}q.length>0&&s.createEntity(le.apply(te,{id:X,isObject:!0,meshIds:q}))}}}(e,t,a,s,r,n)}},YF=window.pako||pF;YF.inflate||(YF=YF.default);var ZF=$.vec4(),qF=$.vec4();var $F=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function ek(e,t){var i=[];if(t.length>1)for(var s=0,r=t.length-1;s1)for(var n=0,o=e.length/3-1;n0,W=9*V,K=1===A[W+0],X=A[W+1];A[W+2],A[W+3];var J=A[W+4],Y=A[W+5],Z=A[W+6],q=A[W+7],ee=A[W+8];if(z){var te=new Uint8Array(l.subarray(j,G)).buffer,ie="".concat(o,"-texture-").concat(V);if(K)s.createTexture({id:ie,buffers:[te],minFilter:J,magFilter:Y,wrapS:Z,wrapT:q,wrapR:ee});else{var se=new Blob([te],{type:10001===X?"image/jpeg":10002===X?"image/png":"image/gif"}),re=(window.URL||window.webkitURL).createObjectURL(se),ne=document.createElement("img");ne.src=re,s.createTexture({id:ie,image:ne,minFilter:J,magFilter:Y,wrapS:Z,wrapT:q,wrapR:ee})}}}for(var oe=0;oe=0?"".concat(o,"-texture-").concat(Ae):null,normalsTextureId:he>=0?"".concat(o,"-texture-").concat(he):null,metallicRoughnessTextureId:ce>=0?"".concat(o,"-texture-").concat(ce):null,emissiveTextureId:de>=0?"".concat(o,"-texture-").concat(de):null,occlusionTextureId:pe>=0?"".concat(o,"-texture-").concat(pe):null})}for(var fe=new Uint32Array(U),ve=0;ve1,je=Ve===U-1,Ge=F[Qe],ze=Ge>=0?"".concat(o,"-textureSet-").concat(Ge):null,We=$F(k.subarray(6*Qe,6*Qe+3)),Ke=k[6*Qe+3]/255,Xe=k[6*Qe+4]/255,Je=k[6*Qe+5]/255,Ye=n.getNextId();if(He){var Ze=E[Qe],qe=m.slice(Ze,Ze+16),$e="".concat(o,"-geometry.").concat(be,".").concat(Ve),et=ye[$e];if(!et){et={batchThisMesh:!t.reuseGeometries};var tt=!1;switch(y[Ve]){case 0:et.primitiveName="solid",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryNormals=h.subarray(w[Ve],je?h.length:w[Ve+1]),et.geometryUVs=p.subarray(x[Ve],je?p.length:x[Ve+1]),et.geometryIndices=f.subarray(P[Ve],je?f.length:P[Ve+1]),et.geometryEdgeIndices=v.subarray(C[Ve],je?v.length:C[Ve+1]),tt=et.geometryPositions.length>0&&et.geometryIndices.length>0;break;case 1:et.primitiveName="surface",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryNormals=h.subarray(w[Ve],je?h.length:w[Ve+1]),et.geometryUVs=p.subarray(x[Ve],je?p.length:x[Ve+1]),et.geometryIndices=f.subarray(P[Ve],je?f.length:P[Ve+1]),et.geometryEdgeIndices=v.subarray(C[Ve],je?v.length:C[Ve+1]),tt=et.geometryPositions.length>0&&et.geometryIndices.length>0;break;case 2:et.primitiveName="points",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryColors=d.subarray(B[Ve],je?d.length:B[Ve+1]),tt=et.geometryPositions.length>0;break;case 3:et.primitiveName="lines",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryIndices=f.subarray(P[Ve],je?f.length:P[Ve+1]),tt=et.geometryPositions.length>0&&et.geometryIndices.length>0;break;case 4:et.primitiveName="lines",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryIndices=ek(et.geometryPositions,f.subarray(P[Ve],je?f.length:P[Ve+1])),tt=et.geometryPositions.length>0&&et.geometryIndices.length>0;break;default:continue}if(tt||(et=null),et&&(et.geometryPositions.length,et.batchThisMesh)){et.decompressedPositions=new Float32Array(et.geometryPositions.length),et.transformedAndRecompressedPositions=new Uint16Array(et.geometryPositions.length);for(var it=et.geometryPositions,st=et.decompressedPositions,rt=0,nt=it.length;rt0&&ft.length>0;break;case 1:At="surface",ct=c.subarray(b[Ve],je?c.length:b[Ve+1]),ht=h.subarray(w[Ve],je?h.length:w[Ve+1]),dt=p.subarray(x[Ve],je?p.length:x[Ve+1]),ft=f.subarray(P[Ve],je?f.length:P[Ve+1]),vt=v.subarray(C[Ve],je?v.length:C[Ve+1]),gt=ct.length>0&&ft.length>0;break;case 2:At="points",ct=c.subarray(b[Ve],je?c.length:b[Ve+1]),pt=d.subarray(B[Ve],je?d.length:B[Ve+1]),gt=ct.length>0;break;case 3:At="lines",ct=c.subarray(b[Ve],je?c.length:b[Ve+1]),ft=f.subarray(P[Ve],je?f.length:P[Ve+1]),gt=ct.length>0&&ft.length>0;break;case 4:At="lines",ft=ek(ct=c.subarray(b[Ve],je?c.length:b[Ve+1]),f.subarray(P[Ve],je?f.length:P[Ve+1])),gt=ct.length>0&&ft.length>0;break;default:continue}gt&&(s.createMesh(le.apply(Oe,{id:Ye,textureSetId:ze,origin:me,primitive:At,positionsCompressed:ct,normalsCompressed:ht,uv:dt&&dt.length>0?dt:null,colorsCompressed:pt,indices:ft,edgeIndices:vt,positionsDecodeMatrix:Me,color:We,metallic:Xe,roughness:Je,opacity:Ke})),Le.push(Ye))}}Le.length>0&&s.createEntity(le.apply(Ue,{id:Ie,isObject:!0,meshIds:Le}))}}}(e,t,a,s,r,n)}},ik={};ik[mF.version]=mF,ik[bF.version]=bF,ik[xF.version]=xF,ik[MF.version]=MF,ik[kF.version]=kF,ik[TF.version]=TF,ik[OF.version]=OF,ik[GF.version]=GF,ik[JF.version]=JF,ik[tk.version]=tk;var sk=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"XKTLoader",e,r))._maxGeometryBatchSize=r.maxGeometryBatchSize,s.textureTranscoder=r.textureTranscoder,s.dataSource=r.dataSource,s.objectDefaults=r.objectDefaults,s.includeTypes=r.includeTypes,s.excludeTypes=r.excludeTypes,s.excludeUnclassifiedObjects=r.excludeUnclassifiedObjects,s.reuseGeometries=r.reuseGeometries,s}return C(i,[{key:"supportedVersions",get:function(){return Object.keys(ik)}},{key:"textureTranscoder",get:function(){return this._textureTranscoder},set:function(e){this._textureTranscoder=e}},{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new dF}},{key:"objectDefaults",get:function(){return this._objectDefaults},set:function(e){this._objectDefaults=e||AE}},{key:"includeTypes",get:function(){return this._includeTypes},set:function(e){this._includeTypes=e}},{key:"excludeTypes",get:function(){return this._excludeTypes},set:function(e){this._excludeTypes=e}},{key:"excludeUnclassifiedObjects",get:function(){return this._excludeUnclassifiedObjects},set:function(e){this._excludeUnclassifiedObjects=!!e}},{key:"globalizeObjectIds",get:function(){return this._globalizeObjectIds},set:function(e){this._globalizeObjectIds=!!e}},{key:"reuseGeometries",get:function(){return this._reuseGeometries},set:function(e){this._reuseGeometries=!1!==e}},{key:"load",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id),!(t.src||t.xkt||t.manifestSrc||t.manifest))return this.error("load() param expected: src, xkt, manifestSrc or manifestData"),A;var i={},s=t.includeTypes||this._includeTypes,r=t.excludeTypes||this._excludeTypes,n=t.objectDefaults||this._objectDefaults;if(i.reuseGeometries=null!==t.reuseGeometries&&void 0!==t.reuseGeometries?t.reuseGeometries:!1!==this._reuseGeometries,s){i.includeTypesMap={};for(var o=0,a=s.length;o=t.length?n():e._dataSource.getMetaModel("".concat(m).concat(t[a]),(function(t){h.loadData(t,{includeTypes:s,excludeTypes:r,globalizeObjectIds:i.globalizeObjectIds}),a++,e.scheduleTask(l,100)}),o)}()},y=function(s,r,n){var o=0;!function a(){o>=s.length?r():e._dataSource.getXKT("".concat(m).concat(s[o]),(function(s){e._parseModel(s,t,i,A,null,v),o++,e.scheduleTask(a,100)}),n)}()},b=function(s,r,n){var o=0;!function a(){o>=s.length?r():e._dataSource.getXKT("".concat(m).concat(s[o]),(function(s){e._parseModel(s,t,i,A,h,v),o++,e.scheduleTask(a,100)}),n)}()};if(t.manifest){var w=t.manifest,B=w.xktFiles;if(!B||0===B.length)return void p("load(): Failed to load model manifest - manifest not valid");var x=w.metaModelFiles;x?_(x,(function(){y(B,d,p)}),p):b(B,d,p)}else this._dataSource.getManifest(t.manifestSrc,(function(e){if(!A.destroyed){var t=e.xktFiles;if(t&&0!==t.length){var i=e.metaModelFiles;i?_(i,(function(){y(t,d,p)}),p):b(t,d,p)}else p("load(): Failed to load model manifest - manifest not valid")}}),p)}return A}},{key:"_loadModel",value:function(e,t,i,s,r,n,o,a){var l=this;this._dataSource.getXKT(t.src,(function(e){l._parseModel(e,t,i,s,r,n),o()}),a)}},{key:"_parseModel",value:function(e,t,i,s,r,n){if(!s.destroyed){var o=new DataView(e),a=new Uint8Array(e),l=o.getUint32(0,!0),u=ik[l];if(u){this.log("Loading .xkt V"+l);for(var A=o.getUint32(4,!0),c=[],h=4*(A+2),d=0;de.size)throw new RangeError("offset:"+t+", length:"+i+", size:"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function p(){}function f(e){var i,s=this;s.init=function(e){i=new Blob([],{type:o}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:o}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function v(t){var i=this,s="",r="";i.init=function(e){s+="data:"+(t||"")+";base64,",e()},i.writeUint8Array=function(t,i){var n,o=r.length,a=r;for(r="",n=0;n<3*Math.floor((o+t.length)/3)-o;n++)a+=String.fromCharCode(t[n]);for(;n2?s+=e.btoa(a):r=a,i()},i.getData=function(t){t(s+e.btoa(r))}}function g(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function m(e,t,i,s,r,o,a,l,u,A){var c,h,d,p=0,f=t.sn;function v(){e.removeEventListener("message",g,!1),l(h,d)}function g(t){var i=t.data,r=i.data,n=i.error;if(n)return n.toString=function(){return"Error: "+this.message},void u(n);if(i.sn===f)switch("number"==typeof i.codecTime&&(e.codecTime+=i.codecTime),"number"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case"append":r?(h+=r.length,s.writeUint8Array(r,(function(){m()}),A)):m();break;case"flush":d=i.crc,r?(h+=r.length,s.writeUint8Array(r,(function(){v()}),A)):v();break;case"progress":a&&a(c+i.loaded,o);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",i)}}function m(){(c=p*n)<=o?i.readUint8Array(r+c,Math.min(n,o-c),(function(i){a&&a(c,o);var s=0===c?t:{sn:f};s.type="append",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}p++}),u):e.postMessage({sn:f,type:"flush"})}h=0,e.addEventListener("message",g,!1),m()}function _(e,t,i,s,r,o,l,u,A,c){var h,d=0,p=0,f="input"===o,v="output"===o,g=new a;!function o(){var a;if((h=d*n)127?r[i-128]:String.fromCharCode(i);return s}function w(e){return decodeURIComponent(escape(e))}function B(e){var t,i="";for(t=0;t>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function P(t,n,o){var a=0;function l(){}l.prototype.getData=function(s,n,l,A){var c=this;function h(e,t){A&&!function(e){var t=u(4);return t.view.setUint32(0,e),c.crc32==t.view.getUint32(0)}(t)?o("CRC failed."):s.getData((function(e){n(e)}))}function d(e){o(e||r)}function p(e){o(e||"Error while writing file data.")}t.readUint8Array(c.offset,30,(function(r){var n,f=u(r.length,r);1347093252==f.view.getUint32(0)?(x(c,f,4,!1,o),n=c.offset+30+c.filenameLength+c.extraFieldLength,s.init((function(){0===c.compressionMethod?y(c._worker,a++,t,s,n,c.compressedSize,A,h,l,d,p):function(t,i,s,r,n,o,a,l,u,A,c){var h=a?"output":"none";e.zip.useWebWorkers?m(t,{sn:i,codecClass:"Inflater",crcType:h},s,r,n,o,u,l,A,c):_(new e.zip.Inflater,s,r,n,o,h,u,l,A,c)}(c._worker,a++,t,s,n,c.compressedSize,A,h,l,d,p)}),p)):o(i)}),d)};var A={getEntries:function(e){var r=this._worker;!function(e){t.size<22?o(i):r(22,(function(){r(Math.min(65558,t.size),(function(){o(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){o(s)}))}}((function(n){var a,A;a=n.getUint32(16,!0),A=n.getUint16(8,!0),a<0||a>=t.size?o(i):t.readUint8Array(a,t.size-a,(function(t){var s,n,a,c,h=0,d=[],p=u(t.length,t);for(s=0;s>>8^i[255&(t^e[s])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},c.prototype=new A,c.prototype.constructor=c,h.prototype=new A,h.prototype.constructor=h,d.prototype=new A,d.prototype.constructor=d,p.prototype.getData=function(e){e(this.data)},f.prototype=new p,f.prototype.constructor=f,v.prototype=new p,v.prototype.constructor=v,g.prototype=new p,g.prototype.constructor=g;var F={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function k(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error("zip.workerScripts."+t+" is not an array!"));r=function(e){var t=document.createElement("a");return e.map((function(e){return t.href=e,t.href}))}(r)}else(r=F[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+r[0];var n=new Worker(r[0]);n.codecTime=n.crcTime=0,n.postMessage({type:"importScripts",scripts:r.slice(1)}),n.addEventListener("message",(function e(t){var r=t.data;if(r.error)return n.terminate(),void s(r.error);"importScripts"===r.type&&(n.removeEventListener("message",e),n.removeEventListener("error",o),i(n))})),n.addEventListener("error",o)}else s(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function o(e){n.terminate(),s(e)}}function I(e){console.error(e)}e.zip={Reader:A,Writer:p,BlobReader:d,Data64URIReader:h,TextReader:c,BlobWriter:g,Data64URIWriter:v,TextWriter:f,createReader:function(e,t,i){i=i||I,e.init((function(){P(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||I,s=!!s,e.init((function(){E(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(nk);var ok=nk.zip;!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function n(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener("load",(function(){t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener("error",s,!1),r.open("GET",e),r.responseType="arraybuffer",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement("a");return t.href=e,"http:"===t.protocol||"https:"===t.protocol}(e)){var n=new XMLHttpRequest;n.addEventListener("load",(function(){t.size=Number(n.getResponseHeader("Content-Length")),t.size?s():i(s,r)}),!1),n.addEventListener("error",r,!1),n.open("HEAD",e),n.send()}else i(s,r)},t.readUint8Array=function(e,s,r,n){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),n)}}function o(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener("load",(function(){t.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?i():s("HTTP Range not supported.")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var n=new XMLHttpRequest;n.open("GET",e),n.responseType="arraybuffer",n.setRequestHeader("Range","bytes="+t+"-"+(t+i-1)),n.addEventListener("load",(function(){s(n.response)}),!1),n.addEventListener("error",r,!1),n.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function a(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function u(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,n){var o=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=n,s.write(o)},r.getData=function(t){e.file(t)}}n.prototype=new s,n.prototype.constructor=n,o.prototype=new s,o.prototype.constructor=o,a.prototype=new s,a.prototype.constructor=a,l.prototype=new r,l.prototype.constructor=l,u.prototype=new r,u.prototype.constructor=u,e.FileWriter=u,e.HttpReader=n,e.HttpRangeReader=o,e.ArrayBufferReader=a,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,n){if(i.directory)return n?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw"Parent entry is not a directory."}(this,i,{data:s,Reader:r?o:n})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new o(e):new n(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(ok);var ak=["4.2"],lk=function(){function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,e),this.supportedSchemas=ak,this._xrayOpacity=.7,this._src=null,this._options=i,this.viewpoint=null,i.workerScriptsPath?(ok.workerScriptsPath=i.workerScriptsPath,this.src=i.src,this.xrayOpacity=.7,this.displayEffect=i.displayEffect,this.createMetaModel=i.createMetaModel):t.error("Config expected: workerScriptsPath")}return C(e,[{key:"load",value:function(e,t,i,s,r,n){switch(s.materialType){case"MetallicMaterial":t._defaultMaterial=new Cn(t,{baseColor:[1,1,1],metallic:.6,roughness:.6});break;case"SpecularMaterial":t._defaultMaterial=new Fn(t,{diffuse:[1,1,1],specular:$.vec3([1,1,1]),glossiness:.5});break;default:t._defaultMaterial=new Ni(t,{reflectivity:.75,shiness:100,diffuse:[1,1,1]})}t._wireframeMaterial=new Bn(t,{color:[0,0,0],lineWidth:2});var o=t.scene.canvas.spinner;o.processes++,uk(e,t,i,s,(function(){o.processes--,r&&r(),t.fire("loaded",!0,!1)}),(function(e){o.processes--,t.error(e),n&&n(e),t.fire("error",e)}),(function(e){console.log("Error, Will Robinson: "+e)}))}}]),e}(),uk=function(e,t,i,s,r,n){!function(e,t,i){var s=new gk;s.load(e,(function(){t(s)}),(function(e){i("Error loading ZIP archive: "+e)}))}(i,(function(i){Ak(e,i,s,t,r,n)}),n)},Ak=function(){return function(t,i,s,r,n){var o={plugin:t,zip:i,edgeThreshold:30,materialType:s.materialType,scene:r.scene,modelNode:r,info:{references:{}},materials:{}};s.createMetaModel&&(o.metaModelData={modelId:r.id,metaObjects:[{name:r.id,type:"Default",id:r.id}]}),r.scene.loading++,function(t,i){t.zip.getFile("Manifest.xml",(function(s,r){for(var n=r.children,o=0,a=n.length;o0){for(var o=n.trim().split(" "),a=new Int16Array(o.length),l=0,u=0,A=o.length;u0){i.primitive="triangles";for(var n=[],o=0,a=r.length;o=t.length)i();else{var a=t[n].id,l=a.lastIndexOf(":");l>0&&(a=a.substring(l+1));var u=a.lastIndexOf("#");u>0&&(a=a.substring(0,u)),s[a]?r(n+1):function(e,t,i){e.zip.getFile(t,(function(t,s){!function(e,t,i){for(var s,r=t.children,n=0,o=r.length;n0)for(var s=0,r=t.length;s1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),s=t.call(this,"XML3DLoader",e,r),r.workerScriptsPath?(s._workerScriptsPath=r.workerScriptsPath,s._loader=new lk(b(s),r),s.supportedSchemas=s._loader.supportedSchemas,s):(s.error("Config expected: workerScriptsPath"),y(s))}return C(i,[{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.workerScriptsPath=this._workerScriptsPath,e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new wn(this.viewer.scene,le.apply(e,{isModel:!0})),i=e.src;return i?(this._loader.load(this,t,i,e),t):(this.error("load() param expected: src"),t)}}]),i}(),yk=function(){function e(){x(this,e)}return C(e,[{key:"getIFC",value:function(e,t,i){var s=function(){};t=t||s,i=i||s;var r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){var n=!!r[2],o=r[3];o=window.decodeURIComponent(o),n&&(o=window.atob(o));try{for(var a=new ArrayBuffer(o.length),l=new Uint8Array(a),u=0;u1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,"ifcLoader",e,r)).dataSource=r.dataSource,s.objectDefaults=r.objectDefaults,s.includeTypes=r.includeTypes,s.excludeTypes=r.excludeTypes,s.excludeUnclassifiedObjects=r.excludeUnclassifiedObjects,!r.WebIFC)throw"Parameter expected: WebIFC";if(!r.IfcAPI)throw"Parameter expected: IfcAPI";return s._webIFC=r.WebIFC,s._ifcAPI=r.IfcAPI,s}return C(i,[{key:"supportedVersions",get:function(){return["2x3","4"]}},{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new yk}},{key:"objectDefaults",get:function(){return this._objectDefaults},set:function(e){this._objectDefaults=e||AE}},{key:"includeTypes",get:function(){return this._includeTypes},set:function(e){this._includeTypes=e}},{key:"excludeTypes",get:function(){return this._excludeTypes},set:function(e){this._excludeTypes=e}},{key:"excludeUnclassifiedObjects",get:function(){return this._excludeUnclassifiedObjects},set:function(e){this._excludeUnclassifiedObjects=!!e}},{key:"globalizeObjectIds",get:function(){return this._globalizeObjectIds},set:function(e){this._globalizeObjectIds=!!e}},{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new hh(this.viewer.scene,le.apply(e,{isModel:!0}));if(!e.src&&!e.ifc)return this.error("load() param expected: src or IFC"),t;var i={autoNormals:!0};if(!1!==e.loadMetadata){var s=e.includeTypes||this._includeTypes,r=e.excludeTypes||this._excludeTypes,n=e.objectDefaults||this._objectDefaults;if(s){i.includeTypesMap={};for(var o=0,a=s.length;o0){for(var l=n.Name.value,u=[],A=0,c=a.length;A1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"lasLoader",e,r)).dataSource=r.dataSource,s.skip=r.skip,s.fp64=r.fp64,s.colorDepth=r.colorDepth,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new wk}},{key:"skip",get:function(){return this._skip},set:function(e){this._skip=e||1}},{key:"fp64",get:function(){return this._fp64},set:function(e){this._fp64=!!e}},{key:"colorDepth",get:function(){return this._colorDepth},set:function(e){this._colorDepth=e||"auto"}},{key:"load",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id);var i=new hh(this.viewer.scene,le.apply(t,{isModel:!0}));if(!t.src&&!t.las)return this.error("load() param expected: src or las"),i;var s={las:{skip:this._skip,fp64:this._fp64,colorDepth:this._colorDepth}};if(t.src)this._loadModel(t.src,t,s,i);else{var r=this.viewer.scene.canvas.spinner;r.processes++,this._parseModel(t.las,t,s,i).then((function(){r.processes--}),(function(t){r.processes--,e.error(t),i.fire("error",t)}))}return i}},{key:"_loadModel",value:function(e,t,i,s){var r=this,n=this.viewer.scene.canvas.spinner;n.processes++,this._dataSource.getLAS(t.src,(function(e){r._parseModel(e,t,i,s).then((function(){n.processes--}),(function(e){n.processes--,r.error(e),s.fire("error",e)}))}),(function(e){n.processes--,r.error(e),s.fire("error",e)}))}},{key:"_parseModel",value:function(e,t,i,s){var r=this;function n(e){var i=e.value;if(t.rotateX&&i)for(var s=0,r=i.length;s=e.length)return e;for(var i=[],s=0;s80*i){s=n=e[0],r=o=e[1];for(var p=i;pn&&(n=a),l>o&&(o=l);u=0!==(u=Math.max(n-s,o-r))?1/u:0}return Lk(h,d,i,s,r,u),d}function Sk(e,t,i,s,r){var n,o;if(r===sI(e,t,i,s)>0)for(n=t;n=t;n-=s)o=eI(n,e[n],e[n+1],o);return o&&Xk(o,o.next)&&(tI(o),o=o.next),o}function Tk(e,t){if(!e)return e;t||(t=e);var i,s=e;do{if(i=!1,s.steiner||!Xk(s,s.next)&&0!==Kk(s.prev,s,s.next))s=s.next;else{if(tI(s),(s=t=s.prev)===s.next)break;i=!0}}while(i||s!==t);return t}function Lk(e,t,i,s,r,n,o){if(e){!o&&n&&function(e,t,i,s){var r=e;do{null===r.z&&(r.z=jk(r.x,r.y,t,i,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,i,s,r,n,o,a,l,u=1;do{for(i=e,e=null,n=null,o=0;i;){for(o++,s=i,a=0,t=0;t0||l>0&&s;)0!==a&&(0===l||!s||i.z<=s.z)?(r=i,i=i.nextZ,a--):(r=s,s=s.nextZ,l--),n?n.nextZ=r:e=r,r.prevZ=n,n=r;i=s}n.nextZ=null,u*=2}while(o>1)}(r)}(e,s,r,n);for(var a,l,u=e;e.prev!==e.next;)if(a=e.prev,l=e.next,n?Uk(e,s,r,n):Rk(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),tI(e),e=l.next,u=l.next;else if((e=l)===u){o?1===o?Lk(e=Ok(Tk(e),t,i),t,i,s,r,n,2):2===o&&Nk(e,t,i,s,r,n):Lk(Tk(e),t,i,s,r,n,1);break}}}function Rk(e){var t=e.prev,i=e,s=e.next;if(Kk(t,i,s)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(zk(t.x,t.y,i.x,i.y,s.x,s.y,r.x,r.y)&&Kk(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function Uk(e,t,i,s){var r=e.prev,n=e,o=e.next;if(Kk(r,n,o)>=0)return!1;for(var a=r.xn.x?r.x>o.x?r.x:o.x:n.x>o.x?n.x:o.x,A=r.y>n.y?r.y>o.y?r.y:o.y:n.y>o.y?n.y:o.y,c=jk(a,l,t,i,s),h=jk(u,A,t,i,s),d=e.prevZ,p=e.nextZ;d&&d.z>=c&&p&&p.z<=h;){if(d!==e.prev&&d!==e.next&&zk(r.x,r.y,n.x,n.y,o.x,o.y,d.x,d.y)&&Kk(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,p!==e.prev&&p!==e.next&&zk(r.x,r.y,n.x,n.y,o.x,o.y,p.x,p.y)&&Kk(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;d&&d.z>=c;){if(d!==e.prev&&d!==e.next&&zk(r.x,r.y,n.x,n.y,o.x,o.y,d.x,d.y)&&Kk(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;p&&p.z<=h;){if(p!==e.prev&&p!==e.next&&zk(r.x,r.y,n.x,n.y,o.x,o.y,p.x,p.y)&&Kk(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function Ok(e,t,i){var s=e;do{var r=s.prev,n=s.next.next;!Xk(r,n)&&Jk(r,s,s.next,n)&&qk(r,n)&&qk(n,r)&&(t.push(r.i/i),t.push(s.i/i),t.push(n.i/i),tI(s),tI(s.next),s=e=n),s=s.next}while(s!==e);return Tk(s)}function Nk(e,t,i,s,r,n){var o=e;do{for(var a=o.next.next;a!==o.prev;){if(o.i!==a.i&&Wk(o,a)){var l=$k(o,a);return o=Tk(o,o.next),l=Tk(l,l.next),Lk(o,t,i,s,r,n),void Lk(l,t,i,s,r,n)}a=a.next}o=o.next}while(o!==e)}function Qk(e,t){return e.x-t.x}function Vk(e,t){if(t=function(e,t){var i,s=t,r=e.x,n=e.y,o=-1/0;do{if(n<=s.y&&n>=s.next.y&&s.next.y!==s.y){var a=s.x+(n-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(a<=r&&a>o){if(o=a,a===r){if(n===s.y)return s;if(n===s.next.y)return s.next}i=s.x=s.x&&s.x>=A&&r!==s.x&&zk(ni.x||s.x===i.x&&Hk(i,s)))&&(i=s,h=l)),s=s.next}while(s!==u);return i}(e,t),t){var i=$k(t,e);Tk(t,t.next),Tk(i,i.next)}}function Hk(e,t){return Kk(e.prev,e,t.prev)<0&&Kk(t.next,e,e.next)<0}function jk(e,t,i,s,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function Gk(e){var t=e,i=e;do{(t.x=0&&(e-o)*(s-a)-(i-o)*(t-a)>=0&&(i-o)*(n-a)-(r-o)*(s-a)>=0}function Wk(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&Jk(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(qk(e,t)&&qk(t,e)&&function(e,t){var i=e,s=!1,r=(e.x+t.x)/2,n=(e.y+t.y)/2;do{i.y>n!=i.next.y>n&&i.next.y!==i.y&&r<(i.next.x-i.x)*(n-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next}while(i!==e);return s}(e,t)&&(Kk(e.prev,e,t.prev)||Kk(e,t.prev,t))||Xk(e,t)&&Kk(e.prev,e,e.next)>0&&Kk(t.prev,t,t.next)>0)}function Kk(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function Xk(e,t){return e.x===t.x&&e.y===t.y}function Jk(e,t,i,s){var r=Zk(Kk(e,t,i)),n=Zk(Kk(e,t,s)),o=Zk(Kk(i,s,e)),a=Zk(Kk(i,s,t));return r!==n&&o!==a||(!(0!==r||!Yk(e,i,t))||(!(0!==n||!Yk(e,s,t))||(!(0!==o||!Yk(i,e,s))||!(0!==a||!Yk(i,t,s)))))}function Yk(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function Zk(e){return e>0?1:e<0?-1:0}function qk(e,t){return Kk(e.prev,e,e.next)<0?Kk(e,t,e.next)>=0&&Kk(e,e.prev,t)>=0:Kk(e,t,e.prev)<0||Kk(e,e.next,t)<0}function $k(e,t){var i=new iI(e.i,e.x,e.y),s=new iI(t.i,t.x,t.y),r=e.next,n=t.prev;return e.next=t,t.prev=e,i.next=r,r.prev=i,s.next=i,i.prev=s,n.next=s,s.prev=n,s}function eI(e,t,i,s){var r=new iI(e,t,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function tI(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function iI(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function sI(e,t,i,s){for(var r=0,n=t,o=i-s;n0&&(s+=e[r-1].length,i.holes.push(s))}return i};var rI=$.vec2(),nI=$.vec3(),oI=$.vec3(),aI=$.vec3(),lI=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"cityJSONLoader",e,r)).dataSource=r.dataSource,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new Ik}},{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new hh(this.viewer.scene,le.apply(e,{isModel:!0,edges:!0}));if(!e.src&&!e.cityJSON)return this.error("load() param expected: src or cityJSON"),t;var i={};if(e.src)this._loadModel(e.src,e,i,t);else{var s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.cityJSON,e,i,t),s.processes--}return t}},{key:"_loadModel",value:function(e,t,i,s){var r=this,n=this.viewer.scene.canvas.spinner;n.processes++,this._dataSource.getCityJSON(t.src,(function(e){r._parseModel(e,t,i,s),n.processes--}),(function(e){n.processes--,r.error(e),s.fire("error",e)}))}},{key:"_parseModel",value:function(e,t,i,s){if(!s.destroyed){var r=e.transform?this._transformVertices(e.vertices,e.transform,i.rotateX):e.vertices,n=t.stats||{};n.sourceFormat=e.type||"CityJSON",n.schemaVersion=e.version||"",n.title="",n.author="",n.created="",n.numMetaObjects=0,n.numPropertySets=0,n.numObjects=0,n.numGeometries=0,n.numTriangles=0,n.numVertices=0;var o=!1!==t.loadMetadata,a=o?{id:$.createUUID(),name:"Model",type:"Model"}:null,l=o?{id:"",projectId:"",author:"",createdAt:"",schema:e.version||"",creatingApplication:"",metaObjects:[a],propertySets:[]}:null,u={data:e,vertices:r,sceneModel:s,loadMetadata:o,metadata:l,rootMetaObject:a,nextId:0,stats:n};if(this._parseCityJSON(u),s.finalize(),o){var A=s.id;this.viewer.metaScene.createMetaModel(A,u.metadata,i)}s.scene.once("tick",(function(){s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}}},{key:"_transformVertices",value:function(e,t,i){for(var s=[],r=t.scale||$.vec3([1,1,1]),n=t.translate||$.vec3([0,0,0]),o=0,a=0;o0){for(var u=[],A=0,c=t.geometry.length;A0){var _=g[m[0]];if(void 0!==_.value)d=v[_.value];else{var y=_.values;if(y){p=[];for(var b=0,w=y.length;b0&&(s.createEntity({id:i,meshIds:u,isObject:!0}),e.stats.numObjects++)}}},{key:"_parseGeometrySurfacesWithOwnMaterials",value:function(e,t,i,s){switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":var r=t.boundaries;this._parseSurfacesWithOwnMaterials(e,i,r,s);break;case"Solid":for(var n=t.boundaries,o=0;o0&&c.push(u.length);var f=this._extractLocalIndices(e,a[p],h,d);u.push.apply(u,A(f))}if(3===u.length)d.indices.push(u[0]),d.indices.push(u[1]),d.indices.push(u[2]);else if(u.length>3){for(var v=[],g=0;g0&&o.indices.length>0){var f=""+e.nextId++;r.createMesh({id:f,primitive:"triangles",positions:o.positions,indices:o.indices,color:i&&i.diffuseColor?i.diffuseColor:[.8,.8,.8],opacity:1}),s.push(f),e.stats.numGeometries++,e.stats.numVertices+=o.positions.length/3,e.stats.numTriangles+=o.indices.length/3}}},{key:"_parseSurfacesWithSharedMaterial",value:function(e,t,i,s){for(var r=e.vertices,n=0;n0&&a.push(o.length);var u=this._extractLocalIndices(e,t[n][l],i,s);o.push.apply(o,A(u))}if(3===o.length)s.indices.push(o[0]),s.indices.push(o[1]),s.indices.push(o[2]);else if(o.length>3){for(var c=[],h=0;h0&&r[r.length-1])||6!==n[0]&&2!==n[0])){o=0;continue}if(3===n[0]&&(!r||n[1]>r[0]&&n[1]=55296&&r<=56319&&i>10),o%1024+56320)),(r+1===i||s.length>16384)&&(n+=String.fromCharCode.apply(String,s),s.length=0)}return n},vp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",gp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),mp=0;mp=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),xp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Pp="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cp=0;Cp>4,A[l++]=(15&s)<<4|r>>2,A[l++]=(3&r)<<6|63&n;return u}(e),o=Array.isArray(n)?function(e){for(var t=e.length,i=[],s=0;s0;){var o=s[--n];if(Array.isArray(e)?-1!==e.indexOf(o):e===o)for(var a=i;a<=s.length;){var l;if((l=s[++a])===t)return!0;if(l!==Mp)break}if(o!==Mp)break}return!1},lf=function(e,t){for(var i=e;i>=0;){var s=t[i];if(s!==Mp)return s;i--}return 0},uf=function(e,t,i,s,r){if(0===i[s])return"×";var n=s-1;if(Array.isArray(r)&&!0===r[n])return"×";var o=n-1,a=n+1,l=t[n],u=o>=0?t[o]:0,A=t[a];if(2===l&&3===A)return"×";if(-1!==ef.indexOf(l))return"!";if(-1!==ef.indexOf(A))return"×";if(-1!==tf.indexOf(A))return"×";if(8===lf(n,t))return"÷";if(11===qp.get(e[n]))return"×";if((l===Hp||l===jp)&&11===qp.get(e[a]))return"×";if(7===l||7===A)return"×";if(9===l)return"×";if(-1===[Mp,Ep,Fp].indexOf(l)&&9===A)return"×";if(-1!==[kp,Ip,Dp,Rp,Qp].indexOf(A))return"×";if(lf(n,t)===Lp)return"×";if(af(23,Lp,n,t))return"×";if(af([kp,Ip],Tp,n,t))return"×";if(af(12,12,n,t))return"×";if(l===Mp)return"÷";if(23===l||23===A)return"×";if(16===A||16===l)return"÷";if(-1!==[Ep,Fp,Tp].indexOf(A)||14===l)return"×";if(36===u&&-1!==of.indexOf(l))return"×";if(l===Qp&&36===A)return"×";if(A===Sp)return"×";if(-1!==$p.indexOf(A)&&l===Up||-1!==$p.indexOf(l)&&A===Up)return"×";if(l===Np&&-1!==[Wp,Hp,jp].indexOf(A)||-1!==[Wp,Hp,jp].indexOf(l)&&A===Op)return"×";if(-1!==$p.indexOf(l)&&-1!==sf.indexOf(A)||-1!==sf.indexOf(l)&&-1!==$p.indexOf(A))return"×";if(-1!==[Np,Op].indexOf(l)&&(A===Up||-1!==[Lp,Fp].indexOf(A)&&t[a+1]===Up)||-1!==[Lp,Fp].indexOf(l)&&A===Up||l===Up&&-1!==[Up,Qp,Rp].indexOf(A))return"×";if(-1!==[Up,Qp,Rp,kp,Ip].indexOf(A))for(var c=n;c>=0;){if((h=t[c])===Up)return"×";if(-1===[Qp,Rp].indexOf(h))break;c--}if(-1!==[Np,Op].indexOf(A))for(c=-1!==[kp,Ip].indexOf(l)?o:n;c>=0;){var h;if((h=t[c])===Up)return"×";if(-1===[Qp,Rp].indexOf(h))break;c--}if(Kp===l&&-1!==[Kp,Xp,Gp,zp].indexOf(A)||-1!==[Xp,Gp].indexOf(l)&&-1!==[Xp,Jp].indexOf(A)||-1!==[Jp,zp].indexOf(l)&&A===Jp)return"×";if(-1!==nf.indexOf(l)&&-1!==[Sp,Op].indexOf(A)||-1!==nf.indexOf(A)&&l===Np)return"×";if(-1!==$p.indexOf(l)&&-1!==$p.indexOf(A))return"×";if(l===Rp&&-1!==$p.indexOf(A))return"×";if(-1!==$p.concat(Up).indexOf(l)&&A===Lp&&-1===Zp.indexOf(e[a])||-1!==$p.concat(Up).indexOf(A)&&l===Ip)return"×";if(41===l&&41===A){for(var d=i[n],p=1;d>0&&41===t[--d];)p++;if(p%2!=0)return"×"}return l===Hp&&A===jp?"×":"÷"},Af=function(e,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var i=function(e,t){void 0===t&&(t="strict");var i=[],s=[],r=[];return e.forEach((function(e,n){var o=qp.get(e);if(o>50?(r.push(!0),o-=50):r.push(!1),-1!==["normal","auto","loose"].indexOf(t)&&-1!==[8208,8211,12316,12448].indexOf(e))return s.push(n),i.push(16);if(4===o||11===o){if(0===n)return s.push(n),i.push(Vp);var a=i[n-1];return-1===rf.indexOf(a)?(s.push(s[n-1]),i.push(a)):(s.push(n),i.push(Vp))}return s.push(n),31===o?i.push("strict"===t?Tp:Wp):o===Yp||29===o?i.push(Vp):43===o?e>=131072&&e<=196605||e>=196608&&e<=262141?i.push(Wp):i.push(Vp):void i.push(o)})),[s,i,r]}(e,t.lineBreak),s=i[0],r=i[1],n=i[2];"break-all"!==t.wordBreak&&"break-word"!==t.wordBreak||(r=r.map((function(e){return-1!==[Up,Vp,Yp].indexOf(e)?Wp:e})));var o="keep-all"===t.wordBreak?n.map((function(t,i){return t&&e[i]>=19968&&e[i]<=40959})):void 0;return[s,r,o]},cf=function(){function e(e,t,i,s){this.codePoints=e,this.required="!"===t,this.start=i,this.end=s}return e.prototype.slice=function(){return fp.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),hf=function(e){return e>=48&&e<=57},df=function(e){return hf(e)||e>=65&&e<=70||e>=97&&e<=102},pf=function(e){return 10===e||9===e||32===e},ff=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},vf=function(e){return ff(e)||hf(e)||45===e},gf=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},mf=function(e,t){return 92===e&&10!==t},_f=function(e,t,i){return 45===e?ff(t)||mf(t,i):!!ff(e)||!(92!==e||!mf(e,t))},yf=function(e,t,i){return 43===e||45===e?!!hf(t)||46===t&&hf(i):hf(46===e?t:e)},bf=function(e){var t=0,i=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(i=-1),t++);for(var s=[];hf(e[t]);)s.push(e[t++]);var r=s.length?parseInt(fp.apply(void 0,s),10):0;46===e[t]&&t++;for(var n=[];hf(e[t]);)n.push(e[t++]);var o=n.length,a=o?parseInt(fp.apply(void 0,n),10):0;69!==e[t]&&101!==e[t]||t++;var l=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(l=-1),t++);for(var u=[];hf(e[t]);)u.push(e[t++]);var A=u.length?parseInt(fp.apply(void 0,u),10):0;return i*(r+a*Math.pow(10,-o))*Math.pow(10,l*A)},wf={type:2},Bf={type:3},xf={type:4},Pf={type:13},Cf={type:8},Mf={type:21},Ef={type:9},Ff={type:10},kf={type:11},If={type:12},Df={type:14},Sf={type:23},Tf={type:1},Lf={type:25},Rf={type:24},Uf={type:26},Of={type:27},Nf={type:28},Qf={type:29},Vf={type:31},Hf={type:32},jf=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(pp(e))},e.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==Hf;)e.push(t),t=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var t=this.peekCodePoint(0),i=this.peekCodePoint(1),s=this.peekCodePoint(2);if(vf(t)||mf(i,s)){var r=_f(t,i,s)?2:1;return{type:5,value:this.consumeName(),flags:r}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Pf;break;case 39:return this.consumeStringToken(39);case 40:return wf;case 41:return Bf;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Df;break;case 43:if(yf(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return xf;case 45:var n=e,o=this.peekCodePoint(0),a=this.peekCodePoint(1);if(yf(n,o,a))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(_f(n,o,a))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(45===o&&62===a)return this.consumeCodePoint(),this.consumeCodePoint(),Rf;break;case 46:if(yf(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var l=this.consumeCodePoint();if(42===l&&47===(l=this.consumeCodePoint()))return this.consumeToken();if(-1===l)return this.consumeToken()}break;case 58:return Uf;case 59:return Of;case 60:if(33===this.peekCodePoint(0)&&45===this.peekCodePoint(1)&&45===this.peekCodePoint(2))return this.consumeCodePoint(),this.consumeCodePoint(),Lf;break;case 64:var u=this.peekCodePoint(0),A=this.peekCodePoint(1),c=this.peekCodePoint(2);if(_f(u,A,c))return{type:7,value:this.consumeName()};break;case 91:return Nf;case 92:if(mf(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return Qf;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Cf;break;case 123:return kf;case 125:return If;case 117:case 85:var h=this.peekCodePoint(0),d=this.peekCodePoint(1);return 43!==h||!df(d)&&63!==d||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ef;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),Mf;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ff;break;case-1:return Hf}return pf(e)?(this.consumeWhiteSpace(),Vf):hf(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):ff(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:fp(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();df(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var i=!1;63===t&&e.length<6;)e.push(t),t=this.consumeCodePoint(),i=!0;if(i)return{type:30,start:parseInt(fp.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(fp.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var s=parseInt(fp.apply(void 0,e),16);if(45===this.peekCodePoint(0)&&df(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var r=[];df(t)&&r.length<6;)r.push(t),t=this.consumeCodePoint();return{type:30,start:s,end:parseInt(fp.apply(void 0,r),16)}}return{type:30,start:s,end:s}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),-1===this.peekCodePoint(0))return{type:22,value:""};var t=this.peekCodePoint(0);if(39===t||34===t){var i=this.consumeStringToken(this.consumeCodePoint());return 0===i.type&&(this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:i.value}):(this.consumeBadUrlRemnants(),Sf)}for(;;){var s=this.consumeCodePoint();if(-1===s||41===s)return{type:22,value:fp.apply(void 0,e)};if(pf(s))return this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:fp.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Sf);if(34===s||39===s||40===s||gf(s))return this.consumeBadUrlRemnants(),Sf;if(92===s){if(!mf(s,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Sf;e.push(this.consumeEscapedCodePoint())}else e.push(s)}},e.prototype.consumeWhiteSpace=function(){for(;pf(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||-1===e)return;mf(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var t="";e>0;){var i=Math.min(5e4,e);t+=fp.apply(void 0,this._value.splice(0,i)),e-=i}return this._value.shift(),t},e.prototype.consumeStringToken=function(e){for(var t="",i=0;;){var s=this._value[i];if(-1===s||void 0===s||s===e)return{type:0,value:t+=this.consumeStringSlice(i)};if(10===s)return this._value.splice(0,i),Tf;if(92===s){var r=this._value[i+1];-1!==r&&void 0!==r&&(10===r?(t+=this.consumeStringSlice(i),i=-1,this._value.shift()):mf(s,r)&&(t+=this.consumeStringSlice(i),t+=fp(this.consumeEscapedCodePoint()),i=-1))}i++}},e.prototype.consumeNumber=function(){var e=[],t=4,i=this.peekCodePoint(0);for(43!==i&&45!==i||e.push(this.consumeCodePoint());hf(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0);var s=this.peekCodePoint(1);if(46===i&&hf(s))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;hf(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0),s=this.peekCodePoint(1);var r=this.peekCodePoint(2);if((69===i||101===i)&&((43===s||45===s)&&hf(r)||hf(s)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;hf(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[bf(e),t]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],i=e[1],s=this.peekCodePoint(0),r=this.peekCodePoint(1),n=this.peekCodePoint(2);return _f(s,r,n)?{type:15,number:t,flags:i,unit:this.consumeName()}:37===s?(this.consumeCodePoint(),{type:16,number:t,flags:i}):{type:17,number:t,flags:i}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(df(e)){for(var t=fp(e);df(this.peekCodePoint(0))&&t.length<6;)t+=fp(this.consumeCodePoint());pf(this.peekCodePoint(0))&&this.consumeCodePoint();var i=parseInt(t,16);return 0===i||function(e){return e>=55296&&e<=57343}(i)||i>1114111?65533:i}return-1===e?65533:e},e.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(vf(t))e+=fp(t);else{if(!mf(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),e;e+=fp(this.consumeEscapedCodePoint())}}},e}(),Gf=function(){function e(e){this._tokens=e}return e.create=function(t){var i=new jf;return i.write(t),new e(i.read())},e.parseValue=function(t){return e.create(t).parseComponentValue()},e.parseValues=function(t){return e.create(t).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(32===t.type)return e;e.push(t),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},i=this.consumeToken();;){if(32===i.type||$f(i,e))return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue()),i=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var i=this.consumeToken();if(32===i.type||3===i.type)return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?Hf:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),zf=function(e){return 15===e.type},Wf=function(e){return 17===e.type},Kf=function(e){return 20===e.type},Xf=function(e){return 0===e.type},Jf=function(e,t){return Kf(e)&&e.value===t},Yf=function(e){return 31!==e.type},Zf=function(e){return 31!==e.type&&4!==e.type},qf=function(e){var t=[],i=[];return e.forEach((function(e){if(4===e.type){if(0===i.length)throw new Error("Error parsing function args, zero tokens for arg");return t.push(i),void(i=[])}31!==e.type&&i.push(e)})),i.length&&t.push(i),t},$f=function(e,t){return 11===t&&12===e.type||(28===t&&29===e.type||2===t&&3===e.type)},ev=function(e){return 17===e.type||15===e.type},tv=function(e){return 16===e.type||ev(e)},iv=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},sv={type:17,number:0,flags:4},rv={type:16,number:50,flags:4},nv={type:16,number:100,flags:4},ov=function(e,t,i){var s=e[0],r=e[1];return[av(s,t),av(void 0!==r?r:s,i)]},av=function(e,t){if(16===e.type)return e.number/100*t;if(zf(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},lv=function(e,t){if(15===t.type)switch(t.unit){case"deg":return Math.PI*t.number/180;case"grad":return Math.PI/200*t.number;case"rad":return t.number;case"turn":return 2*Math.PI*t.number}throw new Error("Unsupported angle type")},uv=function(e){return 15===e.type&&("deg"===e.unit||"grad"===e.unit||"rad"===e.unit||"turn"===e.unit)},Av=function(e){switch(e.filter(Kf).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[sv,sv];case"to top":case"bottom":return cv(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[sv,nv];case"to right":case"left":return cv(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[nv,nv];case"to bottom":case"top":return cv(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[nv,sv];case"to left":case"right":return cv(270)}return 0},cv=function(e){return Math.PI*e/180},hv=function(e,t){if(18===t.type){var i=yv[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return i(e,t.values)}if(5===t.type){if(3===t.value.length){var s=t.value.substring(0,1),r=t.value.substring(1,2),n=t.value.substring(2,3);return fv(parseInt(s+s,16),parseInt(r+r,16),parseInt(n+n,16),1)}if(4===t.value.length){s=t.value.substring(0,1),r=t.value.substring(1,2),n=t.value.substring(2,3);var o=t.value.substring(3,4);return fv(parseInt(s+s,16),parseInt(r+r,16),parseInt(n+n,16),parseInt(o+o,16)/255)}if(6===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),n=t.value.substring(4,6);return fv(parseInt(s,16),parseInt(r,16),parseInt(n,16),1)}if(8===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),n=t.value.substring(4,6),o=t.value.substring(6,8);return fv(parseInt(s,16),parseInt(r,16),parseInt(n,16),parseInt(o,16)/255)}}if(20===t.type){var a=wv[t.value.toUpperCase()];if(void 0!==a)return a}return wv.TRANSPARENT},dv=function(e){return 0==(255&e)},pv=function(e){var t=255&e,i=255&e>>8,s=255&e>>16,r=255&e>>24;return t<255?"rgba("+r+","+s+","+i+","+t/255+")":"rgb("+r+","+s+","+i+")"},fv=function(e,t,i,s){return(e<<24|t<<16|i<<8|Math.round(255*s)<<0)>>>0},vv=function(e,t){if(17===e.type)return e.number;if(16===e.type){var i=3===t?1:255;return 3===t?e.number/100*i:Math.round(e.number/100*i)}return 0},gv=function(e,t){var i=t.filter(Zf);if(3===i.length){var s=i.map(vv),r=s[0],n=s[1],o=s[2];return fv(r,n,o,1)}if(4===i.length){var a=i.map(vv),l=(r=a[0],n=a[1],o=a[2],a[3]);return fv(r,n,o,l)}return 0};function mv(e,t,i){return i<0&&(i+=1),i>=1&&(i-=1),i<1/6?(t-e)*i*6+e:i<.5?t:i<2/3?6*(t-e)*(2/3-i)+e:e}var _v=function(e,t){var i=t.filter(Zf),s=i[0],r=i[1],n=i[2],o=i[3],a=(17===s.type?cv(s.number):lv(e,s))/(2*Math.PI),l=tv(r)?r.number/100:0,u=tv(n)?n.number/100:0,A=void 0!==o&&tv(o)?av(o,1):1;if(0===l)return fv(255*u,255*u,255*u,1);var c=u<=.5?u*(l+1):u+l-u*l,h=2*u-c,d=mv(h,c,a+1/3),p=mv(h,c,a),f=mv(h,c,a-1/3);return fv(255*d,255*p,255*f,A)},yv={hsl:_v,hsla:_v,rgb:gv,rgba:gv},bv=function(e,t){return hv(e,Gf.create(t).parseComponentValue())},wv={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Bv={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(Kf(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},xv={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Pv=function(e,t){var i=hv(e,t[0]),s=t[1];return s&&tv(s)?{color:i,stop:s}:{color:i,stop:null}},Cv=function(e,t){var i=e[0],s=e[e.length-1];null===i.stop&&(i.stop=sv),null===s.stop&&(s.stop=nv);for(var r=[],n=0,o=0;on?r.push(l):r.push(n),n=l}else r.push(null)}var u=null;for(o=0;oe.optimumDistance)?{optimumCorner:t,optimumDistance:a}:e}),{optimumDistance:r?1/0:-1/0,optimumCorner:null}).optimumCorner},kv=function(e,t){var i=cv(180),s=[];return qf(t).forEach((function(t,r){if(0===r){var n=t[0];if(20===n.type&&-1!==["top","left","right","bottom"].indexOf(n.value))return void(i=Av(t));if(uv(n))return void(i=(lv(e,n)+cv(270))%cv(360))}var o=Pv(e,t);s.push(o)})),{angle:i,stops:s,type:1}},Iv=function(e,t){var i=0,s=3,r=[],n=[];return qf(t).forEach((function(t,o){var a=!0;if(0===o?a=t.reduce((function(e,t){if(Kf(t))switch(t.value){case"center":return n.push(rv),!1;case"top":case"left":return n.push(sv),!1;case"right":case"bottom":return n.push(nv),!1}else if(tv(t)||ev(t))return n.push(t),!1;return e}),a):1===o&&(a=t.reduce((function(e,t){if(Kf(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"contain":case"closest-side":return s=0,!1;case"farthest-side":return s=1,!1;case"closest-corner":return s=2,!1;case"cover":case"farthest-corner":return s=3,!1}else if(ev(t)||tv(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)),a){var l=Pv(e,t);r.push(l)}})),{size:s,shape:i,stops:r,position:n,type:2}},Dv=function(e,t){if(22===t.type){var i={url:t.value,type:0};return e.cache.addImage(t.value),i}if(18===t.type){var s=Tv[t.name];if(void 0===s)throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return s(e,t.values)}throw new Error("Unsupported image type "+t.type)};var Sv,Tv={"linear-gradient":function(e,t){var i=cv(180),s=[];return qf(t).forEach((function(t,r){if(0===r){var n=t[0];if(20===n.type&&"to"===n.value)return void(i=Av(t));if(uv(n))return void(i=lv(e,n))}var o=Pv(e,t);s.push(o)})),{angle:i,stops:s,type:1}},"-moz-linear-gradient":kv,"-ms-linear-gradient":kv,"-o-linear-gradient":kv,"-webkit-linear-gradient":kv,"radial-gradient":function(e,t){var i=0,s=3,r=[],n=[];return qf(t).forEach((function(t,o){var a=!0;if(0===o){var l=!1;a=t.reduce((function(e,t){if(l)if(Kf(t))switch(t.value){case"center":return n.push(rv),e;case"top":case"left":return n.push(sv),e;case"right":case"bottom":return n.push(nv),e}else(tv(t)||ev(t))&&n.push(t);else if(Kf(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"at":return l=!0,!1;case"closest-side":return s=0,!1;case"cover":case"farthest-side":return s=1,!1;case"contain":case"closest-corner":return s=2,!1;case"farthest-corner":return s=3,!1}else if(ev(t)||tv(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)}if(a){var u=Pv(e,t);r.push(u)}})),{size:s,shape:i,stops:r,position:n,type:2}},"-moz-radial-gradient":Iv,"-ms-radial-gradient":Iv,"-o-radial-gradient":Iv,"-webkit-radial-gradient":Iv,"-webkit-gradient":function(e,t){var i=cv(180),s=[],r=1;return qf(t).forEach((function(t,i){var n=t[0];if(0===i){if(Kf(n)&&"linear"===n.value)return void(r=1);if(Kf(n)&&"radial"===n.value)return void(r=2)}if(18===n.type)if("from"===n.name){var o=hv(e,n.values[0]);s.push({stop:sv,color:o})}else if("to"===n.name){o=hv(e,n.values[0]);s.push({stop:nv,color:o})}else if("color-stop"===n.name){var a=n.values.filter(Zf);if(2===a.length){o=hv(e,a[1]);var l=a[0];Wf(l)&&s.push({stop:{type:16,number:100*l.number,flags:l.flags},color:o})}}})),1===r?{angle:(i+cv(180))%cv(360),stops:s,type:r}:{size:3,shape:0,stops:s,position:[],type:r}}},Lv={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var i=t[0];return 20===i.type&&"none"===i.value?[]:t.filter((function(e){return Zf(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!Tv[e.name])}(e)})).map((function(t){return Dv(e,t)}))}},Rv={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(Kf(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Uv={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,t){return qf(t).map((function(e){return e.filter(tv)})).map(iv)}},Ov={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,t){return qf(t).map((function(e){return e.filter(Kf).map((function(e){return e.value})).join(" ")})).map(Nv)}},Nv=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(Sv||(Sv={}));var Qv,Vv={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,t){return qf(t).map((function(e){return e.filter(Hv)}))}},Hv=function(e){return Kf(e)||tv(e)},jv=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Gv=jv("top"),zv=jv("right"),Wv=jv("bottom"),Kv=jv("left"),Xv=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return iv(t.filter(tv))}}},Jv=Xv("top-left"),Yv=Xv("top-right"),Zv=Xv("bottom-right"),qv=Xv("bottom-left"),$v=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},eg=$v("top"),tg=$v("right"),ig=$v("bottom"),sg=$v("left"),rg=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return zf(t)?t.number:0}}},ng=rg("top"),og=rg("right"),ag=rg("bottom"),lg=rg("left"),ug={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Ag={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,t){return"rtl"===t?1:0}},cg={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,t){return t.filter(Kf).reduce((function(e,t){return e|hg(t.value)}),0)}},hg=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},dg={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},pg={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,t){return 20===t.type&&"normal"===t.value?0:17===t.type||15===t.type?t.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(Qv||(Qv={}));var fg,vg={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"strict"===t?Qv.STRICT:Qv.NORMAL}},gg={name:"line-height",initialValue:"normal",prefix:!1,type:4},mg=function(e,t){return Kf(e)&&"normal"===e.value?1.2*t:17===e.type?t*e.number:tv(e)?av(e,t):t},_g={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,t){return 20===t.type&&"none"===t.value?null:Dv(e,t)}},yg={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,t){return"inside"===t?0:1}},bg={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},wg=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},Bg=wg("top"),xg=wg("right"),Pg=wg("bottom"),Cg=wg("left"),Mg={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,t){return t.filter(Kf).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},Eg={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"break-word"===t?"break-word":"normal"}},Fg=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},kg=Fg("top"),Ig=Fg("right"),Dg=Fg("bottom"),Sg=Fg("left"),Tg={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,t){switch(t){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},Lg={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Rg={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&Jf(t[0],"none")?[]:qf(t).map((function(t){for(var i={color:wv.TRANSPARENT,offsetX:sv,offsetY:sv,blur:sv},s=0,r=0;r1?1:0],this.overflowWrap=fm(e,Eg,t.overflowWrap),this.paddingTop=fm(e,kg,t.paddingTop),this.paddingRight=fm(e,Ig,t.paddingRight),this.paddingBottom=fm(e,Dg,t.paddingBottom),this.paddingLeft=fm(e,Sg,t.paddingLeft),this.paintOrder=fm(e,um,t.paintOrder),this.position=fm(e,Lg,t.position),this.textAlign=fm(e,Tg,t.textAlign),this.textDecorationColor=fm(e,Xg,null!==(i=t.textDecorationColor)&&void 0!==i?i:t.color),this.textDecorationLine=fm(e,Jg,null!==(s=t.textDecorationLine)&&void 0!==s?s:t.textDecoration),this.textShadow=fm(e,Rg,t.textShadow),this.textTransform=fm(e,Ug,t.textTransform),this.transform=fm(e,Og,t.transform),this.transformOrigin=fm(e,Hg,t.transformOrigin),this.visibility=fm(e,jg,t.visibility),this.webkitTextStrokeColor=fm(e,Am,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=fm(e,cm,t.webkitTextStrokeWidth),this.wordBreak=fm(e,Gg,t.wordBreak),this.zIndex=fm(e,zg,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return dv(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return tm(this.display,4)||tm(this.display,33554432)||tm(this.display,268435456)||tm(this.display,536870912)||tm(this.display,67108864)||tm(this.display,134217728)},e}(),dm=function(e,t){this.content=fm(e,im,t.content),this.quotes=fm(e,om,t.quotes)},pm=function(e,t){this.counterIncrement=fm(e,sm,t.counterIncrement),this.counterReset=fm(e,rm,t.counterReset)},fm=function(e,t,i){var s=new jf,r=null!=i?i.toString():t.initialValue;s.write(r);var n=new Gf(s.read());switch(t.type){case 2:var o=n.parseComponentValue();return t.parse(e,Kf(o)?o.value:t.initialValue);case 0:return t.parse(e,n.parseComponentValue());case 1:return t.parse(e,n.parseComponentValues());case 4:return n.parseComponentValue();case 3:switch(t.format){case"angle":return lv(e,n.parseComponentValue());case"color":return hv(e,n.parseComponentValue());case"image":return Dv(e,n.parseComponentValue());case"length":var a=n.parseComponentValue();return ev(a)?a:sv;case"length-percentage":var l=n.parseComponentValue();return tv(l)?l:sv;case"time":return Wg(e,n.parseComponentValue())}}},vm=function(e,t){var i=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===i||t===i},gm=function(e,t){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,vm(t,3),this.styles=new hm(e,window.getComputedStyle(t,null)),g_(t)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(t.style.animationDuration="0s"),null!==this.styles.transform&&(t.style.transform="none")),this.bounds=dp(this.context,t),vm(t,4)&&(this.flags|=16)},mm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",_m="undefined"==typeof Uint8Array?[]:new Uint8Array(256),ym=0;ym=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Bm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xm="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Pm=0;Pm>10),o%1024+56320)),(r+1===i||s.length>16384)&&(n+=String.fromCharCode.apply(String,s),s.length=0)}return n},Dm=function(e,t){var i,s,r,n=function(e){var t,i,s,r,n,o=.75*e.length,a=e.length,l=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var u="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(o):new Array(o),A=Array.isArray(u)?u:new Uint8Array(u);for(t=0;t>4,A[l++]=(15&s)<<4|r>>2,A[l++]=(3&r)<<6|63&n;return u}(e),o=Array.isArray(n)?function(e){for(var t=e.length,i=[],s=0;s=55296&&r<=56319&&i=i)return{done:!0,value:null};for(var e="×";so.x||r.y>o.y;return o=r,0===t||a}));return e.body.removeChild(t),a}(document);return Object.defineProperty(Nm,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var t=new Image,i=e.createElement("canvas"),s=i.getContext("2d");if(!s)return!1;t.src="data:image/svg+xml,";try{s.drawImage(t,0,0),i.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(Nm,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var t=e.createElement("canvas"),i=100;t.width=i,t.height=i;var s=t.getContext("2d");if(!s)return Promise.reject(!1);s.fillStyle="rgb(0, 255, 0)",s.fillRect(0,0,i,i);var r=new Image,n=t.toDataURL();r.src=n;var o=Um(i,i,0,0,r);return s.fillStyle="red",s.fillRect(0,0,i,i),Om(o).then((function(t){s.drawImage(t,0,0);var r=s.getImageData(0,0,i,i).data;s.fillStyle="red",s.fillRect(0,0,i,i);var o=e.createElement("div");return o.style.backgroundImage="url("+n+")",o.style.height="100px",Rm(r)?Om(Um(i,i,0,0,o)):Promise.reject(!1)})).then((function(e){return s.drawImage(e,0,0),Rm(s.getImageData(0,0,i,i).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(Nm,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(Nm,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Nm,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Nm,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Nm,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},Qm=function(e,t){this.text=e,this.bounds=t},Vm=function(e,t){var i=t.ownerDocument;if(i){var s=i.createElement("html2canvaswrapper");s.appendChild(t.cloneNode(!0));var r=t.parentNode;if(r){r.replaceChild(s,t);var n=dp(e,s);return s.firstChild&&r.replaceChild(s.firstChild,s),n}}return hp.EMPTY},Hm=function(e,t,i){var s=e.ownerDocument;if(!s)throw new Error("Node has no owner document");var r=s.createRange();return r.setStart(e,t),r.setEnd(e,t+i),r},jm=function(e){if(Nm.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return function(e){for(var t,i=Lm(e),s=[];!(t=i.next()).done;)t.value&&s.push(t.value.slice());return s}(e)},Gm=function(e,t){return 0!==t.letterSpacing?jm(e):function(e,t){if(Nm.SUPPORT_NATIVE_TEXT_SEGMENTATION){var i=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(i.segment(e)).map((function(e){return e.segment}))}return Wm(e,t)}(e,t)},zm=[32,160,4961,65792,65793,4153,4241],Wm=function(e,t){for(var i,s=function(e,t){var i=pp(e),s=Af(i,t),r=s[0],n=s[1],o=s[2],a=i.length,l=0,u=0;return{next:function(){if(u>=a)return{done:!0,value:null};for(var e="×";u0)if(Nm.SUPPORT_RANGE_BOUNDS){var r=Hm(s,o,t.length).getClientRects();if(r.length>1){var a=jm(t),l=0;a.forEach((function(t){n.push(new Qm(t,hp.fromDOMRectList(e,Hm(s,l+o,t.length).getClientRects()))),l+=t.length}))}else n.push(new Qm(t,hp.fromDOMRectList(e,r)))}else{var u=s.splitText(t.length);n.push(new Qm(t,Vm(e,s))),s=u}else Nm.SUPPORT_RANGE_BOUNDS||(s=s.splitText(t.length));o+=t.length})),n}(e,this.text,i,t)},Xm=function(e,t){switch(t){case 1:return e.toLowerCase();case 3:return e.replace(Jm,Ym);case 2:return e.toUpperCase();default:return e}},Jm=/(^|\s|:|-|\(|\))([a-z])/g,Ym=function(e,t,i){return e.length>0?t+i.toUpperCase():e},Zm=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.src=i.currentSrc||i.src,s.intrinsicWidth=i.naturalWidth,s.intrinsicHeight=i.naturalHeight,s.context.cache.addImage(s.src),s}return ap(t,e),t}(gm),qm=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.canvas=i,s.intrinsicWidth=i.width,s.intrinsicHeight=i.height,s}return ap(t,e),t}(gm),$m=function(e){function t(t,i){var s=e.call(this,t,i)||this,r=new XMLSerializer,n=dp(t,i);return i.setAttribute("width",n.width+"px"),i.setAttribute("height",n.height+"px"),s.svg="data:image/svg+xml,"+encodeURIComponent(r.serializeToString(i)),s.intrinsicWidth=i.width.baseVal.value,s.intrinsicHeight=i.height.baseVal.value,s.context.cache.addImage(s.svg),s}return ap(t,e),t}(gm),e_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.value=i.value,s}return ap(t,e),t}(gm),t_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.start=i.start,s.reversed="boolean"==typeof i.reversed&&!0===i.reversed,s}return ap(t,e),t}(gm),i_=[{type:15,flags:0,unit:"px",number:3}],s_=[{type:16,flags:0,number:50}],r_="password",n_=function(e){function t(t,i){var s,r=e.call(this,t,i)||this;switch(r.type=i.type.toLowerCase(),r.checked=i.checked,r.value=function(e){var t=e.type===r_?new Array(e.value.length+1).join("•"):e.value;return 0===t.length?e.placeholder||"":t}(i),"checkbox"!==r.type&&"radio"!==r.type||(r.styles.backgroundColor=3739148031,r.styles.borderTopColor=r.styles.borderRightColor=r.styles.borderBottomColor=r.styles.borderLeftColor=2779096575,r.styles.borderTopWidth=r.styles.borderRightWidth=r.styles.borderBottomWidth=r.styles.borderLeftWidth=1,r.styles.borderTopStyle=r.styles.borderRightStyle=r.styles.borderBottomStyle=r.styles.borderLeftStyle=1,r.styles.backgroundClip=[0],r.styles.backgroundOrigin=[0],r.bounds=(s=r.bounds).width>s.height?new hp(s.left+(s.width-s.height)/2,s.top,s.height,s.height):s.width0)s.textNodes.push(new Km(t,n,s.styles));else if(v_(n))if(I_(n)&&n.assignedNodes)n.assignedNodes().forEach((function(i){return e(t,i,s,r)}));else{var a=c_(t,n);a.styles.isVisible()&&(d_(n,a,r)?a.flags|=4:p_(a.styles)&&(a.flags|=2),-1!==u_.indexOf(n.tagName)&&(a.flags|=8),s.elements.push(a),n.slot,n.shadowRoot?e(t,n.shadowRoot,a,r):F_(n)||w_(n)||k_(n)||e(t,n,a,r))}},c_=function(e,t){return C_(t)?new Zm(e,t):x_(t)?new qm(e,t):w_(t)?new $m(e,t):__(t)?new e_(e,t):y_(t)?new t_(e,t):b_(t)?new n_(e,t):k_(t)?new o_(e,t):F_(t)?new a_(e,t):M_(t)?new l_(e,t):new gm(e,t)},h_=function(e,t){var i=c_(e,t);return i.flags|=4,A_(e,t,i,i),i},d_=function(e,t,i){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||B_(e)&&i.styles.isTransparent()},p_=function(e){return e.isPositioned()||e.isFloating()},f_=function(e){return e.nodeType===Node.TEXT_NODE},v_=function(e){return e.nodeType===Node.ELEMENT_NODE},g_=function(e){return v_(e)&&void 0!==e.style&&!m_(e)},m_=function(e){return"object"===B(e.className)},__=function(e){return"LI"===e.tagName},y_=function(e){return"OL"===e.tagName},b_=function(e){return"INPUT"===e.tagName},w_=function(e){return"svg"===e.tagName},B_=function(e){return"BODY"===e.tagName},x_=function(e){return"CANVAS"===e.tagName},P_=function(e){return"VIDEO"===e.tagName},C_=function(e){return"IMG"===e.tagName},M_=function(e){return"IFRAME"===e.tagName},E_=function(e){return"STYLE"===e.tagName},F_=function(e){return"TEXTAREA"===e.tagName},k_=function(e){return"SELECT"===e.tagName},I_=function(e){return"SLOT"===e.tagName},D_=function(e){return e.tagName.indexOf("-")>0},S_=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(e){var t=this.counters[e];return t||[]},e.prototype.pop=function(e){var t=this;e.forEach((function(e){return t.counters[e].pop()}))},e.prototype.parse=function(e){var t=this,i=e.counterIncrement,s=e.counterReset,r=!0;null!==i&&i.forEach((function(e){var i=t.counters[e.counter];i&&0!==e.increment&&(r=!1,i.length||i.push(1),i[Math.max(0,i.length-1)]+=e.increment)}));var n=[];return r&&s.forEach((function(e){var i=t.counters[e.counter];n.push(e.counter),i||(i=t.counters[e.counter]=[]),i.push(e.reset)})),n},e}(),T_={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},L_={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},R_={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},U_={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},O_=function(e,t,i,s,r,n){return ei?j_(e,r,n.length>0):s.integers.reduce((function(t,i,r){for(;e>=i;)e-=i,t+=s.values[r];return t}),"")+n},N_=function(e,t,i,s){var r="";do{i||e--,r=s(e)+r,e/=t}while(e*t>=t);return r},Q_=function(e,t,i,s,r){var n=i-t+1;return(e<0?"-":"")+(N_(Math.abs(e),n,s,(function(e){return fp(Math.floor(e%n)+t)}))+r)},V_=function(e,t,i){void 0===i&&(i=". ");var s=t.length;return N_(Math.abs(e),s,!1,(function(e){return t[Math.floor(e%s)]}))+i},H_=function(e,t,i,s,r,n){if(e<-9999||e>9999)return j_(e,4,r.length>0);var o=Math.abs(e),a=r;if(0===o)return t[0]+a;for(var l=0;o>0&&l<=4;l++){var u=o%10;0===u&&tm(n,1)&&""!==a?a=t[u]+a:u>1||1===u&&0===l||1===u&&1===l&&tm(n,2)||1===u&&1===l&&tm(n,4)&&e>100||1===u&&l>1&&tm(n,8)?a=t[u]+(l>0?i[l-1]:"")+a:1===u&&l>0&&(a=i[l-1]+a),o=Math.floor(o/10)}return(e<0?s:"")+a},j_=function(e,t,i){var s=i?". ":"",r=i?"、":"",n=i?", ":"",o=i?" ":"";switch(t){case 0:return"•"+o;case 1:return"◦"+o;case 2:return"◾"+o;case 5:var a=Q_(e,48,57,!0,s);return a.length<4?"0"+a:a;case 4:return V_(e,"〇一二三四五六七八九",r);case 6:return O_(e,1,3999,T_,3,s).toLowerCase();case 7:return O_(e,1,3999,T_,3,s);case 8:return Q_(e,945,969,!1,s);case 9:return Q_(e,97,122,!1,s);case 10:return Q_(e,65,90,!1,s);case 11:return Q_(e,1632,1641,!0,s);case 12:case 49:return O_(e,1,9999,L_,3,s);case 35:return O_(e,1,9999,L_,3,s).toLowerCase();case 13:return Q_(e,2534,2543,!0,s);case 14:case 30:return Q_(e,6112,6121,!0,s);case 15:return V_(e,"子丑寅卯辰巳午未申酉戌亥",r);case 16:return V_(e,"甲乙丙丁戊己庚辛壬癸",r);case 17:case 48:return H_(e,"零一二三四五六七八九","十百千萬","負",r,14);case 47:return H_(e,"零壹貳參肆伍陸柒捌玖","拾佰仟萬","負",r,15);case 42:return H_(e,"零一二三四五六七八九","十百千萬","负",r,14);case 41:return H_(e,"零壹贰叁肆伍陆柒捌玖","拾佰仟萬","负",r,15);case 26:return H_(e,"〇一二三四五六七八九","十百千万","マイナス",r,0);case 25:return H_(e,"零壱弐参四伍六七八九","拾百千万","マイナス",r,7);case 31:return H_(e,"영일이삼사오육칠팔구","십백천만","마이너스",n,7);case 33:return H_(e,"零一二三四五六七八九","十百千萬","마이너스",n,0);case 32:return H_(e,"零壹貳參四五六七八九","拾百千","마이너스",n,7);case 18:return Q_(e,2406,2415,!0,s);case 20:return O_(e,1,19999,U_,3,s);case 21:return Q_(e,2790,2799,!0,s);case 22:return Q_(e,2662,2671,!0,s);case 22:return O_(e,1,10999,R_,3,s);case 23:return V_(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return V_(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return Q_(e,3302,3311,!0,s);case 28:return V_(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",r);case 29:return V_(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",r);case 34:return Q_(e,3792,3801,!0,s);case 37:return Q_(e,6160,6169,!0,s);case 38:return Q_(e,4160,4169,!0,s);case 39:return Q_(e,2918,2927,!0,s);case 40:return Q_(e,1776,1785,!0,s);case 43:return Q_(e,3046,3055,!0,s);case 44:return Q_(e,3174,3183,!0,s);case 45:return Q_(e,3664,3673,!0,s);case 46:return Q_(e,3872,3881,!0,s);default:return Q_(e,48,57,!0,s)}},G_=function(){function e(e,t,i){if(this.context=e,this.options=i,this.scrolledElements=[],this.referenceElement=t,this.counters=new S_,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,t){var i=this,s=W_(e,t);if(!s.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,n=e.defaultView.pageYOffset,o=s.contentWindow,a=o.document,l=J_(s).then((function(){return up(i,void 0,void 0,(function(){var e,i;return Ap(this,(function(r){switch(r.label){case 0:return this.scrolledElements.forEach(ey),o&&(o.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||o.scrollY===t.top&&o.scrollX===t.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-t.left,o.scrollY-t.top,0,0))),e=this.options.onclone,void 0===(i=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:r.sent(),r.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,X_(a)]:[3,4];case 3:r.sent(),r.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(a,i)})).then((function(){return s}))]:[2,s]}}))}))}));return a.open(),a.write(q_(document.doctype)+""),$_(this.referenceElement.ownerDocument,r,n),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},e.prototype.createElementClone=function(e){if(vm(e,2),x_(e))return this.createCanvasClone(e);if(P_(e))return this.createVideoClone(e);if(E_(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return C_(t)&&(C_(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),"lazy"===t.loading&&(t.loading="eager")),D_(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return Z_(e.style,t),t},e.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var i=[].slice.call(t.cssRules,0).reduce((function(e,t){return t&&"string"==typeof t.cssText?e+t.cssText:e}),""),s=e.cloneNode(!1);return s.textContent=i,s}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var i=e.ownerDocument.createElement("img");try{return i.src=e.toDataURL(),i}catch(t){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var s=e.cloneNode(!1);try{s.width=e.width,s.height=e.height;var r=e.getContext("2d"),n=s.getContext("2d");if(n)if(!this.options.allowTaint&&r)n.putImageData(r.getImageData(0,0,e.width,e.height),0,0);else{var o=null!==(t=e.getContext("webgl2"))&&void 0!==t?t:e.getContext("webgl");if(o){var a=o.getContextAttributes();!1===(null==a?void 0:a.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}n.drawImage(e,0,0)}return s}catch(t){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return s},e.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var i=t.getContext("2d");try{return i&&(i.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||i.getImageData(0,0,t.width,t.height)),t}catch(t){this.context.logger.info("Unable to clone video as it is tainted",e)}var s=e.ownerDocument.createElement("canvas");return s.width=e.offsetWidth,s.height=e.offsetHeight,s},e.prototype.appendChildNode=function(e,t,i){v_(t)&&(function(e){return"SCRIPT"===e.tagName}(t)||t.hasAttribute("data-html2canvas-ignore")||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(t))||this.options.copyStyles&&v_(t)&&E_(t)||e.appendChild(this.cloneNode(t,i))},e.prototype.cloneChildNodes=function(e,t,i){for(var s=this,r=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;r;r=r.nextSibling)if(v_(r)&&I_(r)&&"function"==typeof r.assignedNodes){var n=r.assignedNodes();n.length&&n.forEach((function(e){return s.appendChildNode(t,e,i)}))}else this.appendChildNode(t,r,i)},e.prototype.cloneNode=function(e,t){if(f_(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var i=e.ownerDocument.defaultView;if(i&&v_(e)&&(g_(e)||m_(e))){var s=this.createElementClone(e);s.style.transitionProperty="none";var r=i.getComputedStyle(e),n=i.getComputedStyle(e,":before"),o=i.getComputedStyle(e,":after");this.referenceElement===e&&g_(s)&&(this.clonedReferenceElement=s),B_(s)&&sy(s);var a=this.counters.parse(new pm(this.context,r)),l=this.resolvePseudoContent(e,s,n,Cm.BEFORE);D_(e)&&(t=!0),P_(e)||this.cloneChildNodes(e,s,t),l&&s.insertBefore(l,s.firstChild);var u=this.resolvePseudoContent(e,s,o,Cm.AFTER);return u&&s.appendChild(u),this.counters.pop(a),(r&&(this.options.copyStyles||m_(e))&&!M_(e)||t)&&Z_(r,s),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([s,e.scrollLeft,e.scrollTop]),(F_(e)||k_(e))&&(F_(s)||k_(s))&&(s.value=e.value),s}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,t,i,s){var r=this;if(i){var n=i.content,o=t.ownerDocument;if(o&&n&&"none"!==n&&"-moz-alt-content"!==n&&"none"!==i.display){this.counters.parse(new pm(this.context,i));var a=new dm(this.context,i),l=o.createElement("html2canvaspseudoelement");Z_(i,l),a.content.forEach((function(t){if(0===t.type)l.appendChild(o.createTextNode(t.value));else if(22===t.type){var i=o.createElement("img");i.src=t.value,i.style.opacity="1",l.appendChild(i)}else if(18===t.type){if("attr"===t.name){var s=t.values.filter(Kf);s.length&&l.appendChild(o.createTextNode(e.getAttribute(s[0].value)||""))}else if("counter"===t.name){var n=t.values.filter(Zf),u=n[0],A=n[1];if(u&&Kf(u)){var c=r.counters.getCounterValue(u.value),h=A&&Kf(A)?bg.parse(r.context,A.value):3;l.appendChild(o.createTextNode(j_(c,h,!1)))}}else if("counters"===t.name){var d=t.values.filter(Zf),p=(u=d[0],d[1]);A=d[2];if(u&&Kf(u)){var f=r.counters.getCounterValues(u.value),v=A&&Kf(A)?bg.parse(r.context,A.value):3,g=p&&0===p.type?p.value:"",m=f.map((function(e){return j_(e,v,!1)})).join(g);l.appendChild(o.createTextNode(m))}}}else if(20===t.type)switch(t.value){case"open-quote":l.appendChild(o.createTextNode(am(a.quotes,r.quoteDepth++,!0)));break;case"close-quote":l.appendChild(o.createTextNode(am(a.quotes,--r.quoteDepth,!1)));break;default:l.appendChild(o.createTextNode(t.value))}})),l.className=ty+" "+iy;var u=s===Cm.BEFORE?" "+ty:" "+iy;return m_(t)?t.className.baseValue+=u:t.className+=u,l}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Cm||(Cm={}));var z_,W_=function(e,t){var i=e.createElement("iframe");return i.className="html2canvas-container",i.style.visibility="hidden",i.style.position="fixed",i.style.left="-10000px",i.style.top="0px",i.style.border="0",i.width=t.width.toString(),i.height=t.height.toString(),i.scrolling="no",i.setAttribute("data-html2canvas-ignore","true"),e.body.appendChild(i),i},K_=function(e){return new Promise((function(t){e.complete?t():e.src?(e.onload=t,e.onerror=t):t()}))},X_=function(e){return Promise.all([].slice.call(e.images,0).map(K_))},J_=function(e){return new Promise((function(t,i){var s=e.contentWindow;if(!s)return i("No window assigned for iframe");var r=s.document;s.onload=e.onload=function(){s.onload=e.onload=null;var i=setInterval((function(){r.body.childNodes.length>0&&"complete"===r.readyState&&(clearInterval(i),t(e))}),50)}}))},Y_=["all","d","content"],Z_=function(e,t){for(var i=e.length-1;i>=0;i--){var s=e.item(i);-1===Y_.indexOf(s)&&t.style.setProperty(s,e.getPropertyValue(s))}return t},q_=function(e){var t="";return e&&(t+=""),t},$_=function(e,t,i){e&&e.defaultView&&(t!==e.defaultView.pageXOffset||i!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(t,i)},ey=function(e){var t=e[0],i=e[1],s=e[2];t.scrollLeft=i,t.scrollTop=s},ty="___html2canvas___pseudoelement_before",iy="___html2canvas___pseudoelement_after",sy=function(e){ry(e,"."+ty+':before{\n content: "" !important;\n display: none !important;\n}\n .'+iy+':after{\n content: "" !important;\n display: none !important;\n}')},ry=function(e,t){var i=e.ownerDocument;if(i){var s=i.createElement("style");s.textContent=t,e.appendChild(s)}},ny=function(){function e(){}return e.getOrigin=function(t){var i=e._link;return i?(i.href=t,i.href=i.href,i.protocol+i.hostname+i.port):"about:blank"},e.isSameOrigin=function(t){return e.getOrigin(t)===e._origin},e.setContext=function(t){e._link=t.document.createElement("a"),e._origin=e.getOrigin(t.location.href)},e._origin="about:blank",e}(),oy=function(){function e(e,t){this.context=e,this._options=t,this._cache={}}return e.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)?t:dy(e)||Ay(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),t):t},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return up(this,void 0,void 0,(function(){var t,i,s,r,n=this;return Ap(this,(function(o){switch(o.label){case 0:return t=ny.isSameOrigin(e),i=!cy(e)&&!0===this._options.useCORS&&Nm.SUPPORT_CORS_IMAGES&&!t,s=!cy(e)&&!t&&!dy(e)&&"string"==typeof this._options.proxy&&Nm.SUPPORT_CORS_XHR&&!i,t||!1!==this._options.allowTaint||cy(e)||dy(e)||s||i?(r=e,s?[4,this.proxy(r)]:[3,2]):[2];case 1:r=o.sent(),o.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,t){var s=new Image;s.onload=function(){return e(s)},s.onerror=t,(hy(r)||i)&&(s.crossOrigin="anonymous"),s.src=r,!0===s.complete&&setTimeout((function(){return e(s)}),500),n._options.imageTimeout>0&&setTimeout((function(){return t("Timed out ("+n._options.imageTimeout+"ms) loading image")}),n._options.imageTimeout)}))];case 3:return[2,o.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var t=this,i=this._options.proxy;if(!i)throw new Error("No proxy defined");var s=e.substring(0,256);return new Promise((function(r,n){var o=Nm.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(200===a.status)if("text"===o)r(a.response);else{var e=new FileReader;e.addEventListener("load",(function(){return r(e.result)}),!1),e.addEventListener("error",(function(e){return n(e)}),!1),e.readAsDataURL(a.response)}else n("Failed to proxy resource "+s+" with status code "+a.status)},a.onerror=n;var l=i.indexOf("?")>-1?"&":"?";if(a.open("GET",""+i+l+"url="+encodeURIComponent(e)+"&responseType="+o),"text"!==o&&a instanceof XMLHttpRequest&&(a.responseType=o),t._options.imageTimeout){var u=t._options.imageTimeout;a.timeout=u,a.ontimeout=function(){return n("Timed out ("+u+"ms) proxying "+s)}}a.send()}))},e}(),ay=/^data:image\/svg\+xml/i,ly=/^data:image\/.*;base64,/i,uy=/^data:image\/.*/i,Ay=function(e){return Nm.SUPPORT_SVG_DRAWING||!py(e)},cy=function(e){return uy.test(e)},hy=function(e){return ly.test(e)},dy=function(e){return"blob"===e.substr(0,4)},py=function(e){return"svg"===e.substr(-3).toLowerCase()||ay.test(e)},fy=function(){function e(e,t){this.type=0,this.x=e,this.y=t}return e.prototype.add=function(t,i){return new e(this.x+t,this.y+i)},e}(),vy=function(e,t,i){return new fy(e.x+(t.x-e.x)*i,e.y+(t.y-e.y)*i)},gy=function(){function e(e,t,i,s){this.type=1,this.start=e,this.startControl=t,this.endControl=i,this.end=s}return e.prototype.subdivide=function(t,i){var s=vy(this.start,this.startControl,t),r=vy(this.startControl,this.endControl,t),n=vy(this.endControl,this.end,t),o=vy(s,r,t),a=vy(r,n,t),l=vy(o,a,t);return i?new e(this.start,s,o,l):new e(l,a,n,this.end)},e.prototype.add=function(t,i){return new e(this.start.add(t,i),this.startControl.add(t,i),this.endControl.add(t,i),this.end.add(t,i))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),my=function(e){return 1===e.type},_y=function(e){var t=e.styles,i=e.bounds,s=ov(t.borderTopLeftRadius,i.width,i.height),r=s[0],n=s[1],o=ov(t.borderTopRightRadius,i.width,i.height),a=o[0],l=o[1],u=ov(t.borderBottomRightRadius,i.width,i.height),A=u[0],c=u[1],h=ov(t.borderBottomLeftRadius,i.width,i.height),d=h[0],p=h[1],f=[];f.push((r+a)/i.width),f.push((d+A)/i.width),f.push((n+p)/i.height),f.push((l+c)/i.height);var v=Math.max.apply(Math,f);v>1&&(r/=v,n/=v,a/=v,l/=v,A/=v,c/=v,d/=v,p/=v);var g=i.width-a,m=i.height-c,_=i.width-A,y=i.height-p,b=t.borderTopWidth,w=t.borderRightWidth,B=t.borderBottomWidth,x=t.borderLeftWidth,P=av(t.paddingTop,e.bounds.width),C=av(t.paddingRight,e.bounds.width),M=av(t.paddingBottom,e.bounds.width),E=av(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=r>0||n>0?yy(i.left+x/3,i.top+b/3,r-x/3,n-b/3,z_.TOP_LEFT):new fy(i.left+x/3,i.top+b/3),this.topRightBorderDoubleOuterBox=r>0||n>0?yy(i.left+g,i.top+b/3,a-w/3,l-b/3,z_.TOP_RIGHT):new fy(i.left+i.width-w/3,i.top+b/3),this.bottomRightBorderDoubleOuterBox=A>0||c>0?yy(i.left+_,i.top+m,A-w/3,c-B/3,z_.BOTTOM_RIGHT):new fy(i.left+i.width-w/3,i.top+i.height-B/3),this.bottomLeftBorderDoubleOuterBox=d>0||p>0?yy(i.left+x/3,i.top+y,d-x/3,p-B/3,z_.BOTTOM_LEFT):new fy(i.left+x/3,i.top+i.height-B/3),this.topLeftBorderDoubleInnerBox=r>0||n>0?yy(i.left+2*x/3,i.top+2*b/3,r-2*x/3,n-2*b/3,z_.TOP_LEFT):new fy(i.left+2*x/3,i.top+2*b/3),this.topRightBorderDoubleInnerBox=r>0||n>0?yy(i.left+g,i.top+2*b/3,a-2*w/3,l-2*b/3,z_.TOP_RIGHT):new fy(i.left+i.width-2*w/3,i.top+2*b/3),this.bottomRightBorderDoubleInnerBox=A>0||c>0?yy(i.left+_,i.top+m,A-2*w/3,c-2*B/3,z_.BOTTOM_RIGHT):new fy(i.left+i.width-2*w/3,i.top+i.height-2*B/3),this.bottomLeftBorderDoubleInnerBox=d>0||p>0?yy(i.left+2*x/3,i.top+y,d-2*x/3,p-2*B/3,z_.BOTTOM_LEFT):new fy(i.left+2*x/3,i.top+i.height-2*B/3),this.topLeftBorderStroke=r>0||n>0?yy(i.left+x/2,i.top+b/2,r-x/2,n-b/2,z_.TOP_LEFT):new fy(i.left+x/2,i.top+b/2),this.topRightBorderStroke=r>0||n>0?yy(i.left+g,i.top+b/2,a-w/2,l-b/2,z_.TOP_RIGHT):new fy(i.left+i.width-w/2,i.top+b/2),this.bottomRightBorderStroke=A>0||c>0?yy(i.left+_,i.top+m,A-w/2,c-B/2,z_.BOTTOM_RIGHT):new fy(i.left+i.width-w/2,i.top+i.height-B/2),this.bottomLeftBorderStroke=d>0||p>0?yy(i.left+x/2,i.top+y,d-x/2,p-B/2,z_.BOTTOM_LEFT):new fy(i.left+x/2,i.top+i.height-B/2),this.topLeftBorderBox=r>0||n>0?yy(i.left,i.top,r,n,z_.TOP_LEFT):new fy(i.left,i.top),this.topRightBorderBox=a>0||l>0?yy(i.left+g,i.top,a,l,z_.TOP_RIGHT):new fy(i.left+i.width,i.top),this.bottomRightBorderBox=A>0||c>0?yy(i.left+_,i.top+m,A,c,z_.BOTTOM_RIGHT):new fy(i.left+i.width,i.top+i.height),this.bottomLeftBorderBox=d>0||p>0?yy(i.left,i.top+y,d,p,z_.BOTTOM_LEFT):new fy(i.left,i.top+i.height),this.topLeftPaddingBox=r>0||n>0?yy(i.left+x,i.top+b,Math.max(0,r-x),Math.max(0,n-b),z_.TOP_LEFT):new fy(i.left+x,i.top+b),this.topRightPaddingBox=a>0||l>0?yy(i.left+Math.min(g,i.width-w),i.top+b,g>i.width+w?0:Math.max(0,a-w),Math.max(0,l-b),z_.TOP_RIGHT):new fy(i.left+i.width-w,i.top+b),this.bottomRightPaddingBox=A>0||c>0?yy(i.left+Math.min(_,i.width-x),i.top+Math.min(m,i.height-B),Math.max(0,A-w),Math.max(0,c-B),z_.BOTTOM_RIGHT):new fy(i.left+i.width-w,i.top+i.height-B),this.bottomLeftPaddingBox=d>0||p>0?yy(i.left+x,i.top+Math.min(y,i.height-B),Math.max(0,d-x),Math.max(0,p-B),z_.BOTTOM_LEFT):new fy(i.left+x,i.top+i.height-B),this.topLeftContentBox=r>0||n>0?yy(i.left+x+E,i.top+b+P,Math.max(0,r-(x+E)),Math.max(0,n-(b+P)),z_.TOP_LEFT):new fy(i.left+x+E,i.top+b+P),this.topRightContentBox=a>0||l>0?yy(i.left+Math.min(g,i.width+x+E),i.top+b+P,g>i.width+x+E?0:a-x+E,l-(b+P),z_.TOP_RIGHT):new fy(i.left+i.width-(w+C),i.top+b+P),this.bottomRightContentBox=A>0||c>0?yy(i.left+Math.min(_,i.width-(x+E)),i.top+Math.min(m,i.height+b+P),Math.max(0,A-(w+C)),c-(B+M),z_.BOTTOM_RIGHT):new fy(i.left+i.width-(w+C),i.top+i.height-(B+M)),this.bottomLeftContentBox=d>0||p>0?yy(i.left+x+E,i.top+y,Math.max(0,d-(x+E)),p-(B+M),z_.BOTTOM_LEFT):new fy(i.left+x+E,i.top+i.height-(B+M))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(z_||(z_={}));var yy=function(e,t,i,s,r){var n=(Math.sqrt(2)-1)/3*4,o=i*n,a=s*n,l=e+i,u=t+s;switch(r){case z_.TOP_LEFT:return new gy(new fy(e,u),new fy(e,u-a),new fy(l-o,t),new fy(l,t));case z_.TOP_RIGHT:return new gy(new fy(e,t),new fy(e+o,t),new fy(l,u-a),new fy(l,u));case z_.BOTTOM_RIGHT:return new gy(new fy(l,t),new fy(l,t+a),new fy(e+o,u),new fy(e,u));case z_.BOTTOM_LEFT:default:return new gy(new fy(l,u),new fy(l-o,u),new fy(e,t+a),new fy(e,t))}},by=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},wy=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},By=function(e,t,i){this.offsetX=e,this.offsetY=t,this.matrix=i,this.type=0,this.target=6},xy=function(e,t){this.path=e,this.target=t,this.type=1},Py=function(e){this.opacity=e,this.type=2,this.target=6},Cy=function(e){return 1===e.type},My=function(e,t){return e.length===t.length&&e.some((function(e,i){return e===t[i]}))},Ey=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Fy=function(){function e(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new _y(this.container),this.container.styles.opacity<1&&this.effects.push(new Py(this.container.styles.opacity)),null!==this.container.styles.transform){var i=this.container.bounds.left+this.container.styles.transformOrigin[0].number,s=this.container.bounds.top+this.container.styles.transformOrigin[1].number,r=this.container.styles.transform;this.effects.push(new By(i,s,r))}if(0!==this.container.styles.overflowX){var n=by(this.curves),o=wy(this.curves);My(n,o)?this.effects.push(new xy(n,6)):(this.effects.push(new xy(n,2)),this.effects.push(new xy(o,4)))}}return e.prototype.getEffects=function(e){for(var t=-1===[2,3].indexOf(this.container.styles.position),i=this.parent,s=this.effects.slice(0);i;){var r=i.effects.filter((function(e){return!Cy(e)}));if(t||0!==i.container.styles.position||!i.parent){if(s.unshift.apply(s,r),t=-1===[2,3].indexOf(i.container.styles.position),0!==i.container.styles.overflowX){var n=by(i.curves),o=wy(i.curves);My(n,o)||s.unshift(new xy(o,6))}}else s.unshift.apply(s,r);i=i.parent}return s.filter((function(t){return tm(t.target,e)}))},e}(),ky=function e(t,i,s,r){t.container.elements.forEach((function(n){var o=tm(n.flags,4),a=tm(n.flags,2),l=new Fy(n,t);tm(n.styles.display,2048)&&r.push(l);var u=tm(n.flags,8)?[]:r;if(o||a){var A=o||n.styles.isPositioned()?s:i,c=new Ey(l);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var h=n.styles.zIndex.order;if(h<0){var d=0;A.negativeZIndex.some((function(e,t){return h>e.element.container.styles.zIndex.order?(d=t,!1):d>0})),A.negativeZIndex.splice(d,0,c)}else if(h>0){var p=0;A.positiveZIndex.some((function(e,t){return h>=e.element.container.styles.zIndex.order?(p=t+1,!1):p>0})),A.positiveZIndex.splice(p,0,c)}else A.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?A.nonPositionedFloats.push(c):A.nonPositionedInlineLevel.push(c);e(l,c,o?c:s,u)}else n.styles.isInlineLevel()?i.inlineLevel.push(l):i.nonInlineLevel.push(l),e(l,i,s,u);tm(n.flags,8)&&Iy(n,u)}))},Iy=function(e,t){for(var i=e instanceof t_?e.start:1,s=e instanceof t_&&e.reversed,r=0;r0&&e.intrinsicHeight>0){var s=Uy(e),r=wy(t);this.path(r),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(i,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(e){return up(this,void 0,void 0,(function(){var i,s,r,n,o,a,l,u,A,c,h,d,p,f,v,g,m,_;return Ap(this,(function(y){switch(y.label){case 0:this.applyEffects(e.getEffects(4)),i=e.container,s=e.curves,r=i.styles,n=0,o=i.textNodes,y.label=1;case 1:return n0&&B>0&&(g=s.ctx.createPattern(p,"repeat"),s.renderRepeat(_,g,P,C))):function(e){return 2===e.type}(i)&&(m=Oy(e,t,[null,null,null]),_=m[0],y=m[1],b=m[2],w=m[3],B=m[4],x=0===i.position.length?[rv]:i.position,P=av(x[0],w),C=av(x[x.length-1],B),M=function(e,t,i,s,r){var n=0,o=0;switch(e.size){case 0:0===e.shape?n=o=Math.min(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(n=Math.min(Math.abs(t),Math.abs(t-s)),o=Math.min(Math.abs(i),Math.abs(i-r)));break;case 2:if(0===e.shape)n=o=Math.min(Ev(t,i),Ev(t,i-r),Ev(t-s,i),Ev(t-s,i-r));else if(1===e.shape){var a=Math.min(Math.abs(i),Math.abs(i-r))/Math.min(Math.abs(t),Math.abs(t-s)),l=Fv(s,r,t,i,!0),u=l[0],A=l[1];o=a*(n=Ev(u-t,(A-i)/a))}break;case 1:0===e.shape?n=o=Math.max(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(n=Math.max(Math.abs(t),Math.abs(t-s)),o=Math.max(Math.abs(i),Math.abs(i-r)));break;case 3:if(0===e.shape)n=o=Math.max(Ev(t,i),Ev(t,i-r),Ev(t-s,i),Ev(t-s,i-r));else if(1===e.shape){a=Math.max(Math.abs(i),Math.abs(i-r))/Math.max(Math.abs(t),Math.abs(t-s));var c=Fv(s,r,t,i,!1);u=c[0],A=c[1],o=a*(n=Ev(u-t,(A-i)/a))}}return Array.isArray(e.size)&&(n=av(e.size[0],s),o=2===e.size.length?av(e.size[1],r):n),[n,o]}(i,P,C,w,B),E=M[0],F=M[1],E>0&&F>0&&(k=s.ctx.createRadialGradient(y+P,b+C,0,y+P,b+C,E),Cv(i.stops,2*E).forEach((function(e){return k.addColorStop(e.stop,pv(e.color))})),s.path(_),s.ctx.fillStyle=k,E!==F?(I=e.bounds.left+.5*e.bounds.width,D=e.bounds.top+.5*e.bounds.height,T=1/(S=F/E),s.ctx.save(),s.ctx.translate(I,D),s.ctx.transform(1,0,0,S,0,0),s.ctx.translate(-I,-D),s.ctx.fillRect(y,T*(b-D)+D,w,B*T),s.ctx.restore()):s.ctx.fill())),L.label=6;case 6:return t--,[2]}}))},s=this,r=0,n=e.styles.backgroundImage.slice(0).reverse(),a.label=1;case 1:return r0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,n,e.curves,2)]:[3,11]:[3,13];case 4:return A.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,n,e.curves,3)];case 6:return A.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,n,e.curves)];case 8:return A.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,n,e.curves)];case 10:A.sent(),A.label=11;case 11:n++,A.label=12;case 12:return o++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(e,t,i,s,r){return up(this,void 0,void 0,(function(){var n,o,a,l,u,A,c,h,d,p,f,v,g,m,_,y;return Ap(this,(function(b){return this.ctx.save(),n=function(e,t){switch(t){case 0:return Ty(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return Ty(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return Ty(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return Ty(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(s,i),o=Sy(s,i),2===r&&(this.path(o),this.ctx.clip()),my(o[0])?(a=o[0].start.x,l=o[0].start.y):(a=o[0].x,l=o[0].y),my(o[1])?(u=o[1].end.x,A=o[1].end.y):(u=o[1].x,A=o[1].y),c=0===i||2===i?Math.abs(a-u):Math.abs(l-A),this.ctx.beginPath(),3===r?this.formatPath(n):this.formatPath(o.slice(0,2)),h=t<3?3*t:2*t,d=t<3?2*t:t,3===r&&(h=t,d=t),p=!0,c<=2*h?p=!1:c<=2*h+d?(h*=f=c/(2*h+d),d*=f):(v=Math.floor((c+d)/(h+d)),g=(c-v*h)/(v-1),d=(m=(c-(v+1)*h)/v)<=0||Math.abs(d-g)0&&void 0!==arguments[0]?arguments[0]:{},t=!this._snapshotBegun,i=void 0!==e.width&&void 0!==e.height,s=this.scene.canvas.canvas,r=s.clientWidth,n=s.clientHeight,o=e.width?Math.floor(e.width):s.width,a=e.height?Math.floor(e.height):s.height;i&&(s.width=o,s.height=a),this._snapshotBegun||this.beginSnapshot({width:o,height:a}),e.includeGizmos||this.sendToPlugins("snapshotStarting");for(var l={},u=0,A=this._plugins.length;u0&&void 0!==b[0]?b[0]:{},i=!this._snapshotBegun,s=void 0!==t.width&&void 0!==t.height,r=this.scene.canvas.canvas,n=r.clientWidth,o=r.clientHeight,l=t.width?Math.floor(t.width):r.width,u=t.height?Math.floor(t.height):r.height,s&&(r.width=l,r.height=u),this._snapshotBegun||this.beginSnapshot(),t.includeGizmos||this.sendToPlugins("snapshotStarting"),this.scene._renderer.renderSnapshot(),A=this.scene._renderer.readSnapshotAsCanvas(),s&&(r.width=n,r.height=o,this.scene.glRedraw()),c={},h=[],d=0,p=this._plugins.length;d1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0,s=i||new Set;if(e){if(Bb(e))s.add(e);else if(Bb(e.buffer))s.add(e.buffer);else if(ArrayBuffer.isView(e));else if(t&&"object"===B(e))for(var r in e)wb(e[r],t,s)}else;return void 0===i?Array.from(s):[]}function Bb(e){return!!e&&(e instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&e instanceof MessagePort||("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)))}var xb=function(){},Pb=function(){function e(t){x(this,e),vb(this,"name",void 0),vb(this,"source",void 0),vb(this,"url",void 0),vb(this,"terminated",!1),vb(this,"worker",void 0),vb(this,"onMessage",void 0),vb(this,"onError",void 0),vb(this,"_loadableURL","");var i=t.name,s=t.source,r=t.url;ub(s||r),this.name=i,this.source=s,this.url=r,this.onMessage=xb,this.onError=function(e){return console.log(e)},this.worker=hb?this._createBrowserWorker():this._createNodeWorker()}return C(e,[{key:"destroy",value:function(){this.onMessage=xb,this.onError=xb,this.worker.terminate(),this.terminated=!0}},{key:"isRunning",get:function(){return Boolean(this.onMessage)}},{key:"postMessage",value:function(e,t){t=t||wb(e),this.worker.postMessage(e,t)}},{key:"_getErrorFromErrorEvent",value:function(e){var t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),e.message&&(t+="".concat(e.message," in ")),e.lineno&&(t+=":".concat(e.lineno,":").concat(e.colno)),new Error(t)}},{key:"_createBrowserWorker",value:function(){var e=this;this._loadableURL=yb({source:this.source,url:this.url});var t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=function(t){t.data?e.onMessage(t.data):e.onError(new Error("No data received"))},t.onerror=function(t){e.onError(e._getErrorFromErrorEvent(t)),e.terminated=!0},t.onmessageerror=function(e){return console.error(e)},t}},{key:"_createNodeWorker",value:function(){var e,t=this;if(this.url){var i=this.url.includes(":/")||this.url.startsWith("/")?this.url:"./".concat(this.url);e=new mb(i,{eval:!1})}else{if(!this.source)throw new Error("no worker");e=new mb(this.source,{eval:!0})}return e.on("message",(function(e){t.onMessage(e)})),e.on("error",(function(e){t.onError(e)})),e.on("exit",(function(e){})),e}}],[{key:"isSupported",value:function(){return"undefined"!=typeof Worker&&hb||void 0!==B(mb)}}]),e}(),Cb=function(){function e(t){x(this,e),vb(this,"name","unnamed"),vb(this,"source",void 0),vb(this,"url",void 0),vb(this,"maxConcurrency",1),vb(this,"maxMobileConcurrency",1),vb(this,"onDebug",(function(){})),vb(this,"reuseWorkers",!0),vb(this,"props",{}),vb(this,"jobQueue",[]),vb(this,"idleQueue",[]),vb(this,"count",0),vb(this,"isDestroyed",!1),this.source=t.source,this.url=t.url,this.setProps(t)}var t,i;return C(e,[{key:"destroy",value:function(){this.idleQueue.forEach((function(e){return e.destroy()})),this.isDestroyed=!0}},{key:"setProps",value:function(e){this.props=n(n({},this.props),e),void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}},{key:"startJob",value:(i=u(a().mark((function e(t){var i,s,r,n=this,o=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=o.length>1&&void 0!==o[1]?o[1]:function(e,t,i){return e.done(i)},s=o.length>2&&void 0!==o[2]?o[2]:function(e,t){return e.error(t)},r=new Promise((function(e){return n.jobQueue.push({name:t,onMessage:i,onError:s,onStart:e}),n})),this._startQueuedJob(),e.next=6,r;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"_startQueuedJob",value:(t=u(a().mark((function e(){var t,i,s;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.jobQueue.length){e.next=2;break}return e.abrupt("return");case 2:if(t=this._getAvailableWorker()){e.next=5;break}return e.abrupt("return");case 5:if(!(i=this.jobQueue.shift())){e.next=18;break}return this.onDebug({message:"Starting job",name:i.name,workerThread:t,backlog:this.jobQueue.length}),s=new gb(i.name,t),t.onMessage=function(e){return i.onMessage(s,e.type,e.payload)},t.onError=function(e){return i.onError(s,e)},i.onStart(s),e.prev=12,e.next=15,s.result;case 15:return e.prev=15,this.returnWorkerToQueue(t),e.finish(15);case 18:case"end":return e.stop()}}),e,this,[[12,,15,18]])}))),function(){return t.apply(this,arguments)})},{key:"returnWorkerToQueue",value:function(e){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}},{key:"_getAvailableWorker",value:function(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count0&&void 0!==arguments[0]?arguments[0]:{};return e._workerFarm=e._workerFarm||new e({}),e._workerFarm.setProps(t),e._workerFarm}}]),e}();vb(Eb,"_workerFarm",void 0);function Fb(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t[e.id]||{},s="".concat(e.id,"-worker.js"),r=i.workerUrl;if(r||"compression"!==e.id||(r=t.workerUrl),"test"===t._workerType&&(r="modules/".concat(e.module,"/dist/").concat(s)),!r){var n=e.version;"latest"===n&&(n="latest");var o=n?"@".concat(n):"";r="https://unpkg.com/@loaders.gl/".concat(e.module).concat(o,"/dist/").concat(s)}return ub(r),r}function kb(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"3.2.6";ub(e,"no worker provided");var i=e.version;return!(!t||!i)}var Ib=Object.freeze({__proto__:null,default:{}}),Db={};function Sb(e){return Tb.apply(this,arguments)}function Tb(){return Tb=u(a().mark((function e(t){var i,s,r=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=r.length>1&&void 0!==r[1]?r[1]:null,s=r.length>2&&void 0!==r[2]?r[2]:{},i&&(t=Lb(t,i,s)),Db[t]=Db[t]||Rb(t),e.next=6,Db[t];case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)}))),Tb.apply(this,arguments)}function Lb(e,t,i){if(e.startsWith("http"))return e;var s=i.modules||{};return s[e]?s[e]:hb?i.CDN?(ub(i.CDN.startsWith("http")),"".concat(i.CDN,"/").concat(t,"@").concat("3.2.6","/dist/libs/").concat(e)):db?"../src/libs/".concat(e):"modules/".concat(t,"/src/libs/").concat(e):"modules/".concat(t,"/dist/libs/").concat(e)}function Rb(e){return Ub.apply(this,arguments)}function Ub(){return(Ub=u(a().mark((function e(t){var i,s,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.endsWith("wasm")){e.next=7;break}return e.next=3,fetch(t);case 3:return i=e.sent,e.next=6,i.arrayBuffer();case 6:return e.abrupt("return",e.sent);case 7:if(hb){e.next=20;break}if(e.prev=8,e.t0=Ib&&void 0,!e.t0){e.next=14;break}return e.next=13,(void 0)(t);case 13:e.t0=e.sent;case 14:return e.abrupt("return",e.t0);case 17:return e.prev=17,e.t1=e.catch(8),e.abrupt("return",null);case 20:if(!db){e.next=22;break}return e.abrupt("return",importScripts(t));case 22:return e.next=24,fetch(t);case 24:return s=e.sent,e.next=27,s.text();case 27:return r=e.sent,e.abrupt("return",Ob(r,t));case 29:case"end":return e.stop()}}),e,null,[[8,17]])})))).apply(this,arguments)}function Ob(e,t){if(hb){if(db)return eval.call(cb,e),null;var i=document.createElement("script");i.id=t;try{i.appendChild(document.createTextNode(e))}catch(t){i.text=e}return document.body.appendChild(i),null}}function Nb(e,t){return!!Eb.isSupported()&&(!!(hb||null!=t&&t._nodeWorkers)&&(e.worker&&(null==t?void 0:t.worker)))}function Qb(e,t,i,s,r){return Vb.apply(this,arguments)}function Vb(){return Vb=u(a().mark((function e(t,i,s,r,n){var o,l,u,A,c,h;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.id,l=Fb(t,s),u=Eb.getWorkerFarm(s),A=u.getWorkerPool({name:o,url:l}),s=JSON.parse(JSON.stringify(s)),r=JSON.parse(JSON.stringify(r||{})),e.next=8,A.startJob("process-on-worker",Hb.bind(null,n));case 8:return(c=e.sent).postMessage("process",{input:i,options:s,context:r}),e.next=12,c.result;case 12:return h=e.sent,e.next=15,h.result;case 15:return e.abrupt("return",e.sent);case 16:case"end":return e.stop()}}),e)}))),Vb.apply(this,arguments)}function Hb(e,t,i,s){return jb.apply(this,arguments)}function jb(){return(jb=u(a().mark((function e(t,i,s,r){var n,o,l,u,A;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=s,e.next="done"===e.t0?3:"error"===e.t0?5:"process"===e.t0?7:20;break;case 3:return i.done(r),e.abrupt("break",21);case 5:return i.error(new Error(r.error)),e.abrupt("break",21);case 7:return n=r.id,o=r.input,l=r.options,e.prev=8,e.next=11,t(o,l);case 11:u=e.sent,i.postMessage("done",{id:n,result:u}),e.next=19;break;case 15:e.prev=15,e.t1=e.catch(8),A=e.t1 instanceof Error?e.t1.message:"unknown error",i.postMessage("error",{id:n,error:A});case 19:return e.abrupt("break",21);case 20:console.warn("parse-with-worker unknown message ".concat(s));case 21:case"end":return e.stop()}}),e,null,[[8,15]])})))).apply(this,arguments)}function Gb(e,t,i){if(e.byteLength<=t+i)return"";for(var s=new DataView(e),r="",n=0;n1&&void 0!==arguments[1]?arguments[1]:5;if("string"==typeof e)return e.slice(0,t);if(ArrayBuffer.isView(e))return Gb(e.buffer,e.byteOffset,t);if(e instanceof ArrayBuffer){return Gb(e,0,t)}return""}(e),'"'))}}function Wb(e){return e&&"object"===B(e)&&e.isBuffer}function Kb(e){if(Wb(e))return Wb(t=e)?new Uint8Array(t.buffer,t.byteOffset,t.length).slice().buffer:t;var t;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return 0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("string"==typeof e){var i=e;return(new TextEncoder).encode(i).buffer}if(e&&"object"===B(e)&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function Xb(){for(var e=arguments.length,t=new Array(e),i=0;i=0),ob(t>0),e+(t-1)&~(t-1)}function Zb(e,t,i){var s;if(e instanceof ArrayBuffer)s=new Uint8Array(e);else{var r=e.byteOffset,n=e.byteLength;s=new Uint8Array(e.buffer||e.arrayBuffer,r,n)}return t.set(s,i),i+Yb(s.byteLength,4)}function qb(e){return $b.apply(this,arguments)}function $b(){return($b=u(a().mark((function e(t){var i,s,r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=[],s=!1,r=!1,e.prev=3,o=I(t);case 5:return e.next=7,o.next();case 7:if(!(s=!(l=e.sent).done)){e.next=13;break}u=l.value,i.push(u);case 10:s=!1,e.next=5;break;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(3),r=!0,n=e.t0;case 19:if(e.prev=19,e.prev=20,!s||null==o.return){e.next=24;break}return e.next=24,o.return();case 24:if(e.prev=24,!r){e.next=27;break}throw n;case 27:return e.finish(24);case 28:return e.finish(19);case 29:return e.abrupt("return",Xb.apply(void 0,i));case 30:case"end":return e.stop()}}),e,null,[[3,15,19,29],[20,,24,28]])})))).apply(this,arguments)}var ew={};function tw(e){for(var t in ew)if(e.startsWith(t)){var i=ew[t];e=e.replace(t,i)}return e.startsWith("http://")||e.startsWith("https://")||(e="".concat("").concat(e)),e}var iw=function(e){return"function"==typeof e},sw=function(e){return null!==e&&"object"===B(e)},rw=function(e){return sw(e)&&e.constructor==={}.constructor},nw=function(e){return e&&"function"==typeof e[Symbol.iterator]},ow=function(e){return e&&"function"==typeof e[Symbol.asyncIterator]},aw=function(e){return"undefined"!=typeof Response&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json},lw=function(e){return"undefined"!=typeof Blob&&e instanceof Blob},uw=function(e){return function(e){return"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||sw(e)&&iw(e.tee)&&iw(e.cancel)&&iw(e.getReader)}(e)||function(e){return sw(e)&&iw(e.read)&&iw(e.pipe)&&function(e){return"boolean"==typeof e}(e.readable)}(e)},Aw=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,cw=/^([-\w.]+\/[-\w.+]+)/;function hw(e){var t=cw.exec(e);return t?t[1]:e}function dw(e){var t=Aw.exec(e);return t?t[1]:""}var pw=/\?.*/;function fw(e){if(aw(e)){var t=gw(e.url||"");return{url:t,type:hw(e.headers.get("content-type")||"")||dw(t)}}return lw(e)?{url:gw(e.name||""),type:e.type||""}:"string"==typeof e?{url:gw(e),type:dw(e)}:{url:"",type:""}}function vw(e){return aw(e)?e.headers["content-length"]||-1:lw(e)?e.size:"string"==typeof e?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}function gw(e){return e.replace(pw,"")}function mw(e){return _w.apply(this,arguments)}function _w(){return(_w=u(a().mark((function e(t){var i,s,r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!aw(t)){e.next=2;break}return e.abrupt("return",t);case 2:return i={},(s=vw(t))>=0&&(i["content-length"]=String(s)),r=fw(t),n=r.url,(o=r.type)&&(i["content-type"]=o),e.next=9,xw(t);case 9:return(l=e.sent)&&(i["x-first-bytes"]=l),"string"==typeof t&&(t=(new TextEncoder).encode(t)),u=new Response(t,{headers:i}),Object.defineProperty(u,"url",{value:n}),e.abrupt("return",u);case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function yw(e){return bw.apply(this,arguments)}function bw(){return(bw=u(a().mark((function e(t){var i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.ok){e.next=5;break}return e.next=3,ww(t);case 3:throw i=e.sent,new Error(i);case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ww(e){return Bw.apply(this,arguments)}function Bw(){return(Bw=u(a().mark((function e(t){var i,s,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i="Failed to fetch resource ".concat(t.url," (").concat(t.status,"): "),e.prev=1,s=t.headers.get("Content-Type"),r=t.statusText,!s.includes("application/json")){e.next=11;break}return e.t0=r,e.t1=" ",e.next=9,t.text();case 9:e.t2=e.sent,r=e.t0+=e.t1.concat.call(e.t1,e.t2);case 11:i=(i+=r).length>60?"".concat(i.slice(0,60),"..."):i,e.next=17;break;case 15:e.prev=15,e.t3=e.catch(1);case 17:return e.abrupt("return",i);case 18:case"end":return e.stop()}}),e,null,[[1,15]])})))).apply(this,arguments)}function xw(e){return Pw.apply(this,arguments)}function Pw(){return(Pw=u(a().mark((function e(t){var i,s,r,n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=5,"string"!=typeof t){e.next=3;break}return e.abrupt("return","data:,".concat(t.slice(0,i)));case 3:if(!(t instanceof Blob)){e.next=8;break}return s=t.slice(0,5),e.next=7,new Promise((function(e){var t=new FileReader;t.onload=function(t){var i;return e(null==t||null===(i=t.target)||void 0===i?void 0:i.result)},t.readAsDataURL(s)}));case 7:return e.abrupt("return",e.sent);case 8:if(!(t instanceof ArrayBuffer)){e.next=12;break}return r=t.slice(0,i),n=Cw(r),e.abrupt("return","data:base64,".concat(n));case 12:return e.abrupt("return",null);case 13:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Cw(e){for(var t="",i=new Uint8Array(e),s=0;s=0)}();function Tw(e){try{var t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}var Lw=function(){function e(t,i){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sessionStorage";x(this,e),this.storage=Tw(s),this.id=t,this.config={},Object.assign(this.config,i),this._loadConfiguration()}return C(e,[{key:"getConfiguration",value:function(){return this.config}},{key:"setConfiguration",value:function(e){return this.config={},this.updateConfiguration(e)}},{key:"updateConfiguration",value:function(e){if(Object.assign(this.config,e),this.storage){var t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}return this}},{key:"_loadConfiguration",value:function(){var e={};if(this.storage){var t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}]),e}();function Rw(e,t,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:600,r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));var n=e.width*i,o=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(o/2),"px ").concat(Math.floor(n/2),"px;"),"line-height:".concat(o,"px;"),"background:url(".concat(r,");"),"background-size:".concat(n,"px ").concat(o,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}var Uw={BLACK:30,RED:31,GREEN:32,YELLOW:33,BLUE:34,MAGENTA:35,CYAN:36,WHITE:37,BRIGHT_BLACK:90,BRIGHT_RED:91,BRIGHT_GREEN:92,BRIGHT_YELLOW:93,BRIGHT_BLUE:94,BRIGHT_MAGENTA:95,BRIGHT_CYAN:96,BRIGHT_WHITE:97};function Ow(e){return"string"==typeof e?Uw[e.toUpperCase()]||Uw.WHITE:e}function Nw(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["constructor"],s=Object.getPrototypeOf(e),r=Object.getOwnPropertyNames(s),n=c(r);try{var o=function(){var s=t.value;"function"==typeof e[s]&&(i.find((function(e){return s===e}))||(e[s]=e[s].bind(e)))};for(n.s();!(t=n.n()).done;)o()}catch(e){n.e(e)}finally{n.f()}}function Qw(e,t){if(!e)throw new Error(t||"Assertion failed")}function Vw(){var e;if(Sw&&kw.performance)e=kw.performance.now();else if(Iw.hrtime){var t=Iw.hrtime();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}var Hw={debug:Sw&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},jw={enabled:!0,level:0};function Gw(){}var zw={},Ww={once:!0};function Kw(e){for(var t in e)for(var i in e[t])return i||"untitled";return"empty"}var Xw=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:""},i=t.id;x(this,e),this.id=i,this.VERSION=Dw,this._startTs=Vw(),this._deltaTs=Vw(),this.LOG_THROTTLE_TIMEOUT=0,this._storage=new Lw("__probe-".concat(this.id,"__"),jw),this.userData={},this.timeStamp("".concat(this.id," started")),Nw(this),Object.seal(this)}return C(e,[{key:"level",get:function(){return this.getLevel()},set:function(e){this.setLevel(e)}},{key:"isEnabled",value:function(){return this._storage.config.enabled}},{key:"getLevel",value:function(){return this._storage.config.level}},{key:"getTotal",value:function(){return Number((Vw()-this._startTs).toPrecision(10))}},{key:"getDelta",value:function(){return Number((Vw()-this._deltaTs).toPrecision(10))}},{key:"priority",get:function(){return this.level},set:function(e){this.level=e}},{key:"getPriority",value:function(){return this.level}},{key:"enable",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._storage.updateConfiguration({enabled:e}),this}},{key:"setLevel",value:function(e){return this._storage.updateConfiguration({level:e}),this}},{key:"assert",value:function(e,t){Qw(e,t)}},{key:"warn",value:function(e){return this._getLogFunction(0,e,Hw.warn,arguments,Ww)}},{key:"error",value:function(e){return this._getLogFunction(0,e,Hw.error,arguments)}},{key:"deprecated",value:function(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}},{key:"removed",value:function(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}},{key:"probe",value:function(e,t){return this._getLogFunction(e,t,Hw.log,arguments,{time:!0,once:!0})}},{key:"log",value:function(e,t){return this._getLogFunction(e,t,Hw.debug,arguments)}},{key:"info",value:function(e,t){return this._getLogFunction(e,t,console.info,arguments)}},{key:"once",value:function(e,t){return this._getLogFunction(e,t,Hw.debug||Hw.info,arguments,Ww)}},{key:"table",value:function(e,t,i){return t?this._getLogFunction(e,t,console.table||Gw,i&&[i],{tag:Kw(t)}):Gw}},{key:"image",value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){var t=e.logLevel,i=e.priority,s=e.image,r=e.message,n=void 0===r?"":r,o=e.scale,a=void 0===o?1:o;return this._shouldLog(t||i)?Sw?function(e){var t=e.image,i=e.message,s=void 0===i?"":i,r=e.scale,n=void 0===r?1:r;if("string"==typeof t){var o=new Image;return o.onload=function(){var e,t=Rw(o,s,n);(e=console).log.apply(e,A(t))},o.src=t,Gw}var a=t.nodeName||"";if("img"===a.toLowerCase()){var l;return(l=console).log.apply(l,A(Rw(t,s,n))),Gw}if("canvas"===a.toLowerCase()){var u=new Image;return u.onload=function(){var e;return(e=console).log.apply(e,A(Rw(u,s,n)))},u.src=t.toDataURL(),Gw}return Gw}({image:s,message:n,scale:a}):function(e){var t=e.image,i=(e.message,e.scale),s=void 0===i?1:i,r=null;try{r=module.require("asciify-image")}catch(e){}if(r)return function(){return r(t,{fit:"box",width:"".concat(Math.round(80*s),"%")}).then((function(e){return console.log(e)}))};return Gw}({image:s,message:n,scale:a}):Gw}))},{key:"settings",value:function(){console.table?console.table(this._storage.config):console.log(this._storage.config)}},{key:"get",value:function(e){return this._storage.config[e]}},{key:"set",value:function(e,t){this._storage.updateConfiguration(o({},e,t))}},{key:"time",value:function(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}},{key:"timeEnd",value:function(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}},{key:"timeStamp",value:function(e,t){return this._getLogFunction(e,t,console.timeStamp||Gw)}},{key:"group",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{collapsed:!1},s=i=Yw({logLevel:e,message:t,opts:i}),r=s.collapsed;return i.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(i)}},{key:"groupCollapsed",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.group(e,t,Object.assign({},i,{collapsed:!0}))}},{key:"groupEnd",value:function(e){return this._getLogFunction(e,"",console.groupEnd||Gw)}},{key:"withGroup",value:function(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}},{key:"trace",value:function(){console.trace&&console.trace()}},{key:"_shouldLog",value:function(e){return this.isEnabled()&&this.getLevel()>=Jw(e)}},{key:"_getLogFunction",value:function(e,t,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],r=arguments.length>4?arguments[4]:void 0;if(this._shouldLog(e)){var n;r=Yw({logLevel:e,message:t,args:s,opts:r}),Qw(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=Vw();var o=r.tag||r.message;if(r.once){if(zw[o])return Gw;zw[o]=Vw()}return t=Zw(this.id,r.message,r),(n=i).bind.apply(n,[console,t].concat(A(r.args)))}return Gw}}]),e}();function Jw(e){if(!e)return 0;var t;switch(B(e)){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return Qw(Number.isFinite(t)&&t>=0),t}function Yw(e){var t=e.logLevel,i=e.message;e.logLevel=Jw(t);for(var s=e.args?Array.from(e.args):[];s.length&&s.shift()!==i;);switch(e.args=s,B(t)){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());var r=B(e.message);return Qw("string"===r||"object"===r),Object.assign(e,e.opts)}function Zw(e,t,i){if("string"==typeof t){var s=i.time?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}((r=i.total)<10?"".concat(r.toFixed(2),"ms"):r<100?"".concat(r.toFixed(1),"ms"):r<1e3?"".concat(r.toFixed(0),"ms"):"".concat((r/1e3).toFixed(2),"s")):"";t=function(e,t,i){return Sw||"string"!=typeof e||(t&&(t=Ow(t),e="[".concat(t,"m").concat(e,"")),i&&(t=Ow(i),e="[".concat(i+10,"m").concat(e,""))),e}(t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),i.color,i.background)}var r;return t}Xw.VERSION=Dw;var qw=new Xw({id:"loaders.gl"}),$w=function(){function e(){x(this,e)}return C(e,[{key:"log",value:function(){return function(){}}},{key:"info",value:function(){return function(){}}},{key:"warn",value:function(){return function(){}}},{key:"error",value:function(){return function(){}}}]),e}(),eB={fetch:null,mimeType:void 0,nothrow:!1,log:new(function(){function e(){x(this,e),vb(this,"console",void 0),this.console=console}return C(e,[{key:"log",value:function(){for(var e,t=arguments.length,i=new Array(t),s=0;s=0)}()}var dB={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document,process:"object"===("undefined"==typeof process?"undefined":B(process))&&process},pB=dB.window||dB.self||dB.global,fB=dB.process||{},vB="undefined"!=typeof __VERSION__?__VERSION__:"untranspiled source";function gB(e){try{var t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}hB();var mB,_B=function(){function e(t){x(this,e);var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sessionStorage";vb(this,"storage",void 0),vb(this,"id",void 0),vb(this,"config",{}),this.storage=gB(s),this.id=t,this.config={},Object.assign(this.config,i),this._loadConfiguration()}return C(e,[{key:"getConfiguration",value:function(){return this.config}},{key:"setConfiguration",value:function(e){return this.config={},this.updateConfiguration(e)}},{key:"updateConfiguration",value:function(e){if(Object.assign(this.config,e),this.storage){var t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}return this}},{key:"_loadConfiguration",value:function(){var e={};if(this.storage){var t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}]),e}();function yB(e,t,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:600,r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));var n=e.width*i,o=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(o/2),"px ").concat(Math.floor(n/2),"px;"),"line-height:".concat(o,"px;"),"background:url(".concat(r,");"),"background-size:".concat(n,"px ").concat(o,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}function bB(e){return"string"==typeof e?mB[e.toUpperCase()]||mB.WHITE:e}function wB(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["constructor"],s=Object.getPrototypeOf(e),r=Object.getOwnPropertyNames(s),n=c(r);try{var o=function(){var s=t.value;"function"==typeof e[s]&&(i.find((function(e){return s===e}))||(e[s]=e[s].bind(e)))};for(n.s();!(t=n.n()).done;)o()}catch(e){n.e(e)}finally{n.f()}}function BB(e,t){if(!e)throw new Error(t||"Assertion failed")}function xB(){var e,t,i;if(hB&&"performance"in pB)e=null==pB||null===(t=pB.performance)||void 0===t||null===(i=t.now)||void 0===i?void 0:i.call(t);else if("hrtime"in fB){var s,r=null==fB||null===(s=fB.hrtime)||void 0===s?void 0:s.call(fB);e=1e3*r[0]+r[1]/1e6}else e=Date.now();return e}!function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"}(mB||(mB={}));var PB={debug:hB&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},CB={enabled:!0,level:0};function MB(){}var EB={},FB={once:!0},kB=function(){function e(){x(this,e);var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:""},i=t.id;vb(this,"id",void 0),vb(this,"VERSION",vB),vb(this,"_startTs",xB()),vb(this,"_deltaTs",xB()),vb(this,"_storage",void 0),vb(this,"userData",{}),vb(this,"LOG_THROTTLE_TIMEOUT",0),this.id=i,this._storage=new _B("__probe-".concat(this.id,"__"),CB),this.userData={},this.timeStamp("".concat(this.id," started")),wB(this),Object.seal(this)}return C(e,[{key:"level",get:function(){return this.getLevel()},set:function(e){this.setLevel(e)}},{key:"isEnabled",value:function(){return this._storage.config.enabled}},{key:"getLevel",value:function(){return this._storage.config.level}},{key:"getTotal",value:function(){return Number((xB()-this._startTs).toPrecision(10))}},{key:"getDelta",value:function(){return Number((xB()-this._deltaTs).toPrecision(10))}},{key:"priority",get:function(){return this.level},set:function(e){this.level=e}},{key:"getPriority",value:function(){return this.level}},{key:"enable",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._storage.updateConfiguration({enabled:e}),this}},{key:"setLevel",value:function(e){return this._storage.updateConfiguration({level:e}),this}},{key:"get",value:function(e){return this._storage.config[e]}},{key:"set",value:function(e,t){this._storage.updateConfiguration(o({},e,t))}},{key:"settings",value:function(){console.table?console.table(this._storage.config):console.log(this._storage.config)}},{key:"assert",value:function(e,t){BB(e,t)}},{key:"warn",value:function(e){return this._getLogFunction(0,e,PB.warn,arguments,FB)}},{key:"error",value:function(e){return this._getLogFunction(0,e,PB.error,arguments)}},{key:"deprecated",value:function(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}},{key:"removed",value:function(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}},{key:"probe",value:function(e,t){return this._getLogFunction(e,t,PB.log,arguments,{time:!0,once:!0})}},{key:"log",value:function(e,t){return this._getLogFunction(e,t,PB.debug,arguments)}},{key:"info",value:function(e,t){return this._getLogFunction(e,t,console.info,arguments)}},{key:"once",value:function(e,t){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r2&&void 0!==arguments[2]?arguments[2]:{collapsed:!1},s=DB({logLevel:e,message:t,opts:i}),r=i.collapsed;return s.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}},{key:"groupCollapsed",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.group(e,t,Object.assign({},i,{collapsed:!0}))}},{key:"groupEnd",value:function(e){return this._getLogFunction(e,"",console.groupEnd||MB)}},{key:"withGroup",value:function(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}},{key:"trace",value:function(){console.trace&&console.trace()}},{key:"_shouldLog",value:function(e){return this.isEnabled()&&this.getLevel()>=IB(e)}},{key:"_getLogFunction",value:function(e,t,i,s,r){if(this._shouldLog(e)){var n;r=DB({logLevel:e,message:t,args:s,opts:r}),BB(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=xB();var o=r.tag||r.message;if(r.once){if(EB[o])return MB;EB[o]=xB()}return t=function(e,t,i){if("string"==typeof t){var s=i.time?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}((r=i.total)<10?"".concat(r.toFixed(2),"ms"):r<100?"".concat(r.toFixed(1),"ms"):r<1e3?"".concat(r.toFixed(0),"ms"):"".concat((r/1e3).toFixed(2),"s")):"";t=function(e,t,i){return hB||"string"!=typeof e||(t&&(t=bB(t),e="[".concat(t,"m").concat(e,"")),i&&(t=bB(i),e="[".concat(i+10,"m").concat(e,""))),e}(t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),i.color,i.background)}var r;return t}(this.id,r.message,r),(n=i).bind.apply(n,[console,t].concat(A(r.args)))}return MB}}]),e}();function IB(e){if(!e)return 0;var t;switch(B(e)){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return BB(Number.isFinite(t)&&t>=0),t}function DB(e){var t=e.logLevel,i=e.message;e.logLevel=IB(t);for(var s=e.args?Array.from(e.args):[];s.length&&s.shift()!==i;);switch(B(t)){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());var r=B(e.message);return BB("string"===r||"object"===r),Object.assign(e,{args:s},e.opts)}function SB(e){for(var t in e)for(var i in e[t])return i||"untitled";return"empty"}vb(kB,"VERSION",vB);var TB=new kB({id:"loaders.gl"}),LB=/\.([^.]+)$/;function RB(e){return UB.apply(this,arguments)}function UB(){return UB=u(a().mark((function e(t){var i,s,r,o,l=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=l.length>1&&void 0!==l[1]?l[1]:[],s=l.length>2?l[2]:void 0,r=l.length>3?l[3]:void 0,QB(t)){e.next=5;break}return e.abrupt("return",null);case 5:if(!(o=OB(t,i,n(n({},s),{},{nothrow:!0}),r))){e.next=8;break}return e.abrupt("return",o);case 8:if(!lw(t)){e.next=13;break}return e.next=11,t.slice(0,10).arrayBuffer();case 11:t=e.sent,o=OB(t,i,s,r);case 13:if(o||null!=s&&s.nothrow){e.next=15;break}throw new Error(VB(t));case 15:return e.abrupt("return",o);case 16:case"end":return e.stop()}}),e)}))),UB.apply(this,arguments)}function OB(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0;if(!QB(e))return null;if(t&&!Array.isArray(t))return AB(t);var r,n=[];(t&&(n=n.concat(t)),null!=i&&i.ignoreRegisteredLoaders)||(r=n).push.apply(r,A(cB()));HB(n);var o=NB(e,n,i,s);if(!(o||null!=i&&i.nothrow))throw new Error(VB(e));return o}function NB(e,t,i,s){var r,n=fw(e),o=n.url,a=n.type,l=o||(null==s?void 0:s.url),u=null,A="";(null!=i&&i.mimeType&&(u=jB(t,null==i?void 0:i.mimeType),A="match forced by supplied MIME type ".concat(null==i?void 0:i.mimeType)),u=u||function(e,t){var i=t&&LB.exec(t),s=i&&i[1];return s?function(e,t){t=t.toLowerCase();var i,s=c(e);try{for(s.s();!(i=s.n()).done;){var r,n=i.value,o=c(n.extensions);try{for(o.s();!(r=o.n()).done;){if(r.value.toLowerCase()===t)return n}}catch(e){o.e(e)}finally{o.f()}}}catch(e){s.e(e)}finally{s.f()}return null}(e,s):null}(t,l),A=A||(u?"matched url ".concat(l):""),u=u||jB(t,a),A=A||(u?"matched MIME type ".concat(a):""),u=u||function(e,t){if(!t)return null;var i,s=c(e);try{for(s.s();!(i=s.n()).done;){var r=i.value;if("string"==typeof t){if(GB(t,r))return r}else if(ArrayBuffer.isView(t)){if(zB(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer){if(zB(t,0,r))return r}}}catch(e){s.e(e)}finally{s.f()}return null}(t,e),A=A||(u?"matched initial data ".concat(WB(e)):""),u=u||jB(t,null==i?void 0:i.fallbackMimeType),A=A||(u?"matched fallback MIME type ".concat(a):""))&&TB.log(1,"selectLoader selected ".concat(null===(r=u)||void 0===r?void 0:r.name,": ").concat(A,"."));return u}function QB(e){return!(e instanceof Response&&204===e.status)}function VB(e){var t=fw(e),i=t.url,s=t.type,r="No valid loader found (";r+=i?"".concat(function(e){var t=e&&e.lastIndexOf("/");return t>=0?e.substr(t+1):""}(i),", "):"no url provided, ",r+="MIME type: ".concat(s?'"'.concat(s,'"'):"not provided",", ");var n=e?WB(e):"";return r+=n?' first bytes: "'.concat(n,'"'):"first bytes: not available",r+=")"}function HB(e){var t,i=c(e);try{for(i.s();!(t=i.n()).done;){AB(t.value)}}catch(e){i.e(e)}finally{i.f()}}function jB(e,t){var i,s=c(e);try{for(s.s();!(i=s.n()).done;){var r=i.value;if(r.mimeTypes&&r.mimeTypes.includes(t))return r;if(t==="application/x.".concat(r.id))return r}}catch(e){s.e(e)}finally{s.f()}return null}function GB(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some((function(t){return e.startsWith(t)}))}function zB(e,t,i){return(Array.isArray(i.tests)?i.tests:[i.tests]).some((function(s){return function(e,t,i,s){if(s instanceof ArrayBuffer)return function(e,t,i){if(i=i||e.byteLength,e.byteLength1&&void 0!==arguments[1]?arguments[1]:5;if("string"==typeof e)return e.slice(0,t);if(ArrayBuffer.isView(e))return KB(e.buffer,e.byteOffset,t);if(e instanceof ArrayBuffer){var i=0;return KB(e,i,t)}return""}function KB(e,t,i){if(e.byteLength1&&void 0!==A[1]?A[1]:{},s=t.chunkSize,r=void 0===s?262144:s,n=0;case 3:if(!(n2&&void 0!==arguments[2]?arguments[2]:null;if(i)return i;var s=n({fetch:nB(t,e)},e);return Array.isArray(s.loaders)||(s.loaders=null),s}function ox(e,t){if(!t&&e&&!Array.isArray(e))return e;var i;if(e&&(i=Array.isArray(e)?e:[e]),t&&t.loaders){var s=Array.isArray(t.loaders)?t.loaders:[t.loaders];i=i?[].concat(A(i),A(s)):s}return i&&i.length?i:null}function ax(e,t,i,s){return lx.apply(this,arguments)}function lx(){return(lx=u(a().mark((function e(t,i,s,r){var n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return ub(!r||"object"===B(r)),!i||Array.isArray(i)||uB(i)||(r=void 0,s=i,i=void 0),e.next=4,t;case 4:return t=e.sent,s=s||{},n=fw(t),o=n.url,l=ox(i,r),e.next=11,RB(t,l,s);case 11:if(u=e.sent){e.next=14;break}return e.abrupt("return",null);case 14:return s=rB(s,u,l,o),r=nx({url:o,parse:ax,loaders:l},s,r),e.next=18,ux(u,t,s,r);case 18:return e.abrupt("return",e.sent);case 19:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ux(e,t,i,s){return Ax.apply(this,arguments)}function Ax(){return(Ax=u(a().mark((function e(t,i,s,r){var n,o,l,u,A,c,h,d;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return kb(t),aw(i)&&(o=(n=i).ok,l=n.redirected,u=n.status,A=n.statusText,c=n.type,h=n.url,d=Object.fromEntries(n.headers.entries()),r.response={headers:d,ok:o,redirected:l,status:u,statusText:A,type:c,url:h}),e.next=4,sx(i,t,s);case 4:if(i=e.sent,!t.parseTextSync||"string"!=typeof i){e.next=8;break}return s.dataType="text",e.abrupt("return",t.parseTextSync(i,s,r,t));case 8:if(!Nb(t,s)){e.next=12;break}return e.next=11,Qb(t,i,s,r,ax);case 11:case 15:case 19:return e.abrupt("return",e.sent);case 12:if(!t.parseText||"string"!=typeof i){e.next=16;break}return e.next=15,t.parseText(i,s,r,t);case 16:if(!t.parse){e.next=20;break}return e.next=19,t.parse(i,s,r,t);case 20:throw ub(!t.parseSync),new Error("".concat(t.id," loader - no parser found and worker is disabled"));case 22:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var cx,hx,dx="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.wasm"),px="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.js");function fx(e){return vx.apply(this,arguments)}function vx(){return(vx=u(a().mark((function e(t){var i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(i=t.modules||{}).basis){e.next=3;break}return e.abrupt("return",i.basis);case 3:return cx=cx||gx(t),e.next=6,cx;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function gx(e){return mx.apply(this,arguments)}function mx(){return(mx=u(a().mark((function e(t){var i,s,r,n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=null,s=null,e.t0=Promise,e.next=5,Sb("basis_transcoder.js","textures",t);case 5:return e.t1=e.sent,e.next=8,Sb("basis_transcoder.wasm","textures",t);case 8:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=12,e.t0.all.call(e.t0,e.t3);case 12:return r=e.sent,n=h(r,2),i=n[0],s=n[1],i=i||globalThis.BASIS,e.next=19,_x(i,s);case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function _x(e,t){var i={};return t&&(i.wasmBinary=t),new Promise((function(t){e(i).then((function(e){var i=e.BasisFile;(0,e.initializeBasis)(),t({BasisFile:i})}))}))}function yx(e){return bx.apply(this,arguments)}function bx(){return(bx=u(a().mark((function e(t){var i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(i=t.modules||{}).basisEncoder){e.next=3;break}return e.abrupt("return",i.basisEncoder);case 3:return hx=hx||wx(t),e.next=6,hx;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function wx(e){return Bx.apply(this,arguments)}function Bx(){return(Bx=u(a().mark((function e(t){var i,s,r,n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=null,s=null,e.t0=Promise,e.next=5,Sb(px,"textures",t);case 5:return e.t1=e.sent,e.next=8,Sb(dx,"textures",t);case 8:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=12,e.t0.all.call(e.t0,e.t3);case 12:return r=e.sent,n=h(r,2),i=n[0],s=n[1],i=i||globalThis.BASIS,e.next=19,xx(i,s);case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function xx(e,t){var i={};return t&&(i.wasmBinary=t),new Promise((function(t){e(i).then((function(e){var i=e.BasisFile,s=e.KTX2File,r=e.initializeBasis,n=e.BasisEncoder;r(),t({BasisFile:i,KTX2File:s,BasisEncoder:n})}))}))}var Px,Cx,Mx,Ex,Fx,kx,Ix,Dx,Sx,Tx=33776,Lx=33779,Rx=35840,Ux=35842,Ox=36196,Nx=37808,Qx=["","WEBKIT_","MOZ_"],Vx={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},Hx=null;function jx(e){if(!Hx){e=e||function(){try{return document.createElement("canvas").getContext("webgl")}catch(e){return null}}()||void 0,Hx=new Set;var t,i=c(Qx);try{for(i.s();!(t=i.n()).done;){var s=t.value;for(var r in Vx)if(e&&e.getExtension("".concat(s).concat(r))){var n=Vx[r];Hx.add(n)}}}catch(e){i.e(e)}finally{i.f()}}return Hx}(Sx=Px||(Px={}))[Sx.NONE=0]="NONE",Sx[Sx.BASISLZ=1]="BASISLZ",Sx[Sx.ZSTD=2]="ZSTD",Sx[Sx.ZLIB=3]="ZLIB",function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}(Cx||(Cx={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(Mx||(Mx={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(Ex||(Ex={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(Fx||(Fx={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(kx||(kx={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(Ix||(Ix={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(Dx||(Dx={}));var Gx=[171,75,84,88,32,50,48,187,13,10,26,10];function zx(e){var t=new Uint8Array(e);return!(t.byteLength1&&void 0!==s[1]?s[1]:null)&&mP||(i=null),!i){e.next=13;break}return e.prev=3,e.next=6,createImageBitmap(t,i);case 6:return e.abrupt("return",e.sent);case 9:e.prev=9,e.t0=e.catch(3),console.warn(e.t0),mP=!1;case 13:return e.next=15,createImageBitmap(t);case 15:return e.abrupt("return",e.sent);case 16:case"end":return e.stop()}}),e,null,[[3,9]])}))),wP.apply(this,arguments)}function BP(e){for(var t in e||gP)return!1;return!0}function xP(e){var t=PP(e);return function(e){var t=PP(e);if(!(t.byteLength>=24&&2303741511===t.getUint32(0,false)))return null;return{mimeType:"image/png",width:t.getUint32(16,false),height:t.getUint32(20,false)}}(t)||function(e){var t=PP(e);if(!(t.byteLength>=3&&65496===t.getUint16(0,false)&&255===t.getUint8(2)))return null;var i=function(){for(var e=new Set([65499,65476,65484,65501,65534]),t=65504;t<65520;++t)e.add(t);var i=new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502]);return{tableMarkers:e,sofMarkers:i}}(),s=i.tableMarkers,r=i.sofMarkers,n=2;for(;n+9=10&&1195984440===t.getUint32(0,false)))return null;return{mimeType:"image/gif",width:t.getUint16(6,true),height:t.getUint16(8,true)}}(t)||function(e){var t=PP(e);if(!(t.byteLength>=14&&16973===t.getUint16(0,false)&&t.getUint32(2,true)===t.byteLength))return null;return{mimeType:"image/bmp",width:t.getUint32(18,true),height:t.getUint32(22,true)}}(t)}function PP(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}function CP(e,t){return MP.apply(this,arguments)}function MP(){return MP=u(a().mark((function e(t,i){var s,r,n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=xP(t)||{},r=s.mimeType,ob(n=globalThis._parseImageNode),e.next=5,n(t,r);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),MP.apply(this,arguments)}function EP(){return(EP=u(a().mark((function e(t,i,s){var r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=(i=i||{}).image||{},n=r.type||"auto",o=(s||{}).url,l=FP(n),e.t0=l,e.next="imagebitmap"===e.t0?8:"image"===e.t0?12:"data"===e.t0?16:20;break;case 8:return e.next=10,_P(t,i,o);case 10:return u=e.sent,e.abrupt("break",21);case 12:return e.next=14,dP(t,i,o);case 14:return u=e.sent,e.abrupt("break",21);case 16:return e.next=18,CP(t);case 18:return u=e.sent,e.abrupt("break",21);case 20:ob(!1);case 21:return"data"===n&&(u=aP(u)),e.abrupt("return",u);case 23:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function FP(e){switch(e){case"auto":case"data":return function(){if(sP)return"imagebitmap";if(iP)return"image";if(nP)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(e){switch(e){case"auto":return sP||iP||nP;case"imagebitmap":return sP;case"image":return iP;case"data":return nP;default:throw new Error("@loaders.gl/images: image ".concat(e," not supported in this environment"))}}(e),e}}var kP={id:"image",module:"images",name:"Images",version:"3.2.6",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg"],parse:function(e,t,i){return EP.apply(this,arguments)},tests:[function(e){return Boolean(xP(new DataView(e)))}],options:{image:{type:"auto",decode:!0}}},IP=["image/png","image/jpeg","image/gif"],DP={};function SP(e){return void 0===DP[e]&&(DP[e]=function(e){switch(e){case"image/webp":return function(){if(!ab)return!1;try{return 0===document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp")}catch(e){return!1}}();case"image/svg":return ab;default:if(!ab){var t=globalThis._parseImageNode;return Boolean(t)&&IP.includes(e)}return!0}}(e)),DP[e]}function TP(e,t){if(!e)throw new Error(t||"assert failed: gltf")}function LP(e,t){if(e.startsWith("data:")||e.startsWith("http:")||e.startsWith("https:"))return e;var i=t.baseUri||t.uri;if(!i)throw new Error("'baseUri' must be provided to resolve relative url ".concat(e));return i.substr(0,i.lastIndexOf("/")+1)+e}function RP(e,t,i){var s=e.bufferViews[i];TP(s);var r=t[s.buffer];TP(r);var n=(s.byteOffset||0)+r.byteOffset;return new Uint8Array(r.arrayBuffer,n,s.byteLength)}var UP=["SCALAR","VEC2","VEC3","VEC4"],OP=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],NP=new Map(OP),QP={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},VP={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},HP={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function jP(e){return UP[e-1]||UP[0]}function GP(e){var t=NP.get(e.constructor);if(!t)throw new Error("Illegal typed array");return t}function zP(e,t){var i=HP[e.componentType],s=QP[e.type],r=VP[e.componentType],n=e.count*s,o=e.count*s*r;return TP(o>=0&&o<=t.byteLength),{ArrayType:i,length:n,byteLength:o}}var WP,KP={asset:{version:"2.0",generator:"loaders.gl"},buffers:[]},XP=function(){function e(t){x(this,e),vb(this,"gltf",void 0),vb(this,"sourceBuffers",void 0),vb(this,"byteLength",void 0),this.gltf=t||{json:n({},KP),buffers:[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}return C(e,[{key:"json",get:function(){return this.gltf.json}},{key:"getApplicationData",value:function(e){return this.json[e]}},{key:"getExtraData",value:function(e){return(this.json.extras||{})[e]}},{key:"getExtension",value:function(e){var t=this.getUsedExtensions().find((function(t){return t===e})),i=this.json.extensions||{};return t?i[e]||!0:null}},{key:"getRequiredExtension",value:function(e){var t=this.getRequiredExtensions().find((function(t){return t===e}));return t?this.getExtension(e):null}},{key:"getRequiredExtensions",value:function(){return this.json.extensionsRequired||[]}},{key:"getUsedExtensions",value:function(){return this.json.extensionsUsed||[]}},{key:"getObjectExtension",value:function(e,t){return(e.extensions||{})[t]}},{key:"getScene",value:function(e){return this.getObject("scenes",e)}},{key:"getNode",value:function(e){return this.getObject("nodes",e)}},{key:"getSkin",value:function(e){return this.getObject("skins",e)}},{key:"getMesh",value:function(e){return this.getObject("meshes",e)}},{key:"getMaterial",value:function(e){return this.getObject("materials",e)}},{key:"getAccessor",value:function(e){return this.getObject("accessors",e)}},{key:"getTexture",value:function(e){return this.getObject("textures",e)}},{key:"getSampler",value:function(e){return this.getObject("samplers",e)}},{key:"getImage",value:function(e){return this.getObject("images",e)}},{key:"getBufferView",value:function(e){return this.getObject("bufferViews",e)}},{key:"getBuffer",value:function(e){return this.getObject("buffers",e)}},{key:"getObject",value:function(e,t){if("object"===B(t))return t;var i=this.json[e]&&this.json[e][t];if(!i)throw new Error("glTF file error: Could not find ".concat(e,"[").concat(t,"]"));return i}},{key:"getTypedArrayForBufferView",value:function(e){var t=(e=this.getBufferView(e)).buffer,i=this.gltf.buffers[t];TP(i);var s=(e.byteOffset||0)+i.byteOffset;return new Uint8Array(i.arrayBuffer,s,e.byteLength)}},{key:"getTypedArrayForAccessor",value:function(e){e=this.getAccessor(e);var t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,s=zP(e,t),r=s.ArrayType,n=s.length;return new r(i,t.byteOffset+e.byteOffset,n)}},{key:"getTypedArrayForImageData",value:function(e){e=this.getAccessor(e);var t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(i,s,t.byteLength)}},{key:"addApplicationData",value:function(e,t){return this.json[e]=t,this}},{key:"addExtraData",value:function(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}},{key:"addObjectExtension",value:function(e,t,i){return e.extensions=e.extensions||{},e.extensions[t]=i,this.registerUsedExtension(t),this}},{key:"setObjectExtension",value:function(e,t,i){(e.extensions||{})[t]=i}},{key:"removeObjectExtension",value:function(e,t){var i=e.extensions||{},s=i[t];return delete i[t],s}},{key:"addExtension",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return TP(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}},{key:"addRequiredExtension",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return TP(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}},{key:"registerUsedExtension",value:function(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find((function(t){return t===e}))||this.json.extensionsUsed.push(e)}},{key:"registerRequiredExtension",value:function(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find((function(t){return t===e}))||this.json.extensionsRequired.push(e)}},{key:"removeExtension",value:function(e){this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e),this.json.extensions&&delete this.json.extensions[e]}},{key:"setDefaultScene",value:function(e){this.json.scene=e}},{key:"addScene",value:function(e){var t=e.nodeIndices;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}},{key:"addNode",value:function(e){var t=e.meshIndex,i=e.matrix;this.json.nodes=this.json.nodes||[];var s={mesh:t};return i&&(s.matrix=i),this.json.nodes.push(s),this.json.nodes.length-1}},{key:"addMesh",value:function(e){var t=e.attributes,i=e.indices,s=e.material,r=e.mode,n=void 0===r?4:r,o={primitives:[{attributes:this._addAttributes(t),mode:n}]};if(i){var a=this._addIndices(i);o.primitives[0].indices=a}return Number.isFinite(s)&&(o.primitives[0].material=s),this.json.meshes=this.json.meshes||[],this.json.meshes.push(o),this.json.meshes.length-1}},{key:"addPointCloud",value:function(e){var t={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(t),this.json.meshes.length-1}},{key:"addImage",value:function(e,t){var i=xP(e),s=t||(null==i?void 0:i.mimeType),r={bufferView:this.addBufferView(e),mimeType:s};return this.json.images=this.json.images||[],this.json.images.push(r),this.json.images.length-1}},{key:"addBufferView",value:function(e){var t=e.byteLength;TP(Number.isFinite(t)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);var i={buffer:0,byteOffset:this.byteLength,byteLength:t};return this.byteLength+=Yb(t,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(i),this.json.bufferViews.length-1}},{key:"addAccessor",value:function(e,t){var i={bufferView:e,type:jP(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(i),this.json.accessors.length-1}},{key:"addBinaryBuffer",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{size:3},i=this.addBufferView(e),s={min:t.min,max:t.max};s.min&&s.max||(s=this._getAccessorMinMax(e,t.size));var r={size:t.size,componentType:GP(e),count:Math.round(e.length/t.size),min:s.min,max:s.max};return this.addAccessor(i,Object.assign(r,t))}},{key:"addTexture",value:function(e){var t={source:e.imageIndex};return this.json.textures=this.json.textures||[],this.json.textures.push(t),this.json.textures.length-1}},{key:"addMaterial",value:function(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}},{key:"createBinaryChunk",value:function(){var e,t;this.gltf.buffers=[];var i,s=this.byteLength,r=new ArrayBuffer(s),n=new Uint8Array(r),o=0,a=c(this.sourceBuffers||[]);try{for(a.s();!(i=a.n()).done;){o=Zb(i.value,n,o)}}catch(e){a.e(e)}finally{a.f()}null!==(e=this.json)&&void 0!==e&&null!==(t=e.buffers)&&void 0!==t&&t[0]?this.json.buffers[0].byteLength=s:this.json.buffers=[{byteLength:s}],this.gltf.binary=r,this.sourceBuffers=[r]}},{key:"_removeStringFromArray",value:function(e,t){for(var i=!0;i;){var s=e.indexOf(t);s>-1?e.splice(s,1):i=!1}}},{key:"_addAttributes",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={};for(var i in e){var s=e[i],r=this._getGltfAttributeName(i),n=this.addBinaryBuffer(s.value,s);t[r]=n}return t}},{key:"_addIndices",value:function(e){return this.addBinaryBuffer(e,{size:1})}},{key:"_getGltfAttributeName",value:function(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}},{key:"_getAccessorMinMax",value:function(e,t){var i={min:null,max:null};if(e.length5&&void 0!==u[5]?u[5]:"NONE",e.next=3,sC();case 3:lC(l=e.sent,l.exports[eC[n]],t,i,s,r,l.exports[$P[o||"NONE"]]);case 5:case"end":return e.stop()}}),e)}))),iC.apply(this,arguments)}function sC(){return rC.apply(this,arguments)}function rC(){return(rC=u(a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return WP||(WP=nC()),e.abrupt("return",WP);case 2:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function nC(){return oC.apply(this,arguments)}function oC(){return(oC=u(a().mark((function e(){var t,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=JP,WebAssembly.validate(ZP)&&(t=YP,console.log("Warning: meshopt_decoder is using experimental SIMD support")),e.next=4,WebAssembly.instantiate(aC(t),{});case 4:return i=e.sent,e.next=7,i.instance.exports.__wasm_call_ctors();case 7:return e.abrupt("return",i.instance);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function aC(e){for(var t=new Uint8Array(e.length),i=0;i96?s-71:s>64?s-65:s>47?s+4:s>46?63:62}for(var r=0,n=0;nr?A:r,n=c>n?c:n,o=h>o?h:o}return[[t,i,s],[r,n,o]]}var gC=function(){function e(t,i){x(this,e),vb(this,"fields",void 0),vb(this,"metadata",void 0),function(e,t){if(!e)throw new Error(t||"loader assertion failed.")}(Array.isArray(t)),function(e){var t,i={},s=c(e);try{for(s.s();!(t=s.n()).done;){var r=t.value;i[r.name]&&console.warn("Schema: duplicated field name",r.name,r),i[r.name]=!0}}catch(e){s.e(e)}finally{s.f()}}(t),this.fields=t,this.metadata=i||new Map}return C(e,[{key:"compareTo",value:function(e){if(this.metadata!==e.metadata)return!1;if(this.fields.length!==e.fields.length)return!1;for(var t=0;t2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new Map;x(this,e),vb(this,"name",void 0),vb(this,"type",void 0),vb(this,"nullable",void 0),vb(this,"metadata",void 0),this.name=t,this.type=i,this.nullable=s,this.metadata=r}return C(e,[{key:"typeId",get:function(){return this.type&&this.type.typeId}},{key:"clone",value:function(){return new e(this.name,this.type,this.nullable,this.metadata)}},{key:"compareTo",value:function(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}},{key:"toString",value:function(){return"".concat(this.type).concat(this.nullable?", nullable":"").concat(this.metadata?", metadata: ".concat(this.metadata):"")}}]),e}();!function(e){e[e.NONE=0]="NONE",e[e.Null=1]="Null",e[e.Int=2]="Int",e[e.Float=3]="Float",e[e.Binary=4]="Binary",e[e.Utf8=5]="Utf8",e[e.Bool=6]="Bool",e[e.Decimal=7]="Decimal",e[e.Date=8]="Date",e[e.Time=9]="Time",e[e.Timestamp=10]="Timestamp",e[e.Interval=11]="Interval",e[e.List=12]="List",e[e.Struct=13]="Struct",e[e.Union=14]="Union",e[e.FixedSizeBinary=15]="FixedSizeBinary",e[e.FixedSizeList=16]="FixedSizeList",e[e.Map=17]="Map",e[e.Dictionary=-1]="Dictionary",e[e.Int8=-2]="Int8",e[e.Int16=-3]="Int16",e[e.Int32=-4]="Int32",e[e.Int64=-5]="Int64",e[e.Uint8=-6]="Uint8",e[e.Uint16=-7]="Uint16",e[e.Uint32=-8]="Uint32",e[e.Uint64=-9]="Uint64",e[e.Float16=-10]="Float16",e[e.Float32=-11]="Float32",e[e.Float64=-12]="Float64",e[e.DateDay=-13]="DateDay",e[e.DateMillisecond=-14]="DateMillisecond",e[e.TimestampSecond=-15]="TimestampSecond",e[e.TimestampMillisecond=-16]="TimestampMillisecond",e[e.TimestampMicrosecond=-17]="TimestampMicrosecond",e[e.TimestampNanosecond=-18]="TimestampNanosecond",e[e.TimeSecond=-19]="TimeSecond",e[e.TimeMillisecond=-20]="TimeMillisecond",e[e.TimeMicrosecond=-21]="TimeMicrosecond",e[e.TimeNanosecond=-22]="TimeNanosecond",e[e.DenseUnion=-23]="DenseUnion",e[e.SparseUnion=-24]="SparseUnion",e[e.IntervalDayTime=-25]="IntervalDayTime",e[e.IntervalYearMonth=-26]="IntervalYearMonth"}(_C||(_C={}));var bC=function(){function e(){x(this,e)}return C(e,[{key:"typeId",get:function(){return _C.NONE}},{key:"compareTo",value:function(e){return this===e}}],[{key:"isNull",value:function(e){return e&&e.typeId===_C.Null}},{key:"isInt",value:function(e){return e&&e.typeId===_C.Int}},{key:"isFloat",value:function(e){return e&&e.typeId===_C.Float}},{key:"isBinary",value:function(e){return e&&e.typeId===_C.Binary}},{key:"isUtf8",value:function(e){return e&&e.typeId===_C.Utf8}},{key:"isBool",value:function(e){return e&&e.typeId===_C.Bool}},{key:"isDecimal",value:function(e){return e&&e.typeId===_C.Decimal}},{key:"isDate",value:function(e){return e&&e.typeId===_C.Date}},{key:"isTime",value:function(e){return e&&e.typeId===_C.Time}},{key:"isTimestamp",value:function(e){return e&&e.typeId===_C.Timestamp}},{key:"isInterval",value:function(e){return e&&e.typeId===_C.Interval}},{key:"isList",value:function(e){return e&&e.typeId===_C.List}},{key:"isStruct",value:function(e){return e&&e.typeId===_C.Struct}},{key:"isUnion",value:function(e){return e&&e.typeId===_C.Union}},{key:"isFixedSizeBinary",value:function(e){return e&&e.typeId===_C.FixedSizeBinary}},{key:"isFixedSizeList",value:function(e){return e&&e.typeId===_C.FixedSizeList}},{key:"isMap",value:function(e){return e&&e.typeId===_C.Map}},{key:"isDictionary",value:function(e){return e&&e.typeId===_C.Dictionary}}]),e}(),wC=function(e,t){g(s,bC);var i=_(s);function s(e,t){var r;return x(this,s),vb(b(r=i.call(this)),"isSigned",void 0),vb(b(r),"bitWidth",void 0),r.isSigned=e,r.bitWidth=t,r}return C(s,[{key:"typeId",get:function(){return _C.Int}},{key:t,get:function(){return"Int"}},{key:"toString",value:function(){return"".concat(this.isSigned?"I":"Ui","nt").concat(this.bitWidth)}}]),s}(0,Symbol.toStringTag),BC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!0,8)}return C(i)}(),xC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!0,16)}return C(i)}(),PC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!0,32)}return C(i)}(),CC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!1,8)}return C(i)}(),MC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!1,16)}return C(i)}(),EC=function(e){g(i,wC);var t=_(i);function i(){return x(this,i),t.call(this,!1,32)}return C(i)}(),FC=32,kC=64,IC=function(e,t){g(s,bC);var i=_(s);function s(e){var t;return x(this,s),vb(b(t=i.call(this)),"precision",void 0),t.precision=e,t}return C(s,[{key:"typeId",get:function(){return _C.Float}},{key:t,get:function(){return"Float"}},{key:"toString",value:function(){return"Float".concat(this.precision)}}]),s}(0,Symbol.toStringTag),DC=function(e){g(i,IC);var t=_(i);function i(){return x(this,i),t.call(this,FC)}return C(i)}(),SC=function(e){g(i,IC);var t=_(i);function i(){return x(this,i),t.call(this,kC)}return C(i)}(),TC=function(e,t){g(s,bC);var i=_(s);function s(e,t){var r;return x(this,s),vb(b(r=i.call(this)),"listSize",void 0),vb(b(r),"children",void 0),r.listSize=e,r.children=[t],r}return C(s,[{key:"typeId",get:function(){return _C.FixedSizeList}},{key:"valueType",get:function(){return this.children[0].type}},{key:"valueField",get:function(){return this.children[0]}},{key:t,get:function(){return"FixedSizeList"}},{key:"toString",value:function(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">")}}]),s}(0,Symbol.toStringTag);function LC(e,t,i){var s=function(e){switch(e.constructor){case Int8Array:return new BC;case Uint8Array:return new CC;case Int16Array:return new xC;case Uint16Array:return new MC;case Int32Array:return new PC;case Uint32Array:return new EC;case Float32Array:return new DC;case Float64Array:return new SC;default:throw new Error("array type not supported")}}(t.value),r=i||function(e){var t=new Map;"byteOffset"in e&&t.set("byteOffset",e.byteOffset.toString(10));"byteStride"in e&&t.set("byteStride",e.byteStride.toString(10));"normalized"in e&&t.set("normalized",e.normalized.toString());return t}(t);return new yC(e,new TC(t.size,new yC("value",s)),!1,r)}function RC(e,t,i){var s=OC(t.metadata),r=[],n=function(e){var t={};for(var i in e){var s=e[i];t[s.name||"undefined"]=s}return t}(t.attributes);for(var o in e){var a=UC(o,e[o],n[o]);r.push(a)}if(i){var l=UC("indices",i);r.push(l)}return new gC(r,s)}function UC(e,t,i){return LC(e,t,i?OC(i.metadata):void 0)}function OC(e){var t=new Map;for(var i in e)t.set("".concat(i,".string"),JSON.stringify(e[i]));return t}var NC={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},QC={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},VC=function(){function e(t){x(this,e),vb(this,"draco",void 0),vb(this,"decoder",void 0),vb(this,"metadataQuerier",void 0),this.draco=t,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}return C(e,[{key:"destroy",value:function(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}},{key:"parseSync",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=new this.draco.DecoderBuffer;i.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);var s=this.decoder.GetEncodedGeometryType(i),r=s===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{var o;switch(s){case this.draco.TRIANGULAR_MESH:o=this.decoder.DecodeBufferToMesh(i,r);break;case this.draco.POINT_CLOUD:o=this.decoder.DecodeBufferToPointCloud(i,r);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!o.ok()||!r.ptr){var a="DRACO decompression failed: ".concat(o.error_msg());throw new Error(a)}var l=this._getDracoLoaderData(r,s,t),u=this._getMeshData(r,l,t),A=vC(u.attributes),c=RC(u.attributes,l,u.indices),h=n(n({loader:"draco",loaderData:l,header:{vertexCount:r.num_points(),boundingBox:A}},u),{},{schema:c});return h}finally{this.draco.destroy(i),r&&this.draco.destroy(r)}}},{key:"_getDracoLoaderData",value:function(e,t,i){var s=this._getTopLevelMetadata(e),r=this._getDracoAttributes(e,i);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:s,attributes:r}}},{key:"_getDracoAttributes",value:function(e,t){for(var i={},s=0;s2&&void 0!==arguments[2]&&arguments[2];if(!e)return null;if(Array.isArray(e))return new t(e);if(i&&!(e instanceof t))return new t(e);return e}(t,Float32Array)),s=t.length/i);return{buffer:t,size:i,count:s}}(e),i=t.buffer,s=t.size;return{value:i,size:s,byteOffset:0,count:t.count,type:jP(s),componentType:GP(i)}}function tM(){return(tM=u(a().mark((function e(t,i,s){var r,n,o,l,u,A;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=i&&null!==(r=i.gltf)&&void 0!==r&&r.decompressMeshes){e.next=2;break}return e.abrupt("return");case 2:n=new XP(t),o=[],l=c(oM(n));try{for(l.s();!(u=l.n()).done;)A=u.value,n.getObjectExtension(A,"KHR_draco_mesh_compression")&&o.push(iM(n,A,i,s))}catch(e){l.e(e)}finally{l.f()}return e.next=8,Promise.all(o);case 8:n.removeExtension("KHR_draco_mesh_compression");case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function iM(e,t,i,s){return sM.apply(this,arguments)}function sM(){return sM=u(a().mark((function e(t,i,s,r){var o,l,u,A,c,d,p,f,v,g,m,_,y,b;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.getObjectExtension(i,"KHR_draco_mesh_compression")){e.next=3;break}return e.abrupt("return");case 3:return l=t.getTypedArrayForBufferView(o.bufferView),u=Jb(l.buffer,l.byteOffset),A=r.parse,delete(c=n({},s))["3d-tiles"],e.next=10,A(u,ZC,c,r);case 10:for(d=e.sent,p=$C(d.attributes),f=0,v=Object.entries(p);f2&&void 0!==arguments[2]?arguments[2]:4,r=arguments.length>3?arguments[3]:void 0,n=arguments.length>4?arguments[4]:void 0;if(!r.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");var a=r.DracoWriter.encodeSync({attributes:e}),l=null==n||null===(i=n.parseSync)||void 0===i?void 0:i.call(n,{attributes:e}),u=r._addFauxAttributes(l.attributes),A=r.addBufferView(a),c={primitives:[{attributes:u,mode:s,extensions:o({},"KHR_draco_mesh_compression",{bufferView:A,attributes:u})}]};return c}function nM(e){if(!e.attributes&&Object.keys(e.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function oM(e){var t,i,r,n,o,l;return a().wrap((function(s){for(;;)switch(s.prev=s.next){case 0:t=c(e.json.meshes||[]),s.prev=1,t.s();case 3:if((i=t.n()).done){s.next=24;break}r=i.value,n=c(r.primitives),s.prev=6,n.s();case 8:if((o=n.n()).done){s.next=14;break}return l=o.value,s.next=12,l;case 12:s.next=8;break;case 14:s.next=19;break;case 16:s.prev=16,s.t0=s.catch(6),n.e(s.t0);case 19:return s.prev=19,n.f(),s.finish(19);case 22:s.next=3;break;case 24:s.next=29;break;case 26:s.prev=26,s.t1=s.catch(1),t.e(s.t1);case 29:return s.prev=29,t.f(),s.finish(29);case 32:case"end":return s.stop()}}),s,null,[[1,26,29,32],[6,16,19,22]])}function aM(){return(aM=u(a().mark((function e(t){var i,s,r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=new XP(t),s=i.json,(r=i.getExtension("KHR_lights_punctual"))&&(i.json.lights=r.lights,i.removeExtension("KHR_lights_punctual")),n=c(s.nodes||[]);try{for(n.s();!(o=n.n()).done;)l=o.value,(u=i.getObjectExtension(l,"KHR_lights_punctual"))&&(l.light=u.light),i.removeObjectExtension(l,"KHR_lights_punctual")}catch(e){n.e(e)}finally{n.f()}case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function lM(){return(lM=u(a().mark((function e(t){var i,s,r,n,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=new XP(t),(s=i.json).lights&&(TP(!(r=i.addExtension("KHR_lights_punctual")).lights),r.lights=s.lights,delete s.lights),i.json.lights){n=c(i.json.lights);try{for(n.s();!(o=n.n()).done;)l=o.value,u=l.node,i.addObjectExtension(u,"KHR_lights_punctual",l)}catch(e){n.e(e)}finally{n.f()}delete i.json.lights}case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function uM(){return(uM=u(a().mark((function e(t){var i,s,r,n,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=new XP(t),s=i.json,i.removeExtension("KHR_materials_unlit"),r=c(s.materials||[]);try{for(r.s();!(n=r.n()).done;)o=n.value,o.extensions&&o.extensions.KHR_materials_unlit&&(o.unlit=!0),i.removeObjectExtension(o,"KHR_materials_unlit")}catch(e){r.e(e)}finally{r.f()}case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function AM(){return(AM=u(a().mark((function e(t){var i,s,r,n,o,l,u,A;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=new XP(t),s=i.json,r=i.getExtension("KHR_techniques_webgl")){n=hM(r,i),o=c(s.materials||[]);try{for(o.s();!(l=o.n()).done;)u=l.value,(A=i.getObjectExtension(u,"KHR_techniques_webgl"))&&(u.technique=Object.assign({},A,n[A.technique]),u.technique.values=dM(u.technique,i)),i.removeObjectExtension(u,"KHR_techniques_webgl")}catch(e){o.e(e)}finally{o.f()}i.removeExtension("KHR_techniques_webgl")}case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function cM(){return(cM=u(a().mark((function e(t,i){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function hM(e,t){var i=e.programs,s=void 0===i?[]:i,r=e.shaders,n=void 0===r?[]:r,o=e.techniques,a=void 0===o?[]:o,l=new TextDecoder;return n.forEach((function(e){if(!Number.isFinite(e.bufferView))throw new Error("KHR_techniques_webgl: no shader code");e.code=l.decode(t.getTypedArrayForBufferView(e.bufferView))})),s.forEach((function(e){e.fragmentShader=n[e.fragmentShader],e.vertexShader=n[e.vertexShader]})),a.forEach((function(e){e.program=s[e.program]})),a}function dM(e,t){var i=Object.assign({},e.values);return Object.keys(e.uniforms||{}).forEach((function(t){e.uniforms[t].value&&!(t in i)&&(i[t]=e.uniforms[t].value)})),Object.keys(i).forEach((function(e){"object"===B(i[e])&&void 0!==i[e].index&&(i[e].texture=t.getTexture(i[e].index))})),i}var pM=[hC,dC,pC,Object.freeze({__proto__:null,name:"KHR_draco_mesh_compression",preprocess:function(e,t,i){var s,r=new XP(e),n=c(oM(r));try{for(n.s();!(s=n.n()).done;){var o=s.value;r.getObjectExtension(o,"KHR_draco_mesh_compression")}}catch(e){n.e(e)}finally{n.f()}},decode:function(e,t,i){return tM.apply(this,arguments)},encode:function(e){var t,i=new XP(e),s=c(i.json.meshes||[]);try{for(s.s();!(t=s.n()).done;){var r=t.value;rM(r),i.addRequiredExtension("KHR_draco_mesh_compression")}}catch(e){s.e(e)}finally{s.f()}}}),Object.freeze({__proto__:null,name:"KHR_lights_punctual",decode:function(e){return aM.apply(this,arguments)},encode:function(e){return lM.apply(this,arguments)}}),Object.freeze({__proto__:null,name:"KHR_materials_unlit",decode:function(e){return uM.apply(this,arguments)},encode:function(e){var t=new XP(e),i=t.json;if(t.materials){var s,r=c(i.materials||[]);try{for(r.s();!(s=r.n()).done;){var n=s.value;n.unlit&&(delete n.unlit,t.addObjectExtension(n,"KHR_materials_unlit",{}),t.addExtension("KHR_materials_unlit"))}}catch(e){r.e(e)}finally{r.f()}}}}),Object.freeze({__proto__:null,name:"KHR_techniques_webgl",decode:function(e){return AM.apply(this,arguments)},encode:function(e,t){return cM.apply(this,arguments)}})];function fM(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0,r=pM.filter((function(e){return mM(e.name,i)})),n=c(r);try{for(n.s();!(t=n.n()).done;){var o,a=t.value;null===(o=a.preprocess)||void 0===o||o.call(a,e,i,s)}}catch(e){n.e(e)}finally{n.f()}}function vM(e){return gM.apply(this,arguments)}function gM(){return gM=u(a().mark((function e(t){var i,s,r,n,o,l,u,A=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=A.length>1&&void 0!==A[1]?A[1]:{},s=A.length>2?A[2]:void 0,r=pM.filter((function(e){return mM(e.name,i)})),n=c(r),e.prev=4,n.s();case 6:if((o=n.n()).done){e.next=12;break}return l=o.value,e.next=10,null===(u=l.decode)||void 0===u?void 0:u.call(l,t,i,s);case 10:e.next=6;break;case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(4),n.e(e.t0);case 17:return e.prev=17,n.f(),e.finish(17);case 20:case"end":return e.stop()}}),e,null,[[4,14,17,20]])}))),gM.apply(this,arguments)}function mM(e,t){var i,s=(null==t||null===(i=t.gltf)||void 0===i?void 0:i.excludeExtensions)||{};return!(e in s&&!s[e])}var _M={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},yM={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},bM=function(){function e(){x(this,e),vb(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}}),vb(this,"json",void 0)}return C(e,[{key:"normalize",value:function(e,t){this.json=e.json;var i=e.json;switch(i.asset&&i.asset.version){case"2.0":return;case void 0:case"1.0":break;default:return void console.warn("glTF: Unknown version ".concat(i.asset.version))}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(i),this._convertTopLevelObjectsToArrays(i),function(e){var t,i=new XP(e),s=i.json,r=c(s.images||[]);try{for(r.s();!(t=r.n()).done;){var n=t.value,o=i.getObjectExtension(n,"KHR_binary_glTF");o&&Object.assign(n,o),i.removeObjectExtension(n,"KHR_binary_glTF")}}catch(e){r.e(e)}finally{r.f()}s.buffers&&s.buffers[0]&&delete s.buffers[0].uri,i.removeExtension("KHR_binary_glTF")}(e),this._convertObjectIdsToArrayIndices(i),this._updateObjects(i),this._updateMaterial(i)}},{key:"_addAsset",value:function(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}},{key:"_convertTopLevelObjectsToArrays",value:function(e){for(var t in _M)this._convertTopLevelObjectToArray(e,t)}},{key:"_convertTopLevelObjectToArray",value:function(e,t){var i=e[t];if(i&&!Array.isArray(i))for(var s in e[t]=[],i){var r=i[s];r.id=r.id||s;var n=e[t].length;e[t].push(r),this.idToIndexMap[t][s]=n}}},{key:"_convertObjectIdsToArrayIndices",value:function(e){for(var t in _M)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));var i,s=c(e.textures);try{for(s.s();!(i=s.n()).done;){var r=i.value;this._convertTextureIds(r)}}catch(e){s.e(e)}finally{s.f()}var n,o=c(e.meshes);try{for(o.s();!(n=o.n()).done;){var a=n.value;this._convertMeshIds(a)}}catch(e){o.e(e)}finally{o.f()}var l,u=c(e.nodes);try{for(u.s();!(l=u.n()).done;){var A=l.value;this._convertNodeIds(A)}}catch(e){u.e(e)}finally{u.f()}var h,d=c(e.scenes);try{for(d.s();!(h=d.n()).done;){var p=h.value;this._convertSceneIds(p)}}catch(e){d.e(e)}finally{d.f()}}},{key:"_convertTextureIds",value:function(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}},{key:"_convertMeshIds",value:function(e){var t,i=c(e.primitives);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.attributes,n=s.indices,o=s.material;for(var a in r)r[a]=this._convertIdToIndex(r[a],"accessor");n&&(s.indices=this._convertIdToIndex(n,"accessor")),o&&(s.material=this._convertIdToIndex(o,"material"))}}catch(e){i.e(e)}finally{i.f()}}},{key:"_convertNodeIds",value:function(e){var t=this;e.children&&(e.children=e.children.map((function(e){return t._convertIdToIndex(e,"node")}))),e.meshes&&(e.meshes=e.meshes.map((function(e){return t._convertIdToIndex(e,"mesh")})))}},{key:"_convertSceneIds",value:function(e){var t=this;e.nodes&&(e.nodes=e.nodes.map((function(e){return t._convertIdToIndex(e,"node")})))}},{key:"_convertIdsToIndices",value:function(e,t){e[t]||(console.warn("gltf v1: json doesn't contain attribute ".concat(t)),e[t]=[]);var i,s=c(e[t]);try{for(s.s();!(i=s.n()).done;){var r=i.value;for(var n in r){var o=r[n],a=this._convertIdToIndex(o,n);r[n]=a}}}catch(e){s.e(e)}finally{s.f()}}},{key:"_convertIdToIndex",value:function(e,t){var i=yM[t];if(i in this.idToIndexMap){var s=this.idToIndexMap[i][e];if(!Number.isFinite(s))throw new Error("gltf v1: failed to resolve ".concat(t," with id ").concat(e));return s}return e}},{key:"_updateObjects",value:function(e){var t,i=c(this.json.buffers);try{for(i.s();!(t=i.n()).done;){delete t.value.type}}catch(e){i.e(e)}finally{i.f()}}},{key:"_updateMaterial",value:function(e){var t,i=c(e.materials);try{var s=function(){var i=t.value;i.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};var s=(null===(r=i.values)||void 0===r?void 0:r.tex)||(null===(n=i.values)||void 0===n?void 0:n.texture2d_0),o=e.textures.findIndex((function(e){return e.id===s}));-1!==o&&(i.pbrMetallicRoughness.baseColorTexture={index:o})};for(i.s();!(t=i.n()).done;){var r,n;s()}}catch(e){i.e(e)}finally{i.f()}}}]),e}();function wM(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(new bM).normalize(e,t)}var BM={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},xM={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},PM=10240,CM=10241,MM=10242,EM=10243,FM=10497,kM=9986,IM={magFilter:PM,minFilter:CM,wrapS:MM,wrapT:EM},DM=(o(e={},PM,9729),o(e,CM,kM),o(e,MM,FM),o(e,EM,FM),e);var SM=function(){function e(){x(this,e),vb(this,"baseUri",""),vb(this,"json",{}),vb(this,"buffers",[]),vb(this,"images",[])}return C(e,[{key:"postProcess",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=e.json,s=e.buffers,r=void 0===s?[]:s,n=e.images,o=void 0===n?[]:n,a=e.baseUri,l=void 0===a?"":a;return TP(i),this.baseUri=l,this.json=i,this.buffers=r,this.images=o,this._resolveTree(this.json,t),this.json}},{key:"_resolveTree",value:function(e){var t=this;e.bufferViews&&(e.bufferViews=e.bufferViews.map((function(e,i){return t._resolveBufferView(e,i)}))),e.images&&(e.images=e.images.map((function(e,i){return t._resolveImage(e,i)}))),e.samplers&&(e.samplers=e.samplers.map((function(e,i){return t._resolveSampler(e,i)}))),e.textures&&(e.textures=e.textures.map((function(e,i){return t._resolveTexture(e,i)}))),e.accessors&&(e.accessors=e.accessors.map((function(e,i){return t._resolveAccessor(e,i)}))),e.materials&&(e.materials=e.materials.map((function(e,i){return t._resolveMaterial(e,i)}))),e.meshes&&(e.meshes=e.meshes.map((function(e,i){return t._resolveMesh(e,i)}))),e.nodes&&(e.nodes=e.nodes.map((function(e,i){return t._resolveNode(e,i)}))),e.skins&&(e.skins=e.skins.map((function(e,i){return t._resolveSkin(e,i)}))),e.scenes&&(e.scenes=e.scenes.map((function(e,i){return t._resolveScene(e,i)}))),void 0!==e.scene&&(e.scene=e.scenes[this.json.scene])}},{key:"getScene",value:function(e){return this._get("scenes",e)}},{key:"getNode",value:function(e){return this._get("nodes",e)}},{key:"getSkin",value:function(e){return this._get("skins",e)}},{key:"getMesh",value:function(e){return this._get("meshes",e)}},{key:"getMaterial",value:function(e){return this._get("materials",e)}},{key:"getAccessor",value:function(e){return this._get("accessors",e)}},{key:"getCamera",value:function(e){return null}},{key:"getTexture",value:function(e){return this._get("textures",e)}},{key:"getSampler",value:function(e){return this._get("samplers",e)}},{key:"getImage",value:function(e){return this._get("images",e)}},{key:"getBufferView",value:function(e){return this._get("bufferViews",e)}},{key:"getBuffer",value:function(e){return this._get("buffers",e)}},{key:"_get",value:function(e,t){if("object"===B(t))return t;var i=this.json[e]&&this.json[e][t];return i||console.warn("glTF file error: Could not find ".concat(e,"[").concat(t,"]")),i}},{key:"_resolveScene",value:function(e,t){var i=this;return e.id=e.id||"scene-".concat(t),e.nodes=(e.nodes||[]).map((function(e){return i.getNode(e)})),e}},{key:"_resolveNode",value:function(e,t){var i=this;return e.id=e.id||"node-".concat(t),e.children&&(e.children=e.children.map((function(e){return i.getNode(e)}))),void 0!==e.mesh?e.mesh=this.getMesh(e.mesh):void 0!==e.meshes&&e.meshes.length&&(e.mesh=e.meshes.reduce((function(e,t){var s=i.getMesh(t);return e.id=s.id,e.primitives=e.primitives.concat(s.primitives),e}),{primitives:[]})),void 0!==e.camera&&(e.camera=this.getCamera(e.camera)),void 0!==e.skin&&(e.skin=this.getSkin(e.skin)),e}},{key:"_resolveSkin",value:function(e,t){return e.id=e.id||"skin-".concat(t),e.inverseBindMatrices=this.getAccessor(e.inverseBindMatrices),e}},{key:"_resolveMesh",value:function(e,t){var i=this;return e.id=e.id||"mesh-".concat(t),e.primitives&&(e.primitives=e.primitives.map((function(e){var t=(e=n({},e)).attributes;for(var s in e.attributes={},t)e.attributes[s]=i.getAccessor(t[s]);return void 0!==e.indices&&(e.indices=i.getAccessor(e.indices)),void 0!==e.material&&(e.material=i.getMaterial(e.material)),e}))),e}},{key:"_resolveMaterial",value:function(e,t){if(e.id=e.id||"material-".concat(t),e.normalTexture&&(e.normalTexture=n({},e.normalTexture),e.normalTexture.texture=this.getTexture(e.normalTexture.index)),e.occlusionTexture&&(e.occlustionTexture=n({},e.occlustionTexture),e.occlusionTexture.texture=this.getTexture(e.occlusionTexture.index)),e.emissiveTexture&&(e.emmisiveTexture=n({},e.emmisiveTexture),e.emissiveTexture.texture=this.getTexture(e.emissiveTexture.index)),e.emissiveFactor||(e.emissiveFactor=e.emmisiveTexture?[1,1,1]:[0,0,0]),e.pbrMetallicRoughness){e.pbrMetallicRoughness=n({},e.pbrMetallicRoughness);var i=e.pbrMetallicRoughness;i.baseColorTexture&&(i.baseColorTexture=n({},i.baseColorTexture),i.baseColorTexture.texture=this.getTexture(i.baseColorTexture.index)),i.metallicRoughnessTexture&&(i.metallicRoughnessTexture=n({},i.metallicRoughnessTexture),i.metallicRoughnessTexture.texture=this.getTexture(i.metallicRoughnessTexture.index))}return e}},{key:"_resolveAccessor",value:function(e,t){var i,s;if(e.id=e.id||"accessor-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView)),e.bytesPerComponent=(i=e.componentType,xM[i]),e.components=(s=e.type,BM[s]),e.bytesPerElement=e.bytesPerComponent*e.components,e.bufferView){var r=e.bufferView.buffer,n=zP(e,e.bufferView),o=n.ArrayType,a=n.byteLength,l=(e.bufferView.byteOffset||0)+(e.byteOffset||0)+r.byteOffset,u=r.arrayBuffer.slice(l,l+a);e.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(r,l,e.bufferView.byteStride,e.bytesPerElement,e.count)),e.value=new o(u)}return e}},{key:"_getValueFromInterleavedBuffer",value:function(e,t,i,s,r){for(var n=new Uint8Array(r*s),o=0;o1&&void 0!==arguments[1]?arguments[1]:0;return"".concat(String.fromCharCode(e.getUint8(t+0))).concat(String.fromCharCode(e.getUint8(t+1))).concat(String.fromCharCode(e.getUint8(t+2))).concat(String.fromCharCode(e.getUint8(t+3)))}function UM(e,t,i){ob(e.header.byteLength>20);var s=t.getUint32(i+0,LM),r=t.getUint32(i+4,LM);return i+=8,ob(0===r),NM(e,t,i,s),i+=s,i+=QM(e,t,i,e.header.byteLength)}function OM(e,t,i,s){return ob(e.header.byteLength>20),function(e,t,i,s){for(;i+8<=e.header.byteLength;){var r=t.getUint32(i+0,LM),n=t.getUint32(i+4,LM);switch(i+=8,n){case 1313821514:NM(e,t,i,r);break;case 5130562:QM(e,t,i,r);break;case 0:s.strict||NM(e,t,i,r);break;case 1:s.strict||QM(e,t,i,r)}i+=Yb(r,4)}}(e,t,i,s),i+e.header.byteLength}function NM(e,t,i,s){var r=new Uint8Array(t.buffer,i,s),n=new TextDecoder("utf8").decode(r);return e.json=JSON.parse(n),Yb(s,4)}function QM(e,t,i,s){return e.header.hasBinChunk=!0,e.binChunks.push({byteOffset:i,byteLength:s,arrayBuffer:t.buffer}),Yb(s,4)}function VM(e,t){return HM.apply(this,arguments)}function HM(){return HM=u(a().mark((function e(t,i){var s,r,n,o,l,u,A,c,h,d,p=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=p.length>2&&void 0!==p[2]?p[2]:0,r=p.length>3?p[3]:void 0,n=p.length>4?p[4]:void 0,jM(t,i,s,r),wM(t,{normalize:null==r||null===(o=r.gltf)||void 0===o?void 0:o.normalize}),fM(t,r,n),c=[],null==r||null===(l=r.gltf)||void 0===l||!l.loadBuffers||!t.json.buffers){e.next=10;break}return e.next=10,GM(t,r,n);case 10:return null!=r&&null!==(u=r.gltf)&&void 0!==u&&u.loadImages&&(h=WM(t,r,n),c.push(h)),d=vM(t,r,n),c.push(d),e.next=15,Promise.all(c);case 15:return e.abrupt("return",null!=r&&null!==(A=r.gltf)&&void 0!==A&&A.postProcess?TM(t,r):t);case 16:case"end":return e.stop()}}),e)}))),HM.apply(this,arguments)}function jM(e,t,i,s){(s.uri&&(e.baseUri=s.uri),t instanceof ArrayBuffer&&!function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=new DataView(e),r=i.magic,n=void 0===r?1735152710:r,o=s.getUint32(t,!1);return o===n||1735152710===o}(t,i,s))&&(t=(new TextDecoder).decode(t));if("string"==typeof t)e.json=zb(t);else if(t instanceof ArrayBuffer){var r={};i=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=new DataView(t),r=RM(s,i+0),n=s.getUint32(i+4,LM),o=s.getUint32(i+8,LM);switch(Object.assign(e,{header:{byteOffset:i,byteLength:o,hasBinChunk:!1},type:r,version:n,json:{},binChunks:[]}),i+=12,e.version){case 1:return UM(e,s,i);case 2:return OM(e,s,i,{});default:throw new Error("Invalid GLB version ".concat(e.version,". Only supports v1 and v2."))}}(r,t,i,s.glb),TP("glTF"===r.type,"Invalid GLB magic string ".concat(r.type)),e._glb=r,e.json=r.json}else TP(!1,"GLTF: must be ArrayBuffer or string");var n=e.json.buffers||[];if(e.buffers=new Array(n.length).fill(null),e._glb&&e._glb.header.hasBinChunk){var o=e._glb.binChunks;e.buffers[0]={arrayBuffer:o[0].arrayBuffer,byteOffset:o[0].byteOffset,byteLength:o[0].byteLength}}var a=e.json.images||[];e.images=new Array(a.length).fill({})}function GM(e,t,i){return zM.apply(this,arguments)}function zM(){return(zM=u(a().mark((function e(t,i,s){var r,n,o,l,u,A,c,h;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.json.buffers||[],n=0;case 2:if(!(n1&&void 0!==u[1]?u[1]:{},s=u.length>2?u[2]:void 0,(i=n(n({},ZM.options),i)).gltf=n(n({},ZM.options.gltf),i.gltf),r=i.byteOffset,o=void 0===r?0:r,l={},e.next=8,VM(l,t,o,i,s);case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}}),e)}))),qM.apply(this,arguments)}var $M=function(){function e(t){x(this,e)}return C(e,[{key:"load",value:function(e,t,i,s,r,n,o){!function(e,t,i,s,r,n,o){var a=e.viewer.scene.canvas.spinner;a.processes++,"glb"===t.split(".").pop()?e.dataSource.getGLB(t,(function(o){s.basePath=tE(t),iE(e,t,o,i,s,r,n),a.processes--}),(function(e){a.processes--,o(e)})):e.dataSource.getGLTF(t,(function(o){s.basePath=tE(t),iE(e,t,o,i,s,r,n),a.processes--}),(function(e){a.processes--,o(e)}))}(e,t,i,s=s||{},r,(function(){_e.scheduleTask((function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1)})),n&&n()}),(function(t){e.error(t),o&&o(t),r.fire("error",t)}))}},{key:"parse",value:function(e,t,i,s,r,n,o){iE(e,"",t,i,s=s||{},r,(function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1),n&&n()}))}}]),e}();function eE(e){for(var t={},i={},s=e.metaObjects||[],r={},n=0,o=s.length;n0)for(var A=0;A0){null==y&&e.log("Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT");var b=y;if(e.metaModelCorrections){var w=e.metaModelCorrections.eachChildRoot[b];if(w){var B=e.metaModelCorrections.eachRootStats[w.id];B.countChildren++,B.countChildren>=B.numChildren&&(n.createEntity({id:w.id,meshIds:aE,isObject:!0}),aE.length=0)}else{e.metaModelCorrections.metaObjectsMap[b]&&(n.createEntity({id:b,meshIds:aE,isObject:!0}),aE.length=0)}}else n.createEntity({id:b,meshIds:aE,isObject:!0}),aE.length=0}}}function uE(e,t){e.plugin.error(t)}var AE={DEFAULT:{}},cE=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"GLTFLoader",e,r))._sceneModelLoader=new $M(b(s),r),s.dataSource=r.dataSource,s.objectDefaults=r.objectDefaults,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new Sh}},{key:"objectDefaults",get:function(){return this._objectDefaults},set:function(e){this._objectDefaults=e||AE}},{key:"load",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id);var i=new hh(this.viewer.scene,le.apply(t,{isModel:!0,dtxEnabled:t.dtxEnabled})),s=i.id;if(!t.src&&!t.gltf)return this.error("load() param expected: src or gltf"),i;if(t.metaModelSrc||t.metaModelJSON){var r=t.objectDefaults||this._objectDefaults||AE,n=function(n){var o;if(e.viewer.metaScene.createMetaModel(s,n,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes}),e.viewer.scene.canvas.spinner.processes--,t.includeTypes){o={};for(var a=0,l=t.includeTypes.length;a2&&void 0!==arguments[2]?arguments[2]:{},s="lightgrey",r=i.hoverColor||"rgba(0,0,0,0.4)",n=i.textColor||"black",o=500,a=o+o/3,l=a/24,u=[{boundary:[6,6,6,6],color:i.frontColor||i.color||"#55FF55"},{boundary:[18,6,6,6],color:i.backColor||i.color||"#55FF55"},{boundary:[12,6,6,6],color:i.rightColor||i.color||"#FF5555"},{boundary:[0,6,6,6],color:i.leftColor||i.color||"#FF5555"},{boundary:[6,0,6,6],color:i.topColor||i.color||"#7777FF"},{boundary:[6,12,6,6],color:i.bottomColor||i.color||"#7777FF"}],A=[{label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,1,0],up:[0,0,1]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,-1,0],up:[0,0,1]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,0,1]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,0,1]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,0,1],up:[0,-1,0]},{boundaries:[[7,5,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,0,-1],up:[1,0,1]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-1,-1],up:[0,-1,1]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,0,-1],up:[-1,0,1]},{boundaries:[[7,11,4,2]],dir:[0,1,1],up:[0,-1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,0,1],up:[-1,0,1]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,-1,1],up:[0,1,1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,0,1],up:[1,0,1]},{boundaries:[[5,7,2,4]],dir:[1,1,0],up:[0,0,1]},{boundaries:[[11,7,2,4]],dir:[-1,1,0],up:[0,0,1]},{boundaries:[[17,7,2,4]],dir:[-1,-1,0],up:[0,0,1]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,-1,0],up:[0,0,1]},{boundaries:[[5,11,2,2]],dir:[1,1,1],up:[-1,-1,1]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[1,-1,1],up:[-1,1,1]},{boundaries:[[5,5,2,2]],dir:[1,1,-1],up:[1,1,1]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-1,-1,1],up:[1,1,1]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-1,-1,-1],up:[-1,-1,1]},{boundaries:[[11,11,2,2]],dir:[-1,1,1],up:[1,-1,1]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[1,-1,-1],up:[1,-1,1]},{boundaries:[[11,5,2,2]],dir:[-1,1,-1],up:[-1,1,1]}];i.frontColor||i.color,i.backColor||i.color,i.rightColor||i.color,i.leftColor||i.color,i.topColor||i.color,i.bottomColor||i.color;for(var c=[{yUp:"",label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,0,1],up:[0,1,0]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,1,0]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,1,0]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,-1,0],up:[0,0,-1]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,1,0],up:[0,0,1]},{boundaries:[[7,5,4,2]],dir:[0,-.7071,-.7071],up:[0,.7071,-.7071]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,-1,0],up:[1,1,0]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-.7071,.7071],up:[0,.7071,.7071]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,-1,0],up:[-1,1,0]},{boundaries:[[7,11,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,1,0],up:[-1,1,0]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,1,1],up:[0,1,-1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,1,0],up:[1,1,0]},{boundaries:[[5,7,2,4]],dir:[1,0,-1],up:[0,1,0]},{boundaries:[[11,7,2,4]],dir:[-1,0,-1],up:[0,1,0]},{boundaries:[[17,7,2,4]],dir:[-1,0,1],up:[0,1,0]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,0,1],up:[0,1,0]},{boundaries:[[5,11,2,2]],dir:[.5,.7071,-.5],up:[-.5,.7071,.5]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[.5,.7071,.5],up:[-.5,.7071,-.5]},{boundaries:[[5,5,2,2]],dir:[.5,-.7071,-.5],up:[.5,.7071,-.5]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-.5,.7071,.5],up:[.5,.7071,-.5]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-.5,-.7071,.5],up:[-.5,.7071,.5]},{boundaries:[[11,11,2,2]],dir:[-.5,.7071,-.5],up:[.5,.7071,.5]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[.5,-.7071,.5],up:[.5,.7071,.5]},{boundaries:[[11,5,2,2]],dir:[-.5,-.7071,-.5],up:[-.5,.7071,-.5]}],h=0,d=A.length;h=c[0]*l&&t<=(c[0]+c[2])*l&&i>=c[1]*l&&i<=(c[1]+c[3])*l)return s}return-1},this.setAreaHighlighted=function(e,t){var i=v[e];if(!i)throw"Area not found: "+e;i.highlighted=!!t,y()},this.getAreaDir=function(e){var t=v[e];if(!t)throw"Unknown area: "+e;return t.dir},this.getAreaUp=function(e){var t=v[e];if(!t)throw"Unknown area: "+e;return t.up},this.getImage=function(){return this._textureCanvas},this.destroy=function(){this._textureCanvas&&(this._textureCanvas.parentNode.removeChild(this._textureCanvas),this._textureCanvas=null)}}var dE=$.vec3(),pE=$.vec3();$.mat4();var fE=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),s=t.call(this,"NavCube",e,r),e.navCube=b(s);var n=!0;try{s._navCubeScene=new $i(e,{canvasId:r.canvasId,canvasElement:r.canvasElement,transparent:!0}),s._navCubeCanvas=s._navCubeScene.canvas.canvas,s._navCubeScene.input.keyboardEnabled=!1}catch(e){return s.error(e),y(s)}var o=s._navCubeScene;o.clearLights(),new bi(o,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new bi(o,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new bi(o,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),s._navCubeCamera=o.camera,s._navCubeCamera.ortho.scale=7,s._navCubeCamera.ortho.near=.1,s._navCubeCamera.ortho.far=2e3,o.edgeMaterial.edgeColor=[.2,.2,.2],o.edgeMaterial.edgeAlpha=.6,s._zUp=Boolean(e.camera.zUp);var a=b(s);s.setIsProjectNorth(r.isProjectNorth),s.setProjectNorthOffsetAngle(r.projectNorthOffsetAngle);var l,u=(l=$.mat4(),function(e,t,i){return $.identityMat4(l),$.rotationMat4v(e*a._projectNorthOffsetAngle*$.DEGTORAD,[0,1,0],l),$.transformVec3(l,t,i)});s._synchCamera=function(){var t=$.rotationMat4c(-90*$.DEGTORAD,1,0,0),i=$.vec3(),s=$.vec3(),r=$.vec3();return function(){var n=e.camera.eye,o=e.camera.look,l=e.camera.up;i=$.mulVec3Scalar($.normalizeVec3($.subVec3(n,o,i)),5),a._isProjectNorth&&a._projectNorthOffsetAngle&&(i=u(-1,i,dE),l=u(-1,l,pE)),a._zUp?($.transformVec3(t,i,s),$.transformVec3(t,l,r),a._navCubeCamera.look=[0,0,0],a._navCubeCamera.eye=$.transformVec3(t,i,s),a._navCubeCamera.up=$.transformPoint3(t,l,r)):(a._navCubeCamera.look=[0,0,0],a._navCubeCamera.eye=i,a._navCubeCamera.up=l)}}(),s._cubeTextureCanvas=new hE(e,o,r),s._cubeSampler=new On(o,{image:s._cubeTextureCanvas.getImage(),flipY:!0,wrapS:1001,wrapT:1001}),s._cubeMesh=new nn(o,{geometry:new Ti(o,{primitive:"triangles",normals:[0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1],positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),material:new Ni(o,{diffuse:[.4,.4,.4],specular:[.4,.4,.4],emissive:[.6,.6,.6],diffuseMap:s._cubeSampler,emissiveMap:s._cubeSampler}),visible:!!n,edges:!0}),s._shadow=!1===r.shadowVisible?null:new nn(o,{geometry:new Ti(o,an({center:[0,0,0],radiusTop:.001,radiusBottom:1.4,height:.01,radialSegments:20,heightSegments:1,openEnded:!0})),material:new Ni(o,{diffuse:[0,0,0],specular:[0,0,0],emissive:[0,0,0],alpha:.5}),position:[0,-1.5,0],visible:!!n,pickable:!1,backfaces:!1}),s._onCameraMatrix=e.camera.on("matrix",s._synchCamera),s._onCameraWorldAxis=e.camera.on("worldAxis",(function(){e.camera.zUp?(s._zUp=!0,s._cubeTextureCanvas.setZUp(),s._repaint(),s._synchCamera()):e.camera.yUp&&(s._zUp=!1,s._cubeTextureCanvas.setYUp(),s._repaint(),s._synchCamera())})),s._onCameraFOV=e.camera.perspective.on("fov",(function(e){s._synchProjection&&(s._navCubeCamera.perspective.fov=e)})),s._onCameraProjection=e.camera.on("projection",(function(e){s._synchProjection&&(s._navCubeCamera.projection="ortho"===e||"perspective"===e?e:"perspective")}));var A=-1;function c(t,i){var s=(t-d)*-_,r=(i-p)*-_;e.camera.orbitYaw(s),e.camera.orbitPitch(-r),d=t,p=i}function h(e){var t=[0,0];if(e){for(var i=e.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t}var d,p,f=null,v=null,g=!1,m=!1,_=.5;a._navCubeCanvas.addEventListener("mouseenter",a._onMouseEnter=function(e){m=!0}),a._navCubeCanvas.addEventListener("mouseleave",a._onMouseLeave=function(e){m=!1}),a._navCubeCanvas.addEventListener("mousedown",a._onMouseDown=function(e){if(1===e.which){f=e.x,v=e.y,d=e.clientX,p=e.clientY;var t=h(e),i=o.pick({canvasPos:t});g=!!i}}),document.addEventListener("mouseup",a._onMouseUp=function(e){if(1===e.which&&(g=!1,null!==f)){var t=h(e),i=o.pick({canvasPos:t,pickSurface:!0});if(i&&i.uv){var s=a._cubeTextureCanvas.getArea(i.uv);if(s>=0&&(document.body.style.cursor="pointer",A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1),s>=0)){if(a._cubeTextureCanvas.setAreaHighlighted(s,!0),A=s,a._repaint(),e.xf+3||e.yv+3)return;var r=a._cubeTextureCanvas.getAreaDir(s);if(r){var n=a._cubeTextureCanvas.getAreaUp(s);a._isProjectNorth&&a._projectNorthOffsetAngle&&(r=u(1,r,dE),n=u(1,n,pE)),w(r,n,(function(){A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1),document.body.style.cursor="pointer",A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1),s>=0&&(a._cubeTextureCanvas.setAreaHighlighted(s,!1),A=-1,a._repaint())}))}}}}}),document.addEventListener("mousemove",a._onMouseMove=function(e){if(A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1),1!==e.buttons||g){if(g){var t=e.clientX,i=e.clientY;return document.body.style.cursor="move",void c(t,i)}if(m){var s=h(e),r=o.pick({canvasPos:s,pickSurface:!0});if(r){if(r.uv){document.body.style.cursor="pointer";var n=a._cubeTextureCanvas.getArea(r.uv);if(n===A)return;A>=0&&a._cubeTextureCanvas.setAreaHighlighted(A,!1),n>=0&&(a._cubeTextureCanvas.setAreaHighlighted(n,!0),a._repaint(),A=n)}}else document.body.style.cursor="default",A>=0&&(a._cubeTextureCanvas.setAreaHighlighted(A,!1),a._repaint(),A=-1)}}});var w=function(){var t=$.vec3();return function(i,s,r){var n=a._fitVisible?e.scene.getAABB(e.scene.visibleObjectIds):e.scene.aabb,o=$.getAABB3Diag(n);$.getAABB3Center(n,t);var l=Math.abs(o/Math.tan(a._cameraFitFOV*$.DEGTORAD));e.cameraControl.pivotPos=t,a._cameraFly?e.cameraFlight.flyTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:s||[0,1,0],orthoScale:1.1*o,fitFOV:a._cameraFitFOV,duration:a._cameraFlyDuration},r):e.cameraFlight.jumpTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:s||[0,1,0],orthoScale:1.1*o,fitFOV:a._cameraFitFOV},r)}}();return s._onUpdated=e.localeService.on("updated",(function(){s._cubeTextureCanvas.clear(),s._repaint()})),s.setVisible(r.visible),s.setCameraFitFOV(r.cameraFitFOV),s.setCameraFly(r.cameraFly),s.setCameraFlyDuration(r.cameraFlyDuration),s.setFitVisible(r.fitVisible),s.setSynchProjection(r.synchProjection),s}return C(i,[{key:"send",value:function(e,t){if("language"===e)this._cubeTextureCanvas.clear(),this._repaint()}},{key:"_repaint",value:function(){var e=this._cubeTextureCanvas.getImage();this._cubeMesh.material.diffuseMap.image=e,this._cubeMesh.material.emissiveMap.image=e}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._navCubeCanvas&&(this._cubeMesh.visible=e,this._shadow&&(this._shadow.visible=e),this._navCubeCanvas.style.visibility=e?"visible":"hidden")}},{key:"getVisible",value:function(){return!!this._navCubeCanvas&&this._cubeMesh.visible}},{key:"setFitVisible",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._fitVisible=e}},{key:"getFitVisible",value:function(){return this._fitVisible}},{key:"setCameraFly",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._cameraFly=e}},{key:"getCameraFly",value:function(){return this._cameraFly}},{key:"setCameraFitFOV",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:45;this._cameraFitFOV=e}},{key:"getCameraFitFOV",value:function(){return this._cameraFitFOV}},{key:"setCameraFlyDuration",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;this._cameraFlyDuration=e}},{key:"getCameraFlyDuration",value:function(){return this._cameraFlyDuration}},{key:"setSynchProjection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._synchProjection=e}},{key:"getSynchProjection",value:function(){return this._synchProjection}},{key:"setIsProjectNorth",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._isProjectNorth=e}},{key:"getIsProjectNorth",value:function(){return this._isProjectNorth}},{key:"setProjectNorthOffsetAngle",value:function(e){this._projectNorthOffsetAngle=e}},{key:"getProjectNorthOffsetAngle",value:function(){return this._projectNorthOffsetAngle}},{key:"destroy",value:function(){this._navCubeCanvas&&(this.viewer.localeService.off(this._onUpdated),this.viewer.camera.off(this._onCameraMatrix),this.viewer.camera.off(this._onCameraWorldAxis),this.viewer.camera.perspective.off(this._onCameraFOV),this.viewer.camera.off(this._onCameraProjection),this._navCubeCanvas.removeEventListener("mouseenter",this._onMouseEnter),this._navCubeCanvas.removeEventListener("mouseleave",this._onMouseLeave),this._navCubeCanvas.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),this._navCubeCanvas=null,this._cubeTextureCanvas.destroy(),this._cubeTextureCanvas=null,this._onMouseEnter=null,this._onMouseLeave=null,this._onMouseDown=null,this._onMouseMove=null,this._onMouseUp=null),this._navCubeScene.destroy(),this._navCubeScene=null,this._cubeMesh=null,this._shadow=null,f(w(i.prototype),"destroy",this).call(this)}}]),i}(),vE=$.vec3(),gE=function(){function e(){x(this,e)}return C(e,[{key:"load",value:function(e,t){var i=e.scene.canvas.spinner;i.processes++,mE(e,t,(function(t){yE(e,t,(function(){BE(e,t),i.processes--,_e.scheduleTask((function(){e.fire("loaded",!0,!1)}))}))}))}},{key:"parse",value:function(e,t,i,s){if(t){var r=_E(e,t,null);i&&wE(e,i,s),BE(e,r),e.src=null,e.fire("loaded",!0,!1)}else this.warn("load() param expected: objText")}}]),e}(),mE=function(e,t,i){xE(t,(function(s){var r=_E(e,s,t);i(r)}),(function(t){e.error(t)}))},_E=function(){var e={vertex_pattern:/^v\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,normal_pattern:/^vn\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,uv_pattern:/^vt\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,face_vertex:/^f\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)(?:\s+(-?\d+))?/,face_vertex_uv:/^f\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+))?/,face_vertex_uv_normal:/^f\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+)\/(-?\d+))?/,face_vertex_normal:/^f\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)(?:\s+(-?\d+)\/\/(-?\d+))?/,object_pattern:/^[og]\s*(.+)?/,smoothing_pattern:/^s\s+(\d+|on|off)/,material_library_pattern:/^mtllib /,material_use_pattern:/^usemtl /};return function(s,r,n){var o={src:n=n||"",basePath:t(n),objects:[],object:{},positions:[],normals:[],uv:[],materialLibraries:{}};i(o,"",!1),-1!==r.indexOf("\r\n")&&(r=r.replace("\r\n","\n"));for(var a=r.split("\n"),l="",u="",A="",d=[],p="function"==typeof"".trimLeft,f=0,v=a.length;f=0?i-1:i+t/3)}function r(e,t){var i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)}function n(e,t){var i=parseInt(e,10);return 2*(i>=0?i-1:i+t/2)}function o(e,t,i,s){var r=e.positions,n=e.object.geometry.positions;n.push(r[t+0]),n.push(r[t+1]),n.push(r[t+2]),n.push(r[i+0]),n.push(r[i+1]),n.push(r[i+2]),n.push(r[s+0]),n.push(r[s+1]),n.push(r[s+2])}function a(e,t){var i=e.positions,s=e.object.geometry.positions;s.push(i[t+0]),s.push(i[t+1]),s.push(i[t+2])}function l(e,t,i,s){var r=e.normals,n=e.object.geometry.normals;n.push(r[t+0]),n.push(r[t+1]),n.push(r[t+2]),n.push(r[i+0]),n.push(r[i+1]),n.push(r[i+2]),n.push(r[s+0]),n.push(r[s+1]),n.push(r[s+2])}function u(e,t,i,s){var r=e.uv,n=e.object.geometry.uv;n.push(r[t+0]),n.push(r[t+1]),n.push(r[i+0]),n.push(r[i+1]),n.push(r[s+0]),n.push(r[s+1])}function A(e,t){var i=e.uv,s=e.object.geometry.uv;s.push(i[t+0]),s.push(i[t+1])}function c(e,t,i,a,A,c,h,d,p,f,v,g,m){var _,y=e.positions.length,b=s(t,y),w=s(i,y),B=s(a,y);if(void 0===A?o(e,b,w,B):(o(e,b,w,_=s(A,y)),o(e,w,B,_)),void 0!==c){var x=e.uv.length;b=n(c,x),w=n(h,x),B=n(d,x),void 0===A?u(e,b,w,B):(u(e,b,w,_=n(p,x)),u(e,w,B,_))}if(void 0!==f){var P=e.normals.length;b=r(f,P),w=f===v?b:r(v,P),B=f===g?b:r(g,P),void 0===A?l(e,b,w,B):(l(e,b,w,_=r(m,P)),l(e,w,B,_))}}function h(e,t,i){e.object.geometry.type="Line";for(var r=e.positions.length,o=e.uv.length,l=0,u=t.length;l=0?o.substring(0,a):o).toLowerCase(),u=(u=a>=0?o.substring(a+1):"").trim(),l.toLowerCase()){case"newmtl":i(e,h),h={id:u},d=!0;break;case"ka":h.ambient=s(u);break;case"kd":h.diffuse=s(u);break;case"ks":h.specular=s(u);break;case"map_kd":h.diffuseMap||(h.diffuseMap=t(e,n,u,"sRGB"));break;case"map_ks":h.specularMap||(h.specularMap=t(e,n,u,"linear"));break;case"map_bump":case"bump":h.normalMap||(h.normalMap=t(e,n,u));break;case"ns":h.shininess=parseFloat(u);break;case"d":(A=parseFloat(u))<1&&(h.alpha=A,h.alphaMode="blend");break;case"tr":(A=parseFloat(u))>0&&(h.alpha=1-A,h.alphaMode="blend")}d&&i(e,h)};function t(e,t,i,s){var r={},n=i.split(/\s+/),o=n.indexOf("-bm");return o>=0&&n.splice(o,2),(o=n.indexOf("-s"))>=0&&(r.scale=[parseFloat(n[o+1]),parseFloat(n[o+2])],n.splice(o,4)),(o=n.indexOf("-o"))>=0&&(r.translate=[parseFloat(n[o+1]),parseFloat(n[o+2])],n.splice(o,4)),r.src=t+n.join(" ").trim(),r.flipY=!0,r.encoding=s||"linear",new On(e,r).id}function i(e,t){new Ni(e,t)}function s(t){var i=t.split(e,3);return[parseFloat(i[0]),parseFloat(i[1]),parseFloat(i[2])]}}();function BE(e,t){for(var i=0,s=t.objects.length;i0&&(o.normals=n.normals),n.uv.length>0&&(o.uv=n.uv);for(var a=new Array(o.positions.length/3),l=0;l0&&void 0!==arguments[0]?arguments[0]:{};t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id);var i=new wn(this.viewer.scene,le.apply(t,{isModel:!0})),s=i.id,r=t.src;if(!r)return this.error("load() param expected: src"),i;if(t.metaModelSrc){var n=t.metaModelSrc;le.loadJSON(n,(function(n){e.viewer.metaScene.createMetaModel(s,n),e._sceneGraphLoader.load(i,r,t)}),(function(t){e.error("load(): Failed to load model modelMetadata for model '".concat(s," from '").concat(n,"' - ").concat(t))}))}else this._sceneGraphLoader.load(i,r,t);return i.once("destroyed",(function(){e.viewer.metaScene.destroyMetaModel(s)})),i}},{key:"destroy",value:function(){f(w(i.prototype),"destroy",this).call(this)}}]),i}(),CE=new Float64Array([0,0,1]),ME=new Float64Array(4),EE=function(){function e(t){x(this,e),this.id=null,this._viewer=t.viewer,this._visible=!1,this._pos=$.vec3(),this._origin=$.vec3(),this._rtcPos=$.vec3(),this._baseDir=$.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}return C(e,[{key:"_setSectionPlane",value:function(e){var t=this;this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(function(){t._setPos(t._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(function(){t._ignoreNextSectionPlaneDirUpdate?t._ignoreNextSectionPlaneDirUpdate=!1:t._setDir(t._sectionPlane.dir)})))}},{key:"sectionPlane",get:function(){return this._sectionPlane}},{key:"_setPos",value:function(e){this._pos.set(e),Re(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}},{key:"_setDir",value:function(e){this._baseDir.set(e),this._rootNode.quaternion=$.vec3PairToQuaternion(CE,e,ME)}},{key:"_setSectionPlaneDir",value:function(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}},{key:"getVisible",value:function(){return this._visible}},{key:"setCulled",value:function(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}},{key:"_createNodes",value:function(){var e=!1,t=this._viewer.scene,i=.01;this._rootNode=new wn(t,{position:[0,0,0],scale:[5,5,5],isObject:!1});var s,r,n=this._rootNode,o={arrowHead:new Ti(n,an({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new Ti(n,an({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),arrowHeadHandle:new Ti(n,an({radiusTop:.09,radiusBottom:.09,radialSegments:8,heightSegments:1,height:.37,openEnded:!1})),curve:new Ti(n,Yn({radius:.8,tube:i,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),curveHandle:new Ti(n,Yn({radius:.8,tube:.06,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),hoop:new Ti(n,Yn({radius:.8,tube:i,radialSegments:64,tubeSegments:8,arc:2*Math.PI})),axis:new Ti(n,an({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1})),axisHandle:new Ti(n,an({radiusTop:.08,radiusBottom:.08,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},a={pickable:new Ni(n,{diffuse:[1,1,0],alpha:0,alphaMode:"blend"}),red:new Ni(n,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new Vi(n,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6}),green:new Ni(n,{diffuse:[0,1,0],emissive:[0,1,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightGreen:new Vi(n,{edges:!1,fill:!0,fillColor:[0,1,0],fillAlpha:.6}),blue:new Ni(n,{diffuse:[0,0,1],emissive:[0,0,1],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightBlue:new Vi(n,{edges:!1,fill:!0,fillColor:[0,0,1],fillAlpha:.2}),center:new Ni(n,{diffuse:[0,0,0],emissive:[0,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80}),highlightBall:new Vi(n,{edges:!1,fill:!0,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1}),highlightPlane:new Vi(n,{edges:!0,edgeWidth:3,fill:!1,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1})};this._displayMeshes={plane:n.addChild(new nn(n,{geometry:new Ti(n,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Ni(n,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,ghostMaterial:new Vi(n,{edges:!1,filled:!0,fillColor:[1,1,0],edgeColor:[0,0,0],fillAlpha:.1,backfaces:!0}),pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1],isObject:!1}),e),planeFrame:n.addChild(new nn(n,{geometry:new Ti(n,Yn({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ni(n,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),highlightMaterial:new Vi(n,{edges:!1,edgeColor:[0,0,0],filled:!0,fillColor:[.8,.8,.8],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45],isObject:!1}),e),xCurve:n.addChild(new nn(n,{geometry:o.curve,material:a.red,matrix:(s=$.rotationMat4v(90*$.DEGTORAD,[0,1,0],$.identityMat4()),r=$.rotationMat4v(270*$.DEGTORAD,[1,0,0],$.identityMat4()),$.mulMat4(r,s,$.identityMat4())),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveHandle:n.addChild(new nn(n,{geometry:o.curveHandle,material:a.pickable,matrix:function(){var e=$.rotationMat4v(90*$.DEGTORAD,[0,1,0],$.identityMat4()),t=$.rotationMat4v(270*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveArrow1:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.red,matrix:function(){var e=$.translateMat4c(0,-.07,-.8,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(0*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xCurveArrow2:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.red,matrix:function(){var e=$.translateMat4c(0,-.8,-.07,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurve:n.addChild(new nn(n,{geometry:o.curve,material:a.green,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveHandle:n.addChild(new nn(n,{geometry:o.curveHandle,material:a.pickable,rotation:[-90,0,0],pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveArrow1:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.green,matrix:function(){var e=$.translateMat4c(.07,0,-.8,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurveArrow2:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.green,matrix:function(){var e=$.translateMat4c(.8,0,-.07,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurve:n.addChild(new nn(n,{geometry:o.curve,material:a.blue,matrix:$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4()),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveHandle:n.addChild(new nn(n,{geometry:o.curveHandle,material:a.pickable,matrix:$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4()),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveCurveArrow1:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.blue,matrix:function(){var e=$.translateMat4c(.8,-.07,0,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4());return $.mulMat4(e,t,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveArrow2:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.blue,matrix:function(){var e=$.translateMat4c(.05,-.8,0,$.identityMat4()),t=$.scaleMat4v([.6,.6,.6],$.identityMat4()),i=$.rotationMat4v(90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4($.mulMat4(e,t,$.identityMat4()),i,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),center:n.addChild(new nn(n,{geometry:new Ti(n,ln({radius:.05})),material:a.center,pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.red,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrowHandle:n.addChild(new nn(n,{geometry:o.arrowHeadHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxis:n.addChild(new nn(n,{geometry:o.axis,material:a.red,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisHandle:n.addChild(new nn(n,{geometry:o.axisHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.green,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrowHandle:n.addChild(new nn(n,{geometry:o.arrowHeadHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,opacity:.2,isObject:!1}),e),yShaft:n.addChild(new nn(n,{geometry:o.axis,material:a.green,position:[0,-.5,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yShaftHandle:n.addChild(new nn(n,{geometry:o.axisHandle,material:a.pickable,position:[0,-.5,0],pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHead,material:a.blue,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrowHandle:n.addChild(new nn(n,{geometry:o.arrowHeadHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zShaft:n.addChild(new nn(n,{geometry:o.axis,material:a.blue,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1,isObject:!1}),e),zAxisHandle:n.addChild(new nn(n,{geometry:o.axisHandle,material:a.pickable,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),clippable:!1,pickable:!0,collidable:!0,visible:!1,isObject:!1}),e)},this._affordanceMeshes={planeFrame:n.addChild(new nn(n,{geometry:new Ti(n,Yn({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ni(n,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new Vi(n,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45],isObject:!1}),e),xHoop:n.addChild(new nn(n,{geometry:o.hoop,material:a.red,highlighted:!0,highlightMaterial:a.highlightRed,matrix:function(){var e=$.rotationMat4v(90*$.DEGTORAD,[0,1,0],$.identityMat4()),t=$.rotationMat4v(270*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yHoop:n.addChild(new nn(n,{geometry:o.hoop,material:a.green,highlighted:!0,highlightMaterial:a.highlightGreen,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zHoop:n.addChild(new nn(n,{geometry:o.hoop,material:a.blue,highlighted:!0,highlightMaterial:a.highlightBlue,matrix:$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4()),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHeadBig,material:a.red,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[0,0,1],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHeadBig,material:a.green,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(180*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:n.addChild(new nn(n,{geometry:o.arrowHeadBig,material:a.blue,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e)}}},{key:"_bindEvents",value:function(){var e=this,t=this,i=!1,s=-1,r=0,n=1,o=2,a=3,l=4,u=5,A=this._rootNode,c=null,h=null,d=$.vec2(),p=$.vec3([1,0,0]),f=$.vec3([0,1,0]),v=$.vec3([0,0,1]),g=this._viewer.scene.canvas.canvas,m=this._viewer.camera,_=this._viewer.scene,y=$.vec3([0,0,0]),b=-1;this._onCameraViewMatrix=_.camera.on("viewMatrix",(function(){})),this._onCameraProjMatrix=_.camera.on("projMatrix",(function(){})),this._onSceneTick=_.on("tick",(function(){var t=Math.abs($.lenVec3($.subVec3(_.camera.eye,e._pos,y)));if(t!==b&&"perspective"===m.projection){var i=.07*(Math.tan(m.perspective.fov*$.DEGTORAD)*t);A.scale=[i,i,i],b=t}if("ortho"===m.projection){var s=m.ortho.scale/10;A.scale=[s,s,s],b=t}}));var w,B,x,P,C,M=function(){var e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),E=function(){var e=$.mat4();return function(i,s){return $.quaternionToMat4(t._rootNode.quaternion,e),$.transformVec3(e,i,s),$.normalizeVec3(s),s}}(),F=(w=$.vec3(),function(e){var t=Math.abs(e[0]);return t>Math.abs(e[1])&&t>Math.abs(e[2])?$.cross3Vec3(e,[0,1,0],w):$.cross3Vec3(e,[1,0,0],w),$.cross3Vec3(w,e,w),$.normalizeVec3(w),w}),k=(B=$.vec3(),x=$.vec3(),P=$.vec4(),function(e,i,s){E(e,P);var r=F(P,i,s);D(i,r,B),D(s,r,x),$.subVec3(x,B);var n=$.dotVec3(x,P);t._pos[0]+=P[0]*n,t._pos[1]+=P[1]*n,t._pos[2]+=P[2]*n,t._rootNode.position=t._pos,t._sectionPlane&&(t._sectionPlane.pos=t._pos)}),I=function(){var e=$.vec4(),i=$.vec4(),s=$.vec4(),r=$.vec4();return function(n,o,a){if(E(n,r),!(D(o,r,e)&&D(a,r,i))){var l=F(r,o,a);D(o,l,e,1),D(a,l,i,1);var u=$.dotVec3(e,r);e[0]-=u*r[0],e[1]-=u*r[1],e[2]-=u*r[2],u=$.dotVec3(i,r),i[0]-=u*r[0],i[1]-=u*r[1],i[2]-=u*r[2]}$.normalizeVec3(e),$.normalizeVec3(i),u=$.dotVec3(e,i),u=$.clamp(u,-1,1);var A=Math.acos(u)*$.RADTODEG;$.cross3Vec3(e,i,s),$.dotVec3(s,r)<0&&(A=-A),t._rootNode.rotate(n,A),S()}}(),D=function(){var e=$.vec4([0,0,0,1]),i=$.mat4();return function(s,r,n,o){o=o||0,e[0]=s[0]/g.width*2-1,e[1]=-(s[1]/g.height*2-1),e[2]=0,e[3]=1,$.mulMat4(m.projMatrix,m.viewMatrix,i),$.inverseMat4(i),$.transformVec4(i,e,e),$.mulVec4Scalar(e,1/e[3]);var a=m.eye;$.subVec4(e,a,e);var l=t._sectionPlane.pos,u=-$.dotVec3(l,r)-o,A=$.dotVec3(r,e);if(Math.abs(A)>.005){var c=-($.dotVec3(r,a)+u)/A;return $.mulVec3Scalar(e,c,n),$.addVec3(n,a),$.subVec3(n,l,n),!0}return!1}}(),S=function(){var e=$.vec3(),i=$.mat4();return function(){t.sectionPlane&&($.quaternionToMat4(A.quaternion,i),$.transformVec3(i,[0,0,1],e),t._setSectionPlaneDir(e))}}(),T=!1;this._onCameraControlHover=this._viewer.cameraControl.on("hoverEnter",(function(t){if(e._visible&&!T){var A;switch(i=!1,C&&(C.visible=!1),t.entity.id){case e._displayMeshes.xAxisArrowHandle.id:case e._displayMeshes.xAxisHandle.id:A=e._affordanceMeshes.xAxisArrow,c=r;break;case e._displayMeshes.yAxisArrowHandle.id:case e._displayMeshes.yShaftHandle.id:A=e._affordanceMeshes.yAxisArrow,c=n;break;case e._displayMeshes.zAxisArrowHandle.id:case e._displayMeshes.zAxisHandle.id:A=e._affordanceMeshes.zAxisArrow,c=o;break;case e._displayMeshes.xCurveHandle.id:A=e._affordanceMeshes.xHoop,c=a;break;case e._displayMeshes.yCurveHandle.id:A=e._affordanceMeshes.yHoop,c=l;break;case e._displayMeshes.zCurveHandle.id:A=e._affordanceMeshes.zHoop,c=u;break;default:return void(c=s)}A&&(A.visible=!0),C=A,i=!0}})),this._onCameraControlHoverLeave=this._viewer.cameraControl.on("hoverOutEntity",(function(t){e._visible&&(C&&(C.visible=!1),C=null,c=s)})),g.addEventListener("mousedown",this._canvasMouseDownListener=function(t){if(t.preventDefault(),e._visible&&i&&(e._viewer.cameraControl.pointerEnabled=!1,1===t.which)){T=!0;var s=M(t);h=c,d[0]=s[0],d[1]=s[1]}}),g.addEventListener("mousemove",this._canvasMouseMoveListener=function(t){if(e._visible&&T){var i=M(t),s=i[0],A=i[1];switch(h){case r:k(p,d,i);break;case n:k(f,d,i);break;case o:k(v,d,i);break;case a:I(p,d,i);break;case l:I(f,d,i);break;case u:I(v,d,i)}d[0]=s,d[1]=A}}),g.addEventListener("mouseup",this._canvasMouseUpListener=function(t){e._visible&&(e._viewer.cameraControl.pointerEnabled=!0,T&&(t.which,T=!1,i=!1))}),g.addEventListener("wheel",this._canvasWheelListener=function(t){if(e._visible)Math.max(-1,Math.min(1,40*-t.deltaY))})}},{key:"_destroy",value:function(){this._unbindEvents(),this._destroyNodes()}},{key:"_unbindEvents",value:function(){var e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=e.cameraControl;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix),r.off(this._onCameraControlHover),r.off(this._onCameraControlHoverLeave)}},{key:"_destroyNodes",value:function(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}]),e}(),FE=function(){function e(t,i,s){var r=this;x(this,e),this.id=s.id,this._sectionPlane=s,this._mesh=new nn(i,{id:s.id,geometry:new Ti(i,Li({xSize:.5,ySize:.5,zSize:.001})),material:new Ni(i,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new ji(i,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new Vi(i,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new Vi(i,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});var n=$.vec3([0,0,0]),o=$.vec3(),a=$.vec3([0,0,1]),l=$.vec4(4),u=$.vec3(),A=function(){var e=r._sectionPlane.scene.center,t=[-r._sectionPlane.dir[0],-r._sectionPlane.dir[1],-r._sectionPlane.dir[2]];$.subVec3(e,r._sectionPlane.pos,n);var i=-$.dotVec3(t,n);$.normalizeVec3(t),$.mulVec3Scalar(t,i,o);var s=$.vec3PairToQuaternion(a,r._sectionPlane.dir,l);u[0]=.1*o[0],u[1]=.1*o[1],u[2]=.1*o[2],r._mesh.quaternion=s,r._mesh.position=u};this._onSectionPlanePos=this._sectionPlane.on("pos",A),this._onSectionPlaneDir=this._sectionPlane.on("dir",A),this._highlighted=!1,this._selected=!1}return C(e,[{key:"setHighlighted",value:function(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}},{key:"getHighlighted",value:function(){return this._highlighted}},{key:"setSelected",value:function(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}},{key:"getSelected",value:function(){return this._selected}},{key:"destroy",value:function(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}]),e}(),kE=function(){function e(t,i){var s=this;if(x(this,e),!(i.onHoverEnterPlane&&i.onHoverLeavePlane&&i.onClickedNothing&&i.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=t,this._viewer=t.viewer,this._onHoverEnterPlane=i.onHoverEnterPlane,this._onHoverLeavePlane=i.onHoverLeavePlane,this._onClickedNothing=i.onClickedNothing,this._onClickedPlane=i.onClickedPlane,this._visible=!0,this._planes={},this._canvas=i.overviewCanvas,this._scene=new $i(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new bi(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new bi(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new bi(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;var r=this._scene.camera,n=$.rotationMat4c(-90*$.DEGTORAD,1,0,0),o=$.vec3(),a=$.vec3(),l=$.vec3();this._synchCamera=function(){var e=s._viewer.camera.eye,t=s._viewer.camera.look,i=s._viewer.camera.up;$.mulVec3Scalar($.normalizeVec3($.subVec3(e,t,o)),7),s._zUp?($.transformVec3(n,o,a),$.transformVec3(n,i,l),r.look=[0,0,0],r.eye=$.transformVec3(n,o,a),r.up=$.transformPoint3(n,i,l)):(r.look=[0,0,0],r.eye=o,r.up=i)},this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(function(e){s._scene.camera.perspective.fov=e}));var u=null;this._onInputMouseMove=this._scene.input.on("mousemove",(function(e){var t=s._scene.pick({canvasPos:e});if(t){if(!u||t.entity.id!==u.id){if(u)s._planes[u.id]&&s._onHoverLeavePlane(u.id);u=t.entity,s._planes[u.id]&&s._onHoverEnterPlane(u.id)}}else u&&(s._onHoverLeavePlane(u.id),u=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=function(){u?s._planes[u.id]&&s._onClickedPlane(u.id):s._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=function(){u&&(s._onHoverLeavePlane(u.id),u=null)}),this.setVisible(i.overviewVisible)}return C(e,[{key:"addSectionPlane",value:function(e){this._planes[e.id]=new FE(this,this._scene,e)}},{key:"setPlaneHighlighted",value:function(e,t){var i=this._planes[e];i&&i.setHighlighted(t)}},{key:"setPlaneSelected",value:function(e,t){var i=this._planes[e];i&&i.setSelected(t)}},{key:"removeSectionPlane",value:function(e){var t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}},{key:"getVisible",value:function(){return this._visible}},{key:"destroy",value:function(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}]),e}(),IE=$.AABB3(),DE=$.vec3(),SE=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,"SectionPlanes",e))._freeControls=[],s._sectionPlanes=e.scene.sectionPlanes,s._controls={},s._shownControlId=null,null!==r.overviewCanvasId&&void 0!==r.overviewCanvasId){var n=document.getElementById(r.overviewCanvasId);n?s._overview=new kE(b(s),{overviewCanvas:n,visible:r.overviewVisible,onHoverEnterPlane:function(e){s._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:function(e){s._overview.setPlaneHighlighted(e,!1)},onClickedPlane:function(e){if(s.getShownControl()!==e){s.showControl(e);var t=s.sectionPlanes[e].pos;IE.set(s.viewer.scene.aabb),$.getAABB3Center(IE,DE),IE[0]+=t[0]-DE[0],IE[1]+=t[1]-DE[1],IE[2]+=t[2]-DE[2],IE[3]+=t[0]-DE[0],IE[4]+=t[1]-DE[1],IE[5]+=t[2]-DE[2],s.viewer.cameraFlight.flyTo({aabb:IE,fitFOV:65})}else s.hideControl()},onClickedNothing:function(){s.hideControl()}}):s.warn("Can't find overview canvas: '"+r.overviewCanvasId+"' - will create plugin without overview")}return s._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(function(e){s._sectionPlaneCreated(e)})),s}return C(i,[{key:"setOverviewVisible",value:function(e){this._overview&&this._overview.setVisible(e)}},{key:"getOverviewVisible",value:function(){if(this._overview)return this._overview.getVisible()}},{key:"sectionPlanes",get:function(){return this._sectionPlanes}},{key:"createSectionPlane",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);var t=new hn(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0});return t}},{key:"_sectionPlaneCreated",value:function(e){var t=this,i=this._freeControls.length>0?this._freeControls.pop():new EE(this);i._setSectionPlane(e),i.setVisible(!1),this._controls[e.id]=i,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(function(){t._sectionPlaneDestroyed(e)}))}},{key:"flipSectionPlanes",value:function(){var e=this.viewer.scene.sectionPlanes;for(var t in e){e[t].flipDir()}}},{key:"showControl",value:function(e){var t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}},{key:"getShownControl",value:function(){return this._shownControlId}},{key:"hideControl",value:function(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}},{key:"destroySectionPlane",value:function(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}},{key:"_sectionPlaneDestroyed",value:function(e){this._overview&&this._overview.removeSectionPlane(e);var t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}},{key:"clear",value:function(){for(var e=Object.keys(this._sectionPlanes),t=0,i=e.length;t1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"StoreyViews",e))._objectsMemento=new Ad,s._cameraMemento=new od,s.storeys={},s.modelStoreys={},s._fitStoreyMaps=!!r.fitStoreyMaps,s._onModelLoaded=s.viewer.scene.on("modelLoaded",(function(e){s._registerModelStoreys(e),s.fire("storeys",s.storeys)})),s}return C(i,[{key:"_registerModelStoreys",value:function(e){var t=this,i=this.viewer,s=i.scene,r=i.metaScene,n=r.metaModels[e],o=s.models[e];if(n&&n.rootMetaObjects)for(var a=n.rootMetaObjects,l=0,u=a.length;l.5?p.length:0,g=new TE(this,o.aabb,f,e,d,v);g._onModelDestroyed=o.once("destroyed",(function(){t._deregisterModelStoreys(e),t.fire("storeys",t.storeys)})),this.storeys[d]=g,this.modelStoreys[e]||(this.modelStoreys[e]={}),this.modelStoreys[e][d]=g}}},{key:"_deregisterModelStoreys",value:function(e){var t=this.modelStoreys[e];if(t){var i=this.viewer.scene;for(var s in t)if(t.hasOwnProperty(s)){var r=t[s],n=i.models[r.modelId];n&&n.off(r._onModelDestroyed),delete this.storeys[s]}delete this.modelStoreys[e]}}},{key:"fitStoreyMaps",get:function(){return this._fitStoreyMaps}},{key:"gotoStoreyCamera",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),void(t.done&&t.done());var s=this.viewer,r=s.scene,n=r.camera,o=i.storeyAABB;if(o[3]1&&void 0!==arguments[1]?arguments[1]:{},i=this.storeys[e];if(i){var s=this.viewer,r=s.scene,n=s.metaScene,o=n.metaObjects[e];o&&(t.hideOthers&&r.setObjectsVisible(s.scene.visibleObjectIds,!1),this.withStoreyObjects(e,(function(e,t){e&&(e.visible=!0)})))}else this.error("IfcBuildingStorey not found with this ID: "+e)}},{key:"withStoreyObjects",value:function(e,t){var i=this.viewer,s=i.scene,r=i.metaScene,n=r.metaObjects[e];if(n)for(var o=n.getObjectIDsInSubtree(),a=0,l=o.length;a1&&void 0!==arguments[1]?arguments[1]:{},i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),OE;var s,r,n=this.viewer,o=n.scene,a=t.format||"png",l=this._fitStoreyMaps?i.storeyAABB:i.modelAABB,u=Math.abs((l[5]-l[2])/(l[3]-l[0])),A=t.padding||0;t.width&&t.height?(s=t.width,r=t.height):t.height?(r=t.height,s=Math.round(r/u)):t.width?(s=t.width,r=Math.round(s*u)):(s=300,r=Math.round(s*u)),this._objectsMemento.saveObjects(o),this._cameraMemento.saveCamera(o),this.showStoreyObjects(e,le.apply(t,{hideOthers:!0})),this._arrangeStoreyMapCamera(i);var c=n.getSnapshot({width:s,height:r,format:a});return this._objectsMemento.restoreObjects(o),this._cameraMemento.restoreCamera(o),new LE(e,c,a,s,r,A)}},{key:"_arrangeStoreyMapCamera",value:function(e){var t=this.viewer,i=t.scene.camera,s=this._fitStoreyMaps?e.storeyAABB:e.modelAABB,r=$.getAABB3Center(s),n=RE;n[0]=r[0]+.5*i.worldUp[0],n[1]=r[1]+.5*i.worldUp[1],n[2]=r[2]+.5*i.worldUp[2];var o=i.worldForward;t.cameraFlight.jumpTo({eye:n,look:r,up:o});var a=(s[3]-s[0])/2,l=(s[4]-s[1])/2,u=(s[5]-s[2])/2,A=-a,c=+a,h=-l,d=+l,p=-u,f=+u;t.camera.customProjection.matrix=$.orthoMat4c(A,c,p,f,h,d,UE),t.camera.projection="customProjection"}},{key:"pickStoreyMap",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=e.storeyId,r=this.storeys[s];if(!r)return this.error("IfcBuildingStorey not found with this ID: "+s),null;var n=1-t[0]/e.width,o=1-t[1]/e.height,a=this._fitStoreyMaps?r.storeyAABB:r.modelAABB,l=a[0],u=a[1],A=a[2],c=a[3],h=a[4],d=a[5],p=c-l,f=h-u,v=d-A,g=$.vec3([l+p*n,u+.5*f,A+v*o]),m=$.vec3([0,-1,0]),_=$.addVec3(g,m,RE),y=this.viewer.camera.worldForward,b=$.lookAtMat4v(g,_,y,UE),w=this.viewer.scene.pick({pickSurface:i.pickSurface,pickInvisible:!0,matrix:b});return w}},{key:"storeyMapToWorldPos",value:function(e,t){var i=e.storeyId,s=this.storeys[i];if(!s)return this.error("IfcBuildingStorey not found with this ID: "+i),null;var r=1-t[0]/e.width,n=1-t[1]/e.height,o=this._fitStoreyMaps?s.storeyAABB:s.modelAABB,a=o[0],l=o[1],u=o[2],A=o[3],c=o[4],h=o[5],d=A-a,p=c-l,f=h-u,v=$.vec3([a+d*r,l+.5*p,u+f*n]);return v}},{key:"getStoreyContainingWorldPos",value:function(e){for(var t in this.storeys){var i=this.storeys[t];if($.point3AABB3Intersect(i.storeyAABB,e))return t}return null}},{key:"worldPosToStoreyMap",value:function(e,t,i){var s=e.storeyId,r=this.storeys[s];if(!r)return this.error("IfcBuildingStorey not found with this ID: "+s),!1;var n=this._fitStoreyMaps?r.storeyAABB:r.modelAABB,o=n[0],a=n[1],l=n[2],u=n[3]-o,A=n[4]-a,c=n[5]-l,h=this.viewer.camera.worldUp,d=h[0]>h[1]&&h[0]>h[2],p=!d&&h[1]>h[0]&&h[1]>h[2];!d&&!p&&h[2]>h[0]&&(h[2],h[1]);var f=e.width/u,v=p?e.height/c:e.height/A;return i[0]=Math.floor(e.width-(t[0]-o)*f),i[1]=Math.floor(e.height-(t[2]-l)*v),i[0]>=0&&i[0]=0&&i[1]<=e.height}},{key:"worldDirToStoreyMap",value:function(e,t,i){var s=this.viewer.camera,r=s.eye,n=s.look,o=$.subVec3(n,r,RE),a=s.worldUp,l=a[0]>a[1]&&a[0]>a[2],u=!l&&a[1]>a[0]&&a[1]>a[2];!l&&!u&&a[2]>a[0]&&(a[2],a[1]),l?(i[0]=o[1],i[1]=o[2]):u?(i[0]=o[0],i[1]=o[2]):(i[0]=o[0],i[1]=o[1]),$.normalizeVec2(i)}},{key:"destroy",value:function(){this.viewer.scene.off(this._onModelLoaded),f(w(i.prototype),"destroy",this).call(this)}}]),i}(),QE=new Float64Array([0,0,1]),VE=new Float64Array(4),HE=function(){function e(t){x(this,e),this.id=null,this._viewer=t.viewer,this._plugin=t,this._visible=!1,this._pos=$.vec3(),this._origin=$.vec3(),this._rtcPos=$.vec3(),this._baseDir=$.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}return C(e,[{key:"_setSectionPlane",value:function(e){var t=this;this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(function(){t._setPos(t._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(function(){t._ignoreNextSectionPlaneDirUpdate?t._ignoreNextSectionPlaneDirUpdate=!1:t._setDir(t._sectionPlane.dir)})))}},{key:"sectionPlane",get:function(){return this._sectionPlane}},{key:"_setPos",value:function(e){this._pos.set(e),Re(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}},{key:"_setDir",value:function(e){this._baseDir.set(e),this._rootNode.quaternion=$.vec3PairToQuaternion(QE,e,VE)}},{key:"_setSectionPlaneDir",value:function(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}},{key:"getVisible",value:function(){return this._visible}},{key:"setCulled",value:function(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}},{key:"_createNodes",value:function(){var e=!1,t=this._viewer.scene,i=.01;this._rootNode=new wn(t,{position:[0,0,0],scale:[5,5,5]});var s=this._rootNode,r={arrowHead:new Ti(s,an({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new Ti(s,an({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),axis:new Ti(s,an({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},n={red:new Ni(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),green:new Ni(s,{diffuse:[0,1,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),blue:new Ni(s,{diffuse:[0,0,1],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new Vi(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6})};this._displayMeshes={plane:s.addChild(new nn(s,{geometry:new Ti(s,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Ni(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1]}),e),planeFrame:s.addChild(new nn(s,{geometry:new Ti(s,Yn({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ni(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45]}),e),center:s.addChild(new nn(s,{geometry:new Ti(s,ln({radius:.05})),material:n.center,pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zAxisArrow:s.addChild(new nn(s,{geometry:r.arrowHead,material:n.blue,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zShaft:s.addChild(new nn(s,{geometry:r.axis,material:n.blue,matrix:function(){var e=$.translateMat4c(0,.5,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[1,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new nn(s,{geometry:new Ti(s,Yn({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Ni(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new Vi(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45]}),e),zAxisArrow:s.addChild(new nn(s,{geometry:r.arrowHeadBig,material:n.blue,matrix:function(){var e=$.translateMat4c(0,1.1,0,$.identityMat4()),t=$.rotationMat4v(-90*$.DEGTORAD,[.8,0,0],$.identityMat4());return $.mulMat4(t,e,$.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e)}}},{key:"_bindEvents",value:function(){var e=this,t=this._rootNode,i=$.vec2(),s=this._viewer.camera,r=this._viewer.scene,n=0,o=!1,a=$.vec3([0,0,0]),l=-1;this._onCameraViewMatrix=r.camera.on("viewMatrix",(function(){})),this._onCameraProjMatrix=r.camera.on("projMatrix",(function(){})),this._onSceneTick=r.on("tick",(function(){o=!1;var i=Math.abs($.lenVec3($.subVec3(r.camera.eye,e._pos,a)));if(i!==l&&"perspective"===s.projection){var u=.07*(Math.tan(s.perspective.fov*$.DEGTORAD)*i);t.scale=[u,u,u],l=i}if("ortho"===s.projection){var c=s.ortho.scale/10;t.scale=[c,c,c],l=i}0!==n&&(A(n),n=0)}));var u=function(){var e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),A=function(t){var i=e._sectionPlane.pos,s=e._sectionPlane.dir;$.addVec3(i,$.mulVec3Scalar(s,.1*t*e._plugin.getDragSensitivity(),$.vec3())),e._sectionPlane.pos=i},c=!1;this._plugin._controlElement.addEventListener("mousedown",this._canvasMouseDownListener=function(t){if(t.preventDefault(),e._visible&&(e._viewer.cameraControl.pointerEnabled=!1,1===t.which)){c=!0;var s=u(t);i[0]=s[0],i[1]=s[1]}}),this._plugin._controlElement.addEventListener("mousemove",this._canvasMouseMoveListener=function(t){if(e._visible&&c&&!o){var s=u(t),r=s[0],n=s[1];A(n-i[1]),i[0]=r,i[1]=n}}),this._plugin._controlElement.addEventListener("mouseup",this._canvasMouseUpListener=function(t){e._visible&&(e._viewer.cameraControl.pointerEnabled=!0,c&&(t.which,c=!1))}),this._plugin._controlElement.addEventListener("wheel",this._canvasWheelListener=function(t){e._visible&&(n+=Math.max(-1,Math.min(1,40*-t.deltaY)))});var h,d,p=null;this._plugin._controlElement.addEventListener("touchstart",this._handleTouchStart=function(t){t.stopPropagation(),t.preventDefault(),e._visible&&(h=t.touches[0].clientY,p=h,n=0)}),this._plugin._controlElement.addEventListener("touchmove",this._handleTouchMove=function(t){t.stopPropagation(),t.preventDefault(),e._visible&&(o||(o=!0,d=t.touches[0].clientY,null!==p&&(n+=d-p),p=d))}),this._plugin._controlElement.addEventListener("touchend",this._handleTouchEnd=function(t){t.stopPropagation(),t.preventDefault(),e._visible&&(h=null,d=null,n=0)})}},{key:"_destroy",value:function(){this._unbindEvents(),this._destroyNodes()}},{key:"_unbindEvents",value:function(){var e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=this._plugin._controlElement;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),r.removeEventListener("touchstart",this._handleTouchStart),r.removeEventListener("touchmove",this._handleTouchMove),r.removeEventListener("touchend",this._handleTouchEnd),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix)}},{key:"_destroyNodes",value:function(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}]),e}(),jE=function(){function e(t,i,s){var r=this;x(this,e),this.id=s.id,this._sectionPlane=s,this._mesh=new nn(i,{id:s.id,geometry:new Ti(i,Li({xSize:.5,ySize:.5,zSize:.001})),material:new Ni(i,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new ji(i,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new Vi(i,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new Vi(i,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});var n=$.vec3([0,0,0]),o=$.vec3(),a=$.vec3([0,0,1]),l=$.vec4(4),u=$.vec3(),A=function(){var e=r._sectionPlane.scene.center,t=[-r._sectionPlane.dir[0],-r._sectionPlane.dir[1],-r._sectionPlane.dir[2]];$.subVec3(e,r._sectionPlane.pos,n);var i=-$.dotVec3(t,n);$.normalizeVec3(t),$.mulVec3Scalar(t,i,o);var s=$.vec3PairToQuaternion(a,r._sectionPlane.dir,l);u[0]=.1*o[0],u[1]=.1*o[1],u[2]=.1*o[2],r._mesh.quaternion=s,r._mesh.position=u};this._onSectionPlanePos=this._sectionPlane.on("pos",A),this._onSectionPlaneDir=this._sectionPlane.on("dir",A),this._highlighted=!1,this._selected=!1}return C(e,[{key:"setHighlighted",value:function(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}},{key:"getHighlighted",value:function(){return this._highlighted}},{key:"setSelected",value:function(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}},{key:"getSelected",value:function(){return this._selected}},{key:"destroy",value:function(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}]),e}(),GE=function(){function e(t,i){var s=this;if(x(this,e),!(i.onHoverEnterPlane&&i.onHoverLeavePlane&&i.onClickedNothing&&i.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=t,this._viewer=t.viewer,this._onHoverEnterPlane=i.onHoverEnterPlane,this._onHoverLeavePlane=i.onHoverLeavePlane,this._onClickedNothing=i.onClickedNothing,this._onClickedPlane=i.onClickedPlane,this._visible=!0,this._planes={},this._canvas=i.overviewCanvas,this._scene=new $i(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new bi(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new bi(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new bi(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;var r=this._scene.camera,n=$.rotationMat4c(-90*$.DEGTORAD,1,0,0),o=$.vec3(),a=$.vec3(),l=$.vec3();this._synchCamera=function(){var e=s._viewer.camera.eye,t=s._viewer.camera.look,i=s._viewer.camera.up;$.mulVec3Scalar($.normalizeVec3($.subVec3(e,t,o)),7),s._zUp?($.transformVec3(n,o,a),$.transformVec3(n,i,l),r.look=[0,0,0],r.eye=$.transformVec3(n,o,a),r.up=$.transformPoint3(n,i,l)):(r.look=[0,0,0],r.eye=o,r.up=i)},this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(function(e){s._scene.camera.perspective.fov=e}));var u=null;this._onInputMouseMove=this._scene.input.on("mousemove",(function(e){var t=s._scene.pick({canvasPos:e});if(t){if(!u||t.entity.id!==u.id){if(u)s._planes[u.id]&&s._onHoverLeavePlane(u.id);u=t.entity,s._planes[u.id]&&s._onHoverEnterPlane(u.id)}}else u&&(s._onHoverLeavePlane(u.id),u=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=function(){u?s._planes[u.id]&&s._onClickedPlane(u.id):s._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=function(){u&&(s._onHoverLeavePlane(u.id),u=null)}),this.setVisible(i.overviewVisible)}return C(e,[{key:"addSectionPlane",value:function(e){this._planes[e.id]=new jE(this,this._scene,e)}},{key:"setPlaneHighlighted",value:function(e,t){var i=this._planes[e];i&&i.setHighlighted(t)}},{key:"setPlaneSelected",value:function(e,t){var i=this._planes[e];i&&i.setSelected(t)}},{key:"removeSectionPlane",value:function(e){var t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}},{key:"setVisible",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}},{key:"getVisible",value:function(){return this._visible}},{key:"destroy",value:function(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}]),e}(),zE=$.AABB3(),WE=$.vec3(),KE=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,"FaceAlignedSectionPlanesPlugin",e))._freeControls=[],s._sectionPlanes=e.scene.sectionPlanes,s._controls={},s._shownControlId=null,s._dragSensitivity=r.dragSensitivity||1,null!==r.overviewCanvasId&&void 0!==r.overviewCanvasId){var n=document.getElementById(r.overviewCanvasId);n?s._overview=new GE(b(s),{overviewCanvas:n,visible:r.overviewVisible,onHoverEnterPlane:function(e){s._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:function(e){s._overview.setPlaneHighlighted(e,!1)},onClickedPlane:function(e){if(s.getShownControl()!==e){s.showControl(e);var t=s.sectionPlanes[e].pos;zE.set(s.viewer.scene.aabb),$.getAABB3Center(zE,WE),zE[0]+=t[0]-WE[0],zE[1]+=t[1]-WE[1],zE[2]+=t[2]-WE[2],zE[3]+=t[0]-WE[0],zE[4]+=t[1]-WE[1],zE[5]+=t[2]-WE[2],s.viewer.cameraFlight.flyTo({aabb:zE,fitFOV:65})}else s.hideControl()},onClickedNothing:function(){s.hideControl()}}):s.warn("Can't find overview canvas: '"+r.overviewCanvasId+"' - will create plugin without overview")}return null===r.controlElementId||void 0===r.controlElementId?s.error("Parameter expected: controlElementId"):(s._controlElement=document.getElementById(r.controlElementId),s._controlElement||s.warn("Can't find control element: '"+r.controlElementId+"' - will create plugin without control element")),s._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(function(e){s._sectionPlaneCreated(e)})),s}return C(i,[{key:"setDragSensitivity",value:function(e){this._dragSensitivity=e||1}},{key:"getDragSensitivity",value:function(){return this._dragSensitivity}},{key:"setOverviewVisible",value:function(e){this._overview&&this._overview.setVisible(e)}},{key:"getOverviewVisible",value:function(){if(this._overview)return this._overview.getVisible()}},{key:"sectionPlanes",get:function(){return this._sectionPlanes}},{key:"createSectionPlane",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);var t=new hn(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0});return t}},{key:"_sectionPlaneCreated",value:function(e){var t=this,i=this._freeControls.length>0?this._freeControls.pop():new HE(this);i._setSectionPlane(e),i.setVisible(!1),this._controls[e.id]=i,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(function(){t._sectionPlaneDestroyed(e)}))}},{key:"flipSectionPlanes",value:function(){var e=this.viewer.scene.sectionPlanes;for(var t in e){e[t].flipDir()}}},{key:"showControl",value:function(e){var t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}},{key:"getShownControl",value:function(){return this._shownControlId}},{key:"hideControl",value:function(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}},{key:"destroySectionPlane",value:function(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}},{key:"_sectionPlaneDestroyed",value:function(e){this._overview&&this._overview.removeSectionPlane(e);var t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}},{key:"clear",value:function(){for(var e=Object.keys(this._sectionPlanes),t=0,i=e.length;t>5&31)/31,o=(E>>10&31)/31):(r=l,n=u,o=A),(w&&r!==p||n!==f||o!==v)&&(null!==p&&(g=!0),p=r,f=n,v=o)}for(var F=1;F<=3;F++){var k=x+12*F;y.push(c.getFloat32(k,!0)),y.push(c.getFloat32(k+4,!0)),y.push(c.getFloat32(k+8,!0)),b.push(P,C,M),d&&a.push(r,n,o,1)}w&&g&&(tF(i,y,b,a,_,s),y=[],b=[],a=a?[]:null,g=!1)}y.length>0&&tF(i,y,b,a,_,s)}function eF(e,t,i,s){for(var r,n,o,a,l,u,A,c=/facet([\s\S]*?)endfacet/g,h=0,d=/[\s]+([+-]?(?:\d+.\d+|\d+.|\d+|.\d+)(?:[eE][+-]?\d+)?)/.source,p=new RegExp("vertex"+d+d+d,"g"),f=new RegExp("normal"+d+d+d,"g"),v=[],g=[];null!==(a=c.exec(t));){for(l=0,u=0,A=a[0];null!==(a=f.exec(A));)r=parseFloat(a[1]),n=parseFloat(a[2]),o=parseFloat(a[3]),u++;for(;null!==(a=p.exec(A));)v.push(parseFloat(a[1]),parseFloat(a[2]),parseFloat(a[3])),g.push(r,n,o),l++;1!==u&&e.error("Error in normal of face "+h),3!==l&&e.error("Error in positions of face "+h),h++}tF(i,v,g,null,new Cn(i,{roughness:.5}),s)}function tF(e,t,i,s,r,n){for(var o=new Int32Array(t.length/3),a=0,l=o.length;a0?i:null,s=s&&s.length>0?s:null,n.smoothNormals&&$.faceToVertexNormals(t,i,n);var u=YE;Ue(t,t,u);var A=new Ti(e,{primitive:"triangles",positions:t,normals:i,colors:s,indices:o}),c=new nn(e,{origin:0!==u[0]||0!==u[1]||0!==u[2]?u:null,geometry:A,material:r,edges:n.edges});e.addChild(c)}function iF(e){return"string"!=typeof e?function(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);for(var t="",i=0,s=e.length;i1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"STLLoader",e,r))._sceneGraphLoader=new ZE,s.dataSource=r.dataSource,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new JE}},{key:"load",value:function(e){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new wn(this.viewer.scene,le.apply(e,{isModel:!0})),i=e.src,s=e.stl;return i||s?(i?this._sceneGraphLoader.load(this,t,i,e):this._sceneGraphLoader.parse(this,t,s,e),t):(this.error("load() param expected: either 'src' or 'stl'"),t)}}]),i}(),nF=function(){function e(){x(this,e)}return C(e,[{key:"createRootNode",value:function(){return document.createElement("ul")}},{key:"createNodeElement",value:function(e,t,i,s,r){var n=document.createElement("li");if(n.id=e.nodeId,e.xrayed&&n.classList.add("xrayed-node"),e.children.length>0){var o=document.createElement("a");o.href="#",o.id="switch-".concat(e.nodeId),o.textContent="+",o.classList.add("plus"),t&&o.addEventListener("click",t),n.appendChild(o)}var a=document.createElement("input");a.id="checkbox-".concat(e.nodeId),a.type="checkbox",a.checked=e.checked,a.style["pointer-events"]="all",i&&a.addEventListener("change",i),n.appendChild(a);var l=document.createElement("span");return l.textContent=e.title,n.appendChild(l),s&&(l.oncontextmenu=s),r&&(l.onclick=r),n}},{key:"createDisabledNodeElement",value:function(e){var t=document.createElement("li"),i=document.createElement("a");i.href="#",i.textContent="!",i.classList.add("warn"),i.classList.add("warning"),t.appendChild(i);var s=document.createElement("span");return s.textContent=e,t.appendChild(s),t}},{key:"addChildren",value:function(e,t){var i=document.createElement("ul");t.forEach((function(e){i.appendChild(e)})),e.parentElement.appendChild(i)}},{key:"expand",value:function(e,t,i){e.classList.remove("plus"),e.classList.add("minus"),e.textContent="-",e.removeEventListener("click",t),e.addEventListener("click",i)}},{key:"collapse",value:function(e,t,i){if(e){var s=e.parentElement;if(s){var r=s.querySelector("ul");r&&(s.removeChild(r),e.classList.remove("minus"),e.classList.add("plus"),e.textContent="+",e.removeEventListener("click",i),e.addEventListener("click",t))}}}},{key:"isExpanded",value:function(e){return void 0!==e.parentElement.getElementsByTagName("li")[0]}},{key:"getId",value:function(e){return e.parentElement.id}},{key:"getIdFromCheckbox",value:function(e){return e.id.replace("checkbox-","")}},{key:"getSwitchElement",value:function(e){return document.getElementById("switch-".concat(e))}},{key:"isChecked",value:function(e){return e.checked}},{key:"setCheckbox",value:function(e,t){var i=document.getElementById("checkbox-".concat(e));i&&t!==i.checked&&(i.checked=t)}},{key:"setXRayed",value:function(e,t){var i=document.getElementById(e);i&&(t?i.classList.add("xrayed-node"):i.classList.remove("xrayed-node"))}},{key:"setHighlighted",value:function(e,t){var i=document.getElementById(e);i&&(t?(i.scrollIntoView({block:"center"}),i.classList.add("highlighted-node")):i.classList.remove("highlighted-node"))}}]),e}(),oF=[],aF=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,i),(s=t.call(this,"TreeViewPlugin",e)).errors=[],s.valid=!0;var n=r.containerElement||document.getElementById(r.containerElementId);if(!(n instanceof HTMLElement))return s.error("Mandatory config expected: valid containerElementId or containerElement"),y(s);for(var o=0;;o++)if(!oF[o]){oF[o]=b(s),s._index=o,s._id="tree-".concat(o);break}if(s._containerElement=n,s._metaModels={},s._autoAddModels=!1!==r.autoAddModels,s._autoExpandDepth=r.autoExpandDepth||0,s._sortNodes=!1!==r.sortNodes,s._viewer=e,s._rootElement=null,s._muteSceneEvents=!1,s._muteTreeEvents=!1,s._rootNodes=[],s._objectNodes={},s._nodeNodes={},s._rootNames={},s._sortNodes=r.sortNodes,s._pruneEmptyNodes=r.pruneEmptyNodes,s._showListItemElementId=null,s._renderService=r.renderService||new nF,!s._renderService)throw new Error("TreeViewPlugin: no render service set");if(s._containerElement.oncontextmenu=function(e){e.preventDefault()},s._onObjectVisibility=s._viewer.scene.on("objectVisibility",(function(e){if(!s._muteSceneEvents){var t=e.id,i=s._objectNodes[t];if(i){var r=e.visible;if(r!==i.checked){s._muteTreeEvents=!0,i.checked=r,r?i.numVisibleEntities++:i.numVisibleEntities--,s._renderService.setCheckbox(i.nodeId,r);for(var n=i.parent;n;)n.checked=r,r?n.numVisibleEntities++:n.numVisibleEntities--,s._renderService.setCheckbox(n.nodeId,n.numVisibleEntities>0),n=n.parent;s._muteTreeEvents=!1}}}})),s._onObjectXrayed=s._viewer.scene.on("objectXRayed",(function(e){if(!s._muteSceneEvents){var t=e.id,i=s._objectNodes[t];if(i){s._muteTreeEvents=!0;var r=e.xrayed;r!==i.xrayed&&(i.xrayed=r,s._renderService.setXRayed(i.nodeId,r),s._muteTreeEvents=!1)}}})),s._switchExpandHandler=function(e){e.preventDefault(),e.stopPropagation();var t=e.target;s._expandSwitchElement(t)},s._switchCollapseHandler=function(e){e.preventDefault(),e.stopPropagation();var t=e.target;s._collapseSwitchElement(t)},s._checkboxChangeHandler=function(e){if(!s._muteTreeEvents){s._muteSceneEvents=!0;var t=e.target,i=s._renderService.isChecked(t),r=s._renderService.getIdFromCheckbox(t),n=s._nodeNodes[r],o=s._viewer.scene.objects,a=0;s._withNodeTree(n,(function(e){var t=e.objectId,r=o[t],n=0===e.children.length;e.numVisibleEntities=i?e.numEntities:0,n&&i!==e.checked&&a++,e.checked=i,s._renderService.setCheckbox(e.nodeId,i),r&&(r.visible=i)}));for(var l=n.parent;l;)l.checked=i,i?l.numVisibleEntities+=a:l.numVisibleEntities-=a,s._renderService.setCheckbox(l.nodeId,l.numVisibleEntities>0),l=l.parent;s._muteSceneEvents=!1}},s._hierarchy=r.hierarchy||"containment",s._autoExpandDepth=r.autoExpandDepth||0,s._autoAddModels){for(var a=Object.keys(s.viewer.metaScene.metaModels),l=0,u=a.length;l1&&void 0!==arguments[1]?arguments[1]:{};if(this._containerElement){var s=this.viewer.scene.models[e];if(!s)throw"Model not found: "+e;var r=this.viewer.metaScene.metaModels[e];r?this._metaModels[e]?this.warn("Model already added: "+e):(this._metaModels[e]=r,i&&i.rootName&&(this._rootNames[e]=i.rootName),s.on("destroyed",(function(){t.removeModel(s.id)})),this._createNodes()):this.error("MetaModel not found: "+e)}}},{key:"removeModel",value:function(e){this._containerElement&&(this._metaModels[e]&&(this._rootNames[e]&&delete this._rootNames[e],delete this._metaModels[e],this._createNodes()))}},{key:"showNode",value:function(e){this.unShowNode();var t=this._objectNodes[e];if(t){var i=t.nodeId,s=this._renderService.getSwitchElement(i);if(s)return this._expandSwitchElement(s),s.scrollIntoView(),!0;var r=[];r.unshift(t);for(var n=t.parent;n;)r.unshift(n),n=n.parent;for(var o=0,a=r.length;o0;return this.valid}},{key:"_validateMetaModelForStoreysHierarchy",value:function(){return!0}},{key:"_createEnabledNodes",value:function(){switch(this._pruneEmptyNodes&&this._findEmptyNodes(),this._hierarchy){case"storeys":this._createStoreysNodes(),0===this._rootNodes.length&&this.error("Failed to build storeys hierarchy");break;case"types":this._createTypesNodes();break;default:this._createContainmentNodes()}this._sortNodes&&this._doSortNodes(),this._synchNodesToEntities(),this._createTrees(),this.expandToDepth(this._autoExpandDepth)}},{key:"_createDisabledNodes",value:function(){var e=this._renderService.createRootNode();this._rootElement=e,this._containerElement.appendChild(e);var t=this._viewer.metaScene.rootMetaObjects;for(var i in t){var s=t[i],r=s.type,n=s.name,o=n&&""!==n&&"Undefined"!==n&&"Default"!==n?n:r,a=this._renderService.createDisabledNodeElement(o);e.appendChild(a)}}},{key:"_findEmptyNodes",value:function(){var e=this._viewer.metaScene.rootMetaObjects;for(var t in e)this._findEmptyNodes2(e[t])}},{key:"_findEmptyNodes2",value:function(e){var t=this.viewer,i=t.scene,s=e.children,r=e.id,n=i.objects[r];if(e._countEntities=0,n&&e._countEntities++,s)for(var o=0,a=s.length;or.aabb[n]?-1:e.aabb[n]s?1:0}},{key:"_synchNodesToEntities",value:function(){for(var e=Object.keys(this.viewer.metaScene.metaObjects),t=this._viewer.metaScene.metaObjects,i=this._viewer.scene.objects,s=0,r=e.length;s0){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"ViewCull",e))._objectCullStates=AF(e.scene),s._maxTreeDepth=r.maxTreeDepth||8,s._modelInfos={},s._frustum=new Me,s._kdRoot=null,s._frustumDirty=!1,s._kdTreeDirty=!1,s._onViewMatrix=e.scene.camera.on("viewMatrix",(function(){s._frustumDirty=!0})),s._onProjMatrix=e.scene.camera.on("projMatMatrix",(function(){s._frustumDirty=!0})),s._onModelLoaded=e.scene.on("modelLoaded",(function(e){var t=s.viewer.scene.models[e];t&&s._addModel(t)})),s._onSceneTick=e.scene.on("tick",(function(){s._doCull()})),s}return C(i,[{key:"enabled",get:function(){return this._enabled},set:function(e){this._enabled=e}},{key:"_addModel",value:function(e){var t=this,i={model:e,onDestroyed:e.on("destroyed",(function(){t._removeModel(e)}))};this._modelInfos[e.id]=i,this._kdTreeDirty=!0}},{key:"_removeModel",value:function(e){var t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._kdTreeDirty=!0)}},{key:"_doCull",value:function(){var e=this._frustumDirty||this._kdTreeDirty;if(this._frustumDirty&&this._buildFrustum(),this._kdTreeDirty&&this._buildKDTree(),e){var t=this._kdRoot;t&&this._visitKDNode(t)}}},{key:"_buildFrustum",value:function(){var e=this.viewer.scene.camera;Ee(this._frustum,e.viewMatrix,e.projMatrix),this._frustumDirty=!1}},{key:"_buildKDTree",value:function(){var e=this.viewer.scene;this._kdRoot,this._kdRoot={aabb:e.getAABB(),intersection:Me.INTERSECT};for(var t=0,i=this._objectCullStates.numObjects;t=this._maxTreeDepth)return e.objects=e.objects||[],e.objects.push(i),void $.expandAABB3(e.aabb,r);if(e.left&&$.containsAABB3(e.left.aabb,r))this._insertEntityIntoKDTree(e.left,t,i,s+1);else if(e.right&&$.containsAABB3(e.right.aabb,r))this._insertEntityIntoKDTree(e.right,t,i,s+1);else{var n=e.aabb;cF[0]=n[3]-n[0],cF[1]=n[4]-n[1],cF[2]=n[5]-n[2];var o=0;if(cF[1]>cF[o]&&(o=1),cF[2]>cF[o]&&(o=2),!e.left){var a=n.slice();if(a[o+3]=(n[o]+n[o+3])/2,e.left={aabb:a,intersection:Me.INTERSECT},$.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1)}if(!e.right){var l=n.slice();if(l[o]=(n[o]+n[o+3])/2,e.right={aabb:l,intersection:Me.INTERSECT},$.containsAABB3(l,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1)}e.objects=e.objects||[],e.objects.push(i),$.expandAABB3(e.aabb,r)}}},{key:"_visitKDNode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Me.INTERSECT;if(t===Me.INTERSECT||e.intersects!==t){t===Me.INTERSECT&&(t=Fe(this._frustum,e.aabb),e.intersects=t);var i=t===Me.OUTSIDE,s=e.objects;if(s&&s.length>0)for(var r=0,n=s.length;r=0;)e[t]=0}var i=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=new Array(576);t(o);var a=new Array(60);t(a);var l=new Array(512);t(l);var u=new Array(256);t(u);var A=new Array(29);t(A);var c,h,d,p=new Array(30);function f(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}function v(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(p);var g=function(e){return e<256?l[e]:l[256+(e>>>7)]},m=function(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},_=function(e,t,i){e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<>>=1,i<<=1}while(--t>0);return i>>>1},w=function(e,t,i){var s,r,n=new Array(16),o=0;for(s=1;s<=15;s++)o=o+i[s-1]<<1,n[s]=o;for(r=0;r<=t;r++){var a=e[2*r+1];0!==a&&(e[2*r]=b(n[a]++,a))}},x=function(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},P=function(e){e.bi_valid>8?m(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},C=function(e,t,i,s){var r=2*t,n=2*i;return e[r]>1;i>=1;i--)M(e,n,i);r=l;do{i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],M(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=s,n[2*r]=n[2*i]+n[2*s],e.depth[r]=(e.depth[i]>=e.depth[s]?e.depth[i]:e.depth[s])+1,n[2*i+1]=n[2*s+1]=r,e.heap[1]=r++,M(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var i,s,r,n,o,a,l=t.dyn_tree,u=t.max_code,A=t.stat_desc.static_tree,c=t.stat_desc.has_stree,h=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,f=0;for(n=0;n<=15;n++)e.bl_count[n]=0;for(l[2*e.heap[e.heap_max]+1]=0,i=e.heap_max+1;i<573;i++)(n=l[2*l[2*(s=e.heap[i])+1]+1]+1)>p&&(n=p,f++),l[2*s+1]=n,s>u||(e.bl_count[n]++,o=0,s>=d&&(o=h[s-d]),a=l[2*s],e.opt_len+=a*(n+o),c&&(e.static_len+=a*(A[2*s+1]+o)));if(0!==f){do{for(n=p-1;0===e.bl_count[n];)n--;e.bl_count[n]--,e.bl_count[n+1]+=2,e.bl_count[p]--,f-=2}while(f>0);for(n=p;0!==n;n--)for(s=e.bl_count[n];0!==s;)(r=e.heap[--i])>u||(l[2*r+1]!==n&&(e.opt_len+=(n-l[2*r+1])*l[2*r],l[2*r+1]=n),s--)}}(e,t),w(n,u,e.bl_count)},k=function(e,t,i){var s,r,n=-1,o=t[1],a=0,l=7,u=4;for(0===o&&(l=138,u=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=o,o=t[2*(s+1)+1],++a>=7;v<30;v++)for(p[v]=g<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),F(e,e.l_desc),F(e,e.d_desc),u=function(e){var t;for(k(e,e.dyn_ltree,e.l_desc.max_code),k(e,e.dyn_dtree,e.d_desc.max_code),F(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*n[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),r=e.opt_len+3+7>>>3,(l=e.static_len+3+7>>>3)<=r&&(r=l)):r=l=i+5,i+4<=r&&-1!==t?S(e,t,i,s):4===e.strategy||l===r?(_(e,2+(s?1:0),3),E(e,o,a)):(_(e,4+(s?1:0),3),function(e,t,i,s){var r;for(_(e,t-257,5),_(e,i-1,5),_(e,s-4,4),r=0;r>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(u[i]+256+1)]++,e.dyn_dtree[2*g(t)]++),e.sym_next===e.sym_end},O=function(e){_(e,2,3),y(e,256,o),function(e){16===e.bi_valid?(m(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)},N=function(e,t,i,s){for(var r=65535&e|0,n=e>>>16&65535|0,o=0;0!==i;){i-=o=i>2e3?2e3:i;do{n=n+(r=r+t[s++]|0)|0}while(--o);r%=65521,n%=65521}return r|n<<16|0},Q=new Uint32Array(function(){for(var e,t=[],i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}()),V=function(e,t,i,s){var r=Q,n=s+i;e^=-1;for(var o=s;o>>8^r[255&(e^t[o])];return-1^e},H={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},j={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},G=T,z=L,W=R,K=U,X=O,J=j.Z_NO_FLUSH,Y=j.Z_PARTIAL_FLUSH,Z=j.Z_FULL_FLUSH,q=j.Z_FINISH,$=j.Z_BLOCK,ee=j.Z_OK,te=j.Z_STREAM_END,ie=j.Z_STREAM_ERROR,se=j.Z_DATA_ERROR,re=j.Z_BUF_ERROR,ne=j.Z_DEFAULT_COMPRESSION,oe=j.Z_FILTERED,ae=j.Z_HUFFMAN_ONLY,le=j.Z_RLE,ue=j.Z_FIXED,Ae=j.Z_UNKNOWN,ce=j.Z_DEFLATED,he=258,de=262,pe=42,fe=113,ve=666,ge=function(e,t){return e.msg=H[t],t},me=function(e){return 2*e-(e>4?9:0)},_e=function(e){for(var t=e.length;--t>=0;)e[t]=0},ye=function(e){var t,i,s,r=e.w_size;s=t=e.hash_size;do{i=e.head[--s],e.head[s]=i>=r?i-r:0}while(--t);s=t=r;do{i=e.prev[--s],e.prev[s]=i>=r?i-r:0}while(--t)},be=function(e,t,i){return(t<e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Be=function(e,t){W(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,we(e.strm)},xe=function(e,t){e.pending_buf[e.pending++]=t},Pe=function(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Ce=function(e,t,i,s){var r=e.avail_in;return r>s&&(r=s),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=N(e.adler,t,r,i):2===e.state.wrap&&(e.adler=V(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},Me=function(e,t){var i,s,r=e.max_chain_length,n=e.strstart,o=e.prev_length,a=e.nice_match,l=e.strstart>e.w_size-de?e.strstart-(e.w_size-de):0,u=e.window,A=e.w_mask,c=e.prev,h=e.strstart+he,d=u[n+o-1],p=u[n+o];e.prev_length>=e.good_match&&(r>>=2),a>e.lookahead&&(a=e.lookahead);do{if(u[(i=t)+o]===p&&u[i+o-1]===d&&u[i]===u[n]&&u[++i]===u[n+1]){n+=2,i++;do{}while(u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&u[++n]===u[++i]&&no){if(e.match_start=t,o=s,s>=a)break;d=u[n+o-1],p=u[n+o]}}}while((t=c[t&A])>l&&0!=--r);return o<=e.lookahead?o:e.lookahead},Ee=function(e){var t,i,s,r=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=r+(r-de)&&(e.window.set(e.window.subarray(r,r+r-i),0),e.match_start-=r,e.strstart-=r,e.block_start-=r,e.insert>e.strstart&&(e.insert=e.strstart),ye(e),i+=r),0===e.strm.avail_in)break;if(t=Ce(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=t,e.lookahead+e.insert>=3)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=be(e,e.ins_h,e.window[s+1]);e.insert&&(e.ins_h=be(e,e.ins_h,e.window[s+3-1]),e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookaheade.w_size?e.w_size:e.pending_buf_size-5,o=0,a=e.strm.avail_in;do{if(i=65535,r=e.bi_valid+42>>3,e.strm.avail_out(s=e.strstart-e.block_start)+e.strm.avail_in&&(i=s+e.strm.avail_in),i>r&&(i=r),i>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,we(e.strm),s&&(s>i&&(s=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,i-=s),i&&(Ce(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===o);return(a-=e.strm.avail_in)&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_waterr&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(Ce(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water>3,n=(r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r)>e.w_size?e.w_size:r,((s=e.strstart-e.block_start)>=n||(s||t===q)&&t!==J&&0===e.strm.avail_in&&s<=r)&&(i=s>r?r:s,o=t===q&&0===e.strm.avail_in&&i===s?1:0,z(e,e.block_start,i,o),e.block_start+=i,we(e.strm)),o?3:1)},ke=function(e,t){for(var i,s;;){if(e.lookahead=3&&(e.ins_h=be(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-de&&(e.match_length=Me(e,i)),e.match_length>=3)if(s=K(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=be(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=be(e,e.ins_h,e.window[e.strstart+1]);else s=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(Be(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===q?(Be(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Be(e,!1),0===e.strm.avail_out)?1:2},Ie=function(e,t){for(var i,s,r;;){if(e.lookahead=3&&(e.ins_h=be(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=K(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=be(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,s&&(Be(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((s=K(e,0,e.window[e.strstart-1]))&&Be(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=K(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===q?(Be(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Be(e,!1),0===e.strm.avail_out)?1:2};function De(e,t,i,s,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=s,this.func=r}var Se=[new De(0,0,0,0,Fe),new De(4,4,8,4,ke),new De(4,5,16,8,ke),new De(4,6,32,32,ke),new De(4,4,16,16,Ie),new De(8,16,32,32,Ie),new De(8,16,128,128,Ie),new De(8,32,128,256,Ie),new De(32,128,258,1024,Ie),new De(32,258,258,4096,Ie)];function Te(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ce,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),_e(this.dyn_ltree),_e(this.dyn_dtree),_e(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),_e(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),_e(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Le=function(e){if(!e)return 1;var t=e.state;return!t||t.strm!==e||t.status!==pe&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==fe&&t.status!==ve?1:0},Re=function(e){if(Le(e))return ge(e,ie);e.total_in=e.total_out=0,e.data_type=Ae;var t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?pe:fe,e.adler=2===t.wrap?0:1,t.last_flush=-2,G(t),ee},Ue=function(e){var t,i=Re(e);return i===ee&&((t=e.state).window_size=2*t.w_size,_e(t.head),t.max_lazy_match=Se[t.level].max_lazy,t.good_match=Se[t.level].good_length,t.nice_match=Se[t.level].nice_length,t.max_chain_length=Se[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=2,t.match_available=0,t.ins_h=0),i},Oe=function(e,t,i,s,r,n){if(!e)return ie;var o=1;if(t===ne&&(t=6),s<0?(o=0,s=-s):s>15&&(o=2,s-=16),r<1||r>9||i!==ce||s<8||s>15||t<0||t>9||n<0||n>ue||8===s&&1!==o)return ge(e,ie);8===s&&(s=9);var a=new Te;return e.state=a,a.strm=e,a.status=pe,a.wrap=o,a.gzhead=null,a.w_bits=s,a.w_size=1<$||t<0)return e?ge(e,ie):ie;var i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ve&&t!==q)return ge(e,0===e.avail_out?re:ie);var s=i.last_flush;if(i.last_flush=t,0!==i.pending){if(we(e),0===e.avail_out)return i.last_flush=-1,ee}else if(0===e.avail_in&&me(t)<=me(s)&&t!==q)return ge(e,re);if(i.status===ve&&0!==e.avail_in)return ge(e,re);if(i.status===pe&&0===i.wrap&&(i.status=fe),i.status===pe){var r=ce+(i.w_bits-8<<4)<<8;if(r|=(i.strategy>=ae||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(r|=32),Pe(i,r+=31-r%31),0!==i.strstart&&(Pe(i,e.adler>>>16),Pe(i,65535&e.adler)),e.adler=1,i.status=fe,we(e),0!==i.pending)return i.last_flush=-1,ee}if(57===i.status)if(e.adler=0,xe(i,31),xe(i,139),xe(i,8),i.gzhead)xe(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),xe(i,255&i.gzhead.time),xe(i,i.gzhead.time>>8&255),xe(i,i.gzhead.time>>16&255),xe(i,i.gzhead.time>>24&255),xe(i,9===i.level?2:i.strategy>=ae||i.level<2?4:0),xe(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(xe(i,255&i.gzhead.extra.length),xe(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=V(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(xe(i,0),xe(i,0),xe(i,0),xe(i,0),xe(i,0),xe(i,9===i.level?2:i.strategy>=ae||i.level<2?4:0),xe(i,3),i.status=fe,we(e),0!==i.pending)return i.last_flush=-1,ee;if(69===i.status){if(i.gzhead.extra){for(var n=i.pending,o=(65535&i.gzhead.extra.length)-i.gzindex;i.pending+o>i.pending_buf_size;){var a=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+a),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>n&&(e.adler=V(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex+=a,we(e),0!==i.pending)return i.last_flush=-1,ee;n=0,o-=a}var l=new Uint8Array(i.gzhead.extra);i.pending_buf.set(l.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending+=o,i.gzhead.hcrc&&i.pending>n&&(e.adler=V(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){var u,A=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>A&&(e.adler=V(e.adler,i.pending_buf,i.pending-A,A)),we(e),0!==i.pending)return i.last_flush=-1,ee;A=0}u=i.gzindexA&&(e.adler=V(e.adler,i.pending_buf,i.pending-A,A)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){var c,h=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>h&&(e.adler=V(e.adler,i.pending_buf,i.pending-h,h)),we(e),0!==i.pending)return i.last_flush=-1,ee;h=0}c=i.gzindexh&&(e.adler=V(e.adler,i.pending_buf,i.pending-h,h))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(we(e),0!==i.pending))return i.last_flush=-1,ee;xe(i,255&e.adler),xe(i,e.adler>>8&255),e.adler=0}if(i.status=fe,we(e),0!==i.pending)return i.last_flush=-1,ee}if(0!==e.avail_in||0!==i.lookahead||t!==J&&i.status!==ve){var d=0===i.level?Fe(i,t):i.strategy===ae?function(e,t){for(var i;;){if(0===e.lookahead&&(Ee(e),0===e.lookahead)){if(t===J)return 1;break}if(e.match_length=0,i=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Be(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===q?(Be(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Be(e,!1),0===e.strm.avail_out)?1:2}(i,t):i.strategy===le?function(e,t){for(var i,s,r,n,o=e.window;;){if(e.lookahead<=he){if(Ee(e),e.lookahead<=he&&t===J)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&((s=o[r=e.strstart-1])===o[++r]&&s===o[++r]&&s===o[++r])){n=e.strstart+he;do{}while(s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&s===o[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=K(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Be(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===q?(Be(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Be(e,!1),0===e.strm.avail_out)?1:2}(i,t):Se[i.level].func(i,t);if(3!==d&&4!==d||(i.status=ve),1===d||3===d)return 0===e.avail_out&&(i.last_flush=-1),ee;if(2===d&&(t===Y?X(i):t!==$&&(z(i,0,0,!1),t===Z&&(_e(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),we(e),0===e.avail_out))return i.last_flush=-1,ee}return t!==q?ee:i.wrap<=0?te:(2===i.wrap?(xe(i,255&e.adler),xe(i,e.adler>>8&255),xe(i,e.adler>>16&255),xe(i,e.adler>>24&255),xe(i,255&e.total_in),xe(i,e.total_in>>8&255),xe(i,e.total_in>>16&255),xe(i,e.total_in>>24&255)):(Pe(i,e.adler>>>16),Pe(i,65535&e.adler)),we(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?ee:te)},He=function(e){if(Le(e))return ie;var t=e.state.status;return e.state=null,t===fe?ge(e,se):ee},je=function(e,t){var i=t.length;if(Le(e))return ie;var s=e.state,r=s.wrap;if(2===r||1===r&&s.status!==pe||s.lookahead)return ie;if(1===r&&(e.adler=N(e.adler,t,i,0)),s.wrap=0,i>=s.w_size){0===r&&(_e(s.head),s.strstart=0,s.block_start=0,s.insert=0);var n=new Uint8Array(s.w_size);n.set(t.subarray(i-s.w_size,i),0),t=n,i=s.w_size}var o=e.avail_in,a=e.next_in,l=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Ee(s);s.lookahead>=3;){var u=s.strstart,A=s.lookahead-2;do{s.ins_h=be(s,s.ins_h,s.window[u+3-1]),s.prev[u&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=u,u++}while(--A);s.strstart=u,s.lookahead=2,Ee(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,e.next_in=a,e.input=l,e.avail_in=o,s.wrap=r,ee},Ge=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},ze=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var i=t.shift();if(i){if("object"!=B(i))throw new TypeError(i+"must be non-object");for(var s in i)Ge(i,s)&&(e[s]=i[s])}}return e},We=function(e){for(var t=0,i=0,s=e.length;i=252?6:Je>=248?5:Je>=240?4:Je>=224?3:Je>=192?2:1;Xe[254]=Xe[254]=1;var Ye=function(e){if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);var t,i,s,r,n,o=e.length,a=0;for(r=0;r>>6,t[n++]=128|63&i):i<65536?(t[n++]=224|i>>>12,t[n++]=128|i>>>6&63,t[n++]=128|63&i):(t[n++]=240|i>>>18,t[n++]=128|i>>>12&63,t[n++]=128|i>>>6&63,t[n++]=128|63&i);return t},Ze=function(e,t){var i,s,r=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));var n=new Array(2*r);for(s=0,i=0;i4)n[s++]=65533,i+=a-1;else{for(o&=2===a?31:3===a?15:7;a>1&&i1?n[s++]=65533:o<65536?n[s++]=o:(o-=65536,n[s++]=55296|o>>10&1023,n[s++]=56320|1023&o)}}}return function(e,t){if(t<65534&&e.subarray&&Ke)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));for(var i="",s=0;se.length&&(t=e.length);for(var i=t-1;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Xe[e[i]]>t?i:t},$e=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},et=Object.prototype.toString,tt=j.Z_NO_FLUSH,it=j.Z_SYNC_FLUSH,st=j.Z_FULL_FLUSH,rt=j.Z_FINISH,nt=j.Z_OK,ot=j.Z_STREAM_END,at=j.Z_DEFAULT_COMPRESSION,lt=j.Z_DEFAULT_STRATEGY,ut=j.Z_DEFLATED;function At(e){this.options=ze({level:at,method:ut,chunkSize:16384,windowBits:15,memLevel:8,strategy:lt},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new $e,this.strm.avail_out=0;var i=Ne(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==nt)throw new Error(H[i]);if(t.header&&Qe(this.strm,t.header),t.dictionary){var s;if(s="string"==typeof t.dictionary?Ye(t.dictionary):"[object ArrayBuffer]"===et.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(i=je(this.strm,s))!==nt)throw new Error(H[i]);this._dict_set=!0}}function ct(e,t){var i=new At(t);if(i.push(e,!0),i.err)throw i.msg||H[i.err];return i.result}At.prototype.push=function(e,t){var i,s,r=this.strm,n=this.options.chunkSize;if(this.ended)return!1;for(s=t===~~t?t:!0===t?rt:tt,"string"==typeof e?r.input=Ye(e):"[object ArrayBuffer]"===et.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(s===it||s===st)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if((i=Ve(r,s))===ot)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=He(this.strm),this.onEnd(i),this.ended=!0,i===nt;if(0!==r.avail_out){if(s>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},At.prototype.onData=function(e){this.chunks.push(e)},At.prototype.onEnd=function(e){e===nt&&(this.result=We(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ht=At,dt=ct,pt=function(e,t){return(t=t||{}).raw=!0,ct(e,t)},ft=function(e,t){return(t=t||{}).gzip=!0,ct(e,t)},vt=16209,gt=function(e,t){var i,s,r,n,o,a,l,u,A,c,h,d,p,f,v,g,m,_,y,b,w,B,x,P,C=e.state;i=e.next_in,x=e.input,s=i+(e.avail_in-5),r=e.next_out,P=e.output,n=r-(t-e.avail_out),o=r+(e.avail_out-257),a=C.dmax,l=C.wsize,u=C.whave,A=C.wnext,c=C.window,h=C.hold,d=C.bits,p=C.lencode,f=C.distcode,v=(1<>>=_=m>>>24,d-=_,0===(_=m>>>16&255))P[r++]=65535&m;else{if(!(16&_)){if(0==(64&_)){m=p[(65535&m)+(h&(1<<_)-1)];continue t}if(32&_){C.mode=16191;break e}e.msg="invalid literal/length code",C.mode=vt;break e}y=65535&m,(_&=15)&&(d<_&&(h+=x[i++]<>>=_,d-=_),d<15&&(h+=x[i++]<>>=_=m>>>24,d-=_,!(16&(_=m>>>16&255))){if(0==(64&_)){m=f[(65535&m)+(h&(1<<_)-1)];continue i}e.msg="invalid distance code",C.mode=vt;break e}if(b=65535&m,d<(_&=15)&&(h+=x[i++]<a){e.msg="invalid distance too far back",C.mode=vt;break e}if(h>>>=_,d-=_,b>(_=r-n)){if((_=b-_)>u&&C.sane){e.msg="invalid distance too far back",C.mode=vt;break e}if(w=0,B=c,0===A){if(w+=l-_,_2;)P[r++]=B[w++],P[r++]=B[w++],P[r++]=B[w++],y-=3;y&&(P[r++]=B[w++],y>1&&(P[r++]=B[w++]))}else{w=r-b;do{P[r++]=P[w++],P[r++]=P[w++],P[r++]=P[w++],y-=3}while(y>2);y&&(P[r++]=P[w++],y>1&&(P[r++]=P[w++]))}break}}break}}while(i>3,h&=(1<<(d-=y<<3))-1,e.next_in=i,e.next_out=r,e.avail_in=i=1&&0===F[b];b--);if(w>b&&(w=b),0===b)return r[n++]=20971520,r[n++]=20971520,a.bits=1,0;for(y=1;y0&&(0===e||1!==b))return-1;for(k[1]=0,m=1;m<15;m++)k[m+1]=k[m]+F[m];for(_=0;_852||2===e&&C>592)return 1;for(;;){p=m-x,o[_]+1=d?(f=I[o[_]-d],v=E[o[_]-d]):(f=96,v=0),l=1<>x)+(u-=l)]=p<<24|f<<16|v|0}while(0!==u);for(l=1<>=1;if(0!==l?(M&=l-1,M+=l):M=0,_++,0==--F[m]){if(m===b)break;m=t[i+o[_]]}if(m>w&&(M&c)!==A){for(0===x&&(x=w),h+=y,P=1<<(B=m-x);B+x852||2===e&&C>592)return 1;r[A=M&c]=w<<24|B<<16|h-n|0}}return 0!==M&&(r[h+M]=m-x<<24|64<<16|0),a.bits=w,0},Bt=j.Z_FINISH,xt=j.Z_BLOCK,Pt=j.Z_TREES,Ct=j.Z_OK,Mt=j.Z_STREAM_END,Et=j.Z_NEED_DICT,Ft=j.Z_STREAM_ERROR,kt=j.Z_DATA_ERROR,It=j.Z_MEM_ERROR,Dt=j.Z_BUF_ERROR,St=j.Z_DEFLATED,Tt=16180,Lt=16190,Rt=16191,Ut=16192,Ot=16194,Nt=16199,Qt=16200,Vt=16206,Ht=16209,jt=function(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)};function Gt(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var zt,Wt,Kt=function(e){if(!e)return 1;var t=e.state;return!t||t.strm!==e||t.mode16211?1:0},Xt=function(e){if(Kt(e))return Ft;var t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Tt,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,Ct},Jt=function(e){if(Kt(e))return Ft;var t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Xt(e)},Yt=function(e,t){var i;if(Kt(e))return Ft;var s=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Ft:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,Jt(e))},Zt=function(e,t){if(!e)return Ft;var i=new Gt;e.state=i,i.strm=e,i.window=null,i.mode=Tt;var s=Yt(e,t);return s!==Ct&&(e.state=null),s},qt=!0,$t=function(e){if(qt){zt=new Int32Array(512),Wt=new Int32Array(32);for(var t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(wt(1,e.lens,0,288,zt,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;wt(2,e.lens,0,32,Wt,0,e.work,{bits:5}),qt=!1}e.lencode=zt,e.lenbits=9,e.distcode=Wt,e.distbits=5},ei=function(e,t,i,s){var r,n=e.state;return null===n.window&&(n.wsize=1<=n.wsize?(n.window.set(t.subarray(i-n.wsize,i),0),n.wnext=0,n.whave=n.wsize):((r=n.wsize-n.wnext)>s&&(r=s),n.window.set(t.subarray(i-s,i-s+r),n.wnext),(s-=r)?(n.window.set(t.subarray(i-s,i),0),n.wnext=s,n.whave=n.wsize):(n.wnext+=r,n.wnext===n.wsize&&(n.wnext=0),n.whave>>8&255,i.check=V(i.check,M,2,0),u=0,A=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",i.mode=Ht;break}if((15&u)!==St){e.msg="unknown compression method",i.mode=Ht;break}if(A-=4,w=8+(15&(u>>>=4)),0===i.wbits&&(i.wbits=w),w>15||w>i.wbits){e.msg="invalid window size",i.mode=Ht;break}i.dmax=1<>8&1),512&i.flags&&4&i.wrap&&(M[0]=255&u,M[1]=u>>>8&255,i.check=V(i.check,M,2,0)),u=0,A=0,i.mode=16182;case 16182:for(;A<32;){if(0===a)break e;a--,u+=s[n++]<>>8&255,M[2]=u>>>16&255,M[3]=u>>>24&255,i.check=V(i.check,M,4,0)),u=0,A=0,i.mode=16183;case 16183:for(;A<16;){if(0===a)break e;a--,u+=s[n++]<>8),512&i.flags&&4&i.wrap&&(M[0]=255&u,M[1]=u>>>8&255,i.check=V(i.check,M,2,0)),u=0,A=0,i.mode=16184;case 16184:if(1024&i.flags){for(;A<16;){if(0===a)break e;a--,u+=s[n++]<>>8&255,i.check=V(i.check,M,2,0)),u=0,A=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&((d=i.length)>a&&(d=a),d&&(i.head&&(w=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(n,n+d),w)),512&i.flags&&4&i.wrap&&(i.check=V(i.check,s,d,n)),a-=d,n+=d,i.length-=d),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===a)break e;d=0;do{w=s[n+d++],i.head&&w&&i.length<65536&&(i.head.name+=String.fromCharCode(w))}while(w&&d>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Rt;break;case 16189:for(;A<32;){if(0===a)break e;a--,u+=s[n++]<>>=7&A,A-=7&A,i.mode=Vt;break}for(;A<3;){if(0===a)break e;a--,u+=s[n++]<>>=1)){case 0:i.mode=16193;break;case 1:if($t(i),i.mode=Nt,t===Pt){u>>>=2,A-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Ht}u>>>=2,A-=2;break;case 16193:for(u>>>=7&A,A-=7&A;A<32;){if(0===a)break e;a--,u+=s[n++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=Ht;break}if(i.length=65535&u,u=0,A=0,i.mode=Ot,t===Pt)break e;case Ot:i.mode=16195;case 16195:if(d=i.length){if(d>a&&(d=a),d>l&&(d=l),0===d)break e;r.set(s.subarray(n,n+d),o),a-=d,n+=d,l-=d,o+=d,i.length-=d;break}i.mode=Rt;break;case 16196:for(;A<14;){if(0===a)break e;a--,u+=s[n++]<>>=5,A-=5,i.ndist=1+(31&u),u>>>=5,A-=5,i.ncode=4+(15&u),u>>>=4,A-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Ht;break}i.have=0,i.mode=16197;case 16197:for(;i.have>>=3,A-=3}for(;i.have<19;)i.lens[E[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,x={bits:i.lenbits},B=wt(0,i.lens,0,19,i.lencode,0,i.work,x),i.lenbits=x.bits,B){e.msg="invalid code lengths set",i.mode=Ht;break}i.have=0,i.mode=16198;case 16198:for(;i.have>>16&255,m=65535&C,!((v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>>=v,A-=v,i.lens[i.have++]=m;else{if(16===m){for(P=v+2;A>>=v,A-=v,0===i.have){e.msg="invalid bit length repeat",i.mode=Ht;break}w=i.lens[i.have-1],d=3+(3&u),u>>>=2,A-=2}else if(17===m){for(P=v+3;A>>=v)),u>>>=3,A-=3}else{for(P=v+7;A>>=v)),u>>>=7,A-=7}if(i.have+d>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Ht;break}for(;d--;)i.lens[i.have++]=w}}if(i.mode===Ht)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Ht;break}if(i.lenbits=9,x={bits:i.lenbits},B=wt(1,i.lens,0,i.nlen,i.lencode,0,i.work,x),i.lenbits=x.bits,B){e.msg="invalid literal/lengths set",i.mode=Ht;break}if(i.distbits=6,i.distcode=i.distdyn,x={bits:i.distbits},B=wt(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,x),i.distbits=x.bits,B){e.msg="invalid distances set",i.mode=Ht;break}if(i.mode=Nt,t===Pt)break e;case Nt:i.mode=Qt;case Qt:if(a>=6&&l>=258){e.next_out=o,e.avail_out=l,e.next_in=n,e.avail_in=a,i.hold=u,i.bits=A,gt(e,h),o=e.next_out,r=e.output,l=e.avail_out,n=e.next_in,s=e.input,a=e.avail_in,u=i.hold,A=i.bits,i.mode===Rt&&(i.back=-1);break}for(i.back=0;g=(C=i.lencode[u&(1<>>16&255,m=65535&C,!((v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>_)])>>>16&255,m=65535&C,!(_+(v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>>=_,A-=_,i.back+=_}if(u>>>=v,A-=v,i.back+=v,i.length=m,0===g){i.mode=16205;break}if(32&g){i.back=-1,i.mode=Rt;break}if(64&g){e.msg="invalid literal/length code",i.mode=Ht;break}i.extra=15&g,i.mode=16201;case 16201:if(i.extra){for(P=i.extra;A>>=i.extra,A-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;g=(C=i.distcode[u&(1<>>16&255,m=65535&C,!((v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>_)])>>>16&255,m=65535&C,!(_+(v=C>>>24)<=A);){if(0===a)break e;a--,u+=s[n++]<>>=_,A-=_,i.back+=_}if(u>>>=v,A-=v,i.back+=v,64&g){e.msg="invalid distance code",i.mode=Ht;break}i.offset=m,i.extra=15&g,i.mode=16203;case 16203:if(i.extra){for(P=i.extra;A>>=i.extra,A-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Ht;break}i.mode=16204;case 16204:if(0===l)break e;if(d=h-l,i.offset>d){if((d=i.offset-d)>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Ht;break}d>i.wnext?(d-=i.wnext,p=i.wsize-d):p=i.wnext-d,d>i.length&&(d=i.length),f=i.window}else f=r,p=o-i.offset,d=i.length;d>l&&(d=l),l-=d,i.length-=d;do{r[o++]=f[p++]}while(--d);0===i.length&&(i.mode=Qt);break;case 16205:if(0===l)break e;r[o++]=i.length,l--,i.mode=Qt;break;case Vt:if(i.wrap){for(;A<32;){if(0===a)break e;a--,u|=s[n++]<=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new $e,this.strm.avail_out=0;var i=ii(this.strm,t.windowBits);if(i!==ci)throw new Error(H[i]);if(this.header=new ai,ni(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Ye(t.dictionary):"[object ArrayBuffer]"===li.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=oi(this.strm,t.dictionary))!==ci))throw new Error(H[i])}function mi(e,t){var i=new gi(t);if(i.push(e),i.err)throw i.msg||H[i.err];return i.result}gi.prototype.push=function(e,t){var i,s,r,n=this.strm,o=this.options.chunkSize,a=this.options.dictionary;if(this.ended)return!1;for(s=t===~~t?t:!0===t?Ai:ui,"[object ArrayBuffer]"===li.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(o),n.next_out=0,n.avail_out=o),(i=si(n,s))===di&&a&&((i=oi(n,a))===ci?i=si(n,s):i===fi&&(i=di));n.avail_in>0&&i===hi&&n.state.wrap>0&&0!==e[n.next_in];)ti(n),i=si(n,s);switch(i){case pi:case fi:case di:case vi:return this.onEnd(i),this.ended=!0,!1}if(r=n.avail_out,n.next_out&&(0===n.avail_out||i===hi))if("string"===this.options.to){var l=qe(n.output,n.next_out),u=n.next_out-l,A=Ze(n.output,l);n.next_out=u,n.avail_out=o-u,u&&n.output.set(n.output.subarray(l,l+u),0),this.onData(A)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(i!==ci||0!==r){if(i===hi)return i=ri(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},gi.prototype.onData=function(e){this.chunks.push(e)},gi.prototype.onEnd=function(e){e===ci&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=We(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var _i=function(e,t){return(t=t||{}).raw=!0,mi(e,t)},yi=ht,bi=dt,wi=pt,Bi=ft,xi=gi,Pi=mi,Ci=_i,Mi=mi,Ei=j,Fi={Deflate:yi,deflate:bi,deflateRaw:wi,gzip:Bi,Inflate:xi,inflate:Pi,inflateRaw:Ci,ungzip:Mi,constants:Ei};e.Deflate=yi,e.Inflate=xi,e.constants=Ei,e.default=Fi,e.deflate=bi,e.deflateRaw=wi,e.gzip=Bi,e.inflate=Pi,e.inflateRaw=Ci,e.ungzip=Mi,Object.defineProperty(e,"__esModule",{value:!0})}));var pF=Object.freeze({__proto__:null}),fF=window.pako||pF;fF.inflate||(fF=fF.default);var vF,gF=(vF=new Float32Array(3),function(e){return vF[0]=e[0]/255,vF[1]=e[1]/255,vF[2]=e[2]/255,vF});var mF={version:1,parse:function(e,t,i,s,r,n){var o=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11]}}(i),a=function(e){return{positions:new Uint16Array(fF.inflate(e.positions).buffer),normals:new Int8Array(fF.inflate(e.normals).buffer),indices:new Uint32Array(fF.inflate(e.indices).buffer),edgeIndices:new Uint32Array(fF.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(fF.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(fF.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(fF.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(fF.inflate(e.meshColors).buffer),entityIDs:fF.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(fF.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(fF.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(fF.inflate(e.positionsDecodeMatrix).buffer)}}(o);!function(e,t,i,s,r,n){n.getNextId(),s.positionsCompression="precompressed",s.normalsCompression="precompressed";for(var o=i.positions,a=i.normals,l=i.indices,u=i.edgeIndices,A=i.meshPositions,c=i.meshIndices,h=i.meshEdgesIndices,d=i.meshColors,p=JSON.parse(i.entityIDs),f=i.entityMeshes,v=i.entityIsObjects,g=A.length,m=f.length,_=0;_v[t]?1:0}));for(var E=0;E1||(F[R]=k)}for(var U=0;U1,V=CF(g.subarray(4*O,4*O+3)),H=g[4*O+3]/255,j=a.subarray(d[O],N?a.length:d[O+1]),G=l.subarray(d[O],N?l.length:d[O+1]),z=u.subarray(p[O],N?u.length:p[O+1]),W=A.subarray(f[O],N?A.length:f[O+1]),K=c.subarray(v[O],v[O]+16);if(Q){var X="".concat(o,"-geometry.").concat(O);s.createGeometry({id:X,primitive:"triangles",positionsCompressed:j,normalsCompressed:G,indices:z,edgeIndices:W,positionsDecodeMatrix:K})}else{var J="".concat(o,"-").concat(O);_[F[O]],s.createMesh(le.apply({},{id:J,primitive:"triangles",positionsCompressed:j,normalsCompressed:G,indices:z,edgeIndices:W,positionsDecodeMatrix:K,color:V,opacity:H}))}}for(var Y=0,Z=0;Z1){var oe="".concat(o,"-instance.").concat(Y++),ae="".concat(o,"-geometry.").concat(ne),ue=16*b[Z],Ae=h.subarray(ue,ue+16);s.createMesh(le.apply({},{id:oe,geometryId:ae,matrix:Ae})),se.push(oe)}else se.push(ne)}se.length>0&&s.createEntity(le.apply({},{id:ee,isObject:!0,meshIds:se}))}}(0,0,a,s,0,n)}},EF=window.pako||pF;EF.inflate||(EF=EF.default);var FF=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();var kF={version:5,parse:function(e,t,i,s,r,n){var o=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i),a=function(e){return{positions:new Float32Array(EF.inflate(e.positions).buffer),normals:new Int8Array(EF.inflate(e.normals).buffer),indices:new Uint32Array(EF.inflate(e.indices).buffer),edgeIndices:new Uint32Array(EF.inflate(e.edgeIndices).buffer),matrices:new Float32Array(EF.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(EF.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(EF.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(EF.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(EF.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(EF.inflate(e.primitiveInstances).buffer),eachEntityId:EF.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(EF.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(EF.inflate(e.eachEntityMatricesPortion).buffer)}}(o);!function(e,t,i,s,r,n){var o=n.getNextId();s.positionsCompression="disabled",s.normalsCompression="precompressed";for(var a=i.positions,l=i.normals,u=i.indices,A=i.edgeIndices,c=i.matrices,h=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColor,v=i.primitiveInstances,g=JSON.parse(i.eachEntityId),m=i.eachEntityPrimitiveInstancesPortion,_=i.eachEntityMatricesPortion,y=h.length,b=v.length,w=new Uint8Array(y),B=g.length,x=0;x1||(P[D]=C)}for(var S=0;S1,R=FF(f.subarray(4*S,4*S+3)),U=f[4*S+3]/255,O=a.subarray(h[S],T?a.length:h[S+1]),N=l.subarray(h[S],T?l.length:h[S+1]),Q=u.subarray(d[S],T?u.length:d[S+1]),V=A.subarray(p[S],T?A.length:p[S+1]);if(L){var H="".concat(o,"-geometry.").concat(S);s.createGeometry({id:H,primitive:"triangles",positionsCompressed:O,normalsCompressed:N,indices:Q,edgeIndices:V})}else{var j=S;g[P[S]],s.createMesh(le.apply({},{id:j,primitive:"triangles",positionsCompressed:O,normalsCompressed:N,indices:Q,edgeIndices:V,color:R,opacity:U}))}}for(var G=0,z=0;z1){var ee="instance."+G++,te="geometry"+$,ie=16*_[z],se=c.subarray(ie,ie+16);s.createMesh(le.apply({},{id:ee,geometryId:te,matrix:se})),Z.push(ee)}else Z.push($)}Z.length>0&&s.createEntity(le.apply({},{id:X,isObject:!0,meshIds:Z}))}}(0,0,a,s,0,n)}},IF=window.pako||pF;IF.inflate||(IF=IF.default);var DF,SF=(DF=new Float32Array(3),function(e){return DF[0]=e[0]/255,DF[1]=e[1]/255,DF[2]=e[2]/255,DF});var TF={version:6,parse:function(e,t,i,s,r,n){var o=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:IF.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:IF.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(o);!function(e,t,i,s,r,n){for(var o=n.getNextId(),a=i.positions,l=i.normals,u=i.indices,A=i.edgeIndices,c=i.matrices,h=i.reusedPrimitivesDecodeMatrix,d=i.eachPrimitivePositionsAndNormalsPortion,p=i.eachPrimitiveIndicesPortion,f=i.eachPrimitiveEdgeIndicesPortion,v=i.eachPrimitiveColorAndOpacity,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),_=i.eachEntityPrimitiveInstancesPortion,y=i.eachEntityMatricesPortion,b=i.eachTileAABB,w=i.eachTileEntitiesPortion,B=d.length,x=g.length,P=m.length,C=w.length,M=new Uint32Array(B),E=0;E1,se=te===B-1,re=a.subarray(d[te],se?a.length:d[te+1]),ne=l.subarray(d[te],se?l.length:d[te+1]),oe=u.subarray(p[te],se?u.length:p[te+1]),ae=A.subarray(f[te],se?A.length:f[te+1]),ue=SF(v.subarray(4*te,4*te+3)),Ae=v[4*te+3]/255,ce=n.getNextId();if(ie){var he="".concat(o,"-geometry.").concat(D,".").concat(te);N[he]||(s.createGeometry({id:he,primitive:"triangles",positionsCompressed:re,indices:oe,edgeIndices:ae,positionsDecodeMatrix:h}),N[he]=!0),s.createMesh(le.apply(Z,{id:ce,geometryId:he,origin:k,matrix:G,color:ue,opacity:Ae})),X.push(ce)}else s.createMesh(le.apply(Z,{id:ce,origin:k,primitive:"triangles",positionsCompressed:re,normalsCompressed:ne,indices:oe,edgeIndices:ae,positionsDecodeMatrix:O,color:ue,opacity:Ae})),X.push(ce)}X.length>0&&s.createEntity(le.apply(Y,{id:H,isObject:!0,meshIds:X}))}}}(e,t,a,s,0,n)}},LF=window.pako||pF;LF.inflate||(LF=LF.default);var RF=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function UF(e){for(var t=[],i=0,s=e.length;i1,ne=se===M-1,oe=RF(w.subarray(6*ie,6*ie+3)),ae=w[6*ie+3]/255,ue=w[6*ie+4]/255,Ae=w[6*ie+5]/255,ce=n.getNextId();if(re){var he=b[ie],de=h.slice(he,he+16),pe="".concat(o,"-geometry.").concat(R,".").concat(se);if(!j[pe]){var fe=void 0,ve=void 0,ge=void 0,me=void 0,_e=void 0,ye=void 0;switch(p[se]){case 0:fe="solid",ve=a.subarray(f[se],ne?a.length:f[se+1]),ge=l.subarray(v[se],ne?l.length:v[se+1]),_e=A.subarray(m[se],ne?A.length:m[se+1]),ye=c.subarray(_[se],ne?c.length:_[se+1]);break;case 1:fe="surface",ve=a.subarray(f[se],ne?a.length:f[se+1]),ge=l.subarray(v[se],ne?l.length:v[se+1]),_e=A.subarray(m[se],ne?A.length:m[se+1]),ye=c.subarray(_[se],ne?c.length:_[se+1]);break;case 2:fe="points",ve=a.subarray(f[se],ne?a.length:f[se+1]),me=UF(u.subarray(g[se],ne?u.length:g[se+1]));break;case 3:fe="lines",ve=a.subarray(f[se],ne?a.length:f[se+1]),_e=A.subarray(m[se],ne?A.length:m[se+1]);break;default:continue}s.createGeometry({id:pe,primitive:fe,positionsCompressed:ve,normalsCompressed:ge,colors:me,indices:_e,edgeIndices:ye,positionsDecodeMatrix:d}),j[pe]=!0}s.createMesh(le.apply(ee,{id:ce,geometryId:pe,origin:T,matrix:de,color:oe,metallic:ue,roughness:Ae,opacity:ae})),Y.push(ce)}else{var be=void 0,we=void 0,Be=void 0,xe=void 0,Pe=void 0,Ce=void 0;switch(p[se]){case 0:be="solid",we=a.subarray(f[se],ne?a.length:f[se+1]),Be=l.subarray(v[se],ne?l.length:v[se+1]),Pe=A.subarray(m[se],ne?A.length:m[se+1]),Ce=c.subarray(_[se],ne?c.length:_[se+1]);break;case 1:be="surface",we=a.subarray(f[se],ne?a.length:f[se+1]),Be=l.subarray(v[se],ne?l.length:v[se+1]),Pe=A.subarray(m[se],ne?A.length:m[se+1]),Ce=c.subarray(_[se],ne?c.length:_[se+1]);break;case 2:be="points",we=a.subarray(f[se],ne?a.length:f[se+1]),xe=UF(u.subarray(g[se],ne?u.length:g[se+1]));break;case 3:be="lines",we=a.subarray(f[se],ne?a.length:f[se+1]),Pe=A.subarray(m[se],ne?A.length:m[se+1]);break;default:continue}s.createMesh(le.apply(ee,{id:ce,origin:T,primitive:be,positionsCompressed:we,normalsCompressed:Be,colors:xe,indices:Pe,edgeIndices:Ce,positionsDecodeMatrix:H,color:oe,metallic:ue,roughness:Ae,opacity:ae})),Y.push(ce)}}Y.length>0&&s.createEntity(le.apply(q,{id:W,isObject:!0,meshIds:Y}))}}}(e,t,a,s,0,n)}},NF=window.pako||pF;NF.inflate||(NF=NF.default);var QF=$.vec4(),VF=$.vec4();var HF=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function jF(e){for(var t=[],i=0,s=e.length;i1,ye=me===S-1,be=HF(M.subarray(6*ge,6*ge+3)),we=M[6*ge+3]/255,Be=M[6*ge+4]/255,xe=M[6*ge+5]/255,Pe=n.getNextId();if(_e){var Ce=C[ge],Me=g.slice(Ce,Ce+16),Ee="".concat(o,"-geometry.").concat(Y,".").concat(me),Fe=J[Ee];if(!Fe){Fe={batchThisMesh:!t.reuseGeometries};var ke=!1;switch(_[me]){case 0:Fe.primitiveName="solid",Fe.geometryPositions=h.subarray(y[me],ye?h.length:y[me+1]),Fe.geometryNormals=d.subarray(b[me],ye?d.length:b[me+1]),Fe.geometryIndices=f.subarray(B[me],ye?f.length:B[me+1]),Fe.geometryEdgeIndices=v.subarray(x[me],ye?v.length:x[me+1]),ke=Fe.geometryPositions.length>0&&Fe.geometryIndices.length>0;break;case 1:Fe.primitiveName="surface",Fe.geometryPositions=h.subarray(y[me],ye?h.length:y[me+1]),Fe.geometryNormals=d.subarray(b[me],ye?d.length:b[me+1]),Fe.geometryIndices=f.subarray(B[me],ye?f.length:B[me+1]),Fe.geometryEdgeIndices=v.subarray(x[me],ye?v.length:x[me+1]),ke=Fe.geometryPositions.length>0&&Fe.geometryIndices.length>0;break;case 2:Fe.primitiveName="points",Fe.geometryPositions=h.subarray(y[me],ye?h.length:y[me+1]),Fe.geometryColors=jF(p.subarray(w[me],ye?p.length:w[me+1])),ke=Fe.geometryPositions.length>0;break;case 3:Fe.primitiveName="lines",Fe.geometryPositions=h.subarray(y[me],ye?h.length:y[me+1]),Fe.geometryIndices=f.subarray(B[me],ye?f.length:B[me+1]),ke=Fe.geometryPositions.length>0&&Fe.geometryIndices.length>0;break;default:continue}if(ke||(Fe=null),Fe&&(Fe.geometryPositions.length,Fe.batchThisMesh)){Fe.decompressedPositions=new Float32Array(Fe.geometryPositions.length);for(var Ie=Fe.geometryPositions,De=Fe.decompressedPositions,Se=0,Te=Ie.length;Se0&&je.length>0;break;case 1:Ne="surface",Qe=h.subarray(y[me],ye?h.length:y[me+1]),Ve=d.subarray(b[me],ye?d.length:b[me+1]),je=f.subarray(B[me],ye?f.length:B[me+1]),Ge=v.subarray(x[me],ye?v.length:x[me+1]),ze=Qe.length>0&&je.length>0;break;case 2:Ne="points",Qe=h.subarray(y[me],ye?h.length:y[me+1]),He=jF(p.subarray(w[me],ye?p.length:w[me+1])),ze=Qe.length>0;break;case 3:Ne="lines",Qe=h.subarray(y[me],ye?h.length:y[me+1]),je=f.subarray(B[me],ye?f.length:B[me+1]),ze=Qe.length>0&&je.length>0;break;default:continue}ze&&(s.createMesh(le.apply(fe,{id:Pe,origin:K,primitive:Ne,positionsCompressed:Qe,normalsCompressed:Ve,colorsCompressed:He,indices:je,edgeIndices:Ge,positionsDecodeMatrix:se,color:be,metallic:Be,roughness:xe,opacity:we})),he.push(Pe))}}he.length>0&&s.createEntity(le.apply(pe,{id:ae,isObject:!0,meshIds:he}))}}}(e,t,a,s,r,n)}},zF=window.pako||pF;zF.inflate||(zF=zF.default);var WF=$.vec4(),KF=$.vec4();var XF=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();var JF={version:9,parse:function(e,t,i,s,r,n){var o=function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:zF.inflate(e,t).buffer}return{metadata:JSON.parse(zF.inflate(e.metadata,{to:"string"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(zF.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(o);!function(e,t,i,s,r,n){var o=n.getNextId(),a=i.metadata,l=i.positions,u=i.normals,A=i.colors,c=i.indices,h=i.edgeIndices,d=i.matrices,p=i.reusedGeometriesDecodeMatrix,f=i.eachGeometryPrimitiveType,v=i.eachGeometryPositionsPortion,g=i.eachGeometryNormalsPortion,m=i.eachGeometryColorsPortion,_=i.eachGeometryIndicesPortion,y=i.eachGeometryEdgeIndicesPortion,b=i.eachMeshGeometriesPortion,w=i.eachMeshMatricesPortion,B=i.eachMeshMaterial,x=i.eachEntityId,P=i.eachEntityMeshesPortion,C=i.eachTileAABB,M=i.eachTileEntitiesPortion,E=v.length,F=b.length,k=P.length,I=M.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});for(var D=new Uint32Array(E),S=0;S1,ae=ne===E-1,ue=XF(B.subarray(6*re,6*re+3)),Ae=B[6*re+3]/255,ce=B[6*re+4]/255,he=B[6*re+5]/255,de=n.getNextId();if(oe){var pe=w[re],fe=d.slice(pe,pe+16),ve="".concat(o,"-geometry.").concat(O,".").concat(ne),ge=U[ve];if(!ge){ge={batchThisMesh:!t.reuseGeometries};var me=!1;switch(f[ne]){case 0:ge.primitiveName="solid",ge.geometryPositions=l.subarray(v[ne],ae?l.length:v[ne+1]),ge.geometryNormals=u.subarray(g[ne],ae?u.length:g[ne+1]),ge.geometryIndices=c.subarray(_[ne],ae?c.length:_[ne+1]),ge.geometryEdgeIndices=h.subarray(y[ne],ae?h.length:y[ne+1]),me=ge.geometryPositions.length>0&&ge.geometryIndices.length>0;break;case 1:ge.primitiveName="surface",ge.geometryPositions=l.subarray(v[ne],ae?l.length:v[ne+1]),ge.geometryNormals=u.subarray(g[ne],ae?u.length:g[ne+1]),ge.geometryIndices=c.subarray(_[ne],ae?c.length:_[ne+1]),ge.geometryEdgeIndices=h.subarray(y[ne],ae?h.length:y[ne+1]),me=ge.geometryPositions.length>0&&ge.geometryIndices.length>0;break;case 2:ge.primitiveName="points",ge.geometryPositions=l.subarray(v[ne],ae?l.length:v[ne+1]),ge.geometryColors=A.subarray(m[ne],ae?A.length:m[ne+1]),me=ge.geometryPositions.length>0;break;case 3:ge.primitiveName="lines",ge.geometryPositions=l.subarray(v[ne],ae?l.length:v[ne+1]),ge.geometryIndices=c.subarray(_[ne],ae?c.length:_[ne+1]),me=ge.geometryPositions.length>0&&ge.geometryIndices.length>0;break;default:continue}if(me||(ge=null),ge&&(ge.geometryPositions.length,ge.batchThisMesh)){ge.decompressedPositions=new Float32Array(ge.geometryPositions.length),ge.transformedAndRecompressedPositions=new Uint16Array(ge.geometryPositions.length);for(var _e=ge.geometryPositions,ye=ge.decompressedPositions,be=0,we=_e.length;be0&&Ie.length>0;break;case 1:Me="surface",Ee=l.subarray(v[ne],ae?l.length:v[ne+1]),Fe=u.subarray(g[ne],ae?u.length:g[ne+1]),Ie=c.subarray(_[ne],ae?c.length:_[ne+1]),De=h.subarray(y[ne],ae?h.length:y[ne+1]),Se=Ee.length>0&&Ie.length>0;break;case 2:Me="points",Ee=l.subarray(v[ne],ae?l.length:v[ne+1]),ke=A.subarray(m[ne],ae?A.length:m[ne+1]),Se=Ee.length>0;break;case 3:Me="lines",Ee=l.subarray(v[ne],ae?l.length:v[ne+1]),Ie=c.subarray(_[ne],ae?c.length:_[ne+1]),Se=Ee.length>0&&Ie.length>0;break;default:continue}Se&&(s.createMesh(le.apply(ie,{id:de,origin:L,primitive:Me,positionsCompressed:Ee,normalsCompressed:Fe,colorsCompressed:ke,indices:Ie,edgeIndices:De,positionsDecodeMatrix:G,color:ue,metallic:ce,roughness:he,opacity:Ae})),q.push(de))}}q.length>0&&s.createEntity(le.apply(te,{id:X,isObject:!0,meshIds:q}))}}}(e,t,a,s,r,n)}},YF=window.pako||pF;YF.inflate||(YF=YF.default);var ZF=$.vec4(),qF=$.vec4();var $F=function(){var e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function ek(e,t){var i=[];if(t.length>1)for(var s=0,r=t.length-1;s1)for(var n=0,o=e.length/3-1;n0,W=9*V,K=1===A[W+0],X=A[W+1];A[W+2],A[W+3];var J=A[W+4],Y=A[W+5],Z=A[W+6],q=A[W+7],ee=A[W+8];if(z){var te=new Uint8Array(l.subarray(j,G)).buffer,ie="".concat(o,"-texture-").concat(V);if(K)s.createTexture({id:ie,buffers:[te],minFilter:J,magFilter:Y,wrapS:Z,wrapT:q,wrapR:ee});else{var se=new Blob([te],{type:10001===X?"image/jpeg":10002===X?"image/png":"image/gif"}),re=(window.URL||window.webkitURL).createObjectURL(se),ne=document.createElement("img");ne.src=re,s.createTexture({id:ie,image:ne,minFilter:J,magFilter:Y,wrapS:Z,wrapT:q,wrapR:ee})}}}for(var oe=0;oe=0?"".concat(o,"-texture-").concat(Ae):null,normalsTextureId:he>=0?"".concat(o,"-texture-").concat(he):null,metallicRoughnessTextureId:ce>=0?"".concat(o,"-texture-").concat(ce):null,emissiveTextureId:de>=0?"".concat(o,"-texture-").concat(de):null,occlusionTextureId:pe>=0?"".concat(o,"-texture-").concat(pe):null})}for(var fe=new Uint32Array(U),ve=0;ve1,je=Ve===U-1,Ge=F[Qe],ze=Ge>=0?"".concat(o,"-textureSet-").concat(Ge):null,We=$F(k.subarray(6*Qe,6*Qe+3)),Ke=k[6*Qe+3]/255,Xe=k[6*Qe+4]/255,Je=k[6*Qe+5]/255,Ye=n.getNextId();if(He){var Ze=E[Qe],qe=m.slice(Ze,Ze+16),$e="".concat(o,"-geometry.").concat(be,".").concat(Ve),et=ye[$e];if(!et){et={batchThisMesh:!t.reuseGeometries};var tt=!1;switch(y[Ve]){case 0:et.primitiveName="solid",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryNormals=h.subarray(w[Ve],je?h.length:w[Ve+1]),et.geometryUVs=p.subarray(x[Ve],je?p.length:x[Ve+1]),et.geometryIndices=f.subarray(P[Ve],je?f.length:P[Ve+1]),et.geometryEdgeIndices=v.subarray(C[Ve],je?v.length:C[Ve+1]),tt=et.geometryPositions.length>0&&et.geometryIndices.length>0;break;case 1:et.primitiveName="surface",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryNormals=h.subarray(w[Ve],je?h.length:w[Ve+1]),et.geometryUVs=p.subarray(x[Ve],je?p.length:x[Ve+1]),et.geometryIndices=f.subarray(P[Ve],je?f.length:P[Ve+1]),et.geometryEdgeIndices=v.subarray(C[Ve],je?v.length:C[Ve+1]),tt=et.geometryPositions.length>0&&et.geometryIndices.length>0;break;case 2:et.primitiveName="points",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryColors=d.subarray(B[Ve],je?d.length:B[Ve+1]),tt=et.geometryPositions.length>0;break;case 3:et.primitiveName="lines",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryIndices=f.subarray(P[Ve],je?f.length:P[Ve+1]),tt=et.geometryPositions.length>0&&et.geometryIndices.length>0;break;case 4:et.primitiveName="lines",et.geometryPositions=c.subarray(b[Ve],je?c.length:b[Ve+1]),et.geometryIndices=ek(et.geometryPositions,f.subarray(P[Ve],je?f.length:P[Ve+1])),tt=et.geometryPositions.length>0&&et.geometryIndices.length>0;break;default:continue}if(tt||(et=null),et&&(et.geometryPositions.length,et.batchThisMesh)){et.decompressedPositions=new Float32Array(et.geometryPositions.length),et.transformedAndRecompressedPositions=new Uint16Array(et.geometryPositions.length);for(var it=et.geometryPositions,st=et.decompressedPositions,rt=0,nt=it.length;rt0&&ft.length>0;break;case 1:At="surface",ct=c.subarray(b[Ve],je?c.length:b[Ve+1]),ht=h.subarray(w[Ve],je?h.length:w[Ve+1]),dt=p.subarray(x[Ve],je?p.length:x[Ve+1]),ft=f.subarray(P[Ve],je?f.length:P[Ve+1]),vt=v.subarray(C[Ve],je?v.length:C[Ve+1]),gt=ct.length>0&&ft.length>0;break;case 2:At="points",ct=c.subarray(b[Ve],je?c.length:b[Ve+1]),pt=d.subarray(B[Ve],je?d.length:B[Ve+1]),gt=ct.length>0;break;case 3:At="lines",ct=c.subarray(b[Ve],je?c.length:b[Ve+1]),ft=f.subarray(P[Ve],je?f.length:P[Ve+1]),gt=ct.length>0&&ft.length>0;break;case 4:At="lines",ft=ek(ct=c.subarray(b[Ve],je?c.length:b[Ve+1]),f.subarray(P[Ve],je?f.length:P[Ve+1])),gt=ct.length>0&&ft.length>0;break;default:continue}gt&&(s.createMesh(le.apply(Oe,{id:Ye,textureSetId:ze,origin:me,primitive:At,positionsCompressed:ct,normalsCompressed:ht,uv:dt&&dt.length>0?dt:null,colorsCompressed:pt,indices:ft,edgeIndices:vt,positionsDecodeMatrix:Me,color:We,metallic:Xe,roughness:Je,opacity:Ke})),Le.push(Ye))}}Le.length>0&&s.createEntity(le.apply(Ue,{id:Ie,isObject:!0,meshIds:Le}))}}}(e,t,a,s,r,n)}},ik={};ik[mF.version]=mF,ik[bF.version]=bF,ik[xF.version]=xF,ik[MF.version]=MF,ik[kF.version]=kF,ik[TF.version]=TF,ik[OF.version]=OF,ik[GF.version]=GF,ik[JF.version]=JF,ik[tk.version]=tk;var sk=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"XKTLoader",e,r))._maxGeometryBatchSize=r.maxGeometryBatchSize,s.textureTranscoder=r.textureTranscoder,s.dataSource=r.dataSource,s.objectDefaults=r.objectDefaults,s.includeTypes=r.includeTypes,s.excludeTypes=r.excludeTypes,s.excludeUnclassifiedObjects=r.excludeUnclassifiedObjects,s.reuseGeometries=r.reuseGeometries,s}return C(i,[{key:"supportedVersions",get:function(){return Object.keys(ik)}},{key:"textureTranscoder",get:function(){return this._textureTranscoder},set:function(e){this._textureTranscoder=e}},{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new dF}},{key:"objectDefaults",get:function(){return this._objectDefaults},set:function(e){this._objectDefaults=e||AE}},{key:"includeTypes",get:function(){return this._includeTypes},set:function(e){this._includeTypes=e}},{key:"excludeTypes",get:function(){return this._excludeTypes},set:function(e){this._excludeTypes=e}},{key:"excludeUnclassifiedObjects",get:function(){return this._excludeUnclassifiedObjects},set:function(e){this._excludeUnclassifiedObjects=!!e}},{key:"globalizeObjectIds",get:function(){return this._globalizeObjectIds},set:function(e){this._globalizeObjectIds=!!e}},{key:"reuseGeometries",get:function(){return this._reuseGeometries},set:function(e){this._reuseGeometries=!1!==e}},{key:"load",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id),!(t.src||t.xkt||t.manifestSrc||t.manifest))return this.error("load() param expected: src, xkt, manifestSrc or manifestData"),A;var i={},s=t.includeTypes||this._includeTypes,r=t.excludeTypes||this._excludeTypes,n=t.objectDefaults||this._objectDefaults;if(i.reuseGeometries=null!==t.reuseGeometries&&void 0!==t.reuseGeometries?t.reuseGeometries:!1!==this._reuseGeometries,s){i.includeTypesMap={};for(var o=0,a=s.length;o=t.length?n():e._dataSource.getMetaModel("".concat(m).concat(t[a]),(function(t){h.loadData(t,{includeTypes:s,excludeTypes:r,globalizeObjectIds:i.globalizeObjectIds}),a++,e.scheduleTask(l,100)}),o)}()},y=function(s,r,n){var o=0;!function a(){o>=s.length?r():e._dataSource.getXKT("".concat(m).concat(s[o]),(function(s){e._parseModel(s,t,i,A,null,v),o++,e.scheduleTask(a,100)}),n)}()},b=function(s,r,n){var o=0;!function a(){o>=s.length?r():e._dataSource.getXKT("".concat(m).concat(s[o]),(function(s){e._parseModel(s,t,i,A,h,v),o++,e.scheduleTask(a,100)}),n)}()};if(t.manifest){var w=t.manifest,B=w.xktFiles;if(!B||0===B.length)return void p("load(): Failed to load model manifest - manifest not valid");var x=w.metaModelFiles;x?_(x,(function(){y(B,d,p)}),p):b(B,d,p)}else this._dataSource.getManifest(t.manifestSrc,(function(e){if(!A.destroyed){var t=e.xktFiles;if(t&&0!==t.length){var i=e.metaModelFiles;i?_(i,(function(){y(t,d,p)}),p):b(t,d,p)}else p("load(): Failed to load model manifest - manifest not valid")}}),p)}return A}},{key:"_loadModel",value:function(e,t,i,s,r,n,o,a){var l=this;this._dataSource.getXKT(t.src,(function(e){l._parseModel(e,t,i,s,r,n),o()}),a)}},{key:"_parseModel",value:function(e,t,i,s,r,n){if(!s.destroyed){var o=new DataView(e),a=new Uint8Array(e),l=o.getUint32(0,!0),u=ik[l];if(u){this.log("Loading .xkt V"+l);for(var A=o.getUint32(4,!0),c=[],h=4*(A+2),d=0;de.size)throw new RangeError("offset:"+t+", length:"+i+", size:"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function p(){}function f(e){var i,s=this;s.init=function(e){i=new Blob([],{type:o}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:o}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function v(t){var i=this,s="",r="";i.init=function(e){s+="data:"+(t||"")+";base64,",e()},i.writeUint8Array=function(t,i){var n,o=r.length,a=r;for(r="",n=0;n<3*Math.floor((o+t.length)/3)-o;n++)a+=String.fromCharCode(t[n]);for(;n2?s+=e.btoa(a):r=a,i()},i.getData=function(t){t(s+e.btoa(r))}}function g(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function m(e,t,i,s,r,o,a,l,u,A){var c,h,d,p=0,f=t.sn;function v(){e.removeEventListener("message",g,!1),l(h,d)}function g(t){var i=t.data,r=i.data,n=i.error;if(n)return n.toString=function(){return"Error: "+this.message},void u(n);if(i.sn===f)switch("number"==typeof i.codecTime&&(e.codecTime+=i.codecTime),"number"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case"append":r?(h+=r.length,s.writeUint8Array(r,(function(){m()}),A)):m();break;case"flush":d=i.crc,r?(h+=r.length,s.writeUint8Array(r,(function(){v()}),A)):v();break;case"progress":a&&a(c+i.loaded,o);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",i)}}function m(){(c=p*n)<=o?i.readUint8Array(r+c,Math.min(n,o-c),(function(i){a&&a(c,o);var s=0===c?t:{sn:f};s.type="append",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}p++}),u):e.postMessage({sn:f,type:"flush"})}h=0,e.addEventListener("message",g,!1),m()}function _(e,t,i,s,r,o,l,u,A,c){var h,d=0,p=0,f="input"===o,v="output"===o,g=new a;!function o(){var a;if((h=d*n)127?r[i-128]:String.fromCharCode(i);return s}function w(e){return decodeURIComponent(escape(e))}function B(e){var t,i="";for(t=0;t>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function P(t,n,o){var a=0;function l(){}l.prototype.getData=function(s,n,l,A){var c=this;function h(e,t){A&&!function(e){var t=u(4);return t.view.setUint32(0,e),c.crc32==t.view.getUint32(0)}(t)?o("CRC failed."):s.getData((function(e){n(e)}))}function d(e){o(e||r)}function p(e){o(e||"Error while writing file data.")}t.readUint8Array(c.offset,30,(function(r){var n,f=u(r.length,r);1347093252==f.view.getUint32(0)?(x(c,f,4,!1,o),n=c.offset+30+c.filenameLength+c.extraFieldLength,s.init((function(){0===c.compressionMethod?y(c._worker,a++,t,s,n,c.compressedSize,A,h,l,d,p):function(t,i,s,r,n,o,a,l,u,A,c){var h=a?"output":"none";e.zip.useWebWorkers?m(t,{sn:i,codecClass:"Inflater",crcType:h},s,r,n,o,u,l,A,c):_(new e.zip.Inflater,s,r,n,o,h,u,l,A,c)}(c._worker,a++,t,s,n,c.compressedSize,A,h,l,d,p)}),p)):o(i)}),d)};var A={getEntries:function(e){var r=this._worker;!function(e){t.size<22?o(i):r(22,(function(){r(Math.min(65558,t.size),(function(){o(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){o(s)}))}}((function(n){var a,A;a=n.getUint32(16,!0),A=n.getUint16(8,!0),a<0||a>=t.size?o(i):t.readUint8Array(a,t.size-a,(function(t){var s,n,a,c,h=0,d=[],p=u(t.length,t);for(s=0;s>>8^i[255&(t^e[s])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},c.prototype=new A,c.prototype.constructor=c,h.prototype=new A,h.prototype.constructor=h,d.prototype=new A,d.prototype.constructor=d,p.prototype.getData=function(e){e(this.data)},f.prototype=new p,f.prototype.constructor=f,v.prototype=new p,v.prototype.constructor=v,g.prototype=new p,g.prototype.constructor=g;var F={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function k(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error("zip.workerScripts."+t+" is not an array!"));r=function(e){var t=document.createElement("a");return e.map((function(e){return t.href=e,t.href}))}(r)}else(r=F[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+r[0];var n=new Worker(r[0]);n.codecTime=n.crcTime=0,n.postMessage({type:"importScripts",scripts:r.slice(1)}),n.addEventListener("message",(function e(t){var r=t.data;if(r.error)return n.terminate(),void s(r.error);"importScripts"===r.type&&(n.removeEventListener("message",e),n.removeEventListener("error",o),i(n))})),n.addEventListener("error",o)}else s(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function o(e){n.terminate(),s(e)}}function I(e){console.error(e)}e.zip={Reader:A,Writer:p,BlobReader:d,Data64URIReader:h,TextReader:c,BlobWriter:g,Data64URIWriter:v,TextWriter:f,createReader:function(e,t,i){i=i||I,e.init((function(){P(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||I,s=!!s,e.init((function(){E(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(nk);var ok=nk.zip;!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function n(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener("load",(function(){t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener("error",s,!1),r.open("GET",e),r.responseType="arraybuffer",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement("a");return t.href=e,"http:"===t.protocol||"https:"===t.protocol}(e)){var n=new XMLHttpRequest;n.addEventListener("load",(function(){t.size=Number(n.getResponseHeader("Content-Length")),t.size?s():i(s,r)}),!1),n.addEventListener("error",r,!1),n.open("HEAD",e),n.send()}else i(s,r)},t.readUint8Array=function(e,s,r,n){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),n)}}function o(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener("load",(function(){t.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?i():s("HTTP Range not supported.")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var n=new XMLHttpRequest;n.open("GET",e),n.responseType="arraybuffer",n.setRequestHeader("Range","bytes="+t+"-"+(t+i-1)),n.addEventListener("load",(function(){s(n.response)}),!1),n.addEventListener("error",r,!1),n.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function a(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function u(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,n){var o=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=n,s.write(o)},r.getData=function(t){e.file(t)}}n.prototype=new s,n.prototype.constructor=n,o.prototype=new s,o.prototype.constructor=o,a.prototype=new s,a.prototype.constructor=a,l.prototype=new r,l.prototype.constructor=l,u.prototype=new r,u.prototype.constructor=u,e.FileWriter=u,e.HttpReader=n,e.HttpRangeReader=o,e.ArrayBufferReader=a,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,n){if(i.directory)return n?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw"Parent entry is not a directory."}(this,i,{data:s,Reader:r?o:n})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new o(e):new n(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(ok);var ak=["4.2"],lk=function(){function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,e),this.supportedSchemas=ak,this._xrayOpacity=.7,this._src=null,this._options=i,this.viewpoint=null,i.workerScriptsPath?(ok.workerScriptsPath=i.workerScriptsPath,this.src=i.src,this.xrayOpacity=.7,this.displayEffect=i.displayEffect,this.createMetaModel=i.createMetaModel):t.error("Config expected: workerScriptsPath")}return C(e,[{key:"load",value:function(e,t,i,s,r,n){switch(s.materialType){case"MetallicMaterial":t._defaultMaterial=new Cn(t,{baseColor:[1,1,1],metallic:.6,roughness:.6});break;case"SpecularMaterial":t._defaultMaterial=new Fn(t,{diffuse:[1,1,1],specular:$.vec3([1,1,1]),glossiness:.5});break;default:t._defaultMaterial=new Ni(t,{reflectivity:.75,shiness:100,diffuse:[1,1,1]})}t._wireframeMaterial=new Bn(t,{color:[0,0,0],lineWidth:2});var o=t.scene.canvas.spinner;o.processes++,uk(e,t,i,s,(function(){o.processes--,r&&r(),t.fire("loaded",!0,!1)}),(function(e){o.processes--,t.error(e),n&&n(e),t.fire("error",e)}),(function(e){console.log("Error, Will Robinson: "+e)}))}}]),e}(),uk=function(e,t,i,s,r,n){!function(e,t,i){var s=new gk;s.load(e,(function(){t(s)}),(function(e){i("Error loading ZIP archive: "+e)}))}(i,(function(i){Ak(e,i,s,t,r,n)}),n)},Ak=function(){return function(t,i,s,r,n){var o={plugin:t,zip:i,edgeThreshold:30,materialType:s.materialType,scene:r.scene,modelNode:r,info:{references:{}},materials:{}};s.createMetaModel&&(o.metaModelData={modelId:r.id,metaObjects:[{name:r.id,type:"Default",id:r.id}]}),r.scene.loading++,function(t,i){t.zip.getFile("Manifest.xml",(function(s,r){for(var n=r.children,o=0,a=n.length;o0){for(var o=n.trim().split(" "),a=new Int16Array(o.length),l=0,u=0,A=o.length;u0){i.primitive="triangles";for(var n=[],o=0,a=r.length;o=t.length)i();else{var a=t[n].id,l=a.lastIndexOf(":");l>0&&(a=a.substring(l+1));var u=a.lastIndexOf("#");u>0&&(a=a.substring(0,u)),s[a]?r(n+1):function(e,t,i){e.zip.getFile(t,(function(t,s){!function(e,t,i){for(var s,r=t.children,n=0,o=r.length;n0)for(var s=0,r=t.length;s1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),s=t.call(this,"XML3DLoader",e,r),r.workerScriptsPath?(s._workerScriptsPath=r.workerScriptsPath,s._loader=new lk(b(s),r),s.supportedSchemas=s._loader.supportedSchemas,s):(s.error("Config expected: workerScriptsPath"),y(s))}return C(i,[{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.workerScriptsPath=this._workerScriptsPath,e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new wn(this.viewer.scene,le.apply(e,{isModel:!0})),i=e.src;return i?(this._loader.load(this,t,i,e),t):(this.error("load() param expected: src"),t)}}]),i}(),yk=function(){function e(){x(this,e)}return C(e,[{key:"getIFC",value:function(e,t,i){var s=function(){};t=t||s,i=i||s;var r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){var n=!!r[2],o=r[3];o=window.decodeURIComponent(o),n&&(o=window.atob(o));try{for(var a=new ArrayBuffer(o.length),l=new Uint8Array(a),u=0;u1&&void 0!==arguments[1]?arguments[1]:{};if(x(this,i),(s=t.call(this,"ifcLoader",e,r)).dataSource=r.dataSource,s.objectDefaults=r.objectDefaults,s.includeTypes=r.includeTypes,s.excludeTypes=r.excludeTypes,s.excludeUnclassifiedObjects=r.excludeUnclassifiedObjects,!r.WebIFC)throw"Parameter expected: WebIFC";if(!r.IfcAPI)throw"Parameter expected: IfcAPI";return s._webIFC=r.WebIFC,s._ifcAPI=r.IfcAPI,s}return C(i,[{key:"supportedVersions",get:function(){return["2x3","4"]}},{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new yk}},{key:"objectDefaults",get:function(){return this._objectDefaults},set:function(e){this._objectDefaults=e||AE}},{key:"includeTypes",get:function(){return this._includeTypes},set:function(e){this._includeTypes=e}},{key:"excludeTypes",get:function(){return this._excludeTypes},set:function(e){this._excludeTypes=e}},{key:"excludeUnclassifiedObjects",get:function(){return this._excludeUnclassifiedObjects},set:function(e){this._excludeUnclassifiedObjects=!!e}},{key:"globalizeObjectIds",get:function(){return this._globalizeObjectIds},set:function(e){this._globalizeObjectIds=!!e}},{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new hh(this.viewer.scene,le.apply(e,{isModel:!0}));if(!e.src&&!e.ifc)return this.error("load() param expected: src or IFC"),t;var i={autoNormals:!0};if(!1!==e.loadMetadata){var s=e.includeTypes||this._includeTypes,r=e.excludeTypes||this._excludeTypes,n=e.objectDefaults||this._objectDefaults;if(s){i.includeTypesMap={};for(var o=0,a=s.length;o0){for(var l=n.Name.value,u=[],A=0,c=a.length;A1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"lasLoader",e,r)).dataSource=r.dataSource,s.skip=r.skip,s.fp64=r.fp64,s.colorDepth=r.colorDepth,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new wk}},{key:"skip",get:function(){return this._skip},set:function(e){this._skip=e||1}},{key:"fp64",get:function(){return this._fp64},set:function(e){this._fp64=!!e}},{key:"colorDepth",get:function(){return this._colorDepth},set:function(e){this._colorDepth=e||"auto"}},{key:"load",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id);var i=new hh(this.viewer.scene,le.apply(t,{isModel:!0}));if(!t.src&&!t.las)return this.error("load() param expected: src or las"),i;var s={las:{skip:this._skip,fp64:this._fp64,colorDepth:this._colorDepth}};if(t.src)this._loadModel(t.src,t,s,i);else{var r=this.viewer.scene.canvas.spinner;r.processes++,this._parseModel(t.las,t,s,i).then((function(){r.processes--}),(function(t){r.processes--,e.error(t),i.fire("error",t)}))}return i}},{key:"_loadModel",value:function(e,t,i,s){var r=this,n=this.viewer.scene.canvas.spinner;n.processes++,this._dataSource.getLAS(t.src,(function(e){r._parseModel(e,t,i,s).then((function(){n.processes--}),(function(e){n.processes--,r.error(e),s.fire("error",e)}))}),(function(e){n.processes--,r.error(e),s.fire("error",e)}))}},{key:"_parseModel",value:function(e,t,i,s){var r=this;function n(e){var i=e.value;if(t.rotateX&&i)for(var s=0,r=i.length;s=e.length)return e;for(var i=[],s=0;s80*i){s=n=e[0],r=o=e[1];for(var p=i;pn&&(n=a),l>o&&(o=l);u=0!==(u=Math.max(n-s,o-r))?1/u:0}return Lk(h,d,i,s,r,u),d}function Sk(e,t,i,s,r){var n,o;if(r===sI(e,t,i,s)>0)for(n=t;n=t;n-=s)o=eI(n,e[n],e[n+1],o);return o&&Xk(o,o.next)&&(tI(o),o=o.next),o}function Tk(e,t){if(!e)return e;t||(t=e);var i,s=e;do{if(i=!1,s.steiner||!Xk(s,s.next)&&0!==Kk(s.prev,s,s.next))s=s.next;else{if(tI(s),(s=t=s.prev)===s.next)break;i=!0}}while(i||s!==t);return t}function Lk(e,t,i,s,r,n,o){if(e){!o&&n&&function(e,t,i,s){var r=e;do{null===r.z&&(r.z=jk(r.x,r.y,t,i,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,i,s,r,n,o,a,l,u=1;do{for(i=e,e=null,n=null,o=0;i;){for(o++,s=i,a=0,t=0;t0||l>0&&s;)0!==a&&(0===l||!s||i.z<=s.z)?(r=i,i=i.nextZ,a--):(r=s,s=s.nextZ,l--),n?n.nextZ=r:e=r,r.prevZ=n,n=r;i=s}n.nextZ=null,u*=2}while(o>1)}(r)}(e,s,r,n);for(var a,l,u=e;e.prev!==e.next;)if(a=e.prev,l=e.next,n?Uk(e,s,r,n):Rk(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),tI(e),e=l.next,u=l.next;else if((e=l)===u){o?1===o?Lk(e=Ok(Tk(e),t,i),t,i,s,r,n,2):2===o&&Nk(e,t,i,s,r,n):Lk(Tk(e),t,i,s,r,n,1);break}}}function Rk(e){var t=e.prev,i=e,s=e.next;if(Kk(t,i,s)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(zk(t.x,t.y,i.x,i.y,s.x,s.y,r.x,r.y)&&Kk(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function Uk(e,t,i,s){var r=e.prev,n=e,o=e.next;if(Kk(r,n,o)>=0)return!1;for(var a=r.xn.x?r.x>o.x?r.x:o.x:n.x>o.x?n.x:o.x,A=r.y>n.y?r.y>o.y?r.y:o.y:n.y>o.y?n.y:o.y,c=jk(a,l,t,i,s),h=jk(u,A,t,i,s),d=e.prevZ,p=e.nextZ;d&&d.z>=c&&p&&p.z<=h;){if(d!==e.prev&&d!==e.next&&zk(r.x,r.y,n.x,n.y,o.x,o.y,d.x,d.y)&&Kk(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,p!==e.prev&&p!==e.next&&zk(r.x,r.y,n.x,n.y,o.x,o.y,p.x,p.y)&&Kk(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;d&&d.z>=c;){if(d!==e.prev&&d!==e.next&&zk(r.x,r.y,n.x,n.y,o.x,o.y,d.x,d.y)&&Kk(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;p&&p.z<=h;){if(p!==e.prev&&p!==e.next&&zk(r.x,r.y,n.x,n.y,o.x,o.y,p.x,p.y)&&Kk(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function Ok(e,t,i){var s=e;do{var r=s.prev,n=s.next.next;!Xk(r,n)&&Jk(r,s,s.next,n)&&qk(r,n)&&qk(n,r)&&(t.push(r.i/i),t.push(s.i/i),t.push(n.i/i),tI(s),tI(s.next),s=e=n),s=s.next}while(s!==e);return Tk(s)}function Nk(e,t,i,s,r,n){var o=e;do{for(var a=o.next.next;a!==o.prev;){if(o.i!==a.i&&Wk(o,a)){var l=$k(o,a);return o=Tk(o,o.next),l=Tk(l,l.next),Lk(o,t,i,s,r,n),void Lk(l,t,i,s,r,n)}a=a.next}o=o.next}while(o!==e)}function Qk(e,t){return e.x-t.x}function Vk(e,t){if(t=function(e,t){var i,s=t,r=e.x,n=e.y,o=-1/0;do{if(n<=s.y&&n>=s.next.y&&s.next.y!==s.y){var a=s.x+(n-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(a<=r&&a>o){if(o=a,a===r){if(n===s.y)return s;if(n===s.next.y)return s.next}i=s.x=s.x&&s.x>=A&&r!==s.x&&zk(ni.x||s.x===i.x&&Hk(i,s)))&&(i=s,h=l)),s=s.next}while(s!==u);return i}(e,t),t){var i=$k(t,e);Tk(t,t.next),Tk(i,i.next)}}function Hk(e,t){return Kk(e.prev,e,t.prev)<0&&Kk(t.next,e,e.next)<0}function jk(e,t,i,s,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function Gk(e){var t=e,i=e;do{(t.x=0&&(e-o)*(s-a)-(i-o)*(t-a)>=0&&(i-o)*(n-a)-(r-o)*(s-a)>=0}function Wk(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&Jk(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(qk(e,t)&&qk(t,e)&&function(e,t){var i=e,s=!1,r=(e.x+t.x)/2,n=(e.y+t.y)/2;do{i.y>n!=i.next.y>n&&i.next.y!==i.y&&r<(i.next.x-i.x)*(n-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next}while(i!==e);return s}(e,t)&&(Kk(e.prev,e,t.prev)||Kk(e,t.prev,t))||Xk(e,t)&&Kk(e.prev,e,e.next)>0&&Kk(t.prev,t,t.next)>0)}function Kk(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function Xk(e,t){return e.x===t.x&&e.y===t.y}function Jk(e,t,i,s){var r=Zk(Kk(e,t,i)),n=Zk(Kk(e,t,s)),o=Zk(Kk(i,s,e)),a=Zk(Kk(i,s,t));return r!==n&&o!==a||(!(0!==r||!Yk(e,i,t))||(!(0!==n||!Yk(e,s,t))||(!(0!==o||!Yk(i,e,s))||!(0!==a||!Yk(i,t,s)))))}function Yk(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function Zk(e){return e>0?1:e<0?-1:0}function qk(e,t){return Kk(e.prev,e,e.next)<0?Kk(e,t,e.next)>=0&&Kk(e,e.prev,t)>=0:Kk(e,t,e.prev)<0||Kk(e,e.next,t)<0}function $k(e,t){var i=new iI(e.i,e.x,e.y),s=new iI(t.i,t.x,t.y),r=e.next,n=t.prev;return e.next=t,t.prev=e,i.next=r,r.prev=i,s.next=i,i.prev=s,n.next=s,s.prev=n,s}function eI(e,t,i,s){var r=new iI(e,t,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function tI(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function iI(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function sI(e,t,i,s){for(var r=0,n=t,o=i-s;n0&&(s+=e[r-1].length,i.holes.push(s))}return i};var rI=$.vec2(),nI=$.vec3(),oI=$.vec3(),aI=$.vec3(),lI=function(e){g(i,Se);var t=_(i);function i(e){var s,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"cityJSONLoader",e,r)).dataSource=r.dataSource,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new Ik}},{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new hh(this.viewer.scene,le.apply(e,{isModel:!0,edges:!0}));if(!e.src&&!e.cityJSON)return this.error("load() param expected: src or cityJSON"),t;var i={};if(e.src)this._loadModel(e.src,e,i,t);else{var s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.cityJSON,e,i,t),s.processes--}return t}},{key:"_loadModel",value:function(e,t,i,s){var r=this,n=this.viewer.scene.canvas.spinner;n.processes++,this._dataSource.getCityJSON(t.src,(function(e){r._parseModel(e,t,i,s),n.processes--}),(function(e){n.processes--,r.error(e),s.fire("error",e)}))}},{key:"_parseModel",value:function(e,t,i,s){if(!s.destroyed){var r=e.transform?this._transformVertices(e.vertices,e.transform,i.rotateX):e.vertices,n=t.stats||{};n.sourceFormat=e.type||"CityJSON",n.schemaVersion=e.version||"",n.title="",n.author="",n.created="",n.numMetaObjects=0,n.numPropertySets=0,n.numObjects=0,n.numGeometries=0,n.numTriangles=0,n.numVertices=0;var o=!1!==t.loadMetadata,a=o?{id:$.createUUID(),name:"Model",type:"Model"}:null,l=o?{id:"",projectId:"",author:"",createdAt:"",schema:e.version||"",creatingApplication:"",metaObjects:[a],propertySets:[]}:null,u={data:e,vertices:r,sceneModel:s,loadMetadata:o,metadata:l,rootMetaObject:a,nextId:0,stats:n};if(this._parseCityJSON(u),s.finalize(),o){var A=s.id;this.viewer.metaScene.createMetaModel(A,u.metadata,i)}s.scene.once("tick",(function(){s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}}},{key:"_transformVertices",value:function(e,t,i){for(var s=[],r=t.scale||$.vec3([1,1,1]),n=t.translate||$.vec3([0,0,0]),o=0,a=0;o0){for(var u=[],A=0,c=t.geometry.length;A0){var _=g[m[0]];if(void 0!==_.value)d=v[_.value];else{var y=_.values;if(y){p=[];for(var b=0,w=y.length;b0&&(s.createEntity({id:i,meshIds:u,isObject:!0}),e.stats.numObjects++)}}},{key:"_parseGeometrySurfacesWithOwnMaterials",value:function(e,t,i,s){switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":var r=t.boundaries;this._parseSurfacesWithOwnMaterials(e,i,r,s);break;case"Solid":for(var n=t.boundaries,o=0;o0&&c.push(u.length);var f=this._extractLocalIndices(e,a[p],h,d);u.push.apply(u,A(f))}if(3===u.length)d.indices.push(u[0]),d.indices.push(u[1]),d.indices.push(u[2]);else if(u.length>3){for(var v=[],g=0;g0&&o.indices.length>0){var f=""+e.nextId++;r.createMesh({id:f,primitive:"triangles",positions:o.positions,indices:o.indices,color:i&&i.diffuseColor?i.diffuseColor:[.8,.8,.8],opacity:1}),s.push(f),e.stats.numGeometries++,e.stats.numVertices+=o.positions.length/3,e.stats.numTriangles+=o.indices.length/3}}},{key:"_parseSurfacesWithSharedMaterial",value:function(e,t,i,s){for(var r=e.vertices,n=0;n0&&a.push(o.length);var u=this._extractLocalIndices(e,t[n][l],i,s);o.push.apply(o,A(u))}if(3===o.length)s.indices.push(o[0]),s.indices.push(o[1]),s.indices.push(o[2]);else if(o.length>3){for(var c=[],h=0;h1&&void 0!==arguments[1]?arguments[1]:{};return x(this,i),(s=t.call(this,"DotBIMLoader",e,r)).dataSource=r.dataSource,s.objectDefaults=r.objectDefaults,s}return C(i,[{key:"dataSource",get:function(){return this._dataSource},set:function(e){this._dataSource=e||new uI}},{key:"objectDefaults",get:function(){return this._objectDefaults},set:function(e){this._objectDefaults=e||AE}},{key:"load",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.id&&this.viewer.scene.components[t.id]&&(this.error("Component with this ID already exists in viewer: "+t.id+" - will autogenerate this ID"),delete t.id);var i=new hh(this.viewer.scene,le.apply(t,{isModel:!0,backfaces:t.backfaces,dtxEnabled:t.dtxEnabled,rotation:t.rotation,origin:t.origin})),s=i.id;if(!t.src&&!t.dotBIM)return this.error("load() param expected: src or dotBIM"),i;var r,n,o=t.objectDefaults||this._objectDefaults||AE;if(t.includeTypes){r={};for(var a=0,l=t.includeTypes.length;a {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n * @class GLTFLoaderPlugin\n ", + "value": "*\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n *\n * ## Showing a glTF model in TreeViewPlugin when metadata is not available\n *\n * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a\n * `name` attribute, giving the Entity an ID that has the value of the `name` attribute.\n *\n * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not\n * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin\n * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any\n * MetaModels that we create alongside the model.\n *\n * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter\n * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"public-use-sample-apartment.glb\",\n *\n * //-------------------------------------------------------------------------\n * // Specify an `elementId` parameter, which causes the\n * // entire model to be loaded into a single Entity that gets this ID.\n * //-------------------------------------------------------------------------\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * //-------------------------------------------------------------------------\n * // Specify a `metaModelJSON` parameter, which creates a\n * // MetaModel with two MetaObjects, one of which corresponds\n * // to our Entity. Then the TreeViewPlugin is able to have a node\n * // that can represent the model and control the visibility of the Entity.\n * //--------------------------------------------------------------------------\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates a MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates a MetaObject with this ID (same ID as our Entity)\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n * @class GLTFLoaderPlugin\n ", "start": 274, - "end": 7775, + "end": 11349, "loc": { "start": { "line": 7, "column": 0 }, "end": { - "line": 160, + "line": 233, "column": 3 } } @@ -490,29 +490,29 @@ }, { "type": "Identifier", - "start": 7776, - "end": 19625, + "start": 11350, + "end": 23199, "loc": { "start": { - "line": 161, + "line": 234, "column": 0 }, "end": { - "line": 420, + "line": 493, "column": 1 } }, "id": { "type": "Identifier", - "start": 7782, - "end": 7798, + "start": 11356, + "end": 11372, "loc": { "start": { - "line": 161, + "line": 234, "column": 6 }, "end": { - "line": 161, + "line": 234, "column": 22 }, "identifierName": "GLTFLoaderPlugin" @@ -522,15 +522,15 @@ }, "superClass": { "type": "Identifier", - "start": 7807, - "end": 7813, + "start": 11381, + "end": 11387, "loc": { "start": { - "line": 161, + "line": 234, "column": 31 }, "end": { - "line": 161, + "line": 234, "column": 37 }, "identifierName": "Plugin" @@ -539,30 +539,30 @@ }, "body": { "type": "ClassBody", - "start": 7814, - "end": 19625, + "start": 11388, + "end": 23199, "loc": { "start": { - "line": 161, + "line": 234, "column": 38 }, "end": { - "line": 420, + "line": 493, "column": 1 } }, "body": [ { "type": "ClassMethod", - "start": 8486, - "end": 8730, + "start": 12060, + "end": 12304, "loc": { "start": { - "line": 172, + "line": 245, "column": 4 }, "end": { - "line": 180, + "line": 253, "column": 5 } }, @@ -570,15 +570,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8486, - "end": 8497, + "start": 12060, + "end": 12071, "loc": { "start": { - "line": 172, + "line": 245, "column": 4 }, "end": { - "line": 172, + "line": 245, "column": 15 }, "identifierName": "constructor" @@ -594,15 +594,15 @@ "params": [ { "type": "Identifier", - "start": 8498, - "end": 8504, + "start": 12072, + "end": 12078, "loc": { "start": { - "line": 172, + "line": 245, "column": 16 }, "end": { - "line": 172, + "line": 245, "column": 22 }, "identifierName": "viewer" @@ -611,29 +611,29 @@ }, { "type": "AssignmentPattern", - "start": 8506, - "end": 8514, + "start": 12080, + "end": 12088, "loc": { "start": { - "line": 172, + "line": 245, "column": 24 }, "end": { - "line": 172, + "line": 245, "column": 32 } }, "left": { "type": "Identifier", - "start": 8506, - "end": 8509, + "start": 12080, + "end": 12083, "loc": { "start": { - "line": 172, + "line": 245, "column": 24 }, "end": { - "line": 172, + "line": 245, "column": 27 }, "identifierName": "cfg" @@ -642,15 +642,15 @@ }, "right": { "type": "ObjectExpression", - "start": 8512, - "end": 8514, + "start": 12086, + "end": 12088, "loc": { "start": { - "line": 172, + "line": 245, "column": 30 }, "end": { - "line": 172, + "line": 245, "column": 32 } }, @@ -660,58 +660,58 @@ ], "body": { "type": "BlockStatement", - "start": 8516, - "end": 8730, + "start": 12090, + "end": 12304, "loc": { "start": { - "line": 172, + "line": 245, "column": 34 }, "end": { - "line": 180, + "line": 253, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 8527, - "end": 8560, + "start": 12101, + "end": 12134, "loc": { "start": { - "line": 174, + "line": 247, "column": 8 }, "end": { - "line": 174, + "line": 247, "column": 41 } }, "expression": { "type": "CallExpression", - "start": 8527, - "end": 8559, + "start": 12101, + "end": 12133, "loc": { "start": { - "line": 174, + "line": 247, "column": 8 }, "end": { - "line": 174, + "line": 247, "column": 40 } }, "callee": { "type": "Super", - "start": 8527, - "end": 8532, + "start": 12101, + "end": 12106, "loc": { "start": { - "line": 174, + "line": 247, "column": 8 }, "end": { - "line": 174, + "line": 247, "column": 13 } } @@ -719,15 +719,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 8533, - "end": 8545, + "start": 12107, + "end": 12119, "loc": { "start": { - "line": 174, + "line": 247, "column": 14 }, "end": { - "line": 174, + "line": 247, "column": 26 } }, @@ -739,15 +739,15 @@ }, { "type": "Identifier", - "start": 8547, - "end": 8553, + "start": 12121, + "end": 12127, "loc": { "start": { - "line": 174, + "line": 247, "column": 28 }, "end": { - "line": 174, + "line": 247, "column": 34 }, "identifierName": "viewer" @@ -756,15 +756,15 @@ }, { "type": "Identifier", - "start": 8555, - "end": 8558, + "start": 12129, + "end": 12132, "loc": { "start": { - "line": 174, + "line": 247, "column": 36 }, "end": { - "line": 174, + "line": 247, "column": 39 }, "identifierName": "cfg" @@ -776,73 +776,73 @@ }, { "type": "ExpressionStatement", - "start": 8570, - "end": 8631, + "start": 12144, + "end": 12205, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 8570, - "end": 8630, + "start": 12144, + "end": 12204, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8570, - "end": 8592, + "start": 12144, + "end": 12166, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 8570, - "end": 8574, + "start": 12144, + "end": 12148, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 12 } } }, "property": { "type": "Identifier", - "start": 8575, - "end": 8592, + "start": 12149, + "end": 12166, "loc": { "start": { - "line": 176, + "line": 249, "column": 13 }, "end": { - "line": 176, + "line": 249, "column": 30 }, "identifierName": "_sceneModelLoader" @@ -853,29 +853,29 @@ }, "right": { "type": "NewExpression", - "start": 8595, - "end": 8630, + "start": 12169, + "end": 12204, "loc": { "start": { - "line": 176, + "line": 249, "column": 33 }, "end": { - "line": 176, + "line": 249, "column": 68 } }, "callee": { "type": "Identifier", - "start": 8599, - "end": 8619, + "start": 12173, + "end": 12193, "loc": { "start": { - "line": 176, + "line": 249, "column": 37 }, "end": { - "line": 176, + "line": 249, "column": 57 }, "identifierName": "GLTFSceneModelLoader" @@ -885,30 +885,30 @@ "arguments": [ { "type": "ThisExpression", - "start": 8620, - "end": 8624, + "start": 12194, + "end": 12198, "loc": { "start": { - "line": 176, + "line": 249, "column": 58 }, "end": { - "line": 176, + "line": 249, "column": 62 } } }, { "type": "Identifier", - "start": 8626, - "end": 8629, + "start": 12200, + "end": 12203, "loc": { "start": { - "line": 176, + "line": 249, "column": 64 }, "end": { - "line": 176, + "line": 249, "column": 67 }, "identifierName": "cfg" @@ -921,73 +921,73 @@ }, { "type": "ExpressionStatement", - "start": 8641, - "end": 8674, + "start": 12215, + "end": 12248, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 8641, - "end": 8673, + "start": 12215, + "end": 12247, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8641, - "end": 8656, + "start": 12215, + "end": 12230, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 8641, - "end": 8645, + "start": 12215, + "end": 12219, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 12 } } }, "property": { "type": "Identifier", - "start": 8646, - "end": 8656, + "start": 12220, + "end": 12230, "loc": { "start": { - "line": 178, + "line": 251, "column": 13 }, "end": { - "line": 178, + "line": 251, "column": 23 }, "identifierName": "dataSource" @@ -998,29 +998,29 @@ }, "right": { "type": "MemberExpression", - "start": 8659, - "end": 8673, + "start": 12233, + "end": 12247, "loc": { "start": { - "line": 178, + "line": 251, "column": 26 }, "end": { - "line": 178, + "line": 251, "column": 40 } }, "object": { "type": "Identifier", - "start": 8659, - "end": 8662, + "start": 12233, + "end": 12236, "loc": { "start": { - "line": 178, + "line": 251, "column": 26 }, "end": { - "line": 178, + "line": 251, "column": 29 }, "identifierName": "cfg" @@ -1029,15 +1029,15 @@ }, "property": { "type": "Identifier", - "start": 8663, - "end": 8673, + "start": 12237, + "end": 12247, "loc": { "start": { - "line": 178, + "line": 251, "column": 30 }, "end": { - "line": 178, + "line": 251, "column": 40 }, "identifierName": "dataSource" @@ -1050,73 +1050,73 @@ }, { "type": "ExpressionStatement", - "start": 8683, - "end": 8724, + "start": 12257, + "end": 12298, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 8683, - "end": 8723, + "start": 12257, + "end": 12297, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8683, - "end": 8702, + "start": 12257, + "end": 12276, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 8683, - "end": 8687, + "start": 12257, + "end": 12261, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 12 } } }, "property": { "type": "Identifier", - "start": 8688, - "end": 8702, + "start": 12262, + "end": 12276, "loc": { "start": { - "line": 179, + "line": 252, "column": 13 }, "end": { - "line": 179, + "line": 252, "column": 27 }, "identifierName": "objectDefaults" @@ -1127,29 +1127,29 @@ }, "right": { "type": "MemberExpression", - "start": 8705, - "end": 8723, + "start": 12279, + "end": 12297, "loc": { "start": { - "line": 179, + "line": 252, "column": 30 }, "end": { - "line": 179, + "line": 252, "column": 48 } }, "object": { "type": "Identifier", - "start": 8705, - "end": 8708, + "start": 12279, + "end": 12282, "loc": { "start": { - "line": 179, + "line": 252, "column": 30 }, "end": { - "line": 179, + "line": 252, "column": 33 }, "identifierName": "cfg" @@ -1158,15 +1158,15 @@ }, "property": { "type": "Identifier", - "start": 8709, - "end": 8723, + "start": 12283, + "end": 12297, "loc": { "start": { - "line": 179, + "line": 252, "column": 34 }, "end": { - "line": 179, + "line": 252, "column": 48 }, "identifierName": "objectDefaults" @@ -1185,15 +1185,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"GLTFLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link GLTFDefaultDataSource}, which loads over HTTP.\n ", - "start": 7821, - "end": 8481, + "start": 11395, + "end": 12055, "loc": { "start": { - "line": 163, + "line": 236, "column": 4 }, "end": { - "line": 171, + "line": 244, "column": 7 } } @@ -1203,15 +1203,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 8736, - "end": 8989, + "start": 12310, + "end": 12563, "loc": { "start": { - "line": 182, + "line": 255, "column": 4 }, "end": { - "line": 188, + "line": 261, "column": 7 } } @@ -1220,15 +1220,15 @@ }, { "type": "ClassMethod", - "start": 8994, - "end": 9088, + "start": 12568, + "end": 12662, "loc": { "start": { - "line": 189, + "line": 262, "column": 4 }, "end": { - "line": 191, + "line": 264, "column": 5 } }, @@ -1236,15 +1236,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8998, - "end": 9008, + "start": 12572, + "end": 12582, "loc": { "start": { - "line": 189, + "line": 262, "column": 8 }, "end": { - "line": 189, + "line": 262, "column": 18 }, "identifierName": "dataSource" @@ -1259,15 +1259,15 @@ "params": [ { "type": "Identifier", - "start": 9009, - "end": 9014, + "start": 12583, + "end": 12588, "loc": { "start": { - "line": 189, + "line": 262, "column": 19 }, "end": { - "line": 189, + "line": 262, "column": 24 }, "identifierName": "value" @@ -1277,88 +1277,88 @@ ], "body": { "type": "BlockStatement", - "start": 9016, - "end": 9088, + "start": 12590, + "end": 12662, "loc": { "start": { - "line": 189, + "line": 262, "column": 26 }, "end": { - "line": 191, + "line": 264, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 9026, - "end": 9082, + "start": 12600, + "end": 12656, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 64 } }, "expression": { "type": "AssignmentExpression", - "start": 9026, - "end": 9081, + "start": 12600, + "end": 12655, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 63 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 9026, - "end": 9042, + "start": 12600, + "end": 12616, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 9026, - "end": 9030, + "start": 12600, + "end": 12604, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 12 } } }, "property": { "type": "Identifier", - "start": 9031, - "end": 9042, + "start": 12605, + "end": 12616, "loc": { "start": { - "line": 190, + "line": 263, "column": 13 }, "end": { - "line": 190, + "line": 263, "column": 24 }, "identifierName": "_dataSource" @@ -1369,29 +1369,29 @@ }, "right": { "type": "LogicalExpression", - "start": 9045, - "end": 9081, + "start": 12619, + "end": 12655, "loc": { "start": { - "line": 190, + "line": 263, "column": 27 }, "end": { - "line": 190, + "line": 263, "column": 63 } }, "left": { "type": "Identifier", - "start": 9045, - "end": 9050, + "start": 12619, + "end": 12624, "loc": { "start": { - "line": 190, + "line": 263, "column": 27 }, "end": { - "line": 190, + "line": 263, "column": 32 }, "identifierName": "value" @@ -1401,29 +1401,29 @@ "operator": "||", "right": { "type": "NewExpression", - "start": 9054, - "end": 9081, + "start": 12628, + "end": 12655, "loc": { "start": { - "line": 190, + "line": 263, "column": 36 }, "end": { - "line": 190, + "line": 263, "column": 63 } }, "callee": { "type": "Identifier", - "start": 9058, - "end": 9079, + "start": 12632, + "end": 12653, "loc": { "start": { - "line": 190, + "line": 263, "column": 40 }, "end": { - "line": 190, + "line": 263, "column": 61 }, "identifierName": "GLTFDefaultDataSource" @@ -1443,15 +1443,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 8736, - "end": 8989, + "start": 12310, + "end": 12563, "loc": { "start": { - "line": 182, + "line": 255, "column": 4 }, "end": { - "line": 188, + "line": 261, "column": 7 } } @@ -1461,15 +1461,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 9094, - "end": 9349, + "start": 12668, + "end": 12923, "loc": { "start": { - "line": 193, + "line": 266, "column": 4 }, "end": { - "line": 199, + "line": 272, "column": 7 } } @@ -1478,15 +1478,15 @@ }, { "type": "ClassMethod", - "start": 9354, - "end": 9411, + "start": 12928, + "end": 12985, "loc": { "start": { - "line": 200, + "line": 273, "column": 4 }, "end": { - "line": 202, + "line": 275, "column": 5 } }, @@ -1494,15 +1494,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 9358, - "end": 9368, + "start": 12932, + "end": 12942, "loc": { "start": { - "line": 200, + "line": 273, "column": 8 }, "end": { - "line": 200, + "line": 273, "column": 18 }, "identifierName": "dataSource" @@ -1517,73 +1517,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 9371, - "end": 9411, + "start": 12945, + "end": 12985, "loc": { "start": { - "line": 200, + "line": 273, "column": 21 }, "end": { - "line": 202, + "line": 275, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 9381, - "end": 9405, + "start": 12955, + "end": 12979, "loc": { "start": { - "line": 201, + "line": 274, "column": 8 }, "end": { - "line": 201, + "line": 274, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 9388, - "end": 9404, + "start": 12962, + "end": 12978, "loc": { "start": { - "line": 201, + "line": 274, "column": 15 }, "end": { - "line": 201, + "line": 274, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 9388, - "end": 9392, + "start": 12962, + "end": 12966, "loc": { "start": { - "line": 201, + "line": 274, "column": 15 }, "end": { - "line": 201, + "line": 274, "column": 19 } } }, "property": { "type": "Identifier", - "start": 9393, - "end": 9404, + "start": 12967, + "end": 12978, "loc": { "start": { - "line": 201, + "line": 274, "column": 20 }, "end": { - "line": 201, + "line": 274, "column": 31 }, "identifierName": "_dataSource" @@ -1601,15 +1601,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 9094, - "end": 9349, + "start": 12668, + "end": 12923, "loc": { "start": { - "line": 193, + "line": 266, "column": 4 }, "end": { - "line": 199, + "line": 272, "column": 7 } } @@ -1619,15 +1619,15 @@ { "type": "CommentBlock", "value": "*\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9417, - "end": 9625, + "start": 12991, + "end": 13199, "loc": { "start": { - "line": 204, + "line": 277, "column": 4 }, "end": { - "line": 210, + "line": 283, "column": 7 } } @@ -1636,15 +1636,15 @@ }, { "type": "ClassMethod", - "start": 9630, - "end": 9722, + "start": 13204, + "end": 13296, "loc": { "start": { - "line": 211, + "line": 284, "column": 4 }, "end": { - "line": 213, + "line": 286, "column": 5 } }, @@ -1652,15 +1652,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 9634, - "end": 9648, + "start": 13208, + "end": 13222, "loc": { "start": { - "line": 211, + "line": 284, "column": 8 }, "end": { - "line": 211, + "line": 284, "column": 22 }, "identifierName": "objectDefaults" @@ -1675,15 +1675,15 @@ "params": [ { "type": "Identifier", - "start": 9649, - "end": 9654, + "start": 13223, + "end": 13228, "loc": { "start": { - "line": 211, + "line": 284, "column": 23 }, "end": { - "line": 211, + "line": 284, "column": 28 }, "identifierName": "value" @@ -1693,88 +1693,88 @@ ], "body": { "type": "BlockStatement", - "start": 9656, - "end": 9722, + "start": 13230, + "end": 13296, "loc": { "start": { - "line": 211, + "line": 284, "column": 30 }, "end": { - "line": 213, + "line": 286, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 9666, - "end": 9716, + "start": 13240, + "end": 13290, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 9666, - "end": 9715, + "start": 13240, + "end": 13289, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 9666, - "end": 9686, + "start": 13240, + "end": 13260, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 9666, - "end": 9670, + "start": 13240, + "end": 13244, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 12 } } }, "property": { "type": "Identifier", - "start": 9671, - "end": 9686, + "start": 13245, + "end": 13260, "loc": { "start": { - "line": 212, + "line": 285, "column": 13 }, "end": { - "line": 212, + "line": 285, "column": 28 }, "identifierName": "_objectDefaults" @@ -1785,29 +1785,29 @@ }, "right": { "type": "LogicalExpression", - "start": 9689, - "end": 9715, + "start": 13263, + "end": 13289, "loc": { "start": { - "line": 212, + "line": 285, "column": 31 }, "end": { - "line": 212, + "line": 285, "column": 57 } }, "left": { "type": "Identifier", - "start": 9689, - "end": 9694, + "start": 13263, + "end": 13268, "loc": { "start": { - "line": 212, + "line": 285, "column": 31 }, "end": { - "line": 212, + "line": 285, "column": 36 }, "identifierName": "value" @@ -1817,15 +1817,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 9698, - "end": 9715, + "start": 13272, + "end": 13289, "loc": { "start": { - "line": 212, + "line": 285, "column": 40 }, "end": { - "line": 212, + "line": 285, "column": 57 }, "identifierName": "IFCObjectDefaults" @@ -1843,15 +1843,15 @@ { "type": "CommentBlock", "value": "*\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9417, - "end": 9625, + "start": 12991, + "end": 13199, "loc": { "start": { - "line": 204, + "line": 277, "column": 4 }, "end": { - "line": 210, + "line": 283, "column": 7 } } @@ -1861,15 +1861,15 @@ { "type": "CommentBlock", "value": "*\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9728, - "end": 9936, + "start": 13302, + "end": 13510, "loc": { "start": { - "line": 215, + "line": 288, "column": 4 }, "end": { - "line": 221, + "line": 294, "column": 7 } } @@ -1878,15 +1878,15 @@ }, { "type": "ClassMethod", - "start": 9941, - "end": 10006, + "start": 13515, + "end": 13580, "loc": { "start": { - "line": 222, + "line": 295, "column": 4 }, "end": { - "line": 224, + "line": 297, "column": 5 } }, @@ -1894,15 +1894,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 9945, - "end": 9959, + "start": 13519, + "end": 13533, "loc": { "start": { - "line": 222, + "line": 295, "column": 8 }, "end": { - "line": 222, + "line": 295, "column": 22 }, "identifierName": "objectDefaults" @@ -1917,73 +1917,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 9962, - "end": 10006, + "start": 13536, + "end": 13580, "loc": { "start": { - "line": 222, + "line": 295, "column": 25 }, "end": { - "line": 224, + "line": 297, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 9972, - "end": 10000, + "start": 13546, + "end": 13574, "loc": { "start": { - "line": 223, + "line": 296, "column": 8 }, "end": { - "line": 223, + "line": 296, "column": 36 } }, "argument": { "type": "MemberExpression", - "start": 9979, - "end": 9999, + "start": 13553, + "end": 13573, "loc": { "start": { - "line": 223, + "line": 296, "column": 15 }, "end": { - "line": 223, + "line": 296, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 9979, - "end": 9983, + "start": 13553, + "end": 13557, "loc": { "start": { - "line": 223, + "line": 296, "column": 15 }, "end": { - "line": 223, + "line": 296, "column": 19 } } }, "property": { "type": "Identifier", - "start": 9984, - "end": 9999, + "start": 13558, + "end": 13573, "loc": { "start": { - "line": 223, + "line": 296, "column": 20 }, "end": { - "line": 223, + "line": 296, "column": 35 }, "identifierName": "_objectDefaults" @@ -2001,15 +2001,15 @@ { "type": "CommentBlock", "value": "*\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9728, - "end": 9936, + "start": 13302, + "end": 13510, "loc": { "start": { - "line": 215, + "line": 288, "column": 4 }, "end": { - "line": 221, + "line": 294, "column": 7 } } @@ -2019,15 +2019,15 @@ { "type": "CommentBlock", "value": "*\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelJSON```` parameter.\n * @param {*} [params.metaModelJSON] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @param {String} [params.entityId] When supplied, causes the entire model to be loaded into a single {@link Entity} that gets this ID.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n ", - "start": 10012, - "end": 13967, + "start": 13586, + "end": 17541, "loc": { "start": { - "line": 226, + "line": 299, "column": 4 }, "end": { - "line": 255, + "line": 328, "column": 7 } } @@ -2036,15 +2036,15 @@ }, { "type": "ClassMethod", - "start": 13972, - "end": 19520, + "start": 17546, + "end": 23094, "loc": { "start": { - "line": 256, + "line": 329, "column": 4 }, "end": { - "line": 412, + "line": 485, "column": 5 } }, @@ -2052,15 +2052,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 13972, - "end": 13976, + "start": 17546, + "end": 17550, "loc": { "start": { - "line": 256, + "line": 329, "column": 4 }, "end": { - "line": 256, + "line": 329, "column": 8 }, "identifierName": "load" @@ -2076,29 +2076,29 @@ "params": [ { "type": "AssignmentPattern", - "start": 13977, - "end": 13988, + "start": 17551, + "end": 17562, "loc": { "start": { - "line": 256, + "line": 329, "column": 9 }, "end": { - "line": 256, + "line": 329, "column": 20 } }, "left": { "type": "Identifier", - "start": 13977, - "end": 13983, + "start": 17551, + "end": 17557, "loc": { "start": { - "line": 256, + "line": 329, "column": 9 }, "end": { - "line": 256, + "line": 329, "column": 15 }, "identifierName": "params" @@ -2107,15 +2107,15 @@ }, "right": { "type": "ObjectExpression", - "start": 13986, - "end": 13988, + "start": 17560, + "end": 17562, "loc": { "start": { - "line": 256, + "line": 329, "column": 18 }, "end": { - "line": 256, + "line": 329, "column": 20 } }, @@ -2125,72 +2125,72 @@ ], "body": { "type": "BlockStatement", - "start": 13990, - "end": 19520, + "start": 17564, + "end": 23094, "loc": { "start": { - "line": 256, + "line": 329, "column": 22 }, "end": { - "line": 412, + "line": 485, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 14001, - "end": 14222, + "start": 17575, + "end": 17796, "loc": { "start": { - "line": 258, + "line": 331, "column": 8 }, "end": { - "line": 261, + "line": 334, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 14005, - "end": 14057, + "start": 17579, + "end": 17631, "loc": { "start": { - "line": 258, + "line": 331, "column": 12 }, "end": { - "line": 258, + "line": 331, "column": 64 } }, "left": { "type": "MemberExpression", - "start": 14005, - "end": 14014, + "start": 17579, + "end": 17588, "loc": { "start": { - "line": 258, + "line": 331, "column": 12 }, "end": { - "line": 258, + "line": 331, "column": 21 } }, "object": { "type": "Identifier", - "start": 14005, - "end": 14011, + "start": 17579, + "end": 17585, "loc": { "start": { - "line": 258, + "line": 331, "column": 12 }, "end": { - "line": 258, + "line": 331, "column": 18 }, "identifierName": "params" @@ -2199,15 +2199,15 @@ }, "property": { "type": "Identifier", - "start": 14012, - "end": 14014, + "start": 17586, + "end": 17588, "loc": { "start": { - "line": 258, + "line": 331, "column": 19 }, "end": { - "line": 258, + "line": 331, "column": 21 }, "identifierName": "id" @@ -2219,86 +2219,86 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 14018, - "end": 14057, + "start": 17592, + "end": 17631, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 14018, - "end": 14046, + "start": 17592, + "end": 17620, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 14018, - "end": 14035, + "start": 17592, + "end": 17609, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 14018, - "end": 14029, + "start": 17592, + "end": 17603, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 14018, - "end": 14022, + "start": 17592, + "end": 17596, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 29 } } }, "property": { "type": "Identifier", - "start": 14023, - "end": 14029, + "start": 17597, + "end": 17603, "loc": { "start": { - "line": 258, + "line": 331, "column": 30 }, "end": { - "line": 258, + "line": 331, "column": 36 }, "identifierName": "viewer" @@ -2309,15 +2309,15 @@ }, "property": { "type": "Identifier", - "start": 14030, - "end": 14035, + "start": 17604, + "end": 17609, "loc": { "start": { - "line": 258, + "line": 331, "column": 37 }, "end": { - "line": 258, + "line": 331, "column": 42 }, "identifierName": "scene" @@ -2328,15 +2328,15 @@ }, "property": { "type": "Identifier", - "start": 14036, - "end": 14046, + "start": 17610, + "end": 17620, "loc": { "start": { - "line": 258, + "line": 331, "column": 43 }, "end": { - "line": 258, + "line": 331, "column": 53 }, "identifierName": "components" @@ -2347,29 +2347,29 @@ }, "property": { "type": "MemberExpression", - "start": 14047, - "end": 14056, + "start": 17621, + "end": 17630, "loc": { "start": { - "line": 258, + "line": 331, "column": 54 }, "end": { - "line": 258, + "line": 331, "column": 63 } }, "object": { "type": "Identifier", - "start": 14047, - "end": 14053, + "start": 17621, + "end": 17627, "loc": { "start": { - "line": 258, + "line": 331, "column": 54 }, "end": { - "line": 258, + "line": 331, "column": 60 }, "identifierName": "params" @@ -2378,15 +2378,15 @@ }, "property": { "type": "Identifier", - "start": 14054, - "end": 14056, + "start": 17628, + "end": 17630, "loc": { "start": { - "line": 258, + "line": 331, "column": 61 }, "end": { - "line": 258, + "line": 331, "column": 63 }, "identifierName": "id" @@ -2400,87 +2400,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 14059, - "end": 14222, + "start": 17633, + "end": 17796, "loc": { "start": { - "line": 258, + "line": 331, "column": 66 }, "end": { - "line": 261, + "line": 334, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 14073, - "end": 14182, + "start": 17647, + "end": 17756, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 121 } }, "expression": { "type": "CallExpression", - "start": 14073, - "end": 14181, + "start": 17647, + "end": 17755, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 14073, - "end": 14083, + "start": 17647, + "end": 17657, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 14073, - "end": 14077, + "start": 17647, + "end": 17651, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 16 } } }, "property": { "type": "Identifier", - "start": 14078, - "end": 14083, + "start": 17652, + "end": 17657, "loc": { "start": { - "line": 259, + "line": 332, "column": 17 }, "end": { - "line": 259, + "line": 332, "column": 22 }, "identifierName": "error" @@ -2492,43 +2492,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 14084, - "end": 14180, + "start": 17658, + "end": 17754, "loc": { "start": { - "line": 259, + "line": 332, "column": 23 }, "end": { - "line": 259, + "line": 332, "column": 119 } }, "left": { "type": "BinaryExpression", - "start": 14084, - "end": 14147, + "start": 17658, + "end": 17721, "loc": { "start": { - "line": 259, + "line": 332, "column": 23 }, "end": { - "line": 259, + "line": 332, "column": 86 } }, "left": { "type": "StringLiteral", - "start": 14084, - "end": 14135, + "start": 17658, + "end": 17709, "loc": { "start": { - "line": 259, + "line": 332, "column": 23 }, "end": { - "line": 259, + "line": 332, "column": 74 } }, @@ -2541,29 +2541,29 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 14138, - "end": 14147, + "start": 17712, + "end": 17721, "loc": { "start": { - "line": 259, + "line": 332, "column": 77 }, "end": { - "line": 259, + "line": 332, "column": 86 } }, "object": { "type": "Identifier", - "start": 14138, - "end": 14144, + "start": 17712, + "end": 17718, "loc": { "start": { - "line": 259, + "line": 332, "column": 77 }, "end": { - "line": 259, + "line": 332, "column": 83 }, "identifierName": "params" @@ -2572,15 +2572,15 @@ }, "property": { "type": "Identifier", - "start": 14145, - "end": 14147, + "start": 17719, + "end": 17721, "loc": { "start": { - "line": 259, + "line": 332, "column": 84 }, "end": { - "line": 259, + "line": 332, "column": 86 }, "identifierName": "id" @@ -2593,15 +2593,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 14150, - "end": 14180, + "start": 17724, + "end": 17754, "loc": { "start": { - "line": 259, + "line": 332, "column": 89 }, "end": { - "line": 259, + "line": 332, "column": 119 } }, @@ -2617,29 +2617,29 @@ }, { "type": "ExpressionStatement", - "start": 14195, - "end": 14212, + "start": 17769, + "end": 17786, "loc": { "start": { - "line": 260, + "line": 333, "column": 12 }, "end": { - "line": 260, + "line": 333, "column": 29 } }, "expression": { "type": "UnaryExpression", - "start": 14195, - "end": 14211, + "start": 17769, + "end": 17785, "loc": { "start": { - "line": 260, + "line": 333, "column": 12 }, "end": { - "line": 260, + "line": 333, "column": 28 } }, @@ -2647,29 +2647,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 14202, - "end": 14211, + "start": 17776, + "end": 17785, "loc": { "start": { - "line": 260, + "line": 333, "column": 19 }, "end": { - "line": 260, + "line": 333, "column": 28 } }, "object": { "type": "Identifier", - "start": 14202, - "end": 14208, + "start": 17776, + "end": 17782, "loc": { "start": { - "line": 260, + "line": 333, "column": 19 }, "end": { - "line": 260, + "line": 333, "column": 25 }, "identifierName": "params" @@ -2678,15 +2678,15 @@ }, "property": { "type": "Identifier", - "start": 14209, - "end": 14211, + "start": 17783, + "end": 17785, "loc": { "start": { - "line": 260, + "line": 333, "column": 26 }, "end": { - "line": 260, + "line": 333, "column": 28 }, "identifierName": "id" @@ -2707,44 +2707,44 @@ }, { "type": "VariableDeclaration", - "start": 14232, - "end": 14388, + "start": 17806, + "end": 17962, "loc": { "start": { - "line": 263, + "line": 336, "column": 8 }, "end": { - "line": 266, + "line": 339, "column": 12 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14238, - "end": 14387, + "start": 17812, + "end": 17961, "loc": { "start": { - "line": 263, + "line": 336, "column": 14 }, "end": { - "line": 266, + "line": 339, "column": 11 } }, "id": { "type": "Identifier", - "start": 14238, - "end": 14248, + "start": 17812, + "end": 17822, "loc": { "start": { - "line": 263, + "line": 336, "column": 14 }, "end": { - "line": 263, + "line": 336, "column": 24 }, "identifierName": "sceneModel" @@ -2753,29 +2753,29 @@ }, "init": { "type": "NewExpression", - "start": 14251, - "end": 14387, + "start": 17825, + "end": 17961, "loc": { "start": { - "line": 263, + "line": 336, "column": 27 }, "end": { - "line": 266, + "line": 339, "column": 11 } }, "callee": { "type": "Identifier", - "start": 14255, - "end": 14265, + "start": 17829, + "end": 17839, "loc": { "start": { - "line": 263, + "line": 336, "column": 31 }, "end": { - "line": 263, + "line": 336, "column": 41 }, "identifierName": "SceneModel" @@ -2785,58 +2785,58 @@ "arguments": [ { "type": "MemberExpression", - "start": 14266, - "end": 14283, + "start": 17840, + "end": 17857, "loc": { "start": { - "line": 263, + "line": 336, "column": 42 }, "end": { - "line": 263, + "line": 336, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 14266, - "end": 14277, + "start": 17840, + "end": 17851, "loc": { "start": { - "line": 263, + "line": 336, "column": 42 }, "end": { - "line": 263, + "line": 336, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 14266, - "end": 14270, + "start": 17840, + "end": 17844, "loc": { "start": { - "line": 263, + "line": 336, "column": 42 }, "end": { - "line": 263, + "line": 336, "column": 46 } } }, "property": { "type": "Identifier", - "start": 14271, - "end": 14277, + "start": 17845, + "end": 17851, "loc": { "start": { - "line": 263, + "line": 336, "column": 47 }, "end": { - "line": 263, + "line": 336, "column": 53 }, "identifierName": "viewer" @@ -2847,15 +2847,15 @@ }, "property": { "type": "Identifier", - "start": 14278, - "end": 14283, + "start": 17852, + "end": 17857, "loc": { "start": { - "line": 263, + "line": 336, "column": 54 }, "end": { - "line": 263, + "line": 336, "column": 59 }, "identifierName": "scene" @@ -2866,43 +2866,43 @@ }, { "type": "CallExpression", - "start": 14285, - "end": 14386, + "start": 17859, + "end": 17960, "loc": { "start": { - "line": 263, + "line": 336, "column": 61 }, "end": { - "line": 266, + "line": 339, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 14285, - "end": 14296, + "start": 17859, + "end": 17870, "loc": { "start": { - "line": 263, + "line": 336, "column": 61 }, "end": { - "line": 263, + "line": 336, "column": 72 } }, "object": { "type": "Identifier", - "start": 14285, - "end": 14290, + "start": 17859, + "end": 17864, "loc": { "start": { - "line": 263, + "line": 336, "column": 61 }, "end": { - "line": 263, + "line": 336, "column": 66 }, "identifierName": "utils" @@ -2911,15 +2911,15 @@ }, "property": { "type": "Identifier", - "start": 14291, - "end": 14296, + "start": 17865, + "end": 17870, "loc": { "start": { - "line": 263, + "line": 336, "column": 67 }, "end": { - "line": 263, + "line": 336, "column": 72 }, "identifierName": "apply" @@ -2931,15 +2931,15 @@ "arguments": [ { "type": "Identifier", - "start": 14297, - "end": 14303, + "start": 17871, + "end": 17877, "loc": { "start": { - "line": 263, + "line": 336, "column": 73 }, "end": { - "line": 263, + "line": 336, "column": 79 }, "identifierName": "params" @@ -2948,30 +2948,30 @@ }, { "type": "ObjectExpression", - "start": 14305, - "end": 14385, + "start": 17879, + "end": 17959, "loc": { "start": { - "line": 263, + "line": 336, "column": 81 }, "end": { - "line": 266, + "line": 339, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 14319, - "end": 14332, + "start": 17893, + "end": 17906, "loc": { "start": { - "line": 264, + "line": 337, "column": 12 }, "end": { - "line": 264, + "line": 337, "column": 25 } }, @@ -2980,15 +2980,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 14319, - "end": 14326, + "start": 17893, + "end": 17900, "loc": { "start": { - "line": 264, + "line": 337, "column": 12 }, "end": { - "line": 264, + "line": 337, "column": 19 }, "identifierName": "isModel" @@ -2997,15 +2997,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 14328, - "end": 14332, + "start": 17902, + "end": 17906, "loc": { "start": { - "line": 264, + "line": 337, "column": 21 }, "end": { - "line": 264, + "line": 337, "column": 25 } }, @@ -3014,15 +3014,15 @@ }, { "type": "ObjectProperty", - "start": 14346, - "end": 14375, + "start": 17920, + "end": 17949, "loc": { "start": { - "line": 265, + "line": 338, "column": 12 }, "end": { - "line": 265, + "line": 338, "column": 41 } }, @@ -3031,15 +3031,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 14346, - "end": 14356, + "start": 17920, + "end": 17930, "loc": { "start": { - "line": 265, + "line": 338, "column": 12 }, "end": { - "line": 265, + "line": 338, "column": 22 }, "identifierName": "dtxEnabled" @@ -3048,29 +3048,29 @@ }, "value": { "type": "MemberExpression", - "start": 14358, - "end": 14375, + "start": 17932, + "end": 17949, "loc": { "start": { - "line": 265, + "line": 338, "column": 24 }, "end": { - "line": 265, + "line": 338, "column": 41 } }, "object": { "type": "Identifier", - "start": 14358, - "end": 14364, + "start": 17932, + "end": 17938, "loc": { "start": { - "line": 265, + "line": 338, "column": 24 }, "end": { - "line": 265, + "line": 338, "column": 30 }, "identifierName": "params" @@ -3079,15 +3079,15 @@ }, "property": { "type": "Identifier", - "start": 14365, - "end": 14375, + "start": 17939, + "end": 17949, "loc": { "start": { - "line": 265, + "line": 338, "column": 31 }, "end": { - "line": 265, + "line": 338, "column": 41 }, "identifierName": "dtxEnabled" @@ -3109,44 +3109,44 @@ }, { "type": "VariableDeclaration", - "start": 14398, - "end": 14428, + "start": 17972, + "end": 18002, "loc": { "start": { - "line": 268, + "line": 341, "column": 8 }, "end": { - "line": 268, + "line": 341, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14404, - "end": 14427, + "start": 17978, + "end": 18001, "loc": { "start": { - "line": 268, + "line": 341, "column": 14 }, "end": { - "line": 268, + "line": 341, "column": 37 } }, "id": { "type": "Identifier", - "start": 14404, - "end": 14411, + "start": 17978, + "end": 17985, "loc": { "start": { - "line": 268, + "line": 341, "column": 14 }, "end": { - "line": 268, + "line": 341, "column": 21 }, "identifierName": "modelId" @@ -3155,29 +3155,29 @@ }, "init": { "type": "MemberExpression", - "start": 14414, - "end": 14427, + "start": 17988, + "end": 18001, "loc": { "start": { - "line": 268, + "line": 341, "column": 24 }, "end": { - "line": 268, + "line": 341, "column": 37 } }, "object": { "type": "Identifier", - "start": 14414, - "end": 14424, + "start": 17988, + "end": 17998, "loc": { "start": { - "line": 268, + "line": 341, "column": 24 }, "end": { - "line": 268, + "line": 341, "column": 34 }, "identifierName": "sceneModel" @@ -3186,15 +3186,15 @@ }, "property": { "type": "Identifier", - "start": 14425, - "end": 14427, + "start": 17999, + "end": 18001, "loc": { "start": { - "line": 268, + "line": 341, "column": 35 }, "end": { - "line": 268, + "line": 341, "column": 37 }, "identifierName": "id" @@ -3210,15 +3210,15 @@ { "type": "CommentLine", "value": " In case ID was auto-generated", - "start": 14430, - "end": 14462, + "start": 18004, + "end": 18036, "loc": { "start": { - "line": 268, + "line": 341, "column": 40 }, "end": { - "line": 268, + "line": 341, "column": 72 } } @@ -3227,43 +3227,43 @@ }, { "type": "IfStatement", - "start": 14472, - "end": 14635, + "start": 18046, + "end": 18209, "loc": { "start": { - "line": 270, + "line": 343, "column": 8 }, "end": { - "line": 273, + "line": 346, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 14476, - "end": 14503, + "start": 18050, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 12 }, "end": { - "line": 270, + "line": 343, "column": 39 } }, "left": { "type": "UnaryExpression", - "start": 14476, - "end": 14487, + "start": 18050, + "end": 18061, "loc": { "start": { - "line": 270, + "line": 343, "column": 12 }, "end": { - "line": 270, + "line": 343, "column": 23 } }, @@ -3271,29 +3271,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 14477, - "end": 14487, + "start": 18051, + "end": 18061, "loc": { "start": { - "line": 270, + "line": 343, "column": 13 }, "end": { - "line": 270, + "line": 343, "column": 23 } }, "object": { "type": "Identifier", - "start": 14477, - "end": 14483, + "start": 18051, + "end": 18057, "loc": { "start": { - "line": 270, + "line": 343, "column": 13 }, "end": { - "line": 270, + "line": 343, "column": 19 }, "identifierName": "params" @@ -3303,15 +3303,15 @@ }, "property": { "type": "Identifier", - "start": 14484, - "end": 14487, + "start": 18058, + "end": 18061, "loc": { "start": { - "line": 270, + "line": 343, "column": 20 }, "end": { - "line": 270, + "line": 343, "column": 23 }, "identifierName": "src" @@ -3329,15 +3329,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 14491, - "end": 14503, + "start": 18065, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 27 }, "end": { - "line": 270, + "line": 343, "column": 39 } }, @@ -3345,29 +3345,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 14492, - "end": 14503, + "start": 18066, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 28 }, "end": { - "line": 270, + "line": 343, "column": 39 } }, "object": { "type": "Identifier", - "start": 14492, - "end": 14498, + "start": 18066, + "end": 18072, "loc": { "start": { - "line": 270, + "line": 343, "column": 28 }, "end": { - "line": 270, + "line": 343, "column": 34 }, "identifierName": "params" @@ -3376,15 +3376,15 @@ }, "property": { "type": "Identifier", - "start": 14499, - "end": 14503, + "start": 18073, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 35 }, "end": { - "line": 270, + "line": 343, "column": 39 }, "identifierName": "gltf" @@ -3401,87 +3401,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 14505, - "end": 14635, + "start": 18079, + "end": 18209, "loc": { "start": { - "line": 270, + "line": 343, "column": 41 }, "end": { - "line": 273, + "line": 346, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 14519, - "end": 14568, + "start": 18093, + "end": 18142, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 14519, - "end": 14567, + "start": 18093, + "end": 18141, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 14519, - "end": 14529, + "start": 18093, + "end": 18103, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 14519, - "end": 14523, + "start": 18093, + "end": 18097, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 16 } } }, "property": { "type": "Identifier", - "start": 14524, - "end": 14529, + "start": 18098, + "end": 18103, "loc": { "start": { - "line": 271, + "line": 344, "column": 17 }, "end": { - "line": 271, + "line": 344, "column": 22 }, "identifierName": "error" @@ -3493,15 +3493,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 14530, - "end": 14566, + "start": 18104, + "end": 18140, "loc": { "start": { - "line": 271, + "line": 344, "column": 23 }, "end": { - "line": 271, + "line": 344, "column": 59 } }, @@ -3516,29 +3516,29 @@ }, { "type": "ReturnStatement", - "start": 14581, - "end": 14599, + "start": 18155, + "end": 18173, "loc": { "start": { - "line": 272, + "line": 345, "column": 12 }, "end": { - "line": 272, + "line": 345, "column": 30 } }, "argument": { "type": "Identifier", - "start": 14588, - "end": 14598, + "start": 18162, + "end": 18172, "loc": { "start": { - "line": 272, + "line": 345, "column": 19 }, "end": { - "line": 272, + "line": 345, "column": 29 }, "identifierName": "sceneModel" @@ -3549,15 +3549,15 @@ { "type": "CommentLine", "value": " Return new empty model", - "start": 14600, - "end": 14625, + "start": 18174, + "end": 18199, "loc": { "start": { - "line": 272, + "line": 345, "column": 31 }, "end": { - "line": 272, + "line": 345, "column": 56 } } @@ -3572,15 +3572,15 @@ { "type": "CommentLine", "value": " In case ID was auto-generated", - "start": 14430, - "end": 14462, + "start": 18004, + "end": 18036, "loc": { "start": { - "line": 268, + "line": 341, "column": 40 }, "end": { - "line": 268, + "line": 341, "column": 72 } } @@ -3589,57 +3589,57 @@ }, { "type": "IfStatement", - "start": 14645, - "end": 19367, + "start": 18219, + "end": 22941, "loc": { "start": { - "line": 275, + "line": 348, "column": 8 }, "end": { - "line": 405, + "line": 478, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 14649, - "end": 14692, + "start": 18223, + "end": 18266, "loc": { "start": { - "line": 275, + "line": 348, "column": 12 }, "end": { - "line": 275, + "line": 348, "column": 55 } }, "left": { "type": "MemberExpression", - "start": 14649, - "end": 14668, + "start": 18223, + "end": 18242, "loc": { "start": { - "line": 275, + "line": 348, "column": 12 }, "end": { - "line": 275, + "line": 348, "column": 31 } }, "object": { "type": "Identifier", - "start": 14649, - "end": 14655, + "start": 18223, + "end": 18229, "loc": { "start": { - "line": 275, + "line": 348, "column": 12 }, "end": { - "line": 275, + "line": 348, "column": 18 }, "identifierName": "params" @@ -3648,15 +3648,15 @@ }, "property": { "type": "Identifier", - "start": 14656, - "end": 14668, + "start": 18230, + "end": 18242, "loc": { "start": { - "line": 275, + "line": 348, "column": 19 }, "end": { - "line": 275, + "line": 348, "column": 31 }, "identifierName": "metaModelSrc" @@ -3668,29 +3668,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 14672, - "end": 14692, + "start": 18246, + "end": 18266, "loc": { "start": { - "line": 275, + "line": 348, "column": 35 }, "end": { - "line": 275, + "line": 348, "column": 55 } }, "object": { "type": "Identifier", - "start": 14672, - "end": 14678, + "start": 18246, + "end": 18252, "loc": { "start": { - "line": 275, + "line": 348, "column": 35 }, "end": { - "line": 275, + "line": 348, "column": 41 }, "identifierName": "params" @@ -3699,15 +3699,15 @@ }, "property": { "type": "Identifier", - "start": 14679, - "end": 14692, + "start": 18253, + "end": 18266, "loc": { "start": { - "line": 275, + "line": 348, "column": 42 }, "end": { - "line": 275, + "line": 348, "column": 55 }, "identifierName": "metaModelJSON" @@ -3719,59 +3719,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 14694, - "end": 18530, + "start": 18268, + "end": 22104, "loc": { "start": { - "line": 275, + "line": 348, "column": 57 }, "end": { - "line": 379, + "line": 452, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 14709, - "end": 14799, + "start": 18283, + "end": 18373, "loc": { "start": { - "line": 277, + "line": 350, "column": 12 }, "end": { - "line": 277, + "line": 350, "column": 102 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14715, - "end": 14798, + "start": 18289, + "end": 18372, "loc": { "start": { - "line": 277, + "line": 350, "column": 18 }, "end": { - "line": 277, + "line": 350, "column": 101 } }, "id": { "type": "Identifier", - "start": 14715, - "end": 14729, + "start": 18289, + "end": 18303, "loc": { "start": { - "line": 277, + "line": 350, "column": 18 }, "end": { - "line": 277, + "line": 350, "column": 32 }, "identifierName": "objectDefaults" @@ -3780,57 +3780,57 @@ }, "init": { "type": "LogicalExpression", - "start": 14732, - "end": 14798, + "start": 18306, + "end": 18372, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 101 } }, "left": { "type": "LogicalExpression", - "start": 14732, - "end": 14777, + "start": 18306, + "end": 18351, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 80 } }, "left": { "type": "MemberExpression", - "start": 14732, - "end": 14753, + "start": 18306, + "end": 18327, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 56 } }, "object": { "type": "Identifier", - "start": 14732, - "end": 14738, + "start": 18306, + "end": 18312, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 41 }, "identifierName": "params" @@ -3839,15 +3839,15 @@ }, "property": { "type": "Identifier", - "start": 14739, - "end": 14753, + "start": 18313, + "end": 18327, "loc": { "start": { - "line": 277, + "line": 350, "column": 42 }, "end": { - "line": 277, + "line": 350, "column": 56 }, "identifierName": "objectDefaults" @@ -3859,44 +3859,44 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 14757, - "end": 14777, + "start": 18331, + "end": 18351, "loc": { "start": { - "line": 277, + "line": 350, "column": 60 }, "end": { - "line": 277, + "line": 350, "column": 80 } }, "object": { "type": "ThisExpression", - "start": 14757, - "end": 14761, + "start": 18331, + "end": 18335, "loc": { "start": { - "line": 277, + "line": 350, "column": 60 }, "end": { - "line": 277, + "line": 350, "column": 64 } } }, "property": { "type": "Identifier", - "start": 14762, - "end": 14777, + "start": 18336, + "end": 18351, "loc": { "start": { - "line": 277, + "line": 350, "column": 65 }, "end": { - "line": 277, + "line": 350, "column": 80 }, "identifierName": "_objectDefaults" @@ -3909,15 +3909,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 14781, - "end": 14798, + "start": 18355, + "end": 18372, "loc": { "start": { - "line": 277, + "line": 350, "column": 84 }, "end": { - "line": 277, + "line": 350, "column": 101 }, "identifierName": "IFCObjectDefaults" @@ -3931,44 +3931,44 @@ }, { "type": "VariableDeclaration", - "start": 14813, - "end": 17776, + "start": 18387, + "end": 21350, "loc": { "start": { - "line": 279, + "line": 352, "column": 12 }, "end": { - "line": 355, + "line": 428, "column": 14 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14819, - "end": 17775, + "start": 18393, + "end": 21349, "loc": { "start": { - "line": 279, + "line": 352, "column": 18 }, "end": { - "line": 355, + "line": 428, "column": 13 } }, "id": { "type": "Identifier", - "start": 14819, - "end": 14839, + "start": 18393, + "end": 18413, "loc": { "start": { - "line": 279, + "line": 352, "column": 18 }, "end": { - "line": 279, + "line": 352, "column": 38 }, "identifierName": "processMetaModelJSON" @@ -3977,15 +3977,15 @@ }, "init": { "type": "ArrowFunctionExpression", - "start": 14842, - "end": 17775, + "start": 18416, + "end": 21349, "loc": { "start": { - "line": 279, + "line": 352, "column": 41 }, "end": { - "line": 355, + "line": 428, "column": 13 } }, @@ -3996,15 +3996,15 @@ "params": [ { "type": "Identifier", - "start": 14843, - "end": 14856, + "start": 18417, + "end": 18430, "loc": { "start": { - "line": 279, + "line": 352, "column": 42 }, "end": { - "line": 279, + "line": 352, "column": 55 }, "identifierName": "metaModelJSON" @@ -4014,115 +4014,115 @@ ], "body": { "type": "BlockStatement", - "start": 14861, - "end": 17775, + "start": 18435, + "end": 21349, "loc": { "start": { - "line": 279, + "line": 352, "column": 60 }, "end": { - "line": 355, + "line": 428, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 14880, - "end": 15072, + "start": 18454, + "end": 18646, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 284, + "line": 357, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 14880, - "end": 15071, + "start": 18454, + "end": 18645, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 284, + "line": 357, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 14880, - "end": 14917, + "start": 18454, + "end": 18491, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 14880, - "end": 14901, + "start": 18454, + "end": 18475, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 14880, - "end": 14891, + "start": 18454, + "end": 18465, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 14880, - "end": 14884, + "start": 18454, + "end": 18458, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 20 } } }, "property": { "type": "Identifier", - "start": 14885, - "end": 14891, + "start": 18459, + "end": 18465, "loc": { "start": { - "line": 281, + "line": 354, "column": 21 }, "end": { - "line": 281, + "line": 354, "column": 27 }, "identifierName": "viewer" @@ -4133,15 +4133,15 @@ }, "property": { "type": "Identifier", - "start": 14892, - "end": 14901, + "start": 18466, + "end": 18475, "loc": { "start": { - "line": 281, + "line": 354, "column": 28 }, "end": { - "line": 281, + "line": 354, "column": 37 }, "identifierName": "metaScene" @@ -4152,15 +4152,15 @@ }, "property": { "type": "Identifier", - "start": 14902, - "end": 14917, + "start": 18476, + "end": 18491, "loc": { "start": { - "line": 281, + "line": 354, "column": 38 }, "end": { - "line": 281, + "line": 354, "column": 53 }, "identifierName": "createMetaModel" @@ -4172,15 +4172,15 @@ "arguments": [ { "type": "Identifier", - "start": 14918, - "end": 14925, + "start": 18492, + "end": 18499, "loc": { "start": { - "line": 281, + "line": 354, "column": 54 }, "end": { - "line": 281, + "line": 354, "column": 61 }, "identifierName": "modelId" @@ -4189,15 +4189,15 @@ }, { "type": "Identifier", - "start": 14927, - "end": 14940, + "start": 18501, + "end": 18514, "loc": { "start": { - "line": 281, + "line": 354, "column": 63 }, "end": { - "line": 281, + "line": 354, "column": 76 }, "identifierName": "metaModelJSON" @@ -4206,30 +4206,30 @@ }, { "type": "ObjectExpression", - "start": 14942, - "end": 15070, + "start": 18516, + "end": 18644, "loc": { "start": { - "line": 281, + "line": 354, "column": 78 }, "end": { - "line": 284, + "line": 357, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 14964, - "end": 14997, + "start": 18538, + "end": 18571, "loc": { "start": { - "line": 282, + "line": 355, "column": 20 }, "end": { - "line": 282, + "line": 355, "column": 53 } }, @@ -4238,15 +4238,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 14964, - "end": 14976, + "start": 18538, + "end": 18550, "loc": { "start": { - "line": 282, + "line": 355, "column": 20 }, "end": { - "line": 282, + "line": 355, "column": 32 }, "identifierName": "includeTypes" @@ -4255,29 +4255,29 @@ }, "value": { "type": "MemberExpression", - "start": 14978, - "end": 14997, + "start": 18552, + "end": 18571, "loc": { "start": { - "line": 282, + "line": 355, "column": 34 }, "end": { - "line": 282, + "line": 355, "column": 53 } }, "object": { "type": "Identifier", - "start": 14978, - "end": 14984, + "start": 18552, + "end": 18558, "loc": { "start": { - "line": 282, + "line": 355, "column": 34 }, "end": { - "line": 282, + "line": 355, "column": 40 }, "identifierName": "params" @@ -4286,15 +4286,15 @@ }, "property": { "type": "Identifier", - "start": 14985, - "end": 14997, + "start": 18559, + "end": 18571, "loc": { "start": { - "line": 282, + "line": 355, "column": 41 }, "end": { - "line": 282, + "line": 355, "column": 53 }, "identifierName": "includeTypes" @@ -4306,15 +4306,15 @@ }, { "type": "ObjectProperty", - "start": 15019, - "end": 15052, + "start": 18593, + "end": 18626, "loc": { "start": { - "line": 283, + "line": 356, "column": 20 }, "end": { - "line": 283, + "line": 356, "column": 53 } }, @@ -4323,15 +4323,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 15019, - "end": 15031, + "start": 18593, + "end": 18605, "loc": { "start": { - "line": 283, + "line": 356, "column": 20 }, "end": { - "line": 283, + "line": 356, "column": 32 }, "identifierName": "excludeTypes" @@ -4340,29 +4340,29 @@ }, "value": { "type": "MemberExpression", - "start": 15033, - "end": 15052, + "start": 18607, + "end": 18626, "loc": { "start": { - "line": 283, + "line": 356, "column": 34 }, "end": { - "line": 283, + "line": 356, "column": 53 } }, "object": { "type": "Identifier", - "start": 15033, - "end": 15039, + "start": 18607, + "end": 18613, "loc": { "start": { - "line": 283, + "line": 356, "column": 34 }, "end": { - "line": 283, + "line": 356, "column": 40 }, "identifierName": "params" @@ -4371,15 +4371,15 @@ }, "property": { "type": "Identifier", - "start": 15040, - "end": 15052, + "start": 18614, + "end": 18626, "loc": { "start": { - "line": 283, + "line": 356, "column": 41 }, "end": { - "line": 283, + "line": 356, "column": 53 }, "identifierName": "excludeTypes" @@ -4396,29 +4396,29 @@ }, { "type": "ExpressionStatement", - "start": 15090, - "end": 15135, + "start": 18664, + "end": 18709, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 61 } }, "expression": { "type": "UpdateExpression", - "start": 15090, - "end": 15134, + "start": 18664, + "end": 18708, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 60 } }, @@ -4426,100 +4426,100 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 15090, - "end": 15132, + "start": 18664, + "end": 18706, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 15090, - "end": 15122, + "start": 18664, + "end": 18696, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 15090, - "end": 15114, + "start": 18664, + "end": 18688, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 15090, - "end": 15107, + "start": 18664, + "end": 18681, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 15090, - "end": 15101, + "start": 18664, + "end": 18675, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 15090, - "end": 15094, + "start": 18664, + "end": 18668, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 20 } } }, "property": { "type": "Identifier", - "start": 15095, - "end": 15101, + "start": 18669, + "end": 18675, "loc": { "start": { - "line": 286, + "line": 359, "column": 21 }, "end": { - "line": 286, + "line": 359, "column": 27 }, "identifierName": "viewer" @@ -4530,15 +4530,15 @@ }, "property": { "type": "Identifier", - "start": 15102, - "end": 15107, + "start": 18676, + "end": 18681, "loc": { "start": { - "line": 286, + "line": 359, "column": 28 }, "end": { - "line": 286, + "line": 359, "column": 33 }, "identifierName": "scene" @@ -4549,15 +4549,15 @@ }, "property": { "type": "Identifier", - "start": 15108, - "end": 15114, + "start": 18682, + "end": 18688, "loc": { "start": { - "line": 286, + "line": 359, "column": 34 }, "end": { - "line": 286, + "line": 359, "column": 40 }, "identifierName": "canvas" @@ -4568,15 +4568,15 @@ }, "property": { "type": "Identifier", - "start": 15115, - "end": 15122, + "start": 18689, + "end": 18696, "loc": { "start": { - "line": 286, + "line": 359, "column": 41 }, "end": { - "line": 286, + "line": 359, "column": 48 }, "identifierName": "spinner" @@ -4587,15 +4587,15 @@ }, "property": { "type": "Identifier", - "start": 15123, - "end": 15132, + "start": 18697, + "end": 18706, "loc": { "start": { - "line": 286, + "line": 359, "column": 49 }, "end": { - "line": 286, + "line": 359, "column": 58 }, "identifierName": "processes" @@ -4608,44 +4608,44 @@ }, { "type": "VariableDeclaration", - "start": 15153, - "end": 15170, + "start": 18727, + "end": 18744, "loc": { "start": { - "line": 288, + "line": 361, "column": 16 }, "end": { - "line": 288, + "line": 361, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15157, - "end": 15169, + "start": 18731, + "end": 18743, "loc": { "start": { - "line": 288, + "line": 361, "column": 20 }, "end": { - "line": 288, + "line": 361, "column": 32 } }, "id": { "type": "Identifier", - "start": 15157, - "end": 15169, + "start": 18731, + "end": 18743, "loc": { "start": { - "line": 288, + "line": 361, "column": 20 }, "end": { - "line": 288, + "line": 361, "column": 32 }, "identifierName": "includeTypes" @@ -4659,43 +4659,43 @@ }, { "type": "IfStatement", - "start": 15187, - "end": 15447, + "start": 18761, + "end": 19021, "loc": { "start": { - "line": 289, + "line": 362, "column": 16 }, "end": { - "line": 294, + "line": 367, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 15191, - "end": 15210, + "start": 18765, + "end": 18784, "loc": { "start": { - "line": 289, + "line": 362, "column": 20 }, "end": { - "line": 289, + "line": 362, "column": 39 } }, "object": { "type": "Identifier", - "start": 15191, - "end": 15197, + "start": 18765, + "end": 18771, "loc": { "start": { - "line": 289, + "line": 362, "column": 20 }, "end": { - "line": 289, + "line": 362, "column": 26 }, "identifierName": "params" @@ -4704,15 +4704,15 @@ }, "property": { "type": "Identifier", - "start": 15198, - "end": 15210, + "start": 18772, + "end": 18784, "loc": { "start": { - "line": 289, + "line": 362, "column": 27 }, "end": { - "line": 289, + "line": 362, "column": 39 }, "identifierName": "includeTypes" @@ -4723,59 +4723,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 15212, - "end": 15447, + "start": 18786, + "end": 19021, "loc": { "start": { - "line": 289, + "line": 362, "column": 41 }, "end": { - "line": 294, + "line": 367, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 15234, - "end": 15252, + "start": 18808, + "end": 18826, "loc": { "start": { - "line": 290, + "line": 363, "column": 20 }, "end": { - "line": 290, + "line": 363, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 15234, - "end": 15251, + "start": 18808, + "end": 18825, "loc": { "start": { - "line": 290, + "line": 363, "column": 20 }, "end": { - "line": 290, + "line": 363, "column": 37 } }, "operator": "=", "left": { "type": "Identifier", - "start": 15234, - "end": 15246, + "start": 18808, + "end": 18820, "loc": { "start": { - "line": 290, + "line": 363, "column": 20 }, "end": { - "line": 290, + "line": 363, "column": 32 }, "identifierName": "includeTypes" @@ -4784,15 +4784,15 @@ }, "right": { "type": "ObjectExpression", - "start": 15249, - "end": 15251, + "start": 18823, + "end": 18825, "loc": { "start": { - "line": 290, + "line": 363, "column": 35 }, "end": { - "line": 290, + "line": 363, "column": 37 } }, @@ -4802,58 +4802,58 @@ }, { "type": "ForStatement", - "start": 15273, - "end": 15429, + "start": 18847, + "end": 19003, "loc": { "start": { - "line": 291, + "line": 364, "column": 20 }, "end": { - "line": 293, + "line": 366, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 15278, - "end": 15321, + "start": 18852, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 25 }, "end": { - "line": 291, + "line": 364, "column": 68 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15282, - "end": 15287, + "start": 18856, + "end": 18861, "loc": { "start": { - "line": 291, + "line": 364, "column": 29 }, "end": { - "line": 291, + "line": 364, "column": 34 } }, "id": { "type": "Identifier", - "start": 15282, - "end": 15283, + "start": 18856, + "end": 18857, "loc": { "start": { - "line": 291, + "line": 364, "column": 29 }, "end": { - "line": 291, + "line": 364, "column": 30 }, "identifierName": "i" @@ -4862,15 +4862,15 @@ }, "init": { "type": "NumericLiteral", - "start": 15286, - "end": 15287, + "start": 18860, + "end": 18861, "loc": { "start": { - "line": 291, + "line": 364, "column": 33 }, "end": { - "line": 291, + "line": 364, "column": 34 } }, @@ -4883,29 +4883,29 @@ }, { "type": "VariableDeclarator", - "start": 15289, - "end": 15321, + "start": 18863, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 36 }, "end": { - "line": 291, + "line": 364, "column": 68 } }, "id": { "type": "Identifier", - "start": 15289, - "end": 15292, + "start": 18863, + "end": 18866, "loc": { "start": { - "line": 291, + "line": 364, "column": 36 }, "end": { - "line": 291, + "line": 364, "column": 39 }, "identifierName": "len" @@ -4914,43 +4914,43 @@ }, "init": { "type": "MemberExpression", - "start": 15295, - "end": 15321, + "start": 18869, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 42 }, "end": { - "line": 291, + "line": 364, "column": 68 } }, "object": { "type": "MemberExpression", - "start": 15295, - "end": 15314, + "start": 18869, + "end": 18888, "loc": { "start": { - "line": 291, + "line": 364, "column": 42 }, "end": { - "line": 291, + "line": 364, "column": 61 } }, "object": { "type": "Identifier", - "start": 15295, - "end": 15301, + "start": 18869, + "end": 18875, "loc": { "start": { - "line": 291, + "line": 364, "column": 42 }, "end": { - "line": 291, + "line": 364, "column": 48 }, "identifierName": "params" @@ -4959,15 +4959,15 @@ }, "property": { "type": "Identifier", - "start": 15302, - "end": 15314, + "start": 18876, + "end": 18888, "loc": { "start": { - "line": 291, + "line": 364, "column": 49 }, "end": { - "line": 291, + "line": 364, "column": 61 }, "identifierName": "includeTypes" @@ -4978,15 +4978,15 @@ }, "property": { "type": "Identifier", - "start": 15315, - "end": 15321, + "start": 18889, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 62 }, "end": { - "line": 291, + "line": 364, "column": 68 }, "identifierName": "length" @@ -5001,29 +5001,29 @@ }, "test": { "type": "BinaryExpression", - "start": 15323, - "end": 15330, + "start": 18897, + "end": 18904, "loc": { "start": { - "line": 291, + "line": 364, "column": 70 }, "end": { - "line": 291, + "line": 364, "column": 77 } }, "left": { "type": "Identifier", - "start": 15323, - "end": 15324, + "start": 18897, + "end": 18898, "loc": { "start": { - "line": 291, + "line": 364, "column": 70 }, "end": { - "line": 291, + "line": 364, "column": 71 }, "identifierName": "i" @@ -5033,15 +5033,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 15327, - "end": 15330, + "start": 18901, + "end": 18904, "loc": { "start": { - "line": 291, + "line": 364, "column": 74 }, "end": { - "line": 291, + "line": 364, "column": 77 }, "identifierName": "len" @@ -5051,15 +5051,15 @@ }, "update": { "type": "UpdateExpression", - "start": 15332, - "end": 15335, + "start": 18906, + "end": 18909, "loc": { "start": { - "line": 291, + "line": 364, "column": 79 }, "end": { - "line": 291, + "line": 364, "column": 82 } }, @@ -5067,15 +5067,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 15332, - "end": 15333, + "start": 18906, + "end": 18907, "loc": { "start": { - "line": 291, + "line": 364, "column": 79 }, "end": { - "line": 291, + "line": 364, "column": 80 }, "identifierName": "i" @@ -5085,73 +5085,73 @@ }, "body": { "type": "BlockStatement", - "start": 15337, - "end": 15429, + "start": 18911, + "end": 19003, "loc": { "start": { - "line": 291, + "line": 364, "column": 84 }, "end": { - "line": 293, + "line": 366, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 15363, - "end": 15407, + "start": 18937, + "end": 18981, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 15363, - "end": 15406, + "start": 18937, + "end": 18980, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15363, - "end": 15399, + "start": 18937, + "end": 18973, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 60 } }, "object": { "type": "Identifier", - "start": 15363, - "end": 15375, + "start": 18937, + "end": 18949, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 36 }, "identifierName": "includeTypes" @@ -5160,43 +5160,43 @@ }, "property": { "type": "MemberExpression", - "start": 15376, - "end": 15398, + "start": 18950, + "end": 18972, "loc": { "start": { - "line": 292, + "line": 365, "column": 37 }, "end": { - "line": 292, + "line": 365, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 15376, - "end": 15395, + "start": 18950, + "end": 18969, "loc": { "start": { - "line": 292, + "line": 365, "column": 37 }, "end": { - "line": 292, + "line": 365, "column": 56 } }, "object": { "type": "Identifier", - "start": 15376, - "end": 15382, + "start": 18950, + "end": 18956, "loc": { "start": { - "line": 292, + "line": 365, "column": 37 }, "end": { - "line": 292, + "line": 365, "column": 43 }, "identifierName": "params" @@ -5205,15 +5205,15 @@ }, "property": { "type": "Identifier", - "start": 15383, - "end": 15395, + "start": 18957, + "end": 18969, "loc": { "start": { - "line": 292, + "line": 365, "column": 44 }, "end": { - "line": 292, + "line": 365, "column": 56 }, "identifierName": "includeTypes" @@ -5224,15 +5224,15 @@ }, "property": { "type": "Identifier", - "start": 15396, - "end": 15397, + "start": 18970, + "end": 18971, "loc": { "start": { - "line": 292, + "line": 365, "column": 57 }, "end": { - "line": 292, + "line": 365, "column": 58 }, "identifierName": "i" @@ -5245,15 +5245,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 15402, - "end": 15406, + "start": 18976, + "end": 18980, "loc": { "start": { - "line": 292, + "line": 365, "column": 63 }, "end": { - "line": 292, + "line": 365, "column": 67 } }, @@ -5272,44 +5272,44 @@ }, { "type": "VariableDeclaration", - "start": 15465, - "end": 15482, + "start": 19039, + "end": 19056, "loc": { "start": { - "line": 296, + "line": 369, "column": 16 }, "end": { - "line": 296, + "line": 369, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15469, - "end": 15481, + "start": 19043, + "end": 19055, "loc": { "start": { - "line": 296, + "line": 369, "column": 20 }, "end": { - "line": 296, + "line": 369, "column": 32 } }, "id": { "type": "Identifier", - "start": 15469, - "end": 15481, + "start": 19043, + "end": 19055, "loc": { "start": { - "line": 296, + "line": 369, "column": 20 }, "end": { - "line": 296, + "line": 369, "column": 32 }, "identifierName": "excludeTypes" @@ -5323,43 +5323,43 @@ }, { "type": "IfStatement", - "start": 15499, - "end": 15865, + "start": 19073, + "end": 19439, "loc": { "start": { - "line": 297, + "line": 370, "column": 16 }, "end": { - "line": 305, + "line": 378, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 15503, - "end": 15522, + "start": 19077, + "end": 19096, "loc": { "start": { - "line": 297, + "line": 370, "column": 20 }, "end": { - "line": 297, + "line": 370, "column": 39 } }, "object": { "type": "Identifier", - "start": 15503, - "end": 15509, + "start": 19077, + "end": 19083, "loc": { "start": { - "line": 297, + "line": 370, "column": 20 }, "end": { - "line": 297, + "line": 370, "column": 26 }, "identifierName": "params" @@ -5368,15 +5368,15 @@ }, "property": { "type": "Identifier", - "start": 15510, - "end": 15522, + "start": 19084, + "end": 19096, "loc": { "start": { - "line": 297, + "line": 370, "column": 27 }, "end": { - "line": 297, + "line": 370, "column": 39 }, "identifierName": "excludeTypes" @@ -5387,59 +5387,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 15524, - "end": 15865, + "start": 19098, + "end": 19439, "loc": { "start": { - "line": 297, + "line": 370, "column": 41 }, "end": { - "line": 305, + "line": 378, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 15546, - "end": 15564, + "start": 19120, + "end": 19138, "loc": { "start": { - "line": 298, + "line": 371, "column": 20 }, "end": { - "line": 298, + "line": 371, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 15546, - "end": 15563, + "start": 19120, + "end": 19137, "loc": { "start": { - "line": 298, + "line": 371, "column": 20 }, "end": { - "line": 298, + "line": 371, "column": 37 } }, "operator": "=", "left": { "type": "Identifier", - "start": 15546, - "end": 15558, + "start": 19120, + "end": 19132, "loc": { "start": { - "line": 298, + "line": 371, "column": 20 }, "end": { - "line": 298, + "line": 371, "column": 32 }, "identifierName": "excludeTypes" @@ -5448,15 +5448,15 @@ }, "right": { "type": "ObjectExpression", - "start": 15561, - "end": 15563, + "start": 19135, + "end": 19137, "loc": { "start": { - "line": 298, + "line": 371, "column": 35 }, "end": { - "line": 298, + "line": 371, "column": 37 } }, @@ -5466,29 +5466,29 @@ }, { "type": "IfStatement", - "start": 15585, - "end": 15670, + "start": 19159, + "end": 19244, "loc": { "start": { - "line": 299, + "line": 372, "column": 20 }, "end": { - "line": 301, + "line": 374, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 15589, - "end": 15602, + "start": 19163, + "end": 19176, "loc": { "start": { - "line": 299, + "line": 372, "column": 24 }, "end": { - "line": 299, + "line": 372, "column": 37 } }, @@ -5496,15 +5496,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 15590, - "end": 15602, + "start": 19164, + "end": 19176, "loc": { "start": { - "line": 299, + "line": 372, "column": 25 }, "end": { - "line": 299, + "line": 372, "column": 37 }, "identifierName": "includeTypes" @@ -5517,59 +5517,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 15604, - "end": 15670, + "start": 19178, + "end": 19244, "loc": { "start": { - "line": 299, + "line": 372, "column": 39 }, "end": { - "line": 301, + "line": 374, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 15630, - "end": 15648, + "start": 19204, + "end": 19222, "loc": { "start": { - "line": 300, + "line": 373, "column": 24 }, "end": { - "line": 300, + "line": 373, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 15630, - "end": 15647, + "start": 19204, + "end": 19221, "loc": { "start": { - "line": 300, + "line": 373, "column": 24 }, "end": { - "line": 300, + "line": 373, "column": 41 } }, "operator": "=", "left": { "type": "Identifier", - "start": 15630, - "end": 15642, + "start": 19204, + "end": 19216, "loc": { "start": { - "line": 300, + "line": 373, "column": 24 }, "end": { - "line": 300, + "line": 373, "column": 36 }, "identifierName": "includeTypes" @@ -5578,15 +5578,15 @@ }, "right": { "type": "ObjectExpression", - "start": 15645, - "end": 15647, + "start": 19219, + "end": 19221, "loc": { "start": { - "line": 300, + "line": 373, "column": 39 }, "end": { - "line": 300, + "line": 373, "column": 41 } }, @@ -5601,58 +5601,58 @@ }, { "type": "ForStatement", - "start": 15691, - "end": 15847, + "start": 19265, + "end": 19421, "loc": { "start": { - "line": 302, + "line": 375, "column": 20 }, "end": { - "line": 304, + "line": 377, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 15696, - "end": 15739, + "start": 19270, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 25 }, "end": { - "line": 302, + "line": 375, "column": 68 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15700, - "end": 15705, + "start": 19274, + "end": 19279, "loc": { "start": { - "line": 302, + "line": 375, "column": 29 }, "end": { - "line": 302, + "line": 375, "column": 34 } }, "id": { "type": "Identifier", - "start": 15700, - "end": 15701, + "start": 19274, + "end": 19275, "loc": { "start": { - "line": 302, + "line": 375, "column": 29 }, "end": { - "line": 302, + "line": 375, "column": 30 }, "identifierName": "i" @@ -5661,15 +5661,15 @@ }, "init": { "type": "NumericLiteral", - "start": 15704, - "end": 15705, + "start": 19278, + "end": 19279, "loc": { "start": { - "line": 302, + "line": 375, "column": 33 }, "end": { - "line": 302, + "line": 375, "column": 34 } }, @@ -5682,29 +5682,29 @@ }, { "type": "VariableDeclarator", - "start": 15707, - "end": 15739, + "start": 19281, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 36 }, "end": { - "line": 302, + "line": 375, "column": 68 } }, "id": { "type": "Identifier", - "start": 15707, - "end": 15710, + "start": 19281, + "end": 19284, "loc": { "start": { - "line": 302, + "line": 375, "column": 36 }, "end": { - "line": 302, + "line": 375, "column": 39 }, "identifierName": "len" @@ -5713,43 +5713,43 @@ }, "init": { "type": "MemberExpression", - "start": 15713, - "end": 15739, + "start": 19287, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 42 }, "end": { - "line": 302, + "line": 375, "column": 68 } }, "object": { "type": "MemberExpression", - "start": 15713, - "end": 15732, + "start": 19287, + "end": 19306, "loc": { "start": { - "line": 302, + "line": 375, "column": 42 }, "end": { - "line": 302, + "line": 375, "column": 61 } }, "object": { "type": "Identifier", - "start": 15713, - "end": 15719, + "start": 19287, + "end": 19293, "loc": { "start": { - "line": 302, + "line": 375, "column": 42 }, "end": { - "line": 302, + "line": 375, "column": 48 }, "identifierName": "params" @@ -5758,15 +5758,15 @@ }, "property": { "type": "Identifier", - "start": 15720, - "end": 15732, + "start": 19294, + "end": 19306, "loc": { "start": { - "line": 302, + "line": 375, "column": 49 }, "end": { - "line": 302, + "line": 375, "column": 61 }, "identifierName": "excludeTypes" @@ -5777,15 +5777,15 @@ }, "property": { "type": "Identifier", - "start": 15733, - "end": 15739, + "start": 19307, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 62 }, "end": { - "line": 302, + "line": 375, "column": 68 }, "identifierName": "length" @@ -5800,29 +5800,29 @@ }, "test": { "type": "BinaryExpression", - "start": 15741, - "end": 15748, + "start": 19315, + "end": 19322, "loc": { "start": { - "line": 302, + "line": 375, "column": 70 }, "end": { - "line": 302, + "line": 375, "column": 77 } }, "left": { "type": "Identifier", - "start": 15741, - "end": 15742, + "start": 19315, + "end": 19316, "loc": { "start": { - "line": 302, + "line": 375, "column": 70 }, "end": { - "line": 302, + "line": 375, "column": 71 }, "identifierName": "i" @@ -5832,15 +5832,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 15745, - "end": 15748, + "start": 19319, + "end": 19322, "loc": { "start": { - "line": 302, + "line": 375, "column": 74 }, "end": { - "line": 302, + "line": 375, "column": 77 }, "identifierName": "len" @@ -5850,15 +5850,15 @@ }, "update": { "type": "UpdateExpression", - "start": 15750, - "end": 15753, + "start": 19324, + "end": 19327, "loc": { "start": { - "line": 302, + "line": 375, "column": 79 }, "end": { - "line": 302, + "line": 375, "column": 82 } }, @@ -5866,15 +5866,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 15750, - "end": 15751, + "start": 19324, + "end": 19325, "loc": { "start": { - "line": 302, + "line": 375, "column": 79 }, "end": { - "line": 302, + "line": 375, "column": 80 }, "identifierName": "i" @@ -5884,73 +5884,73 @@ }, "body": { "type": "BlockStatement", - "start": 15755, - "end": 15847, + "start": 19329, + "end": 19421, "loc": { "start": { - "line": 302, + "line": 375, "column": 84 }, "end": { - "line": 304, + "line": 377, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 15781, - "end": 15825, + "start": 19355, + "end": 19399, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 15781, - "end": 15824, + "start": 19355, + "end": 19398, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15781, - "end": 15817, + "start": 19355, + "end": 19391, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 60 } }, "object": { "type": "Identifier", - "start": 15781, - "end": 15793, + "start": 19355, + "end": 19367, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 36 }, "identifierName": "includeTypes" @@ -5959,43 +5959,43 @@ }, "property": { "type": "MemberExpression", - "start": 15794, - "end": 15816, + "start": 19368, + "end": 19390, "loc": { "start": { - "line": 303, + "line": 376, "column": 37 }, "end": { - "line": 303, + "line": 376, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 15794, - "end": 15813, + "start": 19368, + "end": 19387, "loc": { "start": { - "line": 303, + "line": 376, "column": 37 }, "end": { - "line": 303, + "line": 376, "column": 56 } }, "object": { "type": "Identifier", - "start": 15794, - "end": 15800, + "start": 19368, + "end": 19374, "loc": { "start": { - "line": 303, + "line": 376, "column": 37 }, "end": { - "line": 303, + "line": 376, "column": 43 }, "identifierName": "params" @@ -6004,15 +6004,15 @@ }, "property": { "type": "Identifier", - "start": 15801, - "end": 15813, + "start": 19375, + "end": 19387, "loc": { "start": { - "line": 303, + "line": 376, "column": 44 }, "end": { - "line": 303, + "line": 376, "column": 56 }, "identifierName": "excludeTypes" @@ -6023,15 +6023,15 @@ }, "property": { "type": "Identifier", - "start": 15814, - "end": 15815, + "start": 19388, + "end": 19389, "loc": { "start": { - "line": 303, + "line": 376, "column": 57 }, "end": { - "line": 303, + "line": 376, "column": 58 }, "identifierName": "i" @@ -6044,15 +6044,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 15820, - "end": 15824, + "start": 19394, + "end": 19398, "loc": { "start": { - "line": 303, + "line": 376, "column": 63 }, "end": { - "line": 303, + "line": 376, "column": 67 } }, @@ -6071,58 +6071,58 @@ }, { "type": "ExpressionStatement", - "start": 15883, - "end": 15915, + "start": 19457, + "end": 19489, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 15883, - "end": 15914, + "start": 19457, + "end": 19488, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15883, - "end": 15906, + "start": 19457, + "end": 19480, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 39 } }, "object": { "type": "Identifier", - "start": 15883, - "end": 15889, + "start": 19457, + "end": 19463, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 22 }, "identifierName": "params" @@ -6131,15 +6131,15 @@ }, "property": { "type": "Identifier", - "start": 15890, - "end": 15906, + "start": 19464, + "end": 19480, "loc": { "start": { - "line": 307, + "line": 380, "column": 23 }, "end": { - "line": 307, + "line": 380, "column": 39 }, "identifierName": "readableGeometry" @@ -6150,15 +6150,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 15909, - "end": 15914, + "start": 19483, + "end": 19488, "loc": { "start": { - "line": 307, + "line": 380, "column": 42 }, "end": { - "line": 307, + "line": 380, "column": 47 } }, @@ -6168,58 +6168,58 @@ }, { "type": "ExpressionStatement", - "start": 15933, - "end": 17477, + "start": 19507, + "end": 21051, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 348, + "line": 421, "column": 18 } }, "expression": { "type": "AssignmentExpression", - "start": 15933, - "end": 17476, + "start": 19507, + "end": 21050, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 348, + "line": 421, "column": 17 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15933, - "end": 15954, + "start": 19507, + "end": 19528, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 309, + "line": 382, "column": 37 } }, "object": { "type": "Identifier", - "start": 15933, - "end": 15939, + "start": 19507, + "end": 19513, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 309, + "line": 382, "column": 22 }, "identifierName": "params" @@ -6228,15 +6228,15 @@ }, "property": { "type": "Identifier", - "start": 15940, - "end": 15954, + "start": 19514, + "end": 19528, "loc": { "start": { - "line": 309, + "line": 382, "column": 23 }, "end": { - "line": 309, + "line": 382, "column": 37 }, "identifierName": "handleGLTFNode" @@ -6247,15 +6247,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 15957, - "end": 17476, + "start": 19531, + "end": 21050, "loc": { "start": { - "line": 309, + "line": 382, "column": 40 }, "end": { - "line": 348, + "line": 421, "column": 17 } }, @@ -6266,15 +6266,15 @@ "params": [ { "type": "Identifier", - "start": 15958, - "end": 15965, + "start": 19532, + "end": 19539, "loc": { "start": { - "line": 309, + "line": 382, "column": 41 }, "end": { - "line": 309, + "line": 382, "column": 48 }, "identifierName": "modelId" @@ -6283,15 +6283,15 @@ }, { "type": "Identifier", - "start": 15967, - "end": 15975, + "start": 19541, + "end": 19549, "loc": { "start": { - "line": 309, + "line": 382, "column": 50 }, "end": { - "line": 309, + "line": 382, "column": 58 }, "identifierName": "glTFNode" @@ -6300,15 +6300,15 @@ }, { "type": "Identifier", - "start": 15977, - "end": 15984, + "start": 19551, + "end": 19558, "loc": { "start": { - "line": 309, + "line": 382, "column": 60 }, "end": { - "line": 309, + "line": 382, "column": 67 }, "identifierName": "actions" @@ -6318,59 +6318,59 @@ ], "body": { "type": "BlockStatement", - "start": 15989, - "end": 17476, + "start": 19563, + "end": 21050, "loc": { "start": { - "line": 309, + "line": 382, "column": 72 }, "end": { - "line": 348, + "line": 421, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 16012, - "end": 16039, + "start": 19586, + "end": 19613, "loc": { "start": { - "line": 311, + "line": 384, "column": 20 }, "end": { - "line": 311, + "line": 384, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16018, - "end": 16038, + "start": 19592, + "end": 19612, "loc": { "start": { - "line": 311, + "line": 384, "column": 26 }, "end": { - "line": 311, + "line": 384, "column": 46 } }, "id": { "type": "Identifier", - "start": 16018, - "end": 16022, + "start": 19592, + "end": 19596, "loc": { "start": { - "line": 311, + "line": 384, "column": 26 }, "end": { - "line": 311, + "line": 384, "column": 30 }, "identifierName": "name" @@ -6379,29 +6379,29 @@ }, "init": { "type": "MemberExpression", - "start": 16025, - "end": 16038, + "start": 19599, + "end": 19612, "loc": { "start": { - "line": 311, + "line": 384, "column": 33 }, "end": { - "line": 311, + "line": 384, "column": 46 } }, "object": { "type": "Identifier", - "start": 16025, - "end": 16033, + "start": 19599, + "end": 19607, "loc": { "start": { - "line": 311, + "line": 384, "column": 33 }, "end": { - "line": 311, + "line": 384, "column": 41 }, "identifierName": "glTFNode" @@ -6410,15 +6410,15 @@ }, "property": { "type": "Identifier", - "start": 16034, - "end": 16038, + "start": 19608, + "end": 19612, "loc": { "start": { - "line": 311, + "line": 384, "column": 42 }, "end": { - "line": 311, + "line": 384, "column": 46 }, "identifierName": "name" @@ -6433,29 +6433,29 @@ }, { "type": "IfStatement", - "start": 16061, - "end": 16173, + "start": 19635, + "end": 19747, "loc": { "start": { - "line": 313, + "line": 386, "column": 20 }, "end": { - "line": 315, + "line": 388, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 16065, - "end": 16070, + "start": 19639, + "end": 19644, "loc": { "start": { - "line": 313, + "line": 386, "column": 24 }, "end": { - "line": 313, + "line": 386, "column": 29 } }, @@ -6463,15 +6463,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 16066, - "end": 16070, + "start": 19640, + "end": 19644, "loc": { "start": { - "line": 313, + "line": 386, "column": 25 }, "end": { - "line": 313, + "line": 386, "column": 29 }, "identifierName": "name" @@ -6484,44 +6484,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 16072, - "end": 16173, + "start": 19646, + "end": 19747, "loc": { "start": { - "line": 313, + "line": 386, "column": 31 }, "end": { - "line": 315, + "line": 388, "column": 21 } }, "body": [ { "type": "ReturnStatement", - "start": 16098, - "end": 16110, + "start": 19672, + "end": 19684, "loc": { "start": { - "line": 314, + "line": 387, "column": 24 }, "end": { - "line": 314, + "line": 387, "column": 36 } }, "argument": { "type": "BooleanLiteral", - "start": 16105, - "end": 16109, + "start": 19679, + "end": 19683, "loc": { "start": { - "line": 314, + "line": 387, "column": 31 }, "end": { - "line": 314, + "line": 387, "column": 35 } }, @@ -6531,15 +6531,15 @@ { "type": "CommentLine", "value": " Continue descending this node subtree", - "start": 16111, - "end": 16151, + "start": 19685, + "end": 19725, "loc": { "start": { - "line": 314, + "line": 387, "column": 37 }, "end": { - "line": 314, + "line": 387, "column": 77 } } @@ -6553,44 +6553,44 @@ }, { "type": "VariableDeclaration", - "start": 16195, - "end": 16215, + "start": 19769, + "end": 19789, "loc": { "start": { - "line": 317, + "line": 390, "column": 20 }, "end": { - "line": 317, + "line": 390, "column": 40 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16201, - "end": 16214, + "start": 19775, + "end": 19788, "loc": { "start": { - "line": 317, + "line": 390, "column": 26 }, "end": { - "line": 317, + "line": 390, "column": 39 } }, "id": { "type": "Identifier", - "start": 16201, - "end": 16207, + "start": 19775, + "end": 19781, "loc": { "start": { - "line": 317, + "line": 390, "column": 26 }, "end": { - "line": 317, + "line": 390, "column": 32 }, "identifierName": "nodeId" @@ -6599,15 +6599,15 @@ }, "init": { "type": "Identifier", - "start": 16210, - "end": 16214, + "start": 19784, + "end": 19788, "loc": { "start": { - "line": 317, + "line": 390, "column": 35 }, "end": { - "line": 317, + "line": 390, "column": 39 }, "identifierName": "name" @@ -6620,44 +6620,44 @@ }, { "type": "VariableDeclaration", - "start": 16236, - "end": 16297, + "start": 19810, + "end": 19871, "loc": { "start": { - "line": 318, + "line": 391, "column": 20 }, "end": { - "line": 318, + "line": 391, "column": 81 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16242, - "end": 16296, + "start": 19816, + "end": 19870, "loc": { "start": { - "line": 318, + "line": 391, "column": 26 }, "end": { - "line": 318, + "line": 391, "column": 80 } }, "id": { "type": "Identifier", - "start": 16242, - "end": 16252, + "start": 19816, + "end": 19826, "loc": { "start": { - "line": 318, + "line": 391, "column": 26 }, "end": { - "line": 318, + "line": 391, "column": 36 }, "identifierName": "metaObject" @@ -6666,86 +6666,86 @@ }, "init": { "type": "MemberExpression", - "start": 16255, - "end": 16296, + "start": 19829, + "end": 19870, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 80 } }, "object": { "type": "MemberExpression", - "start": 16255, - "end": 16288, + "start": 19829, + "end": 19862, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 72 } }, "object": { "type": "MemberExpression", - "start": 16255, - "end": 16276, + "start": 19829, + "end": 19850, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 16255, - "end": 16266, + "start": 19829, + "end": 19840, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 50 } }, "object": { "type": "ThisExpression", - "start": 16255, - "end": 16259, + "start": 19829, + "end": 19833, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 43 } } }, "property": { "type": "Identifier", - "start": 16260, - "end": 16266, + "start": 19834, + "end": 19840, "loc": { "start": { - "line": 318, + "line": 391, "column": 44 }, "end": { - "line": 318, + "line": 391, "column": 50 }, "identifierName": "viewer" @@ -6756,15 +6756,15 @@ }, "property": { "type": "Identifier", - "start": 16267, - "end": 16276, + "start": 19841, + "end": 19850, "loc": { "start": { - "line": 318, + "line": 391, "column": 51 }, "end": { - "line": 318, + "line": 391, "column": 60 }, "identifierName": "metaScene" @@ -6775,15 +6775,15 @@ }, "property": { "type": "Identifier", - "start": 16277, - "end": 16288, + "start": 19851, + "end": 19862, "loc": { "start": { - "line": 318, + "line": 391, "column": 61 }, "end": { - "line": 318, + "line": 391, "column": 72 }, "identifierName": "metaObjects" @@ -6794,15 +6794,15 @@ }, "property": { "type": "Identifier", - "start": 16289, - "end": 16295, + "start": 19863, + "end": 19869, "loc": { "start": { - "line": 318, + "line": 391, "column": 73 }, "end": { - "line": 318, + "line": 391, "column": 79 }, "identifierName": "nodeId" @@ -6817,44 +6817,44 @@ }, { "type": "VariableDeclaration", - "start": 16318, - "end": 16387, + "start": 19892, + "end": 19961, "loc": { "start": { - "line": 319, + "line": 392, "column": 20 }, "end": { - "line": 319, + "line": 392, "column": 89 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16324, - "end": 16386, + "start": 19898, + "end": 19960, "loc": { "start": { - "line": 319, + "line": 392, "column": 26 }, "end": { - "line": 319, + "line": 392, "column": 88 } }, "id": { "type": "Identifier", - "start": 16324, - "end": 16328, + "start": 19898, + "end": 19902, "loc": { "start": { - "line": 319, + "line": 392, "column": 26 }, "end": { - "line": 319, + "line": 392, "column": 30 }, "identifierName": "type" @@ -6863,43 +6863,43 @@ }, "init": { "type": "LogicalExpression", - "start": 16331, - "end": 16386, + "start": 19905, + "end": 19960, "loc": { "start": { - "line": 319, + "line": 392, "column": 33 }, "end": { - "line": 319, + "line": 392, "column": 88 } }, "left": { "type": "ConditionalExpression", - "start": 16332, - "end": 16372, + "start": 19906, + "end": 19946, "loc": { "start": { - "line": 319, + "line": 392, "column": 34 }, "end": { - "line": 319, + "line": 392, "column": 74 } }, "test": { "type": "Identifier", - "start": 16332, - "end": 16342, + "start": 19906, + "end": 19916, "loc": { "start": { - "line": 319, + "line": 392, "column": 34 }, "end": { - "line": 319, + "line": 392, "column": 44 }, "identifierName": "metaObject" @@ -6908,29 +6908,29 @@ }, "consequent": { "type": "MemberExpression", - "start": 16345, - "end": 16360, + "start": 19919, + "end": 19934, "loc": { "start": { - "line": 319, + "line": 392, "column": 47 }, "end": { - "line": 319, + "line": 392, "column": 62 } }, "object": { "type": "Identifier", - "start": 16345, - "end": 16355, + "start": 19919, + "end": 19929, "loc": { "start": { - "line": 319, + "line": 392, "column": 47 }, "end": { - "line": 319, + "line": 392, "column": 57 }, "identifierName": "metaObject" @@ -6939,15 +6939,15 @@ }, "property": { "type": "Identifier", - "start": 16356, - "end": 16360, + "start": 19930, + "end": 19934, "loc": { "start": { - "line": 319, + "line": 392, "column": 58 }, "end": { - "line": 319, + "line": 392, "column": 62 }, "identifierName": "type" @@ -6958,15 +6958,15 @@ }, "alternate": { "type": "StringLiteral", - "start": 16363, - "end": 16372, + "start": 19937, + "end": 19946, "loc": { "start": { - "line": 319, + "line": 392, "column": 65 }, "end": { - "line": 319, + "line": 392, "column": 74 } }, @@ -6978,21 +6978,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 16331 + "parenStart": 19905 } }, "operator": "||", "right": { "type": "StringLiteral", - "start": 16377, - "end": 16386, + "start": 19951, + "end": 19960, "loc": { "start": { - "line": 319, + "line": 392, "column": 79 }, "end": { - "line": 319, + "line": 392, "column": 88 } }, @@ -7009,58 +7009,58 @@ }, { "type": "ExpressionStatement", - "start": 16409, - "end": 16572, + "start": 19983, + "end": 20146, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 324, + "line": 397, "column": 22 } }, "expression": { "type": "AssignmentExpression", - "start": 16409, - "end": 16571, + "start": 19983, + "end": 20145, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 324, + "line": 397, "column": 21 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16409, - "end": 16429, + "start": 19983, + "end": 20003, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 321, + "line": 394, "column": 40 } }, "object": { "type": "Identifier", - "start": 16409, - "end": 16416, + "start": 19983, + "end": 19990, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 321, + "line": 394, "column": 27 }, "identifierName": "actions" @@ -7069,15 +7069,15 @@ }, "property": { "type": "Identifier", - "start": 16417, - "end": 16429, + "start": 19991, + "end": 20003, "loc": { "start": { - "line": 321, + "line": 394, "column": 28 }, "end": { - "line": 321, + "line": 394, "column": 40 }, "identifierName": "createEntity" @@ -7088,30 +7088,30 @@ }, "right": { "type": "ObjectExpression", - "start": 16432, - "end": 16571, + "start": 20006, + "end": 20145, "loc": { "start": { - "line": 321, + "line": 394, "column": 43 }, "end": { - "line": 324, + "line": 397, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 16458, - "end": 16468, + "start": 20032, + "end": 20042, "loc": { "start": { - "line": 322, + "line": 395, "column": 24 }, "end": { - "line": 322, + "line": 395, "column": 34 } }, @@ -7120,15 +7120,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16458, - "end": 16460, + "start": 20032, + "end": 20034, "loc": { "start": { - "line": 322, + "line": 395, "column": 24 }, "end": { - "line": 322, + "line": 395, "column": 26 }, "identifierName": "id" @@ -7137,15 +7137,15 @@ }, "value": { "type": "Identifier", - "start": 16462, - "end": 16468, + "start": 20036, + "end": 20042, "loc": { "start": { - "line": 322, + "line": 395, "column": 28 }, "end": { - "line": 322, + "line": 395, "column": 34 }, "identifierName": "nodeId" @@ -7155,15 +7155,15 @@ }, { "type": "ObjectProperty", - "start": 16494, - "end": 16508, + "start": 20068, + "end": 20082, "loc": { "start": { - "line": 323, + "line": 396, "column": 24 }, "end": { - "line": 323, + "line": 396, "column": 38 } }, @@ -7172,15 +7172,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16494, - "end": 16502, + "start": 20068, + "end": 20076, "loc": { "start": { - "line": 323, + "line": 396, "column": 24 }, "end": { - "line": 323, + "line": 396, "column": 32 }, "identifierName": "isObject" @@ -7189,15 +7189,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 16504, - "end": 16508, + "start": 20078, + "end": 20082, "loc": { "start": { - "line": 323, + "line": 396, "column": 34 }, "end": { - "line": 323, + "line": 396, "column": 38 } }, @@ -7209,15 +7209,15 @@ { "type": "CommentLine", "value": " Registers the Entity in Scene#objects", - "start": 16509, - "end": 16549, + "start": 20083, + "end": 20123, "loc": { "start": { - "line": 323, + "line": 396, "column": 39 }, "end": { - "line": 323, + "line": 396, "column": 79 } } @@ -7230,44 +7230,44 @@ }, { "type": "VariableDeclaration", - "start": 16594, - "end": 16629, + "start": 20168, + "end": 20203, "loc": { "start": { - "line": 326, + "line": 399, "column": 20 }, "end": { - "line": 326, + "line": 399, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16600, - "end": 16628, + "start": 20174, + "end": 20202, "loc": { "start": { - "line": 326, + "line": 399, "column": 26 }, "end": { - "line": 326, + "line": 399, "column": 54 } }, "id": { "type": "Identifier", - "start": 16600, - "end": 16605, + "start": 20174, + "end": 20179, "loc": { "start": { - "line": 326, + "line": 399, "column": 26 }, "end": { - "line": 326, + "line": 399, "column": 31 }, "identifierName": "props" @@ -7276,29 +7276,29 @@ }, "init": { "type": "MemberExpression", - "start": 16608, - "end": 16628, + "start": 20182, + "end": 20202, "loc": { "start": { - "line": 326, + "line": 399, "column": 34 }, "end": { - "line": 326, + "line": 399, "column": 54 } }, "object": { "type": "Identifier", - "start": 16608, - "end": 16622, + "start": 20182, + "end": 20196, "loc": { "start": { - "line": 326, + "line": 399, "column": 34 }, "end": { - "line": 326, + "line": 399, "column": 48 }, "identifierName": "objectDefaults" @@ -7307,15 +7307,15 @@ }, "property": { "type": "Identifier", - "start": 16623, - "end": 16627, + "start": 20197, + "end": 20201, "loc": { "start": { - "line": 326, + "line": 399, "column": 49 }, "end": { - "line": 326, + "line": 399, "column": 53 }, "identifierName": "type" @@ -7330,29 +7330,29 @@ }, { "type": "IfStatement", - "start": 16651, - "end": 17378, + "start": 20225, + "end": 20952, "loc": { "start": { - "line": 328, + "line": 401, "column": 20 }, "end": { - "line": 345, + "line": 418, "column": 21 } }, "test": { "type": "Identifier", - "start": 16655, - "end": 16660, + "start": 20229, + "end": 20234, "loc": { "start": { - "line": 328, + "line": 401, "column": 24 }, "end": { - "line": 328, + "line": 401, "column": 29 }, "identifierName": "props" @@ -7361,72 +7361,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 16662, - "end": 17378, + "start": 20236, + "end": 20952, "loc": { "start": { - "line": 328, + "line": 401, "column": 31 }, "end": { - "line": 345, + "line": 418, "column": 21 } }, "body": [ { "type": "IfStatement", - "start": 16749, - "end": 16871, + "start": 20323, + "end": 20445, "loc": { "start": { - "line": 330, + "line": 403, "column": 24 }, "end": { - "line": 332, + "line": 405, "column": 25 } }, "test": { "type": "BinaryExpression", - "start": 16753, - "end": 16776, + "start": 20327, + "end": 20350, "loc": { "start": { - "line": 330, + "line": 403, "column": 28 }, "end": { - "line": 330, + "line": 403, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 16753, - "end": 16766, + "start": 20327, + "end": 20340, "loc": { "start": { - "line": 330, + "line": 403, "column": 28 }, "end": { - "line": 330, + "line": 403, "column": 41 } }, "object": { "type": "Identifier", - "start": 16753, - "end": 16758, + "start": 20327, + "end": 20332, "loc": { "start": { - "line": 330, + "line": 403, "column": 28 }, "end": { - "line": 330, + "line": 403, "column": 33 }, "identifierName": "props" @@ -7436,15 +7436,15 @@ }, "property": { "type": "Identifier", - "start": 16759, - "end": 16766, + "start": 20333, + "end": 20340, "loc": { "start": { - "line": 330, + "line": 403, "column": 34 }, "end": { - "line": 330, + "line": 403, "column": 41 }, "identifierName": "visible" @@ -7457,15 +7457,15 @@ "operator": "===", "right": { "type": "BooleanLiteral", - "start": 16771, - "end": 16776, + "start": 20345, + "end": 20350, "loc": { "start": { - "line": 330, + "line": 403, "column": 46 }, "end": { - "line": 330, + "line": 403, "column": 51 } }, @@ -7475,87 +7475,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 16778, - "end": 16871, + "start": 20352, + "end": 20445, "loc": { "start": { - "line": 330, + "line": 403, "column": 53 }, "end": { - "line": 332, + "line": 405, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 16808, - "end": 16845, + "start": 20382, + "end": 20419, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 65 } }, "expression": { "type": "AssignmentExpression", - "start": 16808, - "end": 16844, + "start": 20382, + "end": 20418, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 64 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16808, - "end": 16836, + "start": 20382, + "end": 20410, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 16808, - "end": 16828, + "start": 20382, + "end": 20402, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 48 } }, "object": { "type": "Identifier", - "start": 16808, - "end": 16815, + "start": 20382, + "end": 20389, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 35 }, "identifierName": "actions" @@ -7564,15 +7564,15 @@ }, "property": { "type": "Identifier", - "start": 16816, - "end": 16828, + "start": 20390, + "end": 20402, "loc": { "start": { - "line": 331, + "line": 404, "column": 36 }, "end": { - "line": 331, + "line": 404, "column": 48 }, "identifierName": "createEntity" @@ -7583,15 +7583,15 @@ }, "property": { "type": "Identifier", - "start": 16829, - "end": 16836, + "start": 20403, + "end": 20410, "loc": { "start": { - "line": 331, + "line": 404, "column": 49 }, "end": { - "line": 331, + "line": 404, "column": 56 }, "identifierName": "visible" @@ -7602,15 +7602,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 16839, - "end": 16844, + "start": 20413, + "end": 20418, "loc": { "start": { - "line": 331, + "line": 404, "column": 59 }, "end": { - "line": 331, + "line": 404, "column": 64 } }, @@ -7626,15 +7626,15 @@ { "type": "CommentLine", "value": " Set Entity's initial rendering state for recognized type", - "start": 16664, - "end": 16723, + "start": 20238, + "end": 20297, "loc": { "start": { - "line": 328, + "line": 401, "column": 33 }, "end": { - "line": 328, + "line": 401, "column": 92 } } @@ -7643,43 +7643,43 @@ }, { "type": "IfStatement", - "start": 16897, - "end": 17020, + "start": 20471, + "end": 20594, "loc": { "start": { - "line": 334, + "line": 407, "column": 24 }, "end": { - "line": 336, + "line": 409, "column": 25 } }, "test": { "type": "MemberExpression", - "start": 16901, - "end": 16915, + "start": 20475, + "end": 20489, "loc": { "start": { - "line": 334, + "line": 407, "column": 28 }, "end": { - "line": 334, + "line": 407, "column": 42 } }, "object": { "type": "Identifier", - "start": 16901, - "end": 16906, + "start": 20475, + "end": 20480, "loc": { "start": { - "line": 334, + "line": 407, "column": 28 }, "end": { - "line": 334, + "line": 407, "column": 33 }, "identifierName": "props" @@ -7688,15 +7688,15 @@ }, "property": { "type": "Identifier", - "start": 16907, - "end": 16915, + "start": 20481, + "end": 20489, "loc": { "start": { - "line": 334, + "line": 407, "column": 34 }, "end": { - "line": 334, + "line": 407, "column": 42 }, "identifierName": "colorize" @@ -7707,87 +7707,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 16917, - "end": 17020, + "start": 20491, + "end": 20594, "loc": { "start": { - "line": 334, + "line": 407, "column": 44 }, "end": { - "line": 336, + "line": 409, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 16947, - "end": 16994, + "start": 20521, + "end": 20568, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 75 } }, "expression": { "type": "AssignmentExpression", - "start": 16947, - "end": 16993, + "start": 20521, + "end": 20567, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 74 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16947, - "end": 16976, + "start": 20521, + "end": 20550, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 16947, - "end": 16967, + "start": 20521, + "end": 20541, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 48 } }, "object": { "type": "Identifier", - "start": 16947, - "end": 16954, + "start": 20521, + "end": 20528, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 35 }, "identifierName": "actions" @@ -7796,15 +7796,15 @@ }, "property": { "type": "Identifier", - "start": 16955, - "end": 16967, + "start": 20529, + "end": 20541, "loc": { "start": { - "line": 335, + "line": 408, "column": 36 }, "end": { - "line": 335, + "line": 408, "column": 48 }, "identifierName": "createEntity" @@ -7815,15 +7815,15 @@ }, "property": { "type": "Identifier", - "start": 16968, - "end": 16976, + "start": 20542, + "end": 20550, "loc": { "start": { - "line": 335, + "line": 408, "column": 49 }, "end": { - "line": 335, + "line": 408, "column": 57 }, "identifierName": "colorize" @@ -7834,29 +7834,29 @@ }, "right": { "type": "MemberExpression", - "start": 16979, - "end": 16993, + "start": 20553, + "end": 20567, "loc": { "start": { - "line": 335, + "line": 408, "column": 60 }, "end": { - "line": 335, + "line": 408, "column": 74 } }, "object": { "type": "Identifier", - "start": 16979, - "end": 16984, + "start": 20553, + "end": 20558, "loc": { "start": { - "line": 335, + "line": 408, "column": 60 }, "end": { - "line": 335, + "line": 408, "column": 65 }, "identifierName": "props" @@ -7865,15 +7865,15 @@ }, "property": { "type": "Identifier", - "start": 16985, - "end": 16993, + "start": 20559, + "end": 20567, "loc": { "start": { - "line": 335, + "line": 408, "column": 66 }, "end": { - "line": 335, + "line": 408, "column": 74 }, "identifierName": "colorize" @@ -7891,57 +7891,57 @@ }, { "type": "IfStatement", - "start": 17046, - "end": 17170, + "start": 20620, + "end": 20744, "loc": { "start": { - "line": 338, + "line": 411, "column": 24 }, "end": { - "line": 340, + "line": 413, "column": 25 } }, "test": { "type": "BinaryExpression", - "start": 17050, - "end": 17074, + "start": 20624, + "end": 20648, "loc": { "start": { - "line": 338, + "line": 411, "column": 28 }, "end": { - "line": 338, + "line": 411, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 17050, - "end": 17064, + "start": 20624, + "end": 20638, "loc": { "start": { - "line": 338, + "line": 411, "column": 28 }, "end": { - "line": 338, + "line": 411, "column": 42 } }, "object": { "type": "Identifier", - "start": 17050, - "end": 17055, + "start": 20624, + "end": 20629, "loc": { "start": { - "line": 338, + "line": 411, "column": 28 }, "end": { - "line": 338, + "line": 411, "column": 33 }, "identifierName": "props" @@ -7950,15 +7950,15 @@ }, "property": { "type": "Identifier", - "start": 17056, - "end": 17064, + "start": 20630, + "end": 20638, "loc": { "start": { - "line": 338, + "line": 411, "column": 34 }, "end": { - "line": 338, + "line": 411, "column": 42 }, "identifierName": "pickable" @@ -7970,15 +7970,15 @@ "operator": "===", "right": { "type": "BooleanLiteral", - "start": 17069, - "end": 17074, + "start": 20643, + "end": 20648, "loc": { "start": { - "line": 338, + "line": 411, "column": 47 }, "end": { - "line": 338, + "line": 411, "column": 52 } }, @@ -7987,87 +7987,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 17076, - "end": 17170, + "start": 20650, + "end": 20744, "loc": { "start": { - "line": 338, + "line": 411, "column": 54 }, "end": { - "line": 340, + "line": 413, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 17106, - "end": 17144, + "start": 20680, + "end": 20718, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 66 } }, "expression": { "type": "AssignmentExpression", - "start": 17106, - "end": 17143, + "start": 20680, + "end": 20717, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 65 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 17106, - "end": 17135, + "start": 20680, + "end": 20709, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 17106, - "end": 17126, + "start": 20680, + "end": 20700, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 48 } }, "object": { "type": "Identifier", - "start": 17106, - "end": 17113, + "start": 20680, + "end": 20687, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 35 }, "identifierName": "actions" @@ -8076,15 +8076,15 @@ }, "property": { "type": "Identifier", - "start": 17114, - "end": 17126, + "start": 20688, + "end": 20700, "loc": { "start": { - "line": 339, + "line": 412, "column": 36 }, "end": { - "line": 339, + "line": 412, "column": 48 }, "identifierName": "createEntity" @@ -8095,15 +8095,15 @@ }, "property": { "type": "Identifier", - "start": 17127, - "end": 17135, + "start": 20701, + "end": 20709, "loc": { "start": { - "line": 339, + "line": 412, "column": 49 }, "end": { - "line": 339, + "line": 412, "column": 57 }, "identifierName": "pickable" @@ -8114,15 +8114,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 17138, - "end": 17143, + "start": 20712, + "end": 20717, "loc": { "start": { - "line": 339, + "line": 412, "column": 60 }, "end": { - "line": 339, + "line": 412, "column": 65 } }, @@ -8137,71 +8137,71 @@ }, { "type": "IfStatement", - "start": 17196, - "end": 17356, + "start": 20770, + "end": 20930, "loc": { "start": { - "line": 342, + "line": 415, "column": 24 }, "end": { - "line": 344, + "line": 417, "column": 25 } }, "test": { "type": "LogicalExpression", - "start": 17200, - "end": 17253, + "start": 20774, + "end": 20827, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 81 } }, "left": { "type": "BinaryExpression", - "start": 17200, - "end": 17227, + "start": 20774, + "end": 20801, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 55 } }, "left": { "type": "MemberExpression", - "start": 17200, - "end": 17213, + "start": 20774, + "end": 20787, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 41 } }, "object": { "type": "Identifier", - "start": 17200, - "end": 17205, + "start": 20774, + "end": 20779, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 33 }, "identifierName": "props" @@ -8210,15 +8210,15 @@ }, "property": { "type": "Identifier", - "start": 17206, - "end": 17213, + "start": 20780, + "end": 20787, "loc": { "start": { - "line": 342, + "line": 415, "column": 34 }, "end": { - "line": 342, + "line": 415, "column": 41 }, "identifierName": "opacity" @@ -8230,15 +8230,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 17218, - "end": 17227, + "start": 20792, + "end": 20801, "loc": { "start": { - "line": 342, + "line": 415, "column": 46 }, "end": { - "line": 342, + "line": 415, "column": 55 }, "identifierName": "undefined" @@ -8249,43 +8249,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 17231, - "end": 17253, + "start": 20805, + "end": 20827, "loc": { "start": { - "line": 342, + "line": 415, "column": 59 }, "end": { - "line": 342, + "line": 415, "column": 81 } }, "left": { "type": "MemberExpression", - "start": 17231, - "end": 17244, + "start": 20805, + "end": 20818, "loc": { "start": { - "line": 342, + "line": 415, "column": 59 }, "end": { - "line": 342, + "line": 415, "column": 72 } }, "object": { "type": "Identifier", - "start": 17231, - "end": 17236, + "start": 20805, + "end": 20810, "loc": { "start": { - "line": 342, + "line": 415, "column": 59 }, "end": { - "line": 342, + "line": 415, "column": 64 }, "identifierName": "props" @@ -8294,15 +8294,15 @@ }, "property": { "type": "Identifier", - "start": 17237, - "end": 17244, + "start": 20811, + "end": 20818, "loc": { "start": { - "line": 342, + "line": 415, "column": 65 }, "end": { - "line": 342, + "line": 415, "column": 72 }, "identifierName": "opacity" @@ -8314,15 +8314,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 17249, - "end": 17253, + "start": 20823, + "end": 20827, "loc": { "start": { - "line": 342, + "line": 415, "column": 77 }, "end": { - "line": 342, + "line": 415, "column": 81 } } @@ -8331,87 +8331,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 17255, - "end": 17356, + "start": 20829, + "end": 20930, "loc": { "start": { - "line": 342, + "line": 415, "column": 83 }, "end": { - "line": 344, + "line": 417, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 17285, - "end": 17330, + "start": 20859, + "end": 20904, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 73 } }, "expression": { "type": "AssignmentExpression", - "start": 17285, - "end": 17329, + "start": 20859, + "end": 20903, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 72 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 17285, - "end": 17313, + "start": 20859, + "end": 20887, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 17285, - "end": 17305, + "start": 20859, + "end": 20879, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 48 } }, "object": { "type": "Identifier", - "start": 17285, - "end": 17292, + "start": 20859, + "end": 20866, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 35 }, "identifierName": "actions" @@ -8420,15 +8420,15 @@ }, "property": { "type": "Identifier", - "start": 17293, - "end": 17305, + "start": 20867, + "end": 20879, "loc": { "start": { - "line": 343, + "line": 416, "column": 36 }, "end": { - "line": 343, + "line": 416, "column": 48 }, "identifierName": "createEntity" @@ -8439,15 +8439,15 @@ }, "property": { "type": "Identifier", - "start": 17306, - "end": 17313, + "start": 20880, + "end": 20887, "loc": { "start": { - "line": 343, + "line": 416, "column": 49 }, "end": { - "line": 343, + "line": 416, "column": 56 }, "identifierName": "opacity" @@ -8458,29 +8458,29 @@ }, "right": { "type": "MemberExpression", - "start": 17316, - "end": 17329, + "start": 20890, + "end": 20903, "loc": { "start": { - "line": 343, + "line": 416, "column": 59 }, "end": { - "line": 343, + "line": 416, "column": 72 } }, "object": { "type": "Identifier", - "start": 17316, - "end": 17321, + "start": 20890, + "end": 20895, "loc": { "start": { - "line": 343, + "line": 416, "column": 59 }, "end": { - "line": 343, + "line": 416, "column": 64 }, "identifierName": "props" @@ -8489,15 +8489,15 @@ }, "property": { "type": "Identifier", - "start": 17322, - "end": 17329, + "start": 20896, + "end": 20903, "loc": { "start": { - "line": 343, + "line": 416, "column": 65 }, "end": { - "line": 343, + "line": 416, "column": 72 }, "identifierName": "opacity" @@ -8520,29 +8520,29 @@ }, { "type": "ReturnStatement", - "start": 17400, - "end": 17412, + "start": 20974, + "end": 20986, "loc": { "start": { - "line": 347, + "line": 420, "column": 20 }, "end": { - "line": 347, + "line": 420, "column": 32 } }, "argument": { "type": "BooleanLiteral", - "start": 17407, - "end": 17411, + "start": 20981, + "end": 20985, "loc": { "start": { - "line": 347, + "line": 420, "column": 27 }, "end": { - "line": 347, + "line": 420, "column": 31 } }, @@ -8552,15 +8552,15 @@ { "type": "CommentLine", "value": " Continue descending this glTF node subtree", - "start": 17413, - "end": 17458, + "start": 20987, + "end": 21032, "loc": { "start": { - "line": 347, + "line": 420, "column": 33 }, "end": { - "line": 347, + "line": 420, "column": 78 } } @@ -8575,43 +8575,43 @@ }, { "type": "IfStatement", - "start": 17495, - "end": 17761, + "start": 21069, + "end": 21335, "loc": { "start": { - "line": 350, + "line": 423, "column": 16 }, "end": { - "line": 354, + "line": 427, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 17499, - "end": 17509, + "start": 21073, + "end": 21083, "loc": { "start": { - "line": 350, + "line": 423, "column": 20 }, "end": { - "line": 350, + "line": 423, "column": 30 } }, "object": { "type": "Identifier", - "start": 17499, - "end": 17505, + "start": 21073, + "end": 21079, "loc": { "start": { - "line": 350, + "line": 423, "column": 20 }, "end": { - "line": 350, + "line": 423, "column": 26 }, "identifierName": "params" @@ -8620,15 +8620,15 @@ }, "property": { "type": "Identifier", - "start": 17506, - "end": 17509, + "start": 21080, + "end": 21083, "loc": { "start": { - "line": 350, + "line": 423, "column": 27 }, "end": { - "line": 350, + "line": 423, "column": 30 }, "identifierName": "src" @@ -8639,101 +8639,101 @@ }, "consequent": { "type": "BlockStatement", - "start": 17511, - "end": 17632, + "start": 21085, + "end": 21206, "loc": { "start": { - "line": 350, + "line": 423, "column": 32 }, "end": { - "line": 352, + "line": 425, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 17533, - "end": 17614, + "start": 21107, + "end": 21188, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 101 } }, "expression": { "type": "CallExpression", - "start": 17533, - "end": 17613, + "start": 21107, + "end": 21187, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 100 } }, "callee": { "type": "MemberExpression", - "start": 17533, - "end": 17560, + "start": 21107, + "end": 21134, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 17533, - "end": 17555, + "start": 21107, + "end": 21129, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 17533, - "end": 17537, + "start": 21107, + "end": 21111, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 24 } } }, "property": { "type": "Identifier", - "start": 17538, - "end": 17555, + "start": 21112, + "end": 21129, "loc": { "start": { - "line": 351, + "line": 424, "column": 25 }, "end": { - "line": 351, + "line": 424, "column": 42 }, "identifierName": "_sceneModelLoader" @@ -8744,15 +8744,15 @@ }, "property": { "type": "Identifier", - "start": 17556, - "end": 17560, + "start": 21130, + "end": 21134, "loc": { "start": { - "line": 351, + "line": 424, "column": 43 }, "end": { - "line": 351, + "line": 424, "column": 47 }, "identifierName": "load" @@ -8764,44 +8764,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 17561, - "end": 17565, + "start": 21135, + "end": 21139, "loc": { "start": { - "line": 351, + "line": 424, "column": 48 }, "end": { - "line": 351, + "line": 424, "column": 52 } } }, { "type": "MemberExpression", - "start": 17567, - "end": 17577, + "start": 21141, + "end": 21151, "loc": { "start": { - "line": 351, + "line": 424, "column": 54 }, "end": { - "line": 351, + "line": 424, "column": 64 } }, "object": { "type": "Identifier", - "start": 17567, - "end": 17573, + "start": 21141, + "end": 21147, "loc": { "start": { - "line": 351, + "line": 424, "column": 54 }, "end": { - "line": 351, + "line": 424, "column": 60 }, "identifierName": "params" @@ -8810,15 +8810,15 @@ }, "property": { "type": "Identifier", - "start": 17574, - "end": 17577, + "start": 21148, + "end": 21151, "loc": { "start": { - "line": 351, + "line": 424, "column": 61 }, "end": { - "line": 351, + "line": 424, "column": 64 }, "identifierName": "src" @@ -8829,15 +8829,15 @@ }, { "type": "Identifier", - "start": 17579, - "end": 17592, + "start": 21153, + "end": 21166, "loc": { "start": { - "line": 351, + "line": 424, "column": 66 }, "end": { - "line": 351, + "line": 424, "column": 79 }, "identifierName": "metaModelJSON" @@ -8846,15 +8846,15 @@ }, { "type": "Identifier", - "start": 17594, - "end": 17600, + "start": 21168, + "end": 21174, "loc": { "start": { - "line": 351, + "line": 424, "column": 81 }, "end": { - "line": 351, + "line": 424, "column": 87 }, "identifierName": "params" @@ -8863,15 +8863,15 @@ }, { "type": "Identifier", - "start": 17602, - "end": 17612, + "start": 21176, + "end": 21186, "loc": { "start": { - "line": 351, + "line": 424, "column": 89 }, "end": { - "line": 351, + "line": 424, "column": 99 }, "identifierName": "sceneModel" @@ -8886,101 +8886,101 @@ }, "alternate": { "type": "BlockStatement", - "start": 17638, - "end": 17761, + "start": 21212, + "end": 21335, "loc": { "start": { - "line": 352, + "line": 425, "column": 23 }, "end": { - "line": 354, + "line": 427, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 17660, - "end": 17743, + "start": 21234, + "end": 21317, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 103 } }, "expression": { "type": "CallExpression", - "start": 17660, - "end": 17742, + "start": 21234, + "end": 21316, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 102 } }, "callee": { "type": "MemberExpression", - "start": 17660, - "end": 17688, + "start": 21234, + "end": 21262, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 17660, - "end": 17682, + "start": 21234, + "end": 21256, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 17660, - "end": 17664, + "start": 21234, + "end": 21238, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 24 } } }, "property": { "type": "Identifier", - "start": 17665, - "end": 17682, + "start": 21239, + "end": 21256, "loc": { "start": { - "line": 353, + "line": 426, "column": 25 }, "end": { - "line": 353, + "line": 426, "column": 42 }, "identifierName": "_sceneModelLoader" @@ -8991,15 +8991,15 @@ }, "property": { "type": "Identifier", - "start": 17683, - "end": 17688, + "start": 21257, + "end": 21262, "loc": { "start": { - "line": 353, + "line": 426, "column": 43 }, "end": { - "line": 353, + "line": 426, "column": 48 }, "identifierName": "parse" @@ -9011,44 +9011,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 17689, - "end": 17693, + "start": 21263, + "end": 21267, "loc": { "start": { - "line": 353, + "line": 426, "column": 49 }, "end": { - "line": 353, + "line": 426, "column": 53 } } }, { "type": "MemberExpression", - "start": 17695, - "end": 17706, + "start": 21269, + "end": 21280, "loc": { "start": { - "line": 353, + "line": 426, "column": 55 }, "end": { - "line": 353, + "line": 426, "column": 66 } }, "object": { "type": "Identifier", - "start": 17695, - "end": 17701, + "start": 21269, + "end": 21275, "loc": { "start": { - "line": 353, + "line": 426, "column": 55 }, "end": { - "line": 353, + "line": 426, "column": 61 }, "identifierName": "params" @@ -9057,15 +9057,15 @@ }, "property": { "type": "Identifier", - "start": 17702, - "end": 17706, + "start": 21276, + "end": 21280, "loc": { "start": { - "line": 353, + "line": 426, "column": 62 }, "end": { - "line": 353, + "line": 426, "column": 66 }, "identifierName": "gltf" @@ -9076,15 +9076,15 @@ }, { "type": "Identifier", - "start": 17708, - "end": 17721, + "start": 21282, + "end": 21295, "loc": { "start": { - "line": 353, + "line": 426, "column": 68 }, "end": { - "line": 353, + "line": 426, "column": 81 }, "identifierName": "metaModelJSON" @@ -9093,15 +9093,15 @@ }, { "type": "Identifier", - "start": 17723, - "end": 17729, + "start": 21297, + "end": 21303, "loc": { "start": { - "line": 353, + "line": 426, "column": 83 }, "end": { - "line": 353, + "line": 426, "column": 89 }, "identifierName": "params" @@ -9110,15 +9110,15 @@ }, { "type": "Identifier", - "start": 17731, - "end": 17741, + "start": 21305, + "end": 21315, "loc": { "start": { - "line": 353, + "line": 426, "column": 91 }, "end": { - "line": 353, + "line": 426, "column": 101 }, "identifierName": "sceneModel" @@ -9142,43 +9142,43 @@ }, { "type": "IfStatement", - "start": 17790, - "end": 18519, + "start": 21364, + "end": 22093, "loc": { "start": { - "line": 357, + "line": 430, "column": 12 }, "end": { - "line": 377, + "line": 450, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 17794, - "end": 17813, + "start": 21368, + "end": 21387, "loc": { "start": { - "line": 357, + "line": 430, "column": 16 }, "end": { - "line": 357, + "line": 430, "column": 35 } }, "object": { "type": "Identifier", - "start": 17794, - "end": 17800, + "start": 21368, + "end": 21374, "loc": { "start": { - "line": 357, + "line": 430, "column": 16 }, "end": { - "line": 357, + "line": 430, "column": 22 }, "identifierName": "params" @@ -9187,15 +9187,15 @@ }, "property": { "type": "Identifier", - "start": 17801, - "end": 17813, + "start": 21375, + "end": 21387, "loc": { "start": { - "line": 357, + "line": 430, "column": 23 }, "end": { - "line": 357, + "line": 430, "column": 35 }, "identifierName": "metaModelSrc" @@ -9206,59 +9206,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 17815, - "end": 18411, + "start": 21389, + "end": 21985, "loc": { "start": { - "line": 357, + "line": 430, "column": 37 }, "end": { - "line": 374, + "line": 447, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 17834, - "end": 17875, + "start": 21408, + "end": 21449, "loc": { "start": { - "line": 359, + "line": 432, "column": 16 }, "end": { - "line": 359, + "line": 432, "column": 57 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 17840, - "end": 17874, + "start": 21414, + "end": 21448, "loc": { "start": { - "line": 359, + "line": 432, "column": 22 }, "end": { - "line": 359, + "line": 432, "column": 56 } }, "id": { "type": "Identifier", - "start": 17840, - "end": 17852, + "start": 21414, + "end": 21426, "loc": { "start": { - "line": 359, + "line": 432, "column": 22 }, "end": { - "line": 359, + "line": 432, "column": 34 }, "identifierName": "metaModelSrc" @@ -9267,29 +9267,29 @@ }, "init": { "type": "MemberExpression", - "start": 17855, - "end": 17874, + "start": 21429, + "end": 21448, "loc": { "start": { - "line": 359, + "line": 432, "column": 37 }, "end": { - "line": 359, + "line": 432, "column": 56 } }, "object": { "type": "Identifier", - "start": 17855, - "end": 17861, + "start": 21429, + "end": 21435, "loc": { "start": { - "line": 359, + "line": 432, "column": 37 }, "end": { - "line": 359, + "line": 432, "column": 43 }, "identifierName": "params" @@ -9298,15 +9298,15 @@ }, "property": { "type": "Identifier", - "start": 17862, - "end": 17874, + "start": 21436, + "end": 21448, "loc": { "start": { - "line": 359, + "line": 432, "column": 44 }, "end": { - "line": 359, + "line": 432, "column": 56 }, "identifierName": "metaModelSrc" @@ -9321,29 +9321,29 @@ }, { "type": "ExpressionStatement", - "start": 17893, - "end": 17938, + "start": 21467, + "end": 21512, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 61 } }, "expression": { "type": "UpdateExpression", - "start": 17893, - "end": 17937, + "start": 21467, + "end": 21511, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 60 } }, @@ -9351,100 +9351,100 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 17893, - "end": 17935, + "start": 21467, + "end": 21509, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 17893, - "end": 17925, + "start": 21467, + "end": 21499, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 17893, - "end": 17917, + "start": 21467, + "end": 21491, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 17893, - "end": 17910, + "start": 21467, + "end": 21484, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 17893, - "end": 17904, + "start": 21467, + "end": 21478, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 17893, - "end": 17897, + "start": 21467, + "end": 21471, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 20 } } }, "property": { "type": "Identifier", - "start": 17898, - "end": 17904, + "start": 21472, + "end": 21478, "loc": { "start": { - "line": 361, + "line": 434, "column": 21 }, "end": { - "line": 361, + "line": 434, "column": 27 }, "identifierName": "viewer" @@ -9455,15 +9455,15 @@ }, "property": { "type": "Identifier", - "start": 17905, - "end": 17910, + "start": 21479, + "end": 21484, "loc": { "start": { - "line": 361, + "line": 434, "column": 28 }, "end": { - "line": 361, + "line": 434, "column": 33 }, "identifierName": "scene" @@ -9474,15 +9474,15 @@ }, "property": { "type": "Identifier", - "start": 17911, - "end": 17917, + "start": 21485, + "end": 21491, "loc": { "start": { - "line": 361, + "line": 434, "column": 34 }, "end": { - "line": 361, + "line": 434, "column": 40 }, "identifierName": "canvas" @@ -9493,15 +9493,15 @@ }, "property": { "type": "Identifier", - "start": 17918, - "end": 17925, + "start": 21492, + "end": 21499, "loc": { "start": { - "line": 361, + "line": 434, "column": 41 }, "end": { - "line": 361, + "line": 434, "column": 48 }, "identifierName": "spinner" @@ -9512,15 +9512,15 @@ }, "property": { "type": "Identifier", - "start": 17926, - "end": 17935, + "start": 21500, + "end": 21509, "loc": { "start": { - "line": 361, + "line": 434, "column": 49 }, "end": { - "line": 361, + "line": 434, "column": 58 }, "identifierName": "processes" @@ -9533,86 +9533,86 @@ }, { "type": "ExpressionStatement", - "start": 17956, - "end": 18396, + "start": 21530, + "end": 21970, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 372, + "line": 445, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 17956, - "end": 18395, + "start": 21530, + "end": 21969, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 372, + "line": 445, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 17956, - "end": 17985, + "start": 21530, + "end": 21559, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 363, + "line": 436, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 17956, - "end": 17972, + "start": 21530, + "end": 21546, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 363, + "line": 436, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 17956, - "end": 17960, + "start": 21530, + "end": 21534, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 363, + "line": 436, "column": 20 } } }, "property": { "type": "Identifier", - "start": 17961, - "end": 17972, + "start": 21535, + "end": 21546, "loc": { "start": { - "line": 363, + "line": 436, "column": 21 }, "end": { - "line": 363, + "line": 436, "column": 32 }, "identifierName": "_dataSource" @@ -9623,15 +9623,15 @@ }, "property": { "type": "Identifier", - "start": 17973, - "end": 17985, + "start": 21547, + "end": 21559, "loc": { "start": { - "line": 363, + "line": 436, "column": 33 }, "end": { - "line": 363, + "line": 436, "column": 45 }, "identifierName": "getMetaModel" @@ -9643,15 +9643,15 @@ "arguments": [ { "type": "Identifier", - "start": 17986, - "end": 17998, + "start": 21560, + "end": 21572, "loc": { "start": { - "line": 363, + "line": 436, "column": 46 }, "end": { - "line": 363, + "line": 436, "column": 58 }, "identifierName": "metaModelSrc" @@ -9660,15 +9660,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 18000, - "end": 18164, + "start": 21574, + "end": 21738, "loc": { "start": { - "line": 363, + "line": 436, "column": 60 }, "end": { - "line": 369, + "line": 442, "column": 17 } }, @@ -9679,15 +9679,15 @@ "params": [ { "type": "Identifier", - "start": 18001, - "end": 18014, + "start": 21575, + "end": 21588, "loc": { "start": { - "line": 363, + "line": 436, "column": 61 }, "end": { - "line": 363, + "line": 436, "column": 74 }, "identifierName": "metaModelJSON" @@ -9697,44 +9697,44 @@ ], "body": { "type": "BlockStatement", - "start": 18019, - "end": 18164, + "start": 21593, + "end": 21738, "loc": { "start": { - "line": 363, + "line": 436, "column": 79 }, "end": { - "line": 369, + "line": 442, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 18042, - "end": 18087, + "start": 21616, + "end": 21661, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 65 } }, "expression": { "type": "UpdateExpression", - "start": 18042, - "end": 18086, + "start": 21616, + "end": 21660, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 64 } }, @@ -9742,100 +9742,100 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 18042, - "end": 18084, + "start": 21616, + "end": 21658, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 18042, - "end": 18074, + "start": 21616, + "end": 21648, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 18042, - "end": 18066, + "start": 21616, + "end": 21640, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 18042, - "end": 18059, + "start": 21616, + "end": 21633, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 18042, - "end": 18053, + "start": 21616, + "end": 21627, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 18042, - "end": 18046, + "start": 21616, + "end": 21620, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 24 } } }, "property": { "type": "Identifier", - "start": 18047, - "end": 18053, + "start": 21621, + "end": 21627, "loc": { "start": { - "line": 365, + "line": 438, "column": 25 }, "end": { - "line": 365, + "line": 438, "column": 31 }, "identifierName": "viewer" @@ -9846,15 +9846,15 @@ }, "property": { "type": "Identifier", - "start": 18054, - "end": 18059, + "start": 21628, + "end": 21633, "loc": { "start": { - "line": 365, + "line": 438, "column": 32 }, "end": { - "line": 365, + "line": 438, "column": 37 }, "identifierName": "scene" @@ -9865,15 +9865,15 @@ }, "property": { "type": "Identifier", - "start": 18060, - "end": 18066, + "start": 21634, + "end": 21640, "loc": { "start": { - "line": 365, + "line": 438, "column": 38 }, "end": { - "line": 365, + "line": 438, "column": 44 }, "identifierName": "canvas" @@ -9884,15 +9884,15 @@ }, "property": { "type": "Identifier", - "start": 18067, - "end": 18074, + "start": 21641, + "end": 21648, "loc": { "start": { - "line": 365, + "line": 438, "column": 45 }, "end": { - "line": 365, + "line": 438, "column": 52 }, "identifierName": "spinner" @@ -9903,15 +9903,15 @@ }, "property": { "type": "Identifier", - "start": 18075, - "end": 18084, + "start": 21649, + "end": 21658, "loc": { "start": { - "line": 365, + "line": 438, "column": 53 }, "end": { - "line": 365, + "line": 438, "column": 62 }, "identifierName": "processes" @@ -9924,43 +9924,43 @@ }, { "type": "ExpressionStatement", - "start": 18109, - "end": 18145, + "start": 21683, + "end": 21719, "loc": { "start": { - "line": 367, + "line": 440, "column": 20 }, "end": { - "line": 367, + "line": 440, "column": 56 } }, "expression": { "type": "CallExpression", - "start": 18109, - "end": 18144, + "start": 21683, + "end": 21718, "loc": { "start": { - "line": 367, + "line": 440, "column": 20 }, "end": { - "line": 367, + "line": 440, "column": 55 } }, "callee": { "type": "Identifier", - "start": 18109, - "end": 18129, + "start": 21683, + "end": 21703, "loc": { "start": { - "line": 367, + "line": 440, "column": 20 }, "end": { - "line": 367, + "line": 440, "column": 40 }, "identifierName": "processMetaModelJSON" @@ -9970,15 +9970,15 @@ "arguments": [ { "type": "Identifier", - "start": 18130, - "end": 18143, + "start": 21704, + "end": 21717, "loc": { "start": { - "line": 367, + "line": 440, "column": 41 }, "end": { - "line": 367, + "line": 440, "column": 54 }, "identifierName": "metaModelJSON" @@ -9994,15 +9994,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 18166, - "end": 18394, + "start": 21740, + "end": 21968, "loc": { "start": { - "line": 369, + "line": 442, "column": 19 }, "end": { - "line": 372, + "line": 445, "column": 17 } }, @@ -10013,15 +10013,15 @@ "params": [ { "type": "Identifier", - "start": 18167, - "end": 18173, + "start": 21741, + "end": 21747, "loc": { "start": { - "line": 369, + "line": 442, "column": 20 }, "end": { - "line": 369, + "line": 442, "column": 26 }, "identifierName": "errMsg" @@ -10031,87 +10031,87 @@ ], "body": { "type": "BlockStatement", - "start": 18178, - "end": 18394, + "start": 21752, + "end": 21968, "loc": { "start": { - "line": 369, + "line": 442, "column": 31 }, "end": { - "line": 372, + "line": 445, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 18200, - "end": 18310, + "start": 21774, + "end": 21884, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 130 } }, "expression": { "type": "CallExpression", - "start": 18200, - "end": 18309, + "start": 21774, + "end": 21883, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 129 } }, "callee": { "type": "MemberExpression", - "start": 18200, - "end": 18210, + "start": 21774, + "end": 21784, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 18200, - "end": 18204, + "start": 21774, + "end": 21778, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 24 } } }, "property": { "type": "Identifier", - "start": 18205, - "end": 18210, + "start": 21779, + "end": 21784, "loc": { "start": { - "line": 370, + "line": 443, "column": 25 }, "end": { - "line": 370, + "line": 443, "column": 30 }, "identifierName": "error" @@ -10123,30 +10123,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 18211, - "end": 18308, + "start": 21785, + "end": 21882, "loc": { "start": { - "line": 370, + "line": 443, "column": 31 }, "end": { - "line": 370, + "line": 443, "column": 128 } }, "expressions": [ { "type": "Identifier", - "start": 18263, - "end": 18270, + "start": 21837, + "end": 21844, "loc": { "start": { - "line": 370, + "line": 443, "column": 83 }, "end": { - "line": 370, + "line": 443, "column": 90 }, "identifierName": "modelId" @@ -10155,15 +10155,15 @@ }, { "type": "Identifier", - "start": 18281, - "end": 18293, + "start": 21855, + "end": 21867, "loc": { "start": { - "line": 370, + "line": 443, "column": 101 }, "end": { - "line": 370, + "line": 443, "column": 113 }, "identifierName": "metaModelSrc" @@ -10172,15 +10172,15 @@ }, { "type": "Identifier", - "start": 18300, - "end": 18306, + "start": 21874, + "end": 21880, "loc": { "start": { - "line": 370, + "line": 443, "column": 120 }, "end": { - "line": 370, + "line": 443, "column": 126 }, "identifierName": "errMsg" @@ -10191,15 +10191,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 18212, - "end": 18261, + "start": 21786, + "end": 21835, "loc": { "start": { - "line": 370, + "line": 443, "column": 32 }, "end": { - "line": 370, + "line": 443, "column": 81 } }, @@ -10211,15 +10211,15 @@ }, { "type": "TemplateElement", - "start": 18271, - "end": 18279, + "start": 21845, + "end": 21853, "loc": { "start": { - "line": 370, + "line": 443, "column": 91 }, "end": { - "line": 370, + "line": 443, "column": 99 } }, @@ -10231,15 +10231,15 @@ }, { "type": "TemplateElement", - "start": 18294, - "end": 18298, + "start": 21868, + "end": 21872, "loc": { "start": { - "line": 370, + "line": 443, "column": 114 }, "end": { - "line": 370, + "line": 443, "column": 118 } }, @@ -10251,15 +10251,15 @@ }, { "type": "TemplateElement", - "start": 18307, - "end": 18307, + "start": 21881, + "end": 21881, "loc": { "start": { - "line": 370, + "line": 443, "column": 127 }, "end": { - "line": 370, + "line": 443, "column": 127 } }, @@ -10276,29 +10276,29 @@ }, { "type": "ExpressionStatement", - "start": 18331, - "end": 18376, + "start": 21905, + "end": 21950, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 65 } }, "expression": { "type": "UpdateExpression", - "start": 18331, - "end": 18375, + "start": 21905, + "end": 21949, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 64 } }, @@ -10306,100 +10306,100 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 18331, - "end": 18373, + "start": 21905, + "end": 21947, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 18331, - "end": 18363, + "start": 21905, + "end": 21937, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 18331, - "end": 18355, + "start": 21905, + "end": 21929, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 18331, - "end": 18348, + "start": 21905, + "end": 21922, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 18331, - "end": 18342, + "start": 21905, + "end": 21916, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 18331, - "end": 18335, + "start": 21905, + "end": 21909, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 24 } } }, "property": { "type": "Identifier", - "start": 18336, - "end": 18342, + "start": 21910, + "end": 21916, "loc": { "start": { - "line": 371, + "line": 444, "column": 25 }, "end": { - "line": 371, + "line": 444, "column": 31 }, "identifierName": "viewer" @@ -10410,15 +10410,15 @@ }, "property": { "type": "Identifier", - "start": 18343, - "end": 18348, + "start": 21917, + "end": 21922, "loc": { "start": { - "line": 371, + "line": 444, "column": 32 }, "end": { - "line": 371, + "line": 444, "column": 37 }, "identifierName": "scene" @@ -10429,15 +10429,15 @@ }, "property": { "type": "Identifier", - "start": 18349, - "end": 18355, + "start": 21923, + "end": 21929, "loc": { "start": { - "line": 371, + "line": 444, "column": 38 }, "end": { - "line": 371, + "line": 444, "column": 44 }, "identifierName": "canvas" @@ -10448,15 +10448,15 @@ }, "property": { "type": "Identifier", - "start": 18356, - "end": 18363, + "start": 21930, + "end": 21937, "loc": { "start": { - "line": 371, + "line": 444, "column": 45 }, "end": { - "line": 371, + "line": 444, "column": 52 }, "identifierName": "spinner" @@ -10467,15 +10467,15 @@ }, "property": { "type": "Identifier", - "start": 18364, - "end": 18373, + "start": 21938, + "end": 21947, "loc": { "start": { - "line": 371, + "line": 444, "column": 53 }, "end": { - "line": 371, + "line": 444, "column": 62 }, "identifierName": "processes" @@ -10498,43 +10498,43 @@ }, "alternate": { "type": "IfStatement", - "start": 18417, - "end": 18519, + "start": 21991, + "end": 22093, "loc": { "start": { - "line": 374, + "line": 447, "column": 19 }, "end": { - "line": 377, + "line": 450, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 18421, - "end": 18441, + "start": 21995, + "end": 22015, "loc": { "start": { - "line": 374, + "line": 447, "column": 23 }, "end": { - "line": 374, + "line": 447, "column": 43 } }, "object": { "type": "Identifier", - "start": 18421, - "end": 18427, + "start": 21995, + "end": 22001, "loc": { "start": { - "line": 374, + "line": 447, "column": 23 }, "end": { - "line": 374, + "line": 447, "column": 29 }, "identifierName": "params" @@ -10543,15 +10543,15 @@ }, "property": { "type": "Identifier", - "start": 18428, - "end": 18441, + "start": 22002, + "end": 22015, "loc": { "start": { - "line": 374, + "line": 447, "column": 30 }, "end": { - "line": 374, + "line": 447, "column": 43 }, "identifierName": "metaModelJSON" @@ -10562,58 +10562,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 18443, - "end": 18519, + "start": 22017, + "end": 22093, "loc": { "start": { - "line": 374, + "line": 447, "column": 45 }, "end": { - "line": 377, + "line": 450, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 18462, - "end": 18505, + "start": 22036, + "end": 22079, "loc": { "start": { - "line": 376, + "line": 449, "column": 16 }, "end": { - "line": 376, + "line": 449, "column": 59 } }, "expression": { "type": "CallExpression", - "start": 18462, - "end": 18504, + "start": 22036, + "end": 22078, "loc": { "start": { - "line": 376, + "line": 449, "column": 16 }, "end": { - "line": 376, + "line": 449, "column": 58 } }, "callee": { "type": "Identifier", - "start": 18462, - "end": 18482, + "start": 22036, + "end": 22056, "loc": { "start": { - "line": 376, + "line": 449, "column": 16 }, "end": { - "line": 376, + "line": 449, "column": 36 }, "identifierName": "processMetaModelJSON" @@ -10623,29 +10623,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 18483, - "end": 18503, + "start": 22057, + "end": 22077, "loc": { "start": { - "line": 376, + "line": 449, "column": 37 }, "end": { - "line": 376, + "line": 449, "column": 57 } }, "object": { "type": "Identifier", - "start": 18483, - "end": 18489, + "start": 22057, + "end": 22063, "loc": { "start": { - "line": 376, + "line": 449, "column": 37 }, "end": { - "line": 376, + "line": 449, "column": 43 }, "identifierName": "params" @@ -10654,15 +10654,15 @@ }, "property": { "type": "Identifier", - "start": 18490, - "end": 18503, + "start": 22064, + "end": 22077, "loc": { "start": { - "line": 376, + "line": 449, "column": 44 }, "end": { - "line": 376, + "line": 449, "column": 57 }, "identifierName": "metaModelJSON" @@ -10685,73 +10685,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 18536, - "end": 19367, + "start": 22110, + "end": 22941, "loc": { "start": { - "line": 379, + "line": 452, "column": 15 }, "end": { - "line": 405, + "line": 478, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 18551, - "end": 19110, + "start": 22125, + "end": 22684, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 397, + "line": 470, "column": 14 } }, "expression": { "type": "AssignmentExpression", - "start": 18551, - "end": 19109, + "start": 22125, + "end": 22683, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 397, + "line": 470, "column": 13 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 18551, - "end": 18572, + "start": 22125, + "end": 22146, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 381, + "line": 454, "column": 33 } }, "object": { "type": "Identifier", - "start": 18551, - "end": 18557, + "start": 22125, + "end": 22131, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 381, + "line": 454, "column": 18 }, "identifierName": "params" @@ -10760,15 +10760,15 @@ }, "property": { "type": "Identifier", - "start": 18558, - "end": 18572, + "start": 22132, + "end": 22146, "loc": { "start": { - "line": 381, + "line": 454, "column": 19 }, "end": { - "line": 381, + "line": 454, "column": 33 }, "identifierName": "handleGLTFNode" @@ -10779,15 +10779,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 18575, - "end": 19109, + "start": 22149, + "end": 22683, "loc": { "start": { - "line": 381, + "line": 454, "column": 36 }, "end": { - "line": 397, + "line": 470, "column": 13 } }, @@ -10798,15 +10798,15 @@ "params": [ { "type": "Identifier", - "start": 18576, - "end": 18583, + "start": 22150, + "end": 22157, "loc": { "start": { - "line": 381, + "line": 454, "column": 37 }, "end": { - "line": 381, + "line": 454, "column": 44 }, "identifierName": "modelId" @@ -10815,15 +10815,15 @@ }, { "type": "Identifier", - "start": 18585, - "end": 18593, + "start": 22159, + "end": 22167, "loc": { "start": { - "line": 381, + "line": 454, "column": 46 }, "end": { - "line": 381, + "line": 454, "column": 54 }, "identifierName": "glTFNode" @@ -10832,15 +10832,15 @@ }, { "type": "Identifier", - "start": 18595, - "end": 18602, + "start": 22169, + "end": 22176, "loc": { "start": { - "line": 381, + "line": 454, "column": 56 }, "end": { - "line": 381, + "line": 454, "column": 63 }, "identifierName": "actions" @@ -10850,59 +10850,59 @@ ], "body": { "type": "BlockStatement", - "start": 18607, - "end": 19109, + "start": 22181, + "end": 22683, "loc": { "start": { - "line": 381, + "line": 454, "column": 68 }, "end": { - "line": 397, + "line": 470, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 18626, - "end": 18653, + "start": 22200, + "end": 22227, "loc": { "start": { - "line": 383, + "line": 456, "column": 16 }, "end": { - "line": 383, + "line": 456, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18632, - "end": 18652, + "start": 22206, + "end": 22226, "loc": { "start": { - "line": 383, + "line": 456, "column": 22 }, "end": { - "line": 383, + "line": 456, "column": 42 } }, "id": { "type": "Identifier", - "start": 18632, - "end": 18636, + "start": 22206, + "end": 22210, "loc": { "start": { - "line": 383, + "line": 456, "column": 22 }, "end": { - "line": 383, + "line": 456, "column": 26 }, "identifierName": "name" @@ -10911,29 +10911,29 @@ }, "init": { "type": "MemberExpression", - "start": 18639, - "end": 18652, + "start": 22213, + "end": 22226, "loc": { "start": { - "line": 383, + "line": 456, "column": 29 }, "end": { - "line": 383, + "line": 456, "column": 42 } }, "object": { "type": "Identifier", - "start": 18639, - "end": 18647, + "start": 22213, + "end": 22221, "loc": { "start": { - "line": 383, + "line": 456, "column": 29 }, "end": { - "line": 383, + "line": 456, "column": 37 }, "identifierName": "glTFNode" @@ -10942,15 +10942,15 @@ }, "property": { "type": "Identifier", - "start": 18648, - "end": 18652, + "start": 22222, + "end": 22226, "loc": { "start": { - "line": 383, + "line": 456, "column": 38 }, "end": { - "line": 383, + "line": 456, "column": 42 }, "identifierName": "name" @@ -10965,29 +10965,29 @@ }, { "type": "IfStatement", - "start": 18671, - "end": 18775, + "start": 22245, + "end": 22349, "loc": { "start": { - "line": 385, + "line": 458, "column": 16 }, "end": { - "line": 387, + "line": 460, "column": 17 } }, "test": { "type": "UnaryExpression", - "start": 18675, - "end": 18680, + "start": 22249, + "end": 22254, "loc": { "start": { - "line": 385, + "line": 458, "column": 20 }, "end": { - "line": 385, + "line": 458, "column": 25 } }, @@ -10995,15 +10995,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 18676, - "end": 18680, + "start": 22250, + "end": 22254, "loc": { "start": { - "line": 385, + "line": 458, "column": 21 }, "end": { - "line": 385, + "line": 458, "column": 25 }, "identifierName": "name" @@ -11016,44 +11016,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 18682, - "end": 18775, + "start": 22256, + "end": 22349, "loc": { "start": { - "line": 385, + "line": 458, "column": 27 }, "end": { - "line": 387, + "line": 460, "column": 17 } }, "body": [ { "type": "ReturnStatement", - "start": 18704, - "end": 18716, + "start": 22278, + "end": 22290, "loc": { "start": { - "line": 386, + "line": 459, "column": 20 }, "end": { - "line": 386, + "line": 459, "column": 32 } }, "argument": { "type": "BooleanLiteral", - "start": 18711, - "end": 18715, + "start": 22285, + "end": 22289, "loc": { "start": { - "line": 386, + "line": 459, "column": 27 }, "end": { - "line": 386, + "line": 459, "column": 31 } }, @@ -11063,15 +11063,15 @@ { "type": "CommentLine", "value": " Continue descending this node subtree", - "start": 18717, - "end": 18757, + "start": 22291, + "end": 22331, "loc": { "start": { - "line": 386, + "line": 459, "column": 33 }, "end": { - "line": 386, + "line": 459, "column": 73 } } @@ -11085,44 +11085,44 @@ }, { "type": "VariableDeclaration", - "start": 18793, - "end": 18809, + "start": 22367, + "end": 22383, "loc": { "start": { - "line": 389, + "line": 462, "column": 16 }, "end": { - "line": 389, + "line": 462, "column": 32 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18799, - "end": 18808, + "start": 22373, + "end": 22382, "loc": { "start": { - "line": 389, + "line": 462, "column": 22 }, "end": { - "line": 389, + "line": 462, "column": 31 } }, "id": { "type": "Identifier", - "start": 18799, - "end": 18801, + "start": 22373, + "end": 22375, "loc": { "start": { - "line": 389, + "line": 462, "column": 22 }, "end": { - "line": 389, + "line": 462, "column": 24 }, "identifierName": "id" @@ -11131,15 +11131,15 @@ }, "init": { "type": "Identifier", - "start": 18804, - "end": 18808, + "start": 22378, + "end": 22382, "loc": { "start": { - "line": 389, + "line": 462, "column": 27 }, "end": { - "line": 389, + "line": 462, "column": 31 }, "identifierName": "name" @@ -11152,58 +11152,58 @@ }, { "type": "ExpressionStatement", - "start": 18827, - "end": 19019, + "start": 22401, + "end": 22593, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 394, + "line": 467, "column": 18 } }, "expression": { "type": "AssignmentExpression", - "start": 18827, - "end": 19018, + "start": 22401, + "end": 22592, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 394, + "line": 467, "column": 17 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 18827, - "end": 18847, + "start": 22401, + "end": 22421, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 391, + "line": 464, "column": 36 } }, "object": { "type": "Identifier", - "start": 18827, - "end": 18834, + "start": 22401, + "end": 22408, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 391, + "line": 464, "column": 23 }, "identifierName": "actions" @@ -11212,15 +11212,15 @@ }, "property": { "type": "Identifier", - "start": 18835, - "end": 18847, + "start": 22409, + "end": 22421, "loc": { "start": { - "line": 391, + "line": 464, "column": 24 }, "end": { - "line": 391, + "line": 464, "column": 36 }, "identifierName": "createEntity" @@ -11231,30 +11231,30 @@ }, "right": { "type": "ObjectExpression", - "start": 18850, - "end": 19018, + "start": 22424, + "end": 22592, "loc": { "start": { - "line": 391, + "line": 464, "column": 39 }, "end": { - "line": 394, + "line": 467, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 18917, - "end": 18923, + "start": 22491, + "end": 22497, "loc": { "start": { - "line": 392, + "line": 465, "column": 20 }, "end": { - "line": 392, + "line": 465, "column": 26 } }, @@ -11263,15 +11263,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18917, - "end": 18919, + "start": 22491, + "end": 22493, "loc": { "start": { - "line": 392, + "line": 465, "column": 20 }, "end": { - "line": 392, + "line": 465, "column": 22 }, "identifierName": "id" @@ -11281,15 +11281,15 @@ }, "value": { "type": "Identifier", - "start": 18921, - "end": 18923, + "start": 22495, + "end": 22497, "loc": { "start": { - "line": 392, + "line": 465, "column": 24 }, "end": { - "line": 392, + "line": 465, "column": 26 }, "identifierName": "id" @@ -11300,15 +11300,15 @@ { "type": "CommentLine", "value": " Create an Entity for this glTF scene node", - "start": 18852, - "end": 18896, + "start": 22426, + "end": 22470, "loc": { "start": { - "line": 391, + "line": 464, "column": 41 }, "end": { - "line": 391, + "line": 464, "column": 85 } } @@ -11317,15 +11317,15 @@ }, { "type": "ObjectProperty", - "start": 18945, - "end": 18959, + "start": 22519, + "end": 22533, "loc": { "start": { - "line": 393, + "line": 466, "column": 20 }, "end": { - "line": 393, + "line": 466, "column": 34 } }, @@ -11334,15 +11334,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18945, - "end": 18953, + "start": 22519, + "end": 22527, "loc": { "start": { - "line": 393, + "line": 466, "column": 20 }, "end": { - "line": 393, + "line": 466, "column": 28 }, "identifierName": "isObject" @@ -11351,15 +11351,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 18955, - "end": 18959, + "start": 22529, + "end": 22533, "loc": { "start": { - "line": 393, + "line": 466, "column": 30 }, "end": { - "line": 393, + "line": 466, "column": 34 } }, @@ -11371,15 +11371,15 @@ { "type": "CommentLine", "value": " Registers the Entity in Scene#objects", - "start": 18960, - "end": 19000, + "start": 22534, + "end": 22574, "loc": { "start": { - "line": 393, + "line": 466, "column": 35 }, "end": { - "line": 393, + "line": 466, "column": 75 } } @@ -11392,29 +11392,29 @@ }, { "type": "ReturnStatement", - "start": 19037, - "end": 19049, + "start": 22611, + "end": 22623, "loc": { "start": { - "line": 396, + "line": 469, "column": 16 }, "end": { - "line": 396, + "line": 469, "column": 28 } }, "argument": { "type": "BooleanLiteral", - "start": 19044, - "end": 19048, + "start": 22618, + "end": 22622, "loc": { "start": { - "line": 396, + "line": 469, "column": 23 }, "end": { - "line": 396, + "line": 469, "column": 27 } }, @@ -11424,15 +11424,15 @@ { "type": "CommentLine", "value": " Continue descending this glTF node subtree", - "start": 19050, - "end": 19095, + "start": 22624, + "end": 22669, "loc": { "start": { - "line": 396, + "line": 469, "column": 29 }, "end": { - "line": 396, + "line": 469, "column": 74 } } @@ -11447,43 +11447,43 @@ }, { "type": "IfStatement", - "start": 19125, - "end": 19357, + "start": 22699, + "end": 22931, "loc": { "start": { - "line": 400, + "line": 473, "column": 12 }, "end": { - "line": 404, + "line": 477, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 19129, - "end": 19139, + "start": 22703, + "end": 22713, "loc": { "start": { - "line": 400, + "line": 473, "column": 16 }, "end": { - "line": 400, + "line": 473, "column": 26 } }, "object": { "type": "Identifier", - "start": 19129, - "end": 19135, + "start": 22703, + "end": 22709, "loc": { "start": { - "line": 400, + "line": 473, "column": 16 }, "end": { - "line": 400, + "line": 473, "column": 22 }, "identifierName": "params" @@ -11492,15 +11492,15 @@ }, "property": { "type": "Identifier", - "start": 19136, - "end": 19139, + "start": 22710, + "end": 22713, "loc": { "start": { - "line": 400, + "line": 473, "column": 23 }, "end": { - "line": 400, + "line": 473, "column": 26 }, "identifierName": "src" @@ -11511,101 +11511,101 @@ }, "consequent": { "type": "BlockStatement", - "start": 19141, - "end": 19245, + "start": 22715, + "end": 22819, "loc": { "start": { - "line": 400, + "line": 473, "column": 28 }, "end": { - "line": 402, + "line": 475, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 19159, - "end": 19231, + "start": 22733, + "end": 22805, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 88 } }, "expression": { "type": "CallExpression", - "start": 19159, - "end": 19230, + "start": 22733, + "end": 22804, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 87 } }, "callee": { "type": "MemberExpression", - "start": 19159, - "end": 19186, + "start": 22733, + "end": 22760, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 19159, - "end": 19181, + "start": 22733, + "end": 22755, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 19159, - "end": 19163, + "start": 22733, + "end": 22737, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 20 } } }, "property": { "type": "Identifier", - "start": 19164, - "end": 19181, + "start": 22738, + "end": 22755, "loc": { "start": { - "line": 401, + "line": 474, "column": 21 }, "end": { - "line": 401, + "line": 474, "column": 38 }, "identifierName": "_sceneModelLoader" @@ -11616,15 +11616,15 @@ }, "property": { "type": "Identifier", - "start": 19182, - "end": 19186, + "start": 22756, + "end": 22760, "loc": { "start": { - "line": 401, + "line": 474, "column": 39 }, "end": { - "line": 401, + "line": 474, "column": 43 }, "identifierName": "load" @@ -11636,44 +11636,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 19187, - "end": 19191, + "start": 22761, + "end": 22765, "loc": { "start": { - "line": 401, + "line": 474, "column": 44 }, "end": { - "line": 401, + "line": 474, "column": 48 } } }, { "type": "MemberExpression", - "start": 19193, - "end": 19203, + "start": 22767, + "end": 22777, "loc": { "start": { - "line": 401, + "line": 474, "column": 50 }, "end": { - "line": 401, + "line": 474, "column": 60 } }, "object": { "type": "Identifier", - "start": 19193, - "end": 19199, + "start": 22767, + "end": 22773, "loc": { "start": { - "line": 401, + "line": 474, "column": 50 }, "end": { - "line": 401, + "line": 474, "column": 56 }, "identifierName": "params" @@ -11682,15 +11682,15 @@ }, "property": { "type": "Identifier", - "start": 19200, - "end": 19203, + "start": 22774, + "end": 22777, "loc": { "start": { - "line": 401, + "line": 474, "column": 57 }, "end": { - "line": 401, + "line": 474, "column": 60 }, "identifierName": "src" @@ -11701,30 +11701,30 @@ }, { "type": "NullLiteral", - "start": 19205, - "end": 19209, + "start": 22779, + "end": 22783, "loc": { "start": { - "line": 401, + "line": 474, "column": 62 }, "end": { - "line": 401, + "line": 474, "column": 66 } } }, { "type": "Identifier", - "start": 19211, - "end": 19217, + "start": 22785, + "end": 22791, "loc": { "start": { - "line": 401, + "line": 474, "column": 68 }, "end": { - "line": 401, + "line": 474, "column": 74 }, "identifierName": "params" @@ -11733,15 +11733,15 @@ }, { "type": "Identifier", - "start": 19219, - "end": 19229, + "start": 22793, + "end": 22803, "loc": { "start": { - "line": 401, + "line": 474, "column": 76 }, "end": { - "line": 401, + "line": 474, "column": 86 }, "identifierName": "sceneModel" @@ -11756,101 +11756,101 @@ }, "alternate": { "type": "BlockStatement", - "start": 19251, - "end": 19357, + "start": 22825, + "end": 22931, "loc": { "start": { - "line": 402, + "line": 475, "column": 19 }, "end": { - "line": 404, + "line": 477, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 19269, - "end": 19343, + "start": 22843, + "end": 22917, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 90 } }, "expression": { "type": "CallExpression", - "start": 19269, - "end": 19342, + "start": 22843, + "end": 22916, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 89 } }, "callee": { "type": "MemberExpression", - "start": 19269, - "end": 19297, + "start": 22843, + "end": 22871, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 19269, - "end": 19291, + "start": 22843, + "end": 22865, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 19269, - "end": 19273, + "start": 22843, + "end": 22847, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 20 } } }, "property": { "type": "Identifier", - "start": 19274, - "end": 19291, + "start": 22848, + "end": 22865, "loc": { "start": { - "line": 403, + "line": 476, "column": 21 }, "end": { - "line": 403, + "line": 476, "column": 38 }, "identifierName": "_sceneModelLoader" @@ -11861,15 +11861,15 @@ }, "property": { "type": "Identifier", - "start": 19292, - "end": 19297, + "start": 22866, + "end": 22871, "loc": { "start": { - "line": 403, + "line": 476, "column": 39 }, "end": { - "line": 403, + "line": 476, "column": 44 }, "identifierName": "parse" @@ -11881,44 +11881,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 19298, - "end": 19302, + "start": 22872, + "end": 22876, "loc": { "start": { - "line": 403, + "line": 476, "column": 45 }, "end": { - "line": 403, + "line": 476, "column": 49 } } }, { "type": "MemberExpression", - "start": 19304, - "end": 19315, + "start": 22878, + "end": 22889, "loc": { "start": { - "line": 403, + "line": 476, "column": 51 }, "end": { - "line": 403, + "line": 476, "column": 62 } }, "object": { "type": "Identifier", - "start": 19304, - "end": 19310, + "start": 22878, + "end": 22884, "loc": { "start": { - "line": 403, + "line": 476, "column": 51 }, "end": { - "line": 403, + "line": 476, "column": 57 }, "identifierName": "params" @@ -11927,15 +11927,15 @@ }, "property": { "type": "Identifier", - "start": 19311, - "end": 19315, + "start": 22885, + "end": 22889, "loc": { "start": { - "line": 403, + "line": 476, "column": 58 }, "end": { - "line": 403, + "line": 476, "column": 62 }, "identifierName": "gltf" @@ -11946,30 +11946,30 @@ }, { "type": "NullLiteral", - "start": 19317, - "end": 19321, + "start": 22891, + "end": 22895, "loc": { "start": { - "line": 403, + "line": 476, "column": 64 }, "end": { - "line": 403, + "line": 476, "column": 68 } } }, { "type": "Identifier", - "start": 19323, - "end": 19329, + "start": 22897, + "end": 22903, "loc": { "start": { - "line": 403, + "line": 476, "column": 70 }, "end": { - "line": 403, + "line": 476, "column": 76 }, "identifierName": "params" @@ -11978,15 +11978,15 @@ }, { "type": "Identifier", - "start": 19331, - "end": 19341, + "start": 22905, + "end": 22915, "loc": { "start": { - "line": 403, + "line": 476, "column": 78 }, "end": { - "line": 403, + "line": 476, "column": 88 }, "identifierName": "sceneModel" @@ -12006,57 +12006,57 @@ }, { "type": "ExpressionStatement", - "start": 19377, - "end": 19486, + "start": 22951, + "end": 23060, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 409, + "line": 482, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 19377, - "end": 19485, + "start": 22951, + "end": 23059, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 409, + "line": 482, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 19377, - "end": 19392, + "start": 22951, + "end": 22966, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 407, + "line": 480, "column": 23 } }, "object": { "type": "Identifier", - "start": 19377, - "end": 19387, + "start": 22951, + "end": 22961, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 407, + "line": 480, "column": 18 }, "identifierName": "sceneModel" @@ -12065,15 +12065,15 @@ }, "property": { "type": "Identifier", - "start": 19388, - "end": 19392, + "start": 22962, + "end": 22966, "loc": { "start": { - "line": 407, + "line": 480, "column": 19 }, "end": { - "line": 407, + "line": 480, "column": 23 }, "identifierName": "once" @@ -12085,15 +12085,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 19393, - "end": 19404, + "start": 22967, + "end": 22978, "loc": { "start": { - "line": 407, + "line": 480, "column": 24 }, "end": { - "line": 407, + "line": 480, "column": 35 } }, @@ -12105,15 +12105,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 19406, - "end": 19484, + "start": 22980, + "end": 23058, "loc": { "start": { - "line": 407, + "line": 480, "column": 37 }, "end": { - "line": 409, + "line": 482, "column": 9 } }, @@ -12124,115 +12124,115 @@ "params": [], "body": { "type": "BlockStatement", - "start": 19412, - "end": 19484, + "start": 22986, + "end": 23058, "loc": { "start": { - "line": 407, + "line": 480, "column": 43 }, "end": { - "line": 409, + "line": 482, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19426, - "end": 19474, + "start": 23000, + "end": 23048, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 60 } }, "expression": { "type": "CallExpression", - "start": 19426, - "end": 19473, + "start": 23000, + "end": 23047, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 19426, - "end": 19464, + "start": 23000, + "end": 23038, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 19426, - "end": 19447, + "start": 23000, + "end": 23021, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 19426, - "end": 19437, + "start": 23000, + "end": 23011, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 19426, - "end": 19430, + "start": 23000, + "end": 23004, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 16 } } }, "property": { "type": "Identifier", - "start": 19431, - "end": 19437, + "start": 23005, + "end": 23011, "loc": { "start": { - "line": 408, + "line": 481, "column": 17 }, "end": { - "line": 408, + "line": 481, "column": 23 }, "identifierName": "viewer" @@ -12243,15 +12243,15 @@ }, "property": { "type": "Identifier", - "start": 19438, - "end": 19447, + "start": 23012, + "end": 23021, "loc": { "start": { - "line": 408, + "line": 481, "column": 24 }, "end": { - "line": 408, + "line": 481, "column": 33 }, "identifierName": "metaScene" @@ -12262,15 +12262,15 @@ }, "property": { "type": "Identifier", - "start": 19448, - "end": 19464, + "start": 23022, + "end": 23038, "loc": { "start": { - "line": 408, + "line": 481, "column": 34 }, "end": { - "line": 408, + "line": 481, "column": 50 }, "identifierName": "destroyMetaModel" @@ -12282,15 +12282,15 @@ "arguments": [ { "type": "Identifier", - "start": 19465, - "end": 19472, + "start": 23039, + "end": 23046, "loc": { "start": { - "line": 408, + "line": 481, "column": 51 }, "end": { - "line": 408, + "line": 481, "column": 58 }, "identifierName": "modelId" @@ -12309,29 +12309,29 @@ }, { "type": "ReturnStatement", - "start": 19496, - "end": 19514, + "start": 23070, + "end": 23088, "loc": { "start": { - "line": 411, + "line": 484, "column": 8 }, "end": { - "line": 411, + "line": 484, "column": 26 } }, "argument": { "type": "Identifier", - "start": 19503, - "end": 19513, + "start": 23077, + "end": 23087, "loc": { "start": { - "line": 411, + "line": 484, "column": 15 }, "end": { - "line": 411, + "line": 484, "column": 25 }, "identifierName": "sceneModel" @@ -12347,15 +12347,15 @@ { "type": "CommentBlock", "value": "*\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelJSON```` parameter.\n * @param {*} [params.metaModelJSON] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @param {String} [params.entityId] When supplied, causes the entire model to be loaded into a single {@link Entity} that gets this ID.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n ", - "start": 10012, - "end": 13967, + "start": 13586, + "end": 17541, "loc": { "start": { - "line": 226, + "line": 299, "column": 4 }, "end": { - "line": 255, + "line": 328, "column": 7 } } @@ -12365,15 +12365,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this GLTFLoaderPlugin.\n ", - "start": 19526, - "end": 19576, + "start": 23100, + "end": 23150, "loc": { "start": { - "line": 414, + "line": 487, "column": 4 }, "end": { - "line": 416, + "line": 489, "column": 7 } } @@ -12382,15 +12382,15 @@ }, { "type": "ClassMethod", - "start": 19581, - "end": 19623, + "start": 23155, + "end": 23197, "loc": { "start": { - "line": 417, + "line": 490, "column": 4 }, "end": { - "line": 419, + "line": 492, "column": 5 } }, @@ -12398,15 +12398,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 19581, - "end": 19588, + "start": 23155, + "end": 23162, "loc": { "start": { - "line": 417, + "line": 490, "column": 4 }, "end": { - "line": 417, + "line": 490, "column": 11 }, "identifierName": "destroy" @@ -12422,87 +12422,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 19591, - "end": 19623, + "start": 23165, + "end": 23197, "loc": { "start": { - "line": 417, + "line": 490, "column": 14 }, "end": { - "line": 419, + "line": 492, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 19601, - "end": 19617, + "start": 23175, + "end": 23191, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 19601, - "end": 19616, + "start": 23175, + "end": 23190, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 19601, - "end": 19614, + "start": 23175, + "end": 23188, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 21 } }, "object": { "type": "Super", - "start": 19601, - "end": 19606, + "start": 23175, + "end": 23180, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 13 } } }, "property": { "type": "Identifier", - "start": 19607, - "end": 19614, + "start": 23181, + "end": 23188, "loc": { "start": { - "line": 418, + "line": 491, "column": 14 }, "end": { - "line": 418, + "line": 491, "column": 21 }, "identifierName": "destroy" @@ -12521,15 +12521,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this GLTFLoaderPlugin.\n ", - "start": 19526, - "end": 19576, + "start": 23100, + "end": 23150, "loc": { "start": { - "line": 414, + "line": 487, "column": 4 }, "end": { - "line": 416, + "line": 489, "column": 7 } } @@ -12544,15 +12544,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 19627, - "end": 19652, + "start": 23201, + "end": 23226, "loc": { "start": { - "line": 422, + "line": 495, "column": 0 }, "end": { - "line": 422, + "line": 495, "column": 25 } }, @@ -12560,29 +12560,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 19635, - "end": 19651, + "start": 23209, + "end": 23225, "loc": { "start": { - "line": 422, + "line": 495, "column": 8 }, "end": { - "line": 422, + "line": 495, "column": 24 } }, "local": { "type": "Identifier", - "start": 19635, - "end": 19651, + "start": 23209, + "end": 23225, "loc": { "start": { - "line": 422, + "line": 495, "column": 8 }, "end": { - "line": 422, + "line": 495, "column": 24 }, "identifierName": "GLTFLoaderPlugin" @@ -12591,15 +12591,15 @@ }, "exported": { "type": "Identifier", - "start": 19635, - "end": 19651, + "start": 23209, + "end": 23225, "loc": { "start": { - "line": 422, + "line": 495, "column": 8 }, "end": { - "line": 422, + "line": 495, "column": 24 }, "identifierName": "GLTFLoaderPlugin" @@ -12612,43 +12612,43 @@ }, { "type": "ExportNamedDeclaration", - "start": 19627, - "end": 19652, + "start": 23201, + "end": 23226, "loc": { "start": { - "line": 422, + "line": 495, "column": 0 }, "end": { - "line": 422, + "line": 495, "column": 25 } }, "declaration": { "type": "ClassDeclaration", - "start": 7776, - "end": 19625, + "start": 11350, + "end": 23199, "loc": { "start": { - "line": 161, + "line": 234, "column": 0 }, "end": { - "line": 420, + "line": 493, "column": 1 } }, "id": { "type": "Identifier", - "start": 7782, - "end": 7798, + "start": 11356, + "end": 11372, "loc": { "start": { - "line": 161, + "line": 234, "column": 6 }, "end": { - "line": 161, + "line": 234, "column": 22 }, "identifierName": "GLTFLoaderPlugin" @@ -12658,15 +12658,15 @@ }, "superClass": { "type": "Identifier", - "start": 7807, - "end": 7813, + "start": 11381, + "end": 11387, "loc": { "start": { - "line": 161, + "line": 234, "column": 31 }, "end": { - "line": 161, + "line": 234, "column": 37 }, "identifierName": "Plugin" @@ -12675,30 +12675,30 @@ }, "body": { "type": "ClassBody", - "start": 7814, - "end": 19625, + "start": 11388, + "end": 23199, "loc": { "start": { - "line": 161, + "line": 234, "column": 38 }, "end": { - "line": 420, + "line": 493, "column": 1 } }, "body": [ { "type": "ClassMethod", - "start": 8486, - "end": 8730, + "start": 12060, + "end": 12304, "loc": { "start": { - "line": 172, + "line": 245, "column": 4 }, "end": { - "line": 180, + "line": 253, "column": 5 } }, @@ -12706,15 +12706,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8486, - "end": 8497, + "start": 12060, + "end": 12071, "loc": { "start": { - "line": 172, + "line": 245, "column": 4 }, "end": { - "line": 172, + "line": 245, "column": 15 }, "identifierName": "constructor" @@ -12730,15 +12730,15 @@ "params": [ { "type": "Identifier", - "start": 8498, - "end": 8504, + "start": 12072, + "end": 12078, "loc": { "start": { - "line": 172, + "line": 245, "column": 16 }, "end": { - "line": 172, + "line": 245, "column": 22 }, "identifierName": "viewer" @@ -12747,29 +12747,29 @@ }, { "type": "AssignmentPattern", - "start": 8506, - "end": 8514, + "start": 12080, + "end": 12088, "loc": { "start": { - "line": 172, + "line": 245, "column": 24 }, "end": { - "line": 172, + "line": 245, "column": 32 } }, "left": { "type": "Identifier", - "start": 8506, - "end": 8509, + "start": 12080, + "end": 12083, "loc": { "start": { - "line": 172, + "line": 245, "column": 24 }, "end": { - "line": 172, + "line": 245, "column": 27 }, "identifierName": "cfg" @@ -12778,15 +12778,15 @@ }, "right": { "type": "ObjectExpression", - "start": 8512, - "end": 8514, + "start": 12086, + "end": 12088, "loc": { "start": { - "line": 172, + "line": 245, "column": 30 }, "end": { - "line": 172, + "line": 245, "column": 32 } }, @@ -12796,58 +12796,58 @@ ], "body": { "type": "BlockStatement", - "start": 8516, - "end": 8730, + "start": 12090, + "end": 12304, "loc": { "start": { - "line": 172, + "line": 245, "column": 34 }, "end": { - "line": 180, + "line": 253, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 8527, - "end": 8560, + "start": 12101, + "end": 12134, "loc": { "start": { - "line": 174, + "line": 247, "column": 8 }, "end": { - "line": 174, + "line": 247, "column": 41 } }, "expression": { "type": "CallExpression", - "start": 8527, - "end": 8559, + "start": 12101, + "end": 12133, "loc": { "start": { - "line": 174, + "line": 247, "column": 8 }, "end": { - "line": 174, + "line": 247, "column": 40 } }, "callee": { "type": "Super", - "start": 8527, - "end": 8532, + "start": 12101, + "end": 12106, "loc": { "start": { - "line": 174, + "line": 247, "column": 8 }, "end": { - "line": 174, + "line": 247, "column": 13 } } @@ -12855,15 +12855,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 8533, - "end": 8545, + "start": 12107, + "end": 12119, "loc": { "start": { - "line": 174, + "line": 247, "column": 14 }, "end": { - "line": 174, + "line": 247, "column": 26 } }, @@ -12875,15 +12875,15 @@ }, { "type": "Identifier", - "start": 8547, - "end": 8553, + "start": 12121, + "end": 12127, "loc": { "start": { - "line": 174, + "line": 247, "column": 28 }, "end": { - "line": 174, + "line": 247, "column": 34 }, "identifierName": "viewer" @@ -12892,15 +12892,15 @@ }, { "type": "Identifier", - "start": 8555, - "end": 8558, + "start": 12129, + "end": 12132, "loc": { "start": { - "line": 174, + "line": 247, "column": 36 }, "end": { - "line": 174, + "line": 247, "column": 39 }, "identifierName": "cfg" @@ -12912,73 +12912,73 @@ }, { "type": "ExpressionStatement", - "start": 8570, - "end": 8631, + "start": 12144, + "end": 12205, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 8570, - "end": 8630, + "start": 12144, + "end": 12204, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8570, - "end": 8592, + "start": 12144, + "end": 12166, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 8570, - "end": 8574, + "start": 12144, + "end": 12148, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 12 } } }, "property": { "type": "Identifier", - "start": 8575, - "end": 8592, + "start": 12149, + "end": 12166, "loc": { "start": { - "line": 176, + "line": 249, "column": 13 }, "end": { - "line": 176, + "line": 249, "column": 30 }, "identifierName": "_sceneModelLoader" @@ -12989,29 +12989,29 @@ }, "right": { "type": "NewExpression", - "start": 8595, - "end": 8630, + "start": 12169, + "end": 12204, "loc": { "start": { - "line": 176, + "line": 249, "column": 33 }, "end": { - "line": 176, + "line": 249, "column": 68 } }, "callee": { "type": "Identifier", - "start": 8599, - "end": 8619, + "start": 12173, + "end": 12193, "loc": { "start": { - "line": 176, + "line": 249, "column": 37 }, "end": { - "line": 176, + "line": 249, "column": 57 }, "identifierName": "GLTFSceneModelLoader" @@ -13021,30 +13021,30 @@ "arguments": [ { "type": "ThisExpression", - "start": 8620, - "end": 8624, + "start": 12194, + "end": 12198, "loc": { "start": { - "line": 176, + "line": 249, "column": 58 }, "end": { - "line": 176, + "line": 249, "column": 62 } } }, { "type": "Identifier", - "start": 8626, - "end": 8629, + "start": 12200, + "end": 12203, "loc": { "start": { - "line": 176, + "line": 249, "column": 64 }, "end": { - "line": 176, + "line": 249, "column": 67 }, "identifierName": "cfg" @@ -13057,73 +13057,73 @@ }, { "type": "ExpressionStatement", - "start": 8641, - "end": 8674, + "start": 12215, + "end": 12248, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 8641, - "end": 8673, + "start": 12215, + "end": 12247, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8641, - "end": 8656, + "start": 12215, + "end": 12230, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 8641, - "end": 8645, + "start": 12215, + "end": 12219, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 12 } } }, "property": { "type": "Identifier", - "start": 8646, - "end": 8656, + "start": 12220, + "end": 12230, "loc": { "start": { - "line": 178, + "line": 251, "column": 13 }, "end": { - "line": 178, + "line": 251, "column": 23 }, "identifierName": "dataSource" @@ -13134,29 +13134,29 @@ }, "right": { "type": "MemberExpression", - "start": 8659, - "end": 8673, + "start": 12233, + "end": 12247, "loc": { "start": { - "line": 178, + "line": 251, "column": 26 }, "end": { - "line": 178, + "line": 251, "column": 40 } }, "object": { "type": "Identifier", - "start": 8659, - "end": 8662, + "start": 12233, + "end": 12236, "loc": { "start": { - "line": 178, + "line": 251, "column": 26 }, "end": { - "line": 178, + "line": 251, "column": 29 }, "identifierName": "cfg" @@ -13165,15 +13165,15 @@ }, "property": { "type": "Identifier", - "start": 8663, - "end": 8673, + "start": 12237, + "end": 12247, "loc": { "start": { - "line": 178, + "line": 251, "column": 30 }, "end": { - "line": 178, + "line": 251, "column": 40 }, "identifierName": "dataSource" @@ -13186,73 +13186,73 @@ }, { "type": "ExpressionStatement", - "start": 8683, - "end": 8724, + "start": 12257, + "end": 12298, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 8683, - "end": 8723, + "start": 12257, + "end": 12297, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8683, - "end": 8702, + "start": 12257, + "end": 12276, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 8683, - "end": 8687, + "start": 12257, + "end": 12261, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 12 } } }, "property": { "type": "Identifier", - "start": 8688, - "end": 8702, + "start": 12262, + "end": 12276, "loc": { "start": { - "line": 179, + "line": 252, "column": 13 }, "end": { - "line": 179, + "line": 252, "column": 27 }, "identifierName": "objectDefaults" @@ -13263,29 +13263,29 @@ }, "right": { "type": "MemberExpression", - "start": 8705, - "end": 8723, + "start": 12279, + "end": 12297, "loc": { "start": { - "line": 179, + "line": 252, "column": 30 }, "end": { - "line": 179, + "line": 252, "column": 48 } }, "object": { "type": "Identifier", - "start": 8705, - "end": 8708, + "start": 12279, + "end": 12282, "loc": { "start": { - "line": 179, + "line": 252, "column": 30 }, "end": { - "line": 179, + "line": 252, "column": 33 }, "identifierName": "cfg" @@ -13294,15 +13294,15 @@ }, "property": { "type": "Identifier", - "start": 8709, - "end": 8723, + "start": 12283, + "end": 12297, "loc": { "start": { - "line": 179, + "line": 252, "column": 34 }, "end": { - "line": 179, + "line": 252, "column": 48 }, "identifierName": "objectDefaults" @@ -13321,15 +13321,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"GLTFLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link GLTFDefaultDataSource}, which loads over HTTP.\n ", - "start": 7821, - "end": 8481, + "start": 11395, + "end": 12055, "loc": { "start": { - "line": 163, + "line": 236, "column": 4 }, "end": { - "line": 171, + "line": 244, "column": 7 } } @@ -13339,15 +13339,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 8736, - "end": 8989, + "start": 12310, + "end": 12563, "loc": { "start": { - "line": 182, + "line": 255, "column": 4 }, "end": { - "line": 188, + "line": 261, "column": 7 } } @@ -13356,15 +13356,15 @@ }, { "type": "ClassMethod", - "start": 8994, - "end": 9088, + "start": 12568, + "end": 12662, "loc": { "start": { - "line": 189, + "line": 262, "column": 4 }, "end": { - "line": 191, + "line": 264, "column": 5 } }, @@ -13372,15 +13372,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8998, - "end": 9008, + "start": 12572, + "end": 12582, "loc": { "start": { - "line": 189, + "line": 262, "column": 8 }, "end": { - "line": 189, + "line": 262, "column": 18 }, "identifierName": "dataSource" @@ -13395,15 +13395,15 @@ "params": [ { "type": "Identifier", - "start": 9009, - "end": 9014, + "start": 12583, + "end": 12588, "loc": { "start": { - "line": 189, + "line": 262, "column": 19 }, "end": { - "line": 189, + "line": 262, "column": 24 }, "identifierName": "value" @@ -13413,88 +13413,88 @@ ], "body": { "type": "BlockStatement", - "start": 9016, - "end": 9088, + "start": 12590, + "end": 12662, "loc": { "start": { - "line": 189, + "line": 262, "column": 26 }, "end": { - "line": 191, + "line": 264, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 9026, - "end": 9082, + "start": 12600, + "end": 12656, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 64 } }, "expression": { "type": "AssignmentExpression", - "start": 9026, - "end": 9081, + "start": 12600, + "end": 12655, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 63 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 9026, - "end": 9042, + "start": 12600, + "end": 12616, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 9026, - "end": 9030, + "start": 12600, + "end": 12604, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 12 } } }, "property": { "type": "Identifier", - "start": 9031, - "end": 9042, + "start": 12605, + "end": 12616, "loc": { "start": { - "line": 190, + "line": 263, "column": 13 }, "end": { - "line": 190, + "line": 263, "column": 24 }, "identifierName": "_dataSource" @@ -13505,29 +13505,29 @@ }, "right": { "type": "LogicalExpression", - "start": 9045, - "end": 9081, + "start": 12619, + "end": 12655, "loc": { "start": { - "line": 190, + "line": 263, "column": 27 }, "end": { - "line": 190, + "line": 263, "column": 63 } }, "left": { "type": "Identifier", - "start": 9045, - "end": 9050, + "start": 12619, + "end": 12624, "loc": { "start": { - "line": 190, + "line": 263, "column": 27 }, "end": { - "line": 190, + "line": 263, "column": 32 }, "identifierName": "value" @@ -13537,29 +13537,29 @@ "operator": "||", "right": { "type": "NewExpression", - "start": 9054, - "end": 9081, + "start": 12628, + "end": 12655, "loc": { "start": { - "line": 190, + "line": 263, "column": 36 }, "end": { - "line": 190, + "line": 263, "column": 63 } }, "callee": { "type": "Identifier", - "start": 9058, - "end": 9079, + "start": 12632, + "end": 12653, "loc": { "start": { - "line": 190, + "line": 263, "column": 40 }, "end": { - "line": 190, + "line": 263, "column": 61 }, "identifierName": "GLTFDefaultDataSource" @@ -13579,15 +13579,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 8736, - "end": 8989, + "start": 12310, + "end": 12563, "loc": { "start": { - "line": 182, + "line": 255, "column": 4 }, "end": { - "line": 188, + "line": 261, "column": 7 } } @@ -13597,15 +13597,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 9094, - "end": 9349, + "start": 12668, + "end": 12923, "loc": { "start": { - "line": 193, + "line": 266, "column": 4 }, "end": { - "line": 199, + "line": 272, "column": 7 } } @@ -13614,15 +13614,15 @@ }, { "type": "ClassMethod", - "start": 9354, - "end": 9411, + "start": 12928, + "end": 12985, "loc": { "start": { - "line": 200, + "line": 273, "column": 4 }, "end": { - "line": 202, + "line": 275, "column": 5 } }, @@ -13630,15 +13630,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 9358, - "end": 9368, + "start": 12932, + "end": 12942, "loc": { "start": { - "line": 200, + "line": 273, "column": 8 }, "end": { - "line": 200, + "line": 273, "column": 18 }, "identifierName": "dataSource" @@ -13653,73 +13653,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 9371, - "end": 9411, + "start": 12945, + "end": 12985, "loc": { "start": { - "line": 200, + "line": 273, "column": 21 }, "end": { - "line": 202, + "line": 275, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 9381, - "end": 9405, + "start": 12955, + "end": 12979, "loc": { "start": { - "line": 201, + "line": 274, "column": 8 }, "end": { - "line": 201, + "line": 274, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 9388, - "end": 9404, + "start": 12962, + "end": 12978, "loc": { "start": { - "line": 201, + "line": 274, "column": 15 }, "end": { - "line": 201, + "line": 274, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 9388, - "end": 9392, + "start": 12962, + "end": 12966, "loc": { "start": { - "line": 201, + "line": 274, "column": 15 }, "end": { - "line": 201, + "line": 274, "column": 19 } } }, "property": { "type": "Identifier", - "start": 9393, - "end": 9404, + "start": 12967, + "end": 12978, "loc": { "start": { - "line": 201, + "line": 274, "column": 20 }, "end": { - "line": 201, + "line": 274, "column": 31 }, "identifierName": "_dataSource" @@ -13737,15 +13737,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 9094, - "end": 9349, + "start": 12668, + "end": 12923, "loc": { "start": { - "line": 193, + "line": 266, "column": 4 }, "end": { - "line": 199, + "line": 272, "column": 7 } } @@ -13755,15 +13755,15 @@ { "type": "CommentBlock", "value": "*\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9417, - "end": 9625, + "start": 12991, + "end": 13199, "loc": { "start": { - "line": 204, + "line": 277, "column": 4 }, "end": { - "line": 210, + "line": 283, "column": 7 } } @@ -13772,15 +13772,15 @@ }, { "type": "ClassMethod", - "start": 9630, - "end": 9722, + "start": 13204, + "end": 13296, "loc": { "start": { - "line": 211, + "line": 284, "column": 4 }, "end": { - "line": 213, + "line": 286, "column": 5 } }, @@ -13788,15 +13788,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 9634, - "end": 9648, + "start": 13208, + "end": 13222, "loc": { "start": { - "line": 211, + "line": 284, "column": 8 }, "end": { - "line": 211, + "line": 284, "column": 22 }, "identifierName": "objectDefaults" @@ -13811,15 +13811,15 @@ "params": [ { "type": "Identifier", - "start": 9649, - "end": 9654, + "start": 13223, + "end": 13228, "loc": { "start": { - "line": 211, + "line": 284, "column": 23 }, "end": { - "line": 211, + "line": 284, "column": 28 }, "identifierName": "value" @@ -13829,88 +13829,88 @@ ], "body": { "type": "BlockStatement", - "start": 9656, - "end": 9722, + "start": 13230, + "end": 13296, "loc": { "start": { - "line": 211, + "line": 284, "column": 30 }, "end": { - "line": 213, + "line": 286, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 9666, - "end": 9716, + "start": 13240, + "end": 13290, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 9666, - "end": 9715, + "start": 13240, + "end": 13289, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 9666, - "end": 9686, + "start": 13240, + "end": 13260, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 9666, - "end": 9670, + "start": 13240, + "end": 13244, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 12 } } }, "property": { "type": "Identifier", - "start": 9671, - "end": 9686, + "start": 13245, + "end": 13260, "loc": { "start": { - "line": 212, + "line": 285, "column": 13 }, "end": { - "line": 212, + "line": 285, "column": 28 }, "identifierName": "_objectDefaults" @@ -13921,29 +13921,29 @@ }, "right": { "type": "LogicalExpression", - "start": 9689, - "end": 9715, + "start": 13263, + "end": 13289, "loc": { "start": { - "line": 212, + "line": 285, "column": 31 }, "end": { - "line": 212, + "line": 285, "column": 57 } }, "left": { "type": "Identifier", - "start": 9689, - "end": 9694, + "start": 13263, + "end": 13268, "loc": { "start": { - "line": 212, + "line": 285, "column": 31 }, "end": { - "line": 212, + "line": 285, "column": 36 }, "identifierName": "value" @@ -13953,15 +13953,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 9698, - "end": 9715, + "start": 13272, + "end": 13289, "loc": { "start": { - "line": 212, + "line": 285, "column": 40 }, "end": { - "line": 212, + "line": 285, "column": 57 }, "identifierName": "IFCObjectDefaults" @@ -13979,15 +13979,15 @@ { "type": "CommentBlock", "value": "*\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9417, - "end": 9625, + "start": 12991, + "end": 13199, "loc": { "start": { - "line": 204, + "line": 277, "column": 4 }, "end": { - "line": 210, + "line": 283, "column": 7 } } @@ -13997,15 +13997,15 @@ { "type": "CommentBlock", "value": "*\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9728, - "end": 9936, + "start": 13302, + "end": 13510, "loc": { "start": { - "line": 215, + "line": 288, "column": 4 }, "end": { - "line": 221, + "line": 294, "column": 7 } } @@ -14014,15 +14014,15 @@ }, { "type": "ClassMethod", - "start": 9941, - "end": 10006, + "start": 13515, + "end": 13580, "loc": { "start": { - "line": 222, + "line": 295, "column": 4 }, "end": { - "line": 224, + "line": 297, "column": 5 } }, @@ -14030,15 +14030,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 9945, - "end": 9959, + "start": 13519, + "end": 13533, "loc": { "start": { - "line": 222, + "line": 295, "column": 8 }, "end": { - "line": 222, + "line": 295, "column": 22 }, "identifierName": "objectDefaults" @@ -14053,73 +14053,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 9962, - "end": 10006, + "start": 13536, + "end": 13580, "loc": { "start": { - "line": 222, + "line": 295, "column": 25 }, "end": { - "line": 224, + "line": 297, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 9972, - "end": 10000, + "start": 13546, + "end": 13574, "loc": { "start": { - "line": 223, + "line": 296, "column": 8 }, "end": { - "line": 223, + "line": 296, "column": 36 } }, "argument": { "type": "MemberExpression", - "start": 9979, - "end": 9999, + "start": 13553, + "end": 13573, "loc": { "start": { - "line": 223, + "line": 296, "column": 15 }, "end": { - "line": 223, + "line": 296, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 9979, - "end": 9983, + "start": 13553, + "end": 13557, "loc": { "start": { - "line": 223, + "line": 296, "column": 15 }, "end": { - "line": 223, + "line": 296, "column": 19 } } }, "property": { "type": "Identifier", - "start": 9984, - "end": 9999, + "start": 13558, + "end": 13573, "loc": { "start": { - "line": 223, + "line": 296, "column": 20 }, "end": { - "line": 223, + "line": 296, "column": 35 }, "identifierName": "_objectDefaults" @@ -14137,15 +14137,15 @@ { "type": "CommentBlock", "value": "*\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9728, - "end": 9936, + "start": 13302, + "end": 13510, "loc": { "start": { - "line": 215, + "line": 288, "column": 4 }, "end": { - "line": 221, + "line": 294, "column": 7 } } @@ -14155,15 +14155,15 @@ { "type": "CommentBlock", "value": "*\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelJSON```` parameter.\n * @param {*} [params.metaModelJSON] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @param {String} [params.entityId] When supplied, causes the entire model to be loaded into a single {@link Entity} that gets this ID.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n ", - "start": 10012, - "end": 13967, + "start": 13586, + "end": 17541, "loc": { "start": { - "line": 226, + "line": 299, "column": 4 }, "end": { - "line": 255, + "line": 328, "column": 7 } } @@ -14172,15 +14172,15 @@ }, { "type": "ClassMethod", - "start": 13972, - "end": 19520, + "start": 17546, + "end": 23094, "loc": { "start": { - "line": 256, + "line": 329, "column": 4 }, "end": { - "line": 412, + "line": 485, "column": 5 } }, @@ -14188,15 +14188,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 13972, - "end": 13976, + "start": 17546, + "end": 17550, "loc": { "start": { - "line": 256, + "line": 329, "column": 4 }, "end": { - "line": 256, + "line": 329, "column": 8 }, "identifierName": "load" @@ -14212,29 +14212,29 @@ "params": [ { "type": "AssignmentPattern", - "start": 13977, - "end": 13988, + "start": 17551, + "end": 17562, "loc": { "start": { - "line": 256, + "line": 329, "column": 9 }, "end": { - "line": 256, + "line": 329, "column": 20 } }, "left": { "type": "Identifier", - "start": 13977, - "end": 13983, + "start": 17551, + "end": 17557, "loc": { "start": { - "line": 256, + "line": 329, "column": 9 }, "end": { - "line": 256, + "line": 329, "column": 15 }, "identifierName": "params" @@ -14243,15 +14243,15 @@ }, "right": { "type": "ObjectExpression", - "start": 13986, - "end": 13988, + "start": 17560, + "end": 17562, "loc": { "start": { - "line": 256, + "line": 329, "column": 18 }, "end": { - "line": 256, + "line": 329, "column": 20 } }, @@ -14261,72 +14261,72 @@ ], "body": { "type": "BlockStatement", - "start": 13990, - "end": 19520, + "start": 17564, + "end": 23094, "loc": { "start": { - "line": 256, + "line": 329, "column": 22 }, "end": { - "line": 412, + "line": 485, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 14001, - "end": 14222, + "start": 17575, + "end": 17796, "loc": { "start": { - "line": 258, + "line": 331, "column": 8 }, "end": { - "line": 261, + "line": 334, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 14005, - "end": 14057, + "start": 17579, + "end": 17631, "loc": { "start": { - "line": 258, + "line": 331, "column": 12 }, "end": { - "line": 258, + "line": 331, "column": 64 } }, "left": { "type": "MemberExpression", - "start": 14005, - "end": 14014, + "start": 17579, + "end": 17588, "loc": { "start": { - "line": 258, + "line": 331, "column": 12 }, "end": { - "line": 258, + "line": 331, "column": 21 } }, "object": { "type": "Identifier", - "start": 14005, - "end": 14011, + "start": 17579, + "end": 17585, "loc": { "start": { - "line": 258, + "line": 331, "column": 12 }, "end": { - "line": 258, + "line": 331, "column": 18 }, "identifierName": "params" @@ -14335,15 +14335,15 @@ }, "property": { "type": "Identifier", - "start": 14012, - "end": 14014, + "start": 17586, + "end": 17588, "loc": { "start": { - "line": 258, + "line": 331, "column": 19 }, "end": { - "line": 258, + "line": 331, "column": 21 }, "identifierName": "id" @@ -14355,86 +14355,86 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 14018, - "end": 14057, + "start": 17592, + "end": 17631, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 14018, - "end": 14046, + "start": 17592, + "end": 17620, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 14018, - "end": 14035, + "start": 17592, + "end": 17609, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 14018, - "end": 14029, + "start": 17592, + "end": 17603, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 14018, - "end": 14022, + "start": 17592, + "end": 17596, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 29 } } }, "property": { "type": "Identifier", - "start": 14023, - "end": 14029, + "start": 17597, + "end": 17603, "loc": { "start": { - "line": 258, + "line": 331, "column": 30 }, "end": { - "line": 258, + "line": 331, "column": 36 }, "identifierName": "viewer" @@ -14445,15 +14445,15 @@ }, "property": { "type": "Identifier", - "start": 14030, - "end": 14035, + "start": 17604, + "end": 17609, "loc": { "start": { - "line": 258, + "line": 331, "column": 37 }, "end": { - "line": 258, + "line": 331, "column": 42 }, "identifierName": "scene" @@ -14464,15 +14464,15 @@ }, "property": { "type": "Identifier", - "start": 14036, - "end": 14046, + "start": 17610, + "end": 17620, "loc": { "start": { - "line": 258, + "line": 331, "column": 43 }, "end": { - "line": 258, + "line": 331, "column": 53 }, "identifierName": "components" @@ -14483,29 +14483,29 @@ }, "property": { "type": "MemberExpression", - "start": 14047, - "end": 14056, + "start": 17621, + "end": 17630, "loc": { "start": { - "line": 258, + "line": 331, "column": 54 }, "end": { - "line": 258, + "line": 331, "column": 63 } }, "object": { "type": "Identifier", - "start": 14047, - "end": 14053, + "start": 17621, + "end": 17627, "loc": { "start": { - "line": 258, + "line": 331, "column": 54 }, "end": { - "line": 258, + "line": 331, "column": 60 }, "identifierName": "params" @@ -14514,15 +14514,15 @@ }, "property": { "type": "Identifier", - "start": 14054, - "end": 14056, + "start": 17628, + "end": 17630, "loc": { "start": { - "line": 258, + "line": 331, "column": 61 }, "end": { - "line": 258, + "line": 331, "column": 63 }, "identifierName": "id" @@ -14536,87 +14536,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 14059, - "end": 14222, + "start": 17633, + "end": 17796, "loc": { "start": { - "line": 258, + "line": 331, "column": 66 }, "end": { - "line": 261, + "line": 334, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 14073, - "end": 14182, + "start": 17647, + "end": 17756, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 121 } }, "expression": { "type": "CallExpression", - "start": 14073, - "end": 14181, + "start": 17647, + "end": 17755, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 14073, - "end": 14083, + "start": 17647, + "end": 17657, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 14073, - "end": 14077, + "start": 17647, + "end": 17651, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 16 } } }, "property": { "type": "Identifier", - "start": 14078, - "end": 14083, + "start": 17652, + "end": 17657, "loc": { "start": { - "line": 259, + "line": 332, "column": 17 }, "end": { - "line": 259, + "line": 332, "column": 22 }, "identifierName": "error" @@ -14628,43 +14628,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 14084, - "end": 14180, + "start": 17658, + "end": 17754, "loc": { "start": { - "line": 259, + "line": 332, "column": 23 }, "end": { - "line": 259, + "line": 332, "column": 119 } }, "left": { "type": "BinaryExpression", - "start": 14084, - "end": 14147, + "start": 17658, + "end": 17721, "loc": { "start": { - "line": 259, + "line": 332, "column": 23 }, "end": { - "line": 259, + "line": 332, "column": 86 } }, "left": { "type": "StringLiteral", - "start": 14084, - "end": 14135, + "start": 17658, + "end": 17709, "loc": { "start": { - "line": 259, + "line": 332, "column": 23 }, "end": { - "line": 259, + "line": 332, "column": 74 } }, @@ -14677,29 +14677,29 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 14138, - "end": 14147, + "start": 17712, + "end": 17721, "loc": { "start": { - "line": 259, + "line": 332, "column": 77 }, "end": { - "line": 259, + "line": 332, "column": 86 } }, "object": { "type": "Identifier", - "start": 14138, - "end": 14144, + "start": 17712, + "end": 17718, "loc": { "start": { - "line": 259, + "line": 332, "column": 77 }, "end": { - "line": 259, + "line": 332, "column": 83 }, "identifierName": "params" @@ -14708,15 +14708,15 @@ }, "property": { "type": "Identifier", - "start": 14145, - "end": 14147, + "start": 17719, + "end": 17721, "loc": { "start": { - "line": 259, + "line": 332, "column": 84 }, "end": { - "line": 259, + "line": 332, "column": 86 }, "identifierName": "id" @@ -14729,15 +14729,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 14150, - "end": 14180, + "start": 17724, + "end": 17754, "loc": { "start": { - "line": 259, + "line": 332, "column": 89 }, "end": { - "line": 259, + "line": 332, "column": 119 } }, @@ -14753,29 +14753,29 @@ }, { "type": "ExpressionStatement", - "start": 14195, - "end": 14212, + "start": 17769, + "end": 17786, "loc": { "start": { - "line": 260, + "line": 333, "column": 12 }, "end": { - "line": 260, + "line": 333, "column": 29 } }, "expression": { "type": "UnaryExpression", - "start": 14195, - "end": 14211, + "start": 17769, + "end": 17785, "loc": { "start": { - "line": 260, + "line": 333, "column": 12 }, "end": { - "line": 260, + "line": 333, "column": 28 } }, @@ -14783,29 +14783,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 14202, - "end": 14211, + "start": 17776, + "end": 17785, "loc": { "start": { - "line": 260, + "line": 333, "column": 19 }, "end": { - "line": 260, + "line": 333, "column": 28 } }, "object": { "type": "Identifier", - "start": 14202, - "end": 14208, + "start": 17776, + "end": 17782, "loc": { "start": { - "line": 260, + "line": 333, "column": 19 }, "end": { - "line": 260, + "line": 333, "column": 25 }, "identifierName": "params" @@ -14814,15 +14814,15 @@ }, "property": { "type": "Identifier", - "start": 14209, - "end": 14211, + "start": 17783, + "end": 17785, "loc": { "start": { - "line": 260, + "line": 333, "column": 26 }, "end": { - "line": 260, + "line": 333, "column": 28 }, "identifierName": "id" @@ -14843,44 +14843,44 @@ }, { "type": "VariableDeclaration", - "start": 14232, - "end": 14388, + "start": 17806, + "end": 17962, "loc": { "start": { - "line": 263, + "line": 336, "column": 8 }, "end": { - "line": 266, + "line": 339, "column": 12 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14238, - "end": 14387, + "start": 17812, + "end": 17961, "loc": { "start": { - "line": 263, + "line": 336, "column": 14 }, "end": { - "line": 266, + "line": 339, "column": 11 } }, "id": { "type": "Identifier", - "start": 14238, - "end": 14248, + "start": 17812, + "end": 17822, "loc": { "start": { - "line": 263, + "line": 336, "column": 14 }, "end": { - "line": 263, + "line": 336, "column": 24 }, "identifierName": "sceneModel" @@ -14889,29 +14889,29 @@ }, "init": { "type": "NewExpression", - "start": 14251, - "end": 14387, + "start": 17825, + "end": 17961, "loc": { "start": { - "line": 263, + "line": 336, "column": 27 }, "end": { - "line": 266, + "line": 339, "column": 11 } }, "callee": { "type": "Identifier", - "start": 14255, - "end": 14265, + "start": 17829, + "end": 17839, "loc": { "start": { - "line": 263, + "line": 336, "column": 31 }, "end": { - "line": 263, + "line": 336, "column": 41 }, "identifierName": "SceneModel" @@ -14921,58 +14921,58 @@ "arguments": [ { "type": "MemberExpression", - "start": 14266, - "end": 14283, + "start": 17840, + "end": 17857, "loc": { "start": { - "line": 263, + "line": 336, "column": 42 }, "end": { - "line": 263, + "line": 336, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 14266, - "end": 14277, + "start": 17840, + "end": 17851, "loc": { "start": { - "line": 263, + "line": 336, "column": 42 }, "end": { - "line": 263, + "line": 336, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 14266, - "end": 14270, + "start": 17840, + "end": 17844, "loc": { "start": { - "line": 263, + "line": 336, "column": 42 }, "end": { - "line": 263, + "line": 336, "column": 46 } } }, "property": { "type": "Identifier", - "start": 14271, - "end": 14277, + "start": 17845, + "end": 17851, "loc": { "start": { - "line": 263, + "line": 336, "column": 47 }, "end": { - "line": 263, + "line": 336, "column": 53 }, "identifierName": "viewer" @@ -14983,15 +14983,15 @@ }, "property": { "type": "Identifier", - "start": 14278, - "end": 14283, + "start": 17852, + "end": 17857, "loc": { "start": { - "line": 263, + "line": 336, "column": 54 }, "end": { - "line": 263, + "line": 336, "column": 59 }, "identifierName": "scene" @@ -15002,43 +15002,43 @@ }, { "type": "CallExpression", - "start": 14285, - "end": 14386, + "start": 17859, + "end": 17960, "loc": { "start": { - "line": 263, + "line": 336, "column": 61 }, "end": { - "line": 266, + "line": 339, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 14285, - "end": 14296, + "start": 17859, + "end": 17870, "loc": { "start": { - "line": 263, + "line": 336, "column": 61 }, "end": { - "line": 263, + "line": 336, "column": 72 } }, "object": { "type": "Identifier", - "start": 14285, - "end": 14290, + "start": 17859, + "end": 17864, "loc": { "start": { - "line": 263, + "line": 336, "column": 61 }, "end": { - "line": 263, + "line": 336, "column": 66 }, "identifierName": "utils" @@ -15047,15 +15047,15 @@ }, "property": { "type": "Identifier", - "start": 14291, - "end": 14296, + "start": 17865, + "end": 17870, "loc": { "start": { - "line": 263, + "line": 336, "column": 67 }, "end": { - "line": 263, + "line": 336, "column": 72 }, "identifierName": "apply" @@ -15067,15 +15067,15 @@ "arguments": [ { "type": "Identifier", - "start": 14297, - "end": 14303, + "start": 17871, + "end": 17877, "loc": { "start": { - "line": 263, + "line": 336, "column": 73 }, "end": { - "line": 263, + "line": 336, "column": 79 }, "identifierName": "params" @@ -15084,30 +15084,30 @@ }, { "type": "ObjectExpression", - "start": 14305, - "end": 14385, + "start": 17879, + "end": 17959, "loc": { "start": { - "line": 263, + "line": 336, "column": 81 }, "end": { - "line": 266, + "line": 339, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 14319, - "end": 14332, + "start": 17893, + "end": 17906, "loc": { "start": { - "line": 264, + "line": 337, "column": 12 }, "end": { - "line": 264, + "line": 337, "column": 25 } }, @@ -15116,15 +15116,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 14319, - "end": 14326, + "start": 17893, + "end": 17900, "loc": { "start": { - "line": 264, + "line": 337, "column": 12 }, "end": { - "line": 264, + "line": 337, "column": 19 }, "identifierName": "isModel" @@ -15133,15 +15133,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 14328, - "end": 14332, + "start": 17902, + "end": 17906, "loc": { "start": { - "line": 264, + "line": 337, "column": 21 }, "end": { - "line": 264, + "line": 337, "column": 25 } }, @@ -15150,15 +15150,15 @@ }, { "type": "ObjectProperty", - "start": 14346, - "end": 14375, + "start": 17920, + "end": 17949, "loc": { "start": { - "line": 265, + "line": 338, "column": 12 }, "end": { - "line": 265, + "line": 338, "column": 41 } }, @@ -15167,15 +15167,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 14346, - "end": 14356, + "start": 17920, + "end": 17930, "loc": { "start": { - "line": 265, + "line": 338, "column": 12 }, "end": { - "line": 265, + "line": 338, "column": 22 }, "identifierName": "dtxEnabled" @@ -15184,29 +15184,29 @@ }, "value": { "type": "MemberExpression", - "start": 14358, - "end": 14375, + "start": 17932, + "end": 17949, "loc": { "start": { - "line": 265, + "line": 338, "column": 24 }, "end": { - "line": 265, + "line": 338, "column": 41 } }, "object": { "type": "Identifier", - "start": 14358, - "end": 14364, + "start": 17932, + "end": 17938, "loc": { "start": { - "line": 265, + "line": 338, "column": 24 }, "end": { - "line": 265, + "line": 338, "column": 30 }, "identifierName": "params" @@ -15215,15 +15215,15 @@ }, "property": { "type": "Identifier", - "start": 14365, - "end": 14375, + "start": 17939, + "end": 17949, "loc": { "start": { - "line": 265, + "line": 338, "column": 31 }, "end": { - "line": 265, + "line": 338, "column": 41 }, "identifierName": "dtxEnabled" @@ -15245,44 +15245,44 @@ }, { "type": "VariableDeclaration", - "start": 14398, - "end": 14428, + "start": 17972, + "end": 18002, "loc": { "start": { - "line": 268, + "line": 341, "column": 8 }, "end": { - "line": 268, + "line": 341, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14404, - "end": 14427, + "start": 17978, + "end": 18001, "loc": { "start": { - "line": 268, + "line": 341, "column": 14 }, "end": { - "line": 268, + "line": 341, "column": 37 } }, "id": { "type": "Identifier", - "start": 14404, - "end": 14411, + "start": 17978, + "end": 17985, "loc": { "start": { - "line": 268, + "line": 341, "column": 14 }, "end": { - "line": 268, + "line": 341, "column": 21 }, "identifierName": "modelId" @@ -15291,29 +15291,29 @@ }, "init": { "type": "MemberExpression", - "start": 14414, - "end": 14427, + "start": 17988, + "end": 18001, "loc": { "start": { - "line": 268, + "line": 341, "column": 24 }, "end": { - "line": 268, + "line": 341, "column": 37 } }, "object": { "type": "Identifier", - "start": 14414, - "end": 14424, + "start": 17988, + "end": 17998, "loc": { "start": { - "line": 268, + "line": 341, "column": 24 }, "end": { - "line": 268, + "line": 341, "column": 34 }, "identifierName": "sceneModel" @@ -15322,15 +15322,15 @@ }, "property": { "type": "Identifier", - "start": 14425, - "end": 14427, + "start": 17999, + "end": 18001, "loc": { "start": { - "line": 268, + "line": 341, "column": 35 }, "end": { - "line": 268, + "line": 341, "column": 37 }, "identifierName": "id" @@ -15346,15 +15346,15 @@ { "type": "CommentLine", "value": " In case ID was auto-generated", - "start": 14430, - "end": 14462, + "start": 18004, + "end": 18036, "loc": { "start": { - "line": 268, + "line": 341, "column": 40 }, "end": { - "line": 268, + "line": 341, "column": 72 } } @@ -15363,43 +15363,43 @@ }, { "type": "IfStatement", - "start": 14472, - "end": 14635, + "start": 18046, + "end": 18209, "loc": { "start": { - "line": 270, + "line": 343, "column": 8 }, "end": { - "line": 273, + "line": 346, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 14476, - "end": 14503, + "start": 18050, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 12 }, "end": { - "line": 270, + "line": 343, "column": 39 } }, "left": { "type": "UnaryExpression", - "start": 14476, - "end": 14487, + "start": 18050, + "end": 18061, "loc": { "start": { - "line": 270, + "line": 343, "column": 12 }, "end": { - "line": 270, + "line": 343, "column": 23 } }, @@ -15407,29 +15407,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 14477, - "end": 14487, + "start": 18051, + "end": 18061, "loc": { "start": { - "line": 270, + "line": 343, "column": 13 }, "end": { - "line": 270, + "line": 343, "column": 23 } }, "object": { "type": "Identifier", - "start": 14477, - "end": 14483, + "start": 18051, + "end": 18057, "loc": { "start": { - "line": 270, + "line": 343, "column": 13 }, "end": { - "line": 270, + "line": 343, "column": 19 }, "identifierName": "params" @@ -15439,15 +15439,15 @@ }, "property": { "type": "Identifier", - "start": 14484, - "end": 14487, + "start": 18058, + "end": 18061, "loc": { "start": { - "line": 270, + "line": 343, "column": 20 }, "end": { - "line": 270, + "line": 343, "column": 23 }, "identifierName": "src" @@ -15465,15 +15465,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 14491, - "end": 14503, + "start": 18065, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 27 }, "end": { - "line": 270, + "line": 343, "column": 39 } }, @@ -15481,29 +15481,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 14492, - "end": 14503, + "start": 18066, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 28 }, "end": { - "line": 270, + "line": 343, "column": 39 } }, "object": { "type": "Identifier", - "start": 14492, - "end": 14498, + "start": 18066, + "end": 18072, "loc": { "start": { - "line": 270, + "line": 343, "column": 28 }, "end": { - "line": 270, + "line": 343, "column": 34 }, "identifierName": "params" @@ -15512,15 +15512,15 @@ }, "property": { "type": "Identifier", - "start": 14499, - "end": 14503, + "start": 18073, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 35 }, "end": { - "line": 270, + "line": 343, "column": 39 }, "identifierName": "gltf" @@ -15537,87 +15537,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 14505, - "end": 14635, + "start": 18079, + "end": 18209, "loc": { "start": { - "line": 270, + "line": 343, "column": 41 }, "end": { - "line": 273, + "line": 346, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 14519, - "end": 14568, + "start": 18093, + "end": 18142, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 14519, - "end": 14567, + "start": 18093, + "end": 18141, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 14519, - "end": 14529, + "start": 18093, + "end": 18103, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 14519, - "end": 14523, + "start": 18093, + "end": 18097, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 16 } } }, "property": { "type": "Identifier", - "start": 14524, - "end": 14529, + "start": 18098, + "end": 18103, "loc": { "start": { - "line": 271, + "line": 344, "column": 17 }, "end": { - "line": 271, + "line": 344, "column": 22 }, "identifierName": "error" @@ -15629,15 +15629,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 14530, - "end": 14566, + "start": 18104, + "end": 18140, "loc": { "start": { - "line": 271, + "line": 344, "column": 23 }, "end": { - "line": 271, + "line": 344, "column": 59 } }, @@ -15652,29 +15652,29 @@ }, { "type": "ReturnStatement", - "start": 14581, - "end": 14599, + "start": 18155, + "end": 18173, "loc": { "start": { - "line": 272, + "line": 345, "column": 12 }, "end": { - "line": 272, + "line": 345, "column": 30 } }, "argument": { "type": "Identifier", - "start": 14588, - "end": 14598, + "start": 18162, + "end": 18172, "loc": { "start": { - "line": 272, + "line": 345, "column": 19 }, "end": { - "line": 272, + "line": 345, "column": 29 }, "identifierName": "sceneModel" @@ -15685,15 +15685,15 @@ { "type": "CommentLine", "value": " Return new empty model", - "start": 14600, - "end": 14625, + "start": 18174, + "end": 18199, "loc": { "start": { - "line": 272, + "line": 345, "column": 31 }, "end": { - "line": 272, + "line": 345, "column": 56 } } @@ -15708,15 +15708,15 @@ { "type": "CommentLine", "value": " In case ID was auto-generated", - "start": 14430, - "end": 14462, + "start": 18004, + "end": 18036, "loc": { "start": { - "line": 268, + "line": 341, "column": 40 }, "end": { - "line": 268, + "line": 341, "column": 72 } } @@ -15725,57 +15725,57 @@ }, { "type": "IfStatement", - "start": 14645, - "end": 19367, + "start": 18219, + "end": 22941, "loc": { "start": { - "line": 275, + "line": 348, "column": 8 }, "end": { - "line": 405, + "line": 478, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 14649, - "end": 14692, + "start": 18223, + "end": 18266, "loc": { "start": { - "line": 275, + "line": 348, "column": 12 }, "end": { - "line": 275, + "line": 348, "column": 55 } }, "left": { "type": "MemberExpression", - "start": 14649, - "end": 14668, + "start": 18223, + "end": 18242, "loc": { "start": { - "line": 275, + "line": 348, "column": 12 }, "end": { - "line": 275, + "line": 348, "column": 31 } }, "object": { "type": "Identifier", - "start": 14649, - "end": 14655, + "start": 18223, + "end": 18229, "loc": { "start": { - "line": 275, + "line": 348, "column": 12 }, "end": { - "line": 275, + "line": 348, "column": 18 }, "identifierName": "params" @@ -15784,15 +15784,15 @@ }, "property": { "type": "Identifier", - "start": 14656, - "end": 14668, + "start": 18230, + "end": 18242, "loc": { "start": { - "line": 275, + "line": 348, "column": 19 }, "end": { - "line": 275, + "line": 348, "column": 31 }, "identifierName": "metaModelSrc" @@ -15804,29 +15804,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 14672, - "end": 14692, + "start": 18246, + "end": 18266, "loc": { "start": { - "line": 275, + "line": 348, "column": 35 }, "end": { - "line": 275, + "line": 348, "column": 55 } }, "object": { "type": "Identifier", - "start": 14672, - "end": 14678, + "start": 18246, + "end": 18252, "loc": { "start": { - "line": 275, + "line": 348, "column": 35 }, "end": { - "line": 275, + "line": 348, "column": 41 }, "identifierName": "params" @@ -15835,15 +15835,15 @@ }, "property": { "type": "Identifier", - "start": 14679, - "end": 14692, + "start": 18253, + "end": 18266, "loc": { "start": { - "line": 275, + "line": 348, "column": 42 }, "end": { - "line": 275, + "line": 348, "column": 55 }, "identifierName": "metaModelJSON" @@ -15855,59 +15855,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 14694, - "end": 18530, + "start": 18268, + "end": 22104, "loc": { "start": { - "line": 275, + "line": 348, "column": 57 }, "end": { - "line": 379, + "line": 452, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 14709, - "end": 14799, + "start": 18283, + "end": 18373, "loc": { "start": { - "line": 277, + "line": 350, "column": 12 }, "end": { - "line": 277, + "line": 350, "column": 102 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14715, - "end": 14798, + "start": 18289, + "end": 18372, "loc": { "start": { - "line": 277, + "line": 350, "column": 18 }, "end": { - "line": 277, + "line": 350, "column": 101 } }, "id": { "type": "Identifier", - "start": 14715, - "end": 14729, + "start": 18289, + "end": 18303, "loc": { "start": { - "line": 277, + "line": 350, "column": 18 }, "end": { - "line": 277, + "line": 350, "column": 32 }, "identifierName": "objectDefaults" @@ -15916,57 +15916,57 @@ }, "init": { "type": "LogicalExpression", - "start": 14732, - "end": 14798, + "start": 18306, + "end": 18372, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 101 } }, "left": { "type": "LogicalExpression", - "start": 14732, - "end": 14777, + "start": 18306, + "end": 18351, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 80 } }, "left": { "type": "MemberExpression", - "start": 14732, - "end": 14753, + "start": 18306, + "end": 18327, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 56 } }, "object": { "type": "Identifier", - "start": 14732, - "end": 14738, + "start": 18306, + "end": 18312, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 41 }, "identifierName": "params" @@ -15975,15 +15975,15 @@ }, "property": { "type": "Identifier", - "start": 14739, - "end": 14753, + "start": 18313, + "end": 18327, "loc": { "start": { - "line": 277, + "line": 350, "column": 42 }, "end": { - "line": 277, + "line": 350, "column": 56 }, "identifierName": "objectDefaults" @@ -15995,44 +15995,44 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 14757, - "end": 14777, + "start": 18331, + "end": 18351, "loc": { "start": { - "line": 277, + "line": 350, "column": 60 }, "end": { - "line": 277, + "line": 350, "column": 80 } }, "object": { "type": "ThisExpression", - "start": 14757, - "end": 14761, + "start": 18331, + "end": 18335, "loc": { "start": { - "line": 277, + "line": 350, "column": 60 }, "end": { - "line": 277, + "line": 350, "column": 64 } } }, "property": { "type": "Identifier", - "start": 14762, - "end": 14777, + "start": 18336, + "end": 18351, "loc": { "start": { - "line": 277, + "line": 350, "column": 65 }, "end": { - "line": 277, + "line": 350, "column": 80 }, "identifierName": "_objectDefaults" @@ -16045,15 +16045,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 14781, - "end": 14798, + "start": 18355, + "end": 18372, "loc": { "start": { - "line": 277, + "line": 350, "column": 84 }, "end": { - "line": 277, + "line": 350, "column": 101 }, "identifierName": "IFCObjectDefaults" @@ -16067,44 +16067,44 @@ }, { "type": "VariableDeclaration", - "start": 14813, - "end": 17776, + "start": 18387, + "end": 21350, "loc": { "start": { - "line": 279, + "line": 352, "column": 12 }, "end": { - "line": 355, + "line": 428, "column": 14 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14819, - "end": 17775, + "start": 18393, + "end": 21349, "loc": { "start": { - "line": 279, + "line": 352, "column": 18 }, "end": { - "line": 355, + "line": 428, "column": 13 } }, "id": { "type": "Identifier", - "start": 14819, - "end": 14839, + "start": 18393, + "end": 18413, "loc": { "start": { - "line": 279, + "line": 352, "column": 18 }, "end": { - "line": 279, + "line": 352, "column": 38 }, "identifierName": "processMetaModelJSON" @@ -16113,15 +16113,15 @@ }, "init": { "type": "ArrowFunctionExpression", - "start": 14842, - "end": 17775, + "start": 18416, + "end": 21349, "loc": { "start": { - "line": 279, + "line": 352, "column": 41 }, "end": { - "line": 355, + "line": 428, "column": 13 } }, @@ -16132,15 +16132,15 @@ "params": [ { "type": "Identifier", - "start": 14843, - "end": 14856, + "start": 18417, + "end": 18430, "loc": { "start": { - "line": 279, + "line": 352, "column": 42 }, "end": { - "line": 279, + "line": 352, "column": 55 }, "identifierName": "metaModelJSON" @@ -16150,115 +16150,115 @@ ], "body": { "type": "BlockStatement", - "start": 14861, - "end": 17775, + "start": 18435, + "end": 21349, "loc": { "start": { - "line": 279, + "line": 352, "column": 60 }, "end": { - "line": 355, + "line": 428, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 14880, - "end": 15072, + "start": 18454, + "end": 18646, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 284, + "line": 357, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 14880, - "end": 15071, + "start": 18454, + "end": 18645, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 284, + "line": 357, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 14880, - "end": 14917, + "start": 18454, + "end": 18491, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 14880, - "end": 14901, + "start": 18454, + "end": 18475, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 14880, - "end": 14891, + "start": 18454, + "end": 18465, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 14880, - "end": 14884, + "start": 18454, + "end": 18458, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 20 } } }, "property": { "type": "Identifier", - "start": 14885, - "end": 14891, + "start": 18459, + "end": 18465, "loc": { "start": { - "line": 281, + "line": 354, "column": 21 }, "end": { - "line": 281, + "line": 354, "column": 27 }, "identifierName": "viewer" @@ -16269,15 +16269,15 @@ }, "property": { "type": "Identifier", - "start": 14892, - "end": 14901, + "start": 18466, + "end": 18475, "loc": { "start": { - "line": 281, + "line": 354, "column": 28 }, "end": { - "line": 281, + "line": 354, "column": 37 }, "identifierName": "metaScene" @@ -16288,15 +16288,15 @@ }, "property": { "type": "Identifier", - "start": 14902, - "end": 14917, + "start": 18476, + "end": 18491, "loc": { "start": { - "line": 281, + "line": 354, "column": 38 }, "end": { - "line": 281, + "line": 354, "column": 53 }, "identifierName": "createMetaModel" @@ -16308,15 +16308,15 @@ "arguments": [ { "type": "Identifier", - "start": 14918, - "end": 14925, + "start": 18492, + "end": 18499, "loc": { "start": { - "line": 281, + "line": 354, "column": 54 }, "end": { - "line": 281, + "line": 354, "column": 61 }, "identifierName": "modelId" @@ -16325,15 +16325,15 @@ }, { "type": "Identifier", - "start": 14927, - "end": 14940, + "start": 18501, + "end": 18514, "loc": { "start": { - "line": 281, + "line": 354, "column": 63 }, "end": { - "line": 281, + "line": 354, "column": 76 }, "identifierName": "metaModelJSON" @@ -16342,30 +16342,30 @@ }, { "type": "ObjectExpression", - "start": 14942, - "end": 15070, + "start": 18516, + "end": 18644, "loc": { "start": { - "line": 281, + "line": 354, "column": 78 }, "end": { - "line": 284, + "line": 357, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 14964, - "end": 14997, + "start": 18538, + "end": 18571, "loc": { "start": { - "line": 282, + "line": 355, "column": 20 }, "end": { - "line": 282, + "line": 355, "column": 53 } }, @@ -16374,15 +16374,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 14964, - "end": 14976, + "start": 18538, + "end": 18550, "loc": { "start": { - "line": 282, + "line": 355, "column": 20 }, "end": { - "line": 282, + "line": 355, "column": 32 }, "identifierName": "includeTypes" @@ -16391,29 +16391,29 @@ }, "value": { "type": "MemberExpression", - "start": 14978, - "end": 14997, + "start": 18552, + "end": 18571, "loc": { "start": { - "line": 282, + "line": 355, "column": 34 }, "end": { - "line": 282, + "line": 355, "column": 53 } }, "object": { "type": "Identifier", - "start": 14978, - "end": 14984, + "start": 18552, + "end": 18558, "loc": { "start": { - "line": 282, + "line": 355, "column": 34 }, "end": { - "line": 282, + "line": 355, "column": 40 }, "identifierName": "params" @@ -16422,15 +16422,15 @@ }, "property": { "type": "Identifier", - "start": 14985, - "end": 14997, + "start": 18559, + "end": 18571, "loc": { "start": { - "line": 282, + "line": 355, "column": 41 }, "end": { - "line": 282, + "line": 355, "column": 53 }, "identifierName": "includeTypes" @@ -16442,15 +16442,15 @@ }, { "type": "ObjectProperty", - "start": 15019, - "end": 15052, + "start": 18593, + "end": 18626, "loc": { "start": { - "line": 283, + "line": 356, "column": 20 }, "end": { - "line": 283, + "line": 356, "column": 53 } }, @@ -16459,15 +16459,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 15019, - "end": 15031, + "start": 18593, + "end": 18605, "loc": { "start": { - "line": 283, + "line": 356, "column": 20 }, "end": { - "line": 283, + "line": 356, "column": 32 }, "identifierName": "excludeTypes" @@ -16476,29 +16476,29 @@ }, "value": { "type": "MemberExpression", - "start": 15033, - "end": 15052, + "start": 18607, + "end": 18626, "loc": { "start": { - "line": 283, + "line": 356, "column": 34 }, "end": { - "line": 283, + "line": 356, "column": 53 } }, "object": { "type": "Identifier", - "start": 15033, - "end": 15039, + "start": 18607, + "end": 18613, "loc": { "start": { - "line": 283, + "line": 356, "column": 34 }, "end": { - "line": 283, + "line": 356, "column": 40 }, "identifierName": "params" @@ -16507,15 +16507,15 @@ }, "property": { "type": "Identifier", - "start": 15040, - "end": 15052, + "start": 18614, + "end": 18626, "loc": { "start": { - "line": 283, + "line": 356, "column": 41 }, "end": { - "line": 283, + "line": 356, "column": 53 }, "identifierName": "excludeTypes" @@ -16532,29 +16532,29 @@ }, { "type": "ExpressionStatement", - "start": 15090, - "end": 15135, + "start": 18664, + "end": 18709, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 61 } }, "expression": { "type": "UpdateExpression", - "start": 15090, - "end": 15134, + "start": 18664, + "end": 18708, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 60 } }, @@ -16562,100 +16562,100 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 15090, - "end": 15132, + "start": 18664, + "end": 18706, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 15090, - "end": 15122, + "start": 18664, + "end": 18696, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 15090, - "end": 15114, + "start": 18664, + "end": 18688, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 15090, - "end": 15107, + "start": 18664, + "end": 18681, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 15090, - "end": 15101, + "start": 18664, + "end": 18675, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 15090, - "end": 15094, + "start": 18664, + "end": 18668, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 20 } } }, "property": { "type": "Identifier", - "start": 15095, - "end": 15101, + "start": 18669, + "end": 18675, "loc": { "start": { - "line": 286, + "line": 359, "column": 21 }, "end": { - "line": 286, + "line": 359, "column": 27 }, "identifierName": "viewer" @@ -16666,15 +16666,15 @@ }, "property": { "type": "Identifier", - "start": 15102, - "end": 15107, + "start": 18676, + "end": 18681, "loc": { "start": { - "line": 286, + "line": 359, "column": 28 }, "end": { - "line": 286, + "line": 359, "column": 33 }, "identifierName": "scene" @@ -16685,15 +16685,15 @@ }, "property": { "type": "Identifier", - "start": 15108, - "end": 15114, + "start": 18682, + "end": 18688, "loc": { "start": { - "line": 286, + "line": 359, "column": 34 }, "end": { - "line": 286, + "line": 359, "column": 40 }, "identifierName": "canvas" @@ -16704,15 +16704,15 @@ }, "property": { "type": "Identifier", - "start": 15115, - "end": 15122, + "start": 18689, + "end": 18696, "loc": { "start": { - "line": 286, + "line": 359, "column": 41 }, "end": { - "line": 286, + "line": 359, "column": 48 }, "identifierName": "spinner" @@ -16723,15 +16723,15 @@ }, "property": { "type": "Identifier", - "start": 15123, - "end": 15132, + "start": 18697, + "end": 18706, "loc": { "start": { - "line": 286, + "line": 359, "column": 49 }, "end": { - "line": 286, + "line": 359, "column": 58 }, "identifierName": "processes" @@ -16744,44 +16744,44 @@ }, { "type": "VariableDeclaration", - "start": 15153, - "end": 15170, + "start": 18727, + "end": 18744, "loc": { "start": { - "line": 288, + "line": 361, "column": 16 }, "end": { - "line": 288, + "line": 361, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15157, - "end": 15169, + "start": 18731, + "end": 18743, "loc": { "start": { - "line": 288, + "line": 361, "column": 20 }, "end": { - "line": 288, + "line": 361, "column": 32 } }, "id": { "type": "Identifier", - "start": 15157, - "end": 15169, + "start": 18731, + "end": 18743, "loc": { "start": { - "line": 288, + "line": 361, "column": 20 }, "end": { - "line": 288, + "line": 361, "column": 32 }, "identifierName": "includeTypes" @@ -16795,43 +16795,43 @@ }, { "type": "IfStatement", - "start": 15187, - "end": 15447, + "start": 18761, + "end": 19021, "loc": { "start": { - "line": 289, + "line": 362, "column": 16 }, "end": { - "line": 294, + "line": 367, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 15191, - "end": 15210, + "start": 18765, + "end": 18784, "loc": { "start": { - "line": 289, + "line": 362, "column": 20 }, "end": { - "line": 289, + "line": 362, "column": 39 } }, "object": { "type": "Identifier", - "start": 15191, - "end": 15197, + "start": 18765, + "end": 18771, "loc": { "start": { - "line": 289, + "line": 362, "column": 20 }, "end": { - "line": 289, + "line": 362, "column": 26 }, "identifierName": "params" @@ -16840,15 +16840,15 @@ }, "property": { "type": "Identifier", - "start": 15198, - "end": 15210, + "start": 18772, + "end": 18784, "loc": { "start": { - "line": 289, + "line": 362, "column": 27 }, "end": { - "line": 289, + "line": 362, "column": 39 }, "identifierName": "includeTypes" @@ -16859,59 +16859,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 15212, - "end": 15447, + "start": 18786, + "end": 19021, "loc": { "start": { - "line": 289, + "line": 362, "column": 41 }, "end": { - "line": 294, + "line": 367, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 15234, - "end": 15252, + "start": 18808, + "end": 18826, "loc": { "start": { - "line": 290, + "line": 363, "column": 20 }, "end": { - "line": 290, + "line": 363, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 15234, - "end": 15251, + "start": 18808, + "end": 18825, "loc": { "start": { - "line": 290, + "line": 363, "column": 20 }, "end": { - "line": 290, + "line": 363, "column": 37 } }, "operator": "=", "left": { "type": "Identifier", - "start": 15234, - "end": 15246, + "start": 18808, + "end": 18820, "loc": { "start": { - "line": 290, + "line": 363, "column": 20 }, "end": { - "line": 290, + "line": 363, "column": 32 }, "identifierName": "includeTypes" @@ -16920,15 +16920,15 @@ }, "right": { "type": "ObjectExpression", - "start": 15249, - "end": 15251, + "start": 18823, + "end": 18825, "loc": { "start": { - "line": 290, + "line": 363, "column": 35 }, "end": { - "line": 290, + "line": 363, "column": 37 } }, @@ -16938,58 +16938,58 @@ }, { "type": "ForStatement", - "start": 15273, - "end": 15429, + "start": 18847, + "end": 19003, "loc": { "start": { - "line": 291, + "line": 364, "column": 20 }, "end": { - "line": 293, + "line": 366, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 15278, - "end": 15321, + "start": 18852, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 25 }, "end": { - "line": 291, + "line": 364, "column": 68 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15282, - "end": 15287, + "start": 18856, + "end": 18861, "loc": { "start": { - "line": 291, + "line": 364, "column": 29 }, "end": { - "line": 291, + "line": 364, "column": 34 } }, "id": { "type": "Identifier", - "start": 15282, - "end": 15283, + "start": 18856, + "end": 18857, "loc": { "start": { - "line": 291, + "line": 364, "column": 29 }, "end": { - "line": 291, + "line": 364, "column": 30 }, "identifierName": "i" @@ -16998,15 +16998,15 @@ }, "init": { "type": "NumericLiteral", - "start": 15286, - "end": 15287, + "start": 18860, + "end": 18861, "loc": { "start": { - "line": 291, + "line": 364, "column": 33 }, "end": { - "line": 291, + "line": 364, "column": 34 } }, @@ -17019,29 +17019,29 @@ }, { "type": "VariableDeclarator", - "start": 15289, - "end": 15321, + "start": 18863, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 36 }, "end": { - "line": 291, + "line": 364, "column": 68 } }, "id": { "type": "Identifier", - "start": 15289, - "end": 15292, + "start": 18863, + "end": 18866, "loc": { "start": { - "line": 291, + "line": 364, "column": 36 }, "end": { - "line": 291, + "line": 364, "column": 39 }, "identifierName": "len" @@ -17050,43 +17050,43 @@ }, "init": { "type": "MemberExpression", - "start": 15295, - "end": 15321, + "start": 18869, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 42 }, "end": { - "line": 291, + "line": 364, "column": 68 } }, "object": { "type": "MemberExpression", - "start": 15295, - "end": 15314, + "start": 18869, + "end": 18888, "loc": { "start": { - "line": 291, + "line": 364, "column": 42 }, "end": { - "line": 291, + "line": 364, "column": 61 } }, "object": { "type": "Identifier", - "start": 15295, - "end": 15301, + "start": 18869, + "end": 18875, "loc": { "start": { - "line": 291, + "line": 364, "column": 42 }, "end": { - "line": 291, + "line": 364, "column": 48 }, "identifierName": "params" @@ -17095,15 +17095,15 @@ }, "property": { "type": "Identifier", - "start": 15302, - "end": 15314, + "start": 18876, + "end": 18888, "loc": { "start": { - "line": 291, + "line": 364, "column": 49 }, "end": { - "line": 291, + "line": 364, "column": 61 }, "identifierName": "includeTypes" @@ -17114,15 +17114,15 @@ }, "property": { "type": "Identifier", - "start": 15315, - "end": 15321, + "start": 18889, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 62 }, "end": { - "line": 291, + "line": 364, "column": 68 }, "identifierName": "length" @@ -17137,29 +17137,29 @@ }, "test": { "type": "BinaryExpression", - "start": 15323, - "end": 15330, + "start": 18897, + "end": 18904, "loc": { "start": { - "line": 291, + "line": 364, "column": 70 }, "end": { - "line": 291, + "line": 364, "column": 77 } }, "left": { "type": "Identifier", - "start": 15323, - "end": 15324, + "start": 18897, + "end": 18898, "loc": { "start": { - "line": 291, + "line": 364, "column": 70 }, "end": { - "line": 291, + "line": 364, "column": 71 }, "identifierName": "i" @@ -17169,15 +17169,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 15327, - "end": 15330, + "start": 18901, + "end": 18904, "loc": { "start": { - "line": 291, + "line": 364, "column": 74 }, "end": { - "line": 291, + "line": 364, "column": 77 }, "identifierName": "len" @@ -17187,15 +17187,15 @@ }, "update": { "type": "UpdateExpression", - "start": 15332, - "end": 15335, + "start": 18906, + "end": 18909, "loc": { "start": { - "line": 291, + "line": 364, "column": 79 }, "end": { - "line": 291, + "line": 364, "column": 82 } }, @@ -17203,15 +17203,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 15332, - "end": 15333, + "start": 18906, + "end": 18907, "loc": { "start": { - "line": 291, + "line": 364, "column": 79 }, "end": { - "line": 291, + "line": 364, "column": 80 }, "identifierName": "i" @@ -17221,73 +17221,73 @@ }, "body": { "type": "BlockStatement", - "start": 15337, - "end": 15429, + "start": 18911, + "end": 19003, "loc": { "start": { - "line": 291, + "line": 364, "column": 84 }, "end": { - "line": 293, + "line": 366, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 15363, - "end": 15407, + "start": 18937, + "end": 18981, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 15363, - "end": 15406, + "start": 18937, + "end": 18980, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15363, - "end": 15399, + "start": 18937, + "end": 18973, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 60 } }, "object": { "type": "Identifier", - "start": 15363, - "end": 15375, + "start": 18937, + "end": 18949, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 36 }, "identifierName": "includeTypes" @@ -17296,43 +17296,43 @@ }, "property": { "type": "MemberExpression", - "start": 15376, - "end": 15398, + "start": 18950, + "end": 18972, "loc": { "start": { - "line": 292, + "line": 365, "column": 37 }, "end": { - "line": 292, + "line": 365, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 15376, - "end": 15395, + "start": 18950, + "end": 18969, "loc": { "start": { - "line": 292, + "line": 365, "column": 37 }, "end": { - "line": 292, + "line": 365, "column": 56 } }, "object": { "type": "Identifier", - "start": 15376, - "end": 15382, + "start": 18950, + "end": 18956, "loc": { "start": { - "line": 292, + "line": 365, "column": 37 }, "end": { - "line": 292, + "line": 365, "column": 43 }, "identifierName": "params" @@ -17341,15 +17341,15 @@ }, "property": { "type": "Identifier", - "start": 15383, - "end": 15395, + "start": 18957, + "end": 18969, "loc": { "start": { - "line": 292, + "line": 365, "column": 44 }, "end": { - "line": 292, + "line": 365, "column": 56 }, "identifierName": "includeTypes" @@ -17360,15 +17360,15 @@ }, "property": { "type": "Identifier", - "start": 15396, - "end": 15397, + "start": 18970, + "end": 18971, "loc": { "start": { - "line": 292, + "line": 365, "column": 57 }, "end": { - "line": 292, + "line": 365, "column": 58 }, "identifierName": "i" @@ -17381,15 +17381,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 15402, - "end": 15406, + "start": 18976, + "end": 18980, "loc": { "start": { - "line": 292, + "line": 365, "column": 63 }, "end": { - "line": 292, + "line": 365, "column": 67 } }, @@ -17408,44 +17408,44 @@ }, { "type": "VariableDeclaration", - "start": 15465, - "end": 15482, + "start": 19039, + "end": 19056, "loc": { "start": { - "line": 296, + "line": 369, "column": 16 }, "end": { - "line": 296, + "line": 369, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15469, - "end": 15481, + "start": 19043, + "end": 19055, "loc": { "start": { - "line": 296, + "line": 369, "column": 20 }, "end": { - "line": 296, + "line": 369, "column": 32 } }, "id": { "type": "Identifier", - "start": 15469, - "end": 15481, + "start": 19043, + "end": 19055, "loc": { "start": { - "line": 296, + "line": 369, "column": 20 }, "end": { - "line": 296, + "line": 369, "column": 32 }, "identifierName": "excludeTypes" @@ -17459,43 +17459,43 @@ }, { "type": "IfStatement", - "start": 15499, - "end": 15865, + "start": 19073, + "end": 19439, "loc": { "start": { - "line": 297, + "line": 370, "column": 16 }, "end": { - "line": 305, + "line": 378, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 15503, - "end": 15522, + "start": 19077, + "end": 19096, "loc": { "start": { - "line": 297, + "line": 370, "column": 20 }, "end": { - "line": 297, + "line": 370, "column": 39 } }, "object": { "type": "Identifier", - "start": 15503, - "end": 15509, + "start": 19077, + "end": 19083, "loc": { "start": { - "line": 297, + "line": 370, "column": 20 }, "end": { - "line": 297, + "line": 370, "column": 26 }, "identifierName": "params" @@ -17504,15 +17504,15 @@ }, "property": { "type": "Identifier", - "start": 15510, - "end": 15522, + "start": 19084, + "end": 19096, "loc": { "start": { - "line": 297, + "line": 370, "column": 27 }, "end": { - "line": 297, + "line": 370, "column": 39 }, "identifierName": "excludeTypes" @@ -17523,59 +17523,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 15524, - "end": 15865, + "start": 19098, + "end": 19439, "loc": { "start": { - "line": 297, + "line": 370, "column": 41 }, "end": { - "line": 305, + "line": 378, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 15546, - "end": 15564, + "start": 19120, + "end": 19138, "loc": { "start": { - "line": 298, + "line": 371, "column": 20 }, "end": { - "line": 298, + "line": 371, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 15546, - "end": 15563, + "start": 19120, + "end": 19137, "loc": { "start": { - "line": 298, + "line": 371, "column": 20 }, "end": { - "line": 298, + "line": 371, "column": 37 } }, "operator": "=", "left": { "type": "Identifier", - "start": 15546, - "end": 15558, + "start": 19120, + "end": 19132, "loc": { "start": { - "line": 298, + "line": 371, "column": 20 }, "end": { - "line": 298, + "line": 371, "column": 32 }, "identifierName": "excludeTypes" @@ -17584,15 +17584,15 @@ }, "right": { "type": "ObjectExpression", - "start": 15561, - "end": 15563, + "start": 19135, + "end": 19137, "loc": { "start": { - "line": 298, + "line": 371, "column": 35 }, "end": { - "line": 298, + "line": 371, "column": 37 } }, @@ -17602,29 +17602,29 @@ }, { "type": "IfStatement", - "start": 15585, - "end": 15670, + "start": 19159, + "end": 19244, "loc": { "start": { - "line": 299, + "line": 372, "column": 20 }, "end": { - "line": 301, + "line": 374, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 15589, - "end": 15602, + "start": 19163, + "end": 19176, "loc": { "start": { - "line": 299, + "line": 372, "column": 24 }, "end": { - "line": 299, + "line": 372, "column": 37 } }, @@ -17632,15 +17632,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 15590, - "end": 15602, + "start": 19164, + "end": 19176, "loc": { "start": { - "line": 299, + "line": 372, "column": 25 }, "end": { - "line": 299, + "line": 372, "column": 37 }, "identifierName": "includeTypes" @@ -17653,59 +17653,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 15604, - "end": 15670, + "start": 19178, + "end": 19244, "loc": { "start": { - "line": 299, + "line": 372, "column": 39 }, "end": { - "line": 301, + "line": 374, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 15630, - "end": 15648, + "start": 19204, + "end": 19222, "loc": { "start": { - "line": 300, + "line": 373, "column": 24 }, "end": { - "line": 300, + "line": 373, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 15630, - "end": 15647, + "start": 19204, + "end": 19221, "loc": { "start": { - "line": 300, + "line": 373, "column": 24 }, "end": { - "line": 300, + "line": 373, "column": 41 } }, "operator": "=", "left": { "type": "Identifier", - "start": 15630, - "end": 15642, + "start": 19204, + "end": 19216, "loc": { "start": { - "line": 300, + "line": 373, "column": 24 }, "end": { - "line": 300, + "line": 373, "column": 36 }, "identifierName": "includeTypes" @@ -17714,15 +17714,15 @@ }, "right": { "type": "ObjectExpression", - "start": 15645, - "end": 15647, + "start": 19219, + "end": 19221, "loc": { "start": { - "line": 300, + "line": 373, "column": 39 }, "end": { - "line": 300, + "line": 373, "column": 41 } }, @@ -17737,58 +17737,58 @@ }, { "type": "ForStatement", - "start": 15691, - "end": 15847, + "start": 19265, + "end": 19421, "loc": { "start": { - "line": 302, + "line": 375, "column": 20 }, "end": { - "line": 304, + "line": 377, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 15696, - "end": 15739, + "start": 19270, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 25 }, "end": { - "line": 302, + "line": 375, "column": 68 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15700, - "end": 15705, + "start": 19274, + "end": 19279, "loc": { "start": { - "line": 302, + "line": 375, "column": 29 }, "end": { - "line": 302, + "line": 375, "column": 34 } }, "id": { "type": "Identifier", - "start": 15700, - "end": 15701, + "start": 19274, + "end": 19275, "loc": { "start": { - "line": 302, + "line": 375, "column": 29 }, "end": { - "line": 302, + "line": 375, "column": 30 }, "identifierName": "i" @@ -17797,15 +17797,15 @@ }, "init": { "type": "NumericLiteral", - "start": 15704, - "end": 15705, + "start": 19278, + "end": 19279, "loc": { "start": { - "line": 302, + "line": 375, "column": 33 }, "end": { - "line": 302, + "line": 375, "column": 34 } }, @@ -17818,29 +17818,29 @@ }, { "type": "VariableDeclarator", - "start": 15707, - "end": 15739, + "start": 19281, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 36 }, "end": { - "line": 302, + "line": 375, "column": 68 } }, "id": { "type": "Identifier", - "start": 15707, - "end": 15710, + "start": 19281, + "end": 19284, "loc": { "start": { - "line": 302, + "line": 375, "column": 36 }, "end": { - "line": 302, + "line": 375, "column": 39 }, "identifierName": "len" @@ -17849,43 +17849,43 @@ }, "init": { "type": "MemberExpression", - "start": 15713, - "end": 15739, + "start": 19287, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 42 }, "end": { - "line": 302, + "line": 375, "column": 68 } }, "object": { "type": "MemberExpression", - "start": 15713, - "end": 15732, + "start": 19287, + "end": 19306, "loc": { "start": { - "line": 302, + "line": 375, "column": 42 }, "end": { - "line": 302, + "line": 375, "column": 61 } }, "object": { "type": "Identifier", - "start": 15713, - "end": 15719, + "start": 19287, + "end": 19293, "loc": { "start": { - "line": 302, + "line": 375, "column": 42 }, "end": { - "line": 302, + "line": 375, "column": 48 }, "identifierName": "params" @@ -17894,15 +17894,15 @@ }, "property": { "type": "Identifier", - "start": 15720, - "end": 15732, + "start": 19294, + "end": 19306, "loc": { "start": { - "line": 302, + "line": 375, "column": 49 }, "end": { - "line": 302, + "line": 375, "column": 61 }, "identifierName": "excludeTypes" @@ -17913,15 +17913,15 @@ }, "property": { "type": "Identifier", - "start": 15733, - "end": 15739, + "start": 19307, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 62 }, "end": { - "line": 302, + "line": 375, "column": 68 }, "identifierName": "length" @@ -17936,29 +17936,29 @@ }, "test": { "type": "BinaryExpression", - "start": 15741, - "end": 15748, + "start": 19315, + "end": 19322, "loc": { "start": { - "line": 302, + "line": 375, "column": 70 }, "end": { - "line": 302, + "line": 375, "column": 77 } }, "left": { "type": "Identifier", - "start": 15741, - "end": 15742, + "start": 19315, + "end": 19316, "loc": { "start": { - "line": 302, + "line": 375, "column": 70 }, "end": { - "line": 302, + "line": 375, "column": 71 }, "identifierName": "i" @@ -17968,15 +17968,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 15745, - "end": 15748, + "start": 19319, + "end": 19322, "loc": { "start": { - "line": 302, + "line": 375, "column": 74 }, "end": { - "line": 302, + "line": 375, "column": 77 }, "identifierName": "len" @@ -17986,15 +17986,15 @@ }, "update": { "type": "UpdateExpression", - "start": 15750, - "end": 15753, + "start": 19324, + "end": 19327, "loc": { "start": { - "line": 302, + "line": 375, "column": 79 }, "end": { - "line": 302, + "line": 375, "column": 82 } }, @@ -18002,15 +18002,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 15750, - "end": 15751, + "start": 19324, + "end": 19325, "loc": { "start": { - "line": 302, + "line": 375, "column": 79 }, "end": { - "line": 302, + "line": 375, "column": 80 }, "identifierName": "i" @@ -18020,73 +18020,73 @@ }, "body": { "type": "BlockStatement", - "start": 15755, - "end": 15847, + "start": 19329, + "end": 19421, "loc": { "start": { - "line": 302, + "line": 375, "column": 84 }, "end": { - "line": 304, + "line": 377, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 15781, - "end": 15825, + "start": 19355, + "end": 19399, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 15781, - "end": 15824, + "start": 19355, + "end": 19398, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15781, - "end": 15817, + "start": 19355, + "end": 19391, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 60 } }, "object": { "type": "Identifier", - "start": 15781, - "end": 15793, + "start": 19355, + "end": 19367, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 36 }, "identifierName": "includeTypes" @@ -18095,43 +18095,43 @@ }, "property": { "type": "MemberExpression", - "start": 15794, - "end": 15816, + "start": 19368, + "end": 19390, "loc": { "start": { - "line": 303, + "line": 376, "column": 37 }, "end": { - "line": 303, + "line": 376, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 15794, - "end": 15813, + "start": 19368, + "end": 19387, "loc": { "start": { - "line": 303, + "line": 376, "column": 37 }, "end": { - "line": 303, + "line": 376, "column": 56 } }, "object": { "type": "Identifier", - "start": 15794, - "end": 15800, + "start": 19368, + "end": 19374, "loc": { "start": { - "line": 303, + "line": 376, "column": 37 }, "end": { - "line": 303, + "line": 376, "column": 43 }, "identifierName": "params" @@ -18140,15 +18140,15 @@ }, "property": { "type": "Identifier", - "start": 15801, - "end": 15813, + "start": 19375, + "end": 19387, "loc": { "start": { - "line": 303, + "line": 376, "column": 44 }, "end": { - "line": 303, + "line": 376, "column": 56 }, "identifierName": "excludeTypes" @@ -18159,15 +18159,15 @@ }, "property": { "type": "Identifier", - "start": 15814, - "end": 15815, + "start": 19388, + "end": 19389, "loc": { "start": { - "line": 303, + "line": 376, "column": 57 }, "end": { - "line": 303, + "line": 376, "column": 58 }, "identifierName": "i" @@ -18180,15 +18180,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 15820, - "end": 15824, + "start": 19394, + "end": 19398, "loc": { "start": { - "line": 303, + "line": 376, "column": 63 }, "end": { - "line": 303, + "line": 376, "column": 67 } }, @@ -18207,58 +18207,58 @@ }, { "type": "ExpressionStatement", - "start": 15883, - "end": 15915, + "start": 19457, + "end": 19489, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 15883, - "end": 15914, + "start": 19457, + "end": 19488, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15883, - "end": 15906, + "start": 19457, + "end": 19480, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 39 } }, "object": { "type": "Identifier", - "start": 15883, - "end": 15889, + "start": 19457, + "end": 19463, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 22 }, "identifierName": "params" @@ -18267,15 +18267,15 @@ }, "property": { "type": "Identifier", - "start": 15890, - "end": 15906, + "start": 19464, + "end": 19480, "loc": { "start": { - "line": 307, + "line": 380, "column": 23 }, "end": { - "line": 307, + "line": 380, "column": 39 }, "identifierName": "readableGeometry" @@ -18286,15 +18286,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 15909, - "end": 15914, + "start": 19483, + "end": 19488, "loc": { "start": { - "line": 307, + "line": 380, "column": 42 }, "end": { - "line": 307, + "line": 380, "column": 47 } }, @@ -18304,58 +18304,58 @@ }, { "type": "ExpressionStatement", - "start": 15933, - "end": 17477, + "start": 19507, + "end": 21051, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 348, + "line": 421, "column": 18 } }, "expression": { "type": "AssignmentExpression", - "start": 15933, - "end": 17476, + "start": 19507, + "end": 21050, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 348, + "line": 421, "column": 17 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15933, - "end": 15954, + "start": 19507, + "end": 19528, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 309, + "line": 382, "column": 37 } }, "object": { "type": "Identifier", - "start": 15933, - "end": 15939, + "start": 19507, + "end": 19513, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 309, + "line": 382, "column": 22 }, "identifierName": "params" @@ -18364,15 +18364,15 @@ }, "property": { "type": "Identifier", - "start": 15940, - "end": 15954, + "start": 19514, + "end": 19528, "loc": { "start": { - "line": 309, + "line": 382, "column": 23 }, "end": { - "line": 309, + "line": 382, "column": 37 }, "identifierName": "handleGLTFNode" @@ -18383,15 +18383,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 15957, - "end": 17476, + "start": 19531, + "end": 21050, "loc": { "start": { - "line": 309, + "line": 382, "column": 40 }, "end": { - "line": 348, + "line": 421, "column": 17 } }, @@ -18402,15 +18402,15 @@ "params": [ { "type": "Identifier", - "start": 15958, - "end": 15965, + "start": 19532, + "end": 19539, "loc": { "start": { - "line": 309, + "line": 382, "column": 41 }, "end": { - "line": 309, + "line": 382, "column": 48 }, "identifierName": "modelId" @@ -18419,15 +18419,15 @@ }, { "type": "Identifier", - "start": 15967, - "end": 15975, + "start": 19541, + "end": 19549, "loc": { "start": { - "line": 309, + "line": 382, "column": 50 }, "end": { - "line": 309, + "line": 382, "column": 58 }, "identifierName": "glTFNode" @@ -18436,15 +18436,15 @@ }, { "type": "Identifier", - "start": 15977, - "end": 15984, + "start": 19551, + "end": 19558, "loc": { "start": { - "line": 309, + "line": 382, "column": 60 }, "end": { - "line": 309, + "line": 382, "column": 67 }, "identifierName": "actions" @@ -18454,59 +18454,59 @@ ], "body": { "type": "BlockStatement", - "start": 15989, - "end": 17476, + "start": 19563, + "end": 21050, "loc": { "start": { - "line": 309, + "line": 382, "column": 72 }, "end": { - "line": 348, + "line": 421, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 16012, - "end": 16039, + "start": 19586, + "end": 19613, "loc": { "start": { - "line": 311, + "line": 384, "column": 20 }, "end": { - "line": 311, + "line": 384, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16018, - "end": 16038, + "start": 19592, + "end": 19612, "loc": { "start": { - "line": 311, + "line": 384, "column": 26 }, "end": { - "line": 311, + "line": 384, "column": 46 } }, "id": { "type": "Identifier", - "start": 16018, - "end": 16022, + "start": 19592, + "end": 19596, "loc": { "start": { - "line": 311, + "line": 384, "column": 26 }, "end": { - "line": 311, + "line": 384, "column": 30 }, "identifierName": "name" @@ -18515,29 +18515,29 @@ }, "init": { "type": "MemberExpression", - "start": 16025, - "end": 16038, + "start": 19599, + "end": 19612, "loc": { "start": { - "line": 311, + "line": 384, "column": 33 }, "end": { - "line": 311, + "line": 384, "column": 46 } }, "object": { "type": "Identifier", - "start": 16025, - "end": 16033, + "start": 19599, + "end": 19607, "loc": { "start": { - "line": 311, + "line": 384, "column": 33 }, "end": { - "line": 311, + "line": 384, "column": 41 }, "identifierName": "glTFNode" @@ -18546,15 +18546,15 @@ }, "property": { "type": "Identifier", - "start": 16034, - "end": 16038, + "start": 19608, + "end": 19612, "loc": { "start": { - "line": 311, + "line": 384, "column": 42 }, "end": { - "line": 311, + "line": 384, "column": 46 }, "identifierName": "name" @@ -18569,29 +18569,29 @@ }, { "type": "IfStatement", - "start": 16061, - "end": 16173, + "start": 19635, + "end": 19747, "loc": { "start": { - "line": 313, + "line": 386, "column": 20 }, "end": { - "line": 315, + "line": 388, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 16065, - "end": 16070, + "start": 19639, + "end": 19644, "loc": { "start": { - "line": 313, + "line": 386, "column": 24 }, "end": { - "line": 313, + "line": 386, "column": 29 } }, @@ -18599,15 +18599,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 16066, - "end": 16070, + "start": 19640, + "end": 19644, "loc": { "start": { - "line": 313, + "line": 386, "column": 25 }, "end": { - "line": 313, + "line": 386, "column": 29 }, "identifierName": "name" @@ -18620,44 +18620,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 16072, - "end": 16173, + "start": 19646, + "end": 19747, "loc": { "start": { - "line": 313, + "line": 386, "column": 31 }, "end": { - "line": 315, + "line": 388, "column": 21 } }, "body": [ { "type": "ReturnStatement", - "start": 16098, - "end": 16110, + "start": 19672, + "end": 19684, "loc": { "start": { - "line": 314, + "line": 387, "column": 24 }, "end": { - "line": 314, + "line": 387, "column": 36 } }, "argument": { "type": "BooleanLiteral", - "start": 16105, - "end": 16109, + "start": 19679, + "end": 19683, "loc": { "start": { - "line": 314, + "line": 387, "column": 31 }, "end": { - "line": 314, + "line": 387, "column": 35 } }, @@ -18667,15 +18667,15 @@ { "type": "CommentLine", "value": " Continue descending this node subtree", - "start": 16111, - "end": 16151, + "start": 19685, + "end": 19725, "loc": { "start": { - "line": 314, + "line": 387, "column": 37 }, "end": { - "line": 314, + "line": 387, "column": 77 } } @@ -18689,44 +18689,44 @@ }, { "type": "VariableDeclaration", - "start": 16195, - "end": 16215, + "start": 19769, + "end": 19789, "loc": { "start": { - "line": 317, + "line": 390, "column": 20 }, "end": { - "line": 317, + "line": 390, "column": 40 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16201, - "end": 16214, + "start": 19775, + "end": 19788, "loc": { "start": { - "line": 317, + "line": 390, "column": 26 }, "end": { - "line": 317, + "line": 390, "column": 39 } }, "id": { "type": "Identifier", - "start": 16201, - "end": 16207, + "start": 19775, + "end": 19781, "loc": { "start": { - "line": 317, + "line": 390, "column": 26 }, "end": { - "line": 317, + "line": 390, "column": 32 }, "identifierName": "nodeId" @@ -18735,15 +18735,15 @@ }, "init": { "type": "Identifier", - "start": 16210, - "end": 16214, + "start": 19784, + "end": 19788, "loc": { "start": { - "line": 317, + "line": 390, "column": 35 }, "end": { - "line": 317, + "line": 390, "column": 39 }, "identifierName": "name" @@ -18756,44 +18756,44 @@ }, { "type": "VariableDeclaration", - "start": 16236, - "end": 16297, + "start": 19810, + "end": 19871, "loc": { "start": { - "line": 318, + "line": 391, "column": 20 }, "end": { - "line": 318, + "line": 391, "column": 81 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16242, - "end": 16296, + "start": 19816, + "end": 19870, "loc": { "start": { - "line": 318, + "line": 391, "column": 26 }, "end": { - "line": 318, + "line": 391, "column": 80 } }, "id": { "type": "Identifier", - "start": 16242, - "end": 16252, + "start": 19816, + "end": 19826, "loc": { "start": { - "line": 318, + "line": 391, "column": 26 }, "end": { - "line": 318, + "line": 391, "column": 36 }, "identifierName": "metaObject" @@ -18802,86 +18802,86 @@ }, "init": { "type": "MemberExpression", - "start": 16255, - "end": 16296, + "start": 19829, + "end": 19870, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 80 } }, "object": { "type": "MemberExpression", - "start": 16255, - "end": 16288, + "start": 19829, + "end": 19862, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 72 } }, "object": { "type": "MemberExpression", - "start": 16255, - "end": 16276, + "start": 19829, + "end": 19850, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 16255, - "end": 16266, + "start": 19829, + "end": 19840, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 50 } }, "object": { "type": "ThisExpression", - "start": 16255, - "end": 16259, + "start": 19829, + "end": 19833, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 43 } } }, "property": { "type": "Identifier", - "start": 16260, - "end": 16266, + "start": 19834, + "end": 19840, "loc": { "start": { - "line": 318, + "line": 391, "column": 44 }, "end": { - "line": 318, + "line": 391, "column": 50 }, "identifierName": "viewer" @@ -18892,15 +18892,15 @@ }, "property": { "type": "Identifier", - "start": 16267, - "end": 16276, + "start": 19841, + "end": 19850, "loc": { "start": { - "line": 318, + "line": 391, "column": 51 }, "end": { - "line": 318, + "line": 391, "column": 60 }, "identifierName": "metaScene" @@ -18911,15 +18911,15 @@ }, "property": { "type": "Identifier", - "start": 16277, - "end": 16288, + "start": 19851, + "end": 19862, "loc": { "start": { - "line": 318, + "line": 391, "column": 61 }, "end": { - "line": 318, + "line": 391, "column": 72 }, "identifierName": "metaObjects" @@ -18930,15 +18930,15 @@ }, "property": { "type": "Identifier", - "start": 16289, - "end": 16295, + "start": 19863, + "end": 19869, "loc": { "start": { - "line": 318, + "line": 391, "column": 73 }, "end": { - "line": 318, + "line": 391, "column": 79 }, "identifierName": "nodeId" @@ -18953,44 +18953,44 @@ }, { "type": "VariableDeclaration", - "start": 16318, - "end": 16387, + "start": 19892, + "end": 19961, "loc": { "start": { - "line": 319, + "line": 392, "column": 20 }, "end": { - "line": 319, + "line": 392, "column": 89 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16324, - "end": 16386, + "start": 19898, + "end": 19960, "loc": { "start": { - "line": 319, + "line": 392, "column": 26 }, "end": { - "line": 319, + "line": 392, "column": 88 } }, "id": { "type": "Identifier", - "start": 16324, - "end": 16328, + "start": 19898, + "end": 19902, "loc": { "start": { - "line": 319, + "line": 392, "column": 26 }, "end": { - "line": 319, + "line": 392, "column": 30 }, "identifierName": "type" @@ -18999,43 +18999,43 @@ }, "init": { "type": "LogicalExpression", - "start": 16331, - "end": 16386, + "start": 19905, + "end": 19960, "loc": { "start": { - "line": 319, + "line": 392, "column": 33 }, "end": { - "line": 319, + "line": 392, "column": 88 } }, "left": { "type": "ConditionalExpression", - "start": 16332, - "end": 16372, + "start": 19906, + "end": 19946, "loc": { "start": { - "line": 319, + "line": 392, "column": 34 }, "end": { - "line": 319, + "line": 392, "column": 74 } }, "test": { "type": "Identifier", - "start": 16332, - "end": 16342, + "start": 19906, + "end": 19916, "loc": { "start": { - "line": 319, + "line": 392, "column": 34 }, "end": { - "line": 319, + "line": 392, "column": 44 }, "identifierName": "metaObject" @@ -19044,29 +19044,29 @@ }, "consequent": { "type": "MemberExpression", - "start": 16345, - "end": 16360, + "start": 19919, + "end": 19934, "loc": { "start": { - "line": 319, + "line": 392, "column": 47 }, "end": { - "line": 319, + "line": 392, "column": 62 } }, "object": { "type": "Identifier", - "start": 16345, - "end": 16355, + "start": 19919, + "end": 19929, "loc": { "start": { - "line": 319, + "line": 392, "column": 47 }, "end": { - "line": 319, + "line": 392, "column": 57 }, "identifierName": "metaObject" @@ -19075,15 +19075,15 @@ }, "property": { "type": "Identifier", - "start": 16356, - "end": 16360, + "start": 19930, + "end": 19934, "loc": { "start": { - "line": 319, + "line": 392, "column": 58 }, "end": { - "line": 319, + "line": 392, "column": 62 }, "identifierName": "type" @@ -19094,15 +19094,15 @@ }, "alternate": { "type": "StringLiteral", - "start": 16363, - "end": 16372, + "start": 19937, + "end": 19946, "loc": { "start": { - "line": 319, + "line": 392, "column": 65 }, "end": { - "line": 319, + "line": 392, "column": 74 } }, @@ -19114,21 +19114,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 16331 + "parenStart": 19905 } }, "operator": "||", "right": { "type": "StringLiteral", - "start": 16377, - "end": 16386, + "start": 19951, + "end": 19960, "loc": { "start": { - "line": 319, + "line": 392, "column": 79 }, "end": { - "line": 319, + "line": 392, "column": 88 } }, @@ -19145,58 +19145,58 @@ }, { "type": "ExpressionStatement", - "start": 16409, - "end": 16572, + "start": 19983, + "end": 20146, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 324, + "line": 397, "column": 22 } }, "expression": { "type": "AssignmentExpression", - "start": 16409, - "end": 16571, + "start": 19983, + "end": 20145, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 324, + "line": 397, "column": 21 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16409, - "end": 16429, + "start": 19983, + "end": 20003, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 321, + "line": 394, "column": 40 } }, "object": { "type": "Identifier", - "start": 16409, - "end": 16416, + "start": 19983, + "end": 19990, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 321, + "line": 394, "column": 27 }, "identifierName": "actions" @@ -19205,15 +19205,15 @@ }, "property": { "type": "Identifier", - "start": 16417, - "end": 16429, + "start": 19991, + "end": 20003, "loc": { "start": { - "line": 321, + "line": 394, "column": 28 }, "end": { - "line": 321, + "line": 394, "column": 40 }, "identifierName": "createEntity" @@ -19224,30 +19224,30 @@ }, "right": { "type": "ObjectExpression", - "start": 16432, - "end": 16571, + "start": 20006, + "end": 20145, "loc": { "start": { - "line": 321, + "line": 394, "column": 43 }, "end": { - "line": 324, + "line": 397, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 16458, - "end": 16468, + "start": 20032, + "end": 20042, "loc": { "start": { - "line": 322, + "line": 395, "column": 24 }, "end": { - "line": 322, + "line": 395, "column": 34 } }, @@ -19256,15 +19256,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16458, - "end": 16460, + "start": 20032, + "end": 20034, "loc": { "start": { - "line": 322, + "line": 395, "column": 24 }, "end": { - "line": 322, + "line": 395, "column": 26 }, "identifierName": "id" @@ -19273,15 +19273,15 @@ }, "value": { "type": "Identifier", - "start": 16462, - "end": 16468, + "start": 20036, + "end": 20042, "loc": { "start": { - "line": 322, + "line": 395, "column": 28 }, "end": { - "line": 322, + "line": 395, "column": 34 }, "identifierName": "nodeId" @@ -19291,15 +19291,15 @@ }, { "type": "ObjectProperty", - "start": 16494, - "end": 16508, + "start": 20068, + "end": 20082, "loc": { "start": { - "line": 323, + "line": 396, "column": 24 }, "end": { - "line": 323, + "line": 396, "column": 38 } }, @@ -19308,15 +19308,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16494, - "end": 16502, + "start": 20068, + "end": 20076, "loc": { "start": { - "line": 323, + "line": 396, "column": 24 }, "end": { - "line": 323, + "line": 396, "column": 32 }, "identifierName": "isObject" @@ -19325,15 +19325,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 16504, - "end": 16508, + "start": 20078, + "end": 20082, "loc": { "start": { - "line": 323, + "line": 396, "column": 34 }, "end": { - "line": 323, + "line": 396, "column": 38 } }, @@ -19345,15 +19345,15 @@ { "type": "CommentLine", "value": " Registers the Entity in Scene#objects", - "start": 16509, - "end": 16549, + "start": 20083, + "end": 20123, "loc": { "start": { - "line": 323, + "line": 396, "column": 39 }, "end": { - "line": 323, + "line": 396, "column": 79 } } @@ -19366,44 +19366,44 @@ }, { "type": "VariableDeclaration", - "start": 16594, - "end": 16629, + "start": 20168, + "end": 20203, "loc": { "start": { - "line": 326, + "line": 399, "column": 20 }, "end": { - "line": 326, + "line": 399, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16600, - "end": 16628, + "start": 20174, + "end": 20202, "loc": { "start": { - "line": 326, + "line": 399, "column": 26 }, "end": { - "line": 326, + "line": 399, "column": 54 } }, "id": { "type": "Identifier", - "start": 16600, - "end": 16605, + "start": 20174, + "end": 20179, "loc": { "start": { - "line": 326, + "line": 399, "column": 26 }, "end": { - "line": 326, + "line": 399, "column": 31 }, "identifierName": "props" @@ -19412,29 +19412,29 @@ }, "init": { "type": "MemberExpression", - "start": 16608, - "end": 16628, + "start": 20182, + "end": 20202, "loc": { "start": { - "line": 326, + "line": 399, "column": 34 }, "end": { - "line": 326, + "line": 399, "column": 54 } }, "object": { "type": "Identifier", - "start": 16608, - "end": 16622, + "start": 20182, + "end": 20196, "loc": { "start": { - "line": 326, + "line": 399, "column": 34 }, "end": { - "line": 326, + "line": 399, "column": 48 }, "identifierName": "objectDefaults" @@ -19443,15 +19443,15 @@ }, "property": { "type": "Identifier", - "start": 16623, - "end": 16627, + "start": 20197, + "end": 20201, "loc": { "start": { - "line": 326, + "line": 399, "column": 49 }, "end": { - "line": 326, + "line": 399, "column": 53 }, "identifierName": "type" @@ -19466,29 +19466,29 @@ }, { "type": "IfStatement", - "start": 16651, - "end": 17378, + "start": 20225, + "end": 20952, "loc": { "start": { - "line": 328, + "line": 401, "column": 20 }, "end": { - "line": 345, + "line": 418, "column": 21 } }, "test": { "type": "Identifier", - "start": 16655, - "end": 16660, + "start": 20229, + "end": 20234, "loc": { "start": { - "line": 328, + "line": 401, "column": 24 }, "end": { - "line": 328, + "line": 401, "column": 29 }, "identifierName": "props" @@ -19497,72 +19497,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 16662, - "end": 17378, + "start": 20236, + "end": 20952, "loc": { "start": { - "line": 328, + "line": 401, "column": 31 }, "end": { - "line": 345, + "line": 418, "column": 21 } }, "body": [ { "type": "IfStatement", - "start": 16749, - "end": 16871, + "start": 20323, + "end": 20445, "loc": { "start": { - "line": 330, + "line": 403, "column": 24 }, "end": { - "line": 332, + "line": 405, "column": 25 } }, "test": { "type": "BinaryExpression", - "start": 16753, - "end": 16776, + "start": 20327, + "end": 20350, "loc": { "start": { - "line": 330, + "line": 403, "column": 28 }, "end": { - "line": 330, + "line": 403, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 16753, - "end": 16766, + "start": 20327, + "end": 20340, "loc": { "start": { - "line": 330, + "line": 403, "column": 28 }, "end": { - "line": 330, + "line": 403, "column": 41 } }, "object": { "type": "Identifier", - "start": 16753, - "end": 16758, + "start": 20327, + "end": 20332, "loc": { "start": { - "line": 330, + "line": 403, "column": 28 }, "end": { - "line": 330, + "line": 403, "column": 33 }, "identifierName": "props" @@ -19572,15 +19572,15 @@ }, "property": { "type": "Identifier", - "start": 16759, - "end": 16766, + "start": 20333, + "end": 20340, "loc": { "start": { - "line": 330, + "line": 403, "column": 34 }, "end": { - "line": 330, + "line": 403, "column": 41 }, "identifierName": "visible" @@ -19593,15 +19593,15 @@ "operator": "===", "right": { "type": "BooleanLiteral", - "start": 16771, - "end": 16776, + "start": 20345, + "end": 20350, "loc": { "start": { - "line": 330, + "line": 403, "column": 46 }, "end": { - "line": 330, + "line": 403, "column": 51 } }, @@ -19611,87 +19611,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 16778, - "end": 16871, + "start": 20352, + "end": 20445, "loc": { "start": { - "line": 330, + "line": 403, "column": 53 }, "end": { - "line": 332, + "line": 405, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 16808, - "end": 16845, + "start": 20382, + "end": 20419, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 65 } }, "expression": { "type": "AssignmentExpression", - "start": 16808, - "end": 16844, + "start": 20382, + "end": 20418, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 64 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16808, - "end": 16836, + "start": 20382, + "end": 20410, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 16808, - "end": 16828, + "start": 20382, + "end": 20402, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 48 } }, "object": { "type": "Identifier", - "start": 16808, - "end": 16815, + "start": 20382, + "end": 20389, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 35 }, "identifierName": "actions" @@ -19700,15 +19700,15 @@ }, "property": { "type": "Identifier", - "start": 16816, - "end": 16828, + "start": 20390, + "end": 20402, "loc": { "start": { - "line": 331, + "line": 404, "column": 36 }, "end": { - "line": 331, + "line": 404, "column": 48 }, "identifierName": "createEntity" @@ -19719,15 +19719,15 @@ }, "property": { "type": "Identifier", - "start": 16829, - "end": 16836, + "start": 20403, + "end": 20410, "loc": { "start": { - "line": 331, + "line": 404, "column": 49 }, "end": { - "line": 331, + "line": 404, "column": 56 }, "identifierName": "visible" @@ -19738,15 +19738,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 16839, - "end": 16844, + "start": 20413, + "end": 20418, "loc": { "start": { - "line": 331, + "line": 404, "column": 59 }, "end": { - "line": 331, + "line": 404, "column": 64 } }, @@ -19762,15 +19762,15 @@ { "type": "CommentLine", "value": " Set Entity's initial rendering state for recognized type", - "start": 16664, - "end": 16723, + "start": 20238, + "end": 20297, "loc": { "start": { - "line": 328, + "line": 401, "column": 33 }, "end": { - "line": 328, + "line": 401, "column": 92 } } @@ -19779,43 +19779,43 @@ }, { "type": "IfStatement", - "start": 16897, - "end": 17020, + "start": 20471, + "end": 20594, "loc": { "start": { - "line": 334, + "line": 407, "column": 24 }, "end": { - "line": 336, + "line": 409, "column": 25 } }, "test": { "type": "MemberExpression", - "start": 16901, - "end": 16915, + "start": 20475, + "end": 20489, "loc": { "start": { - "line": 334, + "line": 407, "column": 28 }, "end": { - "line": 334, + "line": 407, "column": 42 } }, "object": { "type": "Identifier", - "start": 16901, - "end": 16906, + "start": 20475, + "end": 20480, "loc": { "start": { - "line": 334, + "line": 407, "column": 28 }, "end": { - "line": 334, + "line": 407, "column": 33 }, "identifierName": "props" @@ -19824,15 +19824,15 @@ }, "property": { "type": "Identifier", - "start": 16907, - "end": 16915, + "start": 20481, + "end": 20489, "loc": { "start": { - "line": 334, + "line": 407, "column": 34 }, "end": { - "line": 334, + "line": 407, "column": 42 }, "identifierName": "colorize" @@ -19843,87 +19843,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 16917, - "end": 17020, + "start": 20491, + "end": 20594, "loc": { "start": { - "line": 334, + "line": 407, "column": 44 }, "end": { - "line": 336, + "line": 409, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 16947, - "end": 16994, + "start": 20521, + "end": 20568, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 75 } }, "expression": { "type": "AssignmentExpression", - "start": 16947, - "end": 16993, + "start": 20521, + "end": 20567, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 74 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16947, - "end": 16976, + "start": 20521, + "end": 20550, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 16947, - "end": 16967, + "start": 20521, + "end": 20541, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 48 } }, "object": { "type": "Identifier", - "start": 16947, - "end": 16954, + "start": 20521, + "end": 20528, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 35 }, "identifierName": "actions" @@ -19932,15 +19932,15 @@ }, "property": { "type": "Identifier", - "start": 16955, - "end": 16967, + "start": 20529, + "end": 20541, "loc": { "start": { - "line": 335, + "line": 408, "column": 36 }, "end": { - "line": 335, + "line": 408, "column": 48 }, "identifierName": "createEntity" @@ -19951,15 +19951,15 @@ }, "property": { "type": "Identifier", - "start": 16968, - "end": 16976, + "start": 20542, + "end": 20550, "loc": { "start": { - "line": 335, + "line": 408, "column": 49 }, "end": { - "line": 335, + "line": 408, "column": 57 }, "identifierName": "colorize" @@ -19970,29 +19970,29 @@ }, "right": { "type": "MemberExpression", - "start": 16979, - "end": 16993, + "start": 20553, + "end": 20567, "loc": { "start": { - "line": 335, + "line": 408, "column": 60 }, "end": { - "line": 335, + "line": 408, "column": 74 } }, "object": { "type": "Identifier", - "start": 16979, - "end": 16984, + "start": 20553, + "end": 20558, "loc": { "start": { - "line": 335, + "line": 408, "column": 60 }, "end": { - "line": 335, + "line": 408, "column": 65 }, "identifierName": "props" @@ -20001,15 +20001,15 @@ }, "property": { "type": "Identifier", - "start": 16985, - "end": 16993, + "start": 20559, + "end": 20567, "loc": { "start": { - "line": 335, + "line": 408, "column": 66 }, "end": { - "line": 335, + "line": 408, "column": 74 }, "identifierName": "colorize" @@ -20027,57 +20027,57 @@ }, { "type": "IfStatement", - "start": 17046, - "end": 17170, + "start": 20620, + "end": 20744, "loc": { "start": { - "line": 338, + "line": 411, "column": 24 }, "end": { - "line": 340, + "line": 413, "column": 25 } }, "test": { "type": "BinaryExpression", - "start": 17050, - "end": 17074, + "start": 20624, + "end": 20648, "loc": { "start": { - "line": 338, + "line": 411, "column": 28 }, "end": { - "line": 338, + "line": 411, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 17050, - "end": 17064, + "start": 20624, + "end": 20638, "loc": { "start": { - "line": 338, + "line": 411, "column": 28 }, "end": { - "line": 338, + "line": 411, "column": 42 } }, "object": { "type": "Identifier", - "start": 17050, - "end": 17055, + "start": 20624, + "end": 20629, "loc": { "start": { - "line": 338, + "line": 411, "column": 28 }, "end": { - "line": 338, + "line": 411, "column": 33 }, "identifierName": "props" @@ -20086,15 +20086,15 @@ }, "property": { "type": "Identifier", - "start": 17056, - "end": 17064, + "start": 20630, + "end": 20638, "loc": { "start": { - "line": 338, + "line": 411, "column": 34 }, "end": { - "line": 338, + "line": 411, "column": 42 }, "identifierName": "pickable" @@ -20106,15 +20106,15 @@ "operator": "===", "right": { "type": "BooleanLiteral", - "start": 17069, - "end": 17074, + "start": 20643, + "end": 20648, "loc": { "start": { - "line": 338, + "line": 411, "column": 47 }, "end": { - "line": 338, + "line": 411, "column": 52 } }, @@ -20123,87 +20123,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 17076, - "end": 17170, + "start": 20650, + "end": 20744, "loc": { "start": { - "line": 338, + "line": 411, "column": 54 }, "end": { - "line": 340, + "line": 413, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 17106, - "end": 17144, + "start": 20680, + "end": 20718, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 66 } }, "expression": { "type": "AssignmentExpression", - "start": 17106, - "end": 17143, + "start": 20680, + "end": 20717, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 65 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 17106, - "end": 17135, + "start": 20680, + "end": 20709, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 17106, - "end": 17126, + "start": 20680, + "end": 20700, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 48 } }, "object": { "type": "Identifier", - "start": 17106, - "end": 17113, + "start": 20680, + "end": 20687, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 35 }, "identifierName": "actions" @@ -20212,15 +20212,15 @@ }, "property": { "type": "Identifier", - "start": 17114, - "end": 17126, + "start": 20688, + "end": 20700, "loc": { "start": { - "line": 339, + "line": 412, "column": 36 }, "end": { - "line": 339, + "line": 412, "column": 48 }, "identifierName": "createEntity" @@ -20231,15 +20231,15 @@ }, "property": { "type": "Identifier", - "start": 17127, - "end": 17135, + "start": 20701, + "end": 20709, "loc": { "start": { - "line": 339, + "line": 412, "column": 49 }, "end": { - "line": 339, + "line": 412, "column": 57 }, "identifierName": "pickable" @@ -20250,15 +20250,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 17138, - "end": 17143, + "start": 20712, + "end": 20717, "loc": { "start": { - "line": 339, + "line": 412, "column": 60 }, "end": { - "line": 339, + "line": 412, "column": 65 } }, @@ -20273,71 +20273,71 @@ }, { "type": "IfStatement", - "start": 17196, - "end": 17356, + "start": 20770, + "end": 20930, "loc": { "start": { - "line": 342, + "line": 415, "column": 24 }, "end": { - "line": 344, + "line": 417, "column": 25 } }, "test": { "type": "LogicalExpression", - "start": 17200, - "end": 17253, + "start": 20774, + "end": 20827, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 81 } }, "left": { "type": "BinaryExpression", - "start": 17200, - "end": 17227, + "start": 20774, + "end": 20801, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 55 } }, "left": { "type": "MemberExpression", - "start": 17200, - "end": 17213, + "start": 20774, + "end": 20787, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 41 } }, "object": { "type": "Identifier", - "start": 17200, - "end": 17205, + "start": 20774, + "end": 20779, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 33 }, "identifierName": "props" @@ -20346,15 +20346,15 @@ }, "property": { "type": "Identifier", - "start": 17206, - "end": 17213, + "start": 20780, + "end": 20787, "loc": { "start": { - "line": 342, + "line": 415, "column": 34 }, "end": { - "line": 342, + "line": 415, "column": 41 }, "identifierName": "opacity" @@ -20366,15 +20366,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 17218, - "end": 17227, + "start": 20792, + "end": 20801, "loc": { "start": { - "line": 342, + "line": 415, "column": 46 }, "end": { - "line": 342, + "line": 415, "column": 55 }, "identifierName": "undefined" @@ -20385,43 +20385,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 17231, - "end": 17253, + "start": 20805, + "end": 20827, "loc": { "start": { - "line": 342, + "line": 415, "column": 59 }, "end": { - "line": 342, + "line": 415, "column": 81 } }, "left": { "type": "MemberExpression", - "start": 17231, - "end": 17244, + "start": 20805, + "end": 20818, "loc": { "start": { - "line": 342, + "line": 415, "column": 59 }, "end": { - "line": 342, + "line": 415, "column": 72 } }, "object": { "type": "Identifier", - "start": 17231, - "end": 17236, + "start": 20805, + "end": 20810, "loc": { "start": { - "line": 342, + "line": 415, "column": 59 }, "end": { - "line": 342, + "line": 415, "column": 64 }, "identifierName": "props" @@ -20430,15 +20430,15 @@ }, "property": { "type": "Identifier", - "start": 17237, - "end": 17244, + "start": 20811, + "end": 20818, "loc": { "start": { - "line": 342, + "line": 415, "column": 65 }, "end": { - "line": 342, + "line": 415, "column": 72 }, "identifierName": "opacity" @@ -20450,15 +20450,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 17249, - "end": 17253, + "start": 20823, + "end": 20827, "loc": { "start": { - "line": 342, + "line": 415, "column": 77 }, "end": { - "line": 342, + "line": 415, "column": 81 } } @@ -20467,87 +20467,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 17255, - "end": 17356, + "start": 20829, + "end": 20930, "loc": { "start": { - "line": 342, + "line": 415, "column": 83 }, "end": { - "line": 344, + "line": 417, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 17285, - "end": 17330, + "start": 20859, + "end": 20904, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 73 } }, "expression": { "type": "AssignmentExpression", - "start": 17285, - "end": 17329, + "start": 20859, + "end": 20903, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 72 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 17285, - "end": 17313, + "start": 20859, + "end": 20887, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 17285, - "end": 17305, + "start": 20859, + "end": 20879, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 48 } }, "object": { "type": "Identifier", - "start": 17285, - "end": 17292, + "start": 20859, + "end": 20866, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 35 }, "identifierName": "actions" @@ -20556,15 +20556,15 @@ }, "property": { "type": "Identifier", - "start": 17293, - "end": 17305, + "start": 20867, + "end": 20879, "loc": { "start": { - "line": 343, + "line": 416, "column": 36 }, "end": { - "line": 343, + "line": 416, "column": 48 }, "identifierName": "createEntity" @@ -20575,15 +20575,15 @@ }, "property": { "type": "Identifier", - "start": 17306, - "end": 17313, + "start": 20880, + "end": 20887, "loc": { "start": { - "line": 343, + "line": 416, "column": 49 }, "end": { - "line": 343, + "line": 416, "column": 56 }, "identifierName": "opacity" @@ -20594,29 +20594,29 @@ }, "right": { "type": "MemberExpression", - "start": 17316, - "end": 17329, + "start": 20890, + "end": 20903, "loc": { "start": { - "line": 343, + "line": 416, "column": 59 }, "end": { - "line": 343, + "line": 416, "column": 72 } }, "object": { "type": "Identifier", - "start": 17316, - "end": 17321, + "start": 20890, + "end": 20895, "loc": { "start": { - "line": 343, + "line": 416, "column": 59 }, "end": { - "line": 343, + "line": 416, "column": 64 }, "identifierName": "props" @@ -20625,15 +20625,15 @@ }, "property": { "type": "Identifier", - "start": 17322, - "end": 17329, + "start": 20896, + "end": 20903, "loc": { "start": { - "line": 343, + "line": 416, "column": 65 }, "end": { - "line": 343, + "line": 416, "column": 72 }, "identifierName": "opacity" @@ -20656,29 +20656,29 @@ }, { "type": "ReturnStatement", - "start": 17400, - "end": 17412, + "start": 20974, + "end": 20986, "loc": { "start": { - "line": 347, + "line": 420, "column": 20 }, "end": { - "line": 347, + "line": 420, "column": 32 } }, "argument": { "type": "BooleanLiteral", - "start": 17407, - "end": 17411, + "start": 20981, + "end": 20985, "loc": { "start": { - "line": 347, + "line": 420, "column": 27 }, "end": { - "line": 347, + "line": 420, "column": 31 } }, @@ -20688,15 +20688,15 @@ { "type": "CommentLine", "value": " Continue descending this glTF node subtree", - "start": 17413, - "end": 17458, + "start": 20987, + "end": 21032, "loc": { "start": { - "line": 347, + "line": 420, "column": 33 }, "end": { - "line": 347, + "line": 420, "column": 78 } } @@ -20711,43 +20711,43 @@ }, { "type": "IfStatement", - "start": 17495, - "end": 17761, + "start": 21069, + "end": 21335, "loc": { "start": { - "line": 350, + "line": 423, "column": 16 }, "end": { - "line": 354, + "line": 427, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 17499, - "end": 17509, + "start": 21073, + "end": 21083, "loc": { "start": { - "line": 350, + "line": 423, "column": 20 }, "end": { - "line": 350, + "line": 423, "column": 30 } }, "object": { "type": "Identifier", - "start": 17499, - "end": 17505, + "start": 21073, + "end": 21079, "loc": { "start": { - "line": 350, + "line": 423, "column": 20 }, "end": { - "line": 350, + "line": 423, "column": 26 }, "identifierName": "params" @@ -20756,15 +20756,15 @@ }, "property": { "type": "Identifier", - "start": 17506, - "end": 17509, + "start": 21080, + "end": 21083, "loc": { "start": { - "line": 350, + "line": 423, "column": 27 }, "end": { - "line": 350, + "line": 423, "column": 30 }, "identifierName": "src" @@ -20775,101 +20775,101 @@ }, "consequent": { "type": "BlockStatement", - "start": 17511, - "end": 17632, + "start": 21085, + "end": 21206, "loc": { "start": { - "line": 350, + "line": 423, "column": 32 }, "end": { - "line": 352, + "line": 425, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 17533, - "end": 17614, + "start": 21107, + "end": 21188, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 101 } }, "expression": { "type": "CallExpression", - "start": 17533, - "end": 17613, + "start": 21107, + "end": 21187, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 100 } }, "callee": { "type": "MemberExpression", - "start": 17533, - "end": 17560, + "start": 21107, + "end": 21134, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 17533, - "end": 17555, + "start": 21107, + "end": 21129, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 17533, - "end": 17537, + "start": 21107, + "end": 21111, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 24 } } }, "property": { "type": "Identifier", - "start": 17538, - "end": 17555, + "start": 21112, + "end": 21129, "loc": { "start": { - "line": 351, + "line": 424, "column": 25 }, "end": { - "line": 351, + "line": 424, "column": 42 }, "identifierName": "_sceneModelLoader" @@ -20880,15 +20880,15 @@ }, "property": { "type": "Identifier", - "start": 17556, - "end": 17560, + "start": 21130, + "end": 21134, "loc": { "start": { - "line": 351, + "line": 424, "column": 43 }, "end": { - "line": 351, + "line": 424, "column": 47 }, "identifierName": "load" @@ -20900,44 +20900,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 17561, - "end": 17565, + "start": 21135, + "end": 21139, "loc": { "start": { - "line": 351, + "line": 424, "column": 48 }, "end": { - "line": 351, + "line": 424, "column": 52 } } }, { "type": "MemberExpression", - "start": 17567, - "end": 17577, + "start": 21141, + "end": 21151, "loc": { "start": { - "line": 351, + "line": 424, "column": 54 }, "end": { - "line": 351, + "line": 424, "column": 64 } }, "object": { "type": "Identifier", - "start": 17567, - "end": 17573, + "start": 21141, + "end": 21147, "loc": { "start": { - "line": 351, + "line": 424, "column": 54 }, "end": { - "line": 351, + "line": 424, "column": 60 }, "identifierName": "params" @@ -20946,15 +20946,15 @@ }, "property": { "type": "Identifier", - "start": 17574, - "end": 17577, + "start": 21148, + "end": 21151, "loc": { "start": { - "line": 351, + "line": 424, "column": 61 }, "end": { - "line": 351, + "line": 424, "column": 64 }, "identifierName": "src" @@ -20965,15 +20965,15 @@ }, { "type": "Identifier", - "start": 17579, - "end": 17592, + "start": 21153, + "end": 21166, "loc": { "start": { - "line": 351, + "line": 424, "column": 66 }, "end": { - "line": 351, + "line": 424, "column": 79 }, "identifierName": "metaModelJSON" @@ -20982,15 +20982,15 @@ }, { "type": "Identifier", - "start": 17594, - "end": 17600, + "start": 21168, + "end": 21174, "loc": { "start": { - "line": 351, + "line": 424, "column": 81 }, "end": { - "line": 351, + "line": 424, "column": 87 }, "identifierName": "params" @@ -20999,15 +20999,15 @@ }, { "type": "Identifier", - "start": 17602, - "end": 17612, + "start": 21176, + "end": 21186, "loc": { "start": { - "line": 351, + "line": 424, "column": 89 }, "end": { - "line": 351, + "line": 424, "column": 99 }, "identifierName": "sceneModel" @@ -21022,101 +21022,101 @@ }, "alternate": { "type": "BlockStatement", - "start": 17638, - "end": 17761, + "start": 21212, + "end": 21335, "loc": { "start": { - "line": 352, + "line": 425, "column": 23 }, "end": { - "line": 354, + "line": 427, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 17660, - "end": 17743, + "start": 21234, + "end": 21317, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 103 } }, "expression": { "type": "CallExpression", - "start": 17660, - "end": 17742, + "start": 21234, + "end": 21316, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 102 } }, "callee": { "type": "MemberExpression", - "start": 17660, - "end": 17688, + "start": 21234, + "end": 21262, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 17660, - "end": 17682, + "start": 21234, + "end": 21256, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 17660, - "end": 17664, + "start": 21234, + "end": 21238, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 24 } } }, "property": { "type": "Identifier", - "start": 17665, - "end": 17682, + "start": 21239, + "end": 21256, "loc": { "start": { - "line": 353, + "line": 426, "column": 25 }, "end": { - "line": 353, + "line": 426, "column": 42 }, "identifierName": "_sceneModelLoader" @@ -21127,15 +21127,15 @@ }, "property": { "type": "Identifier", - "start": 17683, - "end": 17688, + "start": 21257, + "end": 21262, "loc": { "start": { - "line": 353, + "line": 426, "column": 43 }, "end": { - "line": 353, + "line": 426, "column": 48 }, "identifierName": "parse" @@ -21147,44 +21147,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 17689, - "end": 17693, + "start": 21263, + "end": 21267, "loc": { "start": { - "line": 353, + "line": 426, "column": 49 }, "end": { - "line": 353, + "line": 426, "column": 53 } } }, { "type": "MemberExpression", - "start": 17695, - "end": 17706, + "start": 21269, + "end": 21280, "loc": { "start": { - "line": 353, + "line": 426, "column": 55 }, "end": { - "line": 353, + "line": 426, "column": 66 } }, "object": { "type": "Identifier", - "start": 17695, - "end": 17701, + "start": 21269, + "end": 21275, "loc": { "start": { - "line": 353, + "line": 426, "column": 55 }, "end": { - "line": 353, + "line": 426, "column": 61 }, "identifierName": "params" @@ -21193,15 +21193,15 @@ }, "property": { "type": "Identifier", - "start": 17702, - "end": 17706, + "start": 21276, + "end": 21280, "loc": { "start": { - "line": 353, + "line": 426, "column": 62 }, "end": { - "line": 353, + "line": 426, "column": 66 }, "identifierName": "gltf" @@ -21212,15 +21212,15 @@ }, { "type": "Identifier", - "start": 17708, - "end": 17721, + "start": 21282, + "end": 21295, "loc": { "start": { - "line": 353, + "line": 426, "column": 68 }, "end": { - "line": 353, + "line": 426, "column": 81 }, "identifierName": "metaModelJSON" @@ -21229,15 +21229,15 @@ }, { "type": "Identifier", - "start": 17723, - "end": 17729, + "start": 21297, + "end": 21303, "loc": { "start": { - "line": 353, + "line": 426, "column": 83 }, "end": { - "line": 353, + "line": 426, "column": 89 }, "identifierName": "params" @@ -21246,15 +21246,15 @@ }, { "type": "Identifier", - "start": 17731, - "end": 17741, + "start": 21305, + "end": 21315, "loc": { "start": { - "line": 353, + "line": 426, "column": 91 }, "end": { - "line": 353, + "line": 426, "column": 101 }, "identifierName": "sceneModel" @@ -21278,43 +21278,43 @@ }, { "type": "IfStatement", - "start": 17790, - "end": 18519, + "start": 21364, + "end": 22093, "loc": { "start": { - "line": 357, + "line": 430, "column": 12 }, "end": { - "line": 377, + "line": 450, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 17794, - "end": 17813, + "start": 21368, + "end": 21387, "loc": { "start": { - "line": 357, + "line": 430, "column": 16 }, "end": { - "line": 357, + "line": 430, "column": 35 } }, "object": { "type": "Identifier", - "start": 17794, - "end": 17800, + "start": 21368, + "end": 21374, "loc": { "start": { - "line": 357, + "line": 430, "column": 16 }, "end": { - "line": 357, + "line": 430, "column": 22 }, "identifierName": "params" @@ -21323,15 +21323,15 @@ }, "property": { "type": "Identifier", - "start": 17801, - "end": 17813, + "start": 21375, + "end": 21387, "loc": { "start": { - "line": 357, + "line": 430, "column": 23 }, "end": { - "line": 357, + "line": 430, "column": 35 }, "identifierName": "metaModelSrc" @@ -21342,59 +21342,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 17815, - "end": 18411, + "start": 21389, + "end": 21985, "loc": { "start": { - "line": 357, + "line": 430, "column": 37 }, "end": { - "line": 374, + "line": 447, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 17834, - "end": 17875, + "start": 21408, + "end": 21449, "loc": { "start": { - "line": 359, + "line": 432, "column": 16 }, "end": { - "line": 359, + "line": 432, "column": 57 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 17840, - "end": 17874, + "start": 21414, + "end": 21448, "loc": { "start": { - "line": 359, + "line": 432, "column": 22 }, "end": { - "line": 359, + "line": 432, "column": 56 } }, "id": { "type": "Identifier", - "start": 17840, - "end": 17852, + "start": 21414, + "end": 21426, "loc": { "start": { - "line": 359, + "line": 432, "column": 22 }, "end": { - "line": 359, + "line": 432, "column": 34 }, "identifierName": "metaModelSrc" @@ -21403,29 +21403,29 @@ }, "init": { "type": "MemberExpression", - "start": 17855, - "end": 17874, + "start": 21429, + "end": 21448, "loc": { "start": { - "line": 359, + "line": 432, "column": 37 }, "end": { - "line": 359, + "line": 432, "column": 56 } }, "object": { "type": "Identifier", - "start": 17855, - "end": 17861, + "start": 21429, + "end": 21435, "loc": { "start": { - "line": 359, + "line": 432, "column": 37 }, "end": { - "line": 359, + "line": 432, "column": 43 }, "identifierName": "params" @@ -21434,15 +21434,15 @@ }, "property": { "type": "Identifier", - "start": 17862, - "end": 17874, + "start": 21436, + "end": 21448, "loc": { "start": { - "line": 359, + "line": 432, "column": 44 }, "end": { - "line": 359, + "line": 432, "column": 56 }, "identifierName": "metaModelSrc" @@ -21457,29 +21457,29 @@ }, { "type": "ExpressionStatement", - "start": 17893, - "end": 17938, + "start": 21467, + "end": 21512, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 61 } }, "expression": { "type": "UpdateExpression", - "start": 17893, - "end": 17937, + "start": 21467, + "end": 21511, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 60 } }, @@ -21487,100 +21487,100 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 17893, - "end": 17935, + "start": 21467, + "end": 21509, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 17893, - "end": 17925, + "start": 21467, + "end": 21499, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 17893, - "end": 17917, + "start": 21467, + "end": 21491, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 17893, - "end": 17910, + "start": 21467, + "end": 21484, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 17893, - "end": 17904, + "start": 21467, + "end": 21478, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 17893, - "end": 17897, + "start": 21467, + "end": 21471, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 20 } } }, "property": { "type": "Identifier", - "start": 17898, - "end": 17904, + "start": 21472, + "end": 21478, "loc": { "start": { - "line": 361, + "line": 434, "column": 21 }, "end": { - "line": 361, + "line": 434, "column": 27 }, "identifierName": "viewer" @@ -21591,15 +21591,15 @@ }, "property": { "type": "Identifier", - "start": 17905, - "end": 17910, + "start": 21479, + "end": 21484, "loc": { "start": { - "line": 361, + "line": 434, "column": 28 }, "end": { - "line": 361, + "line": 434, "column": 33 }, "identifierName": "scene" @@ -21610,15 +21610,15 @@ }, "property": { "type": "Identifier", - "start": 17911, - "end": 17917, + "start": 21485, + "end": 21491, "loc": { "start": { - "line": 361, + "line": 434, "column": 34 }, "end": { - "line": 361, + "line": 434, "column": 40 }, "identifierName": "canvas" @@ -21629,15 +21629,15 @@ }, "property": { "type": "Identifier", - "start": 17918, - "end": 17925, + "start": 21492, + "end": 21499, "loc": { "start": { - "line": 361, + "line": 434, "column": 41 }, "end": { - "line": 361, + "line": 434, "column": 48 }, "identifierName": "spinner" @@ -21648,15 +21648,15 @@ }, "property": { "type": "Identifier", - "start": 17926, - "end": 17935, + "start": 21500, + "end": 21509, "loc": { "start": { - "line": 361, + "line": 434, "column": 49 }, "end": { - "line": 361, + "line": 434, "column": 58 }, "identifierName": "processes" @@ -21669,86 +21669,86 @@ }, { "type": "ExpressionStatement", - "start": 17956, - "end": 18396, + "start": 21530, + "end": 21970, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 372, + "line": 445, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 17956, - "end": 18395, + "start": 21530, + "end": 21969, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 372, + "line": 445, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 17956, - "end": 17985, + "start": 21530, + "end": 21559, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 363, + "line": 436, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 17956, - "end": 17972, + "start": 21530, + "end": 21546, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 363, + "line": 436, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 17956, - "end": 17960, + "start": 21530, + "end": 21534, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 363, + "line": 436, "column": 20 } } }, "property": { "type": "Identifier", - "start": 17961, - "end": 17972, + "start": 21535, + "end": 21546, "loc": { "start": { - "line": 363, + "line": 436, "column": 21 }, "end": { - "line": 363, + "line": 436, "column": 32 }, "identifierName": "_dataSource" @@ -21759,15 +21759,15 @@ }, "property": { "type": "Identifier", - "start": 17973, - "end": 17985, + "start": 21547, + "end": 21559, "loc": { "start": { - "line": 363, + "line": 436, "column": 33 }, "end": { - "line": 363, + "line": 436, "column": 45 }, "identifierName": "getMetaModel" @@ -21779,15 +21779,15 @@ "arguments": [ { "type": "Identifier", - "start": 17986, - "end": 17998, + "start": 21560, + "end": 21572, "loc": { "start": { - "line": 363, + "line": 436, "column": 46 }, "end": { - "line": 363, + "line": 436, "column": 58 }, "identifierName": "metaModelSrc" @@ -21796,15 +21796,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 18000, - "end": 18164, + "start": 21574, + "end": 21738, "loc": { "start": { - "line": 363, + "line": 436, "column": 60 }, "end": { - "line": 369, + "line": 442, "column": 17 } }, @@ -21815,15 +21815,15 @@ "params": [ { "type": "Identifier", - "start": 18001, - "end": 18014, + "start": 21575, + "end": 21588, "loc": { "start": { - "line": 363, + "line": 436, "column": 61 }, "end": { - "line": 363, + "line": 436, "column": 74 }, "identifierName": "metaModelJSON" @@ -21833,44 +21833,44 @@ ], "body": { "type": "BlockStatement", - "start": 18019, - "end": 18164, + "start": 21593, + "end": 21738, "loc": { "start": { - "line": 363, + "line": 436, "column": 79 }, "end": { - "line": 369, + "line": 442, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 18042, - "end": 18087, + "start": 21616, + "end": 21661, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 65 } }, "expression": { "type": "UpdateExpression", - "start": 18042, - "end": 18086, + "start": 21616, + "end": 21660, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 64 } }, @@ -21878,100 +21878,100 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 18042, - "end": 18084, + "start": 21616, + "end": 21658, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 18042, - "end": 18074, + "start": 21616, + "end": 21648, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 18042, - "end": 18066, + "start": 21616, + "end": 21640, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 18042, - "end": 18059, + "start": 21616, + "end": 21633, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 18042, - "end": 18053, + "start": 21616, + "end": 21627, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 18042, - "end": 18046, + "start": 21616, + "end": 21620, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 24 } } }, "property": { "type": "Identifier", - "start": 18047, - "end": 18053, + "start": 21621, + "end": 21627, "loc": { "start": { - "line": 365, + "line": 438, "column": 25 }, "end": { - "line": 365, + "line": 438, "column": 31 }, "identifierName": "viewer" @@ -21982,15 +21982,15 @@ }, "property": { "type": "Identifier", - "start": 18054, - "end": 18059, + "start": 21628, + "end": 21633, "loc": { "start": { - "line": 365, + "line": 438, "column": 32 }, "end": { - "line": 365, + "line": 438, "column": 37 }, "identifierName": "scene" @@ -22001,15 +22001,15 @@ }, "property": { "type": "Identifier", - "start": 18060, - "end": 18066, + "start": 21634, + "end": 21640, "loc": { "start": { - "line": 365, + "line": 438, "column": 38 }, "end": { - "line": 365, + "line": 438, "column": 44 }, "identifierName": "canvas" @@ -22020,15 +22020,15 @@ }, "property": { "type": "Identifier", - "start": 18067, - "end": 18074, + "start": 21641, + "end": 21648, "loc": { "start": { - "line": 365, + "line": 438, "column": 45 }, "end": { - "line": 365, + "line": 438, "column": 52 }, "identifierName": "spinner" @@ -22039,15 +22039,15 @@ }, "property": { "type": "Identifier", - "start": 18075, - "end": 18084, + "start": 21649, + "end": 21658, "loc": { "start": { - "line": 365, + "line": 438, "column": 53 }, "end": { - "line": 365, + "line": 438, "column": 62 }, "identifierName": "processes" @@ -22060,43 +22060,43 @@ }, { "type": "ExpressionStatement", - "start": 18109, - "end": 18145, + "start": 21683, + "end": 21719, "loc": { "start": { - "line": 367, + "line": 440, "column": 20 }, "end": { - "line": 367, + "line": 440, "column": 56 } }, "expression": { "type": "CallExpression", - "start": 18109, - "end": 18144, + "start": 21683, + "end": 21718, "loc": { "start": { - "line": 367, + "line": 440, "column": 20 }, "end": { - "line": 367, + "line": 440, "column": 55 } }, "callee": { "type": "Identifier", - "start": 18109, - "end": 18129, + "start": 21683, + "end": 21703, "loc": { "start": { - "line": 367, + "line": 440, "column": 20 }, "end": { - "line": 367, + "line": 440, "column": 40 }, "identifierName": "processMetaModelJSON" @@ -22106,15 +22106,15 @@ "arguments": [ { "type": "Identifier", - "start": 18130, - "end": 18143, + "start": 21704, + "end": 21717, "loc": { "start": { - "line": 367, + "line": 440, "column": 41 }, "end": { - "line": 367, + "line": 440, "column": 54 }, "identifierName": "metaModelJSON" @@ -22130,15 +22130,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 18166, - "end": 18394, + "start": 21740, + "end": 21968, "loc": { "start": { - "line": 369, + "line": 442, "column": 19 }, "end": { - "line": 372, + "line": 445, "column": 17 } }, @@ -22149,15 +22149,15 @@ "params": [ { "type": "Identifier", - "start": 18167, - "end": 18173, + "start": 21741, + "end": 21747, "loc": { "start": { - "line": 369, + "line": 442, "column": 20 }, "end": { - "line": 369, + "line": 442, "column": 26 }, "identifierName": "errMsg" @@ -22167,87 +22167,87 @@ ], "body": { "type": "BlockStatement", - "start": 18178, - "end": 18394, + "start": 21752, + "end": 21968, "loc": { "start": { - "line": 369, + "line": 442, "column": 31 }, "end": { - "line": 372, + "line": 445, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 18200, - "end": 18310, + "start": 21774, + "end": 21884, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 130 } }, "expression": { "type": "CallExpression", - "start": 18200, - "end": 18309, + "start": 21774, + "end": 21883, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 129 } }, "callee": { "type": "MemberExpression", - "start": 18200, - "end": 18210, + "start": 21774, + "end": 21784, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 18200, - "end": 18204, + "start": 21774, + "end": 21778, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 24 } } }, "property": { "type": "Identifier", - "start": 18205, - "end": 18210, + "start": 21779, + "end": 21784, "loc": { "start": { - "line": 370, + "line": 443, "column": 25 }, "end": { - "line": 370, + "line": 443, "column": 30 }, "identifierName": "error" @@ -22259,30 +22259,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 18211, - "end": 18308, + "start": 21785, + "end": 21882, "loc": { "start": { - "line": 370, + "line": 443, "column": 31 }, "end": { - "line": 370, + "line": 443, "column": 128 } }, "expressions": [ { "type": "Identifier", - "start": 18263, - "end": 18270, + "start": 21837, + "end": 21844, "loc": { "start": { - "line": 370, + "line": 443, "column": 83 }, "end": { - "line": 370, + "line": 443, "column": 90 }, "identifierName": "modelId" @@ -22291,15 +22291,15 @@ }, { "type": "Identifier", - "start": 18281, - "end": 18293, + "start": 21855, + "end": 21867, "loc": { "start": { - "line": 370, + "line": 443, "column": 101 }, "end": { - "line": 370, + "line": 443, "column": 113 }, "identifierName": "metaModelSrc" @@ -22308,15 +22308,15 @@ }, { "type": "Identifier", - "start": 18300, - "end": 18306, + "start": 21874, + "end": 21880, "loc": { "start": { - "line": 370, + "line": 443, "column": 120 }, "end": { - "line": 370, + "line": 443, "column": 126 }, "identifierName": "errMsg" @@ -22327,15 +22327,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 18212, - "end": 18261, + "start": 21786, + "end": 21835, "loc": { "start": { - "line": 370, + "line": 443, "column": 32 }, "end": { - "line": 370, + "line": 443, "column": 81 } }, @@ -22347,15 +22347,15 @@ }, { "type": "TemplateElement", - "start": 18271, - "end": 18279, + "start": 21845, + "end": 21853, "loc": { "start": { - "line": 370, + "line": 443, "column": 91 }, "end": { - "line": 370, + "line": 443, "column": 99 } }, @@ -22367,15 +22367,15 @@ }, { "type": "TemplateElement", - "start": 18294, - "end": 18298, + "start": 21868, + "end": 21872, "loc": { "start": { - "line": 370, + "line": 443, "column": 114 }, "end": { - "line": 370, + "line": 443, "column": 118 } }, @@ -22387,15 +22387,15 @@ }, { "type": "TemplateElement", - "start": 18307, - "end": 18307, + "start": 21881, + "end": 21881, "loc": { "start": { - "line": 370, + "line": 443, "column": 127 }, "end": { - "line": 370, + "line": 443, "column": 127 } }, @@ -22412,29 +22412,29 @@ }, { "type": "ExpressionStatement", - "start": 18331, - "end": 18376, + "start": 21905, + "end": 21950, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 65 } }, "expression": { "type": "UpdateExpression", - "start": 18331, - "end": 18375, + "start": 21905, + "end": 21949, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 64 } }, @@ -22442,100 +22442,100 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 18331, - "end": 18373, + "start": 21905, + "end": 21947, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 18331, - "end": 18363, + "start": 21905, + "end": 21937, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 18331, - "end": 18355, + "start": 21905, + "end": 21929, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 18331, - "end": 18348, + "start": 21905, + "end": 21922, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 18331, - "end": 18342, + "start": 21905, + "end": 21916, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 18331, - "end": 18335, + "start": 21905, + "end": 21909, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 24 } } }, "property": { "type": "Identifier", - "start": 18336, - "end": 18342, + "start": 21910, + "end": 21916, "loc": { "start": { - "line": 371, + "line": 444, "column": 25 }, "end": { - "line": 371, + "line": 444, "column": 31 }, "identifierName": "viewer" @@ -22546,15 +22546,15 @@ }, "property": { "type": "Identifier", - "start": 18343, - "end": 18348, + "start": 21917, + "end": 21922, "loc": { "start": { - "line": 371, + "line": 444, "column": 32 }, "end": { - "line": 371, + "line": 444, "column": 37 }, "identifierName": "scene" @@ -22565,15 +22565,15 @@ }, "property": { "type": "Identifier", - "start": 18349, - "end": 18355, + "start": 21923, + "end": 21929, "loc": { "start": { - "line": 371, + "line": 444, "column": 38 }, "end": { - "line": 371, + "line": 444, "column": 44 }, "identifierName": "canvas" @@ -22584,15 +22584,15 @@ }, "property": { "type": "Identifier", - "start": 18356, - "end": 18363, + "start": 21930, + "end": 21937, "loc": { "start": { - "line": 371, + "line": 444, "column": 45 }, "end": { - "line": 371, + "line": 444, "column": 52 }, "identifierName": "spinner" @@ -22603,15 +22603,15 @@ }, "property": { "type": "Identifier", - "start": 18364, - "end": 18373, + "start": 21938, + "end": 21947, "loc": { "start": { - "line": 371, + "line": 444, "column": 53 }, "end": { - "line": 371, + "line": 444, "column": 62 }, "identifierName": "processes" @@ -22634,43 +22634,43 @@ }, "alternate": { "type": "IfStatement", - "start": 18417, - "end": 18519, + "start": 21991, + "end": 22093, "loc": { "start": { - "line": 374, + "line": 447, "column": 19 }, "end": { - "line": 377, + "line": 450, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 18421, - "end": 18441, + "start": 21995, + "end": 22015, "loc": { "start": { - "line": 374, + "line": 447, "column": 23 }, "end": { - "line": 374, + "line": 447, "column": 43 } }, "object": { "type": "Identifier", - "start": 18421, - "end": 18427, + "start": 21995, + "end": 22001, "loc": { "start": { - "line": 374, + "line": 447, "column": 23 }, "end": { - "line": 374, + "line": 447, "column": 29 }, "identifierName": "params" @@ -22679,15 +22679,15 @@ }, "property": { "type": "Identifier", - "start": 18428, - "end": 18441, + "start": 22002, + "end": 22015, "loc": { "start": { - "line": 374, + "line": 447, "column": 30 }, "end": { - "line": 374, + "line": 447, "column": 43 }, "identifierName": "metaModelJSON" @@ -22698,58 +22698,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 18443, - "end": 18519, + "start": 22017, + "end": 22093, "loc": { "start": { - "line": 374, + "line": 447, "column": 45 }, "end": { - "line": 377, + "line": 450, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 18462, - "end": 18505, + "start": 22036, + "end": 22079, "loc": { "start": { - "line": 376, + "line": 449, "column": 16 }, "end": { - "line": 376, + "line": 449, "column": 59 } }, "expression": { "type": "CallExpression", - "start": 18462, - "end": 18504, + "start": 22036, + "end": 22078, "loc": { "start": { - "line": 376, + "line": 449, "column": 16 }, "end": { - "line": 376, + "line": 449, "column": 58 } }, "callee": { "type": "Identifier", - "start": 18462, - "end": 18482, + "start": 22036, + "end": 22056, "loc": { "start": { - "line": 376, + "line": 449, "column": 16 }, "end": { - "line": 376, + "line": 449, "column": 36 }, "identifierName": "processMetaModelJSON" @@ -22759,29 +22759,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 18483, - "end": 18503, + "start": 22057, + "end": 22077, "loc": { "start": { - "line": 376, + "line": 449, "column": 37 }, "end": { - "line": 376, + "line": 449, "column": 57 } }, "object": { "type": "Identifier", - "start": 18483, - "end": 18489, + "start": 22057, + "end": 22063, "loc": { "start": { - "line": 376, + "line": 449, "column": 37 }, "end": { - "line": 376, + "line": 449, "column": 43 }, "identifierName": "params" @@ -22790,15 +22790,15 @@ }, "property": { "type": "Identifier", - "start": 18490, - "end": 18503, + "start": 22064, + "end": 22077, "loc": { "start": { - "line": 376, + "line": 449, "column": 44 }, "end": { - "line": 376, + "line": 449, "column": 57 }, "identifierName": "metaModelJSON" @@ -22821,73 +22821,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 18536, - "end": 19367, + "start": 22110, + "end": 22941, "loc": { "start": { - "line": 379, + "line": 452, "column": 15 }, "end": { - "line": 405, + "line": 478, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 18551, - "end": 19110, + "start": 22125, + "end": 22684, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 397, + "line": 470, "column": 14 } }, "expression": { "type": "AssignmentExpression", - "start": 18551, - "end": 19109, + "start": 22125, + "end": 22683, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 397, + "line": 470, "column": 13 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 18551, - "end": 18572, + "start": 22125, + "end": 22146, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 381, + "line": 454, "column": 33 } }, "object": { "type": "Identifier", - "start": 18551, - "end": 18557, + "start": 22125, + "end": 22131, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 381, + "line": 454, "column": 18 }, "identifierName": "params" @@ -22896,15 +22896,15 @@ }, "property": { "type": "Identifier", - "start": 18558, - "end": 18572, + "start": 22132, + "end": 22146, "loc": { "start": { - "line": 381, + "line": 454, "column": 19 }, "end": { - "line": 381, + "line": 454, "column": 33 }, "identifierName": "handleGLTFNode" @@ -22915,15 +22915,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 18575, - "end": 19109, + "start": 22149, + "end": 22683, "loc": { "start": { - "line": 381, + "line": 454, "column": 36 }, "end": { - "line": 397, + "line": 470, "column": 13 } }, @@ -22934,15 +22934,15 @@ "params": [ { "type": "Identifier", - "start": 18576, - "end": 18583, + "start": 22150, + "end": 22157, "loc": { "start": { - "line": 381, + "line": 454, "column": 37 }, "end": { - "line": 381, + "line": 454, "column": 44 }, "identifierName": "modelId" @@ -22951,15 +22951,15 @@ }, { "type": "Identifier", - "start": 18585, - "end": 18593, + "start": 22159, + "end": 22167, "loc": { "start": { - "line": 381, + "line": 454, "column": 46 }, "end": { - "line": 381, + "line": 454, "column": 54 }, "identifierName": "glTFNode" @@ -22968,15 +22968,15 @@ }, { "type": "Identifier", - "start": 18595, - "end": 18602, + "start": 22169, + "end": 22176, "loc": { "start": { - "line": 381, + "line": 454, "column": 56 }, "end": { - "line": 381, + "line": 454, "column": 63 }, "identifierName": "actions" @@ -22986,59 +22986,59 @@ ], "body": { "type": "BlockStatement", - "start": 18607, - "end": 19109, + "start": 22181, + "end": 22683, "loc": { "start": { - "line": 381, + "line": 454, "column": 68 }, "end": { - "line": 397, + "line": 470, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 18626, - "end": 18653, + "start": 22200, + "end": 22227, "loc": { "start": { - "line": 383, + "line": 456, "column": 16 }, "end": { - "line": 383, + "line": 456, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18632, - "end": 18652, + "start": 22206, + "end": 22226, "loc": { "start": { - "line": 383, + "line": 456, "column": 22 }, "end": { - "line": 383, + "line": 456, "column": 42 } }, "id": { "type": "Identifier", - "start": 18632, - "end": 18636, + "start": 22206, + "end": 22210, "loc": { "start": { - "line": 383, + "line": 456, "column": 22 }, "end": { - "line": 383, + "line": 456, "column": 26 }, "identifierName": "name" @@ -23047,29 +23047,29 @@ }, "init": { "type": "MemberExpression", - "start": 18639, - "end": 18652, + "start": 22213, + "end": 22226, "loc": { "start": { - "line": 383, + "line": 456, "column": 29 }, "end": { - "line": 383, + "line": 456, "column": 42 } }, "object": { "type": "Identifier", - "start": 18639, - "end": 18647, + "start": 22213, + "end": 22221, "loc": { "start": { - "line": 383, + "line": 456, "column": 29 }, "end": { - "line": 383, + "line": 456, "column": 37 }, "identifierName": "glTFNode" @@ -23078,15 +23078,15 @@ }, "property": { "type": "Identifier", - "start": 18648, - "end": 18652, + "start": 22222, + "end": 22226, "loc": { "start": { - "line": 383, + "line": 456, "column": 38 }, "end": { - "line": 383, + "line": 456, "column": 42 }, "identifierName": "name" @@ -23101,29 +23101,29 @@ }, { "type": "IfStatement", - "start": 18671, - "end": 18775, + "start": 22245, + "end": 22349, "loc": { "start": { - "line": 385, + "line": 458, "column": 16 }, "end": { - "line": 387, + "line": 460, "column": 17 } }, "test": { "type": "UnaryExpression", - "start": 18675, - "end": 18680, + "start": 22249, + "end": 22254, "loc": { "start": { - "line": 385, + "line": 458, "column": 20 }, "end": { - "line": 385, + "line": 458, "column": 25 } }, @@ -23131,15 +23131,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 18676, - "end": 18680, + "start": 22250, + "end": 22254, "loc": { "start": { - "line": 385, + "line": 458, "column": 21 }, "end": { - "line": 385, + "line": 458, "column": 25 }, "identifierName": "name" @@ -23152,44 +23152,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 18682, - "end": 18775, + "start": 22256, + "end": 22349, "loc": { "start": { - "line": 385, + "line": 458, "column": 27 }, "end": { - "line": 387, + "line": 460, "column": 17 } }, "body": [ { "type": "ReturnStatement", - "start": 18704, - "end": 18716, + "start": 22278, + "end": 22290, "loc": { "start": { - "line": 386, + "line": 459, "column": 20 }, "end": { - "line": 386, + "line": 459, "column": 32 } }, "argument": { "type": "BooleanLiteral", - "start": 18711, - "end": 18715, + "start": 22285, + "end": 22289, "loc": { "start": { - "line": 386, + "line": 459, "column": 27 }, "end": { - "line": 386, + "line": 459, "column": 31 } }, @@ -23199,15 +23199,15 @@ { "type": "CommentLine", "value": " Continue descending this node subtree", - "start": 18717, - "end": 18757, + "start": 22291, + "end": 22331, "loc": { "start": { - "line": 386, + "line": 459, "column": 33 }, "end": { - "line": 386, + "line": 459, "column": 73 } } @@ -23221,44 +23221,44 @@ }, { "type": "VariableDeclaration", - "start": 18793, - "end": 18809, + "start": 22367, + "end": 22383, "loc": { "start": { - "line": 389, + "line": 462, "column": 16 }, "end": { - "line": 389, + "line": 462, "column": 32 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18799, - "end": 18808, + "start": 22373, + "end": 22382, "loc": { "start": { - "line": 389, + "line": 462, "column": 22 }, "end": { - "line": 389, + "line": 462, "column": 31 } }, "id": { "type": "Identifier", - "start": 18799, - "end": 18801, + "start": 22373, + "end": 22375, "loc": { "start": { - "line": 389, + "line": 462, "column": 22 }, "end": { - "line": 389, + "line": 462, "column": 24 }, "identifierName": "id" @@ -23267,15 +23267,15 @@ }, "init": { "type": "Identifier", - "start": 18804, - "end": 18808, + "start": 22378, + "end": 22382, "loc": { "start": { - "line": 389, + "line": 462, "column": 27 }, "end": { - "line": 389, + "line": 462, "column": 31 }, "identifierName": "name" @@ -23288,58 +23288,58 @@ }, { "type": "ExpressionStatement", - "start": 18827, - "end": 19019, + "start": 22401, + "end": 22593, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 394, + "line": 467, "column": 18 } }, "expression": { "type": "AssignmentExpression", - "start": 18827, - "end": 19018, + "start": 22401, + "end": 22592, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 394, + "line": 467, "column": 17 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 18827, - "end": 18847, + "start": 22401, + "end": 22421, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 391, + "line": 464, "column": 36 } }, "object": { "type": "Identifier", - "start": 18827, - "end": 18834, + "start": 22401, + "end": 22408, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 391, + "line": 464, "column": 23 }, "identifierName": "actions" @@ -23348,15 +23348,15 @@ }, "property": { "type": "Identifier", - "start": 18835, - "end": 18847, + "start": 22409, + "end": 22421, "loc": { "start": { - "line": 391, + "line": 464, "column": 24 }, "end": { - "line": 391, + "line": 464, "column": 36 }, "identifierName": "createEntity" @@ -23367,30 +23367,30 @@ }, "right": { "type": "ObjectExpression", - "start": 18850, - "end": 19018, + "start": 22424, + "end": 22592, "loc": { "start": { - "line": 391, + "line": 464, "column": 39 }, "end": { - "line": 394, + "line": 467, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 18917, - "end": 18923, + "start": 22491, + "end": 22497, "loc": { "start": { - "line": 392, + "line": 465, "column": 20 }, "end": { - "line": 392, + "line": 465, "column": 26 } }, @@ -23399,15 +23399,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18917, - "end": 18919, + "start": 22491, + "end": 22493, "loc": { "start": { - "line": 392, + "line": 465, "column": 20 }, "end": { - "line": 392, + "line": 465, "column": 22 }, "identifierName": "id" @@ -23417,15 +23417,15 @@ }, "value": { "type": "Identifier", - "start": 18921, - "end": 18923, + "start": 22495, + "end": 22497, "loc": { "start": { - "line": 392, + "line": 465, "column": 24 }, "end": { - "line": 392, + "line": 465, "column": 26 }, "identifierName": "id" @@ -23436,15 +23436,15 @@ { "type": "CommentLine", "value": " Create an Entity for this glTF scene node", - "start": 18852, - "end": 18896, + "start": 22426, + "end": 22470, "loc": { "start": { - "line": 391, + "line": 464, "column": 41 }, "end": { - "line": 391, + "line": 464, "column": 85 } } @@ -23453,15 +23453,15 @@ }, { "type": "ObjectProperty", - "start": 18945, - "end": 18959, + "start": 22519, + "end": 22533, "loc": { "start": { - "line": 393, + "line": 466, "column": 20 }, "end": { - "line": 393, + "line": 466, "column": 34 } }, @@ -23470,15 +23470,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18945, - "end": 18953, + "start": 22519, + "end": 22527, "loc": { "start": { - "line": 393, + "line": 466, "column": 20 }, "end": { - "line": 393, + "line": 466, "column": 28 }, "identifierName": "isObject" @@ -23487,15 +23487,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 18955, - "end": 18959, + "start": 22529, + "end": 22533, "loc": { "start": { - "line": 393, + "line": 466, "column": 30 }, "end": { - "line": 393, + "line": 466, "column": 34 } }, @@ -23507,15 +23507,15 @@ { "type": "CommentLine", "value": " Registers the Entity in Scene#objects", - "start": 18960, - "end": 19000, + "start": 22534, + "end": 22574, "loc": { "start": { - "line": 393, + "line": 466, "column": 35 }, "end": { - "line": 393, + "line": 466, "column": 75 } } @@ -23528,29 +23528,29 @@ }, { "type": "ReturnStatement", - "start": 19037, - "end": 19049, + "start": 22611, + "end": 22623, "loc": { "start": { - "line": 396, + "line": 469, "column": 16 }, "end": { - "line": 396, + "line": 469, "column": 28 } }, "argument": { "type": "BooleanLiteral", - "start": 19044, - "end": 19048, + "start": 22618, + "end": 22622, "loc": { "start": { - "line": 396, + "line": 469, "column": 23 }, "end": { - "line": 396, + "line": 469, "column": 27 } }, @@ -23560,15 +23560,15 @@ { "type": "CommentLine", "value": " Continue descending this glTF node subtree", - "start": 19050, - "end": 19095, + "start": 22624, + "end": 22669, "loc": { "start": { - "line": 396, + "line": 469, "column": 29 }, "end": { - "line": 396, + "line": 469, "column": 74 } } @@ -23583,43 +23583,43 @@ }, { "type": "IfStatement", - "start": 19125, - "end": 19357, + "start": 22699, + "end": 22931, "loc": { "start": { - "line": 400, + "line": 473, "column": 12 }, "end": { - "line": 404, + "line": 477, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 19129, - "end": 19139, + "start": 22703, + "end": 22713, "loc": { "start": { - "line": 400, + "line": 473, "column": 16 }, "end": { - "line": 400, + "line": 473, "column": 26 } }, "object": { "type": "Identifier", - "start": 19129, - "end": 19135, + "start": 22703, + "end": 22709, "loc": { "start": { - "line": 400, + "line": 473, "column": 16 }, "end": { - "line": 400, + "line": 473, "column": 22 }, "identifierName": "params" @@ -23628,15 +23628,15 @@ }, "property": { "type": "Identifier", - "start": 19136, - "end": 19139, + "start": 22710, + "end": 22713, "loc": { "start": { - "line": 400, + "line": 473, "column": 23 }, "end": { - "line": 400, + "line": 473, "column": 26 }, "identifierName": "src" @@ -23647,101 +23647,101 @@ }, "consequent": { "type": "BlockStatement", - "start": 19141, - "end": 19245, + "start": 22715, + "end": 22819, "loc": { "start": { - "line": 400, + "line": 473, "column": 28 }, "end": { - "line": 402, + "line": 475, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 19159, - "end": 19231, + "start": 22733, + "end": 22805, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 88 } }, "expression": { "type": "CallExpression", - "start": 19159, - "end": 19230, + "start": 22733, + "end": 22804, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 87 } }, "callee": { "type": "MemberExpression", - "start": 19159, - "end": 19186, + "start": 22733, + "end": 22760, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 19159, - "end": 19181, + "start": 22733, + "end": 22755, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 19159, - "end": 19163, + "start": 22733, + "end": 22737, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 20 } } }, "property": { "type": "Identifier", - "start": 19164, - "end": 19181, + "start": 22738, + "end": 22755, "loc": { "start": { - "line": 401, + "line": 474, "column": 21 }, "end": { - "line": 401, + "line": 474, "column": 38 }, "identifierName": "_sceneModelLoader" @@ -23752,15 +23752,15 @@ }, "property": { "type": "Identifier", - "start": 19182, - "end": 19186, + "start": 22756, + "end": 22760, "loc": { "start": { - "line": 401, + "line": 474, "column": 39 }, "end": { - "line": 401, + "line": 474, "column": 43 }, "identifierName": "load" @@ -23772,44 +23772,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 19187, - "end": 19191, + "start": 22761, + "end": 22765, "loc": { "start": { - "line": 401, + "line": 474, "column": 44 }, "end": { - "line": 401, + "line": 474, "column": 48 } } }, { "type": "MemberExpression", - "start": 19193, - "end": 19203, + "start": 22767, + "end": 22777, "loc": { "start": { - "line": 401, + "line": 474, "column": 50 }, "end": { - "line": 401, + "line": 474, "column": 60 } }, "object": { "type": "Identifier", - "start": 19193, - "end": 19199, + "start": 22767, + "end": 22773, "loc": { "start": { - "line": 401, + "line": 474, "column": 50 }, "end": { - "line": 401, + "line": 474, "column": 56 }, "identifierName": "params" @@ -23818,15 +23818,15 @@ }, "property": { "type": "Identifier", - "start": 19200, - "end": 19203, + "start": 22774, + "end": 22777, "loc": { "start": { - "line": 401, + "line": 474, "column": 57 }, "end": { - "line": 401, + "line": 474, "column": 60 }, "identifierName": "src" @@ -23837,30 +23837,30 @@ }, { "type": "NullLiteral", - "start": 19205, - "end": 19209, + "start": 22779, + "end": 22783, "loc": { "start": { - "line": 401, + "line": 474, "column": 62 }, "end": { - "line": 401, + "line": 474, "column": 66 } } }, { "type": "Identifier", - "start": 19211, - "end": 19217, + "start": 22785, + "end": 22791, "loc": { "start": { - "line": 401, + "line": 474, "column": 68 }, "end": { - "line": 401, + "line": 474, "column": 74 }, "identifierName": "params" @@ -23869,15 +23869,15 @@ }, { "type": "Identifier", - "start": 19219, - "end": 19229, + "start": 22793, + "end": 22803, "loc": { "start": { - "line": 401, + "line": 474, "column": 76 }, "end": { - "line": 401, + "line": 474, "column": 86 }, "identifierName": "sceneModel" @@ -23892,101 +23892,101 @@ }, "alternate": { "type": "BlockStatement", - "start": 19251, - "end": 19357, + "start": 22825, + "end": 22931, "loc": { "start": { - "line": 402, + "line": 475, "column": 19 }, "end": { - "line": 404, + "line": 477, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 19269, - "end": 19343, + "start": 22843, + "end": 22917, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 90 } }, "expression": { "type": "CallExpression", - "start": 19269, - "end": 19342, + "start": 22843, + "end": 22916, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 89 } }, "callee": { "type": "MemberExpression", - "start": 19269, - "end": 19297, + "start": 22843, + "end": 22871, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 19269, - "end": 19291, + "start": 22843, + "end": 22865, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 19269, - "end": 19273, + "start": 22843, + "end": 22847, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 20 } } }, "property": { "type": "Identifier", - "start": 19274, - "end": 19291, + "start": 22848, + "end": 22865, "loc": { "start": { - "line": 403, + "line": 476, "column": 21 }, "end": { - "line": 403, + "line": 476, "column": 38 }, "identifierName": "_sceneModelLoader" @@ -23997,15 +23997,15 @@ }, "property": { "type": "Identifier", - "start": 19292, - "end": 19297, + "start": 22866, + "end": 22871, "loc": { "start": { - "line": 403, + "line": 476, "column": 39 }, "end": { - "line": 403, + "line": 476, "column": 44 }, "identifierName": "parse" @@ -24017,44 +24017,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 19298, - "end": 19302, + "start": 22872, + "end": 22876, "loc": { "start": { - "line": 403, + "line": 476, "column": 45 }, "end": { - "line": 403, + "line": 476, "column": 49 } } }, { "type": "MemberExpression", - "start": 19304, - "end": 19315, + "start": 22878, + "end": 22889, "loc": { "start": { - "line": 403, + "line": 476, "column": 51 }, "end": { - "line": 403, + "line": 476, "column": 62 } }, "object": { "type": "Identifier", - "start": 19304, - "end": 19310, + "start": 22878, + "end": 22884, "loc": { "start": { - "line": 403, + "line": 476, "column": 51 }, "end": { - "line": 403, + "line": 476, "column": 57 }, "identifierName": "params" @@ -24063,15 +24063,15 @@ }, "property": { "type": "Identifier", - "start": 19311, - "end": 19315, + "start": 22885, + "end": 22889, "loc": { "start": { - "line": 403, + "line": 476, "column": 58 }, "end": { - "line": 403, + "line": 476, "column": 62 }, "identifierName": "gltf" @@ -24082,30 +24082,30 @@ }, { "type": "NullLiteral", - "start": 19317, - "end": 19321, + "start": 22891, + "end": 22895, "loc": { "start": { - "line": 403, + "line": 476, "column": 64 }, "end": { - "line": 403, + "line": 476, "column": 68 } } }, { "type": "Identifier", - "start": 19323, - "end": 19329, + "start": 22897, + "end": 22903, "loc": { "start": { - "line": 403, + "line": 476, "column": 70 }, "end": { - "line": 403, + "line": 476, "column": 76 }, "identifierName": "params" @@ -24114,15 +24114,15 @@ }, { "type": "Identifier", - "start": 19331, - "end": 19341, + "start": 22905, + "end": 22915, "loc": { "start": { - "line": 403, + "line": 476, "column": 78 }, "end": { - "line": 403, + "line": 476, "column": 88 }, "identifierName": "sceneModel" @@ -24142,57 +24142,57 @@ }, { "type": "ExpressionStatement", - "start": 19377, - "end": 19486, + "start": 22951, + "end": 23060, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 409, + "line": 482, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 19377, - "end": 19485, + "start": 22951, + "end": 23059, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 409, + "line": 482, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 19377, - "end": 19392, + "start": 22951, + "end": 22966, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 407, + "line": 480, "column": 23 } }, "object": { "type": "Identifier", - "start": 19377, - "end": 19387, + "start": 22951, + "end": 22961, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 407, + "line": 480, "column": 18 }, "identifierName": "sceneModel" @@ -24201,15 +24201,15 @@ }, "property": { "type": "Identifier", - "start": 19388, - "end": 19392, + "start": 22962, + "end": 22966, "loc": { "start": { - "line": 407, + "line": 480, "column": 19 }, "end": { - "line": 407, + "line": 480, "column": 23 }, "identifierName": "once" @@ -24221,15 +24221,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 19393, - "end": 19404, + "start": 22967, + "end": 22978, "loc": { "start": { - "line": 407, + "line": 480, "column": 24 }, "end": { - "line": 407, + "line": 480, "column": 35 } }, @@ -24241,15 +24241,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 19406, - "end": 19484, + "start": 22980, + "end": 23058, "loc": { "start": { - "line": 407, + "line": 480, "column": 37 }, "end": { - "line": 409, + "line": 482, "column": 9 } }, @@ -24260,115 +24260,115 @@ "params": [], "body": { "type": "BlockStatement", - "start": 19412, - "end": 19484, + "start": 22986, + "end": 23058, "loc": { "start": { - "line": 407, + "line": 480, "column": 43 }, "end": { - "line": 409, + "line": 482, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19426, - "end": 19474, + "start": 23000, + "end": 23048, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 60 } }, "expression": { "type": "CallExpression", - "start": 19426, - "end": 19473, + "start": 23000, + "end": 23047, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 19426, - "end": 19464, + "start": 23000, + "end": 23038, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 19426, - "end": 19447, + "start": 23000, + "end": 23021, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 19426, - "end": 19437, + "start": 23000, + "end": 23011, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 19426, - "end": 19430, + "start": 23000, + "end": 23004, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 16 } } }, "property": { "type": "Identifier", - "start": 19431, - "end": 19437, + "start": 23005, + "end": 23011, "loc": { "start": { - "line": 408, + "line": 481, "column": 17 }, "end": { - "line": 408, + "line": 481, "column": 23 }, "identifierName": "viewer" @@ -24379,15 +24379,15 @@ }, "property": { "type": "Identifier", - "start": 19438, - "end": 19447, + "start": 23012, + "end": 23021, "loc": { "start": { - "line": 408, + "line": 481, "column": 24 }, "end": { - "line": 408, + "line": 481, "column": 33 }, "identifierName": "metaScene" @@ -24398,15 +24398,15 @@ }, "property": { "type": "Identifier", - "start": 19448, - "end": 19464, + "start": 23022, + "end": 23038, "loc": { "start": { - "line": 408, + "line": 481, "column": 34 }, "end": { - "line": 408, + "line": 481, "column": 50 }, "identifierName": "destroyMetaModel" @@ -24418,15 +24418,15 @@ "arguments": [ { "type": "Identifier", - "start": 19465, - "end": 19472, + "start": 23039, + "end": 23046, "loc": { "start": { - "line": 408, + "line": 481, "column": 51 }, "end": { - "line": 408, + "line": 481, "column": 58 }, "identifierName": "modelId" @@ -24445,29 +24445,29 @@ }, { "type": "ReturnStatement", - "start": 19496, - "end": 19514, + "start": 23070, + "end": 23088, "loc": { "start": { - "line": 411, + "line": 484, "column": 8 }, "end": { - "line": 411, + "line": 484, "column": 26 } }, "argument": { "type": "Identifier", - "start": 19503, - "end": 19513, + "start": 23077, + "end": 23087, "loc": { "start": { - "line": 411, + "line": 484, "column": 15 }, "end": { - "line": 411, + "line": 484, "column": 25 }, "identifierName": "sceneModel" @@ -24483,15 +24483,15 @@ { "type": "CommentBlock", "value": "*\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelJSON```` parameter.\n * @param {*} [params.metaModelJSON] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @param {String} [params.entityId] When supplied, causes the entire model to be loaded into a single {@link Entity} that gets this ID.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n ", - "start": 10012, - "end": 13967, + "start": 13586, + "end": 17541, "loc": { "start": { - "line": 226, + "line": 299, "column": 4 }, "end": { - "line": 255, + "line": 328, "column": 7 } } @@ -24501,15 +24501,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this GLTFLoaderPlugin.\n ", - "start": 19526, - "end": 19576, + "start": 23100, + "end": 23150, "loc": { "start": { - "line": 414, + "line": 487, "column": 4 }, "end": { - "line": 416, + "line": 489, "column": 7 } } @@ -24518,15 +24518,15 @@ }, { "type": "ClassMethod", - "start": 19581, - "end": 19623, + "start": 23155, + "end": 23197, "loc": { "start": { - "line": 417, + "line": 490, "column": 4 }, "end": { - "line": 419, + "line": 492, "column": 5 } }, @@ -24534,15 +24534,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 19581, - "end": 19588, + "start": 23155, + "end": 23162, "loc": { "start": { - "line": 417, + "line": 490, "column": 4 }, "end": { - "line": 417, + "line": 490, "column": 11 }, "identifierName": "destroy" @@ -24558,87 +24558,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 19591, - "end": 19623, + "start": 23165, + "end": 23197, "loc": { "start": { - "line": 417, + "line": 490, "column": 14 }, "end": { - "line": 419, + "line": 492, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 19601, - "end": 19617, + "start": 23175, + "end": 23191, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 19601, - "end": 19616, + "start": 23175, + "end": 23190, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 19601, - "end": 19614, + "start": 23175, + "end": 23188, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 21 } }, "object": { "type": "Super", - "start": 19601, - "end": 19606, + "start": 23175, + "end": 23180, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 13 } } }, "property": { "type": "Identifier", - "start": 19607, - "end": 19614, + "start": 23181, + "end": 23188, "loc": { "start": { - "line": 418, + "line": 491, "column": 14 }, "end": { - "line": 418, + "line": 491, "column": 21 }, "identifierName": "destroy" @@ -24657,15 +24657,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this GLTFLoaderPlugin.\n ", - "start": 19526, - "end": 19576, + "start": 23100, + "end": 23150, "loc": { "start": { - "line": 414, + "line": 487, "column": 4 }, "end": { - "line": 416, + "line": 489, "column": 7 } } @@ -24677,16 +24677,16 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n * @class GLTFLoaderPlugin\n ", + "value": "*\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n *\n * ## Showing a glTF model in TreeViewPlugin when metadata is not available\n *\n * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a\n * `name` attribute, giving the Entity an ID that has the value of the `name` attribute.\n *\n * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not\n * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin\n * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any\n * MetaModels that we create alongside the model.\n *\n * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter\n * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"public-use-sample-apartment.glb\",\n *\n * //-------------------------------------------------------------------------\n * // Specify an `elementId` parameter, which causes the\n * // entire model to be loaded into a single Entity that gets this ID.\n * //-------------------------------------------------------------------------\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * //-------------------------------------------------------------------------\n * // Specify a `metaModelJSON` parameter, which creates a\n * // MetaModel with two MetaObjects, one of which corresponds\n * // to our Entity. Then the TreeViewPlugin is able to have a node\n * // that can represent the model and control the visibility of the Entity.\n * //--------------------------------------------------------------------------\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates a MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates a MetaObject with this ID (same ID as our Entity)\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n * @class GLTFLoaderPlugin\n ", "start": 274, - "end": 7775, + "end": 11349, "loc": { "start": { "line": 7, "column": 0 }, "end": { - "line": 160, + "line": 233, "column": 3 } } @@ -24705,16 +24705,16 @@ "comments": [ { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n * @class GLTFLoaderPlugin\n ", + "value": "*\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n *\n * ## Showing a glTF model in TreeViewPlugin when metadata is not available\n *\n * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a\n * `name` attribute, giving the Entity an ID that has the value of the `name` attribute.\n *\n * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not\n * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin\n * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any\n * MetaModels that we create alongside the model.\n *\n * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter\n * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"public-use-sample-apartment.glb\",\n *\n * //-------------------------------------------------------------------------\n * // Specify an `elementId` parameter, which causes the\n * // entire model to be loaded into a single Entity that gets this ID.\n * //-------------------------------------------------------------------------\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * //-------------------------------------------------------------------------\n * // Specify a `metaModelJSON` parameter, which creates a\n * // MetaModel with two MetaObjects, one of which corresponds\n * // to our Entity. Then the TreeViewPlugin is able to have a node\n * // that can represent the model and control the visibility of the Entity.\n * //--------------------------------------------------------------------------\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates a MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates a MetaObject with this ID (same ID as our Entity)\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n * @class GLTFLoaderPlugin\n ", "start": 274, - "end": 7775, + "end": 11349, "loc": { "start": { "line": 7, "column": 0 }, "end": { - "line": 160, + "line": 233, "column": 3 } } @@ -24722,15 +24722,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"GLTFLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link GLTFDefaultDataSource}, which loads over HTTP.\n ", - "start": 7821, - "end": 8481, + "start": 11395, + "end": 12055, "loc": { "start": { - "line": 163, + "line": 236, "column": 4 }, "end": { - "line": 171, + "line": 244, "column": 7 } } @@ -24738,15 +24738,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 8736, - "end": 8989, + "start": 12310, + "end": 12563, "loc": { "start": { - "line": 182, + "line": 255, "column": 4 }, "end": { - "line": 188, + "line": 261, "column": 7 } } @@ -24754,15 +24754,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 9094, - "end": 9349, + "start": 12668, + "end": 12923, "loc": { "start": { - "line": 193, + "line": 266, "column": 4 }, "end": { - "line": 199, + "line": 272, "column": 7 } } @@ -24770,15 +24770,15 @@ { "type": "CommentBlock", "value": "*\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9417, - "end": 9625, + "start": 12991, + "end": 13199, "loc": { "start": { - "line": 204, + "line": 277, "column": 4 }, "end": { - "line": 210, + "line": 283, "column": 7 } } @@ -24786,15 +24786,15 @@ { "type": "CommentBlock", "value": "*\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9728, - "end": 9936, + "start": 13302, + "end": 13510, "loc": { "start": { - "line": 215, + "line": 288, "column": 4 }, "end": { - "line": 221, + "line": 294, "column": 7 } } @@ -24802,15 +24802,15 @@ { "type": "CommentBlock", "value": "*\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelJSON```` parameter.\n * @param {*} [params.metaModelJSON] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @param {String} [params.entityId] When supplied, causes the entire model to be loaded into a single {@link Entity} that gets this ID.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n ", - "start": 10012, - "end": 13967, + "start": 13586, + "end": 17541, "loc": { "start": { - "line": 226, + "line": 299, "column": 4 }, "end": { - "line": 255, + "line": 328, "column": 7 } } @@ -24818,15 +24818,15 @@ { "type": "CommentLine", "value": " In case ID was auto-generated", - "start": 14430, - "end": 14462, + "start": 18004, + "end": 18036, "loc": { "start": { - "line": 268, + "line": 341, "column": 40 }, "end": { - "line": 268, + "line": 341, "column": 72 } } @@ -24834,15 +24834,15 @@ { "type": "CommentLine", "value": " Return new empty model", - "start": 14600, - "end": 14625, + "start": 18174, + "end": 18199, "loc": { "start": { - "line": 272, + "line": 345, "column": 31 }, "end": { - "line": 272, + "line": 345, "column": 56 } } @@ -24850,15 +24850,15 @@ { "type": "CommentLine", "value": " Continue descending this node subtree", - "start": 16111, - "end": 16151, + "start": 19685, + "end": 19725, "loc": { "start": { - "line": 314, + "line": 387, "column": 37 }, "end": { - "line": 314, + "line": 387, "column": 77 } } @@ -24866,15 +24866,15 @@ { "type": "CommentLine", "value": " Registers the Entity in Scene#objects", - "start": 16509, - "end": 16549, + "start": 20083, + "end": 20123, "loc": { "start": { - "line": 323, + "line": 396, "column": 39 }, "end": { - "line": 323, + "line": 396, "column": 79 } } @@ -24882,15 +24882,15 @@ { "type": "CommentLine", "value": " Set Entity's initial rendering state for recognized type", - "start": 16664, - "end": 16723, + "start": 20238, + "end": 20297, "loc": { "start": { - "line": 328, + "line": 401, "column": 33 }, "end": { - "line": 328, + "line": 401, "column": 92 } } @@ -24898,15 +24898,15 @@ { "type": "CommentLine", "value": " Continue descending this glTF node subtree", - "start": 17413, - "end": 17458, + "start": 20987, + "end": 21032, "loc": { "start": { - "line": 347, + "line": 420, "column": 33 }, "end": { - "line": 347, + "line": 420, "column": 78 } } @@ -24914,15 +24914,15 @@ { "type": "CommentLine", "value": " Continue descending this node subtree", - "start": 18717, - "end": 18757, + "start": 22291, + "end": 22331, "loc": { "start": { - "line": 386, + "line": 459, "column": 33 }, "end": { - "line": 386, + "line": 459, "column": 73 } } @@ -24930,15 +24930,15 @@ { "type": "CommentLine", "value": " Create an Entity for this glTF scene node", - "start": 18852, - "end": 18896, + "start": 22426, + "end": 22470, "loc": { "start": { - "line": 391, + "line": 464, "column": 41 }, "end": { - "line": 391, + "line": 464, "column": 85 } } @@ -24946,15 +24946,15 @@ { "type": "CommentLine", "value": " Registers the Entity in Scene#objects", - "start": 18960, - "end": 19000, + "start": 22534, + "end": 22574, "loc": { "start": { - "line": 393, + "line": 466, "column": 35 }, "end": { - "line": 393, + "line": 466, "column": 75 } } @@ -24962,15 +24962,15 @@ { "type": "CommentLine", "value": " Continue descending this glTF node subtree", - "start": 19050, - "end": 19095, + "start": 22624, + "end": 22669, "loc": { "start": { - "line": 396, + "line": 469, "column": 29 }, "end": { - "line": 396, + "line": 469, "column": 74 } } @@ -24978,15 +24978,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this GLTFLoaderPlugin.\n ", - "start": 19526, - "end": 19576, + "start": 23100, + "end": 23150, "loc": { "start": { - "line": 414, + "line": 487, "column": 4 }, "end": { - "line": 416, + "line": 489, "column": 7 } } @@ -25805,16 +25805,16 @@ }, { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n * @class GLTFLoaderPlugin\n ", + "value": "*\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n *\n * ## Showing a glTF model in TreeViewPlugin when metadata is not available\n *\n * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a\n * `name` attribute, giving the Entity an ID that has the value of the `name` attribute.\n *\n * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not\n * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin\n * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any\n * MetaModels that we create alongside the model.\n *\n * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter\n * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"public-use-sample-apartment.glb\",\n *\n * //-------------------------------------------------------------------------\n * // Specify an `elementId` parameter, which causes the\n * // entire model to be loaded into a single Entity that gets this ID.\n * //-------------------------------------------------------------------------\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * //-------------------------------------------------------------------------\n * // Specify a `metaModelJSON` parameter, which creates a\n * // MetaModel with two MetaObjects, one of which corresponds\n * // to our Entity. Then the TreeViewPlugin is able to have a node\n * // that can represent the model and control the visibility of the Entity.\n * //--------------------------------------------------------------------------\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates a MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates a MetaObject with this ID (same ID as our Entity)\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n * @class GLTFLoaderPlugin\n ", "start": 274, - "end": 7775, + "end": 11349, "loc": { "start": { "line": 7, "column": 0 }, "end": { - "line": 160, + "line": 233, "column": 3 } } @@ -25834,15 +25834,15 @@ "updateContext": null }, "value": "class", - "start": 7776, - "end": 7781, + "start": 11350, + "end": 11355, "loc": { "start": { - "line": 161, + "line": 234, "column": 0 }, "end": { - "line": 161, + "line": 234, "column": 5 } } @@ -25860,15 +25860,15 @@ "binop": null }, "value": "GLTFLoaderPlugin", - "start": 7782, - "end": 7798, + "start": 11356, + "end": 11372, "loc": { "start": { - "line": 161, + "line": 234, "column": 6 }, "end": { - "line": 161, + "line": 234, "column": 22 } } @@ -25888,15 +25888,15 @@ "updateContext": null }, "value": "extends", - "start": 7799, - "end": 7806, + "start": 11373, + "end": 11380, "loc": { "start": { - "line": 161, + "line": 234, "column": 23 }, "end": { - "line": 161, + "line": 234, "column": 30 } } @@ -25914,15 +25914,15 @@ "binop": null }, "value": "Plugin", - "start": 7807, - "end": 7813, + "start": 11381, + "end": 11387, "loc": { "start": { - "line": 161, + "line": 234, "column": 31 }, "end": { - "line": 161, + "line": 234, "column": 37 } } @@ -25939,15 +25939,15 @@ "postfix": false, "binop": null }, - "start": 7814, - "end": 7815, + "start": 11388, + "end": 11389, "loc": { "start": { - "line": 161, + "line": 234, "column": 38 }, "end": { - "line": 161, + "line": 234, "column": 39 } } @@ -25955,15 +25955,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"GLTFLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link GLTFDefaultDataSource}, which loads over HTTP.\n ", - "start": 7821, - "end": 8481, + "start": 11395, + "end": 12055, "loc": { "start": { - "line": 163, + "line": 236, "column": 4 }, "end": { - "line": 171, + "line": 244, "column": 7 } } @@ -25981,15 +25981,15 @@ "binop": null }, "value": "constructor", - "start": 8486, - "end": 8497, + "start": 12060, + "end": 12071, "loc": { "start": { - "line": 172, + "line": 245, "column": 4 }, "end": { - "line": 172, + "line": 245, "column": 15 } } @@ -26006,15 +26006,15 @@ "postfix": false, "binop": null }, - "start": 8497, - "end": 8498, + "start": 12071, + "end": 12072, "loc": { "start": { - "line": 172, + "line": 245, "column": 15 }, "end": { - "line": 172, + "line": 245, "column": 16 } } @@ -26032,15 +26032,15 @@ "binop": null }, "value": "viewer", - "start": 8498, - "end": 8504, + "start": 12072, + "end": 12078, "loc": { "start": { - "line": 172, + "line": 245, "column": 16 }, "end": { - "line": 172, + "line": 245, "column": 22 } } @@ -26058,15 +26058,15 @@ "binop": null, "updateContext": null }, - "start": 8504, - "end": 8505, + "start": 12078, + "end": 12079, "loc": { "start": { - "line": 172, + "line": 245, "column": 22 }, "end": { - "line": 172, + "line": 245, "column": 23 } } @@ -26084,15 +26084,15 @@ "binop": null }, "value": "cfg", - "start": 8506, - "end": 8509, + "start": 12080, + "end": 12083, "loc": { "start": { - "line": 172, + "line": 245, "column": 24 }, "end": { - "line": 172, + "line": 245, "column": 27 } } @@ -26111,15 +26111,15 @@ "updateContext": null }, "value": "=", - "start": 8510, - "end": 8511, + "start": 12084, + "end": 12085, "loc": { "start": { - "line": 172, + "line": 245, "column": 28 }, "end": { - "line": 172, + "line": 245, "column": 29 } } @@ -26136,15 +26136,15 @@ "postfix": false, "binop": null }, - "start": 8512, - "end": 8513, + "start": 12086, + "end": 12087, "loc": { "start": { - "line": 172, + "line": 245, "column": 30 }, "end": { - "line": 172, + "line": 245, "column": 31 } } @@ -26161,15 +26161,15 @@ "postfix": false, "binop": null }, - "start": 8513, - "end": 8514, + "start": 12087, + "end": 12088, "loc": { "start": { - "line": 172, + "line": 245, "column": 31 }, "end": { - "line": 172, + "line": 245, "column": 32 } } @@ -26186,15 +26186,15 @@ "postfix": false, "binop": null }, - "start": 8514, - "end": 8515, + "start": 12088, + "end": 12089, "loc": { "start": { - "line": 172, + "line": 245, "column": 32 }, "end": { - "line": 172, + "line": 245, "column": 33 } } @@ -26211,15 +26211,15 @@ "postfix": false, "binop": null }, - "start": 8516, - "end": 8517, + "start": 12090, + "end": 12091, "loc": { "start": { - "line": 172, + "line": 245, "column": 34 }, "end": { - "line": 172, + "line": 245, "column": 35 } } @@ -26239,15 +26239,15 @@ "updateContext": null }, "value": "super", - "start": 8527, - "end": 8532, + "start": 12101, + "end": 12106, "loc": { "start": { - "line": 174, + "line": 247, "column": 8 }, "end": { - "line": 174, + "line": 247, "column": 13 } } @@ -26264,15 +26264,15 @@ "postfix": false, "binop": null }, - "start": 8532, - "end": 8533, + "start": 12106, + "end": 12107, "loc": { "start": { - "line": 174, + "line": 247, "column": 13 }, "end": { - "line": 174, + "line": 247, "column": 14 } } @@ -26291,15 +26291,15 @@ "updateContext": null }, "value": "GLTFLoader", - "start": 8533, - "end": 8545, + "start": 12107, + "end": 12119, "loc": { "start": { - "line": 174, + "line": 247, "column": 14 }, "end": { - "line": 174, + "line": 247, "column": 26 } } @@ -26317,15 +26317,15 @@ "binop": null, "updateContext": null }, - "start": 8545, - "end": 8546, + "start": 12119, + "end": 12120, "loc": { "start": { - "line": 174, + "line": 247, "column": 26 }, "end": { - "line": 174, + "line": 247, "column": 27 } } @@ -26343,15 +26343,15 @@ "binop": null }, "value": "viewer", - "start": 8547, - "end": 8553, + "start": 12121, + "end": 12127, "loc": { "start": { - "line": 174, + "line": 247, "column": 28 }, "end": { - "line": 174, + "line": 247, "column": 34 } } @@ -26369,15 +26369,15 @@ "binop": null, "updateContext": null }, - "start": 8553, - "end": 8554, + "start": 12127, + "end": 12128, "loc": { "start": { - "line": 174, + "line": 247, "column": 34 }, "end": { - "line": 174, + "line": 247, "column": 35 } } @@ -26395,15 +26395,15 @@ "binop": null }, "value": "cfg", - "start": 8555, - "end": 8558, + "start": 12129, + "end": 12132, "loc": { "start": { - "line": 174, + "line": 247, "column": 36 }, "end": { - "line": 174, + "line": 247, "column": 39 } } @@ -26420,15 +26420,15 @@ "postfix": false, "binop": null }, - "start": 8558, - "end": 8559, + "start": 12132, + "end": 12133, "loc": { "start": { - "line": 174, + "line": 247, "column": 39 }, "end": { - "line": 174, + "line": 247, "column": 40 } } @@ -26446,15 +26446,15 @@ "binop": null, "updateContext": null }, - "start": 8559, - "end": 8560, + "start": 12133, + "end": 12134, "loc": { "start": { - "line": 174, + "line": 247, "column": 40 }, "end": { - "line": 174, + "line": 247, "column": 41 } } @@ -26474,15 +26474,15 @@ "updateContext": null }, "value": "this", - "start": 8570, - "end": 8574, + "start": 12144, + "end": 12148, "loc": { "start": { - "line": 176, + "line": 249, "column": 8 }, "end": { - "line": 176, + "line": 249, "column": 12 } } @@ -26500,15 +26500,15 @@ "binop": null, "updateContext": null }, - "start": 8574, - "end": 8575, + "start": 12148, + "end": 12149, "loc": { "start": { - "line": 176, + "line": 249, "column": 12 }, "end": { - "line": 176, + "line": 249, "column": 13 } } @@ -26526,15 +26526,15 @@ "binop": null }, "value": "_sceneModelLoader", - "start": 8575, - "end": 8592, + "start": 12149, + "end": 12166, "loc": { "start": { - "line": 176, + "line": 249, "column": 13 }, "end": { - "line": 176, + "line": 249, "column": 30 } } @@ -26553,15 +26553,15 @@ "updateContext": null }, "value": "=", - "start": 8593, - "end": 8594, + "start": 12167, + "end": 12168, "loc": { "start": { - "line": 176, + "line": 249, "column": 31 }, "end": { - "line": 176, + "line": 249, "column": 32 } } @@ -26581,15 +26581,15 @@ "updateContext": null }, "value": "new", - "start": 8595, - "end": 8598, + "start": 12169, + "end": 12172, "loc": { "start": { - "line": 176, + "line": 249, "column": 33 }, "end": { - "line": 176, + "line": 249, "column": 36 } } @@ -26607,15 +26607,15 @@ "binop": null }, "value": "GLTFSceneModelLoader", - "start": 8599, - "end": 8619, + "start": 12173, + "end": 12193, "loc": { "start": { - "line": 176, + "line": 249, "column": 37 }, "end": { - "line": 176, + "line": 249, "column": 57 } } @@ -26632,15 +26632,15 @@ "postfix": false, "binop": null }, - "start": 8619, - "end": 8620, + "start": 12193, + "end": 12194, "loc": { "start": { - "line": 176, + "line": 249, "column": 57 }, "end": { - "line": 176, + "line": 249, "column": 58 } } @@ -26660,15 +26660,15 @@ "updateContext": null }, "value": "this", - "start": 8620, - "end": 8624, + "start": 12194, + "end": 12198, "loc": { "start": { - "line": 176, + "line": 249, "column": 58 }, "end": { - "line": 176, + "line": 249, "column": 62 } } @@ -26686,15 +26686,15 @@ "binop": null, "updateContext": null }, - "start": 8624, - "end": 8625, + "start": 12198, + "end": 12199, "loc": { "start": { - "line": 176, + "line": 249, "column": 62 }, "end": { - "line": 176, + "line": 249, "column": 63 } } @@ -26712,15 +26712,15 @@ "binop": null }, "value": "cfg", - "start": 8626, - "end": 8629, + "start": 12200, + "end": 12203, "loc": { "start": { - "line": 176, + "line": 249, "column": 64 }, "end": { - "line": 176, + "line": 249, "column": 67 } } @@ -26737,15 +26737,15 @@ "postfix": false, "binop": null }, - "start": 8629, - "end": 8630, + "start": 12203, + "end": 12204, "loc": { "start": { - "line": 176, + "line": 249, "column": 67 }, "end": { - "line": 176, + "line": 249, "column": 68 } } @@ -26763,15 +26763,15 @@ "binop": null, "updateContext": null }, - "start": 8630, - "end": 8631, + "start": 12204, + "end": 12205, "loc": { "start": { - "line": 176, + "line": 249, "column": 68 }, "end": { - "line": 176, + "line": 249, "column": 69 } } @@ -26791,15 +26791,15 @@ "updateContext": null }, "value": "this", - "start": 8641, - "end": 8645, + "start": 12215, + "end": 12219, "loc": { "start": { - "line": 178, + "line": 251, "column": 8 }, "end": { - "line": 178, + "line": 251, "column": 12 } } @@ -26817,15 +26817,15 @@ "binop": null, "updateContext": null }, - "start": 8645, - "end": 8646, + "start": 12219, + "end": 12220, "loc": { "start": { - "line": 178, + "line": 251, "column": 12 }, "end": { - "line": 178, + "line": 251, "column": 13 } } @@ -26843,15 +26843,15 @@ "binop": null }, "value": "dataSource", - "start": 8646, - "end": 8656, + "start": 12220, + "end": 12230, "loc": { "start": { - "line": 178, + "line": 251, "column": 13 }, "end": { - "line": 178, + "line": 251, "column": 23 } } @@ -26870,15 +26870,15 @@ "updateContext": null }, "value": "=", - "start": 8657, - "end": 8658, + "start": 12231, + "end": 12232, "loc": { "start": { - "line": 178, + "line": 251, "column": 24 }, "end": { - "line": 178, + "line": 251, "column": 25 } } @@ -26896,15 +26896,15 @@ "binop": null }, "value": "cfg", - "start": 8659, - "end": 8662, + "start": 12233, + "end": 12236, "loc": { "start": { - "line": 178, + "line": 251, "column": 26 }, "end": { - "line": 178, + "line": 251, "column": 29 } } @@ -26922,15 +26922,15 @@ "binop": null, "updateContext": null }, - "start": 8662, - "end": 8663, + "start": 12236, + "end": 12237, "loc": { "start": { - "line": 178, + "line": 251, "column": 29 }, "end": { - "line": 178, + "line": 251, "column": 30 } } @@ -26948,15 +26948,15 @@ "binop": null }, "value": "dataSource", - "start": 8663, - "end": 8673, + "start": 12237, + "end": 12247, "loc": { "start": { - "line": 178, + "line": 251, "column": 30 }, "end": { - "line": 178, + "line": 251, "column": 40 } } @@ -26974,15 +26974,15 @@ "binop": null, "updateContext": null }, - "start": 8673, - "end": 8674, + "start": 12247, + "end": 12248, "loc": { "start": { - "line": 178, + "line": 251, "column": 40 }, "end": { - "line": 178, + "line": 251, "column": 41 } } @@ -27002,15 +27002,15 @@ "updateContext": null }, "value": "this", - "start": 8683, - "end": 8687, + "start": 12257, + "end": 12261, "loc": { "start": { - "line": 179, + "line": 252, "column": 8 }, "end": { - "line": 179, + "line": 252, "column": 12 } } @@ -27028,15 +27028,15 @@ "binop": null, "updateContext": null }, - "start": 8687, - "end": 8688, + "start": 12261, + "end": 12262, "loc": { "start": { - "line": 179, + "line": 252, "column": 12 }, "end": { - "line": 179, + "line": 252, "column": 13 } } @@ -27054,15 +27054,15 @@ "binop": null }, "value": "objectDefaults", - "start": 8688, - "end": 8702, + "start": 12262, + "end": 12276, "loc": { "start": { - "line": 179, + "line": 252, "column": 13 }, "end": { - "line": 179, + "line": 252, "column": 27 } } @@ -27081,15 +27081,15 @@ "updateContext": null }, "value": "=", - "start": 8703, - "end": 8704, + "start": 12277, + "end": 12278, "loc": { "start": { - "line": 179, + "line": 252, "column": 28 }, "end": { - "line": 179, + "line": 252, "column": 29 } } @@ -27107,15 +27107,15 @@ "binop": null }, "value": "cfg", - "start": 8705, - "end": 8708, + "start": 12279, + "end": 12282, "loc": { "start": { - "line": 179, + "line": 252, "column": 30 }, "end": { - "line": 179, + "line": 252, "column": 33 } } @@ -27133,15 +27133,15 @@ "binop": null, "updateContext": null }, - "start": 8708, - "end": 8709, + "start": 12282, + "end": 12283, "loc": { "start": { - "line": 179, + "line": 252, "column": 33 }, "end": { - "line": 179, + "line": 252, "column": 34 } } @@ -27159,15 +27159,15 @@ "binop": null }, "value": "objectDefaults", - "start": 8709, - "end": 8723, + "start": 12283, + "end": 12297, "loc": { "start": { - "line": 179, + "line": 252, "column": 34 }, "end": { - "line": 179, + "line": 252, "column": 48 } } @@ -27185,15 +27185,15 @@ "binop": null, "updateContext": null }, - "start": 8723, - "end": 8724, + "start": 12297, + "end": 12298, "loc": { "start": { - "line": 179, + "line": 252, "column": 48 }, "end": { - "line": 179, + "line": 252, "column": 49 } } @@ -27210,15 +27210,15 @@ "postfix": false, "binop": null }, - "start": 8729, - "end": 8730, + "start": 12303, + "end": 12304, "loc": { "start": { - "line": 180, + "line": 253, "column": 4 }, "end": { - "line": 180, + "line": 253, "column": 5 } } @@ -27226,15 +27226,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 8736, - "end": 8989, + "start": 12310, + "end": 12563, "loc": { "start": { - "line": 182, + "line": 255, "column": 4 }, "end": { - "line": 188, + "line": 261, "column": 7 } } @@ -27252,15 +27252,15 @@ "binop": null }, "value": "set", - "start": 8994, - "end": 8997, + "start": 12568, + "end": 12571, "loc": { "start": { - "line": 189, + "line": 262, "column": 4 }, "end": { - "line": 189, + "line": 262, "column": 7 } } @@ -27278,15 +27278,15 @@ "binop": null }, "value": "dataSource", - "start": 8998, - "end": 9008, + "start": 12572, + "end": 12582, "loc": { "start": { - "line": 189, + "line": 262, "column": 8 }, "end": { - "line": 189, + "line": 262, "column": 18 } } @@ -27303,15 +27303,15 @@ "postfix": false, "binop": null }, - "start": 9008, - "end": 9009, + "start": 12582, + "end": 12583, "loc": { "start": { - "line": 189, + "line": 262, "column": 18 }, "end": { - "line": 189, + "line": 262, "column": 19 } } @@ -27329,15 +27329,15 @@ "binop": null }, "value": "value", - "start": 9009, - "end": 9014, + "start": 12583, + "end": 12588, "loc": { "start": { - "line": 189, + "line": 262, "column": 19 }, "end": { - "line": 189, + "line": 262, "column": 24 } } @@ -27354,15 +27354,15 @@ "postfix": false, "binop": null }, - "start": 9014, - "end": 9015, + "start": 12588, + "end": 12589, "loc": { "start": { - "line": 189, + "line": 262, "column": 24 }, "end": { - "line": 189, + "line": 262, "column": 25 } } @@ -27379,15 +27379,15 @@ "postfix": false, "binop": null }, - "start": 9016, - "end": 9017, + "start": 12590, + "end": 12591, "loc": { "start": { - "line": 189, + "line": 262, "column": 26 }, "end": { - "line": 189, + "line": 262, "column": 27 } } @@ -27407,15 +27407,15 @@ "updateContext": null }, "value": "this", - "start": 9026, - "end": 9030, + "start": 12600, + "end": 12604, "loc": { "start": { - "line": 190, + "line": 263, "column": 8 }, "end": { - "line": 190, + "line": 263, "column": 12 } } @@ -27433,15 +27433,15 @@ "binop": null, "updateContext": null }, - "start": 9030, - "end": 9031, + "start": 12604, + "end": 12605, "loc": { "start": { - "line": 190, + "line": 263, "column": 12 }, "end": { - "line": 190, + "line": 263, "column": 13 } } @@ -27459,15 +27459,15 @@ "binop": null }, "value": "_dataSource", - "start": 9031, - "end": 9042, + "start": 12605, + "end": 12616, "loc": { "start": { - "line": 190, + "line": 263, "column": 13 }, "end": { - "line": 190, + "line": 263, "column": 24 } } @@ -27486,15 +27486,15 @@ "updateContext": null }, "value": "=", - "start": 9043, - "end": 9044, + "start": 12617, + "end": 12618, "loc": { "start": { - "line": 190, + "line": 263, "column": 25 }, "end": { - "line": 190, + "line": 263, "column": 26 } } @@ -27512,15 +27512,15 @@ "binop": null }, "value": "value", - "start": 9045, - "end": 9050, + "start": 12619, + "end": 12624, "loc": { "start": { - "line": 190, + "line": 263, "column": 27 }, "end": { - "line": 190, + "line": 263, "column": 32 } } @@ -27539,15 +27539,15 @@ "updateContext": null }, "value": "||", - "start": 9051, - "end": 9053, + "start": 12625, + "end": 12627, "loc": { "start": { - "line": 190, + "line": 263, "column": 33 }, "end": { - "line": 190, + "line": 263, "column": 35 } } @@ -27567,15 +27567,15 @@ "updateContext": null }, "value": "new", - "start": 9054, - "end": 9057, + "start": 12628, + "end": 12631, "loc": { "start": { - "line": 190, + "line": 263, "column": 36 }, "end": { - "line": 190, + "line": 263, "column": 39 } } @@ -27593,15 +27593,15 @@ "binop": null }, "value": "GLTFDefaultDataSource", - "start": 9058, - "end": 9079, + "start": 12632, + "end": 12653, "loc": { "start": { - "line": 190, + "line": 263, "column": 40 }, "end": { - "line": 190, + "line": 263, "column": 61 } } @@ -27618,15 +27618,15 @@ "postfix": false, "binop": null }, - "start": 9079, - "end": 9080, + "start": 12653, + "end": 12654, "loc": { "start": { - "line": 190, + "line": 263, "column": 61 }, "end": { - "line": 190, + "line": 263, "column": 62 } } @@ -27643,15 +27643,15 @@ "postfix": false, "binop": null }, - "start": 9080, - "end": 9081, + "start": 12654, + "end": 12655, "loc": { "start": { - "line": 190, + "line": 263, "column": 62 }, "end": { - "line": 190, + "line": 263, "column": 63 } } @@ -27669,15 +27669,15 @@ "binop": null, "updateContext": null }, - "start": 9081, - "end": 9082, + "start": 12655, + "end": 12656, "loc": { "start": { - "line": 190, + "line": 263, "column": 63 }, "end": { - "line": 190, + "line": 263, "column": 64 } } @@ -27694,15 +27694,15 @@ "postfix": false, "binop": null }, - "start": 9087, - "end": 9088, + "start": 12661, + "end": 12662, "loc": { "start": { - "line": 191, + "line": 264, "column": 4 }, "end": { - "line": 191, + "line": 264, "column": 5 } } @@ -27710,15 +27710,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n ", - "start": 9094, - "end": 9349, + "start": 12668, + "end": 12923, "loc": { "start": { - "line": 193, + "line": 266, "column": 4 }, "end": { - "line": 199, + "line": 272, "column": 7 } } @@ -27736,15 +27736,15 @@ "binop": null }, "value": "get", - "start": 9354, - "end": 9357, + "start": 12928, + "end": 12931, "loc": { "start": { - "line": 200, + "line": 273, "column": 4 }, "end": { - "line": 200, + "line": 273, "column": 7 } } @@ -27762,15 +27762,15 @@ "binop": null }, "value": "dataSource", - "start": 9358, - "end": 9368, + "start": 12932, + "end": 12942, "loc": { "start": { - "line": 200, + "line": 273, "column": 8 }, "end": { - "line": 200, + "line": 273, "column": 18 } } @@ -27787,15 +27787,15 @@ "postfix": false, "binop": null }, - "start": 9368, - "end": 9369, + "start": 12942, + "end": 12943, "loc": { "start": { - "line": 200, + "line": 273, "column": 18 }, "end": { - "line": 200, + "line": 273, "column": 19 } } @@ -27812,15 +27812,15 @@ "postfix": false, "binop": null }, - "start": 9369, - "end": 9370, + "start": 12943, + "end": 12944, "loc": { "start": { - "line": 200, + "line": 273, "column": 19 }, "end": { - "line": 200, + "line": 273, "column": 20 } } @@ -27837,15 +27837,15 @@ "postfix": false, "binop": null }, - "start": 9371, - "end": 9372, + "start": 12945, + "end": 12946, "loc": { "start": { - "line": 200, + "line": 273, "column": 21 }, "end": { - "line": 200, + "line": 273, "column": 22 } } @@ -27865,15 +27865,15 @@ "updateContext": null }, "value": "return", - "start": 9381, - "end": 9387, + "start": 12955, + "end": 12961, "loc": { "start": { - "line": 201, + "line": 274, "column": 8 }, "end": { - "line": 201, + "line": 274, "column": 14 } } @@ -27893,15 +27893,15 @@ "updateContext": null }, "value": "this", - "start": 9388, - "end": 9392, + "start": 12962, + "end": 12966, "loc": { "start": { - "line": 201, + "line": 274, "column": 15 }, "end": { - "line": 201, + "line": 274, "column": 19 } } @@ -27919,15 +27919,15 @@ "binop": null, "updateContext": null }, - "start": 9392, - "end": 9393, + "start": 12966, + "end": 12967, "loc": { "start": { - "line": 201, + "line": 274, "column": 19 }, "end": { - "line": 201, + "line": 274, "column": 20 } } @@ -27945,15 +27945,15 @@ "binop": null }, "value": "_dataSource", - "start": 9393, - "end": 9404, + "start": 12967, + "end": 12978, "loc": { "start": { - "line": 201, + "line": 274, "column": 20 }, "end": { - "line": 201, + "line": 274, "column": 31 } } @@ -27971,15 +27971,15 @@ "binop": null, "updateContext": null }, - "start": 9404, - "end": 9405, + "start": 12978, + "end": 12979, "loc": { "start": { - "line": 201, + "line": 274, "column": 31 }, "end": { - "line": 201, + "line": 274, "column": 32 } } @@ -27996,15 +27996,15 @@ "postfix": false, "binop": null }, - "start": 9410, - "end": 9411, + "start": 12984, + "end": 12985, "loc": { "start": { - "line": 202, + "line": 275, "column": 4 }, "end": { - "line": 202, + "line": 275, "column": 5 } } @@ -28012,15 +28012,15 @@ { "type": "CommentBlock", "value": "*\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9417, - "end": 9625, + "start": 12991, + "end": 13199, "loc": { "start": { - "line": 204, + "line": 277, "column": 4 }, "end": { - "line": 210, + "line": 283, "column": 7 } } @@ -28038,15 +28038,15 @@ "binop": null }, "value": "set", - "start": 9630, - "end": 9633, + "start": 13204, + "end": 13207, "loc": { "start": { - "line": 211, + "line": 284, "column": 4 }, "end": { - "line": 211, + "line": 284, "column": 7 } } @@ -28064,15 +28064,15 @@ "binop": null }, "value": "objectDefaults", - "start": 9634, - "end": 9648, + "start": 13208, + "end": 13222, "loc": { "start": { - "line": 211, + "line": 284, "column": 8 }, "end": { - "line": 211, + "line": 284, "column": 22 } } @@ -28089,15 +28089,15 @@ "postfix": false, "binop": null }, - "start": 9648, - "end": 9649, + "start": 13222, + "end": 13223, "loc": { "start": { - "line": 211, + "line": 284, "column": 22 }, "end": { - "line": 211, + "line": 284, "column": 23 } } @@ -28115,15 +28115,15 @@ "binop": null }, "value": "value", - "start": 9649, - "end": 9654, + "start": 13223, + "end": 13228, "loc": { "start": { - "line": 211, + "line": 284, "column": 23 }, "end": { - "line": 211, + "line": 284, "column": 28 } } @@ -28140,15 +28140,15 @@ "postfix": false, "binop": null }, - "start": 9654, - "end": 9655, + "start": 13228, + "end": 13229, "loc": { "start": { - "line": 211, + "line": 284, "column": 28 }, "end": { - "line": 211, + "line": 284, "column": 29 } } @@ -28165,15 +28165,15 @@ "postfix": false, "binop": null }, - "start": 9656, - "end": 9657, + "start": 13230, + "end": 13231, "loc": { "start": { - "line": 211, + "line": 284, "column": 30 }, "end": { - "line": 211, + "line": 284, "column": 31 } } @@ -28193,15 +28193,15 @@ "updateContext": null }, "value": "this", - "start": 9666, - "end": 9670, + "start": 13240, + "end": 13244, "loc": { "start": { - "line": 212, + "line": 285, "column": 8 }, "end": { - "line": 212, + "line": 285, "column": 12 } } @@ -28219,15 +28219,15 @@ "binop": null, "updateContext": null }, - "start": 9670, - "end": 9671, + "start": 13244, + "end": 13245, "loc": { "start": { - "line": 212, + "line": 285, "column": 12 }, "end": { - "line": 212, + "line": 285, "column": 13 } } @@ -28245,15 +28245,15 @@ "binop": null }, "value": "_objectDefaults", - "start": 9671, - "end": 9686, + "start": 13245, + "end": 13260, "loc": { "start": { - "line": 212, + "line": 285, "column": 13 }, "end": { - "line": 212, + "line": 285, "column": 28 } } @@ -28272,15 +28272,15 @@ "updateContext": null }, "value": "=", - "start": 9687, - "end": 9688, + "start": 13261, + "end": 13262, "loc": { "start": { - "line": 212, + "line": 285, "column": 29 }, "end": { - "line": 212, + "line": 285, "column": 30 } } @@ -28298,15 +28298,15 @@ "binop": null }, "value": "value", - "start": 9689, - "end": 9694, + "start": 13263, + "end": 13268, "loc": { "start": { - "line": 212, + "line": 285, "column": 31 }, "end": { - "line": 212, + "line": 285, "column": 36 } } @@ -28325,15 +28325,15 @@ "updateContext": null }, "value": "||", - "start": 9695, - "end": 9697, + "start": 13269, + "end": 13271, "loc": { "start": { - "line": 212, + "line": 285, "column": 37 }, "end": { - "line": 212, + "line": 285, "column": 39 } } @@ -28351,15 +28351,15 @@ "binop": null }, "value": "IFCObjectDefaults", - "start": 9698, - "end": 9715, + "start": 13272, + "end": 13289, "loc": { "start": { - "line": 212, + "line": 285, "column": 40 }, "end": { - "line": 212, + "line": 285, "column": 57 } } @@ -28377,15 +28377,15 @@ "binop": null, "updateContext": null }, - "start": 9715, - "end": 9716, + "start": 13289, + "end": 13290, "loc": { "start": { - "line": 212, + "line": 285, "column": 57 }, "end": { - "line": 212, + "line": 285, "column": 58 } } @@ -28402,15 +28402,15 @@ "postfix": false, "binop": null }, - "start": 9721, - "end": 9722, + "start": 13295, + "end": 13296, "loc": { "start": { - "line": 213, + "line": 286, "column": 4 }, "end": { - "line": 213, + "line": 286, "column": 5 } } @@ -28418,15 +28418,15 @@ { "type": "CommentBlock", "value": "*\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n ", - "start": 9728, - "end": 9936, + "start": 13302, + "end": 13510, "loc": { "start": { - "line": 215, + "line": 288, "column": 4 }, "end": { - "line": 221, + "line": 294, "column": 7 } } @@ -28444,15 +28444,15 @@ "binop": null }, "value": "get", - "start": 9941, - "end": 9944, + "start": 13515, + "end": 13518, "loc": { "start": { - "line": 222, + "line": 295, "column": 4 }, "end": { - "line": 222, + "line": 295, "column": 7 } } @@ -28470,15 +28470,15 @@ "binop": null }, "value": "objectDefaults", - "start": 9945, - "end": 9959, + "start": 13519, + "end": 13533, "loc": { "start": { - "line": 222, + "line": 295, "column": 8 }, "end": { - "line": 222, + "line": 295, "column": 22 } } @@ -28495,15 +28495,15 @@ "postfix": false, "binop": null }, - "start": 9959, - "end": 9960, + "start": 13533, + "end": 13534, "loc": { "start": { - "line": 222, + "line": 295, "column": 22 }, "end": { - "line": 222, + "line": 295, "column": 23 } } @@ -28520,15 +28520,15 @@ "postfix": false, "binop": null }, - "start": 9960, - "end": 9961, + "start": 13534, + "end": 13535, "loc": { "start": { - "line": 222, + "line": 295, "column": 23 }, "end": { - "line": 222, + "line": 295, "column": 24 } } @@ -28545,15 +28545,15 @@ "postfix": false, "binop": null }, - "start": 9962, - "end": 9963, + "start": 13536, + "end": 13537, "loc": { "start": { - "line": 222, + "line": 295, "column": 25 }, "end": { - "line": 222, + "line": 295, "column": 26 } } @@ -28573,15 +28573,15 @@ "updateContext": null }, "value": "return", - "start": 9972, - "end": 9978, + "start": 13546, + "end": 13552, "loc": { "start": { - "line": 223, + "line": 296, "column": 8 }, "end": { - "line": 223, + "line": 296, "column": 14 } } @@ -28601,15 +28601,15 @@ "updateContext": null }, "value": "this", - "start": 9979, - "end": 9983, + "start": 13553, + "end": 13557, "loc": { "start": { - "line": 223, + "line": 296, "column": 15 }, "end": { - "line": 223, + "line": 296, "column": 19 } } @@ -28627,15 +28627,15 @@ "binop": null, "updateContext": null }, - "start": 9983, - "end": 9984, + "start": 13557, + "end": 13558, "loc": { "start": { - "line": 223, + "line": 296, "column": 19 }, "end": { - "line": 223, + "line": 296, "column": 20 } } @@ -28653,15 +28653,15 @@ "binop": null }, "value": "_objectDefaults", - "start": 9984, - "end": 9999, + "start": 13558, + "end": 13573, "loc": { "start": { - "line": 223, + "line": 296, "column": 20 }, "end": { - "line": 223, + "line": 296, "column": 35 } } @@ -28679,15 +28679,15 @@ "binop": null, "updateContext": null }, - "start": 9999, - "end": 10000, + "start": 13573, + "end": 13574, "loc": { "start": { - "line": 223, + "line": 296, "column": 35 }, "end": { - "line": 223, + "line": 296, "column": 36 } } @@ -28704,15 +28704,15 @@ "postfix": false, "binop": null }, - "start": 10005, - "end": 10006, + "start": 13579, + "end": 13580, "loc": { "start": { - "line": 224, + "line": 297, "column": 4 }, "end": { - "line": 224, + "line": 297, "column": 5 } } @@ -28720,15 +28720,15 @@ { "type": "CommentBlock", "value": "*\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelJSON```` parameter.\n * @param {*} [params.metaModelJSON] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @param {String} [params.entityId] When supplied, causes the entire model to be loaded into a single {@link Entity} that gets this ID.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n ", - "start": 10012, - "end": 13967, + "start": 13586, + "end": 17541, "loc": { "start": { - "line": 226, + "line": 299, "column": 4 }, "end": { - "line": 255, + "line": 328, "column": 7 } } @@ -28746,15 +28746,15 @@ "binop": null }, "value": "load", - "start": 13972, - "end": 13976, + "start": 17546, + "end": 17550, "loc": { "start": { - "line": 256, + "line": 329, "column": 4 }, "end": { - "line": 256, + "line": 329, "column": 8 } } @@ -28771,15 +28771,15 @@ "postfix": false, "binop": null }, - "start": 13976, - "end": 13977, + "start": 17550, + "end": 17551, "loc": { "start": { - "line": 256, + "line": 329, "column": 8 }, "end": { - "line": 256, + "line": 329, "column": 9 } } @@ -28797,15 +28797,15 @@ "binop": null }, "value": "params", - "start": 13977, - "end": 13983, + "start": 17551, + "end": 17557, "loc": { "start": { - "line": 256, + "line": 329, "column": 9 }, "end": { - "line": 256, + "line": 329, "column": 15 } } @@ -28824,15 +28824,15 @@ "updateContext": null }, "value": "=", - "start": 13984, - "end": 13985, + "start": 17558, + "end": 17559, "loc": { "start": { - "line": 256, + "line": 329, "column": 16 }, "end": { - "line": 256, + "line": 329, "column": 17 } } @@ -28849,15 +28849,15 @@ "postfix": false, "binop": null }, - "start": 13986, - "end": 13987, + "start": 17560, + "end": 17561, "loc": { "start": { - "line": 256, + "line": 329, "column": 18 }, "end": { - "line": 256, + "line": 329, "column": 19 } } @@ -28874,15 +28874,15 @@ "postfix": false, "binop": null }, - "start": 13987, - "end": 13988, + "start": 17561, + "end": 17562, "loc": { "start": { - "line": 256, + "line": 329, "column": 19 }, "end": { - "line": 256, + "line": 329, "column": 20 } } @@ -28899,15 +28899,15 @@ "postfix": false, "binop": null }, - "start": 13988, - "end": 13989, + "start": 17562, + "end": 17563, "loc": { "start": { - "line": 256, + "line": 329, "column": 20 }, "end": { - "line": 256, + "line": 329, "column": 21 } } @@ -28924,15 +28924,15 @@ "postfix": false, "binop": null }, - "start": 13990, - "end": 13991, + "start": 17564, + "end": 17565, "loc": { "start": { - "line": 256, + "line": 329, "column": 22 }, "end": { - "line": 256, + "line": 329, "column": 23 } } @@ -28952,15 +28952,15 @@ "updateContext": null }, "value": "if", - "start": 14001, - "end": 14003, + "start": 17575, + "end": 17577, "loc": { "start": { - "line": 258, + "line": 331, "column": 8 }, "end": { - "line": 258, + "line": 331, "column": 10 } } @@ -28977,15 +28977,15 @@ "postfix": false, "binop": null }, - "start": 14004, - "end": 14005, + "start": 17578, + "end": 17579, "loc": { "start": { - "line": 258, + "line": 331, "column": 11 }, "end": { - "line": 258, + "line": 331, "column": 12 } } @@ -29003,15 +29003,15 @@ "binop": null }, "value": "params", - "start": 14005, - "end": 14011, + "start": 17579, + "end": 17585, "loc": { "start": { - "line": 258, + "line": 331, "column": 12 }, "end": { - "line": 258, + "line": 331, "column": 18 } } @@ -29029,15 +29029,15 @@ "binop": null, "updateContext": null }, - "start": 14011, - "end": 14012, + "start": 17585, + "end": 17586, "loc": { "start": { - "line": 258, + "line": 331, "column": 18 }, "end": { - "line": 258, + "line": 331, "column": 19 } } @@ -29055,15 +29055,15 @@ "binop": null }, "value": "id", - "start": 14012, - "end": 14014, + "start": 17586, + "end": 17588, "loc": { "start": { - "line": 258, + "line": 331, "column": 19 }, "end": { - "line": 258, + "line": 331, "column": 21 } } @@ -29082,15 +29082,15 @@ "updateContext": null }, "value": "&&", - "start": 14015, - "end": 14017, + "start": 17589, + "end": 17591, "loc": { "start": { - "line": 258, + "line": 331, "column": 22 }, "end": { - "line": 258, + "line": 331, "column": 24 } } @@ -29110,15 +29110,15 @@ "updateContext": null }, "value": "this", - "start": 14018, - "end": 14022, + "start": 17592, + "end": 17596, "loc": { "start": { - "line": 258, + "line": 331, "column": 25 }, "end": { - "line": 258, + "line": 331, "column": 29 } } @@ -29136,15 +29136,15 @@ "binop": null, "updateContext": null }, - "start": 14022, - "end": 14023, + "start": 17596, + "end": 17597, "loc": { "start": { - "line": 258, + "line": 331, "column": 29 }, "end": { - "line": 258, + "line": 331, "column": 30 } } @@ -29162,15 +29162,15 @@ "binop": null }, "value": "viewer", - "start": 14023, - "end": 14029, + "start": 17597, + "end": 17603, "loc": { "start": { - "line": 258, + "line": 331, "column": 30 }, "end": { - "line": 258, + "line": 331, "column": 36 } } @@ -29188,15 +29188,15 @@ "binop": null, "updateContext": null }, - "start": 14029, - "end": 14030, + "start": 17603, + "end": 17604, "loc": { "start": { - "line": 258, + "line": 331, "column": 36 }, "end": { - "line": 258, + "line": 331, "column": 37 } } @@ -29214,15 +29214,15 @@ "binop": null }, "value": "scene", - "start": 14030, - "end": 14035, + "start": 17604, + "end": 17609, "loc": { "start": { - "line": 258, + "line": 331, "column": 37 }, "end": { - "line": 258, + "line": 331, "column": 42 } } @@ -29240,15 +29240,15 @@ "binop": null, "updateContext": null }, - "start": 14035, - "end": 14036, + "start": 17609, + "end": 17610, "loc": { "start": { - "line": 258, + "line": 331, "column": 42 }, "end": { - "line": 258, + "line": 331, "column": 43 } } @@ -29266,15 +29266,15 @@ "binop": null }, "value": "components", - "start": 14036, - "end": 14046, + "start": 17610, + "end": 17620, "loc": { "start": { - "line": 258, + "line": 331, "column": 43 }, "end": { - "line": 258, + "line": 331, "column": 53 } } @@ -29292,15 +29292,15 @@ "binop": null, "updateContext": null }, - "start": 14046, - "end": 14047, + "start": 17620, + "end": 17621, "loc": { "start": { - "line": 258, + "line": 331, "column": 53 }, "end": { - "line": 258, + "line": 331, "column": 54 } } @@ -29318,15 +29318,15 @@ "binop": null }, "value": "params", - "start": 14047, - "end": 14053, + "start": 17621, + "end": 17627, "loc": { "start": { - "line": 258, + "line": 331, "column": 54 }, "end": { - "line": 258, + "line": 331, "column": 60 } } @@ -29344,15 +29344,15 @@ "binop": null, "updateContext": null }, - "start": 14053, - "end": 14054, + "start": 17627, + "end": 17628, "loc": { "start": { - "line": 258, + "line": 331, "column": 60 }, "end": { - "line": 258, + "line": 331, "column": 61 } } @@ -29370,15 +29370,15 @@ "binop": null }, "value": "id", - "start": 14054, - "end": 14056, + "start": 17628, + "end": 17630, "loc": { "start": { - "line": 258, + "line": 331, "column": 61 }, "end": { - "line": 258, + "line": 331, "column": 63 } } @@ -29396,15 +29396,15 @@ "binop": null, "updateContext": null }, - "start": 14056, - "end": 14057, + "start": 17630, + "end": 17631, "loc": { "start": { - "line": 258, + "line": 331, "column": 63 }, "end": { - "line": 258, + "line": 331, "column": 64 } } @@ -29421,15 +29421,15 @@ "postfix": false, "binop": null }, - "start": 14057, - "end": 14058, + "start": 17631, + "end": 17632, "loc": { "start": { - "line": 258, + "line": 331, "column": 64 }, "end": { - "line": 258, + "line": 331, "column": 65 } } @@ -29446,15 +29446,15 @@ "postfix": false, "binop": null }, - "start": 14059, - "end": 14060, + "start": 17633, + "end": 17634, "loc": { "start": { - "line": 258, + "line": 331, "column": 66 }, "end": { - "line": 258, + "line": 331, "column": 67 } } @@ -29474,15 +29474,15 @@ "updateContext": null }, "value": "this", - "start": 14073, - "end": 14077, + "start": 17647, + "end": 17651, "loc": { "start": { - "line": 259, + "line": 332, "column": 12 }, "end": { - "line": 259, + "line": 332, "column": 16 } } @@ -29500,15 +29500,15 @@ "binop": null, "updateContext": null }, - "start": 14077, - "end": 14078, + "start": 17651, + "end": 17652, "loc": { "start": { - "line": 259, + "line": 332, "column": 16 }, "end": { - "line": 259, + "line": 332, "column": 17 } } @@ -29526,15 +29526,15 @@ "binop": null }, "value": "error", - "start": 14078, - "end": 14083, + "start": 17652, + "end": 17657, "loc": { "start": { - "line": 259, + "line": 332, "column": 17 }, "end": { - "line": 259, + "line": 332, "column": 22 } } @@ -29551,15 +29551,15 @@ "postfix": false, "binop": null }, - "start": 14083, - "end": 14084, + "start": 17657, + "end": 17658, "loc": { "start": { - "line": 259, + "line": 332, "column": 22 }, "end": { - "line": 259, + "line": 332, "column": 23 } } @@ -29578,15 +29578,15 @@ "updateContext": null }, "value": "Component with this ID already exists in viewer: ", - "start": 14084, - "end": 14135, + "start": 17658, + "end": 17709, "loc": { "start": { - "line": 259, + "line": 332, "column": 23 }, "end": { - "line": 259, + "line": 332, "column": 74 } } @@ -29605,15 +29605,15 @@ "updateContext": null }, "value": "+", - "start": 14136, - "end": 14137, + "start": 17710, + "end": 17711, "loc": { "start": { - "line": 259, + "line": 332, "column": 75 }, "end": { - "line": 259, + "line": 332, "column": 76 } } @@ -29631,15 +29631,15 @@ "binop": null }, "value": "params", - "start": 14138, - "end": 14144, + "start": 17712, + "end": 17718, "loc": { "start": { - "line": 259, + "line": 332, "column": 77 }, "end": { - "line": 259, + "line": 332, "column": 83 } } @@ -29657,15 +29657,15 @@ "binop": null, "updateContext": null }, - "start": 14144, - "end": 14145, + "start": 17718, + "end": 17719, "loc": { "start": { - "line": 259, + "line": 332, "column": 83 }, "end": { - "line": 259, + "line": 332, "column": 84 } } @@ -29683,15 +29683,15 @@ "binop": null }, "value": "id", - "start": 14145, - "end": 14147, + "start": 17719, + "end": 17721, "loc": { "start": { - "line": 259, + "line": 332, "column": 84 }, "end": { - "line": 259, + "line": 332, "column": 86 } } @@ -29710,15 +29710,15 @@ "updateContext": null }, "value": "+", - "start": 14148, - "end": 14149, + "start": 17722, + "end": 17723, "loc": { "start": { - "line": 259, + "line": 332, "column": 87 }, "end": { - "line": 259, + "line": 332, "column": 88 } } @@ -29737,15 +29737,15 @@ "updateContext": null }, "value": " - will autogenerate this ID", - "start": 14150, - "end": 14180, + "start": 17724, + "end": 17754, "loc": { "start": { - "line": 259, + "line": 332, "column": 89 }, "end": { - "line": 259, + "line": 332, "column": 119 } } @@ -29762,15 +29762,15 @@ "postfix": false, "binop": null }, - "start": 14180, - "end": 14181, + "start": 17754, + "end": 17755, "loc": { "start": { - "line": 259, + "line": 332, "column": 119 }, "end": { - "line": 259, + "line": 332, "column": 120 } } @@ -29788,15 +29788,15 @@ "binop": null, "updateContext": null }, - "start": 14181, - "end": 14182, + "start": 17755, + "end": 17756, "loc": { "start": { - "line": 259, + "line": 332, "column": 120 }, "end": { - "line": 259, + "line": 332, "column": 121 } } @@ -29816,15 +29816,15 @@ "updateContext": null }, "value": "delete", - "start": 14195, - "end": 14201, + "start": 17769, + "end": 17775, "loc": { "start": { - "line": 260, + "line": 333, "column": 12 }, "end": { - "line": 260, + "line": 333, "column": 18 } } @@ -29842,15 +29842,15 @@ "binop": null }, "value": "params", - "start": 14202, - "end": 14208, + "start": 17776, + "end": 17782, "loc": { "start": { - "line": 260, + "line": 333, "column": 19 }, "end": { - "line": 260, + "line": 333, "column": 25 } } @@ -29868,15 +29868,15 @@ "binop": null, "updateContext": null }, - "start": 14208, - "end": 14209, + "start": 17782, + "end": 17783, "loc": { "start": { - "line": 260, + "line": 333, "column": 25 }, "end": { - "line": 260, + "line": 333, "column": 26 } } @@ -29894,15 +29894,15 @@ "binop": null }, "value": "id", - "start": 14209, - "end": 14211, + "start": 17783, + "end": 17785, "loc": { "start": { - "line": 260, + "line": 333, "column": 26 }, "end": { - "line": 260, + "line": 333, "column": 28 } } @@ -29920,15 +29920,15 @@ "binop": null, "updateContext": null }, - "start": 14211, - "end": 14212, + "start": 17785, + "end": 17786, "loc": { "start": { - "line": 260, + "line": 333, "column": 28 }, "end": { - "line": 260, + "line": 333, "column": 29 } } @@ -29945,15 +29945,15 @@ "postfix": false, "binop": null }, - "start": 14221, - "end": 14222, + "start": 17795, + "end": 17796, "loc": { "start": { - "line": 261, + "line": 334, "column": 8 }, "end": { - "line": 261, + "line": 334, "column": 9 } } @@ -29973,15 +29973,15 @@ "updateContext": null }, "value": "const", - "start": 14232, - "end": 14237, + "start": 17806, + "end": 17811, "loc": { "start": { - "line": 263, + "line": 336, "column": 8 }, "end": { - "line": 263, + "line": 336, "column": 13 } } @@ -29999,15 +29999,15 @@ "binop": null }, "value": "sceneModel", - "start": 14238, - "end": 14248, + "start": 17812, + "end": 17822, "loc": { "start": { - "line": 263, + "line": 336, "column": 14 }, "end": { - "line": 263, + "line": 336, "column": 24 } } @@ -30026,15 +30026,15 @@ "updateContext": null }, "value": "=", - "start": 14249, - "end": 14250, + "start": 17823, + "end": 17824, "loc": { "start": { - "line": 263, + "line": 336, "column": 25 }, "end": { - "line": 263, + "line": 336, "column": 26 } } @@ -30054,15 +30054,15 @@ "updateContext": null }, "value": "new", - "start": 14251, - "end": 14254, + "start": 17825, + "end": 17828, "loc": { "start": { - "line": 263, + "line": 336, "column": 27 }, "end": { - "line": 263, + "line": 336, "column": 30 } } @@ -30080,15 +30080,15 @@ "binop": null }, "value": "SceneModel", - "start": 14255, - "end": 14265, + "start": 17829, + "end": 17839, "loc": { "start": { - "line": 263, + "line": 336, "column": 31 }, "end": { - "line": 263, + "line": 336, "column": 41 } } @@ -30105,15 +30105,15 @@ "postfix": false, "binop": null }, - "start": 14265, - "end": 14266, + "start": 17839, + "end": 17840, "loc": { "start": { - "line": 263, + "line": 336, "column": 41 }, "end": { - "line": 263, + "line": 336, "column": 42 } } @@ -30133,15 +30133,15 @@ "updateContext": null }, "value": "this", - "start": 14266, - "end": 14270, + "start": 17840, + "end": 17844, "loc": { "start": { - "line": 263, + "line": 336, "column": 42 }, "end": { - "line": 263, + "line": 336, "column": 46 } } @@ -30159,15 +30159,15 @@ "binop": null, "updateContext": null }, - "start": 14270, - "end": 14271, + "start": 17844, + "end": 17845, "loc": { "start": { - "line": 263, + "line": 336, "column": 46 }, "end": { - "line": 263, + "line": 336, "column": 47 } } @@ -30185,15 +30185,15 @@ "binop": null }, "value": "viewer", - "start": 14271, - "end": 14277, + "start": 17845, + "end": 17851, "loc": { "start": { - "line": 263, + "line": 336, "column": 47 }, "end": { - "line": 263, + "line": 336, "column": 53 } } @@ -30211,15 +30211,15 @@ "binop": null, "updateContext": null }, - "start": 14277, - "end": 14278, + "start": 17851, + "end": 17852, "loc": { "start": { - "line": 263, + "line": 336, "column": 53 }, "end": { - "line": 263, + "line": 336, "column": 54 } } @@ -30237,15 +30237,15 @@ "binop": null }, "value": "scene", - "start": 14278, - "end": 14283, + "start": 17852, + "end": 17857, "loc": { "start": { - "line": 263, + "line": 336, "column": 54 }, "end": { - "line": 263, + "line": 336, "column": 59 } } @@ -30263,15 +30263,15 @@ "binop": null, "updateContext": null }, - "start": 14283, - "end": 14284, + "start": 17857, + "end": 17858, "loc": { "start": { - "line": 263, + "line": 336, "column": 59 }, "end": { - "line": 263, + "line": 336, "column": 60 } } @@ -30289,15 +30289,15 @@ "binop": null }, "value": "utils", - "start": 14285, - "end": 14290, + "start": 17859, + "end": 17864, "loc": { "start": { - "line": 263, + "line": 336, "column": 61 }, "end": { - "line": 263, + "line": 336, "column": 66 } } @@ -30315,15 +30315,15 @@ "binop": null, "updateContext": null }, - "start": 14290, - "end": 14291, + "start": 17864, + "end": 17865, "loc": { "start": { - "line": 263, + "line": 336, "column": 66 }, "end": { - "line": 263, + "line": 336, "column": 67 } } @@ -30341,15 +30341,15 @@ "binop": null }, "value": "apply", - "start": 14291, - "end": 14296, + "start": 17865, + "end": 17870, "loc": { "start": { - "line": 263, + "line": 336, "column": 67 }, "end": { - "line": 263, + "line": 336, "column": 72 } } @@ -30366,15 +30366,15 @@ "postfix": false, "binop": null }, - "start": 14296, - "end": 14297, + "start": 17870, + "end": 17871, "loc": { "start": { - "line": 263, + "line": 336, "column": 72 }, "end": { - "line": 263, + "line": 336, "column": 73 } } @@ -30392,15 +30392,15 @@ "binop": null }, "value": "params", - "start": 14297, - "end": 14303, + "start": 17871, + "end": 17877, "loc": { "start": { - "line": 263, + "line": 336, "column": 73 }, "end": { - "line": 263, + "line": 336, "column": 79 } } @@ -30418,15 +30418,15 @@ "binop": null, "updateContext": null }, - "start": 14303, - "end": 14304, + "start": 17877, + "end": 17878, "loc": { "start": { - "line": 263, + "line": 336, "column": 79 }, "end": { - "line": 263, + "line": 336, "column": 80 } } @@ -30443,15 +30443,15 @@ "postfix": false, "binop": null }, - "start": 14305, - "end": 14306, + "start": 17879, + "end": 17880, "loc": { "start": { - "line": 263, + "line": 336, "column": 81 }, "end": { - "line": 263, + "line": 336, "column": 82 } } @@ -30469,15 +30469,15 @@ "binop": null }, "value": "isModel", - "start": 14319, - "end": 14326, + "start": 17893, + "end": 17900, "loc": { "start": { - "line": 264, + "line": 337, "column": 12 }, "end": { - "line": 264, + "line": 337, "column": 19 } } @@ -30495,15 +30495,15 @@ "binop": null, "updateContext": null }, - "start": 14326, - "end": 14327, + "start": 17900, + "end": 17901, "loc": { "start": { - "line": 264, + "line": 337, "column": 19 }, "end": { - "line": 264, + "line": 337, "column": 20 } } @@ -30523,15 +30523,15 @@ "updateContext": null }, "value": "true", - "start": 14328, - "end": 14332, + "start": 17902, + "end": 17906, "loc": { "start": { - "line": 264, + "line": 337, "column": 21 }, "end": { - "line": 264, + "line": 337, "column": 25 } } @@ -30549,15 +30549,15 @@ "binop": null, "updateContext": null }, - "start": 14332, - "end": 14333, + "start": 17906, + "end": 17907, "loc": { "start": { - "line": 264, + "line": 337, "column": 25 }, "end": { - "line": 264, + "line": 337, "column": 26 } } @@ -30575,15 +30575,15 @@ "binop": null }, "value": "dtxEnabled", - "start": 14346, - "end": 14356, + "start": 17920, + "end": 17930, "loc": { "start": { - "line": 265, + "line": 338, "column": 12 }, "end": { - "line": 265, + "line": 338, "column": 22 } } @@ -30601,15 +30601,15 @@ "binop": null, "updateContext": null }, - "start": 14356, - "end": 14357, + "start": 17930, + "end": 17931, "loc": { "start": { - "line": 265, + "line": 338, "column": 22 }, "end": { - "line": 265, + "line": 338, "column": 23 } } @@ -30627,15 +30627,15 @@ "binop": null }, "value": "params", - "start": 14358, - "end": 14364, + "start": 17932, + "end": 17938, "loc": { "start": { - "line": 265, + "line": 338, "column": 24 }, "end": { - "line": 265, + "line": 338, "column": 30 } } @@ -30653,15 +30653,15 @@ "binop": null, "updateContext": null }, - "start": 14364, - "end": 14365, + "start": 17938, + "end": 17939, "loc": { "start": { - "line": 265, + "line": 338, "column": 30 }, "end": { - "line": 265, + "line": 338, "column": 31 } } @@ -30679,15 +30679,15 @@ "binop": null }, "value": "dtxEnabled", - "start": 14365, - "end": 14375, + "start": 17939, + "end": 17949, "loc": { "start": { - "line": 265, + "line": 338, "column": 31 }, "end": { - "line": 265, + "line": 338, "column": 41 } } @@ -30704,15 +30704,15 @@ "postfix": false, "binop": null }, - "start": 14384, - "end": 14385, + "start": 17958, + "end": 17959, "loc": { "start": { - "line": 266, + "line": 339, "column": 8 }, "end": { - "line": 266, + "line": 339, "column": 9 } } @@ -30729,15 +30729,15 @@ "postfix": false, "binop": null }, - "start": 14385, - "end": 14386, + "start": 17959, + "end": 17960, "loc": { "start": { - "line": 266, + "line": 339, "column": 9 }, "end": { - "line": 266, + "line": 339, "column": 10 } } @@ -30754,15 +30754,15 @@ "postfix": false, "binop": null }, - "start": 14386, - "end": 14387, + "start": 17960, + "end": 17961, "loc": { "start": { - "line": 266, + "line": 339, "column": 10 }, "end": { - "line": 266, + "line": 339, "column": 11 } } @@ -30780,15 +30780,15 @@ "binop": null, "updateContext": null }, - "start": 14387, - "end": 14388, + "start": 17961, + "end": 17962, "loc": { "start": { - "line": 266, + "line": 339, "column": 11 }, "end": { - "line": 266, + "line": 339, "column": 12 } } @@ -30808,15 +30808,15 @@ "updateContext": null }, "value": "const", - "start": 14398, - "end": 14403, + "start": 17972, + "end": 17977, "loc": { "start": { - "line": 268, + "line": 341, "column": 8 }, "end": { - "line": 268, + "line": 341, "column": 13 } } @@ -30834,15 +30834,15 @@ "binop": null }, "value": "modelId", - "start": 14404, - "end": 14411, + "start": 17978, + "end": 17985, "loc": { "start": { - "line": 268, + "line": 341, "column": 14 }, "end": { - "line": 268, + "line": 341, "column": 21 } } @@ -30861,15 +30861,15 @@ "updateContext": null }, "value": "=", - "start": 14412, - "end": 14413, + "start": 17986, + "end": 17987, "loc": { "start": { - "line": 268, + "line": 341, "column": 22 }, "end": { - "line": 268, + "line": 341, "column": 23 } } @@ -30887,15 +30887,15 @@ "binop": null }, "value": "sceneModel", - "start": 14414, - "end": 14424, + "start": 17988, + "end": 17998, "loc": { "start": { - "line": 268, + "line": 341, "column": 24 }, "end": { - "line": 268, + "line": 341, "column": 34 } } @@ -30913,15 +30913,15 @@ "binop": null, "updateContext": null }, - "start": 14424, - "end": 14425, + "start": 17998, + "end": 17999, "loc": { "start": { - "line": 268, + "line": 341, "column": 34 }, "end": { - "line": 268, + "line": 341, "column": 35 } } @@ -30939,15 +30939,15 @@ "binop": null }, "value": "id", - "start": 14425, - "end": 14427, + "start": 17999, + "end": 18001, "loc": { "start": { - "line": 268, + "line": 341, "column": 35 }, "end": { - "line": 268, + "line": 341, "column": 37 } } @@ -30965,15 +30965,15 @@ "binop": null, "updateContext": null }, - "start": 14427, - "end": 14428, + "start": 18001, + "end": 18002, "loc": { "start": { - "line": 268, + "line": 341, "column": 37 }, "end": { - "line": 268, + "line": 341, "column": 38 } } @@ -30981,15 +30981,15 @@ { "type": "CommentLine", "value": " In case ID was auto-generated", - "start": 14430, - "end": 14462, + "start": 18004, + "end": 18036, "loc": { "start": { - "line": 268, + "line": 341, "column": 40 }, "end": { - "line": 268, + "line": 341, "column": 72 } } @@ -31009,15 +31009,15 @@ "updateContext": null }, "value": "if", - "start": 14472, - "end": 14474, + "start": 18046, + "end": 18048, "loc": { "start": { - "line": 270, + "line": 343, "column": 8 }, "end": { - "line": 270, + "line": 343, "column": 10 } } @@ -31034,15 +31034,15 @@ "postfix": false, "binop": null }, - "start": 14475, - "end": 14476, + "start": 18049, + "end": 18050, "loc": { "start": { - "line": 270, + "line": 343, "column": 11 }, "end": { - "line": 270, + "line": 343, "column": 12 } } @@ -31061,15 +31061,15 @@ "updateContext": null }, "value": "!", - "start": 14476, - "end": 14477, + "start": 18050, + "end": 18051, "loc": { "start": { - "line": 270, + "line": 343, "column": 12 }, "end": { - "line": 270, + "line": 343, "column": 13 } } @@ -31087,15 +31087,15 @@ "binop": null }, "value": "params", - "start": 14477, - "end": 14483, + "start": 18051, + "end": 18057, "loc": { "start": { - "line": 270, + "line": 343, "column": 13 }, "end": { - "line": 270, + "line": 343, "column": 19 } } @@ -31113,15 +31113,15 @@ "binop": null, "updateContext": null }, - "start": 14483, - "end": 14484, + "start": 18057, + "end": 18058, "loc": { "start": { - "line": 270, + "line": 343, "column": 19 }, "end": { - "line": 270, + "line": 343, "column": 20 } } @@ -31139,15 +31139,15 @@ "binop": null }, "value": "src", - "start": 14484, - "end": 14487, + "start": 18058, + "end": 18061, "loc": { "start": { - "line": 270, + "line": 343, "column": 20 }, "end": { - "line": 270, + "line": 343, "column": 23 } } @@ -31166,15 +31166,15 @@ "updateContext": null }, "value": "&&", - "start": 14488, - "end": 14490, + "start": 18062, + "end": 18064, "loc": { "start": { - "line": 270, + "line": 343, "column": 24 }, "end": { - "line": 270, + "line": 343, "column": 26 } } @@ -31193,15 +31193,15 @@ "updateContext": null }, "value": "!", - "start": 14491, - "end": 14492, + "start": 18065, + "end": 18066, "loc": { "start": { - "line": 270, + "line": 343, "column": 27 }, "end": { - "line": 270, + "line": 343, "column": 28 } } @@ -31219,15 +31219,15 @@ "binop": null }, "value": "params", - "start": 14492, - "end": 14498, + "start": 18066, + "end": 18072, "loc": { "start": { - "line": 270, + "line": 343, "column": 28 }, "end": { - "line": 270, + "line": 343, "column": 34 } } @@ -31245,15 +31245,15 @@ "binop": null, "updateContext": null }, - "start": 14498, - "end": 14499, + "start": 18072, + "end": 18073, "loc": { "start": { - "line": 270, + "line": 343, "column": 34 }, "end": { - "line": 270, + "line": 343, "column": 35 } } @@ -31271,15 +31271,15 @@ "binop": null }, "value": "gltf", - "start": 14499, - "end": 14503, + "start": 18073, + "end": 18077, "loc": { "start": { - "line": 270, + "line": 343, "column": 35 }, "end": { - "line": 270, + "line": 343, "column": 39 } } @@ -31296,15 +31296,15 @@ "postfix": false, "binop": null }, - "start": 14503, - "end": 14504, + "start": 18077, + "end": 18078, "loc": { "start": { - "line": 270, + "line": 343, "column": 39 }, "end": { - "line": 270, + "line": 343, "column": 40 } } @@ -31321,15 +31321,15 @@ "postfix": false, "binop": null }, - "start": 14505, - "end": 14506, + "start": 18079, + "end": 18080, "loc": { "start": { - "line": 270, + "line": 343, "column": 41 }, "end": { - "line": 270, + "line": 343, "column": 42 } } @@ -31349,15 +31349,15 @@ "updateContext": null }, "value": "this", - "start": 14519, - "end": 14523, + "start": 18093, + "end": 18097, "loc": { "start": { - "line": 271, + "line": 344, "column": 12 }, "end": { - "line": 271, + "line": 344, "column": 16 } } @@ -31375,15 +31375,15 @@ "binop": null, "updateContext": null }, - "start": 14523, - "end": 14524, + "start": 18097, + "end": 18098, "loc": { "start": { - "line": 271, + "line": 344, "column": 16 }, "end": { - "line": 271, + "line": 344, "column": 17 } } @@ -31401,15 +31401,15 @@ "binop": null }, "value": "error", - "start": 14524, - "end": 14529, + "start": 18098, + "end": 18103, "loc": { "start": { - "line": 271, + "line": 344, "column": 17 }, "end": { - "line": 271, + "line": 344, "column": 22 } } @@ -31426,15 +31426,15 @@ "postfix": false, "binop": null }, - "start": 14529, - "end": 14530, + "start": 18103, + "end": 18104, "loc": { "start": { - "line": 271, + "line": 344, "column": 22 }, "end": { - "line": 271, + "line": 344, "column": 23 } } @@ -31453,15 +31453,15 @@ "updateContext": null }, "value": "load() param expected: src or gltf", - "start": 14530, - "end": 14566, + "start": 18104, + "end": 18140, "loc": { "start": { - "line": 271, + "line": 344, "column": 23 }, "end": { - "line": 271, + "line": 344, "column": 59 } } @@ -31478,15 +31478,15 @@ "postfix": false, "binop": null }, - "start": 14566, - "end": 14567, + "start": 18140, + "end": 18141, "loc": { "start": { - "line": 271, + "line": 344, "column": 59 }, "end": { - "line": 271, + "line": 344, "column": 60 } } @@ -31504,15 +31504,15 @@ "binop": null, "updateContext": null }, - "start": 14567, - "end": 14568, + "start": 18141, + "end": 18142, "loc": { "start": { - "line": 271, + "line": 344, "column": 60 }, "end": { - "line": 271, + "line": 344, "column": 61 } } @@ -31532,15 +31532,15 @@ "updateContext": null }, "value": "return", - "start": 14581, - "end": 14587, + "start": 18155, + "end": 18161, "loc": { "start": { - "line": 272, + "line": 345, "column": 12 }, "end": { - "line": 272, + "line": 345, "column": 18 } } @@ -31558,15 +31558,15 @@ "binop": null }, "value": "sceneModel", - "start": 14588, - "end": 14598, + "start": 18162, + "end": 18172, "loc": { "start": { - "line": 272, + "line": 345, "column": 19 }, "end": { - "line": 272, + "line": 345, "column": 29 } } @@ -31584,15 +31584,15 @@ "binop": null, "updateContext": null }, - "start": 14598, - "end": 14599, + "start": 18172, + "end": 18173, "loc": { "start": { - "line": 272, + "line": 345, "column": 29 }, "end": { - "line": 272, + "line": 345, "column": 30 } } @@ -31600,15 +31600,15 @@ { "type": "CommentLine", "value": " Return new empty model", - "start": 14600, - "end": 14625, + "start": 18174, + "end": 18199, "loc": { "start": { - "line": 272, + "line": 345, "column": 31 }, "end": { - "line": 272, + "line": 345, "column": 56 } } @@ -31625,15 +31625,15 @@ "postfix": false, "binop": null }, - "start": 14634, - "end": 14635, + "start": 18208, + "end": 18209, "loc": { "start": { - "line": 273, + "line": 346, "column": 8 }, "end": { - "line": 273, + "line": 346, "column": 9 } } @@ -31653,15 +31653,15 @@ "updateContext": null }, "value": "if", - "start": 14645, - "end": 14647, + "start": 18219, + "end": 18221, "loc": { "start": { - "line": 275, + "line": 348, "column": 8 }, "end": { - "line": 275, + "line": 348, "column": 10 } } @@ -31678,15 +31678,15 @@ "postfix": false, "binop": null }, - "start": 14648, - "end": 14649, + "start": 18222, + "end": 18223, "loc": { "start": { - "line": 275, + "line": 348, "column": 11 }, "end": { - "line": 275, + "line": 348, "column": 12 } } @@ -31704,15 +31704,15 @@ "binop": null }, "value": "params", - "start": 14649, - "end": 14655, + "start": 18223, + "end": 18229, "loc": { "start": { - "line": 275, + "line": 348, "column": 12 }, "end": { - "line": 275, + "line": 348, "column": 18 } } @@ -31730,15 +31730,15 @@ "binop": null, "updateContext": null }, - "start": 14655, - "end": 14656, + "start": 18229, + "end": 18230, "loc": { "start": { - "line": 275, + "line": 348, "column": 18 }, "end": { - "line": 275, + "line": 348, "column": 19 } } @@ -31756,15 +31756,15 @@ "binop": null }, "value": "metaModelSrc", - "start": 14656, - "end": 14668, + "start": 18230, + "end": 18242, "loc": { "start": { - "line": 275, + "line": 348, "column": 19 }, "end": { - "line": 275, + "line": 348, "column": 31 } } @@ -31783,15 +31783,15 @@ "updateContext": null }, "value": "||", - "start": 14669, - "end": 14671, + "start": 18243, + "end": 18245, "loc": { "start": { - "line": 275, + "line": 348, "column": 32 }, "end": { - "line": 275, + "line": 348, "column": 34 } } @@ -31809,15 +31809,15 @@ "binop": null }, "value": "params", - "start": 14672, - "end": 14678, + "start": 18246, + "end": 18252, "loc": { "start": { - "line": 275, + "line": 348, "column": 35 }, "end": { - "line": 275, + "line": 348, "column": 41 } } @@ -31835,15 +31835,15 @@ "binop": null, "updateContext": null }, - "start": 14678, - "end": 14679, + "start": 18252, + "end": 18253, "loc": { "start": { - "line": 275, + "line": 348, "column": 41 }, "end": { - "line": 275, + "line": 348, "column": 42 } } @@ -31861,15 +31861,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 14679, - "end": 14692, + "start": 18253, + "end": 18266, "loc": { "start": { - "line": 275, + "line": 348, "column": 42 }, "end": { - "line": 275, + "line": 348, "column": 55 } } @@ -31886,15 +31886,15 @@ "postfix": false, "binop": null }, - "start": 14692, - "end": 14693, + "start": 18266, + "end": 18267, "loc": { "start": { - "line": 275, + "line": 348, "column": 55 }, "end": { - "line": 275, + "line": 348, "column": 56 } } @@ -31911,15 +31911,15 @@ "postfix": false, "binop": null }, - "start": 14694, - "end": 14695, + "start": 18268, + "end": 18269, "loc": { "start": { - "line": 275, + "line": 348, "column": 57 }, "end": { - "line": 275, + "line": 348, "column": 58 } } @@ -31939,15 +31939,15 @@ "updateContext": null }, "value": "const", - "start": 14709, - "end": 14714, + "start": 18283, + "end": 18288, "loc": { "start": { - "line": 277, + "line": 350, "column": 12 }, "end": { - "line": 277, + "line": 350, "column": 17 } } @@ -31965,15 +31965,15 @@ "binop": null }, "value": "objectDefaults", - "start": 14715, - "end": 14729, + "start": 18289, + "end": 18303, "loc": { "start": { - "line": 277, + "line": 350, "column": 18 }, "end": { - "line": 277, + "line": 350, "column": 32 } } @@ -31992,15 +31992,15 @@ "updateContext": null }, "value": "=", - "start": 14730, - "end": 14731, + "start": 18304, + "end": 18305, "loc": { "start": { - "line": 277, + "line": 350, "column": 33 }, "end": { - "line": 277, + "line": 350, "column": 34 } } @@ -32018,15 +32018,15 @@ "binop": null }, "value": "params", - "start": 14732, - "end": 14738, + "start": 18306, + "end": 18312, "loc": { "start": { - "line": 277, + "line": 350, "column": 35 }, "end": { - "line": 277, + "line": 350, "column": 41 } } @@ -32044,15 +32044,15 @@ "binop": null, "updateContext": null }, - "start": 14738, - "end": 14739, + "start": 18312, + "end": 18313, "loc": { "start": { - "line": 277, + "line": 350, "column": 41 }, "end": { - "line": 277, + "line": 350, "column": 42 } } @@ -32070,15 +32070,15 @@ "binop": null }, "value": "objectDefaults", - "start": 14739, - "end": 14753, + "start": 18313, + "end": 18327, "loc": { "start": { - "line": 277, + "line": 350, "column": 42 }, "end": { - "line": 277, + "line": 350, "column": 56 } } @@ -32097,15 +32097,15 @@ "updateContext": null }, "value": "||", - "start": 14754, - "end": 14756, + "start": 18328, + "end": 18330, "loc": { "start": { - "line": 277, + "line": 350, "column": 57 }, "end": { - "line": 277, + "line": 350, "column": 59 } } @@ -32125,15 +32125,15 @@ "updateContext": null }, "value": "this", - "start": 14757, - "end": 14761, + "start": 18331, + "end": 18335, "loc": { "start": { - "line": 277, + "line": 350, "column": 60 }, "end": { - "line": 277, + "line": 350, "column": 64 } } @@ -32151,15 +32151,15 @@ "binop": null, "updateContext": null }, - "start": 14761, - "end": 14762, + "start": 18335, + "end": 18336, "loc": { "start": { - "line": 277, + "line": 350, "column": 64 }, "end": { - "line": 277, + "line": 350, "column": 65 } } @@ -32177,15 +32177,15 @@ "binop": null }, "value": "_objectDefaults", - "start": 14762, - "end": 14777, + "start": 18336, + "end": 18351, "loc": { "start": { - "line": 277, + "line": 350, "column": 65 }, "end": { - "line": 277, + "line": 350, "column": 80 } } @@ -32204,15 +32204,15 @@ "updateContext": null }, "value": "||", - "start": 14778, - "end": 14780, + "start": 18352, + "end": 18354, "loc": { "start": { - "line": 277, + "line": 350, "column": 81 }, "end": { - "line": 277, + "line": 350, "column": 83 } } @@ -32230,15 +32230,15 @@ "binop": null }, "value": "IFCObjectDefaults", - "start": 14781, - "end": 14798, + "start": 18355, + "end": 18372, "loc": { "start": { - "line": 277, + "line": 350, "column": 84 }, "end": { - "line": 277, + "line": 350, "column": 101 } } @@ -32256,15 +32256,15 @@ "binop": null, "updateContext": null }, - "start": 14798, - "end": 14799, + "start": 18372, + "end": 18373, "loc": { "start": { - "line": 277, + "line": 350, "column": 101 }, "end": { - "line": 277, + "line": 350, "column": 102 } } @@ -32284,15 +32284,15 @@ "updateContext": null }, "value": "const", - "start": 14813, - "end": 14818, + "start": 18387, + "end": 18392, "loc": { "start": { - "line": 279, + "line": 352, "column": 12 }, "end": { - "line": 279, + "line": 352, "column": 17 } } @@ -32310,15 +32310,15 @@ "binop": null }, "value": "processMetaModelJSON", - "start": 14819, - "end": 14839, + "start": 18393, + "end": 18413, "loc": { "start": { - "line": 279, + "line": 352, "column": 18 }, "end": { - "line": 279, + "line": 352, "column": 38 } } @@ -32337,15 +32337,15 @@ "updateContext": null }, "value": "=", - "start": 14840, - "end": 14841, + "start": 18414, + "end": 18415, "loc": { "start": { - "line": 279, + "line": 352, "column": 39 }, "end": { - "line": 279, + "line": 352, "column": 40 } } @@ -32362,15 +32362,15 @@ "postfix": false, "binop": null }, - "start": 14842, - "end": 14843, + "start": 18416, + "end": 18417, "loc": { "start": { - "line": 279, + "line": 352, "column": 41 }, "end": { - "line": 279, + "line": 352, "column": 42 } } @@ -32388,15 +32388,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 14843, - "end": 14856, + "start": 18417, + "end": 18430, "loc": { "start": { - "line": 279, + "line": 352, "column": 42 }, "end": { - "line": 279, + "line": 352, "column": 55 } } @@ -32413,15 +32413,15 @@ "postfix": false, "binop": null }, - "start": 14856, - "end": 14857, + "start": 18430, + "end": 18431, "loc": { "start": { - "line": 279, + "line": 352, "column": 55 }, "end": { - "line": 279, + "line": 352, "column": 56 } } @@ -32439,15 +32439,15 @@ "binop": null, "updateContext": null }, - "start": 14858, - "end": 14860, + "start": 18432, + "end": 18434, "loc": { "start": { - "line": 279, + "line": 352, "column": 57 }, "end": { - "line": 279, + "line": 352, "column": 59 } } @@ -32464,15 +32464,15 @@ "postfix": false, "binop": null }, - "start": 14861, - "end": 14862, + "start": 18435, + "end": 18436, "loc": { "start": { - "line": 279, + "line": 352, "column": 60 }, "end": { - "line": 279, + "line": 352, "column": 61 } } @@ -32492,15 +32492,15 @@ "updateContext": null }, "value": "this", - "start": 14880, - "end": 14884, + "start": 18454, + "end": 18458, "loc": { "start": { - "line": 281, + "line": 354, "column": 16 }, "end": { - "line": 281, + "line": 354, "column": 20 } } @@ -32518,15 +32518,15 @@ "binop": null, "updateContext": null }, - "start": 14884, - "end": 14885, + "start": 18458, + "end": 18459, "loc": { "start": { - "line": 281, + "line": 354, "column": 20 }, "end": { - "line": 281, + "line": 354, "column": 21 } } @@ -32544,15 +32544,15 @@ "binop": null }, "value": "viewer", - "start": 14885, - "end": 14891, + "start": 18459, + "end": 18465, "loc": { "start": { - "line": 281, + "line": 354, "column": 21 }, "end": { - "line": 281, + "line": 354, "column": 27 } } @@ -32570,15 +32570,15 @@ "binop": null, "updateContext": null }, - "start": 14891, - "end": 14892, + "start": 18465, + "end": 18466, "loc": { "start": { - "line": 281, + "line": 354, "column": 27 }, "end": { - "line": 281, + "line": 354, "column": 28 } } @@ -32596,15 +32596,15 @@ "binop": null }, "value": "metaScene", - "start": 14892, - "end": 14901, + "start": 18466, + "end": 18475, "loc": { "start": { - "line": 281, + "line": 354, "column": 28 }, "end": { - "line": 281, + "line": 354, "column": 37 } } @@ -32622,15 +32622,15 @@ "binop": null, "updateContext": null }, - "start": 14901, - "end": 14902, + "start": 18475, + "end": 18476, "loc": { "start": { - "line": 281, + "line": 354, "column": 37 }, "end": { - "line": 281, + "line": 354, "column": 38 } } @@ -32648,15 +32648,15 @@ "binop": null }, "value": "createMetaModel", - "start": 14902, - "end": 14917, + "start": 18476, + "end": 18491, "loc": { "start": { - "line": 281, + "line": 354, "column": 38 }, "end": { - "line": 281, + "line": 354, "column": 53 } } @@ -32673,15 +32673,15 @@ "postfix": false, "binop": null }, - "start": 14917, - "end": 14918, + "start": 18491, + "end": 18492, "loc": { "start": { - "line": 281, + "line": 354, "column": 53 }, "end": { - "line": 281, + "line": 354, "column": 54 } } @@ -32699,15 +32699,15 @@ "binop": null }, "value": "modelId", - "start": 14918, - "end": 14925, + "start": 18492, + "end": 18499, "loc": { "start": { - "line": 281, + "line": 354, "column": 54 }, "end": { - "line": 281, + "line": 354, "column": 61 } } @@ -32725,15 +32725,15 @@ "binop": null, "updateContext": null }, - "start": 14925, - "end": 14926, + "start": 18499, + "end": 18500, "loc": { "start": { - "line": 281, + "line": 354, "column": 61 }, "end": { - "line": 281, + "line": 354, "column": 62 } } @@ -32751,15 +32751,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 14927, - "end": 14940, + "start": 18501, + "end": 18514, "loc": { "start": { - "line": 281, + "line": 354, "column": 63 }, "end": { - "line": 281, + "line": 354, "column": 76 } } @@ -32777,15 +32777,15 @@ "binop": null, "updateContext": null }, - "start": 14940, - "end": 14941, + "start": 18514, + "end": 18515, "loc": { "start": { - "line": 281, + "line": 354, "column": 76 }, "end": { - "line": 281, + "line": 354, "column": 77 } } @@ -32802,15 +32802,15 @@ "postfix": false, "binop": null }, - "start": 14942, - "end": 14943, + "start": 18516, + "end": 18517, "loc": { "start": { - "line": 281, + "line": 354, "column": 78 }, "end": { - "line": 281, + "line": 354, "column": 79 } } @@ -32828,15 +32828,15 @@ "binop": null }, "value": "includeTypes", - "start": 14964, - "end": 14976, + "start": 18538, + "end": 18550, "loc": { "start": { - "line": 282, + "line": 355, "column": 20 }, "end": { - "line": 282, + "line": 355, "column": 32 } } @@ -32854,15 +32854,15 @@ "binop": null, "updateContext": null }, - "start": 14976, - "end": 14977, + "start": 18550, + "end": 18551, "loc": { "start": { - "line": 282, + "line": 355, "column": 32 }, "end": { - "line": 282, + "line": 355, "column": 33 } } @@ -32880,15 +32880,15 @@ "binop": null }, "value": "params", - "start": 14978, - "end": 14984, + "start": 18552, + "end": 18558, "loc": { "start": { - "line": 282, + "line": 355, "column": 34 }, "end": { - "line": 282, + "line": 355, "column": 40 } } @@ -32906,15 +32906,15 @@ "binop": null, "updateContext": null }, - "start": 14984, - "end": 14985, + "start": 18558, + "end": 18559, "loc": { "start": { - "line": 282, + "line": 355, "column": 40 }, "end": { - "line": 282, + "line": 355, "column": 41 } } @@ -32932,15 +32932,15 @@ "binop": null }, "value": "includeTypes", - "start": 14985, - "end": 14997, + "start": 18559, + "end": 18571, "loc": { "start": { - "line": 282, + "line": 355, "column": 41 }, "end": { - "line": 282, + "line": 355, "column": 53 } } @@ -32958,15 +32958,15 @@ "binop": null, "updateContext": null }, - "start": 14997, - "end": 14998, + "start": 18571, + "end": 18572, "loc": { "start": { - "line": 282, + "line": 355, "column": 53 }, "end": { - "line": 282, + "line": 355, "column": 54 } } @@ -32984,15 +32984,15 @@ "binop": null }, "value": "excludeTypes", - "start": 15019, - "end": 15031, + "start": 18593, + "end": 18605, "loc": { "start": { - "line": 283, + "line": 356, "column": 20 }, "end": { - "line": 283, + "line": 356, "column": 32 } } @@ -33010,15 +33010,15 @@ "binop": null, "updateContext": null }, - "start": 15031, - "end": 15032, + "start": 18605, + "end": 18606, "loc": { "start": { - "line": 283, + "line": 356, "column": 32 }, "end": { - "line": 283, + "line": 356, "column": 33 } } @@ -33036,15 +33036,15 @@ "binop": null }, "value": "params", - "start": 15033, - "end": 15039, + "start": 18607, + "end": 18613, "loc": { "start": { - "line": 283, + "line": 356, "column": 34 }, "end": { - "line": 283, + "line": 356, "column": 40 } } @@ -33062,15 +33062,15 @@ "binop": null, "updateContext": null }, - "start": 15039, - "end": 15040, + "start": 18613, + "end": 18614, "loc": { "start": { - "line": 283, + "line": 356, "column": 40 }, "end": { - "line": 283, + "line": 356, "column": 41 } } @@ -33088,15 +33088,15 @@ "binop": null }, "value": "excludeTypes", - "start": 15040, - "end": 15052, + "start": 18614, + "end": 18626, "loc": { "start": { - "line": 283, + "line": 356, "column": 41 }, "end": { - "line": 283, + "line": 356, "column": 53 } } @@ -33113,15 +33113,15 @@ "postfix": false, "binop": null }, - "start": 15069, - "end": 15070, + "start": 18643, + "end": 18644, "loc": { "start": { - "line": 284, + "line": 357, "column": 16 }, "end": { - "line": 284, + "line": 357, "column": 17 } } @@ -33138,15 +33138,15 @@ "postfix": false, "binop": null }, - "start": 15070, - "end": 15071, + "start": 18644, + "end": 18645, "loc": { "start": { - "line": 284, + "line": 357, "column": 17 }, "end": { - "line": 284, + "line": 357, "column": 18 } } @@ -33164,15 +33164,15 @@ "binop": null, "updateContext": null }, - "start": 15071, - "end": 15072, + "start": 18645, + "end": 18646, "loc": { "start": { - "line": 284, + "line": 357, "column": 18 }, "end": { - "line": 284, + "line": 357, "column": 19 } } @@ -33192,15 +33192,15 @@ "updateContext": null }, "value": "this", - "start": 15090, - "end": 15094, + "start": 18664, + "end": 18668, "loc": { "start": { - "line": 286, + "line": 359, "column": 16 }, "end": { - "line": 286, + "line": 359, "column": 20 } } @@ -33218,15 +33218,15 @@ "binop": null, "updateContext": null }, - "start": 15094, - "end": 15095, + "start": 18668, + "end": 18669, "loc": { "start": { - "line": 286, + "line": 359, "column": 20 }, "end": { - "line": 286, + "line": 359, "column": 21 } } @@ -33244,15 +33244,15 @@ "binop": null }, "value": "viewer", - "start": 15095, - "end": 15101, + "start": 18669, + "end": 18675, "loc": { "start": { - "line": 286, + "line": 359, "column": 21 }, "end": { - "line": 286, + "line": 359, "column": 27 } } @@ -33270,15 +33270,15 @@ "binop": null, "updateContext": null }, - "start": 15101, - "end": 15102, + "start": 18675, + "end": 18676, "loc": { "start": { - "line": 286, + "line": 359, "column": 27 }, "end": { - "line": 286, + "line": 359, "column": 28 } } @@ -33296,15 +33296,15 @@ "binop": null }, "value": "scene", - "start": 15102, - "end": 15107, + "start": 18676, + "end": 18681, "loc": { "start": { - "line": 286, + "line": 359, "column": 28 }, "end": { - "line": 286, + "line": 359, "column": 33 } } @@ -33322,15 +33322,15 @@ "binop": null, "updateContext": null }, - "start": 15107, - "end": 15108, + "start": 18681, + "end": 18682, "loc": { "start": { - "line": 286, + "line": 359, "column": 33 }, "end": { - "line": 286, + "line": 359, "column": 34 } } @@ -33348,15 +33348,15 @@ "binop": null }, "value": "canvas", - "start": 15108, - "end": 15114, + "start": 18682, + "end": 18688, "loc": { "start": { - "line": 286, + "line": 359, "column": 34 }, "end": { - "line": 286, + "line": 359, "column": 40 } } @@ -33374,15 +33374,15 @@ "binop": null, "updateContext": null }, - "start": 15114, - "end": 15115, + "start": 18688, + "end": 18689, "loc": { "start": { - "line": 286, + "line": 359, "column": 40 }, "end": { - "line": 286, + "line": 359, "column": 41 } } @@ -33400,15 +33400,15 @@ "binop": null }, "value": "spinner", - "start": 15115, - "end": 15122, + "start": 18689, + "end": 18696, "loc": { "start": { - "line": 286, + "line": 359, "column": 41 }, "end": { - "line": 286, + "line": 359, "column": 48 } } @@ -33426,15 +33426,15 @@ "binop": null, "updateContext": null }, - "start": 15122, - "end": 15123, + "start": 18696, + "end": 18697, "loc": { "start": { - "line": 286, + "line": 359, "column": 48 }, "end": { - "line": 286, + "line": 359, "column": 49 } } @@ -33452,15 +33452,15 @@ "binop": null }, "value": "processes", - "start": 15123, - "end": 15132, + "start": 18697, + "end": 18706, "loc": { "start": { - "line": 286, + "line": 359, "column": 49 }, "end": { - "line": 286, + "line": 359, "column": 58 } } @@ -33478,15 +33478,15 @@ "binop": null }, "value": "--", - "start": 15132, - "end": 15134, + "start": 18706, + "end": 18708, "loc": { "start": { - "line": 286, + "line": 359, "column": 58 }, "end": { - "line": 286, + "line": 359, "column": 60 } } @@ -33504,15 +33504,15 @@ "binop": null, "updateContext": null }, - "start": 15134, - "end": 15135, + "start": 18708, + "end": 18709, "loc": { "start": { - "line": 286, + "line": 359, "column": 60 }, "end": { - "line": 286, + "line": 359, "column": 61 } } @@ -33532,15 +33532,15 @@ "updateContext": null }, "value": "let", - "start": 15153, - "end": 15156, + "start": 18727, + "end": 18730, "loc": { "start": { - "line": 288, + "line": 361, "column": 16 }, "end": { - "line": 288, + "line": 361, "column": 19 } } @@ -33558,15 +33558,15 @@ "binop": null }, "value": "includeTypes", - "start": 15157, - "end": 15169, + "start": 18731, + "end": 18743, "loc": { "start": { - "line": 288, + "line": 361, "column": 20 }, "end": { - "line": 288, + "line": 361, "column": 32 } } @@ -33584,15 +33584,15 @@ "binop": null, "updateContext": null }, - "start": 15169, - "end": 15170, + "start": 18743, + "end": 18744, "loc": { "start": { - "line": 288, + "line": 361, "column": 32 }, "end": { - "line": 288, + "line": 361, "column": 33 } } @@ -33612,15 +33612,15 @@ "updateContext": null }, "value": "if", - "start": 15187, - "end": 15189, + "start": 18761, + "end": 18763, "loc": { "start": { - "line": 289, + "line": 362, "column": 16 }, "end": { - "line": 289, + "line": 362, "column": 18 } } @@ -33637,15 +33637,15 @@ "postfix": false, "binop": null }, - "start": 15190, - "end": 15191, + "start": 18764, + "end": 18765, "loc": { "start": { - "line": 289, + "line": 362, "column": 19 }, "end": { - "line": 289, + "line": 362, "column": 20 } } @@ -33663,15 +33663,15 @@ "binop": null }, "value": "params", - "start": 15191, - "end": 15197, + "start": 18765, + "end": 18771, "loc": { "start": { - "line": 289, + "line": 362, "column": 20 }, "end": { - "line": 289, + "line": 362, "column": 26 } } @@ -33689,15 +33689,15 @@ "binop": null, "updateContext": null }, - "start": 15197, - "end": 15198, + "start": 18771, + "end": 18772, "loc": { "start": { - "line": 289, + "line": 362, "column": 26 }, "end": { - "line": 289, + "line": 362, "column": 27 } } @@ -33715,15 +33715,15 @@ "binop": null }, "value": "includeTypes", - "start": 15198, - "end": 15210, + "start": 18772, + "end": 18784, "loc": { "start": { - "line": 289, + "line": 362, "column": 27 }, "end": { - "line": 289, + "line": 362, "column": 39 } } @@ -33740,15 +33740,15 @@ "postfix": false, "binop": null }, - "start": 15210, - "end": 15211, + "start": 18784, + "end": 18785, "loc": { "start": { - "line": 289, + "line": 362, "column": 39 }, "end": { - "line": 289, + "line": 362, "column": 40 } } @@ -33765,15 +33765,15 @@ "postfix": false, "binop": null }, - "start": 15212, - "end": 15213, + "start": 18786, + "end": 18787, "loc": { "start": { - "line": 289, + "line": 362, "column": 41 }, "end": { - "line": 289, + "line": 362, "column": 42 } } @@ -33791,15 +33791,15 @@ "binop": null }, "value": "includeTypes", - "start": 15234, - "end": 15246, + "start": 18808, + "end": 18820, "loc": { "start": { - "line": 290, + "line": 363, "column": 20 }, "end": { - "line": 290, + "line": 363, "column": 32 } } @@ -33818,15 +33818,15 @@ "updateContext": null }, "value": "=", - "start": 15247, - "end": 15248, + "start": 18821, + "end": 18822, "loc": { "start": { - "line": 290, + "line": 363, "column": 33 }, "end": { - "line": 290, + "line": 363, "column": 34 } } @@ -33843,15 +33843,15 @@ "postfix": false, "binop": null }, - "start": 15249, - "end": 15250, + "start": 18823, + "end": 18824, "loc": { "start": { - "line": 290, + "line": 363, "column": 35 }, "end": { - "line": 290, + "line": 363, "column": 36 } } @@ -33868,15 +33868,15 @@ "postfix": false, "binop": null }, - "start": 15250, - "end": 15251, + "start": 18824, + "end": 18825, "loc": { "start": { - "line": 290, + "line": 363, "column": 36 }, "end": { - "line": 290, + "line": 363, "column": 37 } } @@ -33894,15 +33894,15 @@ "binop": null, "updateContext": null }, - "start": 15251, - "end": 15252, + "start": 18825, + "end": 18826, "loc": { "start": { - "line": 290, + "line": 363, "column": 37 }, "end": { - "line": 290, + "line": 363, "column": 38 } } @@ -33922,15 +33922,15 @@ "updateContext": null }, "value": "for", - "start": 15273, - "end": 15276, + "start": 18847, + "end": 18850, "loc": { "start": { - "line": 291, + "line": 364, "column": 20 }, "end": { - "line": 291, + "line": 364, "column": 23 } } @@ -33947,15 +33947,15 @@ "postfix": false, "binop": null }, - "start": 15277, - "end": 15278, + "start": 18851, + "end": 18852, "loc": { "start": { - "line": 291, + "line": 364, "column": 24 }, "end": { - "line": 291, + "line": 364, "column": 25 } } @@ -33975,15 +33975,15 @@ "updateContext": null }, "value": "let", - "start": 15278, - "end": 15281, + "start": 18852, + "end": 18855, "loc": { "start": { - "line": 291, + "line": 364, "column": 25 }, "end": { - "line": 291, + "line": 364, "column": 28 } } @@ -34001,15 +34001,15 @@ "binop": null }, "value": "i", - "start": 15282, - "end": 15283, + "start": 18856, + "end": 18857, "loc": { "start": { - "line": 291, + "line": 364, "column": 29 }, "end": { - "line": 291, + "line": 364, "column": 30 } } @@ -34028,15 +34028,15 @@ "updateContext": null }, "value": "=", - "start": 15284, - "end": 15285, + "start": 18858, + "end": 18859, "loc": { "start": { - "line": 291, + "line": 364, "column": 31 }, "end": { - "line": 291, + "line": 364, "column": 32 } } @@ -34055,15 +34055,15 @@ "updateContext": null }, "value": 0, - "start": 15286, - "end": 15287, + "start": 18860, + "end": 18861, "loc": { "start": { - "line": 291, + "line": 364, "column": 33 }, "end": { - "line": 291, + "line": 364, "column": 34 } } @@ -34081,15 +34081,15 @@ "binop": null, "updateContext": null }, - "start": 15287, - "end": 15288, + "start": 18861, + "end": 18862, "loc": { "start": { - "line": 291, + "line": 364, "column": 34 }, "end": { - "line": 291, + "line": 364, "column": 35 } } @@ -34107,15 +34107,15 @@ "binop": null }, "value": "len", - "start": 15289, - "end": 15292, + "start": 18863, + "end": 18866, "loc": { "start": { - "line": 291, + "line": 364, "column": 36 }, "end": { - "line": 291, + "line": 364, "column": 39 } } @@ -34134,15 +34134,15 @@ "updateContext": null }, "value": "=", - "start": 15293, - "end": 15294, + "start": 18867, + "end": 18868, "loc": { "start": { - "line": 291, + "line": 364, "column": 40 }, "end": { - "line": 291, + "line": 364, "column": 41 } } @@ -34160,15 +34160,15 @@ "binop": null }, "value": "params", - "start": 15295, - "end": 15301, + "start": 18869, + "end": 18875, "loc": { "start": { - "line": 291, + "line": 364, "column": 42 }, "end": { - "line": 291, + "line": 364, "column": 48 } } @@ -34186,15 +34186,15 @@ "binop": null, "updateContext": null }, - "start": 15301, - "end": 15302, + "start": 18875, + "end": 18876, "loc": { "start": { - "line": 291, + "line": 364, "column": 48 }, "end": { - "line": 291, + "line": 364, "column": 49 } } @@ -34212,15 +34212,15 @@ "binop": null }, "value": "includeTypes", - "start": 15302, - "end": 15314, + "start": 18876, + "end": 18888, "loc": { "start": { - "line": 291, + "line": 364, "column": 49 }, "end": { - "line": 291, + "line": 364, "column": 61 } } @@ -34238,15 +34238,15 @@ "binop": null, "updateContext": null }, - "start": 15314, - "end": 15315, + "start": 18888, + "end": 18889, "loc": { "start": { - "line": 291, + "line": 364, "column": 61 }, "end": { - "line": 291, + "line": 364, "column": 62 } } @@ -34264,15 +34264,15 @@ "binop": null }, "value": "length", - "start": 15315, - "end": 15321, + "start": 18889, + "end": 18895, "loc": { "start": { - "line": 291, + "line": 364, "column": 62 }, "end": { - "line": 291, + "line": 364, "column": 68 } } @@ -34290,15 +34290,15 @@ "binop": null, "updateContext": null }, - "start": 15321, - "end": 15322, + "start": 18895, + "end": 18896, "loc": { "start": { - "line": 291, + "line": 364, "column": 68 }, "end": { - "line": 291, + "line": 364, "column": 69 } } @@ -34316,15 +34316,15 @@ "binop": null }, "value": "i", - "start": 15323, - "end": 15324, + "start": 18897, + "end": 18898, "loc": { "start": { - "line": 291, + "line": 364, "column": 70 }, "end": { - "line": 291, + "line": 364, "column": 71 } } @@ -34343,15 +34343,15 @@ "updateContext": null }, "value": "<", - "start": 15325, - "end": 15326, + "start": 18899, + "end": 18900, "loc": { "start": { - "line": 291, + "line": 364, "column": 72 }, "end": { - "line": 291, + "line": 364, "column": 73 } } @@ -34369,15 +34369,15 @@ "binop": null }, "value": "len", - "start": 15327, - "end": 15330, + "start": 18901, + "end": 18904, "loc": { "start": { - "line": 291, + "line": 364, "column": 74 }, "end": { - "line": 291, + "line": 364, "column": 77 } } @@ -34395,15 +34395,15 @@ "binop": null, "updateContext": null }, - "start": 15330, - "end": 15331, + "start": 18904, + "end": 18905, "loc": { "start": { - "line": 291, + "line": 364, "column": 77 }, "end": { - "line": 291, + "line": 364, "column": 78 } } @@ -34421,15 +34421,15 @@ "binop": null }, "value": "i", - "start": 15332, - "end": 15333, + "start": 18906, + "end": 18907, "loc": { "start": { - "line": 291, + "line": 364, "column": 79 }, "end": { - "line": 291, + "line": 364, "column": 80 } } @@ -34447,15 +34447,15 @@ "binop": null }, "value": "++", - "start": 15333, - "end": 15335, + "start": 18907, + "end": 18909, "loc": { "start": { - "line": 291, + "line": 364, "column": 80 }, "end": { - "line": 291, + "line": 364, "column": 82 } } @@ -34472,15 +34472,15 @@ "postfix": false, "binop": null }, - "start": 15335, - "end": 15336, + "start": 18909, + "end": 18910, "loc": { "start": { - "line": 291, + "line": 364, "column": 82 }, "end": { - "line": 291, + "line": 364, "column": 83 } } @@ -34497,15 +34497,15 @@ "postfix": false, "binop": null }, - "start": 15337, - "end": 15338, + "start": 18911, + "end": 18912, "loc": { "start": { - "line": 291, + "line": 364, "column": 84 }, "end": { - "line": 291, + "line": 364, "column": 85 } } @@ -34523,15 +34523,15 @@ "binop": null }, "value": "includeTypes", - "start": 15363, - "end": 15375, + "start": 18937, + "end": 18949, "loc": { "start": { - "line": 292, + "line": 365, "column": 24 }, "end": { - "line": 292, + "line": 365, "column": 36 } } @@ -34549,15 +34549,15 @@ "binop": null, "updateContext": null }, - "start": 15375, - "end": 15376, + "start": 18949, + "end": 18950, "loc": { "start": { - "line": 292, + "line": 365, "column": 36 }, "end": { - "line": 292, + "line": 365, "column": 37 } } @@ -34575,15 +34575,15 @@ "binop": null }, "value": "params", - "start": 15376, - "end": 15382, + "start": 18950, + "end": 18956, "loc": { "start": { - "line": 292, + "line": 365, "column": 37 }, "end": { - "line": 292, + "line": 365, "column": 43 } } @@ -34601,15 +34601,15 @@ "binop": null, "updateContext": null }, - "start": 15382, - "end": 15383, + "start": 18956, + "end": 18957, "loc": { "start": { - "line": 292, + "line": 365, "column": 43 }, "end": { - "line": 292, + "line": 365, "column": 44 } } @@ -34627,15 +34627,15 @@ "binop": null }, "value": "includeTypes", - "start": 15383, - "end": 15395, + "start": 18957, + "end": 18969, "loc": { "start": { - "line": 292, + "line": 365, "column": 44 }, "end": { - "line": 292, + "line": 365, "column": 56 } } @@ -34653,15 +34653,15 @@ "binop": null, "updateContext": null }, - "start": 15395, - "end": 15396, + "start": 18969, + "end": 18970, "loc": { "start": { - "line": 292, + "line": 365, "column": 56 }, "end": { - "line": 292, + "line": 365, "column": 57 } } @@ -34679,15 +34679,15 @@ "binop": null }, "value": "i", - "start": 15396, - "end": 15397, + "start": 18970, + "end": 18971, "loc": { "start": { - "line": 292, + "line": 365, "column": 57 }, "end": { - "line": 292, + "line": 365, "column": 58 } } @@ -34705,15 +34705,15 @@ "binop": null, "updateContext": null }, - "start": 15397, - "end": 15398, + "start": 18971, + "end": 18972, "loc": { "start": { - "line": 292, + "line": 365, "column": 58 }, "end": { - "line": 292, + "line": 365, "column": 59 } } @@ -34731,15 +34731,15 @@ "binop": null, "updateContext": null }, - "start": 15398, - "end": 15399, + "start": 18972, + "end": 18973, "loc": { "start": { - "line": 292, + "line": 365, "column": 59 }, "end": { - "line": 292, + "line": 365, "column": 60 } } @@ -34758,15 +34758,15 @@ "updateContext": null }, "value": "=", - "start": 15400, - "end": 15401, + "start": 18974, + "end": 18975, "loc": { "start": { - "line": 292, + "line": 365, "column": 61 }, "end": { - "line": 292, + "line": 365, "column": 62 } } @@ -34786,15 +34786,15 @@ "updateContext": null }, "value": "true", - "start": 15402, - "end": 15406, + "start": 18976, + "end": 18980, "loc": { "start": { - "line": 292, + "line": 365, "column": 63 }, "end": { - "line": 292, + "line": 365, "column": 67 } } @@ -34812,15 +34812,15 @@ "binop": null, "updateContext": null }, - "start": 15406, - "end": 15407, + "start": 18980, + "end": 18981, "loc": { "start": { - "line": 292, + "line": 365, "column": 67 }, "end": { - "line": 292, + "line": 365, "column": 68 } } @@ -34837,15 +34837,15 @@ "postfix": false, "binop": null }, - "start": 15428, - "end": 15429, + "start": 19002, + "end": 19003, "loc": { "start": { - "line": 293, + "line": 366, "column": 20 }, "end": { - "line": 293, + "line": 366, "column": 21 } } @@ -34862,15 +34862,15 @@ "postfix": false, "binop": null }, - "start": 15446, - "end": 15447, + "start": 19020, + "end": 19021, "loc": { "start": { - "line": 294, + "line": 367, "column": 16 }, "end": { - "line": 294, + "line": 367, "column": 17 } } @@ -34890,15 +34890,15 @@ "updateContext": null }, "value": "let", - "start": 15465, - "end": 15468, + "start": 19039, + "end": 19042, "loc": { "start": { - "line": 296, + "line": 369, "column": 16 }, "end": { - "line": 296, + "line": 369, "column": 19 } } @@ -34916,15 +34916,15 @@ "binop": null }, "value": "excludeTypes", - "start": 15469, - "end": 15481, + "start": 19043, + "end": 19055, "loc": { "start": { - "line": 296, + "line": 369, "column": 20 }, "end": { - "line": 296, + "line": 369, "column": 32 } } @@ -34942,15 +34942,15 @@ "binop": null, "updateContext": null }, - "start": 15481, - "end": 15482, + "start": 19055, + "end": 19056, "loc": { "start": { - "line": 296, + "line": 369, "column": 32 }, "end": { - "line": 296, + "line": 369, "column": 33 } } @@ -34970,15 +34970,15 @@ "updateContext": null }, "value": "if", - "start": 15499, - "end": 15501, + "start": 19073, + "end": 19075, "loc": { "start": { - "line": 297, + "line": 370, "column": 16 }, "end": { - "line": 297, + "line": 370, "column": 18 } } @@ -34995,15 +34995,15 @@ "postfix": false, "binop": null }, - "start": 15502, - "end": 15503, + "start": 19076, + "end": 19077, "loc": { "start": { - "line": 297, + "line": 370, "column": 19 }, "end": { - "line": 297, + "line": 370, "column": 20 } } @@ -35021,15 +35021,15 @@ "binop": null }, "value": "params", - "start": 15503, - "end": 15509, + "start": 19077, + "end": 19083, "loc": { "start": { - "line": 297, + "line": 370, "column": 20 }, "end": { - "line": 297, + "line": 370, "column": 26 } } @@ -35047,15 +35047,15 @@ "binop": null, "updateContext": null }, - "start": 15509, - "end": 15510, + "start": 19083, + "end": 19084, "loc": { "start": { - "line": 297, + "line": 370, "column": 26 }, "end": { - "line": 297, + "line": 370, "column": 27 } } @@ -35073,15 +35073,15 @@ "binop": null }, "value": "excludeTypes", - "start": 15510, - "end": 15522, + "start": 19084, + "end": 19096, "loc": { "start": { - "line": 297, + "line": 370, "column": 27 }, "end": { - "line": 297, + "line": 370, "column": 39 } } @@ -35098,15 +35098,15 @@ "postfix": false, "binop": null }, - "start": 15522, - "end": 15523, + "start": 19096, + "end": 19097, "loc": { "start": { - "line": 297, + "line": 370, "column": 39 }, "end": { - "line": 297, + "line": 370, "column": 40 } } @@ -35123,15 +35123,15 @@ "postfix": false, "binop": null }, - "start": 15524, - "end": 15525, + "start": 19098, + "end": 19099, "loc": { "start": { - "line": 297, + "line": 370, "column": 41 }, "end": { - "line": 297, + "line": 370, "column": 42 } } @@ -35149,15 +35149,15 @@ "binop": null }, "value": "excludeTypes", - "start": 15546, - "end": 15558, + "start": 19120, + "end": 19132, "loc": { "start": { - "line": 298, + "line": 371, "column": 20 }, "end": { - "line": 298, + "line": 371, "column": 32 } } @@ -35176,15 +35176,15 @@ "updateContext": null }, "value": "=", - "start": 15559, - "end": 15560, + "start": 19133, + "end": 19134, "loc": { "start": { - "line": 298, + "line": 371, "column": 33 }, "end": { - "line": 298, + "line": 371, "column": 34 } } @@ -35201,15 +35201,15 @@ "postfix": false, "binop": null }, - "start": 15561, - "end": 15562, + "start": 19135, + "end": 19136, "loc": { "start": { - "line": 298, + "line": 371, "column": 35 }, "end": { - "line": 298, + "line": 371, "column": 36 } } @@ -35226,15 +35226,15 @@ "postfix": false, "binop": null }, - "start": 15562, - "end": 15563, + "start": 19136, + "end": 19137, "loc": { "start": { - "line": 298, + "line": 371, "column": 36 }, "end": { - "line": 298, + "line": 371, "column": 37 } } @@ -35252,15 +35252,15 @@ "binop": null, "updateContext": null }, - "start": 15563, - "end": 15564, + "start": 19137, + "end": 19138, "loc": { "start": { - "line": 298, + "line": 371, "column": 37 }, "end": { - "line": 298, + "line": 371, "column": 38 } } @@ -35280,15 +35280,15 @@ "updateContext": null }, "value": "if", - "start": 15585, - "end": 15587, + "start": 19159, + "end": 19161, "loc": { "start": { - "line": 299, + "line": 372, "column": 20 }, "end": { - "line": 299, + "line": 372, "column": 22 } } @@ -35305,15 +35305,15 @@ "postfix": false, "binop": null }, - "start": 15588, - "end": 15589, + "start": 19162, + "end": 19163, "loc": { "start": { - "line": 299, + "line": 372, "column": 23 }, "end": { - "line": 299, + "line": 372, "column": 24 } } @@ -35332,15 +35332,15 @@ "updateContext": null }, "value": "!", - "start": 15589, - "end": 15590, + "start": 19163, + "end": 19164, "loc": { "start": { - "line": 299, + "line": 372, "column": 24 }, "end": { - "line": 299, + "line": 372, "column": 25 } } @@ -35358,15 +35358,15 @@ "binop": null }, "value": "includeTypes", - "start": 15590, - "end": 15602, + "start": 19164, + "end": 19176, "loc": { "start": { - "line": 299, + "line": 372, "column": 25 }, "end": { - "line": 299, + "line": 372, "column": 37 } } @@ -35383,15 +35383,15 @@ "postfix": false, "binop": null }, - "start": 15602, - "end": 15603, + "start": 19176, + "end": 19177, "loc": { "start": { - "line": 299, + "line": 372, "column": 37 }, "end": { - "line": 299, + "line": 372, "column": 38 } } @@ -35408,15 +35408,15 @@ "postfix": false, "binop": null }, - "start": 15604, - "end": 15605, + "start": 19178, + "end": 19179, "loc": { "start": { - "line": 299, + "line": 372, "column": 39 }, "end": { - "line": 299, + "line": 372, "column": 40 } } @@ -35434,15 +35434,15 @@ "binop": null }, "value": "includeTypes", - "start": 15630, - "end": 15642, + "start": 19204, + "end": 19216, "loc": { "start": { - "line": 300, + "line": 373, "column": 24 }, "end": { - "line": 300, + "line": 373, "column": 36 } } @@ -35461,15 +35461,15 @@ "updateContext": null }, "value": "=", - "start": 15643, - "end": 15644, + "start": 19217, + "end": 19218, "loc": { "start": { - "line": 300, + "line": 373, "column": 37 }, "end": { - "line": 300, + "line": 373, "column": 38 } } @@ -35486,15 +35486,15 @@ "postfix": false, "binop": null }, - "start": 15645, - "end": 15646, + "start": 19219, + "end": 19220, "loc": { "start": { - "line": 300, + "line": 373, "column": 39 }, "end": { - "line": 300, + "line": 373, "column": 40 } } @@ -35511,15 +35511,15 @@ "postfix": false, "binop": null }, - "start": 15646, - "end": 15647, + "start": 19220, + "end": 19221, "loc": { "start": { - "line": 300, + "line": 373, "column": 40 }, "end": { - "line": 300, + "line": 373, "column": 41 } } @@ -35537,15 +35537,15 @@ "binop": null, "updateContext": null }, - "start": 15647, - "end": 15648, + "start": 19221, + "end": 19222, "loc": { "start": { - "line": 300, + "line": 373, "column": 41 }, "end": { - "line": 300, + "line": 373, "column": 42 } } @@ -35562,15 +35562,15 @@ "postfix": false, "binop": null }, - "start": 15669, - "end": 15670, + "start": 19243, + "end": 19244, "loc": { "start": { - "line": 301, + "line": 374, "column": 20 }, "end": { - "line": 301, + "line": 374, "column": 21 } } @@ -35590,15 +35590,15 @@ "updateContext": null }, "value": "for", - "start": 15691, - "end": 15694, + "start": 19265, + "end": 19268, "loc": { "start": { - "line": 302, + "line": 375, "column": 20 }, "end": { - "line": 302, + "line": 375, "column": 23 } } @@ -35615,15 +35615,15 @@ "postfix": false, "binop": null }, - "start": 15695, - "end": 15696, + "start": 19269, + "end": 19270, "loc": { "start": { - "line": 302, + "line": 375, "column": 24 }, "end": { - "line": 302, + "line": 375, "column": 25 } } @@ -35643,15 +35643,15 @@ "updateContext": null }, "value": "let", - "start": 15696, - "end": 15699, + "start": 19270, + "end": 19273, "loc": { "start": { - "line": 302, + "line": 375, "column": 25 }, "end": { - "line": 302, + "line": 375, "column": 28 } } @@ -35669,15 +35669,15 @@ "binop": null }, "value": "i", - "start": 15700, - "end": 15701, + "start": 19274, + "end": 19275, "loc": { "start": { - "line": 302, + "line": 375, "column": 29 }, "end": { - "line": 302, + "line": 375, "column": 30 } } @@ -35696,15 +35696,15 @@ "updateContext": null }, "value": "=", - "start": 15702, - "end": 15703, + "start": 19276, + "end": 19277, "loc": { "start": { - "line": 302, + "line": 375, "column": 31 }, "end": { - "line": 302, + "line": 375, "column": 32 } } @@ -35723,15 +35723,15 @@ "updateContext": null }, "value": 0, - "start": 15704, - "end": 15705, + "start": 19278, + "end": 19279, "loc": { "start": { - "line": 302, + "line": 375, "column": 33 }, "end": { - "line": 302, + "line": 375, "column": 34 } } @@ -35749,15 +35749,15 @@ "binop": null, "updateContext": null }, - "start": 15705, - "end": 15706, + "start": 19279, + "end": 19280, "loc": { "start": { - "line": 302, + "line": 375, "column": 34 }, "end": { - "line": 302, + "line": 375, "column": 35 } } @@ -35775,15 +35775,15 @@ "binop": null }, "value": "len", - "start": 15707, - "end": 15710, + "start": 19281, + "end": 19284, "loc": { "start": { - "line": 302, + "line": 375, "column": 36 }, "end": { - "line": 302, + "line": 375, "column": 39 } } @@ -35802,15 +35802,15 @@ "updateContext": null }, "value": "=", - "start": 15711, - "end": 15712, + "start": 19285, + "end": 19286, "loc": { "start": { - "line": 302, + "line": 375, "column": 40 }, "end": { - "line": 302, + "line": 375, "column": 41 } } @@ -35828,15 +35828,15 @@ "binop": null }, "value": "params", - "start": 15713, - "end": 15719, + "start": 19287, + "end": 19293, "loc": { "start": { - "line": 302, + "line": 375, "column": 42 }, "end": { - "line": 302, + "line": 375, "column": 48 } } @@ -35854,15 +35854,15 @@ "binop": null, "updateContext": null }, - "start": 15719, - "end": 15720, + "start": 19293, + "end": 19294, "loc": { "start": { - "line": 302, + "line": 375, "column": 48 }, "end": { - "line": 302, + "line": 375, "column": 49 } } @@ -35880,15 +35880,15 @@ "binop": null }, "value": "excludeTypes", - "start": 15720, - "end": 15732, + "start": 19294, + "end": 19306, "loc": { "start": { - "line": 302, + "line": 375, "column": 49 }, "end": { - "line": 302, + "line": 375, "column": 61 } } @@ -35906,15 +35906,15 @@ "binop": null, "updateContext": null }, - "start": 15732, - "end": 15733, + "start": 19306, + "end": 19307, "loc": { "start": { - "line": 302, + "line": 375, "column": 61 }, "end": { - "line": 302, + "line": 375, "column": 62 } } @@ -35932,15 +35932,15 @@ "binop": null }, "value": "length", - "start": 15733, - "end": 15739, + "start": 19307, + "end": 19313, "loc": { "start": { - "line": 302, + "line": 375, "column": 62 }, "end": { - "line": 302, + "line": 375, "column": 68 } } @@ -35958,15 +35958,15 @@ "binop": null, "updateContext": null }, - "start": 15739, - "end": 15740, + "start": 19313, + "end": 19314, "loc": { "start": { - "line": 302, + "line": 375, "column": 68 }, "end": { - "line": 302, + "line": 375, "column": 69 } } @@ -35984,15 +35984,15 @@ "binop": null }, "value": "i", - "start": 15741, - "end": 15742, + "start": 19315, + "end": 19316, "loc": { "start": { - "line": 302, + "line": 375, "column": 70 }, "end": { - "line": 302, + "line": 375, "column": 71 } } @@ -36011,15 +36011,15 @@ "updateContext": null }, "value": "<", - "start": 15743, - "end": 15744, + "start": 19317, + "end": 19318, "loc": { "start": { - "line": 302, + "line": 375, "column": 72 }, "end": { - "line": 302, + "line": 375, "column": 73 } } @@ -36037,15 +36037,15 @@ "binop": null }, "value": "len", - "start": 15745, - "end": 15748, + "start": 19319, + "end": 19322, "loc": { "start": { - "line": 302, + "line": 375, "column": 74 }, "end": { - "line": 302, + "line": 375, "column": 77 } } @@ -36063,15 +36063,15 @@ "binop": null, "updateContext": null }, - "start": 15748, - "end": 15749, + "start": 19322, + "end": 19323, "loc": { "start": { - "line": 302, + "line": 375, "column": 77 }, "end": { - "line": 302, + "line": 375, "column": 78 } } @@ -36089,15 +36089,15 @@ "binop": null }, "value": "i", - "start": 15750, - "end": 15751, + "start": 19324, + "end": 19325, "loc": { "start": { - "line": 302, + "line": 375, "column": 79 }, "end": { - "line": 302, + "line": 375, "column": 80 } } @@ -36115,15 +36115,15 @@ "binop": null }, "value": "++", - "start": 15751, - "end": 15753, + "start": 19325, + "end": 19327, "loc": { "start": { - "line": 302, + "line": 375, "column": 80 }, "end": { - "line": 302, + "line": 375, "column": 82 } } @@ -36140,15 +36140,15 @@ "postfix": false, "binop": null }, - "start": 15753, - "end": 15754, + "start": 19327, + "end": 19328, "loc": { "start": { - "line": 302, + "line": 375, "column": 82 }, "end": { - "line": 302, + "line": 375, "column": 83 } } @@ -36165,15 +36165,15 @@ "postfix": false, "binop": null }, - "start": 15755, - "end": 15756, + "start": 19329, + "end": 19330, "loc": { "start": { - "line": 302, + "line": 375, "column": 84 }, "end": { - "line": 302, + "line": 375, "column": 85 } } @@ -36191,15 +36191,15 @@ "binop": null }, "value": "includeTypes", - "start": 15781, - "end": 15793, + "start": 19355, + "end": 19367, "loc": { "start": { - "line": 303, + "line": 376, "column": 24 }, "end": { - "line": 303, + "line": 376, "column": 36 } } @@ -36217,15 +36217,15 @@ "binop": null, "updateContext": null }, - "start": 15793, - "end": 15794, + "start": 19367, + "end": 19368, "loc": { "start": { - "line": 303, + "line": 376, "column": 36 }, "end": { - "line": 303, + "line": 376, "column": 37 } } @@ -36243,15 +36243,15 @@ "binop": null }, "value": "params", - "start": 15794, - "end": 15800, + "start": 19368, + "end": 19374, "loc": { "start": { - "line": 303, + "line": 376, "column": 37 }, "end": { - "line": 303, + "line": 376, "column": 43 } } @@ -36269,15 +36269,15 @@ "binop": null, "updateContext": null }, - "start": 15800, - "end": 15801, + "start": 19374, + "end": 19375, "loc": { "start": { - "line": 303, + "line": 376, "column": 43 }, "end": { - "line": 303, + "line": 376, "column": 44 } } @@ -36295,15 +36295,15 @@ "binop": null }, "value": "excludeTypes", - "start": 15801, - "end": 15813, + "start": 19375, + "end": 19387, "loc": { "start": { - "line": 303, + "line": 376, "column": 44 }, "end": { - "line": 303, + "line": 376, "column": 56 } } @@ -36321,15 +36321,15 @@ "binop": null, "updateContext": null }, - "start": 15813, - "end": 15814, + "start": 19387, + "end": 19388, "loc": { "start": { - "line": 303, + "line": 376, "column": 56 }, "end": { - "line": 303, + "line": 376, "column": 57 } } @@ -36347,15 +36347,15 @@ "binop": null }, "value": "i", - "start": 15814, - "end": 15815, + "start": 19388, + "end": 19389, "loc": { "start": { - "line": 303, + "line": 376, "column": 57 }, "end": { - "line": 303, + "line": 376, "column": 58 } } @@ -36373,15 +36373,15 @@ "binop": null, "updateContext": null }, - "start": 15815, - "end": 15816, + "start": 19389, + "end": 19390, "loc": { "start": { - "line": 303, + "line": 376, "column": 58 }, "end": { - "line": 303, + "line": 376, "column": 59 } } @@ -36399,15 +36399,15 @@ "binop": null, "updateContext": null }, - "start": 15816, - "end": 15817, + "start": 19390, + "end": 19391, "loc": { "start": { - "line": 303, + "line": 376, "column": 59 }, "end": { - "line": 303, + "line": 376, "column": 60 } } @@ -36426,15 +36426,15 @@ "updateContext": null }, "value": "=", - "start": 15818, - "end": 15819, + "start": 19392, + "end": 19393, "loc": { "start": { - "line": 303, + "line": 376, "column": 61 }, "end": { - "line": 303, + "line": 376, "column": 62 } } @@ -36454,15 +36454,15 @@ "updateContext": null }, "value": "true", - "start": 15820, - "end": 15824, + "start": 19394, + "end": 19398, "loc": { "start": { - "line": 303, + "line": 376, "column": 63 }, "end": { - "line": 303, + "line": 376, "column": 67 } } @@ -36480,15 +36480,15 @@ "binop": null, "updateContext": null }, - "start": 15824, - "end": 15825, + "start": 19398, + "end": 19399, "loc": { "start": { - "line": 303, + "line": 376, "column": 67 }, "end": { - "line": 303, + "line": 376, "column": 68 } } @@ -36505,15 +36505,15 @@ "postfix": false, "binop": null }, - "start": 15846, - "end": 15847, + "start": 19420, + "end": 19421, "loc": { "start": { - "line": 304, + "line": 377, "column": 20 }, "end": { - "line": 304, + "line": 377, "column": 21 } } @@ -36530,15 +36530,15 @@ "postfix": false, "binop": null }, - "start": 15864, - "end": 15865, + "start": 19438, + "end": 19439, "loc": { "start": { - "line": 305, + "line": 378, "column": 16 }, "end": { - "line": 305, + "line": 378, "column": 17 } } @@ -36556,15 +36556,15 @@ "binop": null }, "value": "params", - "start": 15883, - "end": 15889, + "start": 19457, + "end": 19463, "loc": { "start": { - "line": 307, + "line": 380, "column": 16 }, "end": { - "line": 307, + "line": 380, "column": 22 } } @@ -36582,15 +36582,15 @@ "binop": null, "updateContext": null }, - "start": 15889, - "end": 15890, + "start": 19463, + "end": 19464, "loc": { "start": { - "line": 307, + "line": 380, "column": 22 }, "end": { - "line": 307, + "line": 380, "column": 23 } } @@ -36608,15 +36608,15 @@ "binop": null }, "value": "readableGeometry", - "start": 15890, - "end": 15906, + "start": 19464, + "end": 19480, "loc": { "start": { - "line": 307, + "line": 380, "column": 23 }, "end": { - "line": 307, + "line": 380, "column": 39 } } @@ -36635,15 +36635,15 @@ "updateContext": null }, "value": "=", - "start": 15907, - "end": 15908, + "start": 19481, + "end": 19482, "loc": { "start": { - "line": 307, + "line": 380, "column": 40 }, "end": { - "line": 307, + "line": 380, "column": 41 } } @@ -36663,15 +36663,15 @@ "updateContext": null }, "value": "false", - "start": 15909, - "end": 15914, + "start": 19483, + "end": 19488, "loc": { "start": { - "line": 307, + "line": 380, "column": 42 }, "end": { - "line": 307, + "line": 380, "column": 47 } } @@ -36689,15 +36689,15 @@ "binop": null, "updateContext": null }, - "start": 15914, - "end": 15915, + "start": 19488, + "end": 19489, "loc": { "start": { - "line": 307, + "line": 380, "column": 47 }, "end": { - "line": 307, + "line": 380, "column": 48 } } @@ -36715,15 +36715,15 @@ "binop": null }, "value": "params", - "start": 15933, - "end": 15939, + "start": 19507, + "end": 19513, "loc": { "start": { - "line": 309, + "line": 382, "column": 16 }, "end": { - "line": 309, + "line": 382, "column": 22 } } @@ -36741,15 +36741,15 @@ "binop": null, "updateContext": null }, - "start": 15939, - "end": 15940, + "start": 19513, + "end": 19514, "loc": { "start": { - "line": 309, + "line": 382, "column": 22 }, "end": { - "line": 309, + "line": 382, "column": 23 } } @@ -36767,15 +36767,15 @@ "binop": null }, "value": "handleGLTFNode", - "start": 15940, - "end": 15954, + "start": 19514, + "end": 19528, "loc": { "start": { - "line": 309, + "line": 382, "column": 23 }, "end": { - "line": 309, + "line": 382, "column": 37 } } @@ -36794,15 +36794,15 @@ "updateContext": null }, "value": "=", - "start": 15955, - "end": 15956, + "start": 19529, + "end": 19530, "loc": { "start": { - "line": 309, + "line": 382, "column": 38 }, "end": { - "line": 309, + "line": 382, "column": 39 } } @@ -36819,15 +36819,15 @@ "postfix": false, "binop": null }, - "start": 15957, - "end": 15958, + "start": 19531, + "end": 19532, "loc": { "start": { - "line": 309, + "line": 382, "column": 40 }, "end": { - "line": 309, + "line": 382, "column": 41 } } @@ -36845,15 +36845,15 @@ "binop": null }, "value": "modelId", - "start": 15958, - "end": 15965, + "start": 19532, + "end": 19539, "loc": { "start": { - "line": 309, + "line": 382, "column": 41 }, "end": { - "line": 309, + "line": 382, "column": 48 } } @@ -36871,15 +36871,15 @@ "binop": null, "updateContext": null }, - "start": 15965, - "end": 15966, + "start": 19539, + "end": 19540, "loc": { "start": { - "line": 309, + "line": 382, "column": 48 }, "end": { - "line": 309, + "line": 382, "column": 49 } } @@ -36897,15 +36897,15 @@ "binop": null }, "value": "glTFNode", - "start": 15967, - "end": 15975, + "start": 19541, + "end": 19549, "loc": { "start": { - "line": 309, + "line": 382, "column": 50 }, "end": { - "line": 309, + "line": 382, "column": 58 } } @@ -36923,15 +36923,15 @@ "binop": null, "updateContext": null }, - "start": 15975, - "end": 15976, + "start": 19549, + "end": 19550, "loc": { "start": { - "line": 309, + "line": 382, "column": 58 }, "end": { - "line": 309, + "line": 382, "column": 59 } } @@ -36949,15 +36949,15 @@ "binop": null }, "value": "actions", - "start": 15977, - "end": 15984, + "start": 19551, + "end": 19558, "loc": { "start": { - "line": 309, + "line": 382, "column": 60 }, "end": { - "line": 309, + "line": 382, "column": 67 } } @@ -36974,15 +36974,15 @@ "postfix": false, "binop": null }, - "start": 15984, - "end": 15985, + "start": 19558, + "end": 19559, "loc": { "start": { - "line": 309, + "line": 382, "column": 67 }, "end": { - "line": 309, + "line": 382, "column": 68 } } @@ -37000,15 +37000,15 @@ "binop": null, "updateContext": null }, - "start": 15986, - "end": 15988, + "start": 19560, + "end": 19562, "loc": { "start": { - "line": 309, + "line": 382, "column": 69 }, "end": { - "line": 309, + "line": 382, "column": 71 } } @@ -37025,15 +37025,15 @@ "postfix": false, "binop": null }, - "start": 15989, - "end": 15990, + "start": 19563, + "end": 19564, "loc": { "start": { - "line": 309, + "line": 382, "column": 72 }, "end": { - "line": 309, + "line": 382, "column": 73 } } @@ -37053,15 +37053,15 @@ "updateContext": null }, "value": "const", - "start": 16012, - "end": 16017, + "start": 19586, + "end": 19591, "loc": { "start": { - "line": 311, + "line": 384, "column": 20 }, "end": { - "line": 311, + "line": 384, "column": 25 } } @@ -37079,15 +37079,15 @@ "binop": null }, "value": "name", - "start": 16018, - "end": 16022, + "start": 19592, + "end": 19596, "loc": { "start": { - "line": 311, + "line": 384, "column": 26 }, "end": { - "line": 311, + "line": 384, "column": 30 } } @@ -37106,15 +37106,15 @@ "updateContext": null }, "value": "=", - "start": 16023, - "end": 16024, + "start": 19597, + "end": 19598, "loc": { "start": { - "line": 311, + "line": 384, "column": 31 }, "end": { - "line": 311, + "line": 384, "column": 32 } } @@ -37132,15 +37132,15 @@ "binop": null }, "value": "glTFNode", - "start": 16025, - "end": 16033, + "start": 19599, + "end": 19607, "loc": { "start": { - "line": 311, + "line": 384, "column": 33 }, "end": { - "line": 311, + "line": 384, "column": 41 } } @@ -37158,15 +37158,15 @@ "binop": null, "updateContext": null }, - "start": 16033, - "end": 16034, + "start": 19607, + "end": 19608, "loc": { "start": { - "line": 311, + "line": 384, "column": 41 }, "end": { - "line": 311, + "line": 384, "column": 42 } } @@ -37184,15 +37184,15 @@ "binop": null }, "value": "name", - "start": 16034, - "end": 16038, + "start": 19608, + "end": 19612, "loc": { "start": { - "line": 311, + "line": 384, "column": 42 }, "end": { - "line": 311, + "line": 384, "column": 46 } } @@ -37210,15 +37210,15 @@ "binop": null, "updateContext": null }, - "start": 16038, - "end": 16039, + "start": 19612, + "end": 19613, "loc": { "start": { - "line": 311, + "line": 384, "column": 46 }, "end": { - "line": 311, + "line": 384, "column": 47 } } @@ -37238,15 +37238,15 @@ "updateContext": null }, "value": "if", - "start": 16061, - "end": 16063, + "start": 19635, + "end": 19637, "loc": { "start": { - "line": 313, + "line": 386, "column": 20 }, "end": { - "line": 313, + "line": 386, "column": 22 } } @@ -37263,15 +37263,15 @@ "postfix": false, "binop": null }, - "start": 16064, - "end": 16065, + "start": 19638, + "end": 19639, "loc": { "start": { - "line": 313, + "line": 386, "column": 23 }, "end": { - "line": 313, + "line": 386, "column": 24 } } @@ -37290,15 +37290,15 @@ "updateContext": null }, "value": "!", - "start": 16065, - "end": 16066, + "start": 19639, + "end": 19640, "loc": { "start": { - "line": 313, + "line": 386, "column": 24 }, "end": { - "line": 313, + "line": 386, "column": 25 } } @@ -37316,15 +37316,15 @@ "binop": null }, "value": "name", - "start": 16066, - "end": 16070, + "start": 19640, + "end": 19644, "loc": { "start": { - "line": 313, + "line": 386, "column": 25 }, "end": { - "line": 313, + "line": 386, "column": 29 } } @@ -37341,15 +37341,15 @@ "postfix": false, "binop": null }, - "start": 16070, - "end": 16071, + "start": 19644, + "end": 19645, "loc": { "start": { - "line": 313, + "line": 386, "column": 29 }, "end": { - "line": 313, + "line": 386, "column": 30 } } @@ -37366,15 +37366,15 @@ "postfix": false, "binop": null }, - "start": 16072, - "end": 16073, + "start": 19646, + "end": 19647, "loc": { "start": { - "line": 313, + "line": 386, "column": 31 }, "end": { - "line": 313, + "line": 386, "column": 32 } } @@ -37394,15 +37394,15 @@ "updateContext": null }, "value": "return", - "start": 16098, - "end": 16104, + "start": 19672, + "end": 19678, "loc": { "start": { - "line": 314, + "line": 387, "column": 24 }, "end": { - "line": 314, + "line": 387, "column": 30 } } @@ -37422,15 +37422,15 @@ "updateContext": null }, "value": "true", - "start": 16105, - "end": 16109, + "start": 19679, + "end": 19683, "loc": { "start": { - "line": 314, + "line": 387, "column": 31 }, "end": { - "line": 314, + "line": 387, "column": 35 } } @@ -37448,15 +37448,15 @@ "binop": null, "updateContext": null }, - "start": 16109, - "end": 16110, + "start": 19683, + "end": 19684, "loc": { "start": { - "line": 314, + "line": 387, "column": 35 }, "end": { - "line": 314, + "line": 387, "column": 36 } } @@ -37464,15 +37464,15 @@ { "type": "CommentLine", "value": " Continue descending this node subtree", - "start": 16111, - "end": 16151, + "start": 19685, + "end": 19725, "loc": { "start": { - "line": 314, + "line": 387, "column": 37 }, "end": { - "line": 314, + "line": 387, "column": 77 } } @@ -37489,15 +37489,15 @@ "postfix": false, "binop": null }, - "start": 16172, - "end": 16173, + "start": 19746, + "end": 19747, "loc": { "start": { - "line": 315, + "line": 388, "column": 20 }, "end": { - "line": 315, + "line": 388, "column": 21 } } @@ -37517,15 +37517,15 @@ "updateContext": null }, "value": "const", - "start": 16195, - "end": 16200, + "start": 19769, + "end": 19774, "loc": { "start": { - "line": 317, + "line": 390, "column": 20 }, "end": { - "line": 317, + "line": 390, "column": 25 } } @@ -37543,15 +37543,15 @@ "binop": null }, "value": "nodeId", - "start": 16201, - "end": 16207, + "start": 19775, + "end": 19781, "loc": { "start": { - "line": 317, + "line": 390, "column": 26 }, "end": { - "line": 317, + "line": 390, "column": 32 } } @@ -37570,15 +37570,15 @@ "updateContext": null }, "value": "=", - "start": 16208, - "end": 16209, + "start": 19782, + "end": 19783, "loc": { "start": { - "line": 317, + "line": 390, "column": 33 }, "end": { - "line": 317, + "line": 390, "column": 34 } } @@ -37596,15 +37596,15 @@ "binop": null }, "value": "name", - "start": 16210, - "end": 16214, + "start": 19784, + "end": 19788, "loc": { "start": { - "line": 317, + "line": 390, "column": 35 }, "end": { - "line": 317, + "line": 390, "column": 39 } } @@ -37622,15 +37622,15 @@ "binop": null, "updateContext": null }, - "start": 16214, - "end": 16215, + "start": 19788, + "end": 19789, "loc": { "start": { - "line": 317, + "line": 390, "column": 39 }, "end": { - "line": 317, + "line": 390, "column": 40 } } @@ -37650,15 +37650,15 @@ "updateContext": null }, "value": "const", - "start": 16236, - "end": 16241, + "start": 19810, + "end": 19815, "loc": { "start": { - "line": 318, + "line": 391, "column": 20 }, "end": { - "line": 318, + "line": 391, "column": 25 } } @@ -37676,15 +37676,15 @@ "binop": null }, "value": "metaObject", - "start": 16242, - "end": 16252, + "start": 19816, + "end": 19826, "loc": { "start": { - "line": 318, + "line": 391, "column": 26 }, "end": { - "line": 318, + "line": 391, "column": 36 } } @@ -37703,15 +37703,15 @@ "updateContext": null }, "value": "=", - "start": 16253, - "end": 16254, + "start": 19827, + "end": 19828, "loc": { "start": { - "line": 318, + "line": 391, "column": 37 }, "end": { - "line": 318, + "line": 391, "column": 38 } } @@ -37731,15 +37731,15 @@ "updateContext": null }, "value": "this", - "start": 16255, - "end": 16259, + "start": 19829, + "end": 19833, "loc": { "start": { - "line": 318, + "line": 391, "column": 39 }, "end": { - "line": 318, + "line": 391, "column": 43 } } @@ -37757,15 +37757,15 @@ "binop": null, "updateContext": null }, - "start": 16259, - "end": 16260, + "start": 19833, + "end": 19834, "loc": { "start": { - "line": 318, + "line": 391, "column": 43 }, "end": { - "line": 318, + "line": 391, "column": 44 } } @@ -37783,15 +37783,15 @@ "binop": null }, "value": "viewer", - "start": 16260, - "end": 16266, + "start": 19834, + "end": 19840, "loc": { "start": { - "line": 318, + "line": 391, "column": 44 }, "end": { - "line": 318, + "line": 391, "column": 50 } } @@ -37809,15 +37809,15 @@ "binop": null, "updateContext": null }, - "start": 16266, - "end": 16267, + "start": 19840, + "end": 19841, "loc": { "start": { - "line": 318, + "line": 391, "column": 50 }, "end": { - "line": 318, + "line": 391, "column": 51 } } @@ -37835,15 +37835,15 @@ "binop": null }, "value": "metaScene", - "start": 16267, - "end": 16276, + "start": 19841, + "end": 19850, "loc": { "start": { - "line": 318, + "line": 391, "column": 51 }, "end": { - "line": 318, + "line": 391, "column": 60 } } @@ -37861,15 +37861,15 @@ "binop": null, "updateContext": null }, - "start": 16276, - "end": 16277, + "start": 19850, + "end": 19851, "loc": { "start": { - "line": 318, + "line": 391, "column": 60 }, "end": { - "line": 318, + "line": 391, "column": 61 } } @@ -37887,15 +37887,15 @@ "binop": null }, "value": "metaObjects", - "start": 16277, - "end": 16288, + "start": 19851, + "end": 19862, "loc": { "start": { - "line": 318, + "line": 391, "column": 61 }, "end": { - "line": 318, + "line": 391, "column": 72 } } @@ -37913,15 +37913,15 @@ "binop": null, "updateContext": null }, - "start": 16288, - "end": 16289, + "start": 19862, + "end": 19863, "loc": { "start": { - "line": 318, + "line": 391, "column": 72 }, "end": { - "line": 318, + "line": 391, "column": 73 } } @@ -37939,15 +37939,15 @@ "binop": null }, "value": "nodeId", - "start": 16289, - "end": 16295, + "start": 19863, + "end": 19869, "loc": { "start": { - "line": 318, + "line": 391, "column": 73 }, "end": { - "line": 318, + "line": 391, "column": 79 } } @@ -37965,15 +37965,15 @@ "binop": null, "updateContext": null }, - "start": 16295, - "end": 16296, + "start": 19869, + "end": 19870, "loc": { "start": { - "line": 318, + "line": 391, "column": 79 }, "end": { - "line": 318, + "line": 391, "column": 80 } } @@ -37991,15 +37991,15 @@ "binop": null, "updateContext": null }, - "start": 16296, - "end": 16297, + "start": 19870, + "end": 19871, "loc": { "start": { - "line": 318, + "line": 391, "column": 80 }, "end": { - "line": 318, + "line": 391, "column": 81 } } @@ -38019,15 +38019,15 @@ "updateContext": null }, "value": "const", - "start": 16318, - "end": 16323, + "start": 19892, + "end": 19897, "loc": { "start": { - "line": 319, + "line": 392, "column": 20 }, "end": { - "line": 319, + "line": 392, "column": 25 } } @@ -38045,15 +38045,15 @@ "binop": null }, "value": "type", - "start": 16324, - "end": 16328, + "start": 19898, + "end": 19902, "loc": { "start": { - "line": 319, + "line": 392, "column": 26 }, "end": { - "line": 319, + "line": 392, "column": 30 } } @@ -38072,15 +38072,15 @@ "updateContext": null }, "value": "=", - "start": 16329, - "end": 16330, + "start": 19903, + "end": 19904, "loc": { "start": { - "line": 319, + "line": 392, "column": 31 }, "end": { - "line": 319, + "line": 392, "column": 32 } } @@ -38097,15 +38097,15 @@ "postfix": false, "binop": null }, - "start": 16331, - "end": 16332, + "start": 19905, + "end": 19906, "loc": { "start": { - "line": 319, + "line": 392, "column": 33 }, "end": { - "line": 319, + "line": 392, "column": 34 } } @@ -38123,15 +38123,15 @@ "binop": null }, "value": "metaObject", - "start": 16332, - "end": 16342, + "start": 19906, + "end": 19916, "loc": { "start": { - "line": 319, + "line": 392, "column": 34 }, "end": { - "line": 319, + "line": 392, "column": 44 } } @@ -38149,15 +38149,15 @@ "binop": null, "updateContext": null }, - "start": 16343, - "end": 16344, + "start": 19917, + "end": 19918, "loc": { "start": { - "line": 319, + "line": 392, "column": 45 }, "end": { - "line": 319, + "line": 392, "column": 46 } } @@ -38175,15 +38175,15 @@ "binop": null }, "value": "metaObject", - "start": 16345, - "end": 16355, + "start": 19919, + "end": 19929, "loc": { "start": { - "line": 319, + "line": 392, "column": 47 }, "end": { - "line": 319, + "line": 392, "column": 57 } } @@ -38201,15 +38201,15 @@ "binop": null, "updateContext": null }, - "start": 16355, - "end": 16356, + "start": 19929, + "end": 19930, "loc": { "start": { - "line": 319, + "line": 392, "column": 57 }, "end": { - "line": 319, + "line": 392, "column": 58 } } @@ -38227,15 +38227,15 @@ "binop": null }, "value": "type", - "start": 16356, - "end": 16360, + "start": 19930, + "end": 19934, "loc": { "start": { - "line": 319, + "line": 392, "column": 58 }, "end": { - "line": 319, + "line": 392, "column": 62 } } @@ -38253,15 +38253,15 @@ "binop": null, "updateContext": null }, - "start": 16361, - "end": 16362, + "start": 19935, + "end": 19936, "loc": { "start": { - "line": 319, + "line": 392, "column": 63 }, "end": { - "line": 319, + "line": 392, "column": 64 } } @@ -38280,15 +38280,15 @@ "updateContext": null }, "value": "DEFAULT", - "start": 16363, - "end": 16372, + "start": 19937, + "end": 19946, "loc": { "start": { - "line": 319, + "line": 392, "column": 65 }, "end": { - "line": 319, + "line": 392, "column": 74 } } @@ -38305,15 +38305,15 @@ "postfix": false, "binop": null }, - "start": 16372, - "end": 16373, + "start": 19946, + "end": 19947, "loc": { "start": { - "line": 319, + "line": 392, "column": 74 }, "end": { - "line": 319, + "line": 392, "column": 75 } } @@ -38332,15 +38332,15 @@ "updateContext": null }, "value": "||", - "start": 16374, - "end": 16376, + "start": 19948, + "end": 19950, "loc": { "start": { - "line": 319, + "line": 392, "column": 76 }, "end": { - "line": 319, + "line": 392, "column": 78 } } @@ -38359,15 +38359,15 @@ "updateContext": null }, "value": "DEFAULT", - "start": 16377, - "end": 16386, + "start": 19951, + "end": 19960, "loc": { "start": { - "line": 319, + "line": 392, "column": 79 }, "end": { - "line": 319, + "line": 392, "column": 88 } } @@ -38385,15 +38385,15 @@ "binop": null, "updateContext": null }, - "start": 16386, - "end": 16387, + "start": 19960, + "end": 19961, "loc": { "start": { - "line": 319, + "line": 392, "column": 88 }, "end": { - "line": 319, + "line": 392, "column": 89 } } @@ -38411,15 +38411,15 @@ "binop": null }, "value": "actions", - "start": 16409, - "end": 16416, + "start": 19983, + "end": 19990, "loc": { "start": { - "line": 321, + "line": 394, "column": 20 }, "end": { - "line": 321, + "line": 394, "column": 27 } } @@ -38437,15 +38437,15 @@ "binop": null, "updateContext": null }, - "start": 16416, - "end": 16417, + "start": 19990, + "end": 19991, "loc": { "start": { - "line": 321, + "line": 394, "column": 27 }, "end": { - "line": 321, + "line": 394, "column": 28 } } @@ -38463,15 +38463,15 @@ "binop": null }, "value": "createEntity", - "start": 16417, - "end": 16429, + "start": 19991, + "end": 20003, "loc": { "start": { - "line": 321, + "line": 394, "column": 28 }, "end": { - "line": 321, + "line": 394, "column": 40 } } @@ -38490,15 +38490,15 @@ "updateContext": null }, "value": "=", - "start": 16430, - "end": 16431, + "start": 20004, + "end": 20005, "loc": { "start": { - "line": 321, + "line": 394, "column": 41 }, "end": { - "line": 321, + "line": 394, "column": 42 } } @@ -38515,15 +38515,15 @@ "postfix": false, "binop": null }, - "start": 16432, - "end": 16433, + "start": 20006, + "end": 20007, "loc": { "start": { - "line": 321, + "line": 394, "column": 43 }, "end": { - "line": 321, + "line": 394, "column": 44 } } @@ -38541,15 +38541,15 @@ "binop": null }, "value": "id", - "start": 16458, - "end": 16460, + "start": 20032, + "end": 20034, "loc": { "start": { - "line": 322, + "line": 395, "column": 24 }, "end": { - "line": 322, + "line": 395, "column": 26 } } @@ -38567,15 +38567,15 @@ "binop": null, "updateContext": null }, - "start": 16460, - "end": 16461, + "start": 20034, + "end": 20035, "loc": { "start": { - "line": 322, + "line": 395, "column": 26 }, "end": { - "line": 322, + "line": 395, "column": 27 } } @@ -38593,15 +38593,15 @@ "binop": null }, "value": "nodeId", - "start": 16462, - "end": 16468, + "start": 20036, + "end": 20042, "loc": { "start": { - "line": 322, + "line": 395, "column": 28 }, "end": { - "line": 322, + "line": 395, "column": 34 } } @@ -38619,15 +38619,15 @@ "binop": null, "updateContext": null }, - "start": 16468, - "end": 16469, + "start": 20042, + "end": 20043, "loc": { "start": { - "line": 322, + "line": 395, "column": 34 }, "end": { - "line": 322, + "line": 395, "column": 35 } } @@ -38645,15 +38645,15 @@ "binop": null }, "value": "isObject", - "start": 16494, - "end": 16502, + "start": 20068, + "end": 20076, "loc": { "start": { - "line": 323, + "line": 396, "column": 24 }, "end": { - "line": 323, + "line": 396, "column": 32 } } @@ -38671,15 +38671,15 @@ "binop": null, "updateContext": null }, - "start": 16502, - "end": 16503, + "start": 20076, + "end": 20077, "loc": { "start": { - "line": 323, + "line": 396, "column": 32 }, "end": { - "line": 323, + "line": 396, "column": 33 } } @@ -38699,15 +38699,15 @@ "updateContext": null }, "value": "true", - "start": 16504, - "end": 16508, + "start": 20078, + "end": 20082, "loc": { "start": { - "line": 323, + "line": 396, "column": 34 }, "end": { - "line": 323, + "line": 396, "column": 38 } } @@ -38715,15 +38715,15 @@ { "type": "CommentLine", "value": " Registers the Entity in Scene#objects", - "start": 16509, - "end": 16549, + "start": 20083, + "end": 20123, "loc": { "start": { - "line": 323, + "line": 396, "column": 39 }, "end": { - "line": 323, + "line": 396, "column": 79 } } @@ -38740,15 +38740,15 @@ "postfix": false, "binop": null }, - "start": 16570, - "end": 16571, + "start": 20144, + "end": 20145, "loc": { "start": { - "line": 324, + "line": 397, "column": 20 }, "end": { - "line": 324, + "line": 397, "column": 21 } } @@ -38766,15 +38766,15 @@ "binop": null, "updateContext": null }, - "start": 16571, - "end": 16572, + "start": 20145, + "end": 20146, "loc": { "start": { - "line": 324, + "line": 397, "column": 21 }, "end": { - "line": 324, + "line": 397, "column": 22 } } @@ -38794,15 +38794,15 @@ "updateContext": null }, "value": "const", - "start": 16594, - "end": 16599, + "start": 20168, + "end": 20173, "loc": { "start": { - "line": 326, + "line": 399, "column": 20 }, "end": { - "line": 326, + "line": 399, "column": 25 } } @@ -38820,15 +38820,15 @@ "binop": null }, "value": "props", - "start": 16600, - "end": 16605, + "start": 20174, + "end": 20179, "loc": { "start": { - "line": 326, + "line": 399, "column": 26 }, "end": { - "line": 326, + "line": 399, "column": 31 } } @@ -38847,15 +38847,15 @@ "updateContext": null }, "value": "=", - "start": 16606, - "end": 16607, + "start": 20180, + "end": 20181, "loc": { "start": { - "line": 326, + "line": 399, "column": 32 }, "end": { - "line": 326, + "line": 399, "column": 33 } } @@ -38873,15 +38873,15 @@ "binop": null }, "value": "objectDefaults", - "start": 16608, - "end": 16622, + "start": 20182, + "end": 20196, "loc": { "start": { - "line": 326, + "line": 399, "column": 34 }, "end": { - "line": 326, + "line": 399, "column": 48 } } @@ -38899,15 +38899,15 @@ "binop": null, "updateContext": null }, - "start": 16622, - "end": 16623, + "start": 20196, + "end": 20197, "loc": { "start": { - "line": 326, + "line": 399, "column": 48 }, "end": { - "line": 326, + "line": 399, "column": 49 } } @@ -38925,15 +38925,15 @@ "binop": null }, "value": "type", - "start": 16623, - "end": 16627, + "start": 20197, + "end": 20201, "loc": { "start": { - "line": 326, + "line": 399, "column": 49 }, "end": { - "line": 326, + "line": 399, "column": 53 } } @@ -38951,15 +38951,15 @@ "binop": null, "updateContext": null }, - "start": 16627, - "end": 16628, + "start": 20201, + "end": 20202, "loc": { "start": { - "line": 326, + "line": 399, "column": 53 }, "end": { - "line": 326, + "line": 399, "column": 54 } } @@ -38977,15 +38977,15 @@ "binop": null, "updateContext": null }, - "start": 16628, - "end": 16629, + "start": 20202, + "end": 20203, "loc": { "start": { - "line": 326, + "line": 399, "column": 54 }, "end": { - "line": 326, + "line": 399, "column": 55 } } @@ -39005,15 +39005,15 @@ "updateContext": null }, "value": "if", - "start": 16651, - "end": 16653, + "start": 20225, + "end": 20227, "loc": { "start": { - "line": 328, + "line": 401, "column": 20 }, "end": { - "line": 328, + "line": 401, "column": 22 } } @@ -39030,15 +39030,15 @@ "postfix": false, "binop": null }, - "start": 16654, - "end": 16655, + "start": 20228, + "end": 20229, "loc": { "start": { - "line": 328, + "line": 401, "column": 23 }, "end": { - "line": 328, + "line": 401, "column": 24 } } @@ -39056,15 +39056,15 @@ "binop": null }, "value": "props", - "start": 16655, - "end": 16660, + "start": 20229, + "end": 20234, "loc": { "start": { - "line": 328, + "line": 401, "column": 24 }, "end": { - "line": 328, + "line": 401, "column": 29 } } @@ -39081,15 +39081,15 @@ "postfix": false, "binop": null }, - "start": 16660, - "end": 16661, + "start": 20234, + "end": 20235, "loc": { "start": { - "line": 328, + "line": 401, "column": 29 }, "end": { - "line": 328, + "line": 401, "column": 30 } } @@ -39106,15 +39106,15 @@ "postfix": false, "binop": null }, - "start": 16662, - "end": 16663, + "start": 20236, + "end": 20237, "loc": { "start": { - "line": 328, + "line": 401, "column": 31 }, "end": { - "line": 328, + "line": 401, "column": 32 } } @@ -39122,15 +39122,15 @@ { "type": "CommentLine", "value": " Set Entity's initial rendering state for recognized type", - "start": 16664, - "end": 16723, + "start": 20238, + "end": 20297, "loc": { "start": { - "line": 328, + "line": 401, "column": 33 }, "end": { - "line": 328, + "line": 401, "column": 92 } } @@ -39150,15 +39150,15 @@ "updateContext": null }, "value": "if", - "start": 16749, - "end": 16751, + "start": 20323, + "end": 20325, "loc": { "start": { - "line": 330, + "line": 403, "column": 24 }, "end": { - "line": 330, + "line": 403, "column": 26 } } @@ -39175,15 +39175,15 @@ "postfix": false, "binop": null }, - "start": 16752, - "end": 16753, + "start": 20326, + "end": 20327, "loc": { "start": { - "line": 330, + "line": 403, "column": 27 }, "end": { - "line": 330, + "line": 403, "column": 28 } } @@ -39201,15 +39201,15 @@ "binop": null }, "value": "props", - "start": 16753, - "end": 16758, + "start": 20327, + "end": 20332, "loc": { "start": { - "line": 330, + "line": 403, "column": 28 }, "end": { - "line": 330, + "line": 403, "column": 33 } } @@ -39227,15 +39227,15 @@ "binop": null, "updateContext": null }, - "start": 16758, - "end": 16759, + "start": 20332, + "end": 20333, "loc": { "start": { - "line": 330, + "line": 403, "column": 33 }, "end": { - "line": 330, + "line": 403, "column": 34 } } @@ -39253,15 +39253,15 @@ "binop": null }, "value": "visible", - "start": 16759, - "end": 16766, + "start": 20333, + "end": 20340, "loc": { "start": { - "line": 330, + "line": 403, "column": 34 }, "end": { - "line": 330, + "line": 403, "column": 41 } } @@ -39280,15 +39280,15 @@ "updateContext": null }, "value": "===", - "start": 16767, - "end": 16770, + "start": 20341, + "end": 20344, "loc": { "start": { - "line": 330, + "line": 403, "column": 42 }, "end": { - "line": 330, + "line": 403, "column": 45 } } @@ -39308,15 +39308,15 @@ "updateContext": null }, "value": "false", - "start": 16771, - "end": 16776, + "start": 20345, + "end": 20350, "loc": { "start": { - "line": 330, + "line": 403, "column": 46 }, "end": { - "line": 330, + "line": 403, "column": 51 } } @@ -39333,15 +39333,15 @@ "postfix": false, "binop": null }, - "start": 16776, - "end": 16777, + "start": 20350, + "end": 20351, "loc": { "start": { - "line": 330, + "line": 403, "column": 51 }, "end": { - "line": 330, + "line": 403, "column": 52 } } @@ -39358,15 +39358,15 @@ "postfix": false, "binop": null }, - "start": 16778, - "end": 16779, + "start": 20352, + "end": 20353, "loc": { "start": { - "line": 330, + "line": 403, "column": 53 }, "end": { - "line": 330, + "line": 403, "column": 54 } } @@ -39384,15 +39384,15 @@ "binop": null }, "value": "actions", - "start": 16808, - "end": 16815, + "start": 20382, + "end": 20389, "loc": { "start": { - "line": 331, + "line": 404, "column": 28 }, "end": { - "line": 331, + "line": 404, "column": 35 } } @@ -39410,15 +39410,15 @@ "binop": null, "updateContext": null }, - "start": 16815, - "end": 16816, + "start": 20389, + "end": 20390, "loc": { "start": { - "line": 331, + "line": 404, "column": 35 }, "end": { - "line": 331, + "line": 404, "column": 36 } } @@ -39436,15 +39436,15 @@ "binop": null }, "value": "createEntity", - "start": 16816, - "end": 16828, + "start": 20390, + "end": 20402, "loc": { "start": { - "line": 331, + "line": 404, "column": 36 }, "end": { - "line": 331, + "line": 404, "column": 48 } } @@ -39462,15 +39462,15 @@ "binop": null, "updateContext": null }, - "start": 16828, - "end": 16829, + "start": 20402, + "end": 20403, "loc": { "start": { - "line": 331, + "line": 404, "column": 48 }, "end": { - "line": 331, + "line": 404, "column": 49 } } @@ -39488,15 +39488,15 @@ "binop": null }, "value": "visible", - "start": 16829, - "end": 16836, + "start": 20403, + "end": 20410, "loc": { "start": { - "line": 331, + "line": 404, "column": 49 }, "end": { - "line": 331, + "line": 404, "column": 56 } } @@ -39515,15 +39515,15 @@ "updateContext": null }, "value": "=", - "start": 16837, - "end": 16838, + "start": 20411, + "end": 20412, "loc": { "start": { - "line": 331, + "line": 404, "column": 57 }, "end": { - "line": 331, + "line": 404, "column": 58 } } @@ -39543,15 +39543,15 @@ "updateContext": null }, "value": "false", - "start": 16839, - "end": 16844, + "start": 20413, + "end": 20418, "loc": { "start": { - "line": 331, + "line": 404, "column": 59 }, "end": { - "line": 331, + "line": 404, "column": 64 } } @@ -39569,15 +39569,15 @@ "binop": null, "updateContext": null }, - "start": 16844, - "end": 16845, + "start": 20418, + "end": 20419, "loc": { "start": { - "line": 331, + "line": 404, "column": 64 }, "end": { - "line": 331, + "line": 404, "column": 65 } } @@ -39594,15 +39594,15 @@ "postfix": false, "binop": null }, - "start": 16870, - "end": 16871, + "start": 20444, + "end": 20445, "loc": { "start": { - "line": 332, + "line": 405, "column": 24 }, "end": { - "line": 332, + "line": 405, "column": 25 } } @@ -39622,15 +39622,15 @@ "updateContext": null }, "value": "if", - "start": 16897, - "end": 16899, + "start": 20471, + "end": 20473, "loc": { "start": { - "line": 334, + "line": 407, "column": 24 }, "end": { - "line": 334, + "line": 407, "column": 26 } } @@ -39647,15 +39647,15 @@ "postfix": false, "binop": null }, - "start": 16900, - "end": 16901, + "start": 20474, + "end": 20475, "loc": { "start": { - "line": 334, + "line": 407, "column": 27 }, "end": { - "line": 334, + "line": 407, "column": 28 } } @@ -39673,15 +39673,15 @@ "binop": null }, "value": "props", - "start": 16901, - "end": 16906, + "start": 20475, + "end": 20480, "loc": { "start": { - "line": 334, + "line": 407, "column": 28 }, "end": { - "line": 334, + "line": 407, "column": 33 } } @@ -39699,15 +39699,15 @@ "binop": null, "updateContext": null }, - "start": 16906, - "end": 16907, + "start": 20480, + "end": 20481, "loc": { "start": { - "line": 334, + "line": 407, "column": 33 }, "end": { - "line": 334, + "line": 407, "column": 34 } } @@ -39725,15 +39725,15 @@ "binop": null }, "value": "colorize", - "start": 16907, - "end": 16915, + "start": 20481, + "end": 20489, "loc": { "start": { - "line": 334, + "line": 407, "column": 34 }, "end": { - "line": 334, + "line": 407, "column": 42 } } @@ -39750,15 +39750,15 @@ "postfix": false, "binop": null }, - "start": 16915, - "end": 16916, + "start": 20489, + "end": 20490, "loc": { "start": { - "line": 334, + "line": 407, "column": 42 }, "end": { - "line": 334, + "line": 407, "column": 43 } } @@ -39775,15 +39775,15 @@ "postfix": false, "binop": null }, - "start": 16917, - "end": 16918, + "start": 20491, + "end": 20492, "loc": { "start": { - "line": 334, + "line": 407, "column": 44 }, "end": { - "line": 334, + "line": 407, "column": 45 } } @@ -39801,15 +39801,15 @@ "binop": null }, "value": "actions", - "start": 16947, - "end": 16954, + "start": 20521, + "end": 20528, "loc": { "start": { - "line": 335, + "line": 408, "column": 28 }, "end": { - "line": 335, + "line": 408, "column": 35 } } @@ -39827,15 +39827,15 @@ "binop": null, "updateContext": null }, - "start": 16954, - "end": 16955, + "start": 20528, + "end": 20529, "loc": { "start": { - "line": 335, + "line": 408, "column": 35 }, "end": { - "line": 335, + "line": 408, "column": 36 } } @@ -39853,15 +39853,15 @@ "binop": null }, "value": "createEntity", - "start": 16955, - "end": 16967, + "start": 20529, + "end": 20541, "loc": { "start": { - "line": 335, + "line": 408, "column": 36 }, "end": { - "line": 335, + "line": 408, "column": 48 } } @@ -39879,15 +39879,15 @@ "binop": null, "updateContext": null }, - "start": 16967, - "end": 16968, + "start": 20541, + "end": 20542, "loc": { "start": { - "line": 335, + "line": 408, "column": 48 }, "end": { - "line": 335, + "line": 408, "column": 49 } } @@ -39905,15 +39905,15 @@ "binop": null }, "value": "colorize", - "start": 16968, - "end": 16976, + "start": 20542, + "end": 20550, "loc": { "start": { - "line": 335, + "line": 408, "column": 49 }, "end": { - "line": 335, + "line": 408, "column": 57 } } @@ -39932,15 +39932,15 @@ "updateContext": null }, "value": "=", - "start": 16977, - "end": 16978, + "start": 20551, + "end": 20552, "loc": { "start": { - "line": 335, + "line": 408, "column": 58 }, "end": { - "line": 335, + "line": 408, "column": 59 } } @@ -39958,15 +39958,15 @@ "binop": null }, "value": "props", - "start": 16979, - "end": 16984, + "start": 20553, + "end": 20558, "loc": { "start": { - "line": 335, + "line": 408, "column": 60 }, "end": { - "line": 335, + "line": 408, "column": 65 } } @@ -39984,15 +39984,15 @@ "binop": null, "updateContext": null }, - "start": 16984, - "end": 16985, + "start": 20558, + "end": 20559, "loc": { "start": { - "line": 335, + "line": 408, "column": 65 }, "end": { - "line": 335, + "line": 408, "column": 66 } } @@ -40010,15 +40010,15 @@ "binop": null }, "value": "colorize", - "start": 16985, - "end": 16993, + "start": 20559, + "end": 20567, "loc": { "start": { - "line": 335, + "line": 408, "column": 66 }, "end": { - "line": 335, + "line": 408, "column": 74 } } @@ -40036,15 +40036,15 @@ "binop": null, "updateContext": null }, - "start": 16993, - "end": 16994, + "start": 20567, + "end": 20568, "loc": { "start": { - "line": 335, + "line": 408, "column": 74 }, "end": { - "line": 335, + "line": 408, "column": 75 } } @@ -40061,15 +40061,15 @@ "postfix": false, "binop": null }, - "start": 17019, - "end": 17020, + "start": 20593, + "end": 20594, "loc": { "start": { - "line": 336, + "line": 409, "column": 24 }, "end": { - "line": 336, + "line": 409, "column": 25 } } @@ -40089,15 +40089,15 @@ "updateContext": null }, "value": "if", - "start": 17046, - "end": 17048, + "start": 20620, + "end": 20622, "loc": { "start": { - "line": 338, + "line": 411, "column": 24 }, "end": { - "line": 338, + "line": 411, "column": 26 } } @@ -40114,15 +40114,15 @@ "postfix": false, "binop": null }, - "start": 17049, - "end": 17050, + "start": 20623, + "end": 20624, "loc": { "start": { - "line": 338, + "line": 411, "column": 27 }, "end": { - "line": 338, + "line": 411, "column": 28 } } @@ -40140,15 +40140,15 @@ "binop": null }, "value": "props", - "start": 17050, - "end": 17055, + "start": 20624, + "end": 20629, "loc": { "start": { - "line": 338, + "line": 411, "column": 28 }, "end": { - "line": 338, + "line": 411, "column": 33 } } @@ -40166,15 +40166,15 @@ "binop": null, "updateContext": null }, - "start": 17055, - "end": 17056, + "start": 20629, + "end": 20630, "loc": { "start": { - "line": 338, + "line": 411, "column": 33 }, "end": { - "line": 338, + "line": 411, "column": 34 } } @@ -40192,15 +40192,15 @@ "binop": null }, "value": "pickable", - "start": 17056, - "end": 17064, + "start": 20630, + "end": 20638, "loc": { "start": { - "line": 338, + "line": 411, "column": 34 }, "end": { - "line": 338, + "line": 411, "column": 42 } } @@ -40219,15 +40219,15 @@ "updateContext": null }, "value": "===", - "start": 17065, - "end": 17068, + "start": 20639, + "end": 20642, "loc": { "start": { - "line": 338, + "line": 411, "column": 43 }, "end": { - "line": 338, + "line": 411, "column": 46 } } @@ -40247,15 +40247,15 @@ "updateContext": null }, "value": "false", - "start": 17069, - "end": 17074, + "start": 20643, + "end": 20648, "loc": { "start": { - "line": 338, + "line": 411, "column": 47 }, "end": { - "line": 338, + "line": 411, "column": 52 } } @@ -40272,15 +40272,15 @@ "postfix": false, "binop": null }, - "start": 17074, - "end": 17075, + "start": 20648, + "end": 20649, "loc": { "start": { - "line": 338, + "line": 411, "column": 52 }, "end": { - "line": 338, + "line": 411, "column": 53 } } @@ -40297,15 +40297,15 @@ "postfix": false, "binop": null }, - "start": 17076, - "end": 17077, + "start": 20650, + "end": 20651, "loc": { "start": { - "line": 338, + "line": 411, "column": 54 }, "end": { - "line": 338, + "line": 411, "column": 55 } } @@ -40323,15 +40323,15 @@ "binop": null }, "value": "actions", - "start": 17106, - "end": 17113, + "start": 20680, + "end": 20687, "loc": { "start": { - "line": 339, + "line": 412, "column": 28 }, "end": { - "line": 339, + "line": 412, "column": 35 } } @@ -40349,15 +40349,15 @@ "binop": null, "updateContext": null }, - "start": 17113, - "end": 17114, + "start": 20687, + "end": 20688, "loc": { "start": { - "line": 339, + "line": 412, "column": 35 }, "end": { - "line": 339, + "line": 412, "column": 36 } } @@ -40375,15 +40375,15 @@ "binop": null }, "value": "createEntity", - "start": 17114, - "end": 17126, + "start": 20688, + "end": 20700, "loc": { "start": { - "line": 339, + "line": 412, "column": 36 }, "end": { - "line": 339, + "line": 412, "column": 48 } } @@ -40401,15 +40401,15 @@ "binop": null, "updateContext": null }, - "start": 17126, - "end": 17127, + "start": 20700, + "end": 20701, "loc": { "start": { - "line": 339, + "line": 412, "column": 48 }, "end": { - "line": 339, + "line": 412, "column": 49 } } @@ -40427,15 +40427,15 @@ "binop": null }, "value": "pickable", - "start": 17127, - "end": 17135, + "start": 20701, + "end": 20709, "loc": { "start": { - "line": 339, + "line": 412, "column": 49 }, "end": { - "line": 339, + "line": 412, "column": 57 } } @@ -40454,15 +40454,15 @@ "updateContext": null }, "value": "=", - "start": 17136, - "end": 17137, + "start": 20710, + "end": 20711, "loc": { "start": { - "line": 339, + "line": 412, "column": 58 }, "end": { - "line": 339, + "line": 412, "column": 59 } } @@ -40482,15 +40482,15 @@ "updateContext": null }, "value": "false", - "start": 17138, - "end": 17143, + "start": 20712, + "end": 20717, "loc": { "start": { - "line": 339, + "line": 412, "column": 60 }, "end": { - "line": 339, + "line": 412, "column": 65 } } @@ -40508,15 +40508,15 @@ "binop": null, "updateContext": null }, - "start": 17143, - "end": 17144, + "start": 20717, + "end": 20718, "loc": { "start": { - "line": 339, + "line": 412, "column": 65 }, "end": { - "line": 339, + "line": 412, "column": 66 } } @@ -40533,15 +40533,15 @@ "postfix": false, "binop": null }, - "start": 17169, - "end": 17170, + "start": 20743, + "end": 20744, "loc": { "start": { - "line": 340, + "line": 413, "column": 24 }, "end": { - "line": 340, + "line": 413, "column": 25 } } @@ -40561,15 +40561,15 @@ "updateContext": null }, "value": "if", - "start": 17196, - "end": 17198, + "start": 20770, + "end": 20772, "loc": { "start": { - "line": 342, + "line": 415, "column": 24 }, "end": { - "line": 342, + "line": 415, "column": 26 } } @@ -40586,15 +40586,15 @@ "postfix": false, "binop": null }, - "start": 17199, - "end": 17200, + "start": 20773, + "end": 20774, "loc": { "start": { - "line": 342, + "line": 415, "column": 27 }, "end": { - "line": 342, + "line": 415, "column": 28 } } @@ -40612,15 +40612,15 @@ "binop": null }, "value": "props", - "start": 17200, - "end": 17205, + "start": 20774, + "end": 20779, "loc": { "start": { - "line": 342, + "line": 415, "column": 28 }, "end": { - "line": 342, + "line": 415, "column": 33 } } @@ -40638,15 +40638,15 @@ "binop": null, "updateContext": null }, - "start": 17205, - "end": 17206, + "start": 20779, + "end": 20780, "loc": { "start": { - "line": 342, + "line": 415, "column": 33 }, "end": { - "line": 342, + "line": 415, "column": 34 } } @@ -40664,15 +40664,15 @@ "binop": null }, "value": "opacity", - "start": 17206, - "end": 17213, + "start": 20780, + "end": 20787, "loc": { "start": { - "line": 342, + "line": 415, "column": 34 }, "end": { - "line": 342, + "line": 415, "column": 41 } } @@ -40691,15 +40691,15 @@ "updateContext": null }, "value": "!==", - "start": 17214, - "end": 17217, + "start": 20788, + "end": 20791, "loc": { "start": { - "line": 342, + "line": 415, "column": 42 }, "end": { - "line": 342, + "line": 415, "column": 45 } } @@ -40717,15 +40717,15 @@ "binop": null }, "value": "undefined", - "start": 17218, - "end": 17227, + "start": 20792, + "end": 20801, "loc": { "start": { - "line": 342, + "line": 415, "column": 46 }, "end": { - "line": 342, + "line": 415, "column": 55 } } @@ -40744,15 +40744,15 @@ "updateContext": null }, "value": "&&", - "start": 17228, - "end": 17230, + "start": 20802, + "end": 20804, "loc": { "start": { - "line": 342, + "line": 415, "column": 56 }, "end": { - "line": 342, + "line": 415, "column": 58 } } @@ -40770,15 +40770,15 @@ "binop": null }, "value": "props", - "start": 17231, - "end": 17236, + "start": 20805, + "end": 20810, "loc": { "start": { - "line": 342, + "line": 415, "column": 59 }, "end": { - "line": 342, + "line": 415, "column": 64 } } @@ -40796,15 +40796,15 @@ "binop": null, "updateContext": null }, - "start": 17236, - "end": 17237, + "start": 20810, + "end": 20811, "loc": { "start": { - "line": 342, + "line": 415, "column": 64 }, "end": { - "line": 342, + "line": 415, "column": 65 } } @@ -40822,15 +40822,15 @@ "binop": null }, "value": "opacity", - "start": 17237, - "end": 17244, + "start": 20811, + "end": 20818, "loc": { "start": { - "line": 342, + "line": 415, "column": 65 }, "end": { - "line": 342, + "line": 415, "column": 72 } } @@ -40849,15 +40849,15 @@ "updateContext": null }, "value": "!==", - "start": 17245, - "end": 17248, + "start": 20819, + "end": 20822, "loc": { "start": { - "line": 342, + "line": 415, "column": 73 }, "end": { - "line": 342, + "line": 415, "column": 76 } } @@ -40877,15 +40877,15 @@ "updateContext": null }, "value": "null", - "start": 17249, - "end": 17253, + "start": 20823, + "end": 20827, "loc": { "start": { - "line": 342, + "line": 415, "column": 77 }, "end": { - "line": 342, + "line": 415, "column": 81 } } @@ -40902,15 +40902,15 @@ "postfix": false, "binop": null }, - "start": 17253, - "end": 17254, + "start": 20827, + "end": 20828, "loc": { "start": { - "line": 342, + "line": 415, "column": 81 }, "end": { - "line": 342, + "line": 415, "column": 82 } } @@ -40927,15 +40927,15 @@ "postfix": false, "binop": null }, - "start": 17255, - "end": 17256, + "start": 20829, + "end": 20830, "loc": { "start": { - "line": 342, + "line": 415, "column": 83 }, "end": { - "line": 342, + "line": 415, "column": 84 } } @@ -40953,15 +40953,15 @@ "binop": null }, "value": "actions", - "start": 17285, - "end": 17292, + "start": 20859, + "end": 20866, "loc": { "start": { - "line": 343, + "line": 416, "column": 28 }, "end": { - "line": 343, + "line": 416, "column": 35 } } @@ -40979,15 +40979,15 @@ "binop": null, "updateContext": null }, - "start": 17292, - "end": 17293, + "start": 20866, + "end": 20867, "loc": { "start": { - "line": 343, + "line": 416, "column": 35 }, "end": { - "line": 343, + "line": 416, "column": 36 } } @@ -41005,15 +41005,15 @@ "binop": null }, "value": "createEntity", - "start": 17293, - "end": 17305, + "start": 20867, + "end": 20879, "loc": { "start": { - "line": 343, + "line": 416, "column": 36 }, "end": { - "line": 343, + "line": 416, "column": 48 } } @@ -41031,15 +41031,15 @@ "binop": null, "updateContext": null }, - "start": 17305, - "end": 17306, + "start": 20879, + "end": 20880, "loc": { "start": { - "line": 343, + "line": 416, "column": 48 }, "end": { - "line": 343, + "line": 416, "column": 49 } } @@ -41057,15 +41057,15 @@ "binop": null }, "value": "opacity", - "start": 17306, - "end": 17313, + "start": 20880, + "end": 20887, "loc": { "start": { - "line": 343, + "line": 416, "column": 49 }, "end": { - "line": 343, + "line": 416, "column": 56 } } @@ -41084,15 +41084,15 @@ "updateContext": null }, "value": "=", - "start": 17314, - "end": 17315, + "start": 20888, + "end": 20889, "loc": { "start": { - "line": 343, + "line": 416, "column": 57 }, "end": { - "line": 343, + "line": 416, "column": 58 } } @@ -41110,15 +41110,15 @@ "binop": null }, "value": "props", - "start": 17316, - "end": 17321, + "start": 20890, + "end": 20895, "loc": { "start": { - "line": 343, + "line": 416, "column": 59 }, "end": { - "line": 343, + "line": 416, "column": 64 } } @@ -41136,15 +41136,15 @@ "binop": null, "updateContext": null }, - "start": 17321, - "end": 17322, + "start": 20895, + "end": 20896, "loc": { "start": { - "line": 343, + "line": 416, "column": 64 }, "end": { - "line": 343, + "line": 416, "column": 65 } } @@ -41162,15 +41162,15 @@ "binop": null }, "value": "opacity", - "start": 17322, - "end": 17329, + "start": 20896, + "end": 20903, "loc": { "start": { - "line": 343, + "line": 416, "column": 65 }, "end": { - "line": 343, + "line": 416, "column": 72 } } @@ -41188,15 +41188,15 @@ "binop": null, "updateContext": null }, - "start": 17329, - "end": 17330, + "start": 20903, + "end": 20904, "loc": { "start": { - "line": 343, + "line": 416, "column": 72 }, "end": { - "line": 343, + "line": 416, "column": 73 } } @@ -41213,15 +41213,15 @@ "postfix": false, "binop": null }, - "start": 17355, - "end": 17356, + "start": 20929, + "end": 20930, "loc": { "start": { - "line": 344, + "line": 417, "column": 24 }, "end": { - "line": 344, + "line": 417, "column": 25 } } @@ -41238,15 +41238,15 @@ "postfix": false, "binop": null }, - "start": 17377, - "end": 17378, + "start": 20951, + "end": 20952, "loc": { "start": { - "line": 345, + "line": 418, "column": 20 }, "end": { - "line": 345, + "line": 418, "column": 21 } } @@ -41266,15 +41266,15 @@ "updateContext": null }, "value": "return", - "start": 17400, - "end": 17406, + "start": 20974, + "end": 20980, "loc": { "start": { - "line": 347, + "line": 420, "column": 20 }, "end": { - "line": 347, + "line": 420, "column": 26 } } @@ -41294,15 +41294,15 @@ "updateContext": null }, "value": "true", - "start": 17407, - "end": 17411, + "start": 20981, + "end": 20985, "loc": { "start": { - "line": 347, + "line": 420, "column": 27 }, "end": { - "line": 347, + "line": 420, "column": 31 } } @@ -41320,15 +41320,15 @@ "binop": null, "updateContext": null }, - "start": 17411, - "end": 17412, + "start": 20985, + "end": 20986, "loc": { "start": { - "line": 347, + "line": 420, "column": 31 }, "end": { - "line": 347, + "line": 420, "column": 32 } } @@ -41336,15 +41336,15 @@ { "type": "CommentLine", "value": " Continue descending this glTF node subtree", - "start": 17413, - "end": 17458, + "start": 20987, + "end": 21032, "loc": { "start": { - "line": 347, + "line": 420, "column": 33 }, "end": { - "line": 347, + "line": 420, "column": 78 } } @@ -41361,15 +41361,15 @@ "postfix": false, "binop": null }, - "start": 17475, - "end": 17476, + "start": 21049, + "end": 21050, "loc": { "start": { - "line": 348, + "line": 421, "column": 16 }, "end": { - "line": 348, + "line": 421, "column": 17 } } @@ -41387,15 +41387,15 @@ "binop": null, "updateContext": null }, - "start": 17476, - "end": 17477, + "start": 21050, + "end": 21051, "loc": { "start": { - "line": 348, + "line": 421, "column": 17 }, "end": { - "line": 348, + "line": 421, "column": 18 } } @@ -41415,15 +41415,15 @@ "updateContext": null }, "value": "if", - "start": 17495, - "end": 17497, + "start": 21069, + "end": 21071, "loc": { "start": { - "line": 350, + "line": 423, "column": 16 }, "end": { - "line": 350, + "line": 423, "column": 18 } } @@ -41440,15 +41440,15 @@ "postfix": false, "binop": null }, - "start": 17498, - "end": 17499, + "start": 21072, + "end": 21073, "loc": { "start": { - "line": 350, + "line": 423, "column": 19 }, "end": { - "line": 350, + "line": 423, "column": 20 } } @@ -41466,15 +41466,15 @@ "binop": null }, "value": "params", - "start": 17499, - "end": 17505, + "start": 21073, + "end": 21079, "loc": { "start": { - "line": 350, + "line": 423, "column": 20 }, "end": { - "line": 350, + "line": 423, "column": 26 } } @@ -41492,15 +41492,15 @@ "binop": null, "updateContext": null }, - "start": 17505, - "end": 17506, + "start": 21079, + "end": 21080, "loc": { "start": { - "line": 350, + "line": 423, "column": 26 }, "end": { - "line": 350, + "line": 423, "column": 27 } } @@ -41518,15 +41518,15 @@ "binop": null }, "value": "src", - "start": 17506, - "end": 17509, + "start": 21080, + "end": 21083, "loc": { "start": { - "line": 350, + "line": 423, "column": 27 }, "end": { - "line": 350, + "line": 423, "column": 30 } } @@ -41543,15 +41543,15 @@ "postfix": false, "binop": null }, - "start": 17509, - "end": 17510, + "start": 21083, + "end": 21084, "loc": { "start": { - "line": 350, + "line": 423, "column": 30 }, "end": { - "line": 350, + "line": 423, "column": 31 } } @@ -41568,15 +41568,15 @@ "postfix": false, "binop": null }, - "start": 17511, - "end": 17512, + "start": 21085, + "end": 21086, "loc": { "start": { - "line": 350, + "line": 423, "column": 32 }, "end": { - "line": 350, + "line": 423, "column": 33 } } @@ -41596,15 +41596,15 @@ "updateContext": null }, "value": "this", - "start": 17533, - "end": 17537, + "start": 21107, + "end": 21111, "loc": { "start": { - "line": 351, + "line": 424, "column": 20 }, "end": { - "line": 351, + "line": 424, "column": 24 } } @@ -41622,15 +41622,15 @@ "binop": null, "updateContext": null }, - "start": 17537, - "end": 17538, + "start": 21111, + "end": 21112, "loc": { "start": { - "line": 351, + "line": 424, "column": 24 }, "end": { - "line": 351, + "line": 424, "column": 25 } } @@ -41648,15 +41648,15 @@ "binop": null }, "value": "_sceneModelLoader", - "start": 17538, - "end": 17555, + "start": 21112, + "end": 21129, "loc": { "start": { - "line": 351, + "line": 424, "column": 25 }, "end": { - "line": 351, + "line": 424, "column": 42 } } @@ -41674,15 +41674,15 @@ "binop": null, "updateContext": null }, - "start": 17555, - "end": 17556, + "start": 21129, + "end": 21130, "loc": { "start": { - "line": 351, + "line": 424, "column": 42 }, "end": { - "line": 351, + "line": 424, "column": 43 } } @@ -41700,15 +41700,15 @@ "binop": null }, "value": "load", - "start": 17556, - "end": 17560, + "start": 21130, + "end": 21134, "loc": { "start": { - "line": 351, + "line": 424, "column": 43 }, "end": { - "line": 351, + "line": 424, "column": 47 } } @@ -41725,15 +41725,15 @@ "postfix": false, "binop": null }, - "start": 17560, - "end": 17561, + "start": 21134, + "end": 21135, "loc": { "start": { - "line": 351, + "line": 424, "column": 47 }, "end": { - "line": 351, + "line": 424, "column": 48 } } @@ -41753,15 +41753,15 @@ "updateContext": null }, "value": "this", - "start": 17561, - "end": 17565, + "start": 21135, + "end": 21139, "loc": { "start": { - "line": 351, + "line": 424, "column": 48 }, "end": { - "line": 351, + "line": 424, "column": 52 } } @@ -41779,15 +41779,15 @@ "binop": null, "updateContext": null }, - "start": 17565, - "end": 17566, + "start": 21139, + "end": 21140, "loc": { "start": { - "line": 351, + "line": 424, "column": 52 }, "end": { - "line": 351, + "line": 424, "column": 53 } } @@ -41805,15 +41805,15 @@ "binop": null }, "value": "params", - "start": 17567, - "end": 17573, + "start": 21141, + "end": 21147, "loc": { "start": { - "line": 351, + "line": 424, "column": 54 }, "end": { - "line": 351, + "line": 424, "column": 60 } } @@ -41831,15 +41831,15 @@ "binop": null, "updateContext": null }, - "start": 17573, - "end": 17574, + "start": 21147, + "end": 21148, "loc": { "start": { - "line": 351, + "line": 424, "column": 60 }, "end": { - "line": 351, + "line": 424, "column": 61 } } @@ -41857,15 +41857,15 @@ "binop": null }, "value": "src", - "start": 17574, - "end": 17577, + "start": 21148, + "end": 21151, "loc": { "start": { - "line": 351, + "line": 424, "column": 61 }, "end": { - "line": 351, + "line": 424, "column": 64 } } @@ -41883,15 +41883,15 @@ "binop": null, "updateContext": null }, - "start": 17577, - "end": 17578, + "start": 21151, + "end": 21152, "loc": { "start": { - "line": 351, + "line": 424, "column": 64 }, "end": { - "line": 351, + "line": 424, "column": 65 } } @@ -41909,15 +41909,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 17579, - "end": 17592, + "start": 21153, + "end": 21166, "loc": { "start": { - "line": 351, + "line": 424, "column": 66 }, "end": { - "line": 351, + "line": 424, "column": 79 } } @@ -41935,15 +41935,15 @@ "binop": null, "updateContext": null }, - "start": 17592, - "end": 17593, + "start": 21166, + "end": 21167, "loc": { "start": { - "line": 351, + "line": 424, "column": 79 }, "end": { - "line": 351, + "line": 424, "column": 80 } } @@ -41961,15 +41961,15 @@ "binop": null }, "value": "params", - "start": 17594, - "end": 17600, + "start": 21168, + "end": 21174, "loc": { "start": { - "line": 351, + "line": 424, "column": 81 }, "end": { - "line": 351, + "line": 424, "column": 87 } } @@ -41987,15 +41987,15 @@ "binop": null, "updateContext": null }, - "start": 17600, - "end": 17601, + "start": 21174, + "end": 21175, "loc": { "start": { - "line": 351, + "line": 424, "column": 87 }, "end": { - "line": 351, + "line": 424, "column": 88 } } @@ -42013,15 +42013,15 @@ "binop": null }, "value": "sceneModel", - "start": 17602, - "end": 17612, + "start": 21176, + "end": 21186, "loc": { "start": { - "line": 351, + "line": 424, "column": 89 }, "end": { - "line": 351, + "line": 424, "column": 99 } } @@ -42038,15 +42038,15 @@ "postfix": false, "binop": null }, - "start": 17612, - "end": 17613, + "start": 21186, + "end": 21187, "loc": { "start": { - "line": 351, + "line": 424, "column": 99 }, "end": { - "line": 351, + "line": 424, "column": 100 } } @@ -42064,15 +42064,15 @@ "binop": null, "updateContext": null }, - "start": 17613, - "end": 17614, + "start": 21187, + "end": 21188, "loc": { "start": { - "line": 351, + "line": 424, "column": 100 }, "end": { - "line": 351, + "line": 424, "column": 101 } } @@ -42089,15 +42089,15 @@ "postfix": false, "binop": null }, - "start": 17631, - "end": 17632, + "start": 21205, + "end": 21206, "loc": { "start": { - "line": 352, + "line": 425, "column": 16 }, "end": { - "line": 352, + "line": 425, "column": 17 } } @@ -42117,15 +42117,15 @@ "updateContext": null }, "value": "else", - "start": 17633, - "end": 17637, + "start": 21207, + "end": 21211, "loc": { "start": { - "line": 352, + "line": 425, "column": 18 }, "end": { - "line": 352, + "line": 425, "column": 22 } } @@ -42142,15 +42142,15 @@ "postfix": false, "binop": null }, - "start": 17638, - "end": 17639, + "start": 21212, + "end": 21213, "loc": { "start": { - "line": 352, + "line": 425, "column": 23 }, "end": { - "line": 352, + "line": 425, "column": 24 } } @@ -42170,15 +42170,15 @@ "updateContext": null }, "value": "this", - "start": 17660, - "end": 17664, + "start": 21234, + "end": 21238, "loc": { "start": { - "line": 353, + "line": 426, "column": 20 }, "end": { - "line": 353, + "line": 426, "column": 24 } } @@ -42196,15 +42196,15 @@ "binop": null, "updateContext": null }, - "start": 17664, - "end": 17665, + "start": 21238, + "end": 21239, "loc": { "start": { - "line": 353, + "line": 426, "column": 24 }, "end": { - "line": 353, + "line": 426, "column": 25 } } @@ -42222,15 +42222,15 @@ "binop": null }, "value": "_sceneModelLoader", - "start": 17665, - "end": 17682, + "start": 21239, + "end": 21256, "loc": { "start": { - "line": 353, + "line": 426, "column": 25 }, "end": { - "line": 353, + "line": 426, "column": 42 } } @@ -42248,15 +42248,15 @@ "binop": null, "updateContext": null }, - "start": 17682, - "end": 17683, + "start": 21256, + "end": 21257, "loc": { "start": { - "line": 353, + "line": 426, "column": 42 }, "end": { - "line": 353, + "line": 426, "column": 43 } } @@ -42274,15 +42274,15 @@ "binop": null }, "value": "parse", - "start": 17683, - "end": 17688, + "start": 21257, + "end": 21262, "loc": { "start": { - "line": 353, + "line": 426, "column": 43 }, "end": { - "line": 353, + "line": 426, "column": 48 } } @@ -42299,15 +42299,15 @@ "postfix": false, "binop": null }, - "start": 17688, - "end": 17689, + "start": 21262, + "end": 21263, "loc": { "start": { - "line": 353, + "line": 426, "column": 48 }, "end": { - "line": 353, + "line": 426, "column": 49 } } @@ -42327,15 +42327,15 @@ "updateContext": null }, "value": "this", - "start": 17689, - "end": 17693, + "start": 21263, + "end": 21267, "loc": { "start": { - "line": 353, + "line": 426, "column": 49 }, "end": { - "line": 353, + "line": 426, "column": 53 } } @@ -42353,15 +42353,15 @@ "binop": null, "updateContext": null }, - "start": 17693, - "end": 17694, + "start": 21267, + "end": 21268, "loc": { "start": { - "line": 353, + "line": 426, "column": 53 }, "end": { - "line": 353, + "line": 426, "column": 54 } } @@ -42379,15 +42379,15 @@ "binop": null }, "value": "params", - "start": 17695, - "end": 17701, + "start": 21269, + "end": 21275, "loc": { "start": { - "line": 353, + "line": 426, "column": 55 }, "end": { - "line": 353, + "line": 426, "column": 61 } } @@ -42405,15 +42405,15 @@ "binop": null, "updateContext": null }, - "start": 17701, - "end": 17702, + "start": 21275, + "end": 21276, "loc": { "start": { - "line": 353, + "line": 426, "column": 61 }, "end": { - "line": 353, + "line": 426, "column": 62 } } @@ -42431,15 +42431,15 @@ "binop": null }, "value": "gltf", - "start": 17702, - "end": 17706, + "start": 21276, + "end": 21280, "loc": { "start": { - "line": 353, + "line": 426, "column": 62 }, "end": { - "line": 353, + "line": 426, "column": 66 } } @@ -42457,15 +42457,15 @@ "binop": null, "updateContext": null }, - "start": 17706, - "end": 17707, + "start": 21280, + "end": 21281, "loc": { "start": { - "line": 353, + "line": 426, "column": 66 }, "end": { - "line": 353, + "line": 426, "column": 67 } } @@ -42483,15 +42483,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 17708, - "end": 17721, + "start": 21282, + "end": 21295, "loc": { "start": { - "line": 353, + "line": 426, "column": 68 }, "end": { - "line": 353, + "line": 426, "column": 81 } } @@ -42509,15 +42509,15 @@ "binop": null, "updateContext": null }, - "start": 17721, - "end": 17722, + "start": 21295, + "end": 21296, "loc": { "start": { - "line": 353, + "line": 426, "column": 81 }, "end": { - "line": 353, + "line": 426, "column": 82 } } @@ -42535,15 +42535,15 @@ "binop": null }, "value": "params", - "start": 17723, - "end": 17729, + "start": 21297, + "end": 21303, "loc": { "start": { - "line": 353, + "line": 426, "column": 83 }, "end": { - "line": 353, + "line": 426, "column": 89 } } @@ -42561,15 +42561,15 @@ "binop": null, "updateContext": null }, - "start": 17729, - "end": 17730, + "start": 21303, + "end": 21304, "loc": { "start": { - "line": 353, + "line": 426, "column": 89 }, "end": { - "line": 353, + "line": 426, "column": 90 } } @@ -42587,15 +42587,15 @@ "binop": null }, "value": "sceneModel", - "start": 17731, - "end": 17741, + "start": 21305, + "end": 21315, "loc": { "start": { - "line": 353, + "line": 426, "column": 91 }, "end": { - "line": 353, + "line": 426, "column": 101 } } @@ -42612,15 +42612,15 @@ "postfix": false, "binop": null }, - "start": 17741, - "end": 17742, + "start": 21315, + "end": 21316, "loc": { "start": { - "line": 353, + "line": 426, "column": 101 }, "end": { - "line": 353, + "line": 426, "column": 102 } } @@ -42638,15 +42638,15 @@ "binop": null, "updateContext": null }, - "start": 17742, - "end": 17743, + "start": 21316, + "end": 21317, "loc": { "start": { - "line": 353, + "line": 426, "column": 102 }, "end": { - "line": 353, + "line": 426, "column": 103 } } @@ -42663,15 +42663,15 @@ "postfix": false, "binop": null }, - "start": 17760, - "end": 17761, + "start": 21334, + "end": 21335, "loc": { "start": { - "line": 354, + "line": 427, "column": 16 }, "end": { - "line": 354, + "line": 427, "column": 17 } } @@ -42688,15 +42688,15 @@ "postfix": false, "binop": null }, - "start": 17774, - "end": 17775, + "start": 21348, + "end": 21349, "loc": { "start": { - "line": 355, + "line": 428, "column": 12 }, "end": { - "line": 355, + "line": 428, "column": 13 } } @@ -42714,15 +42714,15 @@ "binop": null, "updateContext": null }, - "start": 17775, - "end": 17776, + "start": 21349, + "end": 21350, "loc": { "start": { - "line": 355, + "line": 428, "column": 13 }, "end": { - "line": 355, + "line": 428, "column": 14 } } @@ -42742,15 +42742,15 @@ "updateContext": null }, "value": "if", - "start": 17790, - "end": 17792, + "start": 21364, + "end": 21366, "loc": { "start": { - "line": 357, + "line": 430, "column": 12 }, "end": { - "line": 357, + "line": 430, "column": 14 } } @@ -42767,15 +42767,15 @@ "postfix": false, "binop": null }, - "start": 17793, - "end": 17794, + "start": 21367, + "end": 21368, "loc": { "start": { - "line": 357, + "line": 430, "column": 15 }, "end": { - "line": 357, + "line": 430, "column": 16 } } @@ -42793,15 +42793,15 @@ "binop": null }, "value": "params", - "start": 17794, - "end": 17800, + "start": 21368, + "end": 21374, "loc": { "start": { - "line": 357, + "line": 430, "column": 16 }, "end": { - "line": 357, + "line": 430, "column": 22 } } @@ -42819,15 +42819,15 @@ "binop": null, "updateContext": null }, - "start": 17800, - "end": 17801, + "start": 21374, + "end": 21375, "loc": { "start": { - "line": 357, + "line": 430, "column": 22 }, "end": { - "line": 357, + "line": 430, "column": 23 } } @@ -42845,15 +42845,15 @@ "binop": null }, "value": "metaModelSrc", - "start": 17801, - "end": 17813, + "start": 21375, + "end": 21387, "loc": { "start": { - "line": 357, + "line": 430, "column": 23 }, "end": { - "line": 357, + "line": 430, "column": 35 } } @@ -42870,15 +42870,15 @@ "postfix": false, "binop": null }, - "start": 17813, - "end": 17814, + "start": 21387, + "end": 21388, "loc": { "start": { - "line": 357, + "line": 430, "column": 35 }, "end": { - "line": 357, + "line": 430, "column": 36 } } @@ -42895,15 +42895,15 @@ "postfix": false, "binop": null }, - "start": 17815, - "end": 17816, + "start": 21389, + "end": 21390, "loc": { "start": { - "line": 357, + "line": 430, "column": 37 }, "end": { - "line": 357, + "line": 430, "column": 38 } } @@ -42923,15 +42923,15 @@ "updateContext": null }, "value": "const", - "start": 17834, - "end": 17839, + "start": 21408, + "end": 21413, "loc": { "start": { - "line": 359, + "line": 432, "column": 16 }, "end": { - "line": 359, + "line": 432, "column": 21 } } @@ -42949,15 +42949,15 @@ "binop": null }, "value": "metaModelSrc", - "start": 17840, - "end": 17852, + "start": 21414, + "end": 21426, "loc": { "start": { - "line": 359, + "line": 432, "column": 22 }, "end": { - "line": 359, + "line": 432, "column": 34 } } @@ -42976,15 +42976,15 @@ "updateContext": null }, "value": "=", - "start": 17853, - "end": 17854, + "start": 21427, + "end": 21428, "loc": { "start": { - "line": 359, + "line": 432, "column": 35 }, "end": { - "line": 359, + "line": 432, "column": 36 } } @@ -43002,15 +43002,15 @@ "binop": null }, "value": "params", - "start": 17855, - "end": 17861, + "start": 21429, + "end": 21435, "loc": { "start": { - "line": 359, + "line": 432, "column": 37 }, "end": { - "line": 359, + "line": 432, "column": 43 } } @@ -43028,15 +43028,15 @@ "binop": null, "updateContext": null }, - "start": 17861, - "end": 17862, + "start": 21435, + "end": 21436, "loc": { "start": { - "line": 359, + "line": 432, "column": 43 }, "end": { - "line": 359, + "line": 432, "column": 44 } } @@ -43054,15 +43054,15 @@ "binop": null }, "value": "metaModelSrc", - "start": 17862, - "end": 17874, + "start": 21436, + "end": 21448, "loc": { "start": { - "line": 359, + "line": 432, "column": 44 }, "end": { - "line": 359, + "line": 432, "column": 56 } } @@ -43080,15 +43080,15 @@ "binop": null, "updateContext": null }, - "start": 17874, - "end": 17875, + "start": 21448, + "end": 21449, "loc": { "start": { - "line": 359, + "line": 432, "column": 56 }, "end": { - "line": 359, + "line": 432, "column": 57 } } @@ -43108,15 +43108,15 @@ "updateContext": null }, "value": "this", - "start": 17893, - "end": 17897, + "start": 21467, + "end": 21471, "loc": { "start": { - "line": 361, + "line": 434, "column": 16 }, "end": { - "line": 361, + "line": 434, "column": 20 } } @@ -43134,15 +43134,15 @@ "binop": null, "updateContext": null }, - "start": 17897, - "end": 17898, + "start": 21471, + "end": 21472, "loc": { "start": { - "line": 361, + "line": 434, "column": 20 }, "end": { - "line": 361, + "line": 434, "column": 21 } } @@ -43160,15 +43160,15 @@ "binop": null }, "value": "viewer", - "start": 17898, - "end": 17904, + "start": 21472, + "end": 21478, "loc": { "start": { - "line": 361, + "line": 434, "column": 21 }, "end": { - "line": 361, + "line": 434, "column": 27 } } @@ -43186,15 +43186,15 @@ "binop": null, "updateContext": null }, - "start": 17904, - "end": 17905, + "start": 21478, + "end": 21479, "loc": { "start": { - "line": 361, + "line": 434, "column": 27 }, "end": { - "line": 361, + "line": 434, "column": 28 } } @@ -43212,15 +43212,15 @@ "binop": null }, "value": "scene", - "start": 17905, - "end": 17910, + "start": 21479, + "end": 21484, "loc": { "start": { - "line": 361, + "line": 434, "column": 28 }, "end": { - "line": 361, + "line": 434, "column": 33 } } @@ -43238,15 +43238,15 @@ "binop": null, "updateContext": null }, - "start": 17910, - "end": 17911, + "start": 21484, + "end": 21485, "loc": { "start": { - "line": 361, + "line": 434, "column": 33 }, "end": { - "line": 361, + "line": 434, "column": 34 } } @@ -43264,15 +43264,15 @@ "binop": null }, "value": "canvas", - "start": 17911, - "end": 17917, + "start": 21485, + "end": 21491, "loc": { "start": { - "line": 361, + "line": 434, "column": 34 }, "end": { - "line": 361, + "line": 434, "column": 40 } } @@ -43290,15 +43290,15 @@ "binop": null, "updateContext": null }, - "start": 17917, - "end": 17918, + "start": 21491, + "end": 21492, "loc": { "start": { - "line": 361, + "line": 434, "column": 40 }, "end": { - "line": 361, + "line": 434, "column": 41 } } @@ -43316,15 +43316,15 @@ "binop": null }, "value": "spinner", - "start": 17918, - "end": 17925, + "start": 21492, + "end": 21499, "loc": { "start": { - "line": 361, + "line": 434, "column": 41 }, "end": { - "line": 361, + "line": 434, "column": 48 } } @@ -43342,15 +43342,15 @@ "binop": null, "updateContext": null }, - "start": 17925, - "end": 17926, + "start": 21499, + "end": 21500, "loc": { "start": { - "line": 361, + "line": 434, "column": 48 }, "end": { - "line": 361, + "line": 434, "column": 49 } } @@ -43368,15 +43368,15 @@ "binop": null }, "value": "processes", - "start": 17926, - "end": 17935, + "start": 21500, + "end": 21509, "loc": { "start": { - "line": 361, + "line": 434, "column": 49 }, "end": { - "line": 361, + "line": 434, "column": 58 } } @@ -43394,15 +43394,15 @@ "binop": null }, "value": "++", - "start": 17935, - "end": 17937, + "start": 21509, + "end": 21511, "loc": { "start": { - "line": 361, + "line": 434, "column": 58 }, "end": { - "line": 361, + "line": 434, "column": 60 } } @@ -43420,15 +43420,15 @@ "binop": null, "updateContext": null }, - "start": 17937, - "end": 17938, + "start": 21511, + "end": 21512, "loc": { "start": { - "line": 361, + "line": 434, "column": 60 }, "end": { - "line": 361, + "line": 434, "column": 61 } } @@ -43448,15 +43448,15 @@ "updateContext": null }, "value": "this", - "start": 17956, - "end": 17960, + "start": 21530, + "end": 21534, "loc": { "start": { - "line": 363, + "line": 436, "column": 16 }, "end": { - "line": 363, + "line": 436, "column": 20 } } @@ -43474,15 +43474,15 @@ "binop": null, "updateContext": null }, - "start": 17960, - "end": 17961, + "start": 21534, + "end": 21535, "loc": { "start": { - "line": 363, + "line": 436, "column": 20 }, "end": { - "line": 363, + "line": 436, "column": 21 } } @@ -43500,15 +43500,15 @@ "binop": null }, "value": "_dataSource", - "start": 17961, - "end": 17972, + "start": 21535, + "end": 21546, "loc": { "start": { - "line": 363, + "line": 436, "column": 21 }, "end": { - "line": 363, + "line": 436, "column": 32 } } @@ -43526,15 +43526,15 @@ "binop": null, "updateContext": null }, - "start": 17972, - "end": 17973, + "start": 21546, + "end": 21547, "loc": { "start": { - "line": 363, + "line": 436, "column": 32 }, "end": { - "line": 363, + "line": 436, "column": 33 } } @@ -43552,15 +43552,15 @@ "binop": null }, "value": "getMetaModel", - "start": 17973, - "end": 17985, + "start": 21547, + "end": 21559, "loc": { "start": { - "line": 363, + "line": 436, "column": 33 }, "end": { - "line": 363, + "line": 436, "column": 45 } } @@ -43577,15 +43577,15 @@ "postfix": false, "binop": null }, - "start": 17985, - "end": 17986, + "start": 21559, + "end": 21560, "loc": { "start": { - "line": 363, + "line": 436, "column": 45 }, "end": { - "line": 363, + "line": 436, "column": 46 } } @@ -43603,15 +43603,15 @@ "binop": null }, "value": "metaModelSrc", - "start": 17986, - "end": 17998, + "start": 21560, + "end": 21572, "loc": { "start": { - "line": 363, + "line": 436, "column": 46 }, "end": { - "line": 363, + "line": 436, "column": 58 } } @@ -43629,15 +43629,15 @@ "binop": null, "updateContext": null }, - "start": 17998, - "end": 17999, + "start": 21572, + "end": 21573, "loc": { "start": { - "line": 363, + "line": 436, "column": 58 }, "end": { - "line": 363, + "line": 436, "column": 59 } } @@ -43654,15 +43654,15 @@ "postfix": false, "binop": null }, - "start": 18000, - "end": 18001, + "start": 21574, + "end": 21575, "loc": { "start": { - "line": 363, + "line": 436, "column": 60 }, "end": { - "line": 363, + "line": 436, "column": 61 } } @@ -43680,15 +43680,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 18001, - "end": 18014, + "start": 21575, + "end": 21588, "loc": { "start": { - "line": 363, + "line": 436, "column": 61 }, "end": { - "line": 363, + "line": 436, "column": 74 } } @@ -43705,15 +43705,15 @@ "postfix": false, "binop": null }, - "start": 18014, - "end": 18015, + "start": 21588, + "end": 21589, "loc": { "start": { - "line": 363, + "line": 436, "column": 74 }, "end": { - "line": 363, + "line": 436, "column": 75 } } @@ -43731,15 +43731,15 @@ "binop": null, "updateContext": null }, - "start": 18016, - "end": 18018, + "start": 21590, + "end": 21592, "loc": { "start": { - "line": 363, + "line": 436, "column": 76 }, "end": { - "line": 363, + "line": 436, "column": 78 } } @@ -43756,15 +43756,15 @@ "postfix": false, "binop": null }, - "start": 18019, - "end": 18020, + "start": 21593, + "end": 21594, "loc": { "start": { - "line": 363, + "line": 436, "column": 79 }, "end": { - "line": 363, + "line": 436, "column": 80 } } @@ -43784,15 +43784,15 @@ "updateContext": null }, "value": "this", - "start": 18042, - "end": 18046, + "start": 21616, + "end": 21620, "loc": { "start": { - "line": 365, + "line": 438, "column": 20 }, "end": { - "line": 365, + "line": 438, "column": 24 } } @@ -43810,15 +43810,15 @@ "binop": null, "updateContext": null }, - "start": 18046, - "end": 18047, + "start": 21620, + "end": 21621, "loc": { "start": { - "line": 365, + "line": 438, "column": 24 }, "end": { - "line": 365, + "line": 438, "column": 25 } } @@ -43836,15 +43836,15 @@ "binop": null }, "value": "viewer", - "start": 18047, - "end": 18053, + "start": 21621, + "end": 21627, "loc": { "start": { - "line": 365, + "line": 438, "column": 25 }, "end": { - "line": 365, + "line": 438, "column": 31 } } @@ -43862,15 +43862,15 @@ "binop": null, "updateContext": null }, - "start": 18053, - "end": 18054, + "start": 21627, + "end": 21628, "loc": { "start": { - "line": 365, + "line": 438, "column": 31 }, "end": { - "line": 365, + "line": 438, "column": 32 } } @@ -43888,15 +43888,15 @@ "binop": null }, "value": "scene", - "start": 18054, - "end": 18059, + "start": 21628, + "end": 21633, "loc": { "start": { - "line": 365, + "line": 438, "column": 32 }, "end": { - "line": 365, + "line": 438, "column": 37 } } @@ -43914,15 +43914,15 @@ "binop": null, "updateContext": null }, - "start": 18059, - "end": 18060, + "start": 21633, + "end": 21634, "loc": { "start": { - "line": 365, + "line": 438, "column": 37 }, "end": { - "line": 365, + "line": 438, "column": 38 } } @@ -43940,15 +43940,15 @@ "binop": null }, "value": "canvas", - "start": 18060, - "end": 18066, + "start": 21634, + "end": 21640, "loc": { "start": { - "line": 365, + "line": 438, "column": 38 }, "end": { - "line": 365, + "line": 438, "column": 44 } } @@ -43966,15 +43966,15 @@ "binop": null, "updateContext": null }, - "start": 18066, - "end": 18067, + "start": 21640, + "end": 21641, "loc": { "start": { - "line": 365, + "line": 438, "column": 44 }, "end": { - "line": 365, + "line": 438, "column": 45 } } @@ -43992,15 +43992,15 @@ "binop": null }, "value": "spinner", - "start": 18067, - "end": 18074, + "start": 21641, + "end": 21648, "loc": { "start": { - "line": 365, + "line": 438, "column": 45 }, "end": { - "line": 365, + "line": 438, "column": 52 } } @@ -44018,15 +44018,15 @@ "binop": null, "updateContext": null }, - "start": 18074, - "end": 18075, + "start": 21648, + "end": 21649, "loc": { "start": { - "line": 365, + "line": 438, "column": 52 }, "end": { - "line": 365, + "line": 438, "column": 53 } } @@ -44044,15 +44044,15 @@ "binop": null }, "value": "processes", - "start": 18075, - "end": 18084, + "start": 21649, + "end": 21658, "loc": { "start": { - "line": 365, + "line": 438, "column": 53 }, "end": { - "line": 365, + "line": 438, "column": 62 } } @@ -44070,15 +44070,15 @@ "binop": null }, "value": "--", - "start": 18084, - "end": 18086, + "start": 21658, + "end": 21660, "loc": { "start": { - "line": 365, + "line": 438, "column": 62 }, "end": { - "line": 365, + "line": 438, "column": 64 } } @@ -44096,15 +44096,15 @@ "binop": null, "updateContext": null }, - "start": 18086, - "end": 18087, + "start": 21660, + "end": 21661, "loc": { "start": { - "line": 365, + "line": 438, "column": 64 }, "end": { - "line": 365, + "line": 438, "column": 65 } } @@ -44122,15 +44122,15 @@ "binop": null }, "value": "processMetaModelJSON", - "start": 18109, - "end": 18129, + "start": 21683, + "end": 21703, "loc": { "start": { - "line": 367, + "line": 440, "column": 20 }, "end": { - "line": 367, + "line": 440, "column": 40 } } @@ -44147,15 +44147,15 @@ "postfix": false, "binop": null }, - "start": 18129, - "end": 18130, + "start": 21703, + "end": 21704, "loc": { "start": { - "line": 367, + "line": 440, "column": 40 }, "end": { - "line": 367, + "line": 440, "column": 41 } } @@ -44173,15 +44173,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 18130, - "end": 18143, + "start": 21704, + "end": 21717, "loc": { "start": { - "line": 367, + "line": 440, "column": 41 }, "end": { - "line": 367, + "line": 440, "column": 54 } } @@ -44198,15 +44198,15 @@ "postfix": false, "binop": null }, - "start": 18143, - "end": 18144, + "start": 21717, + "end": 21718, "loc": { "start": { - "line": 367, + "line": 440, "column": 54 }, "end": { - "line": 367, + "line": 440, "column": 55 } } @@ -44224,15 +44224,15 @@ "binop": null, "updateContext": null }, - "start": 18144, - "end": 18145, + "start": 21718, + "end": 21719, "loc": { "start": { - "line": 367, + "line": 440, "column": 55 }, "end": { - "line": 367, + "line": 440, "column": 56 } } @@ -44249,15 +44249,15 @@ "postfix": false, "binop": null }, - "start": 18163, - "end": 18164, + "start": 21737, + "end": 21738, "loc": { "start": { - "line": 369, + "line": 442, "column": 16 }, "end": { - "line": 369, + "line": 442, "column": 17 } } @@ -44275,15 +44275,15 @@ "binop": null, "updateContext": null }, - "start": 18164, - "end": 18165, + "start": 21738, + "end": 21739, "loc": { "start": { - "line": 369, + "line": 442, "column": 17 }, "end": { - "line": 369, + "line": 442, "column": 18 } } @@ -44300,15 +44300,15 @@ "postfix": false, "binop": null }, - "start": 18166, - "end": 18167, + "start": 21740, + "end": 21741, "loc": { "start": { - "line": 369, + "line": 442, "column": 19 }, "end": { - "line": 369, + "line": 442, "column": 20 } } @@ -44326,15 +44326,15 @@ "binop": null }, "value": "errMsg", - "start": 18167, - "end": 18173, + "start": 21741, + "end": 21747, "loc": { "start": { - "line": 369, + "line": 442, "column": 20 }, "end": { - "line": 369, + "line": 442, "column": 26 } } @@ -44351,15 +44351,15 @@ "postfix": false, "binop": null }, - "start": 18173, - "end": 18174, + "start": 21747, + "end": 21748, "loc": { "start": { - "line": 369, + "line": 442, "column": 26 }, "end": { - "line": 369, + "line": 442, "column": 27 } } @@ -44377,15 +44377,15 @@ "binop": null, "updateContext": null }, - "start": 18175, - "end": 18177, + "start": 21749, + "end": 21751, "loc": { "start": { - "line": 369, + "line": 442, "column": 28 }, "end": { - "line": 369, + "line": 442, "column": 30 } } @@ -44402,15 +44402,15 @@ "postfix": false, "binop": null }, - "start": 18178, - "end": 18179, + "start": 21752, + "end": 21753, "loc": { "start": { - "line": 369, + "line": 442, "column": 31 }, "end": { - "line": 369, + "line": 442, "column": 32 } } @@ -44430,15 +44430,15 @@ "updateContext": null }, "value": "this", - "start": 18200, - "end": 18204, + "start": 21774, + "end": 21778, "loc": { "start": { - "line": 370, + "line": 443, "column": 20 }, "end": { - "line": 370, + "line": 443, "column": 24 } } @@ -44456,15 +44456,15 @@ "binop": null, "updateContext": null }, - "start": 18204, - "end": 18205, + "start": 21778, + "end": 21779, "loc": { "start": { - "line": 370, + "line": 443, "column": 24 }, "end": { - "line": 370, + "line": 443, "column": 25 } } @@ -44482,15 +44482,15 @@ "binop": null }, "value": "error", - "start": 18205, - "end": 18210, + "start": 21779, + "end": 21784, "loc": { "start": { - "line": 370, + "line": 443, "column": 25 }, "end": { - "line": 370, + "line": 443, "column": 30 } } @@ -44507,15 +44507,15 @@ "postfix": false, "binop": null }, - "start": 18210, - "end": 18211, + "start": 21784, + "end": 21785, "loc": { "start": { - "line": 370, + "line": 443, "column": 30 }, "end": { - "line": 370, + "line": 443, "column": 31 } } @@ -44532,15 +44532,15 @@ "postfix": false, "binop": null }, - "start": 18211, - "end": 18212, + "start": 21785, + "end": 21786, "loc": { "start": { - "line": 370, + "line": 443, "column": 31 }, "end": { - "line": 370, + "line": 443, "column": 32 } } @@ -44559,15 +44559,15 @@ "updateContext": null }, "value": "load(): Failed to load model metadata for model '", - "start": 18212, - "end": 18261, + "start": 21786, + "end": 21835, "loc": { "start": { - "line": 370, + "line": 443, "column": 32 }, "end": { - "line": 370, + "line": 443, "column": 81 } } @@ -44584,15 +44584,15 @@ "postfix": false, "binop": null }, - "start": 18261, - "end": 18263, + "start": 21835, + "end": 21837, "loc": { "start": { - "line": 370, + "line": 443, "column": 81 }, "end": { - "line": 370, + "line": 443, "column": 83 } } @@ -44610,15 +44610,15 @@ "binop": null }, "value": "modelId", - "start": 18263, - "end": 18270, + "start": 21837, + "end": 21844, "loc": { "start": { - "line": 370, + "line": 443, "column": 83 }, "end": { - "line": 370, + "line": 443, "column": 90 } } @@ -44635,15 +44635,15 @@ "postfix": false, "binop": null }, - "start": 18270, - "end": 18271, + "start": 21844, + "end": 21845, "loc": { "start": { - "line": 370, + "line": 443, "column": 90 }, "end": { - "line": 370, + "line": 443, "column": 91 } } @@ -44662,15 +44662,15 @@ "updateContext": null }, "value": " from '", - "start": 18271, - "end": 18279, + "start": 21845, + "end": 21853, "loc": { "start": { - "line": 370, + "line": 443, "column": 91 }, "end": { - "line": 370, + "line": 443, "column": 99 } } @@ -44687,15 +44687,15 @@ "postfix": false, "binop": null }, - "start": 18279, - "end": 18281, + "start": 21853, + "end": 21855, "loc": { "start": { - "line": 370, + "line": 443, "column": 99 }, "end": { - "line": 370, + "line": 443, "column": 101 } } @@ -44713,15 +44713,15 @@ "binop": null }, "value": "metaModelSrc", - "start": 18281, - "end": 18293, + "start": 21855, + "end": 21867, "loc": { "start": { - "line": 370, + "line": 443, "column": 101 }, "end": { - "line": 370, + "line": 443, "column": 113 } } @@ -44738,15 +44738,15 @@ "postfix": false, "binop": null }, - "start": 18293, - "end": 18294, + "start": 21867, + "end": 21868, "loc": { "start": { - "line": 370, + "line": 443, "column": 113 }, "end": { - "line": 370, + "line": 443, "column": 114 } } @@ -44765,15 +44765,15 @@ "updateContext": null }, "value": "' - ", - "start": 18294, - "end": 18298, + "start": 21868, + "end": 21872, "loc": { "start": { - "line": 370, + "line": 443, "column": 114 }, "end": { - "line": 370, + "line": 443, "column": 118 } } @@ -44790,15 +44790,15 @@ "postfix": false, "binop": null }, - "start": 18298, - "end": 18300, + "start": 21872, + "end": 21874, "loc": { "start": { - "line": 370, + "line": 443, "column": 118 }, "end": { - "line": 370, + "line": 443, "column": 120 } } @@ -44816,15 +44816,15 @@ "binop": null }, "value": "errMsg", - "start": 18300, - "end": 18306, + "start": 21874, + "end": 21880, "loc": { "start": { - "line": 370, + "line": 443, "column": 120 }, "end": { - "line": 370, + "line": 443, "column": 126 } } @@ -44841,15 +44841,15 @@ "postfix": false, "binop": null }, - "start": 18306, - "end": 18307, + "start": 21880, + "end": 21881, "loc": { "start": { - "line": 370, + "line": 443, "column": 126 }, "end": { - "line": 370, + "line": 443, "column": 127 } } @@ -44868,15 +44868,15 @@ "updateContext": null }, "value": "", - "start": 18307, - "end": 18307, + "start": 21881, + "end": 21881, "loc": { "start": { - "line": 370, + "line": 443, "column": 127 }, "end": { - "line": 370, + "line": 443, "column": 127 } } @@ -44893,15 +44893,15 @@ "postfix": false, "binop": null }, - "start": 18307, - "end": 18308, + "start": 21881, + "end": 21882, "loc": { "start": { - "line": 370, + "line": 443, "column": 127 }, "end": { - "line": 370, + "line": 443, "column": 128 } } @@ -44918,15 +44918,15 @@ "postfix": false, "binop": null }, - "start": 18308, - "end": 18309, + "start": 21882, + "end": 21883, "loc": { "start": { - "line": 370, + "line": 443, "column": 128 }, "end": { - "line": 370, + "line": 443, "column": 129 } } @@ -44944,15 +44944,15 @@ "binop": null, "updateContext": null }, - "start": 18309, - "end": 18310, + "start": 21883, + "end": 21884, "loc": { "start": { - "line": 370, + "line": 443, "column": 129 }, "end": { - "line": 370, + "line": 443, "column": 130 } } @@ -44972,15 +44972,15 @@ "updateContext": null }, "value": "this", - "start": 18331, - "end": 18335, + "start": 21905, + "end": 21909, "loc": { "start": { - "line": 371, + "line": 444, "column": 20 }, "end": { - "line": 371, + "line": 444, "column": 24 } } @@ -44998,15 +44998,15 @@ "binop": null, "updateContext": null }, - "start": 18335, - "end": 18336, + "start": 21909, + "end": 21910, "loc": { "start": { - "line": 371, + "line": 444, "column": 24 }, "end": { - "line": 371, + "line": 444, "column": 25 } } @@ -45024,15 +45024,15 @@ "binop": null }, "value": "viewer", - "start": 18336, - "end": 18342, + "start": 21910, + "end": 21916, "loc": { "start": { - "line": 371, + "line": 444, "column": 25 }, "end": { - "line": 371, + "line": 444, "column": 31 } } @@ -45050,15 +45050,15 @@ "binop": null, "updateContext": null }, - "start": 18342, - "end": 18343, + "start": 21916, + "end": 21917, "loc": { "start": { - "line": 371, + "line": 444, "column": 31 }, "end": { - "line": 371, + "line": 444, "column": 32 } } @@ -45076,15 +45076,15 @@ "binop": null }, "value": "scene", - "start": 18343, - "end": 18348, + "start": 21917, + "end": 21922, "loc": { "start": { - "line": 371, + "line": 444, "column": 32 }, "end": { - "line": 371, + "line": 444, "column": 37 } } @@ -45102,15 +45102,15 @@ "binop": null, "updateContext": null }, - "start": 18348, - "end": 18349, + "start": 21922, + "end": 21923, "loc": { "start": { - "line": 371, + "line": 444, "column": 37 }, "end": { - "line": 371, + "line": 444, "column": 38 } } @@ -45128,15 +45128,15 @@ "binop": null }, "value": "canvas", - "start": 18349, - "end": 18355, + "start": 21923, + "end": 21929, "loc": { "start": { - "line": 371, + "line": 444, "column": 38 }, "end": { - "line": 371, + "line": 444, "column": 44 } } @@ -45154,15 +45154,15 @@ "binop": null, "updateContext": null }, - "start": 18355, - "end": 18356, + "start": 21929, + "end": 21930, "loc": { "start": { - "line": 371, + "line": 444, "column": 44 }, "end": { - "line": 371, + "line": 444, "column": 45 } } @@ -45180,15 +45180,15 @@ "binop": null }, "value": "spinner", - "start": 18356, - "end": 18363, + "start": 21930, + "end": 21937, "loc": { "start": { - "line": 371, + "line": 444, "column": 45 }, "end": { - "line": 371, + "line": 444, "column": 52 } } @@ -45206,15 +45206,15 @@ "binop": null, "updateContext": null }, - "start": 18363, - "end": 18364, + "start": 21937, + "end": 21938, "loc": { "start": { - "line": 371, + "line": 444, "column": 52 }, "end": { - "line": 371, + "line": 444, "column": 53 } } @@ -45232,15 +45232,15 @@ "binop": null }, "value": "processes", - "start": 18364, - "end": 18373, + "start": 21938, + "end": 21947, "loc": { "start": { - "line": 371, + "line": 444, "column": 53 }, "end": { - "line": 371, + "line": 444, "column": 62 } } @@ -45258,15 +45258,15 @@ "binop": null }, "value": "--", - "start": 18373, - "end": 18375, + "start": 21947, + "end": 21949, "loc": { "start": { - "line": 371, + "line": 444, "column": 62 }, "end": { - "line": 371, + "line": 444, "column": 64 } } @@ -45284,15 +45284,15 @@ "binop": null, "updateContext": null }, - "start": 18375, - "end": 18376, + "start": 21949, + "end": 21950, "loc": { "start": { - "line": 371, + "line": 444, "column": 64 }, "end": { - "line": 371, + "line": 444, "column": 65 } } @@ -45309,15 +45309,15 @@ "postfix": false, "binop": null }, - "start": 18393, - "end": 18394, + "start": 21967, + "end": 21968, "loc": { "start": { - "line": 372, + "line": 445, "column": 16 }, "end": { - "line": 372, + "line": 445, "column": 17 } } @@ -45334,15 +45334,15 @@ "postfix": false, "binop": null }, - "start": 18394, - "end": 18395, + "start": 21968, + "end": 21969, "loc": { "start": { - "line": 372, + "line": 445, "column": 17 }, "end": { - "line": 372, + "line": 445, "column": 18 } } @@ -45360,15 +45360,15 @@ "binop": null, "updateContext": null }, - "start": 18395, - "end": 18396, + "start": 21969, + "end": 21970, "loc": { "start": { - "line": 372, + "line": 445, "column": 18 }, "end": { - "line": 372, + "line": 445, "column": 19 } } @@ -45385,15 +45385,15 @@ "postfix": false, "binop": null }, - "start": 18410, - "end": 18411, + "start": 21984, + "end": 21985, "loc": { "start": { - "line": 374, + "line": 447, "column": 12 }, "end": { - "line": 374, + "line": 447, "column": 13 } } @@ -45413,15 +45413,15 @@ "updateContext": null }, "value": "else", - "start": 18412, - "end": 18416, + "start": 21986, + "end": 21990, "loc": { "start": { - "line": 374, + "line": 447, "column": 14 }, "end": { - "line": 374, + "line": 447, "column": 18 } } @@ -45441,15 +45441,15 @@ "updateContext": null }, "value": "if", - "start": 18417, - "end": 18419, + "start": 21991, + "end": 21993, "loc": { "start": { - "line": 374, + "line": 447, "column": 19 }, "end": { - "line": 374, + "line": 447, "column": 21 } } @@ -45466,15 +45466,15 @@ "postfix": false, "binop": null }, - "start": 18420, - "end": 18421, + "start": 21994, + "end": 21995, "loc": { "start": { - "line": 374, + "line": 447, "column": 22 }, "end": { - "line": 374, + "line": 447, "column": 23 } } @@ -45492,15 +45492,15 @@ "binop": null }, "value": "params", - "start": 18421, - "end": 18427, + "start": 21995, + "end": 22001, "loc": { "start": { - "line": 374, + "line": 447, "column": 23 }, "end": { - "line": 374, + "line": 447, "column": 29 } } @@ -45518,15 +45518,15 @@ "binop": null, "updateContext": null }, - "start": 18427, - "end": 18428, + "start": 22001, + "end": 22002, "loc": { "start": { - "line": 374, + "line": 447, "column": 29 }, "end": { - "line": 374, + "line": 447, "column": 30 } } @@ -45544,15 +45544,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 18428, - "end": 18441, + "start": 22002, + "end": 22015, "loc": { "start": { - "line": 374, + "line": 447, "column": 30 }, "end": { - "line": 374, + "line": 447, "column": 43 } } @@ -45569,15 +45569,15 @@ "postfix": false, "binop": null }, - "start": 18441, - "end": 18442, + "start": 22015, + "end": 22016, "loc": { "start": { - "line": 374, + "line": 447, "column": 43 }, "end": { - "line": 374, + "line": 447, "column": 44 } } @@ -45594,15 +45594,15 @@ "postfix": false, "binop": null }, - "start": 18443, - "end": 18444, + "start": 22017, + "end": 22018, "loc": { "start": { - "line": 374, + "line": 447, "column": 45 }, "end": { - "line": 374, + "line": 447, "column": 46 } } @@ -45620,15 +45620,15 @@ "binop": null }, "value": "processMetaModelJSON", - "start": 18462, - "end": 18482, + "start": 22036, + "end": 22056, "loc": { "start": { - "line": 376, + "line": 449, "column": 16 }, "end": { - "line": 376, + "line": 449, "column": 36 } } @@ -45645,15 +45645,15 @@ "postfix": false, "binop": null }, - "start": 18482, - "end": 18483, + "start": 22056, + "end": 22057, "loc": { "start": { - "line": 376, + "line": 449, "column": 36 }, "end": { - "line": 376, + "line": 449, "column": 37 } } @@ -45671,15 +45671,15 @@ "binop": null }, "value": "params", - "start": 18483, - "end": 18489, + "start": 22057, + "end": 22063, "loc": { "start": { - "line": 376, + "line": 449, "column": 37 }, "end": { - "line": 376, + "line": 449, "column": 43 } } @@ -45697,15 +45697,15 @@ "binop": null, "updateContext": null }, - "start": 18489, - "end": 18490, + "start": 22063, + "end": 22064, "loc": { "start": { - "line": 376, + "line": 449, "column": 43 }, "end": { - "line": 376, + "line": 449, "column": 44 } } @@ -45723,15 +45723,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 18490, - "end": 18503, + "start": 22064, + "end": 22077, "loc": { "start": { - "line": 376, + "line": 449, "column": 44 }, "end": { - "line": 376, + "line": 449, "column": 57 } } @@ -45748,15 +45748,15 @@ "postfix": false, "binop": null }, - "start": 18503, - "end": 18504, + "start": 22077, + "end": 22078, "loc": { "start": { - "line": 376, + "line": 449, "column": 57 }, "end": { - "line": 376, + "line": 449, "column": 58 } } @@ -45774,15 +45774,15 @@ "binop": null, "updateContext": null }, - "start": 18504, - "end": 18505, + "start": 22078, + "end": 22079, "loc": { "start": { - "line": 376, + "line": 449, "column": 58 }, "end": { - "line": 376, + "line": 449, "column": 59 } } @@ -45799,15 +45799,15 @@ "postfix": false, "binop": null }, - "start": 18518, - "end": 18519, + "start": 22092, + "end": 22093, "loc": { "start": { - "line": 377, + "line": 450, "column": 12 }, "end": { - "line": 377, + "line": 450, "column": 13 } } @@ -45824,15 +45824,15 @@ "postfix": false, "binop": null }, - "start": 18529, - "end": 18530, + "start": 22103, + "end": 22104, "loc": { "start": { - "line": 379, + "line": 452, "column": 8 }, "end": { - "line": 379, + "line": 452, "column": 9 } } @@ -45852,15 +45852,15 @@ "updateContext": null }, "value": "else", - "start": 18531, - "end": 18535, + "start": 22105, + "end": 22109, "loc": { "start": { - "line": 379, + "line": 452, "column": 10 }, "end": { - "line": 379, + "line": 452, "column": 14 } } @@ -45877,15 +45877,15 @@ "postfix": false, "binop": null }, - "start": 18536, - "end": 18537, + "start": 22110, + "end": 22111, "loc": { "start": { - "line": 379, + "line": 452, "column": 15 }, "end": { - "line": 379, + "line": 452, "column": 16 } } @@ -45903,15 +45903,15 @@ "binop": null }, "value": "params", - "start": 18551, - "end": 18557, + "start": 22125, + "end": 22131, "loc": { "start": { - "line": 381, + "line": 454, "column": 12 }, "end": { - "line": 381, + "line": 454, "column": 18 } } @@ -45929,15 +45929,15 @@ "binop": null, "updateContext": null }, - "start": 18557, - "end": 18558, + "start": 22131, + "end": 22132, "loc": { "start": { - "line": 381, + "line": 454, "column": 18 }, "end": { - "line": 381, + "line": 454, "column": 19 } } @@ -45955,15 +45955,15 @@ "binop": null }, "value": "handleGLTFNode", - "start": 18558, - "end": 18572, + "start": 22132, + "end": 22146, "loc": { "start": { - "line": 381, + "line": 454, "column": 19 }, "end": { - "line": 381, + "line": 454, "column": 33 } } @@ -45982,15 +45982,15 @@ "updateContext": null }, "value": "=", - "start": 18573, - "end": 18574, + "start": 22147, + "end": 22148, "loc": { "start": { - "line": 381, + "line": 454, "column": 34 }, "end": { - "line": 381, + "line": 454, "column": 35 } } @@ -46007,15 +46007,15 @@ "postfix": false, "binop": null }, - "start": 18575, - "end": 18576, + "start": 22149, + "end": 22150, "loc": { "start": { - "line": 381, + "line": 454, "column": 36 }, "end": { - "line": 381, + "line": 454, "column": 37 } } @@ -46033,15 +46033,15 @@ "binop": null }, "value": "modelId", - "start": 18576, - "end": 18583, + "start": 22150, + "end": 22157, "loc": { "start": { - "line": 381, + "line": 454, "column": 37 }, "end": { - "line": 381, + "line": 454, "column": 44 } } @@ -46059,15 +46059,15 @@ "binop": null, "updateContext": null }, - "start": 18583, - "end": 18584, + "start": 22157, + "end": 22158, "loc": { "start": { - "line": 381, + "line": 454, "column": 44 }, "end": { - "line": 381, + "line": 454, "column": 45 } } @@ -46085,15 +46085,15 @@ "binop": null }, "value": "glTFNode", - "start": 18585, - "end": 18593, + "start": 22159, + "end": 22167, "loc": { "start": { - "line": 381, + "line": 454, "column": 46 }, "end": { - "line": 381, + "line": 454, "column": 54 } } @@ -46111,15 +46111,15 @@ "binop": null, "updateContext": null }, - "start": 18593, - "end": 18594, + "start": 22167, + "end": 22168, "loc": { "start": { - "line": 381, + "line": 454, "column": 54 }, "end": { - "line": 381, + "line": 454, "column": 55 } } @@ -46137,15 +46137,15 @@ "binop": null }, "value": "actions", - "start": 18595, - "end": 18602, + "start": 22169, + "end": 22176, "loc": { "start": { - "line": 381, + "line": 454, "column": 56 }, "end": { - "line": 381, + "line": 454, "column": 63 } } @@ -46162,15 +46162,15 @@ "postfix": false, "binop": null }, - "start": 18602, - "end": 18603, + "start": 22176, + "end": 22177, "loc": { "start": { - "line": 381, + "line": 454, "column": 63 }, "end": { - "line": 381, + "line": 454, "column": 64 } } @@ -46188,15 +46188,15 @@ "binop": null, "updateContext": null }, - "start": 18604, - "end": 18606, + "start": 22178, + "end": 22180, "loc": { "start": { - "line": 381, + "line": 454, "column": 65 }, "end": { - "line": 381, + "line": 454, "column": 67 } } @@ -46213,15 +46213,15 @@ "postfix": false, "binop": null }, - "start": 18607, - "end": 18608, + "start": 22181, + "end": 22182, "loc": { "start": { - "line": 381, + "line": 454, "column": 68 }, "end": { - "line": 381, + "line": 454, "column": 69 } } @@ -46241,15 +46241,15 @@ "updateContext": null }, "value": "const", - "start": 18626, - "end": 18631, + "start": 22200, + "end": 22205, "loc": { "start": { - "line": 383, + "line": 456, "column": 16 }, "end": { - "line": 383, + "line": 456, "column": 21 } } @@ -46267,15 +46267,15 @@ "binop": null }, "value": "name", - "start": 18632, - "end": 18636, + "start": 22206, + "end": 22210, "loc": { "start": { - "line": 383, + "line": 456, "column": 22 }, "end": { - "line": 383, + "line": 456, "column": 26 } } @@ -46294,15 +46294,15 @@ "updateContext": null }, "value": "=", - "start": 18637, - "end": 18638, + "start": 22211, + "end": 22212, "loc": { "start": { - "line": 383, + "line": 456, "column": 27 }, "end": { - "line": 383, + "line": 456, "column": 28 } } @@ -46320,15 +46320,15 @@ "binop": null }, "value": "glTFNode", - "start": 18639, - "end": 18647, + "start": 22213, + "end": 22221, "loc": { "start": { - "line": 383, + "line": 456, "column": 29 }, "end": { - "line": 383, + "line": 456, "column": 37 } } @@ -46346,15 +46346,15 @@ "binop": null, "updateContext": null }, - "start": 18647, - "end": 18648, + "start": 22221, + "end": 22222, "loc": { "start": { - "line": 383, + "line": 456, "column": 37 }, "end": { - "line": 383, + "line": 456, "column": 38 } } @@ -46372,15 +46372,15 @@ "binop": null }, "value": "name", - "start": 18648, - "end": 18652, + "start": 22222, + "end": 22226, "loc": { "start": { - "line": 383, + "line": 456, "column": 38 }, "end": { - "line": 383, + "line": 456, "column": 42 } } @@ -46398,15 +46398,15 @@ "binop": null, "updateContext": null }, - "start": 18652, - "end": 18653, + "start": 22226, + "end": 22227, "loc": { "start": { - "line": 383, + "line": 456, "column": 42 }, "end": { - "line": 383, + "line": 456, "column": 43 } } @@ -46426,15 +46426,15 @@ "updateContext": null }, "value": "if", - "start": 18671, - "end": 18673, + "start": 22245, + "end": 22247, "loc": { "start": { - "line": 385, + "line": 458, "column": 16 }, "end": { - "line": 385, + "line": 458, "column": 18 } } @@ -46451,15 +46451,15 @@ "postfix": false, "binop": null }, - "start": 18674, - "end": 18675, + "start": 22248, + "end": 22249, "loc": { "start": { - "line": 385, + "line": 458, "column": 19 }, "end": { - "line": 385, + "line": 458, "column": 20 } } @@ -46478,15 +46478,15 @@ "updateContext": null }, "value": "!", - "start": 18675, - "end": 18676, + "start": 22249, + "end": 22250, "loc": { "start": { - "line": 385, + "line": 458, "column": 20 }, "end": { - "line": 385, + "line": 458, "column": 21 } } @@ -46504,15 +46504,15 @@ "binop": null }, "value": "name", - "start": 18676, - "end": 18680, + "start": 22250, + "end": 22254, "loc": { "start": { - "line": 385, + "line": 458, "column": 21 }, "end": { - "line": 385, + "line": 458, "column": 25 } } @@ -46529,15 +46529,15 @@ "postfix": false, "binop": null }, - "start": 18680, - "end": 18681, + "start": 22254, + "end": 22255, "loc": { "start": { - "line": 385, + "line": 458, "column": 25 }, "end": { - "line": 385, + "line": 458, "column": 26 } } @@ -46554,15 +46554,15 @@ "postfix": false, "binop": null }, - "start": 18682, - "end": 18683, + "start": 22256, + "end": 22257, "loc": { "start": { - "line": 385, + "line": 458, "column": 27 }, "end": { - "line": 385, + "line": 458, "column": 28 } } @@ -46582,15 +46582,15 @@ "updateContext": null }, "value": "return", - "start": 18704, - "end": 18710, + "start": 22278, + "end": 22284, "loc": { "start": { - "line": 386, + "line": 459, "column": 20 }, "end": { - "line": 386, + "line": 459, "column": 26 } } @@ -46610,15 +46610,15 @@ "updateContext": null }, "value": "true", - "start": 18711, - "end": 18715, + "start": 22285, + "end": 22289, "loc": { "start": { - "line": 386, + "line": 459, "column": 27 }, "end": { - "line": 386, + "line": 459, "column": 31 } } @@ -46636,15 +46636,15 @@ "binop": null, "updateContext": null }, - "start": 18715, - "end": 18716, + "start": 22289, + "end": 22290, "loc": { "start": { - "line": 386, + "line": 459, "column": 31 }, "end": { - "line": 386, + "line": 459, "column": 32 } } @@ -46652,15 +46652,15 @@ { "type": "CommentLine", "value": " Continue descending this node subtree", - "start": 18717, - "end": 18757, + "start": 22291, + "end": 22331, "loc": { "start": { - "line": 386, + "line": 459, "column": 33 }, "end": { - "line": 386, + "line": 459, "column": 73 } } @@ -46677,15 +46677,15 @@ "postfix": false, "binop": null }, - "start": 18774, - "end": 18775, + "start": 22348, + "end": 22349, "loc": { "start": { - "line": 387, + "line": 460, "column": 16 }, "end": { - "line": 387, + "line": 460, "column": 17 } } @@ -46705,15 +46705,15 @@ "updateContext": null }, "value": "const", - "start": 18793, - "end": 18798, + "start": 22367, + "end": 22372, "loc": { "start": { - "line": 389, + "line": 462, "column": 16 }, "end": { - "line": 389, + "line": 462, "column": 21 } } @@ -46731,15 +46731,15 @@ "binop": null }, "value": "id", - "start": 18799, - "end": 18801, + "start": 22373, + "end": 22375, "loc": { "start": { - "line": 389, + "line": 462, "column": 22 }, "end": { - "line": 389, + "line": 462, "column": 24 } } @@ -46758,15 +46758,15 @@ "updateContext": null }, "value": "=", - "start": 18802, - "end": 18803, + "start": 22376, + "end": 22377, "loc": { "start": { - "line": 389, + "line": 462, "column": 25 }, "end": { - "line": 389, + "line": 462, "column": 26 } } @@ -46784,15 +46784,15 @@ "binop": null }, "value": "name", - "start": 18804, - "end": 18808, + "start": 22378, + "end": 22382, "loc": { "start": { - "line": 389, + "line": 462, "column": 27 }, "end": { - "line": 389, + "line": 462, "column": 31 } } @@ -46810,15 +46810,15 @@ "binop": null, "updateContext": null }, - "start": 18808, - "end": 18809, + "start": 22382, + "end": 22383, "loc": { "start": { - "line": 389, + "line": 462, "column": 31 }, "end": { - "line": 389, + "line": 462, "column": 32 } } @@ -46836,15 +46836,15 @@ "binop": null }, "value": "actions", - "start": 18827, - "end": 18834, + "start": 22401, + "end": 22408, "loc": { "start": { - "line": 391, + "line": 464, "column": 16 }, "end": { - "line": 391, + "line": 464, "column": 23 } } @@ -46862,15 +46862,15 @@ "binop": null, "updateContext": null }, - "start": 18834, - "end": 18835, + "start": 22408, + "end": 22409, "loc": { "start": { - "line": 391, + "line": 464, "column": 23 }, "end": { - "line": 391, + "line": 464, "column": 24 } } @@ -46888,15 +46888,15 @@ "binop": null }, "value": "createEntity", - "start": 18835, - "end": 18847, + "start": 22409, + "end": 22421, "loc": { "start": { - "line": 391, + "line": 464, "column": 24 }, "end": { - "line": 391, + "line": 464, "column": 36 } } @@ -46915,15 +46915,15 @@ "updateContext": null }, "value": "=", - "start": 18848, - "end": 18849, + "start": 22422, + "end": 22423, "loc": { "start": { - "line": 391, + "line": 464, "column": 37 }, "end": { - "line": 391, + "line": 464, "column": 38 } } @@ -46940,15 +46940,15 @@ "postfix": false, "binop": null }, - "start": 18850, - "end": 18851, + "start": 22424, + "end": 22425, "loc": { "start": { - "line": 391, + "line": 464, "column": 39 }, "end": { - "line": 391, + "line": 464, "column": 40 } } @@ -46956,15 +46956,15 @@ { "type": "CommentLine", "value": " Create an Entity for this glTF scene node", - "start": 18852, - "end": 18896, + "start": 22426, + "end": 22470, "loc": { "start": { - "line": 391, + "line": 464, "column": 41 }, "end": { - "line": 391, + "line": 464, "column": 85 } } @@ -46982,15 +46982,15 @@ "binop": null }, "value": "id", - "start": 18917, - "end": 18919, + "start": 22491, + "end": 22493, "loc": { "start": { - "line": 392, + "line": 465, "column": 20 }, "end": { - "line": 392, + "line": 465, "column": 22 } } @@ -47008,15 +47008,15 @@ "binop": null, "updateContext": null }, - "start": 18919, - "end": 18920, + "start": 22493, + "end": 22494, "loc": { "start": { - "line": 392, + "line": 465, "column": 22 }, "end": { - "line": 392, + "line": 465, "column": 23 } } @@ -47034,15 +47034,15 @@ "binop": null }, "value": "id", - "start": 18921, - "end": 18923, + "start": 22495, + "end": 22497, "loc": { "start": { - "line": 392, + "line": 465, "column": 24 }, "end": { - "line": 392, + "line": 465, "column": 26 } } @@ -47060,15 +47060,15 @@ "binop": null, "updateContext": null }, - "start": 18923, - "end": 18924, + "start": 22497, + "end": 22498, "loc": { "start": { - "line": 392, + "line": 465, "column": 26 }, "end": { - "line": 392, + "line": 465, "column": 27 } } @@ -47086,15 +47086,15 @@ "binop": null }, "value": "isObject", - "start": 18945, - "end": 18953, + "start": 22519, + "end": 22527, "loc": { "start": { - "line": 393, + "line": 466, "column": 20 }, "end": { - "line": 393, + "line": 466, "column": 28 } } @@ -47112,15 +47112,15 @@ "binop": null, "updateContext": null }, - "start": 18953, - "end": 18954, + "start": 22527, + "end": 22528, "loc": { "start": { - "line": 393, + "line": 466, "column": 28 }, "end": { - "line": 393, + "line": 466, "column": 29 } } @@ -47140,15 +47140,15 @@ "updateContext": null }, "value": "true", - "start": 18955, - "end": 18959, + "start": 22529, + "end": 22533, "loc": { "start": { - "line": 393, + "line": 466, "column": 30 }, "end": { - "line": 393, + "line": 466, "column": 34 } } @@ -47156,15 +47156,15 @@ { "type": "CommentLine", "value": " Registers the Entity in Scene#objects", - "start": 18960, - "end": 19000, + "start": 22534, + "end": 22574, "loc": { "start": { - "line": 393, + "line": 466, "column": 35 }, "end": { - "line": 393, + "line": 466, "column": 75 } } @@ -47181,15 +47181,15 @@ "postfix": false, "binop": null }, - "start": 19017, - "end": 19018, + "start": 22591, + "end": 22592, "loc": { "start": { - "line": 394, + "line": 467, "column": 16 }, "end": { - "line": 394, + "line": 467, "column": 17 } } @@ -47207,15 +47207,15 @@ "binop": null, "updateContext": null }, - "start": 19018, - "end": 19019, + "start": 22592, + "end": 22593, "loc": { "start": { - "line": 394, + "line": 467, "column": 17 }, "end": { - "line": 394, + "line": 467, "column": 18 } } @@ -47235,15 +47235,15 @@ "updateContext": null }, "value": "return", - "start": 19037, - "end": 19043, + "start": 22611, + "end": 22617, "loc": { "start": { - "line": 396, + "line": 469, "column": 16 }, "end": { - "line": 396, + "line": 469, "column": 22 } } @@ -47263,15 +47263,15 @@ "updateContext": null }, "value": "true", - "start": 19044, - "end": 19048, + "start": 22618, + "end": 22622, "loc": { "start": { - "line": 396, + "line": 469, "column": 23 }, "end": { - "line": 396, + "line": 469, "column": 27 } } @@ -47289,15 +47289,15 @@ "binop": null, "updateContext": null }, - "start": 19048, - "end": 19049, + "start": 22622, + "end": 22623, "loc": { "start": { - "line": 396, + "line": 469, "column": 27 }, "end": { - "line": 396, + "line": 469, "column": 28 } } @@ -47305,15 +47305,15 @@ { "type": "CommentLine", "value": " Continue descending this glTF node subtree", - "start": 19050, - "end": 19095, + "start": 22624, + "end": 22669, "loc": { "start": { - "line": 396, + "line": 469, "column": 29 }, "end": { - "line": 396, + "line": 469, "column": 74 } } @@ -47330,15 +47330,15 @@ "postfix": false, "binop": null }, - "start": 19108, - "end": 19109, + "start": 22682, + "end": 22683, "loc": { "start": { - "line": 397, + "line": 470, "column": 12 }, "end": { - "line": 397, + "line": 470, "column": 13 } } @@ -47356,15 +47356,15 @@ "binop": null, "updateContext": null }, - "start": 19109, - "end": 19110, + "start": 22683, + "end": 22684, "loc": { "start": { - "line": 397, + "line": 470, "column": 13 }, "end": { - "line": 397, + "line": 470, "column": 14 } } @@ -47384,15 +47384,15 @@ "updateContext": null }, "value": "if", - "start": 19125, - "end": 19127, + "start": 22699, + "end": 22701, "loc": { "start": { - "line": 400, + "line": 473, "column": 12 }, "end": { - "line": 400, + "line": 473, "column": 14 } } @@ -47409,15 +47409,15 @@ "postfix": false, "binop": null }, - "start": 19128, - "end": 19129, + "start": 22702, + "end": 22703, "loc": { "start": { - "line": 400, + "line": 473, "column": 15 }, "end": { - "line": 400, + "line": 473, "column": 16 } } @@ -47435,15 +47435,15 @@ "binop": null }, "value": "params", - "start": 19129, - "end": 19135, + "start": 22703, + "end": 22709, "loc": { "start": { - "line": 400, + "line": 473, "column": 16 }, "end": { - "line": 400, + "line": 473, "column": 22 } } @@ -47461,15 +47461,15 @@ "binop": null, "updateContext": null }, - "start": 19135, - "end": 19136, + "start": 22709, + "end": 22710, "loc": { "start": { - "line": 400, + "line": 473, "column": 22 }, "end": { - "line": 400, + "line": 473, "column": 23 } } @@ -47487,15 +47487,15 @@ "binop": null }, "value": "src", - "start": 19136, - "end": 19139, + "start": 22710, + "end": 22713, "loc": { "start": { - "line": 400, + "line": 473, "column": 23 }, "end": { - "line": 400, + "line": 473, "column": 26 } } @@ -47512,15 +47512,15 @@ "postfix": false, "binop": null }, - "start": 19139, - "end": 19140, + "start": 22713, + "end": 22714, "loc": { "start": { - "line": 400, + "line": 473, "column": 26 }, "end": { - "line": 400, + "line": 473, "column": 27 } } @@ -47537,15 +47537,15 @@ "postfix": false, "binop": null }, - "start": 19141, - "end": 19142, + "start": 22715, + "end": 22716, "loc": { "start": { - "line": 400, + "line": 473, "column": 28 }, "end": { - "line": 400, + "line": 473, "column": 29 } } @@ -47565,15 +47565,15 @@ "updateContext": null }, "value": "this", - "start": 19159, - "end": 19163, + "start": 22733, + "end": 22737, "loc": { "start": { - "line": 401, + "line": 474, "column": 16 }, "end": { - "line": 401, + "line": 474, "column": 20 } } @@ -47591,15 +47591,15 @@ "binop": null, "updateContext": null }, - "start": 19163, - "end": 19164, + "start": 22737, + "end": 22738, "loc": { "start": { - "line": 401, + "line": 474, "column": 20 }, "end": { - "line": 401, + "line": 474, "column": 21 } } @@ -47617,15 +47617,15 @@ "binop": null }, "value": "_sceneModelLoader", - "start": 19164, - "end": 19181, + "start": 22738, + "end": 22755, "loc": { "start": { - "line": 401, + "line": 474, "column": 21 }, "end": { - "line": 401, + "line": 474, "column": 38 } } @@ -47643,15 +47643,15 @@ "binop": null, "updateContext": null }, - "start": 19181, - "end": 19182, + "start": 22755, + "end": 22756, "loc": { "start": { - "line": 401, + "line": 474, "column": 38 }, "end": { - "line": 401, + "line": 474, "column": 39 } } @@ -47669,15 +47669,15 @@ "binop": null }, "value": "load", - "start": 19182, - "end": 19186, + "start": 22756, + "end": 22760, "loc": { "start": { - "line": 401, + "line": 474, "column": 39 }, "end": { - "line": 401, + "line": 474, "column": 43 } } @@ -47694,15 +47694,15 @@ "postfix": false, "binop": null }, - "start": 19186, - "end": 19187, + "start": 22760, + "end": 22761, "loc": { "start": { - "line": 401, + "line": 474, "column": 43 }, "end": { - "line": 401, + "line": 474, "column": 44 } } @@ -47722,15 +47722,15 @@ "updateContext": null }, "value": "this", - "start": 19187, - "end": 19191, + "start": 22761, + "end": 22765, "loc": { "start": { - "line": 401, + "line": 474, "column": 44 }, "end": { - "line": 401, + "line": 474, "column": 48 } } @@ -47748,15 +47748,15 @@ "binop": null, "updateContext": null }, - "start": 19191, - "end": 19192, + "start": 22765, + "end": 22766, "loc": { "start": { - "line": 401, + "line": 474, "column": 48 }, "end": { - "line": 401, + "line": 474, "column": 49 } } @@ -47774,15 +47774,15 @@ "binop": null }, "value": "params", - "start": 19193, - "end": 19199, + "start": 22767, + "end": 22773, "loc": { "start": { - "line": 401, + "line": 474, "column": 50 }, "end": { - "line": 401, + "line": 474, "column": 56 } } @@ -47800,15 +47800,15 @@ "binop": null, "updateContext": null }, - "start": 19199, - "end": 19200, + "start": 22773, + "end": 22774, "loc": { "start": { - "line": 401, + "line": 474, "column": 56 }, "end": { - "line": 401, + "line": 474, "column": 57 } } @@ -47826,15 +47826,15 @@ "binop": null }, "value": "src", - "start": 19200, - "end": 19203, + "start": 22774, + "end": 22777, "loc": { "start": { - "line": 401, + "line": 474, "column": 57 }, "end": { - "line": 401, + "line": 474, "column": 60 } } @@ -47852,15 +47852,15 @@ "binop": null, "updateContext": null }, - "start": 19203, - "end": 19204, + "start": 22777, + "end": 22778, "loc": { "start": { - "line": 401, + "line": 474, "column": 60 }, "end": { - "line": 401, + "line": 474, "column": 61 } } @@ -47880,15 +47880,15 @@ "updateContext": null }, "value": "null", - "start": 19205, - "end": 19209, + "start": 22779, + "end": 22783, "loc": { "start": { - "line": 401, + "line": 474, "column": 62 }, "end": { - "line": 401, + "line": 474, "column": 66 } } @@ -47906,15 +47906,15 @@ "binop": null, "updateContext": null }, - "start": 19209, - "end": 19210, + "start": 22783, + "end": 22784, "loc": { "start": { - "line": 401, + "line": 474, "column": 66 }, "end": { - "line": 401, + "line": 474, "column": 67 } } @@ -47932,15 +47932,15 @@ "binop": null }, "value": "params", - "start": 19211, - "end": 19217, + "start": 22785, + "end": 22791, "loc": { "start": { - "line": 401, + "line": 474, "column": 68 }, "end": { - "line": 401, + "line": 474, "column": 74 } } @@ -47958,15 +47958,15 @@ "binop": null, "updateContext": null }, - "start": 19217, - "end": 19218, + "start": 22791, + "end": 22792, "loc": { "start": { - "line": 401, + "line": 474, "column": 74 }, "end": { - "line": 401, + "line": 474, "column": 75 } } @@ -47984,15 +47984,15 @@ "binop": null }, "value": "sceneModel", - "start": 19219, - "end": 19229, + "start": 22793, + "end": 22803, "loc": { "start": { - "line": 401, + "line": 474, "column": 76 }, "end": { - "line": 401, + "line": 474, "column": 86 } } @@ -48009,15 +48009,15 @@ "postfix": false, "binop": null }, - "start": 19229, - "end": 19230, + "start": 22803, + "end": 22804, "loc": { "start": { - "line": 401, + "line": 474, "column": 86 }, "end": { - "line": 401, + "line": 474, "column": 87 } } @@ -48035,15 +48035,15 @@ "binop": null, "updateContext": null }, - "start": 19230, - "end": 19231, + "start": 22804, + "end": 22805, "loc": { "start": { - "line": 401, + "line": 474, "column": 87 }, "end": { - "line": 401, + "line": 474, "column": 88 } } @@ -48060,15 +48060,15 @@ "postfix": false, "binop": null }, - "start": 19244, - "end": 19245, + "start": 22818, + "end": 22819, "loc": { "start": { - "line": 402, + "line": 475, "column": 12 }, "end": { - "line": 402, + "line": 475, "column": 13 } } @@ -48088,15 +48088,15 @@ "updateContext": null }, "value": "else", - "start": 19246, - "end": 19250, + "start": 22820, + "end": 22824, "loc": { "start": { - "line": 402, + "line": 475, "column": 14 }, "end": { - "line": 402, + "line": 475, "column": 18 } } @@ -48113,15 +48113,15 @@ "postfix": false, "binop": null }, - "start": 19251, - "end": 19252, + "start": 22825, + "end": 22826, "loc": { "start": { - "line": 402, + "line": 475, "column": 19 }, "end": { - "line": 402, + "line": 475, "column": 20 } } @@ -48141,15 +48141,15 @@ "updateContext": null }, "value": "this", - "start": 19269, - "end": 19273, + "start": 22843, + "end": 22847, "loc": { "start": { - "line": 403, + "line": 476, "column": 16 }, "end": { - "line": 403, + "line": 476, "column": 20 } } @@ -48167,15 +48167,15 @@ "binop": null, "updateContext": null }, - "start": 19273, - "end": 19274, + "start": 22847, + "end": 22848, "loc": { "start": { - "line": 403, + "line": 476, "column": 20 }, "end": { - "line": 403, + "line": 476, "column": 21 } } @@ -48193,15 +48193,15 @@ "binop": null }, "value": "_sceneModelLoader", - "start": 19274, - "end": 19291, + "start": 22848, + "end": 22865, "loc": { "start": { - "line": 403, + "line": 476, "column": 21 }, "end": { - "line": 403, + "line": 476, "column": 38 } } @@ -48219,15 +48219,15 @@ "binop": null, "updateContext": null }, - "start": 19291, - "end": 19292, + "start": 22865, + "end": 22866, "loc": { "start": { - "line": 403, + "line": 476, "column": 38 }, "end": { - "line": 403, + "line": 476, "column": 39 } } @@ -48245,15 +48245,15 @@ "binop": null }, "value": "parse", - "start": 19292, - "end": 19297, + "start": 22866, + "end": 22871, "loc": { "start": { - "line": 403, + "line": 476, "column": 39 }, "end": { - "line": 403, + "line": 476, "column": 44 } } @@ -48270,15 +48270,15 @@ "postfix": false, "binop": null }, - "start": 19297, - "end": 19298, + "start": 22871, + "end": 22872, "loc": { "start": { - "line": 403, + "line": 476, "column": 44 }, "end": { - "line": 403, + "line": 476, "column": 45 } } @@ -48298,15 +48298,15 @@ "updateContext": null }, "value": "this", - "start": 19298, - "end": 19302, + "start": 22872, + "end": 22876, "loc": { "start": { - "line": 403, + "line": 476, "column": 45 }, "end": { - "line": 403, + "line": 476, "column": 49 } } @@ -48324,15 +48324,15 @@ "binop": null, "updateContext": null }, - "start": 19302, - "end": 19303, + "start": 22876, + "end": 22877, "loc": { "start": { - "line": 403, + "line": 476, "column": 49 }, "end": { - "line": 403, + "line": 476, "column": 50 } } @@ -48350,15 +48350,15 @@ "binop": null }, "value": "params", - "start": 19304, - "end": 19310, + "start": 22878, + "end": 22884, "loc": { "start": { - "line": 403, + "line": 476, "column": 51 }, "end": { - "line": 403, + "line": 476, "column": 57 } } @@ -48376,15 +48376,15 @@ "binop": null, "updateContext": null }, - "start": 19310, - "end": 19311, + "start": 22884, + "end": 22885, "loc": { "start": { - "line": 403, + "line": 476, "column": 57 }, "end": { - "line": 403, + "line": 476, "column": 58 } } @@ -48402,15 +48402,15 @@ "binop": null }, "value": "gltf", - "start": 19311, - "end": 19315, + "start": 22885, + "end": 22889, "loc": { "start": { - "line": 403, + "line": 476, "column": 58 }, "end": { - "line": 403, + "line": 476, "column": 62 } } @@ -48428,15 +48428,15 @@ "binop": null, "updateContext": null }, - "start": 19315, - "end": 19316, + "start": 22889, + "end": 22890, "loc": { "start": { - "line": 403, + "line": 476, "column": 62 }, "end": { - "line": 403, + "line": 476, "column": 63 } } @@ -48456,15 +48456,15 @@ "updateContext": null }, "value": "null", - "start": 19317, - "end": 19321, + "start": 22891, + "end": 22895, "loc": { "start": { - "line": 403, + "line": 476, "column": 64 }, "end": { - "line": 403, + "line": 476, "column": 68 } } @@ -48482,15 +48482,15 @@ "binop": null, "updateContext": null }, - "start": 19321, - "end": 19322, + "start": 22895, + "end": 22896, "loc": { "start": { - "line": 403, + "line": 476, "column": 68 }, "end": { - "line": 403, + "line": 476, "column": 69 } } @@ -48508,15 +48508,15 @@ "binop": null }, "value": "params", - "start": 19323, - "end": 19329, + "start": 22897, + "end": 22903, "loc": { "start": { - "line": 403, + "line": 476, "column": 70 }, "end": { - "line": 403, + "line": 476, "column": 76 } } @@ -48534,15 +48534,15 @@ "binop": null, "updateContext": null }, - "start": 19329, - "end": 19330, + "start": 22903, + "end": 22904, "loc": { "start": { - "line": 403, + "line": 476, "column": 76 }, "end": { - "line": 403, + "line": 476, "column": 77 } } @@ -48560,15 +48560,15 @@ "binop": null }, "value": "sceneModel", - "start": 19331, - "end": 19341, + "start": 22905, + "end": 22915, "loc": { "start": { - "line": 403, + "line": 476, "column": 78 }, "end": { - "line": 403, + "line": 476, "column": 88 } } @@ -48585,15 +48585,15 @@ "postfix": false, "binop": null }, - "start": 19341, - "end": 19342, + "start": 22915, + "end": 22916, "loc": { "start": { - "line": 403, + "line": 476, "column": 88 }, "end": { - "line": 403, + "line": 476, "column": 89 } } @@ -48611,15 +48611,15 @@ "binop": null, "updateContext": null }, - "start": 19342, - "end": 19343, + "start": 22916, + "end": 22917, "loc": { "start": { - "line": 403, + "line": 476, "column": 89 }, "end": { - "line": 403, + "line": 476, "column": 90 } } @@ -48636,15 +48636,15 @@ "postfix": false, "binop": null }, - "start": 19356, - "end": 19357, + "start": 22930, + "end": 22931, "loc": { "start": { - "line": 404, + "line": 477, "column": 12 }, "end": { - "line": 404, + "line": 477, "column": 13 } } @@ -48661,15 +48661,15 @@ "postfix": false, "binop": null }, - "start": 19366, - "end": 19367, + "start": 22940, + "end": 22941, "loc": { "start": { - "line": 405, + "line": 478, "column": 8 }, "end": { - "line": 405, + "line": 478, "column": 9 } } @@ -48687,15 +48687,15 @@ "binop": null }, "value": "sceneModel", - "start": 19377, - "end": 19387, + "start": 22951, + "end": 22961, "loc": { "start": { - "line": 407, + "line": 480, "column": 8 }, "end": { - "line": 407, + "line": 480, "column": 18 } } @@ -48713,15 +48713,15 @@ "binop": null, "updateContext": null }, - "start": 19387, - "end": 19388, + "start": 22961, + "end": 22962, "loc": { "start": { - "line": 407, + "line": 480, "column": 18 }, "end": { - "line": 407, + "line": 480, "column": 19 } } @@ -48739,15 +48739,15 @@ "binop": null }, "value": "once", - "start": 19388, - "end": 19392, + "start": 22962, + "end": 22966, "loc": { "start": { - "line": 407, + "line": 480, "column": 19 }, "end": { - "line": 407, + "line": 480, "column": 23 } } @@ -48764,15 +48764,15 @@ "postfix": false, "binop": null }, - "start": 19392, - "end": 19393, + "start": 22966, + "end": 22967, "loc": { "start": { - "line": 407, + "line": 480, "column": 23 }, "end": { - "line": 407, + "line": 480, "column": 24 } } @@ -48791,15 +48791,15 @@ "updateContext": null }, "value": "destroyed", - "start": 19393, - "end": 19404, + "start": 22967, + "end": 22978, "loc": { "start": { - "line": 407, + "line": 480, "column": 24 }, "end": { - "line": 407, + "line": 480, "column": 35 } } @@ -48817,15 +48817,15 @@ "binop": null, "updateContext": null }, - "start": 19404, - "end": 19405, + "start": 22978, + "end": 22979, "loc": { "start": { - "line": 407, + "line": 480, "column": 35 }, "end": { - "line": 407, + "line": 480, "column": 36 } } @@ -48842,15 +48842,15 @@ "postfix": false, "binop": null }, - "start": 19406, - "end": 19407, + "start": 22980, + "end": 22981, "loc": { "start": { - "line": 407, + "line": 480, "column": 37 }, "end": { - "line": 407, + "line": 480, "column": 38 } } @@ -48867,15 +48867,15 @@ "postfix": false, "binop": null }, - "start": 19407, - "end": 19408, + "start": 22981, + "end": 22982, "loc": { "start": { - "line": 407, + "line": 480, "column": 38 }, "end": { - "line": 407, + "line": 480, "column": 39 } } @@ -48893,15 +48893,15 @@ "binop": null, "updateContext": null }, - "start": 19409, - "end": 19411, + "start": 22983, + "end": 22985, "loc": { "start": { - "line": 407, + "line": 480, "column": 40 }, "end": { - "line": 407, + "line": 480, "column": 42 } } @@ -48918,15 +48918,15 @@ "postfix": false, "binop": null }, - "start": 19412, - "end": 19413, + "start": 22986, + "end": 22987, "loc": { "start": { - "line": 407, + "line": 480, "column": 43 }, "end": { - "line": 407, + "line": 480, "column": 44 } } @@ -48946,15 +48946,15 @@ "updateContext": null }, "value": "this", - "start": 19426, - "end": 19430, + "start": 23000, + "end": 23004, "loc": { "start": { - "line": 408, + "line": 481, "column": 12 }, "end": { - "line": 408, + "line": 481, "column": 16 } } @@ -48972,15 +48972,15 @@ "binop": null, "updateContext": null }, - "start": 19430, - "end": 19431, + "start": 23004, + "end": 23005, "loc": { "start": { - "line": 408, + "line": 481, "column": 16 }, "end": { - "line": 408, + "line": 481, "column": 17 } } @@ -48998,15 +48998,15 @@ "binop": null }, "value": "viewer", - "start": 19431, - "end": 19437, + "start": 23005, + "end": 23011, "loc": { "start": { - "line": 408, + "line": 481, "column": 17 }, "end": { - "line": 408, + "line": 481, "column": 23 } } @@ -49024,15 +49024,15 @@ "binop": null, "updateContext": null }, - "start": 19437, - "end": 19438, + "start": 23011, + "end": 23012, "loc": { "start": { - "line": 408, + "line": 481, "column": 23 }, "end": { - "line": 408, + "line": 481, "column": 24 } } @@ -49050,15 +49050,15 @@ "binop": null }, "value": "metaScene", - "start": 19438, - "end": 19447, + "start": 23012, + "end": 23021, "loc": { "start": { - "line": 408, + "line": 481, "column": 24 }, "end": { - "line": 408, + "line": 481, "column": 33 } } @@ -49076,15 +49076,15 @@ "binop": null, "updateContext": null }, - "start": 19447, - "end": 19448, + "start": 23021, + "end": 23022, "loc": { "start": { - "line": 408, + "line": 481, "column": 33 }, "end": { - "line": 408, + "line": 481, "column": 34 } } @@ -49102,15 +49102,15 @@ "binop": null }, "value": "destroyMetaModel", - "start": 19448, - "end": 19464, + "start": 23022, + "end": 23038, "loc": { "start": { - "line": 408, + "line": 481, "column": 34 }, "end": { - "line": 408, + "line": 481, "column": 50 } } @@ -49127,15 +49127,15 @@ "postfix": false, "binop": null }, - "start": 19464, - "end": 19465, + "start": 23038, + "end": 23039, "loc": { "start": { - "line": 408, + "line": 481, "column": 50 }, "end": { - "line": 408, + "line": 481, "column": 51 } } @@ -49153,15 +49153,15 @@ "binop": null }, "value": "modelId", - "start": 19465, - "end": 19472, + "start": 23039, + "end": 23046, "loc": { "start": { - "line": 408, + "line": 481, "column": 51 }, "end": { - "line": 408, + "line": 481, "column": 58 } } @@ -49178,15 +49178,15 @@ "postfix": false, "binop": null }, - "start": 19472, - "end": 19473, + "start": 23046, + "end": 23047, "loc": { "start": { - "line": 408, + "line": 481, "column": 58 }, "end": { - "line": 408, + "line": 481, "column": 59 } } @@ -49204,15 +49204,15 @@ "binop": null, "updateContext": null }, - "start": 19473, - "end": 19474, + "start": 23047, + "end": 23048, "loc": { "start": { - "line": 408, + "line": 481, "column": 59 }, "end": { - "line": 408, + "line": 481, "column": 60 } } @@ -49229,15 +49229,15 @@ "postfix": false, "binop": null }, - "start": 19483, - "end": 19484, + "start": 23057, + "end": 23058, "loc": { "start": { - "line": 409, + "line": 482, "column": 8 }, "end": { - "line": 409, + "line": 482, "column": 9 } } @@ -49254,15 +49254,15 @@ "postfix": false, "binop": null }, - "start": 19484, - "end": 19485, + "start": 23058, + "end": 23059, "loc": { "start": { - "line": 409, + "line": 482, "column": 9 }, "end": { - "line": 409, + "line": 482, "column": 10 } } @@ -49280,15 +49280,15 @@ "binop": null, "updateContext": null }, - "start": 19485, - "end": 19486, + "start": 23059, + "end": 23060, "loc": { "start": { - "line": 409, + "line": 482, "column": 10 }, "end": { - "line": 409, + "line": 482, "column": 11 } } @@ -49308,15 +49308,15 @@ "updateContext": null }, "value": "return", - "start": 19496, - "end": 19502, + "start": 23070, + "end": 23076, "loc": { "start": { - "line": 411, + "line": 484, "column": 8 }, "end": { - "line": 411, + "line": 484, "column": 14 } } @@ -49334,15 +49334,15 @@ "binop": null }, "value": "sceneModel", - "start": 19503, - "end": 19513, + "start": 23077, + "end": 23087, "loc": { "start": { - "line": 411, + "line": 484, "column": 15 }, "end": { - "line": 411, + "line": 484, "column": 25 } } @@ -49360,15 +49360,15 @@ "binop": null, "updateContext": null }, - "start": 19513, - "end": 19514, + "start": 23087, + "end": 23088, "loc": { "start": { - "line": 411, + "line": 484, "column": 25 }, "end": { - "line": 411, + "line": 484, "column": 26 } } @@ -49385,15 +49385,15 @@ "postfix": false, "binop": null }, - "start": 19519, - "end": 19520, + "start": 23093, + "end": 23094, "loc": { "start": { - "line": 412, + "line": 485, "column": 4 }, "end": { - "line": 412, + "line": 485, "column": 5 } } @@ -49401,15 +49401,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this GLTFLoaderPlugin.\n ", - "start": 19526, - "end": 19576, + "start": 23100, + "end": 23150, "loc": { "start": { - "line": 414, + "line": 487, "column": 4 }, "end": { - "line": 416, + "line": 489, "column": 7 } } @@ -49427,15 +49427,15 @@ "binop": null }, "value": "destroy", - "start": 19581, - "end": 19588, + "start": 23155, + "end": 23162, "loc": { "start": { - "line": 417, + "line": 490, "column": 4 }, "end": { - "line": 417, + "line": 490, "column": 11 } } @@ -49452,15 +49452,15 @@ "postfix": false, "binop": null }, - "start": 19588, - "end": 19589, + "start": 23162, + "end": 23163, "loc": { "start": { - "line": 417, + "line": 490, "column": 11 }, "end": { - "line": 417, + "line": 490, "column": 12 } } @@ -49477,15 +49477,15 @@ "postfix": false, "binop": null }, - "start": 19589, - "end": 19590, + "start": 23163, + "end": 23164, "loc": { "start": { - "line": 417, + "line": 490, "column": 12 }, "end": { - "line": 417, + "line": 490, "column": 13 } } @@ -49502,15 +49502,15 @@ "postfix": false, "binop": null }, - "start": 19591, - "end": 19592, + "start": 23165, + "end": 23166, "loc": { "start": { - "line": 417, + "line": 490, "column": 14 }, "end": { - "line": 417, + "line": 490, "column": 15 } } @@ -49530,15 +49530,15 @@ "updateContext": null }, "value": "super", - "start": 19601, - "end": 19606, + "start": 23175, + "end": 23180, "loc": { "start": { - "line": 418, + "line": 491, "column": 8 }, "end": { - "line": 418, + "line": 491, "column": 13 } } @@ -49556,15 +49556,15 @@ "binop": null, "updateContext": null }, - "start": 19606, - "end": 19607, + "start": 23180, + "end": 23181, "loc": { "start": { - "line": 418, + "line": 491, "column": 13 }, "end": { - "line": 418, + "line": 491, "column": 14 } } @@ -49582,15 +49582,15 @@ "binop": null }, "value": "destroy", - "start": 19607, - "end": 19614, + "start": 23181, + "end": 23188, "loc": { "start": { - "line": 418, + "line": 491, "column": 14 }, "end": { - "line": 418, + "line": 491, "column": 21 } } @@ -49607,15 +49607,15 @@ "postfix": false, "binop": null }, - "start": 19614, - "end": 19615, + "start": 23188, + "end": 23189, "loc": { "start": { - "line": 418, + "line": 491, "column": 21 }, "end": { - "line": 418, + "line": 491, "column": 22 } } @@ -49632,15 +49632,15 @@ "postfix": false, "binop": null }, - "start": 19615, - "end": 19616, + "start": 23189, + "end": 23190, "loc": { "start": { - "line": 418, + "line": 491, "column": 22 }, "end": { - "line": 418, + "line": 491, "column": 23 } } @@ -49658,15 +49658,15 @@ "binop": null, "updateContext": null }, - "start": 19616, - "end": 19617, + "start": 23190, + "end": 23191, "loc": { "start": { - "line": 418, + "line": 491, "column": 23 }, "end": { - "line": 418, + "line": 491, "column": 24 } } @@ -49683,15 +49683,15 @@ "postfix": false, "binop": null }, - "start": 19622, - "end": 19623, + "start": 23196, + "end": 23197, "loc": { "start": { - "line": 419, + "line": 492, "column": 4 }, "end": { - "line": 419, + "line": 492, "column": 5 } } @@ -49708,15 +49708,15 @@ "postfix": false, "binop": null }, - "start": 19624, - "end": 19625, + "start": 23198, + "end": 23199, "loc": { "start": { - "line": 420, + "line": 493, "column": 0 }, "end": { - "line": 420, + "line": 493, "column": 1 } } @@ -49736,15 +49736,15 @@ "updateContext": null }, "value": "export", - "start": 19627, - "end": 19633, + "start": 23201, + "end": 23207, "loc": { "start": { - "line": 422, + "line": 495, "column": 0 }, "end": { - "line": 422, + "line": 495, "column": 6 } } @@ -49761,15 +49761,15 @@ "postfix": false, "binop": null }, - "start": 19634, - "end": 19635, + "start": 23208, + "end": 23209, "loc": { "start": { - "line": 422, + "line": 495, "column": 7 }, "end": { - "line": 422, + "line": 495, "column": 8 } } @@ -49787,15 +49787,15 @@ "binop": null }, "value": "GLTFLoaderPlugin", - "start": 19635, - "end": 19651, + "start": 23209, + "end": 23225, "loc": { "start": { - "line": 422, + "line": 495, "column": 8 }, "end": { - "line": 422, + "line": 495, "column": 24 } } @@ -49812,15 +49812,15 @@ "postfix": false, "binop": null }, - "start": 19651, - "end": 19652, + "start": 23225, + "end": 23226, "loc": { "start": { - "line": 422, + "line": 495, "column": 24 }, "end": { - "line": 422, + "line": 495, "column": 25 } } @@ -49838,15 +49838,15 @@ "binop": null, "updateContext": null }, - "start": 19652, - "end": 19652, + "start": 23226, + "end": 23226, "loc": { "start": { - "line": 422, + "line": 495, "column": 25 }, "end": { - "line": 422, + "line": 495, "column": 25 } } diff --git a/docs/ast/source/plugins/LASLoaderPlugin/LASLoaderPlugin.js.json b/docs/ast/source/plugins/LASLoaderPlugin/LASLoaderPlugin.js.json index 5dd8808d37..e73002df5f 100644 --- a/docs/ast/source/plugins/LASLoaderPlugin/LASLoaderPlugin.js.json +++ b/docs/ast/source/plugins/LASLoaderPlugin/LASLoaderPlugin.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 22648, + "end": 24636, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 567, + "line": 621, "column": 0 } }, "program": { "type": "Program", "start": 0, - "end": 22648, + "end": 24636, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 567, + "line": 621, "column": 0 } }, @@ -804,16 +804,16 @@ }, { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n ", + "value": "*\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * ## Showing a LAS/LAZ model in TreeViewPlugin\n *\n * We can use the `load()` method's `elementId` parameter\n * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const lasLoader = new LASLoaderPlugin(viewer);\n *\n * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"../../assets/models/las/Nalls_Pumpkin_Hill.laz\",\n * rotation: [-90, 0, 0],\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates this MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates this MetaObject with this ID\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n ", "start": 476, - "end": 5619, + "end": 7607, "loc": { "start": { "line": 12, "column": 0 }, "end": { - "line": 148, + "line": 202, "column": 3 } } @@ -822,29 +822,29 @@ }, { "type": "Identifier", - "start": 5620, - "end": 22358, + "start": 7608, + "end": 24346, "loc": { "start": { - "line": 149, + "line": 203, "column": 0 }, "end": { - "line": 553, + "line": 607, "column": 1 } }, "id": { "type": "Identifier", - "start": 5626, - "end": 5641, + "start": 7614, + "end": 7629, "loc": { "start": { - "line": 149, + "line": 203, "column": 6 }, "end": { - "line": 149, + "line": 203, "column": 21 }, "identifierName": "LASLoaderPlugin" @@ -854,15 +854,15 @@ }, "superClass": { "type": "Identifier", - "start": 5650, - "end": 5656, + "start": 7638, + "end": 7644, "loc": { "start": { - "line": 149, + "line": 203, "column": 30 }, "end": { - "line": 149, + "line": 203, "column": 36 }, "identifierName": "Plugin" @@ -871,30 +871,30 @@ }, "body": { "type": "ClassBody", - "start": 5657, - "end": 22358, + "start": 7645, + "end": 24346, "loc": { "start": { - "line": 149, + "line": 203, "column": 37 }, "end": { - "line": 553, + "line": 607, "column": 1 } }, "body": [ { "type": "ClassMethod", - "start": 6541, - "end": 6765, + "start": 8529, + "end": 8753, "loc": { "start": { - "line": 162, + "line": 216, "column": 4 }, "end": { - "line": 170, + "line": 224, "column": 5 } }, @@ -902,15 +902,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 6541, - "end": 6552, + "start": 8529, + "end": 8540, "loc": { "start": { - "line": 162, + "line": 216, "column": 4 }, "end": { - "line": 162, + "line": 216, "column": 15 }, "identifierName": "constructor" @@ -926,15 +926,15 @@ "params": [ { "type": "Identifier", - "start": 6553, - "end": 6559, + "start": 8541, + "end": 8547, "loc": { "start": { - "line": 162, + "line": 216, "column": 16 }, "end": { - "line": 162, + "line": 216, "column": 22 }, "identifierName": "viewer" @@ -943,29 +943,29 @@ }, { "type": "AssignmentPattern", - "start": 6561, - "end": 6569, + "start": 8549, + "end": 8557, "loc": { "start": { - "line": 162, + "line": 216, "column": 24 }, "end": { - "line": 162, + "line": 216, "column": 32 } }, "left": { "type": "Identifier", - "start": 6561, - "end": 6564, + "start": 8549, + "end": 8552, "loc": { "start": { - "line": 162, + "line": 216, "column": 24 }, "end": { - "line": 162, + "line": 216, "column": 27 }, "identifierName": "cfg" @@ -974,15 +974,15 @@ }, "right": { "type": "ObjectExpression", - "start": 6567, - "end": 6569, + "start": 8555, + "end": 8557, "loc": { "start": { - "line": 162, + "line": 216, "column": 30 }, "end": { - "line": 162, + "line": 216, "column": 32 } }, @@ -992,58 +992,58 @@ ], "body": { "type": "BlockStatement", - "start": 6571, - "end": 6765, + "start": 8559, + "end": 8753, "loc": { "start": { - "line": 162, + "line": 216, "column": 34 }, "end": { - "line": 170, + "line": 224, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 6582, - "end": 6614, + "start": 8570, + "end": 8602, "loc": { "start": { - "line": 164, + "line": 218, "column": 8 }, "end": { - "line": 164, + "line": 218, "column": 40 } }, "expression": { "type": "CallExpression", - "start": 6582, - "end": 6613, + "start": 8570, + "end": 8601, "loc": { "start": { - "line": 164, + "line": 218, "column": 8 }, "end": { - "line": 164, + "line": 218, "column": 39 } }, "callee": { "type": "Super", - "start": 6582, - "end": 6587, + "start": 8570, + "end": 8575, "loc": { "start": { - "line": 164, + "line": 218, "column": 8 }, "end": { - "line": 164, + "line": 218, "column": 13 } } @@ -1051,15 +1051,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 6588, - "end": 6599, + "start": 8576, + "end": 8587, "loc": { "start": { - "line": 164, + "line": 218, "column": 14 }, "end": { - "line": 164, + "line": 218, "column": 25 } }, @@ -1071,15 +1071,15 @@ }, { "type": "Identifier", - "start": 6601, - "end": 6607, + "start": 8589, + "end": 8595, "loc": { "start": { - "line": 164, + "line": 218, "column": 27 }, "end": { - "line": 164, + "line": 218, "column": 33 }, "identifierName": "viewer" @@ -1088,15 +1088,15 @@ }, { "type": "Identifier", - "start": 6609, - "end": 6612, + "start": 8597, + "end": 8600, "loc": { "start": { - "line": 164, + "line": 218, "column": 35 }, "end": { - "line": 164, + "line": 218, "column": 38 }, "identifierName": "cfg" @@ -1108,73 +1108,73 @@ }, { "type": "ExpressionStatement", - "start": 6624, - "end": 6657, + "start": 8612, + "end": 8645, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 6624, - "end": 6656, + "start": 8612, + "end": 8644, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6624, - "end": 6639, + "start": 8612, + "end": 8627, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 6624, - "end": 6628, + "start": 8612, + "end": 8616, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6629, - "end": 6639, + "start": 8617, + "end": 8627, "loc": { "start": { - "line": 166, + "line": 220, "column": 13 }, "end": { - "line": 166, + "line": 220, "column": 23 }, "identifierName": "dataSource" @@ -1185,29 +1185,29 @@ }, "right": { "type": "MemberExpression", - "start": 6642, - "end": 6656, + "start": 8630, + "end": 8644, "loc": { "start": { - "line": 166, + "line": 220, "column": 26 }, "end": { - "line": 166, + "line": 220, "column": 40 } }, "object": { "type": "Identifier", - "start": 6642, - "end": 6645, + "start": 8630, + "end": 8633, "loc": { "start": { - "line": 166, + "line": 220, "column": 26 }, "end": { - "line": 166, + "line": 220, "column": 29 }, "identifierName": "cfg" @@ -1216,15 +1216,15 @@ }, "property": { "type": "Identifier", - "start": 6646, - "end": 6656, + "start": 8634, + "end": 8644, "loc": { "start": { - "line": 166, + "line": 220, "column": 30 }, "end": { - "line": 166, + "line": 220, "column": 40 }, "identifierName": "dataSource" @@ -1237,73 +1237,73 @@ }, { "type": "ExpressionStatement", - "start": 6666, - "end": 6687, + "start": 8654, + "end": 8675, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 6666, - "end": 6686, + "start": 8654, + "end": 8674, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6666, - "end": 6675, + "start": 8654, + "end": 8663, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6666, - "end": 6670, + "start": 8654, + "end": 8658, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6671, - "end": 6675, + "start": 8659, + "end": 8663, "loc": { "start": { - "line": 167, + "line": 221, "column": 13 }, "end": { - "line": 167, + "line": 221, "column": 17 }, "identifierName": "skip" @@ -1314,29 +1314,29 @@ }, "right": { "type": "MemberExpression", - "start": 6678, - "end": 6686, + "start": 8666, + "end": 8674, "loc": { "start": { - "line": 167, + "line": 221, "column": 20 }, "end": { - "line": 167, + "line": 221, "column": 28 } }, "object": { "type": "Identifier", - "start": 6678, - "end": 6681, + "start": 8666, + "end": 8669, "loc": { "start": { - "line": 167, + "line": 221, "column": 20 }, "end": { - "line": 167, + "line": 221, "column": 23 }, "identifierName": "cfg" @@ -1345,15 +1345,15 @@ }, "property": { "type": "Identifier", - "start": 6682, - "end": 6686, + "start": 8670, + "end": 8674, "loc": { "start": { - "line": 167, + "line": 221, "column": 24 }, "end": { - "line": 167, + "line": 221, "column": 28 }, "identifierName": "skip" @@ -1366,73 +1366,73 @@ }, { "type": "ExpressionStatement", - "start": 6696, - "end": 6717, + "start": 8684, + "end": 8705, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 6696, - "end": 6716, + "start": 8684, + "end": 8704, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6696, - "end": 6705, + "start": 8684, + "end": 8693, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6696, - "end": 6700, + "start": 8684, + "end": 8688, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6701, - "end": 6705, + "start": 8689, + "end": 8693, "loc": { "start": { - "line": 168, + "line": 222, "column": 13 }, "end": { - "line": 168, + "line": 222, "column": 17 }, "identifierName": "fp64" @@ -1443,29 +1443,29 @@ }, "right": { "type": "MemberExpression", - "start": 6708, - "end": 6716, + "start": 8696, + "end": 8704, "loc": { "start": { - "line": 168, + "line": 222, "column": 20 }, "end": { - "line": 168, + "line": 222, "column": 28 } }, "object": { "type": "Identifier", - "start": 6708, - "end": 6711, + "start": 8696, + "end": 8699, "loc": { "start": { - "line": 168, + "line": 222, "column": 20 }, "end": { - "line": 168, + "line": 222, "column": 23 }, "identifierName": "cfg" @@ -1474,15 +1474,15 @@ }, "property": { "type": "Identifier", - "start": 6712, - "end": 6716, + "start": 8700, + "end": 8704, "loc": { "start": { - "line": 168, + "line": 222, "column": 24 }, "end": { - "line": 168, + "line": 222, "column": 28 }, "identifierName": "fp64" @@ -1495,73 +1495,73 @@ }, { "type": "ExpressionStatement", - "start": 6726, - "end": 6759, + "start": 8714, + "end": 8747, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 6726, - "end": 6758, + "start": 8714, + "end": 8746, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6726, - "end": 6741, + "start": 8714, + "end": 8729, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 6726, - "end": 6730, + "start": 8714, + "end": 8718, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6731, - "end": 6741, + "start": 8719, + "end": 8729, "loc": { "start": { - "line": 169, + "line": 223, "column": 13 }, "end": { - "line": 169, + "line": 223, "column": 23 }, "identifierName": "colorDepth" @@ -1572,29 +1572,29 @@ }, "right": { "type": "MemberExpression", - "start": 6744, - "end": 6758, + "start": 8732, + "end": 8746, "loc": { "start": { - "line": 169, + "line": 223, "column": 26 }, "end": { - "line": 169, + "line": 223, "column": 40 } }, "object": { "type": "Identifier", - "start": 6744, - "end": 6747, + "start": 8732, + "end": 8735, "loc": { "start": { - "line": 169, + "line": 223, "column": 26 }, "end": { - "line": 169, + "line": 223, "column": 29 }, "identifierName": "cfg" @@ -1603,15 +1603,15 @@ }, "property": { "type": "Identifier", - "start": 6748, - "end": 6758, + "start": 8736, + "end": 8746, "loc": { "start": { - "line": 169, + "line": 223, "column": 30 }, "end": { - "line": 169, + "line": 223, "column": 40 }, "identifierName": "colorDepth" @@ -1630,15 +1630,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"lasLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.dataSource] A custom data source through which the LASLoaderPlugin can load model and metadata files. Defaults to an instance of {@link LASDefaultDataSource}, which loads over HTTP.\n * @param {Number} [cfg.skip=1] Configures LASLoaderPlugin to load every **n** points.\n * @param {Number} [cfg.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [cfg.colorDepth=8] Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits. Accepted values are 8, 16 an \"auto\".\n ", - "start": 5664, - "end": 6536, + "start": 7652, + "end": 8524, "loc": { "start": { - "line": 151, + "line": 205, "column": 4 }, "end": { - "line": 161, + "line": 215, "column": 7 } } @@ -1648,15 +1648,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 6771, - "end": 6983, + "start": 8759, + "end": 8971, "loc": { "start": { - "line": 172, + "line": 226, "column": 4 }, "end": { - "line": 178, + "line": 232, "column": 7 } } @@ -1665,15 +1665,15 @@ }, { "type": "ClassMethod", - "start": 6988, - "end": 7045, + "start": 8976, + "end": 9033, "loc": { "start": { - "line": 179, + "line": 233, "column": 4 }, "end": { - "line": 181, + "line": 235, "column": 5 } }, @@ -1681,15 +1681,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 6992, - "end": 7002, + "start": 8980, + "end": 8990, "loc": { "start": { - "line": 179, + "line": 233, "column": 8 }, "end": { - "line": 179, + "line": 233, "column": 18 }, "identifierName": "dataSource" @@ -1704,73 +1704,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 7005, - "end": 7045, + "start": 8993, + "end": 9033, "loc": { "start": { - "line": 179, + "line": 233, "column": 21 }, "end": { - "line": 181, + "line": 235, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 7015, - "end": 7039, + "start": 9003, + "end": 9027, "loc": { "start": { - "line": 180, + "line": 234, "column": 8 }, "end": { - "line": 180, + "line": 234, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 7022, - "end": 7038, + "start": 9010, + "end": 9026, "loc": { "start": { - "line": 180, + "line": 234, "column": 15 }, "end": { - "line": 180, + "line": 234, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 7022, - "end": 7026, + "start": 9010, + "end": 9014, "loc": { "start": { - "line": 180, + "line": 234, "column": 15 }, "end": { - "line": 180, + "line": 234, "column": 19 } } }, "property": { "type": "Identifier", - "start": 7027, - "end": 7038, + "start": 9015, + "end": 9026, "loc": { "start": { - "line": 180, + "line": 234, "column": 20 }, "end": { - "line": 180, + "line": 234, "column": 31 }, "identifierName": "_dataSource" @@ -1788,15 +1788,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 6771, - "end": 6983, + "start": 8759, + "end": 8971, "loc": { "start": { - "line": 172, + "line": 226, "column": 4 }, "end": { - "line": 178, + "line": 232, "column": 7 } } @@ -1806,15 +1806,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 7051, - "end": 7261, + "start": 9039, + "end": 9249, "loc": { "start": { - "line": 183, + "line": 237, "column": 4 }, "end": { - "line": 189, + "line": 243, "column": 7 } } @@ -1823,15 +1823,15 @@ }, { "type": "ClassMethod", - "start": 7266, - "end": 7359, + "start": 9254, + "end": 9347, "loc": { "start": { - "line": 190, + "line": 244, "column": 4 }, "end": { - "line": 192, + "line": 246, "column": 5 } }, @@ -1839,15 +1839,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7270, - "end": 7280, + "start": 9258, + "end": 9268, "loc": { "start": { - "line": 190, + "line": 244, "column": 8 }, "end": { - "line": 190, + "line": 244, "column": 18 }, "identifierName": "dataSource" @@ -1862,15 +1862,15 @@ "params": [ { "type": "Identifier", - "start": 7281, - "end": 7286, + "start": 9269, + "end": 9274, "loc": { "start": { - "line": 190, + "line": 244, "column": 19 }, "end": { - "line": 190, + "line": 244, "column": 24 }, "identifierName": "value" @@ -1880,88 +1880,88 @@ ], "body": { "type": "BlockStatement", - "start": 7288, - "end": 7359, + "start": 9276, + "end": 9347, "loc": { "start": { - "line": 190, + "line": 244, "column": 26 }, "end": { - "line": 192, + "line": 246, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 7298, - "end": 7353, + "start": 9286, + "end": 9341, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 63 } }, "expression": { "type": "AssignmentExpression", - "start": 7298, - "end": 7352, + "start": 9286, + "end": 9340, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 62 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7298, - "end": 7314, + "start": 9286, + "end": 9302, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 7298, - "end": 7302, + "start": 9286, + "end": 9290, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7303, - "end": 7314, + "start": 9291, + "end": 9302, "loc": { "start": { - "line": 191, + "line": 245, "column": 13 }, "end": { - "line": 191, + "line": 245, "column": 24 }, "identifierName": "_dataSource" @@ -1972,29 +1972,29 @@ }, "right": { "type": "LogicalExpression", - "start": 7317, - "end": 7352, + "start": 9305, + "end": 9340, "loc": { "start": { - "line": 191, + "line": 245, "column": 27 }, "end": { - "line": 191, + "line": 245, "column": 62 } }, "left": { "type": "Identifier", - "start": 7317, - "end": 7322, + "start": 9305, + "end": 9310, "loc": { "start": { - "line": 191, + "line": 245, "column": 27 }, "end": { - "line": 191, + "line": 245, "column": 32 }, "identifierName": "value" @@ -2004,29 +2004,29 @@ "operator": "||", "right": { "type": "NewExpression", - "start": 7326, - "end": 7352, + "start": 9314, + "end": 9340, "loc": { "start": { - "line": 191, + "line": 245, "column": 36 }, "end": { - "line": 191, + "line": 245, "column": 62 } }, "callee": { "type": "Identifier", - "start": 7330, - "end": 7350, + "start": 9318, + "end": 9338, "loc": { "start": { - "line": 191, + "line": 245, "column": 40 }, "end": { - "line": 191, + "line": 245, "column": 60 }, "identifierName": "LASDefaultDataSource" @@ -2046,15 +2046,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 7051, - "end": 7261, + "start": 9039, + "end": 9249, "loc": { "start": { - "line": 183, + "line": 237, "column": 4 }, "end": { - "line": 189, + "line": 243, "column": 7 } } @@ -2064,15 +2064,15 @@ { "type": "CommentBlock", "value": "*\n * When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n *\n * Default value is ````1````.\n *\n * @returns {Number} The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7365, - "end": 7598, + "start": 9353, + "end": 9586, "loc": { "start": { - "line": 194, + "line": 248, "column": 4 }, "end": { - "line": 200, + "line": 254, "column": 7 } } @@ -2081,15 +2081,15 @@ }, { "type": "ClassMethod", - "start": 7603, - "end": 7648, + "start": 9591, + "end": 9636, "loc": { "start": { - "line": 201, + "line": 255, "column": 4 }, "end": { - "line": 203, + "line": 257, "column": 5 } }, @@ -2097,15 +2097,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7607, - "end": 7611, + "start": 9595, + "end": 9599, "loc": { "start": { - "line": 201, + "line": 255, "column": 8 }, "end": { - "line": 201, + "line": 255, "column": 12 }, "identifierName": "skip" @@ -2120,73 +2120,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 7614, - "end": 7648, + "start": 9602, + "end": 9636, "loc": { "start": { - "line": 201, + "line": 255, "column": 15 }, "end": { - "line": 203, + "line": 257, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 7624, - "end": 7642, + "start": 9612, + "end": 9630, "loc": { "start": { - "line": 202, + "line": 256, "column": 8 }, "end": { - "line": 202, + "line": 256, "column": 26 } }, "argument": { "type": "MemberExpression", - "start": 7631, - "end": 7641, + "start": 9619, + "end": 9629, "loc": { "start": { - "line": 202, + "line": 256, "column": 15 }, "end": { - "line": 202, + "line": 256, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 7631, - "end": 7635, + "start": 9619, + "end": 9623, "loc": { "start": { - "line": 202, + "line": 256, "column": 15 }, "end": { - "line": 202, + "line": 256, "column": 19 } } }, "property": { "type": "Identifier", - "start": 7636, - "end": 7641, + "start": 9624, + "end": 9629, "loc": { "start": { - "line": 202, + "line": 256, "column": 20 }, "end": { - "line": 202, + "line": 256, "column": 25 }, "identifierName": "_skip" @@ -2204,15 +2204,15 @@ { "type": "CommentBlock", "value": "*\n * When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n *\n * Default value is ````1````.\n *\n * @returns {Number} The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7365, - "end": 7598, + "start": 9353, + "end": 9586, "loc": { "start": { - "line": 194, + "line": 248, "column": 4 }, "end": { - "line": 200, + "line": 254, "column": 7 } } @@ -2222,15 +2222,15 @@ { "type": "CommentBlock", "value": "*\n * Configures LASLoaderPlugin to load every **n** points.\n *\n * Default value is ````1````.\n *\n * @param {Number} value The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7654, - "end": 7855, + "start": 9642, + "end": 9843, "loc": { "start": { - "line": 205, + "line": 259, "column": 4 }, "end": { - "line": 211, + "line": 265, "column": 7 } } @@ -2239,15 +2239,15 @@ }, { "type": "ClassMethod", - "start": 7860, - "end": 7916, + "start": 9848, + "end": 9904, "loc": { "start": { - "line": 212, + "line": 266, "column": 4 }, "end": { - "line": 214, + "line": 268, "column": 5 } }, @@ -2255,15 +2255,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7864, - "end": 7868, + "start": 9852, + "end": 9856, "loc": { "start": { - "line": 212, + "line": 266, "column": 8 }, "end": { - "line": 212, + "line": 266, "column": 12 }, "identifierName": "skip" @@ -2278,15 +2278,15 @@ "params": [ { "type": "Identifier", - "start": 7869, - "end": 7874, + "start": 9857, + "end": 9862, "loc": { "start": { - "line": 212, + "line": 266, "column": 13 }, "end": { - "line": 212, + "line": 266, "column": 18 }, "identifierName": "value" @@ -2296,88 +2296,88 @@ ], "body": { "type": "BlockStatement", - "start": 7876, - "end": 7916, + "start": 9864, + "end": 9904, "loc": { "start": { - "line": 212, + "line": 266, "column": 20 }, "end": { - "line": 214, + "line": 268, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 7886, - "end": 7910, + "start": 9874, + "end": 9898, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 7886, - "end": 7909, + "start": 9874, + "end": 9897, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 31 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7886, - "end": 7896, + "start": 9874, + "end": 9884, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 7886, - "end": 7890, + "start": 9874, + "end": 9878, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7891, - "end": 7896, + "start": 9879, + "end": 9884, "loc": { "start": { - "line": 213, + "line": 267, "column": 13 }, "end": { - "line": 213, + "line": 267, "column": 18 }, "identifierName": "_skip" @@ -2388,29 +2388,29 @@ }, "right": { "type": "LogicalExpression", - "start": 7899, - "end": 7909, + "start": 9887, + "end": 9897, "loc": { "start": { - "line": 213, + "line": 267, "column": 21 }, "end": { - "line": 213, + "line": 267, "column": 31 } }, "left": { "type": "Identifier", - "start": 7899, - "end": 7904, + "start": 9887, + "end": 9892, "loc": { "start": { - "line": 213, + "line": 267, "column": 21 }, "end": { - "line": 213, + "line": 267, "column": 26 }, "identifierName": "value" @@ -2420,15 +2420,15 @@ "operator": "||", "right": { "type": "NumericLiteral", - "start": 7908, - "end": 7909, + "start": 9896, + "end": 9897, "loc": { "start": { - "line": 213, + "line": 267, "column": 30 }, "end": { - "line": 213, + "line": 267, "column": 31 } }, @@ -2449,15 +2449,15 @@ { "type": "CommentBlock", "value": "*\n * Configures LASLoaderPlugin to load every **n** points.\n *\n * Default value is ````1````.\n *\n * @param {Number} value The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7654, - "end": 7855, + "start": 9642, + "end": 9843, "loc": { "start": { - "line": 205, + "line": 259, "column": 4 }, "end": { - "line": 211, + "line": 265, "column": 7 } } @@ -2467,15 +2467,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 7922, - "end": 8211, + "start": 9910, + "end": 10199, "loc": { "start": { - "line": 216, + "line": 270, "column": 4 }, "end": { - "line": 222, + "line": 276, "column": 7 } } @@ -2484,15 +2484,15 @@ }, { "type": "ClassMethod", - "start": 8216, - "end": 8261, + "start": 10204, + "end": 10249, "loc": { "start": { - "line": 223, + "line": 277, "column": 4 }, "end": { - "line": 225, + "line": 279, "column": 5 } }, @@ -2500,15 +2500,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8220, - "end": 8224, + "start": 10208, + "end": 10212, "loc": { "start": { - "line": 223, + "line": 277, "column": 8 }, "end": { - "line": 223, + "line": 277, "column": 12 }, "identifierName": "fp64" @@ -2523,73 +2523,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 8227, - "end": 8261, + "start": 10215, + "end": 10249, "loc": { "start": { - "line": 223, + "line": 277, "column": 15 }, "end": { - "line": 225, + "line": 279, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 8237, - "end": 8255, + "start": 10225, + "end": 10243, "loc": { "start": { - "line": 224, + "line": 278, "column": 8 }, "end": { - "line": 224, + "line": 278, "column": 26 } }, "argument": { "type": "MemberExpression", - "start": 8244, - "end": 8254, + "start": 10232, + "end": 10242, "loc": { "start": { - "line": 224, + "line": 278, "column": 15 }, "end": { - "line": 224, + "line": 278, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 8244, - "end": 8248, + "start": 10232, + "end": 10236, "loc": { "start": { - "line": 224, + "line": 278, "column": 15 }, "end": { - "line": 224, + "line": 278, "column": 19 } } }, "property": { "type": "Identifier", - "start": 8249, - "end": 8254, + "start": 10237, + "end": 10242, "loc": { "start": { - "line": 224, + "line": 278, "column": 20 }, "end": { - "line": 224, + "line": 278, "column": 25 }, "identifierName": "_fp64" @@ -2607,15 +2607,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 7922, - "end": 8211, + "start": 9910, + "end": 10199, "loc": { "start": { - "line": 216, + "line": 270, "column": 4 }, "end": { - "line": 222, + "line": 276, "column": 7 } } @@ -2625,15 +2625,15 @@ { "type": "CommentBlock", "value": "*\n * Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 8267, - "end": 8566, + "start": 10255, + "end": 10554, "loc": { "start": { - "line": 227, + "line": 281, "column": 4 }, "end": { - "line": 233, + "line": 287, "column": 7 } } @@ -2642,15 +2642,15 @@ }, { "type": "ClassMethod", - "start": 8571, - "end": 8624, + "start": 10559, + "end": 10612, "loc": { "start": { - "line": 234, + "line": 288, "column": 4 }, "end": { - "line": 236, + "line": 290, "column": 5 } }, @@ -2658,15 +2658,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8575, - "end": 8579, + "start": 10563, + "end": 10567, "loc": { "start": { - "line": 234, + "line": 288, "column": 8 }, "end": { - "line": 234, + "line": 288, "column": 12 }, "identifierName": "fp64" @@ -2681,15 +2681,15 @@ "params": [ { "type": "Identifier", - "start": 8580, - "end": 8585, + "start": 10568, + "end": 10573, "loc": { "start": { - "line": 234, + "line": 288, "column": 13 }, "end": { - "line": 234, + "line": 288, "column": 18 }, "identifierName": "value" @@ -2699,88 +2699,88 @@ ], "body": { "type": "BlockStatement", - "start": 8587, - "end": 8624, + "start": 10575, + "end": 10612, "loc": { "start": { - "line": 234, + "line": 288, "column": 20 }, "end": { - "line": 236, + "line": 290, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 8597, - "end": 8618, + "start": 10585, + "end": 10606, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 8597, - "end": 8617, + "start": 10585, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8597, - "end": 8607, + "start": 10585, + "end": 10595, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 8597, - "end": 8601, + "start": 10585, + "end": 10589, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 12 } } }, "property": { "type": "Identifier", - "start": 8602, - "end": 8607, + "start": 10590, + "end": 10595, "loc": { "start": { - "line": 235, + "line": 289, "column": 13 }, "end": { - "line": 235, + "line": 289, "column": 18 }, "identifierName": "_fp64" @@ -2791,15 +2791,15 @@ }, "right": { "type": "UnaryExpression", - "start": 8610, - "end": 8617, + "start": 10598, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 21 }, "end": { - "line": 235, + "line": 289, "column": 28 } }, @@ -2807,15 +2807,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 8611, - "end": 8617, + "start": 10599, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 22 }, "end": { - "line": 235, + "line": 289, "column": 28 } }, @@ -2823,15 +2823,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 8612, - "end": 8617, + "start": 10600, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 23 }, "end": { - "line": 235, + "line": 289, "column": 28 }, "identifierName": "value" @@ -2856,15 +2856,15 @@ { "type": "CommentBlock", "value": "*\n * Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 8267, - "end": 8566, + "start": 10255, + "end": 10554, "loc": { "start": { - "line": 227, + "line": 281, "column": 4 }, "end": { - "line": 233, + "line": 287, "column": 7 } } @@ -2874,15 +2874,15 @@ { "type": "CommentBlock", "value": "*\n * Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @returns {Number|String} Possible returned values are 8, 16 and \"auto\".\n ", - "start": 8630, - "end": 8919, + "start": 10618, + "end": 10907, "loc": { "start": { - "line": 238, + "line": 292, "column": 4 }, "end": { - "line": 246, + "line": 300, "column": 7 } } @@ -2891,15 +2891,15 @@ }, { "type": "ClassMethod", - "start": 8924, - "end": 8981, + "start": 10912, + "end": 10969, "loc": { "start": { - "line": 247, + "line": 301, "column": 4 }, "end": { - "line": 249, + "line": 303, "column": 5 } }, @@ -2907,15 +2907,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8928, - "end": 8938, + "start": 10916, + "end": 10926, "loc": { "start": { - "line": 247, + "line": 301, "column": 8 }, "end": { - "line": 247, + "line": 301, "column": 18 }, "identifierName": "colorDepth" @@ -2930,73 +2930,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 8941, - "end": 8981, + "start": 10929, + "end": 10969, "loc": { "start": { - "line": 247, + "line": 301, "column": 21 }, "end": { - "line": 249, + "line": 303, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 8951, - "end": 8975, + "start": 10939, + "end": 10963, "loc": { "start": { - "line": 248, + "line": 302, "column": 8 }, "end": { - "line": 248, + "line": 302, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 8958, - "end": 8974, + "start": 10946, + "end": 10962, "loc": { "start": { - "line": 248, + "line": 302, "column": 15 }, "end": { - "line": 248, + "line": 302, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 8958, - "end": 8962, + "start": 10946, + "end": 10950, "loc": { "start": { - "line": 248, + "line": 302, "column": 15 }, "end": { - "line": 248, + "line": 302, "column": 19 } } }, "property": { "type": "Identifier", - "start": 8963, - "end": 8974, + "start": 10951, + "end": 10962, "loc": { "start": { - "line": 248, + "line": 302, "column": 20 }, "end": { - "line": 248, + "line": 302, "column": 31 }, "identifierName": "_colorDepth" @@ -3014,15 +3014,15 @@ { "type": "CommentBlock", "value": "*\n * Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @returns {Number|String} Possible returned values are 8, 16 and \"auto\".\n ", - "start": 8630, - "end": 8919, + "start": 10618, + "end": 10907, "loc": { "start": { - "line": 238, + "line": 292, "column": 4 }, "end": { - "line": 246, + "line": 300, "column": 7 } } @@ -3032,15 +3032,15 @@ { "type": "CommentBlock", "value": "*\n * Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @param {Number|String} value Valid values are 8, 16 and \"auto\".\n ", - "start": 8987, - "end": 9274, + "start": 10975, + "end": 11262, "loc": { "start": { - "line": 251, + "line": 305, "column": 4 }, "end": { - "line": 259, + "line": 313, "column": 7 } } @@ -3049,15 +3049,15 @@ }, { "type": "ClassMethod", - "start": 9279, - "end": 9352, + "start": 11267, + "end": 11340, "loc": { "start": { - "line": 260, + "line": 314, "column": 4 }, "end": { - "line": 262, + "line": 316, "column": 5 } }, @@ -3065,15 +3065,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 9283, - "end": 9293, + "start": 11271, + "end": 11281, "loc": { "start": { - "line": 260, + "line": 314, "column": 8 }, "end": { - "line": 260, + "line": 314, "column": 18 }, "identifierName": "colorDepth" @@ -3088,15 +3088,15 @@ "params": [ { "type": "Identifier", - "start": 9294, - "end": 9299, + "start": 11282, + "end": 11287, "loc": { "start": { - "line": 260, + "line": 314, "column": 19 }, "end": { - "line": 260, + "line": 314, "column": 24 }, "identifierName": "value" @@ -3106,88 +3106,88 @@ ], "body": { "type": "BlockStatement", - "start": 9301, - "end": 9352, + "start": 11289, + "end": 11340, "loc": { "start": { - "line": 260, + "line": 314, "column": 26 }, "end": { - "line": 262, + "line": 316, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 9311, - "end": 9346, + "start": 11299, + "end": 11334, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 9311, - "end": 9345, + "start": 11299, + "end": 11333, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 9311, - "end": 9327, + "start": 11299, + "end": 11315, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 9311, - "end": 9315, + "start": 11299, + "end": 11303, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 12 } } }, "property": { "type": "Identifier", - "start": 9316, - "end": 9327, + "start": 11304, + "end": 11315, "loc": { "start": { - "line": 261, + "line": 315, "column": 13 }, "end": { - "line": 261, + "line": 315, "column": 24 }, "identifierName": "_colorDepth" @@ -3198,29 +3198,29 @@ }, "right": { "type": "LogicalExpression", - "start": 9330, - "end": 9345, + "start": 11318, + "end": 11333, "loc": { "start": { - "line": 261, + "line": 315, "column": 27 }, "end": { - "line": 261, + "line": 315, "column": 42 } }, "left": { "type": "Identifier", - "start": 9330, - "end": 9335, + "start": 11318, + "end": 11323, "loc": { "start": { - "line": 261, + "line": 315, "column": 27 }, "end": { - "line": 261, + "line": 315, "column": 32 }, "identifierName": "value" @@ -3230,15 +3230,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 9339, - "end": 9345, + "start": 11327, + "end": 11333, "loc": { "start": { - "line": 261, + "line": 315, "column": 36 }, "end": { - "line": 261, + "line": 315, "column": 42 } }, @@ -3259,15 +3259,15 @@ { "type": "CommentBlock", "value": "*\n * Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @param {Number|String} value Valid values are 8, 16 and \"auto\".\n ", - "start": 8987, - "end": 9274, + "start": 10975, + "end": 11262, "loc": { "start": { - "line": 251, + "line": 305, "column": 4 }, "end": { - "line": 259, + "line": 313, "column": 7 } } @@ -3277,15 +3277,15 @@ { "type": "CommentBlock", "value": "*\n * Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.\n * @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Object} [params.stats] Collects model statistics.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n ", - "start": 9358, - "end": 10972, + "start": 11346, + "end": 12960, "loc": { "start": { - "line": 264, + "line": 318, "column": 4 }, "end": { - "line": 279, + "line": 333, "column": 7 } } @@ -3294,15 +3294,15 @@ }, { "type": "ClassMethod", - "start": 10977, - "end": 12246, + "start": 12965, + "end": 14234, "loc": { "start": { - "line": 280, + "line": 334, "column": 4 }, "end": { - "line": 319, + "line": 373, "column": 5 } }, @@ -3310,15 +3310,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 10977, - "end": 10981, + "start": 12965, + "end": 12969, "loc": { "start": { - "line": 280, + "line": 334, "column": 4 }, "end": { - "line": 280, + "line": 334, "column": 8 }, "identifierName": "load" @@ -3334,29 +3334,29 @@ "params": [ { "type": "AssignmentPattern", - "start": 10982, - "end": 10993, + "start": 12970, + "end": 12981, "loc": { "start": { - "line": 280, + "line": 334, "column": 9 }, "end": { - "line": 280, + "line": 334, "column": 20 } }, "left": { "type": "Identifier", - "start": 10982, - "end": 10988, + "start": 12970, + "end": 12976, "loc": { "start": { - "line": 280, + "line": 334, "column": 9 }, "end": { - "line": 280, + "line": 334, "column": 15 }, "identifierName": "params" @@ -3365,15 +3365,15 @@ }, "right": { "type": "ObjectExpression", - "start": 10991, - "end": 10993, + "start": 12979, + "end": 12981, "loc": { "start": { - "line": 280, + "line": 334, "column": 18 }, "end": { - "line": 280, + "line": 334, "column": 20 } }, @@ -3383,72 +3383,72 @@ ], "body": { "type": "BlockStatement", - "start": 10995, - "end": 12246, + "start": 12983, + "end": 14234, "loc": { "start": { - "line": 280, + "line": 334, "column": 22 }, "end": { - "line": 319, + "line": 373, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 11006, - "end": 11227, + "start": 12994, + "end": 13215, "loc": { "start": { - "line": 282, + "line": 336, "column": 8 }, "end": { - "line": 285, + "line": 339, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 11010, - "end": 11062, + "start": 12998, + "end": 13050, "loc": { "start": { - "line": 282, + "line": 336, "column": 12 }, "end": { - "line": 282, + "line": 336, "column": 64 } }, "left": { "type": "MemberExpression", - "start": 11010, - "end": 11019, + "start": 12998, + "end": 13007, "loc": { "start": { - "line": 282, + "line": 336, "column": 12 }, "end": { - "line": 282, + "line": 336, "column": 21 } }, "object": { "type": "Identifier", - "start": 11010, - "end": 11016, + "start": 12998, + "end": 13004, "loc": { "start": { - "line": 282, + "line": 336, "column": 12 }, "end": { - "line": 282, + "line": 336, "column": 18 }, "identifierName": "params" @@ -3457,15 +3457,15 @@ }, "property": { "type": "Identifier", - "start": 11017, - "end": 11019, + "start": 13005, + "end": 13007, "loc": { "start": { - "line": 282, + "line": 336, "column": 19 }, "end": { - "line": 282, + "line": 336, "column": 21 }, "identifierName": "id" @@ -3477,86 +3477,86 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 11023, - "end": 11062, + "start": 13011, + "end": 13050, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 11023, - "end": 11051, + "start": 13011, + "end": 13039, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 11023, - "end": 11040, + "start": 13011, + "end": 13028, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 11023, - "end": 11034, + "start": 13011, + "end": 13022, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 11023, - "end": 11027, + "start": 13011, + "end": 13015, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 29 } } }, "property": { "type": "Identifier", - "start": 11028, - "end": 11034, + "start": 13016, + "end": 13022, "loc": { "start": { - "line": 282, + "line": 336, "column": 30 }, "end": { - "line": 282, + "line": 336, "column": 36 }, "identifierName": "viewer" @@ -3567,15 +3567,15 @@ }, "property": { "type": "Identifier", - "start": 11035, - "end": 11040, + "start": 13023, + "end": 13028, "loc": { "start": { - "line": 282, + "line": 336, "column": 37 }, "end": { - "line": 282, + "line": 336, "column": 42 }, "identifierName": "scene" @@ -3586,15 +3586,15 @@ }, "property": { "type": "Identifier", - "start": 11041, - "end": 11051, + "start": 13029, + "end": 13039, "loc": { "start": { - "line": 282, + "line": 336, "column": 43 }, "end": { - "line": 282, + "line": 336, "column": 53 }, "identifierName": "components" @@ -3605,29 +3605,29 @@ }, "property": { "type": "MemberExpression", - "start": 11052, - "end": 11061, + "start": 13040, + "end": 13049, "loc": { "start": { - "line": 282, + "line": 336, "column": 54 }, "end": { - "line": 282, + "line": 336, "column": 63 } }, "object": { "type": "Identifier", - "start": 11052, - "end": 11058, + "start": 13040, + "end": 13046, "loc": { "start": { - "line": 282, + "line": 336, "column": 54 }, "end": { - "line": 282, + "line": 336, "column": 60 }, "identifierName": "params" @@ -3636,15 +3636,15 @@ }, "property": { "type": "Identifier", - "start": 11059, - "end": 11061, + "start": 13047, + "end": 13049, "loc": { "start": { - "line": 282, + "line": 336, "column": 61 }, "end": { - "line": 282, + "line": 336, "column": 63 }, "identifierName": "id" @@ -3658,87 +3658,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 11064, - "end": 11227, + "start": 13052, + "end": 13215, "loc": { "start": { - "line": 282, + "line": 336, "column": 66 }, "end": { - "line": 285, + "line": 339, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 11078, - "end": 11187, + "start": 13066, + "end": 13175, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 121 } }, "expression": { "type": "CallExpression", - "start": 11078, - "end": 11186, + "start": 13066, + "end": 13174, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 11078, - "end": 11088, + "start": 13066, + "end": 13076, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 11078, - "end": 11082, + "start": 13066, + "end": 13070, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 16 } } }, "property": { "type": "Identifier", - "start": 11083, - "end": 11088, + "start": 13071, + "end": 13076, "loc": { "start": { - "line": 283, + "line": 337, "column": 17 }, "end": { - "line": 283, + "line": 337, "column": 22 }, "identifierName": "error" @@ -3750,43 +3750,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 11089, - "end": 11185, + "start": 13077, + "end": 13173, "loc": { "start": { - "line": 283, + "line": 337, "column": 23 }, "end": { - "line": 283, + "line": 337, "column": 119 } }, "left": { "type": "BinaryExpression", - "start": 11089, - "end": 11152, + "start": 13077, + "end": 13140, "loc": { "start": { - "line": 283, + "line": 337, "column": 23 }, "end": { - "line": 283, + "line": 337, "column": 86 } }, "left": { "type": "StringLiteral", - "start": 11089, - "end": 11140, + "start": 13077, + "end": 13128, "loc": { "start": { - "line": 283, + "line": 337, "column": 23 }, "end": { - "line": 283, + "line": 337, "column": 74 } }, @@ -3799,29 +3799,29 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 11143, - "end": 11152, + "start": 13131, + "end": 13140, "loc": { "start": { - "line": 283, + "line": 337, "column": 77 }, "end": { - "line": 283, + "line": 337, "column": 86 } }, "object": { "type": "Identifier", - "start": 11143, - "end": 11149, + "start": 13131, + "end": 13137, "loc": { "start": { - "line": 283, + "line": 337, "column": 77 }, "end": { - "line": 283, + "line": 337, "column": 83 }, "identifierName": "params" @@ -3830,15 +3830,15 @@ }, "property": { "type": "Identifier", - "start": 11150, - "end": 11152, + "start": 13138, + "end": 13140, "loc": { "start": { - "line": 283, + "line": 337, "column": 84 }, "end": { - "line": 283, + "line": 337, "column": 86 }, "identifierName": "id" @@ -3851,15 +3851,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 11155, - "end": 11185, + "start": 13143, + "end": 13173, "loc": { "start": { - "line": 283, + "line": 337, "column": 89 }, "end": { - "line": 283, + "line": 337, "column": 119 } }, @@ -3875,29 +3875,29 @@ }, { "type": "ExpressionStatement", - "start": 11200, - "end": 11217, + "start": 13188, + "end": 13205, "loc": { "start": { - "line": 284, + "line": 338, "column": 12 }, "end": { - "line": 284, + "line": 338, "column": 29 } }, "expression": { "type": "UnaryExpression", - "start": 11200, - "end": 11216, + "start": 13188, + "end": 13204, "loc": { "start": { - "line": 284, + "line": 338, "column": 12 }, "end": { - "line": 284, + "line": 338, "column": 28 } }, @@ -3905,29 +3905,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 11207, - "end": 11216, + "start": 13195, + "end": 13204, "loc": { "start": { - "line": 284, + "line": 338, "column": 19 }, "end": { - "line": 284, + "line": 338, "column": 28 } }, "object": { "type": "Identifier", - "start": 11207, - "end": 11213, + "start": 13195, + "end": 13201, "loc": { "start": { - "line": 284, + "line": 338, "column": 19 }, "end": { - "line": 284, + "line": 338, "column": 25 }, "identifierName": "params" @@ -3936,15 +3936,15 @@ }, "property": { "type": "Identifier", - "start": 11214, - "end": 11216, + "start": 13202, + "end": 13204, "loc": { "start": { - "line": 284, + "line": 338, "column": 26 }, "end": { - "line": 284, + "line": 338, "column": 28 }, "identifierName": "id" @@ -3965,44 +3965,44 @@ }, { "type": "VariableDeclaration", - "start": 11237, - "end": 11350, + "start": 13225, + "end": 13338, "loc": { "start": { - "line": 287, + "line": 341, "column": 8 }, "end": { - "line": 289, + "line": 343, "column": 12 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11243, - "end": 11349, + "start": 13231, + "end": 13337, "loc": { "start": { - "line": 287, + "line": 341, "column": 14 }, "end": { - "line": 289, + "line": 343, "column": 11 } }, "id": { "type": "Identifier", - "start": 11243, - "end": 11253, + "start": 13231, + "end": 13241, "loc": { "start": { - "line": 287, + "line": 341, "column": 14 }, "end": { - "line": 287, + "line": 341, "column": 24 }, "identifierName": "sceneModel" @@ -4011,29 +4011,29 @@ }, "init": { "type": "NewExpression", - "start": 11256, - "end": 11349, + "start": 13244, + "end": 13337, "loc": { "start": { - "line": 287, + "line": 341, "column": 27 }, "end": { - "line": 289, + "line": 343, "column": 11 } }, "callee": { "type": "Identifier", - "start": 11260, - "end": 11270, + "start": 13248, + "end": 13258, "loc": { "start": { - "line": 287, + "line": 341, "column": 31 }, "end": { - "line": 287, + "line": 341, "column": 41 }, "identifierName": "SceneModel" @@ -4043,58 +4043,58 @@ "arguments": [ { "type": "MemberExpression", - "start": 11271, - "end": 11288, + "start": 13259, + "end": 13276, "loc": { "start": { - "line": 287, + "line": 341, "column": 42 }, "end": { - "line": 287, + "line": 341, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 11271, - "end": 11282, + "start": 13259, + "end": 13270, "loc": { "start": { - "line": 287, + "line": 341, "column": 42 }, "end": { - "line": 287, + "line": 341, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 11271, - "end": 11275, + "start": 13259, + "end": 13263, "loc": { "start": { - "line": 287, + "line": 341, "column": 42 }, "end": { - "line": 287, + "line": 341, "column": 46 } } }, "property": { "type": "Identifier", - "start": 11276, - "end": 11282, + "start": 13264, + "end": 13270, "loc": { "start": { - "line": 287, + "line": 341, "column": 47 }, "end": { - "line": 287, + "line": 341, "column": 53 }, "identifierName": "viewer" @@ -4105,15 +4105,15 @@ }, "property": { "type": "Identifier", - "start": 11283, - "end": 11288, + "start": 13271, + "end": 13276, "loc": { "start": { - "line": 287, + "line": 341, "column": 54 }, "end": { - "line": 287, + "line": 341, "column": 59 }, "identifierName": "scene" @@ -4124,43 +4124,43 @@ }, { "type": "CallExpression", - "start": 11290, - "end": 11348, + "start": 13278, + "end": 13336, "loc": { "start": { - "line": 287, + "line": 341, "column": 61 }, "end": { - "line": 289, + "line": 343, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 11290, - "end": 11301, + "start": 13278, + "end": 13289, "loc": { "start": { - "line": 287, + "line": 341, "column": 61 }, "end": { - "line": 287, + "line": 341, "column": 72 } }, "object": { "type": "Identifier", - "start": 11290, - "end": 11295, + "start": 13278, + "end": 13283, "loc": { "start": { - "line": 287, + "line": 341, "column": 61 }, "end": { - "line": 287, + "line": 341, "column": 66 }, "identifierName": "utils" @@ -4169,15 +4169,15 @@ }, "property": { "type": "Identifier", - "start": 11296, - "end": 11301, + "start": 13284, + "end": 13289, "loc": { "start": { - "line": 287, + "line": 341, "column": 67 }, "end": { - "line": 287, + "line": 341, "column": 72 }, "identifierName": "apply" @@ -4189,15 +4189,15 @@ "arguments": [ { "type": "Identifier", - "start": 11302, - "end": 11308, + "start": 13290, + "end": 13296, "loc": { "start": { - "line": 287, + "line": 341, "column": 73 }, "end": { - "line": 287, + "line": 341, "column": 79 }, "identifierName": "params" @@ -4206,30 +4206,30 @@ }, { "type": "ObjectExpression", - "start": 11310, - "end": 11347, + "start": 13298, + "end": 13335, "loc": { "start": { - "line": 287, + "line": 341, "column": 81 }, "end": { - "line": 289, + "line": 343, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 11324, - "end": 11337, + "start": 13312, + "end": 13325, "loc": { "start": { - "line": 288, + "line": 342, "column": 12 }, "end": { - "line": 288, + "line": 342, "column": 25 } }, @@ -4238,15 +4238,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11324, - "end": 11331, + "start": 13312, + "end": 13319, "loc": { "start": { - "line": 288, + "line": 342, "column": 12 }, "end": { - "line": 288, + "line": 342, "column": 19 }, "identifierName": "isModel" @@ -4255,15 +4255,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 11333, - "end": 11337, + "start": 13321, + "end": 13325, "loc": { "start": { - "line": 288, + "line": 342, "column": 21 }, "end": { - "line": 288, + "line": 342, "column": 25 } }, @@ -4282,43 +4282,43 @@ }, { "type": "IfStatement", - "start": 11360, - "end": 11521, + "start": 13348, + "end": 13509, "loc": { "start": { - "line": 291, + "line": 345, "column": 8 }, "end": { - "line": 294, + "line": 348, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 11364, - "end": 11390, + "start": 13352, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 12 }, "end": { - "line": 291, + "line": 345, "column": 38 } }, "left": { "type": "UnaryExpression", - "start": 11364, - "end": 11375, + "start": 13352, + "end": 13363, "loc": { "start": { - "line": 291, + "line": 345, "column": 12 }, "end": { - "line": 291, + "line": 345, "column": 23 } }, @@ -4326,29 +4326,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 11365, - "end": 11375, + "start": 13353, + "end": 13363, "loc": { "start": { - "line": 291, + "line": 345, "column": 13 }, "end": { - "line": 291, + "line": 345, "column": 23 } }, "object": { "type": "Identifier", - "start": 11365, - "end": 11371, + "start": 13353, + "end": 13359, "loc": { "start": { - "line": 291, + "line": 345, "column": 13 }, "end": { - "line": 291, + "line": 345, "column": 19 }, "identifierName": "params" @@ -4357,15 +4357,15 @@ }, "property": { "type": "Identifier", - "start": 11372, - "end": 11375, + "start": 13360, + "end": 13363, "loc": { "start": { - "line": 291, + "line": 345, "column": 20 }, "end": { - "line": 291, + "line": 345, "column": 23 }, "identifierName": "src" @@ -4381,15 +4381,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 11379, - "end": 11390, + "start": 13367, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 27 }, "end": { - "line": 291, + "line": 345, "column": 38 } }, @@ -4397,29 +4397,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 11380, - "end": 11390, + "start": 13368, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 28 }, "end": { - "line": 291, + "line": 345, "column": 38 } }, "object": { "type": "Identifier", - "start": 11380, - "end": 11386, + "start": 13368, + "end": 13374, "loc": { "start": { - "line": 291, + "line": 345, "column": 28 }, "end": { - "line": 291, + "line": 345, "column": 34 }, "identifierName": "params" @@ -4428,15 +4428,15 @@ }, "property": { "type": "Identifier", - "start": 11387, - "end": 11390, + "start": 13375, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 35 }, "end": { - "line": 291, + "line": 345, "column": 38 }, "identifierName": "las" @@ -4452,87 +4452,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 11392, - "end": 11521, + "start": 13380, + "end": 13509, "loc": { "start": { - "line": 291, + "line": 345, "column": 40 }, "end": { - "line": 294, + "line": 348, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 11406, - "end": 11454, + "start": 13394, + "end": 13442, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 60 } }, "expression": { "type": "CallExpression", - "start": 11406, - "end": 11453, + "start": 13394, + "end": 13441, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 11406, - "end": 11416, + "start": 13394, + "end": 13404, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 11406, - "end": 11410, + "start": 13394, + "end": 13398, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 16 } } }, "property": { "type": "Identifier", - "start": 11411, - "end": 11416, + "start": 13399, + "end": 13404, "loc": { "start": { - "line": 292, + "line": 346, "column": 17 }, "end": { - "line": 292, + "line": 346, "column": 22 }, "identifierName": "error" @@ -4544,15 +4544,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 11417, - "end": 11452, + "start": 13405, + "end": 13440, "loc": { "start": { - "line": 292, + "line": 346, "column": 23 }, "end": { - "line": 292, + "line": 346, "column": 58 } }, @@ -4567,29 +4567,29 @@ }, { "type": "ReturnStatement", - "start": 11467, - "end": 11485, + "start": 13455, + "end": 13473, "loc": { "start": { - "line": 293, + "line": 347, "column": 12 }, "end": { - "line": 293, + "line": 347, "column": 30 } }, "argument": { "type": "Identifier", - "start": 11474, - "end": 11484, + "start": 13462, + "end": 13472, "loc": { "start": { - "line": 293, + "line": 347, "column": 19 }, "end": { - "line": 293, + "line": 347, "column": 29 }, "identifierName": "sceneModel" @@ -4600,15 +4600,15 @@ { "type": "CommentLine", "value": " Return new empty model", - "start": 11486, - "end": 11511, + "start": 13474, + "end": 13499, "loc": { "start": { - "line": 293, + "line": 347, "column": 31 }, "end": { - "line": 293, + "line": 347, "column": 56 } } @@ -4622,44 +4622,44 @@ }, { "type": "VariableDeclaration", - "start": 11531, - "end": 11705, + "start": 13519, + "end": 13693, "loc": { "start": { - "line": 296, + "line": 350, "column": 8 }, "end": { - "line": 302, + "line": 356, "column": 10 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11537, - "end": 11704, + "start": 13525, + "end": 13692, "loc": { "start": { - "line": 296, + "line": 350, "column": 14 }, "end": { - "line": 302, + "line": 356, "column": 9 } }, "id": { "type": "Identifier", - "start": 11537, - "end": 11544, + "start": 13525, + "end": 13532, "loc": { "start": { - "line": 296, + "line": 350, "column": 14 }, "end": { - "line": 296, + "line": 350, "column": 21 }, "identifierName": "options" @@ -4668,30 +4668,30 @@ }, "init": { "type": "ObjectExpression", - "start": 11547, - "end": 11704, + "start": 13535, + "end": 13692, "loc": { "start": { - "line": 296, + "line": 350, "column": 24 }, "end": { - "line": 302, + "line": 356, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 11561, - "end": 11694, + "start": 13549, + "end": 13682, "loc": { "start": { - "line": 297, + "line": 351, "column": 12 }, "end": { - "line": 301, + "line": 355, "column": 13 } }, @@ -4700,15 +4700,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11561, - "end": 11564, + "start": 13549, + "end": 13552, "loc": { "start": { - "line": 297, + "line": 351, "column": 12 }, "end": { - "line": 297, + "line": 351, "column": 15 }, "identifierName": "las" @@ -4717,30 +4717,30 @@ }, "value": { "type": "ObjectExpression", - "start": 11566, - "end": 11694, + "start": 13554, + "end": 13682, "loc": { "start": { - "line": 297, + "line": 351, "column": 17 }, "end": { - "line": 301, + "line": 355, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 11584, - "end": 11600, + "start": 13572, + "end": 13588, "loc": { "start": { - "line": 298, + "line": 352, "column": 16 }, "end": { - "line": 298, + "line": 352, "column": 32 } }, @@ -4749,15 +4749,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11584, - "end": 11588, + "start": 13572, + "end": 13576, "loc": { "start": { - "line": 298, + "line": 352, "column": 16 }, "end": { - "line": 298, + "line": 352, "column": 20 }, "identifierName": "skip" @@ -4766,44 +4766,44 @@ }, "value": { "type": "MemberExpression", - "start": 11590, - "end": 11600, + "start": 13578, + "end": 13588, "loc": { "start": { - "line": 298, + "line": 352, "column": 22 }, "end": { - "line": 298, + "line": 352, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 11590, - "end": 11594, + "start": 13578, + "end": 13582, "loc": { "start": { - "line": 298, + "line": 352, "column": 22 }, "end": { - "line": 298, + "line": 352, "column": 26 } } }, "property": { "type": "Identifier", - "start": 11595, - "end": 11600, + "start": 13583, + "end": 13588, "loc": { "start": { - "line": 298, + "line": 352, "column": 27 }, "end": { - "line": 298, + "line": 352, "column": 32 }, "identifierName": "_skip" @@ -4815,15 +4815,15 @@ }, { "type": "ObjectProperty", - "start": 11618, - "end": 11634, + "start": 13606, + "end": 13622, "loc": { "start": { - "line": 299, + "line": 353, "column": 16 }, "end": { - "line": 299, + "line": 353, "column": 32 } }, @@ -4832,15 +4832,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11618, - "end": 11622, + "start": 13606, + "end": 13610, "loc": { "start": { - "line": 299, + "line": 353, "column": 16 }, "end": { - "line": 299, + "line": 353, "column": 20 }, "identifierName": "fp64" @@ -4849,44 +4849,44 @@ }, "value": { "type": "MemberExpression", - "start": 11624, - "end": 11634, + "start": 13612, + "end": 13622, "loc": { "start": { - "line": 299, + "line": 353, "column": 22 }, "end": { - "line": 299, + "line": 353, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 11624, - "end": 11628, + "start": 13612, + "end": 13616, "loc": { "start": { - "line": 299, + "line": 353, "column": 22 }, "end": { - "line": 299, + "line": 353, "column": 26 } } }, "property": { "type": "Identifier", - "start": 11629, - "end": 11634, + "start": 13617, + "end": 13622, "loc": { "start": { - "line": 299, + "line": 353, "column": 27 }, "end": { - "line": 299, + "line": 353, "column": 32 }, "identifierName": "_fp64" @@ -4898,15 +4898,15 @@ }, { "type": "ObjectProperty", - "start": 11652, - "end": 11680, + "start": 13640, + "end": 13668, "loc": { "start": { - "line": 300, + "line": 354, "column": 16 }, "end": { - "line": 300, + "line": 354, "column": 44 } }, @@ -4915,15 +4915,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11652, - "end": 11662, + "start": 13640, + "end": 13650, "loc": { "start": { - "line": 300, + "line": 354, "column": 16 }, "end": { - "line": 300, + "line": 354, "column": 26 }, "identifierName": "colorDepth" @@ -4932,44 +4932,44 @@ }, "value": { "type": "MemberExpression", - "start": 11664, - "end": 11680, + "start": 13652, + "end": 13668, "loc": { "start": { - "line": 300, + "line": 354, "column": 28 }, "end": { - "line": 300, + "line": 354, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 11664, - "end": 11668, + "start": 13652, + "end": 13656, "loc": { "start": { - "line": 300, + "line": 354, "column": 28 }, "end": { - "line": 300, + "line": 354, "column": 32 } } }, "property": { "type": "Identifier", - "start": 11669, - "end": 11680, + "start": 13657, + "end": 13668, "loc": { "start": { - "line": 300, + "line": 354, "column": 33 }, "end": { - "line": 300, + "line": 354, "column": 44 }, "identifierName": "_colorDepth" @@ -4990,43 +4990,43 @@ }, { "type": "IfStatement", - "start": 11715, - "end": 12212, + "start": 13703, + "end": 14200, "loc": { "start": { - "line": 304, + "line": 358, "column": 8 }, "end": { - "line": 316, + "line": 370, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 11719, - "end": 11729, + "start": 13707, + "end": 13717, "loc": { "start": { - "line": 304, + "line": 358, "column": 12 }, "end": { - "line": 304, + "line": 358, "column": 22 } }, "object": { "type": "Identifier", - "start": 11719, - "end": 11725, + "start": 13707, + "end": 13713, "loc": { "start": { - "line": 304, + "line": 358, "column": 12 }, "end": { - "line": 304, + "line": 358, "column": 18 }, "identifierName": "params" @@ -5035,15 +5035,15 @@ }, "property": { "type": "Identifier", - "start": 11726, - "end": 11729, + "start": 13714, + "end": 13717, "loc": { "start": { - "line": 304, + "line": 358, "column": 19 }, "end": { - "line": 304, + "line": 358, "column": 22 }, "identifierName": "src" @@ -5054,87 +5054,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 11731, - "end": 11812, + "start": 13719, + "end": 13800, "loc": { "start": { - "line": 304, + "line": 358, "column": 24 }, "end": { - "line": 306, + "line": 360, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 11745, - "end": 11802, + "start": 13733, + "end": 13790, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 11745, - "end": 11801, + "start": 13733, + "end": 13789, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 68 } }, "callee": { "type": "MemberExpression", - "start": 11745, - "end": 11760, + "start": 13733, + "end": 13748, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 11745, - "end": 11749, + "start": 13733, + "end": 13737, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 16 } } }, "property": { "type": "Identifier", - "start": 11750, - "end": 11760, + "start": 13738, + "end": 13748, "loc": { "start": { - "line": 305, + "line": 359, "column": 17 }, "end": { - "line": 305, + "line": 359, "column": 27 }, "identifierName": "_loadModel" @@ -5146,29 +5146,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 11761, - "end": 11771, + "start": 13749, + "end": 13759, "loc": { "start": { - "line": 305, + "line": 359, "column": 28 }, "end": { - "line": 305, + "line": 359, "column": 38 } }, "object": { "type": "Identifier", - "start": 11761, - "end": 11767, + "start": 13749, + "end": 13755, "loc": { "start": { - "line": 305, + "line": 359, "column": 28 }, "end": { - "line": 305, + "line": 359, "column": 34 }, "identifierName": "params" @@ -5177,15 +5177,15 @@ }, "property": { "type": "Identifier", - "start": 11768, - "end": 11771, + "start": 13756, + "end": 13759, "loc": { "start": { - "line": 305, + "line": 359, "column": 35 }, "end": { - "line": 305, + "line": 359, "column": 38 }, "identifierName": "src" @@ -5196,15 +5196,15 @@ }, { "type": "Identifier", - "start": 11773, - "end": 11779, + "start": 13761, + "end": 13767, "loc": { "start": { - "line": 305, + "line": 359, "column": 40 }, "end": { - "line": 305, + "line": 359, "column": 46 }, "identifierName": "params" @@ -5213,15 +5213,15 @@ }, { "type": "Identifier", - "start": 11781, - "end": 11788, + "start": 13769, + "end": 13776, "loc": { "start": { - "line": 305, + "line": 359, "column": 48 }, "end": { - "line": 305, + "line": 359, "column": 55 }, "identifierName": "options" @@ -5230,15 +5230,15 @@ }, { "type": "Identifier", - "start": 11790, - "end": 11800, + "start": 13778, + "end": 13788, "loc": { "start": { - "line": 305, + "line": 359, "column": 57 }, "end": { - "line": 305, + "line": 359, "column": 67 }, "identifierName": "sceneModel" @@ -5253,59 +5253,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 11818, - "end": 12212, + "start": 13806, + "end": 14200, "loc": { "start": { - "line": 306, + "line": 360, "column": 15 }, "end": { - "line": 316, + "line": 370, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 11832, - "end": 11881, + "start": 13820, + "end": 13869, "loc": { "start": { - "line": 307, + "line": 361, "column": 12 }, "end": { - "line": 307, + "line": 361, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11838, - "end": 11880, + "start": 13826, + "end": 13868, "loc": { "start": { - "line": 307, + "line": 361, "column": 18 }, "end": { - "line": 307, + "line": 361, "column": 60 } }, "id": { "type": "Identifier", - "start": 11838, - "end": 11845, + "start": 13826, + "end": 13833, "loc": { "start": { - "line": 307, + "line": 361, "column": 18 }, "end": { - "line": 307, + "line": 361, "column": 25 }, "identifierName": "spinner" @@ -5314,86 +5314,86 @@ }, "init": { "type": "MemberExpression", - "start": 11848, - "end": 11880, + "start": 13836, + "end": 13868, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 11848, - "end": 11872, + "start": 13836, + "end": 13860, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 11848, - "end": 11865, + "start": 13836, + "end": 13853, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 11848, - "end": 11859, + "start": 13836, + "end": 13847, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 11848, - "end": 11852, + "start": 13836, + "end": 13840, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 32 } } }, "property": { "type": "Identifier", - "start": 11853, - "end": 11859, + "start": 13841, + "end": 13847, "loc": { "start": { - "line": 307, + "line": 361, "column": 33 }, "end": { - "line": 307, + "line": 361, "column": 39 }, "identifierName": "viewer" @@ -5404,15 +5404,15 @@ }, "property": { "type": "Identifier", - "start": 11860, - "end": 11865, + "start": 13848, + "end": 13853, "loc": { "start": { - "line": 307, + "line": 361, "column": 40 }, "end": { - "line": 307, + "line": 361, "column": 45 }, "identifierName": "scene" @@ -5423,15 +5423,15 @@ }, "property": { "type": "Identifier", - "start": 11866, - "end": 11872, + "start": 13854, + "end": 13860, "loc": { "start": { - "line": 307, + "line": 361, "column": 46 }, "end": { - "line": 307, + "line": 361, "column": 52 }, "identifierName": "canvas" @@ -5442,15 +5442,15 @@ }, "property": { "type": "Identifier", - "start": 11873, - "end": 11880, + "start": 13861, + "end": 13868, "loc": { "start": { - "line": 307, + "line": 361, "column": 53 }, "end": { - "line": 307, + "line": 361, "column": 60 }, "identifierName": "spinner" @@ -5465,29 +5465,29 @@ }, { "type": "ExpressionStatement", - "start": 11894, - "end": 11914, + "start": 13882, + "end": 13902, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 32 } }, "expression": { "type": "UpdateExpression", - "start": 11894, - "end": 11913, + "start": 13882, + "end": 13901, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 31 } }, @@ -5495,29 +5495,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 11894, - "end": 11911, + "start": 13882, + "end": 13899, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 29 } }, "object": { "type": "Identifier", - "start": 11894, - "end": 11901, + "start": 13882, + "end": 13889, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 19 }, "identifierName": "spinner" @@ -5526,15 +5526,15 @@ }, "property": { "type": "Identifier", - "start": 11902, - "end": 11911, + "start": 13890, + "end": 13899, "loc": { "start": { - "line": 308, + "line": 362, "column": 20 }, "end": { - "line": 308, + "line": 362, "column": 29 }, "identifierName": "processes" @@ -5547,100 +5547,100 @@ }, { "type": "ExpressionStatement", - "start": 11927, - "end": 12202, + "start": 13915, + "end": 14190, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 315, + "line": 369, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 11927, - "end": 12201, + "start": 13915, + "end": 14189, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 315, + "line": 369, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 11927, - "end": 11989, + "start": 13915, + "end": 13977, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 74 } }, "object": { "type": "CallExpression", - "start": 11927, - "end": 11984, + "start": 13915, + "end": 13972, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 11927, - "end": 11943, + "start": 13915, + "end": 13931, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 11927, - "end": 11931, + "start": 13915, + "end": 13919, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 16 } } }, "property": { "type": "Identifier", - "start": 11932, - "end": 11943, + "start": 13920, + "end": 13931, "loc": { "start": { - "line": 309, + "line": 363, "column": 17 }, "end": { - "line": 309, + "line": 363, "column": 28 }, "identifierName": "_parseModel" @@ -5652,29 +5652,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 11944, - "end": 11954, + "start": 13932, + "end": 13942, "loc": { "start": { - "line": 309, + "line": 363, "column": 29 }, "end": { - "line": 309, + "line": 363, "column": 39 } }, "object": { "type": "Identifier", - "start": 11944, - "end": 11950, + "start": 13932, + "end": 13938, "loc": { "start": { - "line": 309, + "line": 363, "column": 29 }, "end": { - "line": 309, + "line": 363, "column": 35 }, "identifierName": "params" @@ -5683,15 +5683,15 @@ }, "property": { "type": "Identifier", - "start": 11951, - "end": 11954, + "start": 13939, + "end": 13942, "loc": { "start": { - "line": 309, + "line": 363, "column": 36 }, "end": { - "line": 309, + "line": 363, "column": 39 }, "identifierName": "las" @@ -5702,15 +5702,15 @@ }, { "type": "Identifier", - "start": 11956, - "end": 11962, + "start": 13944, + "end": 13950, "loc": { "start": { - "line": 309, + "line": 363, "column": 41 }, "end": { - "line": 309, + "line": 363, "column": 47 }, "identifierName": "params" @@ -5719,15 +5719,15 @@ }, { "type": "Identifier", - "start": 11964, - "end": 11971, + "start": 13952, + "end": 13959, "loc": { "start": { - "line": 309, + "line": 363, "column": 49 }, "end": { - "line": 309, + "line": 363, "column": 56 }, "identifierName": "options" @@ -5736,15 +5736,15 @@ }, { "type": "Identifier", - "start": 11973, - "end": 11983, + "start": 13961, + "end": 13971, "loc": { "start": { - "line": 309, + "line": 363, "column": 58 }, "end": { - "line": 309, + "line": 363, "column": 68 }, "identifierName": "sceneModel" @@ -5755,15 +5755,15 @@ }, "property": { "type": "Identifier", - "start": 11985, - "end": 11989, + "start": 13973, + "end": 13977, "loc": { "start": { - "line": 309, + "line": 363, "column": 70 }, "end": { - "line": 309, + "line": 363, "column": 74 }, "identifierName": "then" @@ -5775,15 +5775,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 11990, - "end": 12048, + "start": 13978, + "end": 14036, "loc": { "start": { - "line": 309, + "line": 363, "column": 75 }, "end": { - "line": 311, + "line": 365, "column": 13 } }, @@ -5794,44 +5794,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 11996, - "end": 12048, + "start": 13984, + "end": 14036, "loc": { "start": { - "line": 309, + "line": 363, "column": 81 }, "end": { - "line": 311, + "line": 365, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 12014, - "end": 12034, + "start": 14002, + "end": 14022, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 36 } }, "expression": { "type": "UpdateExpression", - "start": 12014, - "end": 12033, + "start": 14002, + "end": 14021, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 35 } }, @@ -5839,29 +5839,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12014, - "end": 12031, + "start": 14002, + "end": 14019, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 33 } }, "object": { "type": "Identifier", - "start": 12014, - "end": 12021, + "start": 14002, + "end": 14009, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 23 }, "identifierName": "spinner" @@ -5870,15 +5870,15 @@ }, "property": { "type": "Identifier", - "start": 12022, - "end": 12031, + "start": 14010, + "end": 14019, "loc": { "start": { - "line": 310, + "line": 364, "column": 24 }, "end": { - "line": 310, + "line": 364, "column": 33 }, "identifierName": "processes" @@ -5895,15 +5895,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 12050, - "end": 12200, + "start": 14038, + "end": 14188, "loc": { "start": { - "line": 311, + "line": 365, "column": 15 }, "end": { - "line": 315, + "line": 369, "column": 13 } }, @@ -5914,15 +5914,15 @@ "params": [ { "type": "Identifier", - "start": 12051, - "end": 12057, + "start": 14039, + "end": 14045, "loc": { "start": { - "line": 311, + "line": 365, "column": 16 }, "end": { - "line": 311, + "line": 365, "column": 22 }, "identifierName": "errMsg" @@ -5932,44 +5932,44 @@ ], "body": { "type": "BlockStatement", - "start": 12062, - "end": 12200, + "start": 14050, + "end": 14188, "loc": { "start": { - "line": 311, + "line": 365, "column": 27 }, "end": { - "line": 315, + "line": 369, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 12080, - "end": 12100, + "start": 14068, + "end": 14088, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 36 } }, "expression": { "type": "UpdateExpression", - "start": 12080, - "end": 12099, + "start": 14068, + "end": 14087, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 35 } }, @@ -5977,29 +5977,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12080, - "end": 12097, + "start": 14068, + "end": 14085, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 33 } }, "object": { "type": "Identifier", - "start": 12080, - "end": 12087, + "start": 14068, + "end": 14075, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 23 }, "identifierName": "spinner" @@ -6008,15 +6008,15 @@ }, "property": { "type": "Identifier", - "start": 12088, - "end": 12097, + "start": 14076, + "end": 14085, "loc": { "start": { - "line": 312, + "line": 366, "column": 24 }, "end": { - "line": 312, + "line": 366, "column": 33 }, "identifierName": "processes" @@ -6029,72 +6029,72 @@ }, { "type": "ExpressionStatement", - "start": 12117, - "end": 12136, + "start": 14105, + "end": 14124, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 12117, - "end": 12135, + "start": 14105, + "end": 14123, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 12117, - "end": 12127, + "start": 14105, + "end": 14115, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 12117, - "end": 12121, + "start": 14105, + "end": 14109, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 20 } } }, "property": { "type": "Identifier", - "start": 12122, - "end": 12127, + "start": 14110, + "end": 14115, "loc": { "start": { - "line": 313, + "line": 367, "column": 21 }, "end": { - "line": 313, + "line": 367, "column": 26 }, "identifierName": "error" @@ -6106,15 +6106,15 @@ "arguments": [ { "type": "Identifier", - "start": 12128, - "end": 12134, + "start": 14116, + "end": 14122, "loc": { "start": { - "line": 313, + "line": 367, "column": 27 }, "end": { - "line": 313, + "line": 367, "column": 33 }, "identifierName": "errMsg" @@ -6126,57 +6126,57 @@ }, { "type": "ExpressionStatement", - "start": 12153, - "end": 12186, + "start": 14141, + "end": 14174, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 49 } }, "expression": { "type": "CallExpression", - "start": 12153, - "end": 12185, + "start": 14141, + "end": 14173, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 12153, - "end": 12168, + "start": 14141, + "end": 14156, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 31 } }, "object": { "type": "Identifier", - "start": 12153, - "end": 12163, + "start": 14141, + "end": 14151, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 26 }, "identifierName": "sceneModel" @@ -6185,15 +6185,15 @@ }, "property": { "type": "Identifier", - "start": 12164, - "end": 12168, + "start": 14152, + "end": 14156, "loc": { "start": { - "line": 314, + "line": 368, "column": 27 }, "end": { - "line": 314, + "line": 368, "column": 31 }, "identifierName": "fire" @@ -6205,15 +6205,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 12169, - "end": 12176, + "start": 14157, + "end": 14164, "loc": { "start": { - "line": 314, + "line": 368, "column": 32 }, "end": { - "line": 314, + "line": 368, "column": 39 } }, @@ -6225,15 +6225,15 @@ }, { "type": "Identifier", - "start": 12178, - "end": 12184, + "start": 14166, + "end": 14172, "loc": { "start": { - "line": 314, + "line": 368, "column": 41 }, "end": { - "line": 314, + "line": 368, "column": 47 }, "identifierName": "errMsg" @@ -6256,29 +6256,29 @@ }, { "type": "ReturnStatement", - "start": 12222, - "end": 12240, + "start": 14210, + "end": 14228, "loc": { "start": { - "line": 318, + "line": 372, "column": 8 }, "end": { - "line": 318, + "line": 372, "column": 26 } }, "argument": { "type": "Identifier", - "start": 12229, - "end": 12239, + "start": 14217, + "end": 14227, "loc": { "start": { - "line": 318, + "line": 372, "column": 15 }, "end": { - "line": 318, + "line": 372, "column": 25 }, "identifierName": "sceneModel" @@ -6293,15 +6293,15 @@ { "type": "CommentBlock", "value": "*\n * Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.\n * @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Object} [params.stats] Collects model statistics.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n ", - "start": 9358, - "end": 10972, + "start": 11346, + "end": 12960, "loc": { "start": { - "line": 264, + "line": 318, "column": 4 }, "end": { - "line": 279, + "line": 333, "column": 7 } } @@ -6310,15 +6310,15 @@ }, { "type": "ClassMethod", - "start": 12252, - "end": 12951, + "start": 14240, + "end": 14939, "loc": { "start": { - "line": 321, + "line": 375, "column": 4 }, "end": { - "line": 338, + "line": 392, "column": 5 } }, @@ -6326,15 +6326,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 12252, - "end": 12262, + "start": 14240, + "end": 14250, "loc": { "start": { - "line": 321, + "line": 375, "column": 4 }, "end": { - "line": 321, + "line": 375, "column": 14 }, "identifierName": "_loadModel" @@ -6349,15 +6349,15 @@ "params": [ { "type": "Identifier", - "start": 12263, - "end": 12266, + "start": 14251, + "end": 14254, "loc": { "start": { - "line": 321, + "line": 375, "column": 15 }, "end": { - "line": 321, + "line": 375, "column": 18 }, "identifierName": "src" @@ -6366,15 +6366,15 @@ }, { "type": "Identifier", - "start": 12268, - "end": 12274, + "start": 14256, + "end": 14262, "loc": { "start": { - "line": 321, + "line": 375, "column": 20 }, "end": { - "line": 321, + "line": 375, "column": 26 }, "identifierName": "params" @@ -6383,15 +6383,15 @@ }, { "type": "Identifier", - "start": 12276, - "end": 12283, + "start": 14264, + "end": 14271, "loc": { "start": { - "line": 321, + "line": 375, "column": 28 }, "end": { - "line": 321, + "line": 375, "column": 35 }, "identifierName": "options" @@ -6400,15 +6400,15 @@ }, { "type": "Identifier", - "start": 12285, - "end": 12295, + "start": 14273, + "end": 14283, "loc": { "start": { - "line": 321, + "line": 375, "column": 37 }, "end": { - "line": 321, + "line": 375, "column": 47 }, "identifierName": "sceneModel" @@ -6418,59 +6418,59 @@ ], "body": { "type": "BlockStatement", - "start": 12297, - "end": 12951, + "start": 14285, + "end": 14939, "loc": { "start": { - "line": 321, + "line": 375, "column": 49 }, "end": { - "line": 338, + "line": 392, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 12307, - "end": 12356, + "start": 14295, + "end": 14344, "loc": { "start": { - "line": 322, + "line": 376, "column": 8 }, "end": { - "line": 322, + "line": 376, "column": 57 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 12313, - "end": 12355, + "start": 14301, + "end": 14343, "loc": { "start": { - "line": 322, + "line": 376, "column": 14 }, "end": { - "line": 322, + "line": 376, "column": 56 } }, "id": { "type": "Identifier", - "start": 12313, - "end": 12320, + "start": 14301, + "end": 14308, "loc": { "start": { - "line": 322, + "line": 376, "column": 14 }, "end": { - "line": 322, + "line": 376, "column": 21 }, "identifierName": "spinner" @@ -6479,86 +6479,86 @@ }, "init": { "type": "MemberExpression", - "start": 12323, - "end": 12355, + "start": 14311, + "end": 14343, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 12323, - "end": 12347, + "start": 14311, + "end": 14335, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 12323, - "end": 12340, + "start": 14311, + "end": 14328, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 12323, - "end": 12334, + "start": 14311, + "end": 14322, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 12323, - "end": 12327, + "start": 14311, + "end": 14315, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 28 } } }, "property": { "type": "Identifier", - "start": 12328, - "end": 12334, + "start": 14316, + "end": 14322, "loc": { "start": { - "line": 322, + "line": 376, "column": 29 }, "end": { - "line": 322, + "line": 376, "column": 35 }, "identifierName": "viewer" @@ -6569,15 +6569,15 @@ }, "property": { "type": "Identifier", - "start": 12335, - "end": 12340, + "start": 14323, + "end": 14328, "loc": { "start": { - "line": 322, + "line": 376, "column": 36 }, "end": { - "line": 322, + "line": 376, "column": 41 }, "identifierName": "scene" @@ -6588,15 +6588,15 @@ }, "property": { "type": "Identifier", - "start": 12341, - "end": 12347, + "start": 14329, + "end": 14335, "loc": { "start": { - "line": 322, + "line": 376, "column": 42 }, "end": { - "line": 322, + "line": 376, "column": 48 }, "identifierName": "canvas" @@ -6607,15 +6607,15 @@ }, "property": { "type": "Identifier", - "start": 12348, - "end": 12355, + "start": 14336, + "end": 14343, "loc": { "start": { - "line": 322, + "line": 376, "column": 49 }, "end": { - "line": 322, + "line": 376, "column": 56 }, "identifierName": "spinner" @@ -6630,29 +6630,29 @@ }, { "type": "ExpressionStatement", - "start": 12365, - "end": 12385, + "start": 14353, + "end": 14373, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 28 } }, "expression": { "type": "UpdateExpression", - "start": 12365, - "end": 12384, + "start": 14353, + "end": 14372, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 27 } }, @@ -6660,29 +6660,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12365, - "end": 12382, + "start": 14353, + "end": 14370, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 25 } }, "object": { "type": "Identifier", - "start": 12365, - "end": 12372, + "start": 14353, + "end": 14360, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 15 }, "identifierName": "spinner" @@ -6691,15 +6691,15 @@ }, "property": { "type": "Identifier", - "start": 12373, - "end": 12382, + "start": 14361, + "end": 14370, "loc": { "start": { - "line": 323, + "line": 377, "column": 16 }, "end": { - "line": 323, + "line": 377, "column": 25 }, "identifierName": "processes" @@ -6712,86 +6712,86 @@ }, { "type": "ExpressionStatement", - "start": 12394, - "end": 12945, + "start": 14382, + "end": 14933, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 337, + "line": 391, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 12394, - "end": 12944, + "start": 14382, + "end": 14932, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 337, + "line": 391, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 12394, - "end": 12417, + "start": 14382, + "end": 14405, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 324, + "line": 378, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 12394, - "end": 12410, + "start": 14382, + "end": 14398, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 324, + "line": 378, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 12394, - "end": 12398, + "start": 14382, + "end": 14386, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 324, + "line": 378, "column": 12 } } }, "property": { "type": "Identifier", - "start": 12399, - "end": 12410, + "start": 14387, + "end": 14398, "loc": { "start": { - "line": 324, + "line": 378, "column": 13 }, "end": { - "line": 324, + "line": 378, "column": 24 }, "identifierName": "_dataSource" @@ -6802,15 +6802,15 @@ }, "property": { "type": "Identifier", - "start": 12411, - "end": 12417, + "start": 14399, + "end": 14405, "loc": { "start": { - "line": 324, + "line": 378, "column": 25 }, "end": { - "line": 324, + "line": 378, "column": 31 }, "identifierName": "getLAS" @@ -6822,29 +6822,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 12418, - "end": 12428, + "start": 14406, + "end": 14416, "loc": { "start": { - "line": 324, + "line": 378, "column": 32 }, "end": { - "line": 324, + "line": 378, "column": 42 } }, "object": { "type": "Identifier", - "start": 12418, - "end": 12424, + "start": 14406, + "end": 14412, "loc": { "start": { - "line": 324, + "line": 378, "column": 32 }, "end": { - "line": 324, + "line": 378, "column": 38 }, "identifierName": "params" @@ -6853,15 +6853,15 @@ }, "property": { "type": "Identifier", - "start": 12425, - "end": 12428, + "start": 14413, + "end": 14416, "loc": { "start": { - "line": 324, + "line": 378, "column": 39 }, "end": { - "line": 324, + "line": 378, "column": 42 }, "identifierName": "src" @@ -6872,15 +6872,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 12430, - "end": 12779, + "start": 14418, + "end": 14767, "loc": { "start": { - "line": 324, + "line": 378, "column": 44 }, "end": { - "line": 332, + "line": 386, "column": 13 } }, @@ -6891,15 +6891,15 @@ "params": [ { "type": "Identifier", - "start": 12431, - "end": 12442, + "start": 14419, + "end": 14430, "loc": { "start": { - "line": 324, + "line": 378, "column": 45 }, "end": { - "line": 324, + "line": 378, "column": 56 }, "identifierName": "arrayBuffer" @@ -6909,115 +6909,115 @@ ], "body": { "type": "BlockStatement", - "start": 12447, - "end": 12779, + "start": 14435, + "end": 14767, "loc": { "start": { - "line": 324, + "line": 378, "column": 61 }, "end": { - "line": 332, + "line": 386, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 12465, - "end": 12765, + "start": 14453, + "end": 14753, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 331, + "line": 385, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 12465, - "end": 12764, + "start": 14453, + "end": 14752, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 331, + "line": 385, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 12465, - "end": 12528, + "start": 14453, + "end": 14516, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 79 } }, "object": { "type": "CallExpression", - "start": 12465, - "end": 12523, + "start": 14453, + "end": 14511, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 12465, - "end": 12481, + "start": 14453, + "end": 14469, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 12465, - "end": 12469, + "start": 14453, + "end": 14457, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 20 } } }, "property": { "type": "Identifier", - "start": 12470, - "end": 12481, + "start": 14458, + "end": 14469, "loc": { "start": { - "line": 325, + "line": 379, "column": 21 }, "end": { - "line": 325, + "line": 379, "column": 32 }, "identifierName": "_parseModel" @@ -7029,15 +7029,15 @@ "arguments": [ { "type": "Identifier", - "start": 12482, - "end": 12493, + "start": 14470, + "end": 14481, "loc": { "start": { - "line": 325, + "line": 379, "column": 33 }, "end": { - "line": 325, + "line": 379, "column": 44 }, "identifierName": "arrayBuffer" @@ -7046,15 +7046,15 @@ }, { "type": "Identifier", - "start": 12495, - "end": 12501, + "start": 14483, + "end": 14489, "loc": { "start": { - "line": 325, + "line": 379, "column": 46 }, "end": { - "line": 325, + "line": 379, "column": 52 }, "identifierName": "params" @@ -7063,15 +7063,15 @@ }, { "type": "Identifier", - "start": 12503, - "end": 12510, + "start": 14491, + "end": 14498, "loc": { "start": { - "line": 325, + "line": 379, "column": 54 }, "end": { - "line": 325, + "line": 379, "column": 61 }, "identifierName": "options" @@ -7080,15 +7080,15 @@ }, { "type": "Identifier", - "start": 12512, - "end": 12522, + "start": 14500, + "end": 14510, "loc": { "start": { - "line": 325, + "line": 379, "column": 63 }, "end": { - "line": 325, + "line": 379, "column": 73 }, "identifierName": "sceneModel" @@ -7099,15 +7099,15 @@ }, "property": { "type": "Identifier", - "start": 12524, - "end": 12528, + "start": 14512, + "end": 14516, "loc": { "start": { - "line": 325, + "line": 379, "column": 75 }, "end": { - "line": 325, + "line": 379, "column": 79 }, "identifierName": "then" @@ -7119,15 +7119,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 12529, - "end": 12595, + "start": 14517, + "end": 14583, "loc": { "start": { - "line": 325, + "line": 379, "column": 80 }, "end": { - "line": 327, + "line": 381, "column": 17 } }, @@ -7138,44 +7138,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12535, - "end": 12595, + "start": 14523, + "end": 14583, "loc": { "start": { - "line": 325, + "line": 379, "column": 86 }, "end": { - "line": 327, + "line": 381, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 12557, - "end": 12577, + "start": 14545, + "end": 14565, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 40 } }, "expression": { "type": "UpdateExpression", - "start": 12557, - "end": 12576, + "start": 14545, + "end": 14564, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 39 } }, @@ -7183,29 +7183,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12557, - "end": 12574, + "start": 14545, + "end": 14562, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 37 } }, "object": { "type": "Identifier", - "start": 12557, - "end": 12564, + "start": 14545, + "end": 14552, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 27 }, "identifierName": "spinner" @@ -7214,15 +7214,15 @@ }, "property": { "type": "Identifier", - "start": 12565, - "end": 12574, + "start": 14553, + "end": 14562, "loc": { "start": { - "line": 326, + "line": 380, "column": 28 }, "end": { - "line": 326, + "line": 380, "column": 37 }, "identifierName": "processes" @@ -7239,15 +7239,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 12597, - "end": 12763, + "start": 14585, + "end": 14751, "loc": { "start": { - "line": 327, + "line": 381, "column": 19 }, "end": { - "line": 331, + "line": 385, "column": 17 } }, @@ -7258,15 +7258,15 @@ "params": [ { "type": "Identifier", - "start": 12598, - "end": 12604, + "start": 14586, + "end": 14592, "loc": { "start": { - "line": 327, + "line": 381, "column": 20 }, "end": { - "line": 327, + "line": 381, "column": 26 }, "identifierName": "errMsg" @@ -7276,44 +7276,44 @@ ], "body": { "type": "BlockStatement", - "start": 12609, - "end": 12763, + "start": 14597, + "end": 14751, "loc": { "start": { - "line": 327, + "line": 381, "column": 31 }, "end": { - "line": 331, + "line": 385, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 12631, - "end": 12651, + "start": 14619, + "end": 14639, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 40 } }, "expression": { "type": "UpdateExpression", - "start": 12631, - "end": 12650, + "start": 14619, + "end": 14638, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 39 } }, @@ -7321,29 +7321,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12631, - "end": 12648, + "start": 14619, + "end": 14636, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 37 } }, "object": { "type": "Identifier", - "start": 12631, - "end": 12638, + "start": 14619, + "end": 14626, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 27 }, "identifierName": "spinner" @@ -7352,15 +7352,15 @@ }, "property": { "type": "Identifier", - "start": 12639, - "end": 12648, + "start": 14627, + "end": 14636, "loc": { "start": { - "line": 328, + "line": 382, "column": 28 }, "end": { - "line": 328, + "line": 382, "column": 37 }, "identifierName": "processes" @@ -7373,72 +7373,72 @@ }, { "type": "ExpressionStatement", - "start": 12672, - "end": 12691, + "start": 14660, + "end": 14679, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 39 } }, "expression": { "type": "CallExpression", - "start": 12672, - "end": 12690, + "start": 14660, + "end": 14678, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 38 } }, "callee": { "type": "MemberExpression", - "start": 12672, - "end": 12682, + "start": 14660, + "end": 14670, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 12672, - "end": 12676, + "start": 14660, + "end": 14664, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 24 } } }, "property": { "type": "Identifier", - "start": 12677, - "end": 12682, + "start": 14665, + "end": 14670, "loc": { "start": { - "line": 329, + "line": 383, "column": 25 }, "end": { - "line": 329, + "line": 383, "column": 30 }, "identifierName": "error" @@ -7450,15 +7450,15 @@ "arguments": [ { "type": "Identifier", - "start": 12683, - "end": 12689, + "start": 14671, + "end": 14677, "loc": { "start": { - "line": 329, + "line": 383, "column": 31 }, "end": { - "line": 329, + "line": 383, "column": 37 }, "identifierName": "errMsg" @@ -7470,57 +7470,57 @@ }, { "type": "ExpressionStatement", - "start": 12712, - "end": 12745, + "start": 14700, + "end": 14733, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 53 } }, "expression": { "type": "CallExpression", - "start": 12712, - "end": 12744, + "start": 14700, + "end": 14732, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 52 } }, "callee": { "type": "MemberExpression", - "start": 12712, - "end": 12727, + "start": 14700, + "end": 14715, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 35 } }, "object": { "type": "Identifier", - "start": 12712, - "end": 12722, + "start": 14700, + "end": 14710, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 30 }, "identifierName": "sceneModel" @@ -7529,15 +7529,15 @@ }, "property": { "type": "Identifier", - "start": 12723, - "end": 12727, + "start": 14711, + "end": 14715, "loc": { "start": { - "line": 330, + "line": 384, "column": 31 }, "end": { - "line": 330, + "line": 384, "column": 35 }, "identifierName": "fire" @@ -7549,15 +7549,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 12728, - "end": 12735, + "start": 14716, + "end": 14723, "loc": { "start": { - "line": 330, + "line": 384, "column": 36 }, "end": { - "line": 330, + "line": 384, "column": 43 } }, @@ -7569,15 +7569,15 @@ }, { "type": "Identifier", - "start": 12737, - "end": 12743, + "start": 14725, + "end": 14731, "loc": { "start": { - "line": 330, + "line": 384, "column": 45 }, "end": { - "line": 330, + "line": 384, "column": 51 }, "identifierName": "errMsg" @@ -7600,15 +7600,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 12793, - "end": 12943, + "start": 14781, + "end": 14931, "loc": { "start": { - "line": 333, + "line": 387, "column": 12 }, "end": { - "line": 337, + "line": 391, "column": 13 } }, @@ -7619,15 +7619,15 @@ "params": [ { "type": "Identifier", - "start": 12794, - "end": 12800, + "start": 14782, + "end": 14788, "loc": { "start": { - "line": 333, + "line": 387, "column": 13 }, "end": { - "line": 333, + "line": 387, "column": 19 }, "identifierName": "errMsg" @@ -7637,44 +7637,44 @@ ], "body": { "type": "BlockStatement", - "start": 12805, - "end": 12943, + "start": 14793, + "end": 14931, "loc": { "start": { - "line": 333, + "line": 387, "column": 24 }, "end": { - "line": 337, + "line": 391, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 12823, - "end": 12843, + "start": 14811, + "end": 14831, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 36 } }, "expression": { "type": "UpdateExpression", - "start": 12823, - "end": 12842, + "start": 14811, + "end": 14830, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 35 } }, @@ -7682,29 +7682,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12823, - "end": 12840, + "start": 14811, + "end": 14828, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 33 } }, "object": { "type": "Identifier", - "start": 12823, - "end": 12830, + "start": 14811, + "end": 14818, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 23 }, "identifierName": "spinner" @@ -7713,15 +7713,15 @@ }, "property": { "type": "Identifier", - "start": 12831, - "end": 12840, + "start": 14819, + "end": 14828, "loc": { "start": { - "line": 334, + "line": 388, "column": 24 }, "end": { - "line": 334, + "line": 388, "column": 33 }, "identifierName": "processes" @@ -7734,72 +7734,72 @@ }, { "type": "ExpressionStatement", - "start": 12860, - "end": 12879, + "start": 14848, + "end": 14867, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 12860, - "end": 12878, + "start": 14848, + "end": 14866, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 12860, - "end": 12870, + "start": 14848, + "end": 14858, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 12860, - "end": 12864, + "start": 14848, + "end": 14852, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 20 } } }, "property": { "type": "Identifier", - "start": 12865, - "end": 12870, + "start": 14853, + "end": 14858, "loc": { "start": { - "line": 335, + "line": 389, "column": 21 }, "end": { - "line": 335, + "line": 389, "column": 26 }, "identifierName": "error" @@ -7811,15 +7811,15 @@ "arguments": [ { "type": "Identifier", - "start": 12871, - "end": 12877, + "start": 14859, + "end": 14865, "loc": { "start": { - "line": 335, + "line": 389, "column": 27 }, "end": { - "line": 335, + "line": 389, "column": 33 }, "identifierName": "errMsg" @@ -7831,57 +7831,57 @@ }, { "type": "ExpressionStatement", - "start": 12896, - "end": 12929, + "start": 14884, + "end": 14917, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 49 } }, "expression": { "type": "CallExpression", - "start": 12896, - "end": 12928, + "start": 14884, + "end": 14916, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 12896, - "end": 12911, + "start": 14884, + "end": 14899, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 31 } }, "object": { "type": "Identifier", - "start": 12896, - "end": 12906, + "start": 14884, + "end": 14894, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 26 }, "identifierName": "sceneModel" @@ -7890,15 +7890,15 @@ }, "property": { "type": "Identifier", - "start": 12907, - "end": 12911, + "start": 14895, + "end": 14899, "loc": { "start": { - "line": 336, + "line": 390, "column": 27 }, "end": { - "line": 336, + "line": 390, "column": 31 }, "identifierName": "fire" @@ -7910,15 +7910,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 12912, - "end": 12919, + "start": 14900, + "end": 14907, "loc": { "start": { - "line": 336, + "line": 390, "column": 32 }, "end": { - "line": 336, + "line": 390, "column": 39 } }, @@ -7930,15 +7930,15 @@ }, { "type": "Identifier", - "start": 12921, - "end": 12927, + "start": 14909, + "end": 14915, "loc": { "start": { - "line": 336, + "line": 390, "column": 41 }, "end": { - "line": 336, + "line": 390, "column": 47 }, "identifierName": "errMsg" @@ -7961,15 +7961,15 @@ }, { "type": "ClassMethod", - "start": 12957, - "end": 22356, + "start": 14945, + "end": 24344, "loc": { "start": { - "line": 340, + "line": 394, "column": 4 }, "end": { - "line": 552, + "line": 606, "column": 5 } }, @@ -7977,15 +7977,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 12957, - "end": 12968, + "start": 14945, + "end": 14956, "loc": { "start": { - "line": 340, + "line": 394, "column": 4 }, "end": { - "line": 340, + "line": 394, "column": 15 }, "identifierName": "_parseModel" @@ -8000,15 +8000,15 @@ "params": [ { "type": "Identifier", - "start": 12969, - "end": 12980, + "start": 14957, + "end": 14968, "loc": { "start": { - "line": 340, + "line": 394, "column": 16 }, "end": { - "line": 340, + "line": 394, "column": 27 }, "identifierName": "arrayBuffer" @@ -8017,15 +8017,15 @@ }, { "type": "Identifier", - "start": 12982, - "end": 12988, + "start": 14970, + "end": 14976, "loc": { "start": { - "line": 340, + "line": 394, "column": 29 }, "end": { - "line": 340, + "line": 394, "column": 35 }, "identifierName": "params" @@ -8034,15 +8034,15 @@ }, { "type": "Identifier", - "start": 12990, - "end": 12997, + "start": 14978, + "end": 14985, "loc": { "start": { - "line": 340, + "line": 394, "column": 37 }, "end": { - "line": 340, + "line": 394, "column": 44 }, "identifierName": "options" @@ -8051,15 +8051,15 @@ }, { "type": "Identifier", - "start": 12999, - "end": 13009, + "start": 14987, + "end": 14997, "loc": { "start": { - "line": 340, + "line": 394, "column": 46 }, "end": { - "line": 340, + "line": 394, "column": 56 }, "identifierName": "sceneModel" @@ -8069,44 +8069,44 @@ ], "body": { "type": "BlockStatement", - "start": 13011, - "end": 22356, + "start": 14999, + "end": 24344, "loc": { "start": { - "line": 340, + "line": 394, "column": 58 }, "end": { - "line": 552, + "line": 606, "column": 5 } }, "body": [ { "type": "FunctionDeclaration", - "start": 13022, - "end": 13567, + "start": 15010, + "end": 15555, "loc": { "start": { - "line": 342, + "line": 396, "column": 8 }, "end": { - "line": 354, + "line": 408, "column": 9 } }, "id": { "type": "Identifier", - "start": 13031, - "end": 13044, + "start": 15019, + "end": 15032, "loc": { "start": { - "line": 342, + "line": 396, "column": 17 }, "end": { - "line": 342, + "line": 396, "column": 30 }, "identifierName": "readPositions" @@ -8119,15 +8119,15 @@ "params": [ { "type": "Identifier", - "start": 13045, - "end": 13063, + "start": 15033, + "end": 15051, "loc": { "start": { - "line": 342, + "line": 396, "column": 31 }, "end": { - "line": 342, + "line": 396, "column": 49 }, "identifierName": "attributesPosition" @@ -8137,59 +8137,59 @@ ], "body": { "type": "BlockStatement", - "start": 13065, - "end": 13567, + "start": 15053, + "end": 15555, "loc": { "start": { - "line": 342, + "line": 396, "column": 51 }, "end": { - "line": 354, + "line": 408, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 13079, - "end": 13127, + "start": 15067, + "end": 15115, "loc": { "start": { - "line": 343, + "line": 397, "column": 12 }, "end": { - "line": 343, + "line": 397, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13085, - "end": 13126, + "start": 15073, + "end": 15114, "loc": { "start": { - "line": 343, + "line": 397, "column": 18 }, "end": { - "line": 343, + "line": 397, "column": 59 } }, "id": { "type": "Identifier", - "start": 13085, - "end": 13099, + "start": 15073, + "end": 15087, "loc": { "start": { - "line": 343, + "line": 397, "column": 18 }, "end": { - "line": 343, + "line": 397, "column": 32 }, "identifierName": "positionsValue" @@ -8198,29 +8198,29 @@ }, "init": { "type": "MemberExpression", - "start": 13102, - "end": 13126, + "start": 15090, + "end": 15114, "loc": { "start": { - "line": 343, + "line": 397, "column": 35 }, "end": { - "line": 343, + "line": 397, "column": 59 } }, "object": { "type": "Identifier", - "start": 13102, - "end": 13120, + "start": 15090, + "end": 15108, "loc": { "start": { - "line": 343, + "line": 397, "column": 35 }, "end": { - "line": 343, + "line": 397, "column": 53 }, "identifierName": "attributesPosition" @@ -8229,15 +8229,15 @@ }, "property": { "type": "Identifier", - "start": 13121, - "end": 13126, + "start": 15109, + "end": 15114, "loc": { "start": { - "line": 343, + "line": 397, "column": 54 }, "end": { - "line": 343, + "line": 397, "column": 59 }, "identifierName": "value" @@ -8252,43 +8252,43 @@ }, { "type": "IfStatement", - "start": 13140, - "end": 13522, + "start": 15128, + "end": 15510, "loc": { "start": { - "line": 344, + "line": 398, "column": 12 }, "end": { - "line": 352, + "line": 406, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 13144, - "end": 13158, + "start": 15132, + "end": 15146, "loc": { "start": { - "line": 344, + "line": 398, "column": 16 }, "end": { - "line": 344, + "line": 398, "column": 30 } }, "object": { "type": "Identifier", - "start": 13144, - "end": 13150, + "start": 15132, + "end": 15138, "loc": { "start": { - "line": 344, + "line": 398, "column": 16 }, "end": { - "line": 344, + "line": 398, "column": 22 }, "identifierName": "params" @@ -8297,15 +8297,15 @@ }, "property": { "type": "Identifier", - "start": 13151, - "end": 13158, + "start": 15139, + "end": 15146, "loc": { "start": { - "line": 344, + "line": 398, "column": 23 }, "end": { - "line": 344, + "line": 398, "column": 30 }, "identifierName": "rotateX" @@ -8316,44 +8316,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 13160, - "end": 13522, + "start": 15148, + "end": 15510, "loc": { "start": { - "line": 344, + "line": 398, "column": 32 }, "end": { - "line": 352, + "line": 406, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 13178, - "end": 13508, + "start": 15166, + "end": 15496, "loc": { "start": { - "line": 345, + "line": 399, "column": 16 }, "end": { - "line": 351, + "line": 405, "column": 17 } }, "test": { "type": "Identifier", - "start": 13182, - "end": 13196, + "start": 15170, + "end": 15184, "loc": { "start": { - "line": 345, + "line": 399, "column": 20 }, "end": { - "line": 345, + "line": 399, "column": 34 }, "identifierName": "positionsValue" @@ -8362,73 +8362,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 13198, - "end": 13508, + "start": 15186, + "end": 15496, "loc": { "start": { - "line": 345, + "line": 399, "column": 36 }, "end": { - "line": 351, + "line": 405, "column": 17 } }, "body": [ { "type": "ForStatement", - "start": 13220, - "end": 13490, + "start": 15208, + "end": 15478, "loc": { "start": { - "line": 346, + "line": 400, "column": 20 }, "end": { - "line": 350, + "line": 404, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 13225, - "end": 13263, + "start": 15213, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 25 }, "end": { - "line": 346, + "line": 400, "column": 63 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13229, - "end": 13234, + "start": 15217, + "end": 15222, "loc": { "start": { - "line": 346, + "line": 400, "column": 29 }, "end": { - "line": 346, + "line": 400, "column": 34 } }, "id": { "type": "Identifier", - "start": 13229, - "end": 13230, + "start": 15217, + "end": 15218, "loc": { "start": { - "line": 346, + "line": 400, "column": 29 }, "end": { - "line": 346, + "line": 400, "column": 30 }, "identifierName": "i" @@ -8437,15 +8437,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13233, - "end": 13234, + "start": 15221, + "end": 15222, "loc": { "start": { - "line": 346, + "line": 400, "column": 33 }, "end": { - "line": 346, + "line": 400, "column": 34 } }, @@ -8458,29 +8458,29 @@ }, { "type": "VariableDeclarator", - "start": 13236, - "end": 13263, + "start": 15224, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 36 }, "end": { - "line": 346, + "line": 400, "column": 63 } }, "id": { "type": "Identifier", - "start": 13236, - "end": 13239, + "start": 15224, + "end": 15227, "loc": { "start": { - "line": 346, + "line": 400, "column": 36 }, "end": { - "line": 346, + "line": 400, "column": 39 }, "identifierName": "len" @@ -8489,29 +8489,29 @@ }, "init": { "type": "MemberExpression", - "start": 13242, - "end": 13263, + "start": 15230, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 42 }, "end": { - "line": 346, + "line": 400, "column": 63 } }, "object": { "type": "Identifier", - "start": 13242, - "end": 13256, + "start": 15230, + "end": 15244, "loc": { "start": { - "line": 346, + "line": 400, "column": 42 }, "end": { - "line": 346, + "line": 400, "column": 56 }, "identifierName": "positionsValue" @@ -8520,15 +8520,15 @@ }, "property": { "type": "Identifier", - "start": 13257, - "end": 13263, + "start": 15245, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 57 }, "end": { - "line": 346, + "line": 400, "column": 63 }, "identifierName": "length" @@ -8543,29 +8543,29 @@ }, "test": { "type": "BinaryExpression", - "start": 13265, - "end": 13272, + "start": 15253, + "end": 15260, "loc": { "start": { - "line": 346, + "line": 400, "column": 65 }, "end": { - "line": 346, + "line": 400, "column": 72 } }, "left": { "type": "Identifier", - "start": 13265, - "end": 13266, + "start": 15253, + "end": 15254, "loc": { "start": { - "line": 346, + "line": 400, "column": 65 }, "end": { - "line": 346, + "line": 400, "column": 66 }, "identifierName": "i" @@ -8575,15 +8575,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 13269, - "end": 13272, + "start": 15257, + "end": 15260, "loc": { "start": { - "line": 346, + "line": 400, "column": 69 }, "end": { - "line": 346, + "line": 400, "column": 72 }, "identifierName": "len" @@ -8593,30 +8593,30 @@ }, "update": { "type": "AssignmentExpression", - "start": 13274, - "end": 13280, + "start": 15262, + "end": 15268, "loc": { "start": { - "line": 346, + "line": 400, "column": 74 }, "end": { - "line": 346, + "line": 400, "column": 80 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 13274, - "end": 13275, + "start": 15262, + "end": 15263, "loc": { "start": { - "line": 346, + "line": 400, "column": 74 }, "end": { - "line": 346, + "line": 400, "column": 75 }, "identifierName": "i" @@ -8625,15 +8625,15 @@ }, "right": { "type": "NumericLiteral", - "start": 13279, - "end": 13280, + "start": 15267, + "end": 15268, "loc": { "start": { - "line": 346, + "line": 400, "column": 79 }, "end": { - "line": 346, + "line": 400, "column": 80 } }, @@ -8646,59 +8646,59 @@ }, "body": { "type": "BlockStatement", - "start": 13282, - "end": 13490, + "start": 15270, + "end": 15478, "loc": { "start": { - "line": 346, + "line": 400, "column": 82 }, "end": { - "line": 350, + "line": 404, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 13308, - "end": 13343, + "start": 15296, + "end": 15331, "loc": { "start": { - "line": 347, + "line": 401, "column": 24 }, "end": { - "line": 347, + "line": 401, "column": 59 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13314, - "end": 13342, + "start": 15302, + "end": 15330, "loc": { "start": { - "line": 347, + "line": 401, "column": 30 }, "end": { - "line": 347, + "line": 401, "column": 58 } }, "id": { "type": "Identifier", - "start": 13314, - "end": 13318, + "start": 15302, + "end": 15306, "loc": { "start": { - "line": 347, + "line": 401, "column": 30 }, "end": { - "line": 347, + "line": 401, "column": 34 }, "identifierName": "temp" @@ -8707,29 +8707,29 @@ }, "init": { "type": "MemberExpression", - "start": 13321, - "end": 13342, + "start": 15309, + "end": 15330, "loc": { "start": { - "line": 347, + "line": 401, "column": 37 }, "end": { - "line": 347, + "line": 401, "column": 58 } }, "object": { "type": "Identifier", - "start": 13321, - "end": 13335, + "start": 15309, + "end": 15323, "loc": { "start": { - "line": 347, + "line": 401, "column": 37 }, "end": { - "line": 347, + "line": 401, "column": 51 }, "identifierName": "positionsValue" @@ -8738,29 +8738,29 @@ }, "property": { "type": "BinaryExpression", - "start": 13336, - "end": 13341, + "start": 15324, + "end": 15329, "loc": { "start": { - "line": 347, + "line": 401, "column": 52 }, "end": { - "line": 347, + "line": 401, "column": 57 } }, "left": { "type": "Identifier", - "start": 13336, - "end": 13337, + "start": 15324, + "end": 15325, "loc": { "start": { - "line": 347, + "line": 401, "column": 52 }, "end": { - "line": 347, + "line": 401, "column": 53 }, "identifierName": "i" @@ -8770,15 +8770,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 13340, - "end": 13341, + "start": 15328, + "end": 15329, "loc": { "start": { - "line": 347, + "line": 401, "column": 56 }, "end": { - "line": 347, + "line": 401, "column": 57 } }, @@ -8797,58 +8797,58 @@ }, { "type": "ExpressionStatement", - "start": 13368, - "end": 13414, + "start": 15356, + "end": 15402, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 13368, - "end": 13413, + "start": 15356, + "end": 15401, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 69 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 13368, - "end": 13389, + "start": 15356, + "end": 15377, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 45 } }, "object": { "type": "Identifier", - "start": 13368, - "end": 13382, + "start": 15356, + "end": 15370, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 38 }, "identifierName": "positionsValue" @@ -8857,29 +8857,29 @@ }, "property": { "type": "BinaryExpression", - "start": 13383, - "end": 13388, + "start": 15371, + "end": 15376, "loc": { "start": { - "line": 348, + "line": 402, "column": 39 }, "end": { - "line": 348, + "line": 402, "column": 44 } }, "left": { "type": "Identifier", - "start": 13383, - "end": 13384, + "start": 15371, + "end": 15372, "loc": { "start": { - "line": 348, + "line": 402, "column": 39 }, "end": { - "line": 348, + "line": 402, "column": 40 }, "identifierName": "i" @@ -8889,15 +8889,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 13387, - "end": 13388, + "start": 15375, + "end": 15376, "loc": { "start": { - "line": 348, + "line": 402, "column": 43 }, "end": { - "line": 348, + "line": 402, "column": 44 } }, @@ -8912,29 +8912,29 @@ }, "right": { "type": "MemberExpression", - "start": 13392, - "end": 13413, + "start": 15380, + "end": 15401, "loc": { "start": { - "line": 348, + "line": 402, "column": 48 }, "end": { - "line": 348, + "line": 402, "column": 69 } }, "object": { "type": "Identifier", - "start": 13392, - "end": 13406, + "start": 15380, + "end": 15394, "loc": { "start": { - "line": 348, + "line": 402, "column": 48 }, "end": { - "line": 348, + "line": 402, "column": 62 }, "identifierName": "positionsValue" @@ -8943,29 +8943,29 @@ }, "property": { "type": "BinaryExpression", - "start": 13407, - "end": 13412, + "start": 15395, + "end": 15400, "loc": { "start": { - "line": 348, + "line": 402, "column": 63 }, "end": { - "line": 348, + "line": 402, "column": 68 } }, "left": { "type": "Identifier", - "start": 13407, - "end": 13408, + "start": 15395, + "end": 15396, "loc": { "start": { - "line": 348, + "line": 402, "column": 63 }, "end": { - "line": 348, + "line": 402, "column": 64 }, "identifierName": "i" @@ -8975,15 +8975,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 13411, - "end": 13412, + "start": 15399, + "end": 15400, "loc": { "start": { - "line": 348, + "line": 402, "column": 67 }, "end": { - "line": 348, + "line": 402, "column": 68 } }, @@ -9000,58 +9000,58 @@ }, { "type": "ExpressionStatement", - "start": 13439, - "end": 13468, + "start": 15427, + "end": 15456, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 13439, - "end": 13467, + "start": 15427, + "end": 15455, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 13439, - "end": 13460, + "start": 15427, + "end": 15448, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 45 } }, "object": { "type": "Identifier", - "start": 13439, - "end": 13453, + "start": 15427, + "end": 15441, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 38 }, "identifierName": "positionsValue" @@ -9060,29 +9060,29 @@ }, "property": { "type": "BinaryExpression", - "start": 13454, - "end": 13459, + "start": 15442, + "end": 15447, "loc": { "start": { - "line": 349, + "line": 403, "column": 39 }, "end": { - "line": 349, + "line": 403, "column": 44 } }, "left": { "type": "Identifier", - "start": 13454, - "end": 13455, + "start": 15442, + "end": 15443, "loc": { "start": { - "line": 349, + "line": 403, "column": 39 }, "end": { - "line": 349, + "line": 403, "column": 40 }, "identifierName": "i" @@ -9092,15 +9092,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 13458, - "end": 13459, + "start": 15446, + "end": 15447, "loc": { "start": { - "line": 349, + "line": 403, "column": 43 }, "end": { - "line": 349, + "line": 403, "column": 44 } }, @@ -9115,15 +9115,15 @@ }, "right": { "type": "Identifier", - "start": 13463, - "end": 13467, + "start": 15451, + "end": 15455, "loc": { "start": { - "line": 349, + "line": 403, "column": 48 }, "end": { - "line": 349, + "line": 403, "column": 52 }, "identifierName": "temp" @@ -9148,29 +9148,29 @@ }, { "type": "ReturnStatement", - "start": 13535, - "end": 13557, + "start": 15523, + "end": 15545, "loc": { "start": { - "line": 353, + "line": 407, "column": 12 }, "end": { - "line": 353, + "line": 407, "column": 34 } }, "argument": { "type": "Identifier", - "start": 13542, - "end": 13556, + "start": 15530, + "end": 15544, "loc": { "start": { - "line": 353, + "line": 407, "column": 19 }, "end": { - "line": 353, + "line": 407, "column": 33 }, "identifierName": "positionsValue" @@ -9184,29 +9184,29 @@ }, { "type": "FunctionDeclaration", - "start": 13577, - "end": 14377, + "start": 15565, + "end": 16365, "loc": { "start": { - "line": 356, + "line": 410, "column": 8 }, "end": { - "line": 369, + "line": 423, "column": 9 } }, "id": { "type": "Identifier", - "start": 13586, - "end": 13610, + "start": 15574, + "end": 15598, "loc": { "start": { - "line": 356, + "line": 410, "column": 17 }, "end": { - "line": 356, + "line": 410, "column": 41 }, "identifierName": "readColorsAndIntensities" @@ -9219,15 +9219,15 @@ "params": [ { "type": "Identifier", - "start": 13611, - "end": 13626, + "start": 15599, + "end": 15614, "loc": { "start": { - "line": 356, + "line": 410, "column": 42 }, "end": { - "line": 356, + "line": 410, "column": 57 }, "identifierName": "attributesColor" @@ -9236,15 +9236,15 @@ }, { "type": "Identifier", - "start": 13628, - "end": 13647, + "start": 15616, + "end": 15635, "loc": { "start": { - "line": 356, + "line": 410, "column": 59 }, "end": { - "line": 356, + "line": 410, "column": 78 }, "identifierName": "attributesIntensity" @@ -9254,59 +9254,59 @@ ], "body": { "type": "BlockStatement", - "start": 13649, - "end": 14377, + "start": 15637, + "end": 16365, "loc": { "start": { - "line": 356, + "line": 410, "column": 80 }, "end": { - "line": 369, + "line": 423, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 13663, - "end": 13700, + "start": 15651, + "end": 15688, "loc": { "start": { - "line": 357, + "line": 411, "column": 12 }, "end": { - "line": 357, + "line": 411, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13669, - "end": 13699, + "start": 15657, + "end": 15687, "loc": { "start": { - "line": 357, + "line": 411, "column": 18 }, "end": { - "line": 357, + "line": 411, "column": 48 } }, "id": { "type": "Identifier", - "start": 13669, - "end": 13675, + "start": 15657, + "end": 15663, "loc": { "start": { - "line": 357, + "line": 411, "column": 18 }, "end": { - "line": 357, + "line": 411, "column": 24 }, "identifierName": "colors" @@ -9315,29 +9315,29 @@ }, "init": { "type": "MemberExpression", - "start": 13678, - "end": 13699, + "start": 15666, + "end": 15687, "loc": { "start": { - "line": 357, + "line": 411, "column": 27 }, "end": { - "line": 357, + "line": 411, "column": 48 } }, "object": { "type": "Identifier", - "start": 13678, - "end": 13693, + "start": 15666, + "end": 15681, "loc": { "start": { - "line": 357, + "line": 411, "column": 27 }, "end": { - "line": 357, + "line": 411, "column": 42 }, "identifierName": "attributesColor" @@ -9346,15 +9346,15 @@ }, "property": { "type": "Identifier", - "start": 13694, - "end": 13699, + "start": 15682, + "end": 15687, "loc": { "start": { - "line": 357, + "line": 411, "column": 43 }, "end": { - "line": 357, + "line": 411, "column": 48 }, "identifierName": "value" @@ -9369,44 +9369,44 @@ }, { "type": "VariableDeclaration", - "start": 13713, - "end": 13752, + "start": 15701, + "end": 15740, "loc": { "start": { - "line": 358, + "line": 412, "column": 12 }, "end": { - "line": 358, + "line": 412, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13719, - "end": 13751, + "start": 15707, + "end": 15739, "loc": { "start": { - "line": 358, + "line": 412, "column": 18 }, "end": { - "line": 358, + "line": 412, "column": 50 } }, "id": { "type": "Identifier", - "start": 13719, - "end": 13728, + "start": 15707, + "end": 15716, "loc": { "start": { - "line": 358, + "line": 412, "column": 18 }, "end": { - "line": 358, + "line": 412, "column": 27 }, "identifierName": "colorSize" @@ -9415,29 +9415,29 @@ }, "init": { "type": "MemberExpression", - "start": 13731, - "end": 13751, + "start": 15719, + "end": 15739, "loc": { "start": { - "line": 358, + "line": 412, "column": 30 }, "end": { - "line": 358, + "line": 412, "column": 50 } }, "object": { "type": "Identifier", - "start": 13731, - "end": 13746, + "start": 15719, + "end": 15734, "loc": { "start": { - "line": 358, + "line": 412, "column": 30 }, "end": { - "line": 358, + "line": 412, "column": 45 }, "identifierName": "attributesColor" @@ -9446,15 +9446,15 @@ }, "property": { "type": "Identifier", - "start": 13747, - "end": 13751, + "start": 15735, + "end": 15739, "loc": { "start": { - "line": 358, + "line": 412, "column": 46 }, "end": { - "line": 358, + "line": 412, "column": 50 }, "identifierName": "size" @@ -9469,44 +9469,44 @@ }, { "type": "VariableDeclaration", - "start": 13765, - "end": 13811, + "start": 15753, + "end": 15799, "loc": { "start": { - "line": 359, + "line": 413, "column": 12 }, "end": { - "line": 359, + "line": 413, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13771, - "end": 13810, + "start": 15759, + "end": 15798, "loc": { "start": { - "line": 359, + "line": 413, "column": 18 }, "end": { - "line": 359, + "line": 413, "column": 57 } }, "id": { "type": "Identifier", - "start": 13771, - "end": 13782, + "start": 15759, + "end": 15770, "loc": { "start": { - "line": 359, + "line": 413, "column": 18 }, "end": { - "line": 359, + "line": 413, "column": 29 }, "identifierName": "intensities" @@ -9515,29 +9515,29 @@ }, "init": { "type": "MemberExpression", - "start": 13785, - "end": 13810, + "start": 15773, + "end": 15798, "loc": { "start": { - "line": 359, + "line": 413, "column": 32 }, "end": { - "line": 359, + "line": 413, "column": 57 } }, "object": { "type": "Identifier", - "start": 13785, - "end": 13804, + "start": 15773, + "end": 15792, "loc": { "start": { - "line": 359, + "line": 413, "column": 32 }, "end": { - "line": 359, + "line": 413, "column": 51 }, "identifierName": "attributesIntensity" @@ -9546,15 +9546,15 @@ }, "property": { "type": "Identifier", - "start": 13805, - "end": 13810, + "start": 15793, + "end": 15798, "loc": { "start": { - "line": 359, + "line": 413, "column": 52 }, "end": { - "line": 359, + "line": 413, "column": 57 }, "identifierName": "value" @@ -9569,44 +9569,44 @@ }, { "type": "VariableDeclaration", - "start": 13824, - "end": 13876, + "start": 15812, + "end": 15864, "loc": { "start": { - "line": 360, + "line": 414, "column": 12 }, "end": { - "line": 360, + "line": 414, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13830, - "end": 13875, + "start": 15818, + "end": 15863, "loc": { "start": { - "line": 360, + "line": 414, "column": 18 }, "end": { - "line": 360, + "line": 414, "column": 63 } }, "id": { "type": "Identifier", - "start": 13830, - "end": 13850, + "start": 15818, + "end": 15838, "loc": { "start": { - "line": 360, + "line": 414, "column": 18 }, "end": { - "line": 360, + "line": 414, "column": 38 }, "identifierName": "colorsCompressedSize" @@ -9615,43 +9615,43 @@ }, "init": { "type": "BinaryExpression", - "start": 13853, - "end": 13875, + "start": 15841, + "end": 15863, "loc": { "start": { - "line": 360, + "line": 414, "column": 41 }, "end": { - "line": 360, + "line": 414, "column": 63 } }, "left": { "type": "MemberExpression", - "start": 13853, - "end": 13871, + "start": 15841, + "end": 15859, "loc": { "start": { - "line": 360, + "line": 414, "column": 41 }, "end": { - "line": 360, + "line": 414, "column": 59 } }, "object": { "type": "Identifier", - "start": 13853, - "end": 13864, + "start": 15841, + "end": 15852, "loc": { "start": { - "line": 360, + "line": 414, "column": 41 }, "end": { - "line": 360, + "line": 414, "column": 52 }, "identifierName": "intensities" @@ -9660,15 +9660,15 @@ }, "property": { "type": "Identifier", - "start": 13865, - "end": 13871, + "start": 15853, + "end": 15859, "loc": { "start": { - "line": 360, + "line": 414, "column": 53 }, "end": { - "line": 360, + "line": 414, "column": 59 }, "identifierName": "length" @@ -9680,15 +9680,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 13874, - "end": 13875, + "start": 15862, + "end": 15863, "loc": { "start": { - "line": 360, + "line": 414, "column": 62 }, "end": { - "line": 360, + "line": 414, "column": 63 } }, @@ -9705,44 +9705,44 @@ }, { "type": "VariableDeclaration", - "start": 13889, - "end": 13951, + "start": 15877, + "end": 15939, "loc": { "start": { - "line": 361, + "line": 415, "column": 12 }, "end": { - "line": 361, + "line": 415, "column": 74 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13895, - "end": 13950, + "start": 15883, + "end": 15938, "loc": { "start": { - "line": 361, + "line": 415, "column": 18 }, "end": { - "line": 361, + "line": 415, "column": 73 } }, "id": { "type": "Identifier", - "start": 13895, - "end": 13911, + "start": 15883, + "end": 15899, "loc": { "start": { - "line": 361, + "line": 415, "column": 18 }, "end": { - "line": 361, + "line": 415, "column": 34 }, "identifierName": "colorsCompressed" @@ -9751,29 +9751,29 @@ }, "init": { "type": "NewExpression", - "start": 13914, - "end": 13950, + "start": 15902, + "end": 15938, "loc": { "start": { - "line": 361, + "line": 415, "column": 37 }, "end": { - "line": 361, + "line": 415, "column": 73 } }, "callee": { "type": "Identifier", - "start": 13918, - "end": 13928, + "start": 15906, + "end": 15916, "loc": { "start": { - "line": 361, + "line": 415, "column": 41 }, "end": { - "line": 361, + "line": 415, "column": 51 }, "identifierName": "Uint8Array" @@ -9783,15 +9783,15 @@ "arguments": [ { "type": "Identifier", - "start": 13929, - "end": 13949, + "start": 15917, + "end": 15937, "loc": { "start": { - "line": 361, + "line": 415, "column": 52 }, "end": { - "line": 361, + "line": 415, "column": 72 }, "identifierName": "colorsCompressedSize" @@ -9806,58 +9806,58 @@ }, { "type": "ForStatement", - "start": 13964, - "end": 14330, + "start": 15952, + "end": 16318, "loc": { "start": { - "line": 362, + "line": 416, "column": 12 }, "end": { - "line": 367, + "line": 421, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 13969, - "end": 14018, + "start": 15957, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 17 }, "end": { - "line": 362, + "line": 416, "column": 66 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13973, - "end": 13978, + "start": 15961, + "end": 15966, "loc": { "start": { - "line": 362, + "line": 416, "column": 21 }, "end": { - "line": 362, + "line": 416, "column": 26 } }, "id": { "type": "Identifier", - "start": 13973, - "end": 13974, + "start": 15961, + "end": 15962, "loc": { "start": { - "line": 362, + "line": 416, "column": 21 }, "end": { - "line": 362, + "line": 416, "column": 22 }, "identifierName": "i" @@ -9866,15 +9866,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13977, - "end": 13978, + "start": 15965, + "end": 15966, "loc": { "start": { - "line": 362, + "line": 416, "column": 25 }, "end": { - "line": 362, + "line": 416, "column": 26 } }, @@ -9887,29 +9887,29 @@ }, { "type": "VariableDeclarator", - "start": 13980, - "end": 13985, + "start": 15968, + "end": 15973, "loc": { "start": { - "line": 362, + "line": 416, "column": 28 }, "end": { - "line": 362, + "line": 416, "column": 33 } }, "id": { "type": "Identifier", - "start": 13980, - "end": 13981, + "start": 15968, + "end": 15969, "loc": { "start": { - "line": 362, + "line": 416, "column": 28 }, "end": { - "line": 362, + "line": 416, "column": 29 }, "identifierName": "j" @@ -9918,15 +9918,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13984, - "end": 13985, + "start": 15972, + "end": 15973, "loc": { "start": { - "line": 362, + "line": 416, "column": 32 }, "end": { - "line": 362, + "line": 416, "column": 33 } }, @@ -9939,29 +9939,29 @@ }, { "type": "VariableDeclarator", - "start": 13987, - "end": 13992, + "start": 15975, + "end": 15980, "loc": { "start": { - "line": 362, + "line": 416, "column": 35 }, "end": { - "line": 362, + "line": 416, "column": 40 } }, "id": { "type": "Identifier", - "start": 13987, - "end": 13988, + "start": 15975, + "end": 15976, "loc": { "start": { - "line": 362, + "line": 416, "column": 35 }, "end": { - "line": 362, + "line": 416, "column": 36 }, "identifierName": "k" @@ -9970,15 +9970,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13991, - "end": 13992, + "start": 15979, + "end": 15980, "loc": { "start": { - "line": 362, + "line": 416, "column": 39 }, "end": { - "line": 362, + "line": 416, "column": 40 } }, @@ -9991,29 +9991,29 @@ }, { "type": "VariableDeclarator", - "start": 13994, - "end": 14018, + "start": 15982, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 42 }, "end": { - "line": 362, + "line": 416, "column": 66 } }, "id": { "type": "Identifier", - "start": 13994, - "end": 13997, + "start": 15982, + "end": 15985, "loc": { "start": { - "line": 362, + "line": 416, "column": 42 }, "end": { - "line": 362, + "line": 416, "column": 45 }, "identifierName": "len" @@ -10022,29 +10022,29 @@ }, "init": { "type": "MemberExpression", - "start": 14000, - "end": 14018, + "start": 15988, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 48 }, "end": { - "line": 362, + "line": 416, "column": 66 } }, "object": { "type": "Identifier", - "start": 14000, - "end": 14011, + "start": 15988, + "end": 15999, "loc": { "start": { - "line": 362, + "line": 416, "column": 48 }, "end": { - "line": 362, + "line": 416, "column": 59 }, "identifierName": "intensities" @@ -10053,15 +10053,15 @@ }, "property": { "type": "Identifier", - "start": 14012, - "end": 14018, + "start": 16000, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 60 }, "end": { - "line": 362, + "line": 416, "column": 66 }, "identifierName": "length" @@ -10076,29 +10076,29 @@ }, "test": { "type": "BinaryExpression", - "start": 14020, - "end": 14027, + "start": 16008, + "end": 16015, "loc": { "start": { - "line": 362, + "line": 416, "column": 68 }, "end": { - "line": 362, + "line": 416, "column": 75 } }, "left": { "type": "Identifier", - "start": 14020, - "end": 14021, + "start": 16008, + "end": 16009, "loc": { "start": { - "line": 362, + "line": 416, "column": 68 }, "end": { - "line": 362, + "line": 416, "column": 69 }, "identifierName": "i" @@ -10108,15 +10108,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 14024, - "end": 14027, + "start": 16012, + "end": 16015, "loc": { "start": { - "line": 362, + "line": 416, "column": 72 }, "end": { - "line": 362, + "line": 416, "column": 75 }, "identifierName": "len" @@ -10126,30 +10126,30 @@ }, "update": { "type": "SequenceExpression", - "start": 14029, - "end": 14056, + "start": 16017, + "end": 16044, "loc": { "start": { - "line": 362, + "line": 416, "column": 77 }, "end": { - "line": 362, + "line": 416, "column": 104 } }, "expressions": [ { "type": "UpdateExpression", - "start": 14029, - "end": 14032, + "start": 16017, + "end": 16020, "loc": { "start": { - "line": 362, + "line": 416, "column": 77 }, "end": { - "line": 362, + "line": 416, "column": 80 } }, @@ -10157,15 +10157,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 14029, - "end": 14030, + "start": 16017, + "end": 16018, "loc": { "start": { - "line": 362, + "line": 416, "column": 77 }, "end": { - "line": 362, + "line": 416, "column": 78 }, "identifierName": "i" @@ -10175,30 +10175,30 @@ }, { "type": "AssignmentExpression", - "start": 14034, - "end": 14048, + "start": 16022, + "end": 16036, "loc": { "start": { - "line": 362, + "line": 416, "column": 82 }, "end": { - "line": 362, + "line": 416, "column": 96 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 14034, - "end": 14035, + "start": 16022, + "end": 16023, "loc": { "start": { - "line": 362, + "line": 416, "column": 82 }, "end": { - "line": 362, + "line": 416, "column": 83 }, "identifierName": "k" @@ -10207,15 +10207,15 @@ }, "right": { "type": "Identifier", - "start": 14039, - "end": 14048, + "start": 16027, + "end": 16036, "loc": { "start": { - "line": 362, + "line": 416, "column": 87 }, "end": { - "line": 362, + "line": 416, "column": 96 }, "identifierName": "colorSize" @@ -10225,30 +10225,30 @@ }, { "type": "AssignmentExpression", - "start": 14050, - "end": 14056, + "start": 16038, + "end": 16044, "loc": { "start": { - "line": 362, + "line": 416, "column": 98 }, "end": { - "line": 362, + "line": 416, "column": 104 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 14050, - "end": 14051, + "start": 16038, + "end": 16039, "loc": { "start": { - "line": 362, + "line": 416, "column": 98 }, "end": { - "line": 362, + "line": 416, "column": 99 }, "identifierName": "j" @@ -10257,15 +10257,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14055, - "end": 14056, + "start": 16043, + "end": 16044, "loc": { "start": { - "line": 362, + "line": 416, "column": 103 }, "end": { - "line": 362, + "line": 416, "column": 104 } }, @@ -10280,73 +10280,73 @@ }, "body": { "type": "BlockStatement", - "start": 14058, - "end": 14330, + "start": 16046, + "end": 16318, "loc": { "start": { - "line": 362, + "line": 416, "column": 106 }, "end": { - "line": 367, + "line": 421, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 14076, - "end": 14116, + "start": 16064, + "end": 16104, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 14076, - "end": 14115, + "start": 16064, + "end": 16103, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14076, - "end": 14099, + "start": 16064, + "end": 16087, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 39 } }, "object": { "type": "Identifier", - "start": 14076, - "end": 14092, + "start": 16064, + "end": 16080, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 32 }, "identifierName": "colorsCompressed" @@ -10355,29 +10355,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14093, - "end": 14098, + "start": 16081, + "end": 16086, "loc": { "start": { - "line": 363, + "line": 417, "column": 33 }, "end": { - "line": 363, + "line": 417, "column": 38 } }, "left": { "type": "Identifier", - "start": 14093, - "end": 14094, + "start": 16081, + "end": 16082, "loc": { "start": { - "line": 363, + "line": 417, "column": 33 }, "end": { - "line": 363, + "line": 417, "column": 34 }, "identifierName": "j" @@ -10387,15 +10387,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14097, - "end": 14098, + "start": 16085, + "end": 16086, "loc": { "start": { - "line": 363, + "line": 417, "column": 37 }, "end": { - "line": 363, + "line": 417, "column": 38 } }, @@ -10410,29 +10410,29 @@ }, "right": { "type": "MemberExpression", - "start": 14102, - "end": 14115, + "start": 16090, + "end": 16103, "loc": { "start": { - "line": 363, + "line": 417, "column": 42 }, "end": { - "line": 363, + "line": 417, "column": 55 } }, "object": { "type": "Identifier", - "start": 14102, - "end": 14108, + "start": 16090, + "end": 16096, "loc": { "start": { - "line": 363, + "line": 417, "column": 42 }, "end": { - "line": 363, + "line": 417, "column": 48 }, "identifierName": "colors" @@ -10441,29 +10441,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14109, - "end": 14114, + "start": 16097, + "end": 16102, "loc": { "start": { - "line": 363, + "line": 417, "column": 49 }, "end": { - "line": 363, + "line": 417, "column": 54 } }, "left": { "type": "Identifier", - "start": 14109, - "end": 14110, + "start": 16097, + "end": 16098, "loc": { "start": { - "line": 363, + "line": 417, "column": 49 }, "end": { - "line": 363, + "line": 417, "column": 50 }, "identifierName": "k" @@ -10473,15 +10473,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14113, - "end": 14114, + "start": 16101, + "end": 16102, "loc": { "start": { - "line": 363, + "line": 417, "column": 53 }, "end": { - "line": 363, + "line": 417, "column": 54 } }, @@ -10498,58 +10498,58 @@ }, { "type": "ExpressionStatement", - "start": 14133, - "end": 14173, + "start": 16121, + "end": 16161, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 14133, - "end": 14172, + "start": 16121, + "end": 16160, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14133, - "end": 14156, + "start": 16121, + "end": 16144, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 39 } }, "object": { "type": "Identifier", - "start": 14133, - "end": 14149, + "start": 16121, + "end": 16137, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 32 }, "identifierName": "colorsCompressed" @@ -10558,29 +10558,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14150, - "end": 14155, + "start": 16138, + "end": 16143, "loc": { "start": { - "line": 364, + "line": 418, "column": 33 }, "end": { - "line": 364, + "line": 418, "column": 38 } }, "left": { "type": "Identifier", - "start": 14150, - "end": 14151, + "start": 16138, + "end": 16139, "loc": { "start": { - "line": 364, + "line": 418, "column": 33 }, "end": { - "line": 364, + "line": 418, "column": 34 }, "identifierName": "j" @@ -10590,15 +10590,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14154, - "end": 14155, + "start": 16142, + "end": 16143, "loc": { "start": { - "line": 364, + "line": 418, "column": 37 }, "end": { - "line": 364, + "line": 418, "column": 38 } }, @@ -10613,29 +10613,29 @@ }, "right": { "type": "MemberExpression", - "start": 14159, - "end": 14172, + "start": 16147, + "end": 16160, "loc": { "start": { - "line": 364, + "line": 418, "column": 42 }, "end": { - "line": 364, + "line": 418, "column": 55 } }, "object": { "type": "Identifier", - "start": 14159, - "end": 14165, + "start": 16147, + "end": 16153, "loc": { "start": { - "line": 364, + "line": 418, "column": 42 }, "end": { - "line": 364, + "line": 418, "column": 48 }, "identifierName": "colors" @@ -10644,29 +10644,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14166, - "end": 14171, + "start": 16154, + "end": 16159, "loc": { "start": { - "line": 364, + "line": 418, "column": 49 }, "end": { - "line": 364, + "line": 418, "column": 54 } }, "left": { "type": "Identifier", - "start": 14166, - "end": 14167, + "start": 16154, + "end": 16155, "loc": { "start": { - "line": 364, + "line": 418, "column": 49 }, "end": { - "line": 364, + "line": 418, "column": 50 }, "identifierName": "k" @@ -10676,15 +10676,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14170, - "end": 14171, + "start": 16158, + "end": 16159, "loc": { "start": { - "line": 364, + "line": 418, "column": 53 }, "end": { - "line": 364, + "line": 418, "column": 54 } }, @@ -10701,58 +10701,58 @@ }, { "type": "ExpressionStatement", - "start": 14190, - "end": 14230, + "start": 16178, + "end": 16218, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 14190, - "end": 14229, + "start": 16178, + "end": 16217, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14190, - "end": 14213, + "start": 16178, + "end": 16201, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 39 } }, "object": { "type": "Identifier", - "start": 14190, - "end": 14206, + "start": 16178, + "end": 16194, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 32 }, "identifierName": "colorsCompressed" @@ -10761,29 +10761,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14207, - "end": 14212, + "start": 16195, + "end": 16200, "loc": { "start": { - "line": 365, + "line": 419, "column": 33 }, "end": { - "line": 365, + "line": 419, "column": 38 } }, "left": { "type": "Identifier", - "start": 14207, - "end": 14208, + "start": 16195, + "end": 16196, "loc": { "start": { - "line": 365, + "line": 419, "column": 33 }, "end": { - "line": 365, + "line": 419, "column": 34 }, "identifierName": "j" @@ -10793,15 +10793,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14211, - "end": 14212, + "start": 16199, + "end": 16200, "loc": { "start": { - "line": 365, + "line": 419, "column": 37 }, "end": { - "line": 365, + "line": 419, "column": 38 } }, @@ -10816,29 +10816,29 @@ }, "right": { "type": "MemberExpression", - "start": 14216, - "end": 14229, + "start": 16204, + "end": 16217, "loc": { "start": { - "line": 365, + "line": 419, "column": 42 }, "end": { - "line": 365, + "line": 419, "column": 55 } }, "object": { "type": "Identifier", - "start": 14216, - "end": 14222, + "start": 16204, + "end": 16210, "loc": { "start": { - "line": 365, + "line": 419, "column": 42 }, "end": { - "line": 365, + "line": 419, "column": 48 }, "identifierName": "colors" @@ -10847,29 +10847,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14223, - "end": 14228, + "start": 16211, + "end": 16216, "loc": { "start": { - "line": 365, + "line": 419, "column": 49 }, "end": { - "line": 365, + "line": 419, "column": 54 } }, "left": { "type": "Identifier", - "start": 14223, - "end": 14224, + "start": 16211, + "end": 16212, "loc": { "start": { - "line": 365, + "line": 419, "column": 49 }, "end": { - "line": 365, + "line": 419, "column": 50 }, "identifierName": "k" @@ -10879,15 +10879,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14227, - "end": 14228, + "start": 16215, + "end": 16216, "loc": { "start": { - "line": 365, + "line": 419, "column": 53 }, "end": { - "line": 365, + "line": 419, "column": 54 } }, @@ -10904,58 +10904,58 @@ }, { "type": "ExpressionStatement", - "start": 14247, - "end": 14316, + "start": 16235, + "end": 16304, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 14247, - "end": 14315, + "start": 16235, + "end": 16303, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14247, - "end": 14270, + "start": 16235, + "end": 16258, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 39 } }, "object": { "type": "Identifier", - "start": 14247, - "end": 14263, + "start": 16235, + "end": 16251, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 32 }, "identifierName": "colorsCompressed" @@ -10964,29 +10964,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14264, - "end": 14269, + "start": 16252, + "end": 16257, "loc": { "start": { - "line": 366, + "line": 420, "column": 33 }, "end": { - "line": 366, + "line": 420, "column": 38 } }, "left": { "type": "Identifier", - "start": 14264, - "end": 14265, + "start": 16252, + "end": 16253, "loc": { "start": { - "line": 366, + "line": 420, "column": 33 }, "end": { - "line": 366, + "line": 420, "column": 34 }, "identifierName": "j" @@ -10996,15 +10996,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14268, - "end": 14269, + "start": 16256, + "end": 16257, "loc": { "start": { - "line": 366, + "line": 420, "column": 37 }, "end": { - "line": 366, + "line": 420, "column": 38 } }, @@ -11019,43 +11019,43 @@ }, "right": { "type": "CallExpression", - "start": 14273, - "end": 14315, + "start": 16261, + "end": 16303, "loc": { "start": { - "line": 366, + "line": 420, "column": 42 }, "end": { - "line": 366, + "line": 420, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 14273, - "end": 14283, + "start": 16261, + "end": 16271, "loc": { "start": { - "line": 366, + "line": 420, "column": 42 }, "end": { - "line": 366, + "line": 420, "column": 52 } }, "object": { "type": "Identifier", - "start": 14273, - "end": 14277, + "start": 16261, + "end": 16265, "loc": { "start": { - "line": 366, + "line": 420, "column": 42 }, "end": { - "line": 366, + "line": 420, "column": 46 }, "identifierName": "Math" @@ -11064,15 +11064,15 @@ }, "property": { "type": "Identifier", - "start": 14278, - "end": 14283, + "start": 16266, + "end": 16271, "loc": { "start": { - "line": 366, + "line": 420, "column": 47 }, "end": { - "line": 366, + "line": 420, "column": 52 }, "identifierName": "round" @@ -11084,57 +11084,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 14284, - "end": 14314, + "start": 16272, + "end": 16302, "loc": { "start": { - "line": 366, + "line": 420, "column": 53 }, "end": { - "line": 366, + "line": 420, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 14285, - "end": 14307, + "start": 16273, + "end": 16295, "loc": { "start": { - "line": 366, + "line": 420, "column": 54 }, "end": { - "line": 366, + "line": 420, "column": 76 } }, "left": { "type": "MemberExpression", - "start": 14285, - "end": 14299, + "start": 16273, + "end": 16287, "loc": { "start": { - "line": 366, + "line": 420, "column": 54 }, "end": { - "line": 366, + "line": 420, "column": 68 } }, "object": { "type": "Identifier", - "start": 14285, - "end": 14296, + "start": 16273, + "end": 16284, "loc": { "start": { - "line": 366, + "line": 420, "column": 54 }, "end": { - "line": 366, + "line": 420, "column": 65 }, "identifierName": "intensities" @@ -11143,15 +11143,15 @@ }, "property": { "type": "Identifier", - "start": 14297, - "end": 14298, + "start": 16285, + "end": 16286, "loc": { "start": { - "line": 366, + "line": 420, "column": 66 }, "end": { - "line": 366, + "line": 420, "column": 67 }, "identifierName": "i" @@ -11163,15 +11163,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 14302, - "end": 14307, + "start": 16290, + "end": 16295, "loc": { "start": { - "line": 366, + "line": 420, "column": 71 }, "end": { - "line": 366, + "line": 420, "column": 76 } }, @@ -11183,21 +11183,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 14284 + "parenStart": 16272 } }, "operator": "*", "right": { "type": "NumericLiteral", - "start": 14311, - "end": 14314, + "start": 16299, + "end": 16302, "loc": { "start": { - "line": 366, + "line": 420, "column": 80 }, "end": { - "line": 366, + "line": 420, "column": 83 } }, @@ -11218,29 +11218,29 @@ }, { "type": "ReturnStatement", - "start": 14343, - "end": 14367, + "start": 16331, + "end": 16355, "loc": { "start": { - "line": 368, + "line": 422, "column": 12 }, "end": { - "line": 368, + "line": 422, "column": 36 } }, "argument": { "type": "Identifier", - "start": 14350, - "end": 14366, + "start": 16338, + "end": 16354, "loc": { "start": { - "line": 368, + "line": 422, "column": 19 }, "end": { - "line": 368, + "line": 422, "column": 35 }, "identifierName": "colorsCompressed" @@ -11254,29 +11254,29 @@ }, { "type": "FunctionDeclaration", - "start": 14387, - "end": 15019, + "start": 16375, + "end": 17007, "loc": { "start": { - "line": 371, + "line": 425, "column": 8 }, "end": { - "line": 382, + "line": 436, "column": 9 } }, "id": { "type": "Identifier", - "start": 14396, - "end": 14411, + "start": 16384, + "end": 16399, "loc": { "start": { - "line": 371, + "line": 425, "column": 17 }, "end": { - "line": 371, + "line": 425, "column": 32 }, "identifierName": "readIntensities" @@ -11289,15 +11289,15 @@ "params": [ { "type": "Identifier", - "start": 14412, - "end": 14431, + "start": 16400, + "end": 16419, "loc": { "start": { - "line": 371, + "line": 425, "column": 33 }, "end": { - "line": 371, + "line": 425, "column": 52 }, "identifierName": "attributesIntensity" @@ -11307,59 +11307,59 @@ ], "body": { "type": "BlockStatement", - "start": 14433, - "end": 15019, + "start": 16421, + "end": 17007, "loc": { "start": { - "line": 371, + "line": 425, "column": 54 }, "end": { - "line": 382, + "line": 436, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 14447, - "end": 14497, + "start": 16435, + "end": 16485, "loc": { "start": { - "line": 372, + "line": 426, "column": 12 }, "end": { - "line": 372, + "line": 426, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14453, - "end": 14496, + "start": 16441, + "end": 16484, "loc": { "start": { - "line": 372, + "line": 426, "column": 18 }, "end": { - "line": 372, + "line": 426, "column": 61 } }, "id": { "type": "Identifier", - "start": 14453, - "end": 14464, + "start": 16441, + "end": 16452, "loc": { "start": { - "line": 372, + "line": 426, "column": 18 }, "end": { - "line": 372, + "line": 426, "column": 29 }, "identifierName": "intensities" @@ -11368,29 +11368,29 @@ }, "init": { "type": "MemberExpression", - "start": 14467, - "end": 14496, + "start": 16455, + "end": 16484, "loc": { "start": { - "line": 372, + "line": 426, "column": 32 }, "end": { - "line": 372, + "line": 426, "column": 61 } }, "object": { "type": "Identifier", - "start": 14467, - "end": 14486, + "start": 16455, + "end": 16474, "loc": { "start": { - "line": 372, + "line": 426, "column": 32 }, "end": { - "line": 372, + "line": 426, "column": 51 }, "identifierName": "attributesIntensity" @@ -11399,15 +11399,15 @@ }, "property": { "type": "Identifier", - "start": 14487, - "end": 14496, + "start": 16475, + "end": 16484, "loc": { "start": { - "line": 372, + "line": 426, "column": 52 }, "end": { - "line": 372, + "line": 426, "column": 61 }, "identifierName": "intensity" @@ -11422,44 +11422,44 @@ }, { "type": "VariableDeclaration", - "start": 14510, - "end": 14562, + "start": 16498, + "end": 16550, "loc": { "start": { - "line": 373, + "line": 427, "column": 12 }, "end": { - "line": 373, + "line": 427, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14516, - "end": 14561, + "start": 16504, + "end": 16549, "loc": { "start": { - "line": 373, + "line": 427, "column": 18 }, "end": { - "line": 373, + "line": 427, "column": 63 } }, "id": { "type": "Identifier", - "start": 14516, - "end": 14536, + "start": 16504, + "end": 16524, "loc": { "start": { - "line": 373, + "line": 427, "column": 18 }, "end": { - "line": 373, + "line": 427, "column": 38 }, "identifierName": "colorsCompressedSize" @@ -11468,43 +11468,43 @@ }, "init": { "type": "BinaryExpression", - "start": 14539, - "end": 14561, + "start": 16527, + "end": 16549, "loc": { "start": { - "line": 373, + "line": 427, "column": 41 }, "end": { - "line": 373, + "line": 427, "column": 63 } }, "left": { "type": "MemberExpression", - "start": 14539, - "end": 14557, + "start": 16527, + "end": 16545, "loc": { "start": { - "line": 373, + "line": 427, "column": 41 }, "end": { - "line": 373, + "line": 427, "column": 59 } }, "object": { "type": "Identifier", - "start": 14539, - "end": 14550, + "start": 16527, + "end": 16538, "loc": { "start": { - "line": 373, + "line": 427, "column": 41 }, "end": { - "line": 373, + "line": 427, "column": 52 }, "identifierName": "intensities" @@ -11513,15 +11513,15 @@ }, "property": { "type": "Identifier", - "start": 14551, - "end": 14557, + "start": 16539, + "end": 16545, "loc": { "start": { - "line": 373, + "line": 427, "column": 53 }, "end": { - "line": 373, + "line": 427, "column": 59 }, "identifierName": "length" @@ -11533,15 +11533,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 14560, - "end": 14561, + "start": 16548, + "end": 16549, "loc": { "start": { - "line": 373, + "line": 427, "column": 62 }, "end": { - "line": 373, + "line": 427, "column": 63 } }, @@ -11558,44 +11558,44 @@ }, { "type": "VariableDeclaration", - "start": 14575, - "end": 14637, + "start": 16563, + "end": 16625, "loc": { "start": { - "line": 374, + "line": 428, "column": 12 }, "end": { - "line": 374, + "line": 428, "column": 74 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14581, - "end": 14636, + "start": 16569, + "end": 16624, "loc": { "start": { - "line": 374, + "line": 428, "column": 18 }, "end": { - "line": 374, + "line": 428, "column": 73 } }, "id": { "type": "Identifier", - "start": 14581, - "end": 14597, + "start": 16569, + "end": 16585, "loc": { "start": { - "line": 374, + "line": 428, "column": 18 }, "end": { - "line": 374, + "line": 428, "column": 34 }, "identifierName": "colorsCompressed" @@ -11604,29 +11604,29 @@ }, "init": { "type": "NewExpression", - "start": 14600, - "end": 14636, + "start": 16588, + "end": 16624, "loc": { "start": { - "line": 374, + "line": 428, "column": 37 }, "end": { - "line": 374, + "line": 428, "column": 73 } }, "callee": { "type": "Identifier", - "start": 14604, - "end": 14614, + "start": 16592, + "end": 16602, "loc": { "start": { - "line": 374, + "line": 428, "column": 41 }, "end": { - "line": 374, + "line": 428, "column": 51 }, "identifierName": "Uint8Array" @@ -11636,15 +11636,15 @@ "arguments": [ { "type": "Identifier", - "start": 14615, - "end": 14635, + "start": 16603, + "end": 16623, "loc": { "start": { - "line": 374, + "line": 428, "column": 52 }, "end": { - "line": 374, + "line": 428, "column": 72 }, "identifierName": "colorsCompressedSize" @@ -11659,58 +11659,58 @@ }, { "type": "ForStatement", - "start": 14650, - "end": 14972, + "start": 16638, + "end": 16960, "loc": { "start": { - "line": 375, + "line": 429, "column": 12 }, "end": { - "line": 380, + "line": 434, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 14655, - "end": 14704, + "start": 16643, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 17 }, "end": { - "line": 375, + "line": 429, "column": 66 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14659, - "end": 14664, + "start": 16647, + "end": 16652, "loc": { "start": { - "line": 375, + "line": 429, "column": 21 }, "end": { - "line": 375, + "line": 429, "column": 26 } }, "id": { "type": "Identifier", - "start": 14659, - "end": 14660, + "start": 16647, + "end": 16648, "loc": { "start": { - "line": 375, + "line": 429, "column": 21 }, "end": { - "line": 375, + "line": 429, "column": 22 }, "identifierName": "i" @@ -11719,15 +11719,15 @@ }, "init": { "type": "NumericLiteral", - "start": 14663, - "end": 14664, + "start": 16651, + "end": 16652, "loc": { "start": { - "line": 375, + "line": 429, "column": 25 }, "end": { - "line": 375, + "line": 429, "column": 26 } }, @@ -11740,29 +11740,29 @@ }, { "type": "VariableDeclarator", - "start": 14666, - "end": 14671, + "start": 16654, + "end": 16659, "loc": { "start": { - "line": 375, + "line": 429, "column": 28 }, "end": { - "line": 375, + "line": 429, "column": 33 } }, "id": { "type": "Identifier", - "start": 14666, - "end": 14667, + "start": 16654, + "end": 16655, "loc": { "start": { - "line": 375, + "line": 429, "column": 28 }, "end": { - "line": 375, + "line": 429, "column": 29 }, "identifierName": "j" @@ -11771,15 +11771,15 @@ }, "init": { "type": "NumericLiteral", - "start": 14670, - "end": 14671, + "start": 16658, + "end": 16659, "loc": { "start": { - "line": 375, + "line": 429, "column": 32 }, "end": { - "line": 375, + "line": 429, "column": 33 } }, @@ -11792,29 +11792,29 @@ }, { "type": "VariableDeclarator", - "start": 14673, - "end": 14678, + "start": 16661, + "end": 16666, "loc": { "start": { - "line": 375, + "line": 429, "column": 35 }, "end": { - "line": 375, + "line": 429, "column": 40 } }, "id": { "type": "Identifier", - "start": 14673, - "end": 14674, + "start": 16661, + "end": 16662, "loc": { "start": { - "line": 375, + "line": 429, "column": 35 }, "end": { - "line": 375, + "line": 429, "column": 36 }, "identifierName": "k" @@ -11823,15 +11823,15 @@ }, "init": { "type": "NumericLiteral", - "start": 14677, - "end": 14678, + "start": 16665, + "end": 16666, "loc": { "start": { - "line": 375, + "line": 429, "column": 39 }, "end": { - "line": 375, + "line": 429, "column": 40 } }, @@ -11844,29 +11844,29 @@ }, { "type": "VariableDeclarator", - "start": 14680, - "end": 14704, + "start": 16668, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 42 }, "end": { - "line": 375, + "line": 429, "column": 66 } }, "id": { "type": "Identifier", - "start": 14680, - "end": 14683, + "start": 16668, + "end": 16671, "loc": { "start": { - "line": 375, + "line": 429, "column": 42 }, "end": { - "line": 375, + "line": 429, "column": 45 }, "identifierName": "len" @@ -11875,29 +11875,29 @@ }, "init": { "type": "MemberExpression", - "start": 14686, - "end": 14704, + "start": 16674, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 48 }, "end": { - "line": 375, + "line": 429, "column": 66 } }, "object": { "type": "Identifier", - "start": 14686, - "end": 14697, + "start": 16674, + "end": 16685, "loc": { "start": { - "line": 375, + "line": 429, "column": 48 }, "end": { - "line": 375, + "line": 429, "column": 59 }, "identifierName": "intensities" @@ -11906,15 +11906,15 @@ }, "property": { "type": "Identifier", - "start": 14698, - "end": 14704, + "start": 16686, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 60 }, "end": { - "line": 375, + "line": 429, "column": 66 }, "identifierName": "length" @@ -11929,29 +11929,29 @@ }, "test": { "type": "BinaryExpression", - "start": 14706, - "end": 14713, + "start": 16694, + "end": 16701, "loc": { "start": { - "line": 375, + "line": 429, "column": 68 }, "end": { - "line": 375, + "line": 429, "column": 75 } }, "left": { "type": "Identifier", - "start": 14706, - "end": 14707, + "start": 16694, + "end": 16695, "loc": { "start": { - "line": 375, + "line": 429, "column": 68 }, "end": { - "line": 375, + "line": 429, "column": 69 }, "identifierName": "i" @@ -11961,15 +11961,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 14710, - "end": 14713, + "start": 16698, + "end": 16701, "loc": { "start": { - "line": 375, + "line": 429, "column": 72 }, "end": { - "line": 375, + "line": 429, "column": 75 }, "identifierName": "len" @@ -11979,30 +11979,30 @@ }, "update": { "type": "SequenceExpression", - "start": 14715, - "end": 14734, + "start": 16703, + "end": 16722, "loc": { "start": { - "line": 375, + "line": 429, "column": 77 }, "end": { - "line": 375, + "line": 429, "column": 96 } }, "expressions": [ { "type": "UpdateExpression", - "start": 14715, - "end": 14718, + "start": 16703, + "end": 16706, "loc": { "start": { - "line": 375, + "line": 429, "column": 77 }, "end": { - "line": 375, + "line": 429, "column": 80 } }, @@ -12010,15 +12010,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 14715, - "end": 14716, + "start": 16703, + "end": 16704, "loc": { "start": { - "line": 375, + "line": 429, "column": 77 }, "end": { - "line": 375, + "line": 429, "column": 78 }, "identifierName": "i" @@ -12028,30 +12028,30 @@ }, { "type": "AssignmentExpression", - "start": 14720, - "end": 14726, + "start": 16708, + "end": 16714, "loc": { "start": { - "line": 375, + "line": 429, "column": 82 }, "end": { - "line": 375, + "line": 429, "column": 88 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 14720, - "end": 14721, + "start": 16708, + "end": 16709, "loc": { "start": { - "line": 375, + "line": 429, "column": 82 }, "end": { - "line": 375, + "line": 429, "column": 83 }, "identifierName": "k" @@ -12060,15 +12060,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14725, - "end": 14726, + "start": 16713, + "end": 16714, "loc": { "start": { - "line": 375, + "line": 429, "column": 87 }, "end": { - "line": 375, + "line": 429, "column": 88 } }, @@ -12081,30 +12081,30 @@ }, { "type": "AssignmentExpression", - "start": 14728, - "end": 14734, + "start": 16716, + "end": 16722, "loc": { "start": { - "line": 375, + "line": 429, "column": 90 }, "end": { - "line": 375, + "line": 429, "column": 96 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 14728, - "end": 14729, + "start": 16716, + "end": 16717, "loc": { "start": { - "line": 375, + "line": 429, "column": 90 }, "end": { - "line": 375, + "line": 429, "column": 91 }, "identifierName": "j" @@ -12113,15 +12113,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14733, - "end": 14734, + "start": 16721, + "end": 16722, "loc": { "start": { - "line": 375, + "line": 429, "column": 95 }, "end": { - "line": 375, + "line": 429, "column": 96 } }, @@ -12136,73 +12136,73 @@ }, "body": { "type": "BlockStatement", - "start": 14736, - "end": 14972, + "start": 16724, + "end": 16960, "loc": { "start": { - "line": 375, + "line": 429, "column": 98 }, "end": { - "line": 380, + "line": 434, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 14754, - "end": 14782, + "start": 16742, + "end": 16770, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 14754, - "end": 14781, + "start": 16742, + "end": 16769, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14754, - "end": 14777, + "start": 16742, + "end": 16765, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 39 } }, "object": { "type": "Identifier", - "start": 14754, - "end": 14770, + "start": 16742, + "end": 16758, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 32 }, "identifierName": "colorsCompressed" @@ -12211,29 +12211,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14771, - "end": 14776, + "start": 16759, + "end": 16764, "loc": { "start": { - "line": 376, + "line": 430, "column": 33 }, "end": { - "line": 376, + "line": 430, "column": 38 } }, "left": { "type": "Identifier", - "start": 14771, - "end": 14772, + "start": 16759, + "end": 16760, "loc": { "start": { - "line": 376, + "line": 430, "column": 33 }, "end": { - "line": 376, + "line": 430, "column": 34 }, "identifierName": "j" @@ -12243,15 +12243,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14775, - "end": 14776, + "start": 16763, + "end": 16764, "loc": { "start": { - "line": 376, + "line": 430, "column": 37 }, "end": { - "line": 376, + "line": 430, "column": 38 } }, @@ -12266,15 +12266,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14780, - "end": 14781, + "start": 16768, + "end": 16769, "loc": { "start": { - "line": 376, + "line": 430, "column": 42 }, "end": { - "line": 376, + "line": 430, "column": 43 } }, @@ -12288,58 +12288,58 @@ }, { "type": "ExpressionStatement", - "start": 14799, - "end": 14827, + "start": 16787, + "end": 16815, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 14799, - "end": 14826, + "start": 16787, + "end": 16814, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14799, - "end": 14822, + "start": 16787, + "end": 16810, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 39 } }, "object": { "type": "Identifier", - "start": 14799, - "end": 14815, + "start": 16787, + "end": 16803, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 32 }, "identifierName": "colorsCompressed" @@ -12348,29 +12348,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14816, - "end": 14821, + "start": 16804, + "end": 16809, "loc": { "start": { - "line": 377, + "line": 431, "column": 33 }, "end": { - "line": 377, + "line": 431, "column": 38 } }, "left": { "type": "Identifier", - "start": 14816, - "end": 14817, + "start": 16804, + "end": 16805, "loc": { "start": { - "line": 377, + "line": 431, "column": 33 }, "end": { - "line": 377, + "line": 431, "column": 34 }, "identifierName": "j" @@ -12380,15 +12380,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14820, - "end": 14821, + "start": 16808, + "end": 16809, "loc": { "start": { - "line": 377, + "line": 431, "column": 37 }, "end": { - "line": 377, + "line": 431, "column": 38 } }, @@ -12403,15 +12403,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14825, - "end": 14826, + "start": 16813, + "end": 16814, "loc": { "start": { - "line": 377, + "line": 431, "column": 42 }, "end": { - "line": 377, + "line": 431, "column": 43 } }, @@ -12425,58 +12425,58 @@ }, { "type": "ExpressionStatement", - "start": 14844, - "end": 14872, + "start": 16832, + "end": 16860, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 14844, - "end": 14871, + "start": 16832, + "end": 16859, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14844, - "end": 14867, + "start": 16832, + "end": 16855, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 39 } }, "object": { "type": "Identifier", - "start": 14844, - "end": 14860, + "start": 16832, + "end": 16848, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 32 }, "identifierName": "colorsCompressed" @@ -12485,29 +12485,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14861, - "end": 14866, + "start": 16849, + "end": 16854, "loc": { "start": { - "line": 378, + "line": 432, "column": 33 }, "end": { - "line": 378, + "line": 432, "column": 38 } }, "left": { "type": "Identifier", - "start": 14861, - "end": 14862, + "start": 16849, + "end": 16850, "loc": { "start": { - "line": 378, + "line": 432, "column": 33 }, "end": { - "line": 378, + "line": 432, "column": 34 }, "identifierName": "j" @@ -12517,15 +12517,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14865, - "end": 14866, + "start": 16853, + "end": 16854, "loc": { "start": { - "line": 378, + "line": 432, "column": 37 }, "end": { - "line": 378, + "line": 432, "column": 38 } }, @@ -12540,15 +12540,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14870, - "end": 14871, + "start": 16858, + "end": 16859, "loc": { "start": { - "line": 378, + "line": 432, "column": 42 }, "end": { - "line": 378, + "line": 432, "column": 43 } }, @@ -12562,58 +12562,58 @@ }, { "type": "ExpressionStatement", - "start": 14889, - "end": 14958, + "start": 16877, + "end": 16946, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 14889, - "end": 14957, + "start": 16877, + "end": 16945, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14889, - "end": 14912, + "start": 16877, + "end": 16900, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 39 } }, "object": { "type": "Identifier", - "start": 14889, - "end": 14905, + "start": 16877, + "end": 16893, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 32 }, "identifierName": "colorsCompressed" @@ -12622,29 +12622,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14906, - "end": 14911, + "start": 16894, + "end": 16899, "loc": { "start": { - "line": 379, + "line": 433, "column": 33 }, "end": { - "line": 379, + "line": 433, "column": 38 } }, "left": { "type": "Identifier", - "start": 14906, - "end": 14907, + "start": 16894, + "end": 16895, "loc": { "start": { - "line": 379, + "line": 433, "column": 33 }, "end": { - "line": 379, + "line": 433, "column": 34 }, "identifierName": "j" @@ -12654,15 +12654,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14910, - "end": 14911, + "start": 16898, + "end": 16899, "loc": { "start": { - "line": 379, + "line": 433, "column": 37 }, "end": { - "line": 379, + "line": 433, "column": 38 } }, @@ -12677,43 +12677,43 @@ }, "right": { "type": "CallExpression", - "start": 14915, - "end": 14957, + "start": 16903, + "end": 16945, "loc": { "start": { - "line": 379, + "line": 433, "column": 42 }, "end": { - "line": 379, + "line": 433, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 14915, - "end": 14925, + "start": 16903, + "end": 16913, "loc": { "start": { - "line": 379, + "line": 433, "column": 42 }, "end": { - "line": 379, + "line": 433, "column": 52 } }, "object": { "type": "Identifier", - "start": 14915, - "end": 14919, + "start": 16903, + "end": 16907, "loc": { "start": { - "line": 379, + "line": 433, "column": 42 }, "end": { - "line": 379, + "line": 433, "column": 46 }, "identifierName": "Math" @@ -12722,15 +12722,15 @@ }, "property": { "type": "Identifier", - "start": 14920, - "end": 14925, + "start": 16908, + "end": 16913, "loc": { "start": { - "line": 379, + "line": 433, "column": 47 }, "end": { - "line": 379, + "line": 433, "column": 52 }, "identifierName": "round" @@ -12742,57 +12742,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 14926, - "end": 14956, + "start": 16914, + "end": 16944, "loc": { "start": { - "line": 379, + "line": 433, "column": 53 }, "end": { - "line": 379, + "line": 433, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 14927, - "end": 14949, + "start": 16915, + "end": 16937, "loc": { "start": { - "line": 379, + "line": 433, "column": 54 }, "end": { - "line": 379, + "line": 433, "column": 76 } }, "left": { "type": "MemberExpression", - "start": 14927, - "end": 14941, + "start": 16915, + "end": 16929, "loc": { "start": { - "line": 379, + "line": 433, "column": 54 }, "end": { - "line": 379, + "line": 433, "column": 68 } }, "object": { "type": "Identifier", - "start": 14927, - "end": 14938, + "start": 16915, + "end": 16926, "loc": { "start": { - "line": 379, + "line": 433, "column": 54 }, "end": { - "line": 379, + "line": 433, "column": 65 }, "identifierName": "intensities" @@ -12801,15 +12801,15 @@ }, "property": { "type": "Identifier", - "start": 14939, - "end": 14940, + "start": 16927, + "end": 16928, "loc": { "start": { - "line": 379, + "line": 433, "column": 66 }, "end": { - "line": 379, + "line": 433, "column": 67 }, "identifierName": "i" @@ -12821,15 +12821,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 14944, - "end": 14949, + "start": 16932, + "end": 16937, "loc": { "start": { - "line": 379, + "line": 433, "column": 71 }, "end": { - "line": 379, + "line": 433, "column": 76 } }, @@ -12841,21 +12841,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 14926 + "parenStart": 16914 } }, "operator": "*", "right": { "type": "NumericLiteral", - "start": 14953, - "end": 14956, + "start": 16941, + "end": 16944, "loc": { "start": { - "line": 379, + "line": 433, "column": 80 }, "end": { - "line": 379, + "line": 433, "column": 83 } }, @@ -12876,29 +12876,29 @@ }, { "type": "ReturnStatement", - "start": 14985, - "end": 15009, + "start": 16973, + "end": 16997, "loc": { "start": { - "line": 381, + "line": 435, "column": 12 }, "end": { - "line": 381, + "line": 435, "column": 36 } }, "argument": { "type": "Identifier", - "start": 14992, - "end": 15008, + "start": 16980, + "end": 16996, "loc": { "start": { - "line": 381, + "line": 435, "column": 19 }, "end": { - "line": 381, + "line": 435, "column": 35 }, "identifierName": "colorsCompressed" @@ -12912,43 +12912,43 @@ }, { "type": "ReturnStatement", - "start": 15029, - "end": 22350, + "start": 17017, + "end": 24338, "loc": { "start": { - "line": 384, + "line": 438, "column": 8 }, "end": { - "line": 551, + "line": 605, "column": 11 } }, "argument": { "type": "NewExpression", - "start": 15036, - "end": 22349, + "start": 17024, + "end": 24337, "loc": { "start": { - "line": 384, + "line": 438, "column": 15 }, "end": { - "line": 551, + "line": 605, "column": 10 } }, "callee": { "type": "Identifier", - "start": 15040, - "end": 15047, + "start": 17028, + "end": 17035, "loc": { "start": { - "line": 384, + "line": 438, "column": 19 }, "end": { - "line": 384, + "line": 438, "column": 26 }, "identifierName": "Promise" @@ -12958,15 +12958,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 15048, - "end": 22348, + "start": 17036, + "end": 24336, "loc": { "start": { - "line": 384, + "line": 438, "column": 27 }, "end": { - "line": 551, + "line": 605, "column": 9 } }, @@ -12977,15 +12977,15 @@ "params": [ { "type": "Identifier", - "start": 15049, - "end": 15056, + "start": 17037, + "end": 17044, "loc": { "start": { - "line": 384, + "line": 438, "column": 28 }, "end": { - "line": 384, + "line": 438, "column": 35 }, "identifierName": "resolve" @@ -12994,15 +12994,15 @@ }, { "type": "Identifier", - "start": 15058, - "end": 15064, + "start": 17046, + "end": 17052, "loc": { "start": { - "line": 384, + "line": 438, "column": 37 }, "end": { - "line": 384, + "line": 438, "column": 43 }, "identifierName": "reject" @@ -13012,58 +13012,58 @@ ], "body": { "type": "BlockStatement", - "start": 15069, - "end": 22348, + "start": 17057, + "end": 24336, "loc": { "start": { - "line": 384, + "line": 438, "column": 48 }, "end": { - "line": 551, + "line": 605, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 15084, - "end": 15175, + "start": 17072, + "end": 17163, "loc": { "start": { - "line": 386, + "line": 440, "column": 12 }, "end": { - "line": 389, + "line": 443, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 15088, - "end": 15108, + "start": 17076, + "end": 17096, "loc": { "start": { - "line": 386, + "line": 440, "column": 16 }, "end": { - "line": 386, + "line": 440, "column": 36 } }, "object": { "type": "Identifier", - "start": 15088, - "end": 15098, + "start": 17076, + "end": 17086, "loc": { "start": { - "line": 386, + "line": 440, "column": 16 }, "end": { - "line": 386, + "line": 440, "column": 26 }, "identifierName": "sceneModel" @@ -13072,15 +13072,15 @@ }, "property": { "type": "Identifier", - "start": 15099, - "end": 15108, + "start": 17087, + "end": 17096, "loc": { "start": { - "line": 386, + "line": 440, "column": 27 }, "end": { - "line": 386, + "line": 440, "column": 36 }, "identifierName": "destroyed" @@ -13091,58 +13091,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 15110, - "end": 15175, + "start": 17098, + "end": 17163, "loc": { "start": { - "line": 386, + "line": 440, "column": 38 }, "end": { - "line": 389, + "line": 443, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 15128, - "end": 15137, + "start": 17116, + "end": 17125, "loc": { "start": { - "line": 387, + "line": 441, "column": 16 }, "end": { - "line": 387, + "line": 441, "column": 25 } }, "expression": { "type": "CallExpression", - "start": 15128, - "end": 15136, + "start": 17116, + "end": 17124, "loc": { "start": { - "line": 387, + "line": 441, "column": 16 }, "end": { - "line": 387, + "line": 441, "column": 24 } }, "callee": { "type": "Identifier", - "start": 15128, - "end": 15134, + "start": 17116, + "end": 17122, "loc": { "start": { - "line": 387, + "line": 441, "column": 16 }, "end": { - "line": 387, + "line": 441, "column": 22 }, "identifierName": "reject" @@ -13154,15 +13154,15 @@ }, { "type": "ReturnStatement", - "start": 15154, - "end": 15161, + "start": 17142, + "end": 17149, "loc": { "start": { - "line": 388, + "line": 442, "column": 16 }, "end": { - "line": 388, + "line": 442, "column": 23 } }, @@ -13175,44 +13175,44 @@ }, { "type": "VariableDeclaration", - "start": 15189, - "end": 15222, + "start": 17177, + "end": 17210, "loc": { "start": { - "line": 391, + "line": 445, "column": 12 }, "end": { - "line": 391, + "line": 445, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15195, - "end": 15221, + "start": 17183, + "end": 17209, "loc": { "start": { - "line": 391, + "line": 445, "column": 18 }, "end": { - "line": 391, + "line": 445, "column": 44 } }, "id": { "type": "Identifier", - "start": 15195, - "end": 15200, + "start": 17183, + "end": 17188, "loc": { "start": { - "line": 391, + "line": 445, "column": 18 }, "end": { - "line": 391, + "line": 445, "column": 23 }, "identifierName": "stats" @@ -13221,43 +13221,43 @@ }, "init": { "type": "LogicalExpression", - "start": 15203, - "end": 15221, + "start": 17191, + "end": 17209, "loc": { "start": { - "line": 391, + "line": 445, "column": 26 }, "end": { - "line": 391, + "line": 445, "column": 44 } }, "left": { "type": "MemberExpression", - "start": 15203, - "end": 15215, + "start": 17191, + "end": 17203, "loc": { "start": { - "line": 391, + "line": 445, "column": 26 }, "end": { - "line": 391, + "line": 445, "column": 38 } }, "object": { "type": "Identifier", - "start": 15203, - "end": 15209, + "start": 17191, + "end": 17197, "loc": { "start": { - "line": 391, + "line": 445, "column": 26 }, "end": { - "line": 391, + "line": 445, "column": 32 }, "identifierName": "params" @@ -13266,15 +13266,15 @@ }, "property": { "type": "Identifier", - "start": 15210, - "end": 15215, + "start": 17198, + "end": 17203, "loc": { "start": { - "line": 391, + "line": 445, "column": 33 }, "end": { - "line": 391, + "line": 445, "column": 38 }, "identifierName": "stats" @@ -13286,15 +13286,15 @@ "operator": "||", "right": { "type": "ObjectExpression", - "start": 15219, - "end": 15221, + "start": 17207, + "end": 17209, "loc": { "start": { - "line": 391, + "line": 445, "column": 42 }, "end": { - "line": 391, + "line": 445, "column": 44 } }, @@ -13307,58 +13307,58 @@ }, { "type": "ExpressionStatement", - "start": 15235, - "end": 15262, + "start": 17223, + "end": 17250, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 15235, - "end": 15261, + "start": 17223, + "end": 17249, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15235, - "end": 15253, + "start": 17223, + "end": 17241, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 30 } }, "object": { "type": "Identifier", - "start": 15235, - "end": 15240, + "start": 17223, + "end": 17228, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 17 }, "identifierName": "stats" @@ -13367,15 +13367,15 @@ }, "property": { "type": "Identifier", - "start": 15241, - "end": 15253, + "start": 17229, + "end": 17241, "loc": { "start": { - "line": 392, + "line": 446, "column": 18 }, "end": { - "line": 392, + "line": 446, "column": 30 }, "identifierName": "sourceFormat" @@ -13386,15 +13386,15 @@ }, "right": { "type": "StringLiteral", - "start": 15256, - "end": 15261, + "start": 17244, + "end": 17249, "loc": { "start": { - "line": 392, + "line": 446, "column": 33 }, "end": { - "line": 392, + "line": 446, "column": 38 } }, @@ -13408,58 +13408,58 @@ }, { "type": "ExpressionStatement", - "start": 15275, - "end": 15300, + "start": 17263, + "end": 17288, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 15275, - "end": 15299, + "start": 17263, + "end": 17287, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15275, - "end": 15294, + "start": 17263, + "end": 17282, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 31 } }, "object": { "type": "Identifier", - "start": 15275, - "end": 15280, + "start": 17263, + "end": 17268, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 17 }, "identifierName": "stats" @@ -13468,15 +13468,15 @@ }, "property": { "type": "Identifier", - "start": 15281, - "end": 15294, + "start": 17269, + "end": 17282, "loc": { "start": { - "line": 393, + "line": 447, "column": 18 }, "end": { - "line": 393, + "line": 447, "column": 31 }, "identifierName": "schemaVersion" @@ -13487,15 +13487,15 @@ }, "right": { "type": "StringLiteral", - "start": 15297, - "end": 15299, + "start": 17285, + "end": 17287, "loc": { "start": { - "line": 393, + "line": 447, "column": 34 }, "end": { - "line": 393, + "line": 447, "column": 36 } }, @@ -13509,58 +13509,58 @@ }, { "type": "ExpressionStatement", - "start": 15313, - "end": 15330, + "start": 17301, + "end": 17318, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 15313, - "end": 15329, + "start": 17301, + "end": 17317, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15313, - "end": 15324, + "start": 17301, + "end": 17312, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 23 } }, "object": { "type": "Identifier", - "start": 15313, - "end": 15318, + "start": 17301, + "end": 17306, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 17 }, "identifierName": "stats" @@ -13569,15 +13569,15 @@ }, "property": { "type": "Identifier", - "start": 15319, - "end": 15324, + "start": 17307, + "end": 17312, "loc": { "start": { - "line": 394, + "line": 448, "column": 18 }, "end": { - "line": 394, + "line": 448, "column": 23 }, "identifierName": "title" @@ -13588,15 +13588,15 @@ }, "right": { "type": "StringLiteral", - "start": 15327, - "end": 15329, + "start": 17315, + "end": 17317, "loc": { "start": { - "line": 394, + "line": 448, "column": 26 }, "end": { - "line": 394, + "line": 448, "column": 28 } }, @@ -13610,58 +13610,58 @@ }, { "type": "ExpressionStatement", - "start": 15343, - "end": 15361, + "start": 17331, + "end": 17349, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 15343, - "end": 15360, + "start": 17331, + "end": 17348, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15343, - "end": 15355, + "start": 17331, + "end": 17343, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 24 } }, "object": { "type": "Identifier", - "start": 15343, - "end": 15348, + "start": 17331, + "end": 17336, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 17 }, "identifierName": "stats" @@ -13670,15 +13670,15 @@ }, "property": { "type": "Identifier", - "start": 15349, - "end": 15355, + "start": 17337, + "end": 17343, "loc": { "start": { - "line": 395, + "line": 449, "column": 18 }, "end": { - "line": 395, + "line": 449, "column": 24 }, "identifierName": "author" @@ -13689,15 +13689,15 @@ }, "right": { "type": "StringLiteral", - "start": 15358, - "end": 15360, + "start": 17346, + "end": 17348, "loc": { "start": { - "line": 395, + "line": 449, "column": 27 }, "end": { - "line": 395, + "line": 449, "column": 29 } }, @@ -13711,58 +13711,58 @@ }, { "type": "ExpressionStatement", - "start": 15374, - "end": 15393, + "start": 17362, + "end": 17381, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 15374, - "end": 15392, + "start": 17362, + "end": 17380, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15374, - "end": 15387, + "start": 17362, + "end": 17375, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 25 } }, "object": { "type": "Identifier", - "start": 15374, - "end": 15379, + "start": 17362, + "end": 17367, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 17 }, "identifierName": "stats" @@ -13771,15 +13771,15 @@ }, "property": { "type": "Identifier", - "start": 15380, - "end": 15387, + "start": 17368, + "end": 17375, "loc": { "start": { - "line": 396, + "line": 450, "column": 18 }, "end": { - "line": 396, + "line": 450, "column": 25 }, "identifierName": "created" @@ -13790,15 +13790,15 @@ }, "right": { "type": "StringLiteral", - "start": 15390, - "end": 15392, + "start": 17378, + "end": 17380, "loc": { "start": { - "line": 396, + "line": 450, "column": 28 }, "end": { - "line": 396, + "line": 450, "column": 30 } }, @@ -13812,58 +13812,58 @@ }, { "type": "ExpressionStatement", - "start": 15406, - "end": 15431, + "start": 17394, + "end": 17419, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 15406, - "end": 15430, + "start": 17394, + "end": 17418, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15406, - "end": 15426, + "start": 17394, + "end": 17414, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 32 } }, "object": { "type": "Identifier", - "start": 15406, - "end": 15411, + "start": 17394, + "end": 17399, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 17 }, "identifierName": "stats" @@ -13872,15 +13872,15 @@ }, "property": { "type": "Identifier", - "start": 15412, - "end": 15426, + "start": 17400, + "end": 17414, "loc": { "start": { - "line": 397, + "line": 451, "column": 18 }, "end": { - "line": 397, + "line": 451, "column": 32 }, "identifierName": "numMetaObjects" @@ -13891,15 +13891,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15429, - "end": 15430, + "start": 17417, + "end": 17418, "loc": { "start": { - "line": 397, + "line": 451, "column": 35 }, "end": { - "line": 397, + "line": 451, "column": 36 } }, @@ -13913,58 +13913,58 @@ }, { "type": "ExpressionStatement", - "start": 15444, - "end": 15470, + "start": 17432, + "end": 17458, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 15444, - "end": 15469, + "start": 17432, + "end": 17457, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15444, - "end": 15465, + "start": 17432, + "end": 17453, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 33 } }, "object": { "type": "Identifier", - "start": 15444, - "end": 15449, + "start": 17432, + "end": 17437, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 17 }, "identifierName": "stats" @@ -13973,15 +13973,15 @@ }, "property": { "type": "Identifier", - "start": 15450, - "end": 15465, + "start": 17438, + "end": 17453, "loc": { "start": { - "line": 398, + "line": 452, "column": 18 }, "end": { - "line": 398, + "line": 452, "column": 33 }, "identifierName": "numPropertySets" @@ -13992,15 +13992,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15468, - "end": 15469, + "start": 17456, + "end": 17457, "loc": { "start": { - "line": 398, + "line": 452, "column": 36 }, "end": { - "line": 398, + "line": 452, "column": 37 } }, @@ -14014,58 +14014,58 @@ }, { "type": "ExpressionStatement", - "start": 15483, - "end": 15504, + "start": 17471, + "end": 17492, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 15483, - "end": 15503, + "start": 17471, + "end": 17491, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15483, - "end": 15499, + "start": 17471, + "end": 17487, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 28 } }, "object": { "type": "Identifier", - "start": 15483, - "end": 15488, + "start": 17471, + "end": 17476, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 17 }, "identifierName": "stats" @@ -14074,15 +14074,15 @@ }, "property": { "type": "Identifier", - "start": 15489, - "end": 15499, + "start": 17477, + "end": 17487, "loc": { "start": { - "line": 399, + "line": 453, "column": 18 }, "end": { - "line": 399, + "line": 453, "column": 28 }, "identifierName": "numObjects" @@ -14093,15 +14093,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15502, - "end": 15503, + "start": 17490, + "end": 17491, "loc": { "start": { - "line": 399, + "line": 453, "column": 31 }, "end": { - "line": 399, + "line": 453, "column": 32 } }, @@ -14115,58 +14115,58 @@ }, { "type": "ExpressionStatement", - "start": 15517, - "end": 15541, + "start": 17505, + "end": 17529, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 15517, - "end": 15540, + "start": 17505, + "end": 17528, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15517, - "end": 15536, + "start": 17505, + "end": 17524, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 31 } }, "object": { "type": "Identifier", - "start": 15517, - "end": 15522, + "start": 17505, + "end": 17510, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 17 }, "identifierName": "stats" @@ -14175,15 +14175,15 @@ }, "property": { "type": "Identifier", - "start": 15523, - "end": 15536, + "start": 17511, + "end": 17524, "loc": { "start": { - "line": 400, + "line": 454, "column": 18 }, "end": { - "line": 400, + "line": 454, "column": 31 }, "identifierName": "numGeometries" @@ -14194,15 +14194,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15539, - "end": 15540, + "start": 17527, + "end": 17528, "loc": { "start": { - "line": 400, + "line": 454, "column": 34 }, "end": { - "line": 400, + "line": 454, "column": 35 } }, @@ -14216,58 +14216,58 @@ }, { "type": "ExpressionStatement", - "start": 15554, - "end": 15577, + "start": 17542, + "end": 17565, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 15554, - "end": 15576, + "start": 17542, + "end": 17564, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15554, - "end": 15572, + "start": 17542, + "end": 17560, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 30 } }, "object": { "type": "Identifier", - "start": 15554, - "end": 15559, + "start": 17542, + "end": 17547, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 17 }, "identifierName": "stats" @@ -14276,15 +14276,15 @@ }, "property": { "type": "Identifier", - "start": 15560, - "end": 15572, + "start": 17548, + "end": 17560, "loc": { "start": { - "line": 401, + "line": 455, "column": 18 }, "end": { - "line": 401, + "line": 455, "column": 30 }, "identifierName": "numTriangles" @@ -14295,15 +14295,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15575, - "end": 15576, + "start": 17563, + "end": 17564, "loc": { "start": { - "line": 401, + "line": 455, "column": 33 }, "end": { - "line": 401, + "line": 455, "column": 34 } }, @@ -14317,58 +14317,58 @@ }, { "type": "ExpressionStatement", - "start": 15590, - "end": 15612, + "start": 17578, + "end": 17600, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 15590, - "end": 15611, + "start": 17578, + "end": 17599, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15590, - "end": 15607, + "start": 17578, + "end": 17595, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 29 } }, "object": { "type": "Identifier", - "start": 15590, - "end": 15595, + "start": 17578, + "end": 17583, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 17 }, "identifierName": "stats" @@ -14377,15 +14377,15 @@ }, "property": { "type": "Identifier", - "start": 15596, - "end": 15607, + "start": 17584, + "end": 17595, "loc": { "start": { - "line": 402, + "line": 456, "column": 18 }, "end": { - "line": 402, + "line": 456, "column": 29 }, "identifierName": "numVertices" @@ -14396,15 +14396,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15610, - "end": 15611, + "start": 17598, + "end": 17599, "loc": { "start": { - "line": 402, + "line": 456, "column": 32 }, "end": { - "line": 402, + "line": 456, "column": 33 } }, @@ -14418,73 +14418,73 @@ }, { "type": "TryStatement", - "start": 15626, - "end": 22338, + "start": 17614, + "end": 24326, "loc": { "start": { - "line": 404, + "line": 458, "column": 12 }, "end": { - "line": 550, + "line": 604, "column": 13 } }, "block": { "type": "BlockStatement", - "start": 15630, - "end": 22246, + "start": 17618, + "end": 24234, "loc": { "start": { - "line": 404, + "line": 458, "column": 16 }, "end": { - "line": 547, + "line": 601, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 15649, - "end": 15694, + "start": 17637, + "end": 17682, "loc": { "start": { - "line": 406, + "line": 460, "column": 16 }, "end": { - "line": 406, + "line": 460, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15655, - "end": 15693, + "start": 17643, + "end": 17681, "loc": { "start": { - "line": 406, + "line": 460, "column": 22 }, "end": { - "line": 406, + "line": 460, "column": 60 } }, "id": { "type": "Identifier", - "start": 15655, - "end": 15664, + "start": 17643, + "end": 17652, "loc": { "start": { - "line": 406, + "line": 460, "column": 22 }, "end": { - "line": 406, + "line": 460, "column": 31 }, "identifierName": "lasHeader" @@ -14493,29 +14493,29 @@ }, "init": { "type": "CallExpression", - "start": 15667, - "end": 15693, + "start": 17655, + "end": 17681, "loc": { "start": { - "line": 406, + "line": 460, "column": 34 }, "end": { - "line": 406, + "line": 460, "column": 60 } }, "callee": { "type": "Identifier", - "start": 15667, - "end": 15680, + "start": 17655, + "end": 17668, "loc": { "start": { - "line": 406, + "line": 460, "column": 34 }, "end": { - "line": 406, + "line": 460, "column": 47 }, "identifierName": "loadLASHeader" @@ -14525,15 +14525,15 @@ "arguments": [ { "type": "Identifier", - "start": 15681, - "end": 15692, + "start": 17669, + "end": 17680, "loc": { "start": { - "line": 406, + "line": 460, "column": 48 }, "end": { - "line": 406, + "line": 460, "column": 59 }, "identifierName": "arrayBuffer" @@ -14548,71 +14548,71 @@ }, { "type": "ExpressionStatement", - "start": 15712, - "end": 22232, + "start": 17700, + "end": 24220, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 546, + "line": 600, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 15712, - "end": 22231, + "start": 17700, + "end": 24219, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 546, + "line": 600, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 15712, - "end": 15755, + "start": 17700, + "end": 17743, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 408, + "line": 462, "column": 59 } }, "object": { "type": "CallExpression", - "start": 15712, - "end": 15750, + "start": 17700, + "end": 17738, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 408, + "line": 462, "column": 54 } }, "callee": { "type": "Identifier", - "start": 15712, - "end": 15717, + "start": 17700, + "end": 17705, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 408, + "line": 462, "column": 21 }, "identifierName": "parse" @@ -14622,15 +14622,15 @@ "arguments": [ { "type": "Identifier", - "start": 15718, - "end": 15729, + "start": 17706, + "end": 17717, "loc": { "start": { - "line": 408, + "line": 462, "column": 22 }, "end": { - "line": 408, + "line": 462, "column": 33 }, "identifierName": "arrayBuffer" @@ -14639,15 +14639,15 @@ }, { "type": "Identifier", - "start": 15731, - "end": 15740, + "start": 17719, + "end": 17728, "loc": { "start": { - "line": 408, + "line": 462, "column": 35 }, "end": { - "line": 408, + "line": 462, "column": 44 }, "identifierName": "LASLoader" @@ -14656,15 +14656,15 @@ }, { "type": "Identifier", - "start": 15742, - "end": 15749, + "start": 17730, + "end": 17737, "loc": { "start": { - "line": 408, + "line": 462, "column": 46 }, "end": { - "line": 408, + "line": 462, "column": 53 }, "identifierName": "options" @@ -14675,15 +14675,15 @@ }, "property": { "type": "Identifier", - "start": 15751, - "end": 15755, + "start": 17739, + "end": 17743, "loc": { "start": { - "line": 408, + "line": 462, "column": 55 }, "end": { - "line": 408, + "line": 462, "column": 59 }, "identifierName": "then" @@ -14695,15 +14695,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 15756, - "end": 22230, + "start": 17744, + "end": 24218, "loc": { "start": { - "line": 408, + "line": 462, "column": 60 }, "end": { - "line": 546, + "line": 600, "column": 17 } }, @@ -14714,15 +14714,15 @@ "params": [ { "type": "Identifier", - "start": 15757, - "end": 15767, + "start": 17745, + "end": 17755, "loc": { "start": { - "line": 408, + "line": 462, "column": 61 }, "end": { - "line": 408, + "line": 462, "column": 71 }, "identifierName": "parsedData" @@ -14732,59 +14732,59 @@ ], "body": { "type": "BlockStatement", - "start": 15772, - "end": 22230, + "start": 17760, + "end": 24218, "loc": { "start": { - "line": 408, + "line": 462, "column": 76 }, "end": { - "line": 546, + "line": 600, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 15795, - "end": 15836, + "start": 17783, + "end": 17824, "loc": { "start": { - "line": 410, + "line": 464, "column": 20 }, "end": { - "line": 410, + "line": 464, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15801, - "end": 15835, + "start": 17789, + "end": 17823, "loc": { "start": { - "line": 410, + "line": 464, "column": 26 }, "end": { - "line": 410, + "line": 464, "column": 60 } }, "id": { "type": "Identifier", - "start": 15801, - "end": 15811, + "start": 17789, + "end": 17799, "loc": { "start": { - "line": 410, + "line": 464, "column": 26 }, "end": { - "line": 410, + "line": 464, "column": 36 }, "identifierName": "attributes" @@ -14793,29 +14793,29 @@ }, "init": { "type": "MemberExpression", - "start": 15814, - "end": 15835, + "start": 17802, + "end": 17823, "loc": { "start": { - "line": 410, + "line": 464, "column": 39 }, "end": { - "line": 410, + "line": 464, "column": 60 } }, "object": { "type": "Identifier", - "start": 15814, - "end": 15824, + "start": 17802, + "end": 17812, "loc": { "start": { - "line": 410, + "line": 464, "column": 39 }, "end": { - "line": 410, + "line": 464, "column": 49 }, "identifierName": "parsedData" @@ -14824,15 +14824,15 @@ }, "property": { "type": "Identifier", - "start": 15825, - "end": 15835, + "start": 17813, + "end": 17823, "loc": { "start": { - "line": 410, + "line": 464, "column": 50 }, "end": { - "line": 410, + "line": 464, "column": 60 }, "identifierName": "attributes" @@ -14847,44 +14847,44 @@ }, { "type": "VariableDeclaration", - "start": 15857, - "end": 15898, + "start": 17845, + "end": 17886, "loc": { "start": { - "line": 411, + "line": 465, "column": 20 }, "end": { - "line": 411, + "line": 465, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15863, - "end": 15897, + "start": 17851, + "end": 17885, "loc": { "start": { - "line": 411, + "line": 465, "column": 26 }, "end": { - "line": 411, + "line": 465, "column": 60 } }, "id": { "type": "Identifier", - "start": 15863, - "end": 15873, + "start": 17851, + "end": 17861, "loc": { "start": { - "line": 411, + "line": 465, "column": 26 }, "end": { - "line": 411, + "line": 465, "column": 36 }, "identifierName": "loaderData" @@ -14893,29 +14893,29 @@ }, "init": { "type": "MemberExpression", - "start": 15876, - "end": 15897, + "start": 17864, + "end": 17885, "loc": { "start": { - "line": 411, + "line": 465, "column": 39 }, "end": { - "line": 411, + "line": 465, "column": 60 } }, "object": { "type": "Identifier", - "start": 15876, - "end": 15886, + "start": 17864, + "end": 17874, "loc": { "start": { - "line": 411, + "line": 465, "column": 39 }, "end": { - "line": 411, + "line": 465, "column": 49 }, "identifierName": "parsedData" @@ -14924,15 +14924,15 @@ }, "property": { "type": "Identifier", - "start": 15887, - "end": 15897, + "start": 17875, + "end": 17885, "loc": { "start": { - "line": 411, + "line": 465, "column": 50 }, "end": { - "line": 411, + "line": 465, "column": 60 }, "identifierName": "loaderData" @@ -14947,44 +14947,44 @@ }, { "type": "VariableDeclaration", - "start": 15919, - "end": 16015, + "start": 17907, + "end": 18003, "loc": { "start": { - "line": 412, + "line": 466, "column": 20 }, "end": { - "line": 412, + "line": 466, "column": 116 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15925, - "end": 16014, + "start": 17913, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 26 }, "end": { - "line": 412, + "line": 466, "column": 115 } }, "id": { "type": "Identifier", - "start": 15925, - "end": 15939, + "start": 17913, + "end": 17927, "loc": { "start": { - "line": 412, + "line": 466, "column": 26 }, "end": { - "line": 412, + "line": 466, "column": 40 }, "identifierName": "pointsFormatId" @@ -14993,57 +14993,57 @@ }, "init": { "type": "ConditionalExpression", - "start": 15942, - "end": 16014, + "start": 17930, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 115 } }, "test": { "type": "BinaryExpression", - "start": 15942, - "end": 15981, + "start": 17930, + "end": 17969, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 82 } }, "left": { "type": "MemberExpression", - "start": 15942, - "end": 15967, + "start": 17930, + "end": 17955, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 68 } }, "object": { "type": "Identifier", - "start": 15942, - "end": 15952, + "start": 17930, + "end": 17940, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 53 }, "identifierName": "loaderData" @@ -15052,15 +15052,15 @@ }, "property": { "type": "Identifier", - "start": 15953, - "end": 15967, + "start": 17941, + "end": 17955, "loc": { "start": { - "line": 412, + "line": 466, "column": 54 }, "end": { - "line": 412, + "line": 466, "column": 68 }, "identifierName": "pointsFormatId" @@ -15072,15 +15072,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 15972, - "end": 15981, + "start": 17960, + "end": 17969, "loc": { "start": { - "line": 412, + "line": 466, "column": 73 }, "end": { - "line": 412, + "line": 466, "column": 82 }, "identifierName": "undefined" @@ -15090,29 +15090,29 @@ }, "consequent": { "type": "MemberExpression", - "start": 15984, - "end": 16009, + "start": 17972, + "end": 17997, "loc": { "start": { - "line": 412, + "line": 466, "column": 85 }, "end": { - "line": 412, + "line": 466, "column": 110 } }, "object": { "type": "Identifier", - "start": 15984, - "end": 15994, + "start": 17972, + "end": 17982, "loc": { "start": { - "line": 412, + "line": 466, "column": 85 }, "end": { - "line": 412, + "line": 466, "column": 95 }, "identifierName": "loaderData" @@ -15121,15 +15121,15 @@ }, "property": { "type": "Identifier", - "start": 15995, - "end": 16009, + "start": 17983, + "end": 17997, "loc": { "start": { - "line": 412, + "line": 466, "column": 96 }, "end": { - "line": 412, + "line": 466, "column": 110 }, "identifierName": "pointsFormatId" @@ -15140,15 +15140,15 @@ }, "alternate": { "type": "UnaryExpression", - "start": 16012, - "end": 16014, + "start": 18000, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 113 }, "end": { - "line": 412, + "line": 466, "column": 115 } }, @@ -15156,15 +15156,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 16013, - "end": 16014, + "start": 18001, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 114 }, "end": { - "line": 412, + "line": 466, "column": 115 } }, @@ -15185,29 +15185,29 @@ }, { "type": "IfStatement", - "start": 16037, - "end": 16227, + "start": 18025, + "end": 18215, "loc": { "start": { - "line": 414, + "line": 468, "column": 20 }, "end": { - "line": 418, + "line": 472, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 16041, - "end": 16061, + "start": 18029, + "end": 18049, "loc": { "start": { - "line": 414, + "line": 468, "column": 24 }, "end": { - "line": 414, + "line": 468, "column": 44 } }, @@ -15215,29 +15215,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 16042, - "end": 16061, + "start": 18030, + "end": 18049, "loc": { "start": { - "line": 414, + "line": 468, "column": 25 }, "end": { - "line": 414, + "line": 468, "column": 44 } }, "object": { "type": "Identifier", - "start": 16042, - "end": 16052, + "start": 18030, + "end": 18040, "loc": { "start": { - "line": 414, + "line": 468, "column": 25 }, "end": { - "line": 414, + "line": 468, "column": 35 }, "identifierName": "attributes" @@ -15246,15 +15246,15 @@ }, "property": { "type": "Identifier", - "start": 16053, - "end": 16061, + "start": 18041, + "end": 18049, "loc": { "start": { - "line": 414, + "line": 468, "column": 36 }, "end": { - "line": 414, + "line": 468, "column": 44 }, "identifierName": "POSITION" @@ -15269,72 +15269,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 16063, - "end": 16227, + "start": 18051, + "end": 18215, "loc": { "start": { - "line": 414, + "line": 468, "column": 46 }, "end": { - "line": 418, + "line": 472, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 16089, - "end": 16111, + "start": 18077, + "end": 18099, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 46 } }, "expression": { "type": "CallExpression", - "start": 16089, - "end": 16110, + "start": 18077, + "end": 18098, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 16089, - "end": 16108, + "start": 18077, + "end": 18096, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 43 } }, "object": { "type": "Identifier", - "start": 16089, - "end": 16099, + "start": 18077, + "end": 18087, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 34 }, "identifierName": "sceneModel" @@ -15343,15 +15343,15 @@ }, "property": { "type": "Identifier", - "start": 16100, - "end": 16108, + "start": 18088, + "end": 18096, "loc": { "start": { - "line": 415, + "line": 469, "column": 35 }, "end": { - "line": 415, + "line": 469, "column": 43 }, "identifierName": "finalize" @@ -15365,43 +15365,43 @@ }, { "type": "ExpressionStatement", - "start": 16136, - "end": 16173, + "start": 18124, + "end": 18161, "loc": { "start": { - "line": 416, + "line": 470, "column": 24 }, "end": { - "line": 416, + "line": 470, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 16136, - "end": 16172, + "start": 18124, + "end": 18160, "loc": { "start": { - "line": 416, + "line": 470, "column": 24 }, "end": { - "line": 416, + "line": 470, "column": 60 } }, "callee": { "type": "Identifier", - "start": 16136, - "end": 16142, + "start": 18124, + "end": 18130, "loc": { "start": { - "line": 416, + "line": 470, "column": 24 }, "end": { - "line": 416, + "line": 470, "column": 30 }, "identifierName": "reject" @@ -15411,15 +15411,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 16143, - "end": 16171, + "start": 18131, + "end": 18159, "loc": { "start": { - "line": 416, + "line": 470, "column": 31 }, "end": { - "line": 416, + "line": 470, "column": 59 } }, @@ -15434,15 +15434,15 @@ }, { "type": "ReturnStatement", - "start": 16198, - "end": 16205, + "start": 18186, + "end": 18193, "loc": { "start": { - "line": 417, + "line": 471, "column": 24 }, "end": { - "line": 417, + "line": 471, "column": 31 } }, @@ -15455,44 +15455,44 @@ }, { "type": "VariableDeclaration", - "start": 16249, - "end": 16267, + "start": 18237, + "end": 18255, "loc": { "start": { - "line": 420, + "line": 474, "column": 20 }, "end": { - "line": 420, + "line": 474, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16253, - "end": 16267, + "start": 18241, + "end": 18255, "loc": { "start": { - "line": 420, + "line": 474, "column": 24 }, "end": { - "line": 420, + "line": 474, "column": 38 } }, "id": { "type": "Identifier", - "start": 16253, - "end": 16267, + "start": 18241, + "end": 18255, "loc": { "start": { - "line": 420, + "line": 474, "column": 24 }, "end": { - "line": 420, + "line": 474, "column": 38 }, "identifierName": "positionsValue" @@ -15506,44 +15506,44 @@ }, { "type": "VariableDeclaration", - "start": 16288, - "end": 16309, + "start": 18276, + "end": 18297, "loc": { "start": { - "line": 421, + "line": 475, "column": 20 }, "end": { - "line": 421, + "line": 475, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16292, - "end": 16308, + "start": 18280, + "end": 18296, "loc": { "start": { - "line": 421, + "line": 475, "column": 24 }, "end": { - "line": 421, + "line": 475, "column": 40 } }, "id": { "type": "Identifier", - "start": 16292, - "end": 16308, + "start": 18280, + "end": 18296, "loc": { "start": { - "line": 421, + "line": 475, "column": 24 }, "end": { - "line": 421, + "line": 475, "column": 40 }, "identifierName": "colorsCompressed" @@ -15557,29 +15557,29 @@ }, { "type": "SwitchStatement", - "start": 16331, - "end": 18128, + "start": 18319, + "end": 20116, "loc": { "start": { - "line": 423, + "line": 477, "column": 20 }, "end": { - "line": 455, + "line": 509, "column": 21 } }, "discriminant": { "type": "Identifier", - "start": 16339, - "end": 16353, + "start": 18327, + "end": 18341, "loc": { "start": { - "line": 423, + "line": 477, "column": 28 }, "end": { - "line": 423, + "line": 477, "column": 42 }, "identifierName": "pointsFormatId" @@ -15589,59 +15589,59 @@ "cases": [ { "type": "SwitchCase", - "start": 16381, - "end": 16590, + "start": 18369, + "end": 18578, "loc": { "start": { - "line": 424, + "line": 478, "column": 24 }, "end": { - "line": 427, + "line": 481, "column": 34 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 16417, - "end": 16469, + "start": 18405, + "end": 18457, "loc": { "start": { - "line": 425, + "line": 479, "column": 28 }, "end": { - "line": 425, + "line": 479, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 16417, - "end": 16468, + "start": 18405, + "end": 18456, "loc": { "start": { - "line": 425, + "line": 479, "column": 28 }, "end": { - "line": 425, + "line": 479, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16417, - "end": 16431, + "start": 18405, + "end": 18419, "loc": { "start": { - "line": 425, + "line": 479, "column": 28 }, "end": { - "line": 425, + "line": 479, "column": 42 }, "identifierName": "positionsValue" @@ -15650,29 +15650,29 @@ }, "right": { "type": "CallExpression", - "start": 16434, - "end": 16468, + "start": 18422, + "end": 18456, "loc": { "start": { - "line": 425, + "line": 479, "column": 45 }, "end": { - "line": 425, + "line": 479, "column": 79 } }, "callee": { "type": "Identifier", - "start": 16434, - "end": 16447, + "start": 18422, + "end": 18435, "loc": { "start": { - "line": 425, + "line": 479, "column": 45 }, "end": { - "line": 425, + "line": 479, "column": 58 }, "identifierName": "readPositions" @@ -15682,29 +15682,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 16448, - "end": 16467, + "start": 18436, + "end": 18455, "loc": { "start": { - "line": 425, + "line": 479, "column": 59 }, "end": { - "line": 425, + "line": 479, "column": 78 } }, "object": { "type": "Identifier", - "start": 16448, - "end": 16458, + "start": 18436, + "end": 18446, "loc": { "start": { - "line": 425, + "line": 479, "column": 59 }, "end": { - "line": 425, + "line": 479, "column": 69 }, "identifierName": "attributes" @@ -15713,15 +15713,15 @@ }, "property": { "type": "Identifier", - "start": 16459, - "end": 16467, + "start": 18447, + "end": 18455, "loc": { "start": { - "line": 425, + "line": 479, "column": 70 }, "end": { - "line": 425, + "line": 479, "column": 78 }, "identifierName": "POSITION" @@ -15736,44 +15736,44 @@ }, { "type": "ExpressionStatement", - "start": 16498, - "end": 16555, + "start": 18486, + "end": 18543, "loc": { "start": { - "line": 426, + "line": 480, "column": 28 }, "end": { - "line": 426, + "line": 480, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 16498, - "end": 16554, + "start": 18486, + "end": 18542, "loc": { "start": { - "line": 426, + "line": 480, "column": 28 }, "end": { - "line": 426, + "line": 480, "column": 84 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16498, - "end": 16514, + "start": 18486, + "end": 18502, "loc": { "start": { - "line": 426, + "line": 480, "column": 28 }, "end": { - "line": 426, + "line": 480, "column": 44 }, "identifierName": "colorsCompressed" @@ -15782,29 +15782,29 @@ }, "right": { "type": "CallExpression", - "start": 16517, - "end": 16554, + "start": 18505, + "end": 18542, "loc": { "start": { - "line": 426, + "line": 480, "column": 47 }, "end": { - "line": 426, + "line": 480, "column": 84 } }, "callee": { "type": "Identifier", - "start": 16517, - "end": 16532, + "start": 18505, + "end": 18520, "loc": { "start": { - "line": 426, + "line": 480, "column": 47 }, "end": { - "line": 426, + "line": 480, "column": 62 }, "identifierName": "readIntensities" @@ -15814,29 +15814,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 16533, - "end": 16553, + "start": 18521, + "end": 18541, "loc": { "start": { - "line": 426, + "line": 480, "column": 63 }, "end": { - "line": 426, + "line": 480, "column": 83 } }, "object": { "type": "Identifier", - "start": 16533, - "end": 16543, + "start": 18521, + "end": 18531, "loc": { "start": { - "line": 426, + "line": 480, "column": 63 }, "end": { - "line": 426, + "line": 480, "column": 73 }, "identifierName": "attributes" @@ -15845,15 +15845,15 @@ }, "property": { "type": "Identifier", - "start": 16544, - "end": 16553, + "start": 18532, + "end": 18541, "loc": { "start": { - "line": 426, + "line": 480, "column": 74 }, "end": { - "line": 426, + "line": 480, "column": 83 }, "identifierName": "intensity" @@ -15868,15 +15868,15 @@ }, { "type": "BreakStatement", - "start": 16584, - "end": 16590, + "start": 18572, + "end": 18578, "loc": { "start": { - "line": 427, + "line": 481, "column": 28 }, "end": { - "line": 427, + "line": 481, "column": 34 } }, @@ -15885,15 +15885,15 @@ ], "test": { "type": "NumericLiteral", - "start": 16386, - "end": 16387, + "start": 18374, + "end": 18375, "loc": { "start": { - "line": 424, + "line": 478, "column": 29 }, "end": { - "line": 424, + "line": 478, "column": 30 } }, @@ -15906,44 +15906,44 @@ }, { "type": "SwitchCase", - "start": 16615, - "end": 17076, + "start": 18603, + "end": 19064, "loc": { "start": { - "line": 428, + "line": 482, "column": 24 }, "end": { - "line": 436, + "line": 490, "column": 34 } }, "consequent": [ { "type": "IfStatement", - "start": 16651, - "end": 16874, + "start": 18639, + "end": 18862, "loc": { "start": { - "line": 429, + "line": 483, "column": 28 }, "end": { - "line": 433, + "line": 487, "column": 29 } }, "test": { "type": "UnaryExpression", - "start": 16655, - "end": 16676, + "start": 18643, + "end": 18664, "loc": { "start": { - "line": 429, + "line": 483, "column": 32 }, "end": { - "line": 429, + "line": 483, "column": 53 } }, @@ -15951,29 +15951,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 16656, - "end": 16676, + "start": 18644, + "end": 18664, "loc": { "start": { - "line": 429, + "line": 483, "column": 33 }, "end": { - "line": 429, + "line": 483, "column": 53 } }, "object": { "type": "Identifier", - "start": 16656, - "end": 16666, + "start": 18644, + "end": 18654, "loc": { "start": { - "line": 429, + "line": 483, "column": 33 }, "end": { - "line": 429, + "line": 483, "column": 43 }, "identifierName": "attributes" @@ -15982,15 +15982,15 @@ }, "property": { "type": "Identifier", - "start": 16667, - "end": 16676, + "start": 18655, + "end": 18664, "loc": { "start": { - "line": 429, + "line": 483, "column": 44 }, "end": { - "line": 429, + "line": 483, "column": 53 }, "identifierName": "intensity" @@ -16005,72 +16005,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 16678, - "end": 16874, + "start": 18666, + "end": 18862, "loc": { "start": { - "line": 429, + "line": 483, "column": 55 }, "end": { - "line": 433, + "line": 487, "column": 29 } }, "body": [ { "type": "ExpressionStatement", - "start": 16712, - "end": 16734, + "start": 18700, + "end": 18722, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 16712, - "end": 16733, + "start": 18700, + "end": 18721, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 16712, - "end": 16731, + "start": 18700, + "end": 18719, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 51 } }, "object": { "type": "Identifier", - "start": 16712, - "end": 16722, + "start": 18700, + "end": 18710, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 42 }, "identifierName": "sceneModel" @@ -16079,15 +16079,15 @@ }, "property": { "type": "Identifier", - "start": 16723, - "end": 16731, + "start": 18711, + "end": 18719, "loc": { "start": { - "line": 430, + "line": 484, "column": 43 }, "end": { - "line": 430, + "line": 484, "column": 51 }, "identifierName": "finalize" @@ -16101,43 +16101,43 @@ }, { "type": "ExpressionStatement", - "start": 16767, - "end": 16804, + "start": 18755, + "end": 18792, "loc": { "start": { - "line": 431, + "line": 485, "column": 32 }, "end": { - "line": 431, + "line": 485, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 16767, - "end": 16803, + "start": 18755, + "end": 18791, "loc": { "start": { - "line": 431, + "line": 485, "column": 32 }, "end": { - "line": 431, + "line": 485, "column": 68 } }, "callee": { "type": "Identifier", - "start": 16767, - "end": 16773, + "start": 18755, + "end": 18761, "loc": { "start": { - "line": 431, + "line": 485, "column": 32 }, "end": { - "line": 431, + "line": 485, "column": 38 }, "identifierName": "reject" @@ -16147,15 +16147,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 16774, - "end": 16802, + "start": 18762, + "end": 18790, "loc": { "start": { - "line": 431, + "line": 485, "column": 39 }, "end": { - "line": 431, + "line": 485, "column": 67 } }, @@ -16170,15 +16170,15 @@ }, { "type": "ReturnStatement", - "start": 16837, - "end": 16844, + "start": 18825, + "end": 18832, "loc": { "start": { - "line": 432, + "line": 486, "column": 32 }, "end": { - "line": 432, + "line": 486, "column": 39 } }, @@ -16191,44 +16191,44 @@ }, { "type": "ExpressionStatement", - "start": 16903, - "end": 16955, + "start": 18891, + "end": 18943, "loc": { "start": { - "line": 434, + "line": 488, "column": 28 }, "end": { - "line": 434, + "line": 488, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 16903, - "end": 16954, + "start": 18891, + "end": 18942, "loc": { "start": { - "line": 434, + "line": 488, "column": 28 }, "end": { - "line": 434, + "line": 488, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16903, - "end": 16917, + "start": 18891, + "end": 18905, "loc": { "start": { - "line": 434, + "line": 488, "column": 28 }, "end": { - "line": 434, + "line": 488, "column": 42 }, "identifierName": "positionsValue" @@ -16237,29 +16237,29 @@ }, "right": { "type": "CallExpression", - "start": 16920, - "end": 16954, + "start": 18908, + "end": 18942, "loc": { "start": { - "line": 434, + "line": 488, "column": 45 }, "end": { - "line": 434, + "line": 488, "column": 79 } }, "callee": { "type": "Identifier", - "start": 16920, - "end": 16933, + "start": 18908, + "end": 18921, "loc": { "start": { - "line": 434, + "line": 488, "column": 45 }, "end": { - "line": 434, + "line": 488, "column": 58 }, "identifierName": "readPositions" @@ -16269,29 +16269,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 16934, - "end": 16953, + "start": 18922, + "end": 18941, "loc": { "start": { - "line": 434, + "line": 488, "column": 59 }, "end": { - "line": 434, + "line": 488, "column": 78 } }, "object": { "type": "Identifier", - "start": 16934, - "end": 16944, + "start": 18922, + "end": 18932, "loc": { "start": { - "line": 434, + "line": 488, "column": 59 }, "end": { - "line": 434, + "line": 488, "column": 69 }, "identifierName": "attributes" @@ -16300,15 +16300,15 @@ }, "property": { "type": "Identifier", - "start": 16945, - "end": 16953, + "start": 18933, + "end": 18941, "loc": { "start": { - "line": 434, + "line": 488, "column": 70 }, "end": { - "line": 434, + "line": 488, "column": 78 }, "identifierName": "POSITION" @@ -16323,44 +16323,44 @@ }, { "type": "ExpressionStatement", - "start": 16984, - "end": 17041, + "start": 18972, + "end": 19029, "loc": { "start": { - "line": 435, + "line": 489, "column": 28 }, "end": { - "line": 435, + "line": 489, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 16984, - "end": 17040, + "start": 18972, + "end": 19028, "loc": { "start": { - "line": 435, + "line": 489, "column": 28 }, "end": { - "line": 435, + "line": 489, "column": 84 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16984, - "end": 17000, + "start": 18972, + "end": 18988, "loc": { "start": { - "line": 435, + "line": 489, "column": 28 }, "end": { - "line": 435, + "line": 489, "column": 44 }, "identifierName": "colorsCompressed" @@ -16369,29 +16369,29 @@ }, "right": { "type": "CallExpression", - "start": 17003, - "end": 17040, + "start": 18991, + "end": 19028, "loc": { "start": { - "line": 435, + "line": 489, "column": 47 }, "end": { - "line": 435, + "line": 489, "column": 84 } }, "callee": { "type": "Identifier", - "start": 17003, - "end": 17018, + "start": 18991, + "end": 19006, "loc": { "start": { - "line": 435, + "line": 489, "column": 47 }, "end": { - "line": 435, + "line": 489, "column": 62 }, "identifierName": "readIntensities" @@ -16401,29 +16401,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 17019, - "end": 17039, + "start": 19007, + "end": 19027, "loc": { "start": { - "line": 435, + "line": 489, "column": 63 }, "end": { - "line": 435, + "line": 489, "column": 83 } }, "object": { "type": "Identifier", - "start": 17019, - "end": 17029, + "start": 19007, + "end": 19017, "loc": { "start": { - "line": 435, + "line": 489, "column": 63 }, "end": { - "line": 435, + "line": 489, "column": 73 }, "identifierName": "attributes" @@ -16432,15 +16432,15 @@ }, "property": { "type": "Identifier", - "start": 17030, - "end": 17039, + "start": 19018, + "end": 19027, "loc": { "start": { - "line": 435, + "line": 489, "column": 74 }, "end": { - "line": 435, + "line": 489, "column": 83 }, "identifierName": "intensity" @@ -16455,15 +16455,15 @@ }, { "type": "BreakStatement", - "start": 17070, - "end": 17076, + "start": 19058, + "end": 19064, "loc": { "start": { - "line": 436, + "line": 490, "column": 28 }, "end": { - "line": 436, + "line": 490, "column": 34 } }, @@ -16472,15 +16472,15 @@ ], "test": { "type": "NumericLiteral", - "start": 16620, - "end": 16621, + "start": 18608, + "end": 18609, "loc": { "start": { - "line": 428, + "line": 482, "column": 29 }, "end": { - "line": 428, + "line": 482, "column": 30 } }, @@ -16493,44 +16493,44 @@ }, { "type": "SwitchCase", - "start": 17101, - "end": 17591, + "start": 19089, + "end": 19579, "loc": { "start": { - "line": 437, + "line": 491, "column": 24 }, "end": { - "line": 445, + "line": 499, "column": 34 } }, "consequent": [ { "type": "IfStatement", - "start": 17137, - "end": 17360, + "start": 19125, + "end": 19348, "loc": { "start": { - "line": 438, + "line": 492, "column": 28 }, "end": { - "line": 442, + "line": 496, "column": 29 } }, "test": { "type": "UnaryExpression", - "start": 17141, - "end": 17162, + "start": 19129, + "end": 19150, "loc": { "start": { - "line": 438, + "line": 492, "column": 32 }, "end": { - "line": 438, + "line": 492, "column": 53 } }, @@ -16538,29 +16538,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 17142, - "end": 17162, + "start": 19130, + "end": 19150, "loc": { "start": { - "line": 438, + "line": 492, "column": 33 }, "end": { - "line": 438, + "line": 492, "column": 53 } }, "object": { "type": "Identifier", - "start": 17142, - "end": 17152, + "start": 19130, + "end": 19140, "loc": { "start": { - "line": 438, + "line": 492, "column": 33 }, "end": { - "line": 438, + "line": 492, "column": 43 }, "identifierName": "attributes" @@ -16569,15 +16569,15 @@ }, "property": { "type": "Identifier", - "start": 17153, - "end": 17162, + "start": 19141, + "end": 19150, "loc": { "start": { - "line": 438, + "line": 492, "column": 44 }, "end": { - "line": 438, + "line": 492, "column": 53 }, "identifierName": "intensity" @@ -16592,72 +16592,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 17164, - "end": 17360, + "start": 19152, + "end": 19348, "loc": { "start": { - "line": 438, + "line": 492, "column": 55 }, "end": { - "line": 442, + "line": 496, "column": 29 } }, "body": [ { "type": "ExpressionStatement", - "start": 17198, - "end": 17220, + "start": 19186, + "end": 19208, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 17198, - "end": 17219, + "start": 19186, + "end": 19207, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 17198, - "end": 17217, + "start": 19186, + "end": 19205, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 51 } }, "object": { "type": "Identifier", - "start": 17198, - "end": 17208, + "start": 19186, + "end": 19196, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 42 }, "identifierName": "sceneModel" @@ -16666,15 +16666,15 @@ }, "property": { "type": "Identifier", - "start": 17209, - "end": 17217, + "start": 19197, + "end": 19205, "loc": { "start": { - "line": 439, + "line": 493, "column": 43 }, "end": { - "line": 439, + "line": 493, "column": 51 }, "identifierName": "finalize" @@ -16688,43 +16688,43 @@ }, { "type": "ExpressionStatement", - "start": 17253, - "end": 17290, + "start": 19241, + "end": 19278, "loc": { "start": { - "line": 440, + "line": 494, "column": 32 }, "end": { - "line": 440, + "line": 494, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 17253, - "end": 17289, + "start": 19241, + "end": 19277, "loc": { "start": { - "line": 440, + "line": 494, "column": 32 }, "end": { - "line": 440, + "line": 494, "column": 68 } }, "callee": { "type": "Identifier", - "start": 17253, - "end": 17259, + "start": 19241, + "end": 19247, "loc": { "start": { - "line": 440, + "line": 494, "column": 32 }, "end": { - "line": 440, + "line": 494, "column": 38 }, "identifierName": "reject" @@ -16734,15 +16734,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 17260, - "end": 17288, + "start": 19248, + "end": 19276, "loc": { "start": { - "line": 440, + "line": 494, "column": 39 }, "end": { - "line": 440, + "line": 494, "column": 67 } }, @@ -16757,15 +16757,15 @@ }, { "type": "ReturnStatement", - "start": 17323, - "end": 17330, + "start": 19311, + "end": 19318, "loc": { "start": { - "line": 441, + "line": 495, "column": 32 }, "end": { - "line": 441, + "line": 495, "column": 39 } }, @@ -16778,44 +16778,44 @@ }, { "type": "ExpressionStatement", - "start": 17389, - "end": 17441, + "start": 19377, + "end": 19429, "loc": { "start": { - "line": 443, + "line": 497, "column": 28 }, "end": { - "line": 443, + "line": 497, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 17389, - "end": 17440, + "start": 19377, + "end": 19428, "loc": { "start": { - "line": 443, + "line": 497, "column": 28 }, "end": { - "line": 443, + "line": 497, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17389, - "end": 17403, + "start": 19377, + "end": 19391, "loc": { "start": { - "line": 443, + "line": 497, "column": 28 }, "end": { - "line": 443, + "line": 497, "column": 42 }, "identifierName": "positionsValue" @@ -16824,29 +16824,29 @@ }, "right": { "type": "CallExpression", - "start": 17406, - "end": 17440, + "start": 19394, + "end": 19428, "loc": { "start": { - "line": 443, + "line": 497, "column": 45 }, "end": { - "line": 443, + "line": 497, "column": 79 } }, "callee": { "type": "Identifier", - "start": 17406, - "end": 17419, + "start": 19394, + "end": 19407, "loc": { "start": { - "line": 443, + "line": 497, "column": 45 }, "end": { - "line": 443, + "line": 497, "column": 58 }, "identifierName": "readPositions" @@ -16856,29 +16856,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 17420, - "end": 17439, + "start": 19408, + "end": 19427, "loc": { "start": { - "line": 443, + "line": 497, "column": 59 }, "end": { - "line": 443, + "line": 497, "column": 78 } }, "object": { "type": "Identifier", - "start": 17420, - "end": 17430, + "start": 19408, + "end": 19418, "loc": { "start": { - "line": 443, + "line": 497, "column": 59 }, "end": { - "line": 443, + "line": 497, "column": 69 }, "identifierName": "attributes" @@ -16887,15 +16887,15 @@ }, "property": { "type": "Identifier", - "start": 17431, - "end": 17439, + "start": 19419, + "end": 19427, "loc": { "start": { - "line": 443, + "line": 497, "column": 70 }, "end": { - "line": 443, + "line": 497, "column": 78 }, "identifierName": "POSITION" @@ -16910,44 +16910,44 @@ }, { "type": "ExpressionStatement", - "start": 17470, - "end": 17556, + "start": 19458, + "end": 19544, "loc": { "start": { - "line": 444, + "line": 498, "column": 28 }, "end": { - "line": 444, + "line": 498, "column": 114 } }, "expression": { "type": "AssignmentExpression", - "start": 17470, - "end": 17555, + "start": 19458, + "end": 19543, "loc": { "start": { - "line": 444, + "line": 498, "column": 28 }, "end": { - "line": 444, + "line": 498, "column": 113 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17470, - "end": 17486, + "start": 19458, + "end": 19474, "loc": { "start": { - "line": 444, + "line": 498, "column": 28 }, "end": { - "line": 444, + "line": 498, "column": 44 }, "identifierName": "colorsCompressed" @@ -16956,29 +16956,29 @@ }, "right": { "type": "CallExpression", - "start": 17489, - "end": 17555, + "start": 19477, + "end": 19543, "loc": { "start": { - "line": 444, + "line": 498, "column": 47 }, "end": { - "line": 444, + "line": 498, "column": 113 } }, "callee": { "type": "Identifier", - "start": 17489, - "end": 17513, + "start": 19477, + "end": 19501, "loc": { "start": { - "line": 444, + "line": 498, "column": 47 }, "end": { - "line": 444, + "line": 498, "column": 71 }, "identifierName": "readColorsAndIntensities" @@ -16988,29 +16988,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 17514, - "end": 17532, + "start": 19502, + "end": 19520, "loc": { "start": { - "line": 444, + "line": 498, "column": 72 }, "end": { - "line": 444, + "line": 498, "column": 90 } }, "object": { "type": "Identifier", - "start": 17514, - "end": 17524, + "start": 19502, + "end": 19512, "loc": { "start": { - "line": 444, + "line": 498, "column": 72 }, "end": { - "line": 444, + "line": 498, "column": 82 }, "identifierName": "attributes" @@ -17019,15 +17019,15 @@ }, "property": { "type": "Identifier", - "start": 17525, - "end": 17532, + "start": 19513, + "end": 19520, "loc": { "start": { - "line": 444, + "line": 498, "column": 83 }, "end": { - "line": 444, + "line": 498, "column": 90 }, "identifierName": "COLOR_0" @@ -17038,29 +17038,29 @@ }, { "type": "MemberExpression", - "start": 17534, - "end": 17554, + "start": 19522, + "end": 19542, "loc": { "start": { - "line": 444, + "line": 498, "column": 92 }, "end": { - "line": 444, + "line": 498, "column": 112 } }, "object": { "type": "Identifier", - "start": 17534, - "end": 17544, + "start": 19522, + "end": 19532, "loc": { "start": { - "line": 444, + "line": 498, "column": 92 }, "end": { - "line": 444, + "line": 498, "column": 102 }, "identifierName": "attributes" @@ -17069,15 +17069,15 @@ }, "property": { "type": "Identifier", - "start": 17545, - "end": 17554, + "start": 19533, + "end": 19542, "loc": { "start": { - "line": 444, + "line": 498, "column": 103 }, "end": { - "line": 444, + "line": 498, "column": 112 }, "identifierName": "intensity" @@ -17092,15 +17092,15 @@ }, { "type": "BreakStatement", - "start": 17585, - "end": 17591, + "start": 19573, + "end": 19579, "loc": { "start": { - "line": 445, + "line": 499, "column": 28 }, "end": { - "line": 445, + "line": 499, "column": 34 } }, @@ -17109,15 +17109,15 @@ ], "test": { "type": "NumericLiteral", - "start": 17106, - "end": 17107, + "start": 19094, + "end": 19095, "loc": { "start": { - "line": 437, + "line": 491, "column": 29 }, "end": { - "line": 437, + "line": 491, "column": 30 } }, @@ -17130,44 +17130,44 @@ }, { "type": "SwitchCase", - "start": 17616, - "end": 18106, + "start": 19604, + "end": 20094, "loc": { "start": { - "line": 446, + "line": 500, "column": 24 }, "end": { - "line": 454, + "line": 508, "column": 34 } }, "consequent": [ { "type": "IfStatement", - "start": 17652, - "end": 17875, + "start": 19640, + "end": 19863, "loc": { "start": { - "line": 447, + "line": 501, "column": 28 }, "end": { - "line": 451, + "line": 505, "column": 29 } }, "test": { "type": "UnaryExpression", - "start": 17656, - "end": 17677, + "start": 19644, + "end": 19665, "loc": { "start": { - "line": 447, + "line": 501, "column": 32 }, "end": { - "line": 447, + "line": 501, "column": 53 } }, @@ -17175,29 +17175,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 17657, - "end": 17677, + "start": 19645, + "end": 19665, "loc": { "start": { - "line": 447, + "line": 501, "column": 33 }, "end": { - "line": 447, + "line": 501, "column": 53 } }, "object": { "type": "Identifier", - "start": 17657, - "end": 17667, + "start": 19645, + "end": 19655, "loc": { "start": { - "line": 447, + "line": 501, "column": 33 }, "end": { - "line": 447, + "line": 501, "column": 43 }, "identifierName": "attributes" @@ -17206,15 +17206,15 @@ }, "property": { "type": "Identifier", - "start": 17668, - "end": 17677, + "start": 19656, + "end": 19665, "loc": { "start": { - "line": 447, + "line": 501, "column": 44 }, "end": { - "line": 447, + "line": 501, "column": 53 }, "identifierName": "intensity" @@ -17229,72 +17229,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 17679, - "end": 17875, + "start": 19667, + "end": 19863, "loc": { "start": { - "line": 447, + "line": 501, "column": 55 }, "end": { - "line": 451, + "line": 505, "column": 29 } }, "body": [ { "type": "ExpressionStatement", - "start": 17713, - "end": 17735, + "start": 19701, + "end": 19723, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 17713, - "end": 17734, + "start": 19701, + "end": 19722, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 17713, - "end": 17732, + "start": 19701, + "end": 19720, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 51 } }, "object": { "type": "Identifier", - "start": 17713, - "end": 17723, + "start": 19701, + "end": 19711, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 42 }, "identifierName": "sceneModel" @@ -17303,15 +17303,15 @@ }, "property": { "type": "Identifier", - "start": 17724, - "end": 17732, + "start": 19712, + "end": 19720, "loc": { "start": { - "line": 448, + "line": 502, "column": 43 }, "end": { - "line": 448, + "line": 502, "column": 51 }, "identifierName": "finalize" @@ -17325,43 +17325,43 @@ }, { "type": "ExpressionStatement", - "start": 17768, - "end": 17805, + "start": 19756, + "end": 19793, "loc": { "start": { - "line": 449, + "line": 503, "column": 32 }, "end": { - "line": 449, + "line": 503, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 17768, - "end": 17804, + "start": 19756, + "end": 19792, "loc": { "start": { - "line": 449, + "line": 503, "column": 32 }, "end": { - "line": 449, + "line": 503, "column": 68 } }, "callee": { "type": "Identifier", - "start": 17768, - "end": 17774, + "start": 19756, + "end": 19762, "loc": { "start": { - "line": 449, + "line": 503, "column": 32 }, "end": { - "line": 449, + "line": 503, "column": 38 }, "identifierName": "reject" @@ -17371,15 +17371,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 17775, - "end": 17803, + "start": 19763, + "end": 19791, "loc": { "start": { - "line": 449, + "line": 503, "column": 39 }, "end": { - "line": 449, + "line": 503, "column": 67 } }, @@ -17394,15 +17394,15 @@ }, { "type": "ReturnStatement", - "start": 17838, - "end": 17845, + "start": 19826, + "end": 19833, "loc": { "start": { - "line": 450, + "line": 504, "column": 32 }, "end": { - "line": 450, + "line": 504, "column": 39 } }, @@ -17415,44 +17415,44 @@ }, { "type": "ExpressionStatement", - "start": 17904, - "end": 17956, + "start": 19892, + "end": 19944, "loc": { "start": { - "line": 452, + "line": 506, "column": 28 }, "end": { - "line": 452, + "line": 506, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 17904, - "end": 17955, + "start": 19892, + "end": 19943, "loc": { "start": { - "line": 452, + "line": 506, "column": 28 }, "end": { - "line": 452, + "line": 506, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17904, - "end": 17918, + "start": 19892, + "end": 19906, "loc": { "start": { - "line": 452, + "line": 506, "column": 28 }, "end": { - "line": 452, + "line": 506, "column": 42 }, "identifierName": "positionsValue" @@ -17461,29 +17461,29 @@ }, "right": { "type": "CallExpression", - "start": 17921, - "end": 17955, + "start": 19909, + "end": 19943, "loc": { "start": { - "line": 452, + "line": 506, "column": 45 }, "end": { - "line": 452, + "line": 506, "column": 79 } }, "callee": { "type": "Identifier", - "start": 17921, - "end": 17934, + "start": 19909, + "end": 19922, "loc": { "start": { - "line": 452, + "line": 506, "column": 45 }, "end": { - "line": 452, + "line": 506, "column": 58 }, "identifierName": "readPositions" @@ -17493,29 +17493,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 17935, - "end": 17954, + "start": 19923, + "end": 19942, "loc": { "start": { - "line": 452, + "line": 506, "column": 59 }, "end": { - "line": 452, + "line": 506, "column": 78 } }, "object": { "type": "Identifier", - "start": 17935, - "end": 17945, + "start": 19923, + "end": 19933, "loc": { "start": { - "line": 452, + "line": 506, "column": 59 }, "end": { - "line": 452, + "line": 506, "column": 69 }, "identifierName": "attributes" @@ -17524,15 +17524,15 @@ }, "property": { "type": "Identifier", - "start": 17946, - "end": 17954, + "start": 19934, + "end": 19942, "loc": { "start": { - "line": 452, + "line": 506, "column": 70 }, "end": { - "line": 452, + "line": 506, "column": 78 }, "identifierName": "POSITION" @@ -17547,44 +17547,44 @@ }, { "type": "ExpressionStatement", - "start": 17985, - "end": 18071, + "start": 19973, + "end": 20059, "loc": { "start": { - "line": 453, + "line": 507, "column": 28 }, "end": { - "line": 453, + "line": 507, "column": 114 } }, "expression": { "type": "AssignmentExpression", - "start": 17985, - "end": 18070, + "start": 19973, + "end": 20058, "loc": { "start": { - "line": 453, + "line": 507, "column": 28 }, "end": { - "line": 453, + "line": 507, "column": 113 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17985, - "end": 18001, + "start": 19973, + "end": 19989, "loc": { "start": { - "line": 453, + "line": 507, "column": 28 }, "end": { - "line": 453, + "line": 507, "column": 44 }, "identifierName": "colorsCompressed" @@ -17593,29 +17593,29 @@ }, "right": { "type": "CallExpression", - "start": 18004, - "end": 18070, + "start": 19992, + "end": 20058, "loc": { "start": { - "line": 453, + "line": 507, "column": 47 }, "end": { - "line": 453, + "line": 507, "column": 113 } }, "callee": { "type": "Identifier", - "start": 18004, - "end": 18028, + "start": 19992, + "end": 20016, "loc": { "start": { - "line": 453, + "line": 507, "column": 47 }, "end": { - "line": 453, + "line": 507, "column": 71 }, "identifierName": "readColorsAndIntensities" @@ -17625,29 +17625,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 18029, - "end": 18047, + "start": 20017, + "end": 20035, "loc": { "start": { - "line": 453, + "line": 507, "column": 72 }, "end": { - "line": 453, + "line": 507, "column": 90 } }, "object": { "type": "Identifier", - "start": 18029, - "end": 18039, + "start": 20017, + "end": 20027, "loc": { "start": { - "line": 453, + "line": 507, "column": 72 }, "end": { - "line": 453, + "line": 507, "column": 82 }, "identifierName": "attributes" @@ -17656,15 +17656,15 @@ }, "property": { "type": "Identifier", - "start": 18040, - "end": 18047, + "start": 20028, + "end": 20035, "loc": { "start": { - "line": 453, + "line": 507, "column": 83 }, "end": { - "line": 453, + "line": 507, "column": 90 }, "identifierName": "COLOR_0" @@ -17675,29 +17675,29 @@ }, { "type": "MemberExpression", - "start": 18049, - "end": 18069, + "start": 20037, + "end": 20057, "loc": { "start": { - "line": 453, + "line": 507, "column": 92 }, "end": { - "line": 453, + "line": 507, "column": 112 } }, "object": { "type": "Identifier", - "start": 18049, - "end": 18059, + "start": 20037, + "end": 20047, "loc": { "start": { - "line": 453, + "line": 507, "column": 92 }, "end": { - "line": 453, + "line": 507, "column": 102 }, "identifierName": "attributes" @@ -17706,15 +17706,15 @@ }, "property": { "type": "Identifier", - "start": 18060, - "end": 18069, + "start": 20048, + "end": 20057, "loc": { "start": { - "line": 453, + "line": 507, "column": 103 }, "end": { - "line": 453, + "line": 507, "column": 112 }, "identifierName": "intensity" @@ -17729,15 +17729,15 @@ }, { "type": "BreakStatement", - "start": 18100, - "end": 18106, + "start": 20088, + "end": 20094, "loc": { "start": { - "line": 454, + "line": 508, "column": 28 }, "end": { - "line": 454, + "line": 508, "column": 34 } }, @@ -17746,15 +17746,15 @@ ], "test": { "type": "NumericLiteral", - "start": 17621, - "end": 17622, + "start": 19609, + "end": 19610, "loc": { "start": { - "line": 446, + "line": 500, "column": 29 }, "end": { - "line": 446, + "line": 500, "column": 30 } }, @@ -17769,44 +17769,44 @@ }, { "type": "VariableDeclaration", - "start": 18150, - "end": 18216, + "start": 20138, + "end": 20204, "loc": { "start": { - "line": 457, + "line": 511, "column": 20 }, "end": { - "line": 457, + "line": 511, "column": 86 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18156, - "end": 18215, + "start": 20144, + "end": 20203, "loc": { "start": { - "line": 457, + "line": 511, "column": 26 }, "end": { - "line": 457, + "line": 511, "column": 85 } }, "id": { "type": "Identifier", - "start": 18156, - "end": 18168, + "start": 20144, + "end": 20156, "loc": { "start": { - "line": 457, + "line": 511, "column": 26 }, "end": { - "line": 457, + "line": 511, "column": 38 }, "identifierName": "pointsChunks" @@ -17815,29 +17815,29 @@ }, "init": { "type": "CallExpression", - "start": 18171, - "end": 18215, + "start": 20159, + "end": 20203, "loc": { "start": { - "line": 457, + "line": 511, "column": 41 }, "end": { - "line": 457, + "line": 511, "column": 85 } }, "callee": { "type": "Identifier", - "start": 18171, - "end": 18181, + "start": 20159, + "end": 20169, "loc": { "start": { - "line": 457, + "line": 511, "column": 41 }, "end": { - "line": 457, + "line": 511, "column": 51 }, "identifierName": "chunkArray" @@ -17847,15 +17847,15 @@ "arguments": [ { "type": "Identifier", - "start": 18182, - "end": 18196, + "start": 20170, + "end": 20184, "loc": { "start": { - "line": 457, + "line": 511, "column": 52 }, "end": { - "line": 457, + "line": 511, "column": 66 }, "identifierName": "positionsValue" @@ -17864,29 +17864,29 @@ }, { "type": "BinaryExpression", - "start": 18198, - "end": 18214, + "start": 20186, + "end": 20202, "loc": { "start": { - "line": 457, + "line": 511, "column": 68 }, "end": { - "line": 457, + "line": 511, "column": 84 } }, "left": { "type": "Identifier", - "start": 18198, - "end": 18210, + "start": 20186, + "end": 20198, "loc": { "start": { - "line": 457, + "line": 511, "column": 68 }, "end": { - "line": 457, + "line": 511, "column": 80 }, "identifierName": "MAX_VERTICES" @@ -17896,15 +17896,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 18213, - "end": 18214, + "start": 20201, + "end": 20202, "loc": { "start": { - "line": 457, + "line": 511, "column": 83 }, "end": { - "line": 457, + "line": 511, "column": 84 } }, @@ -17923,44 +17923,44 @@ }, { "type": "VariableDeclaration", - "start": 18237, - "end": 18305, + "start": 20225, + "end": 20293, "loc": { "start": { - "line": 458, + "line": 512, "column": 20 }, "end": { - "line": 458, + "line": 512, "column": 88 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18243, - "end": 18304, + "start": 20231, + "end": 20292, "loc": { "start": { - "line": 458, + "line": 512, "column": 26 }, "end": { - "line": 458, + "line": 512, "column": 87 } }, "id": { "type": "Identifier", - "start": 18243, - "end": 18255, + "start": 20231, + "end": 20243, "loc": { "start": { - "line": 458, + "line": 512, "column": 26 }, "end": { - "line": 458, + "line": 512, "column": 38 }, "identifierName": "colorsChunks" @@ -17969,29 +17969,29 @@ }, "init": { "type": "CallExpression", - "start": 18258, - "end": 18304, + "start": 20246, + "end": 20292, "loc": { "start": { - "line": 458, + "line": 512, "column": 41 }, "end": { - "line": 458, + "line": 512, "column": 87 } }, "callee": { "type": "Identifier", - "start": 18258, - "end": 18268, + "start": 20246, + "end": 20256, "loc": { "start": { - "line": 458, + "line": 512, "column": 41 }, "end": { - "line": 458, + "line": 512, "column": 51 }, "identifierName": "chunkArray" @@ -18001,15 +18001,15 @@ "arguments": [ { "type": "Identifier", - "start": 18269, - "end": 18285, + "start": 20257, + "end": 20273, "loc": { "start": { - "line": 458, + "line": 512, "column": 52 }, "end": { - "line": 458, + "line": 512, "column": 68 }, "identifierName": "colorsCompressed" @@ -18018,29 +18018,29 @@ }, { "type": "BinaryExpression", - "start": 18287, - "end": 18303, + "start": 20275, + "end": 20291, "loc": { "start": { - "line": 458, + "line": 512, "column": 70 }, "end": { - "line": 458, + "line": 512, "column": 86 } }, "left": { "type": "Identifier", - "start": 18287, - "end": 18299, + "start": 20275, + "end": 20287, "loc": { "start": { - "line": 458, + "line": 512, "column": 70 }, "end": { - "line": 458, + "line": 512, "column": 82 }, "identifierName": "MAX_VERTICES" @@ -18050,15 +18050,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 18302, - "end": 18303, + "start": 20290, + "end": 20291, "loc": { "start": { - "line": 458, + "line": 512, "column": 85 }, "end": { - "line": 458, + "line": 512, "column": 86 } }, @@ -18077,44 +18077,44 @@ }, { "type": "VariableDeclaration", - "start": 18326, - "end": 18345, + "start": 20314, + "end": 20333, "loc": { "start": { - "line": 459, + "line": 513, "column": 20 }, "end": { - "line": 459, + "line": 513, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18332, - "end": 18344, + "start": 20320, + "end": 20332, "loc": { "start": { - "line": 459, + "line": 513, "column": 26 }, "end": { - "line": 459, + "line": 513, "column": 38 } }, "id": { "type": "Identifier", - "start": 18332, - "end": 18339, + "start": 20320, + "end": 20327, "loc": { "start": { - "line": 459, + "line": 513, "column": 26 }, "end": { - "line": 459, + "line": 513, "column": 33 }, "identifierName": "meshIds" @@ -18123,15 +18123,15 @@ }, "init": { "type": "ArrayExpression", - "start": 18342, - "end": 18344, + "start": 20330, + "end": 20332, "loc": { "start": { - "line": 459, + "line": 513, "column": 36 }, "end": { - "line": 459, + "line": 513, "column": 38 } }, @@ -18143,58 +18143,58 @@ }, { "type": "ForStatement", - "start": 18367, - "end": 18868, + "start": 20355, + "end": 20856, "loc": { "start": { - "line": 461, + "line": 515, "column": 20 }, "end": { - "line": 470, + "line": 524, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 18372, - "end": 18408, + "start": 20360, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 25 }, "end": { - "line": 461, + "line": 515, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18376, - "end": 18381, + "start": 20364, + "end": 20369, "loc": { "start": { - "line": 461, + "line": 515, "column": 29 }, "end": { - "line": 461, + "line": 515, "column": 34 } }, "id": { "type": "Identifier", - "start": 18376, - "end": 18377, + "start": 20364, + "end": 20365, "loc": { "start": { - "line": 461, + "line": 515, "column": 29 }, "end": { - "line": 461, + "line": 515, "column": 30 }, "identifierName": "i" @@ -18203,15 +18203,15 @@ }, "init": { "type": "NumericLiteral", - "start": 18380, - "end": 18381, + "start": 20368, + "end": 20369, "loc": { "start": { - "line": 461, + "line": 515, "column": 33 }, "end": { - "line": 461, + "line": 515, "column": 34 } }, @@ -18224,29 +18224,29 @@ }, { "type": "VariableDeclarator", - "start": 18383, - "end": 18408, + "start": 20371, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 36 }, "end": { - "line": 461, + "line": 515, "column": 61 } }, "id": { "type": "Identifier", - "start": 18383, - "end": 18386, + "start": 20371, + "end": 20374, "loc": { "start": { - "line": 461, + "line": 515, "column": 36 }, "end": { - "line": 461, + "line": 515, "column": 39 }, "identifierName": "len" @@ -18255,29 +18255,29 @@ }, "init": { "type": "MemberExpression", - "start": 18389, - "end": 18408, + "start": 20377, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 42 }, "end": { - "line": 461, + "line": 515, "column": 61 } }, "object": { "type": "Identifier", - "start": 18389, - "end": 18401, + "start": 20377, + "end": 20389, "loc": { "start": { - "line": 461, + "line": 515, "column": 42 }, "end": { - "line": 461, + "line": 515, "column": 54 }, "identifierName": "pointsChunks" @@ -18286,15 +18286,15 @@ }, "property": { "type": "Identifier", - "start": 18402, - "end": 18408, + "start": 20390, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 55 }, "end": { - "line": 461, + "line": 515, "column": 61 }, "identifierName": "length" @@ -18309,29 +18309,29 @@ }, "test": { "type": "BinaryExpression", - "start": 18410, - "end": 18417, + "start": 20398, + "end": 20405, "loc": { "start": { - "line": 461, + "line": 515, "column": 63 }, "end": { - "line": 461, + "line": 515, "column": 70 } }, "left": { "type": "Identifier", - "start": 18410, - "end": 18411, + "start": 20398, + "end": 20399, "loc": { "start": { - "line": 461, + "line": 515, "column": 63 }, "end": { - "line": 461, + "line": 515, "column": 64 }, "identifierName": "i" @@ -18341,15 +18341,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 18414, - "end": 18417, + "start": 20402, + "end": 20405, "loc": { "start": { - "line": 461, + "line": 515, "column": 67 }, "end": { - "line": 461, + "line": 515, "column": 70 }, "identifierName": "len" @@ -18359,15 +18359,15 @@ }, "update": { "type": "UpdateExpression", - "start": 18419, - "end": 18422, + "start": 20407, + "end": 20410, "loc": { "start": { - "line": 461, + "line": 515, "column": 72 }, "end": { - "line": 461, + "line": 515, "column": 75 } }, @@ -18375,15 +18375,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 18419, - "end": 18420, + "start": 20407, + "end": 20408, "loc": { "start": { - "line": 461, + "line": 515, "column": 72 }, "end": { - "line": 461, + "line": 515, "column": 73 }, "identifierName": "i" @@ -18393,59 +18393,59 @@ }, "body": { "type": "BlockStatement", - "start": 18424, - "end": 18868, + "start": 20412, + "end": 20856, "loc": { "start": { - "line": 461, + "line": 515, "column": 77 }, "end": { - "line": 470, + "line": 524, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 18450, - "end": 18482, + "start": 20438, + "end": 20470, "loc": { "start": { - "line": 462, + "line": 516, "column": 24 }, "end": { - "line": 462, + "line": 516, "column": 56 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18456, - "end": 18481, + "start": 20444, + "end": 20469, "loc": { "start": { - "line": 462, + "line": 516, "column": 30 }, "end": { - "line": 462, + "line": 516, "column": 55 } }, "id": { "type": "Identifier", - "start": 18456, - "end": 18462, + "start": 20444, + "end": 20450, "loc": { "start": { - "line": 462, + "line": 516, "column": 30 }, "end": { - "line": 462, + "line": 516, "column": 36 }, "identifierName": "meshId" @@ -18454,30 +18454,30 @@ }, "init": { "type": "TemplateLiteral", - "start": 18465, - "end": 18481, + "start": 20453, + "end": 20469, "loc": { "start": { - "line": 462, + "line": 516, "column": 39 }, "end": { - "line": 462, + "line": 516, "column": 55 } }, "expressions": [ { "type": "Identifier", - "start": 18478, - "end": 18479, + "start": 20466, + "end": 20467, "loc": { "start": { - "line": 462, + "line": 516, "column": 52 }, "end": { - "line": 462, + "line": 516, "column": 53 }, "identifierName": "i" @@ -18488,15 +18488,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 18466, - "end": 18476, + "start": 20454, + "end": 20464, "loc": { "start": { - "line": 462, + "line": 516, "column": 40 }, "end": { - "line": 462, + "line": 516, "column": 50 } }, @@ -18508,15 +18508,15 @@ }, { "type": "TemplateElement", - "start": 18480, - "end": 18480, + "start": 20468, + "end": 20468, "loc": { "start": { - "line": 462, + "line": 516, "column": 54 }, "end": { - "line": 462, + "line": 516, "column": 54 } }, @@ -18534,57 +18534,57 @@ }, { "type": "ExpressionStatement", - "start": 18507, - "end": 18528, + "start": 20495, + "end": 20516, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 45 } }, "expression": { "type": "CallExpression", - "start": 18507, - "end": 18527, + "start": 20495, + "end": 20515, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 44 } }, "callee": { "type": "MemberExpression", - "start": 18507, - "end": 18519, + "start": 20495, + "end": 20507, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 36 } }, "object": { "type": "Identifier", - "start": 18507, - "end": 18514, + "start": 20495, + "end": 20502, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 31 }, "identifierName": "meshIds" @@ -18593,15 +18593,15 @@ }, "property": { "type": "Identifier", - "start": 18515, - "end": 18519, + "start": 20503, + "end": 20507, "loc": { "start": { - "line": 463, + "line": 517, "column": 32 }, "end": { - "line": 463, + "line": 517, "column": 36 }, "identifierName": "push" @@ -18613,15 +18613,15 @@ "arguments": [ { "type": "Identifier", - "start": 18520, - "end": 18526, + "start": 20508, + "end": 20514, "loc": { "start": { - "line": 463, + "line": 517, "column": 37 }, "end": { - "line": 463, + "line": 517, "column": 43 }, "identifierName": "meshId" @@ -18633,57 +18633,57 @@ }, { "type": "ExpressionStatement", - "start": 18553, - "end": 18846, + "start": 20541, + "end": 20834, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 469, + "line": 523, "column": 27 } }, "expression": { "type": "CallExpression", - "start": 18553, - "end": 18845, + "start": 20541, + "end": 20833, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 469, + "line": 523, "column": 26 } }, "callee": { "type": "MemberExpression", - "start": 18553, - "end": 18574, + "start": 20541, + "end": 20562, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 464, + "line": 518, "column": 45 } }, "object": { "type": "Identifier", - "start": 18553, - "end": 18563, + "start": 20541, + "end": 20551, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 464, + "line": 518, "column": 34 }, "identifierName": "sceneModel" @@ -18692,15 +18692,15 @@ }, "property": { "type": "Identifier", - "start": 18564, - "end": 18574, + "start": 20552, + "end": 20562, "loc": { "start": { - "line": 464, + "line": 518, "column": 35 }, "end": { - "line": 464, + "line": 518, "column": 45 }, "identifierName": "createMesh" @@ -18712,30 +18712,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 18575, - "end": 18844, + "start": 20563, + "end": 20832, "loc": { "start": { - "line": 464, + "line": 518, "column": 46 }, "end": { - "line": 469, + "line": 523, "column": 25 } }, "properties": [ { "type": "ObjectProperty", - "start": 18605, - "end": 18615, + "start": 20593, + "end": 20603, "loc": { "start": { - "line": 465, + "line": 519, "column": 28 }, "end": { - "line": 465, + "line": 519, "column": 38 } }, @@ -18744,15 +18744,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18605, - "end": 18607, + "start": 20593, + "end": 20595, "loc": { "start": { - "line": 465, + "line": 519, "column": 28 }, "end": { - "line": 465, + "line": 519, "column": 30 }, "identifierName": "id" @@ -18761,15 +18761,15 @@ }, "value": { "type": "Identifier", - "start": 18609, - "end": 18615, + "start": 20597, + "end": 20603, "loc": { "start": { - "line": 465, + "line": 519, "column": 32 }, "end": { - "line": 465, + "line": 519, "column": 38 }, "identifierName": "meshId" @@ -18779,15 +18779,15 @@ }, { "type": "ObjectProperty", - "start": 18645, - "end": 18664, + "start": 20633, + "end": 20652, "loc": { "start": { - "line": 466, + "line": 520, "column": 28 }, "end": { - "line": 466, + "line": 520, "column": 47 } }, @@ -18796,15 +18796,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18645, - "end": 18654, + "start": 20633, + "end": 20642, "loc": { "start": { - "line": 466, + "line": 520, "column": 28 }, "end": { - "line": 466, + "line": 520, "column": 37 }, "identifierName": "primitive" @@ -18813,15 +18813,15 @@ }, "value": { "type": "StringLiteral", - "start": 18656, - "end": 18664, + "start": 20644, + "end": 20652, "loc": { "start": { - "line": 466, + "line": 520, "column": 39 }, "end": { - "line": 466, + "line": 520, "column": 47 } }, @@ -18834,15 +18834,15 @@ }, { "type": "ObjectProperty", - "start": 18694, - "end": 18720, + "start": 20682, + "end": 20708, "loc": { "start": { - "line": 467, + "line": 521, "column": 28 }, "end": { - "line": 467, + "line": 521, "column": 54 } }, @@ -18851,15 +18851,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18694, - "end": 18703, + "start": 20682, + "end": 20691, "loc": { "start": { - "line": 467, + "line": 521, "column": 28 }, "end": { - "line": 467, + "line": 521, "column": 37 }, "identifierName": "positions" @@ -18868,29 +18868,29 @@ }, "value": { "type": "MemberExpression", - "start": 18705, - "end": 18720, + "start": 20693, + "end": 20708, "loc": { "start": { - "line": 467, + "line": 521, "column": 39 }, "end": { - "line": 467, + "line": 521, "column": 54 } }, "object": { "type": "Identifier", - "start": 18705, - "end": 18717, + "start": 20693, + "end": 20705, "loc": { "start": { - "line": 467, + "line": 521, "column": 39 }, "end": { - "line": 467, + "line": 521, "column": 51 }, "identifierName": "pointsChunks" @@ -18899,15 +18899,15 @@ }, "property": { "type": "Identifier", - "start": 18718, - "end": 18719, + "start": 20706, + "end": 20707, "loc": { "start": { - "line": 467, + "line": 521, "column": 52 }, "end": { - "line": 467, + "line": 521, "column": 53 }, "identifierName": "i" @@ -18919,15 +18919,15 @@ }, { "type": "ObjectProperty", - "start": 18750, - "end": 18818, + "start": 20738, + "end": 20806, "loc": { "start": { - "line": 468, + "line": 522, "column": 28 }, "end": { - "line": 468, + "line": 522, "column": 96 } }, @@ -18936,15 +18936,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18750, - "end": 18766, + "start": 20738, + "end": 20754, "loc": { "start": { - "line": 468, + "line": 522, "column": 28 }, "end": { - "line": 468, + "line": 522, "column": 44 }, "identifierName": "colorsCompressed" @@ -18953,43 +18953,43 @@ }, "value": { "type": "ConditionalExpression", - "start": 18768, - "end": 18818, + "start": 20756, + "end": 20806, "loc": { "start": { - "line": 468, + "line": 522, "column": 46 }, "end": { - "line": 468, + "line": 522, "column": 96 } }, "test": { "type": "BinaryExpression", - "start": 18769, - "end": 18792, + "start": 20757, + "end": 20780, "loc": { "start": { - "line": 468, + "line": 522, "column": 47 }, "end": { - "line": 468, + "line": 522, "column": 70 } }, "left": { "type": "Identifier", - "start": 18769, - "end": 18770, + "start": 20757, + "end": 20758, "loc": { "start": { - "line": 468, + "line": 522, "column": 47 }, "end": { - "line": 468, + "line": 522, "column": 48 }, "identifierName": "i" @@ -18999,29 +18999,29 @@ "operator": "<", "right": { "type": "MemberExpression", - "start": 18773, - "end": 18792, + "start": 20761, + "end": 20780, "loc": { "start": { - "line": 468, + "line": 522, "column": 51 }, "end": { - "line": 468, + "line": 522, "column": 70 } }, "object": { "type": "Identifier", - "start": 18773, - "end": 18785, + "start": 20761, + "end": 20773, "loc": { "start": { - "line": 468, + "line": 522, "column": 51 }, "end": { - "line": 468, + "line": 522, "column": 63 }, "identifierName": "colorsChunks" @@ -19030,15 +19030,15 @@ }, "property": { "type": "Identifier", - "start": 18786, - "end": 18792, + "start": 20774, + "end": 20780, "loc": { "start": { - "line": 468, + "line": 522, "column": 64 }, "end": { - "line": 468, + "line": 522, "column": 70 }, "identifierName": "length" @@ -19049,34 +19049,34 @@ }, "extra": { "parenthesized": true, - "parenStart": 18768 + "parenStart": 20756 } }, "consequent": { "type": "MemberExpression", - "start": 18796, - "end": 18811, + "start": 20784, + "end": 20799, "loc": { "start": { - "line": 468, + "line": 522, "column": 74 }, "end": { - "line": 468, + "line": 522, "column": 89 } }, "object": { "type": "Identifier", - "start": 18796, - "end": 18808, + "start": 20784, + "end": 20796, "loc": { "start": { - "line": 468, + "line": 522, "column": 74 }, "end": { - "line": 468, + "line": 522, "column": 86 }, "identifierName": "colorsChunks" @@ -19085,15 +19085,15 @@ }, "property": { "type": "Identifier", - "start": 18809, - "end": 18810, + "start": 20797, + "end": 20798, "loc": { "start": { - "line": 468, + "line": 522, "column": 87 }, "end": { - "line": 468, + "line": 522, "column": 88 }, "identifierName": "i" @@ -19104,15 +19104,15 @@ }, "alternate": { "type": "NullLiteral", - "start": 18814, - "end": 18818, + "start": 20802, + "end": 20806, "loc": { "start": { - "line": 468, + "line": 522, "column": 92 }, "end": { - "line": 468, + "line": 522, "column": 96 } } @@ -19132,15 +19132,15 @@ { "type": "CommentBlock", "value": "\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n\n const geometryId = `geometryMesh${i}`;\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n\n sceneModel.createMesh({\n id: meshId,\n geometryId\n });\n }\n ", - "start": 18889, - "end": 19895, + "start": 20877, + "end": 21883, "loc": { "start": { - "line": 471, + "line": 525, "column": 20 }, "end": { - "line": 494, + "line": 548, "column": 23 } } @@ -19149,44 +19149,44 @@ }, { "type": "VariableDeclaration", - "start": 19917, - "end": 19977, + "start": 21905, + "end": 21965, "loc": { "start": { - "line": 496, + "line": 550, "column": 20 }, "end": { - "line": 496, + "line": 550, "column": 80 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 19923, - "end": 19976, + "start": 21911, + "end": 21964, "loc": { "start": { - "line": 496, + "line": 550, "column": 26 }, "end": { - "line": 496, + "line": 550, "column": 79 } }, "id": { "type": "Identifier", - "start": 19923, - "end": 19937, + "start": 21911, + "end": 21925, "loc": { "start": { - "line": 496, + "line": 550, "column": 26 }, "end": { - "line": 496, + "line": 550, "column": 40 }, "identifierName": "pointsObjectId" @@ -19196,43 +19196,43 @@ }, "init": { "type": "LogicalExpression", - "start": 19940, - "end": 19976, + "start": 21928, + "end": 21964, "loc": { "start": { - "line": 496, + "line": 550, "column": 43 }, "end": { - "line": 496, + "line": 550, "column": 79 } }, "left": { "type": "MemberExpression", - "start": 19940, - "end": 19955, + "start": 21928, + "end": 21943, "loc": { "start": { - "line": 496, + "line": 550, "column": 43 }, "end": { - "line": 496, + "line": 550, "column": 58 } }, "object": { "type": "Identifier", - "start": 19940, - "end": 19946, + "start": 21928, + "end": 21934, "loc": { "start": { - "line": 496, + "line": 550, "column": 43 }, "end": { - "line": 496, + "line": 550, "column": 49 }, "identifierName": "params" @@ -19241,15 +19241,15 @@ }, "property": { "type": "Identifier", - "start": 19947, - "end": 19955, + "start": 21935, + "end": 21943, "loc": { "start": { - "line": 496, + "line": 550, "column": 50 }, "end": { - "line": 496, + "line": 550, "column": 58 }, "identifierName": "entityId" @@ -19261,43 +19261,43 @@ "operator": "||", "right": { "type": "CallExpression", - "start": 19959, - "end": 19976, + "start": 21947, + "end": 21964, "loc": { "start": { - "line": 496, + "line": 550, "column": 62 }, "end": { - "line": 496, + "line": 550, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 19959, - "end": 19974, + "start": 21947, + "end": 21962, "loc": { "start": { - "line": 496, + "line": 550, "column": 62 }, "end": { - "line": 496, + "line": 550, "column": 77 } }, "object": { "type": "Identifier", - "start": 19959, - "end": 19963, + "start": 21947, + "end": 21951, "loc": { "start": { - "line": 496, + "line": 550, "column": 62 }, "end": { - "line": 496, + "line": 550, "column": 66 }, "identifierName": "math" @@ -19306,15 +19306,15 @@ }, "property": { "type": "Identifier", - "start": 19964, - "end": 19974, + "start": 21952, + "end": 21962, "loc": { "start": { - "line": 496, + "line": 550, "column": 67 }, "end": { - "line": 496, + "line": 550, "column": 77 }, "identifierName": "createUUID" @@ -19334,15 +19334,15 @@ { "type": "CommentBlock", "value": "\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n\n const geometryId = `geometryMesh${i}`;\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n\n sceneModel.createMesh({\n id: meshId,\n geometryId\n });\n }\n ", - "start": 18889, - "end": 19895, + "start": 20877, + "end": 21883, "loc": { "start": { - "line": 471, + "line": 525, "column": 20 }, "end": { - "line": 494, + "line": 548, "column": 23 } } @@ -19351,57 +19351,57 @@ }, { "type": "ExpressionStatement", - "start": 19999, - "end": 20164, + "start": 21987, + "end": 22152, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 502, + "line": 556, "column": 23 } }, "expression": { "type": "CallExpression", - "start": 19999, - "end": 20163, + "start": 21987, + "end": 22151, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 502, + "line": 556, "column": 22 } }, "callee": { "type": "MemberExpression", - "start": 19999, - "end": 20022, + "start": 21987, + "end": 22010, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 498, + "line": 552, "column": 43 } }, "object": { "type": "Identifier", - "start": 19999, - "end": 20009, + "start": 21987, + "end": 21997, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 498, + "line": 552, "column": 30 }, "identifierName": "sceneModel" @@ -19410,15 +19410,15 @@ }, "property": { "type": "Identifier", - "start": 20010, - "end": 20022, + "start": 21998, + "end": 22010, "loc": { "start": { - "line": 498, + "line": 552, "column": 31 }, "end": { - "line": 498, + "line": 552, "column": 43 }, "identifierName": "createEntity" @@ -19430,30 +19430,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 20023, - "end": 20162, + "start": 22011, + "end": 22150, "loc": { "start": { - "line": 498, + "line": 552, "column": 44 }, "end": { - "line": 502, + "line": 556, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 20049, - "end": 20067, + "start": 22037, + "end": 22055, "loc": { "start": { - "line": 499, + "line": 553, "column": 24 }, "end": { - "line": 499, + "line": 553, "column": 42 } }, @@ -19462,15 +19462,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20049, - "end": 20051, + "start": 22037, + "end": 22039, "loc": { "start": { - "line": 499, + "line": 553, "column": 24 }, "end": { - "line": 499, + "line": 553, "column": 26 }, "identifierName": "id" @@ -19479,15 +19479,15 @@ }, "value": { "type": "Identifier", - "start": 20053, - "end": 20067, + "start": 22041, + "end": 22055, "loc": { "start": { - "line": 499, + "line": 553, "column": 28 }, "end": { - "line": 499, + "line": 553, "column": 42 }, "identifierName": "pointsObjectId" @@ -19497,15 +19497,15 @@ }, { "type": "ObjectProperty", - "start": 20093, - "end": 20100, + "start": 22081, + "end": 22088, "loc": { "start": { - "line": 500, + "line": 554, "column": 24 }, "end": { - "line": 500, + "line": 554, "column": 31 } }, @@ -19514,15 +19514,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20093, - "end": 20100, + "start": 22081, + "end": 22088, "loc": { "start": { - "line": 500, + "line": 554, "column": 24 }, "end": { - "line": 500, + "line": 554, "column": 31 }, "identifierName": "meshIds" @@ -19531,15 +19531,15 @@ }, "value": { "type": "Identifier", - "start": 20093, - "end": 20100, + "start": 22081, + "end": 22088, "loc": { "start": { - "line": 500, + "line": 554, "column": 24 }, "end": { - "line": 500, + "line": 554, "column": 31 }, "identifierName": "meshIds" @@ -19552,15 +19552,15 @@ }, { "type": "ObjectProperty", - "start": 20126, - "end": 20140, + "start": 22114, + "end": 22128, "loc": { "start": { - "line": 501, + "line": 555, "column": 24 }, "end": { - "line": 501, + "line": 555, "column": 38 } }, @@ -19569,15 +19569,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20126, - "end": 20134, + "start": 22114, + "end": 22122, "loc": { "start": { - "line": 501, + "line": 555, "column": 24 }, "end": { - "line": 501, + "line": 555, "column": 32 }, "identifierName": "isObject" @@ -19586,15 +19586,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 20136, - "end": 20140, + "start": 22124, + "end": 22128, "loc": { "start": { - "line": 501, + "line": 555, "column": 34 }, "end": { - "line": 501, + "line": 555, "column": 38 } }, @@ -19608,57 +19608,57 @@ }, { "type": "ExpressionStatement", - "start": 20186, - "end": 20208, + "start": 22174, + "end": 22196, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 42 } }, "expression": { "type": "CallExpression", - "start": 20186, - "end": 20207, + "start": 22174, + "end": 22195, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 41 } }, "callee": { "type": "MemberExpression", - "start": 20186, - "end": 20205, + "start": 22174, + "end": 22193, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 39 } }, "object": { "type": "Identifier", - "start": 20186, - "end": 20196, + "start": 22174, + "end": 22184, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 30 }, "identifierName": "sceneModel" @@ -19667,15 +19667,15 @@ }, "property": { "type": "Identifier", - "start": 20197, - "end": 20205, + "start": 22185, + "end": 22193, "loc": { "start": { - "line": 504, + "line": 558, "column": 31 }, "end": { - "line": 504, + "line": 558, "column": 39 }, "identifierName": "finalize" @@ -19689,43 +19689,43 @@ }, { "type": "IfStatement", - "start": 20230, - "end": 21735, + "start": 22218, + "end": 23723, "loc": { "start": { - "line": 506, + "line": 560, "column": 20 }, "end": { - "line": 535, + "line": 589, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 20234, - "end": 20254, + "start": 22222, + "end": 22242, "loc": { "start": { - "line": 506, + "line": 560, "column": 24 }, "end": { - "line": 506, + "line": 560, "column": 44 } }, "object": { "type": "Identifier", - "start": 20234, - "end": 20240, + "start": 22222, + "end": 22228, "loc": { "start": { - "line": 506, + "line": 560, "column": 24 }, "end": { - "line": 506, + "line": 560, "column": 30 }, "identifierName": "params" @@ -19734,15 +19734,15 @@ }, "property": { "type": "Identifier", - "start": 20241, - "end": 20254, + "start": 22229, + "end": 22242, "loc": { "start": { - "line": 506, + "line": 560, "column": 31 }, "end": { - "line": 506, + "line": 560, "column": 44 }, "identifierName": "metaModelJSON" @@ -19753,59 +19753,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 20256, - "end": 20445, + "start": 22244, + "end": 22433, "loc": { "start": { - "line": 506, + "line": 560, "column": 46 }, "end": { - "line": 509, + "line": 563, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 20282, - "end": 20316, + "start": 22270, + "end": 22304, "loc": { "start": { - "line": 507, + "line": 561, "column": 24 }, "end": { - "line": 507, + "line": 561, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20288, - "end": 20315, + "start": 22276, + "end": 22303, "loc": { "start": { - "line": 507, + "line": 561, "column": 30 }, "end": { - "line": 507, + "line": 561, "column": 57 } }, "id": { "type": "Identifier", - "start": 20288, - "end": 20299, + "start": 22276, + "end": 22287, "loc": { "start": { - "line": 507, + "line": 561, "column": 30 }, "end": { - "line": 507, + "line": 561, "column": 41 }, "identifierName": "metaModelId" @@ -19814,29 +19814,29 @@ }, "init": { "type": "MemberExpression", - "start": 20302, - "end": 20315, + "start": 22290, + "end": 22303, "loc": { "start": { - "line": 507, + "line": 561, "column": 44 }, "end": { - "line": 507, + "line": 561, "column": 57 } }, "object": { "type": "Identifier", - "start": 20302, - "end": 20312, + "start": 22290, + "end": 22300, "loc": { "start": { - "line": 507, + "line": 561, "column": 44 }, "end": { - "line": 507, + "line": 561, "column": 54 }, "identifierName": "sceneModel" @@ -19845,15 +19845,15 @@ }, "property": { "type": "Identifier", - "start": 20313, - "end": 20315, + "start": 22301, + "end": 22303, "loc": { "start": { - "line": 507, + "line": 561, "column": 55 }, "end": { - "line": 507, + "line": 561, "column": 57 }, "identifierName": "id" @@ -19868,100 +19868,100 @@ }, { "type": "ExpressionStatement", - "start": 20341, - "end": 20423, + "start": 22329, + "end": 22411, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 106 } }, "expression": { "type": "CallExpression", - "start": 20341, - "end": 20422, + "start": 22329, + "end": 22410, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 105 } }, "callee": { "type": "MemberExpression", - "start": 20341, - "end": 20378, + "start": 22329, + "end": 22366, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 61 } }, "object": { "type": "MemberExpression", - "start": 20341, - "end": 20362, + "start": 22329, + "end": 22350, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 20341, - "end": 20352, + "start": 22329, + "end": 22340, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 20341, - "end": 20345, + "start": 22329, + "end": 22333, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 28 } } }, "property": { "type": "Identifier", - "start": 20346, - "end": 20352, + "start": 22334, + "end": 22340, "loc": { "start": { - "line": 508, + "line": 562, "column": 29 }, "end": { - "line": 508, + "line": 562, "column": 35 }, "identifierName": "viewer" @@ -19972,15 +19972,15 @@ }, "property": { "type": "Identifier", - "start": 20353, - "end": 20362, + "start": 22341, + "end": 22350, "loc": { "start": { - "line": 508, + "line": 562, "column": 36 }, "end": { - "line": 508, + "line": 562, "column": 45 }, "identifierName": "metaScene" @@ -19991,15 +19991,15 @@ }, "property": { "type": "Identifier", - "start": 20363, - "end": 20378, + "start": 22351, + "end": 22366, "loc": { "start": { - "line": 508, + "line": 562, "column": 46 }, "end": { - "line": 508, + "line": 562, "column": 61 }, "identifierName": "createMetaModel" @@ -20011,15 +20011,15 @@ "arguments": [ { "type": "Identifier", - "start": 20379, - "end": 20390, + "start": 22367, + "end": 22378, "loc": { "start": { - "line": 508, + "line": 562, "column": 62 }, "end": { - "line": 508, + "line": 562, "column": 73 }, "identifierName": "metaModelId" @@ -20028,29 +20028,29 @@ }, { "type": "MemberExpression", - "start": 20392, - "end": 20412, + "start": 22380, + "end": 22400, "loc": { "start": { - "line": 508, + "line": 562, "column": 75 }, "end": { - "line": 508, + "line": 562, "column": 95 } }, "object": { "type": "Identifier", - "start": 20392, - "end": 20398, + "start": 22380, + "end": 22386, "loc": { "start": { - "line": 508, + "line": 562, "column": 75 }, "end": { - "line": 508, + "line": 562, "column": 81 }, "identifierName": "params" @@ -20059,15 +20059,15 @@ }, "property": { "type": "Identifier", - "start": 20399, - "end": 20412, + "start": 22387, + "end": 22400, "loc": { "start": { - "line": 508, + "line": 562, "column": 82 }, "end": { - "line": 508, + "line": 562, "column": 95 }, "identifierName": "metaModelJSON" @@ -20078,15 +20078,15 @@ }, { "type": "Identifier", - "start": 20414, - "end": 20421, + "start": 22402, + "end": 22409, "loc": { "start": { - "line": 508, + "line": 562, "column": 97 }, "end": { - "line": 508, + "line": 562, "column": 104 }, "identifierName": "options" @@ -20101,57 +20101,57 @@ }, "alternate": { "type": "IfStatement", - "start": 20451, - "end": 21735, + "start": 22439, + "end": 23723, "loc": { "start": { - "line": 509, + "line": 563, "column": 27 }, "end": { - "line": 535, + "line": 589, "column": 21 } }, "test": { "type": "BinaryExpression", - "start": 20455, - "end": 20484, + "start": 22443, + "end": 22472, "loc": { "start": { - "line": 509, + "line": 563, "column": 31 }, "end": { - "line": 509, + "line": 563, "column": 60 } }, "left": { "type": "MemberExpression", - "start": 20455, - "end": 20474, + "start": 22443, + "end": 22462, "loc": { "start": { - "line": 509, + "line": 563, "column": 31 }, "end": { - "line": 509, + "line": 563, "column": 50 } }, "object": { "type": "Identifier", - "start": 20455, - "end": 20461, + "start": 22443, + "end": 22449, "loc": { "start": { - "line": 509, + "line": 563, "column": 31 }, "end": { - "line": 509, + "line": 563, "column": 37 }, "identifierName": "params" @@ -20160,15 +20160,15 @@ }, "property": { "type": "Identifier", - "start": 20462, - "end": 20474, + "start": 22450, + "end": 22462, "loc": { "start": { - "line": 509, + "line": 563, "column": 38 }, "end": { - "line": 509, + "line": 563, "column": 50 }, "identifierName": "loadMetadata" @@ -20180,15 +20180,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 20479, - "end": 20484, + "start": 22467, + "end": 22472, "loc": { "start": { - "line": 509, + "line": 563, "column": 55 }, "end": { - "line": 509, + "line": 563, "column": 60 } }, @@ -20197,59 +20197,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 20486, - "end": 21735, + "start": 22474, + "end": 23723, "loc": { "start": { - "line": 509, + "line": 563, "column": 62 }, "end": { - "line": 535, + "line": 589, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 20512, - "end": 20555, + "start": 22500, + "end": 22543, "loc": { "start": { - "line": 510, + "line": 564, "column": 24 }, "end": { - "line": 510, + "line": 564, "column": 67 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20518, - "end": 20554, + "start": 22506, + "end": 22542, "loc": { "start": { - "line": 510, + "line": 564, "column": 30 }, "end": { - "line": 510, + "line": 564, "column": 66 } }, "id": { "type": "Identifier", - "start": 20518, - "end": 20534, + "start": 22506, + "end": 22522, "loc": { "start": { - "line": 510, + "line": 564, "column": 30 }, "end": { - "line": 510, + "line": 564, "column": 46 }, "identifierName": "rootMetaObjectId" @@ -20258,43 +20258,43 @@ }, "init": { "type": "CallExpression", - "start": 20537, - "end": 20554, + "start": 22525, + "end": 22542, "loc": { "start": { - "line": 510, + "line": 564, "column": 49 }, "end": { - "line": 510, + "line": 564, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 20537, - "end": 20552, + "start": 22525, + "end": 22540, "loc": { "start": { - "line": 510, + "line": 564, "column": 49 }, "end": { - "line": 510, + "line": 564, "column": 64 } }, "object": { "type": "Identifier", - "start": 20537, - "end": 20541, + "start": 22525, + "end": 22529, "loc": { "start": { - "line": 510, + "line": 564, "column": 49 }, "end": { - "line": 510, + "line": 564, "column": 53 }, "identifierName": "math" @@ -20303,15 +20303,15 @@ }, "property": { "type": "Identifier", - "start": 20542, - "end": 20552, + "start": 22530, + "end": 22540, "loc": { "start": { - "line": 510, + "line": 564, "column": 54 }, "end": { - "line": 510, + "line": 564, "column": 64 }, "identifierName": "createUUID" @@ -20328,44 +20328,44 @@ }, { "type": "VariableDeclaration", - "start": 20580, - "end": 21559, + "start": 22568, + "end": 23547, "loc": { "start": { - "line": 511, + "line": 565, "column": 24 }, "end": { - "line": 532, + "line": 586, "column": 26 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20586, - "end": 21558, + "start": 22574, + "end": 23546, "loc": { "start": { - "line": 511, + "line": 565, "column": 30 }, "end": { - "line": 532, + "line": 586, "column": 25 } }, "id": { "type": "Identifier", - "start": 20586, - "end": 20594, + "start": 22574, + "end": 22582, "loc": { "start": { - "line": 511, + "line": 565, "column": 30 }, "end": { - "line": 511, + "line": 565, "column": 38 }, "identifierName": "metadata" @@ -20374,30 +20374,30 @@ }, "init": { "type": "ObjectExpression", - "start": 20597, - "end": 21558, + "start": 22585, + "end": 23546, "loc": { "start": { - "line": 511, + "line": 565, "column": 41 }, "end": { - "line": 532, + "line": 586, "column": 25 } }, "properties": [ { "type": "ObjectProperty", - "start": 20627, - "end": 20640, + "start": 22615, + "end": 22628, "loc": { "start": { - "line": 512, + "line": 566, "column": 28 }, "end": { - "line": 512, + "line": 566, "column": 41 } }, @@ -20406,15 +20406,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20627, - "end": 20636, + "start": 22615, + "end": 22624, "loc": { "start": { - "line": 512, + "line": 566, "column": 28 }, "end": { - "line": 512, + "line": 566, "column": 37 }, "identifierName": "projectId" @@ -20423,15 +20423,15 @@ }, "value": { "type": "StringLiteral", - "start": 20638, - "end": 20640, + "start": 22626, + "end": 22628, "loc": { "start": { - "line": 512, + "line": 566, "column": 39 }, "end": { - "line": 512, + "line": 566, "column": 41 } }, @@ -20444,15 +20444,15 @@ }, { "type": "ObjectProperty", - "start": 20670, - "end": 20680, + "start": 22658, + "end": 22668, "loc": { "start": { - "line": 513, + "line": 567, "column": 28 }, "end": { - "line": 513, + "line": 567, "column": 38 } }, @@ -20461,15 +20461,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20670, - "end": 20676, + "start": 22658, + "end": 22664, "loc": { "start": { - "line": 513, + "line": 567, "column": 28 }, "end": { - "line": 513, + "line": 567, "column": 34 }, "identifierName": "author" @@ -20478,15 +20478,15 @@ }, "value": { "type": "StringLiteral", - "start": 20678, - "end": 20680, + "start": 22666, + "end": 22668, "loc": { "start": { - "line": 513, + "line": 567, "column": 36 }, "end": { - "line": 513, + "line": 567, "column": 38 } }, @@ -20499,15 +20499,15 @@ }, { "type": "ObjectProperty", - "start": 20710, - "end": 20723, + "start": 22698, + "end": 22711, "loc": { "start": { - "line": 514, + "line": 568, "column": 28 }, "end": { - "line": 514, + "line": 568, "column": 41 } }, @@ -20516,15 +20516,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20710, - "end": 20719, + "start": 22698, + "end": 22707, "loc": { "start": { - "line": 514, + "line": 568, "column": 28 }, "end": { - "line": 514, + "line": 568, "column": 37 }, "identifierName": "createdAt" @@ -20533,15 +20533,15 @@ }, "value": { "type": "StringLiteral", - "start": 20721, - "end": 20723, + "start": 22709, + "end": 22711, "loc": { "start": { - "line": 514, + "line": 568, "column": 39 }, "end": { - "line": 514, + "line": 568, "column": 41 } }, @@ -20554,15 +20554,15 @@ }, { "type": "ObjectProperty", - "start": 20753, - "end": 20763, + "start": 22741, + "end": 22751, "loc": { "start": { - "line": 515, + "line": 569, "column": 28 }, "end": { - "line": 515, + "line": 569, "column": 38 } }, @@ -20571,15 +20571,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20753, - "end": 20759, + "start": 22741, + "end": 22747, "loc": { "start": { - "line": 515, + "line": 569, "column": 28 }, "end": { - "line": 515, + "line": 569, "column": 34 }, "identifierName": "schema" @@ -20588,15 +20588,15 @@ }, "value": { "type": "StringLiteral", - "start": 20761, - "end": 20763, + "start": 22749, + "end": 22751, "loc": { "start": { - "line": 515, + "line": 569, "column": 36 }, "end": { - "line": 515, + "line": 569, "column": 38 } }, @@ -20609,15 +20609,15 @@ }, { "type": "ObjectProperty", - "start": 20793, - "end": 20816, + "start": 22781, + "end": 22804, "loc": { "start": { - "line": 516, + "line": 570, "column": 28 }, "end": { - "line": 516, + "line": 570, "column": 51 } }, @@ -20626,15 +20626,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20793, - "end": 20812, + "start": 22781, + "end": 22800, "loc": { "start": { - "line": 516, + "line": 570, "column": 28 }, "end": { - "line": 516, + "line": 570, "column": 47 }, "identifierName": "creatingApplication" @@ -20643,15 +20643,15 @@ }, "value": { "type": "StringLiteral", - "start": 20814, - "end": 20816, + "start": 22802, + "end": 22804, "loc": { "start": { - "line": 516, + "line": 570, "column": 49 }, "end": { - "line": 516, + "line": 570, "column": 51 } }, @@ -20664,15 +20664,15 @@ }, { "type": "ObjectProperty", - "start": 20846, - "end": 21486, + "start": 22834, + "end": 23474, "loc": { "start": { - "line": 517, + "line": 571, "column": 28 }, "end": { - "line": 530, + "line": 584, "column": 29 } }, @@ -20681,15 +20681,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20846, - "end": 20857, + "start": 22834, + "end": 22845, "loc": { "start": { - "line": 517, + "line": 571, "column": 28 }, "end": { - "line": 517, + "line": 571, "column": 39 }, "identifierName": "metaObjects" @@ -20698,45 +20698,45 @@ }, "value": { "type": "ArrayExpression", - "start": 20859, - "end": 21486, + "start": 22847, + "end": 23474, "loc": { "start": { - "line": 517, + "line": 571, "column": 41 }, "end": { - "line": 530, + "line": 584, "column": 29 } }, "elements": [ { "type": "ObjectExpression", - "start": 20893, - "end": 21087, + "start": 22881, + "end": 23075, "loc": { "start": { - "line": 518, + "line": 572, "column": 32 }, "end": { - "line": 522, + "line": 576, "column": 33 } }, "properties": [ { "type": "ObjectProperty", - "start": 20931, - "end": 20951, + "start": 22919, + "end": 22939, "loc": { "start": { - "line": 519, + "line": 573, "column": 36 }, "end": { - "line": 519, + "line": 573, "column": 56 } }, @@ -20745,15 +20745,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20931, - "end": 20933, + "start": 22919, + "end": 22921, "loc": { "start": { - "line": 519, + "line": 573, "column": 36 }, "end": { - "line": 519, + "line": 573, "column": 38 }, "identifierName": "id" @@ -20762,15 +20762,15 @@ }, "value": { "type": "Identifier", - "start": 20935, - "end": 20951, + "start": 22923, + "end": 22939, "loc": { "start": { - "line": 519, + "line": 573, "column": 40 }, "end": { - "line": 519, + "line": 573, "column": 56 }, "identifierName": "rootMetaObjectId" @@ -20780,15 +20780,15 @@ }, { "type": "ObjectProperty", - "start": 20989, - "end": 21002, + "start": 22977, + "end": 22990, "loc": { "start": { - "line": 520, + "line": 574, "column": 36 }, "end": { - "line": 520, + "line": 574, "column": 49 } }, @@ -20797,15 +20797,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20989, - "end": 20993, + "start": 22977, + "end": 22981, "loc": { "start": { - "line": 520, + "line": 574, "column": 36 }, "end": { - "line": 520, + "line": 574, "column": 40 }, "identifierName": "name" @@ -20814,15 +20814,15 @@ }, "value": { "type": "StringLiteral", - "start": 20995, - "end": 21002, + "start": 22983, + "end": 22990, "loc": { "start": { - "line": 520, + "line": 574, "column": 42 }, "end": { - "line": 520, + "line": 574, "column": 49 } }, @@ -20835,15 +20835,15 @@ }, { "type": "ObjectProperty", - "start": 21040, - "end": 21053, + "start": 23028, + "end": 23041, "loc": { "start": { - "line": 521, + "line": 575, "column": 36 }, "end": { - "line": 521, + "line": 575, "column": 49 } }, @@ -20852,15 +20852,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21040, - "end": 21044, + "start": 23028, + "end": 23032, "loc": { "start": { - "line": 521, + "line": 575, "column": 36 }, "end": { - "line": 521, + "line": 575, "column": 40 }, "identifierName": "type" @@ -20869,15 +20869,15 @@ }, "value": { "type": "StringLiteral", - "start": 21046, - "end": 21053, + "start": 23034, + "end": 23041, "loc": { "start": { - "line": 521, + "line": 575, "column": 42 }, "end": { - "line": 521, + "line": 575, "column": 49 } }, @@ -20892,30 +20892,30 @@ }, { "type": "ObjectExpression", - "start": 21121, - "end": 21456, + "start": 23109, + "end": 23444, "loc": { "start": { - "line": 523, + "line": 577, "column": 32 }, "end": { - "line": 529, + "line": 583, "column": 33 } }, "properties": [ { "type": "ObjectProperty", - "start": 21159, - "end": 21177, + "start": 23147, + "end": 23165, "loc": { "start": { - "line": 524, + "line": 578, "column": 36 }, "end": { - "line": 524, + "line": 578, "column": 54 } }, @@ -20924,15 +20924,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21159, - "end": 21161, + "start": 23147, + "end": 23149, "loc": { "start": { - "line": 524, + "line": 578, "column": 36 }, "end": { - "line": 524, + "line": 578, "column": 38 }, "identifierName": "id" @@ -20941,15 +20941,15 @@ }, "value": { "type": "Identifier", - "start": 21163, - "end": 21177, + "start": 23151, + "end": 23165, "loc": { "start": { - "line": 524, + "line": 578, "column": 40 }, "end": { - "line": 524, + "line": 578, "column": 54 }, "identifierName": "pointsObjectId" @@ -20959,15 +20959,15 @@ }, { "type": "ObjectProperty", - "start": 21215, - "end": 21239, + "start": 23203, + "end": 23227, "loc": { "start": { - "line": 525, + "line": 579, "column": 36 }, "end": { - "line": 525, + "line": 579, "column": 60 } }, @@ -20976,15 +20976,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21215, - "end": 21219, + "start": 23203, + "end": 23207, "loc": { "start": { - "line": 525, + "line": 579, "column": 36 }, "end": { - "line": 525, + "line": 579, "column": 40 }, "identifierName": "name" @@ -20993,15 +20993,15 @@ }, "value": { "type": "StringLiteral", - "start": 21221, - "end": 21239, + "start": 23209, + "end": 23227, "loc": { "start": { - "line": 525, + "line": 579, "column": 42 }, "end": { - "line": 525, + "line": 579, "column": 60 } }, @@ -21014,15 +21014,15 @@ }, { "type": "ObjectProperty", - "start": 21277, - "end": 21295, + "start": 23265, + "end": 23283, "loc": { "start": { - "line": 526, + "line": 580, "column": 36 }, "end": { - "line": 526, + "line": 580, "column": 54 } }, @@ -21031,15 +21031,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21277, - "end": 21281, + "start": 23265, + "end": 23269, "loc": { "start": { - "line": 526, + "line": 580, "column": 36 }, "end": { - "line": 526, + "line": 580, "column": 40 }, "identifierName": "type" @@ -21048,15 +21048,15 @@ }, "value": { "type": "StringLiteral", - "start": 21283, - "end": 21295, + "start": 23271, + "end": 23283, "loc": { "start": { - "line": 526, + "line": 580, "column": 42 }, "end": { - "line": 526, + "line": 580, "column": 54 } }, @@ -21069,15 +21069,15 @@ }, { "type": "ObjectProperty", - "start": 21333, - "end": 21357, + "start": 23321, + "end": 23345, "loc": { "start": { - "line": 527, + "line": 581, "column": 36 }, "end": { - "line": 527, + "line": 581, "column": 60 } }, @@ -21086,15 +21086,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21333, - "end": 21339, + "start": 23321, + "end": 23327, "loc": { "start": { - "line": 527, + "line": 581, "column": 36 }, "end": { - "line": 527, + "line": 581, "column": 42 }, "identifierName": "parent" @@ -21103,15 +21103,15 @@ }, "value": { "type": "Identifier", - "start": 21341, - "end": 21357, + "start": 23329, + "end": 23345, "loc": { "start": { - "line": 527, + "line": 581, "column": 44 }, "end": { - "line": 527, + "line": 581, "column": 60 }, "identifierName": "rootMetaObjectId" @@ -21121,15 +21121,15 @@ }, { "type": "ObjectProperty", - "start": 21395, - "end": 21422, + "start": 23383, + "end": 23410, "loc": { "start": { - "line": 528, + "line": 582, "column": 36 }, "end": { - "line": 528, + "line": 582, "column": 63 } }, @@ -21138,15 +21138,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21395, - "end": 21405, + "start": 23383, + "end": 23393, "loc": { "start": { - "line": 528, + "line": 582, "column": 36 }, "end": { - "line": 528, + "line": 582, "column": 46 }, "identifierName": "attributes" @@ -21155,29 +21155,29 @@ }, "value": { "type": "LogicalExpression", - "start": 21407, - "end": 21422, + "start": 23395, + "end": 23410, "loc": { "start": { - "line": 528, + "line": 582, "column": 48 }, "end": { - "line": 528, + "line": 582, "column": 63 } }, "left": { "type": "Identifier", - "start": 21407, - "end": 21416, + "start": 23395, + "end": 23404, "loc": { "start": { - "line": 528, + "line": 582, "column": 48 }, "end": { - "line": 528, + "line": 582, "column": 57 }, "identifierName": "lasHeader" @@ -21187,15 +21187,15 @@ "operator": "||", "right": { "type": "ObjectExpression", - "start": 21420, - "end": 21422, + "start": 23408, + "end": 23410, "loc": { "start": { - "line": 528, + "line": 582, "column": 61 }, "end": { - "line": 528, + "line": 582, "column": 63 } }, @@ -21210,15 +21210,15 @@ }, { "type": "ObjectProperty", - "start": 21516, - "end": 21532, + "start": 23504, + "end": 23520, "loc": { "start": { - "line": 531, + "line": 585, "column": 28 }, "end": { - "line": 531, + "line": 585, "column": 44 } }, @@ -21227,15 +21227,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21516, - "end": 21528, + "start": 23504, + "end": 23516, "loc": { "start": { - "line": 531, + "line": 585, "column": 28 }, "end": { - "line": 531, + "line": 585, "column": 40 }, "identifierName": "propertySets" @@ -21244,15 +21244,15 @@ }, "value": { "type": "ArrayExpression", - "start": 21530, - "end": 21532, + "start": 23518, + "end": 23520, "loc": { "start": { - "line": 531, + "line": 585, "column": 42 }, "end": { - "line": 531, + "line": 585, "column": 44 } }, @@ -21267,44 +21267,44 @@ }, { "type": "VariableDeclaration", - "start": 21584, - "end": 21618, + "start": 23572, + "end": 23606, "loc": { "start": { - "line": 533, + "line": 587, "column": 24 }, "end": { - "line": 533, + "line": 587, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 21590, - "end": 21617, + "start": 23578, + "end": 23605, "loc": { "start": { - "line": 533, + "line": 587, "column": 30 }, "end": { - "line": 533, + "line": 587, "column": 57 } }, "id": { "type": "Identifier", - "start": 21590, - "end": 21601, + "start": 23578, + "end": 23589, "loc": { "start": { - "line": 533, + "line": 587, "column": 30 }, "end": { - "line": 533, + "line": 587, "column": 41 }, "identifierName": "metaModelId" @@ -21313,29 +21313,29 @@ }, "init": { "type": "MemberExpression", - "start": 21604, - "end": 21617, + "start": 23592, + "end": 23605, "loc": { "start": { - "line": 533, + "line": 587, "column": 44 }, "end": { - "line": 533, + "line": 587, "column": 57 } }, "object": { "type": "Identifier", - "start": 21604, - "end": 21614, + "start": 23592, + "end": 23602, "loc": { "start": { - "line": 533, + "line": 587, "column": 44 }, "end": { - "line": 533, + "line": 587, "column": 54 }, "identifierName": "sceneModel" @@ -21344,15 +21344,15 @@ }, "property": { "type": "Identifier", - "start": 21615, - "end": 21617, + "start": 23603, + "end": 23605, "loc": { "start": { - "line": 533, + "line": 587, "column": 55 }, "end": { - "line": 533, + "line": 587, "column": 57 }, "identifierName": "id" @@ -21367,100 +21367,100 @@ }, { "type": "ExpressionStatement", - "start": 21643, - "end": 21713, + "start": 23631, + "end": 23701, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 94 } }, "expression": { "type": "CallExpression", - "start": 21643, - "end": 21712, + "start": 23631, + "end": 23700, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 93 } }, "callee": { "type": "MemberExpression", - "start": 21643, - "end": 21680, + "start": 23631, + "end": 23668, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 61 } }, "object": { "type": "MemberExpression", - "start": 21643, - "end": 21664, + "start": 23631, + "end": 23652, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 21643, - "end": 21654, + "start": 23631, + "end": 23642, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 21643, - "end": 21647, + "start": 23631, + "end": 23635, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 28 } } }, "property": { "type": "Identifier", - "start": 21648, - "end": 21654, + "start": 23636, + "end": 23642, "loc": { "start": { - "line": 534, + "line": 588, "column": 29 }, "end": { - "line": 534, + "line": 588, "column": 35 }, "identifierName": "viewer" @@ -21471,15 +21471,15 @@ }, "property": { "type": "Identifier", - "start": 21655, - "end": 21664, + "start": 23643, + "end": 23652, "loc": { "start": { - "line": 534, + "line": 588, "column": 36 }, "end": { - "line": 534, + "line": 588, "column": 45 }, "identifierName": "metaScene" @@ -21490,15 +21490,15 @@ }, "property": { "type": "Identifier", - "start": 21665, - "end": 21680, + "start": 23653, + "end": 23668, "loc": { "start": { - "line": 534, + "line": 588, "column": 46 }, "end": { - "line": 534, + "line": 588, "column": 61 }, "identifierName": "createMetaModel" @@ -21510,15 +21510,15 @@ "arguments": [ { "type": "Identifier", - "start": 21681, - "end": 21692, + "start": 23669, + "end": 23680, "loc": { "start": { - "line": 534, + "line": 588, "column": 62 }, "end": { - "line": 534, + "line": 588, "column": 73 }, "identifierName": "metaModelId" @@ -21527,15 +21527,15 @@ }, { "type": "Identifier", - "start": 21694, - "end": 21702, + "start": 23682, + "end": 23690, "loc": { "start": { - "line": 534, + "line": 588, "column": 75 }, "end": { - "line": 534, + "line": 588, "column": 83 }, "identifierName": "metadata" @@ -21544,15 +21544,15 @@ }, { "type": "Identifier", - "start": 21704, - "end": 21711, + "start": 23692, + "end": 23699, "loc": { "start": { - "line": 534, + "line": 588, "column": 85 }, "end": { - "line": 534, + "line": 588, "column": 92 }, "identifierName": "options" @@ -21570,71 +21570,71 @@ }, { "type": "ExpressionStatement", - "start": 21757, - "end": 22180, + "start": 23745, + "end": 24168, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 543, + "line": 597, "column": 23 } }, "expression": { "type": "CallExpression", - "start": 21757, - "end": 22179, + "start": 23745, + "end": 24167, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 543, + "line": 597, "column": 22 } }, "callee": { "type": "MemberExpression", - "start": 21757, - "end": 21778, + "start": 23745, + "end": 23766, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 537, + "line": 591, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 21757, - "end": 21773, + "start": 23745, + "end": 23761, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 537, + "line": 591, "column": 36 } }, "object": { "type": "Identifier", - "start": 21757, - "end": 21767, + "start": 23745, + "end": 23755, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 537, + "line": 591, "column": 30 }, "identifierName": "sceneModel" @@ -21643,15 +21643,15 @@ }, "property": { "type": "Identifier", - "start": 21768, - "end": 21773, + "start": 23756, + "end": 23761, "loc": { "start": { - "line": 537, + "line": 591, "column": 31 }, "end": { - "line": 537, + "line": 591, "column": 36 }, "identifierName": "scene" @@ -21662,15 +21662,15 @@ }, "property": { "type": "Identifier", - "start": 21774, - "end": 21778, + "start": 23762, + "end": 23766, "loc": { "start": { - "line": 537, + "line": 591, "column": 37 }, "end": { - "line": 537, + "line": 591, "column": 41 }, "identifierName": "once" @@ -21682,15 +21682,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 21779, - "end": 21785, + "start": 23767, + "end": 23773, "loc": { "start": { - "line": 537, + "line": 591, "column": 42 }, "end": { - "line": 537, + "line": 591, "column": 48 } }, @@ -21702,15 +21702,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 21787, - "end": 22178, + "start": 23775, + "end": 24166, "loc": { "start": { - "line": 537, + "line": 591, "column": 50 }, "end": { - "line": 543, + "line": 597, "column": 21 } }, @@ -21721,58 +21721,58 @@ "params": [], "body": { "type": "BlockStatement", - "start": 21793, - "end": 22178, + "start": 23781, + "end": 24166, "loc": { "start": { - "line": 537, + "line": 591, "column": 56 }, "end": { - "line": 543, + "line": 597, "column": 21 } }, "body": [ { "type": "IfStatement", - "start": 21819, - "end": 21908, + "start": 23807, + "end": 23896, "loc": { "start": { - "line": 538, + "line": 592, "column": 24 }, "end": { - "line": 540, + "line": 594, "column": 25 } }, "test": { "type": "MemberExpression", - "start": 21823, - "end": 21843, + "start": 23811, + "end": 23831, "loc": { "start": { - "line": 538, + "line": 592, "column": 28 }, "end": { - "line": 538, + "line": 592, "column": 48 } }, "object": { "type": "Identifier", - "start": 21823, - "end": 21833, + "start": 23811, + "end": 23821, "loc": { "start": { - "line": 538, + "line": 592, "column": 28 }, "end": { - "line": 538, + "line": 592, "column": 38 }, "identifierName": "sceneModel" @@ -21781,15 +21781,15 @@ }, "property": { "type": "Identifier", - "start": 21834, - "end": 21843, + "start": 23822, + "end": 23831, "loc": { "start": { - "line": 538, + "line": 592, "column": 39 }, "end": { - "line": 538, + "line": 592, "column": 48 }, "identifierName": "destroyed" @@ -21800,30 +21800,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 21845, - "end": 21908, + "start": 23833, + "end": 23896, "loc": { "start": { - "line": 538, + "line": 592, "column": 50 }, "end": { - "line": 540, + "line": 594, "column": 25 } }, "body": [ { "type": "ReturnStatement", - "start": 21875, - "end": 21882, + "start": 23863, + "end": 23870, "loc": { "start": { - "line": 539, + "line": 593, "column": 28 }, "end": { - "line": 539, + "line": 593, "column": 35 } }, @@ -21836,71 +21836,71 @@ }, { "type": "ExpressionStatement", - "start": 21933, - "end": 21985, + "start": 23921, + "end": 23973, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 76 } }, "expression": { "type": "CallExpression", - "start": 21933, - "end": 21984, + "start": 23921, + "end": 23972, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 75 } }, "callee": { "type": "MemberExpression", - "start": 21933, - "end": 21954, + "start": 23921, + "end": 23942, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 21933, - "end": 21949, + "start": 23921, + "end": 23937, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 40 } }, "object": { "type": "Identifier", - "start": 21933, - "end": 21943, + "start": 23921, + "end": 23931, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 34 }, "identifierName": "sceneModel" @@ -21909,15 +21909,15 @@ }, "property": { "type": "Identifier", - "start": 21944, - "end": 21949, + "start": 23932, + "end": 23937, "loc": { "start": { - "line": 541, + "line": 595, "column": 35 }, "end": { - "line": 541, + "line": 595, "column": 40 }, "identifierName": "scene" @@ -21928,15 +21928,15 @@ }, "property": { "type": "Identifier", - "start": 21950, - "end": 21954, + "start": 23938, + "end": 23942, "loc": { "start": { - "line": 541, + "line": 595, "column": 41 }, "end": { - "line": 541, + "line": 595, "column": 45 }, "identifierName": "fire" @@ -21948,15 +21948,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 21955, - "end": 21968, + "start": 23943, + "end": 23956, "loc": { "start": { - "line": 541, + "line": 595, "column": 46 }, "end": { - "line": 541, + "line": 595, "column": 59 } }, @@ -21968,29 +21968,29 @@ }, { "type": "MemberExpression", - "start": 21970, - "end": 21983, + "start": 23958, + "end": 23971, "loc": { "start": { - "line": 541, + "line": 595, "column": 61 }, "end": { - "line": 541, + "line": 595, "column": 74 } }, "object": { "type": "Identifier", - "start": 21970, - "end": 21980, + "start": 23958, + "end": 23968, "loc": { "start": { - "line": 541, + "line": 595, "column": 61 }, "end": { - "line": 541, + "line": 595, "column": 71 }, "identifierName": "sceneModel" @@ -21999,15 +21999,15 @@ }, "property": { "type": "Identifier", - "start": 21981, - "end": 21983, + "start": 23969, + "end": 23971, "loc": { "start": { - "line": 541, + "line": 595, "column": 72 }, "end": { - "line": 541, + "line": 595, "column": 74 }, "identifierName": "id" @@ -22022,15 +22022,15 @@ { "type": "CommentLine", "value": " FIXME: Assumes listeners know order of these two events", - "start": 21986, - "end": 22044, + "start": 23974, + "end": 24032, "loc": { "start": { - "line": 541, + "line": 595, "column": 77 }, "end": { - "line": 541, + "line": 595, "column": 135 } } @@ -22039,57 +22039,57 @@ }, { "type": "ExpressionStatement", - "start": 22069, - "end": 22108, + "start": 24057, + "end": 24096, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 63 } }, "expression": { "type": "CallExpression", - "start": 22069, - "end": 22107, + "start": 24057, + "end": 24095, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 62 } }, "callee": { "type": "MemberExpression", - "start": 22069, - "end": 22084, + "start": 24057, + "end": 24072, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 39 } }, "object": { "type": "Identifier", - "start": 22069, - "end": 22079, + "start": 24057, + "end": 24067, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 34 }, "identifierName": "sceneModel" @@ -22099,15 +22099,15 @@ }, "property": { "type": "Identifier", - "start": 22080, - "end": 22084, + "start": 24068, + "end": 24072, "loc": { "start": { - "line": 542, + "line": 596, "column": 35 }, "end": { - "line": 542, + "line": 596, "column": 39 }, "identifierName": "fire" @@ -22120,15 +22120,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 22085, - "end": 22093, + "start": 24073, + "end": 24081, "loc": { "start": { - "line": 542, + "line": 596, "column": 40 }, "end": { - "line": 542, + "line": 596, "column": 48 } }, @@ -22140,15 +22140,15 @@ }, { "type": "BooleanLiteral", - "start": 22095, - "end": 22099, + "start": 24083, + "end": 24087, "loc": { "start": { - "line": 542, + "line": 596, "column": 50 }, "end": { - "line": 542, + "line": 596, "column": 54 } }, @@ -22156,15 +22156,15 @@ }, { "type": "BooleanLiteral", - "start": 22101, - "end": 22106, + "start": 24089, + "end": 24094, "loc": { "start": { - "line": 542, + "line": 596, "column": 56 }, "end": { - "line": 542, + "line": 596, "column": 61 } }, @@ -22177,15 +22177,15 @@ { "type": "CommentLine", "value": " FIXME: Assumes listeners know order of these two events", - "start": 21986, - "end": 22044, + "start": 23974, + "end": 24032, "loc": { "start": { - "line": 541, + "line": 595, "column": 77 }, "end": { - "line": 541, + "line": 595, "column": 135 } } @@ -22195,15 +22195,15 @@ { "type": "CommentLine", "value": " Don't forget the event, for late subscribers", - "start": 22109, - "end": 22156, + "start": 24097, + "end": 24144, "loc": { "start": { - "line": 542, + "line": 596, "column": 64 }, "end": { - "line": 542, + "line": 596, "column": 111 } } @@ -22217,15 +22217,15 @@ { "type": "CommentLine", "value": " Don't forget the event, for late subscribers", - "start": 22109, - "end": 22156, + "start": 24097, + "end": 24144, "loc": { "start": { - "line": 542, + "line": 596, "column": 64 }, "end": { - "line": 542, + "line": 596, "column": 111 } } @@ -22237,43 +22237,43 @@ }, { "type": "ExpressionStatement", - "start": 22202, - "end": 22212, + "start": 24190, + "end": 24200, "loc": { "start": { - "line": 545, + "line": 599, "column": 20 }, "end": { - "line": 545, + "line": 599, "column": 30 } }, "expression": { "type": "CallExpression", - "start": 22202, - "end": 22211, + "start": 24190, + "end": 24199, "loc": { "start": { - "line": 545, + "line": 599, "column": 20 }, "end": { - "line": 545, + "line": 599, "column": 29 } }, "callee": { "type": "Identifier", - "start": 22202, - "end": 22209, + "start": 24190, + "end": 24197, "loc": { "start": { - "line": 545, + "line": 599, "column": 20 }, "end": { - "line": 545, + "line": 599, "column": 27 }, "identifierName": "resolve" @@ -22295,29 +22295,29 @@ }, "handler": { "type": "CatchClause", - "start": 22247, - "end": 22338, + "start": 24235, + "end": 24326, "loc": { "start": { - "line": 547, + "line": 601, "column": 14 }, "end": { - "line": 550, + "line": 604, "column": 13 } }, "param": { "type": "Identifier", - "start": 22254, - "end": 22255, + "start": 24242, + "end": 24243, "loc": { "start": { - "line": 547, + "line": 601, "column": 21 }, "end": { - "line": 547, + "line": 601, "column": 22 }, "identifierName": "e" @@ -22326,72 +22326,72 @@ }, "body": { "type": "BlockStatement", - "start": 22257, - "end": 22338, + "start": 24245, + "end": 24326, "loc": { "start": { - "line": 547, + "line": 601, "column": 24 }, "end": { - "line": 550, + "line": 604, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 22275, - "end": 22297, + "start": 24263, + "end": 24285, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 22275, - "end": 22296, + "start": 24263, + "end": 24284, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 22275, - "end": 22294, + "start": 24263, + "end": 24282, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 35 } }, "object": { "type": "Identifier", - "start": 22275, - "end": 22285, + "start": 24263, + "end": 24273, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 26 }, "identifierName": "sceneModel" @@ -22400,15 +22400,15 @@ }, "property": { "type": "Identifier", - "start": 22286, - "end": 22294, + "start": 24274, + "end": 24282, "loc": { "start": { - "line": 548, + "line": 602, "column": 27 }, "end": { - "line": 548, + "line": 602, "column": 35 }, "identifierName": "finalize" @@ -22422,43 +22422,43 @@ }, { "type": "ExpressionStatement", - "start": 22314, - "end": 22324, + "start": 24302, + "end": 24312, "loc": { "start": { - "line": 549, + "line": 603, "column": 16 }, "end": { - "line": 549, + "line": 603, "column": 26 } }, "expression": { "type": "CallExpression", - "start": 22314, - "end": 22323, + "start": 24302, + "end": 24311, "loc": { "start": { - "line": 549, + "line": 603, "column": 16 }, "end": { - "line": 549, + "line": 603, "column": 25 } }, "callee": { "type": "Identifier", - "start": 22314, - "end": 22320, + "start": 24302, + "end": 24308, "loc": { "start": { - "line": 549, + "line": 603, "column": 16 }, "end": { - "line": 549, + "line": 603, "column": 22 }, "identifierName": "reject" @@ -22468,15 +22468,15 @@ "arguments": [ { "type": "Identifier", - "start": 22321, - "end": 22322, + "start": 24309, + "end": 24310, "loc": { "start": { - "line": 549, + "line": 603, "column": 23 }, "end": { - "line": 549, + "line": 603, "column": 24 }, "identifierName": "e" @@ -22512,29 +22512,29 @@ }, { "type": "FunctionDeclaration", - "start": 22360, - "end": 22620, + "start": 24348, + "end": 24608, "loc": { "start": { - "line": 555, + "line": 609, "column": 0 }, "end": { - "line": 564, + "line": 618, "column": 1 } }, "id": { "type": "Identifier", - "start": 22369, - "end": 22379, + "start": 24357, + "end": 24367, "loc": { "start": { - "line": 555, + "line": 609, "column": 9 }, "end": { - "line": 555, + "line": 609, "column": 19 }, "identifierName": "chunkArray" @@ -22547,15 +22547,15 @@ "params": [ { "type": "Identifier", - "start": 22380, - "end": 22385, + "start": 24368, + "end": 24373, "loc": { "start": { - "line": 555, + "line": 609, "column": 20 }, "end": { - "line": 555, + "line": 609, "column": 25 }, "identifierName": "array" @@ -22564,15 +22564,15 @@ }, { "type": "Identifier", - "start": 22387, - "end": 22396, + "start": 24375, + "end": 24384, "loc": { "start": { - "line": 555, + "line": 609, "column": 27 }, "end": { - "line": 555, + "line": 609, "column": 36 }, "identifierName": "chunkSize" @@ -22582,58 +22582,58 @@ ], "body": { "type": "BlockStatement", - "start": 22398, - "end": 22620, + "start": 24386, + "end": 24608, "loc": { "start": { - "line": 555, + "line": 609, "column": 38 }, "end": { - "line": 564, + "line": 618, "column": 1 } }, "body": [ { "type": "IfStatement", - "start": 22404, - "end": 22464, + "start": 24392, + "end": 24452, "loc": { "start": { - "line": 556, + "line": 610, "column": 4 }, "end": { - "line": 558, + "line": 612, "column": 5 } }, "test": { "type": "BinaryExpression", - "start": 22408, - "end": 22433, + "start": 24396, + "end": 24421, "loc": { "start": { - "line": 556, + "line": 610, "column": 8 }, "end": { - "line": 556, + "line": 610, "column": 33 } }, "left": { "type": "Identifier", - "start": 22408, - "end": 22417, + "start": 24396, + "end": 24405, "loc": { "start": { - "line": 556, + "line": 610, "column": 8 }, "end": { - "line": 556, + "line": 610, "column": 17 }, "identifierName": "chunkSize" @@ -22643,29 +22643,29 @@ "operator": ">=", "right": { "type": "MemberExpression", - "start": 22421, - "end": 22433, + "start": 24409, + "end": 24421, "loc": { "start": { - "line": 556, + "line": 610, "column": 21 }, "end": { - "line": 556, + "line": 610, "column": 33 } }, "object": { "type": "Identifier", - "start": 22421, - "end": 22426, + "start": 24409, + "end": 24414, "loc": { "start": { - "line": 556, + "line": 610, "column": 21 }, "end": { - "line": 556, + "line": 610, "column": 26 }, "identifierName": "array" @@ -22674,15 +22674,15 @@ }, "property": { "type": "Identifier", - "start": 22427, - "end": 22433, + "start": 24415, + "end": 24421, "loc": { "start": { - "line": 556, + "line": 610, "column": 27 }, "end": { - "line": 556, + "line": 610, "column": 33 }, "identifierName": "length" @@ -22694,44 +22694,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 22435, - "end": 22464, + "start": 24423, + "end": 24452, "loc": { "start": { - "line": 556, + "line": 610, "column": 35 }, "end": { - "line": 558, + "line": 612, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 22445, - "end": 22458, + "start": 24433, + "end": 24446, "loc": { "start": { - "line": 557, + "line": 611, "column": 8 }, "end": { - "line": 557, + "line": 611, "column": 21 } }, "argument": { "type": "Identifier", - "start": 22452, - "end": 22457, + "start": 24440, + "end": 24445, "loc": { "start": { - "line": 557, + "line": 611, "column": 15 }, "end": { - "line": 557, + "line": 611, "column": 20 }, "identifierName": "array" @@ -22746,44 +22746,44 @@ }, { "type": "VariableDeclaration", - "start": 22469, - "end": 22485, + "start": 24457, + "end": 24473, "loc": { "start": { - "line": 559, + "line": 613, "column": 4 }, "end": { - "line": 559, + "line": 613, "column": 20 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 22473, - "end": 22484, + "start": 24461, + "end": 24472, "loc": { "start": { - "line": 559, + "line": 613, "column": 8 }, "end": { - "line": 559, + "line": 613, "column": 19 } }, "id": { "type": "Identifier", - "start": 22473, - "end": 22479, + "start": 24461, + "end": 24467, "loc": { "start": { - "line": 559, + "line": 613, "column": 8 }, "end": { - "line": 559, + "line": 613, "column": 14 }, "identifierName": "result" @@ -22792,15 +22792,15 @@ }, "init": { "type": "ArrayExpression", - "start": 22482, - "end": 22484, + "start": 24470, + "end": 24472, "loc": { "start": { - "line": 559, + "line": 613, "column": 17 }, "end": { - "line": 559, + "line": 613, "column": 19 } }, @@ -22812,58 +22812,58 @@ }, { "type": "ForStatement", - "start": 22490, - "end": 22599, + "start": 24478, + "end": 24587, "loc": { "start": { - "line": 560, + "line": 614, "column": 4 }, "end": { - "line": 562, + "line": 616, "column": 5 } }, "init": { "type": "VariableDeclaration", - "start": 22495, - "end": 22504, + "start": 24483, + "end": 24492, "loc": { "start": { - "line": 560, + "line": 614, "column": 9 }, "end": { - "line": 560, + "line": 614, "column": 18 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 22499, - "end": 22504, + "start": 24487, + "end": 24492, "loc": { "start": { - "line": 560, + "line": 614, "column": 13 }, "end": { - "line": 560, + "line": 614, "column": 18 } }, "id": { "type": "Identifier", - "start": 22499, - "end": 22500, + "start": 24487, + "end": 24488, "loc": { "start": { - "line": 560, + "line": 614, "column": 13 }, "end": { - "line": 560, + "line": 614, "column": 14 }, "identifierName": "i" @@ -22872,15 +22872,15 @@ }, "init": { "type": "NumericLiteral", - "start": 22503, - "end": 22504, + "start": 24491, + "end": 24492, "loc": { "start": { - "line": 560, + "line": 614, "column": 17 }, "end": { - "line": 560, + "line": 614, "column": 18 } }, @@ -22896,29 +22896,29 @@ }, "test": { "type": "BinaryExpression", - "start": 22506, - "end": 22522, + "start": 24494, + "end": 24510, "loc": { "start": { - "line": 560, + "line": 614, "column": 20 }, "end": { - "line": 560, + "line": 614, "column": 36 } }, "left": { "type": "Identifier", - "start": 22506, - "end": 22507, + "start": 24494, + "end": 24495, "loc": { "start": { - "line": 560, + "line": 614, "column": 20 }, "end": { - "line": 560, + "line": 614, "column": 21 }, "identifierName": "i" @@ -22928,29 +22928,29 @@ "operator": "<", "right": { "type": "MemberExpression", - "start": 22510, - "end": 22522, + "start": 24498, + "end": 24510, "loc": { "start": { - "line": 560, + "line": 614, "column": 24 }, "end": { - "line": 560, + "line": 614, "column": 36 } }, "object": { "type": "Identifier", - "start": 22510, - "end": 22515, + "start": 24498, + "end": 24503, "loc": { "start": { - "line": 560, + "line": 614, "column": 24 }, "end": { - "line": 560, + "line": 614, "column": 29 }, "identifierName": "array" @@ -22959,15 +22959,15 @@ }, "property": { "type": "Identifier", - "start": 22516, - "end": 22522, + "start": 24504, + "end": 24510, "loc": { "start": { - "line": 560, + "line": 614, "column": 30 }, "end": { - "line": 560, + "line": 614, "column": 36 }, "identifierName": "length" @@ -22979,30 +22979,30 @@ }, "update": { "type": "AssignmentExpression", - "start": 22524, - "end": 22538, + "start": 24512, + "end": 24526, "loc": { "start": { - "line": 560, + "line": 614, "column": 38 }, "end": { - "line": 560, + "line": 614, "column": 52 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 22524, - "end": 22525, + "start": 24512, + "end": 24513, "loc": { "start": { - "line": 560, + "line": 614, "column": 38 }, "end": { - "line": 560, + "line": 614, "column": 39 }, "identifierName": "i" @@ -23011,15 +23011,15 @@ }, "right": { "type": "Identifier", - "start": 22529, - "end": 22538, + "start": 24517, + "end": 24526, "loc": { "start": { - "line": 560, + "line": 614, "column": 43 }, "end": { - "line": 560, + "line": 614, "column": 52 }, "identifierName": "chunkSize" @@ -23029,72 +23029,72 @@ }, "body": { "type": "BlockStatement", - "start": 22540, - "end": 22599, + "start": 24528, + "end": 24587, "loc": { "start": { - "line": 560, + "line": 614, "column": 54 }, "end": { - "line": 562, + "line": 616, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 22550, - "end": 22593, + "start": 24538, + "end": 24581, "loc": { "start": { - "line": 561, + "line": 615, "column": 8 }, "end": { - "line": 561, + "line": 615, "column": 51 } }, "expression": { "type": "CallExpression", - "start": 22550, - "end": 22592, + "start": 24538, + "end": 24580, "loc": { "start": { - "line": 561, + "line": 615, "column": 8 }, "end": { - "line": 561, + "line": 615, "column": 50 } }, "callee": { "type": "MemberExpression", - "start": 22550, - "end": 22561, + "start": 24538, + "end": 24549, "loc": { "start": { - "line": 561, + "line": 615, "column": 8 }, "end": { - "line": 561, + "line": 615, "column": 19 } }, "object": { "type": "Identifier", - "start": 22550, - "end": 22556, + "start": 24538, + "end": 24544, "loc": { "start": { - "line": 561, + "line": 615, "column": 8 }, "end": { - "line": 561, + "line": 615, "column": 14 }, "identifierName": "result" @@ -23103,15 +23103,15 @@ }, "property": { "type": "Identifier", - "start": 22557, - "end": 22561, + "start": 24545, + "end": 24549, "loc": { "start": { - "line": 561, + "line": 615, "column": 15 }, "end": { - "line": 561, + "line": 615, "column": 19 }, "identifierName": "push" @@ -23123,43 +23123,43 @@ "arguments": [ { "type": "CallExpression", - "start": 22562, - "end": 22591, + "start": 24550, + "end": 24579, "loc": { "start": { - "line": 561, + "line": 615, "column": 20 }, "end": { - "line": 561, + "line": 615, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 22562, - "end": 22573, + "start": 24550, + "end": 24561, "loc": { "start": { - "line": 561, + "line": 615, "column": 20 }, "end": { - "line": 561, + "line": 615, "column": 31 } }, "object": { "type": "Identifier", - "start": 22562, - "end": 22567, + "start": 24550, + "end": 24555, "loc": { "start": { - "line": 561, + "line": 615, "column": 20 }, "end": { - "line": 561, + "line": 615, "column": 25 }, "identifierName": "array" @@ -23168,15 +23168,15 @@ }, "property": { "type": "Identifier", - "start": 22568, - "end": 22573, + "start": 24556, + "end": 24561, "loc": { "start": { - "line": 561, + "line": 615, "column": 26 }, "end": { - "line": 561, + "line": 615, "column": 31 }, "identifierName": "slice" @@ -23188,15 +23188,15 @@ "arguments": [ { "type": "Identifier", - "start": 22574, - "end": 22575, + "start": 24562, + "end": 24563, "loc": { "start": { - "line": 561, + "line": 615, "column": 32 }, "end": { - "line": 561, + "line": 615, "column": 33 }, "identifierName": "i" @@ -23205,29 +23205,29 @@ }, { "type": "BinaryExpression", - "start": 22577, - "end": 22590, + "start": 24565, + "end": 24578, "loc": { "start": { - "line": 561, + "line": 615, "column": 35 }, "end": { - "line": 561, + "line": 615, "column": 48 } }, "left": { "type": "Identifier", - "start": 22577, - "end": 22578, + "start": 24565, + "end": 24566, "loc": { "start": { - "line": 561, + "line": 615, "column": 35 }, "end": { - "line": 561, + "line": 615, "column": 36 }, "identifierName": "i" @@ -23237,15 +23237,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 22581, - "end": 22590, + "start": 24569, + "end": 24578, "loc": { "start": { - "line": 561, + "line": 615, "column": 39 }, "end": { - "line": 561, + "line": 615, "column": 48 }, "identifierName": "chunkSize" @@ -23264,29 +23264,29 @@ }, { "type": "ReturnStatement", - "start": 22604, - "end": 22618, + "start": 24592, + "end": 24606, "loc": { "start": { - "line": 563, + "line": 617, "column": 4 }, "end": { - "line": 563, + "line": 617, "column": 18 } }, "argument": { "type": "Identifier", - "start": 22611, - "end": 22617, + "start": 24599, + "end": 24605, "loc": { "start": { - "line": 563, + "line": 617, "column": 11 }, "end": { - "line": 563, + "line": 617, "column": 17 }, "identifierName": "result" @@ -23300,15 +23300,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 22622, - "end": 22647, + "start": 24610, + "end": 24635, "loc": { "start": { - "line": 566, + "line": 620, "column": 0 }, "end": { - "line": 566, + "line": 620, "column": 25 } }, @@ -23316,29 +23316,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 22630, - "end": 22645, + "start": 24618, + "end": 24633, "loc": { "start": { - "line": 566, + "line": 620, "column": 8 }, "end": { - "line": 566, + "line": 620, "column": 23 } }, "local": { "type": "Identifier", - "start": 22630, - "end": 22645, + "start": 24618, + "end": 24633, "loc": { "start": { - "line": 566, + "line": 620, "column": 8 }, "end": { - "line": 566, + "line": 620, "column": 23 }, "identifierName": "LASLoaderPlugin" @@ -23347,15 +23347,15 @@ }, "exported": { "type": "Identifier", - "start": 22630, - "end": 22645, + "start": 24618, + "end": 24633, "loc": { "start": { - "line": 566, + "line": 620, "column": 8 }, "end": { - "line": 566, + "line": 620, "column": 23 }, "identifierName": "LASLoaderPlugin" @@ -23368,43 +23368,43 @@ }, { "type": "ExportNamedDeclaration", - "start": 22622, - "end": 22647, + "start": 24610, + "end": 24635, "loc": { "start": { - "line": 566, + "line": 620, "column": 0 }, "end": { - "line": 566, + "line": 620, "column": 25 } }, "declaration": { "type": "ClassDeclaration", - "start": 5620, - "end": 22358, + "start": 7608, + "end": 24346, "loc": { "start": { - "line": 149, + "line": 203, "column": 0 }, "end": { - "line": 553, + "line": 607, "column": 1 } }, "id": { "type": "Identifier", - "start": 5626, - "end": 5641, + "start": 7614, + "end": 7629, "loc": { "start": { - "line": 149, + "line": 203, "column": 6 }, "end": { - "line": 149, + "line": 203, "column": 21 }, "identifierName": "LASLoaderPlugin" @@ -23414,15 +23414,15 @@ }, "superClass": { "type": "Identifier", - "start": 5650, - "end": 5656, + "start": 7638, + "end": 7644, "loc": { "start": { - "line": 149, + "line": 203, "column": 30 }, "end": { - "line": 149, + "line": 203, "column": 36 }, "identifierName": "Plugin" @@ -23431,30 +23431,30 @@ }, "body": { "type": "ClassBody", - "start": 5657, - "end": 22358, + "start": 7645, + "end": 24346, "loc": { "start": { - "line": 149, + "line": 203, "column": 37 }, "end": { - "line": 553, + "line": 607, "column": 1 } }, "body": [ { "type": "ClassMethod", - "start": 6541, - "end": 6765, + "start": 8529, + "end": 8753, "loc": { "start": { - "line": 162, + "line": 216, "column": 4 }, "end": { - "line": 170, + "line": 224, "column": 5 } }, @@ -23462,15 +23462,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 6541, - "end": 6552, + "start": 8529, + "end": 8540, "loc": { "start": { - "line": 162, + "line": 216, "column": 4 }, "end": { - "line": 162, + "line": 216, "column": 15 }, "identifierName": "constructor" @@ -23486,15 +23486,15 @@ "params": [ { "type": "Identifier", - "start": 6553, - "end": 6559, + "start": 8541, + "end": 8547, "loc": { "start": { - "line": 162, + "line": 216, "column": 16 }, "end": { - "line": 162, + "line": 216, "column": 22 }, "identifierName": "viewer" @@ -23503,29 +23503,29 @@ }, { "type": "AssignmentPattern", - "start": 6561, - "end": 6569, + "start": 8549, + "end": 8557, "loc": { "start": { - "line": 162, + "line": 216, "column": 24 }, "end": { - "line": 162, + "line": 216, "column": 32 } }, "left": { "type": "Identifier", - "start": 6561, - "end": 6564, + "start": 8549, + "end": 8552, "loc": { "start": { - "line": 162, + "line": 216, "column": 24 }, "end": { - "line": 162, + "line": 216, "column": 27 }, "identifierName": "cfg" @@ -23534,15 +23534,15 @@ }, "right": { "type": "ObjectExpression", - "start": 6567, - "end": 6569, + "start": 8555, + "end": 8557, "loc": { "start": { - "line": 162, + "line": 216, "column": 30 }, "end": { - "line": 162, + "line": 216, "column": 32 } }, @@ -23552,58 +23552,58 @@ ], "body": { "type": "BlockStatement", - "start": 6571, - "end": 6765, + "start": 8559, + "end": 8753, "loc": { "start": { - "line": 162, + "line": 216, "column": 34 }, "end": { - "line": 170, + "line": 224, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 6582, - "end": 6614, + "start": 8570, + "end": 8602, "loc": { "start": { - "line": 164, + "line": 218, "column": 8 }, "end": { - "line": 164, + "line": 218, "column": 40 } }, "expression": { "type": "CallExpression", - "start": 6582, - "end": 6613, + "start": 8570, + "end": 8601, "loc": { "start": { - "line": 164, + "line": 218, "column": 8 }, "end": { - "line": 164, + "line": 218, "column": 39 } }, "callee": { "type": "Super", - "start": 6582, - "end": 6587, + "start": 8570, + "end": 8575, "loc": { "start": { - "line": 164, + "line": 218, "column": 8 }, "end": { - "line": 164, + "line": 218, "column": 13 } } @@ -23611,15 +23611,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 6588, - "end": 6599, + "start": 8576, + "end": 8587, "loc": { "start": { - "line": 164, + "line": 218, "column": 14 }, "end": { - "line": 164, + "line": 218, "column": 25 } }, @@ -23631,15 +23631,15 @@ }, { "type": "Identifier", - "start": 6601, - "end": 6607, + "start": 8589, + "end": 8595, "loc": { "start": { - "line": 164, + "line": 218, "column": 27 }, "end": { - "line": 164, + "line": 218, "column": 33 }, "identifierName": "viewer" @@ -23648,15 +23648,15 @@ }, { "type": "Identifier", - "start": 6609, - "end": 6612, + "start": 8597, + "end": 8600, "loc": { "start": { - "line": 164, + "line": 218, "column": 35 }, "end": { - "line": 164, + "line": 218, "column": 38 }, "identifierName": "cfg" @@ -23668,73 +23668,73 @@ }, { "type": "ExpressionStatement", - "start": 6624, - "end": 6657, + "start": 8612, + "end": 8645, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 6624, - "end": 6656, + "start": 8612, + "end": 8644, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6624, - "end": 6639, + "start": 8612, + "end": 8627, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 6624, - "end": 6628, + "start": 8612, + "end": 8616, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6629, - "end": 6639, + "start": 8617, + "end": 8627, "loc": { "start": { - "line": 166, + "line": 220, "column": 13 }, "end": { - "line": 166, + "line": 220, "column": 23 }, "identifierName": "dataSource" @@ -23745,29 +23745,29 @@ }, "right": { "type": "MemberExpression", - "start": 6642, - "end": 6656, + "start": 8630, + "end": 8644, "loc": { "start": { - "line": 166, + "line": 220, "column": 26 }, "end": { - "line": 166, + "line": 220, "column": 40 } }, "object": { "type": "Identifier", - "start": 6642, - "end": 6645, + "start": 8630, + "end": 8633, "loc": { "start": { - "line": 166, + "line": 220, "column": 26 }, "end": { - "line": 166, + "line": 220, "column": 29 }, "identifierName": "cfg" @@ -23776,15 +23776,15 @@ }, "property": { "type": "Identifier", - "start": 6646, - "end": 6656, + "start": 8634, + "end": 8644, "loc": { "start": { - "line": 166, + "line": 220, "column": 30 }, "end": { - "line": 166, + "line": 220, "column": 40 }, "identifierName": "dataSource" @@ -23797,73 +23797,73 @@ }, { "type": "ExpressionStatement", - "start": 6666, - "end": 6687, + "start": 8654, + "end": 8675, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 6666, - "end": 6686, + "start": 8654, + "end": 8674, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6666, - "end": 6675, + "start": 8654, + "end": 8663, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6666, - "end": 6670, + "start": 8654, + "end": 8658, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6671, - "end": 6675, + "start": 8659, + "end": 8663, "loc": { "start": { - "line": 167, + "line": 221, "column": 13 }, "end": { - "line": 167, + "line": 221, "column": 17 }, "identifierName": "skip" @@ -23874,29 +23874,29 @@ }, "right": { "type": "MemberExpression", - "start": 6678, - "end": 6686, + "start": 8666, + "end": 8674, "loc": { "start": { - "line": 167, + "line": 221, "column": 20 }, "end": { - "line": 167, + "line": 221, "column": 28 } }, "object": { "type": "Identifier", - "start": 6678, - "end": 6681, + "start": 8666, + "end": 8669, "loc": { "start": { - "line": 167, + "line": 221, "column": 20 }, "end": { - "line": 167, + "line": 221, "column": 23 }, "identifierName": "cfg" @@ -23905,15 +23905,15 @@ }, "property": { "type": "Identifier", - "start": 6682, - "end": 6686, + "start": 8670, + "end": 8674, "loc": { "start": { - "line": 167, + "line": 221, "column": 24 }, "end": { - "line": 167, + "line": 221, "column": 28 }, "identifierName": "skip" @@ -23926,73 +23926,73 @@ }, { "type": "ExpressionStatement", - "start": 6696, - "end": 6717, + "start": 8684, + "end": 8705, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 6696, - "end": 6716, + "start": 8684, + "end": 8704, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6696, - "end": 6705, + "start": 8684, + "end": 8693, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6696, - "end": 6700, + "start": 8684, + "end": 8688, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6701, - "end": 6705, + "start": 8689, + "end": 8693, "loc": { "start": { - "line": 168, + "line": 222, "column": 13 }, "end": { - "line": 168, + "line": 222, "column": 17 }, "identifierName": "fp64" @@ -24003,29 +24003,29 @@ }, "right": { "type": "MemberExpression", - "start": 6708, - "end": 6716, + "start": 8696, + "end": 8704, "loc": { "start": { - "line": 168, + "line": 222, "column": 20 }, "end": { - "line": 168, + "line": 222, "column": 28 } }, "object": { "type": "Identifier", - "start": 6708, - "end": 6711, + "start": 8696, + "end": 8699, "loc": { "start": { - "line": 168, + "line": 222, "column": 20 }, "end": { - "line": 168, + "line": 222, "column": 23 }, "identifierName": "cfg" @@ -24034,15 +24034,15 @@ }, "property": { "type": "Identifier", - "start": 6712, - "end": 6716, + "start": 8700, + "end": 8704, "loc": { "start": { - "line": 168, + "line": 222, "column": 24 }, "end": { - "line": 168, + "line": 222, "column": 28 }, "identifierName": "fp64" @@ -24055,73 +24055,73 @@ }, { "type": "ExpressionStatement", - "start": 6726, - "end": 6759, + "start": 8714, + "end": 8747, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 6726, - "end": 6758, + "start": 8714, + "end": 8746, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6726, - "end": 6741, + "start": 8714, + "end": 8729, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 6726, - "end": 6730, + "start": 8714, + "end": 8718, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6731, - "end": 6741, + "start": 8719, + "end": 8729, "loc": { "start": { - "line": 169, + "line": 223, "column": 13 }, "end": { - "line": 169, + "line": 223, "column": 23 }, "identifierName": "colorDepth" @@ -24132,29 +24132,29 @@ }, "right": { "type": "MemberExpression", - "start": 6744, - "end": 6758, + "start": 8732, + "end": 8746, "loc": { "start": { - "line": 169, + "line": 223, "column": 26 }, "end": { - "line": 169, + "line": 223, "column": 40 } }, "object": { "type": "Identifier", - "start": 6744, - "end": 6747, + "start": 8732, + "end": 8735, "loc": { "start": { - "line": 169, + "line": 223, "column": 26 }, "end": { - "line": 169, + "line": 223, "column": 29 }, "identifierName": "cfg" @@ -24163,15 +24163,15 @@ }, "property": { "type": "Identifier", - "start": 6748, - "end": 6758, + "start": 8736, + "end": 8746, "loc": { "start": { - "line": 169, + "line": 223, "column": 30 }, "end": { - "line": 169, + "line": 223, "column": 40 }, "identifierName": "colorDepth" @@ -24190,15 +24190,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"lasLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.dataSource] A custom data source through which the LASLoaderPlugin can load model and metadata files. Defaults to an instance of {@link LASDefaultDataSource}, which loads over HTTP.\n * @param {Number} [cfg.skip=1] Configures LASLoaderPlugin to load every **n** points.\n * @param {Number} [cfg.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [cfg.colorDepth=8] Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits. Accepted values are 8, 16 an \"auto\".\n ", - "start": 5664, - "end": 6536, + "start": 7652, + "end": 8524, "loc": { "start": { - "line": 151, + "line": 205, "column": 4 }, "end": { - "line": 161, + "line": 215, "column": 7 } } @@ -24208,15 +24208,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 6771, - "end": 6983, + "start": 8759, + "end": 8971, "loc": { "start": { - "line": 172, + "line": 226, "column": 4 }, "end": { - "line": 178, + "line": 232, "column": 7 } } @@ -24225,15 +24225,15 @@ }, { "type": "ClassMethod", - "start": 6988, - "end": 7045, + "start": 8976, + "end": 9033, "loc": { "start": { - "line": 179, + "line": 233, "column": 4 }, "end": { - "line": 181, + "line": 235, "column": 5 } }, @@ -24241,15 +24241,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 6992, - "end": 7002, + "start": 8980, + "end": 8990, "loc": { "start": { - "line": 179, + "line": 233, "column": 8 }, "end": { - "line": 179, + "line": 233, "column": 18 }, "identifierName": "dataSource" @@ -24264,73 +24264,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 7005, - "end": 7045, + "start": 8993, + "end": 9033, "loc": { "start": { - "line": 179, + "line": 233, "column": 21 }, "end": { - "line": 181, + "line": 235, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 7015, - "end": 7039, + "start": 9003, + "end": 9027, "loc": { "start": { - "line": 180, + "line": 234, "column": 8 }, "end": { - "line": 180, + "line": 234, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 7022, - "end": 7038, + "start": 9010, + "end": 9026, "loc": { "start": { - "line": 180, + "line": 234, "column": 15 }, "end": { - "line": 180, + "line": 234, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 7022, - "end": 7026, + "start": 9010, + "end": 9014, "loc": { "start": { - "line": 180, + "line": 234, "column": 15 }, "end": { - "line": 180, + "line": 234, "column": 19 } } }, "property": { "type": "Identifier", - "start": 7027, - "end": 7038, + "start": 9015, + "end": 9026, "loc": { "start": { - "line": 180, + "line": 234, "column": 20 }, "end": { - "line": 180, + "line": 234, "column": 31 }, "identifierName": "_dataSource" @@ -24348,15 +24348,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 6771, - "end": 6983, + "start": 8759, + "end": 8971, "loc": { "start": { - "line": 172, + "line": 226, "column": 4 }, "end": { - "line": 178, + "line": 232, "column": 7 } } @@ -24366,15 +24366,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 7051, - "end": 7261, + "start": 9039, + "end": 9249, "loc": { "start": { - "line": 183, + "line": 237, "column": 4 }, "end": { - "line": 189, + "line": 243, "column": 7 } } @@ -24383,15 +24383,15 @@ }, { "type": "ClassMethod", - "start": 7266, - "end": 7359, + "start": 9254, + "end": 9347, "loc": { "start": { - "line": 190, + "line": 244, "column": 4 }, "end": { - "line": 192, + "line": 246, "column": 5 } }, @@ -24399,15 +24399,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7270, - "end": 7280, + "start": 9258, + "end": 9268, "loc": { "start": { - "line": 190, + "line": 244, "column": 8 }, "end": { - "line": 190, + "line": 244, "column": 18 }, "identifierName": "dataSource" @@ -24422,15 +24422,15 @@ "params": [ { "type": "Identifier", - "start": 7281, - "end": 7286, + "start": 9269, + "end": 9274, "loc": { "start": { - "line": 190, + "line": 244, "column": 19 }, "end": { - "line": 190, + "line": 244, "column": 24 }, "identifierName": "value" @@ -24440,88 +24440,88 @@ ], "body": { "type": "BlockStatement", - "start": 7288, - "end": 7359, + "start": 9276, + "end": 9347, "loc": { "start": { - "line": 190, + "line": 244, "column": 26 }, "end": { - "line": 192, + "line": 246, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 7298, - "end": 7353, + "start": 9286, + "end": 9341, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 63 } }, "expression": { "type": "AssignmentExpression", - "start": 7298, - "end": 7352, + "start": 9286, + "end": 9340, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 62 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7298, - "end": 7314, + "start": 9286, + "end": 9302, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 7298, - "end": 7302, + "start": 9286, + "end": 9290, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7303, - "end": 7314, + "start": 9291, + "end": 9302, "loc": { "start": { - "line": 191, + "line": 245, "column": 13 }, "end": { - "line": 191, + "line": 245, "column": 24 }, "identifierName": "_dataSource" @@ -24532,29 +24532,29 @@ }, "right": { "type": "LogicalExpression", - "start": 7317, - "end": 7352, + "start": 9305, + "end": 9340, "loc": { "start": { - "line": 191, + "line": 245, "column": 27 }, "end": { - "line": 191, + "line": 245, "column": 62 } }, "left": { "type": "Identifier", - "start": 7317, - "end": 7322, + "start": 9305, + "end": 9310, "loc": { "start": { - "line": 191, + "line": 245, "column": 27 }, "end": { - "line": 191, + "line": 245, "column": 32 }, "identifierName": "value" @@ -24564,29 +24564,29 @@ "operator": "||", "right": { "type": "NewExpression", - "start": 7326, - "end": 7352, + "start": 9314, + "end": 9340, "loc": { "start": { - "line": 191, + "line": 245, "column": 36 }, "end": { - "line": 191, + "line": 245, "column": 62 } }, "callee": { "type": "Identifier", - "start": 7330, - "end": 7350, + "start": 9318, + "end": 9338, "loc": { "start": { - "line": 191, + "line": 245, "column": 40 }, "end": { - "line": 191, + "line": 245, "column": 60 }, "identifierName": "LASDefaultDataSource" @@ -24606,15 +24606,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 7051, - "end": 7261, + "start": 9039, + "end": 9249, "loc": { "start": { - "line": 183, + "line": 237, "column": 4 }, "end": { - "line": 189, + "line": 243, "column": 7 } } @@ -24624,15 +24624,15 @@ { "type": "CommentBlock", "value": "*\n * When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n *\n * Default value is ````1````.\n *\n * @returns {Number} The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7365, - "end": 7598, + "start": 9353, + "end": 9586, "loc": { "start": { - "line": 194, + "line": 248, "column": 4 }, "end": { - "line": 200, + "line": 254, "column": 7 } } @@ -24641,15 +24641,15 @@ }, { "type": "ClassMethod", - "start": 7603, - "end": 7648, + "start": 9591, + "end": 9636, "loc": { "start": { - "line": 201, + "line": 255, "column": 4 }, "end": { - "line": 203, + "line": 257, "column": 5 } }, @@ -24657,15 +24657,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7607, - "end": 7611, + "start": 9595, + "end": 9599, "loc": { "start": { - "line": 201, + "line": 255, "column": 8 }, "end": { - "line": 201, + "line": 255, "column": 12 }, "identifierName": "skip" @@ -24680,73 +24680,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 7614, - "end": 7648, + "start": 9602, + "end": 9636, "loc": { "start": { - "line": 201, + "line": 255, "column": 15 }, "end": { - "line": 203, + "line": 257, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 7624, - "end": 7642, + "start": 9612, + "end": 9630, "loc": { "start": { - "line": 202, + "line": 256, "column": 8 }, "end": { - "line": 202, + "line": 256, "column": 26 } }, "argument": { "type": "MemberExpression", - "start": 7631, - "end": 7641, + "start": 9619, + "end": 9629, "loc": { "start": { - "line": 202, + "line": 256, "column": 15 }, "end": { - "line": 202, + "line": 256, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 7631, - "end": 7635, + "start": 9619, + "end": 9623, "loc": { "start": { - "line": 202, + "line": 256, "column": 15 }, "end": { - "line": 202, + "line": 256, "column": 19 } } }, "property": { "type": "Identifier", - "start": 7636, - "end": 7641, + "start": 9624, + "end": 9629, "loc": { "start": { - "line": 202, + "line": 256, "column": 20 }, "end": { - "line": 202, + "line": 256, "column": 25 }, "identifierName": "_skip" @@ -24764,15 +24764,15 @@ { "type": "CommentBlock", "value": "*\n * When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n *\n * Default value is ````1````.\n *\n * @returns {Number} The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7365, - "end": 7598, + "start": 9353, + "end": 9586, "loc": { "start": { - "line": 194, + "line": 248, "column": 4 }, "end": { - "line": 200, + "line": 254, "column": 7 } } @@ -24782,15 +24782,15 @@ { "type": "CommentBlock", "value": "*\n * Configures LASLoaderPlugin to load every **n** points.\n *\n * Default value is ````1````.\n *\n * @param {Number} value The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7654, - "end": 7855, + "start": 9642, + "end": 9843, "loc": { "start": { - "line": 205, + "line": 259, "column": 4 }, "end": { - "line": 211, + "line": 265, "column": 7 } } @@ -24799,15 +24799,15 @@ }, { "type": "ClassMethod", - "start": 7860, - "end": 7916, + "start": 9848, + "end": 9904, "loc": { "start": { - "line": 212, + "line": 266, "column": 4 }, "end": { - "line": 214, + "line": 268, "column": 5 } }, @@ -24815,15 +24815,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7864, - "end": 7868, + "start": 9852, + "end": 9856, "loc": { "start": { - "line": 212, + "line": 266, "column": 8 }, "end": { - "line": 212, + "line": 266, "column": 12 }, "identifierName": "skip" @@ -24838,15 +24838,15 @@ "params": [ { "type": "Identifier", - "start": 7869, - "end": 7874, + "start": 9857, + "end": 9862, "loc": { "start": { - "line": 212, + "line": 266, "column": 13 }, "end": { - "line": 212, + "line": 266, "column": 18 }, "identifierName": "value" @@ -24856,88 +24856,88 @@ ], "body": { "type": "BlockStatement", - "start": 7876, - "end": 7916, + "start": 9864, + "end": 9904, "loc": { "start": { - "line": 212, + "line": 266, "column": 20 }, "end": { - "line": 214, + "line": 268, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 7886, - "end": 7910, + "start": 9874, + "end": 9898, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 7886, - "end": 7909, + "start": 9874, + "end": 9897, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 31 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7886, - "end": 7896, + "start": 9874, + "end": 9884, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 7886, - "end": 7890, + "start": 9874, + "end": 9878, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7891, - "end": 7896, + "start": 9879, + "end": 9884, "loc": { "start": { - "line": 213, + "line": 267, "column": 13 }, "end": { - "line": 213, + "line": 267, "column": 18 }, "identifierName": "_skip" @@ -24948,29 +24948,29 @@ }, "right": { "type": "LogicalExpression", - "start": 7899, - "end": 7909, + "start": 9887, + "end": 9897, "loc": { "start": { - "line": 213, + "line": 267, "column": 21 }, "end": { - "line": 213, + "line": 267, "column": 31 } }, "left": { "type": "Identifier", - "start": 7899, - "end": 7904, + "start": 9887, + "end": 9892, "loc": { "start": { - "line": 213, + "line": 267, "column": 21 }, "end": { - "line": 213, + "line": 267, "column": 26 }, "identifierName": "value" @@ -24980,15 +24980,15 @@ "operator": "||", "right": { "type": "NumericLiteral", - "start": 7908, - "end": 7909, + "start": 9896, + "end": 9897, "loc": { "start": { - "line": 213, + "line": 267, "column": 30 }, "end": { - "line": 213, + "line": 267, "column": 31 } }, @@ -25009,15 +25009,15 @@ { "type": "CommentBlock", "value": "*\n * Configures LASLoaderPlugin to load every **n** points.\n *\n * Default value is ````1````.\n *\n * @param {Number} value The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7654, - "end": 7855, + "start": 9642, + "end": 9843, "loc": { "start": { - "line": 205, + "line": 259, "column": 4 }, "end": { - "line": 211, + "line": 265, "column": 7 } } @@ -25027,15 +25027,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 7922, - "end": 8211, + "start": 9910, + "end": 10199, "loc": { "start": { - "line": 216, + "line": 270, "column": 4 }, "end": { - "line": 222, + "line": 276, "column": 7 } } @@ -25044,15 +25044,15 @@ }, { "type": "ClassMethod", - "start": 8216, - "end": 8261, + "start": 10204, + "end": 10249, "loc": { "start": { - "line": 223, + "line": 277, "column": 4 }, "end": { - "line": 225, + "line": 279, "column": 5 } }, @@ -25060,15 +25060,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8220, - "end": 8224, + "start": 10208, + "end": 10212, "loc": { "start": { - "line": 223, + "line": 277, "column": 8 }, "end": { - "line": 223, + "line": 277, "column": 12 }, "identifierName": "fp64" @@ -25083,73 +25083,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 8227, - "end": 8261, + "start": 10215, + "end": 10249, "loc": { "start": { - "line": 223, + "line": 277, "column": 15 }, "end": { - "line": 225, + "line": 279, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 8237, - "end": 8255, + "start": 10225, + "end": 10243, "loc": { "start": { - "line": 224, + "line": 278, "column": 8 }, "end": { - "line": 224, + "line": 278, "column": 26 } }, "argument": { "type": "MemberExpression", - "start": 8244, - "end": 8254, + "start": 10232, + "end": 10242, "loc": { "start": { - "line": 224, + "line": 278, "column": 15 }, "end": { - "line": 224, + "line": 278, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 8244, - "end": 8248, + "start": 10232, + "end": 10236, "loc": { "start": { - "line": 224, + "line": 278, "column": 15 }, "end": { - "line": 224, + "line": 278, "column": 19 } } }, "property": { "type": "Identifier", - "start": 8249, - "end": 8254, + "start": 10237, + "end": 10242, "loc": { "start": { - "line": 224, + "line": 278, "column": 20 }, "end": { - "line": 224, + "line": 278, "column": 25 }, "identifierName": "_fp64" @@ -25167,15 +25167,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 7922, - "end": 8211, + "start": 9910, + "end": 10199, "loc": { "start": { - "line": 216, + "line": 270, "column": 4 }, "end": { - "line": 222, + "line": 276, "column": 7 } } @@ -25185,15 +25185,15 @@ { "type": "CommentBlock", "value": "*\n * Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 8267, - "end": 8566, + "start": 10255, + "end": 10554, "loc": { "start": { - "line": 227, + "line": 281, "column": 4 }, "end": { - "line": 233, + "line": 287, "column": 7 } } @@ -25202,15 +25202,15 @@ }, { "type": "ClassMethod", - "start": 8571, - "end": 8624, + "start": 10559, + "end": 10612, "loc": { "start": { - "line": 234, + "line": 288, "column": 4 }, "end": { - "line": 236, + "line": 290, "column": 5 } }, @@ -25218,15 +25218,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8575, - "end": 8579, + "start": 10563, + "end": 10567, "loc": { "start": { - "line": 234, + "line": 288, "column": 8 }, "end": { - "line": 234, + "line": 288, "column": 12 }, "identifierName": "fp64" @@ -25241,15 +25241,15 @@ "params": [ { "type": "Identifier", - "start": 8580, - "end": 8585, + "start": 10568, + "end": 10573, "loc": { "start": { - "line": 234, + "line": 288, "column": 13 }, "end": { - "line": 234, + "line": 288, "column": 18 }, "identifierName": "value" @@ -25259,88 +25259,88 @@ ], "body": { "type": "BlockStatement", - "start": 8587, - "end": 8624, + "start": 10575, + "end": 10612, "loc": { "start": { - "line": 234, + "line": 288, "column": 20 }, "end": { - "line": 236, + "line": 290, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 8597, - "end": 8618, + "start": 10585, + "end": 10606, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 8597, - "end": 8617, + "start": 10585, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8597, - "end": 8607, + "start": 10585, + "end": 10595, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 8597, - "end": 8601, + "start": 10585, + "end": 10589, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 12 } } }, "property": { "type": "Identifier", - "start": 8602, - "end": 8607, + "start": 10590, + "end": 10595, "loc": { "start": { - "line": 235, + "line": 289, "column": 13 }, "end": { - "line": 235, + "line": 289, "column": 18 }, "identifierName": "_fp64" @@ -25351,15 +25351,15 @@ }, "right": { "type": "UnaryExpression", - "start": 8610, - "end": 8617, + "start": 10598, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 21 }, "end": { - "line": 235, + "line": 289, "column": 28 } }, @@ -25367,15 +25367,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 8611, - "end": 8617, + "start": 10599, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 22 }, "end": { - "line": 235, + "line": 289, "column": 28 } }, @@ -25383,15 +25383,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 8612, - "end": 8617, + "start": 10600, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 23 }, "end": { - "line": 235, + "line": 289, "column": 28 }, "identifierName": "value" @@ -25416,15 +25416,15 @@ { "type": "CommentBlock", "value": "*\n * Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 8267, - "end": 8566, + "start": 10255, + "end": 10554, "loc": { "start": { - "line": 227, + "line": 281, "column": 4 }, "end": { - "line": 233, + "line": 287, "column": 7 } } @@ -25434,15 +25434,15 @@ { "type": "CommentBlock", "value": "*\n * Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @returns {Number|String} Possible returned values are 8, 16 and \"auto\".\n ", - "start": 8630, - "end": 8919, + "start": 10618, + "end": 10907, "loc": { "start": { - "line": 238, + "line": 292, "column": 4 }, "end": { - "line": 246, + "line": 300, "column": 7 } } @@ -25451,15 +25451,15 @@ }, { "type": "ClassMethod", - "start": 8924, - "end": 8981, + "start": 10912, + "end": 10969, "loc": { "start": { - "line": 247, + "line": 301, "column": 4 }, "end": { - "line": 249, + "line": 303, "column": 5 } }, @@ -25467,15 +25467,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8928, - "end": 8938, + "start": 10916, + "end": 10926, "loc": { "start": { - "line": 247, + "line": 301, "column": 8 }, "end": { - "line": 247, + "line": 301, "column": 18 }, "identifierName": "colorDepth" @@ -25490,73 +25490,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 8941, - "end": 8981, + "start": 10929, + "end": 10969, "loc": { "start": { - "line": 247, + "line": 301, "column": 21 }, "end": { - "line": 249, + "line": 303, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 8951, - "end": 8975, + "start": 10939, + "end": 10963, "loc": { "start": { - "line": 248, + "line": 302, "column": 8 }, "end": { - "line": 248, + "line": 302, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 8958, - "end": 8974, + "start": 10946, + "end": 10962, "loc": { "start": { - "line": 248, + "line": 302, "column": 15 }, "end": { - "line": 248, + "line": 302, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 8958, - "end": 8962, + "start": 10946, + "end": 10950, "loc": { "start": { - "line": 248, + "line": 302, "column": 15 }, "end": { - "line": 248, + "line": 302, "column": 19 } } }, "property": { "type": "Identifier", - "start": 8963, - "end": 8974, + "start": 10951, + "end": 10962, "loc": { "start": { - "line": 248, + "line": 302, "column": 20 }, "end": { - "line": 248, + "line": 302, "column": 31 }, "identifierName": "_colorDepth" @@ -25574,15 +25574,15 @@ { "type": "CommentBlock", "value": "*\n * Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @returns {Number|String} Possible returned values are 8, 16 and \"auto\".\n ", - "start": 8630, - "end": 8919, + "start": 10618, + "end": 10907, "loc": { "start": { - "line": 238, + "line": 292, "column": 4 }, "end": { - "line": 246, + "line": 300, "column": 7 } } @@ -25592,15 +25592,15 @@ { "type": "CommentBlock", "value": "*\n * Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @param {Number|String} value Valid values are 8, 16 and \"auto\".\n ", - "start": 8987, - "end": 9274, + "start": 10975, + "end": 11262, "loc": { "start": { - "line": 251, + "line": 305, "column": 4 }, "end": { - "line": 259, + "line": 313, "column": 7 } } @@ -25609,15 +25609,15 @@ }, { "type": "ClassMethod", - "start": 9279, - "end": 9352, + "start": 11267, + "end": 11340, "loc": { "start": { - "line": 260, + "line": 314, "column": 4 }, "end": { - "line": 262, + "line": 316, "column": 5 } }, @@ -25625,15 +25625,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 9283, - "end": 9293, + "start": 11271, + "end": 11281, "loc": { "start": { - "line": 260, + "line": 314, "column": 8 }, "end": { - "line": 260, + "line": 314, "column": 18 }, "identifierName": "colorDepth" @@ -25648,15 +25648,15 @@ "params": [ { "type": "Identifier", - "start": 9294, - "end": 9299, + "start": 11282, + "end": 11287, "loc": { "start": { - "line": 260, + "line": 314, "column": 19 }, "end": { - "line": 260, + "line": 314, "column": 24 }, "identifierName": "value" @@ -25666,88 +25666,88 @@ ], "body": { "type": "BlockStatement", - "start": 9301, - "end": 9352, + "start": 11289, + "end": 11340, "loc": { "start": { - "line": 260, + "line": 314, "column": 26 }, "end": { - "line": 262, + "line": 316, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 9311, - "end": 9346, + "start": 11299, + "end": 11334, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 9311, - "end": 9345, + "start": 11299, + "end": 11333, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 9311, - "end": 9327, + "start": 11299, + "end": 11315, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 9311, - "end": 9315, + "start": 11299, + "end": 11303, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 12 } } }, "property": { "type": "Identifier", - "start": 9316, - "end": 9327, + "start": 11304, + "end": 11315, "loc": { "start": { - "line": 261, + "line": 315, "column": 13 }, "end": { - "line": 261, + "line": 315, "column": 24 }, "identifierName": "_colorDepth" @@ -25758,29 +25758,29 @@ }, "right": { "type": "LogicalExpression", - "start": 9330, - "end": 9345, + "start": 11318, + "end": 11333, "loc": { "start": { - "line": 261, + "line": 315, "column": 27 }, "end": { - "line": 261, + "line": 315, "column": 42 } }, "left": { "type": "Identifier", - "start": 9330, - "end": 9335, + "start": 11318, + "end": 11323, "loc": { "start": { - "line": 261, + "line": 315, "column": 27 }, "end": { - "line": 261, + "line": 315, "column": 32 }, "identifierName": "value" @@ -25790,15 +25790,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 9339, - "end": 9345, + "start": 11327, + "end": 11333, "loc": { "start": { - "line": 261, + "line": 315, "column": 36 }, "end": { - "line": 261, + "line": 315, "column": 42 } }, @@ -25819,15 +25819,15 @@ { "type": "CommentBlock", "value": "*\n * Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @param {Number|String} value Valid values are 8, 16 and \"auto\".\n ", - "start": 8987, - "end": 9274, + "start": 10975, + "end": 11262, "loc": { "start": { - "line": 251, + "line": 305, "column": 4 }, "end": { - "line": 259, + "line": 313, "column": 7 } } @@ -25837,15 +25837,15 @@ { "type": "CommentBlock", "value": "*\n * Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.\n * @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Object} [params.stats] Collects model statistics.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n ", - "start": 9358, - "end": 10972, + "start": 11346, + "end": 12960, "loc": { "start": { - "line": 264, + "line": 318, "column": 4 }, "end": { - "line": 279, + "line": 333, "column": 7 } } @@ -25854,15 +25854,15 @@ }, { "type": "ClassMethod", - "start": 10977, - "end": 12246, + "start": 12965, + "end": 14234, "loc": { "start": { - "line": 280, + "line": 334, "column": 4 }, "end": { - "line": 319, + "line": 373, "column": 5 } }, @@ -25870,15 +25870,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 10977, - "end": 10981, + "start": 12965, + "end": 12969, "loc": { "start": { - "line": 280, + "line": 334, "column": 4 }, "end": { - "line": 280, + "line": 334, "column": 8 }, "identifierName": "load" @@ -25894,29 +25894,29 @@ "params": [ { "type": "AssignmentPattern", - "start": 10982, - "end": 10993, + "start": 12970, + "end": 12981, "loc": { "start": { - "line": 280, + "line": 334, "column": 9 }, "end": { - "line": 280, + "line": 334, "column": 20 } }, "left": { "type": "Identifier", - "start": 10982, - "end": 10988, + "start": 12970, + "end": 12976, "loc": { "start": { - "line": 280, + "line": 334, "column": 9 }, "end": { - "line": 280, + "line": 334, "column": 15 }, "identifierName": "params" @@ -25925,15 +25925,15 @@ }, "right": { "type": "ObjectExpression", - "start": 10991, - "end": 10993, + "start": 12979, + "end": 12981, "loc": { "start": { - "line": 280, + "line": 334, "column": 18 }, "end": { - "line": 280, + "line": 334, "column": 20 } }, @@ -25943,72 +25943,72 @@ ], "body": { "type": "BlockStatement", - "start": 10995, - "end": 12246, + "start": 12983, + "end": 14234, "loc": { "start": { - "line": 280, + "line": 334, "column": 22 }, "end": { - "line": 319, + "line": 373, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 11006, - "end": 11227, + "start": 12994, + "end": 13215, "loc": { "start": { - "line": 282, + "line": 336, "column": 8 }, "end": { - "line": 285, + "line": 339, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 11010, - "end": 11062, + "start": 12998, + "end": 13050, "loc": { "start": { - "line": 282, + "line": 336, "column": 12 }, "end": { - "line": 282, + "line": 336, "column": 64 } }, "left": { "type": "MemberExpression", - "start": 11010, - "end": 11019, + "start": 12998, + "end": 13007, "loc": { "start": { - "line": 282, + "line": 336, "column": 12 }, "end": { - "line": 282, + "line": 336, "column": 21 } }, "object": { "type": "Identifier", - "start": 11010, - "end": 11016, + "start": 12998, + "end": 13004, "loc": { "start": { - "line": 282, + "line": 336, "column": 12 }, "end": { - "line": 282, + "line": 336, "column": 18 }, "identifierName": "params" @@ -26017,15 +26017,15 @@ }, "property": { "type": "Identifier", - "start": 11017, - "end": 11019, + "start": 13005, + "end": 13007, "loc": { "start": { - "line": 282, + "line": 336, "column": 19 }, "end": { - "line": 282, + "line": 336, "column": 21 }, "identifierName": "id" @@ -26037,86 +26037,86 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 11023, - "end": 11062, + "start": 13011, + "end": 13050, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 11023, - "end": 11051, + "start": 13011, + "end": 13039, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 11023, - "end": 11040, + "start": 13011, + "end": 13028, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 11023, - "end": 11034, + "start": 13011, + "end": 13022, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 11023, - "end": 11027, + "start": 13011, + "end": 13015, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 29 } } }, "property": { "type": "Identifier", - "start": 11028, - "end": 11034, + "start": 13016, + "end": 13022, "loc": { "start": { - "line": 282, + "line": 336, "column": 30 }, "end": { - "line": 282, + "line": 336, "column": 36 }, "identifierName": "viewer" @@ -26127,15 +26127,15 @@ }, "property": { "type": "Identifier", - "start": 11035, - "end": 11040, + "start": 13023, + "end": 13028, "loc": { "start": { - "line": 282, + "line": 336, "column": 37 }, "end": { - "line": 282, + "line": 336, "column": 42 }, "identifierName": "scene" @@ -26146,15 +26146,15 @@ }, "property": { "type": "Identifier", - "start": 11041, - "end": 11051, + "start": 13029, + "end": 13039, "loc": { "start": { - "line": 282, + "line": 336, "column": 43 }, "end": { - "line": 282, + "line": 336, "column": 53 }, "identifierName": "components" @@ -26165,29 +26165,29 @@ }, "property": { "type": "MemberExpression", - "start": 11052, - "end": 11061, + "start": 13040, + "end": 13049, "loc": { "start": { - "line": 282, + "line": 336, "column": 54 }, "end": { - "line": 282, + "line": 336, "column": 63 } }, "object": { "type": "Identifier", - "start": 11052, - "end": 11058, + "start": 13040, + "end": 13046, "loc": { "start": { - "line": 282, + "line": 336, "column": 54 }, "end": { - "line": 282, + "line": 336, "column": 60 }, "identifierName": "params" @@ -26196,15 +26196,15 @@ }, "property": { "type": "Identifier", - "start": 11059, - "end": 11061, + "start": 13047, + "end": 13049, "loc": { "start": { - "line": 282, + "line": 336, "column": 61 }, "end": { - "line": 282, + "line": 336, "column": 63 }, "identifierName": "id" @@ -26218,87 +26218,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 11064, - "end": 11227, + "start": 13052, + "end": 13215, "loc": { "start": { - "line": 282, + "line": 336, "column": 66 }, "end": { - "line": 285, + "line": 339, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 11078, - "end": 11187, + "start": 13066, + "end": 13175, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 121 } }, "expression": { "type": "CallExpression", - "start": 11078, - "end": 11186, + "start": 13066, + "end": 13174, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 11078, - "end": 11088, + "start": 13066, + "end": 13076, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 11078, - "end": 11082, + "start": 13066, + "end": 13070, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 16 } } }, "property": { "type": "Identifier", - "start": 11083, - "end": 11088, + "start": 13071, + "end": 13076, "loc": { "start": { - "line": 283, + "line": 337, "column": 17 }, "end": { - "line": 283, + "line": 337, "column": 22 }, "identifierName": "error" @@ -26310,43 +26310,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 11089, - "end": 11185, + "start": 13077, + "end": 13173, "loc": { "start": { - "line": 283, + "line": 337, "column": 23 }, "end": { - "line": 283, + "line": 337, "column": 119 } }, "left": { "type": "BinaryExpression", - "start": 11089, - "end": 11152, + "start": 13077, + "end": 13140, "loc": { "start": { - "line": 283, + "line": 337, "column": 23 }, "end": { - "line": 283, + "line": 337, "column": 86 } }, "left": { "type": "StringLiteral", - "start": 11089, - "end": 11140, + "start": 13077, + "end": 13128, "loc": { "start": { - "line": 283, + "line": 337, "column": 23 }, "end": { - "line": 283, + "line": 337, "column": 74 } }, @@ -26359,29 +26359,29 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 11143, - "end": 11152, + "start": 13131, + "end": 13140, "loc": { "start": { - "line": 283, + "line": 337, "column": 77 }, "end": { - "line": 283, + "line": 337, "column": 86 } }, "object": { "type": "Identifier", - "start": 11143, - "end": 11149, + "start": 13131, + "end": 13137, "loc": { "start": { - "line": 283, + "line": 337, "column": 77 }, "end": { - "line": 283, + "line": 337, "column": 83 }, "identifierName": "params" @@ -26390,15 +26390,15 @@ }, "property": { "type": "Identifier", - "start": 11150, - "end": 11152, + "start": 13138, + "end": 13140, "loc": { "start": { - "line": 283, + "line": 337, "column": 84 }, "end": { - "line": 283, + "line": 337, "column": 86 }, "identifierName": "id" @@ -26411,15 +26411,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 11155, - "end": 11185, + "start": 13143, + "end": 13173, "loc": { "start": { - "line": 283, + "line": 337, "column": 89 }, "end": { - "line": 283, + "line": 337, "column": 119 } }, @@ -26435,29 +26435,29 @@ }, { "type": "ExpressionStatement", - "start": 11200, - "end": 11217, + "start": 13188, + "end": 13205, "loc": { "start": { - "line": 284, + "line": 338, "column": 12 }, "end": { - "line": 284, + "line": 338, "column": 29 } }, "expression": { "type": "UnaryExpression", - "start": 11200, - "end": 11216, + "start": 13188, + "end": 13204, "loc": { "start": { - "line": 284, + "line": 338, "column": 12 }, "end": { - "line": 284, + "line": 338, "column": 28 } }, @@ -26465,29 +26465,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 11207, - "end": 11216, + "start": 13195, + "end": 13204, "loc": { "start": { - "line": 284, + "line": 338, "column": 19 }, "end": { - "line": 284, + "line": 338, "column": 28 } }, "object": { "type": "Identifier", - "start": 11207, - "end": 11213, + "start": 13195, + "end": 13201, "loc": { "start": { - "line": 284, + "line": 338, "column": 19 }, "end": { - "line": 284, + "line": 338, "column": 25 }, "identifierName": "params" @@ -26496,15 +26496,15 @@ }, "property": { "type": "Identifier", - "start": 11214, - "end": 11216, + "start": 13202, + "end": 13204, "loc": { "start": { - "line": 284, + "line": 338, "column": 26 }, "end": { - "line": 284, + "line": 338, "column": 28 }, "identifierName": "id" @@ -26525,44 +26525,44 @@ }, { "type": "VariableDeclaration", - "start": 11237, - "end": 11350, + "start": 13225, + "end": 13338, "loc": { "start": { - "line": 287, + "line": 341, "column": 8 }, "end": { - "line": 289, + "line": 343, "column": 12 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11243, - "end": 11349, + "start": 13231, + "end": 13337, "loc": { "start": { - "line": 287, + "line": 341, "column": 14 }, "end": { - "line": 289, + "line": 343, "column": 11 } }, "id": { "type": "Identifier", - "start": 11243, - "end": 11253, + "start": 13231, + "end": 13241, "loc": { "start": { - "line": 287, + "line": 341, "column": 14 }, "end": { - "line": 287, + "line": 341, "column": 24 }, "identifierName": "sceneModel" @@ -26571,29 +26571,29 @@ }, "init": { "type": "NewExpression", - "start": 11256, - "end": 11349, + "start": 13244, + "end": 13337, "loc": { "start": { - "line": 287, + "line": 341, "column": 27 }, "end": { - "line": 289, + "line": 343, "column": 11 } }, "callee": { "type": "Identifier", - "start": 11260, - "end": 11270, + "start": 13248, + "end": 13258, "loc": { "start": { - "line": 287, + "line": 341, "column": 31 }, "end": { - "line": 287, + "line": 341, "column": 41 }, "identifierName": "SceneModel" @@ -26603,58 +26603,58 @@ "arguments": [ { "type": "MemberExpression", - "start": 11271, - "end": 11288, + "start": 13259, + "end": 13276, "loc": { "start": { - "line": 287, + "line": 341, "column": 42 }, "end": { - "line": 287, + "line": 341, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 11271, - "end": 11282, + "start": 13259, + "end": 13270, "loc": { "start": { - "line": 287, + "line": 341, "column": 42 }, "end": { - "line": 287, + "line": 341, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 11271, - "end": 11275, + "start": 13259, + "end": 13263, "loc": { "start": { - "line": 287, + "line": 341, "column": 42 }, "end": { - "line": 287, + "line": 341, "column": 46 } } }, "property": { "type": "Identifier", - "start": 11276, - "end": 11282, + "start": 13264, + "end": 13270, "loc": { "start": { - "line": 287, + "line": 341, "column": 47 }, "end": { - "line": 287, + "line": 341, "column": 53 }, "identifierName": "viewer" @@ -26665,15 +26665,15 @@ }, "property": { "type": "Identifier", - "start": 11283, - "end": 11288, + "start": 13271, + "end": 13276, "loc": { "start": { - "line": 287, + "line": 341, "column": 54 }, "end": { - "line": 287, + "line": 341, "column": 59 }, "identifierName": "scene" @@ -26684,43 +26684,43 @@ }, { "type": "CallExpression", - "start": 11290, - "end": 11348, + "start": 13278, + "end": 13336, "loc": { "start": { - "line": 287, + "line": 341, "column": 61 }, "end": { - "line": 289, + "line": 343, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 11290, - "end": 11301, + "start": 13278, + "end": 13289, "loc": { "start": { - "line": 287, + "line": 341, "column": 61 }, "end": { - "line": 287, + "line": 341, "column": 72 } }, "object": { "type": "Identifier", - "start": 11290, - "end": 11295, + "start": 13278, + "end": 13283, "loc": { "start": { - "line": 287, + "line": 341, "column": 61 }, "end": { - "line": 287, + "line": 341, "column": 66 }, "identifierName": "utils" @@ -26729,15 +26729,15 @@ }, "property": { "type": "Identifier", - "start": 11296, - "end": 11301, + "start": 13284, + "end": 13289, "loc": { "start": { - "line": 287, + "line": 341, "column": 67 }, "end": { - "line": 287, + "line": 341, "column": 72 }, "identifierName": "apply" @@ -26749,15 +26749,15 @@ "arguments": [ { "type": "Identifier", - "start": 11302, - "end": 11308, + "start": 13290, + "end": 13296, "loc": { "start": { - "line": 287, + "line": 341, "column": 73 }, "end": { - "line": 287, + "line": 341, "column": 79 }, "identifierName": "params" @@ -26766,30 +26766,30 @@ }, { "type": "ObjectExpression", - "start": 11310, - "end": 11347, + "start": 13298, + "end": 13335, "loc": { "start": { - "line": 287, + "line": 341, "column": 81 }, "end": { - "line": 289, + "line": 343, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 11324, - "end": 11337, + "start": 13312, + "end": 13325, "loc": { "start": { - "line": 288, + "line": 342, "column": 12 }, "end": { - "line": 288, + "line": 342, "column": 25 } }, @@ -26798,15 +26798,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11324, - "end": 11331, + "start": 13312, + "end": 13319, "loc": { "start": { - "line": 288, + "line": 342, "column": 12 }, "end": { - "line": 288, + "line": 342, "column": 19 }, "identifierName": "isModel" @@ -26815,15 +26815,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 11333, - "end": 11337, + "start": 13321, + "end": 13325, "loc": { "start": { - "line": 288, + "line": 342, "column": 21 }, "end": { - "line": 288, + "line": 342, "column": 25 } }, @@ -26842,43 +26842,43 @@ }, { "type": "IfStatement", - "start": 11360, - "end": 11521, + "start": 13348, + "end": 13509, "loc": { "start": { - "line": 291, + "line": 345, "column": 8 }, "end": { - "line": 294, + "line": 348, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 11364, - "end": 11390, + "start": 13352, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 12 }, "end": { - "line": 291, + "line": 345, "column": 38 } }, "left": { "type": "UnaryExpression", - "start": 11364, - "end": 11375, + "start": 13352, + "end": 13363, "loc": { "start": { - "line": 291, + "line": 345, "column": 12 }, "end": { - "line": 291, + "line": 345, "column": 23 } }, @@ -26886,29 +26886,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 11365, - "end": 11375, + "start": 13353, + "end": 13363, "loc": { "start": { - "line": 291, + "line": 345, "column": 13 }, "end": { - "line": 291, + "line": 345, "column": 23 } }, "object": { "type": "Identifier", - "start": 11365, - "end": 11371, + "start": 13353, + "end": 13359, "loc": { "start": { - "line": 291, + "line": 345, "column": 13 }, "end": { - "line": 291, + "line": 345, "column": 19 }, "identifierName": "params" @@ -26917,15 +26917,15 @@ }, "property": { "type": "Identifier", - "start": 11372, - "end": 11375, + "start": 13360, + "end": 13363, "loc": { "start": { - "line": 291, + "line": 345, "column": 20 }, "end": { - "line": 291, + "line": 345, "column": 23 }, "identifierName": "src" @@ -26941,15 +26941,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 11379, - "end": 11390, + "start": 13367, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 27 }, "end": { - "line": 291, + "line": 345, "column": 38 } }, @@ -26957,29 +26957,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 11380, - "end": 11390, + "start": 13368, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 28 }, "end": { - "line": 291, + "line": 345, "column": 38 } }, "object": { "type": "Identifier", - "start": 11380, - "end": 11386, + "start": 13368, + "end": 13374, "loc": { "start": { - "line": 291, + "line": 345, "column": 28 }, "end": { - "line": 291, + "line": 345, "column": 34 }, "identifierName": "params" @@ -26988,15 +26988,15 @@ }, "property": { "type": "Identifier", - "start": 11387, - "end": 11390, + "start": 13375, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 35 }, "end": { - "line": 291, + "line": 345, "column": 38 }, "identifierName": "las" @@ -27012,87 +27012,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 11392, - "end": 11521, + "start": 13380, + "end": 13509, "loc": { "start": { - "line": 291, + "line": 345, "column": 40 }, "end": { - "line": 294, + "line": 348, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 11406, - "end": 11454, + "start": 13394, + "end": 13442, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 60 } }, "expression": { "type": "CallExpression", - "start": 11406, - "end": 11453, + "start": 13394, + "end": 13441, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 11406, - "end": 11416, + "start": 13394, + "end": 13404, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 11406, - "end": 11410, + "start": 13394, + "end": 13398, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 16 } } }, "property": { "type": "Identifier", - "start": 11411, - "end": 11416, + "start": 13399, + "end": 13404, "loc": { "start": { - "line": 292, + "line": 346, "column": 17 }, "end": { - "line": 292, + "line": 346, "column": 22 }, "identifierName": "error" @@ -27104,15 +27104,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 11417, - "end": 11452, + "start": 13405, + "end": 13440, "loc": { "start": { - "line": 292, + "line": 346, "column": 23 }, "end": { - "line": 292, + "line": 346, "column": 58 } }, @@ -27127,29 +27127,29 @@ }, { "type": "ReturnStatement", - "start": 11467, - "end": 11485, + "start": 13455, + "end": 13473, "loc": { "start": { - "line": 293, + "line": 347, "column": 12 }, "end": { - "line": 293, + "line": 347, "column": 30 } }, "argument": { "type": "Identifier", - "start": 11474, - "end": 11484, + "start": 13462, + "end": 13472, "loc": { "start": { - "line": 293, + "line": 347, "column": 19 }, "end": { - "line": 293, + "line": 347, "column": 29 }, "identifierName": "sceneModel" @@ -27160,15 +27160,15 @@ { "type": "CommentLine", "value": " Return new empty model", - "start": 11486, - "end": 11511, + "start": 13474, + "end": 13499, "loc": { "start": { - "line": 293, + "line": 347, "column": 31 }, "end": { - "line": 293, + "line": 347, "column": 56 } } @@ -27182,44 +27182,44 @@ }, { "type": "VariableDeclaration", - "start": 11531, - "end": 11705, + "start": 13519, + "end": 13693, "loc": { "start": { - "line": 296, + "line": 350, "column": 8 }, "end": { - "line": 302, + "line": 356, "column": 10 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11537, - "end": 11704, + "start": 13525, + "end": 13692, "loc": { "start": { - "line": 296, + "line": 350, "column": 14 }, "end": { - "line": 302, + "line": 356, "column": 9 } }, "id": { "type": "Identifier", - "start": 11537, - "end": 11544, + "start": 13525, + "end": 13532, "loc": { "start": { - "line": 296, + "line": 350, "column": 14 }, "end": { - "line": 296, + "line": 350, "column": 21 }, "identifierName": "options" @@ -27228,30 +27228,30 @@ }, "init": { "type": "ObjectExpression", - "start": 11547, - "end": 11704, + "start": 13535, + "end": 13692, "loc": { "start": { - "line": 296, + "line": 350, "column": 24 }, "end": { - "line": 302, + "line": 356, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 11561, - "end": 11694, + "start": 13549, + "end": 13682, "loc": { "start": { - "line": 297, + "line": 351, "column": 12 }, "end": { - "line": 301, + "line": 355, "column": 13 } }, @@ -27260,15 +27260,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11561, - "end": 11564, + "start": 13549, + "end": 13552, "loc": { "start": { - "line": 297, + "line": 351, "column": 12 }, "end": { - "line": 297, + "line": 351, "column": 15 }, "identifierName": "las" @@ -27277,30 +27277,30 @@ }, "value": { "type": "ObjectExpression", - "start": 11566, - "end": 11694, + "start": 13554, + "end": 13682, "loc": { "start": { - "line": 297, + "line": 351, "column": 17 }, "end": { - "line": 301, + "line": 355, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 11584, - "end": 11600, + "start": 13572, + "end": 13588, "loc": { "start": { - "line": 298, + "line": 352, "column": 16 }, "end": { - "line": 298, + "line": 352, "column": 32 } }, @@ -27309,15 +27309,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11584, - "end": 11588, + "start": 13572, + "end": 13576, "loc": { "start": { - "line": 298, + "line": 352, "column": 16 }, "end": { - "line": 298, + "line": 352, "column": 20 }, "identifierName": "skip" @@ -27326,44 +27326,44 @@ }, "value": { "type": "MemberExpression", - "start": 11590, - "end": 11600, + "start": 13578, + "end": 13588, "loc": { "start": { - "line": 298, + "line": 352, "column": 22 }, "end": { - "line": 298, + "line": 352, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 11590, - "end": 11594, + "start": 13578, + "end": 13582, "loc": { "start": { - "line": 298, + "line": 352, "column": 22 }, "end": { - "line": 298, + "line": 352, "column": 26 } } }, "property": { "type": "Identifier", - "start": 11595, - "end": 11600, + "start": 13583, + "end": 13588, "loc": { "start": { - "line": 298, + "line": 352, "column": 27 }, "end": { - "line": 298, + "line": 352, "column": 32 }, "identifierName": "_skip" @@ -27375,15 +27375,15 @@ }, { "type": "ObjectProperty", - "start": 11618, - "end": 11634, + "start": 13606, + "end": 13622, "loc": { "start": { - "line": 299, + "line": 353, "column": 16 }, "end": { - "line": 299, + "line": 353, "column": 32 } }, @@ -27392,15 +27392,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11618, - "end": 11622, + "start": 13606, + "end": 13610, "loc": { "start": { - "line": 299, + "line": 353, "column": 16 }, "end": { - "line": 299, + "line": 353, "column": 20 }, "identifierName": "fp64" @@ -27409,44 +27409,44 @@ }, "value": { "type": "MemberExpression", - "start": 11624, - "end": 11634, + "start": 13612, + "end": 13622, "loc": { "start": { - "line": 299, + "line": 353, "column": 22 }, "end": { - "line": 299, + "line": 353, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 11624, - "end": 11628, + "start": 13612, + "end": 13616, "loc": { "start": { - "line": 299, + "line": 353, "column": 22 }, "end": { - "line": 299, + "line": 353, "column": 26 } } }, "property": { "type": "Identifier", - "start": 11629, - "end": 11634, + "start": 13617, + "end": 13622, "loc": { "start": { - "line": 299, + "line": 353, "column": 27 }, "end": { - "line": 299, + "line": 353, "column": 32 }, "identifierName": "_fp64" @@ -27458,15 +27458,15 @@ }, { "type": "ObjectProperty", - "start": 11652, - "end": 11680, + "start": 13640, + "end": 13668, "loc": { "start": { - "line": 300, + "line": 354, "column": 16 }, "end": { - "line": 300, + "line": 354, "column": 44 } }, @@ -27475,15 +27475,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 11652, - "end": 11662, + "start": 13640, + "end": 13650, "loc": { "start": { - "line": 300, + "line": 354, "column": 16 }, "end": { - "line": 300, + "line": 354, "column": 26 }, "identifierName": "colorDepth" @@ -27492,44 +27492,44 @@ }, "value": { "type": "MemberExpression", - "start": 11664, - "end": 11680, + "start": 13652, + "end": 13668, "loc": { "start": { - "line": 300, + "line": 354, "column": 28 }, "end": { - "line": 300, + "line": 354, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 11664, - "end": 11668, + "start": 13652, + "end": 13656, "loc": { "start": { - "line": 300, + "line": 354, "column": 28 }, "end": { - "line": 300, + "line": 354, "column": 32 } } }, "property": { "type": "Identifier", - "start": 11669, - "end": 11680, + "start": 13657, + "end": 13668, "loc": { "start": { - "line": 300, + "line": 354, "column": 33 }, "end": { - "line": 300, + "line": 354, "column": 44 }, "identifierName": "_colorDepth" @@ -27550,43 +27550,43 @@ }, { "type": "IfStatement", - "start": 11715, - "end": 12212, + "start": 13703, + "end": 14200, "loc": { "start": { - "line": 304, + "line": 358, "column": 8 }, "end": { - "line": 316, + "line": 370, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 11719, - "end": 11729, + "start": 13707, + "end": 13717, "loc": { "start": { - "line": 304, + "line": 358, "column": 12 }, "end": { - "line": 304, + "line": 358, "column": 22 } }, "object": { "type": "Identifier", - "start": 11719, - "end": 11725, + "start": 13707, + "end": 13713, "loc": { "start": { - "line": 304, + "line": 358, "column": 12 }, "end": { - "line": 304, + "line": 358, "column": 18 }, "identifierName": "params" @@ -27595,15 +27595,15 @@ }, "property": { "type": "Identifier", - "start": 11726, - "end": 11729, + "start": 13714, + "end": 13717, "loc": { "start": { - "line": 304, + "line": 358, "column": 19 }, "end": { - "line": 304, + "line": 358, "column": 22 }, "identifierName": "src" @@ -27614,87 +27614,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 11731, - "end": 11812, + "start": 13719, + "end": 13800, "loc": { "start": { - "line": 304, + "line": 358, "column": 24 }, "end": { - "line": 306, + "line": 360, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 11745, - "end": 11802, + "start": 13733, + "end": 13790, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 11745, - "end": 11801, + "start": 13733, + "end": 13789, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 68 } }, "callee": { "type": "MemberExpression", - "start": 11745, - "end": 11760, + "start": 13733, + "end": 13748, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 11745, - "end": 11749, + "start": 13733, + "end": 13737, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 16 } } }, "property": { "type": "Identifier", - "start": 11750, - "end": 11760, + "start": 13738, + "end": 13748, "loc": { "start": { - "line": 305, + "line": 359, "column": 17 }, "end": { - "line": 305, + "line": 359, "column": 27 }, "identifierName": "_loadModel" @@ -27706,29 +27706,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 11761, - "end": 11771, + "start": 13749, + "end": 13759, "loc": { "start": { - "line": 305, + "line": 359, "column": 28 }, "end": { - "line": 305, + "line": 359, "column": 38 } }, "object": { "type": "Identifier", - "start": 11761, - "end": 11767, + "start": 13749, + "end": 13755, "loc": { "start": { - "line": 305, + "line": 359, "column": 28 }, "end": { - "line": 305, + "line": 359, "column": 34 }, "identifierName": "params" @@ -27737,15 +27737,15 @@ }, "property": { "type": "Identifier", - "start": 11768, - "end": 11771, + "start": 13756, + "end": 13759, "loc": { "start": { - "line": 305, + "line": 359, "column": 35 }, "end": { - "line": 305, + "line": 359, "column": 38 }, "identifierName": "src" @@ -27756,15 +27756,15 @@ }, { "type": "Identifier", - "start": 11773, - "end": 11779, + "start": 13761, + "end": 13767, "loc": { "start": { - "line": 305, + "line": 359, "column": 40 }, "end": { - "line": 305, + "line": 359, "column": 46 }, "identifierName": "params" @@ -27773,15 +27773,15 @@ }, { "type": "Identifier", - "start": 11781, - "end": 11788, + "start": 13769, + "end": 13776, "loc": { "start": { - "line": 305, + "line": 359, "column": 48 }, "end": { - "line": 305, + "line": 359, "column": 55 }, "identifierName": "options" @@ -27790,15 +27790,15 @@ }, { "type": "Identifier", - "start": 11790, - "end": 11800, + "start": 13778, + "end": 13788, "loc": { "start": { - "line": 305, + "line": 359, "column": 57 }, "end": { - "line": 305, + "line": 359, "column": 67 }, "identifierName": "sceneModel" @@ -27813,59 +27813,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 11818, - "end": 12212, + "start": 13806, + "end": 14200, "loc": { "start": { - "line": 306, + "line": 360, "column": 15 }, "end": { - "line": 316, + "line": 370, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 11832, - "end": 11881, + "start": 13820, + "end": 13869, "loc": { "start": { - "line": 307, + "line": 361, "column": 12 }, "end": { - "line": 307, + "line": 361, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11838, - "end": 11880, + "start": 13826, + "end": 13868, "loc": { "start": { - "line": 307, + "line": 361, "column": 18 }, "end": { - "line": 307, + "line": 361, "column": 60 } }, "id": { "type": "Identifier", - "start": 11838, - "end": 11845, + "start": 13826, + "end": 13833, "loc": { "start": { - "line": 307, + "line": 361, "column": 18 }, "end": { - "line": 307, + "line": 361, "column": 25 }, "identifierName": "spinner" @@ -27874,86 +27874,86 @@ }, "init": { "type": "MemberExpression", - "start": 11848, - "end": 11880, + "start": 13836, + "end": 13868, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 11848, - "end": 11872, + "start": 13836, + "end": 13860, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 11848, - "end": 11865, + "start": 13836, + "end": 13853, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 11848, - "end": 11859, + "start": 13836, + "end": 13847, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 11848, - "end": 11852, + "start": 13836, + "end": 13840, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 32 } } }, "property": { "type": "Identifier", - "start": 11853, - "end": 11859, + "start": 13841, + "end": 13847, "loc": { "start": { - "line": 307, + "line": 361, "column": 33 }, "end": { - "line": 307, + "line": 361, "column": 39 }, "identifierName": "viewer" @@ -27964,15 +27964,15 @@ }, "property": { "type": "Identifier", - "start": 11860, - "end": 11865, + "start": 13848, + "end": 13853, "loc": { "start": { - "line": 307, + "line": 361, "column": 40 }, "end": { - "line": 307, + "line": 361, "column": 45 }, "identifierName": "scene" @@ -27983,15 +27983,15 @@ }, "property": { "type": "Identifier", - "start": 11866, - "end": 11872, + "start": 13854, + "end": 13860, "loc": { "start": { - "line": 307, + "line": 361, "column": 46 }, "end": { - "line": 307, + "line": 361, "column": 52 }, "identifierName": "canvas" @@ -28002,15 +28002,15 @@ }, "property": { "type": "Identifier", - "start": 11873, - "end": 11880, + "start": 13861, + "end": 13868, "loc": { "start": { - "line": 307, + "line": 361, "column": 53 }, "end": { - "line": 307, + "line": 361, "column": 60 }, "identifierName": "spinner" @@ -28025,29 +28025,29 @@ }, { "type": "ExpressionStatement", - "start": 11894, - "end": 11914, + "start": 13882, + "end": 13902, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 32 } }, "expression": { "type": "UpdateExpression", - "start": 11894, - "end": 11913, + "start": 13882, + "end": 13901, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 31 } }, @@ -28055,29 +28055,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 11894, - "end": 11911, + "start": 13882, + "end": 13899, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 29 } }, "object": { "type": "Identifier", - "start": 11894, - "end": 11901, + "start": 13882, + "end": 13889, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 19 }, "identifierName": "spinner" @@ -28086,15 +28086,15 @@ }, "property": { "type": "Identifier", - "start": 11902, - "end": 11911, + "start": 13890, + "end": 13899, "loc": { "start": { - "line": 308, + "line": 362, "column": 20 }, "end": { - "line": 308, + "line": 362, "column": 29 }, "identifierName": "processes" @@ -28107,100 +28107,100 @@ }, { "type": "ExpressionStatement", - "start": 11927, - "end": 12202, + "start": 13915, + "end": 14190, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 315, + "line": 369, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 11927, - "end": 12201, + "start": 13915, + "end": 14189, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 315, + "line": 369, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 11927, - "end": 11989, + "start": 13915, + "end": 13977, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 74 } }, "object": { "type": "CallExpression", - "start": 11927, - "end": 11984, + "start": 13915, + "end": 13972, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 11927, - "end": 11943, + "start": 13915, + "end": 13931, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 11927, - "end": 11931, + "start": 13915, + "end": 13919, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 16 } } }, "property": { "type": "Identifier", - "start": 11932, - "end": 11943, + "start": 13920, + "end": 13931, "loc": { "start": { - "line": 309, + "line": 363, "column": 17 }, "end": { - "line": 309, + "line": 363, "column": 28 }, "identifierName": "_parseModel" @@ -28212,29 +28212,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 11944, - "end": 11954, + "start": 13932, + "end": 13942, "loc": { "start": { - "line": 309, + "line": 363, "column": 29 }, "end": { - "line": 309, + "line": 363, "column": 39 } }, "object": { "type": "Identifier", - "start": 11944, - "end": 11950, + "start": 13932, + "end": 13938, "loc": { "start": { - "line": 309, + "line": 363, "column": 29 }, "end": { - "line": 309, + "line": 363, "column": 35 }, "identifierName": "params" @@ -28243,15 +28243,15 @@ }, "property": { "type": "Identifier", - "start": 11951, - "end": 11954, + "start": 13939, + "end": 13942, "loc": { "start": { - "line": 309, + "line": 363, "column": 36 }, "end": { - "line": 309, + "line": 363, "column": 39 }, "identifierName": "las" @@ -28262,15 +28262,15 @@ }, { "type": "Identifier", - "start": 11956, - "end": 11962, + "start": 13944, + "end": 13950, "loc": { "start": { - "line": 309, + "line": 363, "column": 41 }, "end": { - "line": 309, + "line": 363, "column": 47 }, "identifierName": "params" @@ -28279,15 +28279,15 @@ }, { "type": "Identifier", - "start": 11964, - "end": 11971, + "start": 13952, + "end": 13959, "loc": { "start": { - "line": 309, + "line": 363, "column": 49 }, "end": { - "line": 309, + "line": 363, "column": 56 }, "identifierName": "options" @@ -28296,15 +28296,15 @@ }, { "type": "Identifier", - "start": 11973, - "end": 11983, + "start": 13961, + "end": 13971, "loc": { "start": { - "line": 309, + "line": 363, "column": 58 }, "end": { - "line": 309, + "line": 363, "column": 68 }, "identifierName": "sceneModel" @@ -28315,15 +28315,15 @@ }, "property": { "type": "Identifier", - "start": 11985, - "end": 11989, + "start": 13973, + "end": 13977, "loc": { "start": { - "line": 309, + "line": 363, "column": 70 }, "end": { - "line": 309, + "line": 363, "column": 74 }, "identifierName": "then" @@ -28335,15 +28335,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 11990, - "end": 12048, + "start": 13978, + "end": 14036, "loc": { "start": { - "line": 309, + "line": 363, "column": 75 }, "end": { - "line": 311, + "line": 365, "column": 13 } }, @@ -28354,44 +28354,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 11996, - "end": 12048, + "start": 13984, + "end": 14036, "loc": { "start": { - "line": 309, + "line": 363, "column": 81 }, "end": { - "line": 311, + "line": 365, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 12014, - "end": 12034, + "start": 14002, + "end": 14022, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 36 } }, "expression": { "type": "UpdateExpression", - "start": 12014, - "end": 12033, + "start": 14002, + "end": 14021, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 35 } }, @@ -28399,29 +28399,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12014, - "end": 12031, + "start": 14002, + "end": 14019, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 33 } }, "object": { "type": "Identifier", - "start": 12014, - "end": 12021, + "start": 14002, + "end": 14009, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 23 }, "identifierName": "spinner" @@ -28430,15 +28430,15 @@ }, "property": { "type": "Identifier", - "start": 12022, - "end": 12031, + "start": 14010, + "end": 14019, "loc": { "start": { - "line": 310, + "line": 364, "column": 24 }, "end": { - "line": 310, + "line": 364, "column": 33 }, "identifierName": "processes" @@ -28455,15 +28455,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 12050, - "end": 12200, + "start": 14038, + "end": 14188, "loc": { "start": { - "line": 311, + "line": 365, "column": 15 }, "end": { - "line": 315, + "line": 369, "column": 13 } }, @@ -28474,15 +28474,15 @@ "params": [ { "type": "Identifier", - "start": 12051, - "end": 12057, + "start": 14039, + "end": 14045, "loc": { "start": { - "line": 311, + "line": 365, "column": 16 }, "end": { - "line": 311, + "line": 365, "column": 22 }, "identifierName": "errMsg" @@ -28492,44 +28492,44 @@ ], "body": { "type": "BlockStatement", - "start": 12062, - "end": 12200, + "start": 14050, + "end": 14188, "loc": { "start": { - "line": 311, + "line": 365, "column": 27 }, "end": { - "line": 315, + "line": 369, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 12080, - "end": 12100, + "start": 14068, + "end": 14088, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 36 } }, "expression": { "type": "UpdateExpression", - "start": 12080, - "end": 12099, + "start": 14068, + "end": 14087, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 35 } }, @@ -28537,29 +28537,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12080, - "end": 12097, + "start": 14068, + "end": 14085, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 33 } }, "object": { "type": "Identifier", - "start": 12080, - "end": 12087, + "start": 14068, + "end": 14075, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 23 }, "identifierName": "spinner" @@ -28568,15 +28568,15 @@ }, "property": { "type": "Identifier", - "start": 12088, - "end": 12097, + "start": 14076, + "end": 14085, "loc": { "start": { - "line": 312, + "line": 366, "column": 24 }, "end": { - "line": 312, + "line": 366, "column": 33 }, "identifierName": "processes" @@ -28589,72 +28589,72 @@ }, { "type": "ExpressionStatement", - "start": 12117, - "end": 12136, + "start": 14105, + "end": 14124, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 12117, - "end": 12135, + "start": 14105, + "end": 14123, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 12117, - "end": 12127, + "start": 14105, + "end": 14115, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 12117, - "end": 12121, + "start": 14105, + "end": 14109, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 20 } } }, "property": { "type": "Identifier", - "start": 12122, - "end": 12127, + "start": 14110, + "end": 14115, "loc": { "start": { - "line": 313, + "line": 367, "column": 21 }, "end": { - "line": 313, + "line": 367, "column": 26 }, "identifierName": "error" @@ -28666,15 +28666,15 @@ "arguments": [ { "type": "Identifier", - "start": 12128, - "end": 12134, + "start": 14116, + "end": 14122, "loc": { "start": { - "line": 313, + "line": 367, "column": 27 }, "end": { - "line": 313, + "line": 367, "column": 33 }, "identifierName": "errMsg" @@ -28686,57 +28686,57 @@ }, { "type": "ExpressionStatement", - "start": 12153, - "end": 12186, + "start": 14141, + "end": 14174, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 49 } }, "expression": { "type": "CallExpression", - "start": 12153, - "end": 12185, + "start": 14141, + "end": 14173, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 12153, - "end": 12168, + "start": 14141, + "end": 14156, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 31 } }, "object": { "type": "Identifier", - "start": 12153, - "end": 12163, + "start": 14141, + "end": 14151, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 26 }, "identifierName": "sceneModel" @@ -28745,15 +28745,15 @@ }, "property": { "type": "Identifier", - "start": 12164, - "end": 12168, + "start": 14152, + "end": 14156, "loc": { "start": { - "line": 314, + "line": 368, "column": 27 }, "end": { - "line": 314, + "line": 368, "column": 31 }, "identifierName": "fire" @@ -28765,15 +28765,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 12169, - "end": 12176, + "start": 14157, + "end": 14164, "loc": { "start": { - "line": 314, + "line": 368, "column": 32 }, "end": { - "line": 314, + "line": 368, "column": 39 } }, @@ -28785,15 +28785,15 @@ }, { "type": "Identifier", - "start": 12178, - "end": 12184, + "start": 14166, + "end": 14172, "loc": { "start": { - "line": 314, + "line": 368, "column": 41 }, "end": { - "line": 314, + "line": 368, "column": 47 }, "identifierName": "errMsg" @@ -28816,29 +28816,29 @@ }, { "type": "ReturnStatement", - "start": 12222, - "end": 12240, + "start": 14210, + "end": 14228, "loc": { "start": { - "line": 318, + "line": 372, "column": 8 }, "end": { - "line": 318, + "line": 372, "column": 26 } }, "argument": { "type": "Identifier", - "start": 12229, - "end": 12239, + "start": 14217, + "end": 14227, "loc": { "start": { - "line": 318, + "line": 372, "column": 15 }, "end": { - "line": 318, + "line": 372, "column": 25 }, "identifierName": "sceneModel" @@ -28853,15 +28853,15 @@ { "type": "CommentBlock", "value": "*\n * Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.\n * @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Object} [params.stats] Collects model statistics.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n ", - "start": 9358, - "end": 10972, + "start": 11346, + "end": 12960, "loc": { "start": { - "line": 264, + "line": 318, "column": 4 }, "end": { - "line": 279, + "line": 333, "column": 7 } } @@ -28870,15 +28870,15 @@ }, { "type": "ClassMethod", - "start": 12252, - "end": 12951, + "start": 14240, + "end": 14939, "loc": { "start": { - "line": 321, + "line": 375, "column": 4 }, "end": { - "line": 338, + "line": 392, "column": 5 } }, @@ -28886,15 +28886,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 12252, - "end": 12262, + "start": 14240, + "end": 14250, "loc": { "start": { - "line": 321, + "line": 375, "column": 4 }, "end": { - "line": 321, + "line": 375, "column": 14 }, "identifierName": "_loadModel" @@ -28909,15 +28909,15 @@ "params": [ { "type": "Identifier", - "start": 12263, - "end": 12266, + "start": 14251, + "end": 14254, "loc": { "start": { - "line": 321, + "line": 375, "column": 15 }, "end": { - "line": 321, + "line": 375, "column": 18 }, "identifierName": "src" @@ -28926,15 +28926,15 @@ }, { "type": "Identifier", - "start": 12268, - "end": 12274, + "start": 14256, + "end": 14262, "loc": { "start": { - "line": 321, + "line": 375, "column": 20 }, "end": { - "line": 321, + "line": 375, "column": 26 }, "identifierName": "params" @@ -28943,15 +28943,15 @@ }, { "type": "Identifier", - "start": 12276, - "end": 12283, + "start": 14264, + "end": 14271, "loc": { "start": { - "line": 321, + "line": 375, "column": 28 }, "end": { - "line": 321, + "line": 375, "column": 35 }, "identifierName": "options" @@ -28960,15 +28960,15 @@ }, { "type": "Identifier", - "start": 12285, - "end": 12295, + "start": 14273, + "end": 14283, "loc": { "start": { - "line": 321, + "line": 375, "column": 37 }, "end": { - "line": 321, + "line": 375, "column": 47 }, "identifierName": "sceneModel" @@ -28978,59 +28978,59 @@ ], "body": { "type": "BlockStatement", - "start": 12297, - "end": 12951, + "start": 14285, + "end": 14939, "loc": { "start": { - "line": 321, + "line": 375, "column": 49 }, "end": { - "line": 338, + "line": 392, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 12307, - "end": 12356, + "start": 14295, + "end": 14344, "loc": { "start": { - "line": 322, + "line": 376, "column": 8 }, "end": { - "line": 322, + "line": 376, "column": 57 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 12313, - "end": 12355, + "start": 14301, + "end": 14343, "loc": { "start": { - "line": 322, + "line": 376, "column": 14 }, "end": { - "line": 322, + "line": 376, "column": 56 } }, "id": { "type": "Identifier", - "start": 12313, - "end": 12320, + "start": 14301, + "end": 14308, "loc": { "start": { - "line": 322, + "line": 376, "column": 14 }, "end": { - "line": 322, + "line": 376, "column": 21 }, "identifierName": "spinner" @@ -29039,86 +29039,86 @@ }, "init": { "type": "MemberExpression", - "start": 12323, - "end": 12355, + "start": 14311, + "end": 14343, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 12323, - "end": 12347, + "start": 14311, + "end": 14335, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 12323, - "end": 12340, + "start": 14311, + "end": 14328, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 12323, - "end": 12334, + "start": 14311, + "end": 14322, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 12323, - "end": 12327, + "start": 14311, + "end": 14315, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 28 } } }, "property": { "type": "Identifier", - "start": 12328, - "end": 12334, + "start": 14316, + "end": 14322, "loc": { "start": { - "line": 322, + "line": 376, "column": 29 }, "end": { - "line": 322, + "line": 376, "column": 35 }, "identifierName": "viewer" @@ -29129,15 +29129,15 @@ }, "property": { "type": "Identifier", - "start": 12335, - "end": 12340, + "start": 14323, + "end": 14328, "loc": { "start": { - "line": 322, + "line": 376, "column": 36 }, "end": { - "line": 322, + "line": 376, "column": 41 }, "identifierName": "scene" @@ -29148,15 +29148,15 @@ }, "property": { "type": "Identifier", - "start": 12341, - "end": 12347, + "start": 14329, + "end": 14335, "loc": { "start": { - "line": 322, + "line": 376, "column": 42 }, "end": { - "line": 322, + "line": 376, "column": 48 }, "identifierName": "canvas" @@ -29167,15 +29167,15 @@ }, "property": { "type": "Identifier", - "start": 12348, - "end": 12355, + "start": 14336, + "end": 14343, "loc": { "start": { - "line": 322, + "line": 376, "column": 49 }, "end": { - "line": 322, + "line": 376, "column": 56 }, "identifierName": "spinner" @@ -29190,29 +29190,29 @@ }, { "type": "ExpressionStatement", - "start": 12365, - "end": 12385, + "start": 14353, + "end": 14373, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 28 } }, "expression": { "type": "UpdateExpression", - "start": 12365, - "end": 12384, + "start": 14353, + "end": 14372, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 27 } }, @@ -29220,29 +29220,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12365, - "end": 12382, + "start": 14353, + "end": 14370, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 25 } }, "object": { "type": "Identifier", - "start": 12365, - "end": 12372, + "start": 14353, + "end": 14360, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 15 }, "identifierName": "spinner" @@ -29251,15 +29251,15 @@ }, "property": { "type": "Identifier", - "start": 12373, - "end": 12382, + "start": 14361, + "end": 14370, "loc": { "start": { - "line": 323, + "line": 377, "column": 16 }, "end": { - "line": 323, + "line": 377, "column": 25 }, "identifierName": "processes" @@ -29272,86 +29272,86 @@ }, { "type": "ExpressionStatement", - "start": 12394, - "end": 12945, + "start": 14382, + "end": 14933, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 337, + "line": 391, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 12394, - "end": 12944, + "start": 14382, + "end": 14932, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 337, + "line": 391, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 12394, - "end": 12417, + "start": 14382, + "end": 14405, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 324, + "line": 378, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 12394, - "end": 12410, + "start": 14382, + "end": 14398, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 324, + "line": 378, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 12394, - "end": 12398, + "start": 14382, + "end": 14386, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 324, + "line": 378, "column": 12 } } }, "property": { "type": "Identifier", - "start": 12399, - "end": 12410, + "start": 14387, + "end": 14398, "loc": { "start": { - "line": 324, + "line": 378, "column": 13 }, "end": { - "line": 324, + "line": 378, "column": 24 }, "identifierName": "_dataSource" @@ -29362,15 +29362,15 @@ }, "property": { "type": "Identifier", - "start": 12411, - "end": 12417, + "start": 14399, + "end": 14405, "loc": { "start": { - "line": 324, + "line": 378, "column": 25 }, "end": { - "line": 324, + "line": 378, "column": 31 }, "identifierName": "getLAS" @@ -29382,29 +29382,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 12418, - "end": 12428, + "start": 14406, + "end": 14416, "loc": { "start": { - "line": 324, + "line": 378, "column": 32 }, "end": { - "line": 324, + "line": 378, "column": 42 } }, "object": { "type": "Identifier", - "start": 12418, - "end": 12424, + "start": 14406, + "end": 14412, "loc": { "start": { - "line": 324, + "line": 378, "column": 32 }, "end": { - "line": 324, + "line": 378, "column": 38 }, "identifierName": "params" @@ -29413,15 +29413,15 @@ }, "property": { "type": "Identifier", - "start": 12425, - "end": 12428, + "start": 14413, + "end": 14416, "loc": { "start": { - "line": 324, + "line": 378, "column": 39 }, "end": { - "line": 324, + "line": 378, "column": 42 }, "identifierName": "src" @@ -29432,15 +29432,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 12430, - "end": 12779, + "start": 14418, + "end": 14767, "loc": { "start": { - "line": 324, + "line": 378, "column": 44 }, "end": { - "line": 332, + "line": 386, "column": 13 } }, @@ -29451,15 +29451,15 @@ "params": [ { "type": "Identifier", - "start": 12431, - "end": 12442, + "start": 14419, + "end": 14430, "loc": { "start": { - "line": 324, + "line": 378, "column": 45 }, "end": { - "line": 324, + "line": 378, "column": 56 }, "identifierName": "arrayBuffer" @@ -29469,115 +29469,115 @@ ], "body": { "type": "BlockStatement", - "start": 12447, - "end": 12779, + "start": 14435, + "end": 14767, "loc": { "start": { - "line": 324, + "line": 378, "column": 61 }, "end": { - "line": 332, + "line": 386, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 12465, - "end": 12765, + "start": 14453, + "end": 14753, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 331, + "line": 385, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 12465, - "end": 12764, + "start": 14453, + "end": 14752, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 331, + "line": 385, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 12465, - "end": 12528, + "start": 14453, + "end": 14516, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 79 } }, "object": { "type": "CallExpression", - "start": 12465, - "end": 12523, + "start": 14453, + "end": 14511, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 12465, - "end": 12481, + "start": 14453, + "end": 14469, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 12465, - "end": 12469, + "start": 14453, + "end": 14457, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 20 } } }, "property": { "type": "Identifier", - "start": 12470, - "end": 12481, + "start": 14458, + "end": 14469, "loc": { "start": { - "line": 325, + "line": 379, "column": 21 }, "end": { - "line": 325, + "line": 379, "column": 32 }, "identifierName": "_parseModel" @@ -29589,15 +29589,15 @@ "arguments": [ { "type": "Identifier", - "start": 12482, - "end": 12493, + "start": 14470, + "end": 14481, "loc": { "start": { - "line": 325, + "line": 379, "column": 33 }, "end": { - "line": 325, + "line": 379, "column": 44 }, "identifierName": "arrayBuffer" @@ -29606,15 +29606,15 @@ }, { "type": "Identifier", - "start": 12495, - "end": 12501, + "start": 14483, + "end": 14489, "loc": { "start": { - "line": 325, + "line": 379, "column": 46 }, "end": { - "line": 325, + "line": 379, "column": 52 }, "identifierName": "params" @@ -29623,15 +29623,15 @@ }, { "type": "Identifier", - "start": 12503, - "end": 12510, + "start": 14491, + "end": 14498, "loc": { "start": { - "line": 325, + "line": 379, "column": 54 }, "end": { - "line": 325, + "line": 379, "column": 61 }, "identifierName": "options" @@ -29640,15 +29640,15 @@ }, { "type": "Identifier", - "start": 12512, - "end": 12522, + "start": 14500, + "end": 14510, "loc": { "start": { - "line": 325, + "line": 379, "column": 63 }, "end": { - "line": 325, + "line": 379, "column": 73 }, "identifierName": "sceneModel" @@ -29659,15 +29659,15 @@ }, "property": { "type": "Identifier", - "start": 12524, - "end": 12528, + "start": 14512, + "end": 14516, "loc": { "start": { - "line": 325, + "line": 379, "column": 75 }, "end": { - "line": 325, + "line": 379, "column": 79 }, "identifierName": "then" @@ -29679,15 +29679,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 12529, - "end": 12595, + "start": 14517, + "end": 14583, "loc": { "start": { - "line": 325, + "line": 379, "column": 80 }, "end": { - "line": 327, + "line": 381, "column": 17 } }, @@ -29698,44 +29698,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12535, - "end": 12595, + "start": 14523, + "end": 14583, "loc": { "start": { - "line": 325, + "line": 379, "column": 86 }, "end": { - "line": 327, + "line": 381, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 12557, - "end": 12577, + "start": 14545, + "end": 14565, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 40 } }, "expression": { "type": "UpdateExpression", - "start": 12557, - "end": 12576, + "start": 14545, + "end": 14564, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 39 } }, @@ -29743,29 +29743,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12557, - "end": 12574, + "start": 14545, + "end": 14562, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 37 } }, "object": { "type": "Identifier", - "start": 12557, - "end": 12564, + "start": 14545, + "end": 14552, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 27 }, "identifierName": "spinner" @@ -29774,15 +29774,15 @@ }, "property": { "type": "Identifier", - "start": 12565, - "end": 12574, + "start": 14553, + "end": 14562, "loc": { "start": { - "line": 326, + "line": 380, "column": 28 }, "end": { - "line": 326, + "line": 380, "column": 37 }, "identifierName": "processes" @@ -29799,15 +29799,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 12597, - "end": 12763, + "start": 14585, + "end": 14751, "loc": { "start": { - "line": 327, + "line": 381, "column": 19 }, "end": { - "line": 331, + "line": 385, "column": 17 } }, @@ -29818,15 +29818,15 @@ "params": [ { "type": "Identifier", - "start": 12598, - "end": 12604, + "start": 14586, + "end": 14592, "loc": { "start": { - "line": 327, + "line": 381, "column": 20 }, "end": { - "line": 327, + "line": 381, "column": 26 }, "identifierName": "errMsg" @@ -29836,44 +29836,44 @@ ], "body": { "type": "BlockStatement", - "start": 12609, - "end": 12763, + "start": 14597, + "end": 14751, "loc": { "start": { - "line": 327, + "line": 381, "column": 31 }, "end": { - "line": 331, + "line": 385, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 12631, - "end": 12651, + "start": 14619, + "end": 14639, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 40 } }, "expression": { "type": "UpdateExpression", - "start": 12631, - "end": 12650, + "start": 14619, + "end": 14638, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 39 } }, @@ -29881,29 +29881,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12631, - "end": 12648, + "start": 14619, + "end": 14636, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 37 } }, "object": { "type": "Identifier", - "start": 12631, - "end": 12638, + "start": 14619, + "end": 14626, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 27 }, "identifierName": "spinner" @@ -29912,15 +29912,15 @@ }, "property": { "type": "Identifier", - "start": 12639, - "end": 12648, + "start": 14627, + "end": 14636, "loc": { "start": { - "line": 328, + "line": 382, "column": 28 }, "end": { - "line": 328, + "line": 382, "column": 37 }, "identifierName": "processes" @@ -29933,72 +29933,72 @@ }, { "type": "ExpressionStatement", - "start": 12672, - "end": 12691, + "start": 14660, + "end": 14679, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 39 } }, "expression": { "type": "CallExpression", - "start": 12672, - "end": 12690, + "start": 14660, + "end": 14678, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 38 } }, "callee": { "type": "MemberExpression", - "start": 12672, - "end": 12682, + "start": 14660, + "end": 14670, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 12672, - "end": 12676, + "start": 14660, + "end": 14664, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 24 } } }, "property": { "type": "Identifier", - "start": 12677, - "end": 12682, + "start": 14665, + "end": 14670, "loc": { "start": { - "line": 329, + "line": 383, "column": 25 }, "end": { - "line": 329, + "line": 383, "column": 30 }, "identifierName": "error" @@ -30010,15 +30010,15 @@ "arguments": [ { "type": "Identifier", - "start": 12683, - "end": 12689, + "start": 14671, + "end": 14677, "loc": { "start": { - "line": 329, + "line": 383, "column": 31 }, "end": { - "line": 329, + "line": 383, "column": 37 }, "identifierName": "errMsg" @@ -30030,57 +30030,57 @@ }, { "type": "ExpressionStatement", - "start": 12712, - "end": 12745, + "start": 14700, + "end": 14733, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 53 } }, "expression": { "type": "CallExpression", - "start": 12712, - "end": 12744, + "start": 14700, + "end": 14732, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 52 } }, "callee": { "type": "MemberExpression", - "start": 12712, - "end": 12727, + "start": 14700, + "end": 14715, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 35 } }, "object": { "type": "Identifier", - "start": 12712, - "end": 12722, + "start": 14700, + "end": 14710, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 30 }, "identifierName": "sceneModel" @@ -30089,15 +30089,15 @@ }, "property": { "type": "Identifier", - "start": 12723, - "end": 12727, + "start": 14711, + "end": 14715, "loc": { "start": { - "line": 330, + "line": 384, "column": 31 }, "end": { - "line": 330, + "line": 384, "column": 35 }, "identifierName": "fire" @@ -30109,15 +30109,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 12728, - "end": 12735, + "start": 14716, + "end": 14723, "loc": { "start": { - "line": 330, + "line": 384, "column": 36 }, "end": { - "line": 330, + "line": 384, "column": 43 } }, @@ -30129,15 +30129,15 @@ }, { "type": "Identifier", - "start": 12737, - "end": 12743, + "start": 14725, + "end": 14731, "loc": { "start": { - "line": 330, + "line": 384, "column": 45 }, "end": { - "line": 330, + "line": 384, "column": 51 }, "identifierName": "errMsg" @@ -30160,15 +30160,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 12793, - "end": 12943, + "start": 14781, + "end": 14931, "loc": { "start": { - "line": 333, + "line": 387, "column": 12 }, "end": { - "line": 337, + "line": 391, "column": 13 } }, @@ -30179,15 +30179,15 @@ "params": [ { "type": "Identifier", - "start": 12794, - "end": 12800, + "start": 14782, + "end": 14788, "loc": { "start": { - "line": 333, + "line": 387, "column": 13 }, "end": { - "line": 333, + "line": 387, "column": 19 }, "identifierName": "errMsg" @@ -30197,44 +30197,44 @@ ], "body": { "type": "BlockStatement", - "start": 12805, - "end": 12943, + "start": 14793, + "end": 14931, "loc": { "start": { - "line": 333, + "line": 387, "column": 24 }, "end": { - "line": 337, + "line": 391, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 12823, - "end": 12843, + "start": 14811, + "end": 14831, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 36 } }, "expression": { "type": "UpdateExpression", - "start": 12823, - "end": 12842, + "start": 14811, + "end": 14830, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 35 } }, @@ -30242,29 +30242,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 12823, - "end": 12840, + "start": 14811, + "end": 14828, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 33 } }, "object": { "type": "Identifier", - "start": 12823, - "end": 12830, + "start": 14811, + "end": 14818, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 23 }, "identifierName": "spinner" @@ -30273,15 +30273,15 @@ }, "property": { "type": "Identifier", - "start": 12831, - "end": 12840, + "start": 14819, + "end": 14828, "loc": { "start": { - "line": 334, + "line": 388, "column": 24 }, "end": { - "line": 334, + "line": 388, "column": 33 }, "identifierName": "processes" @@ -30294,72 +30294,72 @@ }, { "type": "ExpressionStatement", - "start": 12860, - "end": 12879, + "start": 14848, + "end": 14867, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 12860, - "end": 12878, + "start": 14848, + "end": 14866, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 12860, - "end": 12870, + "start": 14848, + "end": 14858, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 12860, - "end": 12864, + "start": 14848, + "end": 14852, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 20 } } }, "property": { "type": "Identifier", - "start": 12865, - "end": 12870, + "start": 14853, + "end": 14858, "loc": { "start": { - "line": 335, + "line": 389, "column": 21 }, "end": { - "line": 335, + "line": 389, "column": 26 }, "identifierName": "error" @@ -30371,15 +30371,15 @@ "arguments": [ { "type": "Identifier", - "start": 12871, - "end": 12877, + "start": 14859, + "end": 14865, "loc": { "start": { - "line": 335, + "line": 389, "column": 27 }, "end": { - "line": 335, + "line": 389, "column": 33 }, "identifierName": "errMsg" @@ -30391,57 +30391,57 @@ }, { "type": "ExpressionStatement", - "start": 12896, - "end": 12929, + "start": 14884, + "end": 14917, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 49 } }, "expression": { "type": "CallExpression", - "start": 12896, - "end": 12928, + "start": 14884, + "end": 14916, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 12896, - "end": 12911, + "start": 14884, + "end": 14899, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 31 } }, "object": { "type": "Identifier", - "start": 12896, - "end": 12906, + "start": 14884, + "end": 14894, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 26 }, "identifierName": "sceneModel" @@ -30450,15 +30450,15 @@ }, "property": { "type": "Identifier", - "start": 12907, - "end": 12911, + "start": 14895, + "end": 14899, "loc": { "start": { - "line": 336, + "line": 390, "column": 27 }, "end": { - "line": 336, + "line": 390, "column": 31 }, "identifierName": "fire" @@ -30470,15 +30470,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 12912, - "end": 12919, + "start": 14900, + "end": 14907, "loc": { "start": { - "line": 336, + "line": 390, "column": 32 }, "end": { - "line": 336, + "line": 390, "column": 39 } }, @@ -30490,15 +30490,15 @@ }, { "type": "Identifier", - "start": 12921, - "end": 12927, + "start": 14909, + "end": 14915, "loc": { "start": { - "line": 336, + "line": 390, "column": 41 }, "end": { - "line": 336, + "line": 390, "column": 47 }, "identifierName": "errMsg" @@ -30521,15 +30521,15 @@ }, { "type": "ClassMethod", - "start": 12957, - "end": 22356, + "start": 14945, + "end": 24344, "loc": { "start": { - "line": 340, + "line": 394, "column": 4 }, "end": { - "line": 552, + "line": 606, "column": 5 } }, @@ -30537,15 +30537,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 12957, - "end": 12968, + "start": 14945, + "end": 14956, "loc": { "start": { - "line": 340, + "line": 394, "column": 4 }, "end": { - "line": 340, + "line": 394, "column": 15 }, "identifierName": "_parseModel" @@ -30560,15 +30560,15 @@ "params": [ { "type": "Identifier", - "start": 12969, - "end": 12980, + "start": 14957, + "end": 14968, "loc": { "start": { - "line": 340, + "line": 394, "column": 16 }, "end": { - "line": 340, + "line": 394, "column": 27 }, "identifierName": "arrayBuffer" @@ -30577,15 +30577,15 @@ }, { "type": "Identifier", - "start": 12982, - "end": 12988, + "start": 14970, + "end": 14976, "loc": { "start": { - "line": 340, + "line": 394, "column": 29 }, "end": { - "line": 340, + "line": 394, "column": 35 }, "identifierName": "params" @@ -30594,15 +30594,15 @@ }, { "type": "Identifier", - "start": 12990, - "end": 12997, + "start": 14978, + "end": 14985, "loc": { "start": { - "line": 340, + "line": 394, "column": 37 }, "end": { - "line": 340, + "line": 394, "column": 44 }, "identifierName": "options" @@ -30611,15 +30611,15 @@ }, { "type": "Identifier", - "start": 12999, - "end": 13009, + "start": 14987, + "end": 14997, "loc": { "start": { - "line": 340, + "line": 394, "column": 46 }, "end": { - "line": 340, + "line": 394, "column": 56 }, "identifierName": "sceneModel" @@ -30629,44 +30629,44 @@ ], "body": { "type": "BlockStatement", - "start": 13011, - "end": 22356, + "start": 14999, + "end": 24344, "loc": { "start": { - "line": 340, + "line": 394, "column": 58 }, "end": { - "line": 552, + "line": 606, "column": 5 } }, "body": [ { "type": "FunctionDeclaration", - "start": 13022, - "end": 13567, + "start": 15010, + "end": 15555, "loc": { "start": { - "line": 342, + "line": 396, "column": 8 }, "end": { - "line": 354, + "line": 408, "column": 9 } }, "id": { "type": "Identifier", - "start": 13031, - "end": 13044, + "start": 15019, + "end": 15032, "loc": { "start": { - "line": 342, + "line": 396, "column": 17 }, "end": { - "line": 342, + "line": 396, "column": 30 }, "identifierName": "readPositions" @@ -30679,15 +30679,15 @@ "params": [ { "type": "Identifier", - "start": 13045, - "end": 13063, + "start": 15033, + "end": 15051, "loc": { "start": { - "line": 342, + "line": 396, "column": 31 }, "end": { - "line": 342, + "line": 396, "column": 49 }, "identifierName": "attributesPosition" @@ -30697,59 +30697,59 @@ ], "body": { "type": "BlockStatement", - "start": 13065, - "end": 13567, + "start": 15053, + "end": 15555, "loc": { "start": { - "line": 342, + "line": 396, "column": 51 }, "end": { - "line": 354, + "line": 408, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 13079, - "end": 13127, + "start": 15067, + "end": 15115, "loc": { "start": { - "line": 343, + "line": 397, "column": 12 }, "end": { - "line": 343, + "line": 397, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13085, - "end": 13126, + "start": 15073, + "end": 15114, "loc": { "start": { - "line": 343, + "line": 397, "column": 18 }, "end": { - "line": 343, + "line": 397, "column": 59 } }, "id": { "type": "Identifier", - "start": 13085, - "end": 13099, + "start": 15073, + "end": 15087, "loc": { "start": { - "line": 343, + "line": 397, "column": 18 }, "end": { - "line": 343, + "line": 397, "column": 32 }, "identifierName": "positionsValue" @@ -30758,29 +30758,29 @@ }, "init": { "type": "MemberExpression", - "start": 13102, - "end": 13126, + "start": 15090, + "end": 15114, "loc": { "start": { - "line": 343, + "line": 397, "column": 35 }, "end": { - "line": 343, + "line": 397, "column": 59 } }, "object": { "type": "Identifier", - "start": 13102, - "end": 13120, + "start": 15090, + "end": 15108, "loc": { "start": { - "line": 343, + "line": 397, "column": 35 }, "end": { - "line": 343, + "line": 397, "column": 53 }, "identifierName": "attributesPosition" @@ -30789,15 +30789,15 @@ }, "property": { "type": "Identifier", - "start": 13121, - "end": 13126, + "start": 15109, + "end": 15114, "loc": { "start": { - "line": 343, + "line": 397, "column": 54 }, "end": { - "line": 343, + "line": 397, "column": 59 }, "identifierName": "value" @@ -30812,43 +30812,43 @@ }, { "type": "IfStatement", - "start": 13140, - "end": 13522, + "start": 15128, + "end": 15510, "loc": { "start": { - "line": 344, + "line": 398, "column": 12 }, "end": { - "line": 352, + "line": 406, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 13144, - "end": 13158, + "start": 15132, + "end": 15146, "loc": { "start": { - "line": 344, + "line": 398, "column": 16 }, "end": { - "line": 344, + "line": 398, "column": 30 } }, "object": { "type": "Identifier", - "start": 13144, - "end": 13150, + "start": 15132, + "end": 15138, "loc": { "start": { - "line": 344, + "line": 398, "column": 16 }, "end": { - "line": 344, + "line": 398, "column": 22 }, "identifierName": "params" @@ -30857,15 +30857,15 @@ }, "property": { "type": "Identifier", - "start": 13151, - "end": 13158, + "start": 15139, + "end": 15146, "loc": { "start": { - "line": 344, + "line": 398, "column": 23 }, "end": { - "line": 344, + "line": 398, "column": 30 }, "identifierName": "rotateX" @@ -30876,44 +30876,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 13160, - "end": 13522, + "start": 15148, + "end": 15510, "loc": { "start": { - "line": 344, + "line": 398, "column": 32 }, "end": { - "line": 352, + "line": 406, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 13178, - "end": 13508, + "start": 15166, + "end": 15496, "loc": { "start": { - "line": 345, + "line": 399, "column": 16 }, "end": { - "line": 351, + "line": 405, "column": 17 } }, "test": { "type": "Identifier", - "start": 13182, - "end": 13196, + "start": 15170, + "end": 15184, "loc": { "start": { - "line": 345, + "line": 399, "column": 20 }, "end": { - "line": 345, + "line": 399, "column": 34 }, "identifierName": "positionsValue" @@ -30922,73 +30922,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 13198, - "end": 13508, + "start": 15186, + "end": 15496, "loc": { "start": { - "line": 345, + "line": 399, "column": 36 }, "end": { - "line": 351, + "line": 405, "column": 17 } }, "body": [ { "type": "ForStatement", - "start": 13220, - "end": 13490, + "start": 15208, + "end": 15478, "loc": { "start": { - "line": 346, + "line": 400, "column": 20 }, "end": { - "line": 350, + "line": 404, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 13225, - "end": 13263, + "start": 15213, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 25 }, "end": { - "line": 346, + "line": 400, "column": 63 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13229, - "end": 13234, + "start": 15217, + "end": 15222, "loc": { "start": { - "line": 346, + "line": 400, "column": 29 }, "end": { - "line": 346, + "line": 400, "column": 34 } }, "id": { "type": "Identifier", - "start": 13229, - "end": 13230, + "start": 15217, + "end": 15218, "loc": { "start": { - "line": 346, + "line": 400, "column": 29 }, "end": { - "line": 346, + "line": 400, "column": 30 }, "identifierName": "i" @@ -30997,15 +30997,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13233, - "end": 13234, + "start": 15221, + "end": 15222, "loc": { "start": { - "line": 346, + "line": 400, "column": 33 }, "end": { - "line": 346, + "line": 400, "column": 34 } }, @@ -31018,29 +31018,29 @@ }, { "type": "VariableDeclarator", - "start": 13236, - "end": 13263, + "start": 15224, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 36 }, "end": { - "line": 346, + "line": 400, "column": 63 } }, "id": { "type": "Identifier", - "start": 13236, - "end": 13239, + "start": 15224, + "end": 15227, "loc": { "start": { - "line": 346, + "line": 400, "column": 36 }, "end": { - "line": 346, + "line": 400, "column": 39 }, "identifierName": "len" @@ -31049,29 +31049,29 @@ }, "init": { "type": "MemberExpression", - "start": 13242, - "end": 13263, + "start": 15230, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 42 }, "end": { - "line": 346, + "line": 400, "column": 63 } }, "object": { "type": "Identifier", - "start": 13242, - "end": 13256, + "start": 15230, + "end": 15244, "loc": { "start": { - "line": 346, + "line": 400, "column": 42 }, "end": { - "line": 346, + "line": 400, "column": 56 }, "identifierName": "positionsValue" @@ -31080,15 +31080,15 @@ }, "property": { "type": "Identifier", - "start": 13257, - "end": 13263, + "start": 15245, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 57 }, "end": { - "line": 346, + "line": 400, "column": 63 }, "identifierName": "length" @@ -31103,29 +31103,29 @@ }, "test": { "type": "BinaryExpression", - "start": 13265, - "end": 13272, + "start": 15253, + "end": 15260, "loc": { "start": { - "line": 346, + "line": 400, "column": 65 }, "end": { - "line": 346, + "line": 400, "column": 72 } }, "left": { "type": "Identifier", - "start": 13265, - "end": 13266, + "start": 15253, + "end": 15254, "loc": { "start": { - "line": 346, + "line": 400, "column": 65 }, "end": { - "line": 346, + "line": 400, "column": 66 }, "identifierName": "i" @@ -31135,15 +31135,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 13269, - "end": 13272, + "start": 15257, + "end": 15260, "loc": { "start": { - "line": 346, + "line": 400, "column": 69 }, "end": { - "line": 346, + "line": 400, "column": 72 }, "identifierName": "len" @@ -31153,30 +31153,30 @@ }, "update": { "type": "AssignmentExpression", - "start": 13274, - "end": 13280, + "start": 15262, + "end": 15268, "loc": { "start": { - "line": 346, + "line": 400, "column": 74 }, "end": { - "line": 346, + "line": 400, "column": 80 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 13274, - "end": 13275, + "start": 15262, + "end": 15263, "loc": { "start": { - "line": 346, + "line": 400, "column": 74 }, "end": { - "line": 346, + "line": 400, "column": 75 }, "identifierName": "i" @@ -31185,15 +31185,15 @@ }, "right": { "type": "NumericLiteral", - "start": 13279, - "end": 13280, + "start": 15267, + "end": 15268, "loc": { "start": { - "line": 346, + "line": 400, "column": 79 }, "end": { - "line": 346, + "line": 400, "column": 80 } }, @@ -31206,59 +31206,59 @@ }, "body": { "type": "BlockStatement", - "start": 13282, - "end": 13490, + "start": 15270, + "end": 15478, "loc": { "start": { - "line": 346, + "line": 400, "column": 82 }, "end": { - "line": 350, + "line": 404, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 13308, - "end": 13343, + "start": 15296, + "end": 15331, "loc": { "start": { - "line": 347, + "line": 401, "column": 24 }, "end": { - "line": 347, + "line": 401, "column": 59 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13314, - "end": 13342, + "start": 15302, + "end": 15330, "loc": { "start": { - "line": 347, + "line": 401, "column": 30 }, "end": { - "line": 347, + "line": 401, "column": 58 } }, "id": { "type": "Identifier", - "start": 13314, - "end": 13318, + "start": 15302, + "end": 15306, "loc": { "start": { - "line": 347, + "line": 401, "column": 30 }, "end": { - "line": 347, + "line": 401, "column": 34 }, "identifierName": "temp" @@ -31267,29 +31267,29 @@ }, "init": { "type": "MemberExpression", - "start": 13321, - "end": 13342, + "start": 15309, + "end": 15330, "loc": { "start": { - "line": 347, + "line": 401, "column": 37 }, "end": { - "line": 347, + "line": 401, "column": 58 } }, "object": { "type": "Identifier", - "start": 13321, - "end": 13335, + "start": 15309, + "end": 15323, "loc": { "start": { - "line": 347, + "line": 401, "column": 37 }, "end": { - "line": 347, + "line": 401, "column": 51 }, "identifierName": "positionsValue" @@ -31298,29 +31298,29 @@ }, "property": { "type": "BinaryExpression", - "start": 13336, - "end": 13341, + "start": 15324, + "end": 15329, "loc": { "start": { - "line": 347, + "line": 401, "column": 52 }, "end": { - "line": 347, + "line": 401, "column": 57 } }, "left": { "type": "Identifier", - "start": 13336, - "end": 13337, + "start": 15324, + "end": 15325, "loc": { "start": { - "line": 347, + "line": 401, "column": 52 }, "end": { - "line": 347, + "line": 401, "column": 53 }, "identifierName": "i" @@ -31330,15 +31330,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 13340, - "end": 13341, + "start": 15328, + "end": 15329, "loc": { "start": { - "line": 347, + "line": 401, "column": 56 }, "end": { - "line": 347, + "line": 401, "column": 57 } }, @@ -31357,58 +31357,58 @@ }, { "type": "ExpressionStatement", - "start": 13368, - "end": 13414, + "start": 15356, + "end": 15402, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 13368, - "end": 13413, + "start": 15356, + "end": 15401, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 69 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 13368, - "end": 13389, + "start": 15356, + "end": 15377, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 45 } }, "object": { "type": "Identifier", - "start": 13368, - "end": 13382, + "start": 15356, + "end": 15370, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 38 }, "identifierName": "positionsValue" @@ -31417,29 +31417,29 @@ }, "property": { "type": "BinaryExpression", - "start": 13383, - "end": 13388, + "start": 15371, + "end": 15376, "loc": { "start": { - "line": 348, + "line": 402, "column": 39 }, "end": { - "line": 348, + "line": 402, "column": 44 } }, "left": { "type": "Identifier", - "start": 13383, - "end": 13384, + "start": 15371, + "end": 15372, "loc": { "start": { - "line": 348, + "line": 402, "column": 39 }, "end": { - "line": 348, + "line": 402, "column": 40 }, "identifierName": "i" @@ -31449,15 +31449,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 13387, - "end": 13388, + "start": 15375, + "end": 15376, "loc": { "start": { - "line": 348, + "line": 402, "column": 43 }, "end": { - "line": 348, + "line": 402, "column": 44 } }, @@ -31472,29 +31472,29 @@ }, "right": { "type": "MemberExpression", - "start": 13392, - "end": 13413, + "start": 15380, + "end": 15401, "loc": { "start": { - "line": 348, + "line": 402, "column": 48 }, "end": { - "line": 348, + "line": 402, "column": 69 } }, "object": { "type": "Identifier", - "start": 13392, - "end": 13406, + "start": 15380, + "end": 15394, "loc": { "start": { - "line": 348, + "line": 402, "column": 48 }, "end": { - "line": 348, + "line": 402, "column": 62 }, "identifierName": "positionsValue" @@ -31503,29 +31503,29 @@ }, "property": { "type": "BinaryExpression", - "start": 13407, - "end": 13412, + "start": 15395, + "end": 15400, "loc": { "start": { - "line": 348, + "line": 402, "column": 63 }, "end": { - "line": 348, + "line": 402, "column": 68 } }, "left": { "type": "Identifier", - "start": 13407, - "end": 13408, + "start": 15395, + "end": 15396, "loc": { "start": { - "line": 348, + "line": 402, "column": 63 }, "end": { - "line": 348, + "line": 402, "column": 64 }, "identifierName": "i" @@ -31535,15 +31535,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 13411, - "end": 13412, + "start": 15399, + "end": 15400, "loc": { "start": { - "line": 348, + "line": 402, "column": 67 }, "end": { - "line": 348, + "line": 402, "column": 68 } }, @@ -31560,58 +31560,58 @@ }, { "type": "ExpressionStatement", - "start": 13439, - "end": 13468, + "start": 15427, + "end": 15456, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 13439, - "end": 13467, + "start": 15427, + "end": 15455, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 13439, - "end": 13460, + "start": 15427, + "end": 15448, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 45 } }, "object": { "type": "Identifier", - "start": 13439, - "end": 13453, + "start": 15427, + "end": 15441, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 38 }, "identifierName": "positionsValue" @@ -31620,29 +31620,29 @@ }, "property": { "type": "BinaryExpression", - "start": 13454, - "end": 13459, + "start": 15442, + "end": 15447, "loc": { "start": { - "line": 349, + "line": 403, "column": 39 }, "end": { - "line": 349, + "line": 403, "column": 44 } }, "left": { "type": "Identifier", - "start": 13454, - "end": 13455, + "start": 15442, + "end": 15443, "loc": { "start": { - "line": 349, + "line": 403, "column": 39 }, "end": { - "line": 349, + "line": 403, "column": 40 }, "identifierName": "i" @@ -31652,15 +31652,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 13458, - "end": 13459, + "start": 15446, + "end": 15447, "loc": { "start": { - "line": 349, + "line": 403, "column": 43 }, "end": { - "line": 349, + "line": 403, "column": 44 } }, @@ -31675,15 +31675,15 @@ }, "right": { "type": "Identifier", - "start": 13463, - "end": 13467, + "start": 15451, + "end": 15455, "loc": { "start": { - "line": 349, + "line": 403, "column": 48 }, "end": { - "line": 349, + "line": 403, "column": 52 }, "identifierName": "temp" @@ -31708,29 +31708,29 @@ }, { "type": "ReturnStatement", - "start": 13535, - "end": 13557, + "start": 15523, + "end": 15545, "loc": { "start": { - "line": 353, + "line": 407, "column": 12 }, "end": { - "line": 353, + "line": 407, "column": 34 } }, "argument": { "type": "Identifier", - "start": 13542, - "end": 13556, + "start": 15530, + "end": 15544, "loc": { "start": { - "line": 353, + "line": 407, "column": 19 }, "end": { - "line": 353, + "line": 407, "column": 33 }, "identifierName": "positionsValue" @@ -31744,29 +31744,29 @@ }, { "type": "FunctionDeclaration", - "start": 13577, - "end": 14377, + "start": 15565, + "end": 16365, "loc": { "start": { - "line": 356, + "line": 410, "column": 8 }, "end": { - "line": 369, + "line": 423, "column": 9 } }, "id": { "type": "Identifier", - "start": 13586, - "end": 13610, + "start": 15574, + "end": 15598, "loc": { "start": { - "line": 356, + "line": 410, "column": 17 }, "end": { - "line": 356, + "line": 410, "column": 41 }, "identifierName": "readColorsAndIntensities" @@ -31779,15 +31779,15 @@ "params": [ { "type": "Identifier", - "start": 13611, - "end": 13626, + "start": 15599, + "end": 15614, "loc": { "start": { - "line": 356, + "line": 410, "column": 42 }, "end": { - "line": 356, + "line": 410, "column": 57 }, "identifierName": "attributesColor" @@ -31796,15 +31796,15 @@ }, { "type": "Identifier", - "start": 13628, - "end": 13647, + "start": 15616, + "end": 15635, "loc": { "start": { - "line": 356, + "line": 410, "column": 59 }, "end": { - "line": 356, + "line": 410, "column": 78 }, "identifierName": "attributesIntensity" @@ -31814,59 +31814,59 @@ ], "body": { "type": "BlockStatement", - "start": 13649, - "end": 14377, + "start": 15637, + "end": 16365, "loc": { "start": { - "line": 356, + "line": 410, "column": 80 }, "end": { - "line": 369, + "line": 423, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 13663, - "end": 13700, + "start": 15651, + "end": 15688, "loc": { "start": { - "line": 357, + "line": 411, "column": 12 }, "end": { - "line": 357, + "line": 411, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13669, - "end": 13699, + "start": 15657, + "end": 15687, "loc": { "start": { - "line": 357, + "line": 411, "column": 18 }, "end": { - "line": 357, + "line": 411, "column": 48 } }, "id": { "type": "Identifier", - "start": 13669, - "end": 13675, + "start": 15657, + "end": 15663, "loc": { "start": { - "line": 357, + "line": 411, "column": 18 }, "end": { - "line": 357, + "line": 411, "column": 24 }, "identifierName": "colors" @@ -31875,29 +31875,29 @@ }, "init": { "type": "MemberExpression", - "start": 13678, - "end": 13699, + "start": 15666, + "end": 15687, "loc": { "start": { - "line": 357, + "line": 411, "column": 27 }, "end": { - "line": 357, + "line": 411, "column": 48 } }, "object": { "type": "Identifier", - "start": 13678, - "end": 13693, + "start": 15666, + "end": 15681, "loc": { "start": { - "line": 357, + "line": 411, "column": 27 }, "end": { - "line": 357, + "line": 411, "column": 42 }, "identifierName": "attributesColor" @@ -31906,15 +31906,15 @@ }, "property": { "type": "Identifier", - "start": 13694, - "end": 13699, + "start": 15682, + "end": 15687, "loc": { "start": { - "line": 357, + "line": 411, "column": 43 }, "end": { - "line": 357, + "line": 411, "column": 48 }, "identifierName": "value" @@ -31929,44 +31929,44 @@ }, { "type": "VariableDeclaration", - "start": 13713, - "end": 13752, + "start": 15701, + "end": 15740, "loc": { "start": { - "line": 358, + "line": 412, "column": 12 }, "end": { - "line": 358, + "line": 412, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13719, - "end": 13751, + "start": 15707, + "end": 15739, "loc": { "start": { - "line": 358, + "line": 412, "column": 18 }, "end": { - "line": 358, + "line": 412, "column": 50 } }, "id": { "type": "Identifier", - "start": 13719, - "end": 13728, + "start": 15707, + "end": 15716, "loc": { "start": { - "line": 358, + "line": 412, "column": 18 }, "end": { - "line": 358, + "line": 412, "column": 27 }, "identifierName": "colorSize" @@ -31975,29 +31975,29 @@ }, "init": { "type": "MemberExpression", - "start": 13731, - "end": 13751, + "start": 15719, + "end": 15739, "loc": { "start": { - "line": 358, + "line": 412, "column": 30 }, "end": { - "line": 358, + "line": 412, "column": 50 } }, "object": { "type": "Identifier", - "start": 13731, - "end": 13746, + "start": 15719, + "end": 15734, "loc": { "start": { - "line": 358, + "line": 412, "column": 30 }, "end": { - "line": 358, + "line": 412, "column": 45 }, "identifierName": "attributesColor" @@ -32006,15 +32006,15 @@ }, "property": { "type": "Identifier", - "start": 13747, - "end": 13751, + "start": 15735, + "end": 15739, "loc": { "start": { - "line": 358, + "line": 412, "column": 46 }, "end": { - "line": 358, + "line": 412, "column": 50 }, "identifierName": "size" @@ -32029,44 +32029,44 @@ }, { "type": "VariableDeclaration", - "start": 13765, - "end": 13811, + "start": 15753, + "end": 15799, "loc": { "start": { - "line": 359, + "line": 413, "column": 12 }, "end": { - "line": 359, + "line": 413, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13771, - "end": 13810, + "start": 15759, + "end": 15798, "loc": { "start": { - "line": 359, + "line": 413, "column": 18 }, "end": { - "line": 359, + "line": 413, "column": 57 } }, "id": { "type": "Identifier", - "start": 13771, - "end": 13782, + "start": 15759, + "end": 15770, "loc": { "start": { - "line": 359, + "line": 413, "column": 18 }, "end": { - "line": 359, + "line": 413, "column": 29 }, "identifierName": "intensities" @@ -32075,29 +32075,29 @@ }, "init": { "type": "MemberExpression", - "start": 13785, - "end": 13810, + "start": 15773, + "end": 15798, "loc": { "start": { - "line": 359, + "line": 413, "column": 32 }, "end": { - "line": 359, + "line": 413, "column": 57 } }, "object": { "type": "Identifier", - "start": 13785, - "end": 13804, + "start": 15773, + "end": 15792, "loc": { "start": { - "line": 359, + "line": 413, "column": 32 }, "end": { - "line": 359, + "line": 413, "column": 51 }, "identifierName": "attributesIntensity" @@ -32106,15 +32106,15 @@ }, "property": { "type": "Identifier", - "start": 13805, - "end": 13810, + "start": 15793, + "end": 15798, "loc": { "start": { - "line": 359, + "line": 413, "column": 52 }, "end": { - "line": 359, + "line": 413, "column": 57 }, "identifierName": "value" @@ -32129,44 +32129,44 @@ }, { "type": "VariableDeclaration", - "start": 13824, - "end": 13876, + "start": 15812, + "end": 15864, "loc": { "start": { - "line": 360, + "line": 414, "column": 12 }, "end": { - "line": 360, + "line": 414, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13830, - "end": 13875, + "start": 15818, + "end": 15863, "loc": { "start": { - "line": 360, + "line": 414, "column": 18 }, "end": { - "line": 360, + "line": 414, "column": 63 } }, "id": { "type": "Identifier", - "start": 13830, - "end": 13850, + "start": 15818, + "end": 15838, "loc": { "start": { - "line": 360, + "line": 414, "column": 18 }, "end": { - "line": 360, + "line": 414, "column": 38 }, "identifierName": "colorsCompressedSize" @@ -32175,43 +32175,43 @@ }, "init": { "type": "BinaryExpression", - "start": 13853, - "end": 13875, + "start": 15841, + "end": 15863, "loc": { "start": { - "line": 360, + "line": 414, "column": 41 }, "end": { - "line": 360, + "line": 414, "column": 63 } }, "left": { "type": "MemberExpression", - "start": 13853, - "end": 13871, + "start": 15841, + "end": 15859, "loc": { "start": { - "line": 360, + "line": 414, "column": 41 }, "end": { - "line": 360, + "line": 414, "column": 59 } }, "object": { "type": "Identifier", - "start": 13853, - "end": 13864, + "start": 15841, + "end": 15852, "loc": { "start": { - "line": 360, + "line": 414, "column": 41 }, "end": { - "line": 360, + "line": 414, "column": 52 }, "identifierName": "intensities" @@ -32220,15 +32220,15 @@ }, "property": { "type": "Identifier", - "start": 13865, - "end": 13871, + "start": 15853, + "end": 15859, "loc": { "start": { - "line": 360, + "line": 414, "column": 53 }, "end": { - "line": 360, + "line": 414, "column": 59 }, "identifierName": "length" @@ -32240,15 +32240,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 13874, - "end": 13875, + "start": 15862, + "end": 15863, "loc": { "start": { - "line": 360, + "line": 414, "column": 62 }, "end": { - "line": 360, + "line": 414, "column": 63 } }, @@ -32265,44 +32265,44 @@ }, { "type": "VariableDeclaration", - "start": 13889, - "end": 13951, + "start": 15877, + "end": 15939, "loc": { "start": { - "line": 361, + "line": 415, "column": 12 }, "end": { - "line": 361, + "line": 415, "column": 74 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13895, - "end": 13950, + "start": 15883, + "end": 15938, "loc": { "start": { - "line": 361, + "line": 415, "column": 18 }, "end": { - "line": 361, + "line": 415, "column": 73 } }, "id": { "type": "Identifier", - "start": 13895, - "end": 13911, + "start": 15883, + "end": 15899, "loc": { "start": { - "line": 361, + "line": 415, "column": 18 }, "end": { - "line": 361, + "line": 415, "column": 34 }, "identifierName": "colorsCompressed" @@ -32311,29 +32311,29 @@ }, "init": { "type": "NewExpression", - "start": 13914, - "end": 13950, + "start": 15902, + "end": 15938, "loc": { "start": { - "line": 361, + "line": 415, "column": 37 }, "end": { - "line": 361, + "line": 415, "column": 73 } }, "callee": { "type": "Identifier", - "start": 13918, - "end": 13928, + "start": 15906, + "end": 15916, "loc": { "start": { - "line": 361, + "line": 415, "column": 41 }, "end": { - "line": 361, + "line": 415, "column": 51 }, "identifierName": "Uint8Array" @@ -32343,15 +32343,15 @@ "arguments": [ { "type": "Identifier", - "start": 13929, - "end": 13949, + "start": 15917, + "end": 15937, "loc": { "start": { - "line": 361, + "line": 415, "column": 52 }, "end": { - "line": 361, + "line": 415, "column": 72 }, "identifierName": "colorsCompressedSize" @@ -32366,58 +32366,58 @@ }, { "type": "ForStatement", - "start": 13964, - "end": 14330, + "start": 15952, + "end": 16318, "loc": { "start": { - "line": 362, + "line": 416, "column": 12 }, "end": { - "line": 367, + "line": 421, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 13969, - "end": 14018, + "start": 15957, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 17 }, "end": { - "line": 362, + "line": 416, "column": 66 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13973, - "end": 13978, + "start": 15961, + "end": 15966, "loc": { "start": { - "line": 362, + "line": 416, "column": 21 }, "end": { - "line": 362, + "line": 416, "column": 26 } }, "id": { "type": "Identifier", - "start": 13973, - "end": 13974, + "start": 15961, + "end": 15962, "loc": { "start": { - "line": 362, + "line": 416, "column": 21 }, "end": { - "line": 362, + "line": 416, "column": 22 }, "identifierName": "i" @@ -32426,15 +32426,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13977, - "end": 13978, + "start": 15965, + "end": 15966, "loc": { "start": { - "line": 362, + "line": 416, "column": 25 }, "end": { - "line": 362, + "line": 416, "column": 26 } }, @@ -32447,29 +32447,29 @@ }, { "type": "VariableDeclarator", - "start": 13980, - "end": 13985, + "start": 15968, + "end": 15973, "loc": { "start": { - "line": 362, + "line": 416, "column": 28 }, "end": { - "line": 362, + "line": 416, "column": 33 } }, "id": { "type": "Identifier", - "start": 13980, - "end": 13981, + "start": 15968, + "end": 15969, "loc": { "start": { - "line": 362, + "line": 416, "column": 28 }, "end": { - "line": 362, + "line": 416, "column": 29 }, "identifierName": "j" @@ -32478,15 +32478,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13984, - "end": 13985, + "start": 15972, + "end": 15973, "loc": { "start": { - "line": 362, + "line": 416, "column": 32 }, "end": { - "line": 362, + "line": 416, "column": 33 } }, @@ -32499,29 +32499,29 @@ }, { "type": "VariableDeclarator", - "start": 13987, - "end": 13992, + "start": 15975, + "end": 15980, "loc": { "start": { - "line": 362, + "line": 416, "column": 35 }, "end": { - "line": 362, + "line": 416, "column": 40 } }, "id": { "type": "Identifier", - "start": 13987, - "end": 13988, + "start": 15975, + "end": 15976, "loc": { "start": { - "line": 362, + "line": 416, "column": 35 }, "end": { - "line": 362, + "line": 416, "column": 36 }, "identifierName": "k" @@ -32530,15 +32530,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13991, - "end": 13992, + "start": 15979, + "end": 15980, "loc": { "start": { - "line": 362, + "line": 416, "column": 39 }, "end": { - "line": 362, + "line": 416, "column": 40 } }, @@ -32551,29 +32551,29 @@ }, { "type": "VariableDeclarator", - "start": 13994, - "end": 14018, + "start": 15982, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 42 }, "end": { - "line": 362, + "line": 416, "column": 66 } }, "id": { "type": "Identifier", - "start": 13994, - "end": 13997, + "start": 15982, + "end": 15985, "loc": { "start": { - "line": 362, + "line": 416, "column": 42 }, "end": { - "line": 362, + "line": 416, "column": 45 }, "identifierName": "len" @@ -32582,29 +32582,29 @@ }, "init": { "type": "MemberExpression", - "start": 14000, - "end": 14018, + "start": 15988, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 48 }, "end": { - "line": 362, + "line": 416, "column": 66 } }, "object": { "type": "Identifier", - "start": 14000, - "end": 14011, + "start": 15988, + "end": 15999, "loc": { "start": { - "line": 362, + "line": 416, "column": 48 }, "end": { - "line": 362, + "line": 416, "column": 59 }, "identifierName": "intensities" @@ -32613,15 +32613,15 @@ }, "property": { "type": "Identifier", - "start": 14012, - "end": 14018, + "start": 16000, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 60 }, "end": { - "line": 362, + "line": 416, "column": 66 }, "identifierName": "length" @@ -32636,29 +32636,29 @@ }, "test": { "type": "BinaryExpression", - "start": 14020, - "end": 14027, + "start": 16008, + "end": 16015, "loc": { "start": { - "line": 362, + "line": 416, "column": 68 }, "end": { - "line": 362, + "line": 416, "column": 75 } }, "left": { "type": "Identifier", - "start": 14020, - "end": 14021, + "start": 16008, + "end": 16009, "loc": { "start": { - "line": 362, + "line": 416, "column": 68 }, "end": { - "line": 362, + "line": 416, "column": 69 }, "identifierName": "i" @@ -32668,15 +32668,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 14024, - "end": 14027, + "start": 16012, + "end": 16015, "loc": { "start": { - "line": 362, + "line": 416, "column": 72 }, "end": { - "line": 362, + "line": 416, "column": 75 }, "identifierName": "len" @@ -32686,30 +32686,30 @@ }, "update": { "type": "SequenceExpression", - "start": 14029, - "end": 14056, + "start": 16017, + "end": 16044, "loc": { "start": { - "line": 362, + "line": 416, "column": 77 }, "end": { - "line": 362, + "line": 416, "column": 104 } }, "expressions": [ { "type": "UpdateExpression", - "start": 14029, - "end": 14032, + "start": 16017, + "end": 16020, "loc": { "start": { - "line": 362, + "line": 416, "column": 77 }, "end": { - "line": 362, + "line": 416, "column": 80 } }, @@ -32717,15 +32717,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 14029, - "end": 14030, + "start": 16017, + "end": 16018, "loc": { "start": { - "line": 362, + "line": 416, "column": 77 }, "end": { - "line": 362, + "line": 416, "column": 78 }, "identifierName": "i" @@ -32735,30 +32735,30 @@ }, { "type": "AssignmentExpression", - "start": 14034, - "end": 14048, + "start": 16022, + "end": 16036, "loc": { "start": { - "line": 362, + "line": 416, "column": 82 }, "end": { - "line": 362, + "line": 416, "column": 96 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 14034, - "end": 14035, + "start": 16022, + "end": 16023, "loc": { "start": { - "line": 362, + "line": 416, "column": 82 }, "end": { - "line": 362, + "line": 416, "column": 83 }, "identifierName": "k" @@ -32767,15 +32767,15 @@ }, "right": { "type": "Identifier", - "start": 14039, - "end": 14048, + "start": 16027, + "end": 16036, "loc": { "start": { - "line": 362, + "line": 416, "column": 87 }, "end": { - "line": 362, + "line": 416, "column": 96 }, "identifierName": "colorSize" @@ -32785,30 +32785,30 @@ }, { "type": "AssignmentExpression", - "start": 14050, - "end": 14056, + "start": 16038, + "end": 16044, "loc": { "start": { - "line": 362, + "line": 416, "column": 98 }, "end": { - "line": 362, + "line": 416, "column": 104 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 14050, - "end": 14051, + "start": 16038, + "end": 16039, "loc": { "start": { - "line": 362, + "line": 416, "column": 98 }, "end": { - "line": 362, + "line": 416, "column": 99 }, "identifierName": "j" @@ -32817,15 +32817,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14055, - "end": 14056, + "start": 16043, + "end": 16044, "loc": { "start": { - "line": 362, + "line": 416, "column": 103 }, "end": { - "line": 362, + "line": 416, "column": 104 } }, @@ -32840,73 +32840,73 @@ }, "body": { "type": "BlockStatement", - "start": 14058, - "end": 14330, + "start": 16046, + "end": 16318, "loc": { "start": { - "line": 362, + "line": 416, "column": 106 }, "end": { - "line": 367, + "line": 421, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 14076, - "end": 14116, + "start": 16064, + "end": 16104, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 14076, - "end": 14115, + "start": 16064, + "end": 16103, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14076, - "end": 14099, + "start": 16064, + "end": 16087, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 39 } }, "object": { "type": "Identifier", - "start": 14076, - "end": 14092, + "start": 16064, + "end": 16080, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 32 }, "identifierName": "colorsCompressed" @@ -32915,29 +32915,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14093, - "end": 14098, + "start": 16081, + "end": 16086, "loc": { "start": { - "line": 363, + "line": 417, "column": 33 }, "end": { - "line": 363, + "line": 417, "column": 38 } }, "left": { "type": "Identifier", - "start": 14093, - "end": 14094, + "start": 16081, + "end": 16082, "loc": { "start": { - "line": 363, + "line": 417, "column": 33 }, "end": { - "line": 363, + "line": 417, "column": 34 }, "identifierName": "j" @@ -32947,15 +32947,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14097, - "end": 14098, + "start": 16085, + "end": 16086, "loc": { "start": { - "line": 363, + "line": 417, "column": 37 }, "end": { - "line": 363, + "line": 417, "column": 38 } }, @@ -32970,29 +32970,29 @@ }, "right": { "type": "MemberExpression", - "start": 14102, - "end": 14115, + "start": 16090, + "end": 16103, "loc": { "start": { - "line": 363, + "line": 417, "column": 42 }, "end": { - "line": 363, + "line": 417, "column": 55 } }, "object": { "type": "Identifier", - "start": 14102, - "end": 14108, + "start": 16090, + "end": 16096, "loc": { "start": { - "line": 363, + "line": 417, "column": 42 }, "end": { - "line": 363, + "line": 417, "column": 48 }, "identifierName": "colors" @@ -33001,29 +33001,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14109, - "end": 14114, + "start": 16097, + "end": 16102, "loc": { "start": { - "line": 363, + "line": 417, "column": 49 }, "end": { - "line": 363, + "line": 417, "column": 54 } }, "left": { "type": "Identifier", - "start": 14109, - "end": 14110, + "start": 16097, + "end": 16098, "loc": { "start": { - "line": 363, + "line": 417, "column": 49 }, "end": { - "line": 363, + "line": 417, "column": 50 }, "identifierName": "k" @@ -33033,15 +33033,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14113, - "end": 14114, + "start": 16101, + "end": 16102, "loc": { "start": { - "line": 363, + "line": 417, "column": 53 }, "end": { - "line": 363, + "line": 417, "column": 54 } }, @@ -33058,58 +33058,58 @@ }, { "type": "ExpressionStatement", - "start": 14133, - "end": 14173, + "start": 16121, + "end": 16161, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 14133, - "end": 14172, + "start": 16121, + "end": 16160, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14133, - "end": 14156, + "start": 16121, + "end": 16144, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 39 } }, "object": { "type": "Identifier", - "start": 14133, - "end": 14149, + "start": 16121, + "end": 16137, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 32 }, "identifierName": "colorsCompressed" @@ -33118,29 +33118,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14150, - "end": 14155, + "start": 16138, + "end": 16143, "loc": { "start": { - "line": 364, + "line": 418, "column": 33 }, "end": { - "line": 364, + "line": 418, "column": 38 } }, "left": { "type": "Identifier", - "start": 14150, - "end": 14151, + "start": 16138, + "end": 16139, "loc": { "start": { - "line": 364, + "line": 418, "column": 33 }, "end": { - "line": 364, + "line": 418, "column": 34 }, "identifierName": "j" @@ -33150,15 +33150,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14154, - "end": 14155, + "start": 16142, + "end": 16143, "loc": { "start": { - "line": 364, + "line": 418, "column": 37 }, "end": { - "line": 364, + "line": 418, "column": 38 } }, @@ -33173,29 +33173,29 @@ }, "right": { "type": "MemberExpression", - "start": 14159, - "end": 14172, + "start": 16147, + "end": 16160, "loc": { "start": { - "line": 364, + "line": 418, "column": 42 }, "end": { - "line": 364, + "line": 418, "column": 55 } }, "object": { "type": "Identifier", - "start": 14159, - "end": 14165, + "start": 16147, + "end": 16153, "loc": { "start": { - "line": 364, + "line": 418, "column": 42 }, "end": { - "line": 364, + "line": 418, "column": 48 }, "identifierName": "colors" @@ -33204,29 +33204,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14166, - "end": 14171, + "start": 16154, + "end": 16159, "loc": { "start": { - "line": 364, + "line": 418, "column": 49 }, "end": { - "line": 364, + "line": 418, "column": 54 } }, "left": { "type": "Identifier", - "start": 14166, - "end": 14167, + "start": 16154, + "end": 16155, "loc": { "start": { - "line": 364, + "line": 418, "column": 49 }, "end": { - "line": 364, + "line": 418, "column": 50 }, "identifierName": "k" @@ -33236,15 +33236,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14170, - "end": 14171, + "start": 16158, + "end": 16159, "loc": { "start": { - "line": 364, + "line": 418, "column": 53 }, "end": { - "line": 364, + "line": 418, "column": 54 } }, @@ -33261,58 +33261,58 @@ }, { "type": "ExpressionStatement", - "start": 14190, - "end": 14230, + "start": 16178, + "end": 16218, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 14190, - "end": 14229, + "start": 16178, + "end": 16217, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14190, - "end": 14213, + "start": 16178, + "end": 16201, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 39 } }, "object": { "type": "Identifier", - "start": 14190, - "end": 14206, + "start": 16178, + "end": 16194, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 32 }, "identifierName": "colorsCompressed" @@ -33321,29 +33321,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14207, - "end": 14212, + "start": 16195, + "end": 16200, "loc": { "start": { - "line": 365, + "line": 419, "column": 33 }, "end": { - "line": 365, + "line": 419, "column": 38 } }, "left": { "type": "Identifier", - "start": 14207, - "end": 14208, + "start": 16195, + "end": 16196, "loc": { "start": { - "line": 365, + "line": 419, "column": 33 }, "end": { - "line": 365, + "line": 419, "column": 34 }, "identifierName": "j" @@ -33353,15 +33353,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14211, - "end": 14212, + "start": 16199, + "end": 16200, "loc": { "start": { - "line": 365, + "line": 419, "column": 37 }, "end": { - "line": 365, + "line": 419, "column": 38 } }, @@ -33376,29 +33376,29 @@ }, "right": { "type": "MemberExpression", - "start": 14216, - "end": 14229, + "start": 16204, + "end": 16217, "loc": { "start": { - "line": 365, + "line": 419, "column": 42 }, "end": { - "line": 365, + "line": 419, "column": 55 } }, "object": { "type": "Identifier", - "start": 14216, - "end": 14222, + "start": 16204, + "end": 16210, "loc": { "start": { - "line": 365, + "line": 419, "column": 42 }, "end": { - "line": 365, + "line": 419, "column": 48 }, "identifierName": "colors" @@ -33407,29 +33407,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14223, - "end": 14228, + "start": 16211, + "end": 16216, "loc": { "start": { - "line": 365, + "line": 419, "column": 49 }, "end": { - "line": 365, + "line": 419, "column": 54 } }, "left": { "type": "Identifier", - "start": 14223, - "end": 14224, + "start": 16211, + "end": 16212, "loc": { "start": { - "line": 365, + "line": 419, "column": 49 }, "end": { - "line": 365, + "line": 419, "column": 50 }, "identifierName": "k" @@ -33439,15 +33439,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14227, - "end": 14228, + "start": 16215, + "end": 16216, "loc": { "start": { - "line": 365, + "line": 419, "column": 53 }, "end": { - "line": 365, + "line": 419, "column": 54 } }, @@ -33464,58 +33464,58 @@ }, { "type": "ExpressionStatement", - "start": 14247, - "end": 14316, + "start": 16235, + "end": 16304, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 14247, - "end": 14315, + "start": 16235, + "end": 16303, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14247, - "end": 14270, + "start": 16235, + "end": 16258, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 39 } }, "object": { "type": "Identifier", - "start": 14247, - "end": 14263, + "start": 16235, + "end": 16251, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 32 }, "identifierName": "colorsCompressed" @@ -33524,29 +33524,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14264, - "end": 14269, + "start": 16252, + "end": 16257, "loc": { "start": { - "line": 366, + "line": 420, "column": 33 }, "end": { - "line": 366, + "line": 420, "column": 38 } }, "left": { "type": "Identifier", - "start": 14264, - "end": 14265, + "start": 16252, + "end": 16253, "loc": { "start": { - "line": 366, + "line": 420, "column": 33 }, "end": { - "line": 366, + "line": 420, "column": 34 }, "identifierName": "j" @@ -33556,15 +33556,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14268, - "end": 14269, + "start": 16256, + "end": 16257, "loc": { "start": { - "line": 366, + "line": 420, "column": 37 }, "end": { - "line": 366, + "line": 420, "column": 38 } }, @@ -33579,43 +33579,43 @@ }, "right": { "type": "CallExpression", - "start": 14273, - "end": 14315, + "start": 16261, + "end": 16303, "loc": { "start": { - "line": 366, + "line": 420, "column": 42 }, "end": { - "line": 366, + "line": 420, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 14273, - "end": 14283, + "start": 16261, + "end": 16271, "loc": { "start": { - "line": 366, + "line": 420, "column": 42 }, "end": { - "line": 366, + "line": 420, "column": 52 } }, "object": { "type": "Identifier", - "start": 14273, - "end": 14277, + "start": 16261, + "end": 16265, "loc": { "start": { - "line": 366, + "line": 420, "column": 42 }, "end": { - "line": 366, + "line": 420, "column": 46 }, "identifierName": "Math" @@ -33624,15 +33624,15 @@ }, "property": { "type": "Identifier", - "start": 14278, - "end": 14283, + "start": 16266, + "end": 16271, "loc": { "start": { - "line": 366, + "line": 420, "column": 47 }, "end": { - "line": 366, + "line": 420, "column": 52 }, "identifierName": "round" @@ -33644,57 +33644,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 14284, - "end": 14314, + "start": 16272, + "end": 16302, "loc": { "start": { - "line": 366, + "line": 420, "column": 53 }, "end": { - "line": 366, + "line": 420, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 14285, - "end": 14307, + "start": 16273, + "end": 16295, "loc": { "start": { - "line": 366, + "line": 420, "column": 54 }, "end": { - "line": 366, + "line": 420, "column": 76 } }, "left": { "type": "MemberExpression", - "start": 14285, - "end": 14299, + "start": 16273, + "end": 16287, "loc": { "start": { - "line": 366, + "line": 420, "column": 54 }, "end": { - "line": 366, + "line": 420, "column": 68 } }, "object": { "type": "Identifier", - "start": 14285, - "end": 14296, + "start": 16273, + "end": 16284, "loc": { "start": { - "line": 366, + "line": 420, "column": 54 }, "end": { - "line": 366, + "line": 420, "column": 65 }, "identifierName": "intensities" @@ -33703,15 +33703,15 @@ }, "property": { "type": "Identifier", - "start": 14297, - "end": 14298, + "start": 16285, + "end": 16286, "loc": { "start": { - "line": 366, + "line": 420, "column": 66 }, "end": { - "line": 366, + "line": 420, "column": 67 }, "identifierName": "i" @@ -33723,15 +33723,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 14302, - "end": 14307, + "start": 16290, + "end": 16295, "loc": { "start": { - "line": 366, + "line": 420, "column": 71 }, "end": { - "line": 366, + "line": 420, "column": 76 } }, @@ -33743,21 +33743,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 14284 + "parenStart": 16272 } }, "operator": "*", "right": { "type": "NumericLiteral", - "start": 14311, - "end": 14314, + "start": 16299, + "end": 16302, "loc": { "start": { - "line": 366, + "line": 420, "column": 80 }, "end": { - "line": 366, + "line": 420, "column": 83 } }, @@ -33778,29 +33778,29 @@ }, { "type": "ReturnStatement", - "start": 14343, - "end": 14367, + "start": 16331, + "end": 16355, "loc": { "start": { - "line": 368, + "line": 422, "column": 12 }, "end": { - "line": 368, + "line": 422, "column": 36 } }, "argument": { "type": "Identifier", - "start": 14350, - "end": 14366, + "start": 16338, + "end": 16354, "loc": { "start": { - "line": 368, + "line": 422, "column": 19 }, "end": { - "line": 368, + "line": 422, "column": 35 }, "identifierName": "colorsCompressed" @@ -33814,29 +33814,29 @@ }, { "type": "FunctionDeclaration", - "start": 14387, - "end": 15019, + "start": 16375, + "end": 17007, "loc": { "start": { - "line": 371, + "line": 425, "column": 8 }, "end": { - "line": 382, + "line": 436, "column": 9 } }, "id": { "type": "Identifier", - "start": 14396, - "end": 14411, + "start": 16384, + "end": 16399, "loc": { "start": { - "line": 371, + "line": 425, "column": 17 }, "end": { - "line": 371, + "line": 425, "column": 32 }, "identifierName": "readIntensities" @@ -33849,15 +33849,15 @@ "params": [ { "type": "Identifier", - "start": 14412, - "end": 14431, + "start": 16400, + "end": 16419, "loc": { "start": { - "line": 371, + "line": 425, "column": 33 }, "end": { - "line": 371, + "line": 425, "column": 52 }, "identifierName": "attributesIntensity" @@ -33867,59 +33867,59 @@ ], "body": { "type": "BlockStatement", - "start": 14433, - "end": 15019, + "start": 16421, + "end": 17007, "loc": { "start": { - "line": 371, + "line": 425, "column": 54 }, "end": { - "line": 382, + "line": 436, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 14447, - "end": 14497, + "start": 16435, + "end": 16485, "loc": { "start": { - "line": 372, + "line": 426, "column": 12 }, "end": { - "line": 372, + "line": 426, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14453, - "end": 14496, + "start": 16441, + "end": 16484, "loc": { "start": { - "line": 372, + "line": 426, "column": 18 }, "end": { - "line": 372, + "line": 426, "column": 61 } }, "id": { "type": "Identifier", - "start": 14453, - "end": 14464, + "start": 16441, + "end": 16452, "loc": { "start": { - "line": 372, + "line": 426, "column": 18 }, "end": { - "line": 372, + "line": 426, "column": 29 }, "identifierName": "intensities" @@ -33928,29 +33928,29 @@ }, "init": { "type": "MemberExpression", - "start": 14467, - "end": 14496, + "start": 16455, + "end": 16484, "loc": { "start": { - "line": 372, + "line": 426, "column": 32 }, "end": { - "line": 372, + "line": 426, "column": 61 } }, "object": { "type": "Identifier", - "start": 14467, - "end": 14486, + "start": 16455, + "end": 16474, "loc": { "start": { - "line": 372, + "line": 426, "column": 32 }, "end": { - "line": 372, + "line": 426, "column": 51 }, "identifierName": "attributesIntensity" @@ -33959,15 +33959,15 @@ }, "property": { "type": "Identifier", - "start": 14487, - "end": 14496, + "start": 16475, + "end": 16484, "loc": { "start": { - "line": 372, + "line": 426, "column": 52 }, "end": { - "line": 372, + "line": 426, "column": 61 }, "identifierName": "intensity" @@ -33982,44 +33982,44 @@ }, { "type": "VariableDeclaration", - "start": 14510, - "end": 14562, + "start": 16498, + "end": 16550, "loc": { "start": { - "line": 373, + "line": 427, "column": 12 }, "end": { - "line": 373, + "line": 427, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14516, - "end": 14561, + "start": 16504, + "end": 16549, "loc": { "start": { - "line": 373, + "line": 427, "column": 18 }, "end": { - "line": 373, + "line": 427, "column": 63 } }, "id": { "type": "Identifier", - "start": 14516, - "end": 14536, + "start": 16504, + "end": 16524, "loc": { "start": { - "line": 373, + "line": 427, "column": 18 }, "end": { - "line": 373, + "line": 427, "column": 38 }, "identifierName": "colorsCompressedSize" @@ -34028,43 +34028,43 @@ }, "init": { "type": "BinaryExpression", - "start": 14539, - "end": 14561, + "start": 16527, + "end": 16549, "loc": { "start": { - "line": 373, + "line": 427, "column": 41 }, "end": { - "line": 373, + "line": 427, "column": 63 } }, "left": { "type": "MemberExpression", - "start": 14539, - "end": 14557, + "start": 16527, + "end": 16545, "loc": { "start": { - "line": 373, + "line": 427, "column": 41 }, "end": { - "line": 373, + "line": 427, "column": 59 } }, "object": { "type": "Identifier", - "start": 14539, - "end": 14550, + "start": 16527, + "end": 16538, "loc": { "start": { - "line": 373, + "line": 427, "column": 41 }, "end": { - "line": 373, + "line": 427, "column": 52 }, "identifierName": "intensities" @@ -34073,15 +34073,15 @@ }, "property": { "type": "Identifier", - "start": 14551, - "end": 14557, + "start": 16539, + "end": 16545, "loc": { "start": { - "line": 373, + "line": 427, "column": 53 }, "end": { - "line": 373, + "line": 427, "column": 59 }, "identifierName": "length" @@ -34093,15 +34093,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 14560, - "end": 14561, + "start": 16548, + "end": 16549, "loc": { "start": { - "line": 373, + "line": 427, "column": 62 }, "end": { - "line": 373, + "line": 427, "column": 63 } }, @@ -34118,44 +34118,44 @@ }, { "type": "VariableDeclaration", - "start": 14575, - "end": 14637, + "start": 16563, + "end": 16625, "loc": { "start": { - "line": 374, + "line": 428, "column": 12 }, "end": { - "line": 374, + "line": 428, "column": 74 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14581, - "end": 14636, + "start": 16569, + "end": 16624, "loc": { "start": { - "line": 374, + "line": 428, "column": 18 }, "end": { - "line": 374, + "line": 428, "column": 73 } }, "id": { "type": "Identifier", - "start": 14581, - "end": 14597, + "start": 16569, + "end": 16585, "loc": { "start": { - "line": 374, + "line": 428, "column": 18 }, "end": { - "line": 374, + "line": 428, "column": 34 }, "identifierName": "colorsCompressed" @@ -34164,29 +34164,29 @@ }, "init": { "type": "NewExpression", - "start": 14600, - "end": 14636, + "start": 16588, + "end": 16624, "loc": { "start": { - "line": 374, + "line": 428, "column": 37 }, "end": { - "line": 374, + "line": 428, "column": 73 } }, "callee": { "type": "Identifier", - "start": 14604, - "end": 14614, + "start": 16592, + "end": 16602, "loc": { "start": { - "line": 374, + "line": 428, "column": 41 }, "end": { - "line": 374, + "line": 428, "column": 51 }, "identifierName": "Uint8Array" @@ -34196,15 +34196,15 @@ "arguments": [ { "type": "Identifier", - "start": 14615, - "end": 14635, + "start": 16603, + "end": 16623, "loc": { "start": { - "line": 374, + "line": 428, "column": 52 }, "end": { - "line": 374, + "line": 428, "column": 72 }, "identifierName": "colorsCompressedSize" @@ -34219,58 +34219,58 @@ }, { "type": "ForStatement", - "start": 14650, - "end": 14972, + "start": 16638, + "end": 16960, "loc": { "start": { - "line": 375, + "line": 429, "column": 12 }, "end": { - "line": 380, + "line": 434, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 14655, - "end": 14704, + "start": 16643, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 17 }, "end": { - "line": 375, + "line": 429, "column": 66 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14659, - "end": 14664, + "start": 16647, + "end": 16652, "loc": { "start": { - "line": 375, + "line": 429, "column": 21 }, "end": { - "line": 375, + "line": 429, "column": 26 } }, "id": { "type": "Identifier", - "start": 14659, - "end": 14660, + "start": 16647, + "end": 16648, "loc": { "start": { - "line": 375, + "line": 429, "column": 21 }, "end": { - "line": 375, + "line": 429, "column": 22 }, "identifierName": "i" @@ -34279,15 +34279,15 @@ }, "init": { "type": "NumericLiteral", - "start": 14663, - "end": 14664, + "start": 16651, + "end": 16652, "loc": { "start": { - "line": 375, + "line": 429, "column": 25 }, "end": { - "line": 375, + "line": 429, "column": 26 } }, @@ -34300,29 +34300,29 @@ }, { "type": "VariableDeclarator", - "start": 14666, - "end": 14671, + "start": 16654, + "end": 16659, "loc": { "start": { - "line": 375, + "line": 429, "column": 28 }, "end": { - "line": 375, + "line": 429, "column": 33 } }, "id": { "type": "Identifier", - "start": 14666, - "end": 14667, + "start": 16654, + "end": 16655, "loc": { "start": { - "line": 375, + "line": 429, "column": 28 }, "end": { - "line": 375, + "line": 429, "column": 29 }, "identifierName": "j" @@ -34331,15 +34331,15 @@ }, "init": { "type": "NumericLiteral", - "start": 14670, - "end": 14671, + "start": 16658, + "end": 16659, "loc": { "start": { - "line": 375, + "line": 429, "column": 32 }, "end": { - "line": 375, + "line": 429, "column": 33 } }, @@ -34352,29 +34352,29 @@ }, { "type": "VariableDeclarator", - "start": 14673, - "end": 14678, + "start": 16661, + "end": 16666, "loc": { "start": { - "line": 375, + "line": 429, "column": 35 }, "end": { - "line": 375, + "line": 429, "column": 40 } }, "id": { "type": "Identifier", - "start": 14673, - "end": 14674, + "start": 16661, + "end": 16662, "loc": { "start": { - "line": 375, + "line": 429, "column": 35 }, "end": { - "line": 375, + "line": 429, "column": 36 }, "identifierName": "k" @@ -34383,15 +34383,15 @@ }, "init": { "type": "NumericLiteral", - "start": 14677, - "end": 14678, + "start": 16665, + "end": 16666, "loc": { "start": { - "line": 375, + "line": 429, "column": 39 }, "end": { - "line": 375, + "line": 429, "column": 40 } }, @@ -34404,29 +34404,29 @@ }, { "type": "VariableDeclarator", - "start": 14680, - "end": 14704, + "start": 16668, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 42 }, "end": { - "line": 375, + "line": 429, "column": 66 } }, "id": { "type": "Identifier", - "start": 14680, - "end": 14683, + "start": 16668, + "end": 16671, "loc": { "start": { - "line": 375, + "line": 429, "column": 42 }, "end": { - "line": 375, + "line": 429, "column": 45 }, "identifierName": "len" @@ -34435,29 +34435,29 @@ }, "init": { "type": "MemberExpression", - "start": 14686, - "end": 14704, + "start": 16674, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 48 }, "end": { - "line": 375, + "line": 429, "column": 66 } }, "object": { "type": "Identifier", - "start": 14686, - "end": 14697, + "start": 16674, + "end": 16685, "loc": { "start": { - "line": 375, + "line": 429, "column": 48 }, "end": { - "line": 375, + "line": 429, "column": 59 }, "identifierName": "intensities" @@ -34466,15 +34466,15 @@ }, "property": { "type": "Identifier", - "start": 14698, - "end": 14704, + "start": 16686, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 60 }, "end": { - "line": 375, + "line": 429, "column": 66 }, "identifierName": "length" @@ -34489,29 +34489,29 @@ }, "test": { "type": "BinaryExpression", - "start": 14706, - "end": 14713, + "start": 16694, + "end": 16701, "loc": { "start": { - "line": 375, + "line": 429, "column": 68 }, "end": { - "line": 375, + "line": 429, "column": 75 } }, "left": { "type": "Identifier", - "start": 14706, - "end": 14707, + "start": 16694, + "end": 16695, "loc": { "start": { - "line": 375, + "line": 429, "column": 68 }, "end": { - "line": 375, + "line": 429, "column": 69 }, "identifierName": "i" @@ -34521,15 +34521,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 14710, - "end": 14713, + "start": 16698, + "end": 16701, "loc": { "start": { - "line": 375, + "line": 429, "column": 72 }, "end": { - "line": 375, + "line": 429, "column": 75 }, "identifierName": "len" @@ -34539,30 +34539,30 @@ }, "update": { "type": "SequenceExpression", - "start": 14715, - "end": 14734, + "start": 16703, + "end": 16722, "loc": { "start": { - "line": 375, + "line": 429, "column": 77 }, "end": { - "line": 375, + "line": 429, "column": 96 } }, "expressions": [ { "type": "UpdateExpression", - "start": 14715, - "end": 14718, + "start": 16703, + "end": 16706, "loc": { "start": { - "line": 375, + "line": 429, "column": 77 }, "end": { - "line": 375, + "line": 429, "column": 80 } }, @@ -34570,15 +34570,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 14715, - "end": 14716, + "start": 16703, + "end": 16704, "loc": { "start": { - "line": 375, + "line": 429, "column": 77 }, "end": { - "line": 375, + "line": 429, "column": 78 }, "identifierName": "i" @@ -34588,30 +34588,30 @@ }, { "type": "AssignmentExpression", - "start": 14720, - "end": 14726, + "start": 16708, + "end": 16714, "loc": { "start": { - "line": 375, + "line": 429, "column": 82 }, "end": { - "line": 375, + "line": 429, "column": 88 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 14720, - "end": 14721, + "start": 16708, + "end": 16709, "loc": { "start": { - "line": 375, + "line": 429, "column": 82 }, "end": { - "line": 375, + "line": 429, "column": 83 }, "identifierName": "k" @@ -34620,15 +34620,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14725, - "end": 14726, + "start": 16713, + "end": 16714, "loc": { "start": { - "line": 375, + "line": 429, "column": 87 }, "end": { - "line": 375, + "line": 429, "column": 88 } }, @@ -34641,30 +34641,30 @@ }, { "type": "AssignmentExpression", - "start": 14728, - "end": 14734, + "start": 16716, + "end": 16722, "loc": { "start": { - "line": 375, + "line": 429, "column": 90 }, "end": { - "line": 375, + "line": 429, "column": 96 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 14728, - "end": 14729, + "start": 16716, + "end": 16717, "loc": { "start": { - "line": 375, + "line": 429, "column": 90 }, "end": { - "line": 375, + "line": 429, "column": 91 }, "identifierName": "j" @@ -34673,15 +34673,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14733, - "end": 14734, + "start": 16721, + "end": 16722, "loc": { "start": { - "line": 375, + "line": 429, "column": 95 }, "end": { - "line": 375, + "line": 429, "column": 96 } }, @@ -34696,73 +34696,73 @@ }, "body": { "type": "BlockStatement", - "start": 14736, - "end": 14972, + "start": 16724, + "end": 16960, "loc": { "start": { - "line": 375, + "line": 429, "column": 98 }, "end": { - "line": 380, + "line": 434, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 14754, - "end": 14782, + "start": 16742, + "end": 16770, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 14754, - "end": 14781, + "start": 16742, + "end": 16769, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14754, - "end": 14777, + "start": 16742, + "end": 16765, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 39 } }, "object": { "type": "Identifier", - "start": 14754, - "end": 14770, + "start": 16742, + "end": 16758, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 32 }, "identifierName": "colorsCompressed" @@ -34771,29 +34771,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14771, - "end": 14776, + "start": 16759, + "end": 16764, "loc": { "start": { - "line": 376, + "line": 430, "column": 33 }, "end": { - "line": 376, + "line": 430, "column": 38 } }, "left": { "type": "Identifier", - "start": 14771, - "end": 14772, + "start": 16759, + "end": 16760, "loc": { "start": { - "line": 376, + "line": 430, "column": 33 }, "end": { - "line": 376, + "line": 430, "column": 34 }, "identifierName": "j" @@ -34803,15 +34803,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14775, - "end": 14776, + "start": 16763, + "end": 16764, "loc": { "start": { - "line": 376, + "line": 430, "column": 37 }, "end": { - "line": 376, + "line": 430, "column": 38 } }, @@ -34826,15 +34826,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14780, - "end": 14781, + "start": 16768, + "end": 16769, "loc": { "start": { - "line": 376, + "line": 430, "column": 42 }, "end": { - "line": 376, + "line": 430, "column": 43 } }, @@ -34848,58 +34848,58 @@ }, { "type": "ExpressionStatement", - "start": 14799, - "end": 14827, + "start": 16787, + "end": 16815, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 14799, - "end": 14826, + "start": 16787, + "end": 16814, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14799, - "end": 14822, + "start": 16787, + "end": 16810, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 39 } }, "object": { "type": "Identifier", - "start": 14799, - "end": 14815, + "start": 16787, + "end": 16803, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 32 }, "identifierName": "colorsCompressed" @@ -34908,29 +34908,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14816, - "end": 14821, + "start": 16804, + "end": 16809, "loc": { "start": { - "line": 377, + "line": 431, "column": 33 }, "end": { - "line": 377, + "line": 431, "column": 38 } }, "left": { "type": "Identifier", - "start": 14816, - "end": 14817, + "start": 16804, + "end": 16805, "loc": { "start": { - "line": 377, + "line": 431, "column": 33 }, "end": { - "line": 377, + "line": 431, "column": 34 }, "identifierName": "j" @@ -34940,15 +34940,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14820, - "end": 14821, + "start": 16808, + "end": 16809, "loc": { "start": { - "line": 377, + "line": 431, "column": 37 }, "end": { - "line": 377, + "line": 431, "column": 38 } }, @@ -34963,15 +34963,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14825, - "end": 14826, + "start": 16813, + "end": 16814, "loc": { "start": { - "line": 377, + "line": 431, "column": 42 }, "end": { - "line": 377, + "line": 431, "column": 43 } }, @@ -34985,58 +34985,58 @@ }, { "type": "ExpressionStatement", - "start": 14844, - "end": 14872, + "start": 16832, + "end": 16860, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 14844, - "end": 14871, + "start": 16832, + "end": 16859, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14844, - "end": 14867, + "start": 16832, + "end": 16855, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 39 } }, "object": { "type": "Identifier", - "start": 14844, - "end": 14860, + "start": 16832, + "end": 16848, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 32 }, "identifierName": "colorsCompressed" @@ -35045,29 +35045,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14861, - "end": 14866, + "start": 16849, + "end": 16854, "loc": { "start": { - "line": 378, + "line": 432, "column": 33 }, "end": { - "line": 378, + "line": 432, "column": 38 } }, "left": { "type": "Identifier", - "start": 14861, - "end": 14862, + "start": 16849, + "end": 16850, "loc": { "start": { - "line": 378, + "line": 432, "column": 33 }, "end": { - "line": 378, + "line": 432, "column": 34 }, "identifierName": "j" @@ -35077,15 +35077,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14865, - "end": 14866, + "start": 16853, + "end": 16854, "loc": { "start": { - "line": 378, + "line": 432, "column": 37 }, "end": { - "line": 378, + "line": 432, "column": 38 } }, @@ -35100,15 +35100,15 @@ }, "right": { "type": "NumericLiteral", - "start": 14870, - "end": 14871, + "start": 16858, + "end": 16859, "loc": { "start": { - "line": 378, + "line": 432, "column": 42 }, "end": { - "line": 378, + "line": 432, "column": 43 } }, @@ -35122,58 +35122,58 @@ }, { "type": "ExpressionStatement", - "start": 14889, - "end": 14958, + "start": 16877, + "end": 16946, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 14889, - "end": 14957, + "start": 16877, + "end": 16945, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14889, - "end": 14912, + "start": 16877, + "end": 16900, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 39 } }, "object": { "type": "Identifier", - "start": 14889, - "end": 14905, + "start": 16877, + "end": 16893, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 32 }, "identifierName": "colorsCompressed" @@ -35182,29 +35182,29 @@ }, "property": { "type": "BinaryExpression", - "start": 14906, - "end": 14911, + "start": 16894, + "end": 16899, "loc": { "start": { - "line": 379, + "line": 433, "column": 33 }, "end": { - "line": 379, + "line": 433, "column": 38 } }, "left": { "type": "Identifier", - "start": 14906, - "end": 14907, + "start": 16894, + "end": 16895, "loc": { "start": { - "line": 379, + "line": 433, "column": 33 }, "end": { - "line": 379, + "line": 433, "column": 34 }, "identifierName": "j" @@ -35214,15 +35214,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14910, - "end": 14911, + "start": 16898, + "end": 16899, "loc": { "start": { - "line": 379, + "line": 433, "column": 37 }, "end": { - "line": 379, + "line": 433, "column": 38 } }, @@ -35237,43 +35237,43 @@ }, "right": { "type": "CallExpression", - "start": 14915, - "end": 14957, + "start": 16903, + "end": 16945, "loc": { "start": { - "line": 379, + "line": 433, "column": 42 }, "end": { - "line": 379, + "line": 433, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 14915, - "end": 14925, + "start": 16903, + "end": 16913, "loc": { "start": { - "line": 379, + "line": 433, "column": 42 }, "end": { - "line": 379, + "line": 433, "column": 52 } }, "object": { "type": "Identifier", - "start": 14915, - "end": 14919, + "start": 16903, + "end": 16907, "loc": { "start": { - "line": 379, + "line": 433, "column": 42 }, "end": { - "line": 379, + "line": 433, "column": 46 }, "identifierName": "Math" @@ -35282,15 +35282,15 @@ }, "property": { "type": "Identifier", - "start": 14920, - "end": 14925, + "start": 16908, + "end": 16913, "loc": { "start": { - "line": 379, + "line": 433, "column": 47 }, "end": { - "line": 379, + "line": 433, "column": 52 }, "identifierName": "round" @@ -35302,57 +35302,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 14926, - "end": 14956, + "start": 16914, + "end": 16944, "loc": { "start": { - "line": 379, + "line": 433, "column": 53 }, "end": { - "line": 379, + "line": 433, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 14927, - "end": 14949, + "start": 16915, + "end": 16937, "loc": { "start": { - "line": 379, + "line": 433, "column": 54 }, "end": { - "line": 379, + "line": 433, "column": 76 } }, "left": { "type": "MemberExpression", - "start": 14927, - "end": 14941, + "start": 16915, + "end": 16929, "loc": { "start": { - "line": 379, + "line": 433, "column": 54 }, "end": { - "line": 379, + "line": 433, "column": 68 } }, "object": { "type": "Identifier", - "start": 14927, - "end": 14938, + "start": 16915, + "end": 16926, "loc": { "start": { - "line": 379, + "line": 433, "column": 54 }, "end": { - "line": 379, + "line": 433, "column": 65 }, "identifierName": "intensities" @@ -35361,15 +35361,15 @@ }, "property": { "type": "Identifier", - "start": 14939, - "end": 14940, + "start": 16927, + "end": 16928, "loc": { "start": { - "line": 379, + "line": 433, "column": 66 }, "end": { - "line": 379, + "line": 433, "column": 67 }, "identifierName": "i" @@ -35381,15 +35381,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 14944, - "end": 14949, + "start": 16932, + "end": 16937, "loc": { "start": { - "line": 379, + "line": 433, "column": 71 }, "end": { - "line": 379, + "line": 433, "column": 76 } }, @@ -35401,21 +35401,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 14926 + "parenStart": 16914 } }, "operator": "*", "right": { "type": "NumericLiteral", - "start": 14953, - "end": 14956, + "start": 16941, + "end": 16944, "loc": { "start": { - "line": 379, + "line": 433, "column": 80 }, "end": { - "line": 379, + "line": 433, "column": 83 } }, @@ -35436,29 +35436,29 @@ }, { "type": "ReturnStatement", - "start": 14985, - "end": 15009, + "start": 16973, + "end": 16997, "loc": { "start": { - "line": 381, + "line": 435, "column": 12 }, "end": { - "line": 381, + "line": 435, "column": 36 } }, "argument": { "type": "Identifier", - "start": 14992, - "end": 15008, + "start": 16980, + "end": 16996, "loc": { "start": { - "line": 381, + "line": 435, "column": 19 }, "end": { - "line": 381, + "line": 435, "column": 35 }, "identifierName": "colorsCompressed" @@ -35472,43 +35472,43 @@ }, { "type": "ReturnStatement", - "start": 15029, - "end": 22350, + "start": 17017, + "end": 24338, "loc": { "start": { - "line": 384, + "line": 438, "column": 8 }, "end": { - "line": 551, + "line": 605, "column": 11 } }, "argument": { "type": "NewExpression", - "start": 15036, - "end": 22349, + "start": 17024, + "end": 24337, "loc": { "start": { - "line": 384, + "line": 438, "column": 15 }, "end": { - "line": 551, + "line": 605, "column": 10 } }, "callee": { "type": "Identifier", - "start": 15040, - "end": 15047, + "start": 17028, + "end": 17035, "loc": { "start": { - "line": 384, + "line": 438, "column": 19 }, "end": { - "line": 384, + "line": 438, "column": 26 }, "identifierName": "Promise" @@ -35518,15 +35518,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 15048, - "end": 22348, + "start": 17036, + "end": 24336, "loc": { "start": { - "line": 384, + "line": 438, "column": 27 }, "end": { - "line": 551, + "line": 605, "column": 9 } }, @@ -35537,15 +35537,15 @@ "params": [ { "type": "Identifier", - "start": 15049, - "end": 15056, + "start": 17037, + "end": 17044, "loc": { "start": { - "line": 384, + "line": 438, "column": 28 }, "end": { - "line": 384, + "line": 438, "column": 35 }, "identifierName": "resolve" @@ -35554,15 +35554,15 @@ }, { "type": "Identifier", - "start": 15058, - "end": 15064, + "start": 17046, + "end": 17052, "loc": { "start": { - "line": 384, + "line": 438, "column": 37 }, "end": { - "line": 384, + "line": 438, "column": 43 }, "identifierName": "reject" @@ -35572,58 +35572,58 @@ ], "body": { "type": "BlockStatement", - "start": 15069, - "end": 22348, + "start": 17057, + "end": 24336, "loc": { "start": { - "line": 384, + "line": 438, "column": 48 }, "end": { - "line": 551, + "line": 605, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 15084, - "end": 15175, + "start": 17072, + "end": 17163, "loc": { "start": { - "line": 386, + "line": 440, "column": 12 }, "end": { - "line": 389, + "line": 443, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 15088, - "end": 15108, + "start": 17076, + "end": 17096, "loc": { "start": { - "line": 386, + "line": 440, "column": 16 }, "end": { - "line": 386, + "line": 440, "column": 36 } }, "object": { "type": "Identifier", - "start": 15088, - "end": 15098, + "start": 17076, + "end": 17086, "loc": { "start": { - "line": 386, + "line": 440, "column": 16 }, "end": { - "line": 386, + "line": 440, "column": 26 }, "identifierName": "sceneModel" @@ -35632,15 +35632,15 @@ }, "property": { "type": "Identifier", - "start": 15099, - "end": 15108, + "start": 17087, + "end": 17096, "loc": { "start": { - "line": 386, + "line": 440, "column": 27 }, "end": { - "line": 386, + "line": 440, "column": 36 }, "identifierName": "destroyed" @@ -35651,58 +35651,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 15110, - "end": 15175, + "start": 17098, + "end": 17163, "loc": { "start": { - "line": 386, + "line": 440, "column": 38 }, "end": { - "line": 389, + "line": 443, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 15128, - "end": 15137, + "start": 17116, + "end": 17125, "loc": { "start": { - "line": 387, + "line": 441, "column": 16 }, "end": { - "line": 387, + "line": 441, "column": 25 } }, "expression": { "type": "CallExpression", - "start": 15128, - "end": 15136, + "start": 17116, + "end": 17124, "loc": { "start": { - "line": 387, + "line": 441, "column": 16 }, "end": { - "line": 387, + "line": 441, "column": 24 } }, "callee": { "type": "Identifier", - "start": 15128, - "end": 15134, + "start": 17116, + "end": 17122, "loc": { "start": { - "line": 387, + "line": 441, "column": 16 }, "end": { - "line": 387, + "line": 441, "column": 22 }, "identifierName": "reject" @@ -35714,15 +35714,15 @@ }, { "type": "ReturnStatement", - "start": 15154, - "end": 15161, + "start": 17142, + "end": 17149, "loc": { "start": { - "line": 388, + "line": 442, "column": 16 }, "end": { - "line": 388, + "line": 442, "column": 23 } }, @@ -35735,44 +35735,44 @@ }, { "type": "VariableDeclaration", - "start": 15189, - "end": 15222, + "start": 17177, + "end": 17210, "loc": { "start": { - "line": 391, + "line": 445, "column": 12 }, "end": { - "line": 391, + "line": 445, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15195, - "end": 15221, + "start": 17183, + "end": 17209, "loc": { "start": { - "line": 391, + "line": 445, "column": 18 }, "end": { - "line": 391, + "line": 445, "column": 44 } }, "id": { "type": "Identifier", - "start": 15195, - "end": 15200, + "start": 17183, + "end": 17188, "loc": { "start": { - "line": 391, + "line": 445, "column": 18 }, "end": { - "line": 391, + "line": 445, "column": 23 }, "identifierName": "stats" @@ -35781,43 +35781,43 @@ }, "init": { "type": "LogicalExpression", - "start": 15203, - "end": 15221, + "start": 17191, + "end": 17209, "loc": { "start": { - "line": 391, + "line": 445, "column": 26 }, "end": { - "line": 391, + "line": 445, "column": 44 } }, "left": { "type": "MemberExpression", - "start": 15203, - "end": 15215, + "start": 17191, + "end": 17203, "loc": { "start": { - "line": 391, + "line": 445, "column": 26 }, "end": { - "line": 391, + "line": 445, "column": 38 } }, "object": { "type": "Identifier", - "start": 15203, - "end": 15209, + "start": 17191, + "end": 17197, "loc": { "start": { - "line": 391, + "line": 445, "column": 26 }, "end": { - "line": 391, + "line": 445, "column": 32 }, "identifierName": "params" @@ -35826,15 +35826,15 @@ }, "property": { "type": "Identifier", - "start": 15210, - "end": 15215, + "start": 17198, + "end": 17203, "loc": { "start": { - "line": 391, + "line": 445, "column": 33 }, "end": { - "line": 391, + "line": 445, "column": 38 }, "identifierName": "stats" @@ -35846,15 +35846,15 @@ "operator": "||", "right": { "type": "ObjectExpression", - "start": 15219, - "end": 15221, + "start": 17207, + "end": 17209, "loc": { "start": { - "line": 391, + "line": 445, "column": 42 }, "end": { - "line": 391, + "line": 445, "column": 44 } }, @@ -35867,58 +35867,58 @@ }, { "type": "ExpressionStatement", - "start": 15235, - "end": 15262, + "start": 17223, + "end": 17250, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 15235, - "end": 15261, + "start": 17223, + "end": 17249, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15235, - "end": 15253, + "start": 17223, + "end": 17241, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 30 } }, "object": { "type": "Identifier", - "start": 15235, - "end": 15240, + "start": 17223, + "end": 17228, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 17 }, "identifierName": "stats" @@ -35927,15 +35927,15 @@ }, "property": { "type": "Identifier", - "start": 15241, - "end": 15253, + "start": 17229, + "end": 17241, "loc": { "start": { - "line": 392, + "line": 446, "column": 18 }, "end": { - "line": 392, + "line": 446, "column": 30 }, "identifierName": "sourceFormat" @@ -35946,15 +35946,15 @@ }, "right": { "type": "StringLiteral", - "start": 15256, - "end": 15261, + "start": 17244, + "end": 17249, "loc": { "start": { - "line": 392, + "line": 446, "column": 33 }, "end": { - "line": 392, + "line": 446, "column": 38 } }, @@ -35968,58 +35968,58 @@ }, { "type": "ExpressionStatement", - "start": 15275, - "end": 15300, + "start": 17263, + "end": 17288, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 15275, - "end": 15299, + "start": 17263, + "end": 17287, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15275, - "end": 15294, + "start": 17263, + "end": 17282, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 31 } }, "object": { "type": "Identifier", - "start": 15275, - "end": 15280, + "start": 17263, + "end": 17268, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 17 }, "identifierName": "stats" @@ -36028,15 +36028,15 @@ }, "property": { "type": "Identifier", - "start": 15281, - "end": 15294, + "start": 17269, + "end": 17282, "loc": { "start": { - "line": 393, + "line": 447, "column": 18 }, "end": { - "line": 393, + "line": 447, "column": 31 }, "identifierName": "schemaVersion" @@ -36047,15 +36047,15 @@ }, "right": { "type": "StringLiteral", - "start": 15297, - "end": 15299, + "start": 17285, + "end": 17287, "loc": { "start": { - "line": 393, + "line": 447, "column": 34 }, "end": { - "line": 393, + "line": 447, "column": 36 } }, @@ -36069,58 +36069,58 @@ }, { "type": "ExpressionStatement", - "start": 15313, - "end": 15330, + "start": 17301, + "end": 17318, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 15313, - "end": 15329, + "start": 17301, + "end": 17317, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15313, - "end": 15324, + "start": 17301, + "end": 17312, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 23 } }, "object": { "type": "Identifier", - "start": 15313, - "end": 15318, + "start": 17301, + "end": 17306, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 17 }, "identifierName": "stats" @@ -36129,15 +36129,15 @@ }, "property": { "type": "Identifier", - "start": 15319, - "end": 15324, + "start": 17307, + "end": 17312, "loc": { "start": { - "line": 394, + "line": 448, "column": 18 }, "end": { - "line": 394, + "line": 448, "column": 23 }, "identifierName": "title" @@ -36148,15 +36148,15 @@ }, "right": { "type": "StringLiteral", - "start": 15327, - "end": 15329, + "start": 17315, + "end": 17317, "loc": { "start": { - "line": 394, + "line": 448, "column": 26 }, "end": { - "line": 394, + "line": 448, "column": 28 } }, @@ -36170,58 +36170,58 @@ }, { "type": "ExpressionStatement", - "start": 15343, - "end": 15361, + "start": 17331, + "end": 17349, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 15343, - "end": 15360, + "start": 17331, + "end": 17348, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15343, - "end": 15355, + "start": 17331, + "end": 17343, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 24 } }, "object": { "type": "Identifier", - "start": 15343, - "end": 15348, + "start": 17331, + "end": 17336, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 17 }, "identifierName": "stats" @@ -36230,15 +36230,15 @@ }, "property": { "type": "Identifier", - "start": 15349, - "end": 15355, + "start": 17337, + "end": 17343, "loc": { "start": { - "line": 395, + "line": 449, "column": 18 }, "end": { - "line": 395, + "line": 449, "column": 24 }, "identifierName": "author" @@ -36249,15 +36249,15 @@ }, "right": { "type": "StringLiteral", - "start": 15358, - "end": 15360, + "start": 17346, + "end": 17348, "loc": { "start": { - "line": 395, + "line": 449, "column": 27 }, "end": { - "line": 395, + "line": 449, "column": 29 } }, @@ -36271,58 +36271,58 @@ }, { "type": "ExpressionStatement", - "start": 15374, - "end": 15393, + "start": 17362, + "end": 17381, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 15374, - "end": 15392, + "start": 17362, + "end": 17380, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15374, - "end": 15387, + "start": 17362, + "end": 17375, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 25 } }, "object": { "type": "Identifier", - "start": 15374, - "end": 15379, + "start": 17362, + "end": 17367, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 17 }, "identifierName": "stats" @@ -36331,15 +36331,15 @@ }, "property": { "type": "Identifier", - "start": 15380, - "end": 15387, + "start": 17368, + "end": 17375, "loc": { "start": { - "line": 396, + "line": 450, "column": 18 }, "end": { - "line": 396, + "line": 450, "column": 25 }, "identifierName": "created" @@ -36350,15 +36350,15 @@ }, "right": { "type": "StringLiteral", - "start": 15390, - "end": 15392, + "start": 17378, + "end": 17380, "loc": { "start": { - "line": 396, + "line": 450, "column": 28 }, "end": { - "line": 396, + "line": 450, "column": 30 } }, @@ -36372,58 +36372,58 @@ }, { "type": "ExpressionStatement", - "start": 15406, - "end": 15431, + "start": 17394, + "end": 17419, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 15406, - "end": 15430, + "start": 17394, + "end": 17418, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15406, - "end": 15426, + "start": 17394, + "end": 17414, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 32 } }, "object": { "type": "Identifier", - "start": 15406, - "end": 15411, + "start": 17394, + "end": 17399, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 17 }, "identifierName": "stats" @@ -36432,15 +36432,15 @@ }, "property": { "type": "Identifier", - "start": 15412, - "end": 15426, + "start": 17400, + "end": 17414, "loc": { "start": { - "line": 397, + "line": 451, "column": 18 }, "end": { - "line": 397, + "line": 451, "column": 32 }, "identifierName": "numMetaObjects" @@ -36451,15 +36451,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15429, - "end": 15430, + "start": 17417, + "end": 17418, "loc": { "start": { - "line": 397, + "line": 451, "column": 35 }, "end": { - "line": 397, + "line": 451, "column": 36 } }, @@ -36473,58 +36473,58 @@ }, { "type": "ExpressionStatement", - "start": 15444, - "end": 15470, + "start": 17432, + "end": 17458, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 15444, - "end": 15469, + "start": 17432, + "end": 17457, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15444, - "end": 15465, + "start": 17432, + "end": 17453, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 33 } }, "object": { "type": "Identifier", - "start": 15444, - "end": 15449, + "start": 17432, + "end": 17437, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 17 }, "identifierName": "stats" @@ -36533,15 +36533,15 @@ }, "property": { "type": "Identifier", - "start": 15450, - "end": 15465, + "start": 17438, + "end": 17453, "loc": { "start": { - "line": 398, + "line": 452, "column": 18 }, "end": { - "line": 398, + "line": 452, "column": 33 }, "identifierName": "numPropertySets" @@ -36552,15 +36552,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15468, - "end": 15469, + "start": 17456, + "end": 17457, "loc": { "start": { - "line": 398, + "line": 452, "column": 36 }, "end": { - "line": 398, + "line": 452, "column": 37 } }, @@ -36574,58 +36574,58 @@ }, { "type": "ExpressionStatement", - "start": 15483, - "end": 15504, + "start": 17471, + "end": 17492, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 15483, - "end": 15503, + "start": 17471, + "end": 17491, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15483, - "end": 15499, + "start": 17471, + "end": 17487, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 28 } }, "object": { "type": "Identifier", - "start": 15483, - "end": 15488, + "start": 17471, + "end": 17476, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 17 }, "identifierName": "stats" @@ -36634,15 +36634,15 @@ }, "property": { "type": "Identifier", - "start": 15489, - "end": 15499, + "start": 17477, + "end": 17487, "loc": { "start": { - "line": 399, + "line": 453, "column": 18 }, "end": { - "line": 399, + "line": 453, "column": 28 }, "identifierName": "numObjects" @@ -36653,15 +36653,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15502, - "end": 15503, + "start": 17490, + "end": 17491, "loc": { "start": { - "line": 399, + "line": 453, "column": 31 }, "end": { - "line": 399, + "line": 453, "column": 32 } }, @@ -36675,58 +36675,58 @@ }, { "type": "ExpressionStatement", - "start": 15517, - "end": 15541, + "start": 17505, + "end": 17529, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 15517, - "end": 15540, + "start": 17505, + "end": 17528, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15517, - "end": 15536, + "start": 17505, + "end": 17524, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 31 } }, "object": { "type": "Identifier", - "start": 15517, - "end": 15522, + "start": 17505, + "end": 17510, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 17 }, "identifierName": "stats" @@ -36735,15 +36735,15 @@ }, "property": { "type": "Identifier", - "start": 15523, - "end": 15536, + "start": 17511, + "end": 17524, "loc": { "start": { - "line": 400, + "line": 454, "column": 18 }, "end": { - "line": 400, + "line": 454, "column": 31 }, "identifierName": "numGeometries" @@ -36754,15 +36754,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15539, - "end": 15540, + "start": 17527, + "end": 17528, "loc": { "start": { - "line": 400, + "line": 454, "column": 34 }, "end": { - "line": 400, + "line": 454, "column": 35 } }, @@ -36776,58 +36776,58 @@ }, { "type": "ExpressionStatement", - "start": 15554, - "end": 15577, + "start": 17542, + "end": 17565, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 15554, - "end": 15576, + "start": 17542, + "end": 17564, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15554, - "end": 15572, + "start": 17542, + "end": 17560, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 30 } }, "object": { "type": "Identifier", - "start": 15554, - "end": 15559, + "start": 17542, + "end": 17547, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 17 }, "identifierName": "stats" @@ -36836,15 +36836,15 @@ }, "property": { "type": "Identifier", - "start": 15560, - "end": 15572, + "start": 17548, + "end": 17560, "loc": { "start": { - "line": 401, + "line": 455, "column": 18 }, "end": { - "line": 401, + "line": 455, "column": 30 }, "identifierName": "numTriangles" @@ -36855,15 +36855,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15575, - "end": 15576, + "start": 17563, + "end": 17564, "loc": { "start": { - "line": 401, + "line": 455, "column": 33 }, "end": { - "line": 401, + "line": 455, "column": 34 } }, @@ -36877,58 +36877,58 @@ }, { "type": "ExpressionStatement", - "start": 15590, - "end": 15612, + "start": 17578, + "end": 17600, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 15590, - "end": 15611, + "start": 17578, + "end": 17599, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 15590, - "end": 15607, + "start": 17578, + "end": 17595, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 29 } }, "object": { "type": "Identifier", - "start": 15590, - "end": 15595, + "start": 17578, + "end": 17583, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 17 }, "identifierName": "stats" @@ -36937,15 +36937,15 @@ }, "property": { "type": "Identifier", - "start": 15596, - "end": 15607, + "start": 17584, + "end": 17595, "loc": { "start": { - "line": 402, + "line": 456, "column": 18 }, "end": { - "line": 402, + "line": 456, "column": 29 }, "identifierName": "numVertices" @@ -36956,15 +36956,15 @@ }, "right": { "type": "NumericLiteral", - "start": 15610, - "end": 15611, + "start": 17598, + "end": 17599, "loc": { "start": { - "line": 402, + "line": 456, "column": 32 }, "end": { - "line": 402, + "line": 456, "column": 33 } }, @@ -36978,73 +36978,73 @@ }, { "type": "TryStatement", - "start": 15626, - "end": 22338, + "start": 17614, + "end": 24326, "loc": { "start": { - "line": 404, + "line": 458, "column": 12 }, "end": { - "line": 550, + "line": 604, "column": 13 } }, "block": { "type": "BlockStatement", - "start": 15630, - "end": 22246, + "start": 17618, + "end": 24234, "loc": { "start": { - "line": 404, + "line": 458, "column": 16 }, "end": { - "line": 547, + "line": 601, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 15649, - "end": 15694, + "start": 17637, + "end": 17682, "loc": { "start": { - "line": 406, + "line": 460, "column": 16 }, "end": { - "line": 406, + "line": 460, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15655, - "end": 15693, + "start": 17643, + "end": 17681, "loc": { "start": { - "line": 406, + "line": 460, "column": 22 }, "end": { - "line": 406, + "line": 460, "column": 60 } }, "id": { "type": "Identifier", - "start": 15655, - "end": 15664, + "start": 17643, + "end": 17652, "loc": { "start": { - "line": 406, + "line": 460, "column": 22 }, "end": { - "line": 406, + "line": 460, "column": 31 }, "identifierName": "lasHeader" @@ -37053,29 +37053,29 @@ }, "init": { "type": "CallExpression", - "start": 15667, - "end": 15693, + "start": 17655, + "end": 17681, "loc": { "start": { - "line": 406, + "line": 460, "column": 34 }, "end": { - "line": 406, + "line": 460, "column": 60 } }, "callee": { "type": "Identifier", - "start": 15667, - "end": 15680, + "start": 17655, + "end": 17668, "loc": { "start": { - "line": 406, + "line": 460, "column": 34 }, "end": { - "line": 406, + "line": 460, "column": 47 }, "identifierName": "loadLASHeader" @@ -37085,15 +37085,15 @@ "arguments": [ { "type": "Identifier", - "start": 15681, - "end": 15692, + "start": 17669, + "end": 17680, "loc": { "start": { - "line": 406, + "line": 460, "column": 48 }, "end": { - "line": 406, + "line": 460, "column": 59 }, "identifierName": "arrayBuffer" @@ -37108,71 +37108,71 @@ }, { "type": "ExpressionStatement", - "start": 15712, - "end": 22232, + "start": 17700, + "end": 24220, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 546, + "line": 600, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 15712, - "end": 22231, + "start": 17700, + "end": 24219, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 546, + "line": 600, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 15712, - "end": 15755, + "start": 17700, + "end": 17743, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 408, + "line": 462, "column": 59 } }, "object": { "type": "CallExpression", - "start": 15712, - "end": 15750, + "start": 17700, + "end": 17738, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 408, + "line": 462, "column": 54 } }, "callee": { "type": "Identifier", - "start": 15712, - "end": 15717, + "start": 17700, + "end": 17705, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 408, + "line": 462, "column": 21 }, "identifierName": "parse" @@ -37182,15 +37182,15 @@ "arguments": [ { "type": "Identifier", - "start": 15718, - "end": 15729, + "start": 17706, + "end": 17717, "loc": { "start": { - "line": 408, + "line": 462, "column": 22 }, "end": { - "line": 408, + "line": 462, "column": 33 }, "identifierName": "arrayBuffer" @@ -37199,15 +37199,15 @@ }, { "type": "Identifier", - "start": 15731, - "end": 15740, + "start": 17719, + "end": 17728, "loc": { "start": { - "line": 408, + "line": 462, "column": 35 }, "end": { - "line": 408, + "line": 462, "column": 44 }, "identifierName": "LASLoader" @@ -37216,15 +37216,15 @@ }, { "type": "Identifier", - "start": 15742, - "end": 15749, + "start": 17730, + "end": 17737, "loc": { "start": { - "line": 408, + "line": 462, "column": 46 }, "end": { - "line": 408, + "line": 462, "column": 53 }, "identifierName": "options" @@ -37235,15 +37235,15 @@ }, "property": { "type": "Identifier", - "start": 15751, - "end": 15755, + "start": 17739, + "end": 17743, "loc": { "start": { - "line": 408, + "line": 462, "column": 55 }, "end": { - "line": 408, + "line": 462, "column": 59 }, "identifierName": "then" @@ -37255,15 +37255,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 15756, - "end": 22230, + "start": 17744, + "end": 24218, "loc": { "start": { - "line": 408, + "line": 462, "column": 60 }, "end": { - "line": 546, + "line": 600, "column": 17 } }, @@ -37274,15 +37274,15 @@ "params": [ { "type": "Identifier", - "start": 15757, - "end": 15767, + "start": 17745, + "end": 17755, "loc": { "start": { - "line": 408, + "line": 462, "column": 61 }, "end": { - "line": 408, + "line": 462, "column": 71 }, "identifierName": "parsedData" @@ -37292,59 +37292,59 @@ ], "body": { "type": "BlockStatement", - "start": 15772, - "end": 22230, + "start": 17760, + "end": 24218, "loc": { "start": { - "line": 408, + "line": 462, "column": 76 }, "end": { - "line": 546, + "line": 600, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 15795, - "end": 15836, + "start": 17783, + "end": 17824, "loc": { "start": { - "line": 410, + "line": 464, "column": 20 }, "end": { - "line": 410, + "line": 464, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15801, - "end": 15835, + "start": 17789, + "end": 17823, "loc": { "start": { - "line": 410, + "line": 464, "column": 26 }, "end": { - "line": 410, + "line": 464, "column": 60 } }, "id": { "type": "Identifier", - "start": 15801, - "end": 15811, + "start": 17789, + "end": 17799, "loc": { "start": { - "line": 410, + "line": 464, "column": 26 }, "end": { - "line": 410, + "line": 464, "column": 36 }, "identifierName": "attributes" @@ -37353,29 +37353,29 @@ }, "init": { "type": "MemberExpression", - "start": 15814, - "end": 15835, + "start": 17802, + "end": 17823, "loc": { "start": { - "line": 410, + "line": 464, "column": 39 }, "end": { - "line": 410, + "line": 464, "column": 60 } }, "object": { "type": "Identifier", - "start": 15814, - "end": 15824, + "start": 17802, + "end": 17812, "loc": { "start": { - "line": 410, + "line": 464, "column": 39 }, "end": { - "line": 410, + "line": 464, "column": 49 }, "identifierName": "parsedData" @@ -37384,15 +37384,15 @@ }, "property": { "type": "Identifier", - "start": 15825, - "end": 15835, + "start": 17813, + "end": 17823, "loc": { "start": { - "line": 410, + "line": 464, "column": 50 }, "end": { - "line": 410, + "line": 464, "column": 60 }, "identifierName": "attributes" @@ -37407,44 +37407,44 @@ }, { "type": "VariableDeclaration", - "start": 15857, - "end": 15898, + "start": 17845, + "end": 17886, "loc": { "start": { - "line": 411, + "line": 465, "column": 20 }, "end": { - "line": 411, + "line": 465, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15863, - "end": 15897, + "start": 17851, + "end": 17885, "loc": { "start": { - "line": 411, + "line": 465, "column": 26 }, "end": { - "line": 411, + "line": 465, "column": 60 } }, "id": { "type": "Identifier", - "start": 15863, - "end": 15873, + "start": 17851, + "end": 17861, "loc": { "start": { - "line": 411, + "line": 465, "column": 26 }, "end": { - "line": 411, + "line": 465, "column": 36 }, "identifierName": "loaderData" @@ -37453,29 +37453,29 @@ }, "init": { "type": "MemberExpression", - "start": 15876, - "end": 15897, + "start": 17864, + "end": 17885, "loc": { "start": { - "line": 411, + "line": 465, "column": 39 }, "end": { - "line": 411, + "line": 465, "column": 60 } }, "object": { "type": "Identifier", - "start": 15876, - "end": 15886, + "start": 17864, + "end": 17874, "loc": { "start": { - "line": 411, + "line": 465, "column": 39 }, "end": { - "line": 411, + "line": 465, "column": 49 }, "identifierName": "parsedData" @@ -37484,15 +37484,15 @@ }, "property": { "type": "Identifier", - "start": 15887, - "end": 15897, + "start": 17875, + "end": 17885, "loc": { "start": { - "line": 411, + "line": 465, "column": 50 }, "end": { - "line": 411, + "line": 465, "column": 60 }, "identifierName": "loaderData" @@ -37507,44 +37507,44 @@ }, { "type": "VariableDeclaration", - "start": 15919, - "end": 16015, + "start": 17907, + "end": 18003, "loc": { "start": { - "line": 412, + "line": 466, "column": 20 }, "end": { - "line": 412, + "line": 466, "column": 116 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15925, - "end": 16014, + "start": 17913, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 26 }, "end": { - "line": 412, + "line": 466, "column": 115 } }, "id": { "type": "Identifier", - "start": 15925, - "end": 15939, + "start": 17913, + "end": 17927, "loc": { "start": { - "line": 412, + "line": 466, "column": 26 }, "end": { - "line": 412, + "line": 466, "column": 40 }, "identifierName": "pointsFormatId" @@ -37553,57 +37553,57 @@ }, "init": { "type": "ConditionalExpression", - "start": 15942, - "end": 16014, + "start": 17930, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 115 } }, "test": { "type": "BinaryExpression", - "start": 15942, - "end": 15981, + "start": 17930, + "end": 17969, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 82 } }, "left": { "type": "MemberExpression", - "start": 15942, - "end": 15967, + "start": 17930, + "end": 17955, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 68 } }, "object": { "type": "Identifier", - "start": 15942, - "end": 15952, + "start": 17930, + "end": 17940, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 53 }, "identifierName": "loaderData" @@ -37612,15 +37612,15 @@ }, "property": { "type": "Identifier", - "start": 15953, - "end": 15967, + "start": 17941, + "end": 17955, "loc": { "start": { - "line": 412, + "line": 466, "column": 54 }, "end": { - "line": 412, + "line": 466, "column": 68 }, "identifierName": "pointsFormatId" @@ -37632,15 +37632,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 15972, - "end": 15981, + "start": 17960, + "end": 17969, "loc": { "start": { - "line": 412, + "line": 466, "column": 73 }, "end": { - "line": 412, + "line": 466, "column": 82 }, "identifierName": "undefined" @@ -37650,29 +37650,29 @@ }, "consequent": { "type": "MemberExpression", - "start": 15984, - "end": 16009, + "start": 17972, + "end": 17997, "loc": { "start": { - "line": 412, + "line": 466, "column": 85 }, "end": { - "line": 412, + "line": 466, "column": 110 } }, "object": { "type": "Identifier", - "start": 15984, - "end": 15994, + "start": 17972, + "end": 17982, "loc": { "start": { - "line": 412, + "line": 466, "column": 85 }, "end": { - "line": 412, + "line": 466, "column": 95 }, "identifierName": "loaderData" @@ -37681,15 +37681,15 @@ }, "property": { "type": "Identifier", - "start": 15995, - "end": 16009, + "start": 17983, + "end": 17997, "loc": { "start": { - "line": 412, + "line": 466, "column": 96 }, "end": { - "line": 412, + "line": 466, "column": 110 }, "identifierName": "pointsFormatId" @@ -37700,15 +37700,15 @@ }, "alternate": { "type": "UnaryExpression", - "start": 16012, - "end": 16014, + "start": 18000, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 113 }, "end": { - "line": 412, + "line": 466, "column": 115 } }, @@ -37716,15 +37716,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 16013, - "end": 16014, + "start": 18001, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 114 }, "end": { - "line": 412, + "line": 466, "column": 115 } }, @@ -37745,29 +37745,29 @@ }, { "type": "IfStatement", - "start": 16037, - "end": 16227, + "start": 18025, + "end": 18215, "loc": { "start": { - "line": 414, + "line": 468, "column": 20 }, "end": { - "line": 418, + "line": 472, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 16041, - "end": 16061, + "start": 18029, + "end": 18049, "loc": { "start": { - "line": 414, + "line": 468, "column": 24 }, "end": { - "line": 414, + "line": 468, "column": 44 } }, @@ -37775,29 +37775,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 16042, - "end": 16061, + "start": 18030, + "end": 18049, "loc": { "start": { - "line": 414, + "line": 468, "column": 25 }, "end": { - "line": 414, + "line": 468, "column": 44 } }, "object": { "type": "Identifier", - "start": 16042, - "end": 16052, + "start": 18030, + "end": 18040, "loc": { "start": { - "line": 414, + "line": 468, "column": 25 }, "end": { - "line": 414, + "line": 468, "column": 35 }, "identifierName": "attributes" @@ -37806,15 +37806,15 @@ }, "property": { "type": "Identifier", - "start": 16053, - "end": 16061, + "start": 18041, + "end": 18049, "loc": { "start": { - "line": 414, + "line": 468, "column": 36 }, "end": { - "line": 414, + "line": 468, "column": 44 }, "identifierName": "POSITION" @@ -37829,72 +37829,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 16063, - "end": 16227, + "start": 18051, + "end": 18215, "loc": { "start": { - "line": 414, + "line": 468, "column": 46 }, "end": { - "line": 418, + "line": 472, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 16089, - "end": 16111, + "start": 18077, + "end": 18099, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 46 } }, "expression": { "type": "CallExpression", - "start": 16089, - "end": 16110, + "start": 18077, + "end": 18098, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 16089, - "end": 16108, + "start": 18077, + "end": 18096, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 43 } }, "object": { "type": "Identifier", - "start": 16089, - "end": 16099, + "start": 18077, + "end": 18087, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 34 }, "identifierName": "sceneModel" @@ -37903,15 +37903,15 @@ }, "property": { "type": "Identifier", - "start": 16100, - "end": 16108, + "start": 18088, + "end": 18096, "loc": { "start": { - "line": 415, + "line": 469, "column": 35 }, "end": { - "line": 415, + "line": 469, "column": 43 }, "identifierName": "finalize" @@ -37925,43 +37925,43 @@ }, { "type": "ExpressionStatement", - "start": 16136, - "end": 16173, + "start": 18124, + "end": 18161, "loc": { "start": { - "line": 416, + "line": 470, "column": 24 }, "end": { - "line": 416, + "line": 470, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 16136, - "end": 16172, + "start": 18124, + "end": 18160, "loc": { "start": { - "line": 416, + "line": 470, "column": 24 }, "end": { - "line": 416, + "line": 470, "column": 60 } }, "callee": { "type": "Identifier", - "start": 16136, - "end": 16142, + "start": 18124, + "end": 18130, "loc": { "start": { - "line": 416, + "line": 470, "column": 24 }, "end": { - "line": 416, + "line": 470, "column": 30 }, "identifierName": "reject" @@ -37971,15 +37971,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 16143, - "end": 16171, + "start": 18131, + "end": 18159, "loc": { "start": { - "line": 416, + "line": 470, "column": 31 }, "end": { - "line": 416, + "line": 470, "column": 59 } }, @@ -37994,15 +37994,15 @@ }, { "type": "ReturnStatement", - "start": 16198, - "end": 16205, + "start": 18186, + "end": 18193, "loc": { "start": { - "line": 417, + "line": 471, "column": 24 }, "end": { - "line": 417, + "line": 471, "column": 31 } }, @@ -38015,44 +38015,44 @@ }, { "type": "VariableDeclaration", - "start": 16249, - "end": 16267, + "start": 18237, + "end": 18255, "loc": { "start": { - "line": 420, + "line": 474, "column": 20 }, "end": { - "line": 420, + "line": 474, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16253, - "end": 16267, + "start": 18241, + "end": 18255, "loc": { "start": { - "line": 420, + "line": 474, "column": 24 }, "end": { - "line": 420, + "line": 474, "column": 38 } }, "id": { "type": "Identifier", - "start": 16253, - "end": 16267, + "start": 18241, + "end": 18255, "loc": { "start": { - "line": 420, + "line": 474, "column": 24 }, "end": { - "line": 420, + "line": 474, "column": 38 }, "identifierName": "positionsValue" @@ -38066,44 +38066,44 @@ }, { "type": "VariableDeclaration", - "start": 16288, - "end": 16309, + "start": 18276, + "end": 18297, "loc": { "start": { - "line": 421, + "line": 475, "column": 20 }, "end": { - "line": 421, + "line": 475, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16292, - "end": 16308, + "start": 18280, + "end": 18296, "loc": { "start": { - "line": 421, + "line": 475, "column": 24 }, "end": { - "line": 421, + "line": 475, "column": 40 } }, "id": { "type": "Identifier", - "start": 16292, - "end": 16308, + "start": 18280, + "end": 18296, "loc": { "start": { - "line": 421, + "line": 475, "column": 24 }, "end": { - "line": 421, + "line": 475, "column": 40 }, "identifierName": "colorsCompressed" @@ -38117,29 +38117,29 @@ }, { "type": "SwitchStatement", - "start": 16331, - "end": 18128, + "start": 18319, + "end": 20116, "loc": { "start": { - "line": 423, + "line": 477, "column": 20 }, "end": { - "line": 455, + "line": 509, "column": 21 } }, "discriminant": { "type": "Identifier", - "start": 16339, - "end": 16353, + "start": 18327, + "end": 18341, "loc": { "start": { - "line": 423, + "line": 477, "column": 28 }, "end": { - "line": 423, + "line": 477, "column": 42 }, "identifierName": "pointsFormatId" @@ -38149,59 +38149,59 @@ "cases": [ { "type": "SwitchCase", - "start": 16381, - "end": 16590, + "start": 18369, + "end": 18578, "loc": { "start": { - "line": 424, + "line": 478, "column": 24 }, "end": { - "line": 427, + "line": 481, "column": 34 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 16417, - "end": 16469, + "start": 18405, + "end": 18457, "loc": { "start": { - "line": 425, + "line": 479, "column": 28 }, "end": { - "line": 425, + "line": 479, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 16417, - "end": 16468, + "start": 18405, + "end": 18456, "loc": { "start": { - "line": 425, + "line": 479, "column": 28 }, "end": { - "line": 425, + "line": 479, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16417, - "end": 16431, + "start": 18405, + "end": 18419, "loc": { "start": { - "line": 425, + "line": 479, "column": 28 }, "end": { - "line": 425, + "line": 479, "column": 42 }, "identifierName": "positionsValue" @@ -38210,29 +38210,29 @@ }, "right": { "type": "CallExpression", - "start": 16434, - "end": 16468, + "start": 18422, + "end": 18456, "loc": { "start": { - "line": 425, + "line": 479, "column": 45 }, "end": { - "line": 425, + "line": 479, "column": 79 } }, "callee": { "type": "Identifier", - "start": 16434, - "end": 16447, + "start": 18422, + "end": 18435, "loc": { "start": { - "line": 425, + "line": 479, "column": 45 }, "end": { - "line": 425, + "line": 479, "column": 58 }, "identifierName": "readPositions" @@ -38242,29 +38242,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 16448, - "end": 16467, + "start": 18436, + "end": 18455, "loc": { "start": { - "line": 425, + "line": 479, "column": 59 }, "end": { - "line": 425, + "line": 479, "column": 78 } }, "object": { "type": "Identifier", - "start": 16448, - "end": 16458, + "start": 18436, + "end": 18446, "loc": { "start": { - "line": 425, + "line": 479, "column": 59 }, "end": { - "line": 425, + "line": 479, "column": 69 }, "identifierName": "attributes" @@ -38273,15 +38273,15 @@ }, "property": { "type": "Identifier", - "start": 16459, - "end": 16467, + "start": 18447, + "end": 18455, "loc": { "start": { - "line": 425, + "line": 479, "column": 70 }, "end": { - "line": 425, + "line": 479, "column": 78 }, "identifierName": "POSITION" @@ -38296,44 +38296,44 @@ }, { "type": "ExpressionStatement", - "start": 16498, - "end": 16555, + "start": 18486, + "end": 18543, "loc": { "start": { - "line": 426, + "line": 480, "column": 28 }, "end": { - "line": 426, + "line": 480, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 16498, - "end": 16554, + "start": 18486, + "end": 18542, "loc": { "start": { - "line": 426, + "line": 480, "column": 28 }, "end": { - "line": 426, + "line": 480, "column": 84 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16498, - "end": 16514, + "start": 18486, + "end": 18502, "loc": { "start": { - "line": 426, + "line": 480, "column": 28 }, "end": { - "line": 426, + "line": 480, "column": 44 }, "identifierName": "colorsCompressed" @@ -38342,29 +38342,29 @@ }, "right": { "type": "CallExpression", - "start": 16517, - "end": 16554, + "start": 18505, + "end": 18542, "loc": { "start": { - "line": 426, + "line": 480, "column": 47 }, "end": { - "line": 426, + "line": 480, "column": 84 } }, "callee": { "type": "Identifier", - "start": 16517, - "end": 16532, + "start": 18505, + "end": 18520, "loc": { "start": { - "line": 426, + "line": 480, "column": 47 }, "end": { - "line": 426, + "line": 480, "column": 62 }, "identifierName": "readIntensities" @@ -38374,29 +38374,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 16533, - "end": 16553, + "start": 18521, + "end": 18541, "loc": { "start": { - "line": 426, + "line": 480, "column": 63 }, "end": { - "line": 426, + "line": 480, "column": 83 } }, "object": { "type": "Identifier", - "start": 16533, - "end": 16543, + "start": 18521, + "end": 18531, "loc": { "start": { - "line": 426, + "line": 480, "column": 63 }, "end": { - "line": 426, + "line": 480, "column": 73 }, "identifierName": "attributes" @@ -38405,15 +38405,15 @@ }, "property": { "type": "Identifier", - "start": 16544, - "end": 16553, + "start": 18532, + "end": 18541, "loc": { "start": { - "line": 426, + "line": 480, "column": 74 }, "end": { - "line": 426, + "line": 480, "column": 83 }, "identifierName": "intensity" @@ -38428,15 +38428,15 @@ }, { "type": "BreakStatement", - "start": 16584, - "end": 16590, + "start": 18572, + "end": 18578, "loc": { "start": { - "line": 427, + "line": 481, "column": 28 }, "end": { - "line": 427, + "line": 481, "column": 34 } }, @@ -38445,15 +38445,15 @@ ], "test": { "type": "NumericLiteral", - "start": 16386, - "end": 16387, + "start": 18374, + "end": 18375, "loc": { "start": { - "line": 424, + "line": 478, "column": 29 }, "end": { - "line": 424, + "line": 478, "column": 30 } }, @@ -38466,44 +38466,44 @@ }, { "type": "SwitchCase", - "start": 16615, - "end": 17076, + "start": 18603, + "end": 19064, "loc": { "start": { - "line": 428, + "line": 482, "column": 24 }, "end": { - "line": 436, + "line": 490, "column": 34 } }, "consequent": [ { "type": "IfStatement", - "start": 16651, - "end": 16874, + "start": 18639, + "end": 18862, "loc": { "start": { - "line": 429, + "line": 483, "column": 28 }, "end": { - "line": 433, + "line": 487, "column": 29 } }, "test": { "type": "UnaryExpression", - "start": 16655, - "end": 16676, + "start": 18643, + "end": 18664, "loc": { "start": { - "line": 429, + "line": 483, "column": 32 }, "end": { - "line": 429, + "line": 483, "column": 53 } }, @@ -38511,29 +38511,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 16656, - "end": 16676, + "start": 18644, + "end": 18664, "loc": { "start": { - "line": 429, + "line": 483, "column": 33 }, "end": { - "line": 429, + "line": 483, "column": 53 } }, "object": { "type": "Identifier", - "start": 16656, - "end": 16666, + "start": 18644, + "end": 18654, "loc": { "start": { - "line": 429, + "line": 483, "column": 33 }, "end": { - "line": 429, + "line": 483, "column": 43 }, "identifierName": "attributes" @@ -38542,15 +38542,15 @@ }, "property": { "type": "Identifier", - "start": 16667, - "end": 16676, + "start": 18655, + "end": 18664, "loc": { "start": { - "line": 429, + "line": 483, "column": 44 }, "end": { - "line": 429, + "line": 483, "column": 53 }, "identifierName": "intensity" @@ -38565,72 +38565,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 16678, - "end": 16874, + "start": 18666, + "end": 18862, "loc": { "start": { - "line": 429, + "line": 483, "column": 55 }, "end": { - "line": 433, + "line": 487, "column": 29 } }, "body": [ { "type": "ExpressionStatement", - "start": 16712, - "end": 16734, + "start": 18700, + "end": 18722, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 16712, - "end": 16733, + "start": 18700, + "end": 18721, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 16712, - "end": 16731, + "start": 18700, + "end": 18719, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 51 } }, "object": { "type": "Identifier", - "start": 16712, - "end": 16722, + "start": 18700, + "end": 18710, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 42 }, "identifierName": "sceneModel" @@ -38639,15 +38639,15 @@ }, "property": { "type": "Identifier", - "start": 16723, - "end": 16731, + "start": 18711, + "end": 18719, "loc": { "start": { - "line": 430, + "line": 484, "column": 43 }, "end": { - "line": 430, + "line": 484, "column": 51 }, "identifierName": "finalize" @@ -38661,43 +38661,43 @@ }, { "type": "ExpressionStatement", - "start": 16767, - "end": 16804, + "start": 18755, + "end": 18792, "loc": { "start": { - "line": 431, + "line": 485, "column": 32 }, "end": { - "line": 431, + "line": 485, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 16767, - "end": 16803, + "start": 18755, + "end": 18791, "loc": { "start": { - "line": 431, + "line": 485, "column": 32 }, "end": { - "line": 431, + "line": 485, "column": 68 } }, "callee": { "type": "Identifier", - "start": 16767, - "end": 16773, + "start": 18755, + "end": 18761, "loc": { "start": { - "line": 431, + "line": 485, "column": 32 }, "end": { - "line": 431, + "line": 485, "column": 38 }, "identifierName": "reject" @@ -38707,15 +38707,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 16774, - "end": 16802, + "start": 18762, + "end": 18790, "loc": { "start": { - "line": 431, + "line": 485, "column": 39 }, "end": { - "line": 431, + "line": 485, "column": 67 } }, @@ -38730,15 +38730,15 @@ }, { "type": "ReturnStatement", - "start": 16837, - "end": 16844, + "start": 18825, + "end": 18832, "loc": { "start": { - "line": 432, + "line": 486, "column": 32 }, "end": { - "line": 432, + "line": 486, "column": 39 } }, @@ -38751,44 +38751,44 @@ }, { "type": "ExpressionStatement", - "start": 16903, - "end": 16955, + "start": 18891, + "end": 18943, "loc": { "start": { - "line": 434, + "line": 488, "column": 28 }, "end": { - "line": 434, + "line": 488, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 16903, - "end": 16954, + "start": 18891, + "end": 18942, "loc": { "start": { - "line": 434, + "line": 488, "column": 28 }, "end": { - "line": 434, + "line": 488, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16903, - "end": 16917, + "start": 18891, + "end": 18905, "loc": { "start": { - "line": 434, + "line": 488, "column": 28 }, "end": { - "line": 434, + "line": 488, "column": 42 }, "identifierName": "positionsValue" @@ -38797,29 +38797,29 @@ }, "right": { "type": "CallExpression", - "start": 16920, - "end": 16954, + "start": 18908, + "end": 18942, "loc": { "start": { - "line": 434, + "line": 488, "column": 45 }, "end": { - "line": 434, + "line": 488, "column": 79 } }, "callee": { "type": "Identifier", - "start": 16920, - "end": 16933, + "start": 18908, + "end": 18921, "loc": { "start": { - "line": 434, + "line": 488, "column": 45 }, "end": { - "line": 434, + "line": 488, "column": 58 }, "identifierName": "readPositions" @@ -38829,29 +38829,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 16934, - "end": 16953, + "start": 18922, + "end": 18941, "loc": { "start": { - "line": 434, + "line": 488, "column": 59 }, "end": { - "line": 434, + "line": 488, "column": 78 } }, "object": { "type": "Identifier", - "start": 16934, - "end": 16944, + "start": 18922, + "end": 18932, "loc": { "start": { - "line": 434, + "line": 488, "column": 59 }, "end": { - "line": 434, + "line": 488, "column": 69 }, "identifierName": "attributes" @@ -38860,15 +38860,15 @@ }, "property": { "type": "Identifier", - "start": 16945, - "end": 16953, + "start": 18933, + "end": 18941, "loc": { "start": { - "line": 434, + "line": 488, "column": 70 }, "end": { - "line": 434, + "line": 488, "column": 78 }, "identifierName": "POSITION" @@ -38883,44 +38883,44 @@ }, { "type": "ExpressionStatement", - "start": 16984, - "end": 17041, + "start": 18972, + "end": 19029, "loc": { "start": { - "line": 435, + "line": 489, "column": 28 }, "end": { - "line": 435, + "line": 489, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 16984, - "end": 17040, + "start": 18972, + "end": 19028, "loc": { "start": { - "line": 435, + "line": 489, "column": 28 }, "end": { - "line": 435, + "line": 489, "column": 84 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16984, - "end": 17000, + "start": 18972, + "end": 18988, "loc": { "start": { - "line": 435, + "line": 489, "column": 28 }, "end": { - "line": 435, + "line": 489, "column": 44 }, "identifierName": "colorsCompressed" @@ -38929,29 +38929,29 @@ }, "right": { "type": "CallExpression", - "start": 17003, - "end": 17040, + "start": 18991, + "end": 19028, "loc": { "start": { - "line": 435, + "line": 489, "column": 47 }, "end": { - "line": 435, + "line": 489, "column": 84 } }, "callee": { "type": "Identifier", - "start": 17003, - "end": 17018, + "start": 18991, + "end": 19006, "loc": { "start": { - "line": 435, + "line": 489, "column": 47 }, "end": { - "line": 435, + "line": 489, "column": 62 }, "identifierName": "readIntensities" @@ -38961,29 +38961,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 17019, - "end": 17039, + "start": 19007, + "end": 19027, "loc": { "start": { - "line": 435, + "line": 489, "column": 63 }, "end": { - "line": 435, + "line": 489, "column": 83 } }, "object": { "type": "Identifier", - "start": 17019, - "end": 17029, + "start": 19007, + "end": 19017, "loc": { "start": { - "line": 435, + "line": 489, "column": 63 }, "end": { - "line": 435, + "line": 489, "column": 73 }, "identifierName": "attributes" @@ -38992,15 +38992,15 @@ }, "property": { "type": "Identifier", - "start": 17030, - "end": 17039, + "start": 19018, + "end": 19027, "loc": { "start": { - "line": 435, + "line": 489, "column": 74 }, "end": { - "line": 435, + "line": 489, "column": 83 }, "identifierName": "intensity" @@ -39015,15 +39015,15 @@ }, { "type": "BreakStatement", - "start": 17070, - "end": 17076, + "start": 19058, + "end": 19064, "loc": { "start": { - "line": 436, + "line": 490, "column": 28 }, "end": { - "line": 436, + "line": 490, "column": 34 } }, @@ -39032,15 +39032,15 @@ ], "test": { "type": "NumericLiteral", - "start": 16620, - "end": 16621, + "start": 18608, + "end": 18609, "loc": { "start": { - "line": 428, + "line": 482, "column": 29 }, "end": { - "line": 428, + "line": 482, "column": 30 } }, @@ -39053,44 +39053,44 @@ }, { "type": "SwitchCase", - "start": 17101, - "end": 17591, + "start": 19089, + "end": 19579, "loc": { "start": { - "line": 437, + "line": 491, "column": 24 }, "end": { - "line": 445, + "line": 499, "column": 34 } }, "consequent": [ { "type": "IfStatement", - "start": 17137, - "end": 17360, + "start": 19125, + "end": 19348, "loc": { "start": { - "line": 438, + "line": 492, "column": 28 }, "end": { - "line": 442, + "line": 496, "column": 29 } }, "test": { "type": "UnaryExpression", - "start": 17141, - "end": 17162, + "start": 19129, + "end": 19150, "loc": { "start": { - "line": 438, + "line": 492, "column": 32 }, "end": { - "line": 438, + "line": 492, "column": 53 } }, @@ -39098,29 +39098,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 17142, - "end": 17162, + "start": 19130, + "end": 19150, "loc": { "start": { - "line": 438, + "line": 492, "column": 33 }, "end": { - "line": 438, + "line": 492, "column": 53 } }, "object": { "type": "Identifier", - "start": 17142, - "end": 17152, + "start": 19130, + "end": 19140, "loc": { "start": { - "line": 438, + "line": 492, "column": 33 }, "end": { - "line": 438, + "line": 492, "column": 43 }, "identifierName": "attributes" @@ -39129,15 +39129,15 @@ }, "property": { "type": "Identifier", - "start": 17153, - "end": 17162, + "start": 19141, + "end": 19150, "loc": { "start": { - "line": 438, + "line": 492, "column": 44 }, "end": { - "line": 438, + "line": 492, "column": 53 }, "identifierName": "intensity" @@ -39152,72 +39152,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 17164, - "end": 17360, + "start": 19152, + "end": 19348, "loc": { "start": { - "line": 438, + "line": 492, "column": 55 }, "end": { - "line": 442, + "line": 496, "column": 29 } }, "body": [ { "type": "ExpressionStatement", - "start": 17198, - "end": 17220, + "start": 19186, + "end": 19208, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 17198, - "end": 17219, + "start": 19186, + "end": 19207, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 17198, - "end": 17217, + "start": 19186, + "end": 19205, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 51 } }, "object": { "type": "Identifier", - "start": 17198, - "end": 17208, + "start": 19186, + "end": 19196, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 42 }, "identifierName": "sceneModel" @@ -39226,15 +39226,15 @@ }, "property": { "type": "Identifier", - "start": 17209, - "end": 17217, + "start": 19197, + "end": 19205, "loc": { "start": { - "line": 439, + "line": 493, "column": 43 }, "end": { - "line": 439, + "line": 493, "column": 51 }, "identifierName": "finalize" @@ -39248,43 +39248,43 @@ }, { "type": "ExpressionStatement", - "start": 17253, - "end": 17290, + "start": 19241, + "end": 19278, "loc": { "start": { - "line": 440, + "line": 494, "column": 32 }, "end": { - "line": 440, + "line": 494, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 17253, - "end": 17289, + "start": 19241, + "end": 19277, "loc": { "start": { - "line": 440, + "line": 494, "column": 32 }, "end": { - "line": 440, + "line": 494, "column": 68 } }, "callee": { "type": "Identifier", - "start": 17253, - "end": 17259, + "start": 19241, + "end": 19247, "loc": { "start": { - "line": 440, + "line": 494, "column": 32 }, "end": { - "line": 440, + "line": 494, "column": 38 }, "identifierName": "reject" @@ -39294,15 +39294,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 17260, - "end": 17288, + "start": 19248, + "end": 19276, "loc": { "start": { - "line": 440, + "line": 494, "column": 39 }, "end": { - "line": 440, + "line": 494, "column": 67 } }, @@ -39317,15 +39317,15 @@ }, { "type": "ReturnStatement", - "start": 17323, - "end": 17330, + "start": 19311, + "end": 19318, "loc": { "start": { - "line": 441, + "line": 495, "column": 32 }, "end": { - "line": 441, + "line": 495, "column": 39 } }, @@ -39338,44 +39338,44 @@ }, { "type": "ExpressionStatement", - "start": 17389, - "end": 17441, + "start": 19377, + "end": 19429, "loc": { "start": { - "line": 443, + "line": 497, "column": 28 }, "end": { - "line": 443, + "line": 497, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 17389, - "end": 17440, + "start": 19377, + "end": 19428, "loc": { "start": { - "line": 443, + "line": 497, "column": 28 }, "end": { - "line": 443, + "line": 497, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17389, - "end": 17403, + "start": 19377, + "end": 19391, "loc": { "start": { - "line": 443, + "line": 497, "column": 28 }, "end": { - "line": 443, + "line": 497, "column": 42 }, "identifierName": "positionsValue" @@ -39384,29 +39384,29 @@ }, "right": { "type": "CallExpression", - "start": 17406, - "end": 17440, + "start": 19394, + "end": 19428, "loc": { "start": { - "line": 443, + "line": 497, "column": 45 }, "end": { - "line": 443, + "line": 497, "column": 79 } }, "callee": { "type": "Identifier", - "start": 17406, - "end": 17419, + "start": 19394, + "end": 19407, "loc": { "start": { - "line": 443, + "line": 497, "column": 45 }, "end": { - "line": 443, + "line": 497, "column": 58 }, "identifierName": "readPositions" @@ -39416,29 +39416,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 17420, - "end": 17439, + "start": 19408, + "end": 19427, "loc": { "start": { - "line": 443, + "line": 497, "column": 59 }, "end": { - "line": 443, + "line": 497, "column": 78 } }, "object": { "type": "Identifier", - "start": 17420, - "end": 17430, + "start": 19408, + "end": 19418, "loc": { "start": { - "line": 443, + "line": 497, "column": 59 }, "end": { - "line": 443, + "line": 497, "column": 69 }, "identifierName": "attributes" @@ -39447,15 +39447,15 @@ }, "property": { "type": "Identifier", - "start": 17431, - "end": 17439, + "start": 19419, + "end": 19427, "loc": { "start": { - "line": 443, + "line": 497, "column": 70 }, "end": { - "line": 443, + "line": 497, "column": 78 }, "identifierName": "POSITION" @@ -39470,44 +39470,44 @@ }, { "type": "ExpressionStatement", - "start": 17470, - "end": 17556, + "start": 19458, + "end": 19544, "loc": { "start": { - "line": 444, + "line": 498, "column": 28 }, "end": { - "line": 444, + "line": 498, "column": 114 } }, "expression": { "type": "AssignmentExpression", - "start": 17470, - "end": 17555, + "start": 19458, + "end": 19543, "loc": { "start": { - "line": 444, + "line": 498, "column": 28 }, "end": { - "line": 444, + "line": 498, "column": 113 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17470, - "end": 17486, + "start": 19458, + "end": 19474, "loc": { "start": { - "line": 444, + "line": 498, "column": 28 }, "end": { - "line": 444, + "line": 498, "column": 44 }, "identifierName": "colorsCompressed" @@ -39516,29 +39516,29 @@ }, "right": { "type": "CallExpression", - "start": 17489, - "end": 17555, + "start": 19477, + "end": 19543, "loc": { "start": { - "line": 444, + "line": 498, "column": 47 }, "end": { - "line": 444, + "line": 498, "column": 113 } }, "callee": { "type": "Identifier", - "start": 17489, - "end": 17513, + "start": 19477, + "end": 19501, "loc": { "start": { - "line": 444, + "line": 498, "column": 47 }, "end": { - "line": 444, + "line": 498, "column": 71 }, "identifierName": "readColorsAndIntensities" @@ -39548,29 +39548,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 17514, - "end": 17532, + "start": 19502, + "end": 19520, "loc": { "start": { - "line": 444, + "line": 498, "column": 72 }, "end": { - "line": 444, + "line": 498, "column": 90 } }, "object": { "type": "Identifier", - "start": 17514, - "end": 17524, + "start": 19502, + "end": 19512, "loc": { "start": { - "line": 444, + "line": 498, "column": 72 }, "end": { - "line": 444, + "line": 498, "column": 82 }, "identifierName": "attributes" @@ -39579,15 +39579,15 @@ }, "property": { "type": "Identifier", - "start": 17525, - "end": 17532, + "start": 19513, + "end": 19520, "loc": { "start": { - "line": 444, + "line": 498, "column": 83 }, "end": { - "line": 444, + "line": 498, "column": 90 }, "identifierName": "COLOR_0" @@ -39598,29 +39598,29 @@ }, { "type": "MemberExpression", - "start": 17534, - "end": 17554, + "start": 19522, + "end": 19542, "loc": { "start": { - "line": 444, + "line": 498, "column": 92 }, "end": { - "line": 444, + "line": 498, "column": 112 } }, "object": { "type": "Identifier", - "start": 17534, - "end": 17544, + "start": 19522, + "end": 19532, "loc": { "start": { - "line": 444, + "line": 498, "column": 92 }, "end": { - "line": 444, + "line": 498, "column": 102 }, "identifierName": "attributes" @@ -39629,15 +39629,15 @@ }, "property": { "type": "Identifier", - "start": 17545, - "end": 17554, + "start": 19533, + "end": 19542, "loc": { "start": { - "line": 444, + "line": 498, "column": 103 }, "end": { - "line": 444, + "line": 498, "column": 112 }, "identifierName": "intensity" @@ -39652,15 +39652,15 @@ }, { "type": "BreakStatement", - "start": 17585, - "end": 17591, + "start": 19573, + "end": 19579, "loc": { "start": { - "line": 445, + "line": 499, "column": 28 }, "end": { - "line": 445, + "line": 499, "column": 34 } }, @@ -39669,15 +39669,15 @@ ], "test": { "type": "NumericLiteral", - "start": 17106, - "end": 17107, + "start": 19094, + "end": 19095, "loc": { "start": { - "line": 437, + "line": 491, "column": 29 }, "end": { - "line": 437, + "line": 491, "column": 30 } }, @@ -39690,44 +39690,44 @@ }, { "type": "SwitchCase", - "start": 17616, - "end": 18106, + "start": 19604, + "end": 20094, "loc": { "start": { - "line": 446, + "line": 500, "column": 24 }, "end": { - "line": 454, + "line": 508, "column": 34 } }, "consequent": [ { "type": "IfStatement", - "start": 17652, - "end": 17875, + "start": 19640, + "end": 19863, "loc": { "start": { - "line": 447, + "line": 501, "column": 28 }, "end": { - "line": 451, + "line": 505, "column": 29 } }, "test": { "type": "UnaryExpression", - "start": 17656, - "end": 17677, + "start": 19644, + "end": 19665, "loc": { "start": { - "line": 447, + "line": 501, "column": 32 }, "end": { - "line": 447, + "line": 501, "column": 53 } }, @@ -39735,29 +39735,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 17657, - "end": 17677, + "start": 19645, + "end": 19665, "loc": { "start": { - "line": 447, + "line": 501, "column": 33 }, "end": { - "line": 447, + "line": 501, "column": 53 } }, "object": { "type": "Identifier", - "start": 17657, - "end": 17667, + "start": 19645, + "end": 19655, "loc": { "start": { - "line": 447, + "line": 501, "column": 33 }, "end": { - "line": 447, + "line": 501, "column": 43 }, "identifierName": "attributes" @@ -39766,15 +39766,15 @@ }, "property": { "type": "Identifier", - "start": 17668, - "end": 17677, + "start": 19656, + "end": 19665, "loc": { "start": { - "line": 447, + "line": 501, "column": 44 }, "end": { - "line": 447, + "line": 501, "column": 53 }, "identifierName": "intensity" @@ -39789,72 +39789,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 17679, - "end": 17875, + "start": 19667, + "end": 19863, "loc": { "start": { - "line": 447, + "line": 501, "column": 55 }, "end": { - "line": 451, + "line": 505, "column": 29 } }, "body": [ { "type": "ExpressionStatement", - "start": 17713, - "end": 17735, + "start": 19701, + "end": 19723, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 17713, - "end": 17734, + "start": 19701, + "end": 19722, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 17713, - "end": 17732, + "start": 19701, + "end": 19720, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 51 } }, "object": { "type": "Identifier", - "start": 17713, - "end": 17723, + "start": 19701, + "end": 19711, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 42 }, "identifierName": "sceneModel" @@ -39863,15 +39863,15 @@ }, "property": { "type": "Identifier", - "start": 17724, - "end": 17732, + "start": 19712, + "end": 19720, "loc": { "start": { - "line": 448, + "line": 502, "column": 43 }, "end": { - "line": 448, + "line": 502, "column": 51 }, "identifierName": "finalize" @@ -39885,43 +39885,43 @@ }, { "type": "ExpressionStatement", - "start": 17768, - "end": 17805, + "start": 19756, + "end": 19793, "loc": { "start": { - "line": 449, + "line": 503, "column": 32 }, "end": { - "line": 449, + "line": 503, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 17768, - "end": 17804, + "start": 19756, + "end": 19792, "loc": { "start": { - "line": 449, + "line": 503, "column": 32 }, "end": { - "line": 449, + "line": 503, "column": 68 } }, "callee": { "type": "Identifier", - "start": 17768, - "end": 17774, + "start": 19756, + "end": 19762, "loc": { "start": { - "line": 449, + "line": 503, "column": 32 }, "end": { - "line": 449, + "line": 503, "column": 38 }, "identifierName": "reject" @@ -39931,15 +39931,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 17775, - "end": 17803, + "start": 19763, + "end": 19791, "loc": { "start": { - "line": 449, + "line": 503, "column": 39 }, "end": { - "line": 449, + "line": 503, "column": 67 } }, @@ -39954,15 +39954,15 @@ }, { "type": "ReturnStatement", - "start": 17838, - "end": 17845, + "start": 19826, + "end": 19833, "loc": { "start": { - "line": 450, + "line": 504, "column": 32 }, "end": { - "line": 450, + "line": 504, "column": 39 } }, @@ -39975,44 +39975,44 @@ }, { "type": "ExpressionStatement", - "start": 17904, - "end": 17956, + "start": 19892, + "end": 19944, "loc": { "start": { - "line": 452, + "line": 506, "column": 28 }, "end": { - "line": 452, + "line": 506, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 17904, - "end": 17955, + "start": 19892, + "end": 19943, "loc": { "start": { - "line": 452, + "line": 506, "column": 28 }, "end": { - "line": 452, + "line": 506, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17904, - "end": 17918, + "start": 19892, + "end": 19906, "loc": { "start": { - "line": 452, + "line": 506, "column": 28 }, "end": { - "line": 452, + "line": 506, "column": 42 }, "identifierName": "positionsValue" @@ -40021,29 +40021,29 @@ }, "right": { "type": "CallExpression", - "start": 17921, - "end": 17955, + "start": 19909, + "end": 19943, "loc": { "start": { - "line": 452, + "line": 506, "column": 45 }, "end": { - "line": 452, + "line": 506, "column": 79 } }, "callee": { "type": "Identifier", - "start": 17921, - "end": 17934, + "start": 19909, + "end": 19922, "loc": { "start": { - "line": 452, + "line": 506, "column": 45 }, "end": { - "line": 452, + "line": 506, "column": 58 }, "identifierName": "readPositions" @@ -40053,29 +40053,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 17935, - "end": 17954, + "start": 19923, + "end": 19942, "loc": { "start": { - "line": 452, + "line": 506, "column": 59 }, "end": { - "line": 452, + "line": 506, "column": 78 } }, "object": { "type": "Identifier", - "start": 17935, - "end": 17945, + "start": 19923, + "end": 19933, "loc": { "start": { - "line": 452, + "line": 506, "column": 59 }, "end": { - "line": 452, + "line": 506, "column": 69 }, "identifierName": "attributes" @@ -40084,15 +40084,15 @@ }, "property": { "type": "Identifier", - "start": 17946, - "end": 17954, + "start": 19934, + "end": 19942, "loc": { "start": { - "line": 452, + "line": 506, "column": 70 }, "end": { - "line": 452, + "line": 506, "column": 78 }, "identifierName": "POSITION" @@ -40107,44 +40107,44 @@ }, { "type": "ExpressionStatement", - "start": 17985, - "end": 18071, + "start": 19973, + "end": 20059, "loc": { "start": { - "line": 453, + "line": 507, "column": 28 }, "end": { - "line": 453, + "line": 507, "column": 114 } }, "expression": { "type": "AssignmentExpression", - "start": 17985, - "end": 18070, + "start": 19973, + "end": 20058, "loc": { "start": { - "line": 453, + "line": 507, "column": 28 }, "end": { - "line": 453, + "line": 507, "column": 113 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17985, - "end": 18001, + "start": 19973, + "end": 19989, "loc": { "start": { - "line": 453, + "line": 507, "column": 28 }, "end": { - "line": 453, + "line": 507, "column": 44 }, "identifierName": "colorsCompressed" @@ -40153,29 +40153,29 @@ }, "right": { "type": "CallExpression", - "start": 18004, - "end": 18070, + "start": 19992, + "end": 20058, "loc": { "start": { - "line": 453, + "line": 507, "column": 47 }, "end": { - "line": 453, + "line": 507, "column": 113 } }, "callee": { "type": "Identifier", - "start": 18004, - "end": 18028, + "start": 19992, + "end": 20016, "loc": { "start": { - "line": 453, + "line": 507, "column": 47 }, "end": { - "line": 453, + "line": 507, "column": 71 }, "identifierName": "readColorsAndIntensities" @@ -40185,29 +40185,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 18029, - "end": 18047, + "start": 20017, + "end": 20035, "loc": { "start": { - "line": 453, + "line": 507, "column": 72 }, "end": { - "line": 453, + "line": 507, "column": 90 } }, "object": { "type": "Identifier", - "start": 18029, - "end": 18039, + "start": 20017, + "end": 20027, "loc": { "start": { - "line": 453, + "line": 507, "column": 72 }, "end": { - "line": 453, + "line": 507, "column": 82 }, "identifierName": "attributes" @@ -40216,15 +40216,15 @@ }, "property": { "type": "Identifier", - "start": 18040, - "end": 18047, + "start": 20028, + "end": 20035, "loc": { "start": { - "line": 453, + "line": 507, "column": 83 }, "end": { - "line": 453, + "line": 507, "column": 90 }, "identifierName": "COLOR_0" @@ -40235,29 +40235,29 @@ }, { "type": "MemberExpression", - "start": 18049, - "end": 18069, + "start": 20037, + "end": 20057, "loc": { "start": { - "line": 453, + "line": 507, "column": 92 }, "end": { - "line": 453, + "line": 507, "column": 112 } }, "object": { "type": "Identifier", - "start": 18049, - "end": 18059, + "start": 20037, + "end": 20047, "loc": { "start": { - "line": 453, + "line": 507, "column": 92 }, "end": { - "line": 453, + "line": 507, "column": 102 }, "identifierName": "attributes" @@ -40266,15 +40266,15 @@ }, "property": { "type": "Identifier", - "start": 18060, - "end": 18069, + "start": 20048, + "end": 20057, "loc": { "start": { - "line": 453, + "line": 507, "column": 103 }, "end": { - "line": 453, + "line": 507, "column": 112 }, "identifierName": "intensity" @@ -40289,15 +40289,15 @@ }, { "type": "BreakStatement", - "start": 18100, - "end": 18106, + "start": 20088, + "end": 20094, "loc": { "start": { - "line": 454, + "line": 508, "column": 28 }, "end": { - "line": 454, + "line": 508, "column": 34 } }, @@ -40306,15 +40306,15 @@ ], "test": { "type": "NumericLiteral", - "start": 17621, - "end": 17622, + "start": 19609, + "end": 19610, "loc": { "start": { - "line": 446, + "line": 500, "column": 29 }, "end": { - "line": 446, + "line": 500, "column": 30 } }, @@ -40329,44 +40329,44 @@ }, { "type": "VariableDeclaration", - "start": 18150, - "end": 18216, + "start": 20138, + "end": 20204, "loc": { "start": { - "line": 457, + "line": 511, "column": 20 }, "end": { - "line": 457, + "line": 511, "column": 86 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18156, - "end": 18215, + "start": 20144, + "end": 20203, "loc": { "start": { - "line": 457, + "line": 511, "column": 26 }, "end": { - "line": 457, + "line": 511, "column": 85 } }, "id": { "type": "Identifier", - "start": 18156, - "end": 18168, + "start": 20144, + "end": 20156, "loc": { "start": { - "line": 457, + "line": 511, "column": 26 }, "end": { - "line": 457, + "line": 511, "column": 38 }, "identifierName": "pointsChunks" @@ -40375,29 +40375,29 @@ }, "init": { "type": "CallExpression", - "start": 18171, - "end": 18215, + "start": 20159, + "end": 20203, "loc": { "start": { - "line": 457, + "line": 511, "column": 41 }, "end": { - "line": 457, + "line": 511, "column": 85 } }, "callee": { "type": "Identifier", - "start": 18171, - "end": 18181, + "start": 20159, + "end": 20169, "loc": { "start": { - "line": 457, + "line": 511, "column": 41 }, "end": { - "line": 457, + "line": 511, "column": 51 }, "identifierName": "chunkArray" @@ -40407,15 +40407,15 @@ "arguments": [ { "type": "Identifier", - "start": 18182, - "end": 18196, + "start": 20170, + "end": 20184, "loc": { "start": { - "line": 457, + "line": 511, "column": 52 }, "end": { - "line": 457, + "line": 511, "column": 66 }, "identifierName": "positionsValue" @@ -40424,29 +40424,29 @@ }, { "type": "BinaryExpression", - "start": 18198, - "end": 18214, + "start": 20186, + "end": 20202, "loc": { "start": { - "line": 457, + "line": 511, "column": 68 }, "end": { - "line": 457, + "line": 511, "column": 84 } }, "left": { "type": "Identifier", - "start": 18198, - "end": 18210, + "start": 20186, + "end": 20198, "loc": { "start": { - "line": 457, + "line": 511, "column": 68 }, "end": { - "line": 457, + "line": 511, "column": 80 }, "identifierName": "MAX_VERTICES" @@ -40456,15 +40456,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 18213, - "end": 18214, + "start": 20201, + "end": 20202, "loc": { "start": { - "line": 457, + "line": 511, "column": 83 }, "end": { - "line": 457, + "line": 511, "column": 84 } }, @@ -40483,44 +40483,44 @@ }, { "type": "VariableDeclaration", - "start": 18237, - "end": 18305, + "start": 20225, + "end": 20293, "loc": { "start": { - "line": 458, + "line": 512, "column": 20 }, "end": { - "line": 458, + "line": 512, "column": 88 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18243, - "end": 18304, + "start": 20231, + "end": 20292, "loc": { "start": { - "line": 458, + "line": 512, "column": 26 }, "end": { - "line": 458, + "line": 512, "column": 87 } }, "id": { "type": "Identifier", - "start": 18243, - "end": 18255, + "start": 20231, + "end": 20243, "loc": { "start": { - "line": 458, + "line": 512, "column": 26 }, "end": { - "line": 458, + "line": 512, "column": 38 }, "identifierName": "colorsChunks" @@ -40529,29 +40529,29 @@ }, "init": { "type": "CallExpression", - "start": 18258, - "end": 18304, + "start": 20246, + "end": 20292, "loc": { "start": { - "line": 458, + "line": 512, "column": 41 }, "end": { - "line": 458, + "line": 512, "column": 87 } }, "callee": { "type": "Identifier", - "start": 18258, - "end": 18268, + "start": 20246, + "end": 20256, "loc": { "start": { - "line": 458, + "line": 512, "column": 41 }, "end": { - "line": 458, + "line": 512, "column": 51 }, "identifierName": "chunkArray" @@ -40561,15 +40561,15 @@ "arguments": [ { "type": "Identifier", - "start": 18269, - "end": 18285, + "start": 20257, + "end": 20273, "loc": { "start": { - "line": 458, + "line": 512, "column": 52 }, "end": { - "line": 458, + "line": 512, "column": 68 }, "identifierName": "colorsCompressed" @@ -40578,29 +40578,29 @@ }, { "type": "BinaryExpression", - "start": 18287, - "end": 18303, + "start": 20275, + "end": 20291, "loc": { "start": { - "line": 458, + "line": 512, "column": 70 }, "end": { - "line": 458, + "line": 512, "column": 86 } }, "left": { "type": "Identifier", - "start": 18287, - "end": 18299, + "start": 20275, + "end": 20287, "loc": { "start": { - "line": 458, + "line": 512, "column": 70 }, "end": { - "line": 458, + "line": 512, "column": 82 }, "identifierName": "MAX_VERTICES" @@ -40610,15 +40610,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 18302, - "end": 18303, + "start": 20290, + "end": 20291, "loc": { "start": { - "line": 458, + "line": 512, "column": 85 }, "end": { - "line": 458, + "line": 512, "column": 86 } }, @@ -40637,44 +40637,44 @@ }, { "type": "VariableDeclaration", - "start": 18326, - "end": 18345, + "start": 20314, + "end": 20333, "loc": { "start": { - "line": 459, + "line": 513, "column": 20 }, "end": { - "line": 459, + "line": 513, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18332, - "end": 18344, + "start": 20320, + "end": 20332, "loc": { "start": { - "line": 459, + "line": 513, "column": 26 }, "end": { - "line": 459, + "line": 513, "column": 38 } }, "id": { "type": "Identifier", - "start": 18332, - "end": 18339, + "start": 20320, + "end": 20327, "loc": { "start": { - "line": 459, + "line": 513, "column": 26 }, "end": { - "line": 459, + "line": 513, "column": 33 }, "identifierName": "meshIds" @@ -40683,15 +40683,15 @@ }, "init": { "type": "ArrayExpression", - "start": 18342, - "end": 18344, + "start": 20330, + "end": 20332, "loc": { "start": { - "line": 459, + "line": 513, "column": 36 }, "end": { - "line": 459, + "line": 513, "column": 38 } }, @@ -40703,58 +40703,58 @@ }, { "type": "ForStatement", - "start": 18367, - "end": 18868, + "start": 20355, + "end": 20856, "loc": { "start": { - "line": 461, + "line": 515, "column": 20 }, "end": { - "line": 470, + "line": 524, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 18372, - "end": 18408, + "start": 20360, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 25 }, "end": { - "line": 461, + "line": 515, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18376, - "end": 18381, + "start": 20364, + "end": 20369, "loc": { "start": { - "line": 461, + "line": 515, "column": 29 }, "end": { - "line": 461, + "line": 515, "column": 34 } }, "id": { "type": "Identifier", - "start": 18376, - "end": 18377, + "start": 20364, + "end": 20365, "loc": { "start": { - "line": 461, + "line": 515, "column": 29 }, "end": { - "line": 461, + "line": 515, "column": 30 }, "identifierName": "i" @@ -40763,15 +40763,15 @@ }, "init": { "type": "NumericLiteral", - "start": 18380, - "end": 18381, + "start": 20368, + "end": 20369, "loc": { "start": { - "line": 461, + "line": 515, "column": 33 }, "end": { - "line": 461, + "line": 515, "column": 34 } }, @@ -40784,29 +40784,29 @@ }, { "type": "VariableDeclarator", - "start": 18383, - "end": 18408, + "start": 20371, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 36 }, "end": { - "line": 461, + "line": 515, "column": 61 } }, "id": { "type": "Identifier", - "start": 18383, - "end": 18386, + "start": 20371, + "end": 20374, "loc": { "start": { - "line": 461, + "line": 515, "column": 36 }, "end": { - "line": 461, + "line": 515, "column": 39 }, "identifierName": "len" @@ -40815,29 +40815,29 @@ }, "init": { "type": "MemberExpression", - "start": 18389, - "end": 18408, + "start": 20377, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 42 }, "end": { - "line": 461, + "line": 515, "column": 61 } }, "object": { "type": "Identifier", - "start": 18389, - "end": 18401, + "start": 20377, + "end": 20389, "loc": { "start": { - "line": 461, + "line": 515, "column": 42 }, "end": { - "line": 461, + "line": 515, "column": 54 }, "identifierName": "pointsChunks" @@ -40846,15 +40846,15 @@ }, "property": { "type": "Identifier", - "start": 18402, - "end": 18408, + "start": 20390, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 55 }, "end": { - "line": 461, + "line": 515, "column": 61 }, "identifierName": "length" @@ -40869,29 +40869,29 @@ }, "test": { "type": "BinaryExpression", - "start": 18410, - "end": 18417, + "start": 20398, + "end": 20405, "loc": { "start": { - "line": 461, + "line": 515, "column": 63 }, "end": { - "line": 461, + "line": 515, "column": 70 } }, "left": { "type": "Identifier", - "start": 18410, - "end": 18411, + "start": 20398, + "end": 20399, "loc": { "start": { - "line": 461, + "line": 515, "column": 63 }, "end": { - "line": 461, + "line": 515, "column": 64 }, "identifierName": "i" @@ -40901,15 +40901,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 18414, - "end": 18417, + "start": 20402, + "end": 20405, "loc": { "start": { - "line": 461, + "line": 515, "column": 67 }, "end": { - "line": 461, + "line": 515, "column": 70 }, "identifierName": "len" @@ -40919,15 +40919,15 @@ }, "update": { "type": "UpdateExpression", - "start": 18419, - "end": 18422, + "start": 20407, + "end": 20410, "loc": { "start": { - "line": 461, + "line": 515, "column": 72 }, "end": { - "line": 461, + "line": 515, "column": 75 } }, @@ -40935,15 +40935,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 18419, - "end": 18420, + "start": 20407, + "end": 20408, "loc": { "start": { - "line": 461, + "line": 515, "column": 72 }, "end": { - "line": 461, + "line": 515, "column": 73 }, "identifierName": "i" @@ -40953,59 +40953,59 @@ }, "body": { "type": "BlockStatement", - "start": 18424, - "end": 18868, + "start": 20412, + "end": 20856, "loc": { "start": { - "line": 461, + "line": 515, "column": 77 }, "end": { - "line": 470, + "line": 524, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 18450, - "end": 18482, + "start": 20438, + "end": 20470, "loc": { "start": { - "line": 462, + "line": 516, "column": 24 }, "end": { - "line": 462, + "line": 516, "column": 56 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18456, - "end": 18481, + "start": 20444, + "end": 20469, "loc": { "start": { - "line": 462, + "line": 516, "column": 30 }, "end": { - "line": 462, + "line": 516, "column": 55 } }, "id": { "type": "Identifier", - "start": 18456, - "end": 18462, + "start": 20444, + "end": 20450, "loc": { "start": { - "line": 462, + "line": 516, "column": 30 }, "end": { - "line": 462, + "line": 516, "column": 36 }, "identifierName": "meshId" @@ -41014,30 +41014,30 @@ }, "init": { "type": "TemplateLiteral", - "start": 18465, - "end": 18481, + "start": 20453, + "end": 20469, "loc": { "start": { - "line": 462, + "line": 516, "column": 39 }, "end": { - "line": 462, + "line": 516, "column": 55 } }, "expressions": [ { "type": "Identifier", - "start": 18478, - "end": 18479, + "start": 20466, + "end": 20467, "loc": { "start": { - "line": 462, + "line": 516, "column": 52 }, "end": { - "line": 462, + "line": 516, "column": 53 }, "identifierName": "i" @@ -41048,15 +41048,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 18466, - "end": 18476, + "start": 20454, + "end": 20464, "loc": { "start": { - "line": 462, + "line": 516, "column": 40 }, "end": { - "line": 462, + "line": 516, "column": 50 } }, @@ -41068,15 +41068,15 @@ }, { "type": "TemplateElement", - "start": 18480, - "end": 18480, + "start": 20468, + "end": 20468, "loc": { "start": { - "line": 462, + "line": 516, "column": 54 }, "end": { - "line": 462, + "line": 516, "column": 54 } }, @@ -41094,57 +41094,57 @@ }, { "type": "ExpressionStatement", - "start": 18507, - "end": 18528, + "start": 20495, + "end": 20516, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 45 } }, "expression": { "type": "CallExpression", - "start": 18507, - "end": 18527, + "start": 20495, + "end": 20515, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 44 } }, "callee": { "type": "MemberExpression", - "start": 18507, - "end": 18519, + "start": 20495, + "end": 20507, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 36 } }, "object": { "type": "Identifier", - "start": 18507, - "end": 18514, + "start": 20495, + "end": 20502, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 31 }, "identifierName": "meshIds" @@ -41153,15 +41153,15 @@ }, "property": { "type": "Identifier", - "start": 18515, - "end": 18519, + "start": 20503, + "end": 20507, "loc": { "start": { - "line": 463, + "line": 517, "column": 32 }, "end": { - "line": 463, + "line": 517, "column": 36 }, "identifierName": "push" @@ -41173,15 +41173,15 @@ "arguments": [ { "type": "Identifier", - "start": 18520, - "end": 18526, + "start": 20508, + "end": 20514, "loc": { "start": { - "line": 463, + "line": 517, "column": 37 }, "end": { - "line": 463, + "line": 517, "column": 43 }, "identifierName": "meshId" @@ -41193,57 +41193,57 @@ }, { "type": "ExpressionStatement", - "start": 18553, - "end": 18846, + "start": 20541, + "end": 20834, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 469, + "line": 523, "column": 27 } }, "expression": { "type": "CallExpression", - "start": 18553, - "end": 18845, + "start": 20541, + "end": 20833, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 469, + "line": 523, "column": 26 } }, "callee": { "type": "MemberExpression", - "start": 18553, - "end": 18574, + "start": 20541, + "end": 20562, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 464, + "line": 518, "column": 45 } }, "object": { "type": "Identifier", - "start": 18553, - "end": 18563, + "start": 20541, + "end": 20551, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 464, + "line": 518, "column": 34 }, "identifierName": "sceneModel" @@ -41252,15 +41252,15 @@ }, "property": { "type": "Identifier", - "start": 18564, - "end": 18574, + "start": 20552, + "end": 20562, "loc": { "start": { - "line": 464, + "line": 518, "column": 35 }, "end": { - "line": 464, + "line": 518, "column": 45 }, "identifierName": "createMesh" @@ -41272,30 +41272,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 18575, - "end": 18844, + "start": 20563, + "end": 20832, "loc": { "start": { - "line": 464, + "line": 518, "column": 46 }, "end": { - "line": 469, + "line": 523, "column": 25 } }, "properties": [ { "type": "ObjectProperty", - "start": 18605, - "end": 18615, + "start": 20593, + "end": 20603, "loc": { "start": { - "line": 465, + "line": 519, "column": 28 }, "end": { - "line": 465, + "line": 519, "column": 38 } }, @@ -41304,15 +41304,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18605, - "end": 18607, + "start": 20593, + "end": 20595, "loc": { "start": { - "line": 465, + "line": 519, "column": 28 }, "end": { - "line": 465, + "line": 519, "column": 30 }, "identifierName": "id" @@ -41321,15 +41321,15 @@ }, "value": { "type": "Identifier", - "start": 18609, - "end": 18615, + "start": 20597, + "end": 20603, "loc": { "start": { - "line": 465, + "line": 519, "column": 32 }, "end": { - "line": 465, + "line": 519, "column": 38 }, "identifierName": "meshId" @@ -41339,15 +41339,15 @@ }, { "type": "ObjectProperty", - "start": 18645, - "end": 18664, + "start": 20633, + "end": 20652, "loc": { "start": { - "line": 466, + "line": 520, "column": 28 }, "end": { - "line": 466, + "line": 520, "column": 47 } }, @@ -41356,15 +41356,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18645, - "end": 18654, + "start": 20633, + "end": 20642, "loc": { "start": { - "line": 466, + "line": 520, "column": 28 }, "end": { - "line": 466, + "line": 520, "column": 37 }, "identifierName": "primitive" @@ -41373,15 +41373,15 @@ }, "value": { "type": "StringLiteral", - "start": 18656, - "end": 18664, + "start": 20644, + "end": 20652, "loc": { "start": { - "line": 466, + "line": 520, "column": 39 }, "end": { - "line": 466, + "line": 520, "column": 47 } }, @@ -41394,15 +41394,15 @@ }, { "type": "ObjectProperty", - "start": 18694, - "end": 18720, + "start": 20682, + "end": 20708, "loc": { "start": { - "line": 467, + "line": 521, "column": 28 }, "end": { - "line": 467, + "line": 521, "column": 54 } }, @@ -41411,15 +41411,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18694, - "end": 18703, + "start": 20682, + "end": 20691, "loc": { "start": { - "line": 467, + "line": 521, "column": 28 }, "end": { - "line": 467, + "line": 521, "column": 37 }, "identifierName": "positions" @@ -41428,29 +41428,29 @@ }, "value": { "type": "MemberExpression", - "start": 18705, - "end": 18720, + "start": 20693, + "end": 20708, "loc": { "start": { - "line": 467, + "line": 521, "column": 39 }, "end": { - "line": 467, + "line": 521, "column": 54 } }, "object": { "type": "Identifier", - "start": 18705, - "end": 18717, + "start": 20693, + "end": 20705, "loc": { "start": { - "line": 467, + "line": 521, "column": 39 }, "end": { - "line": 467, + "line": 521, "column": 51 }, "identifierName": "pointsChunks" @@ -41459,15 +41459,15 @@ }, "property": { "type": "Identifier", - "start": 18718, - "end": 18719, + "start": 20706, + "end": 20707, "loc": { "start": { - "line": 467, + "line": 521, "column": 52 }, "end": { - "line": 467, + "line": 521, "column": 53 }, "identifierName": "i" @@ -41479,15 +41479,15 @@ }, { "type": "ObjectProperty", - "start": 18750, - "end": 18818, + "start": 20738, + "end": 20806, "loc": { "start": { - "line": 468, + "line": 522, "column": 28 }, "end": { - "line": 468, + "line": 522, "column": 96 } }, @@ -41496,15 +41496,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18750, - "end": 18766, + "start": 20738, + "end": 20754, "loc": { "start": { - "line": 468, + "line": 522, "column": 28 }, "end": { - "line": 468, + "line": 522, "column": 44 }, "identifierName": "colorsCompressed" @@ -41513,43 +41513,43 @@ }, "value": { "type": "ConditionalExpression", - "start": 18768, - "end": 18818, + "start": 20756, + "end": 20806, "loc": { "start": { - "line": 468, + "line": 522, "column": 46 }, "end": { - "line": 468, + "line": 522, "column": 96 } }, "test": { "type": "BinaryExpression", - "start": 18769, - "end": 18792, + "start": 20757, + "end": 20780, "loc": { "start": { - "line": 468, + "line": 522, "column": 47 }, "end": { - "line": 468, + "line": 522, "column": 70 } }, "left": { "type": "Identifier", - "start": 18769, - "end": 18770, + "start": 20757, + "end": 20758, "loc": { "start": { - "line": 468, + "line": 522, "column": 47 }, "end": { - "line": 468, + "line": 522, "column": 48 }, "identifierName": "i" @@ -41559,29 +41559,29 @@ "operator": "<", "right": { "type": "MemberExpression", - "start": 18773, - "end": 18792, + "start": 20761, + "end": 20780, "loc": { "start": { - "line": 468, + "line": 522, "column": 51 }, "end": { - "line": 468, + "line": 522, "column": 70 } }, "object": { "type": "Identifier", - "start": 18773, - "end": 18785, + "start": 20761, + "end": 20773, "loc": { "start": { - "line": 468, + "line": 522, "column": 51 }, "end": { - "line": 468, + "line": 522, "column": 63 }, "identifierName": "colorsChunks" @@ -41590,15 +41590,15 @@ }, "property": { "type": "Identifier", - "start": 18786, - "end": 18792, + "start": 20774, + "end": 20780, "loc": { "start": { - "line": 468, + "line": 522, "column": 64 }, "end": { - "line": 468, + "line": 522, "column": 70 }, "identifierName": "length" @@ -41609,34 +41609,34 @@ }, "extra": { "parenthesized": true, - "parenStart": 18768 + "parenStart": 20756 } }, "consequent": { "type": "MemberExpression", - "start": 18796, - "end": 18811, + "start": 20784, + "end": 20799, "loc": { "start": { - "line": 468, + "line": 522, "column": 74 }, "end": { - "line": 468, + "line": 522, "column": 89 } }, "object": { "type": "Identifier", - "start": 18796, - "end": 18808, + "start": 20784, + "end": 20796, "loc": { "start": { - "line": 468, + "line": 522, "column": 74 }, "end": { - "line": 468, + "line": 522, "column": 86 }, "identifierName": "colorsChunks" @@ -41645,15 +41645,15 @@ }, "property": { "type": "Identifier", - "start": 18809, - "end": 18810, + "start": 20797, + "end": 20798, "loc": { "start": { - "line": 468, + "line": 522, "column": 87 }, "end": { - "line": 468, + "line": 522, "column": 88 }, "identifierName": "i" @@ -41664,15 +41664,15 @@ }, "alternate": { "type": "NullLiteral", - "start": 18814, - "end": 18818, + "start": 20802, + "end": 20806, "loc": { "start": { - "line": 468, + "line": 522, "column": 92 }, "end": { - "line": 468, + "line": 522, "column": 96 } } @@ -41692,15 +41692,15 @@ { "type": "CommentBlock", "value": "\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n\n const geometryId = `geometryMesh${i}`;\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n\n sceneModel.createMesh({\n id: meshId,\n geometryId\n });\n }\n ", - "start": 18889, - "end": 19895, + "start": 20877, + "end": 21883, "loc": { "start": { - "line": 471, + "line": 525, "column": 20 }, "end": { - "line": 494, + "line": 548, "column": 23 } } @@ -41709,44 +41709,44 @@ }, { "type": "VariableDeclaration", - "start": 19917, - "end": 19977, + "start": 21905, + "end": 21965, "loc": { "start": { - "line": 496, + "line": 550, "column": 20 }, "end": { - "line": 496, + "line": 550, "column": 80 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 19923, - "end": 19976, + "start": 21911, + "end": 21964, "loc": { "start": { - "line": 496, + "line": 550, "column": 26 }, "end": { - "line": 496, + "line": 550, "column": 79 } }, "id": { "type": "Identifier", - "start": 19923, - "end": 19937, + "start": 21911, + "end": 21925, "loc": { "start": { - "line": 496, + "line": 550, "column": 26 }, "end": { - "line": 496, + "line": 550, "column": 40 }, "identifierName": "pointsObjectId" @@ -41756,43 +41756,43 @@ }, "init": { "type": "LogicalExpression", - "start": 19940, - "end": 19976, + "start": 21928, + "end": 21964, "loc": { "start": { - "line": 496, + "line": 550, "column": 43 }, "end": { - "line": 496, + "line": 550, "column": 79 } }, "left": { "type": "MemberExpression", - "start": 19940, - "end": 19955, + "start": 21928, + "end": 21943, "loc": { "start": { - "line": 496, + "line": 550, "column": 43 }, "end": { - "line": 496, + "line": 550, "column": 58 } }, "object": { "type": "Identifier", - "start": 19940, - "end": 19946, + "start": 21928, + "end": 21934, "loc": { "start": { - "line": 496, + "line": 550, "column": 43 }, "end": { - "line": 496, + "line": 550, "column": 49 }, "identifierName": "params" @@ -41801,15 +41801,15 @@ }, "property": { "type": "Identifier", - "start": 19947, - "end": 19955, + "start": 21935, + "end": 21943, "loc": { "start": { - "line": 496, + "line": 550, "column": 50 }, "end": { - "line": 496, + "line": 550, "column": 58 }, "identifierName": "entityId" @@ -41821,43 +41821,43 @@ "operator": "||", "right": { "type": "CallExpression", - "start": 19959, - "end": 19976, + "start": 21947, + "end": 21964, "loc": { "start": { - "line": 496, + "line": 550, "column": 62 }, "end": { - "line": 496, + "line": 550, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 19959, - "end": 19974, + "start": 21947, + "end": 21962, "loc": { "start": { - "line": 496, + "line": 550, "column": 62 }, "end": { - "line": 496, + "line": 550, "column": 77 } }, "object": { "type": "Identifier", - "start": 19959, - "end": 19963, + "start": 21947, + "end": 21951, "loc": { "start": { - "line": 496, + "line": 550, "column": 62 }, "end": { - "line": 496, + "line": 550, "column": 66 }, "identifierName": "math" @@ -41866,15 +41866,15 @@ }, "property": { "type": "Identifier", - "start": 19964, - "end": 19974, + "start": 21952, + "end": 21962, "loc": { "start": { - "line": 496, + "line": 550, "column": 67 }, "end": { - "line": 496, + "line": 550, "column": 77 }, "identifierName": "createUUID" @@ -41894,15 +41894,15 @@ { "type": "CommentBlock", "value": "\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n\n const geometryId = `geometryMesh${i}`;\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n\n sceneModel.createMesh({\n id: meshId,\n geometryId\n });\n }\n ", - "start": 18889, - "end": 19895, + "start": 20877, + "end": 21883, "loc": { "start": { - "line": 471, + "line": 525, "column": 20 }, "end": { - "line": 494, + "line": 548, "column": 23 } } @@ -41911,57 +41911,57 @@ }, { "type": "ExpressionStatement", - "start": 19999, - "end": 20164, + "start": 21987, + "end": 22152, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 502, + "line": 556, "column": 23 } }, "expression": { "type": "CallExpression", - "start": 19999, - "end": 20163, + "start": 21987, + "end": 22151, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 502, + "line": 556, "column": 22 } }, "callee": { "type": "MemberExpression", - "start": 19999, - "end": 20022, + "start": 21987, + "end": 22010, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 498, + "line": 552, "column": 43 } }, "object": { "type": "Identifier", - "start": 19999, - "end": 20009, + "start": 21987, + "end": 21997, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 498, + "line": 552, "column": 30 }, "identifierName": "sceneModel" @@ -41970,15 +41970,15 @@ }, "property": { "type": "Identifier", - "start": 20010, - "end": 20022, + "start": 21998, + "end": 22010, "loc": { "start": { - "line": 498, + "line": 552, "column": 31 }, "end": { - "line": 498, + "line": 552, "column": 43 }, "identifierName": "createEntity" @@ -41990,30 +41990,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 20023, - "end": 20162, + "start": 22011, + "end": 22150, "loc": { "start": { - "line": 498, + "line": 552, "column": 44 }, "end": { - "line": 502, + "line": 556, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 20049, - "end": 20067, + "start": 22037, + "end": 22055, "loc": { "start": { - "line": 499, + "line": 553, "column": 24 }, "end": { - "line": 499, + "line": 553, "column": 42 } }, @@ -42022,15 +42022,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20049, - "end": 20051, + "start": 22037, + "end": 22039, "loc": { "start": { - "line": 499, + "line": 553, "column": 24 }, "end": { - "line": 499, + "line": 553, "column": 26 }, "identifierName": "id" @@ -42039,15 +42039,15 @@ }, "value": { "type": "Identifier", - "start": 20053, - "end": 20067, + "start": 22041, + "end": 22055, "loc": { "start": { - "line": 499, + "line": 553, "column": 28 }, "end": { - "line": 499, + "line": 553, "column": 42 }, "identifierName": "pointsObjectId" @@ -42057,15 +42057,15 @@ }, { "type": "ObjectProperty", - "start": 20093, - "end": 20100, + "start": 22081, + "end": 22088, "loc": { "start": { - "line": 500, + "line": 554, "column": 24 }, "end": { - "line": 500, + "line": 554, "column": 31 } }, @@ -42074,15 +42074,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20093, - "end": 20100, + "start": 22081, + "end": 22088, "loc": { "start": { - "line": 500, + "line": 554, "column": 24 }, "end": { - "line": 500, + "line": 554, "column": 31 }, "identifierName": "meshIds" @@ -42091,15 +42091,15 @@ }, "value": { "type": "Identifier", - "start": 20093, - "end": 20100, + "start": 22081, + "end": 22088, "loc": { "start": { - "line": 500, + "line": 554, "column": 24 }, "end": { - "line": 500, + "line": 554, "column": 31 }, "identifierName": "meshIds" @@ -42112,15 +42112,15 @@ }, { "type": "ObjectProperty", - "start": 20126, - "end": 20140, + "start": 22114, + "end": 22128, "loc": { "start": { - "line": 501, + "line": 555, "column": 24 }, "end": { - "line": 501, + "line": 555, "column": 38 } }, @@ -42129,15 +42129,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20126, - "end": 20134, + "start": 22114, + "end": 22122, "loc": { "start": { - "line": 501, + "line": 555, "column": 24 }, "end": { - "line": 501, + "line": 555, "column": 32 }, "identifierName": "isObject" @@ -42146,15 +42146,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 20136, - "end": 20140, + "start": 22124, + "end": 22128, "loc": { "start": { - "line": 501, + "line": 555, "column": 34 }, "end": { - "line": 501, + "line": 555, "column": 38 } }, @@ -42168,57 +42168,57 @@ }, { "type": "ExpressionStatement", - "start": 20186, - "end": 20208, + "start": 22174, + "end": 22196, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 42 } }, "expression": { "type": "CallExpression", - "start": 20186, - "end": 20207, + "start": 22174, + "end": 22195, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 41 } }, "callee": { "type": "MemberExpression", - "start": 20186, - "end": 20205, + "start": 22174, + "end": 22193, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 39 } }, "object": { "type": "Identifier", - "start": 20186, - "end": 20196, + "start": 22174, + "end": 22184, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 30 }, "identifierName": "sceneModel" @@ -42227,15 +42227,15 @@ }, "property": { "type": "Identifier", - "start": 20197, - "end": 20205, + "start": 22185, + "end": 22193, "loc": { "start": { - "line": 504, + "line": 558, "column": 31 }, "end": { - "line": 504, + "line": 558, "column": 39 }, "identifierName": "finalize" @@ -42249,43 +42249,43 @@ }, { "type": "IfStatement", - "start": 20230, - "end": 21735, + "start": 22218, + "end": 23723, "loc": { "start": { - "line": 506, + "line": 560, "column": 20 }, "end": { - "line": 535, + "line": 589, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 20234, - "end": 20254, + "start": 22222, + "end": 22242, "loc": { "start": { - "line": 506, + "line": 560, "column": 24 }, "end": { - "line": 506, + "line": 560, "column": 44 } }, "object": { "type": "Identifier", - "start": 20234, - "end": 20240, + "start": 22222, + "end": 22228, "loc": { "start": { - "line": 506, + "line": 560, "column": 24 }, "end": { - "line": 506, + "line": 560, "column": 30 }, "identifierName": "params" @@ -42294,15 +42294,15 @@ }, "property": { "type": "Identifier", - "start": 20241, - "end": 20254, + "start": 22229, + "end": 22242, "loc": { "start": { - "line": 506, + "line": 560, "column": 31 }, "end": { - "line": 506, + "line": 560, "column": 44 }, "identifierName": "metaModelJSON" @@ -42313,59 +42313,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 20256, - "end": 20445, + "start": 22244, + "end": 22433, "loc": { "start": { - "line": 506, + "line": 560, "column": 46 }, "end": { - "line": 509, + "line": 563, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 20282, - "end": 20316, + "start": 22270, + "end": 22304, "loc": { "start": { - "line": 507, + "line": 561, "column": 24 }, "end": { - "line": 507, + "line": 561, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20288, - "end": 20315, + "start": 22276, + "end": 22303, "loc": { "start": { - "line": 507, + "line": 561, "column": 30 }, "end": { - "line": 507, + "line": 561, "column": 57 } }, "id": { "type": "Identifier", - "start": 20288, - "end": 20299, + "start": 22276, + "end": 22287, "loc": { "start": { - "line": 507, + "line": 561, "column": 30 }, "end": { - "line": 507, + "line": 561, "column": 41 }, "identifierName": "metaModelId" @@ -42374,29 +42374,29 @@ }, "init": { "type": "MemberExpression", - "start": 20302, - "end": 20315, + "start": 22290, + "end": 22303, "loc": { "start": { - "line": 507, + "line": 561, "column": 44 }, "end": { - "line": 507, + "line": 561, "column": 57 } }, "object": { "type": "Identifier", - "start": 20302, - "end": 20312, + "start": 22290, + "end": 22300, "loc": { "start": { - "line": 507, + "line": 561, "column": 44 }, "end": { - "line": 507, + "line": 561, "column": 54 }, "identifierName": "sceneModel" @@ -42405,15 +42405,15 @@ }, "property": { "type": "Identifier", - "start": 20313, - "end": 20315, + "start": 22301, + "end": 22303, "loc": { "start": { - "line": 507, + "line": 561, "column": 55 }, "end": { - "line": 507, + "line": 561, "column": 57 }, "identifierName": "id" @@ -42428,100 +42428,100 @@ }, { "type": "ExpressionStatement", - "start": 20341, - "end": 20423, + "start": 22329, + "end": 22411, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 106 } }, "expression": { "type": "CallExpression", - "start": 20341, - "end": 20422, + "start": 22329, + "end": 22410, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 105 } }, "callee": { "type": "MemberExpression", - "start": 20341, - "end": 20378, + "start": 22329, + "end": 22366, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 61 } }, "object": { "type": "MemberExpression", - "start": 20341, - "end": 20362, + "start": 22329, + "end": 22350, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 20341, - "end": 20352, + "start": 22329, + "end": 22340, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 20341, - "end": 20345, + "start": 22329, + "end": 22333, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 28 } } }, "property": { "type": "Identifier", - "start": 20346, - "end": 20352, + "start": 22334, + "end": 22340, "loc": { "start": { - "line": 508, + "line": 562, "column": 29 }, "end": { - "line": 508, + "line": 562, "column": 35 }, "identifierName": "viewer" @@ -42532,15 +42532,15 @@ }, "property": { "type": "Identifier", - "start": 20353, - "end": 20362, + "start": 22341, + "end": 22350, "loc": { "start": { - "line": 508, + "line": 562, "column": 36 }, "end": { - "line": 508, + "line": 562, "column": 45 }, "identifierName": "metaScene" @@ -42551,15 +42551,15 @@ }, "property": { "type": "Identifier", - "start": 20363, - "end": 20378, + "start": 22351, + "end": 22366, "loc": { "start": { - "line": 508, + "line": 562, "column": 46 }, "end": { - "line": 508, + "line": 562, "column": 61 }, "identifierName": "createMetaModel" @@ -42571,15 +42571,15 @@ "arguments": [ { "type": "Identifier", - "start": 20379, - "end": 20390, + "start": 22367, + "end": 22378, "loc": { "start": { - "line": 508, + "line": 562, "column": 62 }, "end": { - "line": 508, + "line": 562, "column": 73 }, "identifierName": "metaModelId" @@ -42588,29 +42588,29 @@ }, { "type": "MemberExpression", - "start": 20392, - "end": 20412, + "start": 22380, + "end": 22400, "loc": { "start": { - "line": 508, + "line": 562, "column": 75 }, "end": { - "line": 508, + "line": 562, "column": 95 } }, "object": { "type": "Identifier", - "start": 20392, - "end": 20398, + "start": 22380, + "end": 22386, "loc": { "start": { - "line": 508, + "line": 562, "column": 75 }, "end": { - "line": 508, + "line": 562, "column": 81 }, "identifierName": "params" @@ -42619,15 +42619,15 @@ }, "property": { "type": "Identifier", - "start": 20399, - "end": 20412, + "start": 22387, + "end": 22400, "loc": { "start": { - "line": 508, + "line": 562, "column": 82 }, "end": { - "line": 508, + "line": 562, "column": 95 }, "identifierName": "metaModelJSON" @@ -42638,15 +42638,15 @@ }, { "type": "Identifier", - "start": 20414, - "end": 20421, + "start": 22402, + "end": 22409, "loc": { "start": { - "line": 508, + "line": 562, "column": 97 }, "end": { - "line": 508, + "line": 562, "column": 104 }, "identifierName": "options" @@ -42661,57 +42661,57 @@ }, "alternate": { "type": "IfStatement", - "start": 20451, - "end": 21735, + "start": 22439, + "end": 23723, "loc": { "start": { - "line": 509, + "line": 563, "column": 27 }, "end": { - "line": 535, + "line": 589, "column": 21 } }, "test": { "type": "BinaryExpression", - "start": 20455, - "end": 20484, + "start": 22443, + "end": 22472, "loc": { "start": { - "line": 509, + "line": 563, "column": 31 }, "end": { - "line": 509, + "line": 563, "column": 60 } }, "left": { "type": "MemberExpression", - "start": 20455, - "end": 20474, + "start": 22443, + "end": 22462, "loc": { "start": { - "line": 509, + "line": 563, "column": 31 }, "end": { - "line": 509, + "line": 563, "column": 50 } }, "object": { "type": "Identifier", - "start": 20455, - "end": 20461, + "start": 22443, + "end": 22449, "loc": { "start": { - "line": 509, + "line": 563, "column": 31 }, "end": { - "line": 509, + "line": 563, "column": 37 }, "identifierName": "params" @@ -42720,15 +42720,15 @@ }, "property": { "type": "Identifier", - "start": 20462, - "end": 20474, + "start": 22450, + "end": 22462, "loc": { "start": { - "line": 509, + "line": 563, "column": 38 }, "end": { - "line": 509, + "line": 563, "column": 50 }, "identifierName": "loadMetadata" @@ -42740,15 +42740,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 20479, - "end": 20484, + "start": 22467, + "end": 22472, "loc": { "start": { - "line": 509, + "line": 563, "column": 55 }, "end": { - "line": 509, + "line": 563, "column": 60 } }, @@ -42757,59 +42757,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 20486, - "end": 21735, + "start": 22474, + "end": 23723, "loc": { "start": { - "line": 509, + "line": 563, "column": 62 }, "end": { - "line": 535, + "line": 589, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 20512, - "end": 20555, + "start": 22500, + "end": 22543, "loc": { "start": { - "line": 510, + "line": 564, "column": 24 }, "end": { - "line": 510, + "line": 564, "column": 67 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20518, - "end": 20554, + "start": 22506, + "end": 22542, "loc": { "start": { - "line": 510, + "line": 564, "column": 30 }, "end": { - "line": 510, + "line": 564, "column": 66 } }, "id": { "type": "Identifier", - "start": 20518, - "end": 20534, + "start": 22506, + "end": 22522, "loc": { "start": { - "line": 510, + "line": 564, "column": 30 }, "end": { - "line": 510, + "line": 564, "column": 46 }, "identifierName": "rootMetaObjectId" @@ -42818,43 +42818,43 @@ }, "init": { "type": "CallExpression", - "start": 20537, - "end": 20554, + "start": 22525, + "end": 22542, "loc": { "start": { - "line": 510, + "line": 564, "column": 49 }, "end": { - "line": 510, + "line": 564, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 20537, - "end": 20552, + "start": 22525, + "end": 22540, "loc": { "start": { - "line": 510, + "line": 564, "column": 49 }, "end": { - "line": 510, + "line": 564, "column": 64 } }, "object": { "type": "Identifier", - "start": 20537, - "end": 20541, + "start": 22525, + "end": 22529, "loc": { "start": { - "line": 510, + "line": 564, "column": 49 }, "end": { - "line": 510, + "line": 564, "column": 53 }, "identifierName": "math" @@ -42863,15 +42863,15 @@ }, "property": { "type": "Identifier", - "start": 20542, - "end": 20552, + "start": 22530, + "end": 22540, "loc": { "start": { - "line": 510, + "line": 564, "column": 54 }, "end": { - "line": 510, + "line": 564, "column": 64 }, "identifierName": "createUUID" @@ -42888,44 +42888,44 @@ }, { "type": "VariableDeclaration", - "start": 20580, - "end": 21559, + "start": 22568, + "end": 23547, "loc": { "start": { - "line": 511, + "line": 565, "column": 24 }, "end": { - "line": 532, + "line": 586, "column": 26 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20586, - "end": 21558, + "start": 22574, + "end": 23546, "loc": { "start": { - "line": 511, + "line": 565, "column": 30 }, "end": { - "line": 532, + "line": 586, "column": 25 } }, "id": { "type": "Identifier", - "start": 20586, - "end": 20594, + "start": 22574, + "end": 22582, "loc": { "start": { - "line": 511, + "line": 565, "column": 30 }, "end": { - "line": 511, + "line": 565, "column": 38 }, "identifierName": "metadata" @@ -42934,30 +42934,30 @@ }, "init": { "type": "ObjectExpression", - "start": 20597, - "end": 21558, + "start": 22585, + "end": 23546, "loc": { "start": { - "line": 511, + "line": 565, "column": 41 }, "end": { - "line": 532, + "line": 586, "column": 25 } }, "properties": [ { "type": "ObjectProperty", - "start": 20627, - "end": 20640, + "start": 22615, + "end": 22628, "loc": { "start": { - "line": 512, + "line": 566, "column": 28 }, "end": { - "line": 512, + "line": 566, "column": 41 } }, @@ -42966,15 +42966,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20627, - "end": 20636, + "start": 22615, + "end": 22624, "loc": { "start": { - "line": 512, + "line": 566, "column": 28 }, "end": { - "line": 512, + "line": 566, "column": 37 }, "identifierName": "projectId" @@ -42983,15 +42983,15 @@ }, "value": { "type": "StringLiteral", - "start": 20638, - "end": 20640, + "start": 22626, + "end": 22628, "loc": { "start": { - "line": 512, + "line": 566, "column": 39 }, "end": { - "line": 512, + "line": 566, "column": 41 } }, @@ -43004,15 +43004,15 @@ }, { "type": "ObjectProperty", - "start": 20670, - "end": 20680, + "start": 22658, + "end": 22668, "loc": { "start": { - "line": 513, + "line": 567, "column": 28 }, "end": { - "line": 513, + "line": 567, "column": 38 } }, @@ -43021,15 +43021,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20670, - "end": 20676, + "start": 22658, + "end": 22664, "loc": { "start": { - "line": 513, + "line": 567, "column": 28 }, "end": { - "line": 513, + "line": 567, "column": 34 }, "identifierName": "author" @@ -43038,15 +43038,15 @@ }, "value": { "type": "StringLiteral", - "start": 20678, - "end": 20680, + "start": 22666, + "end": 22668, "loc": { "start": { - "line": 513, + "line": 567, "column": 36 }, "end": { - "line": 513, + "line": 567, "column": 38 } }, @@ -43059,15 +43059,15 @@ }, { "type": "ObjectProperty", - "start": 20710, - "end": 20723, + "start": 22698, + "end": 22711, "loc": { "start": { - "line": 514, + "line": 568, "column": 28 }, "end": { - "line": 514, + "line": 568, "column": 41 } }, @@ -43076,15 +43076,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20710, - "end": 20719, + "start": 22698, + "end": 22707, "loc": { "start": { - "line": 514, + "line": 568, "column": 28 }, "end": { - "line": 514, + "line": 568, "column": 37 }, "identifierName": "createdAt" @@ -43093,15 +43093,15 @@ }, "value": { "type": "StringLiteral", - "start": 20721, - "end": 20723, + "start": 22709, + "end": 22711, "loc": { "start": { - "line": 514, + "line": 568, "column": 39 }, "end": { - "line": 514, + "line": 568, "column": 41 } }, @@ -43114,15 +43114,15 @@ }, { "type": "ObjectProperty", - "start": 20753, - "end": 20763, + "start": 22741, + "end": 22751, "loc": { "start": { - "line": 515, + "line": 569, "column": 28 }, "end": { - "line": 515, + "line": 569, "column": 38 } }, @@ -43131,15 +43131,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20753, - "end": 20759, + "start": 22741, + "end": 22747, "loc": { "start": { - "line": 515, + "line": 569, "column": 28 }, "end": { - "line": 515, + "line": 569, "column": 34 }, "identifierName": "schema" @@ -43148,15 +43148,15 @@ }, "value": { "type": "StringLiteral", - "start": 20761, - "end": 20763, + "start": 22749, + "end": 22751, "loc": { "start": { - "line": 515, + "line": 569, "column": 36 }, "end": { - "line": 515, + "line": 569, "column": 38 } }, @@ -43169,15 +43169,15 @@ }, { "type": "ObjectProperty", - "start": 20793, - "end": 20816, + "start": 22781, + "end": 22804, "loc": { "start": { - "line": 516, + "line": 570, "column": 28 }, "end": { - "line": 516, + "line": 570, "column": 51 } }, @@ -43186,15 +43186,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20793, - "end": 20812, + "start": 22781, + "end": 22800, "loc": { "start": { - "line": 516, + "line": 570, "column": 28 }, "end": { - "line": 516, + "line": 570, "column": 47 }, "identifierName": "creatingApplication" @@ -43203,15 +43203,15 @@ }, "value": { "type": "StringLiteral", - "start": 20814, - "end": 20816, + "start": 22802, + "end": 22804, "loc": { "start": { - "line": 516, + "line": 570, "column": 49 }, "end": { - "line": 516, + "line": 570, "column": 51 } }, @@ -43224,15 +43224,15 @@ }, { "type": "ObjectProperty", - "start": 20846, - "end": 21486, + "start": 22834, + "end": 23474, "loc": { "start": { - "line": 517, + "line": 571, "column": 28 }, "end": { - "line": 530, + "line": 584, "column": 29 } }, @@ -43241,15 +43241,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20846, - "end": 20857, + "start": 22834, + "end": 22845, "loc": { "start": { - "line": 517, + "line": 571, "column": 28 }, "end": { - "line": 517, + "line": 571, "column": 39 }, "identifierName": "metaObjects" @@ -43258,45 +43258,45 @@ }, "value": { "type": "ArrayExpression", - "start": 20859, - "end": 21486, + "start": 22847, + "end": 23474, "loc": { "start": { - "line": 517, + "line": 571, "column": 41 }, "end": { - "line": 530, + "line": 584, "column": 29 } }, "elements": [ { "type": "ObjectExpression", - "start": 20893, - "end": 21087, + "start": 22881, + "end": 23075, "loc": { "start": { - "line": 518, + "line": 572, "column": 32 }, "end": { - "line": 522, + "line": 576, "column": 33 } }, "properties": [ { "type": "ObjectProperty", - "start": 20931, - "end": 20951, + "start": 22919, + "end": 22939, "loc": { "start": { - "line": 519, + "line": 573, "column": 36 }, "end": { - "line": 519, + "line": 573, "column": 56 } }, @@ -43305,15 +43305,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20931, - "end": 20933, + "start": 22919, + "end": 22921, "loc": { "start": { - "line": 519, + "line": 573, "column": 36 }, "end": { - "line": 519, + "line": 573, "column": 38 }, "identifierName": "id" @@ -43322,15 +43322,15 @@ }, "value": { "type": "Identifier", - "start": 20935, - "end": 20951, + "start": 22923, + "end": 22939, "loc": { "start": { - "line": 519, + "line": 573, "column": 40 }, "end": { - "line": 519, + "line": 573, "column": 56 }, "identifierName": "rootMetaObjectId" @@ -43340,15 +43340,15 @@ }, { "type": "ObjectProperty", - "start": 20989, - "end": 21002, + "start": 22977, + "end": 22990, "loc": { "start": { - "line": 520, + "line": 574, "column": 36 }, "end": { - "line": 520, + "line": 574, "column": 49 } }, @@ -43357,15 +43357,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 20989, - "end": 20993, + "start": 22977, + "end": 22981, "loc": { "start": { - "line": 520, + "line": 574, "column": 36 }, "end": { - "line": 520, + "line": 574, "column": 40 }, "identifierName": "name" @@ -43374,15 +43374,15 @@ }, "value": { "type": "StringLiteral", - "start": 20995, - "end": 21002, + "start": 22983, + "end": 22990, "loc": { "start": { - "line": 520, + "line": 574, "column": 42 }, "end": { - "line": 520, + "line": 574, "column": 49 } }, @@ -43395,15 +43395,15 @@ }, { "type": "ObjectProperty", - "start": 21040, - "end": 21053, + "start": 23028, + "end": 23041, "loc": { "start": { - "line": 521, + "line": 575, "column": 36 }, "end": { - "line": 521, + "line": 575, "column": 49 } }, @@ -43412,15 +43412,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21040, - "end": 21044, + "start": 23028, + "end": 23032, "loc": { "start": { - "line": 521, + "line": 575, "column": 36 }, "end": { - "line": 521, + "line": 575, "column": 40 }, "identifierName": "type" @@ -43429,15 +43429,15 @@ }, "value": { "type": "StringLiteral", - "start": 21046, - "end": 21053, + "start": 23034, + "end": 23041, "loc": { "start": { - "line": 521, + "line": 575, "column": 42 }, "end": { - "line": 521, + "line": 575, "column": 49 } }, @@ -43452,30 +43452,30 @@ }, { "type": "ObjectExpression", - "start": 21121, - "end": 21456, + "start": 23109, + "end": 23444, "loc": { "start": { - "line": 523, + "line": 577, "column": 32 }, "end": { - "line": 529, + "line": 583, "column": 33 } }, "properties": [ { "type": "ObjectProperty", - "start": 21159, - "end": 21177, + "start": 23147, + "end": 23165, "loc": { "start": { - "line": 524, + "line": 578, "column": 36 }, "end": { - "line": 524, + "line": 578, "column": 54 } }, @@ -43484,15 +43484,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21159, - "end": 21161, + "start": 23147, + "end": 23149, "loc": { "start": { - "line": 524, + "line": 578, "column": 36 }, "end": { - "line": 524, + "line": 578, "column": 38 }, "identifierName": "id" @@ -43501,15 +43501,15 @@ }, "value": { "type": "Identifier", - "start": 21163, - "end": 21177, + "start": 23151, + "end": 23165, "loc": { "start": { - "line": 524, + "line": 578, "column": 40 }, "end": { - "line": 524, + "line": 578, "column": 54 }, "identifierName": "pointsObjectId" @@ -43519,15 +43519,15 @@ }, { "type": "ObjectProperty", - "start": 21215, - "end": 21239, + "start": 23203, + "end": 23227, "loc": { "start": { - "line": 525, + "line": 579, "column": 36 }, "end": { - "line": 525, + "line": 579, "column": 60 } }, @@ -43536,15 +43536,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21215, - "end": 21219, + "start": 23203, + "end": 23207, "loc": { "start": { - "line": 525, + "line": 579, "column": 36 }, "end": { - "line": 525, + "line": 579, "column": 40 }, "identifierName": "name" @@ -43553,15 +43553,15 @@ }, "value": { "type": "StringLiteral", - "start": 21221, - "end": 21239, + "start": 23209, + "end": 23227, "loc": { "start": { - "line": 525, + "line": 579, "column": 42 }, "end": { - "line": 525, + "line": 579, "column": 60 } }, @@ -43574,15 +43574,15 @@ }, { "type": "ObjectProperty", - "start": 21277, - "end": 21295, + "start": 23265, + "end": 23283, "loc": { "start": { - "line": 526, + "line": 580, "column": 36 }, "end": { - "line": 526, + "line": 580, "column": 54 } }, @@ -43591,15 +43591,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21277, - "end": 21281, + "start": 23265, + "end": 23269, "loc": { "start": { - "line": 526, + "line": 580, "column": 36 }, "end": { - "line": 526, + "line": 580, "column": 40 }, "identifierName": "type" @@ -43608,15 +43608,15 @@ }, "value": { "type": "StringLiteral", - "start": 21283, - "end": 21295, + "start": 23271, + "end": 23283, "loc": { "start": { - "line": 526, + "line": 580, "column": 42 }, "end": { - "line": 526, + "line": 580, "column": 54 } }, @@ -43629,15 +43629,15 @@ }, { "type": "ObjectProperty", - "start": 21333, - "end": 21357, + "start": 23321, + "end": 23345, "loc": { "start": { - "line": 527, + "line": 581, "column": 36 }, "end": { - "line": 527, + "line": 581, "column": 60 } }, @@ -43646,15 +43646,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21333, - "end": 21339, + "start": 23321, + "end": 23327, "loc": { "start": { - "line": 527, + "line": 581, "column": 36 }, "end": { - "line": 527, + "line": 581, "column": 42 }, "identifierName": "parent" @@ -43663,15 +43663,15 @@ }, "value": { "type": "Identifier", - "start": 21341, - "end": 21357, + "start": 23329, + "end": 23345, "loc": { "start": { - "line": 527, + "line": 581, "column": 44 }, "end": { - "line": 527, + "line": 581, "column": 60 }, "identifierName": "rootMetaObjectId" @@ -43681,15 +43681,15 @@ }, { "type": "ObjectProperty", - "start": 21395, - "end": 21422, + "start": 23383, + "end": 23410, "loc": { "start": { - "line": 528, + "line": 582, "column": 36 }, "end": { - "line": 528, + "line": 582, "column": 63 } }, @@ -43698,15 +43698,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21395, - "end": 21405, + "start": 23383, + "end": 23393, "loc": { "start": { - "line": 528, + "line": 582, "column": 36 }, "end": { - "line": 528, + "line": 582, "column": 46 }, "identifierName": "attributes" @@ -43715,29 +43715,29 @@ }, "value": { "type": "LogicalExpression", - "start": 21407, - "end": 21422, + "start": 23395, + "end": 23410, "loc": { "start": { - "line": 528, + "line": 582, "column": 48 }, "end": { - "line": 528, + "line": 582, "column": 63 } }, "left": { "type": "Identifier", - "start": 21407, - "end": 21416, + "start": 23395, + "end": 23404, "loc": { "start": { - "line": 528, + "line": 582, "column": 48 }, "end": { - "line": 528, + "line": 582, "column": 57 }, "identifierName": "lasHeader" @@ -43747,15 +43747,15 @@ "operator": "||", "right": { "type": "ObjectExpression", - "start": 21420, - "end": 21422, + "start": 23408, + "end": 23410, "loc": { "start": { - "line": 528, + "line": 582, "column": 61 }, "end": { - "line": 528, + "line": 582, "column": 63 } }, @@ -43770,15 +43770,15 @@ }, { "type": "ObjectProperty", - "start": 21516, - "end": 21532, + "start": 23504, + "end": 23520, "loc": { "start": { - "line": 531, + "line": 585, "column": 28 }, "end": { - "line": 531, + "line": 585, "column": 44 } }, @@ -43787,15 +43787,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 21516, - "end": 21528, + "start": 23504, + "end": 23516, "loc": { "start": { - "line": 531, + "line": 585, "column": 28 }, "end": { - "line": 531, + "line": 585, "column": 40 }, "identifierName": "propertySets" @@ -43804,15 +43804,15 @@ }, "value": { "type": "ArrayExpression", - "start": 21530, - "end": 21532, + "start": 23518, + "end": 23520, "loc": { "start": { - "line": 531, + "line": 585, "column": 42 }, "end": { - "line": 531, + "line": 585, "column": 44 } }, @@ -43827,44 +43827,44 @@ }, { "type": "VariableDeclaration", - "start": 21584, - "end": 21618, + "start": 23572, + "end": 23606, "loc": { "start": { - "line": 533, + "line": 587, "column": 24 }, "end": { - "line": 533, + "line": 587, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 21590, - "end": 21617, + "start": 23578, + "end": 23605, "loc": { "start": { - "line": 533, + "line": 587, "column": 30 }, "end": { - "line": 533, + "line": 587, "column": 57 } }, "id": { "type": "Identifier", - "start": 21590, - "end": 21601, + "start": 23578, + "end": 23589, "loc": { "start": { - "line": 533, + "line": 587, "column": 30 }, "end": { - "line": 533, + "line": 587, "column": 41 }, "identifierName": "metaModelId" @@ -43873,29 +43873,29 @@ }, "init": { "type": "MemberExpression", - "start": 21604, - "end": 21617, + "start": 23592, + "end": 23605, "loc": { "start": { - "line": 533, + "line": 587, "column": 44 }, "end": { - "line": 533, + "line": 587, "column": 57 } }, "object": { "type": "Identifier", - "start": 21604, - "end": 21614, + "start": 23592, + "end": 23602, "loc": { "start": { - "line": 533, + "line": 587, "column": 44 }, "end": { - "line": 533, + "line": 587, "column": 54 }, "identifierName": "sceneModel" @@ -43904,15 +43904,15 @@ }, "property": { "type": "Identifier", - "start": 21615, - "end": 21617, + "start": 23603, + "end": 23605, "loc": { "start": { - "line": 533, + "line": 587, "column": 55 }, "end": { - "line": 533, + "line": 587, "column": 57 }, "identifierName": "id" @@ -43927,100 +43927,100 @@ }, { "type": "ExpressionStatement", - "start": 21643, - "end": 21713, + "start": 23631, + "end": 23701, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 94 } }, "expression": { "type": "CallExpression", - "start": 21643, - "end": 21712, + "start": 23631, + "end": 23700, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 93 } }, "callee": { "type": "MemberExpression", - "start": 21643, - "end": 21680, + "start": 23631, + "end": 23668, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 61 } }, "object": { "type": "MemberExpression", - "start": 21643, - "end": 21664, + "start": 23631, + "end": 23652, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 21643, - "end": 21654, + "start": 23631, + "end": 23642, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 21643, - "end": 21647, + "start": 23631, + "end": 23635, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 28 } } }, "property": { "type": "Identifier", - "start": 21648, - "end": 21654, + "start": 23636, + "end": 23642, "loc": { "start": { - "line": 534, + "line": 588, "column": 29 }, "end": { - "line": 534, + "line": 588, "column": 35 }, "identifierName": "viewer" @@ -44031,15 +44031,15 @@ }, "property": { "type": "Identifier", - "start": 21655, - "end": 21664, + "start": 23643, + "end": 23652, "loc": { "start": { - "line": 534, + "line": 588, "column": 36 }, "end": { - "line": 534, + "line": 588, "column": 45 }, "identifierName": "metaScene" @@ -44050,15 +44050,15 @@ }, "property": { "type": "Identifier", - "start": 21665, - "end": 21680, + "start": 23653, + "end": 23668, "loc": { "start": { - "line": 534, + "line": 588, "column": 46 }, "end": { - "line": 534, + "line": 588, "column": 61 }, "identifierName": "createMetaModel" @@ -44070,15 +44070,15 @@ "arguments": [ { "type": "Identifier", - "start": 21681, - "end": 21692, + "start": 23669, + "end": 23680, "loc": { "start": { - "line": 534, + "line": 588, "column": 62 }, "end": { - "line": 534, + "line": 588, "column": 73 }, "identifierName": "metaModelId" @@ -44087,15 +44087,15 @@ }, { "type": "Identifier", - "start": 21694, - "end": 21702, + "start": 23682, + "end": 23690, "loc": { "start": { - "line": 534, + "line": 588, "column": 75 }, "end": { - "line": 534, + "line": 588, "column": 83 }, "identifierName": "metadata" @@ -44104,15 +44104,15 @@ }, { "type": "Identifier", - "start": 21704, - "end": 21711, + "start": 23692, + "end": 23699, "loc": { "start": { - "line": 534, + "line": 588, "column": 85 }, "end": { - "line": 534, + "line": 588, "column": 92 }, "identifierName": "options" @@ -44130,71 +44130,71 @@ }, { "type": "ExpressionStatement", - "start": 21757, - "end": 22180, + "start": 23745, + "end": 24168, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 543, + "line": 597, "column": 23 } }, "expression": { "type": "CallExpression", - "start": 21757, - "end": 22179, + "start": 23745, + "end": 24167, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 543, + "line": 597, "column": 22 } }, "callee": { "type": "MemberExpression", - "start": 21757, - "end": 21778, + "start": 23745, + "end": 23766, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 537, + "line": 591, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 21757, - "end": 21773, + "start": 23745, + "end": 23761, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 537, + "line": 591, "column": 36 } }, "object": { "type": "Identifier", - "start": 21757, - "end": 21767, + "start": 23745, + "end": 23755, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 537, + "line": 591, "column": 30 }, "identifierName": "sceneModel" @@ -44203,15 +44203,15 @@ }, "property": { "type": "Identifier", - "start": 21768, - "end": 21773, + "start": 23756, + "end": 23761, "loc": { "start": { - "line": 537, + "line": 591, "column": 31 }, "end": { - "line": 537, + "line": 591, "column": 36 }, "identifierName": "scene" @@ -44222,15 +44222,15 @@ }, "property": { "type": "Identifier", - "start": 21774, - "end": 21778, + "start": 23762, + "end": 23766, "loc": { "start": { - "line": 537, + "line": 591, "column": 37 }, "end": { - "line": 537, + "line": 591, "column": 41 }, "identifierName": "once" @@ -44242,15 +44242,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 21779, - "end": 21785, + "start": 23767, + "end": 23773, "loc": { "start": { - "line": 537, + "line": 591, "column": 42 }, "end": { - "line": 537, + "line": 591, "column": 48 } }, @@ -44262,15 +44262,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 21787, - "end": 22178, + "start": 23775, + "end": 24166, "loc": { "start": { - "line": 537, + "line": 591, "column": 50 }, "end": { - "line": 543, + "line": 597, "column": 21 } }, @@ -44281,58 +44281,58 @@ "params": [], "body": { "type": "BlockStatement", - "start": 21793, - "end": 22178, + "start": 23781, + "end": 24166, "loc": { "start": { - "line": 537, + "line": 591, "column": 56 }, "end": { - "line": 543, + "line": 597, "column": 21 } }, "body": [ { "type": "IfStatement", - "start": 21819, - "end": 21908, + "start": 23807, + "end": 23896, "loc": { "start": { - "line": 538, + "line": 592, "column": 24 }, "end": { - "line": 540, + "line": 594, "column": 25 } }, "test": { "type": "MemberExpression", - "start": 21823, - "end": 21843, + "start": 23811, + "end": 23831, "loc": { "start": { - "line": 538, + "line": 592, "column": 28 }, "end": { - "line": 538, + "line": 592, "column": 48 } }, "object": { "type": "Identifier", - "start": 21823, - "end": 21833, + "start": 23811, + "end": 23821, "loc": { "start": { - "line": 538, + "line": 592, "column": 28 }, "end": { - "line": 538, + "line": 592, "column": 38 }, "identifierName": "sceneModel" @@ -44341,15 +44341,15 @@ }, "property": { "type": "Identifier", - "start": 21834, - "end": 21843, + "start": 23822, + "end": 23831, "loc": { "start": { - "line": 538, + "line": 592, "column": 39 }, "end": { - "line": 538, + "line": 592, "column": 48 }, "identifierName": "destroyed" @@ -44360,30 +44360,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 21845, - "end": 21908, + "start": 23833, + "end": 23896, "loc": { "start": { - "line": 538, + "line": 592, "column": 50 }, "end": { - "line": 540, + "line": 594, "column": 25 } }, "body": [ { "type": "ReturnStatement", - "start": 21875, - "end": 21882, + "start": 23863, + "end": 23870, "loc": { "start": { - "line": 539, + "line": 593, "column": 28 }, "end": { - "line": 539, + "line": 593, "column": 35 } }, @@ -44396,71 +44396,71 @@ }, { "type": "ExpressionStatement", - "start": 21933, - "end": 21985, + "start": 23921, + "end": 23973, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 76 } }, "expression": { "type": "CallExpression", - "start": 21933, - "end": 21984, + "start": 23921, + "end": 23972, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 75 } }, "callee": { "type": "MemberExpression", - "start": 21933, - "end": 21954, + "start": 23921, + "end": 23942, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 21933, - "end": 21949, + "start": 23921, + "end": 23937, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 40 } }, "object": { "type": "Identifier", - "start": 21933, - "end": 21943, + "start": 23921, + "end": 23931, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 34 }, "identifierName": "sceneModel" @@ -44469,15 +44469,15 @@ }, "property": { "type": "Identifier", - "start": 21944, - "end": 21949, + "start": 23932, + "end": 23937, "loc": { "start": { - "line": 541, + "line": 595, "column": 35 }, "end": { - "line": 541, + "line": 595, "column": 40 }, "identifierName": "scene" @@ -44488,15 +44488,15 @@ }, "property": { "type": "Identifier", - "start": 21950, - "end": 21954, + "start": 23938, + "end": 23942, "loc": { "start": { - "line": 541, + "line": 595, "column": 41 }, "end": { - "line": 541, + "line": 595, "column": 45 }, "identifierName": "fire" @@ -44508,15 +44508,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 21955, - "end": 21968, + "start": 23943, + "end": 23956, "loc": { "start": { - "line": 541, + "line": 595, "column": 46 }, "end": { - "line": 541, + "line": 595, "column": 59 } }, @@ -44528,29 +44528,29 @@ }, { "type": "MemberExpression", - "start": 21970, - "end": 21983, + "start": 23958, + "end": 23971, "loc": { "start": { - "line": 541, + "line": 595, "column": 61 }, "end": { - "line": 541, + "line": 595, "column": 74 } }, "object": { "type": "Identifier", - "start": 21970, - "end": 21980, + "start": 23958, + "end": 23968, "loc": { "start": { - "line": 541, + "line": 595, "column": 61 }, "end": { - "line": 541, + "line": 595, "column": 71 }, "identifierName": "sceneModel" @@ -44559,15 +44559,15 @@ }, "property": { "type": "Identifier", - "start": 21981, - "end": 21983, + "start": 23969, + "end": 23971, "loc": { "start": { - "line": 541, + "line": 595, "column": 72 }, "end": { - "line": 541, + "line": 595, "column": 74 }, "identifierName": "id" @@ -44582,15 +44582,15 @@ { "type": "CommentLine", "value": " FIXME: Assumes listeners know order of these two events", - "start": 21986, - "end": 22044, + "start": 23974, + "end": 24032, "loc": { "start": { - "line": 541, + "line": 595, "column": 77 }, "end": { - "line": 541, + "line": 595, "column": 135 } } @@ -44599,57 +44599,57 @@ }, { "type": "ExpressionStatement", - "start": 22069, - "end": 22108, + "start": 24057, + "end": 24096, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 63 } }, "expression": { "type": "CallExpression", - "start": 22069, - "end": 22107, + "start": 24057, + "end": 24095, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 62 } }, "callee": { "type": "MemberExpression", - "start": 22069, - "end": 22084, + "start": 24057, + "end": 24072, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 39 } }, "object": { "type": "Identifier", - "start": 22069, - "end": 22079, + "start": 24057, + "end": 24067, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 34 }, "identifierName": "sceneModel" @@ -44659,15 +44659,15 @@ }, "property": { "type": "Identifier", - "start": 22080, - "end": 22084, + "start": 24068, + "end": 24072, "loc": { "start": { - "line": 542, + "line": 596, "column": 35 }, "end": { - "line": 542, + "line": 596, "column": 39 }, "identifierName": "fire" @@ -44680,15 +44680,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 22085, - "end": 22093, + "start": 24073, + "end": 24081, "loc": { "start": { - "line": 542, + "line": 596, "column": 40 }, "end": { - "line": 542, + "line": 596, "column": 48 } }, @@ -44700,15 +44700,15 @@ }, { "type": "BooleanLiteral", - "start": 22095, - "end": 22099, + "start": 24083, + "end": 24087, "loc": { "start": { - "line": 542, + "line": 596, "column": 50 }, "end": { - "line": 542, + "line": 596, "column": 54 } }, @@ -44716,15 +44716,15 @@ }, { "type": "BooleanLiteral", - "start": 22101, - "end": 22106, + "start": 24089, + "end": 24094, "loc": { "start": { - "line": 542, + "line": 596, "column": 56 }, "end": { - "line": 542, + "line": 596, "column": 61 } }, @@ -44737,15 +44737,15 @@ { "type": "CommentLine", "value": " FIXME: Assumes listeners know order of these two events", - "start": 21986, - "end": 22044, + "start": 23974, + "end": 24032, "loc": { "start": { - "line": 541, + "line": 595, "column": 77 }, "end": { - "line": 541, + "line": 595, "column": 135 } } @@ -44755,15 +44755,15 @@ { "type": "CommentLine", "value": " Don't forget the event, for late subscribers", - "start": 22109, - "end": 22156, + "start": 24097, + "end": 24144, "loc": { "start": { - "line": 542, + "line": 596, "column": 64 }, "end": { - "line": 542, + "line": 596, "column": 111 } } @@ -44777,15 +44777,15 @@ { "type": "CommentLine", "value": " Don't forget the event, for late subscribers", - "start": 22109, - "end": 22156, + "start": 24097, + "end": 24144, "loc": { "start": { - "line": 542, + "line": 596, "column": 64 }, "end": { - "line": 542, + "line": 596, "column": 111 } } @@ -44797,43 +44797,43 @@ }, { "type": "ExpressionStatement", - "start": 22202, - "end": 22212, + "start": 24190, + "end": 24200, "loc": { "start": { - "line": 545, + "line": 599, "column": 20 }, "end": { - "line": 545, + "line": 599, "column": 30 } }, "expression": { "type": "CallExpression", - "start": 22202, - "end": 22211, + "start": 24190, + "end": 24199, "loc": { "start": { - "line": 545, + "line": 599, "column": 20 }, "end": { - "line": 545, + "line": 599, "column": 29 } }, "callee": { "type": "Identifier", - "start": 22202, - "end": 22209, + "start": 24190, + "end": 24197, "loc": { "start": { - "line": 545, + "line": 599, "column": 20 }, "end": { - "line": 545, + "line": 599, "column": 27 }, "identifierName": "resolve" @@ -44855,29 +44855,29 @@ }, "handler": { "type": "CatchClause", - "start": 22247, - "end": 22338, + "start": 24235, + "end": 24326, "loc": { "start": { - "line": 547, + "line": 601, "column": 14 }, "end": { - "line": 550, + "line": 604, "column": 13 } }, "param": { "type": "Identifier", - "start": 22254, - "end": 22255, + "start": 24242, + "end": 24243, "loc": { "start": { - "line": 547, + "line": 601, "column": 21 }, "end": { - "line": 547, + "line": 601, "column": 22 }, "identifierName": "e" @@ -44886,72 +44886,72 @@ }, "body": { "type": "BlockStatement", - "start": 22257, - "end": 22338, + "start": 24245, + "end": 24326, "loc": { "start": { - "line": 547, + "line": 601, "column": 24 }, "end": { - "line": 550, + "line": 604, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 22275, - "end": 22297, + "start": 24263, + "end": 24285, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 22275, - "end": 22296, + "start": 24263, + "end": 24284, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 22275, - "end": 22294, + "start": 24263, + "end": 24282, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 35 } }, "object": { "type": "Identifier", - "start": 22275, - "end": 22285, + "start": 24263, + "end": 24273, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 26 }, "identifierName": "sceneModel" @@ -44960,15 +44960,15 @@ }, "property": { "type": "Identifier", - "start": 22286, - "end": 22294, + "start": 24274, + "end": 24282, "loc": { "start": { - "line": 548, + "line": 602, "column": 27 }, "end": { - "line": 548, + "line": 602, "column": 35 }, "identifierName": "finalize" @@ -44982,43 +44982,43 @@ }, { "type": "ExpressionStatement", - "start": 22314, - "end": 22324, + "start": 24302, + "end": 24312, "loc": { "start": { - "line": 549, + "line": 603, "column": 16 }, "end": { - "line": 549, + "line": 603, "column": 26 } }, "expression": { "type": "CallExpression", - "start": 22314, - "end": 22323, + "start": 24302, + "end": 24311, "loc": { "start": { - "line": 549, + "line": 603, "column": 16 }, "end": { - "line": 549, + "line": 603, "column": 25 } }, "callee": { "type": "Identifier", - "start": 22314, - "end": 22320, + "start": 24302, + "end": 24308, "loc": { "start": { - "line": 549, + "line": 603, "column": 16 }, "end": { - "line": 549, + "line": 603, "column": 22 }, "identifierName": "reject" @@ -45028,15 +45028,15 @@ "arguments": [ { "type": "Identifier", - "start": 22321, - "end": 22322, + "start": 24309, + "end": 24310, "loc": { "start": { - "line": 549, + "line": 603, "column": 23 }, "end": { - "line": 549, + "line": 603, "column": 24 }, "identifierName": "e" @@ -45085,16 +45085,16 @@ }, { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n ", + "value": "*\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * ## Showing a LAS/LAZ model in TreeViewPlugin\n *\n * We can use the `load()` method's `elementId` parameter\n * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const lasLoader = new LASLoaderPlugin(viewer);\n *\n * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"../../assets/models/las/Nalls_Pumpkin_Hill.laz\",\n * rotation: [-90, 0, 0],\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates this MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates this MetaObject with this ID\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n ", "start": 476, - "end": 5619, + "end": 7607, "loc": { "start": { "line": 12, "column": 0 }, "end": { - "line": 148, + "line": 202, "column": 3 } } @@ -45129,16 +45129,16 @@ }, { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n ", + "value": "*\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * ## Showing a LAS/LAZ model in TreeViewPlugin\n *\n * We can use the `load()` method's `elementId` parameter\n * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const lasLoader = new LASLoaderPlugin(viewer);\n *\n * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"../../assets/models/las/Nalls_Pumpkin_Hill.laz\",\n * rotation: [-90, 0, 0],\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates this MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates this MetaObject with this ID\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n ", "start": 476, - "end": 5619, + "end": 7607, "loc": { "start": { "line": 12, "column": 0 }, "end": { - "line": 148, + "line": 202, "column": 3 } } @@ -45146,15 +45146,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"lasLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.dataSource] A custom data source through which the LASLoaderPlugin can load model and metadata files. Defaults to an instance of {@link LASDefaultDataSource}, which loads over HTTP.\n * @param {Number} [cfg.skip=1] Configures LASLoaderPlugin to load every **n** points.\n * @param {Number} [cfg.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [cfg.colorDepth=8] Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits. Accepted values are 8, 16 an \"auto\".\n ", - "start": 5664, - "end": 6536, + "start": 7652, + "end": 8524, "loc": { "start": { - "line": 151, + "line": 205, "column": 4 }, "end": { - "line": 161, + "line": 215, "column": 7 } } @@ -45162,15 +45162,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 6771, - "end": 6983, + "start": 8759, + "end": 8971, "loc": { "start": { - "line": 172, + "line": 226, "column": 4 }, "end": { - "line": 178, + "line": 232, "column": 7 } } @@ -45178,15 +45178,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 7051, - "end": 7261, + "start": 9039, + "end": 9249, "loc": { "start": { - "line": 183, + "line": 237, "column": 4 }, "end": { - "line": 189, + "line": 243, "column": 7 } } @@ -45194,15 +45194,15 @@ { "type": "CommentBlock", "value": "*\n * When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n *\n * Default value is ````1````.\n *\n * @returns {Number} The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7365, - "end": 7598, + "start": 9353, + "end": 9586, "loc": { "start": { - "line": 194, + "line": 248, "column": 4 }, "end": { - "line": 200, + "line": 254, "column": 7 } } @@ -45210,15 +45210,15 @@ { "type": "CommentBlock", "value": "*\n * Configures LASLoaderPlugin to load every **n** points.\n *\n * Default value is ````1````.\n *\n * @param {Number} value The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7654, - "end": 7855, + "start": 9642, + "end": 9843, "loc": { "start": { - "line": 205, + "line": 259, "column": 4 }, "end": { - "line": 211, + "line": 265, "column": 7 } } @@ -45226,15 +45226,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 7922, - "end": 8211, + "start": 9910, + "end": 10199, "loc": { "start": { - "line": 216, + "line": 270, "column": 4 }, "end": { - "line": 222, + "line": 276, "column": 7 } } @@ -45242,15 +45242,15 @@ { "type": "CommentBlock", "value": "*\n * Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 8267, - "end": 8566, + "start": 10255, + "end": 10554, "loc": { "start": { - "line": 227, + "line": 281, "column": 4 }, "end": { - "line": 233, + "line": 287, "column": 7 } } @@ -45258,15 +45258,15 @@ { "type": "CommentBlock", "value": "*\n * Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @returns {Number|String} Possible returned values are 8, 16 and \"auto\".\n ", - "start": 8630, - "end": 8919, + "start": 10618, + "end": 10907, "loc": { "start": { - "line": 238, + "line": 292, "column": 4 }, "end": { - "line": 246, + "line": 300, "column": 7 } } @@ -45274,15 +45274,15 @@ { "type": "CommentBlock", "value": "*\n * Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @param {Number|String} value Valid values are 8, 16 and \"auto\".\n ", - "start": 8987, - "end": 9274, + "start": 10975, + "end": 11262, "loc": { "start": { - "line": 251, + "line": 305, "column": 4 }, "end": { - "line": 259, + "line": 313, "column": 7 } } @@ -45290,15 +45290,15 @@ { "type": "CommentBlock", "value": "*\n * Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.\n * @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Object} [params.stats] Collects model statistics.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n ", - "start": 9358, - "end": 10972, + "start": 11346, + "end": 12960, "loc": { "start": { - "line": 264, + "line": 318, "column": 4 }, "end": { - "line": 279, + "line": 333, "column": 7 } } @@ -45306,15 +45306,15 @@ { "type": "CommentLine", "value": " Return new empty model", - "start": 11486, - "end": 11511, + "start": 13474, + "end": 13499, "loc": { "start": { - "line": 293, + "line": 347, "column": 31 }, "end": { - "line": 293, + "line": 347, "column": 56 } } @@ -45322,15 +45322,15 @@ { "type": "CommentBlock", "value": "\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n\n const geometryId = `geometryMesh${i}`;\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n\n sceneModel.createMesh({\n id: meshId,\n geometryId\n });\n }\n ", - "start": 18889, - "end": 19895, + "start": 20877, + "end": 21883, "loc": { "start": { - "line": 471, + "line": 525, "column": 20 }, "end": { - "line": 494, + "line": 548, "column": 23 } } @@ -45338,15 +45338,15 @@ { "type": "CommentLine", "value": " FIXME: Assumes listeners know order of these two events", - "start": 21986, - "end": 22044, + "start": 23974, + "end": 24032, "loc": { "start": { - "line": 541, + "line": 595, "column": 77 }, "end": { - "line": 541, + "line": 595, "column": 135 } } @@ -45354,15 +45354,15 @@ { "type": "CommentLine", "value": " Don't forget the event, for late subscribers", - "start": 22109, - "end": 22156, + "start": 24097, + "end": 24144, "loc": { "start": { - "line": 542, + "line": 596, "column": 64 }, "end": { - "line": 542, + "line": 596, "column": 111 } } @@ -46985,16 +46985,16 @@ }, { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n ", + "value": "*\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * ## Showing a LAS/LAZ model in TreeViewPlugin\n *\n * We can use the `load()` method's `elementId` parameter\n * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const lasLoader = new LASLoaderPlugin(viewer);\n *\n * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"../../assets/models/las/Nalls_Pumpkin_Hill.laz\",\n * rotation: [-90, 0, 0],\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates this MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates this MetaObject with this ID\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n ", "start": 476, - "end": 5619, + "end": 7607, "loc": { "start": { "line": 12, "column": 0 }, "end": { - "line": 148, + "line": 202, "column": 3 } } @@ -47014,15 +47014,15 @@ "updateContext": null }, "value": "class", - "start": 5620, - "end": 5625, + "start": 7608, + "end": 7613, "loc": { "start": { - "line": 149, + "line": 203, "column": 0 }, "end": { - "line": 149, + "line": 203, "column": 5 } } @@ -47040,15 +47040,15 @@ "binop": null }, "value": "LASLoaderPlugin", - "start": 5626, - "end": 5641, + "start": 7614, + "end": 7629, "loc": { "start": { - "line": 149, + "line": 203, "column": 6 }, "end": { - "line": 149, + "line": 203, "column": 21 } } @@ -47068,15 +47068,15 @@ "updateContext": null }, "value": "extends", - "start": 5642, - "end": 5649, + "start": 7630, + "end": 7637, "loc": { "start": { - "line": 149, + "line": 203, "column": 22 }, "end": { - "line": 149, + "line": 203, "column": 29 } } @@ -47094,15 +47094,15 @@ "binop": null }, "value": "Plugin", - "start": 5650, - "end": 5656, + "start": 7638, + "end": 7644, "loc": { "start": { - "line": 149, + "line": 203, "column": 30 }, "end": { - "line": 149, + "line": 203, "column": 36 } } @@ -47119,15 +47119,15 @@ "postfix": false, "binop": null }, - "start": 5657, - "end": 5658, + "start": 7645, + "end": 7646, "loc": { "start": { - "line": 149, + "line": 203, "column": 37 }, "end": { - "line": 149, + "line": 203, "column": 38 } } @@ -47135,15 +47135,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"lasLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.dataSource] A custom data source through which the LASLoaderPlugin can load model and metadata files. Defaults to an instance of {@link LASDefaultDataSource}, which loads over HTTP.\n * @param {Number} [cfg.skip=1] Configures LASLoaderPlugin to load every **n** points.\n * @param {Number} [cfg.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [cfg.colorDepth=8] Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits. Accepted values are 8, 16 an \"auto\".\n ", - "start": 5664, - "end": 6536, + "start": 7652, + "end": 8524, "loc": { "start": { - "line": 151, + "line": 205, "column": 4 }, "end": { - "line": 161, + "line": 215, "column": 7 } } @@ -47161,15 +47161,15 @@ "binop": null }, "value": "constructor", - "start": 6541, - "end": 6552, + "start": 8529, + "end": 8540, "loc": { "start": { - "line": 162, + "line": 216, "column": 4 }, "end": { - "line": 162, + "line": 216, "column": 15 } } @@ -47186,15 +47186,15 @@ "postfix": false, "binop": null }, - "start": 6552, - "end": 6553, + "start": 8540, + "end": 8541, "loc": { "start": { - "line": 162, + "line": 216, "column": 15 }, "end": { - "line": 162, + "line": 216, "column": 16 } } @@ -47212,15 +47212,15 @@ "binop": null }, "value": "viewer", - "start": 6553, - "end": 6559, + "start": 8541, + "end": 8547, "loc": { "start": { - "line": 162, + "line": 216, "column": 16 }, "end": { - "line": 162, + "line": 216, "column": 22 } } @@ -47238,15 +47238,15 @@ "binop": null, "updateContext": null }, - "start": 6559, - "end": 6560, + "start": 8547, + "end": 8548, "loc": { "start": { - "line": 162, + "line": 216, "column": 22 }, "end": { - "line": 162, + "line": 216, "column": 23 } } @@ -47264,15 +47264,15 @@ "binop": null }, "value": "cfg", - "start": 6561, - "end": 6564, + "start": 8549, + "end": 8552, "loc": { "start": { - "line": 162, + "line": 216, "column": 24 }, "end": { - "line": 162, + "line": 216, "column": 27 } } @@ -47291,15 +47291,15 @@ "updateContext": null }, "value": "=", - "start": 6565, - "end": 6566, + "start": 8553, + "end": 8554, "loc": { "start": { - "line": 162, + "line": 216, "column": 28 }, "end": { - "line": 162, + "line": 216, "column": 29 } } @@ -47316,15 +47316,15 @@ "postfix": false, "binop": null }, - "start": 6567, - "end": 6568, + "start": 8555, + "end": 8556, "loc": { "start": { - "line": 162, + "line": 216, "column": 30 }, "end": { - "line": 162, + "line": 216, "column": 31 } } @@ -47341,15 +47341,15 @@ "postfix": false, "binop": null }, - "start": 6568, - "end": 6569, + "start": 8556, + "end": 8557, "loc": { "start": { - "line": 162, + "line": 216, "column": 31 }, "end": { - "line": 162, + "line": 216, "column": 32 } } @@ -47366,15 +47366,15 @@ "postfix": false, "binop": null }, - "start": 6569, - "end": 6570, + "start": 8557, + "end": 8558, "loc": { "start": { - "line": 162, + "line": 216, "column": 32 }, "end": { - "line": 162, + "line": 216, "column": 33 } } @@ -47391,15 +47391,15 @@ "postfix": false, "binop": null }, - "start": 6571, - "end": 6572, + "start": 8559, + "end": 8560, "loc": { "start": { - "line": 162, + "line": 216, "column": 34 }, "end": { - "line": 162, + "line": 216, "column": 35 } } @@ -47419,15 +47419,15 @@ "updateContext": null }, "value": "super", - "start": 6582, - "end": 6587, + "start": 8570, + "end": 8575, "loc": { "start": { - "line": 164, + "line": 218, "column": 8 }, "end": { - "line": 164, + "line": 218, "column": 13 } } @@ -47444,15 +47444,15 @@ "postfix": false, "binop": null }, - "start": 6587, - "end": 6588, + "start": 8575, + "end": 8576, "loc": { "start": { - "line": 164, + "line": 218, "column": 13 }, "end": { - "line": 164, + "line": 218, "column": 14 } } @@ -47471,15 +47471,15 @@ "updateContext": null }, "value": "lasLoader", - "start": 6588, - "end": 6599, + "start": 8576, + "end": 8587, "loc": { "start": { - "line": 164, + "line": 218, "column": 14 }, "end": { - "line": 164, + "line": 218, "column": 25 } } @@ -47497,15 +47497,15 @@ "binop": null, "updateContext": null }, - "start": 6599, - "end": 6600, + "start": 8587, + "end": 8588, "loc": { "start": { - "line": 164, + "line": 218, "column": 25 }, "end": { - "line": 164, + "line": 218, "column": 26 } } @@ -47523,15 +47523,15 @@ "binop": null }, "value": "viewer", - "start": 6601, - "end": 6607, + "start": 8589, + "end": 8595, "loc": { "start": { - "line": 164, + "line": 218, "column": 27 }, "end": { - "line": 164, + "line": 218, "column": 33 } } @@ -47549,15 +47549,15 @@ "binop": null, "updateContext": null }, - "start": 6607, - "end": 6608, + "start": 8595, + "end": 8596, "loc": { "start": { - "line": 164, + "line": 218, "column": 33 }, "end": { - "line": 164, + "line": 218, "column": 34 } } @@ -47575,15 +47575,15 @@ "binop": null }, "value": "cfg", - "start": 6609, - "end": 6612, + "start": 8597, + "end": 8600, "loc": { "start": { - "line": 164, + "line": 218, "column": 35 }, "end": { - "line": 164, + "line": 218, "column": 38 } } @@ -47600,15 +47600,15 @@ "postfix": false, "binop": null }, - "start": 6612, - "end": 6613, + "start": 8600, + "end": 8601, "loc": { "start": { - "line": 164, + "line": 218, "column": 38 }, "end": { - "line": 164, + "line": 218, "column": 39 } } @@ -47626,15 +47626,15 @@ "binop": null, "updateContext": null }, - "start": 6613, - "end": 6614, + "start": 8601, + "end": 8602, "loc": { "start": { - "line": 164, + "line": 218, "column": 39 }, "end": { - "line": 164, + "line": 218, "column": 40 } } @@ -47654,15 +47654,15 @@ "updateContext": null }, "value": "this", - "start": 6624, - "end": 6628, + "start": 8612, + "end": 8616, "loc": { "start": { - "line": 166, + "line": 220, "column": 8 }, "end": { - "line": 166, + "line": 220, "column": 12 } } @@ -47680,15 +47680,15 @@ "binop": null, "updateContext": null }, - "start": 6628, - "end": 6629, + "start": 8616, + "end": 8617, "loc": { "start": { - "line": 166, + "line": 220, "column": 12 }, "end": { - "line": 166, + "line": 220, "column": 13 } } @@ -47706,15 +47706,15 @@ "binop": null }, "value": "dataSource", - "start": 6629, - "end": 6639, + "start": 8617, + "end": 8627, "loc": { "start": { - "line": 166, + "line": 220, "column": 13 }, "end": { - "line": 166, + "line": 220, "column": 23 } } @@ -47733,15 +47733,15 @@ "updateContext": null }, "value": "=", - "start": 6640, - "end": 6641, + "start": 8628, + "end": 8629, "loc": { "start": { - "line": 166, + "line": 220, "column": 24 }, "end": { - "line": 166, + "line": 220, "column": 25 } } @@ -47759,15 +47759,15 @@ "binop": null }, "value": "cfg", - "start": 6642, - "end": 6645, + "start": 8630, + "end": 8633, "loc": { "start": { - "line": 166, + "line": 220, "column": 26 }, "end": { - "line": 166, + "line": 220, "column": 29 } } @@ -47785,15 +47785,15 @@ "binop": null, "updateContext": null }, - "start": 6645, - "end": 6646, + "start": 8633, + "end": 8634, "loc": { "start": { - "line": 166, + "line": 220, "column": 29 }, "end": { - "line": 166, + "line": 220, "column": 30 } } @@ -47811,15 +47811,15 @@ "binop": null }, "value": "dataSource", - "start": 6646, - "end": 6656, + "start": 8634, + "end": 8644, "loc": { "start": { - "line": 166, + "line": 220, "column": 30 }, "end": { - "line": 166, + "line": 220, "column": 40 } } @@ -47837,15 +47837,15 @@ "binop": null, "updateContext": null }, - "start": 6656, - "end": 6657, + "start": 8644, + "end": 8645, "loc": { "start": { - "line": 166, + "line": 220, "column": 40 }, "end": { - "line": 166, + "line": 220, "column": 41 } } @@ -47865,15 +47865,15 @@ "updateContext": null }, "value": "this", - "start": 6666, - "end": 6670, + "start": 8654, + "end": 8658, "loc": { "start": { - "line": 167, + "line": 221, "column": 8 }, "end": { - "line": 167, + "line": 221, "column": 12 } } @@ -47891,15 +47891,15 @@ "binop": null, "updateContext": null }, - "start": 6670, - "end": 6671, + "start": 8658, + "end": 8659, "loc": { "start": { - "line": 167, + "line": 221, "column": 12 }, "end": { - "line": 167, + "line": 221, "column": 13 } } @@ -47917,15 +47917,15 @@ "binop": null }, "value": "skip", - "start": 6671, - "end": 6675, + "start": 8659, + "end": 8663, "loc": { "start": { - "line": 167, + "line": 221, "column": 13 }, "end": { - "line": 167, + "line": 221, "column": 17 } } @@ -47944,15 +47944,15 @@ "updateContext": null }, "value": "=", - "start": 6676, - "end": 6677, + "start": 8664, + "end": 8665, "loc": { "start": { - "line": 167, + "line": 221, "column": 18 }, "end": { - "line": 167, + "line": 221, "column": 19 } } @@ -47970,15 +47970,15 @@ "binop": null }, "value": "cfg", - "start": 6678, - "end": 6681, + "start": 8666, + "end": 8669, "loc": { "start": { - "line": 167, + "line": 221, "column": 20 }, "end": { - "line": 167, + "line": 221, "column": 23 } } @@ -47996,15 +47996,15 @@ "binop": null, "updateContext": null }, - "start": 6681, - "end": 6682, + "start": 8669, + "end": 8670, "loc": { "start": { - "line": 167, + "line": 221, "column": 23 }, "end": { - "line": 167, + "line": 221, "column": 24 } } @@ -48022,15 +48022,15 @@ "binop": null }, "value": "skip", - "start": 6682, - "end": 6686, + "start": 8670, + "end": 8674, "loc": { "start": { - "line": 167, + "line": 221, "column": 24 }, "end": { - "line": 167, + "line": 221, "column": 28 } } @@ -48048,15 +48048,15 @@ "binop": null, "updateContext": null }, - "start": 6686, - "end": 6687, + "start": 8674, + "end": 8675, "loc": { "start": { - "line": 167, + "line": 221, "column": 28 }, "end": { - "line": 167, + "line": 221, "column": 29 } } @@ -48076,15 +48076,15 @@ "updateContext": null }, "value": "this", - "start": 6696, - "end": 6700, + "start": 8684, + "end": 8688, "loc": { "start": { - "line": 168, + "line": 222, "column": 8 }, "end": { - "line": 168, + "line": 222, "column": 12 } } @@ -48102,15 +48102,15 @@ "binop": null, "updateContext": null }, - "start": 6700, - "end": 6701, + "start": 8688, + "end": 8689, "loc": { "start": { - "line": 168, + "line": 222, "column": 12 }, "end": { - "line": 168, + "line": 222, "column": 13 } } @@ -48128,15 +48128,15 @@ "binop": null }, "value": "fp64", - "start": 6701, - "end": 6705, + "start": 8689, + "end": 8693, "loc": { "start": { - "line": 168, + "line": 222, "column": 13 }, "end": { - "line": 168, + "line": 222, "column": 17 } } @@ -48155,15 +48155,15 @@ "updateContext": null }, "value": "=", - "start": 6706, - "end": 6707, + "start": 8694, + "end": 8695, "loc": { "start": { - "line": 168, + "line": 222, "column": 18 }, "end": { - "line": 168, + "line": 222, "column": 19 } } @@ -48181,15 +48181,15 @@ "binop": null }, "value": "cfg", - "start": 6708, - "end": 6711, + "start": 8696, + "end": 8699, "loc": { "start": { - "line": 168, + "line": 222, "column": 20 }, "end": { - "line": 168, + "line": 222, "column": 23 } } @@ -48207,15 +48207,15 @@ "binop": null, "updateContext": null }, - "start": 6711, - "end": 6712, + "start": 8699, + "end": 8700, "loc": { "start": { - "line": 168, + "line": 222, "column": 23 }, "end": { - "line": 168, + "line": 222, "column": 24 } } @@ -48233,15 +48233,15 @@ "binop": null }, "value": "fp64", - "start": 6712, - "end": 6716, + "start": 8700, + "end": 8704, "loc": { "start": { - "line": 168, + "line": 222, "column": 24 }, "end": { - "line": 168, + "line": 222, "column": 28 } } @@ -48259,15 +48259,15 @@ "binop": null, "updateContext": null }, - "start": 6716, - "end": 6717, + "start": 8704, + "end": 8705, "loc": { "start": { - "line": 168, + "line": 222, "column": 28 }, "end": { - "line": 168, + "line": 222, "column": 29 } } @@ -48287,15 +48287,15 @@ "updateContext": null }, "value": "this", - "start": 6726, - "end": 6730, + "start": 8714, + "end": 8718, "loc": { "start": { - "line": 169, + "line": 223, "column": 8 }, "end": { - "line": 169, + "line": 223, "column": 12 } } @@ -48313,15 +48313,15 @@ "binop": null, "updateContext": null }, - "start": 6730, - "end": 6731, + "start": 8718, + "end": 8719, "loc": { "start": { - "line": 169, + "line": 223, "column": 12 }, "end": { - "line": 169, + "line": 223, "column": 13 } } @@ -48339,15 +48339,15 @@ "binop": null }, "value": "colorDepth", - "start": 6731, - "end": 6741, + "start": 8719, + "end": 8729, "loc": { "start": { - "line": 169, + "line": 223, "column": 13 }, "end": { - "line": 169, + "line": 223, "column": 23 } } @@ -48366,15 +48366,15 @@ "updateContext": null }, "value": "=", - "start": 6742, - "end": 6743, + "start": 8730, + "end": 8731, "loc": { "start": { - "line": 169, + "line": 223, "column": 24 }, "end": { - "line": 169, + "line": 223, "column": 25 } } @@ -48392,15 +48392,15 @@ "binop": null }, "value": "cfg", - "start": 6744, - "end": 6747, + "start": 8732, + "end": 8735, "loc": { "start": { - "line": 169, + "line": 223, "column": 26 }, "end": { - "line": 169, + "line": 223, "column": 29 } } @@ -48418,15 +48418,15 @@ "binop": null, "updateContext": null }, - "start": 6747, - "end": 6748, + "start": 8735, + "end": 8736, "loc": { "start": { - "line": 169, + "line": 223, "column": 29 }, "end": { - "line": 169, + "line": 223, "column": 30 } } @@ -48444,15 +48444,15 @@ "binop": null }, "value": "colorDepth", - "start": 6748, - "end": 6758, + "start": 8736, + "end": 8746, "loc": { "start": { - "line": 169, + "line": 223, "column": 30 }, "end": { - "line": 169, + "line": 223, "column": 40 } } @@ -48470,15 +48470,15 @@ "binop": null, "updateContext": null }, - "start": 6758, - "end": 6759, + "start": 8746, + "end": 8747, "loc": { "start": { - "line": 169, + "line": 223, "column": 40 }, "end": { - "line": 169, + "line": 223, "column": 41 } } @@ -48495,15 +48495,15 @@ "postfix": false, "binop": null }, - "start": 6764, - "end": 6765, + "start": 8752, + "end": 8753, "loc": { "start": { - "line": 170, + "line": 224, "column": 4 }, "end": { - "line": 170, + "line": 224, "column": 5 } } @@ -48511,15 +48511,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 6771, - "end": 6983, + "start": 8759, + "end": 8971, "loc": { "start": { - "line": 172, + "line": 226, "column": 4 }, "end": { - "line": 178, + "line": 232, "column": 7 } } @@ -48537,15 +48537,15 @@ "binop": null }, "value": "get", - "start": 6988, - "end": 6991, + "start": 8976, + "end": 8979, "loc": { "start": { - "line": 179, + "line": 233, "column": 4 }, "end": { - "line": 179, + "line": 233, "column": 7 } } @@ -48563,15 +48563,15 @@ "binop": null }, "value": "dataSource", - "start": 6992, - "end": 7002, + "start": 8980, + "end": 8990, "loc": { "start": { - "line": 179, + "line": 233, "column": 8 }, "end": { - "line": 179, + "line": 233, "column": 18 } } @@ -48588,15 +48588,15 @@ "postfix": false, "binop": null }, - "start": 7002, - "end": 7003, + "start": 8990, + "end": 8991, "loc": { "start": { - "line": 179, + "line": 233, "column": 18 }, "end": { - "line": 179, + "line": 233, "column": 19 } } @@ -48613,15 +48613,15 @@ "postfix": false, "binop": null }, - "start": 7003, - "end": 7004, + "start": 8991, + "end": 8992, "loc": { "start": { - "line": 179, + "line": 233, "column": 19 }, "end": { - "line": 179, + "line": 233, "column": 20 } } @@ -48638,15 +48638,15 @@ "postfix": false, "binop": null }, - "start": 7005, - "end": 7006, + "start": 8993, + "end": 8994, "loc": { "start": { - "line": 179, + "line": 233, "column": 21 }, "end": { - "line": 179, + "line": 233, "column": 22 } } @@ -48666,15 +48666,15 @@ "updateContext": null }, "value": "return", - "start": 7015, - "end": 7021, + "start": 9003, + "end": 9009, "loc": { "start": { - "line": 180, + "line": 234, "column": 8 }, "end": { - "line": 180, + "line": 234, "column": 14 } } @@ -48694,15 +48694,15 @@ "updateContext": null }, "value": "this", - "start": 7022, - "end": 7026, + "start": 9010, + "end": 9014, "loc": { "start": { - "line": 180, + "line": 234, "column": 15 }, "end": { - "line": 180, + "line": 234, "column": 19 } } @@ -48720,15 +48720,15 @@ "binop": null, "updateContext": null }, - "start": 7026, - "end": 7027, + "start": 9014, + "end": 9015, "loc": { "start": { - "line": 180, + "line": 234, "column": 19 }, "end": { - "line": 180, + "line": 234, "column": 20 } } @@ -48746,15 +48746,15 @@ "binop": null }, "value": "_dataSource", - "start": 7027, - "end": 7038, + "start": 9015, + "end": 9026, "loc": { "start": { - "line": 180, + "line": 234, "column": 20 }, "end": { - "line": 180, + "line": 234, "column": 31 } } @@ -48772,15 +48772,15 @@ "binop": null, "updateContext": null }, - "start": 7038, - "end": 7039, + "start": 9026, + "end": 9027, "loc": { "start": { - "line": 180, + "line": 234, "column": 31 }, "end": { - "line": 180, + "line": 234, "column": 32 } } @@ -48797,15 +48797,15 @@ "postfix": false, "binop": null }, - "start": 7044, - "end": 7045, + "start": 9032, + "end": 9033, "loc": { "start": { - "line": 181, + "line": 235, "column": 4 }, "end": { - "line": 181, + "line": 235, "column": 5 } } @@ -48813,15 +48813,15 @@ { "type": "CommentBlock", "value": "*\n * Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n ", - "start": 7051, - "end": 7261, + "start": 9039, + "end": 9249, "loc": { "start": { - "line": 183, + "line": 237, "column": 4 }, "end": { - "line": 189, + "line": 243, "column": 7 } } @@ -48839,15 +48839,15 @@ "binop": null }, "value": "set", - "start": 7266, - "end": 7269, + "start": 9254, + "end": 9257, "loc": { "start": { - "line": 190, + "line": 244, "column": 4 }, "end": { - "line": 190, + "line": 244, "column": 7 } } @@ -48865,15 +48865,15 @@ "binop": null }, "value": "dataSource", - "start": 7270, - "end": 7280, + "start": 9258, + "end": 9268, "loc": { "start": { - "line": 190, + "line": 244, "column": 8 }, "end": { - "line": 190, + "line": 244, "column": 18 } } @@ -48890,15 +48890,15 @@ "postfix": false, "binop": null }, - "start": 7280, - "end": 7281, + "start": 9268, + "end": 9269, "loc": { "start": { - "line": 190, + "line": 244, "column": 18 }, "end": { - "line": 190, + "line": 244, "column": 19 } } @@ -48916,15 +48916,15 @@ "binop": null }, "value": "value", - "start": 7281, - "end": 7286, + "start": 9269, + "end": 9274, "loc": { "start": { - "line": 190, + "line": 244, "column": 19 }, "end": { - "line": 190, + "line": 244, "column": 24 } } @@ -48941,15 +48941,15 @@ "postfix": false, "binop": null }, - "start": 7286, - "end": 7287, + "start": 9274, + "end": 9275, "loc": { "start": { - "line": 190, + "line": 244, "column": 24 }, "end": { - "line": 190, + "line": 244, "column": 25 } } @@ -48966,15 +48966,15 @@ "postfix": false, "binop": null }, - "start": 7288, - "end": 7289, + "start": 9276, + "end": 9277, "loc": { "start": { - "line": 190, + "line": 244, "column": 26 }, "end": { - "line": 190, + "line": 244, "column": 27 } } @@ -48994,15 +48994,15 @@ "updateContext": null }, "value": "this", - "start": 7298, - "end": 7302, + "start": 9286, + "end": 9290, "loc": { "start": { - "line": 191, + "line": 245, "column": 8 }, "end": { - "line": 191, + "line": 245, "column": 12 } } @@ -49020,15 +49020,15 @@ "binop": null, "updateContext": null }, - "start": 7302, - "end": 7303, + "start": 9290, + "end": 9291, "loc": { "start": { - "line": 191, + "line": 245, "column": 12 }, "end": { - "line": 191, + "line": 245, "column": 13 } } @@ -49046,15 +49046,15 @@ "binop": null }, "value": "_dataSource", - "start": 7303, - "end": 7314, + "start": 9291, + "end": 9302, "loc": { "start": { - "line": 191, + "line": 245, "column": 13 }, "end": { - "line": 191, + "line": 245, "column": 24 } } @@ -49073,15 +49073,15 @@ "updateContext": null }, "value": "=", - "start": 7315, - "end": 7316, + "start": 9303, + "end": 9304, "loc": { "start": { - "line": 191, + "line": 245, "column": 25 }, "end": { - "line": 191, + "line": 245, "column": 26 } } @@ -49099,15 +49099,15 @@ "binop": null }, "value": "value", - "start": 7317, - "end": 7322, + "start": 9305, + "end": 9310, "loc": { "start": { - "line": 191, + "line": 245, "column": 27 }, "end": { - "line": 191, + "line": 245, "column": 32 } } @@ -49126,15 +49126,15 @@ "updateContext": null }, "value": "||", - "start": 7323, - "end": 7325, + "start": 9311, + "end": 9313, "loc": { "start": { - "line": 191, + "line": 245, "column": 33 }, "end": { - "line": 191, + "line": 245, "column": 35 } } @@ -49154,15 +49154,15 @@ "updateContext": null }, "value": "new", - "start": 7326, - "end": 7329, + "start": 9314, + "end": 9317, "loc": { "start": { - "line": 191, + "line": 245, "column": 36 }, "end": { - "line": 191, + "line": 245, "column": 39 } } @@ -49180,15 +49180,15 @@ "binop": null }, "value": "LASDefaultDataSource", - "start": 7330, - "end": 7350, + "start": 9318, + "end": 9338, "loc": { "start": { - "line": 191, + "line": 245, "column": 40 }, "end": { - "line": 191, + "line": 245, "column": 60 } } @@ -49205,15 +49205,15 @@ "postfix": false, "binop": null }, - "start": 7350, - "end": 7351, + "start": 9338, + "end": 9339, "loc": { "start": { - "line": 191, + "line": 245, "column": 60 }, "end": { - "line": 191, + "line": 245, "column": 61 } } @@ -49230,15 +49230,15 @@ "postfix": false, "binop": null }, - "start": 7351, - "end": 7352, + "start": 9339, + "end": 9340, "loc": { "start": { - "line": 191, + "line": 245, "column": 61 }, "end": { - "line": 191, + "line": 245, "column": 62 } } @@ -49256,15 +49256,15 @@ "binop": null, "updateContext": null }, - "start": 7352, - "end": 7353, + "start": 9340, + "end": 9341, "loc": { "start": { - "line": 191, + "line": 245, "column": 62 }, "end": { - "line": 191, + "line": 245, "column": 63 } } @@ -49281,15 +49281,15 @@ "postfix": false, "binop": null }, - "start": 7358, - "end": 7359, + "start": 9346, + "end": 9347, "loc": { "start": { - "line": 192, + "line": 246, "column": 4 }, "end": { - "line": 192, + "line": 246, "column": 5 } } @@ -49297,15 +49297,15 @@ { "type": "CommentBlock", "value": "*\n * When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n *\n * Default value is ````1````.\n *\n * @returns {Number} The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7365, - "end": 7598, + "start": 9353, + "end": 9586, "loc": { "start": { - "line": 194, + "line": 248, "column": 4 }, "end": { - "line": 200, + "line": 254, "column": 7 } } @@ -49323,15 +49323,15 @@ "binop": null }, "value": "get", - "start": 7603, - "end": 7606, + "start": 9591, + "end": 9594, "loc": { "start": { - "line": 201, + "line": 255, "column": 4 }, "end": { - "line": 201, + "line": 255, "column": 7 } } @@ -49349,15 +49349,15 @@ "binop": null }, "value": "skip", - "start": 7607, - "end": 7611, + "start": 9595, + "end": 9599, "loc": { "start": { - "line": 201, + "line": 255, "column": 8 }, "end": { - "line": 201, + "line": 255, "column": 12 } } @@ -49374,15 +49374,15 @@ "postfix": false, "binop": null }, - "start": 7611, - "end": 7612, + "start": 9599, + "end": 9600, "loc": { "start": { - "line": 201, + "line": 255, "column": 12 }, "end": { - "line": 201, + "line": 255, "column": 13 } } @@ -49399,15 +49399,15 @@ "postfix": false, "binop": null }, - "start": 7612, - "end": 7613, + "start": 9600, + "end": 9601, "loc": { "start": { - "line": 201, + "line": 255, "column": 13 }, "end": { - "line": 201, + "line": 255, "column": 14 } } @@ -49424,15 +49424,15 @@ "postfix": false, "binop": null }, - "start": 7614, - "end": 7615, + "start": 9602, + "end": 9603, "loc": { "start": { - "line": 201, + "line": 255, "column": 15 }, "end": { - "line": 201, + "line": 255, "column": 16 } } @@ -49452,15 +49452,15 @@ "updateContext": null }, "value": "return", - "start": 7624, - "end": 7630, + "start": 9612, + "end": 9618, "loc": { "start": { - "line": 202, + "line": 256, "column": 8 }, "end": { - "line": 202, + "line": 256, "column": 14 } } @@ -49480,15 +49480,15 @@ "updateContext": null }, "value": "this", - "start": 7631, - "end": 7635, + "start": 9619, + "end": 9623, "loc": { "start": { - "line": 202, + "line": 256, "column": 15 }, "end": { - "line": 202, + "line": 256, "column": 19 } } @@ -49506,15 +49506,15 @@ "binop": null, "updateContext": null }, - "start": 7635, - "end": 7636, + "start": 9623, + "end": 9624, "loc": { "start": { - "line": 202, + "line": 256, "column": 19 }, "end": { - "line": 202, + "line": 256, "column": 20 } } @@ -49532,15 +49532,15 @@ "binop": null }, "value": "_skip", - "start": 7636, - "end": 7641, + "start": 9624, + "end": 9629, "loc": { "start": { - "line": 202, + "line": 256, "column": 20 }, "end": { - "line": 202, + "line": 256, "column": 25 } } @@ -49558,15 +49558,15 @@ "binop": null, "updateContext": null }, - "start": 7641, - "end": 7642, + "start": 9629, + "end": 9630, "loc": { "start": { - "line": 202, + "line": 256, "column": 25 }, "end": { - "line": 202, + "line": 256, "column": 26 } } @@ -49583,15 +49583,15 @@ "postfix": false, "binop": null }, - "start": 7647, - "end": 7648, + "start": 9635, + "end": 9636, "loc": { "start": { - "line": 203, + "line": 257, "column": 4 }, "end": { - "line": 203, + "line": 257, "column": 5 } } @@ -49599,15 +49599,15 @@ { "type": "CommentBlock", "value": "*\n * Configures LASLoaderPlugin to load every **n** points.\n *\n * Default value is ````1````.\n *\n * @param {Number} value The **n**th point that LASLoaderPlugin will read.\n ", - "start": 7654, - "end": 7855, + "start": 9642, + "end": 9843, "loc": { "start": { - "line": 205, + "line": 259, "column": 4 }, "end": { - "line": 211, + "line": 265, "column": 7 } } @@ -49625,15 +49625,15 @@ "binop": null }, "value": "set", - "start": 7860, - "end": 7863, + "start": 9848, + "end": 9851, "loc": { "start": { - "line": 212, + "line": 266, "column": 4 }, "end": { - "line": 212, + "line": 266, "column": 7 } } @@ -49651,15 +49651,15 @@ "binop": null }, "value": "skip", - "start": 7864, - "end": 7868, + "start": 9852, + "end": 9856, "loc": { "start": { - "line": 212, + "line": 266, "column": 8 }, "end": { - "line": 212, + "line": 266, "column": 12 } } @@ -49676,15 +49676,15 @@ "postfix": false, "binop": null }, - "start": 7868, - "end": 7869, + "start": 9856, + "end": 9857, "loc": { "start": { - "line": 212, + "line": 266, "column": 12 }, "end": { - "line": 212, + "line": 266, "column": 13 } } @@ -49702,15 +49702,15 @@ "binop": null }, "value": "value", - "start": 7869, - "end": 7874, + "start": 9857, + "end": 9862, "loc": { "start": { - "line": 212, + "line": 266, "column": 13 }, "end": { - "line": 212, + "line": 266, "column": 18 } } @@ -49727,15 +49727,15 @@ "postfix": false, "binop": null }, - "start": 7874, - "end": 7875, + "start": 9862, + "end": 9863, "loc": { "start": { - "line": 212, + "line": 266, "column": 18 }, "end": { - "line": 212, + "line": 266, "column": 19 } } @@ -49752,15 +49752,15 @@ "postfix": false, "binop": null }, - "start": 7876, - "end": 7877, + "start": 9864, + "end": 9865, "loc": { "start": { - "line": 212, + "line": 266, "column": 20 }, "end": { - "line": 212, + "line": 266, "column": 21 } } @@ -49780,15 +49780,15 @@ "updateContext": null }, "value": "this", - "start": 7886, - "end": 7890, + "start": 9874, + "end": 9878, "loc": { "start": { - "line": 213, + "line": 267, "column": 8 }, "end": { - "line": 213, + "line": 267, "column": 12 } } @@ -49806,15 +49806,15 @@ "binop": null, "updateContext": null }, - "start": 7890, - "end": 7891, + "start": 9878, + "end": 9879, "loc": { "start": { - "line": 213, + "line": 267, "column": 12 }, "end": { - "line": 213, + "line": 267, "column": 13 } } @@ -49832,15 +49832,15 @@ "binop": null }, "value": "_skip", - "start": 7891, - "end": 7896, + "start": 9879, + "end": 9884, "loc": { "start": { - "line": 213, + "line": 267, "column": 13 }, "end": { - "line": 213, + "line": 267, "column": 18 } } @@ -49859,15 +49859,15 @@ "updateContext": null }, "value": "=", - "start": 7897, - "end": 7898, + "start": 9885, + "end": 9886, "loc": { "start": { - "line": 213, + "line": 267, "column": 19 }, "end": { - "line": 213, + "line": 267, "column": 20 } } @@ -49885,15 +49885,15 @@ "binop": null }, "value": "value", - "start": 7899, - "end": 7904, + "start": 9887, + "end": 9892, "loc": { "start": { - "line": 213, + "line": 267, "column": 21 }, "end": { - "line": 213, + "line": 267, "column": 26 } } @@ -49912,15 +49912,15 @@ "updateContext": null }, "value": "||", - "start": 7905, - "end": 7907, + "start": 9893, + "end": 9895, "loc": { "start": { - "line": 213, + "line": 267, "column": 27 }, "end": { - "line": 213, + "line": 267, "column": 29 } } @@ -49939,15 +49939,15 @@ "updateContext": null }, "value": 1, - "start": 7908, - "end": 7909, + "start": 9896, + "end": 9897, "loc": { "start": { - "line": 213, + "line": 267, "column": 30 }, "end": { - "line": 213, + "line": 267, "column": 31 } } @@ -49965,15 +49965,15 @@ "binop": null, "updateContext": null }, - "start": 7909, - "end": 7910, + "start": 9897, + "end": 9898, "loc": { "start": { - "line": 213, + "line": 267, "column": 31 }, "end": { - "line": 213, + "line": 267, "column": 32 } } @@ -49990,15 +49990,15 @@ "postfix": false, "binop": null }, - "start": 7915, - "end": 7916, + "start": 9903, + "end": 9904, "loc": { "start": { - "line": 214, + "line": 268, "column": 4 }, "end": { - "line": 214, + "line": 268, "column": 5 } } @@ -50006,15 +50006,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 7922, - "end": 8211, + "start": 9910, + "end": 10199, "loc": { "start": { - "line": 216, + "line": 270, "column": 4 }, "end": { - "line": 222, + "line": 276, "column": 7 } } @@ -50032,15 +50032,15 @@ "binop": null }, "value": "get", - "start": 8216, - "end": 8219, + "start": 10204, + "end": 10207, "loc": { "start": { - "line": 223, + "line": 277, "column": 4 }, "end": { - "line": 223, + "line": 277, "column": 7 } } @@ -50058,15 +50058,15 @@ "binop": null }, "value": "fp64", - "start": 8220, - "end": 8224, + "start": 10208, + "end": 10212, "loc": { "start": { - "line": 223, + "line": 277, "column": 8 }, "end": { - "line": 223, + "line": 277, "column": 12 } } @@ -50083,15 +50083,15 @@ "postfix": false, "binop": null }, - "start": 8224, - "end": 8225, + "start": 10212, + "end": 10213, "loc": { "start": { - "line": 223, + "line": 277, "column": 12 }, "end": { - "line": 223, + "line": 277, "column": 13 } } @@ -50108,15 +50108,15 @@ "postfix": false, "binop": null }, - "start": 8225, - "end": 8226, + "start": 10213, + "end": 10214, "loc": { "start": { - "line": 223, + "line": 277, "column": 13 }, "end": { - "line": 223, + "line": 277, "column": 14 } } @@ -50133,15 +50133,15 @@ "postfix": false, "binop": null }, - "start": 8227, - "end": 8228, + "start": 10215, + "end": 10216, "loc": { "start": { - "line": 223, + "line": 277, "column": 15 }, "end": { - "line": 223, + "line": 277, "column": 16 } } @@ -50161,15 +50161,15 @@ "updateContext": null }, "value": "return", - "start": 8237, - "end": 8243, + "start": 10225, + "end": 10231, "loc": { "start": { - "line": 224, + "line": 278, "column": 8 }, "end": { - "line": 224, + "line": 278, "column": 14 } } @@ -50189,15 +50189,15 @@ "updateContext": null }, "value": "this", - "start": 8244, - "end": 8248, + "start": 10232, + "end": 10236, "loc": { "start": { - "line": 224, + "line": 278, "column": 15 }, "end": { - "line": 224, + "line": 278, "column": 19 } } @@ -50215,15 +50215,15 @@ "binop": null, "updateContext": null }, - "start": 8248, - "end": 8249, + "start": 10236, + "end": 10237, "loc": { "start": { - "line": 224, + "line": 278, "column": 19 }, "end": { - "line": 224, + "line": 278, "column": 20 } } @@ -50241,15 +50241,15 @@ "binop": null }, "value": "_fp64", - "start": 8249, - "end": 8254, + "start": 10237, + "end": 10242, "loc": { "start": { - "line": 224, + "line": 278, "column": 20 }, "end": { - "line": 224, + "line": 278, "column": 25 } } @@ -50267,15 +50267,15 @@ "binop": null, "updateContext": null }, - "start": 8254, - "end": 8255, + "start": 10242, + "end": 10243, "loc": { "start": { - "line": 224, + "line": 278, "column": 25 }, "end": { - "line": 224, + "line": 278, "column": 26 } } @@ -50292,15 +50292,15 @@ "postfix": false, "binop": null }, - "start": 8260, - "end": 8261, + "start": 10248, + "end": 10249, "loc": { "start": { - "line": 225, + "line": 279, "column": 4 }, "end": { - "line": 225, + "line": 279, "column": 5 } } @@ -50308,15 +50308,15 @@ { "type": "CommentBlock", "value": "*\n * Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n ", - "start": 8267, - "end": 8566, + "start": 10255, + "end": 10554, "loc": { "start": { - "line": 227, + "line": 281, "column": 4 }, "end": { - "line": 233, + "line": 287, "column": 7 } } @@ -50334,15 +50334,15 @@ "binop": null }, "value": "set", - "start": 8571, - "end": 8574, + "start": 10559, + "end": 10562, "loc": { "start": { - "line": 234, + "line": 288, "column": 4 }, "end": { - "line": 234, + "line": 288, "column": 7 } } @@ -50360,15 +50360,15 @@ "binop": null }, "value": "fp64", - "start": 8575, - "end": 8579, + "start": 10563, + "end": 10567, "loc": { "start": { - "line": 234, + "line": 288, "column": 8 }, "end": { - "line": 234, + "line": 288, "column": 12 } } @@ -50385,15 +50385,15 @@ "postfix": false, "binop": null }, - "start": 8579, - "end": 8580, + "start": 10567, + "end": 10568, "loc": { "start": { - "line": 234, + "line": 288, "column": 12 }, "end": { - "line": 234, + "line": 288, "column": 13 } } @@ -50411,15 +50411,15 @@ "binop": null }, "value": "value", - "start": 8580, - "end": 8585, + "start": 10568, + "end": 10573, "loc": { "start": { - "line": 234, + "line": 288, "column": 13 }, "end": { - "line": 234, + "line": 288, "column": 18 } } @@ -50436,15 +50436,15 @@ "postfix": false, "binop": null }, - "start": 8585, - "end": 8586, + "start": 10573, + "end": 10574, "loc": { "start": { - "line": 234, + "line": 288, "column": 18 }, "end": { - "line": 234, + "line": 288, "column": 19 } } @@ -50461,15 +50461,15 @@ "postfix": false, "binop": null }, - "start": 8587, - "end": 8588, + "start": 10575, + "end": 10576, "loc": { "start": { - "line": 234, + "line": 288, "column": 20 }, "end": { - "line": 234, + "line": 288, "column": 21 } } @@ -50489,15 +50489,15 @@ "updateContext": null }, "value": "this", - "start": 8597, - "end": 8601, + "start": 10585, + "end": 10589, "loc": { "start": { - "line": 235, + "line": 289, "column": 8 }, "end": { - "line": 235, + "line": 289, "column": 12 } } @@ -50515,15 +50515,15 @@ "binop": null, "updateContext": null }, - "start": 8601, - "end": 8602, + "start": 10589, + "end": 10590, "loc": { "start": { - "line": 235, + "line": 289, "column": 12 }, "end": { - "line": 235, + "line": 289, "column": 13 } } @@ -50541,15 +50541,15 @@ "binop": null }, "value": "_fp64", - "start": 8602, - "end": 8607, + "start": 10590, + "end": 10595, "loc": { "start": { - "line": 235, + "line": 289, "column": 13 }, "end": { - "line": 235, + "line": 289, "column": 18 } } @@ -50568,15 +50568,15 @@ "updateContext": null }, "value": "=", - "start": 8608, - "end": 8609, + "start": 10596, + "end": 10597, "loc": { "start": { - "line": 235, + "line": 289, "column": 19 }, "end": { - "line": 235, + "line": 289, "column": 20 } } @@ -50595,15 +50595,15 @@ "updateContext": null }, "value": "!", - "start": 8610, - "end": 8611, + "start": 10598, + "end": 10599, "loc": { "start": { - "line": 235, + "line": 289, "column": 21 }, "end": { - "line": 235, + "line": 289, "column": 22 } } @@ -50622,15 +50622,15 @@ "updateContext": null }, "value": "!", - "start": 8611, - "end": 8612, + "start": 10599, + "end": 10600, "loc": { "start": { - "line": 235, + "line": 289, "column": 22 }, "end": { - "line": 235, + "line": 289, "column": 23 } } @@ -50648,15 +50648,15 @@ "binop": null }, "value": "value", - "start": 8612, - "end": 8617, + "start": 10600, + "end": 10605, "loc": { "start": { - "line": 235, + "line": 289, "column": 23 }, "end": { - "line": 235, + "line": 289, "column": 28 } } @@ -50674,15 +50674,15 @@ "binop": null, "updateContext": null }, - "start": 8617, - "end": 8618, + "start": 10605, + "end": 10606, "loc": { "start": { - "line": 235, + "line": 289, "column": 28 }, "end": { - "line": 235, + "line": 289, "column": 29 } } @@ -50699,15 +50699,15 @@ "postfix": false, "binop": null }, - "start": 8623, - "end": 8624, + "start": 10611, + "end": 10612, "loc": { "start": { - "line": 236, + "line": 290, "column": 4 }, "end": { - "line": 236, + "line": 290, "column": 5 } } @@ -50715,15 +50715,15 @@ { "type": "CommentBlock", "value": "*\n * Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @returns {Number|String} Possible returned values are 8, 16 and \"auto\".\n ", - "start": 8630, - "end": 8919, + "start": 10618, + "end": 10907, "loc": { "start": { - "line": 238, + "line": 292, "column": 4 }, "end": { - "line": 246, + "line": 300, "column": 7 } } @@ -50741,15 +50741,15 @@ "binop": null }, "value": "get", - "start": 8924, - "end": 8927, + "start": 10912, + "end": 10915, "loc": { "start": { - "line": 247, + "line": 301, "column": 4 }, "end": { - "line": 247, + "line": 301, "column": 7 } } @@ -50767,15 +50767,15 @@ "binop": null }, "value": "colorDepth", - "start": 8928, - "end": 8938, + "start": 10916, + "end": 10926, "loc": { "start": { - "line": 247, + "line": 301, "column": 8 }, "end": { - "line": 247, + "line": 301, "column": 18 } } @@ -50792,15 +50792,15 @@ "postfix": false, "binop": null }, - "start": 8938, - "end": 8939, + "start": 10926, + "end": 10927, "loc": { "start": { - "line": 247, + "line": 301, "column": 18 }, "end": { - "line": 247, + "line": 301, "column": 19 } } @@ -50817,15 +50817,15 @@ "postfix": false, "binop": null }, - "start": 8939, - "end": 8940, + "start": 10927, + "end": 10928, "loc": { "start": { - "line": 247, + "line": 301, "column": 19 }, "end": { - "line": 247, + "line": 301, "column": 20 } } @@ -50842,15 +50842,15 @@ "postfix": false, "binop": null }, - "start": 8941, - "end": 8942, + "start": 10929, + "end": 10930, "loc": { "start": { - "line": 247, + "line": 301, "column": 21 }, "end": { - "line": 247, + "line": 301, "column": 22 } } @@ -50870,15 +50870,15 @@ "updateContext": null }, "value": "return", - "start": 8951, - "end": 8957, + "start": 10939, + "end": 10945, "loc": { "start": { - "line": 248, + "line": 302, "column": 8 }, "end": { - "line": 248, + "line": 302, "column": 14 } } @@ -50898,15 +50898,15 @@ "updateContext": null }, "value": "this", - "start": 8958, - "end": 8962, + "start": 10946, + "end": 10950, "loc": { "start": { - "line": 248, + "line": 302, "column": 15 }, "end": { - "line": 248, + "line": 302, "column": 19 } } @@ -50924,15 +50924,15 @@ "binop": null, "updateContext": null }, - "start": 8962, - "end": 8963, + "start": 10950, + "end": 10951, "loc": { "start": { - "line": 248, + "line": 302, "column": 19 }, "end": { - "line": 248, + "line": 302, "column": 20 } } @@ -50950,15 +50950,15 @@ "binop": null }, "value": "_colorDepth", - "start": 8963, - "end": 8974, + "start": 10951, + "end": 10962, "loc": { "start": { - "line": 248, + "line": 302, "column": 20 }, "end": { - "line": 248, + "line": 302, "column": 31 } } @@ -50976,15 +50976,15 @@ "binop": null, "updateContext": null }, - "start": 8974, - "end": 8975, + "start": 10962, + "end": 10963, "loc": { "start": { - "line": 248, + "line": 302, "column": 31 }, "end": { - "line": 248, + "line": 302, "column": 32 } } @@ -51001,15 +51001,15 @@ "postfix": false, "binop": null }, - "start": 8980, - "end": 8981, + "start": 10968, + "end": 10969, "loc": { "start": { - "line": 249, + "line": 303, "column": 4 }, "end": { - "line": 249, + "line": 303, "column": 5 } } @@ -51017,15 +51017,15 @@ { "type": "CommentBlock", "value": "*\n * Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @param {Number|String} value Valid values are 8, 16 and \"auto\".\n ", - "start": 8987, - "end": 9274, + "start": 10975, + "end": 11262, "loc": { "start": { - "line": 251, + "line": 305, "column": 4 }, "end": { - "line": 259, + "line": 313, "column": 7 } } @@ -51043,15 +51043,15 @@ "binop": null }, "value": "set", - "start": 9279, - "end": 9282, + "start": 11267, + "end": 11270, "loc": { "start": { - "line": 260, + "line": 314, "column": 4 }, "end": { - "line": 260, + "line": 314, "column": 7 } } @@ -51069,15 +51069,15 @@ "binop": null }, "value": "colorDepth", - "start": 9283, - "end": 9293, + "start": 11271, + "end": 11281, "loc": { "start": { - "line": 260, + "line": 314, "column": 8 }, "end": { - "line": 260, + "line": 314, "column": 18 } } @@ -51094,15 +51094,15 @@ "postfix": false, "binop": null }, - "start": 9293, - "end": 9294, + "start": 11281, + "end": 11282, "loc": { "start": { - "line": 260, + "line": 314, "column": 18 }, "end": { - "line": 260, + "line": 314, "column": 19 } } @@ -51120,15 +51120,15 @@ "binop": null }, "value": "value", - "start": 9294, - "end": 9299, + "start": 11282, + "end": 11287, "loc": { "start": { - "line": 260, + "line": 314, "column": 19 }, "end": { - "line": 260, + "line": 314, "column": 24 } } @@ -51145,15 +51145,15 @@ "postfix": false, "binop": null }, - "start": 9299, - "end": 9300, + "start": 11287, + "end": 11288, "loc": { "start": { - "line": 260, + "line": 314, "column": 24 }, "end": { - "line": 260, + "line": 314, "column": 25 } } @@ -51170,15 +51170,15 @@ "postfix": false, "binop": null }, - "start": 9301, - "end": 9302, + "start": 11289, + "end": 11290, "loc": { "start": { - "line": 260, + "line": 314, "column": 26 }, "end": { - "line": 260, + "line": 314, "column": 27 } } @@ -51198,15 +51198,15 @@ "updateContext": null }, "value": "this", - "start": 9311, - "end": 9315, + "start": 11299, + "end": 11303, "loc": { "start": { - "line": 261, + "line": 315, "column": 8 }, "end": { - "line": 261, + "line": 315, "column": 12 } } @@ -51224,15 +51224,15 @@ "binop": null, "updateContext": null }, - "start": 9315, - "end": 9316, + "start": 11303, + "end": 11304, "loc": { "start": { - "line": 261, + "line": 315, "column": 12 }, "end": { - "line": 261, + "line": 315, "column": 13 } } @@ -51250,15 +51250,15 @@ "binop": null }, "value": "_colorDepth", - "start": 9316, - "end": 9327, + "start": 11304, + "end": 11315, "loc": { "start": { - "line": 261, + "line": 315, "column": 13 }, "end": { - "line": 261, + "line": 315, "column": 24 } } @@ -51277,15 +51277,15 @@ "updateContext": null }, "value": "=", - "start": 9328, - "end": 9329, + "start": 11316, + "end": 11317, "loc": { "start": { - "line": 261, + "line": 315, "column": 25 }, "end": { - "line": 261, + "line": 315, "column": 26 } } @@ -51303,15 +51303,15 @@ "binop": null }, "value": "value", - "start": 9330, - "end": 9335, + "start": 11318, + "end": 11323, "loc": { "start": { - "line": 261, + "line": 315, "column": 27 }, "end": { - "line": 261, + "line": 315, "column": 32 } } @@ -51330,15 +51330,15 @@ "updateContext": null }, "value": "||", - "start": 9336, - "end": 9338, + "start": 11324, + "end": 11326, "loc": { "start": { - "line": 261, + "line": 315, "column": 33 }, "end": { - "line": 261, + "line": 315, "column": 35 } } @@ -51357,15 +51357,15 @@ "updateContext": null }, "value": "auto", - "start": 9339, - "end": 9345, + "start": 11327, + "end": 11333, "loc": { "start": { - "line": 261, + "line": 315, "column": 36 }, "end": { - "line": 261, + "line": 315, "column": 42 } } @@ -51383,15 +51383,15 @@ "binop": null, "updateContext": null }, - "start": 9345, - "end": 9346, + "start": 11333, + "end": 11334, "loc": { "start": { - "line": 261, + "line": 315, "column": 42 }, "end": { - "line": 261, + "line": 315, "column": 43 } } @@ -51408,15 +51408,15 @@ "postfix": false, "binop": null }, - "start": 9351, - "end": 9352, + "start": 11339, + "end": 11340, "loc": { "start": { - "line": 262, + "line": 316, "column": 4 }, "end": { - "line": 262, + "line": 316, "column": 5 } } @@ -51424,15 +51424,15 @@ { "type": "CommentBlock", "value": "*\n * Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.\n * @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Object} [params.stats] Collects model statistics.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n ", - "start": 9358, - "end": 10972, + "start": 11346, + "end": 12960, "loc": { "start": { - "line": 264, + "line": 318, "column": 4 }, "end": { - "line": 279, + "line": 333, "column": 7 } } @@ -51450,15 +51450,15 @@ "binop": null }, "value": "load", - "start": 10977, - "end": 10981, + "start": 12965, + "end": 12969, "loc": { "start": { - "line": 280, + "line": 334, "column": 4 }, "end": { - "line": 280, + "line": 334, "column": 8 } } @@ -51475,15 +51475,15 @@ "postfix": false, "binop": null }, - "start": 10981, - "end": 10982, + "start": 12969, + "end": 12970, "loc": { "start": { - "line": 280, + "line": 334, "column": 8 }, "end": { - "line": 280, + "line": 334, "column": 9 } } @@ -51501,15 +51501,15 @@ "binop": null }, "value": "params", - "start": 10982, - "end": 10988, + "start": 12970, + "end": 12976, "loc": { "start": { - "line": 280, + "line": 334, "column": 9 }, "end": { - "line": 280, + "line": 334, "column": 15 } } @@ -51528,15 +51528,15 @@ "updateContext": null }, "value": "=", - "start": 10989, - "end": 10990, + "start": 12977, + "end": 12978, "loc": { "start": { - "line": 280, + "line": 334, "column": 16 }, "end": { - "line": 280, + "line": 334, "column": 17 } } @@ -51553,15 +51553,15 @@ "postfix": false, "binop": null }, - "start": 10991, - "end": 10992, + "start": 12979, + "end": 12980, "loc": { "start": { - "line": 280, + "line": 334, "column": 18 }, "end": { - "line": 280, + "line": 334, "column": 19 } } @@ -51578,15 +51578,15 @@ "postfix": false, "binop": null }, - "start": 10992, - "end": 10993, + "start": 12980, + "end": 12981, "loc": { "start": { - "line": 280, + "line": 334, "column": 19 }, "end": { - "line": 280, + "line": 334, "column": 20 } } @@ -51603,15 +51603,15 @@ "postfix": false, "binop": null }, - "start": 10993, - "end": 10994, + "start": 12981, + "end": 12982, "loc": { "start": { - "line": 280, + "line": 334, "column": 20 }, "end": { - "line": 280, + "line": 334, "column": 21 } } @@ -51628,15 +51628,15 @@ "postfix": false, "binop": null }, - "start": 10995, - "end": 10996, + "start": 12983, + "end": 12984, "loc": { "start": { - "line": 280, + "line": 334, "column": 22 }, "end": { - "line": 280, + "line": 334, "column": 23 } } @@ -51656,15 +51656,15 @@ "updateContext": null }, "value": "if", - "start": 11006, - "end": 11008, + "start": 12994, + "end": 12996, "loc": { "start": { - "line": 282, + "line": 336, "column": 8 }, "end": { - "line": 282, + "line": 336, "column": 10 } } @@ -51681,15 +51681,15 @@ "postfix": false, "binop": null }, - "start": 11009, - "end": 11010, + "start": 12997, + "end": 12998, "loc": { "start": { - "line": 282, + "line": 336, "column": 11 }, "end": { - "line": 282, + "line": 336, "column": 12 } } @@ -51707,15 +51707,15 @@ "binop": null }, "value": "params", - "start": 11010, - "end": 11016, + "start": 12998, + "end": 13004, "loc": { "start": { - "line": 282, + "line": 336, "column": 12 }, "end": { - "line": 282, + "line": 336, "column": 18 } } @@ -51733,15 +51733,15 @@ "binop": null, "updateContext": null }, - "start": 11016, - "end": 11017, + "start": 13004, + "end": 13005, "loc": { "start": { - "line": 282, + "line": 336, "column": 18 }, "end": { - "line": 282, + "line": 336, "column": 19 } } @@ -51759,15 +51759,15 @@ "binop": null }, "value": "id", - "start": 11017, - "end": 11019, + "start": 13005, + "end": 13007, "loc": { "start": { - "line": 282, + "line": 336, "column": 19 }, "end": { - "line": 282, + "line": 336, "column": 21 } } @@ -51786,15 +51786,15 @@ "updateContext": null }, "value": "&&", - "start": 11020, - "end": 11022, + "start": 13008, + "end": 13010, "loc": { "start": { - "line": 282, + "line": 336, "column": 22 }, "end": { - "line": 282, + "line": 336, "column": 24 } } @@ -51814,15 +51814,15 @@ "updateContext": null }, "value": "this", - "start": 11023, - "end": 11027, + "start": 13011, + "end": 13015, "loc": { "start": { - "line": 282, + "line": 336, "column": 25 }, "end": { - "line": 282, + "line": 336, "column": 29 } } @@ -51840,15 +51840,15 @@ "binop": null, "updateContext": null }, - "start": 11027, - "end": 11028, + "start": 13015, + "end": 13016, "loc": { "start": { - "line": 282, + "line": 336, "column": 29 }, "end": { - "line": 282, + "line": 336, "column": 30 } } @@ -51866,15 +51866,15 @@ "binop": null }, "value": "viewer", - "start": 11028, - "end": 11034, + "start": 13016, + "end": 13022, "loc": { "start": { - "line": 282, + "line": 336, "column": 30 }, "end": { - "line": 282, + "line": 336, "column": 36 } } @@ -51892,15 +51892,15 @@ "binop": null, "updateContext": null }, - "start": 11034, - "end": 11035, + "start": 13022, + "end": 13023, "loc": { "start": { - "line": 282, + "line": 336, "column": 36 }, "end": { - "line": 282, + "line": 336, "column": 37 } } @@ -51918,15 +51918,15 @@ "binop": null }, "value": "scene", - "start": 11035, - "end": 11040, + "start": 13023, + "end": 13028, "loc": { "start": { - "line": 282, + "line": 336, "column": 37 }, "end": { - "line": 282, + "line": 336, "column": 42 } } @@ -51944,15 +51944,15 @@ "binop": null, "updateContext": null }, - "start": 11040, - "end": 11041, + "start": 13028, + "end": 13029, "loc": { "start": { - "line": 282, + "line": 336, "column": 42 }, "end": { - "line": 282, + "line": 336, "column": 43 } } @@ -51970,15 +51970,15 @@ "binop": null }, "value": "components", - "start": 11041, - "end": 11051, + "start": 13029, + "end": 13039, "loc": { "start": { - "line": 282, + "line": 336, "column": 43 }, "end": { - "line": 282, + "line": 336, "column": 53 } } @@ -51996,15 +51996,15 @@ "binop": null, "updateContext": null }, - "start": 11051, - "end": 11052, + "start": 13039, + "end": 13040, "loc": { "start": { - "line": 282, + "line": 336, "column": 53 }, "end": { - "line": 282, + "line": 336, "column": 54 } } @@ -52022,15 +52022,15 @@ "binop": null }, "value": "params", - "start": 11052, - "end": 11058, + "start": 13040, + "end": 13046, "loc": { "start": { - "line": 282, + "line": 336, "column": 54 }, "end": { - "line": 282, + "line": 336, "column": 60 } } @@ -52048,15 +52048,15 @@ "binop": null, "updateContext": null }, - "start": 11058, - "end": 11059, + "start": 13046, + "end": 13047, "loc": { "start": { - "line": 282, + "line": 336, "column": 60 }, "end": { - "line": 282, + "line": 336, "column": 61 } } @@ -52074,15 +52074,15 @@ "binop": null }, "value": "id", - "start": 11059, - "end": 11061, + "start": 13047, + "end": 13049, "loc": { "start": { - "line": 282, + "line": 336, "column": 61 }, "end": { - "line": 282, + "line": 336, "column": 63 } } @@ -52100,15 +52100,15 @@ "binop": null, "updateContext": null }, - "start": 11061, - "end": 11062, + "start": 13049, + "end": 13050, "loc": { "start": { - "line": 282, + "line": 336, "column": 63 }, "end": { - "line": 282, + "line": 336, "column": 64 } } @@ -52125,15 +52125,15 @@ "postfix": false, "binop": null }, - "start": 11062, - "end": 11063, + "start": 13050, + "end": 13051, "loc": { "start": { - "line": 282, + "line": 336, "column": 64 }, "end": { - "line": 282, + "line": 336, "column": 65 } } @@ -52150,15 +52150,15 @@ "postfix": false, "binop": null }, - "start": 11064, - "end": 11065, + "start": 13052, + "end": 13053, "loc": { "start": { - "line": 282, + "line": 336, "column": 66 }, "end": { - "line": 282, + "line": 336, "column": 67 } } @@ -52178,15 +52178,15 @@ "updateContext": null }, "value": "this", - "start": 11078, - "end": 11082, + "start": 13066, + "end": 13070, "loc": { "start": { - "line": 283, + "line": 337, "column": 12 }, "end": { - "line": 283, + "line": 337, "column": 16 } } @@ -52204,15 +52204,15 @@ "binop": null, "updateContext": null }, - "start": 11082, - "end": 11083, + "start": 13070, + "end": 13071, "loc": { "start": { - "line": 283, + "line": 337, "column": 16 }, "end": { - "line": 283, + "line": 337, "column": 17 } } @@ -52230,15 +52230,15 @@ "binop": null }, "value": "error", - "start": 11083, - "end": 11088, + "start": 13071, + "end": 13076, "loc": { "start": { - "line": 283, + "line": 337, "column": 17 }, "end": { - "line": 283, + "line": 337, "column": 22 } } @@ -52255,15 +52255,15 @@ "postfix": false, "binop": null }, - "start": 11088, - "end": 11089, + "start": 13076, + "end": 13077, "loc": { "start": { - "line": 283, + "line": 337, "column": 22 }, "end": { - "line": 283, + "line": 337, "column": 23 } } @@ -52282,15 +52282,15 @@ "updateContext": null }, "value": "Component with this ID already exists in viewer: ", - "start": 11089, - "end": 11140, + "start": 13077, + "end": 13128, "loc": { "start": { - "line": 283, + "line": 337, "column": 23 }, "end": { - "line": 283, + "line": 337, "column": 74 } } @@ -52309,15 +52309,15 @@ "updateContext": null }, "value": "+", - "start": 11141, - "end": 11142, + "start": 13129, + "end": 13130, "loc": { "start": { - "line": 283, + "line": 337, "column": 75 }, "end": { - "line": 283, + "line": 337, "column": 76 } } @@ -52335,15 +52335,15 @@ "binop": null }, "value": "params", - "start": 11143, - "end": 11149, + "start": 13131, + "end": 13137, "loc": { "start": { - "line": 283, + "line": 337, "column": 77 }, "end": { - "line": 283, + "line": 337, "column": 83 } } @@ -52361,15 +52361,15 @@ "binop": null, "updateContext": null }, - "start": 11149, - "end": 11150, + "start": 13137, + "end": 13138, "loc": { "start": { - "line": 283, + "line": 337, "column": 83 }, "end": { - "line": 283, + "line": 337, "column": 84 } } @@ -52387,15 +52387,15 @@ "binop": null }, "value": "id", - "start": 11150, - "end": 11152, + "start": 13138, + "end": 13140, "loc": { "start": { - "line": 283, + "line": 337, "column": 84 }, "end": { - "line": 283, + "line": 337, "column": 86 } } @@ -52414,15 +52414,15 @@ "updateContext": null }, "value": "+", - "start": 11153, - "end": 11154, + "start": 13141, + "end": 13142, "loc": { "start": { - "line": 283, + "line": 337, "column": 87 }, "end": { - "line": 283, + "line": 337, "column": 88 } } @@ -52441,15 +52441,15 @@ "updateContext": null }, "value": " - will autogenerate this ID", - "start": 11155, - "end": 11185, + "start": 13143, + "end": 13173, "loc": { "start": { - "line": 283, + "line": 337, "column": 89 }, "end": { - "line": 283, + "line": 337, "column": 119 } } @@ -52466,15 +52466,15 @@ "postfix": false, "binop": null }, - "start": 11185, - "end": 11186, + "start": 13173, + "end": 13174, "loc": { "start": { - "line": 283, + "line": 337, "column": 119 }, "end": { - "line": 283, + "line": 337, "column": 120 } } @@ -52492,15 +52492,15 @@ "binop": null, "updateContext": null }, - "start": 11186, - "end": 11187, + "start": 13174, + "end": 13175, "loc": { "start": { - "line": 283, + "line": 337, "column": 120 }, "end": { - "line": 283, + "line": 337, "column": 121 } } @@ -52520,15 +52520,15 @@ "updateContext": null }, "value": "delete", - "start": 11200, - "end": 11206, + "start": 13188, + "end": 13194, "loc": { "start": { - "line": 284, + "line": 338, "column": 12 }, "end": { - "line": 284, + "line": 338, "column": 18 } } @@ -52546,15 +52546,15 @@ "binop": null }, "value": "params", - "start": 11207, - "end": 11213, + "start": 13195, + "end": 13201, "loc": { "start": { - "line": 284, + "line": 338, "column": 19 }, "end": { - "line": 284, + "line": 338, "column": 25 } } @@ -52572,15 +52572,15 @@ "binop": null, "updateContext": null }, - "start": 11213, - "end": 11214, + "start": 13201, + "end": 13202, "loc": { "start": { - "line": 284, + "line": 338, "column": 25 }, "end": { - "line": 284, + "line": 338, "column": 26 } } @@ -52598,15 +52598,15 @@ "binop": null }, "value": "id", - "start": 11214, - "end": 11216, + "start": 13202, + "end": 13204, "loc": { "start": { - "line": 284, + "line": 338, "column": 26 }, "end": { - "line": 284, + "line": 338, "column": 28 } } @@ -52624,15 +52624,15 @@ "binop": null, "updateContext": null }, - "start": 11216, - "end": 11217, + "start": 13204, + "end": 13205, "loc": { "start": { - "line": 284, + "line": 338, "column": 28 }, "end": { - "line": 284, + "line": 338, "column": 29 } } @@ -52649,15 +52649,15 @@ "postfix": false, "binop": null }, - "start": 11226, - "end": 11227, + "start": 13214, + "end": 13215, "loc": { "start": { - "line": 285, + "line": 339, "column": 8 }, "end": { - "line": 285, + "line": 339, "column": 9 } } @@ -52677,15 +52677,15 @@ "updateContext": null }, "value": "const", - "start": 11237, - "end": 11242, + "start": 13225, + "end": 13230, "loc": { "start": { - "line": 287, + "line": 341, "column": 8 }, "end": { - "line": 287, + "line": 341, "column": 13 } } @@ -52703,15 +52703,15 @@ "binop": null }, "value": "sceneModel", - "start": 11243, - "end": 11253, + "start": 13231, + "end": 13241, "loc": { "start": { - "line": 287, + "line": 341, "column": 14 }, "end": { - "line": 287, + "line": 341, "column": 24 } } @@ -52730,15 +52730,15 @@ "updateContext": null }, "value": "=", - "start": 11254, - "end": 11255, + "start": 13242, + "end": 13243, "loc": { "start": { - "line": 287, + "line": 341, "column": 25 }, "end": { - "line": 287, + "line": 341, "column": 26 } } @@ -52758,15 +52758,15 @@ "updateContext": null }, "value": "new", - "start": 11256, - "end": 11259, + "start": 13244, + "end": 13247, "loc": { "start": { - "line": 287, + "line": 341, "column": 27 }, "end": { - "line": 287, + "line": 341, "column": 30 } } @@ -52784,15 +52784,15 @@ "binop": null }, "value": "SceneModel", - "start": 11260, - "end": 11270, + "start": 13248, + "end": 13258, "loc": { "start": { - "line": 287, + "line": 341, "column": 31 }, "end": { - "line": 287, + "line": 341, "column": 41 } } @@ -52809,15 +52809,15 @@ "postfix": false, "binop": null }, - "start": 11270, - "end": 11271, + "start": 13258, + "end": 13259, "loc": { "start": { - "line": 287, + "line": 341, "column": 41 }, "end": { - "line": 287, + "line": 341, "column": 42 } } @@ -52837,15 +52837,15 @@ "updateContext": null }, "value": "this", - "start": 11271, - "end": 11275, + "start": 13259, + "end": 13263, "loc": { "start": { - "line": 287, + "line": 341, "column": 42 }, "end": { - "line": 287, + "line": 341, "column": 46 } } @@ -52863,15 +52863,15 @@ "binop": null, "updateContext": null }, - "start": 11275, - "end": 11276, + "start": 13263, + "end": 13264, "loc": { "start": { - "line": 287, + "line": 341, "column": 46 }, "end": { - "line": 287, + "line": 341, "column": 47 } } @@ -52889,15 +52889,15 @@ "binop": null }, "value": "viewer", - "start": 11276, - "end": 11282, + "start": 13264, + "end": 13270, "loc": { "start": { - "line": 287, + "line": 341, "column": 47 }, "end": { - "line": 287, + "line": 341, "column": 53 } } @@ -52915,15 +52915,15 @@ "binop": null, "updateContext": null }, - "start": 11282, - "end": 11283, + "start": 13270, + "end": 13271, "loc": { "start": { - "line": 287, + "line": 341, "column": 53 }, "end": { - "line": 287, + "line": 341, "column": 54 } } @@ -52941,15 +52941,15 @@ "binop": null }, "value": "scene", - "start": 11283, - "end": 11288, + "start": 13271, + "end": 13276, "loc": { "start": { - "line": 287, + "line": 341, "column": 54 }, "end": { - "line": 287, + "line": 341, "column": 59 } } @@ -52967,15 +52967,15 @@ "binop": null, "updateContext": null }, - "start": 11288, - "end": 11289, + "start": 13276, + "end": 13277, "loc": { "start": { - "line": 287, + "line": 341, "column": 59 }, "end": { - "line": 287, + "line": 341, "column": 60 } } @@ -52993,15 +52993,15 @@ "binop": null }, "value": "utils", - "start": 11290, - "end": 11295, + "start": 13278, + "end": 13283, "loc": { "start": { - "line": 287, + "line": 341, "column": 61 }, "end": { - "line": 287, + "line": 341, "column": 66 } } @@ -53019,15 +53019,15 @@ "binop": null, "updateContext": null }, - "start": 11295, - "end": 11296, + "start": 13283, + "end": 13284, "loc": { "start": { - "line": 287, + "line": 341, "column": 66 }, "end": { - "line": 287, + "line": 341, "column": 67 } } @@ -53045,15 +53045,15 @@ "binop": null }, "value": "apply", - "start": 11296, - "end": 11301, + "start": 13284, + "end": 13289, "loc": { "start": { - "line": 287, + "line": 341, "column": 67 }, "end": { - "line": 287, + "line": 341, "column": 72 } } @@ -53070,15 +53070,15 @@ "postfix": false, "binop": null }, - "start": 11301, - "end": 11302, + "start": 13289, + "end": 13290, "loc": { "start": { - "line": 287, + "line": 341, "column": 72 }, "end": { - "line": 287, + "line": 341, "column": 73 } } @@ -53096,15 +53096,15 @@ "binop": null }, "value": "params", - "start": 11302, - "end": 11308, + "start": 13290, + "end": 13296, "loc": { "start": { - "line": 287, + "line": 341, "column": 73 }, "end": { - "line": 287, + "line": 341, "column": 79 } } @@ -53122,15 +53122,15 @@ "binop": null, "updateContext": null }, - "start": 11308, - "end": 11309, + "start": 13296, + "end": 13297, "loc": { "start": { - "line": 287, + "line": 341, "column": 79 }, "end": { - "line": 287, + "line": 341, "column": 80 } } @@ -53147,15 +53147,15 @@ "postfix": false, "binop": null }, - "start": 11310, - "end": 11311, + "start": 13298, + "end": 13299, "loc": { "start": { - "line": 287, + "line": 341, "column": 81 }, "end": { - "line": 287, + "line": 341, "column": 82 } } @@ -53173,15 +53173,15 @@ "binop": null }, "value": "isModel", - "start": 11324, - "end": 11331, + "start": 13312, + "end": 13319, "loc": { "start": { - "line": 288, + "line": 342, "column": 12 }, "end": { - "line": 288, + "line": 342, "column": 19 } } @@ -53199,15 +53199,15 @@ "binop": null, "updateContext": null }, - "start": 11331, - "end": 11332, + "start": 13319, + "end": 13320, "loc": { "start": { - "line": 288, + "line": 342, "column": 19 }, "end": { - "line": 288, + "line": 342, "column": 20 } } @@ -53227,15 +53227,15 @@ "updateContext": null }, "value": "true", - "start": 11333, - "end": 11337, + "start": 13321, + "end": 13325, "loc": { "start": { - "line": 288, + "line": 342, "column": 21 }, "end": { - "line": 288, + "line": 342, "column": 25 } } @@ -53252,15 +53252,15 @@ "postfix": false, "binop": null }, - "start": 11346, - "end": 11347, + "start": 13334, + "end": 13335, "loc": { "start": { - "line": 289, + "line": 343, "column": 8 }, "end": { - "line": 289, + "line": 343, "column": 9 } } @@ -53277,15 +53277,15 @@ "postfix": false, "binop": null }, - "start": 11347, - "end": 11348, + "start": 13335, + "end": 13336, "loc": { "start": { - "line": 289, + "line": 343, "column": 9 }, "end": { - "line": 289, + "line": 343, "column": 10 } } @@ -53302,15 +53302,15 @@ "postfix": false, "binop": null }, - "start": 11348, - "end": 11349, + "start": 13336, + "end": 13337, "loc": { "start": { - "line": 289, + "line": 343, "column": 10 }, "end": { - "line": 289, + "line": 343, "column": 11 } } @@ -53328,15 +53328,15 @@ "binop": null, "updateContext": null }, - "start": 11349, - "end": 11350, + "start": 13337, + "end": 13338, "loc": { "start": { - "line": 289, + "line": 343, "column": 11 }, "end": { - "line": 289, + "line": 343, "column": 12 } } @@ -53356,15 +53356,15 @@ "updateContext": null }, "value": "if", - "start": 11360, - "end": 11362, + "start": 13348, + "end": 13350, "loc": { "start": { - "line": 291, + "line": 345, "column": 8 }, "end": { - "line": 291, + "line": 345, "column": 10 } } @@ -53381,15 +53381,15 @@ "postfix": false, "binop": null }, - "start": 11363, - "end": 11364, + "start": 13351, + "end": 13352, "loc": { "start": { - "line": 291, + "line": 345, "column": 11 }, "end": { - "line": 291, + "line": 345, "column": 12 } } @@ -53408,15 +53408,15 @@ "updateContext": null }, "value": "!", - "start": 11364, - "end": 11365, + "start": 13352, + "end": 13353, "loc": { "start": { - "line": 291, + "line": 345, "column": 12 }, "end": { - "line": 291, + "line": 345, "column": 13 } } @@ -53434,15 +53434,15 @@ "binop": null }, "value": "params", - "start": 11365, - "end": 11371, + "start": 13353, + "end": 13359, "loc": { "start": { - "line": 291, + "line": 345, "column": 13 }, "end": { - "line": 291, + "line": 345, "column": 19 } } @@ -53460,15 +53460,15 @@ "binop": null, "updateContext": null }, - "start": 11371, - "end": 11372, + "start": 13359, + "end": 13360, "loc": { "start": { - "line": 291, + "line": 345, "column": 19 }, "end": { - "line": 291, + "line": 345, "column": 20 } } @@ -53486,15 +53486,15 @@ "binop": null }, "value": "src", - "start": 11372, - "end": 11375, + "start": 13360, + "end": 13363, "loc": { "start": { - "line": 291, + "line": 345, "column": 20 }, "end": { - "line": 291, + "line": 345, "column": 23 } } @@ -53513,15 +53513,15 @@ "updateContext": null }, "value": "&&", - "start": 11376, - "end": 11378, + "start": 13364, + "end": 13366, "loc": { "start": { - "line": 291, + "line": 345, "column": 24 }, "end": { - "line": 291, + "line": 345, "column": 26 } } @@ -53540,15 +53540,15 @@ "updateContext": null }, "value": "!", - "start": 11379, - "end": 11380, + "start": 13367, + "end": 13368, "loc": { "start": { - "line": 291, + "line": 345, "column": 27 }, "end": { - "line": 291, + "line": 345, "column": 28 } } @@ -53566,15 +53566,15 @@ "binop": null }, "value": "params", - "start": 11380, - "end": 11386, + "start": 13368, + "end": 13374, "loc": { "start": { - "line": 291, + "line": 345, "column": 28 }, "end": { - "line": 291, + "line": 345, "column": 34 } } @@ -53592,15 +53592,15 @@ "binop": null, "updateContext": null }, - "start": 11386, - "end": 11387, + "start": 13374, + "end": 13375, "loc": { "start": { - "line": 291, + "line": 345, "column": 34 }, "end": { - "line": 291, + "line": 345, "column": 35 } } @@ -53618,15 +53618,15 @@ "binop": null }, "value": "las", - "start": 11387, - "end": 11390, + "start": 13375, + "end": 13378, "loc": { "start": { - "line": 291, + "line": 345, "column": 35 }, "end": { - "line": 291, + "line": 345, "column": 38 } } @@ -53643,15 +53643,15 @@ "postfix": false, "binop": null }, - "start": 11390, - "end": 11391, + "start": 13378, + "end": 13379, "loc": { "start": { - "line": 291, + "line": 345, "column": 38 }, "end": { - "line": 291, + "line": 345, "column": 39 } } @@ -53668,15 +53668,15 @@ "postfix": false, "binop": null }, - "start": 11392, - "end": 11393, + "start": 13380, + "end": 13381, "loc": { "start": { - "line": 291, + "line": 345, "column": 40 }, "end": { - "line": 291, + "line": 345, "column": 41 } } @@ -53696,15 +53696,15 @@ "updateContext": null }, "value": "this", - "start": 11406, - "end": 11410, + "start": 13394, + "end": 13398, "loc": { "start": { - "line": 292, + "line": 346, "column": 12 }, "end": { - "line": 292, + "line": 346, "column": 16 } } @@ -53722,15 +53722,15 @@ "binop": null, "updateContext": null }, - "start": 11410, - "end": 11411, + "start": 13398, + "end": 13399, "loc": { "start": { - "line": 292, + "line": 346, "column": 16 }, "end": { - "line": 292, + "line": 346, "column": 17 } } @@ -53748,15 +53748,15 @@ "binop": null }, "value": "error", - "start": 11411, - "end": 11416, + "start": 13399, + "end": 13404, "loc": { "start": { - "line": 292, + "line": 346, "column": 17 }, "end": { - "line": 292, + "line": 346, "column": 22 } } @@ -53773,15 +53773,15 @@ "postfix": false, "binop": null }, - "start": 11416, - "end": 11417, + "start": 13404, + "end": 13405, "loc": { "start": { - "line": 292, + "line": 346, "column": 22 }, "end": { - "line": 292, + "line": 346, "column": 23 } } @@ -53800,15 +53800,15 @@ "updateContext": null }, "value": "load() param expected: src or las", - "start": 11417, - "end": 11452, + "start": 13405, + "end": 13440, "loc": { "start": { - "line": 292, + "line": 346, "column": 23 }, "end": { - "line": 292, + "line": 346, "column": 58 } } @@ -53825,15 +53825,15 @@ "postfix": false, "binop": null }, - "start": 11452, - "end": 11453, + "start": 13440, + "end": 13441, "loc": { "start": { - "line": 292, + "line": 346, "column": 58 }, "end": { - "line": 292, + "line": 346, "column": 59 } } @@ -53851,15 +53851,15 @@ "binop": null, "updateContext": null }, - "start": 11453, - "end": 11454, + "start": 13441, + "end": 13442, "loc": { "start": { - "line": 292, + "line": 346, "column": 59 }, "end": { - "line": 292, + "line": 346, "column": 60 } } @@ -53879,15 +53879,15 @@ "updateContext": null }, "value": "return", - "start": 11467, - "end": 11473, + "start": 13455, + "end": 13461, "loc": { "start": { - "line": 293, + "line": 347, "column": 12 }, "end": { - "line": 293, + "line": 347, "column": 18 } } @@ -53905,15 +53905,15 @@ "binop": null }, "value": "sceneModel", - "start": 11474, - "end": 11484, + "start": 13462, + "end": 13472, "loc": { "start": { - "line": 293, + "line": 347, "column": 19 }, "end": { - "line": 293, + "line": 347, "column": 29 } } @@ -53931,15 +53931,15 @@ "binop": null, "updateContext": null }, - "start": 11484, - "end": 11485, + "start": 13472, + "end": 13473, "loc": { "start": { - "line": 293, + "line": 347, "column": 29 }, "end": { - "line": 293, + "line": 347, "column": 30 } } @@ -53947,15 +53947,15 @@ { "type": "CommentLine", "value": " Return new empty model", - "start": 11486, - "end": 11511, + "start": 13474, + "end": 13499, "loc": { "start": { - "line": 293, + "line": 347, "column": 31 }, "end": { - "line": 293, + "line": 347, "column": 56 } } @@ -53972,15 +53972,15 @@ "postfix": false, "binop": null }, - "start": 11520, - "end": 11521, + "start": 13508, + "end": 13509, "loc": { "start": { - "line": 294, + "line": 348, "column": 8 }, "end": { - "line": 294, + "line": 348, "column": 9 } } @@ -54000,15 +54000,15 @@ "updateContext": null }, "value": "const", - "start": 11531, - "end": 11536, + "start": 13519, + "end": 13524, "loc": { "start": { - "line": 296, + "line": 350, "column": 8 }, "end": { - "line": 296, + "line": 350, "column": 13 } } @@ -54026,15 +54026,15 @@ "binop": null }, "value": "options", - "start": 11537, - "end": 11544, + "start": 13525, + "end": 13532, "loc": { "start": { - "line": 296, + "line": 350, "column": 14 }, "end": { - "line": 296, + "line": 350, "column": 21 } } @@ -54053,15 +54053,15 @@ "updateContext": null }, "value": "=", - "start": 11545, - "end": 11546, + "start": 13533, + "end": 13534, "loc": { "start": { - "line": 296, + "line": 350, "column": 22 }, "end": { - "line": 296, + "line": 350, "column": 23 } } @@ -54078,15 +54078,15 @@ "postfix": false, "binop": null }, - "start": 11547, - "end": 11548, + "start": 13535, + "end": 13536, "loc": { "start": { - "line": 296, + "line": 350, "column": 24 }, "end": { - "line": 296, + "line": 350, "column": 25 } } @@ -54104,15 +54104,15 @@ "binop": null }, "value": "las", - "start": 11561, - "end": 11564, + "start": 13549, + "end": 13552, "loc": { "start": { - "line": 297, + "line": 351, "column": 12 }, "end": { - "line": 297, + "line": 351, "column": 15 } } @@ -54130,15 +54130,15 @@ "binop": null, "updateContext": null }, - "start": 11564, - "end": 11565, + "start": 13552, + "end": 13553, "loc": { "start": { - "line": 297, + "line": 351, "column": 15 }, "end": { - "line": 297, + "line": 351, "column": 16 } } @@ -54155,15 +54155,15 @@ "postfix": false, "binop": null }, - "start": 11566, - "end": 11567, + "start": 13554, + "end": 13555, "loc": { "start": { - "line": 297, + "line": 351, "column": 17 }, "end": { - "line": 297, + "line": 351, "column": 18 } } @@ -54181,15 +54181,15 @@ "binop": null }, "value": "skip", - "start": 11584, - "end": 11588, + "start": 13572, + "end": 13576, "loc": { "start": { - "line": 298, + "line": 352, "column": 16 }, "end": { - "line": 298, + "line": 352, "column": 20 } } @@ -54207,15 +54207,15 @@ "binop": null, "updateContext": null }, - "start": 11588, - "end": 11589, + "start": 13576, + "end": 13577, "loc": { "start": { - "line": 298, + "line": 352, "column": 20 }, "end": { - "line": 298, + "line": 352, "column": 21 } } @@ -54235,15 +54235,15 @@ "updateContext": null }, "value": "this", - "start": 11590, - "end": 11594, + "start": 13578, + "end": 13582, "loc": { "start": { - "line": 298, + "line": 352, "column": 22 }, "end": { - "line": 298, + "line": 352, "column": 26 } } @@ -54261,15 +54261,15 @@ "binop": null, "updateContext": null }, - "start": 11594, - "end": 11595, + "start": 13582, + "end": 13583, "loc": { "start": { - "line": 298, + "line": 352, "column": 26 }, "end": { - "line": 298, + "line": 352, "column": 27 } } @@ -54287,15 +54287,15 @@ "binop": null }, "value": "_skip", - "start": 11595, - "end": 11600, + "start": 13583, + "end": 13588, "loc": { "start": { - "line": 298, + "line": 352, "column": 27 }, "end": { - "line": 298, + "line": 352, "column": 32 } } @@ -54313,15 +54313,15 @@ "binop": null, "updateContext": null }, - "start": 11600, - "end": 11601, + "start": 13588, + "end": 13589, "loc": { "start": { - "line": 298, + "line": 352, "column": 32 }, "end": { - "line": 298, + "line": 352, "column": 33 } } @@ -54339,15 +54339,15 @@ "binop": null }, "value": "fp64", - "start": 11618, - "end": 11622, + "start": 13606, + "end": 13610, "loc": { "start": { - "line": 299, + "line": 353, "column": 16 }, "end": { - "line": 299, + "line": 353, "column": 20 } } @@ -54365,15 +54365,15 @@ "binop": null, "updateContext": null }, - "start": 11622, - "end": 11623, + "start": 13610, + "end": 13611, "loc": { "start": { - "line": 299, + "line": 353, "column": 20 }, "end": { - "line": 299, + "line": 353, "column": 21 } } @@ -54393,15 +54393,15 @@ "updateContext": null }, "value": "this", - "start": 11624, - "end": 11628, + "start": 13612, + "end": 13616, "loc": { "start": { - "line": 299, + "line": 353, "column": 22 }, "end": { - "line": 299, + "line": 353, "column": 26 } } @@ -54419,15 +54419,15 @@ "binop": null, "updateContext": null }, - "start": 11628, - "end": 11629, + "start": 13616, + "end": 13617, "loc": { "start": { - "line": 299, + "line": 353, "column": 26 }, "end": { - "line": 299, + "line": 353, "column": 27 } } @@ -54445,15 +54445,15 @@ "binop": null }, "value": "_fp64", - "start": 11629, - "end": 11634, + "start": 13617, + "end": 13622, "loc": { "start": { - "line": 299, + "line": 353, "column": 27 }, "end": { - "line": 299, + "line": 353, "column": 32 } } @@ -54471,15 +54471,15 @@ "binop": null, "updateContext": null }, - "start": 11634, - "end": 11635, + "start": 13622, + "end": 13623, "loc": { "start": { - "line": 299, + "line": 353, "column": 32 }, "end": { - "line": 299, + "line": 353, "column": 33 } } @@ -54497,15 +54497,15 @@ "binop": null }, "value": "colorDepth", - "start": 11652, - "end": 11662, + "start": 13640, + "end": 13650, "loc": { "start": { - "line": 300, + "line": 354, "column": 16 }, "end": { - "line": 300, + "line": 354, "column": 26 } } @@ -54523,15 +54523,15 @@ "binop": null, "updateContext": null }, - "start": 11662, - "end": 11663, + "start": 13650, + "end": 13651, "loc": { "start": { - "line": 300, + "line": 354, "column": 26 }, "end": { - "line": 300, + "line": 354, "column": 27 } } @@ -54551,15 +54551,15 @@ "updateContext": null }, "value": "this", - "start": 11664, - "end": 11668, + "start": 13652, + "end": 13656, "loc": { "start": { - "line": 300, + "line": 354, "column": 28 }, "end": { - "line": 300, + "line": 354, "column": 32 } } @@ -54577,15 +54577,15 @@ "binop": null, "updateContext": null }, - "start": 11668, - "end": 11669, + "start": 13656, + "end": 13657, "loc": { "start": { - "line": 300, + "line": 354, "column": 32 }, "end": { - "line": 300, + "line": 354, "column": 33 } } @@ -54603,15 +54603,15 @@ "binop": null }, "value": "_colorDepth", - "start": 11669, - "end": 11680, + "start": 13657, + "end": 13668, "loc": { "start": { - "line": 300, + "line": 354, "column": 33 }, "end": { - "line": 300, + "line": 354, "column": 44 } } @@ -54628,15 +54628,15 @@ "postfix": false, "binop": null }, - "start": 11693, - "end": 11694, + "start": 13681, + "end": 13682, "loc": { "start": { - "line": 301, + "line": 355, "column": 12 }, "end": { - "line": 301, + "line": 355, "column": 13 } } @@ -54653,15 +54653,15 @@ "postfix": false, "binop": null }, - "start": 11703, - "end": 11704, + "start": 13691, + "end": 13692, "loc": { "start": { - "line": 302, + "line": 356, "column": 8 }, "end": { - "line": 302, + "line": 356, "column": 9 } } @@ -54679,15 +54679,15 @@ "binop": null, "updateContext": null }, - "start": 11704, - "end": 11705, + "start": 13692, + "end": 13693, "loc": { "start": { - "line": 302, + "line": 356, "column": 9 }, "end": { - "line": 302, + "line": 356, "column": 10 } } @@ -54707,15 +54707,15 @@ "updateContext": null }, "value": "if", - "start": 11715, - "end": 11717, + "start": 13703, + "end": 13705, "loc": { "start": { - "line": 304, + "line": 358, "column": 8 }, "end": { - "line": 304, + "line": 358, "column": 10 } } @@ -54732,15 +54732,15 @@ "postfix": false, "binop": null }, - "start": 11718, - "end": 11719, + "start": 13706, + "end": 13707, "loc": { "start": { - "line": 304, + "line": 358, "column": 11 }, "end": { - "line": 304, + "line": 358, "column": 12 } } @@ -54758,15 +54758,15 @@ "binop": null }, "value": "params", - "start": 11719, - "end": 11725, + "start": 13707, + "end": 13713, "loc": { "start": { - "line": 304, + "line": 358, "column": 12 }, "end": { - "line": 304, + "line": 358, "column": 18 } } @@ -54784,15 +54784,15 @@ "binop": null, "updateContext": null }, - "start": 11725, - "end": 11726, + "start": 13713, + "end": 13714, "loc": { "start": { - "line": 304, + "line": 358, "column": 18 }, "end": { - "line": 304, + "line": 358, "column": 19 } } @@ -54810,15 +54810,15 @@ "binop": null }, "value": "src", - "start": 11726, - "end": 11729, + "start": 13714, + "end": 13717, "loc": { "start": { - "line": 304, + "line": 358, "column": 19 }, "end": { - "line": 304, + "line": 358, "column": 22 } } @@ -54835,15 +54835,15 @@ "postfix": false, "binop": null }, - "start": 11729, - "end": 11730, + "start": 13717, + "end": 13718, "loc": { "start": { - "line": 304, + "line": 358, "column": 22 }, "end": { - "line": 304, + "line": 358, "column": 23 } } @@ -54860,15 +54860,15 @@ "postfix": false, "binop": null }, - "start": 11731, - "end": 11732, + "start": 13719, + "end": 13720, "loc": { "start": { - "line": 304, + "line": 358, "column": 24 }, "end": { - "line": 304, + "line": 358, "column": 25 } } @@ -54888,15 +54888,15 @@ "updateContext": null }, "value": "this", - "start": 11745, - "end": 11749, + "start": 13733, + "end": 13737, "loc": { "start": { - "line": 305, + "line": 359, "column": 12 }, "end": { - "line": 305, + "line": 359, "column": 16 } } @@ -54914,15 +54914,15 @@ "binop": null, "updateContext": null }, - "start": 11749, - "end": 11750, + "start": 13737, + "end": 13738, "loc": { "start": { - "line": 305, + "line": 359, "column": 16 }, "end": { - "line": 305, + "line": 359, "column": 17 } } @@ -54940,15 +54940,15 @@ "binop": null }, "value": "_loadModel", - "start": 11750, - "end": 11760, + "start": 13738, + "end": 13748, "loc": { "start": { - "line": 305, + "line": 359, "column": 17 }, "end": { - "line": 305, + "line": 359, "column": 27 } } @@ -54965,15 +54965,15 @@ "postfix": false, "binop": null }, - "start": 11760, - "end": 11761, + "start": 13748, + "end": 13749, "loc": { "start": { - "line": 305, + "line": 359, "column": 27 }, "end": { - "line": 305, + "line": 359, "column": 28 } } @@ -54991,15 +54991,15 @@ "binop": null }, "value": "params", - "start": 11761, - "end": 11767, + "start": 13749, + "end": 13755, "loc": { "start": { - "line": 305, + "line": 359, "column": 28 }, "end": { - "line": 305, + "line": 359, "column": 34 } } @@ -55017,15 +55017,15 @@ "binop": null, "updateContext": null }, - "start": 11767, - "end": 11768, + "start": 13755, + "end": 13756, "loc": { "start": { - "line": 305, + "line": 359, "column": 34 }, "end": { - "line": 305, + "line": 359, "column": 35 } } @@ -55043,15 +55043,15 @@ "binop": null }, "value": "src", - "start": 11768, - "end": 11771, + "start": 13756, + "end": 13759, "loc": { "start": { - "line": 305, + "line": 359, "column": 35 }, "end": { - "line": 305, + "line": 359, "column": 38 } } @@ -55069,15 +55069,15 @@ "binop": null, "updateContext": null }, - "start": 11771, - "end": 11772, + "start": 13759, + "end": 13760, "loc": { "start": { - "line": 305, + "line": 359, "column": 38 }, "end": { - "line": 305, + "line": 359, "column": 39 } } @@ -55095,15 +55095,15 @@ "binop": null }, "value": "params", - "start": 11773, - "end": 11779, + "start": 13761, + "end": 13767, "loc": { "start": { - "line": 305, + "line": 359, "column": 40 }, "end": { - "line": 305, + "line": 359, "column": 46 } } @@ -55121,15 +55121,15 @@ "binop": null, "updateContext": null }, - "start": 11779, - "end": 11780, + "start": 13767, + "end": 13768, "loc": { "start": { - "line": 305, + "line": 359, "column": 46 }, "end": { - "line": 305, + "line": 359, "column": 47 } } @@ -55147,15 +55147,15 @@ "binop": null }, "value": "options", - "start": 11781, - "end": 11788, + "start": 13769, + "end": 13776, "loc": { "start": { - "line": 305, + "line": 359, "column": 48 }, "end": { - "line": 305, + "line": 359, "column": 55 } } @@ -55173,15 +55173,15 @@ "binop": null, "updateContext": null }, - "start": 11788, - "end": 11789, + "start": 13776, + "end": 13777, "loc": { "start": { - "line": 305, + "line": 359, "column": 55 }, "end": { - "line": 305, + "line": 359, "column": 56 } } @@ -55199,15 +55199,15 @@ "binop": null }, "value": "sceneModel", - "start": 11790, - "end": 11800, + "start": 13778, + "end": 13788, "loc": { "start": { - "line": 305, + "line": 359, "column": 57 }, "end": { - "line": 305, + "line": 359, "column": 67 } } @@ -55224,15 +55224,15 @@ "postfix": false, "binop": null }, - "start": 11800, - "end": 11801, + "start": 13788, + "end": 13789, "loc": { "start": { - "line": 305, + "line": 359, "column": 67 }, "end": { - "line": 305, + "line": 359, "column": 68 } } @@ -55250,15 +55250,15 @@ "binop": null, "updateContext": null }, - "start": 11801, - "end": 11802, + "start": 13789, + "end": 13790, "loc": { "start": { - "line": 305, + "line": 359, "column": 68 }, "end": { - "line": 305, + "line": 359, "column": 69 } } @@ -55275,15 +55275,15 @@ "postfix": false, "binop": null }, - "start": 11811, - "end": 11812, + "start": 13799, + "end": 13800, "loc": { "start": { - "line": 306, + "line": 360, "column": 8 }, "end": { - "line": 306, + "line": 360, "column": 9 } } @@ -55303,15 +55303,15 @@ "updateContext": null }, "value": "else", - "start": 11813, - "end": 11817, + "start": 13801, + "end": 13805, "loc": { "start": { - "line": 306, + "line": 360, "column": 10 }, "end": { - "line": 306, + "line": 360, "column": 14 } } @@ -55328,15 +55328,15 @@ "postfix": false, "binop": null }, - "start": 11818, - "end": 11819, + "start": 13806, + "end": 13807, "loc": { "start": { - "line": 306, + "line": 360, "column": 15 }, "end": { - "line": 306, + "line": 360, "column": 16 } } @@ -55356,15 +55356,15 @@ "updateContext": null }, "value": "const", - "start": 11832, - "end": 11837, + "start": 13820, + "end": 13825, "loc": { "start": { - "line": 307, + "line": 361, "column": 12 }, "end": { - "line": 307, + "line": 361, "column": 17 } } @@ -55382,15 +55382,15 @@ "binop": null }, "value": "spinner", - "start": 11838, - "end": 11845, + "start": 13826, + "end": 13833, "loc": { "start": { - "line": 307, + "line": 361, "column": 18 }, "end": { - "line": 307, + "line": 361, "column": 25 } } @@ -55409,15 +55409,15 @@ "updateContext": null }, "value": "=", - "start": 11846, - "end": 11847, + "start": 13834, + "end": 13835, "loc": { "start": { - "line": 307, + "line": 361, "column": 26 }, "end": { - "line": 307, + "line": 361, "column": 27 } } @@ -55437,15 +55437,15 @@ "updateContext": null }, "value": "this", - "start": 11848, - "end": 11852, + "start": 13836, + "end": 13840, "loc": { "start": { - "line": 307, + "line": 361, "column": 28 }, "end": { - "line": 307, + "line": 361, "column": 32 } } @@ -55463,15 +55463,15 @@ "binop": null, "updateContext": null }, - "start": 11852, - "end": 11853, + "start": 13840, + "end": 13841, "loc": { "start": { - "line": 307, + "line": 361, "column": 32 }, "end": { - "line": 307, + "line": 361, "column": 33 } } @@ -55489,15 +55489,15 @@ "binop": null }, "value": "viewer", - "start": 11853, - "end": 11859, + "start": 13841, + "end": 13847, "loc": { "start": { - "line": 307, + "line": 361, "column": 33 }, "end": { - "line": 307, + "line": 361, "column": 39 } } @@ -55515,15 +55515,15 @@ "binop": null, "updateContext": null }, - "start": 11859, - "end": 11860, + "start": 13847, + "end": 13848, "loc": { "start": { - "line": 307, + "line": 361, "column": 39 }, "end": { - "line": 307, + "line": 361, "column": 40 } } @@ -55541,15 +55541,15 @@ "binop": null }, "value": "scene", - "start": 11860, - "end": 11865, + "start": 13848, + "end": 13853, "loc": { "start": { - "line": 307, + "line": 361, "column": 40 }, "end": { - "line": 307, + "line": 361, "column": 45 } } @@ -55567,15 +55567,15 @@ "binop": null, "updateContext": null }, - "start": 11865, - "end": 11866, + "start": 13853, + "end": 13854, "loc": { "start": { - "line": 307, + "line": 361, "column": 45 }, "end": { - "line": 307, + "line": 361, "column": 46 } } @@ -55593,15 +55593,15 @@ "binop": null }, "value": "canvas", - "start": 11866, - "end": 11872, + "start": 13854, + "end": 13860, "loc": { "start": { - "line": 307, + "line": 361, "column": 46 }, "end": { - "line": 307, + "line": 361, "column": 52 } } @@ -55619,15 +55619,15 @@ "binop": null, "updateContext": null }, - "start": 11872, - "end": 11873, + "start": 13860, + "end": 13861, "loc": { "start": { - "line": 307, + "line": 361, "column": 52 }, "end": { - "line": 307, + "line": 361, "column": 53 } } @@ -55645,15 +55645,15 @@ "binop": null }, "value": "spinner", - "start": 11873, - "end": 11880, + "start": 13861, + "end": 13868, "loc": { "start": { - "line": 307, + "line": 361, "column": 53 }, "end": { - "line": 307, + "line": 361, "column": 60 } } @@ -55671,15 +55671,15 @@ "binop": null, "updateContext": null }, - "start": 11880, - "end": 11881, + "start": 13868, + "end": 13869, "loc": { "start": { - "line": 307, + "line": 361, "column": 60 }, "end": { - "line": 307, + "line": 361, "column": 61 } } @@ -55697,15 +55697,15 @@ "binop": null }, "value": "spinner", - "start": 11894, - "end": 11901, + "start": 13882, + "end": 13889, "loc": { "start": { - "line": 308, + "line": 362, "column": 12 }, "end": { - "line": 308, + "line": 362, "column": 19 } } @@ -55723,15 +55723,15 @@ "binop": null, "updateContext": null }, - "start": 11901, - "end": 11902, + "start": 13889, + "end": 13890, "loc": { "start": { - "line": 308, + "line": 362, "column": 19 }, "end": { - "line": 308, + "line": 362, "column": 20 } } @@ -55749,15 +55749,15 @@ "binop": null }, "value": "processes", - "start": 11902, - "end": 11911, + "start": 13890, + "end": 13899, "loc": { "start": { - "line": 308, + "line": 362, "column": 20 }, "end": { - "line": 308, + "line": 362, "column": 29 } } @@ -55775,15 +55775,15 @@ "binop": null }, "value": "++", - "start": 11911, - "end": 11913, + "start": 13899, + "end": 13901, "loc": { "start": { - "line": 308, + "line": 362, "column": 29 }, "end": { - "line": 308, + "line": 362, "column": 31 } } @@ -55801,15 +55801,15 @@ "binop": null, "updateContext": null }, - "start": 11913, - "end": 11914, + "start": 13901, + "end": 13902, "loc": { "start": { - "line": 308, + "line": 362, "column": 31 }, "end": { - "line": 308, + "line": 362, "column": 32 } } @@ -55829,15 +55829,15 @@ "updateContext": null }, "value": "this", - "start": 11927, - "end": 11931, + "start": 13915, + "end": 13919, "loc": { "start": { - "line": 309, + "line": 363, "column": 12 }, "end": { - "line": 309, + "line": 363, "column": 16 } } @@ -55855,15 +55855,15 @@ "binop": null, "updateContext": null }, - "start": 11931, - "end": 11932, + "start": 13919, + "end": 13920, "loc": { "start": { - "line": 309, + "line": 363, "column": 16 }, "end": { - "line": 309, + "line": 363, "column": 17 } } @@ -55881,15 +55881,15 @@ "binop": null }, "value": "_parseModel", - "start": 11932, - "end": 11943, + "start": 13920, + "end": 13931, "loc": { "start": { - "line": 309, + "line": 363, "column": 17 }, "end": { - "line": 309, + "line": 363, "column": 28 } } @@ -55906,15 +55906,15 @@ "postfix": false, "binop": null }, - "start": 11943, - "end": 11944, + "start": 13931, + "end": 13932, "loc": { "start": { - "line": 309, + "line": 363, "column": 28 }, "end": { - "line": 309, + "line": 363, "column": 29 } } @@ -55932,15 +55932,15 @@ "binop": null }, "value": "params", - "start": 11944, - "end": 11950, + "start": 13932, + "end": 13938, "loc": { "start": { - "line": 309, + "line": 363, "column": 29 }, "end": { - "line": 309, + "line": 363, "column": 35 } } @@ -55958,15 +55958,15 @@ "binop": null, "updateContext": null }, - "start": 11950, - "end": 11951, + "start": 13938, + "end": 13939, "loc": { "start": { - "line": 309, + "line": 363, "column": 35 }, "end": { - "line": 309, + "line": 363, "column": 36 } } @@ -55984,15 +55984,15 @@ "binop": null }, "value": "las", - "start": 11951, - "end": 11954, + "start": 13939, + "end": 13942, "loc": { "start": { - "line": 309, + "line": 363, "column": 36 }, "end": { - "line": 309, + "line": 363, "column": 39 } } @@ -56010,15 +56010,15 @@ "binop": null, "updateContext": null }, - "start": 11954, - "end": 11955, + "start": 13942, + "end": 13943, "loc": { "start": { - "line": 309, + "line": 363, "column": 39 }, "end": { - "line": 309, + "line": 363, "column": 40 } } @@ -56036,15 +56036,15 @@ "binop": null }, "value": "params", - "start": 11956, - "end": 11962, + "start": 13944, + "end": 13950, "loc": { "start": { - "line": 309, + "line": 363, "column": 41 }, "end": { - "line": 309, + "line": 363, "column": 47 } } @@ -56062,15 +56062,15 @@ "binop": null, "updateContext": null }, - "start": 11962, - "end": 11963, + "start": 13950, + "end": 13951, "loc": { "start": { - "line": 309, + "line": 363, "column": 47 }, "end": { - "line": 309, + "line": 363, "column": 48 } } @@ -56088,15 +56088,15 @@ "binop": null }, "value": "options", - "start": 11964, - "end": 11971, + "start": 13952, + "end": 13959, "loc": { "start": { - "line": 309, + "line": 363, "column": 49 }, "end": { - "line": 309, + "line": 363, "column": 56 } } @@ -56114,15 +56114,15 @@ "binop": null, "updateContext": null }, - "start": 11971, - "end": 11972, + "start": 13959, + "end": 13960, "loc": { "start": { - "line": 309, + "line": 363, "column": 56 }, "end": { - "line": 309, + "line": 363, "column": 57 } } @@ -56140,15 +56140,15 @@ "binop": null }, "value": "sceneModel", - "start": 11973, - "end": 11983, + "start": 13961, + "end": 13971, "loc": { "start": { - "line": 309, + "line": 363, "column": 58 }, "end": { - "line": 309, + "line": 363, "column": 68 } } @@ -56165,15 +56165,15 @@ "postfix": false, "binop": null }, - "start": 11983, - "end": 11984, + "start": 13971, + "end": 13972, "loc": { "start": { - "line": 309, + "line": 363, "column": 68 }, "end": { - "line": 309, + "line": 363, "column": 69 } } @@ -56191,15 +56191,15 @@ "binop": null, "updateContext": null }, - "start": 11984, - "end": 11985, + "start": 13972, + "end": 13973, "loc": { "start": { - "line": 309, + "line": 363, "column": 69 }, "end": { - "line": 309, + "line": 363, "column": 70 } } @@ -56217,15 +56217,15 @@ "binop": null }, "value": "then", - "start": 11985, - "end": 11989, + "start": 13973, + "end": 13977, "loc": { "start": { - "line": 309, + "line": 363, "column": 70 }, "end": { - "line": 309, + "line": 363, "column": 74 } } @@ -56242,15 +56242,15 @@ "postfix": false, "binop": null }, - "start": 11989, - "end": 11990, + "start": 13977, + "end": 13978, "loc": { "start": { - "line": 309, + "line": 363, "column": 74 }, "end": { - "line": 309, + "line": 363, "column": 75 } } @@ -56267,15 +56267,15 @@ "postfix": false, "binop": null }, - "start": 11990, - "end": 11991, + "start": 13978, + "end": 13979, "loc": { "start": { - "line": 309, + "line": 363, "column": 75 }, "end": { - "line": 309, + "line": 363, "column": 76 } } @@ -56292,15 +56292,15 @@ "postfix": false, "binop": null }, - "start": 11991, - "end": 11992, + "start": 13979, + "end": 13980, "loc": { "start": { - "line": 309, + "line": 363, "column": 76 }, "end": { - "line": 309, + "line": 363, "column": 77 } } @@ -56318,15 +56318,15 @@ "binop": null, "updateContext": null }, - "start": 11993, - "end": 11995, + "start": 13981, + "end": 13983, "loc": { "start": { - "line": 309, + "line": 363, "column": 78 }, "end": { - "line": 309, + "line": 363, "column": 80 } } @@ -56343,15 +56343,15 @@ "postfix": false, "binop": null }, - "start": 11996, - "end": 11997, + "start": 13984, + "end": 13985, "loc": { "start": { - "line": 309, + "line": 363, "column": 81 }, "end": { - "line": 309, + "line": 363, "column": 82 } } @@ -56369,15 +56369,15 @@ "binop": null }, "value": "spinner", - "start": 12014, - "end": 12021, + "start": 14002, + "end": 14009, "loc": { "start": { - "line": 310, + "line": 364, "column": 16 }, "end": { - "line": 310, + "line": 364, "column": 23 } } @@ -56395,15 +56395,15 @@ "binop": null, "updateContext": null }, - "start": 12021, - "end": 12022, + "start": 14009, + "end": 14010, "loc": { "start": { - "line": 310, + "line": 364, "column": 23 }, "end": { - "line": 310, + "line": 364, "column": 24 } } @@ -56421,15 +56421,15 @@ "binop": null }, "value": "processes", - "start": 12022, - "end": 12031, + "start": 14010, + "end": 14019, "loc": { "start": { - "line": 310, + "line": 364, "column": 24 }, "end": { - "line": 310, + "line": 364, "column": 33 } } @@ -56447,15 +56447,15 @@ "binop": null }, "value": "--", - "start": 12031, - "end": 12033, + "start": 14019, + "end": 14021, "loc": { "start": { - "line": 310, + "line": 364, "column": 33 }, "end": { - "line": 310, + "line": 364, "column": 35 } } @@ -56473,15 +56473,15 @@ "binop": null, "updateContext": null }, - "start": 12033, - "end": 12034, + "start": 14021, + "end": 14022, "loc": { "start": { - "line": 310, + "line": 364, "column": 35 }, "end": { - "line": 310, + "line": 364, "column": 36 } } @@ -56498,15 +56498,15 @@ "postfix": false, "binop": null }, - "start": 12047, - "end": 12048, + "start": 14035, + "end": 14036, "loc": { "start": { - "line": 311, + "line": 365, "column": 12 }, "end": { - "line": 311, + "line": 365, "column": 13 } } @@ -56524,15 +56524,15 @@ "binop": null, "updateContext": null }, - "start": 12048, - "end": 12049, + "start": 14036, + "end": 14037, "loc": { "start": { - "line": 311, + "line": 365, "column": 13 }, "end": { - "line": 311, + "line": 365, "column": 14 } } @@ -56549,15 +56549,15 @@ "postfix": false, "binop": null }, - "start": 12050, - "end": 12051, + "start": 14038, + "end": 14039, "loc": { "start": { - "line": 311, + "line": 365, "column": 15 }, "end": { - "line": 311, + "line": 365, "column": 16 } } @@ -56575,15 +56575,15 @@ "binop": null }, "value": "errMsg", - "start": 12051, - "end": 12057, + "start": 14039, + "end": 14045, "loc": { "start": { - "line": 311, + "line": 365, "column": 16 }, "end": { - "line": 311, + "line": 365, "column": 22 } } @@ -56600,15 +56600,15 @@ "postfix": false, "binop": null }, - "start": 12057, - "end": 12058, + "start": 14045, + "end": 14046, "loc": { "start": { - "line": 311, + "line": 365, "column": 22 }, "end": { - "line": 311, + "line": 365, "column": 23 } } @@ -56626,15 +56626,15 @@ "binop": null, "updateContext": null }, - "start": 12059, - "end": 12061, + "start": 14047, + "end": 14049, "loc": { "start": { - "line": 311, + "line": 365, "column": 24 }, "end": { - "line": 311, + "line": 365, "column": 26 } } @@ -56651,15 +56651,15 @@ "postfix": false, "binop": null }, - "start": 12062, - "end": 12063, + "start": 14050, + "end": 14051, "loc": { "start": { - "line": 311, + "line": 365, "column": 27 }, "end": { - "line": 311, + "line": 365, "column": 28 } } @@ -56677,15 +56677,15 @@ "binop": null }, "value": "spinner", - "start": 12080, - "end": 12087, + "start": 14068, + "end": 14075, "loc": { "start": { - "line": 312, + "line": 366, "column": 16 }, "end": { - "line": 312, + "line": 366, "column": 23 } } @@ -56703,15 +56703,15 @@ "binop": null, "updateContext": null }, - "start": 12087, - "end": 12088, + "start": 14075, + "end": 14076, "loc": { "start": { - "line": 312, + "line": 366, "column": 23 }, "end": { - "line": 312, + "line": 366, "column": 24 } } @@ -56729,15 +56729,15 @@ "binop": null }, "value": "processes", - "start": 12088, - "end": 12097, + "start": 14076, + "end": 14085, "loc": { "start": { - "line": 312, + "line": 366, "column": 24 }, "end": { - "line": 312, + "line": 366, "column": 33 } } @@ -56755,15 +56755,15 @@ "binop": null }, "value": "--", - "start": 12097, - "end": 12099, + "start": 14085, + "end": 14087, "loc": { "start": { - "line": 312, + "line": 366, "column": 33 }, "end": { - "line": 312, + "line": 366, "column": 35 } } @@ -56781,15 +56781,15 @@ "binop": null, "updateContext": null }, - "start": 12099, - "end": 12100, + "start": 14087, + "end": 14088, "loc": { "start": { - "line": 312, + "line": 366, "column": 35 }, "end": { - "line": 312, + "line": 366, "column": 36 } } @@ -56809,15 +56809,15 @@ "updateContext": null }, "value": "this", - "start": 12117, - "end": 12121, + "start": 14105, + "end": 14109, "loc": { "start": { - "line": 313, + "line": 367, "column": 16 }, "end": { - "line": 313, + "line": 367, "column": 20 } } @@ -56835,15 +56835,15 @@ "binop": null, "updateContext": null }, - "start": 12121, - "end": 12122, + "start": 14109, + "end": 14110, "loc": { "start": { - "line": 313, + "line": 367, "column": 20 }, "end": { - "line": 313, + "line": 367, "column": 21 } } @@ -56861,15 +56861,15 @@ "binop": null }, "value": "error", - "start": 12122, - "end": 12127, + "start": 14110, + "end": 14115, "loc": { "start": { - "line": 313, + "line": 367, "column": 21 }, "end": { - "line": 313, + "line": 367, "column": 26 } } @@ -56886,15 +56886,15 @@ "postfix": false, "binop": null }, - "start": 12127, - "end": 12128, + "start": 14115, + "end": 14116, "loc": { "start": { - "line": 313, + "line": 367, "column": 26 }, "end": { - "line": 313, + "line": 367, "column": 27 } } @@ -56912,15 +56912,15 @@ "binop": null }, "value": "errMsg", - "start": 12128, - "end": 12134, + "start": 14116, + "end": 14122, "loc": { "start": { - "line": 313, + "line": 367, "column": 27 }, "end": { - "line": 313, + "line": 367, "column": 33 } } @@ -56937,15 +56937,15 @@ "postfix": false, "binop": null }, - "start": 12134, - "end": 12135, + "start": 14122, + "end": 14123, "loc": { "start": { - "line": 313, + "line": 367, "column": 33 }, "end": { - "line": 313, + "line": 367, "column": 34 } } @@ -56963,15 +56963,15 @@ "binop": null, "updateContext": null }, - "start": 12135, - "end": 12136, + "start": 14123, + "end": 14124, "loc": { "start": { - "line": 313, + "line": 367, "column": 34 }, "end": { - "line": 313, + "line": 367, "column": 35 } } @@ -56989,15 +56989,15 @@ "binop": null }, "value": "sceneModel", - "start": 12153, - "end": 12163, + "start": 14141, + "end": 14151, "loc": { "start": { - "line": 314, + "line": 368, "column": 16 }, "end": { - "line": 314, + "line": 368, "column": 26 } } @@ -57015,15 +57015,15 @@ "binop": null, "updateContext": null }, - "start": 12163, - "end": 12164, + "start": 14151, + "end": 14152, "loc": { "start": { - "line": 314, + "line": 368, "column": 26 }, "end": { - "line": 314, + "line": 368, "column": 27 } } @@ -57041,15 +57041,15 @@ "binop": null }, "value": "fire", - "start": 12164, - "end": 12168, + "start": 14152, + "end": 14156, "loc": { "start": { - "line": 314, + "line": 368, "column": 27 }, "end": { - "line": 314, + "line": 368, "column": 31 } } @@ -57066,15 +57066,15 @@ "postfix": false, "binop": null }, - "start": 12168, - "end": 12169, + "start": 14156, + "end": 14157, "loc": { "start": { - "line": 314, + "line": 368, "column": 31 }, "end": { - "line": 314, + "line": 368, "column": 32 } } @@ -57093,15 +57093,15 @@ "updateContext": null }, "value": "error", - "start": 12169, - "end": 12176, + "start": 14157, + "end": 14164, "loc": { "start": { - "line": 314, + "line": 368, "column": 32 }, "end": { - "line": 314, + "line": 368, "column": 39 } } @@ -57119,15 +57119,15 @@ "binop": null, "updateContext": null }, - "start": 12176, - "end": 12177, + "start": 14164, + "end": 14165, "loc": { "start": { - "line": 314, + "line": 368, "column": 39 }, "end": { - "line": 314, + "line": 368, "column": 40 } } @@ -57145,15 +57145,15 @@ "binop": null }, "value": "errMsg", - "start": 12178, - "end": 12184, + "start": 14166, + "end": 14172, "loc": { "start": { - "line": 314, + "line": 368, "column": 41 }, "end": { - "line": 314, + "line": 368, "column": 47 } } @@ -57170,15 +57170,15 @@ "postfix": false, "binop": null }, - "start": 12184, - "end": 12185, + "start": 14172, + "end": 14173, "loc": { "start": { - "line": 314, + "line": 368, "column": 47 }, "end": { - "line": 314, + "line": 368, "column": 48 } } @@ -57196,15 +57196,15 @@ "binop": null, "updateContext": null }, - "start": 12185, - "end": 12186, + "start": 14173, + "end": 14174, "loc": { "start": { - "line": 314, + "line": 368, "column": 48 }, "end": { - "line": 314, + "line": 368, "column": 49 } } @@ -57221,15 +57221,15 @@ "postfix": false, "binop": null }, - "start": 12199, - "end": 12200, + "start": 14187, + "end": 14188, "loc": { "start": { - "line": 315, + "line": 369, "column": 12 }, "end": { - "line": 315, + "line": 369, "column": 13 } } @@ -57246,15 +57246,15 @@ "postfix": false, "binop": null }, - "start": 12200, - "end": 12201, + "start": 14188, + "end": 14189, "loc": { "start": { - "line": 315, + "line": 369, "column": 13 }, "end": { - "line": 315, + "line": 369, "column": 14 } } @@ -57272,15 +57272,15 @@ "binop": null, "updateContext": null }, - "start": 12201, - "end": 12202, + "start": 14189, + "end": 14190, "loc": { "start": { - "line": 315, + "line": 369, "column": 14 }, "end": { - "line": 315, + "line": 369, "column": 15 } } @@ -57297,15 +57297,15 @@ "postfix": false, "binop": null }, - "start": 12211, - "end": 12212, + "start": 14199, + "end": 14200, "loc": { "start": { - "line": 316, + "line": 370, "column": 8 }, "end": { - "line": 316, + "line": 370, "column": 9 } } @@ -57325,15 +57325,15 @@ "updateContext": null }, "value": "return", - "start": 12222, - "end": 12228, + "start": 14210, + "end": 14216, "loc": { "start": { - "line": 318, + "line": 372, "column": 8 }, "end": { - "line": 318, + "line": 372, "column": 14 } } @@ -57351,15 +57351,15 @@ "binop": null }, "value": "sceneModel", - "start": 12229, - "end": 12239, + "start": 14217, + "end": 14227, "loc": { "start": { - "line": 318, + "line": 372, "column": 15 }, "end": { - "line": 318, + "line": 372, "column": 25 } } @@ -57377,15 +57377,15 @@ "binop": null, "updateContext": null }, - "start": 12239, - "end": 12240, + "start": 14227, + "end": 14228, "loc": { "start": { - "line": 318, + "line": 372, "column": 25 }, "end": { - "line": 318, + "line": 372, "column": 26 } } @@ -57402,15 +57402,15 @@ "postfix": false, "binop": null }, - "start": 12245, - "end": 12246, + "start": 14233, + "end": 14234, "loc": { "start": { - "line": 319, + "line": 373, "column": 4 }, "end": { - "line": 319, + "line": 373, "column": 5 } } @@ -57428,15 +57428,15 @@ "binop": null }, "value": "_loadModel", - "start": 12252, - "end": 12262, + "start": 14240, + "end": 14250, "loc": { "start": { - "line": 321, + "line": 375, "column": 4 }, "end": { - "line": 321, + "line": 375, "column": 14 } } @@ -57453,15 +57453,15 @@ "postfix": false, "binop": null }, - "start": 12262, - "end": 12263, + "start": 14250, + "end": 14251, "loc": { "start": { - "line": 321, + "line": 375, "column": 14 }, "end": { - "line": 321, + "line": 375, "column": 15 } } @@ -57479,15 +57479,15 @@ "binop": null }, "value": "src", - "start": 12263, - "end": 12266, + "start": 14251, + "end": 14254, "loc": { "start": { - "line": 321, + "line": 375, "column": 15 }, "end": { - "line": 321, + "line": 375, "column": 18 } } @@ -57505,15 +57505,15 @@ "binop": null, "updateContext": null }, - "start": 12266, - "end": 12267, + "start": 14254, + "end": 14255, "loc": { "start": { - "line": 321, + "line": 375, "column": 18 }, "end": { - "line": 321, + "line": 375, "column": 19 } } @@ -57531,15 +57531,15 @@ "binop": null }, "value": "params", - "start": 12268, - "end": 12274, + "start": 14256, + "end": 14262, "loc": { "start": { - "line": 321, + "line": 375, "column": 20 }, "end": { - "line": 321, + "line": 375, "column": 26 } } @@ -57557,15 +57557,15 @@ "binop": null, "updateContext": null }, - "start": 12274, - "end": 12275, + "start": 14262, + "end": 14263, "loc": { "start": { - "line": 321, + "line": 375, "column": 26 }, "end": { - "line": 321, + "line": 375, "column": 27 } } @@ -57583,15 +57583,15 @@ "binop": null }, "value": "options", - "start": 12276, - "end": 12283, + "start": 14264, + "end": 14271, "loc": { "start": { - "line": 321, + "line": 375, "column": 28 }, "end": { - "line": 321, + "line": 375, "column": 35 } } @@ -57609,15 +57609,15 @@ "binop": null, "updateContext": null }, - "start": 12283, - "end": 12284, + "start": 14271, + "end": 14272, "loc": { "start": { - "line": 321, + "line": 375, "column": 35 }, "end": { - "line": 321, + "line": 375, "column": 36 } } @@ -57635,15 +57635,15 @@ "binop": null }, "value": "sceneModel", - "start": 12285, - "end": 12295, + "start": 14273, + "end": 14283, "loc": { "start": { - "line": 321, + "line": 375, "column": 37 }, "end": { - "line": 321, + "line": 375, "column": 47 } } @@ -57660,15 +57660,15 @@ "postfix": false, "binop": null }, - "start": 12295, - "end": 12296, + "start": 14283, + "end": 14284, "loc": { "start": { - "line": 321, + "line": 375, "column": 47 }, "end": { - "line": 321, + "line": 375, "column": 48 } } @@ -57685,15 +57685,15 @@ "postfix": false, "binop": null }, - "start": 12297, - "end": 12298, + "start": 14285, + "end": 14286, "loc": { "start": { - "line": 321, + "line": 375, "column": 49 }, "end": { - "line": 321, + "line": 375, "column": 50 } } @@ -57713,15 +57713,15 @@ "updateContext": null }, "value": "const", - "start": 12307, - "end": 12312, + "start": 14295, + "end": 14300, "loc": { "start": { - "line": 322, + "line": 376, "column": 8 }, "end": { - "line": 322, + "line": 376, "column": 13 } } @@ -57739,15 +57739,15 @@ "binop": null }, "value": "spinner", - "start": 12313, - "end": 12320, + "start": 14301, + "end": 14308, "loc": { "start": { - "line": 322, + "line": 376, "column": 14 }, "end": { - "line": 322, + "line": 376, "column": 21 } } @@ -57766,15 +57766,15 @@ "updateContext": null }, "value": "=", - "start": 12321, - "end": 12322, + "start": 14309, + "end": 14310, "loc": { "start": { - "line": 322, + "line": 376, "column": 22 }, "end": { - "line": 322, + "line": 376, "column": 23 } } @@ -57794,15 +57794,15 @@ "updateContext": null }, "value": "this", - "start": 12323, - "end": 12327, + "start": 14311, + "end": 14315, "loc": { "start": { - "line": 322, + "line": 376, "column": 24 }, "end": { - "line": 322, + "line": 376, "column": 28 } } @@ -57820,15 +57820,15 @@ "binop": null, "updateContext": null }, - "start": 12327, - "end": 12328, + "start": 14315, + "end": 14316, "loc": { "start": { - "line": 322, + "line": 376, "column": 28 }, "end": { - "line": 322, + "line": 376, "column": 29 } } @@ -57846,15 +57846,15 @@ "binop": null }, "value": "viewer", - "start": 12328, - "end": 12334, + "start": 14316, + "end": 14322, "loc": { "start": { - "line": 322, + "line": 376, "column": 29 }, "end": { - "line": 322, + "line": 376, "column": 35 } } @@ -57872,15 +57872,15 @@ "binop": null, "updateContext": null }, - "start": 12334, - "end": 12335, + "start": 14322, + "end": 14323, "loc": { "start": { - "line": 322, + "line": 376, "column": 35 }, "end": { - "line": 322, + "line": 376, "column": 36 } } @@ -57898,15 +57898,15 @@ "binop": null }, "value": "scene", - "start": 12335, - "end": 12340, + "start": 14323, + "end": 14328, "loc": { "start": { - "line": 322, + "line": 376, "column": 36 }, "end": { - "line": 322, + "line": 376, "column": 41 } } @@ -57924,15 +57924,15 @@ "binop": null, "updateContext": null }, - "start": 12340, - "end": 12341, + "start": 14328, + "end": 14329, "loc": { "start": { - "line": 322, + "line": 376, "column": 41 }, "end": { - "line": 322, + "line": 376, "column": 42 } } @@ -57950,15 +57950,15 @@ "binop": null }, "value": "canvas", - "start": 12341, - "end": 12347, + "start": 14329, + "end": 14335, "loc": { "start": { - "line": 322, + "line": 376, "column": 42 }, "end": { - "line": 322, + "line": 376, "column": 48 } } @@ -57976,15 +57976,15 @@ "binop": null, "updateContext": null }, - "start": 12347, - "end": 12348, + "start": 14335, + "end": 14336, "loc": { "start": { - "line": 322, + "line": 376, "column": 48 }, "end": { - "line": 322, + "line": 376, "column": 49 } } @@ -58002,15 +58002,15 @@ "binop": null }, "value": "spinner", - "start": 12348, - "end": 12355, + "start": 14336, + "end": 14343, "loc": { "start": { - "line": 322, + "line": 376, "column": 49 }, "end": { - "line": 322, + "line": 376, "column": 56 } } @@ -58028,15 +58028,15 @@ "binop": null, "updateContext": null }, - "start": 12355, - "end": 12356, + "start": 14343, + "end": 14344, "loc": { "start": { - "line": 322, + "line": 376, "column": 56 }, "end": { - "line": 322, + "line": 376, "column": 57 } } @@ -58054,15 +58054,15 @@ "binop": null }, "value": "spinner", - "start": 12365, - "end": 12372, + "start": 14353, + "end": 14360, "loc": { "start": { - "line": 323, + "line": 377, "column": 8 }, "end": { - "line": 323, + "line": 377, "column": 15 } } @@ -58080,15 +58080,15 @@ "binop": null, "updateContext": null }, - "start": 12372, - "end": 12373, + "start": 14360, + "end": 14361, "loc": { "start": { - "line": 323, + "line": 377, "column": 15 }, "end": { - "line": 323, + "line": 377, "column": 16 } } @@ -58106,15 +58106,15 @@ "binop": null }, "value": "processes", - "start": 12373, - "end": 12382, + "start": 14361, + "end": 14370, "loc": { "start": { - "line": 323, + "line": 377, "column": 16 }, "end": { - "line": 323, + "line": 377, "column": 25 } } @@ -58132,15 +58132,15 @@ "binop": null }, "value": "++", - "start": 12382, - "end": 12384, + "start": 14370, + "end": 14372, "loc": { "start": { - "line": 323, + "line": 377, "column": 25 }, "end": { - "line": 323, + "line": 377, "column": 27 } } @@ -58158,15 +58158,15 @@ "binop": null, "updateContext": null }, - "start": 12384, - "end": 12385, + "start": 14372, + "end": 14373, "loc": { "start": { - "line": 323, + "line": 377, "column": 27 }, "end": { - "line": 323, + "line": 377, "column": 28 } } @@ -58186,15 +58186,15 @@ "updateContext": null }, "value": "this", - "start": 12394, - "end": 12398, + "start": 14382, + "end": 14386, "loc": { "start": { - "line": 324, + "line": 378, "column": 8 }, "end": { - "line": 324, + "line": 378, "column": 12 } } @@ -58212,15 +58212,15 @@ "binop": null, "updateContext": null }, - "start": 12398, - "end": 12399, + "start": 14386, + "end": 14387, "loc": { "start": { - "line": 324, + "line": 378, "column": 12 }, "end": { - "line": 324, + "line": 378, "column": 13 } } @@ -58238,15 +58238,15 @@ "binop": null }, "value": "_dataSource", - "start": 12399, - "end": 12410, + "start": 14387, + "end": 14398, "loc": { "start": { - "line": 324, + "line": 378, "column": 13 }, "end": { - "line": 324, + "line": 378, "column": 24 } } @@ -58264,15 +58264,15 @@ "binop": null, "updateContext": null }, - "start": 12410, - "end": 12411, + "start": 14398, + "end": 14399, "loc": { "start": { - "line": 324, + "line": 378, "column": 24 }, "end": { - "line": 324, + "line": 378, "column": 25 } } @@ -58290,15 +58290,15 @@ "binop": null }, "value": "getLAS", - "start": 12411, - "end": 12417, + "start": 14399, + "end": 14405, "loc": { "start": { - "line": 324, + "line": 378, "column": 25 }, "end": { - "line": 324, + "line": 378, "column": 31 } } @@ -58315,15 +58315,15 @@ "postfix": false, "binop": null }, - "start": 12417, - "end": 12418, + "start": 14405, + "end": 14406, "loc": { "start": { - "line": 324, + "line": 378, "column": 31 }, "end": { - "line": 324, + "line": 378, "column": 32 } } @@ -58341,15 +58341,15 @@ "binop": null }, "value": "params", - "start": 12418, - "end": 12424, + "start": 14406, + "end": 14412, "loc": { "start": { - "line": 324, + "line": 378, "column": 32 }, "end": { - "line": 324, + "line": 378, "column": 38 } } @@ -58367,15 +58367,15 @@ "binop": null, "updateContext": null }, - "start": 12424, - "end": 12425, + "start": 14412, + "end": 14413, "loc": { "start": { - "line": 324, + "line": 378, "column": 38 }, "end": { - "line": 324, + "line": 378, "column": 39 } } @@ -58393,15 +58393,15 @@ "binop": null }, "value": "src", - "start": 12425, - "end": 12428, + "start": 14413, + "end": 14416, "loc": { "start": { - "line": 324, + "line": 378, "column": 39 }, "end": { - "line": 324, + "line": 378, "column": 42 } } @@ -58419,15 +58419,15 @@ "binop": null, "updateContext": null }, - "start": 12428, - "end": 12429, + "start": 14416, + "end": 14417, "loc": { "start": { - "line": 324, + "line": 378, "column": 42 }, "end": { - "line": 324, + "line": 378, "column": 43 } } @@ -58444,15 +58444,15 @@ "postfix": false, "binop": null }, - "start": 12430, - "end": 12431, + "start": 14418, + "end": 14419, "loc": { "start": { - "line": 324, + "line": 378, "column": 44 }, "end": { - "line": 324, + "line": 378, "column": 45 } } @@ -58470,15 +58470,15 @@ "binop": null }, "value": "arrayBuffer", - "start": 12431, - "end": 12442, + "start": 14419, + "end": 14430, "loc": { "start": { - "line": 324, + "line": 378, "column": 45 }, "end": { - "line": 324, + "line": 378, "column": 56 } } @@ -58495,15 +58495,15 @@ "postfix": false, "binop": null }, - "start": 12442, - "end": 12443, + "start": 14430, + "end": 14431, "loc": { "start": { - "line": 324, + "line": 378, "column": 56 }, "end": { - "line": 324, + "line": 378, "column": 57 } } @@ -58521,15 +58521,15 @@ "binop": null, "updateContext": null }, - "start": 12444, - "end": 12446, + "start": 14432, + "end": 14434, "loc": { "start": { - "line": 324, + "line": 378, "column": 58 }, "end": { - "line": 324, + "line": 378, "column": 60 } } @@ -58546,15 +58546,15 @@ "postfix": false, "binop": null }, - "start": 12447, - "end": 12448, + "start": 14435, + "end": 14436, "loc": { "start": { - "line": 324, + "line": 378, "column": 61 }, "end": { - "line": 324, + "line": 378, "column": 62 } } @@ -58574,15 +58574,15 @@ "updateContext": null }, "value": "this", - "start": 12465, - "end": 12469, + "start": 14453, + "end": 14457, "loc": { "start": { - "line": 325, + "line": 379, "column": 16 }, "end": { - "line": 325, + "line": 379, "column": 20 } } @@ -58600,15 +58600,15 @@ "binop": null, "updateContext": null }, - "start": 12469, - "end": 12470, + "start": 14457, + "end": 14458, "loc": { "start": { - "line": 325, + "line": 379, "column": 20 }, "end": { - "line": 325, + "line": 379, "column": 21 } } @@ -58626,15 +58626,15 @@ "binop": null }, "value": "_parseModel", - "start": 12470, - "end": 12481, + "start": 14458, + "end": 14469, "loc": { "start": { - "line": 325, + "line": 379, "column": 21 }, "end": { - "line": 325, + "line": 379, "column": 32 } } @@ -58651,15 +58651,15 @@ "postfix": false, "binop": null }, - "start": 12481, - "end": 12482, + "start": 14469, + "end": 14470, "loc": { "start": { - "line": 325, + "line": 379, "column": 32 }, "end": { - "line": 325, + "line": 379, "column": 33 } } @@ -58677,15 +58677,15 @@ "binop": null }, "value": "arrayBuffer", - "start": 12482, - "end": 12493, + "start": 14470, + "end": 14481, "loc": { "start": { - "line": 325, + "line": 379, "column": 33 }, "end": { - "line": 325, + "line": 379, "column": 44 } } @@ -58703,15 +58703,15 @@ "binop": null, "updateContext": null }, - "start": 12493, - "end": 12494, + "start": 14481, + "end": 14482, "loc": { "start": { - "line": 325, + "line": 379, "column": 44 }, "end": { - "line": 325, + "line": 379, "column": 45 } } @@ -58729,15 +58729,15 @@ "binop": null }, "value": "params", - "start": 12495, - "end": 12501, + "start": 14483, + "end": 14489, "loc": { "start": { - "line": 325, + "line": 379, "column": 46 }, "end": { - "line": 325, + "line": 379, "column": 52 } } @@ -58755,15 +58755,15 @@ "binop": null, "updateContext": null }, - "start": 12501, - "end": 12502, + "start": 14489, + "end": 14490, "loc": { "start": { - "line": 325, + "line": 379, "column": 52 }, "end": { - "line": 325, + "line": 379, "column": 53 } } @@ -58781,15 +58781,15 @@ "binop": null }, "value": "options", - "start": 12503, - "end": 12510, + "start": 14491, + "end": 14498, "loc": { "start": { - "line": 325, + "line": 379, "column": 54 }, "end": { - "line": 325, + "line": 379, "column": 61 } } @@ -58807,15 +58807,15 @@ "binop": null, "updateContext": null }, - "start": 12510, - "end": 12511, + "start": 14498, + "end": 14499, "loc": { "start": { - "line": 325, + "line": 379, "column": 61 }, "end": { - "line": 325, + "line": 379, "column": 62 } } @@ -58833,15 +58833,15 @@ "binop": null }, "value": "sceneModel", - "start": 12512, - "end": 12522, + "start": 14500, + "end": 14510, "loc": { "start": { - "line": 325, + "line": 379, "column": 63 }, "end": { - "line": 325, + "line": 379, "column": 73 } } @@ -58858,15 +58858,15 @@ "postfix": false, "binop": null }, - "start": 12522, - "end": 12523, + "start": 14510, + "end": 14511, "loc": { "start": { - "line": 325, + "line": 379, "column": 73 }, "end": { - "line": 325, + "line": 379, "column": 74 } } @@ -58884,15 +58884,15 @@ "binop": null, "updateContext": null }, - "start": 12523, - "end": 12524, + "start": 14511, + "end": 14512, "loc": { "start": { - "line": 325, + "line": 379, "column": 74 }, "end": { - "line": 325, + "line": 379, "column": 75 } } @@ -58910,15 +58910,15 @@ "binop": null }, "value": "then", - "start": 12524, - "end": 12528, + "start": 14512, + "end": 14516, "loc": { "start": { - "line": 325, + "line": 379, "column": 75 }, "end": { - "line": 325, + "line": 379, "column": 79 } } @@ -58935,15 +58935,15 @@ "postfix": false, "binop": null }, - "start": 12528, - "end": 12529, + "start": 14516, + "end": 14517, "loc": { "start": { - "line": 325, + "line": 379, "column": 79 }, "end": { - "line": 325, + "line": 379, "column": 80 } } @@ -58960,15 +58960,15 @@ "postfix": false, "binop": null }, - "start": 12529, - "end": 12530, + "start": 14517, + "end": 14518, "loc": { "start": { - "line": 325, + "line": 379, "column": 80 }, "end": { - "line": 325, + "line": 379, "column": 81 } } @@ -58985,15 +58985,15 @@ "postfix": false, "binop": null }, - "start": 12530, - "end": 12531, + "start": 14518, + "end": 14519, "loc": { "start": { - "line": 325, + "line": 379, "column": 81 }, "end": { - "line": 325, + "line": 379, "column": 82 } } @@ -59011,15 +59011,15 @@ "binop": null, "updateContext": null }, - "start": 12532, - "end": 12534, + "start": 14520, + "end": 14522, "loc": { "start": { - "line": 325, + "line": 379, "column": 83 }, "end": { - "line": 325, + "line": 379, "column": 85 } } @@ -59036,15 +59036,15 @@ "postfix": false, "binop": null }, - "start": 12535, - "end": 12536, + "start": 14523, + "end": 14524, "loc": { "start": { - "line": 325, + "line": 379, "column": 86 }, "end": { - "line": 325, + "line": 379, "column": 87 } } @@ -59062,15 +59062,15 @@ "binop": null }, "value": "spinner", - "start": 12557, - "end": 12564, + "start": 14545, + "end": 14552, "loc": { "start": { - "line": 326, + "line": 380, "column": 20 }, "end": { - "line": 326, + "line": 380, "column": 27 } } @@ -59088,15 +59088,15 @@ "binop": null, "updateContext": null }, - "start": 12564, - "end": 12565, + "start": 14552, + "end": 14553, "loc": { "start": { - "line": 326, + "line": 380, "column": 27 }, "end": { - "line": 326, + "line": 380, "column": 28 } } @@ -59114,15 +59114,15 @@ "binop": null }, "value": "processes", - "start": 12565, - "end": 12574, + "start": 14553, + "end": 14562, "loc": { "start": { - "line": 326, + "line": 380, "column": 28 }, "end": { - "line": 326, + "line": 380, "column": 37 } } @@ -59140,15 +59140,15 @@ "binop": null }, "value": "--", - "start": 12574, - "end": 12576, + "start": 14562, + "end": 14564, "loc": { "start": { - "line": 326, + "line": 380, "column": 37 }, "end": { - "line": 326, + "line": 380, "column": 39 } } @@ -59166,15 +59166,15 @@ "binop": null, "updateContext": null }, - "start": 12576, - "end": 12577, + "start": 14564, + "end": 14565, "loc": { "start": { - "line": 326, + "line": 380, "column": 39 }, "end": { - "line": 326, + "line": 380, "column": 40 } } @@ -59191,15 +59191,15 @@ "postfix": false, "binop": null }, - "start": 12594, - "end": 12595, + "start": 14582, + "end": 14583, "loc": { "start": { - "line": 327, + "line": 381, "column": 16 }, "end": { - "line": 327, + "line": 381, "column": 17 } } @@ -59217,15 +59217,15 @@ "binop": null, "updateContext": null }, - "start": 12595, - "end": 12596, + "start": 14583, + "end": 14584, "loc": { "start": { - "line": 327, + "line": 381, "column": 17 }, "end": { - "line": 327, + "line": 381, "column": 18 } } @@ -59242,15 +59242,15 @@ "postfix": false, "binop": null }, - "start": 12597, - "end": 12598, + "start": 14585, + "end": 14586, "loc": { "start": { - "line": 327, + "line": 381, "column": 19 }, "end": { - "line": 327, + "line": 381, "column": 20 } } @@ -59268,15 +59268,15 @@ "binop": null }, "value": "errMsg", - "start": 12598, - "end": 12604, + "start": 14586, + "end": 14592, "loc": { "start": { - "line": 327, + "line": 381, "column": 20 }, "end": { - "line": 327, + "line": 381, "column": 26 } } @@ -59293,15 +59293,15 @@ "postfix": false, "binop": null }, - "start": 12604, - "end": 12605, + "start": 14592, + "end": 14593, "loc": { "start": { - "line": 327, + "line": 381, "column": 26 }, "end": { - "line": 327, + "line": 381, "column": 27 } } @@ -59319,15 +59319,15 @@ "binop": null, "updateContext": null }, - "start": 12606, - "end": 12608, + "start": 14594, + "end": 14596, "loc": { "start": { - "line": 327, + "line": 381, "column": 28 }, "end": { - "line": 327, + "line": 381, "column": 30 } } @@ -59344,15 +59344,15 @@ "postfix": false, "binop": null }, - "start": 12609, - "end": 12610, + "start": 14597, + "end": 14598, "loc": { "start": { - "line": 327, + "line": 381, "column": 31 }, "end": { - "line": 327, + "line": 381, "column": 32 } } @@ -59370,15 +59370,15 @@ "binop": null }, "value": "spinner", - "start": 12631, - "end": 12638, + "start": 14619, + "end": 14626, "loc": { "start": { - "line": 328, + "line": 382, "column": 20 }, "end": { - "line": 328, + "line": 382, "column": 27 } } @@ -59396,15 +59396,15 @@ "binop": null, "updateContext": null }, - "start": 12638, - "end": 12639, + "start": 14626, + "end": 14627, "loc": { "start": { - "line": 328, + "line": 382, "column": 27 }, "end": { - "line": 328, + "line": 382, "column": 28 } } @@ -59422,15 +59422,15 @@ "binop": null }, "value": "processes", - "start": 12639, - "end": 12648, + "start": 14627, + "end": 14636, "loc": { "start": { - "line": 328, + "line": 382, "column": 28 }, "end": { - "line": 328, + "line": 382, "column": 37 } } @@ -59448,15 +59448,15 @@ "binop": null }, "value": "--", - "start": 12648, - "end": 12650, + "start": 14636, + "end": 14638, "loc": { "start": { - "line": 328, + "line": 382, "column": 37 }, "end": { - "line": 328, + "line": 382, "column": 39 } } @@ -59474,15 +59474,15 @@ "binop": null, "updateContext": null }, - "start": 12650, - "end": 12651, + "start": 14638, + "end": 14639, "loc": { "start": { - "line": 328, + "line": 382, "column": 39 }, "end": { - "line": 328, + "line": 382, "column": 40 } } @@ -59502,15 +59502,15 @@ "updateContext": null }, "value": "this", - "start": 12672, - "end": 12676, + "start": 14660, + "end": 14664, "loc": { "start": { - "line": 329, + "line": 383, "column": 20 }, "end": { - "line": 329, + "line": 383, "column": 24 } } @@ -59528,15 +59528,15 @@ "binop": null, "updateContext": null }, - "start": 12676, - "end": 12677, + "start": 14664, + "end": 14665, "loc": { "start": { - "line": 329, + "line": 383, "column": 24 }, "end": { - "line": 329, + "line": 383, "column": 25 } } @@ -59554,15 +59554,15 @@ "binop": null }, "value": "error", - "start": 12677, - "end": 12682, + "start": 14665, + "end": 14670, "loc": { "start": { - "line": 329, + "line": 383, "column": 25 }, "end": { - "line": 329, + "line": 383, "column": 30 } } @@ -59579,15 +59579,15 @@ "postfix": false, "binop": null }, - "start": 12682, - "end": 12683, + "start": 14670, + "end": 14671, "loc": { "start": { - "line": 329, + "line": 383, "column": 30 }, "end": { - "line": 329, + "line": 383, "column": 31 } } @@ -59605,15 +59605,15 @@ "binop": null }, "value": "errMsg", - "start": 12683, - "end": 12689, + "start": 14671, + "end": 14677, "loc": { "start": { - "line": 329, + "line": 383, "column": 31 }, "end": { - "line": 329, + "line": 383, "column": 37 } } @@ -59630,15 +59630,15 @@ "postfix": false, "binop": null }, - "start": 12689, - "end": 12690, + "start": 14677, + "end": 14678, "loc": { "start": { - "line": 329, + "line": 383, "column": 37 }, "end": { - "line": 329, + "line": 383, "column": 38 } } @@ -59656,15 +59656,15 @@ "binop": null, "updateContext": null }, - "start": 12690, - "end": 12691, + "start": 14678, + "end": 14679, "loc": { "start": { - "line": 329, + "line": 383, "column": 38 }, "end": { - "line": 329, + "line": 383, "column": 39 } } @@ -59682,15 +59682,15 @@ "binop": null }, "value": "sceneModel", - "start": 12712, - "end": 12722, + "start": 14700, + "end": 14710, "loc": { "start": { - "line": 330, + "line": 384, "column": 20 }, "end": { - "line": 330, + "line": 384, "column": 30 } } @@ -59708,15 +59708,15 @@ "binop": null, "updateContext": null }, - "start": 12722, - "end": 12723, + "start": 14710, + "end": 14711, "loc": { "start": { - "line": 330, + "line": 384, "column": 30 }, "end": { - "line": 330, + "line": 384, "column": 31 } } @@ -59734,15 +59734,15 @@ "binop": null }, "value": "fire", - "start": 12723, - "end": 12727, + "start": 14711, + "end": 14715, "loc": { "start": { - "line": 330, + "line": 384, "column": 31 }, "end": { - "line": 330, + "line": 384, "column": 35 } } @@ -59759,15 +59759,15 @@ "postfix": false, "binop": null }, - "start": 12727, - "end": 12728, + "start": 14715, + "end": 14716, "loc": { "start": { - "line": 330, + "line": 384, "column": 35 }, "end": { - "line": 330, + "line": 384, "column": 36 } } @@ -59786,15 +59786,15 @@ "updateContext": null }, "value": "error", - "start": 12728, - "end": 12735, + "start": 14716, + "end": 14723, "loc": { "start": { - "line": 330, + "line": 384, "column": 36 }, "end": { - "line": 330, + "line": 384, "column": 43 } } @@ -59812,15 +59812,15 @@ "binop": null, "updateContext": null }, - "start": 12735, - "end": 12736, + "start": 14723, + "end": 14724, "loc": { "start": { - "line": 330, + "line": 384, "column": 43 }, "end": { - "line": 330, + "line": 384, "column": 44 } } @@ -59838,15 +59838,15 @@ "binop": null }, "value": "errMsg", - "start": 12737, - "end": 12743, + "start": 14725, + "end": 14731, "loc": { "start": { - "line": 330, + "line": 384, "column": 45 }, "end": { - "line": 330, + "line": 384, "column": 51 } } @@ -59863,15 +59863,15 @@ "postfix": false, "binop": null }, - "start": 12743, - "end": 12744, + "start": 14731, + "end": 14732, "loc": { "start": { - "line": 330, + "line": 384, "column": 51 }, "end": { - "line": 330, + "line": 384, "column": 52 } } @@ -59889,15 +59889,15 @@ "binop": null, "updateContext": null }, - "start": 12744, - "end": 12745, + "start": 14732, + "end": 14733, "loc": { "start": { - "line": 330, + "line": 384, "column": 52 }, "end": { - "line": 330, + "line": 384, "column": 53 } } @@ -59914,15 +59914,15 @@ "postfix": false, "binop": null }, - "start": 12762, - "end": 12763, + "start": 14750, + "end": 14751, "loc": { "start": { - "line": 331, + "line": 385, "column": 16 }, "end": { - "line": 331, + "line": 385, "column": 17 } } @@ -59939,15 +59939,15 @@ "postfix": false, "binop": null }, - "start": 12763, - "end": 12764, + "start": 14751, + "end": 14752, "loc": { "start": { - "line": 331, + "line": 385, "column": 17 }, "end": { - "line": 331, + "line": 385, "column": 18 } } @@ -59965,15 +59965,15 @@ "binop": null, "updateContext": null }, - "start": 12764, - "end": 12765, + "start": 14752, + "end": 14753, "loc": { "start": { - "line": 331, + "line": 385, "column": 18 }, "end": { - "line": 331, + "line": 385, "column": 19 } } @@ -59990,15 +59990,15 @@ "postfix": false, "binop": null }, - "start": 12778, - "end": 12779, + "start": 14766, + "end": 14767, "loc": { "start": { - "line": 332, + "line": 386, "column": 12 }, "end": { - "line": 332, + "line": 386, "column": 13 } } @@ -60016,15 +60016,15 @@ "binop": null, "updateContext": null }, - "start": 12779, - "end": 12780, + "start": 14767, + "end": 14768, "loc": { "start": { - "line": 332, + "line": 386, "column": 13 }, "end": { - "line": 332, + "line": 386, "column": 14 } } @@ -60041,15 +60041,15 @@ "postfix": false, "binop": null }, - "start": 12793, - "end": 12794, + "start": 14781, + "end": 14782, "loc": { "start": { - "line": 333, + "line": 387, "column": 12 }, "end": { - "line": 333, + "line": 387, "column": 13 } } @@ -60067,15 +60067,15 @@ "binop": null }, "value": "errMsg", - "start": 12794, - "end": 12800, + "start": 14782, + "end": 14788, "loc": { "start": { - "line": 333, + "line": 387, "column": 13 }, "end": { - "line": 333, + "line": 387, "column": 19 } } @@ -60092,15 +60092,15 @@ "postfix": false, "binop": null }, - "start": 12800, - "end": 12801, + "start": 14788, + "end": 14789, "loc": { "start": { - "line": 333, + "line": 387, "column": 19 }, "end": { - "line": 333, + "line": 387, "column": 20 } } @@ -60118,15 +60118,15 @@ "binop": null, "updateContext": null }, - "start": 12802, - "end": 12804, + "start": 14790, + "end": 14792, "loc": { "start": { - "line": 333, + "line": 387, "column": 21 }, "end": { - "line": 333, + "line": 387, "column": 23 } } @@ -60143,15 +60143,15 @@ "postfix": false, "binop": null }, - "start": 12805, - "end": 12806, + "start": 14793, + "end": 14794, "loc": { "start": { - "line": 333, + "line": 387, "column": 24 }, "end": { - "line": 333, + "line": 387, "column": 25 } } @@ -60169,15 +60169,15 @@ "binop": null }, "value": "spinner", - "start": 12823, - "end": 12830, + "start": 14811, + "end": 14818, "loc": { "start": { - "line": 334, + "line": 388, "column": 16 }, "end": { - "line": 334, + "line": 388, "column": 23 } } @@ -60195,15 +60195,15 @@ "binop": null, "updateContext": null }, - "start": 12830, - "end": 12831, + "start": 14818, + "end": 14819, "loc": { "start": { - "line": 334, + "line": 388, "column": 23 }, "end": { - "line": 334, + "line": 388, "column": 24 } } @@ -60221,15 +60221,15 @@ "binop": null }, "value": "processes", - "start": 12831, - "end": 12840, + "start": 14819, + "end": 14828, "loc": { "start": { - "line": 334, + "line": 388, "column": 24 }, "end": { - "line": 334, + "line": 388, "column": 33 } } @@ -60247,15 +60247,15 @@ "binop": null }, "value": "--", - "start": 12840, - "end": 12842, + "start": 14828, + "end": 14830, "loc": { "start": { - "line": 334, + "line": 388, "column": 33 }, "end": { - "line": 334, + "line": 388, "column": 35 } } @@ -60273,15 +60273,15 @@ "binop": null, "updateContext": null }, - "start": 12842, - "end": 12843, + "start": 14830, + "end": 14831, "loc": { "start": { - "line": 334, + "line": 388, "column": 35 }, "end": { - "line": 334, + "line": 388, "column": 36 } } @@ -60301,15 +60301,15 @@ "updateContext": null }, "value": "this", - "start": 12860, - "end": 12864, + "start": 14848, + "end": 14852, "loc": { "start": { - "line": 335, + "line": 389, "column": 16 }, "end": { - "line": 335, + "line": 389, "column": 20 } } @@ -60327,15 +60327,15 @@ "binop": null, "updateContext": null }, - "start": 12864, - "end": 12865, + "start": 14852, + "end": 14853, "loc": { "start": { - "line": 335, + "line": 389, "column": 20 }, "end": { - "line": 335, + "line": 389, "column": 21 } } @@ -60353,15 +60353,15 @@ "binop": null }, "value": "error", - "start": 12865, - "end": 12870, + "start": 14853, + "end": 14858, "loc": { "start": { - "line": 335, + "line": 389, "column": 21 }, "end": { - "line": 335, + "line": 389, "column": 26 } } @@ -60378,15 +60378,15 @@ "postfix": false, "binop": null }, - "start": 12870, - "end": 12871, + "start": 14858, + "end": 14859, "loc": { "start": { - "line": 335, + "line": 389, "column": 26 }, "end": { - "line": 335, + "line": 389, "column": 27 } } @@ -60404,15 +60404,15 @@ "binop": null }, "value": "errMsg", - "start": 12871, - "end": 12877, + "start": 14859, + "end": 14865, "loc": { "start": { - "line": 335, + "line": 389, "column": 27 }, "end": { - "line": 335, + "line": 389, "column": 33 } } @@ -60429,15 +60429,15 @@ "postfix": false, "binop": null }, - "start": 12877, - "end": 12878, + "start": 14865, + "end": 14866, "loc": { "start": { - "line": 335, + "line": 389, "column": 33 }, "end": { - "line": 335, + "line": 389, "column": 34 } } @@ -60455,15 +60455,15 @@ "binop": null, "updateContext": null }, - "start": 12878, - "end": 12879, + "start": 14866, + "end": 14867, "loc": { "start": { - "line": 335, + "line": 389, "column": 34 }, "end": { - "line": 335, + "line": 389, "column": 35 } } @@ -60481,15 +60481,15 @@ "binop": null }, "value": "sceneModel", - "start": 12896, - "end": 12906, + "start": 14884, + "end": 14894, "loc": { "start": { - "line": 336, + "line": 390, "column": 16 }, "end": { - "line": 336, + "line": 390, "column": 26 } } @@ -60507,15 +60507,15 @@ "binop": null, "updateContext": null }, - "start": 12906, - "end": 12907, + "start": 14894, + "end": 14895, "loc": { "start": { - "line": 336, + "line": 390, "column": 26 }, "end": { - "line": 336, + "line": 390, "column": 27 } } @@ -60533,15 +60533,15 @@ "binop": null }, "value": "fire", - "start": 12907, - "end": 12911, + "start": 14895, + "end": 14899, "loc": { "start": { - "line": 336, + "line": 390, "column": 27 }, "end": { - "line": 336, + "line": 390, "column": 31 } } @@ -60558,15 +60558,15 @@ "postfix": false, "binop": null }, - "start": 12911, - "end": 12912, + "start": 14899, + "end": 14900, "loc": { "start": { - "line": 336, + "line": 390, "column": 31 }, "end": { - "line": 336, + "line": 390, "column": 32 } } @@ -60585,15 +60585,15 @@ "updateContext": null }, "value": "error", - "start": 12912, - "end": 12919, + "start": 14900, + "end": 14907, "loc": { "start": { - "line": 336, + "line": 390, "column": 32 }, "end": { - "line": 336, + "line": 390, "column": 39 } } @@ -60611,15 +60611,15 @@ "binop": null, "updateContext": null }, - "start": 12919, - "end": 12920, + "start": 14907, + "end": 14908, "loc": { "start": { - "line": 336, + "line": 390, "column": 39 }, "end": { - "line": 336, + "line": 390, "column": 40 } } @@ -60637,15 +60637,15 @@ "binop": null }, "value": "errMsg", - "start": 12921, - "end": 12927, + "start": 14909, + "end": 14915, "loc": { "start": { - "line": 336, + "line": 390, "column": 41 }, "end": { - "line": 336, + "line": 390, "column": 47 } } @@ -60662,15 +60662,15 @@ "postfix": false, "binop": null }, - "start": 12927, - "end": 12928, + "start": 14915, + "end": 14916, "loc": { "start": { - "line": 336, + "line": 390, "column": 47 }, "end": { - "line": 336, + "line": 390, "column": 48 } } @@ -60688,15 +60688,15 @@ "binop": null, "updateContext": null }, - "start": 12928, - "end": 12929, + "start": 14916, + "end": 14917, "loc": { "start": { - "line": 336, + "line": 390, "column": 48 }, "end": { - "line": 336, + "line": 390, "column": 49 } } @@ -60713,15 +60713,15 @@ "postfix": false, "binop": null }, - "start": 12942, - "end": 12943, + "start": 14930, + "end": 14931, "loc": { "start": { - "line": 337, + "line": 391, "column": 12 }, "end": { - "line": 337, + "line": 391, "column": 13 } } @@ -60738,15 +60738,15 @@ "postfix": false, "binop": null }, - "start": 12943, - "end": 12944, + "start": 14931, + "end": 14932, "loc": { "start": { - "line": 337, + "line": 391, "column": 13 }, "end": { - "line": 337, + "line": 391, "column": 14 } } @@ -60764,15 +60764,15 @@ "binop": null, "updateContext": null }, - "start": 12944, - "end": 12945, + "start": 14932, + "end": 14933, "loc": { "start": { - "line": 337, + "line": 391, "column": 14 }, "end": { - "line": 337, + "line": 391, "column": 15 } } @@ -60789,15 +60789,15 @@ "postfix": false, "binop": null }, - "start": 12950, - "end": 12951, + "start": 14938, + "end": 14939, "loc": { "start": { - "line": 338, + "line": 392, "column": 4 }, "end": { - "line": 338, + "line": 392, "column": 5 } } @@ -60815,15 +60815,15 @@ "binop": null }, "value": "_parseModel", - "start": 12957, - "end": 12968, + "start": 14945, + "end": 14956, "loc": { "start": { - "line": 340, + "line": 394, "column": 4 }, "end": { - "line": 340, + "line": 394, "column": 15 } } @@ -60840,15 +60840,15 @@ "postfix": false, "binop": null }, - "start": 12968, - "end": 12969, + "start": 14956, + "end": 14957, "loc": { "start": { - "line": 340, + "line": 394, "column": 15 }, "end": { - "line": 340, + "line": 394, "column": 16 } } @@ -60866,15 +60866,15 @@ "binop": null }, "value": "arrayBuffer", - "start": 12969, - "end": 12980, + "start": 14957, + "end": 14968, "loc": { "start": { - "line": 340, + "line": 394, "column": 16 }, "end": { - "line": 340, + "line": 394, "column": 27 } } @@ -60892,15 +60892,15 @@ "binop": null, "updateContext": null }, - "start": 12980, - "end": 12981, + "start": 14968, + "end": 14969, "loc": { "start": { - "line": 340, + "line": 394, "column": 27 }, "end": { - "line": 340, + "line": 394, "column": 28 } } @@ -60918,15 +60918,15 @@ "binop": null }, "value": "params", - "start": 12982, - "end": 12988, + "start": 14970, + "end": 14976, "loc": { "start": { - "line": 340, + "line": 394, "column": 29 }, "end": { - "line": 340, + "line": 394, "column": 35 } } @@ -60944,15 +60944,15 @@ "binop": null, "updateContext": null }, - "start": 12988, - "end": 12989, + "start": 14976, + "end": 14977, "loc": { "start": { - "line": 340, + "line": 394, "column": 35 }, "end": { - "line": 340, + "line": 394, "column": 36 } } @@ -60970,15 +60970,15 @@ "binop": null }, "value": "options", - "start": 12990, - "end": 12997, + "start": 14978, + "end": 14985, "loc": { "start": { - "line": 340, + "line": 394, "column": 37 }, "end": { - "line": 340, + "line": 394, "column": 44 } } @@ -60996,15 +60996,15 @@ "binop": null, "updateContext": null }, - "start": 12997, - "end": 12998, + "start": 14985, + "end": 14986, "loc": { "start": { - "line": 340, + "line": 394, "column": 44 }, "end": { - "line": 340, + "line": 394, "column": 45 } } @@ -61022,15 +61022,15 @@ "binop": null }, "value": "sceneModel", - "start": 12999, - "end": 13009, + "start": 14987, + "end": 14997, "loc": { "start": { - "line": 340, + "line": 394, "column": 46 }, "end": { - "line": 340, + "line": 394, "column": 56 } } @@ -61047,15 +61047,15 @@ "postfix": false, "binop": null }, - "start": 13009, - "end": 13010, + "start": 14997, + "end": 14998, "loc": { "start": { - "line": 340, + "line": 394, "column": 56 }, "end": { - "line": 340, + "line": 394, "column": 57 } } @@ -61072,15 +61072,15 @@ "postfix": false, "binop": null }, - "start": 13011, - "end": 13012, + "start": 14999, + "end": 15000, "loc": { "start": { - "line": 340, + "line": 394, "column": 58 }, "end": { - "line": 340, + "line": 394, "column": 59 } } @@ -61099,15 +61099,15 @@ "binop": null }, "value": "function", - "start": 13022, - "end": 13030, + "start": 15010, + "end": 15018, "loc": { "start": { - "line": 342, + "line": 396, "column": 8 }, "end": { - "line": 342, + "line": 396, "column": 16 } } @@ -61125,15 +61125,15 @@ "binop": null }, "value": "readPositions", - "start": 13031, - "end": 13044, + "start": 15019, + "end": 15032, "loc": { "start": { - "line": 342, + "line": 396, "column": 17 }, "end": { - "line": 342, + "line": 396, "column": 30 } } @@ -61150,15 +61150,15 @@ "postfix": false, "binop": null }, - "start": 13044, - "end": 13045, + "start": 15032, + "end": 15033, "loc": { "start": { - "line": 342, + "line": 396, "column": 30 }, "end": { - "line": 342, + "line": 396, "column": 31 } } @@ -61176,15 +61176,15 @@ "binop": null }, "value": "attributesPosition", - "start": 13045, - "end": 13063, + "start": 15033, + "end": 15051, "loc": { "start": { - "line": 342, + "line": 396, "column": 31 }, "end": { - "line": 342, + "line": 396, "column": 49 } } @@ -61201,15 +61201,15 @@ "postfix": false, "binop": null }, - "start": 13063, - "end": 13064, + "start": 15051, + "end": 15052, "loc": { "start": { - "line": 342, + "line": 396, "column": 49 }, "end": { - "line": 342, + "line": 396, "column": 50 } } @@ -61226,15 +61226,15 @@ "postfix": false, "binop": null }, - "start": 13065, - "end": 13066, + "start": 15053, + "end": 15054, "loc": { "start": { - "line": 342, + "line": 396, "column": 51 }, "end": { - "line": 342, + "line": 396, "column": 52 } } @@ -61254,15 +61254,15 @@ "updateContext": null }, "value": "const", - "start": 13079, - "end": 13084, + "start": 15067, + "end": 15072, "loc": { "start": { - "line": 343, + "line": 397, "column": 12 }, "end": { - "line": 343, + "line": 397, "column": 17 } } @@ -61280,15 +61280,15 @@ "binop": null }, "value": "positionsValue", - "start": 13085, - "end": 13099, + "start": 15073, + "end": 15087, "loc": { "start": { - "line": 343, + "line": 397, "column": 18 }, "end": { - "line": 343, + "line": 397, "column": 32 } } @@ -61307,15 +61307,15 @@ "updateContext": null }, "value": "=", - "start": 13100, - "end": 13101, + "start": 15088, + "end": 15089, "loc": { "start": { - "line": 343, + "line": 397, "column": 33 }, "end": { - "line": 343, + "line": 397, "column": 34 } } @@ -61333,15 +61333,15 @@ "binop": null }, "value": "attributesPosition", - "start": 13102, - "end": 13120, + "start": 15090, + "end": 15108, "loc": { "start": { - "line": 343, + "line": 397, "column": 35 }, "end": { - "line": 343, + "line": 397, "column": 53 } } @@ -61359,15 +61359,15 @@ "binop": null, "updateContext": null }, - "start": 13120, - "end": 13121, + "start": 15108, + "end": 15109, "loc": { "start": { - "line": 343, + "line": 397, "column": 53 }, "end": { - "line": 343, + "line": 397, "column": 54 } } @@ -61385,15 +61385,15 @@ "binop": null }, "value": "value", - "start": 13121, - "end": 13126, + "start": 15109, + "end": 15114, "loc": { "start": { - "line": 343, + "line": 397, "column": 54 }, "end": { - "line": 343, + "line": 397, "column": 59 } } @@ -61411,15 +61411,15 @@ "binop": null, "updateContext": null }, - "start": 13126, - "end": 13127, + "start": 15114, + "end": 15115, "loc": { "start": { - "line": 343, + "line": 397, "column": 59 }, "end": { - "line": 343, + "line": 397, "column": 60 } } @@ -61439,15 +61439,15 @@ "updateContext": null }, "value": "if", - "start": 13140, - "end": 13142, + "start": 15128, + "end": 15130, "loc": { "start": { - "line": 344, + "line": 398, "column": 12 }, "end": { - "line": 344, + "line": 398, "column": 14 } } @@ -61464,15 +61464,15 @@ "postfix": false, "binop": null }, - "start": 13143, - "end": 13144, + "start": 15131, + "end": 15132, "loc": { "start": { - "line": 344, + "line": 398, "column": 15 }, "end": { - "line": 344, + "line": 398, "column": 16 } } @@ -61490,15 +61490,15 @@ "binop": null }, "value": "params", - "start": 13144, - "end": 13150, + "start": 15132, + "end": 15138, "loc": { "start": { - "line": 344, + "line": 398, "column": 16 }, "end": { - "line": 344, + "line": 398, "column": 22 } } @@ -61516,15 +61516,15 @@ "binop": null, "updateContext": null }, - "start": 13150, - "end": 13151, + "start": 15138, + "end": 15139, "loc": { "start": { - "line": 344, + "line": 398, "column": 22 }, "end": { - "line": 344, + "line": 398, "column": 23 } } @@ -61542,15 +61542,15 @@ "binop": null }, "value": "rotateX", - "start": 13151, - "end": 13158, + "start": 15139, + "end": 15146, "loc": { "start": { - "line": 344, + "line": 398, "column": 23 }, "end": { - "line": 344, + "line": 398, "column": 30 } } @@ -61567,15 +61567,15 @@ "postfix": false, "binop": null }, - "start": 13158, - "end": 13159, + "start": 15146, + "end": 15147, "loc": { "start": { - "line": 344, + "line": 398, "column": 30 }, "end": { - "line": 344, + "line": 398, "column": 31 } } @@ -61592,15 +61592,15 @@ "postfix": false, "binop": null }, - "start": 13160, - "end": 13161, + "start": 15148, + "end": 15149, "loc": { "start": { - "line": 344, + "line": 398, "column": 32 }, "end": { - "line": 344, + "line": 398, "column": 33 } } @@ -61620,15 +61620,15 @@ "updateContext": null }, "value": "if", - "start": 13178, - "end": 13180, + "start": 15166, + "end": 15168, "loc": { "start": { - "line": 345, + "line": 399, "column": 16 }, "end": { - "line": 345, + "line": 399, "column": 18 } } @@ -61645,15 +61645,15 @@ "postfix": false, "binop": null }, - "start": 13181, - "end": 13182, + "start": 15169, + "end": 15170, "loc": { "start": { - "line": 345, + "line": 399, "column": 19 }, "end": { - "line": 345, + "line": 399, "column": 20 } } @@ -61671,15 +61671,15 @@ "binop": null }, "value": "positionsValue", - "start": 13182, - "end": 13196, + "start": 15170, + "end": 15184, "loc": { "start": { - "line": 345, + "line": 399, "column": 20 }, "end": { - "line": 345, + "line": 399, "column": 34 } } @@ -61696,15 +61696,15 @@ "postfix": false, "binop": null }, - "start": 13196, - "end": 13197, + "start": 15184, + "end": 15185, "loc": { "start": { - "line": 345, + "line": 399, "column": 34 }, "end": { - "line": 345, + "line": 399, "column": 35 } } @@ -61721,15 +61721,15 @@ "postfix": false, "binop": null }, - "start": 13198, - "end": 13199, + "start": 15186, + "end": 15187, "loc": { "start": { - "line": 345, + "line": 399, "column": 36 }, "end": { - "line": 345, + "line": 399, "column": 37 } } @@ -61749,15 +61749,15 @@ "updateContext": null }, "value": "for", - "start": 13220, - "end": 13223, + "start": 15208, + "end": 15211, "loc": { "start": { - "line": 346, + "line": 400, "column": 20 }, "end": { - "line": 346, + "line": 400, "column": 23 } } @@ -61774,15 +61774,15 @@ "postfix": false, "binop": null }, - "start": 13224, - "end": 13225, + "start": 15212, + "end": 15213, "loc": { "start": { - "line": 346, + "line": 400, "column": 24 }, "end": { - "line": 346, + "line": 400, "column": 25 } } @@ -61802,15 +61802,15 @@ "updateContext": null }, "value": "let", - "start": 13225, - "end": 13228, + "start": 15213, + "end": 15216, "loc": { "start": { - "line": 346, + "line": 400, "column": 25 }, "end": { - "line": 346, + "line": 400, "column": 28 } } @@ -61828,15 +61828,15 @@ "binop": null }, "value": "i", - "start": 13229, - "end": 13230, + "start": 15217, + "end": 15218, "loc": { "start": { - "line": 346, + "line": 400, "column": 29 }, "end": { - "line": 346, + "line": 400, "column": 30 } } @@ -61855,15 +61855,15 @@ "updateContext": null }, "value": "=", - "start": 13231, - "end": 13232, + "start": 15219, + "end": 15220, "loc": { "start": { - "line": 346, + "line": 400, "column": 31 }, "end": { - "line": 346, + "line": 400, "column": 32 } } @@ -61882,15 +61882,15 @@ "updateContext": null }, "value": 0, - "start": 13233, - "end": 13234, + "start": 15221, + "end": 15222, "loc": { "start": { - "line": 346, + "line": 400, "column": 33 }, "end": { - "line": 346, + "line": 400, "column": 34 } } @@ -61908,15 +61908,15 @@ "binop": null, "updateContext": null }, - "start": 13234, - "end": 13235, + "start": 15222, + "end": 15223, "loc": { "start": { - "line": 346, + "line": 400, "column": 34 }, "end": { - "line": 346, + "line": 400, "column": 35 } } @@ -61934,15 +61934,15 @@ "binop": null }, "value": "len", - "start": 13236, - "end": 13239, + "start": 15224, + "end": 15227, "loc": { "start": { - "line": 346, + "line": 400, "column": 36 }, "end": { - "line": 346, + "line": 400, "column": 39 } } @@ -61961,15 +61961,15 @@ "updateContext": null }, "value": "=", - "start": 13240, - "end": 13241, + "start": 15228, + "end": 15229, "loc": { "start": { - "line": 346, + "line": 400, "column": 40 }, "end": { - "line": 346, + "line": 400, "column": 41 } } @@ -61987,15 +61987,15 @@ "binop": null }, "value": "positionsValue", - "start": 13242, - "end": 13256, + "start": 15230, + "end": 15244, "loc": { "start": { - "line": 346, + "line": 400, "column": 42 }, "end": { - "line": 346, + "line": 400, "column": 56 } } @@ -62013,15 +62013,15 @@ "binop": null, "updateContext": null }, - "start": 13256, - "end": 13257, + "start": 15244, + "end": 15245, "loc": { "start": { - "line": 346, + "line": 400, "column": 56 }, "end": { - "line": 346, + "line": 400, "column": 57 } } @@ -62039,15 +62039,15 @@ "binop": null }, "value": "length", - "start": 13257, - "end": 13263, + "start": 15245, + "end": 15251, "loc": { "start": { - "line": 346, + "line": 400, "column": 57 }, "end": { - "line": 346, + "line": 400, "column": 63 } } @@ -62065,15 +62065,15 @@ "binop": null, "updateContext": null }, - "start": 13263, - "end": 13264, + "start": 15251, + "end": 15252, "loc": { "start": { - "line": 346, + "line": 400, "column": 63 }, "end": { - "line": 346, + "line": 400, "column": 64 } } @@ -62091,15 +62091,15 @@ "binop": null }, "value": "i", - "start": 13265, - "end": 13266, + "start": 15253, + "end": 15254, "loc": { "start": { - "line": 346, + "line": 400, "column": 65 }, "end": { - "line": 346, + "line": 400, "column": 66 } } @@ -62118,15 +62118,15 @@ "updateContext": null }, "value": "<", - "start": 13267, - "end": 13268, + "start": 15255, + "end": 15256, "loc": { "start": { - "line": 346, + "line": 400, "column": 67 }, "end": { - "line": 346, + "line": 400, "column": 68 } } @@ -62144,15 +62144,15 @@ "binop": null }, "value": "len", - "start": 13269, - "end": 13272, + "start": 15257, + "end": 15260, "loc": { "start": { - "line": 346, + "line": 400, "column": 69 }, "end": { - "line": 346, + "line": 400, "column": 72 } } @@ -62170,15 +62170,15 @@ "binop": null, "updateContext": null }, - "start": 13272, - "end": 13273, + "start": 15260, + "end": 15261, "loc": { "start": { - "line": 346, + "line": 400, "column": 72 }, "end": { - "line": 346, + "line": 400, "column": 73 } } @@ -62196,15 +62196,15 @@ "binop": null }, "value": "i", - "start": 13274, - "end": 13275, + "start": 15262, + "end": 15263, "loc": { "start": { - "line": 346, + "line": 400, "column": 74 }, "end": { - "line": 346, + "line": 400, "column": 75 } } @@ -62223,15 +62223,15 @@ "updateContext": null }, "value": "+=", - "start": 13276, - "end": 13278, + "start": 15264, + "end": 15266, "loc": { "start": { - "line": 346, + "line": 400, "column": 76 }, "end": { - "line": 346, + "line": 400, "column": 78 } } @@ -62250,15 +62250,15 @@ "updateContext": null }, "value": 3, - "start": 13279, - "end": 13280, + "start": 15267, + "end": 15268, "loc": { "start": { - "line": 346, + "line": 400, "column": 79 }, "end": { - "line": 346, + "line": 400, "column": 80 } } @@ -62275,15 +62275,15 @@ "postfix": false, "binop": null }, - "start": 13280, - "end": 13281, + "start": 15268, + "end": 15269, "loc": { "start": { - "line": 346, + "line": 400, "column": 80 }, "end": { - "line": 346, + "line": 400, "column": 81 } } @@ -62300,15 +62300,15 @@ "postfix": false, "binop": null }, - "start": 13282, - "end": 13283, + "start": 15270, + "end": 15271, "loc": { "start": { - "line": 346, + "line": 400, "column": 82 }, "end": { - "line": 346, + "line": 400, "column": 83 } } @@ -62328,15 +62328,15 @@ "updateContext": null }, "value": "const", - "start": 13308, - "end": 13313, + "start": 15296, + "end": 15301, "loc": { "start": { - "line": 347, + "line": 401, "column": 24 }, "end": { - "line": 347, + "line": 401, "column": 29 } } @@ -62354,15 +62354,15 @@ "binop": null }, "value": "temp", - "start": 13314, - "end": 13318, + "start": 15302, + "end": 15306, "loc": { "start": { - "line": 347, + "line": 401, "column": 30 }, "end": { - "line": 347, + "line": 401, "column": 34 } } @@ -62381,15 +62381,15 @@ "updateContext": null }, "value": "=", - "start": 13319, - "end": 13320, + "start": 15307, + "end": 15308, "loc": { "start": { - "line": 347, + "line": 401, "column": 35 }, "end": { - "line": 347, + "line": 401, "column": 36 } } @@ -62407,15 +62407,15 @@ "binop": null }, "value": "positionsValue", - "start": 13321, - "end": 13335, + "start": 15309, + "end": 15323, "loc": { "start": { - "line": 347, + "line": 401, "column": 37 }, "end": { - "line": 347, + "line": 401, "column": 51 } } @@ -62433,15 +62433,15 @@ "binop": null, "updateContext": null }, - "start": 13335, - "end": 13336, + "start": 15323, + "end": 15324, "loc": { "start": { - "line": 347, + "line": 401, "column": 51 }, "end": { - "line": 347, + "line": 401, "column": 52 } } @@ -62459,15 +62459,15 @@ "binop": null }, "value": "i", - "start": 13336, - "end": 13337, + "start": 15324, + "end": 15325, "loc": { "start": { - "line": 347, + "line": 401, "column": 52 }, "end": { - "line": 347, + "line": 401, "column": 53 } } @@ -62486,15 +62486,15 @@ "updateContext": null }, "value": "+", - "start": 13338, - "end": 13339, + "start": 15326, + "end": 15327, "loc": { "start": { - "line": 347, + "line": 401, "column": 54 }, "end": { - "line": 347, + "line": 401, "column": 55 } } @@ -62513,15 +62513,15 @@ "updateContext": null }, "value": 1, - "start": 13340, - "end": 13341, + "start": 15328, + "end": 15329, "loc": { "start": { - "line": 347, + "line": 401, "column": 56 }, "end": { - "line": 347, + "line": 401, "column": 57 } } @@ -62539,15 +62539,15 @@ "binop": null, "updateContext": null }, - "start": 13341, - "end": 13342, + "start": 15329, + "end": 15330, "loc": { "start": { - "line": 347, + "line": 401, "column": 57 }, "end": { - "line": 347, + "line": 401, "column": 58 } } @@ -62565,15 +62565,15 @@ "binop": null, "updateContext": null }, - "start": 13342, - "end": 13343, + "start": 15330, + "end": 15331, "loc": { "start": { - "line": 347, + "line": 401, "column": 58 }, "end": { - "line": 347, + "line": 401, "column": 59 } } @@ -62591,15 +62591,15 @@ "binop": null }, "value": "positionsValue", - "start": 13368, - "end": 13382, + "start": 15356, + "end": 15370, "loc": { "start": { - "line": 348, + "line": 402, "column": 24 }, "end": { - "line": 348, + "line": 402, "column": 38 } } @@ -62617,15 +62617,15 @@ "binop": null, "updateContext": null }, - "start": 13382, - "end": 13383, + "start": 15370, + "end": 15371, "loc": { "start": { - "line": 348, + "line": 402, "column": 38 }, "end": { - "line": 348, + "line": 402, "column": 39 } } @@ -62643,15 +62643,15 @@ "binop": null }, "value": "i", - "start": 13383, - "end": 13384, + "start": 15371, + "end": 15372, "loc": { "start": { - "line": 348, + "line": 402, "column": 39 }, "end": { - "line": 348, + "line": 402, "column": 40 } } @@ -62670,15 +62670,15 @@ "updateContext": null }, "value": "+", - "start": 13385, - "end": 13386, + "start": 15373, + "end": 15374, "loc": { "start": { - "line": 348, + "line": 402, "column": 41 }, "end": { - "line": 348, + "line": 402, "column": 42 } } @@ -62697,15 +62697,15 @@ "updateContext": null }, "value": 1, - "start": 13387, - "end": 13388, + "start": 15375, + "end": 15376, "loc": { "start": { - "line": 348, + "line": 402, "column": 43 }, "end": { - "line": 348, + "line": 402, "column": 44 } } @@ -62723,15 +62723,15 @@ "binop": null, "updateContext": null }, - "start": 13388, - "end": 13389, + "start": 15376, + "end": 15377, "loc": { "start": { - "line": 348, + "line": 402, "column": 44 }, "end": { - "line": 348, + "line": 402, "column": 45 } } @@ -62750,15 +62750,15 @@ "updateContext": null }, "value": "=", - "start": 13390, - "end": 13391, + "start": 15378, + "end": 15379, "loc": { "start": { - "line": 348, + "line": 402, "column": 46 }, "end": { - "line": 348, + "line": 402, "column": 47 } } @@ -62776,15 +62776,15 @@ "binop": null }, "value": "positionsValue", - "start": 13392, - "end": 13406, + "start": 15380, + "end": 15394, "loc": { "start": { - "line": 348, + "line": 402, "column": 48 }, "end": { - "line": 348, + "line": 402, "column": 62 } } @@ -62802,15 +62802,15 @@ "binop": null, "updateContext": null }, - "start": 13406, - "end": 13407, + "start": 15394, + "end": 15395, "loc": { "start": { - "line": 348, + "line": 402, "column": 62 }, "end": { - "line": 348, + "line": 402, "column": 63 } } @@ -62828,15 +62828,15 @@ "binop": null }, "value": "i", - "start": 13407, - "end": 13408, + "start": 15395, + "end": 15396, "loc": { "start": { - "line": 348, + "line": 402, "column": 63 }, "end": { - "line": 348, + "line": 402, "column": 64 } } @@ -62855,15 +62855,15 @@ "updateContext": null }, "value": "+", - "start": 13409, - "end": 13410, + "start": 15397, + "end": 15398, "loc": { "start": { - "line": 348, + "line": 402, "column": 65 }, "end": { - "line": 348, + "line": 402, "column": 66 } } @@ -62882,15 +62882,15 @@ "updateContext": null }, "value": 2, - "start": 13411, - "end": 13412, + "start": 15399, + "end": 15400, "loc": { "start": { - "line": 348, + "line": 402, "column": 67 }, "end": { - "line": 348, + "line": 402, "column": 68 } } @@ -62908,15 +62908,15 @@ "binop": null, "updateContext": null }, - "start": 13412, - "end": 13413, + "start": 15400, + "end": 15401, "loc": { "start": { - "line": 348, + "line": 402, "column": 68 }, "end": { - "line": 348, + "line": 402, "column": 69 } } @@ -62934,15 +62934,15 @@ "binop": null, "updateContext": null }, - "start": 13413, - "end": 13414, + "start": 15401, + "end": 15402, "loc": { "start": { - "line": 348, + "line": 402, "column": 69 }, "end": { - "line": 348, + "line": 402, "column": 70 } } @@ -62960,15 +62960,15 @@ "binop": null }, "value": "positionsValue", - "start": 13439, - "end": 13453, + "start": 15427, + "end": 15441, "loc": { "start": { - "line": 349, + "line": 403, "column": 24 }, "end": { - "line": 349, + "line": 403, "column": 38 } } @@ -62986,15 +62986,15 @@ "binop": null, "updateContext": null }, - "start": 13453, - "end": 13454, + "start": 15441, + "end": 15442, "loc": { "start": { - "line": 349, + "line": 403, "column": 38 }, "end": { - "line": 349, + "line": 403, "column": 39 } } @@ -63012,15 +63012,15 @@ "binop": null }, "value": "i", - "start": 13454, - "end": 13455, + "start": 15442, + "end": 15443, "loc": { "start": { - "line": 349, + "line": 403, "column": 39 }, "end": { - "line": 349, + "line": 403, "column": 40 } } @@ -63039,15 +63039,15 @@ "updateContext": null }, "value": "+", - "start": 13456, - "end": 13457, + "start": 15444, + "end": 15445, "loc": { "start": { - "line": 349, + "line": 403, "column": 41 }, "end": { - "line": 349, + "line": 403, "column": 42 } } @@ -63066,15 +63066,15 @@ "updateContext": null }, "value": 2, - "start": 13458, - "end": 13459, + "start": 15446, + "end": 15447, "loc": { "start": { - "line": 349, + "line": 403, "column": 43 }, "end": { - "line": 349, + "line": 403, "column": 44 } } @@ -63092,15 +63092,15 @@ "binop": null, "updateContext": null }, - "start": 13459, - "end": 13460, + "start": 15447, + "end": 15448, "loc": { "start": { - "line": 349, + "line": 403, "column": 44 }, "end": { - "line": 349, + "line": 403, "column": 45 } } @@ -63119,15 +63119,15 @@ "updateContext": null }, "value": "=", - "start": 13461, - "end": 13462, + "start": 15449, + "end": 15450, "loc": { "start": { - "line": 349, + "line": 403, "column": 46 }, "end": { - "line": 349, + "line": 403, "column": 47 } } @@ -63145,15 +63145,15 @@ "binop": null }, "value": "temp", - "start": 13463, - "end": 13467, + "start": 15451, + "end": 15455, "loc": { "start": { - "line": 349, + "line": 403, "column": 48 }, "end": { - "line": 349, + "line": 403, "column": 52 } } @@ -63171,15 +63171,15 @@ "binop": null, "updateContext": null }, - "start": 13467, - "end": 13468, + "start": 15455, + "end": 15456, "loc": { "start": { - "line": 349, + "line": 403, "column": 52 }, "end": { - "line": 349, + "line": 403, "column": 53 } } @@ -63196,15 +63196,15 @@ "postfix": false, "binop": null }, - "start": 13489, - "end": 13490, + "start": 15477, + "end": 15478, "loc": { "start": { - "line": 350, + "line": 404, "column": 20 }, "end": { - "line": 350, + "line": 404, "column": 21 } } @@ -63221,15 +63221,15 @@ "postfix": false, "binop": null }, - "start": 13507, - "end": 13508, + "start": 15495, + "end": 15496, "loc": { "start": { - "line": 351, + "line": 405, "column": 16 }, "end": { - "line": 351, + "line": 405, "column": 17 } } @@ -63246,15 +63246,15 @@ "postfix": false, "binop": null }, - "start": 13521, - "end": 13522, + "start": 15509, + "end": 15510, "loc": { "start": { - "line": 352, + "line": 406, "column": 12 }, "end": { - "line": 352, + "line": 406, "column": 13 } } @@ -63274,15 +63274,15 @@ "updateContext": null }, "value": "return", - "start": 13535, - "end": 13541, + "start": 15523, + "end": 15529, "loc": { "start": { - "line": 353, + "line": 407, "column": 12 }, "end": { - "line": 353, + "line": 407, "column": 18 } } @@ -63300,15 +63300,15 @@ "binop": null }, "value": "positionsValue", - "start": 13542, - "end": 13556, + "start": 15530, + "end": 15544, "loc": { "start": { - "line": 353, + "line": 407, "column": 19 }, "end": { - "line": 353, + "line": 407, "column": 33 } } @@ -63326,15 +63326,15 @@ "binop": null, "updateContext": null }, - "start": 13556, - "end": 13557, + "start": 15544, + "end": 15545, "loc": { "start": { - "line": 353, + "line": 407, "column": 33 }, "end": { - "line": 353, + "line": 407, "column": 34 } } @@ -63351,15 +63351,15 @@ "postfix": false, "binop": null }, - "start": 13566, - "end": 13567, + "start": 15554, + "end": 15555, "loc": { "start": { - "line": 354, + "line": 408, "column": 8 }, "end": { - "line": 354, + "line": 408, "column": 9 } } @@ -63378,15 +63378,15 @@ "binop": null }, "value": "function", - "start": 13577, - "end": 13585, + "start": 15565, + "end": 15573, "loc": { "start": { - "line": 356, + "line": 410, "column": 8 }, "end": { - "line": 356, + "line": 410, "column": 16 } } @@ -63404,15 +63404,15 @@ "binop": null }, "value": "readColorsAndIntensities", - "start": 13586, - "end": 13610, + "start": 15574, + "end": 15598, "loc": { "start": { - "line": 356, + "line": 410, "column": 17 }, "end": { - "line": 356, + "line": 410, "column": 41 } } @@ -63429,15 +63429,15 @@ "postfix": false, "binop": null }, - "start": 13610, - "end": 13611, + "start": 15598, + "end": 15599, "loc": { "start": { - "line": 356, + "line": 410, "column": 41 }, "end": { - "line": 356, + "line": 410, "column": 42 } } @@ -63455,15 +63455,15 @@ "binop": null }, "value": "attributesColor", - "start": 13611, - "end": 13626, + "start": 15599, + "end": 15614, "loc": { "start": { - "line": 356, + "line": 410, "column": 42 }, "end": { - "line": 356, + "line": 410, "column": 57 } } @@ -63481,15 +63481,15 @@ "binop": null, "updateContext": null }, - "start": 13626, - "end": 13627, + "start": 15614, + "end": 15615, "loc": { "start": { - "line": 356, + "line": 410, "column": 57 }, "end": { - "line": 356, + "line": 410, "column": 58 } } @@ -63507,15 +63507,15 @@ "binop": null }, "value": "attributesIntensity", - "start": 13628, - "end": 13647, + "start": 15616, + "end": 15635, "loc": { "start": { - "line": 356, + "line": 410, "column": 59 }, "end": { - "line": 356, + "line": 410, "column": 78 } } @@ -63532,15 +63532,15 @@ "postfix": false, "binop": null }, - "start": 13647, - "end": 13648, + "start": 15635, + "end": 15636, "loc": { "start": { - "line": 356, + "line": 410, "column": 78 }, "end": { - "line": 356, + "line": 410, "column": 79 } } @@ -63557,15 +63557,15 @@ "postfix": false, "binop": null }, - "start": 13649, - "end": 13650, + "start": 15637, + "end": 15638, "loc": { "start": { - "line": 356, + "line": 410, "column": 80 }, "end": { - "line": 356, + "line": 410, "column": 81 } } @@ -63585,15 +63585,15 @@ "updateContext": null }, "value": "const", - "start": 13663, - "end": 13668, + "start": 15651, + "end": 15656, "loc": { "start": { - "line": 357, + "line": 411, "column": 12 }, "end": { - "line": 357, + "line": 411, "column": 17 } } @@ -63611,15 +63611,15 @@ "binop": null }, "value": "colors", - "start": 13669, - "end": 13675, + "start": 15657, + "end": 15663, "loc": { "start": { - "line": 357, + "line": 411, "column": 18 }, "end": { - "line": 357, + "line": 411, "column": 24 } } @@ -63638,15 +63638,15 @@ "updateContext": null }, "value": "=", - "start": 13676, - "end": 13677, + "start": 15664, + "end": 15665, "loc": { "start": { - "line": 357, + "line": 411, "column": 25 }, "end": { - "line": 357, + "line": 411, "column": 26 } } @@ -63664,15 +63664,15 @@ "binop": null }, "value": "attributesColor", - "start": 13678, - "end": 13693, + "start": 15666, + "end": 15681, "loc": { "start": { - "line": 357, + "line": 411, "column": 27 }, "end": { - "line": 357, + "line": 411, "column": 42 } } @@ -63690,15 +63690,15 @@ "binop": null, "updateContext": null }, - "start": 13693, - "end": 13694, + "start": 15681, + "end": 15682, "loc": { "start": { - "line": 357, + "line": 411, "column": 42 }, "end": { - "line": 357, + "line": 411, "column": 43 } } @@ -63716,15 +63716,15 @@ "binop": null }, "value": "value", - "start": 13694, - "end": 13699, + "start": 15682, + "end": 15687, "loc": { "start": { - "line": 357, + "line": 411, "column": 43 }, "end": { - "line": 357, + "line": 411, "column": 48 } } @@ -63742,15 +63742,15 @@ "binop": null, "updateContext": null }, - "start": 13699, - "end": 13700, + "start": 15687, + "end": 15688, "loc": { "start": { - "line": 357, + "line": 411, "column": 48 }, "end": { - "line": 357, + "line": 411, "column": 49 } } @@ -63770,15 +63770,15 @@ "updateContext": null }, "value": "const", - "start": 13713, - "end": 13718, + "start": 15701, + "end": 15706, "loc": { "start": { - "line": 358, + "line": 412, "column": 12 }, "end": { - "line": 358, + "line": 412, "column": 17 } } @@ -63796,15 +63796,15 @@ "binop": null }, "value": "colorSize", - "start": 13719, - "end": 13728, + "start": 15707, + "end": 15716, "loc": { "start": { - "line": 358, + "line": 412, "column": 18 }, "end": { - "line": 358, + "line": 412, "column": 27 } } @@ -63823,15 +63823,15 @@ "updateContext": null }, "value": "=", - "start": 13729, - "end": 13730, + "start": 15717, + "end": 15718, "loc": { "start": { - "line": 358, + "line": 412, "column": 28 }, "end": { - "line": 358, + "line": 412, "column": 29 } } @@ -63849,15 +63849,15 @@ "binop": null }, "value": "attributesColor", - "start": 13731, - "end": 13746, + "start": 15719, + "end": 15734, "loc": { "start": { - "line": 358, + "line": 412, "column": 30 }, "end": { - "line": 358, + "line": 412, "column": 45 } } @@ -63875,15 +63875,15 @@ "binop": null, "updateContext": null }, - "start": 13746, - "end": 13747, + "start": 15734, + "end": 15735, "loc": { "start": { - "line": 358, + "line": 412, "column": 45 }, "end": { - "line": 358, + "line": 412, "column": 46 } } @@ -63901,15 +63901,15 @@ "binop": null }, "value": "size", - "start": 13747, - "end": 13751, + "start": 15735, + "end": 15739, "loc": { "start": { - "line": 358, + "line": 412, "column": 46 }, "end": { - "line": 358, + "line": 412, "column": 50 } } @@ -63927,15 +63927,15 @@ "binop": null, "updateContext": null }, - "start": 13751, - "end": 13752, + "start": 15739, + "end": 15740, "loc": { "start": { - "line": 358, + "line": 412, "column": 50 }, "end": { - "line": 358, + "line": 412, "column": 51 } } @@ -63955,15 +63955,15 @@ "updateContext": null }, "value": "const", - "start": 13765, - "end": 13770, + "start": 15753, + "end": 15758, "loc": { "start": { - "line": 359, + "line": 413, "column": 12 }, "end": { - "line": 359, + "line": 413, "column": 17 } } @@ -63981,15 +63981,15 @@ "binop": null }, "value": "intensities", - "start": 13771, - "end": 13782, + "start": 15759, + "end": 15770, "loc": { "start": { - "line": 359, + "line": 413, "column": 18 }, "end": { - "line": 359, + "line": 413, "column": 29 } } @@ -64008,15 +64008,15 @@ "updateContext": null }, "value": "=", - "start": 13783, - "end": 13784, + "start": 15771, + "end": 15772, "loc": { "start": { - "line": 359, + "line": 413, "column": 30 }, "end": { - "line": 359, + "line": 413, "column": 31 } } @@ -64034,15 +64034,15 @@ "binop": null }, "value": "attributesIntensity", - "start": 13785, - "end": 13804, + "start": 15773, + "end": 15792, "loc": { "start": { - "line": 359, + "line": 413, "column": 32 }, "end": { - "line": 359, + "line": 413, "column": 51 } } @@ -64060,15 +64060,15 @@ "binop": null, "updateContext": null }, - "start": 13804, - "end": 13805, + "start": 15792, + "end": 15793, "loc": { "start": { - "line": 359, + "line": 413, "column": 51 }, "end": { - "line": 359, + "line": 413, "column": 52 } } @@ -64086,15 +64086,15 @@ "binop": null }, "value": "value", - "start": 13805, - "end": 13810, + "start": 15793, + "end": 15798, "loc": { "start": { - "line": 359, + "line": 413, "column": 52 }, "end": { - "line": 359, + "line": 413, "column": 57 } } @@ -64112,15 +64112,15 @@ "binop": null, "updateContext": null }, - "start": 13810, - "end": 13811, + "start": 15798, + "end": 15799, "loc": { "start": { - "line": 359, + "line": 413, "column": 57 }, "end": { - "line": 359, + "line": 413, "column": 58 } } @@ -64140,15 +64140,15 @@ "updateContext": null }, "value": "const", - "start": 13824, - "end": 13829, + "start": 15812, + "end": 15817, "loc": { "start": { - "line": 360, + "line": 414, "column": 12 }, "end": { - "line": 360, + "line": 414, "column": 17 } } @@ -64166,15 +64166,15 @@ "binop": null }, "value": "colorsCompressedSize", - "start": 13830, - "end": 13850, + "start": 15818, + "end": 15838, "loc": { "start": { - "line": 360, + "line": 414, "column": 18 }, "end": { - "line": 360, + "line": 414, "column": 38 } } @@ -64193,15 +64193,15 @@ "updateContext": null }, "value": "=", - "start": 13851, - "end": 13852, + "start": 15839, + "end": 15840, "loc": { "start": { - "line": 360, + "line": 414, "column": 39 }, "end": { - "line": 360, + "line": 414, "column": 40 } } @@ -64219,15 +64219,15 @@ "binop": null }, "value": "intensities", - "start": 13853, - "end": 13864, + "start": 15841, + "end": 15852, "loc": { "start": { - "line": 360, + "line": 414, "column": 41 }, "end": { - "line": 360, + "line": 414, "column": 52 } } @@ -64245,15 +64245,15 @@ "binop": null, "updateContext": null }, - "start": 13864, - "end": 13865, + "start": 15852, + "end": 15853, "loc": { "start": { - "line": 360, + "line": 414, "column": 52 }, "end": { - "line": 360, + "line": 414, "column": 53 } } @@ -64271,15 +64271,15 @@ "binop": null }, "value": "length", - "start": 13865, - "end": 13871, + "start": 15853, + "end": 15859, "loc": { "start": { - "line": 360, + "line": 414, "column": 53 }, "end": { - "line": 360, + "line": 414, "column": 59 } } @@ -64298,15 +64298,15 @@ "updateContext": null }, "value": "*", - "start": 13872, - "end": 13873, + "start": 15860, + "end": 15861, "loc": { "start": { - "line": 360, + "line": 414, "column": 60 }, "end": { - "line": 360, + "line": 414, "column": 61 } } @@ -64325,15 +64325,15 @@ "updateContext": null }, "value": 4, - "start": 13874, - "end": 13875, + "start": 15862, + "end": 15863, "loc": { "start": { - "line": 360, + "line": 414, "column": 62 }, "end": { - "line": 360, + "line": 414, "column": 63 } } @@ -64351,15 +64351,15 @@ "binop": null, "updateContext": null }, - "start": 13875, - "end": 13876, + "start": 15863, + "end": 15864, "loc": { "start": { - "line": 360, + "line": 414, "column": 63 }, "end": { - "line": 360, + "line": 414, "column": 64 } } @@ -64379,15 +64379,15 @@ "updateContext": null }, "value": "const", - "start": 13889, - "end": 13894, + "start": 15877, + "end": 15882, "loc": { "start": { - "line": 361, + "line": 415, "column": 12 }, "end": { - "line": 361, + "line": 415, "column": 17 } } @@ -64405,15 +64405,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 13895, - "end": 13911, + "start": 15883, + "end": 15899, "loc": { "start": { - "line": 361, + "line": 415, "column": 18 }, "end": { - "line": 361, + "line": 415, "column": 34 } } @@ -64432,15 +64432,15 @@ "updateContext": null }, "value": "=", - "start": 13912, - "end": 13913, + "start": 15900, + "end": 15901, "loc": { "start": { - "line": 361, + "line": 415, "column": 35 }, "end": { - "line": 361, + "line": 415, "column": 36 } } @@ -64460,15 +64460,15 @@ "updateContext": null }, "value": "new", - "start": 13914, - "end": 13917, + "start": 15902, + "end": 15905, "loc": { "start": { - "line": 361, + "line": 415, "column": 37 }, "end": { - "line": 361, + "line": 415, "column": 40 } } @@ -64486,15 +64486,15 @@ "binop": null }, "value": "Uint8Array", - "start": 13918, - "end": 13928, + "start": 15906, + "end": 15916, "loc": { "start": { - "line": 361, + "line": 415, "column": 41 }, "end": { - "line": 361, + "line": 415, "column": 51 } } @@ -64511,15 +64511,15 @@ "postfix": false, "binop": null }, - "start": 13928, - "end": 13929, + "start": 15916, + "end": 15917, "loc": { "start": { - "line": 361, + "line": 415, "column": 51 }, "end": { - "line": 361, + "line": 415, "column": 52 } } @@ -64537,15 +64537,15 @@ "binop": null }, "value": "colorsCompressedSize", - "start": 13929, - "end": 13949, + "start": 15917, + "end": 15937, "loc": { "start": { - "line": 361, + "line": 415, "column": 52 }, "end": { - "line": 361, + "line": 415, "column": 72 } } @@ -64562,15 +64562,15 @@ "postfix": false, "binop": null }, - "start": 13949, - "end": 13950, + "start": 15937, + "end": 15938, "loc": { "start": { - "line": 361, + "line": 415, "column": 72 }, "end": { - "line": 361, + "line": 415, "column": 73 } } @@ -64588,15 +64588,15 @@ "binop": null, "updateContext": null }, - "start": 13950, - "end": 13951, + "start": 15938, + "end": 15939, "loc": { "start": { - "line": 361, + "line": 415, "column": 73 }, "end": { - "line": 361, + "line": 415, "column": 74 } } @@ -64616,15 +64616,15 @@ "updateContext": null }, "value": "for", - "start": 13964, - "end": 13967, + "start": 15952, + "end": 15955, "loc": { "start": { - "line": 362, + "line": 416, "column": 12 }, "end": { - "line": 362, + "line": 416, "column": 15 } } @@ -64641,15 +64641,15 @@ "postfix": false, "binop": null }, - "start": 13968, - "end": 13969, + "start": 15956, + "end": 15957, "loc": { "start": { - "line": 362, + "line": 416, "column": 16 }, "end": { - "line": 362, + "line": 416, "column": 17 } } @@ -64669,15 +64669,15 @@ "updateContext": null }, "value": "let", - "start": 13969, - "end": 13972, + "start": 15957, + "end": 15960, "loc": { "start": { - "line": 362, + "line": 416, "column": 17 }, "end": { - "line": 362, + "line": 416, "column": 20 } } @@ -64695,15 +64695,15 @@ "binop": null }, "value": "i", - "start": 13973, - "end": 13974, + "start": 15961, + "end": 15962, "loc": { "start": { - "line": 362, + "line": 416, "column": 21 }, "end": { - "line": 362, + "line": 416, "column": 22 } } @@ -64722,15 +64722,15 @@ "updateContext": null }, "value": "=", - "start": 13975, - "end": 13976, + "start": 15963, + "end": 15964, "loc": { "start": { - "line": 362, + "line": 416, "column": 23 }, "end": { - "line": 362, + "line": 416, "column": 24 } } @@ -64749,15 +64749,15 @@ "updateContext": null }, "value": 0, - "start": 13977, - "end": 13978, + "start": 15965, + "end": 15966, "loc": { "start": { - "line": 362, + "line": 416, "column": 25 }, "end": { - "line": 362, + "line": 416, "column": 26 } } @@ -64775,15 +64775,15 @@ "binop": null, "updateContext": null }, - "start": 13978, - "end": 13979, + "start": 15966, + "end": 15967, "loc": { "start": { - "line": 362, + "line": 416, "column": 26 }, "end": { - "line": 362, + "line": 416, "column": 27 } } @@ -64801,15 +64801,15 @@ "binop": null }, "value": "j", - "start": 13980, - "end": 13981, + "start": 15968, + "end": 15969, "loc": { "start": { - "line": 362, + "line": 416, "column": 28 }, "end": { - "line": 362, + "line": 416, "column": 29 } } @@ -64828,15 +64828,15 @@ "updateContext": null }, "value": "=", - "start": 13982, - "end": 13983, + "start": 15970, + "end": 15971, "loc": { "start": { - "line": 362, + "line": 416, "column": 30 }, "end": { - "line": 362, + "line": 416, "column": 31 } } @@ -64855,15 +64855,15 @@ "updateContext": null }, "value": 0, - "start": 13984, - "end": 13985, + "start": 15972, + "end": 15973, "loc": { "start": { - "line": 362, + "line": 416, "column": 32 }, "end": { - "line": 362, + "line": 416, "column": 33 } } @@ -64881,15 +64881,15 @@ "binop": null, "updateContext": null }, - "start": 13985, - "end": 13986, + "start": 15973, + "end": 15974, "loc": { "start": { - "line": 362, + "line": 416, "column": 33 }, "end": { - "line": 362, + "line": 416, "column": 34 } } @@ -64907,15 +64907,15 @@ "binop": null }, "value": "k", - "start": 13987, - "end": 13988, + "start": 15975, + "end": 15976, "loc": { "start": { - "line": 362, + "line": 416, "column": 35 }, "end": { - "line": 362, + "line": 416, "column": 36 } } @@ -64934,15 +64934,15 @@ "updateContext": null }, "value": "=", - "start": 13989, - "end": 13990, + "start": 15977, + "end": 15978, "loc": { "start": { - "line": 362, + "line": 416, "column": 37 }, "end": { - "line": 362, + "line": 416, "column": 38 } } @@ -64961,15 +64961,15 @@ "updateContext": null }, "value": 0, - "start": 13991, - "end": 13992, + "start": 15979, + "end": 15980, "loc": { "start": { - "line": 362, + "line": 416, "column": 39 }, "end": { - "line": 362, + "line": 416, "column": 40 } } @@ -64987,15 +64987,15 @@ "binop": null, "updateContext": null }, - "start": 13992, - "end": 13993, + "start": 15980, + "end": 15981, "loc": { "start": { - "line": 362, + "line": 416, "column": 40 }, "end": { - "line": 362, + "line": 416, "column": 41 } } @@ -65013,15 +65013,15 @@ "binop": null }, "value": "len", - "start": 13994, - "end": 13997, + "start": 15982, + "end": 15985, "loc": { "start": { - "line": 362, + "line": 416, "column": 42 }, "end": { - "line": 362, + "line": 416, "column": 45 } } @@ -65040,15 +65040,15 @@ "updateContext": null }, "value": "=", - "start": 13998, - "end": 13999, + "start": 15986, + "end": 15987, "loc": { "start": { - "line": 362, + "line": 416, "column": 46 }, "end": { - "line": 362, + "line": 416, "column": 47 } } @@ -65066,15 +65066,15 @@ "binop": null }, "value": "intensities", - "start": 14000, - "end": 14011, + "start": 15988, + "end": 15999, "loc": { "start": { - "line": 362, + "line": 416, "column": 48 }, "end": { - "line": 362, + "line": 416, "column": 59 } } @@ -65092,15 +65092,15 @@ "binop": null, "updateContext": null }, - "start": 14011, - "end": 14012, + "start": 15999, + "end": 16000, "loc": { "start": { - "line": 362, + "line": 416, "column": 59 }, "end": { - "line": 362, + "line": 416, "column": 60 } } @@ -65118,15 +65118,15 @@ "binop": null }, "value": "length", - "start": 14012, - "end": 14018, + "start": 16000, + "end": 16006, "loc": { "start": { - "line": 362, + "line": 416, "column": 60 }, "end": { - "line": 362, + "line": 416, "column": 66 } } @@ -65144,15 +65144,15 @@ "binop": null, "updateContext": null }, - "start": 14018, - "end": 14019, + "start": 16006, + "end": 16007, "loc": { "start": { - "line": 362, + "line": 416, "column": 66 }, "end": { - "line": 362, + "line": 416, "column": 67 } } @@ -65170,15 +65170,15 @@ "binop": null }, "value": "i", - "start": 14020, - "end": 14021, + "start": 16008, + "end": 16009, "loc": { "start": { - "line": 362, + "line": 416, "column": 68 }, "end": { - "line": 362, + "line": 416, "column": 69 } } @@ -65197,15 +65197,15 @@ "updateContext": null }, "value": "<", - "start": 14022, - "end": 14023, + "start": 16010, + "end": 16011, "loc": { "start": { - "line": 362, + "line": 416, "column": 70 }, "end": { - "line": 362, + "line": 416, "column": 71 } } @@ -65223,15 +65223,15 @@ "binop": null }, "value": "len", - "start": 14024, - "end": 14027, + "start": 16012, + "end": 16015, "loc": { "start": { - "line": 362, + "line": 416, "column": 72 }, "end": { - "line": 362, + "line": 416, "column": 75 } } @@ -65249,15 +65249,15 @@ "binop": null, "updateContext": null }, - "start": 14027, - "end": 14028, + "start": 16015, + "end": 16016, "loc": { "start": { - "line": 362, + "line": 416, "column": 75 }, "end": { - "line": 362, + "line": 416, "column": 76 } } @@ -65275,15 +65275,15 @@ "binop": null }, "value": "i", - "start": 14029, - "end": 14030, + "start": 16017, + "end": 16018, "loc": { "start": { - "line": 362, + "line": 416, "column": 77 }, "end": { - "line": 362, + "line": 416, "column": 78 } } @@ -65301,15 +65301,15 @@ "binop": null }, "value": "++", - "start": 14030, - "end": 14032, + "start": 16018, + "end": 16020, "loc": { "start": { - "line": 362, + "line": 416, "column": 78 }, "end": { - "line": 362, + "line": 416, "column": 80 } } @@ -65327,15 +65327,15 @@ "binop": null, "updateContext": null }, - "start": 14032, - "end": 14033, + "start": 16020, + "end": 16021, "loc": { "start": { - "line": 362, + "line": 416, "column": 80 }, "end": { - "line": 362, + "line": 416, "column": 81 } } @@ -65353,15 +65353,15 @@ "binop": null }, "value": "k", - "start": 14034, - "end": 14035, + "start": 16022, + "end": 16023, "loc": { "start": { - "line": 362, + "line": 416, "column": 82 }, "end": { - "line": 362, + "line": 416, "column": 83 } } @@ -65380,15 +65380,15 @@ "updateContext": null }, "value": "+=", - "start": 14036, - "end": 14038, + "start": 16024, + "end": 16026, "loc": { "start": { - "line": 362, + "line": 416, "column": 84 }, "end": { - "line": 362, + "line": 416, "column": 86 } } @@ -65406,15 +65406,15 @@ "binop": null }, "value": "colorSize", - "start": 14039, - "end": 14048, + "start": 16027, + "end": 16036, "loc": { "start": { - "line": 362, + "line": 416, "column": 87 }, "end": { - "line": 362, + "line": 416, "column": 96 } } @@ -65432,15 +65432,15 @@ "binop": null, "updateContext": null }, - "start": 14048, - "end": 14049, + "start": 16036, + "end": 16037, "loc": { "start": { - "line": 362, + "line": 416, "column": 96 }, "end": { - "line": 362, + "line": 416, "column": 97 } } @@ -65458,15 +65458,15 @@ "binop": null }, "value": "j", - "start": 14050, - "end": 14051, + "start": 16038, + "end": 16039, "loc": { "start": { - "line": 362, + "line": 416, "column": 98 }, "end": { - "line": 362, + "line": 416, "column": 99 } } @@ -65485,15 +65485,15 @@ "updateContext": null }, "value": "+=", - "start": 14052, - "end": 14054, + "start": 16040, + "end": 16042, "loc": { "start": { - "line": 362, + "line": 416, "column": 100 }, "end": { - "line": 362, + "line": 416, "column": 102 } } @@ -65512,15 +65512,15 @@ "updateContext": null }, "value": 4, - "start": 14055, - "end": 14056, + "start": 16043, + "end": 16044, "loc": { "start": { - "line": 362, + "line": 416, "column": 103 }, "end": { - "line": 362, + "line": 416, "column": 104 } } @@ -65537,15 +65537,15 @@ "postfix": false, "binop": null }, - "start": 14056, - "end": 14057, + "start": 16044, + "end": 16045, "loc": { "start": { - "line": 362, + "line": 416, "column": 104 }, "end": { - "line": 362, + "line": 416, "column": 105 } } @@ -65562,15 +65562,15 @@ "postfix": false, "binop": null }, - "start": 14058, - "end": 14059, + "start": 16046, + "end": 16047, "loc": { "start": { - "line": 362, + "line": 416, "column": 106 }, "end": { - "line": 362, + "line": 416, "column": 107 } } @@ -65588,15 +65588,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14076, - "end": 14092, + "start": 16064, + "end": 16080, "loc": { "start": { - "line": 363, + "line": 417, "column": 16 }, "end": { - "line": 363, + "line": 417, "column": 32 } } @@ -65614,15 +65614,15 @@ "binop": null, "updateContext": null }, - "start": 14092, - "end": 14093, + "start": 16080, + "end": 16081, "loc": { "start": { - "line": 363, + "line": 417, "column": 32 }, "end": { - "line": 363, + "line": 417, "column": 33 } } @@ -65640,15 +65640,15 @@ "binop": null }, "value": "j", - "start": 14093, - "end": 14094, + "start": 16081, + "end": 16082, "loc": { "start": { - "line": 363, + "line": 417, "column": 33 }, "end": { - "line": 363, + "line": 417, "column": 34 } } @@ -65667,15 +65667,15 @@ "updateContext": null }, "value": "+", - "start": 14095, - "end": 14096, + "start": 16083, + "end": 16084, "loc": { "start": { - "line": 363, + "line": 417, "column": 35 }, "end": { - "line": 363, + "line": 417, "column": 36 } } @@ -65694,15 +65694,15 @@ "updateContext": null }, "value": 0, - "start": 14097, - "end": 14098, + "start": 16085, + "end": 16086, "loc": { "start": { - "line": 363, + "line": 417, "column": 37 }, "end": { - "line": 363, + "line": 417, "column": 38 } } @@ -65720,15 +65720,15 @@ "binop": null, "updateContext": null }, - "start": 14098, - "end": 14099, + "start": 16086, + "end": 16087, "loc": { "start": { - "line": 363, + "line": 417, "column": 38 }, "end": { - "line": 363, + "line": 417, "column": 39 } } @@ -65747,15 +65747,15 @@ "updateContext": null }, "value": "=", - "start": 14100, - "end": 14101, + "start": 16088, + "end": 16089, "loc": { "start": { - "line": 363, + "line": 417, "column": 40 }, "end": { - "line": 363, + "line": 417, "column": 41 } } @@ -65773,15 +65773,15 @@ "binop": null }, "value": "colors", - "start": 14102, - "end": 14108, + "start": 16090, + "end": 16096, "loc": { "start": { - "line": 363, + "line": 417, "column": 42 }, "end": { - "line": 363, + "line": 417, "column": 48 } } @@ -65799,15 +65799,15 @@ "binop": null, "updateContext": null }, - "start": 14108, - "end": 14109, + "start": 16096, + "end": 16097, "loc": { "start": { - "line": 363, + "line": 417, "column": 48 }, "end": { - "line": 363, + "line": 417, "column": 49 } } @@ -65825,15 +65825,15 @@ "binop": null }, "value": "k", - "start": 14109, - "end": 14110, + "start": 16097, + "end": 16098, "loc": { "start": { - "line": 363, + "line": 417, "column": 49 }, "end": { - "line": 363, + "line": 417, "column": 50 } } @@ -65852,15 +65852,15 @@ "updateContext": null }, "value": "+", - "start": 14111, - "end": 14112, + "start": 16099, + "end": 16100, "loc": { "start": { - "line": 363, + "line": 417, "column": 51 }, "end": { - "line": 363, + "line": 417, "column": 52 } } @@ -65879,15 +65879,15 @@ "updateContext": null }, "value": 0, - "start": 14113, - "end": 14114, + "start": 16101, + "end": 16102, "loc": { "start": { - "line": 363, + "line": 417, "column": 53 }, "end": { - "line": 363, + "line": 417, "column": 54 } } @@ -65905,15 +65905,15 @@ "binop": null, "updateContext": null }, - "start": 14114, - "end": 14115, + "start": 16102, + "end": 16103, "loc": { "start": { - "line": 363, + "line": 417, "column": 54 }, "end": { - "line": 363, + "line": 417, "column": 55 } } @@ -65931,15 +65931,15 @@ "binop": null, "updateContext": null }, - "start": 14115, - "end": 14116, + "start": 16103, + "end": 16104, "loc": { "start": { - "line": 363, + "line": 417, "column": 55 }, "end": { - "line": 363, + "line": 417, "column": 56 } } @@ -65957,15 +65957,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14133, - "end": 14149, + "start": 16121, + "end": 16137, "loc": { "start": { - "line": 364, + "line": 418, "column": 16 }, "end": { - "line": 364, + "line": 418, "column": 32 } } @@ -65983,15 +65983,15 @@ "binop": null, "updateContext": null }, - "start": 14149, - "end": 14150, + "start": 16137, + "end": 16138, "loc": { "start": { - "line": 364, + "line": 418, "column": 32 }, "end": { - "line": 364, + "line": 418, "column": 33 } } @@ -66009,15 +66009,15 @@ "binop": null }, "value": "j", - "start": 14150, - "end": 14151, + "start": 16138, + "end": 16139, "loc": { "start": { - "line": 364, + "line": 418, "column": 33 }, "end": { - "line": 364, + "line": 418, "column": 34 } } @@ -66036,15 +66036,15 @@ "updateContext": null }, "value": "+", - "start": 14152, - "end": 14153, + "start": 16140, + "end": 16141, "loc": { "start": { - "line": 364, + "line": 418, "column": 35 }, "end": { - "line": 364, + "line": 418, "column": 36 } } @@ -66063,15 +66063,15 @@ "updateContext": null }, "value": 1, - "start": 14154, - "end": 14155, + "start": 16142, + "end": 16143, "loc": { "start": { - "line": 364, + "line": 418, "column": 37 }, "end": { - "line": 364, + "line": 418, "column": 38 } } @@ -66089,15 +66089,15 @@ "binop": null, "updateContext": null }, - "start": 14155, - "end": 14156, + "start": 16143, + "end": 16144, "loc": { "start": { - "line": 364, + "line": 418, "column": 38 }, "end": { - "line": 364, + "line": 418, "column": 39 } } @@ -66116,15 +66116,15 @@ "updateContext": null }, "value": "=", - "start": 14157, - "end": 14158, + "start": 16145, + "end": 16146, "loc": { "start": { - "line": 364, + "line": 418, "column": 40 }, "end": { - "line": 364, + "line": 418, "column": 41 } } @@ -66142,15 +66142,15 @@ "binop": null }, "value": "colors", - "start": 14159, - "end": 14165, + "start": 16147, + "end": 16153, "loc": { "start": { - "line": 364, + "line": 418, "column": 42 }, "end": { - "line": 364, + "line": 418, "column": 48 } } @@ -66168,15 +66168,15 @@ "binop": null, "updateContext": null }, - "start": 14165, - "end": 14166, + "start": 16153, + "end": 16154, "loc": { "start": { - "line": 364, + "line": 418, "column": 48 }, "end": { - "line": 364, + "line": 418, "column": 49 } } @@ -66194,15 +66194,15 @@ "binop": null }, "value": "k", - "start": 14166, - "end": 14167, + "start": 16154, + "end": 16155, "loc": { "start": { - "line": 364, + "line": 418, "column": 49 }, "end": { - "line": 364, + "line": 418, "column": 50 } } @@ -66221,15 +66221,15 @@ "updateContext": null }, "value": "+", - "start": 14168, - "end": 14169, + "start": 16156, + "end": 16157, "loc": { "start": { - "line": 364, + "line": 418, "column": 51 }, "end": { - "line": 364, + "line": 418, "column": 52 } } @@ -66248,15 +66248,15 @@ "updateContext": null }, "value": 1, - "start": 14170, - "end": 14171, + "start": 16158, + "end": 16159, "loc": { "start": { - "line": 364, + "line": 418, "column": 53 }, "end": { - "line": 364, + "line": 418, "column": 54 } } @@ -66274,15 +66274,15 @@ "binop": null, "updateContext": null }, - "start": 14171, - "end": 14172, + "start": 16159, + "end": 16160, "loc": { "start": { - "line": 364, + "line": 418, "column": 54 }, "end": { - "line": 364, + "line": 418, "column": 55 } } @@ -66300,15 +66300,15 @@ "binop": null, "updateContext": null }, - "start": 14172, - "end": 14173, + "start": 16160, + "end": 16161, "loc": { "start": { - "line": 364, + "line": 418, "column": 55 }, "end": { - "line": 364, + "line": 418, "column": 56 } } @@ -66326,15 +66326,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14190, - "end": 14206, + "start": 16178, + "end": 16194, "loc": { "start": { - "line": 365, + "line": 419, "column": 16 }, "end": { - "line": 365, + "line": 419, "column": 32 } } @@ -66352,15 +66352,15 @@ "binop": null, "updateContext": null }, - "start": 14206, - "end": 14207, + "start": 16194, + "end": 16195, "loc": { "start": { - "line": 365, + "line": 419, "column": 32 }, "end": { - "line": 365, + "line": 419, "column": 33 } } @@ -66378,15 +66378,15 @@ "binop": null }, "value": "j", - "start": 14207, - "end": 14208, + "start": 16195, + "end": 16196, "loc": { "start": { - "line": 365, + "line": 419, "column": 33 }, "end": { - "line": 365, + "line": 419, "column": 34 } } @@ -66405,15 +66405,15 @@ "updateContext": null }, "value": "+", - "start": 14209, - "end": 14210, + "start": 16197, + "end": 16198, "loc": { "start": { - "line": 365, + "line": 419, "column": 35 }, "end": { - "line": 365, + "line": 419, "column": 36 } } @@ -66432,15 +66432,15 @@ "updateContext": null }, "value": 2, - "start": 14211, - "end": 14212, + "start": 16199, + "end": 16200, "loc": { "start": { - "line": 365, + "line": 419, "column": 37 }, "end": { - "line": 365, + "line": 419, "column": 38 } } @@ -66458,15 +66458,15 @@ "binop": null, "updateContext": null }, - "start": 14212, - "end": 14213, + "start": 16200, + "end": 16201, "loc": { "start": { - "line": 365, + "line": 419, "column": 38 }, "end": { - "line": 365, + "line": 419, "column": 39 } } @@ -66485,15 +66485,15 @@ "updateContext": null }, "value": "=", - "start": 14214, - "end": 14215, + "start": 16202, + "end": 16203, "loc": { "start": { - "line": 365, + "line": 419, "column": 40 }, "end": { - "line": 365, + "line": 419, "column": 41 } } @@ -66511,15 +66511,15 @@ "binop": null }, "value": "colors", - "start": 14216, - "end": 14222, + "start": 16204, + "end": 16210, "loc": { "start": { - "line": 365, + "line": 419, "column": 42 }, "end": { - "line": 365, + "line": 419, "column": 48 } } @@ -66537,15 +66537,15 @@ "binop": null, "updateContext": null }, - "start": 14222, - "end": 14223, + "start": 16210, + "end": 16211, "loc": { "start": { - "line": 365, + "line": 419, "column": 48 }, "end": { - "line": 365, + "line": 419, "column": 49 } } @@ -66563,15 +66563,15 @@ "binop": null }, "value": "k", - "start": 14223, - "end": 14224, + "start": 16211, + "end": 16212, "loc": { "start": { - "line": 365, + "line": 419, "column": 49 }, "end": { - "line": 365, + "line": 419, "column": 50 } } @@ -66590,15 +66590,15 @@ "updateContext": null }, "value": "+", - "start": 14225, - "end": 14226, + "start": 16213, + "end": 16214, "loc": { "start": { - "line": 365, + "line": 419, "column": 51 }, "end": { - "line": 365, + "line": 419, "column": 52 } } @@ -66617,15 +66617,15 @@ "updateContext": null }, "value": 2, - "start": 14227, - "end": 14228, + "start": 16215, + "end": 16216, "loc": { "start": { - "line": 365, + "line": 419, "column": 53 }, "end": { - "line": 365, + "line": 419, "column": 54 } } @@ -66643,15 +66643,15 @@ "binop": null, "updateContext": null }, - "start": 14228, - "end": 14229, + "start": 16216, + "end": 16217, "loc": { "start": { - "line": 365, + "line": 419, "column": 54 }, "end": { - "line": 365, + "line": 419, "column": 55 } } @@ -66669,15 +66669,15 @@ "binop": null, "updateContext": null }, - "start": 14229, - "end": 14230, + "start": 16217, + "end": 16218, "loc": { "start": { - "line": 365, + "line": 419, "column": 55 }, "end": { - "line": 365, + "line": 419, "column": 56 } } @@ -66695,15 +66695,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14247, - "end": 14263, + "start": 16235, + "end": 16251, "loc": { "start": { - "line": 366, + "line": 420, "column": 16 }, "end": { - "line": 366, + "line": 420, "column": 32 } } @@ -66721,15 +66721,15 @@ "binop": null, "updateContext": null }, - "start": 14263, - "end": 14264, + "start": 16251, + "end": 16252, "loc": { "start": { - "line": 366, + "line": 420, "column": 32 }, "end": { - "line": 366, + "line": 420, "column": 33 } } @@ -66747,15 +66747,15 @@ "binop": null }, "value": "j", - "start": 14264, - "end": 14265, + "start": 16252, + "end": 16253, "loc": { "start": { - "line": 366, + "line": 420, "column": 33 }, "end": { - "line": 366, + "line": 420, "column": 34 } } @@ -66774,15 +66774,15 @@ "updateContext": null }, "value": "+", - "start": 14266, - "end": 14267, + "start": 16254, + "end": 16255, "loc": { "start": { - "line": 366, + "line": 420, "column": 35 }, "end": { - "line": 366, + "line": 420, "column": 36 } } @@ -66801,15 +66801,15 @@ "updateContext": null }, "value": 3, - "start": 14268, - "end": 14269, + "start": 16256, + "end": 16257, "loc": { "start": { - "line": 366, + "line": 420, "column": 37 }, "end": { - "line": 366, + "line": 420, "column": 38 } } @@ -66827,15 +66827,15 @@ "binop": null, "updateContext": null }, - "start": 14269, - "end": 14270, + "start": 16257, + "end": 16258, "loc": { "start": { - "line": 366, + "line": 420, "column": 38 }, "end": { - "line": 366, + "line": 420, "column": 39 } } @@ -66854,15 +66854,15 @@ "updateContext": null }, "value": "=", - "start": 14271, - "end": 14272, + "start": 16259, + "end": 16260, "loc": { "start": { - "line": 366, + "line": 420, "column": 40 }, "end": { - "line": 366, + "line": 420, "column": 41 } } @@ -66880,15 +66880,15 @@ "binop": null }, "value": "Math", - "start": 14273, - "end": 14277, + "start": 16261, + "end": 16265, "loc": { "start": { - "line": 366, + "line": 420, "column": 42 }, "end": { - "line": 366, + "line": 420, "column": 46 } } @@ -66906,15 +66906,15 @@ "binop": null, "updateContext": null }, - "start": 14277, - "end": 14278, + "start": 16265, + "end": 16266, "loc": { "start": { - "line": 366, + "line": 420, "column": 46 }, "end": { - "line": 366, + "line": 420, "column": 47 } } @@ -66932,15 +66932,15 @@ "binop": null }, "value": "round", - "start": 14278, - "end": 14283, + "start": 16266, + "end": 16271, "loc": { "start": { - "line": 366, + "line": 420, "column": 47 }, "end": { - "line": 366, + "line": 420, "column": 52 } } @@ -66957,15 +66957,15 @@ "postfix": false, "binop": null }, - "start": 14283, - "end": 14284, + "start": 16271, + "end": 16272, "loc": { "start": { - "line": 366, + "line": 420, "column": 52 }, "end": { - "line": 366, + "line": 420, "column": 53 } } @@ -66982,15 +66982,15 @@ "postfix": false, "binop": null }, - "start": 14284, - "end": 14285, + "start": 16272, + "end": 16273, "loc": { "start": { - "line": 366, + "line": 420, "column": 53 }, "end": { - "line": 366, + "line": 420, "column": 54 } } @@ -67008,15 +67008,15 @@ "binop": null }, "value": "intensities", - "start": 14285, - "end": 14296, + "start": 16273, + "end": 16284, "loc": { "start": { - "line": 366, + "line": 420, "column": 54 }, "end": { - "line": 366, + "line": 420, "column": 65 } } @@ -67034,15 +67034,15 @@ "binop": null, "updateContext": null }, - "start": 14296, - "end": 14297, + "start": 16284, + "end": 16285, "loc": { "start": { - "line": 366, + "line": 420, "column": 65 }, "end": { - "line": 366, + "line": 420, "column": 66 } } @@ -67060,15 +67060,15 @@ "binop": null }, "value": "i", - "start": 14297, - "end": 14298, + "start": 16285, + "end": 16286, "loc": { "start": { - "line": 366, + "line": 420, "column": 66 }, "end": { - "line": 366, + "line": 420, "column": 67 } } @@ -67086,15 +67086,15 @@ "binop": null, "updateContext": null }, - "start": 14298, - "end": 14299, + "start": 16286, + "end": 16287, "loc": { "start": { - "line": 366, + "line": 420, "column": 67 }, "end": { - "line": 366, + "line": 420, "column": 68 } } @@ -67113,15 +67113,15 @@ "updateContext": null }, "value": "/", - "start": 14300, - "end": 14301, + "start": 16288, + "end": 16289, "loc": { "start": { - "line": 366, + "line": 420, "column": 69 }, "end": { - "line": 366, + "line": 420, "column": 70 } } @@ -67140,15 +67140,15 @@ "updateContext": null }, "value": 65536, - "start": 14302, - "end": 14307, + "start": 16290, + "end": 16295, "loc": { "start": { - "line": 366, + "line": 420, "column": 71 }, "end": { - "line": 366, + "line": 420, "column": 76 } } @@ -67165,15 +67165,15 @@ "postfix": false, "binop": null }, - "start": 14307, - "end": 14308, + "start": 16295, + "end": 16296, "loc": { "start": { - "line": 366, + "line": 420, "column": 76 }, "end": { - "line": 366, + "line": 420, "column": 77 } } @@ -67192,15 +67192,15 @@ "updateContext": null }, "value": "*", - "start": 14309, - "end": 14310, + "start": 16297, + "end": 16298, "loc": { "start": { - "line": 366, + "line": 420, "column": 78 }, "end": { - "line": 366, + "line": 420, "column": 79 } } @@ -67219,15 +67219,15 @@ "updateContext": null }, "value": 255, - "start": 14311, - "end": 14314, + "start": 16299, + "end": 16302, "loc": { "start": { - "line": 366, + "line": 420, "column": 80 }, "end": { - "line": 366, + "line": 420, "column": 83 } } @@ -67244,15 +67244,15 @@ "postfix": false, "binop": null }, - "start": 14314, - "end": 14315, + "start": 16302, + "end": 16303, "loc": { "start": { - "line": 366, + "line": 420, "column": 83 }, "end": { - "line": 366, + "line": 420, "column": 84 } } @@ -67270,15 +67270,15 @@ "binop": null, "updateContext": null }, - "start": 14315, - "end": 14316, + "start": 16303, + "end": 16304, "loc": { "start": { - "line": 366, + "line": 420, "column": 84 }, "end": { - "line": 366, + "line": 420, "column": 85 } } @@ -67295,15 +67295,15 @@ "postfix": false, "binop": null }, - "start": 14329, - "end": 14330, + "start": 16317, + "end": 16318, "loc": { "start": { - "line": 367, + "line": 421, "column": 12 }, "end": { - "line": 367, + "line": 421, "column": 13 } } @@ -67323,15 +67323,15 @@ "updateContext": null }, "value": "return", - "start": 14343, - "end": 14349, + "start": 16331, + "end": 16337, "loc": { "start": { - "line": 368, + "line": 422, "column": 12 }, "end": { - "line": 368, + "line": 422, "column": 18 } } @@ -67349,15 +67349,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14350, - "end": 14366, + "start": 16338, + "end": 16354, "loc": { "start": { - "line": 368, + "line": 422, "column": 19 }, "end": { - "line": 368, + "line": 422, "column": 35 } } @@ -67375,15 +67375,15 @@ "binop": null, "updateContext": null }, - "start": 14366, - "end": 14367, + "start": 16354, + "end": 16355, "loc": { "start": { - "line": 368, + "line": 422, "column": 35 }, "end": { - "line": 368, + "line": 422, "column": 36 } } @@ -67400,15 +67400,15 @@ "postfix": false, "binop": null }, - "start": 14376, - "end": 14377, + "start": 16364, + "end": 16365, "loc": { "start": { - "line": 369, + "line": 423, "column": 8 }, "end": { - "line": 369, + "line": 423, "column": 9 } } @@ -67427,15 +67427,15 @@ "binop": null }, "value": "function", - "start": 14387, - "end": 14395, + "start": 16375, + "end": 16383, "loc": { "start": { - "line": 371, + "line": 425, "column": 8 }, "end": { - "line": 371, + "line": 425, "column": 16 } } @@ -67453,15 +67453,15 @@ "binop": null }, "value": "readIntensities", - "start": 14396, - "end": 14411, + "start": 16384, + "end": 16399, "loc": { "start": { - "line": 371, + "line": 425, "column": 17 }, "end": { - "line": 371, + "line": 425, "column": 32 } } @@ -67478,15 +67478,15 @@ "postfix": false, "binop": null }, - "start": 14411, - "end": 14412, + "start": 16399, + "end": 16400, "loc": { "start": { - "line": 371, + "line": 425, "column": 32 }, "end": { - "line": 371, + "line": 425, "column": 33 } } @@ -67504,15 +67504,15 @@ "binop": null }, "value": "attributesIntensity", - "start": 14412, - "end": 14431, + "start": 16400, + "end": 16419, "loc": { "start": { - "line": 371, + "line": 425, "column": 33 }, "end": { - "line": 371, + "line": 425, "column": 52 } } @@ -67529,15 +67529,15 @@ "postfix": false, "binop": null }, - "start": 14431, - "end": 14432, + "start": 16419, + "end": 16420, "loc": { "start": { - "line": 371, + "line": 425, "column": 52 }, "end": { - "line": 371, + "line": 425, "column": 53 } } @@ -67554,15 +67554,15 @@ "postfix": false, "binop": null }, - "start": 14433, - "end": 14434, + "start": 16421, + "end": 16422, "loc": { "start": { - "line": 371, + "line": 425, "column": 54 }, "end": { - "line": 371, + "line": 425, "column": 55 } } @@ -67582,15 +67582,15 @@ "updateContext": null }, "value": "const", - "start": 14447, - "end": 14452, + "start": 16435, + "end": 16440, "loc": { "start": { - "line": 372, + "line": 426, "column": 12 }, "end": { - "line": 372, + "line": 426, "column": 17 } } @@ -67608,15 +67608,15 @@ "binop": null }, "value": "intensities", - "start": 14453, - "end": 14464, + "start": 16441, + "end": 16452, "loc": { "start": { - "line": 372, + "line": 426, "column": 18 }, "end": { - "line": 372, + "line": 426, "column": 29 } } @@ -67635,15 +67635,15 @@ "updateContext": null }, "value": "=", - "start": 14465, - "end": 14466, + "start": 16453, + "end": 16454, "loc": { "start": { - "line": 372, + "line": 426, "column": 30 }, "end": { - "line": 372, + "line": 426, "column": 31 } } @@ -67661,15 +67661,15 @@ "binop": null }, "value": "attributesIntensity", - "start": 14467, - "end": 14486, + "start": 16455, + "end": 16474, "loc": { "start": { - "line": 372, + "line": 426, "column": 32 }, "end": { - "line": 372, + "line": 426, "column": 51 } } @@ -67687,15 +67687,15 @@ "binop": null, "updateContext": null }, - "start": 14486, - "end": 14487, + "start": 16474, + "end": 16475, "loc": { "start": { - "line": 372, + "line": 426, "column": 51 }, "end": { - "line": 372, + "line": 426, "column": 52 } } @@ -67713,15 +67713,15 @@ "binop": null }, "value": "intensity", - "start": 14487, - "end": 14496, + "start": 16475, + "end": 16484, "loc": { "start": { - "line": 372, + "line": 426, "column": 52 }, "end": { - "line": 372, + "line": 426, "column": 61 } } @@ -67739,15 +67739,15 @@ "binop": null, "updateContext": null }, - "start": 14496, - "end": 14497, + "start": 16484, + "end": 16485, "loc": { "start": { - "line": 372, + "line": 426, "column": 61 }, "end": { - "line": 372, + "line": 426, "column": 62 } } @@ -67767,15 +67767,15 @@ "updateContext": null }, "value": "const", - "start": 14510, - "end": 14515, + "start": 16498, + "end": 16503, "loc": { "start": { - "line": 373, + "line": 427, "column": 12 }, "end": { - "line": 373, + "line": 427, "column": 17 } } @@ -67793,15 +67793,15 @@ "binop": null }, "value": "colorsCompressedSize", - "start": 14516, - "end": 14536, + "start": 16504, + "end": 16524, "loc": { "start": { - "line": 373, + "line": 427, "column": 18 }, "end": { - "line": 373, + "line": 427, "column": 38 } } @@ -67820,15 +67820,15 @@ "updateContext": null }, "value": "=", - "start": 14537, - "end": 14538, + "start": 16525, + "end": 16526, "loc": { "start": { - "line": 373, + "line": 427, "column": 39 }, "end": { - "line": 373, + "line": 427, "column": 40 } } @@ -67846,15 +67846,15 @@ "binop": null }, "value": "intensities", - "start": 14539, - "end": 14550, + "start": 16527, + "end": 16538, "loc": { "start": { - "line": 373, + "line": 427, "column": 41 }, "end": { - "line": 373, + "line": 427, "column": 52 } } @@ -67872,15 +67872,15 @@ "binop": null, "updateContext": null }, - "start": 14550, - "end": 14551, + "start": 16538, + "end": 16539, "loc": { "start": { - "line": 373, + "line": 427, "column": 52 }, "end": { - "line": 373, + "line": 427, "column": 53 } } @@ -67898,15 +67898,15 @@ "binop": null }, "value": "length", - "start": 14551, - "end": 14557, + "start": 16539, + "end": 16545, "loc": { "start": { - "line": 373, + "line": 427, "column": 53 }, "end": { - "line": 373, + "line": 427, "column": 59 } } @@ -67925,15 +67925,15 @@ "updateContext": null }, "value": "*", - "start": 14558, - "end": 14559, + "start": 16546, + "end": 16547, "loc": { "start": { - "line": 373, + "line": 427, "column": 60 }, "end": { - "line": 373, + "line": 427, "column": 61 } } @@ -67952,15 +67952,15 @@ "updateContext": null }, "value": 4, - "start": 14560, - "end": 14561, + "start": 16548, + "end": 16549, "loc": { "start": { - "line": 373, + "line": 427, "column": 62 }, "end": { - "line": 373, + "line": 427, "column": 63 } } @@ -67978,15 +67978,15 @@ "binop": null, "updateContext": null }, - "start": 14561, - "end": 14562, + "start": 16549, + "end": 16550, "loc": { "start": { - "line": 373, + "line": 427, "column": 63 }, "end": { - "line": 373, + "line": 427, "column": 64 } } @@ -68006,15 +68006,15 @@ "updateContext": null }, "value": "const", - "start": 14575, - "end": 14580, + "start": 16563, + "end": 16568, "loc": { "start": { - "line": 374, + "line": 428, "column": 12 }, "end": { - "line": 374, + "line": 428, "column": 17 } } @@ -68032,15 +68032,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14581, - "end": 14597, + "start": 16569, + "end": 16585, "loc": { "start": { - "line": 374, + "line": 428, "column": 18 }, "end": { - "line": 374, + "line": 428, "column": 34 } } @@ -68059,15 +68059,15 @@ "updateContext": null }, "value": "=", - "start": 14598, - "end": 14599, + "start": 16586, + "end": 16587, "loc": { "start": { - "line": 374, + "line": 428, "column": 35 }, "end": { - "line": 374, + "line": 428, "column": 36 } } @@ -68087,15 +68087,15 @@ "updateContext": null }, "value": "new", - "start": 14600, - "end": 14603, + "start": 16588, + "end": 16591, "loc": { "start": { - "line": 374, + "line": 428, "column": 37 }, "end": { - "line": 374, + "line": 428, "column": 40 } } @@ -68113,15 +68113,15 @@ "binop": null }, "value": "Uint8Array", - "start": 14604, - "end": 14614, + "start": 16592, + "end": 16602, "loc": { "start": { - "line": 374, + "line": 428, "column": 41 }, "end": { - "line": 374, + "line": 428, "column": 51 } } @@ -68138,15 +68138,15 @@ "postfix": false, "binop": null }, - "start": 14614, - "end": 14615, + "start": 16602, + "end": 16603, "loc": { "start": { - "line": 374, + "line": 428, "column": 51 }, "end": { - "line": 374, + "line": 428, "column": 52 } } @@ -68164,15 +68164,15 @@ "binop": null }, "value": "colorsCompressedSize", - "start": 14615, - "end": 14635, + "start": 16603, + "end": 16623, "loc": { "start": { - "line": 374, + "line": 428, "column": 52 }, "end": { - "line": 374, + "line": 428, "column": 72 } } @@ -68189,15 +68189,15 @@ "postfix": false, "binop": null }, - "start": 14635, - "end": 14636, + "start": 16623, + "end": 16624, "loc": { "start": { - "line": 374, + "line": 428, "column": 72 }, "end": { - "line": 374, + "line": 428, "column": 73 } } @@ -68215,15 +68215,15 @@ "binop": null, "updateContext": null }, - "start": 14636, - "end": 14637, + "start": 16624, + "end": 16625, "loc": { "start": { - "line": 374, + "line": 428, "column": 73 }, "end": { - "line": 374, + "line": 428, "column": 74 } } @@ -68243,15 +68243,15 @@ "updateContext": null }, "value": "for", - "start": 14650, - "end": 14653, + "start": 16638, + "end": 16641, "loc": { "start": { - "line": 375, + "line": 429, "column": 12 }, "end": { - "line": 375, + "line": 429, "column": 15 } } @@ -68268,15 +68268,15 @@ "postfix": false, "binop": null }, - "start": 14654, - "end": 14655, + "start": 16642, + "end": 16643, "loc": { "start": { - "line": 375, + "line": 429, "column": 16 }, "end": { - "line": 375, + "line": 429, "column": 17 } } @@ -68296,15 +68296,15 @@ "updateContext": null }, "value": "let", - "start": 14655, - "end": 14658, + "start": 16643, + "end": 16646, "loc": { "start": { - "line": 375, + "line": 429, "column": 17 }, "end": { - "line": 375, + "line": 429, "column": 20 } } @@ -68322,15 +68322,15 @@ "binop": null }, "value": "i", - "start": 14659, - "end": 14660, + "start": 16647, + "end": 16648, "loc": { "start": { - "line": 375, + "line": 429, "column": 21 }, "end": { - "line": 375, + "line": 429, "column": 22 } } @@ -68349,15 +68349,15 @@ "updateContext": null }, "value": "=", - "start": 14661, - "end": 14662, + "start": 16649, + "end": 16650, "loc": { "start": { - "line": 375, + "line": 429, "column": 23 }, "end": { - "line": 375, + "line": 429, "column": 24 } } @@ -68376,15 +68376,15 @@ "updateContext": null }, "value": 0, - "start": 14663, - "end": 14664, + "start": 16651, + "end": 16652, "loc": { "start": { - "line": 375, + "line": 429, "column": 25 }, "end": { - "line": 375, + "line": 429, "column": 26 } } @@ -68402,15 +68402,15 @@ "binop": null, "updateContext": null }, - "start": 14664, - "end": 14665, + "start": 16652, + "end": 16653, "loc": { "start": { - "line": 375, + "line": 429, "column": 26 }, "end": { - "line": 375, + "line": 429, "column": 27 } } @@ -68428,15 +68428,15 @@ "binop": null }, "value": "j", - "start": 14666, - "end": 14667, + "start": 16654, + "end": 16655, "loc": { "start": { - "line": 375, + "line": 429, "column": 28 }, "end": { - "line": 375, + "line": 429, "column": 29 } } @@ -68455,15 +68455,15 @@ "updateContext": null }, "value": "=", - "start": 14668, - "end": 14669, + "start": 16656, + "end": 16657, "loc": { "start": { - "line": 375, + "line": 429, "column": 30 }, "end": { - "line": 375, + "line": 429, "column": 31 } } @@ -68482,15 +68482,15 @@ "updateContext": null }, "value": 0, - "start": 14670, - "end": 14671, + "start": 16658, + "end": 16659, "loc": { "start": { - "line": 375, + "line": 429, "column": 32 }, "end": { - "line": 375, + "line": 429, "column": 33 } } @@ -68508,15 +68508,15 @@ "binop": null, "updateContext": null }, - "start": 14671, - "end": 14672, + "start": 16659, + "end": 16660, "loc": { "start": { - "line": 375, + "line": 429, "column": 33 }, "end": { - "line": 375, + "line": 429, "column": 34 } } @@ -68534,15 +68534,15 @@ "binop": null }, "value": "k", - "start": 14673, - "end": 14674, + "start": 16661, + "end": 16662, "loc": { "start": { - "line": 375, + "line": 429, "column": 35 }, "end": { - "line": 375, + "line": 429, "column": 36 } } @@ -68561,15 +68561,15 @@ "updateContext": null }, "value": "=", - "start": 14675, - "end": 14676, + "start": 16663, + "end": 16664, "loc": { "start": { - "line": 375, + "line": 429, "column": 37 }, "end": { - "line": 375, + "line": 429, "column": 38 } } @@ -68588,15 +68588,15 @@ "updateContext": null }, "value": 0, - "start": 14677, - "end": 14678, + "start": 16665, + "end": 16666, "loc": { "start": { - "line": 375, + "line": 429, "column": 39 }, "end": { - "line": 375, + "line": 429, "column": 40 } } @@ -68614,15 +68614,15 @@ "binop": null, "updateContext": null }, - "start": 14678, - "end": 14679, + "start": 16666, + "end": 16667, "loc": { "start": { - "line": 375, + "line": 429, "column": 40 }, "end": { - "line": 375, + "line": 429, "column": 41 } } @@ -68640,15 +68640,15 @@ "binop": null }, "value": "len", - "start": 14680, - "end": 14683, + "start": 16668, + "end": 16671, "loc": { "start": { - "line": 375, + "line": 429, "column": 42 }, "end": { - "line": 375, + "line": 429, "column": 45 } } @@ -68667,15 +68667,15 @@ "updateContext": null }, "value": "=", - "start": 14684, - "end": 14685, + "start": 16672, + "end": 16673, "loc": { "start": { - "line": 375, + "line": 429, "column": 46 }, "end": { - "line": 375, + "line": 429, "column": 47 } } @@ -68693,15 +68693,15 @@ "binop": null }, "value": "intensities", - "start": 14686, - "end": 14697, + "start": 16674, + "end": 16685, "loc": { "start": { - "line": 375, + "line": 429, "column": 48 }, "end": { - "line": 375, + "line": 429, "column": 59 } } @@ -68719,15 +68719,15 @@ "binop": null, "updateContext": null }, - "start": 14697, - "end": 14698, + "start": 16685, + "end": 16686, "loc": { "start": { - "line": 375, + "line": 429, "column": 59 }, "end": { - "line": 375, + "line": 429, "column": 60 } } @@ -68745,15 +68745,15 @@ "binop": null }, "value": "length", - "start": 14698, - "end": 14704, + "start": 16686, + "end": 16692, "loc": { "start": { - "line": 375, + "line": 429, "column": 60 }, "end": { - "line": 375, + "line": 429, "column": 66 } } @@ -68771,15 +68771,15 @@ "binop": null, "updateContext": null }, - "start": 14704, - "end": 14705, + "start": 16692, + "end": 16693, "loc": { "start": { - "line": 375, + "line": 429, "column": 66 }, "end": { - "line": 375, + "line": 429, "column": 67 } } @@ -68797,15 +68797,15 @@ "binop": null }, "value": "i", - "start": 14706, - "end": 14707, + "start": 16694, + "end": 16695, "loc": { "start": { - "line": 375, + "line": 429, "column": 68 }, "end": { - "line": 375, + "line": 429, "column": 69 } } @@ -68824,15 +68824,15 @@ "updateContext": null }, "value": "<", - "start": 14708, - "end": 14709, + "start": 16696, + "end": 16697, "loc": { "start": { - "line": 375, + "line": 429, "column": 70 }, "end": { - "line": 375, + "line": 429, "column": 71 } } @@ -68850,15 +68850,15 @@ "binop": null }, "value": "len", - "start": 14710, - "end": 14713, + "start": 16698, + "end": 16701, "loc": { "start": { - "line": 375, + "line": 429, "column": 72 }, "end": { - "line": 375, + "line": 429, "column": 75 } } @@ -68876,15 +68876,15 @@ "binop": null, "updateContext": null }, - "start": 14713, - "end": 14714, + "start": 16701, + "end": 16702, "loc": { "start": { - "line": 375, + "line": 429, "column": 75 }, "end": { - "line": 375, + "line": 429, "column": 76 } } @@ -68902,15 +68902,15 @@ "binop": null }, "value": "i", - "start": 14715, - "end": 14716, + "start": 16703, + "end": 16704, "loc": { "start": { - "line": 375, + "line": 429, "column": 77 }, "end": { - "line": 375, + "line": 429, "column": 78 } } @@ -68928,15 +68928,15 @@ "binop": null }, "value": "++", - "start": 14716, - "end": 14718, + "start": 16704, + "end": 16706, "loc": { "start": { - "line": 375, + "line": 429, "column": 78 }, "end": { - "line": 375, + "line": 429, "column": 80 } } @@ -68954,15 +68954,15 @@ "binop": null, "updateContext": null }, - "start": 14718, - "end": 14719, + "start": 16706, + "end": 16707, "loc": { "start": { - "line": 375, + "line": 429, "column": 80 }, "end": { - "line": 375, + "line": 429, "column": 81 } } @@ -68980,15 +68980,15 @@ "binop": null }, "value": "k", - "start": 14720, - "end": 14721, + "start": 16708, + "end": 16709, "loc": { "start": { - "line": 375, + "line": 429, "column": 82 }, "end": { - "line": 375, + "line": 429, "column": 83 } } @@ -69007,15 +69007,15 @@ "updateContext": null }, "value": "+=", - "start": 14722, - "end": 14724, + "start": 16710, + "end": 16712, "loc": { "start": { - "line": 375, + "line": 429, "column": 84 }, "end": { - "line": 375, + "line": 429, "column": 86 } } @@ -69034,15 +69034,15 @@ "updateContext": null }, "value": 3, - "start": 14725, - "end": 14726, + "start": 16713, + "end": 16714, "loc": { "start": { - "line": 375, + "line": 429, "column": 87 }, "end": { - "line": 375, + "line": 429, "column": 88 } } @@ -69060,15 +69060,15 @@ "binop": null, "updateContext": null }, - "start": 14726, - "end": 14727, + "start": 16714, + "end": 16715, "loc": { "start": { - "line": 375, + "line": 429, "column": 88 }, "end": { - "line": 375, + "line": 429, "column": 89 } } @@ -69086,15 +69086,15 @@ "binop": null }, "value": "j", - "start": 14728, - "end": 14729, + "start": 16716, + "end": 16717, "loc": { "start": { - "line": 375, + "line": 429, "column": 90 }, "end": { - "line": 375, + "line": 429, "column": 91 } } @@ -69113,15 +69113,15 @@ "updateContext": null }, "value": "+=", - "start": 14730, - "end": 14732, + "start": 16718, + "end": 16720, "loc": { "start": { - "line": 375, + "line": 429, "column": 92 }, "end": { - "line": 375, + "line": 429, "column": 94 } } @@ -69140,15 +69140,15 @@ "updateContext": null }, "value": 4, - "start": 14733, - "end": 14734, + "start": 16721, + "end": 16722, "loc": { "start": { - "line": 375, + "line": 429, "column": 95 }, "end": { - "line": 375, + "line": 429, "column": 96 } } @@ -69165,15 +69165,15 @@ "postfix": false, "binop": null }, - "start": 14734, - "end": 14735, + "start": 16722, + "end": 16723, "loc": { "start": { - "line": 375, + "line": 429, "column": 96 }, "end": { - "line": 375, + "line": 429, "column": 97 } } @@ -69190,15 +69190,15 @@ "postfix": false, "binop": null }, - "start": 14736, - "end": 14737, + "start": 16724, + "end": 16725, "loc": { "start": { - "line": 375, + "line": 429, "column": 98 }, "end": { - "line": 375, + "line": 429, "column": 99 } } @@ -69216,15 +69216,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14754, - "end": 14770, + "start": 16742, + "end": 16758, "loc": { "start": { - "line": 376, + "line": 430, "column": 16 }, "end": { - "line": 376, + "line": 430, "column": 32 } } @@ -69242,15 +69242,15 @@ "binop": null, "updateContext": null }, - "start": 14770, - "end": 14771, + "start": 16758, + "end": 16759, "loc": { "start": { - "line": 376, + "line": 430, "column": 32 }, "end": { - "line": 376, + "line": 430, "column": 33 } } @@ -69268,15 +69268,15 @@ "binop": null }, "value": "j", - "start": 14771, - "end": 14772, + "start": 16759, + "end": 16760, "loc": { "start": { - "line": 376, + "line": 430, "column": 33 }, "end": { - "line": 376, + "line": 430, "column": 34 } } @@ -69295,15 +69295,15 @@ "updateContext": null }, "value": "+", - "start": 14773, - "end": 14774, + "start": 16761, + "end": 16762, "loc": { "start": { - "line": 376, + "line": 430, "column": 35 }, "end": { - "line": 376, + "line": 430, "column": 36 } } @@ -69322,15 +69322,15 @@ "updateContext": null }, "value": 0, - "start": 14775, - "end": 14776, + "start": 16763, + "end": 16764, "loc": { "start": { - "line": 376, + "line": 430, "column": 37 }, "end": { - "line": 376, + "line": 430, "column": 38 } } @@ -69348,15 +69348,15 @@ "binop": null, "updateContext": null }, - "start": 14776, - "end": 14777, + "start": 16764, + "end": 16765, "loc": { "start": { - "line": 376, + "line": 430, "column": 38 }, "end": { - "line": 376, + "line": 430, "column": 39 } } @@ -69375,15 +69375,15 @@ "updateContext": null }, "value": "=", - "start": 14778, - "end": 14779, + "start": 16766, + "end": 16767, "loc": { "start": { - "line": 376, + "line": 430, "column": 40 }, "end": { - "line": 376, + "line": 430, "column": 41 } } @@ -69402,15 +69402,15 @@ "updateContext": null }, "value": 0, - "start": 14780, - "end": 14781, + "start": 16768, + "end": 16769, "loc": { "start": { - "line": 376, + "line": 430, "column": 42 }, "end": { - "line": 376, + "line": 430, "column": 43 } } @@ -69428,15 +69428,15 @@ "binop": null, "updateContext": null }, - "start": 14781, - "end": 14782, + "start": 16769, + "end": 16770, "loc": { "start": { - "line": 376, + "line": 430, "column": 43 }, "end": { - "line": 376, + "line": 430, "column": 44 } } @@ -69454,15 +69454,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14799, - "end": 14815, + "start": 16787, + "end": 16803, "loc": { "start": { - "line": 377, + "line": 431, "column": 16 }, "end": { - "line": 377, + "line": 431, "column": 32 } } @@ -69480,15 +69480,15 @@ "binop": null, "updateContext": null }, - "start": 14815, - "end": 14816, + "start": 16803, + "end": 16804, "loc": { "start": { - "line": 377, + "line": 431, "column": 32 }, "end": { - "line": 377, + "line": 431, "column": 33 } } @@ -69506,15 +69506,15 @@ "binop": null }, "value": "j", - "start": 14816, - "end": 14817, + "start": 16804, + "end": 16805, "loc": { "start": { - "line": 377, + "line": 431, "column": 33 }, "end": { - "line": 377, + "line": 431, "column": 34 } } @@ -69533,15 +69533,15 @@ "updateContext": null }, "value": "+", - "start": 14818, - "end": 14819, + "start": 16806, + "end": 16807, "loc": { "start": { - "line": 377, + "line": 431, "column": 35 }, "end": { - "line": 377, + "line": 431, "column": 36 } } @@ -69560,15 +69560,15 @@ "updateContext": null }, "value": 1, - "start": 14820, - "end": 14821, + "start": 16808, + "end": 16809, "loc": { "start": { - "line": 377, + "line": 431, "column": 37 }, "end": { - "line": 377, + "line": 431, "column": 38 } } @@ -69586,15 +69586,15 @@ "binop": null, "updateContext": null }, - "start": 14821, - "end": 14822, + "start": 16809, + "end": 16810, "loc": { "start": { - "line": 377, + "line": 431, "column": 38 }, "end": { - "line": 377, + "line": 431, "column": 39 } } @@ -69613,15 +69613,15 @@ "updateContext": null }, "value": "=", - "start": 14823, - "end": 14824, + "start": 16811, + "end": 16812, "loc": { "start": { - "line": 377, + "line": 431, "column": 40 }, "end": { - "line": 377, + "line": 431, "column": 41 } } @@ -69640,15 +69640,15 @@ "updateContext": null }, "value": 0, - "start": 14825, - "end": 14826, + "start": 16813, + "end": 16814, "loc": { "start": { - "line": 377, + "line": 431, "column": 42 }, "end": { - "line": 377, + "line": 431, "column": 43 } } @@ -69666,15 +69666,15 @@ "binop": null, "updateContext": null }, - "start": 14826, - "end": 14827, + "start": 16814, + "end": 16815, "loc": { "start": { - "line": 377, + "line": 431, "column": 43 }, "end": { - "line": 377, + "line": 431, "column": 44 } } @@ -69692,15 +69692,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14844, - "end": 14860, + "start": 16832, + "end": 16848, "loc": { "start": { - "line": 378, + "line": 432, "column": 16 }, "end": { - "line": 378, + "line": 432, "column": 32 } } @@ -69718,15 +69718,15 @@ "binop": null, "updateContext": null }, - "start": 14860, - "end": 14861, + "start": 16848, + "end": 16849, "loc": { "start": { - "line": 378, + "line": 432, "column": 32 }, "end": { - "line": 378, + "line": 432, "column": 33 } } @@ -69744,15 +69744,15 @@ "binop": null }, "value": "j", - "start": 14861, - "end": 14862, + "start": 16849, + "end": 16850, "loc": { "start": { - "line": 378, + "line": 432, "column": 33 }, "end": { - "line": 378, + "line": 432, "column": 34 } } @@ -69771,15 +69771,15 @@ "updateContext": null }, "value": "+", - "start": 14863, - "end": 14864, + "start": 16851, + "end": 16852, "loc": { "start": { - "line": 378, + "line": 432, "column": 35 }, "end": { - "line": 378, + "line": 432, "column": 36 } } @@ -69798,15 +69798,15 @@ "updateContext": null }, "value": 2, - "start": 14865, - "end": 14866, + "start": 16853, + "end": 16854, "loc": { "start": { - "line": 378, + "line": 432, "column": 37 }, "end": { - "line": 378, + "line": 432, "column": 38 } } @@ -69824,15 +69824,15 @@ "binop": null, "updateContext": null }, - "start": 14866, - "end": 14867, + "start": 16854, + "end": 16855, "loc": { "start": { - "line": 378, + "line": 432, "column": 38 }, "end": { - "line": 378, + "line": 432, "column": 39 } } @@ -69851,15 +69851,15 @@ "updateContext": null }, "value": "=", - "start": 14868, - "end": 14869, + "start": 16856, + "end": 16857, "loc": { "start": { - "line": 378, + "line": 432, "column": 40 }, "end": { - "line": 378, + "line": 432, "column": 41 } } @@ -69878,15 +69878,15 @@ "updateContext": null }, "value": 0, - "start": 14870, - "end": 14871, + "start": 16858, + "end": 16859, "loc": { "start": { - "line": 378, + "line": 432, "column": 42 }, "end": { - "line": 378, + "line": 432, "column": 43 } } @@ -69904,15 +69904,15 @@ "binop": null, "updateContext": null }, - "start": 14871, - "end": 14872, + "start": 16859, + "end": 16860, "loc": { "start": { - "line": 378, + "line": 432, "column": 43 }, "end": { - "line": 378, + "line": 432, "column": 44 } } @@ -69930,15 +69930,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14889, - "end": 14905, + "start": 16877, + "end": 16893, "loc": { "start": { - "line": 379, + "line": 433, "column": 16 }, "end": { - "line": 379, + "line": 433, "column": 32 } } @@ -69956,15 +69956,15 @@ "binop": null, "updateContext": null }, - "start": 14905, - "end": 14906, + "start": 16893, + "end": 16894, "loc": { "start": { - "line": 379, + "line": 433, "column": 32 }, "end": { - "line": 379, + "line": 433, "column": 33 } } @@ -69982,15 +69982,15 @@ "binop": null }, "value": "j", - "start": 14906, - "end": 14907, + "start": 16894, + "end": 16895, "loc": { "start": { - "line": 379, + "line": 433, "column": 33 }, "end": { - "line": 379, + "line": 433, "column": 34 } } @@ -70009,15 +70009,15 @@ "updateContext": null }, "value": "+", - "start": 14908, - "end": 14909, + "start": 16896, + "end": 16897, "loc": { "start": { - "line": 379, + "line": 433, "column": 35 }, "end": { - "line": 379, + "line": 433, "column": 36 } } @@ -70036,15 +70036,15 @@ "updateContext": null }, "value": 3, - "start": 14910, - "end": 14911, + "start": 16898, + "end": 16899, "loc": { "start": { - "line": 379, + "line": 433, "column": 37 }, "end": { - "line": 379, + "line": 433, "column": 38 } } @@ -70062,15 +70062,15 @@ "binop": null, "updateContext": null }, - "start": 14911, - "end": 14912, + "start": 16899, + "end": 16900, "loc": { "start": { - "line": 379, + "line": 433, "column": 38 }, "end": { - "line": 379, + "line": 433, "column": 39 } } @@ -70089,15 +70089,15 @@ "updateContext": null }, "value": "=", - "start": 14913, - "end": 14914, + "start": 16901, + "end": 16902, "loc": { "start": { - "line": 379, + "line": 433, "column": 40 }, "end": { - "line": 379, + "line": 433, "column": 41 } } @@ -70115,15 +70115,15 @@ "binop": null }, "value": "Math", - "start": 14915, - "end": 14919, + "start": 16903, + "end": 16907, "loc": { "start": { - "line": 379, + "line": 433, "column": 42 }, "end": { - "line": 379, + "line": 433, "column": 46 } } @@ -70141,15 +70141,15 @@ "binop": null, "updateContext": null }, - "start": 14919, - "end": 14920, + "start": 16907, + "end": 16908, "loc": { "start": { - "line": 379, + "line": 433, "column": 46 }, "end": { - "line": 379, + "line": 433, "column": 47 } } @@ -70167,15 +70167,15 @@ "binop": null }, "value": "round", - "start": 14920, - "end": 14925, + "start": 16908, + "end": 16913, "loc": { "start": { - "line": 379, + "line": 433, "column": 47 }, "end": { - "line": 379, + "line": 433, "column": 52 } } @@ -70192,15 +70192,15 @@ "postfix": false, "binop": null }, - "start": 14925, - "end": 14926, + "start": 16913, + "end": 16914, "loc": { "start": { - "line": 379, + "line": 433, "column": 52 }, "end": { - "line": 379, + "line": 433, "column": 53 } } @@ -70217,15 +70217,15 @@ "postfix": false, "binop": null }, - "start": 14926, - "end": 14927, + "start": 16914, + "end": 16915, "loc": { "start": { - "line": 379, + "line": 433, "column": 53 }, "end": { - "line": 379, + "line": 433, "column": 54 } } @@ -70243,15 +70243,15 @@ "binop": null }, "value": "intensities", - "start": 14927, - "end": 14938, + "start": 16915, + "end": 16926, "loc": { "start": { - "line": 379, + "line": 433, "column": 54 }, "end": { - "line": 379, + "line": 433, "column": 65 } } @@ -70269,15 +70269,15 @@ "binop": null, "updateContext": null }, - "start": 14938, - "end": 14939, + "start": 16926, + "end": 16927, "loc": { "start": { - "line": 379, + "line": 433, "column": 65 }, "end": { - "line": 379, + "line": 433, "column": 66 } } @@ -70295,15 +70295,15 @@ "binop": null }, "value": "i", - "start": 14939, - "end": 14940, + "start": 16927, + "end": 16928, "loc": { "start": { - "line": 379, + "line": 433, "column": 66 }, "end": { - "line": 379, + "line": 433, "column": 67 } } @@ -70321,15 +70321,15 @@ "binop": null, "updateContext": null }, - "start": 14940, - "end": 14941, + "start": 16928, + "end": 16929, "loc": { "start": { - "line": 379, + "line": 433, "column": 67 }, "end": { - "line": 379, + "line": 433, "column": 68 } } @@ -70348,15 +70348,15 @@ "updateContext": null }, "value": "/", - "start": 14942, - "end": 14943, + "start": 16930, + "end": 16931, "loc": { "start": { - "line": 379, + "line": 433, "column": 69 }, "end": { - "line": 379, + "line": 433, "column": 70 } } @@ -70375,15 +70375,15 @@ "updateContext": null }, "value": 65536, - "start": 14944, - "end": 14949, + "start": 16932, + "end": 16937, "loc": { "start": { - "line": 379, + "line": 433, "column": 71 }, "end": { - "line": 379, + "line": 433, "column": 76 } } @@ -70400,15 +70400,15 @@ "postfix": false, "binop": null }, - "start": 14949, - "end": 14950, + "start": 16937, + "end": 16938, "loc": { "start": { - "line": 379, + "line": 433, "column": 76 }, "end": { - "line": 379, + "line": 433, "column": 77 } } @@ -70427,15 +70427,15 @@ "updateContext": null }, "value": "*", - "start": 14951, - "end": 14952, + "start": 16939, + "end": 16940, "loc": { "start": { - "line": 379, + "line": 433, "column": 78 }, "end": { - "line": 379, + "line": 433, "column": 79 } } @@ -70454,15 +70454,15 @@ "updateContext": null }, "value": 255, - "start": 14953, - "end": 14956, + "start": 16941, + "end": 16944, "loc": { "start": { - "line": 379, + "line": 433, "column": 80 }, "end": { - "line": 379, + "line": 433, "column": 83 } } @@ -70479,15 +70479,15 @@ "postfix": false, "binop": null }, - "start": 14956, - "end": 14957, + "start": 16944, + "end": 16945, "loc": { "start": { - "line": 379, + "line": 433, "column": 83 }, "end": { - "line": 379, + "line": 433, "column": 84 } } @@ -70505,15 +70505,15 @@ "binop": null, "updateContext": null }, - "start": 14957, - "end": 14958, + "start": 16945, + "end": 16946, "loc": { "start": { - "line": 379, + "line": 433, "column": 84 }, "end": { - "line": 379, + "line": 433, "column": 85 } } @@ -70530,15 +70530,15 @@ "postfix": false, "binop": null }, - "start": 14971, - "end": 14972, + "start": 16959, + "end": 16960, "loc": { "start": { - "line": 380, + "line": 434, "column": 12 }, "end": { - "line": 380, + "line": 434, "column": 13 } } @@ -70558,15 +70558,15 @@ "updateContext": null }, "value": "return", - "start": 14985, - "end": 14991, + "start": 16973, + "end": 16979, "loc": { "start": { - "line": 381, + "line": 435, "column": 12 }, "end": { - "line": 381, + "line": 435, "column": 18 } } @@ -70584,15 +70584,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 14992, - "end": 15008, + "start": 16980, + "end": 16996, "loc": { "start": { - "line": 381, + "line": 435, "column": 19 }, "end": { - "line": 381, + "line": 435, "column": 35 } } @@ -70610,15 +70610,15 @@ "binop": null, "updateContext": null }, - "start": 15008, - "end": 15009, + "start": 16996, + "end": 16997, "loc": { "start": { - "line": 381, + "line": 435, "column": 35 }, "end": { - "line": 381, + "line": 435, "column": 36 } } @@ -70635,15 +70635,15 @@ "postfix": false, "binop": null }, - "start": 15018, - "end": 15019, + "start": 17006, + "end": 17007, "loc": { "start": { - "line": 382, + "line": 436, "column": 8 }, "end": { - "line": 382, + "line": 436, "column": 9 } } @@ -70663,15 +70663,15 @@ "updateContext": null }, "value": "return", - "start": 15029, - "end": 15035, + "start": 17017, + "end": 17023, "loc": { "start": { - "line": 384, + "line": 438, "column": 8 }, "end": { - "line": 384, + "line": 438, "column": 14 } } @@ -70691,15 +70691,15 @@ "updateContext": null }, "value": "new", - "start": 15036, - "end": 15039, + "start": 17024, + "end": 17027, "loc": { "start": { - "line": 384, + "line": 438, "column": 15 }, "end": { - "line": 384, + "line": 438, "column": 18 } } @@ -70717,15 +70717,15 @@ "binop": null }, "value": "Promise", - "start": 15040, - "end": 15047, + "start": 17028, + "end": 17035, "loc": { "start": { - "line": 384, + "line": 438, "column": 19 }, "end": { - "line": 384, + "line": 438, "column": 26 } } @@ -70742,15 +70742,15 @@ "postfix": false, "binop": null }, - "start": 15047, - "end": 15048, + "start": 17035, + "end": 17036, "loc": { "start": { - "line": 384, + "line": 438, "column": 26 }, "end": { - "line": 384, + "line": 438, "column": 27 } } @@ -70767,15 +70767,15 @@ "postfix": false, "binop": null }, - "start": 15048, - "end": 15049, + "start": 17036, + "end": 17037, "loc": { "start": { - "line": 384, + "line": 438, "column": 27 }, "end": { - "line": 384, + "line": 438, "column": 28 } } @@ -70793,15 +70793,15 @@ "binop": null }, "value": "resolve", - "start": 15049, - "end": 15056, + "start": 17037, + "end": 17044, "loc": { "start": { - "line": 384, + "line": 438, "column": 28 }, "end": { - "line": 384, + "line": 438, "column": 35 } } @@ -70819,15 +70819,15 @@ "binop": null, "updateContext": null }, - "start": 15056, - "end": 15057, + "start": 17044, + "end": 17045, "loc": { "start": { - "line": 384, + "line": 438, "column": 35 }, "end": { - "line": 384, + "line": 438, "column": 36 } } @@ -70845,15 +70845,15 @@ "binop": null }, "value": "reject", - "start": 15058, - "end": 15064, + "start": 17046, + "end": 17052, "loc": { "start": { - "line": 384, + "line": 438, "column": 37 }, "end": { - "line": 384, + "line": 438, "column": 43 } } @@ -70870,15 +70870,15 @@ "postfix": false, "binop": null }, - "start": 15064, - "end": 15065, + "start": 17052, + "end": 17053, "loc": { "start": { - "line": 384, + "line": 438, "column": 43 }, "end": { - "line": 384, + "line": 438, "column": 44 } } @@ -70896,15 +70896,15 @@ "binop": null, "updateContext": null }, - "start": 15066, - "end": 15068, + "start": 17054, + "end": 17056, "loc": { "start": { - "line": 384, + "line": 438, "column": 45 }, "end": { - "line": 384, + "line": 438, "column": 47 } } @@ -70921,15 +70921,15 @@ "postfix": false, "binop": null }, - "start": 15069, - "end": 15070, + "start": 17057, + "end": 17058, "loc": { "start": { - "line": 384, + "line": 438, "column": 48 }, "end": { - "line": 384, + "line": 438, "column": 49 } } @@ -70949,15 +70949,15 @@ "updateContext": null }, "value": "if", - "start": 15084, - "end": 15086, + "start": 17072, + "end": 17074, "loc": { "start": { - "line": 386, + "line": 440, "column": 12 }, "end": { - "line": 386, + "line": 440, "column": 14 } } @@ -70974,15 +70974,15 @@ "postfix": false, "binop": null }, - "start": 15087, - "end": 15088, + "start": 17075, + "end": 17076, "loc": { "start": { - "line": 386, + "line": 440, "column": 15 }, "end": { - "line": 386, + "line": 440, "column": 16 } } @@ -71000,15 +71000,15 @@ "binop": null }, "value": "sceneModel", - "start": 15088, - "end": 15098, + "start": 17076, + "end": 17086, "loc": { "start": { - "line": 386, + "line": 440, "column": 16 }, "end": { - "line": 386, + "line": 440, "column": 26 } } @@ -71026,15 +71026,15 @@ "binop": null, "updateContext": null }, - "start": 15098, - "end": 15099, + "start": 17086, + "end": 17087, "loc": { "start": { - "line": 386, + "line": 440, "column": 26 }, "end": { - "line": 386, + "line": 440, "column": 27 } } @@ -71052,15 +71052,15 @@ "binop": null }, "value": "destroyed", - "start": 15099, - "end": 15108, + "start": 17087, + "end": 17096, "loc": { "start": { - "line": 386, + "line": 440, "column": 27 }, "end": { - "line": 386, + "line": 440, "column": 36 } } @@ -71077,15 +71077,15 @@ "postfix": false, "binop": null }, - "start": 15108, - "end": 15109, + "start": 17096, + "end": 17097, "loc": { "start": { - "line": 386, + "line": 440, "column": 36 }, "end": { - "line": 386, + "line": 440, "column": 37 } } @@ -71102,15 +71102,15 @@ "postfix": false, "binop": null }, - "start": 15110, - "end": 15111, + "start": 17098, + "end": 17099, "loc": { "start": { - "line": 386, + "line": 440, "column": 38 }, "end": { - "line": 386, + "line": 440, "column": 39 } } @@ -71128,15 +71128,15 @@ "binop": null }, "value": "reject", - "start": 15128, - "end": 15134, + "start": 17116, + "end": 17122, "loc": { "start": { - "line": 387, + "line": 441, "column": 16 }, "end": { - "line": 387, + "line": 441, "column": 22 } } @@ -71153,15 +71153,15 @@ "postfix": false, "binop": null }, - "start": 15134, - "end": 15135, + "start": 17122, + "end": 17123, "loc": { "start": { - "line": 387, + "line": 441, "column": 22 }, "end": { - "line": 387, + "line": 441, "column": 23 } } @@ -71178,15 +71178,15 @@ "postfix": false, "binop": null }, - "start": 15135, - "end": 15136, + "start": 17123, + "end": 17124, "loc": { "start": { - "line": 387, + "line": 441, "column": 23 }, "end": { - "line": 387, + "line": 441, "column": 24 } } @@ -71204,15 +71204,15 @@ "binop": null, "updateContext": null }, - "start": 15136, - "end": 15137, + "start": 17124, + "end": 17125, "loc": { "start": { - "line": 387, + "line": 441, "column": 24 }, "end": { - "line": 387, + "line": 441, "column": 25 } } @@ -71232,15 +71232,15 @@ "updateContext": null }, "value": "return", - "start": 15154, - "end": 15160, + "start": 17142, + "end": 17148, "loc": { "start": { - "line": 388, + "line": 442, "column": 16 }, "end": { - "line": 388, + "line": 442, "column": 22 } } @@ -71258,15 +71258,15 @@ "binop": null, "updateContext": null }, - "start": 15160, - "end": 15161, + "start": 17148, + "end": 17149, "loc": { "start": { - "line": 388, + "line": 442, "column": 22 }, "end": { - "line": 388, + "line": 442, "column": 23 } } @@ -71283,15 +71283,15 @@ "postfix": false, "binop": null }, - "start": 15174, - "end": 15175, + "start": 17162, + "end": 17163, "loc": { "start": { - "line": 389, + "line": 443, "column": 12 }, "end": { - "line": 389, + "line": 443, "column": 13 } } @@ -71311,15 +71311,15 @@ "updateContext": null }, "value": "const", - "start": 15189, - "end": 15194, + "start": 17177, + "end": 17182, "loc": { "start": { - "line": 391, + "line": 445, "column": 12 }, "end": { - "line": 391, + "line": 445, "column": 17 } } @@ -71337,15 +71337,15 @@ "binop": null }, "value": "stats", - "start": 15195, - "end": 15200, + "start": 17183, + "end": 17188, "loc": { "start": { - "line": 391, + "line": 445, "column": 18 }, "end": { - "line": 391, + "line": 445, "column": 23 } } @@ -71364,15 +71364,15 @@ "updateContext": null }, "value": "=", - "start": 15201, - "end": 15202, + "start": 17189, + "end": 17190, "loc": { "start": { - "line": 391, + "line": 445, "column": 24 }, "end": { - "line": 391, + "line": 445, "column": 25 } } @@ -71390,15 +71390,15 @@ "binop": null }, "value": "params", - "start": 15203, - "end": 15209, + "start": 17191, + "end": 17197, "loc": { "start": { - "line": 391, + "line": 445, "column": 26 }, "end": { - "line": 391, + "line": 445, "column": 32 } } @@ -71416,15 +71416,15 @@ "binop": null, "updateContext": null }, - "start": 15209, - "end": 15210, + "start": 17197, + "end": 17198, "loc": { "start": { - "line": 391, + "line": 445, "column": 32 }, "end": { - "line": 391, + "line": 445, "column": 33 } } @@ -71442,15 +71442,15 @@ "binop": null }, "value": "stats", - "start": 15210, - "end": 15215, + "start": 17198, + "end": 17203, "loc": { "start": { - "line": 391, + "line": 445, "column": 33 }, "end": { - "line": 391, + "line": 445, "column": 38 } } @@ -71469,15 +71469,15 @@ "updateContext": null }, "value": "||", - "start": 15216, - "end": 15218, + "start": 17204, + "end": 17206, "loc": { "start": { - "line": 391, + "line": 445, "column": 39 }, "end": { - "line": 391, + "line": 445, "column": 41 } } @@ -71494,15 +71494,15 @@ "postfix": false, "binop": null }, - "start": 15219, - "end": 15220, + "start": 17207, + "end": 17208, "loc": { "start": { - "line": 391, + "line": 445, "column": 42 }, "end": { - "line": 391, + "line": 445, "column": 43 } } @@ -71519,15 +71519,15 @@ "postfix": false, "binop": null }, - "start": 15220, - "end": 15221, + "start": 17208, + "end": 17209, "loc": { "start": { - "line": 391, + "line": 445, "column": 43 }, "end": { - "line": 391, + "line": 445, "column": 44 } } @@ -71545,15 +71545,15 @@ "binop": null, "updateContext": null }, - "start": 15221, - "end": 15222, + "start": 17209, + "end": 17210, "loc": { "start": { - "line": 391, + "line": 445, "column": 44 }, "end": { - "line": 391, + "line": 445, "column": 45 } } @@ -71571,15 +71571,15 @@ "binop": null }, "value": "stats", - "start": 15235, - "end": 15240, + "start": 17223, + "end": 17228, "loc": { "start": { - "line": 392, + "line": 446, "column": 12 }, "end": { - "line": 392, + "line": 446, "column": 17 } } @@ -71597,15 +71597,15 @@ "binop": null, "updateContext": null }, - "start": 15240, - "end": 15241, + "start": 17228, + "end": 17229, "loc": { "start": { - "line": 392, + "line": 446, "column": 17 }, "end": { - "line": 392, + "line": 446, "column": 18 } } @@ -71623,15 +71623,15 @@ "binop": null }, "value": "sourceFormat", - "start": 15241, - "end": 15253, + "start": 17229, + "end": 17241, "loc": { "start": { - "line": 392, + "line": 446, "column": 18 }, "end": { - "line": 392, + "line": 446, "column": 30 } } @@ -71650,15 +71650,15 @@ "updateContext": null }, "value": "=", - "start": 15254, - "end": 15255, + "start": 17242, + "end": 17243, "loc": { "start": { - "line": 392, + "line": 446, "column": 31 }, "end": { - "line": 392, + "line": 446, "column": 32 } } @@ -71677,15 +71677,15 @@ "updateContext": null }, "value": "LAS", - "start": 15256, - "end": 15261, + "start": 17244, + "end": 17249, "loc": { "start": { - "line": 392, + "line": 446, "column": 33 }, "end": { - "line": 392, + "line": 446, "column": 38 } } @@ -71703,15 +71703,15 @@ "binop": null, "updateContext": null }, - "start": 15261, - "end": 15262, + "start": 17249, + "end": 17250, "loc": { "start": { - "line": 392, + "line": 446, "column": 38 }, "end": { - "line": 392, + "line": 446, "column": 39 } } @@ -71729,15 +71729,15 @@ "binop": null }, "value": "stats", - "start": 15275, - "end": 15280, + "start": 17263, + "end": 17268, "loc": { "start": { - "line": 393, + "line": 447, "column": 12 }, "end": { - "line": 393, + "line": 447, "column": 17 } } @@ -71755,15 +71755,15 @@ "binop": null, "updateContext": null }, - "start": 15280, - "end": 15281, + "start": 17268, + "end": 17269, "loc": { "start": { - "line": 393, + "line": 447, "column": 17 }, "end": { - "line": 393, + "line": 447, "column": 18 } } @@ -71781,15 +71781,15 @@ "binop": null }, "value": "schemaVersion", - "start": 15281, - "end": 15294, + "start": 17269, + "end": 17282, "loc": { "start": { - "line": 393, + "line": 447, "column": 18 }, "end": { - "line": 393, + "line": 447, "column": 31 } } @@ -71808,15 +71808,15 @@ "updateContext": null }, "value": "=", - "start": 15295, - "end": 15296, + "start": 17283, + "end": 17284, "loc": { "start": { - "line": 393, + "line": 447, "column": 32 }, "end": { - "line": 393, + "line": 447, "column": 33 } } @@ -71835,15 +71835,15 @@ "updateContext": null }, "value": "", - "start": 15297, - "end": 15299, + "start": 17285, + "end": 17287, "loc": { "start": { - "line": 393, + "line": 447, "column": 34 }, "end": { - "line": 393, + "line": 447, "column": 36 } } @@ -71861,15 +71861,15 @@ "binop": null, "updateContext": null }, - "start": 15299, - "end": 15300, + "start": 17287, + "end": 17288, "loc": { "start": { - "line": 393, + "line": 447, "column": 36 }, "end": { - "line": 393, + "line": 447, "column": 37 } } @@ -71887,15 +71887,15 @@ "binop": null }, "value": "stats", - "start": 15313, - "end": 15318, + "start": 17301, + "end": 17306, "loc": { "start": { - "line": 394, + "line": 448, "column": 12 }, "end": { - "line": 394, + "line": 448, "column": 17 } } @@ -71913,15 +71913,15 @@ "binop": null, "updateContext": null }, - "start": 15318, - "end": 15319, + "start": 17306, + "end": 17307, "loc": { "start": { - "line": 394, + "line": 448, "column": 17 }, "end": { - "line": 394, + "line": 448, "column": 18 } } @@ -71939,15 +71939,15 @@ "binop": null }, "value": "title", - "start": 15319, - "end": 15324, + "start": 17307, + "end": 17312, "loc": { "start": { - "line": 394, + "line": 448, "column": 18 }, "end": { - "line": 394, + "line": 448, "column": 23 } } @@ -71966,15 +71966,15 @@ "updateContext": null }, "value": "=", - "start": 15325, - "end": 15326, + "start": 17313, + "end": 17314, "loc": { "start": { - "line": 394, + "line": 448, "column": 24 }, "end": { - "line": 394, + "line": 448, "column": 25 } } @@ -71993,15 +71993,15 @@ "updateContext": null }, "value": "", - "start": 15327, - "end": 15329, + "start": 17315, + "end": 17317, "loc": { "start": { - "line": 394, + "line": 448, "column": 26 }, "end": { - "line": 394, + "line": 448, "column": 28 } } @@ -72019,15 +72019,15 @@ "binop": null, "updateContext": null }, - "start": 15329, - "end": 15330, + "start": 17317, + "end": 17318, "loc": { "start": { - "line": 394, + "line": 448, "column": 28 }, "end": { - "line": 394, + "line": 448, "column": 29 } } @@ -72045,15 +72045,15 @@ "binop": null }, "value": "stats", - "start": 15343, - "end": 15348, + "start": 17331, + "end": 17336, "loc": { "start": { - "line": 395, + "line": 449, "column": 12 }, "end": { - "line": 395, + "line": 449, "column": 17 } } @@ -72071,15 +72071,15 @@ "binop": null, "updateContext": null }, - "start": 15348, - "end": 15349, + "start": 17336, + "end": 17337, "loc": { "start": { - "line": 395, + "line": 449, "column": 17 }, "end": { - "line": 395, + "line": 449, "column": 18 } } @@ -72097,15 +72097,15 @@ "binop": null }, "value": "author", - "start": 15349, - "end": 15355, + "start": 17337, + "end": 17343, "loc": { "start": { - "line": 395, + "line": 449, "column": 18 }, "end": { - "line": 395, + "line": 449, "column": 24 } } @@ -72124,15 +72124,15 @@ "updateContext": null }, "value": "=", - "start": 15356, - "end": 15357, + "start": 17344, + "end": 17345, "loc": { "start": { - "line": 395, + "line": 449, "column": 25 }, "end": { - "line": 395, + "line": 449, "column": 26 } } @@ -72151,15 +72151,15 @@ "updateContext": null }, "value": "", - "start": 15358, - "end": 15360, + "start": 17346, + "end": 17348, "loc": { "start": { - "line": 395, + "line": 449, "column": 27 }, "end": { - "line": 395, + "line": 449, "column": 29 } } @@ -72177,15 +72177,15 @@ "binop": null, "updateContext": null }, - "start": 15360, - "end": 15361, + "start": 17348, + "end": 17349, "loc": { "start": { - "line": 395, + "line": 449, "column": 29 }, "end": { - "line": 395, + "line": 449, "column": 30 } } @@ -72203,15 +72203,15 @@ "binop": null }, "value": "stats", - "start": 15374, - "end": 15379, + "start": 17362, + "end": 17367, "loc": { "start": { - "line": 396, + "line": 450, "column": 12 }, "end": { - "line": 396, + "line": 450, "column": 17 } } @@ -72229,15 +72229,15 @@ "binop": null, "updateContext": null }, - "start": 15379, - "end": 15380, + "start": 17367, + "end": 17368, "loc": { "start": { - "line": 396, + "line": 450, "column": 17 }, "end": { - "line": 396, + "line": 450, "column": 18 } } @@ -72255,15 +72255,15 @@ "binop": null }, "value": "created", - "start": 15380, - "end": 15387, + "start": 17368, + "end": 17375, "loc": { "start": { - "line": 396, + "line": 450, "column": 18 }, "end": { - "line": 396, + "line": 450, "column": 25 } } @@ -72282,15 +72282,15 @@ "updateContext": null }, "value": "=", - "start": 15388, - "end": 15389, + "start": 17376, + "end": 17377, "loc": { "start": { - "line": 396, + "line": 450, "column": 26 }, "end": { - "line": 396, + "line": 450, "column": 27 } } @@ -72309,15 +72309,15 @@ "updateContext": null }, "value": "", - "start": 15390, - "end": 15392, + "start": 17378, + "end": 17380, "loc": { "start": { - "line": 396, + "line": 450, "column": 28 }, "end": { - "line": 396, + "line": 450, "column": 30 } } @@ -72335,15 +72335,15 @@ "binop": null, "updateContext": null }, - "start": 15392, - "end": 15393, + "start": 17380, + "end": 17381, "loc": { "start": { - "line": 396, + "line": 450, "column": 30 }, "end": { - "line": 396, + "line": 450, "column": 31 } } @@ -72361,15 +72361,15 @@ "binop": null }, "value": "stats", - "start": 15406, - "end": 15411, + "start": 17394, + "end": 17399, "loc": { "start": { - "line": 397, + "line": 451, "column": 12 }, "end": { - "line": 397, + "line": 451, "column": 17 } } @@ -72387,15 +72387,15 @@ "binop": null, "updateContext": null }, - "start": 15411, - "end": 15412, + "start": 17399, + "end": 17400, "loc": { "start": { - "line": 397, + "line": 451, "column": 17 }, "end": { - "line": 397, + "line": 451, "column": 18 } } @@ -72413,15 +72413,15 @@ "binop": null }, "value": "numMetaObjects", - "start": 15412, - "end": 15426, + "start": 17400, + "end": 17414, "loc": { "start": { - "line": 397, + "line": 451, "column": 18 }, "end": { - "line": 397, + "line": 451, "column": 32 } } @@ -72440,15 +72440,15 @@ "updateContext": null }, "value": "=", - "start": 15427, - "end": 15428, + "start": 17415, + "end": 17416, "loc": { "start": { - "line": 397, + "line": 451, "column": 33 }, "end": { - "line": 397, + "line": 451, "column": 34 } } @@ -72467,15 +72467,15 @@ "updateContext": null }, "value": 0, - "start": 15429, - "end": 15430, + "start": 17417, + "end": 17418, "loc": { "start": { - "line": 397, + "line": 451, "column": 35 }, "end": { - "line": 397, + "line": 451, "column": 36 } } @@ -72493,15 +72493,15 @@ "binop": null, "updateContext": null }, - "start": 15430, - "end": 15431, + "start": 17418, + "end": 17419, "loc": { "start": { - "line": 397, + "line": 451, "column": 36 }, "end": { - "line": 397, + "line": 451, "column": 37 } } @@ -72519,15 +72519,15 @@ "binop": null }, "value": "stats", - "start": 15444, - "end": 15449, + "start": 17432, + "end": 17437, "loc": { "start": { - "line": 398, + "line": 452, "column": 12 }, "end": { - "line": 398, + "line": 452, "column": 17 } } @@ -72545,15 +72545,15 @@ "binop": null, "updateContext": null }, - "start": 15449, - "end": 15450, + "start": 17437, + "end": 17438, "loc": { "start": { - "line": 398, + "line": 452, "column": 17 }, "end": { - "line": 398, + "line": 452, "column": 18 } } @@ -72571,15 +72571,15 @@ "binop": null }, "value": "numPropertySets", - "start": 15450, - "end": 15465, + "start": 17438, + "end": 17453, "loc": { "start": { - "line": 398, + "line": 452, "column": 18 }, "end": { - "line": 398, + "line": 452, "column": 33 } } @@ -72598,15 +72598,15 @@ "updateContext": null }, "value": "=", - "start": 15466, - "end": 15467, + "start": 17454, + "end": 17455, "loc": { "start": { - "line": 398, + "line": 452, "column": 34 }, "end": { - "line": 398, + "line": 452, "column": 35 } } @@ -72625,15 +72625,15 @@ "updateContext": null }, "value": 0, - "start": 15468, - "end": 15469, + "start": 17456, + "end": 17457, "loc": { "start": { - "line": 398, + "line": 452, "column": 36 }, "end": { - "line": 398, + "line": 452, "column": 37 } } @@ -72651,15 +72651,15 @@ "binop": null, "updateContext": null }, - "start": 15469, - "end": 15470, + "start": 17457, + "end": 17458, "loc": { "start": { - "line": 398, + "line": 452, "column": 37 }, "end": { - "line": 398, + "line": 452, "column": 38 } } @@ -72677,15 +72677,15 @@ "binop": null }, "value": "stats", - "start": 15483, - "end": 15488, + "start": 17471, + "end": 17476, "loc": { "start": { - "line": 399, + "line": 453, "column": 12 }, "end": { - "line": 399, + "line": 453, "column": 17 } } @@ -72703,15 +72703,15 @@ "binop": null, "updateContext": null }, - "start": 15488, - "end": 15489, + "start": 17476, + "end": 17477, "loc": { "start": { - "line": 399, + "line": 453, "column": 17 }, "end": { - "line": 399, + "line": 453, "column": 18 } } @@ -72729,15 +72729,15 @@ "binop": null }, "value": "numObjects", - "start": 15489, - "end": 15499, + "start": 17477, + "end": 17487, "loc": { "start": { - "line": 399, + "line": 453, "column": 18 }, "end": { - "line": 399, + "line": 453, "column": 28 } } @@ -72756,15 +72756,15 @@ "updateContext": null }, "value": "=", - "start": 15500, - "end": 15501, + "start": 17488, + "end": 17489, "loc": { "start": { - "line": 399, + "line": 453, "column": 29 }, "end": { - "line": 399, + "line": 453, "column": 30 } } @@ -72783,15 +72783,15 @@ "updateContext": null }, "value": 0, - "start": 15502, - "end": 15503, + "start": 17490, + "end": 17491, "loc": { "start": { - "line": 399, + "line": 453, "column": 31 }, "end": { - "line": 399, + "line": 453, "column": 32 } } @@ -72809,15 +72809,15 @@ "binop": null, "updateContext": null }, - "start": 15503, - "end": 15504, + "start": 17491, + "end": 17492, "loc": { "start": { - "line": 399, + "line": 453, "column": 32 }, "end": { - "line": 399, + "line": 453, "column": 33 } } @@ -72835,15 +72835,15 @@ "binop": null }, "value": "stats", - "start": 15517, - "end": 15522, + "start": 17505, + "end": 17510, "loc": { "start": { - "line": 400, + "line": 454, "column": 12 }, "end": { - "line": 400, + "line": 454, "column": 17 } } @@ -72861,15 +72861,15 @@ "binop": null, "updateContext": null }, - "start": 15522, - "end": 15523, + "start": 17510, + "end": 17511, "loc": { "start": { - "line": 400, + "line": 454, "column": 17 }, "end": { - "line": 400, + "line": 454, "column": 18 } } @@ -72887,15 +72887,15 @@ "binop": null }, "value": "numGeometries", - "start": 15523, - "end": 15536, + "start": 17511, + "end": 17524, "loc": { "start": { - "line": 400, + "line": 454, "column": 18 }, "end": { - "line": 400, + "line": 454, "column": 31 } } @@ -72914,15 +72914,15 @@ "updateContext": null }, "value": "=", - "start": 15537, - "end": 15538, + "start": 17525, + "end": 17526, "loc": { "start": { - "line": 400, + "line": 454, "column": 32 }, "end": { - "line": 400, + "line": 454, "column": 33 } } @@ -72941,15 +72941,15 @@ "updateContext": null }, "value": 0, - "start": 15539, - "end": 15540, + "start": 17527, + "end": 17528, "loc": { "start": { - "line": 400, + "line": 454, "column": 34 }, "end": { - "line": 400, + "line": 454, "column": 35 } } @@ -72967,15 +72967,15 @@ "binop": null, "updateContext": null }, - "start": 15540, - "end": 15541, + "start": 17528, + "end": 17529, "loc": { "start": { - "line": 400, + "line": 454, "column": 35 }, "end": { - "line": 400, + "line": 454, "column": 36 } } @@ -72993,15 +72993,15 @@ "binop": null }, "value": "stats", - "start": 15554, - "end": 15559, + "start": 17542, + "end": 17547, "loc": { "start": { - "line": 401, + "line": 455, "column": 12 }, "end": { - "line": 401, + "line": 455, "column": 17 } } @@ -73019,15 +73019,15 @@ "binop": null, "updateContext": null }, - "start": 15559, - "end": 15560, + "start": 17547, + "end": 17548, "loc": { "start": { - "line": 401, + "line": 455, "column": 17 }, "end": { - "line": 401, + "line": 455, "column": 18 } } @@ -73045,15 +73045,15 @@ "binop": null }, "value": "numTriangles", - "start": 15560, - "end": 15572, + "start": 17548, + "end": 17560, "loc": { "start": { - "line": 401, + "line": 455, "column": 18 }, "end": { - "line": 401, + "line": 455, "column": 30 } } @@ -73072,15 +73072,15 @@ "updateContext": null }, "value": "=", - "start": 15573, - "end": 15574, + "start": 17561, + "end": 17562, "loc": { "start": { - "line": 401, + "line": 455, "column": 31 }, "end": { - "line": 401, + "line": 455, "column": 32 } } @@ -73099,15 +73099,15 @@ "updateContext": null }, "value": 0, - "start": 15575, - "end": 15576, + "start": 17563, + "end": 17564, "loc": { "start": { - "line": 401, + "line": 455, "column": 33 }, "end": { - "line": 401, + "line": 455, "column": 34 } } @@ -73125,15 +73125,15 @@ "binop": null, "updateContext": null }, - "start": 15576, - "end": 15577, + "start": 17564, + "end": 17565, "loc": { "start": { - "line": 401, + "line": 455, "column": 34 }, "end": { - "line": 401, + "line": 455, "column": 35 } } @@ -73151,15 +73151,15 @@ "binop": null }, "value": "stats", - "start": 15590, - "end": 15595, + "start": 17578, + "end": 17583, "loc": { "start": { - "line": 402, + "line": 456, "column": 12 }, "end": { - "line": 402, + "line": 456, "column": 17 } } @@ -73177,15 +73177,15 @@ "binop": null, "updateContext": null }, - "start": 15595, - "end": 15596, + "start": 17583, + "end": 17584, "loc": { "start": { - "line": 402, + "line": 456, "column": 17 }, "end": { - "line": 402, + "line": 456, "column": 18 } } @@ -73203,15 +73203,15 @@ "binop": null }, "value": "numVertices", - "start": 15596, - "end": 15607, + "start": 17584, + "end": 17595, "loc": { "start": { - "line": 402, + "line": 456, "column": 18 }, "end": { - "line": 402, + "line": 456, "column": 29 } } @@ -73230,15 +73230,15 @@ "updateContext": null }, "value": "=", - "start": 15608, - "end": 15609, + "start": 17596, + "end": 17597, "loc": { "start": { - "line": 402, + "line": 456, "column": 30 }, "end": { - "line": 402, + "line": 456, "column": 31 } } @@ -73257,15 +73257,15 @@ "updateContext": null }, "value": 0, - "start": 15610, - "end": 15611, + "start": 17598, + "end": 17599, "loc": { "start": { - "line": 402, + "line": 456, "column": 32 }, "end": { - "line": 402, + "line": 456, "column": 33 } } @@ -73283,15 +73283,15 @@ "binop": null, "updateContext": null }, - "start": 15611, - "end": 15612, + "start": 17599, + "end": 17600, "loc": { "start": { - "line": 402, + "line": 456, "column": 33 }, "end": { - "line": 402, + "line": 456, "column": 34 } } @@ -73311,15 +73311,15 @@ "updateContext": null }, "value": "try", - "start": 15626, - "end": 15629, + "start": 17614, + "end": 17617, "loc": { "start": { - "line": 404, + "line": 458, "column": 12 }, "end": { - "line": 404, + "line": 458, "column": 15 } } @@ -73336,15 +73336,15 @@ "postfix": false, "binop": null }, - "start": 15630, - "end": 15631, + "start": 17618, + "end": 17619, "loc": { "start": { - "line": 404, + "line": 458, "column": 16 }, "end": { - "line": 404, + "line": 458, "column": 17 } } @@ -73364,15 +73364,15 @@ "updateContext": null }, "value": "const", - "start": 15649, - "end": 15654, + "start": 17637, + "end": 17642, "loc": { "start": { - "line": 406, + "line": 460, "column": 16 }, "end": { - "line": 406, + "line": 460, "column": 21 } } @@ -73390,15 +73390,15 @@ "binop": null }, "value": "lasHeader", - "start": 15655, - "end": 15664, + "start": 17643, + "end": 17652, "loc": { "start": { - "line": 406, + "line": 460, "column": 22 }, "end": { - "line": 406, + "line": 460, "column": 31 } } @@ -73417,15 +73417,15 @@ "updateContext": null }, "value": "=", - "start": 15665, - "end": 15666, + "start": 17653, + "end": 17654, "loc": { "start": { - "line": 406, + "line": 460, "column": 32 }, "end": { - "line": 406, + "line": 460, "column": 33 } } @@ -73443,15 +73443,15 @@ "binop": null }, "value": "loadLASHeader", - "start": 15667, - "end": 15680, + "start": 17655, + "end": 17668, "loc": { "start": { - "line": 406, + "line": 460, "column": 34 }, "end": { - "line": 406, + "line": 460, "column": 47 } } @@ -73468,15 +73468,15 @@ "postfix": false, "binop": null }, - "start": 15680, - "end": 15681, + "start": 17668, + "end": 17669, "loc": { "start": { - "line": 406, + "line": 460, "column": 47 }, "end": { - "line": 406, + "line": 460, "column": 48 } } @@ -73494,15 +73494,15 @@ "binop": null }, "value": "arrayBuffer", - "start": 15681, - "end": 15692, + "start": 17669, + "end": 17680, "loc": { "start": { - "line": 406, + "line": 460, "column": 48 }, "end": { - "line": 406, + "line": 460, "column": 59 } } @@ -73519,15 +73519,15 @@ "postfix": false, "binop": null }, - "start": 15692, - "end": 15693, + "start": 17680, + "end": 17681, "loc": { "start": { - "line": 406, + "line": 460, "column": 59 }, "end": { - "line": 406, + "line": 460, "column": 60 } } @@ -73545,15 +73545,15 @@ "binop": null, "updateContext": null }, - "start": 15693, - "end": 15694, + "start": 17681, + "end": 17682, "loc": { "start": { - "line": 406, + "line": 460, "column": 60 }, "end": { - "line": 406, + "line": 460, "column": 61 } } @@ -73571,15 +73571,15 @@ "binop": null }, "value": "parse", - "start": 15712, - "end": 15717, + "start": 17700, + "end": 17705, "loc": { "start": { - "line": 408, + "line": 462, "column": 16 }, "end": { - "line": 408, + "line": 462, "column": 21 } } @@ -73596,15 +73596,15 @@ "postfix": false, "binop": null }, - "start": 15717, - "end": 15718, + "start": 17705, + "end": 17706, "loc": { "start": { - "line": 408, + "line": 462, "column": 21 }, "end": { - "line": 408, + "line": 462, "column": 22 } } @@ -73622,15 +73622,15 @@ "binop": null }, "value": "arrayBuffer", - "start": 15718, - "end": 15729, + "start": 17706, + "end": 17717, "loc": { "start": { - "line": 408, + "line": 462, "column": 22 }, "end": { - "line": 408, + "line": 462, "column": 33 } } @@ -73648,15 +73648,15 @@ "binop": null, "updateContext": null }, - "start": 15729, - "end": 15730, + "start": 17717, + "end": 17718, "loc": { "start": { - "line": 408, + "line": 462, "column": 33 }, "end": { - "line": 408, + "line": 462, "column": 34 } } @@ -73674,15 +73674,15 @@ "binop": null }, "value": "LASLoader", - "start": 15731, - "end": 15740, + "start": 17719, + "end": 17728, "loc": { "start": { - "line": 408, + "line": 462, "column": 35 }, "end": { - "line": 408, + "line": 462, "column": 44 } } @@ -73700,15 +73700,15 @@ "binop": null, "updateContext": null }, - "start": 15740, - "end": 15741, + "start": 17728, + "end": 17729, "loc": { "start": { - "line": 408, + "line": 462, "column": 44 }, "end": { - "line": 408, + "line": 462, "column": 45 } } @@ -73726,15 +73726,15 @@ "binop": null }, "value": "options", - "start": 15742, - "end": 15749, + "start": 17730, + "end": 17737, "loc": { "start": { - "line": 408, + "line": 462, "column": 46 }, "end": { - "line": 408, + "line": 462, "column": 53 } } @@ -73751,15 +73751,15 @@ "postfix": false, "binop": null }, - "start": 15749, - "end": 15750, + "start": 17737, + "end": 17738, "loc": { "start": { - "line": 408, + "line": 462, "column": 53 }, "end": { - "line": 408, + "line": 462, "column": 54 } } @@ -73777,15 +73777,15 @@ "binop": null, "updateContext": null }, - "start": 15750, - "end": 15751, + "start": 17738, + "end": 17739, "loc": { "start": { - "line": 408, + "line": 462, "column": 54 }, "end": { - "line": 408, + "line": 462, "column": 55 } } @@ -73803,15 +73803,15 @@ "binop": null }, "value": "then", - "start": 15751, - "end": 15755, + "start": 17739, + "end": 17743, "loc": { "start": { - "line": 408, + "line": 462, "column": 55 }, "end": { - "line": 408, + "line": 462, "column": 59 } } @@ -73828,15 +73828,15 @@ "postfix": false, "binop": null }, - "start": 15755, - "end": 15756, + "start": 17743, + "end": 17744, "loc": { "start": { - "line": 408, + "line": 462, "column": 59 }, "end": { - "line": 408, + "line": 462, "column": 60 } } @@ -73853,15 +73853,15 @@ "postfix": false, "binop": null }, - "start": 15756, - "end": 15757, + "start": 17744, + "end": 17745, "loc": { "start": { - "line": 408, + "line": 462, "column": 60 }, "end": { - "line": 408, + "line": 462, "column": 61 } } @@ -73879,15 +73879,15 @@ "binop": null }, "value": "parsedData", - "start": 15757, - "end": 15767, + "start": 17745, + "end": 17755, "loc": { "start": { - "line": 408, + "line": 462, "column": 61 }, "end": { - "line": 408, + "line": 462, "column": 71 } } @@ -73904,15 +73904,15 @@ "postfix": false, "binop": null }, - "start": 15767, - "end": 15768, + "start": 17755, + "end": 17756, "loc": { "start": { - "line": 408, + "line": 462, "column": 71 }, "end": { - "line": 408, + "line": 462, "column": 72 } } @@ -73930,15 +73930,15 @@ "binop": null, "updateContext": null }, - "start": 15769, - "end": 15771, + "start": 17757, + "end": 17759, "loc": { "start": { - "line": 408, + "line": 462, "column": 73 }, "end": { - "line": 408, + "line": 462, "column": 75 } } @@ -73955,15 +73955,15 @@ "postfix": false, "binop": null }, - "start": 15772, - "end": 15773, + "start": 17760, + "end": 17761, "loc": { "start": { - "line": 408, + "line": 462, "column": 76 }, "end": { - "line": 408, + "line": 462, "column": 77 } } @@ -73983,15 +73983,15 @@ "updateContext": null }, "value": "const", - "start": 15795, - "end": 15800, + "start": 17783, + "end": 17788, "loc": { "start": { - "line": 410, + "line": 464, "column": 20 }, "end": { - "line": 410, + "line": 464, "column": 25 } } @@ -74009,15 +74009,15 @@ "binop": null }, "value": "attributes", - "start": 15801, - "end": 15811, + "start": 17789, + "end": 17799, "loc": { "start": { - "line": 410, + "line": 464, "column": 26 }, "end": { - "line": 410, + "line": 464, "column": 36 } } @@ -74036,15 +74036,15 @@ "updateContext": null }, "value": "=", - "start": 15812, - "end": 15813, + "start": 17800, + "end": 17801, "loc": { "start": { - "line": 410, + "line": 464, "column": 37 }, "end": { - "line": 410, + "line": 464, "column": 38 } } @@ -74062,15 +74062,15 @@ "binop": null }, "value": "parsedData", - "start": 15814, - "end": 15824, + "start": 17802, + "end": 17812, "loc": { "start": { - "line": 410, + "line": 464, "column": 39 }, "end": { - "line": 410, + "line": 464, "column": 49 } } @@ -74088,15 +74088,15 @@ "binop": null, "updateContext": null }, - "start": 15824, - "end": 15825, + "start": 17812, + "end": 17813, "loc": { "start": { - "line": 410, + "line": 464, "column": 49 }, "end": { - "line": 410, + "line": 464, "column": 50 } } @@ -74114,15 +74114,15 @@ "binop": null }, "value": "attributes", - "start": 15825, - "end": 15835, + "start": 17813, + "end": 17823, "loc": { "start": { - "line": 410, + "line": 464, "column": 50 }, "end": { - "line": 410, + "line": 464, "column": 60 } } @@ -74140,15 +74140,15 @@ "binop": null, "updateContext": null }, - "start": 15835, - "end": 15836, + "start": 17823, + "end": 17824, "loc": { "start": { - "line": 410, + "line": 464, "column": 60 }, "end": { - "line": 410, + "line": 464, "column": 61 } } @@ -74168,15 +74168,15 @@ "updateContext": null }, "value": "const", - "start": 15857, - "end": 15862, + "start": 17845, + "end": 17850, "loc": { "start": { - "line": 411, + "line": 465, "column": 20 }, "end": { - "line": 411, + "line": 465, "column": 25 } } @@ -74194,15 +74194,15 @@ "binop": null }, "value": "loaderData", - "start": 15863, - "end": 15873, + "start": 17851, + "end": 17861, "loc": { "start": { - "line": 411, + "line": 465, "column": 26 }, "end": { - "line": 411, + "line": 465, "column": 36 } } @@ -74221,15 +74221,15 @@ "updateContext": null }, "value": "=", - "start": 15874, - "end": 15875, + "start": 17862, + "end": 17863, "loc": { "start": { - "line": 411, + "line": 465, "column": 37 }, "end": { - "line": 411, + "line": 465, "column": 38 } } @@ -74247,15 +74247,15 @@ "binop": null }, "value": "parsedData", - "start": 15876, - "end": 15886, + "start": 17864, + "end": 17874, "loc": { "start": { - "line": 411, + "line": 465, "column": 39 }, "end": { - "line": 411, + "line": 465, "column": 49 } } @@ -74273,15 +74273,15 @@ "binop": null, "updateContext": null }, - "start": 15886, - "end": 15887, + "start": 17874, + "end": 17875, "loc": { "start": { - "line": 411, + "line": 465, "column": 49 }, "end": { - "line": 411, + "line": 465, "column": 50 } } @@ -74299,15 +74299,15 @@ "binop": null }, "value": "loaderData", - "start": 15887, - "end": 15897, + "start": 17875, + "end": 17885, "loc": { "start": { - "line": 411, + "line": 465, "column": 50 }, "end": { - "line": 411, + "line": 465, "column": 60 } } @@ -74325,15 +74325,15 @@ "binop": null, "updateContext": null }, - "start": 15897, - "end": 15898, + "start": 17885, + "end": 17886, "loc": { "start": { - "line": 411, + "line": 465, "column": 60 }, "end": { - "line": 411, + "line": 465, "column": 61 } } @@ -74353,15 +74353,15 @@ "updateContext": null }, "value": "const", - "start": 15919, - "end": 15924, + "start": 17907, + "end": 17912, "loc": { "start": { - "line": 412, + "line": 466, "column": 20 }, "end": { - "line": 412, + "line": 466, "column": 25 } } @@ -74379,15 +74379,15 @@ "binop": null }, "value": "pointsFormatId", - "start": 15925, - "end": 15939, + "start": 17913, + "end": 17927, "loc": { "start": { - "line": 412, + "line": 466, "column": 26 }, "end": { - "line": 412, + "line": 466, "column": 40 } } @@ -74406,15 +74406,15 @@ "updateContext": null }, "value": "=", - "start": 15940, - "end": 15941, + "start": 17928, + "end": 17929, "loc": { "start": { - "line": 412, + "line": 466, "column": 41 }, "end": { - "line": 412, + "line": 466, "column": 42 } } @@ -74432,15 +74432,15 @@ "binop": null }, "value": "loaderData", - "start": 15942, - "end": 15952, + "start": 17930, + "end": 17940, "loc": { "start": { - "line": 412, + "line": 466, "column": 43 }, "end": { - "line": 412, + "line": 466, "column": 53 } } @@ -74458,15 +74458,15 @@ "binop": null, "updateContext": null }, - "start": 15952, - "end": 15953, + "start": 17940, + "end": 17941, "loc": { "start": { - "line": 412, + "line": 466, "column": 53 }, "end": { - "line": 412, + "line": 466, "column": 54 } } @@ -74484,15 +74484,15 @@ "binop": null }, "value": "pointsFormatId", - "start": 15953, - "end": 15967, + "start": 17941, + "end": 17955, "loc": { "start": { - "line": 412, + "line": 466, "column": 54 }, "end": { - "line": 412, + "line": 466, "column": 68 } } @@ -74511,15 +74511,15 @@ "updateContext": null }, "value": "!==", - "start": 15968, - "end": 15971, + "start": 17956, + "end": 17959, "loc": { "start": { - "line": 412, + "line": 466, "column": 69 }, "end": { - "line": 412, + "line": 466, "column": 72 } } @@ -74537,15 +74537,15 @@ "binop": null }, "value": "undefined", - "start": 15972, - "end": 15981, + "start": 17960, + "end": 17969, "loc": { "start": { - "line": 412, + "line": 466, "column": 73 }, "end": { - "line": 412, + "line": 466, "column": 82 } } @@ -74563,15 +74563,15 @@ "binop": null, "updateContext": null }, - "start": 15982, - "end": 15983, + "start": 17970, + "end": 17971, "loc": { "start": { - "line": 412, + "line": 466, "column": 83 }, "end": { - "line": 412, + "line": 466, "column": 84 } } @@ -74589,15 +74589,15 @@ "binop": null }, "value": "loaderData", - "start": 15984, - "end": 15994, + "start": 17972, + "end": 17982, "loc": { "start": { - "line": 412, + "line": 466, "column": 85 }, "end": { - "line": 412, + "line": 466, "column": 95 } } @@ -74615,15 +74615,15 @@ "binop": null, "updateContext": null }, - "start": 15994, - "end": 15995, + "start": 17982, + "end": 17983, "loc": { "start": { - "line": 412, + "line": 466, "column": 95 }, "end": { - "line": 412, + "line": 466, "column": 96 } } @@ -74641,15 +74641,15 @@ "binop": null }, "value": "pointsFormatId", - "start": 15995, - "end": 16009, + "start": 17983, + "end": 17997, "loc": { "start": { - "line": 412, + "line": 466, "column": 96 }, "end": { - "line": 412, + "line": 466, "column": 110 } } @@ -74667,15 +74667,15 @@ "binop": null, "updateContext": null }, - "start": 16010, - "end": 16011, + "start": 17998, + "end": 17999, "loc": { "start": { - "line": 412, + "line": 466, "column": 111 }, "end": { - "line": 412, + "line": 466, "column": 112 } } @@ -74694,15 +74694,15 @@ "updateContext": null }, "value": "-", - "start": 16012, - "end": 16013, + "start": 18000, + "end": 18001, "loc": { "start": { - "line": 412, + "line": 466, "column": 113 }, "end": { - "line": 412, + "line": 466, "column": 114 } } @@ -74721,15 +74721,15 @@ "updateContext": null }, "value": 1, - "start": 16013, - "end": 16014, + "start": 18001, + "end": 18002, "loc": { "start": { - "line": 412, + "line": 466, "column": 114 }, "end": { - "line": 412, + "line": 466, "column": 115 } } @@ -74747,15 +74747,15 @@ "binop": null, "updateContext": null }, - "start": 16014, - "end": 16015, + "start": 18002, + "end": 18003, "loc": { "start": { - "line": 412, + "line": 466, "column": 115 }, "end": { - "line": 412, + "line": 466, "column": 116 } } @@ -74775,15 +74775,15 @@ "updateContext": null }, "value": "if", - "start": 16037, - "end": 16039, + "start": 18025, + "end": 18027, "loc": { "start": { - "line": 414, + "line": 468, "column": 20 }, "end": { - "line": 414, + "line": 468, "column": 22 } } @@ -74800,15 +74800,15 @@ "postfix": false, "binop": null }, - "start": 16040, - "end": 16041, + "start": 18028, + "end": 18029, "loc": { "start": { - "line": 414, + "line": 468, "column": 23 }, "end": { - "line": 414, + "line": 468, "column": 24 } } @@ -74827,15 +74827,15 @@ "updateContext": null }, "value": "!", - "start": 16041, - "end": 16042, + "start": 18029, + "end": 18030, "loc": { "start": { - "line": 414, + "line": 468, "column": 24 }, "end": { - "line": 414, + "line": 468, "column": 25 } } @@ -74853,15 +74853,15 @@ "binop": null }, "value": "attributes", - "start": 16042, - "end": 16052, + "start": 18030, + "end": 18040, "loc": { "start": { - "line": 414, + "line": 468, "column": 25 }, "end": { - "line": 414, + "line": 468, "column": 35 } } @@ -74879,15 +74879,15 @@ "binop": null, "updateContext": null }, - "start": 16052, - "end": 16053, + "start": 18040, + "end": 18041, "loc": { "start": { - "line": 414, + "line": 468, "column": 35 }, "end": { - "line": 414, + "line": 468, "column": 36 } } @@ -74905,15 +74905,15 @@ "binop": null }, "value": "POSITION", - "start": 16053, - "end": 16061, + "start": 18041, + "end": 18049, "loc": { "start": { - "line": 414, + "line": 468, "column": 36 }, "end": { - "line": 414, + "line": 468, "column": 44 } } @@ -74930,15 +74930,15 @@ "postfix": false, "binop": null }, - "start": 16061, - "end": 16062, + "start": 18049, + "end": 18050, "loc": { "start": { - "line": 414, + "line": 468, "column": 44 }, "end": { - "line": 414, + "line": 468, "column": 45 } } @@ -74955,15 +74955,15 @@ "postfix": false, "binop": null }, - "start": 16063, - "end": 16064, + "start": 18051, + "end": 18052, "loc": { "start": { - "line": 414, + "line": 468, "column": 46 }, "end": { - "line": 414, + "line": 468, "column": 47 } } @@ -74981,15 +74981,15 @@ "binop": null }, "value": "sceneModel", - "start": 16089, - "end": 16099, + "start": 18077, + "end": 18087, "loc": { "start": { - "line": 415, + "line": 469, "column": 24 }, "end": { - "line": 415, + "line": 469, "column": 34 } } @@ -75007,15 +75007,15 @@ "binop": null, "updateContext": null }, - "start": 16099, - "end": 16100, + "start": 18087, + "end": 18088, "loc": { "start": { - "line": 415, + "line": 469, "column": 34 }, "end": { - "line": 415, + "line": 469, "column": 35 } } @@ -75033,15 +75033,15 @@ "binop": null }, "value": "finalize", - "start": 16100, - "end": 16108, + "start": 18088, + "end": 18096, "loc": { "start": { - "line": 415, + "line": 469, "column": 35 }, "end": { - "line": 415, + "line": 469, "column": 43 } } @@ -75058,15 +75058,15 @@ "postfix": false, "binop": null }, - "start": 16108, - "end": 16109, + "start": 18096, + "end": 18097, "loc": { "start": { - "line": 415, + "line": 469, "column": 43 }, "end": { - "line": 415, + "line": 469, "column": 44 } } @@ -75083,15 +75083,15 @@ "postfix": false, "binop": null }, - "start": 16109, - "end": 16110, + "start": 18097, + "end": 18098, "loc": { "start": { - "line": 415, + "line": 469, "column": 44 }, "end": { - "line": 415, + "line": 469, "column": 45 } } @@ -75109,15 +75109,15 @@ "binop": null, "updateContext": null }, - "start": 16110, - "end": 16111, + "start": 18098, + "end": 18099, "loc": { "start": { - "line": 415, + "line": 469, "column": 45 }, "end": { - "line": 415, + "line": 469, "column": 46 } } @@ -75135,15 +75135,15 @@ "binop": null }, "value": "reject", - "start": 16136, - "end": 16142, + "start": 18124, + "end": 18130, "loc": { "start": { - "line": 416, + "line": 470, "column": 24 }, "end": { - "line": 416, + "line": 470, "column": 30 } } @@ -75160,15 +75160,15 @@ "postfix": false, "binop": null }, - "start": 16142, - "end": 16143, + "start": 18130, + "end": 18131, "loc": { "start": { - "line": 416, + "line": 470, "column": 30 }, "end": { - "line": 416, + "line": 470, "column": 31 } } @@ -75187,15 +75187,15 @@ "updateContext": null }, "value": "No positions found in file", - "start": 16143, - "end": 16171, + "start": 18131, + "end": 18159, "loc": { "start": { - "line": 416, + "line": 470, "column": 31 }, "end": { - "line": 416, + "line": 470, "column": 59 } } @@ -75212,15 +75212,15 @@ "postfix": false, "binop": null }, - "start": 16171, - "end": 16172, + "start": 18159, + "end": 18160, "loc": { "start": { - "line": 416, + "line": 470, "column": 59 }, "end": { - "line": 416, + "line": 470, "column": 60 } } @@ -75238,15 +75238,15 @@ "binop": null, "updateContext": null }, - "start": 16172, - "end": 16173, + "start": 18160, + "end": 18161, "loc": { "start": { - "line": 416, + "line": 470, "column": 60 }, "end": { - "line": 416, + "line": 470, "column": 61 } } @@ -75266,15 +75266,15 @@ "updateContext": null }, "value": "return", - "start": 16198, - "end": 16204, + "start": 18186, + "end": 18192, "loc": { "start": { - "line": 417, + "line": 471, "column": 24 }, "end": { - "line": 417, + "line": 471, "column": 30 } } @@ -75292,15 +75292,15 @@ "binop": null, "updateContext": null }, - "start": 16204, - "end": 16205, + "start": 18192, + "end": 18193, "loc": { "start": { - "line": 417, + "line": 471, "column": 30 }, "end": { - "line": 417, + "line": 471, "column": 31 } } @@ -75317,15 +75317,15 @@ "postfix": false, "binop": null }, - "start": 16226, - "end": 16227, + "start": 18214, + "end": 18215, "loc": { "start": { - "line": 418, + "line": 472, "column": 20 }, "end": { - "line": 418, + "line": 472, "column": 21 } } @@ -75345,15 +75345,15 @@ "updateContext": null }, "value": "let", - "start": 16249, - "end": 16252, + "start": 18237, + "end": 18240, "loc": { "start": { - "line": 420, + "line": 474, "column": 20 }, "end": { - "line": 420, + "line": 474, "column": 23 } } @@ -75371,15 +75371,15 @@ "binop": null }, "value": "positionsValue", - "start": 16253, - "end": 16267, + "start": 18241, + "end": 18255, "loc": { "start": { - "line": 420, + "line": 474, "column": 24 }, "end": { - "line": 420, + "line": 474, "column": 38 } } @@ -75399,15 +75399,15 @@ "updateContext": null }, "value": "let", - "start": 16288, - "end": 16291, + "start": 18276, + "end": 18279, "loc": { "start": { - "line": 421, + "line": 475, "column": 20 }, "end": { - "line": 421, + "line": 475, "column": 23 } } @@ -75425,15 +75425,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 16292, - "end": 16308, + "start": 18280, + "end": 18296, "loc": { "start": { - "line": 421, + "line": 475, "column": 24 }, "end": { - "line": 421, + "line": 475, "column": 40 } } @@ -75451,15 +75451,15 @@ "binop": null, "updateContext": null }, - "start": 16308, - "end": 16309, + "start": 18296, + "end": 18297, "loc": { "start": { - "line": 421, + "line": 475, "column": 40 }, "end": { - "line": 421, + "line": 475, "column": 41 } } @@ -75479,15 +75479,15 @@ "updateContext": null }, "value": "switch", - "start": 16331, - "end": 16337, + "start": 18319, + "end": 18325, "loc": { "start": { - "line": 423, + "line": 477, "column": 20 }, "end": { - "line": 423, + "line": 477, "column": 26 } } @@ -75504,15 +75504,15 @@ "postfix": false, "binop": null }, - "start": 16338, - "end": 16339, + "start": 18326, + "end": 18327, "loc": { "start": { - "line": 423, + "line": 477, "column": 27 }, "end": { - "line": 423, + "line": 477, "column": 28 } } @@ -75530,15 +75530,15 @@ "binop": null }, "value": "pointsFormatId", - "start": 16339, - "end": 16353, + "start": 18327, + "end": 18341, "loc": { "start": { - "line": 423, + "line": 477, "column": 28 }, "end": { - "line": 423, + "line": 477, "column": 42 } } @@ -75555,15 +75555,15 @@ "postfix": false, "binop": null }, - "start": 16353, - "end": 16354, + "start": 18341, + "end": 18342, "loc": { "start": { - "line": 423, + "line": 477, "column": 42 }, "end": { - "line": 423, + "line": 477, "column": 43 } } @@ -75580,15 +75580,15 @@ "postfix": false, "binop": null }, - "start": 16355, - "end": 16356, + "start": 18343, + "end": 18344, "loc": { "start": { - "line": 423, + "line": 477, "column": 44 }, "end": { - "line": 423, + "line": 477, "column": 45 } } @@ -75608,15 +75608,15 @@ "updateContext": null }, "value": "case", - "start": 16381, - "end": 16385, + "start": 18369, + "end": 18373, "loc": { "start": { - "line": 424, + "line": 478, "column": 24 }, "end": { - "line": 424, + "line": 478, "column": 28 } } @@ -75635,15 +75635,15 @@ "updateContext": null }, "value": 0, - "start": 16386, - "end": 16387, + "start": 18374, + "end": 18375, "loc": { "start": { - "line": 424, + "line": 478, "column": 29 }, "end": { - "line": 424, + "line": 478, "column": 30 } } @@ -75661,15 +75661,15 @@ "binop": null, "updateContext": null }, - "start": 16387, - "end": 16388, + "start": 18375, + "end": 18376, "loc": { "start": { - "line": 424, + "line": 478, "column": 30 }, "end": { - "line": 424, + "line": 478, "column": 31 } } @@ -75687,15 +75687,15 @@ "binop": null }, "value": "positionsValue", - "start": 16417, - "end": 16431, + "start": 18405, + "end": 18419, "loc": { "start": { - "line": 425, + "line": 479, "column": 28 }, "end": { - "line": 425, + "line": 479, "column": 42 } } @@ -75714,15 +75714,15 @@ "updateContext": null }, "value": "=", - "start": 16432, - "end": 16433, + "start": 18420, + "end": 18421, "loc": { "start": { - "line": 425, + "line": 479, "column": 43 }, "end": { - "line": 425, + "line": 479, "column": 44 } } @@ -75740,15 +75740,15 @@ "binop": null }, "value": "readPositions", - "start": 16434, - "end": 16447, + "start": 18422, + "end": 18435, "loc": { "start": { - "line": 425, + "line": 479, "column": 45 }, "end": { - "line": 425, + "line": 479, "column": 58 } } @@ -75765,15 +75765,15 @@ "postfix": false, "binop": null }, - "start": 16447, - "end": 16448, + "start": 18435, + "end": 18436, "loc": { "start": { - "line": 425, + "line": 479, "column": 58 }, "end": { - "line": 425, + "line": 479, "column": 59 } } @@ -75791,15 +75791,15 @@ "binop": null }, "value": "attributes", - "start": 16448, - "end": 16458, + "start": 18436, + "end": 18446, "loc": { "start": { - "line": 425, + "line": 479, "column": 59 }, "end": { - "line": 425, + "line": 479, "column": 69 } } @@ -75817,15 +75817,15 @@ "binop": null, "updateContext": null }, - "start": 16458, - "end": 16459, + "start": 18446, + "end": 18447, "loc": { "start": { - "line": 425, + "line": 479, "column": 69 }, "end": { - "line": 425, + "line": 479, "column": 70 } } @@ -75843,15 +75843,15 @@ "binop": null }, "value": "POSITION", - "start": 16459, - "end": 16467, + "start": 18447, + "end": 18455, "loc": { "start": { - "line": 425, + "line": 479, "column": 70 }, "end": { - "line": 425, + "line": 479, "column": 78 } } @@ -75868,15 +75868,15 @@ "postfix": false, "binop": null }, - "start": 16467, - "end": 16468, + "start": 18455, + "end": 18456, "loc": { "start": { - "line": 425, + "line": 479, "column": 78 }, "end": { - "line": 425, + "line": 479, "column": 79 } } @@ -75894,15 +75894,15 @@ "binop": null, "updateContext": null }, - "start": 16468, - "end": 16469, + "start": 18456, + "end": 18457, "loc": { "start": { - "line": 425, + "line": 479, "column": 79 }, "end": { - "line": 425, + "line": 479, "column": 80 } } @@ -75920,15 +75920,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 16498, - "end": 16514, + "start": 18486, + "end": 18502, "loc": { "start": { - "line": 426, + "line": 480, "column": 28 }, "end": { - "line": 426, + "line": 480, "column": 44 } } @@ -75947,15 +75947,15 @@ "updateContext": null }, "value": "=", - "start": 16515, - "end": 16516, + "start": 18503, + "end": 18504, "loc": { "start": { - "line": 426, + "line": 480, "column": 45 }, "end": { - "line": 426, + "line": 480, "column": 46 } } @@ -75973,15 +75973,15 @@ "binop": null }, "value": "readIntensities", - "start": 16517, - "end": 16532, + "start": 18505, + "end": 18520, "loc": { "start": { - "line": 426, + "line": 480, "column": 47 }, "end": { - "line": 426, + "line": 480, "column": 62 } } @@ -75998,15 +75998,15 @@ "postfix": false, "binop": null }, - "start": 16532, - "end": 16533, + "start": 18520, + "end": 18521, "loc": { "start": { - "line": 426, + "line": 480, "column": 62 }, "end": { - "line": 426, + "line": 480, "column": 63 } } @@ -76024,15 +76024,15 @@ "binop": null }, "value": "attributes", - "start": 16533, - "end": 16543, + "start": 18521, + "end": 18531, "loc": { "start": { - "line": 426, + "line": 480, "column": 63 }, "end": { - "line": 426, + "line": 480, "column": 73 } } @@ -76050,15 +76050,15 @@ "binop": null, "updateContext": null }, - "start": 16543, - "end": 16544, + "start": 18531, + "end": 18532, "loc": { "start": { - "line": 426, + "line": 480, "column": 73 }, "end": { - "line": 426, + "line": 480, "column": 74 } } @@ -76076,15 +76076,15 @@ "binop": null }, "value": "intensity", - "start": 16544, - "end": 16553, + "start": 18532, + "end": 18541, "loc": { "start": { - "line": 426, + "line": 480, "column": 74 }, "end": { - "line": 426, + "line": 480, "column": 83 } } @@ -76101,15 +76101,15 @@ "postfix": false, "binop": null }, - "start": 16553, - "end": 16554, + "start": 18541, + "end": 18542, "loc": { "start": { - "line": 426, + "line": 480, "column": 83 }, "end": { - "line": 426, + "line": 480, "column": 84 } } @@ -76127,15 +76127,15 @@ "binop": null, "updateContext": null }, - "start": 16554, - "end": 16555, + "start": 18542, + "end": 18543, "loc": { "start": { - "line": 426, + "line": 480, "column": 84 }, "end": { - "line": 426, + "line": 480, "column": 85 } } @@ -76155,15 +76155,15 @@ "updateContext": null }, "value": "break", - "start": 16584, - "end": 16589, + "start": 18572, + "end": 18577, "loc": { "start": { - "line": 427, + "line": 481, "column": 28 }, "end": { - "line": 427, + "line": 481, "column": 33 } } @@ -76181,15 +76181,15 @@ "binop": null, "updateContext": null }, - "start": 16589, - "end": 16590, + "start": 18577, + "end": 18578, "loc": { "start": { - "line": 427, + "line": 481, "column": 33 }, "end": { - "line": 427, + "line": 481, "column": 34 } } @@ -76209,15 +76209,15 @@ "updateContext": null }, "value": "case", - "start": 16615, - "end": 16619, + "start": 18603, + "end": 18607, "loc": { "start": { - "line": 428, + "line": 482, "column": 24 }, "end": { - "line": 428, + "line": 482, "column": 28 } } @@ -76236,15 +76236,15 @@ "updateContext": null }, "value": 1, - "start": 16620, - "end": 16621, + "start": 18608, + "end": 18609, "loc": { "start": { - "line": 428, + "line": 482, "column": 29 }, "end": { - "line": 428, + "line": 482, "column": 30 } } @@ -76262,15 +76262,15 @@ "binop": null, "updateContext": null }, - "start": 16621, - "end": 16622, + "start": 18609, + "end": 18610, "loc": { "start": { - "line": 428, + "line": 482, "column": 30 }, "end": { - "line": 428, + "line": 482, "column": 31 } } @@ -76290,15 +76290,15 @@ "updateContext": null }, "value": "if", - "start": 16651, - "end": 16653, + "start": 18639, + "end": 18641, "loc": { "start": { - "line": 429, + "line": 483, "column": 28 }, "end": { - "line": 429, + "line": 483, "column": 30 } } @@ -76315,15 +76315,15 @@ "postfix": false, "binop": null }, - "start": 16654, - "end": 16655, + "start": 18642, + "end": 18643, "loc": { "start": { - "line": 429, + "line": 483, "column": 31 }, "end": { - "line": 429, + "line": 483, "column": 32 } } @@ -76342,15 +76342,15 @@ "updateContext": null }, "value": "!", - "start": 16655, - "end": 16656, + "start": 18643, + "end": 18644, "loc": { "start": { - "line": 429, + "line": 483, "column": 32 }, "end": { - "line": 429, + "line": 483, "column": 33 } } @@ -76368,15 +76368,15 @@ "binop": null }, "value": "attributes", - "start": 16656, - "end": 16666, + "start": 18644, + "end": 18654, "loc": { "start": { - "line": 429, + "line": 483, "column": 33 }, "end": { - "line": 429, + "line": 483, "column": 43 } } @@ -76394,15 +76394,15 @@ "binop": null, "updateContext": null }, - "start": 16666, - "end": 16667, + "start": 18654, + "end": 18655, "loc": { "start": { - "line": 429, + "line": 483, "column": 43 }, "end": { - "line": 429, + "line": 483, "column": 44 } } @@ -76420,15 +76420,15 @@ "binop": null }, "value": "intensity", - "start": 16667, - "end": 16676, + "start": 18655, + "end": 18664, "loc": { "start": { - "line": 429, + "line": 483, "column": 44 }, "end": { - "line": 429, + "line": 483, "column": 53 } } @@ -76445,15 +76445,15 @@ "postfix": false, "binop": null }, - "start": 16676, - "end": 16677, + "start": 18664, + "end": 18665, "loc": { "start": { - "line": 429, + "line": 483, "column": 53 }, "end": { - "line": 429, + "line": 483, "column": 54 } } @@ -76470,15 +76470,15 @@ "postfix": false, "binop": null }, - "start": 16678, - "end": 16679, + "start": 18666, + "end": 18667, "loc": { "start": { - "line": 429, + "line": 483, "column": 55 }, "end": { - "line": 429, + "line": 483, "column": 56 } } @@ -76496,15 +76496,15 @@ "binop": null }, "value": "sceneModel", - "start": 16712, - "end": 16722, + "start": 18700, + "end": 18710, "loc": { "start": { - "line": 430, + "line": 484, "column": 32 }, "end": { - "line": 430, + "line": 484, "column": 42 } } @@ -76522,15 +76522,15 @@ "binop": null, "updateContext": null }, - "start": 16722, - "end": 16723, + "start": 18710, + "end": 18711, "loc": { "start": { - "line": 430, + "line": 484, "column": 42 }, "end": { - "line": 430, + "line": 484, "column": 43 } } @@ -76548,15 +76548,15 @@ "binop": null }, "value": "finalize", - "start": 16723, - "end": 16731, + "start": 18711, + "end": 18719, "loc": { "start": { - "line": 430, + "line": 484, "column": 43 }, "end": { - "line": 430, + "line": 484, "column": 51 } } @@ -76573,15 +76573,15 @@ "postfix": false, "binop": null }, - "start": 16731, - "end": 16732, + "start": 18719, + "end": 18720, "loc": { "start": { - "line": 430, + "line": 484, "column": 51 }, "end": { - "line": 430, + "line": 484, "column": 52 } } @@ -76598,15 +76598,15 @@ "postfix": false, "binop": null }, - "start": 16732, - "end": 16733, + "start": 18720, + "end": 18721, "loc": { "start": { - "line": 430, + "line": 484, "column": 52 }, "end": { - "line": 430, + "line": 484, "column": 53 } } @@ -76624,15 +76624,15 @@ "binop": null, "updateContext": null }, - "start": 16733, - "end": 16734, + "start": 18721, + "end": 18722, "loc": { "start": { - "line": 430, + "line": 484, "column": 53 }, "end": { - "line": 430, + "line": 484, "column": 54 } } @@ -76650,15 +76650,15 @@ "binop": null }, "value": "reject", - "start": 16767, - "end": 16773, + "start": 18755, + "end": 18761, "loc": { "start": { - "line": 431, + "line": 485, "column": 32 }, "end": { - "line": 431, + "line": 485, "column": 38 } } @@ -76675,15 +76675,15 @@ "postfix": false, "binop": null }, - "start": 16773, - "end": 16774, + "start": 18761, + "end": 18762, "loc": { "start": { - "line": 431, + "line": 485, "column": 38 }, "end": { - "line": 431, + "line": 485, "column": 39 } } @@ -76702,15 +76702,15 @@ "updateContext": null }, "value": "No positions found in file", - "start": 16774, - "end": 16802, + "start": 18762, + "end": 18790, "loc": { "start": { - "line": 431, + "line": 485, "column": 39 }, "end": { - "line": 431, + "line": 485, "column": 67 } } @@ -76727,15 +76727,15 @@ "postfix": false, "binop": null }, - "start": 16802, - "end": 16803, + "start": 18790, + "end": 18791, "loc": { "start": { - "line": 431, + "line": 485, "column": 67 }, "end": { - "line": 431, + "line": 485, "column": 68 } } @@ -76753,15 +76753,15 @@ "binop": null, "updateContext": null }, - "start": 16803, - "end": 16804, + "start": 18791, + "end": 18792, "loc": { "start": { - "line": 431, + "line": 485, "column": 68 }, "end": { - "line": 431, + "line": 485, "column": 69 } } @@ -76781,15 +76781,15 @@ "updateContext": null }, "value": "return", - "start": 16837, - "end": 16843, + "start": 18825, + "end": 18831, "loc": { "start": { - "line": 432, + "line": 486, "column": 32 }, "end": { - "line": 432, + "line": 486, "column": 38 } } @@ -76807,15 +76807,15 @@ "binop": null, "updateContext": null }, - "start": 16843, - "end": 16844, + "start": 18831, + "end": 18832, "loc": { "start": { - "line": 432, + "line": 486, "column": 38 }, "end": { - "line": 432, + "line": 486, "column": 39 } } @@ -76832,15 +76832,15 @@ "postfix": false, "binop": null }, - "start": 16873, - "end": 16874, + "start": 18861, + "end": 18862, "loc": { "start": { - "line": 433, + "line": 487, "column": 28 }, "end": { - "line": 433, + "line": 487, "column": 29 } } @@ -76858,15 +76858,15 @@ "binop": null }, "value": "positionsValue", - "start": 16903, - "end": 16917, + "start": 18891, + "end": 18905, "loc": { "start": { - "line": 434, + "line": 488, "column": 28 }, "end": { - "line": 434, + "line": 488, "column": 42 } } @@ -76885,15 +76885,15 @@ "updateContext": null }, "value": "=", - "start": 16918, - "end": 16919, + "start": 18906, + "end": 18907, "loc": { "start": { - "line": 434, + "line": 488, "column": 43 }, "end": { - "line": 434, + "line": 488, "column": 44 } } @@ -76911,15 +76911,15 @@ "binop": null }, "value": "readPositions", - "start": 16920, - "end": 16933, + "start": 18908, + "end": 18921, "loc": { "start": { - "line": 434, + "line": 488, "column": 45 }, "end": { - "line": 434, + "line": 488, "column": 58 } } @@ -76936,15 +76936,15 @@ "postfix": false, "binop": null }, - "start": 16933, - "end": 16934, + "start": 18921, + "end": 18922, "loc": { "start": { - "line": 434, + "line": 488, "column": 58 }, "end": { - "line": 434, + "line": 488, "column": 59 } } @@ -76962,15 +76962,15 @@ "binop": null }, "value": "attributes", - "start": 16934, - "end": 16944, + "start": 18922, + "end": 18932, "loc": { "start": { - "line": 434, + "line": 488, "column": 59 }, "end": { - "line": 434, + "line": 488, "column": 69 } } @@ -76988,15 +76988,15 @@ "binop": null, "updateContext": null }, - "start": 16944, - "end": 16945, + "start": 18932, + "end": 18933, "loc": { "start": { - "line": 434, + "line": 488, "column": 69 }, "end": { - "line": 434, + "line": 488, "column": 70 } } @@ -77014,15 +77014,15 @@ "binop": null }, "value": "POSITION", - "start": 16945, - "end": 16953, + "start": 18933, + "end": 18941, "loc": { "start": { - "line": 434, + "line": 488, "column": 70 }, "end": { - "line": 434, + "line": 488, "column": 78 } } @@ -77039,15 +77039,15 @@ "postfix": false, "binop": null }, - "start": 16953, - "end": 16954, + "start": 18941, + "end": 18942, "loc": { "start": { - "line": 434, + "line": 488, "column": 78 }, "end": { - "line": 434, + "line": 488, "column": 79 } } @@ -77065,15 +77065,15 @@ "binop": null, "updateContext": null }, - "start": 16954, - "end": 16955, + "start": 18942, + "end": 18943, "loc": { "start": { - "line": 434, + "line": 488, "column": 79 }, "end": { - "line": 434, + "line": 488, "column": 80 } } @@ -77091,15 +77091,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 16984, - "end": 17000, + "start": 18972, + "end": 18988, "loc": { "start": { - "line": 435, + "line": 489, "column": 28 }, "end": { - "line": 435, + "line": 489, "column": 44 } } @@ -77118,15 +77118,15 @@ "updateContext": null }, "value": "=", - "start": 17001, - "end": 17002, + "start": 18989, + "end": 18990, "loc": { "start": { - "line": 435, + "line": 489, "column": 45 }, "end": { - "line": 435, + "line": 489, "column": 46 } } @@ -77144,15 +77144,15 @@ "binop": null }, "value": "readIntensities", - "start": 17003, - "end": 17018, + "start": 18991, + "end": 19006, "loc": { "start": { - "line": 435, + "line": 489, "column": 47 }, "end": { - "line": 435, + "line": 489, "column": 62 } } @@ -77169,15 +77169,15 @@ "postfix": false, "binop": null }, - "start": 17018, - "end": 17019, + "start": 19006, + "end": 19007, "loc": { "start": { - "line": 435, + "line": 489, "column": 62 }, "end": { - "line": 435, + "line": 489, "column": 63 } } @@ -77195,15 +77195,15 @@ "binop": null }, "value": "attributes", - "start": 17019, - "end": 17029, + "start": 19007, + "end": 19017, "loc": { "start": { - "line": 435, + "line": 489, "column": 63 }, "end": { - "line": 435, + "line": 489, "column": 73 } } @@ -77221,15 +77221,15 @@ "binop": null, "updateContext": null }, - "start": 17029, - "end": 17030, + "start": 19017, + "end": 19018, "loc": { "start": { - "line": 435, + "line": 489, "column": 73 }, "end": { - "line": 435, + "line": 489, "column": 74 } } @@ -77247,15 +77247,15 @@ "binop": null }, "value": "intensity", - "start": 17030, - "end": 17039, + "start": 19018, + "end": 19027, "loc": { "start": { - "line": 435, + "line": 489, "column": 74 }, "end": { - "line": 435, + "line": 489, "column": 83 } } @@ -77272,15 +77272,15 @@ "postfix": false, "binop": null }, - "start": 17039, - "end": 17040, + "start": 19027, + "end": 19028, "loc": { "start": { - "line": 435, + "line": 489, "column": 83 }, "end": { - "line": 435, + "line": 489, "column": 84 } } @@ -77298,15 +77298,15 @@ "binop": null, "updateContext": null }, - "start": 17040, - "end": 17041, + "start": 19028, + "end": 19029, "loc": { "start": { - "line": 435, + "line": 489, "column": 84 }, "end": { - "line": 435, + "line": 489, "column": 85 } } @@ -77326,15 +77326,15 @@ "updateContext": null }, "value": "break", - "start": 17070, - "end": 17075, + "start": 19058, + "end": 19063, "loc": { "start": { - "line": 436, + "line": 490, "column": 28 }, "end": { - "line": 436, + "line": 490, "column": 33 } } @@ -77352,15 +77352,15 @@ "binop": null, "updateContext": null }, - "start": 17075, - "end": 17076, + "start": 19063, + "end": 19064, "loc": { "start": { - "line": 436, + "line": 490, "column": 33 }, "end": { - "line": 436, + "line": 490, "column": 34 } } @@ -77380,15 +77380,15 @@ "updateContext": null }, "value": "case", - "start": 17101, - "end": 17105, + "start": 19089, + "end": 19093, "loc": { "start": { - "line": 437, + "line": 491, "column": 24 }, "end": { - "line": 437, + "line": 491, "column": 28 } } @@ -77407,15 +77407,15 @@ "updateContext": null }, "value": 2, - "start": 17106, - "end": 17107, + "start": 19094, + "end": 19095, "loc": { "start": { - "line": 437, + "line": 491, "column": 29 }, "end": { - "line": 437, + "line": 491, "column": 30 } } @@ -77433,15 +77433,15 @@ "binop": null, "updateContext": null }, - "start": 17107, - "end": 17108, + "start": 19095, + "end": 19096, "loc": { "start": { - "line": 437, + "line": 491, "column": 30 }, "end": { - "line": 437, + "line": 491, "column": 31 } } @@ -77461,15 +77461,15 @@ "updateContext": null }, "value": "if", - "start": 17137, - "end": 17139, + "start": 19125, + "end": 19127, "loc": { "start": { - "line": 438, + "line": 492, "column": 28 }, "end": { - "line": 438, + "line": 492, "column": 30 } } @@ -77486,15 +77486,15 @@ "postfix": false, "binop": null }, - "start": 17140, - "end": 17141, + "start": 19128, + "end": 19129, "loc": { "start": { - "line": 438, + "line": 492, "column": 31 }, "end": { - "line": 438, + "line": 492, "column": 32 } } @@ -77513,15 +77513,15 @@ "updateContext": null }, "value": "!", - "start": 17141, - "end": 17142, + "start": 19129, + "end": 19130, "loc": { "start": { - "line": 438, + "line": 492, "column": 32 }, "end": { - "line": 438, + "line": 492, "column": 33 } } @@ -77539,15 +77539,15 @@ "binop": null }, "value": "attributes", - "start": 17142, - "end": 17152, + "start": 19130, + "end": 19140, "loc": { "start": { - "line": 438, + "line": 492, "column": 33 }, "end": { - "line": 438, + "line": 492, "column": 43 } } @@ -77565,15 +77565,15 @@ "binop": null, "updateContext": null }, - "start": 17152, - "end": 17153, + "start": 19140, + "end": 19141, "loc": { "start": { - "line": 438, + "line": 492, "column": 43 }, "end": { - "line": 438, + "line": 492, "column": 44 } } @@ -77591,15 +77591,15 @@ "binop": null }, "value": "intensity", - "start": 17153, - "end": 17162, + "start": 19141, + "end": 19150, "loc": { "start": { - "line": 438, + "line": 492, "column": 44 }, "end": { - "line": 438, + "line": 492, "column": 53 } } @@ -77616,15 +77616,15 @@ "postfix": false, "binop": null }, - "start": 17162, - "end": 17163, + "start": 19150, + "end": 19151, "loc": { "start": { - "line": 438, + "line": 492, "column": 53 }, "end": { - "line": 438, + "line": 492, "column": 54 } } @@ -77641,15 +77641,15 @@ "postfix": false, "binop": null }, - "start": 17164, - "end": 17165, + "start": 19152, + "end": 19153, "loc": { "start": { - "line": 438, + "line": 492, "column": 55 }, "end": { - "line": 438, + "line": 492, "column": 56 } } @@ -77667,15 +77667,15 @@ "binop": null }, "value": "sceneModel", - "start": 17198, - "end": 17208, + "start": 19186, + "end": 19196, "loc": { "start": { - "line": 439, + "line": 493, "column": 32 }, "end": { - "line": 439, + "line": 493, "column": 42 } } @@ -77693,15 +77693,15 @@ "binop": null, "updateContext": null }, - "start": 17208, - "end": 17209, + "start": 19196, + "end": 19197, "loc": { "start": { - "line": 439, + "line": 493, "column": 42 }, "end": { - "line": 439, + "line": 493, "column": 43 } } @@ -77719,15 +77719,15 @@ "binop": null }, "value": "finalize", - "start": 17209, - "end": 17217, + "start": 19197, + "end": 19205, "loc": { "start": { - "line": 439, + "line": 493, "column": 43 }, "end": { - "line": 439, + "line": 493, "column": 51 } } @@ -77744,15 +77744,15 @@ "postfix": false, "binop": null }, - "start": 17217, - "end": 17218, + "start": 19205, + "end": 19206, "loc": { "start": { - "line": 439, + "line": 493, "column": 51 }, "end": { - "line": 439, + "line": 493, "column": 52 } } @@ -77769,15 +77769,15 @@ "postfix": false, "binop": null }, - "start": 17218, - "end": 17219, + "start": 19206, + "end": 19207, "loc": { "start": { - "line": 439, + "line": 493, "column": 52 }, "end": { - "line": 439, + "line": 493, "column": 53 } } @@ -77795,15 +77795,15 @@ "binop": null, "updateContext": null }, - "start": 17219, - "end": 17220, + "start": 19207, + "end": 19208, "loc": { "start": { - "line": 439, + "line": 493, "column": 53 }, "end": { - "line": 439, + "line": 493, "column": 54 } } @@ -77821,15 +77821,15 @@ "binop": null }, "value": "reject", - "start": 17253, - "end": 17259, + "start": 19241, + "end": 19247, "loc": { "start": { - "line": 440, + "line": 494, "column": 32 }, "end": { - "line": 440, + "line": 494, "column": 38 } } @@ -77846,15 +77846,15 @@ "postfix": false, "binop": null }, - "start": 17259, - "end": 17260, + "start": 19247, + "end": 19248, "loc": { "start": { - "line": 440, + "line": 494, "column": 38 }, "end": { - "line": 440, + "line": 494, "column": 39 } } @@ -77873,15 +77873,15 @@ "updateContext": null }, "value": "No positions found in file", - "start": 17260, - "end": 17288, + "start": 19248, + "end": 19276, "loc": { "start": { - "line": 440, + "line": 494, "column": 39 }, "end": { - "line": 440, + "line": 494, "column": 67 } } @@ -77898,15 +77898,15 @@ "postfix": false, "binop": null }, - "start": 17288, - "end": 17289, + "start": 19276, + "end": 19277, "loc": { "start": { - "line": 440, + "line": 494, "column": 67 }, "end": { - "line": 440, + "line": 494, "column": 68 } } @@ -77924,15 +77924,15 @@ "binop": null, "updateContext": null }, - "start": 17289, - "end": 17290, + "start": 19277, + "end": 19278, "loc": { "start": { - "line": 440, + "line": 494, "column": 68 }, "end": { - "line": 440, + "line": 494, "column": 69 } } @@ -77952,15 +77952,15 @@ "updateContext": null }, "value": "return", - "start": 17323, - "end": 17329, + "start": 19311, + "end": 19317, "loc": { "start": { - "line": 441, + "line": 495, "column": 32 }, "end": { - "line": 441, + "line": 495, "column": 38 } } @@ -77978,15 +77978,15 @@ "binop": null, "updateContext": null }, - "start": 17329, - "end": 17330, + "start": 19317, + "end": 19318, "loc": { "start": { - "line": 441, + "line": 495, "column": 38 }, "end": { - "line": 441, + "line": 495, "column": 39 } } @@ -78003,15 +78003,15 @@ "postfix": false, "binop": null }, - "start": 17359, - "end": 17360, + "start": 19347, + "end": 19348, "loc": { "start": { - "line": 442, + "line": 496, "column": 28 }, "end": { - "line": 442, + "line": 496, "column": 29 } } @@ -78029,15 +78029,15 @@ "binop": null }, "value": "positionsValue", - "start": 17389, - "end": 17403, + "start": 19377, + "end": 19391, "loc": { "start": { - "line": 443, + "line": 497, "column": 28 }, "end": { - "line": 443, + "line": 497, "column": 42 } } @@ -78056,15 +78056,15 @@ "updateContext": null }, "value": "=", - "start": 17404, - "end": 17405, + "start": 19392, + "end": 19393, "loc": { "start": { - "line": 443, + "line": 497, "column": 43 }, "end": { - "line": 443, + "line": 497, "column": 44 } } @@ -78082,15 +78082,15 @@ "binop": null }, "value": "readPositions", - "start": 17406, - "end": 17419, + "start": 19394, + "end": 19407, "loc": { "start": { - "line": 443, + "line": 497, "column": 45 }, "end": { - "line": 443, + "line": 497, "column": 58 } } @@ -78107,15 +78107,15 @@ "postfix": false, "binop": null }, - "start": 17419, - "end": 17420, + "start": 19407, + "end": 19408, "loc": { "start": { - "line": 443, + "line": 497, "column": 58 }, "end": { - "line": 443, + "line": 497, "column": 59 } } @@ -78133,15 +78133,15 @@ "binop": null }, "value": "attributes", - "start": 17420, - "end": 17430, + "start": 19408, + "end": 19418, "loc": { "start": { - "line": 443, + "line": 497, "column": 59 }, "end": { - "line": 443, + "line": 497, "column": 69 } } @@ -78159,15 +78159,15 @@ "binop": null, "updateContext": null }, - "start": 17430, - "end": 17431, + "start": 19418, + "end": 19419, "loc": { "start": { - "line": 443, + "line": 497, "column": 69 }, "end": { - "line": 443, + "line": 497, "column": 70 } } @@ -78185,15 +78185,15 @@ "binop": null }, "value": "POSITION", - "start": 17431, - "end": 17439, + "start": 19419, + "end": 19427, "loc": { "start": { - "line": 443, + "line": 497, "column": 70 }, "end": { - "line": 443, + "line": 497, "column": 78 } } @@ -78210,15 +78210,15 @@ "postfix": false, "binop": null }, - "start": 17439, - "end": 17440, + "start": 19427, + "end": 19428, "loc": { "start": { - "line": 443, + "line": 497, "column": 78 }, "end": { - "line": 443, + "line": 497, "column": 79 } } @@ -78236,15 +78236,15 @@ "binop": null, "updateContext": null }, - "start": 17440, - "end": 17441, + "start": 19428, + "end": 19429, "loc": { "start": { - "line": 443, + "line": 497, "column": 79 }, "end": { - "line": 443, + "line": 497, "column": 80 } } @@ -78262,15 +78262,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 17470, - "end": 17486, + "start": 19458, + "end": 19474, "loc": { "start": { - "line": 444, + "line": 498, "column": 28 }, "end": { - "line": 444, + "line": 498, "column": 44 } } @@ -78289,15 +78289,15 @@ "updateContext": null }, "value": "=", - "start": 17487, - "end": 17488, + "start": 19475, + "end": 19476, "loc": { "start": { - "line": 444, + "line": 498, "column": 45 }, "end": { - "line": 444, + "line": 498, "column": 46 } } @@ -78315,15 +78315,15 @@ "binop": null }, "value": "readColorsAndIntensities", - "start": 17489, - "end": 17513, + "start": 19477, + "end": 19501, "loc": { "start": { - "line": 444, + "line": 498, "column": 47 }, "end": { - "line": 444, + "line": 498, "column": 71 } } @@ -78340,15 +78340,15 @@ "postfix": false, "binop": null }, - "start": 17513, - "end": 17514, + "start": 19501, + "end": 19502, "loc": { "start": { - "line": 444, + "line": 498, "column": 71 }, "end": { - "line": 444, + "line": 498, "column": 72 } } @@ -78366,15 +78366,15 @@ "binop": null }, "value": "attributes", - "start": 17514, - "end": 17524, + "start": 19502, + "end": 19512, "loc": { "start": { - "line": 444, + "line": 498, "column": 72 }, "end": { - "line": 444, + "line": 498, "column": 82 } } @@ -78392,15 +78392,15 @@ "binop": null, "updateContext": null }, - "start": 17524, - "end": 17525, + "start": 19512, + "end": 19513, "loc": { "start": { - "line": 444, + "line": 498, "column": 82 }, "end": { - "line": 444, + "line": 498, "column": 83 } } @@ -78418,15 +78418,15 @@ "binop": null }, "value": "COLOR_0", - "start": 17525, - "end": 17532, + "start": 19513, + "end": 19520, "loc": { "start": { - "line": 444, + "line": 498, "column": 83 }, "end": { - "line": 444, + "line": 498, "column": 90 } } @@ -78444,15 +78444,15 @@ "binop": null, "updateContext": null }, - "start": 17532, - "end": 17533, + "start": 19520, + "end": 19521, "loc": { "start": { - "line": 444, + "line": 498, "column": 90 }, "end": { - "line": 444, + "line": 498, "column": 91 } } @@ -78470,15 +78470,15 @@ "binop": null }, "value": "attributes", - "start": 17534, - "end": 17544, + "start": 19522, + "end": 19532, "loc": { "start": { - "line": 444, + "line": 498, "column": 92 }, "end": { - "line": 444, + "line": 498, "column": 102 } } @@ -78496,15 +78496,15 @@ "binop": null, "updateContext": null }, - "start": 17544, - "end": 17545, + "start": 19532, + "end": 19533, "loc": { "start": { - "line": 444, + "line": 498, "column": 102 }, "end": { - "line": 444, + "line": 498, "column": 103 } } @@ -78522,15 +78522,15 @@ "binop": null }, "value": "intensity", - "start": 17545, - "end": 17554, + "start": 19533, + "end": 19542, "loc": { "start": { - "line": 444, + "line": 498, "column": 103 }, "end": { - "line": 444, + "line": 498, "column": 112 } } @@ -78547,15 +78547,15 @@ "postfix": false, "binop": null }, - "start": 17554, - "end": 17555, + "start": 19542, + "end": 19543, "loc": { "start": { - "line": 444, + "line": 498, "column": 112 }, "end": { - "line": 444, + "line": 498, "column": 113 } } @@ -78573,15 +78573,15 @@ "binop": null, "updateContext": null }, - "start": 17555, - "end": 17556, + "start": 19543, + "end": 19544, "loc": { "start": { - "line": 444, + "line": 498, "column": 113 }, "end": { - "line": 444, + "line": 498, "column": 114 } } @@ -78601,15 +78601,15 @@ "updateContext": null }, "value": "break", - "start": 17585, - "end": 17590, + "start": 19573, + "end": 19578, "loc": { "start": { - "line": 445, + "line": 499, "column": 28 }, "end": { - "line": 445, + "line": 499, "column": 33 } } @@ -78627,15 +78627,15 @@ "binop": null, "updateContext": null }, - "start": 17590, - "end": 17591, + "start": 19578, + "end": 19579, "loc": { "start": { - "line": 445, + "line": 499, "column": 33 }, "end": { - "line": 445, + "line": 499, "column": 34 } } @@ -78655,15 +78655,15 @@ "updateContext": null }, "value": "case", - "start": 17616, - "end": 17620, + "start": 19604, + "end": 19608, "loc": { "start": { - "line": 446, + "line": 500, "column": 24 }, "end": { - "line": 446, + "line": 500, "column": 28 } } @@ -78682,15 +78682,15 @@ "updateContext": null }, "value": 3, - "start": 17621, - "end": 17622, + "start": 19609, + "end": 19610, "loc": { "start": { - "line": 446, + "line": 500, "column": 29 }, "end": { - "line": 446, + "line": 500, "column": 30 } } @@ -78708,15 +78708,15 @@ "binop": null, "updateContext": null }, - "start": 17622, - "end": 17623, + "start": 19610, + "end": 19611, "loc": { "start": { - "line": 446, + "line": 500, "column": 30 }, "end": { - "line": 446, + "line": 500, "column": 31 } } @@ -78736,15 +78736,15 @@ "updateContext": null }, "value": "if", - "start": 17652, - "end": 17654, + "start": 19640, + "end": 19642, "loc": { "start": { - "line": 447, + "line": 501, "column": 28 }, "end": { - "line": 447, + "line": 501, "column": 30 } } @@ -78761,15 +78761,15 @@ "postfix": false, "binop": null }, - "start": 17655, - "end": 17656, + "start": 19643, + "end": 19644, "loc": { "start": { - "line": 447, + "line": 501, "column": 31 }, "end": { - "line": 447, + "line": 501, "column": 32 } } @@ -78788,15 +78788,15 @@ "updateContext": null }, "value": "!", - "start": 17656, - "end": 17657, + "start": 19644, + "end": 19645, "loc": { "start": { - "line": 447, + "line": 501, "column": 32 }, "end": { - "line": 447, + "line": 501, "column": 33 } } @@ -78814,15 +78814,15 @@ "binop": null }, "value": "attributes", - "start": 17657, - "end": 17667, + "start": 19645, + "end": 19655, "loc": { "start": { - "line": 447, + "line": 501, "column": 33 }, "end": { - "line": 447, + "line": 501, "column": 43 } } @@ -78840,15 +78840,15 @@ "binop": null, "updateContext": null }, - "start": 17667, - "end": 17668, + "start": 19655, + "end": 19656, "loc": { "start": { - "line": 447, + "line": 501, "column": 43 }, "end": { - "line": 447, + "line": 501, "column": 44 } } @@ -78866,15 +78866,15 @@ "binop": null }, "value": "intensity", - "start": 17668, - "end": 17677, + "start": 19656, + "end": 19665, "loc": { "start": { - "line": 447, + "line": 501, "column": 44 }, "end": { - "line": 447, + "line": 501, "column": 53 } } @@ -78891,15 +78891,15 @@ "postfix": false, "binop": null }, - "start": 17677, - "end": 17678, + "start": 19665, + "end": 19666, "loc": { "start": { - "line": 447, + "line": 501, "column": 53 }, "end": { - "line": 447, + "line": 501, "column": 54 } } @@ -78916,15 +78916,15 @@ "postfix": false, "binop": null }, - "start": 17679, - "end": 17680, + "start": 19667, + "end": 19668, "loc": { "start": { - "line": 447, + "line": 501, "column": 55 }, "end": { - "line": 447, + "line": 501, "column": 56 } } @@ -78942,15 +78942,15 @@ "binop": null }, "value": "sceneModel", - "start": 17713, - "end": 17723, + "start": 19701, + "end": 19711, "loc": { "start": { - "line": 448, + "line": 502, "column": 32 }, "end": { - "line": 448, + "line": 502, "column": 42 } } @@ -78968,15 +78968,15 @@ "binop": null, "updateContext": null }, - "start": 17723, - "end": 17724, + "start": 19711, + "end": 19712, "loc": { "start": { - "line": 448, + "line": 502, "column": 42 }, "end": { - "line": 448, + "line": 502, "column": 43 } } @@ -78994,15 +78994,15 @@ "binop": null }, "value": "finalize", - "start": 17724, - "end": 17732, + "start": 19712, + "end": 19720, "loc": { "start": { - "line": 448, + "line": 502, "column": 43 }, "end": { - "line": 448, + "line": 502, "column": 51 } } @@ -79019,15 +79019,15 @@ "postfix": false, "binop": null }, - "start": 17732, - "end": 17733, + "start": 19720, + "end": 19721, "loc": { "start": { - "line": 448, + "line": 502, "column": 51 }, "end": { - "line": 448, + "line": 502, "column": 52 } } @@ -79044,15 +79044,15 @@ "postfix": false, "binop": null }, - "start": 17733, - "end": 17734, + "start": 19721, + "end": 19722, "loc": { "start": { - "line": 448, + "line": 502, "column": 52 }, "end": { - "line": 448, + "line": 502, "column": 53 } } @@ -79070,15 +79070,15 @@ "binop": null, "updateContext": null }, - "start": 17734, - "end": 17735, + "start": 19722, + "end": 19723, "loc": { "start": { - "line": 448, + "line": 502, "column": 53 }, "end": { - "line": 448, + "line": 502, "column": 54 } } @@ -79096,15 +79096,15 @@ "binop": null }, "value": "reject", - "start": 17768, - "end": 17774, + "start": 19756, + "end": 19762, "loc": { "start": { - "line": 449, + "line": 503, "column": 32 }, "end": { - "line": 449, + "line": 503, "column": 38 } } @@ -79121,15 +79121,15 @@ "postfix": false, "binop": null }, - "start": 17774, - "end": 17775, + "start": 19762, + "end": 19763, "loc": { "start": { - "line": 449, + "line": 503, "column": 38 }, "end": { - "line": 449, + "line": 503, "column": 39 } } @@ -79148,15 +79148,15 @@ "updateContext": null }, "value": "No positions found in file", - "start": 17775, - "end": 17803, + "start": 19763, + "end": 19791, "loc": { "start": { - "line": 449, + "line": 503, "column": 39 }, "end": { - "line": 449, + "line": 503, "column": 67 } } @@ -79173,15 +79173,15 @@ "postfix": false, "binop": null }, - "start": 17803, - "end": 17804, + "start": 19791, + "end": 19792, "loc": { "start": { - "line": 449, + "line": 503, "column": 67 }, "end": { - "line": 449, + "line": 503, "column": 68 } } @@ -79199,15 +79199,15 @@ "binop": null, "updateContext": null }, - "start": 17804, - "end": 17805, + "start": 19792, + "end": 19793, "loc": { "start": { - "line": 449, + "line": 503, "column": 68 }, "end": { - "line": 449, + "line": 503, "column": 69 } } @@ -79227,15 +79227,15 @@ "updateContext": null }, "value": "return", - "start": 17838, - "end": 17844, + "start": 19826, + "end": 19832, "loc": { "start": { - "line": 450, + "line": 504, "column": 32 }, "end": { - "line": 450, + "line": 504, "column": 38 } } @@ -79253,15 +79253,15 @@ "binop": null, "updateContext": null }, - "start": 17844, - "end": 17845, + "start": 19832, + "end": 19833, "loc": { "start": { - "line": 450, + "line": 504, "column": 38 }, "end": { - "line": 450, + "line": 504, "column": 39 } } @@ -79278,15 +79278,15 @@ "postfix": false, "binop": null }, - "start": 17874, - "end": 17875, + "start": 19862, + "end": 19863, "loc": { "start": { - "line": 451, + "line": 505, "column": 28 }, "end": { - "line": 451, + "line": 505, "column": 29 } } @@ -79304,15 +79304,15 @@ "binop": null }, "value": "positionsValue", - "start": 17904, - "end": 17918, + "start": 19892, + "end": 19906, "loc": { "start": { - "line": 452, + "line": 506, "column": 28 }, "end": { - "line": 452, + "line": 506, "column": 42 } } @@ -79331,15 +79331,15 @@ "updateContext": null }, "value": "=", - "start": 17919, - "end": 17920, + "start": 19907, + "end": 19908, "loc": { "start": { - "line": 452, + "line": 506, "column": 43 }, "end": { - "line": 452, + "line": 506, "column": 44 } } @@ -79357,15 +79357,15 @@ "binop": null }, "value": "readPositions", - "start": 17921, - "end": 17934, + "start": 19909, + "end": 19922, "loc": { "start": { - "line": 452, + "line": 506, "column": 45 }, "end": { - "line": 452, + "line": 506, "column": 58 } } @@ -79382,15 +79382,15 @@ "postfix": false, "binop": null }, - "start": 17934, - "end": 17935, + "start": 19922, + "end": 19923, "loc": { "start": { - "line": 452, + "line": 506, "column": 58 }, "end": { - "line": 452, + "line": 506, "column": 59 } } @@ -79408,15 +79408,15 @@ "binop": null }, "value": "attributes", - "start": 17935, - "end": 17945, + "start": 19923, + "end": 19933, "loc": { "start": { - "line": 452, + "line": 506, "column": 59 }, "end": { - "line": 452, + "line": 506, "column": 69 } } @@ -79434,15 +79434,15 @@ "binop": null, "updateContext": null }, - "start": 17945, - "end": 17946, + "start": 19933, + "end": 19934, "loc": { "start": { - "line": 452, + "line": 506, "column": 69 }, "end": { - "line": 452, + "line": 506, "column": 70 } } @@ -79460,15 +79460,15 @@ "binop": null }, "value": "POSITION", - "start": 17946, - "end": 17954, + "start": 19934, + "end": 19942, "loc": { "start": { - "line": 452, + "line": 506, "column": 70 }, "end": { - "line": 452, + "line": 506, "column": 78 } } @@ -79485,15 +79485,15 @@ "postfix": false, "binop": null }, - "start": 17954, - "end": 17955, + "start": 19942, + "end": 19943, "loc": { "start": { - "line": 452, + "line": 506, "column": 78 }, "end": { - "line": 452, + "line": 506, "column": 79 } } @@ -79511,15 +79511,15 @@ "binop": null, "updateContext": null }, - "start": 17955, - "end": 17956, + "start": 19943, + "end": 19944, "loc": { "start": { - "line": 452, + "line": 506, "column": 79 }, "end": { - "line": 452, + "line": 506, "column": 80 } } @@ -79537,15 +79537,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 17985, - "end": 18001, + "start": 19973, + "end": 19989, "loc": { "start": { - "line": 453, + "line": 507, "column": 28 }, "end": { - "line": 453, + "line": 507, "column": 44 } } @@ -79564,15 +79564,15 @@ "updateContext": null }, "value": "=", - "start": 18002, - "end": 18003, + "start": 19990, + "end": 19991, "loc": { "start": { - "line": 453, + "line": 507, "column": 45 }, "end": { - "line": 453, + "line": 507, "column": 46 } } @@ -79590,15 +79590,15 @@ "binop": null }, "value": "readColorsAndIntensities", - "start": 18004, - "end": 18028, + "start": 19992, + "end": 20016, "loc": { "start": { - "line": 453, + "line": 507, "column": 47 }, "end": { - "line": 453, + "line": 507, "column": 71 } } @@ -79615,15 +79615,15 @@ "postfix": false, "binop": null }, - "start": 18028, - "end": 18029, + "start": 20016, + "end": 20017, "loc": { "start": { - "line": 453, + "line": 507, "column": 71 }, "end": { - "line": 453, + "line": 507, "column": 72 } } @@ -79641,15 +79641,15 @@ "binop": null }, "value": "attributes", - "start": 18029, - "end": 18039, + "start": 20017, + "end": 20027, "loc": { "start": { - "line": 453, + "line": 507, "column": 72 }, "end": { - "line": 453, + "line": 507, "column": 82 } } @@ -79667,15 +79667,15 @@ "binop": null, "updateContext": null }, - "start": 18039, - "end": 18040, + "start": 20027, + "end": 20028, "loc": { "start": { - "line": 453, + "line": 507, "column": 82 }, "end": { - "line": 453, + "line": 507, "column": 83 } } @@ -79693,15 +79693,15 @@ "binop": null }, "value": "COLOR_0", - "start": 18040, - "end": 18047, + "start": 20028, + "end": 20035, "loc": { "start": { - "line": 453, + "line": 507, "column": 83 }, "end": { - "line": 453, + "line": 507, "column": 90 } } @@ -79719,15 +79719,15 @@ "binop": null, "updateContext": null }, - "start": 18047, - "end": 18048, + "start": 20035, + "end": 20036, "loc": { "start": { - "line": 453, + "line": 507, "column": 90 }, "end": { - "line": 453, + "line": 507, "column": 91 } } @@ -79745,15 +79745,15 @@ "binop": null }, "value": "attributes", - "start": 18049, - "end": 18059, + "start": 20037, + "end": 20047, "loc": { "start": { - "line": 453, + "line": 507, "column": 92 }, "end": { - "line": 453, + "line": 507, "column": 102 } } @@ -79771,15 +79771,15 @@ "binop": null, "updateContext": null }, - "start": 18059, - "end": 18060, + "start": 20047, + "end": 20048, "loc": { "start": { - "line": 453, + "line": 507, "column": 102 }, "end": { - "line": 453, + "line": 507, "column": 103 } } @@ -79797,15 +79797,15 @@ "binop": null }, "value": "intensity", - "start": 18060, - "end": 18069, + "start": 20048, + "end": 20057, "loc": { "start": { - "line": 453, + "line": 507, "column": 103 }, "end": { - "line": 453, + "line": 507, "column": 112 } } @@ -79822,15 +79822,15 @@ "postfix": false, "binop": null }, - "start": 18069, - "end": 18070, + "start": 20057, + "end": 20058, "loc": { "start": { - "line": 453, + "line": 507, "column": 112 }, "end": { - "line": 453, + "line": 507, "column": 113 } } @@ -79848,15 +79848,15 @@ "binop": null, "updateContext": null }, - "start": 18070, - "end": 18071, + "start": 20058, + "end": 20059, "loc": { "start": { - "line": 453, + "line": 507, "column": 113 }, "end": { - "line": 453, + "line": 507, "column": 114 } } @@ -79876,15 +79876,15 @@ "updateContext": null }, "value": "break", - "start": 18100, - "end": 18105, + "start": 20088, + "end": 20093, "loc": { "start": { - "line": 454, + "line": 508, "column": 28 }, "end": { - "line": 454, + "line": 508, "column": 33 } } @@ -79902,15 +79902,15 @@ "binop": null, "updateContext": null }, - "start": 18105, - "end": 18106, + "start": 20093, + "end": 20094, "loc": { "start": { - "line": 454, + "line": 508, "column": 33 }, "end": { - "line": 454, + "line": 508, "column": 34 } } @@ -79927,15 +79927,15 @@ "postfix": false, "binop": null }, - "start": 18127, - "end": 18128, + "start": 20115, + "end": 20116, "loc": { "start": { - "line": 455, + "line": 509, "column": 20 }, "end": { - "line": 455, + "line": 509, "column": 21 } } @@ -79955,15 +79955,15 @@ "updateContext": null }, "value": "const", - "start": 18150, - "end": 18155, + "start": 20138, + "end": 20143, "loc": { "start": { - "line": 457, + "line": 511, "column": 20 }, "end": { - "line": 457, + "line": 511, "column": 25 } } @@ -79981,15 +79981,15 @@ "binop": null }, "value": "pointsChunks", - "start": 18156, - "end": 18168, + "start": 20144, + "end": 20156, "loc": { "start": { - "line": 457, + "line": 511, "column": 26 }, "end": { - "line": 457, + "line": 511, "column": 38 } } @@ -80008,15 +80008,15 @@ "updateContext": null }, "value": "=", - "start": 18169, - "end": 18170, + "start": 20157, + "end": 20158, "loc": { "start": { - "line": 457, + "line": 511, "column": 39 }, "end": { - "line": 457, + "line": 511, "column": 40 } } @@ -80034,15 +80034,15 @@ "binop": null }, "value": "chunkArray", - "start": 18171, - "end": 18181, + "start": 20159, + "end": 20169, "loc": { "start": { - "line": 457, + "line": 511, "column": 41 }, "end": { - "line": 457, + "line": 511, "column": 51 } } @@ -80059,15 +80059,15 @@ "postfix": false, "binop": null }, - "start": 18181, - "end": 18182, + "start": 20169, + "end": 20170, "loc": { "start": { - "line": 457, + "line": 511, "column": 51 }, "end": { - "line": 457, + "line": 511, "column": 52 } } @@ -80085,15 +80085,15 @@ "binop": null }, "value": "positionsValue", - "start": 18182, - "end": 18196, + "start": 20170, + "end": 20184, "loc": { "start": { - "line": 457, + "line": 511, "column": 52 }, "end": { - "line": 457, + "line": 511, "column": 66 } } @@ -80111,15 +80111,15 @@ "binop": null, "updateContext": null }, - "start": 18196, - "end": 18197, + "start": 20184, + "end": 20185, "loc": { "start": { - "line": 457, + "line": 511, "column": 66 }, "end": { - "line": 457, + "line": 511, "column": 67 } } @@ -80137,15 +80137,15 @@ "binop": null }, "value": "MAX_VERTICES", - "start": 18198, - "end": 18210, + "start": 20186, + "end": 20198, "loc": { "start": { - "line": 457, + "line": 511, "column": 68 }, "end": { - "line": 457, + "line": 511, "column": 80 } } @@ -80164,15 +80164,15 @@ "updateContext": null }, "value": "*", - "start": 18211, - "end": 18212, + "start": 20199, + "end": 20200, "loc": { "start": { - "line": 457, + "line": 511, "column": 81 }, "end": { - "line": 457, + "line": 511, "column": 82 } } @@ -80191,15 +80191,15 @@ "updateContext": null }, "value": 3, - "start": 18213, - "end": 18214, + "start": 20201, + "end": 20202, "loc": { "start": { - "line": 457, + "line": 511, "column": 83 }, "end": { - "line": 457, + "line": 511, "column": 84 } } @@ -80216,15 +80216,15 @@ "postfix": false, "binop": null }, - "start": 18214, - "end": 18215, + "start": 20202, + "end": 20203, "loc": { "start": { - "line": 457, + "line": 511, "column": 84 }, "end": { - "line": 457, + "line": 511, "column": 85 } } @@ -80242,15 +80242,15 @@ "binop": null, "updateContext": null }, - "start": 18215, - "end": 18216, + "start": 20203, + "end": 20204, "loc": { "start": { - "line": 457, + "line": 511, "column": 85 }, "end": { - "line": 457, + "line": 511, "column": 86 } } @@ -80270,15 +80270,15 @@ "updateContext": null }, "value": "const", - "start": 18237, - "end": 18242, + "start": 20225, + "end": 20230, "loc": { "start": { - "line": 458, + "line": 512, "column": 20 }, "end": { - "line": 458, + "line": 512, "column": 25 } } @@ -80296,15 +80296,15 @@ "binop": null }, "value": "colorsChunks", - "start": 18243, - "end": 18255, + "start": 20231, + "end": 20243, "loc": { "start": { - "line": 458, + "line": 512, "column": 26 }, "end": { - "line": 458, + "line": 512, "column": 38 } } @@ -80323,15 +80323,15 @@ "updateContext": null }, "value": "=", - "start": 18256, - "end": 18257, + "start": 20244, + "end": 20245, "loc": { "start": { - "line": 458, + "line": 512, "column": 39 }, "end": { - "line": 458, + "line": 512, "column": 40 } } @@ -80349,15 +80349,15 @@ "binop": null }, "value": "chunkArray", - "start": 18258, - "end": 18268, + "start": 20246, + "end": 20256, "loc": { "start": { - "line": 458, + "line": 512, "column": 41 }, "end": { - "line": 458, + "line": 512, "column": 51 } } @@ -80374,15 +80374,15 @@ "postfix": false, "binop": null }, - "start": 18268, - "end": 18269, + "start": 20256, + "end": 20257, "loc": { "start": { - "line": 458, + "line": 512, "column": 51 }, "end": { - "line": 458, + "line": 512, "column": 52 } } @@ -80400,15 +80400,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 18269, - "end": 18285, + "start": 20257, + "end": 20273, "loc": { "start": { - "line": 458, + "line": 512, "column": 52 }, "end": { - "line": 458, + "line": 512, "column": 68 } } @@ -80426,15 +80426,15 @@ "binop": null, "updateContext": null }, - "start": 18285, - "end": 18286, + "start": 20273, + "end": 20274, "loc": { "start": { - "line": 458, + "line": 512, "column": 68 }, "end": { - "line": 458, + "line": 512, "column": 69 } } @@ -80452,15 +80452,15 @@ "binop": null }, "value": "MAX_VERTICES", - "start": 18287, - "end": 18299, + "start": 20275, + "end": 20287, "loc": { "start": { - "line": 458, + "line": 512, "column": 70 }, "end": { - "line": 458, + "line": 512, "column": 82 } } @@ -80479,15 +80479,15 @@ "updateContext": null }, "value": "*", - "start": 18300, - "end": 18301, + "start": 20288, + "end": 20289, "loc": { "start": { - "line": 458, + "line": 512, "column": 83 }, "end": { - "line": 458, + "line": 512, "column": 84 } } @@ -80506,15 +80506,15 @@ "updateContext": null }, "value": 4, - "start": 18302, - "end": 18303, + "start": 20290, + "end": 20291, "loc": { "start": { - "line": 458, + "line": 512, "column": 85 }, "end": { - "line": 458, + "line": 512, "column": 86 } } @@ -80531,15 +80531,15 @@ "postfix": false, "binop": null }, - "start": 18303, - "end": 18304, + "start": 20291, + "end": 20292, "loc": { "start": { - "line": 458, + "line": 512, "column": 86 }, "end": { - "line": 458, + "line": 512, "column": 87 } } @@ -80557,15 +80557,15 @@ "binop": null, "updateContext": null }, - "start": 18304, - "end": 18305, + "start": 20292, + "end": 20293, "loc": { "start": { - "line": 458, + "line": 512, "column": 87 }, "end": { - "line": 458, + "line": 512, "column": 88 } } @@ -80585,15 +80585,15 @@ "updateContext": null }, "value": "const", - "start": 18326, - "end": 18331, + "start": 20314, + "end": 20319, "loc": { "start": { - "line": 459, + "line": 513, "column": 20 }, "end": { - "line": 459, + "line": 513, "column": 25 } } @@ -80611,15 +80611,15 @@ "binop": null }, "value": "meshIds", - "start": 18332, - "end": 18339, + "start": 20320, + "end": 20327, "loc": { "start": { - "line": 459, + "line": 513, "column": 26 }, "end": { - "line": 459, + "line": 513, "column": 33 } } @@ -80638,15 +80638,15 @@ "updateContext": null }, "value": "=", - "start": 18340, - "end": 18341, + "start": 20328, + "end": 20329, "loc": { "start": { - "line": 459, + "line": 513, "column": 34 }, "end": { - "line": 459, + "line": 513, "column": 35 } } @@ -80664,15 +80664,15 @@ "binop": null, "updateContext": null }, - "start": 18342, - "end": 18343, + "start": 20330, + "end": 20331, "loc": { "start": { - "line": 459, + "line": 513, "column": 36 }, "end": { - "line": 459, + "line": 513, "column": 37 } } @@ -80690,15 +80690,15 @@ "binop": null, "updateContext": null }, - "start": 18343, - "end": 18344, + "start": 20331, + "end": 20332, "loc": { "start": { - "line": 459, + "line": 513, "column": 37 }, "end": { - "line": 459, + "line": 513, "column": 38 } } @@ -80716,15 +80716,15 @@ "binop": null, "updateContext": null }, - "start": 18344, - "end": 18345, + "start": 20332, + "end": 20333, "loc": { "start": { - "line": 459, + "line": 513, "column": 38 }, "end": { - "line": 459, + "line": 513, "column": 39 } } @@ -80744,15 +80744,15 @@ "updateContext": null }, "value": "for", - "start": 18367, - "end": 18370, + "start": 20355, + "end": 20358, "loc": { "start": { - "line": 461, + "line": 515, "column": 20 }, "end": { - "line": 461, + "line": 515, "column": 23 } } @@ -80769,15 +80769,15 @@ "postfix": false, "binop": null }, - "start": 18371, - "end": 18372, + "start": 20359, + "end": 20360, "loc": { "start": { - "line": 461, + "line": 515, "column": 24 }, "end": { - "line": 461, + "line": 515, "column": 25 } } @@ -80797,15 +80797,15 @@ "updateContext": null }, "value": "let", - "start": 18372, - "end": 18375, + "start": 20360, + "end": 20363, "loc": { "start": { - "line": 461, + "line": 515, "column": 25 }, "end": { - "line": 461, + "line": 515, "column": 28 } } @@ -80823,15 +80823,15 @@ "binop": null }, "value": "i", - "start": 18376, - "end": 18377, + "start": 20364, + "end": 20365, "loc": { "start": { - "line": 461, + "line": 515, "column": 29 }, "end": { - "line": 461, + "line": 515, "column": 30 } } @@ -80850,15 +80850,15 @@ "updateContext": null }, "value": "=", - "start": 18378, - "end": 18379, + "start": 20366, + "end": 20367, "loc": { "start": { - "line": 461, + "line": 515, "column": 31 }, "end": { - "line": 461, + "line": 515, "column": 32 } } @@ -80877,15 +80877,15 @@ "updateContext": null }, "value": 0, - "start": 18380, - "end": 18381, + "start": 20368, + "end": 20369, "loc": { "start": { - "line": 461, + "line": 515, "column": 33 }, "end": { - "line": 461, + "line": 515, "column": 34 } } @@ -80903,15 +80903,15 @@ "binop": null, "updateContext": null }, - "start": 18381, - "end": 18382, + "start": 20369, + "end": 20370, "loc": { "start": { - "line": 461, + "line": 515, "column": 34 }, "end": { - "line": 461, + "line": 515, "column": 35 } } @@ -80929,15 +80929,15 @@ "binop": null }, "value": "len", - "start": 18383, - "end": 18386, + "start": 20371, + "end": 20374, "loc": { "start": { - "line": 461, + "line": 515, "column": 36 }, "end": { - "line": 461, + "line": 515, "column": 39 } } @@ -80956,15 +80956,15 @@ "updateContext": null }, "value": "=", - "start": 18387, - "end": 18388, + "start": 20375, + "end": 20376, "loc": { "start": { - "line": 461, + "line": 515, "column": 40 }, "end": { - "line": 461, + "line": 515, "column": 41 } } @@ -80982,15 +80982,15 @@ "binop": null }, "value": "pointsChunks", - "start": 18389, - "end": 18401, + "start": 20377, + "end": 20389, "loc": { "start": { - "line": 461, + "line": 515, "column": 42 }, "end": { - "line": 461, + "line": 515, "column": 54 } } @@ -81008,15 +81008,15 @@ "binop": null, "updateContext": null }, - "start": 18401, - "end": 18402, + "start": 20389, + "end": 20390, "loc": { "start": { - "line": 461, + "line": 515, "column": 54 }, "end": { - "line": 461, + "line": 515, "column": 55 } } @@ -81034,15 +81034,15 @@ "binop": null }, "value": "length", - "start": 18402, - "end": 18408, + "start": 20390, + "end": 20396, "loc": { "start": { - "line": 461, + "line": 515, "column": 55 }, "end": { - "line": 461, + "line": 515, "column": 61 } } @@ -81060,15 +81060,15 @@ "binop": null, "updateContext": null }, - "start": 18408, - "end": 18409, + "start": 20396, + "end": 20397, "loc": { "start": { - "line": 461, + "line": 515, "column": 61 }, "end": { - "line": 461, + "line": 515, "column": 62 } } @@ -81086,15 +81086,15 @@ "binop": null }, "value": "i", - "start": 18410, - "end": 18411, + "start": 20398, + "end": 20399, "loc": { "start": { - "line": 461, + "line": 515, "column": 63 }, "end": { - "line": 461, + "line": 515, "column": 64 } } @@ -81113,15 +81113,15 @@ "updateContext": null }, "value": "<", - "start": 18412, - "end": 18413, + "start": 20400, + "end": 20401, "loc": { "start": { - "line": 461, + "line": 515, "column": 65 }, "end": { - "line": 461, + "line": 515, "column": 66 } } @@ -81139,15 +81139,15 @@ "binop": null }, "value": "len", - "start": 18414, - "end": 18417, + "start": 20402, + "end": 20405, "loc": { "start": { - "line": 461, + "line": 515, "column": 67 }, "end": { - "line": 461, + "line": 515, "column": 70 } } @@ -81165,15 +81165,15 @@ "binop": null, "updateContext": null }, - "start": 18417, - "end": 18418, + "start": 20405, + "end": 20406, "loc": { "start": { - "line": 461, + "line": 515, "column": 70 }, "end": { - "line": 461, + "line": 515, "column": 71 } } @@ -81191,15 +81191,15 @@ "binop": null }, "value": "i", - "start": 18419, - "end": 18420, + "start": 20407, + "end": 20408, "loc": { "start": { - "line": 461, + "line": 515, "column": 72 }, "end": { - "line": 461, + "line": 515, "column": 73 } } @@ -81217,15 +81217,15 @@ "binop": null }, "value": "++", - "start": 18420, - "end": 18422, + "start": 20408, + "end": 20410, "loc": { "start": { - "line": 461, + "line": 515, "column": 73 }, "end": { - "line": 461, + "line": 515, "column": 75 } } @@ -81242,15 +81242,15 @@ "postfix": false, "binop": null }, - "start": 18422, - "end": 18423, + "start": 20410, + "end": 20411, "loc": { "start": { - "line": 461, + "line": 515, "column": 75 }, "end": { - "line": 461, + "line": 515, "column": 76 } } @@ -81267,15 +81267,15 @@ "postfix": false, "binop": null }, - "start": 18424, - "end": 18425, + "start": 20412, + "end": 20413, "loc": { "start": { - "line": 461, + "line": 515, "column": 77 }, "end": { - "line": 461, + "line": 515, "column": 78 } } @@ -81295,15 +81295,15 @@ "updateContext": null }, "value": "const", - "start": 18450, - "end": 18455, + "start": 20438, + "end": 20443, "loc": { "start": { - "line": 462, + "line": 516, "column": 24 }, "end": { - "line": 462, + "line": 516, "column": 29 } } @@ -81321,15 +81321,15 @@ "binop": null }, "value": "meshId", - "start": 18456, - "end": 18462, + "start": 20444, + "end": 20450, "loc": { "start": { - "line": 462, + "line": 516, "column": 30 }, "end": { - "line": 462, + "line": 516, "column": 36 } } @@ -81348,15 +81348,15 @@ "updateContext": null }, "value": "=", - "start": 18463, - "end": 18464, + "start": 20451, + "end": 20452, "loc": { "start": { - "line": 462, + "line": 516, "column": 37 }, "end": { - "line": 462, + "line": 516, "column": 38 } } @@ -81373,15 +81373,15 @@ "postfix": false, "binop": null }, - "start": 18465, - "end": 18466, + "start": 20453, + "end": 20454, "loc": { "start": { - "line": 462, + "line": 516, "column": 39 }, "end": { - "line": 462, + "line": 516, "column": 40 } } @@ -81400,15 +81400,15 @@ "updateContext": null }, "value": "pointsMesh", - "start": 18466, - "end": 18476, + "start": 20454, + "end": 20464, "loc": { "start": { - "line": 462, + "line": 516, "column": 40 }, "end": { - "line": 462, + "line": 516, "column": 50 } } @@ -81425,15 +81425,15 @@ "postfix": false, "binop": null }, - "start": 18476, - "end": 18478, + "start": 20464, + "end": 20466, "loc": { "start": { - "line": 462, + "line": 516, "column": 50 }, "end": { - "line": 462, + "line": 516, "column": 52 } } @@ -81451,15 +81451,15 @@ "binop": null }, "value": "i", - "start": 18478, - "end": 18479, + "start": 20466, + "end": 20467, "loc": { "start": { - "line": 462, + "line": 516, "column": 52 }, "end": { - "line": 462, + "line": 516, "column": 53 } } @@ -81476,15 +81476,15 @@ "postfix": false, "binop": null }, - "start": 18479, - "end": 18480, + "start": 20467, + "end": 20468, "loc": { "start": { - "line": 462, + "line": 516, "column": 53 }, "end": { - "line": 462, + "line": 516, "column": 54 } } @@ -81503,15 +81503,15 @@ "updateContext": null }, "value": "", - "start": 18480, - "end": 18480, + "start": 20468, + "end": 20468, "loc": { "start": { - "line": 462, + "line": 516, "column": 54 }, "end": { - "line": 462, + "line": 516, "column": 54 } } @@ -81528,15 +81528,15 @@ "postfix": false, "binop": null }, - "start": 18480, - "end": 18481, + "start": 20468, + "end": 20469, "loc": { "start": { - "line": 462, + "line": 516, "column": 54 }, "end": { - "line": 462, + "line": 516, "column": 55 } } @@ -81554,15 +81554,15 @@ "binop": null, "updateContext": null }, - "start": 18481, - "end": 18482, + "start": 20469, + "end": 20470, "loc": { "start": { - "line": 462, + "line": 516, "column": 55 }, "end": { - "line": 462, + "line": 516, "column": 56 } } @@ -81580,15 +81580,15 @@ "binop": null }, "value": "meshIds", - "start": 18507, - "end": 18514, + "start": 20495, + "end": 20502, "loc": { "start": { - "line": 463, + "line": 517, "column": 24 }, "end": { - "line": 463, + "line": 517, "column": 31 } } @@ -81606,15 +81606,15 @@ "binop": null, "updateContext": null }, - "start": 18514, - "end": 18515, + "start": 20502, + "end": 20503, "loc": { "start": { - "line": 463, + "line": 517, "column": 31 }, "end": { - "line": 463, + "line": 517, "column": 32 } } @@ -81632,15 +81632,15 @@ "binop": null }, "value": "push", - "start": 18515, - "end": 18519, + "start": 20503, + "end": 20507, "loc": { "start": { - "line": 463, + "line": 517, "column": 32 }, "end": { - "line": 463, + "line": 517, "column": 36 } } @@ -81657,15 +81657,15 @@ "postfix": false, "binop": null }, - "start": 18519, - "end": 18520, + "start": 20507, + "end": 20508, "loc": { "start": { - "line": 463, + "line": 517, "column": 36 }, "end": { - "line": 463, + "line": 517, "column": 37 } } @@ -81683,15 +81683,15 @@ "binop": null }, "value": "meshId", - "start": 18520, - "end": 18526, + "start": 20508, + "end": 20514, "loc": { "start": { - "line": 463, + "line": 517, "column": 37 }, "end": { - "line": 463, + "line": 517, "column": 43 } } @@ -81708,15 +81708,15 @@ "postfix": false, "binop": null }, - "start": 18526, - "end": 18527, + "start": 20514, + "end": 20515, "loc": { "start": { - "line": 463, + "line": 517, "column": 43 }, "end": { - "line": 463, + "line": 517, "column": 44 } } @@ -81734,15 +81734,15 @@ "binop": null, "updateContext": null }, - "start": 18527, - "end": 18528, + "start": 20515, + "end": 20516, "loc": { "start": { - "line": 463, + "line": 517, "column": 44 }, "end": { - "line": 463, + "line": 517, "column": 45 } } @@ -81760,15 +81760,15 @@ "binop": null }, "value": "sceneModel", - "start": 18553, - "end": 18563, + "start": 20541, + "end": 20551, "loc": { "start": { - "line": 464, + "line": 518, "column": 24 }, "end": { - "line": 464, + "line": 518, "column": 34 } } @@ -81786,15 +81786,15 @@ "binop": null, "updateContext": null }, - "start": 18563, - "end": 18564, + "start": 20551, + "end": 20552, "loc": { "start": { - "line": 464, + "line": 518, "column": 34 }, "end": { - "line": 464, + "line": 518, "column": 35 } } @@ -81812,15 +81812,15 @@ "binop": null }, "value": "createMesh", - "start": 18564, - "end": 18574, + "start": 20552, + "end": 20562, "loc": { "start": { - "line": 464, + "line": 518, "column": 35 }, "end": { - "line": 464, + "line": 518, "column": 45 } } @@ -81837,15 +81837,15 @@ "postfix": false, "binop": null }, - "start": 18574, - "end": 18575, + "start": 20562, + "end": 20563, "loc": { "start": { - "line": 464, + "line": 518, "column": 45 }, "end": { - "line": 464, + "line": 518, "column": 46 } } @@ -81862,15 +81862,15 @@ "postfix": false, "binop": null }, - "start": 18575, - "end": 18576, + "start": 20563, + "end": 20564, "loc": { "start": { - "line": 464, + "line": 518, "column": 46 }, "end": { - "line": 464, + "line": 518, "column": 47 } } @@ -81888,15 +81888,15 @@ "binop": null }, "value": "id", - "start": 18605, - "end": 18607, + "start": 20593, + "end": 20595, "loc": { "start": { - "line": 465, + "line": 519, "column": 28 }, "end": { - "line": 465, + "line": 519, "column": 30 } } @@ -81914,15 +81914,15 @@ "binop": null, "updateContext": null }, - "start": 18607, - "end": 18608, + "start": 20595, + "end": 20596, "loc": { "start": { - "line": 465, + "line": 519, "column": 30 }, "end": { - "line": 465, + "line": 519, "column": 31 } } @@ -81940,15 +81940,15 @@ "binop": null }, "value": "meshId", - "start": 18609, - "end": 18615, + "start": 20597, + "end": 20603, "loc": { "start": { - "line": 465, + "line": 519, "column": 32 }, "end": { - "line": 465, + "line": 519, "column": 38 } } @@ -81966,15 +81966,15 @@ "binop": null, "updateContext": null }, - "start": 18615, - "end": 18616, + "start": 20603, + "end": 20604, "loc": { "start": { - "line": 465, + "line": 519, "column": 38 }, "end": { - "line": 465, + "line": 519, "column": 39 } } @@ -81992,15 +81992,15 @@ "binop": null }, "value": "primitive", - "start": 18645, - "end": 18654, + "start": 20633, + "end": 20642, "loc": { "start": { - "line": 466, + "line": 520, "column": 28 }, "end": { - "line": 466, + "line": 520, "column": 37 } } @@ -82018,15 +82018,15 @@ "binop": null, "updateContext": null }, - "start": 18654, - "end": 18655, + "start": 20642, + "end": 20643, "loc": { "start": { - "line": 466, + "line": 520, "column": 37 }, "end": { - "line": 466, + "line": 520, "column": 38 } } @@ -82045,15 +82045,15 @@ "updateContext": null }, "value": "points", - "start": 18656, - "end": 18664, + "start": 20644, + "end": 20652, "loc": { "start": { - "line": 466, + "line": 520, "column": 39 }, "end": { - "line": 466, + "line": 520, "column": 47 } } @@ -82071,15 +82071,15 @@ "binop": null, "updateContext": null }, - "start": 18664, - "end": 18665, + "start": 20652, + "end": 20653, "loc": { "start": { - "line": 466, + "line": 520, "column": 47 }, "end": { - "line": 466, + "line": 520, "column": 48 } } @@ -82097,15 +82097,15 @@ "binop": null }, "value": "positions", - "start": 18694, - "end": 18703, + "start": 20682, + "end": 20691, "loc": { "start": { - "line": 467, + "line": 521, "column": 28 }, "end": { - "line": 467, + "line": 521, "column": 37 } } @@ -82123,15 +82123,15 @@ "binop": null, "updateContext": null }, - "start": 18703, - "end": 18704, + "start": 20691, + "end": 20692, "loc": { "start": { - "line": 467, + "line": 521, "column": 37 }, "end": { - "line": 467, + "line": 521, "column": 38 } } @@ -82149,15 +82149,15 @@ "binop": null }, "value": "pointsChunks", - "start": 18705, - "end": 18717, + "start": 20693, + "end": 20705, "loc": { "start": { - "line": 467, + "line": 521, "column": 39 }, "end": { - "line": 467, + "line": 521, "column": 51 } } @@ -82175,15 +82175,15 @@ "binop": null, "updateContext": null }, - "start": 18717, - "end": 18718, + "start": 20705, + "end": 20706, "loc": { "start": { - "line": 467, + "line": 521, "column": 51 }, "end": { - "line": 467, + "line": 521, "column": 52 } } @@ -82201,15 +82201,15 @@ "binop": null }, "value": "i", - "start": 18718, - "end": 18719, + "start": 20706, + "end": 20707, "loc": { "start": { - "line": 467, + "line": 521, "column": 52 }, "end": { - "line": 467, + "line": 521, "column": 53 } } @@ -82227,15 +82227,15 @@ "binop": null, "updateContext": null }, - "start": 18719, - "end": 18720, + "start": 20707, + "end": 20708, "loc": { "start": { - "line": 467, + "line": 521, "column": 53 }, "end": { - "line": 467, + "line": 521, "column": 54 } } @@ -82253,15 +82253,15 @@ "binop": null, "updateContext": null }, - "start": 18720, - "end": 18721, + "start": 20708, + "end": 20709, "loc": { "start": { - "line": 467, + "line": 521, "column": 54 }, "end": { - "line": 467, + "line": 521, "column": 55 } } @@ -82279,15 +82279,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 18750, - "end": 18766, + "start": 20738, + "end": 20754, "loc": { "start": { - "line": 468, + "line": 522, "column": 28 }, "end": { - "line": 468, + "line": 522, "column": 44 } } @@ -82305,15 +82305,15 @@ "binop": null, "updateContext": null }, - "start": 18766, - "end": 18767, + "start": 20754, + "end": 20755, "loc": { "start": { - "line": 468, + "line": 522, "column": 44 }, "end": { - "line": 468, + "line": 522, "column": 45 } } @@ -82330,15 +82330,15 @@ "postfix": false, "binop": null }, - "start": 18768, - "end": 18769, + "start": 20756, + "end": 20757, "loc": { "start": { - "line": 468, + "line": 522, "column": 46 }, "end": { - "line": 468, + "line": 522, "column": 47 } } @@ -82356,15 +82356,15 @@ "binop": null }, "value": "i", - "start": 18769, - "end": 18770, + "start": 20757, + "end": 20758, "loc": { "start": { - "line": 468, + "line": 522, "column": 47 }, "end": { - "line": 468, + "line": 522, "column": 48 } } @@ -82383,15 +82383,15 @@ "updateContext": null }, "value": "<", - "start": 18771, - "end": 18772, + "start": 20759, + "end": 20760, "loc": { "start": { - "line": 468, + "line": 522, "column": 49 }, "end": { - "line": 468, + "line": 522, "column": 50 } } @@ -82409,15 +82409,15 @@ "binop": null }, "value": "colorsChunks", - "start": 18773, - "end": 18785, + "start": 20761, + "end": 20773, "loc": { "start": { - "line": 468, + "line": 522, "column": 51 }, "end": { - "line": 468, + "line": 522, "column": 63 } } @@ -82435,15 +82435,15 @@ "binop": null, "updateContext": null }, - "start": 18785, - "end": 18786, + "start": 20773, + "end": 20774, "loc": { "start": { - "line": 468, + "line": 522, "column": 63 }, "end": { - "line": 468, + "line": 522, "column": 64 } } @@ -82461,15 +82461,15 @@ "binop": null }, "value": "length", - "start": 18786, - "end": 18792, + "start": 20774, + "end": 20780, "loc": { "start": { - "line": 468, + "line": 522, "column": 64 }, "end": { - "line": 468, + "line": 522, "column": 70 } } @@ -82486,15 +82486,15 @@ "postfix": false, "binop": null }, - "start": 18792, - "end": 18793, + "start": 20780, + "end": 20781, "loc": { "start": { - "line": 468, + "line": 522, "column": 70 }, "end": { - "line": 468, + "line": 522, "column": 71 } } @@ -82512,15 +82512,15 @@ "binop": null, "updateContext": null }, - "start": 18794, - "end": 18795, + "start": 20782, + "end": 20783, "loc": { "start": { - "line": 468, + "line": 522, "column": 72 }, "end": { - "line": 468, + "line": 522, "column": 73 } } @@ -82538,15 +82538,15 @@ "binop": null }, "value": "colorsChunks", - "start": 18796, - "end": 18808, + "start": 20784, + "end": 20796, "loc": { "start": { - "line": 468, + "line": 522, "column": 74 }, "end": { - "line": 468, + "line": 522, "column": 86 } } @@ -82564,15 +82564,15 @@ "binop": null, "updateContext": null }, - "start": 18808, - "end": 18809, + "start": 20796, + "end": 20797, "loc": { "start": { - "line": 468, + "line": 522, "column": 86 }, "end": { - "line": 468, + "line": 522, "column": 87 } } @@ -82590,15 +82590,15 @@ "binop": null }, "value": "i", - "start": 18809, - "end": 18810, + "start": 20797, + "end": 20798, "loc": { "start": { - "line": 468, + "line": 522, "column": 87 }, "end": { - "line": 468, + "line": 522, "column": 88 } } @@ -82616,15 +82616,15 @@ "binop": null, "updateContext": null }, - "start": 18810, - "end": 18811, + "start": 20798, + "end": 20799, "loc": { "start": { - "line": 468, + "line": 522, "column": 88 }, "end": { - "line": 468, + "line": 522, "column": 89 } } @@ -82642,15 +82642,15 @@ "binop": null, "updateContext": null }, - "start": 18812, - "end": 18813, + "start": 20800, + "end": 20801, "loc": { "start": { - "line": 468, + "line": 522, "column": 90 }, "end": { - "line": 468, + "line": 522, "column": 91 } } @@ -82670,15 +82670,15 @@ "updateContext": null }, "value": "null", - "start": 18814, - "end": 18818, + "start": 20802, + "end": 20806, "loc": { "start": { - "line": 468, + "line": 522, "column": 92 }, "end": { - "line": 468, + "line": 522, "column": 96 } } @@ -82695,15 +82695,15 @@ "postfix": false, "binop": null }, - "start": 18843, - "end": 18844, + "start": 20831, + "end": 20832, "loc": { "start": { - "line": 469, + "line": 523, "column": 24 }, "end": { - "line": 469, + "line": 523, "column": 25 } } @@ -82720,15 +82720,15 @@ "postfix": false, "binop": null }, - "start": 18844, - "end": 18845, + "start": 20832, + "end": 20833, "loc": { "start": { - "line": 469, + "line": 523, "column": 25 }, "end": { - "line": 469, + "line": 523, "column": 26 } } @@ -82746,15 +82746,15 @@ "binop": null, "updateContext": null }, - "start": 18845, - "end": 18846, + "start": 20833, + "end": 20834, "loc": { "start": { - "line": 469, + "line": 523, "column": 26 }, "end": { - "line": 469, + "line": 523, "column": 27 } } @@ -82771,15 +82771,15 @@ "postfix": false, "binop": null }, - "start": 18867, - "end": 18868, + "start": 20855, + "end": 20856, "loc": { "start": { - "line": 470, + "line": 524, "column": 20 }, "end": { - "line": 470, + "line": 524, "column": 21 } } @@ -82787,15 +82787,15 @@ { "type": "CommentBlock", "value": "\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n\n const geometryId = `geometryMesh${i}`;\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n\n sceneModel.createMesh({\n id: meshId,\n geometryId\n });\n }\n ", - "start": 18889, - "end": 19895, + "start": 20877, + "end": 21883, "loc": { "start": { - "line": 471, + "line": 525, "column": 20 }, "end": { - "line": 494, + "line": 548, "column": 23 } } @@ -82815,15 +82815,15 @@ "updateContext": null }, "value": "const", - "start": 19917, - "end": 19922, + "start": 21905, + "end": 21910, "loc": { "start": { - "line": 496, + "line": 550, "column": 20 }, "end": { - "line": 496, + "line": 550, "column": 25 } } @@ -82841,15 +82841,15 @@ "binop": null }, "value": "pointsObjectId", - "start": 19923, - "end": 19937, + "start": 21911, + "end": 21925, "loc": { "start": { - "line": 496, + "line": 550, "column": 26 }, "end": { - "line": 496, + "line": 550, "column": 40 } } @@ -82868,15 +82868,15 @@ "updateContext": null }, "value": "=", - "start": 19938, - "end": 19939, + "start": 21926, + "end": 21927, "loc": { "start": { - "line": 496, + "line": 550, "column": 41 }, "end": { - "line": 496, + "line": 550, "column": 42 } } @@ -82894,15 +82894,15 @@ "binop": null }, "value": "params", - "start": 19940, - "end": 19946, + "start": 21928, + "end": 21934, "loc": { "start": { - "line": 496, + "line": 550, "column": 43 }, "end": { - "line": 496, + "line": 550, "column": 49 } } @@ -82920,15 +82920,15 @@ "binop": null, "updateContext": null }, - "start": 19946, - "end": 19947, + "start": 21934, + "end": 21935, "loc": { "start": { - "line": 496, + "line": 550, "column": 49 }, "end": { - "line": 496, + "line": 550, "column": 50 } } @@ -82946,15 +82946,15 @@ "binop": null }, "value": "entityId", - "start": 19947, - "end": 19955, + "start": 21935, + "end": 21943, "loc": { "start": { - "line": 496, + "line": 550, "column": 50 }, "end": { - "line": 496, + "line": 550, "column": 58 } } @@ -82973,15 +82973,15 @@ "updateContext": null }, "value": "||", - "start": 19956, - "end": 19958, + "start": 21944, + "end": 21946, "loc": { "start": { - "line": 496, + "line": 550, "column": 59 }, "end": { - "line": 496, + "line": 550, "column": 61 } } @@ -82999,15 +82999,15 @@ "binop": null }, "value": "math", - "start": 19959, - "end": 19963, + "start": 21947, + "end": 21951, "loc": { "start": { - "line": 496, + "line": 550, "column": 62 }, "end": { - "line": 496, + "line": 550, "column": 66 } } @@ -83025,15 +83025,15 @@ "binop": null, "updateContext": null }, - "start": 19963, - "end": 19964, + "start": 21951, + "end": 21952, "loc": { "start": { - "line": 496, + "line": 550, "column": 66 }, "end": { - "line": 496, + "line": 550, "column": 67 } } @@ -83051,15 +83051,15 @@ "binop": null }, "value": "createUUID", - "start": 19964, - "end": 19974, + "start": 21952, + "end": 21962, "loc": { "start": { - "line": 496, + "line": 550, "column": 67 }, "end": { - "line": 496, + "line": 550, "column": 77 } } @@ -83076,15 +83076,15 @@ "postfix": false, "binop": null }, - "start": 19974, - "end": 19975, + "start": 21962, + "end": 21963, "loc": { "start": { - "line": 496, + "line": 550, "column": 77 }, "end": { - "line": 496, + "line": 550, "column": 78 } } @@ -83101,15 +83101,15 @@ "postfix": false, "binop": null }, - "start": 19975, - "end": 19976, + "start": 21963, + "end": 21964, "loc": { "start": { - "line": 496, + "line": 550, "column": 78 }, "end": { - "line": 496, + "line": 550, "column": 79 } } @@ -83127,15 +83127,15 @@ "binop": null, "updateContext": null }, - "start": 19976, - "end": 19977, + "start": 21964, + "end": 21965, "loc": { "start": { - "line": 496, + "line": 550, "column": 79 }, "end": { - "line": 496, + "line": 550, "column": 80 } } @@ -83153,15 +83153,15 @@ "binop": null }, "value": "sceneModel", - "start": 19999, - "end": 20009, + "start": 21987, + "end": 21997, "loc": { "start": { - "line": 498, + "line": 552, "column": 20 }, "end": { - "line": 498, + "line": 552, "column": 30 } } @@ -83179,15 +83179,15 @@ "binop": null, "updateContext": null }, - "start": 20009, - "end": 20010, + "start": 21997, + "end": 21998, "loc": { "start": { - "line": 498, + "line": 552, "column": 30 }, "end": { - "line": 498, + "line": 552, "column": 31 } } @@ -83205,15 +83205,15 @@ "binop": null }, "value": "createEntity", - "start": 20010, - "end": 20022, + "start": 21998, + "end": 22010, "loc": { "start": { - "line": 498, + "line": 552, "column": 31 }, "end": { - "line": 498, + "line": 552, "column": 43 } } @@ -83230,15 +83230,15 @@ "postfix": false, "binop": null }, - "start": 20022, - "end": 20023, + "start": 22010, + "end": 22011, "loc": { "start": { - "line": 498, + "line": 552, "column": 43 }, "end": { - "line": 498, + "line": 552, "column": 44 } } @@ -83255,15 +83255,15 @@ "postfix": false, "binop": null }, - "start": 20023, - "end": 20024, + "start": 22011, + "end": 22012, "loc": { "start": { - "line": 498, + "line": 552, "column": 44 }, "end": { - "line": 498, + "line": 552, "column": 45 } } @@ -83281,15 +83281,15 @@ "binop": null }, "value": "id", - "start": 20049, - "end": 20051, + "start": 22037, + "end": 22039, "loc": { "start": { - "line": 499, + "line": 553, "column": 24 }, "end": { - "line": 499, + "line": 553, "column": 26 } } @@ -83307,15 +83307,15 @@ "binop": null, "updateContext": null }, - "start": 20051, - "end": 20052, + "start": 22039, + "end": 22040, "loc": { "start": { - "line": 499, + "line": 553, "column": 26 }, "end": { - "line": 499, + "line": 553, "column": 27 } } @@ -83333,15 +83333,15 @@ "binop": null }, "value": "pointsObjectId", - "start": 20053, - "end": 20067, + "start": 22041, + "end": 22055, "loc": { "start": { - "line": 499, + "line": 553, "column": 28 }, "end": { - "line": 499, + "line": 553, "column": 42 } } @@ -83359,15 +83359,15 @@ "binop": null, "updateContext": null }, - "start": 20067, - "end": 20068, + "start": 22055, + "end": 22056, "loc": { "start": { - "line": 499, + "line": 553, "column": 42 }, "end": { - "line": 499, + "line": 553, "column": 43 } } @@ -83385,15 +83385,15 @@ "binop": null }, "value": "meshIds", - "start": 20093, - "end": 20100, + "start": 22081, + "end": 22088, "loc": { "start": { - "line": 500, + "line": 554, "column": 24 }, "end": { - "line": 500, + "line": 554, "column": 31 } } @@ -83411,15 +83411,15 @@ "binop": null, "updateContext": null }, - "start": 20100, - "end": 20101, + "start": 22088, + "end": 22089, "loc": { "start": { - "line": 500, + "line": 554, "column": 31 }, "end": { - "line": 500, + "line": 554, "column": 32 } } @@ -83437,15 +83437,15 @@ "binop": null }, "value": "isObject", - "start": 20126, - "end": 20134, + "start": 22114, + "end": 22122, "loc": { "start": { - "line": 501, + "line": 555, "column": 24 }, "end": { - "line": 501, + "line": 555, "column": 32 } } @@ -83463,15 +83463,15 @@ "binop": null, "updateContext": null }, - "start": 20134, - "end": 20135, + "start": 22122, + "end": 22123, "loc": { "start": { - "line": 501, + "line": 555, "column": 32 }, "end": { - "line": 501, + "line": 555, "column": 33 } } @@ -83491,15 +83491,15 @@ "updateContext": null }, "value": "true", - "start": 20136, - "end": 20140, + "start": 22124, + "end": 22128, "loc": { "start": { - "line": 501, + "line": 555, "column": 34 }, "end": { - "line": 501, + "line": 555, "column": 38 } } @@ -83516,15 +83516,15 @@ "postfix": false, "binop": null }, - "start": 20161, - "end": 20162, + "start": 22149, + "end": 22150, "loc": { "start": { - "line": 502, + "line": 556, "column": 20 }, "end": { - "line": 502, + "line": 556, "column": 21 } } @@ -83541,15 +83541,15 @@ "postfix": false, "binop": null }, - "start": 20162, - "end": 20163, + "start": 22150, + "end": 22151, "loc": { "start": { - "line": 502, + "line": 556, "column": 21 }, "end": { - "line": 502, + "line": 556, "column": 22 } } @@ -83567,15 +83567,15 @@ "binop": null, "updateContext": null }, - "start": 20163, - "end": 20164, + "start": 22151, + "end": 22152, "loc": { "start": { - "line": 502, + "line": 556, "column": 22 }, "end": { - "line": 502, + "line": 556, "column": 23 } } @@ -83593,15 +83593,15 @@ "binop": null }, "value": "sceneModel", - "start": 20186, - "end": 20196, + "start": 22174, + "end": 22184, "loc": { "start": { - "line": 504, + "line": 558, "column": 20 }, "end": { - "line": 504, + "line": 558, "column": 30 } } @@ -83619,15 +83619,15 @@ "binop": null, "updateContext": null }, - "start": 20196, - "end": 20197, + "start": 22184, + "end": 22185, "loc": { "start": { - "line": 504, + "line": 558, "column": 30 }, "end": { - "line": 504, + "line": 558, "column": 31 } } @@ -83645,15 +83645,15 @@ "binop": null }, "value": "finalize", - "start": 20197, - "end": 20205, + "start": 22185, + "end": 22193, "loc": { "start": { - "line": 504, + "line": 558, "column": 31 }, "end": { - "line": 504, + "line": 558, "column": 39 } } @@ -83670,15 +83670,15 @@ "postfix": false, "binop": null }, - "start": 20205, - "end": 20206, + "start": 22193, + "end": 22194, "loc": { "start": { - "line": 504, + "line": 558, "column": 39 }, "end": { - "line": 504, + "line": 558, "column": 40 } } @@ -83695,15 +83695,15 @@ "postfix": false, "binop": null }, - "start": 20206, - "end": 20207, + "start": 22194, + "end": 22195, "loc": { "start": { - "line": 504, + "line": 558, "column": 40 }, "end": { - "line": 504, + "line": 558, "column": 41 } } @@ -83721,15 +83721,15 @@ "binop": null, "updateContext": null }, - "start": 20207, - "end": 20208, + "start": 22195, + "end": 22196, "loc": { "start": { - "line": 504, + "line": 558, "column": 41 }, "end": { - "line": 504, + "line": 558, "column": 42 } } @@ -83749,15 +83749,15 @@ "updateContext": null }, "value": "if", - "start": 20230, - "end": 20232, + "start": 22218, + "end": 22220, "loc": { "start": { - "line": 506, + "line": 560, "column": 20 }, "end": { - "line": 506, + "line": 560, "column": 22 } } @@ -83774,15 +83774,15 @@ "postfix": false, "binop": null }, - "start": 20233, - "end": 20234, + "start": 22221, + "end": 22222, "loc": { "start": { - "line": 506, + "line": 560, "column": 23 }, "end": { - "line": 506, + "line": 560, "column": 24 } } @@ -83800,15 +83800,15 @@ "binop": null }, "value": "params", - "start": 20234, - "end": 20240, + "start": 22222, + "end": 22228, "loc": { "start": { - "line": 506, + "line": 560, "column": 24 }, "end": { - "line": 506, + "line": 560, "column": 30 } } @@ -83826,15 +83826,15 @@ "binop": null, "updateContext": null }, - "start": 20240, - "end": 20241, + "start": 22228, + "end": 22229, "loc": { "start": { - "line": 506, + "line": 560, "column": 30 }, "end": { - "line": 506, + "line": 560, "column": 31 } } @@ -83852,15 +83852,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 20241, - "end": 20254, + "start": 22229, + "end": 22242, "loc": { "start": { - "line": 506, + "line": 560, "column": 31 }, "end": { - "line": 506, + "line": 560, "column": 44 } } @@ -83877,15 +83877,15 @@ "postfix": false, "binop": null }, - "start": 20254, - "end": 20255, + "start": 22242, + "end": 22243, "loc": { "start": { - "line": 506, + "line": 560, "column": 44 }, "end": { - "line": 506, + "line": 560, "column": 45 } } @@ -83902,15 +83902,15 @@ "postfix": false, "binop": null }, - "start": 20256, - "end": 20257, + "start": 22244, + "end": 22245, "loc": { "start": { - "line": 506, + "line": 560, "column": 46 }, "end": { - "line": 506, + "line": 560, "column": 47 } } @@ -83930,15 +83930,15 @@ "updateContext": null }, "value": "const", - "start": 20282, - "end": 20287, + "start": 22270, + "end": 22275, "loc": { "start": { - "line": 507, + "line": 561, "column": 24 }, "end": { - "line": 507, + "line": 561, "column": 29 } } @@ -83956,15 +83956,15 @@ "binop": null }, "value": "metaModelId", - "start": 20288, - "end": 20299, + "start": 22276, + "end": 22287, "loc": { "start": { - "line": 507, + "line": 561, "column": 30 }, "end": { - "line": 507, + "line": 561, "column": 41 } } @@ -83983,15 +83983,15 @@ "updateContext": null }, "value": "=", - "start": 20300, - "end": 20301, + "start": 22288, + "end": 22289, "loc": { "start": { - "line": 507, + "line": 561, "column": 42 }, "end": { - "line": 507, + "line": 561, "column": 43 } } @@ -84009,15 +84009,15 @@ "binop": null }, "value": "sceneModel", - "start": 20302, - "end": 20312, + "start": 22290, + "end": 22300, "loc": { "start": { - "line": 507, + "line": 561, "column": 44 }, "end": { - "line": 507, + "line": 561, "column": 54 } } @@ -84035,15 +84035,15 @@ "binop": null, "updateContext": null }, - "start": 20312, - "end": 20313, + "start": 22300, + "end": 22301, "loc": { "start": { - "line": 507, + "line": 561, "column": 54 }, "end": { - "line": 507, + "line": 561, "column": 55 } } @@ -84061,15 +84061,15 @@ "binop": null }, "value": "id", - "start": 20313, - "end": 20315, + "start": 22301, + "end": 22303, "loc": { "start": { - "line": 507, + "line": 561, "column": 55 }, "end": { - "line": 507, + "line": 561, "column": 57 } } @@ -84087,15 +84087,15 @@ "binop": null, "updateContext": null }, - "start": 20315, - "end": 20316, + "start": 22303, + "end": 22304, "loc": { "start": { - "line": 507, + "line": 561, "column": 57 }, "end": { - "line": 507, + "line": 561, "column": 58 } } @@ -84115,15 +84115,15 @@ "updateContext": null }, "value": "this", - "start": 20341, - "end": 20345, + "start": 22329, + "end": 22333, "loc": { "start": { - "line": 508, + "line": 562, "column": 24 }, "end": { - "line": 508, + "line": 562, "column": 28 } } @@ -84141,15 +84141,15 @@ "binop": null, "updateContext": null }, - "start": 20345, - "end": 20346, + "start": 22333, + "end": 22334, "loc": { "start": { - "line": 508, + "line": 562, "column": 28 }, "end": { - "line": 508, + "line": 562, "column": 29 } } @@ -84167,15 +84167,15 @@ "binop": null }, "value": "viewer", - "start": 20346, - "end": 20352, + "start": 22334, + "end": 22340, "loc": { "start": { - "line": 508, + "line": 562, "column": 29 }, "end": { - "line": 508, + "line": 562, "column": 35 } } @@ -84193,15 +84193,15 @@ "binop": null, "updateContext": null }, - "start": 20352, - "end": 20353, + "start": 22340, + "end": 22341, "loc": { "start": { - "line": 508, + "line": 562, "column": 35 }, "end": { - "line": 508, + "line": 562, "column": 36 } } @@ -84219,15 +84219,15 @@ "binop": null }, "value": "metaScene", - "start": 20353, - "end": 20362, + "start": 22341, + "end": 22350, "loc": { "start": { - "line": 508, + "line": 562, "column": 36 }, "end": { - "line": 508, + "line": 562, "column": 45 } } @@ -84245,15 +84245,15 @@ "binop": null, "updateContext": null }, - "start": 20362, - "end": 20363, + "start": 22350, + "end": 22351, "loc": { "start": { - "line": 508, + "line": 562, "column": 45 }, "end": { - "line": 508, + "line": 562, "column": 46 } } @@ -84271,15 +84271,15 @@ "binop": null }, "value": "createMetaModel", - "start": 20363, - "end": 20378, + "start": 22351, + "end": 22366, "loc": { "start": { - "line": 508, + "line": 562, "column": 46 }, "end": { - "line": 508, + "line": 562, "column": 61 } } @@ -84296,15 +84296,15 @@ "postfix": false, "binop": null }, - "start": 20378, - "end": 20379, + "start": 22366, + "end": 22367, "loc": { "start": { - "line": 508, + "line": 562, "column": 61 }, "end": { - "line": 508, + "line": 562, "column": 62 } } @@ -84322,15 +84322,15 @@ "binop": null }, "value": "metaModelId", - "start": 20379, - "end": 20390, + "start": 22367, + "end": 22378, "loc": { "start": { - "line": 508, + "line": 562, "column": 62 }, "end": { - "line": 508, + "line": 562, "column": 73 } } @@ -84348,15 +84348,15 @@ "binop": null, "updateContext": null }, - "start": 20390, - "end": 20391, + "start": 22378, + "end": 22379, "loc": { "start": { - "line": 508, + "line": 562, "column": 73 }, "end": { - "line": 508, + "line": 562, "column": 74 } } @@ -84374,15 +84374,15 @@ "binop": null }, "value": "params", - "start": 20392, - "end": 20398, + "start": 22380, + "end": 22386, "loc": { "start": { - "line": 508, + "line": 562, "column": 75 }, "end": { - "line": 508, + "line": 562, "column": 81 } } @@ -84400,15 +84400,15 @@ "binop": null, "updateContext": null }, - "start": 20398, - "end": 20399, + "start": 22386, + "end": 22387, "loc": { "start": { - "line": 508, + "line": 562, "column": 81 }, "end": { - "line": 508, + "line": 562, "column": 82 } } @@ -84426,15 +84426,15 @@ "binop": null }, "value": "metaModelJSON", - "start": 20399, - "end": 20412, + "start": 22387, + "end": 22400, "loc": { "start": { - "line": 508, + "line": 562, "column": 82 }, "end": { - "line": 508, + "line": 562, "column": 95 } } @@ -84452,15 +84452,15 @@ "binop": null, "updateContext": null }, - "start": 20412, - "end": 20413, + "start": 22400, + "end": 22401, "loc": { "start": { - "line": 508, + "line": 562, "column": 95 }, "end": { - "line": 508, + "line": 562, "column": 96 } } @@ -84478,15 +84478,15 @@ "binop": null }, "value": "options", - "start": 20414, - "end": 20421, + "start": 22402, + "end": 22409, "loc": { "start": { - "line": 508, + "line": 562, "column": 97 }, "end": { - "line": 508, + "line": 562, "column": 104 } } @@ -84503,15 +84503,15 @@ "postfix": false, "binop": null }, - "start": 20421, - "end": 20422, + "start": 22409, + "end": 22410, "loc": { "start": { - "line": 508, + "line": 562, "column": 104 }, "end": { - "line": 508, + "line": 562, "column": 105 } } @@ -84529,15 +84529,15 @@ "binop": null, "updateContext": null }, - "start": 20422, - "end": 20423, + "start": 22410, + "end": 22411, "loc": { "start": { - "line": 508, + "line": 562, "column": 105 }, "end": { - "line": 508, + "line": 562, "column": 106 } } @@ -84554,15 +84554,15 @@ "postfix": false, "binop": null }, - "start": 20444, - "end": 20445, + "start": 22432, + "end": 22433, "loc": { "start": { - "line": 509, + "line": 563, "column": 20 }, "end": { - "line": 509, + "line": 563, "column": 21 } } @@ -84582,15 +84582,15 @@ "updateContext": null }, "value": "else", - "start": 20446, - "end": 20450, + "start": 22434, + "end": 22438, "loc": { "start": { - "line": 509, + "line": 563, "column": 22 }, "end": { - "line": 509, + "line": 563, "column": 26 } } @@ -84610,15 +84610,15 @@ "updateContext": null }, "value": "if", - "start": 20451, - "end": 20453, + "start": 22439, + "end": 22441, "loc": { "start": { - "line": 509, + "line": 563, "column": 27 }, "end": { - "line": 509, + "line": 563, "column": 29 } } @@ -84635,15 +84635,15 @@ "postfix": false, "binop": null }, - "start": 20454, - "end": 20455, + "start": 22442, + "end": 22443, "loc": { "start": { - "line": 509, + "line": 563, "column": 30 }, "end": { - "line": 509, + "line": 563, "column": 31 } } @@ -84661,15 +84661,15 @@ "binop": null }, "value": "params", - "start": 20455, - "end": 20461, + "start": 22443, + "end": 22449, "loc": { "start": { - "line": 509, + "line": 563, "column": 31 }, "end": { - "line": 509, + "line": 563, "column": 37 } } @@ -84687,15 +84687,15 @@ "binop": null, "updateContext": null }, - "start": 20461, - "end": 20462, + "start": 22449, + "end": 22450, "loc": { "start": { - "line": 509, + "line": 563, "column": 37 }, "end": { - "line": 509, + "line": 563, "column": 38 } } @@ -84713,15 +84713,15 @@ "binop": null }, "value": "loadMetadata", - "start": 20462, - "end": 20474, + "start": 22450, + "end": 22462, "loc": { "start": { - "line": 509, + "line": 563, "column": 38 }, "end": { - "line": 509, + "line": 563, "column": 50 } } @@ -84740,15 +84740,15 @@ "updateContext": null }, "value": "!==", - "start": 20475, - "end": 20478, + "start": 22463, + "end": 22466, "loc": { "start": { - "line": 509, + "line": 563, "column": 51 }, "end": { - "line": 509, + "line": 563, "column": 54 } } @@ -84768,15 +84768,15 @@ "updateContext": null }, "value": "false", - "start": 20479, - "end": 20484, + "start": 22467, + "end": 22472, "loc": { "start": { - "line": 509, + "line": 563, "column": 55 }, "end": { - "line": 509, + "line": 563, "column": 60 } } @@ -84793,15 +84793,15 @@ "postfix": false, "binop": null }, - "start": 20484, - "end": 20485, + "start": 22472, + "end": 22473, "loc": { "start": { - "line": 509, + "line": 563, "column": 60 }, "end": { - "line": 509, + "line": 563, "column": 61 } } @@ -84818,15 +84818,15 @@ "postfix": false, "binop": null }, - "start": 20486, - "end": 20487, + "start": 22474, + "end": 22475, "loc": { "start": { - "line": 509, + "line": 563, "column": 62 }, "end": { - "line": 509, + "line": 563, "column": 63 } } @@ -84846,15 +84846,15 @@ "updateContext": null }, "value": "const", - "start": 20512, - "end": 20517, + "start": 22500, + "end": 22505, "loc": { "start": { - "line": 510, + "line": 564, "column": 24 }, "end": { - "line": 510, + "line": 564, "column": 29 } } @@ -84872,15 +84872,15 @@ "binop": null }, "value": "rootMetaObjectId", - "start": 20518, - "end": 20534, + "start": 22506, + "end": 22522, "loc": { "start": { - "line": 510, + "line": 564, "column": 30 }, "end": { - "line": 510, + "line": 564, "column": 46 } } @@ -84899,15 +84899,15 @@ "updateContext": null }, "value": "=", - "start": 20535, - "end": 20536, + "start": 22523, + "end": 22524, "loc": { "start": { - "line": 510, + "line": 564, "column": 47 }, "end": { - "line": 510, + "line": 564, "column": 48 } } @@ -84925,15 +84925,15 @@ "binop": null }, "value": "math", - "start": 20537, - "end": 20541, + "start": 22525, + "end": 22529, "loc": { "start": { - "line": 510, + "line": 564, "column": 49 }, "end": { - "line": 510, + "line": 564, "column": 53 } } @@ -84951,15 +84951,15 @@ "binop": null, "updateContext": null }, - "start": 20541, - "end": 20542, + "start": 22529, + "end": 22530, "loc": { "start": { - "line": 510, + "line": 564, "column": 53 }, "end": { - "line": 510, + "line": 564, "column": 54 } } @@ -84977,15 +84977,15 @@ "binop": null }, "value": "createUUID", - "start": 20542, - "end": 20552, + "start": 22530, + "end": 22540, "loc": { "start": { - "line": 510, + "line": 564, "column": 54 }, "end": { - "line": 510, + "line": 564, "column": 64 } } @@ -85002,15 +85002,15 @@ "postfix": false, "binop": null }, - "start": 20552, - "end": 20553, + "start": 22540, + "end": 22541, "loc": { "start": { - "line": 510, + "line": 564, "column": 64 }, "end": { - "line": 510, + "line": 564, "column": 65 } } @@ -85027,15 +85027,15 @@ "postfix": false, "binop": null }, - "start": 20553, - "end": 20554, + "start": 22541, + "end": 22542, "loc": { "start": { - "line": 510, + "line": 564, "column": 65 }, "end": { - "line": 510, + "line": 564, "column": 66 } } @@ -85053,15 +85053,15 @@ "binop": null, "updateContext": null }, - "start": 20554, - "end": 20555, + "start": 22542, + "end": 22543, "loc": { "start": { - "line": 510, + "line": 564, "column": 66 }, "end": { - "line": 510, + "line": 564, "column": 67 } } @@ -85081,15 +85081,15 @@ "updateContext": null }, "value": "const", - "start": 20580, - "end": 20585, + "start": 22568, + "end": 22573, "loc": { "start": { - "line": 511, + "line": 565, "column": 24 }, "end": { - "line": 511, + "line": 565, "column": 29 } } @@ -85107,15 +85107,15 @@ "binop": null }, "value": "metadata", - "start": 20586, - "end": 20594, + "start": 22574, + "end": 22582, "loc": { "start": { - "line": 511, + "line": 565, "column": 30 }, "end": { - "line": 511, + "line": 565, "column": 38 } } @@ -85134,15 +85134,15 @@ "updateContext": null }, "value": "=", - "start": 20595, - "end": 20596, + "start": 22583, + "end": 22584, "loc": { "start": { - "line": 511, + "line": 565, "column": 39 }, "end": { - "line": 511, + "line": 565, "column": 40 } } @@ -85159,15 +85159,15 @@ "postfix": false, "binop": null }, - "start": 20597, - "end": 20598, + "start": 22585, + "end": 22586, "loc": { "start": { - "line": 511, + "line": 565, "column": 41 }, "end": { - "line": 511, + "line": 565, "column": 42 } } @@ -85185,15 +85185,15 @@ "binop": null }, "value": "projectId", - "start": 20627, - "end": 20636, + "start": 22615, + "end": 22624, "loc": { "start": { - "line": 512, + "line": 566, "column": 28 }, "end": { - "line": 512, + "line": 566, "column": 37 } } @@ -85211,15 +85211,15 @@ "binop": null, "updateContext": null }, - "start": 20636, - "end": 20637, + "start": 22624, + "end": 22625, "loc": { "start": { - "line": 512, + "line": 566, "column": 37 }, "end": { - "line": 512, + "line": 566, "column": 38 } } @@ -85238,15 +85238,15 @@ "updateContext": null }, "value": "", - "start": 20638, - "end": 20640, + "start": 22626, + "end": 22628, "loc": { "start": { - "line": 512, + "line": 566, "column": 39 }, "end": { - "line": 512, + "line": 566, "column": 41 } } @@ -85264,15 +85264,15 @@ "binop": null, "updateContext": null }, - "start": 20640, - "end": 20641, + "start": 22628, + "end": 22629, "loc": { "start": { - "line": 512, + "line": 566, "column": 41 }, "end": { - "line": 512, + "line": 566, "column": 42 } } @@ -85290,15 +85290,15 @@ "binop": null }, "value": "author", - "start": 20670, - "end": 20676, + "start": 22658, + "end": 22664, "loc": { "start": { - "line": 513, + "line": 567, "column": 28 }, "end": { - "line": 513, + "line": 567, "column": 34 } } @@ -85316,15 +85316,15 @@ "binop": null, "updateContext": null }, - "start": 20676, - "end": 20677, + "start": 22664, + "end": 22665, "loc": { "start": { - "line": 513, + "line": 567, "column": 34 }, "end": { - "line": 513, + "line": 567, "column": 35 } } @@ -85343,15 +85343,15 @@ "updateContext": null }, "value": "", - "start": 20678, - "end": 20680, + "start": 22666, + "end": 22668, "loc": { "start": { - "line": 513, + "line": 567, "column": 36 }, "end": { - "line": 513, + "line": 567, "column": 38 } } @@ -85369,15 +85369,15 @@ "binop": null, "updateContext": null }, - "start": 20680, - "end": 20681, + "start": 22668, + "end": 22669, "loc": { "start": { - "line": 513, + "line": 567, "column": 38 }, "end": { - "line": 513, + "line": 567, "column": 39 } } @@ -85395,15 +85395,15 @@ "binop": null }, "value": "createdAt", - "start": 20710, - "end": 20719, + "start": 22698, + "end": 22707, "loc": { "start": { - "line": 514, + "line": 568, "column": 28 }, "end": { - "line": 514, + "line": 568, "column": 37 } } @@ -85421,15 +85421,15 @@ "binop": null, "updateContext": null }, - "start": 20719, - "end": 20720, + "start": 22707, + "end": 22708, "loc": { "start": { - "line": 514, + "line": 568, "column": 37 }, "end": { - "line": 514, + "line": 568, "column": 38 } } @@ -85448,15 +85448,15 @@ "updateContext": null }, "value": "", - "start": 20721, - "end": 20723, + "start": 22709, + "end": 22711, "loc": { "start": { - "line": 514, + "line": 568, "column": 39 }, "end": { - "line": 514, + "line": 568, "column": 41 } } @@ -85474,15 +85474,15 @@ "binop": null, "updateContext": null }, - "start": 20723, - "end": 20724, + "start": 22711, + "end": 22712, "loc": { "start": { - "line": 514, + "line": 568, "column": 41 }, "end": { - "line": 514, + "line": 568, "column": 42 } } @@ -85500,15 +85500,15 @@ "binop": null }, "value": "schema", - "start": 20753, - "end": 20759, + "start": 22741, + "end": 22747, "loc": { "start": { - "line": 515, + "line": 569, "column": 28 }, "end": { - "line": 515, + "line": 569, "column": 34 } } @@ -85526,15 +85526,15 @@ "binop": null, "updateContext": null }, - "start": 20759, - "end": 20760, + "start": 22747, + "end": 22748, "loc": { "start": { - "line": 515, + "line": 569, "column": 34 }, "end": { - "line": 515, + "line": 569, "column": 35 } } @@ -85553,15 +85553,15 @@ "updateContext": null }, "value": "", - "start": 20761, - "end": 20763, + "start": 22749, + "end": 22751, "loc": { "start": { - "line": 515, + "line": 569, "column": 36 }, "end": { - "line": 515, + "line": 569, "column": 38 } } @@ -85579,15 +85579,15 @@ "binop": null, "updateContext": null }, - "start": 20763, - "end": 20764, + "start": 22751, + "end": 22752, "loc": { "start": { - "line": 515, + "line": 569, "column": 38 }, "end": { - "line": 515, + "line": 569, "column": 39 } } @@ -85605,15 +85605,15 @@ "binop": null }, "value": "creatingApplication", - "start": 20793, - "end": 20812, + "start": 22781, + "end": 22800, "loc": { "start": { - "line": 516, + "line": 570, "column": 28 }, "end": { - "line": 516, + "line": 570, "column": 47 } } @@ -85631,15 +85631,15 @@ "binop": null, "updateContext": null }, - "start": 20812, - "end": 20813, + "start": 22800, + "end": 22801, "loc": { "start": { - "line": 516, + "line": 570, "column": 47 }, "end": { - "line": 516, + "line": 570, "column": 48 } } @@ -85658,15 +85658,15 @@ "updateContext": null }, "value": "", - "start": 20814, - "end": 20816, + "start": 22802, + "end": 22804, "loc": { "start": { - "line": 516, + "line": 570, "column": 49 }, "end": { - "line": 516, + "line": 570, "column": 51 } } @@ -85684,15 +85684,15 @@ "binop": null, "updateContext": null }, - "start": 20816, - "end": 20817, + "start": 22804, + "end": 22805, "loc": { "start": { - "line": 516, + "line": 570, "column": 51 }, "end": { - "line": 516, + "line": 570, "column": 52 } } @@ -85710,15 +85710,15 @@ "binop": null }, "value": "metaObjects", - "start": 20846, - "end": 20857, + "start": 22834, + "end": 22845, "loc": { "start": { - "line": 517, + "line": 571, "column": 28 }, "end": { - "line": 517, + "line": 571, "column": 39 } } @@ -85736,15 +85736,15 @@ "binop": null, "updateContext": null }, - "start": 20857, - "end": 20858, + "start": 22845, + "end": 22846, "loc": { "start": { - "line": 517, + "line": 571, "column": 39 }, "end": { - "line": 517, + "line": 571, "column": 40 } } @@ -85762,15 +85762,15 @@ "binop": null, "updateContext": null }, - "start": 20859, - "end": 20860, + "start": 22847, + "end": 22848, "loc": { "start": { - "line": 517, + "line": 571, "column": 41 }, "end": { - "line": 517, + "line": 571, "column": 42 } } @@ -85787,15 +85787,15 @@ "postfix": false, "binop": null }, - "start": 20893, - "end": 20894, + "start": 22881, + "end": 22882, "loc": { "start": { - "line": 518, + "line": 572, "column": 32 }, "end": { - "line": 518, + "line": 572, "column": 33 } } @@ -85813,15 +85813,15 @@ "binop": null }, "value": "id", - "start": 20931, - "end": 20933, + "start": 22919, + "end": 22921, "loc": { "start": { - "line": 519, + "line": 573, "column": 36 }, "end": { - "line": 519, + "line": 573, "column": 38 } } @@ -85839,15 +85839,15 @@ "binop": null, "updateContext": null }, - "start": 20933, - "end": 20934, + "start": 22921, + "end": 22922, "loc": { "start": { - "line": 519, + "line": 573, "column": 38 }, "end": { - "line": 519, + "line": 573, "column": 39 } } @@ -85865,15 +85865,15 @@ "binop": null }, "value": "rootMetaObjectId", - "start": 20935, - "end": 20951, + "start": 22923, + "end": 22939, "loc": { "start": { - "line": 519, + "line": 573, "column": 40 }, "end": { - "line": 519, + "line": 573, "column": 56 } } @@ -85891,15 +85891,15 @@ "binop": null, "updateContext": null }, - "start": 20951, - "end": 20952, + "start": 22939, + "end": 22940, "loc": { "start": { - "line": 519, + "line": 573, "column": 56 }, "end": { - "line": 519, + "line": 573, "column": 57 } } @@ -85917,15 +85917,15 @@ "binop": null }, "value": "name", - "start": 20989, - "end": 20993, + "start": 22977, + "end": 22981, "loc": { "start": { - "line": 520, + "line": 574, "column": 36 }, "end": { - "line": 520, + "line": 574, "column": 40 } } @@ -85943,15 +85943,15 @@ "binop": null, "updateContext": null }, - "start": 20993, - "end": 20994, + "start": 22981, + "end": 22982, "loc": { "start": { - "line": 520, + "line": 574, "column": 40 }, "end": { - "line": 520, + "line": 574, "column": 41 } } @@ -85970,15 +85970,15 @@ "updateContext": null }, "value": "Model", - "start": 20995, - "end": 21002, + "start": 22983, + "end": 22990, "loc": { "start": { - "line": 520, + "line": 574, "column": 42 }, "end": { - "line": 520, + "line": 574, "column": 49 } } @@ -85996,15 +85996,15 @@ "binop": null, "updateContext": null }, - "start": 21002, - "end": 21003, + "start": 22990, + "end": 22991, "loc": { "start": { - "line": 520, + "line": 574, "column": 49 }, "end": { - "line": 520, + "line": 574, "column": 50 } } @@ -86022,15 +86022,15 @@ "binop": null }, "value": "type", - "start": 21040, - "end": 21044, + "start": 23028, + "end": 23032, "loc": { "start": { - "line": 521, + "line": 575, "column": 36 }, "end": { - "line": 521, + "line": 575, "column": 40 } } @@ -86048,15 +86048,15 @@ "binop": null, "updateContext": null }, - "start": 21044, - "end": 21045, + "start": 23032, + "end": 23033, "loc": { "start": { - "line": 521, + "line": 575, "column": 40 }, "end": { - "line": 521, + "line": 575, "column": 41 } } @@ -86075,15 +86075,15 @@ "updateContext": null }, "value": "Model", - "start": 21046, - "end": 21053, + "start": 23034, + "end": 23041, "loc": { "start": { - "line": 521, + "line": 575, "column": 42 }, "end": { - "line": 521, + "line": 575, "column": 49 } } @@ -86100,15 +86100,15 @@ "postfix": false, "binop": null }, - "start": 21086, - "end": 21087, + "start": 23074, + "end": 23075, "loc": { "start": { - "line": 522, + "line": 576, "column": 32 }, "end": { - "line": 522, + "line": 576, "column": 33 } } @@ -86126,15 +86126,15 @@ "binop": null, "updateContext": null }, - "start": 21087, - "end": 21088, + "start": 23075, + "end": 23076, "loc": { "start": { - "line": 522, + "line": 576, "column": 33 }, "end": { - "line": 522, + "line": 576, "column": 34 } } @@ -86151,15 +86151,15 @@ "postfix": false, "binop": null }, - "start": 21121, - "end": 21122, + "start": 23109, + "end": 23110, "loc": { "start": { - "line": 523, + "line": 577, "column": 32 }, "end": { - "line": 523, + "line": 577, "column": 33 } } @@ -86177,15 +86177,15 @@ "binop": null }, "value": "id", - "start": 21159, - "end": 21161, + "start": 23147, + "end": 23149, "loc": { "start": { - "line": 524, + "line": 578, "column": 36 }, "end": { - "line": 524, + "line": 578, "column": 38 } } @@ -86203,15 +86203,15 @@ "binop": null, "updateContext": null }, - "start": 21161, - "end": 21162, + "start": 23149, + "end": 23150, "loc": { "start": { - "line": 524, + "line": 578, "column": 38 }, "end": { - "line": 524, + "line": 578, "column": 39 } } @@ -86229,15 +86229,15 @@ "binop": null }, "value": "pointsObjectId", - "start": 21163, - "end": 21177, + "start": 23151, + "end": 23165, "loc": { "start": { - "line": 524, + "line": 578, "column": 40 }, "end": { - "line": 524, + "line": 578, "column": 54 } } @@ -86255,15 +86255,15 @@ "binop": null, "updateContext": null }, - "start": 21177, - "end": 21178, + "start": 23165, + "end": 23166, "loc": { "start": { - "line": 524, + "line": 578, "column": 54 }, "end": { - "line": 524, + "line": 578, "column": 55 } } @@ -86281,15 +86281,15 @@ "binop": null }, "value": "name", - "start": 21215, - "end": 21219, + "start": 23203, + "end": 23207, "loc": { "start": { - "line": 525, + "line": 579, "column": 36 }, "end": { - "line": 525, + "line": 579, "column": 40 } } @@ -86307,15 +86307,15 @@ "binop": null, "updateContext": null }, - "start": 21219, - "end": 21220, + "start": 23207, + "end": 23208, "loc": { "start": { - "line": 525, + "line": 579, "column": 40 }, "end": { - "line": 525, + "line": 579, "column": 41 } } @@ -86334,15 +86334,15 @@ "updateContext": null }, "value": "PointCloud (LAS)", - "start": 21221, - "end": 21239, + "start": 23209, + "end": 23227, "loc": { "start": { - "line": 525, + "line": 579, "column": 42 }, "end": { - "line": 525, + "line": 579, "column": 60 } } @@ -86360,15 +86360,15 @@ "binop": null, "updateContext": null }, - "start": 21239, - "end": 21240, + "start": 23227, + "end": 23228, "loc": { "start": { - "line": 525, + "line": 579, "column": 60 }, "end": { - "line": 525, + "line": 579, "column": 61 } } @@ -86386,15 +86386,15 @@ "binop": null }, "value": "type", - "start": 21277, - "end": 21281, + "start": 23265, + "end": 23269, "loc": { "start": { - "line": 526, + "line": 580, "column": 36 }, "end": { - "line": 526, + "line": 580, "column": 40 } } @@ -86412,15 +86412,15 @@ "binop": null, "updateContext": null }, - "start": 21281, - "end": 21282, + "start": 23269, + "end": 23270, "loc": { "start": { - "line": 526, + "line": 580, "column": 40 }, "end": { - "line": 526, + "line": 580, "column": 41 } } @@ -86439,15 +86439,15 @@ "updateContext": null }, "value": "PointCloud", - "start": 21283, - "end": 21295, + "start": 23271, + "end": 23283, "loc": { "start": { - "line": 526, + "line": 580, "column": 42 }, "end": { - "line": 526, + "line": 580, "column": 54 } } @@ -86465,15 +86465,15 @@ "binop": null, "updateContext": null }, - "start": 21295, - "end": 21296, + "start": 23283, + "end": 23284, "loc": { "start": { - "line": 526, + "line": 580, "column": 54 }, "end": { - "line": 526, + "line": 580, "column": 55 } } @@ -86491,15 +86491,15 @@ "binop": null }, "value": "parent", - "start": 21333, - "end": 21339, + "start": 23321, + "end": 23327, "loc": { "start": { - "line": 527, + "line": 581, "column": 36 }, "end": { - "line": 527, + "line": 581, "column": 42 } } @@ -86517,15 +86517,15 @@ "binop": null, "updateContext": null }, - "start": 21339, - "end": 21340, + "start": 23327, + "end": 23328, "loc": { "start": { - "line": 527, + "line": 581, "column": 42 }, "end": { - "line": 527, + "line": 581, "column": 43 } } @@ -86543,15 +86543,15 @@ "binop": null }, "value": "rootMetaObjectId", - "start": 21341, - "end": 21357, + "start": 23329, + "end": 23345, "loc": { "start": { - "line": 527, + "line": 581, "column": 44 }, "end": { - "line": 527, + "line": 581, "column": 60 } } @@ -86569,15 +86569,15 @@ "binop": null, "updateContext": null }, - "start": 21357, - "end": 21358, + "start": 23345, + "end": 23346, "loc": { "start": { - "line": 527, + "line": 581, "column": 60 }, "end": { - "line": 527, + "line": 581, "column": 61 } } @@ -86595,15 +86595,15 @@ "binop": null }, "value": "attributes", - "start": 21395, - "end": 21405, + "start": 23383, + "end": 23393, "loc": { "start": { - "line": 528, + "line": 582, "column": 36 }, "end": { - "line": 528, + "line": 582, "column": 46 } } @@ -86621,15 +86621,15 @@ "binop": null, "updateContext": null }, - "start": 21405, - "end": 21406, + "start": 23393, + "end": 23394, "loc": { "start": { - "line": 528, + "line": 582, "column": 46 }, "end": { - "line": 528, + "line": 582, "column": 47 } } @@ -86647,15 +86647,15 @@ "binop": null }, "value": "lasHeader", - "start": 21407, - "end": 21416, + "start": 23395, + "end": 23404, "loc": { "start": { - "line": 528, + "line": 582, "column": 48 }, "end": { - "line": 528, + "line": 582, "column": 57 } } @@ -86674,15 +86674,15 @@ "updateContext": null }, "value": "||", - "start": 21417, - "end": 21419, + "start": 23405, + "end": 23407, "loc": { "start": { - "line": 528, + "line": 582, "column": 58 }, "end": { - "line": 528, + "line": 582, "column": 60 } } @@ -86699,15 +86699,15 @@ "postfix": false, "binop": null }, - "start": 21420, - "end": 21421, + "start": 23408, + "end": 23409, "loc": { "start": { - "line": 528, + "line": 582, "column": 61 }, "end": { - "line": 528, + "line": 582, "column": 62 } } @@ -86724,15 +86724,15 @@ "postfix": false, "binop": null }, - "start": 21421, - "end": 21422, + "start": 23409, + "end": 23410, "loc": { "start": { - "line": 528, + "line": 582, "column": 62 }, "end": { - "line": 528, + "line": 582, "column": 63 } } @@ -86749,15 +86749,15 @@ "postfix": false, "binop": null }, - "start": 21455, - "end": 21456, + "start": 23443, + "end": 23444, "loc": { "start": { - "line": 529, + "line": 583, "column": 32 }, "end": { - "line": 529, + "line": 583, "column": 33 } } @@ -86775,15 +86775,15 @@ "binop": null, "updateContext": null }, - "start": 21485, - "end": 21486, + "start": 23473, + "end": 23474, "loc": { "start": { - "line": 530, + "line": 584, "column": 28 }, "end": { - "line": 530, + "line": 584, "column": 29 } } @@ -86801,15 +86801,15 @@ "binop": null, "updateContext": null }, - "start": 21486, - "end": 21487, + "start": 23474, + "end": 23475, "loc": { "start": { - "line": 530, + "line": 584, "column": 29 }, "end": { - "line": 530, + "line": 584, "column": 30 } } @@ -86827,15 +86827,15 @@ "binop": null }, "value": "propertySets", - "start": 21516, - "end": 21528, + "start": 23504, + "end": 23516, "loc": { "start": { - "line": 531, + "line": 585, "column": 28 }, "end": { - "line": 531, + "line": 585, "column": 40 } } @@ -86853,15 +86853,15 @@ "binop": null, "updateContext": null }, - "start": 21528, - "end": 21529, + "start": 23516, + "end": 23517, "loc": { "start": { - "line": 531, + "line": 585, "column": 40 }, "end": { - "line": 531, + "line": 585, "column": 41 } } @@ -86879,15 +86879,15 @@ "binop": null, "updateContext": null }, - "start": 21530, - "end": 21531, + "start": 23518, + "end": 23519, "loc": { "start": { - "line": 531, + "line": 585, "column": 42 }, "end": { - "line": 531, + "line": 585, "column": 43 } } @@ -86905,15 +86905,15 @@ "binop": null, "updateContext": null }, - "start": 21531, - "end": 21532, + "start": 23519, + "end": 23520, "loc": { "start": { - "line": 531, + "line": 585, "column": 43 }, "end": { - "line": 531, + "line": 585, "column": 44 } } @@ -86930,15 +86930,15 @@ "postfix": false, "binop": null }, - "start": 21557, - "end": 21558, + "start": 23545, + "end": 23546, "loc": { "start": { - "line": 532, + "line": 586, "column": 24 }, "end": { - "line": 532, + "line": 586, "column": 25 } } @@ -86956,15 +86956,15 @@ "binop": null, "updateContext": null }, - "start": 21558, - "end": 21559, + "start": 23546, + "end": 23547, "loc": { "start": { - "line": 532, + "line": 586, "column": 25 }, "end": { - "line": 532, + "line": 586, "column": 26 } } @@ -86984,15 +86984,15 @@ "updateContext": null }, "value": "const", - "start": 21584, - "end": 21589, + "start": 23572, + "end": 23577, "loc": { "start": { - "line": 533, + "line": 587, "column": 24 }, "end": { - "line": 533, + "line": 587, "column": 29 } } @@ -87010,15 +87010,15 @@ "binop": null }, "value": "metaModelId", - "start": 21590, - "end": 21601, + "start": 23578, + "end": 23589, "loc": { "start": { - "line": 533, + "line": 587, "column": 30 }, "end": { - "line": 533, + "line": 587, "column": 41 } } @@ -87037,15 +87037,15 @@ "updateContext": null }, "value": "=", - "start": 21602, - "end": 21603, + "start": 23590, + "end": 23591, "loc": { "start": { - "line": 533, + "line": 587, "column": 42 }, "end": { - "line": 533, + "line": 587, "column": 43 } } @@ -87063,15 +87063,15 @@ "binop": null }, "value": "sceneModel", - "start": 21604, - "end": 21614, + "start": 23592, + "end": 23602, "loc": { "start": { - "line": 533, + "line": 587, "column": 44 }, "end": { - "line": 533, + "line": 587, "column": 54 } } @@ -87089,15 +87089,15 @@ "binop": null, "updateContext": null }, - "start": 21614, - "end": 21615, + "start": 23602, + "end": 23603, "loc": { "start": { - "line": 533, + "line": 587, "column": 54 }, "end": { - "line": 533, + "line": 587, "column": 55 } } @@ -87115,15 +87115,15 @@ "binop": null }, "value": "id", - "start": 21615, - "end": 21617, + "start": 23603, + "end": 23605, "loc": { "start": { - "line": 533, + "line": 587, "column": 55 }, "end": { - "line": 533, + "line": 587, "column": 57 } } @@ -87141,15 +87141,15 @@ "binop": null, "updateContext": null }, - "start": 21617, - "end": 21618, + "start": 23605, + "end": 23606, "loc": { "start": { - "line": 533, + "line": 587, "column": 57 }, "end": { - "line": 533, + "line": 587, "column": 58 } } @@ -87169,15 +87169,15 @@ "updateContext": null }, "value": "this", - "start": 21643, - "end": 21647, + "start": 23631, + "end": 23635, "loc": { "start": { - "line": 534, + "line": 588, "column": 24 }, "end": { - "line": 534, + "line": 588, "column": 28 } } @@ -87195,15 +87195,15 @@ "binop": null, "updateContext": null }, - "start": 21647, - "end": 21648, + "start": 23635, + "end": 23636, "loc": { "start": { - "line": 534, + "line": 588, "column": 28 }, "end": { - "line": 534, + "line": 588, "column": 29 } } @@ -87221,15 +87221,15 @@ "binop": null }, "value": "viewer", - "start": 21648, - "end": 21654, + "start": 23636, + "end": 23642, "loc": { "start": { - "line": 534, + "line": 588, "column": 29 }, "end": { - "line": 534, + "line": 588, "column": 35 } } @@ -87247,15 +87247,15 @@ "binop": null, "updateContext": null }, - "start": 21654, - "end": 21655, + "start": 23642, + "end": 23643, "loc": { "start": { - "line": 534, + "line": 588, "column": 35 }, "end": { - "line": 534, + "line": 588, "column": 36 } } @@ -87273,15 +87273,15 @@ "binop": null }, "value": "metaScene", - "start": 21655, - "end": 21664, + "start": 23643, + "end": 23652, "loc": { "start": { - "line": 534, + "line": 588, "column": 36 }, "end": { - "line": 534, + "line": 588, "column": 45 } } @@ -87299,15 +87299,15 @@ "binop": null, "updateContext": null }, - "start": 21664, - "end": 21665, + "start": 23652, + "end": 23653, "loc": { "start": { - "line": 534, + "line": 588, "column": 45 }, "end": { - "line": 534, + "line": 588, "column": 46 } } @@ -87325,15 +87325,15 @@ "binop": null }, "value": "createMetaModel", - "start": 21665, - "end": 21680, + "start": 23653, + "end": 23668, "loc": { "start": { - "line": 534, + "line": 588, "column": 46 }, "end": { - "line": 534, + "line": 588, "column": 61 } } @@ -87350,15 +87350,15 @@ "postfix": false, "binop": null }, - "start": 21680, - "end": 21681, + "start": 23668, + "end": 23669, "loc": { "start": { - "line": 534, + "line": 588, "column": 61 }, "end": { - "line": 534, + "line": 588, "column": 62 } } @@ -87376,15 +87376,15 @@ "binop": null }, "value": "metaModelId", - "start": 21681, - "end": 21692, + "start": 23669, + "end": 23680, "loc": { "start": { - "line": 534, + "line": 588, "column": 62 }, "end": { - "line": 534, + "line": 588, "column": 73 } } @@ -87402,15 +87402,15 @@ "binop": null, "updateContext": null }, - "start": 21692, - "end": 21693, + "start": 23680, + "end": 23681, "loc": { "start": { - "line": 534, + "line": 588, "column": 73 }, "end": { - "line": 534, + "line": 588, "column": 74 } } @@ -87428,15 +87428,15 @@ "binop": null }, "value": "metadata", - "start": 21694, - "end": 21702, + "start": 23682, + "end": 23690, "loc": { "start": { - "line": 534, + "line": 588, "column": 75 }, "end": { - "line": 534, + "line": 588, "column": 83 } } @@ -87454,15 +87454,15 @@ "binop": null, "updateContext": null }, - "start": 21702, - "end": 21703, + "start": 23690, + "end": 23691, "loc": { "start": { - "line": 534, + "line": 588, "column": 83 }, "end": { - "line": 534, + "line": 588, "column": 84 } } @@ -87480,15 +87480,15 @@ "binop": null }, "value": "options", - "start": 21704, - "end": 21711, + "start": 23692, + "end": 23699, "loc": { "start": { - "line": 534, + "line": 588, "column": 85 }, "end": { - "line": 534, + "line": 588, "column": 92 } } @@ -87505,15 +87505,15 @@ "postfix": false, "binop": null }, - "start": 21711, - "end": 21712, + "start": 23699, + "end": 23700, "loc": { "start": { - "line": 534, + "line": 588, "column": 92 }, "end": { - "line": 534, + "line": 588, "column": 93 } } @@ -87531,15 +87531,15 @@ "binop": null, "updateContext": null }, - "start": 21712, - "end": 21713, + "start": 23700, + "end": 23701, "loc": { "start": { - "line": 534, + "line": 588, "column": 93 }, "end": { - "line": 534, + "line": 588, "column": 94 } } @@ -87556,15 +87556,15 @@ "postfix": false, "binop": null }, - "start": 21734, - "end": 21735, + "start": 23722, + "end": 23723, "loc": { "start": { - "line": 535, + "line": 589, "column": 20 }, "end": { - "line": 535, + "line": 589, "column": 21 } } @@ -87582,15 +87582,15 @@ "binop": null }, "value": "sceneModel", - "start": 21757, - "end": 21767, + "start": 23745, + "end": 23755, "loc": { "start": { - "line": 537, + "line": 591, "column": 20 }, "end": { - "line": 537, + "line": 591, "column": 30 } } @@ -87608,15 +87608,15 @@ "binop": null, "updateContext": null }, - "start": 21767, - "end": 21768, + "start": 23755, + "end": 23756, "loc": { "start": { - "line": 537, + "line": 591, "column": 30 }, "end": { - "line": 537, + "line": 591, "column": 31 } } @@ -87634,15 +87634,15 @@ "binop": null }, "value": "scene", - "start": 21768, - "end": 21773, + "start": 23756, + "end": 23761, "loc": { "start": { - "line": 537, + "line": 591, "column": 31 }, "end": { - "line": 537, + "line": 591, "column": 36 } } @@ -87660,15 +87660,15 @@ "binop": null, "updateContext": null }, - "start": 21773, - "end": 21774, + "start": 23761, + "end": 23762, "loc": { "start": { - "line": 537, + "line": 591, "column": 36 }, "end": { - "line": 537, + "line": 591, "column": 37 } } @@ -87686,15 +87686,15 @@ "binop": null }, "value": "once", - "start": 21774, - "end": 21778, + "start": 23762, + "end": 23766, "loc": { "start": { - "line": 537, + "line": 591, "column": 37 }, "end": { - "line": 537, + "line": 591, "column": 41 } } @@ -87711,15 +87711,15 @@ "postfix": false, "binop": null }, - "start": 21778, - "end": 21779, + "start": 23766, + "end": 23767, "loc": { "start": { - "line": 537, + "line": 591, "column": 41 }, "end": { - "line": 537, + "line": 591, "column": 42 } } @@ -87738,15 +87738,15 @@ "updateContext": null }, "value": "tick", - "start": 21779, - "end": 21785, + "start": 23767, + "end": 23773, "loc": { "start": { - "line": 537, + "line": 591, "column": 42 }, "end": { - "line": 537, + "line": 591, "column": 48 } } @@ -87764,15 +87764,15 @@ "binop": null, "updateContext": null }, - "start": 21785, - "end": 21786, + "start": 23773, + "end": 23774, "loc": { "start": { - "line": 537, + "line": 591, "column": 48 }, "end": { - "line": 537, + "line": 591, "column": 49 } } @@ -87789,15 +87789,15 @@ "postfix": false, "binop": null }, - "start": 21787, - "end": 21788, + "start": 23775, + "end": 23776, "loc": { "start": { - "line": 537, + "line": 591, "column": 50 }, "end": { - "line": 537, + "line": 591, "column": 51 } } @@ -87814,15 +87814,15 @@ "postfix": false, "binop": null }, - "start": 21788, - "end": 21789, + "start": 23776, + "end": 23777, "loc": { "start": { - "line": 537, + "line": 591, "column": 51 }, "end": { - "line": 537, + "line": 591, "column": 52 } } @@ -87840,15 +87840,15 @@ "binop": null, "updateContext": null }, - "start": 21790, - "end": 21792, + "start": 23778, + "end": 23780, "loc": { "start": { - "line": 537, + "line": 591, "column": 53 }, "end": { - "line": 537, + "line": 591, "column": 55 } } @@ -87865,15 +87865,15 @@ "postfix": false, "binop": null }, - "start": 21793, - "end": 21794, + "start": 23781, + "end": 23782, "loc": { "start": { - "line": 537, + "line": 591, "column": 56 }, "end": { - "line": 537, + "line": 591, "column": 57 } } @@ -87893,15 +87893,15 @@ "updateContext": null }, "value": "if", - "start": 21819, - "end": 21821, + "start": 23807, + "end": 23809, "loc": { "start": { - "line": 538, + "line": 592, "column": 24 }, "end": { - "line": 538, + "line": 592, "column": 26 } } @@ -87918,15 +87918,15 @@ "postfix": false, "binop": null }, - "start": 21822, - "end": 21823, + "start": 23810, + "end": 23811, "loc": { "start": { - "line": 538, + "line": 592, "column": 27 }, "end": { - "line": 538, + "line": 592, "column": 28 } } @@ -87944,15 +87944,15 @@ "binop": null }, "value": "sceneModel", - "start": 21823, - "end": 21833, + "start": 23811, + "end": 23821, "loc": { "start": { - "line": 538, + "line": 592, "column": 28 }, "end": { - "line": 538, + "line": 592, "column": 38 } } @@ -87970,15 +87970,15 @@ "binop": null, "updateContext": null }, - "start": 21833, - "end": 21834, + "start": 23821, + "end": 23822, "loc": { "start": { - "line": 538, + "line": 592, "column": 38 }, "end": { - "line": 538, + "line": 592, "column": 39 } } @@ -87996,15 +87996,15 @@ "binop": null }, "value": "destroyed", - "start": 21834, - "end": 21843, + "start": 23822, + "end": 23831, "loc": { "start": { - "line": 538, + "line": 592, "column": 39 }, "end": { - "line": 538, + "line": 592, "column": 48 } } @@ -88021,15 +88021,15 @@ "postfix": false, "binop": null }, - "start": 21843, - "end": 21844, + "start": 23831, + "end": 23832, "loc": { "start": { - "line": 538, + "line": 592, "column": 48 }, "end": { - "line": 538, + "line": 592, "column": 49 } } @@ -88046,15 +88046,15 @@ "postfix": false, "binop": null }, - "start": 21845, - "end": 21846, + "start": 23833, + "end": 23834, "loc": { "start": { - "line": 538, + "line": 592, "column": 50 }, "end": { - "line": 538, + "line": 592, "column": 51 } } @@ -88074,15 +88074,15 @@ "updateContext": null }, "value": "return", - "start": 21875, - "end": 21881, + "start": 23863, + "end": 23869, "loc": { "start": { - "line": 539, + "line": 593, "column": 28 }, "end": { - "line": 539, + "line": 593, "column": 34 } } @@ -88100,15 +88100,15 @@ "binop": null, "updateContext": null }, - "start": 21881, - "end": 21882, + "start": 23869, + "end": 23870, "loc": { "start": { - "line": 539, + "line": 593, "column": 34 }, "end": { - "line": 539, + "line": 593, "column": 35 } } @@ -88125,15 +88125,15 @@ "postfix": false, "binop": null }, - "start": 21907, - "end": 21908, + "start": 23895, + "end": 23896, "loc": { "start": { - "line": 540, + "line": 594, "column": 24 }, "end": { - "line": 540, + "line": 594, "column": 25 } } @@ -88151,15 +88151,15 @@ "binop": null }, "value": "sceneModel", - "start": 21933, - "end": 21943, + "start": 23921, + "end": 23931, "loc": { "start": { - "line": 541, + "line": 595, "column": 24 }, "end": { - "line": 541, + "line": 595, "column": 34 } } @@ -88177,15 +88177,15 @@ "binop": null, "updateContext": null }, - "start": 21943, - "end": 21944, + "start": 23931, + "end": 23932, "loc": { "start": { - "line": 541, + "line": 595, "column": 34 }, "end": { - "line": 541, + "line": 595, "column": 35 } } @@ -88203,15 +88203,15 @@ "binop": null }, "value": "scene", - "start": 21944, - "end": 21949, + "start": 23932, + "end": 23937, "loc": { "start": { - "line": 541, + "line": 595, "column": 35 }, "end": { - "line": 541, + "line": 595, "column": 40 } } @@ -88229,15 +88229,15 @@ "binop": null, "updateContext": null }, - "start": 21949, - "end": 21950, + "start": 23937, + "end": 23938, "loc": { "start": { - "line": 541, + "line": 595, "column": 40 }, "end": { - "line": 541, + "line": 595, "column": 41 } } @@ -88255,15 +88255,15 @@ "binop": null }, "value": "fire", - "start": 21950, - "end": 21954, + "start": 23938, + "end": 23942, "loc": { "start": { - "line": 541, + "line": 595, "column": 41 }, "end": { - "line": 541, + "line": 595, "column": 45 } } @@ -88280,15 +88280,15 @@ "postfix": false, "binop": null }, - "start": 21954, - "end": 21955, + "start": 23942, + "end": 23943, "loc": { "start": { - "line": 541, + "line": 595, "column": 45 }, "end": { - "line": 541, + "line": 595, "column": 46 } } @@ -88307,15 +88307,15 @@ "updateContext": null }, "value": "modelLoaded", - "start": 21955, - "end": 21968, + "start": 23943, + "end": 23956, "loc": { "start": { - "line": 541, + "line": 595, "column": 46 }, "end": { - "line": 541, + "line": 595, "column": 59 } } @@ -88333,15 +88333,15 @@ "binop": null, "updateContext": null }, - "start": 21968, - "end": 21969, + "start": 23956, + "end": 23957, "loc": { "start": { - "line": 541, + "line": 595, "column": 59 }, "end": { - "line": 541, + "line": 595, "column": 60 } } @@ -88359,15 +88359,15 @@ "binop": null }, "value": "sceneModel", - "start": 21970, - "end": 21980, + "start": 23958, + "end": 23968, "loc": { "start": { - "line": 541, + "line": 595, "column": 61 }, "end": { - "line": 541, + "line": 595, "column": 71 } } @@ -88385,15 +88385,15 @@ "binop": null, "updateContext": null }, - "start": 21980, - "end": 21981, + "start": 23968, + "end": 23969, "loc": { "start": { - "line": 541, + "line": 595, "column": 71 }, "end": { - "line": 541, + "line": 595, "column": 72 } } @@ -88411,15 +88411,15 @@ "binop": null }, "value": "id", - "start": 21981, - "end": 21983, + "start": 23969, + "end": 23971, "loc": { "start": { - "line": 541, + "line": 595, "column": 72 }, "end": { - "line": 541, + "line": 595, "column": 74 } } @@ -88436,15 +88436,15 @@ "postfix": false, "binop": null }, - "start": 21983, - "end": 21984, + "start": 23971, + "end": 23972, "loc": { "start": { - "line": 541, + "line": 595, "column": 74 }, "end": { - "line": 541, + "line": 595, "column": 75 } } @@ -88462,15 +88462,15 @@ "binop": null, "updateContext": null }, - "start": 21984, - "end": 21985, + "start": 23972, + "end": 23973, "loc": { "start": { - "line": 541, + "line": 595, "column": 75 }, "end": { - "line": 541, + "line": 595, "column": 76 } } @@ -88478,15 +88478,15 @@ { "type": "CommentLine", "value": " FIXME: Assumes listeners know order of these two events", - "start": 21986, - "end": 22044, + "start": 23974, + "end": 24032, "loc": { "start": { - "line": 541, + "line": 595, "column": 77 }, "end": { - "line": 541, + "line": 595, "column": 135 } } @@ -88504,15 +88504,15 @@ "binop": null }, "value": "sceneModel", - "start": 22069, - "end": 22079, + "start": 24057, + "end": 24067, "loc": { "start": { - "line": 542, + "line": 596, "column": 24 }, "end": { - "line": 542, + "line": 596, "column": 34 } } @@ -88530,15 +88530,15 @@ "binop": null, "updateContext": null }, - "start": 22079, - "end": 22080, + "start": 24067, + "end": 24068, "loc": { "start": { - "line": 542, + "line": 596, "column": 34 }, "end": { - "line": 542, + "line": 596, "column": 35 } } @@ -88556,15 +88556,15 @@ "binop": null }, "value": "fire", - "start": 22080, - "end": 22084, + "start": 24068, + "end": 24072, "loc": { "start": { - "line": 542, + "line": 596, "column": 35 }, "end": { - "line": 542, + "line": 596, "column": 39 } } @@ -88581,15 +88581,15 @@ "postfix": false, "binop": null }, - "start": 22084, - "end": 22085, + "start": 24072, + "end": 24073, "loc": { "start": { - "line": 542, + "line": 596, "column": 39 }, "end": { - "line": 542, + "line": 596, "column": 40 } } @@ -88608,15 +88608,15 @@ "updateContext": null }, "value": "loaded", - "start": 22085, - "end": 22093, + "start": 24073, + "end": 24081, "loc": { "start": { - "line": 542, + "line": 596, "column": 40 }, "end": { - "line": 542, + "line": 596, "column": 48 } } @@ -88634,15 +88634,15 @@ "binop": null, "updateContext": null }, - "start": 22093, - "end": 22094, + "start": 24081, + "end": 24082, "loc": { "start": { - "line": 542, + "line": 596, "column": 48 }, "end": { - "line": 542, + "line": 596, "column": 49 } } @@ -88662,15 +88662,15 @@ "updateContext": null }, "value": "true", - "start": 22095, - "end": 22099, + "start": 24083, + "end": 24087, "loc": { "start": { - "line": 542, + "line": 596, "column": 50 }, "end": { - "line": 542, + "line": 596, "column": 54 } } @@ -88688,15 +88688,15 @@ "binop": null, "updateContext": null }, - "start": 22099, - "end": 22100, + "start": 24087, + "end": 24088, "loc": { "start": { - "line": 542, + "line": 596, "column": 54 }, "end": { - "line": 542, + "line": 596, "column": 55 } } @@ -88716,15 +88716,15 @@ "updateContext": null }, "value": "false", - "start": 22101, - "end": 22106, + "start": 24089, + "end": 24094, "loc": { "start": { - "line": 542, + "line": 596, "column": 56 }, "end": { - "line": 542, + "line": 596, "column": 61 } } @@ -88741,15 +88741,15 @@ "postfix": false, "binop": null }, - "start": 22106, - "end": 22107, + "start": 24094, + "end": 24095, "loc": { "start": { - "line": 542, + "line": 596, "column": 61 }, "end": { - "line": 542, + "line": 596, "column": 62 } } @@ -88767,15 +88767,15 @@ "binop": null, "updateContext": null }, - "start": 22107, - "end": 22108, + "start": 24095, + "end": 24096, "loc": { "start": { - "line": 542, + "line": 596, "column": 62 }, "end": { - "line": 542, + "line": 596, "column": 63 } } @@ -88783,15 +88783,15 @@ { "type": "CommentLine", "value": " Don't forget the event, for late subscribers", - "start": 22109, - "end": 22156, + "start": 24097, + "end": 24144, "loc": { "start": { - "line": 542, + "line": 596, "column": 64 }, "end": { - "line": 542, + "line": 596, "column": 111 } } @@ -88808,15 +88808,15 @@ "postfix": false, "binop": null }, - "start": 22177, - "end": 22178, + "start": 24165, + "end": 24166, "loc": { "start": { - "line": 543, + "line": 597, "column": 20 }, "end": { - "line": 543, + "line": 597, "column": 21 } } @@ -88833,15 +88833,15 @@ "postfix": false, "binop": null }, - "start": 22178, - "end": 22179, + "start": 24166, + "end": 24167, "loc": { "start": { - "line": 543, + "line": 597, "column": 21 }, "end": { - "line": 543, + "line": 597, "column": 22 } } @@ -88859,15 +88859,15 @@ "binop": null, "updateContext": null }, - "start": 22179, - "end": 22180, + "start": 24167, + "end": 24168, "loc": { "start": { - "line": 543, + "line": 597, "column": 22 }, "end": { - "line": 543, + "line": 597, "column": 23 } } @@ -88885,15 +88885,15 @@ "binop": null }, "value": "resolve", - "start": 22202, - "end": 22209, + "start": 24190, + "end": 24197, "loc": { "start": { - "line": 545, + "line": 599, "column": 20 }, "end": { - "line": 545, + "line": 599, "column": 27 } } @@ -88910,15 +88910,15 @@ "postfix": false, "binop": null }, - "start": 22209, - "end": 22210, + "start": 24197, + "end": 24198, "loc": { "start": { - "line": 545, + "line": 599, "column": 27 }, "end": { - "line": 545, + "line": 599, "column": 28 } } @@ -88935,15 +88935,15 @@ "postfix": false, "binop": null }, - "start": 22210, - "end": 22211, + "start": 24198, + "end": 24199, "loc": { "start": { - "line": 545, + "line": 599, "column": 28 }, "end": { - "line": 545, + "line": 599, "column": 29 } } @@ -88961,15 +88961,15 @@ "binop": null, "updateContext": null }, - "start": 22211, - "end": 22212, + "start": 24199, + "end": 24200, "loc": { "start": { - "line": 545, + "line": 599, "column": 29 }, "end": { - "line": 545, + "line": 599, "column": 30 } } @@ -88986,15 +88986,15 @@ "postfix": false, "binop": null }, - "start": 22229, - "end": 22230, + "start": 24217, + "end": 24218, "loc": { "start": { - "line": 546, + "line": 600, "column": 16 }, "end": { - "line": 546, + "line": 600, "column": 17 } } @@ -89011,15 +89011,15 @@ "postfix": false, "binop": null }, - "start": 22230, - "end": 22231, + "start": 24218, + "end": 24219, "loc": { "start": { - "line": 546, + "line": 600, "column": 17 }, "end": { - "line": 546, + "line": 600, "column": 18 } } @@ -89037,15 +89037,15 @@ "binop": null, "updateContext": null }, - "start": 22231, - "end": 22232, + "start": 24219, + "end": 24220, "loc": { "start": { - "line": 546, + "line": 600, "column": 18 }, "end": { - "line": 546, + "line": 600, "column": 19 } } @@ -89062,15 +89062,15 @@ "postfix": false, "binop": null }, - "start": 22245, - "end": 22246, + "start": 24233, + "end": 24234, "loc": { "start": { - "line": 547, + "line": 601, "column": 12 }, "end": { - "line": 547, + "line": 601, "column": 13 } } @@ -89090,15 +89090,15 @@ "updateContext": null }, "value": "catch", - "start": 22247, - "end": 22252, + "start": 24235, + "end": 24240, "loc": { "start": { - "line": 547, + "line": 601, "column": 14 }, "end": { - "line": 547, + "line": 601, "column": 19 } } @@ -89115,15 +89115,15 @@ "postfix": false, "binop": null }, - "start": 22253, - "end": 22254, + "start": 24241, + "end": 24242, "loc": { "start": { - "line": 547, + "line": 601, "column": 20 }, "end": { - "line": 547, + "line": 601, "column": 21 } } @@ -89141,15 +89141,15 @@ "binop": null }, "value": "e", - "start": 22254, - "end": 22255, + "start": 24242, + "end": 24243, "loc": { "start": { - "line": 547, + "line": 601, "column": 21 }, "end": { - "line": 547, + "line": 601, "column": 22 } } @@ -89166,15 +89166,15 @@ "postfix": false, "binop": null }, - "start": 22255, - "end": 22256, + "start": 24243, + "end": 24244, "loc": { "start": { - "line": 547, + "line": 601, "column": 22 }, "end": { - "line": 547, + "line": 601, "column": 23 } } @@ -89191,15 +89191,15 @@ "postfix": false, "binop": null }, - "start": 22257, - "end": 22258, + "start": 24245, + "end": 24246, "loc": { "start": { - "line": 547, + "line": 601, "column": 24 }, "end": { - "line": 547, + "line": 601, "column": 25 } } @@ -89217,15 +89217,15 @@ "binop": null }, "value": "sceneModel", - "start": 22275, - "end": 22285, + "start": 24263, + "end": 24273, "loc": { "start": { - "line": 548, + "line": 602, "column": 16 }, "end": { - "line": 548, + "line": 602, "column": 26 } } @@ -89243,15 +89243,15 @@ "binop": null, "updateContext": null }, - "start": 22285, - "end": 22286, + "start": 24273, + "end": 24274, "loc": { "start": { - "line": 548, + "line": 602, "column": 26 }, "end": { - "line": 548, + "line": 602, "column": 27 } } @@ -89269,15 +89269,15 @@ "binop": null }, "value": "finalize", - "start": 22286, - "end": 22294, + "start": 24274, + "end": 24282, "loc": { "start": { - "line": 548, + "line": 602, "column": 27 }, "end": { - "line": 548, + "line": 602, "column": 35 } } @@ -89294,15 +89294,15 @@ "postfix": false, "binop": null }, - "start": 22294, - "end": 22295, + "start": 24282, + "end": 24283, "loc": { "start": { - "line": 548, + "line": 602, "column": 35 }, "end": { - "line": 548, + "line": 602, "column": 36 } } @@ -89319,15 +89319,15 @@ "postfix": false, "binop": null }, - "start": 22295, - "end": 22296, + "start": 24283, + "end": 24284, "loc": { "start": { - "line": 548, + "line": 602, "column": 36 }, "end": { - "line": 548, + "line": 602, "column": 37 } } @@ -89345,15 +89345,15 @@ "binop": null, "updateContext": null }, - "start": 22296, - "end": 22297, + "start": 24284, + "end": 24285, "loc": { "start": { - "line": 548, + "line": 602, "column": 37 }, "end": { - "line": 548, + "line": 602, "column": 38 } } @@ -89371,15 +89371,15 @@ "binop": null }, "value": "reject", - "start": 22314, - "end": 22320, + "start": 24302, + "end": 24308, "loc": { "start": { - "line": 549, + "line": 603, "column": 16 }, "end": { - "line": 549, + "line": 603, "column": 22 } } @@ -89396,15 +89396,15 @@ "postfix": false, "binop": null }, - "start": 22320, - "end": 22321, + "start": 24308, + "end": 24309, "loc": { "start": { - "line": 549, + "line": 603, "column": 22 }, "end": { - "line": 549, + "line": 603, "column": 23 } } @@ -89422,15 +89422,15 @@ "binop": null }, "value": "e", - "start": 22321, - "end": 22322, + "start": 24309, + "end": 24310, "loc": { "start": { - "line": 549, + "line": 603, "column": 23 }, "end": { - "line": 549, + "line": 603, "column": 24 } } @@ -89447,15 +89447,15 @@ "postfix": false, "binop": null }, - "start": 22322, - "end": 22323, + "start": 24310, + "end": 24311, "loc": { "start": { - "line": 549, + "line": 603, "column": 24 }, "end": { - "line": 549, + "line": 603, "column": 25 } } @@ -89473,15 +89473,15 @@ "binop": null, "updateContext": null }, - "start": 22323, - "end": 22324, + "start": 24311, + "end": 24312, "loc": { "start": { - "line": 549, + "line": 603, "column": 25 }, "end": { - "line": 549, + "line": 603, "column": 26 } } @@ -89498,15 +89498,15 @@ "postfix": false, "binop": null }, - "start": 22337, - "end": 22338, + "start": 24325, + "end": 24326, "loc": { "start": { - "line": 550, + "line": 604, "column": 12 }, "end": { - "line": 550, + "line": 604, "column": 13 } } @@ -89523,15 +89523,15 @@ "postfix": false, "binop": null }, - "start": 22347, - "end": 22348, + "start": 24335, + "end": 24336, "loc": { "start": { - "line": 551, + "line": 605, "column": 8 }, "end": { - "line": 551, + "line": 605, "column": 9 } } @@ -89548,15 +89548,15 @@ "postfix": false, "binop": null }, - "start": 22348, - "end": 22349, + "start": 24336, + "end": 24337, "loc": { "start": { - "line": 551, + "line": 605, "column": 9 }, "end": { - "line": 551, + "line": 605, "column": 10 } } @@ -89574,15 +89574,15 @@ "binop": null, "updateContext": null }, - "start": 22349, - "end": 22350, + "start": 24337, + "end": 24338, "loc": { "start": { - "line": 551, + "line": 605, "column": 10 }, "end": { - "line": 551, + "line": 605, "column": 11 } } @@ -89599,15 +89599,15 @@ "postfix": false, "binop": null }, - "start": 22355, - "end": 22356, + "start": 24343, + "end": 24344, "loc": { "start": { - "line": 552, + "line": 606, "column": 4 }, "end": { - "line": 552, + "line": 606, "column": 5 } } @@ -89624,15 +89624,15 @@ "postfix": false, "binop": null }, - "start": 22357, - "end": 22358, + "start": 24345, + "end": 24346, "loc": { "start": { - "line": 553, + "line": 607, "column": 0 }, "end": { - "line": 553, + "line": 607, "column": 1 } } @@ -89651,15 +89651,15 @@ "binop": null }, "value": "function", - "start": 22360, - "end": 22368, + "start": 24348, + "end": 24356, "loc": { "start": { - "line": 555, + "line": 609, "column": 0 }, "end": { - "line": 555, + "line": 609, "column": 8 } } @@ -89677,15 +89677,15 @@ "binop": null }, "value": "chunkArray", - "start": 22369, - "end": 22379, + "start": 24357, + "end": 24367, "loc": { "start": { - "line": 555, + "line": 609, "column": 9 }, "end": { - "line": 555, + "line": 609, "column": 19 } } @@ -89702,15 +89702,15 @@ "postfix": false, "binop": null }, - "start": 22379, - "end": 22380, + "start": 24367, + "end": 24368, "loc": { "start": { - "line": 555, + "line": 609, "column": 19 }, "end": { - "line": 555, + "line": 609, "column": 20 } } @@ -89728,15 +89728,15 @@ "binop": null }, "value": "array", - "start": 22380, - "end": 22385, + "start": 24368, + "end": 24373, "loc": { "start": { - "line": 555, + "line": 609, "column": 20 }, "end": { - "line": 555, + "line": 609, "column": 25 } } @@ -89754,15 +89754,15 @@ "binop": null, "updateContext": null }, - "start": 22385, - "end": 22386, + "start": 24373, + "end": 24374, "loc": { "start": { - "line": 555, + "line": 609, "column": 25 }, "end": { - "line": 555, + "line": 609, "column": 26 } } @@ -89780,15 +89780,15 @@ "binop": null }, "value": "chunkSize", - "start": 22387, - "end": 22396, + "start": 24375, + "end": 24384, "loc": { "start": { - "line": 555, + "line": 609, "column": 27 }, "end": { - "line": 555, + "line": 609, "column": 36 } } @@ -89805,15 +89805,15 @@ "postfix": false, "binop": null }, - "start": 22396, - "end": 22397, + "start": 24384, + "end": 24385, "loc": { "start": { - "line": 555, + "line": 609, "column": 36 }, "end": { - "line": 555, + "line": 609, "column": 37 } } @@ -89830,15 +89830,15 @@ "postfix": false, "binop": null }, - "start": 22398, - "end": 22399, + "start": 24386, + "end": 24387, "loc": { "start": { - "line": 555, + "line": 609, "column": 38 }, "end": { - "line": 555, + "line": 609, "column": 39 } } @@ -89858,15 +89858,15 @@ "updateContext": null }, "value": "if", - "start": 22404, - "end": 22406, + "start": 24392, + "end": 24394, "loc": { "start": { - "line": 556, + "line": 610, "column": 4 }, "end": { - "line": 556, + "line": 610, "column": 6 } } @@ -89883,15 +89883,15 @@ "postfix": false, "binop": null }, - "start": 22407, - "end": 22408, + "start": 24395, + "end": 24396, "loc": { "start": { - "line": 556, + "line": 610, "column": 7 }, "end": { - "line": 556, + "line": 610, "column": 8 } } @@ -89909,15 +89909,15 @@ "binop": null }, "value": "chunkSize", - "start": 22408, - "end": 22417, + "start": 24396, + "end": 24405, "loc": { "start": { - "line": 556, + "line": 610, "column": 8 }, "end": { - "line": 556, + "line": 610, "column": 17 } } @@ -89936,15 +89936,15 @@ "updateContext": null }, "value": ">=", - "start": 22418, - "end": 22420, + "start": 24406, + "end": 24408, "loc": { "start": { - "line": 556, + "line": 610, "column": 18 }, "end": { - "line": 556, + "line": 610, "column": 20 } } @@ -89962,15 +89962,15 @@ "binop": null }, "value": "array", - "start": 22421, - "end": 22426, + "start": 24409, + "end": 24414, "loc": { "start": { - "line": 556, + "line": 610, "column": 21 }, "end": { - "line": 556, + "line": 610, "column": 26 } } @@ -89988,15 +89988,15 @@ "binop": null, "updateContext": null }, - "start": 22426, - "end": 22427, + "start": 24414, + "end": 24415, "loc": { "start": { - "line": 556, + "line": 610, "column": 26 }, "end": { - "line": 556, + "line": 610, "column": 27 } } @@ -90014,15 +90014,15 @@ "binop": null }, "value": "length", - "start": 22427, - "end": 22433, + "start": 24415, + "end": 24421, "loc": { "start": { - "line": 556, + "line": 610, "column": 27 }, "end": { - "line": 556, + "line": 610, "column": 33 } } @@ -90039,15 +90039,15 @@ "postfix": false, "binop": null }, - "start": 22433, - "end": 22434, + "start": 24421, + "end": 24422, "loc": { "start": { - "line": 556, + "line": 610, "column": 33 }, "end": { - "line": 556, + "line": 610, "column": 34 } } @@ -90064,15 +90064,15 @@ "postfix": false, "binop": null }, - "start": 22435, - "end": 22436, + "start": 24423, + "end": 24424, "loc": { "start": { - "line": 556, + "line": 610, "column": 35 }, "end": { - "line": 556, + "line": 610, "column": 36 } } @@ -90092,15 +90092,15 @@ "updateContext": null }, "value": "return", - "start": 22445, - "end": 22451, + "start": 24433, + "end": 24439, "loc": { "start": { - "line": 557, + "line": 611, "column": 8 }, "end": { - "line": 557, + "line": 611, "column": 14 } } @@ -90118,15 +90118,15 @@ "binop": null }, "value": "array", - "start": 22452, - "end": 22457, + "start": 24440, + "end": 24445, "loc": { "start": { - "line": 557, + "line": 611, "column": 15 }, "end": { - "line": 557, + "line": 611, "column": 20 } } @@ -90144,15 +90144,15 @@ "binop": null, "updateContext": null }, - "start": 22457, - "end": 22458, + "start": 24445, + "end": 24446, "loc": { "start": { - "line": 557, + "line": 611, "column": 20 }, "end": { - "line": 557, + "line": 611, "column": 21 } } @@ -90169,15 +90169,15 @@ "postfix": false, "binop": null }, - "start": 22463, - "end": 22464, + "start": 24451, + "end": 24452, "loc": { "start": { - "line": 558, + "line": 612, "column": 4 }, "end": { - "line": 558, + "line": 612, "column": 5 } } @@ -90197,15 +90197,15 @@ "updateContext": null }, "value": "let", - "start": 22469, - "end": 22472, + "start": 24457, + "end": 24460, "loc": { "start": { - "line": 559, + "line": 613, "column": 4 }, "end": { - "line": 559, + "line": 613, "column": 7 } } @@ -90223,15 +90223,15 @@ "binop": null }, "value": "result", - "start": 22473, - "end": 22479, + "start": 24461, + "end": 24467, "loc": { "start": { - "line": 559, + "line": 613, "column": 8 }, "end": { - "line": 559, + "line": 613, "column": 14 } } @@ -90250,15 +90250,15 @@ "updateContext": null }, "value": "=", - "start": 22480, - "end": 22481, + "start": 24468, + "end": 24469, "loc": { "start": { - "line": 559, + "line": 613, "column": 15 }, "end": { - "line": 559, + "line": 613, "column": 16 } } @@ -90276,15 +90276,15 @@ "binop": null, "updateContext": null }, - "start": 22482, - "end": 22483, + "start": 24470, + "end": 24471, "loc": { "start": { - "line": 559, + "line": 613, "column": 17 }, "end": { - "line": 559, + "line": 613, "column": 18 } } @@ -90302,15 +90302,15 @@ "binop": null, "updateContext": null }, - "start": 22483, - "end": 22484, + "start": 24471, + "end": 24472, "loc": { "start": { - "line": 559, + "line": 613, "column": 18 }, "end": { - "line": 559, + "line": 613, "column": 19 } } @@ -90328,15 +90328,15 @@ "binop": null, "updateContext": null }, - "start": 22484, - "end": 22485, + "start": 24472, + "end": 24473, "loc": { "start": { - "line": 559, + "line": 613, "column": 19 }, "end": { - "line": 559, + "line": 613, "column": 20 } } @@ -90356,15 +90356,15 @@ "updateContext": null }, "value": "for", - "start": 22490, - "end": 22493, + "start": 24478, + "end": 24481, "loc": { "start": { - "line": 560, + "line": 614, "column": 4 }, "end": { - "line": 560, + "line": 614, "column": 7 } } @@ -90381,15 +90381,15 @@ "postfix": false, "binop": null }, - "start": 22494, - "end": 22495, + "start": 24482, + "end": 24483, "loc": { "start": { - "line": 560, + "line": 614, "column": 8 }, "end": { - "line": 560, + "line": 614, "column": 9 } } @@ -90409,15 +90409,15 @@ "updateContext": null }, "value": "let", - "start": 22495, - "end": 22498, + "start": 24483, + "end": 24486, "loc": { "start": { - "line": 560, + "line": 614, "column": 9 }, "end": { - "line": 560, + "line": 614, "column": 12 } } @@ -90435,15 +90435,15 @@ "binop": null }, "value": "i", - "start": 22499, - "end": 22500, + "start": 24487, + "end": 24488, "loc": { "start": { - "line": 560, + "line": 614, "column": 13 }, "end": { - "line": 560, + "line": 614, "column": 14 } } @@ -90462,15 +90462,15 @@ "updateContext": null }, "value": "=", - "start": 22501, - "end": 22502, + "start": 24489, + "end": 24490, "loc": { "start": { - "line": 560, + "line": 614, "column": 15 }, "end": { - "line": 560, + "line": 614, "column": 16 } } @@ -90489,15 +90489,15 @@ "updateContext": null }, "value": 0, - "start": 22503, - "end": 22504, + "start": 24491, + "end": 24492, "loc": { "start": { - "line": 560, + "line": 614, "column": 17 }, "end": { - "line": 560, + "line": 614, "column": 18 } } @@ -90515,15 +90515,15 @@ "binop": null, "updateContext": null }, - "start": 22504, - "end": 22505, + "start": 24492, + "end": 24493, "loc": { "start": { - "line": 560, + "line": 614, "column": 18 }, "end": { - "line": 560, + "line": 614, "column": 19 } } @@ -90541,15 +90541,15 @@ "binop": null }, "value": "i", - "start": 22506, - "end": 22507, + "start": 24494, + "end": 24495, "loc": { "start": { - "line": 560, + "line": 614, "column": 20 }, "end": { - "line": 560, + "line": 614, "column": 21 } } @@ -90568,15 +90568,15 @@ "updateContext": null }, "value": "<", - "start": 22508, - "end": 22509, + "start": 24496, + "end": 24497, "loc": { "start": { - "line": 560, + "line": 614, "column": 22 }, "end": { - "line": 560, + "line": 614, "column": 23 } } @@ -90594,15 +90594,15 @@ "binop": null }, "value": "array", - "start": 22510, - "end": 22515, + "start": 24498, + "end": 24503, "loc": { "start": { - "line": 560, + "line": 614, "column": 24 }, "end": { - "line": 560, + "line": 614, "column": 29 } } @@ -90620,15 +90620,15 @@ "binop": null, "updateContext": null }, - "start": 22515, - "end": 22516, + "start": 24503, + "end": 24504, "loc": { "start": { - "line": 560, + "line": 614, "column": 29 }, "end": { - "line": 560, + "line": 614, "column": 30 } } @@ -90646,15 +90646,15 @@ "binop": null }, "value": "length", - "start": 22516, - "end": 22522, + "start": 24504, + "end": 24510, "loc": { "start": { - "line": 560, + "line": 614, "column": 30 }, "end": { - "line": 560, + "line": 614, "column": 36 } } @@ -90672,15 +90672,15 @@ "binop": null, "updateContext": null }, - "start": 22522, - "end": 22523, + "start": 24510, + "end": 24511, "loc": { "start": { - "line": 560, + "line": 614, "column": 36 }, "end": { - "line": 560, + "line": 614, "column": 37 } } @@ -90698,15 +90698,15 @@ "binop": null }, "value": "i", - "start": 22524, - "end": 22525, + "start": 24512, + "end": 24513, "loc": { "start": { - "line": 560, + "line": 614, "column": 38 }, "end": { - "line": 560, + "line": 614, "column": 39 } } @@ -90725,15 +90725,15 @@ "updateContext": null }, "value": "+=", - "start": 22526, - "end": 22528, + "start": 24514, + "end": 24516, "loc": { "start": { - "line": 560, + "line": 614, "column": 40 }, "end": { - "line": 560, + "line": 614, "column": 42 } } @@ -90751,15 +90751,15 @@ "binop": null }, "value": "chunkSize", - "start": 22529, - "end": 22538, + "start": 24517, + "end": 24526, "loc": { "start": { - "line": 560, + "line": 614, "column": 43 }, "end": { - "line": 560, + "line": 614, "column": 52 } } @@ -90776,15 +90776,15 @@ "postfix": false, "binop": null }, - "start": 22538, - "end": 22539, + "start": 24526, + "end": 24527, "loc": { "start": { - "line": 560, + "line": 614, "column": 52 }, "end": { - "line": 560, + "line": 614, "column": 53 } } @@ -90801,15 +90801,15 @@ "postfix": false, "binop": null }, - "start": 22540, - "end": 22541, + "start": 24528, + "end": 24529, "loc": { "start": { - "line": 560, + "line": 614, "column": 54 }, "end": { - "line": 560, + "line": 614, "column": 55 } } @@ -90827,15 +90827,15 @@ "binop": null }, "value": "result", - "start": 22550, - "end": 22556, + "start": 24538, + "end": 24544, "loc": { "start": { - "line": 561, + "line": 615, "column": 8 }, "end": { - "line": 561, + "line": 615, "column": 14 } } @@ -90853,15 +90853,15 @@ "binop": null, "updateContext": null }, - "start": 22556, - "end": 22557, + "start": 24544, + "end": 24545, "loc": { "start": { - "line": 561, + "line": 615, "column": 14 }, "end": { - "line": 561, + "line": 615, "column": 15 } } @@ -90879,15 +90879,15 @@ "binop": null }, "value": "push", - "start": 22557, - "end": 22561, + "start": 24545, + "end": 24549, "loc": { "start": { - "line": 561, + "line": 615, "column": 15 }, "end": { - "line": 561, + "line": 615, "column": 19 } } @@ -90904,15 +90904,15 @@ "postfix": false, "binop": null }, - "start": 22561, - "end": 22562, + "start": 24549, + "end": 24550, "loc": { "start": { - "line": 561, + "line": 615, "column": 19 }, "end": { - "line": 561, + "line": 615, "column": 20 } } @@ -90930,15 +90930,15 @@ "binop": null }, "value": "array", - "start": 22562, - "end": 22567, + "start": 24550, + "end": 24555, "loc": { "start": { - "line": 561, + "line": 615, "column": 20 }, "end": { - "line": 561, + "line": 615, "column": 25 } } @@ -90956,15 +90956,15 @@ "binop": null, "updateContext": null }, - "start": 22567, - "end": 22568, + "start": 24555, + "end": 24556, "loc": { "start": { - "line": 561, + "line": 615, "column": 25 }, "end": { - "line": 561, + "line": 615, "column": 26 } } @@ -90982,15 +90982,15 @@ "binop": null }, "value": "slice", - "start": 22568, - "end": 22573, + "start": 24556, + "end": 24561, "loc": { "start": { - "line": 561, + "line": 615, "column": 26 }, "end": { - "line": 561, + "line": 615, "column": 31 } } @@ -91007,15 +91007,15 @@ "postfix": false, "binop": null }, - "start": 22573, - "end": 22574, + "start": 24561, + "end": 24562, "loc": { "start": { - "line": 561, + "line": 615, "column": 31 }, "end": { - "line": 561, + "line": 615, "column": 32 } } @@ -91033,15 +91033,15 @@ "binop": null }, "value": "i", - "start": 22574, - "end": 22575, + "start": 24562, + "end": 24563, "loc": { "start": { - "line": 561, + "line": 615, "column": 32 }, "end": { - "line": 561, + "line": 615, "column": 33 } } @@ -91059,15 +91059,15 @@ "binop": null, "updateContext": null }, - "start": 22575, - "end": 22576, + "start": 24563, + "end": 24564, "loc": { "start": { - "line": 561, + "line": 615, "column": 33 }, "end": { - "line": 561, + "line": 615, "column": 34 } } @@ -91085,15 +91085,15 @@ "binop": null }, "value": "i", - "start": 22577, - "end": 22578, + "start": 24565, + "end": 24566, "loc": { "start": { - "line": 561, + "line": 615, "column": 35 }, "end": { - "line": 561, + "line": 615, "column": 36 } } @@ -91112,15 +91112,15 @@ "updateContext": null }, "value": "+", - "start": 22579, - "end": 22580, + "start": 24567, + "end": 24568, "loc": { "start": { - "line": 561, + "line": 615, "column": 37 }, "end": { - "line": 561, + "line": 615, "column": 38 } } @@ -91138,15 +91138,15 @@ "binop": null }, "value": "chunkSize", - "start": 22581, - "end": 22590, + "start": 24569, + "end": 24578, "loc": { "start": { - "line": 561, + "line": 615, "column": 39 }, "end": { - "line": 561, + "line": 615, "column": 48 } } @@ -91163,15 +91163,15 @@ "postfix": false, "binop": null }, - "start": 22590, - "end": 22591, + "start": 24578, + "end": 24579, "loc": { "start": { - "line": 561, + "line": 615, "column": 48 }, "end": { - "line": 561, + "line": 615, "column": 49 } } @@ -91188,15 +91188,15 @@ "postfix": false, "binop": null }, - "start": 22591, - "end": 22592, + "start": 24579, + "end": 24580, "loc": { "start": { - "line": 561, + "line": 615, "column": 49 }, "end": { - "line": 561, + "line": 615, "column": 50 } } @@ -91214,15 +91214,15 @@ "binop": null, "updateContext": null }, - "start": 22592, - "end": 22593, + "start": 24580, + "end": 24581, "loc": { "start": { - "line": 561, + "line": 615, "column": 50 }, "end": { - "line": 561, + "line": 615, "column": 51 } } @@ -91239,15 +91239,15 @@ "postfix": false, "binop": null }, - "start": 22598, - "end": 22599, + "start": 24586, + "end": 24587, "loc": { "start": { - "line": 562, + "line": 616, "column": 4 }, "end": { - "line": 562, + "line": 616, "column": 5 } } @@ -91267,15 +91267,15 @@ "updateContext": null }, "value": "return", - "start": 22604, - "end": 22610, + "start": 24592, + "end": 24598, "loc": { "start": { - "line": 563, + "line": 617, "column": 4 }, "end": { - "line": 563, + "line": 617, "column": 10 } } @@ -91293,15 +91293,15 @@ "binop": null }, "value": "result", - "start": 22611, - "end": 22617, + "start": 24599, + "end": 24605, "loc": { "start": { - "line": 563, + "line": 617, "column": 11 }, "end": { - "line": 563, + "line": 617, "column": 17 } } @@ -91319,15 +91319,15 @@ "binop": null, "updateContext": null }, - "start": 22617, - "end": 22618, + "start": 24605, + "end": 24606, "loc": { "start": { - "line": 563, + "line": 617, "column": 17 }, "end": { - "line": 563, + "line": 617, "column": 18 } } @@ -91344,15 +91344,15 @@ "postfix": false, "binop": null }, - "start": 22619, - "end": 22620, + "start": 24607, + "end": 24608, "loc": { "start": { - "line": 564, + "line": 618, "column": 0 }, "end": { - "line": 564, + "line": 618, "column": 1 } } @@ -91372,15 +91372,15 @@ "updateContext": null }, "value": "export", - "start": 22622, - "end": 22628, + "start": 24610, + "end": 24616, "loc": { "start": { - "line": 566, + "line": 620, "column": 0 }, "end": { - "line": 566, + "line": 620, "column": 6 } } @@ -91397,15 +91397,15 @@ "postfix": false, "binop": null }, - "start": 22629, - "end": 22630, + "start": 24617, + "end": 24618, "loc": { "start": { - "line": 566, + "line": 620, "column": 7 }, "end": { - "line": 566, + "line": 620, "column": 8 } } @@ -91423,15 +91423,15 @@ "binop": null }, "value": "LASLoaderPlugin", - "start": 22630, - "end": 22645, + "start": 24618, + "end": 24633, "loc": { "start": { - "line": 566, + "line": 620, "column": 8 }, "end": { - "line": 566, + "line": 620, "column": 23 } } @@ -91448,15 +91448,15 @@ "postfix": false, "binop": null }, - "start": 22645, - "end": 22646, + "start": 24633, + "end": 24634, "loc": { "start": { - "line": 566, + "line": 620, "column": 23 }, "end": { - "line": 566, + "line": 620, "column": 24 } } @@ -91474,15 +91474,15 @@ "binop": null, "updateContext": null }, - "start": 22646, - "end": 22647, + "start": 24634, + "end": 24635, "loc": { "start": { - "line": 566, + "line": 620, "column": 24 }, "end": { - "line": 566, + "line": 620, "column": 25 } } @@ -91500,15 +91500,15 @@ "binop": null, "updateContext": null }, - "start": 22648, - "end": 22648, + "start": 24636, + "end": 24636, "loc": { "start": { - "line": 567, + "line": 621, "column": 0 }, "end": { - "line": 567, + "line": 621, "column": 0 } } diff --git a/docs/ast/source/plugins/index.js.json b/docs/ast/source/plugins/index.js.json index 93c5530e4c..1a495ecab2 100644 --- a/docs/ast/source/plugins/index.js.json +++ b/docs/ast/source/plugins/index.js.json @@ -1,29 +1,29 @@ { "type": "File", "start": 0, - "end": 973, + "end": 1020, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 21, - "column": 48 + "line": 22, + "column": 46 } }, "program": { "type": "Program", "start": 0, - "end": 973, + "end": 1020, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 21, - "column": 48 + "line": 22, + "column": 46 } }, "sourceType": "module", @@ -762,6 +762,41 @@ }, "value": "./CityJSONLoaderPlugin/index.js" } + }, + { + "type": "ExportAllDeclaration", + "start": 974, + "end": 1020, + "loc": { + "start": { + "line": 22, + "column": 0 + }, + "end": { + "line": 22, + "column": 46 + } + }, + "source": { + "type": "StringLiteral", + "start": 988, + "end": 1019, + "loc": { + "start": { + "line": 22, + "column": 14 + }, + "end": { + "line": 22, + "column": 45 + } + }, + "extra": { + "rawValue": "./DotBIMLoaderPlugin/index.js", + "raw": "\"./DotBIMLoaderPlugin/index.js\"" + }, + "value": "./DotBIMLoaderPlugin/index.js" + } } ], "directives": [] @@ -3582,6 +3617,140 @@ } } }, + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 974, + "end": 980, + "loc": { + "start": { + "line": 22, + "column": 0 + }, + "end": { + "line": 22, + "column": 6 + } + } + }, + { + "type": { + "label": "*", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 981, + "end": 982, + "loc": { + "start": { + "line": 22, + "column": 7 + }, + "end": { + "line": 22, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 983, + "end": 987, + "loc": { + "start": { + "line": 22, + "column": 9 + }, + "end": { + "line": 22, + "column": 13 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./DotBIMLoaderPlugin/index.js", + "start": 988, + "end": 1019, + "loc": { + "start": { + "line": 22, + "column": 14 + }, + "end": { + "line": 22, + "column": 45 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1019, + "end": 1020, + "loc": { + "start": { + "line": 22, + "column": 45 + }, + "end": { + "line": 22, + "column": 46 + } + } + }, { "type": { "label": "eof", @@ -3595,16 +3764,16 @@ "binop": null, "updateContext": null }, - "start": 973, - "end": 973, + "start": 1020, + "end": 1020, "loc": { "start": { - "line": 21, - "column": 48 + "line": 22, + "column": 46 }, "end": { - "line": 21, - "column": 48 + "line": 22, + "column": 46 } } } diff --git a/docs/ast/source/viewer/scene/model/SceneModel.js.json b/docs/ast/source/viewer/scene/model/SceneModel.js.json index 627c8392b1..862c224b5c 100644 --- a/docs/ast/source/viewer/scene/model/SceneModel.js.json +++ b/docs/ast/source/viewer/scene/model/SceneModel.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 162607, + "end": 163121, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 4043, + "line": 4051, "column": 0 } }, "program": { "type": "Program", "start": 0, - "end": 162607, + "end": 163121, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 4043, + "line": 4051, "column": 0 } }, @@ -3258,44 +3258,160 @@ }, { "type": "VariableDeclaration", - "start": 2223, - "end": 2266, + "start": 2222, + "end": 2257, "loc": { "start": { - "line": 47, + "line": 46, "column": 0 }, "end": { - "line": 47, + "line": 46, + "column": 35 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 2228, + "end": 2256, + "loc": { + "start": { + "line": 46, + "column": 6 + }, + "end": { + "line": 46, + "column": 34 + } + }, + "id": { + "type": "Identifier", + "start": 2228, + "end": 2242, + "loc": { + "start": { + "line": 46, + "column": 6 + }, + "end": { + "line": 46, + "column": 20 + }, + "identifierName": "tempQuaternion" + }, + "name": "tempQuaternion" + }, + "init": { + "type": "CallExpression", + "start": 2245, + "end": 2256, + "loc": { + "start": { + "line": 46, + "column": 23 + }, + "end": { + "line": 46, + "column": 34 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2245, + "end": 2254, + "loc": { + "start": { + "line": 46, + "column": 23 + }, + "end": { + "line": 46, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 2245, + "end": 2249, + "loc": { + "start": { + "line": 46, + "column": 23 + }, + "end": { + "line": 46, + "column": 27 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 2250, + "end": 2254, + "loc": { + "start": { + "line": 46, + "column": 28 + }, + "end": { + "line": 46, + "column": 32 + }, + "identifierName": "vec4" + }, + "name": "vec4" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 2259, + "end": 2302, + "loc": { + "start": { + "line": 48, + "column": 0 + }, + "end": { + "line": 48, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2229, - "end": 2265, + "start": 2265, + "end": 2301, "loc": { "start": { - "line": 47, + "line": 48, "column": 6 }, "end": { - "line": 47, + "line": 48, "column": 42 } }, "id": { "type": "Identifier", - "start": 2229, - "end": 2242, + "start": 2265, + "end": 2278, "loc": { "start": { - "line": 47, + "line": 48, "column": 6 }, "end": { - "line": 47, + "line": 48, "column": 19 }, "identifierName": "DEFAULT_SCALE" @@ -3304,43 +3420,43 @@ }, "init": { "type": "CallExpression", - "start": 2245, - "end": 2265, + "start": 2281, + "end": 2301, "loc": { "start": { - "line": 47, + "line": 48, "column": 22 }, "end": { - "line": 47, + "line": 48, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 2245, - "end": 2254, + "start": 2281, + "end": 2290, "loc": { "start": { - "line": 47, + "line": 48, "column": 22 }, "end": { - "line": 47, + "line": 48, "column": 31 } }, "object": { "type": "Identifier", - "start": 2245, - "end": 2249, + "start": 2281, + "end": 2285, "loc": { "start": { - "line": 47, + "line": 48, "column": 22 }, "end": { - "line": 47, + "line": 48, "column": 26 }, "identifierName": "math" @@ -3349,15 +3465,15 @@ }, "property": { "type": "Identifier", - "start": 2250, - "end": 2254, + "start": 2286, + "end": 2290, "loc": { "start": { - "line": 47, + "line": 48, "column": 27 }, "end": { - "line": 47, + "line": 48, "column": 31 }, "identifierName": "vec3" @@ -3369,30 +3485,30 @@ "arguments": [ { "type": "ArrayExpression", - "start": 2255, - "end": 2264, + "start": 2291, + "end": 2300, "loc": { "start": { - "line": 47, + "line": 48, "column": 32 }, "end": { - "line": 47, + "line": 48, "column": 41 } }, "elements": [ { "type": "NumericLiteral", - "start": 2256, - "end": 2257, + "start": 2292, + "end": 2293, "loc": { "start": { - "line": 47, + "line": 48, "column": 33 }, "end": { - "line": 47, + "line": 48, "column": 34 } }, @@ -3404,15 +3520,15 @@ }, { "type": "NumericLiteral", - "start": 2259, - "end": 2260, + "start": 2295, + "end": 2296, "loc": { "start": { - "line": 47, + "line": 48, "column": 36 }, "end": { - "line": 47, + "line": 48, "column": 37 } }, @@ -3424,15 +3540,15 @@ }, { "type": "NumericLiteral", - "start": 2262, - "end": 2263, + "start": 2298, + "end": 2299, "loc": { "start": { - "line": 47, + "line": 48, "column": 39 }, "end": { - "line": 47, + "line": 48, "column": 40 } }, @@ -3452,44 +3568,44 @@ }, { "type": "VariableDeclaration", - "start": 2267, - "end": 2313, + "start": 2303, + "end": 2349, "loc": { "start": { - "line": 48, + "line": 49, "column": 0 }, "end": { - "line": 48, + "line": 49, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2273, - "end": 2312, + "start": 2309, + "end": 2348, "loc": { "start": { - "line": 48, + "line": 49, "column": 6 }, "end": { - "line": 48, + "line": 49, "column": 45 } }, "id": { "type": "Identifier", - "start": 2273, - "end": 2289, + "start": 2309, + "end": 2325, "loc": { "start": { - "line": 48, + "line": 49, "column": 6 }, "end": { - "line": 48, + "line": 49, "column": 22 }, "identifierName": "DEFAULT_POSITION" @@ -3498,43 +3614,43 @@ }, "init": { "type": "CallExpression", - "start": 2292, - "end": 2312, + "start": 2328, + "end": 2348, "loc": { "start": { - "line": 48, + "line": 49, "column": 25 }, "end": { - "line": 48, + "line": 49, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 2292, - "end": 2301, + "start": 2328, + "end": 2337, "loc": { "start": { - "line": 48, + "line": 49, "column": 25 }, "end": { - "line": 48, + "line": 49, "column": 34 } }, "object": { "type": "Identifier", - "start": 2292, - "end": 2296, + "start": 2328, + "end": 2332, "loc": { "start": { - "line": 48, + "line": 49, "column": 25 }, "end": { - "line": 48, + "line": 49, "column": 29 }, "identifierName": "math" @@ -3543,15 +3659,15 @@ }, "property": { "type": "Identifier", - "start": 2297, - "end": 2301, + "start": 2333, + "end": 2337, "loc": { "start": { - "line": 48, + "line": 49, "column": 30 }, "end": { - "line": 48, + "line": 49, "column": 34 }, "identifierName": "vec3" @@ -3563,30 +3679,30 @@ "arguments": [ { "type": "ArrayExpression", - "start": 2302, - "end": 2311, + "start": 2338, + "end": 2347, "loc": { "start": { - "line": 48, + "line": 49, "column": 35 }, "end": { - "line": 48, + "line": 49, "column": 44 } }, "elements": [ { "type": "NumericLiteral", - "start": 2303, - "end": 2304, + "start": 2339, + "end": 2340, "loc": { "start": { - "line": 48, + "line": 49, "column": 36 }, "end": { - "line": 48, + "line": 49, "column": 37 } }, @@ -3598,15 +3714,15 @@ }, { "type": "NumericLiteral", - "start": 2306, - "end": 2307, + "start": 2342, + "end": 2343, "loc": { "start": { - "line": 48, + "line": 49, "column": 39 }, "end": { - "line": 48, + "line": 49, "column": 40 } }, @@ -3618,15 +3734,15 @@ }, { "type": "NumericLiteral", - "start": 2309, - "end": 2310, + "start": 2345, + "end": 2346, "loc": { "start": { - "line": 48, + "line": 49, "column": 42 }, "end": { - "line": 48, + "line": 49, "column": 43 } }, @@ -3646,44 +3762,44 @@ }, { "type": "VariableDeclaration", - "start": 2314, - "end": 2360, + "start": 2350, + "end": 2396, "loc": { "start": { - "line": 49, + "line": 50, "column": 0 }, "end": { - "line": 49, + "line": 50, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2320, - "end": 2359, + "start": 2356, + "end": 2395, "loc": { "start": { - "line": 49, + "line": 50, "column": 6 }, "end": { - "line": 49, + "line": 50, "column": 45 } }, "id": { "type": "Identifier", - "start": 2320, - "end": 2336, + "start": 2356, + "end": 2372, "loc": { "start": { - "line": 49, + "line": 50, "column": 6 }, "end": { - "line": 49, + "line": 50, "column": 22 }, "identifierName": "DEFAULT_ROTATION" @@ -3692,43 +3808,43 @@ }, "init": { "type": "CallExpression", - "start": 2339, - "end": 2359, + "start": 2375, + "end": 2395, "loc": { "start": { - "line": 49, + "line": 50, "column": 25 }, "end": { - "line": 49, + "line": 50, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 2339, - "end": 2348, + "start": 2375, + "end": 2384, "loc": { "start": { - "line": 49, + "line": 50, "column": 25 }, "end": { - "line": 49, + "line": 50, "column": 34 } }, "object": { "type": "Identifier", - "start": 2339, - "end": 2343, + "start": 2375, + "end": 2379, "loc": { "start": { - "line": 49, + "line": 50, "column": 25 }, "end": { - "line": 49, + "line": 50, "column": 29 }, "identifierName": "math" @@ -3737,15 +3853,15 @@ }, "property": { "type": "Identifier", - "start": 2344, - "end": 2348, + "start": 2380, + "end": 2384, "loc": { "start": { - "line": 49, + "line": 50, "column": 30 }, "end": { - "line": 49, + "line": 50, "column": 34 }, "identifierName": "vec3" @@ -3757,30 +3873,30 @@ "arguments": [ { "type": "ArrayExpression", - "start": 2349, - "end": 2358, + "start": 2385, + "end": 2394, "loc": { "start": { - "line": 49, + "line": 50, "column": 35 }, "end": { - "line": 49, + "line": 50, "column": 44 } }, "elements": [ { "type": "NumericLiteral", - "start": 2350, - "end": 2351, + "start": 2386, + "end": 2387, "loc": { "start": { - "line": 49, + "line": 50, "column": 36 }, "end": { - "line": 49, + "line": 50, "column": 37 } }, @@ -3792,15 +3908,15 @@ }, { "type": "NumericLiteral", - "start": 2353, - "end": 2354, + "start": 2389, + "end": 2390, "loc": { "start": { - "line": 49, + "line": 50, "column": 39 }, "end": { - "line": 49, + "line": 50, "column": 40 } }, @@ -3812,15 +3928,15 @@ }, { "type": "NumericLiteral", - "start": 2356, - "end": 2357, + "start": 2392, + "end": 2393, "loc": { "start": { - "line": 49, + "line": 50, "column": 42 }, "end": { - "line": 49, + "line": 50, "column": 43 } }, @@ -3840,44 +3956,44 @@ }, { "type": "VariableDeclaration", - "start": 2361, - "end": 2414, + "start": 2397, + "end": 2450, "loc": { "start": { - "line": 50, + "line": 51, "column": 0 }, "end": { - "line": 50, + "line": 51, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2367, - "end": 2413, + "start": 2403, + "end": 2449, "loc": { "start": { - "line": 50, + "line": 51, "column": 6 }, "end": { - "line": 50, + "line": 51, "column": 52 } }, "id": { "type": "Identifier", - "start": 2367, - "end": 2385, + "start": 2403, + "end": 2421, "loc": { "start": { - "line": 50, + "line": 51, "column": 6 }, "end": { - "line": 50, + "line": 51, "column": 24 }, "identifierName": "DEFAULT_QUATERNION" @@ -3886,43 +4002,43 @@ }, "init": { "type": "CallExpression", - "start": 2388, - "end": 2413, + "start": 2424, + "end": 2449, "loc": { "start": { - "line": 50, + "line": 51, "column": 27 }, "end": { - "line": 50, + "line": 51, "column": 52 } }, "callee": { "type": "MemberExpression", - "start": 2388, - "end": 2411, + "start": 2424, + "end": 2447, "loc": { "start": { - "line": 50, + "line": 51, "column": 27 }, "end": { - "line": 50, + "line": 51, "column": 50 } }, "object": { "type": "Identifier", - "start": 2388, - "end": 2392, + "start": 2424, + "end": 2428, "loc": { "start": { - "line": 50, + "line": 51, "column": 27 }, "end": { - "line": 50, + "line": 51, "column": 31 }, "identifierName": "math" @@ -3931,15 +4047,15 @@ }, "property": { "type": "Identifier", - "start": 2393, - "end": 2411, + "start": 2429, + "end": 2447, "loc": { "start": { - "line": 50, + "line": 51, "column": 32 }, "end": { - "line": 50, + "line": 51, "column": 50 }, "identifierName": "identityQuaternion" @@ -3956,44 +4072,44 @@ }, { "type": "VariableDeclaration", - "start": 2415, - "end": 2458, + "start": 2451, + "end": 2494, "loc": { "start": { - "line": 51, + "line": 52, "column": 0 }, "end": { - "line": 51, + "line": 52, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2421, - "end": 2457, + "start": 2457, + "end": 2493, "loc": { "start": { - "line": 51, + "line": 52, "column": 6 }, "end": { - "line": 51, + "line": 52, "column": 42 } }, "id": { "type": "Identifier", - "start": 2421, - "end": 2435, + "start": 2457, + "end": 2471, "loc": { "start": { - "line": 51, + "line": 52, "column": 6 }, "end": { - "line": 51, + "line": 52, "column": 20 }, "identifierName": "DEFAULT_MATRIX" @@ -4002,43 +4118,43 @@ }, "init": { "type": "CallExpression", - "start": 2438, - "end": 2457, + "start": 2474, + "end": 2493, "loc": { "start": { - "line": 51, + "line": 52, "column": 23 }, "end": { - "line": 51, + "line": 52, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 2438, - "end": 2455, + "start": 2474, + "end": 2491, "loc": { "start": { - "line": 51, + "line": 52, "column": 23 }, "end": { - "line": 51, + "line": 52, "column": 40 } }, "object": { "type": "Identifier", - "start": 2438, - "end": 2442, + "start": 2474, + "end": 2478, "loc": { "start": { - "line": 51, + "line": 52, "column": 23 }, "end": { - "line": 51, + "line": 52, "column": 27 }, "identifierName": "math" @@ -4047,15 +4163,15 @@ }, "property": { "type": "Identifier", - "start": 2443, - "end": 2455, + "start": 2479, + "end": 2491, "loc": { "start": { - "line": 51, + "line": 52, "column": 28 }, "end": { - "line": 51, + "line": 52, "column": 40 }, "identifierName": "identityMat4" @@ -4072,44 +4188,44 @@ }, { "type": "VariableDeclaration", - "start": 2460, - "end": 2515, + "start": 2496, + "end": 2551, "loc": { "start": { - "line": 53, + "line": 54, "column": 0 }, "end": { - "line": 53, + "line": 54, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2466, - "end": 2514, + "start": 2502, + "end": 2550, "loc": { "start": { - "line": 53, + "line": 54, "column": 6 }, "end": { - "line": 53, + "line": 54, "column": 54 } }, "id": { "type": "Identifier", - "start": 2466, - "end": 2490, + "start": 2502, + "end": 2526, "loc": { "start": { - "line": 53, + "line": 54, "column": 6 }, "end": { - "line": 53, + "line": 54, "column": 30 }, "identifierName": "DEFAULT_COLOR_TEXTURE_ID" @@ -4118,15 +4234,15 @@ }, "init": { "type": "StringLiteral", - "start": 2493, - "end": 2514, + "start": 2529, + "end": 2550, "loc": { "start": { - "line": 53, + "line": 54, "column": 33 }, "end": { - "line": 53, + "line": 54, "column": 54 } }, @@ -4142,44 +4258,44 @@ }, { "type": "VariableDeclaration", - "start": 2516, - "end": 2582, + "start": 2552, + "end": 2618, "loc": { "start": { - "line": 54, + "line": 55, "column": 0 }, "end": { - "line": 54, + "line": 55, "column": 66 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2522, - "end": 2581, + "start": 2558, + "end": 2617, "loc": { "start": { - "line": 54, + "line": 55, "column": 6 }, "end": { - "line": 54, + "line": 55, "column": 65 } }, "id": { "type": "Identifier", - "start": 2522, - "end": 2552, + "start": 2558, + "end": 2588, "loc": { "start": { - "line": 54, + "line": 55, "column": 6 }, "end": { - "line": 54, + "line": 55, "column": 36 }, "identifierName": "DEFAULT_METAL_ROUGH_TEXTURE_ID" @@ -4188,15 +4304,15 @@ }, "init": { "type": "StringLiteral", - "start": 2555, - "end": 2581, + "start": 2591, + "end": 2617, "loc": { "start": { - "line": 54, + "line": 55, "column": 39 }, "end": { - "line": 54, + "line": 55, "column": 65 } }, @@ -4212,44 +4328,44 @@ }, { "type": "VariableDeclaration", - "start": 2583, - "end": 2642, + "start": 2619, + "end": 2678, "loc": { "start": { - "line": 55, + "line": 56, "column": 0 }, "end": { - "line": 55, + "line": 56, "column": 59 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2589, - "end": 2641, + "start": 2625, + "end": 2677, "loc": { "start": { - "line": 55, + "line": 56, "column": 6 }, "end": { - "line": 55, + "line": 56, "column": 58 } }, "id": { "type": "Identifier", - "start": 2589, - "end": 2615, + "start": 2625, + "end": 2651, "loc": { "start": { - "line": 55, + "line": 56, "column": 6 }, "end": { - "line": 55, + "line": 56, "column": 32 }, "identifierName": "DEFAULT_NORMALS_TEXTURE_ID" @@ -4258,15 +4374,15 @@ }, "init": { "type": "StringLiteral", - "start": 2618, - "end": 2641, + "start": 2654, + "end": 2677, "loc": { "start": { - "line": 55, + "line": 56, "column": 35 }, "end": { - "line": 55, + "line": 56, "column": 58 } }, @@ -4282,44 +4398,44 @@ }, { "type": "VariableDeclaration", - "start": 2643, - "end": 2704, + "start": 2679, + "end": 2740, "loc": { "start": { - "line": 56, + "line": 57, "column": 0 }, "end": { - "line": 56, + "line": 57, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2649, - "end": 2703, + "start": 2685, + "end": 2739, "loc": { "start": { - "line": 56, + "line": 57, "column": 6 }, "end": { - "line": 56, + "line": 57, "column": 60 } }, "id": { "type": "Identifier", - "start": 2649, - "end": 2676, + "start": 2685, + "end": 2712, "loc": { "start": { - "line": 56, + "line": 57, "column": 6 }, "end": { - "line": 56, + "line": 57, "column": 33 }, "identifierName": "DEFAULT_EMISSIVE_TEXTURE_ID" @@ -4328,15 +4444,15 @@ }, "init": { "type": "StringLiteral", - "start": 2679, - "end": 2703, + "start": 2715, + "end": 2739, "loc": { "start": { - "line": 56, + "line": 57, "column": 36 }, "end": { - "line": 56, + "line": 57, "column": 60 } }, @@ -4352,44 +4468,44 @@ }, { "type": "VariableDeclaration", - "start": 2705, - "end": 2768, + "start": 2741, + "end": 2804, "loc": { "start": { - "line": 57, + "line": 58, "column": 0 }, "end": { - "line": 57, + "line": 58, "column": 63 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2711, - "end": 2767, + "start": 2747, + "end": 2803, "loc": { "start": { - "line": 57, + "line": 58, "column": 6 }, "end": { - "line": 57, + "line": 58, "column": 62 } }, "id": { "type": "Identifier", - "start": 2711, - "end": 2739, + "start": 2747, + "end": 2775, "loc": { "start": { - "line": 57, + "line": 58, "column": 6 }, "end": { - "line": 57, + "line": 58, "column": 34 }, "identifierName": "DEFAULT_OCCLUSION_TEXTURE_ID" @@ -4398,15 +4514,15 @@ }, "init": { "type": "StringLiteral", - "start": 2742, - "end": 2767, + "start": 2778, + "end": 2803, "loc": { "start": { - "line": 57, + "line": 58, "column": 37 }, "end": { - "line": 57, + "line": 58, "column": 62 } }, @@ -4422,44 +4538,44 @@ }, { "type": "VariableDeclaration", - "start": 2769, - "end": 2820, + "start": 2805, + "end": 2856, "loc": { "start": { - "line": 58, + "line": 59, "column": 0 }, "end": { - "line": 58, + "line": 59, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2775, - "end": 2819, + "start": 2811, + "end": 2855, "loc": { "start": { - "line": 58, + "line": 59, "column": 6 }, "end": { - "line": 58, + "line": 59, "column": 50 } }, "id": { "type": "Identifier", - "start": 2775, - "end": 2797, + "start": 2811, + "end": 2833, "loc": { "start": { - "line": 58, + "line": 59, "column": 6 }, "end": { - "line": 58, + "line": 59, "column": 28 }, "identifierName": "DEFAULT_TEXTURE_SET_ID" @@ -4468,15 +4584,15 @@ }, "init": { "type": "StringLiteral", - "start": 2800, - "end": 2819, + "start": 2836, + "end": 2855, "loc": { "start": { - "line": 58, + "line": 59, "column": 31 }, "end": { - "line": 58, + "line": 59, "column": 50 } }, @@ -4492,44 +4608,44 @@ }, { "type": "VariableDeclaration", - "start": 2822, - "end": 2885, + "start": 2858, + "end": 2921, "loc": { "start": { - "line": 60, + "line": 61, "column": 0 }, "end": { - "line": 60, + "line": 61, "column": 63 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2828, - "end": 2884, + "start": 2864, + "end": 2920, "loc": { "start": { - "line": 60, + "line": 61, "column": 6 }, "end": { - "line": 60, + "line": 61, "column": 62 } }, "id": { "type": "Identifier", - "start": 2828, - "end": 2850, + "start": 2864, + "end": 2886, "loc": { "start": { - "line": 60, + "line": 61, "column": 6 }, "end": { - "line": 60, + "line": 61, "column": 28 }, "identifierName": "defaultCompressedColor" @@ -4538,29 +4654,29 @@ }, "init": { "type": "NewExpression", - "start": 2853, - "end": 2884, + "start": 2889, + "end": 2920, "loc": { "start": { - "line": 60, + "line": 61, "column": 31 }, "end": { - "line": 60, + "line": 61, "column": 62 } }, "callee": { "type": "Identifier", - "start": 2857, - "end": 2867, + "start": 2893, + "end": 2903, "loc": { "start": { - "line": 60, + "line": 61, "column": 35 }, "end": { - "line": 60, + "line": 61, "column": 45 }, "identifierName": "Uint8Array" @@ -4570,30 +4686,30 @@ "arguments": [ { "type": "ArrayExpression", - "start": 2868, - "end": 2883, + "start": 2904, + "end": 2919, "loc": { "start": { - "line": 60, + "line": 61, "column": 46 }, "end": { - "line": 60, + "line": 61, "column": 61 } }, "elements": [ { "type": "NumericLiteral", - "start": 2869, - "end": 2872, + "start": 2905, + "end": 2908, "loc": { "start": { - "line": 60, + "line": 61, "column": 47 }, "end": { - "line": 60, + "line": 61, "column": 50 } }, @@ -4605,15 +4721,15 @@ }, { "type": "NumericLiteral", - "start": 2874, - "end": 2877, + "start": 2910, + "end": 2913, "loc": { "start": { - "line": 60, + "line": 61, "column": 52 }, "end": { - "line": 60, + "line": 61, "column": 55 } }, @@ -4625,15 +4741,15 @@ }, { "type": "NumericLiteral", - "start": 2879, - "end": 2882, + "start": 2915, + "end": 2918, "loc": { "start": { - "line": 60, + "line": 61, "column": 57 }, "end": { - "line": 60, + "line": 61, "column": 60 } }, @@ -4653,44 +4769,44 @@ }, { "type": "VariableDeclaration", - "start": 2887, - "end": 2911, + "start": 2923, + "end": 2947, "loc": { "start": { - "line": 62, + "line": 63, "column": 0 }, "end": { - "line": 62, + "line": 63, "column": 24 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2893, - "end": 2910, + "start": 2929, + "end": 2946, "loc": { "start": { - "line": 62, + "line": 63, "column": 6 }, "end": { - "line": 62, + "line": 63, "column": 23 } }, "id": { "type": "Identifier", - "start": 2893, - "end": 2906, + "start": 2929, + "end": 2942, "loc": { "start": { - "line": 62, + "line": 63, "column": 6 }, "end": { - "line": 62, + "line": 63, "column": 19 }, "identifierName": "VBO_INSTANCED" @@ -4699,15 +4815,15 @@ }, "init": { "type": "NumericLiteral", - "start": 2909, - "end": 2910, + "start": 2945, + "end": 2946, "loc": { "start": { - "line": 62, + "line": 63, "column": 22 }, "end": { - "line": 62, + "line": 63, "column": 23 } }, @@ -4723,44 +4839,44 @@ }, { "type": "VariableDeclaration", - "start": 2912, - "end": 2934, + "start": 2948, + "end": 2970, "loc": { "start": { - "line": 63, + "line": 64, "column": 0 }, "end": { - "line": 63, + "line": 64, "column": 22 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2918, - "end": 2933, + "start": 2954, + "end": 2969, "loc": { "start": { - "line": 63, + "line": 64, "column": 6 }, "end": { - "line": 63, + "line": 64, "column": 21 } }, "id": { "type": "Identifier", - "start": 2918, - "end": 2929, + "start": 2954, + "end": 2965, "loc": { "start": { - "line": 63, + "line": 64, "column": 6 }, "end": { - "line": 63, + "line": 64, "column": 17 }, "identifierName": "VBO_BATCHED" @@ -4769,15 +4885,15 @@ }, "init": { "type": "NumericLiteral", - "start": 2932, - "end": 2933, + "start": 2968, + "end": 2969, "loc": { "start": { - "line": 63, + "line": 64, "column": 20 }, "end": { - "line": 63, + "line": 64, "column": 21 } }, @@ -4793,44 +4909,44 @@ }, { "type": "VariableDeclaration", - "start": 2935, - "end": 2949, + "start": 2971, + "end": 2985, "loc": { "start": { - "line": 64, + "line": 65, "column": 0 }, "end": { - "line": 64, + "line": 65, "column": 14 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 2941, - "end": 2948, + "start": 2977, + "end": 2984, "loc": { "start": { - "line": 64, + "line": 65, "column": 6 }, "end": { - "line": 64, + "line": 65, "column": 13 } }, "id": { "type": "Identifier", - "start": 2941, - "end": 2944, + "start": 2977, + "end": 2980, "loc": { "start": { - "line": 64, + "line": 65, "column": 6 }, "end": { - "line": 64, + "line": 65, "column": 9 }, "identifierName": "DTX" @@ -4839,15 +4955,15 @@ }, "init": { "type": "NumericLiteral", - "start": 2947, - "end": 2948, + "start": 2983, + "end": 2984, "loc": { "start": { - "line": 64, + "line": 65, "column": 12 }, "end": { - "line": 64, + "line": 65, "column": 13 } }, @@ -4864,15 +4980,15 @@ { "type": "CommentBlock", "value": "*\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * Internally, SceneModel uses a combination of several different techniques to render and represent\n * the different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\n * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\n * serve to demonstrate how to use the capabilities of SceneModel programmatically.\n *\n * * [Loading building models into SceneModels](/examples/buildings)\n * * [Loading city models into SceneModels](/examples/cities)\n * * [Loading LiDAR scans into SceneModels](/examples/lidar)\n * * [Loading CAD models into SceneModels](/examples/cad)\n * * [SceneModel feature tests](/examples/scenemodel)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [SceneModel](#DataTextureSceneModel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates-for-double-precision)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## SceneModel\n *\n * ````SceneModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
\n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````SceneModel```` is an {@link Entity} that represents a model.\n * * A ````SceneModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````SceneModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a SceneModel representing a table\n * // with four legs, using geometry instancing\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the SceneModel\n * // We'll instance this geometry by five meshes\n *\n * sceneModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a SceneModel\n *\n * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````SceneModel````.\n *\n * Once finalized, we can't add anything more to our ````SceneModel````.\n *\n * ```` javascript\n * SceneModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````SceneModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````SceneModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a SceneModel representing a table with four legs, using geometry batching\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the SceneModel.\n *\n * SceneModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````SceneModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````SceneModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for Double Precision\n *\n * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## Positioning at World-space coordinates\n *\n * To position a SceneModel at given double-precision World coordinates, we can\n * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n * 3D World-space position at which the SceneModel will be located.\n *\n * Note that ````position```` is a single-precision offset relative to ````origin````.\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true,\n * origin: origin, // Everything in this SceneModel is relative to this RTC center\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * # Textures\n *\n * ## Loading KTX2 Texture Files into a SceneModel\n *\n * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\n * allow us to load textures into it from KTX2 buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\n * transcoder WASM module.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n *\n * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * });\n * ````\n *\n * @implements {Entity}\n ", - "start": 2951, - "end": 38769, + "start": 2987, + "end": 38805, "loc": { "start": { - "line": 66, + "line": 67, "column": 0 }, "end": { - "line": 1080, + "line": 1081, "column": 3 } } @@ -4881,15 +4997,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 38770, - "end": 158967, + "start": 38806, + "end": 159481, "loc": { "start": { - "line": 1081, + "line": 1082, "column": 0 }, "end": { - "line": 3956, + "line": 3964, "column": 1 } }, @@ -4897,29 +5013,29 @@ "source": null, "declaration": { "type": "ClassDeclaration", - "start": 38777, - "end": 158967, + "start": 38813, + "end": 159481, "loc": { "start": { - "line": 1081, + "line": 1082, "column": 7 }, "end": { - "line": 3956, + "line": 3964, "column": 1 } }, "id": { "type": "Identifier", - "start": 38783, - "end": 38793, + "start": 38819, + "end": 38829, "loc": { "start": { - "line": 1081, + "line": 1082, "column": 13 }, "end": { - "line": 1081, + "line": 1082, "column": 23 }, "identifierName": "SceneModel" @@ -4929,15 +5045,15 @@ }, "superClass": { "type": "Identifier", - "start": 38802, - "end": 38811, + "start": 38838, + "end": 38847, "loc": { "start": { - "line": 1081, + "line": 1082, "column": 32 }, "end": { - "line": 1081, + "line": 1082, "column": 41 }, "identifierName": "Component" @@ -4946,30 +5062,30 @@ }, "body": { "type": "ClassBody", - "start": 38812, - "end": 158967, + "start": 38848, + "end": 159481, "loc": { "start": { - "line": 1081, + "line": 1082, "column": 42 }, "end": { - "line": 3956, + "line": 3964, "column": 1 } }, "body": [ { "type": "ClassMethod", - "start": 43855, - "end": 49215, + "start": 43891, + "end": 49251, "loc": { "start": { - "line": 1126, + "line": 1127, "column": 4 }, "end": { - "line": 1303, + "line": 1304, "column": 5 } }, @@ -4977,15 +5093,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 43855, - "end": 43866, + "start": 43891, + "end": 43902, "loc": { "start": { - "line": 1126, + "line": 1127, "column": 4 }, "end": { - "line": 1126, + "line": 1127, "column": 15 }, "identifierName": "constructor" @@ -5001,15 +5117,15 @@ "params": [ { "type": "Identifier", - "start": 43867, - "end": 43872, + "start": 43903, + "end": 43908, "loc": { "start": { - "line": 1126, + "line": 1127, "column": 16 }, "end": { - "line": 1126, + "line": 1127, "column": 21 }, "identifierName": "owner" @@ -5018,29 +5134,29 @@ }, { "type": "AssignmentPattern", - "start": 43874, - "end": 43882, + "start": 43910, + "end": 43918, "loc": { "start": { - "line": 1126, + "line": 1127, "column": 23 }, "end": { - "line": 1126, + "line": 1127, "column": 31 } }, "left": { "type": "Identifier", - "start": 43874, - "end": 43877, + "start": 43910, + "end": 43913, "loc": { "start": { - "line": 1126, + "line": 1127, "column": 23 }, "end": { - "line": 1126, + "line": 1127, "column": 26 }, "identifierName": "cfg" @@ -5049,15 +5165,15 @@ }, "right": { "type": "ObjectExpression", - "start": 43880, - "end": 43882, + "start": 43916, + "end": 43918, "loc": { "start": { - "line": 1126, + "line": 1127, "column": 29 }, "end": { - "line": 1126, + "line": 1127, "column": 31 } }, @@ -5067,58 +5183,58 @@ ], "body": { "type": "BlockStatement", - "start": 43884, - "end": 49215, + "start": 43920, + "end": 49251, "loc": { "start": { - "line": 1126, + "line": 1127, "column": 33 }, "end": { - "line": 1303, + "line": 1304, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 43895, - "end": 43913, + "start": 43931, + "end": 43949, "loc": { "start": { - "line": 1128, + "line": 1129, "column": 8 }, "end": { - "line": 1128, + "line": 1129, "column": 26 } }, "expression": { "type": "CallExpression", - "start": 43895, - "end": 43912, + "start": 43931, + "end": 43948, "loc": { "start": { - "line": 1128, + "line": 1129, "column": 8 }, "end": { - "line": 1128, + "line": 1129, "column": 25 } }, "callee": { "type": "Super", - "start": 43895, - "end": 43900, + "start": 43931, + "end": 43936, "loc": { "start": { - "line": 1128, + "line": 1129, "column": 8 }, "end": { - "line": 1128, + "line": 1129, "column": 13 } } @@ -5126,15 +5242,15 @@ "arguments": [ { "type": "Identifier", - "start": 43901, - "end": 43906, + "start": 43937, + "end": 43942, "loc": { "start": { - "line": 1128, + "line": 1129, "column": 14 }, "end": { - "line": 1128, + "line": 1129, "column": 19 }, "identifierName": "owner" @@ -5143,15 +5259,15 @@ }, { "type": "Identifier", - "start": 43908, - "end": 43911, + "start": 43944, + "end": 43947, "loc": { "start": { - "line": 1128, + "line": 1129, "column": 21 }, "end": { - "line": 1128, + "line": 1129, "column": 24 }, "identifierName": "cfg" @@ -5163,73 +5279,73 @@ }, { "type": "ExpressionStatement", - "start": 43923, - "end": 43994, + "start": 43959, + "end": 44030, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 8 }, "end": { - "line": 1130, + "line": 1131, "column": 79 } }, "expression": { "type": "AssignmentExpression", - "start": 43923, - "end": 43993, + "start": 43959, + "end": 44029, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 8 }, "end": { - "line": 1130, + "line": 1131, "column": 78 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 43923, - "end": 43939, + "start": 43959, + "end": 43975, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 8 }, "end": { - "line": 1130, + "line": 1131, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 43923, - "end": 43927, + "start": 43959, + "end": 43963, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 8 }, "end": { - "line": 1130, + "line": 1131, "column": 12 } } }, "property": { "type": "Identifier", - "start": 43928, - "end": 43939, + "start": 43964, + "end": 43975, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 13 }, "end": { - "line": 1130, + "line": 1131, "column": 24 }, "identifierName": "_dtxEnabled" @@ -5240,72 +5356,72 @@ }, "right": { "type": "LogicalExpression", - "start": 43942, - "end": 43993, + "start": 43978, + "end": 44029, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 27 }, "end": { - "line": 1130, + "line": 1131, "column": 78 } }, "left": { "type": "MemberExpression", - "start": 43942, - "end": 43963, + "start": 43978, + "end": 43999, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 27 }, "end": { - "line": 1130, + "line": 1131, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 43942, - "end": 43952, + "start": 43978, + "end": 43988, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 27 }, "end": { - "line": 1130, + "line": 1131, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 43942, - "end": 43946, + "start": 43978, + "end": 43982, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 27 }, "end": { - "line": 1130, + "line": 1131, "column": 31 } } }, "property": { "type": "Identifier", - "start": 43947, - "end": 43952, + "start": 43983, + "end": 43988, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 32 }, "end": { - "line": 1130, + "line": 1131, "column": 37 }, "identifierName": "scene" @@ -5316,15 +5432,15 @@ }, "property": { "type": "Identifier", - "start": 43953, - "end": 43963, + "start": 43989, + "end": 43999, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 38 }, "end": { - "line": 1130, + "line": 1131, "column": 48 }, "identifierName": "dtxEnabled" @@ -5336,43 +5452,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 43968, - "end": 43992, + "start": 44004, + "end": 44028, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 53 }, "end": { - "line": 1130, + "line": 1131, "column": 77 } }, "left": { "type": "MemberExpression", - "start": 43968, - "end": 43982, + "start": 44004, + "end": 44018, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 53 }, "end": { - "line": 1130, + "line": 1131, "column": 67 } }, "object": { "type": "Identifier", - "start": 43968, - "end": 43971, + "start": 44004, + "end": 44007, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 53 }, "end": { - "line": 1130, + "line": 1131, "column": 56 }, "identifierName": "cfg" @@ -5381,15 +5497,15 @@ }, "property": { "type": "Identifier", - "start": 43972, - "end": 43982, + "start": 44008, + "end": 44018, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 57 }, "end": { - "line": 1130, + "line": 1131, "column": 67 }, "identifierName": "dtxEnabled" @@ -5401,15 +5517,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 43987, - "end": 43992, + "start": 44023, + "end": 44028, "loc": { "start": { - "line": 1130, + "line": 1131, "column": 72 }, "end": { - "line": 1130, + "line": 1131, "column": 77 } }, @@ -5417,7 +5533,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 43967 + "parenStart": 44003 } } } @@ -5425,73 +5541,73 @@ }, { "type": "ExpressionStatement", - "start": 44004, - "end": 44038, + "start": 44040, + "end": 44074, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 8 }, "end": { - "line": 1132, + "line": 1133, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 44004, - "end": 44037, + "start": 44040, + "end": 44073, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 8 }, "end": { - "line": 1132, + "line": 1133, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44004, - "end": 44029, + "start": 44040, + "end": 44065, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 8 }, "end": { - "line": 1132, + "line": 1133, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 44004, - "end": 44008, + "start": 44040, + "end": 44044, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 8 }, "end": { - "line": 1132, + "line": 1133, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44009, - "end": 44029, + "start": 44045, + "end": 44065, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 13 }, "end": { - "line": 1132, + "line": 1133, "column": 33 }, "identifierName": "_enableVertexWelding" @@ -5502,15 +5618,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 44032, - "end": 44037, + "start": 44068, + "end": 44073, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 36 }, "end": { - "line": 1132, + "line": 1133, "column": 41 } }, @@ -5521,15 +5637,15 @@ { "type": "CommentLine", "value": " Not needed for most objects, and very expensive, so disabled", - "start": 44039, - "end": 44102, + "start": 44075, + "end": 44138, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 43 }, "end": { - "line": 1132, + "line": 1133, "column": 106 } } @@ -5538,58 +5654,58 @@ }, { "type": "ExpressionStatement", - "start": 44111, - "end": 44146, + "start": 44147, + "end": 44182, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 8 }, "end": { - "line": 1133, + "line": 1134, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 44111, - "end": 44145, + "start": 44147, + "end": 44181, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 8 }, "end": { - "line": 1133, + "line": 1134, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44111, - "end": 44137, + "start": 44147, + "end": 44173, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 8 }, "end": { - "line": 1133, + "line": 1134, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 44111, - "end": 44115, + "start": 44147, + "end": 44151, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 8 }, "end": { - "line": 1133, + "line": 1134, "column": 12 } }, @@ -5597,15 +5713,15 @@ }, "property": { "type": "Identifier", - "start": 44116, - "end": 44137, + "start": 44152, + "end": 44173, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 13 }, "end": { - "line": 1133, + "line": 1134, "column": 34 }, "identifierName": "_enableIndexBucketing" @@ -5617,15 +5733,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 44140, - "end": 44145, + "start": 44176, + "end": 44181, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 37 }, "end": { - "line": 1133, + "line": 1134, "column": 42 } }, @@ -5637,15 +5753,15 @@ { "type": "CommentLine", "value": " Not needed for most objects, and very expensive, so disabled", - "start": 44039, - "end": 44102, + "start": 44075, + "end": 44138, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 43 }, "end": { - "line": 1132, + "line": 1133, "column": 106 } } @@ -5655,15 +5771,15 @@ { "type": "CommentLine", "value": " Until fixed: https://github.com/xeokit/xeokit-sdk/issues/1204", - "start": 44147, - "end": 44211, + "start": 44183, + "end": 44247, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 44 }, "end": { - "line": 1133, + "line": 1134, "column": 108 } } @@ -5672,58 +5788,58 @@ }, { "type": "ExpressionStatement", - "start": 44221, - "end": 44278, + "start": 44257, + "end": 44314, "loc": { "start": { - "line": 1135, + "line": 1136, "column": 8 }, "end": { - "line": 1135, + "line": 1136, "column": 65 } }, "expression": { "type": "AssignmentExpression", - "start": 44221, - "end": 44277, + "start": 44257, + "end": 44313, "loc": { "start": { - "line": 1135, + "line": 1136, "column": 8 }, "end": { - "line": 1135, + "line": 1136, "column": 64 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44221, - "end": 44256, + "start": 44257, + "end": 44292, "loc": { "start": { - "line": 1135, + "line": 1136, "column": 8 }, "end": { - "line": 1135, + "line": 1136, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 44221, - "end": 44225, + "start": 44257, + "end": 44261, "loc": { "start": { - "line": 1135, + "line": 1136, "column": 8 }, "end": { - "line": 1135, + "line": 1136, "column": 12 } }, @@ -5731,15 +5847,15 @@ }, "property": { "type": "Identifier", - "start": 44226, - "end": 44256, + "start": 44262, + "end": 44292, "loc": { "start": { - "line": 1135, + "line": 1136, "column": 13 }, "end": { - "line": 1135, + "line": 1136, "column": 43 }, "identifierName": "_vboBatchingLayerScratchMemory" @@ -5751,29 +5867,29 @@ }, "right": { "type": "CallExpression", - "start": 44259, - "end": 44277, + "start": 44295, + "end": 44313, "loc": { "start": { - "line": 1135, + "line": 1136, "column": 46 }, "end": { - "line": 1135, + "line": 1136, "column": 64 } }, "callee": { "type": "Identifier", - "start": 44259, - "end": 44275, + "start": 44295, + "end": 44311, "loc": { "start": { - "line": 1135, + "line": 1136, "column": 46 }, "end": { - "line": 1135, + "line": 1136, "column": 62 }, "identifierName": "getScratchMemory" @@ -5788,15 +5904,15 @@ { "type": "CommentLine", "value": " Until fixed: https://github.com/xeokit/xeokit-sdk/issues/1204", - "start": 44147, - "end": 44211, + "start": 44183, + "end": 44247, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 44 }, "end": { - "line": 1133, + "line": 1134, "column": 108 } } @@ -5805,73 +5921,73 @@ }, { "type": "ExpressionStatement", - "start": 44287, - "end": 44382, + "start": 44323, + "end": 44418, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 8 }, "end": { - "line": 1136, + "line": 1137, "column": 103 } }, "expression": { "type": "AssignmentExpression", - "start": 44287, - "end": 44381, + "start": 44323, + "end": 44417, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 8 }, "end": { - "line": 1136, + "line": 1137, "column": 102 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44287, - "end": 44310, + "start": 44323, + "end": 44346, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 8 }, "end": { - "line": 1136, + "line": 1137, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 44287, - "end": 44291, + "start": 44323, + "end": 44327, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 8 }, "end": { - "line": 1136, + "line": 1137, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44292, - "end": 44310, + "start": 44328, + "end": 44346, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 13 }, "end": { - "line": 1136, + "line": 1137, "column": 31 }, "identifierName": "_textureTranscoder" @@ -5882,43 +5998,43 @@ }, "right": { "type": "LogicalExpression", - "start": 44313, - "end": 44381, + "start": 44349, + "end": 44417, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 34 }, "end": { - "line": 1136, + "line": 1137, "column": 102 } }, "left": { "type": "MemberExpression", - "start": 44313, - "end": 44334, + "start": 44349, + "end": 44370, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 34 }, "end": { - "line": 1136, + "line": 1137, "column": 55 } }, "object": { "type": "Identifier", - "start": 44313, - "end": 44316, + "start": 44349, + "end": 44352, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 34 }, "end": { - "line": 1136, + "line": 1137, "column": 37 }, "identifierName": "cfg" @@ -5927,15 +6043,15 @@ }, "property": { "type": "Identifier", - "start": 44317, - "end": 44334, + "start": 44353, + "end": 44370, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 38 }, "end": { - "line": 1136, + "line": 1137, "column": 55 }, "identifierName": "textureTranscoder" @@ -5947,29 +6063,29 @@ "operator": "||", "right": { "type": "CallExpression", - "start": 44338, - "end": 44381, + "start": 44374, + "end": 44417, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 59 }, "end": { - "line": 1136, + "line": 1137, "column": 102 } }, "callee": { "type": "Identifier", - "start": 44338, - "end": 44362, + "start": 44374, + "end": 44398, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 59 }, "end": { - "line": 1136, + "line": 1137, "column": 83 }, "identifierName": "getKTX2TextureTranscoder" @@ -5979,58 +6095,58 @@ "arguments": [ { "type": "MemberExpression", - "start": 44363, - "end": 44380, + "start": 44399, + "end": 44416, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 84 }, "end": { - "line": 1136, + "line": 1137, "column": 101 } }, "object": { "type": "MemberExpression", - "start": 44363, - "end": 44373, + "start": 44399, + "end": 44409, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 84 }, "end": { - "line": 1136, + "line": 1137, "column": 94 } }, "object": { "type": "ThisExpression", - "start": 44363, - "end": 44367, + "start": 44399, + "end": 44403, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 84 }, "end": { - "line": 1136, + "line": 1137, "column": 88 } } }, "property": { "type": "Identifier", - "start": 44368, - "end": 44373, + "start": 44404, + "end": 44409, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 89 }, "end": { - "line": 1136, + "line": 1137, "column": 94 }, "identifierName": "scene" @@ -6041,15 +6157,15 @@ }, "property": { "type": "Identifier", - "start": 44374, - "end": 44380, + "start": 44410, + "end": 44416, "loc": { "start": { - "line": 1136, + "line": 1137, "column": 95 }, "end": { - "line": 1136, + "line": 1137, "column": 101 }, "identifierName": "viewer" @@ -6065,73 +6181,73 @@ }, { "type": "ExpressionStatement", - "start": 44392, - "end": 44446, + "start": 44428, + "end": 44482, "loc": { "start": { - "line": 1138, + "line": 1139, "column": 8 }, "end": { - "line": 1138, + "line": 1139, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 44392, - "end": 44445, + "start": 44428, + "end": 44481, "loc": { "start": { - "line": 1138, + "line": 1139, "column": 8 }, "end": { - "line": 1138, + "line": 1139, "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44392, - "end": 44418, + "start": 44428, + "end": 44454, "loc": { "start": { - "line": 1138, + "line": 1139, "column": 8 }, "end": { - "line": 1138, + "line": 1139, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 44392, - "end": 44396, + "start": 44428, + "end": 44432, "loc": { "start": { - "line": 1138, + "line": 1139, "column": 8 }, "end": { - "line": 1138, + "line": 1139, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44397, - "end": 44418, + "start": 44433, + "end": 44454, "loc": { "start": { - "line": 1138, + "line": 1139, "column": 13 }, "end": { - "line": 1138, + "line": 1139, "column": 34 }, "identifierName": "_maxGeometryBatchSize" @@ -6142,29 +6258,29 @@ }, "right": { "type": "MemberExpression", - "start": 44421, - "end": 44445, + "start": 44457, + "end": 44481, "loc": { "start": { - "line": 1138, + "line": 1139, "column": 37 }, "end": { - "line": 1138, + "line": 1139, "column": 61 } }, "object": { "type": "Identifier", - "start": 44421, - "end": 44424, + "start": 44457, + "end": 44460, "loc": { "start": { - "line": 1138, + "line": 1139, "column": 37 }, "end": { - "line": 1138, + "line": 1139, "column": 40 }, "identifierName": "cfg" @@ -6173,15 +6289,15 @@ }, "property": { "type": "Identifier", - "start": 44425, - "end": 44445, + "start": 44461, + "end": 44481, "loc": { "start": { - "line": 1138, + "line": 1139, "column": 41 }, "end": { - "line": 1138, + "line": 1139, "column": 61 }, "identifierName": "maxGeometryBatchSize" @@ -6194,73 +6310,73 @@ }, { "type": "ExpressionStatement", - "start": 44456, - "end": 44490, + "start": 44492, + "end": 44526, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 8 }, "end": { - "line": 1140, + "line": 1141, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 44456, - "end": 44489, + "start": 44492, + "end": 44525, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 8 }, "end": { - "line": 1140, + "line": 1141, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44456, - "end": 44466, + "start": 44492, + "end": 44502, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 8 }, "end": { - "line": 1140, + "line": 1141, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 44456, - "end": 44460, + "start": 44492, + "end": 44496, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 8 }, "end": { - "line": 1140, + "line": 1141, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44461, - "end": 44466, + "start": 44497, + "end": 44502, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 13 }, "end": { - "line": 1140, + "line": 1141, "column": 18 }, "identifierName": "_aabb" @@ -6271,43 +6387,43 @@ }, "right": { "type": "CallExpression", - "start": 44469, - "end": 44489, + "start": 44505, + "end": 44525, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 21 }, "end": { - "line": 1140, + "line": 1141, "column": 41 } }, "callee": { "type": "MemberExpression", - "start": 44469, - "end": 44487, + "start": 44505, + "end": 44523, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 21 }, "end": { - "line": 1140, + "line": 1141, "column": 39 } }, "object": { "type": "Identifier", - "start": 44469, - "end": 44473, + "start": 44505, + "end": 44509, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 21 }, "end": { - "line": 1140, + "line": 1141, "column": 25 }, "identifierName": "math" @@ -6316,15 +6432,15 @@ }, "property": { "type": "Identifier", - "start": 44474, - "end": 44487, + "start": 44510, + "end": 44523, "loc": { "start": { - "line": 1140, + "line": 1141, "column": 26 }, "end": { - "line": 1140, + "line": 1141, "column": 39 }, "identifierName": "collapseAABB3" @@ -6339,73 +6455,73 @@ }, { "type": "ExpressionStatement", - "start": 44499, - "end": 44522, + "start": 44535, + "end": 44558, "loc": { "start": { - "line": 1141, + "line": 1142, "column": 8 }, "end": { - "line": 1141, + "line": 1142, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 44499, - "end": 44521, + "start": 44535, + "end": 44557, "loc": { "start": { - "line": 1141, + "line": 1142, "column": 8 }, "end": { - "line": 1141, + "line": 1142, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44499, - "end": 44514, + "start": 44535, + "end": 44550, "loc": { "start": { - "line": 1141, + "line": 1142, "column": 8 }, "end": { - "line": 1141, + "line": 1142, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 44499, - "end": 44503, + "start": 44535, + "end": 44539, "loc": { "start": { - "line": 1141, + "line": 1142, "column": 8 }, "end": { - "line": 1141, + "line": 1142, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44504, - "end": 44514, + "start": 44540, + "end": 44550, "loc": { "start": { - "line": 1141, + "line": 1142, "column": 13 }, "end": { - "line": 1141, + "line": 1142, "column": 23 }, "identifierName": "_aabbDirty" @@ -6416,15 +6532,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 44517, - "end": 44521, + "start": 44553, + "end": 44557, "loc": { "start": { - "line": 1141, + "line": 1142, "column": 26 }, "end": { - "line": 1141, + "line": 1142, "column": 30 } }, @@ -6434,73 +6550,73 @@ }, { "type": "ExpressionStatement", - "start": 44532, - "end": 44562, + "start": 44568, + "end": 44598, "loc": { "start": { - "line": 1143, + "line": 1144, "column": 8 }, "end": { - "line": 1143, + "line": 1144, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 44532, - "end": 44561, + "start": 44568, + "end": 44597, "loc": { "start": { - "line": 1143, + "line": 1144, "column": 8 }, "end": { - "line": 1143, + "line": 1144, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44532, - "end": 44556, + "start": 44568, + "end": 44592, "loc": { "start": { - "line": 1143, + "line": 1144, "column": 8 }, "end": { - "line": 1143, + "line": 1144, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 44532, - "end": 44536, + "start": 44568, + "end": 44572, "loc": { "start": { - "line": 1143, + "line": 1144, "column": 8 }, "end": { - "line": 1143, + "line": 1144, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44537, - "end": 44556, + "start": 44573, + "end": 44592, "loc": { "start": { - "line": 1143, + "line": 1144, "column": 13 }, "end": { - "line": 1143, + "line": 1144, "column": 32 }, "identifierName": "_quantizationRanges" @@ -6511,15 +6627,15 @@ }, "right": { "type": "ObjectExpression", - "start": 44559, - "end": 44561, + "start": 44595, + "end": 44597, "loc": { "start": { - "line": 1143, + "line": 1144, "column": 35 }, "end": { - "line": 1143, + "line": 1144, "column": 37 } }, @@ -6529,73 +6645,73 @@ }, { "type": "ExpressionStatement", - "start": 44572, - "end": 44603, + "start": 44608, + "end": 44639, "loc": { "start": { - "line": 1145, + "line": 1146, "column": 8 }, "end": { - "line": 1145, + "line": 1146, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 44572, - "end": 44602, + "start": 44608, + "end": 44638, "loc": { "start": { - "line": 1145, + "line": 1146, "column": 8 }, "end": { - "line": 1145, + "line": 1146, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44572, - "end": 44597, + "start": 44608, + "end": 44633, "loc": { "start": { - "line": 1145, + "line": 1146, "column": 8 }, "end": { - "line": 1145, + "line": 1146, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 44572, - "end": 44576, + "start": 44608, + "end": 44612, "loc": { "start": { - "line": 1145, + "line": 1146, "column": 8 }, "end": { - "line": 1145, + "line": 1146, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44577, - "end": 44597, + "start": 44613, + "end": 44633, "loc": { "start": { - "line": 1145, + "line": 1146, "column": 13 }, "end": { - "line": 1145, + "line": 1146, "column": 33 }, "identifierName": "_vboInstancingLayers" @@ -6606,15 +6722,15 @@ }, "right": { "type": "ObjectExpression", - "start": 44600, - "end": 44602, + "start": 44636, + "end": 44638, "loc": { "start": { - "line": 1145, + "line": 1146, "column": 36 }, "end": { - "line": 1145, + "line": 1146, "column": 38 } }, @@ -6624,73 +6740,73 @@ }, { "type": "ExpressionStatement", - "start": 44612, - "end": 44641, + "start": 44648, + "end": 44677, "loc": { "start": { - "line": 1146, + "line": 1147, "column": 8 }, "end": { - "line": 1146, + "line": 1147, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 44612, - "end": 44640, + "start": 44648, + "end": 44676, "loc": { "start": { - "line": 1146, + "line": 1147, "column": 8 }, "end": { - "line": 1146, + "line": 1147, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44612, - "end": 44635, + "start": 44648, + "end": 44671, "loc": { "start": { - "line": 1146, + "line": 1147, "column": 8 }, "end": { - "line": 1146, + "line": 1147, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 44612, - "end": 44616, + "start": 44648, + "end": 44652, "loc": { "start": { - "line": 1146, + "line": 1147, "column": 8 }, "end": { - "line": 1146, + "line": 1147, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44617, - "end": 44635, + "start": 44653, + "end": 44671, "loc": { "start": { - "line": 1146, + "line": 1147, "column": 13 }, "end": { - "line": 1146, + "line": 1147, "column": 31 }, "identifierName": "_vboBatchingLayers" @@ -6701,15 +6817,15 @@ }, "right": { "type": "ObjectExpression", - "start": 44638, - "end": 44640, + "start": 44674, + "end": 44676, "loc": { "start": { - "line": 1146, + "line": 1147, "column": 34 }, "end": { - "line": 1146, + "line": 1147, "column": 36 } }, @@ -6719,73 +6835,73 @@ }, { "type": "ExpressionStatement", - "start": 44650, - "end": 44671, + "start": 44686, + "end": 44707, "loc": { "start": { - "line": 1147, + "line": 1148, "column": 8 }, "end": { - "line": 1147, + "line": 1148, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 44650, - "end": 44670, + "start": 44686, + "end": 44706, "loc": { "start": { - "line": 1147, + "line": 1148, "column": 8 }, "end": { - "line": 1147, + "line": 1148, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44650, - "end": 44665, + "start": 44686, + "end": 44701, "loc": { "start": { - "line": 1147, + "line": 1148, "column": 8 }, "end": { - "line": 1147, + "line": 1148, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 44650, - "end": 44654, + "start": 44686, + "end": 44690, "loc": { "start": { - "line": 1147, + "line": 1148, "column": 8 }, "end": { - "line": 1147, + "line": 1148, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44655, - "end": 44665, + "start": 44691, + "end": 44701, "loc": { "start": { - "line": 1147, + "line": 1148, "column": 13 }, "end": { - "line": 1147, + "line": 1148, "column": 23 }, "identifierName": "_dtxLayers" @@ -6796,15 +6912,15 @@ }, "right": { "type": "ObjectExpression", - "start": 44668, - "end": 44670, + "start": 44704, + "end": 44706, "loc": { "start": { - "line": 1147, + "line": 1148, "column": 26 }, "end": { - "line": 1147, + "line": 1148, "column": 28 } }, @@ -6814,73 +6930,73 @@ }, { "type": "ExpressionStatement", - "start": 44681, - "end": 44701, + "start": 44717, + "end": 44737, "loc": { "start": { - "line": 1149, + "line": 1150, "column": 8 }, "end": { - "line": 1149, + "line": 1150, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 44681, - "end": 44700, + "start": 44717, + "end": 44736, "loc": { "start": { - "line": 1149, + "line": 1150, "column": 8 }, "end": { - "line": 1149, + "line": 1150, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44681, - "end": 44695, + "start": 44717, + "end": 44731, "loc": { "start": { - "line": 1149, + "line": 1150, "column": 8 }, "end": { - "line": 1149, + "line": 1150, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 44681, - "end": 44685, + "start": 44717, + "end": 44721, "loc": { "start": { - "line": 1149, + "line": 1150, "column": 8 }, "end": { - "line": 1149, + "line": 1150, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44686, - "end": 44695, + "start": 44722, + "end": 44731, "loc": { "start": { - "line": 1149, + "line": 1150, "column": 13 }, "end": { - "line": 1149, + "line": 1150, "column": 22 }, "identifierName": "_meshList" @@ -6891,15 +7007,15 @@ }, "right": { "type": "ArrayExpression", - "start": 44698, - "end": 44700, + "start": 44734, + "end": 44736, "loc": { "start": { - "line": 1149, + "line": 1150, "column": 25 }, "end": { - "line": 1149, + "line": 1150, "column": 27 } }, @@ -6909,73 +7025,73 @@ }, { "type": "ExpressionStatement", - "start": 44711, - "end": 44731, + "start": 44747, + "end": 44767, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 8 }, "end": { - "line": 1151, + "line": 1152, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 44711, - "end": 44730, + "start": 44747, + "end": 44766, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 8 }, "end": { - "line": 1151, + "line": 1152, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44711, - "end": 44725, + "start": 44747, + "end": 44761, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 8 }, "end": { - "line": 1151, + "line": 1152, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 44711, - "end": 44715, + "start": 44747, + "end": 44751, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 8 }, "end": { - "line": 1151, + "line": 1152, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44716, - "end": 44725, + "start": 44752, + "end": 44761, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 13 }, "end": { - "line": 1151, + "line": 1152, "column": 22 }, "identifierName": "layerList" @@ -6986,15 +7102,15 @@ }, "right": { "type": "ArrayExpression", - "start": 44728, - "end": 44730, + "start": 44764, + "end": 44766, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 25 }, "end": { - "line": 1151, + "line": 1152, "column": 27 } }, @@ -7005,15 +7121,15 @@ { "type": "CommentLine", "value": " For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second", - "start": 44732, - "end": 44837, + "start": 44768, + "end": 44873, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 29 }, "end": { - "line": 1151, + "line": 1152, "column": 134 } } @@ -7022,58 +7138,58 @@ }, { "type": "ExpressionStatement", - "start": 44846, - "end": 44868, + "start": 44882, + "end": 44904, "loc": { "start": { - "line": 1152, + "line": 1153, "column": 8 }, "end": { - "line": 1152, + "line": 1153, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 44846, - "end": 44867, + "start": 44882, + "end": 44903, "loc": { "start": { - "line": 1152, + "line": 1153, "column": 8 }, "end": { - "line": 1152, + "line": 1153, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44846, - "end": 44862, + "start": 44882, + "end": 44898, "loc": { "start": { - "line": 1152, + "line": 1153, "column": 8 }, "end": { - "line": 1152, + "line": 1153, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 44846, - "end": 44850, + "start": 44882, + "end": 44886, "loc": { "start": { - "line": 1152, + "line": 1153, "column": 8 }, "end": { - "line": 1152, + "line": 1153, "column": 12 } }, @@ -7081,15 +7197,15 @@ }, "property": { "type": "Identifier", - "start": 44851, - "end": 44862, + "start": 44887, + "end": 44898, "loc": { "start": { - "line": 1152, + "line": 1153, "column": 13 }, "end": { - "line": 1152, + "line": 1153, "column": 24 }, "identifierName": "_entityList" @@ -7101,15 +7217,15 @@ }, "right": { "type": "ArrayExpression", - "start": 44865, - "end": 44867, + "start": 44901, + "end": 44903, "loc": { "start": { - "line": 1152, + "line": 1153, "column": 27 }, "end": { - "line": 1152, + "line": 1153, "column": 29 } }, @@ -7121,15 +7237,15 @@ { "type": "CommentLine", "value": " For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second", - "start": 44732, - "end": 44837, + "start": 44768, + "end": 44873, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 29 }, "end": { - "line": 1151, + "line": 1152, "column": 134 } } @@ -7138,103 +7254,8 @@ }, { "type": "ExpressionStatement", - "start": 44878, - "end": 44900, - "loc": { - "start": { - "line": 1154, - "column": 8 - }, - "end": { - "line": 1154, - "column": 30 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 44878, - "end": 44899, - "loc": { - "start": { - "line": 1154, - "column": 8 - }, - "end": { - "line": 1154, - "column": 29 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 44878, - "end": 44894, - "loc": { - "start": { - "line": 1154, - "column": 8 - }, - "end": { - "line": 1154, - "column": 24 - } - }, - "object": { - "type": "ThisExpression", - "start": 44878, - "end": 44882, - "loc": { - "start": { - "line": 1154, - "column": 8 - }, - "end": { - "line": 1154, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 44883, - "end": 44894, - "loc": { - "start": { - "line": 1154, - "column": 13 - }, - "end": { - "line": 1154, - "column": 24 - }, - "identifierName": "_geometries" - }, - "name": "_geometries" - }, - "computed": false - }, - "right": { - "type": "ObjectExpression", - "start": 44897, - "end": 44899, - "loc": { - "start": { - "line": 1154, - "column": 27 - }, - "end": { - "line": 1154, - "column": 29 - } - }, - "properties": [] - } - } - }, - { - "type": "ExpressionStatement", - "start": 44909, - "end": 44931, + "start": 44914, + "end": 44936, "loc": { "start": { "line": 1155, @@ -7247,8 +7268,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 44909, - "end": 44930, + "start": 44914, + "end": 44935, "loc": { "start": { "line": 1155, @@ -7262,8 +7283,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 44909, - "end": 44925, + "start": 44914, + "end": 44930, "loc": { "start": { "line": 1155, @@ -7276,8 +7297,8 @@ }, "object": { "type": "ThisExpression", - "start": 44909, - "end": 44913, + "start": 44914, + "end": 44918, "loc": { "start": { "line": 1155, @@ -7291,8 +7312,8 @@ }, "property": { "type": "Identifier", - "start": 44914, - "end": 44925, + "start": 44919, + "end": 44930, "loc": { "start": { "line": 1155, @@ -7302,16 +7323,16 @@ "line": 1155, "column": 24 }, - "identifierName": "_dtxBuckets" + "identifierName": "_geometries" }, - "name": "_dtxBuckets" + "name": "_geometries" }, "computed": false }, "right": { "type": "ObjectExpression", - "start": 44928, - "end": 44930, + "start": 44933, + "end": 44935, "loc": { "start": { "line": 1155, @@ -7324,30 +7345,12 @@ }, "properties": [] } - }, - "trailingComments": [ - { - "type": "CommentLine", - "value": " Geometries with optimizations used for data texture representation", - "start": 44932, - "end": 45001, - "loc": { - "start": { - "line": 1155, - "column": 31 - }, - "end": { - "line": 1155, - "column": 100 - } - } - } - ] + } }, { "type": "ExpressionStatement", - "start": 45010, - "end": 45030, + "start": 44945, + "end": 44967, "loc": { "start": { "line": 1156, @@ -7355,13 +7358,13 @@ }, "end": { "line": 1156, - "column": 28 + "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 45010, - "end": 45029, + "start": 44945, + "end": 44966, "loc": { "start": { "line": 1156, @@ -7369,14 +7372,14 @@ }, "end": { "line": 1156, - "column": 27 + "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45010, - "end": 45024, + "start": 44945, + "end": 44961, "loc": { "start": { "line": 1156, @@ -7384,13 +7387,13 @@ }, "end": { "line": 1156, - "column": 22 + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 45010, - "end": 45014, + "start": 44945, + "end": 44949, "loc": { "start": { "line": 1156, @@ -7400,13 +7403,12 @@ "line": 1156, "column": 12 } - }, - "leadingComments": null + } }, "property": { "type": "Identifier", - "start": 45015, - "end": 45024, + "start": 44950, + "end": 44961, "loc": { "start": { "line": 1156, @@ -7414,46 +7416,44 @@ }, "end": { "line": 1156, - "column": 22 + "column": 24 }, - "identifierName": "_textures" + "identifierName": "_dtxBuckets" }, - "name": "_textures" + "name": "_dtxBuckets" }, - "computed": false, - "leadingComments": null + "computed": false }, "right": { "type": "ObjectExpression", - "start": 45027, - "end": 45029, + "start": 44964, + "end": 44966, "loc": { "start": { "line": 1156, - "column": 25 + "column": 27 }, "end": { "line": 1156, - "column": 27 + "column": 29 } }, "properties": [] - }, - "leadingComments": null + } }, - "leadingComments": [ + "trailingComments": [ { "type": "CommentLine", "value": " Geometries with optimizations used for data texture representation", - "start": 44932, - "end": 45001, + "start": 44968, + "end": 45037, "loc": { "start": { - "line": 1155, + "line": 1156, "column": 31 }, "end": { - "line": 1155, + "line": 1156, "column": 100 } } @@ -7462,8 +7462,8 @@ }, { "type": "ExpressionStatement", - "start": 45039, - "end": 45062, + "start": 45046, + "end": 45066, "loc": { "start": { "line": 1157, @@ -7471,13 +7471,13 @@ }, "end": { "line": 1157, - "column": 31 + "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 45039, - "end": 45061, + "start": 45046, + "end": 45065, "loc": { "start": { "line": 1157, @@ -7485,14 +7485,14 @@ }, "end": { "line": 1157, - "column": 30 + "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45039, - "end": 45056, + "start": 45046, + "end": 45060, "loc": { "start": { "line": 1157, @@ -7500,13 +7500,13 @@ }, "end": { "line": 1157, - "column": 25 + "column": 22 } }, "object": { "type": "ThisExpression", - "start": 45039, - "end": 45043, + "start": 45046, + "end": 45050, "loc": { "start": { "line": 1157, @@ -7516,12 +7516,13 @@ "line": 1157, "column": 12 } - } + }, + "leadingComments": null }, "property": { "type": "Identifier", - "start": 45044, - "end": 45056, + "start": 45051, + "end": 45060, "loc": { "start": { "line": 1157, @@ -7529,36 +7530,56 @@ }, "end": { "line": 1157, - "column": 25 + "column": 22 }, - "identifierName": "_textureSets" + "identifierName": "_textures" }, - "name": "_textureSets" + "name": "_textures" }, - "computed": false + "computed": false, + "leadingComments": null }, "right": { "type": "ObjectExpression", - "start": 45059, - "end": 45061, + "start": 45063, + "end": 45065, "loc": { "start": { "line": 1157, - "column": 28 + "column": 25 }, "end": { "line": 1157, - "column": 30 + "column": 27 } }, "properties": [] + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Geometries with optimizations used for data texture representation", + "start": 44968, + "end": 45037, + "loc": { + "start": { + "line": 1156, + "column": 31 + }, + "end": { + "line": 1156, + "column": 100 + } + } } - } + ] }, { "type": "ExpressionStatement", - "start": 45071, - "end": 45093, + "start": 45075, + "end": 45098, "loc": { "start": { "line": 1158, @@ -7566,13 +7587,13 @@ }, "end": { "line": 1158, - "column": 30 + "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 45071, - "end": 45092, + "start": 45075, + "end": 45097, "loc": { "start": { "line": 1158, @@ -7580,14 +7601,14 @@ }, "end": { "line": 1158, - "column": 29 + "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45071, - "end": 45087, + "start": 45075, + "end": 45092, "loc": { "start": { "line": 1158, @@ -7595,13 +7616,13 @@ }, "end": { "line": 1158, - "column": 24 + "column": 25 } }, "object": { "type": "ThisExpression", - "start": 45071, - "end": 45075, + "start": 45075, + "end": 45079, "loc": { "start": { "line": 1158, @@ -7615,8 +7636,8 @@ }, "property": { "type": "Identifier", - "start": 45076, - "end": 45087, + "start": 45080, + "end": 45092, "loc": { "start": { "line": 1158, @@ -7624,26 +7645,26 @@ }, "end": { "line": 1158, - "column": 24 + "column": 25 }, - "identifierName": "_transforms" + "identifierName": "_textureSets" }, - "name": "_transforms" + "name": "_textureSets" }, "computed": false }, "right": { "type": "ObjectExpression", - "start": 45090, - "end": 45092, + "start": 45095, + "end": 45097, "loc": { "start": { "line": 1158, - "column": 27 + "column": 28 }, "end": { "line": 1158, - "column": 29 + "column": 30 } }, "properties": [] @@ -7652,8 +7673,8 @@ }, { "type": "ExpressionStatement", - "start": 45102, - "end": 45120, + "start": 45107, + "end": 45129, "loc": { "start": { "line": 1159, @@ -7661,13 +7682,13 @@ }, "end": { "line": 1159, - "column": 26 + "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 45102, - "end": 45119, + "start": 45107, + "end": 45128, "loc": { "start": { "line": 1159, @@ -7675,14 +7696,14 @@ }, "end": { "line": 1159, - "column": 25 + "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45102, - "end": 45114, + "start": 45107, + "end": 45123, "loc": { "start": { "line": 1159, @@ -7690,13 +7711,13 @@ }, "end": { "line": 1159, - "column": 20 + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 45102, - "end": 45106, + "start": 45107, + "end": 45111, "loc": { "start": { "line": 1159, @@ -7710,8 +7731,8 @@ }, "property": { "type": "Identifier", - "start": 45107, - "end": 45114, + "start": 45112, + "end": 45123, "loc": { "start": { "line": 1159, @@ -7719,26 +7740,26 @@ }, "end": { "line": 1159, - "column": 20 + "column": 24 }, - "identifierName": "_meshes" + "identifierName": "_transforms" }, - "name": "_meshes" + "name": "_transforms" }, "computed": false }, "right": { "type": "ObjectExpression", - "start": 45117, - "end": 45119, + "start": 45126, + "end": 45128, "loc": { "start": { "line": 1159, - "column": 23 + "column": 27 }, "end": { "line": 1159, - "column": 25 + "column": 29 } }, "properties": [] @@ -7747,8 +7768,8 @@ }, { "type": "ExpressionStatement", - "start": 45129, - "end": 45153, + "start": 45138, + "end": 45156, "loc": { "start": { "line": 1160, @@ -7756,13 +7777,13 @@ }, "end": { "line": 1160, - "column": 32 + "column": 26 } }, "expression": { "type": "AssignmentExpression", - "start": 45129, - "end": 45152, + "start": 45138, + "end": 45155, "loc": { "start": { "line": 1160, @@ -7770,14 +7791,14 @@ }, "end": { "line": 1160, - "column": 31 + "column": 25 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45129, - "end": 45147, + "start": 45138, + "end": 45150, "loc": { "start": { "line": 1160, @@ -7785,13 +7806,13 @@ }, "end": { "line": 1160, - "column": 26 + "column": 20 } }, "object": { "type": "ThisExpression", - "start": 45129, - "end": 45133, + "start": 45138, + "end": 45142, "loc": { "start": { "line": 1160, @@ -7805,8 +7826,8 @@ }, "property": { "type": "Identifier", - "start": 45134, - "end": 45147, + "start": 45143, + "end": 45150, "loc": { "start": { "line": 1160, @@ -7814,26 +7835,26 @@ }, "end": { "line": 1160, - "column": 26 + "column": 20 }, - "identifierName": "_unusedMeshes" + "identifierName": "_meshes" }, - "name": "_unusedMeshes" + "name": "_meshes" }, "computed": false }, "right": { "type": "ObjectExpression", - "start": 45150, - "end": 45152, + "start": 45153, + "end": 45155, "loc": { "start": { "line": 1160, - "column": 29 + "column": 23 }, "end": { "line": 1160, - "column": 31 + "column": 25 } }, "properties": [] @@ -7842,8 +7863,8 @@ }, { "type": "ExpressionStatement", - "start": 45162, - "end": 45182, + "start": 45165, + "end": 45189, "loc": { "start": { "line": 1161, @@ -7851,13 +7872,13 @@ }, "end": { "line": 1161, - "column": 28 + "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 45162, - "end": 45181, + "start": 45165, + "end": 45188, "loc": { "start": { "line": 1161, @@ -7865,14 +7886,14 @@ }, "end": { "line": 1161, - "column": 27 + "column": 31 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45162, - "end": 45176, + "start": 45165, + "end": 45183, "loc": { "start": { "line": 1161, @@ -7880,13 +7901,13 @@ }, "end": { "line": 1161, - "column": 22 + "column": 26 } }, "object": { "type": "ThisExpression", - "start": 45162, - "end": 45166, + "start": 45165, + "end": 45169, "loc": { "start": { "line": 1161, @@ -7900,8 +7921,8 @@ }, "property": { "type": "Identifier", - "start": 45167, - "end": 45176, + "start": 45170, + "end": 45183, "loc": { "start": { "line": 1161, @@ -7909,6 +7930,101 @@ }, "end": { "line": 1161, + "column": 26 + }, + "identifierName": "_unusedMeshes" + }, + "name": "_unusedMeshes" + }, + "computed": false + }, + "right": { + "type": "ObjectExpression", + "start": 45186, + "end": 45188, + "loc": { + "start": { + "line": 1161, + "column": 29 + }, + "end": { + "line": 1161, + "column": 31 + } + }, + "properties": [] + } + } + }, + { + "type": "ExpressionStatement", + "start": 45198, + "end": 45218, + "loc": { + "start": { + "line": 1162, + "column": 8 + }, + "end": { + "line": 1162, + "column": 28 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 45198, + "end": 45217, + "loc": { + "start": { + "line": 1162, + "column": 8 + }, + "end": { + "line": 1162, + "column": 27 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 45198, + "end": 45212, + "loc": { + "start": { + "line": 1162, + "column": 8 + }, + "end": { + "line": 1162, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 45198, + "end": 45202, + "loc": { + "start": { + "line": 1162, + "column": 8 + }, + "end": { + "line": 1162, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 45203, + "end": 45212, + "loc": { + "start": { + "line": 1162, + "column": 13 + }, + "end": { + "line": 1162, "column": 22 }, "identifierName": "_entities" @@ -7919,15 +8035,15 @@ }, "right": { "type": "ObjectExpression", - "start": 45179, - "end": 45181, + "start": 45215, + "end": 45217, "loc": { "start": { - "line": 1161, + "line": 1162, "column": 25 }, "end": { - "line": 1161, + "line": 1162, "column": 27 } }, @@ -7938,15 +8054,15 @@ { "type": "CommentBlock", "value": "* @private *", - "start": 45192, - "end": 45208, + "start": 45228, + "end": 45244, "loc": { "start": { - "line": 1163, + "line": 1164, "column": 8 }, "end": { - "line": 1163, + "line": 1164, "column": 24 } } @@ -7955,58 +8071,58 @@ }, { "type": "ExpressionStatement", - "start": 45217, - "end": 45254, + "start": 45253, + "end": 45290, "loc": { "start": { - "line": 1164, + "line": 1165, "column": 8 }, "end": { - "line": 1164, + "line": 1165, "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 45217, - "end": 45253, + "start": 45253, + "end": 45289, "loc": { "start": { - "line": 1164, + "line": 1165, "column": 8 }, "end": { - "line": 1164, + "line": 1165, "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45217, - "end": 45233, + "start": 45253, + "end": 45269, "loc": { "start": { - "line": 1164, + "line": 1165, "column": 8 }, "end": { - "line": 1164, + "line": 1165, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 45217, - "end": 45221, + "start": 45253, + "end": 45257, "loc": { "start": { - "line": 1164, + "line": 1165, "column": 8 }, "end": { - "line": 1164, + "line": 1165, "column": 12 } }, @@ -8014,15 +8130,15 @@ }, "property": { "type": "Identifier", - "start": 45222, - "end": 45233, + "start": 45258, + "end": 45269, "loc": { "start": { - "line": 1164, + "line": 1165, "column": 13 }, "end": { - "line": 1164, + "line": 1165, "column": 24 }, "identifierName": "renderFlags" @@ -8034,29 +8150,29 @@ }, "right": { "type": "NewExpression", - "start": 45236, - "end": 45253, + "start": 45272, + "end": 45289, "loc": { "start": { - "line": 1164, + "line": 1165, "column": 27 }, "end": { - "line": 1164, + "line": 1165, "column": 44 } }, "callee": { "type": "Identifier", - "start": 45240, - "end": 45251, + "start": 45276, + "end": 45287, "loc": { "start": { - "line": 1164, + "line": 1165, "column": 31 }, "end": { - "line": 1164, + "line": 1165, "column": 42 }, "identifierName": "RenderFlags" @@ -8071,15 +8187,15 @@ { "type": "CommentBlock", "value": "* @private *", - "start": 45192, - "end": 45208, + "start": 45228, + "end": 45244, "loc": { "start": { - "line": 1163, + "line": 1164, "column": 8 }, "end": { - "line": 1163, + "line": 1164, "column": 24 } } @@ -8089,15 +8205,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45264, - "end": 45299, + "start": 45300, + "end": 45335, "loc": { "start": { - "line": 1166, + "line": 1167, "column": 8 }, "end": { - "line": 1168, + "line": 1169, "column": 11 } } @@ -8106,58 +8222,58 @@ }, { "type": "ExpressionStatement", - "start": 45308, - "end": 45331, + "start": 45344, + "end": 45367, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 8 }, "end": { - "line": 1169, + "line": 1170, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 45308, - "end": 45330, + "start": 45344, + "end": 45366, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 8 }, "end": { - "line": 1169, + "line": 1170, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45308, - "end": 45326, + "start": 45344, + "end": 45362, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 8 }, "end": { - "line": 1169, + "line": 1170, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 45308, - "end": 45312, + "start": 45344, + "end": 45348, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 8 }, "end": { - "line": 1169, + "line": 1170, "column": 12 } }, @@ -8165,15 +8281,15 @@ }, "property": { "type": "Identifier", - "start": 45313, - "end": 45326, + "start": 45349, + "end": 45362, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 13 }, "end": { - "line": 1169, + "line": 1170, "column": 26 }, "identifierName": "numGeometries" @@ -8185,15 +8301,15 @@ }, "right": { "type": "NumericLiteral", - "start": 45329, - "end": 45330, + "start": 45365, + "end": 45366, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 29 }, "end": { - "line": 1169, + "line": 1170, "column": 30 } }, @@ -8209,15 +8325,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45264, - "end": 45299, + "start": 45300, + "end": 45335, "loc": { "start": { - "line": 1166, + "line": 1167, "column": 8 }, "end": { - "line": 1168, + "line": 1169, "column": 11 } } @@ -8227,15 +8343,15 @@ { "type": "CommentLine", "value": " Number of geometries created with createGeometry()", - "start": 45332, - "end": 45385, + "start": 45368, + "end": 45421, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 32 }, "end": { - "line": 1169, + "line": 1170, "column": 85 } } @@ -8243,15 +8359,15 @@ { "type": "CommentLine", "value": " These counts are used to avoid unnecessary render passes", - "start": 45395, - "end": 45454, + "start": 45431, + "end": 45490, "loc": { "start": { - "line": 1171, + "line": 1172, "column": 8 }, "end": { - "line": 1171, + "line": 1172, "column": 67 } } @@ -8259,15 +8375,15 @@ { "type": "CommentLine", "value": " They are incremented or decremented exclusively by BatchingLayer and InstancingLayer", - "start": 45463, - "end": 45550, + "start": 45499, + "end": 45586, "loc": { "start": { - "line": 1172, + "line": 1173, "column": 8 }, "end": { - "line": 1172, + "line": 1173, "column": 95 } } @@ -8275,15 +8391,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45560, - "end": 45595, + "start": 45596, + "end": 45631, "loc": { "start": { - "line": 1174, + "line": 1175, "column": 8 }, "end": { - "line": 1176, + "line": 1177, "column": 11 } } @@ -8292,58 +8408,58 @@ }, { "type": "ExpressionStatement", - "start": 45604, - "end": 45625, + "start": 45640, + "end": 45661, "loc": { "start": { - "line": 1177, + "line": 1178, "column": 8 }, "end": { - "line": 1177, + "line": 1178, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 45604, - "end": 45624, + "start": 45640, + "end": 45660, "loc": { "start": { - "line": 1177, + "line": 1178, "column": 8 }, "end": { - "line": 1177, + "line": 1178, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45604, - "end": 45620, + "start": 45640, + "end": 45656, "loc": { "start": { - "line": 1177, + "line": 1178, "column": 8 }, "end": { - "line": 1177, + "line": 1178, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 45604, - "end": 45608, + "start": 45640, + "end": 45644, "loc": { "start": { - "line": 1177, + "line": 1178, "column": 8 }, "end": { - "line": 1177, + "line": 1178, "column": 12 } }, @@ -8351,15 +8467,15 @@ }, "property": { "type": "Identifier", - "start": 45609, - "end": 45620, + "start": 45645, + "end": 45656, "loc": { "start": { - "line": 1177, + "line": 1178, "column": 13 }, "end": { - "line": 1177, + "line": 1178, "column": 24 }, "identifierName": "numPortions" @@ -8371,15 +8487,15 @@ }, "right": { "type": "NumericLiteral", - "start": 45623, - "end": 45624, + "start": 45659, + "end": 45660, "loc": { "start": { - "line": 1177, + "line": 1178, "column": 27 }, "end": { - "line": 1177, + "line": 1178, "column": 28 } }, @@ -8395,15 +8511,15 @@ { "type": "CommentLine", "value": " Number of geometries created with createGeometry()", - "start": 45332, - "end": 45385, + "start": 45368, + "end": 45421, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 32 }, "end": { - "line": 1169, + "line": 1170, "column": 85 } } @@ -8411,15 +8527,15 @@ { "type": "CommentLine", "value": " These counts are used to avoid unnecessary render passes", - "start": 45395, - "end": 45454, + "start": 45431, + "end": 45490, "loc": { "start": { - "line": 1171, + "line": 1172, "column": 8 }, "end": { - "line": 1171, + "line": 1172, "column": 67 } } @@ -8427,15 +8543,15 @@ { "type": "CommentLine", "value": " They are incremented or decremented exclusively by BatchingLayer and InstancingLayer", - "start": 45463, - "end": 45550, + "start": 45499, + "end": 45586, "loc": { "start": { - "line": 1172, + "line": 1173, "column": 8 }, "end": { - "line": 1172, + "line": 1173, "column": 95 } } @@ -8443,15 +8559,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45560, - "end": 45595, + "start": 45596, + "end": 45631, "loc": { "start": { - "line": 1174, + "line": 1175, "column": 8 }, "end": { - "line": 1176, + "line": 1177, "column": 11 } } @@ -8461,15 +8577,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45635, - "end": 45670, + "start": 45671, + "end": 45706, "loc": { "start": { - "line": 1179, + "line": 1180, "column": 8 }, "end": { - "line": 1181, + "line": 1182, "column": 11 } } @@ -8478,58 +8594,58 @@ }, { "type": "ExpressionStatement", - "start": 45679, - "end": 45712, + "start": 45715, + "end": 45748, "loc": { "start": { - "line": 1182, + "line": 1183, "column": 8 }, "end": { - "line": 1182, + "line": 1183, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 45679, - "end": 45711, + "start": 45715, + "end": 45747, "loc": { "start": { - "line": 1182, + "line": 1183, "column": 8 }, "end": { - "line": 1182, + "line": 1183, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45679, - "end": 45707, + "start": 45715, + "end": 45743, "loc": { "start": { - "line": 1182, + "line": 1183, "column": 8 }, "end": { - "line": 1182, + "line": 1183, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 45679, - "end": 45683, + "start": 45715, + "end": 45719, "loc": { "start": { - "line": 1182, + "line": 1183, "column": 8 }, "end": { - "line": 1182, + "line": 1183, "column": 12 } }, @@ -8537,15 +8653,15 @@ }, "property": { "type": "Identifier", - "start": 45684, - "end": 45707, + "start": 45720, + "end": 45743, "loc": { "start": { - "line": 1182, + "line": 1183, "column": 13 }, "end": { - "line": 1182, + "line": 1183, "column": 36 }, "identifierName": "numVisibleLayerPortions" @@ -8557,15 +8673,15 @@ }, "right": { "type": "NumericLiteral", - "start": 45710, - "end": 45711, + "start": 45746, + "end": 45747, "loc": { "start": { - "line": 1182, + "line": 1183, "column": 39 }, "end": { - "line": 1182, + "line": 1183, "column": 40 } }, @@ -8581,15 +8697,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45635, - "end": 45670, + "start": 45671, + "end": 45706, "loc": { "start": { - "line": 1179, + "line": 1180, "column": 8 }, "end": { - "line": 1181, + "line": 1182, "column": 11 } } @@ -8599,15 +8715,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45722, - "end": 45757, + "start": 45758, + "end": 45793, "loc": { "start": { - "line": 1184, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1187, "column": 11 } } @@ -8616,58 +8732,58 @@ }, { "type": "ExpressionStatement", - "start": 45766, - "end": 45803, + "start": 45802, + "end": 45839, "loc": { "start": { - "line": 1187, + "line": 1188, "column": 8 }, "end": { - "line": 1187, + "line": 1188, "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 45766, - "end": 45802, + "start": 45802, + "end": 45838, "loc": { "start": { - "line": 1187, + "line": 1188, "column": 8 }, "end": { - "line": 1187, + "line": 1188, "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45766, - "end": 45798, + "start": 45802, + "end": 45834, "loc": { "start": { - "line": 1187, + "line": 1188, "column": 8 }, "end": { - "line": 1187, + "line": 1188, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 45766, - "end": 45770, + "start": 45802, + "end": 45806, "loc": { "start": { - "line": 1187, + "line": 1188, "column": 8 }, "end": { - "line": 1187, + "line": 1188, "column": 12 } }, @@ -8675,15 +8791,15 @@ }, "property": { "type": "Identifier", - "start": 45771, - "end": 45798, + "start": 45807, + "end": 45834, "loc": { "start": { - "line": 1187, + "line": 1188, "column": 13 }, "end": { - "line": 1187, + "line": 1188, "column": 40 }, "identifierName": "numTransparentLayerPortions" @@ -8695,15 +8811,15 @@ }, "right": { "type": "NumericLiteral", - "start": 45801, - "end": 45802, + "start": 45837, + "end": 45838, "loc": { "start": { - "line": 1187, + "line": 1188, "column": 43 }, "end": { - "line": 1187, + "line": 1188, "column": 44 } }, @@ -8719,15 +8835,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45722, - "end": 45757, + "start": 45758, + "end": 45793, "loc": { "start": { - "line": 1184, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1187, "column": 11 } } @@ -8737,15 +8853,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45813, - "end": 45848, + "start": 45849, + "end": 45884, "loc": { "start": { - "line": 1189, + "line": 1190, "column": 8 }, "end": { - "line": 1191, + "line": 1192, "column": 11 } } @@ -8754,58 +8870,58 @@ }, { "type": "ExpressionStatement", - "start": 45857, - "end": 45889, + "start": 45893, + "end": 45925, "loc": { "start": { - "line": 1192, + "line": 1193, "column": 8 }, "end": { - "line": 1192, + "line": 1193, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 45857, - "end": 45888, + "start": 45893, + "end": 45924, "loc": { "start": { - "line": 1192, + "line": 1193, "column": 8 }, "end": { - "line": 1192, + "line": 1193, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45857, - "end": 45884, + "start": 45893, + "end": 45920, "loc": { "start": { - "line": 1192, + "line": 1193, "column": 8 }, "end": { - "line": 1192, + "line": 1193, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 45857, - "end": 45861, + "start": 45893, + "end": 45897, "loc": { "start": { - "line": 1192, + "line": 1193, "column": 8 }, "end": { - "line": 1192, + "line": 1193, "column": 12 } }, @@ -8813,15 +8929,15 @@ }, "property": { "type": "Identifier", - "start": 45862, - "end": 45884, + "start": 45898, + "end": 45920, "loc": { "start": { - "line": 1192, + "line": 1193, "column": 13 }, "end": { - "line": 1192, + "line": 1193, "column": 35 }, "identifierName": "numXRayedLayerPortions" @@ -8833,15 +8949,15 @@ }, "right": { "type": "NumericLiteral", - "start": 45887, - "end": 45888, + "start": 45923, + "end": 45924, "loc": { "start": { - "line": 1192, + "line": 1193, "column": 38 }, "end": { - "line": 1192, + "line": 1193, "column": 39 } }, @@ -8857,15 +8973,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45813, - "end": 45848, + "start": 45849, + "end": 45884, "loc": { "start": { - "line": 1189, + "line": 1190, "column": 8 }, "end": { - "line": 1191, + "line": 1192, "column": 11 } } @@ -8875,15 +8991,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45899, - "end": 45934, + "start": 45935, + "end": 45970, "loc": { "start": { - "line": 1194, + "line": 1195, "column": 8 }, "end": { - "line": 1196, + "line": 1197, "column": 11 } } @@ -8892,58 +9008,58 @@ }, { "type": "ExpressionStatement", - "start": 45943, - "end": 45980, + "start": 45979, + "end": 46016, "loc": { "start": { - "line": 1197, + "line": 1198, "column": 8 }, "end": { - "line": 1197, + "line": 1198, "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 45943, - "end": 45979, + "start": 45979, + "end": 46015, "loc": { "start": { - "line": 1197, + "line": 1198, "column": 8 }, "end": { - "line": 1197, + "line": 1198, "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45943, - "end": 45975, + "start": 45979, + "end": 46011, "loc": { "start": { - "line": 1197, + "line": 1198, "column": 8 }, "end": { - "line": 1197, + "line": 1198, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 45943, - "end": 45947, + "start": 45979, + "end": 45983, "loc": { "start": { - "line": 1197, + "line": 1198, "column": 8 }, "end": { - "line": 1197, + "line": 1198, "column": 12 } }, @@ -8951,15 +9067,15 @@ }, "property": { "type": "Identifier", - "start": 45948, - "end": 45975, + "start": 45984, + "end": 46011, "loc": { "start": { - "line": 1197, + "line": 1198, "column": 13 }, "end": { - "line": 1197, + "line": 1198, "column": 40 }, "identifierName": "numHighlightedLayerPortions" @@ -8971,15 +9087,15 @@ }, "right": { "type": "NumericLiteral", - "start": 45978, - "end": 45979, + "start": 46014, + "end": 46015, "loc": { "start": { - "line": 1197, + "line": 1198, "column": 43 }, "end": { - "line": 1197, + "line": 1198, "column": 44 } }, @@ -8995,15 +9111,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45899, - "end": 45934, + "start": 45935, + "end": 45970, "loc": { "start": { - "line": 1194, + "line": 1195, "column": 8 }, "end": { - "line": 1196, + "line": 1197, "column": 11 } } @@ -9013,15 +9129,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45990, - "end": 46025, + "start": 46026, + "end": 46061, "loc": { "start": { - "line": 1199, + "line": 1200, "column": 8 }, "end": { - "line": 1201, + "line": 1202, "column": 11 } } @@ -9030,58 +9146,58 @@ }, { "type": "ExpressionStatement", - "start": 46034, - "end": 46068, + "start": 46070, + "end": 46104, "loc": { "start": { - "line": 1202, + "line": 1203, "column": 8 }, "end": { - "line": 1202, + "line": 1203, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 46034, - "end": 46067, + "start": 46070, + "end": 46103, "loc": { "start": { - "line": 1202, + "line": 1203, "column": 8 }, "end": { - "line": 1202, + "line": 1203, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46034, - "end": 46063, + "start": 46070, + "end": 46099, "loc": { "start": { - "line": 1202, + "line": 1203, "column": 8 }, "end": { - "line": 1202, + "line": 1203, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 46034, - "end": 46038, + "start": 46070, + "end": 46074, "loc": { "start": { - "line": 1202, + "line": 1203, "column": 8 }, "end": { - "line": 1202, + "line": 1203, "column": 12 } }, @@ -9089,15 +9205,15 @@ }, "property": { "type": "Identifier", - "start": 46039, - "end": 46063, + "start": 46075, + "end": 46099, "loc": { "start": { - "line": 1202, + "line": 1203, "column": 13 }, "end": { - "line": 1202, + "line": 1203, "column": 37 }, "identifierName": "numSelectedLayerPortions" @@ -9109,15 +9225,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46066, - "end": 46067, + "start": 46102, + "end": 46103, "loc": { "start": { - "line": 1202, + "line": 1203, "column": 40 }, "end": { - "line": 1202, + "line": 1203, "column": 41 } }, @@ -9133,15 +9249,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45990, - "end": 46025, + "start": 46026, + "end": 46061, "loc": { "start": { - "line": 1199, + "line": 1200, "column": 8 }, "end": { - "line": 1201, + "line": 1202, "column": 11 } } @@ -9151,15 +9267,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46078, - "end": 46113, + "start": 46114, + "end": 46149, "loc": { "start": { - "line": 1204, + "line": 1205, "column": 8 }, "end": { - "line": 1206, + "line": 1207, "column": 11 } } @@ -9168,58 +9284,58 @@ }, { "type": "ExpressionStatement", - "start": 46122, - "end": 46153, + "start": 46158, + "end": 46189, "loc": { "start": { - "line": 1207, + "line": 1208, "column": 8 }, "end": { - "line": 1207, + "line": 1208, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 46122, - "end": 46152, + "start": 46158, + "end": 46188, "loc": { "start": { - "line": 1207, + "line": 1208, "column": 8 }, "end": { - "line": 1207, + "line": 1208, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46122, - "end": 46148, + "start": 46158, + "end": 46184, "loc": { "start": { - "line": 1207, + "line": 1208, "column": 8 }, "end": { - "line": 1207, + "line": 1208, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 46122, - "end": 46126, + "start": 46158, + "end": 46162, "loc": { "start": { - "line": 1207, + "line": 1208, "column": 8 }, "end": { - "line": 1207, + "line": 1208, "column": 12 } }, @@ -9227,15 +9343,15 @@ }, "property": { "type": "Identifier", - "start": 46127, - "end": 46148, + "start": 46163, + "end": 46184, "loc": { "start": { - "line": 1207, + "line": 1208, "column": 13 }, "end": { - "line": 1207, + "line": 1208, "column": 34 }, "identifierName": "numEdgesLayerPortions" @@ -9247,15 +9363,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46151, - "end": 46152, + "start": 46187, + "end": 46188, "loc": { "start": { - "line": 1207, + "line": 1208, "column": 37 }, "end": { - "line": 1207, + "line": 1208, "column": 38 } }, @@ -9271,15 +9387,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46078, - "end": 46113, + "start": 46114, + "end": 46149, "loc": { "start": { - "line": 1204, + "line": 1205, "column": 8 }, "end": { - "line": 1206, + "line": 1207, "column": 11 } } @@ -9289,15 +9405,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46163, - "end": 46198, + "start": 46199, + "end": 46234, "loc": { "start": { - "line": 1209, + "line": 1210, "column": 8 }, "end": { - "line": 1211, + "line": 1212, "column": 11 } } @@ -9306,58 +9422,58 @@ }, { "type": "ExpressionStatement", - "start": 46207, - "end": 46241, + "start": 46243, + "end": 46277, "loc": { "start": { - "line": 1212, + "line": 1213, "column": 8 }, "end": { - "line": 1212, + "line": 1213, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 46207, - "end": 46240, + "start": 46243, + "end": 46276, "loc": { "start": { - "line": 1212, + "line": 1213, "column": 8 }, "end": { - "line": 1212, + "line": 1213, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46207, - "end": 46236, + "start": 46243, + "end": 46272, "loc": { "start": { - "line": 1212, + "line": 1213, "column": 8 }, "end": { - "line": 1212, + "line": 1213, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 46207, - "end": 46211, + "start": 46243, + "end": 46247, "loc": { "start": { - "line": 1212, + "line": 1213, "column": 8 }, "end": { - "line": 1212, + "line": 1213, "column": 12 } }, @@ -9365,15 +9481,15 @@ }, "property": { "type": "Identifier", - "start": 46212, - "end": 46236, + "start": 46248, + "end": 46272, "loc": { "start": { - "line": 1212, + "line": 1213, "column": 13 }, "end": { - "line": 1212, + "line": 1213, "column": 37 }, "identifierName": "numPickableLayerPortions" @@ -9385,15 +9501,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46239, - "end": 46240, + "start": 46275, + "end": 46276, "loc": { "start": { - "line": 1212, + "line": 1213, "column": 40 }, "end": { - "line": 1212, + "line": 1213, "column": 41 } }, @@ -9409,15 +9525,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46163, - "end": 46198, + "start": 46199, + "end": 46234, "loc": { "start": { - "line": 1209, + "line": 1210, "column": 8 }, "end": { - "line": 1211, + "line": 1212, "column": 11 } } @@ -9427,15 +9543,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46251, - "end": 46286, + "start": 46287, + "end": 46322, "loc": { "start": { - "line": 1214, + "line": 1215, "column": 8 }, "end": { - "line": 1216, + "line": 1217, "column": 11 } } @@ -9444,58 +9560,58 @@ }, { "type": "ExpressionStatement", - "start": 46295, - "end": 46330, + "start": 46331, + "end": 46366, "loc": { "start": { - "line": 1217, + "line": 1218, "column": 8 }, "end": { - "line": 1217, + "line": 1218, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 46295, - "end": 46329, + "start": 46331, + "end": 46365, "loc": { "start": { - "line": 1217, + "line": 1218, "column": 8 }, "end": { - "line": 1217, + "line": 1218, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46295, - "end": 46325, + "start": 46331, + "end": 46361, "loc": { "start": { - "line": 1217, + "line": 1218, "column": 8 }, "end": { - "line": 1217, + "line": 1218, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 46295, - "end": 46299, + "start": 46331, + "end": 46335, "loc": { "start": { - "line": 1217, + "line": 1218, "column": 8 }, "end": { - "line": 1217, + "line": 1218, "column": 12 } }, @@ -9503,15 +9619,15 @@ }, "property": { "type": "Identifier", - "start": 46300, - "end": 46325, + "start": 46336, + "end": 46361, "loc": { "start": { - "line": 1217, + "line": 1218, "column": 13 }, "end": { - "line": 1217, + "line": 1218, "column": 38 }, "identifierName": "numClippableLayerPortions" @@ -9523,15 +9639,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46328, - "end": 46329, + "start": 46364, + "end": 46365, "loc": { "start": { - "line": 1217, + "line": 1218, "column": 41 }, "end": { - "line": 1217, + "line": 1218, "column": 42 } }, @@ -9547,15 +9663,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46251, - "end": 46286, + "start": 46287, + "end": 46322, "loc": { "start": { - "line": 1214, + "line": 1215, "column": 8 }, "end": { - "line": 1216, + "line": 1217, "column": 11 } } @@ -9565,15 +9681,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46340, - "end": 46375, + "start": 46376, + "end": 46411, "loc": { "start": { - "line": 1219, + "line": 1220, "column": 8 }, "end": { - "line": 1221, + "line": 1222, "column": 11 } } @@ -9582,58 +9698,58 @@ }, { "type": "ExpressionStatement", - "start": 46384, - "end": 46416, + "start": 46420, + "end": 46452, "loc": { "start": { - "line": 1222, + "line": 1223, "column": 8 }, "end": { - "line": 1222, + "line": 1223, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 46384, - "end": 46415, + "start": 46420, + "end": 46451, "loc": { "start": { - "line": 1222, + "line": 1223, "column": 8 }, "end": { - "line": 1222, + "line": 1223, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46384, - "end": 46411, + "start": 46420, + "end": 46447, "loc": { "start": { - "line": 1222, + "line": 1223, "column": 8 }, "end": { - "line": 1222, + "line": 1223, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 46384, - "end": 46388, + "start": 46420, + "end": 46424, "loc": { "start": { - "line": 1222, + "line": 1223, "column": 8 }, "end": { - "line": 1222, + "line": 1223, "column": 12 } }, @@ -9641,15 +9757,15 @@ }, "property": { "type": "Identifier", - "start": 46389, - "end": 46411, + "start": 46425, + "end": 46447, "loc": { "start": { - "line": 1222, + "line": 1223, "column": 13 }, "end": { - "line": 1222, + "line": 1223, "column": 35 }, "identifierName": "numCulledLayerPortions" @@ -9661,15 +9777,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46414, - "end": 46415, + "start": 46450, + "end": 46451, "loc": { "start": { - "line": 1222, + "line": 1223, "column": 38 }, "end": { - "line": 1222, + "line": 1223, "column": 39 } }, @@ -9685,15 +9801,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46340, - "end": 46375, + "start": 46376, + "end": 46411, "loc": { "start": { - "line": 1219, + "line": 1220, "column": 8 }, "end": { - "line": 1221, + "line": 1222, "column": 11 } } @@ -9702,73 +9818,73 @@ }, { "type": "ExpressionStatement", - "start": 46426, - "end": 46447, + "start": 46462, + "end": 46483, "loc": { "start": { - "line": 1224, + "line": 1225, "column": 8 }, "end": { - "line": 1224, + "line": 1225, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 46426, - "end": 46446, + "start": 46462, + "end": 46482, "loc": { "start": { - "line": 1224, + "line": 1225, "column": 8 }, "end": { - "line": 1224, + "line": 1225, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46426, - "end": 46442, + "start": 46462, + "end": 46478, "loc": { "start": { - "line": 1224, + "line": 1225, "column": 8 }, "end": { - "line": 1224, + "line": 1225, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 46426, - "end": 46430, + "start": 46462, + "end": 46466, "loc": { "start": { - "line": 1224, + "line": 1225, "column": 8 }, "end": { - "line": 1224, + "line": 1225, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46431, - "end": 46442, + "start": 46467, + "end": 46478, "loc": { "start": { - "line": 1224, + "line": 1225, "column": 13 }, "end": { - "line": 1224, + "line": 1225, "column": 24 }, "identifierName": "numEntities" @@ -9779,15 +9895,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46445, - "end": 46446, + "start": 46481, + "end": 46482, "loc": { "start": { - "line": 1224, + "line": 1225, "column": 27 }, "end": { - "line": 1224, + "line": 1225, "column": 28 } }, @@ -9801,73 +9917,73 @@ }, { "type": "ExpressionStatement", - "start": 46456, - "end": 46479, + "start": 46492, + "end": 46515, "loc": { "start": { - "line": 1225, + "line": 1226, "column": 8 }, "end": { - "line": 1225, + "line": 1226, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 46456, - "end": 46478, + "start": 46492, + "end": 46514, "loc": { "start": { - "line": 1225, + "line": 1226, "column": 8 }, "end": { - "line": 1225, + "line": 1226, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46456, - "end": 46474, + "start": 46492, + "end": 46510, "loc": { "start": { - "line": 1225, + "line": 1226, "column": 8 }, "end": { - "line": 1225, + "line": 1226, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 46456, - "end": 46460, + "start": 46492, + "end": 46496, "loc": { "start": { - "line": 1225, + "line": 1226, "column": 8 }, "end": { - "line": 1225, + "line": 1226, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46461, - "end": 46474, + "start": 46497, + "end": 46510, "loc": { "start": { - "line": 1225, + "line": 1226, "column": 13 }, "end": { - "line": 1225, + "line": 1226, "column": 26 }, "identifierName": "_numTriangles" @@ -9878,15 +9994,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46477, - "end": 46478, + "start": 46513, + "end": 46514, "loc": { "start": { - "line": 1225, + "line": 1226, "column": 29 }, "end": { - "line": 1225, + "line": 1226, "column": 30 } }, @@ -9900,73 +10016,73 @@ }, { "type": "ExpressionStatement", - "start": 46488, - "end": 46507, + "start": 46524, + "end": 46543, "loc": { "start": { - "line": 1226, + "line": 1227, "column": 8 }, "end": { - "line": 1226, + "line": 1227, "column": 27 } }, "expression": { "type": "AssignmentExpression", - "start": 46488, - "end": 46506, + "start": 46524, + "end": 46542, "loc": { "start": { - "line": 1226, + "line": 1227, "column": 8 }, "end": { - "line": 1226, + "line": 1227, "column": 26 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46488, - "end": 46502, + "start": 46524, + "end": 46538, "loc": { "start": { - "line": 1226, + "line": 1227, "column": 8 }, "end": { - "line": 1226, + "line": 1227, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 46488, - "end": 46492, + "start": 46524, + "end": 46528, "loc": { "start": { - "line": 1226, + "line": 1227, "column": 8 }, "end": { - "line": 1226, + "line": 1227, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46493, - "end": 46502, + "start": 46529, + "end": 46538, "loc": { "start": { - "line": 1226, + "line": 1227, "column": 13 }, "end": { - "line": 1226, + "line": 1227, "column": 22 }, "identifierName": "_numLines" @@ -9977,15 +10093,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46505, - "end": 46506, + "start": 46541, + "end": 46542, "loc": { "start": { - "line": 1226, + "line": 1227, "column": 25 }, "end": { - "line": 1226, + "line": 1227, "column": 26 } }, @@ -9999,73 +10115,73 @@ }, { "type": "ExpressionStatement", - "start": 46516, - "end": 46536, + "start": 46552, + "end": 46572, "loc": { "start": { - "line": 1227, + "line": 1228, "column": 8 }, "end": { - "line": 1227, + "line": 1228, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 46516, - "end": 46535, + "start": 46552, + "end": 46571, "loc": { "start": { - "line": 1227, + "line": 1228, "column": 8 }, "end": { - "line": 1227, + "line": 1228, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46516, - "end": 46531, + "start": 46552, + "end": 46567, "loc": { "start": { - "line": 1227, + "line": 1228, "column": 8 }, "end": { - "line": 1227, + "line": 1228, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 46516, - "end": 46520, + "start": 46552, + "end": 46556, "loc": { "start": { - "line": 1227, + "line": 1228, "column": 8 }, "end": { - "line": 1227, + "line": 1228, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46521, - "end": 46531, + "start": 46557, + "end": 46567, "loc": { "start": { - "line": 1227, + "line": 1228, "column": 13 }, "end": { - "line": 1227, + "line": 1228, "column": 23 }, "identifierName": "_numPoints" @@ -10076,15 +10192,15 @@ }, "right": { "type": "NumericLiteral", - "start": 46534, - "end": 46535, + "start": 46570, + "end": 46571, "loc": { "start": { - "line": 1227, + "line": 1228, "column": 26 }, "end": { - "line": 1227, + "line": 1228, "column": 27 } }, @@ -10098,73 +10214,73 @@ }, { "type": "ExpressionStatement", - "start": 46546, - "end": 46592, + "start": 46582, + "end": 46628, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 8 }, "end": { - "line": 1229, + "line": 1230, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 46546, - "end": 46591, + "start": 46582, + "end": 46627, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 8 }, "end": { - "line": 1229, + "line": 1230, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46546, - "end": 46565, + "start": 46582, + "end": 46601, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 8 }, "end": { - "line": 1229, + "line": 1230, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 46546, - "end": 46550, + "start": 46582, + "end": 46586, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 8 }, "end": { - "line": 1229, + "line": 1230, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46551, - "end": 46565, + "start": 46587, + "end": 46601, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 13 }, "end": { - "line": 1229, + "line": 1230, "column": 27 }, "identifierName": "_edgeThreshold" @@ -10175,43 +10291,43 @@ }, "right": { "type": "LogicalExpression", - "start": 46568, - "end": 46591, + "start": 46604, + "end": 46627, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 30 }, "end": { - "line": 1229, + "line": 1230, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 46568, - "end": 46585, + "start": 46604, + "end": 46621, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 30 }, "end": { - "line": 1229, + "line": 1230, "column": 47 } }, "object": { "type": "Identifier", - "start": 46568, - "end": 46571, + "start": 46604, + "end": 46607, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 30 }, "end": { - "line": 1229, + "line": 1230, "column": 33 }, "identifierName": "cfg" @@ -10220,15 +10336,15 @@ }, "property": { "type": "Identifier", - "start": 46572, - "end": 46585, + "start": 46608, + "end": 46621, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 34 }, "end": { - "line": 1229, + "line": 1230, "column": 47 }, "identifierName": "edgeThreshold" @@ -10240,15 +10356,15 @@ "operator": "||", "right": { "type": "NumericLiteral", - "start": 46589, - "end": 46591, + "start": 46625, + "end": 46627, "loc": { "start": { - "line": 1229, + "line": 1230, "column": 51 }, "end": { - "line": 1229, + "line": 1230, "column": 53 } }, @@ -10264,15 +10380,15 @@ { "type": "CommentLine", "value": " Build static matrix", - "start": 46602, - "end": 46624, + "start": 46638, + "end": 46660, "loc": { "start": { - "line": 1231, + "line": 1232, "column": 8 }, "end": { - "line": 1231, + "line": 1232, "column": 30 } } @@ -10281,58 +10397,58 @@ }, { "type": "ExpressionStatement", - "start": 46634, - "end": 46684, + "start": 46670, + "end": 46720, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 8 }, "end": { - "line": 1233, + "line": 1234, "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 46634, - "end": 46683, + "start": 46670, + "end": 46719, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 8 }, "end": { - "line": 1233, + "line": 1234, "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46634, - "end": 46646, + "start": 46670, + "end": 46682, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 8 }, "end": { - "line": 1233, + "line": 1234, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 46634, - "end": 46638, + "start": 46670, + "end": 46674, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 8 }, "end": { - "line": 1233, + "line": 1234, "column": 12 } }, @@ -10340,15 +10456,15 @@ }, "property": { "type": "Identifier", - "start": 46639, - "end": 46646, + "start": 46675, + "end": 46682, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 13 }, "end": { - "line": 1233, + "line": 1234, "column": 20 }, "identifierName": "_origin" @@ -10360,43 +10476,43 @@ }, "right": { "type": "CallExpression", - "start": 46649, - "end": 46683, + "start": 46685, + "end": 46719, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 23 }, "end": { - "line": 1233, + "line": 1234, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 46649, - "end": 46658, + "start": 46685, + "end": 46694, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 23 }, "end": { - "line": 1233, + "line": 1234, "column": 32 } }, "object": { "type": "Identifier", - "start": 46649, - "end": 46653, + "start": 46685, + "end": 46689, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 23 }, "end": { - "line": 1233, + "line": 1234, "column": 27 }, "identifierName": "math" @@ -10405,15 +10521,15 @@ }, "property": { "type": "Identifier", - "start": 46654, - "end": 46658, + "start": 46690, + "end": 46694, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 28 }, "end": { - "line": 1233, + "line": 1234, "column": 32 }, "identifierName": "vec3" @@ -10425,43 +10541,43 @@ "arguments": [ { "type": "LogicalExpression", - "start": 46659, - "end": 46682, + "start": 46695, + "end": 46718, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 33 }, "end": { - "line": 1233, + "line": 1234, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 46659, - "end": 46669, + "start": 46695, + "end": 46705, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 33 }, "end": { - "line": 1233, + "line": 1234, "column": 43 } }, "object": { "type": "Identifier", - "start": 46659, - "end": 46662, + "start": 46695, + "end": 46698, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 33 }, "end": { - "line": 1233, + "line": 1234, "column": 36 }, "identifierName": "cfg" @@ -10470,15 +10586,15 @@ }, "property": { "type": "Identifier", - "start": 46663, - "end": 46669, + "start": 46699, + "end": 46705, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 37 }, "end": { - "line": 1233, + "line": 1234, "column": 43 }, "identifierName": "origin" @@ -10490,30 +10606,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 46673, - "end": 46682, + "start": 46709, + "end": 46718, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 47 }, "end": { - "line": 1233, + "line": 1234, "column": 56 } }, "elements": [ { "type": "NumericLiteral", - "start": 46674, - "end": 46675, + "start": 46710, + "end": 46711, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 48 }, "end": { - "line": 1233, + "line": 1234, "column": 49 } }, @@ -10525,15 +10641,15 @@ }, { "type": "NumericLiteral", - "start": 46677, - "end": 46678, + "start": 46713, + "end": 46714, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 51 }, "end": { - "line": 1233, + "line": 1234, "column": 52 } }, @@ -10545,15 +10661,15 @@ }, { "type": "NumericLiteral", - "start": 46680, - "end": 46681, + "start": 46716, + "end": 46717, "loc": { "start": { - "line": 1233, + "line": 1234, "column": 54 }, "end": { - "line": 1233, + "line": 1234, "column": 55 } }, @@ -10574,15 +10690,15 @@ { "type": "CommentLine", "value": " Build static matrix", - "start": 46602, - "end": 46624, + "start": 46638, + "end": 46660, "loc": { "start": { - "line": 1231, + "line": 1232, "column": 8 }, "end": { - "line": 1231, + "line": 1232, "column": 30 } } @@ -10591,73 +10707,73 @@ }, { "type": "ExpressionStatement", - "start": 46693, - "end": 46747, + "start": 46729, + "end": 46783, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 8 }, "end": { - "line": 1234, + "line": 1235, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 46693, - "end": 46746, + "start": 46729, + "end": 46782, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 8 }, "end": { - "line": 1234, + "line": 1235, "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46693, - "end": 46707, + "start": 46729, + "end": 46743, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 8 }, "end": { - "line": 1234, + "line": 1235, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 46693, - "end": 46697, + "start": 46729, + "end": 46733, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 8 }, "end": { - "line": 1234, + "line": 1235, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46698, - "end": 46707, + "start": 46734, + "end": 46743, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 13 }, "end": { - "line": 1234, + "line": 1235, "column": 22 }, "identifierName": "_position" @@ -10668,43 +10784,43 @@ }, "right": { "type": "CallExpression", - "start": 46710, - "end": 46746, + "start": 46746, + "end": 46782, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 25 }, "end": { - "line": 1234, + "line": 1235, "column": 61 } }, "callee": { "type": "MemberExpression", - "start": 46710, - "end": 46719, + "start": 46746, + "end": 46755, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 25 }, "end": { - "line": 1234, + "line": 1235, "column": 34 } }, "object": { "type": "Identifier", - "start": 46710, - "end": 46714, + "start": 46746, + "end": 46750, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 25 }, "end": { - "line": 1234, + "line": 1235, "column": 29 }, "identifierName": "math" @@ -10713,15 +10829,15 @@ }, "property": { "type": "Identifier", - "start": 46715, - "end": 46719, + "start": 46751, + "end": 46755, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 30 }, "end": { - "line": 1234, + "line": 1235, "column": 34 }, "identifierName": "vec3" @@ -10733,43 +10849,43 @@ "arguments": [ { "type": "LogicalExpression", - "start": 46720, - "end": 46745, + "start": 46756, + "end": 46781, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 35 }, "end": { - "line": 1234, + "line": 1235, "column": 60 } }, "left": { "type": "MemberExpression", - "start": 46720, - "end": 46732, + "start": 46756, + "end": 46768, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 35 }, "end": { - "line": 1234, + "line": 1235, "column": 47 } }, "object": { "type": "Identifier", - "start": 46720, - "end": 46723, + "start": 46756, + "end": 46759, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 35 }, "end": { - "line": 1234, + "line": 1235, "column": 38 }, "identifierName": "cfg" @@ -10778,15 +10894,15 @@ }, "property": { "type": "Identifier", - "start": 46724, - "end": 46732, + "start": 46760, + "end": 46768, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 39 }, "end": { - "line": 1234, + "line": 1235, "column": 47 }, "identifierName": "position" @@ -10798,30 +10914,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 46736, - "end": 46745, + "start": 46772, + "end": 46781, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 51 }, "end": { - "line": 1234, + "line": 1235, "column": 60 } }, "elements": [ { "type": "NumericLiteral", - "start": 46737, - "end": 46738, + "start": 46773, + "end": 46774, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 52 }, "end": { - "line": 1234, + "line": 1235, "column": 53 } }, @@ -10833,15 +10949,15 @@ }, { "type": "NumericLiteral", - "start": 46740, - "end": 46741, + "start": 46776, + "end": 46777, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 55 }, "end": { - "line": 1234, + "line": 1235, "column": 56 } }, @@ -10853,15 +10969,15 @@ }, { "type": "NumericLiteral", - "start": 46743, - "end": 46744, + "start": 46779, + "end": 46780, "loc": { "start": { - "line": 1234, + "line": 1235, "column": 58 }, "end": { - "line": 1234, + "line": 1235, "column": 59 } }, @@ -10880,73 +10996,73 @@ }, { "type": "ExpressionStatement", - "start": 46756, - "end": 46810, + "start": 46792, + "end": 46846, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 8 }, "end": { - "line": 1235, + "line": 1236, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 46756, - "end": 46809, + "start": 46792, + "end": 46845, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 8 }, "end": { - "line": 1235, + "line": 1236, "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46756, - "end": 46770, + "start": 46792, + "end": 46806, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 8 }, "end": { - "line": 1235, + "line": 1236, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 46756, - "end": 46760, + "start": 46792, + "end": 46796, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 8 }, "end": { - "line": 1235, + "line": 1236, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46761, - "end": 46770, + "start": 46797, + "end": 46806, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 13 }, "end": { - "line": 1235, + "line": 1236, "column": 22 }, "identifierName": "_rotation" @@ -10957,43 +11073,43 @@ }, "right": { "type": "CallExpression", - "start": 46773, - "end": 46809, + "start": 46809, + "end": 46845, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 25 }, "end": { - "line": 1235, + "line": 1236, "column": 61 } }, "callee": { "type": "MemberExpression", - "start": 46773, - "end": 46782, + "start": 46809, + "end": 46818, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 25 }, "end": { - "line": 1235, + "line": 1236, "column": 34 } }, "object": { "type": "Identifier", - "start": 46773, - "end": 46777, + "start": 46809, + "end": 46813, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 25 }, "end": { - "line": 1235, + "line": 1236, "column": 29 }, "identifierName": "math" @@ -11002,15 +11118,15 @@ }, "property": { "type": "Identifier", - "start": 46778, - "end": 46782, + "start": 46814, + "end": 46818, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 30 }, "end": { - "line": 1235, + "line": 1236, "column": 34 }, "identifierName": "vec3" @@ -11022,43 +11138,43 @@ "arguments": [ { "type": "LogicalExpression", - "start": 46783, - "end": 46808, + "start": 46819, + "end": 46844, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 35 }, "end": { - "line": 1235, + "line": 1236, "column": 60 } }, "left": { "type": "MemberExpression", - "start": 46783, - "end": 46795, + "start": 46819, + "end": 46831, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 35 }, "end": { - "line": 1235, + "line": 1236, "column": 47 } }, "object": { "type": "Identifier", - "start": 46783, - "end": 46786, + "start": 46819, + "end": 46822, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 35 }, "end": { - "line": 1235, + "line": 1236, "column": 38 }, "identifierName": "cfg" @@ -11067,15 +11183,15 @@ }, "property": { "type": "Identifier", - "start": 46787, - "end": 46795, + "start": 46823, + "end": 46831, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 39 }, "end": { - "line": 1235, + "line": 1236, "column": 47 }, "identifierName": "rotation" @@ -11087,30 +11203,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 46799, - "end": 46808, + "start": 46835, + "end": 46844, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 51 }, "end": { - "line": 1235, + "line": 1236, "column": 60 } }, "elements": [ { "type": "NumericLiteral", - "start": 46800, - "end": 46801, + "start": 46836, + "end": 46837, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 52 }, "end": { - "line": 1235, + "line": 1236, "column": 53 } }, @@ -11122,15 +11238,15 @@ }, { "type": "NumericLiteral", - "start": 46803, - "end": 46804, + "start": 46839, + "end": 46840, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 55 }, "end": { - "line": 1235, + "line": 1236, "column": 56 } }, @@ -11142,15 +11258,15 @@ }, { "type": "NumericLiteral", - "start": 46806, - "end": 46807, + "start": 46842, + "end": 46843, "loc": { "start": { - "line": 1235, + "line": 1236, "column": 58 }, "end": { - "line": 1235, + "line": 1236, "column": 59 } }, @@ -11169,73 +11285,73 @@ }, { "type": "ExpressionStatement", - "start": 46819, - "end": 46880, + "start": 46855, + "end": 46916, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 8 }, "end": { - "line": 1236, + "line": 1237, "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 46819, - "end": 46879, + "start": 46855, + "end": 46915, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 8 }, "end": { - "line": 1236, + "line": 1237, "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46819, - "end": 46835, + "start": 46855, + "end": 46871, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 8 }, "end": { - "line": 1236, + "line": 1237, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 46819, - "end": 46823, + "start": 46855, + "end": 46859, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 8 }, "end": { - "line": 1236, + "line": 1237, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46824, - "end": 46835, + "start": 46860, + "end": 46871, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 13 }, "end": { - "line": 1236, + "line": 1237, "column": 24 }, "identifierName": "_quaternion" @@ -11246,43 +11362,43 @@ }, "right": { "type": "CallExpression", - "start": 46838, - "end": 46879, + "start": 46874, + "end": 46915, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 27 }, "end": { - "line": 1236, + "line": 1237, "column": 68 } }, "callee": { "type": "MemberExpression", - "start": 46838, - "end": 46847, + "start": 46874, + "end": 46883, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 27 }, "end": { - "line": 1236, + "line": 1237, "column": 36 } }, "object": { "type": "Identifier", - "start": 46838, - "end": 46842, + "start": 46874, + "end": 46878, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 27 }, "end": { - "line": 1236, + "line": 1237, "column": 31 }, "identifierName": "math" @@ -11291,15 +11407,15 @@ }, "property": { "type": "Identifier", - "start": 46843, - "end": 46847, + "start": 46879, + "end": 46883, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 32 }, "end": { - "line": 1236, + "line": 1237, "column": 36 }, "identifierName": "vec4" @@ -11311,43 +11427,43 @@ "arguments": [ { "type": "LogicalExpression", - "start": 46848, - "end": 46878, + "start": 46884, + "end": 46914, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 37 }, "end": { - "line": 1236, + "line": 1237, "column": 67 } }, "left": { "type": "MemberExpression", - "start": 46848, - "end": 46862, + "start": 46884, + "end": 46898, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 37 }, "end": { - "line": 1236, + "line": 1237, "column": 51 } }, "object": { "type": "Identifier", - "start": 46848, - "end": 46851, + "start": 46884, + "end": 46887, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 37 }, "end": { - "line": 1236, + "line": 1237, "column": 40 }, "identifierName": "cfg" @@ -11356,15 +11472,15 @@ }, "property": { "type": "Identifier", - "start": 46852, - "end": 46862, + "start": 46888, + "end": 46898, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 41 }, "end": { - "line": 1236, + "line": 1237, "column": 51 }, "identifierName": "quaternion" @@ -11376,30 +11492,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 46866, - "end": 46878, + "start": 46902, + "end": 46914, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 55 }, "end": { - "line": 1236, + "line": 1237, "column": 67 } }, "elements": [ { "type": "NumericLiteral", - "start": 46867, - "end": 46868, + "start": 46903, + "end": 46904, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 56 }, "end": { - "line": 1236, + "line": 1237, "column": 57 } }, @@ -11411,15 +11527,15 @@ }, { "type": "NumericLiteral", - "start": 46870, - "end": 46871, + "start": 46906, + "end": 46907, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 59 }, "end": { - "line": 1236, + "line": 1237, "column": 60 } }, @@ -11431,15 +11547,15 @@ }, { "type": "NumericLiteral", - "start": 46873, - "end": 46874, + "start": 46909, + "end": 46910, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 62 }, "end": { - "line": 1236, + "line": 1237, "column": 63 } }, @@ -11451,15 +11567,15 @@ }, { "type": "NumericLiteral", - "start": 46876, - "end": 46877, + "start": 46912, + "end": 46913, "loc": { "start": { - "line": 1236, + "line": 1237, "column": 65 }, "end": { - "line": 1236, + "line": 1237, "column": 66 } }, @@ -11478,73 +11594,73 @@ }, { "type": "ExpressionStatement", - "start": 46889, - "end": 46959, + "start": 46925, + "end": 46995, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 8 }, "end": { - "line": 1237, + "line": 1238, "column": 78 } }, "expression": { "type": "AssignmentExpression", - "start": 46889, - "end": 46958, + "start": 46925, + "end": 46994, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 8 }, "end": { - "line": 1237, + "line": 1238, "column": 77 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46889, - "end": 46914, + "start": 46925, + "end": 46950, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 8 }, "end": { - "line": 1237, + "line": 1238, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 46889, - "end": 46893, + "start": 46925, + "end": 46929, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 8 }, "end": { - "line": 1237, + "line": 1238, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46894, - "end": 46914, + "start": 46930, + "end": 46950, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 13 }, "end": { - "line": 1237, + "line": 1238, "column": 33 }, "identifierName": "_conjugateQuaternion" @@ -11555,43 +11671,43 @@ }, "right": { "type": "CallExpression", - "start": 46917, - "end": 46958, + "start": 46953, + "end": 46994, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 36 }, "end": { - "line": 1237, + "line": 1238, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 46917, - "end": 46926, + "start": 46953, + "end": 46962, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 36 }, "end": { - "line": 1237, + "line": 1238, "column": 45 } }, "object": { "type": "Identifier", - "start": 46917, - "end": 46921, + "start": 46953, + "end": 46957, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 36 }, "end": { - "line": 1237, + "line": 1238, "column": 40 }, "identifierName": "math" @@ -11600,15 +11716,15 @@ }, "property": { "type": "Identifier", - "start": 46922, - "end": 46926, + "start": 46958, + "end": 46962, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 41 }, "end": { - "line": 1237, + "line": 1238, "column": 45 }, "identifierName": "vec4" @@ -11620,43 +11736,43 @@ "arguments": [ { "type": "LogicalExpression", - "start": 46927, - "end": 46957, + "start": 46963, + "end": 46993, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 46 }, "end": { - "line": 1237, + "line": 1238, "column": 76 } }, "left": { "type": "MemberExpression", - "start": 46927, - "end": 46941, + "start": 46963, + "end": 46977, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 46 }, "end": { - "line": 1237, + "line": 1238, "column": 60 } }, "object": { "type": "Identifier", - "start": 46927, - "end": 46930, + "start": 46963, + "end": 46966, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 46 }, "end": { - "line": 1237, + "line": 1238, "column": 49 }, "identifierName": "cfg" @@ -11665,15 +11781,15 @@ }, "property": { "type": "Identifier", - "start": 46931, - "end": 46941, + "start": 46967, + "end": 46977, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 50 }, "end": { - "line": 1237, + "line": 1238, "column": 60 }, "identifierName": "quaternion" @@ -11685,30 +11801,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 46945, - "end": 46957, + "start": 46981, + "end": 46993, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 64 }, "end": { - "line": 1237, + "line": 1238, "column": 76 } }, "elements": [ { "type": "NumericLiteral", - "start": 46946, - "end": 46947, + "start": 46982, + "end": 46983, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 65 }, "end": { - "line": 1237, + "line": 1238, "column": 66 } }, @@ -11720,15 +11836,15 @@ }, { "type": "NumericLiteral", - "start": 46949, - "end": 46950, + "start": 46985, + "end": 46986, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 68 }, "end": { - "line": 1237, + "line": 1238, "column": 69 } }, @@ -11740,15 +11856,15 @@ }, { "type": "NumericLiteral", - "start": 46952, - "end": 46953, + "start": 46988, + "end": 46989, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 71 }, "end": { - "line": 1237, + "line": 1238, "column": 72 } }, @@ -11760,15 +11876,15 @@ }, { "type": "NumericLiteral", - "start": 46955, - "end": 46956, + "start": 46991, + "end": 46992, "loc": { "start": { - "line": 1237, + "line": 1238, "column": 74 }, "end": { - "line": 1237, + "line": 1238, "column": 75 } }, @@ -11787,43 +11903,43 @@ }, { "type": "IfStatement", - "start": 46969, - "end": 47075, + "start": 47005, + "end": 47111, "loc": { "start": { - "line": 1239, + "line": 1240, "column": 8 }, "end": { - "line": 1241, + "line": 1242, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 46973, - "end": 46985, + "start": 47009, + "end": 47021, "loc": { "start": { - "line": 1239, + "line": 1240, "column": 12 }, "end": { - "line": 1239, + "line": 1240, "column": 24 } }, "object": { "type": "Identifier", - "start": 46973, - "end": 46976, + "start": 47009, + "end": 47012, "loc": { "start": { - "line": 1239, + "line": 1240, "column": 12 }, "end": { - "line": 1239, + "line": 1240, "column": 15 }, "identifierName": "cfg" @@ -11832,15 +11948,15 @@ }, "property": { "type": "Identifier", - "start": 46977, - "end": 46985, + "start": 47013, + "end": 47021, "loc": { "start": { - "line": 1239, + "line": 1240, "column": 16 }, "end": { - "line": 1239, + "line": 1240, "column": 24 }, "identifierName": "rotation" @@ -11851,72 +11967,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 46987, - "end": 47075, + "start": 47023, + "end": 47111, "loc": { "start": { - "line": 1239, + "line": 1240, "column": 26 }, "end": { - "line": 1241, + "line": 1242, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 47001, - "end": 47065, + "start": 47037, + "end": 47101, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 12 }, "end": { - "line": 1240, + "line": 1241, "column": 76 } }, "expression": { "type": "CallExpression", - "start": 47001, - "end": 47064, + "start": 47037, + "end": 47100, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 12 }, "end": { - "line": 1240, + "line": 1241, "column": 75 } }, "callee": { "type": "MemberExpression", - "start": 47001, - "end": 47023, + "start": 47037, + "end": 47059, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 12 }, "end": { - "line": 1240, + "line": 1241, "column": 34 } }, "object": { "type": "Identifier", - "start": 47001, - "end": 47005, + "start": 47037, + "end": 47041, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 12 }, "end": { - "line": 1240, + "line": 1241, "column": 16 }, "identifierName": "math" @@ -11925,15 +12041,15 @@ }, "property": { "type": "Identifier", - "start": 47006, - "end": 47023, + "start": 47042, + "end": 47059, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 17 }, "end": { - "line": 1240, + "line": 1241, "column": 34 }, "identifierName": "eulerToQuaternion" @@ -11945,44 +12061,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 47024, - "end": 47038, + "start": 47060, + "end": 47074, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 35 }, "end": { - "line": 1240, + "line": 1241, "column": 49 } }, "object": { "type": "ThisExpression", - "start": 47024, - "end": 47028, + "start": 47060, + "end": 47064, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 35 }, "end": { - "line": 1240, + "line": 1241, "column": 39 } } }, "property": { "type": "Identifier", - "start": 47029, - "end": 47038, + "start": 47065, + "end": 47074, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 40 }, "end": { - "line": 1240, + "line": 1241, "column": 49 }, "identifierName": "_rotation" @@ -11993,15 +12109,15 @@ }, { "type": "StringLiteral", - "start": 47040, - "end": 47045, + "start": 47076, + "end": 47081, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 51 }, "end": { - "line": 1240, + "line": 1241, "column": 56 } }, @@ -12013,44 +12129,44 @@ }, { "type": "MemberExpression", - "start": 47047, - "end": 47063, + "start": 47083, + "end": 47099, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 58 }, "end": { - "line": 1240, + "line": 1241, "column": 74 } }, "object": { "type": "ThisExpression", - "start": 47047, - "end": 47051, + "start": 47083, + "end": 47087, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 58 }, "end": { - "line": 1240, + "line": 1241, "column": 62 } } }, "property": { "type": "Identifier", - "start": 47052, - "end": 47063, + "start": 47088, + "end": 47099, "loc": { "start": { - "line": 1240, + "line": 1241, "column": 63 }, "end": { - "line": 1240, + "line": 1241, "column": 74 }, "identifierName": "_quaternion" @@ -12069,73 +12185,73 @@ }, { "type": "ExpressionStatement", - "start": 47084, - "end": 47132, + "start": 47120, + "end": 47168, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 8 }, "end": { - "line": 1242, + "line": 1243, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 47084, - "end": 47131, + "start": 47120, + "end": 47167, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 8 }, "end": { - "line": 1242, + "line": 1243, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47084, - "end": 47095, + "start": 47120, + "end": 47131, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 8 }, "end": { - "line": 1242, + "line": 1243, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 47084, - "end": 47088, + "start": 47120, + "end": 47124, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 8 }, "end": { - "line": 1242, + "line": 1243, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47089, - "end": 47095, + "start": 47125, + "end": 47131, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 13 }, "end": { - "line": 1242, + "line": 1243, "column": 19 }, "identifierName": "_scale" @@ -12146,43 +12262,43 @@ }, "right": { "type": "CallExpression", - "start": 47098, - "end": 47131, + "start": 47134, + "end": 47167, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 22 }, "end": { - "line": 1242, + "line": 1243, "column": 55 } }, "callee": { "type": "MemberExpression", - "start": 47098, - "end": 47107, + "start": 47134, + "end": 47143, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 22 }, "end": { - "line": 1242, + "line": 1243, "column": 31 } }, "object": { "type": "Identifier", - "start": 47098, - "end": 47102, + "start": 47134, + "end": 47138, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 22 }, "end": { - "line": 1242, + "line": 1243, "column": 26 }, "identifierName": "math" @@ -12191,15 +12307,15 @@ }, "property": { "type": "Identifier", - "start": 47103, - "end": 47107, + "start": 47139, + "end": 47143, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 27 }, "end": { - "line": 1242, + "line": 1243, "column": 31 }, "identifierName": "vec3" @@ -12211,43 +12327,43 @@ "arguments": [ { "type": "LogicalExpression", - "start": 47108, - "end": 47130, + "start": 47144, + "end": 47166, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 32 }, "end": { - "line": 1242, + "line": 1243, "column": 54 } }, "left": { "type": "MemberExpression", - "start": 47108, - "end": 47117, + "start": 47144, + "end": 47153, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 32 }, "end": { - "line": 1242, + "line": 1243, "column": 41 } }, "object": { "type": "Identifier", - "start": 47108, - "end": 47111, + "start": 47144, + "end": 47147, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 32 }, "end": { - "line": 1242, + "line": 1243, "column": 35 }, "identifierName": "cfg" @@ -12256,15 +12372,15 @@ }, "property": { "type": "Identifier", - "start": 47112, - "end": 47117, + "start": 47148, + "end": 47153, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 36 }, "end": { - "line": 1242, + "line": 1243, "column": 41 }, "identifierName": "scale" @@ -12276,30 +12392,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 47121, - "end": 47130, + "start": 47157, + "end": 47166, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 45 }, "end": { - "line": 1242, + "line": 1243, "column": 54 } }, "elements": [ { "type": "NumericLiteral", - "start": 47122, - "end": 47123, + "start": 47158, + "end": 47159, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 46 }, "end": { - "line": 1242, + "line": 1243, "column": 47 } }, @@ -12311,15 +12427,15 @@ }, { "type": "NumericLiteral", - "start": 47125, - "end": 47126, + "start": 47161, + "end": 47162, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 49 }, "end": { - "line": 1242, + "line": 1243, "column": 50 } }, @@ -12331,15 +12447,15 @@ }, { "type": "NumericLiteral", - "start": 47128, - "end": 47129, + "start": 47164, + "end": 47165, "loc": { "start": { - "line": 1242, + "line": 1243, "column": 52 }, "end": { - "line": 1242, + "line": 1243, "column": 53 } }, @@ -12358,73 +12474,73 @@ }, { "type": "ExpressionStatement", - "start": 47142, - "end": 47182, + "start": 47178, + "end": 47218, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 8 }, "end": { - "line": 1244, + "line": 1245, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 47142, - "end": 47181, + "start": 47178, + "end": 47217, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 8 }, "end": { - "line": 1244, + "line": 1245, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47142, - "end": 47167, + "start": 47178, + "end": 47203, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 8 }, "end": { - "line": 1244, + "line": 1245, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 47142, - "end": 47146, + "start": 47178, + "end": 47182, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 8 }, "end": { - "line": 1244, + "line": 1245, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47147, - "end": 47167, + "start": 47183, + "end": 47203, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 13 }, "end": { - "line": 1244, + "line": 1245, "column": 33 }, "identifierName": "_worldRotationMatrix" @@ -12435,43 +12551,43 @@ }, "right": { "type": "CallExpression", - "start": 47170, - "end": 47181, + "start": 47206, + "end": 47217, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 36 }, "end": { - "line": 1244, + "line": 1245, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 47170, - "end": 47179, + "start": 47206, + "end": 47215, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 36 }, "end": { - "line": 1244, + "line": 1245, "column": 45 } }, "object": { "type": "Identifier", - "start": 47170, - "end": 47174, + "start": 47206, + "end": 47210, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 36 }, "end": { - "line": 1244, + "line": 1245, "column": 40 }, "identifierName": "math" @@ -12480,15 +12596,15 @@ }, "property": { "type": "Identifier", - "start": 47175, - "end": 47179, + "start": 47211, + "end": 47215, "loc": { "start": { - "line": 1244, + "line": 1245, "column": 41 }, "end": { - "line": 1244, + "line": 1245, "column": 45 }, "identifierName": "mat4" @@ -12503,73 +12619,73 @@ }, { "type": "ExpressionStatement", - "start": 47191, - "end": 47240, + "start": 47227, + "end": 47276, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 8 }, "end": { - "line": 1245, + "line": 1246, "column": 57 } }, "expression": { "type": "AssignmentExpression", - "start": 47191, - "end": 47239, + "start": 47227, + "end": 47275, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 8 }, "end": { - "line": 1245, + "line": 1246, "column": 56 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47191, - "end": 47225, + "start": 47227, + "end": 47261, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 8 }, "end": { - "line": 1245, + "line": 1246, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 47191, - "end": 47195, + "start": 47227, + "end": 47231, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 8 }, "end": { - "line": 1245, + "line": 1246, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47196, - "end": 47225, + "start": 47232, + "end": 47261, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 13 }, "end": { - "line": 1245, + "line": 1246, "column": 42 }, "identifierName": "_worldRotationMatrixConjugate" @@ -12580,43 +12696,43 @@ }, "right": { "type": "CallExpression", - "start": 47228, - "end": 47239, + "start": 47264, + "end": 47275, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 45 }, "end": { - "line": 1245, + "line": 1246, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 47228, - "end": 47237, + "start": 47264, + "end": 47273, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 45 }, "end": { - "line": 1245, + "line": 1246, "column": 54 } }, "object": { "type": "Identifier", - "start": 47228, - "end": 47232, + "start": 47264, + "end": 47268, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 45 }, "end": { - "line": 1245, + "line": 1246, "column": 49 }, "identifierName": "math" @@ -12625,15 +12741,15 @@ }, "property": { "type": "Identifier", - "start": 47233, - "end": 47237, + "start": 47269, + "end": 47273, "loc": { "start": { - "line": 1245, + "line": 1246, "column": 50 }, "end": { - "line": 1245, + "line": 1246, "column": 54 }, "identifierName": "mat4" @@ -12648,73 +12764,73 @@ }, { "type": "ExpressionStatement", - "start": 47249, - "end": 47276, + "start": 47285, + "end": 47312, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 8 }, "end": { - "line": 1246, + "line": 1247, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 47249, - "end": 47275, + "start": 47285, + "end": 47311, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 8 }, "end": { - "line": 1246, + "line": 1247, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47249, - "end": 47261, + "start": 47285, + "end": 47297, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 8 }, "end": { - "line": 1246, + "line": 1247, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 47249, - "end": 47253, + "start": 47285, + "end": 47289, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 8 }, "end": { - "line": 1246, + "line": 1247, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47254, - "end": 47261, + "start": 47290, + "end": 47297, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 13 }, "end": { - "line": 1246, + "line": 1247, "column": 20 }, "identifierName": "_matrix" @@ -12725,43 +12841,43 @@ }, "right": { "type": "CallExpression", - "start": 47264, - "end": 47275, + "start": 47300, + "end": 47311, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 23 }, "end": { - "line": 1246, + "line": 1247, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 47264, - "end": 47273, + "start": 47300, + "end": 47309, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 23 }, "end": { - "line": 1246, + "line": 1247, "column": 32 } }, "object": { "type": "Identifier", - "start": 47264, - "end": 47268, + "start": 47300, + "end": 47304, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 23 }, "end": { - "line": 1246, + "line": 1247, "column": 27 }, "identifierName": "math" @@ -12770,15 +12886,15 @@ }, "property": { "type": "Identifier", - "start": 47269, - "end": 47273, + "start": 47305, + "end": 47309, "loc": { "start": { - "line": 1246, + "line": 1247, "column": 28 }, "end": { - "line": 1246, + "line": 1247, "column": 32 }, "identifierName": "mat4" @@ -12793,73 +12909,73 @@ }, { "type": "ExpressionStatement", - "start": 47285, - "end": 47310, + "start": 47321, + "end": 47346, "loc": { "start": { - "line": 1247, + "line": 1248, "column": 8 }, "end": { - "line": 1247, + "line": 1248, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 47285, - "end": 47309, + "start": 47321, + "end": 47345, "loc": { "start": { - "line": 1247, + "line": 1248, "column": 8 }, "end": { - "line": 1247, + "line": 1248, "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47285, - "end": 47302, + "start": 47321, + "end": 47338, "loc": { "start": { - "line": 1247, + "line": 1248, "column": 8 }, "end": { - "line": 1247, + "line": 1248, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 47285, - "end": 47289, + "start": 47321, + "end": 47325, "loc": { "start": { - "line": 1247, + "line": 1248, "column": 8 }, "end": { - "line": 1247, + "line": 1248, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47290, - "end": 47302, + "start": 47326, + "end": 47338, "loc": { "start": { - "line": 1247, + "line": 1248, "column": 13 }, "end": { - "line": 1247, + "line": 1248, "column": 25 }, "identifierName": "_matrixDirty" @@ -12870,15 +12986,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 47305, - "end": 47309, + "start": 47341, + "end": 47345, "loc": { "start": { - "line": 1247, + "line": 1248, "column": 28 }, "end": { - "line": 1247, + "line": 1248, "column": 32 } }, @@ -12888,72 +13004,72 @@ }, { "type": "ExpressionStatement", - "start": 47320, - "end": 47344, + "start": 47356, + "end": 47380, "loc": { "start": { - "line": 1249, + "line": 1250, "column": 8 }, "end": { - "line": 1249, + "line": 1250, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 47320, - "end": 47343, + "start": 47356, + "end": 47379, "loc": { "start": { - "line": 1249, + "line": 1250, "column": 8 }, "end": { - "line": 1249, + "line": 1250, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 47320, - "end": 47341, + "start": 47356, + "end": 47377, "loc": { "start": { - "line": 1249, + "line": 1250, "column": 8 }, "end": { - "line": 1249, + "line": 1250, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 47320, - "end": 47324, + "start": 47356, + "end": 47360, "loc": { "start": { - "line": 1249, + "line": 1250, "column": 8 }, "end": { - "line": 1249, + "line": 1250, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47325, - "end": 47341, + "start": 47361, + "end": 47377, "loc": { "start": { - "line": 1249, + "line": 1250, "column": 13 }, "end": { - "line": 1249, + "line": 1250, "column": 29 }, "identifierName": "_rebuildMatrices" @@ -12967,73 +13083,73 @@ }, { "type": "ExpressionStatement", - "start": 47354, - "end": 47392, + "start": 47390, + "end": 47428, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 8 }, "end": { - "line": 1251, + "line": 1252, "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 47354, - "end": 47391, + "start": 47390, + "end": 47427, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 8 }, "end": { - "line": 1251, + "line": 1252, "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47354, - "end": 47377, + "start": 47390, + "end": 47413, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 8 }, "end": { - "line": 1251, + "line": 1252, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 47354, - "end": 47358, + "start": 47390, + "end": 47394, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 8 }, "end": { - "line": 1251, + "line": 1252, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47359, - "end": 47377, + "start": 47395, + "end": 47413, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 13 }, "end": { - "line": 1251, + "line": 1252, "column": 31 }, "identifierName": "_worldNormalMatrix" @@ -13044,43 +13160,43 @@ }, "right": { "type": "CallExpression", - "start": 47380, - "end": 47391, + "start": 47416, + "end": 47427, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 34 }, "end": { - "line": 1251, + "line": 1252, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 47380, - "end": 47389, + "start": 47416, + "end": 47425, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 34 }, "end": { - "line": 1251, + "line": 1252, "column": 43 } }, "object": { "type": "Identifier", - "start": 47380, - "end": 47384, + "start": 47416, + "end": 47420, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 34 }, "end": { - "line": 1251, + "line": 1252, "column": 38 }, "identifierName": "math" @@ -13089,15 +13205,15 @@ }, "property": { "type": "Identifier", - "start": 47385, - "end": 47389, + "start": 47421, + "end": 47425, "loc": { "start": { - "line": 1251, + "line": 1252, "column": 39 }, "end": { - "line": 1251, + "line": 1252, "column": 43 }, "identifierName": "mat4" @@ -13112,57 +13228,57 @@ }, { "type": "ExpressionStatement", - "start": 47401, - "end": 47457, + "start": 47437, + "end": 47493, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 8 }, "end": { - "line": 1252, + "line": 1253, "column": 64 } }, "expression": { "type": "CallExpression", - "start": 47401, - "end": 47456, + "start": 47437, + "end": 47492, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 8 }, "end": { - "line": 1252, + "line": 1253, "column": 63 } }, "callee": { "type": "MemberExpression", - "start": 47401, - "end": 47417, + "start": 47437, + "end": 47453, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 8 }, "end": { - "line": 1252, + "line": 1253, "column": 24 } }, "object": { "type": "Identifier", - "start": 47401, - "end": 47405, + "start": 47437, + "end": 47441, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 8 }, "end": { - "line": 1252, + "line": 1253, "column": 12 }, "identifierName": "math" @@ -13171,15 +13287,15 @@ }, "property": { "type": "Identifier", - "start": 47406, - "end": 47417, + "start": 47442, + "end": 47453, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 13 }, "end": { - "line": 1252, + "line": 1253, "column": 24 }, "identifierName": "inverseMat4" @@ -13191,44 +13307,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 47418, - "end": 47430, + "start": 47454, + "end": 47466, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 25 }, "end": { - "line": 1252, + "line": 1253, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 47418, - "end": 47422, + "start": 47454, + "end": 47458, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 25 }, "end": { - "line": 1252, + "line": 1253, "column": 29 } } }, "property": { "type": "Identifier", - "start": 47423, - "end": 47430, + "start": 47459, + "end": 47466, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 30 }, "end": { - "line": 1252, + "line": 1253, "column": 37 }, "identifierName": "_matrix" @@ -13239,44 +13355,44 @@ }, { "type": "MemberExpression", - "start": 47432, - "end": 47455, + "start": 47468, + "end": 47491, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 39 }, "end": { - "line": 1252, + "line": 1253, "column": 62 } }, "object": { "type": "ThisExpression", - "start": 47432, - "end": 47436, + "start": 47468, + "end": 47472, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 39 }, "end": { - "line": 1252, + "line": 1253, "column": 43 } } }, "property": { "type": "Identifier", - "start": 47437, - "end": 47455, + "start": 47473, + "end": 47491, "loc": { "start": { - "line": 1252, + "line": 1253, "column": 44 }, "end": { - "line": 1252, + "line": 1253, "column": 62 }, "identifierName": "_worldNormalMatrix" @@ -13290,57 +13406,57 @@ }, { "type": "ExpressionStatement", - "start": 47466, - "end": 47510, + "start": 47502, + "end": 47546, "loc": { "start": { - "line": 1253, + "line": 1254, "column": 8 }, "end": { - "line": 1253, + "line": 1254, "column": 52 } }, "expression": { "type": "CallExpression", - "start": 47466, - "end": 47509, + "start": 47502, + "end": 47545, "loc": { "start": { - "line": 1253, + "line": 1254, "column": 8 }, "end": { - "line": 1253, + "line": 1254, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 47466, - "end": 47484, + "start": 47502, + "end": 47520, "loc": { "start": { - "line": 1253, + "line": 1254, "column": 8 }, "end": { - "line": 1253, + "line": 1254, "column": 26 } }, "object": { "type": "Identifier", - "start": 47466, - "end": 47470, + "start": 47502, + "end": 47506, "loc": { "start": { - "line": 1253, + "line": 1254, "column": 8 }, "end": { - "line": 1253, + "line": 1254, "column": 12 }, "identifierName": "math" @@ -13349,15 +13465,15 @@ }, "property": { "type": "Identifier", - "start": 47471, - "end": 47484, + "start": 47507, + "end": 47520, "loc": { "start": { - "line": 1253, + "line": 1254, "column": 13 }, "end": { - "line": 1253, + "line": 1254, "column": 26 }, "identifierName": "transposeMat4" @@ -13369,44 +13485,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 47485, - "end": 47508, + "start": 47521, + "end": 47544, "loc": { "start": { - "line": 1253, + "line": 1254, "column": 27 }, "end": { - "line": 1253, + "line": 1254, "column": 50 } }, "object": { "type": "ThisExpression", - "start": 47485, - "end": 47489, + "start": 47521, + "end": 47525, "loc": { "start": { - "line": 1253, + "line": 1254, "column": 27 }, "end": { - "line": 1253, + "line": 1254, "column": 31 } } }, "property": { "type": "Identifier", - "start": 47490, - "end": 47508, + "start": 47526, + "end": 47544, "loc": { "start": { - "line": 1253, + "line": 1254, "column": 32 }, "end": { - "line": 1253, + "line": 1254, "column": 50 }, "identifierName": "_worldNormalMatrix" @@ -13420,99 +13536,99 @@ }, { "type": "IfStatement", - "start": 47520, - "end": 47790, + "start": 47556, + "end": 47826, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 8 }, "end": { - "line": 1260, + "line": 1261, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 47524, - "end": 47597, + "start": 47560, + "end": 47633, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 12 }, "end": { - "line": 1255, + "line": 1256, "column": 85 } }, "left": { "type": "LogicalExpression", - "start": 47524, - "end": 47579, + "start": 47560, + "end": 47615, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 12 }, "end": { - "line": 1255, + "line": 1256, "column": 67 } }, "left": { "type": "LogicalExpression", - "start": 47524, - "end": 47566, + "start": 47560, + "end": 47602, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 12 }, "end": { - "line": 1255, + "line": 1256, "column": 54 } }, "left": { "type": "LogicalExpression", - "start": 47524, - "end": 47550, + "start": 47560, + "end": 47586, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 12 }, "end": { - "line": 1255, + "line": 1256, "column": 38 } }, "left": { "type": "MemberExpression", - "start": 47524, - "end": 47534, + "start": 47560, + "end": 47570, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 12 }, "end": { - "line": 1255, + "line": 1256, "column": 22 } }, "object": { "type": "Identifier", - "start": 47524, - "end": 47527, + "start": 47560, + "end": 47563, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 12 }, "end": { - "line": 1255, + "line": 1256, "column": 15 }, "identifierName": "cfg" @@ -13521,15 +13637,15 @@ }, "property": { "type": "Identifier", - "start": 47528, - "end": 47534, + "start": 47564, + "end": 47570, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 16 }, "end": { - "line": 1255, + "line": 1256, "column": 22 }, "identifierName": "matrix" @@ -13541,29 +13657,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 47538, - "end": 47550, + "start": 47574, + "end": 47586, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 26 }, "end": { - "line": 1255, + "line": 1256, "column": 38 } }, "object": { "type": "Identifier", - "start": 47538, - "end": 47541, + "start": 47574, + "end": 47577, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 26 }, "end": { - "line": 1255, + "line": 1256, "column": 29 }, "identifierName": "cfg" @@ -13572,15 +13688,15 @@ }, "property": { "type": "Identifier", - "start": 47542, - "end": 47550, + "start": 47578, + "end": 47586, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 30 }, "end": { - "line": 1255, + "line": 1256, "column": 38 }, "identifierName": "position" @@ -13593,29 +13709,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 47554, - "end": 47566, + "start": 47590, + "end": 47602, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 42 }, "end": { - "line": 1255, + "line": 1256, "column": 54 } }, "object": { "type": "Identifier", - "start": 47554, - "end": 47557, + "start": 47590, + "end": 47593, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 42 }, "end": { - "line": 1255, + "line": 1256, "column": 45 }, "identifierName": "cfg" @@ -13624,15 +13740,15 @@ }, "property": { "type": "Identifier", - "start": 47558, - "end": 47566, + "start": 47594, + "end": 47602, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 46 }, "end": { - "line": 1255, + "line": 1256, "column": 54 }, "identifierName": "rotation" @@ -13645,29 +13761,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 47570, - "end": 47579, + "start": 47606, + "end": 47615, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 58 }, "end": { - "line": 1255, + "line": 1256, "column": 67 } }, "object": { "type": "Identifier", - "start": 47570, - "end": 47573, + "start": 47606, + "end": 47609, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 58 }, "end": { - "line": 1255, + "line": 1256, "column": 61 }, "identifierName": "cfg" @@ -13676,15 +13792,15 @@ }, "property": { "type": "Identifier", - "start": 47574, - "end": 47579, + "start": 47610, + "end": 47615, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 62 }, "end": { - "line": 1255, + "line": 1256, "column": 67 }, "identifierName": "scale" @@ -13697,29 +13813,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 47583, - "end": 47597, + "start": 47619, + "end": 47633, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 71 }, "end": { - "line": 1255, + "line": 1256, "column": 85 } }, "object": { "type": "Identifier", - "start": 47583, - "end": 47586, + "start": 47619, + "end": 47622, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 71 }, "end": { - "line": 1255, + "line": 1256, "column": 74 }, "identifierName": "cfg" @@ -13728,15 +13844,15 @@ }, "property": { "type": "Identifier", - "start": 47587, - "end": 47597, + "start": 47623, + "end": 47633, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 75 }, "end": { - "line": 1255, + "line": 1256, "column": 85 }, "identifierName": "quaternion" @@ -13748,88 +13864,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 47599, - "end": 47790, + "start": 47635, + "end": 47826, "loc": { "start": { - "line": 1255, + "line": 1256, "column": 87 }, "end": { - "line": 1260, + "line": 1261, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 47613, - "end": 47644, + "start": 47649, + "end": 47680, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 12 }, "end": { - "line": 1256, + "line": 1257, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 47613, - "end": 47643, + "start": 47649, + "end": 47679, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 12 }, "end": { - "line": 1256, + "line": 1257, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47613, - "end": 47629, + "start": 47649, + "end": 47665, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 12 }, "end": { - "line": 1256, + "line": 1257, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 47613, - "end": 47617, + "start": 47649, + "end": 47653, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 12 }, "end": { - "line": 1256, + "line": 1257, "column": 16 } } }, "property": { "type": "Identifier", - "start": 47618, - "end": 47629, + "start": 47654, + "end": 47665, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 17 }, "end": { - "line": 1256, + "line": 1257, "column": 28 }, "identifierName": "_viewMatrix" @@ -13840,43 +13956,43 @@ }, "right": { "type": "CallExpression", - "start": 47632, - "end": 47643, + "start": 47668, + "end": 47679, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 31 }, "end": { - "line": 1256, + "line": 1257, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 47632, - "end": 47641, + "start": 47668, + "end": 47677, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 31 }, "end": { - "line": 1256, + "line": 1257, "column": 40 } }, "object": { "type": "Identifier", - "start": 47632, - "end": 47636, + "start": 47668, + "end": 47672, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 31 }, "end": { - "line": 1256, + "line": 1257, "column": 35 }, "identifierName": "math" @@ -13885,15 +14001,15 @@ }, "property": { "type": "Identifier", - "start": 47637, - "end": 47641, + "start": 47673, + "end": 47677, "loc": { "start": { - "line": 1256, + "line": 1257, "column": 36 }, "end": { - "line": 1256, + "line": 1257, "column": 40 }, "identifierName": "mat4" @@ -13908,73 +14024,73 @@ }, { "type": "ExpressionStatement", - "start": 47657, - "end": 47694, + "start": 47693, + "end": 47730, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 12 }, "end": { - "line": 1257, + "line": 1258, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 47657, - "end": 47693, + "start": 47693, + "end": 47729, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 12 }, "end": { - "line": 1257, + "line": 1258, "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47657, - "end": 47679, + "start": 47693, + "end": 47715, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 12 }, "end": { - "line": 1257, + "line": 1258, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 47657, - "end": 47661, + "start": 47693, + "end": 47697, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 12 }, "end": { - "line": 1257, + "line": 1258, "column": 16 } } }, "property": { "type": "Identifier", - "start": 47662, - "end": 47679, + "start": 47698, + "end": 47715, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 17 }, "end": { - "line": 1257, + "line": 1258, "column": 34 }, "identifierName": "_viewNormalMatrix" @@ -13985,43 +14101,43 @@ }, "right": { "type": "CallExpression", - "start": 47682, - "end": 47693, + "start": 47718, + "end": 47729, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 37 }, "end": { - "line": 1257, + "line": 1258, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 47682, - "end": 47691, + "start": 47718, + "end": 47727, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 37 }, "end": { - "line": 1257, + "line": 1258, "column": 46 } }, "object": { "type": "Identifier", - "start": 47682, - "end": 47686, + "start": 47718, + "end": 47722, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 37 }, "end": { - "line": 1257, + "line": 1258, "column": 41 }, "identifierName": "math" @@ -14030,15 +14146,15 @@ }, "property": { "type": "Identifier", - "start": 47687, - "end": 47691, + "start": 47723, + "end": 47727, "loc": { "start": { - "line": 1257, + "line": 1258, "column": 42 }, "end": { - "line": 1257, + "line": 1258, "column": 46 }, "identifierName": "mat4" @@ -14053,73 +14169,73 @@ }, { "type": "ExpressionStatement", - "start": 47707, - "end": 47736, + "start": 47743, + "end": 47772, "loc": { "start": { - "line": 1258, + "line": 1259, "column": 12 }, "end": { - "line": 1258, + "line": 1259, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 47707, - "end": 47735, + "start": 47743, + "end": 47771, "loc": { "start": { - "line": 1258, + "line": 1259, "column": 12 }, "end": { - "line": 1258, + "line": 1259, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47707, - "end": 47728, + "start": 47743, + "end": 47764, "loc": { "start": { - "line": 1258, + "line": 1259, "column": 12 }, "end": { - "line": 1258, + "line": 1259, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 47707, - "end": 47711, + "start": 47743, + "end": 47747, "loc": { "start": { - "line": 1258, + "line": 1259, "column": 12 }, "end": { - "line": 1258, + "line": 1259, "column": 16 } } }, "property": { "type": "Identifier", - "start": 47712, - "end": 47728, + "start": 47748, + "end": 47764, "loc": { "start": { - "line": 1258, + "line": 1259, "column": 17 }, "end": { - "line": 1258, + "line": 1259, "column": 33 }, "identifierName": "_viewMatrixDirty" @@ -14130,15 +14246,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 47731, - "end": 47735, + "start": 47767, + "end": 47771, "loc": { "start": { - "line": 1258, + "line": 1259, "column": 36 }, "end": { - "line": 1258, + "line": 1259, "column": 40 } }, @@ -14148,73 +14264,73 @@ }, { "type": "ExpressionStatement", - "start": 47749, - "end": 47780, + "start": 47785, + "end": 47816, "loc": { "start": { - "line": 1259, + "line": 1260, "column": 12 }, "end": { - "line": 1259, + "line": 1260, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 47749, - "end": 47779, + "start": 47785, + "end": 47815, "loc": { "start": { - "line": 1259, + "line": 1260, "column": 12 }, "end": { - "line": 1259, + "line": 1260, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47749, - "end": 47772, + "start": 47785, + "end": 47808, "loc": { "start": { - "line": 1259, + "line": 1260, "column": 12 }, "end": { - "line": 1259, + "line": 1260, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 47749, - "end": 47753, + "start": 47785, + "end": 47789, "loc": { "start": { - "line": 1259, + "line": 1260, "column": 12 }, "end": { - "line": 1259, + "line": 1260, "column": 16 } } }, "property": { "type": "Identifier", - "start": 47754, - "end": 47772, + "start": 47790, + "end": 47808, "loc": { "start": { - "line": 1259, + "line": 1260, "column": 17 }, "end": { - "line": 1259, + "line": 1260, "column": 35 }, "identifierName": "_matrixNonIdentity" @@ -14225,15 +14341,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 47775, - "end": 47779, + "start": 47811, + "end": 47815, "loc": { "start": { - "line": 1259, + "line": 1260, "column": 38 }, "end": { - "line": 1259, + "line": 1260, "column": 42 } }, @@ -14248,73 +14364,73 @@ }, { "type": "ExpressionStatement", - "start": 47800, - "end": 47820, + "start": 47836, + "end": 47856, "loc": { "start": { - "line": 1262, + "line": 1263, "column": 8 }, "end": { - "line": 1262, + "line": 1263, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 47800, - "end": 47819, + "start": 47836, + "end": 47855, "loc": { "start": { - "line": 1262, + "line": 1263, "column": 8 }, "end": { - "line": 1262, + "line": 1263, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47800, - "end": 47813, + "start": 47836, + "end": 47849, "loc": { "start": { - "line": 1262, + "line": 1263, "column": 8 }, "end": { - "line": 1262, + "line": 1263, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 47800, - "end": 47804, + "start": 47836, + "end": 47840, "loc": { "start": { - "line": 1262, + "line": 1263, "column": 8 }, "end": { - "line": 1262, + "line": 1263, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47805, - "end": 47813, + "start": 47841, + "end": 47849, "loc": { "start": { - "line": 1262, + "line": 1263, "column": 13 }, "end": { - "line": 1262, + "line": 1263, "column": 21 }, "identifierName": "_opacity" @@ -14325,15 +14441,15 @@ }, "right": { "type": "NumericLiteral", - "start": 47816, - "end": 47819, + "start": 47852, + "end": 47855, "loc": { "start": { - "line": 1262, + "line": 1263, "column": 24 }, "end": { - "line": 1262, + "line": 1263, "column": 27 } }, @@ -14347,73 +14463,73 @@ }, { "type": "ExpressionStatement", - "start": 47829, - "end": 47856, + "start": 47865, + "end": 47892, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 8 }, "end": { - "line": 1263, + "line": 1264, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 47829, - "end": 47855, + "start": 47865, + "end": 47891, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 8 }, "end": { - "line": 1263, + "line": 1264, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47829, - "end": 47843, + "start": 47865, + "end": 47879, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 8 }, "end": { - "line": 1263, + "line": 1264, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 47829, - "end": 47833, + "start": 47865, + "end": 47869, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 8 }, "end": { - "line": 1263, + "line": 1264, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47834, - "end": 47843, + "start": 47870, + "end": 47879, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 13 }, "end": { - "line": 1263, + "line": 1264, "column": 22 }, "identifierName": "_colorize" @@ -14424,30 +14540,30 @@ }, "right": { "type": "ArrayExpression", - "start": 47846, - "end": 47855, + "start": 47882, + "end": 47891, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 25 }, "end": { - "line": 1263, + "line": 1264, "column": 34 } }, "elements": [ { "type": "NumericLiteral", - "start": 47847, - "end": 47848, + "start": 47883, + "end": 47884, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 26 }, "end": { - "line": 1263, + "line": 1264, "column": 27 } }, @@ -14459,15 +14575,15 @@ }, { "type": "NumericLiteral", - "start": 47850, - "end": 47851, + "start": 47886, + "end": 47887, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 29 }, "end": { - "line": 1263, + "line": 1264, "column": 30 } }, @@ -14479,15 +14595,15 @@ }, { "type": "NumericLiteral", - "start": 47853, - "end": 47854, + "start": 47889, + "end": 47890, "loc": { "start": { - "line": 1263, + "line": 1264, "column": 32 }, "end": { - "line": 1263, + "line": 1264, "column": 33 } }, @@ -14503,173 +14619,8 @@ }, { "type": "ExpressionStatement", - "start": 47866, - "end": 47912, - "loc": { - "start": { - "line": 1265, - "column": 8 - }, - "end": { - "line": 1265, - "column": 54 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 47866, - "end": 47911, - "loc": { - "start": { - "line": 1265, - "column": 8 - }, - "end": { - "line": 1265, - "column": 53 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 47866, - "end": 47882, - "loc": { - "start": { - "line": 1265, - "column": 8 - }, - "end": { - "line": 1265, - "column": 24 - } - }, - "object": { - "type": "ThisExpression", - "start": 47866, - "end": 47870, - "loc": { - "start": { - "line": 1265, - "column": 8 - }, - "end": { - "line": 1265, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 47871, - "end": 47882, - "loc": { - "start": { - "line": 1265, - "column": 13 - }, - "end": { - "line": 1265, - "column": 24 - }, - "identifierName": "_saoEnabled" - }, - "name": "_saoEnabled" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 47886, - "end": 47910, - "loc": { - "start": { - "line": 1265, - "column": 28 - }, - "end": { - "line": 1265, - "column": 52 - } - }, - "left": { - "type": "MemberExpression", - "start": 47886, - "end": 47900, - "loc": { - "start": { - "line": 1265, - "column": 28 - }, - "end": { - "line": 1265, - "column": 42 - } - }, - "object": { - "type": "Identifier", - "start": 47886, - "end": 47889, - "loc": { - "start": { - "line": 1265, - "column": 28 - }, - "end": { - "line": 1265, - "column": 31 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 47890, - "end": 47900, - "loc": { - "start": { - "line": 1265, - "column": 32 - }, - "end": { - "line": 1265, - "column": 42 - }, - "identifierName": "saoEnabled" - }, - "name": "saoEnabled" - }, - "computed": false - }, - "operator": "!==", - "right": { - "type": "BooleanLiteral", - "start": 47905, - "end": 47910, - "loc": { - "start": { - "line": 1265, - "column": 47 - }, - "end": { - "line": 1265, - "column": 52 - } - }, - "value": false - }, - "extra": { - "parenthesized": true, - "parenStart": 47885 - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 47921, - "end": 47967, + "start": 47902, + "end": 47948, "loc": { "start": { "line": 1266, @@ -14682,8 +14633,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 47921, - "end": 47966, + "start": 47902, + "end": 47947, "loc": { "start": { "line": 1266, @@ -14697,8 +14648,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 47921, - "end": 47937, + "start": 47902, + "end": 47918, "loc": { "start": { "line": 1266, @@ -14711,8 +14662,8 @@ }, "object": { "type": "ThisExpression", - "start": 47921, - "end": 47925, + "start": 47902, + "end": 47906, "loc": { "start": { "line": 1266, @@ -14726,8 +14677,8 @@ }, "property": { "type": "Identifier", - "start": 47926, - "end": 47937, + "start": 47907, + "end": 47918, "loc": { "start": { "line": 1266, @@ -14737,16 +14688,16 @@ "line": 1266, "column": 24 }, - "identifierName": "_pbrEnabled" + "identifierName": "_saoEnabled" }, - "name": "_pbrEnabled" + "name": "_saoEnabled" }, "computed": false }, "right": { "type": "BinaryExpression", - "start": 47941, - "end": 47965, + "start": 47922, + "end": 47946, "loc": { "start": { "line": 1266, @@ -14759,8 +14710,8 @@ }, "left": { "type": "MemberExpression", - "start": 47941, - "end": 47955, + "start": 47922, + "end": 47936, "loc": { "start": { "line": 1266, @@ -14773,8 +14724,8 @@ }, "object": { "type": "Identifier", - "start": 47941, - "end": 47944, + "start": 47922, + "end": 47925, "loc": { "start": { "line": 1266, @@ -14790,8 +14741,8 @@ }, "property": { "type": "Identifier", - "start": 47945, - "end": 47955, + "start": 47926, + "end": 47936, "loc": { "start": { "line": 1266, @@ -14801,17 +14752,17 @@ "line": 1266, "column": 42 }, - "identifierName": "pbrEnabled" + "identifierName": "saoEnabled" }, - "name": "pbrEnabled" + "name": "saoEnabled" }, "computed": false }, "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 47960, - "end": 47965, + "start": 47941, + "end": 47946, "loc": { "start": { "line": 1266, @@ -14826,15 +14777,15 @@ }, "extra": { "parenthesized": true, - "parenStart": 47940 + "parenStart": 47921 } } } }, { "type": "ExpressionStatement", - "start": 47976, - "end": 48040, + "start": 47957, + "end": 48003, "loc": { "start": { "line": 1267, @@ -14842,13 +14793,13 @@ }, "end": { "line": 1267, - "column": 72 + "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 47976, - "end": 48039, + "start": 47957, + "end": 48002, "loc": { "start": { "line": 1267, @@ -14856,14 +14807,14 @@ }, "end": { "line": 1267, - "column": 71 + "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47976, - "end": 48001, + "start": 47957, + "end": 47973, "loc": { "start": { "line": 1267, @@ -14871,13 +14822,13 @@ }, "end": { "line": 1267, - "column": 33 + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 47976, - "end": 47980, + "start": 47957, + "end": 47961, "loc": { "start": { "line": 1267, @@ -14891,8 +14842,8 @@ }, "property": { "type": "Identifier", - "start": 47981, - "end": 48001, + "start": 47962, + "end": 47973, "loc": { "start": { "line": 1267, @@ -14900,6 +14851,171 @@ }, "end": { "line": 1267, + "column": 24 + }, + "identifierName": "_pbrEnabled" + }, + "name": "_pbrEnabled" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 47977, + "end": 48001, + "loc": { + "start": { + "line": 1267, + "column": 28 + }, + "end": { + "line": 1267, + "column": 52 + } + }, + "left": { + "type": "MemberExpression", + "start": 47977, + "end": 47991, + "loc": { + "start": { + "line": 1267, + "column": 28 + }, + "end": { + "line": 1267, + "column": 42 + } + }, + "object": { + "type": "Identifier", + "start": 47977, + "end": 47980, + "loc": { + "start": { + "line": 1267, + "column": 28 + }, + "end": { + "line": 1267, + "column": 31 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 47981, + "end": 47991, + "loc": { + "start": { + "line": 1267, + "column": 32 + }, + "end": { + "line": 1267, + "column": 42 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "BooleanLiteral", + "start": 47996, + "end": 48001, + "loc": { + "start": { + "line": 1267, + "column": 47 + }, + "end": { + "line": 1267, + "column": 52 + } + }, + "value": false + }, + "extra": { + "parenthesized": true, + "parenStart": 47976 + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 48012, + "end": 48076, + "loc": { + "start": { + "line": 1268, + "column": 8 + }, + "end": { + "line": 1268, + "column": 72 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 48012, + "end": 48075, + "loc": { + "start": { + "line": 1268, + "column": 8 + }, + "end": { + "line": 1268, + "column": 71 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 48012, + "end": 48037, + "loc": { + "start": { + "line": 1268, + "column": 8 + }, + "end": { + "line": 1268, + "column": 33 + } + }, + "object": { + "type": "ThisExpression", + "start": 48012, + "end": 48016, + "loc": { + "start": { + "line": 1268, + "column": 8 + }, + "end": { + "line": 1268, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 48017, + "end": 48037, + "loc": { + "start": { + "line": 1268, + "column": 13 + }, + "end": { + "line": 1268, "column": 33 }, "identifierName": "_colorTextureEnabled" @@ -14910,43 +15026,43 @@ }, "right": { "type": "BinaryExpression", - "start": 48005, - "end": 48038, + "start": 48041, + "end": 48074, "loc": { "start": { - "line": 1267, + "line": 1268, "column": 37 }, "end": { - "line": 1267, + "line": 1268, "column": 70 } }, "left": { "type": "MemberExpression", - "start": 48005, - "end": 48028, + "start": 48041, + "end": 48064, "loc": { "start": { - "line": 1267, + "line": 1268, "column": 37 }, "end": { - "line": 1267, + "line": 1268, "column": 60 } }, "object": { "type": "Identifier", - "start": 48005, - "end": 48008, + "start": 48041, + "end": 48044, "loc": { "start": { - "line": 1267, + "line": 1268, "column": 37 }, "end": { - "line": 1267, + "line": 1268, "column": 40 }, "identifierName": "cfg" @@ -14955,15 +15071,15 @@ }, "property": { "type": "Identifier", - "start": 48009, - "end": 48028, + "start": 48045, + "end": 48064, "loc": { "start": { - "line": 1267, + "line": 1268, "column": 41 }, "end": { - "line": 1267, + "line": 1268, "column": 60 }, "identifierName": "colorTextureEnabled" @@ -14975,15 +15091,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 48033, - "end": 48038, + "start": 48069, + "end": 48074, "loc": { "start": { - "line": 1267, + "line": 1268, "column": 65 }, "end": { - "line": 1267, + "line": 1268, "column": 70 } }, @@ -14991,80 +15107,80 @@ }, "extra": { "parenthesized": true, - "parenStart": 48004 + "parenStart": 48040 } } } }, { "type": "ExpressionStatement", - "start": 48050, - "end": 48078, + "start": 48086, + "end": 48114, "loc": { "start": { - "line": 1269, + "line": 1270, "column": 8 }, "end": { - "line": 1269, + "line": 1270, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 48050, - "end": 48077, + "start": 48086, + "end": 48113, "loc": { "start": { - "line": 1269, + "line": 1270, "column": 8 }, "end": { - "line": 1269, + "line": 1270, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48050, - "end": 48063, + "start": 48086, + "end": 48099, "loc": { "start": { - "line": 1269, + "line": 1270, "column": 8 }, "end": { - "line": 1269, + "line": 1270, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 48050, - "end": 48054, + "start": 48086, + "end": 48090, "loc": { "start": { - "line": 1269, + "line": 1270, "column": 8 }, "end": { - "line": 1269, + "line": 1270, "column": 12 } } }, "property": { "type": "Identifier", - "start": 48055, - "end": 48063, + "start": 48091, + "end": 48099, "loc": { "start": { - "line": 1269, + "line": 1270, "column": 13 }, "end": { - "line": 1269, + "line": 1270, "column": 21 }, "identifierName": "_isModel" @@ -15075,29 +15191,29 @@ }, "right": { "type": "MemberExpression", - "start": 48066, - "end": 48077, + "start": 48102, + "end": 48113, "loc": { "start": { - "line": 1269, + "line": 1270, "column": 24 }, "end": { - "line": 1269, + "line": 1270, "column": 35 } }, "object": { "type": "Identifier", - "start": 48066, - "end": 48069, + "start": 48102, + "end": 48105, "loc": { "start": { - "line": 1269, + "line": 1270, "column": 24 }, "end": { - "line": 1269, + "line": 1270, "column": 27 }, "identifierName": "cfg" @@ -15106,15 +15222,15 @@ }, "property": { "type": "Identifier", - "start": 48070, - "end": 48077, + "start": 48106, + "end": 48113, "loc": { "start": { - "line": 1269, + "line": 1270, "column": 28 }, "end": { - "line": 1269, + "line": 1270, "column": 35 }, "identifierName": "isModel" @@ -15127,58 +15243,58 @@ }, { "type": "IfStatement", - "start": 48087, - "end": 48162, + "start": 48123, + "end": 48198, "loc": { "start": { - "line": 1270, + "line": 1271, "column": 8 }, "end": { - "line": 1272, + "line": 1273, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 48091, - "end": 48104, + "start": 48127, + "end": 48140, "loc": { "start": { - "line": 1270, + "line": 1271, "column": 12 }, "end": { - "line": 1270, + "line": 1271, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 48091, - "end": 48095, + "start": 48127, + "end": 48131, "loc": { "start": { - "line": 1270, + "line": 1271, "column": 12 }, "end": { - "line": 1270, + "line": 1271, "column": 16 } } }, "property": { "type": "Identifier", - "start": 48096, - "end": 48104, + "start": 48132, + "end": 48140, "loc": { "start": { - "line": 1270, + "line": 1271, "column": 17 }, "end": { - "line": 1270, + "line": 1271, "column": 25 }, "identifierName": "_isModel" @@ -15189,101 +15305,101 @@ }, "consequent": { "type": "BlockStatement", - "start": 48106, - "end": 48162, + "start": 48142, + "end": 48198, "loc": { "start": { - "line": 1270, + "line": 1271, "column": 27 }, "end": { - "line": 1272, + "line": 1273, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 48120, - "end": 48152, + "start": 48156, + "end": 48188, "loc": { "start": { - "line": 1271, + "line": 1272, "column": 12 }, "end": { - "line": 1271, + "line": 1272, "column": 44 } }, "expression": { "type": "CallExpression", - "start": 48120, - "end": 48151, + "start": 48156, + "end": 48187, "loc": { "start": { - "line": 1271, + "line": 1272, "column": 12 }, "end": { - "line": 1271, + "line": 1272, "column": 43 } }, "callee": { "type": "MemberExpression", - "start": 48120, - "end": 48145, + "start": 48156, + "end": 48181, "loc": { "start": { - "line": 1271, + "line": 1272, "column": 12 }, "end": { - "line": 1271, + "line": 1272, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 48120, - "end": 48130, + "start": 48156, + "end": 48166, "loc": { "start": { - "line": 1271, + "line": 1272, "column": 12 }, "end": { - "line": 1271, + "line": 1272, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 48120, - "end": 48124, + "start": 48156, + "end": 48160, "loc": { "start": { - "line": 1271, + "line": 1272, "column": 12 }, "end": { - "line": 1271, + "line": 1272, "column": 16 } } }, "property": { "type": "Identifier", - "start": 48125, - "end": 48130, + "start": 48161, + "end": 48166, "loc": { "start": { - "line": 1271, + "line": 1272, "column": 17 }, "end": { - "line": 1271, + "line": 1272, "column": 22 }, "identifierName": "scene" @@ -15294,15 +15410,15 @@ }, "property": { "type": "Identifier", - "start": 48131, - "end": 48145, + "start": 48167, + "end": 48181, "loc": { "start": { - "line": 1271, + "line": 1272, "column": 23 }, "end": { - "line": 1271, + "line": 1272, "column": 37 }, "identifierName": "_registerModel" @@ -15314,15 +15430,15 @@ "arguments": [ { "type": "ThisExpression", - "start": 48146, - "end": 48150, + "start": 48182, + "end": 48186, "loc": { "start": { - "line": 1271, + "line": 1272, "column": 38 }, "end": { - "line": 1271, + "line": 1272, "column": 42 } } @@ -15337,73 +15453,73 @@ }, { "type": "ExpressionStatement", - "start": 48172, - "end": 48291, + "start": 48208, + "end": 48327, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 8 }, "end": { - "line": 1276, + "line": 1277, "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 48172, - "end": 48290, + "start": 48208, + "end": 48326, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 8 }, "end": { - "line": 1276, + "line": 1277, "column": 10 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48172, - "end": 48196, + "start": 48208, + "end": 48232, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 8 }, "end": { - "line": 1274, + "line": 1275, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 48172, - "end": 48176, + "start": 48208, + "end": 48212, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 8 }, "end": { - "line": 1274, + "line": 1275, "column": 12 } } }, "property": { "type": "Identifier", - "start": 48177, - "end": 48196, + "start": 48213, + "end": 48232, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 13 }, "end": { - "line": 1274, + "line": 1275, "column": 32 }, "identifierName": "_onCameraViewMatrix" @@ -15414,86 +15530,86 @@ }, "right": { "type": "CallExpression", - "start": 48199, - "end": 48290, + "start": 48235, + "end": 48326, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 35 }, "end": { - "line": 1276, + "line": 1277, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 48199, - "end": 48219, + "start": 48235, + "end": 48255, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 35 }, "end": { - "line": 1274, + "line": 1275, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 48199, - "end": 48216, + "start": 48235, + "end": 48252, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 35 }, "end": { - "line": 1274, + "line": 1275, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 48199, - "end": 48209, + "start": 48235, + "end": 48245, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 35 }, "end": { - "line": 1274, + "line": 1275, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 48199, - "end": 48203, + "start": 48235, + "end": 48239, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 35 }, "end": { - "line": 1274, + "line": 1275, "column": 39 } } }, "property": { "type": "Identifier", - "start": 48204, - "end": 48209, + "start": 48240, + "end": 48245, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 40 }, "end": { - "line": 1274, + "line": 1275, "column": 45 }, "identifierName": "scene" @@ -15504,15 +15620,15 @@ }, "property": { "type": "Identifier", - "start": 48210, - "end": 48216, + "start": 48246, + "end": 48252, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 46 }, "end": { - "line": 1274, + "line": 1275, "column": 52 }, "identifierName": "camera" @@ -15523,15 +15639,15 @@ }, "property": { "type": "Identifier", - "start": 48217, - "end": 48219, + "start": 48253, + "end": 48255, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 53 }, "end": { - "line": 1274, + "line": 1275, "column": 55 }, "identifierName": "on" @@ -15543,15 +15659,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 48220, - "end": 48228, + "start": 48256, + "end": 48264, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 56 }, "end": { - "line": 1274, + "line": 1275, "column": 64 } }, @@ -15563,15 +15679,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 48230, - "end": 48289, + "start": 48266, + "end": 48325, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 66 }, "end": { - "line": 1276, + "line": 1277, "column": 9 } }, @@ -15582,88 +15698,88 @@ "params": [], "body": { "type": "BlockStatement", - "start": 48236, - "end": 48289, + "start": 48272, + "end": 48325, "loc": { "start": { - "line": 1274, + "line": 1275, "column": 72 }, "end": { - "line": 1276, + "line": 1277, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 48250, - "end": 48279, + "start": 48286, + "end": 48315, "loc": { "start": { - "line": 1275, + "line": 1276, "column": 12 }, "end": { - "line": 1275, + "line": 1276, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 48250, - "end": 48278, + "start": 48286, + "end": 48314, "loc": { "start": { - "line": 1275, + "line": 1276, "column": 12 }, "end": { - "line": 1275, + "line": 1276, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48250, - "end": 48271, + "start": 48286, + "end": 48307, "loc": { "start": { - "line": 1275, + "line": 1276, "column": 12 }, "end": { - "line": 1275, + "line": 1276, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 48250, - "end": 48254, + "start": 48286, + "end": 48290, "loc": { "start": { - "line": 1275, + "line": 1276, "column": 12 }, "end": { - "line": 1275, + "line": 1276, "column": 16 } } }, "property": { "type": "Identifier", - "start": 48255, - "end": 48271, + "start": 48291, + "end": 48307, "loc": { "start": { - "line": 1275, + "line": 1276, "column": 17 }, "end": { - "line": 1275, + "line": 1276, "column": 33 }, "identifierName": "_viewMatrixDirty" @@ -15674,15 +15790,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 48274, - "end": 48278, + "start": 48310, + "end": 48314, "loc": { "start": { - "line": 1275, + "line": 1276, "column": 36 }, "end": { - "line": 1275, + "line": 1276, "column": 40 } }, @@ -15700,103 +15816,8 @@ }, { "type": "ExpressionStatement", - "start": 48301, - "end": 48336, - "loc": { - "start": { - "line": 1278, - "column": 8 - }, - "end": { - "line": 1278, - "column": 43 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 48301, - "end": 48335, - "loc": { - "start": { - "line": 1278, - "column": 8 - }, - "end": { - "line": 1278, - "column": 42 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 48301, - "end": 48330, - "loc": { - "start": { - "line": 1278, - "column": 8 - }, - "end": { - "line": 1278, - "column": 37 - } - }, - "object": { - "type": "ThisExpression", - "start": 48301, - "end": 48305, - "loc": { - "start": { - "line": 1278, - "column": 8 - }, - "end": { - "line": 1278, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 48306, - "end": 48330, - "loc": { - "start": { - "line": 1278, - "column": 13 - }, - "end": { - "line": 1278, - "column": 37 - }, - "identifierName": "_meshesWithDirtyMatrices" - }, - "name": "_meshesWithDirtyMatrices" - }, - "computed": false - }, - "right": { - "type": "ArrayExpression", - "start": 48333, - "end": 48335, - "loc": { - "start": { - "line": 1278, - "column": 40 - }, - "end": { - "line": 1278, - "column": 42 - } - }, - "elements": [] - } - } - }, - { - "type": "ExpressionStatement", - "start": 48345, - "end": 48382, + "start": 48337, + "end": 48372, "loc": { "start": { "line": 1279, @@ -15804,13 +15825,13 @@ }, "end": { "line": 1279, - "column": 45 + "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 48345, - "end": 48381, + "start": 48337, + "end": 48371, "loc": { "start": { "line": 1279, @@ -15818,14 +15839,14 @@ }, "end": { "line": 1279, - "column": 44 + "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48345, - "end": 48377, + "start": 48337, + "end": 48366, "loc": { "start": { "line": 1279, @@ -15833,13 +15854,13 @@ }, "end": { "line": 1279, - "column": 40 + "column": 37 } }, "object": { "type": "ThisExpression", - "start": 48345, - "end": 48349, + "start": 48337, + "end": 48341, "loc": { "start": { "line": 1279, @@ -15853,8 +15874,8 @@ }, "property": { "type": "Identifier", - "start": 48350, - "end": 48377, + "start": 48342, + "end": 48366, "loc": { "start": { "line": 1279, @@ -15862,6 +15883,101 @@ }, "end": { "line": 1279, + "column": 37 + }, + "identifierName": "_meshesWithDirtyMatrices" + }, + "name": "_meshesWithDirtyMatrices" + }, + "computed": false + }, + "right": { + "type": "ArrayExpression", + "start": 48369, + "end": 48371, + "loc": { + "start": { + "line": 1279, + "column": 40 + }, + "end": { + "line": 1279, + "column": 42 + } + }, + "elements": [] + } + } + }, + { + "type": "ExpressionStatement", + "start": 48381, + "end": 48418, + "loc": { + "start": { + "line": 1280, + "column": 8 + }, + "end": { + "line": 1280, + "column": 45 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 48381, + "end": 48417, + "loc": { + "start": { + "line": 1280, + "column": 8 + }, + "end": { + "line": 1280, + "column": 44 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 48381, + "end": 48413, + "loc": { + "start": { + "line": 1280, + "column": 8 + }, + "end": { + "line": 1280, + "column": 40 + } + }, + "object": { + "type": "ThisExpression", + "start": 48381, + "end": 48385, + "loc": { + "start": { + "line": 1280, + "column": 8 + }, + "end": { + "line": 1280, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 48386, + "end": 48413, + "loc": { + "start": { + "line": 1280, + "column": 13 + }, + "end": { + "line": 1280, "column": 40 }, "identifierName": "_numMeshesWithDirtyMatrices" @@ -15872,15 +15988,15 @@ }, "right": { "type": "NumericLiteral", - "start": 48380, - "end": 48381, + "start": 48416, + "end": 48417, "loc": { "start": { - "line": 1279, + "line": 1280, "column": 43 }, "end": { - "line": 1279, + "line": 1280, "column": 44 } }, @@ -15894,73 +16010,73 @@ }, { "type": "ExpressionStatement", - "start": 48392, - "end": 48620, + "start": 48428, + "end": 48656, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 8 }, "end": { - "line": 1285, + "line": 1286, "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 48392, - "end": 48619, + "start": 48428, + "end": 48655, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 8 }, "end": { - "line": 1285, + "line": 1286, "column": 10 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48392, - "end": 48404, + "start": 48428, + "end": 48440, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 8 }, "end": { - "line": 1281, + "line": 1282, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 48392, - "end": 48396, + "start": 48428, + "end": 48432, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 8 }, "end": { - "line": 1281, + "line": 1282, "column": 12 } } }, "property": { "type": "Identifier", - "start": 48397, - "end": 48404, + "start": 48433, + "end": 48440, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 13 }, "end": { - "line": 1281, + "line": 1282, "column": 20 }, "identifierName": "_onTick" @@ -15971,72 +16087,72 @@ }, "right": { "type": "CallExpression", - "start": 48407, - "end": 48619, + "start": 48443, + "end": 48655, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 23 }, "end": { - "line": 1285, + "line": 1286, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 48407, - "end": 48420, + "start": 48443, + "end": 48456, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 23 }, "end": { - "line": 1281, + "line": 1282, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 48407, - "end": 48417, + "start": 48443, + "end": 48453, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 23 }, "end": { - "line": 1281, + "line": 1282, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 48407, - "end": 48411, + "start": 48443, + "end": 48447, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 23 }, "end": { - "line": 1281, + "line": 1282, "column": 27 } } }, "property": { "type": "Identifier", - "start": 48412, - "end": 48417, + "start": 48448, + "end": 48453, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 28 }, "end": { - "line": 1281, + "line": 1282, "column": 33 }, "identifierName": "scene" @@ -16047,15 +16163,15 @@ }, "property": { "type": "Identifier", - "start": 48418, - "end": 48420, + "start": 48454, + "end": 48456, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 34 }, "end": { - "line": 1281, + "line": 1282, "column": 36 }, "identifierName": "on" @@ -16067,15 +16183,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 48421, - "end": 48427, + "start": 48457, + "end": 48463, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 37 }, "end": { - "line": 1281, + "line": 1282, "column": 43 } }, @@ -16087,15 +16203,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 48429, - "end": 48618, + "start": 48465, + "end": 48654, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 45 }, "end": { - "line": 1285, + "line": 1286, "column": 9 } }, @@ -16106,87 +16222,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 48435, - "end": 48618, + "start": 48471, + "end": 48654, "loc": { "start": { - "line": 1281, + "line": 1282, "column": 51 }, "end": { - "line": 1285, + "line": 1286, "column": 9 } }, "body": [ { "type": "WhileStatement", - "start": 48449, - "end": 48608, + "start": 48485, + "end": 48644, "loc": { "start": { - "line": 1282, + "line": 1283, "column": 12 }, "end": { - "line": 1284, + "line": 1285, "column": 13 } }, "test": { "type": "BinaryExpression", - "start": 48456, - "end": 48492, + "start": 48492, + "end": 48528, "loc": { "start": { - "line": 1282, + "line": 1283, "column": 19 }, "end": { - "line": 1282, + "line": 1283, "column": 55 } }, "left": { "type": "MemberExpression", - "start": 48456, - "end": 48488, + "start": 48492, + "end": 48524, "loc": { "start": { - "line": 1282, + "line": 1283, "column": 19 }, "end": { - "line": 1282, + "line": 1283, "column": 51 } }, "object": { "type": "ThisExpression", - "start": 48456, - "end": 48460, + "start": 48492, + "end": 48496, "loc": { "start": { - "line": 1282, + "line": 1283, "column": 19 }, "end": { - "line": 1282, + "line": 1283, "column": 23 } } }, "property": { "type": "Identifier", - "start": 48461, - "end": 48488, + "start": 48497, + "end": 48524, "loc": { "start": { - "line": 1282, + "line": 1283, "column": 24 }, "end": { - "line": 1282, + "line": 1283, "column": 51 }, "identifierName": "_numMeshesWithDirtyMatrices" @@ -16198,15 +16314,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 48491, - "end": 48492, + "start": 48527, + "end": 48528, "loc": { "start": { - "line": 1282, + "line": 1283, "column": 54 }, "end": { - "line": 1282, + "line": 1283, "column": 55 } }, @@ -16219,115 +16335,115 @@ }, "body": { "type": "BlockStatement", - "start": 48494, - "end": 48608, + "start": 48530, + "end": 48644, "loc": { "start": { - "line": 1282, + "line": 1283, "column": 57 }, "end": { - "line": 1284, + "line": 1285, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 48512, - "end": 48594, + "start": 48548, + "end": 48630, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 16 }, "end": { - "line": 1283, + "line": 1284, "column": 98 } }, "expression": { "type": "CallExpression", - "start": 48512, - "end": 48593, + "start": 48548, + "end": 48629, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 16 }, "end": { - "line": 1283, + "line": 1284, "column": 97 } }, "callee": { "type": "MemberExpression", - "start": 48512, - "end": 48591, + "start": 48548, + "end": 48627, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 16 }, "end": { - "line": 1283, + "line": 1284, "column": 95 } }, "object": { "type": "MemberExpression", - "start": 48512, - "end": 48577, + "start": 48548, + "end": 48613, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 16 }, "end": { - "line": 1283, + "line": 1284, "column": 81 } }, "object": { "type": "MemberExpression", - "start": 48512, - "end": 48541, + "start": 48548, + "end": 48577, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 16 }, "end": { - "line": 1283, + "line": 1284, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 48512, - "end": 48516, + "start": 48548, + "end": 48552, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 16 }, "end": { - "line": 1283, + "line": 1284, "column": 20 } } }, "property": { "type": "Identifier", - "start": 48517, - "end": 48541, + "start": 48553, + "end": 48577, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 21 }, "end": { - "line": 1283, + "line": 1284, "column": 45 }, "identifierName": "_meshesWithDirtyMatrices" @@ -16338,15 +16454,15 @@ }, "property": { "type": "UpdateExpression", - "start": 48542, - "end": 48576, + "start": 48578, + "end": 48612, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 46 }, "end": { - "line": 1283, + "line": 1284, "column": 80 } }, @@ -16354,44 +16470,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 48544, - "end": 48576, + "start": 48580, + "end": 48612, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 48 }, "end": { - "line": 1283, + "line": 1284, "column": 80 } }, "object": { "type": "ThisExpression", - "start": 48544, - "end": 48548, + "start": 48580, + "end": 48584, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 48 }, "end": { - "line": 1283, + "line": 1284, "column": 52 } } }, "property": { "type": "Identifier", - "start": 48549, - "end": 48576, + "start": 48585, + "end": 48612, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 53 }, "end": { - "line": 1283, + "line": 1284, "column": 80 }, "identifierName": "_numMeshesWithDirtyMatrices" @@ -16408,15 +16524,15 @@ }, "property": { "type": "Identifier", - "start": 48578, - "end": 48591, + "start": 48614, + "end": 48627, "loc": { "start": { - "line": 1283, + "line": 1284, "column": 82 }, "end": { - "line": 1283, + "line": 1284, "column": 95 }, "identifierName": "_updateMatrix" @@ -16442,72 +16558,72 @@ }, { "type": "ExpressionStatement", - "start": 48630, - "end": 48662, + "start": 48666, + "end": 48698, "loc": { "start": { - "line": 1287, + "line": 1288, "column": 8 }, "end": { - "line": 1287, + "line": 1288, "column": 40 } }, "expression": { "type": "CallExpression", - "start": 48630, - "end": 48661, + "start": 48666, + "end": 48697, "loc": { "start": { - "line": 1287, + "line": 1288, "column": 8 }, "end": { - "line": 1287, + "line": 1288, "column": 39 } }, "callee": { "type": "MemberExpression", - "start": 48630, - "end": 48659, + "start": 48666, + "end": 48695, "loc": { "start": { - "line": 1287, + "line": 1288, "column": 8 }, "end": { - "line": 1287, + "line": 1288, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 48630, - "end": 48634, + "start": 48666, + "end": 48670, "loc": { "start": { - "line": 1287, + "line": 1288, "column": 8 }, "end": { - "line": 1287, + "line": 1288, "column": 12 } } }, "property": { "type": "Identifier", - "start": 48635, - "end": 48659, + "start": 48671, + "end": 48695, "loc": { "start": { - "line": 1287, + "line": 1288, "column": 13 }, "end": { - "line": 1287, + "line": 1288, "column": 37 }, "identifierName": "_createDefaultTextureSet" @@ -16519,139 +16635,10 @@ "arguments": [] } }, - { - "type": "ExpressionStatement", - "start": 48672, - "end": 48699, - "loc": { - "start": { - "line": 1289, - "column": 8 - }, - "end": { - "line": 1289, - "column": 35 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 48672, - "end": 48698, - "loc": { - "start": { - "line": 1289, - "column": 8 - }, - "end": { - "line": 1289, - "column": 34 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 48672, - "end": 48684, - "loc": { - "start": { - "line": 1289, - "column": 8 - }, - "end": { - "line": 1289, - "column": 20 - } - }, - "object": { - "type": "ThisExpression", - "start": 48672, - "end": 48676, - "loc": { - "start": { - "line": 1289, - "column": 8 - }, - "end": { - "line": 1289, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 48677, - "end": 48684, - "loc": { - "start": { - "line": 1289, - "column": 13 - }, - "end": { - "line": 1289, - "column": 20 - }, - "identifierName": "visible" - }, - "name": "visible" - }, - "computed": false - }, - "right": { - "type": "MemberExpression", - "start": 48687, - "end": 48698, - "loc": { - "start": { - "line": 1289, - "column": 23 - }, - "end": { - "line": 1289, - "column": 34 - } - }, - "object": { - "type": "Identifier", - "start": 48687, - "end": 48690, - "loc": { - "start": { - "line": 1289, - "column": 23 - }, - "end": { - "line": 1289, - "column": 26 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 48691, - "end": 48698, - "loc": { - "start": { - "line": 1289, - "column": 27 - }, - "end": { - "line": 1289, - "column": 34 - }, - "identifierName": "visible" - }, - "name": "visible" - }, - "computed": false - } - } - }, { "type": "ExpressionStatement", "start": 48708, - "end": 48733, + "end": 48735, "loc": { "start": { "line": 1290, @@ -16659,13 +16646,13 @@ }, "end": { "line": 1290, - "column": 33 + "column": 35 } }, "expression": { "type": "AssignmentExpression", "start": 48708, - "end": 48732, + "end": 48734, "loc": { "start": { "line": 1290, @@ -16673,14 +16660,14 @@ }, "end": { "line": 1290, - "column": 32 + "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 48708, - "end": 48719, + "end": 48720, "loc": { "start": { "line": 1290, @@ -16688,7 +16675,7 @@ }, "end": { "line": 1290, - "column": 19 + "column": 20 } }, "object": { @@ -16709,7 +16696,7 @@ "property": { "type": "Identifier", "start": 48713, - "end": 48719, + "end": 48720, "loc": { "start": { "line": 1290, @@ -16717,40 +16704,40 @@ }, "end": { "line": 1290, - "column": 19 + "column": 20 }, - "identifierName": "culled" + "identifierName": "visible" }, - "name": "culled" + "name": "visible" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 48722, - "end": 48732, + "start": 48723, + "end": 48734, "loc": { "start": { "line": 1290, - "column": 22 + "column": 23 }, "end": { "line": 1290, - "column": 32 + "column": 34 } }, "object": { "type": "Identifier", - "start": 48722, - "end": 48725, + "start": 48723, + "end": 48726, "loc": { "start": { "line": 1290, - "column": 22 + "column": 23 }, "end": { "line": 1290, - "column": 25 + "column": 26 }, "identifierName": "cfg" }, @@ -16758,20 +16745,20 @@ }, "property": { "type": "Identifier", - "start": 48726, - "end": 48732, + "start": 48727, + "end": 48734, "loc": { "start": { "line": 1290, - "column": 26 + "column": 27 }, "end": { "line": 1290, - "column": 32 + "column": 34 }, - "identifierName": "culled" + "identifierName": "visible" }, - "name": "culled" + "name": "visible" }, "computed": false } @@ -16779,8 +16766,8 @@ }, { "type": "ExpressionStatement", - "start": 48742, - "end": 48771, + "start": 48744, + "end": 48769, "loc": { "start": { "line": 1291, @@ -16788,13 +16775,13 @@ }, "end": { "line": 1291, - "column": 37 + "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 48742, - "end": 48770, + "start": 48744, + "end": 48768, "loc": { "start": { "line": 1291, @@ -16802,13 +16789,13 @@ }, "end": { "line": 1291, - "column": 36 + "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48742, + "start": 48744, "end": 48755, "loc": { "start": { @@ -16817,13 +16804,13 @@ }, "end": { "line": 1291, - "column": 21 + "column": 19 } }, "object": { "type": "ThisExpression", - "start": 48742, - "end": 48746, + "start": 48744, + "end": 48748, "loc": { "start": { "line": 1291, @@ -16837,7 +16824,7 @@ }, "property": { "type": "Identifier", - "start": 48747, + "start": 48749, "end": 48755, "loc": { "start": { @@ -16846,26 +16833,26 @@ }, "end": { "line": 1291, - "column": 21 + "column": 19 }, - "identifierName": "pickable" + "identifierName": "culled" }, - "name": "pickable" + "name": "culled" }, "computed": false }, "right": { "type": "MemberExpression", "start": 48758, - "end": 48770, + "end": 48768, "loc": { "start": { "line": 1291, - "column": 24 + "column": 22 }, "end": { "line": 1291, - "column": 36 + "column": 32 } }, "object": { @@ -16875,11 +16862,11 @@ "loc": { "start": { "line": 1291, - "column": 24 + "column": 22 }, "end": { "line": 1291, - "column": 27 + "column": 25 }, "identifierName": "cfg" }, @@ -16888,19 +16875,19 @@ "property": { "type": "Identifier", "start": 48762, - "end": 48770, + "end": 48768, "loc": { "start": { "line": 1291, - "column": 28 + "column": 26 }, "end": { "line": 1291, - "column": 36 + "column": 32 }, - "identifierName": "pickable" + "identifierName": "culled" }, - "name": "pickable" + "name": "culled" }, "computed": false } @@ -16908,8 +16895,8 @@ }, { "type": "ExpressionStatement", - "start": 48780, - "end": 48811, + "start": 48778, + "end": 48807, "loc": { "start": { "line": 1292, @@ -16917,13 +16904,13 @@ }, "end": { "line": 1292, - "column": 39 + "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 48780, - "end": 48810, + "start": 48778, + "end": 48806, "loc": { "start": { "line": 1292, @@ -16931,14 +16918,14 @@ }, "end": { "line": 1292, - "column": 38 + "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48780, - "end": 48794, + "start": 48778, + "end": 48791, "loc": { "start": { "line": 1292, @@ -16946,13 +16933,13 @@ }, "end": { "line": 1292, - "column": 22 + "column": 21 } }, "object": { "type": "ThisExpression", - "start": 48780, - "end": 48784, + "start": 48778, + "end": 48782, "loc": { "start": { "line": 1292, @@ -16966,8 +16953,8 @@ }, "property": { "type": "Identifier", - "start": 48785, - "end": 48794, + "start": 48783, + "end": 48791, "loc": { "start": { "line": 1292, @@ -16975,40 +16962,40 @@ }, "end": { "line": 1292, - "column": 22 + "column": 21 }, - "identifierName": "clippable" + "identifierName": "pickable" }, - "name": "clippable" + "name": "pickable" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 48797, - "end": 48810, + "start": 48794, + "end": 48806, "loc": { "start": { "line": 1292, - "column": 25 + "column": 24 }, "end": { "line": 1292, - "column": 38 + "column": 36 } }, "object": { "type": "Identifier", - "start": 48797, - "end": 48800, + "start": 48794, + "end": 48797, "loc": { "start": { "line": 1292, - "column": 25 + "column": 24 }, "end": { "line": 1292, - "column": 28 + "column": 27 }, "identifierName": "cfg" }, @@ -17016,20 +17003,20 @@ }, "property": { "type": "Identifier", - "start": 48801, - "end": 48810, + "start": 48798, + "end": 48806, "loc": { "start": { "line": 1292, - "column": 29 + "column": 28 }, "end": { "line": 1292, - "column": 38 + "column": 36 }, - "identifierName": "clippable" + "identifierName": "pickable" }, - "name": "clippable" + "name": "pickable" }, "computed": false } @@ -17037,8 +17024,8 @@ }, { "type": "ExpressionStatement", - "start": 48820, - "end": 48853, + "start": 48816, + "end": 48847, "loc": { "start": { "line": 1293, @@ -17046,13 +17033,13 @@ }, "end": { "line": 1293, - "column": 41 + "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 48820, - "end": 48852, + "start": 48816, + "end": 48846, "loc": { "start": { "line": 1293, @@ -17060,14 +17047,14 @@ }, "end": { "line": 1293, - "column": 40 + "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48820, - "end": 48835, + "start": 48816, + "end": 48830, "loc": { "start": { "line": 1293, @@ -17075,13 +17062,13 @@ }, "end": { "line": 1293, - "column": 23 + "column": 22 } }, "object": { "type": "ThisExpression", - "start": 48820, - "end": 48824, + "start": 48816, + "end": 48820, "loc": { "start": { "line": 1293, @@ -17095,8 +17082,8 @@ }, "property": { "type": "Identifier", - "start": 48825, - "end": 48835, + "start": 48821, + "end": 48830, "loc": { "start": { "line": 1293, @@ -17104,40 +17091,40 @@ }, "end": { "line": 1293, - "column": 23 + "column": 22 }, - "identifierName": "collidable" + "identifierName": "clippable" }, - "name": "collidable" + "name": "clippable" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 48838, - "end": 48852, + "start": 48833, + "end": 48846, "loc": { "start": { "line": 1293, - "column": 26 + "column": 25 }, "end": { "line": 1293, - "column": 40 + "column": 38 } }, "object": { "type": "Identifier", - "start": 48838, - "end": 48841, + "start": 48833, + "end": 48836, "loc": { "start": { "line": 1293, - "column": 26 + "column": 25 }, "end": { "line": 1293, - "column": 29 + "column": 28 }, "identifierName": "cfg" }, @@ -17145,20 +17132,20 @@ }, "property": { "type": "Identifier", - "start": 48842, - "end": 48852, + "start": 48837, + "end": 48846, "loc": { "start": { "line": 1293, - "column": 30 + "column": 29 }, "end": { "line": 1293, - "column": 40 + "column": 38 }, - "identifierName": "collidable" + "identifierName": "clippable" }, - "name": "collidable" + "name": "clippable" }, "computed": false } @@ -17166,8 +17153,8 @@ }, { "type": "ExpressionStatement", - "start": 48862, - "end": 48897, + "start": 48856, + "end": 48889, "loc": { "start": { "line": 1294, @@ -17175,13 +17162,13 @@ }, "end": { "line": 1294, - "column": 43 + "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 48862, - "end": 48896, + "start": 48856, + "end": 48888, "loc": { "start": { "line": 1294, @@ -17189,14 +17176,14 @@ }, "end": { "line": 1294, - "column": 42 + "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48862, - "end": 48878, + "start": 48856, + "end": 48871, "loc": { "start": { "line": 1294, @@ -17204,13 +17191,13 @@ }, "end": { "line": 1294, - "column": 24 + "column": 23 } }, "object": { "type": "ThisExpression", - "start": 48862, - "end": 48866, + "start": 48856, + "end": 48860, "loc": { "start": { "line": 1294, @@ -17224,8 +17211,8 @@ }, "property": { "type": "Identifier", - "start": 48867, - "end": 48878, + "start": 48861, + "end": 48871, "loc": { "start": { "line": 1294, @@ -17233,40 +17220,40 @@ }, "end": { "line": 1294, - "column": 24 + "column": 23 }, - "identifierName": "castsShadow" + "identifierName": "collidable" }, - "name": "castsShadow" + "name": "collidable" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 48881, - "end": 48896, + "start": 48874, + "end": 48888, "loc": { "start": { "line": 1294, - "column": 27 + "column": 26 }, "end": { "line": 1294, - "column": 42 + "column": 40 } }, "object": { "type": "Identifier", - "start": 48881, - "end": 48884, + "start": 48874, + "end": 48877, "loc": { "start": { "line": 1294, - "column": 27 + "column": 26 }, "end": { "line": 1294, - "column": 30 + "column": 29 }, "identifierName": "cfg" }, @@ -17274,20 +17261,20 @@ }, "property": { "type": "Identifier", - "start": 48885, - "end": 48896, + "start": 48878, + "end": 48888, "loc": { "start": { "line": 1294, - "column": 31 + "column": 30 }, "end": { "line": 1294, - "column": 42 + "column": 40 }, - "identifierName": "castsShadow" + "identifierName": "collidable" }, - "name": "castsShadow" + "name": "collidable" }, "computed": false } @@ -17295,8 +17282,8 @@ }, { "type": "ExpressionStatement", - "start": 48906, - "end": 48947, + "start": 48898, + "end": 48933, "loc": { "start": { "line": 1295, @@ -17304,13 +17291,13 @@ }, "end": { "line": 1295, - "column": 49 + "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 48906, - "end": 48946, + "start": 48898, + "end": 48932, "loc": { "start": { "line": 1295, @@ -17318,14 +17305,14 @@ }, "end": { "line": 1295, - "column": 48 + "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48906, - "end": 48925, + "start": 48898, + "end": 48914, "loc": { "start": { "line": 1295, @@ -17333,13 +17320,13 @@ }, "end": { "line": 1295, - "column": 27 + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 48906, - "end": 48910, + "start": 48898, + "end": 48902, "loc": { "start": { "line": 1295, @@ -17353,8 +17340,8 @@ }, "property": { "type": "Identifier", - "start": 48911, - "end": 48925, + "start": 48903, + "end": 48914, "loc": { "start": { "line": 1295, @@ -17362,40 +17349,40 @@ }, "end": { "line": 1295, - "column": 27 + "column": 24 }, - "identifierName": "receivesShadow" + "identifierName": "castsShadow" }, - "name": "receivesShadow" + "name": "castsShadow" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 48928, - "end": 48946, + "start": 48917, + "end": 48932, "loc": { "start": { "line": 1295, - "column": 30 + "column": 27 }, "end": { "line": 1295, - "column": 48 + "column": 42 } }, "object": { "type": "Identifier", - "start": 48928, - "end": 48931, + "start": 48917, + "end": 48920, "loc": { "start": { "line": 1295, - "column": 30 + "column": 27 }, "end": { "line": 1295, - "column": 33 + "column": 30 }, "identifierName": "cfg" }, @@ -17403,20 +17390,20 @@ }, "property": { "type": "Identifier", - "start": 48932, - "end": 48946, + "start": 48921, + "end": 48932, "loc": { "start": { "line": 1295, - "column": 34 + "column": 31 }, "end": { "line": 1295, - "column": 48 + "column": 42 }, - "identifierName": "receivesShadow" + "identifierName": "castsShadow" }, - "name": "receivesShadow" + "name": "castsShadow" }, "computed": false } @@ -17424,8 +17411,8 @@ }, { "type": "ExpressionStatement", - "start": 48956, - "end": 48981, + "start": 48942, + "end": 48983, "loc": { "start": { "line": 1296, @@ -17433,13 +17420,13 @@ }, "end": { "line": 1296, - "column": 33 + "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 48956, - "end": 48980, + "start": 48942, + "end": 48982, "loc": { "start": { "line": 1296, @@ -17447,14 +17434,14 @@ }, "end": { "line": 1296, - "column": 32 + "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48956, - "end": 48967, + "start": 48942, + "end": 48961, "loc": { "start": { "line": 1296, @@ -17462,13 +17449,13 @@ }, "end": { "line": 1296, - "column": 19 + "column": 27 } }, "object": { "type": "ThisExpression", - "start": 48956, - "end": 48960, + "start": 48942, + "end": 48946, "loc": { "start": { "line": 1296, @@ -17482,8 +17469,8 @@ }, "property": { "type": "Identifier", - "start": 48961, - "end": 48967, + "start": 48947, + "end": 48961, "loc": { "start": { "line": 1296, @@ -17491,40 +17478,40 @@ }, "end": { "line": 1296, - "column": 19 + "column": 27 }, - "identifierName": "xrayed" + "identifierName": "receivesShadow" }, - "name": "xrayed" + "name": "receivesShadow" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 48970, - "end": 48980, + "start": 48964, + "end": 48982, "loc": { "start": { "line": 1296, - "column": 22 + "column": 30 }, "end": { "line": 1296, - "column": 32 + "column": 48 } }, "object": { "type": "Identifier", - "start": 48970, - "end": 48973, + "start": 48964, + "end": 48967, "loc": { "start": { "line": 1296, - "column": 22 + "column": 30 }, "end": { "line": 1296, - "column": 25 + "column": 33 }, "identifierName": "cfg" }, @@ -17532,20 +17519,20 @@ }, "property": { "type": "Identifier", - "start": 48974, - "end": 48980, + "start": 48968, + "end": 48982, "loc": { "start": { "line": 1296, - "column": 26 + "column": 34 }, "end": { "line": 1296, - "column": 32 + "column": 48 }, - "identifierName": "xrayed" + "identifierName": "receivesShadow" }, - "name": "xrayed" + "name": "receivesShadow" }, "computed": false } @@ -17553,8 +17540,8 @@ }, { "type": "ExpressionStatement", - "start": 48990, - "end": 49025, + "start": 48992, + "end": 49017, "loc": { "start": { "line": 1297, @@ -17562,13 +17549,13 @@ }, "end": { "line": 1297, - "column": 43 + "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 48990, - "end": 49024, + "start": 48992, + "end": 49016, "loc": { "start": { "line": 1297, @@ -17576,14 +17563,14 @@ }, "end": { "line": 1297, - "column": 42 + "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48990, - "end": 49006, + "start": 48992, + "end": 49003, "loc": { "start": { "line": 1297, @@ -17591,13 +17578,13 @@ }, "end": { "line": 1297, - "column": 24 + "column": 19 } }, "object": { "type": "ThisExpression", - "start": 48990, - "end": 48994, + "start": 48992, + "end": 48996, "loc": { "start": { "line": 1297, @@ -17611,8 +17598,8 @@ }, "property": { "type": "Identifier", - "start": 48995, - "end": 49006, + "start": 48997, + "end": 49003, "loc": { "start": { "line": 1297, @@ -17620,40 +17607,40 @@ }, "end": { "line": 1297, - "column": 24 + "column": 19 }, - "identifierName": "highlighted" + "identifierName": "xrayed" }, - "name": "highlighted" + "name": "xrayed" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 49009, - "end": 49024, + "start": 49006, + "end": 49016, "loc": { "start": { "line": 1297, - "column": 27 + "column": 22 }, "end": { "line": 1297, - "column": 42 + "column": 32 } }, "object": { "type": "Identifier", - "start": 49009, - "end": 49012, + "start": 49006, + "end": 49009, "loc": { "start": { "line": 1297, - "column": 27 + "column": 22 }, "end": { "line": 1297, - "column": 30 + "column": 25 }, "identifierName": "cfg" }, @@ -17661,20 +17648,20 @@ }, "property": { "type": "Identifier", - "start": 49013, - "end": 49024, + "start": 49010, + "end": 49016, "loc": { "start": { "line": 1297, - "column": 31 + "column": 26 }, "end": { "line": 1297, - "column": 42 + "column": 32 }, - "identifierName": "highlighted" + "identifierName": "xrayed" }, - "name": "highlighted" + "name": "xrayed" }, "computed": false } @@ -17682,8 +17669,8 @@ }, { "type": "ExpressionStatement", - "start": 49034, - "end": 49063, + "start": 49026, + "end": 49061, "loc": { "start": { "line": 1298, @@ -17691,13 +17678,13 @@ }, "end": { "line": 1298, - "column": 37 + "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 49034, - "end": 49062, + "start": 49026, + "end": 49060, "loc": { "start": { "line": 1298, @@ -17705,14 +17692,14 @@ }, "end": { "line": 1298, - "column": 36 + "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 49034, - "end": 49047, + "start": 49026, + "end": 49042, "loc": { "start": { "line": 1298, @@ -17720,13 +17707,13 @@ }, "end": { "line": 1298, - "column": 21 + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 49034, - "end": 49038, + "start": 49026, + "end": 49030, "loc": { "start": { "line": 1298, @@ -17740,8 +17727,8 @@ }, "property": { "type": "Identifier", - "start": 49039, - "end": 49047, + "start": 49031, + "end": 49042, "loc": { "start": { "line": 1298, @@ -17749,40 +17736,40 @@ }, "end": { "line": 1298, - "column": 21 + "column": 24 }, - "identifierName": "selected" + "identifierName": "highlighted" }, - "name": "selected" + "name": "highlighted" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 49050, - "end": 49062, + "start": 49045, + "end": 49060, "loc": { "start": { "line": 1298, - "column": 24 + "column": 27 }, "end": { "line": 1298, - "column": 36 + "column": 42 } }, "object": { "type": "Identifier", - "start": 49050, - "end": 49053, + "start": 49045, + "end": 49048, "loc": { "start": { "line": 1298, - "column": 24 + "column": 27 }, "end": { "line": 1298, - "column": 27 + "column": 30 }, "identifierName": "cfg" }, @@ -17790,20 +17777,20 @@ }, "property": { "type": "Identifier", - "start": 49054, - "end": 49062, + "start": 49049, + "end": 49060, "loc": { "start": { "line": 1298, - "column": 28 + "column": 31 }, "end": { "line": 1298, - "column": 36 + "column": 42 }, - "identifierName": "selected" + "identifierName": "highlighted" }, - "name": "selected" + "name": "highlighted" }, "computed": false } @@ -17811,8 +17798,8 @@ }, { "type": "ExpressionStatement", - "start": 49072, - "end": 49095, + "start": 49070, + "end": 49099, "loc": { "start": { "line": 1299, @@ -17820,13 +17807,13 @@ }, "end": { "line": 1299, - "column": 31 + "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 49072, - "end": 49094, + "start": 49070, + "end": 49098, "loc": { "start": { "line": 1299, @@ -17834,14 +17821,14 @@ }, "end": { "line": 1299, - "column": 30 + "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 49072, - "end": 49082, + "start": 49070, + "end": 49083, "loc": { "start": { "line": 1299, @@ -17849,13 +17836,13 @@ }, "end": { "line": 1299, - "column": 18 + "column": 21 } }, "object": { "type": "ThisExpression", - "start": 49072, - "end": 49076, + "start": 49070, + "end": 49074, "loc": { "start": { "line": 1299, @@ -17869,8 +17856,8 @@ }, "property": { "type": "Identifier", - "start": 49077, - "end": 49082, + "start": 49075, + "end": 49083, "loc": { "start": { "line": 1299, @@ -17878,40 +17865,40 @@ }, "end": { "line": 1299, - "column": 18 + "column": 21 }, - "identifierName": "edges" + "identifierName": "selected" }, - "name": "edges" + "name": "selected" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 49085, - "end": 49094, + "start": 49086, + "end": 49098, "loc": { "start": { "line": 1299, - "column": 21 + "column": 24 }, "end": { "line": 1299, - "column": 30 + "column": 36 } }, "object": { "type": "Identifier", - "start": 49085, - "end": 49088, + "start": 49086, + "end": 49089, "loc": { "start": { "line": 1299, - "column": 21 + "column": 24 }, "end": { "line": 1299, - "column": 24 + "column": 27 }, "identifierName": "cfg" }, @@ -17919,20 +17906,20 @@ }, "property": { "type": "Identifier", - "start": 49089, - "end": 49094, + "start": 49090, + "end": 49098, "loc": { "start": { "line": 1299, - "column": 25 + "column": 28 }, "end": { "line": 1299, - "column": 30 + "column": 36 }, - "identifierName": "edges" + "identifierName": "selected" }, - "name": "edges" + "name": "selected" }, "computed": false } @@ -17940,8 +17927,8 @@ }, { "type": "ExpressionStatement", - "start": 49104, - "end": 49133, + "start": 49108, + "end": 49131, "loc": { "start": { "line": 1300, @@ -17949,13 +17936,13 @@ }, "end": { "line": 1300, - "column": 37 + "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 49104, - "end": 49132, + "start": 49108, + "end": 49130, "loc": { "start": { "line": 1300, @@ -17963,14 +17950,14 @@ }, "end": { "line": 1300, - "column": 36 + "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 49104, - "end": 49117, + "start": 49108, + "end": 49118, "loc": { "start": { "line": 1300, @@ -17978,13 +17965,13 @@ }, "end": { "line": 1300, - "column": 21 + "column": 18 } }, "object": { "type": "ThisExpression", - "start": 49104, - "end": 49108, + "start": 49108, + "end": 49112, "loc": { "start": { "line": 1300, @@ -17998,8 +17985,8 @@ }, "property": { "type": "Identifier", - "start": 49109, - "end": 49117, + "start": 49113, + "end": 49118, "loc": { "start": { "line": 1300, @@ -18007,40 +17994,40 @@ }, "end": { "line": 1300, - "column": 21 + "column": 18 }, - "identifierName": "colorize" + "identifierName": "edges" }, - "name": "colorize" + "name": "edges" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 49120, - "end": 49132, + "start": 49121, + "end": 49130, "loc": { "start": { "line": 1300, - "column": 24 + "column": 21 }, "end": { "line": 1300, - "column": 36 + "column": 30 } }, "object": { "type": "Identifier", - "start": 49120, - "end": 49123, + "start": 49121, + "end": 49124, "loc": { "start": { "line": 1300, - "column": 24 + "column": 21 }, "end": { "line": 1300, - "column": 27 + "column": 24 }, "identifierName": "cfg" }, @@ -18048,20 +18035,20 @@ }, "property": { "type": "Identifier", - "start": 49124, - "end": 49132, + "start": 49125, + "end": 49130, "loc": { "start": { "line": 1300, - "column": 28 + "column": 25 }, "end": { "line": 1300, - "column": 36 + "column": 30 }, - "identifierName": "colorize" + "identifierName": "edges" }, - "name": "colorize" + "name": "edges" }, "computed": false } @@ -18069,7 +18056,7 @@ }, { "type": "ExpressionStatement", - "start": 49142, + "start": 49140, "end": 49169, "loc": { "start": { @@ -18078,12 +18065,12 @@ }, "end": { "line": 1301, - "column": 35 + "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 49142, + "start": 49140, "end": 49168, "loc": { "start": { @@ -18092,14 +18079,14 @@ }, "end": { "line": 1301, - "column": 34 + "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 49142, - "end": 49154, + "start": 49140, + "end": 49153, "loc": { "start": { "line": 1301, @@ -18107,13 +18094,13 @@ }, "end": { "line": 1301, - "column": 20 + "column": 21 } }, "object": { "type": "ThisExpression", - "start": 49142, - "end": 49146, + "start": 49140, + "end": 49144, "loc": { "start": { "line": 1301, @@ -18127,8 +18114,8 @@ }, "property": { "type": "Identifier", - "start": 49147, - "end": 49154, + "start": 49145, + "end": 49153, "loc": { "start": { "line": 1301, @@ -18136,40 +18123,40 @@ }, "end": { "line": 1301, - "column": 20 + "column": 21 }, - "identifierName": "opacity" + "identifierName": "colorize" }, - "name": "opacity" + "name": "colorize" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 49157, + "start": 49156, "end": 49168, "loc": { "start": { "line": 1301, - "column": 23 + "column": 24 }, "end": { "line": 1301, - "column": 34 + "column": 36 } }, "object": { "type": "Identifier", - "start": 49157, - "end": 49160, + "start": 49156, + "end": 49159, "loc": { "start": { "line": 1301, - "column": 23 + "column": 24 }, "end": { "line": 1301, - "column": 26 + "column": 27 }, "identifierName": "cfg" }, @@ -18177,20 +18164,20 @@ }, "property": { "type": "Identifier", - "start": 49161, + "start": 49160, "end": 49168, "loc": { "start": { "line": 1301, - "column": 27 + "column": 28 }, "end": { "line": 1301, - "column": 34 + "column": 36 }, - "identifierName": "opacity" + "identifierName": "colorize" }, - "name": "opacity" + "name": "colorize" }, "computed": false } @@ -18199,7 +18186,7 @@ { "type": "ExpressionStatement", "start": 49178, - "end": 49209, + "end": 49205, "loc": { "start": { "line": 1302, @@ -18207,13 +18194,13 @@ }, "end": { "line": 1302, - "column": 39 + "column": 35 } }, "expression": { "type": "AssignmentExpression", "start": 49178, - "end": 49208, + "end": 49204, "loc": { "start": { "line": 1302, @@ -18221,14 +18208,14 @@ }, "end": { "line": 1302, - "column": 38 + "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 49178, - "end": 49192, + "end": 49190, "loc": { "start": { "line": 1302, @@ -18236,7 +18223,7 @@ }, "end": { "line": 1302, - "column": 22 + "column": 20 } }, "object": { @@ -18257,7 +18244,7 @@ "property": { "type": "Identifier", "start": 49183, - "end": 49192, + "end": 49190, "loc": { "start": { "line": 1302, @@ -18265,6 +18252,135 @@ }, "end": { "line": 1302, + "column": 20 + }, + "identifierName": "opacity" + }, + "name": "opacity" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 49193, + "end": 49204, + "loc": { + "start": { + "line": 1302, + "column": 23 + }, + "end": { + "line": 1302, + "column": 34 + } + }, + "object": { + "type": "Identifier", + "start": 49193, + "end": 49196, + "loc": { + "start": { + "line": 1302, + "column": 23 + }, + "end": { + "line": 1302, + "column": 26 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 49197, + "end": 49204, + "loc": { + "start": { + "line": 1302, + "column": 27 + }, + "end": { + "line": 1302, + "column": 34 + }, + "identifierName": "opacity" + }, + "name": "opacity" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 49214, + "end": 49245, + "loc": { + "start": { + "line": 1303, + "column": 8 + }, + "end": { + "line": 1303, + "column": 39 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 49214, + "end": 49244, + "loc": { + "start": { + "line": 1303, + "column": 8 + }, + "end": { + "line": 1303, + "column": 38 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 49214, + "end": 49228, + "loc": { + "start": { + "line": 1303, + "column": 8 + }, + "end": { + "line": 1303, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 49214, + "end": 49218, + "loc": { + "start": { + "line": 1303, + "column": 8 + }, + "end": { + "line": 1303, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 49219, + "end": 49228, + "loc": { + "start": { + "line": 1303, + "column": 13 + }, + "end": { + "line": 1303, "column": 22 }, "identifierName": "backfaces" @@ -18275,29 +18391,29 @@ }, "right": { "type": "MemberExpression", - "start": 49195, - "end": 49208, + "start": 49231, + "end": 49244, "loc": { "start": { - "line": 1302, + "line": 1303, "column": 25 }, "end": { - "line": 1302, + "line": 1303, "column": 38 } }, "object": { "type": "Identifier", - "start": 49195, - "end": 49198, + "start": 49231, + "end": 49234, "loc": { "start": { - "line": 1302, + "line": 1303, "column": 25 }, "end": { - "line": 1302, + "line": 1303, "column": 28 }, "identifierName": "cfg" @@ -18306,15 +18422,15 @@ }, "property": { "type": "Identifier", - "start": 49199, - "end": 49208, + "start": 49235, + "end": 49244, "loc": { "start": { - "line": 1302, + "line": 1303, "column": 29 }, "end": { - "line": 1302, + "line": 1303, "column": 38 }, "identifierName": "backfaces" @@ -18332,15 +18448,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this SceneModel represents a model, in which case the SceneModel will be registered by {@link SceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Number[]} [cfg.origin=[0,0,0]] World-space double-precision 3D origin.\n * @param {Number[]} [cfg.position=[0,0,0]] Local, single-precision 3D position, relative to the origin parameter.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModel is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModel is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModel is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModel is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModel is initially included in boundary calculations.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModel is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModel is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModel is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModel's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] SceneModel's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] SceneModel's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this SceneModel. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. SAO is configured by the Scene's {@link SAO} component.\n * @param {Boolean} [cfg.pbrEnabled=true] Indicates if physically-based rendering (PBR) will apply to the SceneModel when {@link Scene#pbrEnabled} is ````true````.\n * @param {Boolean} [cfg.colorTextureEnabled=true] Indicates if base color textures will be rendered for the SceneModel when {@link Scene#colorTextureEnabled} is ````true````.\n * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that SceneModel internally creates for batched geometries.\n * A lower value means less heap allocation/de-allocation while creating/loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while creating/loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n * @param {TextureTranscoder} [cfg.textureTranscoder] Transcoder that will be used internally by {@link SceneModel#createTexture}\n * to convert transcoded texture data. Only required when we'll be providing transcoded data\n * to {@link SceneModel#createTexture}. We assume that all transcoded texture data added to a ````SceneModel````\n * will then in a format supported by this transcoder.\n * @param {Boolean} [cfg.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n ", - "start": 38819, - "end": 43850, + "start": 38855, + "end": 43886, "loc": { "start": { - "line": 1083, + "line": 1084, "column": 4 }, "end": { - "line": 1125, + "line": 1126, "column": 7 } } @@ -18349,15 +18465,15 @@ }, { "type": "ClassMethod", - "start": 49221, - "end": 49333, + "start": 49257, + "end": 49369, "loc": { "start": { - "line": 1305, + "line": 1306, "column": 4 }, "end": { - "line": 1307, + "line": 1308, "column": 5 } }, @@ -18365,15 +18481,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49221, - "end": 49237, + "start": 49257, + "end": 49273, "loc": { "start": { - "line": 1305, + "line": 1306, "column": 4 }, "end": { - "line": 1305, + "line": 1306, "column": 20 }, "identifierName": "_meshMatrixDirty" @@ -18388,15 +18504,15 @@ "params": [ { "type": "Identifier", - "start": 49238, - "end": 49242, + "start": 49274, + "end": 49278, "loc": { "start": { - "line": 1305, + "line": 1306, "column": 21 }, "end": { - "line": 1305, + "line": 1306, "column": 25 }, "identifierName": "mesh" @@ -18406,102 +18522,102 @@ ], "body": { "type": "BlockStatement", - "start": 49244, - "end": 49333, + "start": 49280, + "end": 49369, "loc": { "start": { - "line": 1305, + "line": 1306, "column": 27 }, "end": { - "line": 1307, + "line": 1308, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 49254, - "end": 49327, + "start": 49290, + "end": 49363, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 8 }, "end": { - "line": 1306, + "line": 1307, "column": 81 } }, "expression": { "type": "AssignmentExpression", - "start": 49254, - "end": 49326, + "start": 49290, + "end": 49362, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 8 }, "end": { - "line": 1306, + "line": 1307, "column": 80 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 49254, - "end": 49319, + "start": 49290, + "end": 49355, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 8 }, "end": { - "line": 1306, + "line": 1307, "column": 73 } }, "object": { "type": "MemberExpression", - "start": 49254, - "end": 49283, + "start": 49290, + "end": 49319, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 8 }, "end": { - "line": 1306, + "line": 1307, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 49254, - "end": 49258, + "start": 49290, + "end": 49294, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 8 }, "end": { - "line": 1306, + "line": 1307, "column": 12 } } }, "property": { "type": "Identifier", - "start": 49259, - "end": 49283, + "start": 49295, + "end": 49319, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 13 }, "end": { - "line": 1306, + "line": 1307, "column": 37 }, "identifierName": "_meshesWithDirtyMatrices" @@ -18512,15 +18628,15 @@ }, "property": { "type": "UpdateExpression", - "start": 49284, - "end": 49318, + "start": 49320, + "end": 49354, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 38 }, "end": { - "line": 1306, + "line": 1307, "column": 72 } }, @@ -18528,44 +18644,44 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 49284, - "end": 49316, + "start": 49320, + "end": 49352, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 38 }, "end": { - "line": 1306, + "line": 1307, "column": 70 } }, "object": { "type": "ThisExpression", - "start": 49284, - "end": 49288, + "start": 49320, + "end": 49324, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 38 }, "end": { - "line": 1306, + "line": 1307, "column": 42 } } }, "property": { "type": "Identifier", - "start": 49289, - "end": 49316, + "start": 49325, + "end": 49352, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 43 }, "end": { - "line": 1306, + "line": 1307, "column": 70 }, "identifierName": "_numMeshesWithDirtyMatrices" @@ -18579,15 +18695,15 @@ }, "right": { "type": "Identifier", - "start": 49322, - "end": 49326, + "start": 49358, + "end": 49362, "loc": { "start": { - "line": 1306, + "line": 1307, "column": 76 }, "end": { - "line": 1306, + "line": 1307, "column": 80 }, "identifierName": "mesh" @@ -18602,15 +18718,15 @@ }, { "type": "ClassMethod", - "start": 49339, - "end": 51753, + "start": 49375, + "end": 51789, "loc": { "start": { - "line": 1309, + "line": 1310, "column": 4 }, "end": { - "line": 1361, + "line": 1362, "column": 5 } }, @@ -18618,15 +18734,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49339, - "end": 49363, + "start": 49375, + "end": 49399, "loc": { "start": { - "line": 1309, + "line": 1310, "column": 4 }, "end": { - "line": 1309, + "line": 1310, "column": 28 }, "identifierName": "_createDefaultTextureSet" @@ -18641,59 +18757,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 49366, - "end": 51753, + "start": 49402, + "end": 51789, "loc": { "start": { - "line": 1309, + "line": 1310, "column": 31 }, "end": { - "line": 1361, + "line": 1362, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 49513, - "end": 49773, + "start": 49549, + "end": 49809, "loc": { "start": { - "line": 1312, + "line": 1313, "column": 8 }, "end": { - "line": 1318, + "line": 1319, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 49519, - "end": 49772, + "start": 49555, + "end": 49808, "loc": { "start": { - "line": 1312, + "line": 1313, "column": 14 }, "end": { - "line": 1318, + "line": 1319, "column": 10 } }, "id": { "type": "Identifier", - "start": 49519, - "end": 49538, + "start": 49555, + "end": 49574, "loc": { "start": { - "line": 1312, + "line": 1313, "column": 14 }, "end": { - "line": 1312, + "line": 1313, "column": 33 }, "identifierName": "defaultColorTexture" @@ -18703,29 +18819,29 @@ }, "init": { "type": "NewExpression", - "start": 49541, - "end": 49772, + "start": 49577, + "end": 49808, "loc": { "start": { - "line": 1312, + "line": 1313, "column": 36 }, "end": { - "line": 1318, + "line": 1319, "column": 10 } }, "callee": { "type": "Identifier", - "start": 49545, - "end": 49562, + "start": 49581, + "end": 49598, "loc": { "start": { - "line": 1312, + "line": 1313, "column": 40 }, "end": { - "line": 1312, + "line": 1313, "column": 57 }, "identifierName": "SceneModelTexture" @@ -18735,30 +18851,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 49563, - "end": 49771, + "start": 49599, + "end": 49807, "loc": { "start": { - "line": 1312, + "line": 1313, "column": 58 }, "end": { - "line": 1318, + "line": 1319, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 49577, - "end": 49605, + "start": 49613, + "end": 49641, "loc": { "start": { - "line": 1313, + "line": 1314, "column": 12 }, "end": { - "line": 1313, + "line": 1314, "column": 40 } }, @@ -18767,15 +18883,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49577, - "end": 49579, + "start": 49613, + "end": 49615, "loc": { "start": { - "line": 1313, + "line": 1314, "column": 12 }, "end": { - "line": 1313, + "line": 1314, "column": 14 }, "identifierName": "id" @@ -18784,15 +18900,15 @@ }, "value": { "type": "Identifier", - "start": 49581, - "end": 49605, + "start": 49617, + "end": 49641, "loc": { "start": { - "line": 1313, + "line": 1314, "column": 16 }, "end": { - "line": 1313, + "line": 1314, "column": 40 }, "identifierName": "DEFAULT_COLOR_TEXTURE_ID" @@ -18802,15 +18918,15 @@ }, { "type": "ObjectProperty", - "start": 49619, - "end": 49761, + "start": 49655, + "end": 49797, "loc": { "start": { - "line": 1314, + "line": 1315, "column": 12 }, "end": { - "line": 1317, + "line": 1318, "column": 14 } }, @@ -18819,15 +18935,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49619, - "end": 49626, + "start": 49655, + "end": 49662, "loc": { "start": { - "line": 1314, + "line": 1315, "column": 12 }, "end": { - "line": 1314, + "line": 1315, "column": 19 }, "identifierName": "texture" @@ -18836,29 +18952,29 @@ }, "value": { "type": "NewExpression", - "start": 49628, - "end": 49761, + "start": 49664, + "end": 49797, "loc": { "start": { - "line": 1314, + "line": 1315, "column": 21 }, "end": { - "line": 1317, + "line": 1318, "column": 14 } }, "callee": { "type": "Identifier", - "start": 49632, - "end": 49641, + "start": 49668, + "end": 49677, "loc": { "start": { - "line": 1314, + "line": 1315, "column": 25 }, "end": { - "line": 1314, + "line": 1315, "column": 34 }, "identifierName": "Texture2D" @@ -18868,30 +18984,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 49642, - "end": 49760, + "start": 49678, + "end": 49796, "loc": { "start": { - "line": 1314, + "line": 1315, "column": 35 }, "end": { - "line": 1317, + "line": 1318, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 49660, - "end": 49684, + "start": 49696, + "end": 49720, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 16 }, "end": { - "line": 1315, + "line": 1316, "column": 40 } }, @@ -18900,15 +19016,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49660, - "end": 49662, + "start": 49696, + "end": 49698, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 16 }, "end": { - "line": 1315, + "line": 1316, "column": 18 }, "identifierName": "gl" @@ -18917,72 +19033,72 @@ }, "value": { "type": "MemberExpression", - "start": 49664, - "end": 49684, + "start": 49700, + "end": 49720, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 20 }, "end": { - "line": 1315, + "line": 1316, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 49664, - "end": 49681, + "start": 49700, + "end": 49717, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 20 }, "end": { - "line": 1315, + "line": 1316, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 49664, - "end": 49674, + "start": 49700, + "end": 49710, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 20 }, "end": { - "line": 1315, + "line": 1316, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 49664, - "end": 49668, + "start": 49700, + "end": 49704, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 20 }, "end": { - "line": 1315, + "line": 1316, "column": 24 } } }, "property": { "type": "Identifier", - "start": 49669, - "end": 49674, + "start": 49705, + "end": 49710, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 25 }, "end": { - "line": 1315, + "line": 1316, "column": 30 }, "identifierName": "scene" @@ -18993,15 +19109,15 @@ }, "property": { "type": "Identifier", - "start": 49675, - "end": 49681, + "start": 49711, + "end": 49717, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 31 }, "end": { - "line": 1315, + "line": 1316, "column": 37 }, "identifierName": "canvas" @@ -19012,15 +19128,15 @@ }, "property": { "type": "Identifier", - "start": 49682, - "end": 49684, + "start": 49718, + "end": 49720, "loc": { "start": { - "line": 1315, + "line": 1316, "column": 38 }, "end": { - "line": 1315, + "line": 1316, "column": 40 }, "identifierName": "gl" @@ -19032,15 +19148,15 @@ }, { "type": "ObjectProperty", - "start": 49702, - "end": 49728, + "start": 49738, + "end": 49764, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 16 }, "end": { - "line": 1316, + "line": 1317, "column": 42 } }, @@ -19049,15 +19165,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49702, - "end": 49714, + "start": 49738, + "end": 49750, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 16 }, "end": { - "line": 1316, + "line": 1317, "column": 28 }, "identifierName": "preloadColor" @@ -19066,30 +19182,30 @@ }, "value": { "type": "ArrayExpression", - "start": 49716, - "end": 49728, + "start": 49752, + "end": 49764, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 30 }, "end": { - "line": 1316, + "line": 1317, "column": 42 } }, "elements": [ { "type": "NumericLiteral", - "start": 49717, - "end": 49718, + "start": 49753, + "end": 49754, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 31 }, "end": { - "line": 1316, + "line": 1317, "column": 32 } }, @@ -19101,15 +19217,15 @@ }, { "type": "NumericLiteral", - "start": 49720, - "end": 49721, + "start": 49756, + "end": 49757, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 34 }, "end": { - "line": 1316, + "line": 1317, "column": 35 } }, @@ -19121,15 +19237,15 @@ }, { "type": "NumericLiteral", - "start": 49723, - "end": 49724, + "start": 49759, + "end": 49760, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 37 }, "end": { - "line": 1316, + "line": 1317, "column": 38 } }, @@ -19141,15 +19257,15 @@ }, { "type": "NumericLiteral", - "start": 49726, - "end": 49727, + "start": 49762, + "end": 49763, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 40 }, "end": { - "line": 1316, + "line": 1317, "column": 41 } }, @@ -19166,15 +19282,15 @@ { "type": "CommentLine", "value": " [r, g, b, a]})", - "start": 49729, - "end": 49746, + "start": 49765, + "end": 49782, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 43 }, "end": { - "line": 1316, + "line": 1317, "column": 60 } } @@ -19198,15 +19314,15 @@ { "type": "CommentLine", "value": " Every SceneModelMesh gets at least the default TextureSet,", - "start": 49376, - "end": 49437, + "start": 49412, + "end": 49473, "loc": { "start": { - "line": 1310, + "line": 1311, "column": 8 }, "end": { - "line": 1310, + "line": 1311, "column": 69 } } @@ -19214,15 +19330,15 @@ { "type": "CommentLine", "value": " which contains empty default textures filled with color", - "start": 49446, - "end": 49504, + "start": 49482, + "end": 49540, "loc": { "start": { - "line": 1311, + "line": 1312, "column": 8 }, "end": { - "line": 1311, + "line": 1312, "column": 66 } } @@ -19231,44 +19347,44 @@ }, { "type": "VariableDeclaration", - "start": 49782, - "end": 50077, + "start": 49818, + "end": 50113, "loc": { "start": { - "line": 1319, + "line": 1320, "column": 8 }, "end": { - "line": 1325, + "line": 1326, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 49788, - "end": 50076, + "start": 49824, + "end": 50112, "loc": { "start": { - "line": 1319, + "line": 1320, "column": 14 }, "end": { - "line": 1325, + "line": 1326, "column": 10 } }, "id": { "type": "Identifier", - "start": 49788, - "end": 49812, + "start": 49824, + "end": 49848, "loc": { "start": { - "line": 1319, + "line": 1320, "column": 14 }, "end": { - "line": 1319, + "line": 1320, "column": 38 }, "identifierName": "defaultMetalRoughTexture" @@ -19277,29 +19393,29 @@ }, "init": { "type": "NewExpression", - "start": 49815, - "end": 50076, + "start": 49851, + "end": 50112, "loc": { "start": { - "line": 1319, + "line": 1320, "column": 41 }, "end": { - "line": 1325, + "line": 1326, "column": 10 } }, "callee": { "type": "Identifier", - "start": 49819, - "end": 49836, + "start": 49855, + "end": 49872, "loc": { "start": { - "line": 1319, + "line": 1320, "column": 45 }, "end": { - "line": 1319, + "line": 1320, "column": 62 }, "identifierName": "SceneModelTexture" @@ -19309,30 +19425,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 49837, - "end": 50075, + "start": 49873, + "end": 50111, "loc": { "start": { - "line": 1319, + "line": 1320, "column": 63 }, "end": { - "line": 1325, + "line": 1326, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 49851, - "end": 49885, + "start": 49887, + "end": 49921, "loc": { "start": { - "line": 1320, + "line": 1321, "column": 12 }, "end": { - "line": 1320, + "line": 1321, "column": 46 } }, @@ -19341,15 +19457,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49851, - "end": 49853, + "start": 49887, + "end": 49889, "loc": { "start": { - "line": 1320, + "line": 1321, "column": 12 }, "end": { - "line": 1320, + "line": 1321, "column": 14 }, "identifierName": "id" @@ -19358,15 +19474,15 @@ }, "value": { "type": "Identifier", - "start": 49855, - "end": 49885, + "start": 49891, + "end": 49921, "loc": { "start": { - "line": 1320, + "line": 1321, "column": 16 }, "end": { - "line": 1320, + "line": 1321, "column": 46 }, "identifierName": "DEFAULT_METAL_ROUGH_TEXTURE_ID" @@ -19376,15 +19492,15 @@ }, { "type": "ObjectProperty", - "start": 49899, - "end": 50065, + "start": 49935, + "end": 50101, "loc": { "start": { - "line": 1321, + "line": 1322, "column": 12 }, "end": { - "line": 1324, + "line": 1325, "column": 14 } }, @@ -19393,15 +19509,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49899, - "end": 49906, + "start": 49935, + "end": 49942, "loc": { "start": { - "line": 1321, + "line": 1322, "column": 12 }, "end": { - "line": 1321, + "line": 1322, "column": 19 }, "identifierName": "texture" @@ -19410,29 +19526,29 @@ }, "value": { "type": "NewExpression", - "start": 49908, - "end": 50065, + "start": 49944, + "end": 50101, "loc": { "start": { - "line": 1321, + "line": 1322, "column": 21 }, "end": { - "line": 1324, + "line": 1325, "column": 14 } }, "callee": { "type": "Identifier", - "start": 49912, - "end": 49921, + "start": 49948, + "end": 49957, "loc": { "start": { - "line": 1321, + "line": 1322, "column": 25 }, "end": { - "line": 1321, + "line": 1322, "column": 34 }, "identifierName": "Texture2D" @@ -19442,30 +19558,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 49922, - "end": 50064, + "start": 49958, + "end": 50100, "loc": { "start": { - "line": 1321, + "line": 1322, "column": 35 }, "end": { - "line": 1324, + "line": 1325, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 49940, - "end": 49964, + "start": 49976, + "end": 50000, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 16 }, "end": { - "line": 1322, + "line": 1323, "column": 40 } }, @@ -19474,15 +19590,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49940, - "end": 49942, + "start": 49976, + "end": 49978, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 16 }, "end": { - "line": 1322, + "line": 1323, "column": 18 }, "identifierName": "gl" @@ -19491,72 +19607,72 @@ }, "value": { "type": "MemberExpression", - "start": 49944, - "end": 49964, + "start": 49980, + "end": 50000, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 20 }, "end": { - "line": 1322, + "line": 1323, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 49944, - "end": 49961, + "start": 49980, + "end": 49997, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 20 }, "end": { - "line": 1322, + "line": 1323, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 49944, - "end": 49954, + "start": 49980, + "end": 49990, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 20 }, "end": { - "line": 1322, + "line": 1323, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 49944, - "end": 49948, + "start": 49980, + "end": 49984, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 20 }, "end": { - "line": 1322, + "line": 1323, "column": 24 } } }, "property": { "type": "Identifier", - "start": 49949, - "end": 49954, + "start": 49985, + "end": 49990, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 25 }, "end": { - "line": 1322, + "line": 1323, "column": 30 }, "identifierName": "scene" @@ -19567,15 +19683,15 @@ }, "property": { "type": "Identifier", - "start": 49955, - "end": 49961, + "start": 49991, + "end": 49997, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 31 }, "end": { - "line": 1322, + "line": 1323, "column": 37 }, "identifierName": "canvas" @@ -19586,15 +19702,15 @@ }, "property": { "type": "Identifier", - "start": 49962, - "end": 49964, + "start": 49998, + "end": 50000, "loc": { "start": { - "line": 1322, + "line": 1323, "column": 38 }, "end": { - "line": 1322, + "line": 1323, "column": 40 }, "identifierName": "gl" @@ -19606,15 +19722,15 @@ }, { "type": "ObjectProperty", - "start": 49982, - "end": 50008, + "start": 50018, + "end": 50044, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 16 }, "end": { - "line": 1323, + "line": 1324, "column": 42 } }, @@ -19623,15 +19739,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49982, - "end": 49994, + "start": 50018, + "end": 50030, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 16 }, "end": { - "line": 1323, + "line": 1324, "column": 28 }, "identifierName": "preloadColor" @@ -19640,30 +19756,30 @@ }, "value": { "type": "ArrayExpression", - "start": 49996, - "end": 50008, + "start": 50032, + "end": 50044, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 30 }, "end": { - "line": 1323, + "line": 1324, "column": 42 } }, "elements": [ { "type": "NumericLiteral", - "start": 49997, - "end": 49998, + "start": 50033, + "end": 50034, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 31 }, "end": { - "line": 1323, + "line": 1324, "column": 32 } }, @@ -19675,15 +19791,15 @@ }, { "type": "NumericLiteral", - "start": 50000, - "end": 50001, + "start": 50036, + "end": 50037, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 34 }, "end": { - "line": 1323, + "line": 1324, "column": 35 } }, @@ -19695,15 +19811,15 @@ }, { "type": "NumericLiteral", - "start": 50003, - "end": 50004, + "start": 50039, + "end": 50040, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 37 }, "end": { - "line": 1323, + "line": 1324, "column": 38 } }, @@ -19715,15 +19831,15 @@ }, { "type": "NumericLiteral", - "start": 50006, - "end": 50007, + "start": 50042, + "end": 50043, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 40 }, "end": { - "line": 1323, + "line": 1324, "column": 41 } }, @@ -19740,15 +19856,15 @@ { "type": "CommentLine", "value": " [unused, roughness, metalness, unused]", - "start": 50009, - "end": 50050, + "start": 50045, + "end": 50086, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 43 }, "end": { - "line": 1323, + "line": 1324, "column": 84 } } @@ -19770,44 +19886,44 @@ }, { "type": "VariableDeclaration", - "start": 50086, - "end": 50375, + "start": 50122, + "end": 50411, "loc": { "start": { - "line": 1326, + "line": 1327, "column": 8 }, "end": { - "line": 1332, + "line": 1333, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 50092, - "end": 50374, + "start": 50128, + "end": 50410, "loc": { "start": { - "line": 1326, + "line": 1327, "column": 14 }, "end": { - "line": 1332, + "line": 1333, "column": 10 } }, "id": { "type": "Identifier", - "start": 50092, - "end": 50113, + "start": 50128, + "end": 50149, "loc": { "start": { - "line": 1326, + "line": 1327, "column": 14 }, "end": { - "line": 1326, + "line": 1327, "column": 35 }, "identifierName": "defaultNormalsTexture" @@ -19816,29 +19932,29 @@ }, "init": { "type": "NewExpression", - "start": 50116, - "end": 50374, + "start": 50152, + "end": 50410, "loc": { "start": { - "line": 1326, + "line": 1327, "column": 38 }, "end": { - "line": 1332, + "line": 1333, "column": 10 } }, "callee": { "type": "Identifier", - "start": 50120, - "end": 50137, + "start": 50156, + "end": 50173, "loc": { "start": { - "line": 1326, + "line": 1327, "column": 42 }, "end": { - "line": 1326, + "line": 1327, "column": 59 }, "identifierName": "SceneModelTexture" @@ -19848,30 +19964,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 50138, - "end": 50373, + "start": 50174, + "end": 50409, "loc": { "start": { - "line": 1326, + "line": 1327, "column": 60 }, "end": { - "line": 1332, + "line": 1333, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 50152, - "end": 50182, + "start": 50188, + "end": 50218, "loc": { "start": { - "line": 1327, + "line": 1328, "column": 12 }, "end": { - "line": 1327, + "line": 1328, "column": 42 } }, @@ -19880,15 +19996,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50152, - "end": 50154, + "start": 50188, + "end": 50190, "loc": { "start": { - "line": 1327, + "line": 1328, "column": 12 }, "end": { - "line": 1327, + "line": 1328, "column": 14 }, "identifierName": "id" @@ -19897,15 +20013,15 @@ }, "value": { "type": "Identifier", - "start": 50156, - "end": 50182, + "start": 50192, + "end": 50218, "loc": { "start": { - "line": 1327, + "line": 1328, "column": 16 }, "end": { - "line": 1327, + "line": 1328, "column": 42 }, "identifierName": "DEFAULT_NORMALS_TEXTURE_ID" @@ -19915,15 +20031,15 @@ }, { "type": "ObjectProperty", - "start": 50196, - "end": 50363, + "start": 50232, + "end": 50399, "loc": { "start": { - "line": 1328, + "line": 1329, "column": 12 }, "end": { - "line": 1331, + "line": 1332, "column": 14 } }, @@ -19932,15 +20048,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50196, - "end": 50203, + "start": 50232, + "end": 50239, "loc": { "start": { - "line": 1328, + "line": 1329, "column": 12 }, "end": { - "line": 1328, + "line": 1329, "column": 19 }, "identifierName": "texture" @@ -19949,29 +20065,29 @@ }, "value": { "type": "NewExpression", - "start": 50205, - "end": 50363, + "start": 50241, + "end": 50399, "loc": { "start": { - "line": 1328, + "line": 1329, "column": 21 }, "end": { - "line": 1331, + "line": 1332, "column": 14 } }, "callee": { "type": "Identifier", - "start": 50209, - "end": 50218, + "start": 50245, + "end": 50254, "loc": { "start": { - "line": 1328, + "line": 1329, "column": 25 }, "end": { - "line": 1328, + "line": 1329, "column": 34 }, "identifierName": "Texture2D" @@ -19981,30 +20097,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 50219, - "end": 50362, + "start": 50255, + "end": 50398, "loc": { "start": { - "line": 1328, + "line": 1329, "column": 35 }, "end": { - "line": 1331, + "line": 1332, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 50237, - "end": 50261, + "start": 50273, + "end": 50297, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 16 }, "end": { - "line": 1329, + "line": 1330, "column": 40 } }, @@ -20013,15 +20129,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50237, - "end": 50239, + "start": 50273, + "end": 50275, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 16 }, "end": { - "line": 1329, + "line": 1330, "column": 18 }, "identifierName": "gl" @@ -20030,72 +20146,72 @@ }, "value": { "type": "MemberExpression", - "start": 50241, - "end": 50261, + "start": 50277, + "end": 50297, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 20 }, "end": { - "line": 1329, + "line": 1330, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 50241, - "end": 50258, + "start": 50277, + "end": 50294, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 20 }, "end": { - "line": 1329, + "line": 1330, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 50241, - "end": 50251, + "start": 50277, + "end": 50287, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 20 }, "end": { - "line": 1329, + "line": 1330, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 50241, - "end": 50245, + "start": 50277, + "end": 50281, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 20 }, "end": { - "line": 1329, + "line": 1330, "column": 24 } } }, "property": { "type": "Identifier", - "start": 50246, - "end": 50251, + "start": 50282, + "end": 50287, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 25 }, "end": { - "line": 1329, + "line": 1330, "column": 30 }, "identifierName": "scene" @@ -20106,15 +20222,15 @@ }, "property": { "type": "Identifier", - "start": 50252, - "end": 50258, + "start": 50288, + "end": 50294, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 31 }, "end": { - "line": 1329, + "line": 1330, "column": 37 }, "identifierName": "canvas" @@ -20125,15 +20241,15 @@ }, "property": { "type": "Identifier", - "start": 50259, - "end": 50261, + "start": 50295, + "end": 50297, "loc": { "start": { - "line": 1329, + "line": 1330, "column": 38 }, "end": { - "line": 1329, + "line": 1330, "column": 40 }, "identifierName": "gl" @@ -20145,15 +20261,15 @@ }, { "type": "ObjectProperty", - "start": 50279, - "end": 50305, + "start": 50315, + "end": 50341, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 16 }, "end": { - "line": 1330, + "line": 1331, "column": 42 } }, @@ -20162,15 +20278,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50279, - "end": 50291, + "start": 50315, + "end": 50327, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 16 }, "end": { - "line": 1330, + "line": 1331, "column": 28 }, "identifierName": "preloadColor" @@ -20179,30 +20295,30 @@ }, "value": { "type": "ArrayExpression", - "start": 50293, - "end": 50305, + "start": 50329, + "end": 50341, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 30 }, "end": { - "line": 1330, + "line": 1331, "column": 42 } }, "elements": [ { "type": "NumericLiteral", - "start": 50294, - "end": 50295, + "start": 50330, + "end": 50331, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 31 }, "end": { - "line": 1330, + "line": 1331, "column": 32 } }, @@ -20214,15 +20330,15 @@ }, { "type": "NumericLiteral", - "start": 50297, - "end": 50298, + "start": 50333, + "end": 50334, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 34 }, "end": { - "line": 1330, + "line": 1331, "column": 35 } }, @@ -20234,15 +20350,15 @@ }, { "type": "NumericLiteral", - "start": 50300, - "end": 50301, + "start": 50336, + "end": 50337, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 37 }, "end": { - "line": 1330, + "line": 1331, "column": 38 } }, @@ -20254,15 +20370,15 @@ }, { "type": "NumericLiteral", - "start": 50303, - "end": 50304, + "start": 50339, + "end": 50340, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 40 }, "end": { - "line": 1330, + "line": 1331, "column": 41 } }, @@ -20279,15 +20395,15 @@ { "type": "CommentLine", "value": " [x, y, z, unused] - these must be zeros", - "start": 50306, - "end": 50348, + "start": 50342, + "end": 50384, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 43 }, "end": { - "line": 1330, + "line": 1331, "column": 85 } } @@ -20309,44 +20425,44 @@ }, { "type": "VariableDeclaration", - "start": 50384, - "end": 50653, + "start": 50420, + "end": 50689, "loc": { "start": { - "line": 1333, + "line": 1334, "column": 8 }, "end": { - "line": 1339, + "line": 1340, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 50390, - "end": 50652, + "start": 50426, + "end": 50688, "loc": { "start": { - "line": 1333, + "line": 1334, "column": 14 }, "end": { - "line": 1339, + "line": 1340, "column": 10 } }, "id": { "type": "Identifier", - "start": 50390, - "end": 50412, + "start": 50426, + "end": 50448, "loc": { "start": { - "line": 1333, + "line": 1334, "column": 14 }, "end": { - "line": 1333, + "line": 1334, "column": 36 }, "identifierName": "defaultEmissiveTexture" @@ -20355,29 +20471,29 @@ }, "init": { "type": "NewExpression", - "start": 50415, - "end": 50652, + "start": 50451, + "end": 50688, "loc": { "start": { - "line": 1333, + "line": 1334, "column": 39 }, "end": { - "line": 1339, + "line": 1340, "column": 10 } }, "callee": { "type": "Identifier", - "start": 50419, - "end": 50436, + "start": 50455, + "end": 50472, "loc": { "start": { - "line": 1333, + "line": 1334, "column": 43 }, "end": { - "line": 1333, + "line": 1334, "column": 60 }, "identifierName": "SceneModelTexture" @@ -20387,30 +20503,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 50437, - "end": 50651, + "start": 50473, + "end": 50687, "loc": { "start": { - "line": 1333, + "line": 1334, "column": 61 }, "end": { - "line": 1339, + "line": 1340, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 50451, - "end": 50482, + "start": 50487, + "end": 50518, "loc": { "start": { - "line": 1334, + "line": 1335, "column": 12 }, "end": { - "line": 1334, + "line": 1335, "column": 43 } }, @@ -20419,15 +20535,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50451, - "end": 50453, + "start": 50487, + "end": 50489, "loc": { "start": { - "line": 1334, + "line": 1335, "column": 12 }, "end": { - "line": 1334, + "line": 1335, "column": 14 }, "identifierName": "id" @@ -20436,15 +20552,15 @@ }, "value": { "type": "Identifier", - "start": 50455, - "end": 50482, + "start": 50491, + "end": 50518, "loc": { "start": { - "line": 1334, + "line": 1335, "column": 16 }, "end": { - "line": 1334, + "line": 1335, "column": 43 }, "identifierName": "DEFAULT_EMISSIVE_TEXTURE_ID" @@ -20454,15 +20570,15 @@ }, { "type": "ObjectProperty", - "start": 50496, - "end": 50641, + "start": 50532, + "end": 50677, "loc": { "start": { - "line": 1335, + "line": 1336, "column": 12 }, "end": { - "line": 1338, + "line": 1339, "column": 14 } }, @@ -20471,15 +20587,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50496, - "end": 50503, + "start": 50532, + "end": 50539, "loc": { "start": { - "line": 1335, + "line": 1336, "column": 12 }, "end": { - "line": 1335, + "line": 1336, "column": 19 }, "identifierName": "texture" @@ -20488,29 +20604,29 @@ }, "value": { "type": "NewExpression", - "start": 50505, - "end": 50641, + "start": 50541, + "end": 50677, "loc": { "start": { - "line": 1335, + "line": 1336, "column": 21 }, "end": { - "line": 1338, + "line": 1339, "column": 14 } }, "callee": { "type": "Identifier", - "start": 50509, - "end": 50518, + "start": 50545, + "end": 50554, "loc": { "start": { - "line": 1335, + "line": 1336, "column": 25 }, "end": { - "line": 1335, + "line": 1336, "column": 34 }, "identifierName": "Texture2D" @@ -20520,30 +20636,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 50519, - "end": 50640, + "start": 50555, + "end": 50676, "loc": { "start": { - "line": 1335, + "line": 1336, "column": 35 }, "end": { - "line": 1338, + "line": 1339, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 50537, - "end": 50561, + "start": 50573, + "end": 50597, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 16 }, "end": { - "line": 1336, + "line": 1337, "column": 40 } }, @@ -20552,15 +20668,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50537, - "end": 50539, + "start": 50573, + "end": 50575, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 16 }, "end": { - "line": 1336, + "line": 1337, "column": 18 }, "identifierName": "gl" @@ -20569,72 +20685,72 @@ }, "value": { "type": "MemberExpression", - "start": 50541, - "end": 50561, + "start": 50577, + "end": 50597, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 20 }, "end": { - "line": 1336, + "line": 1337, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 50541, - "end": 50558, + "start": 50577, + "end": 50594, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 20 }, "end": { - "line": 1336, + "line": 1337, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 50541, - "end": 50551, + "start": 50577, + "end": 50587, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 20 }, "end": { - "line": 1336, + "line": 1337, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 50541, - "end": 50545, + "start": 50577, + "end": 50581, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 20 }, "end": { - "line": 1336, + "line": 1337, "column": 24 } } }, "property": { "type": "Identifier", - "start": 50546, - "end": 50551, + "start": 50582, + "end": 50587, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 25 }, "end": { - "line": 1336, + "line": 1337, "column": 30 }, "identifierName": "scene" @@ -20645,15 +20761,15 @@ }, "property": { "type": "Identifier", - "start": 50552, - "end": 50558, + "start": 50588, + "end": 50594, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 31 }, "end": { - "line": 1336, + "line": 1337, "column": 37 }, "identifierName": "canvas" @@ -20664,15 +20780,15 @@ }, "property": { "type": "Identifier", - "start": 50559, - "end": 50561, + "start": 50595, + "end": 50597, "loc": { "start": { - "line": 1336, + "line": 1337, "column": 38 }, "end": { - "line": 1336, + "line": 1337, "column": 40 }, "identifierName": "gl" @@ -20684,15 +20800,15 @@ }, { "type": "ObjectProperty", - "start": 50579, - "end": 50605, + "start": 50615, + "end": 50641, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 16 }, "end": { - "line": 1337, + "line": 1338, "column": 42 } }, @@ -20701,15 +20817,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50579, - "end": 50591, + "start": 50615, + "end": 50627, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 16 }, "end": { - "line": 1337, + "line": 1338, "column": 28 }, "identifierName": "preloadColor" @@ -20718,30 +20834,30 @@ }, "value": { "type": "ArrayExpression", - "start": 50593, - "end": 50605, + "start": 50629, + "end": 50641, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 30 }, "end": { - "line": 1337, + "line": 1338, "column": 42 } }, "elements": [ { "type": "NumericLiteral", - "start": 50594, - "end": 50595, + "start": 50630, + "end": 50631, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 31 }, "end": { - "line": 1337, + "line": 1338, "column": 32 } }, @@ -20753,15 +20869,15 @@ }, { "type": "NumericLiteral", - "start": 50597, - "end": 50598, + "start": 50633, + "end": 50634, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 34 }, "end": { - "line": 1337, + "line": 1338, "column": 35 } }, @@ -20773,15 +20889,15 @@ }, { "type": "NumericLiteral", - "start": 50600, - "end": 50601, + "start": 50636, + "end": 50637, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 37 }, "end": { - "line": 1337, + "line": 1338, "column": 38 } }, @@ -20793,15 +20909,15 @@ }, { "type": "NumericLiteral", - "start": 50603, - "end": 50604, + "start": 50639, + "end": 50640, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 40 }, "end": { - "line": 1337, + "line": 1338, "column": 41 } }, @@ -20818,15 +20934,15 @@ { "type": "CommentLine", "value": " [x, y, z, unused]", - "start": 50606, - "end": 50626, + "start": 50642, + "end": 50662, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 43 }, "end": { - "line": 1337, + "line": 1338, "column": 63 } } @@ -20848,44 +20964,44 @@ }, { "type": "VariableDeclaration", - "start": 50662, - "end": 50933, + "start": 50698, + "end": 50969, "loc": { "start": { - "line": 1340, + "line": 1341, "column": 8 }, "end": { - "line": 1346, + "line": 1347, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 50668, - "end": 50932, + "start": 50704, + "end": 50968, "loc": { "start": { - "line": 1340, + "line": 1341, "column": 14 }, "end": { - "line": 1346, + "line": 1347, "column": 10 } }, "id": { "type": "Identifier", - "start": 50668, - "end": 50691, + "start": 50704, + "end": 50727, "loc": { "start": { - "line": 1340, + "line": 1341, "column": 14 }, "end": { - "line": 1340, + "line": 1341, "column": 37 }, "identifierName": "defaultOcclusionTexture" @@ -20894,29 +21010,29 @@ }, "init": { "type": "NewExpression", - "start": 50694, - "end": 50932, + "start": 50730, + "end": 50968, "loc": { "start": { - "line": 1340, + "line": 1341, "column": 40 }, "end": { - "line": 1346, + "line": 1347, "column": 10 } }, "callee": { "type": "Identifier", - "start": 50698, - "end": 50715, + "start": 50734, + "end": 50751, "loc": { "start": { - "line": 1340, + "line": 1341, "column": 44 }, "end": { - "line": 1340, + "line": 1341, "column": 61 }, "identifierName": "SceneModelTexture" @@ -20926,30 +21042,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 50716, - "end": 50931, + "start": 50752, + "end": 50967, "loc": { "start": { - "line": 1340, + "line": 1341, "column": 62 }, "end": { - "line": 1346, + "line": 1347, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 50730, - "end": 50762, + "start": 50766, + "end": 50798, "loc": { "start": { - "line": 1341, + "line": 1342, "column": 12 }, "end": { - "line": 1341, + "line": 1342, "column": 44 } }, @@ -20958,15 +21074,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50730, - "end": 50732, + "start": 50766, + "end": 50768, "loc": { "start": { - "line": 1341, + "line": 1342, "column": 12 }, "end": { - "line": 1341, + "line": 1342, "column": 14 }, "identifierName": "id" @@ -20975,15 +21091,15 @@ }, "value": { "type": "Identifier", - "start": 50734, - "end": 50762, + "start": 50770, + "end": 50798, "loc": { "start": { - "line": 1341, + "line": 1342, "column": 16 }, "end": { - "line": 1341, + "line": 1342, "column": 44 }, "identifierName": "DEFAULT_OCCLUSION_TEXTURE_ID" @@ -20993,15 +21109,15 @@ }, { "type": "ObjectProperty", - "start": 50776, - "end": 50921, + "start": 50812, + "end": 50957, "loc": { "start": { - "line": 1342, + "line": 1343, "column": 12 }, "end": { - "line": 1345, + "line": 1346, "column": 14 } }, @@ -21010,15 +21126,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50776, - "end": 50783, + "start": 50812, + "end": 50819, "loc": { "start": { - "line": 1342, + "line": 1343, "column": 12 }, "end": { - "line": 1342, + "line": 1343, "column": 19 }, "identifierName": "texture" @@ -21027,29 +21143,29 @@ }, "value": { "type": "NewExpression", - "start": 50785, - "end": 50921, + "start": 50821, + "end": 50957, "loc": { "start": { - "line": 1342, + "line": 1343, "column": 21 }, "end": { - "line": 1345, + "line": 1346, "column": 14 } }, "callee": { "type": "Identifier", - "start": 50789, - "end": 50798, + "start": 50825, + "end": 50834, "loc": { "start": { - "line": 1342, + "line": 1343, "column": 25 }, "end": { - "line": 1342, + "line": 1343, "column": 34 }, "identifierName": "Texture2D" @@ -21059,30 +21175,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 50799, - "end": 50920, + "start": 50835, + "end": 50956, "loc": { "start": { - "line": 1342, + "line": 1343, "column": 35 }, "end": { - "line": 1345, + "line": 1346, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 50817, - "end": 50841, + "start": 50853, + "end": 50877, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 16 }, "end": { - "line": 1343, + "line": 1344, "column": 40 } }, @@ -21091,15 +21207,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50817, - "end": 50819, + "start": 50853, + "end": 50855, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 16 }, "end": { - "line": 1343, + "line": 1344, "column": 18 }, "identifierName": "gl" @@ -21108,72 +21224,72 @@ }, "value": { "type": "MemberExpression", - "start": 50821, - "end": 50841, + "start": 50857, + "end": 50877, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 20 }, "end": { - "line": 1343, + "line": 1344, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 50821, - "end": 50838, + "start": 50857, + "end": 50874, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 20 }, "end": { - "line": 1343, + "line": 1344, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 50821, - "end": 50831, + "start": 50857, + "end": 50867, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 20 }, "end": { - "line": 1343, + "line": 1344, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 50821, - "end": 50825, + "start": 50857, + "end": 50861, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 20 }, "end": { - "line": 1343, + "line": 1344, "column": 24 } } }, "property": { "type": "Identifier", - "start": 50826, - "end": 50831, + "start": 50862, + "end": 50867, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 25 }, "end": { - "line": 1343, + "line": 1344, "column": 30 }, "identifierName": "scene" @@ -21184,15 +21300,15 @@ }, "property": { "type": "Identifier", - "start": 50832, - "end": 50838, + "start": 50868, + "end": 50874, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 31 }, "end": { - "line": 1343, + "line": 1344, "column": 37 }, "identifierName": "canvas" @@ -21203,15 +21319,15 @@ }, "property": { "type": "Identifier", - "start": 50839, - "end": 50841, + "start": 50875, + "end": 50877, "loc": { "start": { - "line": 1343, + "line": 1344, "column": 38 }, "end": { - "line": 1343, + "line": 1344, "column": 40 }, "identifierName": "gl" @@ -21223,15 +21339,15 @@ }, { "type": "ObjectProperty", - "start": 50859, - "end": 50885, + "start": 50895, + "end": 50921, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 16 }, "end": { - "line": 1344, + "line": 1345, "column": 42 } }, @@ -21240,15 +21356,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50859, - "end": 50871, + "start": 50895, + "end": 50907, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 16 }, "end": { - "line": 1344, + "line": 1345, "column": 28 }, "identifierName": "preloadColor" @@ -21257,30 +21373,30 @@ }, "value": { "type": "ArrayExpression", - "start": 50873, - "end": 50885, + "start": 50909, + "end": 50921, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 30 }, "end": { - "line": 1344, + "line": 1345, "column": 42 } }, "elements": [ { "type": "NumericLiteral", - "start": 50874, - "end": 50875, + "start": 50910, + "end": 50911, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 31 }, "end": { - "line": 1344, + "line": 1345, "column": 32 } }, @@ -21292,15 +21408,15 @@ }, { "type": "NumericLiteral", - "start": 50877, - "end": 50878, + "start": 50913, + "end": 50914, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 34 }, "end": { - "line": 1344, + "line": 1345, "column": 35 } }, @@ -21312,15 +21428,15 @@ }, { "type": "NumericLiteral", - "start": 50880, - "end": 50881, + "start": 50916, + "end": 50917, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 37 }, "end": { - "line": 1344, + "line": 1345, "column": 38 } }, @@ -21332,15 +21448,15 @@ }, { "type": "NumericLiteral", - "start": 50883, - "end": 50884, + "start": 50919, + "end": 50920, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 40 }, "end": { - "line": 1344, + "line": 1345, "column": 41 } }, @@ -21357,15 +21473,15 @@ { "type": "CommentLine", "value": " [x, y, z, unused]", - "start": 50886, - "end": 50906, + "start": 50922, + "end": 50942, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 43 }, "end": { - "line": 1344, + "line": 1345, "column": 63 } } @@ -21387,137 +21503,8 @@ }, { "type": "ExpressionStatement", - "start": 50942, - "end": 51005, - "loc": { - "start": { - "line": 1347, - "column": 8 - }, - "end": { - "line": 1347, - "column": 71 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 50942, - "end": 51004, - "loc": { - "start": { - "line": 1347, - "column": 8 - }, - "end": { - "line": 1347, - "column": 70 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 50942, - "end": 50982, - "loc": { - "start": { - "line": 1347, - "column": 8 - }, - "end": { - "line": 1347, - "column": 48 - } - }, - "object": { - "type": "MemberExpression", - "start": 50942, - "end": 50956, - "loc": { - "start": { - "line": 1347, - "column": 8 - }, - "end": { - "line": 1347, - "column": 22 - } - }, - "object": { - "type": "ThisExpression", - "start": 50942, - "end": 50946, - "loc": { - "start": { - "line": 1347, - "column": 8 - }, - "end": { - "line": 1347, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 50947, - "end": 50956, - "loc": { - "start": { - "line": 1347, - "column": 13 - }, - "end": { - "line": 1347, - "column": 22 - }, - "identifierName": "_textures" - }, - "name": "_textures" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 50957, - "end": 50981, - "loc": { - "start": { - "line": 1347, - "column": 23 - }, - "end": { - "line": 1347, - "column": 47 - }, - "identifierName": "DEFAULT_COLOR_TEXTURE_ID" - }, - "name": "DEFAULT_COLOR_TEXTURE_ID" - }, - "computed": true - }, - "right": { - "type": "Identifier", - "start": 50985, - "end": 51004, - "loc": { - "start": { - "line": 1347, - "column": 51 - }, - "end": { - "line": 1347, - "column": 70 - }, - "identifierName": "defaultColorTexture" - }, - "name": "defaultColorTexture" - } - } - }, - { - "type": "ExpressionStatement", - "start": 51014, - "end": 51088, + "start": 50978, + "end": 51041, "loc": { "start": { "line": 1348, @@ -21525,13 +21512,13 @@ }, "end": { "line": 1348, - "column": 82 + "column": 71 } }, "expression": { "type": "AssignmentExpression", - "start": 51014, - "end": 51087, + "start": 50978, + "end": 51040, "loc": { "start": { "line": 1348, @@ -21539,14 +21526,14 @@ }, "end": { "line": 1348, - "column": 81 + "column": 70 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51014, - "end": 51060, + "start": 50978, + "end": 51018, "loc": { "start": { "line": 1348, @@ -21554,13 +21541,13 @@ }, "end": { "line": 1348, - "column": 54 + "column": 48 } }, "object": { "type": "MemberExpression", - "start": 51014, - "end": 51028, + "start": 50978, + "end": 50992, "loc": { "start": { "line": 1348, @@ -21573,8 +21560,8 @@ }, "object": { "type": "ThisExpression", - "start": 51014, - "end": 51018, + "start": 50978, + "end": 50982, "loc": { "start": { "line": 1348, @@ -21588,8 +21575,8 @@ }, "property": { "type": "Identifier", - "start": 51019, - "end": 51028, + "start": 50983, + "end": 50992, "loc": { "start": { "line": 1348, @@ -21607,8 +21594,8 @@ }, "property": { "type": "Identifier", - "start": 51029, - "end": 51059, + "start": 50993, + "end": 51017, "loc": { "start": { "line": 1348, @@ -21616,37 +21603,37 @@ }, "end": { "line": 1348, - "column": 53 + "column": 47 }, - "identifierName": "DEFAULT_METAL_ROUGH_TEXTURE_ID" + "identifierName": "DEFAULT_COLOR_TEXTURE_ID" }, - "name": "DEFAULT_METAL_ROUGH_TEXTURE_ID" + "name": "DEFAULT_COLOR_TEXTURE_ID" }, "computed": true }, "right": { "type": "Identifier", - "start": 51063, - "end": 51087, + "start": 51021, + "end": 51040, "loc": { "start": { "line": 1348, - "column": 57 + "column": 51 }, "end": { "line": 1348, - "column": 81 + "column": 70 }, - "identifierName": "defaultMetalRoughTexture" + "identifierName": "defaultColorTexture" }, - "name": "defaultMetalRoughTexture" + "name": "defaultColorTexture" } } }, { "type": "ExpressionStatement", - "start": 51097, - "end": 51164, + "start": 51050, + "end": 51124, "loc": { "start": { "line": 1349, @@ -21654,13 +21641,13 @@ }, "end": { "line": 1349, - "column": 75 + "column": 82 } }, "expression": { "type": "AssignmentExpression", - "start": 51097, - "end": 51163, + "start": 51050, + "end": 51123, "loc": { "start": { "line": 1349, @@ -21668,14 +21655,14 @@ }, "end": { "line": 1349, - "column": 74 + "column": 81 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51097, - "end": 51139, + "start": 51050, + "end": 51096, "loc": { "start": { "line": 1349, @@ -21683,13 +21670,13 @@ }, "end": { "line": 1349, - "column": 50 + "column": 54 } }, "object": { "type": "MemberExpression", - "start": 51097, - "end": 51111, + "start": 51050, + "end": 51064, "loc": { "start": { "line": 1349, @@ -21702,8 +21689,8 @@ }, "object": { "type": "ThisExpression", - "start": 51097, - "end": 51101, + "start": 51050, + "end": 51054, "loc": { "start": { "line": 1349, @@ -21717,8 +21704,8 @@ }, "property": { "type": "Identifier", - "start": 51102, - "end": 51111, + "start": 51055, + "end": 51064, "loc": { "start": { "line": 1349, @@ -21736,8 +21723,8 @@ }, "property": { "type": "Identifier", - "start": 51112, - "end": 51138, + "start": 51065, + "end": 51095, "loc": { "start": { "line": 1349, @@ -21745,37 +21732,37 @@ }, "end": { "line": 1349, - "column": 49 + "column": 53 }, - "identifierName": "DEFAULT_NORMALS_TEXTURE_ID" + "identifierName": "DEFAULT_METAL_ROUGH_TEXTURE_ID" }, - "name": "DEFAULT_NORMALS_TEXTURE_ID" + "name": "DEFAULT_METAL_ROUGH_TEXTURE_ID" }, "computed": true }, "right": { "type": "Identifier", - "start": 51142, - "end": 51163, + "start": 51099, + "end": 51123, "loc": { "start": { "line": 1349, - "column": 53 + "column": 57 }, "end": { "line": 1349, - "column": 74 + "column": 81 }, - "identifierName": "defaultNormalsTexture" + "identifierName": "defaultMetalRoughTexture" }, - "name": "defaultNormalsTexture" + "name": "defaultMetalRoughTexture" } } }, { "type": "ExpressionStatement", - "start": 51173, - "end": 51242, + "start": 51133, + "end": 51200, "loc": { "start": { "line": 1350, @@ -21783,13 +21770,13 @@ }, "end": { "line": 1350, - "column": 77 + "column": 75 } }, "expression": { "type": "AssignmentExpression", - "start": 51173, - "end": 51241, + "start": 51133, + "end": 51199, "loc": { "start": { "line": 1350, @@ -21797,14 +21784,14 @@ }, "end": { "line": 1350, - "column": 76 + "column": 74 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51173, - "end": 51216, + "start": 51133, + "end": 51175, "loc": { "start": { "line": 1350, @@ -21812,13 +21799,13 @@ }, "end": { "line": 1350, - "column": 51 + "column": 50 } }, "object": { "type": "MemberExpression", - "start": 51173, - "end": 51187, + "start": 51133, + "end": 51147, "loc": { "start": { "line": 1350, @@ -21831,8 +21818,8 @@ }, "object": { "type": "ThisExpression", - "start": 51173, - "end": 51177, + "start": 51133, + "end": 51137, "loc": { "start": { "line": 1350, @@ -21846,8 +21833,8 @@ }, "property": { "type": "Identifier", - "start": 51178, - "end": 51187, + "start": 51138, + "end": 51147, "loc": { "start": { "line": 1350, @@ -21865,8 +21852,8 @@ }, "property": { "type": "Identifier", - "start": 51188, - "end": 51215, + "start": 51148, + "end": 51174, "loc": { "start": { "line": 1350, @@ -21874,37 +21861,37 @@ }, "end": { "line": 1350, - "column": 50 + "column": 49 }, - "identifierName": "DEFAULT_EMISSIVE_TEXTURE_ID" + "identifierName": "DEFAULT_NORMALS_TEXTURE_ID" }, - "name": "DEFAULT_EMISSIVE_TEXTURE_ID" + "name": "DEFAULT_NORMALS_TEXTURE_ID" }, "computed": true }, "right": { "type": "Identifier", - "start": 51219, - "end": 51241, + "start": 51178, + "end": 51199, "loc": { "start": { "line": 1350, - "column": 54 + "column": 53 }, "end": { "line": 1350, - "column": 76 + "column": 74 }, - "identifierName": "defaultEmissiveTexture" + "identifierName": "defaultNormalsTexture" }, - "name": "defaultEmissiveTexture" + "name": "defaultNormalsTexture" } } }, { "type": "ExpressionStatement", - "start": 51251, - "end": 51322, + "start": 51209, + "end": 51278, "loc": { "start": { "line": 1351, @@ -21912,13 +21899,13 @@ }, "end": { "line": 1351, - "column": 79 + "column": 77 } }, "expression": { "type": "AssignmentExpression", - "start": 51251, - "end": 51321, + "start": 51209, + "end": 51277, "loc": { "start": { "line": 1351, @@ -21926,14 +21913,14 @@ }, "end": { "line": 1351, - "column": 78 + "column": 76 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51251, - "end": 51295, + "start": 51209, + "end": 51252, "loc": { "start": { "line": 1351, @@ -21941,13 +21928,13 @@ }, "end": { "line": 1351, - "column": 52 + "column": 51 } }, "object": { "type": "MemberExpression", - "start": 51251, - "end": 51265, + "start": 51209, + "end": 51223, "loc": { "start": { "line": 1351, @@ -21960,8 +21947,8 @@ }, "object": { "type": "ThisExpression", - "start": 51251, - "end": 51255, + "start": 51209, + "end": 51213, "loc": { "start": { "line": 1351, @@ -21975,8 +21962,8 @@ }, "property": { "type": "Identifier", - "start": 51256, - "end": 51265, + "start": 51214, + "end": 51223, "loc": { "start": { "line": 1351, @@ -21994,8 +21981,8 @@ }, "property": { "type": "Identifier", - "start": 51266, - "end": 51294, + "start": 51224, + "end": 51251, "loc": { "start": { "line": 1351, @@ -22003,66 +21990,66 @@ }, "end": { "line": 1351, - "column": 51 + "column": 50 }, - "identifierName": "DEFAULT_OCCLUSION_TEXTURE_ID" + "identifierName": "DEFAULT_EMISSIVE_TEXTURE_ID" }, - "name": "DEFAULT_OCCLUSION_TEXTURE_ID" + "name": "DEFAULT_EMISSIVE_TEXTURE_ID" }, "computed": true }, "right": { "type": "Identifier", - "start": 51298, - "end": 51321, + "start": 51255, + "end": 51277, "loc": { "start": { "line": 1351, - "column": 55 + "column": 54 }, "end": { "line": 1351, - "column": 78 + "column": 76 }, - "identifierName": "defaultOcclusionTexture" + "identifierName": "defaultEmissiveTexture" }, - "name": "defaultOcclusionTexture" + "name": "defaultEmissiveTexture" } } }, { "type": "ExpressionStatement", - "start": 51331, - "end": 51747, + "start": 51287, + "end": 51358, "loc": { "start": { "line": 1352, "column": 8 }, "end": { - "line": 1360, - "column": 11 + "line": 1352, + "column": 79 } }, "expression": { "type": "AssignmentExpression", - "start": 51331, - "end": 51746, + "start": 51287, + "end": 51357, "loc": { "start": { "line": 1352, "column": 8 }, "end": { - "line": 1360, - "column": 10 + "line": 1352, + "column": 78 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51331, - "end": 51372, + "start": 51287, + "end": 51331, "loc": { "start": { "line": 1352, @@ -22070,13 +22057,13 @@ }, "end": { "line": 1352, - "column": 49 + "column": 52 } }, "object": { "type": "MemberExpression", - "start": 51331, - "end": 51348, + "start": 51287, + "end": 51301, "loc": { "start": { "line": 1352, @@ -22084,13 +22071,13 @@ }, "end": { "line": 1352, - "column": 25 + "column": 22 } }, "object": { "type": "ThisExpression", - "start": 51331, - "end": 51335, + "start": 51287, + "end": 51291, "loc": { "start": { "line": 1352, @@ -22104,8 +22091,8 @@ }, "property": { "type": "Identifier", - "start": 51336, - "end": 51348, + "start": 51292, + "end": 51301, "loc": { "start": { "line": 1352, @@ -22113,6 +22100,135 @@ }, "end": { "line": 1352, + "column": 22 + }, + "identifierName": "_textures" + }, + "name": "_textures" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 51302, + "end": 51330, + "loc": { + "start": { + "line": 1352, + "column": 23 + }, + "end": { + "line": 1352, + "column": 51 + }, + "identifierName": "DEFAULT_OCCLUSION_TEXTURE_ID" + }, + "name": "DEFAULT_OCCLUSION_TEXTURE_ID" + }, + "computed": true + }, + "right": { + "type": "Identifier", + "start": 51334, + "end": 51357, + "loc": { + "start": { + "line": 1352, + "column": 55 + }, + "end": { + "line": 1352, + "column": 78 + }, + "identifierName": "defaultOcclusionTexture" + }, + "name": "defaultOcclusionTexture" + } + } + }, + { + "type": "ExpressionStatement", + "start": 51367, + "end": 51783, + "loc": { + "start": { + "line": 1353, + "column": 8 + }, + "end": { + "line": 1361, + "column": 11 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 51367, + "end": 51782, + "loc": { + "start": { + "line": 1353, + "column": 8 + }, + "end": { + "line": 1361, + "column": 10 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 51367, + "end": 51408, + "loc": { + "start": { + "line": 1353, + "column": 8 + }, + "end": { + "line": 1353, + "column": 49 + } + }, + "object": { + "type": "MemberExpression", + "start": 51367, + "end": 51384, + "loc": { + "start": { + "line": 1353, + "column": 8 + }, + "end": { + "line": 1353, + "column": 25 + } + }, + "object": { + "type": "ThisExpression", + "start": 51367, + "end": 51371, + "loc": { + "start": { + "line": 1353, + "column": 8 + }, + "end": { + "line": 1353, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 51372, + "end": 51384, + "loc": { + "start": { + "line": 1353, + "column": 13 + }, + "end": { + "line": 1353, "column": 25 }, "identifierName": "_textureSets" @@ -22123,15 +22239,15 @@ }, "property": { "type": "Identifier", - "start": 51349, - "end": 51371, + "start": 51385, + "end": 51407, "loc": { "start": { - "line": 1352, + "line": 1353, "column": 26 }, "end": { - "line": 1352, + "line": 1353, "column": 48 }, "identifierName": "DEFAULT_TEXTURE_SET_ID" @@ -22142,29 +22258,29 @@ }, "right": { "type": "NewExpression", - "start": 51375, - "end": 51746, + "start": 51411, + "end": 51782, "loc": { "start": { - "line": 1352, + "line": 1353, "column": 52 }, "end": { - "line": 1360, + "line": 1361, "column": 10 } }, "callee": { "type": "Identifier", - "start": 51379, - "end": 51399, + "start": 51415, + "end": 51435, "loc": { "start": { - "line": 1352, + "line": 1353, "column": 56 }, "end": { - "line": 1352, + "line": 1353, "column": 76 }, "identifierName": "SceneModelTextureSet" @@ -22174,30 +22290,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 51400, - "end": 51745, + "start": 51436, + "end": 51781, "loc": { "start": { - "line": 1352, + "line": 1353, "column": 77 }, "end": { - "line": 1360, + "line": 1361, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 51414, - "end": 51440, + "start": 51450, + "end": 51476, "loc": { "start": { - "line": 1353, + "line": 1354, "column": 12 }, "end": { - "line": 1353, + "line": 1354, "column": 38 } }, @@ -22206,15 +22322,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51414, - "end": 51416, + "start": 51450, + "end": 51452, "loc": { "start": { - "line": 1353, + "line": 1354, "column": 12 }, "end": { - "line": 1353, + "line": 1354, "column": 14 }, "identifierName": "id" @@ -22223,15 +22339,15 @@ }, "value": { "type": "Identifier", - "start": 51418, - "end": 51440, + "start": 51454, + "end": 51476, "loc": { "start": { - "line": 1353, + "line": 1354, "column": 16 }, "end": { - "line": 1353, + "line": 1354, "column": 38 }, "identifierName": "DEFAULT_TEXTURE_SET_ID" @@ -22241,15 +22357,15 @@ }, { "type": "ObjectProperty", - "start": 51454, - "end": 51465, + "start": 51490, + "end": 51501, "loc": { "start": { - "line": 1354, + "line": 1355, "column": 12 }, "end": { - "line": 1354, + "line": 1355, "column": 23 } }, @@ -22258,15 +22374,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51454, - "end": 51459, + "start": 51490, + "end": 51495, "loc": { "start": { - "line": 1354, + "line": 1355, "column": 12 }, "end": { - "line": 1354, + "line": 1355, "column": 17 }, "identifierName": "model" @@ -22275,15 +22391,15 @@ }, "value": { "type": "ThisExpression", - "start": 51461, - "end": 51465, + "start": 51497, + "end": 51501, "loc": { "start": { - "line": 1354, + "line": 1355, "column": 19 }, "end": { - "line": 1354, + "line": 1355, "column": 23 } } @@ -22291,15 +22407,15 @@ }, { "type": "ObjectProperty", - "start": 51479, - "end": 51512, + "start": 51515, + "end": 51548, "loc": { "start": { - "line": 1355, + "line": 1356, "column": 12 }, "end": { - "line": 1355, + "line": 1356, "column": 45 } }, @@ -22308,15 +22424,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51479, - "end": 51491, + "start": 51515, + "end": 51527, "loc": { "start": { - "line": 1355, + "line": 1356, "column": 12 }, "end": { - "line": 1355, + "line": 1356, "column": 24 }, "identifierName": "colorTexture" @@ -22325,15 +22441,15 @@ }, "value": { "type": "Identifier", - "start": 51493, - "end": 51512, + "start": 51529, + "end": 51548, "loc": { "start": { - "line": 1355, + "line": 1356, "column": 26 }, "end": { - "line": 1355, + "line": 1356, "column": 45 }, "identifierName": "defaultColorTexture" @@ -22343,15 +22459,15 @@ }, { "type": "ObjectProperty", - "start": 51526, - "end": 51576, + "start": 51562, + "end": 51612, "loc": { "start": { - "line": 1356, + "line": 1357, "column": 12 }, "end": { - "line": 1356, + "line": 1357, "column": 62 } }, @@ -22360,15 +22476,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51526, - "end": 51550, + "start": 51562, + "end": 51586, "loc": { "start": { - "line": 1356, + "line": 1357, "column": 12 }, "end": { - "line": 1356, + "line": 1357, "column": 36 }, "identifierName": "metallicRoughnessTexture" @@ -22377,15 +22493,15 @@ }, "value": { "type": "Identifier", - "start": 51552, - "end": 51576, + "start": 51588, + "end": 51612, "loc": { "start": { - "line": 1356, + "line": 1357, "column": 38 }, "end": { - "line": 1356, + "line": 1357, "column": 62 }, "identifierName": "defaultMetalRoughTexture" @@ -22395,15 +22511,15 @@ }, { "type": "ObjectProperty", - "start": 51590, - "end": 51627, + "start": 51626, + "end": 51663, "loc": { "start": { - "line": 1357, + "line": 1358, "column": 12 }, "end": { - "line": 1357, + "line": 1358, "column": 49 } }, @@ -22412,15 +22528,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51590, - "end": 51604, + "start": 51626, + "end": 51640, "loc": { "start": { - "line": 1357, + "line": 1358, "column": 12 }, "end": { - "line": 1357, + "line": 1358, "column": 26 }, "identifierName": "normalsTexture" @@ -22429,15 +22545,15 @@ }, "value": { "type": "Identifier", - "start": 51606, - "end": 51627, + "start": 51642, + "end": 51663, "loc": { "start": { - "line": 1357, + "line": 1358, "column": 28 }, "end": { - "line": 1357, + "line": 1358, "column": 49 }, "identifierName": "defaultNormalsTexture" @@ -22447,15 +22563,15 @@ }, { "type": "ObjectProperty", - "start": 51641, - "end": 51680, + "start": 51677, + "end": 51716, "loc": { "start": { - "line": 1358, + "line": 1359, "column": 12 }, "end": { - "line": 1358, + "line": 1359, "column": 51 } }, @@ -22464,15 +22580,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51641, - "end": 51656, + "start": 51677, + "end": 51692, "loc": { "start": { - "line": 1358, + "line": 1359, "column": 12 }, "end": { - "line": 1358, + "line": 1359, "column": 27 }, "identifierName": "emissiveTexture" @@ -22481,15 +22597,15 @@ }, "value": { "type": "Identifier", - "start": 51658, - "end": 51680, + "start": 51694, + "end": 51716, "loc": { "start": { - "line": 1358, + "line": 1359, "column": 29 }, "end": { - "line": 1358, + "line": 1359, "column": 51 }, "identifierName": "defaultEmissiveTexture" @@ -22499,15 +22615,15 @@ }, { "type": "ObjectProperty", - "start": 51694, - "end": 51735, + "start": 51730, + "end": 51771, "loc": { "start": { - "line": 1359, + "line": 1360, "column": 12 }, "end": { - "line": 1359, + "line": 1360, "column": 53 } }, @@ -22516,15 +22632,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51694, - "end": 51710, + "start": 51730, + "end": 51746, "loc": { "start": { - "line": 1359, + "line": 1360, "column": 12 }, "end": { - "line": 1359, + "line": 1360, "column": 28 }, "identifierName": "occlusionTexture" @@ -22533,15 +22649,15 @@ }, "value": { "type": "Identifier", - "start": 51712, - "end": 51735, + "start": 51748, + "end": 51771, "loc": { "start": { - "line": 1359, + "line": 1360, "column": 30 }, "end": { - "line": 1359, + "line": 1360, "column": 53 }, "identifierName": "defaultOcclusionTexture" @@ -22563,15 +22679,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 51759, - "end": 51875, + "start": 51795, + "end": 51911, "loc": { "start": { - "line": 1363, + "line": 1364, "column": 4 }, "end": { - "line": 1363, + "line": 1364, "column": 120 } } @@ -22579,15 +22695,15 @@ { "type": "CommentLine", "value": " SceneModel members", - "start": 51880, - "end": 51901, + "start": 51916, + "end": 51937, "loc": { "start": { - "line": 1364, + "line": 1365, "column": 4 }, "end": { - "line": 1364, + "line": 1365, "column": 25 } } @@ -22595,15 +22711,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 51906, - "end": 52022, + "start": 51942, + "end": 52058, "loc": { "start": { - "line": 1365, + "line": 1366, "column": 4 }, "end": { - "line": 1365, + "line": 1366, "column": 120 } } @@ -22611,15 +22727,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that this Component is a SceneModel.\n * @type {Boolean}\n ", - "start": 52028, - "end": 52131, + "start": 52064, + "end": 52167, "loc": { "start": { - "line": 1367, + "line": 1368, "column": 4 }, "end": { - "line": 1370, + "line": 1371, "column": 7 } } @@ -22628,15 +22744,15 @@ }, { "type": "ClassMethod", - "start": 52136, - "end": 52189, + "start": 52172, + "end": 52225, "loc": { "start": { - "line": 1371, + "line": 1372, "column": 4 }, "end": { - "line": 1373, + "line": 1374, "column": 5 } }, @@ -22644,15 +22760,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 52140, - "end": 52158, + "start": 52176, + "end": 52194, "loc": { "start": { - "line": 1371, + "line": 1372, "column": 8 }, "end": { - "line": 1371, + "line": 1372, "column": 26 }, "identifierName": "isPerformanceModel" @@ -22667,44 +22783,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 52161, - "end": 52189, + "start": 52197, + "end": 52225, "loc": { "start": { - "line": 1371, + "line": 1372, "column": 29 }, "end": { - "line": 1373, + "line": 1374, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 52171, - "end": 52183, + "start": 52207, + "end": 52219, "loc": { "start": { - "line": 1372, + "line": 1373, "column": 8 }, "end": { - "line": 1372, + "line": 1373, "column": 20 } }, "argument": { "type": "BooleanLiteral", - "start": 52178, - "end": 52182, + "start": 52214, + "end": 52218, "loc": { "start": { - "line": 1372, + "line": 1373, "column": 15 }, "end": { - "line": 1372, + "line": 1373, "column": 19 } }, @@ -22719,15 +22835,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 51759, - "end": 51875, + "start": 51795, + "end": 51911, "loc": { "start": { - "line": 1363, + "line": 1364, "column": 4 }, "end": { - "line": 1363, + "line": 1364, "column": 120 } } @@ -22735,15 +22851,15 @@ { "type": "CommentLine", "value": " SceneModel members", - "start": 51880, - "end": 51901, + "start": 51916, + "end": 51937, "loc": { "start": { - "line": 1364, + "line": 1365, "column": 4 }, "end": { - "line": 1364, + "line": 1365, "column": 25 } } @@ -22751,15 +22867,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 51906, - "end": 52022, + "start": 51942, + "end": 52058, "loc": { "start": { - "line": 1365, + "line": 1366, "column": 4 }, "end": { - "line": 1365, + "line": 1366, "column": 120 } } @@ -22767,15 +22883,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that this Component is a SceneModel.\n * @type {Boolean}\n ", - "start": 52028, - "end": 52131, + "start": 52064, + "end": 52167, "loc": { "start": { - "line": 1367, + "line": 1368, "column": 4 }, "end": { - "line": 1370, + "line": 1371, "column": 7 } } @@ -22785,15 +22901,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTransform}s in this SceneModel.\n *\n * Each {#link SceneModelTransform} is stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", - "start": 52195, - "end": 52402, + "start": 52231, + "end": 52438, "loc": { "start": { - "line": 1375, + "line": 1376, "column": 4 }, "end": { - "line": 1381, + "line": 1382, "column": 7 } } @@ -22802,15 +22918,15 @@ }, { "type": "ClassMethod", - "start": 52407, - "end": 52464, + "start": 52443, + "end": 52500, "loc": { "start": { - "line": 1382, + "line": 1383, "column": 4 }, "end": { - "line": 1384, + "line": 1385, "column": 5 } }, @@ -22818,15 +22934,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 52411, - "end": 52421, + "start": 52447, + "end": 52457, "loc": { "start": { - "line": 1382, + "line": 1383, "column": 8 }, "end": { - "line": 1382, + "line": 1383, "column": 18 }, "identifierName": "transforms" @@ -22841,73 +22957,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 52424, - "end": 52464, + "start": 52460, + "end": 52500, "loc": { "start": { - "line": 1382, + "line": 1383, "column": 21 }, "end": { - "line": 1384, + "line": 1385, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 52434, - "end": 52458, + "start": 52470, + "end": 52494, "loc": { "start": { - "line": 1383, + "line": 1384, "column": 8 }, "end": { - "line": 1383, + "line": 1384, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 52441, - "end": 52457, + "start": 52477, + "end": 52493, "loc": { "start": { - "line": 1383, + "line": 1384, "column": 15 }, "end": { - "line": 1383, + "line": 1384, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 52441, - "end": 52445, + "start": 52477, + "end": 52481, "loc": { "start": { - "line": 1383, + "line": 1384, "column": 15 }, "end": { - "line": 1383, + "line": 1384, "column": 19 } } }, "property": { "type": "Identifier", - "start": 52446, - "end": 52457, + "start": 52482, + "end": 52493, "loc": { "start": { - "line": 1383, + "line": 1384, "column": 20 }, "end": { - "line": 1383, + "line": 1384, "column": 31 }, "identifierName": "_transforms" @@ -22925,15 +23041,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTransform}s in this SceneModel.\n *\n * Each {#link SceneModelTransform} is stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", - "start": 52195, - "end": 52402, + "start": 52231, + "end": 52438, "loc": { "start": { - "line": 1375, + "line": 1376, "column": 4 }, "end": { - "line": 1381, + "line": 1382, "column": 7 } } @@ -22943,15 +23059,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTexture}s in this SceneModel.\n *\n * * Each {@link SceneModelTexture} is created with {@link SceneModel.createTexture}.\n * * Each {@link SceneModelTexture} is stored here against its {@link SceneModelTexture.id}.\n *\n * @returns {*|{}}\n ", - "start": 52470, - "end": 52763, + "start": 52506, + "end": 52799, "loc": { "start": { - "line": 1386, + "line": 1387, "column": 4 }, "end": { - "line": 1393, + "line": 1394, "column": 7 } } @@ -22960,15 +23076,15 @@ }, { "type": "ClassMethod", - "start": 52768, - "end": 52821, + "start": 52804, + "end": 52857, "loc": { "start": { - "line": 1394, + "line": 1395, "column": 4 }, "end": { - "line": 1396, + "line": 1397, "column": 5 } }, @@ -22976,15 +23092,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 52772, - "end": 52780, + "start": 52808, + "end": 52816, "loc": { "start": { - "line": 1394, + "line": 1395, "column": 8 }, "end": { - "line": 1394, + "line": 1395, "column": 16 }, "identifierName": "textures" @@ -22999,73 +23115,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 52783, - "end": 52821, + "start": 52819, + "end": 52857, "loc": { "start": { - "line": 1394, + "line": 1395, "column": 19 }, "end": { - "line": 1396, + "line": 1397, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 52793, - "end": 52815, + "start": 52829, + "end": 52851, "loc": { "start": { - "line": 1395, + "line": 1396, "column": 8 }, "end": { - "line": 1395, + "line": 1396, "column": 30 } }, "argument": { "type": "MemberExpression", - "start": 52800, - "end": 52814, + "start": 52836, + "end": 52850, "loc": { "start": { - "line": 1395, + "line": 1396, "column": 15 }, "end": { - "line": 1395, + "line": 1396, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 52800, - "end": 52804, + "start": 52836, + "end": 52840, "loc": { "start": { - "line": 1395, + "line": 1396, "column": 15 }, "end": { - "line": 1395, + "line": 1396, "column": 19 } } }, "property": { "type": "Identifier", - "start": 52805, - "end": 52814, + "start": 52841, + "end": 52850, "loc": { "start": { - "line": 1395, + "line": 1396, "column": 20 }, "end": { - "line": 1395, + "line": 1396, "column": 29 }, "identifierName": "_textures" @@ -23083,15 +23199,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTexture}s in this SceneModel.\n *\n * * Each {@link SceneModelTexture} is created with {@link SceneModel.createTexture}.\n * * Each {@link SceneModelTexture} is stored here against its {@link SceneModelTexture.id}.\n *\n * @returns {*|{}}\n ", - "start": 52470, - "end": 52763, + "start": 52506, + "end": 52799, "loc": { "start": { - "line": 1386, + "line": 1387, "column": 4 }, "end": { - "line": 1393, + "line": 1394, "column": 7 } } @@ -23101,15 +23217,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTextureSet}s in this SceneModel.\n *\n * Each {@link SceneModelTextureSet} is stored here against its {@link SceneModelTextureSet.id}.\n *\n * @returns {*|{}}\n ", - "start": 52827, - "end": 53037, + "start": 52863, + "end": 53073, "loc": { "start": { - "line": 1398, + "line": 1399, "column": 4 }, "end": { - "line": 1404, + "line": 1405, "column": 7 } } @@ -23118,15 +23234,15 @@ }, { "type": "ClassMethod", - "start": 53042, - "end": 53101, + "start": 53078, + "end": 53137, "loc": { "start": { - "line": 1405, + "line": 1406, "column": 4 }, "end": { - "line": 1407, + "line": 1408, "column": 5 } }, @@ -23134,15 +23250,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 53046, - "end": 53057, + "start": 53082, + "end": 53093, "loc": { "start": { - "line": 1405, + "line": 1406, "column": 8 }, "end": { - "line": 1405, + "line": 1406, "column": 19 }, "identifierName": "textureSets" @@ -23157,73 +23273,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 53060, - "end": 53101, + "start": 53096, + "end": 53137, "loc": { "start": { - "line": 1405, + "line": 1406, "column": 22 }, "end": { - "line": 1407, + "line": 1408, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 53070, - "end": 53095, + "start": 53106, + "end": 53131, "loc": { "start": { - "line": 1406, + "line": 1407, "column": 8 }, "end": { - "line": 1406, + "line": 1407, "column": 33 } }, "argument": { "type": "MemberExpression", - "start": 53077, - "end": 53094, + "start": 53113, + "end": 53130, "loc": { "start": { - "line": 1406, + "line": 1407, "column": 15 }, "end": { - "line": 1406, + "line": 1407, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 53077, - "end": 53081, + "start": 53113, + "end": 53117, "loc": { "start": { - "line": 1406, + "line": 1407, "column": 15 }, "end": { - "line": 1406, + "line": 1407, "column": 19 } } }, "property": { "type": "Identifier", - "start": 53082, - "end": 53094, + "start": 53118, + "end": 53130, "loc": { "start": { - "line": 1406, + "line": 1407, "column": 20 }, "end": { - "line": 1406, + "line": 1407, "column": 32 }, "identifierName": "_textureSets" @@ -23241,15 +23357,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTextureSet}s in this SceneModel.\n *\n * Each {@link SceneModelTextureSet} is stored here against its {@link SceneModelTextureSet.id}.\n *\n * @returns {*|{}}\n ", - "start": 52827, - "end": 53037, + "start": 52863, + "end": 53073, "loc": { "start": { - "line": 1398, + "line": 1399, "column": 4 }, "end": { - "line": 1404, + "line": 1405, "column": 7 } } @@ -23259,15 +23375,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelMesh}es in this SceneModel.\n *\n * Each {@SceneModelMesh} is stored here against its {@link SceneModelMesh.id}.\n *\n * @returns {*|{}}\n ", - "start": 53107, - "end": 53295, + "start": 53143, + "end": 53331, "loc": { "start": { - "line": 1409, + "line": 1410, "column": 4 }, "end": { - "line": 1415, + "line": 1416, "column": 7 } } @@ -23276,15 +23392,15 @@ }, { "type": "ClassMethod", - "start": 53300, - "end": 53349, + "start": 53336, + "end": 53385, "loc": { "start": { - "line": 1416, + "line": 1417, "column": 4 }, "end": { - "line": 1418, + "line": 1419, "column": 5 } }, @@ -23292,15 +23408,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 53304, - "end": 53310, + "start": 53340, + "end": 53346, "loc": { "start": { - "line": 1416, + "line": 1417, "column": 8 }, "end": { - "line": 1416, + "line": 1417, "column": 14 }, "identifierName": "meshes" @@ -23315,73 +23431,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 53313, - "end": 53349, + "start": 53349, + "end": 53385, "loc": { "start": { - "line": 1416, + "line": 1417, "column": 17 }, "end": { - "line": 1418, + "line": 1419, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 53323, - "end": 53343, + "start": 53359, + "end": 53379, "loc": { "start": { - "line": 1417, + "line": 1418, "column": 8 }, "end": { - "line": 1417, + "line": 1418, "column": 28 } }, "argument": { "type": "MemberExpression", - "start": 53330, - "end": 53342, + "start": 53366, + "end": 53378, "loc": { "start": { - "line": 1417, + "line": 1418, "column": 15 }, "end": { - "line": 1417, + "line": 1418, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 53330, - "end": 53334, + "start": 53366, + "end": 53370, "loc": { "start": { - "line": 1417, + "line": 1418, "column": 15 }, "end": { - "line": 1417, + "line": 1418, "column": 19 } } }, "property": { "type": "Identifier", - "start": 53335, - "end": 53342, + "start": 53371, + "end": 53378, "loc": { "start": { - "line": 1417, + "line": 1418, "column": 20 }, "end": { - "line": 1417, + "line": 1418, "column": 27 }, "identifierName": "_meshes" @@ -23399,15 +23515,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelMesh}es in this SceneModel.\n *\n * Each {@SceneModelMesh} is stored here against its {@link SceneModelMesh.id}.\n *\n * @returns {*|{}}\n ", - "start": 53107, - "end": 53295, + "start": 53143, + "end": 53331, "loc": { "start": { - "line": 1409, + "line": 1410, "column": 4 }, "end": { - "line": 1415, + "line": 1416, "column": 7 } } @@ -23417,15 +23533,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelEntity}s in this SceneModel.\n *\n * Each {#link SceneModelEntity} in this SceneModel that represents an object is\n * stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", - "start": 53355, - "end": 53608, + "start": 53391, + "end": 53644, "loc": { "start": { - "line": 1420, + "line": 1421, "column": 4 }, "end": { - "line": 1427, + "line": 1428, "column": 7 } } @@ -23434,15 +23550,15 @@ }, { "type": "ClassMethod", - "start": 53613, - "end": 53665, + "start": 53649, + "end": 53701, "loc": { "start": { - "line": 1428, + "line": 1429, "column": 4 }, "end": { - "line": 1430, + "line": 1431, "column": 5 } }, @@ -23450,15 +23566,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 53617, - "end": 53624, + "start": 53653, + "end": 53660, "loc": { "start": { - "line": 1428, + "line": 1429, "column": 8 }, "end": { - "line": 1428, + "line": 1429, "column": 15 }, "identifierName": "objects" @@ -23473,73 +23589,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 53627, - "end": 53665, + "start": 53663, + "end": 53701, "loc": { "start": { - "line": 1428, + "line": 1429, "column": 18 }, "end": { - "line": 1430, + "line": 1431, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 53637, - "end": 53659, + "start": 53673, + "end": 53695, "loc": { "start": { - "line": 1429, + "line": 1430, "column": 8 }, "end": { - "line": 1429, + "line": 1430, "column": 30 } }, "argument": { "type": "MemberExpression", - "start": 53644, - "end": 53658, + "start": 53680, + "end": 53694, "loc": { "start": { - "line": 1429, + "line": 1430, "column": 15 }, "end": { - "line": 1429, + "line": 1430, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 53644, - "end": 53648, + "start": 53680, + "end": 53684, "loc": { "start": { - "line": 1429, + "line": 1430, "column": 15 }, "end": { - "line": 1429, + "line": 1430, "column": 19 } } }, "property": { "type": "Identifier", - "start": 53649, - "end": 53658, + "start": 53685, + "end": 53694, "loc": { "start": { - "line": 1429, + "line": 1430, "column": 20 }, "end": { - "line": 1429, + "line": 1430, "column": 29 }, "identifierName": "_entities" @@ -23557,15 +23673,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelEntity}s in this SceneModel.\n *\n * Each {#link SceneModelEntity} in this SceneModel that represents an object is\n * stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", - "start": 53355, - "end": 53608, + "start": 53391, + "end": 53644, "loc": { "start": { - "line": 1420, + "line": 1421, "column": 4 }, "end": { - "line": 1427, + "line": 1428, "column": 7 } } @@ -23575,15 +23691,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the 3D World-space origin for this SceneModel.\n *\n * Each {@link SceneModelMesh.origin}, if supplied, is relative to this origin.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Float64Array}\n ", - "start": 53671, - "end": 53915, + "start": 53707, + "end": 53951, "loc": { "start": { - "line": 1432, + "line": 1433, "column": 4 }, "end": { - "line": 1440, + "line": 1441, "column": 7 } } @@ -23592,15 +23708,15 @@ }, { "type": "ClassMethod", - "start": 53920, - "end": 53969, + "start": 53956, + "end": 54005, "loc": { "start": { - "line": 1441, + "line": 1442, "column": 4 }, "end": { - "line": 1443, + "line": 1444, "column": 5 } }, @@ -23608,15 +23724,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 53924, - "end": 53930, + "start": 53960, + "end": 53966, "loc": { "start": { - "line": 1441, + "line": 1442, "column": 8 }, "end": { - "line": 1441, + "line": 1442, "column": 14 }, "identifierName": "origin" @@ -23631,73 +23747,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 53933, - "end": 53969, + "start": 53969, + "end": 54005, "loc": { "start": { - "line": 1441, + "line": 1442, "column": 17 }, "end": { - "line": 1443, + "line": 1444, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 53943, - "end": 53963, + "start": 53979, + "end": 53999, "loc": { "start": { - "line": 1442, + "line": 1443, "column": 8 }, "end": { - "line": 1442, + "line": 1443, "column": 28 } }, "argument": { "type": "MemberExpression", - "start": 53950, - "end": 53962, + "start": 53986, + "end": 53998, "loc": { "start": { - "line": 1442, + "line": 1443, "column": 15 }, "end": { - "line": 1442, + "line": 1443, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 53950, - "end": 53954, + "start": 53986, + "end": 53990, "loc": { "start": { - "line": 1442, + "line": 1443, "column": 15 }, "end": { - "line": 1442, + "line": 1443, "column": 19 } } }, "property": { "type": "Identifier", - "start": 53955, - "end": 53962, + "start": 53991, + "end": 53998, "loc": { "start": { - "line": 1442, + "line": 1443, "column": 20 }, "end": { - "line": 1442, + "line": 1443, "column": 27 }, "identifierName": "_origin" @@ -23715,15 +23831,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the 3D World-space origin for this SceneModel.\n *\n * Each {@link SceneModelMesh.origin}, if supplied, is relative to this origin.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Float64Array}\n ", - "start": 53671, - "end": 53915, + "start": 53707, + "end": 53951, "loc": { "start": { - "line": 1432, + "line": 1433, "column": 4 }, "end": { - "line": 1440, + "line": 1441, "column": 7 } } @@ -23733,15 +23849,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 53975, - "end": 54113, + "start": 54011, + "end": 54149, "loc": { "start": { - "line": 1445, + "line": 1446, "column": 4 }, "end": { - "line": 1451, + "line": 1452, "column": 7 } } @@ -23750,15 +23866,15 @@ }, { "type": "ClassMethod", - "start": 54118, - "end": 54288, + "start": 54154, + "end": 54324, "loc": { "start": { - "line": 1452, + "line": 1453, "column": 4 }, "end": { - "line": 1457, + "line": 1458, "column": 5 } }, @@ -23766,15 +23882,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 54122, - "end": 54130, + "start": 54158, + "end": 54166, "loc": { "start": { - "line": 1452, + "line": 1453, "column": 8 }, "end": { - "line": 1452, + "line": 1453, "column": 16 }, "identifierName": "position" @@ -23789,15 +23905,15 @@ "params": [ { "type": "Identifier", - "start": 54131, - "end": 54136, + "start": 54167, + "end": 54172, "loc": { "start": { - "line": 1452, + "line": 1453, "column": 17 }, "end": { - "line": 1452, + "line": 1453, "column": 22 }, "identifierName": "value" @@ -23807,101 +23923,101 @@ ], "body": { "type": "BlockStatement", - "start": 54138, - "end": 54288, + "start": 54174, + "end": 54324, "loc": { "start": { - "line": 1452, + "line": 1453, "column": 24 }, "end": { - "line": 1457, + "line": 1458, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 54148, - "end": 54187, + "start": 54184, + "end": 54223, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 8 }, "end": { - "line": 1453, + "line": 1454, "column": 47 } }, "expression": { "type": "CallExpression", - "start": 54148, - "end": 54186, + "start": 54184, + "end": 54222, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 8 }, "end": { - "line": 1453, + "line": 1454, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 54148, - "end": 54166, + "start": 54184, + "end": 54202, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 8 }, "end": { - "line": 1453, + "line": 1454, "column": 26 } }, "object": { "type": "MemberExpression", - "start": 54148, - "end": 54162, + "start": 54184, + "end": 54198, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 8 }, "end": { - "line": 1453, + "line": 1454, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 54148, - "end": 54152, + "start": 54184, + "end": 54188, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 8 }, "end": { - "line": 1453, + "line": 1454, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54153, - "end": 54162, + "start": 54189, + "end": 54198, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 13 }, "end": { - "line": 1453, + "line": 1454, "column": 22 }, "identifierName": "_position" @@ -23912,15 +24028,15 @@ }, "property": { "type": "Identifier", - "start": 54163, - "end": 54166, + "start": 54199, + "end": 54202, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 23 }, "end": { - "line": 1453, + "line": 1454, "column": 26 }, "identifierName": "set" @@ -23932,29 +24048,29 @@ "arguments": [ { "type": "LogicalExpression", - "start": 54167, - "end": 54185, + "start": 54203, + "end": 54221, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 27 }, "end": { - "line": 1453, + "line": 1454, "column": 45 } }, "left": { "type": "Identifier", - "start": 54167, - "end": 54172, + "start": 54203, + "end": 54208, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 27 }, "end": { - "line": 1453, + "line": 1454, "column": 32 }, "identifierName": "value" @@ -23964,30 +24080,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 54176, - "end": 54185, + "start": 54212, + "end": 54221, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 36 }, "end": { - "line": 1453, + "line": 1454, "column": 45 } }, "elements": [ { "type": "NumericLiteral", - "start": 54177, - "end": 54178, + "start": 54213, + "end": 54214, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 37 }, "end": { - "line": 1453, + "line": 1454, "column": 38 } }, @@ -23999,15 +24115,15 @@ }, { "type": "NumericLiteral", - "start": 54180, - "end": 54181, + "start": 54216, + "end": 54217, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 40 }, "end": { - "line": 1453, + "line": 1454, "column": 41 } }, @@ -24019,15 +24135,15 @@ }, { "type": "NumericLiteral", - "start": 54183, - "end": 54184, + "start": 54219, + "end": 54220, "loc": { "start": { - "line": 1453, + "line": 1454, "column": 43 }, "end": { - "line": 1453, + "line": 1454, "column": 44 } }, @@ -24045,72 +24161,72 @@ }, { "type": "ExpressionStatement", - "start": 54196, - "end": 54224, + "start": 54232, + "end": 54260, "loc": { "start": { - "line": 1454, + "line": 1455, "column": 8 }, "end": { - "line": 1454, + "line": 1455, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 54196, - "end": 54223, + "start": 54232, + "end": 54259, "loc": { "start": { - "line": 1454, + "line": 1455, "column": 8 }, "end": { - "line": 1454, + "line": 1455, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 54196, - "end": 54221, + "start": 54232, + "end": 54257, "loc": { "start": { - "line": 1454, + "line": 1455, "column": 8 }, "end": { - "line": 1454, + "line": 1455, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 54196, - "end": 54200, + "start": 54232, + "end": 54236, "loc": { "start": { - "line": 1454, + "line": 1455, "column": 8 }, "end": { - "line": 1454, + "line": 1455, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54201, - "end": 54221, + "start": 54237, + "end": 54257, "loc": { "start": { - "line": 1454, + "line": 1455, "column": 13 }, "end": { - "line": 1454, + "line": 1455, "column": 33 }, "identifierName": "_setWorldMatrixDirty" @@ -24124,72 +24240,72 @@ }, { "type": "ExpressionStatement", - "start": 54233, - "end": 54257, + "start": 54269, + "end": 54293, "loc": { "start": { - "line": 1455, + "line": 1456, "column": 8 }, "end": { - "line": 1455, + "line": 1456, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 54233, - "end": 54256, + "start": 54269, + "end": 54292, "loc": { "start": { - "line": 1455, + "line": 1456, "column": 8 }, "end": { - "line": 1455, + "line": 1456, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 54233, - "end": 54254, + "start": 54269, + "end": 54290, "loc": { "start": { - "line": 1455, + "line": 1456, "column": 8 }, "end": { - "line": 1455, + "line": 1456, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 54233, - "end": 54237, + "start": 54269, + "end": 54273, "loc": { "start": { - "line": 1455, + "line": 1456, "column": 8 }, "end": { - "line": 1455, + "line": 1456, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54238, - "end": 54254, + "start": 54274, + "end": 54290, "loc": { "start": { - "line": 1455, + "line": 1456, "column": 13 }, "end": { - "line": 1455, + "line": 1456, "column": 29 }, "identifierName": "_sceneModelDirty" @@ -24203,72 +24319,72 @@ }, { "type": "ExpressionStatement", - "start": 54266, - "end": 54282, + "start": 54302, + "end": 54318, "loc": { "start": { - "line": 1456, + "line": 1457, "column": 8 }, "end": { - "line": 1456, + "line": 1457, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 54266, - "end": 54281, + "start": 54302, + "end": 54317, "loc": { "start": { - "line": 1456, + "line": 1457, "column": 8 }, "end": { - "line": 1456, + "line": 1457, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 54266, - "end": 54279, + "start": 54302, + "end": 54315, "loc": { "start": { - "line": 1456, + "line": 1457, "column": 8 }, "end": { - "line": 1456, + "line": 1457, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 54266, - "end": 54270, + "start": 54302, + "end": 54306, "loc": { "start": { - "line": 1456, + "line": 1457, "column": 8 }, "end": { - "line": 1456, + "line": 1457, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54271, - "end": 54279, + "start": 54307, + "end": 54315, "loc": { "start": { - "line": 1456, + "line": 1457, "column": 13 }, "end": { - "line": 1456, + "line": 1457, "column": 21 }, "identifierName": "glRedraw" @@ -24288,15 +24404,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 53975, - "end": 54113, + "start": 54011, + "end": 54149, "loc": { "start": { - "line": 1445, + "line": 1446, "column": 4 }, "end": { - "line": 1451, + "line": 1452, "column": 7 } } @@ -24306,15 +24422,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54294, - "end": 54432, + "start": 54330, + "end": 54468, "loc": { "start": { - "line": 1459, + "line": 1460, "column": 4 }, "end": { - "line": 1465, + "line": 1466, "column": 7 } } @@ -24323,15 +24439,15 @@ }, { "type": "ClassMethod", - "start": 54437, - "end": 54490, + "start": 54473, + "end": 54526, "loc": { "start": { - "line": 1466, + "line": 1467, "column": 4 }, "end": { - "line": 1468, + "line": 1469, "column": 5 } }, @@ -24339,15 +24455,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 54441, - "end": 54449, + "start": 54477, + "end": 54485, "loc": { "start": { - "line": 1466, + "line": 1467, "column": 8 }, "end": { - "line": 1466, + "line": 1467, "column": 16 }, "identifierName": "position" @@ -24362,73 +24478,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 54452, - "end": 54490, + "start": 54488, + "end": 54526, "loc": { "start": { - "line": 1466, + "line": 1467, "column": 19 }, "end": { - "line": 1468, + "line": 1469, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 54462, - "end": 54484, + "start": 54498, + "end": 54520, "loc": { "start": { - "line": 1467, + "line": 1468, "column": 8 }, "end": { - "line": 1467, + "line": 1468, "column": 30 } }, "argument": { "type": "MemberExpression", - "start": 54469, - "end": 54483, + "start": 54505, + "end": 54519, "loc": { "start": { - "line": 1467, + "line": 1468, "column": 15 }, "end": { - "line": 1467, + "line": 1468, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 54469, - "end": 54473, + "start": 54505, + "end": 54509, "loc": { "start": { - "line": 1467, + "line": 1468, "column": 15 }, "end": { - "line": 1467, + "line": 1468, "column": 19 } } }, "property": { "type": "Identifier", - "start": 54474, - "end": 54483, + "start": 54510, + "end": 54519, "loc": { "start": { - "line": 1467, + "line": 1468, "column": 20 }, "end": { - "line": 1467, + "line": 1468, "column": 29 }, "identifierName": "_position" @@ -24446,15 +24562,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54294, - "end": 54432, + "start": 54330, + "end": 54468, "loc": { "start": { - "line": 1459, + "line": 1460, "column": 4 }, "end": { - "line": 1465, + "line": 1466, "column": 7 } } @@ -24464,15 +24580,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54496, - "end": 54698, + "start": 54532, + "end": 54734, "loc": { "start": { - "line": 1470, + "line": 1471, "column": 4 }, "end": { - "line": 1476, + "line": 1477, "column": 7 } } @@ -24481,15 +24597,15 @@ }, { "type": "ClassMethod", - "start": 54703, - "end": 54946, + "start": 54739, + "end": 54982, "loc": { "start": { - "line": 1477, + "line": 1478, "column": 4 }, "end": { - "line": 1483, + "line": 1484, "column": 5 } }, @@ -24497,15 +24613,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 54707, - "end": 54715, + "start": 54743, + "end": 54751, "loc": { "start": { - "line": 1477, + "line": 1478, "column": 8 }, "end": { - "line": 1477, + "line": 1478, "column": 16 }, "identifierName": "rotation" @@ -24520,15 +24636,15 @@ "params": [ { "type": "Identifier", - "start": 54716, - "end": 54721, + "start": 54752, + "end": 54757, "loc": { "start": { - "line": 1477, + "line": 1478, "column": 17 }, "end": { - "line": 1477, + "line": 1478, "column": 22 }, "identifierName": "value" @@ -24538,101 +24654,101 @@ ], "body": { "type": "BlockStatement", - "start": 54723, - "end": 54946, + "start": 54759, + "end": 54982, "loc": { "start": { - "line": 1477, + "line": 1478, "column": 24 }, "end": { - "line": 1483, + "line": 1484, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 54733, - "end": 54772, + "start": 54769, + "end": 54808, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 8 }, "end": { - "line": 1478, + "line": 1479, "column": 47 } }, "expression": { "type": "CallExpression", - "start": 54733, - "end": 54771, + "start": 54769, + "end": 54807, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 8 }, "end": { - "line": 1478, + "line": 1479, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 54733, - "end": 54751, + "start": 54769, + "end": 54787, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 8 }, "end": { - "line": 1478, + "line": 1479, "column": 26 } }, "object": { "type": "MemberExpression", - "start": 54733, - "end": 54747, + "start": 54769, + "end": 54783, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 8 }, "end": { - "line": 1478, + "line": 1479, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 54733, - "end": 54737, + "start": 54769, + "end": 54773, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 8 }, "end": { - "line": 1478, + "line": 1479, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54738, - "end": 54747, + "start": 54774, + "end": 54783, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 13 }, "end": { - "line": 1478, + "line": 1479, "column": 22 }, "identifierName": "_rotation" @@ -24643,15 +24759,15 @@ }, "property": { "type": "Identifier", - "start": 54748, - "end": 54751, + "start": 54784, + "end": 54787, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 23 }, "end": { - "line": 1478, + "line": 1479, "column": 26 }, "identifierName": "set" @@ -24663,29 +24779,29 @@ "arguments": [ { "type": "LogicalExpression", - "start": 54752, - "end": 54770, + "start": 54788, + "end": 54806, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 27 }, "end": { - "line": 1478, + "line": 1479, "column": 45 } }, "left": { "type": "Identifier", - "start": 54752, - "end": 54757, + "start": 54788, + "end": 54793, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 27 }, "end": { - "line": 1478, + "line": 1479, "column": 32 }, "identifierName": "value" @@ -24695,30 +24811,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 54761, - "end": 54770, + "start": 54797, + "end": 54806, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 36 }, "end": { - "line": 1478, + "line": 1479, "column": 45 } }, "elements": [ { "type": "NumericLiteral", - "start": 54762, - "end": 54763, + "start": 54798, + "end": 54799, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 37 }, "end": { - "line": 1478, + "line": 1479, "column": 38 } }, @@ -24730,15 +24846,15 @@ }, { "type": "NumericLiteral", - "start": 54765, - "end": 54766, + "start": 54801, + "end": 54802, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 40 }, "end": { - "line": 1478, + "line": 1479, "column": 41 } }, @@ -24750,15 +24866,15 @@ }, { "type": "NumericLiteral", - "start": 54768, - "end": 54769, + "start": 54804, + "end": 54805, "loc": { "start": { - "line": 1478, + "line": 1479, "column": 43 }, "end": { - "line": 1478, + "line": 1479, "column": 44 } }, @@ -24776,57 +24892,57 @@ }, { "type": "ExpressionStatement", - "start": 54781, - "end": 54845, + "start": 54817, + "end": 54881, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 8 }, "end": { - "line": 1479, + "line": 1480, "column": 72 } }, "expression": { "type": "CallExpression", - "start": 54781, - "end": 54844, + "start": 54817, + "end": 54880, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 8 }, "end": { - "line": 1479, + "line": 1480, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 54781, - "end": 54803, + "start": 54817, + "end": 54839, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 8 }, "end": { - "line": 1479, + "line": 1480, "column": 30 } }, "object": { "type": "Identifier", - "start": 54781, - "end": 54785, + "start": 54817, + "end": 54821, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 8 }, "end": { - "line": 1479, + "line": 1480, "column": 12 }, "identifierName": "math" @@ -24835,15 +24951,15 @@ }, "property": { "type": "Identifier", - "start": 54786, - "end": 54803, + "start": 54822, + "end": 54839, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 13 }, "end": { - "line": 1479, + "line": 1480, "column": 30 }, "identifierName": "eulerToQuaternion" @@ -24855,44 +24971,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 54804, - "end": 54818, + "start": 54840, + "end": 54854, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 31 }, "end": { - "line": 1479, + "line": 1480, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 54804, - "end": 54808, + "start": 54840, + "end": 54844, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 31 }, "end": { - "line": 1479, + "line": 1480, "column": 35 } } }, "property": { "type": "Identifier", - "start": 54809, - "end": 54818, + "start": 54845, + "end": 54854, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 36 }, "end": { - "line": 1479, + "line": 1480, "column": 45 }, "identifierName": "_rotation" @@ -24903,15 +25019,15 @@ }, { "type": "StringLiteral", - "start": 54820, - "end": 54825, + "start": 54856, + "end": 54861, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 47 }, "end": { - "line": 1479, + "line": 1480, "column": 52 } }, @@ -24923,44 +25039,44 @@ }, { "type": "MemberExpression", - "start": 54827, - "end": 54843, + "start": 54863, + "end": 54879, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 54 }, "end": { - "line": 1479, + "line": 1480, "column": 70 } }, "object": { "type": "ThisExpression", - "start": 54827, - "end": 54831, + "start": 54863, + "end": 54867, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 54 }, "end": { - "line": 1479, + "line": 1480, "column": 58 } } }, "property": { "type": "Identifier", - "start": 54832, - "end": 54843, + "start": 54868, + "end": 54879, "loc": { "start": { - "line": 1479, + "line": 1480, "column": 59 }, "end": { - "line": 1479, + "line": 1480, "column": 70 }, "identifierName": "_quaternion" @@ -24974,72 +25090,72 @@ }, { "type": "ExpressionStatement", - "start": 54854, - "end": 54882, + "start": 54890, + "end": 54918, "loc": { "start": { - "line": 1480, + "line": 1481, "column": 8 }, "end": { - "line": 1480, + "line": 1481, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 54854, - "end": 54881, + "start": 54890, + "end": 54917, "loc": { "start": { - "line": 1480, + "line": 1481, "column": 8 }, "end": { - "line": 1480, + "line": 1481, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 54854, - "end": 54879, + "start": 54890, + "end": 54915, "loc": { "start": { - "line": 1480, + "line": 1481, "column": 8 }, "end": { - "line": 1480, + "line": 1481, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 54854, - "end": 54858, + "start": 54890, + "end": 54894, "loc": { "start": { - "line": 1480, + "line": 1481, "column": 8 }, "end": { - "line": 1480, + "line": 1481, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54859, - "end": 54879, + "start": 54895, + "end": 54915, "loc": { "start": { - "line": 1480, + "line": 1481, "column": 13 }, "end": { - "line": 1480, + "line": 1481, "column": 33 }, "identifierName": "_setWorldMatrixDirty" @@ -25053,72 +25169,72 @@ }, { "type": "ExpressionStatement", - "start": 54891, - "end": 54915, + "start": 54927, + "end": 54951, "loc": { "start": { - "line": 1481, + "line": 1482, "column": 8 }, "end": { - "line": 1481, + "line": 1482, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 54891, - "end": 54914, + "start": 54927, + "end": 54950, "loc": { "start": { - "line": 1481, + "line": 1482, "column": 8 }, "end": { - "line": 1481, + "line": 1482, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 54891, - "end": 54912, + "start": 54927, + "end": 54948, "loc": { "start": { - "line": 1481, + "line": 1482, "column": 8 }, "end": { - "line": 1481, + "line": 1482, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 54891, - "end": 54895, + "start": 54927, + "end": 54931, "loc": { "start": { - "line": 1481, + "line": 1482, "column": 8 }, "end": { - "line": 1481, + "line": 1482, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54896, - "end": 54912, + "start": 54932, + "end": 54948, "loc": { "start": { - "line": 1481, + "line": 1482, "column": 13 }, "end": { - "line": 1481, + "line": 1482, "column": 29 }, "identifierName": "_sceneModelDirty" @@ -25132,72 +25248,72 @@ }, { "type": "ExpressionStatement", - "start": 54924, - "end": 54940, + "start": 54960, + "end": 54976, "loc": { "start": { - "line": 1482, + "line": 1483, "column": 8 }, "end": { - "line": 1482, + "line": 1483, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 54924, - "end": 54939, + "start": 54960, + "end": 54975, "loc": { "start": { - "line": 1482, + "line": 1483, "column": 8 }, "end": { - "line": 1482, + "line": 1483, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 54924, - "end": 54937, + "start": 54960, + "end": 54973, "loc": { "start": { - "line": 1482, + "line": 1483, "column": 8 }, "end": { - "line": 1482, + "line": 1483, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 54924, - "end": 54928, + "start": 54960, + "end": 54964, "loc": { "start": { - "line": 1482, + "line": 1483, "column": 8 }, "end": { - "line": 1482, + "line": 1483, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54929, - "end": 54937, + "start": 54965, + "end": 54973, "loc": { "start": { - "line": 1482, + "line": 1483, "column": 13 }, "end": { - "line": 1482, + "line": 1483, "column": 21 }, "identifierName": "glRedraw" @@ -25217,15 +25333,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54496, - "end": 54698, + "start": 54532, + "end": 54734, "loc": { "start": { - "line": 1470, + "line": 1471, "column": 4 }, "end": { - "line": 1476, + "line": 1477, "column": 7 } } @@ -25235,15 +25351,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54952, - "end": 55154, + "start": 54988, + "end": 55190, "loc": { "start": { - "line": 1485, + "line": 1486, "column": 4 }, "end": { - "line": 1491, + "line": 1492, "column": 7 } } @@ -25252,15 +25368,15 @@ }, { "type": "ClassMethod", - "start": 55159, - "end": 55212, + "start": 55195, + "end": 55248, "loc": { "start": { - "line": 1492, + "line": 1493, "column": 4 }, "end": { - "line": 1494, + "line": 1495, "column": 5 } }, @@ -25268,15 +25384,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55163, - "end": 55171, + "start": 55199, + "end": 55207, "loc": { "start": { - "line": 1492, + "line": 1493, "column": 8 }, "end": { - "line": 1492, + "line": 1493, "column": 16 }, "identifierName": "rotation" @@ -25291,73 +25407,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 55174, - "end": 55212, + "start": 55210, + "end": 55248, "loc": { "start": { - "line": 1492, + "line": 1493, "column": 19 }, "end": { - "line": 1494, + "line": 1495, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 55184, - "end": 55206, + "start": 55220, + "end": 55242, "loc": { "start": { - "line": 1493, + "line": 1494, "column": 8 }, "end": { - "line": 1493, + "line": 1494, "column": 30 } }, "argument": { "type": "MemberExpression", - "start": 55191, - "end": 55205, + "start": 55227, + "end": 55241, "loc": { "start": { - "line": 1493, + "line": 1494, "column": 15 }, "end": { - "line": 1493, + "line": 1494, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 55191, - "end": 55195, + "start": 55227, + "end": 55231, "loc": { "start": { - "line": 1493, + "line": 1494, "column": 15 }, "end": { - "line": 1493, + "line": 1494, "column": 19 } } }, "property": { "type": "Identifier", - "start": 55196, - "end": 55205, + "start": 55232, + "end": 55241, "loc": { "start": { - "line": 1493, + "line": 1494, "column": 20 }, "end": { - "line": 1493, + "line": 1494, "column": 29 }, "identifierName": "_rotation" @@ -25375,15 +25491,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54952, - "end": 55154, + "start": 54988, + "end": 55190, "loc": { "start": { - "line": 1485, + "line": 1486, "column": 4 }, "end": { - "line": 1491, + "line": 1492, "column": 7 } } @@ -25393,15 +25509,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", - "start": 55218, - "end": 55366, + "start": 55254, + "end": 55402, "loc": { "start": { - "line": 1496, + "line": 1497, "column": 4 }, "end": { - "line": 1502, + "line": 1503, "column": 7 } } @@ -25410,15 +25526,15 @@ }, { "type": "ClassMethod", - "start": 55371, - "end": 55621, + "start": 55407, + "end": 55657, "loc": { "start": { - "line": 1503, + "line": 1504, "column": 4 }, "end": { - "line": 1509, + "line": 1510, "column": 5 } }, @@ -25426,15 +25542,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55375, - "end": 55385, + "start": 55411, + "end": 55421, "loc": { "start": { - "line": 1503, + "line": 1504, "column": 8 }, "end": { - "line": 1503, + "line": 1504, "column": 18 }, "identifierName": "quaternion" @@ -25449,15 +25565,15 @@ "params": [ { "type": "Identifier", - "start": 55386, - "end": 55391, + "start": 55422, + "end": 55427, "loc": { "start": { - "line": 1503, + "line": 1504, "column": 19 }, "end": { - "line": 1503, + "line": 1504, "column": 24 }, "identifierName": "value" @@ -25467,101 +25583,101 @@ ], "body": { "type": "BlockStatement", - "start": 55393, - "end": 55621, + "start": 55429, + "end": 55657, "loc": { "start": { - "line": 1503, + "line": 1504, "column": 26 }, "end": { - "line": 1509, + "line": 1510, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 55403, - "end": 55447, + "start": 55439, + "end": 55483, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 8 }, "end": { - "line": 1504, + "line": 1505, "column": 52 } }, "expression": { "type": "CallExpression", - "start": 55403, - "end": 55446, + "start": 55439, + "end": 55482, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 8 }, "end": { - "line": 1504, + "line": 1505, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 55403, - "end": 55423, + "start": 55439, + "end": 55459, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 8 }, "end": { - "line": 1504, + "line": 1505, "column": 28 } }, "object": { "type": "MemberExpression", - "start": 55403, - "end": 55419, + "start": 55439, + "end": 55455, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 8 }, "end": { - "line": 1504, + "line": 1505, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 55403, - "end": 55407, + "start": 55439, + "end": 55443, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 8 }, "end": { - "line": 1504, + "line": 1505, "column": 12 } } }, "property": { "type": "Identifier", - "start": 55408, - "end": 55419, + "start": 55444, + "end": 55455, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 13 }, "end": { - "line": 1504, + "line": 1505, "column": 24 }, "identifierName": "_quaternion" @@ -25572,15 +25688,15 @@ }, "property": { "type": "Identifier", - "start": 55420, - "end": 55423, + "start": 55456, + "end": 55459, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 25 }, "end": { - "line": 1504, + "line": 1505, "column": 28 }, "identifierName": "set" @@ -25592,29 +25708,29 @@ "arguments": [ { "type": "LogicalExpression", - "start": 55424, - "end": 55445, + "start": 55460, + "end": 55481, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 29 }, "end": { - "line": 1504, + "line": 1505, "column": 50 } }, "left": { "type": "Identifier", - "start": 55424, - "end": 55429, + "start": 55460, + "end": 55465, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 29 }, "end": { - "line": 1504, + "line": 1505, "column": 34 }, "identifierName": "value" @@ -25624,30 +25740,30 @@ "operator": "||", "right": { "type": "ArrayExpression", - "start": 55433, - "end": 55445, + "start": 55469, + "end": 55481, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 38 }, "end": { - "line": 1504, + "line": 1505, "column": 50 } }, "elements": [ { "type": "NumericLiteral", - "start": 55434, - "end": 55435, + "start": 55470, + "end": 55471, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 39 }, "end": { - "line": 1504, + "line": 1505, "column": 40 } }, @@ -25659,15 +25775,15 @@ }, { "type": "NumericLiteral", - "start": 55437, - "end": 55438, + "start": 55473, + "end": 55474, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 42 }, "end": { - "line": 1504, + "line": 1505, "column": 43 } }, @@ -25679,15 +25795,15 @@ }, { "type": "NumericLiteral", - "start": 55440, - "end": 55441, + "start": 55476, + "end": 55477, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 45 }, "end": { - "line": 1504, + "line": 1505, "column": 46 } }, @@ -25699,15 +25815,15 @@ }, { "type": "NumericLiteral", - "start": 55443, - "end": 55444, + "start": 55479, + "end": 55480, "loc": { "start": { - "line": 1504, + "line": 1505, "column": 48 }, "end": { - "line": 1504, + "line": 1505, "column": 49 } }, @@ -25725,57 +25841,57 @@ }, { "type": "ExpressionStatement", - "start": 55456, - "end": 55520, + "start": 55492, + "end": 55556, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 8 }, "end": { - "line": 1505, + "line": 1506, "column": 72 } }, "expression": { "type": "CallExpression", - "start": 55456, - "end": 55519, + "start": 55492, + "end": 55555, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 8 }, "end": { - "line": 1505, + "line": 1506, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 55456, - "end": 55478, + "start": 55492, + "end": 55514, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 8 }, "end": { - "line": 1505, + "line": 1506, "column": 30 } }, "object": { "type": "Identifier", - "start": 55456, - "end": 55460, + "start": 55492, + "end": 55496, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 8 }, "end": { - "line": 1505, + "line": 1506, "column": 12 }, "identifierName": "math" @@ -25784,15 +25900,15 @@ }, "property": { "type": "Identifier", - "start": 55461, - "end": 55478, + "start": 55497, + "end": 55514, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 13 }, "end": { - "line": 1505, + "line": 1506, "column": 30 }, "identifierName": "quaternionToEuler" @@ -25804,44 +25920,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 55479, - "end": 55495, + "start": 55515, + "end": 55531, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 31 }, "end": { - "line": 1505, + "line": 1506, "column": 47 } }, "object": { "type": "ThisExpression", - "start": 55479, - "end": 55483, + "start": 55515, + "end": 55519, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 31 }, "end": { - "line": 1505, + "line": 1506, "column": 35 } } }, "property": { "type": "Identifier", - "start": 55484, - "end": 55495, + "start": 55520, + "end": 55531, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 36 }, "end": { - "line": 1505, + "line": 1506, "column": 47 }, "identifierName": "_quaternion" @@ -25852,15 +25968,15 @@ }, { "type": "StringLiteral", - "start": 55497, - "end": 55502, + "start": 55533, + "end": 55538, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 49 }, "end": { - "line": 1505, + "line": 1506, "column": 54 } }, @@ -25872,44 +25988,44 @@ }, { "type": "MemberExpression", - "start": 55504, - "end": 55518, + "start": 55540, + "end": 55554, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 56 }, "end": { - "line": 1505, + "line": 1506, "column": 70 } }, "object": { "type": "ThisExpression", - "start": 55504, - "end": 55508, + "start": 55540, + "end": 55544, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 56 }, "end": { - "line": 1505, + "line": 1506, "column": 60 } } }, "property": { "type": "Identifier", - "start": 55509, - "end": 55518, + "start": 55545, + "end": 55554, "loc": { "start": { - "line": 1505, + "line": 1506, "column": 61 }, "end": { - "line": 1505, + "line": 1506, "column": 70 }, "identifierName": "_rotation" @@ -25923,72 +26039,72 @@ }, { "type": "ExpressionStatement", - "start": 55529, - "end": 55557, + "start": 55565, + "end": 55593, "loc": { "start": { - "line": 1506, + "line": 1507, "column": 8 }, "end": { - "line": 1506, + "line": 1507, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 55529, - "end": 55556, + "start": 55565, + "end": 55592, "loc": { "start": { - "line": 1506, + "line": 1507, "column": 8 }, "end": { - "line": 1506, + "line": 1507, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 55529, - "end": 55554, + "start": 55565, + "end": 55590, "loc": { "start": { - "line": 1506, + "line": 1507, "column": 8 }, "end": { - "line": 1506, + "line": 1507, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 55529, - "end": 55533, + "start": 55565, + "end": 55569, "loc": { "start": { - "line": 1506, + "line": 1507, "column": 8 }, "end": { - "line": 1506, + "line": 1507, "column": 12 } } }, "property": { "type": "Identifier", - "start": 55534, - "end": 55554, + "start": 55570, + "end": 55590, "loc": { "start": { - "line": 1506, + "line": 1507, "column": 13 }, "end": { - "line": 1506, + "line": 1507, "column": 33 }, "identifierName": "_setWorldMatrixDirty" @@ -26002,72 +26118,72 @@ }, { "type": "ExpressionStatement", - "start": 55566, - "end": 55590, + "start": 55602, + "end": 55626, "loc": { "start": { - "line": 1507, + "line": 1508, "column": 8 }, "end": { - "line": 1507, + "line": 1508, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 55566, - "end": 55589, + "start": 55602, + "end": 55625, "loc": { "start": { - "line": 1507, + "line": 1508, "column": 8 }, "end": { - "line": 1507, + "line": 1508, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 55566, - "end": 55587, + "start": 55602, + "end": 55623, "loc": { "start": { - "line": 1507, + "line": 1508, "column": 8 }, "end": { - "line": 1507, + "line": 1508, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 55566, - "end": 55570, + "start": 55602, + "end": 55606, "loc": { "start": { - "line": 1507, + "line": 1508, "column": 8 }, "end": { - "line": 1507, + "line": 1508, "column": 12 } } }, "property": { "type": "Identifier", - "start": 55571, - "end": 55587, + "start": 55607, + "end": 55623, "loc": { "start": { - "line": 1507, + "line": 1508, "column": 13 }, "end": { - "line": 1507, + "line": 1508, "column": 29 }, "identifierName": "_sceneModelDirty" @@ -26081,72 +26197,72 @@ }, { "type": "ExpressionStatement", - "start": 55599, - "end": 55615, + "start": 55635, + "end": 55651, "loc": { "start": { - "line": 1508, + "line": 1509, "column": 8 }, "end": { - "line": 1508, + "line": 1509, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 55599, - "end": 55614, + "start": 55635, + "end": 55650, "loc": { "start": { - "line": 1508, + "line": 1509, "column": 8 }, "end": { - "line": 1508, + "line": 1509, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 55599, - "end": 55612, + "start": 55635, + "end": 55648, "loc": { "start": { - "line": 1508, + "line": 1509, "column": 8 }, "end": { - "line": 1508, + "line": 1509, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 55599, - "end": 55603, + "start": 55635, + "end": 55639, "loc": { "start": { - "line": 1508, + "line": 1509, "column": 8 }, "end": { - "line": 1508, + "line": 1509, "column": 12 } } }, "property": { "type": "Identifier", - "start": 55604, - "end": 55612, + "start": 55640, + "end": 55648, "loc": { "start": { - "line": 1508, + "line": 1509, "column": 13 }, "end": { - "line": 1508, + "line": 1509, "column": 21 }, "identifierName": "glRedraw" @@ -26166,15 +26282,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", - "start": 55218, - "end": 55366, + "start": 55254, + "end": 55402, "loc": { "start": { - "line": 1496, + "line": 1497, "column": 4 }, "end": { - "line": 1502, + "line": 1503, "column": 7 } } @@ -26184,15 +26300,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", - "start": 55627, - "end": 55775, + "start": 55663, + "end": 55811, "loc": { "start": { - "line": 1511, + "line": 1512, "column": 4 }, "end": { - "line": 1517, + "line": 1518, "column": 7 } } @@ -26201,15 +26317,15 @@ }, { "type": "ClassMethod", - "start": 55780, - "end": 55837, + "start": 55816, + "end": 55873, "loc": { "start": { - "line": 1518, + "line": 1519, "column": 4 }, "end": { - "line": 1520, + "line": 1521, "column": 5 } }, @@ -26217,15 +26333,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55784, - "end": 55794, + "start": 55820, + "end": 55830, "loc": { "start": { - "line": 1518, + "line": 1519, "column": 8 }, "end": { - "line": 1518, + "line": 1519, "column": 18 }, "identifierName": "quaternion" @@ -26240,73 +26356,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 55797, - "end": 55837, + "start": 55833, + "end": 55873, "loc": { "start": { - "line": 1518, + "line": 1519, "column": 21 }, "end": { - "line": 1520, + "line": 1521, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 55807, - "end": 55831, + "start": 55843, + "end": 55867, "loc": { "start": { - "line": 1519, + "line": 1520, "column": 8 }, "end": { - "line": 1519, + "line": 1520, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 55814, - "end": 55830, + "start": 55850, + "end": 55866, "loc": { "start": { - "line": 1519, + "line": 1520, "column": 15 }, "end": { - "line": 1519, + "line": 1520, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 55814, - "end": 55818, + "start": 55850, + "end": 55854, "loc": { "start": { - "line": 1519, + "line": 1520, "column": 15 }, "end": { - "line": 1519, + "line": 1520, "column": 19 } } }, "property": { "type": "Identifier", - "start": 55819, - "end": 55830, + "start": 55855, + "end": 55866, "loc": { "start": { - "line": 1519, + "line": 1520, "column": 20 }, "end": { - "line": 1519, + "line": 1520, "column": 31 }, "identifierName": "_quaternion" @@ -26324,15 +26440,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", - "start": 55627, - "end": 55775, + "start": 55663, + "end": 55811, "loc": { "start": { - "line": 1511, + "line": 1512, "column": 4 }, "end": { - "line": 1517, + "line": 1518, "column": 7 } } @@ -26342,15 +26458,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", - "start": 55843, - "end": 55994, + "start": 55879, + "end": 56030, "loc": { "start": { - "line": 1522, + "line": 1523, "column": 4 }, "end": { - "line": 1529, + "line": 1530, "column": 7 } } @@ -26359,15 +26475,15 @@ }, { "type": "ClassMethod", - "start": 55999, - "end": 56051, + "start": 56035, + "end": 56087, "loc": { "start": { - "line": 1530, + "line": 1531, "column": 4 }, "end": { - "line": 1532, + "line": 1533, "column": 5 } }, @@ -26375,15 +26491,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 56003, - "end": 56008, + "start": 56039, + "end": 56044, "loc": { "start": { - "line": 1530, + "line": 1531, "column": 8 }, "end": { - "line": 1530, + "line": 1531, "column": 13 }, "identifierName": "scale" @@ -26398,15 +26514,15 @@ "params": [ { "type": "Identifier", - "start": 56009, - "end": 56014, + "start": 56045, + "end": 56050, "loc": { "start": { - "line": 1530, + "line": 1531, "column": 14 }, "end": { - "line": 1530, + "line": 1531, "column": 19 }, "identifierName": "value" @@ -26416,15 +26532,15 @@ ], "body": { "type": "BlockStatement", - "start": 56016, - "end": 56051, + "start": 56052, + "end": 56087, "loc": { "start": { - "line": 1530, + "line": 1531, "column": 21 }, "end": { - "line": 1532, + "line": 1533, "column": 5 } }, @@ -26435,15 +26551,15 @@ { "type": "CommentLine", "value": " NOP - deprecated", - "start": 56026, - "end": 56045, + "start": 56062, + "end": 56081, "loc": { "start": { - "line": 1531, + "line": 1532, "column": 8 }, "end": { - "line": 1531, + "line": 1532, "column": 27 } } @@ -26451,15 +26567,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", - "start": 56057, - "end": 56208, + "start": 56093, + "end": 56244, "loc": { "start": { - "line": 1534, + "line": 1535, "column": 4 }, "end": { - "line": 1541, + "line": 1542, "column": 7 } } @@ -26470,15 +26586,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", - "start": 55843, - "end": 55994, + "start": 55879, + "end": 56030, "loc": { "start": { - "line": 1522, + "line": 1523, "column": 4 }, "end": { - "line": 1529, + "line": 1530, "column": 7 } } @@ -26487,15 +26603,15 @@ }, { "type": "ClassMethod", - "start": 56213, - "end": 56260, + "start": 56249, + "end": 56296, "loc": { "start": { - "line": 1542, + "line": 1543, "column": 4 }, "end": { - "line": 1544, + "line": 1545, "column": 5 } }, @@ -26503,15 +26619,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 56217, - "end": 56222, + "start": 56253, + "end": 56258, "loc": { "start": { - "line": 1542, + "line": 1543, "column": 8 }, "end": { - "line": 1542, + "line": 1543, "column": 13 }, "identifierName": "scale" @@ -26526,73 +26642,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 56225, - "end": 56260, + "start": 56261, + "end": 56296, "loc": { "start": { - "line": 1542, + "line": 1543, "column": 16 }, "end": { - "line": 1544, + "line": 1545, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 56235, - "end": 56254, + "start": 56271, + "end": 56290, "loc": { "start": { - "line": 1543, + "line": 1544, "column": 8 }, "end": { - "line": 1543, + "line": 1544, "column": 27 } }, "argument": { "type": "MemberExpression", - "start": 56242, - "end": 56253, + "start": 56278, + "end": 56289, "loc": { "start": { - "line": 1543, + "line": 1544, "column": 15 }, "end": { - "line": 1543, + "line": 1544, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 56242, - "end": 56246, + "start": 56278, + "end": 56282, "loc": { "start": { - "line": 1543, + "line": 1544, "column": 15 }, "end": { - "line": 1543, + "line": 1544, "column": 19 } } }, "property": { "type": "Identifier", - "start": 56247, - "end": 56253, + "start": 56283, + "end": 56289, "loc": { "start": { - "line": 1543, + "line": 1544, "column": 20 }, "end": { - "line": 1543, + "line": 1544, "column": 26 }, "identifierName": "_scale" @@ -26610,15 +26726,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", - "start": 56057, - "end": 56208, + "start": 56093, + "end": 56244, "loc": { "start": { - "line": 1534, + "line": 1535, "column": 4 }, "end": { - "line": 1541, + "line": 1542, "column": 7 } } @@ -26628,15 +26744,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", - "start": 56266, - "end": 56459, + "start": 56302, + "end": 56495, "loc": { "start": { - "line": 1546, + "line": 1547, "column": 4 }, "end": { - "line": 1552, + "line": 1553, "column": 7 } } @@ -26645,15 +26761,15 @@ }, { "type": "ClassMethod", - "start": 56464, - "end": 57040, + "start": 56500, + "end": 57076, "loc": { "start": { - "line": 1553, + "line": 1554, "column": 4 }, "end": { - "line": 1566, + "line": 1567, "column": 5 } }, @@ -26661,15 +26777,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 56468, - "end": 56474, + "start": 56504, + "end": 56510, "loc": { "start": { - "line": 1553, + "line": 1554, "column": 8 }, "end": { - "line": 1553, + "line": 1554, "column": 14 }, "identifierName": "matrix" @@ -26684,15 +26800,15 @@ "params": [ { "type": "Identifier", - "start": 56475, - "end": 56480, + "start": 56511, + "end": 56516, "loc": { "start": { - "line": 1553, + "line": 1554, "column": 15 }, "end": { - "line": 1553, + "line": 1554, "column": 20 }, "identifierName": "value" @@ -26702,101 +26818,101 @@ ], "body": { "type": "BlockStatement", - "start": 56482, - "end": 57040, + "start": 56518, + "end": 57076, "loc": { "start": { - "line": 1553, + "line": 1554, "column": 22 }, "end": { - "line": 1566, + "line": 1567, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 56492, - "end": 56534, + "start": 56528, + "end": 56570, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 8 }, "end": { - "line": 1554, + "line": 1555, "column": 50 } }, "expression": { "type": "CallExpression", - "start": 56492, - "end": 56533, + "start": 56528, + "end": 56569, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 8 }, "end": { - "line": 1554, + "line": 1555, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 56492, - "end": 56508, + "start": 56528, + "end": 56544, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 8 }, "end": { - "line": 1554, + "line": 1555, "column": 24 } }, "object": { "type": "MemberExpression", - "start": 56492, - "end": 56504, + "start": 56528, + "end": 56540, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 8 }, "end": { - "line": 1554, + "line": 1555, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 56492, - "end": 56496, + "start": 56528, + "end": 56532, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 8 }, "end": { - "line": 1554, + "line": 1555, "column": 12 } } }, "property": { "type": "Identifier", - "start": 56497, - "end": 56504, + "start": 56533, + "end": 56540, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 13 }, "end": { - "line": 1554, + "line": 1555, "column": 20 }, "identifierName": "_matrix" @@ -26807,15 +26923,15 @@ }, "property": { "type": "Identifier", - "start": 56505, - "end": 56508, + "start": 56541, + "end": 56544, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 21 }, "end": { - "line": 1554, + "line": 1555, "column": 24 }, "identifierName": "set" @@ -26827,29 +26943,29 @@ "arguments": [ { "type": "LogicalExpression", - "start": 56509, - "end": 56532, + "start": 56545, + "end": 56568, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 25 }, "end": { - "line": 1554, + "line": 1555, "column": 48 } }, "left": { "type": "Identifier", - "start": 56509, - "end": 56514, + "start": 56545, + "end": 56550, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 25 }, "end": { - "line": 1554, + "line": 1555, "column": 30 }, "identifierName": "value" @@ -26859,15 +26975,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 56518, - "end": 56532, + "start": 56554, + "end": 56568, "loc": { "start": { - "line": 1554, + "line": 1555, "column": 34 }, "end": { - "line": 1554, + "line": 1555, "column": 48 }, "identifierName": "DEFAULT_MATRIX" @@ -26880,57 +26996,57 @@ }, { "type": "ExpressionStatement", - "start": 56544, - "end": 56619, + "start": 56580, + "end": 56655, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 8 }, "end": { - "line": 1556, + "line": 1557, "column": 83 } }, "expression": { "type": "CallExpression", - "start": 56544, - "end": 56618, + "start": 56580, + "end": 56654, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 8 }, "end": { - "line": 1556, + "line": 1557, "column": 82 } }, "callee": { "type": "MemberExpression", - "start": 56544, - "end": 56573, + "start": 56580, + "end": 56609, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 8 }, "end": { - "line": 1556, + "line": 1557, "column": 37 } }, "object": { "type": "Identifier", - "start": 56544, - "end": 56548, + "start": 56580, + "end": 56584, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 8 }, "end": { - "line": 1556, + "line": 1557, "column": 12 }, "identifierName": "math" @@ -26939,15 +27055,15 @@ }, "property": { "type": "Identifier", - "start": 56549, - "end": 56573, + "start": 56585, + "end": 56609, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 13 }, "end": { - "line": 1556, + "line": 1557, "column": 37 }, "identifierName": "quaternionToRotationMat4" @@ -26959,44 +27075,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 56574, - "end": 56590, + "start": 56610, + "end": 56626, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 38 }, "end": { - "line": 1556, + "line": 1557, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 56574, - "end": 56578, + "start": 56610, + "end": 56614, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 38 }, "end": { - "line": 1556, + "line": 1557, "column": 42 } } }, "property": { "type": "Identifier", - "start": 56579, - "end": 56590, + "start": 56615, + "end": 56626, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 43 }, "end": { - "line": 1556, + "line": 1557, "column": 54 }, "identifierName": "_quaternion" @@ -27007,44 +27123,44 @@ }, { "type": "MemberExpression", - "start": 56592, - "end": 56617, + "start": 56628, + "end": 56653, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 56 }, "end": { - "line": 1556, + "line": 1557, "column": 81 } }, "object": { "type": "ThisExpression", - "start": 56592, - "end": 56596, + "start": 56628, + "end": 56632, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 56 }, "end": { - "line": 1556, + "line": 1557, "column": 60 } } }, "property": { "type": "Identifier", - "start": 56597, - "end": 56617, + "start": 56633, + "end": 56653, "loc": { "start": { - "line": 1556, + "line": 1557, "column": 61 }, "end": { - "line": 1556, + "line": 1557, "column": 81 }, "identifierName": "_worldRotationMatrix" @@ -27058,57 +27174,57 @@ }, { "type": "ExpressionStatement", - "start": 56628, - "end": 56698, + "start": 56664, + "end": 56734, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 8 }, "end": { - "line": 1557, + "line": 1558, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 56628, - "end": 56697, + "start": 56664, + "end": 56733, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 8 }, "end": { - "line": 1557, + "line": 1558, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 56628, - "end": 56652, + "start": 56664, + "end": 56688, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 8 }, "end": { - "line": 1557, + "line": 1558, "column": 32 } }, "object": { "type": "Identifier", - "start": 56628, - "end": 56632, + "start": 56664, + "end": 56668, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 8 }, "end": { - "line": 1557, + "line": 1558, "column": 12 }, "identifierName": "math" @@ -27117,15 +27233,15 @@ }, "property": { "type": "Identifier", - "start": 56633, - "end": 56652, + "start": 56669, + "end": 56688, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 13 }, "end": { - "line": 1557, + "line": 1558, "column": 32 }, "identifierName": "conjugateQuaternion" @@ -27137,44 +27253,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 56653, - "end": 56669, + "start": 56689, + "end": 56705, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 33 }, "end": { - "line": 1557, + "line": 1558, "column": 49 } }, "object": { "type": "ThisExpression", - "start": 56653, - "end": 56657, + "start": 56689, + "end": 56693, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 33 }, "end": { - "line": 1557, + "line": 1558, "column": 37 } } }, "property": { "type": "Identifier", - "start": 56658, - "end": 56669, + "start": 56694, + "end": 56705, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 38 }, "end": { - "line": 1557, + "line": 1558, "column": 49 }, "identifierName": "_quaternion" @@ -27185,44 +27301,44 @@ }, { "type": "MemberExpression", - "start": 56671, - "end": 56696, + "start": 56707, + "end": 56732, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 51 }, "end": { - "line": 1557, + "line": 1558, "column": 76 } }, "object": { "type": "ThisExpression", - "start": 56671, - "end": 56675, + "start": 56707, + "end": 56711, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 51 }, "end": { - "line": 1557, + "line": 1558, "column": 55 } } }, "property": { "type": "Identifier", - "start": 56676, - "end": 56696, + "start": 56712, + "end": 56732, "loc": { "start": { - "line": 1557, + "line": 1558, "column": 56 }, "end": { - "line": 1557, + "line": 1558, "column": 76 }, "identifierName": "_conjugateQuaternion" @@ -27236,57 +27352,57 @@ }, { "type": "ExpressionStatement", - "start": 56707, - "end": 56791, + "start": 56743, + "end": 56827, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 8 }, "end": { - "line": 1558, + "line": 1559, "column": 92 } }, "expression": { "type": "CallExpression", - "start": 56707, - "end": 56790, + "start": 56743, + "end": 56826, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 8 }, "end": { - "line": 1558, + "line": 1559, "column": 91 } }, "callee": { "type": "MemberExpression", - "start": 56707, - "end": 56736, + "start": 56743, + "end": 56772, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 8 }, "end": { - "line": 1558, + "line": 1559, "column": 37 } }, "object": { "type": "Identifier", - "start": 56707, - "end": 56711, + "start": 56743, + "end": 56747, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 8 }, "end": { - "line": 1558, + "line": 1559, "column": 12 }, "identifierName": "math" @@ -27295,15 +27411,15 @@ }, "property": { "type": "Identifier", - "start": 56712, - "end": 56736, + "start": 56748, + "end": 56772, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 13 }, "end": { - "line": 1558, + "line": 1559, "column": 37 }, "identifierName": "quaternionToRotationMat4" @@ -27315,44 +27431,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 56737, - "end": 56753, + "start": 56773, + "end": 56789, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 38 }, "end": { - "line": 1558, + "line": 1559, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 56737, - "end": 56741, + "start": 56773, + "end": 56777, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 38 }, "end": { - "line": 1558, + "line": 1559, "column": 42 } } }, "property": { "type": "Identifier", - "start": 56742, - "end": 56753, + "start": 56778, + "end": 56789, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 43 }, "end": { - "line": 1558, + "line": 1559, "column": 54 }, "identifierName": "_quaternion" @@ -27363,44 +27479,44 @@ }, { "type": "MemberExpression", - "start": 56755, - "end": 56789, + "start": 56791, + "end": 56825, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 56 }, "end": { - "line": 1558, + "line": 1559, "column": 90 } }, "object": { "type": "ThisExpression", - "start": 56755, - "end": 56759, + "start": 56791, + "end": 56795, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 56 }, "end": { - "line": 1558, + "line": 1559, "column": 60 } } }, "property": { "type": "Identifier", - "start": 56760, - "end": 56789, + "start": 56796, + "end": 56825, "loc": { "start": { - "line": 1558, + "line": 1559, "column": 61 }, "end": { - "line": 1558, + "line": 1559, "column": 90 }, "identifierName": "_worldRotationMatrixConjugate" @@ -27414,86 +27530,86 @@ }, { "type": "ExpressionStatement", - "start": 56800, - "end": 56844, + "start": 56836, + "end": 56880, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 8 }, "end": { - "line": 1559, + "line": 1560, "column": 52 } }, "expression": { "type": "CallExpression", - "start": 56800, - "end": 56843, + "start": 56836, + "end": 56879, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 8 }, "end": { - "line": 1559, + "line": 1560, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 56800, - "end": 56816, + "start": 56836, + "end": 56852, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 8 }, "end": { - "line": 1559, + "line": 1560, "column": 24 } }, "object": { "type": "MemberExpression", - "start": 56800, - "end": 56812, + "start": 56836, + "end": 56848, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 8 }, "end": { - "line": 1559, + "line": 1560, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 56800, - "end": 56804, + "start": 56836, + "end": 56840, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 8 }, "end": { - "line": 1559, + "line": 1560, "column": 12 } } }, "property": { "type": "Identifier", - "start": 56805, - "end": 56812, + "start": 56841, + "end": 56848, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 13 }, "end": { - "line": 1559, + "line": 1560, "column": 20 }, "identifierName": "_matrix" @@ -27504,15 +27620,15 @@ }, "property": { "type": "Identifier", - "start": 56813, - "end": 56816, + "start": 56849, + "end": 56852, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 21 }, "end": { - "line": 1559, + "line": 1560, "column": 24 }, "identifierName": "set" @@ -27524,44 +27640,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 56817, - "end": 56842, + "start": 56853, + "end": 56878, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 25 }, "end": { - "line": 1559, + "line": 1560, "column": 50 } }, "object": { "type": "ThisExpression", - "start": 56817, - "end": 56821, + "start": 56853, + "end": 56857, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 25 }, "end": { - "line": 1559, + "line": 1560, "column": 29 } } }, "property": { "type": "Identifier", - "start": 56822, - "end": 56842, + "start": 56858, + "end": 56878, "loc": { "start": { - "line": 1559, + "line": 1560, "column": 30 }, "end": { - "line": 1559, + "line": 1560, "column": 50 }, "identifierName": "_worldRotationMatrix" @@ -27575,57 +27691,57 @@ }, { "type": "ExpressionStatement", - "start": 56853, - "end": 56903, + "start": 56889, + "end": 56939, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 8 }, "end": { - "line": 1560, + "line": 1561, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 56853, - "end": 56902, + "start": 56889, + "end": 56938, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 8 }, "end": { - "line": 1560, + "line": 1561, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 56853, - "end": 56872, + "start": 56889, + "end": 56908, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 8 }, "end": { - "line": 1560, + "line": 1561, "column": 27 } }, "object": { "type": "Identifier", - "start": 56853, - "end": 56857, + "start": 56889, + "end": 56893, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 8 }, "end": { - "line": 1560, + "line": 1561, "column": 12 }, "identifierName": "math" @@ -27634,15 +27750,15 @@ }, "property": { "type": "Identifier", - "start": 56858, - "end": 56872, + "start": 56894, + "end": 56908, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 13 }, "end": { - "line": 1560, + "line": 1561, "column": 27 }, "identifierName": "translateMat4v" @@ -27654,44 +27770,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 56873, - "end": 56887, + "start": 56909, + "end": 56923, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 28 }, "end": { - "line": 1560, + "line": 1561, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 56873, - "end": 56877, + "start": 56909, + "end": 56913, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 28 }, "end": { - "line": 1560, + "line": 1561, "column": 32 } } }, "property": { "type": "Identifier", - "start": 56878, - "end": 56887, + "start": 56914, + "end": 56923, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 33 }, "end": { - "line": 1560, + "line": 1561, "column": 42 }, "identifierName": "_position" @@ -27702,44 +27818,44 @@ }, { "type": "MemberExpression", - "start": 56889, - "end": 56901, + "start": 56925, + "end": 56937, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 44 }, "end": { - "line": 1560, + "line": 1561, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 56889, - "end": 56893, + "start": 56925, + "end": 56929, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 44 }, "end": { - "line": 1560, + "line": 1561, "column": 48 } } }, "property": { "type": "Identifier", - "start": 56894, - "end": 56901, + "start": 56930, + "end": 56937, "loc": { "start": { - "line": 1560, + "line": 1561, "column": 49 }, "end": { - "line": 1560, + "line": 1561, "column": 56 }, "identifierName": "_matrix" @@ -27753,73 +27869,73 @@ }, { "type": "ExpressionStatement", - "start": 56913, - "end": 56939, + "start": 56949, + "end": 56975, "loc": { "start": { - "line": 1562, + "line": 1563, "column": 8 }, "end": { - "line": 1562, + "line": 1563, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 56913, - "end": 56938, + "start": 56949, + "end": 56974, "loc": { "start": { - "line": 1562, + "line": 1563, "column": 8 }, "end": { - "line": 1562, + "line": 1563, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 56913, - "end": 56930, + "start": 56949, + "end": 56966, "loc": { "start": { - "line": 1562, + "line": 1563, "column": 8 }, "end": { - "line": 1562, + "line": 1563, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 56913, - "end": 56917, + "start": 56949, + "end": 56953, "loc": { "start": { - "line": 1562, + "line": 1563, "column": 8 }, "end": { - "line": 1562, + "line": 1563, "column": 12 } } }, "property": { "type": "Identifier", - "start": 56918, - "end": 56930, + "start": 56954, + "end": 56966, "loc": { "start": { - "line": 1562, + "line": 1563, "column": 13 }, "end": { - "line": 1562, + "line": 1563, "column": 25 }, "identifierName": "_matrixDirty" @@ -27830,15 +27946,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 56933, - "end": 56938, + "start": 56969, + "end": 56974, "loc": { "start": { - "line": 1562, + "line": 1563, "column": 28 }, "end": { - "line": 1562, + "line": 1563, "column": 33 } }, @@ -27848,72 +27964,72 @@ }, { "type": "ExpressionStatement", - "start": 56948, - "end": 56976, + "start": 56984, + "end": 57012, "loc": { "start": { - "line": 1563, + "line": 1564, "column": 8 }, "end": { - "line": 1563, + "line": 1564, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 56948, - "end": 56975, + "start": 56984, + "end": 57011, "loc": { "start": { - "line": 1563, + "line": 1564, "column": 8 }, "end": { - "line": 1563, + "line": 1564, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 56948, - "end": 56973, + "start": 56984, + "end": 57009, "loc": { "start": { - "line": 1563, + "line": 1564, "column": 8 }, "end": { - "line": 1563, + "line": 1564, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 56948, - "end": 56952, + "start": 56984, + "end": 56988, "loc": { "start": { - "line": 1563, + "line": 1564, "column": 8 }, "end": { - "line": 1563, + "line": 1564, "column": 12 } } }, "property": { "type": "Identifier", - "start": 56953, - "end": 56973, + "start": 56989, + "end": 57009, "loc": { "start": { - "line": 1563, + "line": 1564, "column": 13 }, "end": { - "line": 1563, + "line": 1564, "column": 33 }, "identifierName": "_setWorldMatrixDirty" @@ -27927,72 +28043,72 @@ }, { "type": "ExpressionStatement", - "start": 56985, - "end": 57009, + "start": 57021, + "end": 57045, "loc": { "start": { - "line": 1564, + "line": 1565, "column": 8 }, "end": { - "line": 1564, + "line": 1565, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 56985, - "end": 57008, + "start": 57021, + "end": 57044, "loc": { "start": { - "line": 1564, + "line": 1565, "column": 8 }, "end": { - "line": 1564, + "line": 1565, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 56985, - "end": 57006, + "start": 57021, + "end": 57042, "loc": { "start": { - "line": 1564, + "line": 1565, "column": 8 }, "end": { - "line": 1564, + "line": 1565, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 56985, - "end": 56989, + "start": 57021, + "end": 57025, "loc": { "start": { - "line": 1564, + "line": 1565, "column": 8 }, "end": { - "line": 1564, + "line": 1565, "column": 12 } } }, "property": { "type": "Identifier", - "start": 56990, - "end": 57006, + "start": 57026, + "end": 57042, "loc": { "start": { - "line": 1564, + "line": 1565, "column": 13 }, "end": { - "line": 1564, + "line": 1565, "column": 29 }, "identifierName": "_sceneModelDirty" @@ -28006,72 +28122,72 @@ }, { "type": "ExpressionStatement", - "start": 57018, - "end": 57034, + "start": 57054, + "end": 57070, "loc": { "start": { - "line": 1565, + "line": 1566, "column": 8 }, "end": { - "line": 1565, + "line": 1566, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 57018, - "end": 57033, + "start": 57054, + "end": 57069, "loc": { "start": { - "line": 1565, + "line": 1566, "column": 8 }, "end": { - "line": 1565, + "line": 1566, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 57018, - "end": 57031, + "start": 57054, + "end": 57067, "loc": { "start": { - "line": 1565, + "line": 1566, "column": 8 }, "end": { - "line": 1565, + "line": 1566, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 57018, - "end": 57022, + "start": 57054, + "end": 57058, "loc": { "start": { - "line": 1565, + "line": 1566, "column": 8 }, "end": { - "line": 1565, + "line": 1566, "column": 12 } } }, "property": { "type": "Identifier", - "start": 57023, - "end": 57031, + "start": 57059, + "end": 57067, "loc": { "start": { - "line": 1565, + "line": 1566, "column": 13 }, "end": { - "line": 1565, + "line": 1566, "column": 21 }, "identifierName": "glRedraw" @@ -28091,15 +28207,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", - "start": 56266, - "end": 56459, + "start": 56302, + "end": 56495, "loc": { "start": { - "line": 1546, + "line": 1547, "column": 4 }, "end": { - "line": 1552, + "line": 1553, "column": 7 } } @@ -28109,15 +28225,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", - "start": 57046, - "end": 57239, + "start": 57082, + "end": 57275, "loc": { "start": { - "line": 1568, + "line": 1569, "column": 4 }, "end": { - "line": 1574, + "line": 1575, "column": 7 } } @@ -28126,15 +28242,15 @@ }, { "type": "ClassMethod", - "start": 57244, - "end": 57373, + "start": 57280, + "end": 57409, "loc": { "start": { - "line": 1575, + "line": 1576, "column": 4 }, "end": { - "line": 1580, + "line": 1581, "column": 5 } }, @@ -28142,15 +28258,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 57248, - "end": 57254, + "start": 57284, + "end": 57290, "loc": { "start": { - "line": 1575, + "line": 1576, "column": 8 }, "end": { - "line": 1575, + "line": 1576, "column": 14 }, "identifierName": "matrix" @@ -28165,73 +28281,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 57257, - "end": 57373, + "start": 57293, + "end": 57409, "loc": { "start": { - "line": 1575, + "line": 1576, "column": 17 }, "end": { - "line": 1580, + "line": 1581, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 57267, - "end": 57338, + "start": 57303, + "end": 57374, "loc": { "start": { - "line": 1576, + "line": 1577, "column": 8 }, "end": { - "line": 1578, + "line": 1579, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 57271, - "end": 57288, + "start": 57307, + "end": 57324, "loc": { "start": { - "line": 1576, + "line": 1577, "column": 12 }, "end": { - "line": 1576, + "line": 1577, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 57271, - "end": 57275, + "start": 57307, + "end": 57311, "loc": { "start": { - "line": 1576, + "line": 1577, "column": 12 }, "end": { - "line": 1576, + "line": 1577, "column": 16 } } }, "property": { "type": "Identifier", - "start": 57276, - "end": 57288, + "start": 57312, + "end": 57324, "loc": { "start": { - "line": 1576, + "line": 1577, "column": 17 }, "end": { - "line": 1576, + "line": 1577, "column": 29 }, "identifierName": "_matrixDirty" @@ -28242,87 +28358,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 57290, - "end": 57338, + "start": 57326, + "end": 57374, "loc": { "start": { - "line": 1576, + "line": 1577, "column": 31 }, "end": { - "line": 1578, + "line": 1579, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 57304, - "end": 57328, + "start": 57340, + "end": 57364, "loc": { "start": { - "line": 1577, + "line": 1578, "column": 12 }, "end": { - "line": 1577, + "line": 1578, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 57304, - "end": 57327, + "start": 57340, + "end": 57363, "loc": { "start": { - "line": 1577, + "line": 1578, "column": 12 }, "end": { - "line": 1577, + "line": 1578, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 57304, - "end": 57325, + "start": 57340, + "end": 57361, "loc": { "start": { - "line": 1577, + "line": 1578, "column": 12 }, "end": { - "line": 1577, + "line": 1578, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 57304, - "end": 57308, + "start": 57340, + "end": 57344, "loc": { "start": { - "line": 1577, + "line": 1578, "column": 12 }, "end": { - "line": 1577, + "line": 1578, "column": 16 } } }, "property": { "type": "Identifier", - "start": 57309, - "end": 57325, + "start": 57345, + "end": 57361, "loc": { "start": { - "line": 1577, + "line": 1578, "column": 17 }, "end": { - "line": 1577, + "line": 1578, "column": 33 }, "identifierName": "_rebuildMatrices" @@ -28341,58 +28457,58 @@ }, { "type": "ReturnStatement", - "start": 57347, - "end": 57367, + "start": 57383, + "end": 57403, "loc": { "start": { - "line": 1579, + "line": 1580, "column": 8 }, "end": { - "line": 1579, + "line": 1580, "column": 28 } }, "argument": { "type": "MemberExpression", - "start": 57354, - "end": 57366, + "start": 57390, + "end": 57402, "loc": { "start": { - "line": 1579, + "line": 1580, "column": 15 }, "end": { - "line": 1579, + "line": 1580, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 57354, - "end": 57358, + "start": 57390, + "end": 57394, "loc": { "start": { - "line": 1579, + "line": 1580, "column": 15 }, "end": { - "line": 1579, + "line": 1580, "column": 19 } } }, "property": { "type": "Identifier", - "start": 57359, - "end": 57366, + "start": 57395, + "end": 57402, "loc": { "start": { - "line": 1579, + "line": 1580, "column": 20 }, "end": { - "line": 1579, + "line": 1580, "column": 27 }, "identifierName": "_matrix" @@ -28410,15 +28526,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", - "start": 57046, - "end": 57239, + "start": 57082, + "end": 57275, "loc": { "start": { - "line": 1568, + "line": 1569, "column": 4 }, "end": { - "line": 1574, + "line": 1575, "column": 7 } } @@ -28428,15 +28544,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local modeling rotation transform matrix.\n *\n * @type {Number[]}\n ", - "start": 57379, - "end": 57492, + "start": 57415, + "end": 57528, "loc": { "start": { - "line": 1582, + "line": 1583, "column": 4 }, "end": { - "line": 1586, + "line": 1587, "column": 7 } } @@ -28445,15 +28561,15 @@ }, { "type": "ClassMethod", - "start": 57497, - "end": 57647, + "start": 57533, + "end": 57683, "loc": { "start": { - "line": 1587, + "line": 1588, "column": 4 }, "end": { - "line": 1592, + "line": 1593, "column": 5 } }, @@ -28461,15 +28577,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 57501, - "end": 57515, + "start": 57537, + "end": 57551, "loc": { "start": { - "line": 1587, + "line": 1588, "column": 8 }, "end": { - "line": 1587, + "line": 1588, "column": 22 }, "identifierName": "rotationMatrix" @@ -28484,73 +28600,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 57518, - "end": 57647, + "start": 57554, + "end": 57683, "loc": { "start": { - "line": 1587, + "line": 1588, "column": 25 }, "end": { - "line": 1592, + "line": 1593, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 57528, - "end": 57599, + "start": 57564, + "end": 57635, "loc": { "start": { - "line": 1588, + "line": 1589, "column": 8 }, "end": { - "line": 1590, + "line": 1591, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 57532, - "end": 57549, + "start": 57568, + "end": 57585, "loc": { "start": { - "line": 1588, + "line": 1589, "column": 12 }, "end": { - "line": 1588, + "line": 1589, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 57532, - "end": 57536, + "start": 57568, + "end": 57572, "loc": { "start": { - "line": 1588, + "line": 1589, "column": 12 }, "end": { - "line": 1588, + "line": 1589, "column": 16 } } }, "property": { "type": "Identifier", - "start": 57537, - "end": 57549, + "start": 57573, + "end": 57585, "loc": { "start": { - "line": 1588, + "line": 1589, "column": 17 }, "end": { - "line": 1588, + "line": 1589, "column": 29 }, "identifierName": "_matrixDirty" @@ -28561,87 +28677,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 57551, - "end": 57599, + "start": 57587, + "end": 57635, "loc": { "start": { - "line": 1588, + "line": 1589, "column": 31 }, "end": { - "line": 1590, + "line": 1591, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 57565, - "end": 57589, + "start": 57601, + "end": 57625, "loc": { "start": { - "line": 1589, + "line": 1590, "column": 12 }, "end": { - "line": 1589, + "line": 1590, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 57565, - "end": 57588, + "start": 57601, + "end": 57624, "loc": { "start": { - "line": 1589, + "line": 1590, "column": 12 }, "end": { - "line": 1589, + "line": 1590, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 57565, - "end": 57586, + "start": 57601, + "end": 57622, "loc": { "start": { - "line": 1589, + "line": 1590, "column": 12 }, "end": { - "line": 1589, + "line": 1590, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 57565, - "end": 57569, + "start": 57601, + "end": 57605, "loc": { "start": { - "line": 1589, + "line": 1590, "column": 12 }, "end": { - "line": 1589, + "line": 1590, "column": 16 } } }, "property": { "type": "Identifier", - "start": 57570, - "end": 57586, + "start": 57606, + "end": 57622, "loc": { "start": { - "line": 1589, + "line": 1590, "column": 17 }, "end": { - "line": 1589, + "line": 1590, "column": 33 }, "identifierName": "_rebuildMatrices" @@ -28660,58 +28776,58 @@ }, { "type": "ReturnStatement", - "start": 57608, - "end": 57641, + "start": 57644, + "end": 57677, "loc": { "start": { - "line": 1591, + "line": 1592, "column": 8 }, "end": { - "line": 1591, + "line": 1592, "column": 41 } }, "argument": { "type": "MemberExpression", - "start": 57615, - "end": 57640, + "start": 57651, + "end": 57676, "loc": { "start": { - "line": 1591, + "line": 1592, "column": 15 }, "end": { - "line": 1591, + "line": 1592, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 57615, - "end": 57619, + "start": 57651, + "end": 57655, "loc": { "start": { - "line": 1591, + "line": 1592, "column": 15 }, "end": { - "line": 1591, + "line": 1592, "column": 19 } } }, "property": { "type": "Identifier", - "start": 57620, - "end": 57640, + "start": 57656, + "end": 57676, "loc": { "start": { - "line": 1591, + "line": 1592, "column": 20 }, "end": { - "line": 1591, + "line": 1592, "column": 40 }, "identifierName": "_worldRotationMatrix" @@ -28728,15 +28844,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local modeling rotation transform matrix.\n *\n * @type {Number[]}\n ", - "start": 57379, - "end": 57492, + "start": 57415, + "end": 57528, "loc": { "start": { - "line": 1582, + "line": 1583, "column": 4 }, "end": { - "line": 1586, + "line": 1587, "column": 7 } } @@ -28745,15 +28861,15 @@ }, { "type": "ClassMethod", - "start": 57653, - "end": 58149, + "start": 57689, + "end": 58185, "loc": { "start": { - "line": 1594, + "line": 1595, "column": 4 }, "end": { - "line": 1603, + "line": 1604, "column": 5 } }, @@ -28761,15 +28877,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 57653, - "end": 57669, + "start": 57689, + "end": 57705, "loc": { "start": { - "line": 1594, + "line": 1595, "column": 4 }, "end": { - "line": 1594, + "line": 1595, "column": 20 }, "identifierName": "_rebuildMatrices" @@ -28784,73 +28900,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 57672, - "end": 58149, + "start": 57708, + "end": 58185, "loc": { "start": { - "line": 1594, + "line": 1595, "column": 23 }, "end": { - "line": 1603, + "line": 1604, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 57682, - "end": 58143, + "start": 57718, + "end": 58179, "loc": { "start": { - "line": 1595, + "line": 1596, "column": 8 }, "end": { - "line": 1602, + "line": 1603, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 57686, - "end": 57703, + "start": 57722, + "end": 57739, "loc": { "start": { - "line": 1595, + "line": 1596, "column": 12 }, "end": { - "line": 1595, + "line": 1596, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 57686, - "end": 57690, + "start": 57722, + "end": 57726, "loc": { "start": { - "line": 1595, + "line": 1596, "column": 12 }, "end": { - "line": 1595, + "line": 1596, "column": 16 } } }, "property": { "type": "Identifier", - "start": 57691, - "end": 57703, + "start": 57727, + "end": 57739, "loc": { "start": { - "line": 1595, + "line": 1596, "column": 17 }, "end": { - "line": 1595, + "line": 1596, "column": 29 }, "identifierName": "_matrixDirty" @@ -28861,72 +28977,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 57705, - "end": 58143, + "start": 57741, + "end": 58179, "loc": { "start": { - "line": 1595, + "line": 1596, "column": 31 }, "end": { - "line": 1602, + "line": 1603, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 57719, - "end": 57794, + "start": 57755, + "end": 57830, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 12 }, "end": { - "line": 1596, + "line": 1597, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 57719, - "end": 57793, + "start": 57755, + "end": 57829, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 12 }, "end": { - "line": 1596, + "line": 1597, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 57719, - "end": 57748, + "start": 57755, + "end": 57784, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 12 }, "end": { - "line": 1596, + "line": 1597, "column": 41 } }, "object": { "type": "Identifier", - "start": 57719, - "end": 57723, + "start": 57755, + "end": 57759, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 12 }, "end": { - "line": 1596, + "line": 1597, "column": 16 }, "identifierName": "math" @@ -28935,15 +29051,15 @@ }, "property": { "type": "Identifier", - "start": 57724, - "end": 57748, + "start": 57760, + "end": 57784, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 17 }, "end": { - "line": 1596, + "line": 1597, "column": 41 }, "identifierName": "quaternionToRotationMat4" @@ -28955,44 +29071,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 57749, - "end": 57765, + "start": 57785, + "end": 57801, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 42 }, "end": { - "line": 1596, + "line": 1597, "column": 58 } }, "object": { "type": "ThisExpression", - "start": 57749, - "end": 57753, + "start": 57785, + "end": 57789, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 42 }, "end": { - "line": 1596, + "line": 1597, "column": 46 } } }, "property": { "type": "Identifier", - "start": 57754, - "end": 57765, + "start": 57790, + "end": 57801, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 47 }, "end": { - "line": 1596, + "line": 1597, "column": 58 }, "identifierName": "_quaternion" @@ -29003,44 +29119,44 @@ }, { "type": "MemberExpression", - "start": 57767, - "end": 57792, + "start": 57803, + "end": 57828, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 60 }, "end": { - "line": 1596, + "line": 1597, "column": 85 } }, "object": { "type": "ThisExpression", - "start": 57767, - "end": 57771, + "start": 57803, + "end": 57807, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 60 }, "end": { - "line": 1596, + "line": 1597, "column": 64 } } }, "property": { "type": "Identifier", - "start": 57772, - "end": 57792, + "start": 57808, + "end": 57828, "loc": { "start": { - "line": 1596, + "line": 1597, "column": 65 }, "end": { - "line": 1596, + "line": 1597, "column": 85 }, "identifierName": "_worldRotationMatrix" @@ -29054,57 +29170,57 @@ }, { "type": "ExpressionStatement", - "start": 57807, - "end": 57877, + "start": 57843, + "end": 57913, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 12 }, "end": { - "line": 1597, + "line": 1598, "column": 82 } }, "expression": { "type": "CallExpression", - "start": 57807, - "end": 57876, + "start": 57843, + "end": 57912, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 12 }, "end": { - "line": 1597, + "line": 1598, "column": 81 } }, "callee": { "type": "MemberExpression", - "start": 57807, - "end": 57831, + "start": 57843, + "end": 57867, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 12 }, "end": { - "line": 1597, + "line": 1598, "column": 36 } }, "object": { "type": "Identifier", - "start": 57807, - "end": 57811, + "start": 57843, + "end": 57847, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 12 }, "end": { - "line": 1597, + "line": 1598, "column": 16 }, "identifierName": "math" @@ -29113,15 +29229,15 @@ }, "property": { "type": "Identifier", - "start": 57812, - "end": 57831, + "start": 57848, + "end": 57867, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 17 }, "end": { - "line": 1597, + "line": 1598, "column": 36 }, "identifierName": "conjugateQuaternion" @@ -29133,44 +29249,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 57832, - "end": 57848, + "start": 57868, + "end": 57884, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 37 }, "end": { - "line": 1597, + "line": 1598, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 57832, - "end": 57836, + "start": 57868, + "end": 57872, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 37 }, "end": { - "line": 1597, + "line": 1598, "column": 41 } } }, "property": { "type": "Identifier", - "start": 57837, - "end": 57848, + "start": 57873, + "end": 57884, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 42 }, "end": { - "line": 1597, + "line": 1598, "column": 53 }, "identifierName": "_quaternion" @@ -29181,44 +29297,44 @@ }, { "type": "MemberExpression", - "start": 57850, - "end": 57875, + "start": 57886, + "end": 57911, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 55 }, "end": { - "line": 1597, + "line": 1598, "column": 80 } }, "object": { "type": "ThisExpression", - "start": 57850, - "end": 57854, + "start": 57886, + "end": 57890, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 55 }, "end": { - "line": 1597, + "line": 1598, "column": 59 } } }, "property": { "type": "Identifier", - "start": 57855, - "end": 57875, + "start": 57891, + "end": 57911, "loc": { "start": { - "line": 1597, + "line": 1598, "column": 60 }, "end": { - "line": 1597, + "line": 1598, "column": 80 }, "identifierName": "_conjugateQuaternion" @@ -29232,57 +29348,57 @@ }, { "type": "ExpressionStatement", - "start": 57890, - "end": 57974, + "start": 57926, + "end": 58010, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 12 }, "end": { - "line": 1598, + "line": 1599, "column": 96 } }, "expression": { "type": "CallExpression", - "start": 57890, - "end": 57973, + "start": 57926, + "end": 58009, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 12 }, "end": { - "line": 1598, + "line": 1599, "column": 95 } }, "callee": { "type": "MemberExpression", - "start": 57890, - "end": 57919, + "start": 57926, + "end": 57955, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 12 }, "end": { - "line": 1598, + "line": 1599, "column": 41 } }, "object": { "type": "Identifier", - "start": 57890, - "end": 57894, + "start": 57926, + "end": 57930, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 12 }, "end": { - "line": 1598, + "line": 1599, "column": 16 }, "identifierName": "math" @@ -29291,15 +29407,15 @@ }, "property": { "type": "Identifier", - "start": 57895, - "end": 57919, + "start": 57931, + "end": 57955, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 17 }, "end": { - "line": 1598, + "line": 1599, "column": 41 }, "identifierName": "quaternionToRotationMat4" @@ -29311,44 +29427,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 57920, - "end": 57936, + "start": 57956, + "end": 57972, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 42 }, "end": { - "line": 1598, + "line": 1599, "column": 58 } }, "object": { "type": "ThisExpression", - "start": 57920, - "end": 57924, + "start": 57956, + "end": 57960, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 42 }, "end": { - "line": 1598, + "line": 1599, "column": 46 } } }, "property": { "type": "Identifier", - "start": 57925, - "end": 57936, + "start": 57961, + "end": 57972, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 47 }, "end": { - "line": 1598, + "line": 1599, "column": 58 }, "identifierName": "_quaternion" @@ -29359,44 +29475,44 @@ }, { "type": "MemberExpression", - "start": 57938, - "end": 57972, + "start": 57974, + "end": 58008, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 60 }, "end": { - "line": 1598, + "line": 1599, "column": 94 } }, "object": { "type": "ThisExpression", - "start": 57938, - "end": 57942, + "start": 57974, + "end": 57978, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 60 }, "end": { - "line": 1598, + "line": 1599, "column": 64 } } }, "property": { "type": "Identifier", - "start": 57943, - "end": 57972, + "start": 57979, + "end": 58008, "loc": { "start": { - "line": 1598, + "line": 1599, "column": 65 }, "end": { - "line": 1598, + "line": 1599, "column": 94 }, "identifierName": "_worldRotationMatrixConjugate" @@ -29410,86 +29526,86 @@ }, { "type": "ExpressionStatement", - "start": 57987, - "end": 58031, + "start": 58023, + "end": 58067, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 12 }, "end": { - "line": 1599, + "line": 1600, "column": 56 } }, "expression": { "type": "CallExpression", - "start": 57987, - "end": 58030, + "start": 58023, + "end": 58066, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 12 }, "end": { - "line": 1599, + "line": 1600, "column": 55 } }, "callee": { "type": "MemberExpression", - "start": 57987, - "end": 58003, + "start": 58023, + "end": 58039, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 12 }, "end": { - "line": 1599, + "line": 1600, "column": 28 } }, "object": { "type": "MemberExpression", - "start": 57987, - "end": 57999, + "start": 58023, + "end": 58035, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 12 }, "end": { - "line": 1599, + "line": 1600, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 57987, - "end": 57991, + "start": 58023, + "end": 58027, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 12 }, "end": { - "line": 1599, + "line": 1600, "column": 16 } } }, "property": { "type": "Identifier", - "start": 57992, - "end": 57999, + "start": 58028, + "end": 58035, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 17 }, "end": { - "line": 1599, + "line": 1600, "column": 24 }, "identifierName": "_matrix" @@ -29500,15 +29616,15 @@ }, "property": { "type": "Identifier", - "start": 58000, - "end": 58003, + "start": 58036, + "end": 58039, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 25 }, "end": { - "line": 1599, + "line": 1600, "column": 28 }, "identifierName": "set" @@ -29520,44 +29636,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 58004, - "end": 58029, + "start": 58040, + "end": 58065, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 29 }, "end": { - "line": 1599, + "line": 1600, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 58004, - "end": 58008, + "start": 58040, + "end": 58044, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 29 }, "end": { - "line": 1599, + "line": 1600, "column": 33 } } }, "property": { "type": "Identifier", - "start": 58009, - "end": 58029, + "start": 58045, + "end": 58065, "loc": { "start": { - "line": 1599, + "line": 1600, "column": 34 }, "end": { - "line": 1599, + "line": 1600, "column": 54 }, "identifierName": "_worldRotationMatrix" @@ -29571,57 +29687,57 @@ }, { "type": "ExpressionStatement", - "start": 58044, - "end": 58094, + "start": 58080, + "end": 58130, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 12 }, "end": { - "line": 1600, + "line": 1601, "column": 62 } }, "expression": { "type": "CallExpression", - "start": 58044, - "end": 58093, + "start": 58080, + "end": 58129, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 12 }, "end": { - "line": 1600, + "line": 1601, "column": 61 } }, "callee": { "type": "MemberExpression", - "start": 58044, - "end": 58063, + "start": 58080, + "end": 58099, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 12 }, "end": { - "line": 1600, + "line": 1601, "column": 31 } }, "object": { "type": "Identifier", - "start": 58044, - "end": 58048, + "start": 58080, + "end": 58084, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 12 }, "end": { - "line": 1600, + "line": 1601, "column": 16 }, "identifierName": "math" @@ -29630,15 +29746,15 @@ }, "property": { "type": "Identifier", - "start": 58049, - "end": 58063, + "start": 58085, + "end": 58099, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 17 }, "end": { - "line": 1600, + "line": 1601, "column": 31 }, "identifierName": "translateMat4v" @@ -29650,44 +29766,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 58064, - "end": 58078, + "start": 58100, + "end": 58114, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 32 }, "end": { - "line": 1600, + "line": 1601, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 58064, - "end": 58068, + "start": 58100, + "end": 58104, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 32 }, "end": { - "line": 1600, + "line": 1601, "column": 36 } } }, "property": { "type": "Identifier", - "start": 58069, - "end": 58078, + "start": 58105, + "end": 58114, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 37 }, "end": { - "line": 1600, + "line": 1601, "column": 46 }, "identifierName": "_position" @@ -29698,44 +29814,44 @@ }, { "type": "MemberExpression", - "start": 58080, - "end": 58092, + "start": 58116, + "end": 58128, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 48 }, "end": { - "line": 1600, + "line": 1601, "column": 60 } }, "object": { "type": "ThisExpression", - "start": 58080, - "end": 58084, + "start": 58116, + "end": 58120, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 48 }, "end": { - "line": 1600, + "line": 1601, "column": 52 } } }, "property": { "type": "Identifier", - "start": 58085, - "end": 58092, + "start": 58121, + "end": 58128, "loc": { "start": { - "line": 1600, + "line": 1601, "column": 53 }, "end": { - "line": 1600, + "line": 1601, "column": 60 }, "identifierName": "_matrix" @@ -29749,73 +29865,73 @@ }, { "type": "ExpressionStatement", - "start": 58107, - "end": 58133, + "start": 58143, + "end": 58169, "loc": { "start": { - "line": 1601, + "line": 1602, "column": 12 }, "end": { - "line": 1601, + "line": 1602, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 58107, - "end": 58132, + "start": 58143, + "end": 58168, "loc": { "start": { - "line": 1601, + "line": 1602, "column": 12 }, "end": { - "line": 1601, + "line": 1602, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58107, - "end": 58124, + "start": 58143, + "end": 58160, "loc": { "start": { - "line": 1601, + "line": 1602, "column": 12 }, "end": { - "line": 1601, + "line": 1602, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 58107, - "end": 58111, + "start": 58143, + "end": 58147, "loc": { "start": { - "line": 1601, + "line": 1602, "column": 12 }, "end": { - "line": 1601, + "line": 1602, "column": 16 } } }, "property": { "type": "Identifier", - "start": 58112, - "end": 58124, + "start": 58148, + "end": 58160, "loc": { "start": { - "line": 1601, + "line": 1602, "column": 17 }, "end": { - "line": 1601, + "line": 1602, "column": 29 }, "identifierName": "_matrixDirty" @@ -29826,15 +29942,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58127, - "end": 58132, + "start": 58163, + "end": 58168, "loc": { "start": { - "line": 1601, + "line": 1602, "column": 32 }, "end": { - "line": 1601, + "line": 1602, "column": 37 } }, @@ -29855,15 +29971,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the conjugate of the SceneModel's local modeling rotation transform matrix.\n *\n * This is used for RTC view matrix management in renderers.\n *\n * @type {Number[]}\n ", - "start": 58155, - "end": 58357, + "start": 58191, + "end": 58393, "loc": { "start": { - "line": 1605, + "line": 1606, "column": 4 }, "end": { - "line": 1611, + "line": 1612, "column": 7 } } @@ -29872,15 +29988,15 @@ }, { "type": "ClassMethod", - "start": 58362, - "end": 58530, + "start": 58398, + "end": 58566, "loc": { "start": { - "line": 1612, + "line": 1613, "column": 4 }, "end": { - "line": 1617, + "line": 1618, "column": 5 } }, @@ -29888,15 +30004,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 58366, - "end": 58389, + "start": 58402, + "end": 58425, "loc": { "start": { - "line": 1612, + "line": 1613, "column": 8 }, "end": { - "line": 1612, + "line": 1613, "column": 31 }, "identifierName": "rotationMatrixConjugate" @@ -29911,73 +30027,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 58392, - "end": 58530, + "start": 58428, + "end": 58566, "loc": { "start": { - "line": 1612, + "line": 1613, "column": 34 }, "end": { - "line": 1617, + "line": 1618, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 58402, - "end": 58473, + "start": 58438, + "end": 58509, "loc": { "start": { - "line": 1613, + "line": 1614, "column": 8 }, "end": { - "line": 1615, + "line": 1616, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 58406, - "end": 58423, + "start": 58442, + "end": 58459, "loc": { "start": { - "line": 1613, + "line": 1614, "column": 12 }, "end": { - "line": 1613, + "line": 1614, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 58406, - "end": 58410, + "start": 58442, + "end": 58446, "loc": { "start": { - "line": 1613, + "line": 1614, "column": 12 }, "end": { - "line": 1613, + "line": 1614, "column": 16 } } }, "property": { "type": "Identifier", - "start": 58411, - "end": 58423, + "start": 58447, + "end": 58459, "loc": { "start": { - "line": 1613, + "line": 1614, "column": 17 }, "end": { - "line": 1613, + "line": 1614, "column": 29 }, "identifierName": "_matrixDirty" @@ -29988,87 +30104,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 58425, - "end": 58473, + "start": 58461, + "end": 58509, "loc": { "start": { - "line": 1613, + "line": 1614, "column": 31 }, "end": { - "line": 1615, + "line": 1616, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 58439, - "end": 58463, + "start": 58475, + "end": 58499, "loc": { "start": { - "line": 1614, + "line": 1615, "column": 12 }, "end": { - "line": 1614, + "line": 1615, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 58439, - "end": 58462, + "start": 58475, + "end": 58498, "loc": { "start": { - "line": 1614, + "line": 1615, "column": 12 }, "end": { - "line": 1614, + "line": 1615, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 58439, - "end": 58460, + "start": 58475, + "end": 58496, "loc": { "start": { - "line": 1614, + "line": 1615, "column": 12 }, "end": { - "line": 1614, + "line": 1615, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 58439, - "end": 58443, + "start": 58475, + "end": 58479, "loc": { "start": { - "line": 1614, + "line": 1615, "column": 12 }, "end": { - "line": 1614, + "line": 1615, "column": 16 } } }, "property": { "type": "Identifier", - "start": 58444, - "end": 58460, + "start": 58480, + "end": 58496, "loc": { "start": { - "line": 1614, + "line": 1615, "column": 17 }, "end": { - "line": 1614, + "line": 1615, "column": 33 }, "identifierName": "_rebuildMatrices" @@ -30087,58 +30203,58 @@ }, { "type": "ReturnStatement", - "start": 58482, - "end": 58524, + "start": 58518, + "end": 58560, "loc": { "start": { - "line": 1616, + "line": 1617, "column": 8 }, "end": { - "line": 1616, + "line": 1617, "column": 50 } }, "argument": { "type": "MemberExpression", - "start": 58489, - "end": 58523, + "start": 58525, + "end": 58559, "loc": { "start": { - "line": 1616, + "line": 1617, "column": 15 }, "end": { - "line": 1616, + "line": 1617, "column": 49 } }, "object": { "type": "ThisExpression", - "start": 58489, - "end": 58493, + "start": 58525, + "end": 58529, "loc": { "start": { - "line": 1616, + "line": 1617, "column": 15 }, "end": { - "line": 1616, + "line": 1617, "column": 19 } } }, "property": { "type": "Identifier", - "start": 58494, - "end": 58523, + "start": 58530, + "end": 58559, "loc": { "start": { - "line": 1616, + "line": 1617, "column": 20 }, "end": { - "line": 1616, + "line": 1617, "column": 49 }, "identifierName": "_worldRotationMatrixConjugate" @@ -30155,15 +30271,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the conjugate of the SceneModel's local modeling rotation transform matrix.\n *\n * This is used for RTC view matrix management in renderers.\n *\n * @type {Number[]}\n ", - "start": 58155, - "end": 58357, + "start": 58191, + "end": 58393, "loc": { "start": { - "line": 1605, + "line": 1606, "column": 4 }, "end": { - "line": 1611, + "line": 1612, "column": 7 } } @@ -30172,15 +30288,15 @@ }, { "type": "ClassMethod", - "start": 58536, - "end": 58632, + "start": 58572, + "end": 58668, "loc": { "start": { - "line": 1619, + "line": 1620, "column": 4 }, "end": { - "line": 1622, + "line": 1623, "column": 5 } }, @@ -30188,15 +30304,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 58536, - "end": 58556, + "start": 58572, + "end": 58592, "loc": { "start": { - "line": 1619, + "line": 1620, "column": 4 }, "end": { - "line": 1619, + "line": 1620, "column": 24 }, "identifierName": "_setWorldMatrixDirty" @@ -30211,88 +30327,88 @@ "params": [], "body": { "type": "BlockStatement", - "start": 58559, - "end": 58632, + "start": 58595, + "end": 58668, "loc": { "start": { - "line": 1619, + "line": 1620, "column": 27 }, "end": { - "line": 1622, + "line": 1623, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 58569, - "end": 58594, + "start": 58605, + "end": 58630, "loc": { "start": { - "line": 1620, + "line": 1621, "column": 8 }, "end": { - "line": 1620, + "line": 1621, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 58569, - "end": 58593, + "start": 58605, + "end": 58629, "loc": { "start": { - "line": 1620, + "line": 1621, "column": 8 }, "end": { - "line": 1620, + "line": 1621, "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58569, - "end": 58586, + "start": 58605, + "end": 58622, "loc": { "start": { - "line": 1620, + "line": 1621, "column": 8 }, "end": { - "line": 1620, + "line": 1621, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 58569, - "end": 58573, + "start": 58605, + "end": 58609, "loc": { "start": { - "line": 1620, + "line": 1621, "column": 8 }, "end": { - "line": 1620, + "line": 1621, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58574, - "end": 58586, + "start": 58610, + "end": 58622, "loc": { "start": { - "line": 1620, + "line": 1621, "column": 13 }, "end": { - "line": 1620, + "line": 1621, "column": 25 }, "identifierName": "_matrixDirty" @@ -30303,15 +30419,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58589, - "end": 58593, + "start": 58625, + "end": 58629, "loc": { "start": { - "line": 1620, + "line": 1621, "column": 28 }, "end": { - "line": 1620, + "line": 1621, "column": 32 } }, @@ -30321,73 +30437,73 @@ }, { "type": "ExpressionStatement", - "start": 58603, - "end": 58626, + "start": 58639, + "end": 58662, "loc": { "start": { - "line": 1621, + "line": 1622, "column": 8 }, "end": { - "line": 1621, + "line": 1622, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 58603, - "end": 58625, + "start": 58639, + "end": 58661, "loc": { "start": { - "line": 1621, + "line": 1622, "column": 8 }, "end": { - "line": 1621, + "line": 1622, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58603, - "end": 58618, + "start": 58639, + "end": 58654, "loc": { "start": { - "line": 1621, + "line": 1622, "column": 8 }, "end": { - "line": 1621, + "line": 1622, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 58603, - "end": 58607, + "start": 58639, + "end": 58643, "loc": { "start": { - "line": 1621, + "line": 1622, "column": 8 }, "end": { - "line": 1621, + "line": 1622, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58608, - "end": 58618, + "start": 58644, + "end": 58654, "loc": { "start": { - "line": 1621, + "line": 1622, "column": 13 }, "end": { - "line": 1621, + "line": 1622, "column": 23 }, "identifierName": "_aabbDirty" @@ -30398,15 +30514,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58621, - "end": 58625, + "start": 58657, + "end": 58661, "loc": { "start": { - "line": 1621, + "line": 1622, "column": 26 }, "end": { - "line": 1621, + "line": 1622, "column": 30 } }, @@ -30420,15 +30536,15 @@ }, { "type": "ClassMethod", - "start": 58638, - "end": 58767, + "start": 58674, + "end": 58803, "loc": { "start": { - "line": 1624, + "line": 1625, "column": 4 }, "end": { - "line": 1628, + "line": 1629, "column": 5 } }, @@ -30436,15 +30552,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 58638, - "end": 58653, + "start": 58674, + "end": 58689, "loc": { "start": { - "line": 1624, + "line": 1625, "column": 4 }, "end": { - "line": 1624, + "line": 1625, "column": 19 }, "identifierName": "_transformDirty" @@ -30459,88 +30575,88 @@ "params": [], "body": { "type": "BlockStatement", - "start": 58656, - "end": 58767, + "start": 58692, + "end": 58803, "loc": { "start": { - "line": 1624, + "line": 1625, "column": 22 }, "end": { - "line": 1628, + "line": 1629, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 58666, - "end": 58691, + "start": 58702, + "end": 58727, "loc": { "start": { - "line": 1625, + "line": 1626, "column": 8 }, "end": { - "line": 1625, + "line": 1626, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 58666, - "end": 58690, + "start": 58702, + "end": 58726, "loc": { "start": { - "line": 1625, + "line": 1626, "column": 8 }, "end": { - "line": 1625, + "line": 1626, "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58666, - "end": 58683, + "start": 58702, + "end": 58719, "loc": { "start": { - "line": 1625, + "line": 1626, "column": 8 }, "end": { - "line": 1625, + "line": 1626, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 58666, - "end": 58670, + "start": 58702, + "end": 58706, "loc": { "start": { - "line": 1625, + "line": 1626, "column": 8 }, "end": { - "line": 1625, + "line": 1626, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58671, - "end": 58683, + "start": 58707, + "end": 58719, "loc": { "start": { - "line": 1625, + "line": 1626, "column": 13 }, "end": { - "line": 1625, + "line": 1626, "column": 25 }, "identifierName": "_matrixDirty" @@ -30551,15 +30667,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58686, - "end": 58690, + "start": 58722, + "end": 58726, "loc": { "start": { - "line": 1625, + "line": 1626, "column": 28 }, "end": { - "line": 1625, + "line": 1626, "column": 32 } }, @@ -30569,73 +30685,73 @@ }, { "type": "ExpressionStatement", - "start": 58700, - "end": 58723, + "start": 58736, + "end": 58759, "loc": { "start": { - "line": 1626, + "line": 1627, "column": 8 }, "end": { - "line": 1626, + "line": 1627, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 58700, - "end": 58722, + "start": 58736, + "end": 58758, "loc": { "start": { - "line": 1626, + "line": 1627, "column": 8 }, "end": { - "line": 1626, + "line": 1627, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58700, - "end": 58715, + "start": 58736, + "end": 58751, "loc": { "start": { - "line": 1626, + "line": 1627, "column": 8 }, "end": { - "line": 1626, + "line": 1627, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 58700, - "end": 58704, + "start": 58736, + "end": 58740, "loc": { "start": { - "line": 1626, + "line": 1627, "column": 8 }, "end": { - "line": 1626, + "line": 1627, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58705, - "end": 58715, + "start": 58741, + "end": 58751, "loc": { "start": { - "line": 1626, + "line": 1627, "column": 13 }, "end": { - "line": 1626, + "line": 1627, "column": 23 }, "identifierName": "_aabbDirty" @@ -30646,15 +30762,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58718, - "end": 58722, + "start": 58754, + "end": 58758, "loc": { "start": { - "line": 1626, + "line": 1627, "column": 26 }, "end": { - "line": 1626, + "line": 1627, "column": 30 } }, @@ -30664,87 +30780,87 @@ }, { "type": "ExpressionStatement", - "start": 58732, - "end": 58761, + "start": 58768, + "end": 58797, "loc": { "start": { - "line": 1627, + "line": 1628, "column": 8 }, "end": { - "line": 1627, + "line": 1628, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 58732, - "end": 58760, + "start": 58768, + "end": 58796, "loc": { "start": { - "line": 1627, + "line": 1628, "column": 8 }, "end": { - "line": 1627, + "line": 1628, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58732, - "end": 58753, + "start": 58768, + "end": 58789, "loc": { "start": { - "line": 1627, + "line": 1628, "column": 8 }, "end": { - "line": 1627, + "line": 1628, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 58732, - "end": 58742, + "start": 58768, + "end": 58778, "loc": { "start": { - "line": 1627, + "line": 1628, "column": 8 }, "end": { - "line": 1627, + "line": 1628, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 58732, - "end": 58736, + "start": 58768, + "end": 58772, "loc": { "start": { - "line": 1627, + "line": 1628, "column": 8 }, "end": { - "line": 1627, + "line": 1628, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58737, - "end": 58742, + "start": 58773, + "end": 58778, "loc": { "start": { - "line": 1627, + "line": 1628, "column": 13 }, "end": { - "line": 1627, + "line": 1628, "column": 18 }, "identifierName": "scene" @@ -30755,15 +30871,15 @@ }, "property": { "type": "Identifier", - "start": 58743, - "end": 58753, + "start": 58779, + "end": 58789, "loc": { "start": { - "line": 1627, + "line": 1628, "column": 19 }, "end": { - "line": 1627, + "line": 1628, "column": 29 }, "identifierName": "_aabbDirty" @@ -30774,15 +30890,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58756, - "end": 58760, + "start": 58792, + "end": 58796, "loc": { "start": { - "line": 1627, + "line": 1628, "column": 32 }, "end": { - "line": 1627, + "line": 1628, "column": 36 } }, @@ -30796,15 +30912,15 @@ }, { "type": "ClassMethod", - "start": 58773, - "end": 59152, + "start": 58809, + "end": 59188, "loc": { "start": { - "line": 1630, + "line": 1631, "column": 4 }, "end": { - "line": 1638, + "line": 1639, "column": 5 } }, @@ -30812,15 +30928,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 58773, - "end": 58789, + "start": 58809, + "end": 58825, "loc": { "start": { - "line": 1630, + "line": 1631, "column": 4 }, "end": { - "line": 1630, + "line": 1631, "column": 20 }, "identifierName": "_sceneModelDirty" @@ -30835,102 +30951,102 @@ "params": [], "body": { "type": "BlockStatement", - "start": 58792, - "end": 59152, + "start": 58828, + "end": 59188, "loc": { "start": { - "line": 1630, + "line": 1631, "column": 23 }, "end": { - "line": 1638, + "line": 1639, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 58802, - "end": 58831, + "start": 58838, + "end": 58867, "loc": { "start": { - "line": 1631, + "line": 1632, "column": 8 }, "end": { - "line": 1631, + "line": 1632, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 58802, - "end": 58830, + "start": 58838, + "end": 58866, "loc": { "start": { - "line": 1631, + "line": 1632, "column": 8 }, "end": { - "line": 1631, + "line": 1632, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58802, - "end": 58823, + "start": 58838, + "end": 58859, "loc": { "start": { - "line": 1631, + "line": 1632, "column": 8 }, "end": { - "line": 1631, + "line": 1632, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 58802, - "end": 58812, + "start": 58838, + "end": 58848, "loc": { "start": { - "line": 1631, + "line": 1632, "column": 8 }, "end": { - "line": 1631, + "line": 1632, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 58802, - "end": 58806, + "start": 58838, + "end": 58842, "loc": { "start": { - "line": 1631, + "line": 1632, "column": 8 }, "end": { - "line": 1631, + "line": 1632, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58807, - "end": 58812, + "start": 58843, + "end": 58848, "loc": { "start": { - "line": 1631, + "line": 1632, "column": 13 }, "end": { - "line": 1631, + "line": 1632, "column": 18 }, "identifierName": "scene" @@ -30941,15 +31057,15 @@ }, "property": { "type": "Identifier", - "start": 58813, - "end": 58823, + "start": 58849, + "end": 58859, "loc": { "start": { - "line": 1631, + "line": 1632, "column": 19 }, "end": { - "line": 1631, + "line": 1632, "column": 29 }, "identifierName": "_aabbDirty" @@ -30960,15 +31076,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58826, - "end": 58830, + "start": 58862, + "end": 58866, "loc": { "start": { - "line": 1631, + "line": 1632, "column": 32 }, "end": { - "line": 1631, + "line": 1632, "column": 36 } }, @@ -30978,73 +31094,73 @@ }, { "type": "ExpressionStatement", - "start": 58840, - "end": 58863, + "start": 58876, + "end": 58899, "loc": { "start": { - "line": 1632, + "line": 1633, "column": 8 }, "end": { - "line": 1632, + "line": 1633, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 58840, - "end": 58862, + "start": 58876, + "end": 58898, "loc": { "start": { - "line": 1632, + "line": 1633, "column": 8 }, "end": { - "line": 1632, + "line": 1633, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58840, - "end": 58855, + "start": 58876, + "end": 58891, "loc": { "start": { - "line": 1632, + "line": 1633, "column": 8 }, "end": { - "line": 1632, + "line": 1633, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 58840, - "end": 58844, + "start": 58876, + "end": 58880, "loc": { "start": { - "line": 1632, + "line": 1633, "column": 8 }, "end": { - "line": 1632, + "line": 1633, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58845, - "end": 58855, + "start": 58881, + "end": 58891, "loc": { "start": { - "line": 1632, + "line": 1633, "column": 13 }, "end": { - "line": 1632, + "line": 1633, "column": 23 }, "identifierName": "_aabbDirty" @@ -31055,15 +31171,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58858, - "end": 58862, + "start": 58894, + "end": 58898, "loc": { "start": { - "line": 1632, + "line": 1633, "column": 26 }, "end": { - "line": 1632, + "line": 1633, "column": 30 } }, @@ -31073,87 +31189,87 @@ }, { "type": "ExpressionStatement", - "start": 58872, - "end": 58901, + "start": 58908, + "end": 58937, "loc": { "start": { - "line": 1633, + "line": 1634, "column": 8 }, "end": { - "line": 1633, + "line": 1634, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 58872, - "end": 58900, + "start": 58908, + "end": 58936, "loc": { "start": { - "line": 1633, + "line": 1634, "column": 8 }, "end": { - "line": 1633, + "line": 1634, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58872, - "end": 58893, + "start": 58908, + "end": 58929, "loc": { "start": { - "line": 1633, + "line": 1634, "column": 8 }, "end": { - "line": 1633, + "line": 1634, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 58872, - "end": 58882, + "start": 58908, + "end": 58918, "loc": { "start": { - "line": 1633, + "line": 1634, "column": 8 }, "end": { - "line": 1633, + "line": 1634, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 58872, - "end": 58876, + "start": 58908, + "end": 58912, "loc": { "start": { - "line": 1633, + "line": 1634, "column": 8 }, "end": { - "line": 1633, + "line": 1634, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58877, - "end": 58882, + "start": 58913, + "end": 58918, "loc": { "start": { - "line": 1633, + "line": 1634, "column": 13 }, "end": { - "line": 1633, + "line": 1634, "column": 18 }, "identifierName": "scene" @@ -31164,15 +31280,15 @@ }, "property": { "type": "Identifier", - "start": 58883, - "end": 58893, + "start": 58919, + "end": 58929, "loc": { "start": { - "line": 1633, + "line": 1634, "column": 19 }, "end": { - "line": 1633, + "line": 1634, "column": 29 }, "identifierName": "_aabbDirty" @@ -31183,15 +31299,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58896, - "end": 58900, + "start": 58932, + "end": 58936, "loc": { "start": { - "line": 1633, + "line": 1634, "column": 32 }, "end": { - "line": 1633, + "line": 1634, "column": 36 } }, @@ -31201,73 +31317,73 @@ }, { "type": "ExpressionStatement", - "start": 58910, - "end": 58935, + "start": 58946, + "end": 58971, "loc": { "start": { - "line": 1634, + "line": 1635, "column": 8 }, "end": { - "line": 1634, + "line": 1635, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 58910, - "end": 58934, + "start": 58946, + "end": 58970, "loc": { "start": { - "line": 1634, + "line": 1635, "column": 8 }, "end": { - "line": 1634, + "line": 1635, "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 58910, - "end": 58927, + "start": 58946, + "end": 58963, "loc": { "start": { - "line": 1634, + "line": 1635, "column": 8 }, "end": { - "line": 1634, + "line": 1635, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 58910, - "end": 58914, + "start": 58946, + "end": 58950, "loc": { "start": { - "line": 1634, + "line": 1635, "column": 8 }, "end": { - "line": 1634, + "line": 1635, "column": 12 } } }, "property": { "type": "Identifier", - "start": 58915, - "end": 58927, + "start": 58951, + "end": 58963, "loc": { "start": { - "line": 1634, + "line": 1635, "column": 13 }, "end": { - "line": 1634, + "line": 1635, "column": 25 }, "identifierName": "_matrixDirty" @@ -31278,15 +31394,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 58930, - "end": 58934, + "start": 58966, + "end": 58970, "loc": { "start": { - "line": 1634, + "line": 1635, "column": 28 }, "end": { - "line": 1634, + "line": 1635, "column": 32 } }, @@ -31296,58 +31412,58 @@ }, { "type": "ForStatement", - "start": 58944, - "end": 59146, + "start": 58980, + "end": 59182, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 8 }, "end": { - "line": 1637, + "line": 1638, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 58949, - "end": 58989, + "start": 58985, + "end": 59025, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 13 }, "end": { - "line": 1635, + "line": 1636, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 58953, - "end": 58958, + "start": 58989, + "end": 58994, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 17 }, "end": { - "line": 1635, + "line": 1636, "column": 22 } }, "id": { "type": "Identifier", - "start": 58953, - "end": 58954, + "start": 58989, + "end": 58990, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 17 }, "end": { - "line": 1635, + "line": 1636, "column": 18 }, "identifierName": "i" @@ -31356,15 +31472,15 @@ }, "init": { "type": "NumericLiteral", - "start": 58957, - "end": 58958, + "start": 58993, + "end": 58994, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 21 }, "end": { - "line": 1635, + "line": 1636, "column": 22 } }, @@ -31377,29 +31493,29 @@ }, { "type": "VariableDeclarator", - "start": 58960, - "end": 58989, + "start": 58996, + "end": 59025, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 24 }, "end": { - "line": 1635, + "line": 1636, "column": 53 } }, "id": { "type": "Identifier", - "start": 58960, - "end": 58963, + "start": 58996, + "end": 58999, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 24 }, "end": { - "line": 1635, + "line": 1636, "column": 27 }, "identifierName": "len" @@ -31408,58 +31524,58 @@ }, "init": { "type": "MemberExpression", - "start": 58966, - "end": 58989, + "start": 59002, + "end": 59025, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 30 }, "end": { - "line": 1635, + "line": 1636, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 58966, - "end": 58982, + "start": 59002, + "end": 59018, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 30 }, "end": { - "line": 1635, + "line": 1636, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 58966, - "end": 58970, + "start": 59002, + "end": 59006, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 30 }, "end": { - "line": 1635, + "line": 1636, "column": 34 } } }, "property": { "type": "Identifier", - "start": 58971, - "end": 58982, + "start": 59007, + "end": 59018, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 35 }, "end": { - "line": 1635, + "line": 1636, "column": 46 }, "identifierName": "_entityList" @@ -31470,15 +31586,15 @@ }, "property": { "type": "Identifier", - "start": 58983, - "end": 58989, + "start": 59019, + "end": 59025, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 47 }, "end": { - "line": 1635, + "line": 1636, "column": 53 }, "identifierName": "length" @@ -31493,29 +31609,29 @@ }, "test": { "type": "BinaryExpression", - "start": 58991, - "end": 58998, + "start": 59027, + "end": 59034, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 55 }, "end": { - "line": 1635, + "line": 1636, "column": 62 } }, "left": { "type": "Identifier", - "start": 58991, - "end": 58992, + "start": 59027, + "end": 59028, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 55 }, "end": { - "line": 1635, + "line": 1636, "column": 56 }, "identifierName": "i" @@ -31525,15 +31641,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 58995, - "end": 58998, + "start": 59031, + "end": 59034, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 59 }, "end": { - "line": 1635, + "line": 1636, "column": 62 }, "identifierName": "len" @@ -31543,15 +31659,15 @@ }, "update": { "type": "UpdateExpression", - "start": 59000, - "end": 59003, + "start": 59036, + "end": 59039, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 64 }, "end": { - "line": 1635, + "line": 1636, "column": 67 } }, @@ -31559,15 +31675,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 59000, - "end": 59001, + "start": 59036, + "end": 59037, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 64 }, "end": { - "line": 1635, + "line": 1636, "column": 65 }, "identifierName": "i" @@ -31577,115 +31693,115 @@ }, "body": { "type": "BlockStatement", - "start": 59005, - "end": 59146, + "start": 59041, + "end": 59182, "loc": { "start": { - "line": 1635, + "line": 1636, "column": 69 }, "end": { - "line": 1637, + "line": 1638, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 59019, - "end": 59058, + "start": 59055, + "end": 59094, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 12 }, "end": { - "line": 1636, + "line": 1637, "column": 51 } }, "expression": { "type": "CallExpression", - "start": 59019, - "end": 59057, + "start": 59055, + "end": 59093, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 12 }, "end": { - "line": 1636, + "line": 1637, "column": 50 } }, "callee": { "type": "MemberExpression", - "start": 59019, - "end": 59055, + "start": 59055, + "end": 59091, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 12 }, "end": { - "line": 1636, + "line": 1637, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 59019, - "end": 59038, + "start": 59055, + "end": 59074, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 12 }, "end": { - "line": 1636, + "line": 1637, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 59019, - "end": 59035, + "start": 59055, + "end": 59071, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 12 }, "end": { - "line": 1636, + "line": 1637, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 59019, - "end": 59023, + "start": 59055, + "end": 59059, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 12 }, "end": { - "line": 1636, + "line": 1637, "column": 16 } } }, "property": { "type": "Identifier", - "start": 59024, - "end": 59035, + "start": 59060, + "end": 59071, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 17 }, "end": { - "line": 1636, + "line": 1637, "column": 28 }, "identifierName": "_entityList" @@ -31696,15 +31812,15 @@ }, "property": { "type": "Identifier", - "start": 59036, - "end": 59037, + "start": 59072, + "end": 59073, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 29 }, "end": { - "line": 1636, + "line": 1637, "column": 30 }, "identifierName": "i" @@ -31715,15 +31831,15 @@ }, "property": { "type": "Identifier", - "start": 59039, - "end": 59055, + "start": 59075, + "end": 59091, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 32 }, "end": { - "line": 1636, + "line": 1637, "column": 48 }, "identifierName": "_sceneModelDirty" @@ -31738,15 +31854,15 @@ { "type": "CommentLine", "value": " Entities need to retransform their World AABBs by SceneModel's worldMatrix", - "start": 59059, - "end": 59136, + "start": 59095, + "end": 59172, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 52 }, "end": { - "line": 1636, + "line": 1637, "column": 129 } } @@ -31765,15 +31881,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n ", - "start": 59158, - "end": 59272, + "start": 59194, + "end": 59308, "loc": { "start": { - "line": 1640, + "line": 1641, "column": 4 }, "end": { - "line": 1645, + "line": 1646, "column": 7 } } @@ -31782,15 +31898,15 @@ }, { "type": "ClassMethod", - "start": 59277, - "end": 59330, + "start": 59313, + "end": 59366, "loc": { "start": { - "line": 1646, + "line": 1647, "column": 4 }, "end": { - "line": 1648, + "line": 1649, "column": 5 } }, @@ -31798,15 +31914,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 59281, - "end": 59292, + "start": 59317, + "end": 59328, "loc": { "start": { - "line": 1646, + "line": 1647, "column": 8 }, "end": { - "line": 1646, + "line": 1647, "column": 19 }, "identifierName": "worldMatrix" @@ -31821,73 +31937,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 59295, - "end": 59330, + "start": 59331, + "end": 59366, "loc": { "start": { - "line": 1646, + "line": 1647, "column": 22 }, "end": { - "line": 1648, + "line": 1649, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 59305, - "end": 59324, + "start": 59341, + "end": 59360, "loc": { "start": { - "line": 1647, + "line": 1648, "column": 8 }, "end": { - "line": 1647, + "line": 1648, "column": 27 } }, "argument": { "type": "MemberExpression", - "start": 59312, - "end": 59323, + "start": 59348, + "end": 59359, "loc": { "start": { - "line": 1647, + "line": 1648, "column": 15 }, "end": { - "line": 1647, + "line": 1648, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 59312, - "end": 59316, + "start": 59348, + "end": 59352, "loc": { "start": { - "line": 1647, + "line": 1648, "column": 15 }, "end": { - "line": 1647, + "line": 1648, "column": 19 } } }, "property": { "type": "Identifier", - "start": 59317, - "end": 59323, + "start": 59353, + "end": 59359, "loc": { "start": { - "line": 1647, + "line": 1648, "column": 20 }, "end": { - "line": 1647, + "line": 1648, "column": 26 }, "identifierName": "matrix" @@ -31905,15 +32021,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n ", - "start": 59158, - "end": 59272, + "start": 59194, + "end": 59308, "loc": { "start": { - "line": 1640, + "line": 1641, "column": 4 }, "end": { - "line": 1645, + "line": 1646, "column": 7 } } @@ -31923,15 +32039,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World normal matrix.\n *\n * @type {Number[]}\n ", - "start": 59336, - "end": 59428, + "start": 59372, + "end": 59464, "loc": { "start": { - "line": 1650, + "line": 1651, "column": 4 }, "end": { - "line": 1654, + "line": 1655, "column": 7 } } @@ -31940,15 +32056,15 @@ }, { "type": "ClassMethod", - "start": 59433, - "end": 59504, + "start": 59469, + "end": 59540, "loc": { "start": { - "line": 1655, + "line": 1656, "column": 4 }, "end": { - "line": 1657, + "line": 1658, "column": 5 } }, @@ -31956,15 +32072,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 59437, - "end": 59454, + "start": 59473, + "end": 59490, "loc": { "start": { - "line": 1655, + "line": 1656, "column": 8 }, "end": { - "line": 1655, + "line": 1656, "column": 25 }, "identifierName": "worldNormalMatrix" @@ -31979,73 +32095,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 59457, - "end": 59504, + "start": 59493, + "end": 59540, "loc": { "start": { - "line": 1655, + "line": 1656, "column": 28 }, "end": { - "line": 1657, + "line": 1658, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 59467, - "end": 59498, + "start": 59503, + "end": 59534, "loc": { "start": { - "line": 1656, + "line": 1657, "column": 8 }, "end": { - "line": 1656, + "line": 1657, "column": 39 } }, "argument": { "type": "MemberExpression", - "start": 59474, - "end": 59497, + "start": 59510, + "end": 59533, "loc": { "start": { - "line": 1656, + "line": 1657, "column": 15 }, "end": { - "line": 1656, + "line": 1657, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 59474, - "end": 59478, + "start": 59510, + "end": 59514, "loc": { "start": { - "line": 1656, + "line": 1657, "column": 15 }, "end": { - "line": 1656, + "line": 1657, "column": 19 } } }, "property": { "type": "Identifier", - "start": 59479, - "end": 59497, + "start": 59515, + "end": 59533, "loc": { "start": { - "line": 1656, + "line": 1657, "column": 20 }, "end": { - "line": 1656, + "line": 1657, "column": 38 }, "identifierName": "_worldNormalMatrix" @@ -32063,15 +32179,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World normal matrix.\n *\n * @type {Number[]}\n ", - "start": 59336, - "end": 59428, + "start": 59372, + "end": 59464, "loc": { "start": { - "line": 1650, + "line": 1651, "column": 4 }, "end": { - "line": 1654, + "line": 1655, "column": 7 } } @@ -32081,15 +32197,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the view matrix with which to\n * render this SceneModel. The view matrix is the concatenation of the\n * Camera view matrix with the Performance model's world (modeling) matrix.\n *\n * @private\n ", - "start": 59510, - "end": 59782, + "start": 59546, + "end": 59818, "loc": { "start": { - "line": 1659, + "line": 1660, "column": 4 }, "end": { - "line": 1665, + "line": 1666, "column": 7 } } @@ -32098,15 +32214,15 @@ }, { "type": "ClassMethod", - "start": 59787, - "end": 60364, + "start": 59823, + "end": 60400, "loc": { "start": { - "line": 1666, + "line": 1667, "column": 4 }, "end": { - "line": 1681, + "line": 1682, "column": 5 } }, @@ -32114,15 +32230,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 59791, - "end": 59801, + "start": 59827, + "end": 59837, "loc": { "start": { - "line": 1666, + "line": 1667, "column": 8 }, "end": { - "line": 1666, + "line": 1667, "column": 18 }, "identifierName": "viewMatrix" @@ -32137,44 +32253,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 59804, - "end": 60364, + "start": 59840, + "end": 60400, "loc": { "start": { - "line": 1666, + "line": 1667, "column": 21 }, "end": { - "line": 1681, + "line": 1682, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 59814, - "end": 59897, + "start": 59850, + "end": 59933, "loc": { "start": { - "line": 1667, + "line": 1668, "column": 8 }, "end": { - "line": 1669, + "line": 1670, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 59818, - "end": 59835, + "start": 59854, + "end": 59871, "loc": { "start": { - "line": 1667, + "line": 1668, "column": 12 }, "end": { - "line": 1667, + "line": 1668, "column": 29 } }, @@ -32182,44 +32298,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 59819, - "end": 59835, + "start": 59855, + "end": 59871, "loc": { "start": { - "line": 1667, + "line": 1668, "column": 13 }, "end": { - "line": 1667, + "line": 1668, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 59819, - "end": 59823, + "start": 59855, + "end": 59859, "loc": { "start": { - "line": 1667, + "line": 1668, "column": 13 }, "end": { - "line": 1667, + "line": 1668, "column": 17 } } }, "property": { "type": "Identifier", - "start": 59824, - "end": 59835, + "start": 59860, + "end": 59871, "loc": { "start": { - "line": 1667, + "line": 1668, "column": 18 }, "end": { - "line": 1667, + "line": 1668, "column": 29 }, "identifierName": "_viewMatrix" @@ -32234,101 +32350,101 @@ }, "consequent": { "type": "BlockStatement", - "start": 59837, - "end": 59897, + "start": 59873, + "end": 59933, "loc": { "start": { - "line": 1667, + "line": 1668, "column": 31 }, "end": { - "line": 1669, + "line": 1670, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 59851, - "end": 59887, + "start": 59887, + "end": 59923, "loc": { "start": { - "line": 1668, + "line": 1669, "column": 12 }, "end": { - "line": 1668, + "line": 1669, "column": 48 } }, "argument": { "type": "MemberExpression", - "start": 59858, - "end": 59886, + "start": 59894, + "end": 59922, "loc": { "start": { - "line": 1668, + "line": 1669, "column": 19 }, "end": { - "line": 1668, + "line": 1669, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 59858, - "end": 59875, + "start": 59894, + "end": 59911, "loc": { "start": { - "line": 1668, + "line": 1669, "column": 19 }, "end": { - "line": 1668, + "line": 1669, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 59858, - "end": 59868, + "start": 59894, + "end": 59904, "loc": { "start": { - "line": 1668, + "line": 1669, "column": 19 }, "end": { - "line": 1668, + "line": 1669, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 59858, - "end": 59862, + "start": 59894, + "end": 59898, "loc": { "start": { - "line": 1668, + "line": 1669, "column": 19 }, "end": { - "line": 1668, + "line": 1669, "column": 23 } } }, "property": { "type": "Identifier", - "start": 59863, - "end": 59868, + "start": 59899, + "end": 59904, "loc": { "start": { - "line": 1668, + "line": 1669, "column": 24 }, "end": { - "line": 1668, + "line": 1669, "column": 29 }, "identifierName": "scene" @@ -32339,15 +32455,15 @@ }, "property": { "type": "Identifier", - "start": 59869, - "end": 59875, + "start": 59905, + "end": 59911, "loc": { "start": { - "line": 1668, + "line": 1669, "column": 30 }, "end": { - "line": 1668, + "line": 1669, "column": 36 }, "identifierName": "camera" @@ -32358,15 +32474,15 @@ }, "property": { "type": "Identifier", - "start": 59876, - "end": 59886, + "start": 59912, + "end": 59922, "loc": { "start": { - "line": 1668, + "line": 1669, "column": 37 }, "end": { - "line": 1668, + "line": 1669, "column": 47 }, "identifierName": "viewMatrix" @@ -32383,58 +32499,58 @@ }, { "type": "IfStatement", - "start": 59906, - "end": 60019, + "start": 59942, + "end": 60055, "loc": { "start": { - "line": 1670, + "line": 1671, "column": 8 }, "end": { - "line": 1673, + "line": 1674, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 59910, - "end": 59927, + "start": 59946, + "end": 59963, "loc": { "start": { - "line": 1670, + "line": 1671, "column": 12 }, "end": { - "line": 1670, + "line": 1671, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 59910, - "end": 59914, + "start": 59946, + "end": 59950, "loc": { "start": { - "line": 1670, + "line": 1671, "column": 12 }, "end": { - "line": 1670, + "line": 1671, "column": 16 } } }, "property": { "type": "Identifier", - "start": 59915, - "end": 59927, + "start": 59951, + "end": 59963, "loc": { "start": { - "line": 1670, + "line": 1671, "column": 17 }, "end": { - "line": 1670, + "line": 1671, "column": 29 }, "identifierName": "_matrixDirty" @@ -32445,87 +32561,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 59929, - "end": 60019, + "start": 59965, + "end": 60055, "loc": { "start": { - "line": 1670, + "line": 1671, "column": 31 }, "end": { - "line": 1673, + "line": 1674, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 59943, - "end": 59967, + "start": 59979, + "end": 60003, "loc": { "start": { - "line": 1671, + "line": 1672, "column": 12 }, "end": { - "line": 1671, + "line": 1672, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 59943, - "end": 59966, + "start": 59979, + "end": 60002, "loc": { "start": { - "line": 1671, + "line": 1672, "column": 12 }, "end": { - "line": 1671, + "line": 1672, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 59943, - "end": 59964, + "start": 59979, + "end": 60000, "loc": { "start": { - "line": 1671, + "line": 1672, "column": 12 }, "end": { - "line": 1671, + "line": 1672, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 59943, - "end": 59947, + "start": 59979, + "end": 59983, "loc": { "start": { - "line": 1671, + "line": 1672, "column": 12 }, "end": { - "line": 1671, + "line": 1672, "column": 16 } } }, "property": { "type": "Identifier", - "start": 59948, - "end": 59964, + "start": 59984, + "end": 60000, "loc": { "start": { - "line": 1671, + "line": 1672, "column": 17 }, "end": { - "line": 1671, + "line": 1672, "column": 33 }, "identifierName": "_rebuildMatrices" @@ -32539,73 +32655,73 @@ }, { "type": "ExpressionStatement", - "start": 59980, - "end": 60009, + "start": 60016, + "end": 60045, "loc": { "start": { - "line": 1672, + "line": 1673, "column": 12 }, "end": { - "line": 1672, + "line": 1673, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 59980, - "end": 60008, + "start": 60016, + "end": 60044, "loc": { "start": { - "line": 1672, + "line": 1673, "column": 12 }, "end": { - "line": 1672, + "line": 1673, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 59980, - "end": 60001, + "start": 60016, + "end": 60037, "loc": { "start": { - "line": 1672, + "line": 1673, "column": 12 }, "end": { - "line": 1672, + "line": 1673, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 59980, - "end": 59984, + "start": 60016, + "end": 60020, "loc": { "start": { - "line": 1672, + "line": 1673, "column": 12 }, "end": { - "line": 1672, + "line": 1673, "column": 16 } } }, "property": { "type": "Identifier", - "start": 59985, - "end": 60001, + "start": 60021, + "end": 60037, "loc": { "start": { - "line": 1672, + "line": 1673, "column": 17 }, "end": { - "line": 1672, + "line": 1673, "column": 33 }, "identifierName": "_viewMatrixDirty" @@ -32616,15 +32732,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 60004, - "end": 60008, + "start": 60040, + "end": 60044, "loc": { "start": { - "line": 1672, + "line": 1673, "column": 36 }, "end": { - "line": 1672, + "line": 1673, "column": 40 } }, @@ -32639,58 +32755,58 @@ }, { "type": "IfStatement", - "start": 60028, - "end": 60325, + "start": 60064, + "end": 60361, "loc": { "start": { - "line": 1674, + "line": 1675, "column": 8 }, "end": { - "line": 1679, + "line": 1680, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 60032, - "end": 60053, + "start": 60068, + "end": 60089, "loc": { "start": { - "line": 1674, + "line": 1675, "column": 12 }, "end": { - "line": 1674, + "line": 1675, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 60032, - "end": 60036, + "start": 60068, + "end": 60072, "loc": { "start": { - "line": 1674, + "line": 1675, "column": 12 }, "end": { - "line": 1674, + "line": 1675, "column": 16 } } }, "property": { "type": "Identifier", - "start": 60037, - "end": 60053, + "start": 60073, + "end": 60089, "loc": { "start": { - "line": 1674, + "line": 1675, "column": 17 }, "end": { - "line": 1674, + "line": 1675, "column": 33 }, "identifierName": "_viewMatrixDirty" @@ -32701,72 +32817,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 60055, - "end": 60325, + "start": 60091, + "end": 60361, "loc": { "start": { - "line": 1674, + "line": 1675, "column": 35 }, "end": { - "line": 1679, + "line": 1680, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 60069, - "end": 60144, + "start": 60105, + "end": 60180, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 12 }, "end": { - "line": 1675, + "line": 1676, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 60069, - "end": 60143, + "start": 60105, + "end": 60179, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 12 }, "end": { - "line": 1675, + "line": 1676, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 60069, - "end": 60081, + "start": 60105, + "end": 60117, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 12 }, "end": { - "line": 1675, + "line": 1676, "column": 24 } }, "object": { "type": "Identifier", - "start": 60069, - "end": 60073, + "start": 60105, + "end": 60109, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 12 }, "end": { - "line": 1675, + "line": 1676, "column": 16 }, "identifierName": "math" @@ -32775,15 +32891,15 @@ }, "property": { "type": "Identifier", - "start": 60074, - "end": 60081, + "start": 60110, + "end": 60117, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 17 }, "end": { - "line": 1675, + "line": 1676, "column": 24 }, "identifierName": "mulMat4" @@ -32795,72 +32911,72 @@ "arguments": [ { "type": "MemberExpression", - "start": 60082, - "end": 60110, + "start": 60118, + "end": 60146, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 25 }, "end": { - "line": 1675, + "line": 1676, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 60082, - "end": 60099, + "start": 60118, + "end": 60135, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 25 }, "end": { - "line": 1675, + "line": 1676, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 60082, - "end": 60092, + "start": 60118, + "end": 60128, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 25 }, "end": { - "line": 1675, + "line": 1676, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 60082, - "end": 60086, + "start": 60118, + "end": 60122, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 25 }, "end": { - "line": 1675, + "line": 1676, "column": 29 } } }, "property": { "type": "Identifier", - "start": 60087, - "end": 60092, + "start": 60123, + "end": 60128, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 30 }, "end": { - "line": 1675, + "line": 1676, "column": 35 }, "identifierName": "scene" @@ -32871,15 +32987,15 @@ }, "property": { "type": "Identifier", - "start": 60093, - "end": 60099, + "start": 60129, + "end": 60135, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 36 }, "end": { - "line": 1675, + "line": 1676, "column": 42 }, "identifierName": "camera" @@ -32890,15 +33006,15 @@ }, "property": { "type": "Identifier", - "start": 60100, - "end": 60110, + "start": 60136, + "end": 60146, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 43 }, "end": { - "line": 1675, + "line": 1676, "column": 53 }, "identifierName": "viewMatrix" @@ -32909,44 +33025,44 @@ }, { "type": "MemberExpression", - "start": 60112, - "end": 60124, + "start": 60148, + "end": 60160, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 55 }, "end": { - "line": 1675, + "line": 1676, "column": 67 } }, "object": { "type": "ThisExpression", - "start": 60112, - "end": 60116, + "start": 60148, + "end": 60152, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 55 }, "end": { - "line": 1675, + "line": 1676, "column": 59 } } }, "property": { "type": "Identifier", - "start": 60117, - "end": 60124, + "start": 60153, + "end": 60160, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 60 }, "end": { - "line": 1675, + "line": 1676, "column": 67 }, "identifierName": "_matrix" @@ -32957,44 +33073,44 @@ }, { "type": "MemberExpression", - "start": 60126, - "end": 60142, + "start": 60162, + "end": 60178, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 69 }, "end": { - "line": 1675, + "line": 1676, "column": 85 } }, "object": { "type": "ThisExpression", - "start": 60126, - "end": 60130, + "start": 60162, + "end": 60166, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 69 }, "end": { - "line": 1675, + "line": 1676, "column": 73 } } }, "property": { "type": "Identifier", - "start": 60131, - "end": 60142, + "start": 60167, + "end": 60178, "loc": { "start": { - "line": 1675, + "line": 1676, "column": 74 }, "end": { - "line": 1675, + "line": 1676, "column": 85 }, "identifierName": "_viewMatrix" @@ -33008,57 +33124,57 @@ }, { "type": "ExpressionStatement", - "start": 60157, - "end": 60216, + "start": 60193, + "end": 60252, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 12 }, "end": { - "line": 1676, + "line": 1677, "column": 71 } }, "expression": { "type": "CallExpression", - "start": 60157, - "end": 60215, + "start": 60193, + "end": 60251, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 12 }, "end": { - "line": 1676, + "line": 1677, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 60157, - "end": 60173, + "start": 60193, + "end": 60209, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 12 }, "end": { - "line": 1676, + "line": 1677, "column": 28 } }, "object": { "type": "Identifier", - "start": 60157, - "end": 60161, + "start": 60193, + "end": 60197, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 12 }, "end": { - "line": 1676, + "line": 1677, "column": 16 }, "identifierName": "math" @@ -33067,15 +33183,15 @@ }, "property": { "type": "Identifier", - "start": 60162, - "end": 60173, + "start": 60198, + "end": 60209, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 17 }, "end": { - "line": 1676, + "line": 1677, "column": 28 }, "identifierName": "inverseMat4" @@ -33087,44 +33203,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 60174, - "end": 60190, + "start": 60210, + "end": 60226, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 29 }, "end": { - "line": 1676, + "line": 1677, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 60174, - "end": 60178, + "start": 60210, + "end": 60214, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 29 }, "end": { - "line": 1676, + "line": 1677, "column": 33 } } }, "property": { "type": "Identifier", - "start": 60179, - "end": 60190, + "start": 60215, + "end": 60226, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 34 }, "end": { - "line": 1676, + "line": 1677, "column": 45 }, "identifierName": "_viewMatrix" @@ -33135,44 +33251,44 @@ }, { "type": "MemberExpression", - "start": 60192, - "end": 60214, + "start": 60228, + "end": 60250, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 47 }, "end": { - "line": 1676, + "line": 1677, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 60192, - "end": 60196, + "start": 60228, + "end": 60232, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 47 }, "end": { - "line": 1676, + "line": 1677, "column": 51 } } }, "property": { "type": "Identifier", - "start": 60197, - "end": 60214, + "start": 60233, + "end": 60250, "loc": { "start": { - "line": 1676, + "line": 1677, "column": 52 }, "end": { - "line": 1676, + "line": 1677, "column": 69 }, "identifierName": "_viewNormalMatrix" @@ -33186,57 +33302,57 @@ }, { "type": "ExpressionStatement", - "start": 60229, - "end": 60272, + "start": 60265, + "end": 60308, "loc": { "start": { - "line": 1677, + "line": 1678, "column": 12 }, "end": { - "line": 1677, + "line": 1678, "column": 55 } }, "expression": { "type": "CallExpression", - "start": 60229, - "end": 60271, + "start": 60265, + "end": 60307, "loc": { "start": { - "line": 1677, + "line": 1678, "column": 12 }, "end": { - "line": 1677, + "line": 1678, "column": 54 } }, "callee": { "type": "MemberExpression", - "start": 60229, - "end": 60247, + "start": 60265, + "end": 60283, "loc": { "start": { - "line": 1677, + "line": 1678, "column": 12 }, "end": { - "line": 1677, + "line": 1678, "column": 30 } }, "object": { "type": "Identifier", - "start": 60229, - "end": 60233, + "start": 60265, + "end": 60269, "loc": { "start": { - "line": 1677, + "line": 1678, "column": 12 }, "end": { - "line": 1677, + "line": 1678, "column": 16 }, "identifierName": "math" @@ -33245,15 +33361,15 @@ }, "property": { "type": "Identifier", - "start": 60234, - "end": 60247, + "start": 60270, + "end": 60283, "loc": { "start": { - "line": 1677, + "line": 1678, "column": 17 }, "end": { - "line": 1677, + "line": 1678, "column": 30 }, "identifierName": "transposeMat4" @@ -33265,44 +33381,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 60248, - "end": 60270, + "start": 60284, + "end": 60306, "loc": { "start": { - "line": 1677, + "line": 1678, "column": 31 }, "end": { - "line": 1677, + "line": 1678, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 60248, - "end": 60252, + "start": 60284, + "end": 60288, "loc": { "start": { - "line": 1677, + "line": 1678, "column": 31 }, "end": { - "line": 1677, + "line": 1678, "column": 35 } } }, "property": { "type": "Identifier", - "start": 60253, - "end": 60270, + "start": 60289, + "end": 60306, "loc": { "start": { - "line": 1677, + "line": 1678, "column": 36 }, "end": { - "line": 1677, + "line": 1678, "column": 53 }, "identifierName": "_viewNormalMatrix" @@ -33316,73 +33432,73 @@ }, { "type": "ExpressionStatement", - "start": 60285, - "end": 60315, + "start": 60321, + "end": 60351, "loc": { "start": { - "line": 1678, + "line": 1679, "column": 12 }, "end": { - "line": 1678, + "line": 1679, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 60285, - "end": 60314, + "start": 60321, + "end": 60350, "loc": { "start": { - "line": 1678, + "line": 1679, "column": 12 }, "end": { - "line": 1678, + "line": 1679, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 60285, - "end": 60306, + "start": 60321, + "end": 60342, "loc": { "start": { - "line": 1678, + "line": 1679, "column": 12 }, "end": { - "line": 1678, + "line": 1679, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 60285, - "end": 60289, + "start": 60321, + "end": 60325, "loc": { "start": { - "line": 1678, + "line": 1679, "column": 12 }, "end": { - "line": 1678, + "line": 1679, "column": 16 } } }, "property": { "type": "Identifier", - "start": 60290, - "end": 60306, + "start": 60326, + "end": 60342, "loc": { "start": { - "line": 1678, + "line": 1679, "column": 17 }, "end": { - "line": 1678, + "line": 1679, "column": 33 }, "identifierName": "_viewMatrixDirty" @@ -33393,15 +33509,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 60309, - "end": 60314, + "start": 60345, + "end": 60350, "loc": { "start": { - "line": 1678, + "line": 1679, "column": 36 }, "end": { - "line": 1678, + "line": 1679, "column": 41 } }, @@ -33416,58 +33532,58 @@ }, { "type": "ReturnStatement", - "start": 60334, - "end": 60358, + "start": 60370, + "end": 60394, "loc": { "start": { - "line": 1680, + "line": 1681, "column": 8 }, "end": { - "line": 1680, + "line": 1681, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 60341, - "end": 60357, + "start": 60377, + "end": 60393, "loc": { "start": { - "line": 1680, + "line": 1681, "column": 15 }, "end": { - "line": 1680, + "line": 1681, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 60341, - "end": 60345, + "start": 60377, + "end": 60381, "loc": { "start": { - "line": 1680, + "line": 1681, "column": 15 }, "end": { - "line": 1680, + "line": 1681, "column": 19 } } }, "property": { "type": "Identifier", - "start": 60346, - "end": 60357, + "start": 60382, + "end": 60393, "loc": { "start": { - "line": 1680, + "line": 1681, "column": 20 }, "end": { - "line": 1680, + "line": 1681, "column": 31 }, "identifierName": "_viewMatrix" @@ -33485,15 +33601,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the view matrix with which to\n * render this SceneModel. The view matrix is the concatenation of the\n * Camera view matrix with the Performance model's world (modeling) matrix.\n *\n * @private\n ", - "start": 59510, - "end": 59782, + "start": 59546, + "end": 59818, "loc": { "start": { - "line": 1659, + "line": 1660, "column": 4 }, "end": { - "line": 1665, + "line": 1666, "column": 7 } } @@ -33503,15 +33619,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel.\n *\n * @private\n ", - "start": 60370, - "end": 60518, + "start": 60406, + "end": 60554, "loc": { "start": { - "line": 1683, + "line": 1684, "column": 4 }, "end": { - "line": 1687, + "line": 1688, "column": 7 } } @@ -33520,15 +33636,15 @@ }, { "type": "ClassMethod", - "start": 60523, - "end": 61244, + "start": 60559, + "end": 61280, "loc": { "start": { - "line": 1688, + "line": 1689, "column": 4 }, "end": { - "line": 1705, + "line": 1706, "column": 5 } }, @@ -33536,15 +33652,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 60527, - "end": 60543, + "start": 60563, + "end": 60579, "loc": { "start": { - "line": 1688, + "line": 1689, "column": 8 }, "end": { - "line": 1688, + "line": 1689, "column": 24 }, "identifierName": "viewNormalMatrix" @@ -33559,44 +33675,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 60546, - "end": 61244, + "start": 60582, + "end": 61280, "loc": { "start": { - "line": 1688, + "line": 1689, "column": 27 }, "end": { - "line": 1705, + "line": 1706, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 60556, - "end": 60651, + "start": 60592, + "end": 60687, "loc": { "start": { - "line": 1689, + "line": 1690, "column": 8 }, "end": { - "line": 1691, + "line": 1692, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 60560, - "end": 60583, + "start": 60596, + "end": 60619, "loc": { "start": { - "line": 1689, + "line": 1690, "column": 12 }, "end": { - "line": 1689, + "line": 1690, "column": 35 } }, @@ -33604,44 +33720,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 60561, - "end": 60583, + "start": 60597, + "end": 60619, "loc": { "start": { - "line": 1689, + "line": 1690, "column": 13 }, "end": { - "line": 1689, + "line": 1690, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 60561, - "end": 60565, + "start": 60597, + "end": 60601, "loc": { "start": { - "line": 1689, + "line": 1690, "column": 13 }, "end": { - "line": 1689, + "line": 1690, "column": 17 } } }, "property": { "type": "Identifier", - "start": 60566, - "end": 60583, + "start": 60602, + "end": 60619, "loc": { "start": { - "line": 1689, + "line": 1690, "column": 18 }, "end": { - "line": 1689, + "line": 1690, "column": 35 }, "identifierName": "_viewNormalMatrix" @@ -33656,101 +33772,101 @@ }, "consequent": { "type": "BlockStatement", - "start": 60585, - "end": 60651, + "start": 60621, + "end": 60687, "loc": { "start": { - "line": 1689, + "line": 1690, "column": 37 }, "end": { - "line": 1691, + "line": 1692, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 60599, - "end": 60641, + "start": 60635, + "end": 60677, "loc": { "start": { - "line": 1690, + "line": 1691, "column": 12 }, "end": { - "line": 1690, + "line": 1691, "column": 54 } }, "argument": { "type": "MemberExpression", - "start": 60606, - "end": 60640, + "start": 60642, + "end": 60676, "loc": { "start": { - "line": 1690, + "line": 1691, "column": 19 }, "end": { - "line": 1690, + "line": 1691, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 60606, - "end": 60623, + "start": 60642, + "end": 60659, "loc": { "start": { - "line": 1690, + "line": 1691, "column": 19 }, "end": { - "line": 1690, + "line": 1691, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 60606, - "end": 60616, + "start": 60642, + "end": 60652, "loc": { "start": { - "line": 1690, + "line": 1691, "column": 19 }, "end": { - "line": 1690, + "line": 1691, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 60606, - "end": 60610, + "start": 60642, + "end": 60646, "loc": { "start": { - "line": 1690, + "line": 1691, "column": 19 }, "end": { - "line": 1690, + "line": 1691, "column": 23 } } }, "property": { "type": "Identifier", - "start": 60611, - "end": 60616, + "start": 60647, + "end": 60652, "loc": { "start": { - "line": 1690, + "line": 1691, "column": 24 }, "end": { - "line": 1690, + "line": 1691, "column": 29 }, "identifierName": "scene" @@ -33761,15 +33877,15 @@ }, "property": { "type": "Identifier", - "start": 60617, - "end": 60623, + "start": 60653, + "end": 60659, "loc": { "start": { - "line": 1690, + "line": 1691, "column": 30 }, "end": { - "line": 1690, + "line": 1691, "column": 36 }, "identifierName": "camera" @@ -33780,15 +33896,15 @@ }, "property": { "type": "Identifier", - "start": 60624, - "end": 60640, + "start": 60660, + "end": 60676, "loc": { "start": { - "line": 1690, + "line": 1691, "column": 37 }, "end": { - "line": 1690, + "line": 1691, "column": 53 }, "identifierName": "viewNormalMatrix" @@ -33805,58 +33921,58 @@ }, { "type": "IfStatement", - "start": 60660, - "end": 60773, + "start": 60696, + "end": 60809, "loc": { "start": { - "line": 1692, + "line": 1693, "column": 8 }, "end": { - "line": 1695, + "line": 1696, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 60664, - "end": 60681, + "start": 60700, + "end": 60717, "loc": { "start": { - "line": 1692, + "line": 1693, "column": 12 }, "end": { - "line": 1692, + "line": 1693, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 60664, - "end": 60668, + "start": 60700, + "end": 60704, "loc": { "start": { - "line": 1692, + "line": 1693, "column": 12 }, "end": { - "line": 1692, + "line": 1693, "column": 16 } } }, "property": { "type": "Identifier", - "start": 60669, - "end": 60681, + "start": 60705, + "end": 60717, "loc": { "start": { - "line": 1692, + "line": 1693, "column": 17 }, "end": { - "line": 1692, + "line": 1693, "column": 29 }, "identifierName": "_matrixDirty" @@ -33867,87 +33983,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 60683, - "end": 60773, + "start": 60719, + "end": 60809, "loc": { "start": { - "line": 1692, + "line": 1693, "column": 31 }, "end": { - "line": 1695, + "line": 1696, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 60697, - "end": 60721, + "start": 60733, + "end": 60757, "loc": { "start": { - "line": 1693, + "line": 1694, "column": 12 }, "end": { - "line": 1693, + "line": 1694, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 60697, - "end": 60720, + "start": 60733, + "end": 60756, "loc": { "start": { - "line": 1693, + "line": 1694, "column": 12 }, "end": { - "line": 1693, + "line": 1694, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 60697, - "end": 60718, + "start": 60733, + "end": 60754, "loc": { "start": { - "line": 1693, + "line": 1694, "column": 12 }, "end": { - "line": 1693, + "line": 1694, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 60697, - "end": 60701, + "start": 60733, + "end": 60737, "loc": { "start": { - "line": 1693, + "line": 1694, "column": 12 }, "end": { - "line": 1693, + "line": 1694, "column": 16 } } }, "property": { "type": "Identifier", - "start": 60702, - "end": 60718, + "start": 60738, + "end": 60754, "loc": { "start": { - "line": 1693, + "line": 1694, "column": 17 }, "end": { - "line": 1693, + "line": 1694, "column": 33 }, "identifierName": "_rebuildMatrices" @@ -33961,73 +34077,73 @@ }, { "type": "ExpressionStatement", - "start": 60734, - "end": 60763, + "start": 60770, + "end": 60799, "loc": { "start": { - "line": 1694, + "line": 1695, "column": 12 }, "end": { - "line": 1694, + "line": 1695, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 60734, - "end": 60762, + "start": 60770, + "end": 60798, "loc": { "start": { - "line": 1694, + "line": 1695, "column": 12 }, "end": { - "line": 1694, + "line": 1695, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 60734, - "end": 60755, + "start": 60770, + "end": 60791, "loc": { "start": { - "line": 1694, + "line": 1695, "column": 12 }, "end": { - "line": 1694, + "line": 1695, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 60734, - "end": 60738, + "start": 60770, + "end": 60774, "loc": { "start": { - "line": 1694, + "line": 1695, "column": 12 }, "end": { - "line": 1694, + "line": 1695, "column": 16 } } }, "property": { "type": "Identifier", - "start": 60739, - "end": 60755, + "start": 60775, + "end": 60791, "loc": { "start": { - "line": 1694, + "line": 1695, "column": 17 }, "end": { - "line": 1694, + "line": 1695, "column": 33 }, "identifierName": "_viewMatrixDirty" @@ -34038,15 +34154,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 60758, - "end": 60762, + "start": 60794, + "end": 60798, "loc": { "start": { - "line": 1694, + "line": 1695, "column": 36 }, "end": { - "line": 1694, + "line": 1695, "column": 40 } }, @@ -34061,58 +34177,58 @@ }, { "type": "IfStatement", - "start": 60782, - "end": 61079, + "start": 60818, + "end": 61115, "loc": { "start": { - "line": 1696, + "line": 1697, "column": 8 }, "end": { - "line": 1701, + "line": 1702, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 60786, - "end": 60807, + "start": 60822, + "end": 60843, "loc": { "start": { - "line": 1696, + "line": 1697, "column": 12 }, "end": { - "line": 1696, + "line": 1697, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 60786, - "end": 60790, + "start": 60822, + "end": 60826, "loc": { "start": { - "line": 1696, + "line": 1697, "column": 12 }, "end": { - "line": 1696, + "line": 1697, "column": 16 } } }, "property": { "type": "Identifier", - "start": 60791, - "end": 60807, + "start": 60827, + "end": 60843, "loc": { "start": { - "line": 1696, + "line": 1697, "column": 17 }, "end": { - "line": 1696, + "line": 1697, "column": 33 }, "identifierName": "_viewMatrixDirty" @@ -34123,72 +34239,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 60809, - "end": 61079, + "start": 60845, + "end": 61115, "loc": { "start": { - "line": 1696, + "line": 1697, "column": 35 }, "end": { - "line": 1701, + "line": 1702, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 60823, - "end": 60898, + "start": 60859, + "end": 60934, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 12 }, "end": { - "line": 1697, + "line": 1698, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 60823, - "end": 60897, + "start": 60859, + "end": 60933, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 12 }, "end": { - "line": 1697, + "line": 1698, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 60823, - "end": 60835, + "start": 60859, + "end": 60871, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 12 }, "end": { - "line": 1697, + "line": 1698, "column": 24 } }, "object": { "type": "Identifier", - "start": 60823, - "end": 60827, + "start": 60859, + "end": 60863, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 12 }, "end": { - "line": 1697, + "line": 1698, "column": 16 }, "identifierName": "math" @@ -34197,15 +34313,15 @@ }, "property": { "type": "Identifier", - "start": 60828, - "end": 60835, + "start": 60864, + "end": 60871, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 17 }, "end": { - "line": 1697, + "line": 1698, "column": 24 }, "identifierName": "mulMat4" @@ -34217,72 +34333,72 @@ "arguments": [ { "type": "MemberExpression", - "start": 60836, - "end": 60864, + "start": 60872, + "end": 60900, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 25 }, "end": { - "line": 1697, + "line": 1698, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 60836, - "end": 60853, + "start": 60872, + "end": 60889, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 25 }, "end": { - "line": 1697, + "line": 1698, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 60836, - "end": 60846, + "start": 60872, + "end": 60882, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 25 }, "end": { - "line": 1697, + "line": 1698, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 60836, - "end": 60840, + "start": 60872, + "end": 60876, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 25 }, "end": { - "line": 1697, + "line": 1698, "column": 29 } } }, "property": { "type": "Identifier", - "start": 60841, - "end": 60846, + "start": 60877, + "end": 60882, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 30 }, "end": { - "line": 1697, + "line": 1698, "column": 35 }, "identifierName": "scene" @@ -34293,15 +34409,15 @@ }, "property": { "type": "Identifier", - "start": 60847, - "end": 60853, + "start": 60883, + "end": 60889, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 36 }, "end": { - "line": 1697, + "line": 1698, "column": 42 }, "identifierName": "camera" @@ -34312,15 +34428,15 @@ }, "property": { "type": "Identifier", - "start": 60854, - "end": 60864, + "start": 60890, + "end": 60900, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 43 }, "end": { - "line": 1697, + "line": 1698, "column": 53 }, "identifierName": "viewMatrix" @@ -34331,44 +34447,44 @@ }, { "type": "MemberExpression", - "start": 60866, - "end": 60878, + "start": 60902, + "end": 60914, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 55 }, "end": { - "line": 1697, + "line": 1698, "column": 67 } }, "object": { "type": "ThisExpression", - "start": 60866, - "end": 60870, + "start": 60902, + "end": 60906, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 55 }, "end": { - "line": 1697, + "line": 1698, "column": 59 } } }, "property": { "type": "Identifier", - "start": 60871, - "end": 60878, + "start": 60907, + "end": 60914, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 60 }, "end": { - "line": 1697, + "line": 1698, "column": 67 }, "identifierName": "_matrix" @@ -34379,44 +34495,44 @@ }, { "type": "MemberExpression", - "start": 60880, - "end": 60896, + "start": 60916, + "end": 60932, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 69 }, "end": { - "line": 1697, + "line": 1698, "column": 85 } }, "object": { "type": "ThisExpression", - "start": 60880, - "end": 60884, + "start": 60916, + "end": 60920, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 69 }, "end": { - "line": 1697, + "line": 1698, "column": 73 } } }, "property": { "type": "Identifier", - "start": 60885, - "end": 60896, + "start": 60921, + "end": 60932, "loc": { "start": { - "line": 1697, + "line": 1698, "column": 74 }, "end": { - "line": 1697, + "line": 1698, "column": 85 }, "identifierName": "_viewMatrix" @@ -34430,57 +34546,57 @@ }, { "type": "ExpressionStatement", - "start": 60911, - "end": 60970, + "start": 60947, + "end": 61006, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 12 }, "end": { - "line": 1698, + "line": 1699, "column": 71 } }, "expression": { "type": "CallExpression", - "start": 60911, - "end": 60969, + "start": 60947, + "end": 61005, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 12 }, "end": { - "line": 1698, + "line": 1699, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 60911, - "end": 60927, + "start": 60947, + "end": 60963, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 12 }, "end": { - "line": 1698, + "line": 1699, "column": 28 } }, "object": { "type": "Identifier", - "start": 60911, - "end": 60915, + "start": 60947, + "end": 60951, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 12 }, "end": { - "line": 1698, + "line": 1699, "column": 16 }, "identifierName": "math" @@ -34489,15 +34605,15 @@ }, "property": { "type": "Identifier", - "start": 60916, - "end": 60927, + "start": 60952, + "end": 60963, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 17 }, "end": { - "line": 1698, + "line": 1699, "column": 28 }, "identifierName": "inverseMat4" @@ -34509,44 +34625,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 60928, - "end": 60944, + "start": 60964, + "end": 60980, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 29 }, "end": { - "line": 1698, + "line": 1699, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 60928, - "end": 60932, + "start": 60964, + "end": 60968, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 29 }, "end": { - "line": 1698, + "line": 1699, "column": 33 } } }, "property": { "type": "Identifier", - "start": 60933, - "end": 60944, + "start": 60969, + "end": 60980, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 34 }, "end": { - "line": 1698, + "line": 1699, "column": 45 }, "identifierName": "_viewMatrix" @@ -34557,44 +34673,44 @@ }, { "type": "MemberExpression", - "start": 60946, - "end": 60968, + "start": 60982, + "end": 61004, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 47 }, "end": { - "line": 1698, + "line": 1699, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 60946, - "end": 60950, + "start": 60982, + "end": 60986, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 47 }, "end": { - "line": 1698, + "line": 1699, "column": 51 } } }, "property": { "type": "Identifier", - "start": 60951, - "end": 60968, + "start": 60987, + "end": 61004, "loc": { "start": { - "line": 1698, + "line": 1699, "column": 52 }, "end": { - "line": 1698, + "line": 1699, "column": 69 }, "identifierName": "_viewNormalMatrix" @@ -34608,57 +34724,57 @@ }, { "type": "ExpressionStatement", - "start": 60983, - "end": 61026, + "start": 61019, + "end": 61062, "loc": { "start": { - "line": 1699, + "line": 1700, "column": 12 }, "end": { - "line": 1699, + "line": 1700, "column": 55 } }, "expression": { "type": "CallExpression", - "start": 60983, - "end": 61025, + "start": 61019, + "end": 61061, "loc": { "start": { - "line": 1699, + "line": 1700, "column": 12 }, "end": { - "line": 1699, + "line": 1700, "column": 54 } }, "callee": { "type": "MemberExpression", - "start": 60983, - "end": 61001, + "start": 61019, + "end": 61037, "loc": { "start": { - "line": 1699, + "line": 1700, "column": 12 }, "end": { - "line": 1699, + "line": 1700, "column": 30 } }, "object": { "type": "Identifier", - "start": 60983, - "end": 60987, + "start": 61019, + "end": 61023, "loc": { "start": { - "line": 1699, + "line": 1700, "column": 12 }, "end": { - "line": 1699, + "line": 1700, "column": 16 }, "identifierName": "math" @@ -34667,15 +34783,15 @@ }, "property": { "type": "Identifier", - "start": 60988, - "end": 61001, + "start": 61024, + "end": 61037, "loc": { "start": { - "line": 1699, + "line": 1700, "column": 17 }, "end": { - "line": 1699, + "line": 1700, "column": 30 }, "identifierName": "transposeMat4" @@ -34687,44 +34803,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 61002, - "end": 61024, + "start": 61038, + "end": 61060, "loc": { "start": { - "line": 1699, + "line": 1700, "column": 31 }, "end": { - "line": 1699, + "line": 1700, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 61002, - "end": 61006, + "start": 61038, + "end": 61042, "loc": { "start": { - "line": 1699, + "line": 1700, "column": 31 }, "end": { - "line": 1699, + "line": 1700, "column": 35 } } }, "property": { "type": "Identifier", - "start": 61007, - "end": 61024, + "start": 61043, + "end": 61060, "loc": { "start": { - "line": 1699, + "line": 1700, "column": 36 }, "end": { - "line": 1699, + "line": 1700, "column": 53 }, "identifierName": "_viewNormalMatrix" @@ -34738,73 +34854,73 @@ }, { "type": "ExpressionStatement", - "start": 61039, - "end": 61069, + "start": 61075, + "end": 61105, "loc": { "start": { - "line": 1700, + "line": 1701, "column": 12 }, "end": { - "line": 1700, + "line": 1701, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 61039, - "end": 61068, + "start": 61075, + "end": 61104, "loc": { "start": { - "line": 1700, + "line": 1701, "column": 12 }, "end": { - "line": 1700, + "line": 1701, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 61039, - "end": 61060, + "start": 61075, + "end": 61096, "loc": { "start": { - "line": 1700, + "line": 1701, "column": 12 }, "end": { - "line": 1700, + "line": 1701, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 61039, - "end": 61043, + "start": 61075, + "end": 61079, "loc": { "start": { - "line": 1700, + "line": 1701, "column": 12 }, "end": { - "line": 1700, + "line": 1701, "column": 16 } } }, "property": { "type": "Identifier", - "start": 61044, - "end": 61060, + "start": 61080, + "end": 61096, "loc": { "start": { - "line": 1700, + "line": 1701, "column": 17 }, "end": { - "line": 1700, + "line": 1701, "column": 33 }, "identifierName": "_viewMatrixDirty" @@ -34815,15 +34931,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 61063, - "end": 61068, + "start": 61099, + "end": 61104, "loc": { "start": { - "line": 1700, + "line": 1701, "column": 36 }, "end": { - "line": 1700, + "line": 1701, "column": 41 } }, @@ -34838,57 +34954,57 @@ }, { "type": "ExpressionStatement", - "start": 61088, - "end": 61147, + "start": 61124, + "end": 61183, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 8 }, "end": { - "line": 1702, + "line": 1703, "column": 67 } }, "expression": { "type": "CallExpression", - "start": 61088, - "end": 61146, + "start": 61124, + "end": 61182, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 8 }, "end": { - "line": 1702, + "line": 1703, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 61088, - "end": 61104, + "start": 61124, + "end": 61140, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 8 }, "end": { - "line": 1702, + "line": 1703, "column": 24 } }, "object": { "type": "Identifier", - "start": 61088, - "end": 61092, + "start": 61124, + "end": 61128, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 8 }, "end": { - "line": 1702, + "line": 1703, "column": 12 }, "identifierName": "math" @@ -34897,15 +35013,15 @@ }, "property": { "type": "Identifier", - "start": 61093, - "end": 61104, + "start": 61129, + "end": 61140, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 13 }, "end": { - "line": 1702, + "line": 1703, "column": 24 }, "identifierName": "inverseMat4" @@ -34917,44 +35033,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 61105, - "end": 61121, + "start": 61141, + "end": 61157, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 25 }, "end": { - "line": 1702, + "line": 1703, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 61105, - "end": 61109, + "start": 61141, + "end": 61145, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 25 }, "end": { - "line": 1702, + "line": 1703, "column": 29 } } }, "property": { "type": "Identifier", - "start": 61110, - "end": 61121, + "start": 61146, + "end": 61157, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 30 }, "end": { - "line": 1702, + "line": 1703, "column": 41 }, "identifierName": "_viewMatrix" @@ -34965,44 +35081,44 @@ }, { "type": "MemberExpression", - "start": 61123, - "end": 61145, + "start": 61159, + "end": 61181, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 43 }, "end": { - "line": 1702, + "line": 1703, "column": 65 } }, "object": { "type": "ThisExpression", - "start": 61123, - "end": 61127, + "start": 61159, + "end": 61163, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 43 }, "end": { - "line": 1702, + "line": 1703, "column": 47 } } }, "property": { "type": "Identifier", - "start": 61128, - "end": 61145, + "start": 61164, + "end": 61181, "loc": { "start": { - "line": 1702, + "line": 1703, "column": 48 }, "end": { - "line": 1702, + "line": 1703, "column": 65 }, "identifierName": "_viewNormalMatrix" @@ -35016,57 +35132,57 @@ }, { "type": "ExpressionStatement", - "start": 61156, - "end": 61199, + "start": 61192, + "end": 61235, "loc": { "start": { - "line": 1703, + "line": 1704, "column": 8 }, "end": { - "line": 1703, + "line": 1704, "column": 51 } }, "expression": { "type": "CallExpression", - "start": 61156, - "end": 61198, + "start": 61192, + "end": 61234, "loc": { "start": { - "line": 1703, + "line": 1704, "column": 8 }, "end": { - "line": 1703, + "line": 1704, "column": 50 } }, "callee": { "type": "MemberExpression", - "start": 61156, - "end": 61174, + "start": 61192, + "end": 61210, "loc": { "start": { - "line": 1703, + "line": 1704, "column": 8 }, "end": { - "line": 1703, + "line": 1704, "column": 26 } }, "object": { "type": "Identifier", - "start": 61156, - "end": 61160, + "start": 61192, + "end": 61196, "loc": { "start": { - "line": 1703, + "line": 1704, "column": 8 }, "end": { - "line": 1703, + "line": 1704, "column": 12 }, "identifierName": "math" @@ -35075,15 +35191,15 @@ }, "property": { "type": "Identifier", - "start": 61161, - "end": 61174, + "start": 61197, + "end": 61210, "loc": { "start": { - "line": 1703, + "line": 1704, "column": 13 }, "end": { - "line": 1703, + "line": 1704, "column": 26 }, "identifierName": "transposeMat4" @@ -35095,44 +35211,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 61175, - "end": 61197, + "start": 61211, + "end": 61233, "loc": { "start": { - "line": 1703, + "line": 1704, "column": 27 }, "end": { - "line": 1703, + "line": 1704, "column": 49 } }, "object": { "type": "ThisExpression", - "start": 61175, - "end": 61179, + "start": 61211, + "end": 61215, "loc": { "start": { - "line": 1703, + "line": 1704, "column": 27 }, "end": { - "line": 1703, + "line": 1704, "column": 31 } } }, "property": { "type": "Identifier", - "start": 61180, - "end": 61197, + "start": 61216, + "end": 61233, "loc": { "start": { - "line": 1703, + "line": 1704, "column": 32 }, "end": { - "line": 1703, + "line": 1704, "column": 49 }, "identifierName": "_viewNormalMatrix" @@ -35146,58 +35262,58 @@ }, { "type": "ReturnStatement", - "start": 61208, - "end": 61238, + "start": 61244, + "end": 61274, "loc": { "start": { - "line": 1704, + "line": 1705, "column": 8 }, "end": { - "line": 1704, + "line": 1705, "column": 38 } }, "argument": { "type": "MemberExpression", - "start": 61215, - "end": 61237, + "start": 61251, + "end": 61273, "loc": { "start": { - "line": 1704, + "line": 1705, "column": 15 }, "end": { - "line": 1704, + "line": 1705, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 61215, - "end": 61219, + "start": 61251, + "end": 61255, "loc": { "start": { - "line": 1704, + "line": 1705, "column": 15 }, "end": { - "line": 1704, + "line": 1705, "column": 19 } } }, "property": { "type": "Identifier", - "start": 61220, - "end": 61237, + "start": 61256, + "end": 61273, "loc": { "start": { - "line": 1704, + "line": 1705, "column": 20 }, "end": { - "line": 1704, + "line": 1705, "column": 37 }, "identifierName": "_viewNormalMatrix" @@ -35215,15 +35331,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel.\n *\n * @private\n ", - "start": 60370, - "end": 60518, + "start": 60406, + "end": 60554, "loc": { "start": { - "line": 1683, + "line": 1684, "column": 4 }, "end": { - "line": 1687, + "line": 1688, "column": 7 } } @@ -35233,15 +35349,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n ", - "start": 61250, - "end": 61390, + "start": 61286, + "end": 61426, "loc": { "start": { - "line": 1707, + "line": 1708, "column": 4 }, "end": { - "line": 1713, + "line": 1714, "column": 7 } } @@ -35250,15 +35366,15 @@ }, { "type": "ClassMethod", - "start": 61395, - "end": 61450, + "start": 61431, + "end": 61486, "loc": { "start": { - "line": 1714, + "line": 1715, "column": 4 }, "end": { - "line": 1716, + "line": 1717, "column": 5 } }, @@ -35266,15 +35382,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 61399, - "end": 61408, + "start": 61435, + "end": 61444, "loc": { "start": { - "line": 1714, + "line": 1715, "column": 8 }, "end": { - "line": 1714, + "line": 1715, "column": 17 }, "identifierName": "backfaces" @@ -35289,73 +35405,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 61411, - "end": 61450, + "start": 61447, + "end": 61486, "loc": { "start": { - "line": 1714, + "line": 1715, "column": 20 }, "end": { - "line": 1716, + "line": 1717, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 61421, - "end": 61444, + "start": 61457, + "end": 61480, "loc": { "start": { - "line": 1715, + "line": 1716, "column": 8 }, "end": { - "line": 1715, + "line": 1716, "column": 31 } }, "argument": { "type": "MemberExpression", - "start": 61428, - "end": 61443, + "start": 61464, + "end": 61479, "loc": { "start": { - "line": 1715, + "line": 1716, "column": 15 }, "end": { - "line": 1715, + "line": 1716, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 61428, - "end": 61432, + "start": 61464, + "end": 61468, "loc": { "start": { - "line": 1715, + "line": 1716, "column": 15 }, "end": { - "line": 1715, + "line": 1716, "column": 19 } } }, "property": { "type": "Identifier", - "start": 61433, - "end": 61443, + "start": 61469, + "end": 61479, "loc": { "start": { - "line": 1715, + "line": 1716, "column": 20 }, "end": { - "line": 1715, + "line": 1716, "column": 30 }, "identifierName": "_backfaces" @@ -35373,15 +35489,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n ", - "start": 61250, - "end": 61390, + "start": 61286, + "end": 61426, "loc": { "start": { - "line": 1707, + "line": 1708, "column": 4 }, "end": { - "line": 1713, + "line": 1714, "column": 7 } } @@ -35391,15 +35507,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this SceneModel.\n *\n * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\n * the Viewer will:\n *\n * * hide backfaces on watertight meshes,\n * * show backfaces on open meshes, and\n * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n *\n * @type {Boolean}\n ", - "start": 61456, - "end": 62038, + "start": 61492, + "end": 62074, "loc": { "start": { - "line": 1718, + "line": 1719, "column": 4 }, "end": { - "line": 1733, + "line": 1734, "column": 7 } } @@ -35408,15 +35524,15 @@ }, { "type": "ClassMethod", - "start": 62043, - "end": 62170, + "start": 62079, + "end": 62206, "loc": { "start": { - "line": 1734, + "line": 1735, "column": 4 }, "end": { - "line": 1738, + "line": 1739, "column": 5 } }, @@ -35424,15 +35540,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 62047, - "end": 62056, + "start": 62083, + "end": 62092, "loc": { "start": { - "line": 1734, + "line": 1735, "column": 8 }, "end": { - "line": 1734, + "line": 1735, "column": 17 }, "identifierName": "backfaces" @@ -35447,15 +35563,15 @@ "params": [ { "type": "Identifier", - "start": 62057, - "end": 62066, + "start": 62093, + "end": 62102, "loc": { "start": { - "line": 1734, + "line": 1735, "column": 18 }, "end": { - "line": 1734, + "line": 1735, "column": 27 }, "identifierName": "backfaces" @@ -35465,59 +35581,59 @@ ], "body": { "type": "BlockStatement", - "start": 62068, - "end": 62170, + "start": 62104, + "end": 62206, "loc": { "start": { - "line": 1734, + "line": 1735, "column": 29 }, "end": { - "line": 1738, + "line": 1739, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 62078, - "end": 62102, + "start": 62114, + "end": 62138, "loc": { "start": { - "line": 1735, + "line": 1736, "column": 8 }, "end": { - "line": 1735, + "line": 1736, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 62078, - "end": 62101, + "start": 62114, + "end": 62137, "loc": { "start": { - "line": 1735, + "line": 1736, "column": 8 }, "end": { - "line": 1735, + "line": 1736, "column": 31 } }, "operator": "=", "left": { "type": "Identifier", - "start": 62078, - "end": 62087, + "start": 62114, + "end": 62123, "loc": { "start": { - "line": 1735, + "line": 1736, "column": 8 }, "end": { - "line": 1735, + "line": 1736, "column": 17 }, "identifierName": "backfaces" @@ -35526,15 +35642,15 @@ }, "right": { "type": "UnaryExpression", - "start": 62090, - "end": 62101, + "start": 62126, + "end": 62137, "loc": { "start": { - "line": 1735, + "line": 1736, "column": 20 }, "end": { - "line": 1735, + "line": 1736, "column": 31 } }, @@ -35542,15 +35658,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 62091, - "end": 62101, + "start": 62127, + "end": 62137, "loc": { "start": { - "line": 1735, + "line": 1736, "column": 21 }, "end": { - "line": 1735, + "line": 1736, "column": 31 } }, @@ -35558,15 +35674,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 62092, - "end": 62101, + "start": 62128, + "end": 62137, "loc": { "start": { - "line": 1735, + "line": 1736, "column": 22 }, "end": { - "line": 1735, + "line": 1736, "column": 31 }, "identifierName": "backfaces" @@ -35585,73 +35701,73 @@ }, { "type": "ExpressionStatement", - "start": 62111, - "end": 62139, + "start": 62147, + "end": 62175, "loc": { "start": { - "line": 1736, + "line": 1737, "column": 8 }, "end": { - "line": 1736, + "line": 1737, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 62111, - "end": 62138, + "start": 62147, + "end": 62174, "loc": { "start": { - "line": 1736, + "line": 1737, "column": 8 }, "end": { - "line": 1736, + "line": 1737, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 62111, - "end": 62126, + "start": 62147, + "end": 62162, "loc": { "start": { - "line": 1736, + "line": 1737, "column": 8 }, "end": { - "line": 1736, + "line": 1737, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 62111, - "end": 62115, + "start": 62147, + "end": 62151, "loc": { "start": { - "line": 1736, + "line": 1737, "column": 8 }, "end": { - "line": 1736, + "line": 1737, "column": 12 } } }, "property": { "type": "Identifier", - "start": 62116, - "end": 62126, + "start": 62152, + "end": 62162, "loc": { "start": { - "line": 1736, + "line": 1737, "column": 13 }, "end": { - "line": 1736, + "line": 1737, "column": 23 }, "identifierName": "_backfaces" @@ -35662,15 +35778,15 @@ }, "right": { "type": "Identifier", - "start": 62129, - "end": 62138, + "start": 62165, + "end": 62174, "loc": { "start": { - "line": 1736, + "line": 1737, "column": 26 }, "end": { - "line": 1736, + "line": 1737, "column": 35 }, "identifierName": "backfaces" @@ -35681,72 +35797,72 @@ }, { "type": "ExpressionStatement", - "start": 62148, - "end": 62164, + "start": 62184, + "end": 62200, "loc": { "start": { - "line": 1737, + "line": 1738, "column": 8 }, "end": { - "line": 1737, + "line": 1738, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 62148, - "end": 62163, + "start": 62184, + "end": 62199, "loc": { "start": { - "line": 1737, + "line": 1738, "column": 8 }, "end": { - "line": 1737, + "line": 1738, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 62148, - "end": 62161, + "start": 62184, + "end": 62197, "loc": { "start": { - "line": 1737, + "line": 1738, "column": 8 }, "end": { - "line": 1737, + "line": 1738, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 62148, - "end": 62152, + "start": 62184, + "end": 62188, "loc": { "start": { - "line": 1737, + "line": 1738, "column": 8 }, "end": { - "line": 1737, + "line": 1738, "column": 12 } } }, "property": { "type": "Identifier", - "start": 62153, - "end": 62161, + "start": 62189, + "end": 62197, "loc": { "start": { - "line": 1737, + "line": 1738, "column": 13 }, "end": { - "line": 1737, + "line": 1738, "column": 21 }, "identifierName": "glRedraw" @@ -35766,15 +35882,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this SceneModel.\n *\n * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\n * the Viewer will:\n *\n * * hide backfaces on watertight meshes,\n * * show backfaces on open meshes, and\n * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n *\n * @type {Boolean}\n ", - "start": 61456, - "end": 62038, + "start": 61492, + "end": 62074, "loc": { "start": { - "line": 1718, + "line": 1719, "column": 4 }, "end": { - "line": 1733, + "line": 1734, "column": 7 } } @@ -35784,15 +35900,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the list of {@link SceneModelEntity}s within this SceneModel.\n *\n * @returns {SceneModelEntity[]}\n ", - "start": 62176, - "end": 62305, + "start": 62212, + "end": 62341, "loc": { "start": { - "line": 1740, + "line": 1741, "column": 4 }, "end": { - "line": 1744, + "line": 1745, "column": 7 } } @@ -35801,15 +35917,15 @@ }, { "type": "ClassMethod", - "start": 62310, - "end": 62367, + "start": 62346, + "end": 62403, "loc": { "start": { - "line": 1745, + "line": 1746, "column": 4 }, "end": { - "line": 1747, + "line": 1748, "column": 5 } }, @@ -35817,15 +35933,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 62314, - "end": 62324, + "start": 62350, + "end": 62360, "loc": { "start": { - "line": 1745, + "line": 1746, "column": 8 }, "end": { - "line": 1745, + "line": 1746, "column": 18 }, "identifierName": "entityList" @@ -35840,73 +35956,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 62327, - "end": 62367, + "start": 62363, + "end": 62403, "loc": { "start": { - "line": 1745, + "line": 1746, "column": 21 }, "end": { - "line": 1747, + "line": 1748, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 62337, - "end": 62361, + "start": 62373, + "end": 62397, "loc": { "start": { - "line": 1746, + "line": 1747, "column": 8 }, "end": { - "line": 1746, + "line": 1747, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 62344, - "end": 62360, + "start": 62380, + "end": 62396, "loc": { "start": { - "line": 1746, + "line": 1747, "column": 15 }, "end": { - "line": 1746, + "line": 1747, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 62344, - "end": 62348, + "start": 62380, + "end": 62384, "loc": { "start": { - "line": 1746, + "line": 1747, "column": 15 }, "end": { - "line": 1746, + "line": 1747, "column": 19 } } }, "property": { "type": "Identifier", - "start": 62349, - "end": 62360, + "start": 62385, + "end": 62396, "loc": { "start": { - "line": 1746, + "line": 1747, "column": 20 }, "end": { - "line": 1746, + "line": 1747, "column": 31 }, "identifierName": "_entityList" @@ -35924,15 +36040,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the list of {@link SceneModelEntity}s within this SceneModel.\n *\n * @returns {SceneModelEntity[]}\n ", - "start": 62176, - "end": 62305, + "start": 62212, + "end": 62341, "loc": { "start": { - "line": 1740, + "line": 1741, "column": 4 }, "end": { - "line": 1744, + "line": 1745, "column": 7 } } @@ -35942,15 +36058,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that SceneModel is an {@link Entity}.\n * @type {Boolean}\n ", - "start": 62373, - "end": 62477, + "start": 62409, + "end": 62513, "loc": { "start": { - "line": 1749, + "line": 1750, "column": 4 }, "end": { - "line": 1752, + "line": 1753, "column": 7 } } @@ -35959,15 +36075,15 @@ }, { "type": "ClassMethod", - "start": 62482, - "end": 62525, + "start": 62518, + "end": 62561, "loc": { "start": { - "line": 1753, + "line": 1754, "column": 4 }, "end": { - "line": 1755, + "line": 1756, "column": 5 } }, @@ -35975,15 +36091,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 62486, - "end": 62494, + "start": 62522, + "end": 62530, "loc": { "start": { - "line": 1753, + "line": 1754, "column": 8 }, "end": { - "line": 1753, + "line": 1754, "column": 16 }, "identifierName": "isEntity" @@ -35998,44 +36114,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 62497, - "end": 62525, + "start": 62533, + "end": 62561, "loc": { "start": { - "line": 1753, + "line": 1754, "column": 19 }, "end": { - "line": 1755, + "line": 1756, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 62507, - "end": 62519, + "start": 62543, + "end": 62555, "loc": { "start": { - "line": 1754, + "line": 1755, "column": 8 }, "end": { - "line": 1754, + "line": 1755, "column": 20 } }, "argument": { "type": "BooleanLiteral", - "start": 62514, - "end": 62518, + "start": 62550, + "end": 62554, "loc": { "start": { - "line": 1754, + "line": 1755, "column": 15 }, "end": { - "line": 1754, + "line": 1755, "column": 19 } }, @@ -36050,15 +36166,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that SceneModel is an {@link Entity}.\n * @type {Boolean}\n ", - "start": 62373, - "end": 62477, + "start": 62409, + "end": 62513, "loc": { "start": { - "line": 1749, + "line": 1750, "column": 4 }, "end": { - "line": 1752, + "line": 1753, "column": 7 } } @@ -36068,15 +36184,15 @@ { "type": "CommentBlock", "value": "*\n * Returns ````true```` if this SceneModel represents a model.\n *\n * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in\n * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n ", - "start": 62531, - "end": 62837, + "start": 62567, + "end": 62873, "loc": { "start": { - "line": 1757, + "line": 1758, "column": 4 }, "end": { - "line": 1764, + "line": 1765, "column": 7 } } @@ -36085,15 +36201,15 @@ }, { "type": "ClassMethod", - "start": 62842, - "end": 62893, + "start": 62878, + "end": 62929, "loc": { "start": { - "line": 1765, + "line": 1766, "column": 4 }, "end": { - "line": 1767, + "line": 1768, "column": 5 } }, @@ -36101,15 +36217,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 62846, - "end": 62853, + "start": 62882, + "end": 62889, "loc": { "start": { - "line": 1765, + "line": 1766, "column": 8 }, "end": { - "line": 1765, + "line": 1766, "column": 15 }, "identifierName": "isModel" @@ -36124,73 +36240,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 62856, - "end": 62893, + "start": 62892, + "end": 62929, "loc": { "start": { - "line": 1765, + "line": 1766, "column": 18 }, "end": { - "line": 1767, + "line": 1768, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 62866, - "end": 62887, + "start": 62902, + "end": 62923, "loc": { "start": { - "line": 1766, + "line": 1767, "column": 8 }, "end": { - "line": 1766, + "line": 1767, "column": 29 } }, "argument": { "type": "MemberExpression", - "start": 62873, - "end": 62886, + "start": 62909, + "end": 62922, "loc": { "start": { - "line": 1766, + "line": 1767, "column": 15 }, "end": { - "line": 1766, + "line": 1767, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 62873, - "end": 62877, + "start": 62909, + "end": 62913, "loc": { "start": { - "line": 1766, + "line": 1767, "column": 15 }, "end": { - "line": 1766, + "line": 1767, "column": 19 } } }, "property": { "type": "Identifier", - "start": 62878, - "end": 62886, + "start": 62914, + "end": 62922, "loc": { "start": { - "line": 1766, + "line": 1767, "column": 20 }, "end": { - "line": 1766, + "line": 1767, "column": 28 }, "identifierName": "_isModel" @@ -36208,15 +36324,15 @@ { "type": "CommentBlock", "value": "*\n * Returns ````true```` if this SceneModel represents a model.\n *\n * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in\n * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n ", - "start": 62531, - "end": 62837, + "start": 62567, + "end": 62873, "loc": { "start": { - "line": 1757, + "line": 1758, "column": 4 }, "end": { - "line": 1764, + "line": 1765, "column": 7 } } @@ -36226,15 +36342,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 62899, - "end": 63015, + "start": 62935, + "end": 63051, "loc": { "start": { - "line": 1769, + "line": 1770, "column": 4 }, "end": { - "line": 1769, + "line": 1770, "column": 120 } } @@ -36242,15 +36358,15 @@ { "type": "CommentLine", "value": " SceneModel members", - "start": 63020, - "end": 63041, + "start": 63056, + "end": 63077, "loc": { "start": { - "line": 1770, + "line": 1771, "column": 4 }, "end": { - "line": 1770, + "line": 1771, "column": 25 } } @@ -36258,15 +36374,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 63046, - "end": 63162, + "start": 63082, + "end": 63198, "loc": { "start": { - "line": 1771, + "line": 1772, "column": 4 }, "end": { - "line": 1771, + "line": 1772, "column": 120 } } @@ -36274,15 +36390,15 @@ { "type": "CommentBlock", "value": "*\n * Returns ````false```` to indicate that SceneModel never represents an object.\n *\n * @type {Boolean}\n ", - "start": 63168, - "end": 63294, + "start": 63204, + "end": 63330, "loc": { "start": { - "line": 1773, + "line": 1774, "column": 4 }, "end": { - "line": 1777, + "line": 1778, "column": 7 } } @@ -36291,15 +36407,15 @@ }, { "type": "ClassMethod", - "start": 63299, - "end": 63343, + "start": 63335, + "end": 63379, "loc": { "start": { - "line": 1778, + "line": 1779, "column": 4 }, "end": { - "line": 1780, + "line": 1781, "column": 5 } }, @@ -36307,15 +36423,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 63303, - "end": 63311, + "start": 63339, + "end": 63347, "loc": { "start": { - "line": 1778, + "line": 1779, "column": 8 }, "end": { - "line": 1778, + "line": 1779, "column": 16 }, "identifierName": "isObject" @@ -36330,44 +36446,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 63314, - "end": 63343, + "start": 63350, + "end": 63379, "loc": { "start": { - "line": 1778, + "line": 1779, "column": 19 }, "end": { - "line": 1780, + "line": 1781, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 63324, - "end": 63337, + "start": 63360, + "end": 63373, "loc": { "start": { - "line": 1779, + "line": 1780, "column": 8 }, "end": { - "line": 1779, + "line": 1780, "column": 21 } }, "argument": { "type": "BooleanLiteral", - "start": 63331, - "end": 63336, + "start": 63367, + "end": 63372, "loc": { "start": { - "line": 1779, + "line": 1780, "column": 15 }, "end": { - "line": 1779, + "line": 1780, "column": 20 } }, @@ -36382,15 +36498,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 62899, - "end": 63015, + "start": 62935, + "end": 63051, "loc": { "start": { - "line": 1769, + "line": 1770, "column": 4 }, "end": { - "line": 1769, + "line": 1770, "column": 120 } } @@ -36398,15 +36514,15 @@ { "type": "CommentLine", "value": " SceneModel members", - "start": 63020, - "end": 63041, + "start": 63056, + "end": 63077, "loc": { "start": { - "line": 1770, + "line": 1771, "column": 4 }, "end": { - "line": 1770, + "line": 1771, "column": 25 } } @@ -36414,15 +36530,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 63046, - "end": 63162, + "start": 63082, + "end": 63198, "loc": { "start": { - "line": 1771, + "line": 1772, "column": 4 }, "end": { - "line": 1771, + "line": 1772, "column": 120 } } @@ -36430,15 +36546,15 @@ { "type": "CommentBlock", "value": "*\n * Returns ````false```` to indicate that SceneModel never represents an object.\n *\n * @type {Boolean}\n ", - "start": 63168, - "end": 63294, + "start": 63204, + "end": 63330, "loc": { "start": { - "line": 1773, + "line": 1774, "column": 4 }, "end": { - "line": 1777, + "line": 1778, "column": 7 } } @@ -36448,15 +36564,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n ", - "start": 63349, - "end": 63631, + "start": 63385, + "end": 63667, "loc": { "start": { - "line": 1782, + "line": 1783, "column": 4 }, "end": { - "line": 1789, + "line": 1790, "column": 7 } } @@ -36465,15 +36581,15 @@ }, { "type": "ClassMethod", - "start": 63636, - "end": 63964, + "start": 63672, + "end": 64000, "loc": { "start": { - "line": 1790, + "line": 1791, "column": 4 }, "end": { - "line": 1799, + "line": 1800, "column": 5 } }, @@ -36481,15 +36597,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 63640, - "end": 63644, + "start": 63676, + "end": 63680, "loc": { "start": { - "line": 1790, + "line": 1791, "column": 8 }, "end": { - "line": 1790, + "line": 1791, "column": 12 }, "identifierName": "aabb" @@ -36504,73 +36620,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 63647, - "end": 63964, + "start": 63683, + "end": 64000, "loc": { "start": { - "line": 1790, + "line": 1791, "column": 15 }, "end": { - "line": 1799, + "line": 1800, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 63657, - "end": 63931, + "start": 63693, + "end": 63967, "loc": { "start": { - "line": 1791, + "line": 1792, "column": 8 }, "end": { - "line": 1797, + "line": 1798, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 63661, - "end": 63676, + "start": 63697, + "end": 63712, "loc": { "start": { - "line": 1791, + "line": 1792, "column": 12 }, "end": { - "line": 1791, + "line": 1792, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 63661, - "end": 63665, + "start": 63697, + "end": 63701, "loc": { "start": { - "line": 1791, + "line": 1792, "column": 12 }, "end": { - "line": 1791, + "line": 1792, "column": 16 } } }, "property": { "type": "Identifier", - "start": 63666, - "end": 63676, + "start": 63702, + "end": 63712, "loc": { "start": { - "line": 1791, + "line": 1792, "column": 17 }, "end": { - "line": 1791, + "line": 1792, "column": 27 }, "identifierName": "_aabbDirty" @@ -36581,72 +36697,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 63678, - "end": 63931, + "start": 63714, + "end": 63967, "loc": { "start": { - "line": 1791, + "line": 1792, "column": 29 }, "end": { - "line": 1797, + "line": 1798, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 63692, - "end": 63723, + "start": 63728, + "end": 63759, "loc": { "start": { - "line": 1792, + "line": 1793, "column": 12 }, "end": { - "line": 1792, + "line": 1793, "column": 43 } }, "expression": { "type": "CallExpression", - "start": 63692, - "end": 63722, + "start": 63728, + "end": 63758, "loc": { "start": { - "line": 1792, + "line": 1793, "column": 12 }, "end": { - "line": 1792, + "line": 1793, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 63692, - "end": 63710, + "start": 63728, + "end": 63746, "loc": { "start": { - "line": 1792, + "line": 1793, "column": 12 }, "end": { - "line": 1792, + "line": 1793, "column": 30 } }, "object": { "type": "Identifier", - "start": 63692, - "end": 63696, + "start": 63728, + "end": 63732, "loc": { "start": { - "line": 1792, + "line": 1793, "column": 12 }, "end": { - "line": 1792, + "line": 1793, "column": 16 }, "identifierName": "math" @@ -36655,15 +36771,15 @@ }, "property": { "type": "Identifier", - "start": 63697, - "end": 63710, + "start": 63733, + "end": 63746, "loc": { "start": { - "line": 1792, + "line": 1793, "column": 17 }, "end": { - "line": 1792, + "line": 1793, "column": 30 }, "identifierName": "collapseAABB3" @@ -36675,44 +36791,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 63711, - "end": 63721, + "start": 63747, + "end": 63757, "loc": { "start": { - "line": 1792, + "line": 1793, "column": 31 }, "end": { - "line": 1792, + "line": 1793, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 63711, - "end": 63715, + "start": 63747, + "end": 63751, "loc": { "start": { - "line": 1792, + "line": 1793, "column": 31 }, "end": { - "line": 1792, + "line": 1793, "column": 35 } } }, "property": { "type": "Identifier", - "start": 63716, - "end": 63721, + "start": 63752, + "end": 63757, "loc": { "start": { - "line": 1792, + "line": 1793, "column": 36 }, "end": { - "line": 1792, + "line": 1793, "column": 41 }, "identifierName": "_aabb" @@ -36726,58 +36842,58 @@ }, { "type": "ForStatement", - "start": 63736, - "end": 63884, + "start": 63772, + "end": 63920, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 12 }, "end": { - "line": 1795, + "line": 1796, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 63741, - "end": 63781, + "start": 63777, + "end": 63817, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 17 }, "end": { - "line": 1793, + "line": 1794, "column": 57 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 63745, - "end": 63750, + "start": 63781, + "end": 63786, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 21 }, "end": { - "line": 1793, + "line": 1794, "column": 26 } }, "id": { "type": "Identifier", - "start": 63745, - "end": 63746, + "start": 63781, + "end": 63782, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 21 }, "end": { - "line": 1793, + "line": 1794, "column": 22 }, "identifierName": "i" @@ -36786,15 +36902,15 @@ }, "init": { "type": "NumericLiteral", - "start": 63749, - "end": 63750, + "start": 63785, + "end": 63786, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 25 }, "end": { - "line": 1793, + "line": 1794, "column": 26 } }, @@ -36807,29 +36923,29 @@ }, { "type": "VariableDeclarator", - "start": 63752, - "end": 63781, + "start": 63788, + "end": 63817, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 28 }, "end": { - "line": 1793, + "line": 1794, "column": 57 } }, "id": { "type": "Identifier", - "start": 63752, - "end": 63755, + "start": 63788, + "end": 63791, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 28 }, "end": { - "line": 1793, + "line": 1794, "column": 31 }, "identifierName": "len" @@ -36838,58 +36954,58 @@ }, "init": { "type": "MemberExpression", - "start": 63758, - "end": 63781, + "start": 63794, + "end": 63817, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 34 }, "end": { - "line": 1793, + "line": 1794, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 63758, - "end": 63774, + "start": 63794, + "end": 63810, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 34 }, "end": { - "line": 1793, + "line": 1794, "column": 50 } }, "object": { "type": "ThisExpression", - "start": 63758, - "end": 63762, + "start": 63794, + "end": 63798, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 34 }, "end": { - "line": 1793, + "line": 1794, "column": 38 } } }, "property": { "type": "Identifier", - "start": 63763, - "end": 63774, + "start": 63799, + "end": 63810, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 39 }, "end": { - "line": 1793, + "line": 1794, "column": 50 }, "identifierName": "_entityList" @@ -36900,15 +37016,15 @@ }, "property": { "type": "Identifier", - "start": 63775, - "end": 63781, + "start": 63811, + "end": 63817, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 51 }, "end": { - "line": 1793, + "line": 1794, "column": 57 }, "identifierName": "length" @@ -36923,29 +37039,29 @@ }, "test": { "type": "BinaryExpression", - "start": 63783, - "end": 63790, + "start": 63819, + "end": 63826, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 59 }, "end": { - "line": 1793, + "line": 1794, "column": 66 } }, "left": { "type": "Identifier", - "start": 63783, - "end": 63784, + "start": 63819, + "end": 63820, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 59 }, "end": { - "line": 1793, + "line": 1794, "column": 60 }, "identifierName": "i" @@ -36955,15 +37071,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 63787, - "end": 63790, + "start": 63823, + "end": 63826, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 63 }, "end": { - "line": 1793, + "line": 1794, "column": 66 }, "identifierName": "len" @@ -36973,15 +37089,15 @@ }, "update": { "type": "UpdateExpression", - "start": 63792, - "end": 63795, + "start": 63828, + "end": 63831, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 68 }, "end": { - "line": 1793, + "line": 1794, "column": 71 } }, @@ -36989,15 +37105,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 63792, - "end": 63793, + "start": 63828, + "end": 63829, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 68 }, "end": { - "line": 1793, + "line": 1794, "column": 69 }, "identifierName": "i" @@ -37007,72 +37123,72 @@ }, "body": { "type": "BlockStatement", - "start": 63797, - "end": 63884, + "start": 63833, + "end": 63920, "loc": { "start": { - "line": 1793, + "line": 1794, "column": 73 }, "end": { - "line": 1795, + "line": 1796, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 63815, - "end": 63870, + "start": 63851, + "end": 63906, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 16 }, "end": { - "line": 1794, + "line": 1795, "column": 71 } }, "expression": { "type": "CallExpression", - "start": 63815, - "end": 63869, + "start": 63851, + "end": 63905, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 16 }, "end": { - "line": 1794, + "line": 1795, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 63815, - "end": 63831, + "start": 63851, + "end": 63867, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 16 }, "end": { - "line": 1794, + "line": 1795, "column": 32 } }, "object": { "type": "Identifier", - "start": 63815, - "end": 63819, + "start": 63851, + "end": 63855, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 16 }, "end": { - "line": 1794, + "line": 1795, "column": 20 }, "identifierName": "math" @@ -37081,15 +37197,15 @@ }, "property": { "type": "Identifier", - "start": 63820, - "end": 63831, + "start": 63856, + "end": 63867, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 21 }, "end": { - "line": 1794, + "line": 1795, "column": 32 }, "identifierName": "expandAABB3" @@ -37101,44 +37217,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 63832, - "end": 63842, + "start": 63868, + "end": 63878, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 33 }, "end": { - "line": 1794, + "line": 1795, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 63832, - "end": 63836, + "start": 63868, + "end": 63872, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 33 }, "end": { - "line": 1794, + "line": 1795, "column": 37 } } }, "property": { "type": "Identifier", - "start": 63837, - "end": 63842, + "start": 63873, + "end": 63878, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 38 }, "end": { - "line": 1794, + "line": 1795, "column": 43 }, "identifierName": "_aabb" @@ -37149,72 +37265,72 @@ }, { "type": "MemberExpression", - "start": 63844, - "end": 63868, + "start": 63880, + "end": 63904, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 45 }, "end": { - "line": 1794, + "line": 1795, "column": 69 } }, "object": { "type": "MemberExpression", - "start": 63844, - "end": 63863, + "start": 63880, + "end": 63899, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 45 }, "end": { - "line": 1794, + "line": 1795, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 63844, - "end": 63860, + "start": 63880, + "end": 63896, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 45 }, "end": { - "line": 1794, + "line": 1795, "column": 61 } }, "object": { "type": "ThisExpression", - "start": 63844, - "end": 63848, + "start": 63880, + "end": 63884, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 45 }, "end": { - "line": 1794, + "line": 1795, "column": 49 } } }, "property": { "type": "Identifier", - "start": 63849, - "end": 63860, + "start": 63885, + "end": 63896, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 50 }, "end": { - "line": 1794, + "line": 1795, "column": 61 }, "identifierName": "_entityList" @@ -37225,15 +37341,15 @@ }, "property": { "type": "Identifier", - "start": 63861, - "end": 63862, + "start": 63897, + "end": 63898, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 62 }, "end": { - "line": 1794, + "line": 1795, "column": 63 }, "identifierName": "i" @@ -37244,15 +37360,15 @@ }, "property": { "type": "Identifier", - "start": 63864, - "end": 63868, + "start": 63900, + "end": 63904, "loc": { "start": { - "line": 1794, + "line": 1795, "column": 65 }, "end": { - "line": 1794, + "line": 1795, "column": 69 }, "identifierName": "aabb" @@ -37270,73 +37386,73 @@ }, { "type": "ExpressionStatement", - "start": 63897, - "end": 63921, + "start": 63933, + "end": 63957, "loc": { "start": { - "line": 1796, + "line": 1797, "column": 12 }, "end": { - "line": 1796, + "line": 1797, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 63897, - "end": 63920, + "start": 63933, + "end": 63956, "loc": { "start": { - "line": 1796, + "line": 1797, "column": 12 }, "end": { - "line": 1796, + "line": 1797, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 63897, - "end": 63912, + "start": 63933, + "end": 63948, "loc": { "start": { - "line": 1796, + "line": 1797, "column": 12 }, "end": { - "line": 1796, + "line": 1797, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 63897, - "end": 63901, + "start": 63933, + "end": 63937, "loc": { "start": { - "line": 1796, + "line": 1797, "column": 12 }, "end": { - "line": 1796, + "line": 1797, "column": 16 } } }, "property": { "type": "Identifier", - "start": 63902, - "end": 63912, + "start": 63938, + "end": 63948, "loc": { "start": { - "line": 1796, + "line": 1797, "column": 17 }, "end": { - "line": 1796, + "line": 1797, "column": 27 }, "identifierName": "_aabbDirty" @@ -37347,15 +37463,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 63915, - "end": 63920, + "start": 63951, + "end": 63956, "loc": { "start": { - "line": 1796, + "line": 1797, "column": 30 }, "end": { - "line": 1796, + "line": 1797, "column": 35 } }, @@ -37370,58 +37486,58 @@ }, { "type": "ReturnStatement", - "start": 63940, - "end": 63958, + "start": 63976, + "end": 63994, "loc": { "start": { - "line": 1798, + "line": 1799, "column": 8 }, "end": { - "line": 1798, + "line": 1799, "column": 26 } }, "argument": { "type": "MemberExpression", - "start": 63947, - "end": 63957, + "start": 63983, + "end": 63993, "loc": { "start": { - "line": 1798, + "line": 1799, "column": 15 }, "end": { - "line": 1798, + "line": 1799, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 63947, - "end": 63951, + "start": 63983, + "end": 63987, "loc": { "start": { - "line": 1798, + "line": 1799, "column": 15 }, "end": { - "line": 1798, + "line": 1799, "column": 19 } } }, "property": { "type": "Identifier", - "start": 63952, - "end": 63957, + "start": 63988, + "end": 63993, "loc": { "start": { - "line": 1798, + "line": 1799, "column": 20 }, "end": { - "line": 1798, + "line": 1799, "column": 25 }, "identifierName": "_aabb" @@ -37439,15 +37555,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n ", - "start": 63349, - "end": 63631, + "start": 63385, + "end": 63667, "loc": { "start": { - "line": 1782, + "line": 1783, "column": 4 }, "end": { - "line": 1789, + "line": 1790, "column": 7 } } @@ -37457,15 +37573,15 @@ { "type": "CommentBlock", "value": "*\n * The approximate number of triangle primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 63970, - "end": 64083, + "start": 64006, + "end": 64119, "loc": { "start": { - "line": 1801, + "line": 1802, "column": 4 }, "end": { - "line": 1805, + "line": 1806, "column": 7 } } @@ -37474,15 +37590,15 @@ }, { "type": "ClassMethod", - "start": 64088, - "end": 64149, + "start": 64124, + "end": 64185, "loc": { "start": { - "line": 1806, + "line": 1807, "column": 4 }, "end": { - "line": 1808, + "line": 1809, "column": 5 } }, @@ -37490,15 +37606,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 64092, - "end": 64104, + "start": 64128, + "end": 64140, "loc": { "start": { - "line": 1806, + "line": 1807, "column": 8 }, "end": { - "line": 1806, + "line": 1807, "column": 20 }, "identifierName": "numTriangles" @@ -37513,73 +37629,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 64107, - "end": 64149, + "start": 64143, + "end": 64185, "loc": { "start": { - "line": 1806, + "line": 1807, "column": 23 }, "end": { - "line": 1808, + "line": 1809, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 64117, - "end": 64143, + "start": 64153, + "end": 64179, "loc": { "start": { - "line": 1807, + "line": 1808, "column": 8 }, "end": { - "line": 1807, + "line": 1808, "column": 34 } }, "argument": { "type": "MemberExpression", - "start": 64124, - "end": 64142, + "start": 64160, + "end": 64178, "loc": { "start": { - "line": 1807, + "line": 1808, "column": 15 }, "end": { - "line": 1807, + "line": 1808, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 64124, - "end": 64128, + "start": 64160, + "end": 64164, "loc": { "start": { - "line": 1807, + "line": 1808, "column": 15 }, "end": { - "line": 1807, + "line": 1808, "column": 19 } } }, "property": { "type": "Identifier", - "start": 64129, - "end": 64142, + "start": 64165, + "end": 64178, "loc": { "start": { - "line": 1807, + "line": 1808, "column": 20 }, "end": { - "line": 1807, + "line": 1808, "column": 33 }, "identifierName": "_numTriangles" @@ -37597,15 +37713,15 @@ { "type": "CommentBlock", "value": "*\n * The approximate number of triangle primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 63970, - "end": 64083, + "start": 64006, + "end": 64119, "loc": { "start": { - "line": 1801, + "line": 1802, "column": 4 }, "end": { - "line": 1805, + "line": 1806, "column": 7 } } @@ -37615,15 +37731,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 64155, - "end": 64271, + "start": 64191, + "end": 64307, "loc": { "start": { - "line": 1810, + "line": 1811, "column": 4 }, "end": { - "line": 1810, + "line": 1811, "column": 120 } } @@ -37631,15 +37747,15 @@ { "type": "CommentLine", "value": " Entity members", - "start": 64276, - "end": 64293, + "start": 64312, + "end": 64329, "loc": { "start": { - "line": 1811, + "line": 1812, "column": 4 }, "end": { - "line": 1811, + "line": 1812, "column": 21 } } @@ -37647,8 +37763,180 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 64298, - "end": 64414, + "start": 64334, + "end": 64450, + "loc": { + "start": { + "line": 1813, + "column": 4 + }, + "end": { + "line": 1813, + "column": 120 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * The approximate number of line primitives in this SceneModel.\n *\n * @type {Number}\n ", + "start": 64456, + "end": 64565, + "loc": { + "start": { + "line": 1815, + "column": 4 + }, + "end": { + "line": 1819, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 64570, + "end": 64623, + "loc": { + "start": { + "line": 1820, + "column": 4 + }, + "end": { + "line": 1822, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 64574, + "end": 64582, + "loc": { + "start": { + "line": 1820, + "column": 8 + }, + "end": { + "line": 1820, + "column": 16 + }, + "identifierName": "numLines" + }, + "name": "numLines" + }, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 64585, + "end": 64623, + "loc": { + "start": { + "line": 1820, + "column": 19 + }, + "end": { + "line": 1822, + "column": 5 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 64595, + "end": 64617, + "loc": { + "start": { + "line": 1821, + "column": 8 + }, + "end": { + "line": 1821, + "column": 30 + } + }, + "argument": { + "type": "MemberExpression", + "start": 64602, + "end": 64616, + "loc": { + "start": { + "line": 1821, + "column": 15 + }, + "end": { + "line": 1821, + "column": 29 + } + }, + "object": { + "type": "ThisExpression", + "start": 64602, + "end": 64606, + "loc": { + "start": { + "line": 1821, + "column": 15 + }, + "end": { + "line": 1821, + "column": 19 + } + } + }, + "property": { + "type": "Identifier", + "start": 64607, + "end": 64616, + "loc": { + "start": { + "line": 1821, + "column": 20 + }, + "end": { + "line": 1821, + "column": 29 + }, + "identifierName": "_numLines" + }, + "name": "_numLines" + }, + "computed": false + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 64191, + "end": 64307, + "loc": { + "start": { + "line": 1811, + "column": 4 + }, + "end": { + "line": 1811, + "column": 120 + } + } + }, + { + "type": "CommentLine", + "value": " Entity members", + "start": 64312, + "end": 64329, "loc": { "start": { "line": 1812, @@ -37656,6 +37944,22 @@ }, "end": { "line": 1812, + "column": 21 + } + } + }, + { + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 64334, + "end": 64450, + "loc": { + "start": { + "line": 1813, + "column": 4 + }, + "end": { + "line": 1813, "column": 120 } } @@ -37663,15 +37967,33 @@ { "type": "CommentBlock", "value": "*\n * The approximate number of line primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 64420, - "end": 64529, + "start": 64456, + "end": 64565, + "loc": { + "start": { + "line": 1815, + "column": 4 + }, + "end": { + "line": 1819, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * The approximate number of point primitives in this SceneModel.\n *\n * @type {Number}\n ", + "start": 64629, + "end": 64739, "loc": { "start": { - "line": 1814, + "line": 1824, "column": 4 }, "end": { - "line": 1818, + "line": 1828, "column": 7 } } @@ -37680,15 +38002,15 @@ }, { "type": "ClassMethod", - "start": 64534, - "end": 64587, + "start": 64744, + "end": 64799, "loc": { "start": { - "line": 1819, + "line": 1829, "column": 4 }, "end": { - "line": 1821, + "line": 1831, "column": 5 } }, @@ -37696,221 +38018,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 64538, - "end": 64546, + "start": 64748, + "end": 64757, "loc": { "start": { - "line": 1819, + "line": 1829, "column": 8 }, "end": { - "line": 1819, - "column": 16 - }, - "identifierName": "numLines" - }, - "name": "numLines" - }, - "kind": "get", - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 64549, - "end": 64587, - "loc": { - "start": { - "line": 1819, - "column": 19 - }, - "end": { - "line": 1821, - "column": 5 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 64559, - "end": 64581, - "loc": { - "start": { - "line": 1820, - "column": 8 - }, - "end": { - "line": 1820, - "column": 30 - } - }, - "argument": { - "type": "MemberExpression", - "start": 64566, - "end": 64580, - "loc": { - "start": { - "line": 1820, - "column": 15 - }, - "end": { - "line": 1820, - "column": 29 - } - }, - "object": { - "type": "ThisExpression", - "start": 64566, - "end": 64570, - "loc": { - "start": { - "line": 1820, - "column": 15 - }, - "end": { - "line": 1820, - "column": 19 - } - } - }, - "property": { - "type": "Identifier", - "start": 64571, - "end": 64580, - "loc": { - "start": { - "line": 1820, - "column": 20 - }, - "end": { - "line": 1820, - "column": 29 - }, - "identifierName": "_numLines" - }, - "name": "_numLines" - }, - "computed": false - } - } - ], - "directives": [], - "trailingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 64155, - "end": 64271, - "loc": { - "start": { - "line": 1810, - "column": 4 - }, - "end": { - "line": 1810, - "column": 120 - } - } - }, - { - "type": "CommentLine", - "value": " Entity members", - "start": 64276, - "end": 64293, - "loc": { - "start": { - "line": 1811, - "column": 4 - }, - "end": { - "line": 1811, - "column": 21 - } - } - }, - { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 64298, - "end": 64414, - "loc": { - "start": { - "line": 1812, - "column": 4 - }, - "end": { - "line": 1812, - "column": 120 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * The approximate number of line primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 64420, - "end": 64529, - "loc": { - "start": { - "line": 1814, - "column": 4 - }, - "end": { - "line": 1818, - "column": 7 - } - } - } - ], - "trailingComments": [ - { - "type": "CommentBlock", - "value": "*\n * The approximate number of point primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 64593, - "end": 64703, - "loc": { - "start": { - "line": 1823, - "column": 4 - }, - "end": { - "line": 1827, - "column": 7 - } - } - } - ] - }, - { - "type": "ClassMethod", - "start": 64708, - "end": 64763, - "loc": { - "start": { - "line": 1828, - "column": 4 - }, - "end": { - "line": 1830, - "column": 5 - } - }, - "static": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 64712, - "end": 64721, - "loc": { - "start": { - "line": 1828, - "column": 8 - }, - "end": { - "line": 1828, + "line": 1829, "column": 17 }, "identifierName": "numPoints" @@ -37925,73 +38041,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 64724, - "end": 64763, + "start": 64760, + "end": 64799, "loc": { "start": { - "line": 1828, + "line": 1829, "column": 20 }, "end": { - "line": 1830, + "line": 1831, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 64734, - "end": 64757, + "start": 64770, + "end": 64793, "loc": { "start": { - "line": 1829, + "line": 1830, "column": 8 }, "end": { - "line": 1829, + "line": 1830, "column": 31 } }, "argument": { "type": "MemberExpression", - "start": 64741, - "end": 64756, + "start": 64777, + "end": 64792, "loc": { "start": { - "line": 1829, + "line": 1830, "column": 15 }, "end": { - "line": 1829, + "line": 1830, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 64741, - "end": 64745, + "start": 64777, + "end": 64781, "loc": { "start": { - "line": 1829, + "line": 1830, "column": 15 }, "end": { - "line": 1829, + "line": 1830, "column": 19 } } }, "property": { "type": "Identifier", - "start": 64746, - "end": 64756, + "start": 64782, + "end": 64792, "loc": { "start": { - "line": 1829, + "line": 1830, "column": 20 }, "end": { - "line": 1829, + "line": 1830, "column": 30 }, "identifierName": "_numPoints" @@ -38009,15 +38125,15 @@ { "type": "CommentBlock", "value": "*\n * The approximate number of point primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 64593, - "end": 64703, + "start": 64629, + "end": 64739, "loc": { "start": { - "line": 1823, + "line": 1824, "column": 4 }, "end": { - "line": 1827, + "line": 1828, "column": 7 } } @@ -38027,15 +38143,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n *\n * @type {Boolean}\n ", - "start": 64769, - "end": 65029, + "start": 64805, + "end": 65065, "loc": { "start": { - "line": 1832, + "line": 1833, "column": 4 }, "end": { - "line": 1838, + "line": 1839, "column": 7 } } @@ -38044,15 +38160,15 @@ }, { "type": "ClassMethod", - "start": 65034, - "end": 65106, + "start": 65070, + "end": 65142, "loc": { "start": { - "line": 1839, + "line": 1840, "column": 4 }, "end": { - "line": 1841, + "line": 1842, "column": 5 } }, @@ -38060,15 +38176,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 65038, - "end": 65045, + "start": 65074, + "end": 65081, "loc": { "start": { - "line": 1839, + "line": 1840, "column": 8 }, "end": { - "line": 1839, + "line": 1840, "column": 15 }, "identifierName": "visible" @@ -38083,87 +38199,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 65048, - "end": 65106, + "start": 65084, + "end": 65142, "loc": { "start": { - "line": 1839, + "line": 1840, "column": 18 }, "end": { - "line": 1841, + "line": 1842, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 65058, - "end": 65100, + "start": 65094, + "end": 65136, "loc": { "start": { - "line": 1840, + "line": 1841, "column": 8 }, "end": { - "line": 1840, + "line": 1841, "column": 50 } }, "argument": { "type": "BinaryExpression", - "start": 65066, - "end": 65098, + "start": 65102, + "end": 65134, "loc": { "start": { - "line": 1840, + "line": 1841, "column": 16 }, "end": { - "line": 1840, + "line": 1841, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 65066, - "end": 65094, + "start": 65102, + "end": 65130, "loc": { "start": { - "line": 1840, + "line": 1841, "column": 16 }, "end": { - "line": 1840, + "line": 1841, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 65066, - "end": 65070, + "start": 65102, + "end": 65106, "loc": { "start": { - "line": 1840, + "line": 1841, "column": 16 }, "end": { - "line": 1840, + "line": 1841, "column": 20 } } }, "property": { "type": "Identifier", - "start": 65071, - "end": 65094, + "start": 65107, + "end": 65130, "loc": { "start": { - "line": 1840, + "line": 1841, "column": 21 }, "end": { - "line": 1840, + "line": 1841, "column": 44 }, "identifierName": "numVisibleLayerPortions" @@ -38175,15 +38291,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 65097, - "end": 65098, + "start": 65133, + "end": 65134, "loc": { "start": { - "line": 1840, + "line": 1841, "column": 47 }, "end": { - "line": 1840, + "line": 1841, "column": 48 } }, @@ -38195,7 +38311,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 65065 + "parenStart": 65101 } } } @@ -38207,15 +38323,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n *\n * @type {Boolean}\n ", - "start": 64769, - "end": 65029, + "start": 64805, + "end": 65065, "loc": { "start": { - "line": 1832, + "line": 1833, "column": 4 }, "end": { - "line": 1838, + "line": 1839, "column": 7 } } @@ -38225,15 +38341,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel is visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n **\n * @type {Boolean}\n ", - "start": 65112, - "end": 65339, + "start": 65148, + "end": 65375, "loc": { "start": { - "line": 1843, + "line": 1844, "column": 4 }, "end": { - "line": 1849, + "line": 1850, "column": 7 } } @@ -38242,15 +38358,15 @@ }, { "type": "ClassMethod", - "start": 65344, - "end": 65599, + "start": 65380, + "end": 65635, "loc": { "start": { - "line": 1850, + "line": 1851, "column": 4 }, "end": { - "line": 1857, + "line": 1858, "column": 5 } }, @@ -38258,15 +38374,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 65348, - "end": 65355, + "start": 65384, + "end": 65391, "loc": { "start": { - "line": 1850, + "line": 1851, "column": 8 }, "end": { - "line": 1850, + "line": 1851, "column": 15 }, "identifierName": "visible" @@ -38281,15 +38397,15 @@ "params": [ { "type": "Identifier", - "start": 65356, - "end": 65363, + "start": 65392, + "end": 65399, "loc": { "start": { - "line": 1850, + "line": 1851, "column": 16 }, "end": { - "line": 1850, + "line": 1851, "column": 23 }, "identifierName": "visible" @@ -38299,59 +38415,59 @@ ], "body": { "type": "BlockStatement", - "start": 65365, - "end": 65599, + "start": 65401, + "end": 65635, "loc": { "start": { - "line": 1850, + "line": 1851, "column": 25 }, "end": { - "line": 1857, + "line": 1858, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 65375, - "end": 65403, + "start": 65411, + "end": 65439, "loc": { "start": { - "line": 1851, + "line": 1852, "column": 8 }, "end": { - "line": 1851, + "line": 1852, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 65375, - "end": 65402, + "start": 65411, + "end": 65438, "loc": { "start": { - "line": 1851, + "line": 1852, "column": 8 }, "end": { - "line": 1851, + "line": 1852, "column": 35 } }, "operator": "=", "left": { "type": "Identifier", - "start": 65375, - "end": 65382, + "start": 65411, + "end": 65418, "loc": { "start": { - "line": 1851, + "line": 1852, "column": 8 }, "end": { - "line": 1851, + "line": 1852, "column": 15 }, "identifierName": "visible" @@ -38360,29 +38476,29 @@ }, "right": { "type": "BinaryExpression", - "start": 65385, - "end": 65402, + "start": 65421, + "end": 65438, "loc": { "start": { - "line": 1851, + "line": 1852, "column": 18 }, "end": { - "line": 1851, + "line": 1852, "column": 35 } }, "left": { "type": "Identifier", - "start": 65385, - "end": 65392, + "start": 65421, + "end": 65428, "loc": { "start": { - "line": 1851, + "line": 1852, "column": 18 }, "end": { - "line": 1851, + "line": 1852, "column": 25 }, "identifierName": "visible" @@ -38392,15 +38508,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 65397, - "end": 65402, + "start": 65433, + "end": 65438, "loc": { "start": { - "line": 1851, + "line": 1852, "column": 30 }, "end": { - "line": 1851, + "line": 1852, "column": 35 } }, @@ -38411,73 +38527,73 @@ }, { "type": "ExpressionStatement", - "start": 65412, - "end": 65436, + "start": 65448, + "end": 65472, "loc": { "start": { - "line": 1852, + "line": 1853, "column": 8 }, "end": { - "line": 1852, + "line": 1853, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 65412, - "end": 65435, + "start": 65448, + "end": 65471, "loc": { "start": { - "line": 1852, + "line": 1853, "column": 8 }, "end": { - "line": 1852, + "line": 1853, "column": 31 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 65412, - "end": 65425, + "start": 65448, + "end": 65461, "loc": { "start": { - "line": 1852, + "line": 1853, "column": 8 }, "end": { - "line": 1852, + "line": 1853, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 65412, - "end": 65416, + "start": 65448, + "end": 65452, "loc": { "start": { - "line": 1852, + "line": 1853, "column": 8 }, "end": { - "line": 1852, + "line": 1853, "column": 12 } } }, "property": { "type": "Identifier", - "start": 65417, - "end": 65425, + "start": 65453, + "end": 65461, "loc": { "start": { - "line": 1852, + "line": 1853, "column": 13 }, "end": { - "line": 1852, + "line": 1853, "column": 21 }, "identifierName": "_visible" @@ -38488,15 +38604,15 @@ }, "right": { "type": "Identifier", - "start": 65428, - "end": 65435, + "start": 65464, + "end": 65471, "loc": { "start": { - "line": 1852, + "line": 1853, "column": 24 }, "end": { - "line": 1852, + "line": 1853, "column": 31 }, "identifierName": "visible" @@ -38507,58 +38623,58 @@ }, { "type": "ForStatement", - "start": 65445, - "end": 65568, + "start": 65481, + "end": 65604, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 8 }, "end": { - "line": 1855, + "line": 1856, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 65450, - "end": 65490, + "start": 65486, + "end": 65526, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 13 }, "end": { - "line": 1853, + "line": 1854, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 65454, - "end": 65459, + "start": 65490, + "end": 65495, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 17 }, "end": { - "line": 1853, + "line": 1854, "column": 22 } }, "id": { "type": "Identifier", - "start": 65454, - "end": 65455, + "start": 65490, + "end": 65491, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 17 }, "end": { - "line": 1853, + "line": 1854, "column": 18 }, "identifierName": "i" @@ -38567,15 +38683,15 @@ }, "init": { "type": "NumericLiteral", - "start": 65458, - "end": 65459, + "start": 65494, + "end": 65495, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 21 }, "end": { - "line": 1853, + "line": 1854, "column": 22 } }, @@ -38588,29 +38704,29 @@ }, { "type": "VariableDeclarator", - "start": 65461, - "end": 65490, + "start": 65497, + "end": 65526, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 24 }, "end": { - "line": 1853, + "line": 1854, "column": 53 } }, "id": { "type": "Identifier", - "start": 65461, - "end": 65464, + "start": 65497, + "end": 65500, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 24 }, "end": { - "line": 1853, + "line": 1854, "column": 27 }, "identifierName": "len" @@ -38619,58 +38735,58 @@ }, "init": { "type": "MemberExpression", - "start": 65467, - "end": 65490, + "start": 65503, + "end": 65526, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 30 }, "end": { - "line": 1853, + "line": 1854, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 65467, - "end": 65483, + "start": 65503, + "end": 65519, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 30 }, "end": { - "line": 1853, + "line": 1854, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 65467, - "end": 65471, + "start": 65503, + "end": 65507, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 30 }, "end": { - "line": 1853, + "line": 1854, "column": 34 } } }, "property": { "type": "Identifier", - "start": 65472, - "end": 65483, + "start": 65508, + "end": 65519, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 35 }, "end": { - "line": 1853, + "line": 1854, "column": 46 }, "identifierName": "_entityList" @@ -38681,15 +38797,15 @@ }, "property": { "type": "Identifier", - "start": 65484, - "end": 65490, + "start": 65520, + "end": 65526, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 47 }, "end": { - "line": 1853, + "line": 1854, "column": 53 }, "identifierName": "length" @@ -38704,29 +38820,29 @@ }, "test": { "type": "BinaryExpression", - "start": 65492, - "end": 65499, + "start": 65528, + "end": 65535, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 55 }, "end": { - "line": 1853, + "line": 1854, "column": 62 } }, "left": { "type": "Identifier", - "start": 65492, - "end": 65493, + "start": 65528, + "end": 65529, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 55 }, "end": { - "line": 1853, + "line": 1854, "column": 56 }, "identifierName": "i" @@ -38736,15 +38852,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 65496, - "end": 65499, + "start": 65532, + "end": 65535, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 59 }, "end": { - "line": 1853, + "line": 1854, "column": 62 }, "identifierName": "len" @@ -38754,15 +38870,15 @@ }, "update": { "type": "UpdateExpression", - "start": 65501, - "end": 65504, + "start": 65537, + "end": 65540, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 64 }, "end": { - "line": 1853, + "line": 1854, "column": 67 } }, @@ -38770,15 +38886,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 65501, - "end": 65502, + "start": 65537, + "end": 65538, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 64 }, "end": { - "line": 1853, + "line": 1854, "column": 65 }, "identifierName": "i" @@ -38788,116 +38904,116 @@ }, "body": { "type": "BlockStatement", - "start": 65506, - "end": 65568, + "start": 65542, + "end": 65604, "loc": { "start": { - "line": 1853, + "line": 1854, "column": 69 }, "end": { - "line": 1855, + "line": 1856, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 65520, - "end": 65558, + "start": 65556, + "end": 65594, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 12 }, "end": { - "line": 1854, + "line": 1855, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 65520, - "end": 65557, + "start": 65556, + "end": 65593, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 12 }, "end": { - "line": 1854, + "line": 1855, "column": 49 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 65520, - "end": 65547, + "start": 65556, + "end": 65583, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 12 }, "end": { - "line": 1854, + "line": 1855, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 65520, - "end": 65539, + "start": 65556, + "end": 65575, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 12 }, "end": { - "line": 1854, + "line": 1855, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 65520, - "end": 65536, + "start": 65556, + "end": 65572, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 12 }, "end": { - "line": 1854, + "line": 1855, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 65520, - "end": 65524, + "start": 65556, + "end": 65560, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 12 }, "end": { - "line": 1854, + "line": 1855, "column": 16 } } }, "property": { "type": "Identifier", - "start": 65525, - "end": 65536, + "start": 65561, + "end": 65572, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 17 }, "end": { - "line": 1854, + "line": 1855, "column": 28 }, "identifierName": "_entityList" @@ -38908,15 +39024,15 @@ }, "property": { "type": "Identifier", - "start": 65537, - "end": 65538, + "start": 65573, + "end": 65574, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 29 }, "end": { - "line": 1854, + "line": 1855, "column": 30 }, "identifierName": "i" @@ -38927,15 +39043,15 @@ }, "property": { "type": "Identifier", - "start": 65540, - "end": 65547, + "start": 65576, + "end": 65583, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 32 }, "end": { - "line": 1854, + "line": 1855, "column": 39 }, "identifierName": "visible" @@ -38946,15 +39062,15 @@ }, "right": { "type": "Identifier", - "start": 65550, - "end": 65557, + "start": 65586, + "end": 65593, "loc": { "start": { - "line": 1854, + "line": 1855, "column": 42 }, "end": { - "line": 1854, + "line": 1855, "column": 49 }, "identifierName": "visible" @@ -38969,72 +39085,72 @@ }, { "type": "ExpressionStatement", - "start": 65577, - "end": 65593, + "start": 65613, + "end": 65629, "loc": { "start": { - "line": 1856, + "line": 1857, "column": 8 }, "end": { - "line": 1856, + "line": 1857, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 65577, - "end": 65592, + "start": 65613, + "end": 65628, "loc": { "start": { - "line": 1856, + "line": 1857, "column": 8 }, "end": { - "line": 1856, + "line": 1857, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 65577, - "end": 65590, + "start": 65613, + "end": 65626, "loc": { "start": { - "line": 1856, + "line": 1857, "column": 8 }, "end": { - "line": 1856, + "line": 1857, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 65577, - "end": 65581, + "start": 65613, + "end": 65617, "loc": { "start": { - "line": 1856, + "line": 1857, "column": 8 }, "end": { - "line": 1856, + "line": 1857, "column": 12 } } }, "property": { "type": "Identifier", - "start": 65582, - "end": 65590, + "start": 65618, + "end": 65626, "loc": { "start": { - "line": 1856, + "line": 1857, "column": 13 }, "end": { - "line": 1856, + "line": 1857, "column": 21 }, "identifierName": "glRedraw" @@ -39054,15 +39170,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel is visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n **\n * @type {Boolean}\n ", - "start": 65112, - "end": 65339, + "start": 65148, + "end": 65375, "loc": { "start": { - "line": 1843, + "line": 1844, "column": 4 }, "end": { - "line": 1849, + "line": 1850, "column": 7 } } @@ -39072,15 +39188,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", - "start": 65605, - "end": 65722, + "start": 65641, + "end": 65758, "loc": { "start": { - "line": 1859, + "line": 1860, "column": 4 }, "end": { - "line": 1863, + "line": 1864, "column": 7 } } @@ -39089,15 +39205,15 @@ }, { "type": "ClassMethod", - "start": 65727, - "end": 65797, + "start": 65763, + "end": 65833, "loc": { "start": { - "line": 1864, + "line": 1865, "column": 4 }, "end": { - "line": 1866, + "line": 1867, "column": 5 } }, @@ -39105,15 +39221,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 65731, - "end": 65737, + "start": 65767, + "end": 65773, "loc": { "start": { - "line": 1864, + "line": 1865, "column": 8 }, "end": { - "line": 1864, + "line": 1865, "column": 14 }, "identifierName": "xrayed" @@ -39128,87 +39244,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 65740, - "end": 65797, + "start": 65776, + "end": 65833, "loc": { "start": { - "line": 1864, + "line": 1865, "column": 17 }, "end": { - "line": 1866, + "line": 1867, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 65750, - "end": 65791, + "start": 65786, + "end": 65827, "loc": { "start": { - "line": 1865, + "line": 1866, "column": 8 }, "end": { - "line": 1865, + "line": 1866, "column": 49 } }, "argument": { "type": "BinaryExpression", - "start": 65758, - "end": 65789, + "start": 65794, + "end": 65825, "loc": { "start": { - "line": 1865, + "line": 1866, "column": 16 }, "end": { - "line": 1865, + "line": 1866, "column": 47 } }, "left": { "type": "MemberExpression", - "start": 65758, - "end": 65785, + "start": 65794, + "end": 65821, "loc": { "start": { - "line": 1865, + "line": 1866, "column": 16 }, "end": { - "line": 1865, + "line": 1866, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 65758, - "end": 65762, + "start": 65794, + "end": 65798, "loc": { "start": { - "line": 1865, + "line": 1866, "column": 16 }, "end": { - "line": 1865, + "line": 1866, "column": 20 } } }, "property": { "type": "Identifier", - "start": 65763, - "end": 65785, + "start": 65799, + "end": 65821, "loc": { "start": { - "line": 1865, + "line": 1866, "column": 21 }, "end": { - "line": 1865, + "line": 1866, "column": 43 }, "identifierName": "numXRayedLayerPortions" @@ -39220,15 +39336,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 65788, - "end": 65789, + "start": 65824, + "end": 65825, "loc": { "start": { - "line": 1865, + "line": 1866, "column": 46 }, "end": { - "line": 1865, + "line": 1866, "column": 47 } }, @@ -39240,7 +39356,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 65757 + "parenStart": 65793 } } } @@ -39252,15 +39368,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", - "start": 65605, - "end": 65722, + "start": 65641, + "end": 65758, "loc": { "start": { - "line": 1859, + "line": 1860, "column": 4 }, "end": { - "line": 1863, + "line": 1864, "column": 7 } } @@ -39270,15 +39386,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", - "start": 65803, - "end": 65920, + "start": 65839, + "end": 65956, "loc": { "start": { - "line": 1868, + "line": 1869, "column": 4 }, "end": { - "line": 1872, + "line": 1873, "column": 7 } } @@ -39287,15 +39403,15 @@ }, { "type": "ClassMethod", - "start": 65925, - "end": 66164, + "start": 65961, + "end": 66200, "loc": { "start": { - "line": 1873, + "line": 1874, "column": 4 }, "end": { - "line": 1880, + "line": 1881, "column": 5 } }, @@ -39303,15 +39419,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 65929, - "end": 65935, + "start": 65965, + "end": 65971, "loc": { "start": { - "line": 1873, + "line": 1874, "column": 8 }, "end": { - "line": 1873, + "line": 1874, "column": 14 }, "identifierName": "xrayed" @@ -39326,15 +39442,15 @@ "params": [ { "type": "Identifier", - "start": 65936, - "end": 65942, + "start": 65972, + "end": 65978, "loc": { "start": { - "line": 1873, + "line": 1874, "column": 15 }, "end": { - "line": 1873, + "line": 1874, "column": 21 }, "identifierName": "xrayed" @@ -39344,59 +39460,59 @@ ], "body": { "type": "BlockStatement", - "start": 65944, - "end": 66164, + "start": 65980, + "end": 66200, "loc": { "start": { - "line": 1873, + "line": 1874, "column": 23 }, "end": { - "line": 1880, + "line": 1881, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 65954, - "end": 65972, + "start": 65990, + "end": 66008, "loc": { "start": { - "line": 1874, + "line": 1875, "column": 8 }, "end": { - "line": 1874, + "line": 1875, "column": 26 } }, "expression": { "type": "AssignmentExpression", - "start": 65954, - "end": 65971, + "start": 65990, + "end": 66007, "loc": { "start": { - "line": 1874, + "line": 1875, "column": 8 }, "end": { - "line": 1874, + "line": 1875, "column": 25 } }, "operator": "=", "left": { "type": "Identifier", - "start": 65954, - "end": 65960, + "start": 65990, + "end": 65996, "loc": { "start": { - "line": 1874, + "line": 1875, "column": 8 }, "end": { - "line": 1874, + "line": 1875, "column": 14 }, "identifierName": "xrayed" @@ -39405,15 +39521,15 @@ }, "right": { "type": "UnaryExpression", - "start": 65963, - "end": 65971, + "start": 65999, + "end": 66007, "loc": { "start": { - "line": 1874, + "line": 1875, "column": 17 }, "end": { - "line": 1874, + "line": 1875, "column": 25 } }, @@ -39421,15 +39537,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 65964, - "end": 65971, + "start": 66000, + "end": 66007, "loc": { "start": { - "line": 1874, + "line": 1875, "column": 18 }, "end": { - "line": 1874, + "line": 1875, "column": 25 } }, @@ -39437,15 +39553,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 65965, - "end": 65971, + "start": 66001, + "end": 66007, "loc": { "start": { - "line": 1874, + "line": 1875, "column": 19 }, "end": { - "line": 1874, + "line": 1875, "column": 25 }, "identifierName": "xrayed" @@ -39464,73 +39580,73 @@ }, { "type": "ExpressionStatement", - "start": 65981, - "end": 66003, + "start": 66017, + "end": 66039, "loc": { "start": { - "line": 1875, + "line": 1876, "column": 8 }, "end": { - "line": 1875, + "line": 1876, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 65981, - "end": 66002, + "start": 66017, + "end": 66038, "loc": { "start": { - "line": 1875, + "line": 1876, "column": 8 }, "end": { - "line": 1875, + "line": 1876, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 65981, - "end": 65993, + "start": 66017, + "end": 66029, "loc": { "start": { - "line": 1875, + "line": 1876, "column": 8 }, "end": { - "line": 1875, + "line": 1876, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 65981, - "end": 65985, + "start": 66017, + "end": 66021, "loc": { "start": { - "line": 1875, + "line": 1876, "column": 8 }, "end": { - "line": 1875, + "line": 1876, "column": 12 } } }, "property": { "type": "Identifier", - "start": 65986, - "end": 65993, + "start": 66022, + "end": 66029, "loc": { "start": { - "line": 1875, + "line": 1876, "column": 13 }, "end": { - "line": 1875, + "line": 1876, "column": 20 }, "identifierName": "_xrayed" @@ -39541,15 +39657,15 @@ }, "right": { "type": "Identifier", - "start": 65996, - "end": 66002, + "start": 66032, + "end": 66038, "loc": { "start": { - "line": 1875, + "line": 1876, "column": 23 }, "end": { - "line": 1875, + "line": 1876, "column": 29 }, "identifierName": "xrayed" @@ -39560,58 +39676,58 @@ }, { "type": "ForStatement", - "start": 66012, - "end": 66133, + "start": 66048, + "end": 66169, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 8 }, "end": { - "line": 1878, + "line": 1879, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 66017, - "end": 66057, + "start": 66053, + "end": 66093, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 13 }, "end": { - "line": 1876, + "line": 1877, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 66021, - "end": 66026, + "start": 66057, + "end": 66062, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 17 }, "end": { - "line": 1876, + "line": 1877, "column": 22 } }, "id": { "type": "Identifier", - "start": 66021, - "end": 66022, + "start": 66057, + "end": 66058, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 17 }, "end": { - "line": 1876, + "line": 1877, "column": 18 }, "identifierName": "i" @@ -39620,15 +39736,15 @@ }, "init": { "type": "NumericLiteral", - "start": 66025, - "end": 66026, + "start": 66061, + "end": 66062, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 21 }, "end": { - "line": 1876, + "line": 1877, "column": 22 } }, @@ -39641,29 +39757,29 @@ }, { "type": "VariableDeclarator", - "start": 66028, - "end": 66057, + "start": 66064, + "end": 66093, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 24 }, "end": { - "line": 1876, + "line": 1877, "column": 53 } }, "id": { "type": "Identifier", - "start": 66028, - "end": 66031, + "start": 66064, + "end": 66067, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 24 }, "end": { - "line": 1876, + "line": 1877, "column": 27 }, "identifierName": "len" @@ -39672,58 +39788,58 @@ }, "init": { "type": "MemberExpression", - "start": 66034, - "end": 66057, + "start": 66070, + "end": 66093, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 30 }, "end": { - "line": 1876, + "line": 1877, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 66034, - "end": 66050, + "start": 66070, + "end": 66086, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 30 }, "end": { - "line": 1876, + "line": 1877, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 66034, - "end": 66038, + "start": 66070, + "end": 66074, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 30 }, "end": { - "line": 1876, + "line": 1877, "column": 34 } } }, "property": { "type": "Identifier", - "start": 66039, - "end": 66050, + "start": 66075, + "end": 66086, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 35 }, "end": { - "line": 1876, + "line": 1877, "column": 46 }, "identifierName": "_entityList" @@ -39734,15 +39850,15 @@ }, "property": { "type": "Identifier", - "start": 66051, - "end": 66057, + "start": 66087, + "end": 66093, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 47 }, "end": { - "line": 1876, + "line": 1877, "column": 53 }, "identifierName": "length" @@ -39757,29 +39873,29 @@ }, "test": { "type": "BinaryExpression", - "start": 66059, - "end": 66066, + "start": 66095, + "end": 66102, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 55 }, "end": { - "line": 1876, + "line": 1877, "column": 62 } }, "left": { "type": "Identifier", - "start": 66059, - "end": 66060, + "start": 66095, + "end": 66096, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 55 }, "end": { - "line": 1876, + "line": 1877, "column": 56 }, "identifierName": "i" @@ -39789,15 +39905,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 66063, - "end": 66066, + "start": 66099, + "end": 66102, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 59 }, "end": { - "line": 1876, + "line": 1877, "column": 62 }, "identifierName": "len" @@ -39807,15 +39923,15 @@ }, "update": { "type": "UpdateExpression", - "start": 66068, - "end": 66071, + "start": 66104, + "end": 66107, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 64 }, "end": { - "line": 1876, + "line": 1877, "column": 67 } }, @@ -39823,15 +39939,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 66068, - "end": 66069, + "start": 66104, + "end": 66105, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 64 }, "end": { - "line": 1876, + "line": 1877, "column": 65 }, "identifierName": "i" @@ -39841,116 +39957,116 @@ }, "body": { "type": "BlockStatement", - "start": 66073, - "end": 66133, + "start": 66109, + "end": 66169, "loc": { "start": { - "line": 1876, + "line": 1877, "column": 69 }, "end": { - "line": 1878, + "line": 1879, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 66087, - "end": 66123, + "start": 66123, + "end": 66159, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 12 }, "end": { - "line": 1877, + "line": 1878, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 66087, - "end": 66122, + "start": 66123, + "end": 66158, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 12 }, "end": { - "line": 1877, + "line": 1878, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 66087, - "end": 66113, + "start": 66123, + "end": 66149, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 12 }, "end": { - "line": 1877, + "line": 1878, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 66087, - "end": 66106, + "start": 66123, + "end": 66142, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 12 }, "end": { - "line": 1877, + "line": 1878, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 66087, - "end": 66103, + "start": 66123, + "end": 66139, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 12 }, "end": { - "line": 1877, + "line": 1878, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 66087, - "end": 66091, + "start": 66123, + "end": 66127, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 12 }, "end": { - "line": 1877, + "line": 1878, "column": 16 } } }, "property": { "type": "Identifier", - "start": 66092, - "end": 66103, + "start": 66128, + "end": 66139, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 17 }, "end": { - "line": 1877, + "line": 1878, "column": 28 }, "identifierName": "_entityList" @@ -39961,15 +40077,15 @@ }, "property": { "type": "Identifier", - "start": 66104, - "end": 66105, + "start": 66140, + "end": 66141, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 29 }, "end": { - "line": 1877, + "line": 1878, "column": 30 }, "identifierName": "i" @@ -39980,15 +40096,15 @@ }, "property": { "type": "Identifier", - "start": 66107, - "end": 66113, + "start": 66143, + "end": 66149, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 32 }, "end": { - "line": 1877, + "line": 1878, "column": 38 }, "identifierName": "xrayed" @@ -39999,15 +40115,15 @@ }, "right": { "type": "Identifier", - "start": 66116, - "end": 66122, + "start": 66152, + "end": 66158, "loc": { "start": { - "line": 1877, + "line": 1878, "column": 41 }, "end": { - "line": 1877, + "line": 1878, "column": 47 }, "identifierName": "xrayed" @@ -40022,72 +40138,72 @@ }, { "type": "ExpressionStatement", - "start": 66142, - "end": 66158, + "start": 66178, + "end": 66194, "loc": { "start": { - "line": 1879, + "line": 1880, "column": 8 }, "end": { - "line": 1879, + "line": 1880, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 66142, - "end": 66157, + "start": 66178, + "end": 66193, "loc": { "start": { - "line": 1879, + "line": 1880, "column": 8 }, "end": { - "line": 1879, + "line": 1880, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 66142, - "end": 66155, + "start": 66178, + "end": 66191, "loc": { "start": { - "line": 1879, + "line": 1880, "column": 8 }, "end": { - "line": 1879, + "line": 1880, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 66142, - "end": 66146, + "start": 66178, + "end": 66182, "loc": { "start": { - "line": 1879, + "line": 1880, "column": 8 }, "end": { - "line": 1879, + "line": 1880, "column": 12 } } }, "property": { "type": "Identifier", - "start": 66147, - "end": 66155, + "start": 66183, + "end": 66191, "loc": { "start": { - "line": 1879, + "line": 1880, "column": 13 }, "end": { - "line": 1879, + "line": 1880, "column": 21 }, "identifierName": "glRedraw" @@ -40107,15 +40223,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", - "start": 65803, - "end": 65920, + "start": 65839, + "end": 65956, "loc": { "start": { - "line": 1868, + "line": 1869, "column": 4 }, "end": { - "line": 1872, + "line": 1873, "column": 7 } } @@ -40125,15 +40241,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", - "start": 66170, - "end": 66292, + "start": 66206, + "end": 66328, "loc": { "start": { - "line": 1882, + "line": 1883, "column": 4 }, "end": { - "line": 1886, + "line": 1887, "column": 7 } } @@ -40142,15 +40258,15 @@ }, { "type": "ClassMethod", - "start": 66297, - "end": 66377, + "start": 66333, + "end": 66413, "loc": { "start": { - "line": 1887, + "line": 1888, "column": 4 }, "end": { - "line": 1889, + "line": 1890, "column": 5 } }, @@ -40158,15 +40274,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 66301, - "end": 66312, + "start": 66337, + "end": 66348, "loc": { "start": { - "line": 1887, + "line": 1888, "column": 8 }, "end": { - "line": 1887, + "line": 1888, "column": 19 }, "identifierName": "highlighted" @@ -40181,87 +40297,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 66315, - "end": 66377, + "start": 66351, + "end": 66413, "loc": { "start": { - "line": 1887, + "line": 1888, "column": 22 }, "end": { - "line": 1889, + "line": 1890, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 66325, - "end": 66371, + "start": 66361, + "end": 66407, "loc": { "start": { - "line": 1888, + "line": 1889, "column": 8 }, "end": { - "line": 1888, + "line": 1889, "column": 54 } }, "argument": { "type": "BinaryExpression", - "start": 66333, - "end": 66369, + "start": 66369, + "end": 66405, "loc": { "start": { - "line": 1888, + "line": 1889, "column": 16 }, "end": { - "line": 1888, + "line": 1889, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 66333, - "end": 66365, + "start": 66369, + "end": 66401, "loc": { "start": { - "line": 1888, + "line": 1889, "column": 16 }, "end": { - "line": 1888, + "line": 1889, "column": 48 } }, "object": { "type": "ThisExpression", - "start": 66333, - "end": 66337, + "start": 66369, + "end": 66373, "loc": { "start": { - "line": 1888, + "line": 1889, "column": 16 }, "end": { - "line": 1888, + "line": 1889, "column": 20 } } }, "property": { "type": "Identifier", - "start": 66338, - "end": 66365, + "start": 66374, + "end": 66401, "loc": { "start": { - "line": 1888, + "line": 1889, "column": 21 }, "end": { - "line": 1888, + "line": 1889, "column": 48 }, "identifierName": "numHighlightedLayerPortions" @@ -40273,15 +40389,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 66368, - "end": 66369, + "start": 66404, + "end": 66405, "loc": { "start": { - "line": 1888, + "line": 1889, "column": 51 }, "end": { - "line": 1888, + "line": 1889, "column": 52 } }, @@ -40293,7 +40409,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 66332 + "parenStart": 66368 } } } @@ -40305,15 +40421,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", - "start": 66170, - "end": 66292, + "start": 66206, + "end": 66328, "loc": { "start": { - "line": 1882, + "line": 1883, "column": 4 }, "end": { - "line": 1886, + "line": 1887, "column": 7 } } @@ -40323,15 +40439,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", - "start": 66383, - "end": 66505, + "start": 66419, + "end": 66541, "loc": { "start": { - "line": 1891, + "line": 1892, "column": 4 }, "end": { - "line": 1895, + "line": 1896, "column": 7 } } @@ -40340,15 +40456,15 @@ }, { "type": "ClassMethod", - "start": 66510, - "end": 66789, + "start": 66546, + "end": 66825, "loc": { "start": { - "line": 1896, + "line": 1897, "column": 4 }, "end": { - "line": 1903, + "line": 1904, "column": 5 } }, @@ -40356,15 +40472,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 66514, - "end": 66525, + "start": 66550, + "end": 66561, "loc": { "start": { - "line": 1896, + "line": 1897, "column": 8 }, "end": { - "line": 1896, + "line": 1897, "column": 19 }, "identifierName": "highlighted" @@ -40379,15 +40495,15 @@ "params": [ { "type": "Identifier", - "start": 66526, - "end": 66537, + "start": 66562, + "end": 66573, "loc": { "start": { - "line": 1896, + "line": 1897, "column": 20 }, "end": { - "line": 1896, + "line": 1897, "column": 31 }, "identifierName": "highlighted" @@ -40397,59 +40513,59 @@ ], "body": { "type": "BlockStatement", - "start": 66539, - "end": 66789, + "start": 66575, + "end": 66825, "loc": { "start": { - "line": 1896, + "line": 1897, "column": 33 }, "end": { - "line": 1903, + "line": 1904, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 66549, - "end": 66577, + "start": 66585, + "end": 66613, "loc": { "start": { - "line": 1897, + "line": 1898, "column": 8 }, "end": { - "line": 1897, + "line": 1898, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 66549, - "end": 66576, + "start": 66585, + "end": 66612, "loc": { "start": { - "line": 1897, + "line": 1898, "column": 8 }, "end": { - "line": 1897, + "line": 1898, "column": 35 } }, "operator": "=", "left": { "type": "Identifier", - "start": 66549, - "end": 66560, + "start": 66585, + "end": 66596, "loc": { "start": { - "line": 1897, + "line": 1898, "column": 8 }, "end": { - "line": 1897, + "line": 1898, "column": 19 }, "identifierName": "highlighted" @@ -40458,15 +40574,15 @@ }, "right": { "type": "UnaryExpression", - "start": 66563, - "end": 66576, + "start": 66599, + "end": 66612, "loc": { "start": { - "line": 1897, + "line": 1898, "column": 22 }, "end": { - "line": 1897, + "line": 1898, "column": 35 } }, @@ -40474,15 +40590,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 66564, - "end": 66576, + "start": 66600, + "end": 66612, "loc": { "start": { - "line": 1897, + "line": 1898, "column": 23 }, "end": { - "line": 1897, + "line": 1898, "column": 35 } }, @@ -40490,15 +40606,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 66565, - "end": 66576, + "start": 66601, + "end": 66612, "loc": { "start": { - "line": 1897, + "line": 1898, "column": 24 }, "end": { - "line": 1897, + "line": 1898, "column": 35 }, "identifierName": "highlighted" @@ -40517,73 +40633,73 @@ }, { "type": "ExpressionStatement", - "start": 66586, - "end": 66618, + "start": 66622, + "end": 66654, "loc": { "start": { - "line": 1898, + "line": 1899, "column": 8 }, "end": { - "line": 1898, + "line": 1899, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 66586, - "end": 66617, + "start": 66622, + "end": 66653, "loc": { "start": { - "line": 1898, + "line": 1899, "column": 8 }, "end": { - "line": 1898, + "line": 1899, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 66586, - "end": 66603, + "start": 66622, + "end": 66639, "loc": { "start": { - "line": 1898, + "line": 1899, "column": 8 }, "end": { - "line": 1898, + "line": 1899, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 66586, - "end": 66590, + "start": 66622, + "end": 66626, "loc": { "start": { - "line": 1898, + "line": 1899, "column": 8 }, "end": { - "line": 1898, + "line": 1899, "column": 12 } } }, "property": { "type": "Identifier", - "start": 66591, - "end": 66603, + "start": 66627, + "end": 66639, "loc": { "start": { - "line": 1898, + "line": 1899, "column": 13 }, "end": { - "line": 1898, + "line": 1899, "column": 25 }, "identifierName": "_highlighted" @@ -40594,15 +40710,15 @@ }, "right": { "type": "Identifier", - "start": 66606, - "end": 66617, + "start": 66642, + "end": 66653, "loc": { "start": { - "line": 1898, + "line": 1899, "column": 28 }, "end": { - "line": 1898, + "line": 1899, "column": 39 }, "identifierName": "highlighted" @@ -40613,58 +40729,58 @@ }, { "type": "ForStatement", - "start": 66627, - "end": 66758, + "start": 66663, + "end": 66794, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 8 }, "end": { - "line": 1901, + "line": 1902, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 66632, - "end": 66672, + "start": 66668, + "end": 66708, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 13 }, "end": { - "line": 1899, + "line": 1900, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 66636, - "end": 66641, + "start": 66672, + "end": 66677, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 17 }, "end": { - "line": 1899, + "line": 1900, "column": 22 } }, "id": { "type": "Identifier", - "start": 66636, - "end": 66637, + "start": 66672, + "end": 66673, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 17 }, "end": { - "line": 1899, + "line": 1900, "column": 18 }, "identifierName": "i" @@ -40673,15 +40789,15 @@ }, "init": { "type": "NumericLiteral", - "start": 66640, - "end": 66641, + "start": 66676, + "end": 66677, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 21 }, "end": { - "line": 1899, + "line": 1900, "column": 22 } }, @@ -40694,29 +40810,29 @@ }, { "type": "VariableDeclarator", - "start": 66643, - "end": 66672, + "start": 66679, + "end": 66708, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 24 }, "end": { - "line": 1899, + "line": 1900, "column": 53 } }, "id": { "type": "Identifier", - "start": 66643, - "end": 66646, + "start": 66679, + "end": 66682, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 24 }, "end": { - "line": 1899, + "line": 1900, "column": 27 }, "identifierName": "len" @@ -40725,58 +40841,58 @@ }, "init": { "type": "MemberExpression", - "start": 66649, - "end": 66672, + "start": 66685, + "end": 66708, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 30 }, "end": { - "line": 1899, + "line": 1900, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 66649, - "end": 66665, + "start": 66685, + "end": 66701, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 30 }, "end": { - "line": 1899, + "line": 1900, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 66649, - "end": 66653, + "start": 66685, + "end": 66689, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 30 }, "end": { - "line": 1899, + "line": 1900, "column": 34 } } }, "property": { "type": "Identifier", - "start": 66654, - "end": 66665, + "start": 66690, + "end": 66701, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 35 }, "end": { - "line": 1899, + "line": 1900, "column": 46 }, "identifierName": "_entityList" @@ -40787,15 +40903,15 @@ }, "property": { "type": "Identifier", - "start": 66666, - "end": 66672, + "start": 66702, + "end": 66708, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 47 }, "end": { - "line": 1899, + "line": 1900, "column": 53 }, "identifierName": "length" @@ -40810,29 +40926,29 @@ }, "test": { "type": "BinaryExpression", - "start": 66674, - "end": 66681, + "start": 66710, + "end": 66717, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 55 }, "end": { - "line": 1899, + "line": 1900, "column": 62 } }, "left": { "type": "Identifier", - "start": 66674, - "end": 66675, + "start": 66710, + "end": 66711, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 55 }, "end": { - "line": 1899, + "line": 1900, "column": 56 }, "identifierName": "i" @@ -40842,15 +40958,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 66678, - "end": 66681, + "start": 66714, + "end": 66717, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 59 }, "end": { - "line": 1899, + "line": 1900, "column": 62 }, "identifierName": "len" @@ -40860,15 +40976,15 @@ }, "update": { "type": "UpdateExpression", - "start": 66683, - "end": 66686, + "start": 66719, + "end": 66722, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 64 }, "end": { - "line": 1899, + "line": 1900, "column": 67 } }, @@ -40876,15 +40992,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 66683, - "end": 66684, + "start": 66719, + "end": 66720, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 64 }, "end": { - "line": 1899, + "line": 1900, "column": 65 }, "identifierName": "i" @@ -40894,116 +41010,116 @@ }, "body": { "type": "BlockStatement", - "start": 66688, - "end": 66758, + "start": 66724, + "end": 66794, "loc": { "start": { - "line": 1899, + "line": 1900, "column": 69 }, "end": { - "line": 1901, + "line": 1902, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 66702, - "end": 66748, + "start": 66738, + "end": 66784, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 12 }, "end": { - "line": 1900, + "line": 1901, "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 66702, - "end": 66747, + "start": 66738, + "end": 66783, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 12 }, "end": { - "line": 1900, + "line": 1901, "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 66702, - "end": 66733, + "start": 66738, + "end": 66769, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 12 }, "end": { - "line": 1900, + "line": 1901, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 66702, - "end": 66721, + "start": 66738, + "end": 66757, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 12 }, "end": { - "line": 1900, + "line": 1901, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 66702, - "end": 66718, + "start": 66738, + "end": 66754, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 12 }, "end": { - "line": 1900, + "line": 1901, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 66702, - "end": 66706, + "start": 66738, + "end": 66742, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 12 }, "end": { - "line": 1900, + "line": 1901, "column": 16 } } }, "property": { "type": "Identifier", - "start": 66707, - "end": 66718, + "start": 66743, + "end": 66754, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 17 }, "end": { - "line": 1900, + "line": 1901, "column": 28 }, "identifierName": "_entityList" @@ -41014,15 +41130,15 @@ }, "property": { "type": "Identifier", - "start": 66719, - "end": 66720, + "start": 66755, + "end": 66756, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 29 }, "end": { - "line": 1900, + "line": 1901, "column": 30 }, "identifierName": "i" @@ -41033,15 +41149,15 @@ }, "property": { "type": "Identifier", - "start": 66722, - "end": 66733, + "start": 66758, + "end": 66769, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 32 }, "end": { - "line": 1900, + "line": 1901, "column": 43 }, "identifierName": "highlighted" @@ -41052,15 +41168,15 @@ }, "right": { "type": "Identifier", - "start": 66736, - "end": 66747, + "start": 66772, + "end": 66783, "loc": { "start": { - "line": 1900, + "line": 1901, "column": 46 }, "end": { - "line": 1900, + "line": 1901, "column": 57 }, "identifierName": "highlighted" @@ -41075,72 +41191,72 @@ }, { "type": "ExpressionStatement", - "start": 66767, - "end": 66783, + "start": 66803, + "end": 66819, "loc": { "start": { - "line": 1902, + "line": 1903, "column": 8 }, "end": { - "line": 1902, + "line": 1903, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 66767, - "end": 66782, + "start": 66803, + "end": 66818, "loc": { "start": { - "line": 1902, + "line": 1903, "column": 8 }, "end": { - "line": 1902, + "line": 1903, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 66767, - "end": 66780, + "start": 66803, + "end": 66816, "loc": { "start": { - "line": 1902, + "line": 1903, "column": 8 }, "end": { - "line": 1902, + "line": 1903, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 66767, - "end": 66771, + "start": 66803, + "end": 66807, "loc": { "start": { - "line": 1902, + "line": 1903, "column": 8 }, "end": { - "line": 1902, + "line": 1903, "column": 12 } } }, "property": { "type": "Identifier", - "start": 66772, - "end": 66780, + "start": 66808, + "end": 66816, "loc": { "start": { - "line": 1902, + "line": 1903, "column": 13 }, "end": { - "line": 1902, + "line": 1903, "column": 21 }, "identifierName": "glRedraw" @@ -41160,15 +41276,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", - "start": 66383, - "end": 66505, + "start": 66419, + "end": 66541, "loc": { "start": { - "line": 1891, + "line": 1892, "column": 4 }, "end": { - "line": 1895, + "line": 1896, "column": 7 } } @@ -41178,15 +41294,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", - "start": 66795, - "end": 66914, + "start": 66831, + "end": 66950, "loc": { "start": { - "line": 1905, + "line": 1906, "column": 4 }, "end": { - "line": 1909, + "line": 1910, "column": 7 } } @@ -41195,15 +41311,15 @@ }, { "type": "ClassMethod", - "start": 66919, - "end": 66993, + "start": 66955, + "end": 67029, "loc": { "start": { - "line": 1910, + "line": 1911, "column": 4 }, "end": { - "line": 1912, + "line": 1913, "column": 5 } }, @@ -41211,15 +41327,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 66923, - "end": 66931, + "start": 66959, + "end": 66967, "loc": { "start": { - "line": 1910, + "line": 1911, "column": 8 }, "end": { - "line": 1910, + "line": 1911, "column": 16 }, "identifierName": "selected" @@ -41234,87 +41350,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 66934, - "end": 66993, + "start": 66970, + "end": 67029, "loc": { "start": { - "line": 1910, + "line": 1911, "column": 19 }, "end": { - "line": 1912, + "line": 1913, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 66944, - "end": 66987, + "start": 66980, + "end": 67023, "loc": { "start": { - "line": 1911, + "line": 1912, "column": 8 }, "end": { - "line": 1911, + "line": 1912, "column": 51 } }, "argument": { "type": "BinaryExpression", - "start": 66952, - "end": 66985, + "start": 66988, + "end": 67021, "loc": { "start": { - "line": 1911, + "line": 1912, "column": 16 }, "end": { - "line": 1911, + "line": 1912, "column": 49 } }, "left": { "type": "MemberExpression", - "start": 66952, - "end": 66981, + "start": 66988, + "end": 67017, "loc": { "start": { - "line": 1911, + "line": 1912, "column": 16 }, "end": { - "line": 1911, + "line": 1912, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 66952, - "end": 66956, + "start": 66988, + "end": 66992, "loc": { "start": { - "line": 1911, + "line": 1912, "column": 16 }, "end": { - "line": 1911, + "line": 1912, "column": 20 } } }, "property": { "type": "Identifier", - "start": 66957, - "end": 66981, + "start": 66993, + "end": 67017, "loc": { "start": { - "line": 1911, + "line": 1912, "column": 21 }, "end": { - "line": 1911, + "line": 1912, "column": 45 }, "identifierName": "numSelectedLayerPortions" @@ -41326,15 +41442,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 66984, - "end": 66985, + "start": 67020, + "end": 67021, "loc": { "start": { - "line": 1911, + "line": 1912, "column": 48 }, "end": { - "line": 1911, + "line": 1912, "column": 49 } }, @@ -41346,7 +41462,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 66951 + "parenStart": 66987 } } } @@ -41358,15 +41474,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", - "start": 66795, - "end": 66914, + "start": 66831, + "end": 66950, "loc": { "start": { - "line": 1905, + "line": 1906, "column": 4 }, "end": { - "line": 1909, + "line": 1910, "column": 7 } } @@ -41376,15 +41492,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", - "start": 66999, - "end": 67118, + "start": 67035, + "end": 67154, "loc": { "start": { - "line": 1914, + "line": 1915, "column": 4 }, "end": { - "line": 1918, + "line": 1919, "column": 7 } } @@ -41393,15 +41509,15 @@ }, { "type": "ClassMethod", - "start": 67123, - "end": 67378, + "start": 67159, + "end": 67414, "loc": { "start": { - "line": 1919, + "line": 1920, "column": 4 }, "end": { - "line": 1926, + "line": 1927, "column": 5 } }, @@ -41409,15 +41525,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 67127, - "end": 67135, + "start": 67163, + "end": 67171, "loc": { "start": { - "line": 1919, + "line": 1920, "column": 8 }, "end": { - "line": 1919, + "line": 1920, "column": 16 }, "identifierName": "selected" @@ -41432,15 +41548,15 @@ "params": [ { "type": "Identifier", - "start": 67136, - "end": 67144, + "start": 67172, + "end": 67180, "loc": { "start": { - "line": 1919, + "line": 1920, "column": 17 }, "end": { - "line": 1919, + "line": 1920, "column": 25 }, "identifierName": "selected" @@ -41450,59 +41566,59 @@ ], "body": { "type": "BlockStatement", - "start": 67146, - "end": 67378, + "start": 67182, + "end": 67414, "loc": { "start": { - "line": 1919, + "line": 1920, "column": 27 }, "end": { - "line": 1926, + "line": 1927, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 67156, - "end": 67178, + "start": 67192, + "end": 67214, "loc": { "start": { - "line": 1920, + "line": 1921, "column": 8 }, "end": { - "line": 1920, + "line": 1921, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 67156, - "end": 67177, + "start": 67192, + "end": 67213, "loc": { "start": { - "line": 1920, + "line": 1921, "column": 8 }, "end": { - "line": 1920, + "line": 1921, "column": 29 } }, "operator": "=", "left": { "type": "Identifier", - "start": 67156, - "end": 67164, + "start": 67192, + "end": 67200, "loc": { "start": { - "line": 1920, + "line": 1921, "column": 8 }, "end": { - "line": 1920, + "line": 1921, "column": 16 }, "identifierName": "selected" @@ -41511,15 +41627,15 @@ }, "right": { "type": "UnaryExpression", - "start": 67167, - "end": 67177, + "start": 67203, + "end": 67213, "loc": { "start": { - "line": 1920, + "line": 1921, "column": 19 }, "end": { - "line": 1920, + "line": 1921, "column": 29 } }, @@ -41527,15 +41643,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 67168, - "end": 67177, + "start": 67204, + "end": 67213, "loc": { "start": { - "line": 1920, + "line": 1921, "column": 20 }, "end": { - "line": 1920, + "line": 1921, "column": 29 } }, @@ -41543,15 +41659,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 67169, - "end": 67177, + "start": 67205, + "end": 67213, "loc": { "start": { - "line": 1920, + "line": 1921, "column": 21 }, "end": { - "line": 1920, + "line": 1921, "column": 29 }, "identifierName": "selected" @@ -41570,73 +41686,73 @@ }, { "type": "ExpressionStatement", - "start": 67187, - "end": 67213, + "start": 67223, + "end": 67249, "loc": { "start": { - "line": 1921, + "line": 1922, "column": 8 }, "end": { - "line": 1921, + "line": 1922, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 67187, - "end": 67212, + "start": 67223, + "end": 67248, "loc": { "start": { - "line": 1921, + "line": 1922, "column": 8 }, "end": { - "line": 1921, + "line": 1922, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 67187, - "end": 67201, + "start": 67223, + "end": 67237, "loc": { "start": { - "line": 1921, + "line": 1922, "column": 8 }, "end": { - "line": 1921, + "line": 1922, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 67187, - "end": 67191, + "start": 67223, + "end": 67227, "loc": { "start": { - "line": 1921, + "line": 1922, "column": 8 }, "end": { - "line": 1921, + "line": 1922, "column": 12 } } }, "property": { "type": "Identifier", - "start": 67192, - "end": 67201, + "start": 67228, + "end": 67237, "loc": { "start": { - "line": 1921, + "line": 1922, "column": 13 }, "end": { - "line": 1921, + "line": 1922, "column": 22 }, "identifierName": "_selected" @@ -41647,15 +41763,15 @@ }, "right": { "type": "Identifier", - "start": 67204, - "end": 67212, + "start": 67240, + "end": 67248, "loc": { "start": { - "line": 1921, + "line": 1922, "column": 25 }, "end": { - "line": 1921, + "line": 1922, "column": 33 }, "identifierName": "selected" @@ -41666,58 +41782,58 @@ }, { "type": "ForStatement", - "start": 67222, - "end": 67347, + "start": 67258, + "end": 67383, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 8 }, "end": { - "line": 1924, + "line": 1925, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 67227, - "end": 67267, + "start": 67263, + "end": 67303, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 13 }, "end": { - "line": 1922, + "line": 1923, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 67231, - "end": 67236, + "start": 67267, + "end": 67272, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 17 }, "end": { - "line": 1922, + "line": 1923, "column": 22 } }, "id": { "type": "Identifier", - "start": 67231, - "end": 67232, + "start": 67267, + "end": 67268, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 17 }, "end": { - "line": 1922, + "line": 1923, "column": 18 }, "identifierName": "i" @@ -41726,15 +41842,15 @@ }, "init": { "type": "NumericLiteral", - "start": 67235, - "end": 67236, + "start": 67271, + "end": 67272, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 21 }, "end": { - "line": 1922, + "line": 1923, "column": 22 } }, @@ -41747,29 +41863,29 @@ }, { "type": "VariableDeclarator", - "start": 67238, - "end": 67267, + "start": 67274, + "end": 67303, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 24 }, "end": { - "line": 1922, + "line": 1923, "column": 53 } }, "id": { "type": "Identifier", - "start": 67238, - "end": 67241, + "start": 67274, + "end": 67277, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 24 }, "end": { - "line": 1922, + "line": 1923, "column": 27 }, "identifierName": "len" @@ -41778,58 +41894,58 @@ }, "init": { "type": "MemberExpression", - "start": 67244, - "end": 67267, + "start": 67280, + "end": 67303, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 30 }, "end": { - "line": 1922, + "line": 1923, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 67244, - "end": 67260, + "start": 67280, + "end": 67296, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 30 }, "end": { - "line": 1922, + "line": 1923, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 67244, - "end": 67248, + "start": 67280, + "end": 67284, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 30 }, "end": { - "line": 1922, + "line": 1923, "column": 34 } } }, "property": { "type": "Identifier", - "start": 67249, - "end": 67260, + "start": 67285, + "end": 67296, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 35 }, "end": { - "line": 1922, + "line": 1923, "column": 46 }, "identifierName": "_entityList" @@ -41840,15 +41956,15 @@ }, "property": { "type": "Identifier", - "start": 67261, - "end": 67267, + "start": 67297, + "end": 67303, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 47 }, "end": { - "line": 1922, + "line": 1923, "column": 53 }, "identifierName": "length" @@ -41863,29 +41979,29 @@ }, "test": { "type": "BinaryExpression", - "start": 67269, - "end": 67276, + "start": 67305, + "end": 67312, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 55 }, "end": { - "line": 1922, + "line": 1923, "column": 62 } }, "left": { "type": "Identifier", - "start": 67269, - "end": 67270, + "start": 67305, + "end": 67306, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 55 }, "end": { - "line": 1922, + "line": 1923, "column": 56 }, "identifierName": "i" @@ -41895,15 +42011,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 67273, - "end": 67276, + "start": 67309, + "end": 67312, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 59 }, "end": { - "line": 1922, + "line": 1923, "column": 62 }, "identifierName": "len" @@ -41913,15 +42029,15 @@ }, "update": { "type": "UpdateExpression", - "start": 67278, - "end": 67281, + "start": 67314, + "end": 67317, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 64 }, "end": { - "line": 1922, + "line": 1923, "column": 67 } }, @@ -41929,15 +42045,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 67278, - "end": 67279, + "start": 67314, + "end": 67315, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 64 }, "end": { - "line": 1922, + "line": 1923, "column": 65 }, "identifierName": "i" @@ -41947,116 +42063,116 @@ }, "body": { "type": "BlockStatement", - "start": 67283, - "end": 67347, + "start": 67319, + "end": 67383, "loc": { "start": { - "line": 1922, + "line": 1923, "column": 69 }, "end": { - "line": 1924, + "line": 1925, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 67297, - "end": 67337, + "start": 67333, + "end": 67373, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 12 }, "end": { - "line": 1923, + "line": 1924, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 67297, - "end": 67336, + "start": 67333, + "end": 67372, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 12 }, "end": { - "line": 1923, + "line": 1924, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 67297, - "end": 67325, + "start": 67333, + "end": 67361, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 12 }, "end": { - "line": 1923, + "line": 1924, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 67297, - "end": 67316, + "start": 67333, + "end": 67352, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 12 }, "end": { - "line": 1923, + "line": 1924, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 67297, - "end": 67313, + "start": 67333, + "end": 67349, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 12 }, "end": { - "line": 1923, + "line": 1924, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 67297, - "end": 67301, + "start": 67333, + "end": 67337, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 12 }, "end": { - "line": 1923, + "line": 1924, "column": 16 } } }, "property": { "type": "Identifier", - "start": 67302, - "end": 67313, + "start": 67338, + "end": 67349, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 17 }, "end": { - "line": 1923, + "line": 1924, "column": 28 }, "identifierName": "_entityList" @@ -42067,15 +42183,15 @@ }, "property": { "type": "Identifier", - "start": 67314, - "end": 67315, + "start": 67350, + "end": 67351, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 29 }, "end": { - "line": 1923, + "line": 1924, "column": 30 }, "identifierName": "i" @@ -42086,15 +42202,15 @@ }, "property": { "type": "Identifier", - "start": 67317, - "end": 67325, + "start": 67353, + "end": 67361, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 32 }, "end": { - "line": 1923, + "line": 1924, "column": 40 }, "identifierName": "selected" @@ -42105,15 +42221,15 @@ }, "right": { "type": "Identifier", - "start": 67328, - "end": 67336, + "start": 67364, + "end": 67372, "loc": { "start": { - "line": 1923, + "line": 1924, "column": 43 }, "end": { - "line": 1923, + "line": 1924, "column": 51 }, "identifierName": "selected" @@ -42128,72 +42244,72 @@ }, { "type": "ExpressionStatement", - "start": 67356, - "end": 67372, + "start": 67392, + "end": 67408, "loc": { "start": { - "line": 1925, + "line": 1926, "column": 8 }, "end": { - "line": 1925, + "line": 1926, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 67356, - "end": 67371, + "start": 67392, + "end": 67407, "loc": { "start": { - "line": 1925, + "line": 1926, "column": 8 }, "end": { - "line": 1925, + "line": 1926, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 67356, - "end": 67369, + "start": 67392, + "end": 67405, "loc": { "start": { - "line": 1925, + "line": 1926, "column": 8 }, "end": { - "line": 1925, + "line": 1926, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 67356, - "end": 67360, + "start": 67392, + "end": 67396, "loc": { "start": { - "line": 1925, + "line": 1926, "column": 8 }, "end": { - "line": 1925, + "line": 1926, "column": 12 } } }, "property": { "type": "Identifier", - "start": 67361, - "end": 67369, + "start": 67397, + "end": 67405, "loc": { "start": { - "line": 1925, + "line": 1926, "column": 13 }, "end": { - "line": 1925, + "line": 1926, "column": 21 }, "identifierName": "glRedraw" @@ -42213,15 +42329,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", - "start": 66999, - "end": 67118, + "start": 67035, + "end": 67154, "loc": { "start": { - "line": 1914, + "line": 1915, "column": 4 }, "end": { - "line": 1918, + "line": 1919, "column": 7 } } @@ -42231,15 +42347,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", - "start": 67384, - "end": 67512, + "start": 67420, + "end": 67548, "loc": { "start": { - "line": 1928, + "line": 1929, "column": 4 }, "end": { - "line": 1932, + "line": 1933, "column": 7 } } @@ -42248,15 +42364,15 @@ }, { "type": "ClassMethod", - "start": 67517, - "end": 67585, + "start": 67553, + "end": 67621, "loc": { "start": { - "line": 1933, + "line": 1934, "column": 4 }, "end": { - "line": 1935, + "line": 1936, "column": 5 } }, @@ -42264,15 +42380,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 67521, - "end": 67526, + "start": 67557, + "end": 67562, "loc": { "start": { - "line": 1933, + "line": 1934, "column": 8 }, "end": { - "line": 1933, + "line": 1934, "column": 13 }, "identifierName": "edges" @@ -42287,87 +42403,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 67529, - "end": 67585, + "start": 67565, + "end": 67621, "loc": { "start": { - "line": 1933, + "line": 1934, "column": 16 }, "end": { - "line": 1935, + "line": 1936, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 67539, - "end": 67579, + "start": 67575, + "end": 67615, "loc": { "start": { - "line": 1934, + "line": 1935, "column": 8 }, "end": { - "line": 1934, + "line": 1935, "column": 48 } }, "argument": { "type": "BinaryExpression", - "start": 67547, - "end": 67577, + "start": 67583, + "end": 67613, "loc": { "start": { - "line": 1934, + "line": 1935, "column": 16 }, "end": { - "line": 1934, + "line": 1935, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 67547, - "end": 67573, + "start": 67583, + "end": 67609, "loc": { "start": { - "line": 1934, + "line": 1935, "column": 16 }, "end": { - "line": 1934, + "line": 1935, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 67547, - "end": 67551, + "start": 67583, + "end": 67587, "loc": { "start": { - "line": 1934, + "line": 1935, "column": 16 }, "end": { - "line": 1934, + "line": 1935, "column": 20 } } }, "property": { "type": "Identifier", - "start": 67552, - "end": 67573, + "start": 67588, + "end": 67609, "loc": { "start": { - "line": 1934, + "line": 1935, "column": 21 }, "end": { - "line": 1934, + "line": 1935, "column": 42 }, "identifierName": "numEdgesLayerPortions" @@ -42379,15 +42495,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 67576, - "end": 67577, + "start": 67612, + "end": 67613, "loc": { "start": { - "line": 1934, + "line": 1935, "column": 45 }, "end": { - "line": 1934, + "line": 1935, "column": 46 } }, @@ -42399,7 +42515,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 67546 + "parenStart": 67582 } } } @@ -42411,15 +42527,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", - "start": 67384, - "end": 67512, + "start": 67420, + "end": 67548, "loc": { "start": { - "line": 1928, + "line": 1929, "column": 4 }, "end": { - "line": 1932, + "line": 1933, "column": 7 } } @@ -42429,15 +42545,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", - "start": 67591, - "end": 67719, + "start": 67627, + "end": 67755, "loc": { "start": { - "line": 1937, + "line": 1938, "column": 4 }, "end": { - "line": 1941, + "line": 1942, "column": 7 } } @@ -42446,15 +42562,15 @@ }, { "type": "ClassMethod", - "start": 67724, - "end": 67955, + "start": 67760, + "end": 67991, "loc": { "start": { - "line": 1942, + "line": 1943, "column": 4 }, "end": { - "line": 1949, + "line": 1950, "column": 5 } }, @@ -42462,15 +42578,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 67728, - "end": 67733, + "start": 67764, + "end": 67769, "loc": { "start": { - "line": 1942, + "line": 1943, "column": 8 }, "end": { - "line": 1942, + "line": 1943, "column": 13 }, "identifierName": "edges" @@ -42485,15 +42601,15 @@ "params": [ { "type": "Identifier", - "start": 67734, - "end": 67739, + "start": 67770, + "end": 67775, "loc": { "start": { - "line": 1942, + "line": 1943, "column": 14 }, "end": { - "line": 1942, + "line": 1943, "column": 19 }, "identifierName": "edges" @@ -42503,59 +42619,59 @@ ], "body": { "type": "BlockStatement", - "start": 67741, - "end": 67955, + "start": 67777, + "end": 67991, "loc": { "start": { - "line": 1942, + "line": 1943, "column": 21 }, "end": { - "line": 1949, + "line": 1950, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 67751, - "end": 67767, + "start": 67787, + "end": 67803, "loc": { "start": { - "line": 1943, + "line": 1944, "column": 8 }, "end": { - "line": 1943, + "line": 1944, "column": 24 } }, "expression": { "type": "AssignmentExpression", - "start": 67751, - "end": 67766, + "start": 67787, + "end": 67802, "loc": { "start": { - "line": 1943, + "line": 1944, "column": 8 }, "end": { - "line": 1943, + "line": 1944, "column": 23 } }, "operator": "=", "left": { "type": "Identifier", - "start": 67751, - "end": 67756, + "start": 67787, + "end": 67792, "loc": { "start": { - "line": 1943, + "line": 1944, "column": 8 }, "end": { - "line": 1943, + "line": 1944, "column": 13 }, "identifierName": "edges" @@ -42564,15 +42680,15 @@ }, "right": { "type": "UnaryExpression", - "start": 67759, - "end": 67766, + "start": 67795, + "end": 67802, "loc": { "start": { - "line": 1943, + "line": 1944, "column": 16 }, "end": { - "line": 1943, + "line": 1944, "column": 23 } }, @@ -42580,15 +42696,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 67760, - "end": 67766, + "start": 67796, + "end": 67802, "loc": { "start": { - "line": 1943, + "line": 1944, "column": 17 }, "end": { - "line": 1943, + "line": 1944, "column": 23 } }, @@ -42596,15 +42712,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 67761, - "end": 67766, + "start": 67797, + "end": 67802, "loc": { "start": { - "line": 1943, + "line": 1944, "column": 18 }, "end": { - "line": 1943, + "line": 1944, "column": 23 }, "identifierName": "edges" @@ -42623,73 +42739,73 @@ }, { "type": "ExpressionStatement", - "start": 67776, - "end": 67796, + "start": 67812, + "end": 67832, "loc": { "start": { - "line": 1944, + "line": 1945, "column": 8 }, "end": { - "line": 1944, + "line": 1945, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 67776, - "end": 67795, + "start": 67812, + "end": 67831, "loc": { "start": { - "line": 1944, + "line": 1945, "column": 8 }, "end": { - "line": 1944, + "line": 1945, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 67776, - "end": 67787, + "start": 67812, + "end": 67823, "loc": { "start": { - "line": 1944, + "line": 1945, "column": 8 }, "end": { - "line": 1944, + "line": 1945, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 67776, - "end": 67780, + "start": 67812, + "end": 67816, "loc": { "start": { - "line": 1944, + "line": 1945, "column": 8 }, "end": { - "line": 1944, + "line": 1945, "column": 12 } } }, "property": { "type": "Identifier", - "start": 67781, - "end": 67787, + "start": 67817, + "end": 67823, "loc": { "start": { - "line": 1944, + "line": 1945, "column": 13 }, "end": { - "line": 1944, + "line": 1945, "column": 19 }, "identifierName": "_edges" @@ -42700,15 +42816,15 @@ }, "right": { "type": "Identifier", - "start": 67790, - "end": 67795, + "start": 67826, + "end": 67831, "loc": { "start": { - "line": 1944, + "line": 1945, "column": 22 }, "end": { - "line": 1944, + "line": 1945, "column": 27 }, "identifierName": "edges" @@ -42719,58 +42835,58 @@ }, { "type": "ForStatement", - "start": 67805, - "end": 67924, + "start": 67841, + "end": 67960, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 8 }, "end": { - "line": 1947, + "line": 1948, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 67810, - "end": 67850, + "start": 67846, + "end": 67886, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 13 }, "end": { - "line": 1945, + "line": 1946, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 67814, - "end": 67819, + "start": 67850, + "end": 67855, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 17 }, "end": { - "line": 1945, + "line": 1946, "column": 22 } }, "id": { "type": "Identifier", - "start": 67814, - "end": 67815, + "start": 67850, + "end": 67851, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 17 }, "end": { - "line": 1945, + "line": 1946, "column": 18 }, "identifierName": "i" @@ -42779,15 +42895,15 @@ }, "init": { "type": "NumericLiteral", - "start": 67818, - "end": 67819, + "start": 67854, + "end": 67855, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 21 }, "end": { - "line": 1945, + "line": 1946, "column": 22 } }, @@ -42800,29 +42916,29 @@ }, { "type": "VariableDeclarator", - "start": 67821, - "end": 67850, + "start": 67857, + "end": 67886, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 24 }, "end": { - "line": 1945, + "line": 1946, "column": 53 } }, "id": { "type": "Identifier", - "start": 67821, - "end": 67824, + "start": 67857, + "end": 67860, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 24 }, "end": { - "line": 1945, + "line": 1946, "column": 27 }, "identifierName": "len" @@ -42831,58 +42947,58 @@ }, "init": { "type": "MemberExpression", - "start": 67827, - "end": 67850, + "start": 67863, + "end": 67886, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 30 }, "end": { - "line": 1945, + "line": 1946, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 67827, - "end": 67843, + "start": 67863, + "end": 67879, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 30 }, "end": { - "line": 1945, + "line": 1946, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 67827, - "end": 67831, + "start": 67863, + "end": 67867, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 30 }, "end": { - "line": 1945, + "line": 1946, "column": 34 } } }, "property": { "type": "Identifier", - "start": 67832, - "end": 67843, + "start": 67868, + "end": 67879, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 35 }, "end": { - "line": 1945, + "line": 1946, "column": 46 }, "identifierName": "_entityList" @@ -42893,15 +43009,15 @@ }, "property": { "type": "Identifier", - "start": 67844, - "end": 67850, + "start": 67880, + "end": 67886, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 47 }, "end": { - "line": 1945, + "line": 1946, "column": 53 }, "identifierName": "length" @@ -42916,29 +43032,29 @@ }, "test": { "type": "BinaryExpression", - "start": 67852, - "end": 67859, + "start": 67888, + "end": 67895, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 55 }, "end": { - "line": 1945, + "line": 1946, "column": 62 } }, "left": { "type": "Identifier", - "start": 67852, - "end": 67853, + "start": 67888, + "end": 67889, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 55 }, "end": { - "line": 1945, + "line": 1946, "column": 56 }, "identifierName": "i" @@ -42948,15 +43064,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 67856, - "end": 67859, + "start": 67892, + "end": 67895, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 59 }, "end": { - "line": 1945, + "line": 1946, "column": 62 }, "identifierName": "len" @@ -42966,15 +43082,15 @@ }, "update": { "type": "UpdateExpression", - "start": 67861, - "end": 67864, + "start": 67897, + "end": 67900, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 64 }, "end": { - "line": 1945, + "line": 1946, "column": 67 } }, @@ -42982,15 +43098,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 67861, - "end": 67862, + "start": 67897, + "end": 67898, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 64 }, "end": { - "line": 1945, + "line": 1946, "column": 65 }, "identifierName": "i" @@ -43000,116 +43116,116 @@ }, "body": { "type": "BlockStatement", - "start": 67866, - "end": 67924, + "start": 67902, + "end": 67960, "loc": { "start": { - "line": 1945, + "line": 1946, "column": 69 }, "end": { - "line": 1947, + "line": 1948, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 67880, - "end": 67914, + "start": 67916, + "end": 67950, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 12 }, "end": { - "line": 1946, + "line": 1947, "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 67880, - "end": 67913, + "start": 67916, + "end": 67949, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 12 }, "end": { - "line": 1946, + "line": 1947, "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 67880, - "end": 67905, + "start": 67916, + "end": 67941, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 12 }, "end": { - "line": 1946, + "line": 1947, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 67880, - "end": 67899, + "start": 67916, + "end": 67935, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 12 }, "end": { - "line": 1946, + "line": 1947, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 67880, - "end": 67896, + "start": 67916, + "end": 67932, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 12 }, "end": { - "line": 1946, + "line": 1947, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 67880, - "end": 67884, + "start": 67916, + "end": 67920, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 12 }, "end": { - "line": 1946, + "line": 1947, "column": 16 } } }, "property": { "type": "Identifier", - "start": 67885, - "end": 67896, + "start": 67921, + "end": 67932, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 17 }, "end": { - "line": 1946, + "line": 1947, "column": 28 }, "identifierName": "_entityList" @@ -43120,15 +43236,15 @@ }, "property": { "type": "Identifier", - "start": 67897, - "end": 67898, + "start": 67933, + "end": 67934, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 29 }, "end": { - "line": 1946, + "line": 1947, "column": 30 }, "identifierName": "i" @@ -43139,15 +43255,15 @@ }, "property": { "type": "Identifier", - "start": 67900, - "end": 67905, + "start": 67936, + "end": 67941, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 32 }, "end": { - "line": 1946, + "line": 1947, "column": 37 }, "identifierName": "edges" @@ -43158,15 +43274,15 @@ }, "right": { "type": "Identifier", - "start": 67908, - "end": 67913, + "start": 67944, + "end": 67949, "loc": { "start": { - "line": 1946, + "line": 1947, "column": 40 }, "end": { - "line": 1946, + "line": 1947, "column": 45 }, "identifierName": "edges" @@ -43181,72 +43297,72 @@ }, { "type": "ExpressionStatement", - "start": 67933, - "end": 67949, + "start": 67969, + "end": 67985, "loc": { "start": { - "line": 1948, + "line": 1949, "column": 8 }, "end": { - "line": 1948, + "line": 1949, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 67933, - "end": 67948, + "start": 67969, + "end": 67984, "loc": { "start": { - "line": 1948, + "line": 1949, "column": 8 }, "end": { - "line": 1948, + "line": 1949, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 67933, - "end": 67946, + "start": 67969, + "end": 67982, "loc": { "start": { - "line": 1948, + "line": 1949, "column": 8 }, "end": { - "line": 1948, + "line": 1949, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 67933, - "end": 67937, + "start": 67969, + "end": 67973, "loc": { "start": { - "line": 1948, + "line": 1949, "column": 8 }, "end": { - "line": 1948, + "line": 1949, "column": 12 } } }, "property": { "type": "Identifier", - "start": 67938, - "end": 67946, + "start": 67974, + "end": 67982, "loc": { "start": { - "line": 1948, + "line": 1949, "column": 13 }, "end": { - "line": 1948, + "line": 1949, "column": 21 }, "identifierName": "glRedraw" @@ -43266,15 +43382,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", - "start": 67591, - "end": 67719, + "start": 67627, + "end": 67755, "loc": { "start": { - "line": 1937, + "line": 1938, "column": 4 }, "end": { - "line": 1941, + "line": 1942, "column": 7 } } @@ -43284,15 +43400,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", - "start": 67961, - "end": 68180, + "start": 67997, + "end": 68216, "loc": { "start": { - "line": 1951, + "line": 1952, "column": 4 }, "end": { - "line": 1957, + "line": 1958, "column": 7 } } @@ -43301,15 +43417,15 @@ }, { "type": "ClassMethod", - "start": 68185, - "end": 68234, + "start": 68221, + "end": 68270, "loc": { "start": { - "line": 1958, + "line": 1959, "column": 4 }, "end": { - "line": 1960, + "line": 1961, "column": 5 } }, @@ -43317,15 +43433,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 68189, - "end": 68195, + "start": 68225, + "end": 68231, "loc": { "start": { - "line": 1958, + "line": 1959, "column": 8 }, "end": { - "line": 1958, + "line": 1959, "column": 14 }, "identifierName": "culled" @@ -43340,73 +43456,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 68198, - "end": 68234, + "start": 68234, + "end": 68270, "loc": { "start": { - "line": 1958, + "line": 1959, "column": 17 }, "end": { - "line": 1960, + "line": 1961, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 68208, - "end": 68228, + "start": 68244, + "end": 68264, "loc": { "start": { - "line": 1959, + "line": 1960, "column": 8 }, "end": { - "line": 1959, + "line": 1960, "column": 28 } }, "argument": { "type": "MemberExpression", - "start": 68215, - "end": 68227, + "start": 68251, + "end": 68263, "loc": { "start": { - "line": 1959, + "line": 1960, "column": 15 }, "end": { - "line": 1959, + "line": 1960, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 68215, - "end": 68219, + "start": 68251, + "end": 68255, "loc": { "start": { - "line": 1959, + "line": 1960, "column": 15 }, "end": { - "line": 1959, + "line": 1960, "column": 19 } } }, "property": { "type": "Identifier", - "start": 68220, - "end": 68227, + "start": 68256, + "end": 68263, "loc": { "start": { - "line": 1959, + "line": 1960, "column": 20 }, "end": { - "line": 1959, + "line": 1960, "column": 27 }, "identifierName": "_culled" @@ -43424,15 +43540,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", - "start": 67961, - "end": 68180, + "start": 67997, + "end": 68216, "loc": { "start": { - "line": 1951, + "line": 1952, "column": 4 }, "end": { - "line": 1957, + "line": 1958, "column": 7 } } @@ -43442,15 +43558,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", - "start": 68240, - "end": 68459, + "start": 68276, + "end": 68495, "loc": { "start": { - "line": 1962, + "line": 1963, "column": 4 }, "end": { - "line": 1968, + "line": 1969, "column": 7 } } @@ -43459,15 +43575,15 @@ }, { "type": "ClassMethod", - "start": 68464, - "end": 68703, + "start": 68500, + "end": 68739, "loc": { "start": { - "line": 1969, + "line": 1970, "column": 4 }, "end": { - "line": 1976, + "line": 1977, "column": 5 } }, @@ -43475,15 +43591,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 68468, - "end": 68474, + "start": 68504, + "end": 68510, "loc": { "start": { - "line": 1969, + "line": 1970, "column": 8 }, "end": { - "line": 1969, + "line": 1970, "column": 14 }, "identifierName": "culled" @@ -43498,15 +43614,15 @@ "params": [ { "type": "Identifier", - "start": 68475, - "end": 68481, + "start": 68511, + "end": 68517, "loc": { "start": { - "line": 1969, + "line": 1970, "column": 15 }, "end": { - "line": 1969, + "line": 1970, "column": 21 }, "identifierName": "culled" @@ -43516,59 +43632,59 @@ ], "body": { "type": "BlockStatement", - "start": 68483, - "end": 68703, + "start": 68519, + "end": 68739, "loc": { "start": { - "line": 1969, + "line": 1970, "column": 23 }, "end": { - "line": 1976, + "line": 1977, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 68493, - "end": 68511, + "start": 68529, + "end": 68547, "loc": { "start": { - "line": 1970, + "line": 1971, "column": 8 }, "end": { - "line": 1970, + "line": 1971, "column": 26 } }, "expression": { "type": "AssignmentExpression", - "start": 68493, - "end": 68510, + "start": 68529, + "end": 68546, "loc": { "start": { - "line": 1970, + "line": 1971, "column": 8 }, "end": { - "line": 1970, + "line": 1971, "column": 25 } }, "operator": "=", "left": { "type": "Identifier", - "start": 68493, - "end": 68499, + "start": 68529, + "end": 68535, "loc": { "start": { - "line": 1970, + "line": 1971, "column": 8 }, "end": { - "line": 1970, + "line": 1971, "column": 14 }, "identifierName": "culled" @@ -43577,15 +43693,15 @@ }, "right": { "type": "UnaryExpression", - "start": 68502, - "end": 68510, + "start": 68538, + "end": 68546, "loc": { "start": { - "line": 1970, + "line": 1971, "column": 17 }, "end": { - "line": 1970, + "line": 1971, "column": 25 } }, @@ -43593,15 +43709,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 68503, - "end": 68510, + "start": 68539, + "end": 68546, "loc": { "start": { - "line": 1970, + "line": 1971, "column": 18 }, "end": { - "line": 1970, + "line": 1971, "column": 25 } }, @@ -43609,15 +43725,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 68504, - "end": 68510, + "start": 68540, + "end": 68546, "loc": { "start": { - "line": 1970, + "line": 1971, "column": 19 }, "end": { - "line": 1970, + "line": 1971, "column": 25 }, "identifierName": "culled" @@ -43636,73 +43752,73 @@ }, { "type": "ExpressionStatement", - "start": 68520, - "end": 68542, + "start": 68556, + "end": 68578, "loc": { "start": { - "line": 1971, + "line": 1972, "column": 8 }, "end": { - "line": 1971, + "line": 1972, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 68520, - "end": 68541, + "start": 68556, + "end": 68577, "loc": { "start": { - "line": 1971, + "line": 1972, "column": 8 }, "end": { - "line": 1971, + "line": 1972, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 68520, - "end": 68532, + "start": 68556, + "end": 68568, "loc": { "start": { - "line": 1971, + "line": 1972, "column": 8 }, "end": { - "line": 1971, + "line": 1972, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 68520, - "end": 68524, + "start": 68556, + "end": 68560, "loc": { "start": { - "line": 1971, + "line": 1972, "column": 8 }, "end": { - "line": 1971, + "line": 1972, "column": 12 } } }, "property": { "type": "Identifier", - "start": 68525, - "end": 68532, + "start": 68561, + "end": 68568, "loc": { "start": { - "line": 1971, + "line": 1972, "column": 13 }, "end": { - "line": 1971, + "line": 1972, "column": 20 }, "identifierName": "_culled" @@ -43713,15 +43829,15 @@ }, "right": { "type": "Identifier", - "start": 68535, - "end": 68541, + "start": 68571, + "end": 68577, "loc": { "start": { - "line": 1971, + "line": 1972, "column": 23 }, "end": { - "line": 1971, + "line": 1972, "column": 29 }, "identifierName": "culled" @@ -43732,58 +43848,58 @@ }, { "type": "ForStatement", - "start": 68551, - "end": 68672, + "start": 68587, + "end": 68708, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 8 }, "end": { - "line": 1974, + "line": 1975, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 68556, - "end": 68596, + "start": 68592, + "end": 68632, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 13 }, "end": { - "line": 1972, + "line": 1973, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 68560, - "end": 68565, + "start": 68596, + "end": 68601, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 17 }, "end": { - "line": 1972, + "line": 1973, "column": 22 } }, "id": { "type": "Identifier", - "start": 68560, - "end": 68561, + "start": 68596, + "end": 68597, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 17 }, "end": { - "line": 1972, + "line": 1973, "column": 18 }, "identifierName": "i" @@ -43792,15 +43908,15 @@ }, "init": { "type": "NumericLiteral", - "start": 68564, - "end": 68565, + "start": 68600, + "end": 68601, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 21 }, "end": { - "line": 1972, + "line": 1973, "column": 22 } }, @@ -43813,29 +43929,29 @@ }, { "type": "VariableDeclarator", - "start": 68567, - "end": 68596, + "start": 68603, + "end": 68632, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 24 }, "end": { - "line": 1972, + "line": 1973, "column": 53 } }, "id": { "type": "Identifier", - "start": 68567, - "end": 68570, + "start": 68603, + "end": 68606, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 24 }, "end": { - "line": 1972, + "line": 1973, "column": 27 }, "identifierName": "len" @@ -43844,58 +43960,58 @@ }, "init": { "type": "MemberExpression", - "start": 68573, - "end": 68596, + "start": 68609, + "end": 68632, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 30 }, "end": { - "line": 1972, + "line": 1973, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 68573, - "end": 68589, + "start": 68609, + "end": 68625, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 30 }, "end": { - "line": 1972, + "line": 1973, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 68573, - "end": 68577, + "start": 68609, + "end": 68613, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 30 }, "end": { - "line": 1972, + "line": 1973, "column": 34 } } }, "property": { "type": "Identifier", - "start": 68578, - "end": 68589, + "start": 68614, + "end": 68625, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 35 }, "end": { - "line": 1972, + "line": 1973, "column": 46 }, "identifierName": "_entityList" @@ -43906,15 +44022,15 @@ }, "property": { "type": "Identifier", - "start": 68590, - "end": 68596, + "start": 68626, + "end": 68632, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 47 }, "end": { - "line": 1972, + "line": 1973, "column": 53 }, "identifierName": "length" @@ -43929,29 +44045,29 @@ }, "test": { "type": "BinaryExpression", - "start": 68598, - "end": 68605, + "start": 68634, + "end": 68641, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 55 }, "end": { - "line": 1972, + "line": 1973, "column": 62 } }, "left": { "type": "Identifier", - "start": 68598, - "end": 68599, + "start": 68634, + "end": 68635, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 55 }, "end": { - "line": 1972, + "line": 1973, "column": 56 }, "identifierName": "i" @@ -43961,15 +44077,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 68602, - "end": 68605, + "start": 68638, + "end": 68641, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 59 }, "end": { - "line": 1972, + "line": 1973, "column": 62 }, "identifierName": "len" @@ -43979,15 +44095,15 @@ }, "update": { "type": "UpdateExpression", - "start": 68607, - "end": 68610, + "start": 68643, + "end": 68646, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 64 }, "end": { - "line": 1972, + "line": 1973, "column": 67 } }, @@ -43995,15 +44111,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 68607, - "end": 68608, + "start": 68643, + "end": 68644, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 64 }, "end": { - "line": 1972, + "line": 1973, "column": 65 }, "identifierName": "i" @@ -44013,116 +44129,116 @@ }, "body": { "type": "BlockStatement", - "start": 68612, - "end": 68672, + "start": 68648, + "end": 68708, "loc": { "start": { - "line": 1972, + "line": 1973, "column": 69 }, "end": { - "line": 1974, + "line": 1975, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 68626, - "end": 68662, + "start": 68662, + "end": 68698, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 12 }, "end": { - "line": 1973, + "line": 1974, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 68626, - "end": 68661, + "start": 68662, + "end": 68697, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 12 }, "end": { - "line": 1973, + "line": 1974, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 68626, - "end": 68652, + "start": 68662, + "end": 68688, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 12 }, "end": { - "line": 1973, + "line": 1974, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 68626, - "end": 68645, + "start": 68662, + "end": 68681, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 12 }, "end": { - "line": 1973, + "line": 1974, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 68626, - "end": 68642, + "start": 68662, + "end": 68678, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 12 }, "end": { - "line": 1973, + "line": 1974, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 68626, - "end": 68630, + "start": 68662, + "end": 68666, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 12 }, "end": { - "line": 1973, + "line": 1974, "column": 16 } } }, "property": { "type": "Identifier", - "start": 68631, - "end": 68642, + "start": 68667, + "end": 68678, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 17 }, "end": { - "line": 1973, + "line": 1974, "column": 28 }, "identifierName": "_entityList" @@ -44133,15 +44249,15 @@ }, "property": { "type": "Identifier", - "start": 68643, - "end": 68644, + "start": 68679, + "end": 68680, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 29 }, "end": { - "line": 1973, + "line": 1974, "column": 30 }, "identifierName": "i" @@ -44152,15 +44268,15 @@ }, "property": { "type": "Identifier", - "start": 68646, - "end": 68652, + "start": 68682, + "end": 68688, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 32 }, "end": { - "line": 1973, + "line": 1974, "column": 38 }, "identifierName": "culled" @@ -44171,15 +44287,15 @@ }, "right": { "type": "Identifier", - "start": 68655, - "end": 68661, + "start": 68691, + "end": 68697, "loc": { "start": { - "line": 1973, + "line": 1974, "column": 41 }, "end": { - "line": 1973, + "line": 1974, "column": 47 }, "identifierName": "culled" @@ -44194,72 +44310,72 @@ }, { "type": "ExpressionStatement", - "start": 68681, - "end": 68697, + "start": 68717, + "end": 68733, "loc": { "start": { - "line": 1975, + "line": 1976, "column": 8 }, "end": { - "line": 1975, + "line": 1976, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 68681, - "end": 68696, + "start": 68717, + "end": 68732, "loc": { "start": { - "line": 1975, + "line": 1976, "column": 8 }, "end": { - "line": 1975, + "line": 1976, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 68681, - "end": 68694, + "start": 68717, + "end": 68730, "loc": { "start": { - "line": 1975, + "line": 1976, "column": 8 }, "end": { - "line": 1975, + "line": 1976, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 68681, - "end": 68685, + "start": 68717, + "end": 68721, "loc": { "start": { - "line": 1975, + "line": 1976, "column": 8 }, "end": { - "line": 1975, + "line": 1976, "column": 12 } } }, "property": { "type": "Identifier", - "start": 68686, - "end": 68694, + "start": 68722, + "end": 68730, "loc": { "start": { - "line": 1975, + "line": 1976, "column": 13 }, "end": { - "line": 1975, + "line": 1976, "column": 21 }, "identifierName": "glRedraw" @@ -44279,15 +44395,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", - "start": 68240, - "end": 68459, + "start": 68276, + "end": 68495, "loc": { "start": { - "line": 1962, + "line": 1963, "column": 4 }, "end": { - "line": 1968, + "line": 1969, "column": 7 } } @@ -44297,15 +44413,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", - "start": 68709, - "end": 68917, + "start": 68745, + "end": 68953, "loc": { "start": { - "line": 1978, + "line": 1979, "column": 4 }, "end": { - "line": 1984, + "line": 1985, "column": 7 } } @@ -44314,15 +44430,15 @@ }, { "type": "ClassMethod", - "start": 68922, - "end": 68977, + "start": 68958, + "end": 69013, "loc": { "start": { - "line": 1985, + "line": 1986, "column": 4 }, "end": { - "line": 1987, + "line": 1988, "column": 5 } }, @@ -44330,15 +44446,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 68926, - "end": 68935, + "start": 68962, + "end": 68971, "loc": { "start": { - "line": 1985, + "line": 1986, "column": 8 }, "end": { - "line": 1985, + "line": 1986, "column": 17 }, "identifierName": "clippable" @@ -44353,73 +44469,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 68938, - "end": 68977, + "start": 68974, + "end": 69013, "loc": { "start": { - "line": 1985, + "line": 1986, "column": 20 }, "end": { - "line": 1987, + "line": 1988, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 68948, - "end": 68971, + "start": 68984, + "end": 69007, "loc": { "start": { - "line": 1986, + "line": 1987, "column": 8 }, "end": { - "line": 1986, + "line": 1987, "column": 31 } }, "argument": { "type": "MemberExpression", - "start": 68955, - "end": 68970, + "start": 68991, + "end": 69006, "loc": { "start": { - "line": 1986, + "line": 1987, "column": 15 }, "end": { - "line": 1986, + "line": 1987, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 68955, - "end": 68959, + "start": 68991, + "end": 68995, "loc": { "start": { - "line": 1986, + "line": 1987, "column": 15 }, "end": { - "line": 1986, + "line": 1987, "column": 19 } } }, "property": { "type": "Identifier", - "start": 68960, - "end": 68970, + "start": 68996, + "end": 69006, "loc": { "start": { - "line": 1986, + "line": 1987, "column": 20 }, "end": { - "line": 1986, + "line": 1987, "column": 30 }, "identifierName": "_clippable" @@ -44437,15 +44553,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", - "start": 68709, - "end": 68917, + "start": 68745, + "end": 68953, "loc": { "start": { - "line": 1978, + "line": 1979, "column": 4 }, "end": { - "line": 1984, + "line": 1985, "column": 7 } } @@ -44455,15 +44571,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", - "start": 68983, - "end": 69191, + "start": 69019, + "end": 69227, "loc": { "start": { - "line": 1989, + "line": 1990, "column": 4 }, "end": { - "line": 1995, + "line": 1996, "column": 7 } } @@ -44472,15 +44588,15 @@ }, { "type": "ClassMethod", - "start": 69196, - "end": 69467, + "start": 69232, + "end": 69503, "loc": { "start": { - "line": 1996, + "line": 1997, "column": 4 }, "end": { - "line": 2003, + "line": 2004, "column": 5 } }, @@ -44488,15 +44604,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 69200, - "end": 69209, + "start": 69236, + "end": 69245, "loc": { "start": { - "line": 1996, + "line": 1997, "column": 8 }, "end": { - "line": 1996, + "line": 1997, "column": 17 }, "identifierName": "clippable" @@ -44511,15 +44627,15 @@ "params": [ { "type": "Identifier", - "start": 69210, - "end": 69219, + "start": 69246, + "end": 69255, "loc": { "start": { - "line": 1996, + "line": 1997, "column": 18 }, "end": { - "line": 1996, + "line": 1997, "column": 27 }, "identifierName": "clippable" @@ -44529,59 +44645,59 @@ ], "body": { "type": "BlockStatement", - "start": 69221, - "end": 69467, + "start": 69257, + "end": 69503, "loc": { "start": { - "line": 1996, + "line": 1997, "column": 29 }, "end": { - "line": 2003, + "line": 2004, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 69231, - "end": 69263, + "start": 69267, + "end": 69299, "loc": { "start": { - "line": 1997, + "line": 1998, "column": 8 }, "end": { - "line": 1997, + "line": 1998, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 69231, - "end": 69262, + "start": 69267, + "end": 69298, "loc": { "start": { - "line": 1997, + "line": 1998, "column": 8 }, "end": { - "line": 1997, + "line": 1998, "column": 39 } }, "operator": "=", "left": { "type": "Identifier", - "start": 69231, - "end": 69240, + "start": 69267, + "end": 69276, "loc": { "start": { - "line": 1997, + "line": 1998, "column": 8 }, "end": { - "line": 1997, + "line": 1998, "column": 17 }, "identifierName": "clippable" @@ -44590,29 +44706,29 @@ }, "right": { "type": "BinaryExpression", - "start": 69243, - "end": 69262, + "start": 69279, + "end": 69298, "loc": { "start": { - "line": 1997, + "line": 1998, "column": 20 }, "end": { - "line": 1997, + "line": 1998, "column": 39 } }, "left": { "type": "Identifier", - "start": 69243, - "end": 69252, + "start": 69279, + "end": 69288, "loc": { "start": { - "line": 1997, + "line": 1998, "column": 20 }, "end": { - "line": 1997, + "line": 1998, "column": 29 }, "identifierName": "clippable" @@ -44622,15 +44738,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 69257, - "end": 69262, + "start": 69293, + "end": 69298, "loc": { "start": { - "line": 1997, + "line": 1998, "column": 34 }, "end": { - "line": 1997, + "line": 1998, "column": 39 } }, @@ -44641,73 +44757,73 @@ }, { "type": "ExpressionStatement", - "start": 69272, - "end": 69300, + "start": 69308, + "end": 69336, "loc": { "start": { - "line": 1998, + "line": 1999, "column": 8 }, "end": { - "line": 1998, + "line": 1999, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 69272, - "end": 69299, + "start": 69308, + "end": 69335, "loc": { "start": { - "line": 1998, + "line": 1999, "column": 8 }, "end": { - "line": 1998, + "line": 1999, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 69272, - "end": 69287, + "start": 69308, + "end": 69323, "loc": { "start": { - "line": 1998, + "line": 1999, "column": 8 }, "end": { - "line": 1998, + "line": 1999, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 69272, - "end": 69276, + "start": 69308, + "end": 69312, "loc": { "start": { - "line": 1998, + "line": 1999, "column": 8 }, "end": { - "line": 1998, + "line": 1999, "column": 12 } } }, "property": { "type": "Identifier", - "start": 69277, - "end": 69287, + "start": 69313, + "end": 69323, "loc": { "start": { - "line": 1998, + "line": 1999, "column": 13 }, "end": { - "line": 1998, + "line": 1999, "column": 23 }, "identifierName": "_clippable" @@ -44718,15 +44834,15 @@ }, "right": { "type": "Identifier", - "start": 69290, - "end": 69299, + "start": 69326, + "end": 69335, "loc": { "start": { - "line": 1998, + "line": 1999, "column": 26 }, "end": { - "line": 1998, + "line": 1999, "column": 35 }, "identifierName": "clippable" @@ -44737,58 +44853,58 @@ }, { "type": "ForStatement", - "start": 69309, - "end": 69436, + "start": 69345, + "end": 69472, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 8 }, "end": { - "line": 2001, + "line": 2002, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 69314, - "end": 69354, + "start": 69350, + "end": 69390, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 13 }, "end": { - "line": 1999, + "line": 2000, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 69318, - "end": 69323, + "start": 69354, + "end": 69359, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 17 }, "end": { - "line": 1999, + "line": 2000, "column": 22 } }, "id": { "type": "Identifier", - "start": 69318, - "end": 69319, + "start": 69354, + "end": 69355, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 17 }, "end": { - "line": 1999, + "line": 2000, "column": 18 }, "identifierName": "i" @@ -44797,15 +44913,15 @@ }, "init": { "type": "NumericLiteral", - "start": 69322, - "end": 69323, + "start": 69358, + "end": 69359, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 21 }, "end": { - "line": 1999, + "line": 2000, "column": 22 } }, @@ -44818,29 +44934,29 @@ }, { "type": "VariableDeclarator", - "start": 69325, - "end": 69354, + "start": 69361, + "end": 69390, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 24 }, "end": { - "line": 1999, + "line": 2000, "column": 53 } }, "id": { "type": "Identifier", - "start": 69325, - "end": 69328, + "start": 69361, + "end": 69364, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 24 }, "end": { - "line": 1999, + "line": 2000, "column": 27 }, "identifierName": "len" @@ -44849,58 +44965,58 @@ }, "init": { "type": "MemberExpression", - "start": 69331, - "end": 69354, + "start": 69367, + "end": 69390, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 30 }, "end": { - "line": 1999, + "line": 2000, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 69331, - "end": 69347, + "start": 69367, + "end": 69383, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 30 }, "end": { - "line": 1999, + "line": 2000, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 69331, - "end": 69335, + "start": 69367, + "end": 69371, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 30 }, "end": { - "line": 1999, + "line": 2000, "column": 34 } } }, "property": { "type": "Identifier", - "start": 69336, - "end": 69347, + "start": 69372, + "end": 69383, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 35 }, "end": { - "line": 1999, + "line": 2000, "column": 46 }, "identifierName": "_entityList" @@ -44911,15 +45027,15 @@ }, "property": { "type": "Identifier", - "start": 69348, - "end": 69354, + "start": 69384, + "end": 69390, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 47 }, "end": { - "line": 1999, + "line": 2000, "column": 53 }, "identifierName": "length" @@ -44934,29 +45050,29 @@ }, "test": { "type": "BinaryExpression", - "start": 69356, - "end": 69363, + "start": 69392, + "end": 69399, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 55 }, "end": { - "line": 1999, + "line": 2000, "column": 62 } }, "left": { "type": "Identifier", - "start": 69356, - "end": 69357, + "start": 69392, + "end": 69393, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 55 }, "end": { - "line": 1999, + "line": 2000, "column": 56 }, "identifierName": "i" @@ -44966,15 +45082,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 69360, - "end": 69363, + "start": 69396, + "end": 69399, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 59 }, "end": { - "line": 1999, + "line": 2000, "column": 62 }, "identifierName": "len" @@ -44984,15 +45100,15 @@ }, "update": { "type": "UpdateExpression", - "start": 69365, - "end": 69368, + "start": 69401, + "end": 69404, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 64 }, "end": { - "line": 1999, + "line": 2000, "column": 67 } }, @@ -45000,15 +45116,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 69365, - "end": 69366, + "start": 69401, + "end": 69402, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 64 }, "end": { - "line": 1999, + "line": 2000, "column": 65 }, "identifierName": "i" @@ -45018,116 +45134,116 @@ }, "body": { "type": "BlockStatement", - "start": 69370, - "end": 69436, + "start": 69406, + "end": 69472, "loc": { "start": { - "line": 1999, + "line": 2000, "column": 69 }, "end": { - "line": 2001, + "line": 2002, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 69384, - "end": 69426, + "start": 69420, + "end": 69462, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 12 }, "end": { - "line": 2000, + "line": 2001, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 69384, - "end": 69425, + "start": 69420, + "end": 69461, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 12 }, "end": { - "line": 2000, + "line": 2001, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 69384, - "end": 69413, + "start": 69420, + "end": 69449, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 12 }, "end": { - "line": 2000, + "line": 2001, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 69384, - "end": 69403, + "start": 69420, + "end": 69439, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 12 }, "end": { - "line": 2000, + "line": 2001, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 69384, - "end": 69400, + "start": 69420, + "end": 69436, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 12 }, "end": { - "line": 2000, + "line": 2001, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 69384, - "end": 69388, + "start": 69420, + "end": 69424, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 12 }, "end": { - "line": 2000, + "line": 2001, "column": 16 } } }, "property": { "type": "Identifier", - "start": 69389, - "end": 69400, + "start": 69425, + "end": 69436, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 17 }, "end": { - "line": 2000, + "line": 2001, "column": 28 }, "identifierName": "_entityList" @@ -45138,15 +45254,15 @@ }, "property": { "type": "Identifier", - "start": 69401, - "end": 69402, + "start": 69437, + "end": 69438, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 29 }, "end": { - "line": 2000, + "line": 2001, "column": 30 }, "identifierName": "i" @@ -45157,15 +45273,15 @@ }, "property": { "type": "Identifier", - "start": 69404, - "end": 69413, + "start": 69440, + "end": 69449, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 32 }, "end": { - "line": 2000, + "line": 2001, "column": 41 }, "identifierName": "clippable" @@ -45176,15 +45292,15 @@ }, "right": { "type": "Identifier", - "start": 69416, - "end": 69425, + "start": 69452, + "end": 69461, "loc": { "start": { - "line": 2000, + "line": 2001, "column": 44 }, "end": { - "line": 2000, + "line": 2001, "column": 53 }, "identifierName": "clippable" @@ -45199,72 +45315,72 @@ }, { "type": "ExpressionStatement", - "start": 69445, - "end": 69461, + "start": 69481, + "end": 69497, "loc": { "start": { - "line": 2002, + "line": 2003, "column": 8 }, "end": { - "line": 2002, + "line": 2003, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 69445, - "end": 69460, + "start": 69481, + "end": 69496, "loc": { "start": { - "line": 2002, + "line": 2003, "column": 8 }, "end": { - "line": 2002, + "line": 2003, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 69445, - "end": 69458, + "start": 69481, + "end": 69494, "loc": { "start": { - "line": 2002, + "line": 2003, "column": 8 }, "end": { - "line": 2002, + "line": 2003, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 69445, - "end": 69449, + "start": 69481, + "end": 69485, "loc": { "start": { - "line": 2002, + "line": 2003, "column": 8 }, "end": { - "line": 2002, + "line": 2003, "column": 12 } } }, "property": { "type": "Identifier", - "start": 69450, - "end": 69458, + "start": 69486, + "end": 69494, "loc": { "start": { - "line": 2002, + "line": 2003, "column": 13 }, "end": { - "line": 2002, + "line": 2003, "column": 21 }, "identifierName": "glRedraw" @@ -45284,15 +45400,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", - "start": 68983, - "end": 69191, + "start": 69019, + "end": 69227, "loc": { "start": { - "line": 1989, + "line": 1990, "column": 4 }, "end": { - "line": 1995, + "line": 1996, "column": 7 } } @@ -45302,15 +45418,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is collidable.\n *\n * @type {Boolean}\n ", - "start": 69473, - "end": 69560, + "start": 69509, + "end": 69596, "loc": { "start": { - "line": 2005, + "line": 2006, "column": 4 }, "end": { - "line": 2009, + "line": 2010, "column": 7 } } @@ -45319,15 +45435,15 @@ }, { "type": "ClassMethod", - "start": 69565, - "end": 69622, + "start": 69601, + "end": 69658, "loc": { "start": { - "line": 2010, + "line": 2011, "column": 4 }, "end": { - "line": 2012, + "line": 2013, "column": 5 } }, @@ -45335,15 +45451,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 69569, - "end": 69579, + "start": 69605, + "end": 69615, "loc": { "start": { - "line": 2010, + "line": 2011, "column": 8 }, "end": { - "line": 2010, + "line": 2011, "column": 18 }, "identifierName": "collidable" @@ -45358,73 +45474,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 69582, - "end": 69622, + "start": 69618, + "end": 69658, "loc": { "start": { - "line": 2010, + "line": 2011, "column": 21 }, "end": { - "line": 2012, + "line": 2013, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 69592, - "end": 69616, + "start": 69628, + "end": 69652, "loc": { "start": { - "line": 2011, + "line": 2012, "column": 8 }, "end": { - "line": 2011, + "line": 2012, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 69599, - "end": 69615, + "start": 69635, + "end": 69651, "loc": { "start": { - "line": 2011, + "line": 2012, "column": 15 }, "end": { - "line": 2011, + "line": 2012, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 69599, - "end": 69603, + "start": 69635, + "end": 69639, "loc": { "start": { - "line": 2011, + "line": 2012, "column": 15 }, "end": { - "line": 2011, + "line": 2012, "column": 19 } } }, "property": { "type": "Identifier", - "start": 69604, - "end": 69615, + "start": 69640, + "end": 69651, "loc": { "start": { - "line": 2011, + "line": 2012, "column": 20 }, "end": { - "line": 2011, + "line": 2012, "column": 31 }, "identifierName": "_collidable" @@ -45442,15 +45558,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is collidable.\n *\n * @type {Boolean}\n ", - "start": 69473, - "end": 69560, + "start": 69509, + "end": 69596, "loc": { "start": { - "line": 2005, + "line": 2006, "column": 4 }, "end": { - "line": 2009, + "line": 2010, "column": 7 } } @@ -45460,15 +45576,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are collidable.\n *\n * @type {Boolean}\n ", - "start": 69628, - "end": 69745, + "start": 69664, + "end": 69781, "loc": { "start": { - "line": 2014, + "line": 2015, "column": 4 }, "end": { - "line": 2018, + "line": 2019, "column": 7 } } @@ -45477,15 +45593,15 @@ }, { "type": "ClassMethod", - "start": 69750, - "end": 70004, + "start": 69786, + "end": 70040, "loc": { "start": { - "line": 2019, + "line": 2020, "column": 4 }, "end": { - "line": 2025, + "line": 2026, "column": 5 } }, @@ -45493,15 +45609,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 69754, - "end": 69764, + "start": 69790, + "end": 69800, "loc": { "start": { - "line": 2019, + "line": 2020, "column": 8 }, "end": { - "line": 2019, + "line": 2020, "column": 18 }, "identifierName": "collidable" @@ -45516,15 +45632,15 @@ "params": [ { "type": "Identifier", - "start": 69765, - "end": 69775, + "start": 69801, + "end": 69811, "loc": { "start": { - "line": 2019, + "line": 2020, "column": 19 }, "end": { - "line": 2019, + "line": 2020, "column": 29 }, "identifierName": "collidable" @@ -45534,59 +45650,59 @@ ], "body": { "type": "BlockStatement", - "start": 69777, - "end": 70004, + "start": 69813, + "end": 70040, "loc": { "start": { - "line": 2019, + "line": 2020, "column": 31 }, "end": { - "line": 2025, + "line": 2026, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 69787, - "end": 69821, + "start": 69823, + "end": 69857, "loc": { "start": { - "line": 2020, + "line": 2021, "column": 8 }, "end": { - "line": 2020, + "line": 2021, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 69787, - "end": 69820, + "start": 69823, + "end": 69856, "loc": { "start": { - "line": 2020, + "line": 2021, "column": 8 }, "end": { - "line": 2020, + "line": 2021, "column": 41 } }, "operator": "=", "left": { "type": "Identifier", - "start": 69787, - "end": 69797, + "start": 69823, + "end": 69833, "loc": { "start": { - "line": 2020, + "line": 2021, "column": 8 }, "end": { - "line": 2020, + "line": 2021, "column": 18 }, "identifierName": "collidable" @@ -45595,29 +45711,29 @@ }, "right": { "type": "BinaryExpression", - "start": 69800, - "end": 69820, + "start": 69836, + "end": 69856, "loc": { "start": { - "line": 2020, + "line": 2021, "column": 21 }, "end": { - "line": 2020, + "line": 2021, "column": 41 } }, "left": { "type": "Identifier", - "start": 69800, - "end": 69810, + "start": 69836, + "end": 69846, "loc": { "start": { - "line": 2020, + "line": 2021, "column": 21 }, "end": { - "line": 2020, + "line": 2021, "column": 31 }, "identifierName": "collidable" @@ -45627,15 +45743,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 69815, - "end": 69820, + "start": 69851, + "end": 69856, "loc": { "start": { - "line": 2020, + "line": 2021, "column": 36 }, "end": { - "line": 2020, + "line": 2021, "column": 41 } }, @@ -45646,73 +45762,73 @@ }, { "type": "ExpressionStatement", - "start": 69830, - "end": 69860, + "start": 69866, + "end": 69896, "loc": { "start": { - "line": 2021, + "line": 2022, "column": 8 }, "end": { - "line": 2021, + "line": 2022, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 69830, - "end": 69859, + "start": 69866, + "end": 69895, "loc": { "start": { - "line": 2021, + "line": 2022, "column": 8 }, "end": { - "line": 2021, + "line": 2022, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 69830, - "end": 69846, + "start": 69866, + "end": 69882, "loc": { "start": { - "line": 2021, + "line": 2022, "column": 8 }, "end": { - "line": 2021, + "line": 2022, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 69830, - "end": 69834, + "start": 69866, + "end": 69870, "loc": { "start": { - "line": 2021, + "line": 2022, "column": 8 }, "end": { - "line": 2021, + "line": 2022, "column": 12 } } }, "property": { "type": "Identifier", - "start": 69835, - "end": 69846, + "start": 69871, + "end": 69882, "loc": { "start": { - "line": 2021, + "line": 2022, "column": 13 }, "end": { - "line": 2021, + "line": 2022, "column": 24 }, "identifierName": "_collidable" @@ -45723,15 +45839,15 @@ }, "right": { "type": "Identifier", - "start": 69849, - "end": 69859, + "start": 69885, + "end": 69895, "loc": { "start": { - "line": 2021, + "line": 2022, "column": 27 }, "end": { - "line": 2021, + "line": 2022, "column": 37 }, "identifierName": "collidable" @@ -45742,58 +45858,58 @@ }, { "type": "ForStatement", - "start": 69869, - "end": 69998, + "start": 69905, + "end": 70034, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 8 }, "end": { - "line": 2024, + "line": 2025, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 69874, - "end": 69914, + "start": 69910, + "end": 69950, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 13 }, "end": { - "line": 2022, + "line": 2023, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 69878, - "end": 69883, + "start": 69914, + "end": 69919, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 17 }, "end": { - "line": 2022, + "line": 2023, "column": 22 } }, "id": { "type": "Identifier", - "start": 69878, - "end": 69879, + "start": 69914, + "end": 69915, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 17 }, "end": { - "line": 2022, + "line": 2023, "column": 18 }, "identifierName": "i" @@ -45802,15 +45918,15 @@ }, "init": { "type": "NumericLiteral", - "start": 69882, - "end": 69883, + "start": 69918, + "end": 69919, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 21 }, "end": { - "line": 2022, + "line": 2023, "column": 22 } }, @@ -45823,29 +45939,29 @@ }, { "type": "VariableDeclarator", - "start": 69885, - "end": 69914, + "start": 69921, + "end": 69950, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 24 }, "end": { - "line": 2022, + "line": 2023, "column": 53 } }, "id": { "type": "Identifier", - "start": 69885, - "end": 69888, + "start": 69921, + "end": 69924, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 24 }, "end": { - "line": 2022, + "line": 2023, "column": 27 }, "identifierName": "len" @@ -45854,58 +45970,58 @@ }, "init": { "type": "MemberExpression", - "start": 69891, - "end": 69914, + "start": 69927, + "end": 69950, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 30 }, "end": { - "line": 2022, + "line": 2023, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 69891, - "end": 69907, + "start": 69927, + "end": 69943, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 30 }, "end": { - "line": 2022, + "line": 2023, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 69891, - "end": 69895, + "start": 69927, + "end": 69931, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 30 }, "end": { - "line": 2022, + "line": 2023, "column": 34 } } }, "property": { "type": "Identifier", - "start": 69896, - "end": 69907, + "start": 69932, + "end": 69943, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 35 }, "end": { - "line": 2022, + "line": 2023, "column": 46 }, "identifierName": "_entityList" @@ -45916,15 +46032,15 @@ }, "property": { "type": "Identifier", - "start": 69908, - "end": 69914, + "start": 69944, + "end": 69950, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 47 }, "end": { - "line": 2022, + "line": 2023, "column": 53 }, "identifierName": "length" @@ -45939,29 +46055,29 @@ }, "test": { "type": "BinaryExpression", - "start": 69916, - "end": 69923, + "start": 69952, + "end": 69959, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 55 }, "end": { - "line": 2022, + "line": 2023, "column": 62 } }, "left": { "type": "Identifier", - "start": 69916, - "end": 69917, + "start": 69952, + "end": 69953, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 55 }, "end": { - "line": 2022, + "line": 2023, "column": 56 }, "identifierName": "i" @@ -45971,15 +46087,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 69920, - "end": 69923, + "start": 69956, + "end": 69959, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 59 }, "end": { - "line": 2022, + "line": 2023, "column": 62 }, "identifierName": "len" @@ -45989,15 +46105,15 @@ }, "update": { "type": "UpdateExpression", - "start": 69925, - "end": 69928, + "start": 69961, + "end": 69964, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 64 }, "end": { - "line": 2022, + "line": 2023, "column": 67 } }, @@ -46005,15 +46121,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 69925, - "end": 69926, + "start": 69961, + "end": 69962, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 64 }, "end": { - "line": 2022, + "line": 2023, "column": 65 }, "identifierName": "i" @@ -46023,116 +46139,116 @@ }, "body": { "type": "BlockStatement", - "start": 69930, - "end": 69998, + "start": 69966, + "end": 70034, "loc": { "start": { - "line": 2022, + "line": 2023, "column": 69 }, "end": { - "line": 2024, + "line": 2025, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 69944, - "end": 69988, + "start": 69980, + "end": 70024, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 12 }, "end": { - "line": 2023, + "line": 2024, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 69944, - "end": 69987, + "start": 69980, + "end": 70023, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 12 }, "end": { - "line": 2023, + "line": 2024, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 69944, - "end": 69974, + "start": 69980, + "end": 70010, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 12 }, "end": { - "line": 2023, + "line": 2024, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 69944, - "end": 69963, + "start": 69980, + "end": 69999, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 12 }, "end": { - "line": 2023, + "line": 2024, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 69944, - "end": 69960, + "start": 69980, + "end": 69996, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 12 }, "end": { - "line": 2023, + "line": 2024, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 69944, - "end": 69948, + "start": 69980, + "end": 69984, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 12 }, "end": { - "line": 2023, + "line": 2024, "column": 16 } } }, "property": { "type": "Identifier", - "start": 69949, - "end": 69960, + "start": 69985, + "end": 69996, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 17 }, "end": { - "line": 2023, + "line": 2024, "column": 28 }, "identifierName": "_entityList" @@ -46143,15 +46259,15 @@ }, "property": { "type": "Identifier", - "start": 69961, - "end": 69962, + "start": 69997, + "end": 69998, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 29 }, "end": { - "line": 2023, + "line": 2024, "column": 30 }, "identifierName": "i" @@ -46162,15 +46278,15 @@ }, "property": { "type": "Identifier", - "start": 69964, - "end": 69974, + "start": 70000, + "end": 70010, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 32 }, "end": { - "line": 2023, + "line": 2024, "column": 42 }, "identifierName": "collidable" @@ -46181,15 +46297,15 @@ }, "right": { "type": "Identifier", - "start": 69977, - "end": 69987, + "start": 70013, + "end": 70023, "loc": { "start": { - "line": 2023, + "line": 2024, "column": 45 }, "end": { - "line": 2023, + "line": 2024, "column": 55 }, "identifierName": "collidable" @@ -46210,15 +46326,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are collidable.\n *\n * @type {Boolean}\n ", - "start": 69628, - "end": 69745, + "start": 69664, + "end": 69781, "loc": { "start": { - "line": 2014, + "line": 2015, "column": 4 }, "end": { - "line": 2018, + "line": 2019, "column": 7 } } @@ -46228,15 +46344,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", - "start": 70010, - "end": 70158, + "start": 70046, + "end": 70194, "loc": { "start": { - "line": 2027, + "line": 2028, "column": 4 }, "end": { - "line": 2033, + "line": 2034, "column": 7 } } @@ -46245,15 +46361,15 @@ }, { "type": "ClassMethod", - "start": 70163, - "end": 70237, + "start": 70199, + "end": 70273, "loc": { "start": { - "line": 2034, + "line": 2035, "column": 4 }, "end": { - "line": 2036, + "line": 2037, "column": 5 } }, @@ -46261,15 +46377,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 70167, - "end": 70175, + "start": 70203, + "end": 70211, "loc": { "start": { - "line": 2034, + "line": 2035, "column": 8 }, "end": { - "line": 2034, + "line": 2035, "column": 16 }, "identifierName": "pickable" @@ -46284,87 +46400,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 70178, - "end": 70237, + "start": 70214, + "end": 70273, "loc": { "start": { - "line": 2034, + "line": 2035, "column": 19 }, "end": { - "line": 2036, + "line": 2037, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 70188, - "end": 70231, + "start": 70224, + "end": 70267, "loc": { "start": { - "line": 2035, + "line": 2036, "column": 8 }, "end": { - "line": 2035, + "line": 2036, "column": 51 } }, "argument": { "type": "BinaryExpression", - "start": 70196, - "end": 70229, + "start": 70232, + "end": 70265, "loc": { "start": { - "line": 2035, + "line": 2036, "column": 16 }, "end": { - "line": 2035, + "line": 2036, "column": 49 } }, "left": { "type": "MemberExpression", - "start": 70196, - "end": 70225, + "start": 70232, + "end": 70261, "loc": { "start": { - "line": 2035, + "line": 2036, "column": 16 }, "end": { - "line": 2035, + "line": 2036, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 70196, - "end": 70200, + "start": 70232, + "end": 70236, "loc": { "start": { - "line": 2035, + "line": 2036, "column": 16 }, "end": { - "line": 2035, + "line": 2036, "column": 20 } } }, "property": { "type": "Identifier", - "start": 70201, - "end": 70225, + "start": 70237, + "end": 70261, "loc": { "start": { - "line": 2035, + "line": 2036, "column": 21 }, "end": { - "line": 2035, + "line": 2036, "column": 45 }, "identifierName": "numPickableLayerPortions" @@ -46376,15 +46492,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 70228, - "end": 70229, + "start": 70264, + "end": 70265, "loc": { "start": { - "line": 2035, + "line": 2036, "column": 48 }, "end": { - "line": 2035, + "line": 2036, "column": 49 } }, @@ -46396,7 +46512,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 70195 + "parenStart": 70231 } } } @@ -46408,15 +46524,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", - "start": 70010, - "end": 70158, + "start": 70046, + "end": 70194, "loc": { "start": { - "line": 2027, + "line": 2028, "column": 4 }, "end": { - "line": 2033, + "line": 2034, "column": 7 } } @@ -46426,15 +46542,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", - "start": 70243, - "end": 70421, + "start": 70279, + "end": 70457, "loc": { "start": { - "line": 2038, + "line": 2039, "column": 4 }, "end": { - "line": 2044, + "line": 2045, "column": 7 } } @@ -46443,15 +46559,15 @@ }, { "type": "ClassMethod", - "start": 70426, - "end": 70664, + "start": 70462, + "end": 70700, "loc": { "start": { - "line": 2045, + "line": 2046, "column": 4 }, "end": { - "line": 2051, + "line": 2052, "column": 5 } }, @@ -46459,15 +46575,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 70430, - "end": 70438, + "start": 70466, + "end": 70474, "loc": { "start": { - "line": 2045, + "line": 2046, "column": 8 }, "end": { - "line": 2045, + "line": 2046, "column": 16 }, "identifierName": "pickable" @@ -46482,15 +46598,15 @@ "params": [ { "type": "Identifier", - "start": 70439, - "end": 70447, + "start": 70475, + "end": 70483, "loc": { "start": { - "line": 2045, + "line": 2046, "column": 17 }, "end": { - "line": 2045, + "line": 2046, "column": 25 }, "identifierName": "pickable" @@ -46500,59 +46616,59 @@ ], "body": { "type": "BlockStatement", - "start": 70449, - "end": 70664, + "start": 70485, + "end": 70700, "loc": { "start": { - "line": 2045, + "line": 2046, "column": 27 }, "end": { - "line": 2051, + "line": 2052, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 70459, - "end": 70489, + "start": 70495, + "end": 70525, "loc": { "start": { - "line": 2046, + "line": 2047, "column": 8 }, "end": { - "line": 2046, + "line": 2047, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 70459, - "end": 70488, + "start": 70495, + "end": 70524, "loc": { "start": { - "line": 2046, + "line": 2047, "column": 8 }, "end": { - "line": 2046, + "line": 2047, "column": 37 } }, "operator": "=", "left": { "type": "Identifier", - "start": 70459, - "end": 70467, + "start": 70495, + "end": 70503, "loc": { "start": { - "line": 2046, + "line": 2047, "column": 8 }, "end": { - "line": 2046, + "line": 2047, "column": 16 }, "identifierName": "pickable" @@ -46561,29 +46677,29 @@ }, "right": { "type": "BinaryExpression", - "start": 70470, - "end": 70488, + "start": 70506, + "end": 70524, "loc": { "start": { - "line": 2046, + "line": 2047, "column": 19 }, "end": { - "line": 2046, + "line": 2047, "column": 37 } }, "left": { "type": "Identifier", - "start": 70470, - "end": 70478, + "start": 70506, + "end": 70514, "loc": { "start": { - "line": 2046, + "line": 2047, "column": 19 }, "end": { - "line": 2046, + "line": 2047, "column": 27 }, "identifierName": "pickable" @@ -46593,15 +46709,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 70483, - "end": 70488, + "start": 70519, + "end": 70524, "loc": { "start": { - "line": 2046, + "line": 2047, "column": 32 }, "end": { - "line": 2046, + "line": 2047, "column": 37 } }, @@ -46612,73 +46728,73 @@ }, { "type": "ExpressionStatement", - "start": 70498, - "end": 70524, + "start": 70534, + "end": 70560, "loc": { "start": { - "line": 2047, + "line": 2048, "column": 8 }, "end": { - "line": 2047, + "line": 2048, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 70498, - "end": 70523, + "start": 70534, + "end": 70559, "loc": { "start": { - "line": 2047, + "line": 2048, "column": 8 }, "end": { - "line": 2047, + "line": 2048, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 70498, - "end": 70512, + "start": 70534, + "end": 70548, "loc": { "start": { - "line": 2047, + "line": 2048, "column": 8 }, "end": { - "line": 2047, + "line": 2048, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 70498, - "end": 70502, + "start": 70534, + "end": 70538, "loc": { "start": { - "line": 2047, + "line": 2048, "column": 8 }, "end": { - "line": 2047, + "line": 2048, "column": 12 } } }, "property": { "type": "Identifier", - "start": 70503, - "end": 70512, + "start": 70539, + "end": 70548, "loc": { "start": { - "line": 2047, + "line": 2048, "column": 13 }, "end": { - "line": 2047, + "line": 2048, "column": 22 }, "identifierName": "_pickable" @@ -46689,15 +46805,15 @@ }, "right": { "type": "Identifier", - "start": 70515, - "end": 70523, + "start": 70551, + "end": 70559, "loc": { "start": { - "line": 2047, + "line": 2048, "column": 25 }, "end": { - "line": 2047, + "line": 2048, "column": 33 }, "identifierName": "pickable" @@ -46708,58 +46824,58 @@ }, { "type": "ForStatement", - "start": 70533, - "end": 70658, + "start": 70569, + "end": 70694, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 8 }, "end": { - "line": 2050, + "line": 2051, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 70538, - "end": 70578, + "start": 70574, + "end": 70614, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 13 }, "end": { - "line": 2048, + "line": 2049, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 70542, - "end": 70547, + "start": 70578, + "end": 70583, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 17 }, "end": { - "line": 2048, + "line": 2049, "column": 22 } }, "id": { "type": "Identifier", - "start": 70542, - "end": 70543, + "start": 70578, + "end": 70579, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 17 }, "end": { - "line": 2048, + "line": 2049, "column": 18 }, "identifierName": "i" @@ -46768,15 +46884,15 @@ }, "init": { "type": "NumericLiteral", - "start": 70546, - "end": 70547, + "start": 70582, + "end": 70583, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 21 }, "end": { - "line": 2048, + "line": 2049, "column": 22 } }, @@ -46789,29 +46905,29 @@ }, { "type": "VariableDeclarator", - "start": 70549, - "end": 70578, + "start": 70585, + "end": 70614, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 24 }, "end": { - "line": 2048, + "line": 2049, "column": 53 } }, "id": { "type": "Identifier", - "start": 70549, - "end": 70552, + "start": 70585, + "end": 70588, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 24 }, "end": { - "line": 2048, + "line": 2049, "column": 27 }, "identifierName": "len" @@ -46820,58 +46936,58 @@ }, "init": { "type": "MemberExpression", - "start": 70555, - "end": 70578, + "start": 70591, + "end": 70614, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 30 }, "end": { - "line": 2048, + "line": 2049, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 70555, - "end": 70571, + "start": 70591, + "end": 70607, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 30 }, "end": { - "line": 2048, + "line": 2049, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 70555, - "end": 70559, + "start": 70591, + "end": 70595, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 30 }, "end": { - "line": 2048, + "line": 2049, "column": 34 } } }, "property": { "type": "Identifier", - "start": 70560, - "end": 70571, + "start": 70596, + "end": 70607, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 35 }, "end": { - "line": 2048, + "line": 2049, "column": 46 }, "identifierName": "_entityList" @@ -46882,15 +46998,15 @@ }, "property": { "type": "Identifier", - "start": 70572, - "end": 70578, + "start": 70608, + "end": 70614, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 47 }, "end": { - "line": 2048, + "line": 2049, "column": 53 }, "identifierName": "length" @@ -46905,29 +47021,29 @@ }, "test": { "type": "BinaryExpression", - "start": 70580, - "end": 70587, + "start": 70616, + "end": 70623, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 55 }, "end": { - "line": 2048, + "line": 2049, "column": 62 } }, "left": { "type": "Identifier", - "start": 70580, - "end": 70581, + "start": 70616, + "end": 70617, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 55 }, "end": { - "line": 2048, + "line": 2049, "column": 56 }, "identifierName": "i" @@ -46937,15 +47053,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 70584, - "end": 70587, + "start": 70620, + "end": 70623, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 59 }, "end": { - "line": 2048, + "line": 2049, "column": 62 }, "identifierName": "len" @@ -46955,15 +47071,15 @@ }, "update": { "type": "UpdateExpression", - "start": 70589, - "end": 70592, + "start": 70625, + "end": 70628, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 64 }, "end": { - "line": 2048, + "line": 2049, "column": 67 } }, @@ -46971,15 +47087,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 70589, - "end": 70590, + "start": 70625, + "end": 70626, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 64 }, "end": { - "line": 2048, + "line": 2049, "column": 65 }, "identifierName": "i" @@ -46989,116 +47105,116 @@ }, "body": { "type": "BlockStatement", - "start": 70594, - "end": 70658, + "start": 70630, + "end": 70694, "loc": { "start": { - "line": 2048, + "line": 2049, "column": 69 }, "end": { - "line": 2050, + "line": 2051, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 70608, - "end": 70648, + "start": 70644, + "end": 70684, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 12 }, "end": { - "line": 2049, + "line": 2050, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 70608, - "end": 70647, + "start": 70644, + "end": 70683, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 12 }, "end": { - "line": 2049, + "line": 2050, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 70608, - "end": 70636, + "start": 70644, + "end": 70672, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 12 }, "end": { - "line": 2049, + "line": 2050, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 70608, - "end": 70627, + "start": 70644, + "end": 70663, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 12 }, "end": { - "line": 2049, + "line": 2050, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 70608, - "end": 70624, + "start": 70644, + "end": 70660, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 12 }, "end": { - "line": 2049, + "line": 2050, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 70608, - "end": 70612, + "start": 70644, + "end": 70648, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 12 }, "end": { - "line": 2049, + "line": 2050, "column": 16 } } }, "property": { "type": "Identifier", - "start": 70613, - "end": 70624, + "start": 70649, + "end": 70660, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 17 }, "end": { - "line": 2049, + "line": 2050, "column": 28 }, "identifierName": "_entityList" @@ -47109,15 +47225,15 @@ }, "property": { "type": "Identifier", - "start": 70625, - "end": 70626, + "start": 70661, + "end": 70662, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 29 }, "end": { - "line": 2049, + "line": 2050, "column": 30 }, "identifierName": "i" @@ -47128,15 +47244,15 @@ }, "property": { "type": "Identifier", - "start": 70628, - "end": 70636, + "start": 70664, + "end": 70672, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 32 }, "end": { - "line": 2049, + "line": 2050, "column": 40 }, "identifierName": "pickable" @@ -47147,15 +47263,15 @@ }, "right": { "type": "Identifier", - "start": 70639, - "end": 70647, + "start": 70675, + "end": 70683, "loc": { "start": { - "line": 2049, + "line": 2050, "column": 43 }, "end": { - "line": 2049, + "line": 2050, "column": 51 }, "identifierName": "pickable" @@ -47176,15 +47292,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", - "start": 70243, - "end": 70421, + "start": 70279, + "end": 70457, "loc": { "start": { - "line": 2038, + "line": 2039, "column": 4 }, "end": { - "line": 2044, + "line": 2045, "column": 7 } } @@ -47194,15 +47310,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the RGB colorize color for this SceneModel.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", - "start": 70670, - "end": 70836, + "start": 70706, + "end": 70872, "loc": { "start": { - "line": 2053, + "line": 2054, "column": 4 }, "end": { - "line": 2059, + "line": 2060, "column": 7 } } @@ -47211,15 +47327,15 @@ }, { "type": "ClassMethod", - "start": 70841, - "end": 70894, + "start": 70877, + "end": 70930, "loc": { "start": { - "line": 2060, + "line": 2061, "column": 4 }, "end": { - "line": 2062, + "line": 2063, "column": 5 } }, @@ -47227,15 +47343,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 70845, - "end": 70853, + "start": 70881, + "end": 70889, "loc": { "start": { - "line": 2060, + "line": 2061, "column": 8 }, "end": { - "line": 2060, + "line": 2061, "column": 16 }, "identifierName": "colorize" @@ -47250,73 +47366,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 70856, - "end": 70894, + "start": 70892, + "end": 70930, "loc": { "start": { - "line": 2060, + "line": 2061, "column": 19 }, "end": { - "line": 2062, + "line": 2063, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 70866, - "end": 70888, + "start": 70902, + "end": 70924, "loc": { "start": { - "line": 2061, + "line": 2062, "column": 8 }, "end": { - "line": 2061, + "line": 2062, "column": 30 } }, "argument": { "type": "MemberExpression", - "start": 70873, - "end": 70887, + "start": 70909, + "end": 70923, "loc": { "start": { - "line": 2061, + "line": 2062, "column": 15 }, "end": { - "line": 2061, + "line": 2062, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 70873, - "end": 70877, + "start": 70909, + "end": 70913, "loc": { "start": { - "line": 2061, + "line": 2062, "column": 15 }, "end": { - "line": 2061, + "line": 2062, "column": 19 } } }, "property": { "type": "Identifier", - "start": 70878, - "end": 70887, + "start": 70914, + "end": 70923, "loc": { "start": { - "line": 2061, + "line": 2062, "column": 20 }, "end": { - "line": 2061, + "line": 2062, "column": 29 }, "identifierName": "_colorize" @@ -47334,15 +47450,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the RGB colorize color for this SceneModel.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", - "start": 70670, - "end": 70836, + "start": 70706, + "end": 70872, "loc": { "start": { - "line": 2053, + "line": 2054, "column": 4 }, "end": { - "line": 2059, + "line": 2060, "column": 7 } } @@ -47352,15 +47468,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the RGB colorize color for this SceneModel.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", - "start": 70900, - "end": 71120, + "start": 70936, + "end": 71156, "loc": { "start": { - "line": 2064, + "line": 2065, "column": 4 }, "end": { - "line": 2072, + "line": 2073, "column": 7 } } @@ -47369,15 +47485,15 @@ }, { "type": "ClassMethod", - "start": 71125, - "end": 71324, + "start": 71161, + "end": 71360, "loc": { "start": { - "line": 2073, + "line": 2074, "column": 4 }, "end": { - "line": 2078, + "line": 2079, "column": 5 } }, @@ -47385,15 +47501,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 71129, - "end": 71137, + "start": 71165, + "end": 71173, "loc": { "start": { - "line": 2073, + "line": 2074, "column": 8 }, "end": { - "line": 2073, + "line": 2074, "column": 16 }, "identifierName": "colorize" @@ -47408,15 +47524,15 @@ "params": [ { "type": "Identifier", - "start": 71138, - "end": 71146, + "start": 71174, + "end": 71182, "loc": { "start": { - "line": 2073, + "line": 2074, "column": 17 }, "end": { - "line": 2073, + "line": 2074, "column": 25 }, "identifierName": "colorize" @@ -47426,88 +47542,88 @@ ], "body": { "type": "BlockStatement", - "start": 71148, - "end": 71324, + "start": 71184, + "end": 71360, "loc": { "start": { - "line": 2073, + "line": 2074, "column": 27 }, "end": { - "line": 2078, + "line": 2079, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 71158, - "end": 71184, + "start": 71194, + "end": 71220, "loc": { "start": { - "line": 2074, + "line": 2075, "column": 8 }, "end": { - "line": 2074, + "line": 2075, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 71158, - "end": 71183, + "start": 71194, + "end": 71219, "loc": { "start": { - "line": 2074, + "line": 2075, "column": 8 }, "end": { - "line": 2074, + "line": 2075, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 71158, - "end": 71172, + "start": 71194, + "end": 71208, "loc": { "start": { - "line": 2074, + "line": 2075, "column": 8 }, "end": { - "line": 2074, + "line": 2075, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 71158, - "end": 71162, + "start": 71194, + "end": 71198, "loc": { "start": { - "line": 2074, + "line": 2075, "column": 8 }, "end": { - "line": 2074, + "line": 2075, "column": 12 } } }, "property": { "type": "Identifier", - "start": 71163, - "end": 71172, + "start": 71199, + "end": 71208, "loc": { "start": { - "line": 2074, + "line": 2075, "column": 13 }, "end": { - "line": 2074, + "line": 2075, "column": 22 }, "identifierName": "_colorize" @@ -47518,15 +47634,15 @@ }, "right": { "type": "Identifier", - "start": 71175, - "end": 71183, + "start": 71211, + "end": 71219, "loc": { "start": { - "line": 2074, + "line": 2075, "column": 25 }, "end": { - "line": 2074, + "line": 2075, "column": 33 }, "identifierName": "colorize" @@ -47537,58 +47653,58 @@ }, { "type": "ForStatement", - "start": 71193, - "end": 71318, + "start": 71229, + "end": 71354, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 8 }, "end": { - "line": 2077, + "line": 2078, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 71198, - "end": 71238, + "start": 71234, + "end": 71274, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 13 }, "end": { - "line": 2075, + "line": 2076, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 71202, - "end": 71207, + "start": 71238, + "end": 71243, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 17 }, "end": { - "line": 2075, + "line": 2076, "column": 22 } }, "id": { "type": "Identifier", - "start": 71202, - "end": 71203, + "start": 71238, + "end": 71239, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 17 }, "end": { - "line": 2075, + "line": 2076, "column": 18 }, "identifierName": "i" @@ -47597,15 +47713,15 @@ }, "init": { "type": "NumericLiteral", - "start": 71206, - "end": 71207, + "start": 71242, + "end": 71243, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 21 }, "end": { - "line": 2075, + "line": 2076, "column": 22 } }, @@ -47618,29 +47734,29 @@ }, { "type": "VariableDeclarator", - "start": 71209, - "end": 71238, + "start": 71245, + "end": 71274, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 24 }, "end": { - "line": 2075, + "line": 2076, "column": 53 } }, "id": { "type": "Identifier", - "start": 71209, - "end": 71212, + "start": 71245, + "end": 71248, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 24 }, "end": { - "line": 2075, + "line": 2076, "column": 27 }, "identifierName": "len" @@ -47649,58 +47765,58 @@ }, "init": { "type": "MemberExpression", - "start": 71215, - "end": 71238, + "start": 71251, + "end": 71274, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 30 }, "end": { - "line": 2075, + "line": 2076, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 71215, - "end": 71231, + "start": 71251, + "end": 71267, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 30 }, "end": { - "line": 2075, + "line": 2076, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 71215, - "end": 71219, + "start": 71251, + "end": 71255, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 30 }, "end": { - "line": 2075, + "line": 2076, "column": 34 } } }, "property": { "type": "Identifier", - "start": 71220, - "end": 71231, + "start": 71256, + "end": 71267, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 35 }, "end": { - "line": 2075, + "line": 2076, "column": 46 }, "identifierName": "_entityList" @@ -47711,15 +47827,15 @@ }, "property": { "type": "Identifier", - "start": 71232, - "end": 71238, + "start": 71268, + "end": 71274, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 47 }, "end": { - "line": 2075, + "line": 2076, "column": 53 }, "identifierName": "length" @@ -47734,29 +47850,29 @@ }, "test": { "type": "BinaryExpression", - "start": 71240, - "end": 71247, + "start": 71276, + "end": 71283, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 55 }, "end": { - "line": 2075, + "line": 2076, "column": 62 } }, "left": { "type": "Identifier", - "start": 71240, - "end": 71241, + "start": 71276, + "end": 71277, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 55 }, "end": { - "line": 2075, + "line": 2076, "column": 56 }, "identifierName": "i" @@ -47766,15 +47882,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 71244, - "end": 71247, + "start": 71280, + "end": 71283, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 59 }, "end": { - "line": 2075, + "line": 2076, "column": 62 }, "identifierName": "len" @@ -47784,15 +47900,15 @@ }, "update": { "type": "UpdateExpression", - "start": 71249, - "end": 71252, + "start": 71285, + "end": 71288, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 64 }, "end": { - "line": 2075, + "line": 2076, "column": 67 } }, @@ -47800,15 +47916,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 71249, - "end": 71250, + "start": 71285, + "end": 71286, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 64 }, "end": { - "line": 2075, + "line": 2076, "column": 65 }, "identifierName": "i" @@ -47818,116 +47934,116 @@ }, "body": { "type": "BlockStatement", - "start": 71254, - "end": 71318, + "start": 71290, + "end": 71354, "loc": { "start": { - "line": 2075, + "line": 2076, "column": 69 }, "end": { - "line": 2077, + "line": 2078, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 71268, - "end": 71308, + "start": 71304, + "end": 71344, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 12 }, "end": { - "line": 2076, + "line": 2077, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 71268, - "end": 71307, + "start": 71304, + "end": 71343, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 12 }, "end": { - "line": 2076, + "line": 2077, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 71268, - "end": 71296, + "start": 71304, + "end": 71332, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 12 }, "end": { - "line": 2076, + "line": 2077, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 71268, - "end": 71287, + "start": 71304, + "end": 71323, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 12 }, "end": { - "line": 2076, + "line": 2077, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 71268, - "end": 71284, + "start": 71304, + "end": 71320, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 12 }, "end": { - "line": 2076, + "line": 2077, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 71268, - "end": 71272, + "start": 71304, + "end": 71308, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 12 }, "end": { - "line": 2076, + "line": 2077, "column": 16 } } }, "property": { "type": "Identifier", - "start": 71273, - "end": 71284, + "start": 71309, + "end": 71320, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 17 }, "end": { - "line": 2076, + "line": 2077, "column": 28 }, "identifierName": "_entityList" @@ -47938,15 +48054,15 @@ }, "property": { "type": "Identifier", - "start": 71285, - "end": 71286, + "start": 71321, + "end": 71322, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 29 }, "end": { - "line": 2076, + "line": 2077, "column": 30 }, "identifierName": "i" @@ -47957,15 +48073,15 @@ }, "property": { "type": "Identifier", - "start": 71288, - "end": 71296, + "start": 71324, + "end": 71332, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 32 }, "end": { - "line": 2076, + "line": 2077, "column": 40 }, "identifierName": "colorize" @@ -47976,15 +48092,15 @@ }, "right": { "type": "Identifier", - "start": 71299, - "end": 71307, + "start": 71335, + "end": 71343, "loc": { "start": { - "line": 2076, + "line": 2077, "column": 43 }, "end": { - "line": 2076, + "line": 2077, "column": 51 }, "identifierName": "colorize" @@ -48005,15 +48121,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the RGB colorize color for this SceneModel.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", - "start": 70900, - "end": 71120, + "start": 70936, + "end": 71156, "loc": { "start": { - "line": 2064, + "line": 2065, "column": 4 }, "end": { - "line": 2072, + "line": 2073, "column": 7 } } @@ -48023,15 +48139,15 @@ { "type": "CommentBlock", "value": "*\n * Gets this SceneModel's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", - "start": 71330, - "end": 71521, + "start": 71366, + "end": 71557, "loc": { "start": { - "line": 2080, + "line": 2081, "column": 4 }, "end": { - "line": 2086, + "line": 2087, "column": 7 } } @@ -48040,15 +48156,15 @@ }, { "type": "ClassMethod", - "start": 71526, - "end": 71577, + "start": 71562, + "end": 71613, "loc": { "start": { - "line": 2087, + "line": 2088, "column": 4 }, "end": { - "line": 2089, + "line": 2090, "column": 5 } }, @@ -48056,15 +48172,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 71530, - "end": 71537, + "start": 71566, + "end": 71573, "loc": { "start": { - "line": 2087, + "line": 2088, "column": 8 }, "end": { - "line": 2087, + "line": 2088, "column": 15 }, "identifierName": "opacity" @@ -48079,73 +48195,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 71540, - "end": 71577, + "start": 71576, + "end": 71613, "loc": { "start": { - "line": 2087, + "line": 2088, "column": 18 }, "end": { - "line": 2089, + "line": 2090, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 71550, - "end": 71571, + "start": 71586, + "end": 71607, "loc": { "start": { - "line": 2088, + "line": 2089, "column": 8 }, "end": { - "line": 2088, + "line": 2089, "column": 29 } }, "argument": { "type": "MemberExpression", - "start": 71557, - "end": 71570, + "start": 71593, + "end": 71606, "loc": { "start": { - "line": 2088, + "line": 2089, "column": 15 }, "end": { - "line": 2088, + "line": 2089, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 71557, - "end": 71561, + "start": 71593, + "end": 71597, "loc": { "start": { - "line": 2088, + "line": 2089, "column": 15 }, "end": { - "line": 2088, + "line": 2089, "column": 19 } } }, "property": { "type": "Identifier", - "start": 71562, - "end": 71570, + "start": 71598, + "end": 71606, "loc": { "start": { - "line": 2088, + "line": 2089, "column": 20 }, "end": { - "line": 2088, + "line": 2089, "column": 28 }, "identifierName": "_opacity" @@ -48163,15 +48279,15 @@ { "type": "CommentBlock", "value": "*\n * Gets this SceneModel's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", - "start": 71330, - "end": 71521, + "start": 71366, + "end": 71557, "loc": { "start": { - "line": 2080, + "line": 2081, "column": 4 }, "end": { - "line": 2086, + "line": 2087, "column": 7 } } @@ -48181,15 +48297,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the opacity factor for this SceneModel.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", - "start": 71583, - "end": 71780, + "start": 71619, + "end": 71816, "loc": { "start": { - "line": 2091, + "line": 2092, "column": 4 }, "end": { - "line": 2097, + "line": 2098, "column": 7 } } @@ -48198,15 +48314,15 @@ }, { "type": "ClassMethod", - "start": 71785, - "end": 71978, + "start": 71821, + "end": 72014, "loc": { "start": { - "line": 2098, + "line": 2099, "column": 4 }, "end": { - "line": 2103, + "line": 2104, "column": 5 } }, @@ -48214,15 +48330,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 71789, - "end": 71796, + "start": 71825, + "end": 71832, "loc": { "start": { - "line": 2098, + "line": 2099, "column": 8 }, "end": { - "line": 2098, + "line": 2099, "column": 15 }, "identifierName": "opacity" @@ -48237,15 +48353,15 @@ "params": [ { "type": "Identifier", - "start": 71797, - "end": 71804, + "start": 71833, + "end": 71840, "loc": { "start": { - "line": 2098, + "line": 2099, "column": 16 }, "end": { - "line": 2098, + "line": 2099, "column": 23 }, "identifierName": "opacity" @@ -48255,88 +48371,88 @@ ], "body": { "type": "BlockStatement", - "start": 71806, - "end": 71978, + "start": 71842, + "end": 72014, "loc": { "start": { - "line": 2098, + "line": 2099, "column": 25 }, "end": { - "line": 2103, + "line": 2104, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 71816, - "end": 71840, + "start": 71852, + "end": 71876, "loc": { "start": { - "line": 2099, + "line": 2100, "column": 8 }, "end": { - "line": 2099, + "line": 2100, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 71816, - "end": 71839, + "start": 71852, + "end": 71875, "loc": { "start": { - "line": 2099, + "line": 2100, "column": 8 }, "end": { - "line": 2099, + "line": 2100, "column": 31 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 71816, - "end": 71829, + "start": 71852, + "end": 71865, "loc": { "start": { - "line": 2099, + "line": 2100, "column": 8 }, "end": { - "line": 2099, + "line": 2100, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 71816, - "end": 71820, + "start": 71852, + "end": 71856, "loc": { "start": { - "line": 2099, + "line": 2100, "column": 8 }, "end": { - "line": 2099, + "line": 2100, "column": 12 } } }, "property": { "type": "Identifier", - "start": 71821, - "end": 71829, + "start": 71857, + "end": 71865, "loc": { "start": { - "line": 2099, + "line": 2100, "column": 13 }, "end": { - "line": 2099, + "line": 2100, "column": 21 }, "identifierName": "_opacity" @@ -48347,15 +48463,15 @@ }, "right": { "type": "Identifier", - "start": 71832, - "end": 71839, + "start": 71868, + "end": 71875, "loc": { "start": { - "line": 2099, + "line": 2100, "column": 24 }, "end": { - "line": 2099, + "line": 2100, "column": 31 }, "identifierName": "opacity" @@ -48366,58 +48482,58 @@ }, { "type": "ForStatement", - "start": 71849, - "end": 71972, + "start": 71885, + "end": 72008, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 8 }, "end": { - "line": 2102, + "line": 2103, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 71854, - "end": 71894, + "start": 71890, + "end": 71930, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 13 }, "end": { - "line": 2100, + "line": 2101, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 71858, - "end": 71863, + "start": 71894, + "end": 71899, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 17 }, "end": { - "line": 2100, + "line": 2101, "column": 22 } }, "id": { "type": "Identifier", - "start": 71858, - "end": 71859, + "start": 71894, + "end": 71895, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 17 }, "end": { - "line": 2100, + "line": 2101, "column": 18 }, "identifierName": "i" @@ -48426,15 +48542,15 @@ }, "init": { "type": "NumericLiteral", - "start": 71862, - "end": 71863, + "start": 71898, + "end": 71899, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 21 }, "end": { - "line": 2100, + "line": 2101, "column": 22 } }, @@ -48447,29 +48563,29 @@ }, { "type": "VariableDeclarator", - "start": 71865, - "end": 71894, + "start": 71901, + "end": 71930, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 24 }, "end": { - "line": 2100, + "line": 2101, "column": 53 } }, "id": { "type": "Identifier", - "start": 71865, - "end": 71868, + "start": 71901, + "end": 71904, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 24 }, "end": { - "line": 2100, + "line": 2101, "column": 27 }, "identifierName": "len" @@ -48478,58 +48594,58 @@ }, "init": { "type": "MemberExpression", - "start": 71871, - "end": 71894, + "start": 71907, + "end": 71930, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 30 }, "end": { - "line": 2100, + "line": 2101, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 71871, - "end": 71887, + "start": 71907, + "end": 71923, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 30 }, "end": { - "line": 2100, + "line": 2101, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 71871, - "end": 71875, + "start": 71907, + "end": 71911, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 30 }, "end": { - "line": 2100, + "line": 2101, "column": 34 } } }, "property": { "type": "Identifier", - "start": 71876, - "end": 71887, + "start": 71912, + "end": 71923, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 35 }, "end": { - "line": 2100, + "line": 2101, "column": 46 }, "identifierName": "_entityList" @@ -48540,15 +48656,15 @@ }, "property": { "type": "Identifier", - "start": 71888, - "end": 71894, + "start": 71924, + "end": 71930, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 47 }, "end": { - "line": 2100, + "line": 2101, "column": 53 }, "identifierName": "length" @@ -48563,29 +48679,29 @@ }, "test": { "type": "BinaryExpression", - "start": 71896, - "end": 71903, + "start": 71932, + "end": 71939, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 55 }, "end": { - "line": 2100, + "line": 2101, "column": 62 } }, "left": { "type": "Identifier", - "start": 71896, - "end": 71897, + "start": 71932, + "end": 71933, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 55 }, "end": { - "line": 2100, + "line": 2101, "column": 56 }, "identifierName": "i" @@ -48595,15 +48711,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 71900, - "end": 71903, + "start": 71936, + "end": 71939, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 59 }, "end": { - "line": 2100, + "line": 2101, "column": 62 }, "identifierName": "len" @@ -48613,15 +48729,15 @@ }, "update": { "type": "UpdateExpression", - "start": 71905, - "end": 71908, + "start": 71941, + "end": 71944, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 64 }, "end": { - "line": 2100, + "line": 2101, "column": 67 } }, @@ -48629,15 +48745,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 71905, - "end": 71906, + "start": 71941, + "end": 71942, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 64 }, "end": { - "line": 2100, + "line": 2101, "column": 65 }, "identifierName": "i" @@ -48647,116 +48763,116 @@ }, "body": { "type": "BlockStatement", - "start": 71910, - "end": 71972, + "start": 71946, + "end": 72008, "loc": { "start": { - "line": 2100, + "line": 2101, "column": 69 }, "end": { - "line": 2102, + "line": 2103, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 71924, - "end": 71962, + "start": 71960, + "end": 71998, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 12 }, "end": { - "line": 2101, + "line": 2102, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 71924, - "end": 71961, + "start": 71960, + "end": 71997, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 12 }, "end": { - "line": 2101, + "line": 2102, "column": 49 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 71924, - "end": 71951, + "start": 71960, + "end": 71987, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 12 }, "end": { - "line": 2101, + "line": 2102, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 71924, - "end": 71943, + "start": 71960, + "end": 71979, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 12 }, "end": { - "line": 2101, + "line": 2102, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 71924, - "end": 71940, + "start": 71960, + "end": 71976, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 12 }, "end": { - "line": 2101, + "line": 2102, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 71924, - "end": 71928, + "start": 71960, + "end": 71964, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 12 }, "end": { - "line": 2101, + "line": 2102, "column": 16 } } }, "property": { "type": "Identifier", - "start": 71929, - "end": 71940, + "start": 71965, + "end": 71976, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 17 }, "end": { - "line": 2101, + "line": 2102, "column": 28 }, "identifierName": "_entityList" @@ -48767,15 +48883,15 @@ }, "property": { "type": "Identifier", - "start": 71941, - "end": 71942, + "start": 71977, + "end": 71978, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 29 }, "end": { - "line": 2101, + "line": 2102, "column": 30 }, "identifierName": "i" @@ -48786,15 +48902,15 @@ }, "property": { "type": "Identifier", - "start": 71944, - "end": 71951, + "start": 71980, + "end": 71987, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 32 }, "end": { - "line": 2101, + "line": 2102, "column": 39 }, "identifierName": "opacity" @@ -48805,15 +48921,15 @@ }, "right": { "type": "Identifier", - "start": 71954, - "end": 71961, + "start": 71990, + "end": 71997, "loc": { "start": { - "line": 2101, + "line": 2102, "column": 42 }, "end": { - "line": 2101, + "line": 2102, "column": 49 }, "identifierName": "opacity" @@ -48834,15 +48950,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the opacity factor for this SceneModel.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", - "start": 71583, - "end": 71780, + "start": 71619, + "end": 71816, "loc": { "start": { - "line": 2091, + "line": 2092, "column": 4 }, "end": { - "line": 2097, + "line": 2098, "column": 7 } } @@ -48852,15 +48968,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", - "start": 71984, - "end": 72072, + "start": 72020, + "end": 72108, "loc": { "start": { - "line": 2105, + "line": 2106, "column": 4 }, "end": { - "line": 2109, + "line": 2110, "column": 7 } } @@ -48869,15 +48985,15 @@ }, { "type": "ClassMethod", - "start": 72077, - "end": 72136, + "start": 72113, + "end": 72172, "loc": { "start": { - "line": 2110, + "line": 2111, "column": 4 }, "end": { - "line": 2112, + "line": 2113, "column": 5 } }, @@ -48885,15 +49001,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 72081, - "end": 72092, + "start": 72117, + "end": 72128, "loc": { "start": { - "line": 2110, + "line": 2111, "column": 8 }, "end": { - "line": 2110, + "line": 2111, "column": 19 }, "identifierName": "castsShadow" @@ -48908,73 +49024,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 72095, - "end": 72136, + "start": 72131, + "end": 72172, "loc": { "start": { - "line": 2110, + "line": 2111, "column": 22 }, "end": { - "line": 2112, + "line": 2113, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 72105, - "end": 72130, + "start": 72141, + "end": 72166, "loc": { "start": { - "line": 2111, + "line": 2112, "column": 8 }, "end": { - "line": 2111, + "line": 2112, "column": 33 } }, "argument": { "type": "MemberExpression", - "start": 72112, - "end": 72129, + "start": 72148, + "end": 72165, "loc": { "start": { - "line": 2111, + "line": 2112, "column": 15 }, "end": { - "line": 2111, + "line": 2112, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 72112, - "end": 72116, + "start": 72148, + "end": 72152, "loc": { "start": { - "line": 2111, + "line": 2112, "column": 15 }, "end": { - "line": 2111, + "line": 2112, "column": 19 } } }, "property": { "type": "Identifier", - "start": 72117, - "end": 72129, + "start": 72153, + "end": 72165, "loc": { "start": { - "line": 2111, + "line": 2112, "column": 20 }, "end": { - "line": 2111, + "line": 2112, "column": 32 }, "identifierName": "_castsShadow" @@ -48992,15 +49108,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", - "start": 71984, - "end": 72072, + "start": 72020, + "end": 72108, "loc": { "start": { - "line": 2105, + "line": 2106, "column": 4 }, "end": { - "line": 2109, + "line": 2110, "column": 7 } } @@ -49010,15 +49126,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", - "start": 72142, - "end": 72230, + "start": 72178, + "end": 72266, "loc": { "start": { - "line": 2114, + "line": 2115, "column": 4 }, "end": { - "line": 2118, + "line": 2119, "column": 7 } } @@ -49027,15 +49143,15 @@ }, { "type": "ClassMethod", - "start": 72235, - "end": 72451, + "start": 72271, + "end": 72487, "loc": { "start": { - "line": 2119, + "line": 2120, "column": 4 }, "end": { - "line": 2125, + "line": 2126, "column": 5 } }, @@ -49043,15 +49159,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 72239, - "end": 72250, + "start": 72275, + "end": 72286, "loc": { "start": { - "line": 2119, + "line": 2120, "column": 8 }, "end": { - "line": 2119, + "line": 2120, "column": 19 }, "identifierName": "castsShadow" @@ -49066,15 +49182,15 @@ "params": [ { "type": "Identifier", - "start": 72251, - "end": 72262, + "start": 72287, + "end": 72298, "loc": { "start": { - "line": 2119, + "line": 2120, "column": 20 }, "end": { - "line": 2119, + "line": 2120, "column": 31 }, "identifierName": "castsShadow" @@ -49084,59 +49200,59 @@ ], "body": { "type": "BlockStatement", - "start": 72264, - "end": 72451, + "start": 72300, + "end": 72487, "loc": { "start": { - "line": 2119, + "line": 2120, "column": 33 }, "end": { - "line": 2125, + "line": 2126, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 72274, - "end": 72312, + "start": 72310, + "end": 72348, "loc": { "start": { - "line": 2120, + "line": 2121, "column": 8 }, "end": { - "line": 2120, + "line": 2121, "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 72274, - "end": 72311, + "start": 72310, + "end": 72347, "loc": { "start": { - "line": 2120, + "line": 2121, "column": 8 }, "end": { - "line": 2120, + "line": 2121, "column": 45 } }, "operator": "=", "left": { "type": "Identifier", - "start": 72274, - "end": 72285, + "start": 72310, + "end": 72321, "loc": { "start": { - "line": 2120, + "line": 2121, "column": 8 }, "end": { - "line": 2120, + "line": 2121, "column": 19 }, "identifierName": "castsShadow" @@ -49145,29 +49261,29 @@ }, "right": { "type": "BinaryExpression", - "start": 72289, - "end": 72310, + "start": 72325, + "end": 72346, "loc": { "start": { - "line": 2120, + "line": 2121, "column": 23 }, "end": { - "line": 2120, + "line": 2121, "column": 44 } }, "left": { "type": "Identifier", - "start": 72289, - "end": 72300, + "start": 72325, + "end": 72336, "loc": { "start": { - "line": 2120, + "line": 2121, "column": 23 }, "end": { - "line": 2120, + "line": 2121, "column": 34 }, "identifierName": "castsShadow" @@ -49177,15 +49293,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 72305, - "end": 72310, + "start": 72341, + "end": 72346, "loc": { "start": { - "line": 2120, + "line": 2121, "column": 39 }, "end": { - "line": 2120, + "line": 2121, "column": 44 } }, @@ -49193,50 +49309,50 @@ }, "extra": { "parenthesized": true, - "parenStart": 72288 + "parenStart": 72324 } } } }, { "type": "IfStatement", - "start": 72321, - "end": 72445, + "start": 72357, + "end": 72481, "loc": { "start": { - "line": 2121, + "line": 2122, "column": 8 }, "end": { - "line": 2124, + "line": 2125, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 72325, - "end": 72358, + "start": 72361, + "end": 72394, "loc": { "start": { - "line": 2121, + "line": 2122, "column": 12 }, "end": { - "line": 2121, + "line": 2122, "column": 45 } }, "left": { "type": "Identifier", - "start": 72325, - "end": 72336, + "start": 72361, + "end": 72372, "loc": { "start": { - "line": 2121, + "line": 2122, "column": 12 }, "end": { - "line": 2121, + "line": 2122, "column": 23 }, "identifierName": "castsShadow" @@ -49246,44 +49362,44 @@ "operator": "!==", "right": { "type": "MemberExpression", - "start": 72341, - "end": 72358, + "start": 72377, + "end": 72394, "loc": { "start": { - "line": 2121, + "line": 2122, "column": 28 }, "end": { - "line": 2121, + "line": 2122, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 72341, - "end": 72345, + "start": 72377, + "end": 72381, "loc": { "start": { - "line": 2121, + "line": 2122, "column": 28 }, "end": { - "line": 2121, + "line": 2122, "column": 32 } } }, "property": { "type": "Identifier", - "start": 72346, - "end": 72358, + "start": 72382, + "end": 72394, "loc": { "start": { - "line": 2121, + "line": 2122, "column": 33 }, "end": { - "line": 2121, + "line": 2122, "column": 45 }, "identifierName": "_castsShadow" @@ -49295,88 +49411,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 72360, - "end": 72445, + "start": 72396, + "end": 72481, "loc": { "start": { - "line": 2121, + "line": 2122, "column": 47 }, "end": { - "line": 2124, + "line": 2125, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 72374, - "end": 72406, + "start": 72410, + "end": 72442, "loc": { "start": { - "line": 2122, + "line": 2123, "column": 12 }, "end": { - "line": 2122, + "line": 2123, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 72374, - "end": 72405, + "start": 72410, + "end": 72441, "loc": { "start": { - "line": 2122, + "line": 2123, "column": 12 }, "end": { - "line": 2122, + "line": 2123, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 72374, - "end": 72391, + "start": 72410, + "end": 72427, "loc": { "start": { - "line": 2122, + "line": 2123, "column": 12 }, "end": { - "line": 2122, + "line": 2123, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 72374, - "end": 72378, + "start": 72410, + "end": 72414, "loc": { "start": { - "line": 2122, + "line": 2123, "column": 12 }, "end": { - "line": 2122, + "line": 2123, "column": 16 } } }, "property": { "type": "Identifier", - "start": 72379, - "end": 72391, + "start": 72415, + "end": 72427, "loc": { "start": { - "line": 2122, + "line": 2123, "column": 17 }, "end": { - "line": 2122, + "line": 2123, "column": 29 }, "identifierName": "_castsShadow" @@ -49387,15 +49503,15 @@ }, "right": { "type": "Identifier", - "start": 72394, - "end": 72405, + "start": 72430, + "end": 72441, "loc": { "start": { - "line": 2122, + "line": 2123, "column": 32 }, "end": { - "line": 2122, + "line": 2123, "column": 43 }, "identifierName": "castsShadow" @@ -49406,72 +49522,72 @@ }, { "type": "ExpressionStatement", - "start": 72419, - "end": 72435, + "start": 72455, + "end": 72471, "loc": { "start": { - "line": 2123, + "line": 2124, "column": 12 }, "end": { - "line": 2123, + "line": 2124, "column": 28 } }, "expression": { "type": "CallExpression", - "start": 72419, - "end": 72434, + "start": 72455, + "end": 72470, "loc": { "start": { - "line": 2123, + "line": 2124, "column": 12 }, "end": { - "line": 2123, + "line": 2124, "column": 27 } }, "callee": { "type": "MemberExpression", - "start": 72419, - "end": 72432, + "start": 72455, + "end": 72468, "loc": { "start": { - "line": 2123, + "line": 2124, "column": 12 }, "end": { - "line": 2123, + "line": 2124, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 72419, - "end": 72423, + "start": 72455, + "end": 72459, "loc": { "start": { - "line": 2123, + "line": 2124, "column": 12 }, "end": { - "line": 2123, + "line": 2124, "column": 16 } } }, "property": { "type": "Identifier", - "start": 72424, - "end": 72432, + "start": 72460, + "end": 72468, "loc": { "start": { - "line": 2123, + "line": 2124, "column": 17 }, "end": { - "line": 2123, + "line": 2124, "column": 25 }, "identifierName": "glRedraw" @@ -49496,15 +49612,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", - "start": 72142, - "end": 72230, + "start": 72178, + "end": 72266, "loc": { "start": { - "line": 2114, + "line": 2115, "column": 4 }, "end": { - "line": 2118, + "line": 2119, "column": 7 } } @@ -49514,15 +49630,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", - "start": 72457, - "end": 72559, + "start": 72493, + "end": 72595, "loc": { "start": { - "line": 2127, + "line": 2128, "column": 4 }, "end": { - "line": 2131, + "line": 2132, "column": 7 } } @@ -49531,15 +49647,15 @@ }, { "type": "ClassMethod", - "start": 72564, - "end": 72629, + "start": 72600, + "end": 72665, "loc": { "start": { - "line": 2132, + "line": 2133, "column": 4 }, "end": { - "line": 2134, + "line": 2135, "column": 5 } }, @@ -49547,15 +49663,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 72568, - "end": 72582, + "start": 72604, + "end": 72618, "loc": { "start": { - "line": 2132, + "line": 2133, "column": 8 }, "end": { - "line": 2132, + "line": 2133, "column": 22 }, "identifierName": "receivesShadow" @@ -49570,73 +49686,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 72585, - "end": 72629, + "start": 72621, + "end": 72665, "loc": { "start": { - "line": 2132, + "line": 2133, "column": 25 }, "end": { - "line": 2134, + "line": 2135, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 72595, - "end": 72623, + "start": 72631, + "end": 72659, "loc": { "start": { - "line": 2133, + "line": 2134, "column": 8 }, "end": { - "line": 2133, + "line": 2134, "column": 36 } }, "argument": { "type": "MemberExpression", - "start": 72602, - "end": 72622, + "start": 72638, + "end": 72658, "loc": { "start": { - "line": 2133, + "line": 2134, "column": 15 }, "end": { - "line": 2133, + "line": 2134, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 72602, - "end": 72606, + "start": 72638, + "end": 72642, "loc": { "start": { - "line": 2133, + "line": 2134, "column": 15 }, "end": { - "line": 2133, + "line": 2134, "column": 19 } } }, "property": { "type": "Identifier", - "start": 72607, - "end": 72622, + "start": 72643, + "end": 72658, "loc": { "start": { - "line": 2133, + "line": 2134, "column": 20 }, "end": { - "line": 2133, + "line": 2134, "column": 35 }, "identifierName": "_receivesShadow" @@ -49654,15 +49770,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", - "start": 72457, - "end": 72559, + "start": 72493, + "end": 72595, "loc": { "start": { - "line": 2127, + "line": 2128, "column": 4 }, "end": { - "line": 2131, + "line": 2132, "column": 7 } } @@ -49672,15 +49788,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", - "start": 72635, - "end": 72737, + "start": 72671, + "end": 72773, "loc": { "start": { - "line": 2136, + "line": 2137, "column": 4 }, "end": { - "line": 2140, + "line": 2141, "column": 7 } } @@ -49689,15 +49805,15 @@ }, { "type": "ClassMethod", - "start": 72742, - "end": 72982, + "start": 72778, + "end": 73018, "loc": { "start": { - "line": 2141, + "line": 2142, "column": 4 }, "end": { - "line": 2147, + "line": 2148, "column": 5 } }, @@ -49705,15 +49821,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 72746, - "end": 72760, + "start": 72782, + "end": 72796, "loc": { "start": { - "line": 2141, + "line": 2142, "column": 8 }, "end": { - "line": 2141, + "line": 2142, "column": 22 }, "identifierName": "receivesShadow" @@ -49728,15 +49844,15 @@ "params": [ { "type": "Identifier", - "start": 72761, - "end": 72775, + "start": 72797, + "end": 72811, "loc": { "start": { - "line": 2141, + "line": 2142, "column": 23 }, "end": { - "line": 2141, + "line": 2142, "column": 37 }, "identifierName": "receivesShadow" @@ -49746,59 +49862,59 @@ ], "body": { "type": "BlockStatement", - "start": 72777, - "end": 72982, + "start": 72813, + "end": 73018, "loc": { "start": { - "line": 2141, + "line": 2142, "column": 39 }, "end": { - "line": 2147, + "line": 2148, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 72787, - "end": 72831, + "start": 72823, + "end": 72867, "loc": { "start": { - "line": 2142, + "line": 2143, "column": 8 }, "end": { - "line": 2142, + "line": 2143, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 72787, - "end": 72830, + "start": 72823, + "end": 72866, "loc": { "start": { - "line": 2142, + "line": 2143, "column": 8 }, "end": { - "line": 2142, + "line": 2143, "column": 51 } }, "operator": "=", "left": { "type": "Identifier", - "start": 72787, - "end": 72801, + "start": 72823, + "end": 72837, "loc": { "start": { - "line": 2142, + "line": 2143, "column": 8 }, "end": { - "line": 2142, + "line": 2143, "column": 22 }, "identifierName": "receivesShadow" @@ -49807,29 +49923,29 @@ }, "right": { "type": "BinaryExpression", - "start": 72805, - "end": 72829, + "start": 72841, + "end": 72865, "loc": { "start": { - "line": 2142, + "line": 2143, "column": 26 }, "end": { - "line": 2142, + "line": 2143, "column": 50 } }, "left": { "type": "Identifier", - "start": 72805, - "end": 72819, + "start": 72841, + "end": 72855, "loc": { "start": { - "line": 2142, + "line": 2143, "column": 26 }, "end": { - "line": 2142, + "line": 2143, "column": 40 }, "identifierName": "receivesShadow" @@ -49839,15 +49955,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 72824, - "end": 72829, + "start": 72860, + "end": 72865, "loc": { "start": { - "line": 2142, + "line": 2143, "column": 45 }, "end": { - "line": 2142, + "line": 2143, "column": 50 } }, @@ -49855,50 +49971,50 @@ }, "extra": { "parenthesized": true, - "parenStart": 72804 + "parenStart": 72840 } } } }, { "type": "IfStatement", - "start": 72840, - "end": 72976, + "start": 72876, + "end": 73012, "loc": { "start": { - "line": 2143, + "line": 2144, "column": 8 }, "end": { - "line": 2146, + "line": 2147, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 72844, - "end": 72883, + "start": 72880, + "end": 72919, "loc": { "start": { - "line": 2143, + "line": 2144, "column": 12 }, "end": { - "line": 2143, + "line": 2144, "column": 51 } }, "left": { "type": "Identifier", - "start": 72844, - "end": 72858, + "start": 72880, + "end": 72894, "loc": { "start": { - "line": 2143, + "line": 2144, "column": 12 }, "end": { - "line": 2143, + "line": 2144, "column": 26 }, "identifierName": "receivesShadow" @@ -49908,44 +50024,44 @@ "operator": "!==", "right": { "type": "MemberExpression", - "start": 72863, - "end": 72883, + "start": 72899, + "end": 72919, "loc": { "start": { - "line": 2143, + "line": 2144, "column": 31 }, "end": { - "line": 2143, + "line": 2144, "column": 51 } }, "object": { "type": "ThisExpression", - "start": 72863, - "end": 72867, + "start": 72899, + "end": 72903, "loc": { "start": { - "line": 2143, + "line": 2144, "column": 31 }, "end": { - "line": 2143, + "line": 2144, "column": 35 } } }, "property": { "type": "Identifier", - "start": 72868, - "end": 72883, + "start": 72904, + "end": 72919, "loc": { "start": { - "line": 2143, + "line": 2144, "column": 36 }, "end": { - "line": 2143, + "line": 2144, "column": 51 }, "identifierName": "_receivesShadow" @@ -49957,88 +50073,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 72885, - "end": 72976, + "start": 72921, + "end": 73012, "loc": { "start": { - "line": 2143, + "line": 2144, "column": 53 }, "end": { - "line": 2146, + "line": 2147, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 72899, - "end": 72937, + "start": 72935, + "end": 72973, "loc": { "start": { - "line": 2144, + "line": 2145, "column": 12 }, "end": { - "line": 2144, + "line": 2145, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 72899, - "end": 72936, + "start": 72935, + "end": 72972, "loc": { "start": { - "line": 2144, + "line": 2145, "column": 12 }, "end": { - "line": 2144, + "line": 2145, "column": 49 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 72899, - "end": 72919, + "start": 72935, + "end": 72955, "loc": { "start": { - "line": 2144, + "line": 2145, "column": 12 }, "end": { - "line": 2144, + "line": 2145, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 72899, - "end": 72903, + "start": 72935, + "end": 72939, "loc": { "start": { - "line": 2144, + "line": 2145, "column": 12 }, "end": { - "line": 2144, + "line": 2145, "column": 16 } } }, "property": { "type": "Identifier", - "start": 72904, - "end": 72919, + "start": 72940, + "end": 72955, "loc": { "start": { - "line": 2144, + "line": 2145, "column": 17 }, "end": { - "line": 2144, + "line": 2145, "column": 32 }, "identifierName": "_receivesShadow" @@ -50049,15 +50165,15 @@ }, "right": { "type": "Identifier", - "start": 72922, - "end": 72936, + "start": 72958, + "end": 72972, "loc": { "start": { - "line": 2144, + "line": 2145, "column": 35 }, "end": { - "line": 2144, + "line": 2145, "column": 49 }, "identifierName": "receivesShadow" @@ -50068,72 +50184,72 @@ }, { "type": "ExpressionStatement", - "start": 72950, - "end": 72966, + "start": 72986, + "end": 73002, "loc": { "start": { - "line": 2145, + "line": 2146, "column": 12 }, "end": { - "line": 2145, + "line": 2146, "column": 28 } }, "expression": { "type": "CallExpression", - "start": 72950, - "end": 72965, + "start": 72986, + "end": 73001, "loc": { "start": { - "line": 2145, + "line": 2146, "column": 12 }, "end": { - "line": 2145, + "line": 2146, "column": 27 } }, "callee": { "type": "MemberExpression", - "start": 72950, - "end": 72963, + "start": 72986, + "end": 72999, "loc": { "start": { - "line": 2145, + "line": 2146, "column": 12 }, "end": { - "line": 2145, + "line": 2146, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 72950, - "end": 72954, + "start": 72986, + "end": 72990, "loc": { "start": { - "line": 2145, + "line": 2146, "column": 12 }, "end": { - "line": 2145, + "line": 2146, "column": 16 } } }, "property": { "type": "Identifier", - "start": 72955, - "end": 72963, + "start": 72991, + "end": 72999, "loc": { "start": { - "line": 2145, + "line": 2146, "column": 17 }, "end": { - "line": 2145, + "line": 2146, "column": 25 }, "identifierName": "glRedraw" @@ -50158,15 +50274,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", - "start": 72635, - "end": 72737, + "start": 72671, + "end": 72773, "loc": { "start": { - "line": 2136, + "line": 2137, "column": 4 }, "end": { - "line": 2140, + "line": 2141, "column": 7 } } @@ -50176,15 +50292,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * Only works when {@link SAO#enabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 72988, - "end": 73244, + "start": 73024, + "end": 73280, "loc": { "start": { - "line": 2149, + "line": 2150, "column": 4 }, "end": { - "line": 2157, + "line": 2158, "column": 7 } } @@ -50193,15 +50309,15 @@ }, { "type": "ClassMethod", - "start": 73249, - "end": 73306, + "start": 73285, + "end": 73342, "loc": { "start": { - "line": 2158, + "line": 2159, "column": 4 }, "end": { - "line": 2160, + "line": 2161, "column": 5 } }, @@ -50209,15 +50325,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 73253, - "end": 73263, + "start": 73289, + "end": 73299, "loc": { "start": { - "line": 2158, + "line": 2159, "column": 8 }, "end": { - "line": 2158, + "line": 2159, "column": 18 }, "identifierName": "saoEnabled" @@ -50232,73 +50348,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 73266, - "end": 73306, + "start": 73302, + "end": 73342, "loc": { "start": { - "line": 2158, + "line": 2159, "column": 21 }, "end": { - "line": 2160, + "line": 2161, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 73276, - "end": 73300, + "start": 73312, + "end": 73336, "loc": { "start": { - "line": 2159, + "line": 2160, "column": 8 }, "end": { - "line": 2159, + "line": 2160, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 73283, - "end": 73299, + "start": 73319, + "end": 73335, "loc": { "start": { - "line": 2159, + "line": 2160, "column": 15 }, "end": { - "line": 2159, + "line": 2160, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 73283, - "end": 73287, + "start": 73319, + "end": 73323, "loc": { "start": { - "line": 2159, + "line": 2160, "column": 15 }, "end": { - "line": 2159, + "line": 2160, "column": 19 } } }, "property": { "type": "Identifier", - "start": 73288, - "end": 73299, + "start": 73324, + "end": 73335, "loc": { "start": { - "line": 2159, + "line": 2160, "column": 20 }, "end": { - "line": 2159, + "line": 2160, "column": 31 }, "identifierName": "_saoEnabled" @@ -50316,15 +50432,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * Only works when {@link SAO#enabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 72988, - "end": 73244, + "start": 73024, + "end": 73280, "loc": { "start": { - "line": 2149, + "line": 2150, "column": 4 }, "end": { - "line": 2157, + "line": 2158, "column": 7 } } @@ -50334,15 +50450,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if physically-based rendering (PBR) is enabled for this SceneModel.\n *\n * Only works when {@link Scene#pbrEnabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 73312, - "end": 73502, + "start": 73348, + "end": 73538, "loc": { "start": { - "line": 2162, + "line": 2163, "column": 4 }, "end": { - "line": 2168, + "line": 2169, "column": 7 } } @@ -50351,15 +50467,15 @@ }, { "type": "ClassMethod", - "start": 73507, - "end": 73564, + "start": 73543, + "end": 73600, "loc": { "start": { - "line": 2169, + "line": 2170, "column": 4 }, "end": { - "line": 2171, + "line": 2172, "column": 5 } }, @@ -50367,15 +50483,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 73511, - "end": 73521, + "start": 73547, + "end": 73557, "loc": { "start": { - "line": 2169, + "line": 2170, "column": 8 }, "end": { - "line": 2169, + "line": 2170, "column": 18 }, "identifierName": "pbrEnabled" @@ -50390,73 +50506,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 73524, - "end": 73564, + "start": 73560, + "end": 73600, "loc": { "start": { - "line": 2169, + "line": 2170, "column": 21 }, "end": { - "line": 2171, + "line": 2172, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 73534, - "end": 73558, + "start": 73570, + "end": 73594, "loc": { "start": { - "line": 2170, + "line": 2171, "column": 8 }, "end": { - "line": 2170, + "line": 2171, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 73541, - "end": 73557, + "start": 73577, + "end": 73593, "loc": { "start": { - "line": 2170, + "line": 2171, "column": 15 }, "end": { - "line": 2170, + "line": 2171, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 73541, - "end": 73545, + "start": 73577, + "end": 73581, "loc": { "start": { - "line": 2170, + "line": 2171, "column": 15 }, "end": { - "line": 2170, + "line": 2171, "column": 19 } } }, "property": { "type": "Identifier", - "start": 73546, - "end": 73557, + "start": 73582, + "end": 73593, "loc": { "start": { - "line": 2170, + "line": 2171, "column": 20 }, "end": { - "line": 2170, + "line": 2171, "column": 31 }, "identifierName": "_pbrEnabled" @@ -50474,15 +50590,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if physically-based rendering (PBR) is enabled for this SceneModel.\n *\n * Only works when {@link Scene#pbrEnabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 73312, - "end": 73502, + "start": 73348, + "end": 73538, "loc": { "start": { - "line": 2162, + "line": 2163, "column": 4 }, "end": { - "line": 2168, + "line": 2169, "column": 7 } } @@ -50492,15 +50608,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if color textures are enabled for this SceneModel.\n *\n * Only works when {@link Scene#colorTextureEnabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 73570, - "end": 73752, + "start": 73606, + "end": 73788, "loc": { "start": { - "line": 2173, + "line": 2174, "column": 4 }, "end": { - "line": 2179, + "line": 2180, "column": 7 } } @@ -50509,15 +50625,15 @@ }, { "type": "ClassMethod", - "start": 73757, - "end": 73832, + "start": 73793, + "end": 73868, "loc": { "start": { - "line": 2180, + "line": 2181, "column": 4 }, "end": { - "line": 2182, + "line": 2183, "column": 5 } }, @@ -50525,15 +50641,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 73761, - "end": 73780, + "start": 73797, + "end": 73816, "loc": { "start": { - "line": 2180, + "line": 2181, "column": 8 }, "end": { - "line": 2180, + "line": 2181, "column": 27 }, "identifierName": "colorTextureEnabled" @@ -50548,73 +50664,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 73783, - "end": 73832, + "start": 73819, + "end": 73868, "loc": { "start": { - "line": 2180, + "line": 2181, "column": 30 }, "end": { - "line": 2182, + "line": 2183, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 73793, - "end": 73826, + "start": 73829, + "end": 73862, "loc": { "start": { - "line": 2181, + "line": 2182, "column": 8 }, "end": { - "line": 2181, + "line": 2182, "column": 41 } }, "argument": { "type": "MemberExpression", - "start": 73800, - "end": 73825, + "start": 73836, + "end": 73861, "loc": { "start": { - "line": 2181, + "line": 2182, "column": 15 }, "end": { - "line": 2181, + "line": 2182, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 73800, - "end": 73804, + "start": 73836, + "end": 73840, "loc": { "start": { - "line": 2181, + "line": 2182, "column": 15 }, "end": { - "line": 2181, + "line": 2182, "column": 19 } } }, "property": { "type": "Identifier", - "start": 73805, - "end": 73825, + "start": 73841, + "end": 73861, "loc": { "start": { - "line": 2181, + "line": 2182, "column": 20 }, "end": { - "line": 2181, + "line": 2182, "column": 40 }, "identifierName": "_colorTextureEnabled" @@ -50632,15 +50748,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if color textures are enabled for this SceneModel.\n *\n * Only works when {@link Scene#colorTextureEnabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 73570, - "end": 73752, + "start": 73606, + "end": 73788, "loc": { "start": { - "line": 2173, + "line": 2174, "column": 4 }, "end": { - "line": 2179, + "line": 2180, "column": 7 } } @@ -50650,15 +50766,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that SceneModel is implements {@link Drawable}.\n *\n * @type {Boolean}\n ", - "start": 73838, - "end": 73959, + "start": 73874, + "end": 73995, "loc": { "start": { - "line": 2184, + "line": 2185, "column": 4 }, "end": { - "line": 2188, + "line": 2189, "column": 7 } } @@ -50667,15 +50783,15 @@ }, { "type": "ClassMethod", - "start": 73964, - "end": 74009, + "start": 74000, + "end": 74045, "loc": { "start": { - "line": 2189, + "line": 2190, "column": 4 }, "end": { - "line": 2191, + "line": 2192, "column": 5 } }, @@ -50683,15 +50799,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 73968, - "end": 73978, + "start": 74004, + "end": 74014, "loc": { "start": { - "line": 2189, + "line": 2190, "column": 8 }, "end": { - "line": 2189, + "line": 2190, "column": 18 }, "identifierName": "isDrawable" @@ -50706,44 +50822,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 73981, - "end": 74009, + "start": 74017, + "end": 74045, "loc": { "start": { - "line": 2189, + "line": 2190, "column": 21 }, "end": { - "line": 2191, + "line": 2192, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 73991, - "end": 74003, + "start": 74027, + "end": 74039, "loc": { "start": { - "line": 2190, + "line": 2191, "column": 8 }, "end": { - "line": 2190, + "line": 2191, "column": 20 } }, "argument": { "type": "BooleanLiteral", - "start": 73998, - "end": 74002, + "start": 74034, + "end": 74038, "loc": { "start": { - "line": 2190, + "line": 2191, "column": 15 }, "end": { - "line": 2190, + "line": 2191, "column": 19 } }, @@ -50758,15 +50874,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that SceneModel is implements {@link Drawable}.\n *\n * @type {Boolean}\n ", - "start": 73838, - "end": 73959, + "start": 73874, + "end": 73995, "loc": { "start": { - "line": 2184, + "line": 2185, "column": 4 }, "end": { - "line": 2188, + "line": 2189, "column": 7 } } @@ -50776,15 +50892,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 74015, - "end": 74030, + "start": 74051, + "end": 74066, "loc": { "start": { - "line": 2193, + "line": 2194, "column": 4 }, "end": { - "line": 2193, + "line": 2194, "column": 19 } } @@ -50793,15 +50909,15 @@ }, { "type": "ClassMethod", - "start": 74035, - "end": 74085, + "start": 74071, + "end": 74121, "loc": { "start": { - "line": 2194, + "line": 2195, "column": 4 }, "end": { - "line": 2196, + "line": 2197, "column": 5 } }, @@ -50809,15 +50925,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 74039, - "end": 74054, + "start": 74075, + "end": 74090, "loc": { "start": { - "line": 2194, + "line": 2195, "column": 8 }, "end": { - "line": 2194, + "line": 2195, "column": 23 }, "identifierName": "isStateSortable" @@ -50832,44 +50948,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 74057, - "end": 74085, + "start": 74093, + "end": 74121, "loc": { "start": { - "line": 2194, + "line": 2195, "column": 26 }, "end": { - "line": 2196, + "line": 2197, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 74067, - "end": 74079, + "start": 74103, + "end": 74115, "loc": { "start": { - "line": 2195, + "line": 2196, "column": 8 }, "end": { - "line": 2195, + "line": 2196, "column": 20 } }, "argument": { "type": "BooleanLiteral", - "start": 74074, - "end": 74079, + "start": 74110, + "end": 74115, "loc": { "start": { - "line": 2195, + "line": 2196, "column": 15 }, "end": { - "line": 2195, + "line": 2196, "column": 20 } }, @@ -50884,15 +51000,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 74015, - "end": 74030, + "start": 74051, + "end": 74066, "loc": { "start": { - "line": 2193, + "line": 2194, "column": 4 }, "end": { - "line": 2193, + "line": 2194, "column": 19 } } @@ -50902,15 +51018,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of xrayed {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#xrayMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74091, - "end": 74288, + "start": 74127, + "end": 74324, "loc": { "start": { - "line": 2198, + "line": 2199, "column": 4 }, "end": { - "line": 2204, + "line": 2205, "column": 7 } } @@ -50919,15 +51035,15 @@ }, { "type": "ClassMethod", - "start": 74293, - "end": 74359, + "start": 74329, + "end": 74395, "loc": { "start": { - "line": 2205, + "line": 2206, "column": 4 }, "end": { - "line": 2207, + "line": 2208, "column": 5 } }, @@ -50935,15 +51051,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 74297, - "end": 74309, + "start": 74333, + "end": 74345, "loc": { "start": { - "line": 2205, + "line": 2206, "column": 8 }, "end": { - "line": 2205, + "line": 2206, "column": 20 }, "identifierName": "xrayMaterial" @@ -50958,87 +51074,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 74312, - "end": 74359, + "start": 74348, + "end": 74395, "loc": { "start": { - "line": 2205, + "line": 2206, "column": 23 }, "end": { - "line": 2207, + "line": 2208, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 74322, - "end": 74353, + "start": 74358, + "end": 74389, "loc": { "start": { - "line": 2206, + "line": 2207, "column": 8 }, "end": { - "line": 2206, + "line": 2207, "column": 39 } }, "argument": { "type": "MemberExpression", - "start": 74329, - "end": 74352, + "start": 74365, + "end": 74388, "loc": { "start": { - "line": 2206, + "line": 2207, "column": 15 }, "end": { - "line": 2206, + "line": 2207, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 74329, - "end": 74339, + "start": 74365, + "end": 74375, "loc": { "start": { - "line": 2206, + "line": 2207, "column": 15 }, "end": { - "line": 2206, + "line": 2207, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 74329, - "end": 74333, + "start": 74365, + "end": 74369, "loc": { "start": { - "line": 2206, + "line": 2207, "column": 15 }, "end": { - "line": 2206, + "line": 2207, "column": 19 } } }, "property": { "type": "Identifier", - "start": 74334, - "end": 74339, + "start": 74370, + "end": 74375, "loc": { "start": { - "line": 2206, + "line": 2207, "column": 20 }, "end": { - "line": 2206, + "line": 2207, "column": 25 }, "identifierName": "scene" @@ -51049,15 +51165,15 @@ }, "property": { "type": "Identifier", - "start": 74340, - "end": 74352, + "start": 74376, + "end": 74388, "loc": { "start": { - "line": 2206, + "line": 2207, "column": 26 }, "end": { - "line": 2206, + "line": 2207, "column": 38 }, "identifierName": "xrayMaterial" @@ -51075,15 +51191,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of xrayed {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#xrayMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74091, - "end": 74288, + "start": 74127, + "end": 74324, "loc": { "start": { - "line": 2198, + "line": 2199, "column": 4 }, "end": { - "line": 2204, + "line": 2205, "column": 7 } } @@ -51093,15 +51209,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of highlighted {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#highlightMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74365, - "end": 74572, + "start": 74401, + "end": 74608, "loc": { "start": { - "line": 2209, + "line": 2210, "column": 4 }, "end": { - "line": 2215, + "line": 2216, "column": 7 } } @@ -51110,15 +51226,15 @@ }, { "type": "ClassMethod", - "start": 74577, - "end": 74653, + "start": 74613, + "end": 74689, "loc": { "start": { - "line": 2216, + "line": 2217, "column": 4 }, "end": { - "line": 2218, + "line": 2219, "column": 5 } }, @@ -51126,15 +51242,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 74581, - "end": 74598, + "start": 74617, + "end": 74634, "loc": { "start": { - "line": 2216, + "line": 2217, "column": 8 }, "end": { - "line": 2216, + "line": 2217, "column": 25 }, "identifierName": "highlightMaterial" @@ -51149,87 +51265,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 74601, - "end": 74653, + "start": 74637, + "end": 74689, "loc": { "start": { - "line": 2216, + "line": 2217, "column": 28 }, "end": { - "line": 2218, + "line": 2219, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 74611, - "end": 74647, + "start": 74647, + "end": 74683, "loc": { "start": { - "line": 2217, + "line": 2218, "column": 8 }, "end": { - "line": 2217, + "line": 2218, "column": 44 } }, "argument": { "type": "MemberExpression", - "start": 74618, - "end": 74646, + "start": 74654, + "end": 74682, "loc": { "start": { - "line": 2217, + "line": 2218, "column": 15 }, "end": { - "line": 2217, + "line": 2218, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 74618, - "end": 74628, + "start": 74654, + "end": 74664, "loc": { "start": { - "line": 2217, + "line": 2218, "column": 15 }, "end": { - "line": 2217, + "line": 2218, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 74618, - "end": 74622, + "start": 74654, + "end": 74658, "loc": { "start": { - "line": 2217, + "line": 2218, "column": 15 }, "end": { - "line": 2217, + "line": 2218, "column": 19 } } }, "property": { "type": "Identifier", - "start": 74623, - "end": 74628, + "start": 74659, + "end": 74664, "loc": { "start": { - "line": 2217, + "line": 2218, "column": 20 }, "end": { - "line": 2217, + "line": 2218, "column": 25 }, "identifierName": "scene" @@ -51240,15 +51356,15 @@ }, "property": { "type": "Identifier", - "start": 74629, - "end": 74646, + "start": 74665, + "end": 74682, "loc": { "start": { - "line": 2217, + "line": 2218, "column": 26 }, "end": { - "line": 2217, + "line": 2218, "column": 43 }, "identifierName": "highlightMaterial" @@ -51266,15 +51382,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of highlighted {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#highlightMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74365, - "end": 74572, + "start": 74401, + "end": 74608, "loc": { "start": { - "line": 2209, + "line": 2210, "column": 4 }, "end": { - "line": 2215, + "line": 2216, "column": 7 } } @@ -51284,15 +51400,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of selected {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#selectedMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74659, - "end": 74862, + "start": 74695, + "end": 74898, "loc": { "start": { - "line": 2220, + "line": 2221, "column": 4 }, "end": { - "line": 2226, + "line": 2227, "column": 7 } } @@ -51301,15 +51417,15 @@ }, { "type": "ClassMethod", - "start": 74867, - "end": 74941, + "start": 74903, + "end": 74977, "loc": { "start": { - "line": 2227, + "line": 2228, "column": 4 }, "end": { - "line": 2229, + "line": 2230, "column": 5 } }, @@ -51317,15 +51433,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 74871, - "end": 74887, + "start": 74907, + "end": 74923, "loc": { "start": { - "line": 2227, + "line": 2228, "column": 8 }, "end": { - "line": 2227, + "line": 2228, "column": 24 }, "identifierName": "selectedMaterial" @@ -51340,87 +51456,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 74890, - "end": 74941, + "start": 74926, + "end": 74977, "loc": { "start": { - "line": 2227, + "line": 2228, "column": 27 }, "end": { - "line": 2229, + "line": 2230, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 74900, - "end": 74935, + "start": 74936, + "end": 74971, "loc": { "start": { - "line": 2228, + "line": 2229, "column": 8 }, "end": { - "line": 2228, + "line": 2229, "column": 43 } }, "argument": { "type": "MemberExpression", - "start": 74907, - "end": 74934, + "start": 74943, + "end": 74970, "loc": { "start": { - "line": 2228, + "line": 2229, "column": 15 }, "end": { - "line": 2228, + "line": 2229, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 74907, - "end": 74917, + "start": 74943, + "end": 74953, "loc": { "start": { - "line": 2228, + "line": 2229, "column": 15 }, "end": { - "line": 2228, + "line": 2229, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 74907, - "end": 74911, + "start": 74943, + "end": 74947, "loc": { "start": { - "line": 2228, + "line": 2229, "column": 15 }, "end": { - "line": 2228, + "line": 2229, "column": 19 } } }, "property": { "type": "Identifier", - "start": 74912, - "end": 74917, + "start": 74948, + "end": 74953, "loc": { "start": { - "line": 2228, + "line": 2229, "column": 20 }, "end": { - "line": 2228, + "line": 2229, "column": 25 }, "identifierName": "scene" @@ -51431,15 +51547,15 @@ }, "property": { "type": "Identifier", - "start": 74918, - "end": 74934, + "start": 74954, + "end": 74970, "loc": { "start": { - "line": 2228, + "line": 2229, "column": 26 }, "end": { - "line": 2228, + "line": 2229, "column": 42 }, "identifierName": "selectedMaterial" @@ -51457,15 +51573,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of selected {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#selectedMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74659, - "end": 74862, + "start": 74695, + "end": 74898, "loc": { "start": { - "line": 2220, + "line": 2221, "column": 4 }, "end": { - "line": 2226, + "line": 2227, "column": 7 } } @@ -51475,15 +51591,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of edges of {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n ", - "start": 74947, - "end": 75142, + "start": 74983, + "end": 75178, "loc": { "start": { - "line": 2231, + "line": 2232, "column": 4 }, "end": { - "line": 2237, + "line": 2238, "column": 7 } } @@ -51492,15 +51608,15 @@ }, { "type": "ClassMethod", - "start": 75147, - "end": 75213, + "start": 75183, + "end": 75249, "loc": { "start": { - "line": 2238, + "line": 2239, "column": 4 }, "end": { - "line": 2240, + "line": 2241, "column": 5 } }, @@ -51508,15 +51624,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 75151, - "end": 75163, + "start": 75187, + "end": 75199, "loc": { "start": { - "line": 2238, + "line": 2239, "column": 8 }, "end": { - "line": 2238, + "line": 2239, "column": 20 }, "identifierName": "edgeMaterial" @@ -51531,87 +51647,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 75166, - "end": 75213, + "start": 75202, + "end": 75249, "loc": { "start": { - "line": 2238, + "line": 2239, "column": 23 }, "end": { - "line": 2240, + "line": 2241, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 75176, - "end": 75207, + "start": 75212, + "end": 75243, "loc": { "start": { - "line": 2239, + "line": 2240, "column": 8 }, "end": { - "line": 2239, + "line": 2240, "column": 39 } }, "argument": { "type": "MemberExpression", - "start": 75183, - "end": 75206, + "start": 75219, + "end": 75242, "loc": { "start": { - "line": 2239, + "line": 2240, "column": 15 }, "end": { - "line": 2239, + "line": 2240, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 75183, - "end": 75193, + "start": 75219, + "end": 75229, "loc": { "start": { - "line": 2239, + "line": 2240, "column": 15 }, "end": { - "line": 2239, + "line": 2240, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 75183, - "end": 75187, + "start": 75219, + "end": 75223, "loc": { "start": { - "line": 2239, + "line": 2240, "column": 15 }, "end": { - "line": 2239, + "line": 2240, "column": 19 } } }, "property": { "type": "Identifier", - "start": 75188, - "end": 75193, + "start": 75224, + "end": 75229, "loc": { "start": { - "line": 2239, + "line": 2240, "column": 20 }, "end": { - "line": 2239, + "line": 2240, "column": 25 }, "identifierName": "scene" @@ -51622,15 +51738,15 @@ }, "property": { "type": "Identifier", - "start": 75194, - "end": 75206, + "start": 75230, + "end": 75242, "loc": { "start": { - "line": 2239, + "line": 2240, "column": 26 }, "end": { - "line": 2239, + "line": 2240, "column": 38 }, "identifierName": "edgeMaterial" @@ -51648,15 +51764,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of edges of {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n ", - "start": 74947, - "end": 75142, + "start": 74983, + "end": 75178, "loc": { "start": { - "line": 2231, + "line": 2232, "column": 4 }, "end": { - "line": 2237, + "line": 2238, "column": 7 } } @@ -51666,15 +51782,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 75219, - "end": 75335, + "start": 75255, + "end": 75371, "loc": { "start": { - "line": 2242, + "line": 2243, "column": 4 }, "end": { - "line": 2242, + "line": 2243, "column": 120 } } @@ -51682,15 +51798,15 @@ { "type": "CommentLine", "value": " Drawable members", - "start": 75340, - "end": 75359, + "start": 75376, + "end": 75395, "loc": { "start": { - "line": 2243, + "line": 2244, "column": 4 }, "end": { - "line": 2243, + "line": 2244, "column": 23 } } @@ -51698,15 +51814,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 75364, - "end": 75480, + "start": 75400, + "end": 75516, "loc": { "start": { - "line": 2244, + "line": 2245, "column": 4 }, "end": { - "line": 2244, + "line": 2245, "column": 120 } } @@ -51714,15 +51830,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the picking view matrix with which to\n * ray-pick on this SceneModel.\n *\n * @private\n ", - "start": 75486, - "end": 75647, + "start": 75522, + "end": 75683, "loc": { "start": { - "line": 2246, + "line": 2247, "column": 4 }, "end": { - "line": 2251, + "line": 2252, "column": 7 } } @@ -51731,15 +51847,15 @@ }, { "type": "ClassMethod", - "start": 75652, - "end": 75804, + "start": 75688, + "end": 75840, "loc": { "start": { - "line": 2252, + "line": 2253, "column": 4 }, "end": { - "line": 2257, + "line": 2258, "column": 5 } }, @@ -51747,15 +51863,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 75652, - "end": 75669, + "start": 75688, + "end": 75705, "loc": { "start": { - "line": 2252, + "line": 2253, "column": 4 }, "end": { - "line": 2252, + "line": 2253, "column": 21 }, "identifierName": "getPickViewMatrix" @@ -51771,15 +51887,15 @@ "params": [ { "type": "Identifier", - "start": 75670, - "end": 75684, + "start": 75706, + "end": 75720, "loc": { "start": { - "line": 2252, + "line": 2253, "column": 22 }, "end": { - "line": 2252, + "line": 2253, "column": 36 }, "identifierName": "pickViewMatrix" @@ -51789,44 +51905,44 @@ ], "body": { "type": "BlockStatement", - "start": 75686, - "end": 75804, + "start": 75722, + "end": 75840, "loc": { "start": { - "line": 2252, + "line": 2253, "column": 38 }, "end": { - "line": 2257, + "line": 2258, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 75696, - "end": 75765, + "start": 75732, + "end": 75801, "loc": { "start": { - "line": 2253, + "line": 2254, "column": 8 }, "end": { - "line": 2255, + "line": 2256, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 75700, - "end": 75717, + "start": 75736, + "end": 75753, "loc": { "start": { - "line": 2253, + "line": 2254, "column": 12 }, "end": { - "line": 2253, + "line": 2254, "column": 29 } }, @@ -51834,44 +51950,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 75701, - "end": 75717, + "start": 75737, + "end": 75753, "loc": { "start": { - "line": 2253, + "line": 2254, "column": 13 }, "end": { - "line": 2253, + "line": 2254, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 75701, - "end": 75705, + "start": 75737, + "end": 75741, "loc": { "start": { - "line": 2253, + "line": 2254, "column": 13 }, "end": { - "line": 2253, + "line": 2254, "column": 17 } } }, "property": { "type": "Identifier", - "start": 75706, - "end": 75717, + "start": 75742, + "end": 75753, "loc": { "start": { - "line": 2253, + "line": 2254, "column": 18 }, "end": { - "line": 2253, + "line": 2254, "column": 29 }, "identifierName": "_viewMatrix" @@ -51886,44 +52002,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 75719, - "end": 75765, + "start": 75755, + "end": 75801, "loc": { "start": { - "line": 2253, + "line": 2254, "column": 31 }, "end": { - "line": 2255, + "line": 2256, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 75733, - "end": 75755, + "start": 75769, + "end": 75791, "loc": { "start": { - "line": 2254, + "line": 2255, "column": 12 }, "end": { - "line": 2254, + "line": 2255, "column": 34 } }, "argument": { "type": "Identifier", - "start": 75740, - "end": 75754, + "start": 75776, + "end": 75790, "loc": { "start": { - "line": 2254, + "line": 2255, "column": 19 }, "end": { - "line": 2254, + "line": 2255, "column": 33 }, "identifierName": "pickViewMatrix" @@ -51938,58 +52054,58 @@ }, { "type": "ReturnStatement", - "start": 75774, - "end": 75798, + "start": 75810, + "end": 75834, "loc": { "start": { - "line": 2256, + "line": 2257, "column": 8 }, "end": { - "line": 2256, + "line": 2257, "column": 32 } }, "argument": { "type": "MemberExpression", - "start": 75781, - "end": 75797, + "start": 75817, + "end": 75833, "loc": { "start": { - "line": 2256, + "line": 2257, "column": 15 }, "end": { - "line": 2256, + "line": 2257, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 75781, - "end": 75785, + "start": 75817, + "end": 75821, "loc": { "start": { - "line": 2256, + "line": 2257, "column": 15 }, "end": { - "line": 2256, + "line": 2257, "column": 19 } } }, "property": { "type": "Identifier", - "start": 75786, - "end": 75797, + "start": 75822, + "end": 75833, "loc": { "start": { - "line": 2256, + "line": 2257, "column": 20 }, "end": { - "line": 2256, + "line": 2257, "column": 31 }, "identifierName": "_viewMatrix" @@ -52007,15 +52123,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 75219, - "end": 75335, + "start": 75255, + "end": 75371, "loc": { "start": { - "line": 2242, + "line": 2243, "column": 4 }, "end": { - "line": 2242, + "line": 2243, "column": 120 } } @@ -52023,15 +52139,15 @@ { "type": "CommentLine", "value": " Drawable members", - "start": 75340, - "end": 75359, + "start": 75376, + "end": 75395, "loc": { "start": { - "line": 2243, + "line": 2244, "column": 4 }, "end": { - "line": 2243, + "line": 2244, "column": 23 } } @@ -52039,15 +52155,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 75364, - "end": 75480, + "start": 75400, + "end": 75516, "loc": { "start": { - "line": 2244, + "line": 2245, "column": 4 }, "end": { - "line": 2244, + "line": 2245, "column": 120 } } @@ -52055,15 +52171,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the picking view matrix with which to\n * ray-pick on this SceneModel.\n *\n * @private\n ", - "start": 75486, - "end": 75647, + "start": 75522, + "end": 75683, "loc": { "start": { - "line": 2246, + "line": 2247, "column": 4 }, "end": { - "line": 2251, + "line": 2252, "column": 7 } } @@ -52073,15 +52189,15 @@ { "type": "CommentBlock", "value": "*\n *\n * @param cfg\n ", - "start": 75810, - "end": 75846, + "start": 75846, + "end": 75882, "loc": { "start": { - "line": 2259, + "line": 2260, "column": 4 }, "end": { - "line": 2262, + "line": 2263, "column": 7 } } @@ -52090,15 +52206,15 @@ }, { "type": "ClassMethod", - "start": 75851, - "end": 76526, + "start": 75887, + "end": 76562, "loc": { "start": { - "line": 2263, + "line": 2264, "column": 4 }, "end": { - "line": 2281, + "line": 2282, "column": 5 } }, @@ -52106,15 +52222,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 75851, - "end": 75874, + "start": 75887, + "end": 75910, "loc": { "start": { - "line": 2263, + "line": 2264, "column": 4 }, "end": { - "line": 2263, + "line": 2264, "column": 27 }, "identifierName": "createQuantizationRange" @@ -52130,15 +52246,15 @@ "params": [ { "type": "Identifier", - "start": 75875, - "end": 75878, + "start": 75911, + "end": 75914, "loc": { "start": { - "line": 2263, + "line": 2264, "column": 28 }, "end": { - "line": 2263, + "line": 2264, "column": 31 }, "identifierName": "cfg" @@ -52148,86 +52264,86 @@ ], "body": { "type": "BlockStatement", - "start": 75880, - "end": 76526, + "start": 75916, + "end": 76562, "loc": { "start": { - "line": 2263, + "line": 2264, "column": 33 }, "end": { - "line": 2281, + "line": 2282, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 75890, - "end": 76038, + "start": 75926, + "end": 76074, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 8 }, "end": { - "line": 2267, + "line": 2268, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 75894, - "end": 75933, + "start": 75930, + "end": 75969, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 12 }, "end": { - "line": 2264, + "line": 2265, "column": 51 } }, "left": { "type": "BinaryExpression", - "start": 75894, - "end": 75914, + "start": 75930, + "end": 75950, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 12 }, "end": { - "line": 2264, + "line": 2265, "column": 32 } }, "left": { "type": "MemberExpression", - "start": 75894, - "end": 75900, + "start": 75930, + "end": 75936, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 12 }, "end": { - "line": 2264, + "line": 2265, "column": 18 } }, "object": { "type": "Identifier", - "start": 75894, - "end": 75897, + "start": 75930, + "end": 75933, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 12 }, "end": { - "line": 2264, + "line": 2265, "column": 15 }, "identifierName": "cfg" @@ -52236,15 +52352,15 @@ }, "property": { "type": "Identifier", - "start": 75898, - "end": 75900, + "start": 75934, + "end": 75936, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 16 }, "end": { - "line": 2264, + "line": 2265, "column": 18 }, "identifierName": "id" @@ -52256,15 +52372,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 75905, - "end": 75914, + "start": 75941, + "end": 75950, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 23 }, "end": { - "line": 2264, + "line": 2265, "column": 32 }, "identifierName": "undefined" @@ -52275,43 +52391,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 75918, - "end": 75933, + "start": 75954, + "end": 75969, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 36 }, "end": { - "line": 2264, + "line": 2265, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 75918, - "end": 75924, + "start": 75954, + "end": 75960, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 36 }, "end": { - "line": 2264, + "line": 2265, "column": 42 } }, "object": { "type": "Identifier", - "start": 75918, - "end": 75921, + "start": 75954, + "end": 75957, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 36 }, "end": { - "line": 2264, + "line": 2265, "column": 39 }, "identifierName": "cfg" @@ -52320,15 +52436,15 @@ }, "property": { "type": "Identifier", - "start": 75922, - "end": 75924, + "start": 75958, + "end": 75960, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 40 }, "end": { - "line": 2264, + "line": 2265, "column": 42 }, "identifierName": "id" @@ -52340,15 +52456,15 @@ "operator": "===", "right": { "type": "NullLiteral", - "start": 75929, - "end": 75933, + "start": 75965, + "end": 75969, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 47 }, "end": { - "line": 2264, + "line": 2265, "column": 51 } } @@ -52357,87 +52473,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 75935, - "end": 76038, + "start": 75971, + "end": 76074, "loc": { "start": { - "line": 2264, + "line": 2265, "column": 53 }, "end": { - "line": 2267, + "line": 2268, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 75949, - "end": 76008, + "start": 75985, + "end": 76044, "loc": { "start": { - "line": 2265, + "line": 2266, "column": 12 }, "end": { - "line": 2265, + "line": 2266, "column": 71 } }, "expression": { "type": "CallExpression", - "start": 75949, - "end": 76007, + "start": 75985, + "end": 76043, "loc": { "start": { - "line": 2265, + "line": 2266, "column": 12 }, "end": { - "line": 2265, + "line": 2266, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 75949, - "end": 75959, + "start": 75985, + "end": 75995, "loc": { "start": { - "line": 2265, + "line": 2266, "column": 12 }, "end": { - "line": 2265, + "line": 2266, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 75949, - "end": 75953, + "start": 75985, + "end": 75989, "loc": { "start": { - "line": 2265, + "line": 2266, "column": 12 }, "end": { - "line": 2265, + "line": 2266, "column": 16 } } }, "property": { "type": "Identifier", - "start": 75954, - "end": 75959, + "start": 75990, + "end": 75995, "loc": { "start": { - "line": 2265, + "line": 2266, "column": 17 }, "end": { - "line": 2265, + "line": 2266, "column": 22 }, "identifierName": "error" @@ -52449,15 +52565,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 75960, - "end": 76006, + "start": 75996, + "end": 76042, "loc": { "start": { - "line": 2265, + "line": 2266, "column": 23 }, "end": { - "line": 2265, + "line": 2266, "column": 69 } }, @@ -52472,15 +52588,15 @@ }, { "type": "ReturnStatement", - "start": 76021, - "end": 76028, + "start": 76057, + "end": 76064, "loc": { "start": { - "line": 2266, + "line": 2267, "column": 12 }, "end": { - "line": 2266, + "line": 2267, "column": 19 } }, @@ -52493,43 +52609,43 @@ }, { "type": "IfStatement", - "start": 76047, - "end": 76166, + "start": 76083, + "end": 76202, "loc": { "start": { - "line": 2268, + "line": 2269, "column": 8 }, "end": { - "line": 2271, + "line": 2272, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 76051, - "end": 76059, + "start": 76087, + "end": 76095, "loc": { "start": { - "line": 2268, + "line": 2269, "column": 12 }, "end": { - "line": 2268, + "line": 2269, "column": 20 } }, "object": { "type": "Identifier", - "start": 76051, - "end": 76054, + "start": 76087, + "end": 76090, "loc": { "start": { - "line": 2268, + "line": 2269, "column": 12 }, "end": { - "line": 2268, + "line": 2269, "column": 15 }, "identifierName": "cfg" @@ -52538,15 +52654,15 @@ }, "property": { "type": "Identifier", - "start": 76055, - "end": 76059, + "start": 76091, + "end": 76095, "loc": { "start": { - "line": 2268, + "line": 2269, "column": 16 }, "end": { - "line": 2268, + "line": 2269, "column": 20 }, "identifierName": "aabb" @@ -52557,87 +52673,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 76061, - "end": 76166, + "start": 76097, + "end": 76202, "loc": { "start": { - "line": 2268, + "line": 2269, "column": 22 }, "end": { - "line": 2271, + "line": 2272, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 76075, - "end": 76136, + "start": 76111, + "end": 76172, "loc": { "start": { - "line": 2269, + "line": 2270, "column": 12 }, "end": { - "line": 2269, + "line": 2270, "column": 73 } }, "expression": { "type": "CallExpression", - "start": 76075, - "end": 76135, + "start": 76111, + "end": 76171, "loc": { "start": { - "line": 2269, + "line": 2270, "column": 12 }, "end": { - "line": 2269, + "line": 2270, "column": 72 } }, "callee": { "type": "MemberExpression", - "start": 76075, - "end": 76085, + "start": 76111, + "end": 76121, "loc": { "start": { - "line": 2269, + "line": 2270, "column": 12 }, "end": { - "line": 2269, + "line": 2270, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 76075, - "end": 76079, + "start": 76111, + "end": 76115, "loc": { "start": { - "line": 2269, + "line": 2270, "column": 12 }, "end": { - "line": 2269, + "line": 2270, "column": 16 } } }, "property": { "type": "Identifier", - "start": 76080, - "end": 76085, + "start": 76116, + "end": 76121, "loc": { "start": { - "line": 2269, + "line": 2270, "column": 17 }, "end": { - "line": 2269, + "line": 2270, "column": 22 }, "identifierName": "error" @@ -52649,15 +52765,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 76086, - "end": 76134, + "start": 76122, + "end": 76170, "loc": { "start": { - "line": 2269, + "line": 2270, "column": 23 }, "end": { - "line": 2269, + "line": 2270, "column": 71 } }, @@ -52672,15 +52788,15 @@ }, { "type": "ReturnStatement", - "start": 76149, - "end": 76156, + "start": 76185, + "end": 76192, "loc": { "start": { - "line": 2270, + "line": 2271, "column": 12 }, "end": { - "line": 2270, + "line": 2271, "column": 19 } }, @@ -52693,72 +52809,72 @@ }, { "type": "IfStatement", - "start": 76175, - "end": 76342, + "start": 76211, + "end": 76378, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 8 }, "end": { - "line": 2275, + "line": 2276, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 76179, - "end": 76211, + "start": 76215, + "end": 76247, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 12 }, "end": { - "line": 2272, + "line": 2273, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 76179, - "end": 76203, + "start": 76215, + "end": 76239, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 12 }, "end": { - "line": 2272, + "line": 2273, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 76179, - "end": 76183, + "start": 76215, + "end": 76219, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 12 }, "end": { - "line": 2272, + "line": 2273, "column": 16 } } }, "property": { "type": "Identifier", - "start": 76184, - "end": 76203, + "start": 76220, + "end": 76239, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 17 }, "end": { - "line": 2272, + "line": 2273, "column": 36 }, "identifierName": "_quantizationRanges" @@ -52769,29 +52885,29 @@ }, "property": { "type": "MemberExpression", - "start": 76204, - "end": 76210, + "start": 76240, + "end": 76246, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 37 }, "end": { - "line": 2272, + "line": 2273, "column": 43 } }, "object": { "type": "Identifier", - "start": 76204, - "end": 76207, + "start": 76240, + "end": 76243, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 37 }, "end": { - "line": 2272, + "line": 2273, "column": 40 }, "identifierName": "cfg" @@ -52800,15 +52916,15 @@ }, "property": { "type": "Identifier", - "start": 76208, - "end": 76210, + "start": 76244, + "end": 76246, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 41 }, "end": { - "line": 2272, + "line": 2273, "column": 43 }, "identifierName": "id" @@ -52821,87 +52937,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 76213, - "end": 76342, + "start": 76249, + "end": 76378, "loc": { "start": { - "line": 2272, + "line": 2273, "column": 46 }, "end": { - "line": 2275, + "line": 2276, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 76227, - "end": 76312, + "start": 76263, + "end": 76348, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 12 }, "end": { - "line": 2273, + "line": 2274, "column": 97 } }, "expression": { "type": "CallExpression", - "start": 76227, - "end": 76311, + "start": 76263, + "end": 76347, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 12 }, "end": { - "line": 2273, + "line": 2274, "column": 96 } }, "callee": { "type": "MemberExpression", - "start": 76227, - "end": 76237, + "start": 76263, + "end": 76273, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 12 }, "end": { - "line": 2273, + "line": 2274, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 76227, - "end": 76231, + "start": 76263, + "end": 76267, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 12 }, "end": { - "line": 2273, + "line": 2274, "column": 16 } } }, "property": { "type": "Identifier", - "start": 76232, - "end": 76237, + "start": 76268, + "end": 76273, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 17 }, "end": { - "line": 2273, + "line": 2274, "column": 22 }, "identifierName": "error" @@ -52913,29 +53029,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 76238, - "end": 76310, + "start": 76274, + "end": 76346, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 23 }, "end": { - "line": 2273, + "line": 2274, "column": 95 } }, "left": { "type": "StringLiteral", - "start": 76238, - "end": 76301, + "start": 76274, + "end": 76337, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 23 }, "end": { - "line": 2273, + "line": 2274, "column": 86 } }, @@ -52948,29 +53064,29 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 76304, - "end": 76310, + "start": 76340, + "end": 76346, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 89 }, "end": { - "line": 2273, + "line": 2274, "column": 95 } }, "object": { "type": "Identifier", - "start": 76304, - "end": 76307, + "start": 76340, + "end": 76343, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 89 }, "end": { - "line": 2273, + "line": 2274, "column": 92 }, "identifierName": "cfg" @@ -52979,15 +53095,15 @@ }, "property": { "type": "Identifier", - "start": 76308, - "end": 76310, + "start": 76344, + "end": 76346, "loc": { "start": { - "line": 2273, + "line": 2274, "column": 93 }, "end": { - "line": 2273, + "line": 2274, "column": 95 }, "identifierName": "id" @@ -53002,15 +53118,15 @@ }, { "type": "ReturnStatement", - "start": 76325, - "end": 76332, + "start": 76361, + "end": 76368, "loc": { "start": { - "line": 2274, + "line": 2275, "column": 12 }, "end": { - "line": 2274, + "line": 2275, "column": 19 } }, @@ -53023,87 +53139,87 @@ }, { "type": "ExpressionStatement", - "start": 76351, - "end": 76520, + "start": 76387, + "end": 76556, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 8 }, "end": { - "line": 2280, + "line": 2281, "column": 9 } }, "expression": { "type": "AssignmentExpression", - "start": 76351, - "end": 76520, + "start": 76387, + "end": 76556, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 8 }, "end": { - "line": 2280, + "line": 2281, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 76351, - "end": 76383, + "start": 76387, + "end": 76419, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 8 }, "end": { - "line": 2276, + "line": 2277, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 76351, - "end": 76375, + "start": 76387, + "end": 76411, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 8 }, "end": { - "line": 2276, + "line": 2277, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 76351, - "end": 76355, + "start": 76387, + "end": 76391, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 8 }, "end": { - "line": 2276, + "line": 2277, "column": 12 } } }, "property": { "type": "Identifier", - "start": 76356, - "end": 76375, + "start": 76392, + "end": 76411, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 13 }, "end": { - "line": 2276, + "line": 2277, "column": 32 }, "identifierName": "_quantizationRanges" @@ -53114,29 +53230,29 @@ }, "property": { "type": "MemberExpression", - "start": 76376, - "end": 76382, + "start": 76412, + "end": 76418, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 33 }, "end": { - "line": 2276, + "line": 2277, "column": 39 } }, "object": { "type": "Identifier", - "start": 76376, - "end": 76379, + "start": 76412, + "end": 76415, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 33 }, "end": { - "line": 2276, + "line": 2277, "column": 36 }, "identifierName": "cfg" @@ -53145,15 +53261,15 @@ }, "property": { "type": "Identifier", - "start": 76380, - "end": 76382, + "start": 76416, + "end": 76418, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 37 }, "end": { - "line": 2276, + "line": 2277, "column": 39 }, "identifierName": "id" @@ -53166,30 +53282,30 @@ }, "right": { "type": "ObjectExpression", - "start": 76386, - "end": 76520, + "start": 76422, + "end": 76556, "loc": { "start": { - "line": 2276, + "line": 2277, "column": 43 }, "end": { - "line": 2280, + "line": 2281, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 76400, - "end": 76410, + "start": 76436, + "end": 76446, "loc": { "start": { - "line": 2277, + "line": 2278, "column": 12 }, "end": { - "line": 2277, + "line": 2278, "column": 22 } }, @@ -53198,15 +53314,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 76400, - "end": 76402, + "start": 76436, + "end": 76438, "loc": { "start": { - "line": 2277, + "line": 2278, "column": 12 }, "end": { - "line": 2277, + "line": 2278, "column": 14 }, "identifierName": "id" @@ -53215,29 +53331,29 @@ }, "value": { "type": "MemberExpression", - "start": 76404, - "end": 76410, + "start": 76440, + "end": 76446, "loc": { "start": { - "line": 2277, + "line": 2278, "column": 16 }, "end": { - "line": 2277, + "line": 2278, "column": 22 } }, "object": { "type": "Identifier", - "start": 76404, - "end": 76407, + "start": 76440, + "end": 76443, "loc": { "start": { - "line": 2277, + "line": 2278, "column": 16 }, "end": { - "line": 2277, + "line": 2278, "column": 19 }, "identifierName": "cfg" @@ -53246,15 +53362,15 @@ }, "property": { "type": "Identifier", - "start": 76408, - "end": 76410, + "start": 76444, + "end": 76446, "loc": { "start": { - "line": 2277, + "line": 2278, "column": 20 }, "end": { - "line": 2277, + "line": 2278, "column": 22 }, "identifierName": "id" @@ -53266,15 +53382,15 @@ }, { "type": "ObjectProperty", - "start": 76424, - "end": 76438, + "start": 76460, + "end": 76474, "loc": { "start": { - "line": 2278, + "line": 2279, "column": 12 }, "end": { - "line": 2278, + "line": 2279, "column": 26 } }, @@ -53283,15 +53399,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 76424, - "end": 76428, + "start": 76460, + "end": 76464, "loc": { "start": { - "line": 2278, + "line": 2279, "column": 12 }, "end": { - "line": 2278, + "line": 2279, "column": 16 }, "identifierName": "aabb" @@ -53300,29 +53416,29 @@ }, "value": { "type": "MemberExpression", - "start": 76430, - "end": 76438, + "start": 76466, + "end": 76474, "loc": { "start": { - "line": 2278, + "line": 2279, "column": 18 }, "end": { - "line": 2278, + "line": 2279, "column": 26 } }, "object": { "type": "Identifier", - "start": 76430, - "end": 76433, + "start": 76466, + "end": 76469, "loc": { "start": { - "line": 2278, + "line": 2279, "column": 18 }, "end": { - "line": 2278, + "line": 2279, "column": 21 }, "identifierName": "cfg" @@ -53331,15 +53447,15 @@ }, "property": { "type": "Identifier", - "start": 76434, - "end": 76438, + "start": 76470, + "end": 76474, "loc": { "start": { - "line": 2278, + "line": 2279, "column": 22 }, "end": { - "line": 2278, + "line": 2279, "column": 26 }, "identifierName": "aabb" @@ -53351,15 +53467,15 @@ }, { "type": "ObjectProperty", - "start": 76452, - "end": 76510, + "start": 76488, + "end": 76546, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 12 }, "end": { - "line": 2279, + "line": 2280, "column": 70 } }, @@ -53368,15 +53484,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 76452, - "end": 76458, + "start": 76488, + "end": 76494, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 12 }, "end": { - "line": 2279, + "line": 2280, "column": 18 }, "identifierName": "matrix" @@ -53385,29 +53501,29 @@ }, "value": { "type": "CallExpression", - "start": 76460, - "end": 76510, + "start": 76496, + "end": 76546, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 20 }, "end": { - "line": 2279, + "line": 2280, "column": 70 } }, "callee": { "type": "Identifier", - "start": 76460, - "end": 76487, + "start": 76496, + "end": 76523, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 20 }, "end": { - "line": 2279, + "line": 2280, "column": 47 }, "identifierName": "createPositionsDecodeMatrix" @@ -53417,29 +53533,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 76488, - "end": 76496, + "start": 76524, + "end": 76532, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 48 }, "end": { - "line": 2279, + "line": 2280, "column": 56 } }, "object": { "type": "Identifier", - "start": 76488, - "end": 76491, + "start": 76524, + "end": 76527, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 48 }, "end": { - "line": 2279, + "line": 2280, "column": 51 }, "identifierName": "cfg" @@ -53448,15 +53564,15 @@ }, "property": { "type": "Identifier", - "start": 76492, - "end": 76496, + "start": 76528, + "end": 76532, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 52 }, "end": { - "line": 2279, + "line": 2280, "column": 56 }, "identifierName": "aabb" @@ -53467,43 +53583,43 @@ }, { "type": "CallExpression", - "start": 76498, - "end": 76509, + "start": 76534, + "end": 76545, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 58 }, "end": { - "line": 2279, + "line": 2280, "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 76498, - "end": 76507, + "start": 76534, + "end": 76543, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 58 }, "end": { - "line": 2279, + "line": 2280, "column": 67 } }, "object": { "type": "Identifier", - "start": 76498, - "end": 76502, + "start": 76534, + "end": 76538, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 58 }, "end": { - "line": 2279, + "line": 2280, "column": 62 }, "identifierName": "math" @@ -53512,15 +53628,15 @@ }, "property": { "type": "Identifier", - "start": 76503, - "end": 76507, + "start": 76539, + "end": 76543, "loc": { "start": { - "line": 2279, + "line": 2280, "column": 63 }, "end": { - "line": 2279, + "line": 2280, "column": 67 }, "identifierName": "mat4" @@ -53546,15 +53662,15 @@ { "type": "CommentBlock", "value": "*\n *\n * @param cfg\n ", - "start": 75810, - "end": 75846, + "start": 75846, + "end": 75882, "loc": { "start": { - "line": 2259, + "line": 2260, "column": 4 }, "end": { - "line": 2262, + "line": 2263, "column": 7 } } @@ -53564,15 +53680,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a reusable geometry within this SceneModel.\n *\n * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that\n * instance the geometry.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n ", - "start": 76532, - "end": 79549, + "start": 76568, + "end": 79585, "loc": { "start": { - "line": 2283, + "line": 2284, "column": 4 }, "end": { - "line": 2304, + "line": 2305, "column": 7 } } @@ -53581,15 +53697,15 @@ }, { "type": "ClassMethod", - "start": 79554, - "end": 85199, + "start": 79590, + "end": 85235, "loc": { "start": { - "line": 2305, + "line": 2306, "column": 4 }, "end": { - "line": 2409, + "line": 2410, "column": 5 } }, @@ -53597,15 +53713,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 79554, - "end": 79568, + "start": 79590, + "end": 79604, "loc": { "start": { - "line": 2305, + "line": 2306, "column": 4 }, "end": { - "line": 2305, + "line": 2306, "column": 18 }, "identifierName": "createGeometry" @@ -53621,15 +53737,15 @@ "params": [ { "type": "Identifier", - "start": 79569, - "end": 79572, + "start": 79605, + "end": 79608, "loc": { "start": { - "line": 2305, + "line": 2306, "column": 19 }, "end": { - "line": 2305, + "line": 2306, "column": 22 }, "identifierName": "cfg" @@ -53639,86 +53755,86 @@ ], "body": { "type": "BlockStatement", - "start": 79574, - "end": 85199, + "start": 79610, + "end": 85235, "loc": { "start": { - "line": 2305, + "line": 2306, "column": 24 }, "end": { - "line": 2409, + "line": 2410, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 79584, - "end": 79723, + "start": 79620, + "end": 79759, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 8 }, "end": { - "line": 2309, + "line": 2310, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 79588, - "end": 79627, + "start": 79624, + "end": 79663, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 12 }, "end": { - "line": 2306, + "line": 2307, "column": 51 } }, "left": { "type": "BinaryExpression", - "start": 79588, - "end": 79608, + "start": 79624, + "end": 79644, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 12 }, "end": { - "line": 2306, + "line": 2307, "column": 32 } }, "left": { "type": "MemberExpression", - "start": 79588, - "end": 79594, + "start": 79624, + "end": 79630, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 12 }, "end": { - "line": 2306, + "line": 2307, "column": 18 } }, "object": { "type": "Identifier", - "start": 79588, - "end": 79591, + "start": 79624, + "end": 79627, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 12 }, "end": { - "line": 2306, + "line": 2307, "column": 15 }, "identifierName": "cfg" @@ -53727,15 +53843,15 @@ }, "property": { "type": "Identifier", - "start": 79592, - "end": 79594, + "start": 79628, + "end": 79630, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 16 }, "end": { - "line": 2306, + "line": 2307, "column": 18 }, "identifierName": "id" @@ -53747,15 +53863,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 79599, - "end": 79608, + "start": 79635, + "end": 79644, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 23 }, "end": { - "line": 2306, + "line": 2307, "column": 32 }, "identifierName": "undefined" @@ -53766,43 +53882,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 79612, - "end": 79627, + "start": 79648, + "end": 79663, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 36 }, "end": { - "line": 2306, + "line": 2307, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 79612, - "end": 79618, + "start": 79648, + "end": 79654, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 36 }, "end": { - "line": 2306, + "line": 2307, "column": 42 } }, "object": { "type": "Identifier", - "start": 79612, - "end": 79615, + "start": 79648, + "end": 79651, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 36 }, "end": { - "line": 2306, + "line": 2307, "column": 39 }, "identifierName": "cfg" @@ -53811,15 +53927,15 @@ }, "property": { "type": "Identifier", - "start": 79616, - "end": 79618, + "start": 79652, + "end": 79654, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 40 }, "end": { - "line": 2306, + "line": 2307, "column": 42 }, "identifierName": "id" @@ -53831,15 +53947,15 @@ "operator": "===", "right": { "type": "NullLiteral", - "start": 79623, - "end": 79627, + "start": 79659, + "end": 79663, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 47 }, "end": { - "line": 2306, + "line": 2307, "column": 51 } } @@ -53848,87 +53964,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 79629, - "end": 79723, + "start": 79665, + "end": 79759, "loc": { "start": { - "line": 2306, + "line": 2307, "column": 53 }, "end": { - "line": 2309, + "line": 2310, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 79643, - "end": 79693, + "start": 79679, + "end": 79729, "loc": { "start": { - "line": 2307, + "line": 2308, "column": 12 }, "end": { - "line": 2307, + "line": 2308, "column": 62 } }, "expression": { "type": "CallExpression", - "start": 79643, - "end": 79692, + "start": 79679, + "end": 79728, "loc": { "start": { - "line": 2307, + "line": 2308, "column": 12 }, "end": { - "line": 2307, + "line": 2308, "column": 61 } }, "callee": { "type": "MemberExpression", - "start": 79643, - "end": 79653, + "start": 79679, + "end": 79689, "loc": { "start": { - "line": 2307, + "line": 2308, "column": 12 }, "end": { - "line": 2307, + "line": 2308, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 79643, - "end": 79647, + "start": 79679, + "end": 79683, "loc": { "start": { - "line": 2307, + "line": 2308, "column": 12 }, "end": { - "line": 2307, + "line": 2308, "column": 16 } } }, "property": { "type": "Identifier", - "start": 79648, - "end": 79653, + "start": 79684, + "end": 79689, "loc": { "start": { - "line": 2307, + "line": 2308, "column": 17 }, "end": { - "line": 2307, + "line": 2308, "column": 22 }, "identifierName": "error" @@ -53940,15 +54056,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 79654, - "end": 79691, + "start": 79690, + "end": 79727, "loc": { "start": { - "line": 2307, + "line": 2308, "column": 23 }, "end": { - "line": 2307, + "line": 2308, "column": 60 } }, @@ -53963,15 +54079,15 @@ }, { "type": "ReturnStatement", - "start": 79706, - "end": 79713, + "start": 79742, + "end": 79749, "loc": { "start": { - "line": 2308, + "line": 2309, "column": 12 }, "end": { - "line": 2308, + "line": 2309, "column": 19 } }, @@ -53984,72 +54100,72 @@ }, { "type": "IfStatement", - "start": 79732, - "end": 79873, + "start": 79768, + "end": 79909, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 8 }, "end": { - "line": 2313, + "line": 2314, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 79736, - "end": 79760, + "start": 79772, + "end": 79796, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 12 }, "end": { - "line": 2310, + "line": 2311, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 79736, - "end": 79752, + "start": 79772, + "end": 79788, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 12 }, "end": { - "line": 2310, + "line": 2311, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 79736, - "end": 79740, + "start": 79772, + "end": 79776, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 12 }, "end": { - "line": 2310, + "line": 2311, "column": 16 } } }, "property": { "type": "Identifier", - "start": 79741, - "end": 79752, + "start": 79777, + "end": 79788, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 17 }, "end": { - "line": 2310, + "line": 2311, "column": 28 }, "identifierName": "_geometries" @@ -54060,29 +54176,29 @@ }, "property": { "type": "MemberExpression", - "start": 79753, - "end": 79759, + "start": 79789, + "end": 79795, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 29 }, "end": { - "line": 2310, + "line": 2311, "column": 35 } }, "object": { "type": "Identifier", - "start": 79753, - "end": 79756, + "start": 79789, + "end": 79792, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 29 }, "end": { - "line": 2310, + "line": 2311, "column": 32 }, "identifierName": "cfg" @@ -54091,15 +54207,15 @@ }, "property": { "type": "Identifier", - "start": 79757, - "end": 79759, + "start": 79793, + "end": 79795, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 33 }, "end": { - "line": 2310, + "line": 2311, "column": 35 }, "identifierName": "id" @@ -54112,87 +54228,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 79762, - "end": 79873, + "start": 79798, + "end": 79909, "loc": { "start": { - "line": 2310, + "line": 2311, "column": 38 }, "end": { - "line": 2313, + "line": 2314, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 79776, - "end": 79843, + "start": 79812, + "end": 79879, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 12 }, "end": { - "line": 2311, + "line": 2312, "column": 79 } }, "expression": { "type": "CallExpression", - "start": 79776, - "end": 79842, + "start": 79812, + "end": 79878, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 12 }, "end": { - "line": 2311, + "line": 2312, "column": 78 } }, "callee": { "type": "MemberExpression", - "start": 79776, - "end": 79786, + "start": 79812, + "end": 79822, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 12 }, "end": { - "line": 2311, + "line": 2312, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 79776, - "end": 79780, + "start": 79812, + "end": 79816, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 12 }, "end": { - "line": 2311, + "line": 2312, "column": 16 } } }, "property": { "type": "Identifier", - "start": 79781, - "end": 79786, + "start": 79817, + "end": 79822, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 17 }, "end": { - "line": 2311, + "line": 2312, "column": 22 }, "identifierName": "error" @@ -54204,29 +54320,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 79787, - "end": 79841, + "start": 79823, + "end": 79877, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 23 }, "end": { - "line": 2311, + "line": 2312, "column": 77 } }, "left": { "type": "StringLiteral", - "start": 79787, - "end": 79832, + "start": 79823, + "end": 79868, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 23 }, "end": { - "line": 2311, + "line": 2312, "column": 68 } }, @@ -54239,29 +54355,29 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 79835, - "end": 79841, + "start": 79871, + "end": 79877, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 71 }, "end": { - "line": 2311, + "line": 2312, "column": 77 } }, "object": { "type": "Identifier", - "start": 79835, - "end": 79838, + "start": 79871, + "end": 79874, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 71 }, "end": { - "line": 2311, + "line": 2312, "column": 74 }, "identifierName": "cfg" @@ -54270,15 +54386,15 @@ }, "property": { "type": "Identifier", - "start": 79839, - "end": 79841, + "start": 79875, + "end": 79877, "loc": { "start": { - "line": 2311, + "line": 2312, "column": 75 }, "end": { - "line": 2311, + "line": 2312, "column": 77 }, "identifierName": "id" @@ -54293,15 +54409,15 @@ }, { "type": "ReturnStatement", - "start": 79856, - "end": 79863, + "start": 79892, + "end": 79899, "loc": { "start": { - "line": 2312, + "line": 2313, "column": 12 }, "end": { - "line": 2312, + "line": 2313, "column": 19 } }, @@ -54314,71 +54430,71 @@ }, { "type": "IfStatement", - "start": 79882, - "end": 79993, + "start": 79918, + "end": 80029, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 8 }, "end": { - "line": 2316, + "line": 2317, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 79886, - "end": 79939, + "start": 79922, + "end": 79975, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 12 }, "end": { - "line": 2314, + "line": 2315, "column": 65 } }, "left": { "type": "BinaryExpression", - "start": 79886, - "end": 79913, + "start": 79922, + "end": 79949, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 12 }, "end": { - "line": 2314, + "line": 2315, "column": 39 } }, "left": { "type": "MemberExpression", - "start": 79886, - "end": 79899, + "start": 79922, + "end": 79935, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 12 }, "end": { - "line": 2314, + "line": 2315, "column": 25 } }, "object": { "type": "Identifier", - "start": 79886, - "end": 79889, + "start": 79922, + "end": 79925, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 12 }, "end": { - "line": 2314, + "line": 2315, "column": 15 }, "identifierName": "cfg" @@ -54387,15 +54503,15 @@ }, "property": { "type": "Identifier", - "start": 79890, - "end": 79899, + "start": 79926, + "end": 79935, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 16 }, "end": { - "line": 2314, + "line": 2315, "column": 25 }, "identifierName": "primitive" @@ -54407,15 +54523,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 79904, - "end": 79913, + "start": 79940, + "end": 79949, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 30 }, "end": { - "line": 2314, + "line": 2315, "column": 39 }, "identifierName": "undefined" @@ -54426,43 +54542,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 79917, - "end": 79939, + "start": 79953, + "end": 79975, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 43 }, "end": { - "line": 2314, + "line": 2315, "column": 65 } }, "left": { "type": "MemberExpression", - "start": 79917, - "end": 79930, + "start": 79953, + "end": 79966, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 43 }, "end": { - "line": 2314, + "line": 2315, "column": 56 } }, "object": { "type": "Identifier", - "start": 79917, - "end": 79920, + "start": 79953, + "end": 79956, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 43 }, "end": { - "line": 2314, + "line": 2315, "column": 46 }, "identifierName": "cfg" @@ -54471,15 +54587,15 @@ }, "property": { "type": "Identifier", - "start": 79921, - "end": 79930, + "start": 79957, + "end": 79966, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 47 }, "end": { - "line": 2314, + "line": 2315, "column": 56 }, "identifierName": "primitive" @@ -54491,15 +54607,15 @@ "operator": "===", "right": { "type": "NullLiteral", - "start": 79935, - "end": 79939, + "start": 79971, + "end": 79975, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 61 }, "end": { - "line": 2314, + "line": 2315, "column": 65 } } @@ -54508,73 +54624,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 79941, - "end": 79993, + "start": 79977, + "end": 80029, "loc": { "start": { - "line": 2314, + "line": 2315, "column": 67 }, "end": { - "line": 2316, + "line": 2317, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 79955, - "end": 79983, + "start": 79991, + "end": 80019, "loc": { "start": { - "line": 2315, + "line": 2316, "column": 12 }, "end": { - "line": 2315, + "line": 2316, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 79955, - "end": 79982, + "start": 79991, + "end": 80018, "loc": { "start": { - "line": 2315, + "line": 2316, "column": 12 }, "end": { - "line": 2315, + "line": 2316, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 79955, - "end": 79968, + "start": 79991, + "end": 80004, "loc": { "start": { - "line": 2315, + "line": 2316, "column": 12 }, "end": { - "line": 2315, + "line": 2316, "column": 25 } }, "object": { "type": "Identifier", - "start": 79955, - "end": 79958, + "start": 79991, + "end": 79994, "loc": { "start": { - "line": 2315, + "line": 2316, "column": 12 }, "end": { - "line": 2315, + "line": 2316, "column": 15 }, "identifierName": "cfg" @@ -54583,15 +54699,15 @@ }, "property": { "type": "Identifier", - "start": 79959, - "end": 79968, + "start": 79995, + "end": 80004, "loc": { "start": { - "line": 2315, + "line": 2316, "column": 16 }, "end": { - "line": 2315, + "line": 2316, "column": 25 }, "identifierName": "primitive" @@ -54602,15 +54718,15 @@ }, "right": { "type": "StringLiteral", - "start": 79971, - "end": 79982, + "start": 80007, + "end": 80018, "loc": { "start": { - "line": 2315, + "line": 2316, "column": 28 }, "end": { - "line": 2315, + "line": 2316, "column": 39 } }, @@ -54629,113 +54745,113 @@ }, { "type": "IfStatement", - "start": 80002, - "end": 80390, + "start": 80038, + "end": 80426, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 8 }, "end": { - "line": 2320, + "line": 2321, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 80006, - "end": 80154, + "start": 80042, + "end": 80190, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 12 }, "end": { - "line": 2317, + "line": 2318, "column": 160 } }, "left": { "type": "LogicalExpression", - "start": 80006, - "end": 80123, + "start": 80042, + "end": 80159, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 12 }, "end": { - "line": 2317, + "line": 2318, "column": 129 } }, "left": { "type": "LogicalExpression", - "start": 80006, - "end": 80094, + "start": 80042, + "end": 80130, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 12 }, "end": { - "line": 2317, + "line": 2318, "column": 100 } }, "left": { "type": "LogicalExpression", - "start": 80006, - "end": 80061, + "start": 80042, + "end": 80097, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 12 }, "end": { - "line": 2317, + "line": 2318, "column": 67 } }, "left": { "type": "BinaryExpression", - "start": 80006, - "end": 80032, + "start": 80042, + "end": 80068, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 12 }, "end": { - "line": 2317, + "line": 2318, "column": 38 } }, "left": { "type": "MemberExpression", - "start": 80006, - "end": 80019, + "start": 80042, + "end": 80055, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 12 }, "end": { - "line": 2317, + "line": 2318, "column": 25 } }, "object": { "type": "Identifier", - "start": 80006, - "end": 80009, + "start": 80042, + "end": 80045, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 12 }, "end": { - "line": 2317, + "line": 2318, "column": 15 }, "identifierName": "cfg" @@ -54744,15 +54860,15 @@ }, "property": { "type": "Identifier", - "start": 80010, - "end": 80019, + "start": 80046, + "end": 80055, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 16 }, "end": { - "line": 2317, + "line": 2318, "column": 25 }, "identifierName": "primitive" @@ -54764,15 +54880,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 80024, - "end": 80032, + "start": 80060, + "end": 80068, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 30 }, "end": { - "line": 2317, + "line": 2318, "column": 38 } }, @@ -54786,43 +54902,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 80036, - "end": 80061, + "start": 80072, + "end": 80097, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 42 }, "end": { - "line": 2317, + "line": 2318, "column": 67 } }, "left": { "type": "MemberExpression", - "start": 80036, - "end": 80049, + "start": 80072, + "end": 80085, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 42 }, "end": { - "line": 2317, + "line": 2318, "column": 55 } }, "object": { "type": "Identifier", - "start": 80036, - "end": 80039, + "start": 80072, + "end": 80075, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 42 }, "end": { - "line": 2317, + "line": 2318, "column": 45 }, "identifierName": "cfg" @@ -54831,15 +54947,15 @@ }, "property": { "type": "Identifier", - "start": 80040, - "end": 80049, + "start": 80076, + "end": 80085, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 46 }, "end": { - "line": 2317, + "line": 2318, "column": 55 }, "identifierName": "primitive" @@ -54851,15 +54967,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 80054, - "end": 80061, + "start": 80090, + "end": 80097, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 60 }, "end": { - "line": 2317, + "line": 2318, "column": 67 } }, @@ -54874,43 +54990,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 80065, - "end": 80094, + "start": 80101, + "end": 80130, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 71 }, "end": { - "line": 2317, + "line": 2318, "column": 100 } }, "left": { "type": "MemberExpression", - "start": 80065, - "end": 80078, + "start": 80101, + "end": 80114, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 71 }, "end": { - "line": 2317, + "line": 2318, "column": 84 } }, "object": { "type": "Identifier", - "start": 80065, - "end": 80068, + "start": 80101, + "end": 80104, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 71 }, "end": { - "line": 2317, + "line": 2318, "column": 74 }, "identifierName": "cfg" @@ -54919,15 +55035,15 @@ }, "property": { "type": "Identifier", - "start": 80069, - "end": 80078, + "start": 80105, + "end": 80114, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 75 }, "end": { - "line": 2317, + "line": 2318, "column": 84 }, "identifierName": "primitive" @@ -54939,15 +55055,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 80083, - "end": 80094, + "start": 80119, + "end": 80130, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 89 }, "end": { - "line": 2317, + "line": 2318, "column": 100 } }, @@ -54962,43 +55078,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 80098, - "end": 80123, + "start": 80134, + "end": 80159, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 104 }, "end": { - "line": 2317, + "line": 2318, "column": 129 } }, "left": { "type": "MemberExpression", - "start": 80098, - "end": 80111, + "start": 80134, + "end": 80147, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 104 }, "end": { - "line": 2317, + "line": 2318, "column": 117 } }, "object": { "type": "Identifier", - "start": 80098, - "end": 80101, + "start": 80134, + "end": 80137, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 104 }, "end": { - "line": 2317, + "line": 2318, "column": 107 }, "identifierName": "cfg" @@ -55007,15 +55123,15 @@ }, "property": { "type": "Identifier", - "start": 80102, - "end": 80111, + "start": 80138, + "end": 80147, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 108 }, "end": { - "line": 2317, + "line": 2318, "column": 117 }, "identifierName": "primitive" @@ -55027,15 +55143,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 80116, - "end": 80123, + "start": 80152, + "end": 80159, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 122 }, "end": { - "line": 2317, + "line": 2318, "column": 129 } }, @@ -55050,43 +55166,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 80127, - "end": 80154, + "start": 80163, + "end": 80190, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 133 }, "end": { - "line": 2317, + "line": 2318, "column": 160 } }, "left": { "type": "MemberExpression", - "start": 80127, - "end": 80140, + "start": 80163, + "end": 80176, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 133 }, "end": { - "line": 2317, + "line": 2318, "column": 146 } }, "object": { "type": "Identifier", - "start": 80127, - "end": 80130, + "start": 80163, + "end": 80166, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 133 }, "end": { - "line": 2317, + "line": 2318, "column": 136 }, "identifierName": "cfg" @@ -55095,15 +55211,15 @@ }, "property": { "type": "Identifier", - "start": 80131, - "end": 80140, + "start": 80167, + "end": 80176, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 137 }, "end": { - "line": 2317, + "line": 2318, "column": 146 }, "identifierName": "primitive" @@ -55115,15 +55231,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 80145, - "end": 80154, + "start": 80181, + "end": 80190, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 151 }, "end": { - "line": 2317, + "line": 2318, "column": 160 } }, @@ -55137,87 +55253,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 80156, - "end": 80390, + "start": 80192, + "end": 80426, "loc": { "start": { - "line": 2317, + "line": 2318, "column": 162 }, "end": { - "line": 2320, + "line": 2321, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 80170, - "end": 80360, + "start": 80206, + "end": 80396, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 12 }, "end": { - "line": 2318, + "line": 2319, "column": 202 } }, "expression": { "type": "CallExpression", - "start": 80170, - "end": 80359, + "start": 80206, + "end": 80395, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 12 }, "end": { - "line": 2318, + "line": 2319, "column": 201 } }, "callee": { "type": "MemberExpression", - "start": 80170, - "end": 80180, + "start": 80206, + "end": 80216, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 12 }, "end": { - "line": 2318, + "line": 2319, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 80170, - "end": 80174, + "start": 80206, + "end": 80210, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 12 }, "end": { - "line": 2318, + "line": 2319, "column": 16 } } }, "property": { "type": "Identifier", - "start": 80175, - "end": 80180, + "start": 80211, + "end": 80216, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 17 }, "end": { - "line": 2318, + "line": 2319, "column": 22 }, "identifierName": "error" @@ -55229,44 +55345,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 80181, - "end": 80358, + "start": 80217, + "end": 80394, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 23 }, "end": { - "line": 2318, + "line": 2319, "column": 200 } }, "expressions": [ { "type": "MemberExpression", - "start": 80237, - "end": 80250, + "start": 80273, + "end": 80286, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 79 }, "end": { - "line": 2318, + "line": 2319, "column": 92 } }, "object": { "type": "Identifier", - "start": 80237, - "end": 80240, + "start": 80273, + "end": 80276, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 79 }, "end": { - "line": 2318, + "line": 2319, "column": 82 }, "identifierName": "cfg" @@ -55275,15 +55391,15 @@ }, "property": { "type": "Identifier", - "start": 80241, - "end": 80250, + "start": 80277, + "end": 80286, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 83 }, "end": { - "line": 2318, + "line": 2319, "column": 92 }, "identifierName": "primitive" @@ -55296,15 +55412,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 80182, - "end": 80235, + "start": 80218, + "end": 80271, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 24 }, "end": { - "line": 2318, + "line": 2319, "column": 77 } }, @@ -55316,15 +55432,15 @@ }, { "type": "TemplateElement", - "start": 80251, - "end": 80357, + "start": 80287, + "end": 80393, "loc": { "start": { - "line": 2318, + "line": 2319, "column": 93 }, "end": { - "line": 2318, + "line": 2319, "column": 199 } }, @@ -55341,15 +55457,15 @@ }, { "type": "ReturnStatement", - "start": 80373, - "end": 80380, + "start": 80409, + "end": 80416, "loc": { "start": { - "line": 2319, + "line": 2320, "column": 12 }, "end": { - "line": 2319, + "line": 2320, "column": 19 } }, @@ -55362,57 +55478,57 @@ }, { "type": "IfStatement", - "start": 80399, - "end": 80607, + "start": 80435, + "end": 80643, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 8 }, "end": { - "line": 2324, + "line": 2325, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 80403, - "end": 80461, + "start": 80439, + "end": 80497, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 12 }, "end": { - "line": 2321, + "line": 2322, "column": 70 } }, "left": { "type": "LogicalExpression", - "start": 80403, - "end": 80445, + "start": 80439, + "end": 80481, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 12 }, "end": { - "line": 2321, + "line": 2322, "column": 54 } }, "left": { "type": "UnaryExpression", - "start": 80403, - "end": 80417, + "start": 80439, + "end": 80453, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 12 }, "end": { - "line": 2321, + "line": 2322, "column": 26 } }, @@ -55420,29 +55536,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 80404, - "end": 80417, + "start": 80440, + "end": 80453, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 13 }, "end": { - "line": 2321, + "line": 2322, "column": 26 } }, "object": { "type": "Identifier", - "start": 80404, - "end": 80407, + "start": 80440, + "end": 80443, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 13 }, "end": { - "line": 2321, + "line": 2322, "column": 16 }, "identifierName": "cfg" @@ -55451,15 +55567,15 @@ }, "property": { "type": "Identifier", - "start": 80408, - "end": 80417, + "start": 80444, + "end": 80453, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 17 }, "end": { - "line": 2321, + "line": 2322, "column": 26 }, "identifierName": "positions" @@ -55475,15 +55591,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 80421, - "end": 80445, + "start": 80457, + "end": 80481, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 30 }, "end": { - "line": 2321, + "line": 2322, "column": 54 } }, @@ -55491,29 +55607,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 80422, - "end": 80445, + "start": 80458, + "end": 80481, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 31 }, "end": { - "line": 2321, + "line": 2322, "column": 54 } }, "object": { "type": "Identifier", - "start": 80422, - "end": 80425, + "start": 80458, + "end": 80461, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 31 }, "end": { - "line": 2321, + "line": 2322, "column": 34 }, "identifierName": "cfg" @@ -55522,15 +55638,15 @@ }, "property": { "type": "Identifier", - "start": 80426, - "end": 80445, + "start": 80462, + "end": 80481, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 35 }, "end": { - "line": 2321, + "line": 2322, "column": 54 }, "identifierName": "positionsCompressed" @@ -55547,15 +55663,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 80449, - "end": 80461, + "start": 80485, + "end": 80497, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 58 }, "end": { - "line": 2321, + "line": 2322, "column": 70 } }, @@ -55563,29 +55679,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 80450, - "end": 80461, + "start": 80486, + "end": 80497, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 59 }, "end": { - "line": 2321, + "line": 2322, "column": 70 } }, "object": { "type": "Identifier", - "start": 80450, - "end": 80453, + "start": 80486, + "end": 80489, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 59 }, "end": { - "line": 2321, + "line": 2322, "column": 62 }, "identifierName": "cfg" @@ -55594,15 +55710,15 @@ }, "property": { "type": "Identifier", - "start": 80454, - "end": 80461, + "start": 80490, + "end": 80497, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 63 }, "end": { - "line": 2321, + "line": 2322, "column": 70 }, "identifierName": "buckets" @@ -55618,87 +55734,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 80463, - "end": 80607, + "start": 80499, + "end": 80643, "loc": { "start": { - "line": 2321, + "line": 2322, "column": 72 }, "end": { - "line": 2324, + "line": 2325, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 80477, - "end": 80572, + "start": 80513, + "end": 80608, "loc": { "start": { - "line": 2322, + "line": 2323, "column": 12 }, "end": { - "line": 2322, + "line": 2323, "column": 107 } }, "expression": { "type": "CallExpression", - "start": 80477, - "end": 80571, + "start": 80513, + "end": 80607, "loc": { "start": { - "line": 2322, + "line": 2323, "column": 12 }, "end": { - "line": 2322, + "line": 2323, "column": 106 } }, "callee": { "type": "MemberExpression", - "start": 80477, - "end": 80487, + "start": 80513, + "end": 80523, "loc": { "start": { - "line": 2322, + "line": 2323, "column": 12 }, "end": { - "line": 2322, + "line": 2323, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 80477, - "end": 80481, + "start": 80513, + "end": 80517, "loc": { "start": { - "line": 2322, + "line": 2323, "column": 12 }, "end": { - "line": 2322, + "line": 2323, "column": 16 } } }, "property": { "type": "Identifier", - "start": 80482, - "end": 80487, + "start": 80518, + "end": 80523, "loc": { "start": { - "line": 2322, + "line": 2323, "column": 17 }, "end": { - "line": 2322, + "line": 2323, "column": 22 }, "identifierName": "error" @@ -55710,15 +55826,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 80488, - "end": 80570, + "start": 80524, + "end": 80606, "loc": { "start": { - "line": 2322, + "line": 2323, "column": 23 }, "end": { - "line": 2322, + "line": 2323, "column": 105 } }, @@ -55733,29 +55849,29 @@ }, { "type": "ReturnStatement", - "start": 80585, - "end": 80597, + "start": 80621, + "end": 80633, "loc": { "start": { - "line": 2323, + "line": 2324, "column": 12 }, "end": { - "line": 2323, + "line": 2324, "column": 24 } }, "argument": { "type": "NullLiteral", - "start": 80592, - "end": 80596, + "start": 80628, + "end": 80632, "loc": { "start": { - "line": 2323, + "line": 2324, "column": 19 }, "end": { - "line": 2323, + "line": 2324, "column": 23 } } @@ -55768,71 +55884,71 @@ }, { "type": "IfStatement", - "start": 80616, - "end": 80893, + "start": 80652, + "end": 80929, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 8 }, "end": { - "line": 2328, + "line": 2329, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 80620, - "end": 80705, + "start": 80656, + "end": 80741, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 12 }, "end": { - "line": 2325, + "line": 2326, "column": 97 } }, "left": { "type": "LogicalExpression", - "start": 80620, - "end": 80673, + "start": 80656, + "end": 80709, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 12 }, "end": { - "line": 2325, + "line": 2326, "column": 65 } }, "left": { "type": "MemberExpression", - "start": 80620, - "end": 80643, + "start": 80656, + "end": 80679, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 12 }, "end": { - "line": 2325, + "line": 2326, "column": 35 } }, "object": { "type": "Identifier", - "start": 80620, - "end": 80623, + "start": 80656, + "end": 80659, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 12 }, "end": { - "line": 2325, + "line": 2326, "column": 15 }, "identifierName": "cfg" @@ -55841,15 +55957,15 @@ }, "property": { "type": "Identifier", - "start": 80624, - "end": 80643, + "start": 80660, + "end": 80679, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 16 }, "end": { - "line": 2325, + "line": 2326, "column": 35 }, "identifierName": "positionsCompressed" @@ -55861,15 +55977,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 80647, - "end": 80673, + "start": 80683, + "end": 80709, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 39 }, "end": { - "line": 2325, + "line": 2326, "column": 65 } }, @@ -55877,29 +55993,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 80648, - "end": 80673, + "start": 80684, + "end": 80709, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 40 }, "end": { - "line": 2325, + "line": 2326, "column": 65 } }, "object": { "type": "Identifier", - "start": 80648, - "end": 80651, + "start": 80684, + "end": 80687, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 40 }, "end": { - "line": 2325, + "line": 2326, "column": 43 }, "identifierName": "cfg" @@ -55908,15 +56024,15 @@ }, "property": { "type": "Identifier", - "start": 80652, - "end": 80673, + "start": 80688, + "end": 80709, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 44 }, "end": { - "line": 2325, + "line": 2326, "column": 65 }, "identifierName": "positionsDecodeMatrix" @@ -55933,15 +56049,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 80677, - "end": 80705, + "start": 80713, + "end": 80741, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 69 }, "end": { - "line": 2325, + "line": 2326, "column": 97 } }, @@ -55949,29 +56065,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 80678, - "end": 80705, + "start": 80714, + "end": 80741, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 70 }, "end": { - "line": 2325, + "line": 2326, "column": 97 } }, "object": { "type": "Identifier", - "start": 80678, - "end": 80681, + "start": 80714, + "end": 80717, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 70 }, "end": { - "line": 2325, + "line": 2326, "column": 73 }, "identifierName": "cfg" @@ -55980,15 +56096,15 @@ }, "property": { "type": "Identifier", - "start": 80682, - "end": 80705, + "start": 80718, + "end": 80741, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 74 }, "end": { - "line": 2325, + "line": 2326, "column": 97 }, "identifierName": "positionsDecodeBoundary" @@ -56004,87 +56120,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 80707, - "end": 80893, + "start": 80743, + "end": 80929, "loc": { "start": { - "line": 2325, + "line": 2326, "column": 99 }, "end": { - "line": 2328, + "line": 2329, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 80721, - "end": 80858, + "start": 80757, + "end": 80894, "loc": { "start": { - "line": 2326, + "line": 2327, "column": 12 }, "end": { - "line": 2326, + "line": 2327, "column": 149 } }, "expression": { "type": "CallExpression", - "start": 80721, - "end": 80857, + "start": 80757, + "end": 80893, "loc": { "start": { - "line": 2326, + "line": 2327, "column": 12 }, "end": { - "line": 2326, + "line": 2327, "column": 148 } }, "callee": { "type": "MemberExpression", - "start": 80721, - "end": 80731, + "start": 80757, + "end": 80767, "loc": { "start": { - "line": 2326, + "line": 2327, "column": 12 }, "end": { - "line": 2326, + "line": 2327, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 80721, - "end": 80725, + "start": 80757, + "end": 80761, "loc": { "start": { - "line": 2326, + "line": 2327, "column": 12 }, "end": { - "line": 2326, + "line": 2327, "column": 16 } } }, "property": { "type": "Identifier", - "start": 80726, - "end": 80731, + "start": 80762, + "end": 80767, "loc": { "start": { - "line": 2326, + "line": 2327, "column": 17 }, "end": { - "line": 2326, + "line": 2327, "column": 22 }, "identifierName": "error" @@ -56096,15 +56212,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 80732, - "end": 80856, + "start": 80768, + "end": 80892, "loc": { "start": { - "line": 2326, + "line": 2327, "column": 23 }, "end": { - "line": 2326, + "line": 2327, "column": 147 } }, @@ -56119,29 +56235,29 @@ }, { "type": "ReturnStatement", - "start": 80871, - "end": 80883, + "start": 80907, + "end": 80919, "loc": { "start": { - "line": 2327, + "line": 2328, "column": 12 }, "end": { - "line": 2327, + "line": 2328, "column": 24 } }, "argument": { "type": "NullLiteral", - "start": 80878, - "end": 80882, + "start": 80914, + "end": 80918, "loc": { "start": { - "line": 2327, + "line": 2328, "column": 19 }, "end": { - "line": 2327, + "line": 2328, "column": 23 } } @@ -56154,57 +56270,57 @@ }, { "type": "IfStatement", - "start": 80902, - "end": 81169, + "start": 80938, + "end": 81205, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 8 }, "end": { - "line": 2332, + "line": 2333, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 80906, - "end": 80962, + "start": 80942, + "end": 80998, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 12 }, "end": { - "line": 2329, + "line": 2330, "column": 68 } }, "left": { "type": "MemberExpression", - "start": 80906, - "end": 80931, + "start": 80942, + "end": 80967, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 12 }, "end": { - "line": 2329, + "line": 2330, "column": 37 } }, "object": { "type": "Identifier", - "start": 80906, - "end": 80909, + "start": 80942, + "end": 80945, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 12 }, "end": { - "line": 2329, + "line": 2330, "column": 15 }, "identifierName": "cfg" @@ -56213,15 +56329,15 @@ }, "property": { "type": "Identifier", - "start": 80910, - "end": 80931, + "start": 80946, + "end": 80967, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 16 }, "end": { - "line": 2329, + "line": 2330, "column": 37 }, "identifierName": "positionsDecodeMatrix" @@ -56233,29 +56349,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 80935, - "end": 80962, + "start": 80971, + "end": 80998, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 41 }, "end": { - "line": 2329, + "line": 2330, "column": 68 } }, "object": { "type": "Identifier", - "start": 80935, - "end": 80938, + "start": 80971, + "end": 80974, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 41 }, "end": { - "line": 2329, + "line": 2330, "column": 44 }, "identifierName": "cfg" @@ -56264,15 +56380,15 @@ }, "property": { "type": "Identifier", - "start": 80939, - "end": 80962, + "start": 80975, + "end": 80998, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 45 }, "end": { - "line": 2329, + "line": 2330, "column": 68 }, "identifierName": "positionsDecodeBoundary" @@ -56284,87 +56400,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 80964, - "end": 81169, + "start": 81000, + "end": 81205, "loc": { "start": { - "line": 2329, + "line": 2330, "column": 70 }, "end": { - "line": 2332, + "line": 2333, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 80978, - "end": 81134, + "start": 81014, + "end": 81170, "loc": { "start": { - "line": 2330, + "line": 2331, "column": 12 }, "end": { - "line": 2330, + "line": 2331, "column": 168 } }, "expression": { "type": "CallExpression", - "start": 80978, - "end": 81133, + "start": 81014, + "end": 81169, "loc": { "start": { - "line": 2330, + "line": 2331, "column": 12 }, "end": { - "line": 2330, + "line": 2331, "column": 167 } }, "callee": { "type": "MemberExpression", - "start": 80978, - "end": 80988, + "start": 81014, + "end": 81024, "loc": { "start": { - "line": 2330, + "line": 2331, "column": 12 }, "end": { - "line": 2330, + "line": 2331, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 80978, - "end": 80982, + "start": 81014, + "end": 81018, "loc": { "start": { - "line": 2330, + "line": 2331, "column": 12 }, "end": { - "line": 2330, + "line": 2331, "column": 16 } } }, "property": { "type": "Identifier", - "start": 80983, - "end": 80988, + "start": 81019, + "end": 81024, "loc": { "start": { - "line": 2330, + "line": 2331, "column": 17 }, "end": { - "line": 2330, + "line": 2331, "column": 22 }, "identifierName": "error" @@ -56376,15 +56492,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 80989, - "end": 81132, + "start": 81025, + "end": 81168, "loc": { "start": { - "line": 2330, + "line": 2331, "column": 23 }, "end": { - "line": 2330, + "line": 2331, "column": 166 } }, @@ -56399,29 +56515,29 @@ }, { "type": "ReturnStatement", - "start": 81147, - "end": 81159, + "start": 81183, + "end": 81195, "loc": { "start": { - "line": 2331, + "line": 2332, "column": 12 }, "end": { - "line": 2331, + "line": 2332, "column": 24 } }, "argument": { "type": "NullLiteral", - "start": 81154, - "end": 81158, + "start": 81190, + "end": 81194, "loc": { "start": { - "line": 2331, + "line": 2332, "column": 19 }, "end": { - "line": 2331, + "line": 2332, "column": 23 } } @@ -56434,57 +56550,57 @@ }, { "type": "IfStatement", - "start": 81178, - "end": 81366, + "start": 81214, + "end": 81402, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 8 }, "end": { - "line": 2336, + "line": 2337, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 81182, - "end": 81221, + "start": 81218, + "end": 81257, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 12 }, "end": { - "line": 2333, + "line": 2334, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 81182, - "end": 81198, + "start": 81218, + "end": 81234, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 12 }, "end": { - "line": 2333, + "line": 2334, "column": 28 } }, "object": { "type": "Identifier", - "start": 81182, - "end": 81185, + "start": 81218, + "end": 81221, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 12 }, "end": { - "line": 2333, + "line": 2334, "column": 15 }, "identifierName": "cfg" @@ -56493,15 +56609,15 @@ }, "property": { "type": "Identifier", - "start": 81186, - "end": 81198, + "start": 81222, + "end": 81234, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 16 }, "end": { - "line": 2333, + "line": 2334, "column": 28 }, "identifierName": "uvCompressed" @@ -56513,15 +56629,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 81202, - "end": 81221, + "start": 81238, + "end": 81257, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 32 }, "end": { - "line": 2333, + "line": 2334, "column": 51 } }, @@ -56529,29 +56645,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 81203, - "end": 81221, + "start": 81239, + "end": 81257, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 33 }, "end": { - "line": 2333, + "line": 2334, "column": 51 } }, "object": { "type": "Identifier", - "start": 81203, - "end": 81206, + "start": 81239, + "end": 81242, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 33 }, "end": { - "line": 2333, + "line": 2334, "column": 36 }, "identifierName": "cfg" @@ -56560,15 +56676,15 @@ }, "property": { "type": "Identifier", - "start": 81207, - "end": 81221, + "start": 81243, + "end": 81257, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 37 }, "end": { - "line": 2333, + "line": 2334, "column": 51 }, "identifierName": "uvDecodeMatrix" @@ -56584,87 +56700,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 81223, - "end": 81366, + "start": 81259, + "end": 81402, "loc": { "start": { - "line": 2333, + "line": 2334, "column": 53 }, "end": { - "line": 2336, + "line": 2337, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 81237, - "end": 81331, + "start": 81273, + "end": 81367, "loc": { "start": { - "line": 2334, + "line": 2335, "column": 12 }, "end": { - "line": 2334, + "line": 2335, "column": 106 } }, "expression": { "type": "CallExpression", - "start": 81237, - "end": 81330, + "start": 81273, + "end": 81366, "loc": { "start": { - "line": 2334, + "line": 2335, "column": 12 }, "end": { - "line": 2334, + "line": 2335, "column": 105 } }, "callee": { "type": "MemberExpression", - "start": 81237, - "end": 81247, + "start": 81273, + "end": 81283, "loc": { "start": { - "line": 2334, + "line": 2335, "column": 12 }, "end": { - "line": 2334, + "line": 2335, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 81237, - "end": 81241, + "start": 81273, + "end": 81277, "loc": { "start": { - "line": 2334, + "line": 2335, "column": 12 }, "end": { - "line": 2334, + "line": 2335, "column": 16 } } }, "property": { "type": "Identifier", - "start": 81242, - "end": 81247, + "start": 81278, + "end": 81283, "loc": { "start": { - "line": 2334, + "line": 2335, "column": 17 }, "end": { - "line": 2334, + "line": 2335, "column": 22 }, "identifierName": "error" @@ -56676,15 +56792,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 81248, - "end": 81329, + "start": 81284, + "end": 81365, "loc": { "start": { - "line": 2334, + "line": 2335, "column": 23 }, "end": { - "line": 2334, + "line": 2335, "column": 104 } }, @@ -56699,29 +56815,29 @@ }, { "type": "ReturnStatement", - "start": 81344, - "end": 81356, + "start": 81380, + "end": 81392, "loc": { "start": { - "line": 2335, + "line": 2336, "column": 12 }, "end": { - "line": 2335, + "line": 2336, "column": 24 } }, "argument": { "type": "NullLiteral", - "start": 81351, - "end": 81355, + "start": 81387, + "end": 81391, "loc": { "start": { - "line": 2335, + "line": 2336, "column": 19 }, "end": { - "line": 2335, + "line": 2336, "column": 23 } } @@ -56734,57 +56850,57 @@ }, { "type": "IfStatement", - "start": 81375, - "end": 81671, + "start": 81411, + "end": 81707, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 8 }, "end": { - "line": 2340, + "line": 2341, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 81379, - "end": 81502, + "start": 81415, + "end": 81538, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 12 }, "end": { - "line": 2337, + "line": 2338, "column": 135 } }, "left": { "type": "LogicalExpression", - "start": 81379, - "end": 81407, + "start": 81415, + "end": 81443, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 12 }, "end": { - "line": 2337, + "line": 2338, "column": 40 } }, "left": { "type": "UnaryExpression", - "start": 81379, - "end": 81391, + "start": 81415, + "end": 81427, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 12 }, "end": { - "line": 2337, + "line": 2338, "column": 24 } }, @@ -56792,29 +56908,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 81380, - "end": 81391, + "start": 81416, + "end": 81427, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 13 }, "end": { - "line": 2337, + "line": 2338, "column": 24 } }, "object": { "type": "Identifier", - "start": 81380, - "end": 81383, + "start": 81416, + "end": 81419, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 13 }, "end": { - "line": 2337, + "line": 2338, "column": 16 }, "identifierName": "cfg" @@ -56823,15 +56939,15 @@ }, "property": { "type": "Identifier", - "start": 81384, - "end": 81391, + "start": 81420, + "end": 81427, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 17 }, "end": { - "line": 2337, + "line": 2338, "column": 24 }, "identifierName": "buckets" @@ -56847,15 +56963,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 81395, - "end": 81407, + "start": 81431, + "end": 81443, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 28 }, "end": { - "line": 2337, + "line": 2338, "column": 40 } }, @@ -56863,29 +56979,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 81396, - "end": 81407, + "start": 81432, + "end": 81443, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 29 }, "end": { - "line": 2337, + "line": 2338, "column": 40 } }, "object": { "type": "Identifier", - "start": 81396, - "end": 81399, + "start": 81432, + "end": 81435, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 29 }, "end": { - "line": 2337, + "line": 2338, "column": 32 }, "identifierName": "cfg" @@ -56894,15 +57010,15 @@ }, "property": { "type": "Identifier", - "start": 81400, - "end": 81407, + "start": 81436, + "end": 81443, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 33 }, "end": { - "line": 2337, + "line": 2338, "column": 40 }, "identifierName": "indices" @@ -56919,71 +57035,71 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 81412, - "end": 81501, + "start": 81448, + "end": 81537, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 45 }, "end": { - "line": 2337, + "line": 2338, "column": 134 } }, "left": { "type": "LogicalExpression", - "start": 81412, - "end": 81470, + "start": 81448, + "end": 81506, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 45 }, "end": { - "line": 2337, + "line": 2338, "column": 103 } }, "left": { "type": "BinaryExpression", - "start": 81412, - "end": 81441, + "start": 81448, + "end": 81477, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 45 }, "end": { - "line": 2337, + "line": 2338, "column": 74 } }, "left": { "type": "MemberExpression", - "start": 81412, - "end": 81425, + "start": 81448, + "end": 81461, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 45 }, "end": { - "line": 2337, + "line": 2338, "column": 58 } }, "object": { "type": "Identifier", - "start": 81412, - "end": 81415, + "start": 81448, + "end": 81451, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 45 }, "end": { - "line": 2337, + "line": 2338, "column": 48 }, "identifierName": "cfg" @@ -56992,15 +57108,15 @@ }, "property": { "type": "Identifier", - "start": 81416, - "end": 81425, + "start": 81452, + "end": 81461, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 49 }, "end": { - "line": 2337, + "line": 2338, "column": 58 }, "identifierName": "primitive" @@ -57012,15 +57128,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 81430, - "end": 81441, + "start": 81466, + "end": 81477, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 63 }, "end": { - "line": 2337, + "line": 2338, "column": 74 } }, @@ -57034,43 +57150,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 81445, - "end": 81470, + "start": 81481, + "end": 81506, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 78 }, "end": { - "line": 2337, + "line": 2338, "column": 103 } }, "left": { "type": "MemberExpression", - "start": 81445, - "end": 81458, + "start": 81481, + "end": 81494, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 78 }, "end": { - "line": 2337, + "line": 2338, "column": 91 } }, "object": { "type": "Identifier", - "start": 81445, - "end": 81448, + "start": 81481, + "end": 81484, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 78 }, "end": { - "line": 2337, + "line": 2338, "column": 81 }, "identifierName": "cfg" @@ -57079,15 +57195,15 @@ }, "property": { "type": "Identifier", - "start": 81449, - "end": 81458, + "start": 81485, + "end": 81494, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 82 }, "end": { - "line": 2337, + "line": 2338, "column": 91 }, "identifierName": "primitive" @@ -57099,15 +57215,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 81463, - "end": 81470, + "start": 81499, + "end": 81506, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 96 }, "end": { - "line": 2337, + "line": 2338, "column": 103 } }, @@ -57122,43 +57238,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 81474, - "end": 81501, + "start": 81510, + "end": 81537, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 107 }, "end": { - "line": 2337, + "line": 2338, "column": 134 } }, "left": { "type": "MemberExpression", - "start": 81474, - "end": 81487, + "start": 81510, + "end": 81523, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 107 }, "end": { - "line": 2337, + "line": 2338, "column": 120 } }, "object": { "type": "Identifier", - "start": 81474, - "end": 81477, + "start": 81510, + "end": 81513, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 107 }, "end": { - "line": 2337, + "line": 2338, "column": 110 }, "identifierName": "cfg" @@ -57167,15 +57283,15 @@ }, "property": { "type": "Identifier", - "start": 81478, - "end": 81487, + "start": 81514, + "end": 81523, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 111 }, "end": { - "line": 2337, + "line": 2338, "column": 120 }, "identifierName": "primitive" @@ -57187,15 +57303,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 81492, - "end": 81501, + "start": 81528, + "end": 81537, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 125 }, "end": { - "line": 2337, + "line": 2338, "column": 134 } }, @@ -57208,65 +57324,65 @@ }, "extra": { "parenthesized": true, - "parenStart": 81411 + "parenStart": 81447 } } }, "consequent": { "type": "BlockStatement", - "start": 81504, - "end": 81671, + "start": 81540, + "end": 81707, "loc": { "start": { - "line": 2337, + "line": 2338, "column": 137 }, "end": { - "line": 2340, + "line": 2341, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 81518, - "end": 81593, + "start": 81554, + "end": 81629, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 12 }, "end": { - "line": 2338, + "line": 2339, "column": 87 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 81524, - "end": 81592, + "start": 81560, + "end": 81628, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 18 }, "end": { - "line": 2338, + "line": 2339, "column": 86 } }, "id": { "type": "Identifier", - "start": 81524, - "end": 81536, + "start": 81560, + "end": 81572, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 18 }, "end": { - "line": 2338, + "line": 2339, "column": 30 }, "identifierName": "numPositions" @@ -57275,71 +57391,71 @@ }, "init": { "type": "BinaryExpression", - "start": 81539, - "end": 81592, + "start": 81575, + "end": 81628, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 33 }, "end": { - "line": 2338, + "line": 2339, "column": 86 } }, "left": { "type": "MemberExpression", - "start": 81539, - "end": 81588, + "start": 81575, + "end": 81624, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 33 }, "end": { - "line": 2338, + "line": 2339, "column": 82 } }, "object": { "type": "LogicalExpression", - "start": 81540, - "end": 81580, + "start": 81576, + "end": 81616, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 34 }, "end": { - "line": 2338, + "line": 2339, "column": 74 } }, "left": { "type": "MemberExpression", - "start": 81540, - "end": 81553, + "start": 81576, + "end": 81589, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 34 }, "end": { - "line": 2338, + "line": 2339, "column": 47 } }, "object": { "type": "Identifier", - "start": 81540, - "end": 81543, + "start": 81576, + "end": 81579, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 34 }, "end": { - "line": 2338, + "line": 2339, "column": 37 }, "identifierName": "cfg" @@ -57348,15 +57464,15 @@ }, "property": { "type": "Identifier", - "start": 81544, - "end": 81553, + "start": 81580, + "end": 81589, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 38 }, "end": { - "line": 2338, + "line": 2339, "column": 47 }, "identifierName": "positions" @@ -57368,29 +57484,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 81557, - "end": 81580, + "start": 81593, + "end": 81616, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 51 }, "end": { - "line": 2338, + "line": 2339, "column": 74 } }, "object": { "type": "Identifier", - "start": 81557, - "end": 81560, + "start": 81593, + "end": 81596, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 51 }, "end": { - "line": 2338, + "line": 2339, "column": 54 }, "identifierName": "cfg" @@ -57399,15 +57515,15 @@ }, "property": { "type": "Identifier", - "start": 81561, - "end": 81580, + "start": 81597, + "end": 81616, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 55 }, "end": { - "line": 2338, + "line": 2339, "column": 74 }, "identifierName": "positionsCompressed" @@ -57418,20 +57534,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 81539 + "parenStart": 81575 } }, "property": { "type": "Identifier", - "start": 81582, - "end": 81588, + "start": 81618, + "end": 81624, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 76 }, "end": { - "line": 2338, + "line": 2339, "column": 82 }, "identifierName": "length" @@ -57443,15 +57559,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 81591, - "end": 81592, + "start": 81627, + "end": 81628, "loc": { "start": { - "line": 2338, + "line": 2339, "column": 85 }, "end": { - "line": 2338, + "line": 2339, "column": 86 } }, @@ -57468,58 +57584,58 @@ }, { "type": "ExpressionStatement", - "start": 81606, - "end": 81661, + "start": 81642, + "end": 81697, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 12 }, "end": { - "line": 2339, + "line": 2340, "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 81606, - "end": 81660, + "start": 81642, + "end": 81696, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 12 }, "end": { - "line": 2339, + "line": 2340, "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 81606, - "end": 81617, + "start": 81642, + "end": 81653, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 12 }, "end": { - "line": 2339, + "line": 2340, "column": 23 } }, "object": { "type": "Identifier", - "start": 81606, - "end": 81609, + "start": 81642, + "end": 81645, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 12 }, "end": { - "line": 2339, + "line": 2340, "column": 15 }, "identifierName": "cfg" @@ -57528,15 +57644,15 @@ }, "property": { "type": "Identifier", - "start": 81610, - "end": 81617, + "start": 81646, + "end": 81653, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 16 }, "end": { - "line": 2339, + "line": 2340, "column": 23 }, "identifierName": "indices" @@ -57547,58 +57663,58 @@ }, "right": { "type": "CallExpression", - "start": 81620, - "end": 81660, + "start": 81656, + "end": 81696, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 26 }, "end": { - "line": 2339, + "line": 2340, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 81620, - "end": 81646, + "start": 81656, + "end": 81682, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 26 }, "end": { - "line": 2339, + "line": 2340, "column": 52 } }, "object": { "type": "ThisExpression", - "start": 81620, - "end": 81624, + "start": 81656, + "end": 81660, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 26 }, "end": { - "line": 2339, + "line": 2340, "column": 30 } } }, "property": { "type": "Identifier", - "start": 81625, - "end": 81646, + "start": 81661, + "end": 81682, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 31 }, "end": { - "line": 2339, + "line": 2340, "column": 52 }, "identifierName": "_createDefaultIndices" @@ -57610,15 +57726,15 @@ "arguments": [ { "type": "Identifier", - "start": 81647, - "end": 81659, + "start": 81683, + "end": 81695, "loc": { "start": { - "line": 2339, + "line": 2340, "column": 53 }, "end": { - "line": 2339, + "line": 2340, "column": 65 }, "identifierName": "numPositions" @@ -57636,57 +57752,57 @@ }, { "type": "IfStatement", - "start": 81680, - "end": 81897, + "start": 81716, + "end": 81933, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 8 }, "end": { - "line": 2344, + "line": 2345, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 81684, - "end": 81742, + "start": 81720, + "end": 81778, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 12 }, "end": { - "line": 2341, + "line": 2342, "column": 70 } }, "left": { "type": "LogicalExpression", - "start": 81684, - "end": 81712, + "start": 81720, + "end": 81748, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 12 }, "end": { - "line": 2341, + "line": 2342, "column": 40 } }, "left": { "type": "UnaryExpression", - "start": 81684, - "end": 81696, + "start": 81720, + "end": 81732, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 12 }, "end": { - "line": 2341, + "line": 2342, "column": 24 } }, @@ -57694,29 +57810,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 81685, - "end": 81696, + "start": 81721, + "end": 81732, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 13 }, "end": { - "line": 2341, + "line": 2342, "column": 24 } }, "object": { "type": "Identifier", - "start": 81685, - "end": 81688, + "start": 81721, + "end": 81724, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 13 }, "end": { - "line": 2341, + "line": 2342, "column": 16 }, "identifierName": "cfg" @@ -57725,15 +57841,15 @@ }, "property": { "type": "Identifier", - "start": 81689, - "end": 81696, + "start": 81725, + "end": 81732, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 17 }, "end": { - "line": 2341, + "line": 2342, "column": 24 }, "identifierName": "buckets" @@ -57749,15 +57865,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 81700, - "end": 81712, + "start": 81736, + "end": 81748, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 28 }, "end": { - "line": 2341, + "line": 2342, "column": 40 } }, @@ -57765,29 +57881,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 81701, - "end": 81712, + "start": 81737, + "end": 81748, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 29 }, "end": { - "line": 2341, + "line": 2342, "column": 40 } }, "object": { "type": "Identifier", - "start": 81701, - "end": 81704, + "start": 81737, + "end": 81740, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 29 }, "end": { - "line": 2341, + "line": 2342, "column": 32 }, "identifierName": "cfg" @@ -57796,15 +57912,15 @@ }, "property": { "type": "Identifier", - "start": 81705, - "end": 81712, + "start": 81741, + "end": 81748, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 33 }, "end": { - "line": 2341, + "line": 2342, "column": 40 }, "identifierName": "indices" @@ -57821,43 +57937,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 81716, - "end": 81742, + "start": 81752, + "end": 81778, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 44 }, "end": { - "line": 2341, + "line": 2342, "column": 70 } }, "left": { "type": "MemberExpression", - "start": 81716, - "end": 81729, + "start": 81752, + "end": 81765, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 44 }, "end": { - "line": 2341, + "line": 2342, "column": 57 } }, "object": { "type": "Identifier", - "start": 81716, - "end": 81719, + "start": 81752, + "end": 81755, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 44 }, "end": { - "line": 2341, + "line": 2342, "column": 47 }, "identifierName": "cfg" @@ -57866,15 +57982,15 @@ }, "property": { "type": "Identifier", - "start": 81720, - "end": 81729, + "start": 81756, + "end": 81765, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 48 }, "end": { - "line": 2341, + "line": 2342, "column": 57 }, "identifierName": "primitive" @@ -57886,15 +58002,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 81734, - "end": 81742, + "start": 81770, + "end": 81778, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 62 }, "end": { - "line": 2341, + "line": 2342, "column": 70 } }, @@ -57908,87 +58024,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 81744, - "end": 81897, + "start": 81780, + "end": 81933, "loc": { "start": { - "line": 2341, + "line": 2342, "column": 72 }, "end": { - "line": 2344, + "line": 2345, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 81758, - "end": 81862, + "start": 81794, + "end": 81898, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 12 }, "end": { - "line": 2342, + "line": 2343, "column": 116 } }, "expression": { "type": "CallExpression", - "start": 81758, - "end": 81861, + "start": 81794, + "end": 81897, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 12 }, "end": { - "line": 2342, + "line": 2343, "column": 115 } }, "callee": { "type": "MemberExpression", - "start": 81758, - "end": 81768, + "start": 81794, + "end": 81804, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 12 }, "end": { - "line": 2342, + "line": 2343, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 81758, - "end": 81762, + "start": 81794, + "end": 81798, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 12 }, "end": { - "line": 2342, + "line": 2343, "column": 16 } } }, "property": { "type": "Identifier", - "start": 81763, - "end": 81768, + "start": 81799, + "end": 81804, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 17 }, "end": { - "line": 2342, + "line": 2343, "column": 22 }, "identifierName": "error" @@ -58000,44 +58116,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 81769, - "end": 81860, + "start": 81805, + "end": 81896, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 23 }, "end": { - "line": 2342, + "line": 2343, "column": 114 } }, "expressions": [ { "type": "MemberExpression", - "start": 81828, - "end": 81841, + "start": 81864, + "end": 81877, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 82 }, "end": { - "line": 2342, + "line": 2343, "column": 95 } }, "object": { "type": "Identifier", - "start": 81828, - "end": 81831, + "start": 81864, + "end": 81867, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 82 }, "end": { - "line": 2342, + "line": 2343, "column": 85 }, "identifierName": "cfg" @@ -58046,15 +58162,15 @@ }, "property": { "type": "Identifier", - "start": 81832, - "end": 81841, + "start": 81868, + "end": 81877, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 86 }, "end": { - "line": 2342, + "line": 2343, "column": 95 }, "identifierName": "primitive" @@ -58067,15 +58183,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 81770, - "end": 81826, + "start": 81806, + "end": 81862, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 24 }, "end": { - "line": 2342, + "line": 2343, "column": 80 } }, @@ -58087,15 +58203,15 @@ }, { "type": "TemplateElement", - "start": 81842, - "end": 81859, + "start": 81878, + "end": 81895, "loc": { "start": { - "line": 2342, + "line": 2343, "column": 96 }, "end": { - "line": 2342, + "line": 2343, "column": 113 } }, @@ -58112,29 +58228,29 @@ }, { "type": "ReturnStatement", - "start": 81875, - "end": 81887, + "start": 81911, + "end": 81923, "loc": { "start": { - "line": 2343, + "line": 2344, "column": 12 }, "end": { - "line": 2343, + "line": 2344, "column": 24 } }, "argument": { "type": "NullLiteral", - "start": 81882, - "end": 81886, + "start": 81918, + "end": 81922, "loc": { "start": { - "line": 2343, + "line": 2344, "column": 19 }, "end": { - "line": 2343, + "line": 2344, "column": 23 } } @@ -58147,43 +58263,43 @@ }, { "type": "IfStatement", - "start": 81906, - "end": 82061, + "start": 81942, + "end": 82097, "loc": { "start": { - "line": 2345, + "line": 2346, "column": 8 }, "end": { - "line": 2347, + "line": 2348, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 81910, - "end": 81937, + "start": 81946, + "end": 81973, "loc": { "start": { - "line": 2345, + "line": 2346, "column": 12 }, "end": { - "line": 2345, + "line": 2346, "column": 39 } }, "object": { "type": "Identifier", - "start": 81910, - "end": 81913, + "start": 81946, + "end": 81949, "loc": { "start": { - "line": 2345, + "line": 2346, "column": 12 }, "end": { - "line": 2345, + "line": 2346, "column": 15 }, "identifierName": "cfg" @@ -58192,15 +58308,15 @@ }, "property": { "type": "Identifier", - "start": 81914, - "end": 81937, + "start": 81950, + "end": 81973, "loc": { "start": { - "line": 2345, + "line": 2346, "column": 16 }, "end": { - "line": 2345, + "line": 2346, "column": 39 }, "identifierName": "positionsDecodeBoundary" @@ -58211,73 +58327,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 81939, - "end": 82061, + "start": 81975, + "end": 82097, "loc": { "start": { - "line": 2345, + "line": 2346, "column": 41 }, "end": { - "line": 2347, + "line": 2348, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 81953, - "end": 82051, + "start": 81989, + "end": 82087, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 12 }, "end": { - "line": 2346, + "line": 2347, "column": 110 } }, "expression": { "type": "AssignmentExpression", - "start": 81953, - "end": 82050, + "start": 81989, + "end": 82086, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 12 }, "end": { - "line": 2346, + "line": 2347, "column": 109 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 81953, - "end": 81978, + "start": 81989, + "end": 82014, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 12 }, "end": { - "line": 2346, + "line": 2347, "column": 37 } }, "object": { "type": "Identifier", - "start": 81953, - "end": 81956, + "start": 81989, + "end": 81992, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 12 }, "end": { - "line": 2346, + "line": 2347, "column": 15 }, "identifierName": "cfg" @@ -58286,15 +58402,15 @@ }, "property": { "type": "Identifier", - "start": 81957, - "end": 81978, + "start": 81993, + "end": 82014, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 16 }, "end": { - "line": 2346, + "line": 2347, "column": 37 }, "identifierName": "positionsDecodeMatrix" @@ -58305,29 +58421,29 @@ }, "right": { "type": "CallExpression", - "start": 81981, - "end": 82050, + "start": 82017, + "end": 82086, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 40 }, "end": { - "line": 2346, + "line": 2347, "column": 109 } }, "callee": { "type": "Identifier", - "start": 81981, - "end": 82008, + "start": 82017, + "end": 82044, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 40 }, "end": { - "line": 2346, + "line": 2347, "column": 67 }, "identifierName": "createPositionsDecodeMatrix" @@ -58337,29 +58453,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 82009, - "end": 82036, + "start": 82045, + "end": 82072, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 68 }, "end": { - "line": 2346, + "line": 2347, "column": 95 } }, "object": { "type": "Identifier", - "start": 82009, - "end": 82012, + "start": 82045, + "end": 82048, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 68 }, "end": { - "line": 2346, + "line": 2347, "column": 71 }, "identifierName": "cfg" @@ -58368,15 +58484,15 @@ }, "property": { "type": "Identifier", - "start": 82013, - "end": 82036, + "start": 82049, + "end": 82072, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 72 }, "end": { - "line": 2346, + "line": 2347, "column": 95 }, "identifierName": "positionsDecodeBoundary" @@ -58387,43 +58503,43 @@ }, { "type": "CallExpression", - "start": 82038, - "end": 82049, + "start": 82074, + "end": 82085, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 97 }, "end": { - "line": 2346, + "line": 2347, "column": 108 } }, "callee": { "type": "MemberExpression", - "start": 82038, - "end": 82047, + "start": 82074, + "end": 82083, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 97 }, "end": { - "line": 2346, + "line": 2347, "column": 106 } }, "object": { "type": "Identifier", - "start": 82038, - "end": 82042, + "start": 82074, + "end": 82078, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 97 }, "end": { - "line": 2346, + "line": 2347, "column": 101 }, "identifierName": "math" @@ -58432,15 +58548,15 @@ }, "property": { "type": "Identifier", - "start": 82043, - "end": 82047, + "start": 82079, + "end": 82083, "loc": { "start": { - "line": 2346, + "line": 2347, "column": 102 }, "end": { - "line": 2346, + "line": 2347, "column": 106 }, "identifierName": "mat4" @@ -58462,43 +58578,43 @@ }, { "type": "IfStatement", - "start": 82070, - "end": 83538, + "start": 82106, + "end": 83574, "loc": { "start": { - "line": 2348, + "line": 2349, "column": 8 }, "end": { - "line": 2376, + "line": 2377, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 82074, - "end": 82087, + "start": 82110, + "end": 82123, "loc": { "start": { - "line": 2348, + "line": 2349, "column": 12 }, "end": { - "line": 2348, + "line": 2349, "column": 25 } }, "object": { "type": "Identifier", - "start": 82074, - "end": 82077, + "start": 82110, + "end": 82113, "loc": { "start": { - "line": 2348, + "line": 2349, "column": 12 }, "end": { - "line": 2348, + "line": 2349, "column": 15 }, "identifierName": "cfg" @@ -58507,15 +58623,15 @@ }, "property": { "type": "Identifier", - "start": 82078, - "end": 82087, + "start": 82114, + "end": 82123, "loc": { "start": { - "line": 2348, + "line": 2349, "column": 16 }, "end": { - "line": 2348, + "line": 2349, "column": 25 }, "identifierName": "positions" @@ -58526,59 +58642,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 82089, - "end": 82392, + "start": 82125, + "end": 82428, "loc": { "start": { - "line": 2348, + "line": 2349, "column": 27 }, "end": { - "line": 2354, + "line": 2355, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 82103, - "end": 82137, + "start": 82139, + "end": 82173, "loc": { "start": { - "line": 2349, + "line": 2350, "column": 12 }, "end": { - "line": 2349, + "line": 2350, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 82109, - "end": 82136, + "start": 82145, + "end": 82172, "loc": { "start": { - "line": 2349, + "line": 2350, "column": 18 }, "end": { - "line": 2349, + "line": 2350, "column": 45 } }, "id": { "type": "Identifier", - "start": 82109, - "end": 82113, + "start": 82145, + "end": 82149, "loc": { "start": { - "line": 2349, + "line": 2350, "column": 18 }, "end": { - "line": 2349, + "line": 2350, "column": 22 }, "identifierName": "aabb" @@ -58587,43 +58703,43 @@ }, "init": { "type": "CallExpression", - "start": 82116, - "end": 82136, + "start": 82152, + "end": 82172, "loc": { "start": { - "line": 2349, + "line": 2350, "column": 25 }, "end": { - "line": 2349, + "line": 2350, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 82116, - "end": 82134, + "start": 82152, + "end": 82170, "loc": { "start": { - "line": 2349, + "line": 2350, "column": 25 }, "end": { - "line": 2349, + "line": 2350, "column": 43 } }, "object": { "type": "Identifier", - "start": 82116, - "end": 82120, + "start": 82152, + "end": 82156, "loc": { "start": { - "line": 2349, + "line": 2350, "column": 25 }, "end": { - "line": 2349, + "line": 2350, "column": 29 }, "identifierName": "math" @@ -58632,15 +58748,15 @@ }, "property": { "type": "Identifier", - "start": 82121, - "end": 82134, + "start": 82157, + "end": 82170, "loc": { "start": { - "line": 2349, + "line": 2350, "column": 30 }, "end": { - "line": 2349, + "line": 2350, "column": 43 }, "identifierName": "collapseAABB3" @@ -58657,58 +58773,58 @@ }, { "type": "ExpressionStatement", - "start": 82150, - "end": 82190, + "start": 82186, + "end": 82226, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 12 }, "end": { - "line": 2350, + "line": 2351, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 82150, - "end": 82189, + "start": 82186, + "end": 82225, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 12 }, "end": { - "line": 2350, + "line": 2351, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 82150, - "end": 82175, + "start": 82186, + "end": 82211, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 12 }, "end": { - "line": 2350, + "line": 2351, "column": 37 } }, "object": { "type": "Identifier", - "start": 82150, - "end": 82153, + "start": 82186, + "end": 82189, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 12 }, "end": { - "line": 2350, + "line": 2351, "column": 15 }, "identifierName": "cfg" @@ -58717,15 +58833,15 @@ }, "property": { "type": "Identifier", - "start": 82154, - "end": 82175, + "start": 82190, + "end": 82211, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 16 }, "end": { - "line": 2350, + "line": 2351, "column": 37 }, "identifierName": "positionsDecodeMatrix" @@ -58736,43 +58852,43 @@ }, "right": { "type": "CallExpression", - "start": 82178, - "end": 82189, + "start": 82214, + "end": 82225, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 40 }, "end": { - "line": 2350, + "line": 2351, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 82178, - "end": 82187, + "start": 82214, + "end": 82223, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 40 }, "end": { - "line": 2350, + "line": 2351, "column": 49 } }, "object": { "type": "Identifier", - "start": 82178, - "end": 82182, + "start": 82214, + "end": 82218, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 40 }, "end": { - "line": 2350, + "line": 2351, "column": 44 }, "identifierName": "math" @@ -58781,15 +58897,15 @@ }, "property": { "type": "Identifier", - "start": 82183, - "end": 82187, + "start": 82219, + "end": 82223, "loc": { "start": { - "line": 2350, + "line": 2351, "column": 45 }, "end": { - "line": 2350, + "line": 2351, "column": 49 }, "identifierName": "mat4" @@ -58804,57 +58920,57 @@ }, { "type": "ExpressionStatement", - "start": 82203, - "end": 82248, + "start": 82239, + "end": 82284, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 12 }, "end": { - "line": 2351, + "line": 2352, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 82203, - "end": 82247, + "start": 82239, + "end": 82283, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 12 }, "end": { - "line": 2351, + "line": 2352, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 82203, - "end": 82226, + "start": 82239, + "end": 82262, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 12 }, "end": { - "line": 2351, + "line": 2352, "column": 35 } }, "object": { "type": "Identifier", - "start": 82203, - "end": 82207, + "start": 82239, + "end": 82243, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 12 }, "end": { - "line": 2351, + "line": 2352, "column": 16 }, "identifierName": "math" @@ -58863,15 +58979,15 @@ }, "property": { "type": "Identifier", - "start": 82208, - "end": 82226, + "start": 82244, + "end": 82262, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 17 }, "end": { - "line": 2351, + "line": 2352, "column": 35 }, "identifierName": "expandAABB3Points3" @@ -58883,15 +58999,15 @@ "arguments": [ { "type": "Identifier", - "start": 82227, - "end": 82231, + "start": 82263, + "end": 82267, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 36 }, "end": { - "line": 2351, + "line": 2352, "column": 40 }, "identifierName": "aabb" @@ -58900,29 +59016,29 @@ }, { "type": "MemberExpression", - "start": 82233, - "end": 82246, + "start": 82269, + "end": 82282, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 42 }, "end": { - "line": 2351, + "line": 2352, "column": 55 } }, "object": { "type": "Identifier", - "start": 82233, - "end": 82236, + "start": 82269, + "end": 82272, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 42 }, "end": { - "line": 2351, + "line": 2352, "column": 45 }, "identifierName": "cfg" @@ -58931,15 +59047,15 @@ }, "property": { "type": "Identifier", - "start": 82237, - "end": 82246, + "start": 82273, + "end": 82282, "loc": { "start": { - "line": 2351, + "line": 2352, "column": 46 }, "end": { - "line": 2351, + "line": 2352, "column": 55 }, "identifierName": "positions" @@ -58953,58 +59069,58 @@ }, { "type": "ExpressionStatement", - "start": 82261, - "end": 82353, + "start": 82297, + "end": 82389, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 12 }, "end": { - "line": 2352, + "line": 2353, "column": 104 } }, "expression": { "type": "AssignmentExpression", - "start": 82261, - "end": 82352, + "start": 82297, + "end": 82388, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 12 }, "end": { - "line": 2352, + "line": 2353, "column": 103 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 82261, - "end": 82284, + "start": 82297, + "end": 82320, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 12 }, "end": { - "line": 2352, + "line": 2353, "column": 35 } }, "object": { "type": "Identifier", - "start": 82261, - "end": 82264, + "start": 82297, + "end": 82300, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 12 }, "end": { - "line": 2352, + "line": 2353, "column": 15 }, "identifierName": "cfg" @@ -59013,15 +59129,15 @@ }, "property": { "type": "Identifier", - "start": 82265, - "end": 82284, + "start": 82301, + "end": 82320, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 16 }, "end": { - "line": 2352, + "line": 2353, "column": 35 }, "identifierName": "positionsCompressed" @@ -59032,29 +59148,29 @@ }, "right": { "type": "CallExpression", - "start": 82287, - "end": 82352, + "start": 82323, + "end": 82388, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 38 }, "end": { - "line": 2352, + "line": 2353, "column": 103 } }, "callee": { "type": "Identifier", - "start": 82287, - "end": 82304, + "start": 82323, + "end": 82340, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 38 }, "end": { - "line": 2352, + "line": 2353, "column": 55 }, "identifierName": "quantizePositions" @@ -59064,29 +59180,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 82305, - "end": 82318, + "start": 82341, + "end": 82354, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 56 }, "end": { - "line": 2352, + "line": 2353, "column": 69 } }, "object": { "type": "Identifier", - "start": 82305, - "end": 82308, + "start": 82341, + "end": 82344, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 56 }, "end": { - "line": 2352, + "line": 2353, "column": 59 }, "identifierName": "cfg" @@ -59095,15 +59211,15 @@ }, "property": { "type": "Identifier", - "start": 82309, - "end": 82318, + "start": 82345, + "end": 82354, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 60 }, "end": { - "line": 2352, + "line": 2353, "column": 69 }, "identifierName": "positions" @@ -59114,15 +59230,15 @@ }, { "type": "Identifier", - "start": 82320, - "end": 82324, + "start": 82356, + "end": 82360, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 71 }, "end": { - "line": 2352, + "line": 2353, "column": 75 }, "identifierName": "aabb" @@ -59131,29 +59247,29 @@ }, { "type": "MemberExpression", - "start": 82326, - "end": 82351, + "start": 82362, + "end": 82387, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 77 }, "end": { - "line": 2352, + "line": 2353, "column": 102 } }, "object": { "type": "Identifier", - "start": 82326, - "end": 82329, + "start": 82362, + "end": 82365, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 77 }, "end": { - "line": 2352, + "line": 2353, "column": 80 }, "identifierName": "cfg" @@ -59162,15 +59278,15 @@ }, "property": { "type": "Identifier", - "start": 82330, - "end": 82351, + "start": 82366, + "end": 82387, "loc": { "start": { - "line": 2352, + "line": 2353, "column": 81 }, "end": { - "line": 2352, + "line": 2353, "column": 102 }, "identifierName": "positionsDecodeMatrix" @@ -59185,58 +59301,58 @@ }, { "type": "ExpressionStatement", - "start": 82366, - "end": 82382, + "start": 82402, + "end": 82418, "loc": { "start": { - "line": 2353, + "line": 2354, "column": 12 }, "end": { - "line": 2353, + "line": 2354, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 82366, - "end": 82381, + "start": 82402, + "end": 82417, "loc": { "start": { - "line": 2353, + "line": 2354, "column": 12 }, "end": { - "line": 2353, + "line": 2354, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 82366, - "end": 82374, + "start": 82402, + "end": 82410, "loc": { "start": { - "line": 2353, + "line": 2354, "column": 12 }, "end": { - "line": 2353, + "line": 2354, "column": 20 } }, "object": { "type": "Identifier", - "start": 82366, - "end": 82369, + "start": 82402, + "end": 82405, "loc": { "start": { - "line": 2353, + "line": 2354, "column": 12 }, "end": { - "line": 2353, + "line": 2354, "column": 15 }, "identifierName": "cfg" @@ -59245,15 +59361,15 @@ }, "property": { "type": "Identifier", - "start": 82370, - "end": 82374, + "start": 82406, + "end": 82410, "loc": { "start": { - "line": 2353, + "line": 2354, "column": 16 }, "end": { - "line": 2353, + "line": 2354, "column": 20 }, "identifierName": "aabb" @@ -59264,15 +59380,15 @@ }, "right": { "type": "Identifier", - "start": 82377, - "end": 82381, + "start": 82413, + "end": 82417, "loc": { "start": { - "line": 2353, + "line": 2354, "column": 23 }, "end": { - "line": 2353, + "line": 2354, "column": 27 }, "identifierName": "aabb" @@ -59286,43 +59402,43 @@ }, "alternate": { "type": "IfStatement", - "start": 82398, - "end": 83538, + "start": 82434, + "end": 83574, "loc": { "start": { - "line": 2354, + "line": 2355, "column": 15 }, "end": { - "line": 2376, + "line": 2377, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 82402, - "end": 82425, + "start": 82438, + "end": 82461, "loc": { "start": { - "line": 2354, + "line": 2355, "column": 19 }, "end": { - "line": 2354, + "line": 2355, "column": 42 } }, "object": { "type": "Identifier", - "start": 82402, - "end": 82405, + "start": 82438, + "end": 82441, "loc": { "start": { - "line": 2354, + "line": 2355, "column": 19 }, "end": { - "line": 2354, + "line": 2355, "column": 22 }, "identifierName": "cfg" @@ -59331,15 +59447,15 @@ }, "property": { "type": "Identifier", - "start": 82406, - "end": 82425, + "start": 82442, + "end": 82461, "loc": { "start": { - "line": 2354, + "line": 2355, "column": 23 }, "end": { - "line": 2354, + "line": 2355, "column": 42 }, "identifierName": "positionsCompressed" @@ -59350,59 +59466,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 82427, - "end": 82833, + "start": 82463, + "end": 82869, "loc": { "start": { - "line": 2354, + "line": 2355, "column": 44 }, "end": { - "line": 2361, + "line": 2362, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 82441, - "end": 82475, + "start": 82477, + "end": 82511, "loc": { "start": { - "line": 2355, + "line": 2356, "column": 12 }, "end": { - "line": 2355, + "line": 2356, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 82447, - "end": 82474, + "start": 82483, + "end": 82510, "loc": { "start": { - "line": 2355, + "line": 2356, "column": 18 }, "end": { - "line": 2355, + "line": 2356, "column": 45 } }, "id": { "type": "Identifier", - "start": 82447, - "end": 82451, + "start": 82483, + "end": 82487, "loc": { "start": { - "line": 2355, + "line": 2356, "column": 18 }, "end": { - "line": 2355, + "line": 2356, "column": 22 }, "identifierName": "aabb" @@ -59411,43 +59527,43 @@ }, "init": { "type": "CallExpression", - "start": 82454, - "end": 82474, + "start": 82490, + "end": 82510, "loc": { "start": { - "line": 2355, + "line": 2356, "column": 25 }, "end": { - "line": 2355, + "line": 2356, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 82454, - "end": 82472, + "start": 82490, + "end": 82508, "loc": { "start": { - "line": 2355, + "line": 2356, "column": 25 }, "end": { - "line": 2355, + "line": 2356, "column": 43 } }, "object": { "type": "Identifier", - "start": 82454, - "end": 82458, + "start": 82490, + "end": 82494, "loc": { "start": { - "line": 2355, + "line": 2356, "column": 25 }, "end": { - "line": 2355, + "line": 2356, "column": 29 }, "identifierName": "math" @@ -59456,15 +59572,15 @@ }, "property": { "type": "Identifier", - "start": 82459, - "end": 82472, + "start": 82495, + "end": 82508, "loc": { "start": { - "line": 2355, + "line": 2356, "column": 30 }, "end": { - "line": 2355, + "line": 2356, "column": 43 }, "identifierName": "collapseAABB3" @@ -59481,58 +59597,58 @@ }, { "type": "ExpressionStatement", - "start": 82488, - "end": 82560, + "start": 82524, + "end": 82596, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 12 }, "end": { - "line": 2356, + "line": 2357, "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 82488, - "end": 82559, + "start": 82524, + "end": 82595, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 12 }, "end": { - "line": 2356, + "line": 2357, "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 82488, - "end": 82513, + "start": 82524, + "end": 82549, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 12 }, "end": { - "line": 2356, + "line": 2357, "column": 37 } }, "object": { "type": "Identifier", - "start": 82488, - "end": 82491, + "start": 82524, + "end": 82527, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 12 }, "end": { - "line": 2356, + "line": 2357, "column": 15 }, "identifierName": "cfg" @@ -59541,15 +59657,15 @@ }, "property": { "type": "Identifier", - "start": 82492, - "end": 82513, + "start": 82528, + "end": 82549, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 16 }, "end": { - "line": 2356, + "line": 2357, "column": 37 }, "identifierName": "positionsDecodeMatrix" @@ -59560,29 +59676,29 @@ }, "right": { "type": "NewExpression", - "start": 82516, - "end": 82559, + "start": 82552, + "end": 82595, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 40 }, "end": { - "line": 2356, + "line": 2357, "column": 83 } }, "callee": { "type": "Identifier", - "start": 82520, - "end": 82532, + "start": 82556, + "end": 82568, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 44 }, "end": { - "line": 2356, + "line": 2357, "column": 56 }, "identifierName": "Float64Array" @@ -59592,29 +59708,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 82533, - "end": 82558, + "start": 82569, + "end": 82594, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 57 }, "end": { - "line": 2356, + "line": 2357, "column": 82 } }, "object": { "type": "Identifier", - "start": 82533, - "end": 82536, + "start": 82569, + "end": 82572, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 57 }, "end": { - "line": 2356, + "line": 2357, "column": 60 }, "identifierName": "cfg" @@ -59623,15 +59739,15 @@ }, "property": { "type": "Identifier", - "start": 82537, - "end": 82558, + "start": 82573, + "end": 82594, "loc": { "start": { - "line": 2356, + "line": 2357, "column": 61 }, "end": { - "line": 2356, + "line": 2357, "column": 82 }, "identifierName": "positionsDecodeMatrix" @@ -59646,58 +59762,58 @@ }, { "type": "ExpressionStatement", - "start": 82573, - "end": 82640, + "start": 82609, + "end": 82676, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 12 }, "end": { - "line": 2357, + "line": 2358, "column": 79 } }, "expression": { "type": "AssignmentExpression", - "start": 82573, - "end": 82639, + "start": 82609, + "end": 82675, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 12 }, "end": { - "line": 2357, + "line": 2358, "column": 78 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 82573, - "end": 82596, + "start": 82609, + "end": 82632, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 12 }, "end": { - "line": 2357, + "line": 2358, "column": 35 } }, "object": { "type": "Identifier", - "start": 82573, - "end": 82576, + "start": 82609, + "end": 82612, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 12 }, "end": { - "line": 2357, + "line": 2358, "column": 15 }, "identifierName": "cfg" @@ -59706,15 +59822,15 @@ }, "property": { "type": "Identifier", - "start": 82577, - "end": 82596, + "start": 82613, + "end": 82632, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 16 }, "end": { - "line": 2357, + "line": 2358, "column": 35 }, "identifierName": "positionsCompressed" @@ -59725,29 +59841,29 @@ }, "right": { "type": "NewExpression", - "start": 82599, - "end": 82639, + "start": 82635, + "end": 82675, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 38 }, "end": { - "line": 2357, + "line": 2358, "column": 78 } }, "callee": { "type": "Identifier", - "start": 82603, - "end": 82614, + "start": 82639, + "end": 82650, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 42 }, "end": { - "line": 2357, + "line": 2358, "column": 53 }, "identifierName": "Uint16Array" @@ -59757,29 +59873,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 82615, - "end": 82638, + "start": 82651, + "end": 82674, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 54 }, "end": { - "line": 2357, + "line": 2358, "column": 77 } }, "object": { "type": "Identifier", - "start": 82615, - "end": 82618, + "start": 82651, + "end": 82654, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 54 }, "end": { - "line": 2357, + "line": 2358, "column": 57 }, "identifierName": "cfg" @@ -59788,15 +59904,15 @@ }, "property": { "type": "Identifier", - "start": 82619, - "end": 82638, + "start": 82655, + "end": 82674, "loc": { "start": { - "line": 2357, + "line": 2358, "column": 58 }, "end": { - "line": 2357, + "line": 2358, "column": 77 }, "identifierName": "positionsCompressed" @@ -59811,57 +59927,57 @@ }, { "type": "ExpressionStatement", - "start": 82653, - "end": 82708, + "start": 82689, + "end": 82744, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 12 }, "end": { - "line": 2358, + "line": 2359, "column": 67 } }, "expression": { "type": "CallExpression", - "start": 82653, - "end": 82707, + "start": 82689, + "end": 82743, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 12 }, "end": { - "line": 2358, + "line": 2359, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 82653, - "end": 82676, + "start": 82689, + "end": 82712, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 12 }, "end": { - "line": 2358, + "line": 2359, "column": 35 } }, "object": { "type": "Identifier", - "start": 82653, - "end": 82657, + "start": 82689, + "end": 82693, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 12 }, "end": { - "line": 2358, + "line": 2359, "column": 16 }, "identifierName": "math" @@ -59870,15 +59986,15 @@ }, "property": { "type": "Identifier", - "start": 82658, - "end": 82676, + "start": 82694, + "end": 82712, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 17 }, "end": { - "line": 2358, + "line": 2359, "column": 35 }, "identifierName": "expandAABB3Points3" @@ -59890,15 +60006,15 @@ "arguments": [ { "type": "Identifier", - "start": 82677, - "end": 82681, + "start": 82713, + "end": 82717, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 36 }, "end": { - "line": 2358, + "line": 2359, "column": 40 }, "identifierName": "aabb" @@ -59907,29 +60023,29 @@ }, { "type": "MemberExpression", - "start": 82683, - "end": 82706, + "start": 82719, + "end": 82742, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 42 }, "end": { - "line": 2358, + "line": 2359, "column": 65 } }, "object": { "type": "Identifier", - "start": 82683, - "end": 82686, + "start": 82719, + "end": 82722, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 42 }, "end": { - "line": 2358, + "line": 2359, "column": 45 }, "identifierName": "cfg" @@ -59938,15 +60054,15 @@ }, "property": { "type": "Identifier", - "start": 82687, - "end": 82706, + "start": 82723, + "end": 82742, "loc": { "start": { - "line": 2358, + "line": 2359, "column": 46 }, "end": { - "line": 2358, + "line": 2359, "column": 65 }, "identifierName": "positionsCompressed" @@ -59960,57 +60076,57 @@ }, { "type": "ExpressionStatement", - "start": 82721, - "end": 82794, + "start": 82757, + "end": 82830, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 12 }, "end": { - "line": 2359, + "line": 2360, "column": 85 } }, "expression": { "type": "CallExpression", - "start": 82721, - "end": 82793, + "start": 82757, + "end": 82829, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 12 }, "end": { - "line": 2359, + "line": 2360, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 82721, - "end": 82760, + "start": 82757, + "end": 82796, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 12 }, "end": { - "line": 2359, + "line": 2360, "column": 51 } }, "object": { "type": "Identifier", - "start": 82721, - "end": 82745, + "start": 82757, + "end": 82781, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 12 }, "end": { - "line": 2359, + "line": 2360, "column": 36 }, "identifierName": "geometryCompressionUtils" @@ -60019,15 +60135,15 @@ }, "property": { "type": "Identifier", - "start": 82746, - "end": 82760, + "start": 82782, + "end": 82796, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 37 }, "end": { - "line": 2359, + "line": 2360, "column": 51 }, "identifierName": "decompressAABB" @@ -60039,15 +60155,15 @@ "arguments": [ { "type": "Identifier", - "start": 82761, - "end": 82765, + "start": 82797, + "end": 82801, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 52 }, "end": { - "line": 2359, + "line": 2360, "column": 56 }, "identifierName": "aabb" @@ -60056,29 +60172,29 @@ }, { "type": "MemberExpression", - "start": 82767, - "end": 82792, + "start": 82803, + "end": 82828, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 58 }, "end": { - "line": 2359, + "line": 2360, "column": 83 } }, "object": { "type": "Identifier", - "start": 82767, - "end": 82770, + "start": 82803, + "end": 82806, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 58 }, "end": { - "line": 2359, + "line": 2360, "column": 61 }, "identifierName": "cfg" @@ -60087,15 +60203,15 @@ }, "property": { "type": "Identifier", - "start": 82771, - "end": 82792, + "start": 82807, + "end": 82828, "loc": { "start": { - "line": 2359, + "line": 2360, "column": 62 }, "end": { - "line": 2359, + "line": 2360, "column": 83 }, "identifierName": "positionsDecodeMatrix" @@ -60109,58 +60225,58 @@ }, { "type": "ExpressionStatement", - "start": 82807, - "end": 82823, + "start": 82843, + "end": 82859, "loc": { "start": { - "line": 2360, + "line": 2361, "column": 12 }, "end": { - "line": 2360, + "line": 2361, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 82807, - "end": 82822, + "start": 82843, + "end": 82858, "loc": { "start": { - "line": 2360, + "line": 2361, "column": 12 }, "end": { - "line": 2360, + "line": 2361, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 82807, - "end": 82815, + "start": 82843, + "end": 82851, "loc": { "start": { - "line": 2360, + "line": 2361, "column": 12 }, "end": { - "line": 2360, + "line": 2361, "column": 20 } }, "object": { "type": "Identifier", - "start": 82807, - "end": 82810, + "start": 82843, + "end": 82846, "loc": { "start": { - "line": 2360, + "line": 2361, "column": 12 }, "end": { - "line": 2360, + "line": 2361, "column": 15 }, "identifierName": "cfg" @@ -60169,15 +60285,15 @@ }, "property": { "type": "Identifier", - "start": 82811, - "end": 82815, + "start": 82847, + "end": 82851, "loc": { "start": { - "line": 2360, + "line": 2361, "column": 16 }, "end": { - "line": 2360, + "line": 2361, "column": 20 }, "identifierName": "aabb" @@ -60188,15 +60304,15 @@ }, "right": { "type": "Identifier", - "start": 82818, - "end": 82822, + "start": 82854, + "end": 82858, "loc": { "start": { - "line": 2360, + "line": 2361, "column": 23 }, "end": { - "line": 2360, + "line": 2361, "column": 27 }, "identifierName": "aabb" @@ -60210,43 +60326,43 @@ }, "alternate": { "type": "IfStatement", - "start": 82839, - "end": 83538, + "start": 82875, + "end": 83574, "loc": { "start": { - "line": 2361, + "line": 2362, "column": 15 }, "end": { - "line": 2376, + "line": 2377, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 82843, - "end": 82854, + "start": 82879, + "end": 82890, "loc": { "start": { - "line": 2361, + "line": 2362, "column": 19 }, "end": { - "line": 2361, + "line": 2362, "column": 30 } }, "object": { "type": "Identifier", - "start": 82843, - "end": 82846, + "start": 82879, + "end": 82882, "loc": { "start": { - "line": 2361, + "line": 2362, "column": 19 }, "end": { - "line": 2361, + "line": 2362, "column": 22 }, "identifierName": "cfg" @@ -60255,15 +60371,15 @@ }, "property": { "type": "Identifier", - "start": 82847, - "end": 82854, + "start": 82883, + "end": 82890, "loc": { "start": { - "line": 2361, + "line": 2362, "column": 23 }, "end": { - "line": 2361, + "line": 2362, "column": 30 }, "identifierName": "buckets" @@ -60274,59 +60390,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 82856, - "end": 83538, + "start": 82892, + "end": 83574, "loc": { "start": { - "line": 2361, + "line": 2362, "column": 32 }, "end": { - "line": 2376, + "line": 2377, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 82870, - "end": 82904, + "start": 82906, + "end": 82940, "loc": { "start": { - "line": 2362, + "line": 2363, "column": 12 }, "end": { - "line": 2362, + "line": 2363, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 82876, - "end": 82903, + "start": 82912, + "end": 82939, "loc": { "start": { - "line": 2362, + "line": 2363, "column": 18 }, "end": { - "line": 2362, + "line": 2363, "column": 45 } }, "id": { "type": "Identifier", - "start": 82876, - "end": 82880, + "start": 82912, + "end": 82916, "loc": { "start": { - "line": 2362, + "line": 2363, "column": 18 }, "end": { - "line": 2362, + "line": 2363, "column": 22 }, "identifierName": "aabb" @@ -60335,43 +60451,43 @@ }, "init": { "type": "CallExpression", - "start": 82883, - "end": 82903, + "start": 82919, + "end": 82939, "loc": { "start": { - "line": 2362, + "line": 2363, "column": 25 }, "end": { - "line": 2362, + "line": 2363, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 82883, - "end": 82901, + "start": 82919, + "end": 82937, "loc": { "start": { - "line": 2362, + "line": 2363, "column": 25 }, "end": { - "line": 2362, + "line": 2363, "column": 43 } }, "object": { "type": "Identifier", - "start": 82883, - "end": 82887, + "start": 82919, + "end": 82923, "loc": { "start": { - "line": 2362, + "line": 2363, "column": 25 }, "end": { - "line": 2362, + "line": 2363, "column": 29 }, "identifierName": "math" @@ -60380,15 +60496,15 @@ }, "property": { "type": "Identifier", - "start": 82888, - "end": 82901, + "start": 82924, + "end": 82937, "loc": { "start": { - "line": 2362, + "line": 2363, "column": 30 }, "end": { - "line": 2362, + "line": 2363, "column": 43 }, "identifierName": "collapseAABB3" @@ -60405,87 +60521,87 @@ }, { "type": "ExpressionStatement", - "start": 82917, - "end": 82956, + "start": 82953, + "end": 82992, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 12 }, "end": { - "line": 2363, + "line": 2364, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 82917, - "end": 82955, + "start": 82953, + "end": 82991, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 12 }, "end": { - "line": 2363, + "line": 2364, "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 82917, - "end": 82941, + "start": 82953, + "end": 82977, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 12 }, "end": { - "line": 2363, + "line": 2364, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 82917, - "end": 82933, + "start": 82953, + "end": 82969, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 12 }, "end": { - "line": 2363, + "line": 2364, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 82917, - "end": 82921, + "start": 82953, + "end": 82957, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 12 }, "end": { - "line": 2363, + "line": 2364, "column": 16 } } }, "property": { "type": "Identifier", - "start": 82922, - "end": 82933, + "start": 82958, + "end": 82969, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 17 }, "end": { - "line": 2363, + "line": 2364, "column": 28 }, "identifierName": "_dtxBuckets" @@ -60496,29 +60612,29 @@ }, "property": { "type": "MemberExpression", - "start": 82934, - "end": 82940, + "start": 82970, + "end": 82976, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 29 }, "end": { - "line": 2363, + "line": 2364, "column": 35 } }, "object": { "type": "Identifier", - "start": 82934, - "end": 82937, + "start": 82970, + "end": 82973, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 29 }, "end": { - "line": 2363, + "line": 2364, "column": 32 }, "identifierName": "cfg" @@ -60527,15 +60643,15 @@ }, "property": { "type": "Identifier", - "start": 82938, - "end": 82940, + "start": 82974, + "end": 82976, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 33 }, "end": { - "line": 2363, + "line": 2364, "column": 35 }, "identifierName": "id" @@ -60548,29 +60664,29 @@ }, "right": { "type": "MemberExpression", - "start": 82944, - "end": 82955, + "start": 82980, + "end": 82991, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 39 }, "end": { - "line": 2363, + "line": 2364, "column": 50 } }, "object": { "type": "Identifier", - "start": 82944, - "end": 82947, + "start": 82980, + "end": 82983, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 39 }, "end": { - "line": 2363, + "line": 2364, "column": 42 }, "identifierName": "cfg" @@ -60579,15 +60695,15 @@ }, "property": { "type": "Identifier", - "start": 82948, - "end": 82955, + "start": 82984, + "end": 82991, "loc": { "start": { - "line": 2363, + "line": 2364, "column": 43 }, "end": { - "line": 2363, + "line": 2364, "column": 50 }, "identifierName": "buckets" @@ -60600,58 +60716,58 @@ }, { "type": "ForStatement", - "start": 82969, - "end": 83350, + "start": 83005, + "end": 83386, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 12 }, "end": { - "line": 2371, + "line": 2372, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 82974, - "end": 83009, + "start": 83010, + "end": 83045, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 17 }, "end": { - "line": 2364, + "line": 2365, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 82978, - "end": 82983, + "start": 83014, + "end": 83019, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 21 }, "end": { - "line": 2364, + "line": 2365, "column": 26 } }, "id": { "type": "Identifier", - "start": 82978, - "end": 82979, + "start": 83014, + "end": 83015, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 21 }, "end": { - "line": 2364, + "line": 2365, "column": 22 }, "identifierName": "i" @@ -60660,15 +60776,15 @@ }, "init": { "type": "NumericLiteral", - "start": 82982, - "end": 82983, + "start": 83018, + "end": 83019, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 25 }, "end": { - "line": 2364, + "line": 2365, "column": 26 } }, @@ -60681,29 +60797,29 @@ }, { "type": "VariableDeclarator", - "start": 82985, - "end": 83009, + "start": 83021, + "end": 83045, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 28 }, "end": { - "line": 2364, + "line": 2365, "column": 52 } }, "id": { "type": "Identifier", - "start": 82985, - "end": 82988, + "start": 83021, + "end": 83024, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 28 }, "end": { - "line": 2364, + "line": 2365, "column": 31 }, "identifierName": "len" @@ -60712,43 +60828,43 @@ }, "init": { "type": "MemberExpression", - "start": 82991, - "end": 83009, + "start": 83027, + "end": 83045, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 34 }, "end": { - "line": 2364, + "line": 2365, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 82991, - "end": 83002, + "start": 83027, + "end": 83038, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 34 }, "end": { - "line": 2364, + "line": 2365, "column": 45 } }, "object": { "type": "Identifier", - "start": 82991, - "end": 82994, + "start": 83027, + "end": 83030, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 34 }, "end": { - "line": 2364, + "line": 2365, "column": 37 }, "identifierName": "cfg" @@ -60757,15 +60873,15 @@ }, "property": { "type": "Identifier", - "start": 82995, - "end": 83002, + "start": 83031, + "end": 83038, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 38 }, "end": { - "line": 2364, + "line": 2365, "column": 45 }, "identifierName": "buckets" @@ -60776,15 +60892,15 @@ }, "property": { "type": "Identifier", - "start": 83003, - "end": 83009, + "start": 83039, + "end": 83045, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 46 }, "end": { - "line": 2364, + "line": 2365, "column": 52 }, "identifierName": "length" @@ -60799,29 +60915,29 @@ }, "test": { "type": "BinaryExpression", - "start": 83011, - "end": 83018, + "start": 83047, + "end": 83054, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 54 }, "end": { - "line": 2364, + "line": 2365, "column": 61 } }, "left": { "type": "Identifier", - "start": 83011, - "end": 83012, + "start": 83047, + "end": 83048, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 54 }, "end": { - "line": 2364, + "line": 2365, "column": 55 }, "identifierName": "i" @@ -60831,15 +60947,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 83015, - "end": 83018, + "start": 83051, + "end": 83054, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 58 }, "end": { - "line": 2364, + "line": 2365, "column": 61 }, "identifierName": "len" @@ -60849,15 +60965,15 @@ }, "update": { "type": "UpdateExpression", - "start": 83020, - "end": 83023, + "start": 83056, + "end": 83059, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 63 }, "end": { - "line": 2364, + "line": 2365, "column": 66 } }, @@ -60865,15 +60981,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 83020, - "end": 83021, + "start": 83056, + "end": 83057, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 63 }, "end": { - "line": 2364, + "line": 2365, "column": 64 }, "identifierName": "i" @@ -60883,59 +60999,59 @@ }, "body": { "type": "BlockStatement", - "start": 83025, - "end": 83350, + "start": 83061, + "end": 83386, "loc": { "start": { - "line": 2364, + "line": 2365, "column": 68 }, "end": { - "line": 2371, + "line": 2372, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 83043, - "end": 83073, + "start": 83079, + "end": 83109, "loc": { "start": { - "line": 2365, + "line": 2366, "column": 16 }, "end": { - "line": 2365, + "line": 2366, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 83049, - "end": 83072, + "start": 83085, + "end": 83108, "loc": { "start": { - "line": 2365, + "line": 2366, "column": 22 }, "end": { - "line": 2365, + "line": 2366, "column": 45 } }, "id": { "type": "Identifier", - "start": 83049, - "end": 83055, + "start": 83085, + "end": 83091, "loc": { "start": { - "line": 2365, + "line": 2366, "column": 22 }, "end": { - "line": 2365, + "line": 2366, "column": 28 }, "identifierName": "bucket" @@ -60944,43 +61060,43 @@ }, "init": { "type": "MemberExpression", - "start": 83058, - "end": 83072, + "start": 83094, + "end": 83108, "loc": { "start": { - "line": 2365, + "line": 2366, "column": 31 }, "end": { - "line": 2365, + "line": 2366, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 83058, - "end": 83069, + "start": 83094, + "end": 83105, "loc": { "start": { - "line": 2365, + "line": 2366, "column": 31 }, "end": { - "line": 2365, + "line": 2366, "column": 42 } }, "object": { "type": "Identifier", - "start": 83058, - "end": 83061, + "start": 83094, + "end": 83097, "loc": { "start": { - "line": 2365, + "line": 2366, "column": 31 }, "end": { - "line": 2365, + "line": 2366, "column": 34 }, "identifierName": "cfg" @@ -60989,15 +61105,15 @@ }, "property": { "type": "Identifier", - "start": 83062, - "end": 83069, + "start": 83098, + "end": 83105, "loc": { "start": { - "line": 2365, + "line": 2366, "column": 35 }, "end": { - "line": 2365, + "line": 2366, "column": 42 }, "identifierName": "buckets" @@ -61008,15 +61124,15 @@ }, "property": { "type": "Identifier", - "start": 83070, - "end": 83071, + "start": 83106, + "end": 83107, "loc": { "start": { - "line": 2365, + "line": 2366, "column": 43 }, "end": { - "line": 2365, + "line": 2366, "column": 44 }, "identifierName": "i" @@ -61031,43 +61147,43 @@ }, { "type": "IfStatement", - "start": 83090, - "end": 83336, + "start": 83126, + "end": 83372, "loc": { "start": { - "line": 2366, + "line": 2367, "column": 16 }, "end": { - "line": 2370, + "line": 2371, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 83094, - "end": 83110, + "start": 83130, + "end": 83146, "loc": { "start": { - "line": 2366, + "line": 2367, "column": 20 }, "end": { - "line": 2366, + "line": 2367, "column": 36 } }, "object": { "type": "Identifier", - "start": 83094, - "end": 83100, + "start": 83130, + "end": 83136, "loc": { "start": { - "line": 2366, + "line": 2367, "column": 20 }, "end": { - "line": 2366, + "line": 2367, "column": 26 }, "identifierName": "bucket" @@ -61076,15 +61192,15 @@ }, "property": { "type": "Identifier", - "start": 83101, - "end": 83110, + "start": 83137, + "end": 83146, "loc": { "start": { - "line": 2366, + "line": 2367, "column": 27 }, "end": { - "line": 2366, + "line": 2367, "column": 36 }, "identifierName": "positions" @@ -61095,72 +61211,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 83112, - "end": 83200, + "start": 83148, + "end": 83236, "loc": { "start": { - "line": 2366, + "line": 2367, "column": 38 }, "end": { - "line": 2368, + "line": 2369, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 83134, - "end": 83182, + "start": 83170, + "end": 83218, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 20 }, "end": { - "line": 2367, + "line": 2368, "column": 68 } }, "expression": { "type": "CallExpression", - "start": 83134, - "end": 83181, + "start": 83170, + "end": 83217, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 20 }, "end": { - "line": 2367, + "line": 2368, "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 83134, - "end": 83157, + "start": 83170, + "end": 83193, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 20 }, "end": { - "line": 2367, + "line": 2368, "column": 43 } }, "object": { "type": "Identifier", - "start": 83134, - "end": 83138, + "start": 83170, + "end": 83174, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 20 }, "end": { - "line": 2367, + "line": 2368, "column": 24 }, "identifierName": "math" @@ -61169,15 +61285,15 @@ }, "property": { "type": "Identifier", - "start": 83139, - "end": 83157, + "start": 83175, + "end": 83193, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 25 }, "end": { - "line": 2367, + "line": 2368, "column": 43 }, "identifierName": "expandAABB3Points3" @@ -61189,15 +61305,15 @@ "arguments": [ { "type": "Identifier", - "start": 83158, - "end": 83162, + "start": 83194, + "end": 83198, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 44 }, "end": { - "line": 2367, + "line": 2368, "column": 48 }, "identifierName": "aabb" @@ -61206,29 +61322,29 @@ }, { "type": "MemberExpression", - "start": 83164, - "end": 83180, + "start": 83200, + "end": 83216, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 50 }, "end": { - "line": 2367, + "line": 2368, "column": 66 } }, "object": { "type": "Identifier", - "start": 83164, - "end": 83170, + "start": 83200, + "end": 83206, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 50 }, "end": { - "line": 2367, + "line": 2368, "column": 56 }, "identifierName": "bucket" @@ -61237,15 +61353,15 @@ }, "property": { "type": "Identifier", - "start": 83171, - "end": 83180, + "start": 83207, + "end": 83216, "loc": { "start": { - "line": 2367, + "line": 2368, "column": 57 }, "end": { - "line": 2367, + "line": 2368, "column": 66 }, "identifierName": "positions" @@ -61262,43 +61378,43 @@ }, "alternate": { "type": "IfStatement", - "start": 83206, - "end": 83336, + "start": 83242, + "end": 83372, "loc": { "start": { - "line": 2368, + "line": 2369, "column": 23 }, "end": { - "line": 2370, + "line": 2371, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 83210, - "end": 83236, + "start": 83246, + "end": 83272, "loc": { "start": { - "line": 2368, + "line": 2369, "column": 27 }, "end": { - "line": 2368, + "line": 2369, "column": 53 } }, "object": { "type": "Identifier", - "start": 83210, - "end": 83216, + "start": 83246, + "end": 83252, "loc": { "start": { - "line": 2368, + "line": 2369, "column": 27 }, "end": { - "line": 2368, + "line": 2369, "column": 33 }, "identifierName": "bucket" @@ -61307,15 +61423,15 @@ }, "property": { "type": "Identifier", - "start": 83217, - "end": 83236, + "start": 83253, + "end": 83272, "loc": { "start": { - "line": 2368, + "line": 2369, "column": 34 }, "end": { - "line": 2368, + "line": 2369, "column": 53 }, "identifierName": "positionsCompressed" @@ -61326,72 +61442,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 83238, - "end": 83336, + "start": 83274, + "end": 83372, "loc": { "start": { - "line": 2368, + "line": 2369, "column": 55 }, "end": { - "line": 2370, + "line": 2371, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 83260, - "end": 83318, + "start": 83296, + "end": 83354, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 20 }, "end": { - "line": 2369, + "line": 2370, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 83260, - "end": 83317, + "start": 83296, + "end": 83353, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 20 }, "end": { - "line": 2369, + "line": 2370, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 83260, - "end": 83283, + "start": 83296, + "end": 83319, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 20 }, "end": { - "line": 2369, + "line": 2370, "column": 43 } }, "object": { "type": "Identifier", - "start": 83260, - "end": 83264, + "start": 83296, + "end": 83300, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 20 }, "end": { - "line": 2369, + "line": 2370, "column": 24 }, "identifierName": "math" @@ -61400,15 +61516,15 @@ }, "property": { "type": "Identifier", - "start": 83265, - "end": 83283, + "start": 83301, + "end": 83319, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 25 }, "end": { - "line": 2369, + "line": 2370, "column": 43 }, "identifierName": "expandAABB3Points3" @@ -61420,15 +61536,15 @@ "arguments": [ { "type": "Identifier", - "start": 83284, - "end": 83288, + "start": 83320, + "end": 83324, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 44 }, "end": { - "line": 2369, + "line": 2370, "column": 48 }, "identifierName": "aabb" @@ -61437,29 +61553,29 @@ }, { "type": "MemberExpression", - "start": 83290, - "end": 83316, + "start": 83326, + "end": 83352, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 50 }, "end": { - "line": 2369, + "line": 2370, "column": 76 } }, "object": { "type": "Identifier", - "start": 83290, - "end": 83296, + "start": 83326, + "end": 83332, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 50 }, "end": { - "line": 2369, + "line": 2370, "column": 56 }, "identifierName": "bucket" @@ -61468,15 +61584,15 @@ }, "property": { "type": "Identifier", - "start": 83297, - "end": 83316, + "start": 83333, + "end": 83352, "loc": { "start": { - "line": 2369, + "line": 2370, "column": 57 }, "end": { - "line": 2369, + "line": 2370, "column": 76 }, "identifierName": "positionsCompressed" @@ -61500,43 +61616,43 @@ }, { "type": "IfStatement", - "start": 83363, - "end": 83499, + "start": 83399, + "end": 83535, "loc": { "start": { - "line": 2372, + "line": 2373, "column": 12 }, "end": { - "line": 2374, + "line": 2375, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 83367, - "end": 83392, + "start": 83403, + "end": 83428, "loc": { "start": { - "line": 2372, + "line": 2373, "column": 16 }, "end": { - "line": 2372, + "line": 2373, "column": 41 } }, "object": { "type": "Identifier", - "start": 83367, - "end": 83370, + "start": 83403, + "end": 83406, "loc": { "start": { - "line": 2372, + "line": 2373, "column": 16 }, "end": { - "line": 2372, + "line": 2373, "column": 19 }, "identifierName": "cfg" @@ -61545,15 +61661,15 @@ }, "property": { "type": "Identifier", - "start": 83371, - "end": 83392, + "start": 83407, + "end": 83428, "loc": { "start": { - "line": 2372, + "line": 2373, "column": 20 }, "end": { - "line": 2372, + "line": 2373, "column": 41 }, "identifierName": "positionsDecodeMatrix" @@ -61564,72 +61680,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 83394, - "end": 83499, + "start": 83430, + "end": 83535, "loc": { "start": { - "line": 2372, + "line": 2373, "column": 43 }, "end": { - "line": 2374, + "line": 2375, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 83412, - "end": 83485, + "start": 83448, + "end": 83521, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 16 }, "end": { - "line": 2373, + "line": 2374, "column": 89 } }, "expression": { "type": "CallExpression", - "start": 83412, - "end": 83484, + "start": 83448, + "end": 83520, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 16 }, "end": { - "line": 2373, + "line": 2374, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 83412, - "end": 83451, + "start": 83448, + "end": 83487, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 16 }, "end": { - "line": 2373, + "line": 2374, "column": 55 } }, "object": { "type": "Identifier", - "start": 83412, - "end": 83436, + "start": 83448, + "end": 83472, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 16 }, "end": { - "line": 2373, + "line": 2374, "column": 40 }, "identifierName": "geometryCompressionUtils" @@ -61638,15 +61754,15 @@ }, "property": { "type": "Identifier", - "start": 83437, - "end": 83451, + "start": 83473, + "end": 83487, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 41 }, "end": { - "line": 2373, + "line": 2374, "column": 55 }, "identifierName": "decompressAABB" @@ -61658,15 +61774,15 @@ "arguments": [ { "type": "Identifier", - "start": 83452, - "end": 83456, + "start": 83488, + "end": 83492, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 56 }, "end": { - "line": 2373, + "line": 2374, "column": 60 }, "identifierName": "aabb" @@ -61675,29 +61791,29 @@ }, { "type": "MemberExpression", - "start": 83458, - "end": 83483, + "start": 83494, + "end": 83519, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 62 }, "end": { - "line": 2373, + "line": 2374, "column": 87 } }, "object": { "type": "Identifier", - "start": 83458, - "end": 83461, + "start": 83494, + "end": 83497, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 62 }, "end": { - "line": 2373, + "line": 2374, "column": 65 }, "identifierName": "cfg" @@ -61706,15 +61822,15 @@ }, "property": { "type": "Identifier", - "start": 83462, - "end": 83483, + "start": 83498, + "end": 83519, "loc": { "start": { - "line": 2373, + "line": 2374, "column": 66 }, "end": { - "line": 2373, + "line": 2374, "column": 87 }, "identifierName": "positionsDecodeMatrix" @@ -61733,58 +61849,58 @@ }, { "type": "ExpressionStatement", - "start": 83512, - "end": 83528, + "start": 83548, + "end": 83564, "loc": { "start": { - "line": 2375, + "line": 2376, "column": 12 }, "end": { - "line": 2375, + "line": 2376, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 83512, - "end": 83527, + "start": 83548, + "end": 83563, "loc": { "start": { - "line": 2375, + "line": 2376, "column": 12 }, "end": { - "line": 2375, + "line": 2376, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 83512, - "end": 83520, + "start": 83548, + "end": 83556, "loc": { "start": { - "line": 2375, + "line": 2376, "column": 12 }, "end": { - "line": 2375, + "line": 2376, "column": 20 } }, "object": { "type": "Identifier", - "start": 83512, - "end": 83515, + "start": 83548, + "end": 83551, "loc": { "start": { - "line": 2375, + "line": 2376, "column": 12 }, "end": { - "line": 2375, + "line": 2376, "column": 15 }, "identifierName": "cfg" @@ -61793,15 +61909,15 @@ }, "property": { "type": "Identifier", - "start": 83516, - "end": 83520, + "start": 83552, + "end": 83556, "loc": { "start": { - "line": 2375, + "line": 2376, "column": 16 }, "end": { - "line": 2375, + "line": 2376, "column": 20 }, "identifierName": "aabb" @@ -61812,15 +61928,15 @@ }, "right": { "type": "Identifier", - "start": 83523, - "end": 83527, + "start": 83559, + "end": 83563, "loc": { "start": { - "line": 2375, + "line": 2376, "column": 23 }, "end": { - "line": 2375, + "line": 2376, "column": 27 }, "identifierName": "aabb" @@ -61838,57 +61954,57 @@ }, { "type": "IfStatement", - "start": 83547, - "end": 84044, + "start": 83583, + "end": 84080, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 8 }, "end": { - "line": 2386, + "line": 2387, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 83551, - "end": 83606, + "start": 83587, + "end": 83642, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 12 }, "end": { - "line": 2377, + "line": 2378, "column": 67 } }, "left": { "type": "MemberExpression", - "start": 83551, - "end": 83571, + "start": 83587, + "end": 83607, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 12 }, "end": { - "line": 2377, + "line": 2378, "column": 32 } }, "object": { "type": "Identifier", - "start": 83551, - "end": 83554, + "start": 83587, + "end": 83590, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 12 }, "end": { - "line": 2377, + "line": 2378, "column": 15 }, "identifierName": "cfg" @@ -61897,15 +62013,15 @@ }, "property": { "type": "Identifier", - "start": 83555, - "end": 83571, + "start": 83591, + "end": 83607, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 16 }, "end": { - "line": 2377, + "line": 2378, "column": 32 }, "identifierName": "colorsCompressed" @@ -61917,57 +62033,57 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 83575, - "end": 83606, + "start": 83611, + "end": 83642, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 36 }, "end": { - "line": 2377, + "line": 2378, "column": 67 } }, "left": { "type": "MemberExpression", - "start": 83575, - "end": 83602, + "start": 83611, + "end": 83638, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 36 }, "end": { - "line": 2377, + "line": 2378, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 83575, - "end": 83595, + "start": 83611, + "end": 83631, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 36 }, "end": { - "line": 2377, + "line": 2378, "column": 56 } }, "object": { "type": "Identifier", - "start": 83575, - "end": 83578, + "start": 83611, + "end": 83614, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 36 }, "end": { - "line": 2377, + "line": 2378, "column": 39 }, "identifierName": "cfg" @@ -61976,15 +62092,15 @@ }, "property": { "type": "Identifier", - "start": 83579, - "end": 83595, + "start": 83615, + "end": 83631, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 40 }, "end": { - "line": 2377, + "line": 2378, "column": 56 }, "identifierName": "colorsCompressed" @@ -61995,15 +62111,15 @@ }, "property": { "type": "Identifier", - "start": 83596, - "end": 83602, + "start": 83632, + "end": 83638, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 57 }, "end": { - "line": 2377, + "line": 2378, "column": 63 }, "identifierName": "length" @@ -62015,15 +62131,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 83605, - "end": 83606, + "start": 83641, + "end": 83642, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 66 }, "end": { - "line": 2377, + "line": 2378, "column": 67 } }, @@ -62037,73 +62153,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 83608, - "end": 83692, + "start": 83644, + "end": 83728, "loc": { "start": { - "line": 2377, + "line": 2378, "column": 69 }, "end": { - "line": 2379, + "line": 2380, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 83622, - "end": 83682, + "start": 83658, + "end": 83718, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 12 }, "end": { - "line": 2378, + "line": 2379, "column": 72 } }, "expression": { "type": "AssignmentExpression", - "start": 83622, - "end": 83681, + "start": 83658, + "end": 83717, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 12 }, "end": { - "line": 2378, + "line": 2379, "column": 71 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 83622, - "end": 83642, + "start": 83658, + "end": 83678, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 12 }, "end": { - "line": 2378, + "line": 2379, "column": 32 } }, "object": { "type": "Identifier", - "start": 83622, - "end": 83625, + "start": 83658, + "end": 83661, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 12 }, "end": { - "line": 2378, + "line": 2379, "column": 15 }, "identifierName": "cfg" @@ -62112,15 +62228,15 @@ }, "property": { "type": "Identifier", - "start": 83626, - "end": 83642, + "start": 83662, + "end": 83678, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 16 }, "end": { - "line": 2378, + "line": 2379, "column": 32 }, "identifierName": "colorsCompressed" @@ -62131,29 +62247,29 @@ }, "right": { "type": "NewExpression", - "start": 83645, - "end": 83681, + "start": 83681, + "end": 83717, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 35 }, "end": { - "line": 2378, + "line": 2379, "column": 71 } }, "callee": { "type": "Identifier", - "start": 83649, - "end": 83659, + "start": 83685, + "end": 83695, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 39 }, "end": { - "line": 2378, + "line": 2379, "column": 49 }, "identifierName": "Uint8Array" @@ -62163,29 +62279,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 83660, - "end": 83680, + "start": 83696, + "end": 83716, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 50 }, "end": { - "line": 2378, + "line": 2379, "column": 70 } }, "object": { "type": "Identifier", - "start": 83660, - "end": 83663, + "start": 83696, + "end": 83699, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 50 }, "end": { - "line": 2378, + "line": 2379, "column": 53 }, "identifierName": "cfg" @@ -62194,15 +62310,15 @@ }, "property": { "type": "Identifier", - "start": 83664, - "end": 83680, + "start": 83700, + "end": 83716, "loc": { "start": { - "line": 2378, + "line": 2379, "column": 54 }, "end": { - "line": 2378, + "line": 2379, "column": 70 }, "identifierName": "colorsCompressed" @@ -62220,57 +62336,57 @@ }, "alternate": { "type": "IfStatement", - "start": 83698, - "end": 84044, + "start": 83734, + "end": 84080, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 15 }, "end": { - "line": 2386, + "line": 2387, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 83702, - "end": 83737, + "start": 83738, + "end": 83773, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 19 }, "end": { - "line": 2379, + "line": 2380, "column": 54 } }, "left": { "type": "MemberExpression", - "start": 83702, - "end": 83712, + "start": 83738, + "end": 83748, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 19 }, "end": { - "line": 2379, + "line": 2380, "column": 29 } }, "object": { "type": "Identifier", - "start": 83702, - "end": 83705, + "start": 83738, + "end": 83741, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 19 }, "end": { - "line": 2379, + "line": 2380, "column": 22 }, "identifierName": "cfg" @@ -62279,15 +62395,15 @@ }, "property": { "type": "Identifier", - "start": 83706, - "end": 83712, + "start": 83742, + "end": 83748, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 23 }, "end": { - "line": 2379, + "line": 2380, "column": 29 }, "identifierName": "colors" @@ -62299,57 +62415,57 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 83716, - "end": 83737, + "start": 83752, + "end": 83773, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 33 }, "end": { - "line": 2379, + "line": 2380, "column": 54 } }, "left": { "type": "MemberExpression", - "start": 83716, - "end": 83733, + "start": 83752, + "end": 83769, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 33 }, "end": { - "line": 2379, + "line": 2380, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 83716, - "end": 83726, + "start": 83752, + "end": 83762, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 33 }, "end": { - "line": 2379, + "line": 2380, "column": 43 } }, "object": { "type": "Identifier", - "start": 83716, - "end": 83719, + "start": 83752, + "end": 83755, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 33 }, "end": { - "line": 2379, + "line": 2380, "column": 36 }, "identifierName": "cfg" @@ -62358,15 +62474,15 @@ }, "property": { "type": "Identifier", - "start": 83720, - "end": 83726, + "start": 83756, + "end": 83762, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 37 }, "end": { - "line": 2379, + "line": 2380, "column": 43 }, "identifierName": "colors" @@ -62377,15 +62493,15 @@ }, "property": { "type": "Identifier", - "start": 83727, - "end": 83733, + "start": 83763, + "end": 83769, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 44 }, "end": { - "line": 2379, + "line": 2380, "column": 50 }, "identifierName": "length" @@ -62397,15 +62513,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 83736, - "end": 83737, + "start": 83772, + "end": 83773, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 53 }, "end": { - "line": 2379, + "line": 2380, "column": 54 } }, @@ -62419,59 +62535,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 83739, - "end": 84044, + "start": 83775, + "end": 84080, "loc": { "start": { - "line": 2379, + "line": 2380, "column": 56 }, "end": { - "line": 2386, + "line": 2387, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 83753, - "end": 83779, + "start": 83789, + "end": 83815, "loc": { "start": { - "line": 2380, + "line": 2381, "column": 12 }, "end": { - "line": 2380, + "line": 2381, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 83759, - "end": 83778, + "start": 83795, + "end": 83814, "loc": { "start": { - "line": 2380, + "line": 2381, "column": 18 }, "end": { - "line": 2380, + "line": 2381, "column": 37 } }, "id": { "type": "Identifier", - "start": 83759, - "end": 83765, + "start": 83795, + "end": 83801, "loc": { "start": { - "line": 2380, + "line": 2381, "column": 18 }, "end": { - "line": 2380, + "line": 2381, "column": 24 }, "identifierName": "colors" @@ -62480,29 +62596,29 @@ }, "init": { "type": "MemberExpression", - "start": 83768, - "end": 83778, + "start": 83804, + "end": 83814, "loc": { "start": { - "line": 2380, + "line": 2381, "column": 27 }, "end": { - "line": 2380, + "line": 2381, "column": 37 } }, "object": { "type": "Identifier", - "start": 83768, - "end": 83771, + "start": 83804, + "end": 83807, "loc": { "start": { - "line": 2380, + "line": 2381, "column": 27 }, "end": { - "line": 2380, + "line": 2381, "column": 30 }, "identifierName": "cfg" @@ -62511,15 +62627,15 @@ }, "property": { "type": "Identifier", - "start": 83772, - "end": 83778, + "start": 83808, + "end": 83814, "loc": { "start": { - "line": 2380, + "line": 2381, "column": 31 }, "end": { - "line": 2380, + "line": 2381, "column": 37 }, "identifierName": "colors" @@ -62534,44 +62650,44 @@ }, { "type": "VariableDeclaration", - "start": 83792, - "end": 83847, + "start": 83828, + "end": 83883, "loc": { "start": { - "line": 2381, + "line": 2382, "column": 12 }, "end": { - "line": 2381, + "line": 2382, "column": 67 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 83798, - "end": 83846, + "start": 83834, + "end": 83882, "loc": { "start": { - "line": 2381, + "line": 2382, "column": 18 }, "end": { - "line": 2381, + "line": 2382, "column": 66 } }, "id": { "type": "Identifier", - "start": 83798, - "end": 83814, + "start": 83834, + "end": 83850, "loc": { "start": { - "line": 2381, + "line": 2382, "column": 18 }, "end": { - "line": 2381, + "line": 2382, "column": 34 }, "identifierName": "colorsCompressed" @@ -62580,29 +62696,29 @@ }, "init": { "type": "NewExpression", - "start": 83817, - "end": 83846, + "start": 83853, + "end": 83882, "loc": { "start": { - "line": 2381, + "line": 2382, "column": 37 }, "end": { - "line": 2381, + "line": 2382, "column": 66 } }, "callee": { "type": "Identifier", - "start": 83821, - "end": 83831, + "start": 83857, + "end": 83867, "loc": { "start": { - "line": 2381, + "line": 2382, "column": 41 }, "end": { - "line": 2381, + "line": 2382, "column": 51 }, "identifierName": "Uint8Array" @@ -62612,29 +62728,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 83832, - "end": 83845, + "start": 83868, + "end": 83881, "loc": { "start": { - "line": 2381, + "line": 2382, "column": 52 }, "end": { - "line": 2381, + "line": 2382, "column": 65 } }, "object": { "type": "Identifier", - "start": 83832, - "end": 83838, + "start": 83868, + "end": 83874, "loc": { "start": { - "line": 2381, + "line": 2382, "column": 52 }, "end": { - "line": 2381, + "line": 2382, "column": 58 }, "identifierName": "colors" @@ -62643,15 +62759,15 @@ }, "property": { "type": "Identifier", - "start": 83839, - "end": 83845, + "start": 83875, + "end": 83881, "loc": { "start": { - "line": 2381, + "line": 2382, "column": 59 }, "end": { - "line": 2381, + "line": 2382, "column": 65 }, "identifierName": "length" @@ -62668,58 +62784,58 @@ }, { "type": "ForStatement", - "start": 83860, - "end": 83981, + "start": 83896, + "end": 84017, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 12 }, "end": { - "line": 2384, + "line": 2385, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 83865, - "end": 83895, + "start": 83901, + "end": 83931, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 17 }, "end": { - "line": 2382, + "line": 2383, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 83869, - "end": 83874, + "start": 83905, + "end": 83910, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 21 }, "end": { - "line": 2382, + "line": 2383, "column": 26 } }, "id": { "type": "Identifier", - "start": 83869, - "end": 83870, + "start": 83905, + "end": 83906, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 21 }, "end": { - "line": 2382, + "line": 2383, "column": 22 }, "identifierName": "i" @@ -62728,15 +62844,15 @@ }, "init": { "type": "NumericLiteral", - "start": 83873, - "end": 83874, + "start": 83909, + "end": 83910, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 25 }, "end": { - "line": 2382, + "line": 2383, "column": 26 } }, @@ -62749,29 +62865,29 @@ }, { "type": "VariableDeclarator", - "start": 83876, - "end": 83895, + "start": 83912, + "end": 83931, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 28 }, "end": { - "line": 2382, + "line": 2383, "column": 47 } }, "id": { "type": "Identifier", - "start": 83876, - "end": 83879, + "start": 83912, + "end": 83915, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 28 }, "end": { - "line": 2382, + "line": 2383, "column": 31 }, "identifierName": "len" @@ -62780,29 +62896,29 @@ }, "init": { "type": "MemberExpression", - "start": 83882, - "end": 83895, + "start": 83918, + "end": 83931, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 34 }, "end": { - "line": 2382, + "line": 2383, "column": 47 } }, "object": { "type": "Identifier", - "start": 83882, - "end": 83888, + "start": 83918, + "end": 83924, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 34 }, "end": { - "line": 2382, + "line": 2383, "column": 40 }, "identifierName": "colors" @@ -62811,15 +62927,15 @@ }, "property": { "type": "Identifier", - "start": 83889, - "end": 83895, + "start": 83925, + "end": 83931, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 41 }, "end": { - "line": 2382, + "line": 2383, "column": 47 }, "identifierName": "length" @@ -62834,29 +62950,29 @@ }, "test": { "type": "BinaryExpression", - "start": 83897, - "end": 83904, + "start": 83933, + "end": 83940, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 49 }, "end": { - "line": 2382, + "line": 2383, "column": 56 } }, "left": { "type": "Identifier", - "start": 83897, - "end": 83898, + "start": 83933, + "end": 83934, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 49 }, "end": { - "line": 2382, + "line": 2383, "column": 50 }, "identifierName": "i" @@ -62866,15 +62982,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 83901, - "end": 83904, + "start": 83937, + "end": 83940, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 53 }, "end": { - "line": 2382, + "line": 2383, "column": 56 }, "identifierName": "len" @@ -62884,15 +63000,15 @@ }, "update": { "type": "UpdateExpression", - "start": 83906, - "end": 83909, + "start": 83942, + "end": 83945, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 58 }, "end": { - "line": 2382, + "line": 2383, "column": 61 } }, @@ -62900,15 +63016,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 83906, - "end": 83907, + "start": 83942, + "end": 83943, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 58 }, "end": { - "line": 2382, + "line": 2383, "column": 59 }, "identifierName": "i" @@ -62918,73 +63034,73 @@ }, "body": { "type": "BlockStatement", - "start": 83911, - "end": 83981, + "start": 83947, + "end": 84017, "loc": { "start": { - "line": 2382, + "line": 2383, "column": 63 }, "end": { - "line": 2384, + "line": 2385, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 83929, - "end": 83967, + "start": 83965, + "end": 84003, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 16 }, "end": { - "line": 2383, + "line": 2384, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 83929, - "end": 83966, + "start": 83965, + "end": 84002, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 16 }, "end": { - "line": 2383, + "line": 2384, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 83929, - "end": 83948, + "start": 83965, + "end": 83984, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 16 }, "end": { - "line": 2383, + "line": 2384, "column": 35 } }, "object": { "type": "Identifier", - "start": 83929, - "end": 83945, + "start": 83965, + "end": 83981, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 16 }, "end": { - "line": 2383, + "line": 2384, "column": 32 }, "identifierName": "colorsCompressed" @@ -62993,15 +63109,15 @@ }, "property": { "type": "Identifier", - "start": 83946, - "end": 83947, + "start": 83982, + "end": 83983, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 33 }, "end": { - "line": 2383, + "line": 2384, "column": 34 }, "identifierName": "i" @@ -63012,43 +63128,43 @@ }, "right": { "type": "BinaryExpression", - "start": 83951, - "end": 83966, + "start": 83987, + "end": 84002, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 38 }, "end": { - "line": 2383, + "line": 2384, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 83951, - "end": 83960, + "start": 83987, + "end": 83996, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 38 }, "end": { - "line": 2383, + "line": 2384, "column": 47 } }, "object": { "type": "Identifier", - "start": 83951, - "end": 83957, + "start": 83987, + "end": 83993, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 38 }, "end": { - "line": 2383, + "line": 2384, "column": 44 }, "identifierName": "colors" @@ -63057,15 +63173,15 @@ }, "property": { "type": "Identifier", - "start": 83958, - "end": 83959, + "start": 83994, + "end": 83995, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 45 }, "end": { - "line": 2383, + "line": 2384, "column": 46 }, "identifierName": "i" @@ -63077,15 +63193,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 83963, - "end": 83966, + "start": 83999, + "end": 84002, "loc": { "start": { - "line": 2383, + "line": 2384, "column": 50 }, "end": { - "line": 2383, + "line": 2384, "column": 53 } }, @@ -63104,58 +63220,58 @@ }, { "type": "ExpressionStatement", - "start": 83994, - "end": 84034, + "start": 84030, + "end": 84070, "loc": { "start": { - "line": 2385, + "line": 2386, "column": 12 }, "end": { - "line": 2385, + "line": 2386, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 83994, - "end": 84033, + "start": 84030, + "end": 84069, "loc": { "start": { - "line": 2385, + "line": 2386, "column": 12 }, "end": { - "line": 2385, + "line": 2386, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 83994, - "end": 84014, + "start": 84030, + "end": 84050, "loc": { "start": { - "line": 2385, + "line": 2386, "column": 12 }, "end": { - "line": 2385, + "line": 2386, "column": 32 } }, "object": { "type": "Identifier", - "start": 83994, - "end": 83997, + "start": 84030, + "end": 84033, "loc": { "start": { - "line": 2385, + "line": 2386, "column": 12 }, "end": { - "line": 2385, + "line": 2386, "column": 15 }, "identifierName": "cfg" @@ -63164,15 +63280,15 @@ }, "property": { "type": "Identifier", - "start": 83998, - "end": 84014, + "start": 84034, + "end": 84050, "loc": { "start": { - "line": 2385, + "line": 2386, "column": 16 }, "end": { - "line": 2385, + "line": 2386, "column": 32 }, "identifierName": "colorsCompressed" @@ -63183,15 +63299,15 @@ }, "right": { "type": "Identifier", - "start": 84017, - "end": 84033, + "start": 84053, + "end": 84069, "loc": { "start": { - "line": 2385, + "line": 2386, "column": 35 }, "end": { - "line": 2385, + "line": 2386, "column": 51 }, "identifierName": "colorsCompressed" @@ -63208,57 +63324,57 @@ }, { "type": "IfStatement", - "start": 84053, - "end": 84478, + "start": 84089, + "end": 84514, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 8 }, "end": { - "line": 2393, + "line": 2394, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 84057, - "end": 84184, + "start": 84093, + "end": 84220, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 12 }, "end": { - "line": 2387, + "line": 2388, "column": 139 } }, "left": { "type": "LogicalExpression", - "start": 84057, - "end": 84089, + "start": 84093, + "end": 84125, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 12 }, "end": { - "line": 2387, + "line": 2388, "column": 44 } }, "left": { "type": "UnaryExpression", - "start": 84057, - "end": 84069, + "start": 84093, + "end": 84105, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 12 }, "end": { - "line": 2387, + "line": 2388, "column": 24 } }, @@ -63266,29 +63382,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 84058, - "end": 84069, + "start": 84094, + "end": 84105, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 13 }, "end": { - "line": 2387, + "line": 2388, "column": 24 } }, "object": { "type": "Identifier", - "start": 84058, - "end": 84061, + "start": 84094, + "end": 84097, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 13 }, "end": { - "line": 2387, + "line": 2388, "column": 16 }, "identifierName": "cfg" @@ -63297,15 +63413,15 @@ }, "property": { "type": "Identifier", - "start": 84062, - "end": 84069, + "start": 84098, + "end": 84105, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 17 }, "end": { - "line": 2387, + "line": 2388, "column": 24 }, "identifierName": "buckets" @@ -63321,15 +63437,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 84073, - "end": 84089, + "start": 84109, + "end": 84125, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 28 }, "end": { - "line": 2387, + "line": 2388, "column": 44 } }, @@ -63337,29 +63453,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 84074, - "end": 84089, + "start": 84110, + "end": 84125, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 29 }, "end": { - "line": 2387, + "line": 2388, "column": 44 } }, "object": { "type": "Identifier", - "start": 84074, - "end": 84077, + "start": 84110, + "end": 84113, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 29 }, "end": { - "line": 2387, + "line": 2388, "column": 32 }, "identifierName": "cfg" @@ -63368,15 +63484,15 @@ }, "property": { "type": "Identifier", - "start": 84078, - "end": 84089, + "start": 84114, + "end": 84125, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 33 }, "end": { - "line": 2387, + "line": 2388, "column": 44 }, "identifierName": "edgeIndices" @@ -63393,71 +63509,71 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 84094, - "end": 84183, + "start": 84130, + "end": 84219, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 49 }, "end": { - "line": 2387, + "line": 2388, "column": 138 } }, "left": { "type": "LogicalExpression", - "start": 84094, - "end": 84152, + "start": 84130, + "end": 84188, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 49 }, "end": { - "line": 2387, + "line": 2388, "column": 107 } }, "left": { "type": "BinaryExpression", - "start": 84094, - "end": 84123, + "start": 84130, + "end": 84159, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 49 }, "end": { - "line": 2387, + "line": 2388, "column": 78 } }, "left": { "type": "MemberExpression", - "start": 84094, - "end": 84107, + "start": 84130, + "end": 84143, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 49 }, "end": { - "line": 2387, + "line": 2388, "column": 62 } }, "object": { "type": "Identifier", - "start": 84094, - "end": 84097, + "start": 84130, + "end": 84133, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 49 }, "end": { - "line": 2387, + "line": 2388, "column": 52 }, "identifierName": "cfg" @@ -63466,15 +63582,15 @@ }, "property": { "type": "Identifier", - "start": 84098, - "end": 84107, + "start": 84134, + "end": 84143, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 53 }, "end": { - "line": 2387, + "line": 2388, "column": 62 }, "identifierName": "primitive" @@ -63486,15 +63602,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 84112, - "end": 84123, + "start": 84148, + "end": 84159, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 67 }, "end": { - "line": 2387, + "line": 2388, "column": 78 } }, @@ -63508,43 +63624,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 84127, - "end": 84152, + "start": 84163, + "end": 84188, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 82 }, "end": { - "line": 2387, + "line": 2388, "column": 107 } }, "left": { "type": "MemberExpression", - "start": 84127, - "end": 84140, + "start": 84163, + "end": 84176, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 82 }, "end": { - "line": 2387, + "line": 2388, "column": 95 } }, "object": { "type": "Identifier", - "start": 84127, - "end": 84130, + "start": 84163, + "end": 84166, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 82 }, "end": { - "line": 2387, + "line": 2388, "column": 85 }, "identifierName": "cfg" @@ -63553,15 +63669,15 @@ }, "property": { "type": "Identifier", - "start": 84131, - "end": 84140, + "start": 84167, + "end": 84176, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 86 }, "end": { - "line": 2387, + "line": 2388, "column": 95 }, "identifierName": "primitive" @@ -63573,15 +63689,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 84145, - "end": 84152, + "start": 84181, + "end": 84188, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 100 }, "end": { - "line": 2387, + "line": 2388, "column": 107 } }, @@ -63596,43 +63712,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 84156, - "end": 84183, + "start": 84192, + "end": 84219, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 111 }, "end": { - "line": 2387, + "line": 2388, "column": 138 } }, "left": { "type": "MemberExpression", - "start": 84156, - "end": 84169, + "start": 84192, + "end": 84205, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 111 }, "end": { - "line": 2387, + "line": 2388, "column": 124 } }, "object": { "type": "Identifier", - "start": 84156, - "end": 84159, + "start": 84192, + "end": 84195, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 111 }, "end": { - "line": 2387, + "line": 2388, "column": 114 }, "identifierName": "cfg" @@ -63641,15 +63757,15 @@ }, "property": { "type": "Identifier", - "start": 84160, - "end": 84169, + "start": 84196, + "end": 84205, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 115 }, "end": { - "line": 2387, + "line": 2388, "column": 124 }, "identifierName": "primitive" @@ -63661,15 +63777,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 84174, - "end": 84183, + "start": 84210, + "end": 84219, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 129 }, "end": { - "line": 2387, + "line": 2388, "column": 138 } }, @@ -63682,64 +63798,64 @@ }, "extra": { "parenthesized": true, - "parenStart": 84093 + "parenStart": 84129 } } }, "consequent": { "type": "BlockStatement", - "start": 84186, - "end": 84478, + "start": 84222, + "end": 84514, "loc": { "start": { - "line": 2387, + "line": 2388, "column": 141 }, "end": { - "line": 2393, + "line": 2394, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 84200, - "end": 84468, + "start": 84236, + "end": 84504, "loc": { "start": { - "line": 2388, + "line": 2389, "column": 12 }, "end": { - "line": 2392, + "line": 2393, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 84204, - "end": 84217, + "start": 84240, + "end": 84253, "loc": { "start": { - "line": 2388, + "line": 2389, "column": 16 }, "end": { - "line": 2388, + "line": 2389, "column": 29 } }, "object": { "type": "Identifier", - "start": 84204, - "end": 84207, + "start": 84240, + "end": 84243, "loc": { "start": { - "line": 2388, + "line": 2389, "column": 16 }, "end": { - "line": 2388, + "line": 2389, "column": 19 }, "identifierName": "cfg" @@ -63748,15 +63864,15 @@ }, "property": { "type": "Identifier", - "start": 84208, - "end": 84217, + "start": 84244, + "end": 84253, "loc": { "start": { - "line": 2388, + "line": 2389, "column": 20 }, "end": { - "line": 2388, + "line": 2389, "column": 29 }, "identifierName": "positions" @@ -63767,73 +63883,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 84219, - "end": 84325, + "start": 84255, + "end": 84361, "loc": { "start": { - "line": 2388, + "line": 2389, "column": 31 }, "end": { - "line": 2390, + "line": 2391, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 84237, - "end": 84311, + "start": 84273, + "end": 84347, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 16 }, "end": { - "line": 2389, + "line": 2390, "column": 90 } }, "expression": { "type": "AssignmentExpression", - "start": 84237, - "end": 84310, + "start": 84273, + "end": 84346, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 16 }, "end": { - "line": 2389, + "line": 2390, "column": 89 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 84237, - "end": 84252, + "start": 84273, + "end": 84288, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 16 }, "end": { - "line": 2389, + "line": 2390, "column": 31 } }, "object": { "type": "Identifier", - "start": 84237, - "end": 84240, + "start": 84273, + "end": 84276, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 16 }, "end": { - "line": 2389, + "line": 2390, "column": 19 }, "identifierName": "cfg" @@ -63842,15 +63958,15 @@ }, "property": { "type": "Identifier", - "start": 84241, - "end": 84252, + "start": 84277, + "end": 84288, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 20 }, "end": { - "line": 2389, + "line": 2390, "column": 31 }, "identifierName": "edgeIndices" @@ -63861,29 +63977,29 @@ }, "right": { "type": "CallExpression", - "start": 84255, - "end": 84310, + "start": 84291, + "end": 84346, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 34 }, "end": { - "line": 2389, + "line": 2390, "column": 89 } }, "callee": { "type": "Identifier", - "start": 84255, - "end": 84271, + "start": 84291, + "end": 84307, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 34 }, "end": { - "line": 2389, + "line": 2390, "column": 50 }, "identifierName": "buildEdgeIndices" @@ -63893,29 +64009,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 84272, - "end": 84285, + "start": 84308, + "end": 84321, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 51 }, "end": { - "line": 2389, + "line": 2390, "column": 64 } }, "object": { "type": "Identifier", - "start": 84272, - "end": 84275, + "start": 84308, + "end": 84311, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 51 }, "end": { - "line": 2389, + "line": 2390, "column": 54 }, "identifierName": "cfg" @@ -63924,15 +64040,15 @@ }, "property": { "type": "Identifier", - "start": 84276, - "end": 84285, + "start": 84312, + "end": 84321, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 55 }, "end": { - "line": 2389, + "line": 2390, "column": 64 }, "identifierName": "positions" @@ -63943,29 +64059,29 @@ }, { "type": "MemberExpression", - "start": 84287, - "end": 84298, + "start": 84323, + "end": 84334, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 66 }, "end": { - "line": 2389, + "line": 2390, "column": 77 } }, "object": { "type": "Identifier", - "start": 84287, - "end": 84290, + "start": 84323, + "end": 84326, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 66 }, "end": { - "line": 2389, + "line": 2390, "column": 69 }, "identifierName": "cfg" @@ -63974,15 +64090,15 @@ }, "property": { "type": "Identifier", - "start": 84291, - "end": 84298, + "start": 84327, + "end": 84334, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 70 }, "end": { - "line": 2389, + "line": 2390, "column": 77 }, "identifierName": "indices" @@ -63993,30 +64109,30 @@ }, { "type": "NullLiteral", - "start": 84300, - "end": 84304, + "start": 84336, + "end": 84340, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 79 }, "end": { - "line": 2389, + "line": 2390, "column": 83 } } }, { "type": "NumericLiteral", - "start": 84306, - "end": 84309, + "start": 84342, + "end": 84345, "loc": { "start": { - "line": 2389, + "line": 2390, "column": 85 }, "end": { - "line": 2389, + "line": 2390, "column": 88 } }, @@ -64035,73 +64151,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 84331, - "end": 84468, + "start": 84367, + "end": 84504, "loc": { "start": { - "line": 2390, + "line": 2391, "column": 19 }, "end": { - "line": 2392, + "line": 2393, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 84349, - "end": 84454, + "start": 84385, + "end": 84490, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 16 }, "end": { - "line": 2391, + "line": 2392, "column": 121 } }, "expression": { "type": "AssignmentExpression", - "start": 84349, - "end": 84453, + "start": 84385, + "end": 84489, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 16 }, "end": { - "line": 2391, + "line": 2392, "column": 120 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 84349, - "end": 84364, + "start": 84385, + "end": 84400, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 16 }, "end": { - "line": 2391, + "line": 2392, "column": 31 } }, "object": { "type": "Identifier", - "start": 84349, - "end": 84352, + "start": 84385, + "end": 84388, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 16 }, "end": { - "line": 2391, + "line": 2392, "column": 19 }, "identifierName": "cfg" @@ -64110,15 +64226,15 @@ }, "property": { "type": "Identifier", - "start": 84353, - "end": 84364, + "start": 84389, + "end": 84400, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 20 }, "end": { - "line": 2391, + "line": 2392, "column": 31 }, "identifierName": "edgeIndices" @@ -64129,29 +64245,29 @@ }, "right": { "type": "CallExpression", - "start": 84367, - "end": 84453, + "start": 84403, + "end": 84489, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 34 }, "end": { - "line": 2391, + "line": 2392, "column": 120 } }, "callee": { "type": "Identifier", - "start": 84367, - "end": 84383, + "start": 84403, + "end": 84419, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 34 }, "end": { - "line": 2391, + "line": 2392, "column": 50 }, "identifierName": "buildEdgeIndices" @@ -64161,29 +64277,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 84384, - "end": 84407, + "start": 84420, + "end": 84443, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 51 }, "end": { - "line": 2391, + "line": 2392, "column": 74 } }, "object": { "type": "Identifier", - "start": 84384, - "end": 84387, + "start": 84420, + "end": 84423, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 51 }, "end": { - "line": 2391, + "line": 2392, "column": 54 }, "identifierName": "cfg" @@ -64192,15 +64308,15 @@ }, "property": { "type": "Identifier", - "start": 84388, - "end": 84407, + "start": 84424, + "end": 84443, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 55 }, "end": { - "line": 2391, + "line": 2392, "column": 74 }, "identifierName": "positionsCompressed" @@ -64211,29 +64327,29 @@ }, { "type": "MemberExpression", - "start": 84409, - "end": 84420, + "start": 84445, + "end": 84456, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 76 }, "end": { - "line": 2391, + "line": 2392, "column": 87 } }, "object": { "type": "Identifier", - "start": 84409, - "end": 84412, + "start": 84445, + "end": 84448, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 76 }, "end": { - "line": 2391, + "line": 2392, "column": 79 }, "identifierName": "cfg" @@ -64242,15 +64358,15 @@ }, "property": { "type": "Identifier", - "start": 84413, - "end": 84420, + "start": 84449, + "end": 84456, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 80 }, "end": { - "line": 2391, + "line": 2392, "column": 87 }, "identifierName": "indices" @@ -64261,29 +64377,29 @@ }, { "type": "MemberExpression", - "start": 84422, - "end": 84447, + "start": 84458, + "end": 84483, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 89 }, "end": { - "line": 2391, + "line": 2392, "column": 114 } }, "object": { "type": "Identifier", - "start": 84422, - "end": 84425, + "start": 84458, + "end": 84461, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 89 }, "end": { - "line": 2391, + "line": 2392, "column": 92 }, "identifierName": "cfg" @@ -64292,15 +64408,15 @@ }, "property": { "type": "Identifier", - "start": 84426, - "end": 84447, + "start": 84462, + "end": 84483, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 93 }, "end": { - "line": 2391, + "line": 2392, "column": 114 }, "identifierName": "positionsDecodeMatrix" @@ -64311,15 +64427,15 @@ }, { "type": "NumericLiteral", - "start": 84449, - "end": 84452, + "start": 84485, + "end": 84488, "loc": { "start": { - "line": 2391, + "line": 2392, "column": 116 }, "end": { - "line": 2391, + "line": 2392, "column": 119 } }, @@ -64344,43 +64460,43 @@ }, { "type": "IfStatement", - "start": 84487, - "end": 84959, + "start": 84523, + "end": 84995, "loc": { "start": { - "line": 2394, + "line": 2395, "column": 8 }, "end": { - "line": 2402, + "line": 2403, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 84491, - "end": 84497, + "start": 84527, + "end": 84533, "loc": { "start": { - "line": 2394, + "line": 2395, "column": 12 }, "end": { - "line": 2394, + "line": 2395, "column": 18 } }, "object": { "type": "Identifier", - "start": 84491, - "end": 84494, + "start": 84527, + "end": 84530, "loc": { "start": { - "line": 2394, + "line": 2395, "column": 12 }, "end": { - "line": 2394, + "line": 2395, "column": 15 }, "identifierName": "cfg" @@ -64389,15 +64505,15 @@ }, "property": { "type": "Identifier", - "start": 84495, - "end": 84497, + "start": 84531, + "end": 84533, "loc": { "start": { - "line": 2394, + "line": 2395, "column": 16 }, "end": { - "line": 2394, + "line": 2395, "column": 18 }, "identifierName": "uv" @@ -64408,59 +64524,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 84499, - "end": 84783, + "start": 84535, + "end": 84819, "loc": { "start": { - "line": 2394, + "line": 2395, "column": 20 }, "end": { - "line": 2399, + "line": 2400, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 84513, - "end": 84573, + "start": 84549, + "end": 84609, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 12 }, "end": { - "line": 2395, + "line": 2396, "column": 72 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 84519, - "end": 84572, + "start": 84555, + "end": 84608, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 18 }, "end": { - "line": 2395, + "line": 2396, "column": 71 } }, "id": { "type": "Identifier", - "start": 84519, - "end": 84525, + "start": 84555, + "end": 84561, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 18 }, "end": { - "line": 2395, + "line": 2396, "column": 24 }, "identifierName": "bounds" @@ -64469,43 +64585,43 @@ }, "init": { "type": "CallExpression", - "start": 84528, - "end": 84572, + "start": 84564, + "end": 84608, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 27 }, "end": { - "line": 2395, + "line": 2396, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 84528, - "end": 84564, + "start": 84564, + "end": 84600, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 27 }, "end": { - "line": 2395, + "line": 2396, "column": 63 } }, "object": { "type": "Identifier", - "start": 84528, - "end": 84552, + "start": 84564, + "end": 84588, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 27 }, "end": { - "line": 2395, + "line": 2396, "column": 51 }, "identifierName": "geometryCompressionUtils" @@ -64514,15 +64630,15 @@ }, "property": { "type": "Identifier", - "start": 84553, - "end": 84564, + "start": 84589, + "end": 84600, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 52 }, "end": { - "line": 2395, + "line": 2396, "column": 63 }, "identifierName": "getUVBounds" @@ -64534,29 +64650,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 84565, - "end": 84571, + "start": 84601, + "end": 84607, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 64 }, "end": { - "line": 2395, + "line": 2396, "column": 70 } }, "object": { "type": "Identifier", - "start": 84565, - "end": 84568, + "start": 84601, + "end": 84604, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 64 }, "end": { - "line": 2395, + "line": 2396, "column": 67 }, "identifierName": "cfg" @@ -64565,15 +64681,15 @@ }, "property": { "type": "Identifier", - "start": 84569, - "end": 84571, + "start": 84605, + "end": 84607, "loc": { "start": { - "line": 2395, + "line": 2396, "column": 68 }, "end": { - "line": 2395, + "line": 2396, "column": 70 }, "identifierName": "uv" @@ -64590,44 +64706,44 @@ }, { "type": "VariableDeclaration", - "start": 84586, - "end": 84670, + "start": 84622, + "end": 84706, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 12 }, "end": { - "line": 2396, + "line": 2397, "column": 96 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 84592, - "end": 84669, + "start": 84628, + "end": 84705, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 18 }, "end": { - "line": 2396, + "line": 2397, "column": 95 } }, "id": { "type": "Identifier", - "start": 84592, - "end": 84598, + "start": 84628, + "end": 84634, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 18 }, "end": { - "line": 2396, + "line": 2397, "column": 24 }, "identifierName": "result" @@ -64636,43 +64752,43 @@ }, "init": { "type": "CallExpression", - "start": 84601, - "end": 84669, + "start": 84637, + "end": 84705, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 27 }, "end": { - "line": 2396, + "line": 2397, "column": 95 } }, "callee": { "type": "MemberExpression", - "start": 84601, - "end": 84637, + "start": 84637, + "end": 84673, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 27 }, "end": { - "line": 2396, + "line": 2397, "column": 63 } }, "object": { "type": "Identifier", - "start": 84601, - "end": 84625, + "start": 84637, + "end": 84661, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 27 }, "end": { - "line": 2396, + "line": 2397, "column": 51 }, "identifierName": "geometryCompressionUtils" @@ -64681,15 +64797,15 @@ }, "property": { "type": "Identifier", - "start": 84626, - "end": 84637, + "start": 84662, + "end": 84673, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 52 }, "end": { - "line": 2396, + "line": 2397, "column": 63 }, "identifierName": "compressUVs" @@ -64701,29 +64817,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 84638, - "end": 84644, + "start": 84674, + "end": 84680, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 64 }, "end": { - "line": 2396, + "line": 2397, "column": 70 } }, "object": { "type": "Identifier", - "start": 84638, - "end": 84641, + "start": 84674, + "end": 84677, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 64 }, "end": { - "line": 2396, + "line": 2397, "column": 67 }, "identifierName": "cfg" @@ -64732,15 +64848,15 @@ }, "property": { "type": "Identifier", - "start": 84642, - "end": 84644, + "start": 84678, + "end": 84680, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 68 }, "end": { - "line": 2396, + "line": 2397, "column": 70 }, "identifierName": "uv" @@ -64751,29 +64867,29 @@ }, { "type": "MemberExpression", - "start": 84646, - "end": 84656, + "start": 84682, + "end": 84692, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 72 }, "end": { - "line": 2396, + "line": 2397, "column": 82 } }, "object": { "type": "Identifier", - "start": 84646, - "end": 84652, + "start": 84682, + "end": 84688, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 72 }, "end": { - "line": 2396, + "line": 2397, "column": 78 }, "identifierName": "bounds" @@ -64782,15 +64898,15 @@ }, "property": { "type": "Identifier", - "start": 84653, - "end": 84656, + "start": 84689, + "end": 84692, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 79 }, "end": { - "line": 2396, + "line": 2397, "column": 82 }, "identifierName": "min" @@ -64801,29 +64917,29 @@ }, { "type": "MemberExpression", - "start": 84658, - "end": 84668, + "start": 84694, + "end": 84704, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 84 }, "end": { - "line": 2396, + "line": 2397, "column": 94 } }, "object": { "type": "Identifier", - "start": 84658, - "end": 84664, + "start": 84694, + "end": 84700, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 84 }, "end": { - "line": 2396, + "line": 2397, "column": 90 }, "identifierName": "bounds" @@ -64832,15 +64948,15 @@ }, "property": { "type": "Identifier", - "start": 84665, - "end": 84668, + "start": 84701, + "end": 84704, "loc": { "start": { - "line": 2396, + "line": 2397, "column": 91 }, "end": { - "line": 2396, + "line": 2397, "column": 94 }, "identifierName": "max" @@ -64857,58 +64973,58 @@ }, { "type": "ExpressionStatement", - "start": 84683, - "end": 84719, + "start": 84719, + "end": 84755, "loc": { "start": { - "line": 2397, + "line": 2398, "column": 12 }, "end": { - "line": 2397, + "line": 2398, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 84683, - "end": 84718, + "start": 84719, + "end": 84754, "loc": { "start": { - "line": 2397, + "line": 2398, "column": 12 }, "end": { - "line": 2397, + "line": 2398, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 84683, - "end": 84699, + "start": 84719, + "end": 84735, "loc": { "start": { - "line": 2397, + "line": 2398, "column": 12 }, "end": { - "line": 2397, + "line": 2398, "column": 28 } }, "object": { "type": "Identifier", - "start": 84683, - "end": 84686, + "start": 84719, + "end": 84722, "loc": { "start": { - "line": 2397, + "line": 2398, "column": 12 }, "end": { - "line": 2397, + "line": 2398, "column": 15 }, "identifierName": "cfg" @@ -64917,15 +65033,15 @@ }, "property": { "type": "Identifier", - "start": 84687, - "end": 84699, + "start": 84723, + "end": 84735, "loc": { "start": { - "line": 2397, + "line": 2398, "column": 16 }, "end": { - "line": 2397, + "line": 2398, "column": 28 }, "identifierName": "uvCompressed" @@ -64936,29 +65052,29 @@ }, "right": { "type": "MemberExpression", - "start": 84702, - "end": 84718, + "start": 84738, + "end": 84754, "loc": { "start": { - "line": 2397, + "line": 2398, "column": 31 }, "end": { - "line": 2397, + "line": 2398, "column": 47 } }, "object": { "type": "Identifier", - "start": 84702, - "end": 84708, + "start": 84738, + "end": 84744, "loc": { "start": { - "line": 2397, + "line": 2398, "column": 31 }, "end": { - "line": 2397, + "line": 2398, "column": 37 }, "identifierName": "result" @@ -64967,15 +65083,15 @@ }, "property": { "type": "Identifier", - "start": 84709, - "end": 84718, + "start": 84745, + "end": 84754, "loc": { "start": { - "line": 2397, + "line": 2398, "column": 38 }, "end": { - "line": 2397, + "line": 2398, "column": 47 }, "identifierName": "quantized" @@ -64988,58 +65104,58 @@ }, { "type": "ExpressionStatement", - "start": 84732, - "end": 84773, + "start": 84768, + "end": 84809, "loc": { "start": { - "line": 2398, + "line": 2399, "column": 12 }, "end": { - "line": 2398, + "line": 2399, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 84732, - "end": 84772, + "start": 84768, + "end": 84808, "loc": { "start": { - "line": 2398, + "line": 2399, "column": 12 }, "end": { - "line": 2398, + "line": 2399, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 84732, - "end": 84750, + "start": 84768, + "end": 84786, "loc": { "start": { - "line": 2398, + "line": 2399, "column": 12 }, "end": { - "line": 2398, + "line": 2399, "column": 30 } }, "object": { "type": "Identifier", - "start": 84732, - "end": 84735, + "start": 84768, + "end": 84771, "loc": { "start": { - "line": 2398, + "line": 2399, "column": 12 }, "end": { - "line": 2398, + "line": 2399, "column": 15 }, "identifierName": "cfg" @@ -65048,15 +65164,15 @@ }, "property": { "type": "Identifier", - "start": 84736, - "end": 84750, + "start": 84772, + "end": 84786, "loc": { "start": { - "line": 2398, + "line": 2399, "column": 16 }, "end": { - "line": 2398, + "line": 2399, "column": 30 }, "identifierName": "uvDecodeMatrix" @@ -65067,29 +65183,29 @@ }, "right": { "type": "MemberExpression", - "start": 84753, - "end": 84772, + "start": 84789, + "end": 84808, "loc": { "start": { - "line": 2398, + "line": 2399, "column": 33 }, "end": { - "line": 2398, + "line": 2399, "column": 52 } }, "object": { "type": "Identifier", - "start": 84753, - "end": 84759, + "start": 84789, + "end": 84795, "loc": { "start": { - "line": 2398, + "line": 2399, "column": 33 }, "end": { - "line": 2398, + "line": 2399, "column": 39 }, "identifierName": "result" @@ -65098,15 +65214,15 @@ }, "property": { "type": "Identifier", - "start": 84760, - "end": 84772, + "start": 84796, + "end": 84808, "loc": { "start": { - "line": 2398, + "line": 2399, "column": 40 }, "end": { - "line": 2398, + "line": 2399, "column": 52 }, "identifierName": "decodeMatrix" @@ -65122,43 +65238,43 @@ }, "alternate": { "type": "IfStatement", - "start": 84789, - "end": 84959, + "start": 84825, + "end": 84995, "loc": { "start": { - "line": 2399, + "line": 2400, "column": 15 }, "end": { - "line": 2402, + "line": 2403, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 84793, - "end": 84809, + "start": 84829, + "end": 84845, "loc": { "start": { - "line": 2399, + "line": 2400, "column": 19 }, "end": { - "line": 2399, + "line": 2400, "column": 35 } }, "object": { "type": "Identifier", - "start": 84793, - "end": 84796, + "start": 84829, + "end": 84832, "loc": { "start": { - "line": 2399, + "line": 2400, "column": 19 }, "end": { - "line": 2399, + "line": 2400, "column": 22 }, "identifierName": "cfg" @@ -65167,15 +65283,15 @@ }, "property": { "type": "Identifier", - "start": 84797, - "end": 84809, + "start": 84833, + "end": 84845, "loc": { "start": { - "line": 2399, + "line": 2400, "column": 23 }, "end": { - "line": 2399, + "line": 2400, "column": 35 }, "identifierName": "uvCompressed" @@ -65186,188 +65302,23 @@ }, "consequent": { "type": "BlockStatement", - "start": 84811, - "end": 84959, + "start": 84847, + "end": 84995, "loc": { "start": { - "line": 2399, + "line": 2400, "column": 37 }, "end": { - "line": 2402, + "line": 2403, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 84825, - "end": 84878, - "loc": { - "start": { - "line": 2400, - "column": 12 - }, - "end": { - "line": 2400, - "column": 65 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 84825, - "end": 84877, - "loc": { - "start": { - "line": 2400, - "column": 12 - }, - "end": { - "line": 2400, - "column": 64 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 84825, - "end": 84841, - "loc": { - "start": { - "line": 2400, - "column": 12 - }, - "end": { - "line": 2400, - "column": 28 - } - }, - "object": { - "type": "Identifier", - "start": 84825, - "end": 84828, - "loc": { - "start": { - "line": 2400, - "column": 12 - }, - "end": { - "line": 2400, - "column": 15 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 84829, - "end": 84841, - "loc": { - "start": { - "line": 2400, - "column": 16 - }, - "end": { - "line": 2400, - "column": 28 - }, - "identifierName": "uvCompressed" - }, - "name": "uvCompressed" - }, - "computed": false - }, - "right": { - "type": "NewExpression", - "start": 84844, - "end": 84877, - "loc": { - "start": { - "line": 2400, - "column": 31 - }, - "end": { - "line": 2400, - "column": 64 - } - }, - "callee": { - "type": "Identifier", - "start": 84848, - "end": 84859, - "loc": { - "start": { - "line": 2400, - "column": 35 - }, - "end": { - "line": 2400, - "column": 46 - }, - "identifierName": "Uint16Array" - }, - "name": "Uint16Array" - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 84860, - "end": 84876, - "loc": { - "start": { - "line": 2400, - "column": 47 - }, - "end": { - "line": 2400, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 84860, - "end": 84863, - "loc": { - "start": { - "line": 2400, - "column": 47 - }, - "end": { - "line": 2400, - "column": 50 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 84864, - "end": 84876, - "loc": { - "start": { - "line": 2400, - "column": 51 - }, - "end": { - "line": 2400, - "column": 63 - }, - "identifierName": "uvCompressed" - }, - "name": "uvCompressed" - }, - "computed": false - } - ] - } - } - }, - { - "type": "ExpressionStatement", - "start": 84891, - "end": 84949, + "start": 84861, + "end": 84914, "loc": { "start": { "line": 2401, @@ -65375,13 +65326,13 @@ }, "end": { "line": 2401, - "column": 70 + "column": 65 } }, "expression": { "type": "AssignmentExpression", - "start": 84891, - "end": 84948, + "start": 84861, + "end": 84913, "loc": { "start": { "line": 2401, @@ -65389,14 +65340,14 @@ }, "end": { "line": 2401, - "column": 69 + "column": 64 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 84891, - "end": 84909, + "start": 84861, + "end": 84877, "loc": { "start": { "line": 2401, @@ -65404,13 +65355,13 @@ }, "end": { "line": 2401, - "column": 30 + "column": 28 } }, "object": { "type": "Identifier", - "start": 84891, - "end": 84894, + "start": 84861, + "end": 84864, "loc": { "start": { "line": 2401, @@ -65426,8 +65377,8 @@ }, "property": { "type": "Identifier", - "start": 84895, - "end": 84909, + "start": 84865, + "end": 84877, "loc": { "start": { "line": 2401, @@ -65435,6 +65386,171 @@ }, "end": { "line": 2401, + "column": 28 + }, + "identifierName": "uvCompressed" + }, + "name": "uvCompressed" + }, + "computed": false + }, + "right": { + "type": "NewExpression", + "start": 84880, + "end": 84913, + "loc": { + "start": { + "line": 2401, + "column": 31 + }, + "end": { + "line": 2401, + "column": 64 + } + }, + "callee": { + "type": "Identifier", + "start": 84884, + "end": 84895, + "loc": { + "start": { + "line": 2401, + "column": 35 + }, + "end": { + "line": 2401, + "column": 46 + }, + "identifierName": "Uint16Array" + }, + "name": "Uint16Array" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 84896, + "end": 84912, + "loc": { + "start": { + "line": 2401, + "column": 47 + }, + "end": { + "line": 2401, + "column": 63 + } + }, + "object": { + "type": "Identifier", + "start": 84896, + "end": 84899, + "loc": { + "start": { + "line": 2401, + "column": 47 + }, + "end": { + "line": 2401, + "column": 50 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 84900, + "end": 84912, + "loc": { + "start": { + "line": 2401, + "column": 51 + }, + "end": { + "line": 2401, + "column": 63 + }, + "identifierName": "uvCompressed" + }, + "name": "uvCompressed" + }, + "computed": false + } + ] + } + } + }, + { + "type": "ExpressionStatement", + "start": 84927, + "end": 84985, + "loc": { + "start": { + "line": 2402, + "column": 12 + }, + "end": { + "line": 2402, + "column": 70 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 84927, + "end": 84984, + "loc": { + "start": { + "line": 2402, + "column": 12 + }, + "end": { + "line": 2402, + "column": 69 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 84927, + "end": 84945, + "loc": { + "start": { + "line": 2402, + "column": 12 + }, + "end": { + "line": 2402, + "column": 30 + } + }, + "object": { + "type": "Identifier", + "start": 84927, + "end": 84930, + "loc": { + "start": { + "line": 2402, + "column": 12 + }, + "end": { + "line": 2402, + "column": 15 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 84931, + "end": 84945, + "loc": { + "start": { + "line": 2402, + "column": 16 + }, + "end": { + "line": 2402, "column": 30 }, "identifierName": "uvDecodeMatrix" @@ -65445,29 +65561,29 @@ }, "right": { "type": "NewExpression", - "start": 84912, - "end": 84948, + "start": 84948, + "end": 84984, "loc": { "start": { - "line": 2401, + "line": 2402, "column": 33 }, "end": { - "line": 2401, + "line": 2402, "column": 69 } }, "callee": { "type": "Identifier", - "start": 84916, - "end": 84928, + "start": 84952, + "end": 84964, "loc": { "start": { - "line": 2401, + "line": 2402, "column": 37 }, "end": { - "line": 2401, + "line": 2402, "column": 49 }, "identifierName": "Float64Array" @@ -65477,29 +65593,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 84929, - "end": 84947, + "start": 84965, + "end": 84983, "loc": { "start": { - "line": 2401, + "line": 2402, "column": 50 }, "end": { - "line": 2401, + "line": 2402, "column": 68 } }, "object": { "type": "Identifier", - "start": 84929, - "end": 84932, + "start": 84965, + "end": 84968, "loc": { "start": { - "line": 2401, + "line": 2402, "column": 50 }, "end": { - "line": 2401, + "line": 2402, "column": 53 }, "identifierName": "cfg" @@ -65508,15 +65624,15 @@ }, "property": { "type": "Identifier", - "start": 84933, - "end": 84947, + "start": 84969, + "end": 84983, "loc": { "start": { - "line": 2401, + "line": 2402, "column": 54 }, "end": { - "line": 2401, + "line": 2402, "column": 68 }, "identifierName": "uvDecodeMatrix" @@ -65537,43 +65653,43 @@ }, { "type": "IfStatement", - "start": 84968, - "end": 85036, + "start": 85004, + "end": 85072, "loc": { "start": { - "line": 2403, + "line": 2404, "column": 8 }, "end": { - "line": 2405, + "line": 2406, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 84972, - "end": 84983, + "start": 85008, + "end": 85019, "loc": { "start": { - "line": 2403, + "line": 2404, "column": 12 }, "end": { - "line": 2403, + "line": 2404, "column": 23 } }, "object": { "type": "Identifier", - "start": 84972, - "end": 84975, + "start": 85008, + "end": 85011, "loc": { "start": { - "line": 2403, + "line": 2404, "column": 12 }, "end": { - "line": 2403, + "line": 2404, "column": 15 }, "identifierName": "cfg" @@ -65582,15 +65698,15 @@ }, "property": { "type": "Identifier", - "start": 84976, - "end": 84983, + "start": 85012, + "end": 85019, "loc": { "start": { - "line": 2403, + "line": 2404, "column": 16 }, "end": { - "line": 2403, + "line": 2404, "column": 23 }, "identifierName": "normals" @@ -65601,73 +65717,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 84985, - "end": 85036, + "start": 85021, + "end": 85072, "loc": { "start": { - "line": 2403, + "line": 2404, "column": 25 }, "end": { - "line": 2405, + "line": 2406, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 85007, - "end": 85026, + "start": 85043, + "end": 85062, "loc": { "start": { - "line": 2404, + "line": 2405, "column": 12 }, "end": { - "line": 2404, + "line": 2405, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 85007, - "end": 85025, + "start": 85043, + "end": 85061, "loc": { "start": { - "line": 2404, + "line": 2405, "column": 12 }, "end": { - "line": 2404, + "line": 2405, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 85007, - "end": 85018, + "start": 85043, + "end": 85054, "loc": { "start": { - "line": 2404, + "line": 2405, "column": 12 }, "end": { - "line": 2404, + "line": 2405, "column": 23 } }, "object": { "type": "Identifier", - "start": 85007, - "end": 85010, + "start": 85043, + "end": 85046, "loc": { "start": { - "line": 2404, + "line": 2405, "column": 12 }, "end": { - "line": 2404, + "line": 2405, "column": 15 }, "identifierName": "cfg" @@ -65677,15 +65793,15 @@ }, "property": { "type": "Identifier", - "start": 85011, - "end": 85018, + "start": 85047, + "end": 85054, "loc": { "start": { - "line": 2404, + "line": 2405, "column": 16 }, "end": { - "line": 2404, + "line": 2405, "column": 23 }, "identifierName": "normals" @@ -65697,15 +65813,15 @@ }, "right": { "type": "NullLiteral", - "start": 85021, - "end": 85025, + "start": 85057, + "end": 85061, "loc": { "start": { - "line": 2404, + "line": 2405, "column": 26 }, "end": { - "line": 2404, + "line": 2405, "column": 30 } } @@ -65716,15 +65832,15 @@ { "type": "CommentLine", "value": " HACK", - "start": 84987, - "end": 84994, + "start": 85023, + "end": 85030, "loc": { "start": { - "line": 2403, + "line": 2404, "column": 27 }, "end": { - "line": 2403, + "line": 2404, "column": 34 } } @@ -65738,87 +65854,87 @@ }, { "type": "ExpressionStatement", - "start": 85045, - "end": 85077, + "start": 85081, + "end": 85113, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 8 }, "end": { - "line": 2406, + "line": 2407, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 85045, - "end": 85076, + "start": 85081, + "end": 85112, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 8 }, "end": { - "line": 2406, + "line": 2407, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 85045, - "end": 85070, + "start": 85081, + "end": 85106, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 8 }, "end": { - "line": 2406, + "line": 2407, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 85045, - "end": 85061, + "start": 85081, + "end": 85097, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 8 }, "end": { - "line": 2406, + "line": 2407, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 85045, - "end": 85049, + "start": 85081, + "end": 85085, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 8 }, "end": { - "line": 2406, + "line": 2407, "column": 12 } } }, "property": { "type": "Identifier", - "start": 85050, - "end": 85061, + "start": 85086, + "end": 85097, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 13 }, "end": { - "line": 2406, + "line": 2407, "column": 24 }, "identifierName": "_geometries" @@ -65829,29 +65945,29 @@ }, "property": { "type": "MemberExpression", - "start": 85063, - "end": 85069, + "start": 85099, + "end": 85105, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 26 }, "end": { - "line": 2406, + "line": 2407, "column": 32 } }, "object": { "type": "Identifier", - "start": 85063, - "end": 85066, + "start": 85099, + "end": 85102, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 26 }, "end": { - "line": 2406, + "line": 2407, "column": 29 }, "identifierName": "cfg" @@ -65860,15 +65976,15 @@ }, "property": { "type": "Identifier", - "start": 85067, - "end": 85069, + "start": 85103, + "end": 85105, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 30 }, "end": { - "line": 2406, + "line": 2407, "column": 32 }, "identifierName": "id" @@ -65881,15 +65997,15 @@ }, "right": { "type": "Identifier", - "start": 85073, - "end": 85076, + "start": 85109, + "end": 85112, "loc": { "start": { - "line": 2406, + "line": 2407, "column": 36 }, "end": { - "line": 2406, + "line": 2407, "column": 39 }, "identifierName": "cfg" @@ -65900,73 +66016,73 @@ }, { "type": "ExpressionStatement", - "start": 85086, - "end": 85163, + "start": 85122, + "end": 85199, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 8 }, "end": { - "line": 2407, + "line": 2408, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 85086, - "end": 85162, + "start": 85122, + "end": 85198, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 8 }, "end": { - "line": 2407, + "line": 2408, "column": 84 } }, "operator": "+=", "left": { "type": "MemberExpression", - "start": 85086, - "end": 85104, + "start": 85122, + "end": 85140, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 8 }, "end": { - "line": 2407, + "line": 2408, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 85086, - "end": 85090, + "start": 85122, + "end": 85126, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 8 }, "end": { - "line": 2407, + "line": 2408, "column": 12 } } }, "property": { "type": "Identifier", - "start": 85091, - "end": 85104, + "start": 85127, + "end": 85140, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 13 }, "end": { - "line": 2407, + "line": 2408, "column": 26 }, "identifierName": "_numTriangles" @@ -65977,43 +66093,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 85109, - "end": 85161, + "start": 85145, + "end": 85197, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 31 }, "end": { - "line": 2407, + "line": 2408, "column": 83 } }, "test": { "type": "MemberExpression", - "start": 85109, - "end": 85120, + "start": 85145, + "end": 85156, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 31 }, "end": { - "line": 2407, + "line": 2408, "column": 42 } }, "object": { "type": "Identifier", - "start": 85109, - "end": 85112, + "start": 85145, + "end": 85148, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 31 }, "end": { - "line": 2407, + "line": 2408, "column": 34 }, "identifierName": "cfg" @@ -66022,15 +66138,15 @@ }, "property": { "type": "Identifier", - "start": 85113, - "end": 85120, + "start": 85149, + "end": 85156, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 35 }, "end": { - "line": 2407, + "line": 2408, "column": 42 }, "identifierName": "indices" @@ -66041,43 +66157,43 @@ }, "consequent": { "type": "CallExpression", - "start": 85123, - "end": 85157, + "start": 85159, + "end": 85193, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 45 }, "end": { - "line": 2407, + "line": 2408, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 85123, - "end": 85133, + "start": 85159, + "end": 85169, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 45 }, "end": { - "line": 2407, + "line": 2408, "column": 55 } }, "object": { "type": "Identifier", - "start": 85123, - "end": 85127, + "start": 85159, + "end": 85163, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 45 }, "end": { - "line": 2407, + "line": 2408, "column": 49 }, "identifierName": "Math" @@ -66086,15 +66202,15 @@ }, "property": { "type": "Identifier", - "start": 85128, - "end": 85133, + "start": 85164, + "end": 85169, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 50 }, "end": { - "line": 2407, + "line": 2408, "column": 55 }, "identifierName": "round" @@ -66106,57 +66222,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 85134, - "end": 85156, + "start": 85170, + "end": 85192, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 56 }, "end": { - "line": 2407, + "line": 2408, "column": 78 } }, "left": { "type": "MemberExpression", - "start": 85134, - "end": 85152, + "start": 85170, + "end": 85188, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 56 }, "end": { - "line": 2407, + "line": 2408, "column": 74 } }, "object": { "type": "MemberExpression", - "start": 85134, - "end": 85145, + "start": 85170, + "end": 85181, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 56 }, "end": { - "line": 2407, + "line": 2408, "column": 67 } }, "object": { "type": "Identifier", - "start": 85134, - "end": 85137, + "start": 85170, + "end": 85173, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 56 }, "end": { - "line": 2407, + "line": 2408, "column": 59 }, "identifierName": "cfg" @@ -66165,15 +66281,15 @@ }, "property": { "type": "Identifier", - "start": 85138, - "end": 85145, + "start": 85174, + "end": 85181, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 60 }, "end": { - "line": 2407, + "line": 2408, "column": 67 }, "identifierName": "indices" @@ -66184,15 +66300,15 @@ }, "property": { "type": "Identifier", - "start": 85146, - "end": 85152, + "start": 85182, + "end": 85188, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 68 }, "end": { - "line": 2407, + "line": 2408, "column": 74 }, "identifierName": "length" @@ -66204,15 +66320,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 85155, - "end": 85156, + "start": 85191, + "end": 85192, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 77 }, "end": { - "line": 2407, + "line": 2408, "column": 78 } }, @@ -66227,15 +66343,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 85160, - "end": 85161, + "start": 85196, + "end": 85197, "loc": { "start": { - "line": 2407, + "line": 2408, "column": 82 }, "end": { - "line": 2407, + "line": 2408, "column": 83 } }, @@ -66247,36 +66363,36 @@ }, "extra": { "parenthesized": true, - "parenStart": 85108 + "parenStart": 85144 } } } }, { "type": "ExpressionStatement", - "start": 85172, - "end": 85193, + "start": 85208, + "end": 85229, "loc": { "start": { - "line": 2408, + "line": 2409, "column": 8 }, "end": { - "line": 2408, + "line": 2409, "column": 29 } }, "expression": { "type": "UpdateExpression", - "start": 85172, - "end": 85192, + "start": 85208, + "end": 85228, "loc": { "start": { - "line": 2408, + "line": 2409, "column": 8 }, "end": { - "line": 2408, + "line": 2409, "column": 28 } }, @@ -66284,44 +66400,44 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 85172, - "end": 85190, + "start": 85208, + "end": 85226, "loc": { "start": { - "line": 2408, + "line": 2409, "column": 8 }, "end": { - "line": 2408, + "line": 2409, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 85172, - "end": 85176, + "start": 85208, + "end": 85212, "loc": { "start": { - "line": 2408, + "line": 2409, "column": 8 }, "end": { - "line": 2408, + "line": 2409, "column": 12 } } }, "property": { "type": "Identifier", - "start": 85177, - "end": 85190, + "start": 85213, + "end": 85226, "loc": { "start": { - "line": 2408, + "line": 2409, "column": 13 }, "end": { - "line": 2408, + "line": 2409, "column": 26 }, "identifierName": "numGeometries" @@ -66340,15 +66456,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a reusable geometry within this SceneModel.\n *\n * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that\n * instance the geometry.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n ", - "start": 76532, - "end": 79549, + "start": 76568, + "end": 79585, "loc": { "start": { - "line": 2283, + "line": 2284, "column": 4 }, "end": { - "line": 2304, + "line": 2305, "column": 7 } } @@ -66358,15 +66474,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a texture within this SceneModel.\n *\n * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture.\n *\n * @param {*} cfg Texture properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link SceneModel#createTextureSet}.\n * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file\n * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````SceneModel```` is configured with a {@link TextureTranscoder}.\n * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````SceneModel```` is\n * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps.\n * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded.\n * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel.\n * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}.\n * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}.\n * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}..\n * @param {Number} [cfg.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n ", - "start": 85205, - "end": 87651, + "start": 85241, + "end": 87687, "loc": { "start": { - "line": 2411, + "line": 2412, "column": 4 }, "end": { - "line": 2431, + "line": 2432, "column": 7 } } @@ -66375,15 +66491,15 @@ }, { "type": "ClassMethod", - "start": 87656, - "end": 93875, + "start": 87692, + "end": 93911, "loc": { "start": { - "line": 2432, + "line": 2433, "column": 4 }, "end": { - "line": 2550, + "line": 2551, "column": 5 } }, @@ -66391,15 +66507,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 87656, - "end": 87669, + "start": 87692, + "end": 87705, "loc": { "start": { - "line": 2432, + "line": 2433, "column": 4 }, "end": { - "line": 2432, + "line": 2433, "column": 17 }, "identifierName": "createTexture" @@ -66415,15 +66531,15 @@ "params": [ { "type": "Identifier", - "start": 87670, - "end": 87673, + "start": 87706, + "end": 87709, "loc": { "start": { - "line": 2432, + "line": 2433, "column": 18 }, "end": { - "line": 2432, + "line": 2433, "column": 21 }, "identifierName": "cfg" @@ -66433,59 +66549,59 @@ ], "body": { "type": "BlockStatement", - "start": 87675, - "end": 93875, + "start": 87711, + "end": 93911, "loc": { "start": { - "line": 2432, + "line": 2433, "column": 23 }, "end": { - "line": 2550, + "line": 2551, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 87685, - "end": 87710, + "start": 87721, + "end": 87746, "loc": { "start": { - "line": 2433, + "line": 2434, "column": 8 }, "end": { - "line": 2433, + "line": 2434, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 87691, - "end": 87709, + "start": 87727, + "end": 87745, "loc": { "start": { - "line": 2433, + "line": 2434, "column": 14 }, "end": { - "line": 2433, + "line": 2434, "column": 32 } }, "id": { "type": "Identifier", - "start": 87691, - "end": 87700, + "start": 87727, + "end": 87736, "loc": { "start": { - "line": 2433, + "line": 2434, "column": 14 }, "end": { - "line": 2433, + "line": 2434, "column": 23 }, "identifierName": "textureId" @@ -66494,29 +66610,29 @@ }, "init": { "type": "MemberExpression", - "start": 87703, - "end": 87709, + "start": 87739, + "end": 87745, "loc": { "start": { - "line": 2433, + "line": 2434, "column": 26 }, "end": { - "line": 2433, + "line": 2434, "column": 32 } }, "object": { "type": "Identifier", - "start": 87703, - "end": 87706, + "start": 87739, + "end": 87742, "loc": { "start": { - "line": 2433, + "line": 2434, "column": 26 }, "end": { - "line": 2433, + "line": 2434, "column": 29 }, "identifierName": "cfg" @@ -66525,15 +66641,15 @@ }, "property": { "type": "Identifier", - "start": 87707, - "end": 87709, + "start": 87743, + "end": 87745, "loc": { "start": { - "line": 2433, + "line": 2434, "column": 30 }, "end": { - "line": 2433, + "line": 2434, "column": 32 }, "identifierName": "id" @@ -66548,57 +66664,57 @@ }, { "type": "IfStatement", - "start": 87719, - "end": 87863, + "start": 87755, + "end": 87899, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 8 }, "end": { - "line": 2437, + "line": 2438, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 87723, - "end": 87768, + "start": 87759, + "end": 87804, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 12 }, "end": { - "line": 2434, + "line": 2435, "column": 57 } }, "left": { "type": "BinaryExpression", - "start": 87723, - "end": 87746, + "start": 87759, + "end": 87782, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 12 }, "end": { - "line": 2434, + "line": 2435, "column": 35 } }, "left": { "type": "Identifier", - "start": 87723, - "end": 87732, + "start": 87759, + "end": 87768, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 12 }, "end": { - "line": 2434, + "line": 2435, "column": 21 }, "identifierName": "textureId" @@ -66608,15 +66724,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 87737, - "end": 87746, + "start": 87773, + "end": 87782, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 26 }, "end": { - "line": 2434, + "line": 2435, "column": 35 }, "identifierName": "undefined" @@ -66627,29 +66743,29 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 87750, - "end": 87768, + "start": 87786, + "end": 87804, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 39 }, "end": { - "line": 2434, + "line": 2435, "column": 57 } }, "left": { "type": "Identifier", - "start": 87750, - "end": 87759, + "start": 87786, + "end": 87795, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 39 }, "end": { - "line": 2434, + "line": 2435, "column": 48 }, "identifierName": "textureId" @@ -66659,15 +66775,15 @@ "operator": "===", "right": { "type": "NullLiteral", - "start": 87764, - "end": 87768, + "start": 87800, + "end": 87804, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 53 }, "end": { - "line": 2434, + "line": 2435, "column": 57 } } @@ -66676,87 +66792,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 87770, - "end": 87863, + "start": 87806, + "end": 87899, "loc": { "start": { - "line": 2434, + "line": 2435, "column": 59 }, "end": { - "line": 2437, + "line": 2438, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 87784, - "end": 87833, + "start": 87820, + "end": 87869, "loc": { "start": { - "line": 2435, + "line": 2436, "column": 12 }, "end": { - "line": 2435, + "line": 2436, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 87784, - "end": 87832, + "start": 87820, + "end": 87868, "loc": { "start": { - "line": 2435, + "line": 2436, "column": 12 }, "end": { - "line": 2435, + "line": 2436, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 87784, - "end": 87794, + "start": 87820, + "end": 87830, "loc": { "start": { - "line": 2435, + "line": 2436, "column": 12 }, "end": { - "line": 2435, + "line": 2436, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 87784, - "end": 87788, + "start": 87820, + "end": 87824, "loc": { "start": { - "line": 2435, + "line": 2436, "column": 12 }, "end": { - "line": 2435, + "line": 2436, "column": 16 } } }, "property": { "type": "Identifier", - "start": 87789, - "end": 87794, + "start": 87825, + "end": 87830, "loc": { "start": { - "line": 2435, + "line": 2436, "column": 17 }, "end": { - "line": 2435, + "line": 2436, "column": 22 }, "identifierName": "error" @@ -66768,15 +66884,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 87795, - "end": 87831, + "start": 87831, + "end": 87867, "loc": { "start": { - "line": 2435, + "line": 2436, "column": 23 }, "end": { - "line": 2435, + "line": 2436, "column": 59 } }, @@ -66791,15 +66907,15 @@ }, { "type": "ReturnStatement", - "start": 87846, - "end": 87853, + "start": 87882, + "end": 87889, "loc": { "start": { - "line": 2436, + "line": 2437, "column": 12 }, "end": { - "line": 2436, + "line": 2437, "column": 19 } }, @@ -66812,72 +66928,72 @@ }, { "type": "IfStatement", - "start": 87872, - "end": 88015, + "start": 87908, + "end": 88051, "loc": { "start": { - "line": 2438, + "line": 2439, "column": 8 }, "end": { - "line": 2441, + "line": 2442, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 87876, - "end": 87901, + "start": 87912, + "end": 87937, "loc": { "start": { - "line": 2438, + "line": 2439, "column": 12 }, "end": { - "line": 2438, + "line": 2439, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 87876, - "end": 87890, + "start": 87912, + "end": 87926, "loc": { "start": { - "line": 2438, + "line": 2439, "column": 12 }, "end": { - "line": 2438, + "line": 2439, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 87876, - "end": 87880, + "start": 87912, + "end": 87916, "loc": { "start": { - "line": 2438, + "line": 2439, "column": 12 }, "end": { - "line": 2438, + "line": 2439, "column": 16 } } }, "property": { "type": "Identifier", - "start": 87881, - "end": 87890, + "start": 87917, + "end": 87926, "loc": { "start": { - "line": 2438, + "line": 2439, "column": 17 }, "end": { - "line": 2438, + "line": 2439, "column": 26 }, "identifierName": "_textures" @@ -66888,15 +67004,15 @@ }, "property": { "type": "Identifier", - "start": 87891, - "end": 87900, + "start": 87927, + "end": 87936, "loc": { "start": { - "line": 2438, + "line": 2439, "column": 27 }, "end": { - "line": 2438, + "line": 2439, "column": 36 }, "identifierName": "textureId" @@ -66907,87 +67023,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 87903, - "end": 88015, + "start": 87939, + "end": 88051, "loc": { "start": { - "line": 2438, + "line": 2439, "column": 39 }, "end": { - "line": 2441, + "line": 2442, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 87917, - "end": 87985, + "start": 87953, + "end": 88021, "loc": { "start": { - "line": 2439, + "line": 2440, "column": 12 }, "end": { - "line": 2439, + "line": 2440, "column": 80 } }, "expression": { "type": "CallExpression", - "start": 87917, - "end": 87984, + "start": 87953, + "end": 88020, "loc": { "start": { - "line": 2439, + "line": 2440, "column": 12 }, "end": { - "line": 2439, + "line": 2440, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 87917, - "end": 87927, + "start": 87953, + "end": 87963, "loc": { "start": { - "line": 2439, + "line": 2440, "column": 12 }, "end": { - "line": 2439, + "line": 2440, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 87917, - "end": 87921, + "start": 87953, + "end": 87957, "loc": { "start": { - "line": 2439, + "line": 2440, "column": 12 }, "end": { - "line": 2439, + "line": 2440, "column": 16 } } }, "property": { "type": "Identifier", - "start": 87922, - "end": 87927, + "start": 87958, + "end": 87963, "loc": { "start": { - "line": 2439, + "line": 2440, "column": 17 }, "end": { - "line": 2439, + "line": 2440, "column": 22 }, "identifierName": "error" @@ -66999,29 +67115,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 87928, - "end": 87983, + "start": 87964, + "end": 88019, "loc": { "start": { - "line": 2439, + "line": 2440, "column": 23 }, "end": { - "line": 2439, + "line": 2440, "column": 78 } }, "left": { "type": "StringLiteral", - "start": 87928, - "end": 87971, + "start": 87964, + "end": 88007, "loc": { "start": { - "line": 2439, + "line": 2440, "column": 23 }, "end": { - "line": 2439, + "line": 2440, "column": 66 } }, @@ -67034,15 +67150,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 87974, - "end": 87983, + "start": 88010, + "end": 88019, "loc": { "start": { - "line": 2439, + "line": 2440, "column": 69 }, "end": { - "line": 2439, + "line": 2440, "column": 78 }, "identifierName": "textureId" @@ -67055,15 +67171,15 @@ }, { "type": "ReturnStatement", - "start": 87998, - "end": 88005, + "start": 88034, + "end": 88041, "loc": { "start": { - "line": 2440, + "line": 2441, "column": 12 }, "end": { - "line": 2440, + "line": 2441, "column": 19 } }, @@ -67076,57 +67192,57 @@ }, { "type": "IfStatement", - "start": 88024, - "end": 88191, + "start": 88060, + "end": 88227, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 8 }, "end": { - "line": 2445, + "line": 2446, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 88028, - "end": 88066, + "start": 88064, + "end": 88102, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 12 }, "end": { - "line": 2442, + "line": 2443, "column": 50 } }, "left": { "type": "LogicalExpression", - "start": 88028, - "end": 88050, + "start": 88064, + "end": 88086, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 12 }, "end": { - "line": 2442, + "line": 2443, "column": 34 } }, "left": { "type": "UnaryExpression", - "start": 88028, - "end": 88036, + "start": 88064, + "end": 88072, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 12 }, "end": { - "line": 2442, + "line": 2443, "column": 20 } }, @@ -67134,29 +67250,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 88029, - "end": 88036, + "start": 88065, + "end": 88072, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 13 }, "end": { - "line": 2442, + "line": 2443, "column": 20 } }, "object": { "type": "Identifier", - "start": 88029, - "end": 88032, + "start": 88065, + "end": 88068, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 13 }, "end": { - "line": 2442, + "line": 2443, "column": 16 }, "identifierName": "cfg" @@ -67165,15 +67281,15 @@ }, "property": { "type": "Identifier", - "start": 88033, - "end": 88036, + "start": 88069, + "end": 88072, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 17 }, "end": { - "line": 2442, + "line": 2443, "column": 20 }, "identifierName": "src" @@ -67189,15 +67305,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 88040, - "end": 88050, + "start": 88076, + "end": 88086, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 24 }, "end": { - "line": 2442, + "line": 2443, "column": 34 } }, @@ -67205,29 +67321,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 88041, - "end": 88050, + "start": 88077, + "end": 88086, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 25 }, "end": { - "line": 2442, + "line": 2443, "column": 34 } }, "object": { "type": "Identifier", - "start": 88041, - "end": 88044, + "start": 88077, + "end": 88080, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 25 }, "end": { - "line": 2442, + "line": 2443, "column": 28 }, "identifierName": "cfg" @@ -67236,15 +67352,15 @@ }, "property": { "type": "Identifier", - "start": 88045, - "end": 88050, + "start": 88081, + "end": 88086, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 29 }, "end": { - "line": 2442, + "line": 2443, "column": 34 }, "identifierName": "image" @@ -67261,15 +67377,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 88054, - "end": 88066, + "start": 88090, + "end": 88102, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 38 }, "end": { - "line": 2442, + "line": 2443, "column": 50 } }, @@ -67277,29 +67393,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 88055, - "end": 88066, + "start": 88091, + "end": 88102, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 39 }, "end": { - "line": 2442, + "line": 2443, "column": 50 } }, "object": { "type": "Identifier", - "start": 88055, - "end": 88058, + "start": 88091, + "end": 88094, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 39 }, "end": { - "line": 2442, + "line": 2443, "column": 42 }, "identifierName": "cfg" @@ -67308,15 +67424,15 @@ }, "property": { "type": "Identifier", - "start": 88059, - "end": 88066, + "start": 88095, + "end": 88102, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 43 }, "end": { - "line": 2442, + "line": 2443, "column": 50 }, "identifierName": "buffers" @@ -67332,87 +67448,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 88068, - "end": 88191, + "start": 88104, + "end": 88227, "loc": { "start": { - "line": 2442, + "line": 2443, "column": 52 }, "end": { - "line": 2445, + "line": 2446, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 88082, - "end": 88156, + "start": 88118, + "end": 88192, "loc": { "start": { - "line": 2443, + "line": 2444, "column": 12 }, "end": { - "line": 2443, + "line": 2444, "column": 86 } }, "expression": { "type": "CallExpression", - "start": 88082, - "end": 88155, + "start": 88118, + "end": 88191, "loc": { "start": { - "line": 2443, + "line": 2444, "column": 12 }, "end": { - "line": 2443, + "line": 2444, "column": 85 } }, "callee": { "type": "MemberExpression", - "start": 88082, - "end": 88092, + "start": 88118, + "end": 88128, "loc": { "start": { - "line": 2443, + "line": 2444, "column": 12 }, "end": { - "line": 2443, + "line": 2444, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 88082, - "end": 88086, + "start": 88118, + "end": 88122, "loc": { "start": { - "line": 2443, + "line": 2444, "column": 12 }, "end": { - "line": 2443, + "line": 2444, "column": 16 } } }, "property": { "type": "Identifier", - "start": 88087, - "end": 88092, + "start": 88123, + "end": 88128, "loc": { "start": { - "line": 2443, + "line": 2444, "column": 17 }, "end": { - "line": 2443, + "line": 2444, "column": 22 }, "identifierName": "error" @@ -67424,15 +67540,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 88093, - "end": 88154, + "start": 88129, + "end": 88190, "loc": { "start": { - "line": 2443, + "line": 2444, "column": 23 }, "end": { - "line": 2443, + "line": 2444, "column": 84 } }, @@ -67447,29 +67563,29 @@ }, { "type": "ReturnStatement", - "start": 88169, - "end": 88181, + "start": 88205, + "end": 88217, "loc": { "start": { - "line": 2444, + "line": 2445, "column": 12 }, "end": { - "line": 2444, + "line": 2445, "column": 24 } }, "argument": { "type": "NullLiteral", - "start": 88176, - "end": 88180, + "start": 88212, + "end": 88216, "loc": { "start": { - "line": 2444, + "line": 2445, "column": 19 }, "end": { - "line": 2444, + "line": 2445, "column": 23 } } @@ -67482,44 +67598,44 @@ }, { "type": "VariableDeclaration", - "start": 88200, - "end": 88258, + "start": 88236, + "end": 88294, "loc": { "start": { - "line": 2446, + "line": 2447, "column": 8 }, "end": { - "line": 2446, + "line": 2447, "column": 66 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 88204, - "end": 88257, + "start": 88240, + "end": 88293, "loc": { "start": { - "line": 2446, + "line": 2447, "column": 12 }, "end": { - "line": 2446, + "line": 2447, "column": 65 } }, "id": { "type": "Identifier", - "start": 88204, - "end": 88213, + "start": 88240, + "end": 88249, "loc": { "start": { - "line": 2446, + "line": 2447, "column": 12 }, "end": { - "line": 2446, + "line": 2447, "column": 21 }, "identifierName": "minFilter" @@ -67528,43 +67644,43 @@ }, "init": { "type": "LogicalExpression", - "start": 88216, - "end": 88257, + "start": 88252, + "end": 88293, "loc": { "start": { - "line": 2446, + "line": 2447, "column": 24 }, "end": { - "line": 2446, + "line": 2447, "column": 65 } }, "left": { "type": "MemberExpression", - "start": 88216, - "end": 88229, + "start": 88252, + "end": 88265, "loc": { "start": { - "line": 2446, + "line": 2447, "column": 24 }, "end": { - "line": 2446, + "line": 2447, "column": 37 } }, "object": { "type": "Identifier", - "start": 88216, - "end": 88219, + "start": 88252, + "end": 88255, "loc": { "start": { - "line": 2446, + "line": 2447, "column": 24 }, "end": { - "line": 2446, + "line": 2447, "column": 27 }, "identifierName": "cfg" @@ -67573,15 +67689,15 @@ }, "property": { "type": "Identifier", - "start": 88220, - "end": 88229, + "start": 88256, + "end": 88265, "loc": { "start": { - "line": 2446, + "line": 2447, "column": 28 }, "end": { - "line": 2446, + "line": 2447, "column": 37 }, "identifierName": "minFilter" @@ -67593,15 +67709,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 88233, - "end": 88257, + "start": 88269, + "end": 88293, "loc": { "start": { - "line": 2446, + "line": 2447, "column": 41 }, "end": { - "line": 2446, + "line": 2447, "column": 65 }, "identifierName": "LinearMipmapLinearFilter" @@ -67615,99 +67731,99 @@ }, { "type": "IfStatement", - "start": 88267, - "end": 88871, + "start": 88303, + "end": 88907, "loc": { "start": { - "line": 2447, + "line": 2448, "column": 8 }, "end": { - "line": 2456, + "line": 2457, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 88271, - "end": 88517, + "start": 88307, + "end": 88553, "loc": { "start": { - "line": 2447, + "line": 2448, "column": 12 }, "end": { - "line": 2451, + "line": 2452, "column": 52 } }, "left": { "type": "LogicalExpression", - "start": 88271, - "end": 88461, + "start": 88307, + "end": 88497, "loc": { "start": { - "line": 2447, + "line": 2448, "column": 12 }, "end": { - "line": 2450, + "line": 2451, "column": 51 } }, "left": { "type": "LogicalExpression", - "start": 88271, - "end": 88406, + "start": 88307, + "end": 88442, "loc": { "start": { - "line": 2447, + "line": 2448, "column": 12 }, "end": { - "line": 2449, + "line": 2450, "column": 50 } }, "left": { "type": "LogicalExpression", - "start": 88271, - "end": 88352, + "start": 88307, + "end": 88388, "loc": { "start": { - "line": 2447, + "line": 2448, "column": 12 }, "end": { - "line": 2448, + "line": 2449, "column": 51 } }, "left": { "type": "BinaryExpression", - "start": 88271, - "end": 88297, + "start": 88307, + "end": 88333, "loc": { "start": { - "line": 2447, + "line": 2448, "column": 12 }, "end": { - "line": 2447, + "line": 2448, "column": 38 } }, "left": { "type": "Identifier", - "start": 88271, - "end": 88280, + "start": 88307, + "end": 88316, "loc": { "start": { - "line": 2447, + "line": 2448, "column": 12 }, "end": { - "line": 2447, + "line": 2448, "column": 21 }, "identifierName": "minFilter" @@ -67717,15 +67833,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 88285, - "end": 88297, + "start": 88321, + "end": 88333, "loc": { "start": { - "line": 2447, + "line": 2448, "column": 26 }, "end": { - "line": 2447, + "line": 2448, "column": 38 }, "identifierName": "LinearFilter" @@ -67736,29 +67852,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 88313, - "end": 88352, + "start": 88349, + "end": 88388, "loc": { "start": { - "line": 2448, + "line": 2449, "column": 12 }, "end": { - "line": 2448, + "line": 2449, "column": 51 } }, "left": { "type": "Identifier", - "start": 88313, - "end": 88322, + "start": 88349, + "end": 88358, "loc": { "start": { - "line": 2448, + "line": 2449, "column": 12 }, "end": { - "line": 2448, + "line": 2449, "column": 21 }, "identifierName": "minFilter" @@ -67768,15 +67884,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 88327, - "end": 88352, + "start": 88363, + "end": 88388, "loc": { "start": { - "line": 2448, + "line": 2449, "column": 26 }, "end": { - "line": 2448, + "line": 2449, "column": 51 }, "identifierName": "LinearMipMapNearestFilter" @@ -67788,29 +67904,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 88368, - "end": 88406, + "start": 88404, + "end": 88442, "loc": { "start": { - "line": 2449, + "line": 2450, "column": 12 }, "end": { - "line": 2449, + "line": 2450, "column": 50 } }, "left": { "type": "Identifier", - "start": 88368, - "end": 88377, + "start": 88404, + "end": 88413, "loc": { "start": { - "line": 2449, + "line": 2450, "column": 12 }, "end": { - "line": 2449, + "line": 2450, "column": 21 }, "identifierName": "minFilter" @@ -67820,15 +67936,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 88382, - "end": 88406, + "start": 88418, + "end": 88442, "loc": { "start": { - "line": 2449, + "line": 2450, "column": 26 }, "end": { - "line": 2449, + "line": 2450, "column": 50 }, "identifierName": "LinearMipmapLinearFilter" @@ -67840,29 +67956,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 88422, - "end": 88461, + "start": 88458, + "end": 88497, "loc": { "start": { - "line": 2450, + "line": 2451, "column": 12 }, "end": { - "line": 2450, + "line": 2451, "column": 51 } }, "left": { "type": "Identifier", - "start": 88422, - "end": 88431, + "start": 88458, + "end": 88467, "loc": { "start": { - "line": 2450, + "line": 2451, "column": 12 }, "end": { - "line": 2450, + "line": 2451, "column": 21 }, "identifierName": "minFilter" @@ -67872,15 +67988,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 88436, - "end": 88461, + "start": 88472, + "end": 88497, "loc": { "start": { - "line": 2450, + "line": 2451, "column": 26 }, "end": { - "line": 2450, + "line": 2451, "column": 51 }, "identifierName": "NearestMipMapLinearFilter" @@ -67892,29 +68008,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 88477, - "end": 88517, + "start": 88513, + "end": 88553, "loc": { "start": { - "line": 2451, + "line": 2452, "column": 12 }, "end": { - "line": 2451, + "line": 2452, "column": 52 } }, "left": { "type": "Identifier", - "start": 88477, - "end": 88486, + "start": 88513, + "end": 88522, "loc": { "start": { - "line": 2451, + "line": 2452, "column": 12 }, "end": { - "line": 2451, + "line": 2452, "column": 21 }, "identifierName": "minFilter" @@ -67924,15 +68040,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 88491, - "end": 88517, + "start": 88527, + "end": 88553, "loc": { "start": { - "line": 2451, + "line": 2452, "column": 26 }, "end": { - "line": 2451, + "line": 2452, "column": 52 }, "identifierName": "NearestMipMapNearestFilter" @@ -67943,87 +68059,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 88519, - "end": 88871, + "start": 88555, + "end": 88907, "loc": { "start": { - "line": 2451, + "line": 2452, "column": 54 }, "end": { - "line": 2456, + "line": 2457, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 88533, - "end": 88811, + "start": 88569, + "end": 88847, "loc": { "start": { - "line": 2452, + "line": 2453, "column": 12 }, "end": { - "line": 2454, + "line": 2455, "column": 110 } }, "expression": { "type": "CallExpression", - "start": 88533, - "end": 88810, + "start": 88569, + "end": 88846, "loc": { "start": { - "line": 2452, + "line": 2453, "column": 12 }, "end": { - "line": 2454, + "line": 2455, "column": 109 } }, "callee": { "type": "MemberExpression", - "start": 88533, - "end": 88543, + "start": 88569, + "end": 88579, "loc": { "start": { - "line": 2452, + "line": 2453, "column": 12 }, "end": { - "line": 2452, + "line": 2453, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 88533, - "end": 88537, + "start": 88569, + "end": 88573, "loc": { "start": { - "line": 2452, + "line": 2453, "column": 12 }, "end": { - "line": 2452, + "line": 2453, "column": 16 } } }, "property": { "type": "Identifier", - "start": 88538, - "end": 88543, + "start": 88574, + "end": 88579, "loc": { "start": { - "line": 2452, + "line": 2453, "column": 17 }, "end": { - "line": 2452, + "line": 2453, "column": 22 }, "identifierName": "error" @@ -68035,15 +68151,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 88544, - "end": 88809, + "start": 88580, + "end": 88845, "loc": { "start": { - "line": 2452, + "line": 2453, "column": 23 }, "end": { - "line": 2454, + "line": 2455, "column": 108 } }, @@ -68051,15 +68167,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 88545, - "end": 88808, + "start": 88581, + "end": 88844, "loc": { "start": { - "line": 2452, + "line": 2453, "column": 24 }, "end": { - "line": 2454, + "line": 2455, "column": 107 } }, @@ -68076,44 +68192,44 @@ }, { "type": "ExpressionStatement", - "start": 88824, - "end": 88861, + "start": 88860, + "end": 88897, "loc": { "start": { - "line": 2455, + "line": 2456, "column": 12 }, "end": { - "line": 2455, + "line": 2456, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 88824, - "end": 88860, + "start": 88860, + "end": 88896, "loc": { "start": { - "line": 2455, + "line": 2456, "column": 12 }, "end": { - "line": 2455, + "line": 2456, "column": 48 } }, "operator": "=", "left": { "type": "Identifier", - "start": 88824, - "end": 88833, + "start": 88860, + "end": 88869, "loc": { "start": { - "line": 2455, + "line": 2456, "column": 12 }, "end": { - "line": 2455, + "line": 2456, "column": 21 }, "identifierName": "minFilter" @@ -68122,15 +68238,15 @@ }, "right": { "type": "Identifier", - "start": 88836, - "end": 88860, + "start": 88872, + "end": 88896, "loc": { "start": { - "line": 2455, + "line": 2456, "column": 24 }, "end": { - "line": 2455, + "line": 2456, "column": 48 }, "identifierName": "LinearMipmapLinearFilter" @@ -68146,44 +68262,44 @@ }, { "type": "VariableDeclaration", - "start": 88880, - "end": 88926, + "start": 88916, + "end": 88962, "loc": { "start": { - "line": 2457, + "line": 2458, "column": 8 }, "end": { - "line": 2457, + "line": 2458, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 88884, - "end": 88925, + "start": 88920, + "end": 88961, "loc": { "start": { - "line": 2457, + "line": 2458, "column": 12 }, "end": { - "line": 2457, + "line": 2458, "column": 53 } }, "id": { "type": "Identifier", - "start": 88884, - "end": 88893, + "start": 88920, + "end": 88929, "loc": { "start": { - "line": 2457, + "line": 2458, "column": 12 }, "end": { - "line": 2457, + "line": 2458, "column": 21 }, "identifierName": "magFilter" @@ -68192,43 +68308,43 @@ }, "init": { "type": "LogicalExpression", - "start": 88896, - "end": 88925, + "start": 88932, + "end": 88961, "loc": { "start": { - "line": 2457, + "line": 2458, "column": 24 }, "end": { - "line": 2457, + "line": 2458, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 88896, - "end": 88909, + "start": 88932, + "end": 88945, "loc": { "start": { - "line": 2457, + "line": 2458, "column": 24 }, "end": { - "line": 2457, + "line": 2458, "column": 37 } }, "object": { "type": "Identifier", - "start": 88896, - "end": 88899, + "start": 88932, + "end": 88935, "loc": { "start": { - "line": 2457, + "line": 2458, "column": 24 }, "end": { - "line": 2457, + "line": 2458, "column": 27 }, "identifierName": "cfg" @@ -68237,15 +68353,15 @@ }, "property": { "type": "Identifier", - "start": 88900, - "end": 88909, + "start": 88936, + "end": 88945, "loc": { "start": { - "line": 2457, + "line": 2458, "column": 28 }, "end": { - "line": 2457, + "line": 2458, "column": 37 }, "identifierName": "magFilter" @@ -68257,15 +68373,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 88913, - "end": 88925, + "start": 88949, + "end": 88961, "loc": { "start": { - "line": 2457, + "line": 2458, "column": 41 }, "end": { - "line": 2457, + "line": 2458, "column": 53 }, "identifierName": "LinearFilter" @@ -68279,57 +68395,57 @@ }, { "type": "IfStatement", - "start": 88935, - "end": 89207, + "start": 88971, + "end": 89243, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 8 }, "end": { - "line": 2461, + "line": 2462, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 88939, - "end": 88996, + "start": 88975, + "end": 89032, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 12 }, "end": { - "line": 2458, + "line": 2459, "column": 69 } }, "left": { "type": "BinaryExpression", - "start": 88939, - "end": 88965, + "start": 88975, + "end": 89001, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 12 }, "end": { - "line": 2458, + "line": 2459, "column": 38 } }, "left": { "type": "Identifier", - "start": 88939, - "end": 88948, + "start": 88975, + "end": 88984, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 12 }, "end": { - "line": 2458, + "line": 2459, "column": 21 }, "identifierName": "magFilter" @@ -68339,15 +68455,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 88953, - "end": 88965, + "start": 88989, + "end": 89001, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 26 }, "end": { - "line": 2458, + "line": 2459, "column": 38 }, "identifierName": "LinearFilter" @@ -68358,29 +68474,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 88969, - "end": 88996, + "start": 89005, + "end": 89032, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 42 }, "end": { - "line": 2458, + "line": 2459, "column": 69 } }, "left": { "type": "Identifier", - "start": 88969, - "end": 88978, + "start": 89005, + "end": 89014, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 42 }, "end": { - "line": 2458, + "line": 2459, "column": 51 }, "identifierName": "magFilter" @@ -68390,15 +68506,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 88983, - "end": 88996, + "start": 89019, + "end": 89032, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 56 }, "end": { - "line": 2458, + "line": 2459, "column": 69 }, "identifierName": "NearestFilter" @@ -68409,87 +68525,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 88998, - "end": 89207, + "start": 89034, + "end": 89243, "loc": { "start": { - "line": 2458, + "line": 2459, "column": 71 }, "end": { - "line": 2461, + "line": 2462, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 89012, - "end": 89159, + "start": 89048, + "end": 89195, "loc": { "start": { - "line": 2459, + "line": 2460, "column": 12 }, "end": { - "line": 2459, + "line": 2460, "column": 159 } }, "expression": { "type": "CallExpression", - "start": 89012, - "end": 89158, + "start": 89048, + "end": 89194, "loc": { "start": { - "line": 2459, + "line": 2460, "column": 12 }, "end": { - "line": 2459, + "line": 2460, "column": 158 } }, "callee": { "type": "MemberExpression", - "start": 89012, - "end": 89022, + "start": 89048, + "end": 89058, "loc": { "start": { - "line": 2459, + "line": 2460, "column": 12 }, "end": { - "line": 2459, + "line": 2460, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 89012, - "end": 89016, + "start": 89048, + "end": 89052, "loc": { "start": { - "line": 2459, + "line": 2460, "column": 12 }, "end": { - "line": 2459, + "line": 2460, "column": 16 } } }, "property": { "type": "Identifier", - "start": 89017, - "end": 89022, + "start": 89053, + "end": 89058, "loc": { "start": { - "line": 2459, + "line": 2460, "column": 17 }, "end": { - "line": 2459, + "line": 2460, "column": 22 }, "identifierName": "error" @@ -68501,15 +68617,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 89023, - "end": 89157, + "start": 89059, + "end": 89193, "loc": { "start": { - "line": 2459, + "line": 2460, "column": 23 }, "end": { - "line": 2459, + "line": 2460, "column": 157 } }, @@ -68517,15 +68633,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 89024, - "end": 89156, + "start": 89060, + "end": 89192, "loc": { "start": { - "line": 2459, + "line": 2460, "column": 24 }, "end": { - "line": 2459, + "line": 2460, "column": 156 } }, @@ -68542,44 +68658,44 @@ }, { "type": "ExpressionStatement", - "start": 89172, - "end": 89197, + "start": 89208, + "end": 89233, "loc": { "start": { - "line": 2460, + "line": 2461, "column": 12 }, "end": { - "line": 2460, + "line": 2461, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 89172, - "end": 89196, + "start": 89208, + "end": 89232, "loc": { "start": { - "line": 2460, + "line": 2461, "column": 12 }, "end": { - "line": 2460, + "line": 2461, "column": 36 } }, "operator": "=", "left": { "type": "Identifier", - "start": 89172, - "end": 89181, + "start": 89208, + "end": 89217, "loc": { "start": { - "line": 2460, + "line": 2461, "column": 12 }, "end": { - "line": 2460, + "line": 2461, "column": 21 }, "identifierName": "magFilter" @@ -68588,15 +68704,15 @@ }, "right": { "type": "Identifier", - "start": 89184, - "end": 89196, + "start": 89220, + "end": 89232, "loc": { "start": { - "line": 2460, + "line": 2461, "column": 24 }, "end": { - "line": 2460, + "line": 2461, "column": 36 }, "identifierName": "LinearFilter" @@ -68612,44 +68728,44 @@ }, { "type": "VariableDeclaration", - "start": 89216, - "end": 89256, + "start": 89252, + "end": 89292, "loc": { "start": { - "line": 2462, + "line": 2463, "column": 8 }, "end": { - "line": 2462, + "line": 2463, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 89220, - "end": 89255, + "start": 89256, + "end": 89291, "loc": { "start": { - "line": 2462, + "line": 2463, "column": 12 }, "end": { - "line": 2462, + "line": 2463, "column": 47 } }, "id": { "type": "Identifier", - "start": 89220, - "end": 89225, + "start": 89256, + "end": 89261, "loc": { "start": { - "line": 2462, + "line": 2463, "column": 12 }, "end": { - "line": 2462, + "line": 2463, "column": 17 }, "identifierName": "wrapS" @@ -68658,43 +68774,43 @@ }, "init": { "type": "LogicalExpression", - "start": 89228, - "end": 89255, + "start": 89264, + "end": 89291, "loc": { "start": { - "line": 2462, + "line": 2463, "column": 20 }, "end": { - "line": 2462, + "line": 2463, "column": 47 } }, "left": { "type": "MemberExpression", - "start": 89228, - "end": 89237, + "start": 89264, + "end": 89273, "loc": { "start": { - "line": 2462, + "line": 2463, "column": 20 }, "end": { - "line": 2462, + "line": 2463, "column": 29 } }, "object": { "type": "Identifier", - "start": 89228, - "end": 89231, + "start": 89264, + "end": 89267, "loc": { "start": { - "line": 2462, + "line": 2463, "column": 20 }, "end": { - "line": 2462, + "line": 2463, "column": 23 }, "identifierName": "cfg" @@ -68703,15 +68819,15 @@ }, "property": { "type": "Identifier", - "start": 89232, - "end": 89237, + "start": 89268, + "end": 89273, "loc": { "start": { - "line": 2462, + "line": 2463, "column": 24 }, "end": { - "line": 2462, + "line": 2463, "column": 29 }, "identifierName": "wrapS" @@ -68723,15 +68839,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 89241, - "end": 89255, + "start": 89277, + "end": 89291, "loc": { "start": { - "line": 2462, + "line": 2463, "column": 33 }, "end": { - "line": 2462, + "line": 2463, "column": 47 }, "identifierName": "RepeatWrapping" @@ -68745,71 +68861,71 @@ }, { "type": "IfStatement", - "start": 89265, - "end": 89601, + "start": 89301, + "end": 89637, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 8 }, "end": { - "line": 2466, + "line": 2467, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 89269, - "end": 89362, + "start": 89305, + "end": 89398, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 12 }, "end": { - "line": 2463, + "line": 2464, "column": 105 } }, "left": { "type": "LogicalExpression", - "start": 89269, - "end": 89334, + "start": 89305, + "end": 89370, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 12 }, "end": { - "line": 2463, + "line": 2464, "column": 77 } }, "left": { "type": "BinaryExpression", - "start": 89269, - "end": 89298, + "start": 89305, + "end": 89334, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 12 }, "end": { - "line": 2463, + "line": 2464, "column": 41 } }, "left": { "type": "Identifier", - "start": 89269, - "end": 89274, + "start": 89305, + "end": 89310, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 12 }, "end": { - "line": 2463, + "line": 2464, "column": 17 }, "identifierName": "wrapS" @@ -68819,15 +68935,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 89279, - "end": 89298, + "start": 89315, + "end": 89334, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 22 }, "end": { - "line": 2463, + "line": 2464, "column": 41 }, "identifierName": "ClampToEdgeWrapping" @@ -68838,29 +68954,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 89302, - "end": 89334, + "start": 89338, + "end": 89370, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 45 }, "end": { - "line": 2463, + "line": 2464, "column": 77 } }, "left": { "type": "Identifier", - "start": 89302, - "end": 89307, + "start": 89338, + "end": 89343, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 45 }, "end": { - "line": 2463, + "line": 2464, "column": 50 }, "identifierName": "wrapS" @@ -68870,15 +68986,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 89312, - "end": 89334, + "start": 89348, + "end": 89370, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 55 }, "end": { - "line": 2463, + "line": 2464, "column": 77 }, "identifierName": "MirroredRepeatWrapping" @@ -68890,29 +69006,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 89338, - "end": 89362, + "start": 89374, + "end": 89398, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 81 }, "end": { - "line": 2463, + "line": 2464, "column": 105 } }, "left": { "type": "Identifier", - "start": 89338, - "end": 89343, + "start": 89374, + "end": 89379, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 81 }, "end": { - "line": 2463, + "line": 2464, "column": 86 }, "identifierName": "wrapS" @@ -68922,15 +69038,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 89348, - "end": 89362, + "start": 89384, + "end": 89398, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 91 }, "end": { - "line": 2463, + "line": 2464, "column": 105 }, "identifierName": "RepeatWrapping" @@ -68941,87 +69057,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 89364, - "end": 89601, + "start": 89400, + "end": 89637, "loc": { "start": { - "line": 2463, + "line": 2464, "column": 107 }, "end": { - "line": 2466, + "line": 2467, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 89378, - "end": 89555, + "start": 89414, + "end": 89591, "loc": { "start": { - "line": 2464, + "line": 2465, "column": 12 }, "end": { - "line": 2464, + "line": 2465, "column": 189 } }, "expression": { "type": "CallExpression", - "start": 89378, - "end": 89554, + "start": 89414, + "end": 89590, "loc": { "start": { - "line": 2464, + "line": 2465, "column": 12 }, "end": { - "line": 2464, + "line": 2465, "column": 188 } }, "callee": { "type": "MemberExpression", - "start": 89378, - "end": 89388, + "start": 89414, + "end": 89424, "loc": { "start": { - "line": 2464, + "line": 2465, "column": 12 }, "end": { - "line": 2464, + "line": 2465, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 89378, - "end": 89382, + "start": 89414, + "end": 89418, "loc": { "start": { - "line": 2464, + "line": 2465, "column": 12 }, "end": { - "line": 2464, + "line": 2465, "column": 16 } } }, "property": { "type": "Identifier", - "start": 89383, - "end": 89388, + "start": 89419, + "end": 89424, "loc": { "start": { - "line": 2464, + "line": 2465, "column": 17 }, "end": { - "line": 2464, + "line": 2465, "column": 22 }, "identifierName": "error" @@ -69033,15 +69149,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 89389, - "end": 89553, + "start": 89425, + "end": 89589, "loc": { "start": { - "line": 2464, + "line": 2465, "column": 23 }, "end": { - "line": 2464, + "line": 2465, "column": 187 } }, @@ -69049,15 +69165,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 89390, - "end": 89552, + "start": 89426, + "end": 89588, "loc": { "start": { - "line": 2464, + "line": 2465, "column": 24 }, "end": { - "line": 2464, + "line": 2465, "column": 186 } }, @@ -69074,44 +69190,44 @@ }, { "type": "ExpressionStatement", - "start": 89568, - "end": 89591, + "start": 89604, + "end": 89627, "loc": { "start": { - "line": 2465, + "line": 2466, "column": 12 }, "end": { - "line": 2465, + "line": 2466, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 89568, - "end": 89590, + "start": 89604, + "end": 89626, "loc": { "start": { - "line": 2465, + "line": 2466, "column": 12 }, "end": { - "line": 2465, + "line": 2466, "column": 34 } }, "operator": "=", "left": { "type": "Identifier", - "start": 89568, - "end": 89573, + "start": 89604, + "end": 89609, "loc": { "start": { - "line": 2465, + "line": 2466, "column": 12 }, "end": { - "line": 2465, + "line": 2466, "column": 17 }, "identifierName": "wrapS" @@ -69120,15 +69236,15 @@ }, "right": { "type": "Identifier", - "start": 89576, - "end": 89590, + "start": 89612, + "end": 89626, "loc": { "start": { - "line": 2465, + "line": 2466, "column": 20 }, "end": { - "line": 2465, + "line": 2466, "column": 34 }, "identifierName": "RepeatWrapping" @@ -69144,44 +69260,44 @@ }, { "type": "VariableDeclaration", - "start": 89610, - "end": 89650, + "start": 89646, + "end": 89686, "loc": { "start": { - "line": 2467, + "line": 2468, "column": 8 }, "end": { - "line": 2467, + "line": 2468, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 89614, - "end": 89649, + "start": 89650, + "end": 89685, "loc": { "start": { - "line": 2467, + "line": 2468, "column": 12 }, "end": { - "line": 2467, + "line": 2468, "column": 47 } }, "id": { "type": "Identifier", - "start": 89614, - "end": 89619, + "start": 89650, + "end": 89655, "loc": { "start": { - "line": 2467, + "line": 2468, "column": 12 }, "end": { - "line": 2467, + "line": 2468, "column": 17 }, "identifierName": "wrapT" @@ -69190,43 +69306,43 @@ }, "init": { "type": "LogicalExpression", - "start": 89622, - "end": 89649, + "start": 89658, + "end": 89685, "loc": { "start": { - "line": 2467, + "line": 2468, "column": 20 }, "end": { - "line": 2467, + "line": 2468, "column": 47 } }, "left": { "type": "MemberExpression", - "start": 89622, - "end": 89631, + "start": 89658, + "end": 89667, "loc": { "start": { - "line": 2467, + "line": 2468, "column": 20 }, "end": { - "line": 2467, + "line": 2468, "column": 29 } }, "object": { "type": "Identifier", - "start": 89622, - "end": 89625, + "start": 89658, + "end": 89661, "loc": { "start": { - "line": 2467, + "line": 2468, "column": 20 }, "end": { - "line": 2467, + "line": 2468, "column": 23 }, "identifierName": "cfg" @@ -69235,15 +69351,15 @@ }, "property": { "type": "Identifier", - "start": 89626, - "end": 89631, + "start": 89662, + "end": 89667, "loc": { "start": { - "line": 2467, + "line": 2468, "column": 24 }, "end": { - "line": 2467, + "line": 2468, "column": 29 }, "identifierName": "wrapT" @@ -69255,15 +69371,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 89635, - "end": 89649, + "start": 89671, + "end": 89685, "loc": { "start": { - "line": 2467, + "line": 2468, "column": 33 }, "end": { - "line": 2467, + "line": 2468, "column": 47 }, "identifierName": "RepeatWrapping" @@ -69277,71 +69393,71 @@ }, { "type": "IfStatement", - "start": 89659, - "end": 89995, + "start": 89695, + "end": 90031, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 8 }, "end": { - "line": 2471, + "line": 2472, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 89663, - "end": 89756, + "start": 89699, + "end": 89792, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 12 }, "end": { - "line": 2468, + "line": 2469, "column": 105 } }, "left": { "type": "LogicalExpression", - "start": 89663, - "end": 89728, + "start": 89699, + "end": 89764, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 12 }, "end": { - "line": 2468, + "line": 2469, "column": 77 } }, "left": { "type": "BinaryExpression", - "start": 89663, - "end": 89692, + "start": 89699, + "end": 89728, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 12 }, "end": { - "line": 2468, + "line": 2469, "column": 41 } }, "left": { "type": "Identifier", - "start": 89663, - "end": 89668, + "start": 89699, + "end": 89704, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 12 }, "end": { - "line": 2468, + "line": 2469, "column": 17 }, "identifierName": "wrapT" @@ -69351,15 +69467,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 89673, - "end": 89692, + "start": 89709, + "end": 89728, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 22 }, "end": { - "line": 2468, + "line": 2469, "column": 41 }, "identifierName": "ClampToEdgeWrapping" @@ -69370,29 +69486,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 89696, - "end": 89728, + "start": 89732, + "end": 89764, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 45 }, "end": { - "line": 2468, + "line": 2469, "column": 77 } }, "left": { "type": "Identifier", - "start": 89696, - "end": 89701, + "start": 89732, + "end": 89737, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 45 }, "end": { - "line": 2468, + "line": 2469, "column": 50 }, "identifierName": "wrapT" @@ -69402,15 +69518,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 89706, - "end": 89728, + "start": 89742, + "end": 89764, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 55 }, "end": { - "line": 2468, + "line": 2469, "column": 77 }, "identifierName": "MirroredRepeatWrapping" @@ -69422,29 +69538,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 89732, - "end": 89756, + "start": 89768, + "end": 89792, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 81 }, "end": { - "line": 2468, + "line": 2469, "column": 105 } }, "left": { "type": "Identifier", - "start": 89732, - "end": 89737, + "start": 89768, + "end": 89773, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 81 }, "end": { - "line": 2468, + "line": 2469, "column": 86 }, "identifierName": "wrapT" @@ -69454,15 +69570,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 89742, - "end": 89756, + "start": 89778, + "end": 89792, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 91 }, "end": { - "line": 2468, + "line": 2469, "column": 105 }, "identifierName": "RepeatWrapping" @@ -69473,87 +69589,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 89758, - "end": 89995, + "start": 89794, + "end": 90031, "loc": { "start": { - "line": 2468, + "line": 2469, "column": 107 }, "end": { - "line": 2471, + "line": 2472, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 89772, - "end": 89949, + "start": 89808, + "end": 89985, "loc": { "start": { - "line": 2469, + "line": 2470, "column": 12 }, "end": { - "line": 2469, + "line": 2470, "column": 189 } }, "expression": { "type": "CallExpression", - "start": 89772, - "end": 89948, + "start": 89808, + "end": 89984, "loc": { "start": { - "line": 2469, + "line": 2470, "column": 12 }, "end": { - "line": 2469, + "line": 2470, "column": 188 } }, "callee": { "type": "MemberExpression", - "start": 89772, - "end": 89782, + "start": 89808, + "end": 89818, "loc": { "start": { - "line": 2469, + "line": 2470, "column": 12 }, "end": { - "line": 2469, + "line": 2470, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 89772, - "end": 89776, + "start": 89808, + "end": 89812, "loc": { "start": { - "line": 2469, + "line": 2470, "column": 12 }, "end": { - "line": 2469, + "line": 2470, "column": 16 } } }, "property": { "type": "Identifier", - "start": 89777, - "end": 89782, + "start": 89813, + "end": 89818, "loc": { "start": { - "line": 2469, + "line": 2470, "column": 17 }, "end": { - "line": 2469, + "line": 2470, "column": 22 }, "identifierName": "error" @@ -69565,15 +69681,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 89783, - "end": 89947, + "start": 89819, + "end": 89983, "loc": { "start": { - "line": 2469, + "line": 2470, "column": 23 }, "end": { - "line": 2469, + "line": 2470, "column": 187 } }, @@ -69581,15 +69697,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 89784, - "end": 89946, + "start": 89820, + "end": 89982, "loc": { "start": { - "line": 2469, + "line": 2470, "column": 24 }, "end": { - "line": 2469, + "line": 2470, "column": 186 } }, @@ -69606,44 +69722,44 @@ }, { "type": "ExpressionStatement", - "start": 89962, - "end": 89985, + "start": 89998, + "end": 90021, "loc": { "start": { - "line": 2470, + "line": 2471, "column": 12 }, "end": { - "line": 2470, + "line": 2471, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 89962, - "end": 89984, + "start": 89998, + "end": 90020, "loc": { "start": { - "line": 2470, + "line": 2471, "column": 12 }, "end": { - "line": 2470, + "line": 2471, "column": 34 } }, "operator": "=", "left": { "type": "Identifier", - "start": 89962, - "end": 89967, + "start": 89998, + "end": 90003, "loc": { "start": { - "line": 2470, + "line": 2471, "column": 12 }, "end": { - "line": 2470, + "line": 2471, "column": 17 }, "identifierName": "wrapT" @@ -69652,15 +69768,15 @@ }, "right": { "type": "Identifier", - "start": 89970, - "end": 89984, + "start": 90006, + "end": 90020, "loc": { "start": { - "line": 2470, + "line": 2471, "column": 20 }, "end": { - "line": 2470, + "line": 2471, "column": 34 }, "identifierName": "RepeatWrapping" @@ -69676,44 +69792,44 @@ }, { "type": "VariableDeclaration", - "start": 90004, - "end": 90044, + "start": 90040, + "end": 90080, "loc": { "start": { - "line": 2472, + "line": 2473, "column": 8 }, "end": { - "line": 2472, + "line": 2473, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 90008, - "end": 90043, + "start": 90044, + "end": 90079, "loc": { "start": { - "line": 2472, + "line": 2473, "column": 12 }, "end": { - "line": 2472, + "line": 2473, "column": 47 } }, "id": { "type": "Identifier", - "start": 90008, - "end": 90013, + "start": 90044, + "end": 90049, "loc": { "start": { - "line": 2472, + "line": 2473, "column": 12 }, "end": { - "line": 2472, + "line": 2473, "column": 17 }, "identifierName": "wrapR" @@ -69722,43 +69838,43 @@ }, "init": { "type": "LogicalExpression", - "start": 90016, - "end": 90043, + "start": 90052, + "end": 90079, "loc": { "start": { - "line": 2472, + "line": 2473, "column": 20 }, "end": { - "line": 2472, + "line": 2473, "column": 47 } }, "left": { "type": "MemberExpression", - "start": 90016, - "end": 90025, + "start": 90052, + "end": 90061, "loc": { "start": { - "line": 2472, + "line": 2473, "column": 20 }, "end": { - "line": 2472, + "line": 2473, "column": 29 } }, "object": { "type": "Identifier", - "start": 90016, - "end": 90019, + "start": 90052, + "end": 90055, "loc": { "start": { - "line": 2472, + "line": 2473, "column": 20 }, "end": { - "line": 2472, + "line": 2473, "column": 23 }, "identifierName": "cfg" @@ -69767,15 +69883,15 @@ }, "property": { "type": "Identifier", - "start": 90020, - "end": 90025, + "start": 90056, + "end": 90061, "loc": { "start": { - "line": 2472, + "line": 2473, "column": 24 }, "end": { - "line": 2472, + "line": 2473, "column": 29 }, "identifierName": "wrapR" @@ -69787,15 +69903,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 90029, - "end": 90043, + "start": 90065, + "end": 90079, "loc": { "start": { - "line": 2472, + "line": 2473, "column": 33 }, "end": { - "line": 2472, + "line": 2473, "column": 47 }, "identifierName": "RepeatWrapping" @@ -69809,71 +69925,71 @@ }, { "type": "IfStatement", - "start": 90053, - "end": 90389, + "start": 90089, + "end": 90425, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 8 }, "end": { - "line": 2476, + "line": 2477, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 90057, - "end": 90150, + "start": 90093, + "end": 90186, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 12 }, "end": { - "line": 2473, + "line": 2474, "column": 105 } }, "left": { "type": "LogicalExpression", - "start": 90057, - "end": 90122, + "start": 90093, + "end": 90158, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 12 }, "end": { - "line": 2473, + "line": 2474, "column": 77 } }, "left": { "type": "BinaryExpression", - "start": 90057, - "end": 90086, + "start": 90093, + "end": 90122, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 12 }, "end": { - "line": 2473, + "line": 2474, "column": 41 } }, "left": { "type": "Identifier", - "start": 90057, - "end": 90062, + "start": 90093, + "end": 90098, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 12 }, "end": { - "line": 2473, + "line": 2474, "column": 17 }, "identifierName": "wrapR" @@ -69883,15 +69999,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 90067, - "end": 90086, + "start": 90103, + "end": 90122, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 22 }, "end": { - "line": 2473, + "line": 2474, "column": 41 }, "identifierName": "ClampToEdgeWrapping" @@ -69902,29 +70018,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 90090, - "end": 90122, + "start": 90126, + "end": 90158, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 45 }, "end": { - "line": 2473, + "line": 2474, "column": 77 } }, "left": { "type": "Identifier", - "start": 90090, - "end": 90095, + "start": 90126, + "end": 90131, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 45 }, "end": { - "line": 2473, + "line": 2474, "column": 50 }, "identifierName": "wrapR" @@ -69934,15 +70050,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 90100, - "end": 90122, + "start": 90136, + "end": 90158, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 55 }, "end": { - "line": 2473, + "line": 2474, "column": 77 }, "identifierName": "MirroredRepeatWrapping" @@ -69954,29 +70070,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 90126, - "end": 90150, + "start": 90162, + "end": 90186, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 81 }, "end": { - "line": 2473, + "line": 2474, "column": 105 } }, "left": { "type": "Identifier", - "start": 90126, - "end": 90131, + "start": 90162, + "end": 90167, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 81 }, "end": { - "line": 2473, + "line": 2474, "column": 86 }, "identifierName": "wrapR" @@ -69986,15 +70102,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 90136, - "end": 90150, + "start": 90172, + "end": 90186, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 91 }, "end": { - "line": 2473, + "line": 2474, "column": 105 }, "identifierName": "RepeatWrapping" @@ -70005,87 +70121,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 90152, - "end": 90389, + "start": 90188, + "end": 90425, "loc": { "start": { - "line": 2473, + "line": 2474, "column": 107 }, "end": { - "line": 2476, + "line": 2477, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 90166, - "end": 90343, + "start": 90202, + "end": 90379, "loc": { "start": { - "line": 2474, + "line": 2475, "column": 12 }, "end": { - "line": 2474, + "line": 2475, "column": 189 } }, "expression": { "type": "CallExpression", - "start": 90166, - "end": 90342, + "start": 90202, + "end": 90378, "loc": { "start": { - "line": 2474, + "line": 2475, "column": 12 }, "end": { - "line": 2474, + "line": 2475, "column": 188 } }, "callee": { "type": "MemberExpression", - "start": 90166, - "end": 90176, + "start": 90202, + "end": 90212, "loc": { "start": { - "line": 2474, + "line": 2475, "column": 12 }, "end": { - "line": 2474, + "line": 2475, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 90166, - "end": 90170, + "start": 90202, + "end": 90206, "loc": { "start": { - "line": 2474, + "line": 2475, "column": 12 }, "end": { - "line": 2474, + "line": 2475, "column": 16 } } }, "property": { "type": "Identifier", - "start": 90171, - "end": 90176, + "start": 90207, + "end": 90212, "loc": { "start": { - "line": 2474, + "line": 2475, "column": 17 }, "end": { - "line": 2474, + "line": 2475, "column": 22 }, "identifierName": "error" @@ -70097,15 +70213,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 90177, - "end": 90341, + "start": 90213, + "end": 90377, "loc": { "start": { - "line": 2474, + "line": 2475, "column": 23 }, "end": { - "line": 2474, + "line": 2475, "column": 187 } }, @@ -70113,15 +70229,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 90178, - "end": 90340, + "start": 90214, + "end": 90376, "loc": { "start": { - "line": 2474, + "line": 2475, "column": 24 }, "end": { - "line": 2474, + "line": 2475, "column": 186 } }, @@ -70138,44 +70254,44 @@ }, { "type": "ExpressionStatement", - "start": 90356, - "end": 90379, + "start": 90392, + "end": 90415, "loc": { "start": { - "line": 2475, + "line": 2476, "column": 12 }, "end": { - "line": 2475, + "line": 2476, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 90356, - "end": 90378, + "start": 90392, + "end": 90414, "loc": { "start": { - "line": 2475, + "line": 2476, "column": 12 }, "end": { - "line": 2475, + "line": 2476, "column": 34 } }, "operator": "=", "left": { "type": "Identifier", - "start": 90356, - "end": 90361, + "start": 90392, + "end": 90397, "loc": { "start": { - "line": 2475, + "line": 2476, "column": 12 }, "end": { - "line": 2475, + "line": 2476, "column": 17 }, "identifierName": "wrapR" @@ -70184,15 +70300,15 @@ }, "right": { "type": "Identifier", - "start": 90364, - "end": 90378, + "start": 90400, + "end": 90414, "loc": { "start": { - "line": 2475, + "line": 2476, "column": 20 }, "end": { - "line": 2475, + "line": 2476, "column": 34 }, "identifierName": "RepeatWrapping" @@ -70208,44 +70324,44 @@ }, { "type": "VariableDeclaration", - "start": 90398, - "end": 90444, + "start": 90434, + "end": 90480, "loc": { "start": { - "line": 2477, + "line": 2478, "column": 8 }, "end": { - "line": 2477, + "line": 2478, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 90402, - "end": 90443, + "start": 90438, + "end": 90479, "loc": { "start": { - "line": 2477, + "line": 2478, "column": 12 }, "end": { - "line": 2477, + "line": 2478, "column": 53 } }, "id": { "type": "Identifier", - "start": 90402, - "end": 90410, + "start": 90438, + "end": 90446, "loc": { "start": { - "line": 2477, + "line": 2478, "column": 12 }, "end": { - "line": 2477, + "line": 2478, "column": 20 }, "identifierName": "encoding" @@ -70254,43 +70370,43 @@ }, "init": { "type": "LogicalExpression", - "start": 90413, - "end": 90443, + "start": 90449, + "end": 90479, "loc": { "start": { - "line": 2477, + "line": 2478, "column": 23 }, "end": { - "line": 2477, + "line": 2478, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 90413, - "end": 90425, + "start": 90449, + "end": 90461, "loc": { "start": { - "line": 2477, + "line": 2478, "column": 23 }, "end": { - "line": 2477, + "line": 2478, "column": 35 } }, "object": { "type": "Identifier", - "start": 90413, - "end": 90416, + "start": 90449, + "end": 90452, "loc": { "start": { - "line": 2477, + "line": 2478, "column": 23 }, "end": { - "line": 2477, + "line": 2478, "column": 26 }, "identifierName": "cfg" @@ -70299,15 +70415,15 @@ }, "property": { "type": "Identifier", - "start": 90417, - "end": 90425, + "start": 90453, + "end": 90461, "loc": { "start": { - "line": 2477, + "line": 2478, "column": 27 }, "end": { - "line": 2477, + "line": 2478, "column": 35 }, "identifierName": "encoding" @@ -70319,15 +70435,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 90429, - "end": 90443, + "start": 90465, + "end": 90479, "loc": { "start": { - "line": 2477, + "line": 2478, "column": 39 }, "end": { - "line": 2477, + "line": 2478, "column": 53 }, "identifierName": "LinearEncoding" @@ -70341,57 +70457,57 @@ }, { "type": "IfStatement", - "start": 90453, - "end": 90727, + "start": 90489, + "end": 90763, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 8 }, "end": { - "line": 2481, + "line": 2482, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 90457, - "end": 90513, + "start": 90493, + "end": 90549, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 12 }, "end": { - "line": 2478, + "line": 2479, "column": 68 } }, "left": { "type": "BinaryExpression", - "start": 90457, - "end": 90484, + "start": 90493, + "end": 90520, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 12 }, "end": { - "line": 2478, + "line": 2479, "column": 39 } }, "left": { "type": "Identifier", - "start": 90457, - "end": 90465, + "start": 90493, + "end": 90501, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 12 }, "end": { - "line": 2478, + "line": 2479, "column": 20 }, "identifierName": "encoding" @@ -70401,15 +70517,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 90470, - "end": 90484, + "start": 90506, + "end": 90520, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 25 }, "end": { - "line": 2478, + "line": 2479, "column": 39 }, "identifierName": "LinearEncoding" @@ -70420,29 +70536,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 90488, - "end": 90513, + "start": 90524, + "end": 90549, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 43 }, "end": { - "line": 2478, + "line": 2479, "column": 68 } }, "left": { "type": "Identifier", - "start": 90488, - "end": 90496, + "start": 90524, + "end": 90532, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 43 }, "end": { - "line": 2478, + "line": 2479, "column": 51 }, "identifierName": "encoding" @@ -70452,15 +70568,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 90501, - "end": 90513, + "start": 90537, + "end": 90549, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 56 }, "end": { - "line": 2478, + "line": 2479, "column": 68 }, "identifierName": "sRGBEncoding" @@ -70471,87 +70587,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 90515, - "end": 90727, + "start": 90551, + "end": 90763, "loc": { "start": { - "line": 2478, + "line": 2479, "column": 70 }, "end": { - "line": 2481, + "line": 2482, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 90529, - "end": 90678, + "start": 90565, + "end": 90714, "loc": { "start": { - "line": 2479, + "line": 2480, "column": 12 }, "end": { - "line": 2479, + "line": 2480, "column": 161 } }, "expression": { "type": "CallExpression", - "start": 90529, - "end": 90677, + "start": 90565, + "end": 90713, "loc": { "start": { - "line": 2479, + "line": 2480, "column": 12 }, "end": { - "line": 2479, + "line": 2480, "column": 160 } }, "callee": { "type": "MemberExpression", - "start": 90529, - "end": 90539, + "start": 90565, + "end": 90575, "loc": { "start": { - "line": 2479, + "line": 2480, "column": 12 }, "end": { - "line": 2479, + "line": 2480, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 90529, - "end": 90533, + "start": 90565, + "end": 90569, "loc": { "start": { - "line": 2479, + "line": 2480, "column": 12 }, "end": { - "line": 2479, + "line": 2480, "column": 16 } } }, "property": { "type": "Identifier", - "start": 90534, - "end": 90539, + "start": 90570, + "end": 90575, "loc": { "start": { - "line": 2479, + "line": 2480, "column": 17 }, "end": { - "line": 2479, + "line": 2480, "column": 22 }, "identifierName": "error" @@ -70563,15 +70679,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 90540, - "end": 90676, + "start": 90576, + "end": 90712, "loc": { "start": { - "line": 2479, + "line": 2480, "column": 23 }, "end": { - "line": 2479, + "line": 2480, "column": 159 } }, @@ -70586,44 +70702,44 @@ }, { "type": "ExpressionStatement", - "start": 90691, - "end": 90717, + "start": 90727, + "end": 90753, "loc": { "start": { - "line": 2480, + "line": 2481, "column": 12 }, "end": { - "line": 2480, + "line": 2481, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 90691, - "end": 90716, + "start": 90727, + "end": 90752, "loc": { "start": { - "line": 2480, + "line": 2481, "column": 12 }, "end": { - "line": 2480, + "line": 2481, "column": 37 } }, "operator": "=", "left": { "type": "Identifier", - "start": 90691, - "end": 90699, + "start": 90727, + "end": 90735, "loc": { "start": { - "line": 2480, + "line": 2481, "column": 12 }, "end": { - "line": 2480, + "line": 2481, "column": 20 }, "identifierName": "encoding" @@ -70632,15 +70748,15 @@ }, "right": { "type": "Identifier", - "start": 90702, - "end": 90716, + "start": 90738, + "end": 90752, "loc": { "start": { - "line": 2480, + "line": 2481, "column": 23 }, "end": { - "line": 2480, + "line": 2481, "column": 37 }, "identifierName": "LinearEncoding" @@ -70656,44 +70772,44 @@ }, { "type": "VariableDeclaration", - "start": 90736, - "end": 90974, + "start": 90772, + "end": 91010, "loc": { "start": { - "line": 2482, + "line": 2483, "column": 8 }, "end": { - "line": 2491, + "line": 2492, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 90742, - "end": 90973, + "start": 90778, + "end": 91009, "loc": { "start": { - "line": 2482, + "line": 2483, "column": 14 }, "end": { - "line": 2491, + "line": 2492, "column": 10 } }, "id": { "type": "Identifier", - "start": 90742, - "end": 90749, + "start": 90778, + "end": 90785, "loc": { "start": { - "line": 2482, + "line": 2483, "column": 14 }, "end": { - "line": 2482, + "line": 2483, "column": 21 }, "identifierName": "texture" @@ -70702,29 +70818,29 @@ }, "init": { "type": "NewExpression", - "start": 90752, - "end": 90973, + "start": 90788, + "end": 91009, "loc": { "start": { - "line": 2482, + "line": 2483, "column": 24 }, "end": { - "line": 2491, + "line": 2492, "column": 10 } }, "callee": { "type": "Identifier", - "start": 90756, - "end": 90765, + "start": 90792, + "end": 90801, "loc": { "start": { - "line": 2482, + "line": 2483, "column": 28 }, "end": { - "line": 2482, + "line": 2483, "column": 37 }, "identifierName": "Texture2D" @@ -70734,30 +70850,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 90766, - "end": 90972, + "start": 90802, + "end": 91008, "loc": { "start": { - "line": 2482, + "line": 2483, "column": 38 }, "end": { - "line": 2491, + "line": 2492, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 90780, - "end": 90804, + "start": 90816, + "end": 90840, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 12 }, "end": { - "line": 2483, + "line": 2484, "column": 36 } }, @@ -70766,15 +70882,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 90780, - "end": 90782, + "start": 90816, + "end": 90818, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 12 }, "end": { - "line": 2483, + "line": 2484, "column": 14 }, "identifierName": "gl" @@ -70783,72 +70899,72 @@ }, "value": { "type": "MemberExpression", - "start": 90784, - "end": 90804, + "start": 90820, + "end": 90840, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 16 }, "end": { - "line": 2483, + "line": 2484, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 90784, - "end": 90801, + "start": 90820, + "end": 90837, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 16 }, "end": { - "line": 2483, + "line": 2484, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 90784, - "end": 90794, + "start": 90820, + "end": 90830, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 16 }, "end": { - "line": 2483, + "line": 2484, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 90784, - "end": 90788, + "start": 90820, + "end": 90824, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 16 }, "end": { - "line": 2483, + "line": 2484, "column": 20 } } }, "property": { "type": "Identifier", - "start": 90789, - "end": 90794, + "start": 90825, + "end": 90830, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 21 }, "end": { - "line": 2483, + "line": 2484, "column": 26 }, "identifierName": "scene" @@ -70859,15 +70975,15 @@ }, "property": { "type": "Identifier", - "start": 90795, - "end": 90801, + "start": 90831, + "end": 90837, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 27 }, "end": { - "line": 2483, + "line": 2484, "column": 33 }, "identifierName": "canvas" @@ -70878,15 +70994,15 @@ }, "property": { "type": "Identifier", - "start": 90802, - "end": 90804, + "start": 90838, + "end": 90840, "loc": { "start": { - "line": 2483, + "line": 2484, "column": 34 }, "end": { - "line": 2483, + "line": 2484, "column": 36 }, "identifierName": "gl" @@ -70898,15 +71014,15 @@ }, { "type": "ObjectProperty", - "start": 90818, - "end": 90827, + "start": 90854, + "end": 90863, "loc": { "start": { - "line": 2484, + "line": 2485, "column": 12 }, "end": { - "line": 2484, + "line": 2485, "column": 21 } }, @@ -70915,15 +71031,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 90818, - "end": 90827, + "start": 90854, + "end": 90863, "loc": { "start": { - "line": 2484, + "line": 2485, "column": 12 }, "end": { - "line": 2484, + "line": 2485, "column": 21 }, "identifierName": "minFilter" @@ -70932,15 +71048,15 @@ }, "value": { "type": "Identifier", - "start": 90818, - "end": 90827, + "start": 90854, + "end": 90863, "loc": { "start": { - "line": 2484, + "line": 2485, "column": 12 }, "end": { - "line": 2484, + "line": 2485, "column": 21 }, "identifierName": "minFilter" @@ -70953,15 +71069,15 @@ }, { "type": "ObjectProperty", - "start": 90841, - "end": 90850, + "start": 90877, + "end": 90886, "loc": { "start": { - "line": 2485, + "line": 2486, "column": 12 }, "end": { - "line": 2485, + "line": 2486, "column": 21 } }, @@ -70970,15 +71086,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 90841, - "end": 90850, + "start": 90877, + "end": 90886, "loc": { "start": { - "line": 2485, + "line": 2486, "column": 12 }, "end": { - "line": 2485, + "line": 2486, "column": 21 }, "identifierName": "magFilter" @@ -70987,15 +71103,15 @@ }, "value": { "type": "Identifier", - "start": 90841, - "end": 90850, + "start": 90877, + "end": 90886, "loc": { "start": { - "line": 2485, + "line": 2486, "column": 12 }, "end": { - "line": 2485, + "line": 2486, "column": 21 }, "identifierName": "magFilter" @@ -71008,15 +71124,15 @@ }, { "type": "ObjectProperty", - "start": 90864, - "end": 90869, + "start": 90900, + "end": 90905, "loc": { "start": { - "line": 2486, + "line": 2487, "column": 12 }, "end": { - "line": 2486, + "line": 2487, "column": 17 } }, @@ -71025,15 +71141,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 90864, - "end": 90869, + "start": 90900, + "end": 90905, "loc": { "start": { - "line": 2486, + "line": 2487, "column": 12 }, "end": { - "line": 2486, + "line": 2487, "column": 17 }, "identifierName": "wrapS" @@ -71042,15 +71158,15 @@ }, "value": { "type": "Identifier", - "start": 90864, - "end": 90869, + "start": 90900, + "end": 90905, "loc": { "start": { - "line": 2486, + "line": 2487, "column": 12 }, "end": { - "line": 2486, + "line": 2487, "column": 17 }, "identifierName": "wrapS" @@ -71063,15 +71179,15 @@ }, { "type": "ObjectProperty", - "start": 90883, - "end": 90888, + "start": 90919, + "end": 90924, "loc": { "start": { - "line": 2487, + "line": 2488, "column": 12 }, "end": { - "line": 2487, + "line": 2488, "column": 17 } }, @@ -71080,15 +71196,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 90883, - "end": 90888, + "start": 90919, + "end": 90924, "loc": { "start": { - "line": 2487, + "line": 2488, "column": 12 }, "end": { - "line": 2487, + "line": 2488, "column": 17 }, "identifierName": "wrapT" @@ -71097,15 +71213,15 @@ }, "value": { "type": "Identifier", - "start": 90883, - "end": 90888, + "start": 90919, + "end": 90924, "loc": { "start": { - "line": 2487, + "line": 2488, "column": 12 }, "end": { - "line": 2487, + "line": 2488, "column": 17 }, "identifierName": "wrapT" @@ -71118,15 +71234,15 @@ }, { "type": "ObjectProperty", - "start": 90902, - "end": 90907, + "start": 90938, + "end": 90943, "loc": { "start": { - "line": 2488, + "line": 2489, "column": 12 }, "end": { - "line": 2488, + "line": 2489, "column": 17 } }, @@ -71135,15 +71251,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 90902, - "end": 90907, + "start": 90938, + "end": 90943, "loc": { "start": { - "line": 2488, + "line": 2489, "column": 12 }, "end": { - "line": 2488, + "line": 2489, "column": 17 }, "identifierName": "wrapR" @@ -71152,15 +71268,15 @@ }, "value": { "type": "Identifier", - "start": 90902, - "end": 90907, + "start": 90938, + "end": 90943, "loc": { "start": { - "line": 2488, + "line": 2489, "column": 12 }, "end": { - "line": 2488, + "line": 2489, "column": 17 }, "identifierName": "wrapR" @@ -71173,15 +71289,15 @@ }, { "type": "ObjectProperty", - "start": 90954, - "end": 90962, + "start": 90990, + "end": 90998, "loc": { "start": { - "line": 2490, + "line": 2491, "column": 12 }, "end": { - "line": 2490, + "line": 2491, "column": 20 } }, @@ -71190,15 +71306,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 90954, - "end": 90962, + "start": 90990, + "end": 90998, "loc": { "start": { - "line": 2490, + "line": 2491, "column": 12 }, "end": { - "line": 2490, + "line": 2491, "column": 20 }, "identifierName": "encoding" @@ -71208,15 +71324,15 @@ }, "value": { "type": "Identifier", - "start": 90954, - "end": 90962, + "start": 90990, + "end": 90998, "loc": { "start": { - "line": 2490, + "line": 2491, "column": 12 }, "end": { - "line": 2490, + "line": 2491, "column": 20 }, "identifierName": "encoding" @@ -71227,15 +71343,15 @@ { "type": "CommentLine", "value": " flipY: cfg.flipY,", - "start": 90921, - "end": 90941, + "start": 90957, + "end": 90977, "loc": { "start": { - "line": 2489, + "line": 2490, "column": 12 }, "end": { - "line": 2489, + "line": 2490, "column": 32 } } @@ -71255,43 +71371,43 @@ }, { "type": "IfStatement", - "start": 90983, - "end": 91071, + "start": 91019, + "end": 91107, "loc": { "start": { - "line": 2492, + "line": 2493, "column": 8 }, "end": { - "line": 2494, + "line": 2495, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 90987, - "end": 91003, + "start": 91023, + "end": 91039, "loc": { "start": { - "line": 2492, + "line": 2493, "column": 12 }, "end": { - "line": 2492, + "line": 2493, "column": 28 } }, "object": { "type": "Identifier", - "start": 90987, - "end": 90990, + "start": 91023, + "end": 91026, "loc": { "start": { - "line": 2492, + "line": 2493, "column": 12 }, "end": { - "line": 2492, + "line": 2493, "column": 15 }, "identifierName": "cfg" @@ -71300,15 +71416,15 @@ }, "property": { "type": "Identifier", - "start": 90991, - "end": 91003, + "start": 91027, + "end": 91039, "loc": { "start": { - "line": 2492, + "line": 2493, "column": 16 }, "end": { - "line": 2492, + "line": 2493, "column": 28 }, "identifierName": "preloadColor" @@ -71319,72 +71435,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 91005, - "end": 91071, + "start": 91041, + "end": 91107, "loc": { "start": { - "line": 2492, + "line": 2493, "column": 30 }, "end": { - "line": 2494, + "line": 2495, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 91019, - "end": 91061, + "start": 91055, + "end": 91097, "loc": { "start": { - "line": 2493, + "line": 2494, "column": 12 }, "end": { - "line": 2493, + "line": 2494, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 91019, - "end": 91060, + "start": 91055, + "end": 91096, "loc": { "start": { - "line": 2493, + "line": 2494, "column": 12 }, "end": { - "line": 2493, + "line": 2494, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 91019, - "end": 91042, + "start": 91055, + "end": 91078, "loc": { "start": { - "line": 2493, + "line": 2494, "column": 12 }, "end": { - "line": 2493, + "line": 2494, "column": 35 } }, "object": { "type": "Identifier", - "start": 91019, - "end": 91026, + "start": 91055, + "end": 91062, "loc": { "start": { - "line": 2493, + "line": 2494, "column": 12 }, "end": { - "line": 2493, + "line": 2494, "column": 19 }, "identifierName": "texture" @@ -71393,15 +71509,15 @@ }, "property": { "type": "Identifier", - "start": 91027, - "end": 91042, + "start": 91063, + "end": 91078, "loc": { "start": { - "line": 2493, + "line": 2494, "column": 20 }, "end": { - "line": 2493, + "line": 2494, "column": 35 }, "identifierName": "setPreloadColor" @@ -71413,29 +71529,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 91043, - "end": 91059, + "start": 91079, + "end": 91095, "loc": { "start": { - "line": 2493, + "line": 2494, "column": 36 }, "end": { - "line": 2493, + "line": 2494, "column": 52 } }, "object": { "type": "Identifier", - "start": 91043, - "end": 91046, + "start": 91079, + "end": 91082, "loc": { "start": { - "line": 2493, + "line": 2494, "column": 36 }, "end": { - "line": 2493, + "line": 2494, "column": 39 }, "identifierName": "cfg" @@ -71444,15 +71560,15 @@ }, "property": { "type": "Identifier", - "start": 91047, - "end": 91059, + "start": 91083, + "end": 91095, "loc": { "start": { - "line": 2493, + "line": 2494, "column": 40 }, "end": { - "line": 2493, + "line": 2494, "column": 52 }, "identifierName": "preloadColor" @@ -71471,43 +71587,43 @@ }, { "type": "IfStatement", - "start": 91080, - "end": 93784, + "start": 91116, + "end": 93820, "loc": { "start": { - "line": 2495, + "line": 2496, "column": 8 }, "end": { - "line": 2548, + "line": 2549, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 91084, - "end": 91093, + "start": 91120, + "end": 91129, "loc": { "start": { - "line": 2495, + "line": 2496, "column": 12 }, "end": { - "line": 2495, + "line": 2496, "column": 21 } }, "object": { "type": "Identifier", - "start": 91084, - "end": 91087, + "start": 91120, + "end": 91123, "loc": { "start": { - "line": 2495, + "line": 2496, "column": 12 }, "end": { - "line": 2495, + "line": 2496, "column": 15 }, "identifierName": "cfg" @@ -71516,15 +71632,15 @@ }, "property": { "type": "Identifier", - "start": 91088, - "end": 91093, + "start": 91124, + "end": 91129, "loc": { "start": { - "line": 2495, + "line": 2496, "column": 16 }, "end": { - "line": 2495, + "line": 2496, "column": 21 }, "identifierName": "image" @@ -71535,59 +71651,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 91095, - "end": 91330, + "start": 91131, + "end": 91366, "loc": { "start": { - "line": 2495, + "line": 2496, "column": 23 }, "end": { - "line": 2499, + "line": 2500, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 91141, - "end": 91165, + "start": 91177, + "end": 91201, "loc": { "start": { - "line": 2496, + "line": 2497, "column": 12 }, "end": { - "line": 2496, + "line": 2497, "column": 36 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 91147, - "end": 91164, + "start": 91183, + "end": 91200, "loc": { "start": { - "line": 2496, + "line": 2497, "column": 18 }, "end": { - "line": 2496, + "line": 2497, "column": 35 } }, "id": { "type": "Identifier", - "start": 91147, - "end": 91152, + "start": 91183, + "end": 91188, "loc": { "start": { - "line": 2496, + "line": 2497, "column": 18 }, "end": { - "line": 2496, + "line": 2497, "column": 23 }, "identifierName": "image" @@ -71597,29 +71713,29 @@ }, "init": { "type": "MemberExpression", - "start": 91155, - "end": 91164, + "start": 91191, + "end": 91200, "loc": { "start": { - "line": 2496, + "line": 2497, "column": 26 }, "end": { - "line": 2496, + "line": 2497, "column": 35 } }, "object": { "type": "Identifier", - "start": 91155, - "end": 91158, + "start": 91191, + "end": 91194, "loc": { "start": { - "line": 2496, + "line": 2497, "column": 26 }, "end": { - "line": 2496, + "line": 2497, "column": 29 }, "identifierName": "cfg" @@ -71628,15 +71744,15 @@ }, "property": { "type": "Identifier", - "start": 91159, - "end": 91164, + "start": 91195, + "end": 91200, "loc": { "start": { - "line": 2496, + "line": 2497, "column": 30 }, "end": { - "line": 2496, + "line": 2497, "column": 35 }, "identifierName": "image" @@ -71653,15 +71769,15 @@ { "type": "CommentLine", "value": " Ignore transcoder for Images", - "start": 91097, - "end": 91128, + "start": 91133, + "end": 91164, "loc": { "start": { - "line": 2495, + "line": 2496, "column": 25 }, "end": { - "line": 2495, + "line": 2496, "column": 56 } } @@ -71670,58 +71786,58 @@ }, { "type": "ExpressionStatement", - "start": 91178, - "end": 91210, + "start": 91214, + "end": 91246, "loc": { "start": { - "line": 2497, + "line": 2498, "column": 12 }, "end": { - "line": 2497, + "line": 2498, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 91178, - "end": 91209, + "start": 91214, + "end": 91245, "loc": { "start": { - "line": 2497, + "line": 2498, "column": 12 }, "end": { - "line": 2497, + "line": 2498, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 91178, - "end": 91195, + "start": 91214, + "end": 91231, "loc": { "start": { - "line": 2497, + "line": 2498, "column": 12 }, "end": { - "line": 2497, + "line": 2498, "column": 29 } }, "object": { "type": "Identifier", - "start": 91178, - "end": 91183, + "start": 91214, + "end": 91219, "loc": { "start": { - "line": 2497, + "line": 2498, "column": 12 }, "end": { - "line": 2497, + "line": 2498, "column": 17 }, "identifierName": "image" @@ -71730,15 +71846,15 @@ }, "property": { "type": "Identifier", - "start": 91184, - "end": 91195, + "start": 91220, + "end": 91231, "loc": { "start": { - "line": 2497, + "line": 2498, "column": 18 }, "end": { - "line": 2497, + "line": 2498, "column": 29 }, "identifierName": "crossOrigin" @@ -71749,15 +71865,15 @@ }, "right": { "type": "StringLiteral", - "start": 91198, - "end": 91209, + "start": 91234, + "end": 91245, "loc": { "start": { - "line": 2497, + "line": 2498, "column": 32 }, "end": { - "line": 2497, + "line": 2498, "column": 43 } }, @@ -71771,57 +71887,57 @@ }, { "type": "ExpressionStatement", - "start": 91223, - "end": 91320, + "start": 91259, + "end": 91356, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 12 }, "end": { - "line": 2498, + "line": 2499, "column": 109 } }, "expression": { "type": "CallExpression", - "start": 91223, - "end": 91319, + "start": 91259, + "end": 91355, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 12 }, "end": { - "line": 2498, + "line": 2499, "column": 108 } }, "callee": { "type": "MemberExpression", - "start": 91223, - "end": 91239, + "start": 91259, + "end": 91275, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 12 }, "end": { - "line": 2498, + "line": 2499, "column": 28 } }, "object": { "type": "Identifier", - "start": 91223, - "end": 91230, + "start": 91259, + "end": 91266, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 12 }, "end": { - "line": 2498, + "line": 2499, "column": 19 }, "identifierName": "texture" @@ -71830,15 +71946,15 @@ }, "property": { "type": "Identifier", - "start": 91231, - "end": 91239, + "start": 91267, + "end": 91275, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 20 }, "end": { - "line": 2498, + "line": 2499, "column": 28 }, "identifierName": "setImage" @@ -71850,15 +71966,15 @@ "arguments": [ { "type": "Identifier", - "start": 91240, - "end": 91245, + "start": 91276, + "end": 91281, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 29 }, "end": { - "line": 2498, + "line": 2499, "column": 34 }, "identifierName": "image" @@ -71867,30 +71983,30 @@ }, { "type": "ObjectExpression", - "start": 91247, - "end": 91318, + "start": 91283, + "end": 91354, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 36 }, "end": { - "line": 2498, + "line": 2499, "column": 107 } }, "properties": [ { "type": "ObjectProperty", - "start": 91248, - "end": 91257, + "start": 91284, + "end": 91293, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 37 }, "end": { - "line": 2498, + "line": 2499, "column": 46 } }, @@ -71899,15 +72015,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91248, - "end": 91257, + "start": 91284, + "end": 91293, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 37 }, "end": { - "line": 2498, + "line": 2499, "column": 46 }, "identifierName": "minFilter" @@ -71916,15 +72032,15 @@ }, "value": { "type": "Identifier", - "start": 91248, - "end": 91257, + "start": 91284, + "end": 91293, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 37 }, "end": { - "line": 2498, + "line": 2499, "column": 46 }, "identifierName": "minFilter" @@ -71937,15 +72053,15 @@ }, { "type": "ObjectProperty", - "start": 91259, - "end": 91268, + "start": 91295, + "end": 91304, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 48 }, "end": { - "line": 2498, + "line": 2499, "column": 57 } }, @@ -71954,15 +72070,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91259, - "end": 91268, + "start": 91295, + "end": 91304, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 48 }, "end": { - "line": 2498, + "line": 2499, "column": 57 }, "identifierName": "magFilter" @@ -71971,15 +72087,15 @@ }, "value": { "type": "Identifier", - "start": 91259, - "end": 91268, + "start": 91295, + "end": 91304, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 48 }, "end": { - "line": 2498, + "line": 2499, "column": 57 }, "identifierName": "magFilter" @@ -71992,15 +72108,15 @@ }, { "type": "ObjectProperty", - "start": 91270, - "end": 91275, + "start": 91306, + "end": 91311, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 59 }, "end": { - "line": 2498, + "line": 2499, "column": 64 } }, @@ -72009,15 +72125,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91270, - "end": 91275, + "start": 91306, + "end": 91311, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 59 }, "end": { - "line": 2498, + "line": 2499, "column": 64 }, "identifierName": "wrapS" @@ -72026,15 +72142,15 @@ }, "value": { "type": "Identifier", - "start": 91270, - "end": 91275, + "start": 91306, + "end": 91311, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 59 }, "end": { - "line": 2498, + "line": 2499, "column": 64 }, "identifierName": "wrapS" @@ -72047,15 +72163,15 @@ }, { "type": "ObjectProperty", - "start": 91277, - "end": 91282, + "start": 91313, + "end": 91318, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 66 }, "end": { - "line": 2498, + "line": 2499, "column": 71 } }, @@ -72064,15 +72180,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91277, - "end": 91282, + "start": 91313, + "end": 91318, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 66 }, "end": { - "line": 2498, + "line": 2499, "column": 71 }, "identifierName": "wrapT" @@ -72081,15 +72197,15 @@ }, "value": { "type": "Identifier", - "start": 91277, - "end": 91282, + "start": 91313, + "end": 91318, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 66 }, "end": { - "line": 2498, + "line": 2499, "column": 71 }, "identifierName": "wrapT" @@ -72102,15 +72218,15 @@ }, { "type": "ObjectProperty", - "start": 91284, - "end": 91289, + "start": 91320, + "end": 91325, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 73 }, "end": { - "line": 2498, + "line": 2499, "column": 78 } }, @@ -72119,15 +72235,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91284, - "end": 91289, + "start": 91320, + "end": 91325, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 73 }, "end": { - "line": 2498, + "line": 2499, "column": 78 }, "identifierName": "wrapR" @@ -72136,15 +72252,15 @@ }, "value": { "type": "Identifier", - "start": 91284, - "end": 91289, + "start": 91320, + "end": 91325, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 73 }, "end": { - "line": 2498, + "line": 2499, "column": 78 }, "identifierName": "wrapR" @@ -72157,15 +72273,15 @@ }, { "type": "ObjectProperty", - "start": 91291, - "end": 91307, + "start": 91327, + "end": 91343, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 80 }, "end": { - "line": 2498, + "line": 2499, "column": 96 } }, @@ -72174,15 +72290,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91291, - "end": 91296, + "start": 91327, + "end": 91332, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 80 }, "end": { - "line": 2498, + "line": 2499, "column": 85 }, "identifierName": "flipY" @@ -72191,29 +72307,29 @@ }, "value": { "type": "MemberExpression", - "start": 91298, - "end": 91307, + "start": 91334, + "end": 91343, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 87 }, "end": { - "line": 2498, + "line": 2499, "column": 96 } }, "object": { "type": "Identifier", - "start": 91298, - "end": 91301, + "start": 91334, + "end": 91337, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 87 }, "end": { - "line": 2498, + "line": 2499, "column": 90 }, "identifierName": "cfg" @@ -72222,15 +72338,15 @@ }, "property": { "type": "Identifier", - "start": 91302, - "end": 91307, + "start": 91338, + "end": 91343, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 91 }, "end": { - "line": 2498, + "line": 2499, "column": 96 }, "identifierName": "flipY" @@ -72242,15 +72358,15 @@ }, { "type": "ObjectProperty", - "start": 91309, - "end": 91317, + "start": 91345, + "end": 91353, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 98 }, "end": { - "line": 2498, + "line": 2499, "column": 106 } }, @@ -72259,15 +72375,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91309, - "end": 91317, + "start": 91345, + "end": 91353, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 98 }, "end": { - "line": 2498, + "line": 2499, "column": 106 }, "identifierName": "encoding" @@ -72276,15 +72392,15 @@ }, "value": { "type": "Identifier", - "start": 91309, - "end": 91317, + "start": 91345, + "end": 91353, "loc": { "start": { - "line": 2498, + "line": 2499, "column": 98 }, "end": { - "line": 2498, + "line": 2499, "column": 106 }, "identifierName": "encoding" @@ -72305,43 +72421,43 @@ }, "alternate": { "type": "IfStatement", - "start": 91336, - "end": 93784, + "start": 91372, + "end": 93820, "loc": { "start": { - "line": 2499, + "line": 2500, "column": 15 }, "end": { - "line": 2548, + "line": 2549, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 91340, - "end": 91347, + "start": 91376, + "end": 91383, "loc": { "start": { - "line": 2499, + "line": 2500, "column": 19 }, "end": { - "line": 2499, + "line": 2500, "column": 26 } }, "object": { "type": "Identifier", - "start": 91340, - "end": 91343, + "start": 91376, + "end": 91379, "loc": { "start": { - "line": 2499, + "line": 2500, "column": 19 }, "end": { - "line": 2499, + "line": 2500, "column": 22 }, "identifierName": "cfg" @@ -72350,15 +72466,15 @@ }, "property": { "type": "Identifier", - "start": 91344, - "end": 91347, + "start": 91380, + "end": 91383, "loc": { "start": { - "line": 2499, + "line": 2500, "column": 23 }, "end": { - "line": 2499, + "line": 2500, "column": 26 }, "identifierName": "src" @@ -72369,59 +72485,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 91349, - "end": 93327, + "start": 91385, + "end": 93363, "loc": { "start": { - "line": 2499, + "line": 2500, "column": 28 }, "end": { - "line": 2540, + "line": 2541, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 91363, - "end": 91400, + "start": 91399, + "end": 91436, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 12 }, "end": { - "line": 2500, + "line": 2501, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 91369, - "end": 91399, + "start": 91405, + "end": 91435, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 18 }, "end": { - "line": 2500, + "line": 2501, "column": 48 } }, "id": { "type": "Identifier", - "start": 91369, - "end": 91372, + "start": 91405, + "end": 91408, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 18 }, "end": { - "line": 2500, + "line": 2501, "column": 21 }, "identifierName": "ext" @@ -72430,85 +72546,85 @@ }, "init": { "type": "CallExpression", - "start": 91375, - "end": 91399, + "start": 91411, + "end": 91435, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 24 }, "end": { - "line": 2500, + "line": 2501, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 91375, - "end": 91397, + "start": 91411, + "end": 91433, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 24 }, "end": { - "line": 2500, + "line": 2501, "column": 46 } }, "object": { "type": "CallExpression", - "start": 91375, - "end": 91393, + "start": 91411, + "end": 91429, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 24 }, "end": { - "line": 2500, + "line": 2501, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 91375, - "end": 91388, + "start": 91411, + "end": 91424, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 24 }, "end": { - "line": 2500, + "line": 2501, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 91375, - "end": 91382, + "start": 91411, + "end": 91418, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 24 }, "end": { - "line": 2500, + "line": 2501, "column": 31 } }, "object": { "type": "Identifier", - "start": 91375, - "end": 91378, + "start": 91411, + "end": 91414, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 24 }, "end": { - "line": 2500, + "line": 2501, "column": 27 }, "identifierName": "cfg" @@ -72517,15 +72633,15 @@ }, "property": { "type": "Identifier", - "start": 91379, - "end": 91382, + "start": 91415, + "end": 91418, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 28 }, "end": { - "line": 2500, + "line": 2501, "column": 31 }, "identifierName": "src" @@ -72536,15 +72652,15 @@ }, "property": { "type": "Identifier", - "start": 91383, - "end": 91388, + "start": 91419, + "end": 91424, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 32 }, "end": { - "line": 2500, + "line": 2501, "column": 37 }, "identifierName": "split" @@ -72556,15 +72672,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 91389, - "end": 91392, + "start": 91425, + "end": 91428, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 38 }, "end": { - "line": 2500, + "line": 2501, "column": 41 } }, @@ -72578,15 +72694,15 @@ }, "property": { "type": "Identifier", - "start": 91394, - "end": 91397, + "start": 91430, + "end": 91433, "loc": { "start": { - "line": 2500, + "line": 2501, "column": 43 }, "end": { - "line": 2500, + "line": 2501, "column": 46 }, "identifierName": "pop" @@ -72603,29 +72719,29 @@ }, { "type": "SwitchStatement", - "start": 91413, - "end": 93317, + "start": 91449, + "end": 93353, "loc": { "start": { - "line": 2501, + "line": 2502, "column": 12 }, "end": { - "line": 2539, + "line": 2540, "column": 13 } }, "discriminant": { "type": "Identifier", - "start": 91421, - "end": 91424, + "start": 91457, + "end": 91460, "loc": { "start": { - "line": 2501, + "line": 2502, "column": 20 }, "end": { - "line": 2501, + "line": 2502, "column": 23 }, "identifierName": "ext" @@ -72635,30 +72751,30 @@ "cases": [ { "type": "SwitchCase", - "start": 91491, - "end": 91503, + "start": 91527, + "end": 91539, "loc": { "start": { - "line": 2502, + "line": 2503, "column": 16 }, "end": { - "line": 2502, + "line": 2503, "column": 28 } }, "consequent": [], "test": { "type": "StringLiteral", - "start": 91496, - "end": 91502, + "start": 91532, + "end": 91538, "loc": { "start": { - "line": 2502, + "line": 2503, "column": 21 }, "end": { - "line": 2502, + "line": 2503, "column": 27 } }, @@ -72673,15 +72789,15 @@ { "type": "CommentLine", "value": " Don't transcode recognized image file types", - "start": 91428, - "end": 91474, + "start": 91464, + "end": 91510, "loc": { "start": { - "line": 2501, + "line": 2502, "column": 27 }, "end": { - "line": 2501, + "line": 2502, "column": 73 } } @@ -72690,30 +72806,30 @@ }, { "type": "SwitchCase", - "start": 91520, - "end": 91531, + "start": 91556, + "end": 91567, "loc": { "start": { - "line": 2503, + "line": 2504, "column": 16 }, "end": { - "line": 2503, + "line": 2504, "column": 27 } }, "consequent": [], "test": { "type": "StringLiteral", - "start": 91525, - "end": 91530, + "start": 91561, + "end": 91566, "loc": { "start": { - "line": 2503, + "line": 2504, "column": 21 }, "end": { - "line": 2503, + "line": 2504, "column": 26 } }, @@ -72726,30 +72842,30 @@ }, { "type": "SwitchCase", - "start": 91548, - "end": 91559, + "start": 91584, + "end": 91595, "loc": { "start": { - "line": 2504, + "line": 2505, "column": 16 }, "end": { - "line": 2504, + "line": 2505, "column": 27 } }, "consequent": [], "test": { "type": "StringLiteral", - "start": 91553, - "end": 91558, + "start": 91589, + "end": 91594, "loc": { "start": { - "line": 2504, + "line": 2505, "column": 21 }, "end": { - "line": 2504, + "line": 2505, "column": 26 } }, @@ -72762,59 +72878,59 @@ }, { "type": "SwitchCase", - "start": 91576, - "end": 92177, + "start": 91612, + "end": 92213, "loc": { "start": { - "line": 2505, + "line": 2506, "column": 16 }, "end": { - "line": 2520, + "line": 2521, "column": 26 } }, "consequent": [ { "type": "VariableDeclaration", - "start": 91608, - "end": 91634, + "start": 91644, + "end": 91670, "loc": { "start": { - "line": 2506, + "line": 2507, "column": 20 }, "end": { - "line": 2506, + "line": 2507, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 91614, - "end": 91633, + "start": 91650, + "end": 91669, "loc": { "start": { - "line": 2506, + "line": 2507, "column": 26 }, "end": { - "line": 2506, + "line": 2507, "column": 45 } }, "id": { "type": "Identifier", - "start": 91614, - "end": 91619, + "start": 91650, + "end": 91655, "loc": { "start": { - "line": 2506, + "line": 2507, "column": 26 }, "end": { - "line": 2506, + "line": 2507, "column": 31 }, "identifierName": "image" @@ -72823,29 +72939,29 @@ }, "init": { "type": "NewExpression", - "start": 91622, - "end": 91633, + "start": 91658, + "end": 91669, "loc": { "start": { - "line": 2506, + "line": 2507, "column": 34 }, "end": { - "line": 2506, + "line": 2507, "column": 45 } }, "callee": { "type": "Identifier", - "start": 91626, - "end": 91631, + "start": 91662, + "end": 91667, "loc": { "start": { - "line": 2506, + "line": 2507, "column": 38 }, "end": { - "line": 2506, + "line": 2507, "column": 43 }, "identifierName": "Image" @@ -72860,58 +72976,58 @@ }, { "type": "ExpressionStatement", - "start": 91655, - "end": 92085, + "start": 91691, + "end": 92121, "loc": { "start": { - "line": 2507, + "line": 2508, "column": 20 }, "end": { - "line": 2518, + "line": 2519, "column": 22 } }, "expression": { "type": "AssignmentExpression", - "start": 91655, - "end": 92084, + "start": 91691, + "end": 92120, "loc": { "start": { - "line": 2507, + "line": 2508, "column": 20 }, "end": { - "line": 2518, + "line": 2519, "column": 21 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 91655, - "end": 91667, + "start": 91691, + "end": 91703, "loc": { "start": { - "line": 2507, + "line": 2508, "column": 20 }, "end": { - "line": 2507, + "line": 2508, "column": 32 } }, "object": { "type": "Identifier", - "start": 91655, - "end": 91660, + "start": 91691, + "end": 91696, "loc": { "start": { - "line": 2507, + "line": 2508, "column": 20 }, "end": { - "line": 2507, + "line": 2508, "column": 25 }, "identifierName": "image" @@ -72920,15 +73036,15 @@ }, "property": { "type": "Identifier", - "start": 91661, - "end": 91667, + "start": 91697, + "end": 91703, "loc": { "start": { - "line": 2507, + "line": 2508, "column": 26 }, "end": { - "line": 2507, + "line": 2508, "column": 32 }, "identifierName": "onload" @@ -72939,15 +73055,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 91670, - "end": 92084, + "start": 91706, + "end": 92120, "loc": { "start": { - "line": 2507, + "line": 2508, "column": 35 }, "end": { - "line": 2518, + "line": 2519, "column": 21 } }, @@ -72958,72 +73074,72 @@ "params": [], "body": { "type": "BlockStatement", - "start": 91676, - "end": 92084, + "start": 91712, + "end": 92120, "loc": { "start": { - "line": 2507, + "line": 2508, "column": 41 }, "end": { - "line": 2518, + "line": 2519, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 91702, - "end": 92021, + "start": 91738, + "end": 92057, "loc": { "start": { - "line": 2508, + "line": 2509, "column": 24 }, "end": { - "line": 2516, + "line": 2517, "column": 27 } }, "expression": { "type": "CallExpression", - "start": 91702, - "end": 92020, + "start": 91738, + "end": 92056, "loc": { "start": { - "line": 2508, + "line": 2509, "column": 24 }, "end": { - "line": 2516, + "line": 2517, "column": 26 } }, "callee": { "type": "MemberExpression", - "start": 91702, - "end": 91718, + "start": 91738, + "end": 91754, "loc": { "start": { - "line": 2508, + "line": 2509, "column": 24 }, "end": { - "line": 2508, + "line": 2509, "column": 40 } }, "object": { "type": "Identifier", - "start": 91702, - "end": 91709, + "start": 91738, + "end": 91745, "loc": { "start": { - "line": 2508, + "line": 2509, "column": 24 }, "end": { - "line": 2508, + "line": 2509, "column": 31 }, "identifierName": "texture" @@ -73032,15 +73148,15 @@ }, "property": { "type": "Identifier", - "start": 91710, - "end": 91718, + "start": 91746, + "end": 91754, "loc": { "start": { - "line": 2508, + "line": 2509, "column": 32 }, "end": { - "line": 2508, + "line": 2509, "column": 40 }, "identifierName": "setImage" @@ -73052,15 +73168,15 @@ "arguments": [ { "type": "Identifier", - "start": 91719, - "end": 91724, + "start": 91755, + "end": 91760, "loc": { "start": { - "line": 2508, + "line": 2509, "column": 41 }, "end": { - "line": 2508, + "line": 2509, "column": 46 }, "identifierName": "image" @@ -73069,30 +73185,30 @@ }, { "type": "ObjectExpression", - "start": 91726, - "end": 92019, + "start": 91762, + "end": 92055, "loc": { "start": { - "line": 2508, + "line": 2509, "column": 48 }, "end": { - "line": 2516, + "line": 2517, "column": 25 } }, "properties": [ { "type": "ObjectProperty", - "start": 91756, - "end": 91765, + "start": 91792, + "end": 91801, "loc": { "start": { - "line": 2509, + "line": 2510, "column": 28 }, "end": { - "line": 2509, + "line": 2510, "column": 37 } }, @@ -73101,15 +73217,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91756, - "end": 91765, + "start": 91792, + "end": 91801, "loc": { "start": { - "line": 2509, + "line": 2510, "column": 28 }, "end": { - "line": 2509, + "line": 2510, "column": 37 }, "identifierName": "minFilter" @@ -73118,15 +73234,15 @@ }, "value": { "type": "Identifier", - "start": 91756, - "end": 91765, + "start": 91792, + "end": 91801, "loc": { "start": { - "line": 2509, + "line": 2510, "column": 28 }, "end": { - "line": 2509, + "line": 2510, "column": 37 }, "identifierName": "minFilter" @@ -73139,15 +73255,15 @@ }, { "type": "ObjectProperty", - "start": 91795, - "end": 91804, + "start": 91831, + "end": 91840, "loc": { "start": { - "line": 2510, + "line": 2511, "column": 28 }, "end": { - "line": 2510, + "line": 2511, "column": 37 } }, @@ -73156,15 +73272,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91795, - "end": 91804, + "start": 91831, + "end": 91840, "loc": { "start": { - "line": 2510, + "line": 2511, "column": 28 }, "end": { - "line": 2510, + "line": 2511, "column": 37 }, "identifierName": "magFilter" @@ -73173,15 +73289,15 @@ }, "value": { "type": "Identifier", - "start": 91795, - "end": 91804, + "start": 91831, + "end": 91840, "loc": { "start": { - "line": 2510, + "line": 2511, "column": 28 }, "end": { - "line": 2510, + "line": 2511, "column": 37 }, "identifierName": "magFilter" @@ -73194,15 +73310,15 @@ }, { "type": "ObjectProperty", - "start": 91834, - "end": 91839, + "start": 91870, + "end": 91875, "loc": { "start": { - "line": 2511, + "line": 2512, "column": 28 }, "end": { - "line": 2511, + "line": 2512, "column": 33 } }, @@ -73211,15 +73327,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91834, - "end": 91839, + "start": 91870, + "end": 91875, "loc": { "start": { - "line": 2511, + "line": 2512, "column": 28 }, "end": { - "line": 2511, + "line": 2512, "column": 33 }, "identifierName": "wrapS" @@ -73228,15 +73344,15 @@ }, "value": { "type": "Identifier", - "start": 91834, - "end": 91839, + "start": 91870, + "end": 91875, "loc": { "start": { - "line": 2511, + "line": 2512, "column": 28 }, "end": { - "line": 2511, + "line": 2512, "column": 33 }, "identifierName": "wrapS" @@ -73249,15 +73365,15 @@ }, { "type": "ObjectProperty", - "start": 91869, - "end": 91874, + "start": 91905, + "end": 91910, "loc": { "start": { - "line": 2512, + "line": 2513, "column": 28 }, "end": { - "line": 2512, + "line": 2513, "column": 33 } }, @@ -73266,15 +73382,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91869, - "end": 91874, + "start": 91905, + "end": 91910, "loc": { "start": { - "line": 2512, + "line": 2513, "column": 28 }, "end": { - "line": 2512, + "line": 2513, "column": 33 }, "identifierName": "wrapT" @@ -73283,15 +73399,15 @@ }, "value": { "type": "Identifier", - "start": 91869, - "end": 91874, + "start": 91905, + "end": 91910, "loc": { "start": { - "line": 2512, + "line": 2513, "column": 28 }, "end": { - "line": 2512, + "line": 2513, "column": 33 }, "identifierName": "wrapT" @@ -73304,15 +73420,15 @@ }, { "type": "ObjectProperty", - "start": 91904, - "end": 91909, + "start": 91940, + "end": 91945, "loc": { "start": { - "line": 2513, + "line": 2514, "column": 28 }, "end": { - "line": 2513, + "line": 2514, "column": 33 } }, @@ -73321,15 +73437,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91904, - "end": 91909, + "start": 91940, + "end": 91945, "loc": { "start": { - "line": 2513, + "line": 2514, "column": 28 }, "end": { - "line": 2513, + "line": 2514, "column": 33 }, "identifierName": "wrapR" @@ -73338,15 +73454,15 @@ }, "value": { "type": "Identifier", - "start": 91904, - "end": 91909, + "start": 91940, + "end": 91945, "loc": { "start": { - "line": 2513, + "line": 2514, "column": 28 }, "end": { - "line": 2513, + "line": 2514, "column": 33 }, "identifierName": "wrapR" @@ -73359,15 +73475,15 @@ }, { "type": "ObjectProperty", - "start": 91939, - "end": 91955, + "start": 91975, + "end": 91991, "loc": { "start": { - "line": 2514, + "line": 2515, "column": 28 }, "end": { - "line": 2514, + "line": 2515, "column": 44 } }, @@ -73376,15 +73492,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91939, - "end": 91944, + "start": 91975, + "end": 91980, "loc": { "start": { - "line": 2514, + "line": 2515, "column": 28 }, "end": { - "line": 2514, + "line": 2515, "column": 33 }, "identifierName": "flipY" @@ -73393,29 +73509,29 @@ }, "value": { "type": "MemberExpression", - "start": 91946, - "end": 91955, + "start": 91982, + "end": 91991, "loc": { "start": { - "line": 2514, + "line": 2515, "column": 35 }, "end": { - "line": 2514, + "line": 2515, "column": 44 } }, "object": { "type": "Identifier", - "start": 91946, - "end": 91949, + "start": 91982, + "end": 91985, "loc": { "start": { - "line": 2514, + "line": 2515, "column": 35 }, "end": { - "line": 2514, + "line": 2515, "column": 38 }, "identifierName": "cfg" @@ -73424,15 +73540,15 @@ }, "property": { "type": "Identifier", - "start": 91950, - "end": 91955, + "start": 91986, + "end": 91991, "loc": { "start": { - "line": 2514, + "line": 2515, "column": 39 }, "end": { - "line": 2514, + "line": 2515, "column": 44 }, "identifierName": "flipY" @@ -73444,15 +73560,15 @@ }, { "type": "ObjectProperty", - "start": 91985, - "end": 91993, + "start": 92021, + "end": 92029, "loc": { "start": { - "line": 2515, + "line": 2516, "column": 28 }, "end": { - "line": 2515, + "line": 2516, "column": 36 } }, @@ -73461,15 +73577,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 91985, - "end": 91993, + "start": 92021, + "end": 92029, "loc": { "start": { - "line": 2515, + "line": 2516, "column": 28 }, "end": { - "line": 2515, + "line": 2516, "column": 36 }, "identifierName": "encoding" @@ -73478,15 +73594,15 @@ }, "value": { "type": "Identifier", - "start": 91985, - "end": 91993, + "start": 92021, + "end": 92029, "loc": { "start": { - "line": 2515, + "line": 2516, "column": 28 }, "end": { - "line": 2515, + "line": 2516, "column": 36 }, "identifierName": "encoding" @@ -73504,72 +73620,72 @@ }, { "type": "ExpressionStatement", - "start": 92046, - "end": 92062, + "start": 92082, + "end": 92098, "loc": { "start": { - "line": 2517, + "line": 2518, "column": 24 }, "end": { - "line": 2517, + "line": 2518, "column": 40 } }, "expression": { "type": "CallExpression", - "start": 92046, - "end": 92061, + "start": 92082, + "end": 92097, "loc": { "start": { - "line": 2517, + "line": 2518, "column": 24 }, "end": { - "line": 2517, + "line": 2518, "column": 39 } }, "callee": { "type": "MemberExpression", - "start": 92046, - "end": 92059, + "start": 92082, + "end": 92095, "loc": { "start": { - "line": 2517, + "line": 2518, "column": 24 }, "end": { - "line": 2517, + "line": 2518, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 92046, - "end": 92050, + "start": 92082, + "end": 92086, "loc": { "start": { - "line": 2517, + "line": 2518, "column": 24 }, "end": { - "line": 2517, + "line": 2518, "column": 28 } } }, "property": { "type": "Identifier", - "start": 92051, - "end": 92059, + "start": 92087, + "end": 92095, "loc": { "start": { - "line": 2517, + "line": 2518, "column": 29 }, "end": { - "line": 2517, + "line": 2518, "column": 37 }, "identifierName": "glRedraw" @@ -73589,58 +73705,58 @@ }, { "type": "ExpressionStatement", - "start": 92106, - "end": 92126, + "start": 92142, + "end": 92162, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 20 }, "end": { - "line": 2519, + "line": 2520, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 92106, - "end": 92125, + "start": 92142, + "end": 92161, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 20 }, "end": { - "line": 2519, + "line": 2520, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 92106, - "end": 92115, + "start": 92142, + "end": 92151, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 20 }, "end": { - "line": 2519, + "line": 2520, "column": 29 } }, "object": { "type": "Identifier", - "start": 92106, - "end": 92111, + "start": 92142, + "end": 92147, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 20 }, "end": { - "line": 2519, + "line": 2520, "column": 25 }, "identifierName": "image" @@ -73649,15 +73765,15 @@ }, "property": { "type": "Identifier", - "start": 92112, - "end": 92115, + "start": 92148, + "end": 92151, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 26 }, "end": { - "line": 2519, + "line": 2520, "column": 29 }, "identifierName": "src" @@ -73668,29 +73784,29 @@ }, "right": { "type": "MemberExpression", - "start": 92118, - "end": 92125, + "start": 92154, + "end": 92161, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 32 }, "end": { - "line": 2519, + "line": 2520, "column": 39 } }, "object": { "type": "Identifier", - "start": 92118, - "end": 92121, + "start": 92154, + "end": 92157, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 32 }, "end": { - "line": 2519, + "line": 2520, "column": 35 }, "identifierName": "cfg" @@ -73699,15 +73815,15 @@ }, "property": { "type": "Identifier", - "start": 92122, - "end": 92125, + "start": 92158, + "end": 92161, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 36 }, "end": { - "line": 2519, + "line": 2520, "column": 39 }, "identifierName": "src" @@ -73721,15 +73837,15 @@ { "type": "CommentLine", "value": " URL or Base64 string", - "start": 92127, - "end": 92150, + "start": 92163, + "end": 92186, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 41 }, "end": { - "line": 2519, + "line": 2520, "column": 64 } } @@ -73738,15 +73854,15 @@ }, { "type": "BreakStatement", - "start": 92171, - "end": 92177, + "start": 92207, + "end": 92213, "loc": { "start": { - "line": 2520, + "line": 2521, "column": 20 }, "end": { - "line": 2520, + "line": 2521, "column": 26 } }, @@ -73755,15 +73871,15 @@ { "type": "CommentLine", "value": " URL or Base64 string", - "start": 92127, - "end": 92150, + "start": 92163, + "end": 92186, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 41 }, "end": { - "line": 2519, + "line": 2520, "column": 64 } } @@ -73773,15 +73889,15 @@ ], "test": { "type": "StringLiteral", - "start": 91581, - "end": 91586, + "start": 91617, + "end": 91622, "loc": { "start": { - "line": 2505, + "line": 2506, "column": 21 }, "end": { - "line": 2505, + "line": 2506, "column": 26 } }, @@ -73794,44 +73910,44 @@ }, { "type": "SwitchCase", - "start": 92194, - "end": 93303, + "start": 92230, + "end": 93339, "loc": { "start": { - "line": 2521, + "line": 2522, "column": 16 }, "end": { - "line": 2538, + "line": 2539, "column": 26 } }, "consequent": [ { "type": "IfStatement", - "start": 92267, - "end": 93276, + "start": 92303, + "end": 93312, "loc": { "start": { - "line": 2522, + "line": 2523, "column": 20 }, "end": { - "line": 2537, + "line": 2538, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 92271, - "end": 92295, + "start": 92307, + "end": 92331, "loc": { "start": { - "line": 2522, + "line": 2523, "column": 24 }, "end": { - "line": 2522, + "line": 2523, "column": 48 } }, @@ -73839,29 +73955,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 92272, - "end": 92295, + "start": 92308, + "end": 92331, "loc": { "start": { - "line": 2522, + "line": 2523, "column": 25 }, "end": { - "line": 2522, + "line": 2523, "column": 48 } }, "object": { "type": "ThisExpression", - "start": 92272, - "end": 92276, + "start": 92308, + "end": 92312, "loc": { "start": { - "line": 2522, + "line": 2523, "column": 25 }, "end": { - "line": 2522, + "line": 2523, "column": 29 } }, @@ -73869,15 +73985,15 @@ }, "property": { "type": "Identifier", - "start": 92277, - "end": 92295, + "start": 92313, + "end": 92331, "loc": { "start": { - "line": 2522, + "line": 2523, "column": 30 }, "end": { - "line": 2522, + "line": 2523, "column": 48 }, "identifierName": "_textureTranscoder" @@ -73894,87 +74010,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 92297, - "end": 92498, + "start": 92333, + "end": 92534, "loc": { "start": { - "line": 2522, + "line": 2523, "column": 50 }, "end": { - "line": 2524, + "line": 2525, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 92323, - "end": 92476, + "start": 92359, + "end": 92512, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 24 }, "end": { - "line": 2523, + "line": 2524, "column": 177 } }, "expression": { "type": "CallExpression", - "start": 92323, - "end": 92475, + "start": 92359, + "end": 92511, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 24 }, "end": { - "line": 2523, + "line": 2524, "column": 176 } }, "callee": { "type": "MemberExpression", - "start": 92323, - "end": 92333, + "start": 92359, + "end": 92369, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 24 }, "end": { - "line": 2523, + "line": 2524, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 92323, - "end": 92327, + "start": 92359, + "end": 92363, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 24 }, "end": { - "line": 2523, + "line": 2524, "column": 28 } } }, "property": { "type": "Identifier", - "start": 92328, - "end": 92333, + "start": 92364, + "end": 92369, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 29 }, "end": { - "line": 2523, + "line": 2524, "column": 34 }, "identifierName": "error" @@ -73986,30 +74102,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 92334, - "end": 92474, + "start": 92370, + "end": 92510, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 35 }, "end": { - "line": 2523, + "line": 2524, "column": 175 } }, "expressions": [ { "type": "Identifier", - "start": 92467, - "end": 92470, + "start": 92503, + "end": 92506, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 168 }, "end": { - "line": 2523, + "line": 2524, "column": 171 }, "identifierName": "ext" @@ -74020,15 +74136,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 92335, - "end": 92465, + "start": 92371, + "end": 92501, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 36 }, "end": { - "line": 2523, + "line": 2524, "column": 166 } }, @@ -74040,15 +74156,15 @@ }, { "type": "TemplateElement", - "start": 92471, - "end": 92473, + "start": 92507, + "end": 92509, "loc": { "start": { - "line": 2523, + "line": 2524, "column": 172 }, "end": { - "line": 2523, + "line": 2524, "column": 174 } }, @@ -74068,72 +74184,72 @@ }, "alternate": { "type": "BlockStatement", - "start": 92504, - "end": 93276, + "start": 92540, + "end": 93312, "loc": { "start": { - "line": 2524, + "line": 2525, "column": 27 }, "end": { - "line": 2537, + "line": 2538, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 92530, - "end": 93254, + "start": 92566, + "end": 93290, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 24 }, "end": { - "line": 2536, + "line": 2537, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 92530, - "end": 93253, + "start": 92566, + "end": 93289, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 24 }, "end": { - "line": 2536, + "line": 2537, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 92530, - "end": 92551, + "start": 92566, + "end": 92587, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 24 }, "end": { - "line": 2525, + "line": 2526, "column": 45 } }, "object": { "type": "Identifier", - "start": 92530, - "end": 92535, + "start": 92566, + "end": 92571, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 24 }, "end": { - "line": 2525, + "line": 2526, "column": 29 }, "identifierName": "utils" @@ -74142,15 +74258,15 @@ }, "property": { "type": "Identifier", - "start": 92536, - "end": 92551, + "start": 92572, + "end": 92587, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 30 }, "end": { - "line": 2525, + "line": 2526, "column": 45 }, "identifierName": "loadArraybuffer" @@ -74162,29 +74278,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 92552, - "end": 92559, + "start": 92588, + "end": 92595, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 46 }, "end": { - "line": 2525, + "line": 2526, "column": 53 } }, "object": { "type": "Identifier", - "start": 92552, - "end": 92555, + "start": 92588, + "end": 92591, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 46 }, "end": { - "line": 2525, + "line": 2526, "column": 49 }, "identifierName": "cfg" @@ -74193,15 +74309,15 @@ }, "property": { "type": "Identifier", - "start": 92556, - "end": 92559, + "start": 92592, + "end": 92595, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 50 }, "end": { - "line": 2525, + "line": 2526, "column": 53 }, "identifierName": "src" @@ -74212,15 +74328,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 92561, - "end": 93067, + "start": 92597, + "end": 93103, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 55 }, "end": { - "line": 2533, + "line": 2534, "column": 29 } }, @@ -74231,15 +74347,15 @@ "params": [ { "type": "Identifier", - "start": 92562, - "end": 92573, + "start": 92598, + "end": 92609, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 56 }, "end": { - "line": 2525, + "line": 2526, "column": 67 }, "identifierName": "arrayBuffer" @@ -74249,44 +74365,44 @@ ], "body": { "type": "BlockStatement", - "start": 92578, - "end": 93067, + "start": 92614, + "end": 93103, "loc": { "start": { - "line": 2525, + "line": 2526, "column": 72 }, "end": { - "line": 2533, + "line": 2534, "column": 29 } }, "body": [ { "type": "IfStatement", - "start": 92612, - "end": 92845, + "start": 92648, + "end": 92881, "loc": { "start": { - "line": 2526, + "line": 2527, "column": 32 }, "end": { - "line": 2529, + "line": 2530, "column": 33 } }, "test": { "type": "UnaryExpression", - "start": 92616, - "end": 92639, + "start": 92652, + "end": 92675, "loc": { "start": { - "line": 2526, + "line": 2527, "column": 36 }, "end": { - "line": 2526, + "line": 2527, "column": 59 } }, @@ -74294,29 +74410,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 92617, - "end": 92639, + "start": 92653, + "end": 92675, "loc": { "start": { - "line": 2526, + "line": 2527, "column": 37 }, "end": { - "line": 2526, + "line": 2527, "column": 59 } }, "object": { "type": "Identifier", - "start": 92617, - "end": 92628, + "start": 92653, + "end": 92664, "loc": { "start": { - "line": 2526, + "line": 2527, "column": 37 }, "end": { - "line": 2526, + "line": 2527, "column": 48 }, "identifierName": "arrayBuffer" @@ -74325,15 +74441,15 @@ }, "property": { "type": "Identifier", - "start": 92629, - "end": 92639, + "start": 92665, + "end": 92675, "loc": { "start": { - "line": 2526, + "line": 2527, "column": 49 }, "end": { - "line": 2526, + "line": 2527, "column": 59 }, "identifierName": "byteLength" @@ -74348,87 +74464,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 92641, - "end": 92845, + "start": 92677, + "end": 92881, "loc": { "start": { - "line": 2526, + "line": 2527, "column": 61 }, "end": { - "line": 2529, + "line": 2530, "column": 33 } }, "body": [ { "type": "ExpressionStatement", - "start": 92679, - "end": 92767, + "start": 92715, + "end": 92803, "loc": { "start": { - "line": 2527, + "line": 2528, "column": 36 }, "end": { - "line": 2527, + "line": 2528, "column": 124 } }, "expression": { "type": "CallExpression", - "start": 92679, - "end": 92766, + "start": 92715, + "end": 92802, "loc": { "start": { - "line": 2527, + "line": 2528, "column": 36 }, "end": { - "line": 2527, + "line": 2528, "column": 123 } }, "callee": { "type": "MemberExpression", - "start": 92679, - "end": 92689, + "start": 92715, + "end": 92725, "loc": { "start": { - "line": 2527, + "line": 2528, "column": 36 }, "end": { - "line": 2527, + "line": 2528, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 92679, - "end": 92683, + "start": 92715, + "end": 92719, "loc": { "start": { - "line": 2527, + "line": 2528, "column": 36 }, "end": { - "line": 2527, + "line": 2528, "column": 40 } } }, "property": { "type": "Identifier", - "start": 92684, - "end": 92689, + "start": 92720, + "end": 92725, "loc": { "start": { - "line": 2527, + "line": 2528, "column": 41 }, "end": { - "line": 2527, + "line": 2528, "column": 46 }, "identifierName": "error" @@ -74440,15 +74556,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 92690, - "end": 92765, + "start": 92726, + "end": 92801, "loc": { "start": { - "line": 2527, + "line": 2528, "column": 47 }, "end": { - "line": 2527, + "line": 2528, "column": 122 } }, @@ -74456,15 +74572,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 92691, - "end": 92764, + "start": 92727, + "end": 92800, "loc": { "start": { - "line": 2527, + "line": 2528, "column": 48 }, "end": { - "line": 2527, + "line": 2528, "column": 121 } }, @@ -74481,15 +74597,15 @@ }, { "type": "ReturnStatement", - "start": 92804, - "end": 92811, + "start": 92840, + "end": 92847, "loc": { "start": { - "line": 2528, + "line": 2529, "column": 36 }, "end": { - "line": 2528, + "line": 2529, "column": 43 } }, @@ -74502,114 +74618,114 @@ }, { "type": "ExpressionStatement", - "start": 92878, - "end": 93037, + "start": 92914, + "end": 93073, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 32 }, "end": { - "line": 2532, + "line": 2533, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 92878, - "end": 93036, + "start": 92914, + "end": 93072, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 32 }, "end": { - "line": 2532, + "line": 2533, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 92878, - "end": 92940, + "start": 92914, + "end": 92976, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 32 }, "end": { - "line": 2530, + "line": 2531, "column": 94 } }, "object": { "type": "CallExpression", - "start": 92878, - "end": 92935, + "start": 92914, + "end": 92971, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 32 }, "end": { - "line": 2530, + "line": 2531, "column": 89 } }, "callee": { "type": "MemberExpression", - "start": 92878, - "end": 92911, + "start": 92914, + "end": 92947, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 32 }, "end": { - "line": 2530, + "line": 2531, "column": 65 } }, "object": { "type": "MemberExpression", - "start": 92878, - "end": 92901, + "start": 92914, + "end": 92937, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 32 }, "end": { - "line": 2530, + "line": 2531, "column": 55 } }, "object": { "type": "ThisExpression", - "start": 92878, - "end": 92882, + "start": 92914, + "end": 92918, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 32 }, "end": { - "line": 2530, + "line": 2531, "column": 36 } } }, "property": { "type": "Identifier", - "start": 92883, - "end": 92901, + "start": 92919, + "end": 92937, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 37 }, "end": { - "line": 2530, + "line": 2531, "column": 55 }, "identifierName": "_textureTranscoder" @@ -74620,15 +74736,15 @@ }, "property": { "type": "Identifier", - "start": 92902, - "end": 92911, + "start": 92938, + "end": 92947, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 56 }, "end": { - "line": 2530, + "line": 2531, "column": 65 }, "identifierName": "transcode" @@ -74640,30 +74756,30 @@ "arguments": [ { "type": "ArrayExpression", - "start": 92912, - "end": 92925, + "start": 92948, + "end": 92961, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 66 }, "end": { - "line": 2530, + "line": 2531, "column": 79 } }, "elements": [ { "type": "Identifier", - "start": 92913, - "end": 92924, + "start": 92949, + "end": 92960, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 67 }, "end": { - "line": 2530, + "line": 2531, "column": 78 }, "identifierName": "arrayBuffer" @@ -74674,15 +74790,15 @@ }, { "type": "Identifier", - "start": 92927, - "end": 92934, + "start": 92963, + "end": 92970, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 81 }, "end": { - "line": 2530, + "line": 2531, "column": 88 }, "identifierName": "texture" @@ -74693,15 +74809,15 @@ }, "property": { "type": "Identifier", - "start": 92936, - "end": 92940, + "start": 92972, + "end": 92976, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 90 }, "end": { - "line": 2530, + "line": 2531, "column": 94 }, "identifierName": "then" @@ -74713,15 +74829,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 92941, - "end": 93035, + "start": 92977, + "end": 93071, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 95 }, "end": { - "line": 2532, + "line": 2533, "column": 33 } }, @@ -74732,87 +74848,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 92947, - "end": 93035, + "start": 92983, + "end": 93071, "loc": { "start": { - "line": 2530, + "line": 2531, "column": 101 }, "end": { - "line": 2532, + "line": 2533, "column": 33 } }, "body": [ { "type": "ExpressionStatement", - "start": 92985, - "end": 93001, + "start": 93021, + "end": 93037, "loc": { "start": { - "line": 2531, + "line": 2532, "column": 36 }, "end": { - "line": 2531, + "line": 2532, "column": 52 } }, "expression": { "type": "CallExpression", - "start": 92985, - "end": 93000, + "start": 93021, + "end": 93036, "loc": { "start": { - "line": 2531, + "line": 2532, "column": 36 }, "end": { - "line": 2531, + "line": 2532, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 92985, - "end": 92998, + "start": 93021, + "end": 93034, "loc": { "start": { - "line": 2531, + "line": 2532, "column": 36 }, "end": { - "line": 2531, + "line": 2532, "column": 49 } }, "object": { "type": "ThisExpression", - "start": 92985, - "end": 92989, + "start": 93021, + "end": 93025, "loc": { "start": { - "line": 2531, + "line": 2532, "column": 36 }, "end": { - "line": 2531, + "line": 2532, "column": 40 } } }, "property": { "type": "Identifier", - "start": 92990, - "end": 92998, + "start": 93026, + "end": 93034, "loc": { "start": { - "line": 2531, + "line": 2532, "column": 41 }, "end": { - "line": 2531, + "line": 2532, "column": 49 }, "identifierName": "glRedraw" @@ -74837,15 +74953,15 @@ }, { "type": "FunctionExpression", - "start": 93097, - "end": 93252, + "start": 93133, + "end": 93288, "loc": { "start": { - "line": 2534, + "line": 2535, "column": 28 }, "end": { - "line": 2536, + "line": 2537, "column": 29 } }, @@ -74856,15 +74972,15 @@ "params": [ { "type": "Identifier", - "start": 93107, - "end": 93113, + "start": 93143, + "end": 93149, "loc": { "start": { - "line": 2534, + "line": 2535, "column": 38 }, "end": { - "line": 2534, + "line": 2535, "column": 44 }, "identifierName": "errMsg" @@ -74874,87 +74990,87 @@ ], "body": { "type": "BlockStatement", - "start": 93115, - "end": 93252, + "start": 93151, + "end": 93288, "loc": { "start": { - "line": 2534, + "line": 2535, "column": 46 }, "end": { - "line": 2536, + "line": 2537, "column": 29 } }, "body": [ { "type": "ExpressionStatement", - "start": 93149, - "end": 93222, + "start": 93185, + "end": 93258, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 32 }, "end": { - "line": 2535, + "line": 2536, "column": 105 } }, "expression": { "type": "CallExpression", - "start": 93149, - "end": 93221, + "start": 93185, + "end": 93257, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 32 }, "end": { - "line": 2535, + "line": 2536, "column": 104 } }, "callee": { "type": "MemberExpression", - "start": 93149, - "end": 93159, + "start": 93185, + "end": 93195, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 32 }, "end": { - "line": 2535, + "line": 2536, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 93149, - "end": 93153, + "start": 93185, + "end": 93189, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 32 }, "end": { - "line": 2535, + "line": 2536, "column": 36 } } }, "property": { "type": "Identifier", - "start": 93154, - "end": 93159, + "start": 93190, + "end": 93195, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 37 }, "end": { - "line": 2535, + "line": 2536, "column": 42 }, "identifierName": "error" @@ -74966,30 +75082,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 93160, - "end": 93220, + "start": 93196, + "end": 93256, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 43 }, "end": { - "line": 2535, + "line": 2536, "column": 103 } }, "expressions": [ { "type": "Identifier", - "start": 93212, - "end": 93218, + "start": 93248, + "end": 93254, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 95 }, "end": { - "line": 2535, + "line": 2536, "column": 101 }, "identifierName": "errMsg" @@ -75000,15 +75116,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 93161, - "end": 93210, + "start": 93197, + "end": 93246, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 44 }, "end": { - "line": 2535, + "line": 2536, "column": 93 } }, @@ -75020,15 +75136,15 @@ }, { "type": "TemplateElement", - "start": 93219, - "end": 93219, + "start": 93255, + "end": 93255, "loc": { "start": { - "line": 2535, + "line": 2536, "column": 102 }, "end": { - "line": 2535, + "line": 2536, "column": 102 } }, @@ -75057,15 +75173,15 @@ { "type": "CommentLine", "value": " Assume other file types need transcoding", - "start": 92203, - "end": 92246, + "start": 92239, + "end": 92282, "loc": { "start": { - "line": 2521, + "line": 2522, "column": 25 }, "end": { - "line": 2521, + "line": 2522, "column": 68 } } @@ -75074,15 +75190,15 @@ }, { "type": "BreakStatement", - "start": 93297, - "end": 93303, + "start": 93333, + "end": 93339, "loc": { "start": { - "line": 2538, + "line": 2539, "column": 20 }, "end": { - "line": 2538, + "line": 2539, "column": 26 } }, @@ -75098,43 +75214,43 @@ }, "alternate": { "type": "IfStatement", - "start": 93333, - "end": 93784, + "start": 93369, + "end": 93820, "loc": { "start": { - "line": 2540, + "line": 2541, "column": 15 }, "end": { - "line": 2548, + "line": 2549, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 93337, - "end": 93348, + "start": 93373, + "end": 93384, "loc": { "start": { - "line": 2540, + "line": 2541, "column": 19 }, "end": { - "line": 2540, + "line": 2541, "column": 30 } }, "object": { "type": "Identifier", - "start": 93337, - "end": 93340, + "start": 93373, + "end": 93376, "loc": { "start": { - "line": 2540, + "line": 2541, "column": 19 }, "end": { - "line": 2540, + "line": 2541, "column": 22 }, "identifierName": "cfg" @@ -75143,15 +75259,15 @@ }, "property": { "type": "Identifier", - "start": 93341, - "end": 93348, + "start": 93377, + "end": 93384, "loc": { "start": { - "line": 2540, + "line": 2541, "column": 23 }, "end": { - "line": 2540, + "line": 2541, "column": 30 }, "identifierName": "buffers" @@ -75162,44 +75278,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 93350, - "end": 93784, + "start": 93386, + "end": 93820, "loc": { "start": { - "line": 2540, + "line": 2541, "column": 32 }, "end": { - "line": 2548, + "line": 2549, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 93406, - "end": 93774, + "start": 93442, + "end": 93810, "loc": { "start": { - "line": 2541, + "line": 2542, "column": 12 }, "end": { - "line": 2547, + "line": 2548, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 93410, - "end": 93434, + "start": 93446, + "end": 93470, "loc": { "start": { - "line": 2541, + "line": 2542, "column": 16 }, "end": { - "line": 2541, + "line": 2542, "column": 40 } }, @@ -75207,29 +75323,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 93411, - "end": 93434, + "start": 93447, + "end": 93470, "loc": { "start": { - "line": 2541, + "line": 2542, "column": 17 }, "end": { - "line": 2541, + "line": 2542, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 93411, - "end": 93415, + "start": 93447, + "end": 93451, "loc": { "start": { - "line": 2541, + "line": 2542, "column": 17 }, "end": { - "line": 2541, + "line": 2542, "column": 21 } }, @@ -75237,15 +75353,15 @@ }, "property": { "type": "Identifier", - "start": 93416, - "end": 93434, + "start": 93452, + "end": 93470, "loc": { "start": { - "line": 2541, + "line": 2542, "column": 22 }, "end": { - "line": 2541, + "line": 2542, "column": 40 }, "identifierName": "_textureTranscoder" @@ -75262,87 +75378,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 93436, - "end": 93611, + "start": 93472, + "end": 93647, "loc": { "start": { - "line": 2541, + "line": 2542, "column": 42 }, "end": { - "line": 2543, + "line": 2544, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 93454, - "end": 93597, + "start": 93490, + "end": 93633, "loc": { "start": { - "line": 2542, + "line": 2543, "column": 16 }, "end": { - "line": 2542, + "line": 2543, "column": 159 } }, "expression": { "type": "CallExpression", - "start": 93454, - "end": 93596, + "start": 93490, + "end": 93632, "loc": { "start": { - "line": 2542, + "line": 2543, "column": 16 }, "end": { - "line": 2542, + "line": 2543, "column": 158 } }, "callee": { "type": "MemberExpression", - "start": 93454, - "end": 93464, + "start": 93490, + "end": 93500, "loc": { "start": { - "line": 2542, + "line": 2543, "column": 16 }, "end": { - "line": 2542, + "line": 2543, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 93454, - "end": 93458, + "start": 93490, + "end": 93494, "loc": { "start": { - "line": 2542, + "line": 2543, "column": 16 }, "end": { - "line": 2542, + "line": 2543, "column": 20 } } }, "property": { "type": "Identifier", - "start": 93459, - "end": 93464, + "start": 93495, + "end": 93500, "loc": { "start": { - "line": 2542, + "line": 2543, "column": 21 }, "end": { - "line": 2542, + "line": 2543, "column": 26 }, "identifierName": "error" @@ -75354,15 +75470,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 93465, - "end": 93595, + "start": 93501, + "end": 93631, "loc": { "start": { - "line": 2542, + "line": 2543, "column": 27 }, "end": { - "line": 2542, + "line": 2543, "column": 157 } }, @@ -75370,15 +75486,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 93466, - "end": 93594, + "start": 93502, + "end": 93630, "loc": { "start": { - "line": 2542, + "line": 2543, "column": 28 }, "end": { - "line": 2542, + "line": 2543, "column": 156 } }, @@ -75398,129 +75514,129 @@ }, "alternate": { "type": "BlockStatement", - "start": 93617, - "end": 93774, + "start": 93653, + "end": 93810, "loc": { "start": { - "line": 2543, + "line": 2544, "column": 19 }, "end": { - "line": 2547, + "line": 2548, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 93635, - "end": 93760, + "start": 93671, + "end": 93796, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 16 }, "end": { - "line": 2546, + "line": 2547, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 93635, - "end": 93759, + "start": 93671, + "end": 93795, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 16 }, "end": { - "line": 2546, + "line": 2547, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 93635, - "end": 93695, + "start": 93671, + "end": 93731, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 16 }, "end": { - "line": 2544, + "line": 2545, "column": 76 } }, "object": { "type": "CallExpression", - "start": 93635, - "end": 93690, + "start": 93671, + "end": 93726, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 16 }, "end": { - "line": 2544, + "line": 2545, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 93635, - "end": 93668, + "start": 93671, + "end": 93704, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 16 }, "end": { - "line": 2544, + "line": 2545, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 93635, - "end": 93658, + "start": 93671, + "end": 93694, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 16 }, "end": { - "line": 2544, + "line": 2545, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 93635, - "end": 93639, + "start": 93671, + "end": 93675, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 16 }, "end": { - "line": 2544, + "line": 2545, "column": 20 } } }, "property": { "type": "Identifier", - "start": 93640, - "end": 93658, + "start": 93676, + "end": 93694, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 21 }, "end": { - "line": 2544, + "line": 2545, "column": 39 }, "identifierName": "_textureTranscoder" @@ -75531,15 +75647,15 @@ }, "property": { "type": "Identifier", - "start": 93659, - "end": 93668, + "start": 93695, + "end": 93704, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 40 }, "end": { - "line": 2544, + "line": 2545, "column": 49 }, "identifierName": "transcode" @@ -75551,29 +75667,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 93669, - "end": 93680, + "start": 93705, + "end": 93716, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 50 }, "end": { - "line": 2544, + "line": 2545, "column": 61 } }, "object": { "type": "Identifier", - "start": 93669, - "end": 93672, + "start": 93705, + "end": 93708, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 50 }, "end": { - "line": 2544, + "line": 2545, "column": 53 }, "identifierName": "cfg" @@ -75582,15 +75698,15 @@ }, "property": { "type": "Identifier", - "start": 93673, - "end": 93680, + "start": 93709, + "end": 93716, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 54 }, "end": { - "line": 2544, + "line": 2545, "column": 61 }, "identifierName": "buffers" @@ -75601,15 +75717,15 @@ }, { "type": "Identifier", - "start": 93682, - "end": 93689, + "start": 93718, + "end": 93725, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 63 }, "end": { - "line": 2544, + "line": 2545, "column": 70 }, "identifierName": "texture" @@ -75620,15 +75736,15 @@ }, "property": { "type": "Identifier", - "start": 93691, - "end": 93695, + "start": 93727, + "end": 93731, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 72 }, "end": { - "line": 2544, + "line": 2545, "column": 76 }, "identifierName": "then" @@ -75640,15 +75756,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 93696, - "end": 93758, + "start": 93732, + "end": 93794, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 77 }, "end": { - "line": 2546, + "line": 2547, "column": 17 } }, @@ -75659,87 +75775,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 93702, - "end": 93758, + "start": 93738, + "end": 93794, "loc": { "start": { - "line": 2544, + "line": 2545, "column": 83 }, "end": { - "line": 2546, + "line": 2547, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 93724, - "end": 93740, + "start": 93760, + "end": 93776, "loc": { "start": { - "line": 2545, + "line": 2546, "column": 20 }, "end": { - "line": 2545, + "line": 2546, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 93724, - "end": 93739, + "start": 93760, + "end": 93775, "loc": { "start": { - "line": 2545, + "line": 2546, "column": 20 }, "end": { - "line": 2545, + "line": 2546, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 93724, - "end": 93737, + "start": 93760, + "end": 93773, "loc": { "start": { - "line": 2545, + "line": 2546, "column": 20 }, "end": { - "line": 2545, + "line": 2546, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 93724, - "end": 93728, + "start": 93760, + "end": 93764, "loc": { "start": { - "line": 2545, + "line": 2546, "column": 20 }, "end": { - "line": 2545, + "line": 2546, "column": 24 } } }, "property": { "type": "Identifier", - "start": 93729, - "end": 93737, + "start": 93765, + "end": 93773, "loc": { "start": { - "line": 2545, + "line": 2546, "column": 25 }, "end": { - "line": 2545, + "line": 2546, "column": 33 }, "identifierName": "glRedraw" @@ -75765,15 +75881,15 @@ { "type": "CommentLine", "value": " Buffers implicitly require transcoding", - "start": 93352, - "end": 93393, + "start": 93388, + "end": 93429, "loc": { "start": { - "line": 2540, + "line": 2541, "column": 34 }, "end": { - "line": 2540, + "line": 2541, "column": 75 } } @@ -75789,87 +75905,87 @@ }, { "type": "ExpressionStatement", - "start": 93793, - "end": 93869, + "start": 93829, + "end": 93905, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 8 }, "end": { - "line": 2549, + "line": 2550, "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 93793, - "end": 93868, + "start": 93829, + "end": 93904, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 8 }, "end": { - "line": 2549, + "line": 2550, "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 93793, - "end": 93818, + "start": 93829, + "end": 93854, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 8 }, "end": { - "line": 2549, + "line": 2550, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 93793, - "end": 93807, + "start": 93829, + "end": 93843, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 8 }, "end": { - "line": 2549, + "line": 2550, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 93793, - "end": 93797, + "start": 93829, + "end": 93833, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 8 }, "end": { - "line": 2549, + "line": 2550, "column": 12 } } }, "property": { "type": "Identifier", - "start": 93798, - "end": 93807, + "start": 93834, + "end": 93843, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 13 }, "end": { - "line": 2549, + "line": 2550, "column": 22 }, "identifierName": "_textures" @@ -75880,15 +75996,15 @@ }, "property": { "type": "Identifier", - "start": 93808, - "end": 93817, + "start": 93844, + "end": 93853, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 23 }, "end": { - "line": 2549, + "line": 2550, "column": 32 }, "identifierName": "textureId" @@ -75899,29 +76015,29 @@ }, "right": { "type": "NewExpression", - "start": 93821, - "end": 93868, + "start": 93857, + "end": 93904, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 36 }, "end": { - "line": 2549, + "line": 2550, "column": 83 } }, "callee": { "type": "Identifier", - "start": 93825, - "end": 93842, + "start": 93861, + "end": 93878, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 40 }, "end": { - "line": 2549, + "line": 2550, "column": 57 }, "identifierName": "SceneModelTexture" @@ -75931,30 +76047,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 93843, - "end": 93867, + "start": 93879, + "end": 93903, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 58 }, "end": { - "line": 2549, + "line": 2550, "column": 82 } }, "properties": [ { "type": "ObjectProperty", - "start": 93844, - "end": 93857, + "start": 93880, + "end": 93893, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 59 }, "end": { - "line": 2549, + "line": 2550, "column": 72 } }, @@ -75963,15 +76079,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 93844, - "end": 93846, + "start": 93880, + "end": 93882, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 59 }, "end": { - "line": 2549, + "line": 2550, "column": 61 }, "identifierName": "id" @@ -75980,15 +76096,15 @@ }, "value": { "type": "Identifier", - "start": 93848, - "end": 93857, + "start": 93884, + "end": 93893, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 63 }, "end": { - "line": 2549, + "line": 2550, "column": 72 }, "identifierName": "textureId" @@ -75998,15 +76114,15 @@ }, { "type": "ObjectProperty", - "start": 93859, - "end": 93866, + "start": 93895, + "end": 93902, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 74 }, "end": { - "line": 2549, + "line": 2550, "column": 81 } }, @@ -76015,15 +76131,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 93859, - "end": 93866, + "start": 93895, + "end": 93902, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 74 }, "end": { - "line": 2549, + "line": 2550, "column": 81 }, "identifierName": "texture" @@ -76032,15 +76148,15 @@ }, "value": { "type": "Identifier", - "start": 93859, - "end": 93866, + "start": 93895, + "end": 93902, "loc": { "start": { - "line": 2549, + "line": 2550, "column": 74 }, "end": { - "line": 2549, + "line": 2550, "column": 81 }, "identifierName": "texture" @@ -76065,15 +76181,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a texture within this SceneModel.\n *\n * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture.\n *\n * @param {*} cfg Texture properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link SceneModel#createTextureSet}.\n * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file\n * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````SceneModel```` is configured with a {@link TextureTranscoder}.\n * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````SceneModel```` is\n * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps.\n * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded.\n * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel.\n * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}.\n * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}.\n * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}..\n * @param {Number} [cfg.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n ", - "start": 85205, - "end": 87651, + "start": 85241, + "end": 87687, "loc": { "start": { - "line": 2411, + "line": 2412, "column": 4 }, "end": { - "line": 2431, + "line": 2432, "column": 7 } } @@ -76083,15 +76199,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a texture set within this SceneModel.\n *\n * * Stores the new {@link SceneModelTextureSet} in {@link SceneModel#textureSets}.\n *\n * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set\n * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set.\n *\n * The textures can work as a texture atlas, where each mesh can have geometry UVs that index\n * a different part of the textures. This allows us to minimize the number of textures in our models, which\n * means faster rendering.\n *\n * @param {*} cfg Texture set properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}.\n * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*.\n * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*.\n * @param {*} [cfg.emissiveTextureId] ID of *RGBA* emissive map texture, with emissive color in *RGB*.\n * @param {*} [cfg.occlusionTextureId] ID of *RGBA* occlusion map texture, with occlusion factor in *R*.\n * @returns {SceneModelTransform} The new texture set.\n ", - "start": 93881, - "end": 95327, + "start": 93917, + "end": 95363, "loc": { "start": { - "line": 2552, + "line": 2553, "column": 4 }, "end": { - "line": 2572, + "line": 2573, "column": 7 } } @@ -76100,15 +76216,15 @@ }, { "type": "ClassMethod", - "start": 95332, - "end": 98668, + "start": 95368, + "end": 98704, "loc": { "start": { - "line": 2573, + "line": 2574, "column": 4 }, "end": { - "line": 2644, + "line": 2645, "column": 5 } }, @@ -76116,15 +76232,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 95332, - "end": 95348, + "start": 95368, + "end": 95384, "loc": { "start": { - "line": 2573, + "line": 2574, "column": 4 }, "end": { - "line": 2573, + "line": 2574, "column": 20 }, "identifierName": "createTextureSet" @@ -76140,15 +76256,15 @@ "params": [ { "type": "Identifier", - "start": 95349, - "end": 95352, + "start": 95385, + "end": 95388, "loc": { "start": { - "line": 2573, + "line": 2574, "column": 21 }, "end": { - "line": 2573, + "line": 2574, "column": 24 }, "identifierName": "cfg" @@ -76158,59 +76274,59 @@ ], "body": { "type": "BlockStatement", - "start": 95354, - "end": 98668, + "start": 95390, + "end": 98704, "loc": { "start": { - "line": 2573, + "line": 2574, "column": 26 }, "end": { - "line": 2644, + "line": 2645, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 95364, - "end": 95392, + "start": 95400, + "end": 95428, "loc": { "start": { - "line": 2574, + "line": 2575, "column": 8 }, "end": { - "line": 2574, + "line": 2575, "column": 36 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 95370, - "end": 95391, + "start": 95406, + "end": 95427, "loc": { "start": { - "line": 2574, + "line": 2575, "column": 14 }, "end": { - "line": 2574, + "line": 2575, "column": 35 } }, "id": { "type": "Identifier", - "start": 95370, - "end": 95382, + "start": 95406, + "end": 95418, "loc": { "start": { - "line": 2574, + "line": 2575, "column": 14 }, "end": { - "line": 2574, + "line": 2575, "column": 26 }, "identifierName": "textureSetId" @@ -76219,29 +76335,29 @@ }, "init": { "type": "MemberExpression", - "start": 95385, - "end": 95391, + "start": 95421, + "end": 95427, "loc": { "start": { - "line": 2574, + "line": 2575, "column": 29 }, "end": { - "line": 2574, + "line": 2575, "column": 35 } }, "object": { "type": "Identifier", - "start": 95385, - "end": 95388, + "start": 95421, + "end": 95424, "loc": { "start": { - "line": 2574, + "line": 2575, "column": 29 }, "end": { - "line": 2574, + "line": 2575, "column": 32 }, "identifierName": "cfg" @@ -76250,15 +76366,15 @@ }, "property": { "type": "Identifier", - "start": 95389, - "end": 95391, + "start": 95425, + "end": 95427, "loc": { "start": { - "line": 2574, + "line": 2575, "column": 33 }, "end": { - "line": 2574, + "line": 2575, "column": 35 }, "identifierName": "id" @@ -76273,57 +76389,57 @@ }, { "type": "IfStatement", - "start": 95401, - "end": 95554, + "start": 95437, + "end": 95590, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 8 }, "end": { - "line": 2578, + "line": 2579, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 95405, - "end": 95456, + "start": 95441, + "end": 95492, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 12 }, "end": { - "line": 2575, + "line": 2576, "column": 63 } }, "left": { "type": "BinaryExpression", - "start": 95405, - "end": 95431, + "start": 95441, + "end": 95467, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 12 }, "end": { - "line": 2575, + "line": 2576, "column": 38 } }, "left": { "type": "Identifier", - "start": 95405, - "end": 95417, + "start": 95441, + "end": 95453, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 12 }, "end": { - "line": 2575, + "line": 2576, "column": 24 }, "identifierName": "textureSetId" @@ -76333,15 +76449,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 95422, - "end": 95431, + "start": 95458, + "end": 95467, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 29 }, "end": { - "line": 2575, + "line": 2576, "column": 38 }, "identifierName": "undefined" @@ -76352,29 +76468,29 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 95435, - "end": 95456, + "start": 95471, + "end": 95492, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 42 }, "end": { - "line": 2575, + "line": 2576, "column": 63 } }, "left": { "type": "Identifier", - "start": 95435, - "end": 95447, + "start": 95471, + "end": 95483, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 42 }, "end": { - "line": 2575, + "line": 2576, "column": 54 }, "identifierName": "textureSetId" @@ -76384,15 +76500,15 @@ "operator": "===", "right": { "type": "NullLiteral", - "start": 95452, - "end": 95456, + "start": 95488, + "end": 95492, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 59 }, "end": { - "line": 2575, + "line": 2576, "column": 63 } } @@ -76401,87 +76517,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 95458, - "end": 95554, + "start": 95494, + "end": 95590, "loc": { "start": { - "line": 2575, + "line": 2576, "column": 65 }, "end": { - "line": 2578, + "line": 2579, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 95472, - "end": 95524, + "start": 95508, + "end": 95560, "loc": { "start": { - "line": 2576, + "line": 2577, "column": 12 }, "end": { - "line": 2576, + "line": 2577, "column": 64 } }, "expression": { "type": "CallExpression", - "start": 95472, - "end": 95523, + "start": 95508, + "end": 95559, "loc": { "start": { - "line": 2576, + "line": 2577, "column": 12 }, "end": { - "line": 2576, + "line": 2577, "column": 63 } }, "callee": { "type": "MemberExpression", - "start": 95472, - "end": 95482, + "start": 95508, + "end": 95518, "loc": { "start": { - "line": 2576, + "line": 2577, "column": 12 }, "end": { - "line": 2576, + "line": 2577, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 95472, - "end": 95476, + "start": 95508, + "end": 95512, "loc": { "start": { - "line": 2576, + "line": 2577, "column": 12 }, "end": { - "line": 2576, + "line": 2577, "column": 16 } } }, "property": { "type": "Identifier", - "start": 95477, - "end": 95482, + "start": 95513, + "end": 95518, "loc": { "start": { - "line": 2576, + "line": 2577, "column": 17 }, "end": { - "line": 2576, + "line": 2577, "column": 22 }, "identifierName": "error" @@ -76493,15 +76609,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 95483, - "end": 95522, + "start": 95519, + "end": 95558, "loc": { "start": { - "line": 2576, + "line": 2577, "column": 23 }, "end": { - "line": 2576, + "line": 2577, "column": 62 } }, @@ -76516,15 +76632,15 @@ }, { "type": "ReturnStatement", - "start": 95537, - "end": 95544, + "start": 95573, + "end": 95580, "loc": { "start": { - "line": 2577, + "line": 2578, "column": 12 }, "end": { - "line": 2577, + "line": 2578, "column": 19 } }, @@ -76537,72 +76653,72 @@ }, { "type": "IfStatement", - "start": 95563, - "end": 95722, + "start": 95599, + "end": 95758, "loc": { "start": { - "line": 2579, + "line": 2580, "column": 8 }, "end": { - "line": 2582, + "line": 2583, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 95567, - "end": 95598, + "start": 95603, + "end": 95634, "loc": { "start": { - "line": 2579, + "line": 2580, "column": 12 }, "end": { - "line": 2579, + "line": 2580, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 95567, - "end": 95584, + "start": 95603, + "end": 95620, "loc": { "start": { - "line": 2579, + "line": 2580, "column": 12 }, "end": { - "line": 2579, + "line": 2580, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 95567, - "end": 95571, + "start": 95603, + "end": 95607, "loc": { "start": { - "line": 2579, + "line": 2580, "column": 12 }, "end": { - "line": 2579, + "line": 2580, "column": 16 } } }, "property": { "type": "Identifier", - "start": 95572, - "end": 95584, + "start": 95608, + "end": 95620, "loc": { "start": { - "line": 2579, + "line": 2580, "column": 17 }, "end": { - "line": 2579, + "line": 2580, "column": 29 }, "identifierName": "_textureSets" @@ -76613,15 +76729,15 @@ }, "property": { "type": "Identifier", - "start": 95585, - "end": 95597, + "start": 95621, + "end": 95633, "loc": { "start": { - "line": 2579, + "line": 2580, "column": 30 }, "end": { - "line": 2579, + "line": 2580, "column": 42 }, "identifierName": "textureSetId" @@ -76632,87 +76748,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 95600, - "end": 95722, + "start": 95636, + "end": 95758, "loc": { "start": { - "line": 2579, + "line": 2580, "column": 45 }, "end": { - "line": 2582, + "line": 2583, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 95614, - "end": 95692, + "start": 95650, + "end": 95728, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 12 }, "end": { - "line": 2580, + "line": 2581, "column": 90 } }, "expression": { "type": "CallExpression", - "start": 95614, - "end": 95691, + "start": 95650, + "end": 95727, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 12 }, "end": { - "line": 2580, + "line": 2581, "column": 89 } }, "callee": { "type": "MemberExpression", - "start": 95614, - "end": 95624, + "start": 95650, + "end": 95660, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 12 }, "end": { - "line": 2580, + "line": 2581, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 95614, - "end": 95618, + "start": 95650, + "end": 95654, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 12 }, "end": { - "line": 2580, + "line": 2581, "column": 16 } } }, "property": { "type": "Identifier", - "start": 95619, - "end": 95624, + "start": 95655, + "end": 95660, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 17 }, "end": { - "line": 2580, + "line": 2581, "column": 22 }, "identifierName": "error" @@ -76724,30 +76840,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 95625, - "end": 95690, + "start": 95661, + "end": 95726, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 23 }, "end": { - "line": 2580, + "line": 2581, "column": 88 } }, "expressions": [ { "type": "Identifier", - "start": 95676, - "end": 95688, + "start": 95712, + "end": 95724, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 74 }, "end": { - "line": 2580, + "line": 2581, "column": 86 }, "identifierName": "textureSetId" @@ -76758,15 +76874,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 95626, - "end": 95674, + "start": 95662, + "end": 95710, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 24 }, "end": { - "line": 2580, + "line": 2581, "column": 72 } }, @@ -76778,15 +76894,15 @@ }, { "type": "TemplateElement", - "start": 95689, - "end": 95689, + "start": 95725, + "end": 95725, "loc": { "start": { - "line": 2580, + "line": 2581, "column": 87 }, "end": { - "line": 2580, + "line": 2581, "column": 87 } }, @@ -76803,15 +76919,15 @@ }, { "type": "ReturnStatement", - "start": 95705, - "end": 95712, + "start": 95741, + "end": 95748, "loc": { "start": { - "line": 2581, + "line": 2582, "column": 12 }, "end": { - "line": 2581, + "line": 2582, "column": 19 } }, @@ -76824,44 +76940,44 @@ }, { "type": "VariableDeclaration", - "start": 95731, - "end": 95748, + "start": 95767, + "end": 95784, "loc": { "start": { - "line": 2583, + "line": 2584, "column": 8 }, "end": { - "line": 2583, + "line": 2584, "column": 25 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 95735, - "end": 95747, + "start": 95771, + "end": 95783, "loc": { "start": { - "line": 2583, + "line": 2584, "column": 12 }, "end": { - "line": 2583, + "line": 2584, "column": 24 } }, "id": { "type": "Identifier", - "start": 95735, - "end": 95747, + "start": 95771, + "end": 95783, "loc": { "start": { - "line": 2583, + "line": 2584, "column": 12 }, "end": { - "line": 2583, + "line": 2584, "column": 24 }, "identifierName": "colorTexture" @@ -76875,71 +76991,71 @@ }, { "type": "IfStatement", - "start": 95757, - "end": 96203, + "start": 95793, + "end": 96239, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 8 }, "end": { - "line": 2592, + "line": 2593, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 95761, - "end": 95824, + "start": 95797, + "end": 95860, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 12 }, "end": { - "line": 2584, + "line": 2585, "column": 75 } }, "left": { "type": "BinaryExpression", - "start": 95761, - "end": 95793, + "start": 95797, + "end": 95829, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 12 }, "end": { - "line": 2584, + "line": 2585, "column": 44 } }, "left": { "type": "MemberExpression", - "start": 95761, - "end": 95779, + "start": 95797, + "end": 95815, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 12 }, "end": { - "line": 2584, + "line": 2585, "column": 30 } }, "object": { "type": "Identifier", - "start": 95761, - "end": 95764, + "start": 95797, + "end": 95800, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 12 }, "end": { - "line": 2584, + "line": 2585, "column": 15 }, "identifierName": "cfg" @@ -76948,15 +77064,15 @@ }, "property": { "type": "Identifier", - "start": 95765, - "end": 95779, + "start": 95801, + "end": 95815, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 16 }, "end": { - "line": 2584, + "line": 2585, "column": 30 }, "identifierName": "colorTextureId" @@ -76968,15 +77084,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 95784, - "end": 95793, + "start": 95820, + "end": 95829, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 35 }, "end": { - "line": 2584, + "line": 2585, "column": 44 }, "identifierName": "undefined" @@ -76987,43 +77103,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 95797, - "end": 95824, + "start": 95833, + "end": 95860, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 48 }, "end": { - "line": 2584, + "line": 2585, "column": 75 } }, "left": { "type": "MemberExpression", - "start": 95797, - "end": 95815, + "start": 95833, + "end": 95851, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 48 }, "end": { - "line": 2584, + "line": 2585, "column": 66 } }, "object": { "type": "Identifier", - "start": 95797, - "end": 95800, + "start": 95833, + "end": 95836, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 48 }, "end": { - "line": 2584, + "line": 2585, "column": 51 }, "identifierName": "cfg" @@ -77032,15 +77148,15 @@ }, "property": { "type": "Identifier", - "start": 95801, - "end": 95815, + "start": 95837, + "end": 95851, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 52 }, "end": { - "line": 2584, + "line": 2585, "column": 66 }, "identifierName": "colorTextureId" @@ -77052,15 +77168,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 95820, - "end": 95824, + "start": 95856, + "end": 95860, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 71 }, "end": { - "line": 2584, + "line": 2585, "column": 75 } } @@ -77069,59 +77185,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 95826, - "end": 96117, + "start": 95862, + "end": 96153, "loc": { "start": { - "line": 2584, + "line": 2585, "column": 77 }, "end": { - "line": 2590, + "line": 2591, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 95840, - "end": 95890, + "start": 95876, + "end": 95926, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 12 }, "end": { - "line": 2585, + "line": 2586, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 95840, - "end": 95889, + "start": 95876, + "end": 95925, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 12 }, "end": { - "line": 2585, + "line": 2586, "column": 61 } }, "operator": "=", "left": { "type": "Identifier", - "start": 95840, - "end": 95852, + "start": 95876, + "end": 95888, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 12 }, "end": { - "line": 2585, + "line": 2586, "column": 24 }, "identifierName": "colorTexture" @@ -77130,58 +77246,58 @@ }, "right": { "type": "MemberExpression", - "start": 95855, - "end": 95889, + "start": 95891, + "end": 95925, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 27 }, "end": { - "line": 2585, + "line": 2586, "column": 61 } }, "object": { "type": "MemberExpression", - "start": 95855, - "end": 95869, + "start": 95891, + "end": 95905, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 27 }, "end": { - "line": 2585, + "line": 2586, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 95855, - "end": 95859, + "start": 95891, + "end": 95895, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 27 }, "end": { - "line": 2585, + "line": 2586, "column": 31 } } }, "property": { "type": "Identifier", - "start": 95860, - "end": 95869, + "start": 95896, + "end": 95905, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 32 }, "end": { - "line": 2585, + "line": 2586, "column": 41 }, "identifierName": "_textures" @@ -77192,29 +77308,29 @@ }, "property": { "type": "MemberExpression", - "start": 95870, - "end": 95888, + "start": 95906, + "end": 95924, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 42 }, "end": { - "line": 2585, + "line": 2586, "column": 60 } }, "object": { "type": "Identifier", - "start": 95870, - "end": 95873, + "start": 95906, + "end": 95909, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 42 }, "end": { - "line": 2585, + "line": 2586, "column": 45 }, "identifierName": "cfg" @@ -77223,15 +77339,15 @@ }, "property": { "type": "Identifier", - "start": 95874, - "end": 95888, + "start": 95910, + "end": 95924, "loc": { "start": { - "line": 2585, + "line": 2586, "column": 46 }, "end": { - "line": 2585, + "line": 2586, "column": 60 }, "identifierName": "colorTextureId" @@ -77246,29 +77362,29 @@ }, { "type": "IfStatement", - "start": 95903, - "end": 96107, + "start": 95939, + "end": 96143, "loc": { "start": { - "line": 2586, + "line": 2587, "column": 12 }, "end": { - "line": 2589, + "line": 2590, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 95907, - "end": 95920, + "start": 95943, + "end": 95956, "loc": { "start": { - "line": 2586, + "line": 2587, "column": 16 }, "end": { - "line": 2586, + "line": 2587, "column": 29 } }, @@ -77276,15 +77392,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 95908, - "end": 95920, + "start": 95944, + "end": 95956, "loc": { "start": { - "line": 2586, + "line": 2587, "column": 17 }, "end": { - "line": 2586, + "line": 2587, "column": 29 }, "identifierName": "colorTexture" @@ -77297,87 +77413,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 95922, - "end": 96107, + "start": 95958, + "end": 96143, "loc": { "start": { - "line": 2586, + "line": 2587, "column": 31 }, "end": { - "line": 2589, + "line": 2590, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 95940, - "end": 96069, + "start": 95976, + "end": 96105, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 16 }, "end": { - "line": 2587, + "line": 2588, "column": 145 } }, "expression": { "type": "CallExpression", - "start": 95940, - "end": 96068, + "start": 95976, + "end": 96104, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 16 }, "end": { - "line": 2587, + "line": 2588, "column": 144 } }, "callee": { "type": "MemberExpression", - "start": 95940, - "end": 95950, + "start": 95976, + "end": 95986, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 16 }, "end": { - "line": 2587, + "line": 2588, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 95940, - "end": 95944, + "start": 95976, + "end": 95980, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 16 }, "end": { - "line": 2587, + "line": 2588, "column": 20 } } }, "property": { "type": "Identifier", - "start": 95945, - "end": 95950, + "start": 95981, + "end": 95986, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 21 }, "end": { - "line": 2587, + "line": 2588, "column": 26 }, "identifierName": "error" @@ -77389,44 +77505,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 95951, - "end": 96067, + "start": 95987, + "end": 96103, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 27 }, "end": { - "line": 2587, + "line": 2588, "column": 143 } }, "expressions": [ { "type": "MemberExpression", - "start": 95992, - "end": 96010, + "start": 96028, + "end": 96046, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 68 }, "end": { - "line": 2587, + "line": 2588, "column": 86 } }, "object": { "type": "Identifier", - "start": 95992, - "end": 95995, + "start": 96028, + "end": 96031, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 68 }, "end": { - "line": 2587, + "line": 2588, "column": 71 }, "identifierName": "cfg" @@ -77435,15 +77551,15 @@ }, "property": { "type": "Identifier", - "start": 95996, - "end": 96010, + "start": 96032, + "end": 96046, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 72 }, "end": { - "line": 2587, + "line": 2588, "column": 86 }, "identifierName": "colorTextureId" @@ -77456,15 +77572,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 95952, - "end": 95990, + "start": 95988, + "end": 96026, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 28 }, "end": { - "line": 2587, + "line": 2588, "column": 66 } }, @@ -77476,15 +77592,15 @@ }, { "type": "TemplateElement", - "start": 96011, - "end": 96066, + "start": 96047, + "end": 96102, "loc": { "start": { - "line": 2587, + "line": 2588, "column": 87 }, "end": { - "line": 2587, + "line": 2588, "column": 142 } }, @@ -77501,15 +77617,15 @@ }, { "type": "ReturnStatement", - "start": 96086, - "end": 96093, + "start": 96122, + "end": 96129, "loc": { "start": { - "line": 2588, + "line": 2589, "column": 16 }, "end": { - "line": 2588, + "line": 2589, "column": 23 } }, @@ -77525,59 +77641,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 96123, - "end": 96203, + "start": 96159, + "end": 96239, "loc": { "start": { - "line": 2590, + "line": 2591, "column": 15 }, "end": { - "line": 2592, + "line": 2593, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 96137, - "end": 96193, + "start": 96173, + "end": 96229, "loc": { "start": { - "line": 2591, + "line": 2592, "column": 12 }, "end": { - "line": 2591, + "line": 2592, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 96137, - "end": 96192, + "start": 96173, + "end": 96228, "loc": { "start": { - "line": 2591, + "line": 2592, "column": 12 }, "end": { - "line": 2591, + "line": 2592, "column": 67 } }, "operator": "=", "left": { "type": "Identifier", - "start": 96137, - "end": 96149, + "start": 96173, + "end": 96185, "loc": { "start": { - "line": 2591, + "line": 2592, "column": 12 }, "end": { - "line": 2591, + "line": 2592, "column": 24 }, "identifierName": "colorTexture" @@ -77586,58 +77702,58 @@ }, "right": { "type": "MemberExpression", - "start": 96152, - "end": 96192, + "start": 96188, + "end": 96228, "loc": { "start": { - "line": 2591, + "line": 2592, "column": 27 }, "end": { - "line": 2591, + "line": 2592, "column": 67 } }, "object": { "type": "MemberExpression", - "start": 96152, - "end": 96166, + "start": 96188, + "end": 96202, "loc": { "start": { - "line": 2591, + "line": 2592, "column": 27 }, "end": { - "line": 2591, + "line": 2592, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 96152, - "end": 96156, + "start": 96188, + "end": 96192, "loc": { "start": { - "line": 2591, + "line": 2592, "column": 27 }, "end": { - "line": 2591, + "line": 2592, "column": 31 } } }, "property": { "type": "Identifier", - "start": 96157, - "end": 96166, + "start": 96193, + "end": 96202, "loc": { "start": { - "line": 2591, + "line": 2592, "column": 32 }, "end": { - "line": 2591, + "line": 2592, "column": 41 }, "identifierName": "_textures" @@ -77648,15 +77764,15 @@ }, "property": { "type": "Identifier", - "start": 96167, - "end": 96191, + "start": 96203, + "end": 96227, "loc": { "start": { - "line": 2591, + "line": 2592, "column": 42 }, "end": { - "line": 2591, + "line": 2592, "column": 66 }, "identifierName": "DEFAULT_COLOR_TEXTURE_ID" @@ -77673,44 +77789,44 @@ }, { "type": "VariableDeclaration", - "start": 96212, - "end": 96241, + "start": 96248, + "end": 96277, "loc": { "start": { - "line": 2593, + "line": 2594, "column": 8 }, "end": { - "line": 2593, + "line": 2594, "column": 37 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 96216, - "end": 96240, + "start": 96252, + "end": 96276, "loc": { "start": { - "line": 2593, + "line": 2594, "column": 12 }, "end": { - "line": 2593, + "line": 2594, "column": 36 } }, "id": { "type": "Identifier", - "start": 96216, - "end": 96240, + "start": 96252, + "end": 96276, "loc": { "start": { - "line": 2593, + "line": 2594, "column": 12 }, "end": { - "line": 2593, + "line": 2594, "column": 36 }, "identifierName": "metallicRoughnessTexture" @@ -77724,71 +77840,71 @@ }, { "type": "IfStatement", - "start": 96250, - "end": 96786, + "start": 96286, + "end": 96822, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 8 }, "end": { - "line": 2602, + "line": 2603, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 96254, - "end": 96341, + "start": 96290, + "end": 96377, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 12 }, "end": { - "line": 2594, + "line": 2595, "column": 99 } }, "left": { "type": "BinaryExpression", - "start": 96254, - "end": 96298, + "start": 96290, + "end": 96334, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 12 }, "end": { - "line": 2594, + "line": 2595, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 96254, - "end": 96284, + "start": 96290, + "end": 96320, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 12 }, "end": { - "line": 2594, + "line": 2595, "column": 42 } }, "object": { "type": "Identifier", - "start": 96254, - "end": 96257, + "start": 96290, + "end": 96293, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 12 }, "end": { - "line": 2594, + "line": 2595, "column": 15 }, "identifierName": "cfg" @@ -77797,15 +77913,15 @@ }, "property": { "type": "Identifier", - "start": 96258, - "end": 96284, + "start": 96294, + "end": 96320, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 16 }, "end": { - "line": 2594, + "line": 2595, "column": 42 }, "identifierName": "metallicRoughnessTextureId" @@ -77817,15 +77933,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 96289, - "end": 96298, + "start": 96325, + "end": 96334, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 47 }, "end": { - "line": 2594, + "line": 2595, "column": 56 }, "identifierName": "undefined" @@ -77836,43 +77952,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 96302, - "end": 96341, + "start": 96338, + "end": 96377, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 60 }, "end": { - "line": 2594, + "line": 2595, "column": 99 } }, "left": { "type": "MemberExpression", - "start": 96302, - "end": 96332, + "start": 96338, + "end": 96368, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 60 }, "end": { - "line": 2594, + "line": 2595, "column": 90 } }, "object": { "type": "Identifier", - "start": 96302, - "end": 96305, + "start": 96338, + "end": 96341, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 60 }, "end": { - "line": 2594, + "line": 2595, "column": 63 }, "identifierName": "cfg" @@ -77881,15 +77997,15 @@ }, "property": { "type": "Identifier", - "start": 96306, - "end": 96332, + "start": 96342, + "end": 96368, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 64 }, "end": { - "line": 2594, + "line": 2595, "column": 90 }, "identifierName": "metallicRoughnessTextureId" @@ -77901,15 +78017,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 96337, - "end": 96341, + "start": 96373, + "end": 96377, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 95 }, "end": { - "line": 2594, + "line": 2595, "column": 99 } } @@ -77918,59 +78034,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 96343, - "end": 96682, + "start": 96379, + "end": 96718, "loc": { "start": { - "line": 2594, + "line": 2595, "column": 101 }, "end": { - "line": 2600, + "line": 2601, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 96357, - "end": 96431, + "start": 96393, + "end": 96467, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 12 }, "end": { - "line": 2595, + "line": 2596, "column": 86 } }, "expression": { "type": "AssignmentExpression", - "start": 96357, - "end": 96430, + "start": 96393, + "end": 96466, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 12 }, "end": { - "line": 2595, + "line": 2596, "column": 85 } }, "operator": "=", "left": { "type": "Identifier", - "start": 96357, - "end": 96381, + "start": 96393, + "end": 96417, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 12 }, "end": { - "line": 2595, + "line": 2596, "column": 36 }, "identifierName": "metallicRoughnessTexture" @@ -77979,58 +78095,58 @@ }, "right": { "type": "MemberExpression", - "start": 96384, - "end": 96430, + "start": 96420, + "end": 96466, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 39 }, "end": { - "line": 2595, + "line": 2596, "column": 85 } }, "object": { "type": "MemberExpression", - "start": 96384, - "end": 96398, + "start": 96420, + "end": 96434, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 39 }, "end": { - "line": 2595, + "line": 2596, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 96384, - "end": 96388, + "start": 96420, + "end": 96424, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 39 }, "end": { - "line": 2595, + "line": 2596, "column": 43 } } }, "property": { "type": "Identifier", - "start": 96389, - "end": 96398, + "start": 96425, + "end": 96434, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 44 }, "end": { - "line": 2595, + "line": 2596, "column": 53 }, "identifierName": "_textures" @@ -78041,29 +78157,29 @@ }, "property": { "type": "MemberExpression", - "start": 96399, - "end": 96429, + "start": 96435, + "end": 96465, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 54 }, "end": { - "line": 2595, + "line": 2596, "column": 84 } }, "object": { "type": "Identifier", - "start": 96399, - "end": 96402, + "start": 96435, + "end": 96438, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 54 }, "end": { - "line": 2595, + "line": 2596, "column": 57 }, "identifierName": "cfg" @@ -78072,15 +78188,15 @@ }, "property": { "type": "Identifier", - "start": 96403, - "end": 96429, + "start": 96439, + "end": 96465, "loc": { "start": { - "line": 2595, + "line": 2596, "column": 58 }, "end": { - "line": 2595, + "line": 2596, "column": 84 }, "identifierName": "metallicRoughnessTextureId" @@ -78095,29 +78211,29 @@ }, { "type": "IfStatement", - "start": 96444, - "end": 96672, + "start": 96480, + "end": 96708, "loc": { "start": { - "line": 2596, + "line": 2597, "column": 12 }, "end": { - "line": 2599, + "line": 2600, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 96448, - "end": 96473, + "start": 96484, + "end": 96509, "loc": { "start": { - "line": 2596, + "line": 2597, "column": 16 }, "end": { - "line": 2596, + "line": 2597, "column": 41 } }, @@ -78125,15 +78241,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 96449, - "end": 96473, + "start": 96485, + "end": 96509, "loc": { "start": { - "line": 2596, + "line": 2597, "column": 17 }, "end": { - "line": 2596, + "line": 2597, "column": 41 }, "identifierName": "metallicRoughnessTexture" @@ -78146,87 +78262,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 96475, - "end": 96672, + "start": 96511, + "end": 96708, "loc": { "start": { - "line": 2596, + "line": 2597, "column": 43 }, "end": { - "line": 2599, + "line": 2600, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 96493, - "end": 96634, + "start": 96529, + "end": 96670, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 16 }, "end": { - "line": 2597, + "line": 2598, "column": 157 } }, "expression": { "type": "CallExpression", - "start": 96493, - "end": 96633, + "start": 96529, + "end": 96669, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 16 }, "end": { - "line": 2597, + "line": 2598, "column": 156 } }, "callee": { "type": "MemberExpression", - "start": 96493, - "end": 96503, + "start": 96529, + "end": 96539, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 16 }, "end": { - "line": 2597, + "line": 2598, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 96493, - "end": 96497, + "start": 96529, + "end": 96533, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 16 }, "end": { - "line": 2597, + "line": 2598, "column": 20 } } }, "property": { "type": "Identifier", - "start": 96498, - "end": 96503, + "start": 96534, + "end": 96539, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 21 }, "end": { - "line": 2597, + "line": 2598, "column": 26 }, "identifierName": "error" @@ -78238,44 +78354,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 96504, - "end": 96632, + "start": 96540, + "end": 96668, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 27 }, "end": { - "line": 2597, + "line": 2598, "column": 155 } }, "expressions": [ { "type": "MemberExpression", - "start": 96545, - "end": 96575, + "start": 96581, + "end": 96611, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 68 }, "end": { - "line": 2597, + "line": 2598, "column": 98 } }, "object": { "type": "Identifier", - "start": 96545, - "end": 96548, + "start": 96581, + "end": 96584, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 68 }, "end": { - "line": 2597, + "line": 2598, "column": 71 }, "identifierName": "cfg" @@ -78284,15 +78400,15 @@ }, "property": { "type": "Identifier", - "start": 96549, - "end": 96575, + "start": 96585, + "end": 96611, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 72 }, "end": { - "line": 2597, + "line": 2598, "column": 98 }, "identifierName": "metallicRoughnessTextureId" @@ -78305,15 +78421,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 96505, - "end": 96543, + "start": 96541, + "end": 96579, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 28 }, "end": { - "line": 2597, + "line": 2598, "column": 66 } }, @@ -78325,15 +78441,15 @@ }, { "type": "TemplateElement", - "start": 96576, - "end": 96631, + "start": 96612, + "end": 96667, "loc": { "start": { - "line": 2597, + "line": 2598, "column": 99 }, "end": { - "line": 2597, + "line": 2598, "column": 154 } }, @@ -78350,15 +78466,15 @@ }, { "type": "ReturnStatement", - "start": 96651, - "end": 96658, + "start": 96687, + "end": 96694, "loc": { "start": { - "line": 2598, + "line": 2599, "column": 16 }, "end": { - "line": 2598, + "line": 2599, "column": 23 } }, @@ -78374,59 +78490,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 96688, - "end": 96786, + "start": 96724, + "end": 96822, "loc": { "start": { - "line": 2600, + "line": 2601, "column": 15 }, "end": { - "line": 2602, + "line": 2603, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 96702, - "end": 96776, + "start": 96738, + "end": 96812, "loc": { "start": { - "line": 2601, + "line": 2602, "column": 12 }, "end": { - "line": 2601, + "line": 2602, "column": 86 } }, "expression": { "type": "AssignmentExpression", - "start": 96702, - "end": 96775, + "start": 96738, + "end": 96811, "loc": { "start": { - "line": 2601, + "line": 2602, "column": 12 }, "end": { - "line": 2601, + "line": 2602, "column": 85 } }, "operator": "=", "left": { "type": "Identifier", - "start": 96702, - "end": 96726, + "start": 96738, + "end": 96762, "loc": { "start": { - "line": 2601, + "line": 2602, "column": 12 }, "end": { - "line": 2601, + "line": 2602, "column": 36 }, "identifierName": "metallicRoughnessTexture" @@ -78435,58 +78551,58 @@ }, "right": { "type": "MemberExpression", - "start": 96729, - "end": 96775, + "start": 96765, + "end": 96811, "loc": { "start": { - "line": 2601, + "line": 2602, "column": 39 }, "end": { - "line": 2601, + "line": 2602, "column": 85 } }, "object": { "type": "MemberExpression", - "start": 96729, - "end": 96743, + "start": 96765, + "end": 96779, "loc": { "start": { - "line": 2601, + "line": 2602, "column": 39 }, "end": { - "line": 2601, + "line": 2602, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 96729, - "end": 96733, + "start": 96765, + "end": 96769, "loc": { "start": { - "line": 2601, + "line": 2602, "column": 39 }, "end": { - "line": 2601, + "line": 2602, "column": 43 } } }, "property": { "type": "Identifier", - "start": 96734, - "end": 96743, + "start": 96770, + "end": 96779, "loc": { "start": { - "line": 2601, + "line": 2602, "column": 44 }, "end": { - "line": 2601, + "line": 2602, "column": 53 }, "identifierName": "_textures" @@ -78497,15 +78613,15 @@ }, "property": { "type": "Identifier", - "start": 96744, - "end": 96774, + "start": 96780, + "end": 96810, "loc": { "start": { - "line": 2601, + "line": 2602, "column": 54 }, "end": { - "line": 2601, + "line": 2602, "column": 84 }, "identifierName": "DEFAULT_METAL_ROUGH_TEXTURE_ID" @@ -78522,44 +78638,44 @@ }, { "type": "VariableDeclaration", - "start": 96795, - "end": 96814, + "start": 96831, + "end": 96850, "loc": { "start": { - "line": 2603, + "line": 2604, "column": 8 }, "end": { - "line": 2603, + "line": 2604, "column": 27 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 96799, - "end": 96813, + "start": 96835, + "end": 96849, "loc": { "start": { - "line": 2603, + "line": 2604, "column": 12 }, "end": { - "line": 2603, + "line": 2604, "column": 26 } }, "id": { "type": "Identifier", - "start": 96799, - "end": 96813, + "start": 96835, + "end": 96849, "loc": { "start": { - "line": 2603, + "line": 2604, "column": 12 }, "end": { - "line": 2603, + "line": 2604, "column": 26 }, "identifierName": "normalsTexture" @@ -78573,71 +78689,71 @@ }, { "type": "IfStatement", - "start": 96823, - "end": 97285, + "start": 96859, + "end": 97321, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 8 }, "end": { - "line": 2612, + "line": 2613, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 96827, - "end": 96894, + "start": 96863, + "end": 96930, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 12 }, "end": { - "line": 2604, + "line": 2605, "column": 79 } }, "left": { "type": "BinaryExpression", - "start": 96827, - "end": 96861, + "start": 96863, + "end": 96897, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 12 }, "end": { - "line": 2604, + "line": 2605, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 96827, - "end": 96847, + "start": 96863, + "end": 96883, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 12 }, "end": { - "line": 2604, + "line": 2605, "column": 32 } }, "object": { "type": "Identifier", - "start": 96827, - "end": 96830, + "start": 96863, + "end": 96866, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 12 }, "end": { - "line": 2604, + "line": 2605, "column": 15 }, "identifierName": "cfg" @@ -78646,15 +78762,15 @@ }, "property": { "type": "Identifier", - "start": 96831, - "end": 96847, + "start": 96867, + "end": 96883, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 16 }, "end": { - "line": 2604, + "line": 2605, "column": 32 }, "identifierName": "normalsTextureId" @@ -78666,15 +78782,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 96852, - "end": 96861, + "start": 96888, + "end": 96897, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 37 }, "end": { - "line": 2604, + "line": 2605, "column": 46 }, "identifierName": "undefined" @@ -78685,43 +78801,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 96865, - "end": 96894, + "start": 96901, + "end": 96930, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 50 }, "end": { - "line": 2604, + "line": 2605, "column": 79 } }, "left": { "type": "MemberExpression", - "start": 96865, - "end": 96885, + "start": 96901, + "end": 96921, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 50 }, "end": { - "line": 2604, + "line": 2605, "column": 70 } }, "object": { "type": "Identifier", - "start": 96865, - "end": 96868, + "start": 96901, + "end": 96904, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 50 }, "end": { - "line": 2604, + "line": 2605, "column": 53 }, "identifierName": "cfg" @@ -78730,15 +78846,15 @@ }, "property": { "type": "Identifier", - "start": 96869, - "end": 96885, + "start": 96905, + "end": 96921, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 54 }, "end": { - "line": 2604, + "line": 2605, "column": 70 }, "identifierName": "normalsTextureId" @@ -78750,15 +78866,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 96890, - "end": 96894, + "start": 96926, + "end": 96930, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 75 }, "end": { - "line": 2604, + "line": 2605, "column": 79 } } @@ -78767,59 +78883,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 96896, - "end": 97195, + "start": 96932, + "end": 97231, "loc": { "start": { - "line": 2604, + "line": 2605, "column": 81 }, "end": { - "line": 2610, + "line": 2611, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 96910, - "end": 96964, + "start": 96946, + "end": 97000, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 12 }, "end": { - "line": 2605, + "line": 2606, "column": 66 } }, "expression": { "type": "AssignmentExpression", - "start": 96910, - "end": 96963, + "start": 96946, + "end": 96999, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 12 }, "end": { - "line": 2605, + "line": 2606, "column": 65 } }, "operator": "=", "left": { "type": "Identifier", - "start": 96910, - "end": 96924, + "start": 96946, + "end": 96960, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 12 }, "end": { - "line": 2605, + "line": 2606, "column": 26 }, "identifierName": "normalsTexture" @@ -78828,58 +78944,58 @@ }, "right": { "type": "MemberExpression", - "start": 96927, - "end": 96963, + "start": 96963, + "end": 96999, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 29 }, "end": { - "line": 2605, + "line": 2606, "column": 65 } }, "object": { "type": "MemberExpression", - "start": 96927, - "end": 96941, + "start": 96963, + "end": 96977, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 29 }, "end": { - "line": 2605, + "line": 2606, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 96927, - "end": 96931, + "start": 96963, + "end": 96967, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 29 }, "end": { - "line": 2605, + "line": 2606, "column": 33 } } }, "property": { "type": "Identifier", - "start": 96932, - "end": 96941, + "start": 96968, + "end": 96977, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 34 }, "end": { - "line": 2605, + "line": 2606, "column": 43 }, "identifierName": "_textures" @@ -78890,29 +79006,29 @@ }, "property": { "type": "MemberExpression", - "start": 96942, - "end": 96962, + "start": 96978, + "end": 96998, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 44 }, "end": { - "line": 2605, + "line": 2606, "column": 64 } }, "object": { "type": "Identifier", - "start": 96942, - "end": 96945, + "start": 96978, + "end": 96981, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 44 }, "end": { - "line": 2605, + "line": 2606, "column": 47 }, "identifierName": "cfg" @@ -78921,15 +79037,15 @@ }, "property": { "type": "Identifier", - "start": 96946, - "end": 96962, + "start": 96982, + "end": 96998, "loc": { "start": { - "line": 2605, + "line": 2606, "column": 48 }, "end": { - "line": 2605, + "line": 2606, "column": 64 }, "identifierName": "normalsTextureId" @@ -78944,29 +79060,29 @@ }, { "type": "IfStatement", - "start": 96977, - "end": 97185, + "start": 97013, + "end": 97221, "loc": { "start": { - "line": 2606, + "line": 2607, "column": 12 }, "end": { - "line": 2609, + "line": 2610, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 96981, - "end": 96996, + "start": 97017, + "end": 97032, "loc": { "start": { - "line": 2606, + "line": 2607, "column": 16 }, "end": { - "line": 2606, + "line": 2607, "column": 31 } }, @@ -78974,15 +79090,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 96982, - "end": 96996, + "start": 97018, + "end": 97032, "loc": { "start": { - "line": 2606, + "line": 2607, "column": 17 }, "end": { - "line": 2606, + "line": 2607, "column": 31 }, "identifierName": "normalsTexture" @@ -78995,87 +79111,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 96998, - "end": 97185, + "start": 97034, + "end": 97221, "loc": { "start": { - "line": 2606, + "line": 2607, "column": 33 }, "end": { - "line": 2609, + "line": 2610, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 97016, - "end": 97147, + "start": 97052, + "end": 97183, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 16 }, "end": { - "line": 2607, + "line": 2608, "column": 147 } }, "expression": { "type": "CallExpression", - "start": 97016, - "end": 97146, + "start": 97052, + "end": 97182, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 16 }, "end": { - "line": 2607, + "line": 2608, "column": 146 } }, "callee": { "type": "MemberExpression", - "start": 97016, - "end": 97026, + "start": 97052, + "end": 97062, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 16 }, "end": { - "line": 2607, + "line": 2608, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 97016, - "end": 97020, + "start": 97052, + "end": 97056, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 16 }, "end": { - "line": 2607, + "line": 2608, "column": 20 } } }, "property": { "type": "Identifier", - "start": 97021, - "end": 97026, + "start": 97057, + "end": 97062, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 21 }, "end": { - "line": 2607, + "line": 2608, "column": 26 }, "identifierName": "error" @@ -79087,44 +79203,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 97027, - "end": 97145, + "start": 97063, + "end": 97181, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 27 }, "end": { - "line": 2607, + "line": 2608, "column": 145 } }, "expressions": [ { "type": "MemberExpression", - "start": 97068, - "end": 97088, + "start": 97104, + "end": 97124, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 68 }, "end": { - "line": 2607, + "line": 2608, "column": 88 } }, "object": { "type": "Identifier", - "start": 97068, - "end": 97071, + "start": 97104, + "end": 97107, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 68 }, "end": { - "line": 2607, + "line": 2608, "column": 71 }, "identifierName": "cfg" @@ -79133,15 +79249,15 @@ }, "property": { "type": "Identifier", - "start": 97072, - "end": 97088, + "start": 97108, + "end": 97124, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 72 }, "end": { - "line": 2607, + "line": 2608, "column": 88 }, "identifierName": "normalsTextureId" @@ -79154,15 +79270,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 97028, - "end": 97066, + "start": 97064, + "end": 97102, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 28 }, "end": { - "line": 2607, + "line": 2608, "column": 66 } }, @@ -79174,15 +79290,15 @@ }, { "type": "TemplateElement", - "start": 97089, - "end": 97144, + "start": 97125, + "end": 97180, "loc": { "start": { - "line": 2607, + "line": 2608, "column": 89 }, "end": { - "line": 2607, + "line": 2608, "column": 144 } }, @@ -79199,15 +79315,15 @@ }, { "type": "ReturnStatement", - "start": 97164, - "end": 97171, + "start": 97200, + "end": 97207, "loc": { "start": { - "line": 2608, + "line": 2609, "column": 16 }, "end": { - "line": 2608, + "line": 2609, "column": 23 } }, @@ -79223,59 +79339,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 97201, - "end": 97285, + "start": 97237, + "end": 97321, "loc": { "start": { - "line": 2610, + "line": 2611, "column": 15 }, "end": { - "line": 2612, + "line": 2613, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 97215, - "end": 97275, + "start": 97251, + "end": 97311, "loc": { "start": { - "line": 2611, + "line": 2612, "column": 12 }, "end": { - "line": 2611, + "line": 2612, "column": 72 } }, "expression": { "type": "AssignmentExpression", - "start": 97215, - "end": 97274, + "start": 97251, + "end": 97310, "loc": { "start": { - "line": 2611, + "line": 2612, "column": 12 }, "end": { - "line": 2611, + "line": 2612, "column": 71 } }, "operator": "=", "left": { "type": "Identifier", - "start": 97215, - "end": 97229, + "start": 97251, + "end": 97265, "loc": { "start": { - "line": 2611, + "line": 2612, "column": 12 }, "end": { - "line": 2611, + "line": 2612, "column": 26 }, "identifierName": "normalsTexture" @@ -79284,58 +79400,58 @@ }, "right": { "type": "MemberExpression", - "start": 97232, - "end": 97274, + "start": 97268, + "end": 97310, "loc": { "start": { - "line": 2611, + "line": 2612, "column": 29 }, "end": { - "line": 2611, + "line": 2612, "column": 71 } }, "object": { "type": "MemberExpression", - "start": 97232, - "end": 97246, + "start": 97268, + "end": 97282, "loc": { "start": { - "line": 2611, + "line": 2612, "column": 29 }, "end": { - "line": 2611, + "line": 2612, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 97232, - "end": 97236, + "start": 97268, + "end": 97272, "loc": { "start": { - "line": 2611, + "line": 2612, "column": 29 }, "end": { - "line": 2611, + "line": 2612, "column": 33 } } }, "property": { "type": "Identifier", - "start": 97237, - "end": 97246, + "start": 97273, + "end": 97282, "loc": { "start": { - "line": 2611, + "line": 2612, "column": 34 }, "end": { - "line": 2611, + "line": 2612, "column": 43 }, "identifierName": "_textures" @@ -79346,15 +79462,15 @@ }, "property": { "type": "Identifier", - "start": 97247, - "end": 97273, + "start": 97283, + "end": 97309, "loc": { "start": { - "line": 2611, + "line": 2612, "column": 44 }, "end": { - "line": 2611, + "line": 2612, "column": 70 }, "identifierName": "DEFAULT_NORMALS_TEXTURE_ID" @@ -79371,44 +79487,44 @@ }, { "type": "VariableDeclaration", - "start": 97294, - "end": 97314, + "start": 97330, + "end": 97350, "loc": { "start": { - "line": 2613, + "line": 2614, "column": 8 }, "end": { - "line": 2613, + "line": 2614, "column": 28 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 97298, - "end": 97313, + "start": 97334, + "end": 97349, "loc": { "start": { - "line": 2613, + "line": 2614, "column": 12 }, "end": { - "line": 2613, + "line": 2614, "column": 27 } }, "id": { "type": "Identifier", - "start": 97298, - "end": 97313, + "start": 97334, + "end": 97349, "loc": { "start": { - "line": 2613, + "line": 2614, "column": 12 }, "end": { - "line": 2613, + "line": 2614, "column": 27 }, "identifierName": "emissiveTexture" @@ -79422,71 +79538,71 @@ }, { "type": "IfStatement", - "start": 97323, - "end": 97793, + "start": 97359, + "end": 97829, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 8 }, "end": { - "line": 2622, + "line": 2623, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 97327, - "end": 97396, + "start": 97363, + "end": 97432, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 12 }, "end": { - "line": 2614, + "line": 2615, "column": 81 } }, "left": { "type": "BinaryExpression", - "start": 97327, - "end": 97362, + "start": 97363, + "end": 97398, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 12 }, "end": { - "line": 2614, + "line": 2615, "column": 47 } }, "left": { "type": "MemberExpression", - "start": 97327, - "end": 97348, + "start": 97363, + "end": 97384, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 12 }, "end": { - "line": 2614, + "line": 2615, "column": 33 } }, "object": { "type": "Identifier", - "start": 97327, - "end": 97330, + "start": 97363, + "end": 97366, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 12 }, "end": { - "line": 2614, + "line": 2615, "column": 15 }, "identifierName": "cfg" @@ -79495,15 +79611,15 @@ }, "property": { "type": "Identifier", - "start": 97331, - "end": 97348, + "start": 97367, + "end": 97384, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 16 }, "end": { - "line": 2614, + "line": 2615, "column": 33 }, "identifierName": "emissiveTextureId" @@ -79515,15 +79631,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 97353, - "end": 97362, + "start": 97389, + "end": 97398, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 38 }, "end": { - "line": 2614, + "line": 2615, "column": 47 }, "identifierName": "undefined" @@ -79534,43 +79650,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 97366, - "end": 97396, + "start": 97402, + "end": 97432, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 51 }, "end": { - "line": 2614, + "line": 2615, "column": 81 } }, "left": { "type": "MemberExpression", - "start": 97366, - "end": 97387, + "start": 97402, + "end": 97423, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 51 }, "end": { - "line": 2614, + "line": 2615, "column": 72 } }, "object": { "type": "Identifier", - "start": 97366, - "end": 97369, + "start": 97402, + "end": 97405, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 51 }, "end": { - "line": 2614, + "line": 2615, "column": 54 }, "identifierName": "cfg" @@ -79579,15 +79695,15 @@ }, "property": { "type": "Identifier", - "start": 97370, - "end": 97387, + "start": 97406, + "end": 97423, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 55 }, "end": { - "line": 2614, + "line": 2615, "column": 72 }, "identifierName": "emissiveTextureId" @@ -79599,15 +79715,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 97392, - "end": 97396, + "start": 97428, + "end": 97432, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 77 }, "end": { - "line": 2614, + "line": 2615, "column": 81 } } @@ -79616,59 +79732,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 97398, - "end": 97701, + "start": 97434, + "end": 97737, "loc": { "start": { - "line": 2614, + "line": 2615, "column": 83 }, "end": { - "line": 2620, + "line": 2621, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 97412, - "end": 97468, + "start": 97448, + "end": 97504, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 12 }, "end": { - "line": 2615, + "line": 2616, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 97412, - "end": 97467, + "start": 97448, + "end": 97503, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 12 }, "end": { - "line": 2615, + "line": 2616, "column": 67 } }, "operator": "=", "left": { "type": "Identifier", - "start": 97412, - "end": 97427, + "start": 97448, + "end": 97463, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 12 }, "end": { - "line": 2615, + "line": 2616, "column": 27 }, "identifierName": "emissiveTexture" @@ -79677,58 +79793,58 @@ }, "right": { "type": "MemberExpression", - "start": 97430, - "end": 97467, + "start": 97466, + "end": 97503, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 30 }, "end": { - "line": 2615, + "line": 2616, "column": 67 } }, "object": { "type": "MemberExpression", - "start": 97430, - "end": 97444, + "start": 97466, + "end": 97480, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 30 }, "end": { - "line": 2615, + "line": 2616, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 97430, - "end": 97434, + "start": 97466, + "end": 97470, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 30 }, "end": { - "line": 2615, + "line": 2616, "column": 34 } } }, "property": { "type": "Identifier", - "start": 97435, - "end": 97444, + "start": 97471, + "end": 97480, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 35 }, "end": { - "line": 2615, + "line": 2616, "column": 44 }, "identifierName": "_textures" @@ -79739,29 +79855,29 @@ }, "property": { "type": "MemberExpression", - "start": 97445, - "end": 97466, + "start": 97481, + "end": 97502, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 45 }, "end": { - "line": 2615, + "line": 2616, "column": 66 } }, "object": { "type": "Identifier", - "start": 97445, - "end": 97448, + "start": 97481, + "end": 97484, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 45 }, "end": { - "line": 2615, + "line": 2616, "column": 48 }, "identifierName": "cfg" @@ -79770,15 +79886,15 @@ }, "property": { "type": "Identifier", - "start": 97449, - "end": 97466, + "start": 97485, + "end": 97502, "loc": { "start": { - "line": 2615, + "line": 2616, "column": 49 }, "end": { - "line": 2615, + "line": 2616, "column": 66 }, "identifierName": "emissiveTextureId" @@ -79793,29 +79909,29 @@ }, { "type": "IfStatement", - "start": 97481, - "end": 97691, + "start": 97517, + "end": 97727, "loc": { "start": { - "line": 2616, + "line": 2617, "column": 12 }, "end": { - "line": 2619, + "line": 2620, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 97485, - "end": 97501, + "start": 97521, + "end": 97537, "loc": { "start": { - "line": 2616, + "line": 2617, "column": 16 }, "end": { - "line": 2616, + "line": 2617, "column": 32 } }, @@ -79823,15 +79939,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 97486, - "end": 97501, + "start": 97522, + "end": 97537, "loc": { "start": { - "line": 2616, + "line": 2617, "column": 17 }, "end": { - "line": 2616, + "line": 2617, "column": 32 }, "identifierName": "emissiveTexture" @@ -79844,87 +79960,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 97503, - "end": 97691, + "start": 97539, + "end": 97727, "loc": { "start": { - "line": 2616, + "line": 2617, "column": 34 }, "end": { - "line": 2619, + "line": 2620, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 97521, - "end": 97653, + "start": 97557, + "end": 97689, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 16 }, "end": { - "line": 2617, + "line": 2618, "column": 148 } }, "expression": { "type": "CallExpression", - "start": 97521, - "end": 97652, + "start": 97557, + "end": 97688, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 16 }, "end": { - "line": 2617, + "line": 2618, "column": 147 } }, "callee": { "type": "MemberExpression", - "start": 97521, - "end": 97531, + "start": 97557, + "end": 97567, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 16 }, "end": { - "line": 2617, + "line": 2618, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 97521, - "end": 97525, + "start": 97557, + "end": 97561, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 16 }, "end": { - "line": 2617, + "line": 2618, "column": 20 } } }, "property": { "type": "Identifier", - "start": 97526, - "end": 97531, + "start": 97562, + "end": 97567, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 21 }, "end": { - "line": 2617, + "line": 2618, "column": 26 }, "identifierName": "error" @@ -79936,44 +80052,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 97532, - "end": 97651, + "start": 97568, + "end": 97687, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 27 }, "end": { - "line": 2617, + "line": 2618, "column": 146 } }, "expressions": [ { "type": "MemberExpression", - "start": 97573, - "end": 97594, + "start": 97609, + "end": 97630, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 68 }, "end": { - "line": 2617, + "line": 2618, "column": 89 } }, "object": { "type": "Identifier", - "start": 97573, - "end": 97576, + "start": 97609, + "end": 97612, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 68 }, "end": { - "line": 2617, + "line": 2618, "column": 71 }, "identifierName": "cfg" @@ -79982,15 +80098,15 @@ }, "property": { "type": "Identifier", - "start": 97577, - "end": 97594, + "start": 97613, + "end": 97630, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 72 }, "end": { - "line": 2617, + "line": 2618, "column": 89 }, "identifierName": "emissiveTextureId" @@ -80003,15 +80119,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 97533, - "end": 97571, + "start": 97569, + "end": 97607, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 28 }, "end": { - "line": 2617, + "line": 2618, "column": 66 } }, @@ -80023,15 +80139,15 @@ }, { "type": "TemplateElement", - "start": 97595, - "end": 97650, + "start": 97631, + "end": 97686, "loc": { "start": { - "line": 2617, + "line": 2618, "column": 90 }, "end": { - "line": 2617, + "line": 2618, "column": 145 } }, @@ -80048,15 +80164,15 @@ }, { "type": "ReturnStatement", - "start": 97670, - "end": 97677, + "start": 97706, + "end": 97713, "loc": { "start": { - "line": 2618, + "line": 2619, "column": 16 }, "end": { - "line": 2618, + "line": 2619, "column": 23 } }, @@ -80072,59 +80188,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 97707, - "end": 97793, + "start": 97743, + "end": 97829, "loc": { "start": { - "line": 2620, + "line": 2621, "column": 15 }, "end": { - "line": 2622, + "line": 2623, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 97721, - "end": 97783, + "start": 97757, + "end": 97819, "loc": { "start": { - "line": 2621, + "line": 2622, "column": 12 }, "end": { - "line": 2621, + "line": 2622, "column": 74 } }, "expression": { "type": "AssignmentExpression", - "start": 97721, - "end": 97782, + "start": 97757, + "end": 97818, "loc": { "start": { - "line": 2621, + "line": 2622, "column": 12 }, "end": { - "line": 2621, + "line": 2622, "column": 73 } }, "operator": "=", "left": { "type": "Identifier", - "start": 97721, - "end": 97736, + "start": 97757, + "end": 97772, "loc": { "start": { - "line": 2621, + "line": 2622, "column": 12 }, "end": { - "line": 2621, + "line": 2622, "column": 27 }, "identifierName": "emissiveTexture" @@ -80133,58 +80249,58 @@ }, "right": { "type": "MemberExpression", - "start": 97739, - "end": 97782, + "start": 97775, + "end": 97818, "loc": { "start": { - "line": 2621, + "line": 2622, "column": 30 }, "end": { - "line": 2621, + "line": 2622, "column": 73 } }, "object": { "type": "MemberExpression", - "start": 97739, - "end": 97753, + "start": 97775, + "end": 97789, "loc": { "start": { - "line": 2621, + "line": 2622, "column": 30 }, "end": { - "line": 2621, + "line": 2622, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 97739, - "end": 97743, + "start": 97775, + "end": 97779, "loc": { "start": { - "line": 2621, + "line": 2622, "column": 30 }, "end": { - "line": 2621, + "line": 2622, "column": 34 } } }, "property": { "type": "Identifier", - "start": 97744, - "end": 97753, + "start": 97780, + "end": 97789, "loc": { "start": { - "line": 2621, + "line": 2622, "column": 35 }, "end": { - "line": 2621, + "line": 2622, "column": 44 }, "identifierName": "_textures" @@ -80195,15 +80311,15 @@ }, "property": { "type": "Identifier", - "start": 97754, - "end": 97781, + "start": 97790, + "end": 97817, "loc": { "start": { - "line": 2621, + "line": 2622, "column": 45 }, "end": { - "line": 2621, + "line": 2622, "column": 72 }, "identifierName": "DEFAULT_EMISSIVE_TEXTURE_ID" @@ -80220,44 +80336,44 @@ }, { "type": "VariableDeclaration", - "start": 97802, - "end": 97823, + "start": 97838, + "end": 97859, "loc": { "start": { - "line": 2623, + "line": 2624, "column": 8 }, "end": { - "line": 2623, + "line": 2624, "column": 29 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 97806, - "end": 97822, + "start": 97842, + "end": 97858, "loc": { "start": { - "line": 2623, + "line": 2624, "column": 12 }, "end": { - "line": 2623, + "line": 2624, "column": 28 } }, "id": { "type": "Identifier", - "start": 97806, - "end": 97822, + "start": 97842, + "end": 97858, "loc": { "start": { - "line": 2623, + "line": 2624, "column": 12 }, "end": { - "line": 2623, + "line": 2624, "column": 28 }, "identifierName": "occlusionTexture" @@ -80271,71 +80387,71 @@ }, { "type": "IfStatement", - "start": 97832, - "end": 98310, + "start": 97868, + "end": 98346, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 8 }, "end": { - "line": 2632, + "line": 2633, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 97836, - "end": 97907, + "start": 97872, + "end": 97943, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 12 }, "end": { - "line": 2624, + "line": 2625, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 97836, - "end": 97872, + "start": 97872, + "end": 97908, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 12 }, "end": { - "line": 2624, + "line": 2625, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 97836, - "end": 97858, + "start": 97872, + "end": 97894, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 12 }, "end": { - "line": 2624, + "line": 2625, "column": 34 } }, "object": { "type": "Identifier", - "start": 97836, - "end": 97839, + "start": 97872, + "end": 97875, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 12 }, "end": { - "line": 2624, + "line": 2625, "column": 15 }, "identifierName": "cfg" @@ -80344,15 +80460,15 @@ }, "property": { "type": "Identifier", - "start": 97840, - "end": 97858, + "start": 97876, + "end": 97894, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 16 }, "end": { - "line": 2624, + "line": 2625, "column": 34 }, "identifierName": "occlusionTextureId" @@ -80364,15 +80480,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 97863, - "end": 97872, + "start": 97899, + "end": 97908, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 39 }, "end": { - "line": 2624, + "line": 2625, "column": 48 }, "identifierName": "undefined" @@ -80383,43 +80499,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 97876, - "end": 97907, + "start": 97912, + "end": 97943, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 52 }, "end": { - "line": 2624, + "line": 2625, "column": 83 } }, "left": { "type": "MemberExpression", - "start": 97876, - "end": 97898, + "start": 97912, + "end": 97934, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 52 }, "end": { - "line": 2624, + "line": 2625, "column": 74 } }, "object": { "type": "Identifier", - "start": 97876, - "end": 97879, + "start": 97912, + "end": 97915, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 52 }, "end": { - "line": 2624, + "line": 2625, "column": 55 }, "identifierName": "cfg" @@ -80428,15 +80544,15 @@ }, "property": { "type": "Identifier", - "start": 97880, - "end": 97898, + "start": 97916, + "end": 97934, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 56 }, "end": { - "line": 2624, + "line": 2625, "column": 74 }, "identifierName": "occlusionTextureId" @@ -80448,15 +80564,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 97903, - "end": 97907, + "start": 97939, + "end": 97943, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 79 }, "end": { - "line": 2624, + "line": 2625, "column": 83 } } @@ -80465,59 +80581,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 97909, - "end": 98216, + "start": 97945, + "end": 98252, "loc": { "start": { - "line": 2624, + "line": 2625, "column": 85 }, "end": { - "line": 2630, + "line": 2631, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 97923, - "end": 97981, + "start": 97959, + "end": 98017, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 12 }, "end": { - "line": 2625, + "line": 2626, "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 97923, - "end": 97980, + "start": 97959, + "end": 98016, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 12 }, "end": { - "line": 2625, + "line": 2626, "column": 69 } }, "operator": "=", "left": { "type": "Identifier", - "start": 97923, - "end": 97939, + "start": 97959, + "end": 97975, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 12 }, "end": { - "line": 2625, + "line": 2626, "column": 28 }, "identifierName": "occlusionTexture" @@ -80526,58 +80642,58 @@ }, "right": { "type": "MemberExpression", - "start": 97942, - "end": 97980, + "start": 97978, + "end": 98016, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 31 }, "end": { - "line": 2625, + "line": 2626, "column": 69 } }, "object": { "type": "MemberExpression", - "start": 97942, - "end": 97956, + "start": 97978, + "end": 97992, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 31 }, "end": { - "line": 2625, + "line": 2626, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 97942, - "end": 97946, + "start": 97978, + "end": 97982, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 31 }, "end": { - "line": 2625, + "line": 2626, "column": 35 } } }, "property": { "type": "Identifier", - "start": 97947, - "end": 97956, + "start": 97983, + "end": 97992, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 36 }, "end": { - "line": 2625, + "line": 2626, "column": 45 }, "identifierName": "_textures" @@ -80588,29 +80704,29 @@ }, "property": { "type": "MemberExpression", - "start": 97957, - "end": 97979, + "start": 97993, + "end": 98015, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 46 }, "end": { - "line": 2625, + "line": 2626, "column": 68 } }, "object": { "type": "Identifier", - "start": 97957, - "end": 97960, + "start": 97993, + "end": 97996, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 46 }, "end": { - "line": 2625, + "line": 2626, "column": 49 }, "identifierName": "cfg" @@ -80619,15 +80735,15 @@ }, "property": { "type": "Identifier", - "start": 97961, - "end": 97979, + "start": 97997, + "end": 98015, "loc": { "start": { - "line": 2625, + "line": 2626, "column": 50 }, "end": { - "line": 2625, + "line": 2626, "column": 68 }, "identifierName": "occlusionTextureId" @@ -80642,29 +80758,29 @@ }, { "type": "IfStatement", - "start": 97994, - "end": 98206, + "start": 98030, + "end": 98242, "loc": { "start": { - "line": 2626, + "line": 2627, "column": 12 }, "end": { - "line": 2629, + "line": 2630, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 97998, - "end": 98015, + "start": 98034, + "end": 98051, "loc": { "start": { - "line": 2626, + "line": 2627, "column": 16 }, "end": { - "line": 2626, + "line": 2627, "column": 33 } }, @@ -80672,15 +80788,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 97999, - "end": 98015, + "start": 98035, + "end": 98051, "loc": { "start": { - "line": 2626, + "line": 2627, "column": 17 }, "end": { - "line": 2626, + "line": 2627, "column": 33 }, "identifierName": "occlusionTexture" @@ -80693,87 +80809,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 98017, - "end": 98206, + "start": 98053, + "end": 98242, "loc": { "start": { - "line": 2626, + "line": 2627, "column": 35 }, "end": { - "line": 2629, + "line": 2630, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 98035, - "end": 98168, + "start": 98071, + "end": 98204, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 16 }, "end": { - "line": 2627, + "line": 2628, "column": 149 } }, "expression": { "type": "CallExpression", - "start": 98035, - "end": 98167, + "start": 98071, + "end": 98203, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 16 }, "end": { - "line": 2627, + "line": 2628, "column": 148 } }, "callee": { "type": "MemberExpression", - "start": 98035, - "end": 98045, + "start": 98071, + "end": 98081, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 16 }, "end": { - "line": 2627, + "line": 2628, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 98035, - "end": 98039, + "start": 98071, + "end": 98075, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 16 }, "end": { - "line": 2627, + "line": 2628, "column": 20 } } }, "property": { "type": "Identifier", - "start": 98040, - "end": 98045, + "start": 98076, + "end": 98081, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 21 }, "end": { - "line": 2627, + "line": 2628, "column": 26 }, "identifierName": "error" @@ -80785,44 +80901,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 98046, - "end": 98166, + "start": 98082, + "end": 98202, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 27 }, "end": { - "line": 2627, + "line": 2628, "column": 147 } }, "expressions": [ { "type": "MemberExpression", - "start": 98087, - "end": 98109, + "start": 98123, + "end": 98145, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 68 }, "end": { - "line": 2627, + "line": 2628, "column": 90 } }, "object": { "type": "Identifier", - "start": 98087, - "end": 98090, + "start": 98123, + "end": 98126, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 68 }, "end": { - "line": 2627, + "line": 2628, "column": 71 }, "identifierName": "cfg" @@ -80831,15 +80947,15 @@ }, "property": { "type": "Identifier", - "start": 98091, - "end": 98109, + "start": 98127, + "end": 98145, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 72 }, "end": { - "line": 2627, + "line": 2628, "column": 90 }, "identifierName": "occlusionTextureId" @@ -80852,15 +80968,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 98047, - "end": 98085, + "start": 98083, + "end": 98121, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 28 }, "end": { - "line": 2627, + "line": 2628, "column": 66 } }, @@ -80872,15 +80988,15 @@ }, { "type": "TemplateElement", - "start": 98110, - "end": 98165, + "start": 98146, + "end": 98201, "loc": { "start": { - "line": 2627, + "line": 2628, "column": 91 }, "end": { - "line": 2627, + "line": 2628, "column": 146 } }, @@ -80897,15 +81013,15 @@ }, { "type": "ReturnStatement", - "start": 98185, - "end": 98192, + "start": 98221, + "end": 98228, "loc": { "start": { - "line": 2628, + "line": 2629, "column": 16 }, "end": { - "line": 2628, + "line": 2629, "column": 23 } }, @@ -80921,59 +81037,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 98222, - "end": 98310, + "start": 98258, + "end": 98346, "loc": { "start": { - "line": 2630, + "line": 2631, "column": 15 }, "end": { - "line": 2632, + "line": 2633, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 98236, - "end": 98300, + "start": 98272, + "end": 98336, "loc": { "start": { - "line": 2631, + "line": 2632, "column": 12 }, "end": { - "line": 2631, + "line": 2632, "column": 76 } }, "expression": { "type": "AssignmentExpression", - "start": 98236, - "end": 98299, + "start": 98272, + "end": 98335, "loc": { "start": { - "line": 2631, + "line": 2632, "column": 12 }, "end": { - "line": 2631, + "line": 2632, "column": 75 } }, "operator": "=", "left": { "type": "Identifier", - "start": 98236, - "end": 98252, + "start": 98272, + "end": 98288, "loc": { "start": { - "line": 2631, + "line": 2632, "column": 12 }, "end": { - "line": 2631, + "line": 2632, "column": 28 }, "identifierName": "occlusionTexture" @@ -80982,58 +81098,58 @@ }, "right": { "type": "MemberExpression", - "start": 98255, - "end": 98299, + "start": 98291, + "end": 98335, "loc": { "start": { - "line": 2631, + "line": 2632, "column": 31 }, "end": { - "line": 2631, + "line": 2632, "column": 75 } }, "object": { "type": "MemberExpression", - "start": 98255, - "end": 98269, + "start": 98291, + "end": 98305, "loc": { "start": { - "line": 2631, + "line": 2632, "column": 31 }, "end": { - "line": 2631, + "line": 2632, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 98255, - "end": 98259, + "start": 98291, + "end": 98295, "loc": { "start": { - "line": 2631, + "line": 2632, "column": 31 }, "end": { - "line": 2631, + "line": 2632, "column": 35 } } }, "property": { "type": "Identifier", - "start": 98260, - "end": 98269, + "start": 98296, + "end": 98305, "loc": { "start": { - "line": 2631, + "line": 2632, "column": 36 }, "end": { - "line": 2631, + "line": 2632, "column": 45 }, "identifierName": "_textures" @@ -81044,15 +81160,15 @@ }, "property": { "type": "Identifier", - "start": 98270, - "end": 98298, + "start": 98306, + "end": 98334, "loc": { "start": { - "line": 2631, + "line": 2632, "column": 46 }, "end": { - "line": 2631, + "line": 2632, "column": 74 }, "identifierName": "DEFAULT_OCCLUSION_TEXTURE_ID" @@ -81069,44 +81185,44 @@ }, { "type": "VariableDeclaration", - "start": 98319, - "end": 98581, + "start": 98355, + "end": 98617, "loc": { "start": { - "line": 2633, + "line": 2634, "column": 8 }, "end": { - "line": 2641, + "line": 2642, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 98325, - "end": 98580, + "start": 98361, + "end": 98616, "loc": { "start": { - "line": 2633, + "line": 2634, "column": 14 }, "end": { - "line": 2641, + "line": 2642, "column": 10 } }, "id": { "type": "Identifier", - "start": 98325, - "end": 98335, + "start": 98361, + "end": 98371, "loc": { "start": { - "line": 2633, + "line": 2634, "column": 14 }, "end": { - "line": 2633, + "line": 2634, "column": 24 }, "identifierName": "textureSet" @@ -81115,29 +81231,29 @@ }, "init": { "type": "NewExpression", - "start": 98338, - "end": 98580, + "start": 98374, + "end": 98616, "loc": { "start": { - "line": 2633, + "line": 2634, "column": 27 }, "end": { - "line": 2641, + "line": 2642, "column": 10 } }, "callee": { "type": "Identifier", - "start": 98342, - "end": 98362, + "start": 98378, + "end": 98398, "loc": { "start": { - "line": 2633, + "line": 2634, "column": 31 }, "end": { - "line": 2633, + "line": 2634, "column": 51 }, "identifierName": "SceneModelTextureSet" @@ -81147,30 +81263,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 98363, - "end": 98579, + "start": 98399, + "end": 98615, "loc": { "start": { - "line": 2633, + "line": 2634, "column": 52 }, "end": { - "line": 2641, + "line": 2642, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 98377, - "end": 98393, + "start": 98413, + "end": 98429, "loc": { "start": { - "line": 2634, + "line": 2635, "column": 12 }, "end": { - "line": 2634, + "line": 2635, "column": 28 } }, @@ -81179,15 +81295,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 98377, - "end": 98379, + "start": 98413, + "end": 98415, "loc": { "start": { - "line": 2634, + "line": 2635, "column": 12 }, "end": { - "line": 2634, + "line": 2635, "column": 14 }, "identifierName": "id" @@ -81196,15 +81312,15 @@ }, "value": { "type": "Identifier", - "start": 98381, - "end": 98393, + "start": 98417, + "end": 98429, "loc": { "start": { - "line": 2634, + "line": 2635, "column": 16 }, "end": { - "line": 2634, + "line": 2635, "column": 28 }, "identifierName": "textureSetId" @@ -81214,15 +81330,15 @@ }, { "type": "ObjectProperty", - "start": 98407, - "end": 98418, + "start": 98443, + "end": 98454, "loc": { "start": { - "line": 2635, + "line": 2636, "column": 12 }, "end": { - "line": 2635, + "line": 2636, "column": 23 } }, @@ -81231,15 +81347,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 98407, - "end": 98412, + "start": 98443, + "end": 98448, "loc": { "start": { - "line": 2635, + "line": 2636, "column": 12 }, "end": { - "line": 2635, + "line": 2636, "column": 17 }, "identifierName": "model" @@ -81248,15 +81364,15 @@ }, "value": { "type": "ThisExpression", - "start": 98414, - "end": 98418, + "start": 98450, + "end": 98454, "loc": { "start": { - "line": 2635, + "line": 2636, "column": 19 }, "end": { - "line": 2635, + "line": 2636, "column": 23 } } @@ -81264,15 +81380,15 @@ }, { "type": "ObjectProperty", - "start": 98432, - "end": 98444, + "start": 98468, + "end": 98480, "loc": { "start": { - "line": 2636, + "line": 2637, "column": 12 }, "end": { - "line": 2636, + "line": 2637, "column": 24 } }, @@ -81281,15 +81397,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 98432, - "end": 98444, + "start": 98468, + "end": 98480, "loc": { "start": { - "line": 2636, + "line": 2637, "column": 12 }, "end": { - "line": 2636, + "line": 2637, "column": 24 }, "identifierName": "colorTexture" @@ -81298,15 +81414,15 @@ }, "value": { "type": "Identifier", - "start": 98432, - "end": 98444, + "start": 98468, + "end": 98480, "loc": { "start": { - "line": 2636, + "line": 2637, "column": 12 }, "end": { - "line": 2636, + "line": 2637, "column": 24 }, "identifierName": "colorTexture" @@ -81319,15 +81435,15 @@ }, { "type": "ObjectProperty", - "start": 98458, - "end": 98482, + "start": 98494, + "end": 98518, "loc": { "start": { - "line": 2637, + "line": 2638, "column": 12 }, "end": { - "line": 2637, + "line": 2638, "column": 36 } }, @@ -81336,15 +81452,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 98458, - "end": 98482, + "start": 98494, + "end": 98518, "loc": { "start": { - "line": 2637, + "line": 2638, "column": 12 }, "end": { - "line": 2637, + "line": 2638, "column": 36 }, "identifierName": "metallicRoughnessTexture" @@ -81353,15 +81469,15 @@ }, "value": { "type": "Identifier", - "start": 98458, - "end": 98482, + "start": 98494, + "end": 98518, "loc": { "start": { - "line": 2637, + "line": 2638, "column": 12 }, "end": { - "line": 2637, + "line": 2638, "column": 36 }, "identifierName": "metallicRoughnessTexture" @@ -81374,15 +81490,15 @@ }, { "type": "ObjectProperty", - "start": 98496, - "end": 98510, + "start": 98532, + "end": 98546, "loc": { "start": { - "line": 2638, + "line": 2639, "column": 12 }, "end": { - "line": 2638, + "line": 2639, "column": 26 } }, @@ -81391,15 +81507,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 98496, - "end": 98510, + "start": 98532, + "end": 98546, "loc": { "start": { - "line": 2638, + "line": 2639, "column": 12 }, "end": { - "line": 2638, + "line": 2639, "column": 26 }, "identifierName": "normalsTexture" @@ -81408,15 +81524,15 @@ }, "value": { "type": "Identifier", - "start": 98496, - "end": 98510, + "start": 98532, + "end": 98546, "loc": { "start": { - "line": 2638, + "line": 2639, "column": 12 }, "end": { - "line": 2638, + "line": 2639, "column": 26 }, "identifierName": "normalsTexture" @@ -81429,15 +81545,15 @@ }, { "type": "ObjectProperty", - "start": 98524, - "end": 98539, + "start": 98560, + "end": 98575, "loc": { "start": { - "line": 2639, + "line": 2640, "column": 12 }, "end": { - "line": 2639, + "line": 2640, "column": 27 } }, @@ -81446,15 +81562,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 98524, - "end": 98539, + "start": 98560, + "end": 98575, "loc": { "start": { - "line": 2639, + "line": 2640, "column": 12 }, "end": { - "line": 2639, + "line": 2640, "column": 27 }, "identifierName": "emissiveTexture" @@ -81463,15 +81579,15 @@ }, "value": { "type": "Identifier", - "start": 98524, - "end": 98539, + "start": 98560, + "end": 98575, "loc": { "start": { - "line": 2639, + "line": 2640, "column": 12 }, "end": { - "line": 2639, + "line": 2640, "column": 27 }, "identifierName": "emissiveTexture" @@ -81484,15 +81600,15 @@ }, { "type": "ObjectProperty", - "start": 98553, - "end": 98569, + "start": 98589, + "end": 98605, "loc": { "start": { - "line": 2640, + "line": 2641, "column": 12 }, "end": { - "line": 2640, + "line": 2641, "column": 28 } }, @@ -81501,15 +81617,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 98553, - "end": 98569, + "start": 98589, + "end": 98605, "loc": { "start": { - "line": 2640, + "line": 2641, "column": 12 }, "end": { - "line": 2640, + "line": 2641, "column": 28 }, "identifierName": "occlusionTexture" @@ -81518,15 +81634,15 @@ }, "value": { "type": "Identifier", - "start": 98553, - "end": 98569, + "start": 98589, + "end": 98605, "loc": { "start": { - "line": 2640, + "line": 2641, "column": 12 }, "end": { - "line": 2640, + "line": 2641, "column": 28 }, "identifierName": "occlusionTexture" @@ -81547,87 +81663,87 @@ }, { "type": "ExpressionStatement", - "start": 98590, - "end": 98635, + "start": 98626, + "end": 98671, "loc": { "start": { - "line": 2642, + "line": 2643, "column": 8 }, "end": { - "line": 2642, + "line": 2643, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 98590, - "end": 98634, + "start": 98626, + "end": 98670, "loc": { "start": { - "line": 2642, + "line": 2643, "column": 8 }, "end": { - "line": 2642, + "line": 2643, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 98590, - "end": 98621, + "start": 98626, + "end": 98657, "loc": { "start": { - "line": 2642, + "line": 2643, "column": 8 }, "end": { - "line": 2642, + "line": 2643, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 98590, - "end": 98607, + "start": 98626, + "end": 98643, "loc": { "start": { - "line": 2642, + "line": 2643, "column": 8 }, "end": { - "line": 2642, + "line": 2643, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 98590, - "end": 98594, + "start": 98626, + "end": 98630, "loc": { "start": { - "line": 2642, + "line": 2643, "column": 8 }, "end": { - "line": 2642, + "line": 2643, "column": 12 } } }, "property": { "type": "Identifier", - "start": 98595, - "end": 98607, + "start": 98631, + "end": 98643, "loc": { "start": { - "line": 2642, + "line": 2643, "column": 13 }, "end": { - "line": 2642, + "line": 2643, "column": 25 }, "identifierName": "_textureSets" @@ -81638,15 +81754,15 @@ }, "property": { "type": "Identifier", - "start": 98608, - "end": 98620, + "start": 98644, + "end": 98656, "loc": { "start": { - "line": 2642, + "line": 2643, "column": 26 }, "end": { - "line": 2642, + "line": 2643, "column": 38 }, "identifierName": "textureSetId" @@ -81657,15 +81773,15 @@ }, "right": { "type": "Identifier", - "start": 98624, - "end": 98634, + "start": 98660, + "end": 98670, "loc": { "start": { - "line": 2642, + "line": 2643, "column": 42 }, "end": { - "line": 2642, + "line": 2643, "column": 52 }, "identifierName": "textureSet" @@ -81676,29 +81792,29 @@ }, { "type": "ReturnStatement", - "start": 98644, - "end": 98662, + "start": 98680, + "end": 98698, "loc": { "start": { - "line": 2643, + "line": 2644, "column": 8 }, "end": { - "line": 2643, + "line": 2644, "column": 26 } }, "argument": { "type": "Identifier", - "start": 98651, - "end": 98661, + "start": 98687, + "end": 98697, "loc": { "start": { - "line": 2643, + "line": 2644, "column": 15 }, "end": { - "line": 2643, + "line": 2644, "column": 25 }, "identifierName": "textureSet" @@ -81714,15 +81830,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a texture set within this SceneModel.\n *\n * * Stores the new {@link SceneModelTextureSet} in {@link SceneModel#textureSets}.\n *\n * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set\n * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set.\n *\n * The textures can work as a texture atlas, where each mesh can have geometry UVs that index\n * a different part of the textures. This allows us to minimize the number of textures in our models, which\n * means faster rendering.\n *\n * @param {*} cfg Texture set properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}.\n * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*.\n * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*.\n * @param {*} [cfg.emissiveTextureId] ID of *RGBA* emissive map texture, with emissive color in *RGB*.\n * @param {*} [cfg.occlusionTextureId] ID of *RGBA* occlusion map texture, with occlusion factor in *R*.\n * @returns {SceneModelTransform} The new texture set.\n ", - "start": 93881, - "end": 95327, + "start": 93917, + "end": 95363, "loc": { "start": { - "line": 2552, + "line": 2553, "column": 4 }, "end": { - "line": 2572, + "line": 2573, "column": 7 } } @@ -81732,15 +81848,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a new {@link SceneModelTransform} within this SceneModel.\n *\n * * Stores the new {@link SceneModelTransform} in {@link SceneModel#transforms}.\n * * Can be connected into hierarchies\n * * Each {@link SceneModelTransform} can be used by unlimited {@link SceneModelMesh}es\n *\n * @param {*} cfg Transform creation parameters.\n * @param {String} cfg.id Mandatory ID for the new transform. Must not clash with any existing components within the {@link Scene}.\n * @param {String} [cfg.parentTransformId] ID of a parent transform, previously created with {@link SceneModel#createTextureSet}.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the transform.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the transform as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters.\n * @returns {SceneModelTransform} The new transform.\n ", - "start": 98674, - "end": 99876, + "start": 98710, + "end": 99912, "loc": { "start": { - "line": 2646, + "line": 2647, "column": 4 }, "end": { - "line": 2661, + "line": 2662, "column": 7 } } @@ -81749,15 +81865,15 @@ }, { "type": "ClassMethod", - "start": 99881, - "end": 100980, + "start": 99917, + "end": 101016, "loc": { "start": { - "line": 2662, + "line": 2663, "column": 4 }, "end": { - "line": 2691, + "line": 2692, "column": 5 } }, @@ -81765,15 +81881,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 99881, - "end": 99896, + "start": 99917, + "end": 99932, "loc": { "start": { - "line": 2662, + "line": 2663, "column": 4 }, "end": { - "line": 2662, + "line": 2663, "column": 19 }, "identifierName": "createTransform" @@ -81789,15 +81905,15 @@ "params": [ { "type": "Identifier", - "start": 99897, - "end": 99900, + "start": 99933, + "end": 99936, "loc": { "start": { - "line": 2662, + "line": 2663, "column": 20 }, "end": { - "line": 2662, + "line": 2663, "column": 23 }, "identifierName": "cfg" @@ -81807,86 +81923,86 @@ ], "body": { "type": "BlockStatement", - "start": 99902, - "end": 100980, + "start": 99938, + "end": 101016, "loc": { "start": { - "line": 2662, + "line": 2663, "column": 25 }, "end": { - "line": 2691, + "line": 2692, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 99912, - "end": 100081, + "start": 99948, + "end": 100117, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 8 }, "end": { - "line": 2666, + "line": 2667, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 99916, - "end": 99955, + "start": 99952, + "end": 99991, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 12 }, "end": { - "line": 2663, + "line": 2664, "column": 51 } }, "left": { "type": "BinaryExpression", - "start": 99916, - "end": 99936, + "start": 99952, + "end": 99972, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 12 }, "end": { - "line": 2663, + "line": 2664, "column": 32 } }, "left": { "type": "MemberExpression", - "start": 99916, - "end": 99922, + "start": 99952, + "end": 99958, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 12 }, "end": { - "line": 2663, + "line": 2664, "column": 18 } }, "object": { "type": "Identifier", - "start": 99916, - "end": 99919, + "start": 99952, + "end": 99955, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 12 }, "end": { - "line": 2663, + "line": 2664, "column": 15 }, "identifierName": "cfg" @@ -81895,15 +82011,15 @@ }, "property": { "type": "Identifier", - "start": 99920, - "end": 99922, + "start": 99956, + "end": 99958, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 16 }, "end": { - "line": 2663, + "line": 2664, "column": 18 }, "identifierName": "id" @@ -81915,15 +82031,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 99927, - "end": 99936, + "start": 99963, + "end": 99972, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 23 }, "end": { - "line": 2663, + "line": 2664, "column": 32 }, "identifierName": "undefined" @@ -81934,43 +82050,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 99940, - "end": 99955, + "start": 99976, + "end": 99991, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 36 }, "end": { - "line": 2663, + "line": 2664, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 99940, - "end": 99946, + "start": 99976, + "end": 99982, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 36 }, "end": { - "line": 2663, + "line": 2664, "column": 42 } }, "object": { "type": "Identifier", - "start": 99940, - "end": 99943, + "start": 99976, + "end": 99979, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 36 }, "end": { - "line": 2663, + "line": 2664, "column": 39 }, "identifierName": "cfg" @@ -81979,15 +82095,15 @@ }, "property": { "type": "Identifier", - "start": 99944, - "end": 99946, + "start": 99980, + "end": 99982, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 40 }, "end": { - "line": 2663, + "line": 2664, "column": 42 }, "identifierName": "id" @@ -81999,15 +82115,15 @@ "operator": "===", "right": { "type": "NullLiteral", - "start": 99951, - "end": 99955, + "start": 99987, + "end": 99991, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 47 }, "end": { - "line": 2663, + "line": 2664, "column": 51 } } @@ -82016,87 +82132,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 99957, - "end": 100081, + "start": 99993, + "end": 100117, "loc": { "start": { - "line": 2663, + "line": 2664, "column": 53 }, "end": { - "line": 2666, + "line": 2667, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 99971, - "end": 100051, + "start": 100007, + "end": 100087, "loc": { "start": { - "line": 2664, + "line": 2665, "column": 12 }, "end": { - "line": 2664, + "line": 2665, "column": 92 } }, "expression": { "type": "CallExpression", - "start": 99971, - "end": 100050, + "start": 100007, + "end": 100086, "loc": { "start": { - "line": 2664, + "line": 2665, "column": 12 }, "end": { - "line": 2664, + "line": 2665, "column": 91 } }, "callee": { "type": "MemberExpression", - "start": 99971, - "end": 99981, + "start": 100007, + "end": 100017, "loc": { "start": { - "line": 2664, + "line": 2665, "column": 12 }, "end": { - "line": 2664, + "line": 2665, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 99971, - "end": 99975, + "start": 100007, + "end": 100011, "loc": { "start": { - "line": 2664, + "line": 2665, "column": 12 }, "end": { - "line": 2664, + "line": 2665, "column": 16 } } }, "property": { "type": "Identifier", - "start": 99976, - "end": 99981, + "start": 100012, + "end": 100017, "loc": { "start": { - "line": 2664, + "line": 2665, "column": 17 }, "end": { - "line": 2664, + "line": 2665, "column": 22 }, "identifierName": "error" @@ -82108,15 +82224,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 99982, - "end": 100049, + "start": 100018, + "end": 100085, "loc": { "start": { - "line": 2664, + "line": 2665, "column": 23 }, "end": { - "line": 2664, + "line": 2665, "column": 90 } }, @@ -82131,15 +82247,15 @@ }, { "type": "ReturnStatement", - "start": 100064, - "end": 100071, + "start": 100100, + "end": 100107, "loc": { "start": { - "line": 2665, + "line": 2666, "column": 12 }, "end": { - "line": 2665, + "line": 2666, "column": 19 } }, @@ -82152,72 +82268,72 @@ }, { "type": "IfStatement", - "start": 100090, - "end": 100255, + "start": 100126, + "end": 100291, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 8 }, "end": { - "line": 2670, + "line": 2671, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 100094, - "end": 100118, + "start": 100130, + "end": 100154, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 12 }, "end": { - "line": 2667, + "line": 2668, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 100094, - "end": 100110, + "start": 100130, + "end": 100146, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 12 }, "end": { - "line": 2667, + "line": 2668, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 100094, - "end": 100098, + "start": 100130, + "end": 100134, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 12 }, "end": { - "line": 2667, + "line": 2668, "column": 16 } } }, "property": { "type": "Identifier", - "start": 100099, - "end": 100110, + "start": 100135, + "end": 100146, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 17 }, "end": { - "line": 2667, + "line": 2668, "column": 28 }, "identifierName": "_transforms" @@ -82228,29 +82344,29 @@ }, "property": { "type": "MemberExpression", - "start": 100111, - "end": 100117, + "start": 100147, + "end": 100153, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 29 }, "end": { - "line": 2667, + "line": 2668, "column": 35 } }, "object": { "type": "Identifier", - "start": 100111, - "end": 100114, + "start": 100147, + "end": 100150, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 29 }, "end": { - "line": 2667, + "line": 2668, "column": 32 }, "identifierName": "cfg" @@ -82259,15 +82375,15 @@ }, "property": { "type": "Identifier", - "start": 100115, - "end": 100117, + "start": 100151, + "end": 100153, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 33 }, "end": { - "line": 2667, + "line": 2668, "column": 35 }, "identifierName": "id" @@ -82280,87 +82396,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 100120, - "end": 100255, + "start": 100156, + "end": 100291, "loc": { "start": { - "line": 2667, + "line": 2668, "column": 38 }, "end": { - "line": 2670, + "line": 2671, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 100134, - "end": 100225, + "start": 100170, + "end": 100261, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 12 }, "end": { - "line": 2668, + "line": 2669, "column": 103 } }, "expression": { "type": "CallExpression", - "start": 100134, - "end": 100224, + "start": 100170, + "end": 100260, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 12 }, "end": { - "line": 2668, + "line": 2669, "column": 102 } }, "callee": { "type": "MemberExpression", - "start": 100134, - "end": 100144, + "start": 100170, + "end": 100180, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 12 }, "end": { - "line": 2668, + "line": 2669, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 100134, - "end": 100138, + "start": 100170, + "end": 100174, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 12 }, "end": { - "line": 2668, + "line": 2669, "column": 16 } } }, "property": { "type": "Identifier", - "start": 100139, - "end": 100144, + "start": 100175, + "end": 100180, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 17 }, "end": { - "line": 2668, + "line": 2669, "column": 22 }, "identifierName": "error" @@ -82372,44 +82488,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 100145, - "end": 100223, + "start": 100181, + "end": 100259, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 23 }, "end": { - "line": 2668, + "line": 2669, "column": 101 } }, "expressions": [ { "type": "MemberExpression", - "start": 100215, - "end": 100221, + "start": 100251, + "end": 100257, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 93 }, "end": { - "line": 2668, + "line": 2669, "column": 99 } }, "object": { "type": "Identifier", - "start": 100215, - "end": 100218, + "start": 100251, + "end": 100254, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 93 }, "end": { - "line": 2668, + "line": 2669, "column": 96 }, "identifierName": "cfg" @@ -82418,15 +82534,15 @@ }, "property": { "type": "Identifier", - "start": 100219, - "end": 100221, + "start": 100255, + "end": 100257, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 97 }, "end": { - "line": 2668, + "line": 2669, "column": 99 }, "identifierName": "id" @@ -82439,15 +82555,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 100146, - "end": 100213, + "start": 100182, + "end": 100249, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 24 }, "end": { - "line": 2668, + "line": 2669, "column": 91 } }, @@ -82459,15 +82575,15 @@ }, { "type": "TemplateElement", - "start": 100222, - "end": 100222, + "start": 100258, + "end": 100258, "loc": { "start": { - "line": 2668, + "line": 2669, "column": 100 }, "end": { - "line": 2668, + "line": 2669, "column": 100 } }, @@ -82484,15 +82600,15 @@ }, { "type": "ReturnStatement", - "start": 100238, - "end": 100245, + "start": 100274, + "end": 100281, "loc": { "start": { - "line": 2669, + "line": 2670, "column": 12 }, "end": { - "line": 2669, + "line": 2670, "column": 19 } }, @@ -82505,44 +82621,44 @@ }, { "type": "VariableDeclaration", - "start": 100264, - "end": 100284, + "start": 100300, + "end": 100320, "loc": { "start": { - "line": 2671, + "line": 2672, "column": 8 }, "end": { - "line": 2671, + "line": 2672, "column": 28 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 100268, - "end": 100283, + "start": 100304, + "end": 100319, "loc": { "start": { - "line": 2671, + "line": 2672, "column": 12 }, "end": { - "line": 2671, + "line": 2672, "column": 27 } }, "id": { "type": "Identifier", - "start": 100268, - "end": 100283, + "start": 100304, + "end": 100319, "loc": { "start": { - "line": 2671, + "line": 2672, "column": 12 }, "end": { - "line": 2671, + "line": 2672, "column": 27 }, "identifierName": "parentTransform" @@ -82556,43 +82672,43 @@ }, { "type": "IfStatement", - "start": 100293, - "end": 100573, + "start": 100329, + "end": 100609, "loc": { "start": { - "line": 2672, + "line": 2673, "column": 8 }, "end": { - "line": 2678, + "line": 2679, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 100297, - "end": 100318, + "start": 100333, + "end": 100354, "loc": { "start": { - "line": 2672, + "line": 2673, "column": 12 }, "end": { - "line": 2672, + "line": 2673, "column": 33 } }, "object": { "type": "Identifier", - "start": 100297, - "end": 100300, + "start": 100333, + "end": 100336, "loc": { "start": { - "line": 2672, + "line": 2673, "column": 12 }, "end": { - "line": 2672, + "line": 2673, "column": 15 }, "identifierName": "cfg" @@ -82601,15 +82717,15 @@ }, "property": { "type": "Identifier", - "start": 100301, - "end": 100318, + "start": 100337, + "end": 100354, "loc": { "start": { - "line": 2672, + "line": 2673, "column": 16 }, "end": { - "line": 2672, + "line": 2673, "column": 33 }, "identifierName": "parentTransformId" @@ -82620,59 +82736,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 100320, - "end": 100573, + "start": 100356, + "end": 100609, "loc": { "start": { - "line": 2672, + "line": 2673, "column": 35 }, "end": { - "line": 2678, + "line": 2679, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 100334, - "end": 100392, + "start": 100370, + "end": 100428, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 12 }, "end": { - "line": 2673, + "line": 2674, "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 100334, - "end": 100391, + "start": 100370, + "end": 100427, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 12 }, "end": { - "line": 2673, + "line": 2674, "column": 69 } }, "operator": "=", "left": { "type": "Identifier", - "start": 100334, - "end": 100349, + "start": 100370, + "end": 100385, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 12 }, "end": { - "line": 2673, + "line": 2674, "column": 27 }, "identifierName": "parentTransform" @@ -82681,58 +82797,58 @@ }, "right": { "type": "MemberExpression", - "start": 100352, - "end": 100391, + "start": 100388, + "end": 100427, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 30 }, "end": { - "line": 2673, + "line": 2674, "column": 69 } }, "object": { "type": "MemberExpression", - "start": 100352, - "end": 100368, + "start": 100388, + "end": 100404, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 30 }, "end": { - "line": 2673, + "line": 2674, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 100352, - "end": 100356, + "start": 100388, + "end": 100392, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 30 }, "end": { - "line": 2673, + "line": 2674, "column": 34 } } }, "property": { "type": "Identifier", - "start": 100357, - "end": 100368, + "start": 100393, + "end": 100404, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 35 }, "end": { - "line": 2673, + "line": 2674, "column": 46 }, "identifierName": "_transforms" @@ -82743,29 +82859,29 @@ }, "property": { "type": "MemberExpression", - "start": 100369, - "end": 100390, + "start": 100405, + "end": 100426, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 47 }, "end": { - "line": 2673, + "line": 2674, "column": 68 } }, "object": { "type": "Identifier", - "start": 100369, - "end": 100372, + "start": 100405, + "end": 100408, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 47 }, "end": { - "line": 2673, + "line": 2674, "column": 50 }, "identifierName": "cfg" @@ -82774,15 +82890,15 @@ }, "property": { "type": "Identifier", - "start": 100373, - "end": 100390, + "start": 100409, + "end": 100426, "loc": { "start": { - "line": 2673, + "line": 2674, "column": 51 }, "end": { - "line": 2673, + "line": 2674, "column": 68 }, "identifierName": "parentTransformId" @@ -82797,29 +82913,29 @@ }, { "type": "IfStatement", - "start": 100405, - "end": 100563, + "start": 100441, + "end": 100599, "loc": { "start": { - "line": 2674, + "line": 2675, "column": 12 }, "end": { - "line": 2677, + "line": 2678, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 100409, - "end": 100425, + "start": 100445, + "end": 100461, "loc": { "start": { - "line": 2674, + "line": 2675, "column": 16 }, "end": { - "line": 2674, + "line": 2675, "column": 32 } }, @@ -82827,15 +82943,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 100410, - "end": 100425, + "start": 100446, + "end": 100461, "loc": { "start": { - "line": 2674, + "line": 2675, "column": 17 }, "end": { - "line": 2674, + "line": 2675, "column": 32 }, "identifierName": "parentTransform" @@ -82848,87 +82964,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 100427, - "end": 100563, + "start": 100463, + "end": 100599, "loc": { "start": { - "line": 2674, + "line": 2675, "column": 34 }, "end": { - "line": 2677, + "line": 2678, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 100445, - "end": 100525, + "start": 100481, + "end": 100561, "loc": { "start": { - "line": 2675, + "line": 2676, "column": 16 }, "end": { - "line": 2675, + "line": 2676, "column": 96 } }, "expression": { "type": "CallExpression", - "start": 100445, - "end": 100524, + "start": 100481, + "end": 100560, "loc": { "start": { - "line": 2675, + "line": 2676, "column": 16 }, "end": { - "line": 2675, + "line": 2676, "column": 95 } }, "callee": { "type": "MemberExpression", - "start": 100445, - "end": 100455, + "start": 100481, + "end": 100491, "loc": { "start": { - "line": 2675, + "line": 2676, "column": 16 }, "end": { - "line": 2675, + "line": 2676, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 100445, - "end": 100449, + "start": 100481, + "end": 100485, "loc": { "start": { - "line": 2675, + "line": 2676, "column": 16 }, "end": { - "line": 2675, + "line": 2676, "column": 20 } } }, "property": { "type": "Identifier", - "start": 100450, - "end": 100455, + "start": 100486, + "end": 100491, "loc": { "start": { - "line": 2675, + "line": 2676, "column": 21 }, "end": { - "line": 2675, + "line": 2676, "column": 26 }, "identifierName": "error" @@ -82940,15 +83056,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 100456, - "end": 100523, + "start": 100492, + "end": 100559, "loc": { "start": { - "line": 2675, + "line": 2676, "column": 27 }, "end": { - "line": 2675, + "line": 2676, "column": 94 } }, @@ -82963,15 +83079,15 @@ }, { "type": "ReturnStatement", - "start": 100542, - "end": 100549, + "start": 100578, + "end": 100585, "loc": { "start": { - "line": 2676, + "line": 2677, "column": 16 }, "end": { - "line": 2676, + "line": 2677, "column": 23 } }, @@ -82989,44 +83105,44 @@ }, { "type": "VariableDeclaration", - "start": 100582, - "end": 100896, + "start": 100618, + "end": 100932, "loc": { "start": { - "line": 2679, + "line": 2680, "column": 8 }, "end": { - "line": 2688, + "line": 2689, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 100588, - "end": 100895, + "start": 100624, + "end": 100931, "loc": { "start": { - "line": 2679, + "line": 2680, "column": 14 }, "end": { - "line": 2688, + "line": 2689, "column": 10 } }, "id": { "type": "Identifier", - "start": 100588, - "end": 100597, + "start": 100624, + "end": 100633, "loc": { "start": { - "line": 2679, + "line": 2680, "column": 14 }, "end": { - "line": 2679, + "line": 2680, "column": 23 }, "identifierName": "transform" @@ -83035,29 +83151,29 @@ }, "init": { "type": "NewExpression", - "start": 100600, - "end": 100895, + "start": 100636, + "end": 100931, "loc": { "start": { - "line": 2679, + "line": 2680, "column": 26 }, "end": { - "line": 2688, + "line": 2689, "column": 10 } }, "callee": { "type": "Identifier", - "start": 100604, - "end": 100623, + "start": 100640, + "end": 100659, "loc": { "start": { - "line": 2679, + "line": 2680, "column": 30 }, "end": { - "line": 2679, + "line": 2680, "column": 49 }, "identifierName": "SceneModelTransform" @@ -83067,30 +83183,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 100624, - "end": 100894, + "start": 100660, + "end": 100930, "loc": { "start": { - "line": 2679, + "line": 2680, "column": 50 }, "end": { - "line": 2688, + "line": 2689, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 100638, - "end": 100648, + "start": 100674, + "end": 100684, "loc": { "start": { - "line": 2680, + "line": 2681, "column": 12 }, "end": { - "line": 2680, + "line": 2681, "column": 22 } }, @@ -83099,15 +83215,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 100638, - "end": 100640, + "start": 100674, + "end": 100676, "loc": { "start": { - "line": 2680, + "line": 2681, "column": 12 }, "end": { - "line": 2680, + "line": 2681, "column": 14 }, "identifierName": "id" @@ -83116,29 +83232,29 @@ }, "value": { "type": "MemberExpression", - "start": 100642, - "end": 100648, + "start": 100678, + "end": 100684, "loc": { "start": { - "line": 2680, + "line": 2681, "column": 16 }, "end": { - "line": 2680, + "line": 2681, "column": 22 } }, "object": { "type": "Identifier", - "start": 100642, - "end": 100645, + "start": 100678, + "end": 100681, "loc": { "start": { - "line": 2680, + "line": 2681, "column": 16 }, "end": { - "line": 2680, + "line": 2681, "column": 19 }, "identifierName": "cfg" @@ -83147,15 +83263,15 @@ }, "property": { "type": "Identifier", - "start": 100646, - "end": 100648, + "start": 100682, + "end": 100684, "loc": { "start": { - "line": 2680, + "line": 2681, "column": 20 }, "end": { - "line": 2680, + "line": 2681, "column": 22 }, "identifierName": "id" @@ -83167,15 +83283,15 @@ }, { "type": "ObjectProperty", - "start": 100662, - "end": 100673, + "start": 100698, + "end": 100709, "loc": { "start": { - "line": 2681, + "line": 2682, "column": 12 }, "end": { - "line": 2681, + "line": 2682, "column": 23 } }, @@ -83184,15 +83300,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 100662, - "end": 100667, + "start": 100698, + "end": 100703, "loc": { "start": { - "line": 2681, + "line": 2682, "column": 12 }, "end": { - "line": 2681, + "line": 2682, "column": 17 }, "identifierName": "model" @@ -83201,15 +83317,15 @@ }, "value": { "type": "ThisExpression", - "start": 100669, - "end": 100673, + "start": 100705, + "end": 100709, "loc": { "start": { - "line": 2681, + "line": 2682, "column": 19 }, "end": { - "line": 2681, + "line": 2682, "column": 23 } } @@ -83217,15 +83333,15 @@ }, { "type": "ObjectProperty", - "start": 100687, - "end": 100710, + "start": 100723, + "end": 100746, "loc": { "start": { - "line": 2682, + "line": 2683, "column": 12 }, "end": { - "line": 2682, + "line": 2683, "column": 35 } }, @@ -83234,15 +83350,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 100687, - "end": 100693, + "start": 100723, + "end": 100729, "loc": { "start": { - "line": 2682, + "line": 2683, "column": 12 }, "end": { - "line": 2682, + "line": 2683, "column": 18 }, "identifierName": "parent" @@ -83251,15 +83367,15 @@ }, "value": { "type": "Identifier", - "start": 100695, - "end": 100710, + "start": 100731, + "end": 100746, "loc": { "start": { - "line": 2682, + "line": 2683, "column": 20 }, "end": { - "line": 2682, + "line": 2683, "column": 35 }, "identifierName": "parentTransform" @@ -83269,15 +83385,15 @@ }, { "type": "ObjectProperty", - "start": 100724, - "end": 100742, + "start": 100760, + "end": 100778, "loc": { "start": { - "line": 2683, + "line": 2684, "column": 12 }, "end": { - "line": 2683, + "line": 2684, "column": 30 } }, @@ -83286,15 +83402,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 100724, - "end": 100730, + "start": 100760, + "end": 100766, "loc": { "start": { - "line": 2683, + "line": 2684, "column": 12 }, "end": { - "line": 2683, + "line": 2684, "column": 18 }, "identifierName": "matrix" @@ -83303,29 +83419,29 @@ }, "value": { "type": "MemberExpression", - "start": 100732, - "end": 100742, + "start": 100768, + "end": 100778, "loc": { "start": { - "line": 2683, + "line": 2684, "column": 20 }, "end": { - "line": 2683, + "line": 2684, "column": 30 } }, "object": { "type": "Identifier", - "start": 100732, - "end": 100735, + "start": 100768, + "end": 100771, "loc": { "start": { - "line": 2683, + "line": 2684, "column": 20 }, "end": { - "line": 2683, + "line": 2684, "column": 23 }, "identifierName": "cfg" @@ -83334,15 +83450,15 @@ }, "property": { "type": "Identifier", - "start": 100736, - "end": 100742, + "start": 100772, + "end": 100778, "loc": { "start": { - "line": 2683, + "line": 2684, "column": 24 }, "end": { - "line": 2683, + "line": 2684, "column": 30 }, "identifierName": "matrix" @@ -83354,15 +83470,15 @@ }, { "type": "ObjectProperty", - "start": 100756, - "end": 100778, + "start": 100792, + "end": 100814, "loc": { "start": { - "line": 2684, + "line": 2685, "column": 12 }, "end": { - "line": 2684, + "line": 2685, "column": 34 } }, @@ -83371,15 +83487,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 100756, - "end": 100764, + "start": 100792, + "end": 100800, "loc": { "start": { - "line": 2684, + "line": 2685, "column": 12 }, "end": { - "line": 2684, + "line": 2685, "column": 20 }, "identifierName": "position" @@ -83388,29 +83504,29 @@ }, "value": { "type": "MemberExpression", - "start": 100766, - "end": 100778, + "start": 100802, + "end": 100814, "loc": { "start": { - "line": 2684, + "line": 2685, "column": 22 }, "end": { - "line": 2684, + "line": 2685, "column": 34 } }, "object": { "type": "Identifier", - "start": 100766, - "end": 100769, + "start": 100802, + "end": 100805, "loc": { "start": { - "line": 2684, + "line": 2685, "column": 22 }, "end": { - "line": 2684, + "line": 2685, "column": 25 }, "identifierName": "cfg" @@ -83419,15 +83535,15 @@ }, "property": { "type": "Identifier", - "start": 100770, - "end": 100778, + "start": 100806, + "end": 100814, "loc": { "start": { - "line": 2684, + "line": 2685, "column": 26 }, "end": { - "line": 2684, + "line": 2685, "column": 34 }, "identifierName": "position" @@ -83439,15 +83555,15 @@ }, { "type": "ObjectProperty", - "start": 100792, - "end": 100808, + "start": 100828, + "end": 100844, "loc": { "start": { - "line": 2685, + "line": 2686, "column": 12 }, "end": { - "line": 2685, + "line": 2686, "column": 28 } }, @@ -83456,15 +83572,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 100792, - "end": 100797, + "start": 100828, + "end": 100833, "loc": { "start": { - "line": 2685, + "line": 2686, "column": 12 }, "end": { - "line": 2685, + "line": 2686, "column": 17 }, "identifierName": "scale" @@ -83473,29 +83589,29 @@ }, "value": { "type": "MemberExpression", - "start": 100799, - "end": 100808, + "start": 100835, + "end": 100844, "loc": { "start": { - "line": 2685, + "line": 2686, "column": 19 }, "end": { - "line": 2685, + "line": 2686, "column": 28 } }, "object": { "type": "Identifier", - "start": 100799, - "end": 100802, + "start": 100835, + "end": 100838, "loc": { "start": { - "line": 2685, + "line": 2686, "column": 19 }, "end": { - "line": 2685, + "line": 2686, "column": 22 }, "identifierName": "cfg" @@ -83504,15 +83620,15 @@ }, "property": { "type": "Identifier", - "start": 100803, - "end": 100808, + "start": 100839, + "end": 100844, "loc": { "start": { - "line": 2685, + "line": 2686, "column": 23 }, "end": { - "line": 2685, + "line": 2686, "column": 28 }, "identifierName": "scale" @@ -83524,15 +83640,15 @@ }, { "type": "ObjectProperty", - "start": 100822, - "end": 100844, + "start": 100858, + "end": 100880, "loc": { "start": { - "line": 2686, + "line": 2687, "column": 12 }, "end": { - "line": 2686, + "line": 2687, "column": 34 } }, @@ -83541,15 +83657,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 100822, - "end": 100830, + "start": 100858, + "end": 100866, "loc": { "start": { - "line": 2686, + "line": 2687, "column": 12 }, "end": { - "line": 2686, + "line": 2687, "column": 20 }, "identifierName": "rotation" @@ -83558,29 +83674,29 @@ }, "value": { "type": "MemberExpression", - "start": 100832, - "end": 100844, + "start": 100868, + "end": 100880, "loc": { "start": { - "line": 2686, + "line": 2687, "column": 22 }, "end": { - "line": 2686, + "line": 2687, "column": 34 } }, "object": { "type": "Identifier", - "start": 100832, - "end": 100835, + "start": 100868, + "end": 100871, "loc": { "start": { - "line": 2686, + "line": 2687, "column": 22 }, "end": { - "line": 2686, + "line": 2687, "column": 25 }, "identifierName": "cfg" @@ -83589,15 +83705,15 @@ }, "property": { "type": "Identifier", - "start": 100836, - "end": 100844, + "start": 100872, + "end": 100880, "loc": { "start": { - "line": 2686, + "line": 2687, "column": 26 }, "end": { - "line": 2686, + "line": 2687, "column": 34 }, "identifierName": "rotation" @@ -83609,15 +83725,15 @@ }, { "type": "ObjectProperty", - "start": 100858, - "end": 100884, + "start": 100894, + "end": 100920, "loc": { "start": { - "line": 2687, + "line": 2688, "column": 12 }, "end": { - "line": 2687, + "line": 2688, "column": 38 } }, @@ -83626,15 +83742,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 100858, - "end": 100868, + "start": 100894, + "end": 100904, "loc": { "start": { - "line": 2687, + "line": 2688, "column": 12 }, "end": { - "line": 2687, + "line": 2688, "column": 22 }, "identifierName": "quaternion" @@ -83643,29 +83759,29 @@ }, "value": { "type": "MemberExpression", - "start": 100870, - "end": 100884, + "start": 100906, + "end": 100920, "loc": { "start": { - "line": 2687, + "line": 2688, "column": 24 }, "end": { - "line": 2687, + "line": 2688, "column": 38 } }, "object": { "type": "Identifier", - "start": 100870, - "end": 100873, + "start": 100906, + "end": 100909, "loc": { "start": { - "line": 2687, + "line": 2688, "column": 24 }, "end": { - "line": 2687, + "line": 2688, "column": 27 }, "identifierName": "cfg" @@ -83674,15 +83790,15 @@ }, "property": { "type": "Identifier", - "start": 100874, - "end": 100884, + "start": 100910, + "end": 100920, "loc": { "start": { - "line": 2687, + "line": 2688, "column": 28 }, "end": { - "line": 2687, + "line": 2688, "column": 38 }, "identifierName": "quaternion" @@ -83702,87 +83818,87 @@ }, { "type": "ExpressionStatement", - "start": 100905, - "end": 100948, + "start": 100941, + "end": 100984, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 8 }, "end": { - "line": 2689, + "line": 2690, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 100905, - "end": 100947, + "start": 100941, + "end": 100983, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 8 }, "end": { - "line": 2689, + "line": 2690, "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 100905, - "end": 100935, + "start": 100941, + "end": 100971, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 8 }, "end": { - "line": 2689, + "line": 2690, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 100905, - "end": 100921, + "start": 100941, + "end": 100957, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 8 }, "end": { - "line": 2689, + "line": 2690, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 100905, - "end": 100909, + "start": 100941, + "end": 100945, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 8 }, "end": { - "line": 2689, + "line": 2690, "column": 12 } } }, "property": { "type": "Identifier", - "start": 100910, - "end": 100921, + "start": 100946, + "end": 100957, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 13 }, "end": { - "line": 2689, + "line": 2690, "column": 24 }, "identifierName": "_transforms" @@ -83793,29 +83909,29 @@ }, "property": { "type": "MemberExpression", - "start": 100922, - "end": 100934, + "start": 100958, + "end": 100970, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 25 }, "end": { - "line": 2689, + "line": 2690, "column": 37 } }, "object": { "type": "Identifier", - "start": 100922, - "end": 100931, + "start": 100958, + "end": 100967, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 25 }, "end": { - "line": 2689, + "line": 2690, "column": 34 }, "identifierName": "transform" @@ -83824,15 +83940,15 @@ }, "property": { "type": "Identifier", - "start": 100932, - "end": 100934, + "start": 100968, + "end": 100970, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 35 }, "end": { - "line": 2689, + "line": 2690, "column": 37 }, "identifierName": "id" @@ -83845,15 +83961,15 @@ }, "right": { "type": "Identifier", - "start": 100938, - "end": 100947, + "start": 100974, + "end": 100983, "loc": { "start": { - "line": 2689, + "line": 2690, "column": 41 }, "end": { - "line": 2689, + "line": 2690, "column": 50 }, "identifierName": "transform" @@ -83864,29 +83980,29 @@ }, { "type": "ReturnStatement", - "start": 100957, - "end": 100974, + "start": 100993, + "end": 101010, "loc": { "start": { - "line": 2690, + "line": 2691, "column": 8 }, "end": { - "line": 2690, + "line": 2691, "column": 25 } }, "argument": { "type": "Identifier", - "start": 100964, - "end": 100973, + "start": 101000, + "end": 101009, "loc": { "start": { - "line": 2690, + "line": 2691, "column": 15 }, "end": { - "line": 2690, + "line": 2691, "column": 24 }, "identifierName": "transform" @@ -83902,15 +84018,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a new {@link SceneModelTransform} within this SceneModel.\n *\n * * Stores the new {@link SceneModelTransform} in {@link SceneModel#transforms}.\n * * Can be connected into hierarchies\n * * Each {@link SceneModelTransform} can be used by unlimited {@link SceneModelMesh}es\n *\n * @param {*} cfg Transform creation parameters.\n * @param {String} cfg.id Mandatory ID for the new transform. Must not clash with any existing components within the {@link Scene}.\n * @param {String} [cfg.parentTransformId] ID of a parent transform, previously created with {@link SceneModel#createTextureSet}.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the transform.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the transform as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters.\n * @returns {SceneModelTransform} The new transform.\n ", - "start": 98674, - "end": 99876, + "start": 98710, + "end": 99912, "loc": { "start": { - "line": 2646, + "line": 2647, "column": 4 }, "end": { - "line": 2661, + "line": 2662, "column": 7 } } @@ -83919,16 +84035,16 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n ", - "start": 100986, - "end": 106680, + "value": "*\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.quaternion] Rotation of the mesh as a quaternion. Overridden by ````rotation````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n ", + "start": 101022, + "end": 106829, "loc": { "start": { - "line": 2693, + "line": 2694, "column": 4 }, "end": { - "line": 2732, + "line": 2734, "column": 7 } } @@ -83937,15 +84053,15 @@ }, { "type": "ClassMethod", - "start": 106685, - "end": 121775, + "start": 106834, + "end": 122289, "loc": { "start": { - "line": 2733, + "line": 2735, "column": 4 }, "end": { - "line": 3061, + "line": 3069, "column": 5 } }, @@ -83953,15 +84069,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 106685, - "end": 106695, + "start": 106834, + "end": 106844, "loc": { "start": { - "line": 2733, + "line": 2735, "column": 4 }, "end": { - "line": 2733, + "line": 2735, "column": 14 }, "identifierName": "createMesh" @@ -83977,15 +84093,15 @@ "params": [ { "type": "Identifier", - "start": 106696, - "end": 106699, + "start": 106845, + "end": 106848, "loc": { "start": { - "line": 2733, + "line": 2735, "column": 15 }, "end": { - "line": 2733, + "line": 2735, "column": 18 }, "identifierName": "cfg" @@ -83995,86 +84111,86 @@ ], "body": { "type": "BlockStatement", - "start": 106701, - "end": 121775, + "start": 106850, + "end": 122289, "loc": { "start": { - "line": 2733, + "line": 2735, "column": 20 }, "end": { - "line": 3061, + "line": 3069, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 106712, - "end": 106877, + "start": 106861, + "end": 107026, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 8 }, "end": { - "line": 2738, + "line": 2740, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 106716, - "end": 106755, + "start": 106865, + "end": 106904, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 12 }, "end": { - "line": 2735, + "line": 2737, "column": 51 } }, "left": { "type": "BinaryExpression", - "start": 106716, - "end": 106736, + "start": 106865, + "end": 106885, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 12 }, "end": { - "line": 2735, + "line": 2737, "column": 32 } }, "left": { "type": "MemberExpression", - "start": 106716, - "end": 106722, + "start": 106865, + "end": 106871, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 12 }, "end": { - "line": 2735, + "line": 2737, "column": 18 } }, "object": { "type": "Identifier", - "start": 106716, - "end": 106719, + "start": 106865, + "end": 106868, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 12 }, "end": { - "line": 2735, + "line": 2737, "column": 15 }, "identifierName": "cfg" @@ -84083,15 +84199,15 @@ }, "property": { "type": "Identifier", - "start": 106720, - "end": 106722, + "start": 106869, + "end": 106871, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 16 }, "end": { - "line": 2735, + "line": 2737, "column": 18 }, "identifierName": "id" @@ -84103,15 +84219,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 106727, - "end": 106736, + "start": 106876, + "end": 106885, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 23 }, "end": { - "line": 2735, + "line": 2737, "column": 32 }, "identifierName": "undefined" @@ -84122,43 +84238,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 106740, - "end": 106755, + "start": 106889, + "end": 106904, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 36 }, "end": { - "line": 2735, + "line": 2737, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 106740, - "end": 106746, + "start": 106889, + "end": 106895, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 36 }, "end": { - "line": 2735, + "line": 2737, "column": 42 } }, "object": { "type": "Identifier", - "start": 106740, - "end": 106743, + "start": 106889, + "end": 106892, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 36 }, "end": { - "line": 2735, + "line": 2737, "column": 39 }, "identifierName": "cfg" @@ -84167,15 +84283,15 @@ }, "property": { "type": "Identifier", - "start": 106744, - "end": 106746, + "start": 106893, + "end": 106895, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 40 }, "end": { - "line": 2735, + "line": 2737, "column": 42 }, "identifierName": "id" @@ -84187,15 +84303,15 @@ "operator": "===", "right": { "type": "NullLiteral", - "start": 106751, - "end": 106755, + "start": 106900, + "end": 106904, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 47 }, "end": { - "line": 2735, + "line": 2737, "column": 51 } } @@ -84204,87 +84320,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 106757, - "end": 106877, + "start": 106906, + "end": 107026, "loc": { "start": { - "line": 2735, + "line": 2737, "column": 53 }, "end": { - "line": 2738, + "line": 2740, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 106771, - "end": 106841, + "start": 106920, + "end": 106990, "loc": { "start": { - "line": 2736, + "line": 2738, "column": 12 }, "end": { - "line": 2736, + "line": 2738, "column": 82 } }, "expression": { "type": "CallExpression", - "start": 106771, - "end": 106840, + "start": 106920, + "end": 106989, "loc": { "start": { - "line": 2736, + "line": 2738, "column": 12 }, "end": { - "line": 2736, + "line": 2738, "column": 81 } }, "callee": { "type": "MemberExpression", - "start": 106771, - "end": 106781, + "start": 106920, + "end": 106930, "loc": { "start": { - "line": 2736, + "line": 2738, "column": 12 }, "end": { - "line": 2736, + "line": 2738, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 106771, - "end": 106775, + "start": 106920, + "end": 106924, "loc": { "start": { - "line": 2736, + "line": 2738, "column": 12 }, "end": { - "line": 2736, + "line": 2738, "column": 16 } } }, "property": { "type": "Identifier", - "start": 106776, - "end": 106781, + "start": 106925, + "end": 106930, "loc": { "start": { - "line": 2736, + "line": 2738, "column": 17 }, "end": { - "line": 2736, + "line": 2738, "column": 22 }, "identifierName": "error" @@ -84296,15 +84412,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 106782, - "end": 106839, + "start": 106931, + "end": 106988, "loc": { "start": { - "line": 2736, + "line": 2738, "column": 23 }, "end": { - "line": 2736, + "line": 2738, "column": 80 } }, @@ -84319,29 +84435,29 @@ }, { "type": "ReturnStatement", - "start": 106854, - "end": 106867, + "start": 107003, + "end": 107016, "loc": { "start": { - "line": 2737, + "line": 2739, "column": 12 }, "end": { - "line": 2737, + "line": 2739, "column": 25 } }, "argument": { "type": "BooleanLiteral", - "start": 106861, - "end": 106866, + "start": 107010, + "end": 107015, "loc": { "start": { - "line": 2737, + "line": 2739, "column": 19 }, "end": { - "line": 2737, + "line": 2739, "column": 24 } }, @@ -84355,72 +84471,72 @@ }, { "type": "IfStatement", - "start": 106887, - "end": 107044, + "start": 107036, + "end": 107193, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 8 }, "end": { - "line": 2743, + "line": 2745, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 106891, - "end": 106911, + "start": 107040, + "end": 107060, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 12 }, "end": { - "line": 2740, + "line": 2742, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 106891, - "end": 106903, + "start": 107040, + "end": 107052, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 12 }, "end": { - "line": 2740, + "line": 2742, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 106891, - "end": 106895, + "start": 107040, + "end": 107044, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 12 }, "end": { - "line": 2740, + "line": 2742, "column": 16 } } }, "property": { "type": "Identifier", - "start": 106896, - "end": 106903, + "start": 107045, + "end": 107052, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 17 }, "end": { - "line": 2740, + "line": 2742, "column": 24 }, "identifierName": "_meshes" @@ -84431,29 +84547,29 @@ }, "property": { "type": "MemberExpression", - "start": 106904, - "end": 106910, + "start": 107053, + "end": 107059, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 25 }, "end": { - "line": 2740, + "line": 2742, "column": 31 } }, "object": { "type": "Identifier", - "start": 106904, - "end": 106907, + "start": 107053, + "end": 107056, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 25 }, "end": { - "line": 2740, + "line": 2742, "column": 28 }, "identifierName": "cfg" @@ -84462,15 +84578,15 @@ }, "property": { "type": "Identifier", - "start": 106908, - "end": 106910, + "start": 107057, + "end": 107059, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 29 }, "end": { - "line": 2740, + "line": 2742, "column": 31 }, "identifierName": "id" @@ -84483,87 +84599,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 106913, - "end": 107044, + "start": 107062, + "end": 107193, "loc": { "start": { - "line": 2740, + "line": 2742, "column": 34 }, "end": { - "line": 2743, + "line": 2745, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 106927, - "end": 107008, + "start": 107076, + "end": 107157, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 12 }, "end": { - "line": 2741, + "line": 2743, "column": 93 } }, "expression": { "type": "CallExpression", - "start": 106927, - "end": 107007, + "start": 107076, + "end": 107156, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 12 }, "end": { - "line": 2741, + "line": 2743, "column": 92 } }, "callee": { "type": "MemberExpression", - "start": 106927, - "end": 106937, + "start": 107076, + "end": 107086, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 12 }, "end": { - "line": 2741, + "line": 2743, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 106927, - "end": 106931, + "start": 107076, + "end": 107080, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 12 }, "end": { - "line": 2741, + "line": 2743, "column": 16 } } }, "property": { "type": "Identifier", - "start": 106932, - "end": 106937, + "start": 107081, + "end": 107086, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 17 }, "end": { - "line": 2741, + "line": 2743, "column": 22 }, "identifierName": "error" @@ -84575,44 +84691,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 106938, - "end": 107006, + "start": 107087, + "end": 107155, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 23 }, "end": { - "line": 2741, + "line": 2743, "column": 91 } }, "expressions": [ { "type": "MemberExpression", - "start": 106998, - "end": 107004, + "start": 107147, + "end": 107153, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 83 }, "end": { - "line": 2741, + "line": 2743, "column": 89 } }, "object": { "type": "Identifier", - "start": 106998, - "end": 107001, + "start": 107147, + "end": 107150, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 83 }, "end": { - "line": 2741, + "line": 2743, "column": 86 }, "identifierName": "cfg" @@ -84621,15 +84737,15 @@ }, "property": { "type": "Identifier", - "start": 107002, - "end": 107004, + "start": 107151, + "end": 107153, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 87 }, "end": { - "line": 2741, + "line": 2743, "column": 89 }, "identifierName": "id" @@ -84642,15 +84758,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 106939, - "end": 106996, + "start": 107088, + "end": 107145, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 24 }, "end": { - "line": 2741, + "line": 2743, "column": 81 } }, @@ -84662,15 +84778,15 @@ }, { "type": "TemplateElement", - "start": 107005, - "end": 107005, + "start": 107154, + "end": 107154, "loc": { "start": { - "line": 2741, + "line": 2743, "column": 90 }, "end": { - "line": 2741, + "line": 2743, "column": 90 } }, @@ -84687,29 +84803,29 @@ }, { "type": "ReturnStatement", - "start": 107021, - "end": 107034, + "start": 107170, + "end": 107183, "loc": { "start": { - "line": 2742, + "line": 2744, "column": 12 }, "end": { - "line": 2742, + "line": 2744, "column": 25 } }, "argument": { "type": "BooleanLiteral", - "start": 107028, - "end": 107033, + "start": 107177, + "end": 107182, "loc": { "start": { - "line": 2742, + "line": 2744, "column": 19 }, "end": { - "line": 2742, + "line": 2744, "column": 24 } }, @@ -84723,44 +84839,44 @@ }, { "type": "VariableDeclaration", - "start": 107054, - "end": 107104, + "start": 107203, + "end": 107253, "loc": { "start": { - "line": 2745, + "line": 2747, "column": 8 }, "end": { - "line": 2745, + "line": 2747, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 107060, - "end": 107103, + "start": 107209, + "end": 107252, "loc": { "start": { - "line": 2745, + "line": 2747, "column": 14 }, "end": { - "line": 2745, + "line": 2747, "column": 57 } }, "id": { "type": "Identifier", - "start": 107060, - "end": 107070, + "start": 107209, + "end": 107219, "loc": { "start": { - "line": 2745, + "line": 2747, "column": 14 }, "end": { - "line": 2745, + "line": 2747, "column": 24 }, "identifierName": "instancing" @@ -84769,43 +84885,43 @@ }, "init": { "type": "BinaryExpression", - "start": 107074, - "end": 107102, + "start": 107223, + "end": 107251, "loc": { "start": { - "line": 2745, + "line": 2747, "column": 28 }, "end": { - "line": 2745, + "line": 2747, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 107074, - "end": 107088, + "start": 107223, + "end": 107237, "loc": { "start": { - "line": 2745, + "line": 2747, "column": 28 }, "end": { - "line": 2745, + "line": 2747, "column": 42 } }, "object": { "type": "Identifier", - "start": 107074, - "end": 107077, + "start": 107223, + "end": 107226, "loc": { "start": { - "line": 2745, + "line": 2747, "column": 28 }, "end": { - "line": 2745, + "line": 2747, "column": 31 }, "identifierName": "cfg" @@ -84814,15 +84930,15 @@ }, "property": { "type": "Identifier", - "start": 107078, - "end": 107088, + "start": 107227, + "end": 107237, "loc": { "start": { - "line": 2745, + "line": 2747, "column": 32 }, "end": { - "line": 2745, + "line": 2747, "column": 42 }, "identifierName": "geometryId" @@ -84834,15 +84950,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 107093, - "end": 107102, + "start": 107242, + "end": 107251, "loc": { "start": { - "line": 2745, + "line": 2747, "column": 47 }, "end": { - "line": 2745, + "line": 2747, "column": 56 }, "identifierName": "undefined" @@ -84851,7 +84967,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 107073 + "parenStart": 107222 } } } @@ -84860,44 +84976,44 @@ }, { "type": "VariableDeclaration", - "start": 107113, - "end": 107142, + "start": 107262, + "end": 107291, "loc": { "start": { - "line": 2746, + "line": 2748, "column": 8 }, "end": { - "line": 2746, + "line": 2748, "column": 37 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 107119, - "end": 107141, + "start": 107268, + "end": 107290, "loc": { "start": { - "line": 2746, + "line": 2748, "column": 14 }, "end": { - "line": 2746, + "line": 2748, "column": 36 } }, "id": { "type": "Identifier", - "start": 107119, - "end": 107127, + "start": 107268, + "end": 107276, "loc": { "start": { - "line": 2746, + "line": 2748, "column": 14 }, "end": { - "line": 2746, + "line": 2748, "column": 22 }, "identifierName": "batching" @@ -84906,15 +85022,15 @@ }, "init": { "type": "UnaryExpression", - "start": 107130, - "end": 107141, + "start": 107279, + "end": 107290, "loc": { "start": { - "line": 2746, + "line": 2748, "column": 25 }, "end": { - "line": 2746, + "line": 2748, "column": 36 } }, @@ -84922,15 +85038,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 107131, - "end": 107141, + "start": 107280, + "end": 107290, "loc": { "start": { - "line": 2746, + "line": 2748, "column": 26 }, "end": { - "line": 2746, + "line": 2748, "column": 36 }, "identifierName": "instancing" @@ -84947,29 +85063,29 @@ }, { "type": "IfStatement", - "start": 107152, - "end": 121672, + "start": 107301, + "end": 122186, "loc": { "start": { - "line": 2748, + "line": 2750, "column": 8 }, "end": { - "line": 3056, + "line": 3064, "column": 9 } }, "test": { "type": "Identifier", - "start": 107156, - "end": 107164, + "start": 107305, + "end": 107313, "loc": { "start": { - "line": 2748, + "line": 2750, "column": 12 }, "end": { - "line": 2748, + "line": 2750, "column": 20 }, "identifierName": "batching" @@ -84978,86 +85094,86 @@ }, "consequent": { "type": "BlockStatement", - "start": 107166, - "end": 117305, + "start": 107315, + "end": 117611, "loc": { "start": { - "line": 2748, + "line": 2750, "column": 22 }, "end": { - "line": 2957, + "line": 2962, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 107214, - "end": 107333, + "start": 107363, + "end": 107482, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 12 }, "end": { - "line": 2754, + "line": 2756, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 107218, - "end": 107271, + "start": 107367, + "end": 107420, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 16 }, "end": { - "line": 2752, + "line": 2754, "column": 69 } }, "left": { "type": "BinaryExpression", - "start": 107218, - "end": 107245, + "start": 107367, + "end": 107394, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 16 }, "end": { - "line": 2752, + "line": 2754, "column": 43 } }, "left": { "type": "MemberExpression", - "start": 107218, - "end": 107231, + "start": 107367, + "end": 107380, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 16 }, "end": { - "line": 2752, + "line": 2754, "column": 29 } }, "object": { "type": "Identifier", - "start": 107218, - "end": 107221, + "start": 107367, + "end": 107370, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 16 }, "end": { - "line": 2752, + "line": 2754, "column": 19 }, "identifierName": "cfg" @@ -85067,15 +85183,15 @@ }, "property": { "type": "Identifier", - "start": 107222, - "end": 107231, + "start": 107371, + "end": 107380, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 20 }, "end": { - "line": 2752, + "line": 2754, "column": 29 }, "identifierName": "primitive" @@ -85088,15 +85204,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 107236, - "end": 107245, + "start": 107385, + "end": 107394, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 34 }, "end": { - "line": 2752, + "line": 2754, "column": 43 }, "identifierName": "undefined" @@ -85108,43 +85224,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 107249, - "end": 107271, + "start": 107398, + "end": 107420, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 47 }, "end": { - "line": 2752, + "line": 2754, "column": 69 } }, "left": { "type": "MemberExpression", - "start": 107249, - "end": 107262, + "start": 107398, + "end": 107411, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 47 }, "end": { - "line": 2752, + "line": 2754, "column": 60 } }, "object": { "type": "Identifier", - "start": 107249, - "end": 107252, + "start": 107398, + "end": 107401, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 47 }, "end": { - "line": 2752, + "line": 2754, "column": 50 }, "identifierName": "cfg" @@ -85153,15 +85269,15 @@ }, "property": { "type": "Identifier", - "start": 107253, - "end": 107262, + "start": 107402, + "end": 107411, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 51 }, "end": { - "line": 2752, + "line": 2754, "column": 60 }, "identifierName": "primitive" @@ -85173,15 +85289,15 @@ "operator": "===", "right": { "type": "NullLiteral", - "start": 107267, - "end": 107271, + "start": 107416, + "end": 107420, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 65 }, "end": { - "line": 2752, + "line": 2754, "column": 69 } } @@ -85191,73 +85307,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 107273, - "end": 107333, + "start": 107422, + "end": 107482, "loc": { "start": { - "line": 2752, + "line": 2754, "column": 71 }, "end": { - "line": 2754, + "line": 2756, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 107291, - "end": 107319, + "start": 107440, + "end": 107468, "loc": { "start": { - "line": 2753, + "line": 2755, "column": 16 }, "end": { - "line": 2753, + "line": 2755, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 107291, - "end": 107318, + "start": 107440, + "end": 107467, "loc": { "start": { - "line": 2753, + "line": 2755, "column": 16 }, "end": { - "line": 2753, + "line": 2755, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 107291, - "end": 107304, + "start": 107440, + "end": 107453, "loc": { "start": { - "line": 2753, + "line": 2755, "column": 16 }, "end": { - "line": 2753, + "line": 2755, "column": 29 } }, "object": { "type": "Identifier", - "start": 107291, - "end": 107294, + "start": 107440, + "end": 107443, "loc": { "start": { - "line": 2753, + "line": 2755, "column": 16 }, "end": { - "line": 2753, + "line": 2755, "column": 19 }, "identifierName": "cfg" @@ -85266,15 +85382,15 @@ }, "property": { "type": "Identifier", - "start": 107295, - "end": 107304, + "start": 107444, + "end": 107453, "loc": { "start": { - "line": 2753, + "line": 2755, "column": 20 }, "end": { - "line": 2753, + "line": 2755, "column": 29 }, "identifierName": "primitive" @@ -85285,15 +85401,15 @@ }, "right": { "type": "StringLiteral", - "start": 107307, - "end": 107318, + "start": 107456, + "end": 107467, "loc": { "start": { - "line": 2753, + "line": 2755, "column": 32 }, "end": { - "line": 2753, + "line": 2755, "column": 43 } }, @@ -85313,15 +85429,15 @@ { "type": "CommentLine", "value": " Batched geometry", - "start": 107181, - "end": 107200, + "start": 107330, + "end": 107349, "loc": { "start": { - "line": 2750, + "line": 2752, "column": 12 }, "end": { - "line": 2750, + "line": 2752, "column": 31 } } @@ -85330,113 +85446,113 @@ }, { "type": "IfStatement", - "start": 107346, - "end": 107730, + "start": 107495, + "end": 107879, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 12 }, "end": { - "line": 2758, + "line": 2760, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 107350, - "end": 107498, + "start": 107499, + "end": 107647, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 16 }, "end": { - "line": 2755, + "line": 2757, "column": 164 } }, "left": { "type": "LogicalExpression", - "start": 107350, - "end": 107467, + "start": 107499, + "end": 107616, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 16 }, "end": { - "line": 2755, + "line": 2757, "column": 133 } }, "left": { "type": "LogicalExpression", - "start": 107350, - "end": 107438, + "start": 107499, + "end": 107587, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 16 }, "end": { - "line": 2755, + "line": 2757, "column": 104 } }, "left": { "type": "LogicalExpression", - "start": 107350, - "end": 107405, + "start": 107499, + "end": 107554, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 16 }, "end": { - "line": 2755, + "line": 2757, "column": 71 } }, "left": { "type": "BinaryExpression", - "start": 107350, - "end": 107376, + "start": 107499, + "end": 107525, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 16 }, "end": { - "line": 2755, + "line": 2757, "column": 42 } }, "left": { "type": "MemberExpression", - "start": 107350, - "end": 107363, + "start": 107499, + "end": 107512, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 16 }, "end": { - "line": 2755, + "line": 2757, "column": 29 } }, "object": { "type": "Identifier", - "start": 107350, - "end": 107353, + "start": 107499, + "end": 107502, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 16 }, "end": { - "line": 2755, + "line": 2757, "column": 19 }, "identifierName": "cfg" @@ -85445,15 +85561,15 @@ }, "property": { "type": "Identifier", - "start": 107354, - "end": 107363, + "start": 107503, + "end": 107512, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 20 }, "end": { - "line": 2755, + "line": 2757, "column": 29 }, "identifierName": "primitive" @@ -85465,15 +85581,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 107368, - "end": 107376, + "start": 107517, + "end": 107525, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 34 }, "end": { - "line": 2755, + "line": 2757, "column": 42 } }, @@ -85487,43 +85603,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 107380, - "end": 107405, + "start": 107529, + "end": 107554, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 46 }, "end": { - "line": 2755, + "line": 2757, "column": 71 } }, "left": { "type": "MemberExpression", - "start": 107380, - "end": 107393, + "start": 107529, + "end": 107542, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 46 }, "end": { - "line": 2755, + "line": 2757, "column": 59 } }, "object": { "type": "Identifier", - "start": 107380, - "end": 107383, + "start": 107529, + "end": 107532, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 46 }, "end": { - "line": 2755, + "line": 2757, "column": 49 }, "identifierName": "cfg" @@ -85532,15 +85648,15 @@ }, "property": { "type": "Identifier", - "start": 107384, - "end": 107393, + "start": 107533, + "end": 107542, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 50 }, "end": { - "line": 2755, + "line": 2757, "column": 59 }, "identifierName": "primitive" @@ -85552,15 +85668,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 107398, - "end": 107405, + "start": 107547, + "end": 107554, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 64 }, "end": { - "line": 2755, + "line": 2757, "column": 71 } }, @@ -85575,43 +85691,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 107409, - "end": 107438, + "start": 107558, + "end": 107587, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 75 }, "end": { - "line": 2755, + "line": 2757, "column": 104 } }, "left": { "type": "MemberExpression", - "start": 107409, - "end": 107422, + "start": 107558, + "end": 107571, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 75 }, "end": { - "line": 2755, + "line": 2757, "column": 88 } }, "object": { "type": "Identifier", - "start": 107409, - "end": 107412, + "start": 107558, + "end": 107561, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 75 }, "end": { - "line": 2755, + "line": 2757, "column": 78 }, "identifierName": "cfg" @@ -85620,15 +85736,15 @@ }, "property": { "type": "Identifier", - "start": 107413, - "end": 107422, + "start": 107562, + "end": 107571, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 79 }, "end": { - "line": 2755, + "line": 2757, "column": 88 }, "identifierName": "primitive" @@ -85640,15 +85756,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 107427, - "end": 107438, + "start": 107576, + "end": 107587, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 93 }, "end": { - "line": 2755, + "line": 2757, "column": 104 } }, @@ -85663,43 +85779,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 107442, - "end": 107467, + "start": 107591, + "end": 107616, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 108 }, "end": { - "line": 2755, + "line": 2757, "column": 133 } }, "left": { "type": "MemberExpression", - "start": 107442, - "end": 107455, + "start": 107591, + "end": 107604, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 108 }, "end": { - "line": 2755, + "line": 2757, "column": 121 } }, "object": { "type": "Identifier", - "start": 107442, - "end": 107445, + "start": 107591, + "end": 107594, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 108 }, "end": { - "line": 2755, + "line": 2757, "column": 111 }, "identifierName": "cfg" @@ -85708,15 +85824,15 @@ }, "property": { "type": "Identifier", - "start": 107446, - "end": 107455, + "start": 107595, + "end": 107604, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 112 }, "end": { - "line": 2755, + "line": 2757, "column": 121 }, "identifierName": "primitive" @@ -85728,15 +85844,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 107460, - "end": 107467, + "start": 107609, + "end": 107616, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 126 }, "end": { - "line": 2755, + "line": 2757, "column": 133 } }, @@ -85751,43 +85867,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 107471, - "end": 107498, + "start": 107620, + "end": 107647, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 137 }, "end": { - "line": 2755, + "line": 2757, "column": 164 } }, "left": { "type": "MemberExpression", - "start": 107471, - "end": 107484, + "start": 107620, + "end": 107633, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 137 }, "end": { - "line": 2755, + "line": 2757, "column": 150 } }, "object": { "type": "Identifier", - "start": 107471, - "end": 107474, + "start": 107620, + "end": 107623, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 137 }, "end": { - "line": 2755, + "line": 2757, "column": 140 }, "identifierName": "cfg" @@ -85796,15 +85912,15 @@ }, "property": { "type": "Identifier", - "start": 107475, - "end": 107484, + "start": 107624, + "end": 107633, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 141 }, "end": { - "line": 2755, + "line": 2757, "column": 150 }, "identifierName": "primitive" @@ -85816,15 +85932,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 107489, - "end": 107498, + "start": 107638, + "end": 107647, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 155 }, "end": { - "line": 2755, + "line": 2757, "column": 164 } }, @@ -85838,87 +85954,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 107500, - "end": 107730, + "start": 107649, + "end": 107879, "loc": { "start": { - "line": 2755, + "line": 2757, "column": 166 }, "end": { - "line": 2758, + "line": 2760, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 107518, - "end": 107686, + "start": 107667, + "end": 107835, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 16 }, "end": { - "line": 2756, + "line": 2758, "column": 184 } }, "expression": { "type": "CallExpression", - "start": 107518, - "end": 107685, + "start": 107667, + "end": 107834, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 16 }, "end": { - "line": 2756, + "line": 2758, "column": 183 } }, "callee": { "type": "MemberExpression", - "start": 107518, - "end": 107528, + "start": 107667, + "end": 107677, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 16 }, "end": { - "line": 2756, + "line": 2758, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 107518, - "end": 107522, + "start": 107667, + "end": 107671, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 16 }, "end": { - "line": 2756, + "line": 2758, "column": 20 } } }, "property": { "type": "Identifier", - "start": 107523, - "end": 107528, + "start": 107672, + "end": 107677, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 21 }, "end": { - "line": 2756, + "line": 2758, "column": 26 }, "identifierName": "error" @@ -85930,30 +86046,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 107529, - "end": 107684, + "start": 107678, + "end": 107833, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 27 }, "end": { - "line": 2756, + "line": 2758, "column": 182 } }, "expressions": [ { "type": "Identifier", - "start": 107568, - "end": 107577, + "start": 107717, + "end": 107726, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 66 }, "end": { - "line": 2756, + "line": 2758, "column": 75 }, "identifierName": "primitive" @@ -85964,15 +86080,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 107530, - "end": 107566, + "start": 107679, + "end": 107715, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 28 }, "end": { - "line": 2756, + "line": 2758, "column": 64 } }, @@ -85984,15 +86100,15 @@ }, { "type": "TemplateElement", - "start": 107578, - "end": 107683, + "start": 107727, + "end": 107832, "loc": { "start": { - "line": 2756, + "line": 2758, "column": 76 }, "end": { - "line": 2756, + "line": 2758, "column": 181 } }, @@ -86009,29 +86125,29 @@ }, { "type": "ReturnStatement", - "start": 107703, - "end": 107716, + "start": 107852, + "end": 107865, "loc": { "start": { - "line": 2757, + "line": 2759, "column": 16 }, "end": { - "line": 2757, + "line": 2759, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 107710, - "end": 107715, + "start": 107859, + "end": 107864, "loc": { "start": { - "line": 2757, + "line": 2759, "column": 23 }, "end": { - "line": 2757, + "line": 2759, "column": 28 } }, @@ -86045,57 +86161,57 @@ }, { "type": "IfStatement", - "start": 107743, - "end": 107974, + "start": 107892, + "end": 108123, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 12 }, "end": { - "line": 2762, + "line": 2764, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 107747, - "end": 107805, + "start": 107896, + "end": 107954, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 16 }, "end": { - "line": 2759, + "line": 2761, "column": 74 } }, "left": { "type": "LogicalExpression", - "start": 107747, - "end": 107789, + "start": 107896, + "end": 107938, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 16 }, "end": { - "line": 2759, + "line": 2761, "column": 58 } }, "left": { "type": "UnaryExpression", - "start": 107747, - "end": 107761, + "start": 107896, + "end": 107910, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 16 }, "end": { - "line": 2759, + "line": 2761, "column": 30 } }, @@ -86103,29 +86219,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 107748, - "end": 107761, + "start": 107897, + "end": 107910, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 17 }, "end": { - "line": 2759, + "line": 2761, "column": 30 } }, "object": { "type": "Identifier", - "start": 107748, - "end": 107751, + "start": 107897, + "end": 107900, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 17 }, "end": { - "line": 2759, + "line": 2761, "column": 20 }, "identifierName": "cfg" @@ -86134,15 +86250,15 @@ }, "property": { "type": "Identifier", - "start": 107752, - "end": 107761, + "start": 107901, + "end": 107910, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 21 }, "end": { - "line": 2759, + "line": 2761, "column": 30 }, "identifierName": "positions" @@ -86158,15 +86274,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 107765, - "end": 107789, + "start": 107914, + "end": 107938, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 34 }, "end": { - "line": 2759, + "line": 2761, "column": 58 } }, @@ -86174,29 +86290,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 107766, - "end": 107789, + "start": 107915, + "end": 107938, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 35 }, "end": { - "line": 2759, + "line": 2761, "column": 58 } }, "object": { "type": "Identifier", - "start": 107766, - "end": 107769, + "start": 107915, + "end": 107918, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 35 }, "end": { - "line": 2759, + "line": 2761, "column": 38 }, "identifierName": "cfg" @@ -86205,15 +86321,15 @@ }, "property": { "type": "Identifier", - "start": 107770, - "end": 107789, + "start": 107919, + "end": 107938, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 39 }, "end": { - "line": 2759, + "line": 2761, "column": 58 }, "identifierName": "positionsCompressed" @@ -86230,15 +86346,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 107793, - "end": 107805, + "start": 107942, + "end": 107954, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 62 }, "end": { - "line": 2759, + "line": 2761, "column": 74 } }, @@ -86246,29 +86362,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 107794, - "end": 107805, + "start": 107943, + "end": 107954, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 63 }, "end": { - "line": 2759, + "line": 2761, "column": 74 } }, "object": { "type": "Identifier", - "start": 107794, - "end": 107797, + "start": 107943, + "end": 107946, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 63 }, "end": { - "line": 2759, + "line": 2761, "column": 66 }, "identifierName": "cfg" @@ -86277,15 +86393,15 @@ }, "property": { "type": "Identifier", - "start": 107798, - "end": 107805, + "start": 107947, + "end": 107954, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 67 }, "end": { - "line": 2759, + "line": 2761, "column": 74 }, "identifierName": "buckets" @@ -86301,87 +86417,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 107807, - "end": 107974, + "start": 107956, + "end": 108123, "loc": { "start": { - "line": 2759, + "line": 2761, "column": 76 }, "end": { - "line": 2762, + "line": 2764, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 107825, - "end": 107930, + "start": 107974, + "end": 108079, "loc": { "start": { - "line": 2760, + "line": 2762, "column": 16 }, "end": { - "line": 2760, + "line": 2762, "column": 121 } }, "expression": { "type": "CallExpression", - "start": 107825, - "end": 107929, + "start": 107974, + "end": 108078, "loc": { "start": { - "line": 2760, + "line": 2762, "column": 16 }, "end": { - "line": 2760, + "line": 2762, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 107825, - "end": 107835, + "start": 107974, + "end": 107984, "loc": { "start": { - "line": 2760, + "line": 2762, "column": 16 }, "end": { - "line": 2760, + "line": 2762, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 107825, - "end": 107829, + "start": 107974, + "end": 107978, "loc": { "start": { - "line": 2760, + "line": 2762, "column": 16 }, "end": { - "line": 2760, + "line": 2762, "column": 20 } } }, "property": { "type": "Identifier", - "start": 107830, - "end": 107835, + "start": 107979, + "end": 107984, "loc": { "start": { - "line": 2760, + "line": 2762, "column": 21 }, "end": { - "line": 2760, + "line": 2762, "column": 26 }, "identifierName": "error" @@ -86393,15 +86509,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 107836, - "end": 107928, + "start": 107985, + "end": 108077, "loc": { "start": { - "line": 2760, + "line": 2762, "column": 27 }, "end": { - "line": 2760, + "line": 2762, "column": 119 } }, @@ -86416,29 +86532,29 @@ }, { "type": "ReturnStatement", - "start": 107947, - "end": 107960, + "start": 108096, + "end": 108109, "loc": { "start": { - "line": 2761, + "line": 2763, "column": 16 }, "end": { - "line": 2761, + "line": 2763, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 107954, - "end": 107959, + "start": 108103, + "end": 108108, "loc": { "start": { - "line": 2761, + "line": 2763, "column": 23 }, "end": { - "line": 2761, + "line": 2763, "column": 28 } }, @@ -86452,57 +86568,57 @@ }, { "type": "IfStatement", - "start": 107987, - "end": 108265, + "start": 108136, + "end": 108414, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 12 }, "end": { - "line": 2766, + "line": 2768, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 107991, - "end": 108066, + "start": 108140, + "end": 108215, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 16 }, "end": { - "line": 2763, + "line": 2765, "column": 91 } }, "left": { "type": "MemberExpression", - "start": 107991, - "end": 108004, + "start": 108140, + "end": 108153, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 16 }, "end": { - "line": 2763, + "line": 2765, "column": 29 } }, "object": { "type": "Identifier", - "start": 107991, - "end": 107994, + "start": 108140, + "end": 108143, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 16 }, "end": { - "line": 2763, + "line": 2765, "column": 19 }, "identifierName": "cfg" @@ -86511,15 +86627,15 @@ }, "property": { "type": "Identifier", - "start": 107995, - "end": 108004, + "start": 108144, + "end": 108153, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 20 }, "end": { - "line": 2763, + "line": 2765, "column": 29 }, "identifierName": "positions" @@ -86531,43 +86647,43 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 108009, - "end": 108065, + "start": 108158, + "end": 108214, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 34 }, "end": { - "line": 2763, + "line": 2765, "column": 90 } }, "left": { "type": "MemberExpression", - "start": 108009, - "end": 108034, + "start": 108158, + "end": 108183, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 34 }, "end": { - "line": 2763, + "line": 2765, "column": 59 } }, "object": { "type": "Identifier", - "start": 108009, - "end": 108012, + "start": 108158, + "end": 108161, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 34 }, "end": { - "line": 2763, + "line": 2765, "column": 37 }, "identifierName": "cfg" @@ -86576,15 +86692,15 @@ }, "property": { "type": "Identifier", - "start": 108013, - "end": 108034, + "start": 108162, + "end": 108183, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 38 }, "end": { - "line": 2763, + "line": 2765, "column": 59 }, "identifierName": "positionsDecodeMatrix" @@ -86596,29 +86712,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 108038, - "end": 108065, + "start": 108187, + "end": 108214, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 63 }, "end": { - "line": 2763, + "line": 2765, "column": 90 } }, "object": { "type": "Identifier", - "start": 108038, - "end": 108041, + "start": 108187, + "end": 108190, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 63 }, "end": { - "line": 2763, + "line": 2765, "column": 66 }, "identifierName": "cfg" @@ -86627,15 +86743,15 @@ }, "property": { "type": "Identifier", - "start": 108042, - "end": 108065, + "start": 108191, + "end": 108214, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 67 }, "end": { - "line": 2763, + "line": 2765, "column": 90 }, "identifierName": "positionsDecodeBoundary" @@ -86646,93 +86762,93 @@ }, "extra": { "parenthesized": true, - "parenStart": 108008 + "parenStart": 108157 } } }, "consequent": { "type": "BlockStatement", - "start": 108068, - "end": 108265, + "start": 108217, + "end": 108414, "loc": { "start": { - "line": 2763, + "line": 2765, "column": 93 }, "end": { - "line": 2766, + "line": 2768, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 108086, - "end": 108221, + "start": 108235, + "end": 108370, "loc": { "start": { - "line": 2764, + "line": 2766, "column": 16 }, "end": { - "line": 2764, + "line": 2766, "column": 151 } }, "expression": { "type": "CallExpression", - "start": 108086, - "end": 108220, + "start": 108235, + "end": 108369, "loc": { "start": { - "line": 2764, + "line": 2766, "column": 16 }, "end": { - "line": 2764, + "line": 2766, "column": 150 } }, "callee": { "type": "MemberExpression", - "start": 108086, - "end": 108096, + "start": 108235, + "end": 108245, "loc": { "start": { - "line": 2764, + "line": 2766, "column": 16 }, "end": { - "line": 2764, + "line": 2766, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 108086, - "end": 108090, + "start": 108235, + "end": 108239, "loc": { "start": { - "line": 2764, + "line": 2766, "column": 16 }, "end": { - "line": 2764, + "line": 2766, "column": 20 } } }, "property": { "type": "Identifier", - "start": 108091, - "end": 108096, + "start": 108240, + "end": 108245, "loc": { "start": { - "line": 2764, + "line": 2766, "column": 21 }, "end": { - "line": 2764, + "line": 2766, "column": 26 }, "identifierName": "error" @@ -86744,15 +86860,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 108097, - "end": 108219, + "start": 108246, + "end": 108368, "loc": { "start": { - "line": 2764, + "line": 2766, "column": 27 }, "end": { - "line": 2764, + "line": 2766, "column": 149 } }, @@ -86767,29 +86883,29 @@ }, { "type": "ReturnStatement", - "start": 108238, - "end": 108251, + "start": 108387, + "end": 108400, "loc": { "start": { - "line": 2765, + "line": 2767, "column": 16 }, "end": { - "line": 2765, + "line": 2767, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 108245, - "end": 108250, + "start": 108394, + "end": 108399, "loc": { "start": { - "line": 2765, + "line": 2767, "column": 23 }, "end": { - "line": 2765, + "line": 2767, "column": 28 } }, @@ -86803,71 +86919,71 @@ }, { "type": "IfStatement", - "start": 108278, - "end": 108583, + "start": 108427, + "end": 108732, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 12 }, "end": { - "line": 2770, + "line": 2772, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 108282, - "end": 108367, + "start": 108431, + "end": 108516, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 16 }, "end": { - "line": 2767, + "line": 2769, "column": 101 } }, "left": { "type": "LogicalExpression", - "start": 108282, - "end": 108335, + "start": 108431, + "end": 108484, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 16 }, "end": { - "line": 2767, + "line": 2769, "column": 69 } }, "left": { "type": "MemberExpression", - "start": 108282, - "end": 108305, + "start": 108431, + "end": 108454, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 16 }, "end": { - "line": 2767, + "line": 2769, "column": 39 } }, "object": { "type": "Identifier", - "start": 108282, - "end": 108285, + "start": 108431, + "end": 108434, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 16 }, "end": { - "line": 2767, + "line": 2769, "column": 19 }, "identifierName": "cfg" @@ -86876,15 +86992,15 @@ }, "property": { "type": "Identifier", - "start": 108286, - "end": 108305, + "start": 108435, + "end": 108454, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 20 }, "end": { - "line": 2767, + "line": 2769, "column": 39 }, "identifierName": "positionsCompressed" @@ -86896,15 +87012,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 108309, - "end": 108335, + "start": 108458, + "end": 108484, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 43 }, "end": { - "line": 2767, + "line": 2769, "column": 69 } }, @@ -86912,29 +87028,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 108310, - "end": 108335, + "start": 108459, + "end": 108484, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 44 }, "end": { - "line": 2767, + "line": 2769, "column": 69 } }, "object": { "type": "Identifier", - "start": 108310, - "end": 108313, + "start": 108459, + "end": 108462, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 44 }, "end": { - "line": 2767, + "line": 2769, "column": 47 }, "identifierName": "cfg" @@ -86943,15 +87059,15 @@ }, "property": { "type": "Identifier", - "start": 108314, - "end": 108335, + "start": 108463, + "end": 108484, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 48 }, "end": { - "line": 2767, + "line": 2769, "column": 69 }, "identifierName": "positionsDecodeMatrix" @@ -86968,15 +87084,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 108339, - "end": 108367, + "start": 108488, + "end": 108516, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 73 }, "end": { - "line": 2767, + "line": 2769, "column": 101 } }, @@ -86984,29 +87100,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 108340, - "end": 108367, + "start": 108489, + "end": 108516, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 74 }, "end": { - "line": 2767, + "line": 2769, "column": 101 } }, "object": { "type": "Identifier", - "start": 108340, - "end": 108343, + "start": 108489, + "end": 108492, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 74 }, "end": { - "line": 2767, + "line": 2769, "column": 77 }, "identifierName": "cfg" @@ -87015,15 +87131,15 @@ }, "property": { "type": "Identifier", - "start": 108344, - "end": 108367, + "start": 108493, + "end": 108516, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 78 }, "end": { - "line": 2767, + "line": 2769, "column": 101 }, "identifierName": "positionsDecodeBoundary" @@ -87039,87 +87155,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 108369, - "end": 108583, + "start": 108518, + "end": 108732, "loc": { "start": { - "line": 2767, + "line": 2769, "column": 103 }, "end": { - "line": 2770, + "line": 2772, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 108387, - "end": 108539, + "start": 108536, + "end": 108688, "loc": { "start": { - "line": 2768, + "line": 2770, "column": 16 }, "end": { - "line": 2768, + "line": 2770, "column": 168 } }, "expression": { "type": "CallExpression", - "start": 108387, - "end": 108538, + "start": 108536, + "end": 108687, "loc": { "start": { - "line": 2768, + "line": 2770, "column": 16 }, "end": { - "line": 2768, + "line": 2770, "column": 167 } }, "callee": { "type": "MemberExpression", - "start": 108387, - "end": 108397, + "start": 108536, + "end": 108546, "loc": { "start": { - "line": 2768, + "line": 2770, "column": 16 }, "end": { - "line": 2768, + "line": 2770, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 108387, - "end": 108391, + "start": 108536, + "end": 108540, "loc": { "start": { - "line": 2768, + "line": 2770, "column": 16 }, "end": { - "line": 2768, + "line": 2770, "column": 20 } } }, "property": { "type": "Identifier", - "start": 108392, - "end": 108397, + "start": 108541, + "end": 108546, "loc": { "start": { - "line": 2768, + "line": 2770, "column": 21 }, "end": { - "line": 2768, + "line": 2770, "column": 26 }, "identifierName": "error" @@ -87131,15 +87247,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 108398, - "end": 108537, + "start": 108547, + "end": 108686, "loc": { "start": { - "line": 2768, + "line": 2770, "column": 27 }, "end": { - "line": 2768, + "line": 2770, "column": 166 } }, @@ -87154,29 +87270,29 @@ }, { "type": "ReturnStatement", - "start": 108556, - "end": 108569, + "start": 108705, + "end": 108718, "loc": { "start": { - "line": 2769, + "line": 2771, "column": 16 }, "end": { - "line": 2769, + "line": 2771, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 108563, - "end": 108568, + "start": 108712, + "end": 108717, "loc": { "start": { - "line": 2769, + "line": 2771, "column": 23 }, "end": { - "line": 2769, + "line": 2771, "column": 28 } }, @@ -87190,57 +87306,57 @@ }, { "type": "IfStatement", - "start": 108596, - "end": 108815, + "start": 108745, + "end": 108964, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 12 }, "end": { - "line": 2774, + "line": 2776, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 108600, - "end": 108639, + "start": 108749, + "end": 108788, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 16 }, "end": { - "line": 2771, + "line": 2773, "column": 55 } }, "left": { "type": "MemberExpression", - "start": 108600, - "end": 108616, + "start": 108749, + "end": 108765, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 16 }, "end": { - "line": 2771, + "line": 2773, "column": 32 } }, "object": { "type": "Identifier", - "start": 108600, - "end": 108603, + "start": 108749, + "end": 108752, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 16 }, "end": { - "line": 2771, + "line": 2773, "column": 19 }, "identifierName": "cfg" @@ -87249,15 +87365,15 @@ }, "property": { "type": "Identifier", - "start": 108604, - "end": 108616, + "start": 108753, + "end": 108765, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 20 }, "end": { - "line": 2771, + "line": 2773, "column": 32 }, "identifierName": "uvCompressed" @@ -87269,15 +87385,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 108620, - "end": 108639, + "start": 108769, + "end": 108788, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 36 }, "end": { - "line": 2771, + "line": 2773, "column": 55 } }, @@ -87285,29 +87401,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 108621, - "end": 108639, + "start": 108770, + "end": 108788, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 37 }, "end": { - "line": 2771, + "line": 2773, "column": 55 } }, "object": { "type": "Identifier", - "start": 108621, - "end": 108624, + "start": 108770, + "end": 108773, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 37 }, "end": { - "line": 2771, + "line": 2773, "column": 40 }, "identifierName": "cfg" @@ -87316,15 +87432,15 @@ }, "property": { "type": "Identifier", - "start": 108625, - "end": 108639, + "start": 108774, + "end": 108788, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 41 }, "end": { - "line": 2771, + "line": 2773, "column": 55 }, "identifierName": "uvDecodeMatrix" @@ -87340,87 +87456,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 108641, - "end": 108815, + "start": 108790, + "end": 108964, "loc": { "start": { - "line": 2771, + "line": 2773, "column": 57 }, "end": { - "line": 2774, + "line": 2776, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 108659, - "end": 108771, + "start": 108808, + "end": 108920, "loc": { "start": { - "line": 2772, + "line": 2774, "column": 16 }, "end": { - "line": 2772, + "line": 2774, "column": 128 } }, "expression": { "type": "CallExpression", - "start": 108659, - "end": 108770, + "start": 108808, + "end": 108919, "loc": { "start": { - "line": 2772, + "line": 2774, "column": 16 }, "end": { - "line": 2772, + "line": 2774, "column": 127 } }, "callee": { "type": "MemberExpression", - "start": 108659, - "end": 108669, + "start": 108808, + "end": 108818, "loc": { "start": { - "line": 2772, + "line": 2774, "column": 16 }, "end": { - "line": 2772, + "line": 2774, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 108659, - "end": 108663, + "start": 108808, + "end": 108812, "loc": { "start": { - "line": 2772, + "line": 2774, "column": 16 }, "end": { - "line": 2772, + "line": 2774, "column": 20 } } }, "property": { "type": "Identifier", - "start": 108664, - "end": 108669, + "start": 108813, + "end": 108818, "loc": { "start": { - "line": 2772, + "line": 2774, "column": 21 }, "end": { - "line": 2772, + "line": 2774, "column": 26 }, "identifierName": "error" @@ -87432,15 +87548,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 108670, - "end": 108769, + "start": 108819, + "end": 108918, "loc": { "start": { - "line": 2772, + "line": 2774, "column": 27 }, "end": { - "line": 2772, + "line": 2774, "column": 126 } }, @@ -87455,29 +87571,29 @@ }, { "type": "ReturnStatement", - "start": 108788, - "end": 108801, + "start": 108937, + "end": 108950, "loc": { "start": { - "line": 2773, + "line": 2775, "column": 16 }, "end": { - "line": 2773, + "line": 2775, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 108795, - "end": 108800, + "start": 108944, + "end": 108949, "loc": { "start": { - "line": 2773, + "line": 2775, "column": 23 }, "end": { - "line": 2773, + "line": 2775, "column": 28 } }, @@ -87491,57 +87607,57 @@ }, { "type": "IfStatement", - "start": 108828, - "end": 109136, + "start": 108977, + "end": 109285, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 12 }, "end": { - "line": 2778, + "line": 2780, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 108832, - "end": 108955, + "start": 108981, + "end": 109104, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 16 }, "end": { - "line": 2775, + "line": 2777, "column": 139 } }, "left": { "type": "LogicalExpression", - "start": 108832, - "end": 108860, + "start": 108981, + "end": 109009, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 16 }, "end": { - "line": 2775, + "line": 2777, "column": 44 } }, "left": { "type": "UnaryExpression", - "start": 108832, - "end": 108844, + "start": 108981, + "end": 108993, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 16 }, "end": { - "line": 2775, + "line": 2777, "column": 28 } }, @@ -87549,29 +87665,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 108833, - "end": 108844, + "start": 108982, + "end": 108993, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 17 }, "end": { - "line": 2775, + "line": 2777, "column": 28 } }, "object": { "type": "Identifier", - "start": 108833, - "end": 108836, + "start": 108982, + "end": 108985, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 17 }, "end": { - "line": 2775, + "line": 2777, "column": 20 }, "identifierName": "cfg" @@ -87580,15 +87696,15 @@ }, "property": { "type": "Identifier", - "start": 108837, - "end": 108844, + "start": 108986, + "end": 108993, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 21 }, "end": { - "line": 2775, + "line": 2777, "column": 28 }, "identifierName": "buckets" @@ -87604,15 +87720,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 108848, - "end": 108860, + "start": 108997, + "end": 109009, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 32 }, "end": { - "line": 2775, + "line": 2777, "column": 44 } }, @@ -87620,29 +87736,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 108849, - "end": 108860, + "start": 108998, + "end": 109009, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 33 }, "end": { - "line": 2775, + "line": 2777, "column": 44 } }, "object": { "type": "Identifier", - "start": 108849, - "end": 108852, + "start": 108998, + "end": 109001, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 33 }, "end": { - "line": 2775, + "line": 2777, "column": 36 }, "identifierName": "cfg" @@ -87651,15 +87767,15 @@ }, "property": { "type": "Identifier", - "start": 108853, - "end": 108860, + "start": 109002, + "end": 109009, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 37 }, "end": { - "line": 2775, + "line": 2777, "column": 44 }, "identifierName": "indices" @@ -87676,71 +87792,71 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 108865, - "end": 108954, + "start": 109014, + "end": 109103, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 49 }, "end": { - "line": 2775, + "line": 2777, "column": 138 } }, "left": { "type": "LogicalExpression", - "start": 108865, - "end": 108923, + "start": 109014, + "end": 109072, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 49 }, "end": { - "line": 2775, + "line": 2777, "column": 107 } }, "left": { "type": "BinaryExpression", - "start": 108865, - "end": 108894, + "start": 109014, + "end": 109043, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 49 }, "end": { - "line": 2775, + "line": 2777, "column": 78 } }, "left": { "type": "MemberExpression", - "start": 108865, - "end": 108878, + "start": 109014, + "end": 109027, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 49 }, "end": { - "line": 2775, + "line": 2777, "column": 62 } }, "object": { "type": "Identifier", - "start": 108865, - "end": 108868, + "start": 109014, + "end": 109017, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 49 }, "end": { - "line": 2775, + "line": 2777, "column": 52 }, "identifierName": "cfg" @@ -87749,15 +87865,15 @@ }, "property": { "type": "Identifier", - "start": 108869, - "end": 108878, + "start": 109018, + "end": 109027, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 53 }, "end": { - "line": 2775, + "line": 2777, "column": 62 }, "identifierName": "primitive" @@ -87769,15 +87885,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 108883, - "end": 108894, + "start": 109032, + "end": 109043, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 67 }, "end": { - "line": 2775, + "line": 2777, "column": 78 } }, @@ -87791,43 +87907,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 108898, - "end": 108923, + "start": 109047, + "end": 109072, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 82 }, "end": { - "line": 2775, + "line": 2777, "column": 107 } }, "left": { "type": "MemberExpression", - "start": 108898, - "end": 108911, + "start": 109047, + "end": 109060, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 82 }, "end": { - "line": 2775, + "line": 2777, "column": 95 } }, "object": { "type": "Identifier", - "start": 108898, - "end": 108901, + "start": 109047, + "end": 109050, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 82 }, "end": { - "line": 2775, + "line": 2777, "column": 85 }, "identifierName": "cfg" @@ -87836,15 +87952,15 @@ }, "property": { "type": "Identifier", - "start": 108902, - "end": 108911, + "start": 109051, + "end": 109060, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 86 }, "end": { - "line": 2775, + "line": 2777, "column": 95 }, "identifierName": "primitive" @@ -87856,15 +87972,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 108916, - "end": 108923, + "start": 109065, + "end": 109072, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 100 }, "end": { - "line": 2775, + "line": 2777, "column": 107 } }, @@ -87879,43 +87995,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 108927, - "end": 108954, + "start": 109076, + "end": 109103, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 111 }, "end": { - "line": 2775, + "line": 2777, "column": 138 } }, "left": { "type": "MemberExpression", - "start": 108927, - "end": 108940, + "start": 109076, + "end": 109089, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 111 }, "end": { - "line": 2775, + "line": 2777, "column": 124 } }, "object": { "type": "Identifier", - "start": 108927, - "end": 108930, + "start": 109076, + "end": 109079, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 111 }, "end": { - "line": 2775, + "line": 2777, "column": 114 }, "identifierName": "cfg" @@ -87924,15 +88040,15 @@ }, "property": { "type": "Identifier", - "start": 108931, - "end": 108940, + "start": 109080, + "end": 109089, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 115 }, "end": { - "line": 2775, + "line": 2777, "column": 124 }, "identifierName": "primitive" @@ -87944,15 +88060,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 108945, - "end": 108954, + "start": 109094, + "end": 109103, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 129 }, "end": { - "line": 2775, + "line": 2777, "column": 138 } }, @@ -87965,65 +88081,65 @@ }, "extra": { "parenthesized": true, - "parenStart": 108864 + "parenStart": 109013 } } }, "consequent": { "type": "BlockStatement", - "start": 108957, - "end": 109136, + "start": 109106, + "end": 109285, "loc": { "start": { - "line": 2775, + "line": 2777, "column": 141 }, "end": { - "line": 2778, + "line": 2780, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 108975, - "end": 109050, + "start": 109124, + "end": 109199, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 16 }, "end": { - "line": 2776, + "line": 2778, "column": 91 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 108981, - "end": 109049, + "start": 109130, + "end": 109198, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 22 }, "end": { - "line": 2776, + "line": 2778, "column": 90 } }, "id": { "type": "Identifier", - "start": 108981, - "end": 108993, + "start": 109130, + "end": 109142, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 22 }, "end": { - "line": 2776, + "line": 2778, "column": 34 }, "identifierName": "numPositions" @@ -88032,71 +88148,71 @@ }, "init": { "type": "BinaryExpression", - "start": 108996, - "end": 109049, + "start": 109145, + "end": 109198, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 37 }, "end": { - "line": 2776, + "line": 2778, "column": 90 } }, "left": { "type": "MemberExpression", - "start": 108996, - "end": 109045, + "start": 109145, + "end": 109194, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 37 }, "end": { - "line": 2776, + "line": 2778, "column": 86 } }, "object": { "type": "LogicalExpression", - "start": 108997, - "end": 109037, + "start": 109146, + "end": 109186, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 38 }, "end": { - "line": 2776, + "line": 2778, "column": 78 } }, "left": { "type": "MemberExpression", - "start": 108997, - "end": 109010, + "start": 109146, + "end": 109159, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 38 }, "end": { - "line": 2776, + "line": 2778, "column": 51 } }, "object": { "type": "Identifier", - "start": 108997, - "end": 109000, + "start": 109146, + "end": 109149, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 38 }, "end": { - "line": 2776, + "line": 2778, "column": 41 }, "identifierName": "cfg" @@ -88105,15 +88221,15 @@ }, "property": { "type": "Identifier", - "start": 109001, - "end": 109010, + "start": 109150, + "end": 109159, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 42 }, "end": { - "line": 2776, + "line": 2778, "column": 51 }, "identifierName": "positions" @@ -88125,29 +88241,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 109014, - "end": 109037, + "start": 109163, + "end": 109186, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 55 }, "end": { - "line": 2776, + "line": 2778, "column": 78 } }, "object": { "type": "Identifier", - "start": 109014, - "end": 109017, + "start": 109163, + "end": 109166, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 55 }, "end": { - "line": 2776, + "line": 2778, "column": 58 }, "identifierName": "cfg" @@ -88156,15 +88272,15 @@ }, "property": { "type": "Identifier", - "start": 109018, - "end": 109037, + "start": 109167, + "end": 109186, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 59 }, "end": { - "line": 2776, + "line": 2778, "column": 78 }, "identifierName": "positionsCompressed" @@ -88175,20 +88291,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 108996 + "parenStart": 109145 } }, "property": { "type": "Identifier", - "start": 109039, - "end": 109045, + "start": 109188, + "end": 109194, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 80 }, "end": { - "line": 2776, + "line": 2778, "column": 86 }, "identifierName": "length" @@ -88200,15 +88316,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 109048, - "end": 109049, + "start": 109197, + "end": 109198, "loc": { "start": { - "line": 2776, + "line": 2778, "column": 89 }, "end": { - "line": 2776, + "line": 2778, "column": 90 } }, @@ -88225,58 +88341,58 @@ }, { "type": "ExpressionStatement", - "start": 109067, - "end": 109122, + "start": 109216, + "end": 109271, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 16 }, "end": { - "line": 2777, + "line": 2779, "column": 71 } }, "expression": { "type": "AssignmentExpression", - "start": 109067, - "end": 109121, + "start": 109216, + "end": 109270, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 16 }, "end": { - "line": 2777, + "line": 2779, "column": 70 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 109067, - "end": 109078, + "start": 109216, + "end": 109227, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 16 }, "end": { - "line": 2777, + "line": 2779, "column": 27 } }, "object": { "type": "Identifier", - "start": 109067, - "end": 109070, + "start": 109216, + "end": 109219, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 16 }, "end": { - "line": 2777, + "line": 2779, "column": 19 }, "identifierName": "cfg" @@ -88285,15 +88401,15 @@ }, "property": { "type": "Identifier", - "start": 109071, - "end": 109078, + "start": 109220, + "end": 109227, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 20 }, "end": { - "line": 2777, + "line": 2779, "column": 27 }, "identifierName": "indices" @@ -88304,58 +88420,58 @@ }, "right": { "type": "CallExpression", - "start": 109081, - "end": 109121, + "start": 109230, + "end": 109270, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 30 }, "end": { - "line": 2777, + "line": 2779, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 109081, - "end": 109107, + "start": 109230, + "end": 109256, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 30 }, "end": { - "line": 2777, + "line": 2779, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 109081, - "end": 109085, + "start": 109230, + "end": 109234, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 30 }, "end": { - "line": 2777, + "line": 2779, "column": 34 } } }, "property": { "type": "Identifier", - "start": 109086, - "end": 109107, + "start": 109235, + "end": 109256, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 35 }, "end": { - "line": 2777, + "line": 2779, "column": 56 }, "identifierName": "_createDefaultIndices" @@ -88367,15 +88483,15 @@ "arguments": [ { "type": "Identifier", - "start": 109108, - "end": 109120, + "start": 109257, + "end": 109269, "loc": { "start": { - "line": 2777, + "line": 2779, "column": 57 }, "end": { - "line": 2777, + "line": 2779, "column": 69 }, "identifierName": "numPositions" @@ -88393,57 +88509,57 @@ }, { "type": "IfStatement", - "start": 109149, - "end": 109431, + "start": 109298, + "end": 109580, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 12 }, "end": { - "line": 2783, + "line": 2785, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 109153, - "end": 109211, + "start": 109302, + "end": 109360, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 16 }, "end": { - "line": 2779, + "line": 2781, "column": 74 } }, "left": { "type": "LogicalExpression", - "start": 109153, - "end": 109181, + "start": 109302, + "end": 109330, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 16 }, "end": { - "line": 2779, + "line": 2781, "column": 44 } }, "left": { "type": "UnaryExpression", - "start": 109153, - "end": 109165, + "start": 109302, + "end": 109314, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 16 }, "end": { - "line": 2779, + "line": 2781, "column": 28 } }, @@ -88451,29 +88567,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 109154, - "end": 109165, + "start": 109303, + "end": 109314, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 17 }, "end": { - "line": 2779, + "line": 2781, "column": 28 } }, "object": { "type": "Identifier", - "start": 109154, - "end": 109157, + "start": 109303, + "end": 109306, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 17 }, "end": { - "line": 2779, + "line": 2781, "column": 20 }, "identifierName": "cfg" @@ -88482,15 +88598,15 @@ }, "property": { "type": "Identifier", - "start": 109158, - "end": 109165, + "start": 109307, + "end": 109314, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 21 }, "end": { - "line": 2779, + "line": 2781, "column": 28 }, "identifierName": "buckets" @@ -88506,15 +88622,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 109169, - "end": 109181, + "start": 109318, + "end": 109330, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 32 }, "end": { - "line": 2779, + "line": 2781, "column": 44 } }, @@ -88522,29 +88638,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 109170, - "end": 109181, + "start": 109319, + "end": 109330, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 33 }, "end": { - "line": 2779, + "line": 2781, "column": 44 } }, "object": { "type": "Identifier", - "start": 109170, - "end": 109173, + "start": 109319, + "end": 109322, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 33 }, "end": { - "line": 2779, + "line": 2781, "column": 36 }, "identifierName": "cfg" @@ -88553,15 +88669,15 @@ }, "property": { "type": "Identifier", - "start": 109174, - "end": 109181, + "start": 109323, + "end": 109330, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 37 }, "end": { - "line": 2779, + "line": 2781, "column": 44 }, "identifierName": "indices" @@ -88578,43 +88694,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 109185, - "end": 109211, + "start": 109334, + "end": 109360, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 48 }, "end": { - "line": 2779, + "line": 2781, "column": 74 } }, "left": { "type": "MemberExpression", - "start": 109185, - "end": 109198, + "start": 109334, + "end": 109347, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 48 }, "end": { - "line": 2779, + "line": 2781, "column": 61 } }, "object": { "type": "Identifier", - "start": 109185, - "end": 109188, + "start": 109334, + "end": 109337, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 48 }, "end": { - "line": 2779, + "line": 2781, "column": 51 }, "identifierName": "cfg" @@ -88623,15 +88739,15 @@ }, "property": { "type": "Identifier", - "start": 109189, - "end": 109198, + "start": 109338, + "end": 109347, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 52 }, "end": { - "line": 2779, + "line": 2781, "column": 61 }, "identifierName": "primitive" @@ -88643,15 +88759,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 109203, - "end": 109211, + "start": 109352, + "end": 109360, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 66 }, "end": { - "line": 2779, + "line": 2781, "column": 74 } }, @@ -88665,73 +88781,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 109213, - "end": 109431, + "start": 109362, + "end": 109580, "loc": { "start": { - "line": 2779, + "line": 2781, "column": 76 }, "end": { - "line": 2783, + "line": 2785, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 109231, - "end": 109283, + "start": 109380, + "end": 109432, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 16 }, "end": { - "line": 2780, + "line": 2782, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 109231, - "end": 109283, + "start": 109380, + "end": 109432, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 16 }, "end": { - "line": 2780, + "line": 2782, "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 109231, - "end": 109242, + "start": 109380, + "end": 109391, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 16 }, "end": { - "line": 2780, + "line": 2782, "column": 27 } }, "object": { "type": "Identifier", - "start": 109231, - "end": 109234, + "start": 109380, + "end": 109383, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 16 }, "end": { - "line": 2780, + "line": 2782, "column": 19 }, "identifierName": "cfg" @@ -88740,15 +88856,15 @@ }, "property": { "type": "Identifier", - "start": 109235, - "end": 109242, + "start": 109384, + "end": 109391, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 20 }, "end": { - "line": 2780, + "line": 2782, "column": 27 }, "identifierName": "indices" @@ -88759,58 +88875,58 @@ }, "right": { "type": "CallExpression", - "start": 109245, - "end": 109283, + "start": 109394, + "end": 109432, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 30 }, "end": { - "line": 2780, + "line": 2782, "column": 68 } }, "callee": { "type": "MemberExpression", - "start": 109245, - "end": 109271, + "start": 109394, + "end": 109420, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 30 }, "end": { - "line": 2780, + "line": 2782, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 109245, - "end": 109249, + "start": 109394, + "end": 109398, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 30 }, "end": { - "line": 2780, + "line": 2782, "column": 34 } } }, "property": { "type": "Identifier", - "start": 109250, - "end": 109271, + "start": 109399, + "end": 109420, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 35 }, "end": { - "line": 2780, + "line": 2782, "column": 56 }, "identifierName": "_createDefaultIndices" @@ -88822,15 +88938,15 @@ "arguments": [ { "type": "Identifier", - "start": 109272, - "end": 109282, + "start": 109421, + "end": 109431, "loc": { "start": { - "line": 2780, + "line": 2782, "column": 57 }, "end": { - "line": 2780, + "line": 2782, "column": 67 }, "identifierName": "numIndices" @@ -88843,72 +88959,72 @@ }, { "type": "ExpressionStatement", - "start": 109300, - "end": 109387, + "start": 109449, + "end": 109536, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 16 }, "end": { - "line": 2781, + "line": 2783, "column": 103 } }, "expression": { "type": "CallExpression", - "start": 109300, - "end": 109386, + "start": 109449, + "end": 109535, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 16 }, "end": { - "line": 2781, + "line": 2783, "column": 102 } }, "callee": { "type": "MemberExpression", - "start": 109300, - "end": 109310, + "start": 109449, + "end": 109459, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 16 }, "end": { - "line": 2781, + "line": 2783, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 109300, - "end": 109304, + "start": 109449, + "end": 109453, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 16 }, "end": { - "line": 2781, + "line": 2783, "column": 20 } } }, "property": { "type": "Identifier", - "start": 109305, - "end": 109310, + "start": 109454, + "end": 109459, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 21 }, "end": { - "line": 2781, + "line": 2783, "column": 26 }, "identifierName": "error" @@ -88920,44 +89036,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 109311, - "end": 109385, + "start": 109460, + "end": 109534, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 27 }, "end": { - "line": 2781, + "line": 2783, "column": 101 } }, "expressions": [ { "type": "MemberExpression", - "start": 109353, - "end": 109366, + "start": 109502, + "end": 109515, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 69 }, "end": { - "line": 2781, + "line": 2783, "column": 82 } }, "object": { "type": "Identifier", - "start": 109353, - "end": 109356, + "start": 109502, + "end": 109505, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 69 }, "end": { - "line": 2781, + "line": 2783, "column": 72 }, "identifierName": "cfg" @@ -88966,15 +89082,15 @@ }, "property": { "type": "Identifier", - "start": 109357, - "end": 109366, + "start": 109506, + "end": 109515, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 73 }, "end": { - "line": 2781, + "line": 2783, "column": 82 }, "identifierName": "primitive" @@ -88987,15 +89103,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 109312, - "end": 109351, + "start": 109461, + "end": 109500, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 28 }, "end": { - "line": 2781, + "line": 2783, "column": 67 } }, @@ -89007,15 +89123,15 @@ }, { "type": "TemplateElement", - "start": 109367, - "end": 109384, + "start": 109516, + "end": 109533, "loc": { "start": { - "line": 2781, + "line": 2783, "column": 83 }, "end": { - "line": 2781, + "line": 2783, "column": 100 } }, @@ -89032,29 +89148,29 @@ }, { "type": "ReturnStatement", - "start": 109404, - "end": 109417, + "start": 109553, + "end": 109566, "loc": { "start": { - "line": 2782, + "line": 2784, "column": 16 }, "end": { - "line": 2782, + "line": 2784, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 109411, - "end": 109416, + "start": 109560, + "end": 109565, "loc": { "start": { - "line": 2782, + "line": 2784, "column": 23 }, "end": { - "line": 2782, + "line": 2784, "column": 28 } }, @@ -89068,99 +89184,99 @@ }, { "type": "IfStatement", - "start": 109444, - "end": 109743, + "start": 109593, + "end": 109892, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 12 }, "end": { - "line": 2787, + "line": 2789, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 109448, - "end": 109565, + "start": 109597, + "end": 109714, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 16 }, "end": { - "line": 2784, + "line": 2786, "column": 133 } }, "left": { "type": "LogicalExpression", - "start": 109449, - "end": 109504, + "start": 109598, + "end": 109653, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 17 }, "end": { - "line": 2784, + "line": 2786, "column": 72 } }, "left": { "type": "LogicalExpression", - "start": 109449, - "end": 109491, + "start": 109598, + "end": 109640, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 17 }, "end": { - "line": 2784, + "line": 2786, "column": 59 } }, "left": { "type": "LogicalExpression", - "start": 109449, - "end": 109475, + "start": 109598, + "end": 109624, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 17 }, "end": { - "line": 2784, + "line": 2786, "column": 43 } }, "left": { "type": "MemberExpression", - "start": 109449, - "end": 109459, + "start": 109598, + "end": 109608, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 17 }, "end": { - "line": 2784, + "line": 2786, "column": 27 } }, "object": { "type": "Identifier", - "start": 109449, - "end": 109452, + "start": 109598, + "end": 109601, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 17 }, "end": { - "line": 2784, + "line": 2786, "column": 20 }, "identifierName": "cfg" @@ -89169,15 +89285,15 @@ }, "property": { "type": "Identifier", - "start": 109453, - "end": 109459, + "start": 109602, + "end": 109608, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 21 }, "end": { - "line": 2784, + "line": 2786, "column": 27 }, "identifierName": "matrix" @@ -89189,29 +89305,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 109463, - "end": 109475, + "start": 109612, + "end": 109624, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 31 }, "end": { - "line": 2784, + "line": 2786, "column": 43 } }, "object": { "type": "Identifier", - "start": 109463, - "end": 109466, + "start": 109612, + "end": 109615, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 31 }, "end": { - "line": 2784, + "line": 2786, "column": 34 }, "identifierName": "cfg" @@ -89220,15 +89336,15 @@ }, "property": { "type": "Identifier", - "start": 109467, - "end": 109475, + "start": 109616, + "end": 109624, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 35 }, "end": { - "line": 2784, + "line": 2786, "column": 43 }, "identifierName": "position" @@ -89241,29 +89357,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 109479, - "end": 109491, + "start": 109628, + "end": 109640, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 47 }, "end": { - "line": 2784, + "line": 2786, "column": 59 } }, "object": { "type": "Identifier", - "start": 109479, - "end": 109482, + "start": 109628, + "end": 109631, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 47 }, "end": { - "line": 2784, + "line": 2786, "column": 50 }, "identifierName": "cfg" @@ -89272,15 +89388,15 @@ }, "property": { "type": "Identifier", - "start": 109483, - "end": 109491, + "start": 109632, + "end": 109640, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 51 }, "end": { - "line": 2784, + "line": 2786, "column": 59 }, "identifierName": "rotation" @@ -89293,29 +89409,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 109495, - "end": 109504, + "start": 109644, + "end": 109653, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 63 }, "end": { - "line": 2784, + "line": 2786, "column": 72 } }, "object": { "type": "Identifier", - "start": 109495, - "end": 109498, + "start": 109644, + "end": 109647, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 63 }, "end": { - "line": 2784, + "line": 2786, "column": 66 }, "identifierName": "cfg" @@ -89324,15 +89440,15 @@ }, "property": { "type": "Identifier", - "start": 109499, - "end": 109504, + "start": 109648, + "end": 109653, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 67 }, "end": { - "line": 2784, + "line": 2786, "column": 72 }, "identifierName": "scale" @@ -89343,49 +89459,49 @@ }, "extra": { "parenthesized": true, - "parenStart": 109448 + "parenStart": 109597 } }, "operator": "&&", "right": { "type": "LogicalExpression", - "start": 109510, - "end": 109564, + "start": 109659, + "end": 109713, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 78 }, "end": { - "line": 2784, + "line": 2786, "column": 132 } }, "left": { "type": "MemberExpression", - "start": 109510, - "end": 109533, + "start": 109659, + "end": 109682, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 78 }, "end": { - "line": 2784, + "line": 2786, "column": 101 } }, "object": { "type": "Identifier", - "start": 109510, - "end": 109513, + "start": 109659, + "end": 109662, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 78 }, "end": { - "line": 2784, + "line": 2786, "column": 81 }, "identifierName": "cfg" @@ -89394,15 +89510,15 @@ }, "property": { "type": "Identifier", - "start": 109514, - "end": 109533, + "start": 109663, + "end": 109682, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 82 }, "end": { - "line": 2784, + "line": 2786, "column": 101 }, "identifierName": "positionsCompressed" @@ -89414,29 +89530,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 109537, - "end": 109564, + "start": 109686, + "end": 109713, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 105 }, "end": { - "line": 2784, + "line": 2786, "column": 132 } }, "object": { "type": "Identifier", - "start": 109537, - "end": 109540, + "start": 109686, + "end": 109689, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 105 }, "end": { - "line": 2784, + "line": 2786, "column": 108 }, "identifierName": "cfg" @@ -89445,15 +89561,15 @@ }, "property": { "type": "Identifier", - "start": 109541, - "end": 109564, + "start": 109690, + "end": 109713, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 109 }, "end": { - "line": 2784, + "line": 2786, "column": 132 }, "identifierName": "positionsDecodeBoundary" @@ -89464,93 +89580,93 @@ }, "extra": { "parenthesized": true, - "parenStart": 109509 + "parenStart": 109658 } } }, "consequent": { "type": "BlockStatement", - "start": 109567, - "end": 109743, + "start": 109716, + "end": 109892, "loc": { "start": { - "line": 2784, + "line": 2786, "column": 135 }, "end": { - "line": 2787, + "line": 2789, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 109585, - "end": 109699, + "start": 109734, + "end": 109848, "loc": { "start": { - "line": 2785, + "line": 2787, "column": 16 }, "end": { - "line": 2785, + "line": 2787, "column": 130 } }, "expression": { "type": "CallExpression", - "start": 109585, - "end": 109698, + "start": 109734, + "end": 109847, "loc": { "start": { - "line": 2785, + "line": 2787, "column": 16 }, "end": { - "line": 2785, + "line": 2787, "column": 129 } }, "callee": { "type": "MemberExpression", - "start": 109585, - "end": 109595, + "start": 109734, + "end": 109744, "loc": { "start": { - "line": 2785, + "line": 2787, "column": 16 }, "end": { - "line": 2785, + "line": 2787, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 109585, - "end": 109589, + "start": 109734, + "end": 109738, "loc": { "start": { - "line": 2785, + "line": 2787, "column": 16 }, "end": { - "line": 2785, + "line": 2787, "column": 20 } } }, "property": { "type": "Identifier", - "start": 109590, - "end": 109595, + "start": 109739, + "end": 109744, "loc": { "start": { - "line": 2785, + "line": 2787, "column": 21 }, "end": { - "line": 2785, + "line": 2787, "column": 26 }, "identifierName": "error" @@ -89562,15 +89678,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 109596, - "end": 109697, + "start": 109745, + "end": 109846, "loc": { "start": { - "line": 2785, + "line": 2787, "column": 27 }, "end": { - "line": 2785, + "line": 2787, "column": 128 } }, @@ -89585,29 +89701,29 @@ }, { "type": "ReturnStatement", - "start": 109716, - "end": 109729, + "start": 109865, + "end": 109878, "loc": { "start": { - "line": 2786, + "line": 2788, "column": 16 }, "end": { - "line": 2786, + "line": 2788, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 109723, - "end": 109728, + "start": 109872, + "end": 109877, "loc": { "start": { - "line": 2786, + "line": 2788, "column": 23 }, "end": { - "line": 2786, + "line": 2788, "column": 28 } }, @@ -89621,44 +89737,44 @@ }, { "type": "VariableDeclaration", - "start": 109757, - "end": 109967, + "start": 109906, + "end": 110116, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 12 }, "end": { - "line": 2792, + "line": 2794, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 109763, - "end": 109966, + "start": 109912, + "end": 110115, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 18 }, "end": { - "line": 2792, + "line": 2794, "column": 38 } }, "id": { "type": "Identifier", - "start": 109763, - "end": 109769, + "start": 109912, + "end": 109918, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 18 }, "end": { - "line": 2789, + "line": 2791, "column": 24 }, "identifierName": "useDTX" @@ -89667,43 +89783,43 @@ }, "init": { "type": "LogicalExpression", - "start": 109772, - "end": 109966, + "start": 109921, + "end": 110115, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 27 }, "end": { - "line": 2792, + "line": 2794, "column": 38 } }, "left": { "type": "LogicalExpression", - "start": 109773, - "end": 109926, + "start": 109922, + "end": 110075, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 28 }, "end": { - "line": 2791, + "line": 2793, "column": 51 } }, "left": { "type": "UnaryExpression", - "start": 109773, - "end": 109791, + "start": 109922, + "end": 109940, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 28 }, "end": { - "line": 2789, + "line": 2791, "column": 46 } }, @@ -89711,15 +89827,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 109774, - "end": 109791, + "start": 109923, + "end": 109940, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 29 }, "end": { - "line": 2789, + "line": 2791, "column": 46 } }, @@ -89727,44 +89843,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 109775, - "end": 109791, + "start": 109924, + "end": 109940, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 30 }, "end": { - "line": 2789, + "line": 2791, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 109775, - "end": 109779, + "start": 109924, + "end": 109928, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 30 }, "end": { - "line": 2789, + "line": 2791, "column": 34 } } }, "property": { "type": "Identifier", - "start": 109780, - "end": 109791, + "start": 109929, + "end": 109940, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 35 }, "end": { - "line": 2789, + "line": 2791, "column": 46 }, "identifierName": "_dtxEnabled" @@ -89784,71 +89900,71 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 109796, - "end": 109925, + "start": 109945, + "end": 110074, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 51 }, "end": { - "line": 2791, + "line": 2793, "column": 50 } }, "left": { "type": "LogicalExpression", - "start": 109796, - "end": 109874, + "start": 109945, + "end": 110023, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 51 }, "end": { - "line": 2790, + "line": 2792, "column": 48 } }, "left": { "type": "BinaryExpression", - "start": 109796, - "end": 109825, + "start": 109945, + "end": 109974, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 51 }, "end": { - "line": 2789, + "line": 2791, "column": 80 } }, "left": { "type": "MemberExpression", - "start": 109796, - "end": 109809, + "start": 109945, + "end": 109958, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 51 }, "end": { - "line": 2789, + "line": 2791, "column": 64 } }, "object": { "type": "Identifier", - "start": 109796, - "end": 109799, + "start": 109945, + "end": 109948, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 51 }, "end": { - "line": 2789, + "line": 2791, "column": 54 }, "identifierName": "cfg" @@ -89857,15 +89973,15 @@ }, "property": { "type": "Identifier", - "start": 109800, - "end": 109809, + "start": 109949, + "end": 109958, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 55 }, "end": { - "line": 2789, + "line": 2791, "column": 64 }, "identifierName": "primitive" @@ -89877,15 +89993,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 109814, - "end": 109825, + "start": 109963, + "end": 109974, "loc": { "start": { - "line": 2789, + "line": 2791, "column": 69 }, "end": { - "line": 2789, + "line": 2791, "column": 80 } }, @@ -89899,43 +90015,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 109849, - "end": 109874, + "start": 109998, + "end": 110023, "loc": { "start": { - "line": 2790, + "line": 2792, "column": 23 }, "end": { - "line": 2790, + "line": 2792, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 109849, - "end": 109862, + "start": 109998, + "end": 110011, "loc": { "start": { - "line": 2790, + "line": 2792, "column": 23 }, "end": { - "line": 2790, + "line": 2792, "column": 36 } }, "object": { "type": "Identifier", - "start": 109849, - "end": 109852, + "start": 109998, + "end": 110001, "loc": { "start": { - "line": 2790, + "line": 2792, "column": 23 }, "end": { - "line": 2790, + "line": 2792, "column": 26 }, "identifierName": "cfg" @@ -89944,15 +90060,15 @@ }, "property": { "type": "Identifier", - "start": 109853, - "end": 109862, + "start": 110002, + "end": 110011, "loc": { "start": { - "line": 2790, + "line": 2792, "column": 27 }, "end": { - "line": 2790, + "line": 2792, "column": 36 }, "identifierName": "primitive" @@ -89964,15 +90080,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 109867, - "end": 109874, + "start": 110016, + "end": 110023, "loc": { "start": { - "line": 2790, + "line": 2792, "column": 41 }, "end": { - "line": 2790, + "line": 2792, "column": 48 } }, @@ -89987,43 +90103,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 109898, - "end": 109925, + "start": 110047, + "end": 110074, "loc": { "start": { - "line": 2791, + "line": 2793, "column": 23 }, "end": { - "line": 2791, + "line": 2793, "column": 50 } }, "left": { "type": "MemberExpression", - "start": 109898, - "end": 109911, + "start": 110047, + "end": 110060, "loc": { "start": { - "line": 2791, + "line": 2793, "column": 23 }, "end": { - "line": 2791, + "line": 2793, "column": 36 } }, "object": { "type": "Identifier", - "start": 109898, - "end": 109901, + "start": 110047, + "end": 110050, "loc": { "start": { - "line": 2791, + "line": 2793, "column": 23 }, "end": { - "line": 2791, + "line": 2793, "column": 26 }, "identifierName": "cfg" @@ -90032,15 +90148,15 @@ }, "property": { "type": "Identifier", - "start": 109902, - "end": 109911, + "start": 110051, + "end": 110060, "loc": { "start": { - "line": 2791, + "line": 2793, "column": 27 }, "end": { - "line": 2791, + "line": 2793, "column": 36 }, "identifierName": "primitive" @@ -90052,15 +90168,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 109916, - "end": 109925, + "start": 110065, + "end": 110074, "loc": { "start": { - "line": 2791, + "line": 2793, "column": 41 }, "end": { - "line": 2791, + "line": 2793, "column": 50 } }, @@ -90073,26 +90189,26 @@ }, "extra": { "parenthesized": true, - "parenStart": 109795 + "parenStart": 109944 } }, "extra": { "parenthesized": true, - "parenStart": 109772 + "parenStart": 109921 } }, "operator": "&&", "right": { "type": "UnaryExpression", - "start": 109948, - "end": 109965, + "start": 110097, + "end": 110114, "loc": { "start": { - "line": 2792, + "line": 2794, "column": 20 }, "end": { - "line": 2792, + "line": 2794, "column": 37 } }, @@ -90100,29 +90216,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 109949, - "end": 109965, + "start": 110098, + "end": 110114, "loc": { "start": { - "line": 2792, + "line": 2794, "column": 21 }, "end": { - "line": 2792, + "line": 2794, "column": 37 } }, "object": { "type": "Identifier", - "start": 109949, - "end": 109952, + "start": 110098, + "end": 110101, "loc": { "start": { - "line": 2792, + "line": 2794, "column": 21 }, "end": { - "line": 2792, + "line": 2794, "column": 24 }, "identifierName": "cfg" @@ -90131,15 +90247,15 @@ }, "property": { "type": "Identifier", - "start": 109953, - "end": 109965, + "start": 110102, + "end": 110114, "loc": { "start": { - "line": 2792, + "line": 2794, "column": 25 }, "end": { - "line": 2792, + "line": 2794, "column": 37 }, "identifierName": "textureSetId" @@ -90151,7 +90267,7 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 109947 + "parenStart": 110096 } } } @@ -90161,58 +90277,58 @@ }, { "type": "ExpressionStatement", - "start": 109981, - "end": 110074, + "start": 110130, + "end": 110223, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 12 }, "end": { - "line": 2794, + "line": 2796, "column": 105 } }, "expression": { "type": "AssignmentExpression", - "start": 109981, - "end": 110073, + "start": 110130, + "end": 110222, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 12 }, "end": { - "line": 2794, + "line": 2796, "column": 104 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 109981, - "end": 109991, + "start": 110130, + "end": 110140, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 12 }, "end": { - "line": 2794, + "line": 2796, "column": 22 } }, "object": { "type": "Identifier", - "start": 109981, - "end": 109984, + "start": 110130, + "end": 110133, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 12 }, "end": { - "line": 2794, + "line": 2796, "column": 15 }, "identifierName": "cfg" @@ -90221,15 +90337,15 @@ }, "property": { "type": "Identifier", - "start": 109985, - "end": 109991, + "start": 110134, + "end": 110140, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 16 }, "end": { - "line": 2794, + "line": 2796, "column": 22 }, "identifierName": "origin" @@ -90240,43 +90356,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 109994, - "end": 110073, + "start": 110143, + "end": 110222, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 25 }, "end": { - "line": 2794, + "line": 2796, "column": 104 } }, "test": { "type": "MemberExpression", - "start": 109994, - "end": 110004, + "start": 110143, + "end": 110153, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 25 }, "end": { - "line": 2794, + "line": 2796, "column": 35 } }, "object": { "type": "Identifier", - "start": 109994, - "end": 109997, + "start": 110143, + "end": 110146, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 25 }, "end": { - "line": 2794, + "line": 2796, "column": 28 }, "identifierName": "cfg" @@ -90285,15 +90401,15 @@ }, "property": { "type": "Identifier", - "start": 109998, - "end": 110004, + "start": 110147, + "end": 110153, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 29 }, "end": { - "line": 2794, + "line": 2796, "column": 35 }, "identifierName": "origin" @@ -90304,43 +90420,43 @@ }, "consequent": { "type": "CallExpression", - "start": 110007, - "end": 110058, + "start": 110156, + "end": 110207, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 38 }, "end": { - "line": 2794, + "line": 2796, "column": 89 } }, "callee": { "type": "MemberExpression", - "start": 110007, - "end": 110019, + "start": 110156, + "end": 110168, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 38 }, "end": { - "line": 2794, + "line": 2796, "column": 50 } }, "object": { "type": "Identifier", - "start": 110007, - "end": 110011, + "start": 110156, + "end": 110160, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 38 }, "end": { - "line": 2794, + "line": 2796, "column": 42 }, "identifierName": "math" @@ -90349,15 +90465,15 @@ }, "property": { "type": "Identifier", - "start": 110012, - "end": 110019, + "start": 110161, + "end": 110168, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 43 }, "end": { - "line": 2794, + "line": 2796, "column": 50 }, "identifierName": "addVec3" @@ -90369,44 +90485,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 110020, - "end": 110032, + "start": 110169, + "end": 110181, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 51 }, "end": { - "line": 2794, + "line": 2796, "column": 63 } }, "object": { "type": "ThisExpression", - "start": 110020, - "end": 110024, + "start": 110169, + "end": 110173, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 51 }, "end": { - "line": 2794, + "line": 2796, "column": 55 } } }, "property": { "type": "Identifier", - "start": 110025, - "end": 110032, + "start": 110174, + "end": 110181, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 56 }, "end": { - "line": 2794, + "line": 2796, "column": 63 }, "identifierName": "_origin" @@ -90417,29 +90533,29 @@ }, { "type": "MemberExpression", - "start": 110034, - "end": 110044, + "start": 110183, + "end": 110193, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 65 }, "end": { - "line": 2794, + "line": 2796, "column": 75 } }, "object": { "type": "Identifier", - "start": 110034, - "end": 110037, + "start": 110183, + "end": 110186, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 65 }, "end": { - "line": 2794, + "line": 2796, "column": 68 }, "identifierName": "cfg" @@ -90448,15 +90564,15 @@ }, "property": { "type": "Identifier", - "start": 110038, - "end": 110044, + "start": 110187, + "end": 110193, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 69 }, "end": { - "line": 2794, + "line": 2796, "column": 75 }, "identifierName": "origin" @@ -90467,43 +90583,43 @@ }, { "type": "CallExpression", - "start": 110046, - "end": 110057, + "start": 110195, + "end": 110206, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 77 }, "end": { - "line": 2794, + "line": 2796, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 110046, - "end": 110055, + "start": 110195, + "end": 110204, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 77 }, "end": { - "line": 2794, + "line": 2796, "column": 86 } }, "object": { "type": "Identifier", - "start": 110046, - "end": 110050, + "start": 110195, + "end": 110199, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 77 }, "end": { - "line": 2794, + "line": 2796, "column": 81 }, "identifierName": "math" @@ -90512,15 +90628,15 @@ }, "property": { "type": "Identifier", - "start": 110051, - "end": 110055, + "start": 110200, + "end": 110204, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 82 }, "end": { - "line": 2794, + "line": 2796, "column": 86 }, "identifierName": "vec3" @@ -90535,44 +90651,44 @@ }, "alternate": { "type": "MemberExpression", - "start": 110061, - "end": 110073, + "start": 110210, + "end": 110222, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 92 }, "end": { - "line": 2794, + "line": 2796, "column": 104 } }, "object": { "type": "ThisExpression", - "start": 110061, - "end": 110065, + "start": 110210, + "end": 110214, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 92 }, "end": { - "line": 2794, + "line": 2796, "column": 96 } } }, "property": { "type": "Identifier", - "start": 110066, - "end": 110073, + "start": 110215, + "end": 110222, "loc": { "start": { - "line": 2794, + "line": 2796, "column": 97 }, "end": { - "line": 2794, + "line": 2796, "column": 104 }, "identifierName": "_origin" @@ -90587,15 +90703,15 @@ { "type": "CommentLine", "value": " MATRIX - optional for batching", - "start": 110088, - "end": 110121, + "start": 110237, + "end": 110270, "loc": { "start": { - "line": 2796, + "line": 2798, "column": 12 }, "end": { - "line": 2796, + "line": 2798, "column": 45 } } @@ -90604,43 +90720,43 @@ }, { "type": "IfStatement", - "start": 110135, - "end": 110649, + "start": 110284, + "end": 110955, "loc": { "start": { - "line": 2798, + "line": 2800, "column": 12 }, "end": { - "line": 2806, + "line": 2811, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 110139, - "end": 110149, + "start": 110288, + "end": 110298, "loc": { "start": { - "line": 2798, + "line": 2800, "column": 16 }, "end": { - "line": 2798, + "line": 2800, "column": 26 } }, "object": { "type": "Identifier", - "start": 110139, - "end": 110142, + "start": 110288, + "end": 110291, "loc": { "start": { - "line": 2798, + "line": 2800, "column": 16 }, "end": { - "line": 2798, + "line": 2800, "column": 19 }, "identifierName": "cfg" @@ -90650,15 +90766,15 @@ }, "property": { "type": "Identifier", - "start": 110143, - "end": 110149, + "start": 110292, + "end": 110298, "loc": { "start": { - "line": 2798, + "line": 2800, "column": 20 }, "end": { - "line": 2798, + "line": 2800, "column": 26 }, "identifierName": "matrix" @@ -90670,73 +90786,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 110151, - "end": 110211, + "start": 110300, + "end": 110360, "loc": { "start": { - "line": 2798, + "line": 2800, "column": 28 }, "end": { - "line": 2800, + "line": 2802, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 110169, - "end": 110197, + "start": 110318, + "end": 110346, "loc": { "start": { - "line": 2799, + "line": 2801, "column": 16 }, "end": { - "line": 2799, + "line": 2801, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 110169, - "end": 110196, + "start": 110318, + "end": 110345, "loc": { "start": { - "line": 2799, + "line": 2801, "column": 16 }, "end": { - "line": 2799, + "line": 2801, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 110169, - "end": 110183, + "start": 110318, + "end": 110332, "loc": { "start": { - "line": 2799, + "line": 2801, "column": 16 }, "end": { - "line": 2799, + "line": 2801, "column": 30 } }, "object": { "type": "Identifier", - "start": 110169, - "end": 110172, + "start": 110318, + "end": 110321, "loc": { "start": { - "line": 2799, + "line": 2801, "column": 16 }, "end": { - "line": 2799, + "line": 2801, "column": 19 }, "identifierName": "cfg" @@ -90745,15 +90861,15 @@ }, "property": { "type": "Identifier", - "start": 110173, - "end": 110183, + "start": 110322, + "end": 110332, "loc": { "start": { - "line": 2799, + "line": 2801, "column": 20 }, "end": { - "line": 2799, + "line": 2801, "column": 30 }, "identifierName": "meshMatrix" @@ -90764,29 +90880,29 @@ }, "right": { "type": "MemberExpression", - "start": 110186, - "end": 110196, + "start": 110335, + "end": 110345, "loc": { "start": { - "line": 2799, + "line": 2801, "column": 33 }, "end": { - "line": 2799, + "line": 2801, "column": 43 } }, "object": { "type": "Identifier", - "start": 110186, - "end": 110189, + "start": 110335, + "end": 110338, "loc": { "start": { - "line": 2799, + "line": 2801, "column": 33 }, "end": { - "line": 2799, + "line": 2801, "column": 36 }, "identifierName": "cfg" @@ -90795,15 +90911,15 @@ }, "property": { "type": "Identifier", - "start": 110190, - "end": 110196, + "start": 110339, + "end": 110345, "loc": { "start": { - "line": 2799, + "line": 2801, "column": 37 }, "end": { - "line": 2799, + "line": 2801, "column": 43 }, "identifierName": "matrix" @@ -90819,123 +90935,189 @@ }, "alternate": { "type": "IfStatement", - "start": 110217, - "end": 110649, + "start": 110366, + "end": 110955, "loc": { "start": { - "line": 2800, + "line": 2802, "column": 19 }, "end": { - "line": 2806, + "line": 2811, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 110221, - "end": 110262, + "start": 110370, + "end": 110429, "loc": { "start": { - "line": 2800, + "line": 2802, "column": 23 }, "end": { - "line": 2800, - "column": 64 + "line": 2802, + "column": 82 } }, "left": { "type": "LogicalExpression", - "start": 110221, - "end": 110246, + "start": 110370, + "end": 110411, "loc": { "start": { - "line": 2800, + "line": 2802, "column": 23 }, "end": { - "line": 2800, - "column": 48 + "line": 2802, + "column": 64 } }, "left": { - "type": "MemberExpression", - "start": 110221, - "end": 110230, + "type": "LogicalExpression", + "start": 110370, + "end": 110395, "loc": { "start": { - "line": 2800, + "line": 2802, "column": 23 }, "end": { - "line": 2800, - "column": 32 + "line": 2802, + "column": 48 } }, - "object": { - "type": "Identifier", - "start": 110221, - "end": 110224, + "left": { + "type": "MemberExpression", + "start": 110370, + "end": 110379, "loc": { "start": { - "line": 2800, + "line": 2802, "column": 23 }, "end": { - "line": 2800, - "column": 26 + "line": 2802, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 110370, + "end": 110373, + "loc": { + "start": { + "line": 2802, + "column": 23 + }, + "end": { + "line": 2802, + "column": 26 + }, + "identifierName": "cfg" }, - "identifierName": "cfg" + "name": "cfg" }, - "name": "cfg" + "property": { + "type": "Identifier", + "start": 110374, + "end": 110379, + "loc": { + "start": { + "line": 2802, + "column": 27 + }, + "end": { + "line": 2802, + "column": 32 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + "computed": false }, - "property": { - "type": "Identifier", - "start": 110225, - "end": 110230, + "operator": "||", + "right": { + "type": "MemberExpression", + "start": 110383, + "end": 110395, "loc": { "start": { - "line": 2800, - "column": 27 + "line": 2802, + "column": 36 }, "end": { - "line": 2800, - "column": 32 + "line": 2802, + "column": 48 + } + }, + "object": { + "type": "Identifier", + "start": 110383, + "end": 110386, + "loc": { + "start": { + "line": 2802, + "column": 36 + }, + "end": { + "line": 2802, + "column": 39 + }, + "identifierName": "cfg" }, - "identifierName": "scale" + "name": "cfg" }, - "name": "scale" - }, - "computed": false + "property": { + "type": "Identifier", + "start": 110387, + "end": 110395, + "loc": { + "start": { + "line": 2802, + "column": 40 + }, + "end": { + "line": 2802, + "column": 48 + }, + "identifierName": "rotation" + }, + "name": "rotation" + }, + "computed": false + } }, "operator": "||", "right": { "type": "MemberExpression", - "start": 110234, - "end": 110246, + "start": 110399, + "end": 110411, "loc": { "start": { - "line": 2800, - "column": 36 + "line": 2802, + "column": 52 }, "end": { - "line": 2800, - "column": 48 + "line": 2802, + "column": 64 } }, "object": { "type": "Identifier", - "start": 110234, - "end": 110237, + "start": 110399, + "end": 110402, "loc": { "start": { - "line": 2800, - "column": 36 + "line": 2802, + "column": 52 }, "end": { - "line": 2800, - "column": 39 + "line": 2802, + "column": 55 }, "identifierName": "cfg" }, @@ -90943,20 +91125,20 @@ }, "property": { "type": "Identifier", - "start": 110238, - "end": 110246, + "start": 110403, + "end": 110411, "loc": { "start": { - "line": 2800, - "column": 40 + "line": 2802, + "column": 56 }, "end": { - "line": 2800, - "column": 48 + "line": 2802, + "column": 64 }, - "identifierName": "rotation" + "identifierName": "position" }, - "name": "rotation" + "name": "position" }, "computed": false } @@ -90964,30 +91146,30 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 110250, - "end": 110262, + "start": 110415, + "end": 110429, "loc": { "start": { - "line": 2800, - "column": 52 + "line": 2802, + "column": 68 }, "end": { - "line": 2800, - "column": 64 + "line": 2802, + "column": 82 } }, "object": { "type": "Identifier", - "start": 110250, - "end": 110253, + "start": 110415, + "end": 110418, "loc": { "start": { - "line": 2800, - "column": 52 + "line": 2802, + "column": 68 }, "end": { - "line": 2800, - "column": 55 + "line": 2802, + "column": 71 }, "identifierName": "cfg" }, @@ -90995,79 +91177,79 @@ }, "property": { "type": "Identifier", - "start": 110254, - "end": 110262, + "start": 110419, + "end": 110429, "loc": { "start": { - "line": 2800, - "column": 56 + "line": 2802, + "column": 72 }, "end": { - "line": 2800, - "column": 64 + "line": 2802, + "column": 82 }, - "identifierName": "position" + "identifierName": "quaternion" }, - "name": "position" + "name": "quaternion" }, "computed": false } }, "consequent": { "type": "BlockStatement", - "start": 110264, - "end": 110649, + "start": 110431, + "end": 110955, "loc": { "start": { - "line": 2800, - "column": 66 + "line": 2802, + "column": 84 }, "end": { - "line": 2806, + "line": 2811, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 110282, - "end": 110323, + "start": 110449, + "end": 110490, "loc": { "start": { - "line": 2801, + "line": 2803, "column": 16 }, "end": { - "line": 2801, + "line": 2803, "column": 57 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 110288, - "end": 110322, + "start": 110455, + "end": 110489, "loc": { "start": { - "line": 2801, + "line": 2803, "column": 22 }, "end": { - "line": 2801, + "line": 2803, "column": 56 } }, "id": { "type": "Identifier", - "start": 110288, - "end": 110293, + "start": 110455, + "end": 110460, "loc": { "start": { - "line": 2801, + "line": 2803, "column": 22 }, "end": { - "line": 2801, + "line": 2803, "column": 27 }, "identifierName": "scale" @@ -91076,43 +91258,43 @@ }, "init": { "type": "LogicalExpression", - "start": 110296, - "end": 110322, + "start": 110463, + "end": 110489, "loc": { "start": { - "line": 2801, + "line": 2803, "column": 30 }, "end": { - "line": 2801, + "line": 2803, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 110296, - "end": 110305, + "start": 110463, + "end": 110472, "loc": { "start": { - "line": 2801, + "line": 2803, "column": 30 }, "end": { - "line": 2801, + "line": 2803, "column": 39 } }, "object": { "type": "Identifier", - "start": 110296, - "end": 110299, + "start": 110463, + "end": 110466, "loc": { "start": { - "line": 2801, + "line": 2803, "column": 30 }, "end": { - "line": 2801, + "line": 2803, "column": 33 }, "identifierName": "cfg" @@ -91121,15 +91303,15 @@ }, "property": { "type": "Identifier", - "start": 110300, - "end": 110305, + "start": 110467, + "end": 110472, "loc": { "start": { - "line": 2801, + "line": 2803, "column": 34 }, "end": { - "line": 2801, + "line": 2803, "column": 39 }, "identifierName": "scale" @@ -91141,15 +91323,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 110309, - "end": 110322, + "start": 110476, + "end": 110489, "loc": { "start": { - "line": 2801, + "line": 2803, "column": 43 }, "end": { - "line": 2801, + "line": 2803, "column": 56 }, "identifierName": "DEFAULT_SCALE" @@ -91163,44 +91345,44 @@ }, { "type": "VariableDeclaration", - "start": 110340, - "end": 110390, + "start": 110507, + "end": 110557, "loc": { "start": { - "line": 2802, + "line": 2804, "column": 16 }, "end": { - "line": 2802, + "line": 2804, "column": 66 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 110346, - "end": 110389, + "start": 110513, + "end": 110556, "loc": { "start": { - "line": 2802, + "line": 2804, "column": 22 }, "end": { - "line": 2802, + "line": 2804, "column": 65 } }, "id": { "type": "Identifier", - "start": 110346, - "end": 110354, + "start": 110513, + "end": 110521, "loc": { "start": { - "line": 2802, + "line": 2804, "column": 22 }, "end": { - "line": 2802, + "line": 2804, "column": 30 }, "identifierName": "position" @@ -91209,43 +91391,43 @@ }, "init": { "type": "LogicalExpression", - "start": 110357, - "end": 110389, + "start": 110524, + "end": 110556, "loc": { "start": { - "line": 2802, + "line": 2804, "column": 33 }, "end": { - "line": 2802, + "line": 2804, "column": 65 } }, "left": { "type": "MemberExpression", - "start": 110357, - "end": 110369, + "start": 110524, + "end": 110536, "loc": { "start": { - "line": 2802, + "line": 2804, "column": 33 }, "end": { - "line": 2802, + "line": 2804, "column": 45 } }, "object": { "type": "Identifier", - "start": 110357, - "end": 110360, + "start": 110524, + "end": 110527, "loc": { "start": { - "line": 2802, + "line": 2804, "column": 33 }, "end": { - "line": 2802, + "line": 2804, "column": 36 }, "identifierName": "cfg" @@ -91254,15 +91436,15 @@ }, "property": { "type": "Identifier", - "start": 110361, - "end": 110369, + "start": 110528, + "end": 110536, "loc": { "start": { - "line": 2802, + "line": 2804, "column": 37 }, "end": { - "line": 2802, + "line": 2804, "column": 45 }, "identifierName": "position" @@ -91274,15 +91456,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 110373, - "end": 110389, + "start": 110540, + "end": 110556, "loc": { "start": { - "line": 2802, + "line": 2804, "column": 49 }, "end": { - "line": 2802, + "line": 2804, "column": 65 }, "identifierName": "DEFAULT_POSITION" @@ -91295,796 +91477,1128 @@ "kind": "const" }, { - "type": "VariableDeclaration", - "start": 110407, - "end": 110457, - "loc": { - "start": { - "line": 2803, - "column": 16 - }, - "end": { - "line": 2803, - "column": 66 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 110413, - "end": 110456, - "loc": { - "start": { - "line": 2803, - "column": 22 - }, - "end": { - "line": 2803, - "column": 65 - } - }, - "id": { - "type": "Identifier", - "start": 110413, - "end": 110421, - "loc": { - "start": { - "line": 2803, - "column": 22 - }, - "end": { - "line": 2803, - "column": 30 - }, - "identifierName": "rotation" - }, - "name": "rotation" - }, - "init": { - "type": "LogicalExpression", - "start": 110424, - "end": 110456, - "loc": { - "start": { - "line": 2803, - "column": 33 - }, - "end": { - "line": 2803, - "column": 65 - } - }, - "left": { - "type": "MemberExpression", - "start": 110424, - "end": 110436, - "loc": { - "start": { - "line": 2803, - "column": 33 - }, - "end": { - "line": 2803, - "column": 45 - } - }, - "object": { - "type": "Identifier", - "start": 110424, - "end": 110427, - "loc": { - "start": { - "line": 2803, - "column": 33 - }, - "end": { - "line": 2803, - "column": 36 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 110428, - "end": 110436, - "loc": { - "start": { - "line": 2803, - "column": 37 - }, - "end": { - "line": 2803, - "column": 45 - }, - "identifierName": "rotation" - }, - "name": "rotation" - }, - "computed": false - }, - "operator": "||", - "right": { - "type": "Identifier", - "start": 110440, - "end": 110456, - "loc": { - "start": { - "line": 2803, - "column": 49 - }, - "end": { - "line": 2803, - "column": 65 - }, - "identifierName": "DEFAULT_ROTATION" - }, - "name": "DEFAULT_ROTATION" - } - } - } - ], - "kind": "const" - }, - { - "type": "ExpressionStatement", - "start": 110474, - "end": 110534, + "type": "IfStatement", + "start": 110574, + "end": 110941, "loc": { "start": { - "line": 2804, + "line": 2805, "column": 16 }, "end": { - "line": 2804, - "column": 76 + "line": 2810, + "column": 17 } }, - "expression": { - "type": "CallExpression", - "start": 110474, - "end": 110533, + "test": { + "type": "MemberExpression", + "start": 110578, + "end": 110590, "loc": { "start": { - "line": 2804, - "column": 16 + "line": 2805, + "column": 20 }, "end": { - "line": 2804, - "column": 75 + "line": 2805, + "column": 32 } }, - "callee": { - "type": "MemberExpression", - "start": 110474, - "end": 110496, + "object": { + "type": "Identifier", + "start": 110578, + "end": 110581, "loc": { "start": { - "line": 2804, - "column": 16 + "line": 2805, + "column": 20 }, "end": { - "line": 2804, - "column": 38 - } - }, - "object": { - "type": "Identifier", - "start": 110474, - "end": 110478, - "loc": { - "start": { - "line": 2804, - "column": 16 - }, - "end": { - "line": 2804, - "column": 20 - }, - "identifierName": "math" - }, - "name": "math" - }, - "property": { - "type": "Identifier", - "start": 110479, - "end": 110496, - "loc": { - "start": { - "line": 2804, - "column": 21 - }, - "end": { - "line": 2804, - "column": 38 - }, - "identifierName": "eulerToQuaternion" + "line": 2805, + "column": 23 }, - "name": "eulerToQuaternion" + "identifierName": "cfg" }, - "computed": false + "name": "cfg" }, - "arguments": [ - { - "type": "Identifier", - "start": 110497, - "end": 110505, - "loc": { - "start": { - "line": 2804, - "column": 39 - }, - "end": { - "line": 2804, - "column": 47 - }, - "identifierName": "rotation" - }, - "name": "rotation" - }, - { - "type": "StringLiteral", - "start": 110507, - "end": 110512, - "loc": { - "start": { - "line": 2804, - "column": 49 - }, - "end": { - "line": 2804, - "column": 54 - } + "property": { + "type": "Identifier", + "start": 110582, + "end": 110590, + "loc": { + "start": { + "line": 2805, + "column": 24 }, - "extra": { - "rawValue": "XYZ", - "raw": "\"XYZ\"" + "end": { + "line": 2805, + "column": 32 }, - "value": "XYZ" + "identifierName": "rotation" }, - { - "type": "Identifier", - "start": 110514, - "end": 110532, - "loc": { - "start": { - "line": 2804, - "column": 56 - }, - "end": { - "line": 2804, - "column": 74 - }, - "identifierName": "DEFAULT_QUATERNION" - }, - "name": "DEFAULT_QUATERNION" - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 110551, - "end": 110635, - "loc": { - "start": { - "line": 2805, - "column": 16 + "name": "rotation" }, - "end": { - "line": 2805, - "column": 100 - } + "computed": false }, - "expression": { - "type": "AssignmentExpression", - "start": 110551, - "end": 110634, + "consequent": { + "type": "BlockStatement", + "start": 110592, + "end": 110793, "loc": { "start": { "line": 2805, - "column": 16 + "column": 34 }, "end": { - "line": 2805, - "column": 99 + "line": 2808, + "column": 17 } }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 110551, - "end": 110565, - "loc": { - "start": { - "line": 2805, - "column": 16 - }, - "end": { - "line": 2805, - "column": 30 - } - }, - "object": { - "type": "Identifier", - "start": 110551, - "end": 110554, - "loc": { - "start": { - "line": 2805, - "column": 16 - }, - "end": { - "line": 2805, - "column": 19 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 110555, - "end": 110565, + "body": [ + { + "type": "ExpressionStatement", + "start": 110614, + "end": 110674, "loc": { "start": { - "line": 2805, + "line": 2806, "column": 20 }, "end": { - "line": 2805, - "column": 30 - }, - "identifierName": "meshMatrix" - }, - "name": "meshMatrix" - }, - "computed": false - }, - "right": { - "type": "CallExpression", - "start": 110568, - "end": 110634, - "loc": { - "start": { - "line": 2805, - "column": 33 - }, - "end": { - "line": 2805, - "column": 99 - } - }, - "callee": { - "type": "MemberExpression", - "start": 110568, - "end": 110584, - "loc": { - "start": { - "line": 2805, - "column": 33 - }, - "end": { - "line": 2805, - "column": 49 + "line": 2806, + "column": 80 } }, - "object": { - "type": "Identifier", - "start": 110568, - "end": 110572, - "loc": { - "start": { - "line": 2805, - "column": 33 - }, - "end": { - "line": 2805, - "column": 37 - }, - "identifierName": "math" - }, - "name": "math" - }, - "property": { - "type": "Identifier", - "start": 110573, - "end": 110584, + "expression": { + "type": "CallExpression", + "start": 110614, + "end": 110673, "loc": { "start": { - "line": 2805, - "column": 38 + "line": 2806, + "column": 20 }, "end": { - "line": 2805, - "column": 49 - }, - "identifierName": "composeMat4" + "line": 2806, + "column": 79 + } }, - "name": "composeMat4" - }, - "computed": false - }, - "arguments": [ - { - "type": "Identifier", - "start": 110585, - "end": 110593, - "loc": { - "start": { - "line": 2805, - "column": 50 - }, - "end": { - "line": 2805, - "column": 58 + "callee": { + "type": "MemberExpression", + "start": 110614, + "end": 110636, + "loc": { + "start": { + "line": 2806, + "column": 20 + }, + "end": { + "line": 2806, + "column": 42 + } }, - "identifierName": "position" - }, - "name": "position" - }, - { - "type": "Identifier", - "start": 110595, - "end": 110613, - "loc": { - "start": { - "line": 2805, - "column": 60 + "object": { + "type": "Identifier", + "start": 110614, + "end": 110618, + "loc": { + "start": { + "line": 2806, + "column": 20 + }, + "end": { + "line": 2806, + "column": 24 + }, + "identifierName": "math" + }, + "name": "math" }, - "end": { - "line": 2805, - "column": 78 + "property": { + "type": "Identifier", + "start": 110619, + "end": 110636, + "loc": { + "start": { + "line": 2806, + "column": 25 + }, + "end": { + "line": 2806, + "column": 42 + }, + "identifierName": "eulerToQuaternion" + }, + "name": "eulerToQuaternion" }, - "identifierName": "DEFAULT_QUATERNION" + "computed": false }, - "name": "DEFAULT_QUATERNION" - }, - { - "type": "Identifier", - "start": 110615, - "end": 110620, - "loc": { - "start": { - "line": 2805, - "column": 80 + "arguments": [ + { + "type": "MemberExpression", + "start": 110637, + "end": 110649, + "loc": { + "start": { + "line": 2806, + "column": 43 + }, + "end": { + "line": 2806, + "column": 55 + } + }, + "object": { + "type": "Identifier", + "start": 110637, + "end": 110640, + "loc": { + "start": { + "line": 2806, + "column": 43 + }, + "end": { + "line": 2806, + "column": 46 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 110641, + "end": 110649, + "loc": { + "start": { + "line": 2806, + "column": 47 + }, + "end": { + "line": 2806, + "column": 55 + }, + "identifierName": "rotation" + }, + "name": "rotation" + }, + "computed": false }, - "end": { - "line": 2805, - "column": 85 + { + "type": "StringLiteral", + "start": 110651, + "end": 110656, + "loc": { + "start": { + "line": 2806, + "column": 57 + }, + "end": { + "line": 2806, + "column": 62 + } + }, + "extra": { + "rawValue": "XYZ", + "raw": "\"XYZ\"" + }, + "value": "XYZ" }, - "identifierName": "scale" + { + "type": "Identifier", + "start": 110658, + "end": 110672, + "loc": { + "start": { + "line": 2806, + "column": 64 + }, + "end": { + "line": 2806, + "column": 78 + }, + "identifierName": "tempQuaternion" + }, + "name": "tempQuaternion" + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 110695, + "end": 110775, + "loc": { + "start": { + "line": 2807, + "column": 20 }, - "name": "scale" + "end": { + "line": 2807, + "column": 100 + } }, - { - "type": "CallExpression", - "start": 110622, - "end": 110633, + "expression": { + "type": "AssignmentExpression", + "start": 110695, + "end": 110774, "loc": { "start": { - "line": 2805, - "column": 87 + "line": 2807, + "column": 20 }, "end": { - "line": 2805, - "column": 98 + "line": 2807, + "column": 99 } }, - "callee": { + "operator": "=", + "left": { "type": "MemberExpression", - "start": 110622, - "end": 110631, + "start": 110695, + "end": 110709, "loc": { "start": { - "line": 2805, - "column": 87 + "line": 2807, + "column": 20 }, "end": { - "line": 2805, - "column": 96 + "line": 2807, + "column": 34 } }, "object": { "type": "Identifier", - "start": 110622, - "end": 110626, + "start": 110695, + "end": 110698, "loc": { "start": { - "line": 2805, - "column": 87 + "line": 2807, + "column": 20 }, "end": { - "line": 2805, - "column": 91 + "line": 2807, + "column": 23 }, - "identifierName": "math" + "identifierName": "cfg" }, - "name": "math" + "name": "cfg" }, "property": { "type": "Identifier", - "start": 110627, - "end": 110631, + "start": 110699, + "end": 110709, "loc": { "start": { - "line": 2805, - "column": 92 + "line": 2807, + "column": 24 }, "end": { - "line": 2805, - "column": 96 + "line": 2807, + "column": 34 }, - "identifierName": "mat4" + "identifierName": "meshMatrix" }, - "name": "mat4" + "name": "meshMatrix" }, "computed": false }, - "arguments": [] + "right": { + "type": "CallExpression", + "start": 110712, + "end": 110774, + "loc": { + "start": { + "line": 2807, + "column": 37 + }, + "end": { + "line": 2807, + "column": 99 + } + }, + "callee": { + "type": "MemberExpression", + "start": 110712, + "end": 110728, + "loc": { + "start": { + "line": 2807, + "column": 37 + }, + "end": { + "line": 2807, + "column": 53 + } + }, + "object": { + "type": "Identifier", + "start": 110712, + "end": 110716, + "loc": { + "start": { + "line": 2807, + "column": 37 + }, + "end": { + "line": 2807, + "column": 41 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 110717, + "end": 110728, + "loc": { + "start": { + "line": 2807, + "column": 42 + }, + "end": { + "line": 2807, + "column": 53 + }, + "identifierName": "composeMat4" + }, + "name": "composeMat4" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 110729, + "end": 110737, + "loc": { + "start": { + "line": 2807, + "column": 54 + }, + "end": { + "line": 2807, + "column": 62 + }, + "identifierName": "position" + }, + "name": "position" + }, + { + "type": "Identifier", + "start": 110739, + "end": 110753, + "loc": { + "start": { + "line": 2807, + "column": 64 + }, + "end": { + "line": 2807, + "column": 78 + }, + "identifierName": "tempQuaternion" + }, + "name": "tempQuaternion" + }, + { + "type": "Identifier", + "start": 110755, + "end": 110760, + "loc": { + "start": { + "line": 2807, + "column": 80 + }, + "end": { + "line": 2807, + "column": 85 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + { + "type": "CallExpression", + "start": 110762, + "end": 110773, + "loc": { + "start": { + "line": 2807, + "column": 87 + }, + "end": { + "line": 2807, + "column": 98 + } + }, + "callee": { + "type": "MemberExpression", + "start": 110762, + "end": 110771, + "loc": { + "start": { + "line": 2807, + "column": 87 + }, + "end": { + "line": 2807, + "column": 96 + } + }, + "object": { + "type": "Identifier", + "start": 110762, + "end": 110766, + "loc": { + "start": { + "line": 2807, + "column": 87 + }, + "end": { + "line": 2807, + "column": 91 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 110767, + "end": 110771, + "loc": { + "start": { + "line": 2807, + "column": 92 + }, + "end": { + "line": 2807, + "column": 96 + }, + "identifierName": "mat4" + }, + "name": "mat4" + }, + "computed": false + }, + "arguments": [] + } + ] + } } - ] - } - } - } - ], - "directives": [] - }, - "alternate": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " MATRIX - optional for batching", - "start": 110088, - "end": 110121, - "loc": { - "start": { - "line": 2796, - "column": 12 - }, - "end": { - "line": 2796, - "column": 45 - } - } - } - ] - }, - { - "type": "IfStatement", - "start": 110663, - "end": 110826, - "loc": { - "start": { - "line": 2808, - "column": 12 - }, - "end": { - "line": 2810, - "column": 13 - } - }, - "test": { - "type": "MemberExpression", - "start": 110667, - "end": 110694, - "loc": { - "start": { - "line": 2808, - "column": 16 - }, - "end": { - "line": 2808, - "column": 43 - } - }, - "object": { - "type": "Identifier", - "start": 110667, - "end": 110670, - "loc": { - "start": { - "line": 2808, - "column": 16 - }, - "end": { - "line": 2808, - "column": 19 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 110671, - "end": 110694, - "loc": { - "start": { - "line": 2808, - "column": 20 - }, - "end": { - "line": 2808, - "column": 43 - }, - "identifierName": "positionsDecodeBoundary" - }, - "name": "positionsDecodeBoundary" - }, - "computed": false - }, - "consequent": { - "type": "BlockStatement", - "start": 110696, - "end": 110826, - "loc": { - "start": { - "line": 2808, - "column": 45 - }, - "end": { - "line": 2810, - "column": 13 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 110714, - "end": 110812, - "loc": { - "start": { - "line": 2809, - "column": 16 - }, - "end": { - "line": 2809, - "column": 114 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 110714, - "end": 110811, - "loc": { - "start": { - "line": 2809, - "column": 16 - }, - "end": { - "line": 2809, - "column": 113 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 110714, - "end": 110739, - "loc": { - "start": { - "line": 2809, - "column": 16 - }, - "end": { - "line": 2809, - "column": 41 } - }, - "object": { - "type": "Identifier", - "start": 110714, - "end": 110717, - "loc": { - "start": { - "line": 2809, - "column": 16 - }, - "end": { - "line": 2809, - "column": 19 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 110718, - "end": 110739, - "loc": { - "start": { - "line": 2809, - "column": 20 - }, - "end": { - "line": 2809, - "column": 41 - }, - "identifierName": "positionsDecodeMatrix" - }, - "name": "positionsDecodeMatrix" - }, - "computed": false + ], + "directives": [] }, - "right": { - "type": "CallExpression", - "start": 110742, - "end": 110811, + "alternate": { + "type": "BlockStatement", + "start": 110799, + "end": 110941, "loc": { "start": { - "line": 2809, - "column": 44 + "line": 2808, + "column": 23 }, "end": { - "line": 2809, - "column": 113 + "line": 2810, + "column": 17 } }, - "callee": { - "type": "Identifier", - "start": 110742, - "end": 110769, - "loc": { - "start": { - "line": 2809, - "column": 44 - }, - "end": { - "line": 2809, - "column": 71 - }, - "identifierName": "createPositionsDecodeMatrix" - }, - "name": "createPositionsDecodeMatrix" - }, - "arguments": [ + "body": [ { - "type": "MemberExpression", - "start": 110770, - "end": 110797, + "type": "ExpressionStatement", + "start": 110821, + "end": 110923, "loc": { "start": { "line": 2809, - "column": 72 + "column": 20 }, "end": { "line": 2809, - "column": 99 + "column": 122 } }, - "object": { - "type": "Identifier", - "start": 110770, - "end": 110773, + "expression": { + "type": "AssignmentExpression", + "start": 110821, + "end": 110922, "loc": { "start": { "line": 2809, - "column": 72 + "column": 20 }, "end": { "line": 2809, - "column": 75 - }, - "identifierName": "cfg" + "column": 121 + } }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 110774, - "end": 110797, - "loc": { - "start": { - "line": 2809, - "column": 76 - }, - "end": { - "line": 2809, - "column": 99 + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 110821, + "end": 110835, + "loc": { + "start": { + "line": 2809, + "column": 20 + }, + "end": { + "line": 2809, + "column": 34 + } + }, + "object": { + "type": "Identifier", + "start": 110821, + "end": 110824, + "loc": { + "start": { + "line": 2809, + "column": 20 + }, + "end": { + "line": 2809, + "column": 23 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 110825, + "end": 110835, + "loc": { + "start": { + "line": 2809, + "column": 24 + }, + "end": { + "line": 2809, + "column": 34 + }, + "identifierName": "meshMatrix" + }, + "name": "meshMatrix" + }, + "computed": false + }, + "right": { + "type": "CallExpression", + "start": 110838, + "end": 110922, + "loc": { + "start": { + "line": 2809, + "column": 37 + }, + "end": { + "line": 2809, + "column": 121 + } + }, + "callee": { + "type": "MemberExpression", + "start": 110838, + "end": 110854, + "loc": { + "start": { + "line": 2809, + "column": 37 + }, + "end": { + "line": 2809, + "column": 53 + } + }, + "object": { + "type": "Identifier", + "start": 110838, + "end": 110842, + "loc": { + "start": { + "line": 2809, + "column": 37 + }, + "end": { + "line": 2809, + "column": 41 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 110843, + "end": 110854, + "loc": { + "start": { + "line": 2809, + "column": 42 + }, + "end": { + "line": 2809, + "column": 53 + }, + "identifierName": "composeMat4" + }, + "name": "composeMat4" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 110855, + "end": 110863, + "loc": { + "start": { + "line": 2809, + "column": 54 + }, + "end": { + "line": 2809, + "column": 62 + }, + "identifierName": "position" + }, + "name": "position" + }, + { + "type": "LogicalExpression", + "start": 110865, + "end": 110901, + "loc": { + "start": { + "line": 2809, + "column": 64 + }, + "end": { + "line": 2809, + "column": 100 + } + }, + "left": { + "type": "MemberExpression", + "start": 110865, + "end": 110879, + "loc": { + "start": { + "line": 2809, + "column": 64 + }, + "end": { + "line": 2809, + "column": 78 + } + }, + "object": { + "type": "Identifier", + "start": 110865, + "end": 110868, + "loc": { + "start": { + "line": 2809, + "column": 64 + }, + "end": { + "line": 2809, + "column": 67 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 110869, + "end": 110879, + "loc": { + "start": { + "line": 2809, + "column": 68 + }, + "end": { + "line": 2809, + "column": 78 + }, + "identifierName": "quaternion" + }, + "name": "quaternion" + }, + "computed": false + }, + "operator": "||", + "right": { + "type": "Identifier", + "start": 110883, + "end": 110901, + "loc": { + "start": { + "line": 2809, + "column": 82 + }, + "end": { + "line": 2809, + "column": 100 + }, + "identifierName": "DEFAULT_QUATERNION" + }, + "name": "DEFAULT_QUATERNION" + } + }, + { + "type": "Identifier", + "start": 110903, + "end": 110908, + "loc": { + "start": { + "line": 2809, + "column": 102 + }, + "end": { + "line": 2809, + "column": 107 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + { + "type": "CallExpression", + "start": 110910, + "end": 110921, + "loc": { + "start": { + "line": 2809, + "column": 109 + }, + "end": { + "line": 2809, + "column": 120 + } + }, + "callee": { + "type": "MemberExpression", + "start": 110910, + "end": 110919, + "loc": { + "start": { + "line": 2809, + "column": 109 + }, + "end": { + "line": 2809, + "column": 118 + } + }, + "object": { + "type": "Identifier", + "start": 110910, + "end": 110914, + "loc": { + "start": { + "line": 2809, + "column": 109 + }, + "end": { + "line": 2809, + "column": 113 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 110915, + "end": 110919, + "loc": { + "start": { + "line": 2809, + "column": 114 + }, + "end": { + "line": 2809, + "column": 118 + }, + "identifierName": "mat4" + }, + "name": "mat4" + }, + "computed": false + }, + "arguments": [] + } + ] + } + } + } + ], + "directives": [] + } + } + ], + "directives": [] + }, + "alternate": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " MATRIX - optional for batching", + "start": 110237, + "end": 110270, + "loc": { + "start": { + "line": 2798, + "column": 12 + }, + "end": { + "line": 2798, + "column": 45 + } + } + } + ] + }, + { + "type": "IfStatement", + "start": 110969, + "end": 111132, + "loc": { + "start": { + "line": 2813, + "column": 12 + }, + "end": { + "line": 2815, + "column": 13 + } + }, + "test": { + "type": "MemberExpression", + "start": 110973, + "end": 111000, + "loc": { + "start": { + "line": 2813, + "column": 16 + }, + "end": { + "line": 2813, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 110973, + "end": 110976, + "loc": { + "start": { + "line": 2813, + "column": 16 + }, + "end": { + "line": 2813, + "column": 19 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 110977, + "end": 111000, + "loc": { + "start": { + "line": 2813, + "column": 20 + }, + "end": { + "line": 2813, + "column": 43 + }, + "identifierName": "positionsDecodeBoundary" + }, + "name": "positionsDecodeBoundary" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 111002, + "end": 111132, + "loc": { + "start": { + "line": 2813, + "column": 45 + }, + "end": { + "line": 2815, + "column": 13 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 111020, + "end": 111118, + "loc": { + "start": { + "line": 2814, + "column": 16 + }, + "end": { + "line": 2814, + "column": 114 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 111020, + "end": 111117, + "loc": { + "start": { + "line": 2814, + "column": 16 + }, + "end": { + "line": 2814, + "column": 113 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 111020, + "end": 111045, + "loc": { + "start": { + "line": 2814, + "column": 16 + }, + "end": { + "line": 2814, + "column": 41 + } + }, + "object": { + "type": "Identifier", + "start": 111020, + "end": 111023, + "loc": { + "start": { + "line": 2814, + "column": 16 + }, + "end": { + "line": 2814, + "column": 19 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 111024, + "end": 111045, + "loc": { + "start": { + "line": 2814, + "column": 20 + }, + "end": { + "line": 2814, + "column": 41 + }, + "identifierName": "positionsDecodeMatrix" + }, + "name": "positionsDecodeMatrix" + }, + "computed": false + }, + "right": { + "type": "CallExpression", + "start": 111048, + "end": 111117, + "loc": { + "start": { + "line": 2814, + "column": 44 + }, + "end": { + "line": 2814, + "column": 113 + } + }, + "callee": { + "type": "Identifier", + "start": 111048, + "end": 111075, + "loc": { + "start": { + "line": 2814, + "column": 44 + }, + "end": { + "line": 2814, + "column": 71 + }, + "identifierName": "createPositionsDecodeMatrix" + }, + "name": "createPositionsDecodeMatrix" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 111076, + "end": 111103, + "loc": { + "start": { + "line": 2814, + "column": 72 + }, + "end": { + "line": 2814, + "column": 99 + } + }, + "object": { + "type": "Identifier", + "start": 111076, + "end": 111079, + "loc": { + "start": { + "line": 2814, + "column": 72 + }, + "end": { + "line": 2814, + "column": 75 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 111080, + "end": 111103, + "loc": { + "start": { + "line": 2814, + "column": 76 + }, + "end": { + "line": 2814, + "column": 99 }, "identifierName": "positionsDecodeBoundary" }, @@ -92094,43 +92608,43 @@ }, { "type": "CallExpression", - "start": 110799, - "end": 110810, + "start": 111105, + "end": 111116, "loc": { "start": { - "line": 2809, + "line": 2814, "column": 101 }, "end": { - "line": 2809, + "line": 2814, "column": 112 } }, "callee": { "type": "MemberExpression", - "start": 110799, - "end": 110808, + "start": 111105, + "end": 111114, "loc": { "start": { - "line": 2809, + "line": 2814, "column": 101 }, "end": { - "line": 2809, + "line": 2814, "column": 110 } }, "object": { "type": "Identifier", - "start": 110799, - "end": 110803, + "start": 111105, + "end": 111109, "loc": { "start": { - "line": 2809, + "line": 2814, "column": 101 }, "end": { - "line": 2809, + "line": 2814, "column": 105 }, "identifierName": "math" @@ -92139,15 +92653,15 @@ }, "property": { "type": "Identifier", - "start": 110804, - "end": 110808, + "start": 111110, + "end": 111114, "loc": { "start": { - "line": 2809, + "line": 2814, "column": 106 }, "end": { - "line": 2809, + "line": 2814, "column": 110 }, "identifierName": "mat4" @@ -92169,29 +92683,29 @@ }, { "type": "IfStatement", - "start": 110840, - "end": 117294, + "start": 111146, + "end": 117600, "loc": { "start": { - "line": 2812, + "line": 2817, "column": 12 }, "end": { - "line": 2955, + "line": 2960, "column": 13 } }, "test": { "type": "Identifier", - "start": 110844, - "end": 110850, + "start": 111150, + "end": 111156, "loc": { "start": { - "line": 2812, + "line": 2817, "column": 16 }, "end": { - "line": 2812, + "line": 2817, "column": 22 }, "identifierName": "useDTX" @@ -92200,73 +92714,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 110852, - "end": 114204, + "start": 111158, + "end": 114510, "loc": { "start": { - "line": 2812, + "line": 2817, "column": 24 }, "end": { - "line": 2889, + "line": 2894, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 110895, - "end": 110910, + "start": 111201, + "end": 111216, "loc": { "start": { - "line": 2816, + "line": 2821, "column": 16 }, "end": { - "line": 2816, + "line": 2821, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 110895, - "end": 110909, + "start": 111201, + "end": 111215, "loc": { "start": { - "line": 2816, + "line": 2821, "column": 16 }, "end": { - "line": 2816, + "line": 2821, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 110895, - "end": 110903, + "start": 111201, + "end": 111209, "loc": { "start": { - "line": 2816, + "line": 2821, "column": 16 }, "end": { - "line": 2816, + "line": 2821, "column": 24 } }, "object": { "type": "Identifier", - "start": 110895, - "end": 110898, + "start": 111201, + "end": 111204, "loc": { "start": { - "line": 2816, + "line": 2821, "column": 16 }, "end": { - "line": 2816, + "line": 2821, "column": 19 }, "identifierName": "cfg" @@ -92276,15 +92790,15 @@ }, "property": { "type": "Identifier", - "start": 110899, - "end": 110903, + "start": 111205, + "end": 111209, "loc": { "start": { - "line": 2816, + "line": 2821, "column": 20 }, "end": { - "line": 2816, + "line": 2821, "column": 24 }, "identifierName": "type" @@ -92296,15 +92810,15 @@ }, "right": { "type": "Identifier", - "start": 110906, - "end": 110909, + "start": 111212, + "end": 111215, "loc": { "start": { - "line": 2816, + "line": 2821, "column": 27 }, "end": { - "line": 2816, + "line": 2821, "column": 30 }, "identifierName": "DTX" @@ -92317,15 +92831,15 @@ { "type": "CommentLine", "value": " DTX", - "start": 110871, - "end": 110877, + "start": 111177, + "end": 111183, "loc": { "start": { - "line": 2814, + "line": 2819, "column": 16 }, "end": { - "line": 2814, + "line": 2819, "column": 22 } } @@ -92335,15 +92849,15 @@ { "type": "CommentLine", "value": " NPR", - "start": 110928, - "end": 110934, + "start": 111234, + "end": 111240, "loc": { "start": { - "line": 2818, + "line": 2823, "column": 16 }, "end": { - "line": 2818, + "line": 2823, "column": 22 } } @@ -92352,58 +92866,58 @@ }, { "type": "ExpressionStatement", - "start": 110952, - "end": 111116, + "start": 111258, + "end": 111422, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 16 }, "end": { - "line": 2820, + "line": 2825, "column": 180 } }, "expression": { "type": "AssignmentExpression", - "start": 110952, - "end": 111115, + "start": 111258, + "end": 111421, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 16 }, "end": { - "line": 2820, + "line": 2825, "column": 179 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 110952, - "end": 110961, + "start": 111258, + "end": 111267, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 16 }, "end": { - "line": 2820, + "line": 2825, "column": 25 } }, "object": { "type": "Identifier", - "start": 110952, - "end": 110955, + "start": 111258, + "end": 111261, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 16 }, "end": { - "line": 2820, + "line": 2825, "column": 19 }, "identifierName": "cfg" @@ -92413,15 +92927,15 @@ }, "property": { "type": "Identifier", - "start": 110956, - "end": 110961, + "start": 111262, + "end": 111267, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 20 }, "end": { - "line": 2820, + "line": 2825, "column": 25 }, "identifierName": "color" @@ -92433,43 +92947,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 110964, - "end": 111115, + "start": 111270, + "end": 111421, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 28 }, "end": { - "line": 2820, + "line": 2825, "column": 179 } }, "test": { "type": "MemberExpression", - "start": 110965, - "end": 110974, + "start": 111271, + "end": 111280, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 29 }, "end": { - "line": 2820, + "line": 2825, "column": 38 } }, "object": { "type": "Identifier", - "start": 110965, - "end": 110968, + "start": 111271, + "end": 111274, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 29 }, "end": { - "line": 2820, + "line": 2825, "column": 32 }, "identifierName": "cfg" @@ -92478,15 +92992,15 @@ }, "property": { "type": "Identifier", - "start": 110969, - "end": 110974, + "start": 111275, + "end": 111280, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 33 }, "end": { - "line": 2820, + "line": 2825, "column": 38 }, "identifierName": "color" @@ -92496,34 +93010,34 @@ "computed": false, "extra": { "parenthesized": true, - "parenStart": 110964 + "parenStart": 111270 } }, "consequent": { "type": "NewExpression", - "start": 110978, - "end": 111090, + "start": 111284, + "end": 111396, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 42 }, "end": { - "line": 2820, + "line": 2825, "column": 154 } }, "callee": { "type": "Identifier", - "start": 110982, - "end": 110992, + "start": 111288, + "end": 111298, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 46 }, "end": { - "line": 2820, + "line": 2825, "column": 56 }, "identifierName": "Uint8Array" @@ -92533,58 +93047,58 @@ "arguments": [ { "type": "ArrayExpression", - "start": 110993, - "end": 111089, + "start": 111299, + "end": 111395, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 57 }, "end": { - "line": 2820, + "line": 2825, "column": 153 } }, "elements": [ { "type": "CallExpression", - "start": 110994, - "end": 111024, + "start": 111300, + "end": 111330, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 58 }, "end": { - "line": 2820, + "line": 2825, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 110994, - "end": 111004, + "start": 111300, + "end": 111310, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 58 }, "end": { - "line": 2820, + "line": 2825, "column": 68 } }, "object": { "type": "Identifier", - "start": 110994, - "end": 110998, + "start": 111300, + "end": 111304, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 58 }, "end": { - "line": 2820, + "line": 2825, "column": 62 }, "identifierName": "Math" @@ -92593,15 +93107,15 @@ }, "property": { "type": "Identifier", - "start": 110999, - "end": 111004, + "start": 111305, + "end": 111310, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 63 }, "end": { - "line": 2820, + "line": 2825, "column": 68 }, "identifierName": "floor" @@ -92613,57 +93127,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 111005, - "end": 111023, + "start": 111311, + "end": 111329, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 69 }, "end": { - "line": 2820, + "line": 2825, "column": 87 } }, "left": { "type": "MemberExpression", - "start": 111005, - "end": 111017, + "start": 111311, + "end": 111323, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 69 }, "end": { - "line": 2820, + "line": 2825, "column": 81 } }, "object": { "type": "MemberExpression", - "start": 111005, - "end": 111014, + "start": 111311, + "end": 111320, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 69 }, "end": { - "line": 2820, + "line": 2825, "column": 78 } }, "object": { "type": "Identifier", - "start": 111005, - "end": 111008, + "start": 111311, + "end": 111314, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 69 }, "end": { - "line": 2820, + "line": 2825, "column": 72 }, "identifierName": "cfg" @@ -92672,15 +93186,15 @@ }, "property": { "type": "Identifier", - "start": 111009, - "end": 111014, + "start": 111315, + "end": 111320, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 73 }, "end": { - "line": 2820, + "line": 2825, "column": 78 }, "identifierName": "color" @@ -92691,15 +93205,15 @@ }, "property": { "type": "NumericLiteral", - "start": 111015, - "end": 111016, + "start": 111321, + "end": 111322, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 79 }, "end": { - "line": 2820, + "line": 2825, "column": 80 } }, @@ -92714,15 +93228,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 111020, - "end": 111023, + "start": 111326, + "end": 111329, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 84 }, "end": { - "line": 2820, + "line": 2825, "column": 87 } }, @@ -92737,43 +93251,43 @@ }, { "type": "CallExpression", - "start": 111026, - "end": 111056, + "start": 111332, + "end": 111362, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 90 }, "end": { - "line": 2820, + "line": 2825, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 111026, - "end": 111036, + "start": 111332, + "end": 111342, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 90 }, "end": { - "line": 2820, + "line": 2825, "column": 100 } }, "object": { "type": "Identifier", - "start": 111026, - "end": 111030, + "start": 111332, + "end": 111336, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 90 }, "end": { - "line": 2820, + "line": 2825, "column": 94 }, "identifierName": "Math" @@ -92782,15 +93296,15 @@ }, "property": { "type": "Identifier", - "start": 111031, - "end": 111036, + "start": 111337, + "end": 111342, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 95 }, "end": { - "line": 2820, + "line": 2825, "column": 100 }, "identifierName": "floor" @@ -92802,57 +93316,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 111037, - "end": 111055, + "start": 111343, + "end": 111361, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 101 }, "end": { - "line": 2820, + "line": 2825, "column": 119 } }, "left": { "type": "MemberExpression", - "start": 111037, - "end": 111049, + "start": 111343, + "end": 111355, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 101 }, "end": { - "line": 2820, + "line": 2825, "column": 113 } }, "object": { "type": "MemberExpression", - "start": 111037, - "end": 111046, + "start": 111343, + "end": 111352, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 101 }, "end": { - "line": 2820, + "line": 2825, "column": 110 } }, "object": { "type": "Identifier", - "start": 111037, - "end": 111040, + "start": 111343, + "end": 111346, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 101 }, "end": { - "line": 2820, + "line": 2825, "column": 104 }, "identifierName": "cfg" @@ -92861,15 +93375,15 @@ }, "property": { "type": "Identifier", - "start": 111041, - "end": 111046, + "start": 111347, + "end": 111352, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 105 }, "end": { - "line": 2820, + "line": 2825, "column": 110 }, "identifierName": "color" @@ -92880,15 +93394,15 @@ }, "property": { "type": "NumericLiteral", - "start": 111047, - "end": 111048, + "start": 111353, + "end": 111354, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 111 }, "end": { - "line": 2820, + "line": 2825, "column": 112 } }, @@ -92903,15 +93417,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 111052, - "end": 111055, + "start": 111358, + "end": 111361, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 116 }, "end": { - "line": 2820, + "line": 2825, "column": 119 } }, @@ -92926,43 +93440,43 @@ }, { "type": "CallExpression", - "start": 111058, - "end": 111088, + "start": 111364, + "end": 111394, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 122 }, "end": { - "line": 2820, + "line": 2825, "column": 152 } }, "callee": { "type": "MemberExpression", - "start": 111058, - "end": 111068, + "start": 111364, + "end": 111374, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 122 }, "end": { - "line": 2820, + "line": 2825, "column": 132 } }, "object": { "type": "Identifier", - "start": 111058, - "end": 111062, + "start": 111364, + "end": 111368, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 122 }, "end": { - "line": 2820, + "line": 2825, "column": 126 }, "identifierName": "Math" @@ -92971,15 +93485,15 @@ }, "property": { "type": "Identifier", - "start": 111063, - "end": 111068, + "start": 111369, + "end": 111374, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 127 }, "end": { - "line": 2820, + "line": 2825, "column": 132 }, "identifierName": "floor" @@ -92991,57 +93505,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 111069, - "end": 111087, + "start": 111375, + "end": 111393, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 133 }, "end": { - "line": 2820, + "line": 2825, "column": 151 } }, "left": { "type": "MemberExpression", - "start": 111069, - "end": 111081, + "start": 111375, + "end": 111387, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 133 }, "end": { - "line": 2820, + "line": 2825, "column": 145 } }, "object": { "type": "MemberExpression", - "start": 111069, - "end": 111078, + "start": 111375, + "end": 111384, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 133 }, "end": { - "line": 2820, + "line": 2825, "column": 142 } }, "object": { "type": "Identifier", - "start": 111069, - "end": 111072, + "start": 111375, + "end": 111378, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 133 }, "end": { - "line": 2820, + "line": 2825, "column": 136 }, "identifierName": "cfg" @@ -93050,15 +93564,15 @@ }, "property": { "type": "Identifier", - "start": 111073, - "end": 111078, + "start": 111379, + "end": 111384, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 137 }, "end": { - "line": 2820, + "line": 2825, "column": 142 }, "identifierName": "color" @@ -93069,15 +93583,15 @@ }, "property": { "type": "NumericLiteral", - "start": 111079, - "end": 111080, + "start": 111385, + "end": 111386, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 143 }, "end": { - "line": 2820, + "line": 2825, "column": 144 } }, @@ -93092,15 +93606,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 111084, - "end": 111087, + "start": 111390, + "end": 111393, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 148 }, "end": { - "line": 2820, + "line": 2825, "column": 151 } }, @@ -93119,15 +93633,15 @@ }, "alternate": { "type": "Identifier", - "start": 111093, - "end": 111115, + "start": 111399, + "end": 111421, "loc": { "start": { - "line": 2820, + "line": 2825, "column": 157 }, "end": { - "line": 2820, + "line": 2825, "column": 179 }, "identifierName": "defaultCompressedColor" @@ -93141,15 +93655,15 @@ { "type": "CommentLine", "value": " NPR", - "start": 110928, - "end": 110934, + "start": 111234, + "end": 111240, "loc": { "start": { - "line": 2818, + "line": 2823, "column": 16 }, "end": { - "line": 2818, + "line": 2823, "column": 22 } } @@ -93158,58 +93672,58 @@ }, { "type": "ExpressionStatement", - "start": 111133, - "end": 111237, + "start": 111439, + "end": 111543, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 16 }, "end": { - "line": 2821, + "line": 2826, "column": 120 } }, "expression": { "type": "AssignmentExpression", - "start": 111133, - "end": 111236, + "start": 111439, + "end": 111542, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 16 }, "end": { - "line": 2821, + "line": 2826, "column": 119 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 111133, - "end": 111144, + "start": 111439, + "end": 111450, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 16 }, "end": { - "line": 2821, + "line": 2826, "column": 27 } }, "object": { "type": "Identifier", - "start": 111133, - "end": 111136, + "start": 111439, + "end": 111442, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 16 }, "end": { - "line": 2821, + "line": 2826, "column": 19 }, "identifierName": "cfg" @@ -93218,15 +93732,15 @@ }, "property": { "type": "Identifier", - "start": 111137, - "end": 111144, + "start": 111443, + "end": 111450, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 20 }, "end": { - "line": 2821, + "line": 2826, "column": 27 }, "identifierName": "opacity" @@ -93237,71 +93751,71 @@ }, "right": { "type": "ConditionalExpression", - "start": 111147, - "end": 111236, + "start": 111453, + "end": 111542, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 30 }, "end": { - "line": 2821, + "line": 2826, "column": 119 } }, "test": { "type": "LogicalExpression", - "start": 111148, - "end": 111197, + "start": 111454, + "end": 111503, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 31 }, "end": { - "line": 2821, + "line": 2826, "column": 80 } }, "left": { "type": "BinaryExpression", - "start": 111148, - "end": 111173, + "start": 111454, + "end": 111479, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 31 }, "end": { - "line": 2821, + "line": 2826, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 111148, - "end": 111159, + "start": 111454, + "end": 111465, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 31 }, "end": { - "line": 2821, + "line": 2826, "column": 42 } }, "object": { "type": "Identifier", - "start": 111148, - "end": 111151, + "start": 111454, + "end": 111457, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 31 }, "end": { - "line": 2821, + "line": 2826, "column": 34 }, "identifierName": "cfg" @@ -93310,15 +93824,15 @@ }, "property": { "type": "Identifier", - "start": 111152, - "end": 111159, + "start": 111458, + "end": 111465, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 35 }, "end": { - "line": 2821, + "line": 2826, "column": 42 }, "identifierName": "opacity" @@ -93330,15 +93844,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 111164, - "end": 111173, + "start": 111470, + "end": 111479, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 47 }, "end": { - "line": 2821, + "line": 2826, "column": 56 }, "identifierName": "undefined" @@ -93349,43 +93863,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 111177, - "end": 111197, + "start": 111483, + "end": 111503, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 60 }, "end": { - "line": 2821, + "line": 2826, "column": 80 } }, "left": { "type": "MemberExpression", - "start": 111177, - "end": 111188, + "start": 111483, + "end": 111494, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 60 }, "end": { - "line": 2821, + "line": 2826, "column": 71 } }, "object": { "type": "Identifier", - "start": 111177, - "end": 111180, + "start": 111483, + "end": 111486, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 60 }, "end": { - "line": 2821, + "line": 2826, "column": 63 }, "identifierName": "cfg" @@ -93394,15 +93908,15 @@ }, "property": { "type": "Identifier", - "start": 111181, - "end": 111188, + "start": 111487, + "end": 111494, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 64 }, "end": { - "line": 2821, + "line": 2826, "column": 71 }, "identifierName": "opacity" @@ -93414,15 +93928,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 111193, - "end": 111197, + "start": 111499, + "end": 111503, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 76 }, "end": { - "line": 2821, + "line": 2826, "column": 80 } } @@ -93430,48 +93944,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 111147 + "parenStart": 111453 } }, "consequent": { "type": "CallExpression", - "start": 111201, - "end": 111230, + "start": 111507, + "end": 111536, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 84 }, "end": { - "line": 2821, + "line": 2826, "column": 113 } }, "callee": { "type": "MemberExpression", - "start": 111201, - "end": 111211, + "start": 111507, + "end": 111517, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 84 }, "end": { - "line": 2821, + "line": 2826, "column": 94 } }, "object": { "type": "Identifier", - "start": 111201, - "end": 111205, + "start": 111507, + "end": 111511, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 84 }, "end": { - "line": 2821, + "line": 2826, "column": 88 }, "identifierName": "Math" @@ -93480,15 +93994,15 @@ }, "property": { "type": "Identifier", - "start": 111206, - "end": 111211, + "start": 111512, + "end": 111517, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 89 }, "end": { - "line": 2821, + "line": 2826, "column": 94 }, "identifierName": "floor" @@ -93500,43 +94014,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 111212, - "end": 111229, + "start": 111518, + "end": 111535, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 95 }, "end": { - "line": 2821, + "line": 2826, "column": 112 } }, "left": { "type": "MemberExpression", - "start": 111212, - "end": 111223, + "start": 111518, + "end": 111529, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 95 }, "end": { - "line": 2821, + "line": 2826, "column": 106 } }, "object": { "type": "Identifier", - "start": 111212, - "end": 111215, + "start": 111518, + "end": 111521, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 95 }, "end": { - "line": 2821, + "line": 2826, "column": 98 }, "identifierName": "cfg" @@ -93545,15 +94059,15 @@ }, "property": { "type": "Identifier", - "start": 111216, - "end": 111223, + "start": 111522, + "end": 111529, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 99 }, "end": { - "line": 2821, + "line": 2826, "column": 106 }, "identifierName": "opacity" @@ -93565,15 +94079,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 111226, - "end": 111229, + "start": 111532, + "end": 111535, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 109 }, "end": { - "line": 2821, + "line": 2826, "column": 112 } }, @@ -93588,15 +94102,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 111233, - "end": 111236, + "start": 111539, + "end": 111542, "loc": { "start": { - "line": 2821, + "line": 2826, "column": 116 }, "end": { - "line": 2821, + "line": 2826, "column": 119 } }, @@ -93612,15 +94126,15 @@ { "type": "CommentLine", "value": " RTC", - "start": 111255, - "end": 111261, + "start": 111561, + "end": 111567, "loc": { "start": { - "line": 2823, + "line": 2828, "column": 16 }, "end": { - "line": 2823, + "line": 2828, "column": 22 } } @@ -93629,43 +94143,43 @@ }, { "type": "IfStatement", - "start": 111279, - "end": 111710, + "start": 111585, + "end": 112016, "loc": { "start": { - "line": 2825, + "line": 2830, "column": 16 }, "end": { - "line": 2833, + "line": 2838, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 111283, - "end": 111296, + "start": 111589, + "end": 111602, "loc": { "start": { - "line": 2825, + "line": 2830, "column": 20 }, "end": { - "line": 2825, + "line": 2830, "column": 33 } }, "object": { "type": "Identifier", - "start": 111283, - "end": 111286, + "start": 111589, + "end": 111592, "loc": { "start": { - "line": 2825, + "line": 2830, "column": 20 }, "end": { - "line": 2825, + "line": 2830, "column": 23 }, "identifierName": "cfg" @@ -93675,15 +94189,15 @@ }, "property": { "type": "Identifier", - "start": 111287, - "end": 111296, + "start": 111593, + "end": 111602, "loc": { "start": { - "line": 2825, + "line": 2830, "column": 24 }, "end": { - "line": 2825, + "line": 2830, "column": 33 }, "identifierName": "positions" @@ -93695,59 +94209,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 111298, - "end": 111710, + "start": 111604, + "end": 112016, "loc": { "start": { - "line": 2825, + "line": 2830, "column": 35 }, "end": { - "line": 2833, + "line": 2838, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 111320, - "end": 111350, + "start": 111626, + "end": 111656, "loc": { "start": { - "line": 2826, + "line": 2831, "column": 20 }, "end": { - "line": 2826, + "line": 2831, "column": 50 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 111326, - "end": 111349, + "start": 111632, + "end": 111655, "loc": { "start": { - "line": 2826, + "line": 2831, "column": 26 }, "end": { - "line": 2826, + "line": 2831, "column": 49 } }, "id": { "type": "Identifier", - "start": 111326, - "end": 111335, + "start": 111632, + "end": 111641, "loc": { "start": { - "line": 2826, + "line": 2831, "column": 26 }, "end": { - "line": 2826, + "line": 2831, "column": 35 }, "identifierName": "rtcCenter" @@ -93756,43 +94270,43 @@ }, "init": { "type": "CallExpression", - "start": 111338, - "end": 111349, + "start": 111644, + "end": 111655, "loc": { "start": { - "line": 2826, + "line": 2831, "column": 38 }, "end": { - "line": 2826, + "line": 2831, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 111338, - "end": 111347, + "start": 111644, + "end": 111653, "loc": { "start": { - "line": 2826, + "line": 2831, "column": 38 }, "end": { - "line": 2826, + "line": 2831, "column": 47 } }, "object": { "type": "Identifier", - "start": 111338, - "end": 111342, + "start": 111644, + "end": 111648, "loc": { "start": { - "line": 2826, + "line": 2831, "column": 38 }, "end": { - "line": 2826, + "line": 2831, "column": 42 }, "identifierName": "math" @@ -93801,15 +94315,15 @@ }, "property": { "type": "Identifier", - "start": 111343, - "end": 111347, + "start": 111649, + "end": 111653, "loc": { "start": { - "line": 2826, + "line": 2831, "column": 43 }, "end": { - "line": 2826, + "line": 2831, "column": 47 }, "identifierName": "vec3" @@ -93826,44 +94340,44 @@ }, { "type": "VariableDeclaration", - "start": 111371, - "end": 111395, + "start": 111677, + "end": 111701, "loc": { "start": { - "line": 2827, + "line": 2832, "column": 20 }, "end": { - "line": 2827, + "line": 2832, "column": 44 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 111377, - "end": 111394, + "start": 111683, + "end": 111700, "loc": { "start": { - "line": 2827, + "line": 2832, "column": 26 }, "end": { - "line": 2827, + "line": 2832, "column": 43 } }, "id": { "type": "Identifier", - "start": 111377, - "end": 111389, + "start": 111683, + "end": 111695, "loc": { "start": { - "line": 2827, + "line": 2832, "column": 26 }, "end": { - "line": 2827, + "line": 2832, "column": 38 }, "identifierName": "rtcPositions" @@ -93872,15 +94386,15 @@ }, "init": { "type": "ArrayExpression", - "start": 111392, - "end": 111394, + "start": 111698, + "end": 111700, "loc": { "start": { - "line": 2827, + "line": 2832, "column": 41 }, "end": { - "line": 2827, + "line": 2832, "column": 43 } }, @@ -93892,44 +94406,44 @@ }, { "type": "VariableDeclaration", - "start": 111416, - "end": 111494, + "start": 111722, + "end": 111800, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 20 }, "end": { - "line": 2828, + "line": 2833, "column": 98 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 111422, - "end": 111493, + "start": 111728, + "end": 111799, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 26 }, "end": { - "line": 2828, + "line": 2833, "column": 97 } }, "id": { "type": "Identifier", - "start": 111422, - "end": 111431, + "start": 111728, + "end": 111737, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 26 }, "end": { - "line": 2828, + "line": 2833, "column": 35 }, "identifierName": "rtcNeeded" @@ -93938,29 +94452,29 @@ }, "init": { "type": "CallExpression", - "start": 111434, - "end": 111493, + "start": 111740, + "end": 111799, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 38 }, "end": { - "line": 2828, + "line": 2833, "column": 97 } }, "callee": { "type": "Identifier", - "start": 111434, - "end": 111453, + "start": 111740, + "end": 111759, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 38 }, "end": { - "line": 2828, + "line": 2833, "column": 57 }, "identifierName": "worldToRTCPositions" @@ -93970,29 +94484,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 111454, - "end": 111467, + "start": 111760, + "end": 111773, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 58 }, "end": { - "line": 2828, + "line": 2833, "column": 71 } }, "object": { "type": "Identifier", - "start": 111454, - "end": 111457, + "start": 111760, + "end": 111763, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 58 }, "end": { - "line": 2828, + "line": 2833, "column": 61 }, "identifierName": "cfg" @@ -94001,15 +94515,15 @@ }, "property": { "type": "Identifier", - "start": 111458, - "end": 111467, + "start": 111764, + "end": 111773, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 62 }, "end": { - "line": 2828, + "line": 2833, "column": 71 }, "identifierName": "positions" @@ -94020,15 +94534,15 @@ }, { "type": "Identifier", - "start": 111469, - "end": 111481, + "start": 111775, + "end": 111787, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 73 }, "end": { - "line": 2828, + "line": 2833, "column": 85 }, "identifierName": "rtcPositions" @@ -94037,15 +94551,15 @@ }, { "type": "Identifier", - "start": 111483, - "end": 111492, + "start": 111789, + "end": 111798, "loc": { "start": { - "line": 2828, + "line": 2833, "column": 87 }, "end": { - "line": 2828, + "line": 2833, "column": 96 }, "identifierName": "rtcCenter" @@ -94060,29 +94574,29 @@ }, { "type": "IfStatement", - "start": 111515, - "end": 111692, + "start": 111821, + "end": 111998, "loc": { "start": { - "line": 2829, + "line": 2834, "column": 20 }, "end": { - "line": 2832, + "line": 2837, "column": 21 } }, "test": { "type": "Identifier", - "start": 111519, - "end": 111528, + "start": 111825, + "end": 111834, "loc": { "start": { - "line": 2829, + "line": 2834, "column": 24 }, "end": { - "line": 2829, + "line": 2834, "column": 33 }, "identifierName": "rtcNeeded" @@ -94091,73 +94605,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 111530, - "end": 111692, + "start": 111836, + "end": 111998, "loc": { "start": { - "line": 2829, + "line": 2834, "column": 35 }, "end": { - "line": 2832, + "line": 2837, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 111556, - "end": 111585, + "start": 111862, + "end": 111891, "loc": { "start": { - "line": 2830, + "line": 2835, "column": 24 }, "end": { - "line": 2830, + "line": 2835, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 111556, - "end": 111584, + "start": 111862, + "end": 111890, "loc": { "start": { - "line": 2830, + "line": 2835, "column": 24 }, "end": { - "line": 2830, + "line": 2835, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 111556, - "end": 111569, + "start": 111862, + "end": 111875, "loc": { "start": { - "line": 2830, + "line": 2835, "column": 24 }, "end": { - "line": 2830, + "line": 2835, "column": 37 } }, "object": { "type": "Identifier", - "start": 111556, - "end": 111559, + "start": 111862, + "end": 111865, "loc": { "start": { - "line": 2830, + "line": 2835, "column": 24 }, "end": { - "line": 2830, + "line": 2835, "column": 27 }, "identifierName": "cfg" @@ -94166,15 +94680,15 @@ }, "property": { "type": "Identifier", - "start": 111560, - "end": 111569, + "start": 111866, + "end": 111875, "loc": { "start": { - "line": 2830, + "line": 2835, "column": 28 }, "end": { - "line": 2830, + "line": 2835, "column": 37 }, "identifierName": "positions" @@ -94185,15 +94699,15 @@ }, "right": { "type": "Identifier", - "start": 111572, - "end": 111584, + "start": 111878, + "end": 111890, "loc": { "start": { - "line": 2830, + "line": 2835, "column": 40 }, "end": { - "line": 2830, + "line": 2835, "column": 52 }, "identifierName": "rtcPositions" @@ -94204,58 +94718,58 @@ }, { "type": "ExpressionStatement", - "start": 111610, - "end": 111670, + "start": 111916, + "end": 111976, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 24 }, "end": { - "line": 2831, + "line": 2836, "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 111610, - "end": 111669, + "start": 111916, + "end": 111975, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 24 }, "end": { - "line": 2831, + "line": 2836, "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 111610, - "end": 111620, + "start": 111916, + "end": 111926, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 24 }, "end": { - "line": 2831, + "line": 2836, "column": 34 } }, "object": { "type": "Identifier", - "start": 111610, - "end": 111613, + "start": 111916, + "end": 111919, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 24 }, "end": { - "line": 2831, + "line": 2836, "column": 27 }, "identifierName": "cfg" @@ -94264,15 +94778,15 @@ }, "property": { "type": "Identifier", - "start": 111614, - "end": 111620, + "start": 111920, + "end": 111926, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 28 }, "end": { - "line": 2831, + "line": 2836, "column": 34 }, "identifierName": "origin" @@ -94283,43 +94797,43 @@ }, "right": { "type": "CallExpression", - "start": 111623, - "end": 111669, + "start": 111929, + "end": 111975, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 37 }, "end": { - "line": 2831, + "line": 2836, "column": 83 } }, "callee": { "type": "MemberExpression", - "start": 111623, - "end": 111635, + "start": 111929, + "end": 111941, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 37 }, "end": { - "line": 2831, + "line": 2836, "column": 49 } }, "object": { "type": "Identifier", - "start": 111623, - "end": 111627, + "start": 111929, + "end": 111933, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 37 }, "end": { - "line": 2831, + "line": 2836, "column": 41 }, "identifierName": "math" @@ -94328,15 +94842,15 @@ }, "property": { "type": "Identifier", - "start": 111628, - "end": 111635, + "start": 111934, + "end": 111941, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 42 }, "end": { - "line": 2831, + "line": 2836, "column": 49 }, "identifierName": "addVec3" @@ -94348,29 +94862,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 111636, - "end": 111646, + "start": 111942, + "end": 111952, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 50 }, "end": { - "line": 2831, + "line": 2836, "column": 60 } }, "object": { "type": "Identifier", - "start": 111636, - "end": 111639, + "start": 111942, + "end": 111945, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 50 }, "end": { - "line": 2831, + "line": 2836, "column": 53 }, "identifierName": "cfg" @@ -94379,15 +94893,15 @@ }, "property": { "type": "Identifier", - "start": 111640, - "end": 111646, + "start": 111946, + "end": 111952, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 54 }, "end": { - "line": 2831, + "line": 2836, "column": 60 }, "identifierName": "origin" @@ -94398,15 +94912,15 @@ }, { "type": "Identifier", - "start": 111648, - "end": 111657, + "start": 111954, + "end": 111963, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 62 }, "end": { - "line": 2831, + "line": 2836, "column": 71 }, "identifierName": "rtcCenter" @@ -94415,15 +94929,15 @@ }, { "type": "Identifier", - "start": 111659, - "end": 111668, + "start": 111965, + "end": 111974, "loc": { "start": { - "line": 2831, + "line": 2836, "column": 73 }, "end": { - "line": 2831, + "line": 2836, "column": 82 }, "identifierName": "rtcCenter" @@ -94448,15 +94962,15 @@ { "type": "CommentLine", "value": " RTC", - "start": 111255, - "end": 111261, + "start": 111561, + "end": 111567, "loc": { "start": { - "line": 2823, + "line": 2828, "column": 16 }, "end": { - "line": 2823, + "line": 2828, "column": 22 } } @@ -94466,15 +94980,15 @@ { "type": "CommentLine", "value": " COMPRESSION", - "start": 111728, - "end": 111742, + "start": 112034, + "end": 112048, "loc": { "start": { - "line": 2835, + "line": 2840, "column": 16 }, "end": { - "line": 2835, + "line": 2840, "column": 30 } } @@ -94483,43 +94997,43 @@ }, { "type": "IfStatement", - "start": 111760, - "end": 112448, + "start": 112066, + "end": 112754, "loc": { "start": { - "line": 2837, + "line": 2842, "column": 16 }, "end": { - "line": 2850, + "line": 2855, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 111764, - "end": 111777, + "start": 112070, + "end": 112083, "loc": { "start": { - "line": 2837, + "line": 2842, "column": 20 }, "end": { - "line": 2837, + "line": 2842, "column": 33 } }, "object": { "type": "Identifier", - "start": 111764, - "end": 111767, + "start": 112070, + "end": 112073, "loc": { "start": { - "line": 2837, + "line": 2842, "column": 20 }, "end": { - "line": 2837, + "line": 2842, "column": 23 }, "identifierName": "cfg" @@ -94529,15 +95043,15 @@ }, "property": { "type": "Identifier", - "start": 111768, - "end": 111777, + "start": 112074, + "end": 112083, "loc": { "start": { - "line": 2837, + "line": 2842, "column": 24 }, "end": { - "line": 2837, + "line": 2842, "column": 33 }, "identifierName": "positions" @@ -94549,59 +95063,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 111779, - "end": 112131, + "start": 112085, + "end": 112437, "loc": { "start": { - "line": 2837, + "line": 2842, "column": 35 }, "end": { - "line": 2844, + "line": 2849, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 111801, - "end": 111835, + "start": 112107, + "end": 112141, "loc": { "start": { - "line": 2838, + "line": 2843, "column": 20 }, "end": { - "line": 2838, + "line": 2843, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 111807, - "end": 111834, + "start": 112113, + "end": 112140, "loc": { "start": { - "line": 2838, + "line": 2843, "column": 26 }, "end": { - "line": 2838, + "line": 2843, "column": 53 } }, "id": { "type": "Identifier", - "start": 111807, - "end": 111811, + "start": 112113, + "end": 112117, "loc": { "start": { - "line": 2838, + "line": 2843, "column": 26 }, "end": { - "line": 2838, + "line": 2843, "column": 30 }, "identifierName": "aabb" @@ -94610,43 +95124,43 @@ }, "init": { "type": "CallExpression", - "start": 111814, - "end": 111834, + "start": 112120, + "end": 112140, "loc": { "start": { - "line": 2838, + "line": 2843, "column": 33 }, "end": { - "line": 2838, + "line": 2843, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 111814, - "end": 111832, + "start": 112120, + "end": 112138, "loc": { "start": { - "line": 2838, + "line": 2843, "column": 33 }, "end": { - "line": 2838, + "line": 2843, "column": 51 } }, "object": { "type": "Identifier", - "start": 111814, - "end": 111818, + "start": 112120, + "end": 112124, "loc": { "start": { - "line": 2838, + "line": 2843, "column": 33 }, "end": { - "line": 2838, + "line": 2843, "column": 37 }, "identifierName": "math" @@ -94655,15 +95169,15 @@ }, "property": { "type": "Identifier", - "start": 111819, - "end": 111832, + "start": 112125, + "end": 112138, "loc": { "start": { - "line": 2838, + "line": 2843, "column": 38 }, "end": { - "line": 2838, + "line": 2843, "column": 51 }, "identifierName": "collapseAABB3" @@ -94680,58 +95194,58 @@ }, { "type": "ExpressionStatement", - "start": 111856, - "end": 111896, + "start": 112162, + "end": 112202, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 20 }, "end": { - "line": 2839, + "line": 2844, "column": 60 } }, "expression": { "type": "AssignmentExpression", - "start": 111856, - "end": 111895, + "start": 112162, + "end": 112201, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 20 }, "end": { - "line": 2839, + "line": 2844, "column": 59 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 111856, - "end": 111881, + "start": 112162, + "end": 112187, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 20 }, "end": { - "line": 2839, + "line": 2844, "column": 45 } }, "object": { "type": "Identifier", - "start": 111856, - "end": 111859, + "start": 112162, + "end": 112165, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 20 }, "end": { - "line": 2839, + "line": 2844, "column": 23 }, "identifierName": "cfg" @@ -94740,15 +95254,15 @@ }, "property": { "type": "Identifier", - "start": 111860, - "end": 111881, + "start": 112166, + "end": 112187, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 24 }, "end": { - "line": 2839, + "line": 2844, "column": 45 }, "identifierName": "positionsDecodeMatrix" @@ -94759,43 +95273,43 @@ }, "right": { "type": "CallExpression", - "start": 111884, - "end": 111895, + "start": 112190, + "end": 112201, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 48 }, "end": { - "line": 2839, + "line": 2844, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 111884, - "end": 111893, + "start": 112190, + "end": 112199, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 48 }, "end": { - "line": 2839, + "line": 2844, "column": 57 } }, "object": { "type": "Identifier", - "start": 111884, - "end": 111888, + "start": 112190, + "end": 112194, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 48 }, "end": { - "line": 2839, + "line": 2844, "column": 52 }, "identifierName": "math" @@ -94804,15 +95318,15 @@ }, "property": { "type": "Identifier", - "start": 111889, - "end": 111893, + "start": 112195, + "end": 112199, "loc": { "start": { - "line": 2839, + "line": 2844, "column": 53 }, "end": { - "line": 2839, + "line": 2844, "column": 57 }, "identifierName": "mat4" @@ -94827,57 +95341,57 @@ }, { "type": "ExpressionStatement", - "start": 111917, - "end": 111962, + "start": 112223, + "end": 112268, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 20 }, "end": { - "line": 2840, + "line": 2845, "column": 65 } }, "expression": { "type": "CallExpression", - "start": 111917, - "end": 111961, + "start": 112223, + "end": 112267, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 20 }, "end": { - "line": 2840, + "line": 2845, "column": 64 } }, "callee": { "type": "MemberExpression", - "start": 111917, - "end": 111940, + "start": 112223, + "end": 112246, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 20 }, "end": { - "line": 2840, + "line": 2845, "column": 43 } }, "object": { "type": "Identifier", - "start": 111917, - "end": 111921, + "start": 112223, + "end": 112227, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 20 }, "end": { - "line": 2840, + "line": 2845, "column": 24 }, "identifierName": "math" @@ -94886,15 +95400,15 @@ }, "property": { "type": "Identifier", - "start": 111922, - "end": 111940, + "start": 112228, + "end": 112246, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 25 }, "end": { - "line": 2840, + "line": 2845, "column": 43 }, "identifierName": "expandAABB3Points3" @@ -94906,15 +95420,15 @@ "arguments": [ { "type": "Identifier", - "start": 111941, - "end": 111945, + "start": 112247, + "end": 112251, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 44 }, "end": { - "line": 2840, + "line": 2845, "column": 48 }, "identifierName": "aabb" @@ -94923,29 +95437,29 @@ }, { "type": "MemberExpression", - "start": 111947, - "end": 111960, + "start": 112253, + "end": 112266, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 50 }, "end": { - "line": 2840, + "line": 2845, "column": 63 } }, "object": { "type": "Identifier", - "start": 111947, - "end": 111950, + "start": 112253, + "end": 112256, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 50 }, "end": { - "line": 2840, + "line": 2845, "column": 53 }, "identifierName": "cfg" @@ -94954,15 +95468,15 @@ }, "property": { "type": "Identifier", - "start": 111951, - "end": 111960, + "start": 112257, + "end": 112266, "loc": { "start": { - "line": 2840, + "line": 2845, "column": 54 }, "end": { - "line": 2840, + "line": 2845, "column": 63 }, "identifierName": "positions" @@ -94976,58 +95490,58 @@ }, { "type": "ExpressionStatement", - "start": 111983, - "end": 112075, + "start": 112289, + "end": 112381, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 20 }, "end": { - "line": 2841, + "line": 2846, "column": 112 } }, "expression": { "type": "AssignmentExpression", - "start": 111983, - "end": 112074, + "start": 112289, + "end": 112380, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 20 }, "end": { - "line": 2841, + "line": 2846, "column": 111 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 111983, - "end": 112006, + "start": 112289, + "end": 112312, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 20 }, "end": { - "line": 2841, + "line": 2846, "column": 43 } }, "object": { "type": "Identifier", - "start": 111983, - "end": 111986, + "start": 112289, + "end": 112292, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 20 }, "end": { - "line": 2841, + "line": 2846, "column": 23 }, "identifierName": "cfg" @@ -95036,15 +95550,15 @@ }, "property": { "type": "Identifier", - "start": 111987, - "end": 112006, + "start": 112293, + "end": 112312, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 24 }, "end": { - "line": 2841, + "line": 2846, "column": 43 }, "identifierName": "positionsCompressed" @@ -95055,29 +95569,29 @@ }, "right": { "type": "CallExpression", - "start": 112009, - "end": 112074, + "start": 112315, + "end": 112380, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 46 }, "end": { - "line": 2841, + "line": 2846, "column": 111 } }, "callee": { "type": "Identifier", - "start": 112009, - "end": 112026, + "start": 112315, + "end": 112332, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 46 }, "end": { - "line": 2841, + "line": 2846, "column": 63 }, "identifierName": "quantizePositions" @@ -95087,29 +95601,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 112027, - "end": 112040, + "start": 112333, + "end": 112346, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 64 }, "end": { - "line": 2841, + "line": 2846, "column": 77 } }, "object": { "type": "Identifier", - "start": 112027, - "end": 112030, + "start": 112333, + "end": 112336, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 64 }, "end": { - "line": 2841, + "line": 2846, "column": 67 }, "identifierName": "cfg" @@ -95118,15 +95632,15 @@ }, "property": { "type": "Identifier", - "start": 112031, - "end": 112040, + "start": 112337, + "end": 112346, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 68 }, "end": { - "line": 2841, + "line": 2846, "column": 77 }, "identifierName": "positions" @@ -95137,15 +95651,15 @@ }, { "type": "Identifier", - "start": 112042, - "end": 112046, + "start": 112348, + "end": 112352, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 79 }, "end": { - "line": 2841, + "line": 2846, "column": 83 }, "identifierName": "aabb" @@ -95154,29 +95668,29 @@ }, { "type": "MemberExpression", - "start": 112048, - "end": 112073, + "start": 112354, + "end": 112379, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 85 }, "end": { - "line": 2841, + "line": 2846, "column": 110 } }, "object": { "type": "Identifier", - "start": 112048, - "end": 112051, + "start": 112354, + "end": 112357, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 85 }, "end": { - "line": 2841, + "line": 2846, "column": 88 }, "identifierName": "cfg" @@ -95185,15 +95699,15 @@ }, "property": { "type": "Identifier", - "start": 112052, - "end": 112073, + "start": 112358, + "end": 112379, "loc": { "start": { - "line": 2841, + "line": 2846, "column": 89 }, "end": { - "line": 2841, + "line": 2846, "column": 110 }, "identifierName": "positionsDecodeMatrix" @@ -95208,58 +95722,58 @@ }, { "type": "ExpressionStatement", - "start": 112096, - "end": 112112, + "start": 112402, + "end": 112418, "loc": { "start": { - "line": 2842, + "line": 2847, "column": 20 }, "end": { - "line": 2842, + "line": 2847, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 112096, - "end": 112111, + "start": 112402, + "end": 112417, "loc": { "start": { - "line": 2842, + "line": 2847, "column": 20 }, "end": { - "line": 2842, + "line": 2847, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 112096, - "end": 112104, + "start": 112402, + "end": 112410, "loc": { "start": { - "line": 2842, + "line": 2847, "column": 20 }, "end": { - "line": 2842, + "line": 2847, "column": 28 } }, "object": { "type": "Identifier", - "start": 112096, - "end": 112099, + "start": 112402, + "end": 112405, "loc": { "start": { - "line": 2842, + "line": 2847, "column": 20 }, "end": { - "line": 2842, + "line": 2847, "column": 23 }, "identifierName": "cfg" @@ -95268,15 +95782,15 @@ }, "property": { "type": "Identifier", - "start": 112100, - "end": 112104, + "start": 112406, + "end": 112410, "loc": { "start": { - "line": 2842, + "line": 2847, "column": 24 }, "end": { - "line": 2842, + "line": 2847, "column": 28 }, "identifierName": "aabb" @@ -95287,15 +95801,15 @@ }, "right": { "type": "Identifier", - "start": 112107, - "end": 112111, + "start": 112413, + "end": 112417, "loc": { "start": { - "line": 2842, + "line": 2847, "column": 31 }, "end": { - "line": 2842, + "line": 2847, "column": 35 }, "identifierName": "aabb" @@ -95309,43 +95823,43 @@ }, "alternate": { "type": "IfStatement", - "start": 112137, - "end": 112448, + "start": 112443, + "end": 112754, "loc": { "start": { - "line": 2844, + "line": 2849, "column": 23 }, "end": { - "line": 2850, + "line": 2855, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 112141, - "end": 112164, + "start": 112447, + "end": 112470, "loc": { "start": { - "line": 2844, + "line": 2849, "column": 27 }, "end": { - "line": 2844, + "line": 2849, "column": 50 } }, "object": { "type": "Identifier", - "start": 112141, - "end": 112144, + "start": 112447, + "end": 112450, "loc": { "start": { - "line": 2844, + "line": 2849, "column": 27 }, "end": { - "line": 2844, + "line": 2849, "column": 30 }, "identifierName": "cfg" @@ -95354,15 +95868,15 @@ }, "property": { "type": "Identifier", - "start": 112145, - "end": 112164, + "start": 112451, + "end": 112470, "loc": { "start": { - "line": 2844, + "line": 2849, "column": 31 }, "end": { - "line": 2844, + "line": 2849, "column": 50 }, "identifierName": "positionsCompressed" @@ -95373,59 +95887,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 112166, - "end": 112448, + "start": 112472, + "end": 112754, "loc": { "start": { - "line": 2844, + "line": 2849, "column": 52 }, "end": { - "line": 2850, + "line": 2855, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 112188, - "end": 112222, + "start": 112494, + "end": 112528, "loc": { "start": { - "line": 2845, + "line": 2850, "column": 20 }, "end": { - "line": 2845, + "line": 2850, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 112194, - "end": 112221, + "start": 112500, + "end": 112527, "loc": { "start": { - "line": 2845, + "line": 2850, "column": 26 }, "end": { - "line": 2845, + "line": 2850, "column": 53 } }, "id": { "type": "Identifier", - "start": 112194, - "end": 112198, + "start": 112500, + "end": 112504, "loc": { "start": { - "line": 2845, + "line": 2850, "column": 26 }, "end": { - "line": 2845, + "line": 2850, "column": 30 }, "identifierName": "aabb" @@ -95434,43 +95948,43 @@ }, "init": { "type": "CallExpression", - "start": 112201, - "end": 112221, + "start": 112507, + "end": 112527, "loc": { "start": { - "line": 2845, + "line": 2850, "column": 33 }, "end": { - "line": 2845, + "line": 2850, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 112201, - "end": 112219, + "start": 112507, + "end": 112525, "loc": { "start": { - "line": 2845, + "line": 2850, "column": 33 }, "end": { - "line": 2845, + "line": 2850, "column": 51 } }, "object": { "type": "Identifier", - "start": 112201, - "end": 112205, + "start": 112507, + "end": 112511, "loc": { "start": { - "line": 2845, + "line": 2850, "column": 33 }, "end": { - "line": 2845, + "line": 2850, "column": 37 }, "identifierName": "math" @@ -95479,15 +95993,15 @@ }, "property": { "type": "Identifier", - "start": 112206, - "end": 112219, + "start": 112512, + "end": 112525, "loc": { "start": { - "line": 2845, + "line": 2850, "column": 38 }, "end": { - "line": 2845, + "line": 2850, "column": 51 }, "identifierName": "collapseAABB3" @@ -95504,57 +96018,57 @@ }, { "type": "ExpressionStatement", - "start": 112243, - "end": 112298, + "start": 112549, + "end": 112604, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 20 }, "end": { - "line": 2846, + "line": 2851, "column": 75 } }, "expression": { "type": "CallExpression", - "start": 112243, - "end": 112297, + "start": 112549, + "end": 112603, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 20 }, "end": { - "line": 2846, + "line": 2851, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 112243, - "end": 112266, + "start": 112549, + "end": 112572, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 20 }, "end": { - "line": 2846, + "line": 2851, "column": 43 } }, "object": { "type": "Identifier", - "start": 112243, - "end": 112247, + "start": 112549, + "end": 112553, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 20 }, "end": { - "line": 2846, + "line": 2851, "column": 24 }, "identifierName": "math" @@ -95563,15 +96077,15 @@ }, "property": { "type": "Identifier", - "start": 112248, - "end": 112266, + "start": 112554, + "end": 112572, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 25 }, "end": { - "line": 2846, + "line": 2851, "column": 43 }, "identifierName": "expandAABB3Points3" @@ -95583,15 +96097,15 @@ "arguments": [ { "type": "Identifier", - "start": 112267, - "end": 112271, + "start": 112573, + "end": 112577, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 44 }, "end": { - "line": 2846, + "line": 2851, "column": 48 }, "identifierName": "aabb" @@ -95600,29 +96114,29 @@ }, { "type": "MemberExpression", - "start": 112273, - "end": 112296, + "start": 112579, + "end": 112602, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 50 }, "end": { - "line": 2846, + "line": 2851, "column": 73 } }, "object": { "type": "Identifier", - "start": 112273, - "end": 112276, + "start": 112579, + "end": 112582, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 50 }, "end": { - "line": 2846, + "line": 2851, "column": 53 }, "identifierName": "cfg" @@ -95631,15 +96145,15 @@ }, "property": { "type": "Identifier", - "start": 112277, - "end": 112296, + "start": 112583, + "end": 112602, "loc": { "start": { - "line": 2846, + "line": 2851, "column": 54 }, "end": { - "line": 2846, + "line": 2851, "column": 73 }, "identifierName": "positionsCompressed" @@ -95653,57 +96167,57 @@ }, { "type": "ExpressionStatement", - "start": 112319, - "end": 112392, + "start": 112625, + "end": 112698, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 20 }, "end": { - "line": 2847, + "line": 2852, "column": 93 } }, "expression": { "type": "CallExpression", - "start": 112319, - "end": 112391, + "start": 112625, + "end": 112697, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 20 }, "end": { - "line": 2847, + "line": 2852, "column": 92 } }, "callee": { "type": "MemberExpression", - "start": 112319, - "end": 112358, + "start": 112625, + "end": 112664, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 20 }, "end": { - "line": 2847, + "line": 2852, "column": 59 } }, "object": { "type": "Identifier", - "start": 112319, - "end": 112343, + "start": 112625, + "end": 112649, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 20 }, "end": { - "line": 2847, + "line": 2852, "column": 44 }, "identifierName": "geometryCompressionUtils" @@ -95712,15 +96226,15 @@ }, "property": { "type": "Identifier", - "start": 112344, - "end": 112358, + "start": 112650, + "end": 112664, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 45 }, "end": { - "line": 2847, + "line": 2852, "column": 59 }, "identifierName": "decompressAABB" @@ -95732,15 +96246,15 @@ "arguments": [ { "type": "Identifier", - "start": 112359, - "end": 112363, + "start": 112665, + "end": 112669, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 60 }, "end": { - "line": 2847, + "line": 2852, "column": 64 }, "identifierName": "aabb" @@ -95749,29 +96263,29 @@ }, { "type": "MemberExpression", - "start": 112365, - "end": 112390, + "start": 112671, + "end": 112696, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 66 }, "end": { - "line": 2847, + "line": 2852, "column": 91 } }, "object": { "type": "Identifier", - "start": 112365, - "end": 112368, + "start": 112671, + "end": 112674, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 66 }, "end": { - "line": 2847, + "line": 2852, "column": 69 }, "identifierName": "cfg" @@ -95780,15 +96294,15 @@ }, "property": { "type": "Identifier", - "start": 112369, - "end": 112390, + "start": 112675, + "end": 112696, "loc": { "start": { - "line": 2847, + "line": 2852, "column": 70 }, "end": { - "line": 2847, + "line": 2852, "column": 91 }, "identifierName": "positionsDecodeMatrix" @@ -95802,58 +96316,58 @@ }, { "type": "ExpressionStatement", - "start": 112413, - "end": 112429, + "start": 112719, + "end": 112735, "loc": { "start": { - "line": 2848, + "line": 2853, "column": 20 }, "end": { - "line": 2848, + "line": 2853, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 112413, - "end": 112428, + "start": 112719, + "end": 112734, "loc": { "start": { - "line": 2848, + "line": 2853, "column": 20 }, "end": { - "line": 2848, + "line": 2853, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 112413, - "end": 112421, + "start": 112719, + "end": 112727, "loc": { "start": { - "line": 2848, + "line": 2853, "column": 20 }, "end": { - "line": 2848, + "line": 2853, "column": 28 } }, "object": { "type": "Identifier", - "start": 112413, - "end": 112416, + "start": 112719, + "end": 112722, "loc": { "start": { - "line": 2848, + "line": 2853, "column": 20 }, "end": { - "line": 2848, + "line": 2853, "column": 23 }, "identifierName": "cfg" @@ -95862,15 +96376,15 @@ }, "property": { "type": "Identifier", - "start": 112417, - "end": 112421, + "start": 112723, + "end": 112727, "loc": { "start": { - "line": 2848, + "line": 2853, "column": 24 }, "end": { - "line": 2848, + "line": 2853, "column": 28 }, "identifierName": "aabb" @@ -95881,15 +96395,15 @@ }, "right": { "type": "Identifier", - "start": 112424, - "end": 112428, + "start": 112730, + "end": 112734, "loc": { "start": { - "line": 2848, + "line": 2853, "column": 31 }, "end": { - "line": 2848, + "line": 2853, "column": 35 }, "identifierName": "aabb" @@ -95907,15 +96421,15 @@ { "type": "CommentLine", "value": " COMPRESSION", - "start": 111728, - "end": 111742, + "start": 112034, + "end": 112048, "loc": { "start": { - "line": 2835, + "line": 2840, "column": 16 }, "end": { - "line": 2835, + "line": 2840, "column": 30 } } @@ -95924,43 +96438,43 @@ }, { "type": "IfStatement", - "start": 112465, - "end": 113224, + "start": 112771, + "end": 113530, "loc": { "start": { - "line": 2851, + "line": 2856, "column": 16 }, "end": { - "line": 2865, + "line": 2870, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 112469, - "end": 112480, + "start": 112775, + "end": 112786, "loc": { "start": { - "line": 2851, + "line": 2856, "column": 20 }, "end": { - "line": 2851, + "line": 2856, "column": 31 } }, "object": { "type": "Identifier", - "start": 112469, - "end": 112472, + "start": 112775, + "end": 112778, "loc": { "start": { - "line": 2851, + "line": 2856, "column": 20 }, "end": { - "line": 2851, + "line": 2856, "column": 23 }, "identifierName": "cfg" @@ -95969,15 +96483,15 @@ }, "property": { "type": "Identifier", - "start": 112473, - "end": 112480, + "start": 112779, + "end": 112786, "loc": { "start": { - "line": 2851, + "line": 2856, "column": 24 }, "end": { - "line": 2851, + "line": 2856, "column": 31 }, "identifierName": "buckets" @@ -95988,59 +96502,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 112482, - "end": 113224, + "start": 112788, + "end": 113530, "loc": { "start": { - "line": 2851, + "line": 2856, "column": 33 }, "end": { - "line": 2865, + "line": 2870, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 112504, - "end": 112538, + "start": 112810, + "end": 112844, "loc": { "start": { - "line": 2852, + "line": 2857, "column": 20 }, "end": { - "line": 2852, + "line": 2857, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 112510, - "end": 112537, + "start": 112816, + "end": 112843, "loc": { "start": { - "line": 2852, + "line": 2857, "column": 26 }, "end": { - "line": 2852, + "line": 2857, "column": 53 } }, "id": { "type": "Identifier", - "start": 112510, - "end": 112514, + "start": 112816, + "end": 112820, "loc": { "start": { - "line": 2852, + "line": 2857, "column": 26 }, "end": { - "line": 2852, + "line": 2857, "column": 30 }, "identifierName": "aabb" @@ -96049,43 +96563,43 @@ }, "init": { "type": "CallExpression", - "start": 112517, - "end": 112537, + "start": 112823, + "end": 112843, "loc": { "start": { - "line": 2852, + "line": 2857, "column": 33 }, "end": { - "line": 2852, + "line": 2857, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 112517, - "end": 112535, + "start": 112823, + "end": 112841, "loc": { "start": { - "line": 2852, + "line": 2857, "column": 33 }, "end": { - "line": 2852, + "line": 2857, "column": 51 } }, "object": { "type": "Identifier", - "start": 112517, - "end": 112521, + "start": 112823, + "end": 112827, "loc": { "start": { - "line": 2852, + "line": 2857, "column": 33 }, "end": { - "line": 2852, + "line": 2857, "column": 37 }, "identifierName": "math" @@ -96094,15 +96608,15 @@ }, "property": { "type": "Identifier", - "start": 112522, - "end": 112535, + "start": 112828, + "end": 112841, "loc": { "start": { - "line": 2852, + "line": 2857, "column": 38 }, "end": { - "line": 2852, + "line": 2857, "column": 51 }, "identifierName": "collapseAABB3" @@ -96119,58 +96633,58 @@ }, { "type": "ForStatement", - "start": 112559, - "end": 112996, + "start": 112865, + "end": 113302, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 20 }, "end": { - "line": 2860, + "line": 2865, "column": 21 } }, "init": { "type": "VariableDeclaration", - "start": 112564, - "end": 112599, + "start": 112870, + "end": 112905, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 25 }, "end": { - "line": 2853, + "line": 2858, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 112568, - "end": 112573, + "start": 112874, + "end": 112879, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 29 }, "end": { - "line": 2853, + "line": 2858, "column": 34 } }, "id": { "type": "Identifier", - "start": 112568, - "end": 112569, + "start": 112874, + "end": 112875, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 29 }, "end": { - "line": 2853, + "line": 2858, "column": 30 }, "identifierName": "i" @@ -96179,15 +96693,15 @@ }, "init": { "type": "NumericLiteral", - "start": 112572, - "end": 112573, + "start": 112878, + "end": 112879, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 33 }, "end": { - "line": 2853, + "line": 2858, "column": 34 } }, @@ -96200,29 +96714,29 @@ }, { "type": "VariableDeclarator", - "start": 112575, - "end": 112599, + "start": 112881, + "end": 112905, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 36 }, "end": { - "line": 2853, + "line": 2858, "column": 60 } }, "id": { "type": "Identifier", - "start": 112575, - "end": 112578, + "start": 112881, + "end": 112884, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 36 }, "end": { - "line": 2853, + "line": 2858, "column": 39 }, "identifierName": "len" @@ -96231,43 +96745,43 @@ }, "init": { "type": "MemberExpression", - "start": 112581, - "end": 112599, + "start": 112887, + "end": 112905, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 42 }, "end": { - "line": 2853, + "line": 2858, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 112581, - "end": 112592, + "start": 112887, + "end": 112898, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 42 }, "end": { - "line": 2853, + "line": 2858, "column": 53 } }, "object": { "type": "Identifier", - "start": 112581, - "end": 112584, + "start": 112887, + "end": 112890, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 42 }, "end": { - "line": 2853, + "line": 2858, "column": 45 }, "identifierName": "cfg" @@ -96276,15 +96790,15 @@ }, "property": { "type": "Identifier", - "start": 112585, - "end": 112592, + "start": 112891, + "end": 112898, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 46 }, "end": { - "line": 2853, + "line": 2858, "column": 53 }, "identifierName": "buckets" @@ -96295,15 +96809,15 @@ }, "property": { "type": "Identifier", - "start": 112593, - "end": 112599, + "start": 112899, + "end": 112905, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 54 }, "end": { - "line": 2853, + "line": 2858, "column": 60 }, "identifierName": "length" @@ -96318,29 +96832,29 @@ }, "test": { "type": "BinaryExpression", - "start": 112601, - "end": 112608, + "start": 112907, + "end": 112914, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 62 }, "end": { - "line": 2853, + "line": 2858, "column": 69 } }, "left": { "type": "Identifier", - "start": 112601, - "end": 112602, + "start": 112907, + "end": 112908, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 62 }, "end": { - "line": 2853, + "line": 2858, "column": 63 }, "identifierName": "i" @@ -96350,15 +96864,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 112605, - "end": 112608, + "start": 112911, + "end": 112914, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 66 }, "end": { - "line": 2853, + "line": 2858, "column": 69 }, "identifierName": "len" @@ -96368,15 +96882,15 @@ }, "update": { "type": "UpdateExpression", - "start": 112610, - "end": 112613, + "start": 112916, + "end": 112919, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 71 }, "end": { - "line": 2853, + "line": 2858, "column": 74 } }, @@ -96384,15 +96898,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 112610, - "end": 112611, + "start": 112916, + "end": 112917, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 71 }, "end": { - "line": 2853, + "line": 2858, "column": 72 }, "identifierName": "i" @@ -96402,59 +96916,59 @@ }, "body": { "type": "BlockStatement", - "start": 112615, - "end": 112996, + "start": 112921, + "end": 113302, "loc": { "start": { - "line": 2853, + "line": 2858, "column": 76 }, "end": { - "line": 2860, + "line": 2865, "column": 21 } }, "body": [ { "type": "VariableDeclaration", - "start": 112641, - "end": 112671, + "start": 112947, + "end": 112977, "loc": { "start": { - "line": 2854, + "line": 2859, "column": 24 }, "end": { - "line": 2854, + "line": 2859, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 112647, - "end": 112670, + "start": 112953, + "end": 112976, "loc": { "start": { - "line": 2854, + "line": 2859, "column": 30 }, "end": { - "line": 2854, + "line": 2859, "column": 53 } }, "id": { "type": "Identifier", - "start": 112647, - "end": 112653, + "start": 112953, + "end": 112959, "loc": { "start": { - "line": 2854, + "line": 2859, "column": 30 }, "end": { - "line": 2854, + "line": 2859, "column": 36 }, "identifierName": "bucket" @@ -96463,43 +96977,43 @@ }, "init": { "type": "MemberExpression", - "start": 112656, - "end": 112670, + "start": 112962, + "end": 112976, "loc": { "start": { - "line": 2854, + "line": 2859, "column": 39 }, "end": { - "line": 2854, + "line": 2859, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 112656, - "end": 112667, + "start": 112962, + "end": 112973, "loc": { "start": { - "line": 2854, + "line": 2859, "column": 39 }, "end": { - "line": 2854, + "line": 2859, "column": 50 } }, "object": { "type": "Identifier", - "start": 112656, - "end": 112659, + "start": 112962, + "end": 112965, "loc": { "start": { - "line": 2854, + "line": 2859, "column": 39 }, "end": { - "line": 2854, + "line": 2859, "column": 42 }, "identifierName": "cfg" @@ -96508,15 +97022,15 @@ }, "property": { "type": "Identifier", - "start": 112660, - "end": 112667, + "start": 112966, + "end": 112973, "loc": { "start": { - "line": 2854, + "line": 2859, "column": 43 }, "end": { - "line": 2854, + "line": 2859, "column": 50 }, "identifierName": "buckets" @@ -96527,15 +97041,15 @@ }, "property": { "type": "Identifier", - "start": 112668, - "end": 112669, + "start": 112974, + "end": 112975, "loc": { "start": { - "line": 2854, + "line": 2859, "column": 51 }, "end": { - "line": 2854, + "line": 2859, "column": 52 }, "identifierName": "i" @@ -96550,43 +97064,43 @@ }, { "type": "IfStatement", - "start": 112696, - "end": 112974, + "start": 113002, + "end": 113280, "loc": { "start": { - "line": 2855, + "line": 2860, "column": 24 }, "end": { - "line": 2859, + "line": 2864, "column": 25 } }, "test": { "type": "MemberExpression", - "start": 112700, - "end": 112716, + "start": 113006, + "end": 113022, "loc": { "start": { - "line": 2855, + "line": 2860, "column": 28 }, "end": { - "line": 2855, + "line": 2860, "column": 44 } }, "object": { "type": "Identifier", - "start": 112700, - "end": 112706, + "start": 113006, + "end": 113012, "loc": { "start": { - "line": 2855, + "line": 2860, "column": 28 }, "end": { - "line": 2855, + "line": 2860, "column": 34 }, "identifierName": "bucket" @@ -96595,15 +97109,15 @@ }, "property": { "type": "Identifier", - "start": 112707, - "end": 112716, + "start": 113013, + "end": 113022, "loc": { "start": { - "line": 2855, + "line": 2860, "column": 35 }, "end": { - "line": 2855, + "line": 2860, "column": 44 }, "identifierName": "positions" @@ -96614,72 +97128,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 112718, - "end": 112822, + "start": 113024, + "end": 113128, "loc": { "start": { - "line": 2855, + "line": 2860, "column": 46 }, "end": { - "line": 2857, + "line": 2862, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 112748, - "end": 112796, + "start": 113054, + "end": 113102, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 28 }, "end": { - "line": 2856, + "line": 2861, "column": 76 } }, "expression": { "type": "CallExpression", - "start": 112748, - "end": 112795, + "start": 113054, + "end": 113101, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 28 }, "end": { - "line": 2856, + "line": 2861, "column": 75 } }, "callee": { "type": "MemberExpression", - "start": 112748, - "end": 112771, + "start": 113054, + "end": 113077, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 28 }, "end": { - "line": 2856, + "line": 2861, "column": 51 } }, "object": { "type": "Identifier", - "start": 112748, - "end": 112752, + "start": 113054, + "end": 113058, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 28 }, "end": { - "line": 2856, + "line": 2861, "column": 32 }, "identifierName": "math" @@ -96688,15 +97202,15 @@ }, "property": { "type": "Identifier", - "start": 112753, - "end": 112771, + "start": 113059, + "end": 113077, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 33 }, "end": { - "line": 2856, + "line": 2861, "column": 51 }, "identifierName": "expandAABB3Points3" @@ -96708,15 +97222,15 @@ "arguments": [ { "type": "Identifier", - "start": 112772, - "end": 112776, + "start": 113078, + "end": 113082, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 52 }, "end": { - "line": 2856, + "line": 2861, "column": 56 }, "identifierName": "aabb" @@ -96725,29 +97239,29 @@ }, { "type": "MemberExpression", - "start": 112778, - "end": 112794, + "start": 113084, + "end": 113100, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 58 }, "end": { - "line": 2856, + "line": 2861, "column": 74 } }, "object": { "type": "Identifier", - "start": 112778, - "end": 112784, + "start": 113084, + "end": 113090, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 58 }, "end": { - "line": 2856, + "line": 2861, "column": 64 }, "identifierName": "bucket" @@ -96756,15 +97270,15 @@ }, "property": { "type": "Identifier", - "start": 112785, - "end": 112794, + "start": 113091, + "end": 113100, "loc": { "start": { - "line": 2856, + "line": 2861, "column": 65 }, "end": { - "line": 2856, + "line": 2861, "column": 74 }, "identifierName": "positions" @@ -96781,43 +97295,43 @@ }, "alternate": { "type": "IfStatement", - "start": 112828, - "end": 112974, + "start": 113134, + "end": 113280, "loc": { "start": { - "line": 2857, + "line": 2862, "column": 31 }, "end": { - "line": 2859, + "line": 2864, "column": 25 } }, "test": { "type": "MemberExpression", - "start": 112832, - "end": 112858, + "start": 113138, + "end": 113164, "loc": { "start": { - "line": 2857, + "line": 2862, "column": 35 }, "end": { - "line": 2857, + "line": 2862, "column": 61 } }, "object": { "type": "Identifier", - "start": 112832, - "end": 112838, + "start": 113138, + "end": 113144, "loc": { "start": { - "line": 2857, + "line": 2862, "column": 35 }, "end": { - "line": 2857, + "line": 2862, "column": 41 }, "identifierName": "bucket" @@ -96826,15 +97340,15 @@ }, "property": { "type": "Identifier", - "start": 112839, - "end": 112858, + "start": 113145, + "end": 113164, "loc": { "start": { - "line": 2857, + "line": 2862, "column": 42 }, "end": { - "line": 2857, + "line": 2862, "column": 61 }, "identifierName": "positionsCompressed" @@ -96845,72 +97359,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 112860, - "end": 112974, + "start": 113166, + "end": 113280, "loc": { "start": { - "line": 2857, + "line": 2862, "column": 63 }, "end": { - "line": 2859, + "line": 2864, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 112890, - "end": 112948, + "start": 113196, + "end": 113254, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 28 }, "end": { - "line": 2858, + "line": 2863, "column": 86 } }, "expression": { "type": "CallExpression", - "start": 112890, - "end": 112947, + "start": 113196, + "end": 113253, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 28 }, "end": { - "line": 2858, + "line": 2863, "column": 85 } }, "callee": { "type": "MemberExpression", - "start": 112890, - "end": 112913, + "start": 113196, + "end": 113219, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 28 }, "end": { - "line": 2858, + "line": 2863, "column": 51 } }, "object": { "type": "Identifier", - "start": 112890, - "end": 112894, + "start": 113196, + "end": 113200, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 28 }, "end": { - "line": 2858, + "line": 2863, "column": 32 }, "identifierName": "math" @@ -96919,15 +97433,15 @@ }, "property": { "type": "Identifier", - "start": 112895, - "end": 112913, + "start": 113201, + "end": 113219, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 33 }, "end": { - "line": 2858, + "line": 2863, "column": 51 }, "identifierName": "expandAABB3Points3" @@ -96939,15 +97453,15 @@ "arguments": [ { "type": "Identifier", - "start": 112914, - "end": 112918, + "start": 113220, + "end": 113224, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 52 }, "end": { - "line": 2858, + "line": 2863, "column": 56 }, "identifierName": "aabb" @@ -96956,29 +97470,29 @@ }, { "type": "MemberExpression", - "start": 112920, - "end": 112946, + "start": 113226, + "end": 113252, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 58 }, "end": { - "line": 2858, + "line": 2863, "column": 84 } }, "object": { "type": "Identifier", - "start": 112920, - "end": 112926, + "start": 113226, + "end": 113232, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 58 }, "end": { - "line": 2858, + "line": 2863, "column": 64 }, "identifierName": "bucket" @@ -96987,15 +97501,15 @@ }, "property": { "type": "Identifier", - "start": 112927, - "end": 112946, + "start": 113233, + "end": 113252, "loc": { "start": { - "line": 2858, + "line": 2863, "column": 65 }, "end": { - "line": 2858, + "line": 2863, "column": 84 }, "identifierName": "positionsCompressed" @@ -97019,43 +97533,43 @@ }, { "type": "IfStatement", - "start": 113017, - "end": 113169, + "start": 113323, + "end": 113475, "loc": { "start": { - "line": 2861, + "line": 2866, "column": 20 }, "end": { - "line": 2863, + "line": 2868, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 113021, - "end": 113046, + "start": 113327, + "end": 113352, "loc": { "start": { - "line": 2861, + "line": 2866, "column": 24 }, "end": { - "line": 2861, + "line": 2866, "column": 49 } }, "object": { "type": "Identifier", - "start": 113021, - "end": 113024, + "start": 113327, + "end": 113330, "loc": { "start": { - "line": 2861, + "line": 2866, "column": 24 }, "end": { - "line": 2861, + "line": 2866, "column": 27 }, "identifierName": "cfg" @@ -97064,15 +97578,15 @@ }, "property": { "type": "Identifier", - "start": 113025, - "end": 113046, + "start": 113331, + "end": 113352, "loc": { "start": { - "line": 2861, + "line": 2866, "column": 28 }, "end": { - "line": 2861, + "line": 2866, "column": 49 }, "identifierName": "positionsDecodeMatrix" @@ -97083,72 +97597,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 113048, - "end": 113169, + "start": 113354, + "end": 113475, "loc": { "start": { - "line": 2861, + "line": 2866, "column": 51 }, "end": { - "line": 2863, + "line": 2868, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 113074, - "end": 113147, + "start": 113380, + "end": 113453, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 24 }, "end": { - "line": 2862, + "line": 2867, "column": 97 } }, "expression": { "type": "CallExpression", - "start": 113074, - "end": 113146, + "start": 113380, + "end": 113452, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 24 }, "end": { - "line": 2862, + "line": 2867, "column": 96 } }, "callee": { "type": "MemberExpression", - "start": 113074, - "end": 113113, + "start": 113380, + "end": 113419, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 24 }, "end": { - "line": 2862, + "line": 2867, "column": 63 } }, "object": { "type": "Identifier", - "start": 113074, - "end": 113098, + "start": 113380, + "end": 113404, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 24 }, "end": { - "line": 2862, + "line": 2867, "column": 48 }, "identifierName": "geometryCompressionUtils" @@ -97157,15 +97671,15 @@ }, "property": { "type": "Identifier", - "start": 113099, - "end": 113113, + "start": 113405, + "end": 113419, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 49 }, "end": { - "line": 2862, + "line": 2867, "column": 63 }, "identifierName": "decompressAABB" @@ -97177,15 +97691,15 @@ "arguments": [ { "type": "Identifier", - "start": 113114, - "end": 113118, + "start": 113420, + "end": 113424, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 64 }, "end": { - "line": 2862, + "line": 2867, "column": 68 }, "identifierName": "aabb" @@ -97194,29 +97708,29 @@ }, { "type": "MemberExpression", - "start": 113120, - "end": 113145, + "start": 113426, + "end": 113451, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 70 }, "end": { - "line": 2862, + "line": 2867, "column": 95 } }, "object": { "type": "Identifier", - "start": 113120, - "end": 113123, + "start": 113426, + "end": 113429, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 70 }, "end": { - "line": 2862, + "line": 2867, "column": 73 }, "identifierName": "cfg" @@ -97225,15 +97739,15 @@ }, "property": { "type": "Identifier", - "start": 113124, - "end": 113145, + "start": 113430, + "end": 113451, "loc": { "start": { - "line": 2862, + "line": 2867, "column": 74 }, "end": { - "line": 2862, + "line": 2867, "column": 95 }, "identifierName": "positionsDecodeMatrix" @@ -97252,58 +97766,58 @@ }, { "type": "ExpressionStatement", - "start": 113190, - "end": 113206, + "start": 113496, + "end": 113512, "loc": { "start": { - "line": 2864, + "line": 2869, "column": 20 }, "end": { - "line": 2864, + "line": 2869, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 113190, - "end": 113205, + "start": 113496, + "end": 113511, "loc": { "start": { - "line": 2864, + "line": 2869, "column": 20 }, "end": { - "line": 2864, + "line": 2869, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 113190, - "end": 113198, + "start": 113496, + "end": 113504, "loc": { "start": { - "line": 2864, + "line": 2869, "column": 20 }, "end": { - "line": 2864, + "line": 2869, "column": 28 } }, "object": { "type": "Identifier", - "start": 113190, - "end": 113193, + "start": 113496, + "end": 113499, "loc": { "start": { - "line": 2864, + "line": 2869, "column": 20 }, "end": { - "line": 2864, + "line": 2869, "column": 23 }, "identifierName": "cfg" @@ -97312,15 +97826,15 @@ }, "property": { "type": "Identifier", - "start": 113194, - "end": 113198, + "start": 113500, + "end": 113504, "loc": { "start": { - "line": 2864, + "line": 2869, "column": 24 }, "end": { - "line": 2864, + "line": 2869, "column": 28 }, "identifierName": "aabb" @@ -97331,15 +97845,15 @@ }, "right": { "type": "Identifier", - "start": 113201, - "end": 113205, + "start": 113507, + "end": 113511, "loc": { "start": { - "line": 2864, + "line": 2869, "column": 31 }, "end": { - "line": 2864, + "line": 2869, "column": 35 }, "identifierName": "aabb" @@ -97355,43 +97869,43 @@ }, { "type": "IfStatement", - "start": 113242, - "end": 113463, + "start": 113548, + "end": 113769, "loc": { "start": { - "line": 2867, + "line": 2872, "column": 16 }, "end": { - "line": 2871, + "line": 2876, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 113246, - "end": 113260, + "start": 113552, + "end": 113566, "loc": { "start": { - "line": 2867, + "line": 2872, "column": 20 }, "end": { - "line": 2867, + "line": 2872, "column": 34 } }, "object": { "type": "Identifier", - "start": 113246, - "end": 113249, + "start": 113552, + "end": 113555, "loc": { "start": { - "line": 2867, + "line": 2872, "column": 20 }, "end": { - "line": 2867, + "line": 2872, "column": 23 }, "identifierName": "cfg" @@ -97400,15 +97914,15 @@ }, "property": { "type": "Identifier", - "start": 113250, - "end": 113260, + "start": 113556, + "end": 113566, "loc": { "start": { - "line": 2867, + "line": 2872, "column": 24 }, "end": { - "line": 2867, + "line": 2872, "column": 34 }, "identifierName": "meshMatrix" @@ -97419,72 +97933,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 113262, - "end": 113463, + "start": 113568, + "end": 113769, "loc": { "start": { - "line": 2867, + "line": 2872, "column": 36 }, "end": { - "line": 2871, + "line": 2876, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 113284, - "end": 113321, + "start": 113590, + "end": 113627, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 20 }, "end": { - "line": 2868, + "line": 2873, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 113284, - "end": 113320, + "start": 113590, + "end": 113626, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 20 }, "end": { - "line": 2868, + "line": 2873, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 113284, - "end": 113300, + "start": 113590, + "end": 113606, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 20 }, "end": { - "line": 2868, + "line": 2873, "column": 36 } }, "object": { "type": "Identifier", - "start": 113284, - "end": 113288, + "start": 113590, + "end": 113594, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 20 }, "end": { - "line": 2868, + "line": 2873, "column": 24 }, "identifierName": "math" @@ -97493,15 +98007,15 @@ }, "property": { "type": "Identifier", - "start": 113289, - "end": 113300, + "start": 113595, + "end": 113606, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 25 }, "end": { - "line": 2868, + "line": 2873, "column": 36 }, "identifierName": "AABB3ToOBB3" @@ -97513,29 +98027,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 113301, - "end": 113309, + "start": 113607, + "end": 113615, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 37 }, "end": { - "line": 2868, + "line": 2873, "column": 45 } }, "object": { "type": "Identifier", - "start": 113301, - "end": 113304, + "start": 113607, + "end": 113610, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 37 }, "end": { - "line": 2868, + "line": 2873, "column": 40 }, "identifierName": "cfg" @@ -97544,15 +98058,15 @@ }, "property": { "type": "Identifier", - "start": 113305, - "end": 113309, + "start": 113611, + "end": 113615, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 41 }, "end": { - "line": 2868, + "line": 2873, "column": 45 }, "identifierName": "aabb" @@ -97563,15 +98077,15 @@ }, { "type": "Identifier", - "start": 113311, - "end": 113319, + "start": 113617, + "end": 113625, "loc": { "start": { - "line": 2868, + "line": 2873, "column": 47 }, "end": { - "line": 2868, + "line": 2873, "column": 55 }, "identifierName": "tempOBB3" @@ -97583,57 +98097,57 @@ }, { "type": "ExpressionStatement", - "start": 113342, - "end": 113387, + "start": 113648, + "end": 113693, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 20 }, "end": { - "line": 2869, + "line": 2874, "column": 65 } }, "expression": { "type": "CallExpression", - "start": 113342, - "end": 113386, + "start": 113648, + "end": 113692, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 20 }, "end": { - "line": 2869, + "line": 2874, "column": 64 } }, "callee": { "type": "MemberExpression", - "start": 113342, - "end": 113360, + "start": 113648, + "end": 113666, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 20 }, "end": { - "line": 2869, + "line": 2874, "column": 38 } }, "object": { "type": "Identifier", - "start": 113342, - "end": 113346, + "start": 113648, + "end": 113652, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 20 }, "end": { - "line": 2869, + "line": 2874, "column": 24 }, "identifierName": "math" @@ -97642,15 +98156,15 @@ }, "property": { "type": "Identifier", - "start": 113347, - "end": 113360, + "start": 113653, + "end": 113666, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 25 }, "end": { - "line": 2869, + "line": 2874, "column": 38 }, "identifierName": "transformOBB3" @@ -97662,29 +98176,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 113361, - "end": 113375, + "start": 113667, + "end": 113681, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 39 }, "end": { - "line": 2869, + "line": 2874, "column": 53 } }, "object": { "type": "Identifier", - "start": 113361, - "end": 113364, + "start": 113667, + "end": 113670, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 39 }, "end": { - "line": 2869, + "line": 2874, "column": 42 }, "identifierName": "cfg" @@ -97693,15 +98207,15 @@ }, "property": { "type": "Identifier", - "start": 113365, - "end": 113375, + "start": 113671, + "end": 113681, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 43 }, "end": { - "line": 2869, + "line": 2874, "column": 53 }, "identifierName": "meshMatrix" @@ -97712,15 +98226,15 @@ }, { "type": "Identifier", - "start": 113377, - "end": 113385, + "start": 113683, + "end": 113691, "loc": { "start": { - "line": 2869, + "line": 2874, "column": 55 }, "end": { - "line": 2869, + "line": 2874, "column": 63 }, "identifierName": "tempOBB3" @@ -97732,57 +98246,57 @@ }, { "type": "ExpressionStatement", - "start": 113408, - "end": 113445, + "start": 113714, + "end": 113751, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 20 }, "end": { - "line": 2870, + "line": 2875, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 113408, - "end": 113444, + "start": 113714, + "end": 113750, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 20 }, "end": { - "line": 2870, + "line": 2875, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 113408, - "end": 113424, + "start": 113714, + "end": 113730, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 20 }, "end": { - "line": 2870, + "line": 2875, "column": 36 } }, "object": { "type": "Identifier", - "start": 113408, - "end": 113412, + "start": 113714, + "end": 113718, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 20 }, "end": { - "line": 2870, + "line": 2875, "column": 24 }, "identifierName": "math" @@ -97791,15 +98305,15 @@ }, "property": { "type": "Identifier", - "start": 113413, - "end": 113424, + "start": 113719, + "end": 113730, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 25 }, "end": { - "line": 2870, + "line": 2875, "column": 36 }, "identifierName": "OBB3ToAABB3" @@ -97811,15 +98325,15 @@ "arguments": [ { "type": "Identifier", - "start": 113425, - "end": 113433, + "start": 113731, + "end": 113739, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 37 }, "end": { - "line": 2870, + "line": 2875, "column": 45 }, "identifierName": "tempOBB3" @@ -97828,29 +98342,29 @@ }, { "type": "MemberExpression", - "start": 113435, - "end": 113443, + "start": 113741, + "end": 113749, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 47 }, "end": { - "line": 2870, + "line": 2875, "column": 55 } }, "object": { "type": "Identifier", - "start": 113435, - "end": 113438, + "start": 113741, + "end": 113744, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 47 }, "end": { - "line": 2870, + "line": 2875, "column": 50 }, "identifierName": "cfg" @@ -97859,15 +98373,15 @@ }, "property": { "type": "Identifier", - "start": 113439, - "end": 113443, + "start": 113745, + "end": 113749, "loc": { "start": { - "line": 2870, + "line": 2875, "column": 51 }, "end": { - "line": 2870, + "line": 2875, "column": 55 }, "identifierName": "aabb" @@ -97888,15 +98402,15 @@ { "type": "CommentLine", "value": " EDGES", - "start": 113481, - "end": 113489, + "start": 113787, + "end": 113795, "loc": { "start": { - "line": 2873, + "line": 2878, "column": 16 }, "end": { - "line": 2873, + "line": 2878, "column": 24 } } @@ -97905,57 +98419,57 @@ }, { "type": "IfStatement", - "start": 113507, - "end": 113990, + "start": 113813, + "end": 114296, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 16 }, "end": { - "line": 2881, + "line": 2886, "column": 17 } }, "test": { "type": "LogicalExpression", - "start": 113511, - "end": 113638, + "start": 113817, + "end": 113944, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 20 }, "end": { - "line": 2875, + "line": 2880, "column": 147 } }, "left": { "type": "LogicalExpression", - "start": 113511, - "end": 113543, + "start": 113817, + "end": 113849, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 20 }, "end": { - "line": 2875, + "line": 2880, "column": 52 } }, "left": { "type": "UnaryExpression", - "start": 113511, - "end": 113523, + "start": 113817, + "end": 113829, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 20 }, "end": { - "line": 2875, + "line": 2880, "column": 32 } }, @@ -97963,29 +98477,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 113512, - "end": 113523, + "start": 113818, + "end": 113829, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 21 }, "end": { - "line": 2875, + "line": 2880, "column": 32 } }, "object": { "type": "Identifier", - "start": 113512, - "end": 113515, + "start": 113818, + "end": 113821, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 21 }, "end": { - "line": 2875, + "line": 2880, "column": 24 }, "identifierName": "cfg" @@ -97995,15 +98509,15 @@ }, "property": { "type": "Identifier", - "start": 113516, - "end": 113523, + "start": 113822, + "end": 113829, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 25 }, "end": { - "line": 2875, + "line": 2880, "column": 32 }, "identifierName": "buckets" @@ -98021,15 +98535,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 113527, - "end": 113543, + "start": 113833, + "end": 113849, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 36 }, "end": { - "line": 2875, + "line": 2880, "column": 52 } }, @@ -98037,29 +98551,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 113528, - "end": 113543, + "start": 113834, + "end": 113849, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 37 }, "end": { - "line": 2875, + "line": 2880, "column": 52 } }, "object": { "type": "Identifier", - "start": 113528, - "end": 113531, + "start": 113834, + "end": 113837, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 37 }, "end": { - "line": 2875, + "line": 2880, "column": 40 }, "identifierName": "cfg" @@ -98068,15 +98582,15 @@ }, "property": { "type": "Identifier", - "start": 113532, - "end": 113543, + "start": 113838, + "end": 113849, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 41 }, "end": { - "line": 2875, + "line": 2880, "column": 52 }, "identifierName": "edgeIndices" @@ -98094,71 +98608,71 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 113548, - "end": 113637, + "start": 113854, + "end": 113943, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 57 }, "end": { - "line": 2875, + "line": 2880, "column": 146 } }, "left": { "type": "LogicalExpression", - "start": 113548, - "end": 113606, + "start": 113854, + "end": 113912, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 57 }, "end": { - "line": 2875, + "line": 2880, "column": 115 } }, "left": { "type": "BinaryExpression", - "start": 113548, - "end": 113577, + "start": 113854, + "end": 113883, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 57 }, "end": { - "line": 2875, + "line": 2880, "column": 86 } }, "left": { "type": "MemberExpression", - "start": 113548, - "end": 113561, + "start": 113854, + "end": 113867, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 57 }, "end": { - "line": 2875, + "line": 2880, "column": 70 } }, "object": { "type": "Identifier", - "start": 113548, - "end": 113551, + "start": 113854, + "end": 113857, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 57 }, "end": { - "line": 2875, + "line": 2880, "column": 60 }, "identifierName": "cfg" @@ -98167,15 +98681,15 @@ }, "property": { "type": "Identifier", - "start": 113552, - "end": 113561, + "start": 113858, + "end": 113867, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 61 }, "end": { - "line": 2875, + "line": 2880, "column": 70 }, "identifierName": "primitive" @@ -98187,15 +98701,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 113566, - "end": 113577, + "start": 113872, + "end": 113883, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 75 }, "end": { - "line": 2875, + "line": 2880, "column": 86 } }, @@ -98209,43 +98723,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 113581, - "end": 113606, + "start": 113887, + "end": 113912, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 90 }, "end": { - "line": 2875, + "line": 2880, "column": 115 } }, "left": { "type": "MemberExpression", - "start": 113581, - "end": 113594, + "start": 113887, + "end": 113900, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 90 }, "end": { - "line": 2875, + "line": 2880, "column": 103 } }, "object": { "type": "Identifier", - "start": 113581, - "end": 113584, + "start": 113887, + "end": 113890, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 90 }, "end": { - "line": 2875, + "line": 2880, "column": 93 }, "identifierName": "cfg" @@ -98254,15 +98768,15 @@ }, "property": { "type": "Identifier", - "start": 113585, - "end": 113594, + "start": 113891, + "end": 113900, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 94 }, "end": { - "line": 2875, + "line": 2880, "column": 103 }, "identifierName": "primitive" @@ -98274,15 +98788,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 113599, - "end": 113606, + "start": 113905, + "end": 113912, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 108 }, "end": { - "line": 2875, + "line": 2880, "column": 115 } }, @@ -98297,43 +98811,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 113610, - "end": 113637, + "start": 113916, + "end": 113943, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 119 }, "end": { - "line": 2875, + "line": 2880, "column": 146 } }, "left": { "type": "MemberExpression", - "start": 113610, - "end": 113623, + "start": 113916, + "end": 113929, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 119 }, "end": { - "line": 2875, + "line": 2880, "column": 132 } }, "object": { "type": "Identifier", - "start": 113610, - "end": 113613, + "start": 113916, + "end": 113919, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 119 }, "end": { - "line": 2875, + "line": 2880, "column": 122 }, "identifierName": "cfg" @@ -98342,15 +98856,15 @@ }, "property": { "type": "Identifier", - "start": 113614, - "end": 113623, + "start": 113920, + "end": 113929, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 123 }, "end": { - "line": 2875, + "line": 2880, "column": 132 }, "identifierName": "primitive" @@ -98362,15 +98876,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 113628, - "end": 113637, + "start": 113934, + "end": 113943, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 137 }, "end": { - "line": 2875, + "line": 2880, "column": 146 } }, @@ -98383,65 +98897,65 @@ }, "extra": { "parenthesized": true, - "parenStart": 113547 + "parenStart": 113853 } }, "leadingComments": null }, "consequent": { "type": "BlockStatement", - "start": 113640, - "end": 113990, + "start": 113946, + "end": 114296, "loc": { "start": { - "line": 2875, + "line": 2880, "column": 149 }, "end": { - "line": 2881, + "line": 2886, "column": 17 } }, "body": [ { "type": "IfStatement", - "start": 113662, - "end": 113972, + "start": 113968, + "end": 114278, "loc": { "start": { - "line": 2876, + "line": 2881, "column": 20 }, "end": { - "line": 2880, + "line": 2885, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 113666, - "end": 113679, + "start": 113972, + "end": 113985, "loc": { "start": { - "line": 2876, + "line": 2881, "column": 24 }, "end": { - "line": 2876, + "line": 2881, "column": 37 } }, "object": { "type": "Identifier", - "start": 113666, - "end": 113669, + "start": 113972, + "end": 113975, "loc": { "start": { - "line": 2876, + "line": 2881, "column": 24 }, "end": { - "line": 2876, + "line": 2881, "column": 27 }, "identifierName": "cfg" @@ -98450,15 +98964,15 @@ }, "property": { "type": "Identifier", - "start": 113670, - "end": 113679, + "start": 113976, + "end": 113985, "loc": { "start": { - "line": 2876, + "line": 2881, "column": 28 }, "end": { - "line": 2876, + "line": 2881, "column": 37 }, "identifierName": "positions" @@ -98469,73 +98983,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 113681, - "end": 113813, + "start": 113987, + "end": 114119, "loc": { "start": { - "line": 2876, + "line": 2881, "column": 39 }, "end": { - "line": 2878, + "line": 2883, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 113717, - "end": 113791, + "start": 114023, + "end": 114097, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 24 }, "end": { - "line": 2877, + "line": 2882, "column": 98 } }, "expression": { "type": "AssignmentExpression", - "start": 113717, - "end": 113790, + "start": 114023, + "end": 114096, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 24 }, "end": { - "line": 2877, + "line": 2882, "column": 97 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 113717, - "end": 113732, + "start": 114023, + "end": 114038, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 24 }, "end": { - "line": 2877, + "line": 2882, "column": 39 } }, "object": { "type": "Identifier", - "start": 113717, - "end": 113720, + "start": 114023, + "end": 114026, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 24 }, "end": { - "line": 2877, + "line": 2882, "column": 27 }, "identifierName": "cfg" @@ -98545,15 +99059,15 @@ }, "property": { "type": "Identifier", - "start": 113721, - "end": 113732, + "start": 114027, + "end": 114038, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 28 }, "end": { - "line": 2877, + "line": 2882, "column": 39 }, "identifierName": "edgeIndices" @@ -98565,29 +99079,29 @@ }, "right": { "type": "CallExpression", - "start": 113735, - "end": 113790, + "start": 114041, + "end": 114096, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 42 }, "end": { - "line": 2877, + "line": 2882, "column": 97 } }, "callee": { "type": "Identifier", - "start": 113735, - "end": 113751, + "start": 114041, + "end": 114057, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 42 }, "end": { - "line": 2877, + "line": 2882, "column": 58 }, "identifierName": "buildEdgeIndices" @@ -98597,29 +99111,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 113752, - "end": 113765, + "start": 114058, + "end": 114071, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 59 }, "end": { - "line": 2877, + "line": 2882, "column": 72 } }, "object": { "type": "Identifier", - "start": 113752, - "end": 113755, + "start": 114058, + "end": 114061, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 59 }, "end": { - "line": 2877, + "line": 2882, "column": 62 }, "identifierName": "cfg" @@ -98628,15 +99142,15 @@ }, "property": { "type": "Identifier", - "start": 113756, - "end": 113765, + "start": 114062, + "end": 114071, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 63 }, "end": { - "line": 2877, + "line": 2882, "column": 72 }, "identifierName": "positions" @@ -98647,29 +99161,29 @@ }, { "type": "MemberExpression", - "start": 113767, - "end": 113778, + "start": 114073, + "end": 114084, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 74 }, "end": { - "line": 2877, + "line": 2882, "column": 85 } }, "object": { "type": "Identifier", - "start": 113767, - "end": 113770, + "start": 114073, + "end": 114076, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 74 }, "end": { - "line": 2877, + "line": 2882, "column": 77 }, "identifierName": "cfg" @@ -98678,15 +99192,15 @@ }, "property": { "type": "Identifier", - "start": 113771, - "end": 113778, + "start": 114077, + "end": 114084, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 78 }, "end": { - "line": 2877, + "line": 2882, "column": 85 }, "identifierName": "indices" @@ -98697,30 +99211,30 @@ }, { "type": "NullLiteral", - "start": 113780, - "end": 113784, + "start": 114086, + "end": 114090, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 87 }, "end": { - "line": 2877, + "line": 2882, "column": 91 } } }, { "type": "NumericLiteral", - "start": 113786, - "end": 113789, + "start": 114092, + "end": 114095, "loc": { "start": { - "line": 2877, + "line": 2882, "column": 93 }, "end": { - "line": 2877, + "line": 2882, "column": 96 } }, @@ -98738,15 +99252,15 @@ { "type": "CommentLine", "value": " Faster", - "start": 113683, - "end": 113692, + "start": 113989, + "end": 113998, "loc": { "start": { - "line": 2876, + "line": 2881, "column": 41 }, "end": { - "line": 2876, + "line": 2881, "column": 50 } } @@ -98758,73 +99272,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 113819, - "end": 113972, + "start": 114125, + "end": 114278, "loc": { "start": { - "line": 2878, + "line": 2883, "column": 27 }, "end": { - "line": 2880, + "line": 2885, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 113845, - "end": 113950, + "start": 114151, + "end": 114256, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 24 }, "end": { - "line": 2879, + "line": 2884, "column": 129 } }, "expression": { "type": "AssignmentExpression", - "start": 113845, - "end": 113949, + "start": 114151, + "end": 114255, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 24 }, "end": { - "line": 2879, + "line": 2884, "column": 128 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 113845, - "end": 113860, + "start": 114151, + "end": 114166, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 24 }, "end": { - "line": 2879, + "line": 2884, "column": 39 } }, "object": { "type": "Identifier", - "start": 113845, - "end": 113848, + "start": 114151, + "end": 114154, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 24 }, "end": { - "line": 2879, + "line": 2884, "column": 27 }, "identifierName": "cfg" @@ -98833,15 +99347,15 @@ }, "property": { "type": "Identifier", - "start": 113849, - "end": 113860, + "start": 114155, + "end": 114166, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 28 }, "end": { - "line": 2879, + "line": 2884, "column": 39 }, "identifierName": "edgeIndices" @@ -98852,29 +99366,29 @@ }, "right": { "type": "CallExpression", - "start": 113863, - "end": 113949, + "start": 114169, + "end": 114255, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 42 }, "end": { - "line": 2879, + "line": 2884, "column": 128 } }, "callee": { "type": "Identifier", - "start": 113863, - "end": 113879, + "start": 114169, + "end": 114185, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 42 }, "end": { - "line": 2879, + "line": 2884, "column": 58 }, "identifierName": "buildEdgeIndices" @@ -98884,29 +99398,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 113880, - "end": 113903, + "start": 114186, + "end": 114209, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 59 }, "end": { - "line": 2879, + "line": 2884, "column": 82 } }, "object": { "type": "Identifier", - "start": 113880, - "end": 113883, + "start": 114186, + "end": 114189, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 59 }, "end": { - "line": 2879, + "line": 2884, "column": 62 }, "identifierName": "cfg" @@ -98915,15 +99429,15 @@ }, "property": { "type": "Identifier", - "start": 113884, - "end": 113903, + "start": 114190, + "end": 114209, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 63 }, "end": { - "line": 2879, + "line": 2884, "column": 82 }, "identifierName": "positionsCompressed" @@ -98934,29 +99448,29 @@ }, { "type": "MemberExpression", - "start": 113905, - "end": 113916, + "start": 114211, + "end": 114222, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 84 }, "end": { - "line": 2879, + "line": 2884, "column": 95 } }, "object": { "type": "Identifier", - "start": 113905, - "end": 113908, + "start": 114211, + "end": 114214, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 84 }, "end": { - "line": 2879, + "line": 2884, "column": 87 }, "identifierName": "cfg" @@ -98965,15 +99479,15 @@ }, "property": { "type": "Identifier", - "start": 113909, - "end": 113916, + "start": 114215, + "end": 114222, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 88 }, "end": { - "line": 2879, + "line": 2884, "column": 95 }, "identifierName": "indices" @@ -98984,29 +99498,29 @@ }, { "type": "MemberExpression", - "start": 113918, - "end": 113943, + "start": 114224, + "end": 114249, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 97 }, "end": { - "line": 2879, + "line": 2884, "column": 122 } }, "object": { "type": "Identifier", - "start": 113918, - "end": 113921, + "start": 114224, + "end": 114227, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 97 }, "end": { - "line": 2879, + "line": 2884, "column": 100 }, "identifierName": "cfg" @@ -99015,15 +99529,15 @@ }, "property": { "type": "Identifier", - "start": 113922, - "end": 113943, + "start": 114228, + "end": 114249, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 101 }, "end": { - "line": 2879, + "line": 2884, "column": 122 }, "identifierName": "positionsDecodeMatrix" @@ -99034,15 +99548,15 @@ }, { "type": "NumericLiteral", - "start": 113945, - "end": 113948, + "start": 114251, + "end": 114254, "loc": { "start": { - "line": 2879, + "line": 2884, "column": 124 }, "end": { - "line": 2879, + "line": 2884, "column": 127 } }, @@ -99069,15 +99583,15 @@ { "type": "CommentLine", "value": " EDGES", - "start": 113481, - "end": 113489, + "start": 113787, + "end": 113795, "loc": { "start": { - "line": 2873, + "line": 2878, "column": 16 }, "end": { - "line": 2873, + "line": 2878, "column": 24 } } @@ -99087,15 +99601,15 @@ { "type": "CommentLine", "value": " BUCKETING", - "start": 114008, - "end": 114020, + "start": 114314, + "end": 114326, "loc": { "start": { - "line": 2883, + "line": 2888, "column": 16 }, "end": { - "line": 2883, + "line": 2888, "column": 28 } } @@ -99104,29 +99618,29 @@ }, { "type": "IfStatement", - "start": 114038, - "end": 114189, + "start": 114344, + "end": 114495, "loc": { "start": { - "line": 2885, + "line": 2890, "column": 16 }, "end": { - "line": 2887, + "line": 2892, "column": 17 } }, "test": { "type": "UnaryExpression", - "start": 114042, - "end": 114054, + "start": 114348, + "end": 114360, "loc": { "start": { - "line": 2885, + "line": 2890, "column": 20 }, "end": { - "line": 2885, + "line": 2890, "column": 32 } }, @@ -99134,29 +99648,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 114043, - "end": 114054, + "start": 114349, + "end": 114360, "loc": { "start": { - "line": 2885, + "line": 2890, "column": 21 }, "end": { - "line": 2885, + "line": 2890, "column": 32 } }, "object": { "type": "Identifier", - "start": 114043, - "end": 114046, + "start": 114349, + "end": 114352, "loc": { "start": { - "line": 2885, + "line": 2890, "column": 21 }, "end": { - "line": 2885, + "line": 2890, "column": 24 }, "identifierName": "cfg" @@ -99166,15 +99680,15 @@ }, "property": { "type": "Identifier", - "start": 114047, - "end": 114054, + "start": 114353, + "end": 114360, "loc": { "start": { - "line": 2885, + "line": 2890, "column": 25 }, "end": { - "line": 2885, + "line": 2890, "column": 32 }, "identifierName": "buckets" @@ -99191,73 +99705,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 114056, - "end": 114189, + "start": 114362, + "end": 114495, "loc": { "start": { - "line": 2885, + "line": 2890, "column": 34 }, "end": { - "line": 2887, + "line": 2892, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 114078, - "end": 114171, + "start": 114384, + "end": 114477, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 20 }, "end": { - "line": 2886, + "line": 2891, "column": 113 } }, "expression": { "type": "AssignmentExpression", - "start": 114078, - "end": 114170, + "start": 114384, + "end": 114476, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 20 }, "end": { - "line": 2886, + "line": 2891, "column": 112 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 114078, - "end": 114089, + "start": 114384, + "end": 114395, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 20 }, "end": { - "line": 2886, + "line": 2891, "column": 31 } }, "object": { "type": "Identifier", - "start": 114078, - "end": 114081, + "start": 114384, + "end": 114387, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 20 }, "end": { - "line": 2886, + "line": 2891, "column": 23 }, "identifierName": "cfg" @@ -99266,15 +99780,15 @@ }, "property": { "type": "Identifier", - "start": 114082, - "end": 114089, + "start": 114388, + "end": 114395, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 24 }, "end": { - "line": 2886, + "line": 2891, "column": 31 }, "identifierName": "buckets" @@ -99285,29 +99799,29 @@ }, "right": { "type": "CallExpression", - "start": 114092, - "end": 114170, + "start": 114398, + "end": 114476, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 34 }, "end": { - "line": 2886, + "line": 2891, "column": 112 } }, "callee": { "type": "Identifier", - "start": 114092, - "end": 114108, + "start": 114398, + "end": 114414, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 34 }, "end": { - "line": 2886, + "line": 2891, "column": 50 }, "identifierName": "createDTXBuckets" @@ -99317,15 +99831,15 @@ "arguments": [ { "type": "Identifier", - "start": 114109, - "end": 114112, + "start": 114415, + "end": 114418, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 51 }, "end": { - "line": 2886, + "line": 2891, "column": 54 }, "identifierName": "cfg" @@ -99334,58 +99848,58 @@ }, { "type": "LogicalExpression", - "start": 114114, - "end": 114169, + "start": 114420, + "end": 114475, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 56 }, "end": { - "line": 2886, + "line": 2891, "column": 111 } }, "left": { "type": "MemberExpression", - "start": 114114, - "end": 114139, + "start": 114420, + "end": 114445, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 56 }, "end": { - "line": 2886, + "line": 2891, "column": 81 } }, "object": { "type": "ThisExpression", - "start": 114114, - "end": 114118, + "start": 114420, + "end": 114424, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 56 }, "end": { - "line": 2886, + "line": 2891, "column": 60 } } }, "property": { "type": "Identifier", - "start": 114119, - "end": 114139, + "start": 114425, + "end": 114445, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 61 }, "end": { - "line": 2886, + "line": 2891, "column": 81 }, "identifierName": "_enableVertexWelding" @@ -99397,44 +99911,44 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 114143, - "end": 114169, + "start": 114449, + "end": 114475, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 85 }, "end": { - "line": 2886, + "line": 2891, "column": 111 } }, "object": { "type": "ThisExpression", - "start": 114143, - "end": 114147, + "start": 114449, + "end": 114453, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 85 }, "end": { - "line": 2886, + "line": 2891, "column": 89 } } }, "property": { "type": "Identifier", - "start": 114148, - "end": 114169, + "start": 114454, + "end": 114475, "loc": { "start": { - "line": 2886, + "line": 2891, "column": 90 }, "end": { - "line": 2886, + "line": 2891, "column": 111 }, "identifierName": "_enableIndexBucketing" @@ -99456,15 +99970,15 @@ { "type": "CommentLine", "value": " BUCKETING", - "start": 114008, - "end": 114020, + "start": 114314, + "end": 114326, "loc": { "start": { - "line": 2883, + "line": 2888, "column": 16 }, "end": { - "line": 2883, + "line": 2888, "column": 28 } } @@ -99476,73 +99990,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 114210, - "end": 117294, + "start": 114516, + "end": 117600, "loc": { "start": { - "line": 2889, + "line": 2894, "column": 19 }, "end": { - "line": 2955, + "line": 2960, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 114253, - "end": 114276, + "start": 114559, + "end": 114582, "loc": { "start": { - "line": 2893, + "line": 2898, "column": 16 }, "end": { - "line": 2893, + "line": 2898, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 114253, - "end": 114275, + "start": 114559, + "end": 114581, "loc": { "start": { - "line": 2893, + "line": 2898, "column": 16 }, "end": { - "line": 2893, + "line": 2898, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 114253, - "end": 114261, + "start": 114559, + "end": 114567, "loc": { "start": { - "line": 2893, + "line": 2898, "column": 16 }, "end": { - "line": 2893, + "line": 2898, "column": 24 } }, "object": { "type": "Identifier", - "start": 114253, - "end": 114256, + "start": 114559, + "end": 114562, "loc": { "start": { - "line": 2893, + "line": 2898, "column": 16 }, "end": { - "line": 2893, + "line": 2898, "column": 19 }, "identifierName": "cfg" @@ -99552,15 +100066,15 @@ }, "property": { "type": "Identifier", - "start": 114257, - "end": 114261, + "start": 114563, + "end": 114567, "loc": { "start": { - "line": 2893, + "line": 2898, "column": 20 }, "end": { - "line": 2893, + "line": 2898, "column": 24 }, "identifierName": "type" @@ -99572,15 +100086,15 @@ }, "right": { "type": "Identifier", - "start": 114264, - "end": 114275, + "start": 114570, + "end": 114581, "loc": { "start": { - "line": 2893, + "line": 2898, "column": 27 }, "end": { - "line": 2893, + "line": 2898, "column": 38 }, "identifierName": "VBO_BATCHED" @@ -99593,15 +100107,15 @@ { "type": "CommentLine", "value": " VBO", - "start": 114229, - "end": 114235, + "start": 114535, + "end": 114541, "loc": { "start": { - "line": 2891, + "line": 2896, "column": 16 }, "end": { - "line": 2891, + "line": 2896, "column": 22 } } @@ -99611,15 +100125,15 @@ { "type": "CommentLine", "value": " PBR", - "start": 114294, - "end": 114300, + "start": 114600, + "end": 114606, "loc": { "start": { - "line": 2895, + "line": 2900, "column": 16 }, "end": { - "line": 2895, + "line": 2900, "column": 22 } } @@ -99628,58 +100142,58 @@ }, { "type": "ExpressionStatement", - "start": 114318, - "end": 114475, + "start": 114624, + "end": 114781, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 16 }, "end": { - "line": 2897, + "line": 2902, "column": 173 } }, "expression": { "type": "AssignmentExpression", - "start": 114318, - "end": 114474, + "start": 114624, + "end": 114780, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 16 }, "end": { - "line": 2897, + "line": 2902, "column": 172 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 114318, - "end": 114327, + "start": 114624, + "end": 114633, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 16 }, "end": { - "line": 2897, + "line": 2902, "column": 25 } }, "object": { "type": "Identifier", - "start": 114318, - "end": 114321, + "start": 114624, + "end": 114627, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 16 }, "end": { - "line": 2897, + "line": 2902, "column": 19 }, "identifierName": "cfg" @@ -99689,15 +100203,15 @@ }, "property": { "type": "Identifier", - "start": 114322, - "end": 114327, + "start": 114628, + "end": 114633, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 20 }, "end": { - "line": 2897, + "line": 2902, "column": 25 }, "identifierName": "color" @@ -99709,43 +100223,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 114330, - "end": 114474, + "start": 114636, + "end": 114780, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 28 }, "end": { - "line": 2897, + "line": 2902, "column": 172 } }, "test": { "type": "MemberExpression", - "start": 114331, - "end": 114340, + "start": 114637, + "end": 114646, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 29 }, "end": { - "line": 2897, + "line": 2902, "column": 38 } }, "object": { "type": "Identifier", - "start": 114331, - "end": 114334, + "start": 114637, + "end": 114640, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 29 }, "end": { - "line": 2897, + "line": 2902, "column": 32 }, "identifierName": "cfg" @@ -99754,15 +100268,15 @@ }, "property": { "type": "Identifier", - "start": 114335, - "end": 114340, + "start": 114641, + "end": 114646, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 33 }, "end": { - "line": 2897, + "line": 2902, "column": 38 }, "identifierName": "color" @@ -99772,34 +100286,34 @@ "computed": false, "extra": { "parenthesized": true, - "parenStart": 114330 + "parenStart": 114636 } }, "consequent": { "type": "NewExpression", - "start": 114344, - "end": 114456, + "start": 114650, + "end": 114762, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 42 }, "end": { - "line": 2897, + "line": 2902, "column": 154 } }, "callee": { "type": "Identifier", - "start": 114348, - "end": 114358, + "start": 114654, + "end": 114664, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 46 }, "end": { - "line": 2897, + "line": 2902, "column": 56 }, "identifierName": "Uint8Array" @@ -99809,58 +100323,58 @@ "arguments": [ { "type": "ArrayExpression", - "start": 114359, - "end": 114455, + "start": 114665, + "end": 114761, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 57 }, "end": { - "line": 2897, + "line": 2902, "column": 153 } }, "elements": [ { "type": "CallExpression", - "start": 114360, - "end": 114390, + "start": 114666, + "end": 114696, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 58 }, "end": { - "line": 2897, + "line": 2902, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 114360, - "end": 114370, + "start": 114666, + "end": 114676, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 58 }, "end": { - "line": 2897, + "line": 2902, "column": 68 } }, "object": { "type": "Identifier", - "start": 114360, - "end": 114364, + "start": 114666, + "end": 114670, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 58 }, "end": { - "line": 2897, + "line": 2902, "column": 62 }, "identifierName": "Math" @@ -99869,15 +100383,15 @@ }, "property": { "type": "Identifier", - "start": 114365, - "end": 114370, + "start": 114671, + "end": 114676, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 63 }, "end": { - "line": 2897, + "line": 2902, "column": 68 }, "identifierName": "floor" @@ -99889,57 +100403,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 114371, - "end": 114389, + "start": 114677, + "end": 114695, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 69 }, "end": { - "line": 2897, + "line": 2902, "column": 87 } }, "left": { "type": "MemberExpression", - "start": 114371, - "end": 114383, + "start": 114677, + "end": 114689, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 69 }, "end": { - "line": 2897, + "line": 2902, "column": 81 } }, "object": { "type": "MemberExpression", - "start": 114371, - "end": 114380, + "start": 114677, + "end": 114686, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 69 }, "end": { - "line": 2897, + "line": 2902, "column": 78 } }, "object": { "type": "Identifier", - "start": 114371, - "end": 114374, + "start": 114677, + "end": 114680, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 69 }, "end": { - "line": 2897, + "line": 2902, "column": 72 }, "identifierName": "cfg" @@ -99948,15 +100462,15 @@ }, "property": { "type": "Identifier", - "start": 114375, - "end": 114380, + "start": 114681, + "end": 114686, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 73 }, "end": { - "line": 2897, + "line": 2902, "column": 78 }, "identifierName": "color" @@ -99967,15 +100481,15 @@ }, "property": { "type": "NumericLiteral", - "start": 114381, - "end": 114382, + "start": 114687, + "end": 114688, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 79 }, "end": { - "line": 2897, + "line": 2902, "column": 80 } }, @@ -99990,15 +100504,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 114386, - "end": 114389, + "start": 114692, + "end": 114695, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 84 }, "end": { - "line": 2897, + "line": 2902, "column": 87 } }, @@ -100013,43 +100527,43 @@ }, { "type": "CallExpression", - "start": 114392, - "end": 114422, + "start": 114698, + "end": 114728, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 90 }, "end": { - "line": 2897, + "line": 2902, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 114392, - "end": 114402, + "start": 114698, + "end": 114708, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 90 }, "end": { - "line": 2897, + "line": 2902, "column": 100 } }, "object": { "type": "Identifier", - "start": 114392, - "end": 114396, + "start": 114698, + "end": 114702, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 90 }, "end": { - "line": 2897, + "line": 2902, "column": 94 }, "identifierName": "Math" @@ -100058,15 +100572,15 @@ }, "property": { "type": "Identifier", - "start": 114397, - "end": 114402, + "start": 114703, + "end": 114708, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 95 }, "end": { - "line": 2897, + "line": 2902, "column": 100 }, "identifierName": "floor" @@ -100078,57 +100592,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 114403, - "end": 114421, + "start": 114709, + "end": 114727, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 101 }, "end": { - "line": 2897, + "line": 2902, "column": 119 } }, "left": { "type": "MemberExpression", - "start": 114403, - "end": 114415, + "start": 114709, + "end": 114721, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 101 }, "end": { - "line": 2897, + "line": 2902, "column": 113 } }, "object": { "type": "MemberExpression", - "start": 114403, - "end": 114412, + "start": 114709, + "end": 114718, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 101 }, "end": { - "line": 2897, + "line": 2902, "column": 110 } }, "object": { "type": "Identifier", - "start": 114403, - "end": 114406, + "start": 114709, + "end": 114712, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 101 }, "end": { - "line": 2897, + "line": 2902, "column": 104 }, "identifierName": "cfg" @@ -100137,15 +100651,15 @@ }, "property": { "type": "Identifier", - "start": 114407, - "end": 114412, + "start": 114713, + "end": 114718, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 105 }, "end": { - "line": 2897, + "line": 2902, "column": 110 }, "identifierName": "color" @@ -100156,15 +100670,15 @@ }, "property": { "type": "NumericLiteral", - "start": 114413, - "end": 114414, + "start": 114719, + "end": 114720, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 111 }, "end": { - "line": 2897, + "line": 2902, "column": 112 } }, @@ -100179,15 +100693,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 114418, - "end": 114421, + "start": 114724, + "end": 114727, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 116 }, "end": { - "line": 2897, + "line": 2902, "column": 119 } }, @@ -100202,43 +100716,43 @@ }, { "type": "CallExpression", - "start": 114424, - "end": 114454, + "start": 114730, + "end": 114760, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 122 }, "end": { - "line": 2897, + "line": 2902, "column": 152 } }, "callee": { "type": "MemberExpression", - "start": 114424, - "end": 114434, + "start": 114730, + "end": 114740, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 122 }, "end": { - "line": 2897, + "line": 2902, "column": 132 } }, "object": { "type": "Identifier", - "start": 114424, - "end": 114428, + "start": 114730, + "end": 114734, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 122 }, "end": { - "line": 2897, + "line": 2902, "column": 126 }, "identifierName": "Math" @@ -100247,15 +100761,15 @@ }, "property": { "type": "Identifier", - "start": 114429, - "end": 114434, + "start": 114735, + "end": 114740, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 127 }, "end": { - "line": 2897, + "line": 2902, "column": 132 }, "identifierName": "floor" @@ -100267,57 +100781,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 114435, - "end": 114453, + "start": 114741, + "end": 114759, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 133 }, "end": { - "line": 2897, + "line": 2902, "column": 151 } }, "left": { "type": "MemberExpression", - "start": 114435, - "end": 114447, + "start": 114741, + "end": 114753, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 133 }, "end": { - "line": 2897, + "line": 2902, "column": 145 } }, "object": { "type": "MemberExpression", - "start": 114435, - "end": 114444, + "start": 114741, + "end": 114750, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 133 }, "end": { - "line": 2897, + "line": 2902, "column": 142 } }, "object": { "type": "Identifier", - "start": 114435, - "end": 114438, + "start": 114741, + "end": 114744, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 133 }, "end": { - "line": 2897, + "line": 2902, "column": 136 }, "identifierName": "cfg" @@ -100326,15 +100840,15 @@ }, "property": { "type": "Identifier", - "start": 114439, - "end": 114444, + "start": 114745, + "end": 114750, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 137 }, "end": { - "line": 2897, + "line": 2902, "column": 142 }, "identifierName": "color" @@ -100345,15 +100859,15 @@ }, "property": { "type": "NumericLiteral", - "start": 114445, - "end": 114446, + "start": 114751, + "end": 114752, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 143 }, "end": { - "line": 2897, + "line": 2902, "column": 144 } }, @@ -100368,15 +100882,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 114450, - "end": 114453, + "start": 114756, + "end": 114759, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 148 }, "end": { - "line": 2897, + "line": 2902, "column": 151 } }, @@ -100395,30 +100909,30 @@ }, "alternate": { "type": "ArrayExpression", - "start": 114459, - "end": 114474, + "start": 114765, + "end": 114780, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 157 }, "end": { - "line": 2897, + "line": 2902, "column": 172 } }, "elements": [ { "type": "NumericLiteral", - "start": 114460, - "end": 114463, + "start": 114766, + "end": 114769, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 158 }, "end": { - "line": 2897, + "line": 2902, "column": 161 } }, @@ -100430,15 +100944,15 @@ }, { "type": "NumericLiteral", - "start": 114465, - "end": 114468, + "start": 114771, + "end": 114774, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 163 }, "end": { - "line": 2897, + "line": 2902, "column": 166 } }, @@ -100450,15 +100964,15 @@ }, { "type": "NumericLiteral", - "start": 114470, - "end": 114473, + "start": 114776, + "end": 114779, "loc": { "start": { - "line": 2897, + "line": 2902, "column": 168 }, "end": { - "line": 2897, + "line": 2902, "column": 171 } }, @@ -100477,15 +100991,15 @@ { "type": "CommentLine", "value": " PBR", - "start": 114294, - "end": 114300, + "start": 114600, + "end": 114606, "loc": { "start": { - "line": 2895, + "line": 2900, "column": 16 }, "end": { - "line": 2895, + "line": 2900, "column": 22 } } @@ -100494,58 +101008,58 @@ }, { "type": "ExpressionStatement", - "start": 114492, - "end": 114596, + "start": 114798, + "end": 114902, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 16 }, "end": { - "line": 2898, + "line": 2903, "column": 120 } }, "expression": { "type": "AssignmentExpression", - "start": 114492, - "end": 114595, + "start": 114798, + "end": 114901, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 16 }, "end": { - "line": 2898, + "line": 2903, "column": 119 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 114492, - "end": 114503, + "start": 114798, + "end": 114809, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 16 }, "end": { - "line": 2898, + "line": 2903, "column": 27 } }, "object": { "type": "Identifier", - "start": 114492, - "end": 114495, + "start": 114798, + "end": 114801, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 16 }, "end": { - "line": 2898, + "line": 2903, "column": 19 }, "identifierName": "cfg" @@ -100554,15 +101068,15 @@ }, "property": { "type": "Identifier", - "start": 114496, - "end": 114503, + "start": 114802, + "end": 114809, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 20 }, "end": { - "line": 2898, + "line": 2903, "column": 27 }, "identifierName": "opacity" @@ -100573,71 +101087,71 @@ }, "right": { "type": "ConditionalExpression", - "start": 114506, - "end": 114595, + "start": 114812, + "end": 114901, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 30 }, "end": { - "line": 2898, + "line": 2903, "column": 119 } }, "test": { "type": "LogicalExpression", - "start": 114507, - "end": 114556, + "start": 114813, + "end": 114862, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 31 }, "end": { - "line": 2898, + "line": 2903, "column": 80 } }, "left": { "type": "BinaryExpression", - "start": 114507, - "end": 114532, + "start": 114813, + "end": 114838, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 31 }, "end": { - "line": 2898, + "line": 2903, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 114507, - "end": 114518, + "start": 114813, + "end": 114824, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 31 }, "end": { - "line": 2898, + "line": 2903, "column": 42 } }, "object": { "type": "Identifier", - "start": 114507, - "end": 114510, + "start": 114813, + "end": 114816, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 31 }, "end": { - "line": 2898, + "line": 2903, "column": 34 }, "identifierName": "cfg" @@ -100646,15 +101160,15 @@ }, "property": { "type": "Identifier", - "start": 114511, - "end": 114518, + "start": 114817, + "end": 114824, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 35 }, "end": { - "line": 2898, + "line": 2903, "column": 42 }, "identifierName": "opacity" @@ -100666,15 +101180,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 114523, - "end": 114532, + "start": 114829, + "end": 114838, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 47 }, "end": { - "line": 2898, + "line": 2903, "column": 56 }, "identifierName": "undefined" @@ -100685,43 +101199,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 114536, - "end": 114556, + "start": 114842, + "end": 114862, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 60 }, "end": { - "line": 2898, + "line": 2903, "column": 80 } }, "left": { "type": "MemberExpression", - "start": 114536, - "end": 114547, + "start": 114842, + "end": 114853, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 60 }, "end": { - "line": 2898, + "line": 2903, "column": 71 } }, "object": { "type": "Identifier", - "start": 114536, - "end": 114539, + "start": 114842, + "end": 114845, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 60 }, "end": { - "line": 2898, + "line": 2903, "column": 63 }, "identifierName": "cfg" @@ -100730,15 +101244,15 @@ }, "property": { "type": "Identifier", - "start": 114540, - "end": 114547, + "start": 114846, + "end": 114853, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 64 }, "end": { - "line": 2898, + "line": 2903, "column": 71 }, "identifierName": "opacity" @@ -100750,15 +101264,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 114552, - "end": 114556, + "start": 114858, + "end": 114862, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 76 }, "end": { - "line": 2898, + "line": 2903, "column": 80 } } @@ -100766,48 +101280,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 114506 + "parenStart": 114812 } }, "consequent": { "type": "CallExpression", - "start": 114560, - "end": 114589, + "start": 114866, + "end": 114895, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 84 }, "end": { - "line": 2898, + "line": 2903, "column": 113 } }, "callee": { "type": "MemberExpression", - "start": 114560, - "end": 114570, + "start": 114866, + "end": 114876, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 84 }, "end": { - "line": 2898, + "line": 2903, "column": 94 } }, "object": { "type": "Identifier", - "start": 114560, - "end": 114564, + "start": 114866, + "end": 114870, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 84 }, "end": { - "line": 2898, + "line": 2903, "column": 88 }, "identifierName": "Math" @@ -100816,15 +101330,15 @@ }, "property": { "type": "Identifier", - "start": 114565, - "end": 114570, + "start": 114871, + "end": 114876, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 89 }, "end": { - "line": 2898, + "line": 2903, "column": 94 }, "identifierName": "floor" @@ -100836,43 +101350,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 114571, - "end": 114588, + "start": 114877, + "end": 114894, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 95 }, "end": { - "line": 2898, + "line": 2903, "column": 112 } }, "left": { "type": "MemberExpression", - "start": 114571, - "end": 114582, + "start": 114877, + "end": 114888, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 95 }, "end": { - "line": 2898, + "line": 2903, "column": 106 } }, "object": { "type": "Identifier", - "start": 114571, - "end": 114574, + "start": 114877, + "end": 114880, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 95 }, "end": { - "line": 2898, + "line": 2903, "column": 98 }, "identifierName": "cfg" @@ -100881,15 +101395,15 @@ }, "property": { "type": "Identifier", - "start": 114575, - "end": 114582, + "start": 114881, + "end": 114888, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 99 }, "end": { - "line": 2898, + "line": 2903, "column": 106 }, "identifierName": "opacity" @@ -100901,15 +101415,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 114585, - "end": 114588, + "start": 114891, + "end": 114894, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 109 }, "end": { - "line": 2898, + "line": 2903, "column": 112 } }, @@ -100924,15 +101438,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 114592, - "end": 114595, + "start": 114898, + "end": 114901, "loc": { "start": { - "line": 2898, + "line": 2903, "column": 116 }, "end": { - "line": 2898, + "line": 2903, "column": 119 } }, @@ -100947,58 +101461,58 @@ }, { "type": "ExpressionStatement", - "start": 114613, - "end": 114719, + "start": 114919, + "end": 115025, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 16 }, "end": { - "line": 2899, + "line": 2904, "column": 122 } }, "expression": { "type": "AssignmentExpression", - "start": 114613, - "end": 114718, + "start": 114919, + "end": 115024, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 16 }, "end": { - "line": 2899, + "line": 2904, "column": 121 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 114613, - "end": 114625, + "start": 114919, + "end": 114931, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 16 }, "end": { - "line": 2899, + "line": 2904, "column": 28 } }, "object": { "type": "Identifier", - "start": 114613, - "end": 114616, + "start": 114919, + "end": 114922, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 16 }, "end": { - "line": 2899, + "line": 2904, "column": 19 }, "identifierName": "cfg" @@ -101007,15 +101521,15 @@ }, "property": { "type": "Identifier", - "start": 114617, - "end": 114625, + "start": 114923, + "end": 114931, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 20 }, "end": { - "line": 2899, + "line": 2904, "column": 28 }, "identifierName": "metallic" @@ -101026,71 +101540,71 @@ }, "right": { "type": "ConditionalExpression", - "start": 114628, - "end": 114718, + "start": 114934, + "end": 115024, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 31 }, "end": { - "line": 2899, + "line": 2904, "column": 121 } }, "test": { "type": "LogicalExpression", - "start": 114629, - "end": 114680, + "start": 114935, + "end": 114986, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 32 }, "end": { - "line": 2899, + "line": 2904, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 114629, - "end": 114655, + "start": 114935, + "end": 114961, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 32 }, "end": { - "line": 2899, + "line": 2904, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 114629, - "end": 114641, + "start": 114935, + "end": 114947, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 32 }, "end": { - "line": 2899, + "line": 2904, "column": 44 } }, "object": { "type": "Identifier", - "start": 114629, - "end": 114632, + "start": 114935, + "end": 114938, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 32 }, "end": { - "line": 2899, + "line": 2904, "column": 35 }, "identifierName": "cfg" @@ -101099,15 +101613,15 @@ }, "property": { "type": "Identifier", - "start": 114633, - "end": 114641, + "start": 114939, + "end": 114947, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 36 }, "end": { - "line": 2899, + "line": 2904, "column": 44 }, "identifierName": "metallic" @@ -101119,15 +101633,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 114646, - "end": 114655, + "start": 114952, + "end": 114961, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 49 }, "end": { - "line": 2899, + "line": 2904, "column": 58 }, "identifierName": "undefined" @@ -101138,43 +101652,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 114659, - "end": 114680, + "start": 114965, + "end": 114986, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 62 }, "end": { - "line": 2899, + "line": 2904, "column": 83 } }, "left": { "type": "MemberExpression", - "start": 114659, - "end": 114671, + "start": 114965, + "end": 114977, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 62 }, "end": { - "line": 2899, + "line": 2904, "column": 74 } }, "object": { "type": "Identifier", - "start": 114659, - "end": 114662, + "start": 114965, + "end": 114968, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 62 }, "end": { - "line": 2899, + "line": 2904, "column": 65 }, "identifierName": "cfg" @@ -101183,15 +101697,15 @@ }, "property": { "type": "Identifier", - "start": 114663, - "end": 114671, + "start": 114969, + "end": 114977, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 66 }, "end": { - "line": 2899, + "line": 2904, "column": 74 }, "identifierName": "metallic" @@ -101203,15 +101717,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 114676, - "end": 114680, + "start": 114982, + "end": 114986, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 79 }, "end": { - "line": 2899, + "line": 2904, "column": 83 } } @@ -101219,48 +101733,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 114628 + "parenStart": 114934 } }, "consequent": { "type": "CallExpression", - "start": 114684, - "end": 114714, + "start": 114990, + "end": 115020, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 87 }, "end": { - "line": 2899, + "line": 2904, "column": 117 } }, "callee": { "type": "MemberExpression", - "start": 114684, - "end": 114694, + "start": 114990, + "end": 115000, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 87 }, "end": { - "line": 2899, + "line": 2904, "column": 97 } }, "object": { "type": "Identifier", - "start": 114684, - "end": 114688, + "start": 114990, + "end": 114994, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 87 }, "end": { - "line": 2899, + "line": 2904, "column": 91 }, "identifierName": "Math" @@ -101269,15 +101783,15 @@ }, "property": { "type": "Identifier", - "start": 114689, - "end": 114694, + "start": 114995, + "end": 115000, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 92 }, "end": { - "line": 2899, + "line": 2904, "column": 97 }, "identifierName": "floor" @@ -101289,43 +101803,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 114695, - "end": 114713, + "start": 115001, + "end": 115019, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 98 }, "end": { - "line": 2899, + "line": 2904, "column": 116 } }, "left": { "type": "MemberExpression", - "start": 114695, - "end": 114707, + "start": 115001, + "end": 115013, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 98 }, "end": { - "line": 2899, + "line": 2904, "column": 110 } }, "object": { "type": "Identifier", - "start": 114695, - "end": 114698, + "start": 115001, + "end": 115004, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 98 }, "end": { - "line": 2899, + "line": 2904, "column": 101 }, "identifierName": "cfg" @@ -101334,15 +101848,15 @@ }, "property": { "type": "Identifier", - "start": 114699, - "end": 114707, + "start": 115005, + "end": 115013, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 102 }, "end": { - "line": 2899, + "line": 2904, "column": 110 }, "identifierName": "metallic" @@ -101354,15 +101868,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 114710, - "end": 114713, + "start": 115016, + "end": 115019, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 113 }, "end": { - "line": 2899, + "line": 2904, "column": 116 } }, @@ -101377,15 +101891,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 114717, - "end": 114718, + "start": 115023, + "end": 115024, "loc": { "start": { - "line": 2899, + "line": 2904, "column": 120 }, "end": { - "line": 2899, + "line": 2904, "column": 121 } }, @@ -101400,58 +101914,58 @@ }, { "type": "ExpressionStatement", - "start": 114736, - "end": 114848, + "start": 115042, + "end": 115154, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 16 }, "end": { - "line": 2900, + "line": 2905, "column": 128 } }, "expression": { "type": "AssignmentExpression", - "start": 114736, - "end": 114847, + "start": 115042, + "end": 115153, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 16 }, "end": { - "line": 2900, + "line": 2905, "column": 127 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 114736, - "end": 114749, + "start": 115042, + "end": 115055, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 16 }, "end": { - "line": 2900, + "line": 2905, "column": 29 } }, "object": { "type": "Identifier", - "start": 114736, - "end": 114739, + "start": 115042, + "end": 115045, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 16 }, "end": { - "line": 2900, + "line": 2905, "column": 19 }, "identifierName": "cfg" @@ -101460,15 +101974,15 @@ }, "property": { "type": "Identifier", - "start": 114740, - "end": 114749, + "start": 115046, + "end": 115055, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 20 }, "end": { - "line": 2900, + "line": 2905, "column": 29 }, "identifierName": "roughness" @@ -101479,71 +101993,71 @@ }, "right": { "type": "ConditionalExpression", - "start": 114752, - "end": 114847, + "start": 115058, + "end": 115153, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 32 }, "end": { - "line": 2900, + "line": 2905, "column": 127 } }, "test": { "type": "LogicalExpression", - "start": 114753, - "end": 114806, + "start": 115059, + "end": 115112, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 33 }, "end": { - "line": 2900, + "line": 2905, "column": 86 } }, "left": { "type": "BinaryExpression", - "start": 114753, - "end": 114780, + "start": 115059, + "end": 115086, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 33 }, "end": { - "line": 2900, + "line": 2905, "column": 60 } }, "left": { "type": "MemberExpression", - "start": 114753, - "end": 114766, + "start": 115059, + "end": 115072, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 33 }, "end": { - "line": 2900, + "line": 2905, "column": 46 } }, "object": { "type": "Identifier", - "start": 114753, - "end": 114756, + "start": 115059, + "end": 115062, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 33 }, "end": { - "line": 2900, + "line": 2905, "column": 36 }, "identifierName": "cfg" @@ -101552,15 +102066,15 @@ }, "property": { "type": "Identifier", - "start": 114757, - "end": 114766, + "start": 115063, + "end": 115072, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 37 }, "end": { - "line": 2900, + "line": 2905, "column": 46 }, "identifierName": "roughness" @@ -101572,15 +102086,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 114771, - "end": 114780, + "start": 115077, + "end": 115086, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 51 }, "end": { - "line": 2900, + "line": 2905, "column": 60 }, "identifierName": "undefined" @@ -101591,43 +102105,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 114784, - "end": 114806, + "start": 115090, + "end": 115112, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 64 }, "end": { - "line": 2900, + "line": 2905, "column": 86 } }, "left": { "type": "MemberExpression", - "start": 114784, - "end": 114797, + "start": 115090, + "end": 115103, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 64 }, "end": { - "line": 2900, + "line": 2905, "column": 77 } }, "object": { "type": "Identifier", - "start": 114784, - "end": 114787, + "start": 115090, + "end": 115093, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 64 }, "end": { - "line": 2900, + "line": 2905, "column": 67 }, "identifierName": "cfg" @@ -101636,15 +102150,15 @@ }, "property": { "type": "Identifier", - "start": 114788, - "end": 114797, + "start": 115094, + "end": 115103, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 68 }, "end": { - "line": 2900, + "line": 2905, "column": 77 }, "identifierName": "roughness" @@ -101656,15 +102170,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 114802, - "end": 114806, + "start": 115108, + "end": 115112, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 82 }, "end": { - "line": 2900, + "line": 2905, "column": 86 } } @@ -101672,48 +102186,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 114752 + "parenStart": 115058 } }, "consequent": { "type": "CallExpression", - "start": 114810, - "end": 114841, + "start": 115116, + "end": 115147, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 90 }, "end": { - "line": 2900, + "line": 2905, "column": 121 } }, "callee": { "type": "MemberExpression", - "start": 114810, - "end": 114820, + "start": 115116, + "end": 115126, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 90 }, "end": { - "line": 2900, + "line": 2905, "column": 100 } }, "object": { "type": "Identifier", - "start": 114810, - "end": 114814, + "start": 115116, + "end": 115120, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 90 }, "end": { - "line": 2900, + "line": 2905, "column": 94 }, "identifierName": "Math" @@ -101722,15 +102236,15 @@ }, "property": { "type": "Identifier", - "start": 114815, - "end": 114820, + "start": 115121, + "end": 115126, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 95 }, "end": { - "line": 2900, + "line": 2905, "column": 100 }, "identifierName": "floor" @@ -101742,43 +102256,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 114821, - "end": 114840, + "start": 115127, + "end": 115146, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 101 }, "end": { - "line": 2900, + "line": 2905, "column": 120 } }, "left": { "type": "MemberExpression", - "start": 114821, - "end": 114834, + "start": 115127, + "end": 115140, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 101 }, "end": { - "line": 2900, + "line": 2905, "column": 114 } }, "object": { "type": "Identifier", - "start": 114821, - "end": 114824, + "start": 115127, + "end": 115130, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 101 }, "end": { - "line": 2900, + "line": 2905, "column": 104 }, "identifierName": "cfg" @@ -101787,15 +102301,15 @@ }, "property": { "type": "Identifier", - "start": 114825, - "end": 114834, + "start": 115131, + "end": 115140, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 105 }, "end": { - "line": 2900, + "line": 2905, "column": 114 }, "identifierName": "roughness" @@ -101807,15 +102321,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 114837, - "end": 114840, + "start": 115143, + "end": 115146, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 117 }, "end": { - "line": 2900, + "line": 2905, "column": 120 } }, @@ -101830,15 +102344,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 114844, - "end": 114847, + "start": 115150, + "end": 115153, "loc": { "start": { - "line": 2900, + "line": 2905, "column": 124 }, "end": { - "line": 2900, + "line": 2905, "column": 127 } }, @@ -101854,15 +102368,15 @@ { "type": "CommentLine", "value": " RTC", - "start": 114866, - "end": 114872, + "start": 115172, + "end": 115178, "loc": { "start": { - "line": 2902, + "line": 2907, "column": 16 }, "end": { - "line": 2902, + "line": 2907, "column": 22 } } @@ -101871,43 +102385,43 @@ }, { "type": "IfStatement", - "start": 114890, - "end": 115272, + "start": 115196, + "end": 115578, "loc": { "start": { - "line": 2904, + "line": 2909, "column": 16 }, "end": { - "line": 2911, + "line": 2916, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 114894, - "end": 114907, + "start": 115200, + "end": 115213, "loc": { "start": { - "line": 2904, + "line": 2909, "column": 20 }, "end": { - "line": 2904, + "line": 2909, "column": 33 } }, "object": { "type": "Identifier", - "start": 114894, - "end": 114897, + "start": 115200, + "end": 115203, "loc": { "start": { - "line": 2904, + "line": 2909, "column": 20 }, "end": { - "line": 2904, + "line": 2909, "column": 23 }, "identifierName": "cfg" @@ -101917,15 +102431,15 @@ }, "property": { "type": "Identifier", - "start": 114898, - "end": 114907, + "start": 115204, + "end": 115213, "loc": { "start": { - "line": 2904, + "line": 2909, "column": 24 }, "end": { - "line": 2904, + "line": 2909, "column": 33 }, "identifierName": "positions" @@ -101937,59 +102451,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 114909, - "end": 115272, + "start": 115215, + "end": 115578, "loc": { "start": { - "line": 2904, + "line": 2909, "column": 35 }, "end": { - "line": 2911, + "line": 2916, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 114931, - "end": 114955, + "start": 115237, + "end": 115261, "loc": { "start": { - "line": 2905, + "line": 2910, "column": 20 }, "end": { - "line": 2905, + "line": 2910, "column": 44 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 114937, - "end": 114954, + "start": 115243, + "end": 115260, "loc": { "start": { - "line": 2905, + "line": 2910, "column": 26 }, "end": { - "line": 2905, + "line": 2910, "column": 43 } }, "id": { "type": "Identifier", - "start": 114937, - "end": 114949, + "start": 115243, + "end": 115255, "loc": { "start": { - "line": 2905, + "line": 2910, "column": 26 }, "end": { - "line": 2905, + "line": 2910, "column": 38 }, "identifierName": "rtcPositions" @@ -101998,15 +102512,15 @@ }, "init": { "type": "ArrayExpression", - "start": 114952, - "end": 114954, + "start": 115258, + "end": 115260, "loc": { "start": { - "line": 2905, + "line": 2910, "column": 41 }, "end": { - "line": 2905, + "line": 2910, "column": 43 } }, @@ -102018,44 +102532,44 @@ }, { "type": "VariableDeclaration", - "start": 114976, - "end": 115054, + "start": 115282, + "end": 115360, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 20 }, "end": { - "line": 2906, + "line": 2911, "column": 98 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 114982, - "end": 115053, + "start": 115288, + "end": 115359, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 26 }, "end": { - "line": 2906, + "line": 2911, "column": 97 } }, "id": { "type": "Identifier", - "start": 114982, - "end": 114991, + "start": 115288, + "end": 115297, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 26 }, "end": { - "line": 2906, + "line": 2911, "column": 35 }, "identifierName": "rtcNeeded" @@ -102064,29 +102578,29 @@ }, "init": { "type": "CallExpression", - "start": 114994, - "end": 115053, + "start": 115300, + "end": 115359, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 38 }, "end": { - "line": 2906, + "line": 2911, "column": 97 } }, "callee": { "type": "Identifier", - "start": 114994, - "end": 115013, + "start": 115300, + "end": 115319, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 38 }, "end": { - "line": 2906, + "line": 2911, "column": 57 }, "identifierName": "worldToRTCPositions" @@ -102096,29 +102610,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 115014, - "end": 115027, + "start": 115320, + "end": 115333, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 58 }, "end": { - "line": 2906, + "line": 2911, "column": 71 } }, "object": { "type": "Identifier", - "start": 115014, - "end": 115017, + "start": 115320, + "end": 115323, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 58 }, "end": { - "line": 2906, + "line": 2911, "column": 61 }, "identifierName": "cfg" @@ -102127,15 +102641,15 @@ }, "property": { "type": "Identifier", - "start": 115018, - "end": 115027, + "start": 115324, + "end": 115333, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 62 }, "end": { - "line": 2906, + "line": 2911, "column": 71 }, "identifierName": "positions" @@ -102146,15 +102660,15 @@ }, { "type": "Identifier", - "start": 115029, - "end": 115041, + "start": 115335, + "end": 115347, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 73 }, "end": { - "line": 2906, + "line": 2911, "column": 85 }, "identifierName": "rtcPositions" @@ -102163,15 +102677,15 @@ }, { "type": "Identifier", - "start": 115043, - "end": 115052, + "start": 115349, + "end": 115358, "loc": { "start": { - "line": 2906, + "line": 2911, "column": 87 }, "end": { - "line": 2906, + "line": 2911, "column": 96 }, "identifierName": "tempVec3a" @@ -102186,29 +102700,29 @@ }, { "type": "IfStatement", - "start": 115075, - "end": 115254, + "start": 115381, + "end": 115560, "loc": { "start": { - "line": 2907, + "line": 2912, "column": 20 }, "end": { - "line": 2910, + "line": 2915, "column": 21 } }, "test": { "type": "Identifier", - "start": 115079, - "end": 115088, + "start": 115385, + "end": 115394, "loc": { "start": { - "line": 2907, + "line": 2912, "column": 24 }, "end": { - "line": 2907, + "line": 2912, "column": 33 }, "identifierName": "rtcNeeded" @@ -102217,73 +102731,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 115090, - "end": 115254, + "start": 115396, + "end": 115560, "loc": { "start": { - "line": 2907, + "line": 2912, "column": 35 }, "end": { - "line": 2910, + "line": 2915, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 115116, - "end": 115145, + "start": 115422, + "end": 115451, "loc": { "start": { - "line": 2908, + "line": 2913, "column": 24 }, "end": { - "line": 2908, + "line": 2913, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 115116, - "end": 115144, + "start": 115422, + "end": 115450, "loc": { "start": { - "line": 2908, + "line": 2913, "column": 24 }, "end": { - "line": 2908, + "line": 2913, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 115116, - "end": 115129, + "start": 115422, + "end": 115435, "loc": { "start": { - "line": 2908, + "line": 2913, "column": 24 }, "end": { - "line": 2908, + "line": 2913, "column": 37 } }, "object": { "type": "Identifier", - "start": 115116, - "end": 115119, + "start": 115422, + "end": 115425, "loc": { "start": { - "line": 2908, + "line": 2913, "column": 24 }, "end": { - "line": 2908, + "line": 2913, "column": 27 }, "identifierName": "cfg" @@ -102292,15 +102806,15 @@ }, "property": { "type": "Identifier", - "start": 115120, - "end": 115129, + "start": 115426, + "end": 115435, "loc": { "start": { - "line": 2908, + "line": 2913, "column": 28 }, "end": { - "line": 2908, + "line": 2913, "column": 37 }, "identifierName": "positions" @@ -102311,15 +102825,15 @@ }, "right": { "type": "Identifier", - "start": 115132, - "end": 115144, + "start": 115438, + "end": 115450, "loc": { "start": { - "line": 2908, + "line": 2913, "column": 40 }, "end": { - "line": 2908, + "line": 2913, "column": 52 }, "identifierName": "rtcPositions" @@ -102330,58 +102844,58 @@ }, { "type": "ExpressionStatement", - "start": 115170, - "end": 115232, + "start": 115476, + "end": 115538, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 24 }, "end": { - "line": 2909, + "line": 2914, "column": 86 } }, "expression": { "type": "AssignmentExpression", - "start": 115170, - "end": 115231, + "start": 115476, + "end": 115537, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 24 }, "end": { - "line": 2909, + "line": 2914, "column": 85 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 115170, - "end": 115180, + "start": 115476, + "end": 115486, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 24 }, "end": { - "line": 2909, + "line": 2914, "column": 34 } }, "object": { "type": "Identifier", - "start": 115170, - "end": 115173, + "start": 115476, + "end": 115479, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 24 }, "end": { - "line": 2909, + "line": 2914, "column": 27 }, "identifierName": "cfg" @@ -102390,15 +102904,15 @@ }, "property": { "type": "Identifier", - "start": 115174, - "end": 115180, + "start": 115480, + "end": 115486, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 28 }, "end": { - "line": 2909, + "line": 2914, "column": 34 }, "identifierName": "origin" @@ -102409,43 +102923,43 @@ }, "right": { "type": "CallExpression", - "start": 115183, - "end": 115231, + "start": 115489, + "end": 115537, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 37 }, "end": { - "line": 2909, + "line": 2914, "column": 85 } }, "callee": { "type": "MemberExpression", - "start": 115183, - "end": 115195, + "start": 115489, + "end": 115501, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 37 }, "end": { - "line": 2909, + "line": 2914, "column": 49 } }, "object": { "type": "Identifier", - "start": 115183, - "end": 115187, + "start": 115489, + "end": 115493, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 37 }, "end": { - "line": 2909, + "line": 2914, "column": 41 }, "identifierName": "math" @@ -102454,15 +102968,15 @@ }, "property": { "type": "Identifier", - "start": 115188, - "end": 115195, + "start": 115494, + "end": 115501, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 42 }, "end": { - "line": 2909, + "line": 2914, "column": 49 }, "identifierName": "addVec3" @@ -102474,29 +102988,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 115196, - "end": 115206, + "start": 115502, + "end": 115512, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 50 }, "end": { - "line": 2909, + "line": 2914, "column": 60 } }, "object": { "type": "Identifier", - "start": 115196, - "end": 115199, + "start": 115502, + "end": 115505, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 50 }, "end": { - "line": 2909, + "line": 2914, "column": 53 }, "identifierName": "cfg" @@ -102505,15 +103019,15 @@ }, "property": { "type": "Identifier", - "start": 115200, - "end": 115206, + "start": 115506, + "end": 115512, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 54 }, "end": { - "line": 2909, + "line": 2914, "column": 60 }, "identifierName": "origin" @@ -102524,15 +103038,15 @@ }, { "type": "Identifier", - "start": 115208, - "end": 115217, + "start": 115514, + "end": 115523, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 62 }, "end": { - "line": 2909, + "line": 2914, "column": 71 }, "identifierName": "tempVec3a" @@ -102541,43 +103055,43 @@ }, { "type": "CallExpression", - "start": 115219, - "end": 115230, + "start": 115525, + "end": 115536, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 73 }, "end": { - "line": 2909, + "line": 2914, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 115219, - "end": 115228, + "start": 115525, + "end": 115534, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 73 }, "end": { - "line": 2909, + "line": 2914, "column": 82 } }, "object": { "type": "Identifier", - "start": 115219, - "end": 115223, + "start": 115525, + "end": 115529, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 73 }, "end": { - "line": 2909, + "line": 2914, "column": 77 }, "identifierName": "math" @@ -102586,15 +103100,15 @@ }, "property": { "type": "Identifier", - "start": 115224, - "end": 115228, + "start": 115530, + "end": 115534, "loc": { "start": { - "line": 2909, + "line": 2914, "column": 78 }, "end": { - "line": 2909, + "line": 2914, "column": 82 }, "identifierName": "vec3" @@ -102622,15 +103136,15 @@ { "type": "CommentLine", "value": " RTC", - "start": 114866, - "end": 114872, + "start": 115172, + "end": 115178, "loc": { "start": { - "line": 2902, + "line": 2907, "column": 16 }, "end": { - "line": 2902, + "line": 2907, "column": 22 } } @@ -102639,43 +103153,43 @@ }, { "type": "IfStatement", - "start": 115290, - "end": 116025, + "start": 115596, + "end": 116331, "loc": { "start": { - "line": 2913, + "line": 2918, "column": 16 }, "end": { - "line": 2927, + "line": 2932, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 115294, - "end": 115307, + "start": 115600, + "end": 115613, "loc": { "start": { - "line": 2913, + "line": 2918, "column": 20 }, "end": { - "line": 2913, + "line": 2918, "column": 33 } }, "object": { "type": "Identifier", - "start": 115294, - "end": 115297, + "start": 115600, + "end": 115603, "loc": { "start": { - "line": 2913, + "line": 2918, "column": 20 }, "end": { - "line": 2913, + "line": 2918, "column": 23 }, "identifierName": "cfg" @@ -102684,15 +103198,15 @@ }, "property": { "type": "Identifier", - "start": 115298, - "end": 115307, + "start": 115604, + "end": 115613, "loc": { "start": { - "line": 2913, + "line": 2918, "column": 24 }, "end": { - "line": 2913, + "line": 2918, "column": 33 }, "identifierName": "positions" @@ -102703,59 +103217,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 115309, - "end": 115738, + "start": 115615, + "end": 116044, "loc": { "start": { - "line": 2913, + "line": 2918, "column": 35 }, "end": { - "line": 2922, + "line": 2927, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 115331, - "end": 115365, + "start": 115637, + "end": 115671, "loc": { "start": { - "line": 2914, + "line": 2919, "column": 20 }, "end": { - "line": 2914, + "line": 2919, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 115337, - "end": 115364, + "start": 115643, + "end": 115670, "loc": { "start": { - "line": 2914, + "line": 2919, "column": 26 }, "end": { - "line": 2914, + "line": 2919, "column": 53 } }, "id": { "type": "Identifier", - "start": 115337, - "end": 115341, + "start": 115643, + "end": 115647, "loc": { "start": { - "line": 2914, + "line": 2919, "column": 26 }, "end": { - "line": 2914, + "line": 2919, "column": 30 }, "identifierName": "aabb" @@ -102764,43 +103278,43 @@ }, "init": { "type": "CallExpression", - "start": 115344, - "end": 115364, + "start": 115650, + "end": 115670, "loc": { "start": { - "line": 2914, + "line": 2919, "column": 33 }, "end": { - "line": 2914, + "line": 2919, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 115344, - "end": 115362, + "start": 115650, + "end": 115668, "loc": { "start": { - "line": 2914, + "line": 2919, "column": 33 }, "end": { - "line": 2914, + "line": 2919, "column": 51 } }, "object": { "type": "Identifier", - "start": 115344, - "end": 115348, + "start": 115650, + "end": 115654, "loc": { "start": { - "line": 2914, + "line": 2919, "column": 33 }, "end": { - "line": 2914, + "line": 2919, "column": 37 }, "identifierName": "math" @@ -102809,15 +103323,15 @@ }, "property": { "type": "Identifier", - "start": 115349, - "end": 115362, + "start": 115655, + "end": 115668, "loc": { "start": { - "line": 2914, + "line": 2919, "column": 38 }, "end": { - "line": 2914, + "line": 2919, "column": 51 }, "identifierName": "collapseAABB3" @@ -102834,43 +103348,43 @@ }, { "type": "IfStatement", - "start": 115386, - "end": 115616, + "start": 115692, + "end": 115922, "loc": { "start": { - "line": 2915, + "line": 2920, "column": 20 }, "end": { - "line": 2918, + "line": 2923, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 115390, - "end": 115404, + "start": 115696, + "end": 115710, "loc": { "start": { - "line": 2915, + "line": 2920, "column": 24 }, "end": { - "line": 2915, + "line": 2920, "column": 38 } }, "object": { "type": "Identifier", - "start": 115390, - "end": 115393, + "start": 115696, + "end": 115699, "loc": { "start": { - "line": 2915, + "line": 2920, "column": 24 }, "end": { - "line": 2915, + "line": 2920, "column": 27 }, "identifierName": "cfg" @@ -102879,15 +103393,15 @@ }, "property": { "type": "Identifier", - "start": 115394, - "end": 115404, + "start": 115700, + "end": 115710, "loc": { "start": { - "line": 2915, + "line": 2920, "column": 28 }, "end": { - "line": 2915, + "line": 2920, "column": 38 }, "identifierName": "meshMatrix" @@ -102898,72 +103412,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 115406, - "end": 115616, + "start": 115712, + "end": 115922, "loc": { "start": { - "line": 2915, + "line": 2920, "column": 40 }, "end": { - "line": 2918, + "line": 2923, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 115432, - "end": 115503, + "start": 115738, + "end": 115809, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 24 }, "end": { - "line": 2916, + "line": 2921, "column": 95 } }, "expression": { "type": "CallExpression", - "start": 115432, - "end": 115502, + "start": 115738, + "end": 115808, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 24 }, "end": { - "line": 2916, + "line": 2921, "column": 94 } }, "callee": { "type": "MemberExpression", - "start": 115432, - "end": 115456, + "start": 115738, + "end": 115762, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 24 }, "end": { - "line": 2916, + "line": 2921, "column": 48 } }, "object": { "type": "Identifier", - "start": 115432, - "end": 115436, + "start": 115738, + "end": 115742, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 24 }, "end": { - "line": 2916, + "line": 2921, "column": 28 }, "identifierName": "math" @@ -102972,15 +103486,15 @@ }, "property": { "type": "Identifier", - "start": 115437, - "end": 115456, + "start": 115743, + "end": 115762, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 29 }, "end": { - "line": 2916, + "line": 2921, "column": 48 }, "identifierName": "transformPositions3" @@ -102992,29 +103506,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 115457, - "end": 115471, + "start": 115763, + "end": 115777, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 49 }, "end": { - "line": 2916, + "line": 2921, "column": 63 } }, "object": { "type": "Identifier", - "start": 115457, - "end": 115460, + "start": 115763, + "end": 115766, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 49 }, "end": { - "line": 2916, + "line": 2921, "column": 52 }, "identifierName": "cfg" @@ -103023,15 +103537,15 @@ }, "property": { "type": "Identifier", - "start": 115461, - "end": 115471, + "start": 115767, + "end": 115777, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 53 }, "end": { - "line": 2916, + "line": 2921, "column": 63 }, "identifierName": "meshMatrix" @@ -103042,29 +103556,29 @@ }, { "type": "MemberExpression", - "start": 115473, - "end": 115486, + "start": 115779, + "end": 115792, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 65 }, "end": { - "line": 2916, + "line": 2921, "column": 78 } }, "object": { "type": "Identifier", - "start": 115473, - "end": 115476, + "start": 115779, + "end": 115782, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 65 }, "end": { - "line": 2916, + "line": 2921, "column": 68 }, "identifierName": "cfg" @@ -103073,15 +103587,15 @@ }, "property": { "type": "Identifier", - "start": 115477, - "end": 115486, + "start": 115783, + "end": 115792, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 69 }, "end": { - "line": 2916, + "line": 2921, "column": 78 }, "identifierName": "positions" @@ -103092,29 +103606,29 @@ }, { "type": "MemberExpression", - "start": 115488, - "end": 115501, + "start": 115794, + "end": 115807, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 80 }, "end": { - "line": 2916, + "line": 2921, "column": 93 } }, "object": { "type": "Identifier", - "start": 115488, - "end": 115491, + "start": 115794, + "end": 115797, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 80 }, "end": { - "line": 2916, + "line": 2921, "column": 83 }, "identifierName": "cfg" @@ -103123,15 +103637,15 @@ }, "property": { "type": "Identifier", - "start": 115492, - "end": 115501, + "start": 115798, + "end": 115807, "loc": { "start": { - "line": 2916, + "line": 2921, "column": 84 }, "end": { - "line": 2916, + "line": 2921, "column": 93 }, "identifierName": "positions" @@ -103145,58 +103659,58 @@ }, { "type": "ExpressionStatement", - "start": 115528, - "end": 115550, + "start": 115834, + "end": 115856, "loc": { "start": { - "line": 2917, + "line": 2922, "column": 24 }, "end": { - "line": 2917, + "line": 2922, "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 115528, - "end": 115549, + "start": 115834, + "end": 115855, "loc": { "start": { - "line": 2917, + "line": 2922, "column": 24 }, "end": { - "line": 2917, + "line": 2922, "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 115528, - "end": 115542, + "start": 115834, + "end": 115848, "loc": { "start": { - "line": 2917, + "line": 2922, "column": 24 }, "end": { - "line": 2917, + "line": 2922, "column": 38 } }, "object": { "type": "Identifier", - "start": 115528, - "end": 115531, + "start": 115834, + "end": 115837, "loc": { "start": { - "line": 2917, + "line": 2922, "column": 24 }, "end": { - "line": 2917, + "line": 2922, "column": 27 }, "identifierName": "cfg" @@ -103205,15 +103719,15 @@ }, "property": { "type": "Identifier", - "start": 115532, - "end": 115542, + "start": 115838, + "end": 115848, "loc": { "start": { - "line": 2917, + "line": 2922, "column": 28 }, "end": { - "line": 2917, + "line": 2922, "column": 38 }, "identifierName": "meshMatrix" @@ -103224,15 +103738,15 @@ }, "right": { "type": "NullLiteral", - "start": 115545, - "end": 115549, + "start": 115851, + "end": 115855, "loc": { "start": { - "line": 2917, + "line": 2922, "column": 41 }, "end": { - "line": 2917, + "line": 2922, "column": 45 } } @@ -103242,15 +103756,15 @@ { "type": "CommentLine", "value": " Positions now baked, don't need any more", - "start": 115551, - "end": 115594, + "start": 115857, + "end": 115900, "loc": { "start": { - "line": 2917, + "line": 2922, "column": 47 }, "end": { - "line": 2917, + "line": 2922, "column": 90 } } @@ -103264,57 +103778,57 @@ }, { "type": "ExpressionStatement", - "start": 115637, - "end": 115682, + "start": 115943, + "end": 115988, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 20 }, "end": { - "line": 2919, + "line": 2924, "column": 65 } }, "expression": { "type": "CallExpression", - "start": 115637, - "end": 115681, + "start": 115943, + "end": 115987, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 20 }, "end": { - "line": 2919, + "line": 2924, "column": 64 } }, "callee": { "type": "MemberExpression", - "start": 115637, - "end": 115660, + "start": 115943, + "end": 115966, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 20 }, "end": { - "line": 2919, + "line": 2924, "column": 43 } }, "object": { "type": "Identifier", - "start": 115637, - "end": 115641, + "start": 115943, + "end": 115947, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 20 }, "end": { - "line": 2919, + "line": 2924, "column": 24 }, "identifierName": "math" @@ -103323,15 +103837,15 @@ }, "property": { "type": "Identifier", - "start": 115642, - "end": 115660, + "start": 115948, + "end": 115966, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 25 }, "end": { - "line": 2919, + "line": 2924, "column": 43 }, "identifierName": "expandAABB3Points3" @@ -103343,15 +103857,15 @@ "arguments": [ { "type": "Identifier", - "start": 115661, - "end": 115665, + "start": 115967, + "end": 115971, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 44 }, "end": { - "line": 2919, + "line": 2924, "column": 48 }, "identifierName": "aabb" @@ -103360,29 +103874,29 @@ }, { "type": "MemberExpression", - "start": 115667, - "end": 115680, + "start": 115973, + "end": 115986, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 50 }, "end": { - "line": 2919, + "line": 2924, "column": 63 } }, "object": { "type": "Identifier", - "start": 115667, - "end": 115670, + "start": 115973, + "end": 115976, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 50 }, "end": { - "line": 2919, + "line": 2924, "column": 53 }, "identifierName": "cfg" @@ -103391,15 +103905,15 @@ }, "property": { "type": "Identifier", - "start": 115671, - "end": 115680, + "start": 115977, + "end": 115986, "loc": { "start": { - "line": 2919, + "line": 2924, "column": 54 }, "end": { - "line": 2919, + "line": 2924, "column": 63 }, "identifierName": "positions" @@ -103413,58 +103927,58 @@ }, { "type": "ExpressionStatement", - "start": 115703, - "end": 115719, + "start": 116009, + "end": 116025, "loc": { "start": { - "line": 2920, + "line": 2925, "column": 20 }, "end": { - "line": 2920, + "line": 2925, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 115703, - "end": 115718, + "start": 116009, + "end": 116024, "loc": { "start": { - "line": 2920, + "line": 2925, "column": 20 }, "end": { - "line": 2920, + "line": 2925, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 115703, - "end": 115711, + "start": 116009, + "end": 116017, "loc": { "start": { - "line": 2920, + "line": 2925, "column": 20 }, "end": { - "line": 2920, + "line": 2925, "column": 28 } }, "object": { "type": "Identifier", - "start": 115703, - "end": 115706, + "start": 116009, + "end": 116012, "loc": { "start": { - "line": 2920, + "line": 2925, "column": 20 }, "end": { - "line": 2920, + "line": 2925, "column": 23 }, "identifierName": "cfg" @@ -103473,15 +103987,15 @@ }, "property": { "type": "Identifier", - "start": 115707, - "end": 115711, + "start": 116013, + "end": 116017, "loc": { "start": { - "line": 2920, + "line": 2925, "column": 24 }, "end": { - "line": 2920, + "line": 2925, "column": 28 }, "identifierName": "aabb" @@ -103492,15 +104006,15 @@ }, "right": { "type": "Identifier", - "start": 115714, - "end": 115718, + "start": 116020, + "end": 116024, "loc": { "start": { - "line": 2920, + "line": 2925, "column": 31 }, "end": { - "line": 2920, + "line": 2925, "column": 35 }, "identifierName": "aabb" @@ -103514,59 +104028,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 115744, - "end": 116025, + "start": 116050, + "end": 116331, "loc": { "start": { - "line": 2922, + "line": 2927, "column": 23 }, "end": { - "line": 2927, + "line": 2932, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 115766, - "end": 115800, + "start": 116072, + "end": 116106, "loc": { "start": { - "line": 2923, + "line": 2928, "column": 20 }, "end": { - "line": 2923, + "line": 2928, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 115772, - "end": 115799, + "start": 116078, + "end": 116105, "loc": { "start": { - "line": 2923, + "line": 2928, "column": 26 }, "end": { - "line": 2923, + "line": 2928, "column": 53 } }, "id": { "type": "Identifier", - "start": 115772, - "end": 115776, + "start": 116078, + "end": 116082, "loc": { "start": { - "line": 2923, + "line": 2928, "column": 26 }, "end": { - "line": 2923, + "line": 2928, "column": 30 }, "identifierName": "aabb" @@ -103575,43 +104089,43 @@ }, "init": { "type": "CallExpression", - "start": 115779, - "end": 115799, + "start": 116085, + "end": 116105, "loc": { "start": { - "line": 2923, + "line": 2928, "column": 33 }, "end": { - "line": 2923, + "line": 2928, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 115779, - "end": 115797, + "start": 116085, + "end": 116103, "loc": { "start": { - "line": 2923, + "line": 2928, "column": 33 }, "end": { - "line": 2923, + "line": 2928, "column": 51 } }, "object": { "type": "Identifier", - "start": 115779, - "end": 115783, + "start": 116085, + "end": 116089, "loc": { "start": { - "line": 2923, + "line": 2928, "column": 33 }, "end": { - "line": 2923, + "line": 2928, "column": 37 }, "identifierName": "math" @@ -103620,15 +104134,15 @@ }, "property": { "type": "Identifier", - "start": 115784, - "end": 115797, + "start": 116090, + "end": 116103, "loc": { "start": { - "line": 2923, + "line": 2928, "column": 38 }, "end": { - "line": 2923, + "line": 2928, "column": 51 }, "identifierName": "collapseAABB3" @@ -103645,57 +104159,57 @@ }, { "type": "ExpressionStatement", - "start": 115821, - "end": 115876, + "start": 116127, + "end": 116182, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 20 }, "end": { - "line": 2924, + "line": 2929, "column": 75 } }, "expression": { "type": "CallExpression", - "start": 115821, - "end": 115875, + "start": 116127, + "end": 116181, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 20 }, "end": { - "line": 2924, + "line": 2929, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 115821, - "end": 115844, + "start": 116127, + "end": 116150, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 20 }, "end": { - "line": 2924, + "line": 2929, "column": 43 } }, "object": { "type": "Identifier", - "start": 115821, - "end": 115825, + "start": 116127, + "end": 116131, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 20 }, "end": { - "line": 2924, + "line": 2929, "column": 24 }, "identifierName": "math" @@ -103704,15 +104218,15 @@ }, "property": { "type": "Identifier", - "start": 115826, - "end": 115844, + "start": 116132, + "end": 116150, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 25 }, "end": { - "line": 2924, + "line": 2929, "column": 43 }, "identifierName": "expandAABB3Points3" @@ -103724,15 +104238,15 @@ "arguments": [ { "type": "Identifier", - "start": 115845, - "end": 115849, + "start": 116151, + "end": 116155, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 44 }, "end": { - "line": 2924, + "line": 2929, "column": 48 }, "identifierName": "aabb" @@ -103741,29 +104255,29 @@ }, { "type": "MemberExpression", - "start": 115851, - "end": 115874, + "start": 116157, + "end": 116180, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 50 }, "end": { - "line": 2924, + "line": 2929, "column": 73 } }, "object": { "type": "Identifier", - "start": 115851, - "end": 115854, + "start": 116157, + "end": 116160, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 50 }, "end": { - "line": 2924, + "line": 2929, "column": 53 }, "identifierName": "cfg" @@ -103772,15 +104286,15 @@ }, "property": { "type": "Identifier", - "start": 115855, - "end": 115874, + "start": 116161, + "end": 116180, "loc": { "start": { - "line": 2924, + "line": 2929, "column": 54 }, "end": { - "line": 2924, + "line": 2929, "column": 73 }, "identifierName": "positionsCompressed" @@ -103794,57 +104308,57 @@ }, { "type": "ExpressionStatement", - "start": 115897, - "end": 115970, + "start": 116203, + "end": 116276, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 20 }, "end": { - "line": 2925, + "line": 2930, "column": 93 } }, "expression": { "type": "CallExpression", - "start": 115897, - "end": 115969, + "start": 116203, + "end": 116275, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 20 }, "end": { - "line": 2925, + "line": 2930, "column": 92 } }, "callee": { "type": "MemberExpression", - "start": 115897, - "end": 115936, + "start": 116203, + "end": 116242, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 20 }, "end": { - "line": 2925, + "line": 2930, "column": 59 } }, "object": { "type": "Identifier", - "start": 115897, - "end": 115921, + "start": 116203, + "end": 116227, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 20 }, "end": { - "line": 2925, + "line": 2930, "column": 44 }, "identifierName": "geometryCompressionUtils" @@ -103853,15 +104367,15 @@ }, "property": { "type": "Identifier", - "start": 115922, - "end": 115936, + "start": 116228, + "end": 116242, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 45 }, "end": { - "line": 2925, + "line": 2930, "column": 59 }, "identifierName": "decompressAABB" @@ -103873,15 +104387,15 @@ "arguments": [ { "type": "Identifier", - "start": 115937, - "end": 115941, + "start": 116243, + "end": 116247, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 60 }, "end": { - "line": 2925, + "line": 2930, "column": 64 }, "identifierName": "aabb" @@ -103890,29 +104404,29 @@ }, { "type": "MemberExpression", - "start": 115943, - "end": 115968, + "start": 116249, + "end": 116274, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 66 }, "end": { - "line": 2925, + "line": 2930, "column": 91 } }, "object": { "type": "Identifier", - "start": 115943, - "end": 115946, + "start": 116249, + "end": 116252, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 66 }, "end": { - "line": 2925, + "line": 2930, "column": 69 }, "identifierName": "cfg" @@ -103921,15 +104435,15 @@ }, "property": { "type": "Identifier", - "start": 115947, - "end": 115968, + "start": 116253, + "end": 116274, "loc": { "start": { - "line": 2925, + "line": 2930, "column": 70 }, "end": { - "line": 2925, + "line": 2930, "column": 91 }, "identifierName": "positionsDecodeMatrix" @@ -103943,58 +104457,58 @@ }, { "type": "ExpressionStatement", - "start": 115991, - "end": 116007, + "start": 116297, + "end": 116313, "loc": { "start": { - "line": 2926, + "line": 2931, "column": 20 }, "end": { - "line": 2926, + "line": 2931, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 115991, - "end": 116006, + "start": 116297, + "end": 116312, "loc": { "start": { - "line": 2926, + "line": 2931, "column": 20 }, "end": { - "line": 2926, + "line": 2931, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 115991, - "end": 115999, + "start": 116297, + "end": 116305, "loc": { "start": { - "line": 2926, + "line": 2931, "column": 20 }, "end": { - "line": 2926, + "line": 2931, "column": 28 } }, "object": { "type": "Identifier", - "start": 115991, - "end": 115994, + "start": 116297, + "end": 116300, "loc": { "start": { - "line": 2926, + "line": 2931, "column": 20 }, "end": { - "line": 2926, + "line": 2931, "column": 23 }, "identifierName": "cfg" @@ -104003,15 +104517,15 @@ }, "property": { "type": "Identifier", - "start": 115995, - "end": 115999, + "start": 116301, + "end": 116305, "loc": { "start": { - "line": 2926, + "line": 2931, "column": 24 }, "end": { - "line": 2926, + "line": 2931, "column": 28 }, "identifierName": "aabb" @@ -104022,15 +104536,15 @@ }, "right": { "type": "Identifier", - "start": 116002, - "end": 116006, + "start": 116308, + "end": 116312, "loc": { "start": { - "line": 2926, + "line": 2931, "column": 31 }, "end": { - "line": 2926, + "line": 2931, "column": 35 }, "identifierName": "aabb" @@ -104045,43 +104559,43 @@ }, { "type": "IfStatement", - "start": 116043, - "end": 116264, + "start": 116349, + "end": 116570, "loc": { "start": { - "line": 2929, + "line": 2934, "column": 16 }, "end": { - "line": 2933, + "line": 2938, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 116047, - "end": 116061, + "start": 116353, + "end": 116367, "loc": { "start": { - "line": 2929, + "line": 2934, "column": 20 }, "end": { - "line": 2929, + "line": 2934, "column": 34 } }, "object": { "type": "Identifier", - "start": 116047, - "end": 116050, + "start": 116353, + "end": 116356, "loc": { "start": { - "line": 2929, + "line": 2934, "column": 20 }, "end": { - "line": 2929, + "line": 2934, "column": 23 }, "identifierName": "cfg" @@ -104090,15 +104604,15 @@ }, "property": { "type": "Identifier", - "start": 116051, - "end": 116061, + "start": 116357, + "end": 116367, "loc": { "start": { - "line": 2929, + "line": 2934, "column": 24 }, "end": { - "line": 2929, + "line": 2934, "column": 34 }, "identifierName": "meshMatrix" @@ -104109,72 +104623,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 116063, - "end": 116264, + "start": 116369, + "end": 116570, "loc": { "start": { - "line": 2929, + "line": 2934, "column": 36 }, "end": { - "line": 2933, + "line": 2938, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 116085, - "end": 116122, + "start": 116391, + "end": 116428, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 20 }, "end": { - "line": 2930, + "line": 2935, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 116085, - "end": 116121, + "start": 116391, + "end": 116427, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 20 }, "end": { - "line": 2930, + "line": 2935, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 116085, - "end": 116101, + "start": 116391, + "end": 116407, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 20 }, "end": { - "line": 2930, + "line": 2935, "column": 36 } }, "object": { "type": "Identifier", - "start": 116085, - "end": 116089, + "start": 116391, + "end": 116395, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 20 }, "end": { - "line": 2930, + "line": 2935, "column": 24 }, "identifierName": "math" @@ -104183,15 +104697,15 @@ }, "property": { "type": "Identifier", - "start": 116090, - "end": 116101, + "start": 116396, + "end": 116407, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 25 }, "end": { - "line": 2930, + "line": 2935, "column": 36 }, "identifierName": "AABB3ToOBB3" @@ -104203,29 +104717,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 116102, - "end": 116110, + "start": 116408, + "end": 116416, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 37 }, "end": { - "line": 2930, + "line": 2935, "column": 45 } }, "object": { "type": "Identifier", - "start": 116102, - "end": 116105, + "start": 116408, + "end": 116411, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 37 }, "end": { - "line": 2930, + "line": 2935, "column": 40 }, "identifierName": "cfg" @@ -104234,15 +104748,15 @@ }, "property": { "type": "Identifier", - "start": 116106, - "end": 116110, + "start": 116412, + "end": 116416, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 41 }, "end": { - "line": 2930, + "line": 2935, "column": 45 }, "identifierName": "aabb" @@ -104253,15 +104767,15 @@ }, { "type": "Identifier", - "start": 116112, - "end": 116120, + "start": 116418, + "end": 116426, "loc": { "start": { - "line": 2930, + "line": 2935, "column": 47 }, "end": { - "line": 2930, + "line": 2935, "column": 55 }, "identifierName": "tempOBB3" @@ -104273,57 +104787,57 @@ }, { "type": "ExpressionStatement", - "start": 116143, - "end": 116188, + "start": 116449, + "end": 116494, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 20 }, "end": { - "line": 2931, + "line": 2936, "column": 65 } }, "expression": { "type": "CallExpression", - "start": 116143, - "end": 116187, + "start": 116449, + "end": 116493, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 20 }, "end": { - "line": 2931, + "line": 2936, "column": 64 } }, "callee": { "type": "MemberExpression", - "start": 116143, - "end": 116161, + "start": 116449, + "end": 116467, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 20 }, "end": { - "line": 2931, + "line": 2936, "column": 38 } }, "object": { "type": "Identifier", - "start": 116143, - "end": 116147, + "start": 116449, + "end": 116453, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 20 }, "end": { - "line": 2931, + "line": 2936, "column": 24 }, "identifierName": "math" @@ -104332,15 +104846,15 @@ }, "property": { "type": "Identifier", - "start": 116148, - "end": 116161, + "start": 116454, + "end": 116467, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 25 }, "end": { - "line": 2931, + "line": 2936, "column": 38 }, "identifierName": "transformOBB3" @@ -104352,29 +104866,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 116162, - "end": 116176, + "start": 116468, + "end": 116482, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 39 }, "end": { - "line": 2931, + "line": 2936, "column": 53 } }, "object": { "type": "Identifier", - "start": 116162, - "end": 116165, + "start": 116468, + "end": 116471, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 39 }, "end": { - "line": 2931, + "line": 2936, "column": 42 }, "identifierName": "cfg" @@ -104383,15 +104897,15 @@ }, "property": { "type": "Identifier", - "start": 116166, - "end": 116176, + "start": 116472, + "end": 116482, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 43 }, "end": { - "line": 2931, + "line": 2936, "column": 53 }, "identifierName": "meshMatrix" @@ -104402,15 +104916,15 @@ }, { "type": "Identifier", - "start": 116178, - "end": 116186, + "start": 116484, + "end": 116492, "loc": { "start": { - "line": 2931, + "line": 2936, "column": 55 }, "end": { - "line": 2931, + "line": 2936, "column": 63 }, "identifierName": "tempOBB3" @@ -104422,57 +104936,57 @@ }, { "type": "ExpressionStatement", - "start": 116209, - "end": 116246, + "start": 116515, + "end": 116552, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 20 }, "end": { - "line": 2932, + "line": 2937, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 116209, - "end": 116245, + "start": 116515, + "end": 116551, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 20 }, "end": { - "line": 2932, + "line": 2937, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 116209, - "end": 116225, + "start": 116515, + "end": 116531, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 20 }, "end": { - "line": 2932, + "line": 2937, "column": 36 } }, "object": { "type": "Identifier", - "start": 116209, - "end": 116213, + "start": 116515, + "end": 116519, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 20 }, "end": { - "line": 2932, + "line": 2937, "column": 24 }, "identifierName": "math" @@ -104481,15 +104995,15 @@ }, "property": { "type": "Identifier", - "start": 116214, - "end": 116225, + "start": 116520, + "end": 116531, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 25 }, "end": { - "line": 2932, + "line": 2937, "column": 36 }, "identifierName": "OBB3ToAABB3" @@ -104501,15 +105015,15 @@ "arguments": [ { "type": "Identifier", - "start": 116226, - "end": 116234, + "start": 116532, + "end": 116540, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 37 }, "end": { - "line": 2932, + "line": 2937, "column": 45 }, "identifierName": "tempOBB3" @@ -104518,29 +105032,29 @@ }, { "type": "MemberExpression", - "start": 116236, - "end": 116244, + "start": 116542, + "end": 116550, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 47 }, "end": { - "line": 2932, + "line": 2937, "column": 55 } }, "object": { "type": "Identifier", - "start": 116236, - "end": 116239, + "start": 116542, + "end": 116545, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 47 }, "end": { - "line": 2932, + "line": 2937, "column": 50 }, "identifierName": "cfg" @@ -104549,15 +105063,15 @@ }, "property": { "type": "Identifier", - "start": 116240, - "end": 116244, + "start": 116546, + "end": 116550, "loc": { "start": { - "line": 2932, + "line": 2937, "column": 51 }, "end": { - "line": 2932, + "line": 2937, "column": 55 }, "identifierName": "aabb" @@ -104578,15 +105092,15 @@ { "type": "CommentLine", "value": " EDGES", - "start": 116282, - "end": 116290, + "start": 116588, + "end": 116596, "loc": { "start": { - "line": 2935, + "line": 2940, "column": 16 }, "end": { - "line": 2935, + "line": 2940, "column": 24 } } @@ -104595,57 +105109,57 @@ }, { "type": "IfStatement", - "start": 116308, - "end": 116781, + "start": 116614, + "end": 117087, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 16 }, "end": { - "line": 2943, + "line": 2948, "column": 17 } }, "test": { "type": "LogicalExpression", - "start": 116312, - "end": 116439, + "start": 116618, + "end": 116745, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 20 }, "end": { - "line": 2937, + "line": 2942, "column": 147 } }, "left": { "type": "LogicalExpression", - "start": 116312, - "end": 116344, + "start": 116618, + "end": 116650, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 20 }, "end": { - "line": 2937, + "line": 2942, "column": 52 } }, "left": { "type": "UnaryExpression", - "start": 116312, - "end": 116324, + "start": 116618, + "end": 116630, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 20 }, "end": { - "line": 2937, + "line": 2942, "column": 32 } }, @@ -104653,29 +105167,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 116313, - "end": 116324, + "start": 116619, + "end": 116630, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 21 }, "end": { - "line": 2937, + "line": 2942, "column": 32 } }, "object": { "type": "Identifier", - "start": 116313, - "end": 116316, + "start": 116619, + "end": 116622, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 21 }, "end": { - "line": 2937, + "line": 2942, "column": 24 }, "identifierName": "cfg" @@ -104685,15 +105199,15 @@ }, "property": { "type": "Identifier", - "start": 116317, - "end": 116324, + "start": 116623, + "end": 116630, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 25 }, "end": { - "line": 2937, + "line": 2942, "column": 32 }, "identifierName": "buckets" @@ -104711,15 +105225,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 116328, - "end": 116344, + "start": 116634, + "end": 116650, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 36 }, "end": { - "line": 2937, + "line": 2942, "column": 52 } }, @@ -104727,29 +105241,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 116329, - "end": 116344, + "start": 116635, + "end": 116650, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 37 }, "end": { - "line": 2937, + "line": 2942, "column": 52 } }, "object": { "type": "Identifier", - "start": 116329, - "end": 116332, + "start": 116635, + "end": 116638, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 37 }, "end": { - "line": 2937, + "line": 2942, "column": 40 }, "identifierName": "cfg" @@ -104758,15 +105272,15 @@ }, "property": { "type": "Identifier", - "start": 116333, - "end": 116344, + "start": 116639, + "end": 116650, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 41 }, "end": { - "line": 2937, + "line": 2942, "column": 52 }, "identifierName": "edgeIndices" @@ -104784,71 +105298,71 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 116349, - "end": 116438, + "start": 116655, + "end": 116744, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 57 }, "end": { - "line": 2937, + "line": 2942, "column": 146 } }, "left": { "type": "LogicalExpression", - "start": 116349, - "end": 116407, + "start": 116655, + "end": 116713, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 57 }, "end": { - "line": 2937, + "line": 2942, "column": 115 } }, "left": { "type": "BinaryExpression", - "start": 116349, - "end": 116378, + "start": 116655, + "end": 116684, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 57 }, "end": { - "line": 2937, + "line": 2942, "column": 86 } }, "left": { "type": "MemberExpression", - "start": 116349, - "end": 116362, + "start": 116655, + "end": 116668, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 57 }, "end": { - "line": 2937, + "line": 2942, "column": 70 } }, "object": { "type": "Identifier", - "start": 116349, - "end": 116352, + "start": 116655, + "end": 116658, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 57 }, "end": { - "line": 2937, + "line": 2942, "column": 60 }, "identifierName": "cfg" @@ -104857,15 +105371,15 @@ }, "property": { "type": "Identifier", - "start": 116353, - "end": 116362, + "start": 116659, + "end": 116668, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 61 }, "end": { - "line": 2937, + "line": 2942, "column": 70 }, "identifierName": "primitive" @@ -104877,15 +105391,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 116367, - "end": 116378, + "start": 116673, + "end": 116684, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 75 }, "end": { - "line": 2937, + "line": 2942, "column": 86 } }, @@ -104899,43 +105413,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 116382, - "end": 116407, + "start": 116688, + "end": 116713, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 90 }, "end": { - "line": 2937, + "line": 2942, "column": 115 } }, "left": { "type": "MemberExpression", - "start": 116382, - "end": 116395, + "start": 116688, + "end": 116701, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 90 }, "end": { - "line": 2937, + "line": 2942, "column": 103 } }, "object": { "type": "Identifier", - "start": 116382, - "end": 116385, + "start": 116688, + "end": 116691, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 90 }, "end": { - "line": 2937, + "line": 2942, "column": 93 }, "identifierName": "cfg" @@ -104944,15 +105458,15 @@ }, "property": { "type": "Identifier", - "start": 116386, - "end": 116395, + "start": 116692, + "end": 116701, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 94 }, "end": { - "line": 2937, + "line": 2942, "column": 103 }, "identifierName": "primitive" @@ -104964,15 +105478,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 116400, - "end": 116407, + "start": 116706, + "end": 116713, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 108 }, "end": { - "line": 2937, + "line": 2942, "column": 115 } }, @@ -104987,43 +105501,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 116411, - "end": 116438, + "start": 116717, + "end": 116744, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 119 }, "end": { - "line": 2937, + "line": 2942, "column": 146 } }, "left": { "type": "MemberExpression", - "start": 116411, - "end": 116424, + "start": 116717, + "end": 116730, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 119 }, "end": { - "line": 2937, + "line": 2942, "column": 132 } }, "object": { "type": "Identifier", - "start": 116411, - "end": 116414, + "start": 116717, + "end": 116720, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 119 }, "end": { - "line": 2937, + "line": 2942, "column": 122 }, "identifierName": "cfg" @@ -105032,15 +105546,15 @@ }, "property": { "type": "Identifier", - "start": 116415, - "end": 116424, + "start": 116721, + "end": 116730, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 123 }, "end": { - "line": 2937, + "line": 2942, "column": 132 }, "identifierName": "primitive" @@ -105052,15 +105566,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 116429, - "end": 116438, + "start": 116735, + "end": 116744, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 137 }, "end": { - "line": 2937, + "line": 2942, "column": 146 } }, @@ -105073,65 +105587,65 @@ }, "extra": { "parenthesized": true, - "parenStart": 116348 + "parenStart": 116654 } }, "leadingComments": null }, "consequent": { "type": "BlockStatement", - "start": 116441, - "end": 116781, + "start": 116747, + "end": 117087, "loc": { "start": { - "line": 2937, + "line": 2942, "column": 149 }, "end": { - "line": 2943, + "line": 2948, "column": 17 } }, "body": [ { "type": "IfStatement", - "start": 116463, - "end": 116763, + "start": 116769, + "end": 117069, "loc": { "start": { - "line": 2938, + "line": 2943, "column": 20 }, "end": { - "line": 2942, + "line": 2947, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 116467, - "end": 116480, + "start": 116773, + "end": 116786, "loc": { "start": { - "line": 2938, + "line": 2943, "column": 24 }, "end": { - "line": 2938, + "line": 2943, "column": 37 } }, "object": { "type": "Identifier", - "start": 116467, - "end": 116470, + "start": 116773, + "end": 116776, "loc": { "start": { - "line": 2938, + "line": 2943, "column": 24 }, "end": { - "line": 2938, + "line": 2943, "column": 27 }, "identifierName": "cfg" @@ -105140,15 +105654,15 @@ }, "property": { "type": "Identifier", - "start": 116471, - "end": 116480, + "start": 116777, + "end": 116786, "loc": { "start": { - "line": 2938, + "line": 2943, "column": 28 }, "end": { - "line": 2938, + "line": 2943, "column": 37 }, "identifierName": "positions" @@ -105159,73 +105673,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 116482, - "end": 116604, + "start": 116788, + "end": 116910, "loc": { "start": { - "line": 2938, + "line": 2943, "column": 39 }, "end": { - "line": 2940, + "line": 2945, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 116508, - "end": 116582, + "start": 116814, + "end": 116888, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 24 }, "end": { - "line": 2939, + "line": 2944, "column": 98 } }, "expression": { "type": "AssignmentExpression", - "start": 116508, - "end": 116581, + "start": 116814, + "end": 116887, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 24 }, "end": { - "line": 2939, + "line": 2944, "column": 97 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 116508, - "end": 116523, + "start": 116814, + "end": 116829, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 24 }, "end": { - "line": 2939, + "line": 2944, "column": 39 } }, "object": { "type": "Identifier", - "start": 116508, - "end": 116511, + "start": 116814, + "end": 116817, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 24 }, "end": { - "line": 2939, + "line": 2944, "column": 27 }, "identifierName": "cfg" @@ -105234,15 +105748,15 @@ }, "property": { "type": "Identifier", - "start": 116512, - "end": 116523, + "start": 116818, + "end": 116829, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 28 }, "end": { - "line": 2939, + "line": 2944, "column": 39 }, "identifierName": "edgeIndices" @@ -105253,29 +105767,29 @@ }, "right": { "type": "CallExpression", - "start": 116526, - "end": 116581, + "start": 116832, + "end": 116887, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 42 }, "end": { - "line": 2939, + "line": 2944, "column": 97 } }, "callee": { "type": "Identifier", - "start": 116526, - "end": 116542, + "start": 116832, + "end": 116848, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 42 }, "end": { - "line": 2939, + "line": 2944, "column": 58 }, "identifierName": "buildEdgeIndices" @@ -105285,29 +105799,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 116543, - "end": 116556, + "start": 116849, + "end": 116862, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 59 }, "end": { - "line": 2939, + "line": 2944, "column": 72 } }, "object": { "type": "Identifier", - "start": 116543, - "end": 116546, + "start": 116849, + "end": 116852, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 59 }, "end": { - "line": 2939, + "line": 2944, "column": 62 }, "identifierName": "cfg" @@ -105316,15 +105830,15 @@ }, "property": { "type": "Identifier", - "start": 116547, - "end": 116556, + "start": 116853, + "end": 116862, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 63 }, "end": { - "line": 2939, + "line": 2944, "column": 72 }, "identifierName": "positions" @@ -105335,29 +105849,29 @@ }, { "type": "MemberExpression", - "start": 116558, - "end": 116569, + "start": 116864, + "end": 116875, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 74 }, "end": { - "line": 2939, + "line": 2944, "column": 85 } }, "object": { "type": "Identifier", - "start": 116558, - "end": 116561, + "start": 116864, + "end": 116867, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 74 }, "end": { - "line": 2939, + "line": 2944, "column": 77 }, "identifierName": "cfg" @@ -105366,15 +105880,15 @@ }, "property": { "type": "Identifier", - "start": 116562, - "end": 116569, + "start": 116868, + "end": 116875, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 78 }, "end": { - "line": 2939, + "line": 2944, "column": 85 }, "identifierName": "indices" @@ -105385,30 +105899,30 @@ }, { "type": "NullLiteral", - "start": 116571, - "end": 116575, + "start": 116877, + "end": 116881, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 87 }, "end": { - "line": 2939, + "line": 2944, "column": 91 } } }, { "type": "NumericLiteral", - "start": 116577, - "end": 116580, + "start": 116883, + "end": 116886, "loc": { "start": { - "line": 2939, + "line": 2944, "column": 93 }, "end": { - "line": 2939, + "line": 2944, "column": 96 } }, @@ -105427,73 +105941,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 116610, - "end": 116763, + "start": 116916, + "end": 117069, "loc": { "start": { - "line": 2940, + "line": 2945, "column": 27 }, "end": { - "line": 2942, + "line": 2947, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 116636, - "end": 116741, + "start": 116942, + "end": 117047, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 24 }, "end": { - "line": 2941, + "line": 2946, "column": 129 } }, "expression": { "type": "AssignmentExpression", - "start": 116636, - "end": 116740, + "start": 116942, + "end": 117046, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 24 }, "end": { - "line": 2941, + "line": 2946, "column": 128 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 116636, - "end": 116651, + "start": 116942, + "end": 116957, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 24 }, "end": { - "line": 2941, + "line": 2946, "column": 39 } }, "object": { "type": "Identifier", - "start": 116636, - "end": 116639, + "start": 116942, + "end": 116945, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 24 }, "end": { - "line": 2941, + "line": 2946, "column": 27 }, "identifierName": "cfg" @@ -105502,15 +106016,15 @@ }, "property": { "type": "Identifier", - "start": 116640, - "end": 116651, + "start": 116946, + "end": 116957, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 28 }, "end": { - "line": 2941, + "line": 2946, "column": 39 }, "identifierName": "edgeIndices" @@ -105521,29 +106035,29 @@ }, "right": { "type": "CallExpression", - "start": 116654, - "end": 116740, + "start": 116960, + "end": 117046, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 42 }, "end": { - "line": 2941, + "line": 2946, "column": 128 } }, "callee": { "type": "Identifier", - "start": 116654, - "end": 116670, + "start": 116960, + "end": 116976, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 42 }, "end": { - "line": 2941, + "line": 2946, "column": 58 }, "identifierName": "buildEdgeIndices" @@ -105553,29 +106067,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 116671, - "end": 116694, + "start": 116977, + "end": 117000, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 59 }, "end": { - "line": 2941, + "line": 2946, "column": 82 } }, "object": { "type": "Identifier", - "start": 116671, - "end": 116674, + "start": 116977, + "end": 116980, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 59 }, "end": { - "line": 2941, + "line": 2946, "column": 62 }, "identifierName": "cfg" @@ -105584,15 +106098,15 @@ }, "property": { "type": "Identifier", - "start": 116675, - "end": 116694, + "start": 116981, + "end": 117000, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 63 }, "end": { - "line": 2941, + "line": 2946, "column": 82 }, "identifierName": "positionsCompressed" @@ -105603,29 +106117,29 @@ }, { "type": "MemberExpression", - "start": 116696, - "end": 116707, + "start": 117002, + "end": 117013, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 84 }, "end": { - "line": 2941, + "line": 2946, "column": 95 } }, "object": { "type": "Identifier", - "start": 116696, - "end": 116699, + "start": 117002, + "end": 117005, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 84 }, "end": { - "line": 2941, + "line": 2946, "column": 87 }, "identifierName": "cfg" @@ -105634,15 +106148,15 @@ }, "property": { "type": "Identifier", - "start": 116700, - "end": 116707, + "start": 117006, + "end": 117013, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 88 }, "end": { - "line": 2941, + "line": 2946, "column": 95 }, "identifierName": "indices" @@ -105653,29 +106167,29 @@ }, { "type": "MemberExpression", - "start": 116709, - "end": 116734, + "start": 117015, + "end": 117040, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 97 }, "end": { - "line": 2941, + "line": 2946, "column": 122 } }, "object": { "type": "Identifier", - "start": 116709, - "end": 116712, + "start": 117015, + "end": 117018, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 97 }, "end": { - "line": 2941, + "line": 2946, "column": 100 }, "identifierName": "cfg" @@ -105684,15 +106198,15 @@ }, "property": { "type": "Identifier", - "start": 116713, - "end": 116734, + "start": 117019, + "end": 117040, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 101 }, "end": { - "line": 2941, + "line": 2946, "column": 122 }, "identifierName": "positionsDecodeMatrix" @@ -105703,15 +106217,15 @@ }, { "type": "NumericLiteral", - "start": 116736, - "end": 116739, + "start": 117042, + "end": 117045, "loc": { "start": { - "line": 2941, + "line": 2946, "column": 124 }, "end": { - "line": 2941, + "line": 2946, "column": 127 } }, @@ -105738,15 +106252,15 @@ { "type": "CommentLine", "value": " EDGES", - "start": 116282, - "end": 116290, + "start": 116588, + "end": 116596, "loc": { "start": { - "line": 2935, + "line": 2940, "column": 16 }, "end": { - "line": 2935, + "line": 2940, "column": 24 } } @@ -105756,15 +106270,15 @@ { "type": "CommentLine", "value": " TEXTURE", - "start": 116799, - "end": 116809, + "start": 117105, + "end": 117115, "loc": { "start": { - "line": 2945, + "line": 2950, "column": 16 }, "end": { - "line": 2945, + "line": 2950, "column": 26 } } @@ -105772,15 +106286,15 @@ { "type": "CommentLine", "value": " cfg.textureSetId = cfg.textureSetId || DEFAULT_TEXTURE_SET_ID;", - "start": 116827, - "end": 116892, + "start": 117133, + "end": 117198, "loc": { "start": { - "line": 2947, + "line": 2952, "column": 16 }, "end": { - "line": 2947, + "line": 2952, "column": 81 } } @@ -105789,43 +106303,43 @@ }, { "type": "IfStatement", - "start": 116909, - "end": 117280, + "start": 117215, + "end": 117586, "loc": { "start": { - "line": 2948, + "line": 2953, "column": 16 }, "end": { - "line": 2954, + "line": 2959, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 116913, - "end": 116929, + "start": 117219, + "end": 117235, "loc": { "start": { - "line": 2948, + "line": 2953, "column": 20 }, "end": { - "line": 2948, + "line": 2953, "column": 36 } }, "object": { "type": "Identifier", - "start": 116913, - "end": 116916, + "start": 117219, + "end": 117222, "loc": { "start": { - "line": 2948, + "line": 2953, "column": 20 }, "end": { - "line": 2948, + "line": 2953, "column": 23 }, "identifierName": "cfg" @@ -105835,15 +106349,15 @@ }, "property": { "type": "Identifier", - "start": 116917, - "end": 116929, + "start": 117223, + "end": 117235, "loc": { "start": { - "line": 2948, + "line": 2953, "column": 24 }, "end": { - "line": 2948, + "line": 2953, "column": 36 }, "identifierName": "textureSetId" @@ -105855,73 +106369,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 116931, - "end": 117280, + "start": 117237, + "end": 117586, "loc": { "start": { - "line": 2948, + "line": 2953, "column": 38 }, "end": { - "line": 2954, + "line": 2959, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 116953, - "end": 117006, + "start": 117259, + "end": 117312, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 20 }, "end": { - "line": 2949, + "line": 2954, "column": 73 } }, "expression": { "type": "AssignmentExpression", - "start": 116953, - "end": 117005, + "start": 117259, + "end": 117311, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 20 }, "end": { - "line": 2949, + "line": 2954, "column": 72 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 116953, - "end": 116967, + "start": 117259, + "end": 117273, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 20 }, "end": { - "line": 2949, + "line": 2954, "column": 34 } }, "object": { "type": "Identifier", - "start": 116953, - "end": 116956, + "start": 117259, + "end": 117262, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 20 }, "end": { - "line": 2949, + "line": 2954, "column": 23 }, "identifierName": "cfg" @@ -105930,15 +106444,15 @@ }, "property": { "type": "Identifier", - "start": 116957, - "end": 116967, + "start": 117263, + "end": 117273, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 24 }, "end": { - "line": 2949, + "line": 2954, "column": 34 }, "identifierName": "textureSet" @@ -105949,58 +106463,58 @@ }, "right": { "type": "MemberExpression", - "start": 116970, - "end": 117005, + "start": 117276, + "end": 117311, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 37 }, "end": { - "line": 2949, + "line": 2954, "column": 72 } }, "object": { "type": "MemberExpression", - "start": 116970, - "end": 116987, + "start": 117276, + "end": 117293, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 37 }, "end": { - "line": 2949, + "line": 2954, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 116970, - "end": 116974, + "start": 117276, + "end": 117280, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 37 }, "end": { - "line": 2949, + "line": 2954, "column": 41 } } }, "property": { "type": "Identifier", - "start": 116975, - "end": 116987, + "start": 117281, + "end": 117293, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 42 }, "end": { - "line": 2949, + "line": 2954, "column": 54 }, "identifierName": "_textureSets" @@ -106011,29 +106525,29 @@ }, "property": { "type": "MemberExpression", - "start": 116988, - "end": 117004, + "start": 117294, + "end": 117310, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 55 }, "end": { - "line": 2949, + "line": 2954, "column": 71 } }, "object": { "type": "Identifier", - "start": 116988, - "end": 116991, + "start": 117294, + "end": 117297, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 55 }, "end": { - "line": 2949, + "line": 2954, "column": 58 }, "identifierName": "cfg" @@ -106042,15 +106556,15 @@ }, "property": { "type": "Identifier", - "start": 116992, - "end": 117004, + "start": 117298, + "end": 117310, "loc": { "start": { - "line": 2949, + "line": 2954, "column": 59 }, "end": { - "line": 2949, + "line": 2954, "column": 71 }, "identifierName": "textureSetId" @@ -106065,29 +106579,29 @@ }, { "type": "IfStatement", - "start": 117027, - "end": 117262, + "start": 117333, + "end": 117568, "loc": { "start": { - "line": 2950, + "line": 2955, "column": 20 }, "end": { - "line": 2953, + "line": 2958, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 117031, - "end": 117046, + "start": 117337, + "end": 117352, "loc": { "start": { - "line": 2950, + "line": 2955, "column": 24 }, "end": { - "line": 2950, + "line": 2955, "column": 39 } }, @@ -106095,29 +106609,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 117032, - "end": 117046, + "start": 117338, + "end": 117352, "loc": { "start": { - "line": 2950, + "line": 2955, "column": 25 }, "end": { - "line": 2950, + "line": 2955, "column": 39 } }, "object": { "type": "Identifier", - "start": 117032, - "end": 117035, + "start": 117338, + "end": 117341, "loc": { "start": { - "line": 2950, + "line": 2955, "column": 25 }, "end": { - "line": 2950, + "line": 2955, "column": 28 }, "identifierName": "cfg" @@ -106126,15 +106640,15 @@ }, "property": { "type": "Identifier", - "start": 117036, - "end": 117046, + "start": 117342, + "end": 117352, "loc": { "start": { - "line": 2950, + "line": 2955, "column": 29 }, "end": { - "line": 2950, + "line": 2955, "column": 39 }, "identifierName": "textureSet" @@ -106149,87 +106663,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 117048, - "end": 117262, + "start": 117354, + "end": 117568, "loc": { "start": { - "line": 2950, + "line": 2955, "column": 41 }, "end": { - "line": 2953, + "line": 2958, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 117074, - "end": 117202, + "start": 117380, + "end": 117508, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 24 }, "end": { - "line": 2951, + "line": 2956, "column": 152 } }, "expression": { "type": "CallExpression", - "start": 117074, - "end": 117201, + "start": 117380, + "end": 117507, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 24 }, "end": { - "line": 2951, + "line": 2956, "column": 151 } }, "callee": { "type": "MemberExpression", - "start": 117074, - "end": 117084, + "start": 117380, + "end": 117390, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 24 }, "end": { - "line": 2951, + "line": 2956, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 117074, - "end": 117078, + "start": 117380, + "end": 117384, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 24 }, "end": { - "line": 2951, + "line": 2956, "column": 28 } } }, "property": { "type": "Identifier", - "start": 117079, - "end": 117084, + "start": 117385, + "end": 117390, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 29 }, "end": { - "line": 2951, + "line": 2956, "column": 34 }, "identifierName": "error" @@ -106241,44 +106755,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 117085, - "end": 117200, + "start": 117391, + "end": 117506, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 35 }, "end": { - "line": 2951, + "line": 2956, "column": 150 } }, "expressions": [ { "type": "MemberExpression", - "start": 117124, - "end": 117140, + "start": 117430, + "end": 117446, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 74 }, "end": { - "line": 2951, + "line": 2956, "column": 90 } }, "object": { "type": "Identifier", - "start": 117124, - "end": 117127, + "start": 117430, + "end": 117433, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 74 }, "end": { - "line": 2951, + "line": 2956, "column": 77 }, "identifierName": "cfg" @@ -106287,15 +106801,15 @@ }, "property": { "type": "Identifier", - "start": 117128, - "end": 117140, + "start": 117434, + "end": 117446, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 78 }, "end": { - "line": 2951, + "line": 2956, "column": 90 }, "identifierName": "textureSetId" @@ -106308,15 +106822,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 117086, - "end": 117122, + "start": 117392, + "end": 117428, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 36 }, "end": { - "line": 2951, + "line": 2956, "column": 72 } }, @@ -106328,15 +106842,15 @@ }, { "type": "TemplateElement", - "start": 117141, - "end": 117199, + "start": 117447, + "end": 117505, "loc": { "start": { - "line": 2951, + "line": 2956, "column": 91 }, "end": { - "line": 2951, + "line": 2956, "column": 149 } }, @@ -106353,29 +106867,29 @@ }, { "type": "ReturnStatement", - "start": 117227, - "end": 117240, + "start": 117533, + "end": 117546, "loc": { "start": { - "line": 2952, + "line": 2957, "column": 24 }, "end": { - "line": 2952, + "line": 2957, "column": 37 } }, "argument": { "type": "BooleanLiteral", - "start": 117234, - "end": 117239, + "start": 117540, + "end": 117545, "loc": { "start": { - "line": 2952, + "line": 2957, "column": 31 }, "end": { - "line": 2952, + "line": 2957, "column": 36 } }, @@ -106395,15 +106909,15 @@ { "type": "CommentLine", "value": " TEXTURE", - "start": 116799, - "end": 116809, + "start": 117105, + "end": 117115, "loc": { "start": { - "line": 2945, + "line": 2950, "column": 16 }, "end": { - "line": 2945, + "line": 2950, "column": 26 } } @@ -106411,15 +106925,15 @@ { "type": "CommentLine", "value": " cfg.textureSetId = cfg.textureSetId || DEFAULT_TEXTURE_SET_ID;", - "start": 116827, - "end": 116892, + "start": 117133, + "end": 117198, "loc": { "start": { - "line": 2947, + "line": 2952, "column": 16 }, "end": { - "line": 2947, + "line": 2952, "column": 81 } } @@ -106435,170 +106949,170 @@ }, "alternate": { "type": "BlockStatement", - "start": 117311, - "end": 121672, + "start": 117617, + "end": 122186, "loc": { "start": { - "line": 2957, + "line": 2962, "column": 15 }, "end": { - "line": 3056, + "line": 3064, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 117353, - "end": 117811, + "start": 117659, + "end": 118117, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 12 }, "end": { - "line": 2964, + "line": 2969, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 117357, - "end": 117530, + "start": 117663, + "end": 117836, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 189 } }, "left": { "type": "LogicalExpression", - "start": 117357, - "end": 117501, + "start": 117663, + "end": 117807, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 160 } }, "left": { "type": "LogicalExpression", - "start": 117357, - "end": 117481, + "start": 117663, + "end": 117787, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 140 } }, "left": { "type": "LogicalExpression", - "start": 117357, - "end": 117471, + "start": 117663, + "end": 117777, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 130 } }, "left": { "type": "LogicalExpression", - "start": 117357, - "end": 117446, + "start": 117663, + "end": 117752, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 105 } }, "left": { "type": "LogicalExpression", - "start": 117357, - "end": 117431, + "start": 117663, + "end": 117737, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 90 } }, "left": { "type": "LogicalExpression", - "start": 117357, - "end": 117412, + "start": 117663, + "end": 117718, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 71 } }, "left": { "type": "LogicalExpression", - "start": 117357, - "end": 117397, + "start": 117663, + "end": 117703, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 117357, - "end": 117370, + "start": 117663, + "end": 117676, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 29 } }, "object": { "type": "Identifier", - "start": 117357, - "end": 117360, + "start": 117663, + "end": 117666, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 16 }, "end": { - "line": 2961, + "line": 2966, "column": 19 }, "identifierName": "cfg" @@ -106608,15 +107122,15 @@ }, "property": { "type": "Identifier", - "start": 117361, - "end": 117370, + "start": 117667, + "end": 117676, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 20 }, "end": { - "line": 2961, + "line": 2966, "column": 29 }, "identifierName": "positions" @@ -106629,29 +107143,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 117374, - "end": 117397, + "start": 117680, + "end": 117703, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 33 }, "end": { - "line": 2961, + "line": 2966, "column": 56 } }, "object": { "type": "Identifier", - "start": 117374, - "end": 117377, + "start": 117680, + "end": 117683, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 33 }, "end": { - "line": 2961, + "line": 2966, "column": 36 }, "identifierName": "cfg" @@ -106660,15 +107174,15 @@ }, "property": { "type": "Identifier", - "start": 117378, - "end": 117397, + "start": 117684, + "end": 117703, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 37 }, "end": { - "line": 2961, + "line": 2966, "column": 56 }, "identifierName": "positionsCompressed" @@ -106682,29 +107196,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 117401, - "end": 117412, + "start": 117707, + "end": 117718, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 60 }, "end": { - "line": 2961, + "line": 2966, "column": 71 } }, "object": { "type": "Identifier", - "start": 117401, - "end": 117404, + "start": 117707, + "end": 117710, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 60 }, "end": { - "line": 2961, + "line": 2966, "column": 63 }, "identifierName": "cfg" @@ -106713,15 +107227,15 @@ }, "property": { "type": "Identifier", - "start": 117405, - "end": 117412, + "start": 117711, + "end": 117718, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 64 }, "end": { - "line": 2961, + "line": 2966, "column": 71 }, "identifierName": "indices" @@ -106735,29 +107249,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 117416, - "end": 117431, + "start": 117722, + "end": 117737, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 75 }, "end": { - "line": 2961, + "line": 2966, "column": 90 } }, "object": { "type": "Identifier", - "start": 117416, - "end": 117419, + "start": 117722, + "end": 117725, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 75 }, "end": { - "line": 2961, + "line": 2966, "column": 78 }, "identifierName": "cfg" @@ -106766,15 +107280,15 @@ }, "property": { "type": "Identifier", - "start": 117420, - "end": 117431, + "start": 117726, + "end": 117737, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 79 }, "end": { - "line": 2961, + "line": 2966, "column": 90 }, "identifierName": "edgeIndices" @@ -106788,29 +107302,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 117435, - "end": 117446, + "start": 117741, + "end": 117752, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 94 }, "end": { - "line": 2961, + "line": 2966, "column": 105 } }, "object": { "type": "Identifier", - "start": 117435, - "end": 117438, + "start": 117741, + "end": 117744, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 94 }, "end": { - "line": 2961, + "line": 2966, "column": 97 }, "identifierName": "cfg" @@ -106819,15 +107333,15 @@ }, "property": { "type": "Identifier", - "start": 117439, - "end": 117446, + "start": 117745, + "end": 117752, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 98 }, "end": { - "line": 2961, + "line": 2966, "column": 105 }, "identifierName": "normals" @@ -106841,29 +107355,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 117450, - "end": 117471, + "start": 117756, + "end": 117777, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 109 }, "end": { - "line": 2961, + "line": 2966, "column": 130 } }, "object": { "type": "Identifier", - "start": 117450, - "end": 117453, + "start": 117756, + "end": 117759, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 109 }, "end": { - "line": 2961, + "line": 2966, "column": 112 }, "identifierName": "cfg" @@ -106872,15 +107386,15 @@ }, "property": { "type": "Identifier", - "start": 117454, - "end": 117471, + "start": 117760, + "end": 117777, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 113 }, "end": { - "line": 2961, + "line": 2966, "column": 130 }, "identifierName": "normalsCompressed" @@ -106894,29 +107408,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 117475, - "end": 117481, + "start": 117781, + "end": 117787, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 134 }, "end": { - "line": 2961, + "line": 2966, "column": 140 } }, "object": { "type": "Identifier", - "start": 117475, - "end": 117478, + "start": 117781, + "end": 117784, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 134 }, "end": { - "line": 2961, + "line": 2966, "column": 137 }, "identifierName": "cfg" @@ -106925,15 +107439,15 @@ }, "property": { "type": "Identifier", - "start": 117479, - "end": 117481, + "start": 117785, + "end": 117787, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 138 }, "end": { - "line": 2961, + "line": 2966, "column": 140 }, "identifierName": "uv" @@ -106947,29 +107461,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 117485, - "end": 117501, + "start": 117791, + "end": 117807, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 144 }, "end": { - "line": 2961, + "line": 2966, "column": 160 } }, "object": { "type": "Identifier", - "start": 117485, - "end": 117488, + "start": 117791, + "end": 117794, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 144 }, "end": { - "line": 2961, + "line": 2966, "column": 147 }, "identifierName": "cfg" @@ -106978,15 +107492,15 @@ }, "property": { "type": "Identifier", - "start": 117489, - "end": 117501, + "start": 117795, + "end": 117807, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 148 }, "end": { - "line": 2961, + "line": 2966, "column": 160 }, "identifierName": "uvCompressed" @@ -107000,29 +107514,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 117505, - "end": 117530, + "start": 117811, + "end": 117836, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 164 }, "end": { - "line": 2961, + "line": 2966, "column": 189 } }, "object": { "type": "Identifier", - "start": 117505, - "end": 117508, + "start": 117811, + "end": 117814, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 164 }, "end": { - "line": 2961, + "line": 2966, "column": 167 }, "identifierName": "cfg" @@ -107031,15 +107545,15 @@ }, "property": { "type": "Identifier", - "start": 117509, - "end": 117530, + "start": 117815, + "end": 117836, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 168 }, "end": { - "line": 2961, + "line": 2966, "column": 189 }, "identifierName": "positionsDecodeMatrix" @@ -107052,87 +107566,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 117532, - "end": 117811, + "start": 117838, + "end": 118117, "loc": { "start": { - "line": 2961, + "line": 2966, "column": 191 }, "end": { - "line": 2964, + "line": 2969, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 117550, - "end": 117767, + "start": 117856, + "end": 118073, "loc": { "start": { - "line": 2962, + "line": 2967, "column": 16 }, "end": { - "line": 2962, + "line": 2967, "column": 233 } }, "expression": { "type": "CallExpression", - "start": 117550, - "end": 117766, + "start": 117856, + "end": 118072, "loc": { "start": { - "line": 2962, + "line": 2967, "column": 16 }, "end": { - "line": 2962, + "line": 2967, "column": 232 } }, "callee": { "type": "MemberExpression", - "start": 117550, - "end": 117560, + "start": 117856, + "end": 117866, "loc": { "start": { - "line": 2962, + "line": 2967, "column": 16 }, "end": { - "line": 2962, + "line": 2967, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 117550, - "end": 117554, + "start": 117856, + "end": 117860, "loc": { "start": { - "line": 2962, + "line": 2967, "column": 16 }, "end": { - "line": 2962, + "line": 2967, "column": 20 } } }, "property": { "type": "Identifier", - "start": 117555, - "end": 117560, + "start": 117861, + "end": 117866, "loc": { "start": { - "line": 2962, + "line": 2967, "column": 21 }, "end": { - "line": 2962, + "line": 2967, "column": 26 }, "identifierName": "error" @@ -107144,15 +107658,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 117561, - "end": 117765, + "start": 117867, + "end": 118071, "loc": { "start": { - "line": 2962, + "line": 2967, "column": 27 }, "end": { - "line": 2962, + "line": 2967, "column": 231 } }, @@ -107160,15 +107674,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 117562, - "end": 117764, + "start": 117868, + "end": 118070, "loc": { "start": { - "line": 2962, + "line": 2967, "column": 28 }, "end": { - "line": 2962, + "line": 2967, "column": 230 } }, @@ -107185,29 +107699,29 @@ }, { "type": "ReturnStatement", - "start": 117784, - "end": 117797, + "start": 118090, + "end": 118103, "loc": { "start": { - "line": 2963, + "line": 2968, "column": 16 }, "end": { - "line": 2963, + "line": 2968, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 117791, - "end": 117796, + "start": 118097, + "end": 118102, "loc": { "start": { - "line": 2963, + "line": 2968, "column": 23 }, "end": { - "line": 2963, + "line": 2968, "column": 28 } }, @@ -107222,15 +107736,15 @@ { "type": "CommentLine", "value": " INSTANCING", - "start": 117326, - "end": 117339, + "start": 117632, + "end": 117645, "loc": { "start": { - "line": 2959, + "line": 2964, "column": 12 }, "end": { - "line": 2959, + "line": 2964, "column": 25 } } @@ -107239,58 +107753,58 @@ }, { "type": "ExpressionStatement", - "start": 117825, - "end": 117873, + "start": 118131, + "end": 118179, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 12 }, "end": { - "line": 2966, + "line": 2971, "column": 60 } }, "expression": { "type": "AssignmentExpression", - "start": 117825, - "end": 117872, + "start": 118131, + "end": 118178, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 12 }, "end": { - "line": 2966, + "line": 2971, "column": 59 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 117825, - "end": 117837, + "start": 118131, + "end": 118143, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 12 }, "end": { - "line": 2966, + "line": 2971, "column": 24 } }, "object": { "type": "Identifier", - "start": 117825, - "end": 117828, + "start": 118131, + "end": 118134, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 12 }, "end": { - "line": 2966, + "line": 2971, "column": 15 }, "identifierName": "cfg" @@ -107299,15 +107813,15 @@ }, "property": { "type": "Identifier", - "start": 117829, - "end": 117837, + "start": 118135, + "end": 118143, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 16 }, "end": { - "line": 2966, + "line": 2971, "column": 24 }, "identifierName": "geometry" @@ -107318,58 +107832,58 @@ }, "right": { "type": "MemberExpression", - "start": 117840, - "end": 117872, + "start": 118146, + "end": 118178, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 27 }, "end": { - "line": 2966, + "line": 2971, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 117840, - "end": 117856, + "start": 118146, + "end": 118162, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 27 }, "end": { - "line": 2966, + "line": 2971, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 117840, - "end": 117844, + "start": 118146, + "end": 118150, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 27 }, "end": { - "line": 2966, + "line": 2971, "column": 31 } } }, "property": { "type": "Identifier", - "start": 117845, - "end": 117856, + "start": 118151, + "end": 118162, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 32 }, "end": { - "line": 2966, + "line": 2971, "column": 43 }, "identifierName": "_geometries" @@ -107380,29 +107894,29 @@ }, "property": { "type": "MemberExpression", - "start": 117857, - "end": 117871, + "start": 118163, + "end": 118177, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 44 }, "end": { - "line": 2966, + "line": 2971, "column": 58 } }, "object": { "type": "Identifier", - "start": 117857, - "end": 117860, + "start": 118163, + "end": 118166, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 44 }, "end": { - "line": 2966, + "line": 2971, "column": 47 }, "identifierName": "cfg" @@ -107411,15 +107925,15 @@ }, "property": { "type": "Identifier", - "start": 117861, - "end": 117871, + "start": 118167, + "end": 118177, "loc": { "start": { - "line": 2966, + "line": 2971, "column": 48 }, "end": { - "line": 2966, + "line": 2971, "column": 58 }, "identifierName": "geometryId" @@ -107434,29 +107948,29 @@ }, { "type": "IfStatement", - "start": 117886, - "end": 118088, + "start": 118192, + "end": 118394, "loc": { "start": { - "line": 2967, + "line": 2972, "column": 12 }, "end": { - "line": 2970, + "line": 2975, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 117890, - "end": 117903, + "start": 118196, + "end": 118209, "loc": { "start": { - "line": 2967, + "line": 2972, "column": 16 }, "end": { - "line": 2967, + "line": 2972, "column": 29 } }, @@ -107464,29 +107978,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 117891, - "end": 117903, + "start": 118197, + "end": 118209, "loc": { "start": { - "line": 2967, + "line": 2972, "column": 17 }, "end": { - "line": 2967, + "line": 2972, "column": 29 } }, "object": { "type": "Identifier", - "start": 117891, - "end": 117894, + "start": 118197, + "end": 118200, "loc": { "start": { - "line": 2967, + "line": 2972, "column": 17 }, "end": { - "line": 2967, + "line": 2972, "column": 20 }, "identifierName": "cfg" @@ -107495,15 +108009,15 @@ }, "property": { "type": "Identifier", - "start": 117895, - "end": 117903, + "start": 118201, + "end": 118209, "loc": { "start": { - "line": 2967, + "line": 2972, "column": 21 }, "end": { - "line": 2967, + "line": 2972, "column": 29 }, "identifierName": "geometry" @@ -107518,87 +108032,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 117905, - "end": 118088, + "start": 118211, + "end": 118394, "loc": { "start": { - "line": 2967, + "line": 2972, "column": 31 }, "end": { - "line": 2970, + "line": 2975, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 117923, - "end": 118044, + "start": 118229, + "end": 118350, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 16 }, "end": { - "line": 2968, + "line": 2973, "column": 137 } }, "expression": { "type": "CallExpression", - "start": 117923, - "end": 118043, + "start": 118229, + "end": 118349, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 16 }, "end": { - "line": 2968, + "line": 2973, "column": 136 } }, "callee": { "type": "MemberExpression", - "start": 117923, - "end": 117933, + "start": 118229, + "end": 118239, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 16 }, "end": { - "line": 2968, + "line": 2973, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 117923, - "end": 117927, + "start": 118229, + "end": 118233, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 16 }, "end": { - "line": 2968, + "line": 2973, "column": 20 } } }, "property": { "type": "Identifier", - "start": 117928, - "end": 117933, + "start": 118234, + "end": 118239, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 21 }, "end": { - "line": 2968, + "line": 2973, "column": 26 }, "identifierName": "error" @@ -107610,44 +108124,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 117934, - "end": 118042, + "start": 118240, + "end": 118348, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 27 }, "end": { - "line": 2968, + "line": 2973, "column": 135 } }, "expressions": [ { "type": "MemberExpression", - "start": 117970, - "end": 117984, + "start": 118276, + "end": 118290, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 63 }, "end": { - "line": 2968, + "line": 2973, "column": 77 } }, "object": { "type": "Identifier", - "start": 117970, - "end": 117973, + "start": 118276, + "end": 118279, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 63 }, "end": { - "line": 2968, + "line": 2973, "column": 66 }, "identifierName": "cfg" @@ -107656,15 +108170,15 @@ }, "property": { "type": "Identifier", - "start": 117974, - "end": 117984, + "start": 118280, + "end": 118290, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 67 }, "end": { - "line": 2968, + "line": 2973, "column": 77 }, "identifierName": "geometryId" @@ -107677,15 +108191,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 117935, - "end": 117968, + "start": 118241, + "end": 118274, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 28 }, "end": { - "line": 2968, + "line": 2973, "column": 61 } }, @@ -107697,15 +108211,15 @@ }, { "type": "TemplateElement", - "start": 117985, - "end": 118041, + "start": 118291, + "end": 118347, "loc": { "start": { - "line": 2968, + "line": 2973, "column": 78 }, "end": { - "line": 2968, + "line": 2973, "column": 134 } }, @@ -107722,29 +108236,29 @@ }, { "type": "ReturnStatement", - "start": 118061, - "end": 118074, + "start": 118367, + "end": 118380, "loc": { "start": { - "line": 2969, + "line": 2974, "column": 16 }, "end": { - "line": 2969, + "line": 2974, "column": 29 } }, "argument": { "type": "BooleanLiteral", - "start": 118068, - "end": 118073, + "start": 118374, + "end": 118379, "loc": { "start": { - "line": 2969, + "line": 2974, "column": 23 }, "end": { - "line": 2969, + "line": 2974, "column": 28 } }, @@ -107758,58 +108272,58 @@ }, { "type": "ExpressionStatement", - "start": 118102, - "end": 118195, + "start": 118408, + "end": 118501, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 12 }, "end": { - "line": 2972, + "line": 2977, "column": 105 } }, "expression": { "type": "AssignmentExpression", - "start": 118102, - "end": 118194, + "start": 118408, + "end": 118500, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 12 }, "end": { - "line": 2972, + "line": 2977, "column": 104 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 118102, - "end": 118112, + "start": 118408, + "end": 118418, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 12 }, "end": { - "line": 2972, + "line": 2977, "column": 22 } }, "object": { "type": "Identifier", - "start": 118102, - "end": 118105, + "start": 118408, + "end": 118411, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 12 }, "end": { - "line": 2972, + "line": 2977, "column": 15 }, "identifierName": "cfg" @@ -107818,15 +108332,15 @@ }, "property": { "type": "Identifier", - "start": 118106, - "end": 118112, + "start": 118412, + "end": 118418, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 16 }, "end": { - "line": 2972, + "line": 2977, "column": 22 }, "identifierName": "origin" @@ -107837,43 +108351,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 118115, - "end": 118194, + "start": 118421, + "end": 118500, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 25 }, "end": { - "line": 2972, + "line": 2977, "column": 104 } }, "test": { "type": "MemberExpression", - "start": 118115, - "end": 118125, + "start": 118421, + "end": 118431, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 25 }, "end": { - "line": 2972, + "line": 2977, "column": 35 } }, "object": { "type": "Identifier", - "start": 118115, - "end": 118118, + "start": 118421, + "end": 118424, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 25 }, "end": { - "line": 2972, + "line": 2977, "column": 28 }, "identifierName": "cfg" @@ -107882,15 +108396,15 @@ }, "property": { "type": "Identifier", - "start": 118119, - "end": 118125, + "start": 118425, + "end": 118431, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 29 }, "end": { - "line": 2972, + "line": 2977, "column": 35 }, "identifierName": "origin" @@ -107901,43 +108415,43 @@ }, "consequent": { "type": "CallExpression", - "start": 118128, - "end": 118179, + "start": 118434, + "end": 118485, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 38 }, "end": { - "line": 2972, + "line": 2977, "column": 89 } }, "callee": { "type": "MemberExpression", - "start": 118128, - "end": 118140, + "start": 118434, + "end": 118446, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 38 }, "end": { - "line": 2972, + "line": 2977, "column": 50 } }, "object": { "type": "Identifier", - "start": 118128, - "end": 118132, + "start": 118434, + "end": 118438, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 38 }, "end": { - "line": 2972, + "line": 2977, "column": 42 }, "identifierName": "math" @@ -107946,15 +108460,15 @@ }, "property": { "type": "Identifier", - "start": 118133, - "end": 118140, + "start": 118439, + "end": 118446, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 43 }, "end": { - "line": 2972, + "line": 2977, "column": 50 }, "identifierName": "addVec3" @@ -107966,44 +108480,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 118141, - "end": 118153, + "start": 118447, + "end": 118459, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 51 }, "end": { - "line": 2972, + "line": 2977, "column": 63 } }, "object": { "type": "ThisExpression", - "start": 118141, - "end": 118145, + "start": 118447, + "end": 118451, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 51 }, "end": { - "line": 2972, + "line": 2977, "column": 55 } } }, "property": { "type": "Identifier", - "start": 118146, - "end": 118153, + "start": 118452, + "end": 118459, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 56 }, "end": { - "line": 2972, + "line": 2977, "column": 63 }, "identifierName": "_origin" @@ -108014,29 +108528,29 @@ }, { "type": "MemberExpression", - "start": 118155, - "end": 118165, + "start": 118461, + "end": 118471, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 65 }, "end": { - "line": 2972, + "line": 2977, "column": 75 } }, "object": { "type": "Identifier", - "start": 118155, - "end": 118158, + "start": 118461, + "end": 118464, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 65 }, "end": { - "line": 2972, + "line": 2977, "column": 68 }, "identifierName": "cfg" @@ -108045,15 +108559,15 @@ }, "property": { "type": "Identifier", - "start": 118159, - "end": 118165, + "start": 118465, + "end": 118471, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 69 }, "end": { - "line": 2972, + "line": 2977, "column": 75 }, "identifierName": "origin" @@ -108064,43 +108578,43 @@ }, { "type": "CallExpression", - "start": 118167, - "end": 118178, + "start": 118473, + "end": 118484, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 77 }, "end": { - "line": 2972, + "line": 2977, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 118167, - "end": 118176, + "start": 118473, + "end": 118482, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 77 }, "end": { - "line": 2972, + "line": 2977, "column": 86 } }, "object": { "type": "Identifier", - "start": 118167, - "end": 118171, + "start": 118473, + "end": 118477, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 77 }, "end": { - "line": 2972, + "line": 2977, "column": 81 }, "identifierName": "math" @@ -108109,15 +108623,15 @@ }, "property": { "type": "Identifier", - "start": 118172, - "end": 118176, + "start": 118478, + "end": 118482, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 82 }, "end": { - "line": 2972, + "line": 2977, "column": 86 }, "identifierName": "vec3" @@ -108132,44 +108646,44 @@ }, "alternate": { "type": "MemberExpression", - "start": 118182, - "end": 118194, + "start": 118488, + "end": 118500, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 92 }, "end": { - "line": 2972, + "line": 2977, "column": 104 } }, "object": { "type": "ThisExpression", - "start": 118182, - "end": 118186, + "start": 118488, + "end": 118492, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 92 }, "end": { - "line": 2972, + "line": 2977, "column": 96 } } }, "property": { "type": "Identifier", - "start": 118187, - "end": 118194, + "start": 118493, + "end": 118500, "loc": { "start": { - "line": 2972, + "line": 2977, "column": 97 }, "end": { - "line": 2972, + "line": 2977, "column": 104 }, "identifierName": "_origin" @@ -108183,58 +108697,58 @@ }, { "type": "ExpressionStatement", - "start": 118208, - "end": 118271, + "start": 118514, + "end": 118577, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 12 }, "end": { - "line": 2973, + "line": 2978, "column": 75 } }, "expression": { "type": "AssignmentExpression", - "start": 118208, - "end": 118270, + "start": 118514, + "end": 118576, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 12 }, "end": { - "line": 2973, + "line": 2978, "column": 74 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 118208, - "end": 118233, + "start": 118514, + "end": 118539, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 12 }, "end": { - "line": 2973, + "line": 2978, "column": 37 } }, "object": { "type": "Identifier", - "start": 118208, - "end": 118211, + "start": 118514, + "end": 118517, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 12 }, "end": { - "line": 2973, + "line": 2978, "column": 15 }, "identifierName": "cfg" @@ -108243,15 +108757,15 @@ }, "property": { "type": "Identifier", - "start": 118212, - "end": 118233, + "start": 118518, + "end": 118539, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 16 }, "end": { - "line": 2973, + "line": 2978, "column": 37 }, "identifierName": "positionsDecodeMatrix" @@ -108262,43 +108776,43 @@ }, "right": { "type": "MemberExpression", - "start": 118236, - "end": 118270, + "start": 118542, + "end": 118576, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 40 }, "end": { - "line": 2973, + "line": 2978, "column": 74 } }, "object": { "type": "MemberExpression", - "start": 118236, - "end": 118248, + "start": 118542, + "end": 118554, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 40 }, "end": { - "line": 2973, + "line": 2978, "column": 52 } }, "object": { "type": "Identifier", - "start": 118236, - "end": 118239, + "start": 118542, + "end": 118545, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 40 }, "end": { - "line": 2973, + "line": 2978, "column": 43 }, "identifierName": "cfg" @@ -108307,15 +108821,15 @@ }, "property": { "type": "Identifier", - "start": 118240, - "end": 118248, + "start": 118546, + "end": 118554, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 44 }, "end": { - "line": 2973, + "line": 2978, "column": 52 }, "identifierName": "geometry" @@ -108326,15 +108840,15 @@ }, "property": { "type": "Identifier", - "start": 118249, - "end": 118270, + "start": 118555, + "end": 118576, "loc": { "start": { - "line": 2973, + "line": 2978, "column": 53 }, "end": { - "line": 2973, + "line": 2978, "column": 74 }, "identifierName": "positionsDecodeMatrix" @@ -108347,43 +108861,43 @@ }, { "type": "IfStatement", - "start": 118285, - "end": 119471, + "start": 118591, + "end": 119985, "loc": { "start": { - "line": 2975, + "line": 2980, "column": 12 }, "end": { - "line": 3005, + "line": 3013, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 118289, - "end": 118304, + "start": 118595, + "end": 118610, "loc": { "start": { - "line": 2975, + "line": 2980, "column": 16 }, "end": { - "line": 2975, + "line": 2980, "column": 31 } }, "object": { "type": "Identifier", - "start": 118289, - "end": 118292, + "start": 118595, + "end": 118598, "loc": { "start": { - "line": 2975, + "line": 2980, "column": 16 }, "end": { - "line": 2975, + "line": 2980, "column": 19 }, "identifierName": "cfg" @@ -108392,15 +108906,15 @@ }, "property": { "type": "Identifier", - "start": 118293, - "end": 118304, + "start": 118599, + "end": 118610, "loc": { "start": { - "line": 2975, + "line": 2980, "column": 20 }, "end": { - "line": 2975, + "line": 2980, "column": 31 }, "identifierName": "transformId" @@ -108411,73 +108925,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 118306, - "end": 118703, + "start": 118612, + "end": 119009, "loc": { "start": { - "line": 2975, + "line": 2980, "column": 33 }, "end": { - "line": 2988, + "line": 2993, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 118355, - "end": 118405, + "start": 118661, + "end": 118711, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 16 }, "end": { - "line": 2979, + "line": 2984, "column": 66 } }, "expression": { "type": "AssignmentExpression", - "start": 118355, - "end": 118404, + "start": 118661, + "end": 118710, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 16 }, "end": { - "line": 2979, + "line": 2984, "column": 65 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 118355, - "end": 118368, + "start": 118661, + "end": 118674, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 16 }, "end": { - "line": 2979, + "line": 2984, "column": 29 } }, "object": { "type": "Identifier", - "start": 118355, - "end": 118358, + "start": 118661, + "end": 118664, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 16 }, "end": { - "line": 2979, + "line": 2984, "column": 19 }, "identifierName": "cfg" @@ -108487,15 +109001,15 @@ }, "property": { "type": "Identifier", - "start": 118359, - "end": 118368, + "start": 118665, + "end": 118674, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 20 }, "end": { - "line": 2979, + "line": 2984, "column": 29 }, "identifierName": "transform" @@ -108507,58 +109021,58 @@ }, "right": { "type": "MemberExpression", - "start": 118371, - "end": 118404, + "start": 118677, + "end": 118710, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 32 }, "end": { - "line": 2979, + "line": 2984, "column": 65 } }, "object": { "type": "MemberExpression", - "start": 118371, - "end": 118387, + "start": 118677, + "end": 118693, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 32 }, "end": { - "line": 2979, + "line": 2984, "column": 48 } }, "object": { "type": "ThisExpression", - "start": 118371, - "end": 118375, + "start": 118677, + "end": 118681, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 32 }, "end": { - "line": 2979, + "line": 2984, "column": 36 } } }, "property": { "type": "Identifier", - "start": 118376, - "end": 118387, + "start": 118682, + "end": 118693, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 37 }, "end": { - "line": 2979, + "line": 2984, "column": 48 }, "identifierName": "_transforms" @@ -108569,29 +109083,29 @@ }, "property": { "type": "MemberExpression", - "start": 118388, - "end": 118403, + "start": 118694, + "end": 118709, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 49 }, "end": { - "line": 2979, + "line": 2984, "column": 64 } }, "object": { "type": "Identifier", - "start": 118388, - "end": 118391, + "start": 118694, + "end": 118697, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 49 }, "end": { - "line": 2979, + "line": 2984, "column": 52 }, "identifierName": "cfg" @@ -108600,15 +109114,15 @@ }, "property": { "type": "Identifier", - "start": 118392, - "end": 118403, + "start": 118698, + "end": 118709, "loc": { "start": { - "line": 2979, + "line": 2984, "column": 53 }, "end": { - "line": 2979, + "line": 2984, "column": 64 }, "identifierName": "transformId" @@ -108625,15 +109139,15 @@ { "type": "CommentLine", "value": " TRANSFORM", - "start": 118325, - "end": 118337, + "start": 118631, + "end": 118643, "loc": { "start": { - "line": 2977, + "line": 2982, "column": 16 }, "end": { - "line": 2977, + "line": 2982, "column": 28 } } @@ -108642,29 +109156,29 @@ }, { "type": "IfStatement", - "start": 118423, - "end": 118641, + "start": 118729, + "end": 118947, "loc": { "start": { - "line": 2981, + "line": 2986, "column": 16 }, "end": { - "line": 2984, + "line": 2989, "column": 17 } }, "test": { "type": "UnaryExpression", - "start": 118427, - "end": 118441, + "start": 118733, + "end": 118747, "loc": { "start": { - "line": 2981, + "line": 2986, "column": 20 }, "end": { - "line": 2981, + "line": 2986, "column": 34 } }, @@ -108672,29 +109186,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 118428, - "end": 118441, + "start": 118734, + "end": 118747, "loc": { "start": { - "line": 2981, + "line": 2986, "column": 21 }, "end": { - "line": 2981, + "line": 2986, "column": 34 } }, "object": { "type": "Identifier", - "start": 118428, - "end": 118431, + "start": 118734, + "end": 118737, "loc": { "start": { - "line": 2981, + "line": 2986, "column": 21 }, "end": { - "line": 2981, + "line": 2986, "column": 24 }, "identifierName": "cfg" @@ -108703,15 +109217,15 @@ }, "property": { "type": "Identifier", - "start": 118432, - "end": 118441, + "start": 118738, + "end": 118747, "loc": { "start": { - "line": 2981, + "line": 2986, "column": 25 }, "end": { - "line": 2981, + "line": 2986, "column": 34 }, "identifierName": "transform" @@ -108726,87 +109240,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 118443, - "end": 118641, + "start": 118749, + "end": 118947, "loc": { "start": { - "line": 2981, + "line": 2986, "column": 36 }, "end": { - "line": 2984, + "line": 2989, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 118465, - "end": 118589, + "start": 118771, + "end": 118895, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 20 }, "end": { - "line": 2982, + "line": 2987, "column": 144 } }, "expression": { "type": "CallExpression", - "start": 118465, - "end": 118588, + "start": 118771, + "end": 118894, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 20 }, "end": { - "line": 2982, + "line": 2987, "column": 143 } }, "callee": { "type": "MemberExpression", - "start": 118465, - "end": 118475, + "start": 118771, + "end": 118781, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 20 }, "end": { - "line": 2982, + "line": 2987, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 118465, - "end": 118469, + "start": 118771, + "end": 118775, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 20 }, "end": { - "line": 2982, + "line": 2987, "column": 24 } } }, "property": { "type": "Identifier", - "start": 118470, - "end": 118475, + "start": 118776, + "end": 118781, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 25 }, "end": { - "line": 2982, + "line": 2987, "column": 30 }, "identifierName": "error" @@ -108818,44 +109332,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 118476, - "end": 118587, + "start": 118782, + "end": 118893, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 31 }, "end": { - "line": 2982, + "line": 2987, "column": 142 } }, "expressions": [ { "type": "MemberExpression", - "start": 118513, - "end": 118528, + "start": 118819, + "end": 118834, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 68 }, "end": { - "line": 2982, + "line": 2987, "column": 83 } }, "object": { "type": "Identifier", - "start": 118513, - "end": 118516, + "start": 118819, + "end": 118822, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 68 }, "end": { - "line": 2982, + "line": 2987, "column": 71 }, "identifierName": "cfg" @@ -108864,15 +109378,15 @@ }, "property": { "type": "Identifier", - "start": 118517, - "end": 118528, + "start": 118823, + "end": 118834, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 72 }, "end": { - "line": 2982, + "line": 2987, "column": 83 }, "identifierName": "transformId" @@ -108885,15 +109399,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 118477, - "end": 118511, + "start": 118783, + "end": 118817, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 32 }, "end": { - "line": 2982, + "line": 2987, "column": 66 } }, @@ -108905,15 +109419,15 @@ }, { "type": "TemplateElement", - "start": 118529, - "end": 118586, + "start": 118835, + "end": 118892, "loc": { "start": { - "line": 2982, + "line": 2987, "column": 84 }, "end": { - "line": 2982, + "line": 2987, "column": 141 } }, @@ -108930,29 +109444,29 @@ }, { "type": "ReturnStatement", - "start": 118610, - "end": 118623, + "start": 118916, + "end": 118929, "loc": { "start": { - "line": 2983, + "line": 2988, "column": 20 }, "end": { - "line": 2983, + "line": 2988, "column": 33 } }, "argument": { "type": "BooleanLiteral", - "start": 118617, - "end": 118622, + "start": 118923, + "end": 118928, "loc": { "start": { - "line": 2983, + "line": 2988, "column": 27 }, "end": { - "line": 2983, + "line": 2988, "column": 32 } }, @@ -108966,58 +109480,58 @@ }, { "type": "ExpressionStatement", - "start": 118659, - "end": 118688, + "start": 118965, + "end": 118994, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 16 }, "end": { - "line": 2986, + "line": 2991, "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 118659, - "end": 118687, + "start": 118965, + "end": 118993, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 16 }, "end": { - "line": 2986, + "line": 2991, "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 118659, - "end": 118667, + "start": 118965, + "end": 118973, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 16 }, "end": { - "line": 2986, + "line": 2991, "column": 24 } }, "object": { "type": "Identifier", - "start": 118659, - "end": 118662, + "start": 118965, + "end": 118968, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 16 }, "end": { - "line": 2986, + "line": 2991, "column": 19 }, "identifierName": "cfg" @@ -109026,15 +109540,15 @@ }, "property": { "type": "Identifier", - "start": 118663, - "end": 118667, + "start": 118969, + "end": 118973, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 20 }, "end": { - "line": 2986, + "line": 2991, "column": 24 }, "identifierName": "aabb" @@ -109045,43 +109559,43 @@ }, "right": { "type": "MemberExpression", - "start": 118670, - "end": 118687, + "start": 118976, + "end": 118993, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 27 }, "end": { - "line": 2986, + "line": 2991, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 118670, - "end": 118682, + "start": 118976, + "end": 118988, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 27 }, "end": { - "line": 2986, + "line": 2991, "column": 39 } }, "object": { "type": "Identifier", - "start": 118670, - "end": 118673, + "start": 118976, + "end": 118979, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 27 }, "end": { - "line": 2986, + "line": 2991, "column": 30 }, "identifierName": "cfg" @@ -109090,15 +109604,15 @@ }, "property": { "type": "Identifier", - "start": 118674, - "end": 118682, + "start": 118980, + "end": 118988, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 31 }, "end": { - "line": 2986, + "line": 2991, "column": 39 }, "identifierName": "geometry" @@ -109109,15 +109623,15 @@ }, "property": { "type": "Identifier", - "start": 118683, - "end": 118687, + "start": 118989, + "end": 118993, "loc": { "start": { - "line": 2986, + "line": 2991, "column": 40 }, "end": { - "line": 2986, + "line": 2991, "column": 44 }, "identifierName": "aabb" @@ -109133,58 +109647,58 @@ }, "alternate": { "type": "BlockStatement", - "start": 118709, - "end": 119471, + "start": 119015, + "end": 119985, "loc": { "start": { - "line": 2988, + "line": 2993, "column": 19 }, "end": { - "line": 3005, + "line": 3013, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 118755, - "end": 119262, + "start": 119061, + "end": 119776, "loc": { "start": { - "line": 2992, + "line": 2997, "column": 16 }, "end": { - "line": 3000, + "line": 3008, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 118759, - "end": 118769, + "start": 119065, + "end": 119075, "loc": { "start": { - "line": 2992, + "line": 2997, "column": 20 }, "end": { - "line": 2992, + "line": 2997, "column": 30 } }, "object": { "type": "Identifier", - "start": 118759, - "end": 118762, + "start": 119065, + "end": 119068, "loc": { "start": { - "line": 2992, + "line": 2997, "column": 20 }, "end": { - "line": 2992, + "line": 2997, "column": 23 }, "identifierName": "cfg" @@ -109194,15 +109708,15 @@ }, "property": { "type": "Identifier", - "start": 118763, - "end": 118769, + "start": 119069, + "end": 119075, "loc": { "start": { - "line": 2992, + "line": 2997, "column": 24 }, "end": { - "line": 2992, + "line": 2997, "column": 30 }, "identifierName": "matrix" @@ -109214,73 +109728,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 118771, - "end": 118847, + "start": 119077, + "end": 119145, "loc": { "start": { - "line": 2992, + "line": 2997, "column": 32 }, "end": { - "line": 2994, + "line": 2999, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 118793, - "end": 118829, + "start": 119099, + "end": 119127, "loc": { "start": { - "line": 2993, + "line": 2998, "column": 20 }, "end": { - "line": 2993, - "column": 56 + "line": 2998, + "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 118793, - "end": 118828, + "start": 119099, + "end": 119126, "loc": { "start": { - "line": 2993, + "line": 2998, "column": 20 }, "end": { - "line": 2993, - "column": 55 + "line": 2998, + "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 118793, - "end": 118807, + "start": 119099, + "end": 119113, "loc": { "start": { - "line": 2993, + "line": 2998, "column": 20 }, "end": { - "line": 2993, + "line": 2998, "column": 34 } }, "object": { "type": "Identifier", - "start": 118793, - "end": 118796, + "start": 119099, + "end": 119102, "loc": { "start": { - "line": 2993, + "line": 2998, "column": 20 }, "end": { - "line": 2993, + "line": 2998, "column": 23 }, "identifierName": "cfg" @@ -109289,15 +109803,15 @@ }, "property": { "type": "Identifier", - "start": 118797, - "end": 118807, + "start": 119103, + "end": 119113, "loc": { "start": { - "line": 2993, + "line": 2998, "column": 24 }, "end": { - "line": 2993, + "line": 2998, "column": 34 }, "identifierName": "meshMatrix" @@ -109307,103 +109821,54 @@ "computed": false }, "right": { - "type": "CallExpression", - "start": 118810, - "end": 118828, + "type": "MemberExpression", + "start": 119116, + "end": 119126, "loc": { "start": { - "line": 2993, + "line": 2998, "column": 37 }, "end": { - "line": 2993, - "column": 55 + "line": 2998, + "column": 47 } }, - "callee": { - "type": "MemberExpression", - "start": 118810, - "end": 118826, + "object": { + "type": "Identifier", + "start": 119116, + "end": 119119, "loc": { "start": { - "line": 2993, + "line": 2998, "column": 37 }, "end": { - "line": 2993, - "column": 53 - } - }, - "object": { - "type": "MemberExpression", - "start": 118810, - "end": 118820, - "loc": { - "start": { - "line": 2993, - "column": 37 - }, - "end": { - "line": 2993, - "column": 47 - } - }, - "object": { - "type": "Identifier", - "start": 118810, - "end": 118813, - "loc": { - "start": { - "line": 2993, - "column": 37 - }, - "end": { - "line": 2993, - "column": 40 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 118814, - "end": 118820, - "loc": { - "start": { - "line": 2993, - "column": 41 - }, - "end": { - "line": 2993, - "column": 47 - }, - "identifierName": "matrix" - }, - "name": "matrix" + "line": 2998, + "column": 40 }, - "computed": false + "identifierName": "cfg" }, - "property": { - "type": "Identifier", - "start": 118821, - "end": 118826, - "loc": { - "start": { - "line": 2993, - "column": 48 - }, - "end": { - "line": 2993, - "column": 53 - }, - "identifierName": "slice" + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 119120, + "end": 119126, + "loc": { + "start": { + "line": 2998, + "column": 41 }, - "name": "slice" + "end": { + "line": 2998, + "column": 47 + }, + "identifierName": "matrix" }, - "computed": false + "name": "matrix" }, - "arguments": [] + "computed": false } } } @@ -109411,610 +109876,588 @@ "directives": [] }, "alternate": { - "type": "BlockStatement", - "start": 118853, - "end": 119262, + "type": "IfStatement", + "start": 119151, + "end": 119776, "loc": { "start": { - "line": 2994, + "line": 2999, "column": 23 }, "end": { - "line": 3000, + "line": 3008, "column": 17 } }, - "body": [ - { - "type": "VariableDeclaration", - "start": 118875, - "end": 118916, + "test": { + "type": "LogicalExpression", + "start": 119155, + "end": 119214, + "loc": { + "start": { + "line": 2999, + "column": 27 + }, + "end": { + "line": 2999, + "column": 86 + } + }, + "left": { + "type": "LogicalExpression", + "start": 119155, + "end": 119196, "loc": { "start": { - "line": 2995, - "column": 20 + "line": 2999, + "column": 27 }, "end": { - "line": 2995, - "column": 61 + "line": 2999, + "column": 68 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 118881, - "end": 118915, + "left": { + "type": "LogicalExpression", + "start": 119155, + "end": 119180, + "loc": { + "start": { + "line": 2999, + "column": 27 + }, + "end": { + "line": 2999, + "column": 52 + } + }, + "left": { + "type": "MemberExpression", + "start": 119155, + "end": 119164, "loc": { "start": { - "line": 2995, - "column": 26 + "line": 2999, + "column": 27 }, "end": { - "line": 2995, - "column": 60 + "line": 2999, + "column": 36 } }, - "id": { + "object": { "type": "Identifier", - "start": 118881, - "end": 118886, + "start": 119155, + "end": 119158, "loc": { "start": { - "line": 2995, - "column": 26 + "line": 2999, + "column": 27 }, "end": { - "line": 2995, - "column": 31 + "line": 2999, + "column": 30 }, - "identifierName": "scale" + "identifierName": "cfg" }, - "name": "scale" + "name": "cfg" }, - "init": { - "type": "LogicalExpression", - "start": 118889, - "end": 118915, + "property": { + "type": "Identifier", + "start": 119159, + "end": 119164, "loc": { "start": { - "line": 2995, - "column": 34 + "line": 2999, + "column": 31 }, "end": { - "line": 2995, - "column": 60 - } - }, - "left": { - "type": "MemberExpression", - "start": 118889, - "end": 118898, - "loc": { - "start": { - "line": 2995, - "column": 34 - }, - "end": { - "line": 2995, - "column": 43 - } - }, - "object": { - "type": "Identifier", - "start": 118889, - "end": 118892, - "loc": { - "start": { - "line": 2995, - "column": 34 - }, - "end": { - "line": 2995, - "column": 37 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 118893, - "end": 118898, - "loc": { - "start": { - "line": 2995, - "column": 38 - }, - "end": { - "line": 2995, - "column": 43 - }, - "identifierName": "scale" - }, - "name": "scale" + "line": 2999, + "column": 36 }, - "computed": false + "identifierName": "scale" }, - "operator": "||", - "right": { - "type": "Identifier", - "start": 118902, - "end": 118915, - "loc": { - "start": { - "line": 2995, - "column": 47 - }, - "end": { - "line": 2995, - "column": 60 - }, - "identifierName": "DEFAULT_SCALE" - }, - "name": "DEFAULT_SCALE" - } - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 118937, - "end": 118987, - "loc": { - "start": { - "line": 2996, - "column": 20 + "name": "scale" + }, + "computed": false }, - "end": { - "line": 2996, - "column": 70 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 118943, - "end": 118986, + "operator": "||", + "right": { + "type": "MemberExpression", + "start": 119168, + "end": 119180, "loc": { "start": { - "line": 2996, - "column": 26 + "line": 2999, + "column": 40 }, "end": { - "line": 2996, - "column": 69 + "line": 2999, + "column": 52 } }, - "id": { + "object": { "type": "Identifier", - "start": 118943, - "end": 118951, + "start": 119168, + "end": 119171, "loc": { "start": { - "line": 2996, - "column": 26 + "line": 2999, + "column": 40 }, "end": { - "line": 2996, - "column": 34 + "line": 2999, + "column": 43 }, - "identifierName": "position" + "identifierName": "cfg" }, - "name": "position" + "name": "cfg" }, - "init": { - "type": "LogicalExpression", - "start": 118954, - "end": 118986, + "property": { + "type": "Identifier", + "start": 119172, + "end": 119180, "loc": { "start": { - "line": 2996, - "column": 37 + "line": 2999, + "column": 44 }, "end": { - "line": 2996, - "column": 69 - } - }, - "left": { - "type": "MemberExpression", - "start": 118954, - "end": 118966, - "loc": { - "start": { - "line": 2996, - "column": 37 - }, - "end": { - "line": 2996, - "column": 49 - } - }, - "object": { - "type": "Identifier", - "start": 118954, - "end": 118957, - "loc": { - "start": { - "line": 2996, - "column": 37 - }, - "end": { - "line": 2996, - "column": 40 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 118958, - "end": 118966, - "loc": { - "start": { - "line": 2996, - "column": 41 - }, - "end": { - "line": 2996, - "column": 49 - }, - "identifierName": "position" - }, - "name": "position" + "line": 2999, + "column": 52 }, - "computed": false + "identifierName": "rotation" }, - "operator": "||", - "right": { - "type": "Identifier", - "start": 118970, - "end": 118986, - "loc": { - "start": { - "line": 2996, - "column": 53 - }, - "end": { - "line": 2996, - "column": 69 - }, - "identifierName": "DEFAULT_POSITION" - }, - "name": "DEFAULT_POSITION" - } - } + "name": "rotation" + }, + "computed": false } - ], - "kind": "const" + }, + "operator": "||", + "right": { + "type": "MemberExpression", + "start": 119184, + "end": 119196, + "loc": { + "start": { + "line": 2999, + "column": 56 + }, + "end": { + "line": 2999, + "column": 68 + } + }, + "object": { + "type": "Identifier", + "start": 119184, + "end": 119187, + "loc": { + "start": { + "line": 2999, + "column": 56 + }, + "end": { + "line": 2999, + "column": 59 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 119188, + "end": 119196, + "loc": { + "start": { + "line": 2999, + "column": 60 + }, + "end": { + "line": 2999, + "column": 68 + }, + "identifierName": "position" + }, + "name": "position" + }, + "computed": false + } }, - { - "type": "VariableDeclaration", - "start": 119008, - "end": 119058, + "operator": "||", + "right": { + "type": "MemberExpression", + "start": 119200, + "end": 119214, "loc": { "start": { - "line": 2997, - "column": 20 + "line": 2999, + "column": 72 }, "end": { - "line": 2997, - "column": 70 + "line": 2999, + "column": 86 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 119014, - "end": 119057, - "loc": { - "start": { - "line": 2997, - "column": 26 - }, - "end": { - "line": 2997, - "column": 69 - } + "object": { + "type": "Identifier", + "start": 119200, + "end": 119203, + "loc": { + "start": { + "line": 2999, + "column": 72 }, - "id": { - "type": "Identifier", - "start": 119014, - "end": 119022, + "end": { + "line": 2999, + "column": 75 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 119204, + "end": 119214, + "loc": { + "start": { + "line": 2999, + "column": 76 + }, + "end": { + "line": 2999, + "column": 86 + }, + "identifierName": "quaternion" + }, + "name": "quaternion" + }, + "computed": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 119216, + "end": 119776, + "loc": { + "start": { + "line": 2999, + "column": 88 + }, + "end": { + "line": 3008, + "column": 17 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 119238, + "end": 119279, + "loc": { + "start": { + "line": 3000, + "column": 20 + }, + "end": { + "line": 3000, + "column": 61 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 119244, + "end": 119278, "loc": { "start": { - "line": 2997, + "line": 3000, "column": 26 }, "end": { - "line": 2997, - "column": 34 - }, - "identifierName": "rotation" + "line": 3000, + "column": 60 + } }, - "name": "rotation" - }, - "init": { - "type": "LogicalExpression", - "start": 119025, - "end": 119057, - "loc": { - "start": { - "line": 2997, - "column": 37 + "id": { + "type": "Identifier", + "start": 119244, + "end": 119249, + "loc": { + "start": { + "line": 3000, + "column": 26 + }, + "end": { + "line": 3000, + "column": 31 + }, + "identifierName": "scale" }, - "end": { - "line": 2997, - "column": 69 - } + "name": "scale" }, - "left": { - "type": "MemberExpression", - "start": 119025, - "end": 119037, + "init": { + "type": "LogicalExpression", + "start": 119252, + "end": 119278, "loc": { "start": { - "line": 2997, - "column": 37 + "line": 3000, + "column": 34 }, "end": { - "line": 2997, - "column": 49 + "line": 3000, + "column": 60 } }, - "object": { - "type": "Identifier", - "start": 119025, - "end": 119028, + "left": { + "type": "MemberExpression", + "start": 119252, + "end": 119261, "loc": { "start": { - "line": 2997, - "column": 37 + "line": 3000, + "column": 34 }, "end": { - "line": 2997, - "column": 40 + "line": 3000, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 119252, + "end": 119255, + "loc": { + "start": { + "line": 3000, + "column": 34 + }, + "end": { + "line": 3000, + "column": 37 + }, + "identifierName": "cfg" }, - "identifierName": "cfg" + "name": "cfg" }, - "name": "cfg" + "property": { + "type": "Identifier", + "start": 119256, + "end": 119261, + "loc": { + "start": { + "line": 3000, + "column": 38 + }, + "end": { + "line": 3000, + "column": 43 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + "computed": false }, - "property": { + "operator": "||", + "right": { "type": "Identifier", - "start": 119029, - "end": 119037, + "start": 119265, + "end": 119278, "loc": { "start": { - "line": 2997, - "column": 41 + "line": 3000, + "column": 47 }, "end": { - "line": 2997, - "column": 49 + "line": 3000, + "column": 60 }, - "identifierName": "rotation" - }, - "name": "rotation" - }, - "computed": false - }, - "operator": "||", - "right": { - "type": "Identifier", - "start": 119041, - "end": 119057, - "loc": { - "start": { - "line": 2997, - "column": 53 - }, - "end": { - "line": 2997, - "column": 69 + "identifierName": "DEFAULT_SCALE" }, - "identifierName": "DEFAULT_ROTATION" - }, - "name": "DEFAULT_ROTATION" + "name": "DEFAULT_SCALE" + } } } - } - ], - "kind": "const" - }, - { - "type": "ExpressionStatement", - "start": 119079, - "end": 119139, - "loc": { - "start": { - "line": 2998, - "column": 20 - }, - "end": { - "line": 2998, - "column": 80 - } + ], + "kind": "const" }, - "expression": { - "type": "CallExpression", - "start": 119079, - "end": 119138, + { + "type": "VariableDeclaration", + "start": 119300, + "end": 119350, "loc": { "start": { - "line": 2998, + "line": 3001, "column": 20 }, "end": { - "line": 2998, - "column": 79 + "line": 3001, + "column": 70 } }, - "callee": { - "type": "MemberExpression", - "start": 119079, - "end": 119101, - "loc": { - "start": { - "line": 2998, - "column": 20 - }, - "end": { - "line": 2998, - "column": 42 - } - }, - "object": { - "type": "Identifier", - "start": 119079, - "end": 119083, - "loc": { - "start": { - "line": 2998, - "column": 20 - }, - "end": { - "line": 2998, - "column": 24 - }, - "identifierName": "math" - }, - "name": "math" - }, - "property": { - "type": "Identifier", - "start": 119084, - "end": 119101, - "loc": { - "start": { - "line": 2998, - "column": 25 - }, - "end": { - "line": 2998, - "column": 42 - }, - "identifierName": "eulerToQuaternion" - }, - "name": "eulerToQuaternion" - }, - "computed": false - }, - "arguments": [ - { - "type": "Identifier", - "start": 119102, - "end": 119110, - "loc": { - "start": { - "line": 2998, - "column": 43 - }, - "end": { - "line": 2998, - "column": 51 - }, - "identifierName": "rotation" - }, - "name": "rotation" - }, + "declarations": [ { - "type": "StringLiteral", - "start": 119112, - "end": 119117, + "type": "VariableDeclarator", + "start": 119306, + "end": 119349, "loc": { "start": { - "line": 2998, - "column": 53 + "line": 3001, + "column": 26 }, "end": { - "line": 2998, - "column": 58 + "line": 3001, + "column": 69 } }, - "extra": { - "rawValue": "XYZ", - "raw": "\"XYZ\"" + "id": { + "type": "Identifier", + "start": 119306, + "end": 119314, + "loc": { + "start": { + "line": 3001, + "column": 26 + }, + "end": { + "line": 3001, + "column": 34 + }, + "identifierName": "position" + }, + "name": "position" }, - "value": "XYZ" - }, - { - "type": "Identifier", - "start": 119119, - "end": 119137, - "loc": { - "start": { - "line": 2998, - "column": 60 + "init": { + "type": "LogicalExpression", + "start": 119317, + "end": 119349, + "loc": { + "start": { + "line": 3001, + "column": 37 + }, + "end": { + "line": 3001, + "column": 69 + } }, - "end": { - "line": 2998, - "column": 78 + "left": { + "type": "MemberExpression", + "start": 119317, + "end": 119329, + "loc": { + "start": { + "line": 3001, + "column": 37 + }, + "end": { + "line": 3001, + "column": 49 + } + }, + "object": { + "type": "Identifier", + "start": 119317, + "end": 119320, + "loc": { + "start": { + "line": 3001, + "column": 37 + }, + "end": { + "line": 3001, + "column": 40 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 119321, + "end": 119329, + "loc": { + "start": { + "line": 3001, + "column": 41 + }, + "end": { + "line": 3001, + "column": 49 + }, + "identifierName": "position" + }, + "name": "position" + }, + "computed": false }, - "identifierName": "DEFAULT_QUATERNION" - }, - "name": "DEFAULT_QUATERNION" + "operator": "||", + "right": { + "type": "Identifier", + "start": 119333, + "end": 119349, + "loc": { + "start": { + "line": 3001, + "column": 53 + }, + "end": { + "line": 3001, + "column": 69 + }, + "identifierName": "DEFAULT_POSITION" + }, + "name": "DEFAULT_POSITION" + } + } } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 119160, - "end": 119244, - "loc": { - "start": { - "line": 2999, - "column": 20 - }, - "end": { - "line": 2999, - "column": 104 - } + ], + "kind": "const" }, - "expression": { - "type": "AssignmentExpression", - "start": 119160, - "end": 119243, + { + "type": "IfStatement", + "start": 119371, + "end": 119758, "loc": { "start": { - "line": 2999, + "line": 3002, "column": 20 }, "end": { - "line": 2999, - "column": 103 + "line": 3007, + "column": 21 } }, - "operator": "=", - "left": { + "test": { "type": "MemberExpression", - "start": 119160, - "end": 119174, + "start": 119375, + "end": 119387, "loc": { "start": { - "line": 2999, - "column": 20 + "line": 3002, + "column": 24 }, "end": { - "line": 2999, - "column": 34 + "line": 3002, + "column": 36 } }, "object": { "type": "Identifier", - "start": 119160, - "end": 119163, + "start": 119375, + "end": 119378, "loc": { "start": { - "line": 2999, - "column": 20 + "line": 3002, + "column": 24 }, "end": { - "line": 2999, - "column": 23 + "line": 3002, + "column": 27 }, "identifierName": "cfg" }, @@ -110022,225 +110465,843 @@ }, "property": { "type": "Identifier", - "start": 119164, - "end": 119174, + "start": 119379, + "end": 119387, "loc": { "start": { - "line": 2999, - "column": 24 + "line": 3002, + "column": 28 }, "end": { - "line": 2999, - "column": 34 + "line": 3002, + "column": 36 }, - "identifierName": "meshMatrix" + "identifierName": "rotation" }, - "name": "meshMatrix" + "name": "rotation" }, "computed": false }, - "right": { - "type": "CallExpression", - "start": 119177, - "end": 119243, + "consequent": { + "type": "BlockStatement", + "start": 119389, + "end": 119602, "loc": { "start": { - "line": 2999, - "column": 37 + "line": 3002, + "column": 38 }, "end": { - "line": 2999, - "column": 103 + "line": 3005, + "column": 21 } }, - "callee": { - "type": "MemberExpression", - "start": 119177, - "end": 119193, - "loc": { - "start": { - "line": 2999, - "column": 37 - }, - "end": { - "line": 2999, - "column": 53 - } - }, - "object": { - "type": "Identifier", - "start": 119177, - "end": 119181, - "loc": { - "start": { - "line": 2999, - "column": 37 - }, - "end": { - "line": 2999, - "column": 41 - }, - "identifierName": "math" - }, - "name": "math" - }, - "property": { - "type": "Identifier", - "start": 119182, - "end": 119193, - "loc": { - "start": { - "line": 2999, - "column": 42 - }, - "end": { - "line": 2999, - "column": 53 - }, - "identifierName": "composeMat4" - }, - "name": "composeMat4" - }, - "computed": false - }, - "arguments": [ - { - "type": "Identifier", - "start": 119194, - "end": 119202, - "loc": { - "start": { - "line": 2999, - "column": 54 - }, - "end": { - "line": 2999, - "column": 62 - }, - "identifierName": "position" - }, - "name": "position" - }, + "body": [ { - "type": "Identifier", - "start": 119204, - "end": 119222, + "type": "ExpressionStatement", + "start": 119415, + "end": 119475, "loc": { "start": { - "line": 2999, - "column": 64 + "line": 3003, + "column": 24 }, "end": { - "line": 2999, - "column": 82 - }, - "identifierName": "DEFAULT_QUATERNION" - }, - "name": "DEFAULT_QUATERNION" - }, - { - "type": "Identifier", - "start": 119224, - "end": 119229, - "loc": { - "start": { - "line": 2999, + "line": 3003, "column": 84 - }, - "end": { - "line": 2999, - "column": 89 - }, - "identifierName": "scale" - }, - "name": "scale" - }, - { - "type": "CallExpression", - "start": 119231, - "end": 119242, - "loc": { - "start": { - "line": 2999, - "column": 91 - }, - "end": { - "line": 2999, - "column": 102 } }, - "callee": { - "type": "MemberExpression", - "start": 119231, - "end": 119240, + "expression": { + "type": "CallExpression", + "start": 119415, + "end": 119474, "loc": { "start": { - "line": 2999, - "column": 91 + "line": 3003, + "column": 24 }, "end": { - "line": 2999, - "column": 100 + "line": 3003, + "column": 83 } }, - "object": { - "type": "Identifier", - "start": 119231, - "end": 119235, + "callee": { + "type": "MemberExpression", + "start": 119415, + "end": 119437, "loc": { "start": { - "line": 2999, - "column": 91 + "line": 3003, + "column": 24 }, "end": { - "line": 2999, - "column": 95 + "line": 3003, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 119415, + "end": 119419, + "loc": { + "start": { + "line": 3003, + "column": 24 + }, + "end": { + "line": 3003, + "column": 28 + }, + "identifierName": "math" }, - "identifierName": "math" + "name": "math" }, - "name": "math" + "property": { + "type": "Identifier", + "start": 119420, + "end": 119437, + "loc": { + "start": { + "line": 3003, + "column": 29 + }, + "end": { + "line": 3003, + "column": 46 + }, + "identifierName": "eulerToQuaternion" + }, + "name": "eulerToQuaternion" + }, + "computed": false }, - "property": { - "type": "Identifier", - "start": 119236, - "end": 119240, + "arguments": [ + { + "type": "MemberExpression", + "start": 119438, + "end": 119450, + "loc": { + "start": { + "line": 3003, + "column": 47 + }, + "end": { + "line": 3003, + "column": 59 + } + }, + "object": { + "type": "Identifier", + "start": 119438, + "end": 119441, + "loc": { + "start": { + "line": 3003, + "column": 47 + }, + "end": { + "line": 3003, + "column": 50 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 119442, + "end": 119450, + "loc": { + "start": { + "line": 3003, + "column": 51 + }, + "end": { + "line": 3003, + "column": 59 + }, + "identifierName": "rotation" + }, + "name": "rotation" + }, + "computed": false + }, + { + "type": "StringLiteral", + "start": 119452, + "end": 119457, + "loc": { + "start": { + "line": 3003, + "column": 61 + }, + "end": { + "line": 3003, + "column": 66 + } + }, + "extra": { + "rawValue": "XYZ", + "raw": "\"XYZ\"" + }, + "value": "XYZ" + }, + { + "type": "Identifier", + "start": 119459, + "end": 119473, + "loc": { + "start": { + "line": 3003, + "column": 68 + }, + "end": { + "line": 3003, + "column": 82 + }, + "identifierName": "tempQuaternion" + }, + "name": "tempQuaternion" + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 119500, + "end": 119580, + "loc": { + "start": { + "line": 3004, + "column": 24 + }, + "end": { + "line": 3004, + "column": 104 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 119500, + "end": 119579, + "loc": { + "start": { + "line": 3004, + "column": 24 + }, + "end": { + "line": 3004, + "column": 103 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 119500, + "end": 119514, "loc": { "start": { - "line": 2999, - "column": 96 + "line": 3004, + "column": 24 }, "end": { - "line": 2999, - "column": 100 + "line": 3004, + "column": 38 + } + }, + "object": { + "type": "Identifier", + "start": 119500, + "end": 119503, + "loc": { + "start": { + "line": 3004, + "column": 24 + }, + "end": { + "line": 3004, + "column": 27 + }, + "identifierName": "cfg" }, - "identifierName": "mat4" + "name": "cfg" }, - "name": "mat4" + "property": { + "type": "Identifier", + "start": 119504, + "end": 119514, + "loc": { + "start": { + "line": 3004, + "column": 28 + }, + "end": { + "line": 3004, + "column": 38 + }, + "identifierName": "meshMatrix" + }, + "name": "meshMatrix" + }, + "computed": false }, - "computed": false + "right": { + "type": "CallExpression", + "start": 119517, + "end": 119579, + "loc": { + "start": { + "line": 3004, + "column": 41 + }, + "end": { + "line": 3004, + "column": 103 + } + }, + "callee": { + "type": "MemberExpression", + "start": 119517, + "end": 119533, + "loc": { + "start": { + "line": 3004, + "column": 41 + }, + "end": { + "line": 3004, + "column": 57 + } + }, + "object": { + "type": "Identifier", + "start": 119517, + "end": 119521, + "loc": { + "start": { + "line": 3004, + "column": 41 + }, + "end": { + "line": 3004, + "column": 45 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 119522, + "end": 119533, + "loc": { + "start": { + "line": 3004, + "column": 46 + }, + "end": { + "line": 3004, + "column": 57 + }, + "identifierName": "composeMat4" + }, + "name": "composeMat4" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 119534, + "end": 119542, + "loc": { + "start": { + "line": 3004, + "column": 58 + }, + "end": { + "line": 3004, + "column": 66 + }, + "identifierName": "position" + }, + "name": "position" + }, + { + "type": "Identifier", + "start": 119544, + "end": 119558, + "loc": { + "start": { + "line": 3004, + "column": 68 + }, + "end": { + "line": 3004, + "column": 82 + }, + "identifierName": "tempQuaternion" + }, + "name": "tempQuaternion" + }, + { + "type": "Identifier", + "start": 119560, + "end": 119565, + "loc": { + "start": { + "line": 3004, + "column": 84 + }, + "end": { + "line": 3004, + "column": 89 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + { + "type": "CallExpression", + "start": 119567, + "end": 119578, + "loc": { + "start": { + "line": 3004, + "column": 91 + }, + "end": { + "line": 3004, + "column": 102 + } + }, + "callee": { + "type": "MemberExpression", + "start": 119567, + "end": 119576, + "loc": { + "start": { + "line": 3004, + "column": 91 + }, + "end": { + "line": 3004, + "column": 100 + } + }, + "object": { + "type": "Identifier", + "start": 119567, + "end": 119571, + "loc": { + "start": { + "line": 3004, + "column": 91 + }, + "end": { + "line": 3004, + "column": 95 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 119572, + "end": 119576, + "loc": { + "start": { + "line": 3004, + "column": 96 + }, + "end": { + "line": 3004, + "column": 100 + }, + "identifierName": "mat4" + }, + "name": "mat4" + }, + "computed": false + }, + "arguments": [] + } + ] + } + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 119608, + "end": 119758, + "loc": { + "start": { + "line": 3005, + "column": 27 + }, + "end": { + "line": 3007, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 119634, + "end": 119736, + "loc": { + "start": { + "line": 3006, + "column": 24 + }, + "end": { + "line": 3006, + "column": 126 + } }, - "arguments": [] + "expression": { + "type": "AssignmentExpression", + "start": 119634, + "end": 119735, + "loc": { + "start": { + "line": 3006, + "column": 24 + }, + "end": { + "line": 3006, + "column": 125 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 119634, + "end": 119648, + "loc": { + "start": { + "line": 3006, + "column": 24 + }, + "end": { + "line": 3006, + "column": 38 + } + }, + "object": { + "type": "Identifier", + "start": 119634, + "end": 119637, + "loc": { + "start": { + "line": 3006, + "column": 24 + }, + "end": { + "line": 3006, + "column": 27 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 119638, + "end": 119648, + "loc": { + "start": { + "line": 3006, + "column": 28 + }, + "end": { + "line": 3006, + "column": 38 + }, + "identifierName": "meshMatrix" + }, + "name": "meshMatrix" + }, + "computed": false + }, + "right": { + "type": "CallExpression", + "start": 119651, + "end": 119735, + "loc": { + "start": { + "line": 3006, + "column": 41 + }, + "end": { + "line": 3006, + "column": 125 + } + }, + "callee": { + "type": "MemberExpression", + "start": 119651, + "end": 119667, + "loc": { + "start": { + "line": 3006, + "column": 41 + }, + "end": { + "line": 3006, + "column": 57 + } + }, + "object": { + "type": "Identifier", + "start": 119651, + "end": 119655, + "loc": { + "start": { + "line": 3006, + "column": 41 + }, + "end": { + "line": 3006, + "column": 45 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 119656, + "end": 119667, + "loc": { + "start": { + "line": 3006, + "column": 46 + }, + "end": { + "line": 3006, + "column": 57 + }, + "identifierName": "composeMat4" + }, + "name": "composeMat4" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 119668, + "end": 119676, + "loc": { + "start": { + "line": 3006, + "column": 58 + }, + "end": { + "line": 3006, + "column": 66 + }, + "identifierName": "position" + }, + "name": "position" + }, + { + "type": "LogicalExpression", + "start": 119678, + "end": 119714, + "loc": { + "start": { + "line": 3006, + "column": 68 + }, + "end": { + "line": 3006, + "column": 104 + } + }, + "left": { + "type": "MemberExpression", + "start": 119678, + "end": 119692, + "loc": { + "start": { + "line": 3006, + "column": 68 + }, + "end": { + "line": 3006, + "column": 82 + } + }, + "object": { + "type": "Identifier", + "start": 119678, + "end": 119681, + "loc": { + "start": { + "line": 3006, + "column": 68 + }, + "end": { + "line": 3006, + "column": 71 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 119682, + "end": 119692, + "loc": { + "start": { + "line": 3006, + "column": 72 + }, + "end": { + "line": 3006, + "column": 82 + }, + "identifierName": "quaternion" + }, + "name": "quaternion" + }, + "computed": false + }, + "operator": "||", + "right": { + "type": "Identifier", + "start": 119696, + "end": 119714, + "loc": { + "start": { + "line": 3006, + "column": 86 + }, + "end": { + "line": 3006, + "column": 104 + }, + "identifierName": "DEFAULT_QUATERNION" + }, + "name": "DEFAULT_QUATERNION" + } + }, + { + "type": "Identifier", + "start": 119716, + "end": 119721, + "loc": { + "start": { + "line": 3006, + "column": 106 + }, + "end": { + "line": 3006, + "column": 111 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + { + "type": "CallExpression", + "start": 119723, + "end": 119734, + "loc": { + "start": { + "line": 3006, + "column": 113 + }, + "end": { + "line": 3006, + "column": 124 + } + }, + "callee": { + "type": "MemberExpression", + "start": 119723, + "end": 119732, + "loc": { + "start": { + "line": 3006, + "column": 113 + }, + "end": { + "line": 3006, + "column": 122 + } + }, + "object": { + "type": "Identifier", + "start": 119723, + "end": 119727, + "loc": { + "start": { + "line": 3006, + "column": 113 + }, + "end": { + "line": 3006, + "column": 117 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 119728, + "end": 119732, + "loc": { + "start": { + "line": 3006, + "column": 118 + }, + "end": { + "line": 3006, + "column": 122 + }, + "identifierName": "mat4" + }, + "name": "mat4" + }, + "computed": false + }, + "arguments": [] + } + ] + } + } } - ] + ], + "directives": [] } } - } - ], - "directives": [] + ], + "directives": [] + }, + "alternate": null }, "leadingComments": [ { "type": "CommentLine", "value": " MATRIX", - "start": 118728, - "end": 118737, + "start": 119034, + "end": 119043, "loc": { "start": { - "line": 2990, + "line": 2995, "column": 16 }, "end": { - "line": 2990, + "line": 2995, "column": 25 } } @@ -110249,57 +111310,57 @@ }, { "type": "ExpressionStatement", - "start": 119280, - "end": 119326, + "start": 119794, + "end": 119840, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 16 }, "end": { - "line": 3002, + "line": 3010, "column": 62 } }, "expression": { "type": "CallExpression", - "start": 119280, - "end": 119325, + "start": 119794, + "end": 119839, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 16 }, "end": { - "line": 3002, + "line": 3010, "column": 61 } }, "callee": { "type": "MemberExpression", - "start": 119280, - "end": 119296, + "start": 119794, + "end": 119810, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 16 }, "end": { - "line": 3002, + "line": 3010, "column": 32 } }, "object": { "type": "Identifier", - "start": 119280, - "end": 119284, + "start": 119794, + "end": 119798, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 16 }, "end": { - "line": 3002, + "line": 3010, "column": 20 }, "identifierName": "math" @@ -110308,15 +111369,15 @@ }, "property": { "type": "Identifier", - "start": 119285, - "end": 119296, + "start": 119799, + "end": 119810, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 21 }, "end": { - "line": 3002, + "line": 3010, "column": 32 }, "identifierName": "AABB3ToOBB3" @@ -110328,43 +111389,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 119297, - "end": 119314, + "start": 119811, + "end": 119828, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 33 }, "end": { - "line": 3002, + "line": 3010, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 119297, - "end": 119309, + "start": 119811, + "end": 119823, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 33 }, "end": { - "line": 3002, + "line": 3010, "column": 45 } }, "object": { "type": "Identifier", - "start": 119297, - "end": 119300, + "start": 119811, + "end": 119814, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 33 }, "end": { - "line": 3002, + "line": 3010, "column": 36 }, "identifierName": "cfg" @@ -110373,15 +111434,15 @@ }, "property": { "type": "Identifier", - "start": 119301, - "end": 119309, + "start": 119815, + "end": 119823, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 37 }, "end": { - "line": 3002, + "line": 3010, "column": 45 }, "identifierName": "geometry" @@ -110392,15 +111453,15 @@ }, "property": { "type": "Identifier", - "start": 119310, - "end": 119314, + "start": 119824, + "end": 119828, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 46 }, "end": { - "line": 3002, + "line": 3010, "column": 50 }, "identifierName": "aabb" @@ -110411,15 +111472,15 @@ }, { "type": "Identifier", - "start": 119316, - "end": 119324, + "start": 119830, + "end": 119838, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 52 }, "end": { - "line": 3002, + "line": 3010, "column": 60 }, "identifierName": "tempOBB3" @@ -110431,57 +111492,57 @@ }, { "type": "ExpressionStatement", - "start": 119343, - "end": 119388, + "start": 119857, + "end": 119902, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 16 }, "end": { - "line": 3003, + "line": 3011, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 119343, - "end": 119387, + "start": 119857, + "end": 119901, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 16 }, "end": { - "line": 3003, + "line": 3011, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 119343, - "end": 119361, + "start": 119857, + "end": 119875, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 16 }, "end": { - "line": 3003, + "line": 3011, "column": 34 } }, "object": { "type": "Identifier", - "start": 119343, - "end": 119347, + "start": 119857, + "end": 119861, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 16 }, "end": { - "line": 3003, + "line": 3011, "column": 20 }, "identifierName": "math" @@ -110490,15 +111551,15 @@ }, "property": { "type": "Identifier", - "start": 119348, - "end": 119361, + "start": 119862, + "end": 119875, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 21 }, "end": { - "line": 3003, + "line": 3011, "column": 34 }, "identifierName": "transformOBB3" @@ -110510,29 +111571,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 119362, - "end": 119376, + "start": 119876, + "end": 119890, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 35 }, "end": { - "line": 3003, + "line": 3011, "column": 49 } }, "object": { "type": "Identifier", - "start": 119362, - "end": 119365, + "start": 119876, + "end": 119879, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 35 }, "end": { - "line": 3003, + "line": 3011, "column": 38 }, "identifierName": "cfg" @@ -110541,15 +111602,15 @@ }, "property": { "type": "Identifier", - "start": 119366, - "end": 119376, + "start": 119880, + "end": 119890, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 39 }, "end": { - "line": 3003, + "line": 3011, "column": 49 }, "identifierName": "meshMatrix" @@ -110560,15 +111621,15 @@ }, { "type": "Identifier", - "start": 119378, - "end": 119386, + "start": 119892, + "end": 119900, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 51 }, "end": { - "line": 3003, + "line": 3011, "column": 59 }, "identifierName": "tempOBB3" @@ -110580,58 +111641,58 @@ }, { "type": "ExpressionStatement", - "start": 119405, - "end": 119457, + "start": 119919, + "end": 119971, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 16 }, "end": { - "line": 3004, + "line": 3012, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 119405, - "end": 119456, + "start": 119919, + "end": 119970, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 16 }, "end": { - "line": 3004, + "line": 3012, "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 119405, - "end": 119413, + "start": 119919, + "end": 119927, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 16 }, "end": { - "line": 3004, + "line": 3012, "column": 24 } }, "object": { "type": "Identifier", - "start": 119405, - "end": 119408, + "start": 119919, + "end": 119922, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 16 }, "end": { - "line": 3004, + "line": 3012, "column": 19 }, "identifierName": "cfg" @@ -110640,15 +111701,15 @@ }, "property": { "type": "Identifier", - "start": 119409, - "end": 119413, + "start": 119923, + "end": 119927, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 20 }, "end": { - "line": 3004, + "line": 3012, "column": 24 }, "identifierName": "aabb" @@ -110659,43 +111720,43 @@ }, "right": { "type": "CallExpression", - "start": 119416, - "end": 119456, + "start": 119930, + "end": 119970, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 27 }, "end": { - "line": 3004, + "line": 3012, "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 119416, - "end": 119432, + "start": 119930, + "end": 119946, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 27 }, "end": { - "line": 3004, + "line": 3012, "column": 43 } }, "object": { "type": "Identifier", - "start": 119416, - "end": 119420, + "start": 119930, + "end": 119934, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 27 }, "end": { - "line": 3004, + "line": 3012, "column": 31 }, "identifierName": "math" @@ -110704,15 +111765,15 @@ }, "property": { "type": "Identifier", - "start": 119421, - "end": 119432, + "start": 119935, + "end": 119946, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 32 }, "end": { - "line": 3004, + "line": 3012, "column": 43 }, "identifierName": "OBB3ToAABB3" @@ -110724,15 +111785,15 @@ "arguments": [ { "type": "Identifier", - "start": 119433, - "end": 119441, + "start": 119947, + "end": 119955, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 44 }, "end": { - "line": 3004, + "line": 3012, "column": 52 }, "identifierName": "tempOBB3" @@ -110741,43 +111802,43 @@ }, { "type": "CallExpression", - "start": 119443, - "end": 119455, + "start": 119957, + "end": 119969, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 54 }, "end": { - "line": 3004, + "line": 3012, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 119443, - "end": 119453, + "start": 119957, + "end": 119967, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 54 }, "end": { - "line": 3004, + "line": 3012, "column": 64 } }, "object": { "type": "Identifier", - "start": 119443, - "end": 119447, + "start": 119957, + "end": 119961, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 54 }, "end": { - "line": 3004, + "line": 3012, "column": 58 }, "identifierName": "math" @@ -110786,15 +111847,15 @@ }, "property": { "type": "Identifier", - "start": 119448, - "end": 119453, + "start": 119962, + "end": 119967, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 59 }, "end": { - "line": 3004, + "line": 3012, "column": 64 }, "identifierName": "AABB3" @@ -110815,44 +111876,44 @@ }, { "type": "VariableDeclaration", - "start": 119485, - "end": 119750, + "start": 119999, + "end": 120264, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 12 }, "end": { - "line": 3011, + "line": 3019, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 119491, - "end": 119749, + "start": 120005, + "end": 120263, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 18 }, "end": { - "line": 3011, + "line": 3019, "column": 38 } }, "id": { "type": "Identifier", - "start": 119491, - "end": 119497, + "start": 120005, + "end": 120011, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 18 }, "end": { - "line": 3007, + "line": 3015, "column": 24 }, "identifierName": "useDTX" @@ -110861,43 +111922,43 @@ }, "init": { "type": "LogicalExpression", - "start": 119500, - "end": 119749, + "start": 120014, + "end": 120263, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 27 }, "end": { - "line": 3011, + "line": 3019, "column": 38 } }, "left": { "type": "LogicalExpression", - "start": 119501, - "end": 119709, + "start": 120015, + "end": 120223, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 28 }, "end": { - "line": 3010, + "line": 3018, "column": 64 } }, "left": { "type": "UnaryExpression", - "start": 119501, - "end": 119519, + "start": 120015, + "end": 120033, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 28 }, "end": { - "line": 3007, + "line": 3015, "column": 46 } }, @@ -110905,15 +111966,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 119502, - "end": 119519, + "start": 120016, + "end": 120033, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 29 }, "end": { - "line": 3007, + "line": 3015, "column": 46 } }, @@ -110921,44 +111982,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 119503, - "end": 119519, + "start": 120017, + "end": 120033, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 30 }, "end": { - "line": 3007, + "line": 3015, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 119503, - "end": 119507, + "start": 120017, + "end": 120021, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 30 }, "end": { - "line": 3007, + "line": 3015, "column": 34 } } }, "property": { "type": "Identifier", - "start": 119508, - "end": 119519, + "start": 120022, + "end": 120033, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 35 }, "end": { - "line": 3007, + "line": 3015, "column": 46 }, "identifierName": "_dtxEnabled" @@ -110978,85 +112039,85 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 119544, - "end": 119708, + "start": 120058, + "end": 120222, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 24 }, "end": { - "line": 3010, + "line": 3018, "column": 63 } }, "left": { "type": "LogicalExpression", - "start": 119544, - "end": 119644, + "start": 120058, + "end": 120158, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 24 }, "end": { - "line": 3009, + "line": 3017, "column": 61 } }, "left": { "type": "BinaryExpression", - "start": 119544, - "end": 119582, + "start": 120058, + "end": 120096, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 24 }, "end": { - "line": 3008, + "line": 3016, "column": 62 } }, "left": { "type": "MemberExpression", - "start": 119544, - "end": 119566, + "start": 120058, + "end": 120080, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 24 }, "end": { - "line": 3008, + "line": 3016, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 119544, - "end": 119556, + "start": 120058, + "end": 120070, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 24 }, "end": { - "line": 3008, + "line": 3016, "column": 36 } }, "object": { "type": "Identifier", - "start": 119544, - "end": 119547, + "start": 120058, + "end": 120061, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 24 }, "end": { - "line": 3008, + "line": 3016, "column": 27 }, "identifierName": "cfg" @@ -111065,15 +112126,15 @@ }, "property": { "type": "Identifier", - "start": 119548, - "end": 119556, + "start": 120062, + "end": 120070, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 28 }, "end": { - "line": 3008, + "line": 3016, "column": 36 }, "identifierName": "geometry" @@ -111084,15 +112145,15 @@ }, "property": { "type": "Identifier", - "start": 119557, - "end": 119566, + "start": 120071, + "end": 120080, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 37 }, "end": { - "line": 3008, + "line": 3016, "column": 46 }, "identifierName": "primitive" @@ -111104,15 +112165,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 119571, - "end": 119582, + "start": 120085, + "end": 120096, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 51 }, "end": { - "line": 3008, + "line": 3016, "column": 62 } }, @@ -111126,57 +112187,57 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 119610, - "end": 119644, + "start": 120124, + "end": 120158, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 27 }, "end": { - "line": 3009, + "line": 3017, "column": 61 } }, "left": { "type": "MemberExpression", - "start": 119610, - "end": 119632, + "start": 120124, + "end": 120146, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 27 }, "end": { - "line": 3009, + "line": 3017, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 119610, - "end": 119622, + "start": 120124, + "end": 120136, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 27 }, "end": { - "line": 3009, + "line": 3017, "column": 39 } }, "object": { "type": "Identifier", - "start": 119610, - "end": 119613, + "start": 120124, + "end": 120127, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 27 }, "end": { - "line": 3009, + "line": 3017, "column": 30 }, "identifierName": "cfg" @@ -111185,15 +112246,15 @@ }, "property": { "type": "Identifier", - "start": 119614, - "end": 119622, + "start": 120128, + "end": 120136, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 31 }, "end": { - "line": 3009, + "line": 3017, "column": 39 }, "identifierName": "geometry" @@ -111204,15 +112265,15 @@ }, "property": { "type": "Identifier", - "start": 119623, - "end": 119632, + "start": 120137, + "end": 120146, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 40 }, "end": { - "line": 3009, + "line": 3017, "column": 49 }, "identifierName": "primitive" @@ -111224,15 +112285,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 119637, - "end": 119644, + "start": 120151, + "end": 120158, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 54 }, "end": { - "line": 3009, + "line": 3017, "column": 61 } }, @@ -111247,57 +112308,57 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 119672, - "end": 119708, + "start": 120186, + "end": 120222, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 27 }, "end": { - "line": 3010, + "line": 3018, "column": 63 } }, "left": { "type": "MemberExpression", - "start": 119672, - "end": 119694, + "start": 120186, + "end": 120208, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 27 }, "end": { - "line": 3010, + "line": 3018, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 119672, - "end": 119684, + "start": 120186, + "end": 120198, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 27 }, "end": { - "line": 3010, + "line": 3018, "column": 39 } }, "object": { "type": "Identifier", - "start": 119672, - "end": 119675, + "start": 120186, + "end": 120189, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 27 }, "end": { - "line": 3010, + "line": 3018, "column": 30 }, "identifierName": "cfg" @@ -111306,15 +112367,15 @@ }, "property": { "type": "Identifier", - "start": 119676, - "end": 119684, + "start": 120190, + "end": 120198, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 31 }, "end": { - "line": 3010, + "line": 3018, "column": 39 }, "identifierName": "geometry" @@ -111325,15 +112386,15 @@ }, "property": { "type": "Identifier", - "start": 119685, - "end": 119694, + "start": 120199, + "end": 120208, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 40 }, "end": { - "line": 3010, + "line": 3018, "column": 49 }, "identifierName": "primitive" @@ -111345,15 +112406,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 119699, - "end": 119708, + "start": 120213, + "end": 120222, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 54 }, "end": { - "line": 3010, + "line": 3018, "column": 63 } }, @@ -111366,26 +112427,26 @@ }, "extra": { "parenthesized": true, - "parenStart": 119543 + "parenStart": 120057 } }, "extra": { "parenthesized": true, - "parenStart": 119500 + "parenStart": 120014 } }, "operator": "&&", "right": { "type": "UnaryExpression", - "start": 119731, - "end": 119748, + "start": 120245, + "end": 120262, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 20 }, "end": { - "line": 3011, + "line": 3019, "column": 37 } }, @@ -111393,29 +112454,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 119732, - "end": 119748, + "start": 120246, + "end": 120262, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 21 }, "end": { - "line": 3011, + "line": 3019, "column": 37 } }, "object": { "type": "Identifier", - "start": 119732, - "end": 119735, + "start": 120246, + "end": 120249, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 21 }, "end": { - "line": 3011, + "line": 3019, "column": 24 }, "identifierName": "cfg" @@ -111424,15 +112485,15 @@ }, "property": { "type": "Identifier", - "start": 119736, - "end": 119748, + "start": 120250, + "end": 120262, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 25 }, "end": { - "line": 3011, + "line": 3019, "column": 37 }, "identifierName": "textureSetId" @@ -111444,7 +112505,7 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 119730 + "parenStart": 120244 } } } @@ -111454,29 +112515,29 @@ }, { "type": "IfStatement", - "start": 119764, - "end": 121662, + "start": 120278, + "end": 122176, "loc": { "start": { - "line": 3013, + "line": 3021, "column": 12 }, "end": { - "line": 3055, + "line": 3063, "column": 13 } }, "test": { "type": "Identifier", - "start": 119768, - "end": 119774, + "start": 120282, + "end": 120288, "loc": { "start": { - "line": 3013, + "line": 3021, "column": 16 }, "end": { - "line": 3013, + "line": 3021, "column": 22 }, "identifierName": "useDTX" @@ -111485,73 +112546,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 119776, - "end": 120566, + "start": 120290, + "end": 121080, "loc": { "start": { - "line": 3013, + "line": 3021, "column": 24 }, "end": { - "line": 3033, + "line": 3041, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 119819, - "end": 119834, + "start": 120333, + "end": 120348, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 16 }, "end": { - "line": 3017, + "line": 3025, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 119819, - "end": 119833, + "start": 120333, + "end": 120347, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 16 }, "end": { - "line": 3017, + "line": 3025, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 119819, - "end": 119827, + "start": 120333, + "end": 120341, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 16 }, "end": { - "line": 3017, + "line": 3025, "column": 24 } }, "object": { "type": "Identifier", - "start": 119819, - "end": 119822, + "start": 120333, + "end": 120336, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 16 }, "end": { - "line": 3017, + "line": 3025, "column": 19 }, "identifierName": "cfg" @@ -111561,15 +112622,15 @@ }, "property": { "type": "Identifier", - "start": 119823, - "end": 119827, + "start": 120337, + "end": 120341, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 20 }, "end": { - "line": 3017, + "line": 3025, "column": 24 }, "identifierName": "type" @@ -111581,15 +112642,15 @@ }, "right": { "type": "Identifier", - "start": 119830, - "end": 119833, + "start": 120344, + "end": 120347, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 27 }, "end": { - "line": 3017, + "line": 3025, "column": 30 }, "identifierName": "DTX" @@ -111602,15 +112663,15 @@ { "type": "CommentLine", "value": " DTX", - "start": 119795, - "end": 119801, + "start": 120309, + "end": 120315, "loc": { "start": { - "line": 3015, + "line": 3023, "column": 16 }, "end": { - "line": 3015, + "line": 3023, "column": 22 } } @@ -111620,15 +112681,15 @@ { "type": "CommentLine", "value": " NPR", - "start": 119852, - "end": 119858, + "start": 120366, + "end": 120372, "loc": { "start": { - "line": 3019, + "line": 3027, "column": 16 }, "end": { - "line": 3019, + "line": 3027, "column": 22 } } @@ -111637,58 +112698,58 @@ }, { "type": "ExpressionStatement", - "start": 119876, - "end": 120040, + "start": 120390, + "end": 120554, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 16 }, "end": { - "line": 3021, + "line": 3029, "column": 180 } }, "expression": { "type": "AssignmentExpression", - "start": 119876, - "end": 120039, + "start": 120390, + "end": 120553, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 16 }, "end": { - "line": 3021, + "line": 3029, "column": 179 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 119876, - "end": 119885, + "start": 120390, + "end": 120399, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 16 }, "end": { - "line": 3021, + "line": 3029, "column": 25 } }, "object": { "type": "Identifier", - "start": 119876, - "end": 119879, + "start": 120390, + "end": 120393, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 16 }, "end": { - "line": 3021, + "line": 3029, "column": 19 }, "identifierName": "cfg" @@ -111698,15 +112759,15 @@ }, "property": { "type": "Identifier", - "start": 119880, - "end": 119885, + "start": 120394, + "end": 120399, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 20 }, "end": { - "line": 3021, + "line": 3029, "column": 25 }, "identifierName": "color" @@ -111718,43 +112779,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 119888, - "end": 120039, + "start": 120402, + "end": 120553, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 28 }, "end": { - "line": 3021, + "line": 3029, "column": 179 } }, "test": { "type": "MemberExpression", - "start": 119889, - "end": 119898, + "start": 120403, + "end": 120412, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 29 }, "end": { - "line": 3021, + "line": 3029, "column": 38 } }, "object": { "type": "Identifier", - "start": 119889, - "end": 119892, + "start": 120403, + "end": 120406, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 29 }, "end": { - "line": 3021, + "line": 3029, "column": 32 }, "identifierName": "cfg" @@ -111763,15 +112824,15 @@ }, "property": { "type": "Identifier", - "start": 119893, - "end": 119898, + "start": 120407, + "end": 120412, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 33 }, "end": { - "line": 3021, + "line": 3029, "column": 38 }, "identifierName": "color" @@ -111781,34 +112842,34 @@ "computed": false, "extra": { "parenthesized": true, - "parenStart": 119888 + "parenStart": 120402 } }, "consequent": { "type": "NewExpression", - "start": 119902, - "end": 120014, + "start": 120416, + "end": 120528, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 42 }, "end": { - "line": 3021, + "line": 3029, "column": 154 } }, "callee": { "type": "Identifier", - "start": 119906, - "end": 119916, + "start": 120420, + "end": 120430, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 46 }, "end": { - "line": 3021, + "line": 3029, "column": 56 }, "identifierName": "Uint8Array" @@ -111818,58 +112879,58 @@ "arguments": [ { "type": "ArrayExpression", - "start": 119917, - "end": 120013, + "start": 120431, + "end": 120527, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 57 }, "end": { - "line": 3021, + "line": 3029, "column": 153 } }, "elements": [ { "type": "CallExpression", - "start": 119918, - "end": 119948, + "start": 120432, + "end": 120462, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 58 }, "end": { - "line": 3021, + "line": 3029, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 119918, - "end": 119928, + "start": 120432, + "end": 120442, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 58 }, "end": { - "line": 3021, + "line": 3029, "column": 68 } }, "object": { "type": "Identifier", - "start": 119918, - "end": 119922, + "start": 120432, + "end": 120436, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 58 }, "end": { - "line": 3021, + "line": 3029, "column": 62 }, "identifierName": "Math" @@ -111878,15 +112939,15 @@ }, "property": { "type": "Identifier", - "start": 119923, - "end": 119928, + "start": 120437, + "end": 120442, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 63 }, "end": { - "line": 3021, + "line": 3029, "column": 68 }, "identifierName": "floor" @@ -111898,57 +112959,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 119929, - "end": 119947, + "start": 120443, + "end": 120461, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 69 }, "end": { - "line": 3021, + "line": 3029, "column": 87 } }, "left": { "type": "MemberExpression", - "start": 119929, - "end": 119941, + "start": 120443, + "end": 120455, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 69 }, "end": { - "line": 3021, + "line": 3029, "column": 81 } }, "object": { "type": "MemberExpression", - "start": 119929, - "end": 119938, + "start": 120443, + "end": 120452, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 69 }, "end": { - "line": 3021, + "line": 3029, "column": 78 } }, "object": { "type": "Identifier", - "start": 119929, - "end": 119932, + "start": 120443, + "end": 120446, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 69 }, "end": { - "line": 3021, + "line": 3029, "column": 72 }, "identifierName": "cfg" @@ -111957,15 +113018,15 @@ }, "property": { "type": "Identifier", - "start": 119933, - "end": 119938, + "start": 120447, + "end": 120452, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 73 }, "end": { - "line": 3021, + "line": 3029, "column": 78 }, "identifierName": "color" @@ -111976,15 +113037,15 @@ }, "property": { "type": "NumericLiteral", - "start": 119939, - "end": 119940, + "start": 120453, + "end": 120454, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 79 }, "end": { - "line": 3021, + "line": 3029, "column": 80 } }, @@ -111999,15 +113060,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 119944, - "end": 119947, + "start": 120458, + "end": 120461, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 84 }, "end": { - "line": 3021, + "line": 3029, "column": 87 } }, @@ -112022,43 +113083,43 @@ }, { "type": "CallExpression", - "start": 119950, - "end": 119980, + "start": 120464, + "end": 120494, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 90 }, "end": { - "line": 3021, + "line": 3029, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 119950, - "end": 119960, + "start": 120464, + "end": 120474, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 90 }, "end": { - "line": 3021, + "line": 3029, "column": 100 } }, "object": { "type": "Identifier", - "start": 119950, - "end": 119954, + "start": 120464, + "end": 120468, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 90 }, "end": { - "line": 3021, + "line": 3029, "column": 94 }, "identifierName": "Math" @@ -112067,15 +113128,15 @@ }, "property": { "type": "Identifier", - "start": 119955, - "end": 119960, + "start": 120469, + "end": 120474, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 95 }, "end": { - "line": 3021, + "line": 3029, "column": 100 }, "identifierName": "floor" @@ -112087,57 +113148,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 119961, - "end": 119979, + "start": 120475, + "end": 120493, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 101 }, "end": { - "line": 3021, + "line": 3029, "column": 119 } }, "left": { "type": "MemberExpression", - "start": 119961, - "end": 119973, + "start": 120475, + "end": 120487, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 101 }, "end": { - "line": 3021, + "line": 3029, "column": 113 } }, "object": { "type": "MemberExpression", - "start": 119961, - "end": 119970, + "start": 120475, + "end": 120484, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 101 }, "end": { - "line": 3021, + "line": 3029, "column": 110 } }, "object": { "type": "Identifier", - "start": 119961, - "end": 119964, + "start": 120475, + "end": 120478, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 101 }, "end": { - "line": 3021, + "line": 3029, "column": 104 }, "identifierName": "cfg" @@ -112146,15 +113207,15 @@ }, "property": { "type": "Identifier", - "start": 119965, - "end": 119970, + "start": 120479, + "end": 120484, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 105 }, "end": { - "line": 3021, + "line": 3029, "column": 110 }, "identifierName": "color" @@ -112165,15 +113226,15 @@ }, "property": { "type": "NumericLiteral", - "start": 119971, - "end": 119972, + "start": 120485, + "end": 120486, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 111 }, "end": { - "line": 3021, + "line": 3029, "column": 112 } }, @@ -112188,15 +113249,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 119976, - "end": 119979, + "start": 120490, + "end": 120493, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 116 }, "end": { - "line": 3021, + "line": 3029, "column": 119 } }, @@ -112211,43 +113272,43 @@ }, { "type": "CallExpression", - "start": 119982, - "end": 120012, + "start": 120496, + "end": 120526, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 122 }, "end": { - "line": 3021, + "line": 3029, "column": 152 } }, "callee": { "type": "MemberExpression", - "start": 119982, - "end": 119992, + "start": 120496, + "end": 120506, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 122 }, "end": { - "line": 3021, + "line": 3029, "column": 132 } }, "object": { "type": "Identifier", - "start": 119982, - "end": 119986, + "start": 120496, + "end": 120500, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 122 }, "end": { - "line": 3021, + "line": 3029, "column": 126 }, "identifierName": "Math" @@ -112256,15 +113317,15 @@ }, "property": { "type": "Identifier", - "start": 119987, - "end": 119992, + "start": 120501, + "end": 120506, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 127 }, "end": { - "line": 3021, + "line": 3029, "column": 132 }, "identifierName": "floor" @@ -112276,57 +113337,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 119993, - "end": 120011, + "start": 120507, + "end": 120525, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 133 }, "end": { - "line": 3021, + "line": 3029, "column": 151 } }, "left": { "type": "MemberExpression", - "start": 119993, - "end": 120005, + "start": 120507, + "end": 120519, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 133 }, "end": { - "line": 3021, + "line": 3029, "column": 145 } }, "object": { "type": "MemberExpression", - "start": 119993, - "end": 120002, + "start": 120507, + "end": 120516, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 133 }, "end": { - "line": 3021, + "line": 3029, "column": 142 } }, "object": { "type": "Identifier", - "start": 119993, - "end": 119996, + "start": 120507, + "end": 120510, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 133 }, "end": { - "line": 3021, + "line": 3029, "column": 136 }, "identifierName": "cfg" @@ -112335,15 +113396,15 @@ }, "property": { "type": "Identifier", - "start": 119997, - "end": 120002, + "start": 120511, + "end": 120516, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 137 }, "end": { - "line": 3021, + "line": 3029, "column": 142 }, "identifierName": "color" @@ -112354,15 +113415,15 @@ }, "property": { "type": "NumericLiteral", - "start": 120003, - "end": 120004, + "start": 120517, + "end": 120518, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 143 }, "end": { - "line": 3021, + "line": 3029, "column": 144 } }, @@ -112377,15 +113438,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 120008, - "end": 120011, + "start": 120522, + "end": 120525, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 148 }, "end": { - "line": 3021, + "line": 3029, "column": 151 } }, @@ -112404,15 +113465,15 @@ }, "alternate": { "type": "Identifier", - "start": 120017, - "end": 120039, + "start": 120531, + "end": 120553, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 157 }, "end": { - "line": 3021, + "line": 3029, "column": 179 }, "identifierName": "defaultCompressedColor" @@ -112426,15 +113487,15 @@ { "type": "CommentLine", "value": " NPR", - "start": 119852, - "end": 119858, + "start": 120366, + "end": 120372, "loc": { "start": { - "line": 3019, + "line": 3027, "column": 16 }, "end": { - "line": 3019, + "line": 3027, "column": 22 } } @@ -112443,58 +113504,58 @@ }, { "type": "ExpressionStatement", - "start": 120057, - "end": 120161, + "start": 120571, + "end": 120675, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 16 }, "end": { - "line": 3022, + "line": 3030, "column": 120 } }, "expression": { "type": "AssignmentExpression", - "start": 120057, - "end": 120160, + "start": 120571, + "end": 120674, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 16 }, "end": { - "line": 3022, + "line": 3030, "column": 119 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 120057, - "end": 120068, + "start": 120571, + "end": 120582, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 16 }, "end": { - "line": 3022, + "line": 3030, "column": 27 } }, "object": { "type": "Identifier", - "start": 120057, - "end": 120060, + "start": 120571, + "end": 120574, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 16 }, "end": { - "line": 3022, + "line": 3030, "column": 19 }, "identifierName": "cfg" @@ -112503,15 +113564,15 @@ }, "property": { "type": "Identifier", - "start": 120061, - "end": 120068, + "start": 120575, + "end": 120582, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 20 }, "end": { - "line": 3022, + "line": 3030, "column": 27 }, "identifierName": "opacity" @@ -112522,71 +113583,71 @@ }, "right": { "type": "ConditionalExpression", - "start": 120071, - "end": 120160, + "start": 120585, + "end": 120674, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 30 }, "end": { - "line": 3022, + "line": 3030, "column": 119 } }, "test": { "type": "LogicalExpression", - "start": 120072, - "end": 120121, + "start": 120586, + "end": 120635, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 31 }, "end": { - "line": 3022, + "line": 3030, "column": 80 } }, "left": { "type": "BinaryExpression", - "start": 120072, - "end": 120097, + "start": 120586, + "end": 120611, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 31 }, "end": { - "line": 3022, + "line": 3030, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 120072, - "end": 120083, + "start": 120586, + "end": 120597, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 31 }, "end": { - "line": 3022, + "line": 3030, "column": 42 } }, "object": { "type": "Identifier", - "start": 120072, - "end": 120075, + "start": 120586, + "end": 120589, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 31 }, "end": { - "line": 3022, + "line": 3030, "column": 34 }, "identifierName": "cfg" @@ -112595,15 +113656,15 @@ }, "property": { "type": "Identifier", - "start": 120076, - "end": 120083, + "start": 120590, + "end": 120597, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 35 }, "end": { - "line": 3022, + "line": 3030, "column": 42 }, "identifierName": "opacity" @@ -112615,15 +113676,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 120088, - "end": 120097, + "start": 120602, + "end": 120611, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 47 }, "end": { - "line": 3022, + "line": 3030, "column": 56 }, "identifierName": "undefined" @@ -112634,43 +113695,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 120101, - "end": 120121, + "start": 120615, + "end": 120635, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 60 }, "end": { - "line": 3022, + "line": 3030, "column": 80 } }, "left": { "type": "MemberExpression", - "start": 120101, - "end": 120112, + "start": 120615, + "end": 120626, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 60 }, "end": { - "line": 3022, + "line": 3030, "column": 71 } }, "object": { "type": "Identifier", - "start": 120101, - "end": 120104, + "start": 120615, + "end": 120618, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 60 }, "end": { - "line": 3022, + "line": 3030, "column": 63 }, "identifierName": "cfg" @@ -112679,15 +113740,15 @@ }, "property": { "type": "Identifier", - "start": 120105, - "end": 120112, + "start": 120619, + "end": 120626, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 64 }, "end": { - "line": 3022, + "line": 3030, "column": 71 }, "identifierName": "opacity" @@ -112699,15 +113760,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 120117, - "end": 120121, + "start": 120631, + "end": 120635, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 76 }, "end": { - "line": 3022, + "line": 3030, "column": 80 } } @@ -112715,48 +113776,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 120071 + "parenStart": 120585 } }, "consequent": { "type": "CallExpression", - "start": 120125, - "end": 120154, + "start": 120639, + "end": 120668, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 84 }, "end": { - "line": 3022, + "line": 3030, "column": 113 } }, "callee": { "type": "MemberExpression", - "start": 120125, - "end": 120135, + "start": 120639, + "end": 120649, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 84 }, "end": { - "line": 3022, + "line": 3030, "column": 94 } }, "object": { "type": "Identifier", - "start": 120125, - "end": 120129, + "start": 120639, + "end": 120643, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 84 }, "end": { - "line": 3022, + "line": 3030, "column": 88 }, "identifierName": "Math" @@ -112765,15 +113826,15 @@ }, "property": { "type": "Identifier", - "start": 120130, - "end": 120135, + "start": 120644, + "end": 120649, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 89 }, "end": { - "line": 3022, + "line": 3030, "column": 94 }, "identifierName": "floor" @@ -112785,43 +113846,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 120136, - "end": 120153, + "start": 120650, + "end": 120667, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 95 }, "end": { - "line": 3022, + "line": 3030, "column": 112 } }, "left": { "type": "MemberExpression", - "start": 120136, - "end": 120147, + "start": 120650, + "end": 120661, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 95 }, "end": { - "line": 3022, + "line": 3030, "column": 106 } }, "object": { "type": "Identifier", - "start": 120136, - "end": 120139, + "start": 120650, + "end": 120653, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 95 }, "end": { - "line": 3022, + "line": 3030, "column": 98 }, "identifierName": "cfg" @@ -112830,15 +113891,15 @@ }, "property": { "type": "Identifier", - "start": 120140, - "end": 120147, + "start": 120654, + "end": 120661, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 99 }, "end": { - "line": 3022, + "line": 3030, "column": 106 }, "identifierName": "opacity" @@ -112850,15 +113911,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 120150, - "end": 120153, + "start": 120664, + "end": 120667, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 109 }, "end": { - "line": 3022, + "line": 3030, "column": 112 } }, @@ -112873,15 +113934,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 120157, - "end": 120160, + "start": 120671, + "end": 120674, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 116 }, "end": { - "line": 3022, + "line": 3030, "column": 119 } }, @@ -112897,15 +113958,15 @@ { "type": "CommentLine", "value": " BUCKETING - lazy generated, reused", - "start": 120179, - "end": 120216, + "start": 120693, + "end": 120730, "loc": { "start": { - "line": 3024, + "line": 3032, "column": 16 }, "end": { - "line": 3024, + "line": 3032, "column": 53 } } @@ -112914,44 +113975,44 @@ }, { "type": "VariableDeclaration", - "start": 120234, - "end": 120281, + "start": 120748, + "end": 120795, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 16 }, "end": { - "line": 3026, + "line": 3034, "column": 63 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 120238, - "end": 120280, + "start": 120752, + "end": 120794, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 20 }, "end": { - "line": 3026, + "line": 3034, "column": 62 } }, "id": { "type": "Identifier", - "start": 120238, - "end": 120245, + "start": 120752, + "end": 120759, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 20 }, "end": { - "line": 3026, + "line": 3034, "column": 27 }, "identifierName": "buckets" @@ -112961,58 +114022,58 @@ }, "init": { "type": "MemberExpression", - "start": 120248, - "end": 120280, + "start": 120762, + "end": 120794, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 30 }, "end": { - "line": 3026, + "line": 3034, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 120248, - "end": 120264, + "start": 120762, + "end": 120778, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 30 }, "end": { - "line": 3026, + "line": 3034, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 120248, - "end": 120252, + "start": 120762, + "end": 120766, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 30 }, "end": { - "line": 3026, + "line": 3034, "column": 34 } } }, "property": { "type": "Identifier", - "start": 120253, - "end": 120264, + "start": 120767, + "end": 120778, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 35 }, "end": { - "line": 3026, + "line": 3034, "column": 46 }, "identifierName": "_dtxBuckets" @@ -113023,29 +114084,29 @@ }, "property": { "type": "MemberExpression", - "start": 120265, - "end": 120279, + "start": 120779, + "end": 120793, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 47 }, "end": { - "line": 3026, + "line": 3034, "column": 61 } }, "object": { "type": "Identifier", - "start": 120265, - "end": 120268, + "start": 120779, + "end": 120782, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 47 }, "end": { - "line": 3026, + "line": 3034, "column": 50 }, "identifierName": "cfg" @@ -113054,15 +114115,15 @@ }, "property": { "type": "Identifier", - "start": 120269, - "end": 120279, + "start": 120783, + "end": 120793, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 51 }, "end": { - "line": 3026, + "line": 3034, "column": 61 }, "identifierName": "geometryId" @@ -113081,15 +114142,15 @@ { "type": "CommentLine", "value": " BUCKETING - lazy generated, reused", - "start": 120179, - "end": 120216, + "start": 120693, + "end": 120730, "loc": { "start": { - "line": 3024, + "line": 3032, "column": 16 }, "end": { - "line": 3024, + "line": 3032, "column": 53 } } @@ -113098,29 +114159,29 @@ }, { "type": "IfStatement", - "start": 120298, - "end": 120512, + "start": 120812, + "end": 121026, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 16 }, "end": { - "line": 3030, + "line": 3038, "column": 17 } }, "test": { "type": "UnaryExpression", - "start": 120302, - "end": 120310, + "start": 120816, + "end": 120824, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 20 }, "end": { - "line": 3027, + "line": 3035, "column": 28 } }, @@ -113128,15 +114189,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 120303, - "end": 120310, + "start": 120817, + "end": 120824, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 21 }, "end": { - "line": 3027, + "line": 3035, "column": 28 }, "identifierName": "buckets" @@ -113149,59 +114210,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 120312, - "end": 120512, + "start": 120826, + "end": 121026, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 30 }, "end": { - "line": 3030, + "line": 3038, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 120334, - "end": 120430, + "start": 120848, + "end": 120944, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 20 }, "end": { - "line": 3028, + "line": 3036, "column": 116 } }, "expression": { "type": "AssignmentExpression", - "start": 120334, - "end": 120429, + "start": 120848, + "end": 120943, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 20 }, "end": { - "line": 3028, + "line": 3036, "column": 115 } }, "operator": "=", "left": { "type": "Identifier", - "start": 120334, - "end": 120341, + "start": 120848, + "end": 120855, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 20 }, "end": { - "line": 3028, + "line": 3036, "column": 27 }, "identifierName": "buckets" @@ -113210,29 +114271,29 @@ }, "right": { "type": "CallExpression", - "start": 120344, - "end": 120429, + "start": 120858, + "end": 120943, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 30 }, "end": { - "line": 3028, + "line": 3036, "column": 115 } }, "callee": { "type": "Identifier", - "start": 120344, - "end": 120360, + "start": 120858, + "end": 120874, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 30 }, "end": { - "line": 3028, + "line": 3036, "column": 46 }, "identifierName": "createDTXBuckets" @@ -113242,29 +114303,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 120361, - "end": 120373, + "start": 120875, + "end": 120887, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 47 }, "end": { - "line": 3028, + "line": 3036, "column": 59 } }, "object": { "type": "Identifier", - "start": 120361, - "end": 120364, + "start": 120875, + "end": 120878, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 47 }, "end": { - "line": 3028, + "line": 3036, "column": 50 }, "identifierName": "cfg" @@ -113273,15 +114334,15 @@ }, "property": { "type": "Identifier", - "start": 120365, - "end": 120373, + "start": 120879, + "end": 120887, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 51 }, "end": { - "line": 3028, + "line": 3036, "column": 59 }, "identifierName": "geometry" @@ -113292,44 +114353,44 @@ }, { "type": "MemberExpression", - "start": 120375, - "end": 120400, + "start": 120889, + "end": 120914, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 61 }, "end": { - "line": 3028, + "line": 3036, "column": 86 } }, "object": { "type": "ThisExpression", - "start": 120375, - "end": 120379, + "start": 120889, + "end": 120893, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 61 }, "end": { - "line": 3028, + "line": 3036, "column": 65 } } }, "property": { "type": "Identifier", - "start": 120380, - "end": 120400, + "start": 120894, + "end": 120914, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 66 }, "end": { - "line": 3028, + "line": 3036, "column": 86 }, "identifierName": "_enableVertexWelding" @@ -113340,44 +114401,44 @@ }, { "type": "MemberExpression", - "start": 120402, - "end": 120428, + "start": 120916, + "end": 120942, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 88 }, "end": { - "line": 3028, + "line": 3036, "column": 114 } }, "object": { "type": "ThisExpression", - "start": 120402, - "end": 120406, + "start": 120916, + "end": 120920, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 88 }, "end": { - "line": 3028, + "line": 3036, "column": 92 } } }, "property": { "type": "Identifier", - "start": 120407, - "end": 120428, + "start": 120921, + "end": 120942, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 93 }, "end": { - "line": 3028, + "line": 3036, "column": 114 }, "identifierName": "_enableIndexBucketing" @@ -113392,87 +114453,87 @@ }, { "type": "ExpressionStatement", - "start": 120451, - "end": 120494, + "start": 120965, + "end": 121008, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 20 }, "end": { - "line": 3029, + "line": 3037, "column": 63 } }, "expression": { "type": "AssignmentExpression", - "start": 120451, - "end": 120493, + "start": 120965, + "end": 121007, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 20 }, "end": { - "line": 3029, + "line": 3037, "column": 62 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 120451, - "end": 120483, + "start": 120965, + "end": 120997, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 20 }, "end": { - "line": 3029, + "line": 3037, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 120451, - "end": 120467, + "start": 120965, + "end": 120981, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 20 }, "end": { - "line": 3029, + "line": 3037, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 120451, - "end": 120455, + "start": 120965, + "end": 120969, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 20 }, "end": { - "line": 3029, + "line": 3037, "column": 24 } } }, "property": { "type": "Identifier", - "start": 120456, - "end": 120467, + "start": 120970, + "end": 120981, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 25 }, "end": { - "line": 3029, + "line": 3037, "column": 36 }, "identifierName": "_dtxBuckets" @@ -113483,29 +114544,29 @@ }, "property": { "type": "MemberExpression", - "start": 120468, - "end": 120482, + "start": 120982, + "end": 120996, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 37 }, "end": { - "line": 3029, + "line": 3037, "column": 51 } }, "object": { "type": "Identifier", - "start": 120468, - "end": 120471, + "start": 120982, + "end": 120985, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 37 }, "end": { - "line": 3029, + "line": 3037, "column": 40 }, "identifierName": "cfg" @@ -113514,15 +114575,15 @@ }, "property": { "type": "Identifier", - "start": 120472, - "end": 120482, + "start": 120986, + "end": 120996, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 41 }, "end": { - "line": 3029, + "line": 3037, "column": 51 }, "identifierName": "geometryId" @@ -113535,15 +114596,15 @@ }, "right": { "type": "Identifier", - "start": 120486, - "end": 120493, + "start": 121000, + "end": 121007, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 55 }, "end": { - "line": 3029, + "line": 3037, "column": 62 }, "identifierName": "buckets" @@ -113559,58 +114620,58 @@ }, { "type": "ExpressionStatement", - "start": 120529, - "end": 120551, + "start": 121043, + "end": 121065, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 16 }, "end": { - "line": 3031, + "line": 3039, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 120529, - "end": 120550, + "start": 121043, + "end": 121064, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 16 }, "end": { - "line": 3031, + "line": 3039, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 120529, - "end": 120540, + "start": 121043, + "end": 121054, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 16 }, "end": { - "line": 3031, + "line": 3039, "column": 27 } }, "object": { "type": "Identifier", - "start": 120529, - "end": 120532, + "start": 121043, + "end": 121046, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 16 }, "end": { - "line": 3031, + "line": 3039, "column": 19 }, "identifierName": "cfg" @@ -113619,15 +114680,15 @@ }, "property": { "type": "Identifier", - "start": 120533, - "end": 120540, + "start": 121047, + "end": 121054, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 20 }, "end": { - "line": 3031, + "line": 3039, "column": 27 }, "identifierName": "buckets" @@ -113638,15 +114699,15 @@ }, "right": { "type": "Identifier", - "start": 120543, - "end": 120550, + "start": 121057, + "end": 121064, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 30 }, "end": { - "line": 3031, + "line": 3039, "column": 37 }, "identifierName": "buckets" @@ -113660,73 +114721,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 120572, - "end": 121662, + "start": 121086, + "end": 122176, "loc": { "start": { - "line": 3033, + "line": 3041, "column": 19 }, "end": { - "line": 3055, + "line": 3063, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 120615, - "end": 120640, + "start": 121129, + "end": 121154, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 16 }, "end": { - "line": 3037, + "line": 3045, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 120615, - "end": 120639, + "start": 121129, + "end": 121153, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 16 }, "end": { - "line": 3037, + "line": 3045, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 120615, - "end": 120623, + "start": 121129, + "end": 121137, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 16 }, "end": { - "line": 3037, + "line": 3045, "column": 24 } }, "object": { "type": "Identifier", - "start": 120615, - "end": 120618, + "start": 121129, + "end": 121132, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 16 }, "end": { - "line": 3037, + "line": 3045, "column": 19 }, "identifierName": "cfg" @@ -113736,15 +114797,15 @@ }, "property": { "type": "Identifier", - "start": 120619, - "end": 120623, + "start": 121133, + "end": 121137, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 20 }, "end": { - "line": 3037, + "line": 3045, "column": 24 }, "identifierName": "type" @@ -113756,15 +114817,15 @@ }, "right": { "type": "Identifier", - "start": 120626, - "end": 120639, + "start": 121140, + "end": 121153, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 27 }, "end": { - "line": 3037, + "line": 3045, "column": 40 }, "identifierName": "VBO_INSTANCED" @@ -113777,15 +114838,15 @@ { "type": "CommentLine", "value": " VBO", - "start": 120591, - "end": 120597, + "start": 121105, + "end": 121111, "loc": { "start": { - "line": 3035, + "line": 3043, "column": 16 }, "end": { - "line": 3035, + "line": 3043, "column": 22 } } @@ -113795,15 +114856,15 @@ { "type": "CommentLine", "value": " PBR", - "start": 120658, - "end": 120664, + "start": 121172, + "end": 121178, "loc": { "start": { - "line": 3039, + "line": 3047, "column": 16 }, "end": { - "line": 3039, + "line": 3047, "column": 22 } } @@ -113812,58 +114873,58 @@ }, { "type": "ExpressionStatement", - "start": 120682, - "end": 120846, + "start": 121196, + "end": 121360, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 16 }, "end": { - "line": 3041, + "line": 3049, "column": 180 } }, "expression": { "type": "AssignmentExpression", - "start": 120682, - "end": 120845, + "start": 121196, + "end": 121359, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 16 }, "end": { - "line": 3041, + "line": 3049, "column": 179 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 120682, - "end": 120691, + "start": 121196, + "end": 121205, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 16 }, "end": { - "line": 3041, + "line": 3049, "column": 25 } }, "object": { "type": "Identifier", - "start": 120682, - "end": 120685, + "start": 121196, + "end": 121199, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 16 }, "end": { - "line": 3041, + "line": 3049, "column": 19 }, "identifierName": "cfg" @@ -113873,15 +114934,15 @@ }, "property": { "type": "Identifier", - "start": 120686, - "end": 120691, + "start": 121200, + "end": 121205, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 20 }, "end": { - "line": 3041, + "line": 3049, "column": 25 }, "identifierName": "color" @@ -113893,43 +114954,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 120694, - "end": 120845, + "start": 121208, + "end": 121359, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 28 }, "end": { - "line": 3041, + "line": 3049, "column": 179 } }, "test": { "type": "MemberExpression", - "start": 120695, - "end": 120704, + "start": 121209, + "end": 121218, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 29 }, "end": { - "line": 3041, + "line": 3049, "column": 38 } }, "object": { "type": "Identifier", - "start": 120695, - "end": 120698, + "start": 121209, + "end": 121212, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 29 }, "end": { - "line": 3041, + "line": 3049, "column": 32 }, "identifierName": "cfg" @@ -113938,15 +114999,15 @@ }, "property": { "type": "Identifier", - "start": 120699, - "end": 120704, + "start": 121213, + "end": 121218, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 33 }, "end": { - "line": 3041, + "line": 3049, "column": 38 }, "identifierName": "color" @@ -113956,34 +115017,34 @@ "computed": false, "extra": { "parenthesized": true, - "parenStart": 120694 + "parenStart": 121208 } }, "consequent": { "type": "NewExpression", - "start": 120708, - "end": 120820, + "start": 121222, + "end": 121334, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 42 }, "end": { - "line": 3041, + "line": 3049, "column": 154 } }, "callee": { "type": "Identifier", - "start": 120712, - "end": 120722, + "start": 121226, + "end": 121236, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 46 }, "end": { - "line": 3041, + "line": 3049, "column": 56 }, "identifierName": "Uint8Array" @@ -113993,58 +115054,58 @@ "arguments": [ { "type": "ArrayExpression", - "start": 120723, - "end": 120819, + "start": 121237, + "end": 121333, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 57 }, "end": { - "line": 3041, + "line": 3049, "column": 153 } }, "elements": [ { "type": "CallExpression", - "start": 120724, - "end": 120754, + "start": 121238, + "end": 121268, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 58 }, "end": { - "line": 3041, + "line": 3049, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 120724, - "end": 120734, + "start": 121238, + "end": 121248, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 58 }, "end": { - "line": 3041, + "line": 3049, "column": 68 } }, "object": { "type": "Identifier", - "start": 120724, - "end": 120728, + "start": 121238, + "end": 121242, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 58 }, "end": { - "line": 3041, + "line": 3049, "column": 62 }, "identifierName": "Math" @@ -114053,15 +115114,15 @@ }, "property": { "type": "Identifier", - "start": 120729, - "end": 120734, + "start": 121243, + "end": 121248, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 63 }, "end": { - "line": 3041, + "line": 3049, "column": 68 }, "identifierName": "floor" @@ -114073,57 +115134,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 120735, - "end": 120753, + "start": 121249, + "end": 121267, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 69 }, "end": { - "line": 3041, + "line": 3049, "column": 87 } }, "left": { "type": "MemberExpression", - "start": 120735, - "end": 120747, + "start": 121249, + "end": 121261, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 69 }, "end": { - "line": 3041, + "line": 3049, "column": 81 } }, "object": { "type": "MemberExpression", - "start": 120735, - "end": 120744, + "start": 121249, + "end": 121258, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 69 }, "end": { - "line": 3041, + "line": 3049, "column": 78 } }, "object": { "type": "Identifier", - "start": 120735, - "end": 120738, + "start": 121249, + "end": 121252, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 69 }, "end": { - "line": 3041, + "line": 3049, "column": 72 }, "identifierName": "cfg" @@ -114132,15 +115193,15 @@ }, "property": { "type": "Identifier", - "start": 120739, - "end": 120744, + "start": 121253, + "end": 121258, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 73 }, "end": { - "line": 3041, + "line": 3049, "column": 78 }, "identifierName": "color" @@ -114151,15 +115212,15 @@ }, "property": { "type": "NumericLiteral", - "start": 120745, - "end": 120746, + "start": 121259, + "end": 121260, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 79 }, "end": { - "line": 3041, + "line": 3049, "column": 80 } }, @@ -114174,15 +115235,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 120750, - "end": 120753, + "start": 121264, + "end": 121267, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 84 }, "end": { - "line": 3041, + "line": 3049, "column": 87 } }, @@ -114197,43 +115258,43 @@ }, { "type": "CallExpression", - "start": 120756, - "end": 120786, + "start": 121270, + "end": 121300, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 90 }, "end": { - "line": 3041, + "line": 3049, "column": 120 } }, "callee": { "type": "MemberExpression", - "start": 120756, - "end": 120766, + "start": 121270, + "end": 121280, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 90 }, "end": { - "line": 3041, + "line": 3049, "column": 100 } }, "object": { "type": "Identifier", - "start": 120756, - "end": 120760, + "start": 121270, + "end": 121274, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 90 }, "end": { - "line": 3041, + "line": 3049, "column": 94 }, "identifierName": "Math" @@ -114242,15 +115303,15 @@ }, "property": { "type": "Identifier", - "start": 120761, - "end": 120766, + "start": 121275, + "end": 121280, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 95 }, "end": { - "line": 3041, + "line": 3049, "column": 100 }, "identifierName": "floor" @@ -114262,57 +115323,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 120767, - "end": 120785, + "start": 121281, + "end": 121299, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 101 }, "end": { - "line": 3041, + "line": 3049, "column": 119 } }, "left": { "type": "MemberExpression", - "start": 120767, - "end": 120779, + "start": 121281, + "end": 121293, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 101 }, "end": { - "line": 3041, + "line": 3049, "column": 113 } }, "object": { "type": "MemberExpression", - "start": 120767, - "end": 120776, + "start": 121281, + "end": 121290, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 101 }, "end": { - "line": 3041, + "line": 3049, "column": 110 } }, "object": { "type": "Identifier", - "start": 120767, - "end": 120770, + "start": 121281, + "end": 121284, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 101 }, "end": { - "line": 3041, + "line": 3049, "column": 104 }, "identifierName": "cfg" @@ -114321,15 +115382,15 @@ }, "property": { "type": "Identifier", - "start": 120771, - "end": 120776, + "start": 121285, + "end": 121290, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 105 }, "end": { - "line": 3041, + "line": 3049, "column": 110 }, "identifierName": "color" @@ -114340,15 +115401,15 @@ }, "property": { "type": "NumericLiteral", - "start": 120777, - "end": 120778, + "start": 121291, + "end": 121292, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 111 }, "end": { - "line": 3041, + "line": 3049, "column": 112 } }, @@ -114363,15 +115424,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 120782, - "end": 120785, + "start": 121296, + "end": 121299, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 116 }, "end": { - "line": 3041, + "line": 3049, "column": 119 } }, @@ -114386,43 +115447,43 @@ }, { "type": "CallExpression", - "start": 120788, - "end": 120818, + "start": 121302, + "end": 121332, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 122 }, "end": { - "line": 3041, + "line": 3049, "column": 152 } }, "callee": { "type": "MemberExpression", - "start": 120788, - "end": 120798, + "start": 121302, + "end": 121312, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 122 }, "end": { - "line": 3041, + "line": 3049, "column": 132 } }, "object": { "type": "Identifier", - "start": 120788, - "end": 120792, + "start": 121302, + "end": 121306, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 122 }, "end": { - "line": 3041, + "line": 3049, "column": 126 }, "identifierName": "Math" @@ -114431,15 +115492,15 @@ }, "property": { "type": "Identifier", - "start": 120793, - "end": 120798, + "start": 121307, + "end": 121312, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 127 }, "end": { - "line": 3041, + "line": 3049, "column": 132 }, "identifierName": "floor" @@ -114451,57 +115512,57 @@ "arguments": [ { "type": "BinaryExpression", - "start": 120799, - "end": 120817, + "start": 121313, + "end": 121331, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 133 }, "end": { - "line": 3041, + "line": 3049, "column": 151 } }, "left": { "type": "MemberExpression", - "start": 120799, - "end": 120811, + "start": 121313, + "end": 121325, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 133 }, "end": { - "line": 3041, + "line": 3049, "column": 145 } }, "object": { "type": "MemberExpression", - "start": 120799, - "end": 120808, + "start": 121313, + "end": 121322, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 133 }, "end": { - "line": 3041, + "line": 3049, "column": 142 } }, "object": { "type": "Identifier", - "start": 120799, - "end": 120802, + "start": 121313, + "end": 121316, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 133 }, "end": { - "line": 3041, + "line": 3049, "column": 136 }, "identifierName": "cfg" @@ -114510,15 +115571,15 @@ }, "property": { "type": "Identifier", - "start": 120803, - "end": 120808, + "start": 121317, + "end": 121322, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 137 }, "end": { - "line": 3041, + "line": 3049, "column": 142 }, "identifierName": "color" @@ -114529,15 +115590,15 @@ }, "property": { "type": "NumericLiteral", - "start": 120809, - "end": 120810, + "start": 121323, + "end": 121324, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 143 }, "end": { - "line": 3041, + "line": 3049, "column": 144 } }, @@ -114552,15 +115613,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 120814, - "end": 120817, + "start": 121328, + "end": 121331, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 148 }, "end": { - "line": 3041, + "line": 3049, "column": 151 } }, @@ -114579,15 +115640,15 @@ }, "alternate": { "type": "Identifier", - "start": 120823, - "end": 120845, + "start": 121337, + "end": 121359, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 157 }, "end": { - "line": 3041, + "line": 3049, "column": 179 }, "identifierName": "defaultCompressedColor" @@ -114601,15 +115662,15 @@ { "type": "CommentLine", "value": " PBR", - "start": 120658, - "end": 120664, + "start": 121172, + "end": 121178, "loc": { "start": { - "line": 3039, + "line": 3047, "column": 16 }, "end": { - "line": 3039, + "line": 3047, "column": 22 } } @@ -114618,58 +115679,58 @@ }, { "type": "ExpressionStatement", - "start": 120863, - "end": 120967, + "start": 121377, + "end": 121481, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 16 }, "end": { - "line": 3042, + "line": 3050, "column": 120 } }, "expression": { "type": "AssignmentExpression", - "start": 120863, - "end": 120966, + "start": 121377, + "end": 121480, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 16 }, "end": { - "line": 3042, + "line": 3050, "column": 119 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 120863, - "end": 120874, + "start": 121377, + "end": 121388, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 16 }, "end": { - "line": 3042, + "line": 3050, "column": 27 } }, "object": { "type": "Identifier", - "start": 120863, - "end": 120866, + "start": 121377, + "end": 121380, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 16 }, "end": { - "line": 3042, + "line": 3050, "column": 19 }, "identifierName": "cfg" @@ -114678,15 +115739,15 @@ }, "property": { "type": "Identifier", - "start": 120867, - "end": 120874, + "start": 121381, + "end": 121388, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 20 }, "end": { - "line": 3042, + "line": 3050, "column": 27 }, "identifierName": "opacity" @@ -114697,71 +115758,71 @@ }, "right": { "type": "ConditionalExpression", - "start": 120877, - "end": 120966, + "start": 121391, + "end": 121480, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 30 }, "end": { - "line": 3042, + "line": 3050, "column": 119 } }, "test": { "type": "LogicalExpression", - "start": 120878, - "end": 120927, + "start": 121392, + "end": 121441, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 31 }, "end": { - "line": 3042, + "line": 3050, "column": 80 } }, "left": { "type": "BinaryExpression", - "start": 120878, - "end": 120903, + "start": 121392, + "end": 121417, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 31 }, "end": { - "line": 3042, + "line": 3050, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 120878, - "end": 120889, + "start": 121392, + "end": 121403, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 31 }, "end": { - "line": 3042, + "line": 3050, "column": 42 } }, "object": { "type": "Identifier", - "start": 120878, - "end": 120881, + "start": 121392, + "end": 121395, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 31 }, "end": { - "line": 3042, + "line": 3050, "column": 34 }, "identifierName": "cfg" @@ -114770,15 +115831,15 @@ }, "property": { "type": "Identifier", - "start": 120882, - "end": 120889, + "start": 121396, + "end": 121403, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 35 }, "end": { - "line": 3042, + "line": 3050, "column": 42 }, "identifierName": "opacity" @@ -114790,15 +115851,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 120894, - "end": 120903, + "start": 121408, + "end": 121417, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 47 }, "end": { - "line": 3042, + "line": 3050, "column": 56 }, "identifierName": "undefined" @@ -114809,43 +115870,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 120907, - "end": 120927, + "start": 121421, + "end": 121441, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 60 }, "end": { - "line": 3042, + "line": 3050, "column": 80 } }, "left": { "type": "MemberExpression", - "start": 120907, - "end": 120918, + "start": 121421, + "end": 121432, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 60 }, "end": { - "line": 3042, + "line": 3050, "column": 71 } }, "object": { "type": "Identifier", - "start": 120907, - "end": 120910, + "start": 121421, + "end": 121424, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 60 }, "end": { - "line": 3042, + "line": 3050, "column": 63 }, "identifierName": "cfg" @@ -114854,15 +115915,15 @@ }, "property": { "type": "Identifier", - "start": 120911, - "end": 120918, + "start": 121425, + "end": 121432, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 64 }, "end": { - "line": 3042, + "line": 3050, "column": 71 }, "identifierName": "opacity" @@ -114874,15 +115935,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 120923, - "end": 120927, + "start": 121437, + "end": 121441, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 76 }, "end": { - "line": 3042, + "line": 3050, "column": 80 } } @@ -114890,48 +115951,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 120877 + "parenStart": 121391 } }, "consequent": { "type": "CallExpression", - "start": 120931, - "end": 120960, + "start": 121445, + "end": 121474, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 84 }, "end": { - "line": 3042, + "line": 3050, "column": 113 } }, "callee": { "type": "MemberExpression", - "start": 120931, - "end": 120941, + "start": 121445, + "end": 121455, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 84 }, "end": { - "line": 3042, + "line": 3050, "column": 94 } }, "object": { "type": "Identifier", - "start": 120931, - "end": 120935, + "start": 121445, + "end": 121449, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 84 }, "end": { - "line": 3042, + "line": 3050, "column": 88 }, "identifierName": "Math" @@ -114940,15 +116001,15 @@ }, "property": { "type": "Identifier", - "start": 120936, - "end": 120941, + "start": 121450, + "end": 121455, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 89 }, "end": { - "line": 3042, + "line": 3050, "column": 94 }, "identifierName": "floor" @@ -114960,43 +116021,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 120942, - "end": 120959, + "start": 121456, + "end": 121473, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 95 }, "end": { - "line": 3042, + "line": 3050, "column": 112 } }, "left": { "type": "MemberExpression", - "start": 120942, - "end": 120953, + "start": 121456, + "end": 121467, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 95 }, "end": { - "line": 3042, + "line": 3050, "column": 106 } }, "object": { "type": "Identifier", - "start": 120942, - "end": 120945, + "start": 121456, + "end": 121459, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 95 }, "end": { - "line": 3042, + "line": 3050, "column": 98 }, "identifierName": "cfg" @@ -115005,15 +116066,15 @@ }, "property": { "type": "Identifier", - "start": 120946, - "end": 120953, + "start": 121460, + "end": 121467, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 99 }, "end": { - "line": 3042, + "line": 3050, "column": 106 }, "identifierName": "opacity" @@ -115025,15 +116086,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 120956, - "end": 120959, + "start": 121470, + "end": 121473, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 109 }, "end": { - "line": 3042, + "line": 3050, "column": 112 } }, @@ -115048,15 +116109,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 120963, - "end": 120966, + "start": 121477, + "end": 121480, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 116 }, "end": { - "line": 3042, + "line": 3050, "column": 119 } }, @@ -115071,58 +116132,58 @@ }, { "type": "ExpressionStatement", - "start": 120984, - "end": 121090, + "start": 121498, + "end": 121604, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 16 }, "end": { - "line": 3043, + "line": 3051, "column": 122 } }, "expression": { "type": "AssignmentExpression", - "start": 120984, - "end": 121089, + "start": 121498, + "end": 121603, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 16 }, "end": { - "line": 3043, + "line": 3051, "column": 121 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 120984, - "end": 120996, + "start": 121498, + "end": 121510, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 16 }, "end": { - "line": 3043, + "line": 3051, "column": 28 } }, "object": { "type": "Identifier", - "start": 120984, - "end": 120987, + "start": 121498, + "end": 121501, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 16 }, "end": { - "line": 3043, + "line": 3051, "column": 19 }, "identifierName": "cfg" @@ -115131,15 +116192,15 @@ }, "property": { "type": "Identifier", - "start": 120988, - "end": 120996, + "start": 121502, + "end": 121510, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 20 }, "end": { - "line": 3043, + "line": 3051, "column": 28 }, "identifierName": "metallic" @@ -115150,71 +116211,71 @@ }, "right": { "type": "ConditionalExpression", - "start": 120999, - "end": 121089, + "start": 121513, + "end": 121603, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 31 }, "end": { - "line": 3043, + "line": 3051, "column": 121 } }, "test": { "type": "LogicalExpression", - "start": 121000, - "end": 121051, + "start": 121514, + "end": 121565, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 32 }, "end": { - "line": 3043, + "line": 3051, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 121000, - "end": 121026, + "start": 121514, + "end": 121540, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 32 }, "end": { - "line": 3043, + "line": 3051, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 121000, - "end": 121012, + "start": 121514, + "end": 121526, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 32 }, "end": { - "line": 3043, + "line": 3051, "column": 44 } }, "object": { "type": "Identifier", - "start": 121000, - "end": 121003, + "start": 121514, + "end": 121517, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 32 }, "end": { - "line": 3043, + "line": 3051, "column": 35 }, "identifierName": "cfg" @@ -115223,15 +116284,15 @@ }, "property": { "type": "Identifier", - "start": 121004, - "end": 121012, + "start": 121518, + "end": 121526, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 36 }, "end": { - "line": 3043, + "line": 3051, "column": 44 }, "identifierName": "metallic" @@ -115243,15 +116304,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 121017, - "end": 121026, + "start": 121531, + "end": 121540, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 49 }, "end": { - "line": 3043, + "line": 3051, "column": 58 }, "identifierName": "undefined" @@ -115262,43 +116323,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 121030, - "end": 121051, + "start": 121544, + "end": 121565, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 62 }, "end": { - "line": 3043, + "line": 3051, "column": 83 } }, "left": { "type": "MemberExpression", - "start": 121030, - "end": 121042, + "start": 121544, + "end": 121556, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 62 }, "end": { - "line": 3043, + "line": 3051, "column": 74 } }, "object": { "type": "Identifier", - "start": 121030, - "end": 121033, + "start": 121544, + "end": 121547, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 62 }, "end": { - "line": 3043, + "line": 3051, "column": 65 }, "identifierName": "cfg" @@ -115307,15 +116368,15 @@ }, "property": { "type": "Identifier", - "start": 121034, - "end": 121042, + "start": 121548, + "end": 121556, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 66 }, "end": { - "line": 3043, + "line": 3051, "column": 74 }, "identifierName": "metallic" @@ -115327,15 +116388,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 121047, - "end": 121051, + "start": 121561, + "end": 121565, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 79 }, "end": { - "line": 3043, + "line": 3051, "column": 83 } } @@ -115343,48 +116404,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 120999 + "parenStart": 121513 } }, "consequent": { "type": "CallExpression", - "start": 121055, - "end": 121085, + "start": 121569, + "end": 121599, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 87 }, "end": { - "line": 3043, + "line": 3051, "column": 117 } }, "callee": { "type": "MemberExpression", - "start": 121055, - "end": 121065, + "start": 121569, + "end": 121579, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 87 }, "end": { - "line": 3043, + "line": 3051, "column": 97 } }, "object": { "type": "Identifier", - "start": 121055, - "end": 121059, + "start": 121569, + "end": 121573, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 87 }, "end": { - "line": 3043, + "line": 3051, "column": 91 }, "identifierName": "Math" @@ -115393,15 +116454,15 @@ }, "property": { "type": "Identifier", - "start": 121060, - "end": 121065, + "start": 121574, + "end": 121579, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 92 }, "end": { - "line": 3043, + "line": 3051, "column": 97 }, "identifierName": "floor" @@ -115413,43 +116474,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 121066, - "end": 121084, + "start": 121580, + "end": 121598, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 98 }, "end": { - "line": 3043, + "line": 3051, "column": 116 } }, "left": { "type": "MemberExpression", - "start": 121066, - "end": 121078, + "start": 121580, + "end": 121592, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 98 }, "end": { - "line": 3043, + "line": 3051, "column": 110 } }, "object": { "type": "Identifier", - "start": 121066, - "end": 121069, + "start": 121580, + "end": 121583, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 98 }, "end": { - "line": 3043, + "line": 3051, "column": 101 }, "identifierName": "cfg" @@ -115458,15 +116519,15 @@ }, "property": { "type": "Identifier", - "start": 121070, - "end": 121078, + "start": 121584, + "end": 121592, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 102 }, "end": { - "line": 3043, + "line": 3051, "column": 110 }, "identifierName": "metallic" @@ -115478,15 +116539,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 121081, - "end": 121084, + "start": 121595, + "end": 121598, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 113 }, "end": { - "line": 3043, + "line": 3051, "column": 116 } }, @@ -115501,15 +116562,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 121088, - "end": 121089, + "start": 121602, + "end": 121603, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 120 }, "end": { - "line": 3043, + "line": 3051, "column": 121 } }, @@ -115524,58 +116585,58 @@ }, { "type": "ExpressionStatement", - "start": 121107, - "end": 121219, + "start": 121621, + "end": 121733, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 16 }, "end": { - "line": 3044, + "line": 3052, "column": 128 } }, "expression": { "type": "AssignmentExpression", - "start": 121107, - "end": 121218, + "start": 121621, + "end": 121732, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 16 }, "end": { - "line": 3044, + "line": 3052, "column": 127 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 121107, - "end": 121120, + "start": 121621, + "end": 121634, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 16 }, "end": { - "line": 3044, + "line": 3052, "column": 29 } }, "object": { "type": "Identifier", - "start": 121107, - "end": 121110, + "start": 121621, + "end": 121624, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 16 }, "end": { - "line": 3044, + "line": 3052, "column": 19 }, "identifierName": "cfg" @@ -115584,15 +116645,15 @@ }, "property": { "type": "Identifier", - "start": 121111, - "end": 121120, + "start": 121625, + "end": 121634, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 20 }, "end": { - "line": 3044, + "line": 3052, "column": 29 }, "identifierName": "roughness" @@ -115603,71 +116664,71 @@ }, "right": { "type": "ConditionalExpression", - "start": 121123, - "end": 121218, + "start": 121637, + "end": 121732, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 32 }, "end": { - "line": 3044, + "line": 3052, "column": 127 } }, "test": { "type": "LogicalExpression", - "start": 121124, - "end": 121177, + "start": 121638, + "end": 121691, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 33 }, "end": { - "line": 3044, + "line": 3052, "column": 86 } }, "left": { "type": "BinaryExpression", - "start": 121124, - "end": 121151, + "start": 121638, + "end": 121665, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 33 }, "end": { - "line": 3044, + "line": 3052, "column": 60 } }, "left": { "type": "MemberExpression", - "start": 121124, - "end": 121137, + "start": 121638, + "end": 121651, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 33 }, "end": { - "line": 3044, + "line": 3052, "column": 46 } }, "object": { "type": "Identifier", - "start": 121124, - "end": 121127, + "start": 121638, + "end": 121641, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 33 }, "end": { - "line": 3044, + "line": 3052, "column": 36 }, "identifierName": "cfg" @@ -115676,15 +116737,15 @@ }, "property": { "type": "Identifier", - "start": 121128, - "end": 121137, + "start": 121642, + "end": 121651, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 37 }, "end": { - "line": 3044, + "line": 3052, "column": 46 }, "identifierName": "roughness" @@ -115696,15 +116757,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 121142, - "end": 121151, + "start": 121656, + "end": 121665, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 51 }, "end": { - "line": 3044, + "line": 3052, "column": 60 }, "identifierName": "undefined" @@ -115715,43 +116776,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 121155, - "end": 121177, + "start": 121669, + "end": 121691, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 64 }, "end": { - "line": 3044, + "line": 3052, "column": 86 } }, "left": { "type": "MemberExpression", - "start": 121155, - "end": 121168, + "start": 121669, + "end": 121682, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 64 }, "end": { - "line": 3044, + "line": 3052, "column": 77 } }, "object": { "type": "Identifier", - "start": 121155, - "end": 121158, + "start": 121669, + "end": 121672, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 64 }, "end": { - "line": 3044, + "line": 3052, "column": 67 }, "identifierName": "cfg" @@ -115760,15 +116821,15 @@ }, "property": { "type": "Identifier", - "start": 121159, - "end": 121168, + "start": 121673, + "end": 121682, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 68 }, "end": { - "line": 3044, + "line": 3052, "column": 77 }, "identifierName": "roughness" @@ -115780,15 +116841,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 121173, - "end": 121177, + "start": 121687, + "end": 121691, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 82 }, "end": { - "line": 3044, + "line": 3052, "column": 86 } } @@ -115796,48 +116857,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 121123 + "parenStart": 121637 } }, "consequent": { "type": "CallExpression", - "start": 121181, - "end": 121212, + "start": 121695, + "end": 121726, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 90 }, "end": { - "line": 3044, + "line": 3052, "column": 121 } }, "callee": { "type": "MemberExpression", - "start": 121181, - "end": 121191, + "start": 121695, + "end": 121705, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 90 }, "end": { - "line": 3044, + "line": 3052, "column": 100 } }, "object": { "type": "Identifier", - "start": 121181, - "end": 121185, + "start": 121695, + "end": 121699, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 90 }, "end": { - "line": 3044, + "line": 3052, "column": 94 }, "identifierName": "Math" @@ -115846,15 +116907,15 @@ }, "property": { "type": "Identifier", - "start": 121186, - "end": 121191, + "start": 121700, + "end": 121705, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 95 }, "end": { - "line": 3044, + "line": 3052, "column": 100 }, "identifierName": "floor" @@ -115866,43 +116927,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 121192, - "end": 121211, + "start": 121706, + "end": 121725, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 101 }, "end": { - "line": 3044, + "line": 3052, "column": 120 } }, "left": { "type": "MemberExpression", - "start": 121192, - "end": 121205, + "start": 121706, + "end": 121719, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 101 }, "end": { - "line": 3044, + "line": 3052, "column": 114 } }, "object": { "type": "Identifier", - "start": 121192, - "end": 121195, + "start": 121706, + "end": 121709, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 101 }, "end": { - "line": 3044, + "line": 3052, "column": 104 }, "identifierName": "cfg" @@ -115911,15 +116972,15 @@ }, "property": { "type": "Identifier", - "start": 121196, - "end": 121205, + "start": 121710, + "end": 121719, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 105 }, "end": { - "line": 3044, + "line": 3052, "column": 114 }, "identifierName": "roughness" @@ -115931,15 +116992,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 121208, - "end": 121211, + "start": 121722, + "end": 121725, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 117 }, "end": { - "line": 3044, + "line": 3052, "column": 120 } }, @@ -115954,15 +117015,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 121215, - "end": 121218, + "start": 121729, + "end": 121732, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 124 }, "end": { - "line": 3044, + "line": 3052, "column": 127 } }, @@ -115978,15 +117039,15 @@ { "type": "CommentLine", "value": " TEXTURE", - "start": 121237, - "end": 121247, + "start": 121751, + "end": 121761, "loc": { "start": { - "line": 3046, + "line": 3054, "column": 16 }, "end": { - "line": 3046, + "line": 3054, "column": 26 } } @@ -115995,43 +117056,43 @@ }, { "type": "IfStatement", - "start": 121265, - "end": 121648, + "start": 121779, + "end": 122162, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 16 }, "end": { - "line": 3054, + "line": 3062, "column": 17 } }, "test": { "type": "MemberExpression", - "start": 121269, - "end": 121285, + "start": 121783, + "end": 121799, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 20 }, "end": { - "line": 3048, + "line": 3056, "column": 36 } }, "object": { "type": "Identifier", - "start": 121269, - "end": 121272, + "start": 121783, + "end": 121786, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 20 }, "end": { - "line": 3048, + "line": 3056, "column": 23 }, "identifierName": "cfg" @@ -116041,15 +117102,15 @@ }, "property": { "type": "Identifier", - "start": 121273, - "end": 121285, + "start": 121787, + "end": 121799, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 24 }, "end": { - "line": 3048, + "line": 3056, "column": 36 }, "identifierName": "textureSetId" @@ -116061,73 +117122,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 121287, - "end": 121648, + "start": 121801, + "end": 122162, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 38 }, "end": { - "line": 3054, + "line": 3062, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 121309, - "end": 121362, + "start": 121823, + "end": 121876, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 20 }, "end": { - "line": 3049, + "line": 3057, "column": 73 } }, "expression": { "type": "AssignmentExpression", - "start": 121309, - "end": 121361, + "start": 121823, + "end": 121875, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 20 }, "end": { - "line": 3049, + "line": 3057, "column": 72 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 121309, - "end": 121323, + "start": 121823, + "end": 121837, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 20 }, "end": { - "line": 3049, + "line": 3057, "column": 34 } }, "object": { "type": "Identifier", - "start": 121309, - "end": 121312, + "start": 121823, + "end": 121826, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 20 }, "end": { - "line": 3049, + "line": 3057, "column": 23 }, "identifierName": "cfg" @@ -116136,15 +117197,15 @@ }, "property": { "type": "Identifier", - "start": 121313, - "end": 121323, + "start": 121827, + "end": 121837, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 24 }, "end": { - "line": 3049, + "line": 3057, "column": 34 }, "identifierName": "textureSet" @@ -116155,58 +117216,58 @@ }, "right": { "type": "MemberExpression", - "start": 121326, - "end": 121361, + "start": 121840, + "end": 121875, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 37 }, "end": { - "line": 3049, + "line": 3057, "column": 72 } }, "object": { "type": "MemberExpression", - "start": 121326, - "end": 121343, + "start": 121840, + "end": 121857, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 37 }, "end": { - "line": 3049, + "line": 3057, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 121326, - "end": 121330, + "start": 121840, + "end": 121844, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 37 }, "end": { - "line": 3049, + "line": 3057, "column": 41 } } }, "property": { "type": "Identifier", - "start": 121331, - "end": 121343, + "start": 121845, + "end": 121857, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 42 }, "end": { - "line": 3049, + "line": 3057, "column": 54 }, "identifierName": "_textureSets" @@ -116217,29 +117278,29 @@ }, "property": { "type": "MemberExpression", - "start": 121344, - "end": 121360, + "start": 121858, + "end": 121874, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 55 }, "end": { - "line": 3049, + "line": 3057, "column": 71 } }, "object": { "type": "Identifier", - "start": 121344, - "end": 121347, + "start": 121858, + "end": 121861, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 55 }, "end": { - "line": 3049, + "line": 3057, "column": 58 }, "identifierName": "cfg" @@ -116248,15 +117309,15 @@ }, "property": { "type": "Identifier", - "start": 121348, - "end": 121360, + "start": 121862, + "end": 121874, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 59 }, "end": { - "line": 3049, + "line": 3057, "column": 71 }, "identifierName": "textureSetId" @@ -116272,15 +117333,15 @@ { "type": "CommentLine", "value": " if (!cfg.textureSet) {", - "start": 121383, - "end": 121408, + "start": 121897, + "end": 121922, "loc": { "start": { - "line": 3050, + "line": 3058, "column": 20 }, "end": { - "line": 3050, + "line": 3058, "column": 45 } } @@ -116288,15 +117349,15 @@ { "type": "CommentLine", "value": " this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`);", - "start": 121429, - "end": 121564, + "start": 121943, + "end": 122078, "loc": { "start": { - "line": 3051, + "line": 3059, "column": 20 }, "end": { - "line": 3051, + "line": 3059, "column": 155 } } @@ -116304,15 +117365,15 @@ { "type": "CommentLine", "value": " return false;", - "start": 121585, - "end": 121605, + "start": 122099, + "end": 122119, "loc": { "start": { - "line": 3052, + "line": 3060, "column": 20 }, "end": { - "line": 3052, + "line": 3060, "column": 40 } } @@ -116320,15 +117381,15 @@ { "type": "CommentLine", "value": " }", - "start": 121626, - "end": 121630, + "start": 122140, + "end": 122144, "loc": { "start": { - "line": 3053, + "line": 3061, "column": 20 }, "end": { - "line": 3053, + "line": 3061, "column": 24 } } @@ -116343,15 +117404,15 @@ { "type": "CommentLine", "value": " TEXTURE", - "start": 121237, - "end": 121247, + "start": 121751, + "end": 121761, "loc": { "start": { - "line": 3046, + "line": 3054, "column": 16 }, "end": { - "line": 3046, + "line": 3054, "column": 26 } } @@ -116368,58 +117429,58 @@ }, { "type": "ExpressionStatement", - "start": 121682, - "end": 121730, + "start": 122196, + "end": 122244, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 8 }, "end": { - "line": 3058, + "line": 3066, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 121682, - "end": 121729, + "start": 122196, + "end": 122243, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 8 }, "end": { - "line": 3058, + "line": 3066, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 121682, - "end": 121699, + "start": 122196, + "end": 122213, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 8 }, "end": { - "line": 3058, + "line": 3066, "column": 25 } }, "object": { "type": "Identifier", - "start": 121682, - "end": 121685, + "start": 122196, + "end": 122199, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 8 }, "end": { - "line": 3058, + "line": 3066, "column": 11 }, "identifierName": "cfg" @@ -116428,15 +117489,15 @@ }, "property": { "type": "Identifier", - "start": 121686, - "end": 121699, + "start": 122200, + "end": 122213, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 12 }, "end": { - "line": 3058, + "line": 3066, "column": 25 }, "identifierName": "numPrimitives" @@ -116447,58 +117508,58 @@ }, "right": { "type": "CallExpression", - "start": 121702, - "end": 121729, + "start": 122216, + "end": 122243, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 28 }, "end": { - "line": 3058, + "line": 3066, "column": 55 } }, "callee": { "type": "MemberExpression", - "start": 121702, - "end": 121724, + "start": 122216, + "end": 122238, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 28 }, "end": { - "line": 3058, + "line": 3066, "column": 50 } }, "object": { "type": "ThisExpression", - "start": 121702, - "end": 121706, + "start": 122216, + "end": 122220, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 28 }, "end": { - "line": 3058, + "line": 3066, "column": 32 } } }, "property": { "type": "Identifier", - "start": 121707, - "end": 121724, + "start": 122221, + "end": 122238, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 33 }, "end": { - "line": 3058, + "line": 3066, "column": 50 }, "identifierName": "_getNumPrimitives" @@ -116510,15 +117571,15 @@ "arguments": [ { "type": "Identifier", - "start": 121725, - "end": 121728, + "start": 122239, + "end": 122242, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 51 }, "end": { - "line": 3058, + "line": 3066, "column": 54 }, "identifierName": "cfg" @@ -116531,72 +117592,72 @@ }, { "type": "ReturnStatement", - "start": 121740, - "end": 121769, + "start": 122254, + "end": 122283, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 8 }, "end": { - "line": 3060, + "line": 3068, "column": 37 } }, "argument": { "type": "CallExpression", - "start": 121747, - "end": 121768, + "start": 122261, + "end": 122282, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 15 }, "end": { - "line": 3060, + "line": 3068, "column": 36 } }, "callee": { "type": "MemberExpression", - "start": 121747, - "end": 121763, + "start": 122261, + "end": 122277, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 15 }, "end": { - "line": 3060, + "line": 3068, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 121747, - "end": 121751, + "start": 122261, + "end": 122265, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 15 }, "end": { - "line": 3060, + "line": 3068, "column": 19 } } }, "property": { "type": "Identifier", - "start": 121752, - "end": 121763, + "start": 122266, + "end": 122277, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 20 }, "end": { - "line": 3060, + "line": 3068, "column": 31 }, "identifierName": "_createMesh" @@ -116608,15 +117669,15 @@ "arguments": [ { "type": "Identifier", - "start": 121764, - "end": 121767, + "start": 122278, + "end": 122281, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 32 }, "end": { - "line": 3060, + "line": 3068, "column": 35 }, "identifierName": "cfg" @@ -116632,16 +117693,16 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n ", - "start": 100986, - "end": 106680, + "value": "*\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.quaternion] Rotation of the mesh as a quaternion. Overridden by ````rotation````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n ", + "start": 101022, + "end": 106829, "loc": { "start": { - "line": 2693, + "line": 2694, "column": 4 }, "end": { - "line": 2732, + "line": 2734, "column": 7 } } @@ -116650,15 +117711,15 @@ }, { "type": "ClassMethod", - "start": 121781, - "end": 123107, + "start": 122295, + "end": 123621, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 4 }, "end": { - "line": 3096, + "line": 3104, "column": 5 } }, @@ -116666,15 +117727,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 121781, - "end": 121792, + "start": 122295, + "end": 122306, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 4 }, "end": { - "line": 3063, + "line": 3071, "column": 15 }, "identifierName": "_createMesh" @@ -116689,15 +117750,15 @@ "params": [ { "type": "Identifier", - "start": 121793, - "end": 121796, + "start": 122307, + "end": 122310, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 16 }, "end": { - "line": 3063, + "line": 3071, "column": 19 }, "identifierName": "cfg" @@ -116707,59 +117768,59 @@ ], "body": { "type": "BlockStatement", - "start": 121798, - "end": 123107, + "start": 122312, + "end": 123621, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 21 }, "end": { - "line": 3096, + "line": 3104, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 121808, - "end": 121909, + "start": 122322, + "end": 122423, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 8 }, "end": { - "line": 3064, + "line": 3072, "column": 109 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 121814, - "end": 121908, + "start": 122328, + "end": 122422, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 14 }, "end": { - "line": 3064, + "line": 3072, "column": 108 } }, "id": { "type": "Identifier", - "start": 121814, - "end": 121818, + "start": 122328, + "end": 122332, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 14 }, "end": { - "line": 3064, + "line": 3072, "column": 18 }, "identifierName": "mesh" @@ -116768,29 +117829,29 @@ }, "init": { "type": "NewExpression", - "start": 121821, - "end": 121908, + "start": 122335, + "end": 122422, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 21 }, "end": { - "line": 3064, + "line": 3072, "column": 108 } }, "callee": { "type": "Identifier", - "start": 121825, - "end": 121839, + "start": 122339, + "end": 122353, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 25 }, "end": { - "line": 3064, + "line": 3072, "column": 39 }, "identifierName": "SceneModelMesh" @@ -116800,44 +117861,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 121840, - "end": 121844, + "start": 122354, + "end": 122358, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 40 }, "end": { - "line": 3064, + "line": 3072, "column": 44 } } }, { "type": "MemberExpression", - "start": 121846, - "end": 121852, + "start": 122360, + "end": 122366, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 46 }, "end": { - "line": 3064, + "line": 3072, "column": 52 } }, "object": { "type": "Identifier", - "start": 121846, - "end": 121849, + "start": 122360, + "end": 122363, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 46 }, "end": { - "line": 3064, + "line": 3072, "column": 49 }, "identifierName": "cfg" @@ -116846,15 +117907,15 @@ }, "property": { "type": "Identifier", - "start": 121850, - "end": 121852, + "start": 122364, + "end": 122366, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 50 }, "end": { - "line": 3064, + "line": 3072, "column": 52 }, "identifierName": "id" @@ -116865,29 +117926,29 @@ }, { "type": "MemberExpression", - "start": 121854, - "end": 121863, + "start": 122368, + "end": 122377, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 54 }, "end": { - "line": 3064, + "line": 3072, "column": 63 } }, "object": { "type": "Identifier", - "start": 121854, - "end": 121857, + "start": 122368, + "end": 122371, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 54 }, "end": { - "line": 3064, + "line": 3072, "column": 57 }, "identifierName": "cfg" @@ -116896,15 +117957,15 @@ }, "property": { "type": "Identifier", - "start": 121858, - "end": 121863, + "start": 122372, + "end": 122377, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 58 }, "end": { - "line": 3064, + "line": 3072, "column": 63 }, "identifierName": "color" @@ -116915,29 +117976,29 @@ }, { "type": "MemberExpression", - "start": 121865, - "end": 121876, + "start": 122379, + "end": 122390, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 65 }, "end": { - "line": 3064, + "line": 3072, "column": 76 } }, "object": { "type": "Identifier", - "start": 121865, - "end": 121868, + "start": 122379, + "end": 122382, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 65 }, "end": { - "line": 3064, + "line": 3072, "column": 68 }, "identifierName": "cfg" @@ -116946,15 +118007,15 @@ }, "property": { "type": "Identifier", - "start": 121869, - "end": 121876, + "start": 122383, + "end": 122390, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 69 }, "end": { - "line": 3064, + "line": 3072, "column": 76 }, "identifierName": "opacity" @@ -116965,29 +118026,29 @@ }, { "type": "MemberExpression", - "start": 121878, - "end": 121891, + "start": 122392, + "end": 122405, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 78 }, "end": { - "line": 3064, + "line": 3072, "column": 91 } }, "object": { "type": "Identifier", - "start": 121878, - "end": 121881, + "start": 122392, + "end": 122395, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 78 }, "end": { - "line": 3064, + "line": 3072, "column": 81 }, "identifierName": "cfg" @@ -116996,15 +118057,15 @@ }, "property": { "type": "Identifier", - "start": 121882, - "end": 121891, + "start": 122396, + "end": 122405, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 82 }, "end": { - "line": 3064, + "line": 3072, "column": 91 }, "identifierName": "transform" @@ -117015,29 +118076,29 @@ }, { "type": "MemberExpression", - "start": 121893, - "end": 121907, + "start": 122407, + "end": 122421, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 93 }, "end": { - "line": 3064, + "line": 3072, "column": 107 } }, "object": { "type": "Identifier", - "start": 121893, - "end": 121896, + "start": 122407, + "end": 122410, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 93 }, "end": { - "line": 3064, + "line": 3072, "column": 96 }, "identifierName": "cfg" @@ -117046,15 +118107,15 @@ }, "property": { "type": "Identifier", - "start": 121897, - "end": 121907, + "start": 122411, + "end": 122421, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 97 }, "end": { - "line": 3064, + "line": 3072, "column": 107 }, "identifierName": "textureSet" @@ -117071,58 +118132,58 @@ }, { "type": "ExpressionStatement", - "start": 121918, - "end": 121969, + "start": 122432, + "end": 122483, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 8 }, "end": { - "line": 3065, + "line": 3073, "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 121918, - "end": 121968, + "start": 122432, + "end": 122482, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 8 }, "end": { - "line": 3065, + "line": 3073, "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 121918, - "end": 121929, + "start": 122432, + "end": 122443, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 8 }, "end": { - "line": 3065, + "line": 3073, "column": 19 } }, "object": { "type": "Identifier", - "start": 121918, - "end": 121922, + "start": 122432, + "end": 122436, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 8 }, "end": { - "line": 3065, + "line": 3073, "column": 12 }, "identifierName": "mesh" @@ -117131,15 +118192,15 @@ }, "property": { "type": "Identifier", - "start": 121923, - "end": 121929, + "start": 122437, + "end": 122443, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 13 }, "end": { - "line": 3065, + "line": 3073, "column": 19 }, "identifierName": "pickId" @@ -117150,86 +118211,86 @@ }, "right": { "type": "CallExpression", - "start": 121932, - "end": 121968, + "start": 122446, + "end": 122482, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 22 }, "end": { - "line": 3065, + "line": 3073, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 121932, - "end": 121962, + "start": 122446, + "end": 122476, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 22 }, "end": { - "line": 3065, + "line": 3073, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 121932, - "end": 121952, + "start": 122446, + "end": 122466, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 22 }, "end": { - "line": 3065, + "line": 3073, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 121932, - "end": 121942, + "start": 122446, + "end": 122456, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 22 }, "end": { - "line": 3065, + "line": 3073, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 121932, - "end": 121936, + "start": 122446, + "end": 122450, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 22 }, "end": { - "line": 3065, + "line": 3073, "column": 26 } } }, "property": { "type": "Identifier", - "start": 121937, - "end": 121942, + "start": 122451, + "end": 122456, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 27 }, "end": { - "line": 3065, + "line": 3073, "column": 32 }, "identifierName": "scene" @@ -117240,15 +118301,15 @@ }, "property": { "type": "Identifier", - "start": 121943, - "end": 121952, + "start": 122457, + "end": 122466, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 33 }, "end": { - "line": 3065, + "line": 3073, "column": 42 }, "identifierName": "_renderer" @@ -117259,15 +118320,15 @@ }, "property": { "type": "Identifier", - "start": 121953, - "end": 121962, + "start": 122467, + "end": 122476, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 43 }, "end": { - "line": 3065, + "line": 3073, "column": 52 }, "identifierName": "getPickID" @@ -117279,15 +118340,15 @@ "arguments": [ { "type": "Identifier", - "start": 121963, - "end": 121967, + "start": 122477, + "end": 122481, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 53 }, "end": { - "line": 3065, + "line": 3073, "column": 57 }, "identifierName": "mesh" @@ -117300,44 +118361,44 @@ }, { "type": "VariableDeclaration", - "start": 121978, - "end": 122005, + "start": 122492, + "end": 122519, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 8 }, "end": { - "line": 3066, + "line": 3074, "column": 35 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 121984, - "end": 122004, + "start": 122498, + "end": 122518, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 14 }, "end": { - "line": 3066, + "line": 3074, "column": 34 } }, "id": { "type": "Identifier", - "start": 121984, - "end": 121990, + "start": 122498, + "end": 122504, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 14 }, "end": { - "line": 3066, + "line": 3074, "column": 20 }, "identifierName": "pickId" @@ -117346,29 +118407,29 @@ }, "init": { "type": "MemberExpression", - "start": 121993, - "end": 122004, + "start": 122507, + "end": 122518, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 23 }, "end": { - "line": 3066, + "line": 3074, "column": 34 } }, "object": { "type": "Identifier", - "start": 121993, - "end": 121997, + "start": 122507, + "end": 122511, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 23 }, "end": { - "line": 3066, + "line": 3074, "column": 27 }, "identifierName": "mesh" @@ -117377,15 +118438,15 @@ }, "property": { "type": "Identifier", - "start": 121998, - "end": 122004, + "start": 122512, + "end": 122518, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 28 }, "end": { - "line": 3066, + "line": 3074, "column": 34 }, "identifierName": "pickId" @@ -117400,44 +118461,44 @@ }, { "type": "VariableDeclaration", - "start": 122014, - "end": 122044, + "start": 122528, + "end": 122558, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 8 }, "end": { - "line": 3067, + "line": 3075, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 122020, - "end": 122043, + "start": 122534, + "end": 122557, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 14 }, "end": { - "line": 3067, + "line": 3075, "column": 37 } }, "id": { "type": "Identifier", - "start": 122020, - "end": 122021, + "start": 122534, + "end": 122535, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 14 }, "end": { - "line": 3067, + "line": 3075, "column": 15 }, "identifierName": "a" @@ -117446,43 +118507,43 @@ }, "init": { "type": "BinaryExpression", - "start": 122024, - "end": 122043, + "start": 122538, + "end": 122557, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 18 }, "end": { - "line": 3067, + "line": 3075, "column": 37 } }, "left": { "type": "BinaryExpression", - "start": 122024, - "end": 122036, + "start": 122538, + "end": 122550, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 18 }, "end": { - "line": 3067, + "line": 3075, "column": 30 } }, "left": { "type": "Identifier", - "start": 122024, - "end": 122030, + "start": 122538, + "end": 122544, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 18 }, "end": { - "line": 3067, + "line": 3075, "column": 24 }, "identifierName": "pickId" @@ -117492,15 +118553,15 @@ "operator": ">>", "right": { "type": "NumericLiteral", - "start": 122034, - "end": 122036, + "start": 122548, + "end": 122550, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 28 }, "end": { - "line": 3067, + "line": 3075, "column": 30 } }, @@ -117514,15 +118575,15 @@ "operator": "&", "right": { "type": "NumericLiteral", - "start": 122039, - "end": 122043, + "start": 122553, + "end": 122557, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 33 }, "end": { - "line": 3067, + "line": 3075, "column": 37 } }, @@ -117539,44 +118600,44 @@ }, { "type": "VariableDeclaration", - "start": 122053, - "end": 122083, + "start": 122567, + "end": 122597, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 8 }, "end": { - "line": 3068, + "line": 3076, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 122059, - "end": 122082, + "start": 122573, + "end": 122596, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 14 }, "end": { - "line": 3068, + "line": 3076, "column": 37 } }, "id": { "type": "Identifier", - "start": 122059, - "end": 122060, + "start": 122573, + "end": 122574, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 14 }, "end": { - "line": 3068, + "line": 3076, "column": 15 }, "identifierName": "b" @@ -117585,43 +118646,43 @@ }, "init": { "type": "BinaryExpression", - "start": 122063, - "end": 122082, + "start": 122577, + "end": 122596, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 18 }, "end": { - "line": 3068, + "line": 3076, "column": 37 } }, "left": { "type": "BinaryExpression", - "start": 122063, - "end": 122075, + "start": 122577, + "end": 122589, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 18 }, "end": { - "line": 3068, + "line": 3076, "column": 30 } }, "left": { "type": "Identifier", - "start": 122063, - "end": 122069, + "start": 122577, + "end": 122583, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 18 }, "end": { - "line": 3068, + "line": 3076, "column": 24 }, "identifierName": "pickId" @@ -117631,15 +118692,15 @@ "operator": ">>", "right": { "type": "NumericLiteral", - "start": 122073, - "end": 122075, + "start": 122587, + "end": 122589, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 28 }, "end": { - "line": 3068, + "line": 3076, "column": 30 } }, @@ -117653,15 +118714,15 @@ "operator": "&", "right": { "type": "NumericLiteral", - "start": 122078, - "end": 122082, + "start": 122592, + "end": 122596, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 33 }, "end": { - "line": 3068, + "line": 3076, "column": 37 } }, @@ -117678,44 +118739,44 @@ }, { "type": "VariableDeclaration", - "start": 122092, - "end": 122121, + "start": 122606, + "end": 122635, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 8 }, "end": { - "line": 3069, + "line": 3077, "column": 37 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 122098, - "end": 122120, + "start": 122612, + "end": 122634, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 14 }, "end": { - "line": 3069, + "line": 3077, "column": 36 } }, "id": { "type": "Identifier", - "start": 122098, - "end": 122099, + "start": 122612, + "end": 122613, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 14 }, "end": { - "line": 3069, + "line": 3077, "column": 15 }, "identifierName": "g" @@ -117724,43 +118785,43 @@ }, "init": { "type": "BinaryExpression", - "start": 122102, - "end": 122120, + "start": 122616, + "end": 122634, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 18 }, "end": { - "line": 3069, + "line": 3077, "column": 36 } }, "left": { "type": "BinaryExpression", - "start": 122102, - "end": 122113, + "start": 122616, + "end": 122627, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 18 }, "end": { - "line": 3069, + "line": 3077, "column": 29 } }, "left": { "type": "Identifier", - "start": 122102, - "end": 122108, + "start": 122616, + "end": 122622, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 18 }, "end": { - "line": 3069, + "line": 3077, "column": 24 }, "identifierName": "pickId" @@ -117770,15 +118831,15 @@ "operator": ">>", "right": { "type": "NumericLiteral", - "start": 122112, - "end": 122113, + "start": 122626, + "end": 122627, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 28 }, "end": { - "line": 3069, + "line": 3077, "column": 29 } }, @@ -117792,15 +118853,15 @@ "operator": "&", "right": { "type": "NumericLiteral", - "start": 122116, - "end": 122120, + "start": 122630, + "end": 122634, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 32 }, "end": { - "line": 3069, + "line": 3077, "column": 36 } }, @@ -117817,44 +118878,44 @@ }, { "type": "VariableDeclaration", - "start": 122130, - "end": 122154, + "start": 122644, + "end": 122668, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 8 }, "end": { - "line": 3070, + "line": 3078, "column": 32 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 122136, - "end": 122153, + "start": 122650, + "end": 122667, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 14 }, "end": { - "line": 3070, + "line": 3078, "column": 31 } }, "id": { "type": "Identifier", - "start": 122136, - "end": 122137, + "start": 122650, + "end": 122651, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 14 }, "end": { - "line": 3070, + "line": 3078, "column": 15 }, "identifierName": "r" @@ -117863,29 +118924,29 @@ }, "init": { "type": "BinaryExpression", - "start": 122140, - "end": 122153, + "start": 122654, + "end": 122667, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 18 }, "end": { - "line": 3070, + "line": 3078, "column": 31 } }, "left": { "type": "Identifier", - "start": 122140, - "end": 122146, + "start": 122654, + "end": 122660, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 18 }, "end": { - "line": 3070, + "line": 3078, "column": 24 }, "identifierName": "pickId" @@ -117895,15 +118956,15 @@ "operator": "&", "right": { "type": "NumericLiteral", - "start": 122149, - "end": 122153, + "start": 122663, + "end": 122667, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 27 }, "end": { - "line": 3070, + "line": 3078, "column": 31 } }, @@ -117920,58 +118981,58 @@ }, { "type": "ExpressionStatement", - "start": 122163, - "end": 122208, + "start": 122677, + "end": 122722, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 8 }, "end": { - "line": 3071, + "line": 3079, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 122163, - "end": 122207, + "start": 122677, + "end": 122721, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 8 }, "end": { - "line": 3071, + "line": 3079, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122163, - "end": 122176, + "start": 122677, + "end": 122690, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 8 }, "end": { - "line": 3071, + "line": 3079, "column": 21 } }, "object": { "type": "Identifier", - "start": 122163, - "end": 122166, + "start": 122677, + "end": 122680, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 8 }, "end": { - "line": 3071, + "line": 3079, "column": 11 }, "identifierName": "cfg" @@ -117980,15 +119041,15 @@ }, "property": { "type": "Identifier", - "start": 122167, - "end": 122176, + "start": 122681, + "end": 122690, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 12 }, "end": { - "line": 3071, + "line": 3079, "column": 21 }, "identifierName": "pickColor" @@ -117999,29 +119060,29 @@ }, "right": { "type": "NewExpression", - "start": 122179, - "end": 122207, + "start": 122693, + "end": 122721, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 24 }, "end": { - "line": 3071, + "line": 3079, "column": 52 } }, "callee": { "type": "Identifier", - "start": 122183, - "end": 122193, + "start": 122697, + "end": 122707, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 28 }, "end": { - "line": 3071, + "line": 3079, "column": 38 }, "identifierName": "Uint8Array" @@ -118031,30 +119092,30 @@ "arguments": [ { "type": "ArrayExpression", - "start": 122194, - "end": 122206, + "start": 122708, + "end": 122720, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 39 }, "end": { - "line": 3071, + "line": 3079, "column": 51 } }, "elements": [ { "type": "Identifier", - "start": 122195, - "end": 122196, + "start": 122709, + "end": 122710, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 40 }, "end": { - "line": 3071, + "line": 3079, "column": 41 }, "identifierName": "r" @@ -118063,15 +119124,15 @@ }, { "type": "Identifier", - "start": 122198, - "end": 122199, + "start": 122712, + "end": 122713, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 43 }, "end": { - "line": 3071, + "line": 3079, "column": 44 }, "identifierName": "g" @@ -118080,15 +119141,15 @@ }, { "type": "Identifier", - "start": 122201, - "end": 122202, + "start": 122715, + "end": 122716, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 46 }, "end": { - "line": 3071, + "line": 3079, "column": 47 }, "identifierName": "b" @@ -118097,15 +119158,15 @@ }, { "type": "Identifier", - "start": 122204, - "end": 122205, + "start": 122718, + "end": 122719, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 49 }, "end": { - "line": 3071, + "line": 3079, "column": 50 }, "identifierName": "a" @@ -118121,15 +119182,15 @@ { "type": "CommentLine", "value": " Quantized pick color", - "start": 122209, - "end": 122232, + "start": 122723, + "end": 122746, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 54 }, "end": { - "line": 3071, + "line": 3079, "column": 77 } } @@ -118138,58 +119199,58 @@ }, { "type": "ExpressionStatement", - "start": 122241, - "end": 122281, + "start": 122755, + "end": 122795, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 8 }, "end": { - "line": 3072, + "line": 3080, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 122241, - "end": 122280, + "start": 122755, + "end": 122794, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 8 }, "end": { - "line": 3072, + "line": 3080, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122241, - "end": 122250, + "start": 122755, + "end": 122764, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 8 }, "end": { - "line": 3072, + "line": 3080, "column": 17 } }, "object": { "type": "Identifier", - "start": 122241, - "end": 122244, + "start": 122755, + "end": 122758, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 8 }, "end": { - "line": 3072, + "line": 3080, "column": 11 }, "identifierName": "cfg" @@ -118199,15 +119260,15 @@ }, "property": { "type": "Identifier", - "start": 122245, - "end": 122250, + "start": 122759, + "end": 122764, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 12 }, "end": { - "line": 3072, + "line": 3080, "column": 17 }, "identifierName": "solid" @@ -118219,43 +119280,43 @@ }, "right": { "type": "BinaryExpression", - "start": 122254, - "end": 122279, + "start": 122768, + "end": 122793, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 21 }, "end": { - "line": 3072, + "line": 3080, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 122254, - "end": 122267, + "start": 122768, + "end": 122781, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 21 }, "end": { - "line": 3072, + "line": 3080, "column": 34 } }, "object": { "type": "Identifier", - "start": 122254, - "end": 122257, + "start": 122768, + "end": 122771, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 21 }, "end": { - "line": 3072, + "line": 3080, "column": 24 }, "identifierName": "cfg" @@ -118264,15 +119325,15 @@ }, "property": { "type": "Identifier", - "start": 122258, - "end": 122267, + "start": 122772, + "end": 122781, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 25 }, "end": { - "line": 3072, + "line": 3080, "column": 34 }, "identifierName": "primitive" @@ -118284,15 +119345,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 122272, - "end": 122279, + "start": 122786, + "end": 122793, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 39 }, "end": { - "line": 3072, + "line": 3080, "column": 46 } }, @@ -118304,7 +119365,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 122253 + "parenStart": 122767 } }, "leadingComments": null @@ -118313,15 +119374,15 @@ { "type": "CommentLine", "value": " Quantized pick color", - "start": 122209, - "end": 122232, + "start": 122723, + "end": 122746, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 54 }, "end": { - "line": 3071, + "line": 3079, "column": 77 } } @@ -118330,58 +119391,58 @@ }, { "type": "ExpressionStatement", - "start": 122290, - "end": 122326, + "start": 122804, + "end": 122840, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 8 }, "end": { - "line": 3073, + "line": 3081, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 122290, - "end": 122325, + "start": 122804, + "end": 122839, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 8 }, "end": { - "line": 3073, + "line": 3081, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122290, - "end": 122301, + "start": 122804, + "end": 122815, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 8 }, "end": { - "line": 3073, + "line": 3081, "column": 19 } }, "object": { "type": "Identifier", - "start": 122290, - "end": 122294, + "start": 122804, + "end": 122808, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 8 }, "end": { - "line": 3073, + "line": 3081, "column": 12 }, "identifierName": "mesh" @@ -118390,15 +119451,15 @@ }, "property": { "type": "Identifier", - "start": 122295, - "end": 122301, + "start": 122809, + "end": 122815, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 13 }, "end": { - "line": 3073, + "line": 3081, "column": 19 }, "identifierName": "origin" @@ -118409,43 +119470,43 @@ }, "right": { "type": "CallExpression", - "start": 122304, - "end": 122325, + "start": 122818, + "end": 122839, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 22 }, "end": { - "line": 3073, + "line": 3081, "column": 43 } }, "callee": { "type": "MemberExpression", - "start": 122304, - "end": 122313, + "start": 122818, + "end": 122827, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 22 }, "end": { - "line": 3073, + "line": 3081, "column": 31 } }, "object": { "type": "Identifier", - "start": 122304, - "end": 122308, + "start": 122818, + "end": 122822, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 22 }, "end": { - "line": 3073, + "line": 3081, "column": 26 }, "identifierName": "math" @@ -118454,15 +119515,15 @@ }, "property": { "type": "Identifier", - "start": 122309, - "end": 122313, + "start": 122823, + "end": 122827, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 27 }, "end": { - "line": 3073, + "line": 3081, "column": 31 }, "identifierName": "vec3" @@ -118474,29 +119535,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 122314, - "end": 122324, + "start": 122828, + "end": 122838, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 32 }, "end": { - "line": 3073, + "line": 3081, "column": 42 } }, "object": { "type": "Identifier", - "start": 122314, - "end": 122317, + "start": 122828, + "end": 122831, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 32 }, "end": { - "line": 3073, + "line": 3081, "column": 35 }, "identifierName": "cfg" @@ -118505,15 +119566,15 @@ }, "property": { "type": "Identifier", - "start": 122318, - "end": 122324, + "start": 122832, + "end": 122838, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 36 }, "end": { - "line": 3073, + "line": 3081, "column": 42 }, "identifierName": "origin" @@ -118528,43 +119589,43 @@ }, { "type": "SwitchStatement", - "start": 122335, - "end": 122808, + "start": 122849, + "end": 123322, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 8 }, "end": { - "line": 3087, + "line": 3095, "column": 9 } }, "discriminant": { "type": "MemberExpression", - "start": 122343, - "end": 122351, + "start": 122857, + "end": 122865, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 16 }, "end": { - "line": 3074, + "line": 3082, "column": 24 } }, "object": { "type": "Identifier", - "start": 122343, - "end": 122346, + "start": 122857, + "end": 122860, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 16 }, "end": { - "line": 3074, + "line": 3082, "column": 19 }, "identifierName": "cfg" @@ -118573,15 +119634,15 @@ }, "property": { "type": "Identifier", - "start": 122347, - "end": 122351, + "start": 122861, + "end": 122865, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 20 }, "end": { - "line": 3074, + "line": 3082, "column": 24 }, "identifierName": "type" @@ -118593,73 +119654,73 @@ "cases": [ { "type": "SwitchCase", - "start": 122367, - "end": 122490, + "start": 122881, + "end": 123004, "loc": { "start": { - "line": 3075, + "line": 3083, "column": 12 }, "end": { - "line": 3078, + "line": 3086, "column": 22 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 122393, - "end": 122429, + "start": 122907, + "end": 122943, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 16 }, "end": { - "line": 3076, + "line": 3084, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 122393, - "end": 122428, + "start": 122907, + "end": 122942, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 16 }, "end": { - "line": 3076, + "line": 3084, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122393, - "end": 122403, + "start": 122907, + "end": 122917, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 16 }, "end": { - "line": 3076, + "line": 3084, "column": 26 } }, "object": { "type": "Identifier", - "start": 122393, - "end": 122397, + "start": 122907, + "end": 122911, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 16 }, "end": { - "line": 3076, + "line": 3084, "column": 20 }, "identifierName": "mesh" @@ -118668,15 +119729,15 @@ }, "property": { "type": "Identifier", - "start": 122398, - "end": 122403, + "start": 122912, + "end": 122917, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 21 }, "end": { - "line": 3076, + "line": 3084, "column": 26 }, "identifierName": "layer" @@ -118687,58 +119748,58 @@ }, "right": { "type": "CallExpression", - "start": 122406, - "end": 122428, + "start": 122920, + "end": 122942, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 29 }, "end": { - "line": 3076, + "line": 3084, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 122406, - "end": 122423, + "start": 122920, + "end": 122937, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 29 }, "end": { - "line": 3076, + "line": 3084, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 122406, - "end": 122410, + "start": 122920, + "end": 122924, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 29 }, "end": { - "line": 3076, + "line": 3084, "column": 33 } } }, "property": { "type": "Identifier", - "start": 122411, - "end": 122423, + "start": 122925, + "end": 122937, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 34 }, "end": { - "line": 3076, + "line": 3084, "column": 46 }, "identifierName": "_getDTXLayer" @@ -118750,15 +119811,15 @@ "arguments": [ { "type": "Identifier", - "start": 122424, - "end": 122427, + "start": 122938, + "end": 122941, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 47 }, "end": { - "line": 3076, + "line": 3084, "column": 50 }, "identifierName": "cfg" @@ -118771,58 +119832,58 @@ }, { "type": "ExpressionStatement", - "start": 122446, - "end": 122467, + "start": 122960, + "end": 122981, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 16 }, "end": { - "line": 3077, + "line": 3085, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 122446, - "end": 122466, + "start": 122960, + "end": 122980, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 16 }, "end": { - "line": 3077, + "line": 3085, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122446, - "end": 122455, + "start": 122960, + "end": 122969, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 16 }, "end": { - "line": 3077, + "line": 3085, "column": 25 } }, "object": { "type": "Identifier", - "start": 122446, - "end": 122450, + "start": 122960, + "end": 122964, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 16 }, "end": { - "line": 3077, + "line": 3085, "column": 20 }, "identifierName": "mesh" @@ -118831,15 +119892,15 @@ }, "property": { "type": "Identifier", - "start": 122451, - "end": 122455, + "start": 122965, + "end": 122969, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 21 }, "end": { - "line": 3077, + "line": 3085, "column": 25 }, "identifierName": "aabb" @@ -118850,29 +119911,29 @@ }, "right": { "type": "MemberExpression", - "start": 122458, - "end": 122466, + "start": 122972, + "end": 122980, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 28 }, "end": { - "line": 3077, + "line": 3085, "column": 36 } }, "object": { "type": "Identifier", - "start": 122458, - "end": 122461, + "start": 122972, + "end": 122975, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 28 }, "end": { - "line": 3077, + "line": 3085, "column": 31 }, "identifierName": "cfg" @@ -118881,15 +119942,15 @@ }, "property": { "type": "Identifier", - "start": 122462, - "end": 122466, + "start": 122976, + "end": 122980, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 32 }, "end": { - "line": 3077, + "line": 3085, "column": 36 }, "identifierName": "aabb" @@ -118902,15 +119963,15 @@ }, { "type": "BreakStatement", - "start": 122484, - "end": 122490, + "start": 122998, + "end": 123004, "loc": { "start": { - "line": 3078, + "line": 3086, "column": 16 }, "end": { - "line": 3078, + "line": 3086, "column": 22 } }, @@ -118919,15 +119980,15 @@ ], "test": { "type": "Identifier", - "start": 122372, - "end": 122375, + "start": 122886, + "end": 122889, "loc": { "start": { - "line": 3075, + "line": 3083, "column": 17 }, "end": { - "line": 3075, + "line": 3083, "column": 20 }, "identifierName": "DTX" @@ -118937,73 +119998,73 @@ }, { "type": "SwitchCase", - "start": 122503, - "end": 122642, + "start": 123017, + "end": 123156, "loc": { "start": { - "line": 3079, + "line": 3087, "column": 12 }, "end": { - "line": 3082, + "line": 3090, "column": 22 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 122537, - "end": 122581, + "start": 123051, + "end": 123095, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 16 }, "end": { - "line": 3080, + "line": 3088, "column": 60 } }, "expression": { "type": "AssignmentExpression", - "start": 122537, - "end": 122580, + "start": 123051, + "end": 123094, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 16 }, "end": { - "line": 3080, + "line": 3088, "column": 59 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122537, - "end": 122547, + "start": 123051, + "end": 123061, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 16 }, "end": { - "line": 3080, + "line": 3088, "column": 26 } }, "object": { "type": "Identifier", - "start": 122537, - "end": 122541, + "start": 123051, + "end": 123055, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 16 }, "end": { - "line": 3080, + "line": 3088, "column": 20 }, "identifierName": "mesh" @@ -119012,15 +120073,15 @@ }, "property": { "type": "Identifier", - "start": 122542, - "end": 122547, + "start": 123056, + "end": 123061, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 21 }, "end": { - "line": 3080, + "line": 3088, "column": 26 }, "identifierName": "layer" @@ -119031,58 +120092,58 @@ }, "right": { "type": "CallExpression", - "start": 122550, - "end": 122580, + "start": 123064, + "end": 123094, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 29 }, "end": { - "line": 3080, + "line": 3088, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 122550, - "end": 122575, + "start": 123064, + "end": 123089, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 29 }, "end": { - "line": 3080, + "line": 3088, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 122550, - "end": 122554, + "start": 123064, + "end": 123068, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 29 }, "end": { - "line": 3080, + "line": 3088, "column": 33 } } }, "property": { "type": "Identifier", - "start": 122555, - "end": 122575, + "start": 123069, + "end": 123089, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 34 }, "end": { - "line": 3080, + "line": 3088, "column": 54 }, "identifierName": "_getVBOBatchingLayer" @@ -119094,15 +120155,15 @@ "arguments": [ { "type": "Identifier", - "start": 122576, - "end": 122579, + "start": 123090, + "end": 123093, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 55 }, "end": { - "line": 3080, + "line": 3088, "column": 58 }, "identifierName": "cfg" @@ -119115,58 +120176,58 @@ }, { "type": "ExpressionStatement", - "start": 122598, - "end": 122619, + "start": 123112, + "end": 123133, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 16 }, "end": { - "line": 3081, + "line": 3089, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 122598, - "end": 122618, + "start": 123112, + "end": 123132, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 16 }, "end": { - "line": 3081, + "line": 3089, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122598, - "end": 122607, + "start": 123112, + "end": 123121, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 16 }, "end": { - "line": 3081, + "line": 3089, "column": 25 } }, "object": { "type": "Identifier", - "start": 122598, - "end": 122602, + "start": 123112, + "end": 123116, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 16 }, "end": { - "line": 3081, + "line": 3089, "column": 20 }, "identifierName": "mesh" @@ -119175,15 +120236,15 @@ }, "property": { "type": "Identifier", - "start": 122603, - "end": 122607, + "start": 123117, + "end": 123121, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 21 }, "end": { - "line": 3081, + "line": 3089, "column": 25 }, "identifierName": "aabb" @@ -119194,29 +120255,29 @@ }, "right": { "type": "MemberExpression", - "start": 122610, - "end": 122618, + "start": 123124, + "end": 123132, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 28 }, "end": { - "line": 3081, + "line": 3089, "column": 36 } }, "object": { "type": "Identifier", - "start": 122610, - "end": 122613, + "start": 123124, + "end": 123127, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 28 }, "end": { - "line": 3081, + "line": 3089, "column": 31 }, "identifierName": "cfg" @@ -119225,15 +120286,15 @@ }, "property": { "type": "Identifier", - "start": 122614, - "end": 122618, + "start": 123128, + "end": 123132, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 32 }, "end": { - "line": 3081, + "line": 3089, "column": 36 }, "identifierName": "aabb" @@ -119246,15 +120307,15 @@ }, { "type": "BreakStatement", - "start": 122636, - "end": 122642, + "start": 123150, + "end": 123156, "loc": { "start": { - "line": 3082, + "line": 3090, "column": 16 }, "end": { - "line": 3082, + "line": 3090, "column": 22 } }, @@ -119263,15 +120324,15 @@ ], "test": { "type": "Identifier", - "start": 122508, - "end": 122519, + "start": 123022, + "end": 123033, "loc": { "start": { - "line": 3079, + "line": 3087, "column": 17 }, "end": { - "line": 3079, + "line": 3087, "column": 28 }, "identifierName": "VBO_BATCHED" @@ -119281,73 +120342,73 @@ }, { "type": "SwitchCase", - "start": 122655, - "end": 122798, + "start": 123169, + "end": 123312, "loc": { "start": { - "line": 3083, + "line": 3091, "column": 12 }, "end": { - "line": 3086, + "line": 3094, "column": 22 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 122691, - "end": 122737, + "start": 123205, + "end": 123251, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 16 }, "end": { - "line": 3084, + "line": 3092, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 122691, - "end": 122736, + "start": 123205, + "end": 123250, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 16 }, "end": { - "line": 3084, + "line": 3092, "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122691, - "end": 122701, + "start": 123205, + "end": 123215, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 16 }, "end": { - "line": 3084, + "line": 3092, "column": 26 } }, "object": { "type": "Identifier", - "start": 122691, - "end": 122695, + "start": 123205, + "end": 123209, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 16 }, "end": { - "line": 3084, + "line": 3092, "column": 20 }, "identifierName": "mesh" @@ -119356,15 +120417,15 @@ }, "property": { "type": "Identifier", - "start": 122696, - "end": 122701, + "start": 123210, + "end": 123215, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 21 }, "end": { - "line": 3084, + "line": 3092, "column": 26 }, "identifierName": "layer" @@ -119375,58 +120436,58 @@ }, "right": { "type": "CallExpression", - "start": 122704, - "end": 122736, + "start": 123218, + "end": 123250, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 29 }, "end": { - "line": 3084, + "line": 3092, "column": 61 } }, "callee": { "type": "MemberExpression", - "start": 122704, - "end": 122731, + "start": 123218, + "end": 123245, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 29 }, "end": { - "line": 3084, + "line": 3092, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 122704, - "end": 122708, + "start": 123218, + "end": 123222, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 29 }, "end": { - "line": 3084, + "line": 3092, "column": 33 } } }, "property": { "type": "Identifier", - "start": 122709, - "end": 122731, + "start": 123223, + "end": 123245, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 34 }, "end": { - "line": 3084, + "line": 3092, "column": 56 }, "identifierName": "_getVBOInstancingLayer" @@ -119438,15 +120499,15 @@ "arguments": [ { "type": "Identifier", - "start": 122732, - "end": 122735, + "start": 123246, + "end": 123249, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 57 }, "end": { - "line": 3084, + "line": 3092, "column": 60 }, "identifierName": "cfg" @@ -119459,58 +120520,58 @@ }, { "type": "ExpressionStatement", - "start": 122754, - "end": 122775, + "start": 123268, + "end": 123289, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 16 }, "end": { - "line": 3085, + "line": 3093, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 122754, - "end": 122774, + "start": 123268, + "end": 123288, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 16 }, "end": { - "line": 3085, + "line": 3093, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122754, - "end": 122763, + "start": 123268, + "end": 123277, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 16 }, "end": { - "line": 3085, + "line": 3093, "column": 25 } }, "object": { "type": "Identifier", - "start": 122754, - "end": 122758, + "start": 123268, + "end": 123272, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 16 }, "end": { - "line": 3085, + "line": 3093, "column": 20 }, "identifierName": "mesh" @@ -119519,15 +120580,15 @@ }, "property": { "type": "Identifier", - "start": 122759, - "end": 122763, + "start": 123273, + "end": 123277, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 21 }, "end": { - "line": 3085, + "line": 3093, "column": 25 }, "identifierName": "aabb" @@ -119538,29 +120599,29 @@ }, "right": { "type": "MemberExpression", - "start": 122766, - "end": 122774, + "start": 123280, + "end": 123288, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 28 }, "end": { - "line": 3085, + "line": 3093, "column": 36 } }, "object": { "type": "Identifier", - "start": 122766, - "end": 122769, + "start": 123280, + "end": 123283, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 28 }, "end": { - "line": 3085, + "line": 3093, "column": 31 }, "identifierName": "cfg" @@ -119569,15 +120630,15 @@ }, "property": { "type": "Identifier", - "start": 122770, - "end": 122774, + "start": 123284, + "end": 123288, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 32 }, "end": { - "line": 3085, + "line": 3093, "column": 36 }, "identifierName": "aabb" @@ -119590,15 +120651,15 @@ }, { "type": "BreakStatement", - "start": 122792, - "end": 122798, + "start": 123306, + "end": 123312, "loc": { "start": { - "line": 3086, + "line": 3094, "column": 16 }, "end": { - "line": 3086, + "line": 3094, "column": 22 } }, @@ -119607,15 +120668,15 @@ ], "test": { "type": "Identifier", - "start": 122660, - "end": 122673, + "start": 123174, + "end": 123187, "loc": { "start": { - "line": 3083, + "line": 3091, "column": 17 }, "end": { - "line": 3083, + "line": 3091, "column": 30 }, "identifierName": "VBO_INSTANCED" @@ -119627,43 +120688,43 @@ }, { "type": "IfStatement", - "start": 122817, - "end": 122903, + "start": 123331, + "end": 123417, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 8 }, "end": { - "line": 3090, + "line": 3098, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 122821, - "end": 122834, + "start": 123335, + "end": 123348, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 12 }, "end": { - "line": 3088, + "line": 3096, "column": 25 } }, "object": { "type": "Identifier", - "start": 122821, - "end": 122824, + "start": 123335, + "end": 123338, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 12 }, "end": { - "line": 3088, + "line": 3096, "column": 15 }, "identifierName": "cfg" @@ -119672,15 +120733,15 @@ }, "property": { "type": "Identifier", - "start": 122825, - "end": 122834, + "start": 123339, + "end": 123348, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 16 }, "end": { - "line": 3088, + "line": 3096, "column": 25 }, "identifierName": "transform" @@ -119691,73 +120752,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 122836, - "end": 122903, + "start": 123350, + "end": 123417, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 27 }, "end": { - "line": 3090, + "line": 3098, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 122850, - "end": 122893, + "start": 123364, + "end": 123407, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 12 }, "end": { - "line": 3089, + "line": 3097, "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 122850, - "end": 122892, + "start": 123364, + "end": 123406, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 12 }, "end": { - "line": 3089, + "line": 3097, "column": 54 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122850, - "end": 122864, + "start": 123364, + "end": 123378, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 12 }, "end": { - "line": 3089, + "line": 3097, "column": 26 } }, "object": { "type": "Identifier", - "start": 122850, - "end": 122853, + "start": 123364, + "end": 123367, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 12 }, "end": { - "line": 3089, + "line": 3097, "column": 15 }, "identifierName": "cfg" @@ -119766,15 +120827,15 @@ }, "property": { "type": "Identifier", - "start": 122854, - "end": 122864, + "start": 123368, + "end": 123378, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 16 }, "end": { - "line": 3089, + "line": 3097, "column": 26 }, "identifierName": "meshMatrix" @@ -119785,43 +120846,43 @@ }, "right": { "type": "MemberExpression", - "start": 122867, - "end": 122892, + "start": 123381, + "end": 123406, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 29 }, "end": { - "line": 3089, + "line": 3097, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 122867, - "end": 122880, + "start": 123381, + "end": 123394, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 29 }, "end": { - "line": 3089, + "line": 3097, "column": 42 } }, "object": { "type": "Identifier", - "start": 122867, - "end": 122870, + "start": 123381, + "end": 123384, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 29 }, "end": { - "line": 3089, + "line": 3097, "column": 32 }, "identifierName": "cfg" @@ -119830,15 +120891,15 @@ }, "property": { "type": "Identifier", - "start": 122871, - "end": 122880, + "start": 123385, + "end": 123394, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 33 }, "end": { - "line": 3089, + "line": 3097, "column": 42 }, "identifierName": "transform" @@ -119849,15 +120910,15 @@ }, "property": { "type": "Identifier", - "start": 122881, - "end": 122892, + "start": 123395, + "end": 123406, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 43 }, "end": { - "line": 3089, + "line": 3097, "column": 54 }, "identifierName": "worldMatrix" @@ -119875,58 +120936,58 @@ }, { "type": "ExpressionStatement", - "start": 122912, - "end": 122965, + "start": 123426, + "end": 123479, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 8 }, "end": { - "line": 3091, + "line": 3099, "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 122912, - "end": 122964, + "start": 123426, + "end": 123478, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 8 }, "end": { - "line": 3091, + "line": 3099, "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122912, - "end": 122926, + "start": 123426, + "end": 123440, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 8 }, "end": { - "line": 3091, + "line": 3099, "column": 22 } }, "object": { "type": "Identifier", - "start": 122912, - "end": 122916, + "start": 123426, + "end": 123430, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 8 }, "end": { - "line": 3091, + "line": 3099, "column": 12 }, "identifierName": "mesh" @@ -119935,15 +120996,15 @@ }, "property": { "type": "Identifier", - "start": 122917, - "end": 122926, + "start": 123431, + "end": 123440, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 13 }, "end": { - "line": 3091, + "line": 3099, "column": 22 }, "identifierName": "portionId" @@ -119954,57 +121015,57 @@ }, "right": { "type": "CallExpression", - "start": 122929, - "end": 122964, + "start": 123443, + "end": 123478, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 25 }, "end": { - "line": 3091, + "line": 3099, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 122929, - "end": 122953, + "start": 123443, + "end": 123467, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 25 }, "end": { - "line": 3091, + "line": 3099, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 122929, - "end": 122939, + "start": 123443, + "end": 123453, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 25 }, "end": { - "line": 3091, + "line": 3099, "column": 35 } }, "object": { "type": "Identifier", - "start": 122929, - "end": 122933, + "start": 123443, + "end": 123447, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 25 }, "end": { - "line": 3091, + "line": 3099, "column": 29 }, "identifierName": "mesh" @@ -120013,15 +121074,15 @@ }, "property": { "type": "Identifier", - "start": 122934, - "end": 122939, + "start": 123448, + "end": 123453, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 30 }, "end": { - "line": 3091, + "line": 3099, "column": 35 }, "identifierName": "layer" @@ -120032,15 +121093,15 @@ }, "property": { "type": "Identifier", - "start": 122940, - "end": 122953, + "start": 123454, + "end": 123467, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 36 }, "end": { - "line": 3091, + "line": 3099, "column": 49 }, "identifierName": "createPortion" @@ -120052,15 +121113,15 @@ "arguments": [ { "type": "Identifier", - "start": 122954, - "end": 122958, + "start": 123468, + "end": 123472, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 50 }, "end": { - "line": 3091, + "line": 3099, "column": 54 }, "identifierName": "mesh" @@ -120069,15 +121130,15 @@ }, { "type": "Identifier", - "start": 122960, - "end": 122963, + "start": 123474, + "end": 123477, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 56 }, "end": { - "line": 3091, + "line": 3099, "column": 59 }, "identifierName": "cfg" @@ -120090,87 +121151,87 @@ }, { "type": "ExpressionStatement", - "start": 122974, - "end": 123002, + "start": 123488, + "end": 123516, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 8 }, "end": { - "line": 3092, + "line": 3100, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 122974, - "end": 123001, + "start": 123488, + "end": 123515, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 8 }, "end": { - "line": 3092, + "line": 3100, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 122974, - "end": 122994, + "start": 123488, + "end": 123508, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 8 }, "end": { - "line": 3092, + "line": 3100, "column": 28 } }, "object": { "type": "MemberExpression", - "start": 122974, - "end": 122986, + "start": 123488, + "end": 123500, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 8 }, "end": { - "line": 3092, + "line": 3100, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 122974, - "end": 122978, + "start": 123488, + "end": 123492, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 8 }, "end": { - "line": 3092, + "line": 3100, "column": 12 } } }, "property": { "type": "Identifier", - "start": 122979, - "end": 122986, + "start": 123493, + "end": 123500, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 13 }, "end": { - "line": 3092, + "line": 3100, "column": 20 }, "identifierName": "_meshes" @@ -120181,29 +121242,29 @@ }, "property": { "type": "MemberExpression", - "start": 122987, - "end": 122993, + "start": 123501, + "end": 123507, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 21 }, "end": { - "line": 3092, + "line": 3100, "column": 27 } }, "object": { "type": "Identifier", - "start": 122987, - "end": 122990, + "start": 123501, + "end": 123504, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 21 }, "end": { - "line": 3092, + "line": 3100, "column": 24 }, "identifierName": "cfg" @@ -120212,15 +121273,15 @@ }, "property": { "type": "Identifier", - "start": 122991, - "end": 122993, + "start": 123505, + "end": 123507, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 25 }, "end": { - "line": 3092, + "line": 3100, "column": 27 }, "identifierName": "id" @@ -120233,15 +121294,15 @@ }, "right": { "type": "Identifier", - "start": 122997, - "end": 123001, + "start": 123511, + "end": 123515, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 31 }, "end": { - "line": 3092, + "line": 3100, "column": 35 }, "identifierName": "mesh" @@ -120252,87 +121313,87 @@ }, { "type": "ExpressionStatement", - "start": 123011, - "end": 123045, + "start": 123525, + "end": 123559, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 8 }, "end": { - "line": 3093, + "line": 3101, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 123011, - "end": 123044, + "start": 123525, + "end": 123558, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 8 }, "end": { - "line": 3093, + "line": 3101, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 123011, - "end": 123037, + "start": 123525, + "end": 123551, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 8 }, "end": { - "line": 3093, + "line": 3101, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 123011, - "end": 123029, + "start": 123525, + "end": 123543, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 8 }, "end": { - "line": 3093, + "line": 3101, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 123011, - "end": 123015, + "start": 123525, + "end": 123529, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 8 }, "end": { - "line": 3093, + "line": 3101, "column": 12 } } }, "property": { "type": "Identifier", - "start": 123016, - "end": 123029, + "start": 123530, + "end": 123543, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 13 }, "end": { - "line": 3093, + "line": 3101, "column": 26 }, "identifierName": "_unusedMeshes" @@ -120343,29 +121404,29 @@ }, "property": { "type": "MemberExpression", - "start": 123030, - "end": 123036, + "start": 123544, + "end": 123550, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 27 }, "end": { - "line": 3093, + "line": 3101, "column": 33 } }, "object": { "type": "Identifier", - "start": 123030, - "end": 123033, + "start": 123544, + "end": 123547, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 27 }, "end": { - "line": 3093, + "line": 3101, "column": 30 }, "identifierName": "cfg" @@ -120374,15 +121435,15 @@ }, "property": { "type": "Identifier", - "start": 123034, - "end": 123036, + "start": 123548, + "end": 123550, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 31 }, "end": { - "line": 3093, + "line": 3101, "column": 33 }, "identifierName": "id" @@ -120395,15 +121456,15 @@ }, "right": { "type": "Identifier", - "start": 123040, - "end": 123044, + "start": 123554, + "end": 123558, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 37 }, "end": { - "line": 3093, + "line": 3101, "column": 41 }, "identifierName": "mesh" @@ -120414,86 +121475,86 @@ }, { "type": "ExpressionStatement", - "start": 123054, - "end": 123080, + "start": 123568, + "end": 123594, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 8 }, "end": { - "line": 3094, + "line": 3102, "column": 34 } }, "expression": { "type": "CallExpression", - "start": 123054, - "end": 123079, + "start": 123568, + "end": 123593, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 8 }, "end": { - "line": 3094, + "line": 3102, "column": 33 } }, "callee": { "type": "MemberExpression", - "start": 123054, - "end": 123073, + "start": 123568, + "end": 123587, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 8 }, "end": { - "line": 3094, + "line": 3102, "column": 27 } }, "object": { "type": "MemberExpression", - "start": 123054, - "end": 123068, + "start": 123568, + "end": 123582, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 8 }, "end": { - "line": 3094, + "line": 3102, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 123054, - "end": 123058, + "start": 123568, + "end": 123572, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 8 }, "end": { - "line": 3094, + "line": 3102, "column": 12 } } }, "property": { "type": "Identifier", - "start": 123059, - "end": 123068, + "start": 123573, + "end": 123582, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 13 }, "end": { - "line": 3094, + "line": 3102, "column": 22 }, "identifierName": "_meshList" @@ -120504,15 +121565,15 @@ }, "property": { "type": "Identifier", - "start": 123069, - "end": 123073, + "start": 123583, + "end": 123587, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 23 }, "end": { - "line": 3094, + "line": 3102, "column": 27 }, "identifierName": "push" @@ -120524,15 +121585,15 @@ "arguments": [ { "type": "Identifier", - "start": 123074, - "end": 123078, + "start": 123588, + "end": 123592, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 28 }, "end": { - "line": 3094, + "line": 3102, "column": 32 }, "identifierName": "mesh" @@ -120544,29 +121605,29 @@ }, { "type": "ReturnStatement", - "start": 123089, - "end": 123101, + "start": 123603, + "end": 123615, "loc": { "start": { - "line": 3095, + "line": 3103, "column": 8 }, "end": { - "line": 3095, + "line": 3103, "column": 20 } }, "argument": { "type": "Identifier", - "start": 123096, - "end": 123100, + "start": 123610, + "end": 123614, "loc": { "start": { - "line": 3095, + "line": 3103, "column": 15 }, "end": { - "line": 3095, + "line": 3103, "column": 19 }, "identifierName": "mesh" @@ -120580,15 +121641,15 @@ }, { "type": "ClassMethod", - "start": 123113, - "end": 125510, + "start": 123627, + "end": 126024, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 4 }, "end": { - "line": 3153, + "line": 3161, "column": 5 } }, @@ -120596,15 +121657,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 123113, - "end": 123130, + "start": 123627, + "end": 123644, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 4 }, "end": { - "line": 3098, + "line": 3106, "column": 21 }, "identifierName": "_getNumPrimitives" @@ -120619,15 +121680,15 @@ "params": [ { "type": "Identifier", - "start": 123131, - "end": 123134, + "start": 123645, + "end": 123648, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 22 }, "end": { - "line": 3098, + "line": 3106, "column": 25 }, "identifierName": "cfg" @@ -120637,59 +121698,59 @@ ], "body": { "type": "BlockStatement", - "start": 123136, - "end": 125510, + "start": 123650, + "end": 126024, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 27 }, "end": { - "line": 3153, + "line": 3161, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 123146, - "end": 123167, + "start": 123660, + "end": 123681, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 8 }, "end": { - "line": 3099, + "line": 3107, "column": 29 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 123150, - "end": 123166, + "start": 123664, + "end": 123680, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 12 }, "end": { - "line": 3099, + "line": 3107, "column": 28 } }, "id": { "type": "Identifier", - "start": 123150, - "end": 123162, + "start": 123664, + "end": 123676, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 12 }, "end": { - "line": 3099, + "line": 3107, "column": 24 }, "identifierName": "countIndices" @@ -120698,15 +121759,15 @@ }, "init": { "type": "NumericLiteral", - "start": 123165, - "end": 123166, + "start": 123679, + "end": 123680, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 27 }, "end": { - "line": 3099, + "line": 3107, "column": 28 } }, @@ -120722,44 +121783,44 @@ }, { "type": "VariableDeclaration", - "start": 123176, - "end": 123248, + "start": 123690, + "end": 123762, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 8 }, "end": { - "line": 3100, + "line": 3108, "column": 80 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 123182, - "end": 123247, + "start": 123696, + "end": 123761, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 14 }, "end": { - "line": 3100, + "line": 3108, "column": 79 } }, "id": { "type": "Identifier", - "start": 123182, - "end": 123191, + "start": 123696, + "end": 123705, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 14 }, "end": { - "line": 3100, + "line": 3108, "column": 23 }, "identifierName": "primitive" @@ -120768,43 +121829,43 @@ }, "init": { "type": "ConditionalExpression", - "start": 123194, - "end": 123247, + "start": 123708, + "end": 123761, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 26 }, "end": { - "line": 3100, + "line": 3108, "column": 79 } }, "test": { "type": "MemberExpression", - "start": 123194, - "end": 123206, + "start": 123708, + "end": 123720, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 26 }, "end": { - "line": 3100, + "line": 3108, "column": 38 } }, "object": { "type": "Identifier", - "start": 123194, - "end": 123197, + "start": 123708, + "end": 123711, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 26 }, "end": { - "line": 3100, + "line": 3108, "column": 29 }, "identifierName": "cfg" @@ -120813,15 +121874,15 @@ }, "property": { "type": "Identifier", - "start": 123198, - "end": 123206, + "start": 123712, + "end": 123720, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 30 }, "end": { - "line": 3100, + "line": 3108, "column": 38 }, "identifierName": "geometry" @@ -120832,43 +121893,43 @@ }, "consequent": { "type": "MemberExpression", - "start": 123209, - "end": 123231, + "start": 123723, + "end": 123745, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 41 }, "end": { - "line": 3100, + "line": 3108, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 123209, - "end": 123221, + "start": 123723, + "end": 123735, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 41 }, "end": { - "line": 3100, + "line": 3108, "column": 53 } }, "object": { "type": "Identifier", - "start": 123209, - "end": 123212, + "start": 123723, + "end": 123726, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 41 }, "end": { - "line": 3100, + "line": 3108, "column": 44 }, "identifierName": "cfg" @@ -120877,15 +121938,15 @@ }, "property": { "type": "Identifier", - "start": 123213, - "end": 123221, + "start": 123727, + "end": 123735, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 45 }, "end": { - "line": 3100, + "line": 3108, "column": 53 }, "identifierName": "geometry" @@ -120896,15 +121957,15 @@ }, "property": { "type": "Identifier", - "start": 123222, - "end": 123231, + "start": 123736, + "end": 123745, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 54 }, "end": { - "line": 3100, + "line": 3108, "column": 63 }, "identifierName": "primitive" @@ -120915,29 +121976,29 @@ }, "alternate": { "type": "MemberExpression", - "start": 123234, - "end": 123247, + "start": 123748, + "end": 123761, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 66 }, "end": { - "line": 3100, + "line": 3108, "column": 79 } }, "object": { "type": "Identifier", - "start": 123234, - "end": 123237, + "start": 123748, + "end": 123751, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 66 }, "end": { - "line": 3100, + "line": 3108, "column": 69 }, "identifierName": "cfg" @@ -120946,15 +122007,15 @@ }, "property": { "type": "Identifier", - "start": 123238, - "end": 123247, + "start": 123752, + "end": 123761, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 70 }, "end": { - "line": 3100, + "line": 3108, "column": 79 }, "identifierName": "primitive" @@ -120970,29 +122031,29 @@ }, { "type": "SwitchStatement", - "start": 123257, - "end": 125486, + "start": 123771, + "end": 126000, "loc": { "start": { - "line": 3101, + "line": 3109, "column": 8 }, "end": { - "line": 3151, + "line": 3159, "column": 9 } }, "discriminant": { "type": "Identifier", - "start": 123265, - "end": 123274, + "start": 123779, + "end": 123788, "loc": { "start": { - "line": 3101, + "line": 3109, "column": 16 }, "end": { - "line": 3101, + "line": 3109, "column": 25 }, "identifierName": "primitive" @@ -121002,30 +122063,30 @@ "cases": [ { "type": "SwitchCase", - "start": 123290, - "end": 123307, + "start": 123804, + "end": 123821, "loc": { "start": { - "line": 3102, + "line": 3110, "column": 12 }, "end": { - "line": 3102, + "line": 3110, "column": 29 } }, "consequent": [], "test": { "type": "StringLiteral", - "start": 123295, - "end": 123306, + "start": 123809, + "end": 123820, "loc": { "start": { - "line": 3102, + "line": 3110, "column": 17 }, "end": { - "line": 3102, + "line": 3110, "column": 28 } }, @@ -121038,30 +122099,30 @@ }, { "type": "SwitchCase", - "start": 123320, - "end": 123333, + "start": 123834, + "end": 123847, "loc": { "start": { - "line": 3103, + "line": 3111, "column": 12 }, "end": { - "line": 3103, + "line": 3111, "column": 25 } }, "consequent": [], "test": { "type": "StringLiteral", - "start": 123325, - "end": 123332, + "start": 123839, + "end": 123846, "loc": { "start": { - "line": 3103, + "line": 3111, "column": 17 }, "end": { - "line": 3103, + "line": 3111, "column": 24 } }, @@ -121074,58 +122135,58 @@ }, { "type": "SwitchCase", - "start": 123346, - "end": 123981, + "start": 123860, + "end": 124495, "loc": { "start": { - "line": 3104, + "line": 3112, "column": 12 }, "end": { - "line": 3118, + "line": 3126, "column": 52 } }, "consequent": [ { "type": "SwitchStatement", - "start": 123378, - "end": 123928, + "start": 123892, + "end": 124442, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 16 }, "end": { - "line": 3117, + "line": 3125, "column": 17 } }, "discriminant": { "type": "MemberExpression", - "start": 123386, - "end": 123394, + "start": 123900, + "end": 123908, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 24 }, "end": { - "line": 3105, + "line": 3113, "column": 32 } }, "object": { "type": "Identifier", - "start": 123386, - "end": 123389, + "start": 123900, + "end": 123903, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 24 }, "end": { - "line": 3105, + "line": 3113, "column": 27 }, "identifierName": "cfg" @@ -121134,15 +122195,15 @@ }, "property": { "type": "Identifier", - "start": 123390, - "end": 123394, + "start": 123904, + "end": 123908, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 28 }, "end": { - "line": 3105, + "line": 3113, "column": 32 }, "identifierName": "type" @@ -121154,73 +122215,73 @@ "cases": [ { "type": "SwitchCase", - "start": 123418, - "end": 123641, + "start": 123932, + "end": 124155, "loc": { "start": { - "line": 3106, + "line": 3114, "column": 20 }, "end": { - "line": 3110, + "line": 3118, "column": 30 } }, "consequent": [ { "type": "ForStatement", - "start": 123452, - "end": 123610, + "start": 123966, + "end": 124124, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 24 }, "end": { - "line": 3109, + "line": 3117, "column": 25 } }, "init": { "type": "VariableDeclaration", - "start": 123457, - "end": 123492, + "start": 123971, + "end": 124006, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 29 }, "end": { - "line": 3107, + "line": 3115, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 123461, - "end": 123466, + "start": 123975, + "end": 123980, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 33 }, "end": { - "line": 3107, + "line": 3115, "column": 38 } }, "id": { "type": "Identifier", - "start": 123461, - "end": 123462, + "start": 123975, + "end": 123976, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 33 }, "end": { - "line": 3107, + "line": 3115, "column": 34 }, "identifierName": "i" @@ -121229,15 +122290,15 @@ }, "init": { "type": "NumericLiteral", - "start": 123465, - "end": 123466, + "start": 123979, + "end": 123980, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 37 }, "end": { - "line": 3107, + "line": 3115, "column": 38 } }, @@ -121250,29 +122311,29 @@ }, { "type": "VariableDeclarator", - "start": 123468, - "end": 123492, + "start": 123982, + "end": 124006, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 40 }, "end": { - "line": 3107, + "line": 3115, "column": 64 } }, "id": { "type": "Identifier", - "start": 123468, - "end": 123471, + "start": 123982, + "end": 123985, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 40 }, "end": { - "line": 3107, + "line": 3115, "column": 43 }, "identifierName": "len" @@ -121281,43 +122342,43 @@ }, "init": { "type": "MemberExpression", - "start": 123474, - "end": 123492, + "start": 123988, + "end": 124006, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 46 }, "end": { - "line": 3107, + "line": 3115, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 123474, - "end": 123485, + "start": 123988, + "end": 123999, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 46 }, "end": { - "line": 3107, + "line": 3115, "column": 57 } }, "object": { "type": "Identifier", - "start": 123474, - "end": 123477, + "start": 123988, + "end": 123991, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 46 }, "end": { - "line": 3107, + "line": 3115, "column": 49 }, "identifierName": "cfg" @@ -121326,15 +122387,15 @@ }, "property": { "type": "Identifier", - "start": 123478, - "end": 123485, + "start": 123992, + "end": 123999, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 50 }, "end": { - "line": 3107, + "line": 3115, "column": 57 }, "identifierName": "buckets" @@ -121345,15 +122406,15 @@ }, "property": { "type": "Identifier", - "start": 123486, - "end": 123492, + "start": 124000, + "end": 124006, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 58 }, "end": { - "line": 3107, + "line": 3115, "column": 64 }, "identifierName": "length" @@ -121368,29 +122429,29 @@ }, "test": { "type": "BinaryExpression", - "start": 123494, - "end": 123501, + "start": 124008, + "end": 124015, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 66 }, "end": { - "line": 3107, + "line": 3115, "column": 73 } }, "left": { "type": "Identifier", - "start": 123494, - "end": 123495, + "start": 124008, + "end": 124009, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 66 }, "end": { - "line": 3107, + "line": 3115, "column": 67 }, "identifierName": "i" @@ -121400,15 +122461,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 123498, - "end": 123501, + "start": 124012, + "end": 124015, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 70 }, "end": { - "line": 3107, + "line": 3115, "column": 73 }, "identifierName": "len" @@ -121418,15 +122479,15 @@ }, "update": { "type": "UpdateExpression", - "start": 123503, - "end": 123506, + "start": 124017, + "end": 124020, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 75 }, "end": { - "line": 3107, + "line": 3115, "column": 78 } }, @@ -121434,15 +122495,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 123503, - "end": 123504, + "start": 124017, + "end": 124018, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 75 }, "end": { - "line": 3107, + "line": 3115, "column": 76 }, "identifierName": "i" @@ -121452,59 +122513,59 @@ }, "body": { "type": "BlockStatement", - "start": 123508, - "end": 123610, + "start": 124022, + "end": 124124, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 80 }, "end": { - "line": 3109, + "line": 3117, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 123538, - "end": 123584, + "start": 124052, + "end": 124098, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 28 }, "end": { - "line": 3108, + "line": 3116, "column": 74 } }, "expression": { "type": "AssignmentExpression", - "start": 123538, - "end": 123583, + "start": 124052, + "end": 124097, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 28 }, "end": { - "line": 3108, + "line": 3116, "column": 73 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 123538, - "end": 123550, + "start": 124052, + "end": 124064, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 28 }, "end": { - "line": 3108, + "line": 3116, "column": 40 }, "identifierName": "countIndices" @@ -121513,71 +122574,71 @@ }, "right": { "type": "MemberExpression", - "start": 123554, - "end": 123583, + "start": 124068, + "end": 124097, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 44 }, "end": { - "line": 3108, + "line": 3116, "column": 73 } }, "object": { "type": "MemberExpression", - "start": 123554, - "end": 123576, + "start": 124068, + "end": 124090, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 44 }, "end": { - "line": 3108, + "line": 3116, "column": 66 } }, "object": { "type": "MemberExpression", - "start": 123554, - "end": 123568, + "start": 124068, + "end": 124082, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 44 }, "end": { - "line": 3108, + "line": 3116, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 123554, - "end": 123565, + "start": 124068, + "end": 124079, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 44 }, "end": { - "line": 3108, + "line": 3116, "column": 55 } }, "object": { "type": "Identifier", - "start": 123554, - "end": 123557, + "start": 124068, + "end": 124071, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 44 }, "end": { - "line": 3108, + "line": 3116, "column": 47 }, "identifierName": "cfg" @@ -121586,15 +122647,15 @@ }, "property": { "type": "Identifier", - "start": 123558, - "end": 123565, + "start": 124072, + "end": 124079, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 48 }, "end": { - "line": 3108, + "line": 3116, "column": 55 }, "identifierName": "buckets" @@ -121605,15 +122666,15 @@ }, "property": { "type": "Identifier", - "start": 123566, - "end": 123567, + "start": 124080, + "end": 124081, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 56 }, "end": { - "line": 3108, + "line": 3116, "column": 57 }, "identifierName": "i" @@ -121624,15 +122685,15 @@ }, "property": { "type": "Identifier", - "start": 123569, - "end": 123576, + "start": 124083, + "end": 124090, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 59 }, "end": { - "line": 3108, + "line": 3116, "column": 66 }, "identifierName": "indices" @@ -121643,15 +122704,15 @@ }, "property": { "type": "Identifier", - "start": 123577, - "end": 123583, + "start": 124091, + "end": 124097, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 67 }, "end": { - "line": 3108, + "line": 3116, "column": 73 }, "identifierName": "length" @@ -121668,15 +122729,15 @@ }, { "type": "BreakStatement", - "start": 123635, - "end": 123641, + "start": 124149, + "end": 124155, "loc": { "start": { - "line": 3110, + "line": 3118, "column": 24 }, "end": { - "line": 3110, + "line": 3118, "column": 30 } }, @@ -121685,15 +122746,15 @@ ], "test": { "type": "Identifier", - "start": 123423, - "end": 123426, + "start": 123937, + "end": 123940, "loc": { "start": { - "line": 3106, + "line": 3114, "column": 25 }, "end": { - "line": 3106, + "line": 3114, "column": 28 }, "identifierName": "DTX" @@ -121703,59 +122764,59 @@ }, { "type": "SwitchCase", - "start": 123662, - "end": 123770, + "start": 124176, + "end": 124284, "loc": { "start": { - "line": 3111, + "line": 3119, "column": 20 }, "end": { - "line": 3113, + "line": 3121, "column": 30 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 123704, - "end": 123739, + "start": 124218, + "end": 124253, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 24 }, "end": { - "line": 3112, + "line": 3120, "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 123704, - "end": 123738, + "start": 124218, + "end": 124252, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 24 }, "end": { - "line": 3112, + "line": 3120, "column": 58 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 123704, - "end": 123716, + "start": 124218, + "end": 124230, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 24 }, "end": { - "line": 3112, + "line": 3120, "column": 36 }, "identifierName": "countIndices" @@ -121764,43 +122825,43 @@ }, "right": { "type": "MemberExpression", - "start": 123720, - "end": 123738, + "start": 124234, + "end": 124252, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 40 }, "end": { - "line": 3112, + "line": 3120, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 123720, - "end": 123731, + "start": 124234, + "end": 124245, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 40 }, "end": { - "line": 3112, + "line": 3120, "column": 51 } }, "object": { "type": "Identifier", - "start": 123720, - "end": 123723, + "start": 124234, + "end": 124237, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 40 }, "end": { - "line": 3112, + "line": 3120, "column": 43 }, "identifierName": "cfg" @@ -121809,15 +122870,15 @@ }, "property": { "type": "Identifier", - "start": 123724, - "end": 123731, + "start": 124238, + "end": 124245, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 44 }, "end": { - "line": 3112, + "line": 3120, "column": 51 }, "identifierName": "indices" @@ -121828,15 +122889,15 @@ }, "property": { "type": "Identifier", - "start": 123732, - "end": 123738, + "start": 124246, + "end": 124252, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 52 }, "end": { - "line": 3112, + "line": 3120, "column": 58 }, "identifierName": "length" @@ -121849,15 +122910,15 @@ }, { "type": "BreakStatement", - "start": 123764, - "end": 123770, + "start": 124278, + "end": 124284, "loc": { "start": { - "line": 3113, + "line": 3121, "column": 24 }, "end": { - "line": 3113, + "line": 3121, "column": 30 } }, @@ -121866,15 +122927,15 @@ ], "test": { "type": "Identifier", - "start": 123667, - "end": 123678, + "start": 124181, + "end": 124192, "loc": { "start": { - "line": 3111, + "line": 3119, "column": 25 }, "end": { - "line": 3111, + "line": 3119, "column": 36 }, "identifierName": "VBO_BATCHED" @@ -121884,59 +122945,59 @@ }, { "type": "SwitchCase", - "start": 123791, - "end": 123910, + "start": 124305, + "end": 124424, "loc": { "start": { - "line": 3114, + "line": 3122, "column": 20 }, "end": { - "line": 3116, + "line": 3124, "column": 30 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 123835, - "end": 123879, + "start": 124349, + "end": 124393, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 24 }, "end": { - "line": 3115, + "line": 3123, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 123835, - "end": 123878, + "start": 124349, + "end": 124392, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 24 }, "end": { - "line": 3115, + "line": 3123, "column": 67 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 123835, - "end": 123847, + "start": 124349, + "end": 124361, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 24 }, "end": { - "line": 3115, + "line": 3123, "column": 36 }, "identifierName": "countIndices" @@ -121945,57 +123006,57 @@ }, "right": { "type": "MemberExpression", - "start": 123851, - "end": 123878, + "start": 124365, + "end": 124392, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 40 }, "end": { - "line": 3115, + "line": 3123, "column": 67 } }, "object": { "type": "MemberExpression", - "start": 123851, - "end": 123871, + "start": 124365, + "end": 124385, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 40 }, "end": { - "line": 3115, + "line": 3123, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 123851, - "end": 123863, + "start": 124365, + "end": 124377, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 40 }, "end": { - "line": 3115, + "line": 3123, "column": 52 } }, "object": { "type": "Identifier", - "start": 123851, - "end": 123854, + "start": 124365, + "end": 124368, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 40 }, "end": { - "line": 3115, + "line": 3123, "column": 43 }, "identifierName": "cfg" @@ -122004,15 +123065,15 @@ }, "property": { "type": "Identifier", - "start": 123855, - "end": 123863, + "start": 124369, + "end": 124377, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 44 }, "end": { - "line": 3115, + "line": 3123, "column": 52 }, "identifierName": "geometry" @@ -122023,15 +123084,15 @@ }, "property": { "type": "Identifier", - "start": 123864, - "end": 123871, + "start": 124378, + "end": 124385, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 53 }, "end": { - "line": 3115, + "line": 3123, "column": 60 }, "identifierName": "indices" @@ -122042,15 +123103,15 @@ }, "property": { "type": "Identifier", - "start": 123872, - "end": 123878, + "start": 124386, + "end": 124392, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 61 }, "end": { - "line": 3115, + "line": 3123, "column": 67 }, "identifierName": "length" @@ -122063,15 +123124,15 @@ }, { "type": "BreakStatement", - "start": 123904, - "end": 123910, + "start": 124418, + "end": 124424, "loc": { "start": { - "line": 3116, + "line": 3124, "column": 24 }, "end": { - "line": 3116, + "line": 3124, "column": 30 } }, @@ -122080,15 +123141,15 @@ ], "test": { "type": "Identifier", - "start": 123796, - "end": 123809, + "start": 124310, + "end": 124323, "loc": { "start": { - "line": 3114, + "line": 3122, "column": 25 }, "end": { - "line": 3114, + "line": 3122, "column": 38 }, "identifierName": "VBO_INSTANCED" @@ -122100,57 +123161,57 @@ }, { "type": "ReturnStatement", - "start": 123945, - "end": 123981, + "start": 124459, + "end": 124495, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 16 }, "end": { - "line": 3118, + "line": 3126, "column": 52 } }, "argument": { "type": "CallExpression", - "start": 123952, - "end": 123980, + "start": 124466, + "end": 124494, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 23 }, "end": { - "line": 3118, + "line": 3126, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 123952, - "end": 123962, + "start": 124466, + "end": 124476, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 23 }, "end": { - "line": 3118, + "line": 3126, "column": 33 } }, "object": { "type": "Identifier", - "start": 123952, - "end": 123956, + "start": 124466, + "end": 124470, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 23 }, "end": { - "line": 3118, + "line": 3126, "column": 27 }, "identifierName": "Math" @@ -122159,15 +123220,15 @@ }, "property": { "type": "Identifier", - "start": 123957, - "end": 123962, + "start": 124471, + "end": 124476, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 28 }, "end": { - "line": 3118, + "line": 3126, "column": 33 }, "identifierName": "round" @@ -122179,29 +123240,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 123963, - "end": 123979, + "start": 124477, + "end": 124493, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 34 }, "end": { - "line": 3118, + "line": 3126, "column": 50 } }, "left": { "type": "Identifier", - "start": 123963, - "end": 123975, + "start": 124477, + "end": 124489, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 34 }, "end": { - "line": 3118, + "line": 3126, "column": 46 }, "identifierName": "countIndices" @@ -122211,15 +123272,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 123978, - "end": 123979, + "start": 124492, + "end": 124493, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 49 }, "end": { - "line": 3118, + "line": 3126, "column": 50 } }, @@ -122236,15 +123297,15 @@ ], "test": { "type": "StringLiteral", - "start": 123351, - "end": 123360, + "start": 123865, + "end": 123874, "loc": { "start": { - "line": 3104, + "line": 3112, "column": 17 }, "end": { - "line": 3104, + "line": 3112, "column": 26 } }, @@ -122257,58 +123318,58 @@ }, { "type": "SwitchCase", - "start": 123994, - "end": 124799, + "start": 124508, + "end": 125313, "loc": { "start": { - "line": 3119, + "line": 3127, "column": 12 }, "end": { - "line": 3134, + "line": 3142, "column": 48 } }, "consequent": [ { "type": "SwitchStatement", - "start": 124025, - "end": 124750, + "start": 124539, + "end": 125264, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 16 }, "end": { - "line": 3133, + "line": 3141, "column": 17 } }, "discriminant": { "type": "MemberExpression", - "start": 124033, - "end": 124041, + "start": 124547, + "end": 124555, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 24 }, "end": { - "line": 3120, + "line": 3128, "column": 32 } }, "object": { "type": "Identifier", - "start": 124033, - "end": 124036, + "start": 124547, + "end": 124550, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 24 }, "end": { - "line": 3120, + "line": 3128, "column": 27 }, "identifierName": "cfg" @@ -122317,15 +123378,15 @@ }, "property": { "type": "Identifier", - "start": 124037, - "end": 124041, + "start": 124551, + "end": 124555, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 28 }, "end": { - "line": 3120, + "line": 3128, "column": 32 }, "identifierName": "type" @@ -122337,73 +123398,73 @@ "cases": [ { "type": "SwitchCase", - "start": 124065, - "end": 124300, + "start": 124579, + "end": 124814, "loc": { "start": { - "line": 3121, + "line": 3129, "column": 20 }, "end": { - "line": 3125, + "line": 3133, "column": 30 } }, "consequent": [ { "type": "ForStatement", - "start": 124099, - "end": 124269, + "start": 124613, + "end": 124783, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 24 }, "end": { - "line": 3124, + "line": 3132, "column": 25 } }, "init": { "type": "VariableDeclaration", - "start": 124104, - "end": 124139, + "start": 124618, + "end": 124653, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 29 }, "end": { - "line": 3122, + "line": 3130, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 124108, - "end": 124113, + "start": 124622, + "end": 124627, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 33 }, "end": { - "line": 3122, + "line": 3130, "column": 38 } }, "id": { "type": "Identifier", - "start": 124108, - "end": 124109, + "start": 124622, + "end": 124623, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 33 }, "end": { - "line": 3122, + "line": 3130, "column": 34 }, "identifierName": "i" @@ -122412,15 +123473,15 @@ }, "init": { "type": "NumericLiteral", - "start": 124112, - "end": 124113, + "start": 124626, + "end": 124627, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 37 }, "end": { - "line": 3122, + "line": 3130, "column": 38 } }, @@ -122433,29 +123494,29 @@ }, { "type": "VariableDeclarator", - "start": 124115, - "end": 124139, + "start": 124629, + "end": 124653, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 40 }, "end": { - "line": 3122, + "line": 3130, "column": 64 } }, "id": { "type": "Identifier", - "start": 124115, - "end": 124118, + "start": 124629, + "end": 124632, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 40 }, "end": { - "line": 3122, + "line": 3130, "column": 43 }, "identifierName": "len" @@ -122464,43 +123525,43 @@ }, "init": { "type": "MemberExpression", - "start": 124121, - "end": 124139, + "start": 124635, + "end": 124653, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 46 }, "end": { - "line": 3122, + "line": 3130, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 124121, - "end": 124132, + "start": 124635, + "end": 124646, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 46 }, "end": { - "line": 3122, + "line": 3130, "column": 57 } }, "object": { "type": "Identifier", - "start": 124121, - "end": 124124, + "start": 124635, + "end": 124638, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 46 }, "end": { - "line": 3122, + "line": 3130, "column": 49 }, "identifierName": "cfg" @@ -122509,15 +123570,15 @@ }, "property": { "type": "Identifier", - "start": 124125, - "end": 124132, + "start": 124639, + "end": 124646, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 50 }, "end": { - "line": 3122, + "line": 3130, "column": 57 }, "identifierName": "buckets" @@ -122528,15 +123589,15 @@ }, "property": { "type": "Identifier", - "start": 124133, - "end": 124139, + "start": 124647, + "end": 124653, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 58 }, "end": { - "line": 3122, + "line": 3130, "column": 64 }, "identifierName": "length" @@ -122551,29 +123612,29 @@ }, "test": { "type": "BinaryExpression", - "start": 124141, - "end": 124148, + "start": 124655, + "end": 124662, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 66 }, "end": { - "line": 3122, + "line": 3130, "column": 73 } }, "left": { "type": "Identifier", - "start": 124141, - "end": 124142, + "start": 124655, + "end": 124656, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 66 }, "end": { - "line": 3122, + "line": 3130, "column": 67 }, "identifierName": "i" @@ -122583,15 +123644,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 124145, - "end": 124148, + "start": 124659, + "end": 124662, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 70 }, "end": { - "line": 3122, + "line": 3130, "column": 73 }, "identifierName": "len" @@ -122601,15 +123662,15 @@ }, "update": { "type": "UpdateExpression", - "start": 124150, - "end": 124153, + "start": 124664, + "end": 124667, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 75 }, "end": { - "line": 3122, + "line": 3130, "column": 78 } }, @@ -122617,15 +123678,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 124150, - "end": 124151, + "start": 124664, + "end": 124665, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 75 }, "end": { - "line": 3122, + "line": 3130, "column": 76 }, "identifierName": "i" @@ -122635,59 +123696,59 @@ }, "body": { "type": "BlockStatement", - "start": 124155, - "end": 124269, + "start": 124669, + "end": 124783, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 80 }, "end": { - "line": 3124, + "line": 3132, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 124185, - "end": 124243, + "start": 124699, + "end": 124757, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 28 }, "end": { - "line": 3123, + "line": 3131, "column": 86 } }, "expression": { "type": "AssignmentExpression", - "start": 124185, - "end": 124242, + "start": 124699, + "end": 124756, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 28 }, "end": { - "line": 3123, + "line": 3131, "column": 85 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 124185, - "end": 124197, + "start": 124699, + "end": 124711, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 28 }, "end": { - "line": 3123, + "line": 3131, "column": 40 }, "identifierName": "countIndices" @@ -122696,71 +123757,71 @@ }, "right": { "type": "MemberExpression", - "start": 124201, - "end": 124242, + "start": 124715, + "end": 124756, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 44 }, "end": { - "line": 3123, + "line": 3131, "column": 85 } }, "object": { "type": "MemberExpression", - "start": 124201, - "end": 124235, + "start": 124715, + "end": 124749, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 44 }, "end": { - "line": 3123, + "line": 3131, "column": 78 } }, "object": { "type": "MemberExpression", - "start": 124201, - "end": 124215, + "start": 124715, + "end": 124729, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 44 }, "end": { - "line": 3123, + "line": 3131, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 124201, - "end": 124212, + "start": 124715, + "end": 124726, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 44 }, "end": { - "line": 3123, + "line": 3131, "column": 55 } }, "object": { "type": "Identifier", - "start": 124201, - "end": 124204, + "start": 124715, + "end": 124718, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 44 }, "end": { - "line": 3123, + "line": 3131, "column": 47 }, "identifierName": "cfg" @@ -122769,15 +123830,15 @@ }, "property": { "type": "Identifier", - "start": 124205, - "end": 124212, + "start": 124719, + "end": 124726, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 48 }, "end": { - "line": 3123, + "line": 3131, "column": 55 }, "identifierName": "buckets" @@ -122788,15 +123849,15 @@ }, "property": { "type": "Identifier", - "start": 124213, - "end": 124214, + "start": 124727, + "end": 124728, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 56 }, "end": { - "line": 3123, + "line": 3131, "column": 57 }, "identifierName": "i" @@ -122807,15 +123868,15 @@ }, "property": { "type": "Identifier", - "start": 124216, - "end": 124235, + "start": 124730, + "end": 124749, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 59 }, "end": { - "line": 3123, + "line": 3131, "column": 78 }, "identifierName": "positionsCompressed" @@ -122826,15 +123887,15 @@ }, "property": { "type": "Identifier", - "start": 124236, - "end": 124242, + "start": 124750, + "end": 124756, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 79 }, "end": { - "line": 3123, + "line": 3131, "column": 85 }, "identifierName": "length" @@ -122851,15 +123912,15 @@ }, { "type": "BreakStatement", - "start": 124294, - "end": 124300, + "start": 124808, + "end": 124814, "loc": { "start": { - "line": 3125, + "line": 3133, "column": 24 }, "end": { - "line": 3125, + "line": 3133, "column": 30 } }, @@ -122868,15 +123929,15 @@ ], "test": { "type": "Identifier", - "start": 124070, - "end": 124073, + "start": 124584, + "end": 124587, "loc": { "start": { - "line": 3121, + "line": 3129, "column": 25 }, "end": { - "line": 3121, + "line": 3129, "column": 28 }, "identifierName": "DTX" @@ -122886,59 +123947,59 @@ }, { "type": "SwitchCase", - "start": 124321, - "end": 124480, + "start": 124835, + "end": 124994, "loc": { "start": { - "line": 3126, + "line": 3134, "column": 20 }, "end": { - "line": 3128, + "line": 3136, "column": 30 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 124363, - "end": 124449, + "start": 124877, + "end": 124963, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 24 }, "end": { - "line": 3127, + "line": 3135, "column": 110 } }, "expression": { "type": "AssignmentExpression", - "start": 124363, - "end": 124448, + "start": 124877, + "end": 124962, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 24 }, "end": { - "line": 3127, + "line": 3135, "column": 109 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 124363, - "end": 124375, + "start": 124877, + "end": 124889, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 24 }, "end": { - "line": 3127, + "line": 3135, "column": 36 }, "identifierName": "countIndices" @@ -122947,43 +124008,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 124379, - "end": 124448, + "start": 124893, + "end": 124962, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 40 }, "end": { - "line": 3127, + "line": 3135, "column": 109 } }, "test": { "type": "MemberExpression", - "start": 124379, - "end": 124392, + "start": 124893, + "end": 124906, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 40 }, "end": { - "line": 3127, + "line": 3135, "column": 53 } }, "object": { "type": "Identifier", - "start": 124379, - "end": 124382, + "start": 124893, + "end": 124896, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 40 }, "end": { - "line": 3127, + "line": 3135, "column": 43 }, "identifierName": "cfg" @@ -122992,15 +124053,15 @@ }, "property": { "type": "Identifier", - "start": 124383, - "end": 124392, + "start": 124897, + "end": 124906, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 44 }, "end": { - "line": 3127, + "line": 3135, "column": 53 }, "identifierName": "positions" @@ -123011,43 +124072,43 @@ }, "consequent": { "type": "MemberExpression", - "start": 124395, - "end": 124415, + "start": 124909, + "end": 124929, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 56 }, "end": { - "line": 3127, + "line": 3135, "column": 76 } }, "object": { "type": "MemberExpression", - "start": 124395, - "end": 124408, + "start": 124909, + "end": 124922, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 56 }, "end": { - "line": 3127, + "line": 3135, "column": 69 } }, "object": { "type": "Identifier", - "start": 124395, - "end": 124398, + "start": 124909, + "end": 124912, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 56 }, "end": { - "line": 3127, + "line": 3135, "column": 59 }, "identifierName": "cfg" @@ -123056,15 +124117,15 @@ }, "property": { "type": "Identifier", - "start": 124399, - "end": 124408, + "start": 124913, + "end": 124922, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 60 }, "end": { - "line": 3127, + "line": 3135, "column": 69 }, "identifierName": "positions" @@ -123075,15 +124136,15 @@ }, "property": { "type": "Identifier", - "start": 124409, - "end": 124415, + "start": 124923, + "end": 124929, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 70 }, "end": { - "line": 3127, + "line": 3135, "column": 76 }, "identifierName": "length" @@ -123094,43 +124155,43 @@ }, "alternate": { "type": "MemberExpression", - "start": 124418, - "end": 124448, + "start": 124932, + "end": 124962, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 79 }, "end": { - "line": 3127, + "line": 3135, "column": 109 } }, "object": { "type": "MemberExpression", - "start": 124418, - "end": 124441, + "start": 124932, + "end": 124955, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 79 }, "end": { - "line": 3127, + "line": 3135, "column": 102 } }, "object": { "type": "Identifier", - "start": 124418, - "end": 124421, + "start": 124932, + "end": 124935, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 79 }, "end": { - "line": 3127, + "line": 3135, "column": 82 }, "identifierName": "cfg" @@ -123139,15 +124200,15 @@ }, "property": { "type": "Identifier", - "start": 124422, - "end": 124441, + "start": 124936, + "end": 124955, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 83 }, "end": { - "line": 3127, + "line": 3135, "column": 102 }, "identifierName": "positionsCompressed" @@ -123158,15 +124219,15 @@ }, "property": { "type": "Identifier", - "start": 124442, - "end": 124448, + "start": 124956, + "end": 124962, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 103 }, "end": { - "line": 3127, + "line": 3135, "column": 109 }, "identifierName": "length" @@ -123180,15 +124241,15 @@ }, { "type": "BreakStatement", - "start": 124474, - "end": 124480, + "start": 124988, + "end": 124994, "loc": { "start": { - "line": 3128, + "line": 3136, "column": 24 }, "end": { - "line": 3128, + "line": 3136, "column": 30 } }, @@ -123197,15 +124258,15 @@ ], "test": { "type": "Identifier", - "start": 124326, - "end": 124337, + "start": 124840, + "end": 124851, "loc": { "start": { - "line": 3126, + "line": 3134, "column": 25 }, "end": { - "line": 3126, + "line": 3134, "column": 36 }, "identifierName": "VBO_BATCHED" @@ -123215,59 +124276,59 @@ }, { "type": "SwitchCase", - "start": 124501, - "end": 124732, + "start": 125015, + "end": 125246, "loc": { "start": { - "line": 3129, + "line": 3137, "column": 20 }, "end": { - "line": 3132, + "line": 3140, "column": 30 } }, "consequent": [ { "type": "VariableDeclaration", - "start": 124545, - "end": 124575, + "start": 125059, + "end": 125089, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 24 }, "end": { - "line": 3130, + "line": 3138, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 124551, - "end": 124574, + "start": 125065, + "end": 125088, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 30 }, "end": { - "line": 3130, + "line": 3138, "column": 53 } }, "id": { "type": "Identifier", - "start": 124551, - "end": 124559, + "start": 125065, + "end": 125073, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 30 }, "end": { - "line": 3130, + "line": 3138, "column": 38 }, "identifierName": "geometry" @@ -123276,29 +124337,29 @@ }, "init": { "type": "MemberExpression", - "start": 124562, - "end": 124574, + "start": 125076, + "end": 125088, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 41 }, "end": { - "line": 3130, + "line": 3138, "column": 53 } }, "object": { "type": "Identifier", - "start": 124562, - "end": 124565, + "start": 125076, + "end": 125079, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 41 }, "end": { - "line": 3130, + "line": 3138, "column": 44 }, "identifierName": "cfg" @@ -123307,15 +124368,15 @@ }, "property": { "type": "Identifier", - "start": 124566, - "end": 124574, + "start": 125080, + "end": 125088, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 45 }, "end": { - "line": 3130, + "line": 3138, "column": 53 }, "identifierName": "geometry" @@ -123330,44 +124391,44 @@ }, { "type": "ExpressionStatement", - "start": 124600, - "end": 124701, + "start": 125114, + "end": 125215, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 24 }, "end": { - "line": 3131, + "line": 3139, "column": 125 } }, "expression": { "type": "AssignmentExpression", - "start": 124600, - "end": 124700, + "start": 125114, + "end": 125214, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 24 }, "end": { - "line": 3131, + "line": 3139, "column": 124 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 124600, - "end": 124612, + "start": 125114, + "end": 125126, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 24 }, "end": { - "line": 3131, + "line": 3139, "column": 36 }, "identifierName": "countIndices" @@ -123376,43 +124437,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 124616, - "end": 124700, + "start": 125130, + "end": 125214, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 40 }, "end": { - "line": 3131, + "line": 3139, "column": 124 } }, "test": { "type": "MemberExpression", - "start": 124616, - "end": 124634, + "start": 125130, + "end": 125148, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 40 }, "end": { - "line": 3131, + "line": 3139, "column": 58 } }, "object": { "type": "Identifier", - "start": 124616, - "end": 124624, + "start": 125130, + "end": 125138, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 40 }, "end": { - "line": 3131, + "line": 3139, "column": 48 }, "identifierName": "geometry" @@ -123421,15 +124482,15 @@ }, "property": { "type": "Identifier", - "start": 124625, - "end": 124634, + "start": 125139, + "end": 125148, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 49 }, "end": { - "line": 3131, + "line": 3139, "column": 58 }, "identifierName": "positions" @@ -123440,43 +124501,43 @@ }, "consequent": { "type": "MemberExpression", - "start": 124637, - "end": 124662, + "start": 125151, + "end": 125176, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 61 }, "end": { - "line": 3131, + "line": 3139, "column": 86 } }, "object": { "type": "MemberExpression", - "start": 124637, - "end": 124655, + "start": 125151, + "end": 125169, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 61 }, "end": { - "line": 3131, + "line": 3139, "column": 79 } }, "object": { "type": "Identifier", - "start": 124637, - "end": 124645, + "start": 125151, + "end": 125159, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 61 }, "end": { - "line": 3131, + "line": 3139, "column": 69 }, "identifierName": "geometry" @@ -123485,15 +124546,15 @@ }, "property": { "type": "Identifier", - "start": 124646, - "end": 124655, + "start": 125160, + "end": 125169, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 70 }, "end": { - "line": 3131, + "line": 3139, "column": 79 }, "identifierName": "positions" @@ -123504,15 +124565,15 @@ }, "property": { "type": "Identifier", - "start": 124656, - "end": 124662, + "start": 125170, + "end": 125176, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 80 }, "end": { - "line": 3131, + "line": 3139, "column": 86 }, "identifierName": "length" @@ -123523,43 +124584,43 @@ }, "alternate": { "type": "MemberExpression", - "start": 124665, - "end": 124700, + "start": 125179, + "end": 125214, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 89 }, "end": { - "line": 3131, + "line": 3139, "column": 124 } }, "object": { "type": "MemberExpression", - "start": 124665, - "end": 124693, + "start": 125179, + "end": 125207, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 89 }, "end": { - "line": 3131, + "line": 3139, "column": 117 } }, "object": { "type": "Identifier", - "start": 124665, - "end": 124673, + "start": 125179, + "end": 125187, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 89 }, "end": { - "line": 3131, + "line": 3139, "column": 97 }, "identifierName": "geometry" @@ -123568,15 +124629,15 @@ }, "property": { "type": "Identifier", - "start": 124674, - "end": 124693, + "start": 125188, + "end": 125207, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 98 }, "end": { - "line": 3131, + "line": 3139, "column": 117 }, "identifierName": "positionsCompressed" @@ -123587,15 +124648,15 @@ }, "property": { "type": "Identifier", - "start": 124694, - "end": 124700, + "start": 125208, + "end": 125214, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 118 }, "end": { - "line": 3131, + "line": 3139, "column": 124 }, "identifierName": "length" @@ -123609,15 +124670,15 @@ }, { "type": "BreakStatement", - "start": 124726, - "end": 124732, + "start": 125240, + "end": 125246, "loc": { "start": { - "line": 3132, + "line": 3140, "column": 24 }, "end": { - "line": 3132, + "line": 3140, "column": 30 } }, @@ -123626,15 +124687,15 @@ ], "test": { "type": "Identifier", - "start": 124506, - "end": 124519, + "start": 125020, + "end": 125033, "loc": { "start": { - "line": 3129, + "line": 3137, "column": 25 }, "end": { - "line": 3129, + "line": 3137, "column": 38 }, "identifierName": "VBO_INSTANCED" @@ -123646,57 +124707,57 @@ }, { "type": "ReturnStatement", - "start": 124767, - "end": 124799, + "start": 125281, + "end": 125313, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 16 }, "end": { - "line": 3134, + "line": 3142, "column": 48 } }, "argument": { "type": "CallExpression", - "start": 124774, - "end": 124798, + "start": 125288, + "end": 125312, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 23 }, "end": { - "line": 3134, + "line": 3142, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 124774, - "end": 124784, + "start": 125288, + "end": 125298, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 23 }, "end": { - "line": 3134, + "line": 3142, "column": 33 } }, "object": { "type": "Identifier", - "start": 124774, - "end": 124778, + "start": 125288, + "end": 125292, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 23 }, "end": { - "line": 3134, + "line": 3142, "column": 27 }, "identifierName": "Math" @@ -123705,15 +124766,15 @@ }, "property": { "type": "Identifier", - "start": 124779, - "end": 124784, + "start": 125293, + "end": 125298, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 28 }, "end": { - "line": 3134, + "line": 3142, "column": 33 }, "identifierName": "round" @@ -123725,15 +124786,15 @@ "arguments": [ { "type": "Identifier", - "start": 124785, - "end": 124797, + "start": 125299, + "end": 125311, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 34 }, "end": { - "line": 3134, + "line": 3142, "column": 46 }, "identifierName": "countIndices" @@ -123746,15 +124807,15 @@ ], "test": { "type": "StringLiteral", - "start": 123999, - "end": 124007, + "start": 124513, + "end": 124521, "loc": { "start": { - "line": 3119, + "line": 3127, "column": 17 }, "end": { - "line": 3119, + "line": 3127, "column": 25 } }, @@ -123767,30 +124828,30 @@ }, { "type": "SwitchCase", - "start": 124812, - "end": 124825, + "start": 125326, + "end": 125339, "loc": { "start": { - "line": 3135, + "line": 3143, "column": 12 }, "end": { - "line": 3135, + "line": 3143, "column": 25 } }, "consequent": [], "test": { "type": "StringLiteral", - "start": 124817, - "end": 124824, + "start": 125331, + "end": 125338, "loc": { "start": { - "line": 3135, + "line": 3143, "column": 17 }, "end": { - "line": 3135, + "line": 3143, "column": 24 } }, @@ -123803,58 +124864,58 @@ }, { "type": "SwitchCase", - "start": 124838, - "end": 125476, + "start": 125352, + "end": 125990, "loc": { "start": { - "line": 3136, + "line": 3144, "column": 12 }, "end": { - "line": 3150, + "line": 3158, "column": 52 } }, "consequent": [ { "type": "SwitchStatement", - "start": 124873, - "end": 125423, + "start": 125387, + "end": 125937, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 16 }, "end": { - "line": 3149, + "line": 3157, "column": 17 } }, "discriminant": { "type": "MemberExpression", - "start": 124881, - "end": 124889, + "start": 125395, + "end": 125403, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 24 }, "end": { - "line": 3137, + "line": 3145, "column": 32 } }, "object": { "type": "Identifier", - "start": 124881, - "end": 124884, + "start": 125395, + "end": 125398, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 24 }, "end": { - "line": 3137, + "line": 3145, "column": 27 }, "identifierName": "cfg" @@ -123863,15 +124924,15 @@ }, "property": { "type": "Identifier", - "start": 124885, - "end": 124889, + "start": 125399, + "end": 125403, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 28 }, "end": { - "line": 3137, + "line": 3145, "column": 32 }, "identifierName": "type" @@ -123883,73 +124944,73 @@ "cases": [ { "type": "SwitchCase", - "start": 124913, - "end": 125136, + "start": 125427, + "end": 125650, "loc": { "start": { - "line": 3138, + "line": 3146, "column": 20 }, "end": { - "line": 3142, + "line": 3150, "column": 30 } }, "consequent": [ { "type": "ForStatement", - "start": 124947, - "end": 125105, + "start": 125461, + "end": 125619, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 24 }, "end": { - "line": 3141, + "line": 3149, "column": 25 } }, "init": { "type": "VariableDeclaration", - "start": 124952, - "end": 124987, + "start": 125466, + "end": 125501, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 29 }, "end": { - "line": 3139, + "line": 3147, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 124956, - "end": 124961, + "start": 125470, + "end": 125475, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 33 }, "end": { - "line": 3139, + "line": 3147, "column": 38 } }, "id": { "type": "Identifier", - "start": 124956, - "end": 124957, + "start": 125470, + "end": 125471, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 33 }, "end": { - "line": 3139, + "line": 3147, "column": 34 }, "identifierName": "i" @@ -123958,15 +125019,15 @@ }, "init": { "type": "NumericLiteral", - "start": 124960, - "end": 124961, + "start": 125474, + "end": 125475, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 37 }, "end": { - "line": 3139, + "line": 3147, "column": 38 } }, @@ -123979,29 +125040,29 @@ }, { "type": "VariableDeclarator", - "start": 124963, - "end": 124987, + "start": 125477, + "end": 125501, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 40 }, "end": { - "line": 3139, + "line": 3147, "column": 64 } }, "id": { "type": "Identifier", - "start": 124963, - "end": 124966, + "start": 125477, + "end": 125480, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 40 }, "end": { - "line": 3139, + "line": 3147, "column": 43 }, "identifierName": "len" @@ -124010,43 +125071,43 @@ }, "init": { "type": "MemberExpression", - "start": 124969, - "end": 124987, + "start": 125483, + "end": 125501, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 46 }, "end": { - "line": 3139, + "line": 3147, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 124969, - "end": 124980, + "start": 125483, + "end": 125494, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 46 }, "end": { - "line": 3139, + "line": 3147, "column": 57 } }, "object": { "type": "Identifier", - "start": 124969, - "end": 124972, + "start": 125483, + "end": 125486, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 46 }, "end": { - "line": 3139, + "line": 3147, "column": 49 }, "identifierName": "cfg" @@ -124055,15 +125116,15 @@ }, "property": { "type": "Identifier", - "start": 124973, - "end": 124980, + "start": 125487, + "end": 125494, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 50 }, "end": { - "line": 3139, + "line": 3147, "column": 57 }, "identifierName": "buckets" @@ -124074,15 +125135,15 @@ }, "property": { "type": "Identifier", - "start": 124981, - "end": 124987, + "start": 125495, + "end": 125501, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 58 }, "end": { - "line": 3139, + "line": 3147, "column": 64 }, "identifierName": "length" @@ -124097,29 +125158,29 @@ }, "test": { "type": "BinaryExpression", - "start": 124989, - "end": 124996, + "start": 125503, + "end": 125510, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 66 }, "end": { - "line": 3139, + "line": 3147, "column": 73 } }, "left": { "type": "Identifier", - "start": 124989, - "end": 124990, + "start": 125503, + "end": 125504, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 66 }, "end": { - "line": 3139, + "line": 3147, "column": 67 }, "identifierName": "i" @@ -124129,15 +125190,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 124993, - "end": 124996, + "start": 125507, + "end": 125510, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 70 }, "end": { - "line": 3139, + "line": 3147, "column": 73 }, "identifierName": "len" @@ -124147,15 +125208,15 @@ }, "update": { "type": "UpdateExpression", - "start": 124998, - "end": 125001, + "start": 125512, + "end": 125515, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 75 }, "end": { - "line": 3139, + "line": 3147, "column": 78 } }, @@ -124163,15 +125224,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 124998, - "end": 124999, + "start": 125512, + "end": 125513, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 75 }, "end": { - "line": 3139, + "line": 3147, "column": 76 }, "identifierName": "i" @@ -124181,59 +125242,59 @@ }, "body": { "type": "BlockStatement", - "start": 125003, - "end": 125105, + "start": 125517, + "end": 125619, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 80 }, "end": { - "line": 3141, + "line": 3149, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 125033, - "end": 125079, + "start": 125547, + "end": 125593, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 28 }, "end": { - "line": 3140, + "line": 3148, "column": 74 } }, "expression": { "type": "AssignmentExpression", - "start": 125033, - "end": 125078, + "start": 125547, + "end": 125592, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 28 }, "end": { - "line": 3140, + "line": 3148, "column": 73 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 125033, - "end": 125045, + "start": 125547, + "end": 125559, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 28 }, "end": { - "line": 3140, + "line": 3148, "column": 40 }, "identifierName": "countIndices" @@ -124242,71 +125303,71 @@ }, "right": { "type": "MemberExpression", - "start": 125049, - "end": 125078, + "start": 125563, + "end": 125592, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 44 }, "end": { - "line": 3140, + "line": 3148, "column": 73 } }, "object": { "type": "MemberExpression", - "start": 125049, - "end": 125071, + "start": 125563, + "end": 125585, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 44 }, "end": { - "line": 3140, + "line": 3148, "column": 66 } }, "object": { "type": "MemberExpression", - "start": 125049, - "end": 125063, + "start": 125563, + "end": 125577, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 44 }, "end": { - "line": 3140, + "line": 3148, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 125049, - "end": 125060, + "start": 125563, + "end": 125574, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 44 }, "end": { - "line": 3140, + "line": 3148, "column": 55 } }, "object": { "type": "Identifier", - "start": 125049, - "end": 125052, + "start": 125563, + "end": 125566, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 44 }, "end": { - "line": 3140, + "line": 3148, "column": 47 }, "identifierName": "cfg" @@ -124315,15 +125376,15 @@ }, "property": { "type": "Identifier", - "start": 125053, - "end": 125060, + "start": 125567, + "end": 125574, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 48 }, "end": { - "line": 3140, + "line": 3148, "column": 55 }, "identifierName": "buckets" @@ -124334,15 +125395,15 @@ }, "property": { "type": "Identifier", - "start": 125061, - "end": 125062, + "start": 125575, + "end": 125576, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 56 }, "end": { - "line": 3140, + "line": 3148, "column": 57 }, "identifierName": "i" @@ -124353,15 +125414,15 @@ }, "property": { "type": "Identifier", - "start": 125064, - "end": 125071, + "start": 125578, + "end": 125585, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 59 }, "end": { - "line": 3140, + "line": 3148, "column": 66 }, "identifierName": "indices" @@ -124372,15 +125433,15 @@ }, "property": { "type": "Identifier", - "start": 125072, - "end": 125078, + "start": 125586, + "end": 125592, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 67 }, "end": { - "line": 3140, + "line": 3148, "column": 73 }, "identifierName": "length" @@ -124397,15 +125458,15 @@ }, { "type": "BreakStatement", - "start": 125130, - "end": 125136, + "start": 125644, + "end": 125650, "loc": { "start": { - "line": 3142, + "line": 3150, "column": 24 }, "end": { - "line": 3142, + "line": 3150, "column": 30 } }, @@ -124414,15 +125475,15 @@ ], "test": { "type": "Identifier", - "start": 124918, - "end": 124921, + "start": 125432, + "end": 125435, "loc": { "start": { - "line": 3138, + "line": 3146, "column": 25 }, "end": { - "line": 3138, + "line": 3146, "column": 28 }, "identifierName": "DTX" @@ -124432,59 +125493,59 @@ }, { "type": "SwitchCase", - "start": 125157, - "end": 125265, + "start": 125671, + "end": 125779, "loc": { "start": { - "line": 3143, + "line": 3151, "column": 20 }, "end": { - "line": 3145, + "line": 3153, "column": 30 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 125199, - "end": 125234, + "start": 125713, + "end": 125748, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 24 }, "end": { - "line": 3144, + "line": 3152, "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 125199, - "end": 125233, + "start": 125713, + "end": 125747, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 24 }, "end": { - "line": 3144, + "line": 3152, "column": 58 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 125199, - "end": 125211, + "start": 125713, + "end": 125725, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 24 }, "end": { - "line": 3144, + "line": 3152, "column": 36 }, "identifierName": "countIndices" @@ -124493,43 +125554,43 @@ }, "right": { "type": "MemberExpression", - "start": 125215, - "end": 125233, + "start": 125729, + "end": 125747, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 40 }, "end": { - "line": 3144, + "line": 3152, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 125215, - "end": 125226, + "start": 125729, + "end": 125740, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 40 }, "end": { - "line": 3144, + "line": 3152, "column": 51 } }, "object": { "type": "Identifier", - "start": 125215, - "end": 125218, + "start": 125729, + "end": 125732, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 40 }, "end": { - "line": 3144, + "line": 3152, "column": 43 }, "identifierName": "cfg" @@ -124538,15 +125599,15 @@ }, "property": { "type": "Identifier", - "start": 125219, - "end": 125226, + "start": 125733, + "end": 125740, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 44 }, "end": { - "line": 3144, + "line": 3152, "column": 51 }, "identifierName": "indices" @@ -124557,15 +125618,15 @@ }, "property": { "type": "Identifier", - "start": 125227, - "end": 125233, + "start": 125741, + "end": 125747, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 52 }, "end": { - "line": 3144, + "line": 3152, "column": 58 }, "identifierName": "length" @@ -124578,15 +125639,15 @@ }, { "type": "BreakStatement", - "start": 125259, - "end": 125265, + "start": 125773, + "end": 125779, "loc": { "start": { - "line": 3145, + "line": 3153, "column": 24 }, "end": { - "line": 3145, + "line": 3153, "column": 30 } }, @@ -124595,15 +125656,15 @@ ], "test": { "type": "Identifier", - "start": 125162, - "end": 125173, + "start": 125676, + "end": 125687, "loc": { "start": { - "line": 3143, + "line": 3151, "column": 25 }, "end": { - "line": 3143, + "line": 3151, "column": 36 }, "identifierName": "VBO_BATCHED" @@ -124613,59 +125674,59 @@ }, { "type": "SwitchCase", - "start": 125286, - "end": 125405, + "start": 125800, + "end": 125919, "loc": { "start": { - "line": 3146, + "line": 3154, "column": 20 }, "end": { - "line": 3148, + "line": 3156, "column": 30 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 125330, - "end": 125374, + "start": 125844, + "end": 125888, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 24 }, "end": { - "line": 3147, + "line": 3155, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 125330, - "end": 125373, + "start": 125844, + "end": 125887, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 24 }, "end": { - "line": 3147, + "line": 3155, "column": 67 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 125330, - "end": 125342, + "start": 125844, + "end": 125856, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 24 }, "end": { - "line": 3147, + "line": 3155, "column": 36 }, "identifierName": "countIndices" @@ -124674,57 +125735,57 @@ }, "right": { "type": "MemberExpression", - "start": 125346, - "end": 125373, + "start": 125860, + "end": 125887, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 40 }, "end": { - "line": 3147, + "line": 3155, "column": 67 } }, "object": { "type": "MemberExpression", - "start": 125346, - "end": 125366, + "start": 125860, + "end": 125880, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 40 }, "end": { - "line": 3147, + "line": 3155, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 125346, - "end": 125358, + "start": 125860, + "end": 125872, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 40 }, "end": { - "line": 3147, + "line": 3155, "column": 52 } }, "object": { "type": "Identifier", - "start": 125346, - "end": 125349, + "start": 125860, + "end": 125863, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 40 }, "end": { - "line": 3147, + "line": 3155, "column": 43 }, "identifierName": "cfg" @@ -124733,15 +125794,15 @@ }, "property": { "type": "Identifier", - "start": 125350, - "end": 125358, + "start": 125864, + "end": 125872, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 44 }, "end": { - "line": 3147, + "line": 3155, "column": 52 }, "identifierName": "geometry" @@ -124752,15 +125813,15 @@ }, "property": { "type": "Identifier", - "start": 125359, - "end": 125366, + "start": 125873, + "end": 125880, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 53 }, "end": { - "line": 3147, + "line": 3155, "column": 60 }, "identifierName": "indices" @@ -124771,15 +125832,15 @@ }, "property": { "type": "Identifier", - "start": 125367, - "end": 125373, + "start": 125881, + "end": 125887, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 61 }, "end": { - "line": 3147, + "line": 3155, "column": 67 }, "identifierName": "length" @@ -124792,15 +125853,15 @@ }, { "type": "BreakStatement", - "start": 125399, - "end": 125405, + "start": 125913, + "end": 125919, "loc": { "start": { - "line": 3148, + "line": 3156, "column": 24 }, "end": { - "line": 3148, + "line": 3156, "column": 30 } }, @@ -124809,15 +125870,15 @@ ], "test": { "type": "Identifier", - "start": 125291, - "end": 125304, + "start": 125805, + "end": 125818, "loc": { "start": { - "line": 3146, + "line": 3154, "column": 25 }, "end": { - "line": 3146, + "line": 3154, "column": 38 }, "identifierName": "VBO_INSTANCED" @@ -124829,57 +125890,57 @@ }, { "type": "ReturnStatement", - "start": 125440, - "end": 125476, + "start": 125954, + "end": 125990, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 16 }, "end": { - "line": 3150, + "line": 3158, "column": 52 } }, "argument": { "type": "CallExpression", - "start": 125447, - "end": 125475, + "start": 125961, + "end": 125989, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 23 }, "end": { - "line": 3150, + "line": 3158, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 125447, - "end": 125457, + "start": 125961, + "end": 125971, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 23 }, "end": { - "line": 3150, + "line": 3158, "column": 33 } }, "object": { "type": "Identifier", - "start": 125447, - "end": 125451, + "start": 125961, + "end": 125965, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 23 }, "end": { - "line": 3150, + "line": 3158, "column": 27 }, "identifierName": "Math" @@ -124888,15 +125949,15 @@ }, "property": { "type": "Identifier", - "start": 125452, - "end": 125457, + "start": 125966, + "end": 125971, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 28 }, "end": { - "line": 3150, + "line": 3158, "column": 33 }, "identifierName": "round" @@ -124908,29 +125969,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 125458, - "end": 125474, + "start": 125972, + "end": 125988, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 34 }, "end": { - "line": 3150, + "line": 3158, "column": 50 } }, "left": { "type": "Identifier", - "start": 125458, - "end": 125470, + "start": 125972, + "end": 125984, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 34 }, "end": { - "line": 3150, + "line": 3158, "column": 46 }, "identifierName": "countIndices" @@ -124940,15 +126001,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 125473, - "end": 125474, + "start": 125987, + "end": 125988, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 49 }, "end": { - "line": 3150, + "line": 3158, "column": 50 } }, @@ -124965,15 +126026,15 @@ ], "test": { "type": "StringLiteral", - "start": 124843, - "end": 124855, + "start": 125357, + "end": 125369, "loc": { "start": { - "line": 3136, + "line": 3144, "column": 17 }, "end": { - "line": 3136, + "line": 3144, "column": 29 } }, @@ -124988,29 +126049,29 @@ }, { "type": "ReturnStatement", - "start": 125495, - "end": 125504, + "start": 126009, + "end": 126018, "loc": { "start": { - "line": 3152, + "line": 3160, "column": 8 }, "end": { - "line": 3152, + "line": 3160, "column": 17 } }, "argument": { "type": "NumericLiteral", - "start": 125502, - "end": 125503, + "start": 126016, + "end": 126017, "loc": { "start": { - "line": 3152, + "line": 3160, "column": 15 }, "end": { - "line": 3152, + "line": 3160, "column": 16 } }, @@ -125027,15 +126088,15 @@ }, { "type": "ClassMethod", - "start": 125516, - "end": 126673, + "start": 126030, + "end": 127187, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 4 }, "end": { - "line": 3184, + "line": 3192, "column": 5 } }, @@ -125043,15 +126104,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 125516, - "end": 125528, + "start": 126030, + "end": 126042, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 4 }, "end": { - "line": 3155, + "line": 3163, "column": 16 }, "identifierName": "_getDTXLayer" @@ -125066,15 +126127,15 @@ "params": [ { "type": "Identifier", - "start": 125529, - "end": 125532, + "start": 126043, + "end": 126046, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 17 }, "end": { - "line": 3155, + "line": 3163, "column": 20 }, "identifierName": "cfg" @@ -125084,59 +126145,59 @@ ], "body": { "type": "BlockStatement", - "start": 125534, - "end": 126673, + "start": 126048, + "end": 127187, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 22 }, "end": { - "line": 3184, + "line": 3192, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 125544, - "end": 125570, + "start": 126058, + "end": 126084, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 8 }, "end": { - "line": 3156, + "line": 3164, "column": 34 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 125550, - "end": 125569, + "start": 126064, + "end": 126083, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 14 }, "end": { - "line": 3156, + "line": 3164, "column": 33 } }, "id": { "type": "Identifier", - "start": 125550, - "end": 125556, + "start": 126064, + "end": 126070, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 14 }, "end": { - "line": 3156, + "line": 3164, "column": 20 }, "identifierName": "origin" @@ -125145,29 +126206,29 @@ }, "init": { "type": "MemberExpression", - "start": 125559, - "end": 125569, + "start": 126073, + "end": 126083, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 23 }, "end": { - "line": 3156, + "line": 3164, "column": 33 } }, "object": { "type": "Identifier", - "start": 125559, - "end": 125562, + "start": 126073, + "end": 126076, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 23 }, "end": { - "line": 3156, + "line": 3164, "column": 26 }, "identifierName": "cfg" @@ -125176,15 +126237,15 @@ }, "property": { "type": "Identifier", - "start": 125563, - "end": 125569, + "start": 126077, + "end": 126083, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 27 }, "end": { - "line": 3156, + "line": 3164, "column": 33 }, "identifierName": "origin" @@ -125199,44 +126260,44 @@ }, { "type": "VariableDeclaration", - "start": 125579, - "end": 125651, + "start": 126093, + "end": 126165, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 8 }, "end": { - "line": 3157, + "line": 3165, "column": 80 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 125585, - "end": 125650, + "start": 126099, + "end": 126164, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 14 }, "end": { - "line": 3157, + "line": 3165, "column": 79 } }, "id": { "type": "Identifier", - "start": 125585, - "end": 125594, + "start": 126099, + "end": 126108, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 14 }, "end": { - "line": 3157, + "line": 3165, "column": 23 }, "identifierName": "primitive" @@ -125245,43 +126306,43 @@ }, "init": { "type": "ConditionalExpression", - "start": 125597, - "end": 125650, + "start": 126111, + "end": 126164, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 26 }, "end": { - "line": 3157, + "line": 3165, "column": 79 } }, "test": { "type": "MemberExpression", - "start": 125597, - "end": 125609, + "start": 126111, + "end": 126123, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 26 }, "end": { - "line": 3157, + "line": 3165, "column": 38 } }, "object": { "type": "Identifier", - "start": 125597, - "end": 125600, + "start": 126111, + "end": 126114, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 26 }, "end": { - "line": 3157, + "line": 3165, "column": 29 }, "identifierName": "cfg" @@ -125290,15 +126351,15 @@ }, "property": { "type": "Identifier", - "start": 125601, - "end": 125609, + "start": 126115, + "end": 126123, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 30 }, "end": { - "line": 3157, + "line": 3165, "column": 38 }, "identifierName": "geometry" @@ -125309,43 +126370,43 @@ }, "consequent": { "type": "MemberExpression", - "start": 125612, - "end": 125634, + "start": 126126, + "end": 126148, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 41 }, "end": { - "line": 3157, + "line": 3165, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 125612, - "end": 125624, + "start": 126126, + "end": 126138, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 41 }, "end": { - "line": 3157, + "line": 3165, "column": 53 } }, "object": { "type": "Identifier", - "start": 125612, - "end": 125615, + "start": 126126, + "end": 126129, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 41 }, "end": { - "line": 3157, + "line": 3165, "column": 44 }, "identifierName": "cfg" @@ -125354,15 +126415,15 @@ }, "property": { "type": "Identifier", - "start": 125616, - "end": 125624, + "start": 126130, + "end": 126138, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 45 }, "end": { - "line": 3157, + "line": 3165, "column": 53 }, "identifierName": "geometry" @@ -125373,15 +126434,15 @@ }, "property": { "type": "Identifier", - "start": 125625, - "end": 125634, + "start": 126139, + "end": 126148, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 54 }, "end": { - "line": 3157, + "line": 3165, "column": 63 }, "identifierName": "primitive" @@ -125392,29 +126453,29 @@ }, "alternate": { "type": "MemberExpression", - "start": 125637, - "end": 125650, + "start": 126151, + "end": 126164, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 66 }, "end": { - "line": 3157, + "line": 3165, "column": 79 } }, "object": { "type": "Identifier", - "start": 125637, - "end": 125640, + "start": 126151, + "end": 126154, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 66 }, "end": { - "line": 3157, + "line": 3165, "column": 69 }, "identifierName": "cfg" @@ -125423,15 +126484,15 @@ }, "property": { "type": "Identifier", - "start": 125641, - "end": 125650, + "start": 126155, + "end": 126164, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 70 }, "end": { - "line": 3157, + "line": 3165, "column": 79 }, "identifierName": "primitive" @@ -125447,44 +126508,44 @@ }, { "type": "VariableDeclaration", - "start": 125660, - "end": 125767, + "start": 126174, + "end": 126281, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 8 }, "end": { - "line": 3158, + "line": 3166, "column": 115 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 125666, - "end": 125766, + "start": 126180, + "end": 126280, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 14 }, "end": { - "line": 3158, + "line": 3166, "column": 114 } }, "id": { "type": "Identifier", - "start": 125666, - "end": 125673, + "start": 126180, + "end": 126187, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 14 }, "end": { - "line": 3158, + "line": 3166, "column": 21 }, "identifierName": "layerId" @@ -125493,30 +126554,30 @@ }, "init": { "type": "TemplateLiteral", - "start": 125676, - "end": 125766, + "start": 126190, + "end": 126280, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 24 }, "end": { - "line": 3158, + "line": 3166, "column": 114 } }, "expressions": [ { "type": "Identifier", - "start": 125680, - "end": 125689, + "start": 126194, + "end": 126203, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 28 }, "end": { - "line": 3158, + "line": 3166, "column": 37 }, "identifierName": "primitive" @@ -125525,43 +126586,43 @@ }, { "type": "CallExpression", - "start": 125693, - "end": 125714, + "start": 126207, + "end": 126228, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 41 }, "end": { - "line": 3158, + "line": 3166, "column": 62 } }, "callee": { "type": "MemberExpression", - "start": 125693, - "end": 125703, + "start": 126207, + "end": 126217, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 41 }, "end": { - "line": 3158, + "line": 3166, "column": 51 } }, "object": { "type": "Identifier", - "start": 125693, - "end": 125697, + "start": 126207, + "end": 126211, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 41 }, "end": { - "line": 3158, + "line": 3166, "column": 45 }, "identifierName": "Math" @@ -125570,15 +126631,15 @@ }, "property": { "type": "Identifier", - "start": 125698, - "end": 125703, + "start": 126212, + "end": 126217, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 46 }, "end": { - "line": 3158, + "line": 3166, "column": 51 }, "identifierName": "round" @@ -125590,29 +126651,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 125704, - "end": 125713, + "start": 126218, + "end": 126227, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 52 }, "end": { - "line": 3158, + "line": 3166, "column": 61 } }, "object": { "type": "Identifier", - "start": 125704, - "end": 125710, + "start": 126218, + "end": 126224, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 52 }, "end": { - "line": 3158, + "line": 3166, "column": 58 }, "identifierName": "origin" @@ -125621,15 +126682,15 @@ }, "property": { "type": "NumericLiteral", - "start": 125711, - "end": 125712, + "start": 126225, + "end": 126226, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 59 }, "end": { - "line": 3158, + "line": 3166, "column": 60 } }, @@ -125645,43 +126706,43 @@ }, { "type": "CallExpression", - "start": 125718, - "end": 125739, + "start": 126232, + "end": 126253, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 66 }, "end": { - "line": 3158, + "line": 3166, "column": 87 } }, "callee": { "type": "MemberExpression", - "start": 125718, - "end": 125728, + "start": 126232, + "end": 126242, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 66 }, "end": { - "line": 3158, + "line": 3166, "column": 76 } }, "object": { "type": "Identifier", - "start": 125718, - "end": 125722, + "start": 126232, + "end": 126236, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 66 }, "end": { - "line": 3158, + "line": 3166, "column": 70 }, "identifierName": "Math" @@ -125690,15 +126751,15 @@ }, "property": { "type": "Identifier", - "start": 125723, - "end": 125728, + "start": 126237, + "end": 126242, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 71 }, "end": { - "line": 3158, + "line": 3166, "column": 76 }, "identifierName": "round" @@ -125710,29 +126771,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 125729, - "end": 125738, + "start": 126243, + "end": 126252, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 77 }, "end": { - "line": 3158, + "line": 3166, "column": 86 } }, "object": { "type": "Identifier", - "start": 125729, - "end": 125735, + "start": 126243, + "end": 126249, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 77 }, "end": { - "line": 3158, + "line": 3166, "column": 83 }, "identifierName": "origin" @@ -125741,15 +126802,15 @@ }, "property": { "type": "NumericLiteral", - "start": 125736, - "end": 125737, + "start": 126250, + "end": 126251, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 84 }, "end": { - "line": 3158, + "line": 3166, "column": 85 } }, @@ -125765,43 +126826,43 @@ }, { "type": "CallExpression", - "start": 125743, - "end": 125764, + "start": 126257, + "end": 126278, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 91 }, "end": { - "line": 3158, + "line": 3166, "column": 112 } }, "callee": { "type": "MemberExpression", - "start": 125743, - "end": 125753, + "start": 126257, + "end": 126267, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 91 }, "end": { - "line": 3158, + "line": 3166, "column": 101 } }, "object": { "type": "Identifier", - "start": 125743, - "end": 125747, + "start": 126257, + "end": 126261, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 91 }, "end": { - "line": 3158, + "line": 3166, "column": 95 }, "identifierName": "Math" @@ -125810,15 +126871,15 @@ }, "property": { "type": "Identifier", - "start": 125748, - "end": 125753, + "start": 126262, + "end": 126267, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 96 }, "end": { - "line": 3158, + "line": 3166, "column": 101 }, "identifierName": "round" @@ -125830,29 +126891,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 125754, - "end": 125763, + "start": 126268, + "end": 126277, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 102 }, "end": { - "line": 3158, + "line": 3166, "column": 111 } }, "object": { "type": "Identifier", - "start": 125754, - "end": 125760, + "start": 126268, + "end": 126274, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 102 }, "end": { - "line": 3158, + "line": 3166, "column": 108 }, "identifierName": "origin" @@ -125861,15 +126922,15 @@ }, "property": { "type": "NumericLiteral", - "start": 125761, - "end": 125762, + "start": 126275, + "end": 126276, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 109 }, "end": { - "line": 3158, + "line": 3166, "column": 110 } }, @@ -125887,15 +126948,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 125677, - "end": 125678, + "start": 126191, + "end": 126192, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 25 }, "end": { - "line": 3158, + "line": 3166, "column": 26 } }, @@ -125907,15 +126968,15 @@ }, { "type": "TemplateElement", - "start": 125690, - "end": 125691, + "start": 126204, + "end": 126205, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 38 }, "end": { - "line": 3158, + "line": 3166, "column": 39 } }, @@ -125927,15 +126988,15 @@ }, { "type": "TemplateElement", - "start": 125715, - "end": 125716, + "start": 126229, + "end": 126230, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 63 }, "end": { - "line": 3158, + "line": 3166, "column": 64 } }, @@ -125947,15 +127008,15 @@ }, { "type": "TemplateElement", - "start": 125740, - "end": 125741, + "start": 126254, + "end": 126255, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 88 }, "end": { - "line": 3158, + "line": 3166, "column": 89 } }, @@ -125967,15 +127028,15 @@ }, { "type": "TemplateElement", - "start": 125765, - "end": 125765, + "start": 126279, + "end": 126279, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 113 }, "end": { - "line": 3158, + "line": 3166, "column": 113 } }, @@ -125993,44 +127054,44 @@ }, { "type": "VariableDeclaration", - "start": 125776, - "end": 125816, + "start": 126290, + "end": 126330, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 8 }, "end": { - "line": 3159, + "line": 3167, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 125780, - "end": 125815, + "start": 126294, + "end": 126329, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 12 }, "end": { - "line": 3159, + "line": 3167, "column": 47 } }, "id": { "type": "Identifier", - "start": 125780, - "end": 125788, + "start": 126294, + "end": 126302, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 12 }, "end": { - "line": 3159, + "line": 3167, "column": 20 }, "identifierName": "dtxLayer" @@ -126039,58 +127100,58 @@ }, "init": { "type": "MemberExpression", - "start": 125791, - "end": 125815, + "start": 126305, + "end": 126329, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 23 }, "end": { - "line": 3159, + "line": 3167, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 125791, - "end": 125806, + "start": 126305, + "end": 126320, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 23 }, "end": { - "line": 3159, + "line": 3167, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 125791, - "end": 125795, + "start": 126305, + "end": 126309, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 23 }, "end": { - "line": 3159, + "line": 3167, "column": 27 } } }, "property": { "type": "Identifier", - "start": 125796, - "end": 125806, + "start": 126310, + "end": 126320, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 28 }, "end": { - "line": 3159, + "line": 3167, "column": 38 }, "identifierName": "_dtxLayers" @@ -126101,15 +127162,15 @@ }, "property": { "type": "Identifier", - "start": 125807, - "end": 125814, + "start": 126321, + "end": 126328, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 39 }, "end": { - "line": 3159, + "line": 3167, "column": 46 }, "identifierName": "layerId" @@ -126124,29 +127185,29 @@ }, { "type": "IfStatement", - "start": 125825, - "end": 126088, + "start": 126339, + "end": 126602, "loc": { "start": { - "line": 3160, + "line": 3168, "column": 8 }, "end": { - "line": 3168, + "line": 3176, "column": 9 } }, "test": { "type": "Identifier", - "start": 125829, - "end": 125837, + "start": 126343, + "end": 126351, "loc": { "start": { - "line": 3160, + "line": 3168, "column": 12 }, "end": { - "line": 3160, + "line": 3168, "column": 20 }, "identifierName": "dtxLayer" @@ -126155,44 +127216,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 125839, - "end": 126088, + "start": 126353, + "end": 126602, "loc": { "start": { - "line": 3160, + "line": 3168, "column": 22 }, "end": { - "line": 3168, + "line": 3176, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 125853, - "end": 126078, + "start": 126367, + "end": 126592, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 12 }, "end": { - "line": 3167, + "line": 3175, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 125857, - "end": 125888, + "start": 126371, + "end": 126402, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 16 }, "end": { - "line": 3161, + "line": 3169, "column": 47 } }, @@ -126200,43 +127261,43 @@ "prefix": true, "argument": { "type": "CallExpression", - "start": 125858, - "end": 125888, + "start": 126372, + "end": 126402, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 17 }, "end": { - "line": 3161, + "line": 3169, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 125858, - "end": 125883, + "start": 126372, + "end": 126397, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 17 }, "end": { - "line": 3161, + "line": 3169, "column": 42 } }, "object": { "type": "Identifier", - "start": 125858, - "end": 125866, + "start": 126372, + "end": 126380, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 17 }, "end": { - "line": 3161, + "line": 3169, "column": 25 }, "identifierName": "dtxLayer" @@ -126245,15 +127306,15 @@ }, "property": { "type": "Identifier", - "start": 125867, - "end": 125883, + "start": 126381, + "end": 126397, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 26 }, "end": { - "line": 3161, + "line": 3169, "column": 42 }, "identifierName": "canCreatePortion" @@ -126265,15 +127326,15 @@ "arguments": [ { "type": "Identifier", - "start": 125884, - "end": 125887, + "start": 126398, + "end": 126401, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 43 }, "end": { - "line": 3161, + "line": 3169, "column": 46 }, "identifierName": "cfg" @@ -126288,72 +127349,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 125890, - "end": 126024, + "start": 126404, + "end": 126538, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 49 }, "end": { - "line": 3165, + "line": 3173, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 125908, - "end": 125928, + "start": 126422, + "end": 126442, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 16 }, "end": { - "line": 3162, + "line": 3170, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 125908, - "end": 125927, + "start": 126422, + "end": 126441, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 16 }, "end": { - "line": 3162, + "line": 3170, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 125908, - "end": 125925, + "start": 126422, + "end": 126439, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 16 }, "end": { - "line": 3162, + "line": 3170, "column": 33 } }, "object": { "type": "Identifier", - "start": 125908, - "end": 125916, + "start": 126422, + "end": 126430, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 16 }, "end": { - "line": 3162, + "line": 3170, "column": 24 }, "identifierName": "dtxLayer" @@ -126362,15 +127423,15 @@ }, "property": { "type": "Identifier", - "start": 125917, - "end": 125925, + "start": 126431, + "end": 126439, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 25 }, "end": { - "line": 3162, + "line": 3170, "column": 33 }, "identifierName": "finalize" @@ -126384,29 +127445,29 @@ }, { "type": "ExpressionStatement", - "start": 125945, - "end": 125977, + "start": 126459, + "end": 126491, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 16 }, "end": { - "line": 3163, + "line": 3171, "column": 48 } }, "expression": { "type": "UnaryExpression", - "start": 125945, - "end": 125976, + "start": 126459, + "end": 126490, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 16 }, "end": { - "line": 3163, + "line": 3171, "column": 47 } }, @@ -126414,58 +127475,58 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 125952, - "end": 125976, + "start": 126466, + "end": 126490, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 23 }, "end": { - "line": 3163, + "line": 3171, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 125952, - "end": 125967, + "start": 126466, + "end": 126481, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 23 }, "end": { - "line": 3163, + "line": 3171, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 125952, - "end": 125956, + "start": 126466, + "end": 126470, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 23 }, "end": { - "line": 3163, + "line": 3171, "column": 27 } } }, "property": { "type": "Identifier", - "start": 125957, - "end": 125967, + "start": 126471, + "end": 126481, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 28 }, "end": { - "line": 3163, + "line": 3171, "column": 38 }, "identifierName": "_dtxLayers" @@ -126476,15 +127537,15 @@ }, "property": { "type": "Identifier", - "start": 125968, - "end": 125975, + "start": 126482, + "end": 126489, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 39 }, "end": { - "line": 3163, + "line": 3171, "column": 46 }, "identifierName": "layerId" @@ -126500,44 +127561,44 @@ }, { "type": "ExpressionStatement", - "start": 125994, - "end": 126010, + "start": 126508, + "end": 126524, "loc": { "start": { - "line": 3164, + "line": 3172, "column": 16 }, "end": { - "line": 3164, + "line": 3172, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 125994, - "end": 126009, + "start": 126508, + "end": 126523, "loc": { "start": { - "line": 3164, + "line": 3172, "column": 16 }, "end": { - "line": 3164, + "line": 3172, "column": 31 } }, "operator": "=", "left": { "type": "Identifier", - "start": 125994, - "end": 126002, + "start": 126508, + "end": 126516, "loc": { "start": { - "line": 3164, + "line": 3172, "column": 16 }, "end": { - "line": 3164, + "line": 3172, "column": 24 }, "identifierName": "dtxLayer" @@ -126546,15 +127607,15 @@ }, "right": { "type": "NullLiteral", - "start": 126005, - "end": 126009, + "start": 126519, + "end": 126523, "loc": { "start": { - "line": 3164, + "line": 3172, "column": 27 }, "end": { - "line": 3164, + "line": 3172, "column": 31 } } @@ -126566,44 +127627,44 @@ }, "alternate": { "type": "BlockStatement", - "start": 126030, - "end": 126078, + "start": 126544, + "end": 126592, "loc": { "start": { - "line": 3165, + "line": 3173, "column": 19 }, "end": { - "line": 3167, + "line": 3175, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 126048, - "end": 126064, + "start": 126562, + "end": 126578, "loc": { "start": { - "line": 3166, + "line": 3174, "column": 16 }, "end": { - "line": 3166, + "line": 3174, "column": 32 } }, "argument": { "type": "Identifier", - "start": 126055, - "end": 126063, + "start": 126569, + "end": 126577, "loc": { "start": { - "line": 3166, + "line": 3174, "column": 23 }, "end": { - "line": 3166, + "line": 3174, "column": 31 }, "identifierName": "dtxLayer" @@ -126622,29 +127683,29 @@ }, { "type": "SwitchStatement", - "start": 126097, - "end": 126558, + "start": 126611, + "end": 127072, "loc": { "start": { - "line": 3169, + "line": 3177, "column": 8 }, "end": { - "line": 3180, + "line": 3188, "column": 9 } }, "discriminant": { "type": "Identifier", - "start": 126105, - "end": 126114, + "start": 126619, + "end": 126628, "loc": { "start": { - "line": 3169, + "line": 3177, "column": 16 }, "end": { - "line": 3169, + "line": 3177, "column": 25 }, "identifierName": "primitive" @@ -126654,30 +127715,30 @@ "cases": [ { "type": "SwitchCase", - "start": 126130, - "end": 126147, + "start": 126644, + "end": 126661, "loc": { "start": { - "line": 3170, + "line": 3178, "column": 12 }, "end": { - "line": 3170, + "line": 3178, "column": 29 } }, "consequent": [], "test": { "type": "StringLiteral", - "start": 126135, - "end": 126146, + "start": 126649, + "end": 126660, "loc": { "start": { - "line": 3170, + "line": 3178, "column": 17 }, "end": { - "line": 3170, + "line": 3178, "column": 28 } }, @@ -126690,30 +127751,30 @@ }, { "type": "SwitchCase", - "start": 126160, - "end": 126173, + "start": 126674, + "end": 126687, "loc": { "start": { - "line": 3171, + "line": 3179, "column": 12 }, "end": { - "line": 3171, + "line": 3179, "column": 25 } }, "consequent": [], "test": { "type": "StringLiteral", - "start": 126165, - "end": 126172, + "start": 126679, + "end": 126686, "loc": { "start": { - "line": 3171, + "line": 3179, "column": 17 }, "end": { - "line": 3171, + "line": 3179, "column": 24 } }, @@ -126726,59 +127787,59 @@ }, { "type": "SwitchCase", - "start": 126186, - "end": 126341, + "start": 126700, + "end": 126855, "loc": { "start": { - "line": 3172, + "line": 3180, "column": 12 }, "end": { - "line": 3174, + "line": 3182, "column": 22 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 126218, - "end": 126282, + "start": 126732, + "end": 126796, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 16 }, "end": { - "line": 3173, + "line": 3181, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 126218, - "end": 126281, + "start": 126732, + "end": 126795, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 16 }, "end": { - "line": 3173, + "line": 3181, "column": 79 } }, "operator": "=", "left": { "type": "Identifier", - "start": 126218, - "end": 126226, + "start": 126732, + "end": 126740, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 16 }, "end": { - "line": 3173, + "line": 3181, "column": 24 }, "identifierName": "dtxLayer" @@ -126787,29 +127848,29 @@ }, "right": { "type": "NewExpression", - "start": 126229, - "end": 126281, + "start": 126743, + "end": 126795, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 27 }, "end": { - "line": 3173, + "line": 3181, "column": 79 } }, "callee": { "type": "Identifier", - "start": 126233, - "end": 126250, + "start": 126747, + "end": 126764, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 31 }, "end": { - "line": 3173, + "line": 3181, "column": 48 }, "identifierName": "DTXTrianglesLayer" @@ -126819,45 +127880,45 @@ "arguments": [ { "type": "ThisExpression", - "start": 126251, - "end": 126255, + "start": 126765, + "end": 126769, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 49 }, "end": { - "line": 3173, + "line": 3181, "column": 53 } } }, { "type": "ObjectExpression", - "start": 126257, - "end": 126280, + "start": 126771, + "end": 126794, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 55 }, "end": { - "line": 3173, + "line": 3181, "column": 78 } }, "properties": [ { "type": "ObjectProperty", - "start": 126258, - "end": 126271, + "start": 126772, + "end": 126785, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 56 }, "end": { - "line": 3173, + "line": 3181, "column": 69 } }, @@ -126866,15 +127927,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 126258, - "end": 126268, + "start": 126772, + "end": 126782, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 56 }, "end": { - "line": 3173, + "line": 3181, "column": 66 }, "identifierName": "layerIndex" @@ -126883,15 +127944,15 @@ }, "value": { "type": "NumericLiteral", - "start": 126270, - "end": 126271, + "start": 126784, + "end": 126785, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 68 }, "end": { - "line": 3173, + "line": 3181, "column": 69 } }, @@ -126904,15 +127965,15 @@ }, { "type": "ObjectProperty", - "start": 126273, - "end": 126279, + "start": 126787, + "end": 126793, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 71 }, "end": { - "line": 3173, + "line": 3181, "column": 77 } }, @@ -126921,15 +127982,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 126273, - "end": 126279, + "start": 126787, + "end": 126793, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 71 }, "end": { - "line": 3173, + "line": 3181, "column": 77 }, "identifierName": "origin" @@ -126938,15 +127999,15 @@ }, "value": { "type": "Identifier", - "start": 126273, - "end": 126279, + "start": 126787, + "end": 126793, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 71 }, "end": { - "line": 3173, + "line": 3181, "column": 77 }, "identifierName": "origin" @@ -126966,15 +128027,15 @@ { "type": "CommentLine", "value": " layerIndex is set in #finalize()", - "start": 126283, - "end": 126318, + "start": 126797, + "end": 126832, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 81 }, "end": { - "line": 3173, + "line": 3181, "column": 116 } } @@ -126983,15 +128044,15 @@ }, { "type": "BreakStatement", - "start": 126335, - "end": 126341, + "start": 126849, + "end": 126855, "loc": { "start": { - "line": 3174, + "line": 3182, "column": 16 }, "end": { - "line": 3174, + "line": 3182, "column": 22 } }, @@ -127000,15 +128061,15 @@ { "type": "CommentLine", "value": " layerIndex is set in #finalize()", - "start": 126283, - "end": 126318, + "start": 126797, + "end": 126832, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 81 }, "end": { - "line": 3173, + "line": 3181, "column": 116 } } @@ -127018,15 +128079,15 @@ ], "test": { "type": "StringLiteral", - "start": 126191, - "end": 126200, + "start": 126705, + "end": 126714, "loc": { "start": { - "line": 3172, + "line": 3180, "column": 17 }, "end": { - "line": 3172, + "line": 3180, "column": 26 } }, @@ -127039,59 +128100,59 @@ }, { "type": "SwitchCase", - "start": 126354, - "end": 126503, + "start": 126868, + "end": 127017, "loc": { "start": { - "line": 3175, + "line": 3183, "column": 12 }, "end": { - "line": 3177, + "line": 3185, "column": 22 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 126384, - "end": 126444, + "start": 126898, + "end": 126958, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 16 }, "end": { - "line": 3176, + "line": 3184, "column": 76 } }, "expression": { "type": "AssignmentExpression", - "start": 126384, - "end": 126443, + "start": 126898, + "end": 126957, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 16 }, "end": { - "line": 3176, + "line": 3184, "column": 75 } }, "operator": "=", "left": { "type": "Identifier", - "start": 126384, - "end": 126392, + "start": 126898, + "end": 126906, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 16 }, "end": { - "line": 3176, + "line": 3184, "column": 24 }, "identifierName": "dtxLayer" @@ -127100,29 +128161,29 @@ }, "right": { "type": "NewExpression", - "start": 126395, - "end": 126443, + "start": 126909, + "end": 126957, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 27 }, "end": { - "line": 3176, + "line": 3184, "column": 75 } }, "callee": { "type": "Identifier", - "start": 126399, - "end": 126412, + "start": 126913, + "end": 126926, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 31 }, "end": { - "line": 3176, + "line": 3184, "column": 44 }, "identifierName": "DTXLinesLayer" @@ -127132,45 +128193,45 @@ "arguments": [ { "type": "ThisExpression", - "start": 126413, - "end": 126417, + "start": 126927, + "end": 126931, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 45 }, "end": { - "line": 3176, + "line": 3184, "column": 49 } } }, { "type": "ObjectExpression", - "start": 126419, - "end": 126442, + "start": 126933, + "end": 126956, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 51 }, "end": { - "line": 3176, + "line": 3184, "column": 74 } }, "properties": [ { "type": "ObjectProperty", - "start": 126420, - "end": 126433, + "start": 126934, + "end": 126947, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 52 }, "end": { - "line": 3176, + "line": 3184, "column": 65 } }, @@ -127179,15 +128240,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 126420, - "end": 126430, + "start": 126934, + "end": 126944, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 52 }, "end": { - "line": 3176, + "line": 3184, "column": 62 }, "identifierName": "layerIndex" @@ -127196,15 +128257,15 @@ }, "value": { "type": "NumericLiteral", - "start": 126432, - "end": 126433, + "start": 126946, + "end": 126947, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 64 }, "end": { - "line": 3176, + "line": 3184, "column": 65 } }, @@ -127217,15 +128278,15 @@ }, { "type": "ObjectProperty", - "start": 126435, - "end": 126441, + "start": 126949, + "end": 126955, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 67 }, "end": { - "line": 3176, + "line": 3184, "column": 73 } }, @@ -127234,15 +128295,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 126435, - "end": 126441, + "start": 126949, + "end": 126955, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 67 }, "end": { - "line": 3176, + "line": 3184, "column": 73 }, "identifierName": "origin" @@ -127251,15 +128312,15 @@ }, "value": { "type": "Identifier", - "start": 126435, - "end": 126441, + "start": 126949, + "end": 126955, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 67 }, "end": { - "line": 3176, + "line": 3184, "column": 73 }, "identifierName": "origin" @@ -127279,15 +128340,15 @@ { "type": "CommentLine", "value": " layerIndex is set in #finalize()", - "start": 126445, - "end": 126480, + "start": 126959, + "end": 126994, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 77 }, "end": { - "line": 3176, + "line": 3184, "column": 112 } } @@ -127296,15 +128357,15 @@ }, { "type": "BreakStatement", - "start": 126497, - "end": 126503, + "start": 127011, + "end": 127017, "loc": { "start": { - "line": 3177, + "line": 3185, "column": 16 }, "end": { - "line": 3177, + "line": 3185, "column": 22 } }, @@ -127313,15 +128374,15 @@ { "type": "CommentLine", "value": " layerIndex is set in #finalize()", - "start": 126445, - "end": 126480, + "start": 126959, + "end": 126994, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 77 }, "end": { - "line": 3176, + "line": 3184, "column": 112 } } @@ -127331,15 +128392,15 @@ ], "test": { "type": "StringLiteral", - "start": 126359, - "end": 126366, + "start": 126873, + "end": 126880, "loc": { "start": { - "line": 3175, + "line": 3183, "column": 17 }, "end": { - "line": 3175, + "line": 3183, "column": 24 } }, @@ -127352,30 +128413,30 @@ }, { "type": "SwitchCase", - "start": 126516, - "end": 126548, + "start": 127030, + "end": 127062, "loc": { "start": { - "line": 3178, + "line": 3186, "column": 12 }, "end": { - "line": 3179, + "line": 3187, "column": 23 } }, "consequent": [ { "type": "ReturnStatement", - "start": 126541, - "end": 126548, + "start": 127055, + "end": 127062, "loc": { "start": { - "line": 3179, + "line": 3187, "column": 16 }, "end": { - "line": 3179, + "line": 3187, "column": 23 } }, @@ -127388,87 +128449,87 @@ }, { "type": "ExpressionStatement", - "start": 126567, - "end": 126603, + "start": 127081, + "end": 127117, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 8 }, "end": { - "line": 3181, + "line": 3189, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 126567, - "end": 126602, + "start": 127081, + "end": 127116, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 8 }, "end": { - "line": 3181, + "line": 3189, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 126567, - "end": 126591, + "start": 127081, + "end": 127105, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 8 }, "end": { - "line": 3181, + "line": 3189, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 126567, - "end": 126582, + "start": 127081, + "end": 127096, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 8 }, "end": { - "line": 3181, + "line": 3189, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 126567, - "end": 126571, + "start": 127081, + "end": 127085, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 8 }, "end": { - "line": 3181, + "line": 3189, "column": 12 } } }, "property": { "type": "Identifier", - "start": 126572, - "end": 126582, + "start": 127086, + "end": 127096, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 13 }, "end": { - "line": 3181, + "line": 3189, "column": 23 }, "identifierName": "_dtxLayers" @@ -127479,15 +128540,15 @@ }, "property": { "type": "Identifier", - "start": 126583, - "end": 126590, + "start": 127097, + "end": 127104, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 24 }, "end": { - "line": 3181, + "line": 3189, "column": 31 }, "identifierName": "layerId" @@ -127498,15 +128559,15 @@ }, "right": { "type": "Identifier", - "start": 126594, - "end": 126602, + "start": 127108, + "end": 127116, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 35 }, "end": { - "line": 3181, + "line": 3189, "column": 43 }, "identifierName": "dtxLayer" @@ -127517,86 +128578,86 @@ }, { "type": "ExpressionStatement", - "start": 126612, - "end": 126642, + "start": 127126, + "end": 127156, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 8 }, "end": { - "line": 3182, + "line": 3190, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 126612, - "end": 126641, + "start": 127126, + "end": 127155, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 8 }, "end": { - "line": 3182, + "line": 3190, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 126612, - "end": 126631, + "start": 127126, + "end": 127145, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 8 }, "end": { - "line": 3182, + "line": 3190, "column": 27 } }, "object": { "type": "MemberExpression", - "start": 126612, - "end": 126626, + "start": 127126, + "end": 127140, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 8 }, "end": { - "line": 3182, + "line": 3190, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 126612, - "end": 126616, + "start": 127126, + "end": 127130, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 8 }, "end": { - "line": 3182, + "line": 3190, "column": 12 } } }, "property": { "type": "Identifier", - "start": 126617, - "end": 126626, + "start": 127131, + "end": 127140, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 13 }, "end": { - "line": 3182, + "line": 3190, "column": 22 }, "identifierName": "layerList" @@ -127607,15 +128668,15 @@ }, "property": { "type": "Identifier", - "start": 126627, - "end": 126631, + "start": 127141, + "end": 127145, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 23 }, "end": { - "line": 3182, + "line": 3190, "column": 27 }, "identifierName": "push" @@ -127627,15 +128688,15 @@ "arguments": [ { "type": "Identifier", - "start": 126632, - "end": 126640, + "start": 127146, + "end": 127154, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 28 }, "end": { - "line": 3182, + "line": 3190, "column": 36 }, "identifierName": "dtxLayer" @@ -127647,29 +128708,29 @@ }, { "type": "ReturnStatement", - "start": 126651, - "end": 126667, + "start": 127165, + "end": 127181, "loc": { "start": { - "line": 3183, + "line": 3191, "column": 8 }, "end": { - "line": 3183, + "line": 3191, "column": 24 } }, "argument": { "type": "Identifier", - "start": 126658, - "end": 126666, + "start": 127172, + "end": 127180, "loc": { "start": { - "line": 3183, + "line": 3191, "column": 15 }, "end": { - "line": 3183, + "line": 3191, "column": 23 }, "identifierName": "dtxLayer" @@ -127683,15 +128744,15 @@ }, { "type": "ClassMethod", - "start": 126679, - "end": 132095, + "start": 127193, + "end": 132609, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 4 }, "end": { - "line": 3284, + "line": 3292, "column": 5 } }, @@ -127699,15 +128760,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 126679, - "end": 126699, + "start": 127193, + "end": 127213, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 4 }, "end": { - "line": 3186, + "line": 3194, "column": 24 }, "identifierName": "_getVBOBatchingLayer" @@ -127722,15 +128783,15 @@ "params": [ { "type": "Identifier", - "start": 126700, - "end": 126703, + "start": 127214, + "end": 127217, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 25 }, "end": { - "line": 3186, + "line": 3194, "column": 28 }, "identifierName": "cfg" @@ -127740,59 +128801,59 @@ ], "body": { "type": "BlockStatement", - "start": 126705, - "end": 132095, + "start": 127219, + "end": 132609, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 30 }, "end": { - "line": 3284, + "line": 3292, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 126715, - "end": 126734, + "start": 127229, + "end": 127248, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 8 }, "end": { - "line": 3187, + "line": 3195, "column": 27 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 126721, - "end": 126733, + "start": 127235, + "end": 127247, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 14 }, "end": { - "line": 3187, + "line": 3195, "column": 26 } }, "id": { "type": "Identifier", - "start": 126721, - "end": 126726, + "start": 127235, + "end": 127240, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 14 }, "end": { - "line": 3187, + "line": 3195, "column": 19 }, "identifierName": "model" @@ -127801,15 +128862,15 @@ }, "init": { "type": "ThisExpression", - "start": 126729, - "end": 126733, + "start": 127243, + "end": 127247, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 22 }, "end": { - "line": 3187, + "line": 3195, "column": 26 } } @@ -127820,44 +128881,44 @@ }, { "type": "VariableDeclaration", - "start": 126743, - "end": 126769, + "start": 127257, + "end": 127283, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 8 }, "end": { - "line": 3188, + "line": 3196, "column": 34 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 126749, - "end": 126768, + "start": 127263, + "end": 127282, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 14 }, "end": { - "line": 3188, + "line": 3196, "column": 33 } }, "id": { "type": "Identifier", - "start": 126749, - "end": 126755, + "start": 127263, + "end": 127269, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 14 }, "end": { - "line": 3188, + "line": 3196, "column": 20 }, "identifierName": "origin" @@ -127866,29 +128927,29 @@ }, "init": { "type": "MemberExpression", - "start": 126758, - "end": 126768, + "start": 127272, + "end": 127282, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 23 }, "end": { - "line": 3188, + "line": 3196, "column": 33 } }, "object": { "type": "Identifier", - "start": 126758, - "end": 126761, + "start": 127272, + "end": 127275, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 23 }, "end": { - "line": 3188, + "line": 3196, "column": 26 }, "identifierName": "cfg" @@ -127897,15 +128958,15 @@ }, "property": { "type": "Identifier", - "start": 126762, - "end": 126768, + "start": 127276, + "end": 127282, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 27 }, "end": { - "line": 3188, + "line": 3196, "column": 33 }, "identifierName": "origin" @@ -127920,44 +128981,44 @@ }, { "type": "VariableDeclaration", - "start": 126778, - "end": 126986, + "start": 127292, + "end": 127500, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 8 }, "end": { - "line": 3191, + "line": 3199, "column": 18 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 126784, - "end": 126985, + "start": 127298, + "end": 127499, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 14 }, "end": { - "line": 3191, + "line": 3199, "column": 17 } }, "id": { "type": "Identifier", - "start": 126784, - "end": 126803, + "start": 127298, + "end": 127317, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 14 }, "end": { - "line": 3189, + "line": 3197, "column": 33 }, "identifierName": "positionsDecodeHash" @@ -127966,57 +129027,57 @@ }, "init": { "type": "ConditionalExpression", - "start": 126806, - "end": 126985, + "start": 127320, + "end": 127499, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 36 }, "end": { - "line": 3191, + "line": 3199, "column": 17 } }, "test": { "type": "LogicalExpression", - "start": 126806, - "end": 126862, + "start": 127320, + "end": 127376, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 36 }, "end": { - "line": 3189, + "line": 3197, "column": 92 } }, "left": { "type": "MemberExpression", - "start": 126806, - "end": 126831, + "start": 127320, + "end": 127345, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 36 }, "end": { - "line": 3189, + "line": 3197, "column": 61 } }, "object": { "type": "Identifier", - "start": 126806, - "end": 126809, + "start": 127320, + "end": 127323, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 36 }, "end": { - "line": 3189, + "line": 3197, "column": 39 }, "identifierName": "cfg" @@ -128025,15 +129086,15 @@ }, "property": { "type": "Identifier", - "start": 126810, - "end": 126831, + "start": 127324, + "end": 127345, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 40 }, "end": { - "line": 3189, + "line": 3197, "column": 61 }, "identifierName": "positionsDecodeMatrix" @@ -128045,29 +129106,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 126835, - "end": 126862, + "start": 127349, + "end": 127376, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 65 }, "end": { - "line": 3189, + "line": 3197, "column": 92 } }, "object": { "type": "Identifier", - "start": 126835, - "end": 126838, + "start": 127349, + "end": 127352, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 65 }, "end": { - "line": 3189, + "line": 3197, "column": 68 }, "identifierName": "cfg" @@ -128076,15 +129137,15 @@ }, "property": { "type": "Identifier", - "start": 126839, - "end": 126862, + "start": 127353, + "end": 127376, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 69 }, "end": { - "line": 3189, + "line": 3197, "column": 92 }, "identifierName": "positionsDecodeBoundary" @@ -128096,58 +129157,58 @@ }, "consequent": { "type": "CallExpression", - "start": 126877, - "end": 126967, + "start": 127391, + "end": 127481, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 12 }, "end": { - "line": 3190, + "line": 3198, "column": 102 } }, "callee": { "type": "MemberExpression", - "start": 126877, - "end": 126909, + "start": 127391, + "end": 127423, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 12 }, "end": { - "line": 3190, + "line": 3198, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 126877, - "end": 126881, + "start": 127391, + "end": 127395, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 12 }, "end": { - "line": 3190, + "line": 3198, "column": 16 } } }, "property": { "type": "Identifier", - "start": 126882, - "end": 126909, + "start": 127396, + "end": 127423, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 17 }, "end": { - "line": 3190, + "line": 3198, "column": 44 }, "identifierName": "_createHashStringFromMatrix" @@ -128159,43 +129220,43 @@ "arguments": [ { "type": "LogicalExpression", - "start": 126910, - "end": 126966, + "start": 127424, + "end": 127480, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 45 }, "end": { - "line": 3190, + "line": 3198, "column": 101 } }, "left": { "type": "MemberExpression", - "start": 126910, - "end": 126935, + "start": 127424, + "end": 127449, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 45 }, "end": { - "line": 3190, + "line": 3198, "column": 70 } }, "object": { "type": "Identifier", - "start": 126910, - "end": 126913, + "start": 127424, + "end": 127427, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 45 }, "end": { - "line": 3190, + "line": 3198, "column": 48 }, "identifierName": "cfg" @@ -128204,15 +129265,15 @@ }, "property": { "type": "Identifier", - "start": 126914, - "end": 126935, + "start": 127428, + "end": 127449, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 49 }, "end": { - "line": 3190, + "line": 3198, "column": 70 }, "identifierName": "positionsDecodeMatrix" @@ -128224,29 +129285,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 126939, - "end": 126966, + "start": 127453, + "end": 127480, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 74 }, "end": { - "line": 3190, + "line": 3198, "column": 101 } }, "object": { "type": "Identifier", - "start": 126939, - "end": 126942, + "start": 127453, + "end": 127456, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 74 }, "end": { - "line": 3190, + "line": 3198, "column": 77 }, "identifierName": "cfg" @@ -128255,15 +129316,15 @@ }, "property": { "type": "Identifier", - "start": 126943, - "end": 126966, + "start": 127457, + "end": 127480, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 78 }, "end": { - "line": 3190, + "line": 3198, "column": 101 }, "identifierName": "positionsDecodeBoundary" @@ -128277,15 +129338,15 @@ }, "alternate": { "type": "StringLiteral", - "start": 126982, - "end": 126985, + "start": 127496, + "end": 127499, "loc": { "start": { - "line": 3191, + "line": 3199, "column": 14 }, "end": { - "line": 3191, + "line": 3199, "column": 17 } }, @@ -128302,44 +129363,44 @@ }, { "type": "VariableDeclaration", - "start": 126995, - "end": 127040, + "start": 127509, + "end": 127554, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 8 }, "end": { - "line": 3192, + "line": 3200, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 127001, - "end": 127039, + "start": 127515, + "end": 127553, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 14 }, "end": { - "line": 3192, + "line": 3200, "column": 52 } }, "id": { "type": "Identifier", - "start": 127001, - "end": 127013, + "start": 127515, + "end": 127527, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 14 }, "end": { - "line": 3192, + "line": 3200, "column": 26 }, "identifierName": "textureSetId" @@ -128348,43 +129409,43 @@ }, "init": { "type": "LogicalExpression", - "start": 127016, - "end": 127039, + "start": 127530, + "end": 127553, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 29 }, "end": { - "line": 3192, + "line": 3200, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 127016, - "end": 127032, + "start": 127530, + "end": 127546, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 29 }, "end": { - "line": 3192, + "line": 3200, "column": 45 } }, "object": { "type": "Identifier", - "start": 127016, - "end": 127019, + "start": 127530, + "end": 127533, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 29 }, "end": { - "line": 3192, + "line": 3200, "column": 32 }, "identifierName": "cfg" @@ -128393,15 +129454,15 @@ }, "property": { "type": "Identifier", - "start": 127020, - "end": 127032, + "start": 127534, + "end": 127546, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 33 }, "end": { - "line": 3192, + "line": 3200, "column": 45 }, "identifierName": "textureSetId" @@ -128413,15 +129474,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 127036, - "end": 127039, + "start": 127550, + "end": 127553, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 49 }, "end": { - "line": 3192, + "line": 3200, "column": 52 } }, @@ -128438,44 +129499,44 @@ }, { "type": "VariableDeclaration", - "start": 127049, - "end": 127198, + "start": 127563, + "end": 127712, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 8 }, "end": { - "line": 3193, + "line": 3201, "column": 157 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 127055, - "end": 127197, + "start": 127569, + "end": 127711, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 14 }, "end": { - "line": 3193, + "line": 3201, "column": 156 } }, "id": { "type": "Identifier", - "start": 127055, - "end": 127062, + "start": 127569, + "end": 127576, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 14 }, "end": { - "line": 3193, + "line": 3201, "column": 21 }, "identifierName": "layerId" @@ -128484,58 +129545,58 @@ }, "init": { "type": "TemplateLiteral", - "start": 127065, - "end": 127197, + "start": 127579, + "end": 127711, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 24 }, "end": { - "line": 3193, + "line": 3201, "column": 156 } }, "expressions": [ { "type": "CallExpression", - "start": 127068, - "end": 127089, + "start": 127582, + "end": 127603, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 27 }, "end": { - "line": 3193, + "line": 3201, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 127068, - "end": 127078, + "start": 127582, + "end": 127592, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 27 }, "end": { - "line": 3193, + "line": 3201, "column": 37 } }, "object": { "type": "Identifier", - "start": 127068, - "end": 127072, + "start": 127582, + "end": 127586, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 27 }, "end": { - "line": 3193, + "line": 3201, "column": 31 }, "identifierName": "Math" @@ -128544,15 +129605,15 @@ }, "property": { "type": "Identifier", - "start": 127073, - "end": 127078, + "start": 127587, + "end": 127592, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 32 }, "end": { - "line": 3193, + "line": 3201, "column": 37 }, "identifierName": "round" @@ -128564,29 +129625,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 127079, - "end": 127088, + "start": 127593, + "end": 127602, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 38 }, "end": { - "line": 3193, + "line": 3201, "column": 47 } }, "object": { "type": "Identifier", - "start": 127079, - "end": 127085, + "start": 127593, + "end": 127599, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 38 }, "end": { - "line": 3193, + "line": 3201, "column": 44 }, "identifierName": "origin" @@ -128595,15 +129656,15 @@ }, "property": { "type": "NumericLiteral", - "start": 127086, - "end": 127087, + "start": 127600, + "end": 127601, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 45 }, "end": { - "line": 3193, + "line": 3201, "column": 46 } }, @@ -128619,43 +129680,43 @@ }, { "type": "CallExpression", - "start": 127093, - "end": 127114, + "start": 127607, + "end": 127628, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 52 }, "end": { - "line": 3193, + "line": 3201, "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 127093, - "end": 127103, + "start": 127607, + "end": 127617, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 52 }, "end": { - "line": 3193, + "line": 3201, "column": 62 } }, "object": { "type": "Identifier", - "start": 127093, - "end": 127097, + "start": 127607, + "end": 127611, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 52 }, "end": { - "line": 3193, + "line": 3201, "column": 56 }, "identifierName": "Math" @@ -128664,15 +129725,15 @@ }, "property": { "type": "Identifier", - "start": 127098, - "end": 127103, + "start": 127612, + "end": 127617, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 57 }, "end": { - "line": 3193, + "line": 3201, "column": 62 }, "identifierName": "round" @@ -128684,29 +129745,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 127104, - "end": 127113, + "start": 127618, + "end": 127627, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 63 }, "end": { - "line": 3193, + "line": 3201, "column": 72 } }, "object": { "type": "Identifier", - "start": 127104, - "end": 127110, + "start": 127618, + "end": 127624, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 63 }, "end": { - "line": 3193, + "line": 3201, "column": 69 }, "identifierName": "origin" @@ -128715,15 +129776,15 @@ }, "property": { "type": "NumericLiteral", - "start": 127111, - "end": 127112, + "start": 127625, + "end": 127626, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 70 }, "end": { - "line": 3193, + "line": 3201, "column": 71 } }, @@ -128739,43 +129800,43 @@ }, { "type": "CallExpression", - "start": 127118, - "end": 127139, + "start": 127632, + "end": 127653, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 77 }, "end": { - "line": 3193, + "line": 3201, "column": 98 } }, "callee": { "type": "MemberExpression", - "start": 127118, - "end": 127128, + "start": 127632, + "end": 127642, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 77 }, "end": { - "line": 3193, + "line": 3201, "column": 87 } }, "object": { "type": "Identifier", - "start": 127118, - "end": 127122, + "start": 127632, + "end": 127636, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 77 }, "end": { - "line": 3193, + "line": 3201, "column": 81 }, "identifierName": "Math" @@ -128784,15 +129845,15 @@ }, "property": { "type": "Identifier", - "start": 127123, - "end": 127128, + "start": 127637, + "end": 127642, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 82 }, "end": { - "line": 3193, + "line": 3201, "column": 87 }, "identifierName": "round" @@ -128804,29 +129865,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 127129, - "end": 127138, + "start": 127643, + "end": 127652, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 88 }, "end": { - "line": 3193, + "line": 3201, "column": 97 } }, "object": { "type": "Identifier", - "start": 127129, - "end": 127135, + "start": 127643, + "end": 127649, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 88 }, "end": { - "line": 3193, + "line": 3201, "column": 94 }, "identifierName": "origin" @@ -128835,15 +129896,15 @@ }, "property": { "type": "NumericLiteral", - "start": 127136, - "end": 127137, + "start": 127650, + "end": 127651, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 95 }, "end": { - "line": 3193, + "line": 3201, "column": 96 } }, @@ -128859,29 +129920,29 @@ }, { "type": "MemberExpression", - "start": 127143, - "end": 127156, + "start": 127657, + "end": 127670, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 102 }, "end": { - "line": 3193, + "line": 3201, "column": 115 } }, "object": { "type": "Identifier", - "start": 127143, - "end": 127146, + "start": 127657, + "end": 127660, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 102 }, "end": { - "line": 3193, + "line": 3201, "column": 105 }, "identifierName": "cfg" @@ -128890,15 +129951,15 @@ }, "property": { "type": "Identifier", - "start": 127147, - "end": 127156, + "start": 127661, + "end": 127670, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 106 }, "end": { - "line": 3193, + "line": 3201, "column": 115 }, "identifierName": "primitive" @@ -128909,15 +129970,15 @@ }, { "type": "Identifier", - "start": 127160, - "end": 127179, + "start": 127674, + "end": 127693, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 119 }, "end": { - "line": 3193, + "line": 3201, "column": 138 }, "identifierName": "positionsDecodeHash" @@ -128926,15 +129987,15 @@ }, { "type": "Identifier", - "start": 127183, - "end": 127195, + "start": 127697, + "end": 127709, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 142 }, "end": { - "line": 3193, + "line": 3201, "column": 154 }, "identifierName": "textureSetId" @@ -128945,15 +130006,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 127066, - "end": 127066, + "start": 127580, + "end": 127580, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 25 }, "end": { - "line": 3193, + "line": 3201, "column": 25 } }, @@ -128965,15 +130026,15 @@ }, { "type": "TemplateElement", - "start": 127090, - "end": 127091, + "start": 127604, + "end": 127605, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 49 }, "end": { - "line": 3193, + "line": 3201, "column": 50 } }, @@ -128985,15 +130046,15 @@ }, { "type": "TemplateElement", - "start": 127115, - "end": 127116, + "start": 127629, + "end": 127630, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 74 }, "end": { - "line": 3193, + "line": 3201, "column": 75 } }, @@ -129005,15 +130066,15 @@ }, { "type": "TemplateElement", - "start": 127140, - "end": 127141, + "start": 127654, + "end": 127655, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 99 }, "end": { - "line": 3193, + "line": 3201, "column": 100 } }, @@ -129025,15 +130086,15 @@ }, { "type": "TemplateElement", - "start": 127157, - "end": 127158, + "start": 127671, + "end": 127672, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 116 }, "end": { - "line": 3193, + "line": 3201, "column": 117 } }, @@ -129045,15 +130106,15 @@ }, { "type": "TemplateElement", - "start": 127180, - "end": 127181, + "start": 127694, + "end": 127695, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 139 }, "end": { - "line": 3193, + "line": 3201, "column": 140 } }, @@ -129065,15 +130126,15 @@ }, { "type": "TemplateElement", - "start": 127196, - "end": 127196, + "start": 127710, + "end": 127710, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 155 }, "end": { - "line": 3193, + "line": 3201, "column": 155 } }, @@ -129091,44 +130152,44 @@ }, { "type": "VariableDeclaration", - "start": 127207, - "end": 127263, + "start": 127721, + "end": 127777, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 8 }, "end": { - "line": 3194, + "line": 3202, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 127211, - "end": 127262, + "start": 127725, + "end": 127776, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 12 }, "end": { - "line": 3194, + "line": 3202, "column": 63 } }, "id": { "type": "Identifier", - "start": 127211, - "end": 127227, + "start": 127725, + "end": 127741, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 12 }, "end": { - "line": 3194, + "line": 3202, "column": 28 }, "identifierName": "vboBatchingLayer" @@ -129137,58 +130198,58 @@ }, "init": { "type": "MemberExpression", - "start": 127230, - "end": 127262, + "start": 127744, + "end": 127776, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 31 }, "end": { - "line": 3194, + "line": 3202, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 127230, - "end": 127253, + "start": 127744, + "end": 127767, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 31 }, "end": { - "line": 3194, + "line": 3202, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 127230, - "end": 127234, + "start": 127744, + "end": 127748, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 31 }, "end": { - "line": 3194, + "line": 3202, "column": 35 } } }, "property": { "type": "Identifier", - "start": 127235, - "end": 127253, + "start": 127749, + "end": 127767, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 36 }, "end": { - "line": 3194, + "line": 3202, "column": 54 }, "identifierName": "_vboBatchingLayers" @@ -129199,15 +130260,15 @@ }, "property": { "type": "Identifier", - "start": 127254, - "end": 127261, + "start": 127768, + "end": 127775, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 55 }, "end": { - "line": 3194, + "line": 3202, "column": 62 }, "identifierName": "layerId" @@ -129222,29 +130283,29 @@ }, { "type": "IfStatement", - "start": 127272, - "end": 127342, + "start": 127786, + "end": 127856, "loc": { "start": { - "line": 3195, + "line": 3203, "column": 8 }, "end": { - "line": 3197, + "line": 3205, "column": 9 } }, "test": { "type": "Identifier", - "start": 127276, - "end": 127292, + "start": 127790, + "end": 127806, "loc": { "start": { - "line": 3195, + "line": 3203, "column": 12 }, "end": { - "line": 3195, + "line": 3203, "column": 28 }, "identifierName": "vboBatchingLayer" @@ -129253,44 +130314,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 127294, - "end": 127342, + "start": 127808, + "end": 127856, "loc": { "start": { - "line": 3195, + "line": 3203, "column": 30 }, "end": { - "line": 3197, + "line": 3205, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 127308, - "end": 127332, + "start": 127822, + "end": 127846, "loc": { "start": { - "line": 3196, + "line": 3204, "column": 12 }, "end": { - "line": 3196, + "line": 3204, "column": 36 } }, "argument": { "type": "Identifier", - "start": 127315, - "end": 127331, + "start": 127829, + "end": 127845, "loc": { "start": { - "line": 3196, + "line": 3204, "column": 19 }, "end": { - "line": 3196, + "line": 3204, "column": 35 }, "identifierName": "vboBatchingLayer" @@ -129305,44 +130366,44 @@ }, { "type": "VariableDeclaration", - "start": 127351, - "end": 127383, + "start": 127865, + "end": 127897, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 8 }, "end": { - "line": 3198, + "line": 3206, "column": 40 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 127355, - "end": 127382, + "start": 127869, + "end": 127896, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 12 }, "end": { - "line": 3198, + "line": 3206, "column": 39 } }, "id": { "type": "Identifier", - "start": 127355, - "end": 127365, + "start": 127869, + "end": 127879, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 12 }, "end": { - "line": 3198, + "line": 3206, "column": 22 }, "identifierName": "textureSet" @@ -129351,29 +130412,29 @@ }, "init": { "type": "MemberExpression", - "start": 127368, - "end": 127382, + "start": 127882, + "end": 127896, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 25 }, "end": { - "line": 3198, + "line": 3206, "column": 39 } }, "object": { "type": "Identifier", - "start": 127368, - "end": 127371, + "start": 127882, + "end": 127885, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 25 }, "end": { - "line": 3198, + "line": 3206, "column": 28 }, "identifierName": "cfg" @@ -129382,15 +130443,15 @@ }, "property": { "type": "Identifier", - "start": 127372, - "end": 127382, + "start": 127886, + "end": 127896, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 29 }, "end": { - "line": 3198, + "line": 3206, "column": 39 }, "identifierName": "textureSet" @@ -129405,29 +130466,29 @@ }, { "type": "WhileStatement", - "start": 127392, - "end": 131948, + "start": 127906, + "end": 132462, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 8 }, "end": { - "line": 3280, + "line": 3288, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 127399, - "end": 127416, + "start": 127913, + "end": 127930, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 15 }, "end": { - "line": 3199, + "line": 3207, "column": 32 } }, @@ -129435,15 +130496,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 127400, - "end": 127416, + "start": 127914, + "end": 127930, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 16 }, "end": { - "line": 3199, + "line": 3207, "column": 32 }, "identifierName": "vboBatchingLayer" @@ -129456,58 +130517,58 @@ }, "body": { "type": "BlockStatement", - "start": 127418, - "end": 131948, + "start": 127932, + "end": 132462, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 34 }, "end": { - "line": 3280, + "line": 3288, "column": 9 } }, "body": [ { "type": "SwitchStatement", - "start": 127432, - "end": 131411, + "start": 127946, + "end": 131925, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 12 }, "end": { - "line": 3270, + "line": 3278, "column": 13 } }, "discriminant": { "type": "MemberExpression", - "start": 127440, - "end": 127453, + "start": 127954, + "end": 127967, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 20 }, "end": { - "line": 3200, + "line": 3208, "column": 33 } }, "object": { "type": "Identifier", - "start": 127440, - "end": 127443, + "start": 127954, + "end": 127957, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 20 }, "end": { - "line": 3200, + "line": 3208, "column": 23 }, "identifierName": "cfg" @@ -129516,15 +130577,15 @@ }, "property": { "type": "Identifier", - "start": 127444, - "end": 127453, + "start": 127958, + "end": 127967, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 24 }, "end": { - "line": 3200, + "line": 3208, "column": 33 }, "identifierName": "primitive" @@ -129536,59 +130597,59 @@ "cases": [ { "type": "SwitchCase", - "start": 127473, - "end": 128304, + "start": 127987, + "end": 128818, "loc": { "start": { - "line": 3201, + "line": 3209, "column": 16 }, "end": { - "line": 3215, + "line": 3223, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 127608, - "end": 128277, + "start": 128122, + "end": 128791, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 20 }, "end": { - "line": 3214, + "line": 3222, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 127608, - "end": 128276, + "start": 128122, + "end": 128790, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 20 }, "end": { - "line": 3214, + "line": 3222, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 127608, - "end": 127624, + "start": 128122, + "end": 128138, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 20 }, "end": { - "line": 3203, + "line": 3211, "column": 36 }, "identifierName": "vboBatchingLayer" @@ -129598,29 +130659,29 @@ }, "right": { "type": "NewExpression", - "start": 127627, - "end": 128276, + "start": 128141, + "end": 128790, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 39 }, "end": { - "line": 3214, + "line": 3222, "column": 22 } }, "callee": { "type": "Identifier", - "start": 127631, - "end": 127656, + "start": 128145, + "end": 128170, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 43 }, "end": { - "line": 3203, + "line": 3211, "column": 68 }, "identifierName": "VBOBatchingTrianglesLayer" @@ -129630,30 +130691,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 127657, - "end": 128275, + "start": 128171, + "end": 128789, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 69 }, "end": { - "line": 3214, + "line": 3222, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 127683, - "end": 127688, + "start": 128197, + "end": 128202, "loc": { "start": { - "line": 3204, + "line": 3212, "column": 24 }, "end": { - "line": 3204, + "line": 3212, "column": 29 } }, @@ -129662,15 +130723,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 127683, - "end": 127688, + "start": 128197, + "end": 128202, "loc": { "start": { - "line": 3204, + "line": 3212, "column": 24 }, "end": { - "line": 3204, + "line": 3212, "column": 29 }, "identifierName": "model" @@ -129679,15 +130740,15 @@ }, "value": { "type": "Identifier", - "start": 127683, - "end": 127688, + "start": 128197, + "end": 128202, "loc": { "start": { - "line": 3204, + "line": 3212, "column": 24 }, "end": { - "line": 3204, + "line": 3212, "column": 29 }, "identifierName": "model" @@ -129700,15 +130761,15 @@ }, { "type": "ObjectProperty", - "start": 127714, - "end": 127724, + "start": 128228, + "end": 128238, "loc": { "start": { - "line": 3205, + "line": 3213, "column": 24 }, "end": { - "line": 3205, + "line": 3213, "column": 34 } }, @@ -129717,15 +130778,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 127714, - "end": 127724, + "start": 128228, + "end": 128238, "loc": { "start": { - "line": 3205, + "line": 3213, "column": 24 }, "end": { - "line": 3205, + "line": 3213, "column": 34 }, "identifierName": "textureSet" @@ -129734,15 +130795,15 @@ }, "value": { "type": "Identifier", - "start": 127714, - "end": 127724, + "start": 128228, + "end": 128238, "loc": { "start": { - "line": 3205, + "line": 3213, "column": 24 }, "end": { - "line": 3205, + "line": 3213, "column": 34 }, "identifierName": "textureSet" @@ -129755,15 +130816,15 @@ }, { "type": "ObjectProperty", - "start": 127750, - "end": 127763, + "start": 128264, + "end": 128277, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 24 }, "end": { - "line": 3206, + "line": 3214, "column": 37 } }, @@ -129772,15 +130833,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 127750, - "end": 127760, + "start": 128264, + "end": 128274, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 24 }, "end": { - "line": 3206, + "line": 3214, "column": 34 }, "identifierName": "layerIndex" @@ -129789,15 +130850,15 @@ }, "value": { "type": "NumericLiteral", - "start": 127762, - "end": 127763, + "start": 128276, + "end": 128277, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 36 }, "end": { - "line": 3206, + "line": 3214, "column": 37 } }, @@ -129810,15 +130871,15 @@ }, { "type": "ObjectProperty", - "start": 127819, - "end": 127869, + "start": 128333, + "end": 128383, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 24 }, "end": { - "line": 3207, + "line": 3215, "column": 74 } }, @@ -129827,15 +130888,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 127819, - "end": 127832, + "start": 128333, + "end": 128346, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 24 }, "end": { - "line": 3207, + "line": 3215, "column": 37 }, "identifierName": "scratchMemory" @@ -129845,44 +130906,44 @@ }, "value": { "type": "MemberExpression", - "start": 127834, - "end": 127869, + "start": 128348, + "end": 128383, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 39 }, "end": { - "line": 3207, + "line": 3215, "column": 74 } }, "object": { "type": "ThisExpression", - "start": 127834, - "end": 127838, + "start": 128348, + "end": 128352, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 39 }, "end": { - "line": 3207, + "line": 3215, "column": 43 } } }, "property": { "type": "Identifier", - "start": 127839, - "end": 127869, + "start": 128353, + "end": 128383, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 44 }, "end": { - "line": 3207, + "line": 3215, "column": 74 }, "identifierName": "_vboBatchingLayerScratchMemory" @@ -129895,15 +130956,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 127765, - "end": 127794, + "start": 128279, + "end": 128308, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 39 }, "end": { - "line": 3206, + "line": 3214, "column": 68 } } @@ -129912,15 +130973,15 @@ }, { "type": "ObjectProperty", - "start": 127895, - "end": 127943, + "start": 128409, + "end": 128457, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 24 }, "end": { - "line": 3208, + "line": 3216, "column": 72 } }, @@ -129929,15 +130990,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 127895, - "end": 127916, + "start": 128409, + "end": 128430, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 24 }, "end": { - "line": 3208, + "line": 3216, "column": 45 }, "identifierName": "positionsDecodeMatrix" @@ -129946,29 +131007,29 @@ }, "value": { "type": "MemberExpression", - "start": 127918, - "end": 127943, + "start": 128432, + "end": 128457, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 47 }, "end": { - "line": 3208, + "line": 3216, "column": 72 } }, "object": { "type": "Identifier", - "start": 127918, - "end": 127921, + "start": 128432, + "end": 128435, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 47 }, "end": { - "line": 3208, + "line": 3216, "column": 50 }, "identifierName": "cfg" @@ -129977,15 +131038,15 @@ }, "property": { "type": "Identifier", - "start": 127922, - "end": 127943, + "start": 128436, + "end": 128457, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 51 }, "end": { - "line": 3208, + "line": 3216, "column": 72 }, "identifierName": "positionsDecodeMatrix" @@ -129997,15 +131058,15 @@ }, { "type": "ObjectProperty", - "start": 127990, - "end": 128024, + "start": 128504, + "end": 128538, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 24 }, "end": { - "line": 3209, + "line": 3217, "column": 58 } }, @@ -130014,15 +131075,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 127990, - "end": 128004, + "start": 128504, + "end": 128518, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 24 }, "end": { - "line": 3209, + "line": 3217, "column": 38 }, "identifierName": "uvDecodeMatrix" @@ -130032,29 +131093,29 @@ }, "value": { "type": "MemberExpression", - "start": 128006, - "end": 128024, + "start": 128520, + "end": 128538, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 40 }, "end": { - "line": 3209, + "line": 3217, "column": 58 } }, "object": { "type": "Identifier", - "start": 128006, - "end": 128009, + "start": 128520, + "end": 128523, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 40 }, "end": { - "line": 3209, + "line": 3217, "column": 43 }, "identifierName": "cfg" @@ -130063,15 +131124,15 @@ }, "property": { "type": "Identifier", - "start": 128010, - "end": 128024, + "start": 128524, + "end": 128538, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 44 }, "end": { - "line": 3209, + "line": 3217, "column": 58 }, "identifierName": "uvDecodeMatrix" @@ -130084,15 +131145,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 127946, - "end": 127965, + "start": 128460, + "end": 128479, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 75 }, "end": { - "line": 3208, + "line": 3216, "column": 94 } } @@ -130101,15 +131162,15 @@ }, { "type": "ObjectProperty", - "start": 128070, - "end": 128076, + "start": 128584, + "end": 128590, "loc": { "start": { - "line": 3210, + "line": 3218, "column": 24 }, "end": { - "line": 3210, + "line": 3218, "column": 30 } }, @@ -130118,15 +131179,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128070, - "end": 128076, + "start": 128584, + "end": 128590, "loc": { "start": { - "line": 3210, + "line": 3218, "column": 24 }, "end": { - "line": 3210, + "line": 3218, "column": 30 }, "identifierName": "origin" @@ -130136,15 +131197,15 @@ }, "value": { "type": "Identifier", - "start": 128070, - "end": 128076, + "start": 128584, + "end": 128590, "loc": { "start": { - "line": 3210, + "line": 3218, "column": 24 }, "end": { - "line": 3210, + "line": 3218, "column": 30 }, "identifierName": "origin" @@ -130155,15 +131216,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128026, - "end": 128045, + "start": 128540, + "end": 128559, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 60 }, "end": { - "line": 3209, + "line": 3217, "column": 79 } } @@ -130175,15 +131236,15 @@ }, { "type": "ObjectProperty", - "start": 128102, - "end": 128150, + "start": 128616, + "end": 128664, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 24 }, "end": { - "line": 3211, + "line": 3219, "column": 72 } }, @@ -130192,15 +131253,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128102, - "end": 128122, + "start": 128616, + "end": 128636, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 24 }, "end": { - "line": 3211, + "line": 3219, "column": 44 }, "identifierName": "maxGeometryBatchSize" @@ -130209,44 +131270,44 @@ }, "value": { "type": "MemberExpression", - "start": 128124, - "end": 128150, + "start": 128638, + "end": 128664, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 46 }, "end": { - "line": 3211, + "line": 3219, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 128124, - "end": 128128, + "start": 128638, + "end": 128642, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 46 }, "end": { - "line": 3211, + "line": 3219, "column": 50 } } }, "property": { "type": "Identifier", - "start": 128129, - "end": 128150, + "start": 128643, + "end": 128664, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 51 }, "end": { - "line": 3211, + "line": 3219, "column": 72 }, "identifierName": "_maxGeometryBatchSize" @@ -130258,15 +131319,15 @@ }, { "type": "ObjectProperty", - "start": 128176, - "end": 128210, + "start": 128690, + "end": 128724, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 24 }, "end": { - "line": 3212, + "line": 3220, "column": 58 } }, @@ -130275,15 +131336,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128176, - "end": 128181, + "start": 128690, + "end": 128695, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 24 }, "end": { - "line": 3212, + "line": 3220, "column": 29 }, "identifierName": "solid" @@ -130292,43 +131353,43 @@ }, "value": { "type": "BinaryExpression", - "start": 128184, - "end": 128209, + "start": 128698, + "end": 128723, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 32 }, "end": { - "line": 3212, + "line": 3220, "column": 57 } }, "left": { "type": "MemberExpression", - "start": 128184, - "end": 128197, + "start": 128698, + "end": 128711, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 32 }, "end": { - "line": 3212, + "line": 3220, "column": 45 } }, "object": { "type": "Identifier", - "start": 128184, - "end": 128187, + "start": 128698, + "end": 128701, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 32 }, "end": { - "line": 3212, + "line": 3220, "column": 35 }, "identifierName": "cfg" @@ -130337,15 +131398,15 @@ }, "property": { "type": "Identifier", - "start": 128188, - "end": 128197, + "start": 128702, + "end": 128711, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 36 }, "end": { - "line": 3212, + "line": 3220, "column": 45 }, "identifierName": "primitive" @@ -130357,15 +131418,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 128202, - "end": 128209, + "start": 128716, + "end": 128723, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 50 }, "end": { - "line": 3212, + "line": 3220, "column": 57 } }, @@ -130377,21 +131438,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 128183 + "parenStart": 128697 } } }, { "type": "ObjectProperty", - "start": 128236, - "end": 128253, + "start": 128750, + "end": 128767, "loc": { "start": { - "line": 3213, + "line": 3221, "column": 24 }, "end": { - "line": 3213, + "line": 3221, "column": 41 } }, @@ -130400,15 +131461,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128236, - "end": 128247, + "start": 128750, + "end": 128761, "loc": { "start": { - "line": 3213, + "line": 3221, "column": 24 }, "end": { - "line": 3213, + "line": 3221, "column": 35 }, "identifierName": "autoNormals" @@ -130417,15 +131478,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 128249, - "end": 128253, + "start": 128763, + "end": 128767, "loc": { "start": { - "line": 3213, + "line": 3221, "column": 37 }, "end": { - "line": 3213, + "line": 3221, "column": 41 } }, @@ -130442,15 +131503,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 127511, - "end": 127587, + "start": 128025, + "end": 128101, "loc": { "start": { - "line": 3202, + "line": 3210, "column": 20 }, "end": { - "line": 3202, + "line": 3210, "column": 96 } } @@ -130459,15 +131520,15 @@ }, { "type": "BreakStatement", - "start": 128298, - "end": 128304, + "start": 128812, + "end": 128818, "loc": { "start": { - "line": 3215, + "line": 3223, "column": 20 }, "end": { - "line": 3215, + "line": 3223, "column": 26 } }, @@ -130476,15 +131537,15 @@ ], "test": { "type": "StringLiteral", - "start": 127478, - "end": 127489, + "start": 127992, + "end": 128003, "loc": { "start": { - "line": 3201, + "line": 3209, "column": 21 }, "end": { - "line": 3201, + "line": 3209, "column": 32 } }, @@ -130497,59 +131558,59 @@ }, { "type": "SwitchCase", - "start": 128321, - "end": 129148, + "start": 128835, + "end": 129662, "loc": { "start": { - "line": 3216, + "line": 3224, "column": 16 }, "end": { - "line": 3230, + "line": 3238, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 128452, - "end": 129121, + "start": 128966, + "end": 129635, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 20 }, "end": { - "line": 3229, + "line": 3237, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 128452, - "end": 129120, + "start": 128966, + "end": 129634, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 20 }, "end": { - "line": 3229, + "line": 3237, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 128452, - "end": 128468, + "start": 128966, + "end": 128982, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 20 }, "end": { - "line": 3218, + "line": 3226, "column": 36 }, "identifierName": "vboBatchingLayer" @@ -130559,29 +131620,29 @@ }, "right": { "type": "NewExpression", - "start": 128471, - "end": 129120, + "start": 128985, + "end": 129634, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 39 }, "end": { - "line": 3229, + "line": 3237, "column": 22 } }, "callee": { "type": "Identifier", - "start": 128475, - "end": 128500, + "start": 128989, + "end": 129014, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 43 }, "end": { - "line": 3218, + "line": 3226, "column": 68 }, "identifierName": "VBOBatchingTrianglesLayer" @@ -130591,30 +131652,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 128501, - "end": 129119, + "start": 129015, + "end": 129633, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 69 }, "end": { - "line": 3229, + "line": 3237, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 128527, - "end": 128532, + "start": 129041, + "end": 129046, "loc": { "start": { - "line": 3219, + "line": 3227, "column": 24 }, "end": { - "line": 3219, + "line": 3227, "column": 29 } }, @@ -130623,15 +131684,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128527, - "end": 128532, + "start": 129041, + "end": 129046, "loc": { "start": { - "line": 3219, + "line": 3227, "column": 24 }, "end": { - "line": 3219, + "line": 3227, "column": 29 }, "identifierName": "model" @@ -130640,15 +131701,15 @@ }, "value": { "type": "Identifier", - "start": 128527, - "end": 128532, + "start": 129041, + "end": 129046, "loc": { "start": { - "line": 3219, + "line": 3227, "column": 24 }, "end": { - "line": 3219, + "line": 3227, "column": 29 }, "identifierName": "model" @@ -130661,15 +131722,15 @@ }, { "type": "ObjectProperty", - "start": 128558, - "end": 128568, + "start": 129072, + "end": 129082, "loc": { "start": { - "line": 3220, + "line": 3228, "column": 24 }, "end": { - "line": 3220, + "line": 3228, "column": 34 } }, @@ -130678,15 +131739,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128558, - "end": 128568, + "start": 129072, + "end": 129082, "loc": { "start": { - "line": 3220, + "line": 3228, "column": 24 }, "end": { - "line": 3220, + "line": 3228, "column": 34 }, "identifierName": "textureSet" @@ -130695,15 +131756,15 @@ }, "value": { "type": "Identifier", - "start": 128558, - "end": 128568, + "start": 129072, + "end": 129082, "loc": { "start": { - "line": 3220, + "line": 3228, "column": 24 }, "end": { - "line": 3220, + "line": 3228, "column": 34 }, "identifierName": "textureSet" @@ -130716,15 +131777,15 @@ }, { "type": "ObjectProperty", - "start": 128594, - "end": 128607, + "start": 129108, + "end": 129121, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 24 }, "end": { - "line": 3221, + "line": 3229, "column": 37 } }, @@ -130733,15 +131794,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128594, - "end": 128604, + "start": 129108, + "end": 129118, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 24 }, "end": { - "line": 3221, + "line": 3229, "column": 34 }, "identifierName": "layerIndex" @@ -130750,15 +131811,15 @@ }, "value": { "type": "NumericLiteral", - "start": 128606, - "end": 128607, + "start": 129120, + "end": 129121, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 36 }, "end": { - "line": 3221, + "line": 3229, "column": 37 } }, @@ -130771,15 +131832,15 @@ }, { "type": "ObjectProperty", - "start": 128663, - "end": 128713, + "start": 129177, + "end": 129227, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 24 }, "end": { - "line": 3222, + "line": 3230, "column": 74 } }, @@ -130788,15 +131849,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128663, - "end": 128676, + "start": 129177, + "end": 129190, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 24 }, "end": { - "line": 3222, + "line": 3230, "column": 37 }, "identifierName": "scratchMemory" @@ -130806,44 +131867,44 @@ }, "value": { "type": "MemberExpression", - "start": 128678, - "end": 128713, + "start": 129192, + "end": 129227, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 39 }, "end": { - "line": 3222, + "line": 3230, "column": 74 } }, "object": { "type": "ThisExpression", - "start": 128678, - "end": 128682, + "start": 129192, + "end": 129196, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 39 }, "end": { - "line": 3222, + "line": 3230, "column": 43 } } }, "property": { "type": "Identifier", - "start": 128683, - "end": 128713, + "start": 129197, + "end": 129227, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 44 }, "end": { - "line": 3222, + "line": 3230, "column": 74 }, "identifierName": "_vboBatchingLayerScratchMemory" @@ -130856,15 +131917,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 128609, - "end": 128638, + "start": 129123, + "end": 129152, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 39 }, "end": { - "line": 3221, + "line": 3229, "column": 68 } } @@ -130873,15 +131934,15 @@ }, { "type": "ObjectProperty", - "start": 128739, - "end": 128787, + "start": 129253, + "end": 129301, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 24 }, "end": { - "line": 3223, + "line": 3231, "column": 72 } }, @@ -130890,15 +131951,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128739, - "end": 128760, + "start": 129253, + "end": 129274, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 24 }, "end": { - "line": 3223, + "line": 3231, "column": 45 }, "identifierName": "positionsDecodeMatrix" @@ -130907,29 +131968,29 @@ }, "value": { "type": "MemberExpression", - "start": 128762, - "end": 128787, + "start": 129276, + "end": 129301, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 47 }, "end": { - "line": 3223, + "line": 3231, "column": 72 } }, "object": { "type": "Identifier", - "start": 128762, - "end": 128765, + "start": 129276, + "end": 129279, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 47 }, "end": { - "line": 3223, + "line": 3231, "column": 50 }, "identifierName": "cfg" @@ -130938,15 +131999,15 @@ }, "property": { "type": "Identifier", - "start": 128766, - "end": 128787, + "start": 129280, + "end": 129301, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 51 }, "end": { - "line": 3223, + "line": 3231, "column": 72 }, "identifierName": "positionsDecodeMatrix" @@ -130958,15 +132019,15 @@ }, { "type": "ObjectProperty", - "start": 128834, - "end": 128868, + "start": 129348, + "end": 129382, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 24 }, "end": { - "line": 3224, + "line": 3232, "column": 58 } }, @@ -130975,15 +132036,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128834, - "end": 128848, + "start": 129348, + "end": 129362, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 24 }, "end": { - "line": 3224, + "line": 3232, "column": 38 }, "identifierName": "uvDecodeMatrix" @@ -130993,29 +132054,29 @@ }, "value": { "type": "MemberExpression", - "start": 128850, - "end": 128868, + "start": 129364, + "end": 129382, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 40 }, "end": { - "line": 3224, + "line": 3232, "column": 58 } }, "object": { "type": "Identifier", - "start": 128850, - "end": 128853, + "start": 129364, + "end": 129367, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 40 }, "end": { - "line": 3224, + "line": 3232, "column": 43 }, "identifierName": "cfg" @@ -131024,15 +132085,15 @@ }, "property": { "type": "Identifier", - "start": 128854, - "end": 128868, + "start": 129368, + "end": 129382, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 44 }, "end": { - "line": 3224, + "line": 3232, "column": 58 }, "identifierName": "uvDecodeMatrix" @@ -131045,15 +132106,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128790, - "end": 128809, + "start": 129304, + "end": 129323, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 75 }, "end": { - "line": 3223, + "line": 3231, "column": 94 } } @@ -131062,15 +132123,15 @@ }, { "type": "ObjectProperty", - "start": 128914, - "end": 128920, + "start": 129428, + "end": 129434, "loc": { "start": { - "line": 3225, + "line": 3233, "column": 24 }, "end": { - "line": 3225, + "line": 3233, "column": 30 } }, @@ -131079,15 +132140,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128914, - "end": 128920, + "start": 129428, + "end": 129434, "loc": { "start": { - "line": 3225, + "line": 3233, "column": 24 }, "end": { - "line": 3225, + "line": 3233, "column": 30 }, "identifierName": "origin" @@ -131097,15 +132158,15 @@ }, "value": { "type": "Identifier", - "start": 128914, - "end": 128920, + "start": 129428, + "end": 129434, "loc": { "start": { - "line": 3225, + "line": 3233, "column": 24 }, "end": { - "line": 3225, + "line": 3233, "column": 30 }, "identifierName": "origin" @@ -131116,15 +132177,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128870, - "end": 128889, + "start": 129384, + "end": 129403, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 60 }, "end": { - "line": 3224, + "line": 3232, "column": 79 } } @@ -131136,15 +132197,15 @@ }, { "type": "ObjectProperty", - "start": 128946, - "end": 128994, + "start": 129460, + "end": 129508, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 24 }, "end": { - "line": 3226, + "line": 3234, "column": 72 } }, @@ -131153,15 +132214,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 128946, - "end": 128966, + "start": 129460, + "end": 129480, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 24 }, "end": { - "line": 3226, + "line": 3234, "column": 44 }, "identifierName": "maxGeometryBatchSize" @@ -131170,44 +132231,44 @@ }, "value": { "type": "MemberExpression", - "start": 128968, - "end": 128994, + "start": 129482, + "end": 129508, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 46 }, "end": { - "line": 3226, + "line": 3234, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 128968, - "end": 128972, + "start": 129482, + "end": 129486, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 46 }, "end": { - "line": 3226, + "line": 3234, "column": 50 } } }, "property": { "type": "Identifier", - "start": 128973, - "end": 128994, + "start": 129487, + "end": 129508, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 51 }, "end": { - "line": 3226, + "line": 3234, "column": 72 }, "identifierName": "_maxGeometryBatchSize" @@ -131219,15 +132280,15 @@ }, { "type": "ObjectProperty", - "start": 129020, - "end": 129054, + "start": 129534, + "end": 129568, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 24 }, "end": { - "line": 3227, + "line": 3235, "column": 58 } }, @@ -131236,15 +132297,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129020, - "end": 129025, + "start": 129534, + "end": 129539, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 24 }, "end": { - "line": 3227, + "line": 3235, "column": 29 }, "identifierName": "solid" @@ -131253,43 +132314,43 @@ }, "value": { "type": "BinaryExpression", - "start": 129028, - "end": 129053, + "start": 129542, + "end": 129567, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 32 }, "end": { - "line": 3227, + "line": 3235, "column": 57 } }, "left": { "type": "MemberExpression", - "start": 129028, - "end": 129041, + "start": 129542, + "end": 129555, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 32 }, "end": { - "line": 3227, + "line": 3235, "column": 45 } }, "object": { "type": "Identifier", - "start": 129028, - "end": 129031, + "start": 129542, + "end": 129545, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 32 }, "end": { - "line": 3227, + "line": 3235, "column": 35 }, "identifierName": "cfg" @@ -131298,15 +132359,15 @@ }, "property": { "type": "Identifier", - "start": 129032, - "end": 129041, + "start": 129546, + "end": 129555, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 36 }, "end": { - "line": 3227, + "line": 3235, "column": 45 }, "identifierName": "primitive" @@ -131318,15 +132379,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 129046, - "end": 129053, + "start": 129560, + "end": 129567, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 50 }, "end": { - "line": 3227, + "line": 3235, "column": 57 } }, @@ -131338,21 +132399,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 129027 + "parenStart": 129541 } } }, { "type": "ObjectProperty", - "start": 129080, - "end": 129097, + "start": 129594, + "end": 129611, "loc": { "start": { - "line": 3228, + "line": 3236, "column": 24 }, "end": { - "line": 3228, + "line": 3236, "column": 41 } }, @@ -131361,15 +132422,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129080, - "end": 129091, + "start": 129594, + "end": 129605, "loc": { "start": { - "line": 3228, + "line": 3236, "column": 24 }, "end": { - "line": 3228, + "line": 3236, "column": 35 }, "identifierName": "autoNormals" @@ -131378,15 +132439,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 129093, - "end": 129097, + "start": 129607, + "end": 129611, "loc": { "start": { - "line": 3228, + "line": 3236, "column": 37 }, "end": { - "line": 3228, + "line": 3236, "column": 41 } }, @@ -131403,15 +132464,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 128355, - "end": 128431, + "start": 128869, + "end": 128945, "loc": { "start": { - "line": 3217, + "line": 3225, "column": 20 }, "end": { - "line": 3217, + "line": 3225, "column": 96 } } @@ -131420,15 +132481,15 @@ }, { "type": "BreakStatement", - "start": 129142, - "end": 129148, + "start": 129656, + "end": 129662, "loc": { "start": { - "line": 3230, + "line": 3238, "column": 20 }, "end": { - "line": 3230, + "line": 3238, "column": 26 } }, @@ -131437,15 +132498,15 @@ ], "test": { "type": "StringLiteral", - "start": 128326, - "end": 128333, + "start": 128840, + "end": 128847, "loc": { "start": { - "line": 3216, + "line": 3224, "column": 21 }, "end": { - "line": 3216, + "line": 3224, "column": 28 } }, @@ -131458,59 +132519,59 @@ }, { "type": "SwitchCase", - "start": 129165, - "end": 129994, + "start": 129679, + "end": 130508, "loc": { "start": { - "line": 3231, + "line": 3239, "column": 16 }, "end": { - "line": 3245, + "line": 3253, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 129298, - "end": 129967, + "start": 129812, + "end": 130481, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 20 }, "end": { - "line": 3244, + "line": 3252, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 129298, - "end": 129966, + "start": 129812, + "end": 130480, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 20 }, "end": { - "line": 3244, + "line": 3252, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 129298, - "end": 129314, + "start": 129812, + "end": 129828, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 20 }, "end": { - "line": 3233, + "line": 3241, "column": 36 }, "identifierName": "vboBatchingLayer" @@ -131520,29 +132581,29 @@ }, "right": { "type": "NewExpression", - "start": 129317, - "end": 129966, + "start": 129831, + "end": 130480, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 39 }, "end": { - "line": 3244, + "line": 3252, "column": 22 } }, "callee": { "type": "Identifier", - "start": 129321, - "end": 129346, + "start": 129835, + "end": 129860, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 43 }, "end": { - "line": 3233, + "line": 3241, "column": 68 }, "identifierName": "VBOBatchingTrianglesLayer" @@ -131552,30 +132613,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 129347, - "end": 129965, + "start": 129861, + "end": 130479, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 69 }, "end": { - "line": 3244, + "line": 3252, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 129373, - "end": 129378, + "start": 129887, + "end": 129892, "loc": { "start": { - "line": 3234, + "line": 3242, "column": 24 }, "end": { - "line": 3234, + "line": 3242, "column": 29 } }, @@ -131584,15 +132645,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129373, - "end": 129378, + "start": 129887, + "end": 129892, "loc": { "start": { - "line": 3234, + "line": 3242, "column": 24 }, "end": { - "line": 3234, + "line": 3242, "column": 29 }, "identifierName": "model" @@ -131601,15 +132662,15 @@ }, "value": { "type": "Identifier", - "start": 129373, - "end": 129378, + "start": 129887, + "end": 129892, "loc": { "start": { - "line": 3234, + "line": 3242, "column": 24 }, "end": { - "line": 3234, + "line": 3242, "column": 29 }, "identifierName": "model" @@ -131622,15 +132683,15 @@ }, { "type": "ObjectProperty", - "start": 129404, - "end": 129414, + "start": 129918, + "end": 129928, "loc": { "start": { - "line": 3235, + "line": 3243, "column": 24 }, "end": { - "line": 3235, + "line": 3243, "column": 34 } }, @@ -131639,15 +132700,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129404, - "end": 129414, + "start": 129918, + "end": 129928, "loc": { "start": { - "line": 3235, + "line": 3243, "column": 24 }, "end": { - "line": 3235, + "line": 3243, "column": 34 }, "identifierName": "textureSet" @@ -131656,15 +132717,15 @@ }, "value": { "type": "Identifier", - "start": 129404, - "end": 129414, + "start": 129918, + "end": 129928, "loc": { "start": { - "line": 3235, + "line": 3243, "column": 24 }, "end": { - "line": 3235, + "line": 3243, "column": 34 }, "identifierName": "textureSet" @@ -131677,15 +132738,15 @@ }, { "type": "ObjectProperty", - "start": 129440, - "end": 129453, + "start": 129954, + "end": 129967, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 24 }, "end": { - "line": 3236, + "line": 3244, "column": 37 } }, @@ -131694,15 +132755,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129440, - "end": 129450, + "start": 129954, + "end": 129964, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 24 }, "end": { - "line": 3236, + "line": 3244, "column": 34 }, "identifierName": "layerIndex" @@ -131711,15 +132772,15 @@ }, "value": { "type": "NumericLiteral", - "start": 129452, - "end": 129453, + "start": 129966, + "end": 129967, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 36 }, "end": { - "line": 3236, + "line": 3244, "column": 37 } }, @@ -131732,15 +132793,15 @@ }, { "type": "ObjectProperty", - "start": 129509, - "end": 129559, + "start": 130023, + "end": 130073, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 24 }, "end": { - "line": 3237, + "line": 3245, "column": 74 } }, @@ -131749,15 +132810,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129509, - "end": 129522, + "start": 130023, + "end": 130036, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 24 }, "end": { - "line": 3237, + "line": 3245, "column": 37 }, "identifierName": "scratchMemory" @@ -131767,44 +132828,44 @@ }, "value": { "type": "MemberExpression", - "start": 129524, - "end": 129559, + "start": 130038, + "end": 130073, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 39 }, "end": { - "line": 3237, + "line": 3245, "column": 74 } }, "object": { "type": "ThisExpression", - "start": 129524, - "end": 129528, + "start": 130038, + "end": 130042, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 39 }, "end": { - "line": 3237, + "line": 3245, "column": 43 } } }, "property": { "type": "Identifier", - "start": 129529, - "end": 129559, + "start": 130043, + "end": 130073, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 44 }, "end": { - "line": 3237, + "line": 3245, "column": 74 }, "identifierName": "_vboBatchingLayerScratchMemory" @@ -131817,15 +132878,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 129455, - "end": 129484, + "start": 129969, + "end": 129998, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 39 }, "end": { - "line": 3236, + "line": 3244, "column": 68 } } @@ -131834,15 +132895,15 @@ }, { "type": "ObjectProperty", - "start": 129585, - "end": 129633, + "start": 130099, + "end": 130147, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 24 }, "end": { - "line": 3238, + "line": 3246, "column": 72 } }, @@ -131851,15 +132912,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129585, - "end": 129606, + "start": 130099, + "end": 130120, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 24 }, "end": { - "line": 3238, + "line": 3246, "column": 45 }, "identifierName": "positionsDecodeMatrix" @@ -131868,29 +132929,29 @@ }, "value": { "type": "MemberExpression", - "start": 129608, - "end": 129633, + "start": 130122, + "end": 130147, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 47 }, "end": { - "line": 3238, + "line": 3246, "column": 72 } }, "object": { "type": "Identifier", - "start": 129608, - "end": 129611, + "start": 130122, + "end": 130125, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 47 }, "end": { - "line": 3238, + "line": 3246, "column": 50 }, "identifierName": "cfg" @@ -131899,15 +132960,15 @@ }, "property": { "type": "Identifier", - "start": 129612, - "end": 129633, + "start": 130126, + "end": 130147, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 51 }, "end": { - "line": 3238, + "line": 3246, "column": 72 }, "identifierName": "positionsDecodeMatrix" @@ -131919,15 +132980,15 @@ }, { "type": "ObjectProperty", - "start": 129680, - "end": 129714, + "start": 130194, + "end": 130228, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 24 }, "end": { - "line": 3239, + "line": 3247, "column": 58 } }, @@ -131936,15 +132997,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129680, - "end": 129694, + "start": 130194, + "end": 130208, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 24 }, "end": { - "line": 3239, + "line": 3247, "column": 38 }, "identifierName": "uvDecodeMatrix" @@ -131954,29 +133015,29 @@ }, "value": { "type": "MemberExpression", - "start": 129696, - "end": 129714, + "start": 130210, + "end": 130228, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 40 }, "end": { - "line": 3239, + "line": 3247, "column": 58 } }, "object": { "type": "Identifier", - "start": 129696, - "end": 129699, + "start": 130210, + "end": 130213, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 40 }, "end": { - "line": 3239, + "line": 3247, "column": 43 }, "identifierName": "cfg" @@ -131985,15 +133046,15 @@ }, "property": { "type": "Identifier", - "start": 129700, - "end": 129714, + "start": 130214, + "end": 130228, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 44 }, "end": { - "line": 3239, + "line": 3247, "column": 58 }, "identifierName": "uvDecodeMatrix" @@ -132006,15 +133067,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 129636, - "end": 129655, + "start": 130150, + "end": 130169, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 75 }, "end": { - "line": 3238, + "line": 3246, "column": 94 } } @@ -132023,15 +133084,15 @@ }, { "type": "ObjectProperty", - "start": 129760, - "end": 129766, + "start": 130274, + "end": 130280, "loc": { "start": { - "line": 3240, + "line": 3248, "column": 24 }, "end": { - "line": 3240, + "line": 3248, "column": 30 } }, @@ -132040,15 +133101,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129760, - "end": 129766, + "start": 130274, + "end": 130280, "loc": { "start": { - "line": 3240, + "line": 3248, "column": 24 }, "end": { - "line": 3240, + "line": 3248, "column": 30 }, "identifierName": "origin" @@ -132058,15 +133119,15 @@ }, "value": { "type": "Identifier", - "start": 129760, - "end": 129766, + "start": 130274, + "end": 130280, "loc": { "start": { - "line": 3240, + "line": 3248, "column": 24 }, "end": { - "line": 3240, + "line": 3248, "column": 30 }, "identifierName": "origin" @@ -132077,15 +133138,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 129716, - "end": 129735, + "start": 130230, + "end": 130249, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 60 }, "end": { - "line": 3239, + "line": 3247, "column": 79 } } @@ -132097,15 +133158,15 @@ }, { "type": "ObjectProperty", - "start": 129792, - "end": 129840, + "start": 130306, + "end": 130354, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 24 }, "end": { - "line": 3241, + "line": 3249, "column": 72 } }, @@ -132114,15 +133175,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129792, - "end": 129812, + "start": 130306, + "end": 130326, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 24 }, "end": { - "line": 3241, + "line": 3249, "column": 44 }, "identifierName": "maxGeometryBatchSize" @@ -132131,44 +133192,44 @@ }, "value": { "type": "MemberExpression", - "start": 129814, - "end": 129840, + "start": 130328, + "end": 130354, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 46 }, "end": { - "line": 3241, + "line": 3249, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 129814, - "end": 129818, + "start": 130328, + "end": 130332, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 46 }, "end": { - "line": 3241, + "line": 3249, "column": 50 } } }, "property": { "type": "Identifier", - "start": 129819, - "end": 129840, + "start": 130333, + "end": 130354, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 51 }, "end": { - "line": 3241, + "line": 3249, "column": 72 }, "identifierName": "_maxGeometryBatchSize" @@ -132180,15 +133241,15 @@ }, { "type": "ObjectProperty", - "start": 129866, - "end": 129900, + "start": 130380, + "end": 130414, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 24 }, "end": { - "line": 3242, + "line": 3250, "column": 58 } }, @@ -132197,15 +133258,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129866, - "end": 129871, + "start": 130380, + "end": 130385, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 24 }, "end": { - "line": 3242, + "line": 3250, "column": 29 }, "identifierName": "solid" @@ -132214,43 +133275,43 @@ }, "value": { "type": "BinaryExpression", - "start": 129874, - "end": 129899, + "start": 130388, + "end": 130413, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 32 }, "end": { - "line": 3242, + "line": 3250, "column": 57 } }, "left": { "type": "MemberExpression", - "start": 129874, - "end": 129887, + "start": 130388, + "end": 130401, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 32 }, "end": { - "line": 3242, + "line": 3250, "column": 45 } }, "object": { "type": "Identifier", - "start": 129874, - "end": 129877, + "start": 130388, + "end": 130391, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 32 }, "end": { - "line": 3242, + "line": 3250, "column": 35 }, "identifierName": "cfg" @@ -132259,15 +133320,15 @@ }, "property": { "type": "Identifier", - "start": 129878, - "end": 129887, + "start": 130392, + "end": 130401, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 36 }, "end": { - "line": 3242, + "line": 3250, "column": 45 }, "identifierName": "primitive" @@ -132279,15 +133340,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 129892, - "end": 129899, + "start": 130406, + "end": 130413, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 50 }, "end": { - "line": 3242, + "line": 3250, "column": 57 } }, @@ -132299,21 +133360,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 129873 + "parenStart": 130387 } } }, { "type": "ObjectProperty", - "start": 129926, - "end": 129943, + "start": 130440, + "end": 130457, "loc": { "start": { - "line": 3243, + "line": 3251, "column": 24 }, "end": { - "line": 3243, + "line": 3251, "column": 41 } }, @@ -132322,15 +133383,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 129926, - "end": 129937, + "start": 130440, + "end": 130451, "loc": { "start": { - "line": 3243, + "line": 3251, "column": 24 }, "end": { - "line": 3243, + "line": 3251, "column": 35 }, "identifierName": "autoNormals" @@ -132339,15 +133400,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 129939, - "end": 129943, + "start": 130453, + "end": 130457, "loc": { "start": { - "line": 3243, + "line": 3251, "column": 37 }, "end": { - "line": 3243, + "line": 3251, "column": 41 } }, @@ -132364,15 +133425,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 129201, - "end": 129277, + "start": 129715, + "end": 129791, "loc": { "start": { - "line": 3232, + "line": 3240, "column": 20 }, "end": { - "line": 3232, + "line": 3240, "column": 96 } } @@ -132381,15 +133442,15 @@ }, { "type": "BreakStatement", - "start": 129988, - "end": 129994, + "start": 130502, + "end": 130508, "loc": { "start": { - "line": 3245, + "line": 3253, "column": 20 }, "end": { - "line": 3245, + "line": 3253, "column": 26 } }, @@ -132398,15 +133459,15 @@ ], "test": { "type": "StringLiteral", - "start": 129170, - "end": 129179, + "start": 129684, + "end": 129693, "loc": { "start": { - "line": 3231, + "line": 3239, "column": 21 }, "end": { - "line": 3231, + "line": 3239, "column": 30 } }, @@ -132419,59 +133480,59 @@ }, { "type": "SwitchCase", - "start": 130011, - "end": 130694, + "start": 130525, + "end": 131208, "loc": { "start": { - "line": 3246, + "line": 3254, "column": 16 }, "end": { - "line": 3257, + "line": 3265, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 130141, - "end": 130667, + "start": 130655, + "end": 131181, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 20 }, "end": { - "line": 3256, + "line": 3264, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 130141, - "end": 130666, + "start": 130655, + "end": 131180, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 20 }, "end": { - "line": 3256, + "line": 3264, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 130141, - "end": 130157, + "start": 130655, + "end": 130671, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 20 }, "end": { - "line": 3248, + "line": 3256, "column": 36 }, "identifierName": "vboBatchingLayer" @@ -132481,29 +133542,29 @@ }, "right": { "type": "NewExpression", - "start": 130160, - "end": 130666, + "start": 130674, + "end": 131180, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 39 }, "end": { - "line": 3256, + "line": 3264, "column": 22 } }, "callee": { "type": "Identifier", - "start": 130164, - "end": 130185, + "start": 130678, + "end": 130699, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 43 }, "end": { - "line": 3248, + "line": 3256, "column": 64 }, "identifierName": "VBOBatchingLinesLayer" @@ -132513,30 +133574,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 130186, - "end": 130665, + "start": 130700, + "end": 131179, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 65 }, "end": { - "line": 3256, + "line": 3264, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 130212, - "end": 130217, + "start": 130726, + "end": 130731, "loc": { "start": { - "line": 3249, + "line": 3257, "column": 24 }, "end": { - "line": 3249, + "line": 3257, "column": 29 } }, @@ -132545,15 +133606,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130212, - "end": 130217, + "start": 130726, + "end": 130731, "loc": { "start": { - "line": 3249, + "line": 3257, "column": 24 }, "end": { - "line": 3249, + "line": 3257, "column": 29 }, "identifierName": "model" @@ -132562,15 +133623,15 @@ }, "value": { "type": "Identifier", - "start": 130212, - "end": 130217, + "start": 130726, + "end": 130731, "loc": { "start": { - "line": 3249, + "line": 3257, "column": 24 }, "end": { - "line": 3249, + "line": 3257, "column": 29 }, "identifierName": "model" @@ -132583,15 +133644,15 @@ }, { "type": "ObjectProperty", - "start": 130243, - "end": 130256, + "start": 130757, + "end": 130770, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 24 }, "end": { - "line": 3250, + "line": 3258, "column": 37 } }, @@ -132600,15 +133661,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130243, - "end": 130253, + "start": 130757, + "end": 130767, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 24 }, "end": { - "line": 3250, + "line": 3258, "column": 34 }, "identifierName": "layerIndex" @@ -132617,15 +133678,15 @@ }, "value": { "type": "NumericLiteral", - "start": 130255, - "end": 130256, + "start": 130769, + "end": 130770, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 36 }, "end": { - "line": 3250, + "line": 3258, "column": 37 } }, @@ -132638,15 +133699,15 @@ }, { "type": "ObjectProperty", - "start": 130312, - "end": 130362, + "start": 130826, + "end": 130876, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 24 }, "end": { - "line": 3251, + "line": 3259, "column": 74 } }, @@ -132655,15 +133716,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130312, - "end": 130325, + "start": 130826, + "end": 130839, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 24 }, "end": { - "line": 3251, + "line": 3259, "column": 37 }, "identifierName": "scratchMemory" @@ -132673,44 +133734,44 @@ }, "value": { "type": "MemberExpression", - "start": 130327, - "end": 130362, + "start": 130841, + "end": 130876, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 39 }, "end": { - "line": 3251, + "line": 3259, "column": 74 } }, "object": { "type": "ThisExpression", - "start": 130327, - "end": 130331, + "start": 130841, + "end": 130845, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 39 }, "end": { - "line": 3251, + "line": 3259, "column": 43 } } }, "property": { "type": "Identifier", - "start": 130332, - "end": 130362, + "start": 130846, + "end": 130876, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 44 }, "end": { - "line": 3251, + "line": 3259, "column": 74 }, "identifierName": "_vboBatchingLayerScratchMemory" @@ -132723,15 +133784,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 130258, - "end": 130287, + "start": 130772, + "end": 130801, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 39 }, "end": { - "line": 3250, + "line": 3258, "column": 68 } } @@ -132740,15 +133801,15 @@ }, { "type": "ObjectProperty", - "start": 130388, - "end": 130436, + "start": 130902, + "end": 130950, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 24 }, "end": { - "line": 3252, + "line": 3260, "column": 72 } }, @@ -132757,15 +133818,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130388, - "end": 130409, + "start": 130902, + "end": 130923, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 24 }, "end": { - "line": 3252, + "line": 3260, "column": 45 }, "identifierName": "positionsDecodeMatrix" @@ -132774,29 +133835,29 @@ }, "value": { "type": "MemberExpression", - "start": 130411, - "end": 130436, + "start": 130925, + "end": 130950, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 47 }, "end": { - "line": 3252, + "line": 3260, "column": 72 } }, "object": { "type": "Identifier", - "start": 130411, - "end": 130414, + "start": 130925, + "end": 130928, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 47 }, "end": { - "line": 3252, + "line": 3260, "column": 50 }, "identifierName": "cfg" @@ -132805,15 +133866,15 @@ }, "property": { "type": "Identifier", - "start": 130415, - "end": 130436, + "start": 130929, + "end": 130950, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 51 }, "end": { - "line": 3252, + "line": 3260, "column": 72 }, "identifierName": "positionsDecodeMatrix" @@ -132825,15 +133886,15 @@ }, { "type": "ObjectProperty", - "start": 130483, - "end": 130517, + "start": 130997, + "end": 131031, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 24 }, "end": { - "line": 3253, + "line": 3261, "column": 58 } }, @@ -132842,15 +133903,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130483, - "end": 130497, + "start": 130997, + "end": 131011, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 24 }, "end": { - "line": 3253, + "line": 3261, "column": 38 }, "identifierName": "uvDecodeMatrix" @@ -132860,29 +133921,29 @@ }, "value": { "type": "MemberExpression", - "start": 130499, - "end": 130517, + "start": 131013, + "end": 131031, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 40 }, "end": { - "line": 3253, + "line": 3261, "column": 58 } }, "object": { "type": "Identifier", - "start": 130499, - "end": 130502, + "start": 131013, + "end": 131016, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 40 }, "end": { - "line": 3253, + "line": 3261, "column": 43 }, "identifierName": "cfg" @@ -132891,15 +133952,15 @@ }, "property": { "type": "Identifier", - "start": 130503, - "end": 130517, + "start": 131017, + "end": 131031, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 44 }, "end": { - "line": 3253, + "line": 3261, "column": 58 }, "identifierName": "uvDecodeMatrix" @@ -132912,15 +133973,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 130439, - "end": 130458, + "start": 130953, + "end": 130972, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 75 }, "end": { - "line": 3252, + "line": 3260, "column": 94 } } @@ -132929,15 +133990,15 @@ }, { "type": "ObjectProperty", - "start": 130563, - "end": 130569, + "start": 131077, + "end": 131083, "loc": { "start": { - "line": 3254, + "line": 3262, "column": 24 }, "end": { - "line": 3254, + "line": 3262, "column": 30 } }, @@ -132946,15 +134007,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130563, - "end": 130569, + "start": 131077, + "end": 131083, "loc": { "start": { - "line": 3254, + "line": 3262, "column": 24 }, "end": { - "line": 3254, + "line": 3262, "column": 30 }, "identifierName": "origin" @@ -132964,15 +134025,15 @@ }, "value": { "type": "Identifier", - "start": 130563, - "end": 130569, + "start": 131077, + "end": 131083, "loc": { "start": { - "line": 3254, + "line": 3262, "column": 24 }, "end": { - "line": 3254, + "line": 3262, "column": 30 }, "identifierName": "origin" @@ -132983,15 +134044,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 130519, - "end": 130538, + "start": 131033, + "end": 131052, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 60 }, "end": { - "line": 3253, + "line": 3261, "column": 79 } } @@ -133003,15 +134064,15 @@ }, { "type": "ObjectProperty", - "start": 130595, - "end": 130643, + "start": 131109, + "end": 131157, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 24 }, "end": { - "line": 3255, + "line": 3263, "column": 72 } }, @@ -133020,15 +134081,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130595, - "end": 130615, + "start": 131109, + "end": 131129, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 24 }, "end": { - "line": 3255, + "line": 3263, "column": 44 }, "identifierName": "maxGeometryBatchSize" @@ -133037,44 +134098,44 @@ }, "value": { "type": "MemberExpression", - "start": 130617, - "end": 130643, + "start": 131131, + "end": 131157, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 46 }, "end": { - "line": 3255, + "line": 3263, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 130617, - "end": 130621, + "start": 131131, + "end": 131135, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 46 }, "end": { - "line": 3255, + "line": 3263, "column": 50 } } }, "property": { "type": "Identifier", - "start": 130622, - "end": 130643, + "start": 131136, + "end": 131157, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 51 }, "end": { - "line": 3255, + "line": 3263, "column": 72 }, "identifierName": "_maxGeometryBatchSize" @@ -133094,15 +134155,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOBatchingLinesLayer`);", - "start": 130045, - "end": 130120, + "start": 130559, + "end": 130634, "loc": { "start": { - "line": 3247, + "line": 3255, "column": 20 }, "end": { - "line": 3247, + "line": 3255, "column": 95 } } @@ -133111,15 +134172,15 @@ }, { "type": "BreakStatement", - "start": 130688, - "end": 130694, + "start": 131202, + "end": 131208, "loc": { "start": { - "line": 3257, + "line": 3265, "column": 20 }, "end": { - "line": 3257, + "line": 3265, "column": 26 } }, @@ -133128,15 +134189,15 @@ ], "test": { "type": "StringLiteral", - "start": 130016, - "end": 130023, + "start": 130530, + "end": 130537, "loc": { "start": { - "line": 3246, + "line": 3254, "column": 21 }, "end": { - "line": 3246, + "line": 3254, "column": 28 } }, @@ -133149,59 +134210,59 @@ }, { "type": "SwitchCase", - "start": 130711, - "end": 131397, + "start": 131225, + "end": 131911, "loc": { "start": { - "line": 3258, + "line": 3266, "column": 16 }, "end": { - "line": 3269, + "line": 3277, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 130843, - "end": 131370, + "start": 131357, + "end": 131884, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 20 }, "end": { - "line": 3268, + "line": 3276, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 130843, - "end": 131369, + "start": 131357, + "end": 131883, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 20 }, "end": { - "line": 3268, + "line": 3276, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 130843, - "end": 130859, + "start": 131357, + "end": 131373, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 20 }, "end": { - "line": 3260, + "line": 3268, "column": 36 }, "identifierName": "vboBatchingLayer" @@ -133211,29 +134272,29 @@ }, "right": { "type": "NewExpression", - "start": 130862, - "end": 131369, + "start": 131376, + "end": 131883, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 39 }, "end": { - "line": 3268, + "line": 3276, "column": 22 } }, "callee": { "type": "Identifier", - "start": 130866, - "end": 130888, + "start": 131380, + "end": 131402, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 43 }, "end": { - "line": 3260, + "line": 3268, "column": 65 }, "identifierName": "VBOBatchingPointsLayer" @@ -133243,30 +134304,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 130889, - "end": 131368, + "start": 131403, + "end": 131882, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 66 }, "end": { - "line": 3268, + "line": 3276, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 130915, - "end": 130920, + "start": 131429, + "end": 131434, "loc": { "start": { - "line": 3261, + "line": 3269, "column": 24 }, "end": { - "line": 3261, + "line": 3269, "column": 29 } }, @@ -133275,15 +134336,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130915, - "end": 130920, + "start": 131429, + "end": 131434, "loc": { "start": { - "line": 3261, + "line": 3269, "column": 24 }, "end": { - "line": 3261, + "line": 3269, "column": 29 }, "identifierName": "model" @@ -133292,15 +134353,15 @@ }, "value": { "type": "Identifier", - "start": 130915, - "end": 130920, + "start": 131429, + "end": 131434, "loc": { "start": { - "line": 3261, + "line": 3269, "column": 24 }, "end": { - "line": 3261, + "line": 3269, "column": 29 }, "identifierName": "model" @@ -133313,15 +134374,15 @@ }, { "type": "ObjectProperty", - "start": 130946, - "end": 130959, + "start": 131460, + "end": 131473, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 24 }, "end": { - "line": 3262, + "line": 3270, "column": 37 } }, @@ -133330,15 +134391,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 130946, - "end": 130956, + "start": 131460, + "end": 131470, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 24 }, "end": { - "line": 3262, + "line": 3270, "column": 34 }, "identifierName": "layerIndex" @@ -133347,15 +134408,15 @@ }, "value": { "type": "NumericLiteral", - "start": 130958, - "end": 130959, + "start": 131472, + "end": 131473, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 36 }, "end": { - "line": 3262, + "line": 3270, "column": 37 } }, @@ -133368,15 +134429,15 @@ }, { "type": "ObjectProperty", - "start": 131015, - "end": 131065, + "start": 131529, + "end": 131579, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 24 }, "end": { - "line": 3263, + "line": 3271, "column": 74 } }, @@ -133385,15 +134446,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 131015, - "end": 131028, + "start": 131529, + "end": 131542, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 24 }, "end": { - "line": 3263, + "line": 3271, "column": 37 }, "identifierName": "scratchMemory" @@ -133403,44 +134464,44 @@ }, "value": { "type": "MemberExpression", - "start": 131030, - "end": 131065, + "start": 131544, + "end": 131579, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 39 }, "end": { - "line": 3263, + "line": 3271, "column": 74 } }, "object": { "type": "ThisExpression", - "start": 131030, - "end": 131034, + "start": 131544, + "end": 131548, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 39 }, "end": { - "line": 3263, + "line": 3271, "column": 43 } } }, "property": { "type": "Identifier", - "start": 131035, - "end": 131065, + "start": 131549, + "end": 131579, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 44 }, "end": { - "line": 3263, + "line": 3271, "column": 74 }, "identifierName": "_vboBatchingLayerScratchMemory" @@ -133453,15 +134514,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 130961, - "end": 130990, + "start": 131475, + "end": 131504, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 39 }, "end": { - "line": 3262, + "line": 3270, "column": 68 } } @@ -133470,15 +134531,15 @@ }, { "type": "ObjectProperty", - "start": 131091, - "end": 131139, + "start": 131605, + "end": 131653, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 24 }, "end": { - "line": 3264, + "line": 3272, "column": 72 } }, @@ -133487,15 +134548,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 131091, - "end": 131112, + "start": 131605, + "end": 131626, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 24 }, "end": { - "line": 3264, + "line": 3272, "column": 45 }, "identifierName": "positionsDecodeMatrix" @@ -133504,29 +134565,29 @@ }, "value": { "type": "MemberExpression", - "start": 131114, - "end": 131139, + "start": 131628, + "end": 131653, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 47 }, "end": { - "line": 3264, + "line": 3272, "column": 72 } }, "object": { "type": "Identifier", - "start": 131114, - "end": 131117, + "start": 131628, + "end": 131631, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 47 }, "end": { - "line": 3264, + "line": 3272, "column": 50 }, "identifierName": "cfg" @@ -133535,15 +134596,15 @@ }, "property": { "type": "Identifier", - "start": 131118, - "end": 131139, + "start": 131632, + "end": 131653, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 51 }, "end": { - "line": 3264, + "line": 3272, "column": 72 }, "identifierName": "positionsDecodeMatrix" @@ -133555,15 +134616,15 @@ }, { "type": "ObjectProperty", - "start": 131186, - "end": 131220, + "start": 131700, + "end": 131734, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 24 }, "end": { - "line": 3265, + "line": 3273, "column": 58 } }, @@ -133572,15 +134633,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 131186, - "end": 131200, + "start": 131700, + "end": 131714, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 24 }, "end": { - "line": 3265, + "line": 3273, "column": 38 }, "identifierName": "uvDecodeMatrix" @@ -133590,29 +134651,29 @@ }, "value": { "type": "MemberExpression", - "start": 131202, - "end": 131220, + "start": 131716, + "end": 131734, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 40 }, "end": { - "line": 3265, + "line": 3273, "column": 58 } }, "object": { "type": "Identifier", - "start": 131202, - "end": 131205, + "start": 131716, + "end": 131719, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 40 }, "end": { - "line": 3265, + "line": 3273, "column": 43 }, "identifierName": "cfg" @@ -133621,15 +134682,15 @@ }, "property": { "type": "Identifier", - "start": 131206, - "end": 131220, + "start": 131720, + "end": 131734, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 44 }, "end": { - "line": 3265, + "line": 3273, "column": 58 }, "identifierName": "uvDecodeMatrix" @@ -133642,15 +134703,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 131142, - "end": 131161, + "start": 131656, + "end": 131675, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 75 }, "end": { - "line": 3264, + "line": 3272, "column": 94 } } @@ -133659,15 +134720,15 @@ }, { "type": "ObjectProperty", - "start": 131266, - "end": 131272, + "start": 131780, + "end": 131786, "loc": { "start": { - "line": 3266, + "line": 3274, "column": 24 }, "end": { - "line": 3266, + "line": 3274, "column": 30 } }, @@ -133676,15 +134737,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 131266, - "end": 131272, + "start": 131780, + "end": 131786, "loc": { "start": { - "line": 3266, + "line": 3274, "column": 24 }, "end": { - "line": 3266, + "line": 3274, "column": 30 }, "identifierName": "origin" @@ -133694,15 +134755,15 @@ }, "value": { "type": "Identifier", - "start": 131266, - "end": 131272, + "start": 131780, + "end": 131786, "loc": { "start": { - "line": 3266, + "line": 3274, "column": 24 }, "end": { - "line": 3266, + "line": 3274, "column": 30 }, "identifierName": "origin" @@ -133713,15 +134774,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 131222, - "end": 131241, + "start": 131736, + "end": 131755, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 60 }, "end": { - "line": 3265, + "line": 3273, "column": 79 } } @@ -133733,15 +134794,15 @@ }, { "type": "ObjectProperty", - "start": 131298, - "end": 131346, + "start": 131812, + "end": 131860, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 24 }, "end": { - "line": 3267, + "line": 3275, "column": 72 } }, @@ -133750,15 +134811,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 131298, - "end": 131318, + "start": 131812, + "end": 131832, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 24 }, "end": { - "line": 3267, + "line": 3275, "column": 44 }, "identifierName": "maxGeometryBatchSize" @@ -133767,44 +134828,44 @@ }, "value": { "type": "MemberExpression", - "start": 131320, - "end": 131346, + "start": 131834, + "end": 131860, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 46 }, "end": { - "line": 3267, + "line": 3275, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 131320, - "end": 131324, + "start": 131834, + "end": 131838, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 46 }, "end": { - "line": 3267, + "line": 3275, "column": 50 } } }, "property": { "type": "Identifier", - "start": 131325, - "end": 131346, + "start": 131839, + "end": 131860, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 51 }, "end": { - "line": 3267, + "line": 3275, "column": 72 }, "identifierName": "_maxGeometryBatchSize" @@ -133824,15 +134885,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOBatchingPointsLayer`);", - "start": 130746, - "end": 130822, + "start": 131260, + "end": 131336, "loc": { "start": { - "line": 3259, + "line": 3267, "column": 20 }, "end": { - "line": 3259, + "line": 3267, "column": 96 } } @@ -133841,15 +134902,15 @@ }, { "type": "BreakStatement", - "start": 131391, - "end": 131397, + "start": 131905, + "end": 131911, "loc": { "start": { - "line": 3269, + "line": 3277, "column": 20 }, "end": { - "line": 3269, + "line": 3277, "column": 26 } }, @@ -133858,15 +134919,15 @@ ], "test": { "type": "StringLiteral", - "start": 130716, - "end": 130724, + "start": 131230, + "end": 131238, "loc": { "start": { - "line": 3258, + "line": 3266, "column": 21 }, "end": { - "line": 3258, + "line": 3266, "column": 29 } }, @@ -133881,44 +134942,44 @@ }, { "type": "VariableDeclaration", - "start": 131424, - "end": 131525, + "start": 131938, + "end": 132039, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 12 }, "end": { - "line": 3271, + "line": 3279, "column": 113 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 131430, - "end": 131524, + "start": 131944, + "end": 132038, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 18 }, "end": { - "line": 3271, + "line": 3279, "column": 112 } }, "id": { "type": "Identifier", - "start": 131430, - "end": 131442, + "start": 131944, + "end": 131956, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 18 }, "end": { - "line": 3271, + "line": 3279, "column": 30 }, "identifierName": "lenPositions" @@ -133927,43 +134988,43 @@ }, "init": { "type": "ConditionalExpression", - "start": 131445, - "end": 131524, + "start": 131959, + "end": 132038, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 33 }, "end": { - "line": 3271, + "line": 3279, "column": 112 } }, "test": { "type": "MemberExpression", - "start": 131445, - "end": 131468, + "start": 131959, + "end": 131982, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 33 }, "end": { - "line": 3271, + "line": 3279, "column": 56 } }, "object": { "type": "Identifier", - "start": 131445, - "end": 131448, + "start": 131959, + "end": 131962, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 33 }, "end": { - "line": 3271, + "line": 3279, "column": 36 }, "identifierName": "cfg" @@ -133972,15 +135033,15 @@ }, "property": { "type": "Identifier", - "start": 131449, - "end": 131468, + "start": 131963, + "end": 131982, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 37 }, "end": { - "line": 3271, + "line": 3279, "column": 56 }, "identifierName": "positionsCompressed" @@ -133991,43 +135052,43 @@ }, "consequent": { "type": "MemberExpression", - "start": 131471, - "end": 131501, + "start": 131985, + "end": 132015, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 59 }, "end": { - "line": 3271, + "line": 3279, "column": 89 } }, "object": { "type": "MemberExpression", - "start": 131471, - "end": 131494, + "start": 131985, + "end": 132008, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 59 }, "end": { - "line": 3271, + "line": 3279, "column": 82 } }, "object": { "type": "Identifier", - "start": 131471, - "end": 131474, + "start": 131985, + "end": 131988, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 59 }, "end": { - "line": 3271, + "line": 3279, "column": 62 }, "identifierName": "cfg" @@ -134036,15 +135097,15 @@ }, "property": { "type": "Identifier", - "start": 131475, - "end": 131494, + "start": 131989, + "end": 132008, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 63 }, "end": { - "line": 3271, + "line": 3279, "column": 82 }, "identifierName": "positionsCompressed" @@ -134055,15 +135116,15 @@ }, "property": { "type": "Identifier", - "start": 131495, - "end": 131501, + "start": 132009, + "end": 132015, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 83 }, "end": { - "line": 3271, + "line": 3279, "column": 89 }, "identifierName": "length" @@ -134074,43 +135135,43 @@ }, "alternate": { "type": "MemberExpression", - "start": 131504, - "end": 131524, + "start": 132018, + "end": 132038, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 92 }, "end": { - "line": 3271, + "line": 3279, "column": 112 } }, "object": { "type": "MemberExpression", - "start": 131504, - "end": 131517, + "start": 132018, + "end": 132031, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 92 }, "end": { - "line": 3271, + "line": 3279, "column": 105 } }, "object": { "type": "Identifier", - "start": 131504, - "end": 131507, + "start": 132018, + "end": 132021, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 92 }, "end": { - "line": 3271, + "line": 3279, "column": 95 }, "identifierName": "cfg" @@ -134119,15 +135180,15 @@ }, "property": { "type": "Identifier", - "start": 131508, - "end": 131517, + "start": 132022, + "end": 132031, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 96 }, "end": { - "line": 3271, + "line": 3279, "column": 105 }, "identifierName": "positions" @@ -134138,15 +135199,15 @@ }, "property": { "type": "Identifier", - "start": 131518, - "end": 131524, + "start": 132032, + "end": 132038, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 106 }, "end": { - "line": 3271, + "line": 3279, "column": 112 }, "identifierName": "length" @@ -134162,44 +135223,44 @@ }, { "type": "VariableDeclaration", - "start": 131538, - "end": 131744, + "start": 132052, + "end": 132258, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 12 }, "end": { - "line": 3274, + "line": 3282, "column": 86 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 131544, - "end": 131743, + "start": 132058, + "end": 132257, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 18 }, "end": { - "line": 3274, + "line": 3282, "column": 85 } }, "id": { "type": "Identifier", - "start": 131544, - "end": 131560, + "start": 132058, + "end": 132074, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 18 }, "end": { - "line": 3272, + "line": 3280, "column": 34 }, "identifierName": "canCreatePortion" @@ -134208,57 +135269,57 @@ }, "init": { "type": "ConditionalExpression", - "start": 131563, - "end": 131743, + "start": 132077, + "end": 132257, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 37 }, "end": { - "line": 3274, + "line": 3282, "column": 85 } }, "test": { "type": "BinaryExpression", - "start": 131564, - "end": 131590, + "start": 132078, + "end": 132104, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 38 }, "end": { - "line": 3272, + "line": 3280, "column": 64 } }, "left": { "type": "MemberExpression", - "start": 131564, - "end": 131577, + "start": 132078, + "end": 132091, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 38 }, "end": { - "line": 3272, + "line": 3280, "column": 51 } }, "object": { "type": "Identifier", - "start": 131564, - "end": 131567, + "start": 132078, + "end": 132081, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 38 }, "end": { - "line": 3272, + "line": 3280, "column": 41 }, "identifierName": "cfg" @@ -134267,15 +135328,15 @@ }, "property": { "type": "Identifier", - "start": 131568, - "end": 131577, + "start": 132082, + "end": 132091, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 42 }, "end": { - "line": 3272, + "line": 3280, "column": 51 }, "identifierName": "primitive" @@ -134287,15 +135348,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 131582, - "end": 131590, + "start": 132096, + "end": 132104, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 56 }, "end": { - "line": 3272, + "line": 3280, "column": 64 } }, @@ -134307,48 +135368,48 @@ }, "extra": { "parenthesized": true, - "parenStart": 131563 + "parenStart": 132077 } }, "consequent": { "type": "CallExpression", - "start": 131610, - "end": 131657, + "start": 132124, + "end": 132171, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 18 }, "end": { - "line": 3273, + "line": 3281, "column": 65 } }, "callee": { "type": "MemberExpression", - "start": 131610, - "end": 131643, + "start": 132124, + "end": 132157, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 18 }, "end": { - "line": 3273, + "line": 3281, "column": 51 } }, "object": { "type": "Identifier", - "start": 131610, - "end": 131626, + "start": 132124, + "end": 132140, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 18 }, "end": { - "line": 3273, + "line": 3281, "column": 34 }, "identifierName": "vboBatchingLayer" @@ -134357,15 +135418,15 @@ }, "property": { "type": "Identifier", - "start": 131627, - "end": 131643, + "start": 132141, + "end": 132157, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 35 }, "end": { - "line": 3273, + "line": 3281, "column": 51 }, "identifierName": "canCreatePortion" @@ -134377,15 +135438,15 @@ "arguments": [ { "type": "Identifier", - "start": 131644, - "end": 131656, + "start": 132158, + "end": 132170, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 52 }, "end": { - "line": 3273, + "line": 3281, "column": 64 }, "identifierName": "lenPositions" @@ -134396,43 +135457,43 @@ }, "alternate": { "type": "CallExpression", - "start": 131676, - "end": 131743, + "start": 132190, + "end": 132257, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 18 }, "end": { - "line": 3274, + "line": 3282, "column": 85 } }, "callee": { "type": "MemberExpression", - "start": 131676, - "end": 131709, + "start": 132190, + "end": 132223, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 18 }, "end": { - "line": 3274, + "line": 3282, "column": 51 } }, "object": { "type": "Identifier", - "start": 131676, - "end": 131692, + "start": 132190, + "end": 132206, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 18 }, "end": { - "line": 3274, + "line": 3282, "column": 34 }, "identifierName": "vboBatchingLayer" @@ -134441,15 +135502,15 @@ }, "property": { "type": "Identifier", - "start": 131693, - "end": 131709, + "start": 132207, + "end": 132223, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 35 }, "end": { - "line": 3274, + "line": 3282, "column": 51 }, "identifierName": "canCreatePortion" @@ -134461,15 +135522,15 @@ "arguments": [ { "type": "Identifier", - "start": 131710, - "end": 131722, + "start": 132224, + "end": 132236, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 52 }, "end": { - "line": 3274, + "line": 3282, "column": 64 }, "identifierName": "lenPositions" @@ -134478,43 +135539,43 @@ }, { "type": "MemberExpression", - "start": 131724, - "end": 131742, + "start": 132238, + "end": 132256, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 66 }, "end": { - "line": 3274, + "line": 3282, "column": 84 } }, "object": { "type": "MemberExpression", - "start": 131724, - "end": 131735, + "start": 132238, + "end": 132249, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 66 }, "end": { - "line": 3274, + "line": 3282, "column": 77 } }, "object": { "type": "Identifier", - "start": 131724, - "end": 131727, + "start": 132238, + "end": 132241, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 66 }, "end": { - "line": 3274, + "line": 3282, "column": 69 }, "identifierName": "cfg" @@ -134523,15 +135584,15 @@ }, "property": { "type": "Identifier", - "start": 131728, - "end": 131735, + "start": 132242, + "end": 132249, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 70 }, "end": { - "line": 3274, + "line": 3282, "column": 77 }, "identifierName": "indices" @@ -134542,15 +135603,15 @@ }, "property": { "type": "Identifier", - "start": 131736, - "end": 131742, + "start": 132250, + "end": 132256, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 78 }, "end": { - "line": 3274, + "line": 3282, "column": 84 }, "identifierName": "length" @@ -134568,29 +135629,29 @@ }, { "type": "IfStatement", - "start": 131757, - "end": 131938, + "start": 132271, + "end": 132452, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 12 }, "end": { - "line": 3279, + "line": 3287, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 131761, - "end": 131778, + "start": 132275, + "end": 132292, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 16 }, "end": { - "line": 3275, + "line": 3283, "column": 33 } }, @@ -134598,15 +135659,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 131762, - "end": 131778, + "start": 132276, + "end": 132292, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 17 }, "end": { - "line": 3275, + "line": 3283, "column": 33 }, "identifierName": "canCreatePortion" @@ -134619,72 +135680,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 131780, - "end": 131938, + "start": 132294, + "end": 132452, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 35 }, "end": { - "line": 3279, + "line": 3287, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 131798, - "end": 131826, + "start": 132312, + "end": 132340, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 16 }, "end": { - "line": 3276, + "line": 3284, "column": 44 } }, "expression": { "type": "CallExpression", - "start": 131798, - "end": 131825, + "start": 132312, + "end": 132339, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 16 }, "end": { - "line": 3276, + "line": 3284, "column": 43 } }, "callee": { "type": "MemberExpression", - "start": 131798, - "end": 131823, + "start": 132312, + "end": 132337, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 16 }, "end": { - "line": 3276, + "line": 3284, "column": 41 } }, "object": { "type": "Identifier", - "start": 131798, - "end": 131814, + "start": 132312, + "end": 132328, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 16 }, "end": { - "line": 3276, + "line": 3284, "column": 32 }, "identifierName": "vboBatchingLayer" @@ -134693,15 +135754,15 @@ }, "property": { "type": "Identifier", - "start": 131815, - "end": 131823, + "start": 132329, + "end": 132337, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 33 }, "end": { - "line": 3276, + "line": 3284, "column": 41 }, "identifierName": "finalize" @@ -134715,29 +135776,29 @@ }, { "type": "ExpressionStatement", - "start": 131843, - "end": 131883, + "start": 132357, + "end": 132397, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 16 }, "end": { - "line": 3277, + "line": 3285, "column": 56 } }, "expression": { "type": "UnaryExpression", - "start": 131843, - "end": 131882, + "start": 132357, + "end": 132396, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 16 }, "end": { - "line": 3277, + "line": 3285, "column": 55 } }, @@ -134745,58 +135806,58 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 131850, - "end": 131882, + "start": 132364, + "end": 132396, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 23 }, "end": { - "line": 3277, + "line": 3285, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 131850, - "end": 131873, + "start": 132364, + "end": 132387, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 23 }, "end": { - "line": 3277, + "line": 3285, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 131850, - "end": 131854, + "start": 132364, + "end": 132368, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 23 }, "end": { - "line": 3277, + "line": 3285, "column": 27 } } }, "property": { "type": "Identifier", - "start": 131855, - "end": 131873, + "start": 132369, + "end": 132387, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 28 }, "end": { - "line": 3277, + "line": 3285, "column": 46 }, "identifierName": "_vboBatchingLayers" @@ -134807,15 +135868,15 @@ }, "property": { "type": "Identifier", - "start": 131874, - "end": 131881, + "start": 132388, + "end": 132395, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 47 }, "end": { - "line": 3277, + "line": 3285, "column": 54 }, "identifierName": "layerId" @@ -134831,44 +135892,44 @@ }, { "type": "ExpressionStatement", - "start": 131900, - "end": 131924, + "start": 132414, + "end": 132438, "loc": { "start": { - "line": 3278, + "line": 3286, "column": 16 }, "end": { - "line": 3278, + "line": 3286, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 131900, - "end": 131923, + "start": 132414, + "end": 132437, "loc": { "start": { - "line": 3278, + "line": 3286, "column": 16 }, "end": { - "line": 3278, + "line": 3286, "column": 39 } }, "operator": "=", "left": { "type": "Identifier", - "start": 131900, - "end": 131916, + "start": 132414, + "end": 132430, "loc": { "start": { - "line": 3278, + "line": 3286, "column": 16 }, "end": { - "line": 3278, + "line": 3286, "column": 32 }, "identifierName": "vboBatchingLayer" @@ -134877,15 +135938,15 @@ }, "right": { "type": "NullLiteral", - "start": 131919, - "end": 131923, + "start": 132433, + "end": 132437, "loc": { "start": { - "line": 3278, + "line": 3286, "column": 35 }, "end": { - "line": 3278, + "line": 3286, "column": 39 } } @@ -134903,87 +135964,87 @@ }, { "type": "ExpressionStatement", - "start": 131957, - "end": 132009, + "start": 132471, + "end": 132523, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 8 }, "end": { - "line": 3281, + "line": 3289, "column": 60 } }, "expression": { "type": "AssignmentExpression", - "start": 131957, - "end": 132008, + "start": 132471, + "end": 132522, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 8 }, "end": { - "line": 3281, + "line": 3289, "column": 59 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 131957, - "end": 131989, + "start": 132471, + "end": 132503, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 8 }, "end": { - "line": 3281, + "line": 3289, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 131957, - "end": 131980, + "start": 132471, + "end": 132494, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 8 }, "end": { - "line": 3281, + "line": 3289, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 131957, - "end": 131961, + "start": 132471, + "end": 132475, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 8 }, "end": { - "line": 3281, + "line": 3289, "column": 12 } } }, "property": { "type": "Identifier", - "start": 131962, - "end": 131980, + "start": 132476, + "end": 132494, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 13 }, "end": { - "line": 3281, + "line": 3289, "column": 31 }, "identifierName": "_vboBatchingLayers" @@ -134994,15 +136055,15 @@ }, "property": { "type": "Identifier", - "start": 131981, - "end": 131988, + "start": 132495, + "end": 132502, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 32 }, "end": { - "line": 3281, + "line": 3289, "column": 39 }, "identifierName": "layerId" @@ -135013,15 +136074,15 @@ }, "right": { "type": "Identifier", - "start": 131992, - "end": 132008, + "start": 132506, + "end": 132522, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 43 }, "end": { - "line": 3281, + "line": 3289, "column": 59 }, "identifierName": "vboBatchingLayer" @@ -135032,86 +136093,86 @@ }, { "type": "ExpressionStatement", - "start": 132018, - "end": 132056, + "start": 132532, + "end": 132570, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 8 }, "end": { - "line": 3282, + "line": 3290, "column": 46 } }, "expression": { "type": "CallExpression", - "start": 132018, - "end": 132055, + "start": 132532, + "end": 132569, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 8 }, "end": { - "line": 3282, + "line": 3290, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 132018, - "end": 132037, + "start": 132532, + "end": 132551, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 8 }, "end": { - "line": 3282, + "line": 3290, "column": 27 } }, "object": { "type": "MemberExpression", - "start": 132018, - "end": 132032, + "start": 132532, + "end": 132546, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 8 }, "end": { - "line": 3282, + "line": 3290, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 132018, - "end": 132022, + "start": 132532, + "end": 132536, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 8 }, "end": { - "line": 3282, + "line": 3290, "column": 12 } } }, "property": { "type": "Identifier", - "start": 132023, - "end": 132032, + "start": 132537, + "end": 132546, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 13 }, "end": { - "line": 3282, + "line": 3290, "column": 22 }, "identifierName": "layerList" @@ -135122,15 +136183,15 @@ }, "property": { "type": "Identifier", - "start": 132033, - "end": 132037, + "start": 132547, + "end": 132551, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 23 }, "end": { - "line": 3282, + "line": 3290, "column": 27 }, "identifierName": "push" @@ -135142,15 +136203,15 @@ "arguments": [ { "type": "Identifier", - "start": 132038, - "end": 132054, + "start": 132552, + "end": 132568, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 28 }, "end": { - "line": 3282, + "line": 3290, "column": 44 }, "identifierName": "vboBatchingLayer" @@ -135162,29 +136223,29 @@ }, { "type": "ReturnStatement", - "start": 132065, - "end": 132089, + "start": 132579, + "end": 132603, "loc": { "start": { - "line": 3283, + "line": 3291, "column": 8 }, "end": { - "line": 3283, + "line": 3291, "column": 32 } }, "argument": { "type": "Identifier", - "start": 132072, - "end": 132088, + "start": 132586, + "end": 132602, "loc": { "start": { - "line": 3283, + "line": 3291, "column": 15 }, "end": { - "line": 3283, + "line": 3291, "column": 31 }, "identifierName": "vboBatchingLayer" @@ -135198,15 +136259,15 @@ }, { "type": "ClassMethod", - "start": 132101, - "end": 132510, + "start": 132615, + "end": 133024, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 4 }, "end": { - "line": 3296, + "line": 3304, "column": 5 } }, @@ -135214,15 +136275,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 132101, - "end": 132128, + "start": 132615, + "end": 132642, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 4 }, "end": { - "line": 3286, + "line": 3294, "column": 31 }, "identifierName": "_createHashStringFromMatrix" @@ -135237,15 +136298,15 @@ "params": [ { "type": "Identifier", - "start": 132129, - "end": 132135, + "start": 132643, + "end": 132649, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 32 }, "end": { - "line": 3286, + "line": 3294, "column": 38 }, "identifierName": "matrix" @@ -135255,59 +136316,59 @@ ], "body": { "type": "BlockStatement", - "start": 132137, - "end": 132510, + "start": 132651, + "end": 133024, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 40 }, "end": { - "line": 3296, + "line": 3304, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 132147, - "end": 132184, + "start": 132661, + "end": 132698, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 8 }, "end": { - "line": 3287, + "line": 3295, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132153, - "end": 132183, + "start": 132667, + "end": 132697, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 14 }, "end": { - "line": 3287, + "line": 3295, "column": 44 } }, "id": { "type": "Identifier", - "start": 132153, - "end": 132165, + "start": 132667, + "end": 132679, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 14 }, "end": { - "line": 3287, + "line": 3295, "column": 26 }, "identifierName": "matrixString" @@ -135316,43 +136377,43 @@ }, "init": { "type": "CallExpression", - "start": 132168, - "end": 132183, + "start": 132682, + "end": 132697, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 29 }, "end": { - "line": 3287, + "line": 3295, "column": 44 } }, "callee": { "type": "MemberExpression", - "start": 132168, - "end": 132179, + "start": 132682, + "end": 132693, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 29 }, "end": { - "line": 3287, + "line": 3295, "column": 40 } }, "object": { "type": "Identifier", - "start": 132168, - "end": 132174, + "start": 132682, + "end": 132688, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 29 }, "end": { - "line": 3287, + "line": 3295, "column": 35 }, "identifierName": "matrix" @@ -135361,15 +136422,15 @@ }, "property": { "type": "Identifier", - "start": 132175, - "end": 132179, + "start": 132689, + "end": 132693, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 36 }, "end": { - "line": 3287, + "line": 3295, "column": 40 }, "identifierName": "join" @@ -135381,15 +136442,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 132180, - "end": 132182, + "start": 132694, + "end": 132696, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 41 }, "end": { - "line": 3287, + "line": 3295, "column": 43 } }, @@ -135407,44 +136468,44 @@ }, { "type": "VariableDeclaration", - "start": 132193, - "end": 132206, + "start": 132707, + "end": 132720, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 8 }, "end": { - "line": 3288, + "line": 3296, "column": 21 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132197, - "end": 132205, + "start": 132711, + "end": 132719, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 12 }, "end": { - "line": 3288, + "line": 3296, "column": 20 } }, "id": { "type": "Identifier", - "start": 132197, - "end": 132201, + "start": 132711, + "end": 132715, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 12 }, "end": { - "line": 3288, + "line": 3296, "column": 16 }, "identifierName": "hash" @@ -135453,15 +136514,15 @@ }, "init": { "type": "NumericLiteral", - "start": 132204, - "end": 132205, + "start": 132718, + "end": 132719, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 19 }, "end": { - "line": 3288, + "line": 3296, "column": 20 } }, @@ -135477,58 +136538,58 @@ }, { "type": "ForStatement", - "start": 132215, - "end": 132423, + "start": 132729, + "end": 132937, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 8 }, "end": { - "line": 3293, + "line": 3301, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 132220, - "end": 132229, + "start": 132734, + "end": 132743, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 13 }, "end": { - "line": 3289, + "line": 3297, "column": 22 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132224, - "end": 132229, + "start": 132738, + "end": 132743, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 17 }, "end": { - "line": 3289, + "line": 3297, "column": 22 } }, "id": { "type": "Identifier", - "start": 132224, - "end": 132225, + "start": 132738, + "end": 132739, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 17 }, "end": { - "line": 3289, + "line": 3297, "column": 18 }, "identifierName": "i" @@ -135537,15 +136598,15 @@ }, "init": { "type": "NumericLiteral", - "start": 132228, - "end": 132229, + "start": 132742, + "end": 132743, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 21 }, "end": { - "line": 3289, + "line": 3297, "column": 22 } }, @@ -135561,29 +136622,29 @@ }, "test": { "type": "BinaryExpression", - "start": 132231, - "end": 132254, + "start": 132745, + "end": 132768, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 24 }, "end": { - "line": 3289, + "line": 3297, "column": 47 } }, "left": { "type": "Identifier", - "start": 132231, - "end": 132232, + "start": 132745, + "end": 132746, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 24 }, "end": { - "line": 3289, + "line": 3297, "column": 25 }, "identifierName": "i" @@ -135593,29 +136654,29 @@ "operator": "<", "right": { "type": "MemberExpression", - "start": 132235, - "end": 132254, + "start": 132749, + "end": 132768, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 28 }, "end": { - "line": 3289, + "line": 3297, "column": 47 } }, "object": { "type": "Identifier", - "start": 132235, - "end": 132247, + "start": 132749, + "end": 132761, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 28 }, "end": { - "line": 3289, + "line": 3297, "column": 40 }, "identifierName": "matrixString" @@ -135624,15 +136685,15 @@ }, "property": { "type": "Identifier", - "start": 132248, - "end": 132254, + "start": 132762, + "end": 132768, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 41 }, "end": { - "line": 3289, + "line": 3297, "column": 47 }, "identifierName": "length" @@ -135644,15 +136705,15 @@ }, "update": { "type": "UpdateExpression", - "start": 132256, - "end": 132259, + "start": 132770, + "end": 132773, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 49 }, "end": { - "line": 3289, + "line": 3297, "column": 52 } }, @@ -135660,15 +136721,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 132256, - "end": 132257, + "start": 132770, + "end": 132771, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 49 }, "end": { - "line": 3289, + "line": 3297, "column": 50 }, "identifierName": "i" @@ -135678,59 +136739,59 @@ }, "body": { "type": "BlockStatement", - "start": 132261, - "end": 132423, + "start": 132775, + "end": 132937, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 54 }, "end": { - "line": 3293, + "line": 3301, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 132275, - "end": 132315, + "start": 132789, + "end": 132829, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 12 }, "end": { - "line": 3290, + "line": 3298, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132281, - "end": 132314, + "start": 132795, + "end": 132828, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 18 }, "end": { - "line": 3290, + "line": 3298, "column": 51 } }, "id": { "type": "Identifier", - "start": 132281, - "end": 132285, + "start": 132795, + "end": 132799, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 18 }, "end": { - "line": 3290, + "line": 3298, "column": 22 }, "identifierName": "char" @@ -135739,43 +136800,43 @@ }, "init": { "type": "CallExpression", - "start": 132288, - "end": 132314, + "start": 132802, + "end": 132828, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 25 }, "end": { - "line": 3290, + "line": 3298, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 132288, - "end": 132311, + "start": 132802, + "end": 132825, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 25 }, "end": { - "line": 3290, + "line": 3298, "column": 48 } }, "object": { "type": "Identifier", - "start": 132288, - "end": 132300, + "start": 132802, + "end": 132814, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 25 }, "end": { - "line": 3290, + "line": 3298, "column": 37 }, "identifierName": "matrixString" @@ -135784,15 +136845,15 @@ }, "property": { "type": "Identifier", - "start": 132301, - "end": 132311, + "start": 132815, + "end": 132825, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 38 }, "end": { - "line": 3290, + "line": 3298, "column": 48 }, "identifierName": "charCodeAt" @@ -135804,15 +136865,15 @@ "arguments": [ { "type": "Identifier", - "start": 132312, - "end": 132313, + "start": 132826, + "end": 132827, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 49 }, "end": { - "line": 3290, + "line": 3298, "column": 50 }, "identifierName": "i" @@ -135827,44 +136888,44 @@ }, { "type": "ExpressionStatement", - "start": 132328, - "end": 132361, + "start": 132842, + "end": 132875, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 12 }, "end": { - "line": 3291, + "line": 3299, "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 132328, - "end": 132360, + "start": 132842, + "end": 132874, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 12 }, "end": { - "line": 3291, + "line": 3299, "column": 44 } }, "operator": "=", "left": { "type": "Identifier", - "start": 132328, - "end": 132332, + "start": 132842, + "end": 132846, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 12 }, "end": { - "line": 3291, + "line": 3299, "column": 16 }, "identifierName": "hash" @@ -135873,57 +136934,57 @@ }, "right": { "type": "BinaryExpression", - "start": 132335, - "end": 132360, + "start": 132849, + "end": 132874, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 19 }, "end": { - "line": 3291, + "line": 3299, "column": 44 } }, "left": { "type": "BinaryExpression", - "start": 132335, - "end": 132353, + "start": 132849, + "end": 132867, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 19 }, "end": { - "line": 3291, + "line": 3299, "column": 37 } }, "left": { "type": "BinaryExpression", - "start": 132336, - "end": 132345, + "start": 132850, + "end": 132859, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 20 }, "end": { - "line": 3291, + "line": 3299, "column": 29 } }, "left": { "type": "Identifier", - "start": 132336, - "end": 132340, + "start": 132850, + "end": 132854, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 20 }, "end": { - "line": 3291, + "line": 3299, "column": 24 }, "identifierName": "hash" @@ -135933,15 +136994,15 @@ "operator": "<<", "right": { "type": "NumericLiteral", - "start": 132344, - "end": 132345, + "start": 132858, + "end": 132859, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 28 }, "end": { - "line": 3291, + "line": 3299, "column": 29 } }, @@ -135953,21 +137014,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 132335 + "parenStart": 132849 } }, "operator": "-", "right": { "type": "Identifier", - "start": 132349, - "end": 132353, + "start": 132863, + "end": 132867, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 33 }, "end": { - "line": 3291, + "line": 3299, "column": 37 }, "identifierName": "hash" @@ -135978,15 +137039,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 132356, - "end": 132360, + "start": 132870, + "end": 132874, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 40 }, "end": { - "line": 3291, + "line": 3299, "column": 44 }, "identifierName": "char" @@ -135998,44 +137059,44 @@ }, { "type": "ExpressionStatement", - "start": 132374, - "end": 132384, + "start": 132888, + "end": 132898, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 12 }, "end": { - "line": 3292, + "line": 3300, "column": 22 } }, "expression": { "type": "AssignmentExpression", - "start": 132374, - "end": 132383, + "start": 132888, + "end": 132897, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 12 }, "end": { - "line": 3292, + "line": 3300, "column": 21 } }, "operator": "|=", "left": { "type": "Identifier", - "start": 132374, - "end": 132378, + "start": 132888, + "end": 132892, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 12 }, "end": { - "line": 3292, + "line": 3300, "column": 16 }, "identifierName": "hash" @@ -136044,15 +137105,15 @@ }, "right": { "type": "NumericLiteral", - "start": 132382, - "end": 132383, + "start": 132896, + "end": 132897, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 20 }, "end": { - "line": 3292, + "line": 3300, "column": 21 } }, @@ -136067,15 +137128,15 @@ { "type": "CommentLine", "value": " Convert to 32-bit integer", - "start": 132385, - "end": 132413, + "start": 132899, + "end": 132927, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 23 }, "end": { - "line": 3292, + "line": 3300, "column": 51 } } @@ -136088,44 +137149,44 @@ }, { "type": "VariableDeclaration", - "start": 132432, - "end": 132477, + "start": 132946, + "end": 132991, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 8 }, "end": { - "line": 3294, + "line": 3302, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132438, - "end": 132476, + "start": 132952, + "end": 132990, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 14 }, "end": { - "line": 3294, + "line": 3302, "column": 52 } }, "id": { "type": "Identifier", - "start": 132438, - "end": 132448, + "start": 132952, + "end": 132962, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 14 }, "end": { - "line": 3294, + "line": 3302, "column": 24 }, "identifierName": "hashString" @@ -136134,57 +137195,57 @@ }, "init": { "type": "CallExpression", - "start": 132451, - "end": 132476, + "start": 132965, + "end": 132990, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 27 }, "end": { - "line": 3294, + "line": 3302, "column": 52 } }, "callee": { "type": "MemberExpression", - "start": 132451, - "end": 132472, + "start": 132965, + "end": 132986, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 27 }, "end": { - "line": 3294, + "line": 3302, "column": 48 } }, "object": { "type": "BinaryExpression", - "start": 132452, - "end": 132462, + "start": 132966, + "end": 132976, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 28 }, "end": { - "line": 3294, + "line": 3302, "column": 38 } }, "left": { "type": "Identifier", - "start": 132452, - "end": 132456, + "start": 132966, + "end": 132970, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 28 }, "end": { - "line": 3294, + "line": 3302, "column": 32 }, "identifierName": "hash" @@ -136194,15 +137255,15 @@ "operator": ">>>", "right": { "type": "NumericLiteral", - "start": 132461, - "end": 132462, + "start": 132975, + "end": 132976, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 37 }, "end": { - "line": 3294, + "line": 3302, "column": 38 } }, @@ -136214,20 +137275,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 132451 + "parenStart": 132965 } }, "property": { "type": "Identifier", - "start": 132464, - "end": 132472, + "start": 132978, + "end": 132986, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 40 }, "end": { - "line": 3294, + "line": 3302, "column": 48 }, "identifierName": "toString" @@ -136239,15 +137300,15 @@ "arguments": [ { "type": "NumericLiteral", - "start": 132473, - "end": 132475, + "start": 132987, + "end": 132989, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 49 }, "end": { - "line": 3294, + "line": 3302, "column": 51 } }, @@ -136265,29 +137326,29 @@ }, { "type": "ReturnStatement", - "start": 132486, - "end": 132504, + "start": 133000, + "end": 133018, "loc": { "start": { - "line": 3295, + "line": 3303, "column": 8 }, "end": { - "line": 3295, + "line": 3303, "column": 26 } }, "argument": { "type": "Identifier", - "start": 132493, - "end": 132503, + "start": 133007, + "end": 133017, "loc": { "start": { - "line": 3295, + "line": 3303, "column": 15 }, "end": { - "line": 3295, + "line": 3303, "column": 25 }, "identifierName": "hashString" @@ -136301,15 +137362,15 @@ }, { "type": "ClassMethod", - "start": 132516, - "end": 135950, + "start": 133030, + "end": 136464, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 4 }, "end": { - "line": 3376, + "line": 3384, "column": 5 } }, @@ -136317,15 +137378,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 132516, - "end": 132538, + "start": 133030, + "end": 133052, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 4 }, "end": { - "line": 3298, + "line": 3306, "column": 26 }, "identifierName": "_getVBOInstancingLayer" @@ -136340,15 +137401,15 @@ "params": [ { "type": "Identifier", - "start": 132539, - "end": 132542, + "start": 133053, + "end": 133056, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 27 }, "end": { - "line": 3298, + "line": 3306, "column": 30 }, "identifierName": "cfg" @@ -136358,59 +137419,59 @@ ], "body": { "type": "BlockStatement", - "start": 132544, - "end": 135950, + "start": 133058, + "end": 136464, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 32 }, "end": { - "line": 3376, + "line": 3384, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 132554, - "end": 132573, + "start": 133068, + "end": 133087, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 8 }, "end": { - "line": 3299, + "line": 3307, "column": 27 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132560, - "end": 132572, + "start": 133074, + "end": 133086, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 14 }, "end": { - "line": 3299, + "line": 3307, "column": 26 } }, "id": { "type": "Identifier", - "start": 132560, - "end": 132565, + "start": 133074, + "end": 133079, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 14 }, "end": { - "line": 3299, + "line": 3307, "column": 19 }, "identifierName": "model" @@ -136419,15 +137480,15 @@ }, "init": { "type": "ThisExpression", - "start": 132568, - "end": 132572, + "start": 133082, + "end": 133086, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 22 }, "end": { - "line": 3299, + "line": 3307, "column": 26 } } @@ -136438,44 +137499,44 @@ }, { "type": "VariableDeclaration", - "start": 132582, - "end": 132608, + "start": 133096, + "end": 133122, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 8 }, "end": { - "line": 3300, + "line": 3308, "column": 34 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132588, - "end": 132607, + "start": 133102, + "end": 133121, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 14 }, "end": { - "line": 3300, + "line": 3308, "column": 33 } }, "id": { "type": "Identifier", - "start": 132588, - "end": 132594, + "start": 133102, + "end": 133108, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 14 }, "end": { - "line": 3300, + "line": 3308, "column": 20 }, "identifierName": "origin" @@ -136484,29 +137545,29 @@ }, "init": { "type": "MemberExpression", - "start": 132597, - "end": 132607, + "start": 133111, + "end": 133121, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 23 }, "end": { - "line": 3300, + "line": 3308, "column": 33 } }, "object": { "type": "Identifier", - "start": 132597, - "end": 132600, + "start": 133111, + "end": 133114, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 23 }, "end": { - "line": 3300, + "line": 3308, "column": 26 }, "identifierName": "cfg" @@ -136515,15 +137576,15 @@ }, "property": { "type": "Identifier", - "start": 132601, - "end": 132607, + "start": 133115, + "end": 133121, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 27 }, "end": { - "line": 3300, + "line": 3308, "column": 33 }, "identifierName": "origin" @@ -136538,44 +137599,44 @@ }, { "type": "VariableDeclaration", - "start": 132617, - "end": 132662, + "start": 133131, + "end": 133176, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 8 }, "end": { - "line": 3301, + "line": 3309, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132623, - "end": 132661, + "start": 133137, + "end": 133175, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 14 }, "end": { - "line": 3301, + "line": 3309, "column": 52 } }, "id": { "type": "Identifier", - "start": 132623, - "end": 132635, + "start": 133137, + "end": 133149, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 14 }, "end": { - "line": 3301, + "line": 3309, "column": 26 }, "identifierName": "textureSetId" @@ -136584,43 +137645,43 @@ }, "init": { "type": "LogicalExpression", - "start": 132638, - "end": 132661, + "start": 133152, + "end": 133175, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 29 }, "end": { - "line": 3301, + "line": 3309, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 132638, - "end": 132654, + "start": 133152, + "end": 133168, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 29 }, "end": { - "line": 3301, + "line": 3309, "column": 45 } }, "object": { "type": "Identifier", - "start": 132638, - "end": 132641, + "start": 133152, + "end": 133155, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 29 }, "end": { - "line": 3301, + "line": 3309, "column": 32 }, "identifierName": "cfg" @@ -136629,15 +137690,15 @@ }, "property": { "type": "Identifier", - "start": 132642, - "end": 132654, + "start": 133156, + "end": 133168, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 33 }, "end": { - "line": 3301, + "line": 3309, "column": 45 }, "identifierName": "textureSetId" @@ -136649,15 +137710,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 132658, - "end": 132661, + "start": 133172, + "end": 133175, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 49 }, "end": { - "line": 3301, + "line": 3309, "column": 52 } }, @@ -136674,44 +137735,44 @@ }, { "type": "VariableDeclaration", - "start": 132671, - "end": 132705, + "start": 133185, + "end": 133219, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 8 }, "end": { - "line": 3302, + "line": 3310, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132677, - "end": 132704, + "start": 133191, + "end": 133218, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 14 }, "end": { - "line": 3302, + "line": 3310, "column": 41 } }, "id": { "type": "Identifier", - "start": 132677, - "end": 132687, + "start": 133191, + "end": 133201, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 14 }, "end": { - "line": 3302, + "line": 3310, "column": 24 }, "identifierName": "geometryId" @@ -136720,29 +137781,29 @@ }, "init": { "type": "MemberExpression", - "start": 132690, - "end": 132704, + "start": 133204, + "end": 133218, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 27 }, "end": { - "line": 3302, + "line": 3310, "column": 41 } }, "object": { "type": "Identifier", - "start": 132690, - "end": 132693, + "start": 133204, + "end": 133207, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 27 }, "end": { - "line": 3302, + "line": 3310, "column": 30 }, "identifierName": "cfg" @@ -136751,15 +137812,15 @@ }, "property": { "type": "Identifier", - "start": 132694, - "end": 132704, + "start": 133208, + "end": 133218, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 31 }, "end": { - "line": 3302, + "line": 3310, "column": 41 }, "identifierName": "geometryId" @@ -136774,44 +137835,44 @@ }, { "type": "VariableDeclaration", - "start": 132714, - "end": 132837, + "start": 133228, + "end": 133351, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 8 }, "end": { - "line": 3303, + "line": 3311, "column": 131 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132720, - "end": 132836, + "start": 133234, + "end": 133350, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 14 }, "end": { - "line": 3303, + "line": 3311, "column": 130 } }, "id": { "type": "Identifier", - "start": 132720, - "end": 132727, + "start": 133234, + "end": 133241, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 14 }, "end": { - "line": 3303, + "line": 3311, "column": 21 }, "identifierName": "layerId" @@ -136820,58 +137881,58 @@ }, "init": { "type": "TemplateLiteral", - "start": 132730, - "end": 132836, + "start": 133244, + "end": 133350, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 24 }, "end": { - "line": 3303, + "line": 3311, "column": 130 } }, "expressions": [ { "type": "CallExpression", - "start": 132733, - "end": 132754, + "start": 133247, + "end": 133268, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 27 }, "end": { - "line": 3303, + "line": 3311, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 132733, - "end": 132743, + "start": 133247, + "end": 133257, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 27 }, "end": { - "line": 3303, + "line": 3311, "column": 37 } }, "object": { "type": "Identifier", - "start": 132733, - "end": 132737, + "start": 133247, + "end": 133251, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 27 }, "end": { - "line": 3303, + "line": 3311, "column": 31 }, "identifierName": "Math" @@ -136880,15 +137941,15 @@ }, "property": { "type": "Identifier", - "start": 132738, - "end": 132743, + "start": 133252, + "end": 133257, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 32 }, "end": { - "line": 3303, + "line": 3311, "column": 37 }, "identifierName": "round" @@ -136900,29 +137961,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 132744, - "end": 132753, + "start": 133258, + "end": 133267, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 38 }, "end": { - "line": 3303, + "line": 3311, "column": 47 } }, "object": { "type": "Identifier", - "start": 132744, - "end": 132750, + "start": 133258, + "end": 133264, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 38 }, "end": { - "line": 3303, + "line": 3311, "column": 44 }, "identifierName": "origin" @@ -136931,15 +137992,15 @@ }, "property": { "type": "NumericLiteral", - "start": 132751, - "end": 132752, + "start": 133265, + "end": 133266, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 45 }, "end": { - "line": 3303, + "line": 3311, "column": 46 } }, @@ -136955,43 +138016,43 @@ }, { "type": "CallExpression", - "start": 132758, - "end": 132779, + "start": 133272, + "end": 133293, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 52 }, "end": { - "line": 3303, + "line": 3311, "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 132758, - "end": 132768, + "start": 133272, + "end": 133282, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 52 }, "end": { - "line": 3303, + "line": 3311, "column": 62 } }, "object": { "type": "Identifier", - "start": 132758, - "end": 132762, + "start": 133272, + "end": 133276, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 52 }, "end": { - "line": 3303, + "line": 3311, "column": 56 }, "identifierName": "Math" @@ -137000,15 +138061,15 @@ }, "property": { "type": "Identifier", - "start": 132763, - "end": 132768, + "start": 133277, + "end": 133282, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 57 }, "end": { - "line": 3303, + "line": 3311, "column": 62 }, "identifierName": "round" @@ -137020,29 +138081,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 132769, - "end": 132778, + "start": 133283, + "end": 133292, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 63 }, "end": { - "line": 3303, + "line": 3311, "column": 72 } }, "object": { "type": "Identifier", - "start": 132769, - "end": 132775, + "start": 133283, + "end": 133289, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 63 }, "end": { - "line": 3303, + "line": 3311, "column": 69 }, "identifierName": "origin" @@ -137051,15 +138112,15 @@ }, "property": { "type": "NumericLiteral", - "start": 132776, - "end": 132777, + "start": 133290, + "end": 133291, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 70 }, "end": { - "line": 3303, + "line": 3311, "column": 71 } }, @@ -137075,43 +138136,43 @@ }, { "type": "CallExpression", - "start": 132783, - "end": 132804, + "start": 133297, + "end": 133318, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 77 }, "end": { - "line": 3303, + "line": 3311, "column": 98 } }, "callee": { "type": "MemberExpression", - "start": 132783, - "end": 132793, + "start": 133297, + "end": 133307, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 77 }, "end": { - "line": 3303, + "line": 3311, "column": 87 } }, "object": { "type": "Identifier", - "start": 132783, - "end": 132787, + "start": 133297, + "end": 133301, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 77 }, "end": { - "line": 3303, + "line": 3311, "column": 81 }, "identifierName": "Math" @@ -137120,15 +138181,15 @@ }, "property": { "type": "Identifier", - "start": 132788, - "end": 132793, + "start": 133302, + "end": 133307, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 82 }, "end": { - "line": 3303, + "line": 3311, "column": 87 }, "identifierName": "round" @@ -137140,29 +138201,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 132794, - "end": 132803, + "start": 133308, + "end": 133317, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 88 }, "end": { - "line": 3303, + "line": 3311, "column": 97 } }, "object": { "type": "Identifier", - "start": 132794, - "end": 132800, + "start": 133308, + "end": 133314, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 88 }, "end": { - "line": 3303, + "line": 3311, "column": 94 }, "identifierName": "origin" @@ -137171,15 +138232,15 @@ }, "property": { "type": "NumericLiteral", - "start": 132801, - "end": 132802, + "start": 133315, + "end": 133316, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 95 }, "end": { - "line": 3303, + "line": 3311, "column": 96 } }, @@ -137195,15 +138256,15 @@ }, { "type": "Identifier", - "start": 132808, - "end": 132820, + "start": 133322, + "end": 133334, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 102 }, "end": { - "line": 3303, + "line": 3311, "column": 114 }, "identifierName": "textureSetId" @@ -137212,15 +138273,15 @@ }, { "type": "Identifier", - "start": 132824, - "end": 132834, + "start": 133338, + "end": 133348, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 118 }, "end": { - "line": 3303, + "line": 3311, "column": 128 }, "identifierName": "geometryId" @@ -137231,15 +138292,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 132731, - "end": 132731, + "start": 133245, + "end": 133245, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 25 }, "end": { - "line": 3303, + "line": 3311, "column": 25 } }, @@ -137251,15 +138312,15 @@ }, { "type": "TemplateElement", - "start": 132755, - "end": 132756, + "start": 133269, + "end": 133270, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 49 }, "end": { - "line": 3303, + "line": 3311, "column": 50 } }, @@ -137271,15 +138332,15 @@ }, { "type": "TemplateElement", - "start": 132780, - "end": 132781, + "start": 133294, + "end": 133295, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 74 }, "end": { - "line": 3303, + "line": 3311, "column": 75 } }, @@ -137291,15 +138352,15 @@ }, { "type": "TemplateElement", - "start": 132805, - "end": 132806, + "start": 133319, + "end": 133320, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 99 }, "end": { - "line": 3303, + "line": 3311, "column": 100 } }, @@ -137311,15 +138372,15 @@ }, { "type": "TemplateElement", - "start": 132821, - "end": 132822, + "start": 133335, + "end": 133336, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 115 }, "end": { - "line": 3303, + "line": 3311, "column": 116 } }, @@ -137331,15 +138392,15 @@ }, { "type": "TemplateElement", - "start": 132835, - "end": 132835, + "start": 133349, + "end": 133349, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 129 }, "end": { - "line": 3303, + "line": 3311, "column": 129 } }, @@ -137357,44 +138418,44 @@ }, { "type": "VariableDeclaration", - "start": 132846, - "end": 132906, + "start": 133360, + "end": 133420, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 8 }, "end": { - "line": 3304, + "line": 3312, "column": 68 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 132850, - "end": 132905, + "start": 133364, + "end": 133419, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 12 }, "end": { - "line": 3304, + "line": 3312, "column": 67 } }, "id": { "type": "Identifier", - "start": 132850, - "end": 132868, + "start": 133364, + "end": 133382, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 12 }, "end": { - "line": 3304, + "line": 3312, "column": 30 }, "identifierName": "vboInstancingLayer" @@ -137403,58 +138464,58 @@ }, "init": { "type": "MemberExpression", - "start": 132871, - "end": 132905, + "start": 133385, + "end": 133419, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 33 }, "end": { - "line": 3304, + "line": 3312, "column": 67 } }, "object": { "type": "MemberExpression", - "start": 132871, - "end": 132896, + "start": 133385, + "end": 133410, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 33 }, "end": { - "line": 3304, + "line": 3312, "column": 58 } }, "object": { "type": "ThisExpression", - "start": 132871, - "end": 132875, + "start": 133385, + "end": 133389, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 33 }, "end": { - "line": 3304, + "line": 3312, "column": 37 } } }, "property": { "type": "Identifier", - "start": 132876, - "end": 132896, + "start": 133390, + "end": 133410, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 38 }, "end": { - "line": 3304, + "line": 3312, "column": 58 }, "identifierName": "_vboInstancingLayers" @@ -137465,15 +138526,15 @@ }, "property": { "type": "Identifier", - "start": 132897, - "end": 132904, + "start": 133411, + "end": 133418, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 59 }, "end": { - "line": 3304, + "line": 3312, "column": 66 }, "identifierName": "layerId" @@ -137488,29 +138549,29 @@ }, { "type": "IfStatement", - "start": 132915, - "end": 132989, + "start": 133429, + "end": 133503, "loc": { "start": { - "line": 3305, + "line": 3313, "column": 8 }, "end": { - "line": 3307, + "line": 3315, "column": 9 } }, "test": { "type": "Identifier", - "start": 132919, - "end": 132937, + "start": 133433, + "end": 133451, "loc": { "start": { - "line": 3305, + "line": 3313, "column": 12 }, "end": { - "line": 3305, + "line": 3313, "column": 30 }, "identifierName": "vboInstancingLayer" @@ -137519,44 +138580,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 132939, - "end": 132989, + "start": 133453, + "end": 133503, "loc": { "start": { - "line": 3305, + "line": 3313, "column": 32 }, "end": { - "line": 3307, + "line": 3315, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 132953, - "end": 132979, + "start": 133467, + "end": 133493, "loc": { "start": { - "line": 3306, + "line": 3314, "column": 12 }, "end": { - "line": 3306, + "line": 3314, "column": 38 } }, "argument": { "type": "Identifier", - "start": 132960, - "end": 132978, + "start": 133474, + "end": 133492, "loc": { "start": { - "line": 3306, + "line": 3314, "column": 19 }, "end": { - "line": 3306, + "line": 3314, "column": 37 }, "identifierName": "vboInstancingLayer" @@ -137571,44 +138632,44 @@ }, { "type": "VariableDeclaration", - "start": 132998, - "end": 133030, + "start": 133512, + "end": 133544, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 8 }, "end": { - "line": 3308, + "line": 3316, "column": 40 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 133002, - "end": 133029, + "start": 133516, + "end": 133543, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 12 }, "end": { - "line": 3308, + "line": 3316, "column": 39 } }, "id": { "type": "Identifier", - "start": 133002, - "end": 133012, + "start": 133516, + "end": 133526, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 12 }, "end": { - "line": 3308, + "line": 3316, "column": 22 }, "identifierName": "textureSet" @@ -137617,29 +138678,29 @@ }, "init": { "type": "MemberExpression", - "start": 133015, - "end": 133029, + "start": 133529, + "end": 133543, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 25 }, "end": { - "line": 3308, + "line": 3316, "column": 39 } }, "object": { "type": "Identifier", - "start": 133015, - "end": 133018, + "start": 133529, + "end": 133532, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 25 }, "end": { - "line": 3308, + "line": 3316, "column": 28 }, "identifierName": "cfg" @@ -137648,15 +138709,15 @@ }, "property": { "type": "Identifier", - "start": 133019, - "end": 133029, + "start": 133533, + "end": 133543, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 29 }, "end": { - "line": 3308, + "line": 3316, "column": 39 }, "identifierName": "textureSet" @@ -137671,44 +138732,44 @@ }, { "type": "VariableDeclaration", - "start": 133039, - "end": 133069, + "start": 133553, + "end": 133583, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 8 }, "end": { - "line": 3309, + "line": 3317, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 133045, - "end": 133068, + "start": 133559, + "end": 133582, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 14 }, "end": { - "line": 3309, + "line": 3317, "column": 37 } }, "id": { "type": "Identifier", - "start": 133045, - "end": 133053, + "start": 133559, + "end": 133567, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 14 }, "end": { - "line": 3309, + "line": 3317, "column": 22 }, "identifierName": "geometry" @@ -137717,29 +138778,29 @@ }, "init": { "type": "MemberExpression", - "start": 133056, - "end": 133068, + "start": 133570, + "end": 133582, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 25 }, "end": { - "line": 3309, + "line": 3317, "column": 37 } }, "object": { "type": "Identifier", - "start": 133056, - "end": 133059, + "start": 133570, + "end": 133573, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 25 }, "end": { - "line": 3309, + "line": 3317, "column": 28 }, "identifierName": "cfg" @@ -137748,15 +138809,15 @@ }, "property": { "type": "Identifier", - "start": 133060, - "end": 133068, + "start": 133574, + "end": 133582, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 29 }, "end": { - "line": 3309, + "line": 3317, "column": 37 }, "identifierName": "geometry" @@ -137771,29 +138832,29 @@ }, { "type": "WhileStatement", - "start": 133078, - "end": 135795, + "start": 133592, + "end": 136309, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 8 }, "end": { - "line": 3372, + "line": 3380, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 133085, - "end": 133104, + "start": 133599, + "end": 133618, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 15 }, "end": { - "line": 3310, + "line": 3318, "column": 34 } }, @@ -137801,15 +138862,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 133086, - "end": 133104, + "start": 133600, + "end": 133618, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 16 }, "end": { - "line": 3310, + "line": 3318, "column": 34 }, "identifierName": "vboInstancingLayer" @@ -137822,58 +138883,58 @@ }, "body": { "type": "BlockStatement", - "start": 133106, - "end": 135795, + "start": 133620, + "end": 136309, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 36 }, "end": { - "line": 3372, + "line": 3380, "column": 9 } }, "body": [ { "type": "SwitchStatement", - "start": 133120, - "end": 135402, + "start": 133634, + "end": 135916, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 12 }, "end": { - "line": 3365, + "line": 3373, "column": 13 } }, "discriminant": { "type": "MemberExpression", - "start": 133128, - "end": 133146, + "start": 133642, + "end": 133660, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 20 }, "end": { - "line": 3311, + "line": 3319, "column": 38 } }, "object": { "type": "Identifier", - "start": 133128, - "end": 133136, + "start": 133642, + "end": 133650, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 20 }, "end": { - "line": 3311, + "line": 3319, "column": 28 }, "identifierName": "geometry" @@ -137882,15 +138943,15 @@ }, "property": { "type": "Identifier", - "start": 133137, - "end": 133146, + "start": 133651, + "end": 133660, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 29 }, "end": { - "line": 3311, + "line": 3319, "column": 38 }, "identifierName": "primitive" @@ -137902,59 +138963,59 @@ "cases": [ { "type": "SwitchCase", - "start": 133166, - "end": 133617, + "start": 133680, + "end": 134131, "loc": { "start": { - "line": 3312, + "line": 3320, "column": 16 }, "end": { - "line": 3322, + "line": 3330, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 133303, - "end": 133590, + "start": 133817, + "end": 134104, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 20 }, "end": { - "line": 3321, + "line": 3329, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 133303, - "end": 133589, + "start": 133817, + "end": 134103, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 20 }, "end": { - "line": 3321, + "line": 3329, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 133303, - "end": 133321, + "start": 133817, + "end": 133835, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 20 }, "end": { - "line": 3314, + "line": 3322, "column": 38 }, "identifierName": "vboInstancingLayer" @@ -137964,29 +139025,29 @@ }, "right": { "type": "NewExpression", - "start": 133324, - "end": 133589, + "start": 133838, + "end": 134103, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 41 }, "end": { - "line": 3321, + "line": 3329, "column": 22 } }, "callee": { "type": "Identifier", - "start": 133328, - "end": 133355, + "start": 133842, + "end": 133869, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 45 }, "end": { - "line": 3314, + "line": 3322, "column": 72 }, "identifierName": "VBOInstancingTrianglesLayer" @@ -137996,30 +139057,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 133356, - "end": 133588, + "start": 133870, + "end": 134102, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 73 }, "end": { - "line": 3321, + "line": 3329, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 133382, - "end": 133387, + "start": 133896, + "end": 133901, "loc": { "start": { - "line": 3315, + "line": 3323, "column": 24 }, "end": { - "line": 3315, + "line": 3323, "column": 29 } }, @@ -138028,15 +139089,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133382, - "end": 133387, + "start": 133896, + "end": 133901, "loc": { "start": { - "line": 3315, + "line": 3323, "column": 24 }, "end": { - "line": 3315, + "line": 3323, "column": 29 }, "identifierName": "model" @@ -138045,15 +139106,15 @@ }, "value": { "type": "Identifier", - "start": 133382, - "end": 133387, + "start": 133896, + "end": 133901, "loc": { "start": { - "line": 3315, + "line": 3323, "column": 24 }, "end": { - "line": 3315, + "line": 3323, "column": 29 }, "identifierName": "model" @@ -138066,15 +139127,15 @@ }, { "type": "ObjectProperty", - "start": 133413, - "end": 133423, + "start": 133927, + "end": 133937, "loc": { "start": { - "line": 3316, + "line": 3324, "column": 24 }, "end": { - "line": 3316, + "line": 3324, "column": 34 } }, @@ -138083,15 +139144,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133413, - "end": 133423, + "start": 133927, + "end": 133937, "loc": { "start": { - "line": 3316, + "line": 3324, "column": 24 }, "end": { - "line": 3316, + "line": 3324, "column": 34 }, "identifierName": "textureSet" @@ -138100,15 +139161,15 @@ }, "value": { "type": "Identifier", - "start": 133413, - "end": 133423, + "start": 133927, + "end": 133937, "loc": { "start": { - "line": 3316, + "line": 3324, "column": 24 }, "end": { - "line": 3316, + "line": 3324, "column": 34 }, "identifierName": "textureSet" @@ -138121,15 +139182,15 @@ }, { "type": "ObjectProperty", - "start": 133449, - "end": 133457, + "start": 133963, + "end": 133971, "loc": { "start": { - "line": 3317, + "line": 3325, "column": 24 }, "end": { - "line": 3317, + "line": 3325, "column": 32 } }, @@ -138138,15 +139199,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133449, - "end": 133457, + "start": 133963, + "end": 133971, "loc": { "start": { - "line": 3317, + "line": 3325, "column": 24 }, "end": { - "line": 3317, + "line": 3325, "column": 32 }, "identifierName": "geometry" @@ -138155,15 +139216,15 @@ }, "value": { "type": "Identifier", - "start": 133449, - "end": 133457, + "start": 133963, + "end": 133971, "loc": { "start": { - "line": 3317, + "line": 3325, "column": 24 }, "end": { - "line": 3317, + "line": 3325, "column": 32 }, "identifierName": "geometry" @@ -138176,15 +139237,15 @@ }, { "type": "ObjectProperty", - "start": 133483, - "end": 133489, + "start": 133997, + "end": 134003, "loc": { "start": { - "line": 3318, + "line": 3326, "column": 24 }, "end": { - "line": 3318, + "line": 3326, "column": 30 } }, @@ -138193,15 +139254,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133483, - "end": 133489, + "start": 133997, + "end": 134003, "loc": { "start": { - "line": 3318, + "line": 3326, "column": 24 }, "end": { - "line": 3318, + "line": 3326, "column": 30 }, "identifierName": "origin" @@ -138210,15 +139271,15 @@ }, "value": { "type": "Identifier", - "start": 133483, - "end": 133489, + "start": 133997, + "end": 134003, "loc": { "start": { - "line": 3318, + "line": 3326, "column": 24 }, "end": { - "line": 3318, + "line": 3326, "column": 30 }, "identifierName": "origin" @@ -138231,15 +139292,15 @@ }, { "type": "ObjectProperty", - "start": 133515, - "end": 133528, + "start": 134029, + "end": 134042, "loc": { "start": { - "line": 3319, + "line": 3327, "column": 24 }, "end": { - "line": 3319, + "line": 3327, "column": 37 } }, @@ -138248,15 +139309,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133515, - "end": 133525, + "start": 134029, + "end": 134039, "loc": { "start": { - "line": 3319, + "line": 3327, "column": 24 }, "end": { - "line": 3319, + "line": 3327, "column": 34 }, "identifierName": "layerIndex" @@ -138265,15 +139326,15 @@ }, "value": { "type": "NumericLiteral", - "start": 133527, - "end": 133528, + "start": 134041, + "end": 134042, "loc": { "start": { - "line": 3319, + "line": 3327, "column": 36 }, "end": { - "line": 3319, + "line": 3327, "column": 37 } }, @@ -138286,15 +139347,15 @@ }, { "type": "ObjectProperty", - "start": 133554, - "end": 133566, + "start": 134068, + "end": 134080, "loc": { "start": { - "line": 3320, + "line": 3328, "column": 24 }, "end": { - "line": 3320, + "line": 3328, "column": 36 } }, @@ -138303,15 +139364,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133554, - "end": 133559, + "start": 134068, + "end": 134073, "loc": { "start": { - "line": 3320, + "line": 3328, "column": 24 }, "end": { - "line": 3320, + "line": 3328, "column": 29 }, "identifierName": "solid" @@ -138320,15 +139381,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 133561, - "end": 133566, + "start": 134075, + "end": 134080, "loc": { "start": { - "line": 3320, + "line": 3328, "column": 31 }, "end": { - "line": 3320, + "line": 3328, "column": 36 } }, @@ -138345,15 +139406,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 133204, - "end": 133282, + "start": 133718, + "end": 133796, "loc": { "start": { - "line": 3313, + "line": 3321, "column": 20 }, "end": { - "line": 3313, + "line": 3321, "column": 98 } } @@ -138362,15 +139423,15 @@ }, { "type": "BreakStatement", - "start": 133611, - "end": 133617, + "start": 134125, + "end": 134131, "loc": { "start": { - "line": 3322, + "line": 3330, "column": 20 }, "end": { - "line": 3322, + "line": 3330, "column": 26 } }, @@ -138379,15 +139440,15 @@ ], "test": { "type": "StringLiteral", - "start": 133171, - "end": 133182, + "start": 133685, + "end": 133696, "loc": { "start": { - "line": 3312, + "line": 3320, "column": 21 }, "end": { - "line": 3312, + "line": 3320, "column": 32 } }, @@ -138400,59 +139461,59 @@ }, { "type": "SwitchCase", - "start": 133634, - "end": 134080, + "start": 134148, + "end": 134594, "loc": { "start": { - "line": 3323, + "line": 3331, "column": 16 }, "end": { - "line": 3333, + "line": 3341, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 133767, - "end": 134053, + "start": 134281, + "end": 134567, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 20 }, "end": { - "line": 3332, + "line": 3340, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 133767, - "end": 134052, + "start": 134281, + "end": 134566, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 20 }, "end": { - "line": 3332, + "line": 3340, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 133767, - "end": 133785, + "start": 134281, + "end": 134299, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 20 }, "end": { - "line": 3325, + "line": 3333, "column": 38 }, "identifierName": "vboInstancingLayer" @@ -138462,29 +139523,29 @@ }, "right": { "type": "NewExpression", - "start": 133788, - "end": 134052, + "start": 134302, + "end": 134566, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 41 }, "end": { - "line": 3332, + "line": 3340, "column": 22 } }, "callee": { "type": "Identifier", - "start": 133792, - "end": 133819, + "start": 134306, + "end": 134333, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 45 }, "end": { - "line": 3325, + "line": 3333, "column": 72 }, "identifierName": "VBOInstancingTrianglesLayer" @@ -138494,30 +139555,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 133820, - "end": 134051, + "start": 134334, + "end": 134565, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 73 }, "end": { - "line": 3332, + "line": 3340, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 133846, - "end": 133851, + "start": 134360, + "end": 134365, "loc": { "start": { - "line": 3326, + "line": 3334, "column": 24 }, "end": { - "line": 3326, + "line": 3334, "column": 29 } }, @@ -138526,15 +139587,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133846, - "end": 133851, + "start": 134360, + "end": 134365, "loc": { "start": { - "line": 3326, + "line": 3334, "column": 24 }, "end": { - "line": 3326, + "line": 3334, "column": 29 }, "identifierName": "model" @@ -138543,15 +139604,15 @@ }, "value": { "type": "Identifier", - "start": 133846, - "end": 133851, + "start": 134360, + "end": 134365, "loc": { "start": { - "line": 3326, + "line": 3334, "column": 24 }, "end": { - "line": 3326, + "line": 3334, "column": 29 }, "identifierName": "model" @@ -138564,15 +139625,15 @@ }, { "type": "ObjectProperty", - "start": 133877, - "end": 133887, + "start": 134391, + "end": 134401, "loc": { "start": { - "line": 3327, + "line": 3335, "column": 24 }, "end": { - "line": 3327, + "line": 3335, "column": 34 } }, @@ -138581,15 +139642,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133877, - "end": 133887, + "start": 134391, + "end": 134401, "loc": { "start": { - "line": 3327, + "line": 3335, "column": 24 }, "end": { - "line": 3327, + "line": 3335, "column": 34 }, "identifierName": "textureSet" @@ -138598,15 +139659,15 @@ }, "value": { "type": "Identifier", - "start": 133877, - "end": 133887, + "start": 134391, + "end": 134401, "loc": { "start": { - "line": 3327, + "line": 3335, "column": 24 }, "end": { - "line": 3327, + "line": 3335, "column": 34 }, "identifierName": "textureSet" @@ -138619,15 +139680,15 @@ }, { "type": "ObjectProperty", - "start": 133913, - "end": 133921, + "start": 134427, + "end": 134435, "loc": { "start": { - "line": 3328, + "line": 3336, "column": 24 }, "end": { - "line": 3328, + "line": 3336, "column": 32 } }, @@ -138636,15 +139697,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133913, - "end": 133921, + "start": 134427, + "end": 134435, "loc": { "start": { - "line": 3328, + "line": 3336, "column": 24 }, "end": { - "line": 3328, + "line": 3336, "column": 32 }, "identifierName": "geometry" @@ -138653,15 +139714,15 @@ }, "value": { "type": "Identifier", - "start": 133913, - "end": 133921, + "start": 134427, + "end": 134435, "loc": { "start": { - "line": 3328, + "line": 3336, "column": 24 }, "end": { - "line": 3328, + "line": 3336, "column": 32 }, "identifierName": "geometry" @@ -138674,15 +139735,15 @@ }, { "type": "ObjectProperty", - "start": 133947, - "end": 133953, + "start": 134461, + "end": 134467, "loc": { "start": { - "line": 3329, + "line": 3337, "column": 24 }, "end": { - "line": 3329, + "line": 3337, "column": 30 } }, @@ -138691,15 +139752,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133947, - "end": 133953, + "start": 134461, + "end": 134467, "loc": { "start": { - "line": 3329, + "line": 3337, "column": 24 }, "end": { - "line": 3329, + "line": 3337, "column": 30 }, "identifierName": "origin" @@ -138708,15 +139769,15 @@ }, "value": { "type": "Identifier", - "start": 133947, - "end": 133953, + "start": 134461, + "end": 134467, "loc": { "start": { - "line": 3329, + "line": 3337, "column": 24 }, "end": { - "line": 3329, + "line": 3337, "column": 30 }, "identifierName": "origin" @@ -138729,15 +139790,15 @@ }, { "type": "ObjectProperty", - "start": 133979, - "end": 133992, + "start": 134493, + "end": 134506, "loc": { "start": { - "line": 3330, + "line": 3338, "column": 24 }, "end": { - "line": 3330, + "line": 3338, "column": 37 } }, @@ -138746,15 +139807,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 133979, - "end": 133989, + "start": 134493, + "end": 134503, "loc": { "start": { - "line": 3330, + "line": 3338, "column": 24 }, "end": { - "line": 3330, + "line": 3338, "column": 34 }, "identifierName": "layerIndex" @@ -138763,15 +139824,15 @@ }, "value": { "type": "NumericLiteral", - "start": 133991, - "end": 133992, + "start": 134505, + "end": 134506, "loc": { "start": { - "line": 3330, + "line": 3338, "column": 36 }, "end": { - "line": 3330, + "line": 3338, "column": 37 } }, @@ -138784,15 +139845,15 @@ }, { "type": "ObjectProperty", - "start": 134018, - "end": 134029, + "start": 134532, + "end": 134543, "loc": { "start": { - "line": 3331, + "line": 3339, "column": 24 }, "end": { - "line": 3331, + "line": 3339, "column": 35 } }, @@ -138801,15 +139862,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134018, - "end": 134023, + "start": 134532, + "end": 134537, "loc": { "start": { - "line": 3331, + "line": 3339, "column": 24 }, "end": { - "line": 3331, + "line": 3339, "column": 29 }, "identifierName": "solid" @@ -138818,15 +139879,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 134025, - "end": 134029, + "start": 134539, + "end": 134543, "loc": { "start": { - "line": 3331, + "line": 3339, "column": 31 }, "end": { - "line": 3331, + "line": 3339, "column": 35 } }, @@ -138843,15 +139904,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 133668, - "end": 133746, + "start": 134182, + "end": 134260, "loc": { "start": { - "line": 3324, + "line": 3332, "column": 20 }, "end": { - "line": 3324, + "line": 3332, "column": 98 } } @@ -138860,15 +139921,15 @@ }, { "type": "BreakStatement", - "start": 134074, - "end": 134080, + "start": 134588, + "end": 134594, "loc": { "start": { - "line": 3333, + "line": 3341, "column": 20 }, "end": { - "line": 3333, + "line": 3341, "column": 26 } }, @@ -138877,15 +139938,15 @@ ], "test": { "type": "StringLiteral", - "start": 133639, - "end": 133646, + "start": 134153, + "end": 134160, "loc": { "start": { - "line": 3323, + "line": 3331, "column": 21 }, "end": { - "line": 3323, + "line": 3331, "column": 28 } }, @@ -138898,59 +139959,59 @@ }, { "type": "SwitchCase", - "start": 134097, - "end": 134546, + "start": 134611, + "end": 135060, "loc": { "start": { - "line": 3334, + "line": 3342, "column": 16 }, "end": { - "line": 3344, + "line": 3352, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 134232, - "end": 134519, + "start": 134746, + "end": 135033, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 20 }, "end": { - "line": 3343, + "line": 3351, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 134232, - "end": 134518, + "start": 134746, + "end": 135032, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 20 }, "end": { - "line": 3343, + "line": 3351, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 134232, - "end": 134250, + "start": 134746, + "end": 134764, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 20 }, "end": { - "line": 3336, + "line": 3344, "column": 38 }, "identifierName": "vboInstancingLayer" @@ -138960,29 +140021,29 @@ }, "right": { "type": "NewExpression", - "start": 134253, - "end": 134518, + "start": 134767, + "end": 135032, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 41 }, "end": { - "line": 3343, + "line": 3351, "column": 22 } }, "callee": { "type": "Identifier", - "start": 134257, - "end": 134284, + "start": 134771, + "end": 134798, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 45 }, "end": { - "line": 3336, + "line": 3344, "column": 72 }, "identifierName": "VBOInstancingTrianglesLayer" @@ -138992,30 +140053,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 134285, - "end": 134517, + "start": 134799, + "end": 135031, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 73 }, "end": { - "line": 3343, + "line": 3351, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 134311, - "end": 134316, + "start": 134825, + "end": 134830, "loc": { "start": { - "line": 3337, + "line": 3345, "column": 24 }, "end": { - "line": 3337, + "line": 3345, "column": 29 } }, @@ -139024,15 +140085,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134311, - "end": 134316, + "start": 134825, + "end": 134830, "loc": { "start": { - "line": 3337, + "line": 3345, "column": 24 }, "end": { - "line": 3337, + "line": 3345, "column": 29 }, "identifierName": "model" @@ -139041,15 +140102,15 @@ }, "value": { "type": "Identifier", - "start": 134311, - "end": 134316, + "start": 134825, + "end": 134830, "loc": { "start": { - "line": 3337, + "line": 3345, "column": 24 }, "end": { - "line": 3337, + "line": 3345, "column": 29 }, "identifierName": "model" @@ -139062,15 +140123,15 @@ }, { "type": "ObjectProperty", - "start": 134342, - "end": 134352, + "start": 134856, + "end": 134866, "loc": { "start": { - "line": 3338, + "line": 3346, "column": 24 }, "end": { - "line": 3338, + "line": 3346, "column": 34 } }, @@ -139079,15 +140140,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134342, - "end": 134352, + "start": 134856, + "end": 134866, "loc": { "start": { - "line": 3338, + "line": 3346, "column": 24 }, "end": { - "line": 3338, + "line": 3346, "column": 34 }, "identifierName": "textureSet" @@ -139096,15 +140157,15 @@ }, "value": { "type": "Identifier", - "start": 134342, - "end": 134352, + "start": 134856, + "end": 134866, "loc": { "start": { - "line": 3338, + "line": 3346, "column": 24 }, "end": { - "line": 3338, + "line": 3346, "column": 34 }, "identifierName": "textureSet" @@ -139117,15 +140178,15 @@ }, { "type": "ObjectProperty", - "start": 134378, - "end": 134386, + "start": 134892, + "end": 134900, "loc": { "start": { - "line": 3339, + "line": 3347, "column": 24 }, "end": { - "line": 3339, + "line": 3347, "column": 32 } }, @@ -139134,15 +140195,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134378, - "end": 134386, + "start": 134892, + "end": 134900, "loc": { "start": { - "line": 3339, + "line": 3347, "column": 24 }, "end": { - "line": 3339, + "line": 3347, "column": 32 }, "identifierName": "geometry" @@ -139151,15 +140212,15 @@ }, "value": { "type": "Identifier", - "start": 134378, - "end": 134386, + "start": 134892, + "end": 134900, "loc": { "start": { - "line": 3339, + "line": 3347, "column": 24 }, "end": { - "line": 3339, + "line": 3347, "column": 32 }, "identifierName": "geometry" @@ -139172,15 +140233,15 @@ }, { "type": "ObjectProperty", - "start": 134412, - "end": 134418, + "start": 134926, + "end": 134932, "loc": { "start": { - "line": 3340, + "line": 3348, "column": 24 }, "end": { - "line": 3340, + "line": 3348, "column": 30 } }, @@ -139189,15 +140250,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134412, - "end": 134418, + "start": 134926, + "end": 134932, "loc": { "start": { - "line": 3340, + "line": 3348, "column": 24 }, "end": { - "line": 3340, + "line": 3348, "column": 30 }, "identifierName": "origin" @@ -139206,15 +140267,15 @@ }, "value": { "type": "Identifier", - "start": 134412, - "end": 134418, + "start": 134926, + "end": 134932, "loc": { "start": { - "line": 3340, + "line": 3348, "column": 24 }, "end": { - "line": 3340, + "line": 3348, "column": 30 }, "identifierName": "origin" @@ -139227,15 +140288,15 @@ }, { "type": "ObjectProperty", - "start": 134444, - "end": 134457, + "start": 134958, + "end": 134971, "loc": { "start": { - "line": 3341, + "line": 3349, "column": 24 }, "end": { - "line": 3341, + "line": 3349, "column": 37 } }, @@ -139244,15 +140305,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134444, - "end": 134454, + "start": 134958, + "end": 134968, "loc": { "start": { - "line": 3341, + "line": 3349, "column": 24 }, "end": { - "line": 3341, + "line": 3349, "column": 34 }, "identifierName": "layerIndex" @@ -139261,15 +140322,15 @@ }, "value": { "type": "NumericLiteral", - "start": 134456, - "end": 134457, + "start": 134970, + "end": 134971, "loc": { "start": { - "line": 3341, + "line": 3349, "column": 36 }, "end": { - "line": 3341, + "line": 3349, "column": 37 } }, @@ -139282,15 +140343,15 @@ }, { "type": "ObjectProperty", - "start": 134483, - "end": 134495, + "start": 134997, + "end": 135009, "loc": { "start": { - "line": 3342, + "line": 3350, "column": 24 }, "end": { - "line": 3342, + "line": 3350, "column": 36 } }, @@ -139299,15 +140360,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134483, - "end": 134488, + "start": 134997, + "end": 135002, "loc": { "start": { - "line": 3342, + "line": 3350, "column": 24 }, "end": { - "line": 3342, + "line": 3350, "column": 29 }, "identifierName": "solid" @@ -139316,15 +140377,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 134490, - "end": 134495, + "start": 135004, + "end": 135009, "loc": { "start": { - "line": 3342, + "line": 3350, "column": 31 }, "end": { - "line": 3342, + "line": 3350, "column": 36 } }, @@ -139341,15 +140402,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 134133, - "end": 134211, + "start": 134647, + "end": 134725, "loc": { "start": { - "line": 3335, + "line": 3343, "column": 20 }, "end": { - "line": 3335, + "line": 3343, "column": 98 } } @@ -139358,15 +140419,15 @@ }, { "type": "BreakStatement", - "start": 134540, - "end": 134546, + "start": 135054, + "end": 135060, "loc": { "start": { - "line": 3344, + "line": 3352, "column": 20 }, "end": { - "line": 3344, + "line": 3352, "column": 26 } }, @@ -139375,15 +140436,15 @@ ], "test": { "type": "StringLiteral", - "start": 134102, - "end": 134111, + "start": 134616, + "end": 134625, "loc": { "start": { - "line": 3334, + "line": 3342, "column": 21 }, "end": { - "line": 3334, + "line": 3342, "column": 30 } }, @@ -139396,59 +140457,59 @@ }, { "type": "SwitchCase", - "start": 134563, - "end": 134967, + "start": 135077, + "end": 135481, "loc": { "start": { - "line": 3345, + "line": 3353, "column": 16 }, "end": { - "line": 3354, + "line": 3362, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 134695, - "end": 134940, + "start": 135209, + "end": 135454, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 20 }, "end": { - "line": 3353, + "line": 3361, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 134695, - "end": 134939, + "start": 135209, + "end": 135453, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 20 }, "end": { - "line": 3353, + "line": 3361, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 134695, - "end": 134713, + "start": 135209, + "end": 135227, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 20 }, "end": { - "line": 3347, + "line": 3355, "column": 38 }, "identifierName": "vboInstancingLayer" @@ -139458,29 +140519,29 @@ }, "right": { "type": "NewExpression", - "start": 134716, - "end": 134939, + "start": 135230, + "end": 135453, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 41 }, "end": { - "line": 3353, + "line": 3361, "column": 22 } }, "callee": { "type": "Identifier", - "start": 134720, - "end": 134743, + "start": 135234, + "end": 135257, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 45 }, "end": { - "line": 3347, + "line": 3355, "column": 68 }, "identifierName": "VBOInstancingLinesLayer" @@ -139490,30 +140551,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 134744, - "end": 134938, + "start": 135258, + "end": 135452, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 69 }, "end": { - "line": 3353, + "line": 3361, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 134770, - "end": 134775, + "start": 135284, + "end": 135289, "loc": { "start": { - "line": 3348, + "line": 3356, "column": 24 }, "end": { - "line": 3348, + "line": 3356, "column": 29 } }, @@ -139522,15 +140583,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134770, - "end": 134775, + "start": 135284, + "end": 135289, "loc": { "start": { - "line": 3348, + "line": 3356, "column": 24 }, "end": { - "line": 3348, + "line": 3356, "column": 29 }, "identifierName": "model" @@ -139539,15 +140600,15 @@ }, "value": { "type": "Identifier", - "start": 134770, - "end": 134775, + "start": 135284, + "end": 135289, "loc": { "start": { - "line": 3348, + "line": 3356, "column": 24 }, "end": { - "line": 3348, + "line": 3356, "column": 29 }, "identifierName": "model" @@ -139560,15 +140621,15 @@ }, { "type": "ObjectProperty", - "start": 134801, - "end": 134811, + "start": 135315, + "end": 135325, "loc": { "start": { - "line": 3349, + "line": 3357, "column": 24 }, "end": { - "line": 3349, + "line": 3357, "column": 34 } }, @@ -139577,15 +140638,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134801, - "end": 134811, + "start": 135315, + "end": 135325, "loc": { "start": { - "line": 3349, + "line": 3357, "column": 24 }, "end": { - "line": 3349, + "line": 3357, "column": 34 }, "identifierName": "textureSet" @@ -139594,15 +140655,15 @@ }, "value": { "type": "Identifier", - "start": 134801, - "end": 134811, + "start": 135315, + "end": 135325, "loc": { "start": { - "line": 3349, + "line": 3357, "column": 24 }, "end": { - "line": 3349, + "line": 3357, "column": 34 }, "identifierName": "textureSet" @@ -139615,15 +140676,15 @@ }, { "type": "ObjectProperty", - "start": 134837, - "end": 134845, + "start": 135351, + "end": 135359, "loc": { "start": { - "line": 3350, + "line": 3358, "column": 24 }, "end": { - "line": 3350, + "line": 3358, "column": 32 } }, @@ -139632,15 +140693,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134837, - "end": 134845, + "start": 135351, + "end": 135359, "loc": { "start": { - "line": 3350, + "line": 3358, "column": 24 }, "end": { - "line": 3350, + "line": 3358, "column": 32 }, "identifierName": "geometry" @@ -139649,15 +140710,15 @@ }, "value": { "type": "Identifier", - "start": 134837, - "end": 134845, + "start": 135351, + "end": 135359, "loc": { "start": { - "line": 3350, + "line": 3358, "column": 24 }, "end": { - "line": 3350, + "line": 3358, "column": 32 }, "identifierName": "geometry" @@ -139670,15 +140731,15 @@ }, { "type": "ObjectProperty", - "start": 134871, - "end": 134877, + "start": 135385, + "end": 135391, "loc": { "start": { - "line": 3351, + "line": 3359, "column": 24 }, "end": { - "line": 3351, + "line": 3359, "column": 30 } }, @@ -139687,15 +140748,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134871, - "end": 134877, + "start": 135385, + "end": 135391, "loc": { "start": { - "line": 3351, + "line": 3359, "column": 24 }, "end": { - "line": 3351, + "line": 3359, "column": 30 }, "identifierName": "origin" @@ -139704,15 +140765,15 @@ }, "value": { "type": "Identifier", - "start": 134871, - "end": 134877, + "start": 135385, + "end": 135391, "loc": { "start": { - "line": 3351, + "line": 3359, "column": 24 }, "end": { - "line": 3351, + "line": 3359, "column": 30 }, "identifierName": "origin" @@ -139725,15 +140786,15 @@ }, { "type": "ObjectProperty", - "start": 134903, - "end": 134916, + "start": 135417, + "end": 135430, "loc": { "start": { - "line": 3352, + "line": 3360, "column": 24 }, "end": { - "line": 3352, + "line": 3360, "column": 37 } }, @@ -139742,15 +140803,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 134903, - "end": 134913, + "start": 135417, + "end": 135427, "loc": { "start": { - "line": 3352, + "line": 3360, "column": 24 }, "end": { - "line": 3352, + "line": 3360, "column": 34 }, "identifierName": "layerIndex" @@ -139759,15 +140820,15 @@ }, "value": { "type": "NumericLiteral", - "start": 134915, - "end": 134916, + "start": 135429, + "end": 135430, "loc": { "start": { - "line": 3352, + "line": 3360, "column": 36 }, "end": { - "line": 3352, + "line": 3360, "column": 37 } }, @@ -139788,15 +140849,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOInstancingLinesLayer`);", - "start": 134597, - "end": 134674, + "start": 135111, + "end": 135188, "loc": { "start": { - "line": 3346, + "line": 3354, "column": 20 }, "end": { - "line": 3346, + "line": 3354, "column": 97 } } @@ -139805,15 +140866,15 @@ }, { "type": "BreakStatement", - "start": 134961, - "end": 134967, + "start": 135475, + "end": 135481, "loc": { "start": { - "line": 3354, + "line": 3362, "column": 20 }, "end": { - "line": 3354, + "line": 3362, "column": 26 } }, @@ -139822,15 +140883,15 @@ ], "test": { "type": "StringLiteral", - "start": 134568, - "end": 134575, + "start": 135082, + "end": 135089, "loc": { "start": { - "line": 3345, + "line": 3353, "column": 21 }, "end": { - "line": 3345, + "line": 3353, "column": 28 } }, @@ -139843,59 +140904,59 @@ }, { "type": "SwitchCase", - "start": 134984, - "end": 135388, + "start": 135498, + "end": 135902, "loc": { "start": { - "line": 3355, + "line": 3363, "column": 16 }, "end": { - "line": 3364, + "line": 3372, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 135115, - "end": 135361, + "start": 135629, + "end": 135875, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 20 }, "end": { - "line": 3363, + "line": 3371, "column": 23 } }, "expression": { "type": "AssignmentExpression", - "start": 135115, - "end": 135360, + "start": 135629, + "end": 135874, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 20 }, "end": { - "line": 3363, + "line": 3371, "column": 22 } }, "operator": "=", "left": { "type": "Identifier", - "start": 135115, - "end": 135133, + "start": 135629, + "end": 135647, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 20 }, "end": { - "line": 3357, + "line": 3365, "column": 38 }, "identifierName": "vboInstancingLayer" @@ -139905,29 +140966,29 @@ }, "right": { "type": "NewExpression", - "start": 135136, - "end": 135360, + "start": 135650, + "end": 135874, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 41 }, "end": { - "line": 3363, + "line": 3371, "column": 22 } }, "callee": { "type": "Identifier", - "start": 135140, - "end": 135164, + "start": 135654, + "end": 135678, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 45 }, "end": { - "line": 3357, + "line": 3365, "column": 69 }, "identifierName": "VBOInstancingPointsLayer" @@ -139937,30 +140998,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 135165, - "end": 135359, + "start": 135679, + "end": 135873, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 70 }, "end": { - "line": 3363, + "line": 3371, "column": 21 } }, "properties": [ { "type": "ObjectProperty", - "start": 135191, - "end": 135196, + "start": 135705, + "end": 135710, "loc": { "start": { - "line": 3358, + "line": 3366, "column": 24 }, "end": { - "line": 3358, + "line": 3366, "column": 29 } }, @@ -139969,15 +141030,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 135191, - "end": 135196, + "start": 135705, + "end": 135710, "loc": { "start": { - "line": 3358, + "line": 3366, "column": 24 }, "end": { - "line": 3358, + "line": 3366, "column": 29 }, "identifierName": "model" @@ -139986,15 +141047,15 @@ }, "value": { "type": "Identifier", - "start": 135191, - "end": 135196, + "start": 135705, + "end": 135710, "loc": { "start": { - "line": 3358, + "line": 3366, "column": 24 }, "end": { - "line": 3358, + "line": 3366, "column": 29 }, "identifierName": "model" @@ -140007,15 +141068,15 @@ }, { "type": "ObjectProperty", - "start": 135222, - "end": 135232, + "start": 135736, + "end": 135746, "loc": { "start": { - "line": 3359, + "line": 3367, "column": 24 }, "end": { - "line": 3359, + "line": 3367, "column": 34 } }, @@ -140024,15 +141085,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 135222, - "end": 135232, + "start": 135736, + "end": 135746, "loc": { "start": { - "line": 3359, + "line": 3367, "column": 24 }, "end": { - "line": 3359, + "line": 3367, "column": 34 }, "identifierName": "textureSet" @@ -140041,15 +141102,15 @@ }, "value": { "type": "Identifier", - "start": 135222, - "end": 135232, + "start": 135736, + "end": 135746, "loc": { "start": { - "line": 3359, + "line": 3367, "column": 24 }, "end": { - "line": 3359, + "line": 3367, "column": 34 }, "identifierName": "textureSet" @@ -140062,15 +141123,15 @@ }, { "type": "ObjectProperty", - "start": 135258, - "end": 135266, + "start": 135772, + "end": 135780, "loc": { "start": { - "line": 3360, + "line": 3368, "column": 24 }, "end": { - "line": 3360, + "line": 3368, "column": 32 } }, @@ -140079,15 +141140,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 135258, - "end": 135266, + "start": 135772, + "end": 135780, "loc": { "start": { - "line": 3360, + "line": 3368, "column": 24 }, "end": { - "line": 3360, + "line": 3368, "column": 32 }, "identifierName": "geometry" @@ -140096,15 +141157,15 @@ }, "value": { "type": "Identifier", - "start": 135258, - "end": 135266, + "start": 135772, + "end": 135780, "loc": { "start": { - "line": 3360, + "line": 3368, "column": 24 }, "end": { - "line": 3360, + "line": 3368, "column": 32 }, "identifierName": "geometry" @@ -140117,15 +141178,15 @@ }, { "type": "ObjectProperty", - "start": 135292, - "end": 135298, + "start": 135806, + "end": 135812, "loc": { "start": { - "line": 3361, + "line": 3369, "column": 24 }, "end": { - "line": 3361, + "line": 3369, "column": 30 } }, @@ -140134,15 +141195,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 135292, - "end": 135298, + "start": 135806, + "end": 135812, "loc": { "start": { - "line": 3361, + "line": 3369, "column": 24 }, "end": { - "line": 3361, + "line": 3369, "column": 30 }, "identifierName": "origin" @@ -140151,15 +141212,15 @@ }, "value": { "type": "Identifier", - "start": 135292, - "end": 135298, + "start": 135806, + "end": 135812, "loc": { "start": { - "line": 3361, + "line": 3369, "column": 24 }, "end": { - "line": 3361, + "line": 3369, "column": 30 }, "identifierName": "origin" @@ -140172,15 +141233,15 @@ }, { "type": "ObjectProperty", - "start": 135324, - "end": 135337, + "start": 135838, + "end": 135851, "loc": { "start": { - "line": 3362, + "line": 3370, "column": 24 }, "end": { - "line": 3362, + "line": 3370, "column": 37 } }, @@ -140189,15 +141250,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 135324, - "end": 135334, + "start": 135838, + "end": 135848, "loc": { "start": { - "line": 3362, + "line": 3370, "column": 24 }, "end": { - "line": 3362, + "line": 3370, "column": 34 }, "identifierName": "layerIndex" @@ -140206,15 +141267,15 @@ }, "value": { "type": "NumericLiteral", - "start": 135336, - "end": 135337, + "start": 135850, + "end": 135851, "loc": { "start": { - "line": 3362, + "line": 3370, "column": 36 }, "end": { - "line": 3362, + "line": 3370, "column": 37 } }, @@ -140235,15 +141296,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating PointsInstancingLayer`);", - "start": 135019, - "end": 135094, + "start": 135533, + "end": 135608, "loc": { "start": { - "line": 3356, + "line": 3364, "column": 20 }, "end": { - "line": 3356, + "line": 3364, "column": 95 } } @@ -140252,15 +141313,15 @@ }, { "type": "BreakStatement", - "start": 135382, - "end": 135388, + "start": 135896, + "end": 135902, "loc": { "start": { - "line": 3364, + "line": 3372, "column": 20 }, "end": { - "line": 3364, + "line": 3372, "column": 26 } }, @@ -140269,15 +141330,15 @@ ], "test": { "type": "StringLiteral", - "start": 134989, - "end": 134997, + "start": 135503, + "end": 135511, "loc": { "start": { - "line": 3355, + "line": 3363, "column": 21 }, "end": { - "line": 3355, + "line": 3363, "column": 29 } }, @@ -140293,15 +141354,15 @@ { "type": "CommentLine", "value": " const lenPositions = geometry.positionsCompressed.length;", - "start": 135415, - "end": 135475, + "start": 135929, + "end": 135989, "loc": { "start": { - "line": 3366, + "line": 3374, "column": 12 }, "end": { - "line": 3366, + "line": 3374, "column": 72 } } @@ -140309,15 +141370,15 @@ { "type": "CommentLine", "value": " if (!vboInstancingLayer.canCreatePortion(lenPositions, geometry.indices.length)) { // FIXME: indices should be optional", - "start": 135488, - "end": 135610, + "start": 136002, + "end": 136124, "loc": { "start": { - "line": 3367, + "line": 3375, "column": 12 }, "end": { - "line": 3367, + "line": 3375, "column": 134 } } @@ -140325,15 +141386,15 @@ { "type": "CommentLine", "value": " vboInstancingLayer.finalize();", - "start": 135623, - "end": 135660, + "start": 136137, + "end": 136174, "loc": { "start": { - "line": 3368, + "line": 3376, "column": 12 }, "end": { - "line": 3368, + "line": 3376, "column": 49 } } @@ -140341,15 +141402,15 @@ { "type": "CommentLine", "value": " delete this._vboInstancingLayers[layerId];", - "start": 135673, - "end": 135722, + "start": 136187, + "end": 136236, "loc": { "start": { - "line": 3369, + "line": 3377, "column": 12 }, "end": { - "line": 3369, + "line": 3377, "column": 61 } } @@ -140357,15 +141418,15 @@ { "type": "CommentLine", "value": " vboInstancingLayer = null;", - "start": 135735, - "end": 135768, + "start": 136249, + "end": 136282, "loc": { "start": { - "line": 3370, + "line": 3378, "column": 12 }, "end": { - "line": 3370, + "line": 3378, "column": 45 } } @@ -140373,15 +141434,15 @@ { "type": "CommentLine", "value": " }", - "start": 135781, - "end": 135785, + "start": 136295, + "end": 136299, "loc": { "start": { - "line": 3371, + "line": 3379, "column": 12 }, "end": { - "line": 3371, + "line": 3379, "column": 16 } } @@ -140394,87 +141455,87 @@ }, { "type": "ExpressionStatement", - "start": 135804, - "end": 135860, + "start": 136318, + "end": 136374, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 8 }, "end": { - "line": 3373, + "line": 3381, "column": 64 } }, "expression": { "type": "AssignmentExpression", - "start": 135804, - "end": 135859, + "start": 136318, + "end": 136373, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 8 }, "end": { - "line": 3373, + "line": 3381, "column": 63 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 135804, - "end": 135838, + "start": 136318, + "end": 136352, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 8 }, "end": { - "line": 3373, + "line": 3381, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 135804, - "end": 135829, + "start": 136318, + "end": 136343, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 8 }, "end": { - "line": 3373, + "line": 3381, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 135804, - "end": 135808, + "start": 136318, + "end": 136322, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 8 }, "end": { - "line": 3373, + "line": 3381, "column": 12 } } }, "property": { "type": "Identifier", - "start": 135809, - "end": 135829, + "start": 136323, + "end": 136343, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 13 }, "end": { - "line": 3373, + "line": 3381, "column": 33 }, "identifierName": "_vboInstancingLayers" @@ -140485,15 +141546,15 @@ }, "property": { "type": "Identifier", - "start": 135830, - "end": 135837, + "start": 136344, + "end": 136351, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 34 }, "end": { - "line": 3373, + "line": 3381, "column": 41 }, "identifierName": "layerId" @@ -140504,15 +141565,15 @@ }, "right": { "type": "Identifier", - "start": 135841, - "end": 135859, + "start": 136355, + "end": 136373, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 45 }, "end": { - "line": 3373, + "line": 3381, "column": 63 }, "identifierName": "vboInstancingLayer" @@ -140523,86 +141584,86 @@ }, { "type": "ExpressionStatement", - "start": 135869, - "end": 135909, + "start": 136383, + "end": 136423, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 8 }, "end": { - "line": 3374, + "line": 3382, "column": 48 } }, "expression": { "type": "CallExpression", - "start": 135869, - "end": 135908, + "start": 136383, + "end": 136422, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 8 }, "end": { - "line": 3374, + "line": 3382, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 135869, - "end": 135888, + "start": 136383, + "end": 136402, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 8 }, "end": { - "line": 3374, + "line": 3382, "column": 27 } }, "object": { "type": "MemberExpression", - "start": 135869, - "end": 135883, + "start": 136383, + "end": 136397, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 8 }, "end": { - "line": 3374, + "line": 3382, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 135869, - "end": 135873, + "start": 136383, + "end": 136387, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 8 }, "end": { - "line": 3374, + "line": 3382, "column": 12 } } }, "property": { "type": "Identifier", - "start": 135874, - "end": 135883, + "start": 136388, + "end": 136397, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 13 }, "end": { - "line": 3374, + "line": 3382, "column": 22 }, "identifierName": "layerList" @@ -140613,15 +141674,15 @@ }, "property": { "type": "Identifier", - "start": 135884, - "end": 135888, + "start": 136398, + "end": 136402, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 23 }, "end": { - "line": 3374, + "line": 3382, "column": 27 }, "identifierName": "push" @@ -140633,15 +141694,15 @@ "arguments": [ { "type": "Identifier", - "start": 135889, - "end": 135907, + "start": 136403, + "end": 136421, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 28 }, "end": { - "line": 3374, + "line": 3382, "column": 46 }, "identifierName": "vboInstancingLayer" @@ -140653,29 +141714,29 @@ }, { "type": "ReturnStatement", - "start": 135918, - "end": 135944, + "start": 136432, + "end": 136458, "loc": { "start": { - "line": 3375, + "line": 3383, "column": 8 }, "end": { - "line": 3375, + "line": 3383, "column": 34 } }, "argument": { "type": "Identifier", - "start": 135925, - "end": 135943, + "start": 136439, + "end": 136457, "loc": { "start": { - "line": 3375, + "line": 3383, "column": 15 }, "end": { - "line": 3375, + "line": 3383, "column": 33 }, "identifierName": "vboInstancingLayer" @@ -140691,15 +141752,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a {@link SceneModelEntity} within this SceneModel.\n *\n * * Gives the SceneModelEntity one or more {@link SceneModelMesh}es previously created with\n * {@link SceneModel#createMesh}. A SceneModelMesh can only belong to one SceneModelEntity, so you'll get an\n * error if you try to reuse a mesh among multiple SceneModelEntitys.\n * * The SceneModelEntity can have a {@link SceneModelTextureSet}, previously created with\n * {@link SceneModel#createTextureSet}. A SceneModelTextureSet can belong to multiple SceneModelEntitys.\n * * The SceneModelEntity can have a geometry, previously created with\n * {@link SceneModel#createTextureSet}. A geometry is a \"virtual component\" and can belong to multiple SceneModelEntitys.\n *\n * @param {Object} cfg SceneModelEntity configuration.\n * @param {String} cfg.id Optional ID for the new SceneModelEntity. Must not clash with any existing components within the {@link Scene}.\n * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link SceneModel@createMesh}.\n * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link SceneModelEntity} represents an object, in which case it will be registered by {@link SceneModelEntity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModelEntity is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModelEntity is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModelEntity is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModelEntity is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModelEntity is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the SceneModelEntity initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the SceneModelEntity initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModelEntity is initially xrayed. XRayed appearance is configured by {@link SceneModel#xrayMaterial}.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModelEntity is initially highlighted. Highlighted appearance is configured by {@link SceneModel#highlightMaterial}.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModelEntity is initially selected. Selected appearance is configured by {@link SceneModel#selectedMaterial}.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModelEntity's edges are initially emphasized. Edges appearance is configured by {@link SceneModel#edgeMaterial}.\n * @returns {SceneModelEntity} The new SceneModelEntity.\n ", - "start": 135956, - "end": 138927, + "start": 136470, + "end": 139441, "loc": { "start": { - "line": 3378, + "line": 3386, "column": 4 }, "end": { - "line": 3405, + "line": 3413, "column": 7 } } @@ -140708,15 +141769,15 @@ }, { "type": "ClassMethod", - "start": 138932, - "end": 140492, + "start": 139446, + "end": 141006, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 4 }, "end": { - "line": 3447, + "line": 3455, "column": 5 } }, @@ -140724,15 +141785,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 138932, - "end": 138944, + "start": 139446, + "end": 139458, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 4 }, "end": { - "line": 3406, + "line": 3414, "column": 16 }, "identifierName": "createEntity" @@ -140748,15 +141809,15 @@ "params": [ { "type": "Identifier", - "start": 138945, - "end": 138948, + "start": 139459, + "end": 139462, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 17 }, "end": { - "line": 3406, + "line": 3414, "column": 20 }, "identifierName": "cfg" @@ -140766,72 +141827,72 @@ ], "body": { "type": "BlockStatement", - "start": 138950, - "end": 140492, + "start": 139464, + "end": 141006, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 22 }, "end": { - "line": 3447, + "line": 3455, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 138960, - "end": 139234, + "start": 139474, + "end": 139748, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 8 }, "end": { - "line": 3412, + "line": 3420, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 138964, - "end": 138984, + "start": 139478, + "end": 139498, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 12 }, "end": { - "line": 3407, + "line": 3415, "column": 32 } }, "left": { "type": "MemberExpression", - "start": 138964, - "end": 138970, + "start": 139478, + "end": 139484, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 12 }, "end": { - "line": 3407, + "line": 3415, "column": 18 } }, "object": { "type": "Identifier", - "start": 138964, - "end": 138967, + "start": 139478, + "end": 139481, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 12 }, "end": { - "line": 3407, + "line": 3415, "column": 15 }, "identifierName": "cfg" @@ -140840,15 +141901,15 @@ }, "property": { "type": "Identifier", - "start": 138968, - "end": 138970, + "start": 139482, + "end": 139484, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 16 }, "end": { - "line": 3407, + "line": 3415, "column": 18 }, "identifierName": "id" @@ -140860,15 +141921,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 138975, - "end": 138984, + "start": 139489, + "end": 139498, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 23 }, "end": { - "line": 3407, + "line": 3415, "column": 32 }, "identifierName": "undefined" @@ -140878,73 +141939,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 138986, - "end": 139037, + "start": 139500, + "end": 139551, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 34 }, "end": { - "line": 3409, + "line": 3417, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 139000, - "end": 139027, + "start": 139514, + "end": 139541, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 12 }, "end": { - "line": 3408, + "line": 3416, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 139000, - "end": 139026, + "start": 139514, + "end": 139540, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 12 }, "end": { - "line": 3408, + "line": 3416, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 139000, - "end": 139006, + "start": 139514, + "end": 139520, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 12 }, "end": { - "line": 3408, + "line": 3416, "column": 18 } }, "object": { "type": "Identifier", - "start": 139000, - "end": 139003, + "start": 139514, + "end": 139517, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 12 }, "end": { - "line": 3408, + "line": 3416, "column": 15 }, "identifierName": "cfg" @@ -140953,15 +142014,15 @@ }, "property": { "type": "Identifier", - "start": 139004, - "end": 139006, + "start": 139518, + "end": 139520, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 16 }, "end": { - "line": 3408, + "line": 3416, "column": 18 }, "identifierName": "id" @@ -140972,43 +142033,43 @@ }, "right": { "type": "CallExpression", - "start": 139009, - "end": 139026, + "start": 139523, + "end": 139540, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 21 }, "end": { - "line": 3408, + "line": 3416, "column": 38 } }, "callee": { "type": "MemberExpression", - "start": 139009, - "end": 139024, + "start": 139523, + "end": 139538, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 21 }, "end": { - "line": 3408, + "line": 3416, "column": 36 } }, "object": { "type": "Identifier", - "start": 139009, - "end": 139013, + "start": 139523, + "end": 139527, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 21 }, "end": { - "line": 3408, + "line": 3416, "column": 25 }, "identifierName": "math" @@ -141017,15 +142078,15 @@ }, "property": { "type": "Identifier", - "start": 139014, - "end": 139024, + "start": 139528, + "end": 139538, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 26 }, "end": { - "line": 3408, + "line": 3416, "column": 36 }, "identifierName": "createUUID" @@ -141043,86 +142104,86 @@ }, "alternate": { "type": "IfStatement", - "start": 139043, - "end": 139234, + "start": 139557, + "end": 139748, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 15 }, "end": { - "line": 3412, + "line": 3420, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 139047, - "end": 139076, + "start": 139561, + "end": 139590, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 19 }, "end": { - "line": 3409, + "line": 3417, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 139047, - "end": 139068, + "start": 139561, + "end": 139582, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 19 }, "end": { - "line": 3409, + "line": 3417, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 139047, - "end": 139057, + "start": 139561, + "end": 139571, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 19 }, "end": { - "line": 3409, + "line": 3417, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 139047, - "end": 139051, + "start": 139561, + "end": 139565, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 19 }, "end": { - "line": 3409, + "line": 3417, "column": 23 } } }, "property": { "type": "Identifier", - "start": 139052, - "end": 139057, + "start": 139566, + "end": 139571, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 24 }, "end": { - "line": 3409, + "line": 3417, "column": 29 }, "identifierName": "scene" @@ -141133,15 +142194,15 @@ }, "property": { "type": "Identifier", - "start": 139058, - "end": 139068, + "start": 139572, + "end": 139582, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 30 }, "end": { - "line": 3409, + "line": 3417, "column": 40 }, "identifierName": "components" @@ -141152,29 +142213,29 @@ }, "property": { "type": "MemberExpression", - "start": 139069, - "end": 139075, + "start": 139583, + "end": 139589, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 41 }, "end": { - "line": 3409, + "line": 3417, "column": 47 } }, "object": { "type": "Identifier", - "start": 139069, - "end": 139072, + "start": 139583, + "end": 139586, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 41 }, "end": { - "line": 3409, + "line": 3417, "column": 44 }, "identifierName": "cfg" @@ -141183,15 +142244,15 @@ }, "property": { "type": "Identifier", - "start": 139073, - "end": 139075, + "start": 139587, + "end": 139589, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 45 }, "end": { - "line": 3409, + "line": 3417, "column": 47 }, "identifierName": "id" @@ -141204,87 +142265,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 139078, - "end": 139234, + "start": 139592, + "end": 139748, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 50 }, "end": { - "line": 3412, + "line": 3420, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 139092, - "end": 139184, + "start": 139606, + "end": 139698, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 12 }, "end": { - "line": 3410, + "line": 3418, "column": 104 } }, "expression": { "type": "CallExpression", - "start": 139092, - "end": 139183, + "start": 139606, + "end": 139697, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 12 }, "end": { - "line": 3410, + "line": 3418, "column": 103 } }, "callee": { "type": "MemberExpression", - "start": 139092, - "end": 139102, + "start": 139606, + "end": 139616, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 12 }, "end": { - "line": 3410, + "line": 3418, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 139092, - "end": 139096, + "start": 139606, + "end": 139610, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 12 }, "end": { - "line": 3410, + "line": 3418, "column": 16 } } }, "property": { "type": "Identifier", - "start": 139097, - "end": 139102, + "start": 139611, + "end": 139616, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 17 }, "end": { - "line": 3410, + "line": 3418, "column": 22 }, "identifierName": "error" @@ -141296,44 +142357,44 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 139103, - "end": 139182, + "start": 139617, + "end": 139696, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 23 }, "end": { - "line": 3410, + "line": 3418, "column": 102 } }, "expressions": [ { "type": "MemberExpression", - "start": 139150, - "end": 139156, + "start": 139664, + "end": 139670, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 70 }, "end": { - "line": 3410, + "line": 3418, "column": 76 } }, "object": { "type": "Identifier", - "start": 139150, - "end": 139153, + "start": 139664, + "end": 139667, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 70 }, "end": { - "line": 3410, + "line": 3418, "column": 73 }, "identifierName": "cfg" @@ -141342,15 +142403,15 @@ }, "property": { "type": "Identifier", - "start": 139154, - "end": 139156, + "start": 139668, + "end": 139670, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 74 }, "end": { - "line": 3410, + "line": 3418, "column": 76 }, "identifierName": "id" @@ -141363,15 +142424,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 139104, - "end": 139148, + "start": 139618, + "end": 139662, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 24 }, "end": { - "line": 3410, + "line": 3418, "column": 68 } }, @@ -141383,15 +142444,15 @@ }, { "type": "TemplateElement", - "start": 139157, - "end": 139181, + "start": 139671, + "end": 139695, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 77 }, "end": { - "line": 3410, + "line": 3418, "column": 101 } }, @@ -141408,58 +142469,58 @@ }, { "type": "ExpressionStatement", - "start": 139197, - "end": 139224, + "start": 139711, + "end": 139738, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 12 }, "end": { - "line": 3411, + "line": 3419, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 139197, - "end": 139223, + "start": 139711, + "end": 139737, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 12 }, "end": { - "line": 3411, + "line": 3419, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 139197, - "end": 139203, + "start": 139711, + "end": 139717, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 12 }, "end": { - "line": 3411, + "line": 3419, "column": 18 } }, "object": { "type": "Identifier", - "start": 139197, - "end": 139200, + "start": 139711, + "end": 139714, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 12 }, "end": { - "line": 3411, + "line": 3419, "column": 15 }, "identifierName": "cfg" @@ -141468,15 +142529,15 @@ }, "property": { "type": "Identifier", - "start": 139201, - "end": 139203, + "start": 139715, + "end": 139717, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 16 }, "end": { - "line": 3411, + "line": 3419, "column": 18 }, "identifierName": "id" @@ -141487,43 +142548,43 @@ }, "right": { "type": "CallExpression", - "start": 139206, - "end": 139223, + "start": 139720, + "end": 139737, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 21 }, "end": { - "line": 3411, + "line": 3419, "column": 38 } }, "callee": { "type": "MemberExpression", - "start": 139206, - "end": 139221, + "start": 139720, + "end": 139735, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 21 }, "end": { - "line": 3411, + "line": 3419, "column": 36 } }, "object": { "type": "Identifier", - "start": 139206, - "end": 139210, + "start": 139720, + "end": 139724, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 21 }, "end": { - "line": 3411, + "line": 3419, "column": 25 }, "identifierName": "math" @@ -141532,15 +142593,15 @@ }, "property": { "type": "Identifier", - "start": 139211, - "end": 139221, + "start": 139725, + "end": 139735, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 26 }, "end": { - "line": 3411, + "line": 3419, "column": 36 }, "identifierName": "createUUID" @@ -141561,57 +142622,57 @@ }, { "type": "IfStatement", - "start": 139243, - "end": 139356, + "start": 139757, + "end": 139870, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 8 }, "end": { - "line": 3416, + "line": 3424, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 139247, - "end": 139272, + "start": 139761, + "end": 139786, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 12 }, "end": { - "line": 3413, + "line": 3421, "column": 37 } }, "left": { "type": "MemberExpression", - "start": 139247, - "end": 139258, + "start": 139761, + "end": 139772, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 12 }, "end": { - "line": 3413, + "line": 3421, "column": 23 } }, "object": { "type": "Identifier", - "start": 139247, - "end": 139250, + "start": 139761, + "end": 139764, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 12 }, "end": { - "line": 3413, + "line": 3421, "column": 15 }, "identifierName": "cfg" @@ -141620,15 +142681,15 @@ }, "property": { "type": "Identifier", - "start": 139251, - "end": 139258, + "start": 139765, + "end": 139772, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 16 }, "end": { - "line": 3413, + "line": 3421, "column": 23 }, "identifierName": "meshIds" @@ -141640,15 +142701,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 139263, - "end": 139272, + "start": 139777, + "end": 139786, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 28 }, "end": { - "line": 3413, + "line": 3421, "column": 37 }, "identifierName": "undefined" @@ -141658,87 +142719,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 139274, - "end": 139356, + "start": 139788, + "end": 139870, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 39 }, "end": { - "line": 3416, + "line": 3424, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 139288, - "end": 139326, + "start": 139802, + "end": 139840, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 12 }, "end": { - "line": 3414, + "line": 3422, "column": 50 } }, "expression": { "type": "CallExpression", - "start": 139288, - "end": 139325, + "start": 139802, + "end": 139839, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 12 }, "end": { - "line": 3414, + "line": 3422, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 139288, - "end": 139298, + "start": 139802, + "end": 139812, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 12 }, "end": { - "line": 3414, + "line": 3422, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 139288, - "end": 139292, + "start": 139802, + "end": 139806, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 12 }, "end": { - "line": 3414, + "line": 3422, "column": 16 } } }, "property": { "type": "Identifier", - "start": 139293, - "end": 139298, + "start": 139807, + "end": 139812, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 17 }, "end": { - "line": 3414, + "line": 3422, "column": 22 }, "identifierName": "error" @@ -141750,15 +142811,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 139299, - "end": 139324, + "start": 139813, + "end": 139838, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 23 }, "end": { - "line": 3414, + "line": 3422, "column": 48 } }, @@ -141773,15 +142834,15 @@ }, { "type": "ReturnStatement", - "start": 139339, - "end": 139346, + "start": 139853, + "end": 139860, "loc": { "start": { - "line": 3415, + "line": 3423, "column": 12 }, "end": { - "line": 3415, + "line": 3423, "column": 19 } }, @@ -141794,44 +142855,44 @@ }, { "type": "VariableDeclaration", - "start": 139365, - "end": 139379, + "start": 139879, + "end": 139893, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 8 }, "end": { - "line": 3417, + "line": 3425, "column": 22 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 139369, - "end": 139378, + "start": 139883, + "end": 139892, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 12 }, "end": { - "line": 3417, + "line": 3425, "column": 21 } }, "id": { "type": "Identifier", - "start": 139369, - "end": 139374, + "start": 139883, + "end": 139888, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 12 }, "end": { - "line": 3417, + "line": 3425, "column": 17 }, "identifierName": "flags" @@ -141840,15 +142901,15 @@ }, "init": { "type": "NumericLiteral", - "start": 139377, - "end": 139378, + "start": 139891, + "end": 139892, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 20 }, "end": { - "line": 3417, + "line": 3425, "column": 21 } }, @@ -141864,72 +142925,72 @@ }, { "type": "IfStatement", - "start": 139388, - "end": 139493, + "start": 139902, + "end": 140007, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 8 }, "end": { - "line": 3420, + "line": 3428, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 139392, - "end": 139430, + "start": 139906, + "end": 139944, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 12 }, "end": { - "line": 3418, + "line": 3426, "column": 50 } }, "left": { "type": "MemberExpression", - "start": 139392, - "end": 139405, + "start": 139906, + "end": 139919, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 12 }, "end": { - "line": 3418, + "line": 3426, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 139392, - "end": 139396, + "start": 139906, + "end": 139910, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 12 }, "end": { - "line": 3418, + "line": 3426, "column": 16 } } }, "property": { "type": "Identifier", - "start": 139397, - "end": 139405, + "start": 139911, + "end": 139919, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 17 }, "end": { - "line": 3418, + "line": 3426, "column": 25 }, "identifierName": "_visible" @@ -141941,43 +143002,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 139409, - "end": 139430, + "start": 139923, + "end": 139944, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 29 }, "end": { - "line": 3418, + "line": 3426, "column": 50 } }, "left": { "type": "MemberExpression", - "start": 139409, - "end": 139420, + "start": 139923, + "end": 139934, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 29 }, "end": { - "line": 3418, + "line": 3426, "column": 40 } }, "object": { "type": "Identifier", - "start": 139409, - "end": 139412, + "start": 139923, + "end": 139926, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 29 }, "end": { - "line": 3418, + "line": 3426, "column": 32 }, "identifierName": "cfg" @@ -141986,15 +143047,15 @@ }, "property": { "type": "Identifier", - "start": 139413, - "end": 139420, + "start": 139927, + "end": 139934, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 33 }, "end": { - "line": 3418, + "line": 3426, "column": 40 }, "identifierName": "visible" @@ -142006,15 +143067,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 139425, - "end": 139430, + "start": 139939, + "end": 139944, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 45 }, "end": { - "line": 3418, + "line": 3426, "column": 50 } }, @@ -142024,59 +143085,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 139432, - "end": 139493, + "start": 139946, + "end": 140007, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 52 }, "end": { - "line": 3420, + "line": 3428, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 139446, - "end": 139483, + "start": 139960, + "end": 139997, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 12 }, "end": { - "line": 3419, + "line": 3427, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 139446, - "end": 139482, + "start": 139960, + "end": 139996, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 12 }, "end": { - "line": 3419, + "line": 3427, "column": 48 } }, "operator": "=", "left": { "type": "Identifier", - "start": 139446, - "end": 139451, + "start": 139960, + "end": 139965, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 12 }, "end": { - "line": 3419, + "line": 3427, "column": 17 }, "identifierName": "flags" @@ -142085,29 +143146,29 @@ }, "right": { "type": "BinaryExpression", - "start": 139454, - "end": 139482, + "start": 139968, + "end": 139996, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 20 }, "end": { - "line": 3419, + "line": 3427, "column": 48 } }, "left": { "type": "Identifier", - "start": 139454, - "end": 139459, + "start": 139968, + "end": 139973, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 20 }, "end": { - "line": 3419, + "line": 3427, "column": 25 }, "identifierName": "flags" @@ -142117,29 +143178,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 139462, - "end": 139482, + "start": 139976, + "end": 139996, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 28 }, "end": { - "line": 3419, + "line": 3427, "column": 48 } }, "object": { "type": "Identifier", - "start": 139462, - "end": 139474, + "start": 139976, + "end": 139988, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 28 }, "end": { - "line": 3419, + "line": 3427, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -142148,15 +143209,15 @@ }, "property": { "type": "Identifier", - "start": 139475, - "end": 139482, + "start": 139989, + "end": 139996, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 41 }, "end": { - "line": 3419, + "line": 3427, "column": 48 }, "identifierName": "VISIBLE" @@ -142175,72 +143236,72 @@ }, { "type": "IfStatement", - "start": 139502, - "end": 139610, + "start": 140016, + "end": 140124, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 8 }, "end": { - "line": 3423, + "line": 3431, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 139506, - "end": 139546, + "start": 140020, + "end": 140060, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 12 }, "end": { - "line": 3421, + "line": 3429, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 139506, - "end": 139520, + "start": 140020, + "end": 140034, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 12 }, "end": { - "line": 3421, + "line": 3429, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 139506, - "end": 139510, + "start": 140020, + "end": 140024, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 12 }, "end": { - "line": 3421, + "line": 3429, "column": 16 } } }, "property": { "type": "Identifier", - "start": 139511, - "end": 139520, + "start": 140025, + "end": 140034, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 17 }, "end": { - "line": 3421, + "line": 3429, "column": 26 }, "identifierName": "_pickable" @@ -142252,43 +143313,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 139524, - "end": 139546, + "start": 140038, + "end": 140060, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 30 }, "end": { - "line": 3421, + "line": 3429, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 139524, - "end": 139536, + "start": 140038, + "end": 140050, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 30 }, "end": { - "line": 3421, + "line": 3429, "column": 42 } }, "object": { "type": "Identifier", - "start": 139524, - "end": 139527, + "start": 140038, + "end": 140041, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 30 }, "end": { - "line": 3421, + "line": 3429, "column": 33 }, "identifierName": "cfg" @@ -142297,15 +143358,15 @@ }, "property": { "type": "Identifier", - "start": 139528, - "end": 139536, + "start": 140042, + "end": 140050, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 34 }, "end": { - "line": 3421, + "line": 3429, "column": 42 }, "identifierName": "pickable" @@ -142317,15 +143378,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 139541, - "end": 139546, + "start": 140055, + "end": 140060, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 47 }, "end": { - "line": 3421, + "line": 3429, "column": 52 } }, @@ -142335,59 +143396,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 139548, - "end": 139610, + "start": 140062, + "end": 140124, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 54 }, "end": { - "line": 3423, + "line": 3431, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 139562, - "end": 139600, + "start": 140076, + "end": 140114, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 12 }, "end": { - "line": 3422, + "line": 3430, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 139562, - "end": 139599, + "start": 140076, + "end": 140113, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 12 }, "end": { - "line": 3422, + "line": 3430, "column": 49 } }, "operator": "=", "left": { "type": "Identifier", - "start": 139562, - "end": 139567, + "start": 140076, + "end": 140081, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 12 }, "end": { - "line": 3422, + "line": 3430, "column": 17 }, "identifierName": "flags" @@ -142396,29 +143457,29 @@ }, "right": { "type": "BinaryExpression", - "start": 139570, - "end": 139599, + "start": 140084, + "end": 140113, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 20 }, "end": { - "line": 3422, + "line": 3430, "column": 49 } }, "left": { "type": "Identifier", - "start": 139570, - "end": 139575, + "start": 140084, + "end": 140089, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 20 }, "end": { - "line": 3422, + "line": 3430, "column": 25 }, "identifierName": "flags" @@ -142428,29 +143489,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 139578, - "end": 139599, + "start": 140092, + "end": 140113, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 28 }, "end": { - "line": 3422, + "line": 3430, "column": 49 } }, "object": { "type": "Identifier", - "start": 139578, - "end": 139590, + "start": 140092, + "end": 140104, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 28 }, "end": { - "line": 3422, + "line": 3430, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -142459,15 +143520,15 @@ }, "property": { "type": "Identifier", - "start": 139591, - "end": 139599, + "start": 140105, + "end": 140113, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 41 }, "end": { - "line": 3422, + "line": 3430, "column": 49 }, "identifierName": "PICKABLE" @@ -142486,72 +143547,72 @@ }, { "type": "IfStatement", - "start": 139619, - "end": 139721, + "start": 140133, + "end": 140235, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 8 }, "end": { - "line": 3426, + "line": 3434, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 139623, - "end": 139659, + "start": 140137, + "end": 140173, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 12 }, "end": { - "line": 3424, + "line": 3432, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 139623, - "end": 139635, + "start": 140137, + "end": 140149, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 12 }, "end": { - "line": 3424, + "line": 3432, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 139623, - "end": 139627, + "start": 140137, + "end": 140141, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 12 }, "end": { - "line": 3424, + "line": 3432, "column": 16 } } }, "property": { "type": "Identifier", - "start": 139628, - "end": 139635, + "start": 140142, + "end": 140149, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 17 }, "end": { - "line": 3424, + "line": 3432, "column": 24 }, "identifierName": "_culled" @@ -142563,43 +143624,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 139639, - "end": 139659, + "start": 140153, + "end": 140173, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 28 }, "end": { - "line": 3424, + "line": 3432, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 139639, - "end": 139649, + "start": 140153, + "end": 140163, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 28 }, "end": { - "line": 3424, + "line": 3432, "column": 38 } }, "object": { "type": "Identifier", - "start": 139639, - "end": 139642, + "start": 140153, + "end": 140156, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 28 }, "end": { - "line": 3424, + "line": 3432, "column": 31 }, "identifierName": "cfg" @@ -142608,15 +143669,15 @@ }, "property": { "type": "Identifier", - "start": 139643, - "end": 139649, + "start": 140157, + "end": 140163, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 32 }, "end": { - "line": 3424, + "line": 3432, "column": 38 }, "identifierName": "culled" @@ -142628,15 +143689,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 139654, - "end": 139659, + "start": 140168, + "end": 140173, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 43 }, "end": { - "line": 3424, + "line": 3432, "column": 48 } }, @@ -142646,59 +143707,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 139661, - "end": 139721, + "start": 140175, + "end": 140235, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 50 }, "end": { - "line": 3426, + "line": 3434, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 139675, - "end": 139711, + "start": 140189, + "end": 140225, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 12 }, "end": { - "line": 3425, + "line": 3433, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 139675, - "end": 139710, + "start": 140189, + "end": 140224, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 12 }, "end": { - "line": 3425, + "line": 3433, "column": 47 } }, "operator": "=", "left": { "type": "Identifier", - "start": 139675, - "end": 139680, + "start": 140189, + "end": 140194, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 12 }, "end": { - "line": 3425, + "line": 3433, "column": 17 }, "identifierName": "flags" @@ -142707,29 +143768,29 @@ }, "right": { "type": "BinaryExpression", - "start": 139683, - "end": 139710, + "start": 140197, + "end": 140224, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 20 }, "end": { - "line": 3425, + "line": 3433, "column": 47 } }, "left": { "type": "Identifier", - "start": 139683, - "end": 139688, + "start": 140197, + "end": 140202, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 20 }, "end": { - "line": 3425, + "line": 3433, "column": 25 }, "identifierName": "flags" @@ -142739,29 +143800,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 139691, - "end": 139710, + "start": 140205, + "end": 140224, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 28 }, "end": { - "line": 3425, + "line": 3433, "column": 47 } }, "object": { "type": "Identifier", - "start": 139691, - "end": 139703, + "start": 140205, + "end": 140217, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 28 }, "end": { - "line": 3425, + "line": 3433, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -142770,15 +143831,15 @@ }, "property": { "type": "Identifier", - "start": 139704, - "end": 139710, + "start": 140218, + "end": 140224, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 41 }, "end": { - "line": 3425, + "line": 3433, "column": 47 }, "identifierName": "CULLED" @@ -142797,72 +143858,72 @@ }, { "type": "IfStatement", - "start": 139730, - "end": 139841, + "start": 140244, + "end": 140355, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 8 }, "end": { - "line": 3429, + "line": 3437, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 139734, - "end": 139776, + "start": 140248, + "end": 140290, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 12 }, "end": { - "line": 3427, + "line": 3435, "column": 54 } }, "left": { "type": "MemberExpression", - "start": 139734, - "end": 139749, + "start": 140248, + "end": 140263, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 12 }, "end": { - "line": 3427, + "line": 3435, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 139734, - "end": 139738, + "start": 140248, + "end": 140252, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 12 }, "end": { - "line": 3427, + "line": 3435, "column": 16 } } }, "property": { "type": "Identifier", - "start": 139739, - "end": 139749, + "start": 140253, + "end": 140263, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 17 }, "end": { - "line": 3427, + "line": 3435, "column": 27 }, "identifierName": "_clippable" @@ -142874,43 +143935,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 139753, - "end": 139776, + "start": 140267, + "end": 140290, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 31 }, "end": { - "line": 3427, + "line": 3435, "column": 54 } }, "left": { "type": "MemberExpression", - "start": 139753, - "end": 139766, + "start": 140267, + "end": 140280, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 31 }, "end": { - "line": 3427, + "line": 3435, "column": 44 } }, "object": { "type": "Identifier", - "start": 139753, - "end": 139756, + "start": 140267, + "end": 140270, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 31 }, "end": { - "line": 3427, + "line": 3435, "column": 34 }, "identifierName": "cfg" @@ -142919,15 +143980,15 @@ }, "property": { "type": "Identifier", - "start": 139757, - "end": 139766, + "start": 140271, + "end": 140280, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 35 }, "end": { - "line": 3427, + "line": 3435, "column": 44 }, "identifierName": "clippable" @@ -142939,15 +144000,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 139771, - "end": 139776, + "start": 140285, + "end": 140290, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 49 }, "end": { - "line": 3427, + "line": 3435, "column": 54 } }, @@ -142957,59 +144018,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 139778, - "end": 139841, + "start": 140292, + "end": 140355, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 56 }, "end": { - "line": 3429, + "line": 3437, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 139792, - "end": 139831, + "start": 140306, + "end": 140345, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 12 }, "end": { - "line": 3428, + "line": 3436, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 139792, - "end": 139830, + "start": 140306, + "end": 140344, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 12 }, "end": { - "line": 3428, + "line": 3436, "column": 50 } }, "operator": "=", "left": { "type": "Identifier", - "start": 139792, - "end": 139797, + "start": 140306, + "end": 140311, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 12 }, "end": { - "line": 3428, + "line": 3436, "column": 17 }, "identifierName": "flags" @@ -143018,29 +144079,29 @@ }, "right": { "type": "BinaryExpression", - "start": 139800, - "end": 139830, + "start": 140314, + "end": 140344, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 20 }, "end": { - "line": 3428, + "line": 3436, "column": 50 } }, "left": { "type": "Identifier", - "start": 139800, - "end": 139805, + "start": 140314, + "end": 140319, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 20 }, "end": { - "line": 3428, + "line": 3436, "column": 25 }, "identifierName": "flags" @@ -143050,29 +144111,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 139808, - "end": 139830, + "start": 140322, + "end": 140344, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 28 }, "end": { - "line": 3428, + "line": 3436, "column": 50 } }, "object": { "type": "Identifier", - "start": 139808, - "end": 139820, + "start": 140322, + "end": 140334, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 28 }, "end": { - "line": 3428, + "line": 3436, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -143081,15 +144142,15 @@ }, "property": { "type": "Identifier", - "start": 139821, - "end": 139830, + "start": 140335, + "end": 140344, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 41 }, "end": { - "line": 3428, + "line": 3436, "column": 50 }, "identifierName": "CLIPPABLE" @@ -143108,72 +144169,72 @@ }, { "type": "IfStatement", - "start": 139850, - "end": 139964, + "start": 140364, + "end": 140478, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 8 }, "end": { - "line": 3432, + "line": 3440, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 139854, - "end": 139898, + "start": 140368, + "end": 140412, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 12 }, "end": { - "line": 3430, + "line": 3438, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 139854, - "end": 139870, + "start": 140368, + "end": 140384, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 12 }, "end": { - "line": 3430, + "line": 3438, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 139854, - "end": 139858, + "start": 140368, + "end": 140372, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 12 }, "end": { - "line": 3430, + "line": 3438, "column": 16 } } }, "property": { "type": "Identifier", - "start": 139859, - "end": 139870, + "start": 140373, + "end": 140384, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 17 }, "end": { - "line": 3430, + "line": 3438, "column": 28 }, "identifierName": "_collidable" @@ -143185,43 +144246,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 139874, - "end": 139898, + "start": 140388, + "end": 140412, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 32 }, "end": { - "line": 3430, + "line": 3438, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 139874, - "end": 139888, + "start": 140388, + "end": 140402, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 32 }, "end": { - "line": 3430, + "line": 3438, "column": 46 } }, "object": { "type": "Identifier", - "start": 139874, - "end": 139877, + "start": 140388, + "end": 140391, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 32 }, "end": { - "line": 3430, + "line": 3438, "column": 35 }, "identifierName": "cfg" @@ -143230,15 +144291,15 @@ }, "property": { "type": "Identifier", - "start": 139878, - "end": 139888, + "start": 140392, + "end": 140402, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 36 }, "end": { - "line": 3430, + "line": 3438, "column": 46 }, "identifierName": "collidable" @@ -143250,15 +144311,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 139893, - "end": 139898, + "start": 140407, + "end": 140412, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 51 }, "end": { - "line": 3430, + "line": 3438, "column": 56 } }, @@ -143268,59 +144329,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 139900, - "end": 139964, + "start": 140414, + "end": 140478, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 58 }, "end": { - "line": 3432, + "line": 3440, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 139914, - "end": 139954, + "start": 140428, + "end": 140468, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 12 }, "end": { - "line": 3431, + "line": 3439, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 139914, - "end": 139953, + "start": 140428, + "end": 140467, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 12 }, "end": { - "line": 3431, + "line": 3439, "column": 51 } }, "operator": "=", "left": { "type": "Identifier", - "start": 139914, - "end": 139919, + "start": 140428, + "end": 140433, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 12 }, "end": { - "line": 3431, + "line": 3439, "column": 17 }, "identifierName": "flags" @@ -143329,29 +144390,29 @@ }, "right": { "type": "BinaryExpression", - "start": 139922, - "end": 139953, + "start": 140436, + "end": 140467, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 20 }, "end": { - "line": 3431, + "line": 3439, "column": 51 } }, "left": { "type": "Identifier", - "start": 139922, - "end": 139927, + "start": 140436, + "end": 140441, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 20 }, "end": { - "line": 3431, + "line": 3439, "column": 25 }, "identifierName": "flags" @@ -143361,29 +144422,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 139930, - "end": 139953, + "start": 140444, + "end": 140467, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 28 }, "end": { - "line": 3431, + "line": 3439, "column": 51 } }, "object": { "type": "Identifier", - "start": 139930, - "end": 139942, + "start": 140444, + "end": 140456, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 28 }, "end": { - "line": 3431, + "line": 3439, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -143392,15 +144453,15 @@ }, "property": { "type": "Identifier", - "start": 139943, - "end": 139953, + "start": 140457, + "end": 140467, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 41 }, "end": { - "line": 3431, + "line": 3439, "column": 51 }, "identifierName": "COLLIDABLE" @@ -143419,72 +144480,72 @@ }, { "type": "IfStatement", - "start": 139973, - "end": 140072, + "start": 140487, + "end": 140586, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 8 }, "end": { - "line": 3435, + "line": 3443, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 139977, - "end": 140011, + "start": 140491, + "end": 140525, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 12 }, "end": { - "line": 3433, + "line": 3441, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 139977, - "end": 139988, + "start": 140491, + "end": 140502, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 12 }, "end": { - "line": 3433, + "line": 3441, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 139977, - "end": 139981, + "start": 140491, + "end": 140495, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 12 }, "end": { - "line": 3433, + "line": 3441, "column": 16 } } }, "property": { "type": "Identifier", - "start": 139982, - "end": 139988, + "start": 140496, + "end": 140502, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 17 }, "end": { - "line": 3433, + "line": 3441, "column": 23 }, "identifierName": "_edges" @@ -143496,43 +144557,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 139992, - "end": 140011, + "start": 140506, + "end": 140525, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 27 }, "end": { - "line": 3433, + "line": 3441, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 139992, - "end": 140001, + "start": 140506, + "end": 140515, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 27 }, "end": { - "line": 3433, + "line": 3441, "column": 36 } }, "object": { "type": "Identifier", - "start": 139992, - "end": 139995, + "start": 140506, + "end": 140509, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 27 }, "end": { - "line": 3433, + "line": 3441, "column": 30 }, "identifierName": "cfg" @@ -143541,15 +144602,15 @@ }, "property": { "type": "Identifier", - "start": 139996, - "end": 140001, + "start": 140510, + "end": 140515, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 31 }, "end": { - "line": 3433, + "line": 3441, "column": 36 }, "identifierName": "edges" @@ -143561,15 +144622,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 140006, - "end": 140011, + "start": 140520, + "end": 140525, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 41 }, "end": { - "line": 3433, + "line": 3441, "column": 46 } }, @@ -143579,59 +144640,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 140013, - "end": 140072, + "start": 140527, + "end": 140586, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 48 }, "end": { - "line": 3435, + "line": 3443, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 140027, - "end": 140062, + "start": 140541, + "end": 140576, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 12 }, "end": { - "line": 3434, + "line": 3442, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 140027, - "end": 140061, + "start": 140541, + "end": 140575, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 12 }, "end": { - "line": 3434, + "line": 3442, "column": 46 } }, "operator": "=", "left": { "type": "Identifier", - "start": 140027, - "end": 140032, + "start": 140541, + "end": 140546, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 12 }, "end": { - "line": 3434, + "line": 3442, "column": 17 }, "identifierName": "flags" @@ -143640,29 +144701,29 @@ }, "right": { "type": "BinaryExpression", - "start": 140035, - "end": 140061, + "start": 140549, + "end": 140575, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 20 }, "end": { - "line": 3434, + "line": 3442, "column": 46 } }, "left": { "type": "Identifier", - "start": 140035, - "end": 140040, + "start": 140549, + "end": 140554, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 20 }, "end": { - "line": 3434, + "line": 3442, "column": 25 }, "identifierName": "flags" @@ -143672,29 +144733,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 140043, - "end": 140061, + "start": 140557, + "end": 140575, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 28 }, "end": { - "line": 3434, + "line": 3442, "column": 46 } }, "object": { "type": "Identifier", - "start": 140043, - "end": 140055, + "start": 140557, + "end": 140569, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 28 }, "end": { - "line": 3434, + "line": 3442, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -143703,15 +144764,15 @@ }, "property": { "type": "Identifier", - "start": 140056, - "end": 140061, + "start": 140570, + "end": 140575, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 41 }, "end": { - "line": 3434, + "line": 3442, "column": 46 }, "identifierName": "EDGES" @@ -143730,72 +144791,72 @@ }, { "type": "IfStatement", - "start": 140081, - "end": 140183, + "start": 140595, + "end": 140697, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 8 }, "end": { - "line": 3438, + "line": 3446, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 140085, - "end": 140121, + "start": 140599, + "end": 140635, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 12 }, "end": { - "line": 3436, + "line": 3444, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 140085, - "end": 140097, + "start": 140599, + "end": 140611, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 12 }, "end": { - "line": 3436, + "line": 3444, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 140085, - "end": 140089, + "start": 140599, + "end": 140603, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 12 }, "end": { - "line": 3436, + "line": 3444, "column": 16 } } }, "property": { "type": "Identifier", - "start": 140090, - "end": 140097, + "start": 140604, + "end": 140611, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 17 }, "end": { - "line": 3436, + "line": 3444, "column": 24 }, "identifierName": "_xrayed" @@ -143807,43 +144868,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 140101, - "end": 140121, + "start": 140615, + "end": 140635, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 28 }, "end": { - "line": 3436, + "line": 3444, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 140101, - "end": 140111, + "start": 140615, + "end": 140625, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 28 }, "end": { - "line": 3436, + "line": 3444, "column": 38 } }, "object": { "type": "Identifier", - "start": 140101, - "end": 140104, + "start": 140615, + "end": 140618, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 28 }, "end": { - "line": 3436, + "line": 3444, "column": 31 }, "identifierName": "cfg" @@ -143852,15 +144913,15 @@ }, "property": { "type": "Identifier", - "start": 140105, - "end": 140111, + "start": 140619, + "end": 140625, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 32 }, "end": { - "line": 3436, + "line": 3444, "column": 38 }, "identifierName": "xrayed" @@ -143872,15 +144933,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 140116, - "end": 140121, + "start": 140630, + "end": 140635, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 43 }, "end": { - "line": 3436, + "line": 3444, "column": 48 } }, @@ -143890,59 +144951,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 140123, - "end": 140183, + "start": 140637, + "end": 140697, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 50 }, "end": { - "line": 3438, + "line": 3446, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 140137, - "end": 140173, + "start": 140651, + "end": 140687, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 12 }, "end": { - "line": 3437, + "line": 3445, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 140137, - "end": 140172, + "start": 140651, + "end": 140686, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 12 }, "end": { - "line": 3437, + "line": 3445, "column": 47 } }, "operator": "=", "left": { "type": "Identifier", - "start": 140137, - "end": 140142, + "start": 140651, + "end": 140656, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 12 }, "end": { - "line": 3437, + "line": 3445, "column": 17 }, "identifierName": "flags" @@ -143951,29 +145012,29 @@ }, "right": { "type": "BinaryExpression", - "start": 140145, - "end": 140172, + "start": 140659, + "end": 140686, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 20 }, "end": { - "line": 3437, + "line": 3445, "column": 47 } }, "left": { "type": "Identifier", - "start": 140145, - "end": 140150, + "start": 140659, + "end": 140664, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 20 }, "end": { - "line": 3437, + "line": 3445, "column": 25 }, "identifierName": "flags" @@ -143983,29 +145044,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 140153, - "end": 140172, + "start": 140667, + "end": 140686, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 28 }, "end": { - "line": 3437, + "line": 3445, "column": 47 } }, "object": { "type": "Identifier", - "start": 140153, - "end": 140165, + "start": 140667, + "end": 140679, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 28 }, "end": { - "line": 3437, + "line": 3445, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -144014,15 +145075,15 @@ }, "property": { "type": "Identifier", - "start": 140166, - "end": 140172, + "start": 140680, + "end": 140686, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 41 }, "end": { - "line": 3437, + "line": 3445, "column": 47 }, "identifierName": "XRAYED" @@ -144041,72 +145102,72 @@ }, { "type": "IfStatement", - "start": 140192, - "end": 140309, + "start": 140706, + "end": 140823, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 8 }, "end": { - "line": 3441, + "line": 3449, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 140196, - "end": 140242, + "start": 140710, + "end": 140756, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 12 }, "end": { - "line": 3439, + "line": 3447, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 140196, - "end": 140213, + "start": 140710, + "end": 140727, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 12 }, "end": { - "line": 3439, + "line": 3447, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 140196, - "end": 140200, + "start": 140710, + "end": 140714, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 12 }, "end": { - "line": 3439, + "line": 3447, "column": 16 } } }, "property": { "type": "Identifier", - "start": 140201, - "end": 140213, + "start": 140715, + "end": 140727, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 17 }, "end": { - "line": 3439, + "line": 3447, "column": 29 }, "identifierName": "_highlighted" @@ -144118,43 +145179,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 140217, - "end": 140242, + "start": 140731, + "end": 140756, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 33 }, "end": { - "line": 3439, + "line": 3447, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 140217, - "end": 140232, + "start": 140731, + "end": 140746, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 33 }, "end": { - "line": 3439, + "line": 3447, "column": 48 } }, "object": { "type": "Identifier", - "start": 140217, - "end": 140220, + "start": 140731, + "end": 140734, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 33 }, "end": { - "line": 3439, + "line": 3447, "column": 36 }, "identifierName": "cfg" @@ -144163,15 +145224,15 @@ }, "property": { "type": "Identifier", - "start": 140221, - "end": 140232, + "start": 140735, + "end": 140746, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 37 }, "end": { - "line": 3439, + "line": 3447, "column": 48 }, "identifierName": "highlighted" @@ -144183,15 +145244,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 140237, - "end": 140242, + "start": 140751, + "end": 140756, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 53 }, "end": { - "line": 3439, + "line": 3447, "column": 58 } }, @@ -144201,59 +145262,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 140244, - "end": 140309, + "start": 140758, + "end": 140823, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 60 }, "end": { - "line": 3441, + "line": 3449, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 140258, - "end": 140299, + "start": 140772, + "end": 140813, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 12 }, "end": { - "line": 3440, + "line": 3448, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 140258, - "end": 140298, + "start": 140772, + "end": 140812, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 12 }, "end": { - "line": 3440, + "line": 3448, "column": 52 } }, "operator": "=", "left": { "type": "Identifier", - "start": 140258, - "end": 140263, + "start": 140772, + "end": 140777, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 12 }, "end": { - "line": 3440, + "line": 3448, "column": 17 }, "identifierName": "flags" @@ -144262,29 +145323,29 @@ }, "right": { "type": "BinaryExpression", - "start": 140266, - "end": 140298, + "start": 140780, + "end": 140812, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 20 }, "end": { - "line": 3440, + "line": 3448, "column": 52 } }, "left": { "type": "Identifier", - "start": 140266, - "end": 140271, + "start": 140780, + "end": 140785, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 20 }, "end": { - "line": 3440, + "line": 3448, "column": 25 }, "identifierName": "flags" @@ -144294,29 +145355,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 140274, - "end": 140298, + "start": 140788, + "end": 140812, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 28 }, "end": { - "line": 3440, + "line": 3448, "column": 52 } }, "object": { "type": "Identifier", - "start": 140274, - "end": 140286, + "start": 140788, + "end": 140800, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 28 }, "end": { - "line": 3440, + "line": 3448, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -144325,15 +145386,15 @@ }, "property": { "type": "Identifier", - "start": 140287, - "end": 140298, + "start": 140801, + "end": 140812, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 41 }, "end": { - "line": 3440, + "line": 3448, "column": 52 }, "identifierName": "HIGHLIGHTED" @@ -144352,72 +145413,72 @@ }, { "type": "IfStatement", - "start": 140318, - "end": 140426, + "start": 140832, + "end": 140940, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 8 }, "end": { - "line": 3444, + "line": 3452, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 140322, - "end": 140362, + "start": 140836, + "end": 140876, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 12 }, "end": { - "line": 3442, + "line": 3450, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 140322, - "end": 140336, + "start": 140836, + "end": 140850, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 12 }, "end": { - "line": 3442, + "line": 3450, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 140322, - "end": 140326, + "start": 140836, + "end": 140840, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 12 }, "end": { - "line": 3442, + "line": 3450, "column": 16 } } }, "property": { "type": "Identifier", - "start": 140327, - "end": 140336, + "start": 140841, + "end": 140850, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 17 }, "end": { - "line": 3442, + "line": 3450, "column": 26 }, "identifierName": "_selected" @@ -144429,43 +145490,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 140340, - "end": 140362, + "start": 140854, + "end": 140876, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 30 }, "end": { - "line": 3442, + "line": 3450, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 140340, - "end": 140352, + "start": 140854, + "end": 140866, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 30 }, "end": { - "line": 3442, + "line": 3450, "column": 42 } }, "object": { "type": "Identifier", - "start": 140340, - "end": 140343, + "start": 140854, + "end": 140857, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 30 }, "end": { - "line": 3442, + "line": 3450, "column": 33 }, "identifierName": "cfg" @@ -144474,15 +145535,15 @@ }, "property": { "type": "Identifier", - "start": 140344, - "end": 140352, + "start": 140858, + "end": 140866, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 34 }, "end": { - "line": 3442, + "line": 3450, "column": 42 }, "identifierName": "selected" @@ -144494,15 +145555,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 140357, - "end": 140362, + "start": 140871, + "end": 140876, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 47 }, "end": { - "line": 3442, + "line": 3450, "column": 52 } }, @@ -144512,59 +145573,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 140364, - "end": 140426, + "start": 140878, + "end": 140940, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 54 }, "end": { - "line": 3444, + "line": 3452, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 140378, - "end": 140416, + "start": 140892, + "end": 140930, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 12 }, "end": { - "line": 3443, + "line": 3451, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 140378, - "end": 140415, + "start": 140892, + "end": 140929, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 12 }, "end": { - "line": 3443, + "line": 3451, "column": 49 } }, "operator": "=", "left": { "type": "Identifier", - "start": 140378, - "end": 140383, + "start": 140892, + "end": 140897, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 12 }, "end": { - "line": 3443, + "line": 3451, "column": 17 }, "identifierName": "flags" @@ -144573,29 +145634,29 @@ }, "right": { "type": "BinaryExpression", - "start": 140386, - "end": 140415, + "start": 140900, + "end": 140929, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 20 }, "end": { - "line": 3443, + "line": 3451, "column": 49 } }, "left": { "type": "Identifier", - "start": 140386, - "end": 140391, + "start": 140900, + "end": 140905, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 20 }, "end": { - "line": 3443, + "line": 3451, "column": 25 }, "identifierName": "flags" @@ -144605,29 +145666,29 @@ "operator": "|", "right": { "type": "MemberExpression", - "start": 140394, - "end": 140415, + "start": 140908, + "end": 140929, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 28 }, "end": { - "line": 3443, + "line": 3451, "column": 49 } }, "object": { "type": "Identifier", - "start": 140394, - "end": 140406, + "start": 140908, + "end": 140920, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 28 }, "end": { - "line": 3443, + "line": 3451, "column": 40 }, "identifierName": "ENTITY_FLAGS" @@ -144636,15 +145697,15 @@ }, "property": { "type": "Identifier", - "start": 140407, - "end": 140415, + "start": 140921, + "end": 140929, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 41 }, "end": { - "line": 3443, + "line": 3451, "column": 49 }, "identifierName": "SELECTED" @@ -144663,58 +145724,58 @@ }, { "type": "ExpressionStatement", - "start": 140435, - "end": 140453, + "start": 140949, + "end": 140967, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 8 }, "end": { - "line": 3445, + "line": 3453, "column": 26 } }, "expression": { "type": "AssignmentExpression", - "start": 140435, - "end": 140452, + "start": 140949, + "end": 140966, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 8 }, "end": { - "line": 3445, + "line": 3453, "column": 25 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 140435, - "end": 140444, + "start": 140949, + "end": 140958, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 8 }, "end": { - "line": 3445, + "line": 3453, "column": 17 } }, "object": { "type": "Identifier", - "start": 140435, - "end": 140438, + "start": 140949, + "end": 140952, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 8 }, "end": { - "line": 3445, + "line": 3453, "column": 11 }, "identifierName": "cfg" @@ -144723,15 +145784,15 @@ }, "property": { "type": "Identifier", - "start": 140439, - "end": 140444, + "start": 140953, + "end": 140958, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 12 }, "end": { - "line": 3445, + "line": 3453, "column": 17 }, "identifierName": "flags" @@ -144742,15 +145803,15 @@ }, "right": { "type": "Identifier", - "start": 140447, - "end": 140452, + "start": 140961, + "end": 140966, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 20 }, "end": { - "line": 3445, + "line": 3453, "column": 25 }, "identifierName": "flags" @@ -144761,72 +145822,72 @@ }, { "type": "ExpressionStatement", - "start": 140462, - "end": 140486, + "start": 140976, + "end": 141000, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 8 }, "end": { - "line": 3446, + "line": 3454, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 140462, - "end": 140485, + "start": 140976, + "end": 140999, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 8 }, "end": { - "line": 3446, + "line": 3454, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 140462, - "end": 140480, + "start": 140976, + "end": 140994, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 8 }, "end": { - "line": 3446, + "line": 3454, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 140462, - "end": 140466, + "start": 140976, + "end": 140980, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 8 }, "end": { - "line": 3446, + "line": 3454, "column": 12 } } }, "property": { "type": "Identifier", - "start": 140467, - "end": 140480, + "start": 140981, + "end": 140994, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 13 }, "end": { - "line": 3446, + "line": 3454, "column": 26 }, "identifierName": "_createEntity" @@ -144838,15 +145899,15 @@ "arguments": [ { "type": "Identifier", - "start": 140481, - "end": 140484, + "start": 140995, + "end": 140998, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 27 }, "end": { - "line": 3446, + "line": 3454, "column": 30 }, "identifierName": "cfg" @@ -144863,15 +145924,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a {@link SceneModelEntity} within this SceneModel.\n *\n * * Gives the SceneModelEntity one or more {@link SceneModelMesh}es previously created with\n * {@link SceneModel#createMesh}. A SceneModelMesh can only belong to one SceneModelEntity, so you'll get an\n * error if you try to reuse a mesh among multiple SceneModelEntitys.\n * * The SceneModelEntity can have a {@link SceneModelTextureSet}, previously created with\n * {@link SceneModel#createTextureSet}. A SceneModelTextureSet can belong to multiple SceneModelEntitys.\n * * The SceneModelEntity can have a geometry, previously created with\n * {@link SceneModel#createTextureSet}. A geometry is a \"virtual component\" and can belong to multiple SceneModelEntitys.\n *\n * @param {Object} cfg SceneModelEntity configuration.\n * @param {String} cfg.id Optional ID for the new SceneModelEntity. Must not clash with any existing components within the {@link Scene}.\n * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link SceneModel@createMesh}.\n * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link SceneModelEntity} represents an object, in which case it will be registered by {@link SceneModelEntity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModelEntity is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModelEntity is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModelEntity is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModelEntity is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModelEntity is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the SceneModelEntity initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the SceneModelEntity initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModelEntity is initially xrayed. XRayed appearance is configured by {@link SceneModel#xrayMaterial}.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModelEntity is initially highlighted. Highlighted appearance is configured by {@link SceneModel#highlightMaterial}.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModelEntity is initially selected. Selected appearance is configured by {@link SceneModel#selectedMaterial}.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModelEntity's edges are initially emphasized. Edges appearance is configured by {@link SceneModel#edgeMaterial}.\n * @returns {SceneModelEntity} The new SceneModelEntity.\n ", - "start": 135956, - "end": 138927, + "start": 136470, + "end": 139441, "loc": { "start": { - "line": 3378, + "line": 3386, "column": 4 }, "end": { - "line": 3405, + "line": 3413, "column": 7 } } @@ -144880,15 +145941,15 @@ }, { "type": "ClassMethod", - "start": 140498, - "end": 141654, + "start": 141012, + "end": 142168, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 4 }, "end": { - "line": 3476, + "line": 3484, "column": 5 } }, @@ -144896,15 +145957,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 140498, - "end": 140511, + "start": 141012, + "end": 141025, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 4 }, "end": { - "line": 3449, + "line": 3457, "column": 17 }, "identifierName": "_createEntity" @@ -144919,15 +145980,15 @@ "params": [ { "type": "Identifier", - "start": 140512, - "end": 140515, + "start": 141026, + "end": 141029, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 18 }, "end": { - "line": 3449, + "line": 3457, "column": 21 }, "identifierName": "cfg" @@ -144937,59 +145998,59 @@ ], "body": { "type": "BlockStatement", - "start": 140517, - "end": 141654, + "start": 141031, + "end": 142168, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 23 }, "end": { - "line": 3476, + "line": 3484, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 140527, - "end": 140543, + "start": 141041, + "end": 141057, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 8 }, "end": { - "line": 3450, + "line": 3458, "column": 24 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 140531, - "end": 140542, + "start": 141045, + "end": 141056, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 12 }, "end": { - "line": 3450, + "line": 3458, "column": 23 } }, "id": { "type": "Identifier", - "start": 140531, - "end": 140537, + "start": 141045, + "end": 141051, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 12 }, "end": { - "line": 3450, + "line": 3458, "column": 18 }, "identifierName": "meshes" @@ -144998,15 +146059,15 @@ }, "init": { "type": "ArrayExpression", - "start": 140540, - "end": 140542, + "start": 141054, + "end": 141056, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 21 }, "end": { - "line": 3450, + "line": 3458, "column": 23 } }, @@ -145018,58 +146079,58 @@ }, { "type": "ForStatement", - "start": 140552, - "end": 141266, + "start": 141066, + "end": 141780, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 8 }, "end": { - "line": 3464, + "line": 3472, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 140557, - "end": 140592, + "start": 141071, + "end": 141106, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 13 }, "end": { - "line": 3451, + "line": 3459, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 140561, - "end": 140566, + "start": 141075, + "end": 141080, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 17 }, "end": { - "line": 3451, + "line": 3459, "column": 22 } }, "id": { "type": "Identifier", - "start": 140561, - "end": 140562, + "start": 141075, + "end": 141076, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 17 }, "end": { - "line": 3451, + "line": 3459, "column": 18 }, "identifierName": "i" @@ -145078,15 +146139,15 @@ }, "init": { "type": "NumericLiteral", - "start": 140565, - "end": 140566, + "start": 141079, + "end": 141080, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 21 }, "end": { - "line": 3451, + "line": 3459, "column": 22 } }, @@ -145099,29 +146160,29 @@ }, { "type": "VariableDeclarator", - "start": 140568, - "end": 140592, + "start": 141082, + "end": 141106, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 24 }, "end": { - "line": 3451, + "line": 3459, "column": 48 } }, "id": { "type": "Identifier", - "start": 140568, - "end": 140571, + "start": 141082, + "end": 141085, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 24 }, "end": { - "line": 3451, + "line": 3459, "column": 27 }, "identifierName": "len" @@ -145130,43 +146191,43 @@ }, "init": { "type": "MemberExpression", - "start": 140574, - "end": 140592, + "start": 141088, + "end": 141106, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 30 }, "end": { - "line": 3451, + "line": 3459, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 140574, - "end": 140585, + "start": 141088, + "end": 141099, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 30 }, "end": { - "line": 3451, + "line": 3459, "column": 41 } }, "object": { "type": "Identifier", - "start": 140574, - "end": 140577, + "start": 141088, + "end": 141091, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 30 }, "end": { - "line": 3451, + "line": 3459, "column": 33 }, "identifierName": "cfg" @@ -145175,15 +146236,15 @@ }, "property": { "type": "Identifier", - "start": 140578, - "end": 140585, + "start": 141092, + "end": 141099, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 34 }, "end": { - "line": 3451, + "line": 3459, "column": 41 }, "identifierName": "meshIds" @@ -145194,15 +146255,15 @@ }, "property": { "type": "Identifier", - "start": 140586, - "end": 140592, + "start": 141100, + "end": 141106, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 42 }, "end": { - "line": 3451, + "line": 3459, "column": 48 }, "identifierName": "length" @@ -145217,29 +146278,29 @@ }, "test": { "type": "BinaryExpression", - "start": 140594, - "end": 140601, + "start": 141108, + "end": 141115, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 50 }, "end": { - "line": 3451, + "line": 3459, "column": 57 } }, "left": { "type": "Identifier", - "start": 140594, - "end": 140595, + "start": 141108, + "end": 141109, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 50 }, "end": { - "line": 3451, + "line": 3459, "column": 51 }, "identifierName": "i" @@ -145249,15 +146310,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 140598, - "end": 140601, + "start": 141112, + "end": 141115, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 54 }, "end": { - "line": 3451, + "line": 3459, "column": 57 }, "identifierName": "len" @@ -145267,15 +146328,15 @@ }, "update": { "type": "UpdateExpression", - "start": 140603, - "end": 140606, + "start": 141117, + "end": 141120, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 59 }, "end": { - "line": 3451, + "line": 3459, "column": 62 } }, @@ -145283,15 +146344,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 140603, - "end": 140604, + "start": 141117, + "end": 141118, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 59 }, "end": { - "line": 3451, + "line": 3459, "column": 60 }, "identifierName": "i" @@ -145301,59 +146362,59 @@ }, "body": { "type": "BlockStatement", - "start": 140608, - "end": 141266, + "start": 141122, + "end": 141780, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 64 }, "end": { - "line": 3464, + "line": 3472, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 140622, - "end": 140652, + "start": 141136, + "end": 141166, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 12 }, "end": { - "line": 3452, + "line": 3460, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 140628, - "end": 140651, + "start": 141142, + "end": 141165, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 18 }, "end": { - "line": 3452, + "line": 3460, "column": 41 } }, "id": { "type": "Identifier", - "start": 140628, - "end": 140634, + "start": 141142, + "end": 141148, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 18 }, "end": { - "line": 3452, + "line": 3460, "column": 24 }, "identifierName": "meshId" @@ -145362,43 +146423,43 @@ }, "init": { "type": "MemberExpression", - "start": 140637, - "end": 140651, + "start": 141151, + "end": 141165, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 27 }, "end": { - "line": 3452, + "line": 3460, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 140637, - "end": 140648, + "start": 141151, + "end": 141162, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 27 }, "end": { - "line": 3452, + "line": 3460, "column": 38 } }, "object": { "type": "Identifier", - "start": 140637, - "end": 140640, + "start": 141151, + "end": 141154, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 27 }, "end": { - "line": 3452, + "line": 3460, "column": 30 }, "identifierName": "cfg" @@ -145407,15 +146468,15 @@ }, "property": { "type": "Identifier", - "start": 140641, - "end": 140648, + "start": 141155, + "end": 141162, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 31 }, "end": { - "line": 3452, + "line": 3460, "column": 38 }, "identifierName": "meshIds" @@ -145426,15 +146487,15 @@ }, "property": { "type": "Identifier", - "start": 140649, - "end": 140650, + "start": 141163, + "end": 141164, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 39 }, "end": { - "line": 3452, + "line": 3460, "column": 40 }, "identifierName": "i" @@ -145449,44 +146510,44 @@ }, { "type": "VariableDeclaration", - "start": 140665, - "end": 140697, + "start": 141179, + "end": 141211, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 12 }, "end": { - "line": 3453, + "line": 3461, "column": 44 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 140669, - "end": 140696, + "start": 141183, + "end": 141210, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 16 }, "end": { - "line": 3453, + "line": 3461, "column": 43 } }, "id": { "type": "Identifier", - "start": 140669, - "end": 140673, + "start": 141183, + "end": 141187, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 16 }, "end": { - "line": 3453, + "line": 3461, "column": 20 }, "identifierName": "mesh" @@ -145495,58 +146556,58 @@ }, "init": { "type": "MemberExpression", - "start": 140676, - "end": 140696, + "start": 141190, + "end": 141210, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 23 }, "end": { - "line": 3453, + "line": 3461, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 140676, - "end": 140688, + "start": 141190, + "end": 141202, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 23 }, "end": { - "line": 3453, + "line": 3461, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 140676, - "end": 140680, + "start": 141190, + "end": 141194, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 23 }, "end": { - "line": 3453, + "line": 3461, "column": 27 } } }, "property": { "type": "Identifier", - "start": 140681, - "end": 140688, + "start": 141195, + "end": 141202, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 28 }, "end": { - "line": 3453, + "line": 3461, "column": 35 }, "identifierName": "_meshes" @@ -145557,15 +146618,15 @@ }, "property": { "type": "Identifier", - "start": 140689, - "end": 140695, + "start": 141203, + "end": 141209, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 36 }, "end": { - "line": 3453, + "line": 3461, "column": 42 }, "identifierName": "meshId" @@ -145581,15 +146642,15 @@ { "type": "CommentLine", "value": " Trying to get already created mesh", - "start": 140698, - "end": 140735, + "start": 141212, + "end": 141249, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 45 }, "end": { - "line": 3453, + "line": 3461, "column": 82 } } @@ -145598,29 +146659,29 @@ }, { "type": "IfStatement", - "start": 140748, - "end": 140976, + "start": 141262, + "end": 141490, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 12 }, "end": { - "line": 3457, + "line": 3465, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 140752, - "end": 140757, + "start": 141266, + "end": 141271, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 16 }, "end": { - "line": 3454, + "line": 3462, "column": 21 } }, @@ -145628,15 +146689,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 140753, - "end": 140757, + "start": 141267, + "end": 141271, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 17 }, "end": { - "line": 3454, + "line": 3462, "column": 21 }, "identifierName": "mesh" @@ -145651,72 +146712,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 140759, - "end": 140976, + "start": 141273, + "end": 141490, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 23 }, "end": { - "line": 3457, + "line": 3465, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 140836, - "end": 140912, + "start": 141350, + "end": 141426, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 16 }, "end": { - "line": 3455, + "line": 3463, "column": 92 } }, "expression": { "type": "CallExpression", - "start": 140836, - "end": 140911, + "start": 141350, + "end": 141425, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 16 }, "end": { - "line": 3455, + "line": 3463, "column": 91 } }, "callee": { "type": "MemberExpression", - "start": 140836, - "end": 140846, + "start": 141350, + "end": 141360, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 16 }, "end": { - "line": 3455, + "line": 3463, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 140836, - "end": 140840, + "start": 141350, + "end": 141354, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 16 }, "end": { - "line": 3455, + "line": 3463, "column": 20 } }, @@ -145724,15 +146785,15 @@ }, "property": { "type": "Identifier", - "start": 140841, - "end": 140846, + "start": 141355, + "end": 141360, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 21 }, "end": { - "line": 3455, + "line": 3463, "column": 26 }, "identifierName": "error" @@ -145745,30 +146806,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 140847, - "end": 140910, + "start": 141361, + "end": 141424, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 27 }, "end": { - "line": 3455, + "line": 3463, "column": 90 } }, "expressions": [ { "type": "Identifier", - "start": 140880, - "end": 140886, + "start": 141394, + "end": 141400, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 60 }, "end": { - "line": 3455, + "line": 3463, "column": 66 }, "identifierName": "meshId" @@ -145779,15 +146840,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 140848, - "end": 140878, + "start": 141362, + "end": 141392, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 28 }, "end": { - "line": 3455, + "line": 3463, "column": 58 } }, @@ -145799,15 +146860,15 @@ }, { "type": "TemplateElement", - "start": 140887, - "end": 140909, + "start": 141401, + "end": 141423, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 67 }, "end": { - "line": 3455, + "line": 3463, "column": 89 } }, @@ -145826,15 +146887,15 @@ { "type": "CommentLine", "value": " Checks if there is already created mesh for this meshId", - "start": 140761, - "end": 140819, + "start": 141275, + "end": 141333, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 25 }, "end": { - "line": 3454, + "line": 3462, "column": 83 } } @@ -145844,15 +146905,15 @@ { "type": "CommentLine", "value": " There is no such cfg", - "start": 140913, - "end": 140936, + "start": 141427, + "end": 141450, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 93 }, "end": { - "line": 3455, + "line": 3463, "column": 116 } } @@ -145861,15 +146922,15 @@ }, { "type": "ContinueStatement", - "start": 140953, - "end": 140962, + "start": 141467, + "end": 141476, "loc": { "start": { - "line": 3456, + "line": 3464, "column": 16 }, "end": { - "line": 3456, + "line": 3464, "column": 25 } }, @@ -145878,15 +146939,15 @@ { "type": "CommentLine", "value": " There is no such cfg", - "start": 140913, - "end": 140936, + "start": 141427, + "end": 141450, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 93 }, "end": { - "line": 3455, + "line": 3463, "column": 116 } } @@ -145901,15 +146962,15 @@ { "type": "CommentLine", "value": " Trying to get already created mesh", - "start": 140698, - "end": 140735, + "start": 141212, + "end": 141249, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 45 }, "end": { - "line": 3453, + "line": 3461, "column": 82 } } @@ -145918,43 +146979,43 @@ }, { "type": "IfStatement", - "start": 140989, - "end": 141178, + "start": 141503, + "end": 141692, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 12 }, "end": { - "line": 3461, + "line": 3469, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 140993, - "end": 141004, + "start": 141507, + "end": 141518, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 16 }, "end": { - "line": 3458, + "line": 3466, "column": 27 } }, "object": { "type": "Identifier", - "start": 140993, - "end": 140997, + "start": 141507, + "end": 141511, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 16 }, "end": { - "line": 3458, + "line": 3466, "column": 20 }, "identifierName": "mesh" @@ -145963,15 +147024,15 @@ }, "property": { "type": "Identifier", - "start": 140998, - "end": 141004, + "start": 141512, + "end": 141518, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 21 }, "end": { - "line": 3458, + "line": 3466, "column": 27 }, "identifierName": "parent" @@ -145982,87 +147043,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 141006, - "end": 141178, + "start": 141520, + "end": 141692, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 29 }, "end": { - "line": 3461, + "line": 3469, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 141024, - "end": 141138, + "start": 141538, + "end": 141652, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 16 }, "end": { - "line": 3459, + "line": 3467, "column": 130 } }, "expression": { "type": "CallExpression", - "start": 141024, - "end": 141137, + "start": 141538, + "end": 141651, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 16 }, "end": { - "line": 3459, + "line": 3467, "column": 129 } }, "callee": { "type": "MemberExpression", - "start": 141024, - "end": 141034, + "start": 141538, + "end": 141548, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 16 }, "end": { - "line": 3459, + "line": 3467, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 141024, - "end": 141028, + "start": 141538, + "end": 141542, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 16 }, "end": { - "line": 3459, + "line": 3467, "column": 20 } } }, "property": { "type": "Identifier", - "start": 141029, - "end": 141034, + "start": 141543, + "end": 141548, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 21 }, "end": { - "line": 3459, + "line": 3467, "column": 26 }, "identifierName": "error" @@ -146074,30 +147135,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 141035, - "end": 141136, + "start": 141549, + "end": 141650, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 27 }, "end": { - "line": 3459, + "line": 3467, "column": 128 } }, "expressions": [ { "type": "Identifier", - "start": 141052, - "end": 141058, + "start": 141566, + "end": 141572, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 44 }, "end": { - "line": 3459, + "line": 3467, "column": 50 }, "identifierName": "meshId" @@ -146106,43 +147167,43 @@ }, { "type": "MemberExpression", - "start": 141098, - "end": 141112, + "start": 141612, + "end": 141626, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 90 }, "end": { - "line": 3459, + "line": 3467, "column": 104 } }, "object": { "type": "MemberExpression", - "start": 141098, - "end": 141109, + "start": 141612, + "end": 141623, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 90 }, "end": { - "line": 3459, + "line": 3467, "column": 101 } }, "object": { "type": "Identifier", - "start": 141098, - "end": 141102, + "start": 141612, + "end": 141616, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 90 }, "end": { - "line": 3459, + "line": 3467, "column": 94 }, "identifierName": "mesh" @@ -146151,15 +147212,15 @@ }, "property": { "type": "Identifier", - "start": 141103, - "end": 141109, + "start": 141617, + "end": 141623, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 95 }, "end": { - "line": 3459, + "line": 3467, "column": 101 }, "identifierName": "parent" @@ -146170,15 +147231,15 @@ }, "property": { "type": "Identifier", - "start": 141110, - "end": 141112, + "start": 141624, + "end": 141626, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 102 }, "end": { - "line": 3459, + "line": 3467, "column": 104 }, "identifierName": "id" @@ -146191,15 +147252,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 141036, - "end": 141050, + "start": 141550, + "end": 141564, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 28 }, "end": { - "line": 3459, + "line": 3467, "column": 42 } }, @@ -146211,15 +147272,15 @@ }, { "type": "TemplateElement", - "start": 141059, - "end": 141096, + "start": 141573, + "end": 141610, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 51 }, "end": { - "line": 3459, + "line": 3467, "column": 88 } }, @@ -146231,15 +147292,15 @@ }, { "type": "TemplateElement", - "start": 141113, - "end": 141135, + "start": 141627, + "end": 141649, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 105 }, "end": { - "line": 3459, + "line": 3467, "column": 127 } }, @@ -146256,15 +147317,15 @@ }, { "type": "ContinueStatement", - "start": 141155, - "end": 141164, + "start": 141669, + "end": 141678, "loc": { "start": { - "line": 3460, + "line": 3468, "column": 16 }, "end": { - "line": 3460, + "line": 3468, "column": 25 } }, @@ -146277,57 +147338,57 @@ }, { "type": "ExpressionStatement", - "start": 141191, - "end": 141209, + "start": 141705, + "end": 141723, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 12 }, "end": { - "line": 3462, + "line": 3470, "column": 30 } }, "expression": { "type": "CallExpression", - "start": 141191, - "end": 141208, + "start": 141705, + "end": 141722, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 12 }, "end": { - "line": 3462, + "line": 3470, "column": 29 } }, "callee": { "type": "MemberExpression", - "start": 141191, - "end": 141202, + "start": 141705, + "end": 141716, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 12 }, "end": { - "line": 3462, + "line": 3470, "column": 23 } }, "object": { "type": "Identifier", - "start": 141191, - "end": 141197, + "start": 141705, + "end": 141711, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 12 }, "end": { - "line": 3462, + "line": 3470, "column": 18 }, "identifierName": "meshes" @@ -146336,15 +147397,15 @@ }, "property": { "type": "Identifier", - "start": 141198, - "end": 141202, + "start": 141712, + "end": 141716, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 19 }, "end": { - "line": 3462, + "line": 3470, "column": 23 }, "identifierName": "push" @@ -146356,15 +147417,15 @@ "arguments": [ { "type": "Identifier", - "start": 141203, - "end": 141207, + "start": 141717, + "end": 141721, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 24 }, "end": { - "line": 3462, + "line": 3470, "column": 28 }, "identifierName": "mesh" @@ -146376,29 +147437,29 @@ }, { "type": "ExpressionStatement", - "start": 141222, - "end": 141256, + "start": 141736, + "end": 141770, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 12 }, "end": { - "line": 3463, + "line": 3471, "column": 46 } }, "expression": { "type": "UnaryExpression", - "start": 141222, - "end": 141255, + "start": 141736, + "end": 141769, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 12 }, "end": { - "line": 3463, + "line": 3471, "column": 45 } }, @@ -146406,58 +147467,58 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 141229, - "end": 141255, + "start": 141743, + "end": 141769, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 19 }, "end": { - "line": 3463, + "line": 3471, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 141229, - "end": 141247, + "start": 141743, + "end": 141761, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 19 }, "end": { - "line": 3463, + "line": 3471, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 141229, - "end": 141233, + "start": 141743, + "end": 141747, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 19 }, "end": { - "line": 3463, + "line": 3471, "column": 23 } } }, "property": { "type": "Identifier", - "start": 141234, - "end": 141247, + "start": 141748, + "end": 141761, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 24 }, "end": { - "line": 3463, + "line": 3471, "column": 37 }, "identifierName": "_unusedMeshes" @@ -146468,15 +147529,15 @@ }, "property": { "type": "Identifier", - "start": 141248, - "end": 141254, + "start": 141762, + "end": 141768, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 38 }, "end": { - "line": 3463, + "line": 3471, "column": 44 }, "identifierName": "meshId" @@ -146496,44 +147557,44 @@ }, { "type": "VariableDeclaration", - "start": 141275, - "end": 141300, + "start": 141789, + "end": 141814, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 8 }, "end": { - "line": 3465, + "line": 3473, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 141281, - "end": 141299, + "start": 141795, + "end": 141813, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 14 }, "end": { - "line": 3465, + "line": 3473, "column": 32 } }, "id": { "type": "Identifier", - "start": 141281, - "end": 141292, + "start": 141795, + "end": 141806, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 14 }, "end": { - "line": 3465, + "line": 3473, "column": 25 }, "identifierName": "lodCullable" @@ -146542,15 +147603,15 @@ }, "init": { "type": "BooleanLiteral", - "start": 141295, - "end": 141299, + "start": 141809, + "end": 141813, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 28 }, "end": { - "line": 3465, + "line": 3473, "column": 32 } }, @@ -146562,44 +147623,44 @@ }, { "type": "VariableDeclaration", - "start": 141309, - "end": 141478, + "start": 141823, + "end": 141992, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 8 }, "end": { - "line": 3472, + "line": 3480, "column": 25 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 141315, - "end": 141477, + "start": 141829, + "end": 141991, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 14 }, "end": { - "line": 3472, + "line": 3480, "column": 24 } }, "id": { "type": "Identifier", - "start": 141315, - "end": 141321, + "start": 141829, + "end": 141835, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 14 }, "end": { - "line": 3466, + "line": 3474, "column": 20 }, "identifierName": "entity" @@ -146608,29 +147669,29 @@ }, "init": { "type": "NewExpression", - "start": 141324, - "end": 141477, + "start": 141838, + "end": 141991, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 23 }, "end": { - "line": 3472, + "line": 3480, "column": 24 } }, "callee": { "type": "Identifier", - "start": 141328, - "end": 141344, + "start": 141842, + "end": 141858, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 27 }, "end": { - "line": 3466, + "line": 3474, "column": 43 }, "identifierName": "SceneModelEntity" @@ -146640,44 +147701,44 @@ "arguments": [ { "type": "ThisExpression", - "start": 141358, - "end": 141362, + "start": 141872, + "end": 141876, "loc": { "start": { - "line": 3467, + "line": 3475, "column": 12 }, "end": { - "line": 3467, + "line": 3475, "column": 16 } } }, { "type": "MemberExpression", - "start": 141376, - "end": 141388, + "start": 141890, + "end": 141902, "loc": { "start": { - "line": 3468, + "line": 3476, "column": 12 }, "end": { - "line": 3468, + "line": 3476, "column": 24 } }, "object": { "type": "Identifier", - "start": 141376, - "end": 141379, + "start": 141890, + "end": 141893, "loc": { "start": { - "line": 3468, + "line": 3476, "column": 12 }, "end": { - "line": 3468, + "line": 3476, "column": 15 }, "identifierName": "cfg" @@ -146686,15 +147747,15 @@ }, "property": { "type": "Identifier", - "start": 141380, - "end": 141388, + "start": 141894, + "end": 141902, "loc": { "start": { - "line": 3468, + "line": 3476, "column": 16 }, "end": { - "line": 3468, + "line": 3476, "column": 24 }, "identifierName": "isObject" @@ -146705,29 +147766,29 @@ }, { "type": "MemberExpression", - "start": 141402, - "end": 141408, + "start": 141916, + "end": 141922, "loc": { "start": { - "line": 3469, + "line": 3477, "column": 12 }, "end": { - "line": 3469, + "line": 3477, "column": 18 } }, "object": { "type": "Identifier", - "start": 141402, - "end": 141405, + "start": 141916, + "end": 141919, "loc": { "start": { - "line": 3469, + "line": 3477, "column": 12 }, "end": { - "line": 3469, + "line": 3477, "column": 15 }, "identifierName": "cfg" @@ -146736,15 +147797,15 @@ }, "property": { "type": "Identifier", - "start": 141406, - "end": 141408, + "start": 141920, + "end": 141922, "loc": { "start": { - "line": 3469, + "line": 3477, "column": 16 }, "end": { - "line": 3469, + "line": 3477, "column": 18 }, "identifierName": "id" @@ -146755,15 +147816,15 @@ }, { "type": "Identifier", - "start": 141422, - "end": 141428, + "start": 141936, + "end": 141942, "loc": { "start": { - "line": 3470, + "line": 3478, "column": 12 }, "end": { - "line": 3470, + "line": 3478, "column": 18 }, "identifierName": "meshes" @@ -146772,29 +147833,29 @@ }, { "type": "MemberExpression", - "start": 141442, - "end": 141451, + "start": 141956, + "end": 141965, "loc": { "start": { - "line": 3471, + "line": 3479, "column": 12 }, "end": { - "line": 3471, + "line": 3479, "column": 21 } }, "object": { "type": "Identifier", - "start": 141442, - "end": 141445, + "start": 141956, + "end": 141959, "loc": { "start": { - "line": 3471, + "line": 3479, "column": 12 }, "end": { - "line": 3471, + "line": 3479, "column": 15 }, "identifierName": "cfg" @@ -146803,15 +147864,15 @@ }, "property": { "type": "Identifier", - "start": 141446, - "end": 141451, + "start": 141960, + "end": 141965, "loc": { "start": { - "line": 3471, + "line": 3479, "column": 16 }, "end": { - "line": 3471, + "line": 3479, "column": 21 }, "identifierName": "flags" @@ -146822,15 +147883,15 @@ }, { "type": "Identifier", - "start": 141465, - "end": 141476, + "start": 141979, + "end": 141990, "loc": { "start": { - "line": 3472, + "line": 3480, "column": 12 }, "end": { - "line": 3472, + "line": 3480, "column": 23 }, "identifierName": "lodCullable" @@ -146846,15 +147907,15 @@ { "type": "CommentLine", "value": " Internally sets SceneModelEntity#parent to this SceneModel", - "start": 141479, - "end": 141540, + "start": 141993, + "end": 142054, "loc": { "start": { - "line": 3472, + "line": 3480, "column": 26 }, "end": { - "line": 3472, + "line": 3480, "column": 87 } } @@ -146863,71 +147924,71 @@ }, { "type": "ExpressionStatement", - "start": 141549, - "end": 141579, + "start": 142063, + "end": 142093, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 8 }, "end": { - "line": 3473, + "line": 3481, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 141549, - "end": 141578, + "start": 142063, + "end": 142092, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 8 }, "end": { - "line": 3473, + "line": 3481, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 141549, - "end": 141570, + "start": 142063, + "end": 142084, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 8 }, "end": { - "line": 3473, + "line": 3481, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 141549, - "end": 141565, + "start": 142063, + "end": 142079, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 8 }, "end": { - "line": 3473, + "line": 3481, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 141549, - "end": 141553, + "start": 142063, + "end": 142067, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 8 }, "end": { - "line": 3473, + "line": 3481, "column": 12 } }, @@ -146935,15 +147996,15 @@ }, "property": { "type": "Identifier", - "start": 141554, - "end": 141565, + "start": 142068, + "end": 142079, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 13 }, "end": { - "line": 3473, + "line": 3481, "column": 24 }, "identifierName": "_entityList" @@ -146955,15 +148016,15 @@ }, "property": { "type": "Identifier", - "start": 141566, - "end": 141570, + "start": 142080, + "end": 142084, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 25 }, "end": { - "line": 3473, + "line": 3481, "column": 29 }, "identifierName": "push" @@ -146976,15 +148037,15 @@ "arguments": [ { "type": "Identifier", - "start": 141571, - "end": 141577, + "start": 142085, + "end": 142091, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 30 }, "end": { - "line": 3473, + "line": 3481, "column": 36 }, "identifierName": "entity" @@ -146998,15 +148059,15 @@ { "type": "CommentLine", "value": " Internally sets SceneModelEntity#parent to this SceneModel", - "start": 141479, - "end": 141540, + "start": 141993, + "end": 142054, "loc": { "start": { - "line": 3472, + "line": 3480, "column": 26 }, "end": { - "line": 3472, + "line": 3480, "column": 87 } } @@ -147015,87 +148076,87 @@ }, { "type": "ExpressionStatement", - "start": 141588, - "end": 141620, + "start": 142102, + "end": 142134, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 8 }, "end": { - "line": 3474, + "line": 3482, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 141588, - "end": 141619, + "start": 142102, + "end": 142133, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 8 }, "end": { - "line": 3474, + "line": 3482, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 141588, - "end": 141610, + "start": 142102, + "end": 142124, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 8 }, "end": { - "line": 3474, + "line": 3482, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 141588, - "end": 141602, + "start": 142102, + "end": 142116, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 8 }, "end": { - "line": 3474, + "line": 3482, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 141588, - "end": 141592, + "start": 142102, + "end": 142106, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 8 }, "end": { - "line": 3474, + "line": 3482, "column": 12 } } }, "property": { "type": "Identifier", - "start": 141593, - "end": 141602, + "start": 142107, + "end": 142116, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 13 }, "end": { - "line": 3474, + "line": 3482, "column": 22 }, "identifierName": "_entities" @@ -147106,29 +148167,29 @@ }, "property": { "type": "MemberExpression", - "start": 141603, - "end": 141609, + "start": 142117, + "end": 142123, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 23 }, "end": { - "line": 3474, + "line": 3482, "column": 29 } }, "object": { "type": "Identifier", - "start": 141603, - "end": 141606, + "start": 142117, + "end": 142120, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 23 }, "end": { - "line": 3474, + "line": 3482, "column": 26 }, "identifierName": "cfg" @@ -147137,15 +148198,15 @@ }, "property": { "type": "Identifier", - "start": 141607, - "end": 141609, + "start": 142121, + "end": 142123, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 27 }, "end": { - "line": 3474, + "line": 3482, "column": 29 }, "identifierName": "id" @@ -147158,15 +148219,15 @@ }, "right": { "type": "Identifier", - "start": 141613, - "end": 141619, + "start": 142127, + "end": 142133, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 33 }, "end": { - "line": 3474, + "line": 3482, "column": 39 }, "identifierName": "entity" @@ -147177,29 +148238,29 @@ }, { "type": "ExpressionStatement", - "start": 141629, - "end": 141648, + "start": 142143, + "end": 142162, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 8 }, "end": { - "line": 3475, + "line": 3483, "column": 27 } }, "expression": { "type": "UpdateExpression", - "start": 141629, - "end": 141647, + "start": 142143, + "end": 142161, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 8 }, "end": { - "line": 3475, + "line": 3483, "column": 26 } }, @@ -147207,44 +148268,44 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 141629, - "end": 141645, + "start": 142143, + "end": 142159, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 8 }, "end": { - "line": 3475, + "line": 3483, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 141629, - "end": 141633, + "start": 142143, + "end": 142147, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 8 }, "end": { - "line": 3475, + "line": 3483, "column": 12 } } }, "property": { "type": "Identifier", - "start": 141634, - "end": 141645, + "start": 142148, + "end": 142159, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 13 }, "end": { - "line": 3475, + "line": 3483, "column": 24 }, "identifierName": "numEntities" @@ -147263,15 +148324,15 @@ { "type": "CommentBlock", "value": "*\n * Finalizes this SceneModel.\n *\n * Once finalized, you can't add anything more to this SceneModel.\n ", - "start": 141660, - "end": 141783, + "start": 142174, + "end": 142297, "loc": { "start": { - "line": 3478, + "line": 3486, "column": 4 }, "end": { - "line": 3482, + "line": 3490, "column": 7 } } @@ -147280,15 +148341,15 @@ }, { "type": "ClassMethod", - "start": 141788, - "end": 143370, + "start": 142302, + "end": 143884, "loc": { "start": { - "line": 3483, + "line": 3491, "column": 4 }, "end": { - "line": 3531, + "line": 3539, "column": 5 } }, @@ -147296,15 +148357,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 141788, - "end": 141796, + "start": 142302, + "end": 142310, "loc": { "start": { - "line": 3483, + "line": 3491, "column": 4 }, "end": { - "line": 3483, + "line": 3491, "column": 12 }, "identifierName": "finalize" @@ -147320,73 +148381,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 141799, - "end": 143370, + "start": 142313, + "end": 143884, "loc": { "start": { - "line": 3483, + "line": 3491, "column": 15 }, "end": { - "line": 3531, + "line": 3539, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 141809, - "end": 141860, + "start": 142323, + "end": 142374, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 8 }, "end": { - "line": 3486, + "line": 3494, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 141813, - "end": 141827, + "start": 142327, + "end": 142341, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 12 }, "end": { - "line": 3484, + "line": 3492, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 141813, - "end": 141817, + "start": 142327, + "end": 142331, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 12 }, "end": { - "line": 3484, + "line": 3492, "column": 16 } } }, "property": { "type": "Identifier", - "start": 141818, - "end": 141827, + "start": 142332, + "end": 142341, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 17 }, "end": { - "line": 3484, + "line": 3492, "column": 26 }, "identifierName": "destroyed" @@ -147397,30 +148458,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 141829, - "end": 141860, + "start": 142343, + "end": 142374, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 28 }, "end": { - "line": 3486, + "line": 3494, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 141843, - "end": 141850, + "start": 142357, + "end": 142364, "loc": { "start": { - "line": 3485, + "line": 3493, "column": 12 }, "end": { - "line": 3485, + "line": 3493, "column": 19 } }, @@ -147433,72 +148494,72 @@ }, { "type": "ExpressionStatement", - "start": 141869, - "end": 141910, + "start": 142383, + "end": 142424, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 8 }, "end": { - "line": 3487, + "line": 3495, "column": 49 } }, "expression": { "type": "CallExpression", - "start": 141869, - "end": 141909, + "start": 142383, + "end": 142423, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 8 }, "end": { - "line": 3487, + "line": 3495, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 141869, - "end": 141907, + "start": 142383, + "end": 142421, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 8 }, "end": { - "line": 3487, + "line": 3495, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 141869, - "end": 141873, + "start": 142383, + "end": 142387, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 8 }, "end": { - "line": 3487, + "line": 3495, "column": 12 } } }, "property": { "type": "Identifier", - "start": 141874, - "end": 141907, + "start": 142388, + "end": 142421, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 13 }, "end": { - "line": 3487, + "line": 3495, "column": 46 }, "identifierName": "_createDummyEntityForUnusedMeshes" @@ -147512,58 +148573,58 @@ }, { "type": "ForStatement", - "start": 141919, - "end": 142064, + "start": 142433, + "end": 142578, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 8 }, "end": { - "line": 3491, + "line": 3499, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 141924, - "end": 141962, + "start": 142438, + "end": 142476, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 13 }, "end": { - "line": 3488, + "line": 3496, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 141928, - "end": 141933, + "start": 142442, + "end": 142447, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 17 }, "end": { - "line": 3488, + "line": 3496, "column": 22 } }, "id": { "type": "Identifier", - "start": 141928, - "end": 141929, + "start": 142442, + "end": 142443, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 17 }, "end": { - "line": 3488, + "line": 3496, "column": 18 }, "identifierName": "i" @@ -147572,15 +148633,15 @@ }, "init": { "type": "NumericLiteral", - "start": 141932, - "end": 141933, + "start": 142446, + "end": 142447, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 21 }, "end": { - "line": 3488, + "line": 3496, "column": 22 } }, @@ -147593,29 +148654,29 @@ }, { "type": "VariableDeclarator", - "start": 141935, - "end": 141962, + "start": 142449, + "end": 142476, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 24 }, "end": { - "line": 3488, + "line": 3496, "column": 51 } }, "id": { "type": "Identifier", - "start": 141935, - "end": 141938, + "start": 142449, + "end": 142452, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 24 }, "end": { - "line": 3488, + "line": 3496, "column": 27 }, "identifierName": "len" @@ -147624,58 +148685,58 @@ }, "init": { "type": "MemberExpression", - "start": 141941, - "end": 141962, + "start": 142455, + "end": 142476, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 30 }, "end": { - "line": 3488, + "line": 3496, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 141941, - "end": 141955, + "start": 142455, + "end": 142469, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 30 }, "end": { - "line": 3488, + "line": 3496, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 141941, - "end": 141945, + "start": 142455, + "end": 142459, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 30 }, "end": { - "line": 3488, + "line": 3496, "column": 34 } } }, "property": { "type": "Identifier", - "start": 141946, - "end": 141955, + "start": 142460, + "end": 142469, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 35 }, "end": { - "line": 3488, + "line": 3496, "column": 44 }, "identifierName": "layerList" @@ -147686,15 +148747,15 @@ }, "property": { "type": "Identifier", - "start": 141956, - "end": 141962, + "start": 142470, + "end": 142476, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 45 }, "end": { - "line": 3488, + "line": 3496, "column": 51 }, "identifierName": "length" @@ -147709,29 +148770,29 @@ }, "test": { "type": "BinaryExpression", - "start": 141964, - "end": 141971, + "start": 142478, + "end": 142485, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 53 }, "end": { - "line": 3488, + "line": 3496, "column": 60 } }, "left": { "type": "Identifier", - "start": 141964, - "end": 141965, + "start": 142478, + "end": 142479, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 53 }, "end": { - "line": 3488, + "line": 3496, "column": 54 }, "identifierName": "i" @@ -147741,15 +148802,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 141968, - "end": 141971, + "start": 142482, + "end": 142485, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 57 }, "end": { - "line": 3488, + "line": 3496, "column": 60 }, "identifierName": "len" @@ -147759,15 +148820,15 @@ }, "update": { "type": "UpdateExpression", - "start": 141973, - "end": 141976, + "start": 142487, + "end": 142490, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 62 }, "end": { - "line": 3488, + "line": 3496, "column": 65 } }, @@ -147775,15 +148836,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 141973, - "end": 141974, + "start": 142487, + "end": 142488, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 62 }, "end": { - "line": 3488, + "line": 3496, "column": 63 }, "identifierName": "i" @@ -147793,59 +148854,59 @@ }, "body": { "type": "BlockStatement", - "start": 141978, - "end": 142064, + "start": 142492, + "end": 142578, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 67 }, "end": { - "line": 3491, + "line": 3499, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 141992, - "end": 142024, + "start": 142506, + "end": 142538, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 12 }, "end": { - "line": 3489, + "line": 3497, "column": 44 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 141998, - "end": 142023, + "start": 142512, + "end": 142537, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 18 }, "end": { - "line": 3489, + "line": 3497, "column": 43 } }, "id": { "type": "Identifier", - "start": 141998, - "end": 142003, + "start": 142512, + "end": 142517, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 18 }, "end": { - "line": 3489, + "line": 3497, "column": 23 }, "identifierName": "layer" @@ -147854,58 +148915,58 @@ }, "init": { "type": "MemberExpression", - "start": 142006, - "end": 142023, + "start": 142520, + "end": 142537, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 26 }, "end": { - "line": 3489, + "line": 3497, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 142006, - "end": 142020, + "start": 142520, + "end": 142534, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 26 }, "end": { - "line": 3489, + "line": 3497, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 142006, - "end": 142010, + "start": 142520, + "end": 142524, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 26 }, "end": { - "line": 3489, + "line": 3497, "column": 30 } } }, "property": { "type": "Identifier", - "start": 142011, - "end": 142020, + "start": 142525, + "end": 142534, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 31 }, "end": { - "line": 3489, + "line": 3497, "column": 40 }, "identifierName": "layerList" @@ -147916,15 +148977,15 @@ }, "property": { "type": "Identifier", - "start": 142021, - "end": 142022, + "start": 142535, + "end": 142536, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 41 }, "end": { - "line": 3489, + "line": 3497, "column": 42 }, "identifierName": "i" @@ -147939,57 +149000,57 @@ }, { "type": "ExpressionStatement", - "start": 142037, - "end": 142054, + "start": 142551, + "end": 142568, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 12 }, "end": { - "line": 3490, + "line": 3498, "column": 29 } }, "expression": { "type": "CallExpression", - "start": 142037, - "end": 142053, + "start": 142551, + "end": 142567, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 12 }, "end": { - "line": 3490, + "line": 3498, "column": 28 } }, "callee": { "type": "MemberExpression", - "start": 142037, - "end": 142051, + "start": 142551, + "end": 142565, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 12 }, "end": { - "line": 3490, + "line": 3498, "column": 26 } }, "object": { "type": "Identifier", - "start": 142037, - "end": 142042, + "start": 142551, + "end": 142556, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 12 }, "end": { - "line": 3490, + "line": 3498, "column": 17 }, "identifierName": "layer" @@ -147998,15 +149059,15 @@ }, "property": { "type": "Identifier", - "start": 142043, - "end": 142051, + "start": 142557, + "end": 142565, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 18 }, "end": { - "line": 3490, + "line": 3498, "column": 26 }, "identifierName": "finalize" @@ -148024,73 +149085,73 @@ }, { "type": "ExpressionStatement", - "start": 142073, - "end": 142095, + "start": 142587, + "end": 142609, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 8 }, "end": { - "line": 3492, + "line": 3500, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 142073, - "end": 142094, + "start": 142587, + "end": 142608, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 8 }, "end": { - "line": 3492, + "line": 3500, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 142073, - "end": 142089, + "start": 142587, + "end": 142603, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 8 }, "end": { - "line": 3492, + "line": 3500, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 142073, - "end": 142077, + "start": 142587, + "end": 142591, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 8 }, "end": { - "line": 3492, + "line": 3500, "column": 12 } } }, "property": { "type": "Identifier", - "start": 142078, - "end": 142089, + "start": 142592, + "end": 142603, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 13 }, "end": { - "line": 3492, + "line": 3500, "column": 24 }, "identifierName": "_geometries" @@ -148101,15 +149162,15 @@ }, "right": { "type": "ObjectExpression", - "start": 142092, - "end": 142094, + "start": 142606, + "end": 142608, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 27 }, "end": { - "line": 3492, + "line": 3500, "column": 29 } }, @@ -148119,73 +149180,73 @@ }, { "type": "ExpressionStatement", - "start": 142104, - "end": 142126, + "start": 142618, + "end": 142640, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 8 }, "end": { - "line": 3493, + "line": 3501, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 142104, - "end": 142125, + "start": 142618, + "end": 142639, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 8 }, "end": { - "line": 3493, + "line": 3501, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 142104, - "end": 142120, + "start": 142618, + "end": 142634, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 8 }, "end": { - "line": 3493, + "line": 3501, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 142104, - "end": 142108, + "start": 142618, + "end": 142622, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 8 }, "end": { - "line": 3493, + "line": 3501, "column": 12 } } }, "property": { "type": "Identifier", - "start": 142109, - "end": 142120, + "start": 142623, + "end": 142634, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 13 }, "end": { - "line": 3493, + "line": 3501, "column": 24 }, "identifierName": "_dtxBuckets" @@ -148196,15 +149257,15 @@ }, "right": { "type": "ObjectExpression", - "start": 142123, - "end": 142125, + "start": 142637, + "end": 142639, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 27 }, "end": { - "line": 3493, + "line": 3501, "column": 29 } }, @@ -148214,73 +149275,73 @@ }, { "type": "ExpressionStatement", - "start": 142135, - "end": 142155, + "start": 142649, + "end": 142669, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 8 }, "end": { - "line": 3494, + "line": 3502, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 142135, - "end": 142154, + "start": 142649, + "end": 142668, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 8 }, "end": { - "line": 3494, + "line": 3502, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 142135, - "end": 142149, + "start": 142649, + "end": 142663, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 8 }, "end": { - "line": 3494, + "line": 3502, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 142135, - "end": 142139, + "start": 142649, + "end": 142653, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 8 }, "end": { - "line": 3494, + "line": 3502, "column": 12 } } }, "property": { "type": "Identifier", - "start": 142140, - "end": 142149, + "start": 142654, + "end": 142663, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 13 }, "end": { - "line": 3494, + "line": 3502, "column": 22 }, "identifierName": "_textures" @@ -148291,15 +149352,15 @@ }, "right": { "type": "ObjectExpression", - "start": 142152, - "end": 142154, + "start": 142666, + "end": 142668, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 25 }, "end": { - "line": 3494, + "line": 3502, "column": 27 } }, @@ -148309,73 +149370,73 @@ }, { "type": "ExpressionStatement", - "start": 142164, - "end": 142187, + "start": 142678, + "end": 142701, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 8 }, "end": { - "line": 3495, + "line": 3503, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 142164, - "end": 142186, + "start": 142678, + "end": 142700, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 8 }, "end": { - "line": 3495, + "line": 3503, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 142164, - "end": 142181, + "start": 142678, + "end": 142695, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 8 }, "end": { - "line": 3495, + "line": 3503, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 142164, - "end": 142168, + "start": 142678, + "end": 142682, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 8 }, "end": { - "line": 3495, + "line": 3503, "column": 12 } } }, "property": { "type": "Identifier", - "start": 142169, - "end": 142181, + "start": 142683, + "end": 142695, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 13 }, "end": { - "line": 3495, + "line": 3503, "column": 25 }, "identifierName": "_textureSets" @@ -148386,15 +149447,15 @@ }, "right": { "type": "ObjectExpression", - "start": 142184, - "end": 142186, + "start": 142698, + "end": 142700, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 28 }, "end": { - "line": 3495, + "line": 3503, "column": 30 } }, @@ -148404,73 +149465,73 @@ }, { "type": "ExpressionStatement", - "start": 142196, - "end": 142217, + "start": 142710, + "end": 142731, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 8 }, "end": { - "line": 3496, + "line": 3504, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 142196, - "end": 142216, + "start": 142710, + "end": 142730, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 8 }, "end": { - "line": 3496, + "line": 3504, "column": 28 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 142196, - "end": 142211, + "start": 142710, + "end": 142725, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 8 }, "end": { - "line": 3496, + "line": 3504, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 142196, - "end": 142200, + "start": 142710, + "end": 142714, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 8 }, "end": { - "line": 3496, + "line": 3504, "column": 12 } } }, "property": { "type": "Identifier", - "start": 142201, - "end": 142211, + "start": 142715, + "end": 142725, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 13 }, "end": { - "line": 3496, + "line": 3504, "column": 23 }, "identifierName": "_dtxLayers" @@ -148481,15 +149542,15 @@ }, "right": { "type": "ObjectExpression", - "start": 142214, - "end": 142216, + "start": 142728, + "end": 142730, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 26 }, "end": { - "line": 3496, + "line": 3504, "column": 28 } }, @@ -148499,73 +149560,73 @@ }, { "type": "ExpressionStatement", - "start": 142226, - "end": 142257, + "start": 142740, + "end": 142771, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 8 }, "end": { - "line": 3497, + "line": 3505, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 142226, - "end": 142256, + "start": 142740, + "end": 142770, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 8 }, "end": { - "line": 3497, + "line": 3505, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 142226, - "end": 142251, + "start": 142740, + "end": 142765, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 8 }, "end": { - "line": 3497, + "line": 3505, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 142226, - "end": 142230, + "start": 142740, + "end": 142744, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 8 }, "end": { - "line": 3497, + "line": 3505, "column": 12 } } }, "property": { "type": "Identifier", - "start": 142231, - "end": 142251, + "start": 142745, + "end": 142765, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 13 }, "end": { - "line": 3497, + "line": 3505, "column": 33 }, "identifierName": "_vboInstancingLayers" @@ -148576,15 +149637,15 @@ }, "right": { "type": "ObjectExpression", - "start": 142254, - "end": 142256, + "start": 142768, + "end": 142770, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 36 }, "end": { - "line": 3497, + "line": 3505, "column": 38 } }, @@ -148594,73 +149655,73 @@ }, { "type": "ExpressionStatement", - "start": 142266, - "end": 142295, + "start": 142780, + "end": 142809, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 8 }, "end": { - "line": 3498, + "line": 3506, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 142266, - "end": 142294, + "start": 142780, + "end": 142808, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 8 }, "end": { - "line": 3498, + "line": 3506, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 142266, - "end": 142289, + "start": 142780, + "end": 142803, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 8 }, "end": { - "line": 3498, + "line": 3506, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 142266, - "end": 142270, + "start": 142780, + "end": 142784, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 8 }, "end": { - "line": 3498, + "line": 3506, "column": 12 } } }, "property": { "type": "Identifier", - "start": 142271, - "end": 142289, + "start": 142785, + "end": 142803, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 13 }, "end": { - "line": 3498, + "line": 3506, "column": 31 }, "identifierName": "_vboBatchingLayers" @@ -148671,15 +149732,15 @@ }, "right": { "type": "ObjectExpression", - "start": 142292, - "end": 142294, + "start": 142806, + "end": 142808, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 34 }, "end": { - "line": 3498, + "line": 3506, "column": 36 } }, @@ -148689,58 +149750,58 @@ }, { "type": "ForStatement", - "start": 142304, - "end": 142456, + "start": 142818, + "end": 142970, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 8 }, "end": { - "line": 3502, + "line": 3510, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 142309, - "end": 142349, + "start": 142823, + "end": 142863, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 13 }, "end": { - "line": 3499, + "line": 3507, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 142313, - "end": 142318, + "start": 142827, + "end": 142832, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 17 }, "end": { - "line": 3499, + "line": 3507, "column": 22 } }, "id": { "type": "Identifier", - "start": 142313, - "end": 142314, + "start": 142827, + "end": 142828, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 17 }, "end": { - "line": 3499, + "line": 3507, "column": 18 }, "identifierName": "i" @@ -148749,15 +149810,15 @@ }, "init": { "type": "NumericLiteral", - "start": 142317, - "end": 142318, + "start": 142831, + "end": 142832, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 21 }, "end": { - "line": 3499, + "line": 3507, "column": 22 } }, @@ -148770,29 +149831,29 @@ }, { "type": "VariableDeclarator", - "start": 142320, - "end": 142349, + "start": 142834, + "end": 142863, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 24 }, "end": { - "line": 3499, + "line": 3507, "column": 53 } }, "id": { "type": "Identifier", - "start": 142320, - "end": 142323, + "start": 142834, + "end": 142837, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 24 }, "end": { - "line": 3499, + "line": 3507, "column": 27 }, "identifierName": "len" @@ -148801,58 +149862,58 @@ }, "init": { "type": "MemberExpression", - "start": 142326, - "end": 142349, + "start": 142840, + "end": 142863, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 30 }, "end": { - "line": 3499, + "line": 3507, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 142326, - "end": 142342, + "start": 142840, + "end": 142856, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 30 }, "end": { - "line": 3499, + "line": 3507, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 142326, - "end": 142330, + "start": 142840, + "end": 142844, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 30 }, "end": { - "line": 3499, + "line": 3507, "column": 34 } } }, "property": { "type": "Identifier", - "start": 142331, - "end": 142342, + "start": 142845, + "end": 142856, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 35 }, "end": { - "line": 3499, + "line": 3507, "column": 46 }, "identifierName": "_entityList" @@ -148863,15 +149924,15 @@ }, "property": { "type": "Identifier", - "start": 142343, - "end": 142349, + "start": 142857, + "end": 142863, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 47 }, "end": { - "line": 3499, + "line": 3507, "column": 53 }, "identifierName": "length" @@ -148886,29 +149947,29 @@ }, "test": { "type": "BinaryExpression", - "start": 142351, - "end": 142358, + "start": 142865, + "end": 142872, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 55 }, "end": { - "line": 3499, + "line": 3507, "column": 62 } }, "left": { "type": "Identifier", - "start": 142351, - "end": 142352, + "start": 142865, + "end": 142866, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 55 }, "end": { - "line": 3499, + "line": 3507, "column": 56 }, "identifierName": "i" @@ -148918,15 +149979,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 142355, - "end": 142358, + "start": 142869, + "end": 142872, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 59 }, "end": { - "line": 3499, + "line": 3507, "column": 62 }, "identifierName": "len" @@ -148936,15 +149997,15 @@ }, "update": { "type": "UpdateExpression", - "start": 142360, - "end": 142363, + "start": 142874, + "end": 142877, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 64 }, "end": { - "line": 3499, + "line": 3507, "column": 67 } }, @@ -148952,15 +150013,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 142360, - "end": 142361, + "start": 142874, + "end": 142875, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 64 }, "end": { - "line": 3499, + "line": 3507, "column": 65 }, "identifierName": "i" @@ -148970,59 +150031,59 @@ }, "body": { "type": "BlockStatement", - "start": 142365, - "end": 142456, + "start": 142879, + "end": 142970, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 69 }, "end": { - "line": 3502, + "line": 3510, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 142379, - "end": 142414, + "start": 142893, + "end": 142928, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 12 }, "end": { - "line": 3500, + "line": 3508, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 142385, - "end": 142413, + "start": 142899, + "end": 142927, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 18 }, "end": { - "line": 3500, + "line": 3508, "column": 46 } }, "id": { "type": "Identifier", - "start": 142385, - "end": 142391, + "start": 142899, + "end": 142905, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 18 }, "end": { - "line": 3500, + "line": 3508, "column": 24 }, "identifierName": "entity" @@ -149031,58 +150092,58 @@ }, "init": { "type": "MemberExpression", - "start": 142394, - "end": 142413, + "start": 142908, + "end": 142927, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 27 }, "end": { - "line": 3500, + "line": 3508, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 142394, - "end": 142410, + "start": 142908, + "end": 142924, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 27 }, "end": { - "line": 3500, + "line": 3508, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 142394, - "end": 142398, + "start": 142908, + "end": 142912, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 27 }, "end": { - "line": 3500, + "line": 3508, "column": 31 } } }, "property": { "type": "Identifier", - "start": 142399, - "end": 142410, + "start": 142913, + "end": 142924, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 32 }, "end": { - "line": 3500, + "line": 3508, "column": 43 }, "identifierName": "_entityList" @@ -149093,15 +150154,15 @@ }, "property": { "type": "Identifier", - "start": 142411, - "end": 142412, + "start": 142925, + "end": 142926, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 44 }, "end": { - "line": 3500, + "line": 3508, "column": 45 }, "identifierName": "i" @@ -149116,57 +150177,57 @@ }, { "type": "ExpressionStatement", - "start": 142427, - "end": 142446, + "start": 142941, + "end": 142960, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 12 }, "end": { - "line": 3501, + "line": 3509, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 142427, - "end": 142445, + "start": 142941, + "end": 142959, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 12 }, "end": { - "line": 3501, + "line": 3509, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 142427, - "end": 142443, + "start": 142941, + "end": 142957, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 12 }, "end": { - "line": 3501, + "line": 3509, "column": 28 } }, "object": { "type": "Identifier", - "start": 142427, - "end": 142433, + "start": 142941, + "end": 142947, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 12 }, "end": { - "line": 3501, + "line": 3509, "column": 18 }, "identifierName": "entity" @@ -149175,15 +150236,15 @@ }, "property": { "type": "Identifier", - "start": 142434, - "end": 142443, + "start": 142948, + "end": 142957, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 19 }, "end": { - "line": 3501, + "line": 3509, "column": 28 }, "identifierName": "_finalize" @@ -149201,58 +150262,58 @@ }, { "type": "ForStatement", - "start": 142465, - "end": 142618, + "start": 142979, + "end": 143132, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 8 }, "end": { - "line": 3506, + "line": 3514, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 142470, - "end": 142510, + "start": 142984, + "end": 143024, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 13 }, "end": { - "line": 3503, + "line": 3511, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 142474, - "end": 142479, + "start": 142988, + "end": 142993, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 17 }, "end": { - "line": 3503, + "line": 3511, "column": 22 } }, "id": { "type": "Identifier", - "start": 142474, - "end": 142475, + "start": 142988, + "end": 142989, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 17 }, "end": { - "line": 3503, + "line": 3511, "column": 18 }, "identifierName": "i" @@ -149261,15 +150322,15 @@ }, "init": { "type": "NumericLiteral", - "start": 142478, - "end": 142479, + "start": 142992, + "end": 142993, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 21 }, "end": { - "line": 3503, + "line": 3511, "column": 22 } }, @@ -149282,29 +150343,29 @@ }, { "type": "VariableDeclarator", - "start": 142481, - "end": 142510, + "start": 142995, + "end": 143024, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 24 }, "end": { - "line": 3503, + "line": 3511, "column": 53 } }, "id": { "type": "Identifier", - "start": 142481, - "end": 142484, + "start": 142995, + "end": 142998, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 24 }, "end": { - "line": 3503, + "line": 3511, "column": 27 }, "identifierName": "len" @@ -149313,58 +150374,58 @@ }, "init": { "type": "MemberExpression", - "start": 142487, - "end": 142510, + "start": 143001, + "end": 143024, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 30 }, "end": { - "line": 3503, + "line": 3511, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 142487, - "end": 142503, + "start": 143001, + "end": 143017, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 30 }, "end": { - "line": 3503, + "line": 3511, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 142487, - "end": 142491, + "start": 143001, + "end": 143005, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 30 }, "end": { - "line": 3503, + "line": 3511, "column": 34 } } }, "property": { "type": "Identifier", - "start": 142492, - "end": 142503, + "start": 143006, + "end": 143017, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 35 }, "end": { - "line": 3503, + "line": 3511, "column": 46 }, "identifierName": "_entityList" @@ -149375,15 +150436,15 @@ }, "property": { "type": "Identifier", - "start": 142504, - "end": 142510, + "start": 143018, + "end": 143024, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 47 }, "end": { - "line": 3503, + "line": 3511, "column": 53 }, "identifierName": "length" @@ -149398,29 +150459,29 @@ }, "test": { "type": "BinaryExpression", - "start": 142512, - "end": 142519, + "start": 143026, + "end": 143033, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 55 }, "end": { - "line": 3503, + "line": 3511, "column": 62 } }, "left": { "type": "Identifier", - "start": 142512, - "end": 142513, + "start": 143026, + "end": 143027, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 55 }, "end": { - "line": 3503, + "line": 3511, "column": 56 }, "identifierName": "i" @@ -149430,15 +150491,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 142516, - "end": 142519, + "start": 143030, + "end": 143033, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 59 }, "end": { - "line": 3503, + "line": 3511, "column": 62 }, "identifierName": "len" @@ -149448,15 +150509,15 @@ }, "update": { "type": "UpdateExpression", - "start": 142521, - "end": 142524, + "start": 143035, + "end": 143038, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 64 }, "end": { - "line": 3503, + "line": 3511, "column": 67 } }, @@ -149464,15 +150525,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 142521, - "end": 142522, + "start": 143035, + "end": 143036, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 64 }, "end": { - "line": 3503, + "line": 3511, "column": 65 }, "identifierName": "i" @@ -149482,59 +150543,59 @@ }, "body": { "type": "BlockStatement", - "start": 142526, - "end": 142618, + "start": 143040, + "end": 143132, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 69 }, "end": { - "line": 3506, + "line": 3514, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 142540, - "end": 142575, + "start": 143054, + "end": 143089, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 12 }, "end": { - "line": 3504, + "line": 3512, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 142546, - "end": 142574, + "start": 143060, + "end": 143088, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 18 }, "end": { - "line": 3504, + "line": 3512, "column": 46 } }, "id": { "type": "Identifier", - "start": 142546, - "end": 142552, + "start": 143060, + "end": 143066, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 18 }, "end": { - "line": 3504, + "line": 3512, "column": 24 }, "identifierName": "entity" @@ -149543,58 +150604,58 @@ }, "init": { "type": "MemberExpression", - "start": 142555, - "end": 142574, + "start": 143069, + "end": 143088, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 27 }, "end": { - "line": 3504, + "line": 3512, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 142555, - "end": 142571, + "start": 143069, + "end": 143085, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 27 }, "end": { - "line": 3504, + "line": 3512, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 142555, - "end": 142559, + "start": 143069, + "end": 143073, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 27 }, "end": { - "line": 3504, + "line": 3512, "column": 31 } } }, "property": { "type": "Identifier", - "start": 142560, - "end": 142571, + "start": 143074, + "end": 143085, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 32 }, "end": { - "line": 3504, + "line": 3512, "column": 43 }, "identifierName": "_entityList" @@ -149605,15 +150666,15 @@ }, "property": { "type": "Identifier", - "start": 142572, - "end": 142573, + "start": 143086, + "end": 143087, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 44 }, "end": { - "line": 3504, + "line": 3512, "column": 45 }, "identifierName": "i" @@ -149628,57 +150689,57 @@ }, { "type": "ExpressionStatement", - "start": 142588, - "end": 142608, + "start": 143102, + "end": 143122, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 12 }, "end": { - "line": 3505, + "line": 3513, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 142588, - "end": 142607, + "start": 143102, + "end": 143121, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 12 }, "end": { - "line": 3505, + "line": 3513, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 142588, - "end": 142605, + "start": 143102, + "end": 143119, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 12 }, "end": { - "line": 3505, + "line": 3513, "column": 29 } }, "object": { "type": "Identifier", - "start": 142588, - "end": 142594, + "start": 143102, + "end": 143108, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 12 }, "end": { - "line": 3505, + "line": 3513, "column": 18 }, "identifierName": "entity" @@ -149687,15 +150748,15 @@ }, "property": { "type": "Identifier", - "start": 142595, - "end": 142605, + "start": 143109, + "end": 143119, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 19 }, "end": { - "line": 3505, + "line": 3513, "column": 29 }, "identifierName": "_finalize2" @@ -149715,15 +150776,15 @@ { "type": "CommentLine", "value": " Sort layers to reduce WebGL shader switching when rendering them", - "start": 142627, - "end": 142694, + "start": 143141, + "end": 143208, "loc": { "start": { - "line": 3507, + "line": 3515, "column": 8 }, "end": { - "line": 3507, + "line": 3515, "column": 75 } } @@ -149732,71 +150793,71 @@ }, { "type": "ExpressionStatement", - "start": 142703, - "end": 142927, + "start": 143217, + "end": 143441, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 8 }, "end": { - "line": 3516, + "line": 3524, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 142703, - "end": 142926, + "start": 143217, + "end": 143440, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 8 }, "end": { - "line": 3516, + "line": 3524, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 142703, - "end": 142722, + "start": 143217, + "end": 143236, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 8 }, "end": { - "line": 3508, + "line": 3516, "column": 27 } }, "object": { "type": "MemberExpression", - "start": 142703, - "end": 142717, + "start": 143217, + "end": 143231, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 8 }, "end": { - "line": 3508, + "line": 3516, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 142703, - "end": 142707, + "start": 143217, + "end": 143221, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 8 }, "end": { - "line": 3508, + "line": 3516, "column": 12 } }, @@ -149804,15 +150865,15 @@ }, "property": { "type": "Identifier", - "start": 142708, - "end": 142717, + "start": 143222, + "end": 143231, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 13 }, "end": { - "line": 3508, + "line": 3516, "column": 22 }, "identifierName": "layerList" @@ -149824,15 +150885,15 @@ }, "property": { "type": "Identifier", - "start": 142718, - "end": 142722, + "start": 143232, + "end": 143236, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 23 }, "end": { - "line": 3508, + "line": 3516, "column": 27 }, "identifierName": "sort" @@ -149845,15 +150906,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 142723, - "end": 142925, + "start": 143237, + "end": 143439, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 28 }, "end": { - "line": 3516, + "line": 3524, "column": 9 } }, @@ -149864,15 +150925,15 @@ "params": [ { "type": "Identifier", - "start": 142724, - "end": 142725, + "start": 143238, + "end": 143239, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 29 }, "end": { - "line": 3508, + "line": 3516, "column": 30 }, "identifierName": "a" @@ -149881,15 +150942,15 @@ }, { "type": "Identifier", - "start": 142727, - "end": 142728, + "start": 143241, + "end": 143242, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 32 }, "end": { - "line": 3508, + "line": 3516, "column": 33 }, "identifierName": "b" @@ -149899,72 +150960,72 @@ ], "body": { "type": "BlockStatement", - "start": 142733, - "end": 142925, + "start": 143247, + "end": 143439, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 38 }, "end": { - "line": 3516, + "line": 3524, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 142747, - "end": 142814, + "start": 143261, + "end": 143328, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 12 }, "end": { - "line": 3511, + "line": 3519, "column": 13 } }, "test": { "type": "BinaryExpression", - "start": 142751, - "end": 142770, + "start": 143265, + "end": 143284, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 16 }, "end": { - "line": 3509, + "line": 3517, "column": 35 } }, "left": { "type": "MemberExpression", - "start": 142751, - "end": 142759, + "start": 143265, + "end": 143273, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 16 }, "end": { - "line": 3509, + "line": 3517, "column": 24 } }, "object": { "type": "Identifier", - "start": 142751, - "end": 142752, + "start": 143265, + "end": 143266, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 16 }, "end": { - "line": 3509, + "line": 3517, "column": 17 }, "identifierName": "a" @@ -149973,15 +151034,15 @@ }, "property": { "type": "Identifier", - "start": 142753, - "end": 142759, + "start": 143267, + "end": 143273, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 18 }, "end": { - "line": 3509, + "line": 3517, "column": 24 }, "identifierName": "sortId" @@ -149993,29 +151054,29 @@ "operator": "<", "right": { "type": "MemberExpression", - "start": 142762, - "end": 142770, + "start": 143276, + "end": 143284, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 27 }, "end": { - "line": 3509, + "line": 3517, "column": 35 } }, "object": { "type": "Identifier", - "start": 142762, - "end": 142763, + "start": 143276, + "end": 143277, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 27 }, "end": { - "line": 3509, + "line": 3517, "column": 28 }, "identifierName": "b" @@ -150024,15 +151085,15 @@ }, "property": { "type": "Identifier", - "start": 142764, - "end": 142770, + "start": 143278, + "end": 143284, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 29 }, "end": { - "line": 3509, + "line": 3517, "column": 35 }, "identifierName": "sortId" @@ -150044,44 +151105,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 142772, - "end": 142814, + "start": 143286, + "end": 143328, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 37 }, "end": { - "line": 3511, + "line": 3519, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 142790, - "end": 142800, + "start": 143304, + "end": 143314, "loc": { "start": { - "line": 3510, + "line": 3518, "column": 16 }, "end": { - "line": 3510, + "line": 3518, "column": 26 } }, "argument": { "type": "UnaryExpression", - "start": 142797, - "end": 142799, + "start": 143311, + "end": 143313, "loc": { "start": { - "line": 3510, + "line": 3518, "column": 23 }, "end": { - "line": 3510, + "line": 3518, "column": 25 } }, @@ -150089,15 +151150,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 142798, - "end": 142799, + "start": 143312, + "end": 143313, "loc": { "start": { - "line": 3510, + "line": 3518, "column": 24 }, "end": { - "line": 3510, + "line": 3518, "column": 25 } }, @@ -150119,57 +151180,57 @@ }, { "type": "IfStatement", - "start": 142827, - "end": 142893, + "start": 143341, + "end": 143407, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 12 }, "end": { - "line": 3514, + "line": 3522, "column": 13 } }, "test": { "type": "BinaryExpression", - "start": 142831, - "end": 142850, + "start": 143345, + "end": 143364, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 16 }, "end": { - "line": 3512, + "line": 3520, "column": 35 } }, "left": { "type": "MemberExpression", - "start": 142831, - "end": 142839, + "start": 143345, + "end": 143353, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 16 }, "end": { - "line": 3512, + "line": 3520, "column": 24 } }, "object": { "type": "Identifier", - "start": 142831, - "end": 142832, + "start": 143345, + "end": 143346, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 16 }, "end": { - "line": 3512, + "line": 3520, "column": 17 }, "identifierName": "a" @@ -150178,15 +151239,15 @@ }, "property": { "type": "Identifier", - "start": 142833, - "end": 142839, + "start": 143347, + "end": 143353, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 18 }, "end": { - "line": 3512, + "line": 3520, "column": 24 }, "identifierName": "sortId" @@ -150198,29 +151259,29 @@ "operator": ">", "right": { "type": "MemberExpression", - "start": 142842, - "end": 142850, + "start": 143356, + "end": 143364, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 27 }, "end": { - "line": 3512, + "line": 3520, "column": 35 } }, "object": { "type": "Identifier", - "start": 142842, - "end": 142843, + "start": 143356, + "end": 143357, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 27 }, "end": { - "line": 3512, + "line": 3520, "column": 28 }, "identifierName": "b" @@ -150229,15 +151290,15 @@ }, "property": { "type": "Identifier", - "start": 142844, - "end": 142850, + "start": 143358, + "end": 143364, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 29 }, "end": { - "line": 3512, + "line": 3520, "column": 35 }, "identifierName": "sortId" @@ -150249,44 +151310,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 142852, - "end": 142893, + "start": 143366, + "end": 143407, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 37 }, "end": { - "line": 3514, + "line": 3522, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 142870, - "end": 142879, + "start": 143384, + "end": 143393, "loc": { "start": { - "line": 3513, + "line": 3521, "column": 16 }, "end": { - "line": 3513, + "line": 3521, "column": 25 } }, "argument": { "type": "NumericLiteral", - "start": 142877, - "end": 142878, + "start": 143391, + "end": 143392, "loc": { "start": { - "line": 3513, + "line": 3521, "column": 23 }, "end": { - "line": 3513, + "line": 3521, "column": 24 } }, @@ -150304,29 +151365,29 @@ }, { "type": "ReturnStatement", - "start": 142906, - "end": 142915, + "start": 143420, + "end": 143429, "loc": { "start": { - "line": 3515, + "line": 3523, "column": 12 }, "end": { - "line": 3515, + "line": 3523, "column": 21 } }, "argument": { "type": "NumericLiteral", - "start": 142913, - "end": 142914, + "start": 143427, + "end": 143428, "loc": { "start": { - "line": 3515, + "line": 3523, "column": 19 }, "end": { - "line": 3515, + "line": 3523, "column": 20 } }, @@ -150348,15 +151409,15 @@ { "type": "CommentLine", "value": " Sort layers to reduce WebGL shader switching when rendering them", - "start": 142627, - "end": 142694, + "start": 143141, + "end": 143208, "loc": { "start": { - "line": 3507, + "line": 3515, "column": 8 }, "end": { - "line": 3507, + "line": 3515, "column": 75 } } @@ -150365,58 +151426,58 @@ }, { "type": "ForStatement", - "start": 142936, - "end": 143085, + "start": 143450, + "end": 143599, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 8 }, "end": { - "line": 3520, + "line": 3528, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 142941, - "end": 142979, + "start": 143455, + "end": 143493, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 13 }, "end": { - "line": 3517, + "line": 3525, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 142945, - "end": 142950, + "start": 143459, + "end": 143464, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 17 }, "end": { - "line": 3517, + "line": 3525, "column": 22 } }, "id": { "type": "Identifier", - "start": 142945, - "end": 142946, + "start": 143459, + "end": 143460, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 17 }, "end": { - "line": 3517, + "line": 3525, "column": 18 }, "identifierName": "i" @@ -150425,15 +151486,15 @@ }, "init": { "type": "NumericLiteral", - "start": 142949, - "end": 142950, + "start": 143463, + "end": 143464, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 21 }, "end": { - "line": 3517, + "line": 3525, "column": 22 } }, @@ -150446,29 +151507,29 @@ }, { "type": "VariableDeclarator", - "start": 142952, - "end": 142979, + "start": 143466, + "end": 143493, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 24 }, "end": { - "line": 3517, + "line": 3525, "column": 51 } }, "id": { "type": "Identifier", - "start": 142952, - "end": 142955, + "start": 143466, + "end": 143469, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 24 }, "end": { - "line": 3517, + "line": 3525, "column": 27 }, "identifierName": "len" @@ -150477,58 +151538,58 @@ }, "init": { "type": "MemberExpression", - "start": 142958, - "end": 142979, + "start": 143472, + "end": 143493, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 30 }, "end": { - "line": 3517, + "line": 3525, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 142958, - "end": 142972, + "start": 143472, + "end": 143486, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 30 }, "end": { - "line": 3517, + "line": 3525, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 142958, - "end": 142962, + "start": 143472, + "end": 143476, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 30 }, "end": { - "line": 3517, + "line": 3525, "column": 34 } } }, "property": { "type": "Identifier", - "start": 142963, - "end": 142972, + "start": 143477, + "end": 143486, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 35 }, "end": { - "line": 3517, + "line": 3525, "column": 44 }, "identifierName": "layerList" @@ -150539,15 +151600,15 @@ }, "property": { "type": "Identifier", - "start": 142973, - "end": 142979, + "start": 143487, + "end": 143493, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 45 }, "end": { - "line": 3517, + "line": 3525, "column": 51 }, "identifierName": "length" @@ -150562,29 +151623,29 @@ }, "test": { "type": "BinaryExpression", - "start": 142981, - "end": 142988, + "start": 143495, + "end": 143502, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 53 }, "end": { - "line": 3517, + "line": 3525, "column": 60 } }, "left": { "type": "Identifier", - "start": 142981, - "end": 142982, + "start": 143495, + "end": 143496, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 53 }, "end": { - "line": 3517, + "line": 3525, "column": 54 }, "identifierName": "i" @@ -150594,15 +151655,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 142985, - "end": 142988, + "start": 143499, + "end": 143502, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 57 }, "end": { - "line": 3517, + "line": 3525, "column": 60 }, "identifierName": "len" @@ -150612,15 +151673,15 @@ }, "update": { "type": "UpdateExpression", - "start": 142990, - "end": 142993, + "start": 143504, + "end": 143507, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 62 }, "end": { - "line": 3517, + "line": 3525, "column": 65 } }, @@ -150628,15 +151689,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 142990, - "end": 142991, + "start": 143504, + "end": 143505, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 62 }, "end": { - "line": 3517, + "line": 3525, "column": 63 }, "identifierName": "i" @@ -150646,59 +151707,59 @@ }, "body": { "type": "BlockStatement", - "start": 142995, - "end": 143085, + "start": 143509, + "end": 143599, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 67 }, "end": { - "line": 3520, + "line": 3528, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 143009, - "end": 143041, + "start": 143523, + "end": 143555, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 12 }, "end": { - "line": 3518, + "line": 3526, "column": 44 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 143015, - "end": 143040, + "start": 143529, + "end": 143554, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 18 }, "end": { - "line": 3518, + "line": 3526, "column": 43 } }, "id": { "type": "Identifier", - "start": 143015, - "end": 143020, + "start": 143529, + "end": 143534, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 18 }, "end": { - "line": 3518, + "line": 3526, "column": 23 }, "identifierName": "layer" @@ -150707,58 +151768,58 @@ }, "init": { "type": "MemberExpression", - "start": 143023, - "end": 143040, + "start": 143537, + "end": 143554, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 26 }, "end": { - "line": 3518, + "line": 3526, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 143023, - "end": 143037, + "start": 143537, + "end": 143551, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 26 }, "end": { - "line": 3518, + "line": 3526, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 143023, - "end": 143027, + "start": 143537, + "end": 143541, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 26 }, "end": { - "line": 3518, + "line": 3526, "column": 30 } } }, "property": { "type": "Identifier", - "start": 143028, - "end": 143037, + "start": 143542, + "end": 143551, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 31 }, "end": { - "line": 3518, + "line": 3526, "column": 40 }, "identifierName": "layerList" @@ -150769,15 +151830,15 @@ }, "property": { "type": "Identifier", - "start": 143038, - "end": 143039, + "start": 143552, + "end": 143553, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 41 }, "end": { - "line": 3518, + "line": 3526, "column": 42 }, "identifierName": "i" @@ -150792,58 +151853,58 @@ }, { "type": "ExpressionStatement", - "start": 143054, - "end": 143075, + "start": 143568, + "end": 143589, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 12 }, "end": { - "line": 3519, + "line": 3527, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 143054, - "end": 143074, + "start": 143568, + "end": 143588, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 12 }, "end": { - "line": 3519, + "line": 3527, "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143054, - "end": 143070, + "start": 143568, + "end": 143584, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 12 }, "end": { - "line": 3519, + "line": 3527, "column": 28 } }, "object": { "type": "Identifier", - "start": 143054, - "end": 143059, + "start": 143568, + "end": 143573, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 12 }, "end": { - "line": 3519, + "line": 3527, "column": 17 }, "identifierName": "layer" @@ -150852,15 +151913,15 @@ }, "property": { "type": "Identifier", - "start": 143060, - "end": 143070, + "start": 143574, + "end": 143584, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 18 }, "end": { - "line": 3519, + "line": 3527, "column": 28 }, "identifierName": "layerIndex" @@ -150871,15 +151932,15 @@ }, "right": { "type": "Identifier", - "start": 143073, - "end": 143074, + "start": 143587, + "end": 143588, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 31 }, "end": { - "line": 3519, + "line": 3527, "column": 32 }, "identifierName": "i" @@ -150894,72 +151955,72 @@ }, { "type": "ExpressionStatement", - "start": 143094, - "end": 143110, + "start": 143608, + "end": 143624, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 8 }, "end": { - "line": 3521, + "line": 3529, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 143094, - "end": 143109, + "start": 143608, + "end": 143623, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 8 }, "end": { - "line": 3521, + "line": 3529, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 143094, - "end": 143107, + "start": 143608, + "end": 143621, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 8 }, "end": { - "line": 3521, + "line": 3529, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 143094, - "end": 143098, + "start": 143608, + "end": 143612, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 8 }, "end": { - "line": 3521, + "line": 3529, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143099, - "end": 143107, + "start": 143613, + "end": 143621, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 13 }, "end": { - "line": 3521, + "line": 3529, "column": 21 }, "identifierName": "glRedraw" @@ -150973,87 +152034,87 @@ }, { "type": "ExpressionStatement", - "start": 143119, - "end": 143148, + "start": 143633, + "end": 143662, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 8 }, "end": { - "line": 3522, + "line": 3530, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 143119, - "end": 143147, + "start": 143633, + "end": 143661, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 8 }, "end": { - "line": 3522, + "line": 3530, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143119, - "end": 143140, + "start": 143633, + "end": 143654, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 8 }, "end": { - "line": 3522, + "line": 3530, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 143119, - "end": 143129, + "start": 143633, + "end": 143643, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 8 }, "end": { - "line": 3522, + "line": 3530, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 143119, - "end": 143123, + "start": 143633, + "end": 143637, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 8 }, "end": { - "line": 3522, + "line": 3530, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143124, - "end": 143129, + "start": 143638, + "end": 143643, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 13 }, "end": { - "line": 3522, + "line": 3530, "column": 18 }, "identifierName": "scene" @@ -151064,15 +152125,15 @@ }, "property": { "type": "Identifier", - "start": 143130, - "end": 143140, + "start": 143644, + "end": 143654, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 19 }, "end": { - "line": 3522, + "line": 3530, "column": 29 }, "identifierName": "_aabbDirty" @@ -151083,15 +152144,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 143143, - "end": 143147, + "start": 143657, + "end": 143661, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 32 }, "end": { - "line": 3522, + "line": 3530, "column": 36 } }, @@ -151101,73 +152162,73 @@ }, { "type": "ExpressionStatement", - "start": 143157, - "end": 143186, + "start": 143671, + "end": 143700, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 8 }, "end": { - "line": 3523, + "line": 3531, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 143157, - "end": 143185, + "start": 143671, + "end": 143699, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 8 }, "end": { - "line": 3523, + "line": 3531, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143157, - "end": 143178, + "start": 143671, + "end": 143692, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 8 }, "end": { - "line": 3523, + "line": 3531, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 143157, - "end": 143161, + "start": 143671, + "end": 143675, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 8 }, "end": { - "line": 3523, + "line": 3531, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143162, - "end": 143178, + "start": 143676, + "end": 143692, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 13 }, "end": { - "line": 3523, + "line": 3531, "column": 29 }, "identifierName": "_viewMatrixDirty" @@ -151178,15 +152239,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 143181, - "end": 143185, + "start": 143695, + "end": 143699, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 32 }, "end": { - "line": 3523, + "line": 3531, "column": 36 } }, @@ -151196,73 +152257,73 @@ }, { "type": "ExpressionStatement", - "start": 143195, - "end": 143220, + "start": 143709, + "end": 143734, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 8 }, "end": { - "line": 3524, + "line": 3532, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 143195, - "end": 143219, + "start": 143709, + "end": 143733, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 8 }, "end": { - "line": 3524, + "line": 3532, "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143195, - "end": 143212, + "start": 143709, + "end": 143726, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 8 }, "end": { - "line": 3524, + "line": 3532, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 143195, - "end": 143199, + "start": 143709, + "end": 143713, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 8 }, "end": { - "line": 3524, + "line": 3532, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143200, - "end": 143212, + "start": 143714, + "end": 143726, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 13 }, "end": { - "line": 3524, + "line": 3532, "column": 25 }, "identifierName": "_matrixDirty" @@ -151273,15 +152334,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 143215, - "end": 143219, + "start": 143729, + "end": 143733, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 28 }, "end": { - "line": 3524, + "line": 3532, "column": 32 } }, @@ -151291,73 +152352,73 @@ }, { "type": "ExpressionStatement", - "start": 143229, - "end": 143252, + "start": 143743, + "end": 143766, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 8 }, "end": { - "line": 3525, + "line": 3533, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 143229, - "end": 143251, + "start": 143743, + "end": 143765, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 8 }, "end": { - "line": 3525, + "line": 3533, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143229, - "end": 143244, + "start": 143743, + "end": 143758, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 8 }, "end": { - "line": 3525, + "line": 3533, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 143229, - "end": 143233, + "start": 143743, + "end": 143747, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 8 }, "end": { - "line": 3525, + "line": 3533, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143234, - "end": 143244, + "start": 143748, + "end": 143758, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 13 }, "end": { - "line": 3525, + "line": 3533, "column": 23 }, "identifierName": "_aabbDirty" @@ -151368,15 +152429,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 143247, - "end": 143251, + "start": 143761, + "end": 143765, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 26 }, "end": { - "line": 3525, + "line": 3533, "column": 30 } }, @@ -151386,72 +152447,72 @@ }, { "type": "ExpressionStatement", - "start": 143262, - "end": 143290, + "start": 143776, + "end": 143804, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 8 }, "end": { - "line": 3527, + "line": 3535, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 143262, - "end": 143289, + "start": 143776, + "end": 143803, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 8 }, "end": { - "line": 3527, + "line": 3535, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 143262, - "end": 143287, + "start": 143776, + "end": 143801, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 8 }, "end": { - "line": 3527, + "line": 3535, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 143262, - "end": 143266, + "start": 143776, + "end": 143780, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 8 }, "end": { - "line": 3527, + "line": 3535, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143267, - "end": 143287, + "start": 143781, + "end": 143801, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 13 }, "end": { - "line": 3527, + "line": 3535, "column": 33 }, "identifierName": "_setWorldMatrixDirty" @@ -151465,72 +152526,72 @@ }, { "type": "ExpressionStatement", - "start": 143299, - "end": 143323, + "start": 143813, + "end": 143837, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 8 }, "end": { - "line": 3528, + "line": 3536, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 143299, - "end": 143322, + "start": 143813, + "end": 143836, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 8 }, "end": { - "line": 3528, + "line": 3536, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 143299, - "end": 143320, + "start": 143813, + "end": 143834, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 8 }, "end": { - "line": 3528, + "line": 3536, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 143299, - "end": 143303, + "start": 143813, + "end": 143817, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 8 }, "end": { - "line": 3528, + "line": 3536, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143304, - "end": 143320, + "start": 143818, + "end": 143834, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 13 }, "end": { - "line": 3528, + "line": 3536, "column": 29 }, "identifierName": "_sceneModelDirty" @@ -151544,73 +152605,73 @@ }, { "type": "ExpressionStatement", - "start": 143333, - "end": 143364, + "start": 143847, + "end": 143878, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 8 }, "end": { - "line": 3530, + "line": 3538, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 143333, - "end": 143363, + "start": 143847, + "end": 143877, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 8 }, "end": { - "line": 3530, + "line": 3538, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143333, - "end": 143346, + "start": 143847, + "end": 143860, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 8 }, "end": { - "line": 3530, + "line": 3538, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 143333, - "end": 143337, + "start": 143847, + "end": 143851, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 8 }, "end": { - "line": 3530, + "line": 3538, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143338, - "end": 143346, + "start": 143852, + "end": 143860, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 13 }, "end": { - "line": 3530, + "line": 3538, "column": 21 }, "identifierName": "position" @@ -151621,44 +152682,44 @@ }, "right": { "type": "MemberExpression", - "start": 143349, - "end": 143363, + "start": 143863, + "end": 143877, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 24 }, "end": { - "line": 3530, + "line": 3538, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 143349, - "end": 143353, + "start": 143863, + "end": 143867, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 24 }, "end": { - "line": 3530, + "line": 3538, "column": 28 } } }, "property": { "type": "Identifier", - "start": 143354, - "end": 143363, + "start": 143868, + "end": 143877, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 29 }, "end": { - "line": 3530, + "line": 3538, "column": 38 }, "identifierName": "_position" @@ -151677,15 +152738,15 @@ { "type": "CommentBlock", "value": "*\n * Finalizes this SceneModel.\n *\n * Once finalized, you can't add anything more to this SceneModel.\n ", - "start": 141660, - "end": 141783, + "start": 142174, + "end": 142297, "loc": { "start": { - "line": 3478, + "line": 3486, "column": 4 }, "end": { - "line": 3482, + "line": 3490, "column": 7 } } @@ -151695,15 +152756,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 143376, - "end": 143391, + "start": 143890, + "end": 143905, "loc": { "start": { - "line": 3533, + "line": 3541, "column": 4 }, "end": { - "line": 3533, + "line": 3541, "column": 19 } } @@ -151712,15 +152773,15 @@ }, { "type": "ClassMethod", - "start": 143396, - "end": 143442, + "start": 143910, + "end": 143956, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 4 }, "end": { - "line": 3535, + "line": 3543, "column": 5 } }, @@ -151728,15 +152789,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 143396, - "end": 143412, + "start": 143910, + "end": 143926, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 4 }, "end": { - "line": 3534, + "line": 3542, "column": 20 }, "identifierName": "stateSortCompare" @@ -151752,15 +152813,15 @@ "params": [ { "type": "Identifier", - "start": 143413, - "end": 143422, + "start": 143927, + "end": 143936, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 21 }, "end": { - "line": 3534, + "line": 3542, "column": 30 }, "identifierName": "drawable1" @@ -151769,15 +152830,15 @@ }, { "type": "Identifier", - "start": 143424, - "end": 143433, + "start": 143938, + "end": 143947, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 32 }, "end": { - "line": 3534, + "line": 3542, "column": 41 }, "identifierName": "drawable2" @@ -151787,15 +152848,15 @@ ], "body": { "type": "BlockStatement", - "start": 143435, - "end": 143442, + "start": 143949, + "end": 143956, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 43 }, "end": { - "line": 3535, + "line": 3543, "column": 5 } }, @@ -151808,15 +152869,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 143376, - "end": 143391, + "start": 143890, + "end": 143905, "loc": { "start": { - "line": 3533, + "line": 3541, "column": 4 }, "end": { - "line": 3533, + "line": 3541, "column": 19 } } @@ -151826,15 +152887,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 143448, - "end": 143463, + "start": 143962, + "end": 143977, "loc": { "start": { - "line": 3537, + "line": 3545, "column": 4 }, "end": { - "line": 3537, + "line": 3545, "column": 19 } } @@ -151843,15 +152904,15 @@ }, { "type": "ClassMethod", - "start": 143468, - "end": 143776, + "start": 143982, + "end": 144290, "loc": { "start": { - "line": 3538, + "line": 3546, "column": 4 }, "end": { - "line": 3546, + "line": 3554, "column": 5 } }, @@ -151859,15 +152920,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 143468, - "end": 143486, + "start": 143982, + "end": 144000, "loc": { "start": { - "line": 3538, + "line": 3546, "column": 4 }, "end": { - "line": 3538, + "line": 3546, "column": 22 }, "identifierName": "rebuildRenderFlags" @@ -151883,101 +152944,101 @@ "params": [], "body": { "type": "BlockStatement", - "start": 143489, - "end": 143776, + "start": 144003, + "end": 144290, "loc": { "start": { - "line": 3538, + "line": 3546, "column": 25 }, "end": { - "line": 3546, + "line": 3554, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 143499, - "end": 143524, + "start": 144013, + "end": 144038, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 8 }, "end": { - "line": 3539, + "line": 3547, "column": 33 } }, "expression": { "type": "CallExpression", - "start": 143499, - "end": 143523, + "start": 144013, + "end": 144037, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 8 }, "end": { - "line": 3539, + "line": 3547, "column": 32 } }, "callee": { "type": "MemberExpression", - "start": 143499, - "end": 143521, + "start": 144013, + "end": 144035, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 8 }, "end": { - "line": 3539, + "line": 3547, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 143499, - "end": 143515, + "start": 144013, + "end": 144029, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 8 }, "end": { - "line": 3539, + "line": 3547, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 143499, - "end": 143503, + "start": 144013, + "end": 144017, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 8 }, "end": { - "line": 3539, + "line": 3547, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143504, - "end": 143515, + "start": 144018, + "end": 144029, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 13 }, "end": { - "line": 3539, + "line": 3547, "column": 24 }, "identifierName": "renderFlags" @@ -151988,15 +153049,15 @@ }, "property": { "type": "Identifier", - "start": 143516, - "end": 143521, + "start": 144030, + "end": 144035, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 25 }, "end": { - "line": 3539, + "line": 3547, "column": 30 }, "identifierName": "reset" @@ -152010,72 +153071,72 @@ }, { "type": "ExpressionStatement", - "start": 143533, - "end": 143572, + "start": 144047, + "end": 144086, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 8 }, "end": { - "line": 3540, + "line": 3548, "column": 47 } }, "expression": { "type": "CallExpression", - "start": 143533, - "end": 143571, + "start": 144047, + "end": 144085, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 8 }, "end": { - "line": 3540, + "line": 3548, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 143533, - "end": 143569, + "start": 144047, + "end": 144083, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 8 }, "end": { - "line": 3540, + "line": 3548, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 143533, - "end": 143537, + "start": 144047, + "end": 144051, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 8 }, "end": { - "line": 3540, + "line": 3548, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143538, - "end": 143569, + "start": 144052, + "end": 144083, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 13 }, "end": { - "line": 3540, + "line": 3548, "column": 44 }, "identifierName": "_updateRenderFlagsVisibleLayers" @@ -152089,100 +153150,100 @@ }, { "type": "IfStatement", - "start": 143581, - "end": 143735, + "start": 144095, + "end": 144249, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 8 }, "end": { - "line": 3544, + "line": 3552, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 143585, - "end": 143658, + "start": 144099, + "end": 144172, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 12 }, "end": { - "line": 3541, + "line": 3549, "column": 85 } }, "left": { "type": "BinaryExpression", - "start": 143585, - "end": 143615, + "start": 144099, + "end": 144129, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 12 }, "end": { - "line": 3541, + "line": 3549, "column": 42 } }, "left": { "type": "MemberExpression", - "start": 143585, - "end": 143611, + "start": 144099, + "end": 144125, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 12 }, "end": { - "line": 3541, + "line": 3549, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 143585, - "end": 143601, + "start": 144099, + "end": 144115, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 12 }, "end": { - "line": 3541, + "line": 3549, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 143585, - "end": 143589, + "start": 144099, + "end": 144103, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 12 }, "end": { - "line": 3541, + "line": 3549, "column": 16 } } }, "property": { "type": "Identifier", - "start": 143590, - "end": 143601, + "start": 144104, + "end": 144115, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 17 }, "end": { - "line": 3541, + "line": 3549, "column": 28 }, "identifierName": "renderFlags" @@ -152193,15 +153254,15 @@ }, "property": { "type": "Identifier", - "start": 143602, - "end": 143611, + "start": 144116, + "end": 144125, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 29 }, "end": { - "line": 3541, + "line": 3549, "column": 38 }, "identifierName": "numLayers" @@ -152213,15 +153274,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 143614, - "end": 143615, + "start": 144128, + "end": 144129, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 41 }, "end": { - "line": 3541, + "line": 3549, "column": 42 } }, @@ -152235,72 +153296,72 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 143619, - "end": 143658, + "start": 144133, + "end": 144172, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 46 }, "end": { - "line": 3541, + "line": 3549, "column": 85 } }, "left": { "type": "MemberExpression", - "start": 143619, - "end": 143652, + "start": 144133, + "end": 144166, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 46 }, "end": { - "line": 3541, + "line": 3549, "column": 79 } }, "object": { "type": "MemberExpression", - "start": 143619, - "end": 143635, + "start": 144133, + "end": 144149, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 46 }, "end": { - "line": 3541, + "line": 3549, "column": 62 } }, "object": { "type": "ThisExpression", - "start": 143619, - "end": 143623, + "start": 144133, + "end": 144137, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 46 }, "end": { - "line": 3541, + "line": 3549, "column": 50 } } }, "property": { "type": "Identifier", - "start": 143624, - "end": 143635, + "start": 144138, + "end": 144149, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 51 }, "end": { - "line": 3541, + "line": 3549, "column": 62 }, "identifierName": "renderFlags" @@ -152311,15 +153372,15 @@ }, "property": { "type": "Identifier", - "start": 143636, - "end": 143652, + "start": 144150, + "end": 144166, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 63 }, "end": { - "line": 3541, + "line": 3549, "column": 79 }, "identifierName": "numVisibleLayers" @@ -152331,15 +153392,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 143657, - "end": 143658, + "start": 144171, + "end": 144172, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 84 }, "end": { - "line": 3541, + "line": 3549, "column": 85 } }, @@ -152353,102 +153414,102 @@ }, "consequent": { "type": "BlockStatement", - "start": 143660, - "end": 143735, + "start": 144174, + "end": 144249, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 87 }, "end": { - "line": 3544, + "line": 3552, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 143674, - "end": 143705, + "start": 144188, + "end": 144219, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 12 }, "end": { - "line": 3542, + "line": 3550, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 143674, - "end": 143704, + "start": 144188, + "end": 144218, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 12 }, "end": { - "line": 3542, + "line": 3550, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143674, - "end": 143697, + "start": 144188, + "end": 144211, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 12 }, "end": { - "line": 3542, + "line": 3550, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 143674, - "end": 143690, + "start": 144188, + "end": 144204, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 12 }, "end": { - "line": 3542, + "line": 3550, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 143674, - "end": 143678, + "start": 144188, + "end": 144192, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 12 }, "end": { - "line": 3542, + "line": 3550, "column": 16 } } }, "property": { "type": "Identifier", - "start": 143679, - "end": 143690, + "start": 144193, + "end": 144204, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 17 }, "end": { - "line": 3542, + "line": 3550, "column": 28 }, "identifierName": "renderFlags" @@ -152459,15 +153520,15 @@ }, "property": { "type": "Identifier", - "start": 143691, - "end": 143697, + "start": 144205, + "end": 144211, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 29 }, "end": { - "line": 3542, + "line": 3550, "column": 35 }, "identifierName": "culled" @@ -152478,15 +153539,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 143700, - "end": 143704, + "start": 144214, + "end": 144218, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 38 }, "end": { - "line": 3542, + "line": 3550, "column": 42 } }, @@ -152496,15 +153557,15 @@ }, { "type": "ReturnStatement", - "start": 143718, - "end": 143725, + "start": 144232, + "end": 144239, "loc": { "start": { - "line": 3543, + "line": 3551, "column": 12 }, "end": { - "line": 3543, + "line": 3551, "column": 19 } }, @@ -152517,72 +153578,72 @@ }, { "type": "ExpressionStatement", - "start": 143744, - "end": 143770, + "start": 144258, + "end": 144284, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 8 }, "end": { - "line": 3545, + "line": 3553, "column": 34 } }, "expression": { "type": "CallExpression", - "start": 143744, - "end": 143769, + "start": 144258, + "end": 144283, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 8 }, "end": { - "line": 3545, + "line": 3553, "column": 33 } }, "callee": { "type": "MemberExpression", - "start": 143744, - "end": 143767, + "start": 144258, + "end": 144281, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 8 }, "end": { - "line": 3545, + "line": 3553, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 143744, - "end": 143748, + "start": 144258, + "end": 144262, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 8 }, "end": { - "line": 3545, + "line": 3553, "column": 12 } } }, "property": { "type": "Identifier", - "start": 143749, - "end": 143767, + "start": 144263, + "end": 144281, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 13 }, "end": { - "line": 3545, + "line": 3553, "column": 31 }, "identifierName": "_updateRenderFlags" @@ -152602,15 +153663,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 143448, - "end": 143463, + "start": 143962, + "end": 143977, "loc": { "start": { - "line": 3537, + "line": 3545, "column": 4 }, "end": { - "line": 3537, + "line": 3545, "column": 19 } } @@ -152620,15 +153681,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 143782, - "end": 143809, + "start": 144296, + "end": 144323, "loc": { "start": { - "line": 3548, + "line": 3556, "column": 4 }, "end": { - "line": 3550, + "line": 3558, "column": 7 } } @@ -152637,15 +153698,15 @@ }, { "type": "ClassMethod", - "start": 143814, - "end": 144370, + "start": 144328, + "end": 144884, "loc": { "start": { - "line": 3551, + "line": 3559, "column": 4 }, "end": { - "line": 3562, + "line": 3570, "column": 5 } }, @@ -152653,15 +153714,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 143814, - "end": 143845, + "start": 144328, + "end": 144359, "loc": { "start": { - "line": 3551, + "line": 3559, "column": 4 }, "end": { - "line": 3551, + "line": 3559, "column": 35 }, "identifierName": "_updateRenderFlagsVisibleLayers" @@ -152677,59 +153738,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 143848, - "end": 144370, + "start": 144362, + "end": 144884, "loc": { "start": { - "line": 3551, + "line": 3559, "column": 38 }, "end": { - "line": 3562, + "line": 3570, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 143858, - "end": 143895, + "start": 144372, + "end": 144409, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 8 }, "end": { - "line": 3552, + "line": 3560, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 143864, - "end": 143894, + "start": 144378, + "end": 144408, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 14 }, "end": { - "line": 3552, + "line": 3560, "column": 44 } }, "id": { "type": "Identifier", - "start": 143864, - "end": 143875, + "start": 144378, + "end": 144389, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 14 }, "end": { - "line": 3552, + "line": 3560, "column": 25 }, "identifierName": "renderFlags" @@ -152738,44 +153799,44 @@ }, "init": { "type": "MemberExpression", - "start": 143878, - "end": 143894, + "start": 144392, + "end": 144408, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 28 }, "end": { - "line": 3552, + "line": 3560, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 143878, - "end": 143882, + "start": 144392, + "end": 144396, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 28 }, "end": { - "line": 3552, + "line": 3560, "column": 32 } } }, "property": { "type": "Identifier", - "start": 143883, - "end": 143894, + "start": 144397, + "end": 144408, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 33 }, "end": { - "line": 3552, + "line": 3560, "column": 44 }, "identifierName": "renderFlags" @@ -152790,58 +153851,58 @@ }, { "type": "ExpressionStatement", - "start": 143904, - "end": 143950, + "start": 144418, + "end": 144464, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 8 }, "end": { - "line": 3553, + "line": 3561, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 143904, - "end": 143949, + "start": 144418, + "end": 144463, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 8 }, "end": { - "line": 3553, + "line": 3561, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143904, - "end": 143925, + "start": 144418, + "end": 144439, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 8 }, "end": { - "line": 3553, + "line": 3561, "column": 29 } }, "object": { "type": "Identifier", - "start": 143904, - "end": 143915, + "start": 144418, + "end": 144429, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 8 }, "end": { - "line": 3553, + "line": 3561, "column": 19 }, "identifierName": "renderFlags" @@ -152850,15 +153911,15 @@ }, "property": { "type": "Identifier", - "start": 143916, - "end": 143925, + "start": 144430, + "end": 144439, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 20 }, "end": { - "line": 3553, + "line": 3561, "column": 29 }, "identifierName": "numLayers" @@ -152869,58 +153930,58 @@ }, "right": { "type": "MemberExpression", - "start": 143928, - "end": 143949, + "start": 144442, + "end": 144463, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 32 }, "end": { - "line": 3553, + "line": 3561, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 143928, - "end": 143942, + "start": 144442, + "end": 144456, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 32 }, "end": { - "line": 3553, + "line": 3561, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 143928, - "end": 143932, + "start": 144442, + "end": 144446, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 32 }, "end": { - "line": 3553, + "line": 3561, "column": 36 } } }, "property": { "type": "Identifier", - "start": 143933, - "end": 143942, + "start": 144447, + "end": 144456, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 37 }, "end": { - "line": 3553, + "line": 3561, "column": 46 }, "identifierName": "layerList" @@ -152931,15 +153992,15 @@ }, "property": { "type": "Identifier", - "start": 143943, - "end": 143949, + "start": 144457, + "end": 144463, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 47 }, "end": { - "line": 3553, + "line": 3561, "column": 53 }, "identifierName": "length" @@ -152952,58 +154013,58 @@ }, { "type": "ExpressionStatement", - "start": 143959, - "end": 143992, + "start": 144473, + "end": 144506, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 8 }, "end": { - "line": 3554, + "line": 3562, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 143959, - "end": 143991, + "start": 144473, + "end": 144505, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 8 }, "end": { - "line": 3554, + "line": 3562, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 143959, - "end": 143987, + "start": 144473, + "end": 144501, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 8 }, "end": { - "line": 3554, + "line": 3562, "column": 36 } }, "object": { "type": "Identifier", - "start": 143959, - "end": 143970, + "start": 144473, + "end": 144484, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 8 }, "end": { - "line": 3554, + "line": 3562, "column": 19 }, "identifierName": "renderFlags" @@ -153012,15 +154073,15 @@ }, "property": { "type": "Identifier", - "start": 143971, - "end": 143987, + "start": 144485, + "end": 144501, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 20 }, "end": { - "line": 3554, + "line": 3562, "column": 36 }, "identifierName": "numVisibleLayers" @@ -153031,15 +154092,15 @@ }, "right": { "type": "NumericLiteral", - "start": 143990, - "end": 143991, + "start": 144504, + "end": 144505, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 39 }, "end": { - "line": 3554, + "line": 3562, "column": 40 } }, @@ -153053,58 +154114,58 @@ }, { "type": "ForStatement", - "start": 144001, - "end": 144364, + "start": 144515, + "end": 144878, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 8 }, "end": { - "line": 3561, + "line": 3569, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 144006, - "end": 144053, + "start": 144520, + "end": 144567, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 13 }, "end": { - "line": 3555, + "line": 3563, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 144010, - "end": 144024, + "start": 144524, + "end": 144538, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 17 }, "end": { - "line": 3555, + "line": 3563, "column": 31 } }, "id": { "type": "Identifier", - "start": 144010, - "end": 144020, + "start": 144524, + "end": 144534, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 17 }, "end": { - "line": 3555, + "line": 3563, "column": 27 }, "identifierName": "layerIndex" @@ -153113,15 +154174,15 @@ }, "init": { "type": "NumericLiteral", - "start": 144023, - "end": 144024, + "start": 144537, + "end": 144538, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 30 }, "end": { - "line": 3555, + "line": 3563, "column": 31 } }, @@ -153134,29 +154195,29 @@ }, { "type": "VariableDeclarator", - "start": 144026, - "end": 144053, + "start": 144540, + "end": 144567, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 33 }, "end": { - "line": 3555, + "line": 3563, "column": 60 } }, "id": { "type": "Identifier", - "start": 144026, - "end": 144029, + "start": 144540, + "end": 144543, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 33 }, "end": { - "line": 3555, + "line": 3563, "column": 36 }, "identifierName": "len" @@ -153165,58 +154226,58 @@ }, "init": { "type": "MemberExpression", - "start": 144032, - "end": 144053, + "start": 144546, + "end": 144567, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 39 }, "end": { - "line": 3555, + "line": 3563, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 144032, - "end": 144046, + "start": 144546, + "end": 144560, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 39 }, "end": { - "line": 3555, + "line": 3563, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 144032, - "end": 144036, + "start": 144546, + "end": 144550, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 39 }, "end": { - "line": 3555, + "line": 3563, "column": 43 } } }, "property": { "type": "Identifier", - "start": 144037, - "end": 144046, + "start": 144551, + "end": 144560, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 44 }, "end": { - "line": 3555, + "line": 3563, "column": 53 }, "identifierName": "layerList" @@ -153227,15 +154288,15 @@ }, "property": { "type": "Identifier", - "start": 144047, - "end": 144053, + "start": 144561, + "end": 144567, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 54 }, "end": { - "line": 3555, + "line": 3563, "column": 60 }, "identifierName": "length" @@ -153250,29 +154311,29 @@ }, "test": { "type": "BinaryExpression", - "start": 144055, - "end": 144071, + "start": 144569, + "end": 144585, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 62 }, "end": { - "line": 3555, + "line": 3563, "column": 78 } }, "left": { "type": "Identifier", - "start": 144055, - "end": 144065, + "start": 144569, + "end": 144579, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 62 }, "end": { - "line": 3555, + "line": 3563, "column": 72 }, "identifierName": "layerIndex" @@ -153282,15 +154343,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 144068, - "end": 144071, + "start": 144582, + "end": 144585, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 75 }, "end": { - "line": 3555, + "line": 3563, "column": 78 }, "identifierName": "len" @@ -153300,15 +154361,15 @@ }, "update": { "type": "UpdateExpression", - "start": 144073, - "end": 144085, + "start": 144587, + "end": 144599, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 80 }, "end": { - "line": 3555, + "line": 3563, "column": 92 } }, @@ -153316,15 +154377,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 144073, - "end": 144083, + "start": 144587, + "end": 144597, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 80 }, "end": { - "line": 3555, + "line": 3563, "column": 90 }, "identifierName": "layerIndex" @@ -153334,59 +154395,59 @@ }, "body": { "type": "BlockStatement", - "start": 144087, - "end": 144364, + "start": 144601, + "end": 144878, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 94 }, "end": { - "line": 3561, + "line": 3569, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 144101, - "end": 144142, + "start": 144615, + "end": 144656, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 12 }, "end": { - "line": 3556, + "line": 3564, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 144107, - "end": 144141, + "start": 144621, + "end": 144655, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 18 }, "end": { - "line": 3556, + "line": 3564, "column": 52 } }, "id": { "type": "Identifier", - "start": 144107, - "end": 144112, + "start": 144621, + "end": 144626, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 18 }, "end": { - "line": 3556, + "line": 3564, "column": 23 }, "identifierName": "layer" @@ -153395,58 +154456,58 @@ }, "init": { "type": "MemberExpression", - "start": 144115, - "end": 144141, + "start": 144629, + "end": 144655, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 26 }, "end": { - "line": 3556, + "line": 3564, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 144115, - "end": 144129, + "start": 144629, + "end": 144643, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 26 }, "end": { - "line": 3556, + "line": 3564, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 144115, - "end": 144119, + "start": 144629, + "end": 144633, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 26 }, "end": { - "line": 3556, + "line": 3564, "column": 30 } } }, "property": { "type": "Identifier", - "start": 144120, - "end": 144129, + "start": 144634, + "end": 144643, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 31 }, "end": { - "line": 3556, + "line": 3564, "column": 40 }, "identifierName": "layerList" @@ -153457,15 +154518,15 @@ }, "property": { "type": "Identifier", - "start": 144130, - "end": 144140, + "start": 144644, + "end": 144654, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 41 }, "end": { - "line": 3556, + "line": 3564, "column": 51 }, "identifierName": "layerIndex" @@ -153480,44 +154541,44 @@ }, { "type": "VariableDeclaration", - "start": 144155, - "end": 144220, + "start": 144669, + "end": 144734, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 12 }, "end": { - "line": 3557, + "line": 3565, "column": 77 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 144161, - "end": 144219, + "start": 144675, + "end": 144733, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 18 }, "end": { - "line": 3557, + "line": 3565, "column": 76 } }, "id": { "type": "Identifier", - "start": 144161, - "end": 144173, + "start": 144675, + "end": 144687, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 18 }, "end": { - "line": 3557, + "line": 3565, "column": 30 }, "identifierName": "layerVisible" @@ -153526,58 +154587,58 @@ }, "init": { "type": "CallExpression", - "start": 144176, - "end": 144219, + "start": 144690, + "end": 144733, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 33 }, "end": { - "line": 3557, + "line": 3565, "column": 76 } }, "callee": { "type": "MemberExpression", - "start": 144176, - "end": 144212, + "start": 144690, + "end": 144726, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 33 }, "end": { - "line": 3557, + "line": 3565, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 144176, - "end": 144180, + "start": 144690, + "end": 144694, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 33 }, "end": { - "line": 3557, + "line": 3565, "column": 37 } } }, "property": { "type": "Identifier", - "start": 144181, - "end": 144212, + "start": 144695, + "end": 144726, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 38 }, "end": { - "line": 3557, + "line": 3565, "column": 69 }, "identifierName": "_getActiveSectionPlanesForLayer" @@ -153589,15 +154650,15 @@ "arguments": [ { "type": "Identifier", - "start": 144213, - "end": 144218, + "start": 144727, + "end": 144732, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 70 }, "end": { - "line": 3557, + "line": 3565, "column": 75 }, "identifierName": "layer" @@ -153612,29 +154673,29 @@ }, { "type": "IfStatement", - "start": 144233, - "end": 144354, + "start": 144747, + "end": 144868, "loc": { "start": { - "line": 3558, + "line": 3566, "column": 12 }, "end": { - "line": 3560, + "line": 3568, "column": 13 } }, "test": { "type": "Identifier", - "start": 144237, - "end": 144249, + "start": 144751, + "end": 144763, "loc": { "start": { - "line": 3558, + "line": 3566, "column": 16 }, "end": { - "line": 3558, + "line": 3566, "column": 28 }, "identifierName": "layerVisible" @@ -153643,87 +154704,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 144251, - "end": 144354, + "start": 144765, + "end": 144868, "loc": { "start": { - "line": 3558, + "line": 3566, "column": 30 }, "end": { - "line": 3560, + "line": 3568, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 144269, - "end": 144340, + "start": 144783, + "end": 144854, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 16 }, "end": { - "line": 3559, + "line": 3567, "column": 87 } }, "expression": { "type": "AssignmentExpression", - "start": 144269, - "end": 144339, + "start": 144783, + "end": 144853, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 16 }, "end": { - "line": 3559, + "line": 3567, "column": 86 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 144269, - "end": 144326, + "start": 144783, + "end": 144840, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 16 }, "end": { - "line": 3559, + "line": 3567, "column": 73 } }, "object": { "type": "MemberExpression", - "start": 144269, - "end": 144294, + "start": 144783, + "end": 144808, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 16 }, "end": { - "line": 3559, + "line": 3567, "column": 41 } }, "object": { "type": "Identifier", - "start": 144269, - "end": 144280, + "start": 144783, + "end": 144794, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 16 }, "end": { - "line": 3559, + "line": 3567, "column": 27 }, "identifierName": "renderFlags" @@ -153732,15 +154793,15 @@ }, "property": { "type": "Identifier", - "start": 144281, - "end": 144294, + "start": 144795, + "end": 144808, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 28 }, "end": { - "line": 3559, + "line": 3567, "column": 41 }, "identifierName": "visibleLayers" @@ -153751,15 +154812,15 @@ }, "property": { "type": "UpdateExpression", - "start": 144295, - "end": 144325, + "start": 144809, + "end": 144839, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 42 }, "end": { - "line": 3559, + "line": 3567, "column": 72 } }, @@ -153767,29 +154828,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 144295, - "end": 144323, + "start": 144809, + "end": 144837, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 42 }, "end": { - "line": 3559, + "line": 3567, "column": 70 } }, "object": { "type": "Identifier", - "start": 144295, - "end": 144306, + "start": 144809, + "end": 144820, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 42 }, "end": { - "line": 3559, + "line": 3567, "column": 53 }, "identifierName": "renderFlags" @@ -153798,15 +154859,15 @@ }, "property": { "type": "Identifier", - "start": 144307, - "end": 144323, + "start": 144821, + "end": 144837, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 54 }, "end": { - "line": 3559, + "line": 3567, "column": 70 }, "identifierName": "numVisibleLayers" @@ -153820,15 +154881,15 @@ }, "right": { "type": "Identifier", - "start": 144329, - "end": 144339, + "start": 144843, + "end": 144853, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 76 }, "end": { - "line": 3559, + "line": 3567, "column": 86 }, "identifierName": "layerIndex" @@ -153854,15 +154915,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 143782, - "end": 143809, + "start": 144296, + "end": 144323, "loc": { "start": { - "line": 3548, + "line": 3556, "column": 4 }, "end": { - "line": 3550, + "line": 3558, "column": 7 } } @@ -153872,15 +154933,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 144376, - "end": 144391, + "start": 144890, + "end": 144905, "loc": { "start": { - "line": 3564, + "line": 3572, "column": 4 }, "end": { - "line": 3564, + "line": 3572, "column": 19 } } @@ -153889,15 +154950,15 @@ }, { "type": "ClassMethod", - "start": 144396, - "end": 144928, + "start": 144910, + "end": 145442, "loc": { "start": { - "line": 3565, + "line": 3573, "column": 4 }, "end": { - "line": 3577, + "line": 3585, "column": 5 } }, @@ -153905,15 +154966,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 144396, - "end": 144429, + "start": 144910, + "end": 144943, "loc": { "start": { - "line": 3565, + "line": 3573, "column": 4 }, "end": { - "line": 3565, + "line": 3573, "column": 37 }, "identifierName": "_createDummyEntityForUnusedMeshes" @@ -153929,59 +154990,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 144432, - "end": 144928, + "start": 144946, + "end": 145442, "loc": { "start": { - "line": 3565, + "line": 3573, "column": 40 }, "end": { - "line": 3577, + "line": 3585, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 144442, - "end": 144496, + "start": 144956, + "end": 145010, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 8 }, "end": { - "line": 3566, + "line": 3574, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 144448, - "end": 144495, + "start": 144962, + "end": 145009, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 14 }, "end": { - "line": 3566, + "line": 3574, "column": 61 } }, "id": { "type": "Identifier", - "start": 144448, - "end": 144461, + "start": 144962, + "end": 144975, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 14 }, "end": { - "line": 3566, + "line": 3574, "column": 27 }, "identifierName": "unusedMeshIds" @@ -153990,43 +155051,43 @@ }, "init": { "type": "CallExpression", - "start": 144464, - "end": 144495, + "start": 144978, + "end": 145009, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 30 }, "end": { - "line": 3566, + "line": 3574, "column": 61 } }, "callee": { "type": "MemberExpression", - "start": 144464, - "end": 144475, + "start": 144978, + "end": 144989, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 30 }, "end": { - "line": 3566, + "line": 3574, "column": 41 } }, "object": { "type": "Identifier", - "start": 144464, - "end": 144470, + "start": 144978, + "end": 144984, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 30 }, "end": { - "line": 3566, + "line": 3574, "column": 36 }, "identifierName": "Object" @@ -154035,15 +155096,15 @@ }, "property": { "type": "Identifier", - "start": 144471, - "end": 144475, + "start": 144985, + "end": 144989, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 37 }, "end": { - "line": 3566, + "line": 3574, "column": 41 }, "identifierName": "keys" @@ -154055,44 +155116,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 144476, - "end": 144494, + "start": 144990, + "end": 145008, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 42 }, "end": { - "line": 3566, + "line": 3574, "column": 60 } }, "object": { "type": "ThisExpression", - "start": 144476, - "end": 144480, + "start": 144990, + "end": 144994, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 42 }, "end": { - "line": 3566, + "line": 3574, "column": 46 } } }, "property": { "type": "Identifier", - "start": 144481, - "end": 144494, + "start": 144995, + "end": 145008, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 47 }, "end": { - "line": 3566, + "line": 3574, "column": 60 }, "identifierName": "_unusedMeshes" @@ -154109,57 +155170,57 @@ }, { "type": "IfStatement", - "start": 144505, - "end": 144889, + "start": 145019, + "end": 145403, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 8 }, "end": { - "line": 3575, + "line": 3583, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 144509, - "end": 144533, + "start": 145023, + "end": 145047, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 12 }, "end": { - "line": 3567, + "line": 3575, "column": 36 } }, "left": { "type": "MemberExpression", - "start": 144509, - "end": 144529, + "start": 145023, + "end": 145043, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 12 }, "end": { - "line": 3567, + "line": 3575, "column": 32 } }, "object": { "type": "Identifier", - "start": 144509, - "end": 144522, + "start": 145023, + "end": 145036, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 12 }, "end": { - "line": 3567, + "line": 3575, "column": 25 }, "identifierName": "unusedMeshIds" @@ -154168,15 +155229,15 @@ }, "property": { "type": "Identifier", - "start": 144523, - "end": 144529, + "start": 145037, + "end": 145043, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 26 }, "end": { - "line": 3567, + "line": 3575, "column": 32 }, "identifierName": "length" @@ -154188,15 +155249,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 144532, - "end": 144533, + "start": 145046, + "end": 145047, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 35 }, "end": { - "line": 3567, + "line": 3575, "column": 36 } }, @@ -154209,59 +155270,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 144535, - "end": 144889, + "start": 145049, + "end": 145403, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 38 }, "end": { - "line": 3575, + "line": 3583, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 144549, - "end": 144606, + "start": 145063, + "end": 145120, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 12 }, "end": { - "line": 3568, + "line": 3576, "column": 69 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 144555, - "end": 144605, + "start": 145069, + "end": 145119, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 18 }, "end": { - "line": 3568, + "line": 3576, "column": 68 } }, "id": { "type": "Identifier", - "start": 144555, - "end": 144563, + "start": 145069, + "end": 145077, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 18 }, "end": { - "line": 3568, + "line": 3576, "column": 26 }, "identifierName": "entityId" @@ -154270,59 +155331,59 @@ }, "init": { "type": "TemplateLiteral", - "start": 144566, - "end": 144605, + "start": 145080, + "end": 145119, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 29 }, "end": { - "line": 3568, + "line": 3576, "column": 68 } }, "expressions": [ { "type": "MemberExpression", - "start": 144569, - "end": 144576, + "start": 145083, + "end": 145090, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 32 }, "end": { - "line": 3568, + "line": 3576, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 144569, - "end": 144573, + "start": 145083, + "end": 145087, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 32 }, "end": { - "line": 3568, + "line": 3576, "column": 36 } } }, "property": { "type": "Identifier", - "start": 144574, - "end": 144576, + "start": 145088, + "end": 145090, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 37 }, "end": { - "line": 3568, + "line": 3576, "column": 39 }, "identifierName": "id" @@ -154335,15 +155396,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 144567, - "end": 144567, + "start": 145081, + "end": 145081, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 30 }, "end": { - "line": 3568, + "line": 3576, "column": 30 } }, @@ -154355,15 +155416,15 @@ }, { "type": "TemplateElement", - "start": 144577, - "end": 144604, + "start": 145091, + "end": 145118, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 40 }, "end": { - "line": 3568, + "line": 3576, "column": 67 } }, @@ -154381,72 +155442,72 @@ }, { "type": "ExpressionStatement", - "start": 144619, - "end": 144730, + "start": 145133, + "end": 145244, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 12 }, "end": { - "line": 3569, + "line": 3577, "column": 123 } }, "expression": { "type": "CallExpression", - "start": 144619, - "end": 144730, + "start": 145133, + "end": 145244, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 12 }, "end": { - "line": 3569, + "line": 3577, "column": 123 } }, "callee": { "type": "MemberExpression", - "start": 144619, - "end": 144628, + "start": 145133, + "end": 145142, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 12 }, "end": { - "line": 3569, + "line": 3577, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 144619, - "end": 144623, + "start": 145133, + "end": 145137, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 12 }, "end": { - "line": 3569, + "line": 3577, "column": 16 } } }, "property": { "type": "Identifier", - "start": 144624, - "end": 144628, + "start": 145138, + "end": 145142, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 17 }, "end": { - "line": 3569, + "line": 3577, "column": 21 }, "identifierName": "warn" @@ -154458,30 +155519,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 144629, - "end": 144729, + "start": 145143, + "end": 145243, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 22 }, "end": { - "line": 3569, + "line": 3577, "column": 122 } }, "expressions": [ { "type": "Identifier", - "start": 144665, - "end": 144673, + "start": 145179, + "end": 145187, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 58 }, "end": { - "line": 3569, + "line": 3577, "column": 66 }, "identifierName": "entityId" @@ -154490,43 +155551,43 @@ }, { "type": "CallExpression", - "start": 144703, - "end": 144726, + "start": 145217, + "end": 145240, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 96 }, "end": { - "line": 3569, + "line": 3577, "column": 119 } }, "callee": { "type": "MemberExpression", - "start": 144703, - "end": 144721, + "start": 145217, + "end": 145235, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 96 }, "end": { - "line": 3569, + "line": 3577, "column": 114 } }, "object": { "type": "Identifier", - "start": 144703, - "end": 144716, + "start": 145217, + "end": 145230, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 96 }, "end": { - "line": 3569, + "line": 3577, "column": 109 }, "identifierName": "unusedMeshIds" @@ -154535,15 +155596,15 @@ }, "property": { "type": "Identifier", - "start": 144717, - "end": 144721, + "start": 145231, + "end": 145235, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 110 }, "end": { - "line": 3569, + "line": 3577, "column": 114 }, "identifierName": "join" @@ -154555,15 +155616,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 144722, - "end": 144725, + "start": 145236, + "end": 145239, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 115 }, "end": { - "line": 3569, + "line": 3577, "column": 118 } }, @@ -154579,15 +155640,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 144630, - "end": 144663, + "start": 145144, + "end": 145177, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 23 }, "end": { - "line": 3569, + "line": 3577, "column": 56 } }, @@ -154599,15 +155660,15 @@ }, { "type": "TemplateElement", - "start": 144674, - "end": 144701, + "start": 145188, + "end": 145215, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 67 }, "end": { - "line": 3569, + "line": 3577, "column": 94 } }, @@ -154619,15 +155680,15 @@ }, { "type": "TemplateElement", - "start": 144727, - "end": 144728, + "start": 145241, + "end": 145242, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 120 }, "end": { - "line": 3569, + "line": 3577, "column": 121 } }, @@ -154644,72 +155705,72 @@ }, { "type": "ExpressionStatement", - "start": 144743, - "end": 144879, + "start": 145257, + "end": 145393, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 12 }, "end": { - "line": 3574, + "line": 3582, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 144743, - "end": 144878, + "start": 145257, + "end": 145392, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 12 }, "end": { - "line": 3574, + "line": 3582, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 144743, - "end": 144760, + "start": 145257, + "end": 145274, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 12 }, "end": { - "line": 3570, + "line": 3578, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 144743, - "end": 144747, + "start": 145257, + "end": 145261, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 12 }, "end": { - "line": 3570, + "line": 3578, "column": 16 } } }, "property": { "type": "Identifier", - "start": 144748, - "end": 144760, + "start": 145262, + "end": 145274, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 17 }, "end": { - "line": 3570, + "line": 3578, "column": 29 }, "identifierName": "createEntity" @@ -154721,30 +155782,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 144761, - "end": 144877, + "start": 145275, + "end": 145391, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 30 }, "end": { - "line": 3574, + "line": 3582, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 144779, - "end": 144791, + "start": 145293, + "end": 145305, "loc": { "start": { - "line": 3571, + "line": 3579, "column": 16 }, "end": { - "line": 3571, + "line": 3579, "column": 28 } }, @@ -154753,15 +155814,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 144779, - "end": 144781, + "start": 145293, + "end": 145295, "loc": { "start": { - "line": 3571, + "line": 3579, "column": 16 }, "end": { - "line": 3571, + "line": 3579, "column": 18 }, "identifierName": "id" @@ -154770,15 +155831,15 @@ }, "value": { "type": "Identifier", - "start": 144783, - "end": 144791, + "start": 145297, + "end": 145305, "loc": { "start": { - "line": 3571, + "line": 3579, "column": 20 }, "end": { - "line": 3571, + "line": 3579, "column": 28 }, "identifierName": "entityId" @@ -154788,15 +155849,15 @@ }, { "type": "ObjectProperty", - "start": 144809, - "end": 144831, + "start": 145323, + "end": 145345, "loc": { "start": { - "line": 3572, + "line": 3580, "column": 16 }, "end": { - "line": 3572, + "line": 3580, "column": 38 } }, @@ -154805,15 +155866,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 144809, - "end": 144816, + "start": 145323, + "end": 145330, "loc": { "start": { - "line": 3572, + "line": 3580, "column": 16 }, "end": { - "line": 3572, + "line": 3580, "column": 23 }, "identifierName": "meshIds" @@ -154822,15 +155883,15 @@ }, "value": { "type": "Identifier", - "start": 144818, - "end": 144831, + "start": 145332, + "end": 145345, "loc": { "start": { - "line": 3572, + "line": 3580, "column": 25 }, "end": { - "line": 3572, + "line": 3580, "column": 38 }, "identifierName": "unusedMeshIds" @@ -154840,15 +155901,15 @@ }, { "type": "ObjectProperty", - "start": 144849, - "end": 144863, + "start": 145363, + "end": 145377, "loc": { "start": { - "line": 3573, + "line": 3581, "column": 16 }, "end": { - "line": 3573, + "line": 3581, "column": 30 } }, @@ -154857,15 +155918,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 144849, - "end": 144857, + "start": 145363, + "end": 145371, "loc": { "start": { - "line": 3573, + "line": 3581, "column": 16 }, "end": { - "line": 3573, + "line": 3581, "column": 24 }, "identifierName": "isObject" @@ -154874,15 +155935,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 144859, - "end": 144863, + "start": 145373, + "end": 145377, "loc": { "start": { - "line": 3573, + "line": 3581, "column": 26 }, "end": { - "line": 3573, + "line": 3581, "column": 30 } }, @@ -154901,73 +155962,73 @@ }, { "type": "ExpressionStatement", - "start": 144898, - "end": 144922, + "start": 145412, + "end": 145436, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 8 }, "end": { - "line": 3576, + "line": 3584, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 144898, - "end": 144921, + "start": 145412, + "end": 145435, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 8 }, "end": { - "line": 3576, + "line": 3584, "column": 31 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 144898, - "end": 144916, + "start": 145412, + "end": 145430, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 8 }, "end": { - "line": 3576, + "line": 3584, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 144898, - "end": 144902, + "start": 145412, + "end": 145416, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 8 }, "end": { - "line": 3576, + "line": 3584, "column": 12 } } }, "property": { "type": "Identifier", - "start": 144903, - "end": 144916, + "start": 145417, + "end": 145430, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 13 }, "end": { - "line": 3576, + "line": 3584, "column": 26 }, "identifierName": "_unusedMeshes" @@ -154978,15 +156039,15 @@ }, "right": { "type": "ObjectExpression", - "start": 144919, - "end": 144921, + "start": 145433, + "end": 145435, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 29 }, "end": { - "line": 3576, + "line": 3584, "column": 31 } }, @@ -155001,15 +156062,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 144376, - "end": 144391, + "start": 144890, + "end": 144905, "loc": { "start": { - "line": 3564, + "line": 3572, "column": 4 }, "end": { - "line": 3564, + "line": 3572, "column": 19 } } @@ -155018,15 +156079,15 @@ }, { "type": "ClassMethod", - "start": 144934, - "end": 145717, + "start": 145448, + "end": 146231, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 4 }, "end": { - "line": 3596, + "line": 3604, "column": 5 } }, @@ -155034,15 +156095,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 144934, - "end": 144965, + "start": 145448, + "end": 145479, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 4 }, "end": { - "line": 3579, + "line": 3587, "column": 35 }, "identifierName": "_getActiveSectionPlanesForLayer" @@ -155057,15 +156118,15 @@ "params": [ { "type": "Identifier", - "start": 144966, - "end": 144971, + "start": 145480, + "end": 145485, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 36 }, "end": { - "line": 3579, + "line": 3587, "column": 41 }, "identifierName": "layer" @@ -155075,59 +156136,59 @@ ], "body": { "type": "BlockStatement", - "start": 144973, - "end": 145717, + "start": 145487, + "end": 146231, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 43 }, "end": { - "line": 3596, + "line": 3604, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 144983, - "end": 145020, + "start": 145497, + "end": 145534, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 8 }, "end": { - "line": 3580, + "line": 3588, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 144989, - "end": 145019, + "start": 145503, + "end": 145533, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 14 }, "end": { - "line": 3580, + "line": 3588, "column": 44 } }, "id": { "type": "Identifier", - "start": 144989, - "end": 145000, + "start": 145503, + "end": 145514, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 14 }, "end": { - "line": 3580, + "line": 3588, "column": 25 }, "identifierName": "renderFlags" @@ -155136,44 +156197,44 @@ }, "init": { "type": "MemberExpression", - "start": 145003, - "end": 145019, + "start": 145517, + "end": 145533, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 28 }, "end": { - "line": 3580, + "line": 3588, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 145003, - "end": 145007, + "start": 145517, + "end": 145521, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 28 }, "end": { - "line": 3580, + "line": 3588, "column": 32 } } }, "property": { "type": "Identifier", - "start": 145008, - "end": 145019, + "start": 145522, + "end": 145533, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 33 }, "end": { - "line": 3580, + "line": 3588, "column": 44 }, "identifierName": "renderFlags" @@ -155188,44 +156249,44 @@ }, { "type": "VariableDeclaration", - "start": 145029, - "end": 145096, + "start": 145543, + "end": 145610, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 8 }, "end": { - "line": 3581, + "line": 3589, "column": 75 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 145035, - "end": 145095, + "start": 145549, + "end": 145609, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 14 }, "end": { - "line": 3581, + "line": 3589, "column": 74 } }, "id": { "type": "Identifier", - "start": 145035, - "end": 145048, + "start": 145549, + "end": 145562, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 14 }, "end": { - "line": 3581, + "line": 3589, "column": 27 }, "identifierName": "sectionPlanes" @@ -155234,72 +156295,72 @@ }, "init": { "type": "MemberExpression", - "start": 145051, - "end": 145095, + "start": 145565, + "end": 145609, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 30 }, "end": { - "line": 3581, + "line": 3589, "column": 74 } }, "object": { "type": "MemberExpression", - "start": 145051, - "end": 145081, + "start": 145565, + "end": 145595, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 30 }, "end": { - "line": 3581, + "line": 3589, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 145051, - "end": 145061, + "start": 145565, + "end": 145575, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 30 }, "end": { - "line": 3581, + "line": 3589, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 145051, - "end": 145055, + "start": 145565, + "end": 145569, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 30 }, "end": { - "line": 3581, + "line": 3589, "column": 34 } } }, "property": { "type": "Identifier", - "start": 145056, - "end": 145061, + "start": 145570, + "end": 145575, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 35 }, "end": { - "line": 3581, + "line": 3589, "column": 40 }, "identifierName": "scene" @@ -155310,15 +156371,15 @@ }, "property": { "type": "Identifier", - "start": 145062, - "end": 145081, + "start": 145576, + "end": 145595, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 41 }, "end": { - "line": 3581, + "line": 3589, "column": 60 }, "identifierName": "_sectionPlanesState" @@ -155329,15 +156390,15 @@ }, "property": { "type": "Identifier", - "start": 145082, - "end": 145095, + "start": 145596, + "end": 145609, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 61 }, "end": { - "line": 3581, + "line": 3589, "column": 74 }, "identifierName": "sectionPlanes" @@ -155352,44 +156413,44 @@ }, { "type": "VariableDeclaration", - "start": 145105, - "end": 145151, + "start": 145619, + "end": 145665, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 8 }, "end": { - "line": 3582, + "line": 3590, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 145111, - "end": 145150, + "start": 145625, + "end": 145664, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 14 }, "end": { - "line": 3582, + "line": 3590, "column": 53 } }, "id": { "type": "Identifier", - "start": 145111, - "end": 145127, + "start": 145625, + "end": 145641, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 14 }, "end": { - "line": 3582, + "line": 3590, "column": 30 }, "identifierName": "numSectionPlanes" @@ -155398,29 +156459,29 @@ }, "init": { "type": "MemberExpression", - "start": 145130, - "end": 145150, + "start": 145644, + "end": 145664, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 33 }, "end": { - "line": 3582, + "line": 3590, "column": 53 } }, "object": { "type": "Identifier", - "start": 145130, - "end": 145143, + "start": 145644, + "end": 145657, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 33 }, "end": { - "line": 3582, + "line": 3590, "column": 46 }, "identifierName": "sectionPlanes" @@ -155429,15 +156490,15 @@ }, "property": { "type": "Identifier", - "start": 145144, - "end": 145150, + "start": 145658, + "end": 145664, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 47 }, "end": { - "line": 3582, + "line": 3590, "column": 53 }, "identifierName": "length" @@ -155452,44 +156513,44 @@ }, { "type": "VariableDeclaration", - "start": 145160, - "end": 145214, + "start": 145674, + "end": 145728, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 8 }, "end": { - "line": 3583, + "line": 3591, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 145166, - "end": 145213, + "start": 145680, + "end": 145727, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 14 }, "end": { - "line": 3583, + "line": 3591, "column": 61 } }, "id": { "type": "Identifier", - "start": 145166, - "end": 145175, + "start": 145680, + "end": 145689, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 14 }, "end": { - "line": 3583, + "line": 3591, "column": 23 }, "identifierName": "baseIndex" @@ -155498,43 +156559,43 @@ }, "init": { "type": "BinaryExpression", - "start": 145178, - "end": 145213, + "start": 145692, + "end": 145727, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 26 }, "end": { - "line": 3583, + "line": 3591, "column": 61 } }, "left": { "type": "MemberExpression", - "start": 145178, - "end": 145194, + "start": 145692, + "end": 145708, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 26 }, "end": { - "line": 3583, + "line": 3591, "column": 42 } }, "object": { "type": "Identifier", - "start": 145178, - "end": 145183, + "start": 145692, + "end": 145697, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 26 }, "end": { - "line": 3583, + "line": 3591, "column": 31 }, "identifierName": "layer" @@ -155543,15 +156604,15 @@ }, "property": { "type": "Identifier", - "start": 145184, - "end": 145194, + "start": 145698, + "end": 145708, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 32 }, "end": { - "line": 3583, + "line": 3591, "column": 42 }, "identifierName": "layerIndex" @@ -155563,15 +156624,15 @@ "operator": "*", "right": { "type": "Identifier", - "start": 145197, - "end": 145213, + "start": 145711, + "end": 145727, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 45 }, "end": { - "line": 3583, + "line": 3591, "column": 61 }, "identifierName": "numSectionPlanes" @@ -155585,43 +156646,43 @@ }, { "type": "IfStatement", - "start": 145223, - "end": 145690, + "start": 145737, + "end": 146204, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 8 }, "end": { - "line": 3594, + "line": 3602, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 145227, - "end": 145247, + "start": 145741, + "end": 145761, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 12 }, "end": { - "line": 3584, + "line": 3592, "column": 32 } }, "left": { "type": "Identifier", - "start": 145227, - "end": 145243, + "start": 145741, + "end": 145757, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 12 }, "end": { - "line": 3584, + "line": 3592, "column": 28 }, "identifierName": "numSectionPlanes" @@ -155631,15 +156692,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 145246, - "end": 145247, + "start": 145760, + "end": 145761, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 31 }, "end": { - "line": 3584, + "line": 3592, "column": 32 } }, @@ -155652,73 +156713,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 145249, - "end": 145690, + "start": 145763, + "end": 146204, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 34 }, "end": { - "line": 3594, + "line": 3602, "column": 9 } }, "body": [ { "type": "ForStatement", - "start": 145263, - "end": 145680, + "start": 145777, + "end": 146194, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 12 }, "end": { - "line": 3593, + "line": 3601, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 145268, - "end": 145277, + "start": 145782, + "end": 145791, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 17 }, "end": { - "line": 3585, + "line": 3593, "column": 26 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 145272, - "end": 145277, + "start": 145786, + "end": 145791, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 21 }, "end": { - "line": 3585, + "line": 3593, "column": 26 } }, "id": { "type": "Identifier", - "start": 145272, - "end": 145273, + "start": 145786, + "end": 145787, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 21 }, "end": { - "line": 3585, + "line": 3593, "column": 22 }, "identifierName": "i" @@ -155727,15 +156788,15 @@ }, "init": { "type": "NumericLiteral", - "start": 145276, - "end": 145277, + "start": 145790, + "end": 145791, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 25 }, "end": { - "line": 3585, + "line": 3593, "column": 26 } }, @@ -155751,29 +156812,29 @@ }, "test": { "type": "BinaryExpression", - "start": 145279, - "end": 145299, + "start": 145793, + "end": 145813, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 28 }, "end": { - "line": 3585, + "line": 3593, "column": 48 } }, "left": { "type": "Identifier", - "start": 145279, - "end": 145280, + "start": 145793, + "end": 145794, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 28 }, "end": { - "line": 3585, + "line": 3593, "column": 29 }, "identifierName": "i" @@ -155783,15 +156844,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 145283, - "end": 145299, + "start": 145797, + "end": 145813, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 32 }, "end": { - "line": 3585, + "line": 3593, "column": 48 }, "identifierName": "numSectionPlanes" @@ -155801,15 +156862,15 @@ }, "update": { "type": "UpdateExpression", - "start": 145301, - "end": 145304, + "start": 145815, + "end": 145818, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 50 }, "end": { - "line": 3585, + "line": 3593, "column": 53 } }, @@ -155817,15 +156878,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 145301, - "end": 145302, + "start": 145815, + "end": 145816, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 50 }, "end": { - "line": 3585, + "line": 3593, "column": 51 }, "identifierName": "i" @@ -155835,59 +156896,59 @@ }, "body": { "type": "BlockStatement", - "start": 145306, - "end": 145680, + "start": 145820, + "end": 146194, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 55 }, "end": { - "line": 3593, + "line": 3601, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 145324, - "end": 145362, + "start": 145838, + "end": 145876, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 16 }, "end": { - "line": 3586, + "line": 3594, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 145330, - "end": 145361, + "start": 145844, + "end": 145875, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 22 }, "end": { - "line": 3586, + "line": 3594, "column": 53 } }, "id": { "type": "Identifier", - "start": 145330, - "end": 145342, + "start": 145844, + "end": 145856, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 22 }, "end": { - "line": 3586, + "line": 3594, "column": 34 }, "identifierName": "sectionPlane" @@ -155896,29 +156957,29 @@ }, "init": { "type": "MemberExpression", - "start": 145345, - "end": 145361, + "start": 145859, + "end": 145875, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 37 }, "end": { - "line": 3586, + "line": 3594, "column": 53 } }, "object": { "type": "Identifier", - "start": 145345, - "end": 145358, + "start": 145859, + "end": 145872, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 37 }, "end": { - "line": 3586, + "line": 3594, "column": 50 }, "identifierName": "sectionPlanes" @@ -155927,15 +156988,15 @@ }, "property": { "type": "Identifier", - "start": 145359, - "end": 145360, + "start": 145873, + "end": 145874, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 51 }, "end": { - "line": 3586, + "line": 3594, "column": 52 }, "identifierName": "i" @@ -155950,29 +157011,29 @@ }, { "type": "IfStatement", - "start": 145379, - "end": 145666, + "start": 145893, + "end": 146180, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 16 }, "end": { - "line": 3592, + "line": 3600, "column": 17 } }, "test": { "type": "UnaryExpression", - "start": 145383, - "end": 145403, + "start": 145897, + "end": 145917, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 20 }, "end": { - "line": 3587, + "line": 3595, "column": 40 } }, @@ -155980,29 +157041,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 145384, - "end": 145403, + "start": 145898, + "end": 145917, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 21 }, "end": { - "line": 3587, + "line": 3595, "column": 40 } }, "object": { "type": "Identifier", - "start": 145384, - "end": 145396, + "start": 145898, + "end": 145910, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 21 }, "end": { - "line": 3587, + "line": 3595, "column": 33 }, "identifierName": "sectionPlane" @@ -156011,15 +157072,15 @@ }, "property": { "type": "Identifier", - "start": 145397, - "end": 145403, + "start": 145911, + "end": 145917, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 34 }, "end": { - "line": 3587, + "line": 3595, "column": 40 }, "identifierName": "active" @@ -156034,87 +157095,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 145405, - "end": 145508, + "start": 145919, + "end": 146022, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 42 }, "end": { - "line": 3589, + "line": 3597, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 145427, - "end": 145490, + "start": 145941, + "end": 146004, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 20 }, "end": { - "line": 3588, + "line": 3596, "column": 83 } }, "expression": { "type": "AssignmentExpression", - "start": 145427, - "end": 145489, + "start": 145941, + "end": 146003, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 20 }, "end": { - "line": 3588, + "line": 3596, "column": 82 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 145427, - "end": 145481, + "start": 145941, + "end": 145995, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 20 }, "end": { - "line": 3588, + "line": 3596, "column": 74 } }, "object": { "type": "MemberExpression", - "start": 145427, - "end": 145466, + "start": 145941, + "end": 145980, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 20 }, "end": { - "line": 3588, + "line": 3596, "column": 59 } }, "object": { "type": "Identifier", - "start": 145427, - "end": 145438, + "start": 145941, + "end": 145952, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 20 }, "end": { - "line": 3588, + "line": 3596, "column": 31 }, "identifierName": "renderFlags" @@ -156123,15 +157184,15 @@ }, "property": { "type": "Identifier", - "start": 145439, - "end": 145466, + "start": 145953, + "end": 145980, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 32 }, "end": { - "line": 3588, + "line": 3596, "column": 59 }, "identifierName": "sectionPlanesActivePerLayer" @@ -156142,29 +157203,29 @@ }, "property": { "type": "BinaryExpression", - "start": 145467, - "end": 145480, + "start": 145981, + "end": 145994, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 60 }, "end": { - "line": 3588, + "line": 3596, "column": 73 } }, "left": { "type": "Identifier", - "start": 145467, - "end": 145476, + "start": 145981, + "end": 145990, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 60 }, "end": { - "line": 3588, + "line": 3596, "column": 69 }, "identifierName": "baseIndex" @@ -156174,15 +157235,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 145479, - "end": 145480, + "start": 145993, + "end": 145994, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 72 }, "end": { - "line": 3588, + "line": 3596, "column": 73 }, "identifierName": "i" @@ -156194,15 +157255,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 145484, - "end": 145489, + "start": 145998, + "end": 146003, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 77 }, "end": { - "line": 3588, + "line": 3596, "column": 82 } }, @@ -156215,87 +157276,87 @@ }, "alternate": { "type": "BlockStatement", - "start": 145514, - "end": 145666, + "start": 146028, + "end": 146180, "loc": { "start": { - "line": 3589, + "line": 3597, "column": 23 }, "end": { - "line": 3592, + "line": 3600, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 145536, - "end": 145598, + "start": 146050, + "end": 146112, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 20 }, "end": { - "line": 3590, + "line": 3598, "column": 82 } }, "expression": { "type": "AssignmentExpression", - "start": 145536, - "end": 145597, + "start": 146050, + "end": 146111, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 20 }, "end": { - "line": 3590, + "line": 3598, "column": 81 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 145536, - "end": 145590, + "start": 146050, + "end": 146104, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 20 }, "end": { - "line": 3590, + "line": 3598, "column": 74 } }, "object": { "type": "MemberExpression", - "start": 145536, - "end": 145575, + "start": 146050, + "end": 146089, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 20 }, "end": { - "line": 3590, + "line": 3598, "column": 59 } }, "object": { "type": "Identifier", - "start": 145536, - "end": 145547, + "start": 146050, + "end": 146061, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 20 }, "end": { - "line": 3590, + "line": 3598, "column": 31 }, "identifierName": "renderFlags" @@ -156304,15 +157365,15 @@ }, "property": { "type": "Identifier", - "start": 145548, - "end": 145575, + "start": 146062, + "end": 146089, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 32 }, "end": { - "line": 3590, + "line": 3598, "column": 59 }, "identifierName": "sectionPlanesActivePerLayer" @@ -156323,29 +157384,29 @@ }, "property": { "type": "BinaryExpression", - "start": 145576, - "end": 145589, + "start": 146090, + "end": 146103, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 60 }, "end": { - "line": 3590, + "line": 3598, "column": 73 } }, "left": { "type": "Identifier", - "start": 145576, - "end": 145585, + "start": 146090, + "end": 146099, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 60 }, "end": { - "line": 3590, + "line": 3598, "column": 69 }, "identifierName": "baseIndex" @@ -156355,15 +157416,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 145588, - "end": 145589, + "start": 146102, + "end": 146103, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 72 }, "end": { - "line": 3590, + "line": 3598, "column": 73 }, "identifierName": "i" @@ -156375,15 +157436,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 145593, - "end": 145597, + "start": 146107, + "end": 146111, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 77 }, "end": { - "line": 3590, + "line": 3598, "column": 81 } }, @@ -156393,58 +157454,58 @@ }, { "type": "ExpressionStatement", - "start": 145619, - "end": 145648, + "start": 146133, + "end": 146162, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 20 }, "end": { - "line": 3591, + "line": 3599, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 145619, - "end": 145647, + "start": 146133, + "end": 146161, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 20 }, "end": { - "line": 3591, + "line": 3599, "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 145619, - "end": 145640, + "start": 146133, + "end": 146154, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 20 }, "end": { - "line": 3591, + "line": 3599, "column": 41 } }, "object": { "type": "Identifier", - "start": 145619, - "end": 145630, + "start": 146133, + "end": 146144, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 20 }, "end": { - "line": 3591, + "line": 3599, "column": 31 }, "identifierName": "renderFlags" @@ -156453,15 +157514,15 @@ }, "property": { "type": "Identifier", - "start": 145631, - "end": 145640, + "start": 146145, + "end": 146154, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 32 }, "end": { - "line": 3591, + "line": 3599, "column": 41 }, "identifierName": "sectioned" @@ -156472,15 +157533,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 145643, - "end": 145647, + "start": 146157, + "end": 146161, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 44 }, "end": { - "line": 3591, + "line": 3599, "column": 48 } }, @@ -156503,29 +157564,29 @@ }, { "type": "ReturnStatement", - "start": 145699, - "end": 145711, + "start": 146213, + "end": 146225, "loc": { "start": { - "line": 3595, + "line": 3603, "column": 8 }, "end": { - "line": 3595, + "line": 3603, "column": 20 } }, "argument": { "type": "BooleanLiteral", - "start": 145706, - "end": 145710, + "start": 146220, + "end": 146224, "loc": { "start": { - "line": 3595, + "line": 3603, "column": 15 }, "end": { - "line": 3595, + "line": 3603, "column": 19 } }, @@ -156538,15 +157599,15 @@ }, { "type": "ClassMethod", - "start": 145723, - "end": 148666, + "start": 146237, + "end": 149180, "loc": { "start": { - "line": 3598, + "line": 3606, "column": 4 }, "end": { - "line": 3670, + "line": 3678, "column": 5 } }, @@ -156554,15 +157615,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 145723, - "end": 145741, + "start": 146237, + "end": 146255, "loc": { "start": { - "line": 3598, + "line": 3606, "column": 4 }, "end": { - "line": 3598, + "line": 3606, "column": 22 }, "identifierName": "_updateRenderFlags" @@ -156577,87 +157638,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 145744, - "end": 148666, + "start": 146258, + "end": 149180, "loc": { "start": { - "line": 3598, + "line": 3606, "column": 25 }, "end": { - "line": 3670, + "line": 3678, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 145754, - "end": 145825, + "start": 146268, + "end": 146339, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 8 }, "end": { - "line": 3601, + "line": 3609, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 145758, - "end": 145792, + "start": 146272, + "end": 146306, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 12 }, "end": { - "line": 3599, + "line": 3607, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 145758, - "end": 145786, + "start": 146272, + "end": 146300, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 12 }, "end": { - "line": 3599, + "line": 3607, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 145758, - "end": 145762, + "start": 146272, + "end": 146276, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 12 }, "end": { - "line": 3599, + "line": 3607, "column": 16 } } }, "property": { "type": "Identifier", - "start": 145763, - "end": 145786, + "start": 146277, + "end": 146300, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 17 }, "end": { - "line": 3599, + "line": 3607, "column": 40 }, "identifierName": "numVisibleLayerPortions" @@ -156669,15 +157730,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 145791, - "end": 145792, + "start": 146305, + "end": 146306, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 45 }, "end": { - "line": 3599, + "line": 3607, "column": 46 } }, @@ -156690,30 +157751,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 145794, - "end": 145825, + "start": 146308, + "end": 146339, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 48 }, "end": { - "line": 3601, + "line": 3609, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 145808, - "end": 145815, + "start": 146322, + "end": 146329, "loc": { "start": { - "line": 3600, + "line": 3608, "column": 12 }, "end": { - "line": 3600, + "line": 3608, "column": 19 } }, @@ -156726,72 +157787,72 @@ }, { "type": "IfStatement", - "start": 145834, - "end": 145919, + "start": 146348, + "end": 146433, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 8 }, "end": { - "line": 3604, + "line": 3612, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 145838, - "end": 145886, + "start": 146352, + "end": 146400, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 12 }, "end": { - "line": 3602, + "line": 3610, "column": 60 } }, "left": { "type": "MemberExpression", - "start": 145838, - "end": 145865, + "start": 146352, + "end": 146379, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 12 }, "end": { - "line": 3602, + "line": 3610, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 145838, - "end": 145842, + "start": 146352, + "end": 146356, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 12 }, "end": { - "line": 3602, + "line": 3610, "column": 16 } } }, "property": { "type": "Identifier", - "start": 145843, - "end": 145865, + "start": 146357, + "end": 146379, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 17 }, "end": { - "line": 3602, + "line": 3610, "column": 39 }, "identifierName": "numCulledLayerPortions" @@ -156803,44 +157864,44 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 145870, - "end": 145886, + "start": 146384, + "end": 146400, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 44 }, "end": { - "line": 3602, + "line": 3610, "column": 60 } }, "object": { "type": "ThisExpression", - "start": 145870, - "end": 145874, + "start": 146384, + "end": 146388, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 44 }, "end": { - "line": 3602, + "line": 3610, "column": 48 } } }, "property": { "type": "Identifier", - "start": 145875, - "end": 145886, + "start": 146389, + "end": 146400, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 49 }, "end": { - "line": 3602, + "line": 3610, "column": 60 }, "identifierName": "numPortions" @@ -156852,30 +157913,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 145888, - "end": 145919, + "start": 146402, + "end": 146433, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 62 }, "end": { - "line": 3604, + "line": 3612, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 145902, - "end": 145909, + "start": 146416, + "end": 146423, "loc": { "start": { - "line": 3603, + "line": 3611, "column": 12 }, "end": { - "line": 3603, + "line": 3611, "column": 19 } }, @@ -156888,44 +157949,44 @@ }, { "type": "VariableDeclaration", - "start": 145928, - "end": 145965, + "start": 146442, + "end": 146479, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 8 }, "end": { - "line": 3605, + "line": 3613, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 145934, - "end": 145964, + "start": 146448, + "end": 146478, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 14 }, "end": { - "line": 3605, + "line": 3613, "column": 44 } }, "id": { "type": "Identifier", - "start": 145934, - "end": 145945, + "start": 146448, + "end": 146459, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 14 }, "end": { - "line": 3605, + "line": 3613, "column": 25 }, "identifierName": "renderFlags" @@ -156934,44 +157995,44 @@ }, "init": { "type": "MemberExpression", - "start": 145948, - "end": 145964, + "start": 146462, + "end": 146478, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 28 }, "end": { - "line": 3605, + "line": 3613, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 145948, - "end": 145952, + "start": 146462, + "end": 146466, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 28 }, "end": { - "line": 3605, + "line": 3613, "column": 32 } } }, "property": { "type": "Identifier", - "start": 145953, - "end": 145964, + "start": 146467, + "end": 146478, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 33 }, "end": { - "line": 3605, + "line": 3613, "column": 44 }, "identifierName": "renderFlags" @@ -156986,58 +158047,58 @@ }, { "type": "ExpressionStatement", - "start": 145974, - "end": 146054, + "start": 146488, + "end": 146568, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 8 }, "end": { - "line": 3606, + "line": 3614, "column": 88 } }, "expression": { "type": "AssignmentExpression", - "start": 145974, - "end": 146053, + "start": 146488, + "end": 146567, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 8 }, "end": { - "line": 3606, + "line": 3614, "column": 87 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 145974, - "end": 145997, + "start": 146488, + "end": 146511, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 8 }, "end": { - "line": 3606, + "line": 3614, "column": 31 } }, "object": { "type": "Identifier", - "start": 145974, - "end": 145985, + "start": 146488, + "end": 146499, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 8 }, "end": { - "line": 3606, + "line": 3614, "column": 19 }, "identifierName": "renderFlags" @@ -157046,15 +158107,15 @@ }, "property": { "type": "Identifier", - "start": 145986, - "end": 145997, + "start": 146500, + "end": 146511, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 20 }, "end": { - "line": 3606, + "line": 3614, "column": 31 }, "identifierName": "colorOpaque" @@ -157065,58 +158126,58 @@ }, "right": { "type": "BinaryExpression", - "start": 146001, - "end": 146052, + "start": 146515, + "end": 146566, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 35 }, "end": { - "line": 3606, + "line": 3614, "column": 86 } }, "left": { "type": "MemberExpression", - "start": 146001, - "end": 146033, + "start": 146515, + "end": 146547, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 35 }, "end": { - "line": 3606, + "line": 3614, "column": 67 } }, "object": { "type": "ThisExpression", - "start": 146001, - "end": 146005, + "start": 146515, + "end": 146519, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 35 }, "end": { - "line": 3606, + "line": 3614, "column": 39 } } }, "property": { "type": "Identifier", - "start": 146006, - "end": 146033, + "start": 146520, + "end": 146547, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 40 }, "end": { - "line": 3606, + "line": 3614, "column": 67 }, "identifierName": "numTransparentLayerPortions" @@ -157128,44 +158189,44 @@ "operator": "<", "right": { "type": "MemberExpression", - "start": 146036, - "end": 146052, + "start": 146550, + "end": 146566, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 70 }, "end": { - "line": 3606, + "line": 3614, "column": 86 } }, "object": { "type": "ThisExpression", - "start": 146036, - "end": 146040, + "start": 146550, + "end": 146554, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 70 }, "end": { - "line": 3606, + "line": 3614, "column": 74 } } }, "property": { "type": "Identifier", - "start": 146041, - "end": 146052, + "start": 146555, + "end": 146566, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 75 }, "end": { - "line": 3606, + "line": 3614, "column": 86 }, "identifierName": "numPortions" @@ -157176,79 +158237,79 @@ }, "extra": { "parenthesized": true, - "parenStart": 146000 + "parenStart": 146514 } } } }, { "type": "IfStatement", - "start": 146063, - "end": 146165, + "start": 146577, + "end": 146679, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 8 }, "end": { - "line": 3609, + "line": 3617, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 146067, - "end": 146103, + "start": 146581, + "end": 146617, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 12 }, "end": { - "line": 3607, + "line": 3615, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 146067, - "end": 146099, + "start": 146581, + "end": 146613, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 12 }, "end": { - "line": 3607, + "line": 3615, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 146067, - "end": 146071, + "start": 146581, + "end": 146585, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 12 }, "end": { - "line": 3607, + "line": 3615, "column": 16 } } }, "property": { "type": "Identifier", - "start": 146072, - "end": 146099, + "start": 146586, + "end": 146613, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 17 }, "end": { - "line": 3607, + "line": 3615, "column": 44 }, "identifierName": "numTransparentLayerPortions" @@ -157260,15 +158321,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 146102, - "end": 146103, + "start": 146616, + "end": 146617, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 47 }, "end": { - "line": 3607, + "line": 3615, "column": 48 } }, @@ -157281,73 +158342,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 146105, - "end": 146165, + "start": 146619, + "end": 146679, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 50 }, "end": { - "line": 3609, + "line": 3617, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 146119, - "end": 146155, + "start": 146633, + "end": 146669, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 12 }, "end": { - "line": 3608, + "line": 3616, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 146119, - "end": 146154, + "start": 146633, + "end": 146668, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 12 }, "end": { - "line": 3608, + "line": 3616, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 146119, - "end": 146147, + "start": 146633, + "end": 146661, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 12 }, "end": { - "line": 3608, + "line": 3616, "column": 40 } }, "object": { "type": "Identifier", - "start": 146119, - "end": 146130, + "start": 146633, + "end": 146644, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 12 }, "end": { - "line": 3608, + "line": 3616, "column": 23 }, "identifierName": "renderFlags" @@ -157356,15 +158417,15 @@ }, "property": { "type": "Identifier", - "start": 146131, - "end": 146147, + "start": 146645, + "end": 146661, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 24 }, "end": { - "line": 3608, + "line": 3616, "column": 40 }, "identifierName": "colorTransparent" @@ -157375,15 +158436,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 146150, - "end": 146154, + "start": 146664, + "end": 146668, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 43 }, "end": { - "line": 3608, + "line": 3616, "column": 47 } }, @@ -157398,72 +158459,72 @@ }, { "type": "IfStatement", - "start": 146174, - "end": 146832, + "start": 146688, + "end": 147346, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 8 }, "end": { - "line": 3626, + "line": 3634, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 146178, - "end": 146209, + "start": 146692, + "end": 146723, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 12 }, "end": { - "line": 3610, + "line": 3618, "column": 43 } }, "left": { "type": "MemberExpression", - "start": 146178, - "end": 146205, + "start": 146692, + "end": 146719, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 12 }, "end": { - "line": 3610, + "line": 3618, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 146178, - "end": 146182, + "start": 146692, + "end": 146696, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 12 }, "end": { - "line": 3610, + "line": 3618, "column": 16 } } }, "property": { "type": "Identifier", - "start": 146183, - "end": 146205, + "start": 146697, + "end": 146719, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 17 }, "end": { - "line": 3610, + "line": 3618, "column": 39 }, "identifierName": "numXRayedLayerPortions" @@ -157475,15 +158536,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 146208, - "end": 146209, + "start": 146722, + "end": 146723, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 42 }, "end": { - "line": 3610, + "line": 3618, "column": 43 } }, @@ -157496,59 +158557,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 146211, - "end": 146832, + "start": 146725, + "end": 147346, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 45 }, "end": { - "line": 3626, + "line": 3634, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 146225, - "end": 146277, + "start": 146739, + "end": 146791, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 12 }, "end": { - "line": 3611, + "line": 3619, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 146231, - "end": 146276, + "start": 146745, + "end": 146790, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 18 }, "end": { - "line": 3611, + "line": 3619, "column": 63 } }, "id": { "type": "Identifier", - "start": 146231, - "end": 146243, + "start": 146745, + "end": 146757, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 18 }, "end": { - "line": 3611, + "line": 3619, "column": 30 }, "identifierName": "xrayMaterial" @@ -157557,72 +158618,72 @@ }, "init": { "type": "MemberExpression", - "start": 146246, - "end": 146276, + "start": 146760, + "end": 146790, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 33 }, "end": { - "line": 3611, + "line": 3619, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 146246, - "end": 146269, + "start": 146760, + "end": 146783, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 33 }, "end": { - "line": 3611, + "line": 3619, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 146246, - "end": 146256, + "start": 146760, + "end": 146770, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 33 }, "end": { - "line": 3611, + "line": 3619, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 146246, - "end": 146250, + "start": 146760, + "end": 146764, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 33 }, "end": { - "line": 3611, + "line": 3619, "column": 37 } } }, "property": { "type": "Identifier", - "start": 146251, - "end": 146256, + "start": 146765, + "end": 146770, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 38 }, "end": { - "line": 3611, + "line": 3619, "column": 43 }, "identifierName": "scene" @@ -157633,15 +158694,15 @@ }, "property": { "type": "Identifier", - "start": 146257, - "end": 146269, + "start": 146771, + "end": 146783, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 44 }, "end": { - "line": 3611, + "line": 3619, "column": 56 }, "identifierName": "xrayMaterial" @@ -157652,15 +158713,15 @@ }, "property": { "type": "Identifier", - "start": 146270, - "end": 146276, + "start": 146784, + "end": 146790, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 57 }, "end": { - "line": 3611, + "line": 3619, "column": 63 }, "identifierName": "_state" @@ -157675,43 +158736,43 @@ }, { "type": "IfStatement", - "start": 146290, - "end": 146554, + "start": 146804, + "end": 147068, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 12 }, "end": { - "line": 3618, + "line": 3626, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 146294, - "end": 146311, + "start": 146808, + "end": 146825, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 16 }, "end": { - "line": 3612, + "line": 3620, "column": 33 } }, "object": { "type": "Identifier", - "start": 146294, - "end": 146306, + "start": 146808, + "end": 146820, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 16 }, "end": { - "line": 3612, + "line": 3620, "column": 28 }, "identifierName": "xrayMaterial" @@ -157720,15 +158781,15 @@ }, "property": { "type": "Identifier", - "start": 146307, - "end": 146311, + "start": 146821, + "end": 146825, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 29 }, "end": { - "line": 3612, + "line": 3620, "column": 33 }, "identifierName": "fill" @@ -157739,72 +158800,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 146313, - "end": 146554, + "start": 146827, + "end": 147068, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 35 }, "end": { - "line": 3618, + "line": 3626, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 146331, - "end": 146540, + "start": 146845, + "end": 147054, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 16 }, "end": { - "line": 3617, + "line": 3625, "column": 17 } }, "test": { "type": "BinaryExpression", - "start": 146335, - "end": 146363, + "start": 146849, + "end": 146877, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 20 }, "end": { - "line": 3613, + "line": 3621, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 146335, - "end": 146357, + "start": 146849, + "end": 146871, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 20 }, "end": { - "line": 3613, + "line": 3621, "column": 42 } }, "object": { "type": "Identifier", - "start": 146335, - "end": 146347, + "start": 146849, + "end": 146861, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 20 }, "end": { - "line": 3613, + "line": 3621, "column": 32 }, "identifierName": "xrayMaterial" @@ -157813,15 +158874,15 @@ }, "property": { "type": "Identifier", - "start": 146348, - "end": 146357, + "start": 146862, + "end": 146871, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 33 }, "end": { - "line": 3613, + "line": 3621, "column": 42 }, "identifierName": "fillAlpha" @@ -157833,15 +158894,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 146360, - "end": 146363, + "start": 146874, + "end": 146877, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 45 }, "end": { - "line": 3613, + "line": 3621, "column": 48 } }, @@ -157854,73 +158915,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 146365, - "end": 146452, + "start": 146879, + "end": 146966, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 50 }, "end": { - "line": 3615, + "line": 3623, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 146387, - "end": 146434, + "start": 146901, + "end": 146948, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 20 }, "end": { - "line": 3614, + "line": 3622, "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 146387, - "end": 146433, + "start": 146901, + "end": 146947, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 20 }, "end": { - "line": 3614, + "line": 3622, "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 146387, - "end": 146426, + "start": 146901, + "end": 146940, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 20 }, "end": { - "line": 3614, + "line": 3622, "column": 59 } }, "object": { "type": "Identifier", - "start": 146387, - "end": 146398, + "start": 146901, + "end": 146912, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 20 }, "end": { - "line": 3614, + "line": 3622, "column": 31 }, "identifierName": "renderFlags" @@ -157929,15 +158990,15 @@ }, "property": { "type": "Identifier", - "start": 146399, - "end": 146426, + "start": 146913, + "end": 146940, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 32 }, "end": { - "line": 3614, + "line": 3622, "column": 59 }, "identifierName": "xrayedSilhouetteTransparent" @@ -157948,15 +159009,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 146429, - "end": 146433, + "start": 146943, + "end": 146947, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 62 }, "end": { - "line": 3614, + "line": 3622, "column": 66 } }, @@ -157969,73 +159030,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 146458, - "end": 146540, + "start": 146972, + "end": 147054, "loc": { "start": { - "line": 3615, + "line": 3623, "column": 23 }, "end": { - "line": 3617, + "line": 3625, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 146480, - "end": 146522, + "start": 146994, + "end": 147036, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 20 }, "end": { - "line": 3616, + "line": 3624, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 146480, - "end": 146521, + "start": 146994, + "end": 147035, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 20 }, "end": { - "line": 3616, + "line": 3624, "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 146480, - "end": 146514, + "start": 146994, + "end": 147028, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 20 }, "end": { - "line": 3616, + "line": 3624, "column": 54 } }, "object": { "type": "Identifier", - "start": 146480, - "end": 146491, + "start": 146994, + "end": 147005, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 20 }, "end": { - "line": 3616, + "line": 3624, "column": 31 }, "identifierName": "renderFlags" @@ -158044,15 +159105,15 @@ }, "property": { "type": "Identifier", - "start": 146492, - "end": 146514, + "start": 147006, + "end": 147028, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 32 }, "end": { - "line": 3616, + "line": 3624, "column": 54 }, "identifierName": "xrayedSilhouetteOpaque" @@ -158063,15 +159124,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 146517, - "end": 146521, + "start": 147031, + "end": 147035, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 57 }, "end": { - "line": 3616, + "line": 3624, "column": 61 } }, @@ -158090,43 +159151,43 @@ }, { "type": "IfStatement", - "start": 146567, - "end": 146822, + "start": 147081, + "end": 147336, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 12 }, "end": { - "line": 3625, + "line": 3633, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 146571, - "end": 146589, + "start": 147085, + "end": 147103, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 16 }, "end": { - "line": 3619, + "line": 3627, "column": 34 } }, "object": { "type": "Identifier", - "start": 146571, - "end": 146583, + "start": 147085, + "end": 147097, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 16 }, "end": { - "line": 3619, + "line": 3627, "column": 28 }, "identifierName": "xrayMaterial" @@ -158135,15 +159196,15 @@ }, "property": { "type": "Identifier", - "start": 146584, - "end": 146589, + "start": 147098, + "end": 147103, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 29 }, "end": { - "line": 3619, + "line": 3627, "column": 34 }, "identifierName": "edges" @@ -158154,72 +159215,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 146591, - "end": 146822, + "start": 147105, + "end": 147336, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 36 }, "end": { - "line": 3625, + "line": 3633, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 146609, - "end": 146808, + "start": 147123, + "end": 147322, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 16 }, "end": { - "line": 3624, + "line": 3632, "column": 17 } }, "test": { "type": "BinaryExpression", - "start": 146613, - "end": 146641, + "start": 147127, + "end": 147155, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 20 }, "end": { - "line": 3620, + "line": 3628, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 146613, - "end": 146635, + "start": 147127, + "end": 147149, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 20 }, "end": { - "line": 3620, + "line": 3628, "column": 42 } }, "object": { "type": "Identifier", - "start": 146613, - "end": 146625, + "start": 147127, + "end": 147139, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 20 }, "end": { - "line": 3620, + "line": 3628, "column": 32 }, "identifierName": "xrayMaterial" @@ -158228,15 +159289,15 @@ }, "property": { "type": "Identifier", - "start": 146626, - "end": 146635, + "start": 147140, + "end": 147149, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 33 }, "end": { - "line": 3620, + "line": 3628, "column": 42 }, "identifierName": "edgeAlpha" @@ -158248,15 +159309,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 146638, - "end": 146641, + "start": 147152, + "end": 147155, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 45 }, "end": { - "line": 3620, + "line": 3628, "column": 48 } }, @@ -158269,73 +159330,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 146643, - "end": 146725, + "start": 147157, + "end": 147239, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 50 }, "end": { - "line": 3622, + "line": 3630, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 146665, - "end": 146707, + "start": 147179, + "end": 147221, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 20 }, "end": { - "line": 3621, + "line": 3629, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 146665, - "end": 146706, + "start": 147179, + "end": 147220, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 20 }, "end": { - "line": 3621, + "line": 3629, "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 146665, - "end": 146699, + "start": 147179, + "end": 147213, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 20 }, "end": { - "line": 3621, + "line": 3629, "column": 54 } }, "object": { "type": "Identifier", - "start": 146665, - "end": 146676, + "start": 147179, + "end": 147190, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 20 }, "end": { - "line": 3621, + "line": 3629, "column": 31 }, "identifierName": "renderFlags" @@ -158344,15 +159405,15 @@ }, "property": { "type": "Identifier", - "start": 146677, - "end": 146699, + "start": 147191, + "end": 147213, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 32 }, "end": { - "line": 3621, + "line": 3629, "column": 54 }, "identifierName": "xrayedEdgesTransparent" @@ -158363,15 +159424,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 146702, - "end": 146706, + "start": 147216, + "end": 147220, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 57 }, "end": { - "line": 3621, + "line": 3629, "column": 61 } }, @@ -158384,73 +159445,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 146731, - "end": 146808, + "start": 147245, + "end": 147322, "loc": { "start": { - "line": 3622, + "line": 3630, "column": 23 }, "end": { - "line": 3624, + "line": 3632, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 146753, - "end": 146790, + "start": 147267, + "end": 147304, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 20 }, "end": { - "line": 3623, + "line": 3631, "column": 57 } }, "expression": { "type": "AssignmentExpression", - "start": 146753, - "end": 146789, + "start": 147267, + "end": 147303, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 20 }, "end": { - "line": 3623, + "line": 3631, "column": 56 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 146753, - "end": 146782, + "start": 147267, + "end": 147296, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 20 }, "end": { - "line": 3623, + "line": 3631, "column": 49 } }, "object": { "type": "Identifier", - "start": 146753, - "end": 146764, + "start": 147267, + "end": 147278, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 20 }, "end": { - "line": 3623, + "line": 3631, "column": 31 }, "identifierName": "renderFlags" @@ -158459,15 +159520,15 @@ }, "property": { "type": "Identifier", - "start": 146765, - "end": 146782, + "start": 147279, + "end": 147296, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 32 }, "end": { - "line": 3623, + "line": 3631, "column": 49 }, "identifierName": "xrayedEdgesOpaque" @@ -158478,15 +159539,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 146785, - "end": 146789, + "start": 147299, + "end": 147303, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 52 }, "end": { - "line": 3623, + "line": 3631, "column": 56 } }, @@ -158510,72 +159571,72 @@ }, { "type": "IfStatement", - "start": 146841, - "end": 147237, + "start": 147355, + "end": 147751, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 8 }, "end": { - "line": 3635, + "line": 3643, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 146845, - "end": 146875, + "start": 147359, + "end": 147389, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 12 }, "end": { - "line": 3627, + "line": 3635, "column": 42 } }, "left": { "type": "MemberExpression", - "start": 146845, - "end": 146871, + "start": 147359, + "end": 147385, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 12 }, "end": { - "line": 3627, + "line": 3635, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 146845, - "end": 146849, + "start": 147359, + "end": 147363, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 12 }, "end": { - "line": 3627, + "line": 3635, "column": 16 } } }, "property": { "type": "Identifier", - "start": 146850, - "end": 146871, + "start": 147364, + "end": 147385, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 17 }, "end": { - "line": 3627, + "line": 3635, "column": 38 }, "identifierName": "numEdgesLayerPortions" @@ -158587,15 +159648,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 146874, - "end": 146875, + "start": 147388, + "end": 147389, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 41 }, "end": { - "line": 3627, + "line": 3635, "column": 42 } }, @@ -158608,59 +159669,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 146877, - "end": 147237, + "start": 147391, + "end": 147751, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 44 }, "end": { - "line": 3635, + "line": 3643, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 146891, - "end": 146943, + "start": 147405, + "end": 147457, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 12 }, "end": { - "line": 3628, + "line": 3636, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 146897, - "end": 146942, + "start": 147411, + "end": 147456, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 18 }, "end": { - "line": 3628, + "line": 3636, "column": 63 } }, "id": { "type": "Identifier", - "start": 146897, - "end": 146909, + "start": 147411, + "end": 147423, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 18 }, "end": { - "line": 3628, + "line": 3636, "column": 30 }, "identifierName": "edgeMaterial" @@ -158669,72 +159730,72 @@ }, "init": { "type": "MemberExpression", - "start": 146912, - "end": 146942, + "start": 147426, + "end": 147456, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 33 }, "end": { - "line": 3628, + "line": 3636, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 146912, - "end": 146935, + "start": 147426, + "end": 147449, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 33 }, "end": { - "line": 3628, + "line": 3636, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 146912, - "end": 146922, + "start": 147426, + "end": 147436, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 33 }, "end": { - "line": 3628, + "line": 3636, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 146912, - "end": 146916, + "start": 147426, + "end": 147430, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 33 }, "end": { - "line": 3628, + "line": 3636, "column": 37 } } }, "property": { "type": "Identifier", - "start": 146917, - "end": 146922, + "start": 147431, + "end": 147436, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 38 }, "end": { - "line": 3628, + "line": 3636, "column": 43 }, "identifierName": "scene" @@ -158745,15 +159806,15 @@ }, "property": { "type": "Identifier", - "start": 146923, - "end": 146935, + "start": 147437, + "end": 147449, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 44 }, "end": { - "line": 3628, + "line": 3636, "column": 56 }, "identifierName": "edgeMaterial" @@ -158764,15 +159825,15 @@ }, "property": { "type": "Identifier", - "start": 146936, - "end": 146942, + "start": 147450, + "end": 147456, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 57 }, "end": { - "line": 3628, + "line": 3636, "column": 63 }, "identifierName": "_state" @@ -158787,43 +159848,43 @@ }, { "type": "IfStatement", - "start": 146956, - "end": 147227, + "start": 147470, + "end": 147741, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 12 }, "end": { - "line": 3634, + "line": 3642, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 146960, - "end": 146978, + "start": 147474, + "end": 147492, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 16 }, "end": { - "line": 3629, + "line": 3637, "column": 34 } }, "object": { "type": "Identifier", - "start": 146960, - "end": 146972, + "start": 147474, + "end": 147486, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 16 }, "end": { - "line": 3629, + "line": 3637, "column": 28 }, "identifierName": "edgeMaterial" @@ -158832,15 +159893,15 @@ }, "property": { "type": "Identifier", - "start": 146973, - "end": 146978, + "start": 147487, + "end": 147492, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 29 }, "end": { - "line": 3629, + "line": 3637, "column": 34 }, "identifierName": "edges" @@ -158851,73 +159912,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 146980, - "end": 147227, + "start": 147494, + "end": 147741, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 36 }, "end": { - "line": 3634, + "line": 3642, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 146998, - "end": 147078, + "start": 147512, + "end": 147592, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 16 }, "end": { - "line": 3630, + "line": 3638, "column": 96 } }, "expression": { "type": "AssignmentExpression", - "start": 146998, - "end": 147077, + "start": 147512, + "end": 147591, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 16 }, "end": { - "line": 3630, + "line": 3638, "column": 95 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 146998, - "end": 147021, + "start": 147512, + "end": 147535, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 16 }, "end": { - "line": 3630, + "line": 3638, "column": 39 } }, "object": { "type": "Identifier", - "start": 146998, - "end": 147009, + "start": 147512, + "end": 147523, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 16 }, "end": { - "line": 3630, + "line": 3638, "column": 27 }, "identifierName": "renderFlags" @@ -158926,15 +159987,15 @@ }, "property": { "type": "Identifier", - "start": 147010, - "end": 147021, + "start": 147524, + "end": 147535, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 28 }, "end": { - "line": 3630, + "line": 3638, "column": 39 }, "identifierName": "edgesOpaque" @@ -158945,58 +160006,58 @@ }, "right": { "type": "BinaryExpression", - "start": 147025, - "end": 147076, + "start": 147539, + "end": 147590, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 43 }, "end": { - "line": 3630, + "line": 3638, "column": 94 } }, "left": { "type": "MemberExpression", - "start": 147025, - "end": 147057, + "start": 147539, + "end": 147571, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 43 }, "end": { - "line": 3630, + "line": 3638, "column": 75 } }, "object": { "type": "ThisExpression", - "start": 147025, - "end": 147029, + "start": 147539, + "end": 147543, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 43 }, "end": { - "line": 3630, + "line": 3638, "column": 47 } } }, "property": { "type": "Identifier", - "start": 147030, - "end": 147057, + "start": 147544, + "end": 147571, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 48 }, "end": { - "line": 3630, + "line": 3638, "column": 75 }, "identifierName": "numTransparentLayerPortions" @@ -159008,44 +160069,44 @@ "operator": "<", "right": { "type": "MemberExpression", - "start": 147060, - "end": 147076, + "start": 147574, + "end": 147590, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 78 }, "end": { - "line": 3630, + "line": 3638, "column": 94 } }, "object": { "type": "ThisExpression", - "start": 147060, - "end": 147064, + "start": 147574, + "end": 147578, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 78 }, "end": { - "line": 3630, + "line": 3638, "column": 82 } } }, "property": { "type": "Identifier", - "start": 147065, - "end": 147076, + "start": 147579, + "end": 147590, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 83 }, "end": { - "line": 3630, + "line": 3638, "column": 94 }, "identifierName": "numPortions" @@ -159056,79 +160117,79 @@ }, "extra": { "parenthesized": true, - "parenStart": 147024 + "parenStart": 147538 } } } }, { "type": "IfStatement", - "start": 147095, - "end": 147213, + "start": 147609, + "end": 147727, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 16 }, "end": { - "line": 3633, + "line": 3641, "column": 17 } }, "test": { "type": "BinaryExpression", - "start": 147099, - "end": 147135, + "start": 147613, + "end": 147649, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 20 }, "end": { - "line": 3631, + "line": 3639, "column": 56 } }, "left": { "type": "MemberExpression", - "start": 147099, - "end": 147131, + "start": 147613, + "end": 147645, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 20 }, "end": { - "line": 3631, + "line": 3639, "column": 52 } }, "object": { "type": "ThisExpression", - "start": 147099, - "end": 147103, + "start": 147613, + "end": 147617, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 20 }, "end": { - "line": 3631, + "line": 3639, "column": 24 } } }, "property": { "type": "Identifier", - "start": 147104, - "end": 147131, + "start": 147618, + "end": 147645, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 25 }, "end": { - "line": 3631, + "line": 3639, "column": 52 }, "identifierName": "numTransparentLayerPortions" @@ -159140,15 +160201,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 147134, - "end": 147135, + "start": 147648, + "end": 147649, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 55 }, "end": { - "line": 3631, + "line": 3639, "column": 56 } }, @@ -159161,73 +160222,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 147137, - "end": 147213, + "start": 147651, + "end": 147727, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 58 }, "end": { - "line": 3633, + "line": 3641, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 147159, - "end": 147195, + "start": 147673, + "end": 147709, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 20 }, "end": { - "line": 3632, + "line": 3640, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 147159, - "end": 147194, + "start": 147673, + "end": 147708, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 20 }, "end": { - "line": 3632, + "line": 3640, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 147159, - "end": 147187, + "start": 147673, + "end": 147701, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 20 }, "end": { - "line": 3632, + "line": 3640, "column": 48 } }, "object": { "type": "Identifier", - "start": 147159, - "end": 147170, + "start": 147673, + "end": 147684, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 20 }, "end": { - "line": 3632, + "line": 3640, "column": 31 }, "identifierName": "renderFlags" @@ -159236,15 +160297,15 @@ }, "property": { "type": "Identifier", - "start": 147171, - "end": 147187, + "start": 147685, + "end": 147701, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 32 }, "end": { - "line": 3632, + "line": 3640, "column": 48 }, "identifierName": "edgesTransparent" @@ -159255,15 +160316,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 147190, - "end": 147194, + "start": 147704, + "end": 147708, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 51 }, "end": { - "line": 3632, + "line": 3640, "column": 55 } }, @@ -159288,72 +160349,72 @@ }, { "type": "IfStatement", - "start": 147246, - "end": 147938, + "start": 147760, + "end": 148452, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 8 }, "end": { - "line": 3652, + "line": 3660, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 147250, - "end": 147283, + "start": 147764, + "end": 147797, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 12 }, "end": { - "line": 3636, + "line": 3644, "column": 45 } }, "left": { "type": "MemberExpression", - "start": 147250, - "end": 147279, + "start": 147764, + "end": 147793, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 12 }, "end": { - "line": 3636, + "line": 3644, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 147250, - "end": 147254, + "start": 147764, + "end": 147768, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 12 }, "end": { - "line": 3636, + "line": 3644, "column": 16 } } }, "property": { "type": "Identifier", - "start": 147255, - "end": 147279, + "start": 147769, + "end": 147793, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 17 }, "end": { - "line": 3636, + "line": 3644, "column": 41 }, "identifierName": "numSelectedLayerPortions" @@ -159365,15 +160426,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 147282, - "end": 147283, + "start": 147796, + "end": 147797, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 44 }, "end": { - "line": 3636, + "line": 3644, "column": 45 } }, @@ -159386,59 +160447,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 147285, - "end": 147938, + "start": 147799, + "end": 148452, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 47 }, "end": { - "line": 3652, + "line": 3660, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 147299, - "end": 147359, + "start": 147813, + "end": 147873, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 12 }, "end": { - "line": 3637, + "line": 3645, "column": 72 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 147305, - "end": 147358, + "start": 147819, + "end": 147872, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 18 }, "end": { - "line": 3637, + "line": 3645, "column": 71 } }, "id": { "type": "Identifier", - "start": 147305, - "end": 147321, + "start": 147819, + "end": 147835, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 18 }, "end": { - "line": 3637, + "line": 3645, "column": 34 }, "identifierName": "selectedMaterial" @@ -159447,72 +160508,72 @@ }, "init": { "type": "MemberExpression", - "start": 147324, - "end": 147358, + "start": 147838, + "end": 147872, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 37 }, "end": { - "line": 3637, + "line": 3645, "column": 71 } }, "object": { "type": "MemberExpression", - "start": 147324, - "end": 147351, + "start": 147838, + "end": 147865, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 37 }, "end": { - "line": 3637, + "line": 3645, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 147324, - "end": 147334, + "start": 147838, + "end": 147848, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 37 }, "end": { - "line": 3637, + "line": 3645, "column": 47 } }, "object": { "type": "ThisExpression", - "start": 147324, - "end": 147328, + "start": 147838, + "end": 147842, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 37 }, "end": { - "line": 3637, + "line": 3645, "column": 41 } } }, "property": { "type": "Identifier", - "start": 147329, - "end": 147334, + "start": 147843, + "end": 147848, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 42 }, "end": { - "line": 3637, + "line": 3645, "column": 47 }, "identifierName": "scene" @@ -159523,15 +160584,15 @@ }, "property": { "type": "Identifier", - "start": 147335, - "end": 147351, + "start": 147849, + "end": 147865, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 48 }, "end": { - "line": 3637, + "line": 3645, "column": 64 }, "identifierName": "selectedMaterial" @@ -159542,15 +160603,15 @@ }, "property": { "type": "Identifier", - "start": 147352, - "end": 147358, + "start": 147866, + "end": 147872, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 65 }, "end": { - "line": 3637, + "line": 3645, "column": 71 }, "identifierName": "_state" @@ -159565,43 +160626,43 @@ }, { "type": "IfStatement", - "start": 147372, - "end": 147648, + "start": 147886, + "end": 148162, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 12 }, "end": { - "line": 3644, + "line": 3652, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 147376, - "end": 147397, + "start": 147890, + "end": 147911, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 16 }, "end": { - "line": 3638, + "line": 3646, "column": 37 } }, "object": { "type": "Identifier", - "start": 147376, - "end": 147392, + "start": 147890, + "end": 147906, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 16 }, "end": { - "line": 3638, + "line": 3646, "column": 32 }, "identifierName": "selectedMaterial" @@ -159610,15 +160671,15 @@ }, "property": { "type": "Identifier", - "start": 147393, - "end": 147397, + "start": 147907, + "end": 147911, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 33 }, "end": { - "line": 3638, + "line": 3646, "column": 37 }, "identifierName": "fill" @@ -159629,72 +160690,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 147399, - "end": 147648, + "start": 147913, + "end": 148162, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 39 }, "end": { - "line": 3644, + "line": 3652, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 147417, - "end": 147634, + "start": 147931, + "end": 148148, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 16 }, "end": { - "line": 3643, + "line": 3651, "column": 17 } }, "test": { "type": "BinaryExpression", - "start": 147421, - "end": 147453, + "start": 147935, + "end": 147967, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 20 }, "end": { - "line": 3639, + "line": 3647, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 147421, - "end": 147447, + "start": 147935, + "end": 147961, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 20 }, "end": { - "line": 3639, + "line": 3647, "column": 46 } }, "object": { "type": "Identifier", - "start": 147421, - "end": 147437, + "start": 147935, + "end": 147951, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 20 }, "end": { - "line": 3639, + "line": 3647, "column": 36 }, "identifierName": "selectedMaterial" @@ -159703,15 +160764,15 @@ }, "property": { "type": "Identifier", - "start": 147438, - "end": 147447, + "start": 147952, + "end": 147961, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 37 }, "end": { - "line": 3639, + "line": 3647, "column": 46 }, "identifierName": "fillAlpha" @@ -159723,15 +160784,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 147450, - "end": 147453, + "start": 147964, + "end": 147967, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 49 }, "end": { - "line": 3639, + "line": 3647, "column": 52 } }, @@ -159744,73 +160805,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 147455, - "end": 147544, + "start": 147969, + "end": 148058, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 54 }, "end": { - "line": 3641, + "line": 3649, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 147477, - "end": 147526, + "start": 147991, + "end": 148040, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 20 }, "end": { - "line": 3640, + "line": 3648, "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 147477, - "end": 147525, + "start": 147991, + "end": 148039, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 20 }, "end": { - "line": 3640, + "line": 3648, "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 147477, - "end": 147518, + "start": 147991, + "end": 148032, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 20 }, "end": { - "line": 3640, + "line": 3648, "column": 61 } }, "object": { "type": "Identifier", - "start": 147477, - "end": 147488, + "start": 147991, + "end": 148002, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 20 }, "end": { - "line": 3640, + "line": 3648, "column": 31 }, "identifierName": "renderFlags" @@ -159819,15 +160880,15 @@ }, "property": { "type": "Identifier", - "start": 147489, - "end": 147518, + "start": 148003, + "end": 148032, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 32 }, "end": { - "line": 3640, + "line": 3648, "column": 61 }, "identifierName": "selectedSilhouetteTransparent" @@ -159838,15 +160899,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 147521, - "end": 147525, + "start": 148035, + "end": 148039, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 64 }, "end": { - "line": 3640, + "line": 3648, "column": 68 } }, @@ -159859,73 +160920,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 147550, - "end": 147634, + "start": 148064, + "end": 148148, "loc": { "start": { - "line": 3641, + "line": 3649, "column": 23 }, "end": { - "line": 3643, + "line": 3651, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 147572, - "end": 147616, + "start": 148086, + "end": 148130, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 20 }, "end": { - "line": 3642, + "line": 3650, "column": 64 } }, "expression": { "type": "AssignmentExpression", - "start": 147572, - "end": 147615, + "start": 148086, + "end": 148129, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 20 }, "end": { - "line": 3642, + "line": 3650, "column": 63 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 147572, - "end": 147608, + "start": 148086, + "end": 148122, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 20 }, "end": { - "line": 3642, + "line": 3650, "column": 56 } }, "object": { "type": "Identifier", - "start": 147572, - "end": 147583, + "start": 148086, + "end": 148097, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 20 }, "end": { - "line": 3642, + "line": 3650, "column": 31 }, "identifierName": "renderFlags" @@ -159934,15 +160995,15 @@ }, "property": { "type": "Identifier", - "start": 147584, - "end": 147608, + "start": 148098, + "end": 148122, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 32 }, "end": { - "line": 3642, + "line": 3650, "column": 56 }, "identifierName": "selectedSilhouetteOpaque" @@ -159953,15 +161014,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 147611, - "end": 147615, + "start": 148125, + "end": 148129, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 59 }, "end": { - "line": 3642, + "line": 3650, "column": 63 } }, @@ -159980,43 +161041,43 @@ }, { "type": "IfStatement", - "start": 147661, - "end": 147928, + "start": 148175, + "end": 148442, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 12 }, "end": { - "line": 3651, + "line": 3659, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 147665, - "end": 147687, + "start": 148179, + "end": 148201, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 16 }, "end": { - "line": 3645, + "line": 3653, "column": 38 } }, "object": { "type": "Identifier", - "start": 147665, - "end": 147681, + "start": 148179, + "end": 148195, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 16 }, "end": { - "line": 3645, + "line": 3653, "column": 32 }, "identifierName": "selectedMaterial" @@ -160025,15 +161086,15 @@ }, "property": { "type": "Identifier", - "start": 147682, - "end": 147687, + "start": 148196, + "end": 148201, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 33 }, "end": { - "line": 3645, + "line": 3653, "column": 38 }, "identifierName": "edges" @@ -160044,72 +161105,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 147689, - "end": 147928, + "start": 148203, + "end": 148442, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 40 }, "end": { - "line": 3651, + "line": 3659, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 147707, - "end": 147914, + "start": 148221, + "end": 148428, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 16 }, "end": { - "line": 3650, + "line": 3658, "column": 17 } }, "test": { "type": "BinaryExpression", - "start": 147711, - "end": 147743, + "start": 148225, + "end": 148257, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 20 }, "end": { - "line": 3646, + "line": 3654, "column": 52 } }, "left": { "type": "MemberExpression", - "start": 147711, - "end": 147737, + "start": 148225, + "end": 148251, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 20 }, "end": { - "line": 3646, + "line": 3654, "column": 46 } }, "object": { "type": "Identifier", - "start": 147711, - "end": 147727, + "start": 148225, + "end": 148241, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 20 }, "end": { - "line": 3646, + "line": 3654, "column": 36 }, "identifierName": "selectedMaterial" @@ -160118,15 +161179,15 @@ }, "property": { "type": "Identifier", - "start": 147728, - "end": 147737, + "start": 148242, + "end": 148251, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 37 }, "end": { - "line": 3646, + "line": 3654, "column": 46 }, "identifierName": "edgeAlpha" @@ -160138,15 +161199,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 147740, - "end": 147743, + "start": 148254, + "end": 148257, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 49 }, "end": { - "line": 3646, + "line": 3654, "column": 52 } }, @@ -160159,73 +161220,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 147745, - "end": 147829, + "start": 148259, + "end": 148343, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 54 }, "end": { - "line": 3648, + "line": 3656, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 147767, - "end": 147811, + "start": 148281, + "end": 148325, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 20 }, "end": { - "line": 3647, + "line": 3655, "column": 64 } }, "expression": { "type": "AssignmentExpression", - "start": 147767, - "end": 147810, + "start": 148281, + "end": 148324, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 20 }, "end": { - "line": 3647, + "line": 3655, "column": 63 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 147767, - "end": 147803, + "start": 148281, + "end": 148317, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 20 }, "end": { - "line": 3647, + "line": 3655, "column": 56 } }, "object": { "type": "Identifier", - "start": 147767, - "end": 147778, + "start": 148281, + "end": 148292, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 20 }, "end": { - "line": 3647, + "line": 3655, "column": 31 }, "identifierName": "renderFlags" @@ -160234,15 +161295,15 @@ }, "property": { "type": "Identifier", - "start": 147779, - "end": 147803, + "start": 148293, + "end": 148317, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 32 }, "end": { - "line": 3647, + "line": 3655, "column": 56 }, "identifierName": "selectedEdgesTransparent" @@ -160253,15 +161314,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 147806, - "end": 147810, + "start": 148320, + "end": 148324, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 59 }, "end": { - "line": 3647, + "line": 3655, "column": 63 } }, @@ -160274,73 +161335,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 147835, - "end": 147914, + "start": 148349, + "end": 148428, "loc": { "start": { - "line": 3648, + "line": 3656, "column": 23 }, "end": { - "line": 3650, + "line": 3658, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 147857, - "end": 147896, + "start": 148371, + "end": 148410, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 20 }, "end": { - "line": 3649, + "line": 3657, "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 147857, - "end": 147895, + "start": 148371, + "end": 148409, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 20 }, "end": { - "line": 3649, + "line": 3657, "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 147857, - "end": 147888, + "start": 148371, + "end": 148402, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 20 }, "end": { - "line": 3649, + "line": 3657, "column": 51 } }, "object": { "type": "Identifier", - "start": 147857, - "end": 147868, + "start": 148371, + "end": 148382, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 20 }, "end": { - "line": 3649, + "line": 3657, "column": 31 }, "identifierName": "renderFlags" @@ -160349,15 +161410,15 @@ }, "property": { "type": "Identifier", - "start": 147869, - "end": 147888, + "start": 148383, + "end": 148402, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 32 }, "end": { - "line": 3649, + "line": 3657, "column": 51 }, "identifierName": "selectedEdgesOpaque" @@ -160368,15 +161429,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 147891, - "end": 147895, + "start": 148405, + "end": 148409, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 54 }, "end": { - "line": 3649, + "line": 3657, "column": 58 } }, @@ -160400,72 +161461,72 @@ }, { "type": "IfStatement", - "start": 147947, - "end": 148660, + "start": 148461, + "end": 149174, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 8 }, "end": { - "line": 3669, + "line": 3677, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 147951, - "end": 147987, + "start": 148465, + "end": 148501, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 12 }, "end": { - "line": 3653, + "line": 3661, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 147951, - "end": 147983, + "start": 148465, + "end": 148497, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 12 }, "end": { - "line": 3653, + "line": 3661, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 147951, - "end": 147955, + "start": 148465, + "end": 148469, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 12 }, "end": { - "line": 3653, + "line": 3661, "column": 16 } } }, "property": { "type": "Identifier", - "start": 147956, - "end": 147983, + "start": 148470, + "end": 148497, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 17 }, "end": { - "line": 3653, + "line": 3661, "column": 44 }, "identifierName": "numHighlightedLayerPortions" @@ -160477,15 +161538,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 147986, - "end": 147987, + "start": 148500, + "end": 148501, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 47 }, "end": { - "line": 3653, + "line": 3661, "column": 48 } }, @@ -160498,59 +161559,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 147989, - "end": 148660, + "start": 148503, + "end": 149174, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 50 }, "end": { - "line": 3669, + "line": 3677, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 148003, - "end": 148065, + "start": 148517, + "end": 148579, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 12 }, "end": { - "line": 3654, + "line": 3662, "column": 74 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 148009, - "end": 148064, + "start": 148523, + "end": 148578, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 18 }, "end": { - "line": 3654, + "line": 3662, "column": 73 } }, "id": { "type": "Identifier", - "start": 148009, - "end": 148026, + "start": 148523, + "end": 148540, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 18 }, "end": { - "line": 3654, + "line": 3662, "column": 35 }, "identifierName": "highlightMaterial" @@ -160559,72 +161620,72 @@ }, "init": { "type": "MemberExpression", - "start": 148029, - "end": 148064, + "start": 148543, + "end": 148578, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 38 }, "end": { - "line": 3654, + "line": 3662, "column": 73 } }, "object": { "type": "MemberExpression", - "start": 148029, - "end": 148057, + "start": 148543, + "end": 148571, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 38 }, "end": { - "line": 3654, + "line": 3662, "column": 66 } }, "object": { "type": "MemberExpression", - "start": 148029, - "end": 148039, + "start": 148543, + "end": 148553, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 38 }, "end": { - "line": 3654, + "line": 3662, "column": 48 } }, "object": { "type": "ThisExpression", - "start": 148029, - "end": 148033, + "start": 148543, + "end": 148547, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 38 }, "end": { - "line": 3654, + "line": 3662, "column": 42 } } }, "property": { "type": "Identifier", - "start": 148034, - "end": 148039, + "start": 148548, + "end": 148553, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 43 }, "end": { - "line": 3654, + "line": 3662, "column": 48 }, "identifierName": "scene" @@ -160635,15 +161696,15 @@ }, "property": { "type": "Identifier", - "start": 148040, - "end": 148057, + "start": 148554, + "end": 148571, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 49 }, "end": { - "line": 3654, + "line": 3662, "column": 66 }, "identifierName": "highlightMaterial" @@ -160654,15 +161715,15 @@ }, "property": { "type": "Identifier", - "start": 148058, - "end": 148064, + "start": 148572, + "end": 148578, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 67 }, "end": { - "line": 3654, + "line": 3662, "column": 73 }, "identifierName": "_state" @@ -160677,43 +161738,43 @@ }, { "type": "IfStatement", - "start": 148078, - "end": 148362, + "start": 148592, + "end": 148876, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 12 }, "end": { - "line": 3661, + "line": 3669, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 148082, - "end": 148104, + "start": 148596, + "end": 148618, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 16 }, "end": { - "line": 3655, + "line": 3663, "column": 38 } }, "object": { "type": "Identifier", - "start": 148082, - "end": 148099, + "start": 148596, + "end": 148613, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 16 }, "end": { - "line": 3655, + "line": 3663, "column": 33 }, "identifierName": "highlightMaterial" @@ -160722,15 +161783,15 @@ }, "property": { "type": "Identifier", - "start": 148100, - "end": 148104, + "start": 148614, + "end": 148618, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 34 }, "end": { - "line": 3655, + "line": 3663, "column": 38 }, "identifierName": "fill" @@ -160741,72 +161802,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 148106, - "end": 148362, + "start": 148620, + "end": 148876, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 40 }, "end": { - "line": 3661, + "line": 3669, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 148124, - "end": 148348, + "start": 148638, + "end": 148862, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 16 }, "end": { - "line": 3660, + "line": 3668, "column": 17 } }, "test": { "type": "BinaryExpression", - "start": 148128, - "end": 148161, + "start": 148642, + "end": 148675, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 20 }, "end": { - "line": 3656, + "line": 3664, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 148128, - "end": 148155, + "start": 148642, + "end": 148669, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 20 }, "end": { - "line": 3656, + "line": 3664, "column": 47 } }, "object": { "type": "Identifier", - "start": 148128, - "end": 148145, + "start": 148642, + "end": 148659, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 20 }, "end": { - "line": 3656, + "line": 3664, "column": 37 }, "identifierName": "highlightMaterial" @@ -160815,15 +161876,15 @@ }, "property": { "type": "Identifier", - "start": 148146, - "end": 148155, + "start": 148660, + "end": 148669, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 38 }, "end": { - "line": 3656, + "line": 3664, "column": 47 }, "identifierName": "fillAlpha" @@ -160835,15 +161896,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 148158, - "end": 148161, + "start": 148672, + "end": 148675, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 50 }, "end": { - "line": 3656, + "line": 3664, "column": 53 } }, @@ -160856,73 +161917,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 148163, - "end": 148255, + "start": 148677, + "end": 148769, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 55 }, "end": { - "line": 3658, + "line": 3666, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 148185, - "end": 148237, + "start": 148699, + "end": 148751, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 20 }, "end": { - "line": 3657, + "line": 3665, "column": 72 } }, "expression": { "type": "AssignmentExpression", - "start": 148185, - "end": 148236, + "start": 148699, + "end": 148750, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 20 }, "end": { - "line": 3657, + "line": 3665, "column": 71 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 148185, - "end": 148229, + "start": 148699, + "end": 148743, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 20 }, "end": { - "line": 3657, + "line": 3665, "column": 64 } }, "object": { "type": "Identifier", - "start": 148185, - "end": 148196, + "start": 148699, + "end": 148710, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 20 }, "end": { - "line": 3657, + "line": 3665, "column": 31 }, "identifierName": "renderFlags" @@ -160931,15 +161992,15 @@ }, "property": { "type": "Identifier", - "start": 148197, - "end": 148229, + "start": 148711, + "end": 148743, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 32 }, "end": { - "line": 3657, + "line": 3665, "column": 64 }, "identifierName": "highlightedSilhouetteTransparent" @@ -160950,15 +162011,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 148232, - "end": 148236, + "start": 148746, + "end": 148750, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 67 }, "end": { - "line": 3657, + "line": 3665, "column": 71 } }, @@ -160971,73 +162032,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 148261, - "end": 148348, + "start": 148775, + "end": 148862, "loc": { "start": { - "line": 3658, + "line": 3666, "column": 23 }, "end": { - "line": 3660, + "line": 3668, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 148283, - "end": 148330, + "start": 148797, + "end": 148844, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 20 }, "end": { - "line": 3659, + "line": 3667, "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 148283, - "end": 148329, + "start": 148797, + "end": 148843, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 20 }, "end": { - "line": 3659, + "line": 3667, "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 148283, - "end": 148322, + "start": 148797, + "end": 148836, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 20 }, "end": { - "line": 3659, + "line": 3667, "column": 59 } }, "object": { "type": "Identifier", - "start": 148283, - "end": 148294, + "start": 148797, + "end": 148808, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 20 }, "end": { - "line": 3659, + "line": 3667, "column": 31 }, "identifierName": "renderFlags" @@ -161046,15 +162107,15 @@ }, "property": { "type": "Identifier", - "start": 148295, - "end": 148322, + "start": 148809, + "end": 148836, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 32 }, "end": { - "line": 3659, + "line": 3667, "column": 59 }, "identifierName": "highlightedSilhouetteOpaque" @@ -161065,15 +162126,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 148325, - "end": 148329, + "start": 148839, + "end": 148843, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 62 }, "end": { - "line": 3659, + "line": 3667, "column": 66 } }, @@ -161092,43 +162153,43 @@ }, { "type": "IfStatement", - "start": 148375, - "end": 148650, + "start": 148889, + "end": 149164, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 12 }, "end": { - "line": 3668, + "line": 3676, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 148379, - "end": 148402, + "start": 148893, + "end": 148916, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 16 }, "end": { - "line": 3662, + "line": 3670, "column": 39 } }, "object": { "type": "Identifier", - "start": 148379, - "end": 148396, + "start": 148893, + "end": 148910, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 16 }, "end": { - "line": 3662, + "line": 3670, "column": 33 }, "identifierName": "highlightMaterial" @@ -161137,15 +162198,15 @@ }, "property": { "type": "Identifier", - "start": 148397, - "end": 148402, + "start": 148911, + "end": 148916, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 34 }, "end": { - "line": 3662, + "line": 3670, "column": 39 }, "identifierName": "edges" @@ -161156,72 +162217,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 148404, - "end": 148650, + "start": 148918, + "end": 149164, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 41 }, "end": { - "line": 3668, + "line": 3676, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 148422, - "end": 148636, + "start": 148936, + "end": 149150, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 16 }, "end": { - "line": 3667, + "line": 3675, "column": 17 } }, "test": { "type": "BinaryExpression", - "start": 148426, - "end": 148459, + "start": 148940, + "end": 148973, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 20 }, "end": { - "line": 3663, + "line": 3671, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 148426, - "end": 148453, + "start": 148940, + "end": 148967, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 20 }, "end": { - "line": 3663, + "line": 3671, "column": 47 } }, "object": { "type": "Identifier", - "start": 148426, - "end": 148443, + "start": 148940, + "end": 148957, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 20 }, "end": { - "line": 3663, + "line": 3671, "column": 37 }, "identifierName": "highlightMaterial" @@ -161230,15 +162291,15 @@ }, "property": { "type": "Identifier", - "start": 148444, - "end": 148453, + "start": 148958, + "end": 148967, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 38 }, "end": { - "line": 3663, + "line": 3671, "column": 47 }, "identifierName": "edgeAlpha" @@ -161250,15 +162311,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 148456, - "end": 148459, + "start": 148970, + "end": 148973, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 50 }, "end": { - "line": 3663, + "line": 3671, "column": 53 } }, @@ -161271,73 +162332,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 148461, - "end": 148548, + "start": 148975, + "end": 149062, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 55 }, "end": { - "line": 3665, + "line": 3673, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 148483, - "end": 148530, + "start": 148997, + "end": 149044, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 20 }, "end": { - "line": 3664, + "line": 3672, "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 148483, - "end": 148529, + "start": 148997, + "end": 149043, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 20 }, "end": { - "line": 3664, + "line": 3672, "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 148483, - "end": 148522, + "start": 148997, + "end": 149036, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 20 }, "end": { - "line": 3664, + "line": 3672, "column": 59 } }, "object": { "type": "Identifier", - "start": 148483, - "end": 148494, + "start": 148997, + "end": 149008, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 20 }, "end": { - "line": 3664, + "line": 3672, "column": 31 }, "identifierName": "renderFlags" @@ -161346,15 +162407,15 @@ }, "property": { "type": "Identifier", - "start": 148495, - "end": 148522, + "start": 149009, + "end": 149036, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 32 }, "end": { - "line": 3664, + "line": 3672, "column": 59 }, "identifierName": "highlightedEdgesTransparent" @@ -161365,15 +162426,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 148525, - "end": 148529, + "start": 149039, + "end": 149043, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 62 }, "end": { - "line": 3664, + "line": 3672, "column": 66 } }, @@ -161386,73 +162447,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 148554, - "end": 148636, + "start": 149068, + "end": 149150, "loc": { "start": { - "line": 3665, + "line": 3673, "column": 23 }, "end": { - "line": 3667, + "line": 3675, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 148576, - "end": 148618, + "start": 149090, + "end": 149132, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 20 }, "end": { - "line": 3666, + "line": 3674, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 148576, - "end": 148617, + "start": 149090, + "end": 149131, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 20 }, "end": { - "line": 3666, + "line": 3674, "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 148576, - "end": 148610, + "start": 149090, + "end": 149124, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 20 }, "end": { - "line": 3666, + "line": 3674, "column": 54 } }, "object": { "type": "Identifier", - "start": 148576, - "end": 148587, + "start": 149090, + "end": 149101, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 20 }, "end": { - "line": 3666, + "line": 3674, "column": 31 }, "identifierName": "renderFlags" @@ -161461,15 +162522,15 @@ }, "property": { "type": "Identifier", - "start": 148588, - "end": 148610, + "start": 149102, + "end": 149124, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 32 }, "end": { - "line": 3666, + "line": 3674, "column": 54 }, "identifierName": "highlightedEdgesOpaque" @@ -161480,15 +162541,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 148613, - "end": 148617, + "start": 149127, + "end": 149131, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 57 }, "end": { - "line": 3666, + "line": 3674, "column": 61 } }, @@ -161518,15 +162579,15 @@ { "type": "CommentLine", "value": " -------------- RENDERING ---------------------------------------------------------------------------------------", - "start": 148672, - "end": 148787, + "start": 149186, + "end": 149301, "loc": { "start": { - "line": 3672, + "line": 3680, "column": 4 }, "end": { - "line": 3672, + "line": 3680, "column": 119 } } @@ -161534,15 +162595,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 148793, - "end": 148808, + "start": 149307, + "end": 149322, "loc": { "start": { - "line": 3674, + "line": 3682, "column": 4 }, "end": { - "line": 3674, + "line": 3682, "column": 19 } } @@ -161551,15 +162612,15 @@ }, { "type": "ClassMethod", - "start": 148813, - "end": 149122, + "start": 149327, + "end": 149636, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 4 }, "end": { - "line": 3681, + "line": 3689, "column": 5 } }, @@ -161567,15 +162628,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 148813, - "end": 148828, + "start": 149327, + "end": 149342, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 4 }, "end": { - "line": 3675, + "line": 3683, "column": 19 }, "identifierName": "drawColorOpaque" @@ -161591,15 +162652,15 @@ "params": [ { "type": "Identifier", - "start": 148829, - "end": 148837, + "start": 149343, + "end": 149351, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 20 }, "end": { - "line": 3675, + "line": 3683, "column": 28 }, "identifierName": "frameCtx" @@ -161609,59 +162670,59 @@ ], "body": { "type": "BlockStatement", - "start": 148839, - "end": 149122, + "start": 149353, + "end": 149636, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 30 }, "end": { - "line": 3681, + "line": 3689, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 148849, - "end": 148886, + "start": 149363, + "end": 149400, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 8 }, "end": { - "line": 3676, + "line": 3684, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 148855, - "end": 148885, + "start": 149369, + "end": 149399, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 14 }, "end": { - "line": 3676, + "line": 3684, "column": 44 } }, "id": { "type": "Identifier", - "start": 148855, - "end": 148866, + "start": 149369, + "end": 149380, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 14 }, "end": { - "line": 3676, + "line": 3684, "column": 25 }, "identifierName": "renderFlags" @@ -161670,44 +162731,44 @@ }, "init": { "type": "MemberExpression", - "start": 148869, - "end": 148885, + "start": 149383, + "end": 149399, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 28 }, "end": { - "line": 3676, + "line": 3684, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 148869, - "end": 148873, + "start": 149383, + "end": 149387, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 28 }, "end": { - "line": 3676, + "line": 3684, "column": 32 } } }, "property": { "type": "Identifier", - "start": 148874, - "end": 148885, + "start": 149388, + "end": 149399, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 33 }, "end": { - "line": 3676, + "line": 3684, "column": 44 }, "identifierName": "renderFlags" @@ -161722,58 +162783,58 @@ }, { "type": "ForStatement", - "start": 148895, - "end": 149116, + "start": 149409, + "end": 149630, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 8 }, "end": { - "line": 3680, + "line": 3688, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 148900, - "end": 148949, + "start": 149414, + "end": 149463, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 13 }, "end": { - "line": 3677, + "line": 3685, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 148904, - "end": 148909, + "start": 149418, + "end": 149423, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 17 }, "end": { - "line": 3677, + "line": 3685, "column": 22 } }, "id": { "type": "Identifier", - "start": 148904, - "end": 148905, + "start": 149418, + "end": 149419, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 17 }, "end": { - "line": 3677, + "line": 3685, "column": 18 }, "identifierName": "i" @@ -161782,15 +162843,15 @@ }, "init": { "type": "NumericLiteral", - "start": 148908, - "end": 148909, + "start": 149422, + "end": 149423, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 21 }, "end": { - "line": 3677, + "line": 3685, "column": 22 } }, @@ -161803,29 +162864,29 @@ }, { "type": "VariableDeclarator", - "start": 148911, - "end": 148949, + "start": 149425, + "end": 149463, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 24 }, "end": { - "line": 3677, + "line": 3685, "column": 62 } }, "id": { "type": "Identifier", - "start": 148911, - "end": 148914, + "start": 149425, + "end": 149428, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 24 }, "end": { - "line": 3677, + "line": 3685, "column": 27 }, "identifierName": "len" @@ -161834,43 +162895,43 @@ }, "init": { "type": "MemberExpression", - "start": 148917, - "end": 148949, + "start": 149431, + "end": 149463, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 30 }, "end": { - "line": 3677, + "line": 3685, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 148917, - "end": 148942, + "start": 149431, + "end": 149456, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 30 }, "end": { - "line": 3677, + "line": 3685, "column": 55 } }, "object": { "type": "Identifier", - "start": 148917, - "end": 148928, + "start": 149431, + "end": 149442, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 30 }, "end": { - "line": 3677, + "line": 3685, "column": 41 }, "identifierName": "renderFlags" @@ -161879,15 +162940,15 @@ }, "property": { "type": "Identifier", - "start": 148929, - "end": 148942, + "start": 149443, + "end": 149456, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 42 }, "end": { - "line": 3677, + "line": 3685, "column": 55 }, "identifierName": "visibleLayers" @@ -161898,15 +162959,15 @@ }, "property": { "type": "Identifier", - "start": 148943, - "end": 148949, + "start": 149457, + "end": 149463, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 56 }, "end": { - "line": 3677, + "line": 3685, "column": 62 }, "identifierName": "length" @@ -161921,29 +162982,29 @@ }, "test": { "type": "BinaryExpression", - "start": 148951, - "end": 148958, + "start": 149465, + "end": 149472, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 64 }, "end": { - "line": 3677, + "line": 3685, "column": 71 } }, "left": { "type": "Identifier", - "start": 148951, - "end": 148952, + "start": 149465, + "end": 149466, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 64 }, "end": { - "line": 3677, + "line": 3685, "column": 65 }, "identifierName": "i" @@ -161953,15 +163014,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 148955, - "end": 148958, + "start": 149469, + "end": 149472, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 68 }, "end": { - "line": 3677, + "line": 3685, "column": 71 }, "identifierName": "len" @@ -161971,15 +163032,15 @@ }, "update": { "type": "UpdateExpression", - "start": 148960, - "end": 148963, + "start": 149474, + "end": 149477, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 73 }, "end": { - "line": 3677, + "line": 3685, "column": 76 } }, @@ -161987,15 +163048,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 148960, - "end": 148961, + "start": 149474, + "end": 149475, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 73 }, "end": { - "line": 3677, + "line": 3685, "column": 74 }, "identifierName": "i" @@ -162005,59 +163066,59 @@ }, "body": { "type": "BlockStatement", - "start": 148965, - "end": 149116, + "start": 149479, + "end": 149630, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 78 }, "end": { - "line": 3680, + "line": 3688, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 148979, - "end": 149027, + "start": 149493, + "end": 149541, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 12 }, "end": { - "line": 3678, + "line": 3686, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 148985, - "end": 149026, + "start": 149499, + "end": 149540, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 18 }, "end": { - "line": 3678, + "line": 3686, "column": 59 } }, "id": { "type": "Identifier", - "start": 148985, - "end": 148995, + "start": 149499, + "end": 149509, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 18 }, "end": { - "line": 3678, + "line": 3686, "column": 28 }, "identifierName": "layerIndex" @@ -162066,43 +163127,43 @@ }, "init": { "type": "MemberExpression", - "start": 148998, - "end": 149026, + "start": 149512, + "end": 149540, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 31 }, "end": { - "line": 3678, + "line": 3686, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 148998, - "end": 149023, + "start": 149512, + "end": 149537, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 31 }, "end": { - "line": 3678, + "line": 3686, "column": 56 } }, "object": { "type": "Identifier", - "start": 148998, - "end": 149009, + "start": 149512, + "end": 149523, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 31 }, "end": { - "line": 3678, + "line": 3686, "column": 42 }, "identifierName": "renderFlags" @@ -162111,15 +163172,15 @@ }, "property": { "type": "Identifier", - "start": 149010, - "end": 149023, + "start": 149524, + "end": 149537, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 43 }, "end": { - "line": 3678, + "line": 3686, "column": 56 }, "identifierName": "visibleLayers" @@ -162130,15 +163191,15 @@ }, "property": { "type": "Identifier", - "start": 149024, - "end": 149025, + "start": 149538, + "end": 149539, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 57 }, "end": { - "line": 3678, + "line": 3686, "column": 58 }, "identifierName": "i" @@ -162153,100 +163214,100 @@ }, { "type": "ExpressionStatement", - "start": 149040, - "end": 149106, + "start": 149554, + "end": 149620, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 12 }, "end": { - "line": 3679, + "line": 3687, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 149040, - "end": 149105, + "start": 149554, + "end": 149619, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 12 }, "end": { - "line": 3679, + "line": 3687, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 149040, - "end": 149082, + "start": 149554, + "end": 149596, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 12 }, "end": { - "line": 3679, + "line": 3687, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 149040, - "end": 149066, + "start": 149554, + "end": 149580, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 12 }, "end": { - "line": 3679, + "line": 3687, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 149040, - "end": 149054, + "start": 149554, + "end": 149568, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 12 }, "end": { - "line": 3679, + "line": 3687, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 149040, - "end": 149044, + "start": 149554, + "end": 149558, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 12 }, "end": { - "line": 3679, + "line": 3687, "column": 16 } } }, "property": { "type": "Identifier", - "start": 149045, - "end": 149054, + "start": 149559, + "end": 149568, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 17 }, "end": { - "line": 3679, + "line": 3687, "column": 26 }, "identifierName": "layerList" @@ -162257,15 +163318,15 @@ }, "property": { "type": "Identifier", - "start": 149055, - "end": 149065, + "start": 149569, + "end": 149579, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 27 }, "end": { - "line": 3679, + "line": 3687, "column": 37 }, "identifierName": "layerIndex" @@ -162276,15 +163337,15 @@ }, "property": { "type": "Identifier", - "start": 149067, - "end": 149082, + "start": 149581, + "end": 149596, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 39 }, "end": { - "line": 3679, + "line": 3687, "column": 54 }, "identifierName": "drawColorOpaque" @@ -162296,15 +163357,15 @@ "arguments": [ { "type": "Identifier", - "start": 149083, - "end": 149094, + "start": 149597, + "end": 149608, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 55 }, "end": { - "line": 3679, + "line": 3687, "column": 66 }, "identifierName": "renderFlags" @@ -162313,15 +163374,15 @@ }, { "type": "Identifier", - "start": 149096, - "end": 149104, + "start": 149610, + "end": 149618, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 68 }, "end": { - "line": 3679, + "line": 3687, "column": 76 }, "identifierName": "frameCtx" @@ -162343,15 +163404,15 @@ { "type": "CommentLine", "value": " -------------- RENDERING ---------------------------------------------------------------------------------------", - "start": 148672, - "end": 148787, + "start": 149186, + "end": 149301, "loc": { "start": { - "line": 3672, + "line": 3680, "column": 4 }, "end": { - "line": 3672, + "line": 3680, "column": 119 } } @@ -162359,15 +163420,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 148793, - "end": 148808, + "start": 149307, + "end": 149322, "loc": { "start": { - "line": 3674, + "line": 3682, "column": 4 }, "end": { - "line": 3674, + "line": 3682, "column": 19 } } @@ -162377,15 +163438,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149128, - "end": 149143, + "start": 149642, + "end": 149657, "loc": { "start": { - "line": 3683, + "line": 3691, "column": 4 }, "end": { - "line": 3683, + "line": 3691, "column": 19 } } @@ -162394,15 +163455,15 @@ }, { "type": "ClassMethod", - "start": 149148, - "end": 149467, + "start": 149662, + "end": 149981, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 4 }, "end": { - "line": 3690, + "line": 3698, "column": 5 } }, @@ -162410,15 +163471,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 149148, - "end": 149168, + "start": 149662, + "end": 149682, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 4 }, "end": { - "line": 3684, + "line": 3692, "column": 24 }, "identifierName": "drawColorTransparent" @@ -162434,15 +163495,15 @@ "params": [ { "type": "Identifier", - "start": 149169, - "end": 149177, + "start": 149683, + "end": 149691, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 25 }, "end": { - "line": 3684, + "line": 3692, "column": 33 }, "identifierName": "frameCtx" @@ -162452,59 +163513,59 @@ ], "body": { "type": "BlockStatement", - "start": 149179, - "end": 149467, + "start": 149693, + "end": 149981, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 35 }, "end": { - "line": 3690, + "line": 3698, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 149189, - "end": 149226, + "start": 149703, + "end": 149740, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 8 }, "end": { - "line": 3685, + "line": 3693, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 149195, - "end": 149225, + "start": 149709, + "end": 149739, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 14 }, "end": { - "line": 3685, + "line": 3693, "column": 44 } }, "id": { "type": "Identifier", - "start": 149195, - "end": 149206, + "start": 149709, + "end": 149720, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 14 }, "end": { - "line": 3685, + "line": 3693, "column": 25 }, "identifierName": "renderFlags" @@ -162513,44 +163574,44 @@ }, "init": { "type": "MemberExpression", - "start": 149209, - "end": 149225, + "start": 149723, + "end": 149739, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 28 }, "end": { - "line": 3685, + "line": 3693, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 149209, - "end": 149213, + "start": 149723, + "end": 149727, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 28 }, "end": { - "line": 3685, + "line": 3693, "column": 32 } } }, "property": { "type": "Identifier", - "start": 149214, - "end": 149225, + "start": 149728, + "end": 149739, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 33 }, "end": { - "line": 3685, + "line": 3693, "column": 44 }, "identifierName": "renderFlags" @@ -162565,58 +163626,58 @@ }, { "type": "ForStatement", - "start": 149235, - "end": 149461, + "start": 149749, + "end": 149975, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 8 }, "end": { - "line": 3689, + "line": 3697, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 149240, - "end": 149289, + "start": 149754, + "end": 149803, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 13 }, "end": { - "line": 3686, + "line": 3694, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 149244, - "end": 149249, + "start": 149758, + "end": 149763, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 17 }, "end": { - "line": 3686, + "line": 3694, "column": 22 } }, "id": { "type": "Identifier", - "start": 149244, - "end": 149245, + "start": 149758, + "end": 149759, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 17 }, "end": { - "line": 3686, + "line": 3694, "column": 18 }, "identifierName": "i" @@ -162625,15 +163686,15 @@ }, "init": { "type": "NumericLiteral", - "start": 149248, - "end": 149249, + "start": 149762, + "end": 149763, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 21 }, "end": { - "line": 3686, + "line": 3694, "column": 22 } }, @@ -162646,29 +163707,29 @@ }, { "type": "VariableDeclarator", - "start": 149251, - "end": 149289, + "start": 149765, + "end": 149803, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 24 }, "end": { - "line": 3686, + "line": 3694, "column": 62 } }, "id": { "type": "Identifier", - "start": 149251, - "end": 149254, + "start": 149765, + "end": 149768, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 24 }, "end": { - "line": 3686, + "line": 3694, "column": 27 }, "identifierName": "len" @@ -162677,43 +163738,43 @@ }, "init": { "type": "MemberExpression", - "start": 149257, - "end": 149289, + "start": 149771, + "end": 149803, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 30 }, "end": { - "line": 3686, + "line": 3694, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 149257, - "end": 149282, + "start": 149771, + "end": 149796, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 30 }, "end": { - "line": 3686, + "line": 3694, "column": 55 } }, "object": { "type": "Identifier", - "start": 149257, - "end": 149268, + "start": 149771, + "end": 149782, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 30 }, "end": { - "line": 3686, + "line": 3694, "column": 41 }, "identifierName": "renderFlags" @@ -162722,15 +163783,15 @@ }, "property": { "type": "Identifier", - "start": 149269, - "end": 149282, + "start": 149783, + "end": 149796, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 42 }, "end": { - "line": 3686, + "line": 3694, "column": 55 }, "identifierName": "visibleLayers" @@ -162741,15 +163802,15 @@ }, "property": { "type": "Identifier", - "start": 149283, - "end": 149289, + "start": 149797, + "end": 149803, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 56 }, "end": { - "line": 3686, + "line": 3694, "column": 62 }, "identifierName": "length" @@ -162764,29 +163825,29 @@ }, "test": { "type": "BinaryExpression", - "start": 149291, - "end": 149298, + "start": 149805, + "end": 149812, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 64 }, "end": { - "line": 3686, + "line": 3694, "column": 71 } }, "left": { "type": "Identifier", - "start": 149291, - "end": 149292, + "start": 149805, + "end": 149806, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 64 }, "end": { - "line": 3686, + "line": 3694, "column": 65 }, "identifierName": "i" @@ -162796,15 +163857,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 149295, - "end": 149298, + "start": 149809, + "end": 149812, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 68 }, "end": { - "line": 3686, + "line": 3694, "column": 71 }, "identifierName": "len" @@ -162814,15 +163875,15 @@ }, "update": { "type": "UpdateExpression", - "start": 149300, - "end": 149303, + "start": 149814, + "end": 149817, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 73 }, "end": { - "line": 3686, + "line": 3694, "column": 76 } }, @@ -162830,15 +163891,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 149300, - "end": 149301, + "start": 149814, + "end": 149815, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 73 }, "end": { - "line": 3686, + "line": 3694, "column": 74 }, "identifierName": "i" @@ -162848,59 +163909,59 @@ }, "body": { "type": "BlockStatement", - "start": 149305, - "end": 149461, + "start": 149819, + "end": 149975, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 78 }, "end": { - "line": 3689, + "line": 3697, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 149319, - "end": 149367, + "start": 149833, + "end": 149881, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 12 }, "end": { - "line": 3687, + "line": 3695, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 149325, - "end": 149366, + "start": 149839, + "end": 149880, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 18 }, "end": { - "line": 3687, + "line": 3695, "column": 59 } }, "id": { "type": "Identifier", - "start": 149325, - "end": 149335, + "start": 149839, + "end": 149849, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 18 }, "end": { - "line": 3687, + "line": 3695, "column": 28 }, "identifierName": "layerIndex" @@ -162909,43 +163970,43 @@ }, "init": { "type": "MemberExpression", - "start": 149338, - "end": 149366, + "start": 149852, + "end": 149880, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 31 }, "end": { - "line": 3687, + "line": 3695, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 149338, - "end": 149363, + "start": 149852, + "end": 149877, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 31 }, "end": { - "line": 3687, + "line": 3695, "column": 56 } }, "object": { "type": "Identifier", - "start": 149338, - "end": 149349, + "start": 149852, + "end": 149863, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 31 }, "end": { - "line": 3687, + "line": 3695, "column": 42 }, "identifierName": "renderFlags" @@ -162954,15 +164015,15 @@ }, "property": { "type": "Identifier", - "start": 149350, - "end": 149363, + "start": 149864, + "end": 149877, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 43 }, "end": { - "line": 3687, + "line": 3695, "column": 56 }, "identifierName": "visibleLayers" @@ -162973,15 +164034,15 @@ }, "property": { "type": "Identifier", - "start": 149364, - "end": 149365, + "start": 149878, + "end": 149879, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 57 }, "end": { - "line": 3687, + "line": 3695, "column": 58 }, "identifierName": "i" @@ -162996,100 +164057,100 @@ }, { "type": "ExpressionStatement", - "start": 149380, - "end": 149451, + "start": 149894, + "end": 149965, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 12 }, "end": { - "line": 3688, + "line": 3696, "column": 83 } }, "expression": { "type": "CallExpression", - "start": 149380, - "end": 149450, + "start": 149894, + "end": 149964, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 12 }, "end": { - "line": 3688, + "line": 3696, "column": 82 } }, "callee": { "type": "MemberExpression", - "start": 149380, - "end": 149427, + "start": 149894, + "end": 149941, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 12 }, "end": { - "line": 3688, + "line": 3696, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 149380, - "end": 149406, + "start": 149894, + "end": 149920, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 12 }, "end": { - "line": 3688, + "line": 3696, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 149380, - "end": 149394, + "start": 149894, + "end": 149908, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 12 }, "end": { - "line": 3688, + "line": 3696, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 149380, - "end": 149384, + "start": 149894, + "end": 149898, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 12 }, "end": { - "line": 3688, + "line": 3696, "column": 16 } } }, "property": { "type": "Identifier", - "start": 149385, - "end": 149394, + "start": 149899, + "end": 149908, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 17 }, "end": { - "line": 3688, + "line": 3696, "column": 26 }, "identifierName": "layerList" @@ -163100,15 +164161,15 @@ }, "property": { "type": "Identifier", - "start": 149395, - "end": 149405, + "start": 149909, + "end": 149919, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 27 }, "end": { - "line": 3688, + "line": 3696, "column": 37 }, "identifierName": "layerIndex" @@ -163119,15 +164180,15 @@ }, "property": { "type": "Identifier", - "start": 149407, - "end": 149427, + "start": 149921, + "end": 149941, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 39 }, "end": { - "line": 3688, + "line": 3696, "column": 59 }, "identifierName": "drawColorTransparent" @@ -163139,15 +164200,15 @@ "arguments": [ { "type": "Identifier", - "start": 149428, - "end": 149439, + "start": 149942, + "end": 149953, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 60 }, "end": { - "line": 3688, + "line": 3696, "column": 71 }, "identifierName": "renderFlags" @@ -163156,15 +164217,15 @@ }, { "type": "Identifier", - "start": 149441, - "end": 149449, + "start": 149955, + "end": 149963, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 73 }, "end": { - "line": 3688, + "line": 3696, "column": 81 }, "identifierName": "frameCtx" @@ -163186,15 +164247,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149128, - "end": 149143, + "start": 149642, + "end": 149657, "loc": { "start": { - "line": 3683, + "line": 3691, "column": 4 }, "end": { - "line": 3683, + "line": 3691, "column": 19 } } @@ -163204,15 +164265,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149473, - "end": 149488, + "start": 149987, + "end": 150002, "loc": { "start": { - "line": 3692, + "line": 3700, "column": 4 }, "end": { - "line": 3692, + "line": 3700, "column": 19 } } @@ -163221,15 +164282,15 @@ }, { "type": "ClassMethod", - "start": 149493, - "end": 149847, + "start": 150007, + "end": 150361, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 4 }, "end": { - "line": 3699, + "line": 3707, "column": 5 } }, @@ -163237,15 +164298,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 149493, - "end": 149502, + "start": 150007, + "end": 150016, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 4 }, "end": { - "line": 3693, + "line": 3701, "column": 13 }, "identifierName": "drawDepth" @@ -163261,15 +164322,15 @@ "params": [ { "type": "Identifier", - "start": 149503, - "end": 149511, + "start": 150017, + "end": 150025, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 14 }, "end": { - "line": 3693, + "line": 3701, "column": 22 }, "identifierName": "frameCtx" @@ -163279,59 +164340,59 @@ ], "body": { "type": "BlockStatement", - "start": 149513, - "end": 149847, + "start": 150027, + "end": 150361, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 24 }, "end": { - "line": 3699, + "line": 3707, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 149580, - "end": 149617, + "start": 150094, + "end": 150131, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 8 }, "end": { - "line": 3694, + "line": 3702, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 149586, - "end": 149616, + "start": 150100, + "end": 150130, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 14 }, "end": { - "line": 3694, + "line": 3702, "column": 44 } }, "id": { "type": "Identifier", - "start": 149586, - "end": 149597, + "start": 150100, + "end": 150111, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 14 }, "end": { - "line": 3694, + "line": 3702, "column": 25 }, "identifierName": "renderFlags" @@ -163341,44 +164402,44 @@ }, "init": { "type": "MemberExpression", - "start": 149600, - "end": 149616, + "start": 150114, + "end": 150130, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 28 }, "end": { - "line": 3694, + "line": 3702, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 149600, - "end": 149604, + "start": 150114, + "end": 150118, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 28 }, "end": { - "line": 3694, + "line": 3702, "column": 32 } } }, "property": { "type": "Identifier", - "start": 149605, - "end": 149616, + "start": 150119, + "end": 150130, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 33 }, "end": { - "line": 3694, + "line": 3702, "column": 44 }, "identifierName": "renderFlags" @@ -163395,15 +164456,15 @@ { "type": "CommentLine", "value": " Dedicated to SAO because it skips transparent objects", - "start": 149515, - "end": 149571, + "start": 150029, + "end": 150085, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 26 }, "end": { - "line": 3693, + "line": 3701, "column": 82 } } @@ -163412,58 +164473,58 @@ }, { "type": "ForStatement", - "start": 149626, - "end": 149841, + "start": 150140, + "end": 150355, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 8 }, "end": { - "line": 3698, + "line": 3706, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 149631, - "end": 149680, + "start": 150145, + "end": 150194, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 13 }, "end": { - "line": 3695, + "line": 3703, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 149635, - "end": 149640, + "start": 150149, + "end": 150154, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 17 }, "end": { - "line": 3695, + "line": 3703, "column": 22 } }, "id": { "type": "Identifier", - "start": 149635, - "end": 149636, + "start": 150149, + "end": 150150, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 17 }, "end": { - "line": 3695, + "line": 3703, "column": 18 }, "identifierName": "i" @@ -163472,15 +164533,15 @@ }, "init": { "type": "NumericLiteral", - "start": 149639, - "end": 149640, + "start": 150153, + "end": 150154, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 21 }, "end": { - "line": 3695, + "line": 3703, "column": 22 } }, @@ -163493,29 +164554,29 @@ }, { "type": "VariableDeclarator", - "start": 149642, - "end": 149680, + "start": 150156, + "end": 150194, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 24 }, "end": { - "line": 3695, + "line": 3703, "column": 62 } }, "id": { "type": "Identifier", - "start": 149642, - "end": 149645, + "start": 150156, + "end": 150159, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 24 }, "end": { - "line": 3695, + "line": 3703, "column": 27 }, "identifierName": "len" @@ -163524,43 +164585,43 @@ }, "init": { "type": "MemberExpression", - "start": 149648, - "end": 149680, + "start": 150162, + "end": 150194, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 30 }, "end": { - "line": 3695, + "line": 3703, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 149648, - "end": 149673, + "start": 150162, + "end": 150187, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 30 }, "end": { - "line": 3695, + "line": 3703, "column": 55 } }, "object": { "type": "Identifier", - "start": 149648, - "end": 149659, + "start": 150162, + "end": 150173, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 30 }, "end": { - "line": 3695, + "line": 3703, "column": 41 }, "identifierName": "renderFlags" @@ -163569,15 +164630,15 @@ }, "property": { "type": "Identifier", - "start": 149660, - "end": 149673, + "start": 150174, + "end": 150187, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 42 }, "end": { - "line": 3695, + "line": 3703, "column": 55 }, "identifierName": "visibleLayers" @@ -163588,15 +164649,15 @@ }, "property": { "type": "Identifier", - "start": 149674, - "end": 149680, + "start": 150188, + "end": 150194, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 56 }, "end": { - "line": 3695, + "line": 3703, "column": 62 }, "identifierName": "length" @@ -163611,29 +164672,29 @@ }, "test": { "type": "BinaryExpression", - "start": 149682, - "end": 149689, + "start": 150196, + "end": 150203, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 64 }, "end": { - "line": 3695, + "line": 3703, "column": 71 } }, "left": { "type": "Identifier", - "start": 149682, - "end": 149683, + "start": 150196, + "end": 150197, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 64 }, "end": { - "line": 3695, + "line": 3703, "column": 65 }, "identifierName": "i" @@ -163643,15 +164704,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 149686, - "end": 149689, + "start": 150200, + "end": 150203, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 68 }, "end": { - "line": 3695, + "line": 3703, "column": 71 }, "identifierName": "len" @@ -163661,15 +164722,15 @@ }, "update": { "type": "UpdateExpression", - "start": 149691, - "end": 149694, + "start": 150205, + "end": 150208, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 73 }, "end": { - "line": 3695, + "line": 3703, "column": 76 } }, @@ -163677,15 +164738,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 149691, - "end": 149692, + "start": 150205, + "end": 150206, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 73 }, "end": { - "line": 3695, + "line": 3703, "column": 74 }, "identifierName": "i" @@ -163695,59 +164756,59 @@ }, "body": { "type": "BlockStatement", - "start": 149696, - "end": 149841, + "start": 150210, + "end": 150355, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 78 }, "end": { - "line": 3698, + "line": 3706, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 149710, - "end": 149758, + "start": 150224, + "end": 150272, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 12 }, "end": { - "line": 3696, + "line": 3704, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 149716, - "end": 149757, + "start": 150230, + "end": 150271, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 18 }, "end": { - "line": 3696, + "line": 3704, "column": 59 } }, "id": { "type": "Identifier", - "start": 149716, - "end": 149726, + "start": 150230, + "end": 150240, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 18 }, "end": { - "line": 3696, + "line": 3704, "column": 28 }, "identifierName": "layerIndex" @@ -163756,43 +164817,43 @@ }, "init": { "type": "MemberExpression", - "start": 149729, - "end": 149757, + "start": 150243, + "end": 150271, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 31 }, "end": { - "line": 3696, + "line": 3704, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 149729, - "end": 149754, + "start": 150243, + "end": 150268, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 31 }, "end": { - "line": 3696, + "line": 3704, "column": 56 } }, "object": { "type": "Identifier", - "start": 149729, - "end": 149740, + "start": 150243, + "end": 150254, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 31 }, "end": { - "line": 3696, + "line": 3704, "column": 42 }, "identifierName": "renderFlags" @@ -163801,15 +164862,15 @@ }, "property": { "type": "Identifier", - "start": 149741, - "end": 149754, + "start": 150255, + "end": 150268, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 43 }, "end": { - "line": 3696, + "line": 3704, "column": 56 }, "identifierName": "visibleLayers" @@ -163820,15 +164881,15 @@ }, "property": { "type": "Identifier", - "start": 149755, - "end": 149756, + "start": 150269, + "end": 150270, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 57 }, "end": { - "line": 3696, + "line": 3704, "column": 58 }, "identifierName": "i" @@ -163843,100 +164904,100 @@ }, { "type": "ExpressionStatement", - "start": 149771, - "end": 149831, + "start": 150285, + "end": 150345, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 12 }, "end": { - "line": 3697, + "line": 3705, "column": 72 } }, "expression": { "type": "CallExpression", - "start": 149771, - "end": 149830, + "start": 150285, + "end": 150344, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 12 }, "end": { - "line": 3697, + "line": 3705, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 149771, - "end": 149807, + "start": 150285, + "end": 150321, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 12 }, "end": { - "line": 3697, + "line": 3705, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 149771, - "end": 149797, + "start": 150285, + "end": 150311, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 12 }, "end": { - "line": 3697, + "line": 3705, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 149771, - "end": 149785, + "start": 150285, + "end": 150299, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 12 }, "end": { - "line": 3697, + "line": 3705, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 149771, - "end": 149775, + "start": 150285, + "end": 150289, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 12 }, "end": { - "line": 3697, + "line": 3705, "column": 16 } } }, "property": { "type": "Identifier", - "start": 149776, - "end": 149785, + "start": 150290, + "end": 150299, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 17 }, "end": { - "line": 3697, + "line": 3705, "column": 26 }, "identifierName": "layerList" @@ -163947,15 +165008,15 @@ }, "property": { "type": "Identifier", - "start": 149786, - "end": 149796, + "start": 150300, + "end": 150310, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 27 }, "end": { - "line": 3697, + "line": 3705, "column": 37 }, "identifierName": "layerIndex" @@ -163966,15 +165027,15 @@ }, "property": { "type": "Identifier", - "start": 149798, - "end": 149807, + "start": 150312, + "end": 150321, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 39 }, "end": { - "line": 3697, + "line": 3705, "column": 48 }, "identifierName": "drawDepth" @@ -163986,15 +165047,15 @@ "arguments": [ { "type": "Identifier", - "start": 149808, - "end": 149819, + "start": 150322, + "end": 150333, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 49 }, "end": { - "line": 3697, + "line": 3705, "column": 60 }, "identifierName": "renderFlags" @@ -164003,15 +165064,15 @@ }, { "type": "Identifier", - "start": 149821, - "end": 149829, + "start": 150335, + "end": 150343, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 62 }, "end": { - "line": 3697, + "line": 3705, "column": 70 }, "identifierName": "frameCtx" @@ -164033,15 +165094,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149473, - "end": 149488, + "start": 149987, + "end": 150002, "loc": { "start": { - "line": 3692, + "line": 3700, "column": 4 }, "end": { - "line": 3692, + "line": 3700, "column": 19 } } @@ -164051,15 +165112,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149853, - "end": 149868, + "start": 150367, + "end": 150382, "loc": { "start": { - "line": 3701, + "line": 3709, "column": 4 }, "end": { - "line": 3701, + "line": 3709, "column": 19 } } @@ -164068,15 +165129,15 @@ }, { "type": "ClassMethod", - "start": 149873, - "end": 150231, + "start": 150387, + "end": 150745, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 4 }, "end": { - "line": 3708, + "line": 3716, "column": 5 } }, @@ -164084,15 +165145,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 149873, - "end": 149884, + "start": 150387, + "end": 150398, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 4 }, "end": { - "line": 3702, + "line": 3710, "column": 15 }, "identifierName": "drawNormals" @@ -164108,15 +165169,15 @@ "params": [ { "type": "Identifier", - "start": 149885, - "end": 149893, + "start": 150399, + "end": 150407, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 16 }, "end": { - "line": 3702, + "line": 3710, "column": 24 }, "identifierName": "frameCtx" @@ -164126,59 +165187,59 @@ ], "body": { "type": "BlockStatement", - "start": 149895, - "end": 150231, + "start": 150409, + "end": 150745, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 26 }, "end": { - "line": 3708, + "line": 3716, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 149962, - "end": 149999, + "start": 150476, + "end": 150513, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 8 }, "end": { - "line": 3703, + "line": 3711, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 149968, - "end": 149998, + "start": 150482, + "end": 150512, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 14 }, "end": { - "line": 3703, + "line": 3711, "column": 44 } }, "id": { "type": "Identifier", - "start": 149968, - "end": 149979, + "start": 150482, + "end": 150493, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 14 }, "end": { - "line": 3703, + "line": 3711, "column": 25 }, "identifierName": "renderFlags" @@ -164188,44 +165249,44 @@ }, "init": { "type": "MemberExpression", - "start": 149982, - "end": 149998, + "start": 150496, + "end": 150512, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 28 }, "end": { - "line": 3703, + "line": 3711, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 149982, - "end": 149986, + "start": 150496, + "end": 150500, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 28 }, "end": { - "line": 3703, + "line": 3711, "column": 32 } } }, "property": { "type": "Identifier", - "start": 149987, - "end": 149998, + "start": 150501, + "end": 150512, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 33 }, "end": { - "line": 3703, + "line": 3711, "column": 44 }, "identifierName": "renderFlags" @@ -164242,15 +165303,15 @@ { "type": "CommentLine", "value": " Dedicated to SAO because it skips transparent objects", - "start": 149897, - "end": 149953, + "start": 150411, + "end": 150467, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 28 }, "end": { - "line": 3702, + "line": 3710, "column": 84 } } @@ -164259,58 +165320,58 @@ }, { "type": "ForStatement", - "start": 150008, - "end": 150225, + "start": 150522, + "end": 150739, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 8 }, "end": { - "line": 3707, + "line": 3715, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 150013, - "end": 150062, + "start": 150527, + "end": 150576, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 13 }, "end": { - "line": 3704, + "line": 3712, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 150017, - "end": 150022, + "start": 150531, + "end": 150536, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 17 }, "end": { - "line": 3704, + "line": 3712, "column": 22 } }, "id": { "type": "Identifier", - "start": 150017, - "end": 150018, + "start": 150531, + "end": 150532, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 17 }, "end": { - "line": 3704, + "line": 3712, "column": 18 }, "identifierName": "i" @@ -164319,15 +165380,15 @@ }, "init": { "type": "NumericLiteral", - "start": 150021, - "end": 150022, + "start": 150535, + "end": 150536, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 21 }, "end": { - "line": 3704, + "line": 3712, "column": 22 } }, @@ -164340,29 +165401,29 @@ }, { "type": "VariableDeclarator", - "start": 150024, - "end": 150062, + "start": 150538, + "end": 150576, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 24 }, "end": { - "line": 3704, + "line": 3712, "column": 62 } }, "id": { "type": "Identifier", - "start": 150024, - "end": 150027, + "start": 150538, + "end": 150541, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 24 }, "end": { - "line": 3704, + "line": 3712, "column": 27 }, "identifierName": "len" @@ -164371,43 +165432,43 @@ }, "init": { "type": "MemberExpression", - "start": 150030, - "end": 150062, + "start": 150544, + "end": 150576, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 30 }, "end": { - "line": 3704, + "line": 3712, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 150030, - "end": 150055, + "start": 150544, + "end": 150569, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 30 }, "end": { - "line": 3704, + "line": 3712, "column": 55 } }, "object": { "type": "Identifier", - "start": 150030, - "end": 150041, + "start": 150544, + "end": 150555, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 30 }, "end": { - "line": 3704, + "line": 3712, "column": 41 }, "identifierName": "renderFlags" @@ -164416,15 +165477,15 @@ }, "property": { "type": "Identifier", - "start": 150042, - "end": 150055, + "start": 150556, + "end": 150569, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 42 }, "end": { - "line": 3704, + "line": 3712, "column": 55 }, "identifierName": "visibleLayers" @@ -164435,15 +165496,15 @@ }, "property": { "type": "Identifier", - "start": 150056, - "end": 150062, + "start": 150570, + "end": 150576, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 56 }, "end": { - "line": 3704, + "line": 3712, "column": 62 }, "identifierName": "length" @@ -164458,29 +165519,29 @@ }, "test": { "type": "BinaryExpression", - "start": 150064, - "end": 150071, + "start": 150578, + "end": 150585, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 64 }, "end": { - "line": 3704, + "line": 3712, "column": 71 } }, "left": { "type": "Identifier", - "start": 150064, - "end": 150065, + "start": 150578, + "end": 150579, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 64 }, "end": { - "line": 3704, + "line": 3712, "column": 65 }, "identifierName": "i" @@ -164490,15 +165551,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 150068, - "end": 150071, + "start": 150582, + "end": 150585, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 68 }, "end": { - "line": 3704, + "line": 3712, "column": 71 }, "identifierName": "len" @@ -164508,15 +165569,15 @@ }, "update": { "type": "UpdateExpression", - "start": 150073, - "end": 150076, + "start": 150587, + "end": 150590, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 73 }, "end": { - "line": 3704, + "line": 3712, "column": 76 } }, @@ -164524,15 +165585,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 150073, - "end": 150074, + "start": 150587, + "end": 150588, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 73 }, "end": { - "line": 3704, + "line": 3712, "column": 74 }, "identifierName": "i" @@ -164542,59 +165603,59 @@ }, "body": { "type": "BlockStatement", - "start": 150078, - "end": 150225, + "start": 150592, + "end": 150739, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 78 }, "end": { - "line": 3707, + "line": 3715, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 150092, - "end": 150140, + "start": 150606, + "end": 150654, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 12 }, "end": { - "line": 3705, + "line": 3713, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 150098, - "end": 150139, + "start": 150612, + "end": 150653, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 18 }, "end": { - "line": 3705, + "line": 3713, "column": 59 } }, "id": { "type": "Identifier", - "start": 150098, - "end": 150108, + "start": 150612, + "end": 150622, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 18 }, "end": { - "line": 3705, + "line": 3713, "column": 28 }, "identifierName": "layerIndex" @@ -164603,43 +165664,43 @@ }, "init": { "type": "MemberExpression", - "start": 150111, - "end": 150139, + "start": 150625, + "end": 150653, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 31 }, "end": { - "line": 3705, + "line": 3713, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 150111, - "end": 150136, + "start": 150625, + "end": 150650, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 31 }, "end": { - "line": 3705, + "line": 3713, "column": 56 } }, "object": { "type": "Identifier", - "start": 150111, - "end": 150122, + "start": 150625, + "end": 150636, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 31 }, "end": { - "line": 3705, + "line": 3713, "column": 42 }, "identifierName": "renderFlags" @@ -164648,15 +165709,15 @@ }, "property": { "type": "Identifier", - "start": 150123, - "end": 150136, + "start": 150637, + "end": 150650, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 43 }, "end": { - "line": 3705, + "line": 3713, "column": 56 }, "identifierName": "visibleLayers" @@ -164667,15 +165728,15 @@ }, "property": { "type": "Identifier", - "start": 150137, - "end": 150138, + "start": 150651, + "end": 150652, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 57 }, "end": { - "line": 3705, + "line": 3713, "column": 58 }, "identifierName": "i" @@ -164690,100 +165751,100 @@ }, { "type": "ExpressionStatement", - "start": 150153, - "end": 150215, + "start": 150667, + "end": 150729, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 12 }, "end": { - "line": 3706, + "line": 3714, "column": 74 } }, "expression": { "type": "CallExpression", - "start": 150153, - "end": 150214, + "start": 150667, + "end": 150728, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 12 }, "end": { - "line": 3706, + "line": 3714, "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 150153, - "end": 150191, + "start": 150667, + "end": 150705, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 12 }, "end": { - "line": 3706, + "line": 3714, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 150153, - "end": 150179, + "start": 150667, + "end": 150693, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 12 }, "end": { - "line": 3706, + "line": 3714, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 150153, - "end": 150167, + "start": 150667, + "end": 150681, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 12 }, "end": { - "line": 3706, + "line": 3714, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 150153, - "end": 150157, + "start": 150667, + "end": 150671, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 12 }, "end": { - "line": 3706, + "line": 3714, "column": 16 } } }, "property": { "type": "Identifier", - "start": 150158, - "end": 150167, + "start": 150672, + "end": 150681, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 17 }, "end": { - "line": 3706, + "line": 3714, "column": 26 }, "identifierName": "layerList" @@ -164794,15 +165855,15 @@ }, "property": { "type": "Identifier", - "start": 150168, - "end": 150178, + "start": 150682, + "end": 150692, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 27 }, "end": { - "line": 3706, + "line": 3714, "column": 37 }, "identifierName": "layerIndex" @@ -164813,15 +165874,15 @@ }, "property": { "type": "Identifier", - "start": 150180, - "end": 150191, + "start": 150694, + "end": 150705, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 39 }, "end": { - "line": 3706, + "line": 3714, "column": 50 }, "identifierName": "drawNormals" @@ -164833,15 +165894,15 @@ "arguments": [ { "type": "Identifier", - "start": 150192, - "end": 150203, + "start": 150706, + "end": 150717, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 51 }, "end": { - "line": 3706, + "line": 3714, "column": 62 }, "identifierName": "renderFlags" @@ -164850,15 +165911,15 @@ }, { "type": "Identifier", - "start": 150205, - "end": 150213, + "start": 150719, + "end": 150727, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 64 }, "end": { - "line": 3706, + "line": 3714, "column": 72 }, "identifierName": "frameCtx" @@ -164880,15 +165941,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149853, - "end": 149868, + "start": 150367, + "end": 150382, "loc": { "start": { - "line": 3701, + "line": 3709, "column": 4 }, "end": { - "line": 3701, + "line": 3709, "column": 19 } } @@ -164898,15 +165959,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150237, - "end": 150252, + "start": 150751, + "end": 150766, "loc": { "start": { - "line": 3710, + "line": 3718, "column": 4 }, "end": { - "line": 3710, + "line": 3718, "column": 19 } } @@ -164915,15 +165976,15 @@ }, { "type": "ClassMethod", - "start": 150257, - "end": 150576, + "start": 150771, + "end": 151090, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 4 }, "end": { - "line": 3717, + "line": 3725, "column": 5 } }, @@ -164931,15 +165992,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 150257, - "end": 150277, + "start": 150771, + "end": 150791, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 4 }, "end": { - "line": 3711, + "line": 3719, "column": 24 }, "identifierName": "drawSilhouetteXRayed" @@ -164955,15 +166016,15 @@ "params": [ { "type": "Identifier", - "start": 150278, - "end": 150286, + "start": 150792, + "end": 150800, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 25 }, "end": { - "line": 3711, + "line": 3719, "column": 33 }, "identifierName": "frameCtx" @@ -164973,59 +166034,59 @@ ], "body": { "type": "BlockStatement", - "start": 150288, - "end": 150576, + "start": 150802, + "end": 151090, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 35 }, "end": { - "line": 3717, + "line": 3725, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 150298, - "end": 150335, + "start": 150812, + "end": 150849, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 8 }, "end": { - "line": 3712, + "line": 3720, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 150304, - "end": 150334, + "start": 150818, + "end": 150848, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 14 }, "end": { - "line": 3712, + "line": 3720, "column": 44 } }, "id": { "type": "Identifier", - "start": 150304, - "end": 150315, + "start": 150818, + "end": 150829, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 14 }, "end": { - "line": 3712, + "line": 3720, "column": 25 }, "identifierName": "renderFlags" @@ -165034,44 +166095,44 @@ }, "init": { "type": "MemberExpression", - "start": 150318, - "end": 150334, + "start": 150832, + "end": 150848, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 28 }, "end": { - "line": 3712, + "line": 3720, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 150318, - "end": 150322, + "start": 150832, + "end": 150836, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 28 }, "end": { - "line": 3712, + "line": 3720, "column": 32 } } }, "property": { "type": "Identifier", - "start": 150323, - "end": 150334, + "start": 150837, + "end": 150848, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 33 }, "end": { - "line": 3712, + "line": 3720, "column": 44 }, "identifierName": "renderFlags" @@ -165086,58 +166147,58 @@ }, { "type": "ForStatement", - "start": 150344, - "end": 150570, + "start": 150858, + "end": 151084, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 8 }, "end": { - "line": 3716, + "line": 3724, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 150349, - "end": 150398, + "start": 150863, + "end": 150912, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 13 }, "end": { - "line": 3713, + "line": 3721, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 150353, - "end": 150358, + "start": 150867, + "end": 150872, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 17 }, "end": { - "line": 3713, + "line": 3721, "column": 22 } }, "id": { "type": "Identifier", - "start": 150353, - "end": 150354, + "start": 150867, + "end": 150868, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 17 }, "end": { - "line": 3713, + "line": 3721, "column": 18 }, "identifierName": "i" @@ -165146,15 +166207,15 @@ }, "init": { "type": "NumericLiteral", - "start": 150357, - "end": 150358, + "start": 150871, + "end": 150872, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 21 }, "end": { - "line": 3713, + "line": 3721, "column": 22 } }, @@ -165167,29 +166228,29 @@ }, { "type": "VariableDeclarator", - "start": 150360, - "end": 150398, + "start": 150874, + "end": 150912, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 24 }, "end": { - "line": 3713, + "line": 3721, "column": 62 } }, "id": { "type": "Identifier", - "start": 150360, - "end": 150363, + "start": 150874, + "end": 150877, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 24 }, "end": { - "line": 3713, + "line": 3721, "column": 27 }, "identifierName": "len" @@ -165198,43 +166259,43 @@ }, "init": { "type": "MemberExpression", - "start": 150366, - "end": 150398, + "start": 150880, + "end": 150912, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 30 }, "end": { - "line": 3713, + "line": 3721, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 150366, - "end": 150391, + "start": 150880, + "end": 150905, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 30 }, "end": { - "line": 3713, + "line": 3721, "column": 55 } }, "object": { "type": "Identifier", - "start": 150366, - "end": 150377, + "start": 150880, + "end": 150891, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 30 }, "end": { - "line": 3713, + "line": 3721, "column": 41 }, "identifierName": "renderFlags" @@ -165243,15 +166304,15 @@ }, "property": { "type": "Identifier", - "start": 150378, - "end": 150391, + "start": 150892, + "end": 150905, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 42 }, "end": { - "line": 3713, + "line": 3721, "column": 55 }, "identifierName": "visibleLayers" @@ -165262,15 +166323,15 @@ }, "property": { "type": "Identifier", - "start": 150392, - "end": 150398, + "start": 150906, + "end": 150912, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 56 }, "end": { - "line": 3713, + "line": 3721, "column": 62 }, "identifierName": "length" @@ -165285,29 +166346,29 @@ }, "test": { "type": "BinaryExpression", - "start": 150400, - "end": 150407, + "start": 150914, + "end": 150921, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 64 }, "end": { - "line": 3713, + "line": 3721, "column": 71 } }, "left": { "type": "Identifier", - "start": 150400, - "end": 150401, + "start": 150914, + "end": 150915, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 64 }, "end": { - "line": 3713, + "line": 3721, "column": 65 }, "identifierName": "i" @@ -165317,15 +166378,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 150404, - "end": 150407, + "start": 150918, + "end": 150921, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 68 }, "end": { - "line": 3713, + "line": 3721, "column": 71 }, "identifierName": "len" @@ -165335,15 +166396,15 @@ }, "update": { "type": "UpdateExpression", - "start": 150409, - "end": 150412, + "start": 150923, + "end": 150926, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 73 }, "end": { - "line": 3713, + "line": 3721, "column": 76 } }, @@ -165351,15 +166412,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 150409, - "end": 150410, + "start": 150923, + "end": 150924, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 73 }, "end": { - "line": 3713, + "line": 3721, "column": 74 }, "identifierName": "i" @@ -165369,59 +166430,59 @@ }, "body": { "type": "BlockStatement", - "start": 150414, - "end": 150570, + "start": 150928, + "end": 151084, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 78 }, "end": { - "line": 3716, + "line": 3724, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 150428, - "end": 150476, + "start": 150942, + "end": 150990, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 12 }, "end": { - "line": 3714, + "line": 3722, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 150434, - "end": 150475, + "start": 150948, + "end": 150989, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 18 }, "end": { - "line": 3714, + "line": 3722, "column": 59 } }, "id": { "type": "Identifier", - "start": 150434, - "end": 150444, + "start": 150948, + "end": 150958, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 18 }, "end": { - "line": 3714, + "line": 3722, "column": 28 }, "identifierName": "layerIndex" @@ -165430,43 +166491,43 @@ }, "init": { "type": "MemberExpression", - "start": 150447, - "end": 150475, + "start": 150961, + "end": 150989, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 31 }, "end": { - "line": 3714, + "line": 3722, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 150447, - "end": 150472, + "start": 150961, + "end": 150986, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 31 }, "end": { - "line": 3714, + "line": 3722, "column": 56 } }, "object": { "type": "Identifier", - "start": 150447, - "end": 150458, + "start": 150961, + "end": 150972, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 31 }, "end": { - "line": 3714, + "line": 3722, "column": 42 }, "identifierName": "renderFlags" @@ -165475,15 +166536,15 @@ }, "property": { "type": "Identifier", - "start": 150459, - "end": 150472, + "start": 150973, + "end": 150986, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 43 }, "end": { - "line": 3714, + "line": 3722, "column": 56 }, "identifierName": "visibleLayers" @@ -165494,15 +166555,15 @@ }, "property": { "type": "Identifier", - "start": 150473, - "end": 150474, + "start": 150987, + "end": 150988, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 57 }, "end": { - "line": 3714, + "line": 3722, "column": 58 }, "identifierName": "i" @@ -165517,100 +166578,100 @@ }, { "type": "ExpressionStatement", - "start": 150489, - "end": 150560, + "start": 151003, + "end": 151074, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 12 }, "end": { - "line": 3715, + "line": 3723, "column": 83 } }, "expression": { "type": "CallExpression", - "start": 150489, - "end": 150559, + "start": 151003, + "end": 151073, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 12 }, "end": { - "line": 3715, + "line": 3723, "column": 82 } }, "callee": { "type": "MemberExpression", - "start": 150489, - "end": 150536, + "start": 151003, + "end": 151050, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 12 }, "end": { - "line": 3715, + "line": 3723, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 150489, - "end": 150515, + "start": 151003, + "end": 151029, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 12 }, "end": { - "line": 3715, + "line": 3723, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 150489, - "end": 150503, + "start": 151003, + "end": 151017, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 12 }, "end": { - "line": 3715, + "line": 3723, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 150489, - "end": 150493, + "start": 151003, + "end": 151007, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 12 }, "end": { - "line": 3715, + "line": 3723, "column": 16 } } }, "property": { "type": "Identifier", - "start": 150494, - "end": 150503, + "start": 151008, + "end": 151017, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 17 }, "end": { - "line": 3715, + "line": 3723, "column": 26 }, "identifierName": "layerList" @@ -165621,15 +166682,15 @@ }, "property": { "type": "Identifier", - "start": 150504, - "end": 150514, + "start": 151018, + "end": 151028, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 27 }, "end": { - "line": 3715, + "line": 3723, "column": 37 }, "identifierName": "layerIndex" @@ -165640,15 +166701,15 @@ }, "property": { "type": "Identifier", - "start": 150516, - "end": 150536, + "start": 151030, + "end": 151050, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 39 }, "end": { - "line": 3715, + "line": 3723, "column": 59 }, "identifierName": "drawSilhouetteXRayed" @@ -165660,15 +166721,15 @@ "arguments": [ { "type": "Identifier", - "start": 150537, - "end": 150548, + "start": 151051, + "end": 151062, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 60 }, "end": { - "line": 3715, + "line": 3723, "column": 71 }, "identifierName": "renderFlags" @@ -165677,15 +166738,15 @@ }, { "type": "Identifier", - "start": 150550, - "end": 150558, + "start": 151064, + "end": 151072, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 73 }, "end": { - "line": 3715, + "line": 3723, "column": 81 }, "identifierName": "frameCtx" @@ -165707,15 +166768,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150237, - "end": 150252, + "start": 150751, + "end": 150766, "loc": { "start": { - "line": 3710, + "line": 3718, "column": 4 }, "end": { - "line": 3710, + "line": 3718, "column": 19 } } @@ -165725,15 +166786,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150582, - "end": 150597, + "start": 151096, + "end": 151111, "loc": { "start": { - "line": 3719, + "line": 3727, "column": 4 }, "end": { - "line": 3719, + "line": 3727, "column": 19 } } @@ -165742,15 +166803,15 @@ }, { "type": "ClassMethod", - "start": 150602, - "end": 150931, + "start": 151116, + "end": 151445, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 4 }, "end": { - "line": 3726, + "line": 3734, "column": 5 } }, @@ -165758,15 +166819,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 150602, - "end": 150627, + "start": 151116, + "end": 151141, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 4 }, "end": { - "line": 3720, + "line": 3728, "column": 29 }, "identifierName": "drawSilhouetteHighlighted" @@ -165782,15 +166843,15 @@ "params": [ { "type": "Identifier", - "start": 150628, - "end": 150636, + "start": 151142, + "end": 151150, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 30 }, "end": { - "line": 3720, + "line": 3728, "column": 38 }, "identifierName": "frameCtx" @@ -165800,59 +166861,59 @@ ], "body": { "type": "BlockStatement", - "start": 150638, - "end": 150931, + "start": 151152, + "end": 151445, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 40 }, "end": { - "line": 3726, + "line": 3734, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 150648, - "end": 150685, + "start": 151162, + "end": 151199, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 8 }, "end": { - "line": 3721, + "line": 3729, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 150654, - "end": 150684, + "start": 151168, + "end": 151198, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 14 }, "end": { - "line": 3721, + "line": 3729, "column": 44 } }, "id": { "type": "Identifier", - "start": 150654, - "end": 150665, + "start": 151168, + "end": 151179, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 14 }, "end": { - "line": 3721, + "line": 3729, "column": 25 }, "identifierName": "renderFlags" @@ -165861,44 +166922,44 @@ }, "init": { "type": "MemberExpression", - "start": 150668, - "end": 150684, + "start": 151182, + "end": 151198, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 28 }, "end": { - "line": 3721, + "line": 3729, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 150668, - "end": 150672, + "start": 151182, + "end": 151186, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 28 }, "end": { - "line": 3721, + "line": 3729, "column": 32 } } }, "property": { "type": "Identifier", - "start": 150673, - "end": 150684, + "start": 151187, + "end": 151198, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 33 }, "end": { - "line": 3721, + "line": 3729, "column": 44 }, "identifierName": "renderFlags" @@ -165913,58 +166974,58 @@ }, { "type": "ForStatement", - "start": 150694, - "end": 150925, + "start": 151208, + "end": 151439, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 8 }, "end": { - "line": 3725, + "line": 3733, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 150699, - "end": 150748, + "start": 151213, + "end": 151262, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 13 }, "end": { - "line": 3722, + "line": 3730, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 150703, - "end": 150708, + "start": 151217, + "end": 151222, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 17 }, "end": { - "line": 3722, + "line": 3730, "column": 22 } }, "id": { "type": "Identifier", - "start": 150703, - "end": 150704, + "start": 151217, + "end": 151218, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 17 }, "end": { - "line": 3722, + "line": 3730, "column": 18 }, "identifierName": "i" @@ -165973,15 +167034,15 @@ }, "init": { "type": "NumericLiteral", - "start": 150707, - "end": 150708, + "start": 151221, + "end": 151222, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 21 }, "end": { - "line": 3722, + "line": 3730, "column": 22 } }, @@ -165994,29 +167055,29 @@ }, { "type": "VariableDeclarator", - "start": 150710, - "end": 150748, + "start": 151224, + "end": 151262, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 24 }, "end": { - "line": 3722, + "line": 3730, "column": 62 } }, "id": { "type": "Identifier", - "start": 150710, - "end": 150713, + "start": 151224, + "end": 151227, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 24 }, "end": { - "line": 3722, + "line": 3730, "column": 27 }, "identifierName": "len" @@ -166025,43 +167086,43 @@ }, "init": { "type": "MemberExpression", - "start": 150716, - "end": 150748, + "start": 151230, + "end": 151262, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 30 }, "end": { - "line": 3722, + "line": 3730, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 150716, - "end": 150741, + "start": 151230, + "end": 151255, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 30 }, "end": { - "line": 3722, + "line": 3730, "column": 55 } }, "object": { "type": "Identifier", - "start": 150716, - "end": 150727, + "start": 151230, + "end": 151241, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 30 }, "end": { - "line": 3722, + "line": 3730, "column": 41 }, "identifierName": "renderFlags" @@ -166070,15 +167131,15 @@ }, "property": { "type": "Identifier", - "start": 150728, - "end": 150741, + "start": 151242, + "end": 151255, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 42 }, "end": { - "line": 3722, + "line": 3730, "column": 55 }, "identifierName": "visibleLayers" @@ -166089,15 +167150,15 @@ }, "property": { "type": "Identifier", - "start": 150742, - "end": 150748, + "start": 151256, + "end": 151262, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 56 }, "end": { - "line": 3722, + "line": 3730, "column": 62 }, "identifierName": "length" @@ -166112,29 +167173,29 @@ }, "test": { "type": "BinaryExpression", - "start": 150750, - "end": 150757, + "start": 151264, + "end": 151271, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 64 }, "end": { - "line": 3722, + "line": 3730, "column": 71 } }, "left": { "type": "Identifier", - "start": 150750, - "end": 150751, + "start": 151264, + "end": 151265, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 64 }, "end": { - "line": 3722, + "line": 3730, "column": 65 }, "identifierName": "i" @@ -166144,15 +167205,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 150754, - "end": 150757, + "start": 151268, + "end": 151271, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 68 }, "end": { - "line": 3722, + "line": 3730, "column": 71 }, "identifierName": "len" @@ -166162,15 +167223,15 @@ }, "update": { "type": "UpdateExpression", - "start": 150759, - "end": 150762, + "start": 151273, + "end": 151276, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 73 }, "end": { - "line": 3722, + "line": 3730, "column": 76 } }, @@ -166178,15 +167239,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 150759, - "end": 150760, + "start": 151273, + "end": 151274, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 73 }, "end": { - "line": 3722, + "line": 3730, "column": 74 }, "identifierName": "i" @@ -166196,59 +167257,59 @@ }, "body": { "type": "BlockStatement", - "start": 150764, - "end": 150925, + "start": 151278, + "end": 151439, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 78 }, "end": { - "line": 3725, + "line": 3733, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 150778, - "end": 150826, + "start": 151292, + "end": 151340, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 12 }, "end": { - "line": 3723, + "line": 3731, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 150784, - "end": 150825, + "start": 151298, + "end": 151339, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 18 }, "end": { - "line": 3723, + "line": 3731, "column": 59 } }, "id": { "type": "Identifier", - "start": 150784, - "end": 150794, + "start": 151298, + "end": 151308, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 18 }, "end": { - "line": 3723, + "line": 3731, "column": 28 }, "identifierName": "layerIndex" @@ -166257,43 +167318,43 @@ }, "init": { "type": "MemberExpression", - "start": 150797, - "end": 150825, + "start": 151311, + "end": 151339, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 31 }, "end": { - "line": 3723, + "line": 3731, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 150797, - "end": 150822, + "start": 151311, + "end": 151336, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 31 }, "end": { - "line": 3723, + "line": 3731, "column": 56 } }, "object": { "type": "Identifier", - "start": 150797, - "end": 150808, + "start": 151311, + "end": 151322, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 31 }, "end": { - "line": 3723, + "line": 3731, "column": 42 }, "identifierName": "renderFlags" @@ -166302,15 +167363,15 @@ }, "property": { "type": "Identifier", - "start": 150809, - "end": 150822, + "start": 151323, + "end": 151336, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 43 }, "end": { - "line": 3723, + "line": 3731, "column": 56 }, "identifierName": "visibleLayers" @@ -166321,15 +167382,15 @@ }, "property": { "type": "Identifier", - "start": 150823, - "end": 150824, + "start": 151337, + "end": 151338, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 57 }, "end": { - "line": 3723, + "line": 3731, "column": 58 }, "identifierName": "i" @@ -166344,100 +167405,100 @@ }, { "type": "ExpressionStatement", - "start": 150839, - "end": 150915, + "start": 151353, + "end": 151429, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 12 }, "end": { - "line": 3724, + "line": 3732, "column": 88 } }, "expression": { "type": "CallExpression", - "start": 150839, - "end": 150914, + "start": 151353, + "end": 151428, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 12 }, "end": { - "line": 3724, + "line": 3732, "column": 87 } }, "callee": { "type": "MemberExpression", - "start": 150839, - "end": 150891, + "start": 151353, + "end": 151405, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 12 }, "end": { - "line": 3724, + "line": 3732, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 150839, - "end": 150865, + "start": 151353, + "end": 151379, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 12 }, "end": { - "line": 3724, + "line": 3732, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 150839, - "end": 150853, + "start": 151353, + "end": 151367, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 12 }, "end": { - "line": 3724, + "line": 3732, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 150839, - "end": 150843, + "start": 151353, + "end": 151357, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 12 }, "end": { - "line": 3724, + "line": 3732, "column": 16 } } }, "property": { "type": "Identifier", - "start": 150844, - "end": 150853, + "start": 151358, + "end": 151367, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 17 }, "end": { - "line": 3724, + "line": 3732, "column": 26 }, "identifierName": "layerList" @@ -166448,15 +167509,15 @@ }, "property": { "type": "Identifier", - "start": 150854, - "end": 150864, + "start": 151368, + "end": 151378, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 27 }, "end": { - "line": 3724, + "line": 3732, "column": 37 }, "identifierName": "layerIndex" @@ -166467,15 +167528,15 @@ }, "property": { "type": "Identifier", - "start": 150866, - "end": 150891, + "start": 151380, + "end": 151405, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 39 }, "end": { - "line": 3724, + "line": 3732, "column": 64 }, "identifierName": "drawSilhouetteHighlighted" @@ -166487,15 +167548,15 @@ "arguments": [ { "type": "Identifier", - "start": 150892, - "end": 150903, + "start": 151406, + "end": 151417, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 65 }, "end": { - "line": 3724, + "line": 3732, "column": 76 }, "identifierName": "renderFlags" @@ -166504,15 +167565,15 @@ }, { "type": "Identifier", - "start": 150905, - "end": 150913, + "start": 151419, + "end": 151427, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 78 }, "end": { - "line": 3724, + "line": 3732, "column": 86 }, "identifierName": "frameCtx" @@ -166534,15 +167595,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150582, - "end": 150597, + "start": 151096, + "end": 151111, "loc": { "start": { - "line": 3719, + "line": 3727, "column": 4 }, "end": { - "line": 3719, + "line": 3727, "column": 19 } } @@ -166552,15 +167613,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150937, - "end": 150952, + "start": 151451, + "end": 151466, "loc": { "start": { - "line": 3728, + "line": 3736, "column": 4 }, "end": { - "line": 3728, + "line": 3736, "column": 19 } } @@ -166569,15 +167630,15 @@ }, { "type": "ClassMethod", - "start": 150957, - "end": 151280, + "start": 151471, + "end": 151794, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 4 }, "end": { - "line": 3735, + "line": 3743, "column": 5 } }, @@ -166585,15 +167646,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 150957, - "end": 150979, + "start": 151471, + "end": 151493, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 4 }, "end": { - "line": 3729, + "line": 3737, "column": 26 }, "identifierName": "drawSilhouetteSelected" @@ -166609,15 +167670,15 @@ "params": [ { "type": "Identifier", - "start": 150980, - "end": 150988, + "start": 151494, + "end": 151502, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 27 }, "end": { - "line": 3729, + "line": 3737, "column": 35 }, "identifierName": "frameCtx" @@ -166627,59 +167688,59 @@ ], "body": { "type": "BlockStatement", - "start": 150990, - "end": 151280, + "start": 151504, + "end": 151794, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 37 }, "end": { - "line": 3735, + "line": 3743, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 151000, - "end": 151037, + "start": 151514, + "end": 151551, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 8 }, "end": { - "line": 3730, + "line": 3738, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151006, - "end": 151036, + "start": 151520, + "end": 151550, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 14 }, "end": { - "line": 3730, + "line": 3738, "column": 44 } }, "id": { "type": "Identifier", - "start": 151006, - "end": 151017, + "start": 151520, + "end": 151531, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 14 }, "end": { - "line": 3730, + "line": 3738, "column": 25 }, "identifierName": "renderFlags" @@ -166688,44 +167749,44 @@ }, "init": { "type": "MemberExpression", - "start": 151020, - "end": 151036, + "start": 151534, + "end": 151550, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 28 }, "end": { - "line": 3730, + "line": 3738, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 151020, - "end": 151024, + "start": 151534, + "end": 151538, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 28 }, "end": { - "line": 3730, + "line": 3738, "column": 32 } } }, "property": { "type": "Identifier", - "start": 151025, - "end": 151036, + "start": 151539, + "end": 151550, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 33 }, "end": { - "line": 3730, + "line": 3738, "column": 44 }, "identifierName": "renderFlags" @@ -166740,58 +167801,58 @@ }, { "type": "ForStatement", - "start": 151046, - "end": 151274, + "start": 151560, + "end": 151788, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 8 }, "end": { - "line": 3734, + "line": 3742, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 151051, - "end": 151100, + "start": 151565, + "end": 151614, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 13 }, "end": { - "line": 3731, + "line": 3739, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151055, - "end": 151060, + "start": 151569, + "end": 151574, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 17 }, "end": { - "line": 3731, + "line": 3739, "column": 22 } }, "id": { "type": "Identifier", - "start": 151055, - "end": 151056, + "start": 151569, + "end": 151570, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 17 }, "end": { - "line": 3731, + "line": 3739, "column": 18 }, "identifierName": "i" @@ -166800,15 +167861,15 @@ }, "init": { "type": "NumericLiteral", - "start": 151059, - "end": 151060, + "start": 151573, + "end": 151574, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 21 }, "end": { - "line": 3731, + "line": 3739, "column": 22 } }, @@ -166821,29 +167882,29 @@ }, { "type": "VariableDeclarator", - "start": 151062, - "end": 151100, + "start": 151576, + "end": 151614, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 24 }, "end": { - "line": 3731, + "line": 3739, "column": 62 } }, "id": { "type": "Identifier", - "start": 151062, - "end": 151065, + "start": 151576, + "end": 151579, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 24 }, "end": { - "line": 3731, + "line": 3739, "column": 27 }, "identifierName": "len" @@ -166852,43 +167913,43 @@ }, "init": { "type": "MemberExpression", - "start": 151068, - "end": 151100, + "start": 151582, + "end": 151614, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 30 }, "end": { - "line": 3731, + "line": 3739, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 151068, - "end": 151093, + "start": 151582, + "end": 151607, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 30 }, "end": { - "line": 3731, + "line": 3739, "column": 55 } }, "object": { "type": "Identifier", - "start": 151068, - "end": 151079, + "start": 151582, + "end": 151593, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 30 }, "end": { - "line": 3731, + "line": 3739, "column": 41 }, "identifierName": "renderFlags" @@ -166897,15 +167958,15 @@ }, "property": { "type": "Identifier", - "start": 151080, - "end": 151093, + "start": 151594, + "end": 151607, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 42 }, "end": { - "line": 3731, + "line": 3739, "column": 55 }, "identifierName": "visibleLayers" @@ -166916,15 +167977,15 @@ }, "property": { "type": "Identifier", - "start": 151094, - "end": 151100, + "start": 151608, + "end": 151614, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 56 }, "end": { - "line": 3731, + "line": 3739, "column": 62 }, "identifierName": "length" @@ -166939,29 +168000,29 @@ }, "test": { "type": "BinaryExpression", - "start": 151102, - "end": 151109, + "start": 151616, + "end": 151623, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 64 }, "end": { - "line": 3731, + "line": 3739, "column": 71 } }, "left": { "type": "Identifier", - "start": 151102, - "end": 151103, + "start": 151616, + "end": 151617, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 64 }, "end": { - "line": 3731, + "line": 3739, "column": 65 }, "identifierName": "i" @@ -166971,15 +168032,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 151106, - "end": 151109, + "start": 151620, + "end": 151623, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 68 }, "end": { - "line": 3731, + "line": 3739, "column": 71 }, "identifierName": "len" @@ -166989,15 +168050,15 @@ }, "update": { "type": "UpdateExpression", - "start": 151111, - "end": 151114, + "start": 151625, + "end": 151628, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 73 }, "end": { - "line": 3731, + "line": 3739, "column": 76 } }, @@ -167005,15 +168066,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 151111, - "end": 151112, + "start": 151625, + "end": 151626, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 73 }, "end": { - "line": 3731, + "line": 3739, "column": 74 }, "identifierName": "i" @@ -167023,59 +168084,59 @@ }, "body": { "type": "BlockStatement", - "start": 151116, - "end": 151274, + "start": 151630, + "end": 151788, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 78 }, "end": { - "line": 3734, + "line": 3742, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 151130, - "end": 151178, + "start": 151644, + "end": 151692, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 12 }, "end": { - "line": 3732, + "line": 3740, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151136, - "end": 151177, + "start": 151650, + "end": 151691, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 18 }, "end": { - "line": 3732, + "line": 3740, "column": 59 } }, "id": { "type": "Identifier", - "start": 151136, - "end": 151146, + "start": 151650, + "end": 151660, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 18 }, "end": { - "line": 3732, + "line": 3740, "column": 28 }, "identifierName": "layerIndex" @@ -167084,43 +168145,43 @@ }, "init": { "type": "MemberExpression", - "start": 151149, - "end": 151177, + "start": 151663, + "end": 151691, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 31 }, "end": { - "line": 3732, + "line": 3740, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 151149, - "end": 151174, + "start": 151663, + "end": 151688, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 31 }, "end": { - "line": 3732, + "line": 3740, "column": 56 } }, "object": { "type": "Identifier", - "start": 151149, - "end": 151160, + "start": 151663, + "end": 151674, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 31 }, "end": { - "line": 3732, + "line": 3740, "column": 42 }, "identifierName": "renderFlags" @@ -167129,15 +168190,15 @@ }, "property": { "type": "Identifier", - "start": 151161, - "end": 151174, + "start": 151675, + "end": 151688, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 43 }, "end": { - "line": 3732, + "line": 3740, "column": 56 }, "identifierName": "visibleLayers" @@ -167148,15 +168209,15 @@ }, "property": { "type": "Identifier", - "start": 151175, - "end": 151176, + "start": 151689, + "end": 151690, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 57 }, "end": { - "line": 3732, + "line": 3740, "column": 58 }, "identifierName": "i" @@ -167171,100 +168232,100 @@ }, { "type": "ExpressionStatement", - "start": 151191, - "end": 151264, + "start": 151705, + "end": 151778, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 12 }, "end": { - "line": 3733, + "line": 3741, "column": 85 } }, "expression": { "type": "CallExpression", - "start": 151191, - "end": 151263, + "start": 151705, + "end": 151777, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 12 }, "end": { - "line": 3733, + "line": 3741, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 151191, - "end": 151240, + "start": 151705, + "end": 151754, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 12 }, "end": { - "line": 3733, + "line": 3741, "column": 61 } }, "object": { "type": "MemberExpression", - "start": 151191, - "end": 151217, + "start": 151705, + "end": 151731, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 12 }, "end": { - "line": 3733, + "line": 3741, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 151191, - "end": 151205, + "start": 151705, + "end": 151719, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 12 }, "end": { - "line": 3733, + "line": 3741, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 151191, - "end": 151195, + "start": 151705, + "end": 151709, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 12 }, "end": { - "line": 3733, + "line": 3741, "column": 16 } } }, "property": { "type": "Identifier", - "start": 151196, - "end": 151205, + "start": 151710, + "end": 151719, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 17 }, "end": { - "line": 3733, + "line": 3741, "column": 26 }, "identifierName": "layerList" @@ -167275,15 +168336,15 @@ }, "property": { "type": "Identifier", - "start": 151206, - "end": 151216, + "start": 151720, + "end": 151730, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 27 }, "end": { - "line": 3733, + "line": 3741, "column": 37 }, "identifierName": "layerIndex" @@ -167294,15 +168355,15 @@ }, "property": { "type": "Identifier", - "start": 151218, - "end": 151240, + "start": 151732, + "end": 151754, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 39 }, "end": { - "line": 3733, + "line": 3741, "column": 61 }, "identifierName": "drawSilhouetteSelected" @@ -167314,15 +168375,15 @@ "arguments": [ { "type": "Identifier", - "start": 151241, - "end": 151252, + "start": 151755, + "end": 151766, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 62 }, "end": { - "line": 3733, + "line": 3741, "column": 73 }, "identifierName": "renderFlags" @@ -167331,15 +168392,15 @@ }, { "type": "Identifier", - "start": 151254, - "end": 151262, + "start": 151768, + "end": 151776, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 75 }, "end": { - "line": 3733, + "line": 3741, "column": 83 }, "identifierName": "frameCtx" @@ -167361,15 +168422,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150937, - "end": 150952, + "start": 151451, + "end": 151466, "loc": { "start": { - "line": 3728, + "line": 3736, "column": 4 }, "end": { - "line": 3728, + "line": 3736, "column": 19 } } @@ -167379,15 +168440,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151286, - "end": 151301, + "start": 151800, + "end": 151815, "loc": { "start": { - "line": 3737, + "line": 3745, "column": 4 }, "end": { - "line": 3737, + "line": 3745, "column": 19 } } @@ -167396,15 +168457,15 @@ }, { "type": "ClassMethod", - "start": 151306, - "end": 151625, + "start": 151820, + "end": 152139, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 4 }, "end": { - "line": 3744, + "line": 3752, "column": 5 } }, @@ -167412,15 +168473,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 151306, - "end": 151326, + "start": 151820, + "end": 151840, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 4 }, "end": { - "line": 3738, + "line": 3746, "column": 24 }, "identifierName": "drawEdgesColorOpaque" @@ -167436,15 +168497,15 @@ "params": [ { "type": "Identifier", - "start": 151327, - "end": 151335, + "start": 151841, + "end": 151849, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 25 }, "end": { - "line": 3738, + "line": 3746, "column": 33 }, "identifierName": "frameCtx" @@ -167454,59 +168515,59 @@ ], "body": { "type": "BlockStatement", - "start": 151337, - "end": 151625, + "start": 151851, + "end": 152139, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 35 }, "end": { - "line": 3744, + "line": 3752, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 151347, - "end": 151384, + "start": 151861, + "end": 151898, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 8 }, "end": { - "line": 3739, + "line": 3747, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151353, - "end": 151383, + "start": 151867, + "end": 151897, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 14 }, "end": { - "line": 3739, + "line": 3747, "column": 44 } }, "id": { "type": "Identifier", - "start": 151353, - "end": 151364, + "start": 151867, + "end": 151878, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 14 }, "end": { - "line": 3739, + "line": 3747, "column": 25 }, "identifierName": "renderFlags" @@ -167515,44 +168576,44 @@ }, "init": { "type": "MemberExpression", - "start": 151367, - "end": 151383, + "start": 151881, + "end": 151897, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 28 }, "end": { - "line": 3739, + "line": 3747, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 151367, - "end": 151371, + "start": 151881, + "end": 151885, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 28 }, "end": { - "line": 3739, + "line": 3747, "column": 32 } } }, "property": { "type": "Identifier", - "start": 151372, - "end": 151383, + "start": 151886, + "end": 151897, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 33 }, "end": { - "line": 3739, + "line": 3747, "column": 44 }, "identifierName": "renderFlags" @@ -167567,58 +168628,58 @@ }, { "type": "ForStatement", - "start": 151393, - "end": 151619, + "start": 151907, + "end": 152133, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 8 }, "end": { - "line": 3743, + "line": 3751, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 151398, - "end": 151447, + "start": 151912, + "end": 151961, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 13 }, "end": { - "line": 3740, + "line": 3748, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151402, - "end": 151407, + "start": 151916, + "end": 151921, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 17 }, "end": { - "line": 3740, + "line": 3748, "column": 22 } }, "id": { "type": "Identifier", - "start": 151402, - "end": 151403, + "start": 151916, + "end": 151917, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 17 }, "end": { - "line": 3740, + "line": 3748, "column": 18 }, "identifierName": "i" @@ -167627,15 +168688,15 @@ }, "init": { "type": "NumericLiteral", - "start": 151406, - "end": 151407, + "start": 151920, + "end": 151921, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 21 }, "end": { - "line": 3740, + "line": 3748, "column": 22 } }, @@ -167648,29 +168709,29 @@ }, { "type": "VariableDeclarator", - "start": 151409, - "end": 151447, + "start": 151923, + "end": 151961, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 24 }, "end": { - "line": 3740, + "line": 3748, "column": 62 } }, "id": { "type": "Identifier", - "start": 151409, - "end": 151412, + "start": 151923, + "end": 151926, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 24 }, "end": { - "line": 3740, + "line": 3748, "column": 27 }, "identifierName": "len" @@ -167679,43 +168740,43 @@ }, "init": { "type": "MemberExpression", - "start": 151415, - "end": 151447, + "start": 151929, + "end": 151961, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 30 }, "end": { - "line": 3740, + "line": 3748, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 151415, - "end": 151440, + "start": 151929, + "end": 151954, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 30 }, "end": { - "line": 3740, + "line": 3748, "column": 55 } }, "object": { "type": "Identifier", - "start": 151415, - "end": 151426, + "start": 151929, + "end": 151940, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 30 }, "end": { - "line": 3740, + "line": 3748, "column": 41 }, "identifierName": "renderFlags" @@ -167724,15 +168785,15 @@ }, "property": { "type": "Identifier", - "start": 151427, - "end": 151440, + "start": 151941, + "end": 151954, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 42 }, "end": { - "line": 3740, + "line": 3748, "column": 55 }, "identifierName": "visibleLayers" @@ -167743,15 +168804,15 @@ }, "property": { "type": "Identifier", - "start": 151441, - "end": 151447, + "start": 151955, + "end": 151961, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 56 }, "end": { - "line": 3740, + "line": 3748, "column": 62 }, "identifierName": "length" @@ -167766,29 +168827,29 @@ }, "test": { "type": "BinaryExpression", - "start": 151449, - "end": 151456, + "start": 151963, + "end": 151970, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 64 }, "end": { - "line": 3740, + "line": 3748, "column": 71 } }, "left": { "type": "Identifier", - "start": 151449, - "end": 151450, + "start": 151963, + "end": 151964, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 64 }, "end": { - "line": 3740, + "line": 3748, "column": 65 }, "identifierName": "i" @@ -167798,15 +168859,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 151453, - "end": 151456, + "start": 151967, + "end": 151970, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 68 }, "end": { - "line": 3740, + "line": 3748, "column": 71 }, "identifierName": "len" @@ -167816,15 +168877,15 @@ }, "update": { "type": "UpdateExpression", - "start": 151458, - "end": 151461, + "start": 151972, + "end": 151975, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 73 }, "end": { - "line": 3740, + "line": 3748, "column": 76 } }, @@ -167832,15 +168893,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 151458, - "end": 151459, + "start": 151972, + "end": 151973, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 73 }, "end": { - "line": 3740, + "line": 3748, "column": 74 }, "identifierName": "i" @@ -167850,59 +168911,59 @@ }, "body": { "type": "BlockStatement", - "start": 151463, - "end": 151619, + "start": 151977, + "end": 152133, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 78 }, "end": { - "line": 3743, + "line": 3751, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 151477, - "end": 151525, + "start": 151991, + "end": 152039, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 12 }, "end": { - "line": 3741, + "line": 3749, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151483, - "end": 151524, + "start": 151997, + "end": 152038, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 18 }, "end": { - "line": 3741, + "line": 3749, "column": 59 } }, "id": { "type": "Identifier", - "start": 151483, - "end": 151493, + "start": 151997, + "end": 152007, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 18 }, "end": { - "line": 3741, + "line": 3749, "column": 28 }, "identifierName": "layerIndex" @@ -167911,43 +168972,43 @@ }, "init": { "type": "MemberExpression", - "start": 151496, - "end": 151524, + "start": 152010, + "end": 152038, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 31 }, "end": { - "line": 3741, + "line": 3749, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 151496, - "end": 151521, + "start": 152010, + "end": 152035, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 31 }, "end": { - "line": 3741, + "line": 3749, "column": 56 } }, "object": { "type": "Identifier", - "start": 151496, - "end": 151507, + "start": 152010, + "end": 152021, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 31 }, "end": { - "line": 3741, + "line": 3749, "column": 42 }, "identifierName": "renderFlags" @@ -167956,15 +169017,15 @@ }, "property": { "type": "Identifier", - "start": 151508, - "end": 151521, + "start": 152022, + "end": 152035, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 43 }, "end": { - "line": 3741, + "line": 3749, "column": 56 }, "identifierName": "visibleLayers" @@ -167975,15 +169036,15 @@ }, "property": { "type": "Identifier", - "start": 151522, - "end": 151523, + "start": 152036, + "end": 152037, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 57 }, "end": { - "line": 3741, + "line": 3749, "column": 58 }, "identifierName": "i" @@ -167998,100 +169059,100 @@ }, { "type": "ExpressionStatement", - "start": 151538, - "end": 151609, + "start": 152052, + "end": 152123, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 12 }, "end": { - "line": 3742, + "line": 3750, "column": 83 } }, "expression": { "type": "CallExpression", - "start": 151538, - "end": 151608, + "start": 152052, + "end": 152122, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 12 }, "end": { - "line": 3742, + "line": 3750, "column": 82 } }, "callee": { "type": "MemberExpression", - "start": 151538, - "end": 151585, + "start": 152052, + "end": 152099, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 12 }, "end": { - "line": 3742, + "line": 3750, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 151538, - "end": 151564, + "start": 152052, + "end": 152078, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 12 }, "end": { - "line": 3742, + "line": 3750, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 151538, - "end": 151552, + "start": 152052, + "end": 152066, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 12 }, "end": { - "line": 3742, + "line": 3750, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 151538, - "end": 151542, + "start": 152052, + "end": 152056, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 12 }, "end": { - "line": 3742, + "line": 3750, "column": 16 } } }, "property": { "type": "Identifier", - "start": 151543, - "end": 151552, + "start": 152057, + "end": 152066, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 17 }, "end": { - "line": 3742, + "line": 3750, "column": 26 }, "identifierName": "layerList" @@ -168102,15 +169163,15 @@ }, "property": { "type": "Identifier", - "start": 151553, - "end": 151563, + "start": 152067, + "end": 152077, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 27 }, "end": { - "line": 3742, + "line": 3750, "column": 37 }, "identifierName": "layerIndex" @@ -168121,15 +169182,15 @@ }, "property": { "type": "Identifier", - "start": 151565, - "end": 151585, + "start": 152079, + "end": 152099, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 39 }, "end": { - "line": 3742, + "line": 3750, "column": 59 }, "identifierName": "drawEdgesColorOpaque" @@ -168141,15 +169202,15 @@ "arguments": [ { "type": "Identifier", - "start": 151586, - "end": 151597, + "start": 152100, + "end": 152111, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 60 }, "end": { - "line": 3742, + "line": 3750, "column": 71 }, "identifierName": "renderFlags" @@ -168158,15 +169219,15 @@ }, { "type": "Identifier", - "start": 151599, - "end": 151607, + "start": 152113, + "end": 152121, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 73 }, "end": { - "line": 3742, + "line": 3750, "column": 81 }, "identifierName": "frameCtx" @@ -168188,15 +169249,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151286, - "end": 151301, + "start": 151800, + "end": 151815, "loc": { "start": { - "line": 3737, + "line": 3745, "column": 4 }, "end": { - "line": 3737, + "line": 3745, "column": 19 } } @@ -168206,15 +169267,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151631, - "end": 151646, + "start": 152145, + "end": 152160, "loc": { "start": { - "line": 3746, + "line": 3754, "column": 4 }, "end": { - "line": 3746, + "line": 3754, "column": 19 } } @@ -168223,15 +169284,15 @@ }, { "type": "ClassMethod", - "start": 151651, - "end": 151980, + "start": 152165, + "end": 152494, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 4 }, "end": { - "line": 3753, + "line": 3761, "column": 5 } }, @@ -168239,15 +169300,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 151651, - "end": 151676, + "start": 152165, + "end": 152190, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 4 }, "end": { - "line": 3747, + "line": 3755, "column": 29 }, "identifierName": "drawEdgesColorTransparent" @@ -168263,15 +169324,15 @@ "params": [ { "type": "Identifier", - "start": 151677, - "end": 151685, + "start": 152191, + "end": 152199, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 30 }, "end": { - "line": 3747, + "line": 3755, "column": 38 }, "identifierName": "frameCtx" @@ -168281,59 +169342,59 @@ ], "body": { "type": "BlockStatement", - "start": 151687, - "end": 151980, + "start": 152201, + "end": 152494, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 40 }, "end": { - "line": 3753, + "line": 3761, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 151697, - "end": 151734, + "start": 152211, + "end": 152248, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 8 }, "end": { - "line": 3748, + "line": 3756, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151703, - "end": 151733, + "start": 152217, + "end": 152247, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 14 }, "end": { - "line": 3748, + "line": 3756, "column": 44 } }, "id": { "type": "Identifier", - "start": 151703, - "end": 151714, + "start": 152217, + "end": 152228, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 14 }, "end": { - "line": 3748, + "line": 3756, "column": 25 }, "identifierName": "renderFlags" @@ -168342,44 +169403,44 @@ }, "init": { "type": "MemberExpression", - "start": 151717, - "end": 151733, + "start": 152231, + "end": 152247, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 28 }, "end": { - "line": 3748, + "line": 3756, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 151717, - "end": 151721, + "start": 152231, + "end": 152235, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 28 }, "end": { - "line": 3748, + "line": 3756, "column": 32 } } }, "property": { "type": "Identifier", - "start": 151722, - "end": 151733, + "start": 152236, + "end": 152247, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 33 }, "end": { - "line": 3748, + "line": 3756, "column": 44 }, "identifierName": "renderFlags" @@ -168394,58 +169455,58 @@ }, { "type": "ForStatement", - "start": 151743, - "end": 151974, + "start": 152257, + "end": 152488, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 8 }, "end": { - "line": 3752, + "line": 3760, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 151748, - "end": 151797, + "start": 152262, + "end": 152311, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 13 }, "end": { - "line": 3749, + "line": 3757, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151752, - "end": 151757, + "start": 152266, + "end": 152271, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 17 }, "end": { - "line": 3749, + "line": 3757, "column": 22 } }, "id": { "type": "Identifier", - "start": 151752, - "end": 151753, + "start": 152266, + "end": 152267, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 17 }, "end": { - "line": 3749, + "line": 3757, "column": 18 }, "identifierName": "i" @@ -168454,15 +169515,15 @@ }, "init": { "type": "NumericLiteral", - "start": 151756, - "end": 151757, + "start": 152270, + "end": 152271, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 21 }, "end": { - "line": 3749, + "line": 3757, "column": 22 } }, @@ -168475,29 +169536,29 @@ }, { "type": "VariableDeclarator", - "start": 151759, - "end": 151797, + "start": 152273, + "end": 152311, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 24 }, "end": { - "line": 3749, + "line": 3757, "column": 62 } }, "id": { "type": "Identifier", - "start": 151759, - "end": 151762, + "start": 152273, + "end": 152276, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 24 }, "end": { - "line": 3749, + "line": 3757, "column": 27 }, "identifierName": "len" @@ -168506,43 +169567,43 @@ }, "init": { "type": "MemberExpression", - "start": 151765, - "end": 151797, + "start": 152279, + "end": 152311, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 30 }, "end": { - "line": 3749, + "line": 3757, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 151765, - "end": 151790, + "start": 152279, + "end": 152304, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 30 }, "end": { - "line": 3749, + "line": 3757, "column": 55 } }, "object": { "type": "Identifier", - "start": 151765, - "end": 151776, + "start": 152279, + "end": 152290, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 30 }, "end": { - "line": 3749, + "line": 3757, "column": 41 }, "identifierName": "renderFlags" @@ -168551,15 +169612,15 @@ }, "property": { "type": "Identifier", - "start": 151777, - "end": 151790, + "start": 152291, + "end": 152304, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 42 }, "end": { - "line": 3749, + "line": 3757, "column": 55 }, "identifierName": "visibleLayers" @@ -168570,15 +169631,15 @@ }, "property": { "type": "Identifier", - "start": 151791, - "end": 151797, + "start": 152305, + "end": 152311, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 56 }, "end": { - "line": 3749, + "line": 3757, "column": 62 }, "identifierName": "length" @@ -168593,29 +169654,29 @@ }, "test": { "type": "BinaryExpression", - "start": 151799, - "end": 151806, + "start": 152313, + "end": 152320, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 64 }, "end": { - "line": 3749, + "line": 3757, "column": 71 } }, "left": { "type": "Identifier", - "start": 151799, - "end": 151800, + "start": 152313, + "end": 152314, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 64 }, "end": { - "line": 3749, + "line": 3757, "column": 65 }, "identifierName": "i" @@ -168625,15 +169686,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 151803, - "end": 151806, + "start": 152317, + "end": 152320, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 68 }, "end": { - "line": 3749, + "line": 3757, "column": 71 }, "identifierName": "len" @@ -168643,15 +169704,15 @@ }, "update": { "type": "UpdateExpression", - "start": 151808, - "end": 151811, + "start": 152322, + "end": 152325, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 73 }, "end": { - "line": 3749, + "line": 3757, "column": 76 } }, @@ -168659,15 +169720,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 151808, - "end": 151809, + "start": 152322, + "end": 152323, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 73 }, "end": { - "line": 3749, + "line": 3757, "column": 74 }, "identifierName": "i" @@ -168677,59 +169738,59 @@ }, "body": { "type": "BlockStatement", - "start": 151813, - "end": 151974, + "start": 152327, + "end": 152488, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 78 }, "end": { - "line": 3752, + "line": 3760, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 151827, - "end": 151875, + "start": 152341, + "end": 152389, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 12 }, "end": { - "line": 3750, + "line": 3758, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 151833, - "end": 151874, + "start": 152347, + "end": 152388, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 18 }, "end": { - "line": 3750, + "line": 3758, "column": 59 } }, "id": { "type": "Identifier", - "start": 151833, - "end": 151843, + "start": 152347, + "end": 152357, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 18 }, "end": { - "line": 3750, + "line": 3758, "column": 28 }, "identifierName": "layerIndex" @@ -168738,43 +169799,43 @@ }, "init": { "type": "MemberExpression", - "start": 151846, - "end": 151874, + "start": 152360, + "end": 152388, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 31 }, "end": { - "line": 3750, + "line": 3758, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 151846, - "end": 151871, + "start": 152360, + "end": 152385, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 31 }, "end": { - "line": 3750, + "line": 3758, "column": 56 } }, "object": { "type": "Identifier", - "start": 151846, - "end": 151857, + "start": 152360, + "end": 152371, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 31 }, "end": { - "line": 3750, + "line": 3758, "column": 42 }, "identifierName": "renderFlags" @@ -168783,15 +169844,15 @@ }, "property": { "type": "Identifier", - "start": 151858, - "end": 151871, + "start": 152372, + "end": 152385, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 43 }, "end": { - "line": 3750, + "line": 3758, "column": 56 }, "identifierName": "visibleLayers" @@ -168802,15 +169863,15 @@ }, "property": { "type": "Identifier", - "start": 151872, - "end": 151873, + "start": 152386, + "end": 152387, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 57 }, "end": { - "line": 3750, + "line": 3758, "column": 58 }, "identifierName": "i" @@ -168825,100 +169886,100 @@ }, { "type": "ExpressionStatement", - "start": 151888, - "end": 151964, + "start": 152402, + "end": 152478, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 12 }, "end": { - "line": 3751, + "line": 3759, "column": 88 } }, "expression": { "type": "CallExpression", - "start": 151888, - "end": 151963, + "start": 152402, + "end": 152477, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 12 }, "end": { - "line": 3751, + "line": 3759, "column": 87 } }, "callee": { "type": "MemberExpression", - "start": 151888, - "end": 151940, + "start": 152402, + "end": 152454, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 12 }, "end": { - "line": 3751, + "line": 3759, "column": 64 } }, "object": { "type": "MemberExpression", - "start": 151888, - "end": 151914, + "start": 152402, + "end": 152428, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 12 }, "end": { - "line": 3751, + "line": 3759, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 151888, - "end": 151902, + "start": 152402, + "end": 152416, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 12 }, "end": { - "line": 3751, + "line": 3759, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 151888, - "end": 151892, + "start": 152402, + "end": 152406, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 12 }, "end": { - "line": 3751, + "line": 3759, "column": 16 } } }, "property": { "type": "Identifier", - "start": 151893, - "end": 151902, + "start": 152407, + "end": 152416, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 17 }, "end": { - "line": 3751, + "line": 3759, "column": 26 }, "identifierName": "layerList" @@ -168929,15 +169990,15 @@ }, "property": { "type": "Identifier", - "start": 151903, - "end": 151913, + "start": 152417, + "end": 152427, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 27 }, "end": { - "line": 3751, + "line": 3759, "column": 37 }, "identifierName": "layerIndex" @@ -168948,15 +170009,15 @@ }, "property": { "type": "Identifier", - "start": 151915, - "end": 151940, + "start": 152429, + "end": 152454, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 39 }, "end": { - "line": 3751, + "line": 3759, "column": 64 }, "identifierName": "drawEdgesColorTransparent" @@ -168968,15 +170029,15 @@ "arguments": [ { "type": "Identifier", - "start": 151941, - "end": 151952, + "start": 152455, + "end": 152466, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 65 }, "end": { - "line": 3751, + "line": 3759, "column": 76 }, "identifierName": "renderFlags" @@ -168985,15 +170046,15 @@ }, { "type": "Identifier", - "start": 151954, - "end": 151962, + "start": 152468, + "end": 152476, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 78 }, "end": { - "line": 3751, + "line": 3759, "column": 86 }, "identifierName": "frameCtx" @@ -169015,15 +170076,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151631, - "end": 151646, + "start": 152145, + "end": 152160, "loc": { "start": { - "line": 3746, + "line": 3754, "column": 4 }, "end": { - "line": 3746, + "line": 3754, "column": 19 } } @@ -169033,15 +170094,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151986, - "end": 152001, + "start": 152500, + "end": 152515, "loc": { "start": { - "line": 3755, + "line": 3763, "column": 4 }, "end": { - "line": 3755, + "line": 3763, "column": 19 } } @@ -169050,15 +170111,15 @@ }, { "type": "ClassMethod", - "start": 152006, - "end": 152315, + "start": 152520, + "end": 152829, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 4 }, "end": { - "line": 3762, + "line": 3770, "column": 5 } }, @@ -169066,15 +170127,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 152006, - "end": 152021, + "start": 152520, + "end": 152535, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 4 }, "end": { - "line": 3756, + "line": 3764, "column": 19 }, "identifierName": "drawEdgesXRayed" @@ -169090,15 +170151,15 @@ "params": [ { "type": "Identifier", - "start": 152022, - "end": 152030, + "start": 152536, + "end": 152544, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 20 }, "end": { - "line": 3756, + "line": 3764, "column": 28 }, "identifierName": "frameCtx" @@ -169108,59 +170169,59 @@ ], "body": { "type": "BlockStatement", - "start": 152032, - "end": 152315, + "start": 152546, + "end": 152829, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 30 }, "end": { - "line": 3762, + "line": 3770, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 152042, - "end": 152079, + "start": 152556, + "end": 152593, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 8 }, "end": { - "line": 3757, + "line": 3765, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152048, - "end": 152078, + "start": 152562, + "end": 152592, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 14 }, "end": { - "line": 3757, + "line": 3765, "column": 44 } }, "id": { "type": "Identifier", - "start": 152048, - "end": 152059, + "start": 152562, + "end": 152573, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 14 }, "end": { - "line": 3757, + "line": 3765, "column": 25 }, "identifierName": "renderFlags" @@ -169169,44 +170230,44 @@ }, "init": { "type": "MemberExpression", - "start": 152062, - "end": 152078, + "start": 152576, + "end": 152592, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 28 }, "end": { - "line": 3757, + "line": 3765, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 152062, - "end": 152066, + "start": 152576, + "end": 152580, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 28 }, "end": { - "line": 3757, + "line": 3765, "column": 32 } } }, "property": { "type": "Identifier", - "start": 152067, - "end": 152078, + "start": 152581, + "end": 152592, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 33 }, "end": { - "line": 3757, + "line": 3765, "column": 44 }, "identifierName": "renderFlags" @@ -169221,58 +170282,58 @@ }, { "type": "ForStatement", - "start": 152088, - "end": 152309, + "start": 152602, + "end": 152823, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 8 }, "end": { - "line": 3761, + "line": 3769, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 152093, - "end": 152142, + "start": 152607, + "end": 152656, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 13 }, "end": { - "line": 3758, + "line": 3766, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152097, - "end": 152102, + "start": 152611, + "end": 152616, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 17 }, "end": { - "line": 3758, + "line": 3766, "column": 22 } }, "id": { "type": "Identifier", - "start": 152097, - "end": 152098, + "start": 152611, + "end": 152612, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 17 }, "end": { - "line": 3758, + "line": 3766, "column": 18 }, "identifierName": "i" @@ -169281,15 +170342,15 @@ }, "init": { "type": "NumericLiteral", - "start": 152101, - "end": 152102, + "start": 152615, + "end": 152616, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 21 }, "end": { - "line": 3758, + "line": 3766, "column": 22 } }, @@ -169302,29 +170363,29 @@ }, { "type": "VariableDeclarator", - "start": 152104, - "end": 152142, + "start": 152618, + "end": 152656, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 24 }, "end": { - "line": 3758, + "line": 3766, "column": 62 } }, "id": { "type": "Identifier", - "start": 152104, - "end": 152107, + "start": 152618, + "end": 152621, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 24 }, "end": { - "line": 3758, + "line": 3766, "column": 27 }, "identifierName": "len" @@ -169333,43 +170394,43 @@ }, "init": { "type": "MemberExpression", - "start": 152110, - "end": 152142, + "start": 152624, + "end": 152656, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 30 }, "end": { - "line": 3758, + "line": 3766, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 152110, - "end": 152135, + "start": 152624, + "end": 152649, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 30 }, "end": { - "line": 3758, + "line": 3766, "column": 55 } }, "object": { "type": "Identifier", - "start": 152110, - "end": 152121, + "start": 152624, + "end": 152635, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 30 }, "end": { - "line": 3758, + "line": 3766, "column": 41 }, "identifierName": "renderFlags" @@ -169378,15 +170439,15 @@ }, "property": { "type": "Identifier", - "start": 152122, - "end": 152135, + "start": 152636, + "end": 152649, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 42 }, "end": { - "line": 3758, + "line": 3766, "column": 55 }, "identifierName": "visibleLayers" @@ -169397,15 +170458,15 @@ }, "property": { "type": "Identifier", - "start": 152136, - "end": 152142, + "start": 152650, + "end": 152656, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 56 }, "end": { - "line": 3758, + "line": 3766, "column": 62 }, "identifierName": "length" @@ -169420,29 +170481,29 @@ }, "test": { "type": "BinaryExpression", - "start": 152144, - "end": 152151, + "start": 152658, + "end": 152665, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 64 }, "end": { - "line": 3758, + "line": 3766, "column": 71 } }, "left": { "type": "Identifier", - "start": 152144, - "end": 152145, + "start": 152658, + "end": 152659, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 64 }, "end": { - "line": 3758, + "line": 3766, "column": 65 }, "identifierName": "i" @@ -169452,15 +170513,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 152148, - "end": 152151, + "start": 152662, + "end": 152665, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 68 }, "end": { - "line": 3758, + "line": 3766, "column": 71 }, "identifierName": "len" @@ -169470,15 +170531,15 @@ }, "update": { "type": "UpdateExpression", - "start": 152153, - "end": 152156, + "start": 152667, + "end": 152670, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 73 }, "end": { - "line": 3758, + "line": 3766, "column": 76 } }, @@ -169486,15 +170547,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 152153, - "end": 152154, + "start": 152667, + "end": 152668, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 73 }, "end": { - "line": 3758, + "line": 3766, "column": 74 }, "identifierName": "i" @@ -169504,59 +170565,59 @@ }, "body": { "type": "BlockStatement", - "start": 152158, - "end": 152309, + "start": 152672, + "end": 152823, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 78 }, "end": { - "line": 3761, + "line": 3769, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 152172, - "end": 152220, + "start": 152686, + "end": 152734, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 12 }, "end": { - "line": 3759, + "line": 3767, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152178, - "end": 152219, + "start": 152692, + "end": 152733, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 18 }, "end": { - "line": 3759, + "line": 3767, "column": 59 } }, "id": { "type": "Identifier", - "start": 152178, - "end": 152188, + "start": 152692, + "end": 152702, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 18 }, "end": { - "line": 3759, + "line": 3767, "column": 28 }, "identifierName": "layerIndex" @@ -169565,43 +170626,43 @@ }, "init": { "type": "MemberExpression", - "start": 152191, - "end": 152219, + "start": 152705, + "end": 152733, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 31 }, "end": { - "line": 3759, + "line": 3767, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 152191, - "end": 152216, + "start": 152705, + "end": 152730, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 31 }, "end": { - "line": 3759, + "line": 3767, "column": 56 } }, "object": { "type": "Identifier", - "start": 152191, - "end": 152202, + "start": 152705, + "end": 152716, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 31 }, "end": { - "line": 3759, + "line": 3767, "column": 42 }, "identifierName": "renderFlags" @@ -169610,15 +170671,15 @@ }, "property": { "type": "Identifier", - "start": 152203, - "end": 152216, + "start": 152717, + "end": 152730, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 43 }, "end": { - "line": 3759, + "line": 3767, "column": 56 }, "identifierName": "visibleLayers" @@ -169629,15 +170690,15 @@ }, "property": { "type": "Identifier", - "start": 152217, - "end": 152218, + "start": 152731, + "end": 152732, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 57 }, "end": { - "line": 3759, + "line": 3767, "column": 58 }, "identifierName": "i" @@ -169652,100 +170713,100 @@ }, { "type": "ExpressionStatement", - "start": 152233, - "end": 152299, + "start": 152747, + "end": 152813, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 12 }, "end": { - "line": 3760, + "line": 3768, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 152233, - "end": 152298, + "start": 152747, + "end": 152812, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 12 }, "end": { - "line": 3760, + "line": 3768, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 152233, - "end": 152275, + "start": 152747, + "end": 152789, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 12 }, "end": { - "line": 3760, + "line": 3768, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 152233, - "end": 152259, + "start": 152747, + "end": 152773, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 12 }, "end": { - "line": 3760, + "line": 3768, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 152233, - "end": 152247, + "start": 152747, + "end": 152761, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 12 }, "end": { - "line": 3760, + "line": 3768, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 152233, - "end": 152237, + "start": 152747, + "end": 152751, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 12 }, "end": { - "line": 3760, + "line": 3768, "column": 16 } } }, "property": { "type": "Identifier", - "start": 152238, - "end": 152247, + "start": 152752, + "end": 152761, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 17 }, "end": { - "line": 3760, + "line": 3768, "column": 26 }, "identifierName": "layerList" @@ -169756,15 +170817,15 @@ }, "property": { "type": "Identifier", - "start": 152248, - "end": 152258, + "start": 152762, + "end": 152772, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 27 }, "end": { - "line": 3760, + "line": 3768, "column": 37 }, "identifierName": "layerIndex" @@ -169775,15 +170836,15 @@ }, "property": { "type": "Identifier", - "start": 152260, - "end": 152275, + "start": 152774, + "end": 152789, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 39 }, "end": { - "line": 3760, + "line": 3768, "column": 54 }, "identifierName": "drawEdgesXRayed" @@ -169795,15 +170856,15 @@ "arguments": [ { "type": "Identifier", - "start": 152276, - "end": 152287, + "start": 152790, + "end": 152801, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 55 }, "end": { - "line": 3760, + "line": 3768, "column": 66 }, "identifierName": "renderFlags" @@ -169812,15 +170873,15 @@ }, { "type": "Identifier", - "start": 152289, - "end": 152297, + "start": 152803, + "end": 152811, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 68 }, "end": { - "line": 3760, + "line": 3768, "column": 76 }, "identifierName": "frameCtx" @@ -169842,15 +170903,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151986, - "end": 152001, + "start": 152500, + "end": 152515, "loc": { "start": { - "line": 3755, + "line": 3763, "column": 4 }, "end": { - "line": 3755, + "line": 3763, "column": 19 } } @@ -169860,15 +170921,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 152321, - "end": 152336, + "start": 152835, + "end": 152850, "loc": { "start": { - "line": 3764, + "line": 3772, "column": 4 }, "end": { - "line": 3764, + "line": 3772, "column": 19 } } @@ -169877,15 +170938,15 @@ }, { "type": "ClassMethod", - "start": 152341, - "end": 152660, + "start": 152855, + "end": 153174, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 4 }, "end": { - "line": 3771, + "line": 3779, "column": 5 } }, @@ -169893,15 +170954,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 152341, - "end": 152361, + "start": 152855, + "end": 152875, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 4 }, "end": { - "line": 3765, + "line": 3773, "column": 24 }, "identifierName": "drawEdgesHighlighted" @@ -169917,15 +170978,15 @@ "params": [ { "type": "Identifier", - "start": 152362, - "end": 152370, + "start": 152876, + "end": 152884, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 25 }, "end": { - "line": 3765, + "line": 3773, "column": 33 }, "identifierName": "frameCtx" @@ -169935,59 +170996,59 @@ ], "body": { "type": "BlockStatement", - "start": 152372, - "end": 152660, + "start": 152886, + "end": 153174, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 35 }, "end": { - "line": 3771, + "line": 3779, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 152382, - "end": 152419, + "start": 152896, + "end": 152933, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 8 }, "end": { - "line": 3766, + "line": 3774, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152388, - "end": 152418, + "start": 152902, + "end": 152932, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 14 }, "end": { - "line": 3766, + "line": 3774, "column": 44 } }, "id": { "type": "Identifier", - "start": 152388, - "end": 152399, + "start": 152902, + "end": 152913, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 14 }, "end": { - "line": 3766, + "line": 3774, "column": 25 }, "identifierName": "renderFlags" @@ -169996,44 +171057,44 @@ }, "init": { "type": "MemberExpression", - "start": 152402, - "end": 152418, + "start": 152916, + "end": 152932, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 28 }, "end": { - "line": 3766, + "line": 3774, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 152402, - "end": 152406, + "start": 152916, + "end": 152920, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 28 }, "end": { - "line": 3766, + "line": 3774, "column": 32 } } }, "property": { "type": "Identifier", - "start": 152407, - "end": 152418, + "start": 152921, + "end": 152932, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 33 }, "end": { - "line": 3766, + "line": 3774, "column": 44 }, "identifierName": "renderFlags" @@ -170048,58 +171109,58 @@ }, { "type": "ForStatement", - "start": 152428, - "end": 152654, + "start": 152942, + "end": 153168, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 8 }, "end": { - "line": 3770, + "line": 3778, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 152433, - "end": 152482, + "start": 152947, + "end": 152996, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 13 }, "end": { - "line": 3767, + "line": 3775, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152437, - "end": 152442, + "start": 152951, + "end": 152956, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 17 }, "end": { - "line": 3767, + "line": 3775, "column": 22 } }, "id": { "type": "Identifier", - "start": 152437, - "end": 152438, + "start": 152951, + "end": 152952, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 17 }, "end": { - "line": 3767, + "line": 3775, "column": 18 }, "identifierName": "i" @@ -170108,15 +171169,15 @@ }, "init": { "type": "NumericLiteral", - "start": 152441, - "end": 152442, + "start": 152955, + "end": 152956, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 21 }, "end": { - "line": 3767, + "line": 3775, "column": 22 } }, @@ -170129,29 +171190,29 @@ }, { "type": "VariableDeclarator", - "start": 152444, - "end": 152482, + "start": 152958, + "end": 152996, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 24 }, "end": { - "line": 3767, + "line": 3775, "column": 62 } }, "id": { "type": "Identifier", - "start": 152444, - "end": 152447, + "start": 152958, + "end": 152961, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 24 }, "end": { - "line": 3767, + "line": 3775, "column": 27 }, "identifierName": "len" @@ -170160,43 +171221,43 @@ }, "init": { "type": "MemberExpression", - "start": 152450, - "end": 152482, + "start": 152964, + "end": 152996, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 30 }, "end": { - "line": 3767, + "line": 3775, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 152450, - "end": 152475, + "start": 152964, + "end": 152989, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 30 }, "end": { - "line": 3767, + "line": 3775, "column": 55 } }, "object": { "type": "Identifier", - "start": 152450, - "end": 152461, + "start": 152964, + "end": 152975, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 30 }, "end": { - "line": 3767, + "line": 3775, "column": 41 }, "identifierName": "renderFlags" @@ -170205,15 +171266,15 @@ }, "property": { "type": "Identifier", - "start": 152462, - "end": 152475, + "start": 152976, + "end": 152989, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 42 }, "end": { - "line": 3767, + "line": 3775, "column": 55 }, "identifierName": "visibleLayers" @@ -170224,15 +171285,15 @@ }, "property": { "type": "Identifier", - "start": 152476, - "end": 152482, + "start": 152990, + "end": 152996, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 56 }, "end": { - "line": 3767, + "line": 3775, "column": 62 }, "identifierName": "length" @@ -170247,29 +171308,29 @@ }, "test": { "type": "BinaryExpression", - "start": 152484, - "end": 152491, + "start": 152998, + "end": 153005, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 64 }, "end": { - "line": 3767, + "line": 3775, "column": 71 } }, "left": { "type": "Identifier", - "start": 152484, - "end": 152485, + "start": 152998, + "end": 152999, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 64 }, "end": { - "line": 3767, + "line": 3775, "column": 65 }, "identifierName": "i" @@ -170279,15 +171340,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 152488, - "end": 152491, + "start": 153002, + "end": 153005, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 68 }, "end": { - "line": 3767, + "line": 3775, "column": 71 }, "identifierName": "len" @@ -170297,15 +171358,15 @@ }, "update": { "type": "UpdateExpression", - "start": 152493, - "end": 152496, + "start": 153007, + "end": 153010, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 73 }, "end": { - "line": 3767, + "line": 3775, "column": 76 } }, @@ -170313,15 +171374,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 152493, - "end": 152494, + "start": 153007, + "end": 153008, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 73 }, "end": { - "line": 3767, + "line": 3775, "column": 74 }, "identifierName": "i" @@ -170331,59 +171392,59 @@ }, "body": { "type": "BlockStatement", - "start": 152498, - "end": 152654, + "start": 153012, + "end": 153168, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 78 }, "end": { - "line": 3770, + "line": 3778, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 152512, - "end": 152560, + "start": 153026, + "end": 153074, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 12 }, "end": { - "line": 3768, + "line": 3776, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152518, - "end": 152559, + "start": 153032, + "end": 153073, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 18 }, "end": { - "line": 3768, + "line": 3776, "column": 59 } }, "id": { "type": "Identifier", - "start": 152518, - "end": 152528, + "start": 153032, + "end": 153042, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 18 }, "end": { - "line": 3768, + "line": 3776, "column": 28 }, "identifierName": "layerIndex" @@ -170392,43 +171453,43 @@ }, "init": { "type": "MemberExpression", - "start": 152531, - "end": 152559, + "start": 153045, + "end": 153073, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 31 }, "end": { - "line": 3768, + "line": 3776, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 152531, - "end": 152556, + "start": 153045, + "end": 153070, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 31 }, "end": { - "line": 3768, + "line": 3776, "column": 56 } }, "object": { "type": "Identifier", - "start": 152531, - "end": 152542, + "start": 153045, + "end": 153056, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 31 }, "end": { - "line": 3768, + "line": 3776, "column": 42 }, "identifierName": "renderFlags" @@ -170437,15 +171498,15 @@ }, "property": { "type": "Identifier", - "start": 152543, - "end": 152556, + "start": 153057, + "end": 153070, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 43 }, "end": { - "line": 3768, + "line": 3776, "column": 56 }, "identifierName": "visibleLayers" @@ -170456,15 +171517,15 @@ }, "property": { "type": "Identifier", - "start": 152557, - "end": 152558, + "start": 153071, + "end": 153072, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 57 }, "end": { - "line": 3768, + "line": 3776, "column": 58 }, "identifierName": "i" @@ -170479,100 +171540,100 @@ }, { "type": "ExpressionStatement", - "start": 152573, - "end": 152644, + "start": 153087, + "end": 153158, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 12 }, "end": { - "line": 3769, + "line": 3777, "column": 83 } }, "expression": { "type": "CallExpression", - "start": 152573, - "end": 152643, + "start": 153087, + "end": 153157, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 12 }, "end": { - "line": 3769, + "line": 3777, "column": 82 } }, "callee": { "type": "MemberExpression", - "start": 152573, - "end": 152620, + "start": 153087, + "end": 153134, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 12 }, "end": { - "line": 3769, + "line": 3777, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 152573, - "end": 152599, + "start": 153087, + "end": 153113, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 12 }, "end": { - "line": 3769, + "line": 3777, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 152573, - "end": 152587, + "start": 153087, + "end": 153101, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 12 }, "end": { - "line": 3769, + "line": 3777, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 152573, - "end": 152577, + "start": 153087, + "end": 153091, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 12 }, "end": { - "line": 3769, + "line": 3777, "column": 16 } } }, "property": { "type": "Identifier", - "start": 152578, - "end": 152587, + "start": 153092, + "end": 153101, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 17 }, "end": { - "line": 3769, + "line": 3777, "column": 26 }, "identifierName": "layerList" @@ -170583,15 +171644,15 @@ }, "property": { "type": "Identifier", - "start": 152588, - "end": 152598, + "start": 153102, + "end": 153112, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 27 }, "end": { - "line": 3769, + "line": 3777, "column": 37 }, "identifierName": "layerIndex" @@ -170602,15 +171663,15 @@ }, "property": { "type": "Identifier", - "start": 152600, - "end": 152620, + "start": 153114, + "end": 153134, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 39 }, "end": { - "line": 3769, + "line": 3777, "column": 59 }, "identifierName": "drawEdgesHighlighted" @@ -170622,15 +171683,15 @@ "arguments": [ { "type": "Identifier", - "start": 152621, - "end": 152632, + "start": 153135, + "end": 153146, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 60 }, "end": { - "line": 3769, + "line": 3777, "column": 71 }, "identifierName": "renderFlags" @@ -170639,15 +171700,15 @@ }, { "type": "Identifier", - "start": 152634, - "end": 152642, + "start": 153148, + "end": 153156, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 73 }, "end": { - "line": 3769, + "line": 3777, "column": 81 }, "identifierName": "frameCtx" @@ -170669,15 +171730,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 152321, - "end": 152336, + "start": 152835, + "end": 152850, "loc": { "start": { - "line": 3764, + "line": 3772, "column": 4 }, "end": { - "line": 3764, + "line": 3772, "column": 19 } } @@ -170687,15 +171748,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 152666, - "end": 152681, + "start": 153180, + "end": 153195, "loc": { "start": { - "line": 3773, + "line": 3781, "column": 4 }, "end": { - "line": 3773, + "line": 3781, "column": 19 } } @@ -170704,15 +171765,15 @@ }, { "type": "ClassMethod", - "start": 152686, - "end": 152999, + "start": 153200, + "end": 153513, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 4 }, "end": { - "line": 3780, + "line": 3788, "column": 5 } }, @@ -170720,15 +171781,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 152686, - "end": 152703, + "start": 153200, + "end": 153217, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 4 }, "end": { - "line": 3774, + "line": 3782, "column": 21 }, "identifierName": "drawEdgesSelected" @@ -170744,15 +171805,15 @@ "params": [ { "type": "Identifier", - "start": 152704, - "end": 152712, + "start": 153218, + "end": 153226, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 22 }, "end": { - "line": 3774, + "line": 3782, "column": 30 }, "identifierName": "frameCtx" @@ -170762,59 +171823,59 @@ ], "body": { "type": "BlockStatement", - "start": 152714, - "end": 152999, + "start": 153228, + "end": 153513, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 32 }, "end": { - "line": 3780, + "line": 3788, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 152724, - "end": 152761, + "start": 153238, + "end": 153275, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 8 }, "end": { - "line": 3775, + "line": 3783, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152730, - "end": 152760, + "start": 153244, + "end": 153274, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 14 }, "end": { - "line": 3775, + "line": 3783, "column": 44 } }, "id": { "type": "Identifier", - "start": 152730, - "end": 152741, + "start": 153244, + "end": 153255, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 14 }, "end": { - "line": 3775, + "line": 3783, "column": 25 }, "identifierName": "renderFlags" @@ -170823,44 +171884,44 @@ }, "init": { "type": "MemberExpression", - "start": 152744, - "end": 152760, + "start": 153258, + "end": 153274, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 28 }, "end": { - "line": 3775, + "line": 3783, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 152744, - "end": 152748, + "start": 153258, + "end": 153262, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 28 }, "end": { - "line": 3775, + "line": 3783, "column": 32 } } }, "property": { "type": "Identifier", - "start": 152749, - "end": 152760, + "start": 153263, + "end": 153274, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 33 }, "end": { - "line": 3775, + "line": 3783, "column": 44 }, "identifierName": "renderFlags" @@ -170875,58 +171936,58 @@ }, { "type": "ForStatement", - "start": 152770, - "end": 152993, + "start": 153284, + "end": 153507, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 8 }, "end": { - "line": 3779, + "line": 3787, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 152775, - "end": 152824, + "start": 153289, + "end": 153338, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 13 }, "end": { - "line": 3776, + "line": 3784, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152779, - "end": 152784, + "start": 153293, + "end": 153298, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 17 }, "end": { - "line": 3776, + "line": 3784, "column": 22 } }, "id": { "type": "Identifier", - "start": 152779, - "end": 152780, + "start": 153293, + "end": 153294, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 17 }, "end": { - "line": 3776, + "line": 3784, "column": 18 }, "identifierName": "i" @@ -170935,15 +171996,15 @@ }, "init": { "type": "NumericLiteral", - "start": 152783, - "end": 152784, + "start": 153297, + "end": 153298, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 21 }, "end": { - "line": 3776, + "line": 3784, "column": 22 } }, @@ -170956,29 +172017,29 @@ }, { "type": "VariableDeclarator", - "start": 152786, - "end": 152824, + "start": 153300, + "end": 153338, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 24 }, "end": { - "line": 3776, + "line": 3784, "column": 62 } }, "id": { "type": "Identifier", - "start": 152786, - "end": 152789, + "start": 153300, + "end": 153303, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 24 }, "end": { - "line": 3776, + "line": 3784, "column": 27 }, "identifierName": "len" @@ -170987,43 +172048,43 @@ }, "init": { "type": "MemberExpression", - "start": 152792, - "end": 152824, + "start": 153306, + "end": 153338, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 30 }, "end": { - "line": 3776, + "line": 3784, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 152792, - "end": 152817, + "start": 153306, + "end": 153331, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 30 }, "end": { - "line": 3776, + "line": 3784, "column": 55 } }, "object": { "type": "Identifier", - "start": 152792, - "end": 152803, + "start": 153306, + "end": 153317, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 30 }, "end": { - "line": 3776, + "line": 3784, "column": 41 }, "identifierName": "renderFlags" @@ -171032,15 +172093,15 @@ }, "property": { "type": "Identifier", - "start": 152804, - "end": 152817, + "start": 153318, + "end": 153331, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 42 }, "end": { - "line": 3776, + "line": 3784, "column": 55 }, "identifierName": "visibleLayers" @@ -171051,15 +172112,15 @@ }, "property": { "type": "Identifier", - "start": 152818, - "end": 152824, + "start": 153332, + "end": 153338, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 56 }, "end": { - "line": 3776, + "line": 3784, "column": 62 }, "identifierName": "length" @@ -171074,29 +172135,29 @@ }, "test": { "type": "BinaryExpression", - "start": 152826, - "end": 152833, + "start": 153340, + "end": 153347, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 64 }, "end": { - "line": 3776, + "line": 3784, "column": 71 } }, "left": { "type": "Identifier", - "start": 152826, - "end": 152827, + "start": 153340, + "end": 153341, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 64 }, "end": { - "line": 3776, + "line": 3784, "column": 65 }, "identifierName": "i" @@ -171106,15 +172167,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 152830, - "end": 152833, + "start": 153344, + "end": 153347, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 68 }, "end": { - "line": 3776, + "line": 3784, "column": 71 }, "identifierName": "len" @@ -171124,15 +172185,15 @@ }, "update": { "type": "UpdateExpression", - "start": 152835, - "end": 152838, + "start": 153349, + "end": 153352, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 73 }, "end": { - "line": 3776, + "line": 3784, "column": 76 } }, @@ -171140,15 +172201,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 152835, - "end": 152836, + "start": 153349, + "end": 153350, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 73 }, "end": { - "line": 3776, + "line": 3784, "column": 74 }, "identifierName": "i" @@ -171158,59 +172219,59 @@ }, "body": { "type": "BlockStatement", - "start": 152840, - "end": 152993, + "start": 153354, + "end": 153507, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 78 }, "end": { - "line": 3779, + "line": 3787, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 152854, - "end": 152902, + "start": 153368, + "end": 153416, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 12 }, "end": { - "line": 3777, + "line": 3785, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 152860, - "end": 152901, + "start": 153374, + "end": 153415, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 18 }, "end": { - "line": 3777, + "line": 3785, "column": 59 } }, "id": { "type": "Identifier", - "start": 152860, - "end": 152870, + "start": 153374, + "end": 153384, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 18 }, "end": { - "line": 3777, + "line": 3785, "column": 28 }, "identifierName": "layerIndex" @@ -171219,43 +172280,43 @@ }, "init": { "type": "MemberExpression", - "start": 152873, - "end": 152901, + "start": 153387, + "end": 153415, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 31 }, "end": { - "line": 3777, + "line": 3785, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 152873, - "end": 152898, + "start": 153387, + "end": 153412, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 31 }, "end": { - "line": 3777, + "line": 3785, "column": 56 } }, "object": { "type": "Identifier", - "start": 152873, - "end": 152884, + "start": 153387, + "end": 153398, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 31 }, "end": { - "line": 3777, + "line": 3785, "column": 42 }, "identifierName": "renderFlags" @@ -171264,15 +172325,15 @@ }, "property": { "type": "Identifier", - "start": 152885, - "end": 152898, + "start": 153399, + "end": 153412, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 43 }, "end": { - "line": 3777, + "line": 3785, "column": 56 }, "identifierName": "visibleLayers" @@ -171283,15 +172344,15 @@ }, "property": { "type": "Identifier", - "start": 152899, - "end": 152900, + "start": 153413, + "end": 153414, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 57 }, "end": { - "line": 3777, + "line": 3785, "column": 58 }, "identifierName": "i" @@ -171306,100 +172367,100 @@ }, { "type": "ExpressionStatement", - "start": 152915, - "end": 152983, + "start": 153429, + "end": 153497, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 12 }, "end": { - "line": 3778, + "line": 3786, "column": 80 } }, "expression": { "type": "CallExpression", - "start": 152915, - "end": 152982, + "start": 153429, + "end": 153496, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 12 }, "end": { - "line": 3778, + "line": 3786, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 152915, - "end": 152959, + "start": 153429, + "end": 153473, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 12 }, "end": { - "line": 3778, + "line": 3786, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 152915, - "end": 152941, + "start": 153429, + "end": 153455, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 12 }, "end": { - "line": 3778, + "line": 3786, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 152915, - "end": 152929, + "start": 153429, + "end": 153443, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 12 }, "end": { - "line": 3778, + "line": 3786, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 152915, - "end": 152919, + "start": 153429, + "end": 153433, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 12 }, "end": { - "line": 3778, + "line": 3786, "column": 16 } } }, "property": { "type": "Identifier", - "start": 152920, - "end": 152929, + "start": 153434, + "end": 153443, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 17 }, "end": { - "line": 3778, + "line": 3786, "column": 26 }, "identifierName": "layerList" @@ -171410,15 +172471,15 @@ }, "property": { "type": "Identifier", - "start": 152930, - "end": 152940, + "start": 153444, + "end": 153454, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 27 }, "end": { - "line": 3778, + "line": 3786, "column": 37 }, "identifierName": "layerIndex" @@ -171429,15 +172490,15 @@ }, "property": { "type": "Identifier", - "start": 152942, - "end": 152959, + "start": 153456, + "end": 153473, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 39 }, "end": { - "line": 3778, + "line": 3786, "column": 56 }, "identifierName": "drawEdgesSelected" @@ -171449,15 +172510,15 @@ "arguments": [ { "type": "Identifier", - "start": 152960, - "end": 152971, + "start": 153474, + "end": 153485, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 57 }, "end": { - "line": 3778, + "line": 3786, "column": 68 }, "identifierName": "renderFlags" @@ -171466,15 +172527,15 @@ }, { "type": "Identifier", - "start": 152973, - "end": 152981, + "start": 153487, + "end": 153495, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 70 }, "end": { - "line": 3778, + "line": 3786, "column": 78 }, "identifierName": "frameCtx" @@ -171496,15 +172557,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 152666, - "end": 152681, + "start": 153180, + "end": 153195, "loc": { "start": { - "line": 3773, + "line": 3781, "column": 4 }, "end": { - "line": 3773, + "line": 3781, "column": 19 } } @@ -171514,15 +172575,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 153005, - "end": 153032, + "start": 153519, + "end": 153546, "loc": { "start": { - "line": 3782, + "line": 3790, "column": 4 }, "end": { - "line": 3784, + "line": 3792, "column": 7 } } @@ -171531,15 +172592,15 @@ }, { "type": "ClassMethod", - "start": 153037, - "end": 153422, + "start": 153551, + "end": 153936, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 4 }, "end": { - "line": 3794, + "line": 3802, "column": 5 } }, @@ -171547,15 +172608,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 153037, - "end": 153050, + "start": 153551, + "end": 153564, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 4 }, "end": { - "line": 3785, + "line": 3793, "column": 17 }, "identifierName": "drawOcclusion" @@ -171571,15 +172632,15 @@ "params": [ { "type": "Identifier", - "start": 153051, - "end": 153059, + "start": 153565, + "end": 153573, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 18 }, "end": { - "line": 3785, + "line": 3793, "column": 26 }, "identifierName": "frameCtx" @@ -171589,87 +172650,87 @@ ], "body": { "type": "BlockStatement", - "start": 153061, - "end": 153422, + "start": 153575, + "end": 153936, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 28 }, "end": { - "line": 3794, + "line": 3802, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 153071, - "end": 153142, + "start": 153585, + "end": 153656, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 8 }, "end": { - "line": 3788, + "line": 3796, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 153075, - "end": 153109, + "start": 153589, + "end": 153623, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 12 }, "end": { - "line": 3786, + "line": 3794, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 153075, - "end": 153103, + "start": 153589, + "end": 153617, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 12 }, "end": { - "line": 3786, + "line": 3794, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 153075, - "end": 153079, + "start": 153589, + "end": 153593, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 12 }, "end": { - "line": 3786, + "line": 3794, "column": 16 } } }, "property": { "type": "Identifier", - "start": 153080, - "end": 153103, + "start": 153594, + "end": 153617, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 17 }, "end": { - "line": 3786, + "line": 3794, "column": 40 }, "identifierName": "numVisibleLayerPortions" @@ -171681,15 +172742,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 153108, - "end": 153109, + "start": 153622, + "end": 153623, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 45 }, "end": { - "line": 3786, + "line": 3794, "column": 46 } }, @@ -171702,30 +172763,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 153111, - "end": 153142, + "start": 153625, + "end": 153656, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 48 }, "end": { - "line": 3788, + "line": 3796, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 153125, - "end": 153132, + "start": 153639, + "end": 153646, "loc": { "start": { - "line": 3787, + "line": 3795, "column": 12 }, "end": { - "line": 3787, + "line": 3795, "column": 19 } }, @@ -171738,44 +172799,44 @@ }, { "type": "VariableDeclaration", - "start": 153151, - "end": 153188, + "start": 153665, + "end": 153702, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 8 }, "end": { - "line": 3789, + "line": 3797, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 153157, - "end": 153187, + "start": 153671, + "end": 153701, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 14 }, "end": { - "line": 3789, + "line": 3797, "column": 44 } }, "id": { "type": "Identifier", - "start": 153157, - "end": 153168, + "start": 153671, + "end": 153682, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 14 }, "end": { - "line": 3789, + "line": 3797, "column": 25 }, "identifierName": "renderFlags" @@ -171784,44 +172845,44 @@ }, "init": { "type": "MemberExpression", - "start": 153171, - "end": 153187, + "start": 153685, + "end": 153701, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 28 }, "end": { - "line": 3789, + "line": 3797, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 153171, - "end": 153175, + "start": 153685, + "end": 153689, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 28 }, "end": { - "line": 3789, + "line": 3797, "column": 32 } } }, "property": { "type": "Identifier", - "start": 153176, - "end": 153187, + "start": 153690, + "end": 153701, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 33 }, "end": { - "line": 3789, + "line": 3797, "column": 44 }, "identifierName": "renderFlags" @@ -171836,58 +172897,58 @@ }, { "type": "ForStatement", - "start": 153197, - "end": 153416, + "start": 153711, + "end": 153930, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 8 }, "end": { - "line": 3793, + "line": 3801, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 153202, - "end": 153251, + "start": 153716, + "end": 153765, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 13 }, "end": { - "line": 3790, + "line": 3798, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 153206, - "end": 153211, + "start": 153720, + "end": 153725, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 17 }, "end": { - "line": 3790, + "line": 3798, "column": 22 } }, "id": { "type": "Identifier", - "start": 153206, - "end": 153207, + "start": 153720, + "end": 153721, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 17 }, "end": { - "line": 3790, + "line": 3798, "column": 18 }, "identifierName": "i" @@ -171896,15 +172957,15 @@ }, "init": { "type": "NumericLiteral", - "start": 153210, - "end": 153211, + "start": 153724, + "end": 153725, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 21 }, "end": { - "line": 3790, + "line": 3798, "column": 22 } }, @@ -171917,29 +172978,29 @@ }, { "type": "VariableDeclarator", - "start": 153213, - "end": 153251, + "start": 153727, + "end": 153765, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 24 }, "end": { - "line": 3790, + "line": 3798, "column": 62 } }, "id": { "type": "Identifier", - "start": 153213, - "end": 153216, + "start": 153727, + "end": 153730, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 24 }, "end": { - "line": 3790, + "line": 3798, "column": 27 }, "identifierName": "len" @@ -171948,43 +173009,43 @@ }, "init": { "type": "MemberExpression", - "start": 153219, - "end": 153251, + "start": 153733, + "end": 153765, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 30 }, "end": { - "line": 3790, + "line": 3798, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 153219, - "end": 153244, + "start": 153733, + "end": 153758, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 30 }, "end": { - "line": 3790, + "line": 3798, "column": 55 } }, "object": { "type": "Identifier", - "start": 153219, - "end": 153230, + "start": 153733, + "end": 153744, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 30 }, "end": { - "line": 3790, + "line": 3798, "column": 41 }, "identifierName": "renderFlags" @@ -171993,15 +173054,15 @@ }, "property": { "type": "Identifier", - "start": 153231, - "end": 153244, + "start": 153745, + "end": 153758, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 42 }, "end": { - "line": 3790, + "line": 3798, "column": 55 }, "identifierName": "visibleLayers" @@ -172012,15 +173073,15 @@ }, "property": { "type": "Identifier", - "start": 153245, - "end": 153251, + "start": 153759, + "end": 153765, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 56 }, "end": { - "line": 3790, + "line": 3798, "column": 62 }, "identifierName": "length" @@ -172035,29 +173096,29 @@ }, "test": { "type": "BinaryExpression", - "start": 153253, - "end": 153260, + "start": 153767, + "end": 153774, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 64 }, "end": { - "line": 3790, + "line": 3798, "column": 71 } }, "left": { "type": "Identifier", - "start": 153253, - "end": 153254, + "start": 153767, + "end": 153768, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 64 }, "end": { - "line": 3790, + "line": 3798, "column": 65 }, "identifierName": "i" @@ -172067,15 +173128,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 153257, - "end": 153260, + "start": 153771, + "end": 153774, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 68 }, "end": { - "line": 3790, + "line": 3798, "column": 71 }, "identifierName": "len" @@ -172085,15 +173146,15 @@ }, "update": { "type": "UpdateExpression", - "start": 153262, - "end": 153265, + "start": 153776, + "end": 153779, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 73 }, "end": { - "line": 3790, + "line": 3798, "column": 76 } }, @@ -172101,15 +173162,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 153262, - "end": 153263, + "start": 153776, + "end": 153777, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 73 }, "end": { - "line": 3790, + "line": 3798, "column": 74 }, "identifierName": "i" @@ -172119,59 +173180,59 @@ }, "body": { "type": "BlockStatement", - "start": 153267, - "end": 153416, + "start": 153781, + "end": 153930, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 78 }, "end": { - "line": 3793, + "line": 3801, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 153281, - "end": 153329, + "start": 153795, + "end": 153843, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 12 }, "end": { - "line": 3791, + "line": 3799, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 153287, - "end": 153328, + "start": 153801, + "end": 153842, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 18 }, "end": { - "line": 3791, + "line": 3799, "column": 59 } }, "id": { "type": "Identifier", - "start": 153287, - "end": 153297, + "start": 153801, + "end": 153811, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 18 }, "end": { - "line": 3791, + "line": 3799, "column": 28 }, "identifierName": "layerIndex" @@ -172180,43 +173241,43 @@ }, "init": { "type": "MemberExpression", - "start": 153300, - "end": 153328, + "start": 153814, + "end": 153842, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 31 }, "end": { - "line": 3791, + "line": 3799, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 153300, - "end": 153325, + "start": 153814, + "end": 153839, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 31 }, "end": { - "line": 3791, + "line": 3799, "column": 56 } }, "object": { "type": "Identifier", - "start": 153300, - "end": 153311, + "start": 153814, + "end": 153825, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 31 }, "end": { - "line": 3791, + "line": 3799, "column": 42 }, "identifierName": "renderFlags" @@ -172225,15 +173286,15 @@ }, "property": { "type": "Identifier", - "start": 153312, - "end": 153325, + "start": 153826, + "end": 153839, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 43 }, "end": { - "line": 3791, + "line": 3799, "column": 56 }, "identifierName": "visibleLayers" @@ -172244,15 +173305,15 @@ }, "property": { "type": "Identifier", - "start": 153326, - "end": 153327, + "start": 153840, + "end": 153841, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 57 }, "end": { - "line": 3791, + "line": 3799, "column": 58 }, "identifierName": "i" @@ -172267,100 +173328,100 @@ }, { "type": "ExpressionStatement", - "start": 153342, - "end": 153406, + "start": 153856, + "end": 153920, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 12 }, "end": { - "line": 3792, + "line": 3800, "column": 76 } }, "expression": { "type": "CallExpression", - "start": 153342, - "end": 153405, + "start": 153856, + "end": 153919, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 12 }, "end": { - "line": 3792, + "line": 3800, "column": 75 } }, "callee": { "type": "MemberExpression", - "start": 153342, - "end": 153382, + "start": 153856, + "end": 153896, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 12 }, "end": { - "line": 3792, + "line": 3800, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 153342, - "end": 153368, + "start": 153856, + "end": 153882, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 12 }, "end": { - "line": 3792, + "line": 3800, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 153342, - "end": 153356, + "start": 153856, + "end": 153870, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 12 }, "end": { - "line": 3792, + "line": 3800, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 153342, - "end": 153346, + "start": 153856, + "end": 153860, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 12 }, "end": { - "line": 3792, + "line": 3800, "column": 16 } } }, "property": { "type": "Identifier", - "start": 153347, - "end": 153356, + "start": 153861, + "end": 153870, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 17 }, "end": { - "line": 3792, + "line": 3800, "column": 26 }, "identifierName": "layerList" @@ -172371,15 +173432,15 @@ }, "property": { "type": "Identifier", - "start": 153357, - "end": 153367, + "start": 153871, + "end": 153881, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 27 }, "end": { - "line": 3792, + "line": 3800, "column": 37 }, "identifierName": "layerIndex" @@ -172390,15 +173451,15 @@ }, "property": { "type": "Identifier", - "start": 153369, - "end": 153382, + "start": 153883, + "end": 153896, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 39 }, "end": { - "line": 3792, + "line": 3800, "column": 52 }, "identifierName": "drawOcclusion" @@ -172410,15 +173471,15 @@ "arguments": [ { "type": "Identifier", - "start": 153383, - "end": 153394, + "start": 153897, + "end": 153908, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 53 }, "end": { - "line": 3792, + "line": 3800, "column": 64 }, "identifierName": "renderFlags" @@ -172427,15 +173488,15 @@ }, { "type": "Identifier", - "start": 153396, - "end": 153404, + "start": 153910, + "end": 153918, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 66 }, "end": { - "line": 3792, + "line": 3800, "column": 74 }, "identifierName": "frameCtx" @@ -172457,15 +173518,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 153005, - "end": 153032, + "start": 153519, + "end": 153546, "loc": { "start": { - "line": 3782, + "line": 3790, "column": 4 }, "end": { - "line": 3784, + "line": 3792, "column": 7 } } @@ -172475,15 +173536,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 153428, - "end": 153455, + "start": 153942, + "end": 153969, "loc": { "start": { - "line": 3796, + "line": 3804, "column": 4 }, "end": { - "line": 3798, + "line": 3806, "column": 7 } } @@ -172492,15 +173553,15 @@ }, { "type": "ClassMethod", - "start": 153460, - "end": 153839, + "start": 153974, + "end": 154353, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 4 }, "end": { - "line": 3808, + "line": 3816, "column": 5 } }, @@ -172508,15 +173569,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 153460, - "end": 153470, + "start": 153974, + "end": 153984, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 4 }, "end": { - "line": 3799, + "line": 3807, "column": 14 }, "identifierName": "drawShadow" @@ -172532,15 +173593,15 @@ "params": [ { "type": "Identifier", - "start": 153471, - "end": 153479, + "start": 153985, + "end": 153993, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 15 }, "end": { - "line": 3799, + "line": 3807, "column": 23 }, "identifierName": "frameCtx" @@ -172550,87 +173611,87 @@ ], "body": { "type": "BlockStatement", - "start": 153481, - "end": 153839, + "start": 153995, + "end": 154353, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 25 }, "end": { - "line": 3808, + "line": 3816, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 153491, - "end": 153562, + "start": 154005, + "end": 154076, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 8 }, "end": { - "line": 3802, + "line": 3810, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 153495, - "end": 153529, + "start": 154009, + "end": 154043, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 12 }, "end": { - "line": 3800, + "line": 3808, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 153495, - "end": 153523, + "start": 154009, + "end": 154037, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 12 }, "end": { - "line": 3800, + "line": 3808, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 153495, - "end": 153499, + "start": 154009, + "end": 154013, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 12 }, "end": { - "line": 3800, + "line": 3808, "column": 16 } } }, "property": { "type": "Identifier", - "start": 153500, - "end": 153523, + "start": 154014, + "end": 154037, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 17 }, "end": { - "line": 3800, + "line": 3808, "column": 40 }, "identifierName": "numVisibleLayerPortions" @@ -172642,15 +173703,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 153528, - "end": 153529, + "start": 154042, + "end": 154043, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 45 }, "end": { - "line": 3800, + "line": 3808, "column": 46 } }, @@ -172663,30 +173724,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 153531, - "end": 153562, + "start": 154045, + "end": 154076, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 48 }, "end": { - "line": 3802, + "line": 3810, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 153545, - "end": 153552, + "start": 154059, + "end": 154066, "loc": { "start": { - "line": 3801, + "line": 3809, "column": 12 }, "end": { - "line": 3801, + "line": 3809, "column": 19 } }, @@ -172699,44 +173760,44 @@ }, { "type": "VariableDeclaration", - "start": 153571, - "end": 153608, + "start": 154085, + "end": 154122, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 8 }, "end": { - "line": 3803, + "line": 3811, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 153577, - "end": 153607, + "start": 154091, + "end": 154121, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 14 }, "end": { - "line": 3803, + "line": 3811, "column": 44 } }, "id": { "type": "Identifier", - "start": 153577, - "end": 153588, + "start": 154091, + "end": 154102, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 14 }, "end": { - "line": 3803, + "line": 3811, "column": 25 }, "identifierName": "renderFlags" @@ -172745,44 +173806,44 @@ }, "init": { "type": "MemberExpression", - "start": 153591, - "end": 153607, + "start": 154105, + "end": 154121, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 28 }, "end": { - "line": 3803, + "line": 3811, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 153591, - "end": 153595, + "start": 154105, + "end": 154109, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 28 }, "end": { - "line": 3803, + "line": 3811, "column": 32 } } }, "property": { "type": "Identifier", - "start": 153596, - "end": 153607, + "start": 154110, + "end": 154121, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 33 }, "end": { - "line": 3803, + "line": 3811, "column": 44 }, "identifierName": "renderFlags" @@ -172797,58 +173858,58 @@ }, { "type": "ForStatement", - "start": 153617, - "end": 153833, + "start": 154131, + "end": 154347, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 8 }, "end": { - "line": 3807, + "line": 3815, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 153622, - "end": 153671, + "start": 154136, + "end": 154185, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 13 }, "end": { - "line": 3804, + "line": 3812, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 153626, - "end": 153631, + "start": 154140, + "end": 154145, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 17 }, "end": { - "line": 3804, + "line": 3812, "column": 22 } }, "id": { "type": "Identifier", - "start": 153626, - "end": 153627, + "start": 154140, + "end": 154141, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 17 }, "end": { - "line": 3804, + "line": 3812, "column": 18 }, "identifierName": "i" @@ -172857,15 +173918,15 @@ }, "init": { "type": "NumericLiteral", - "start": 153630, - "end": 153631, + "start": 154144, + "end": 154145, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 21 }, "end": { - "line": 3804, + "line": 3812, "column": 22 } }, @@ -172878,29 +173939,29 @@ }, { "type": "VariableDeclarator", - "start": 153633, - "end": 153671, + "start": 154147, + "end": 154185, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 24 }, "end": { - "line": 3804, + "line": 3812, "column": 62 } }, "id": { "type": "Identifier", - "start": 153633, - "end": 153636, + "start": 154147, + "end": 154150, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 24 }, "end": { - "line": 3804, + "line": 3812, "column": 27 }, "identifierName": "len" @@ -172909,43 +173970,43 @@ }, "init": { "type": "MemberExpression", - "start": 153639, - "end": 153671, + "start": 154153, + "end": 154185, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 30 }, "end": { - "line": 3804, + "line": 3812, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 153639, - "end": 153664, + "start": 154153, + "end": 154178, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 30 }, "end": { - "line": 3804, + "line": 3812, "column": 55 } }, "object": { "type": "Identifier", - "start": 153639, - "end": 153650, + "start": 154153, + "end": 154164, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 30 }, "end": { - "line": 3804, + "line": 3812, "column": 41 }, "identifierName": "renderFlags" @@ -172954,15 +174015,15 @@ }, "property": { "type": "Identifier", - "start": 153651, - "end": 153664, + "start": 154165, + "end": 154178, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 42 }, "end": { - "line": 3804, + "line": 3812, "column": 55 }, "identifierName": "visibleLayers" @@ -172973,15 +174034,15 @@ }, "property": { "type": "Identifier", - "start": 153665, - "end": 153671, + "start": 154179, + "end": 154185, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 56 }, "end": { - "line": 3804, + "line": 3812, "column": 62 }, "identifierName": "length" @@ -172996,29 +174057,29 @@ }, "test": { "type": "BinaryExpression", - "start": 153673, - "end": 153680, + "start": 154187, + "end": 154194, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 64 }, "end": { - "line": 3804, + "line": 3812, "column": 71 } }, "left": { "type": "Identifier", - "start": 153673, - "end": 153674, + "start": 154187, + "end": 154188, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 64 }, "end": { - "line": 3804, + "line": 3812, "column": 65 }, "identifierName": "i" @@ -173028,15 +174089,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 153677, - "end": 153680, + "start": 154191, + "end": 154194, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 68 }, "end": { - "line": 3804, + "line": 3812, "column": 71 }, "identifierName": "len" @@ -173046,15 +174107,15 @@ }, "update": { "type": "UpdateExpression", - "start": 153682, - "end": 153685, + "start": 154196, + "end": 154199, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 73 }, "end": { - "line": 3804, + "line": 3812, "column": 76 } }, @@ -173062,15 +174123,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 153682, - "end": 153683, + "start": 154196, + "end": 154197, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 73 }, "end": { - "line": 3804, + "line": 3812, "column": 74 }, "identifierName": "i" @@ -173080,59 +174141,59 @@ }, "body": { "type": "BlockStatement", - "start": 153687, - "end": 153833, + "start": 154201, + "end": 154347, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 78 }, "end": { - "line": 3807, + "line": 3815, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 153701, - "end": 153749, + "start": 154215, + "end": 154263, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 12 }, "end": { - "line": 3805, + "line": 3813, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 153707, - "end": 153748, + "start": 154221, + "end": 154262, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 18 }, "end": { - "line": 3805, + "line": 3813, "column": 59 } }, "id": { "type": "Identifier", - "start": 153707, - "end": 153717, + "start": 154221, + "end": 154231, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 18 }, "end": { - "line": 3805, + "line": 3813, "column": 28 }, "identifierName": "layerIndex" @@ -173141,43 +174202,43 @@ }, "init": { "type": "MemberExpression", - "start": 153720, - "end": 153748, + "start": 154234, + "end": 154262, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 31 }, "end": { - "line": 3805, + "line": 3813, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 153720, - "end": 153745, + "start": 154234, + "end": 154259, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 31 }, "end": { - "line": 3805, + "line": 3813, "column": 56 } }, "object": { "type": "Identifier", - "start": 153720, - "end": 153731, + "start": 154234, + "end": 154245, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 31 }, "end": { - "line": 3805, + "line": 3813, "column": 42 }, "identifierName": "renderFlags" @@ -173186,15 +174247,15 @@ }, "property": { "type": "Identifier", - "start": 153732, - "end": 153745, + "start": 154246, + "end": 154259, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 43 }, "end": { - "line": 3805, + "line": 3813, "column": 56 }, "identifierName": "visibleLayers" @@ -173205,15 +174266,15 @@ }, "property": { "type": "Identifier", - "start": 153746, - "end": 153747, + "start": 154260, + "end": 154261, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 57 }, "end": { - "line": 3805, + "line": 3813, "column": 58 }, "identifierName": "i" @@ -173228,100 +174289,100 @@ }, { "type": "ExpressionStatement", - "start": 153762, - "end": 153823, + "start": 154276, + "end": 154337, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 12 }, "end": { - "line": 3806, + "line": 3814, "column": 73 } }, "expression": { "type": "CallExpression", - "start": 153762, - "end": 153822, + "start": 154276, + "end": 154336, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 12 }, "end": { - "line": 3806, + "line": 3814, "column": 72 } }, "callee": { "type": "MemberExpression", - "start": 153762, - "end": 153799, + "start": 154276, + "end": 154313, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 12 }, "end": { - "line": 3806, + "line": 3814, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 153762, - "end": 153788, + "start": 154276, + "end": 154302, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 12 }, "end": { - "line": 3806, + "line": 3814, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 153762, - "end": 153776, + "start": 154276, + "end": 154290, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 12 }, "end": { - "line": 3806, + "line": 3814, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 153762, - "end": 153766, + "start": 154276, + "end": 154280, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 12 }, "end": { - "line": 3806, + "line": 3814, "column": 16 } } }, "property": { "type": "Identifier", - "start": 153767, - "end": 153776, + "start": 154281, + "end": 154290, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 17 }, "end": { - "line": 3806, + "line": 3814, "column": 26 }, "identifierName": "layerList" @@ -173332,15 +174393,15 @@ }, "property": { "type": "Identifier", - "start": 153777, - "end": 153787, + "start": 154291, + "end": 154301, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 27 }, "end": { - "line": 3806, + "line": 3814, "column": 37 }, "identifierName": "layerIndex" @@ -173351,15 +174412,15 @@ }, "property": { "type": "Identifier", - "start": 153789, - "end": 153799, + "start": 154303, + "end": 154313, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 39 }, "end": { - "line": 3806, + "line": 3814, "column": 49 }, "identifierName": "drawShadow" @@ -173371,15 +174432,15 @@ "arguments": [ { "type": "Identifier", - "start": 153800, - "end": 153811, + "start": 154314, + "end": 154325, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 50 }, "end": { - "line": 3806, + "line": 3814, "column": 61 }, "identifierName": "renderFlags" @@ -173388,15 +174449,15 @@ }, { "type": "Identifier", - "start": 153813, - "end": 153821, + "start": 154327, + "end": 154335, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 63 }, "end": { - "line": 3806, + "line": 3814, "column": 71 }, "identifierName": "frameCtx" @@ -173418,15 +174479,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 153428, - "end": 153455, + "start": 153942, + "end": 153969, "loc": { "start": { - "line": 3796, + "line": 3804, "column": 4 }, "end": { - "line": 3798, + "line": 3806, "column": 7 } } @@ -173436,15 +174497,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 153845, - "end": 153860, + "start": 154359, + "end": 154374, "loc": { "start": { - "line": 3810, + "line": 3818, "column": 4 }, "end": { - "line": 3810, + "line": 3818, "column": 19 } } @@ -173453,15 +174514,15 @@ }, { "type": "ClassMethod", - "start": 153865, - "end": 154378, + "start": 154379, + "end": 154892, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 4 }, "end": { - "line": 3823, + "line": 3831, "column": 5 } }, @@ -173469,15 +174530,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 153865, - "end": 153880, + "start": 154379, + "end": 154394, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 4 }, "end": { - "line": 3811, + "line": 3819, "column": 19 }, "identifierName": "setPickMatrices" @@ -173493,15 +174554,15 @@ "params": [ { "type": "Identifier", - "start": 153881, - "end": 153895, + "start": 154395, + "end": 154409, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 20 }, "end": { - "line": 3811, + "line": 3819, "column": 34 }, "identifierName": "pickViewMatrix" @@ -173510,15 +174571,15 @@ }, { "type": "Identifier", - "start": 153897, - "end": 153911, + "start": 154411, + "end": 154425, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 36 }, "end": { - "line": 3811, + "line": 3819, "column": 50 }, "identifierName": "pickProjMatrix" @@ -173528,87 +174589,87 @@ ], "body": { "type": "BlockStatement", - "start": 153913, - "end": 154378, + "start": 154427, + "end": 154892, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 52 }, "end": { - "line": 3823, + "line": 3831, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 153923, - "end": 153995, + "start": 154437, + "end": 154509, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 8 }, "end": { - "line": 3814, + "line": 3822, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 153927, - "end": 153962, + "start": 154441, + "end": 154476, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 12 }, "end": { - "line": 3812, + "line": 3820, "column": 47 } }, "left": { "type": "MemberExpression", - "start": 153927, - "end": 153956, + "start": 154441, + "end": 154470, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 12 }, "end": { - "line": 3812, + "line": 3820, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 153927, - "end": 153931, + "start": 154441, + "end": 154445, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 12 }, "end": { - "line": 3812, + "line": 3820, "column": 16 } } }, "property": { "type": "Identifier", - "start": 153932, - "end": 153956, + "start": 154446, + "end": 154470, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 17 }, "end": { - "line": 3812, + "line": 3820, "column": 41 }, "identifierName": "_numVisibleLayerPortions" @@ -173620,15 +174681,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 153961, - "end": 153962, + "start": 154475, + "end": 154476, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 46 }, "end": { - "line": 3812, + "line": 3820, "column": 47 } }, @@ -173641,30 +174702,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 153964, - "end": 153995, + "start": 154478, + "end": 154509, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 49 }, "end": { - "line": 3814, + "line": 3822, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 153978, - "end": 153985, + "start": 154492, + "end": 154499, "loc": { "start": { - "line": 3813, + "line": 3821, "column": 12 }, "end": { - "line": 3813, + "line": 3821, "column": 19 } }, @@ -173677,44 +174738,44 @@ }, { "type": "VariableDeclaration", - "start": 154004, - "end": 154041, + "start": 154518, + "end": 154555, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 8 }, "end": { - "line": 3815, + "line": 3823, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 154010, - "end": 154040, + "start": 154524, + "end": 154554, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 14 }, "end": { - "line": 3815, + "line": 3823, "column": 44 } }, "id": { "type": "Identifier", - "start": 154010, - "end": 154021, + "start": 154524, + "end": 154535, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 14 }, "end": { - "line": 3815, + "line": 3823, "column": 25 }, "identifierName": "renderFlags" @@ -173723,44 +174784,44 @@ }, "init": { "type": "MemberExpression", - "start": 154024, - "end": 154040, + "start": 154538, + "end": 154554, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 28 }, "end": { - "line": 3815, + "line": 3823, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 154024, - "end": 154028, + "start": 154538, + "end": 154542, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 28 }, "end": { - "line": 3815, + "line": 3823, "column": 32 } } }, "property": { "type": "Identifier", - "start": 154029, - "end": 154040, + "start": 154543, + "end": 154554, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 33 }, "end": { - "line": 3815, + "line": 3823, "column": 44 }, "identifierName": "renderFlags" @@ -173775,58 +174836,58 @@ }, { "type": "ForStatement", - "start": 154050, - "end": 154372, + "start": 154564, + "end": 154886, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 8 }, "end": { - "line": 3822, + "line": 3830, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 154055, - "end": 154104, + "start": 154569, + "end": 154618, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 13 }, "end": { - "line": 3816, + "line": 3824, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 154059, - "end": 154064, + "start": 154573, + "end": 154578, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 17 }, "end": { - "line": 3816, + "line": 3824, "column": 22 } }, "id": { "type": "Identifier", - "start": 154059, - "end": 154060, + "start": 154573, + "end": 154574, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 17 }, "end": { - "line": 3816, + "line": 3824, "column": 18 }, "identifierName": "i" @@ -173835,15 +174896,15 @@ }, "init": { "type": "NumericLiteral", - "start": 154063, - "end": 154064, + "start": 154577, + "end": 154578, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 21 }, "end": { - "line": 3816, + "line": 3824, "column": 22 } }, @@ -173856,29 +174917,29 @@ }, { "type": "VariableDeclarator", - "start": 154066, - "end": 154104, + "start": 154580, + "end": 154618, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 24 }, "end": { - "line": 3816, + "line": 3824, "column": 62 } }, "id": { "type": "Identifier", - "start": 154066, - "end": 154069, + "start": 154580, + "end": 154583, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 24 }, "end": { - "line": 3816, + "line": 3824, "column": 27 }, "identifierName": "len" @@ -173887,43 +174948,43 @@ }, "init": { "type": "MemberExpression", - "start": 154072, - "end": 154104, + "start": 154586, + "end": 154618, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 30 }, "end": { - "line": 3816, + "line": 3824, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 154072, - "end": 154097, + "start": 154586, + "end": 154611, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 30 }, "end": { - "line": 3816, + "line": 3824, "column": 55 } }, "object": { "type": "Identifier", - "start": 154072, - "end": 154083, + "start": 154586, + "end": 154597, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 30 }, "end": { - "line": 3816, + "line": 3824, "column": 41 }, "identifierName": "renderFlags" @@ -173932,15 +174993,15 @@ }, "property": { "type": "Identifier", - "start": 154084, - "end": 154097, + "start": 154598, + "end": 154611, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 42 }, "end": { - "line": 3816, + "line": 3824, "column": 55 }, "identifierName": "visibleLayers" @@ -173951,15 +175012,15 @@ }, "property": { "type": "Identifier", - "start": 154098, - "end": 154104, + "start": 154612, + "end": 154618, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 56 }, "end": { - "line": 3816, + "line": 3824, "column": 62 }, "identifierName": "length" @@ -173974,29 +175035,29 @@ }, "test": { "type": "BinaryExpression", - "start": 154106, - "end": 154113, + "start": 154620, + "end": 154627, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 64 }, "end": { - "line": 3816, + "line": 3824, "column": 71 } }, "left": { "type": "Identifier", - "start": 154106, - "end": 154107, + "start": 154620, + "end": 154621, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 64 }, "end": { - "line": 3816, + "line": 3824, "column": 65 }, "identifierName": "i" @@ -174006,15 +175067,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 154110, - "end": 154113, + "start": 154624, + "end": 154627, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 68 }, "end": { - "line": 3816, + "line": 3824, "column": 71 }, "identifierName": "len" @@ -174024,15 +175085,15 @@ }, "update": { "type": "UpdateExpression", - "start": 154115, - "end": 154118, + "start": 154629, + "end": 154632, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 73 }, "end": { - "line": 3816, + "line": 3824, "column": 76 } }, @@ -174040,15 +175101,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 154115, - "end": 154116, + "start": 154629, + "end": 154630, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 73 }, "end": { - "line": 3816, + "line": 3824, "column": 74 }, "identifierName": "i" @@ -174058,59 +175119,59 @@ }, "body": { "type": "BlockStatement", - "start": 154120, - "end": 154372, + "start": 154634, + "end": 154886, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 78 }, "end": { - "line": 3822, + "line": 3830, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 154134, - "end": 154182, + "start": 154648, + "end": 154696, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 12 }, "end": { - "line": 3817, + "line": 3825, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 154140, - "end": 154181, + "start": 154654, + "end": 154695, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 18 }, "end": { - "line": 3817, + "line": 3825, "column": 59 } }, "id": { "type": "Identifier", - "start": 154140, - "end": 154150, + "start": 154654, + "end": 154664, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 18 }, "end": { - "line": 3817, + "line": 3825, "column": 28 }, "identifierName": "layerIndex" @@ -174119,43 +175180,43 @@ }, "init": { "type": "MemberExpression", - "start": 154153, - "end": 154181, + "start": 154667, + "end": 154695, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 31 }, "end": { - "line": 3817, + "line": 3825, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 154153, - "end": 154178, + "start": 154667, + "end": 154692, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 31 }, "end": { - "line": 3817, + "line": 3825, "column": 56 } }, "object": { "type": "Identifier", - "start": 154153, - "end": 154164, + "start": 154667, + "end": 154678, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 31 }, "end": { - "line": 3817, + "line": 3825, "column": 42 }, "identifierName": "renderFlags" @@ -174164,15 +175225,15 @@ }, "property": { "type": "Identifier", - "start": 154165, - "end": 154178, + "start": 154679, + "end": 154692, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 43 }, "end": { - "line": 3817, + "line": 3825, "column": 56 }, "identifierName": "visibleLayers" @@ -174183,15 +175244,15 @@ }, "property": { "type": "Identifier", - "start": 154179, - "end": 154180, + "start": 154693, + "end": 154694, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 57 }, "end": { - "line": 3817, + "line": 3825, "column": 58 }, "identifierName": "i" @@ -174206,44 +175267,44 @@ }, { "type": "VariableDeclaration", - "start": 154195, - "end": 154236, + "start": 154709, + "end": 154750, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 12 }, "end": { - "line": 3818, + "line": 3826, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 154201, - "end": 154235, + "start": 154715, + "end": 154749, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 18 }, "end": { - "line": 3818, + "line": 3826, "column": 52 } }, "id": { "type": "Identifier", - "start": 154201, - "end": 154206, + "start": 154715, + "end": 154720, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 18 }, "end": { - "line": 3818, + "line": 3826, "column": 23 }, "identifierName": "layer" @@ -174252,58 +175313,58 @@ }, "init": { "type": "MemberExpression", - "start": 154209, - "end": 154235, + "start": 154723, + "end": 154749, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 26 }, "end": { - "line": 3818, + "line": 3826, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 154209, - "end": 154223, + "start": 154723, + "end": 154737, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 26 }, "end": { - "line": 3818, + "line": 3826, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 154209, - "end": 154213, + "start": 154723, + "end": 154727, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 26 }, "end": { - "line": 3818, + "line": 3826, "column": 30 } } }, "property": { "type": "Identifier", - "start": 154214, - "end": 154223, + "start": 154728, + "end": 154737, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 31 }, "end": { - "line": 3818, + "line": 3826, "column": 40 }, "identifierName": "layerList" @@ -174314,15 +175375,15 @@ }, "property": { "type": "Identifier", - "start": 154224, - "end": 154234, + "start": 154738, + "end": 154748, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 41 }, "end": { - "line": 3818, + "line": 3826, "column": 51 }, "identifierName": "layerIndex" @@ -174337,43 +175398,43 @@ }, { "type": "IfStatement", - "start": 154249, - "end": 154362, + "start": 154763, + "end": 154876, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 12 }, "end": { - "line": 3821, + "line": 3829, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 154253, - "end": 154274, + "start": 154767, + "end": 154788, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 16 }, "end": { - "line": 3819, + "line": 3827, "column": 37 } }, "object": { "type": "Identifier", - "start": 154253, - "end": 154258, + "start": 154767, + "end": 154772, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 16 }, "end": { - "line": 3819, + "line": 3827, "column": 21 }, "identifierName": "layer" @@ -174382,15 +175443,15 @@ }, "property": { "type": "Identifier", - "start": 154259, - "end": 154274, + "start": 154773, + "end": 154788, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 22 }, "end": { - "line": 3819, + "line": 3827, "column": 37 }, "identifierName": "setPickMatrices" @@ -174401,72 +175462,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 154276, - "end": 154362, + "start": 154790, + "end": 154876, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 39 }, "end": { - "line": 3821, + "line": 3829, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 154294, - "end": 154348, + "start": 154808, + "end": 154862, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 16 }, "end": { - "line": 3820, + "line": 3828, "column": 70 } }, "expression": { "type": "CallExpression", - "start": 154294, - "end": 154347, + "start": 154808, + "end": 154861, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 16 }, "end": { - "line": 3820, + "line": 3828, "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 154294, - "end": 154315, + "start": 154808, + "end": 154829, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 16 }, "end": { - "line": 3820, + "line": 3828, "column": 37 } }, "object": { "type": "Identifier", - "start": 154294, - "end": 154299, + "start": 154808, + "end": 154813, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 16 }, "end": { - "line": 3820, + "line": 3828, "column": 21 }, "identifierName": "layer" @@ -174475,15 +175536,15 @@ }, "property": { "type": "Identifier", - "start": 154300, - "end": 154315, + "start": 154814, + "end": 154829, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 22 }, "end": { - "line": 3820, + "line": 3828, "column": 37 }, "identifierName": "setPickMatrices" @@ -174495,15 +175556,15 @@ "arguments": [ { "type": "Identifier", - "start": 154316, - "end": 154330, + "start": 154830, + "end": 154844, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 38 }, "end": { - "line": 3820, + "line": 3828, "column": 52 }, "identifierName": "pickViewMatrix" @@ -174512,15 +175573,15 @@ }, { "type": "Identifier", - "start": 154332, - "end": 154346, + "start": 154846, + "end": 154860, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 54 }, "end": { - "line": 3820, + "line": 3828, "column": 68 }, "identifierName": "pickProjMatrix" @@ -174547,15 +175608,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 153845, - "end": 153860, + "start": 154359, + "end": 154374, "loc": { "start": { - "line": 3810, + "line": 3818, "column": 4 }, "end": { - "line": 3810, + "line": 3818, "column": 19 } } @@ -174565,15 +175626,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 154384, - "end": 154399, + "start": 154898, + "end": 154913, "loc": { "start": { - "line": 3825, + "line": 3833, "column": 4 }, "end": { - "line": 3825, + "line": 3833, "column": 19 } } @@ -174582,15 +175643,15 @@ }, { "type": "ClassMethod", - "start": 154404, - "end": 154787, + "start": 154918, + "end": 155301, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 4 }, "end": { - "line": 3835, + "line": 3843, "column": 5 } }, @@ -174598,15 +175659,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 154404, - "end": 154416, + "start": 154918, + "end": 154930, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 4 }, "end": { - "line": 3826, + "line": 3834, "column": 16 }, "identifierName": "drawPickMesh" @@ -174622,15 +175683,15 @@ "params": [ { "type": "Identifier", - "start": 154417, - "end": 154425, + "start": 154931, + "end": 154939, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 17 }, "end": { - "line": 3826, + "line": 3834, "column": 25 }, "identifierName": "frameCtx" @@ -174640,87 +175701,87 @@ ], "body": { "type": "BlockStatement", - "start": 154427, - "end": 154787, + "start": 154941, + "end": 155301, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 27 }, "end": { - "line": 3835, + "line": 3843, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 154437, - "end": 154508, + "start": 154951, + "end": 155022, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 8 }, "end": { - "line": 3829, + "line": 3837, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 154441, - "end": 154475, + "start": 154955, + "end": 154989, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 12 }, "end": { - "line": 3827, + "line": 3835, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 154441, - "end": 154469, + "start": 154955, + "end": 154983, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 12 }, "end": { - "line": 3827, + "line": 3835, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 154441, - "end": 154445, + "start": 154955, + "end": 154959, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 12 }, "end": { - "line": 3827, + "line": 3835, "column": 16 } } }, "property": { "type": "Identifier", - "start": 154446, - "end": 154469, + "start": 154960, + "end": 154983, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 17 }, "end": { - "line": 3827, + "line": 3835, "column": 40 }, "identifierName": "numVisibleLayerPortions" @@ -174732,15 +175793,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 154474, - "end": 154475, + "start": 154988, + "end": 154989, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 45 }, "end": { - "line": 3827, + "line": 3835, "column": 46 } }, @@ -174753,30 +175814,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 154477, - "end": 154508, + "start": 154991, + "end": 155022, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 48 }, "end": { - "line": 3829, + "line": 3837, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 154491, - "end": 154498, + "start": 155005, + "end": 155012, "loc": { "start": { - "line": 3828, + "line": 3836, "column": 12 }, "end": { - "line": 3828, + "line": 3836, "column": 19 } }, @@ -174789,44 +175850,44 @@ }, { "type": "VariableDeclaration", - "start": 154517, - "end": 154554, + "start": 155031, + "end": 155068, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 8 }, "end": { - "line": 3830, + "line": 3838, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 154523, - "end": 154553, + "start": 155037, + "end": 155067, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 14 }, "end": { - "line": 3830, + "line": 3838, "column": 44 } }, "id": { "type": "Identifier", - "start": 154523, - "end": 154534, + "start": 155037, + "end": 155048, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 14 }, "end": { - "line": 3830, + "line": 3838, "column": 25 }, "identifierName": "renderFlags" @@ -174835,44 +175896,44 @@ }, "init": { "type": "MemberExpression", - "start": 154537, - "end": 154553, + "start": 155051, + "end": 155067, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 28 }, "end": { - "line": 3830, + "line": 3838, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 154537, - "end": 154541, + "start": 155051, + "end": 155055, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 28 }, "end": { - "line": 3830, + "line": 3838, "column": 32 } } }, "property": { "type": "Identifier", - "start": 154542, - "end": 154553, + "start": 155056, + "end": 155067, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 33 }, "end": { - "line": 3830, + "line": 3838, "column": 44 }, "identifierName": "renderFlags" @@ -174887,58 +175948,58 @@ }, { "type": "ForStatement", - "start": 154563, - "end": 154781, + "start": 155077, + "end": 155295, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 8 }, "end": { - "line": 3834, + "line": 3842, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 154568, - "end": 154617, + "start": 155082, + "end": 155131, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 13 }, "end": { - "line": 3831, + "line": 3839, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 154572, - "end": 154577, + "start": 155086, + "end": 155091, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 17 }, "end": { - "line": 3831, + "line": 3839, "column": 22 } }, "id": { "type": "Identifier", - "start": 154572, - "end": 154573, + "start": 155086, + "end": 155087, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 17 }, "end": { - "line": 3831, + "line": 3839, "column": 18 }, "identifierName": "i" @@ -174947,15 +176008,15 @@ }, "init": { "type": "NumericLiteral", - "start": 154576, - "end": 154577, + "start": 155090, + "end": 155091, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 21 }, "end": { - "line": 3831, + "line": 3839, "column": 22 } }, @@ -174968,29 +176029,29 @@ }, { "type": "VariableDeclarator", - "start": 154579, - "end": 154617, + "start": 155093, + "end": 155131, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 24 }, "end": { - "line": 3831, + "line": 3839, "column": 62 } }, "id": { "type": "Identifier", - "start": 154579, - "end": 154582, + "start": 155093, + "end": 155096, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 24 }, "end": { - "line": 3831, + "line": 3839, "column": 27 }, "identifierName": "len" @@ -174999,43 +176060,43 @@ }, "init": { "type": "MemberExpression", - "start": 154585, - "end": 154617, + "start": 155099, + "end": 155131, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 30 }, "end": { - "line": 3831, + "line": 3839, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 154585, - "end": 154610, + "start": 155099, + "end": 155124, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 30 }, "end": { - "line": 3831, + "line": 3839, "column": 55 } }, "object": { "type": "Identifier", - "start": 154585, - "end": 154596, + "start": 155099, + "end": 155110, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 30 }, "end": { - "line": 3831, + "line": 3839, "column": 41 }, "identifierName": "renderFlags" @@ -175044,15 +176105,15 @@ }, "property": { "type": "Identifier", - "start": 154597, - "end": 154610, + "start": 155111, + "end": 155124, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 42 }, "end": { - "line": 3831, + "line": 3839, "column": 55 }, "identifierName": "visibleLayers" @@ -175063,15 +176124,15 @@ }, "property": { "type": "Identifier", - "start": 154611, - "end": 154617, + "start": 155125, + "end": 155131, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 56 }, "end": { - "line": 3831, + "line": 3839, "column": 62 }, "identifierName": "length" @@ -175086,29 +176147,29 @@ }, "test": { "type": "BinaryExpression", - "start": 154619, - "end": 154626, + "start": 155133, + "end": 155140, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 64 }, "end": { - "line": 3831, + "line": 3839, "column": 71 } }, "left": { "type": "Identifier", - "start": 154619, - "end": 154620, + "start": 155133, + "end": 155134, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 64 }, "end": { - "line": 3831, + "line": 3839, "column": 65 }, "identifierName": "i" @@ -175118,15 +176179,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 154623, - "end": 154626, + "start": 155137, + "end": 155140, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 68 }, "end": { - "line": 3831, + "line": 3839, "column": 71 }, "identifierName": "len" @@ -175136,15 +176197,15 @@ }, "update": { "type": "UpdateExpression", - "start": 154628, - "end": 154631, + "start": 155142, + "end": 155145, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 73 }, "end": { - "line": 3831, + "line": 3839, "column": 76 } }, @@ -175152,15 +176213,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 154628, - "end": 154629, + "start": 155142, + "end": 155143, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 73 }, "end": { - "line": 3831, + "line": 3839, "column": 74 }, "identifierName": "i" @@ -175170,59 +176231,59 @@ }, "body": { "type": "BlockStatement", - "start": 154633, - "end": 154781, + "start": 155147, + "end": 155295, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 78 }, "end": { - "line": 3834, + "line": 3842, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 154647, - "end": 154695, + "start": 155161, + "end": 155209, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 12 }, "end": { - "line": 3832, + "line": 3840, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 154653, - "end": 154694, + "start": 155167, + "end": 155208, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 18 }, "end": { - "line": 3832, + "line": 3840, "column": 59 } }, "id": { "type": "Identifier", - "start": 154653, - "end": 154663, + "start": 155167, + "end": 155177, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 18 }, "end": { - "line": 3832, + "line": 3840, "column": 28 }, "identifierName": "layerIndex" @@ -175231,43 +176292,43 @@ }, "init": { "type": "MemberExpression", - "start": 154666, - "end": 154694, + "start": 155180, + "end": 155208, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 31 }, "end": { - "line": 3832, + "line": 3840, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 154666, - "end": 154691, + "start": 155180, + "end": 155205, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 31 }, "end": { - "line": 3832, + "line": 3840, "column": 56 } }, "object": { "type": "Identifier", - "start": 154666, - "end": 154677, + "start": 155180, + "end": 155191, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 31 }, "end": { - "line": 3832, + "line": 3840, "column": 42 }, "identifierName": "renderFlags" @@ -175276,15 +176337,15 @@ }, "property": { "type": "Identifier", - "start": 154678, - "end": 154691, + "start": 155192, + "end": 155205, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 43 }, "end": { - "line": 3832, + "line": 3840, "column": 56 }, "identifierName": "visibleLayers" @@ -175295,15 +176356,15 @@ }, "property": { "type": "Identifier", - "start": 154692, - "end": 154693, + "start": 155206, + "end": 155207, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 57 }, "end": { - "line": 3832, + "line": 3840, "column": 58 }, "identifierName": "i" @@ -175318,100 +176379,100 @@ }, { "type": "ExpressionStatement", - "start": 154708, - "end": 154771, + "start": 155222, + "end": 155285, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 12 }, "end": { - "line": 3833, + "line": 3841, "column": 75 } }, "expression": { "type": "CallExpression", - "start": 154708, - "end": 154770, + "start": 155222, + "end": 155284, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 12 }, "end": { - "line": 3833, + "line": 3841, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 154708, - "end": 154747, + "start": 155222, + "end": 155261, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 12 }, "end": { - "line": 3833, + "line": 3841, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 154708, - "end": 154734, + "start": 155222, + "end": 155248, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 12 }, "end": { - "line": 3833, + "line": 3841, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 154708, - "end": 154722, + "start": 155222, + "end": 155236, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 12 }, "end": { - "line": 3833, + "line": 3841, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 154708, - "end": 154712, + "start": 155222, + "end": 155226, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 12 }, "end": { - "line": 3833, + "line": 3841, "column": 16 } } }, "property": { "type": "Identifier", - "start": 154713, - "end": 154722, + "start": 155227, + "end": 155236, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 17 }, "end": { - "line": 3833, + "line": 3841, "column": 26 }, "identifierName": "layerList" @@ -175422,15 +176483,15 @@ }, "property": { "type": "Identifier", - "start": 154723, - "end": 154733, + "start": 155237, + "end": 155247, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 27 }, "end": { - "line": 3833, + "line": 3841, "column": 37 }, "identifierName": "layerIndex" @@ -175441,15 +176502,15 @@ }, "property": { "type": "Identifier", - "start": 154735, - "end": 154747, + "start": 155249, + "end": 155261, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 39 }, "end": { - "line": 3833, + "line": 3841, "column": 51 }, "identifierName": "drawPickMesh" @@ -175461,15 +176522,15 @@ "arguments": [ { "type": "Identifier", - "start": 154748, - "end": 154759, + "start": 155262, + "end": 155273, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 52 }, "end": { - "line": 3833, + "line": 3841, "column": 63 }, "identifierName": "renderFlags" @@ -175478,15 +176539,15 @@ }, { "type": "Identifier", - "start": 154761, - "end": 154769, + "start": 155275, + "end": 155283, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 65 }, "end": { - "line": 3833, + "line": 3841, "column": 73 }, "identifierName": "frameCtx" @@ -175508,15 +176569,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 154384, - "end": 154399, + "start": 154898, + "end": 154913, "loc": { "start": { - "line": 3825, + "line": 3833, "column": 4 }, "end": { - "line": 3825, + "line": 3833, "column": 19 } } @@ -175526,15 +176587,15 @@ { "type": "CommentBlock", "value": "*\n * Called by SceneModelMesh.drawPickDepths()\n * @private\n ", - "start": 154793, - "end": 154869, + "start": 155307, + "end": 155383, "loc": { "start": { - "line": 3837, + "line": 3845, "column": 4 }, "end": { - "line": 3840, + "line": 3848, "column": 7 } } @@ -175543,15 +176604,15 @@ }, { "type": "ClassMethod", - "start": 154874, - "end": 155261, + "start": 155388, + "end": 155775, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 4 }, "end": { - "line": 3850, + "line": 3858, "column": 5 } }, @@ -175559,15 +176620,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 154874, - "end": 154888, + "start": 155388, + "end": 155402, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 4 }, "end": { - "line": 3841, + "line": 3849, "column": 18 }, "identifierName": "drawPickDepths" @@ -175583,15 +176644,15 @@ "params": [ { "type": "Identifier", - "start": 154889, - "end": 154897, + "start": 155403, + "end": 155411, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 19 }, "end": { - "line": 3841, + "line": 3849, "column": 27 }, "identifierName": "frameCtx" @@ -175601,87 +176662,87 @@ ], "body": { "type": "BlockStatement", - "start": 154899, - "end": 155261, + "start": 155413, + "end": 155775, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 29 }, "end": { - "line": 3850, + "line": 3858, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 154909, - "end": 154980, + "start": 155423, + "end": 155494, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 8 }, "end": { - "line": 3844, + "line": 3852, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 154913, - "end": 154947, + "start": 155427, + "end": 155461, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 12 }, "end": { - "line": 3842, + "line": 3850, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 154913, - "end": 154941, + "start": 155427, + "end": 155455, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 12 }, "end": { - "line": 3842, + "line": 3850, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 154913, - "end": 154917, + "start": 155427, + "end": 155431, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 12 }, "end": { - "line": 3842, + "line": 3850, "column": 16 } } }, "property": { "type": "Identifier", - "start": 154918, - "end": 154941, + "start": 155432, + "end": 155455, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 17 }, "end": { - "line": 3842, + "line": 3850, "column": 40 }, "identifierName": "numVisibleLayerPortions" @@ -175693,15 +176754,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 154946, - "end": 154947, + "start": 155460, + "end": 155461, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 45 }, "end": { - "line": 3842, + "line": 3850, "column": 46 } }, @@ -175714,30 +176775,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 154949, - "end": 154980, + "start": 155463, + "end": 155494, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 48 }, "end": { - "line": 3844, + "line": 3852, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 154963, - "end": 154970, + "start": 155477, + "end": 155484, "loc": { "start": { - "line": 3843, + "line": 3851, "column": 12 }, "end": { - "line": 3843, + "line": 3851, "column": 19 } }, @@ -175750,44 +176811,44 @@ }, { "type": "VariableDeclaration", - "start": 154989, - "end": 155026, + "start": 155503, + "end": 155540, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 8 }, "end": { - "line": 3845, + "line": 3853, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 154995, - "end": 155025, + "start": 155509, + "end": 155539, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 14 }, "end": { - "line": 3845, + "line": 3853, "column": 44 } }, "id": { "type": "Identifier", - "start": 154995, - "end": 155006, + "start": 155509, + "end": 155520, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 14 }, "end": { - "line": 3845, + "line": 3853, "column": 25 }, "identifierName": "renderFlags" @@ -175796,44 +176857,44 @@ }, "init": { "type": "MemberExpression", - "start": 155009, - "end": 155025, + "start": 155523, + "end": 155539, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 28 }, "end": { - "line": 3845, + "line": 3853, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 155009, - "end": 155013, + "start": 155523, + "end": 155527, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 28 }, "end": { - "line": 3845, + "line": 3853, "column": 32 } } }, "property": { "type": "Identifier", - "start": 155014, - "end": 155025, + "start": 155528, + "end": 155539, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 33 }, "end": { - "line": 3845, + "line": 3853, "column": 44 }, "identifierName": "renderFlags" @@ -175848,58 +176909,58 @@ }, { "type": "ForStatement", - "start": 155035, - "end": 155255, + "start": 155549, + "end": 155769, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 8 }, "end": { - "line": 3849, + "line": 3857, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 155040, - "end": 155089, + "start": 155554, + "end": 155603, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 13 }, "end": { - "line": 3846, + "line": 3854, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 155044, - "end": 155049, + "start": 155558, + "end": 155563, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 17 }, "end": { - "line": 3846, + "line": 3854, "column": 22 } }, "id": { "type": "Identifier", - "start": 155044, - "end": 155045, + "start": 155558, + "end": 155559, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 17 }, "end": { - "line": 3846, + "line": 3854, "column": 18 }, "identifierName": "i" @@ -175908,15 +176969,15 @@ }, "init": { "type": "NumericLiteral", - "start": 155048, - "end": 155049, + "start": 155562, + "end": 155563, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 21 }, "end": { - "line": 3846, + "line": 3854, "column": 22 } }, @@ -175929,29 +176990,29 @@ }, { "type": "VariableDeclarator", - "start": 155051, - "end": 155089, + "start": 155565, + "end": 155603, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 24 }, "end": { - "line": 3846, + "line": 3854, "column": 62 } }, "id": { "type": "Identifier", - "start": 155051, - "end": 155054, + "start": 155565, + "end": 155568, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 24 }, "end": { - "line": 3846, + "line": 3854, "column": 27 }, "identifierName": "len" @@ -175960,43 +177021,43 @@ }, "init": { "type": "MemberExpression", - "start": 155057, - "end": 155089, + "start": 155571, + "end": 155603, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 30 }, "end": { - "line": 3846, + "line": 3854, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 155057, - "end": 155082, + "start": 155571, + "end": 155596, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 30 }, "end": { - "line": 3846, + "line": 3854, "column": 55 } }, "object": { "type": "Identifier", - "start": 155057, - "end": 155068, + "start": 155571, + "end": 155582, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 30 }, "end": { - "line": 3846, + "line": 3854, "column": 41 }, "identifierName": "renderFlags" @@ -176005,15 +177066,15 @@ }, "property": { "type": "Identifier", - "start": 155069, - "end": 155082, + "start": 155583, + "end": 155596, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 42 }, "end": { - "line": 3846, + "line": 3854, "column": 55 }, "identifierName": "visibleLayers" @@ -176024,15 +177085,15 @@ }, "property": { "type": "Identifier", - "start": 155083, - "end": 155089, + "start": 155597, + "end": 155603, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 56 }, "end": { - "line": 3846, + "line": 3854, "column": 62 }, "identifierName": "length" @@ -176047,29 +177108,29 @@ }, "test": { "type": "BinaryExpression", - "start": 155091, - "end": 155098, + "start": 155605, + "end": 155612, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 64 }, "end": { - "line": 3846, + "line": 3854, "column": 71 } }, "left": { "type": "Identifier", - "start": 155091, - "end": 155092, + "start": 155605, + "end": 155606, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 64 }, "end": { - "line": 3846, + "line": 3854, "column": 65 }, "identifierName": "i" @@ -176079,15 +177140,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 155095, - "end": 155098, + "start": 155609, + "end": 155612, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 68 }, "end": { - "line": 3846, + "line": 3854, "column": 71 }, "identifierName": "len" @@ -176097,15 +177158,15 @@ }, "update": { "type": "UpdateExpression", - "start": 155100, - "end": 155103, + "start": 155614, + "end": 155617, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 73 }, "end": { - "line": 3846, + "line": 3854, "column": 76 } }, @@ -176113,15 +177174,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 155100, - "end": 155101, + "start": 155614, + "end": 155615, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 73 }, "end": { - "line": 3846, + "line": 3854, "column": 74 }, "identifierName": "i" @@ -176131,59 +177192,59 @@ }, "body": { "type": "BlockStatement", - "start": 155105, - "end": 155255, + "start": 155619, + "end": 155769, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 78 }, "end": { - "line": 3849, + "line": 3857, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 155119, - "end": 155167, + "start": 155633, + "end": 155681, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 12 }, "end": { - "line": 3847, + "line": 3855, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 155125, - "end": 155166, + "start": 155639, + "end": 155680, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 18 }, "end": { - "line": 3847, + "line": 3855, "column": 59 } }, "id": { "type": "Identifier", - "start": 155125, - "end": 155135, + "start": 155639, + "end": 155649, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 18 }, "end": { - "line": 3847, + "line": 3855, "column": 28 }, "identifierName": "layerIndex" @@ -176192,43 +177253,43 @@ }, "init": { "type": "MemberExpression", - "start": 155138, - "end": 155166, + "start": 155652, + "end": 155680, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 31 }, "end": { - "line": 3847, + "line": 3855, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 155138, - "end": 155163, + "start": 155652, + "end": 155677, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 31 }, "end": { - "line": 3847, + "line": 3855, "column": 56 } }, "object": { "type": "Identifier", - "start": 155138, - "end": 155149, + "start": 155652, + "end": 155663, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 31 }, "end": { - "line": 3847, + "line": 3855, "column": 42 }, "identifierName": "renderFlags" @@ -176237,15 +177298,15 @@ }, "property": { "type": "Identifier", - "start": 155150, - "end": 155163, + "start": 155664, + "end": 155677, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 43 }, "end": { - "line": 3847, + "line": 3855, "column": 56 }, "identifierName": "visibleLayers" @@ -176256,15 +177317,15 @@ }, "property": { "type": "Identifier", - "start": 155164, - "end": 155165, + "start": 155678, + "end": 155679, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 57 }, "end": { - "line": 3847, + "line": 3855, "column": 58 }, "identifierName": "i" @@ -176279,100 +177340,100 @@ }, { "type": "ExpressionStatement", - "start": 155180, - "end": 155245, + "start": 155694, + "end": 155759, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 12 }, "end": { - "line": 3848, + "line": 3856, "column": 77 } }, "expression": { "type": "CallExpression", - "start": 155180, - "end": 155244, + "start": 155694, + "end": 155758, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 12 }, "end": { - "line": 3848, + "line": 3856, "column": 76 } }, "callee": { "type": "MemberExpression", - "start": 155180, - "end": 155221, + "start": 155694, + "end": 155735, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 12 }, "end": { - "line": 3848, + "line": 3856, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 155180, - "end": 155206, + "start": 155694, + "end": 155720, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 12 }, "end": { - "line": 3848, + "line": 3856, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 155180, - "end": 155194, + "start": 155694, + "end": 155708, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 12 }, "end": { - "line": 3848, + "line": 3856, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 155180, - "end": 155184, + "start": 155694, + "end": 155698, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 12 }, "end": { - "line": 3848, + "line": 3856, "column": 16 } } }, "property": { "type": "Identifier", - "start": 155185, - "end": 155194, + "start": 155699, + "end": 155708, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 17 }, "end": { - "line": 3848, + "line": 3856, "column": 26 }, "identifierName": "layerList" @@ -176383,15 +177444,15 @@ }, "property": { "type": "Identifier", - "start": 155195, - "end": 155205, + "start": 155709, + "end": 155719, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 27 }, "end": { - "line": 3848, + "line": 3856, "column": 37 }, "identifierName": "layerIndex" @@ -176402,15 +177463,15 @@ }, "property": { "type": "Identifier", - "start": 155207, - "end": 155221, + "start": 155721, + "end": 155735, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 39 }, "end": { - "line": 3848, + "line": 3856, "column": 53 }, "identifierName": "drawPickDepths" @@ -176422,15 +177483,15 @@ "arguments": [ { "type": "Identifier", - "start": 155222, - "end": 155233, + "start": 155736, + "end": 155747, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 54 }, "end": { - "line": 3848, + "line": 3856, "column": 65 }, "identifierName": "renderFlags" @@ -176439,15 +177500,15 @@ }, { "type": "Identifier", - "start": 155235, - "end": 155243, + "start": 155749, + "end": 155757, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 67 }, "end": { - "line": 3848, + "line": 3856, "column": 75 }, "identifierName": "frameCtx" @@ -176469,15 +177530,15 @@ { "type": "CommentBlock", "value": "*\n * Called by SceneModelMesh.drawPickDepths()\n * @private\n ", - "start": 154793, - "end": 154869, + "start": 155307, + "end": 155383, "loc": { "start": { - "line": 3837, + "line": 3845, "column": 4 }, "end": { - "line": 3840, + "line": 3848, "column": 7 } } @@ -176487,15 +177548,15 @@ { "type": "CommentBlock", "value": "*\n * Called by SceneModelMesh.drawPickNormals()\n * @private\n ", - "start": 155267, - "end": 155344, + "start": 155781, + "end": 155858, "loc": { "start": { - "line": 3852, + "line": 3860, "column": 4 }, "end": { - "line": 3855, + "line": 3863, "column": 7 } } @@ -176504,15 +177565,15 @@ }, { "type": "ClassMethod", - "start": 155349, - "end": 155738, + "start": 155863, + "end": 156252, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 4 }, "end": { - "line": 3865, + "line": 3873, "column": 5 } }, @@ -176520,15 +177581,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 155349, - "end": 155364, + "start": 155863, + "end": 155878, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 4 }, "end": { - "line": 3856, + "line": 3864, "column": 19 }, "identifierName": "drawPickNormals" @@ -176544,15 +177605,15 @@ "params": [ { "type": "Identifier", - "start": 155365, - "end": 155373, + "start": 155879, + "end": 155887, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 20 }, "end": { - "line": 3856, + "line": 3864, "column": 28 }, "identifierName": "frameCtx" @@ -176562,87 +177623,87 @@ ], "body": { "type": "BlockStatement", - "start": 155375, - "end": 155738, + "start": 155889, + "end": 156252, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 30 }, "end": { - "line": 3865, + "line": 3873, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 155385, - "end": 155456, + "start": 155899, + "end": 155970, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 8 }, "end": { - "line": 3859, + "line": 3867, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 155389, - "end": 155423, + "start": 155903, + "end": 155937, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 12 }, "end": { - "line": 3857, + "line": 3865, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 155389, - "end": 155417, + "start": 155903, + "end": 155931, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 12 }, "end": { - "line": 3857, + "line": 3865, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 155389, - "end": 155393, + "start": 155903, + "end": 155907, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 12 }, "end": { - "line": 3857, + "line": 3865, "column": 16 } } }, "property": { "type": "Identifier", - "start": 155394, - "end": 155417, + "start": 155908, + "end": 155931, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 17 }, "end": { - "line": 3857, + "line": 3865, "column": 40 }, "identifierName": "numVisibleLayerPortions" @@ -176654,15 +177715,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 155422, - "end": 155423, + "start": 155936, + "end": 155937, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 45 }, "end": { - "line": 3857, + "line": 3865, "column": 46 } }, @@ -176675,30 +177736,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 155425, - "end": 155456, + "start": 155939, + "end": 155970, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 48 }, "end": { - "line": 3859, + "line": 3867, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 155439, - "end": 155446, + "start": 155953, + "end": 155960, "loc": { "start": { - "line": 3858, + "line": 3866, "column": 12 }, "end": { - "line": 3858, + "line": 3866, "column": 19 } }, @@ -176711,44 +177772,44 @@ }, { "type": "VariableDeclaration", - "start": 155465, - "end": 155502, + "start": 155979, + "end": 156016, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 8 }, "end": { - "line": 3860, + "line": 3868, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 155471, - "end": 155501, + "start": 155985, + "end": 156015, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 14 }, "end": { - "line": 3860, + "line": 3868, "column": 44 } }, "id": { "type": "Identifier", - "start": 155471, - "end": 155482, + "start": 155985, + "end": 155996, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 14 }, "end": { - "line": 3860, + "line": 3868, "column": 25 }, "identifierName": "renderFlags" @@ -176757,44 +177818,44 @@ }, "init": { "type": "MemberExpression", - "start": 155485, - "end": 155501, + "start": 155999, + "end": 156015, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 28 }, "end": { - "line": 3860, + "line": 3868, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 155485, - "end": 155489, + "start": 155999, + "end": 156003, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 28 }, "end": { - "line": 3860, + "line": 3868, "column": 32 } } }, "property": { "type": "Identifier", - "start": 155490, - "end": 155501, + "start": 156004, + "end": 156015, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 33 }, "end": { - "line": 3860, + "line": 3868, "column": 44 }, "identifierName": "renderFlags" @@ -176809,58 +177870,58 @@ }, { "type": "ForStatement", - "start": 155511, - "end": 155732, + "start": 156025, + "end": 156246, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 8 }, "end": { - "line": 3864, + "line": 3872, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 155516, - "end": 155565, + "start": 156030, + "end": 156079, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 13 }, "end": { - "line": 3861, + "line": 3869, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 155520, - "end": 155525, + "start": 156034, + "end": 156039, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 17 }, "end": { - "line": 3861, + "line": 3869, "column": 22 } }, "id": { "type": "Identifier", - "start": 155520, - "end": 155521, + "start": 156034, + "end": 156035, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 17 }, "end": { - "line": 3861, + "line": 3869, "column": 18 }, "identifierName": "i" @@ -176869,15 +177930,15 @@ }, "init": { "type": "NumericLiteral", - "start": 155524, - "end": 155525, + "start": 156038, + "end": 156039, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 21 }, "end": { - "line": 3861, + "line": 3869, "column": 22 } }, @@ -176890,29 +177951,29 @@ }, { "type": "VariableDeclarator", - "start": 155527, - "end": 155565, + "start": 156041, + "end": 156079, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 24 }, "end": { - "line": 3861, + "line": 3869, "column": 62 } }, "id": { "type": "Identifier", - "start": 155527, - "end": 155530, + "start": 156041, + "end": 156044, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 24 }, "end": { - "line": 3861, + "line": 3869, "column": 27 }, "identifierName": "len" @@ -176921,43 +177982,43 @@ }, "init": { "type": "MemberExpression", - "start": 155533, - "end": 155565, + "start": 156047, + "end": 156079, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 30 }, "end": { - "line": 3861, + "line": 3869, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 155533, - "end": 155558, + "start": 156047, + "end": 156072, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 30 }, "end": { - "line": 3861, + "line": 3869, "column": 55 } }, "object": { "type": "Identifier", - "start": 155533, - "end": 155544, + "start": 156047, + "end": 156058, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 30 }, "end": { - "line": 3861, + "line": 3869, "column": 41 }, "identifierName": "renderFlags" @@ -176966,15 +178027,15 @@ }, "property": { "type": "Identifier", - "start": 155545, - "end": 155558, + "start": 156059, + "end": 156072, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 42 }, "end": { - "line": 3861, + "line": 3869, "column": 55 }, "identifierName": "visibleLayers" @@ -176985,15 +178046,15 @@ }, "property": { "type": "Identifier", - "start": 155559, - "end": 155565, + "start": 156073, + "end": 156079, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 56 }, "end": { - "line": 3861, + "line": 3869, "column": 62 }, "identifierName": "length" @@ -177008,29 +178069,29 @@ }, "test": { "type": "BinaryExpression", - "start": 155567, - "end": 155574, + "start": 156081, + "end": 156088, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 64 }, "end": { - "line": 3861, + "line": 3869, "column": 71 } }, "left": { "type": "Identifier", - "start": 155567, - "end": 155568, + "start": 156081, + "end": 156082, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 64 }, "end": { - "line": 3861, + "line": 3869, "column": 65 }, "identifierName": "i" @@ -177040,15 +178101,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 155571, - "end": 155574, + "start": 156085, + "end": 156088, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 68 }, "end": { - "line": 3861, + "line": 3869, "column": 71 }, "identifierName": "len" @@ -177058,15 +178119,15 @@ }, "update": { "type": "UpdateExpression", - "start": 155576, - "end": 155579, + "start": 156090, + "end": 156093, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 73 }, "end": { - "line": 3861, + "line": 3869, "column": 76 } }, @@ -177074,15 +178135,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 155576, - "end": 155577, + "start": 156090, + "end": 156091, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 73 }, "end": { - "line": 3861, + "line": 3869, "column": 74 }, "identifierName": "i" @@ -177092,59 +178153,59 @@ }, "body": { "type": "BlockStatement", - "start": 155581, - "end": 155732, + "start": 156095, + "end": 156246, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 78 }, "end": { - "line": 3864, + "line": 3872, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 155595, - "end": 155643, + "start": 156109, + "end": 156157, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 12 }, "end": { - "line": 3862, + "line": 3870, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 155601, - "end": 155642, + "start": 156115, + "end": 156156, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 18 }, "end": { - "line": 3862, + "line": 3870, "column": 59 } }, "id": { "type": "Identifier", - "start": 155601, - "end": 155611, + "start": 156115, + "end": 156125, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 18 }, "end": { - "line": 3862, + "line": 3870, "column": 28 }, "identifierName": "layerIndex" @@ -177153,43 +178214,43 @@ }, "init": { "type": "MemberExpression", - "start": 155614, - "end": 155642, + "start": 156128, + "end": 156156, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 31 }, "end": { - "line": 3862, + "line": 3870, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 155614, - "end": 155639, + "start": 156128, + "end": 156153, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 31 }, "end": { - "line": 3862, + "line": 3870, "column": 56 } }, "object": { "type": "Identifier", - "start": 155614, - "end": 155625, + "start": 156128, + "end": 156139, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 31 }, "end": { - "line": 3862, + "line": 3870, "column": 42 }, "identifierName": "renderFlags" @@ -177198,15 +178259,15 @@ }, "property": { "type": "Identifier", - "start": 155626, - "end": 155639, + "start": 156140, + "end": 156153, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 43 }, "end": { - "line": 3862, + "line": 3870, "column": 56 }, "identifierName": "visibleLayers" @@ -177217,15 +178278,15 @@ }, "property": { "type": "Identifier", - "start": 155640, - "end": 155641, + "start": 156154, + "end": 156155, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 57 }, "end": { - "line": 3862, + "line": 3870, "column": 58 }, "identifierName": "i" @@ -177240,100 +178301,100 @@ }, { "type": "ExpressionStatement", - "start": 155656, - "end": 155722, + "start": 156170, + "end": 156236, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 12 }, "end": { - "line": 3863, + "line": 3871, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 155656, - "end": 155721, + "start": 156170, + "end": 156235, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 12 }, "end": { - "line": 3863, + "line": 3871, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 155656, - "end": 155698, + "start": 156170, + "end": 156212, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 12 }, "end": { - "line": 3863, + "line": 3871, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 155656, - "end": 155682, + "start": 156170, + "end": 156196, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 12 }, "end": { - "line": 3863, + "line": 3871, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 155656, - "end": 155670, + "start": 156170, + "end": 156184, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 12 }, "end": { - "line": 3863, + "line": 3871, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 155656, - "end": 155660, + "start": 156170, + "end": 156174, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 12 }, "end": { - "line": 3863, + "line": 3871, "column": 16 } } }, "property": { "type": "Identifier", - "start": 155661, - "end": 155670, + "start": 156175, + "end": 156184, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 17 }, "end": { - "line": 3863, + "line": 3871, "column": 26 }, "identifierName": "layerList" @@ -177344,15 +178405,15 @@ }, "property": { "type": "Identifier", - "start": 155671, - "end": 155681, + "start": 156185, + "end": 156195, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 27 }, "end": { - "line": 3863, + "line": 3871, "column": 37 }, "identifierName": "layerIndex" @@ -177363,15 +178424,15 @@ }, "property": { "type": "Identifier", - "start": 155683, - "end": 155698, + "start": 156197, + "end": 156212, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 39 }, "end": { - "line": 3863, + "line": 3871, "column": 54 }, "identifierName": "drawPickNormals" @@ -177383,15 +178444,15 @@ "arguments": [ { "type": "Identifier", - "start": 155699, - "end": 155710, + "start": 156213, + "end": 156224, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 55 }, "end": { - "line": 3863, + "line": 3871, "column": 66 }, "identifierName": "renderFlags" @@ -177400,15 +178461,15 @@ }, { "type": "Identifier", - "start": 155712, - "end": 155720, + "start": 156226, + "end": 156234, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 68 }, "end": { - "line": 3863, + "line": 3871, "column": 76 }, "identifierName": "frameCtx" @@ -177430,15 +178491,15 @@ { "type": "CommentBlock", "value": "*\n * Called by SceneModelMesh.drawPickNormals()\n * @private\n ", - "start": 155267, - "end": 155344, + "start": 155781, + "end": 155858, "loc": { "start": { - "line": 3852, + "line": 3860, "column": 4 }, "end": { - "line": 3855, + "line": 3863, "column": 7 } } @@ -177448,15 +178509,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 155744, - "end": 155771, + "start": 156258, + "end": 156285, "loc": { "start": { - "line": 3867, + "line": 3875, "column": 4 }, "end": { - "line": 3869, + "line": 3877, "column": 7 } } @@ -177465,15 +178526,15 @@ }, { "type": "ClassMethod", - "start": 155776, - "end": 156649, + "start": 156290, + "end": 157163, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 4 }, "end": { - "line": 3889, + "line": 3897, "column": 5 } }, @@ -177481,15 +178542,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 155776, - "end": 155788, + "start": 156290, + "end": 156302, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 4 }, "end": { - "line": 3870, + "line": 3878, "column": 16 }, "identifierName": "drawSnapInit" @@ -177505,15 +178566,15 @@ "params": [ { "type": "Identifier", - "start": 155789, - "end": 155797, + "start": 156303, + "end": 156311, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 17 }, "end": { - "line": 3870, + "line": 3878, "column": 25 }, "identifierName": "frameCtx" @@ -177523,87 +178584,87 @@ ], "body": { "type": "BlockStatement", - "start": 155799, - "end": 156649, + "start": 156313, + "end": 157163, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 27 }, "end": { - "line": 3889, + "line": 3897, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 155809, - "end": 155880, + "start": 156323, + "end": 156394, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 8 }, "end": { - "line": 3873, + "line": 3881, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 155813, - "end": 155847, + "start": 156327, + "end": 156361, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 12 }, "end": { - "line": 3871, + "line": 3879, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 155813, - "end": 155841, + "start": 156327, + "end": 156355, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 12 }, "end": { - "line": 3871, + "line": 3879, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 155813, - "end": 155817, + "start": 156327, + "end": 156331, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 12 }, "end": { - "line": 3871, + "line": 3879, "column": 16 } } }, "property": { "type": "Identifier", - "start": 155818, - "end": 155841, + "start": 156332, + "end": 156355, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 17 }, "end": { - "line": 3871, + "line": 3879, "column": 40 }, "identifierName": "numVisibleLayerPortions" @@ -177615,15 +178676,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 155846, - "end": 155847, + "start": 156360, + "end": 156361, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 45 }, "end": { - "line": 3871, + "line": 3879, "column": 46 } }, @@ -177636,30 +178697,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 155849, - "end": 155880, + "start": 156363, + "end": 156394, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 48 }, "end": { - "line": 3873, + "line": 3881, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 155863, - "end": 155870, + "start": 156377, + "end": 156384, "loc": { "start": { - "line": 3872, + "line": 3880, "column": 12 }, "end": { - "line": 3872, + "line": 3880, "column": 19 } }, @@ -177672,44 +178733,44 @@ }, { "type": "VariableDeclaration", - "start": 155889, - "end": 155926, + "start": 156403, + "end": 156440, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 8 }, "end": { - "line": 3874, + "line": 3882, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 155895, - "end": 155925, + "start": 156409, + "end": 156439, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 14 }, "end": { - "line": 3874, + "line": 3882, "column": 44 } }, "id": { "type": "Identifier", - "start": 155895, - "end": 155906, + "start": 156409, + "end": 156420, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 14 }, "end": { - "line": 3874, + "line": 3882, "column": 25 }, "identifierName": "renderFlags" @@ -177718,44 +178779,44 @@ }, "init": { "type": "MemberExpression", - "start": 155909, - "end": 155925, + "start": 156423, + "end": 156439, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 28 }, "end": { - "line": 3874, + "line": 3882, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 155909, - "end": 155913, + "start": 156423, + "end": 156427, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 28 }, "end": { - "line": 3874, + "line": 3882, "column": 32 } } }, "property": { "type": "Identifier", - "start": 155914, - "end": 155925, + "start": 156428, + "end": 156439, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 33 }, "end": { - "line": 3874, + "line": 3882, "column": 44 }, "identifierName": "renderFlags" @@ -177770,58 +178831,58 @@ }, { "type": "ForStatement", - "start": 155935, - "end": 156643, + "start": 156449, + "end": 157157, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 8 }, "end": { - "line": 3888, + "line": 3896, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 155940, - "end": 155989, + "start": 156454, + "end": 156503, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 13 }, "end": { - "line": 3875, + "line": 3883, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 155944, - "end": 155949, + "start": 156458, + "end": 156463, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 17 }, "end": { - "line": 3875, + "line": 3883, "column": 22 } }, "id": { "type": "Identifier", - "start": 155944, - "end": 155945, + "start": 156458, + "end": 156459, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 17 }, "end": { - "line": 3875, + "line": 3883, "column": 18 }, "identifierName": "i" @@ -177830,15 +178891,15 @@ }, "init": { "type": "NumericLiteral", - "start": 155948, - "end": 155949, + "start": 156462, + "end": 156463, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 21 }, "end": { - "line": 3875, + "line": 3883, "column": 22 } }, @@ -177851,29 +178912,29 @@ }, { "type": "VariableDeclarator", - "start": 155951, - "end": 155989, + "start": 156465, + "end": 156503, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 24 }, "end": { - "line": 3875, + "line": 3883, "column": 62 } }, "id": { "type": "Identifier", - "start": 155951, - "end": 155954, + "start": 156465, + "end": 156468, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 24 }, "end": { - "line": 3875, + "line": 3883, "column": 27 }, "identifierName": "len" @@ -177882,43 +178943,43 @@ }, "init": { "type": "MemberExpression", - "start": 155957, - "end": 155989, + "start": 156471, + "end": 156503, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 30 }, "end": { - "line": 3875, + "line": 3883, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 155957, - "end": 155982, + "start": 156471, + "end": 156496, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 30 }, "end": { - "line": 3875, + "line": 3883, "column": 55 } }, "object": { "type": "Identifier", - "start": 155957, - "end": 155968, + "start": 156471, + "end": 156482, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 30 }, "end": { - "line": 3875, + "line": 3883, "column": 41 }, "identifierName": "renderFlags" @@ -177927,15 +178988,15 @@ }, "property": { "type": "Identifier", - "start": 155969, - "end": 155982, + "start": 156483, + "end": 156496, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 42 }, "end": { - "line": 3875, + "line": 3883, "column": 55 }, "identifierName": "visibleLayers" @@ -177946,15 +179007,15 @@ }, "property": { "type": "Identifier", - "start": 155983, - "end": 155989, + "start": 156497, + "end": 156503, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 56 }, "end": { - "line": 3875, + "line": 3883, "column": 62 }, "identifierName": "length" @@ -177969,29 +179030,29 @@ }, "test": { "type": "BinaryExpression", - "start": 155991, - "end": 155998, + "start": 156505, + "end": 156512, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 64 }, "end": { - "line": 3875, + "line": 3883, "column": 71 } }, "left": { "type": "Identifier", - "start": 155991, - "end": 155992, + "start": 156505, + "end": 156506, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 64 }, "end": { - "line": 3875, + "line": 3883, "column": 65 }, "identifierName": "i" @@ -178001,15 +179062,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 155995, - "end": 155998, + "start": 156509, + "end": 156512, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 68 }, "end": { - "line": 3875, + "line": 3883, "column": 71 }, "identifierName": "len" @@ -178019,15 +179080,15 @@ }, "update": { "type": "UpdateExpression", - "start": 156000, - "end": 156003, + "start": 156514, + "end": 156517, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 73 }, "end": { - "line": 3875, + "line": 3883, "column": 76 } }, @@ -178035,15 +179096,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 156000, - "end": 156001, + "start": 156514, + "end": 156515, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 73 }, "end": { - "line": 3875, + "line": 3883, "column": 74 }, "identifierName": "i" @@ -178053,59 +179114,59 @@ }, "body": { "type": "BlockStatement", - "start": 156005, - "end": 156643, + "start": 156519, + "end": 157157, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 78 }, "end": { - "line": 3888, + "line": 3896, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 156019, - "end": 156067, + "start": 156533, + "end": 156581, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 12 }, "end": { - "line": 3876, + "line": 3884, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 156025, - "end": 156066, + "start": 156539, + "end": 156580, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 18 }, "end": { - "line": 3876, + "line": 3884, "column": 59 } }, "id": { "type": "Identifier", - "start": 156025, - "end": 156035, + "start": 156539, + "end": 156549, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 18 }, "end": { - "line": 3876, + "line": 3884, "column": 28 }, "identifierName": "layerIndex" @@ -178114,43 +179175,43 @@ }, "init": { "type": "MemberExpression", - "start": 156038, - "end": 156066, + "start": 156552, + "end": 156580, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 31 }, "end": { - "line": 3876, + "line": 3884, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 156038, - "end": 156063, + "start": 156552, + "end": 156577, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 31 }, "end": { - "line": 3876, + "line": 3884, "column": 56 } }, "object": { "type": "Identifier", - "start": 156038, - "end": 156049, + "start": 156552, + "end": 156563, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 31 }, "end": { - "line": 3876, + "line": 3884, "column": 42 }, "identifierName": "renderFlags" @@ -178159,15 +179220,15 @@ }, "property": { "type": "Identifier", - "start": 156050, - "end": 156063, + "start": 156564, + "end": 156577, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 43 }, "end": { - "line": 3876, + "line": 3884, "column": 56 }, "identifierName": "visibleLayers" @@ -178178,15 +179239,15 @@ }, "property": { "type": "Identifier", - "start": 156064, - "end": 156065, + "start": 156578, + "end": 156579, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 57 }, "end": { - "line": 3876, + "line": 3884, "column": 58 }, "identifierName": "i" @@ -178201,44 +179262,44 @@ }, { "type": "VariableDeclaration", - "start": 156080, - "end": 156121, + "start": 156594, + "end": 156635, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 12 }, "end": { - "line": 3877, + "line": 3885, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 156086, - "end": 156120, + "start": 156600, + "end": 156634, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 18 }, "end": { - "line": 3877, + "line": 3885, "column": 52 } }, "id": { "type": "Identifier", - "start": 156086, - "end": 156091, + "start": 156600, + "end": 156605, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 18 }, "end": { - "line": 3877, + "line": 3885, "column": 23 }, "identifierName": "layer" @@ -178247,58 +179308,58 @@ }, "init": { "type": "MemberExpression", - "start": 156094, - "end": 156120, + "start": 156608, + "end": 156634, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 26 }, "end": { - "line": 3877, + "line": 3885, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 156094, - "end": 156108, + "start": 156608, + "end": 156622, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 26 }, "end": { - "line": 3877, + "line": 3885, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 156094, - "end": 156098, + "start": 156608, + "end": 156612, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 26 }, "end": { - "line": 3877, + "line": 3885, "column": 30 } } }, "property": { "type": "Identifier", - "start": 156099, - "end": 156108, + "start": 156613, + "end": 156622, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 31 }, "end": { - "line": 3877, + "line": 3885, "column": 40 }, "identifierName": "layerList" @@ -178309,15 +179370,15 @@ }, "property": { "type": "Identifier", - "start": 156109, - "end": 156119, + "start": 156623, + "end": 156633, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 41 }, "end": { - "line": 3877, + "line": 3885, "column": 51 }, "identifierName": "layerIndex" @@ -178332,43 +179393,43 @@ }, { "type": "IfStatement", - "start": 156134, - "end": 156633, + "start": 156648, + "end": 157147, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 12 }, "end": { - "line": 3887, + "line": 3895, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 156138, - "end": 156156, + "start": 156652, + "end": 156670, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 16 }, "end": { - "line": 3878, + "line": 3886, "column": 34 } }, "object": { "type": "Identifier", - "start": 156138, - "end": 156143, + "start": 156652, + "end": 156657, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 16 }, "end": { - "line": 3878, + "line": 3886, "column": 21 }, "identifierName": "layer" @@ -178377,15 +179438,15 @@ }, "property": { "type": "Identifier", - "start": 156144, - "end": 156156, + "start": 156658, + "end": 156670, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 22 }, "end": { - "line": 3878, + "line": 3886, "column": 34 }, "identifierName": "drawSnapInit" @@ -178396,73 +179457,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 156158, - "end": 156633, + "start": 156672, + "end": 157147, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 36 }, "end": { - "line": 3887, + "line": 3895, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 156176, - "end": 156212, + "start": 156690, + "end": 156726, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 16 }, "end": { - "line": 3879, + "line": 3887, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 156176, - "end": 156211, + "start": 156690, + "end": 156725, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 16 }, "end": { - "line": 3879, + "line": 3887, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 156176, - "end": 156199, + "start": 156690, + "end": 156713, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 16 }, "end": { - "line": 3879, + "line": 3887, "column": 39 } }, "object": { "type": "Identifier", - "start": 156176, - "end": 156184, + "start": 156690, + "end": 156698, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 16 }, "end": { - "line": 3879, + "line": 3887, "column": 24 }, "identifierName": "frameCtx" @@ -178471,15 +179532,15 @@ }, "property": { "type": "Identifier", - "start": 156185, - "end": 156199, + "start": 156699, + "end": 156713, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 25 }, "end": { - "line": 3879, + "line": 3887, "column": 39 }, "identifierName": "snapPickOrigin" @@ -178490,30 +179551,30 @@ }, "right": { "type": "ArrayExpression", - "start": 156202, - "end": 156211, + "start": 156716, + "end": 156725, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 42 }, "end": { - "line": 3879, + "line": 3887, "column": 51 } }, "elements": [ { "type": "NumericLiteral", - "start": 156203, - "end": 156204, + "start": 156717, + "end": 156718, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 43 }, "end": { - "line": 3879, + "line": 3887, "column": 44 } }, @@ -178525,15 +179586,15 @@ }, { "type": "NumericLiteral", - "start": 156206, - "end": 156207, + "start": 156720, + "end": 156721, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 46 }, "end": { - "line": 3879, + "line": 3887, "column": 47 } }, @@ -178545,15 +179606,15 @@ }, { "type": "NumericLiteral", - "start": 156209, - "end": 156210, + "start": 156723, + "end": 156724, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 49 }, "end": { - "line": 3879, + "line": 3887, "column": 50 } }, @@ -178569,58 +179630,58 @@ }, { "type": "ExpressionStatement", - "start": 156229, - "end": 156274, + "start": 156743, + "end": 156788, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 16 }, "end": { - "line": 3880, + "line": 3888, "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 156229, - "end": 156273, + "start": 156743, + "end": 156787, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 16 }, "end": { - "line": 3880, + "line": 3888, "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 156229, - "end": 156261, + "start": 156743, + "end": 156775, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 16 }, "end": { - "line": 3880, + "line": 3888, "column": 48 } }, "object": { "type": "Identifier", - "start": 156229, - "end": 156237, + "start": 156743, + "end": 156751, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 16 }, "end": { - "line": 3880, + "line": 3888, "column": 24 }, "identifierName": "frameCtx" @@ -178629,15 +179690,15 @@ }, "property": { "type": "Identifier", - "start": 156238, - "end": 156261, + "start": 156752, + "end": 156775, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 25 }, "end": { - "line": 3880, + "line": 3888, "column": 48 }, "identifierName": "snapPickCoordinateScale" @@ -178648,30 +179709,30 @@ }, "right": { "type": "ArrayExpression", - "start": 156264, - "end": 156273, + "start": 156778, + "end": 156787, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 51 }, "end": { - "line": 3880, + "line": 3888, "column": 60 } }, "elements": [ { "type": "NumericLiteral", - "start": 156265, - "end": 156266, + "start": 156779, + "end": 156780, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 52 }, "end": { - "line": 3880, + "line": 3888, "column": 53 } }, @@ -178683,15 +179744,15 @@ }, { "type": "NumericLiteral", - "start": 156268, - "end": 156269, + "start": 156782, + "end": 156783, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 55 }, "end": { - "line": 3880, + "line": 3888, "column": 56 } }, @@ -178703,15 +179764,15 @@ }, { "type": "NumericLiteral", - "start": 156271, - "end": 156272, + "start": 156785, + "end": 156786, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 58 }, "end": { - "line": 3880, + "line": 3888, "column": 59 } }, @@ -178727,29 +179788,29 @@ }, { "type": "ExpressionStatement", - "start": 156291, - "end": 156322, + "start": 156805, + "end": 156836, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 16 }, "end": { - "line": 3881, + "line": 3889, "column": 47 } }, "expression": { "type": "UpdateExpression", - "start": 156291, - "end": 156321, + "start": 156805, + "end": 156835, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 16 }, "end": { - "line": 3881, + "line": 3889, "column": 46 } }, @@ -178757,29 +179818,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 156291, - "end": 156319, + "start": 156805, + "end": 156833, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 16 }, "end": { - "line": 3881, + "line": 3889, "column": 44 } }, "object": { "type": "Identifier", - "start": 156291, - "end": 156299, + "start": 156805, + "end": 156813, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 16 }, "end": { - "line": 3881, + "line": 3889, "column": 24 }, "identifierName": "frameCtx" @@ -178788,15 +179849,15 @@ }, "property": { "type": "Identifier", - "start": 156300, - "end": 156319, + "start": 156814, + "end": 156833, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 25 }, "end": { - "line": 3881, + "line": 3889, "column": 44 }, "identifierName": "snapPickLayerNumber" @@ -178809,57 +179870,57 @@ }, { "type": "ExpressionStatement", - "start": 156339, - "end": 156381, + "start": 156853, + "end": 156895, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 16 }, "end": { - "line": 3882, + "line": 3890, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 156339, - "end": 156380, + "start": 156853, + "end": 156894, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 16 }, "end": { - "line": 3882, + "line": 3890, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 156339, - "end": 156357, + "start": 156853, + "end": 156871, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 16 }, "end": { - "line": 3882, + "line": 3890, "column": 34 } }, "object": { "type": "Identifier", - "start": 156339, - "end": 156344, + "start": 156853, + "end": 156858, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 16 }, "end": { - "line": 3882, + "line": 3890, "column": 21 }, "identifierName": "layer" @@ -178868,15 +179929,15 @@ }, "property": { "type": "Identifier", - "start": 156345, - "end": 156357, + "start": 156859, + "end": 156871, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 22 }, "end": { - "line": 3882, + "line": 3890, "column": 34 }, "identifierName": "drawSnapInit" @@ -178888,15 +179949,15 @@ "arguments": [ { "type": "Identifier", - "start": 156358, - "end": 156369, + "start": 156872, + "end": 156883, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 35 }, "end": { - "line": 3882, + "line": 3890, "column": 46 }, "identifierName": "renderFlags" @@ -178905,15 +179966,15 @@ }, { "type": "Identifier", - "start": 156371, - "end": 156379, + "start": 156885, + "end": 156893, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 48 }, "end": { - "line": 3882, + "line": 3890, "column": 56 }, "identifierName": "frameCtx" @@ -178925,72 +179986,72 @@ }, { "type": "ExpressionStatement", - "start": 156398, - "end": 156619, + "start": 156912, + "end": 157133, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 16 }, "end": { - "line": 3886, + "line": 3894, "column": 18 } }, "expression": { "type": "AssignmentExpression", - "start": 156398, - "end": 156618, + "start": 156912, + "end": 157132, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 16 }, "end": { - "line": 3886, + "line": 3894, "column": 17 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 156398, - "end": 156456, + "start": 156912, + "end": 156970, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 16 }, "end": { - "line": 3883, + "line": 3891, "column": 74 } }, "object": { "type": "MemberExpression", - "start": 156398, - "end": 156426, + "start": 156912, + "end": 156940, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 16 }, "end": { - "line": 3883, + "line": 3891, "column": 44 } }, "object": { "type": "Identifier", - "start": 156398, - "end": 156406, + "start": 156912, + "end": 156920, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 16 }, "end": { - "line": 3883, + "line": 3891, "column": 24 }, "identifierName": "frameCtx" @@ -178999,15 +180060,15 @@ }, "property": { "type": "Identifier", - "start": 156407, - "end": 156426, + "start": 156921, + "end": 156940, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 25 }, "end": { - "line": 3883, + "line": 3891, "column": 44 }, "identifierName": "snapPickLayerParams" @@ -179018,29 +180079,29 @@ }, "property": { "type": "MemberExpression", - "start": 156427, - "end": 156455, + "start": 156941, + "end": 156969, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 45 }, "end": { - "line": 3883, + "line": 3891, "column": 73 } }, "object": { "type": "Identifier", - "start": 156427, - "end": 156435, + "start": 156941, + "end": 156949, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 45 }, "end": { - "line": 3883, + "line": 3891, "column": 53 }, "identifierName": "frameCtx" @@ -179049,15 +180110,15 @@ }, "property": { "type": "Identifier", - "start": 156436, - "end": 156455, + "start": 156950, + "end": 156969, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 54 }, "end": { - "line": 3883, + "line": 3891, "column": 73 }, "identifierName": "snapPickLayerNumber" @@ -179070,30 +180131,30 @@ }, "right": { "type": "ObjectExpression", - "start": 156459, - "end": 156618, + "start": 156973, + "end": 157132, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 77 }, "end": { - "line": 3886, + "line": 3894, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 156481, - "end": 156520, + "start": 156995, + "end": 157034, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 20 }, "end": { - "line": 3884, + "line": 3892, "column": 59 } }, @@ -179102,15 +180163,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 156481, - "end": 156487, + "start": 156995, + "end": 157001, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 20 }, "end": { - "line": 3884, + "line": 3892, "column": 26 }, "identifierName": "origin" @@ -179119,57 +180180,57 @@ }, "value": { "type": "CallExpression", - "start": 156489, - "end": 156520, + "start": 157003, + "end": 157034, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 28 }, "end": { - "line": 3884, + "line": 3892, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 156489, - "end": 156518, + "start": 157003, + "end": 157032, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 28 }, "end": { - "line": 3884, + "line": 3892, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 156489, - "end": 156512, + "start": 157003, + "end": 157026, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 28 }, "end": { - "line": 3884, + "line": 3892, "column": 51 } }, "object": { "type": "Identifier", - "start": 156489, - "end": 156497, + "start": 157003, + "end": 157011, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 28 }, "end": { - "line": 3884, + "line": 3892, "column": 36 }, "identifierName": "frameCtx" @@ -179178,15 +180239,15 @@ }, "property": { "type": "Identifier", - "start": 156498, - "end": 156512, + "start": 157012, + "end": 157026, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 37 }, "end": { - "line": 3884, + "line": 3892, "column": 51 }, "identifierName": "snapPickOrigin" @@ -179197,15 +180258,15 @@ }, "property": { "type": "Identifier", - "start": 156513, - "end": 156518, + "start": 157027, + "end": 157032, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 52 }, "end": { - "line": 3884, + "line": 3892, "column": 57 }, "identifierName": "slice" @@ -179219,15 +180280,15 @@ }, { "type": "ObjectProperty", - "start": 156542, - "end": 156599, + "start": 157056, + "end": 157113, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 20 }, "end": { - "line": 3885, + "line": 3893, "column": 77 } }, @@ -179236,15 +180297,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 156542, - "end": 156557, + "start": 157056, + "end": 157071, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 20 }, "end": { - "line": 3885, + "line": 3893, "column": 35 }, "identifierName": "coordinateScale" @@ -179253,57 +180314,57 @@ }, "value": { "type": "CallExpression", - "start": 156559, - "end": 156599, + "start": 157073, + "end": 157113, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 37 }, "end": { - "line": 3885, + "line": 3893, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 156559, - "end": 156597, + "start": 157073, + "end": 157111, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 37 }, "end": { - "line": 3885, + "line": 3893, "column": 75 } }, "object": { "type": "MemberExpression", - "start": 156559, - "end": 156591, + "start": 157073, + "end": 157105, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 37 }, "end": { - "line": 3885, + "line": 3893, "column": 69 } }, "object": { "type": "Identifier", - "start": 156559, - "end": 156567, + "start": 157073, + "end": 157081, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 37 }, "end": { - "line": 3885, + "line": 3893, "column": 45 }, "identifierName": "frameCtx" @@ -179312,15 +180373,15 @@ }, "property": { "type": "Identifier", - "start": 156568, - "end": 156591, + "start": 157082, + "end": 157105, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 46 }, "end": { - "line": 3885, + "line": 3893, "column": 69 }, "identifierName": "snapPickCoordinateScale" @@ -179331,15 +180392,15 @@ }, "property": { "type": "Identifier", - "start": 156592, - "end": 156597, + "start": 157106, + "end": 157111, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 70 }, "end": { - "line": 3885, + "line": 3893, "column": 75 }, "identifierName": "slice" @@ -179372,15 +180433,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 155744, - "end": 155771, + "start": 156258, + "end": 156285, "loc": { "start": { - "line": 3867, + "line": 3875, "column": 4 }, "end": { - "line": 3869, + "line": 3877, "column": 7 } } @@ -179390,15 +180451,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 156655, - "end": 156682, + "start": 157169, + "end": 157196, "loc": { "start": { - "line": 3891, + "line": 3899, "column": 4 }, "end": { - "line": 3893, + "line": 3901, "column": 7 } } @@ -179407,15 +180468,15 @@ }, { "type": "ClassMethod", - "start": 156687, - "end": 157548, + "start": 157201, + "end": 158062, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 4 }, "end": { - "line": 3913, + "line": 3921, "column": 5 } }, @@ -179423,15 +180484,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 156687, - "end": 156695, + "start": 157201, + "end": 157209, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 4 }, "end": { - "line": 3894, + "line": 3902, "column": 12 }, "identifierName": "drawSnap" @@ -179447,15 +180508,15 @@ "params": [ { "type": "Identifier", - "start": 156696, - "end": 156704, + "start": 157210, + "end": 157218, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 13 }, "end": { - "line": 3894, + "line": 3902, "column": 21 }, "identifierName": "frameCtx" @@ -179465,87 +180526,87 @@ ], "body": { "type": "BlockStatement", - "start": 156706, - "end": 157548, + "start": 157220, + "end": 158062, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 23 }, "end": { - "line": 3913, + "line": 3921, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 156716, - "end": 156787, + "start": 157230, + "end": 157301, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 8 }, "end": { - "line": 3897, + "line": 3905, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 156720, - "end": 156754, + "start": 157234, + "end": 157268, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 12 }, "end": { - "line": 3895, + "line": 3903, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 156720, - "end": 156748, + "start": 157234, + "end": 157262, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 12 }, "end": { - "line": 3895, + "line": 3903, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 156720, - "end": 156724, + "start": 157234, + "end": 157238, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 12 }, "end": { - "line": 3895, + "line": 3903, "column": 16 } } }, "property": { "type": "Identifier", - "start": 156725, - "end": 156748, + "start": 157239, + "end": 157262, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 17 }, "end": { - "line": 3895, + "line": 3903, "column": 40 }, "identifierName": "numVisibleLayerPortions" @@ -179557,15 +180618,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 156753, - "end": 156754, + "start": 157267, + "end": 157268, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 45 }, "end": { - "line": 3895, + "line": 3903, "column": 46 } }, @@ -179578,30 +180639,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 156756, - "end": 156787, + "start": 157270, + "end": 157301, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 48 }, "end": { - "line": 3897, + "line": 3905, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 156770, - "end": 156777, + "start": 157284, + "end": 157291, "loc": { "start": { - "line": 3896, + "line": 3904, "column": 12 }, "end": { - "line": 3896, + "line": 3904, "column": 19 } }, @@ -179614,44 +180675,44 @@ }, { "type": "VariableDeclaration", - "start": 156796, - "end": 156833, + "start": 157310, + "end": 157347, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 8 }, "end": { - "line": 3898, + "line": 3906, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 156802, - "end": 156832, + "start": 157316, + "end": 157346, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 14 }, "end": { - "line": 3898, + "line": 3906, "column": 44 } }, "id": { "type": "Identifier", - "start": 156802, - "end": 156813, + "start": 157316, + "end": 157327, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 14 }, "end": { - "line": 3898, + "line": 3906, "column": 25 }, "identifierName": "renderFlags" @@ -179660,44 +180721,44 @@ }, "init": { "type": "MemberExpression", - "start": 156816, - "end": 156832, + "start": 157330, + "end": 157346, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 28 }, "end": { - "line": 3898, + "line": 3906, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 156816, - "end": 156820, + "start": 157330, + "end": 157334, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 28 }, "end": { - "line": 3898, + "line": 3906, "column": 32 } } }, "property": { "type": "Identifier", - "start": 156821, - "end": 156832, + "start": 157335, + "end": 157346, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 33 }, "end": { - "line": 3898, + "line": 3906, "column": 44 }, "identifierName": "renderFlags" @@ -179712,58 +180773,58 @@ }, { "type": "ForStatement", - "start": 156842, - "end": 157542, + "start": 157356, + "end": 158056, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 8 }, "end": { - "line": 3912, + "line": 3920, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 156847, - "end": 156896, + "start": 157361, + "end": 157410, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 13 }, "end": { - "line": 3899, + "line": 3907, "column": 62 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 156851, - "end": 156856, + "start": 157365, + "end": 157370, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 17 }, "end": { - "line": 3899, + "line": 3907, "column": 22 } }, "id": { "type": "Identifier", - "start": 156851, - "end": 156852, + "start": 157365, + "end": 157366, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 17 }, "end": { - "line": 3899, + "line": 3907, "column": 18 }, "identifierName": "i" @@ -179772,15 +180833,15 @@ }, "init": { "type": "NumericLiteral", - "start": 156855, - "end": 156856, + "start": 157369, + "end": 157370, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 21 }, "end": { - "line": 3899, + "line": 3907, "column": 22 } }, @@ -179793,29 +180854,29 @@ }, { "type": "VariableDeclarator", - "start": 156858, - "end": 156896, + "start": 157372, + "end": 157410, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 24 }, "end": { - "line": 3899, + "line": 3907, "column": 62 } }, "id": { "type": "Identifier", - "start": 156858, - "end": 156861, + "start": 157372, + "end": 157375, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 24 }, "end": { - "line": 3899, + "line": 3907, "column": 27 }, "identifierName": "len" @@ -179824,43 +180885,43 @@ }, "init": { "type": "MemberExpression", - "start": 156864, - "end": 156896, + "start": 157378, + "end": 157410, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 30 }, "end": { - "line": 3899, + "line": 3907, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 156864, - "end": 156889, + "start": 157378, + "end": 157403, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 30 }, "end": { - "line": 3899, + "line": 3907, "column": 55 } }, "object": { "type": "Identifier", - "start": 156864, - "end": 156875, + "start": 157378, + "end": 157389, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 30 }, "end": { - "line": 3899, + "line": 3907, "column": 41 }, "identifierName": "renderFlags" @@ -179869,15 +180930,15 @@ }, "property": { "type": "Identifier", - "start": 156876, - "end": 156889, + "start": 157390, + "end": 157403, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 42 }, "end": { - "line": 3899, + "line": 3907, "column": 55 }, "identifierName": "visibleLayers" @@ -179888,15 +180949,15 @@ }, "property": { "type": "Identifier", - "start": 156890, - "end": 156896, + "start": 157404, + "end": 157410, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 56 }, "end": { - "line": 3899, + "line": 3907, "column": 62 }, "identifierName": "length" @@ -179911,29 +180972,29 @@ }, "test": { "type": "BinaryExpression", - "start": 156898, - "end": 156905, + "start": 157412, + "end": 157419, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 64 }, "end": { - "line": 3899, + "line": 3907, "column": 71 } }, "left": { "type": "Identifier", - "start": 156898, - "end": 156899, + "start": 157412, + "end": 157413, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 64 }, "end": { - "line": 3899, + "line": 3907, "column": 65 }, "identifierName": "i" @@ -179943,15 +181004,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 156902, - "end": 156905, + "start": 157416, + "end": 157419, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 68 }, "end": { - "line": 3899, + "line": 3907, "column": 71 }, "identifierName": "len" @@ -179961,15 +181022,15 @@ }, "update": { "type": "UpdateExpression", - "start": 156907, - "end": 156910, + "start": 157421, + "end": 157424, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 73 }, "end": { - "line": 3899, + "line": 3907, "column": 76 } }, @@ -179977,15 +181038,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 156907, - "end": 156908, + "start": 157421, + "end": 157422, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 73 }, "end": { - "line": 3899, + "line": 3907, "column": 74 }, "identifierName": "i" @@ -179995,59 +181056,59 @@ }, "body": { "type": "BlockStatement", - "start": 156912, - "end": 157542, + "start": 157426, + "end": 158056, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 78 }, "end": { - "line": 3912, + "line": 3920, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 156926, - "end": 156974, + "start": 157440, + "end": 157488, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 12 }, "end": { - "line": 3900, + "line": 3908, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 156932, - "end": 156973, + "start": 157446, + "end": 157487, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 18 }, "end": { - "line": 3900, + "line": 3908, "column": 59 } }, "id": { "type": "Identifier", - "start": 156932, - "end": 156942, + "start": 157446, + "end": 157456, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 18 }, "end": { - "line": 3900, + "line": 3908, "column": 28 }, "identifierName": "layerIndex" @@ -180056,43 +181117,43 @@ }, "init": { "type": "MemberExpression", - "start": 156945, - "end": 156973, + "start": 157459, + "end": 157487, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 31 }, "end": { - "line": 3900, + "line": 3908, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 156945, - "end": 156970, + "start": 157459, + "end": 157484, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 31 }, "end": { - "line": 3900, + "line": 3908, "column": 56 } }, "object": { "type": "Identifier", - "start": 156945, - "end": 156956, + "start": 157459, + "end": 157470, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 31 }, "end": { - "line": 3900, + "line": 3908, "column": 42 }, "identifierName": "renderFlags" @@ -180101,15 +181162,15 @@ }, "property": { "type": "Identifier", - "start": 156957, - "end": 156970, + "start": 157471, + "end": 157484, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 43 }, "end": { - "line": 3900, + "line": 3908, "column": 56 }, "identifierName": "visibleLayers" @@ -180120,15 +181181,15 @@ }, "property": { "type": "Identifier", - "start": 156971, - "end": 156972, + "start": 157485, + "end": 157486, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 57 }, "end": { - "line": 3900, + "line": 3908, "column": 58 }, "identifierName": "i" @@ -180143,44 +181204,44 @@ }, { "type": "VariableDeclaration", - "start": 156987, - "end": 157028, + "start": 157501, + "end": 157542, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 12 }, "end": { - "line": 3901, + "line": 3909, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 156993, - "end": 157027, + "start": 157507, + "end": 157541, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 18 }, "end": { - "line": 3901, + "line": 3909, "column": 52 } }, "id": { "type": "Identifier", - "start": 156993, - "end": 156998, + "start": 157507, + "end": 157512, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 18 }, "end": { - "line": 3901, + "line": 3909, "column": 23 }, "identifierName": "layer" @@ -180189,58 +181250,58 @@ }, "init": { "type": "MemberExpression", - "start": 157001, - "end": 157027, + "start": 157515, + "end": 157541, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 26 }, "end": { - "line": 3901, + "line": 3909, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 157001, - "end": 157015, + "start": 157515, + "end": 157529, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 26 }, "end": { - "line": 3901, + "line": 3909, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 157001, - "end": 157005, + "start": 157515, + "end": 157519, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 26 }, "end": { - "line": 3901, + "line": 3909, "column": 30 } } }, "property": { "type": "Identifier", - "start": 157006, - "end": 157015, + "start": 157520, + "end": 157529, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 31 }, "end": { - "line": 3901, + "line": 3909, "column": 40 }, "identifierName": "layerList" @@ -180251,15 +181312,15 @@ }, "property": { "type": "Identifier", - "start": 157016, - "end": 157026, + "start": 157530, + "end": 157540, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 41 }, "end": { - "line": 3901, + "line": 3909, "column": 51 }, "identifierName": "layerIndex" @@ -180274,43 +181335,43 @@ }, { "type": "IfStatement", - "start": 157041, - "end": 157532, + "start": 157555, + "end": 158046, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 12 }, "end": { - "line": 3911, + "line": 3919, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 157045, - "end": 157059, + "start": 157559, + "end": 157573, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 16 }, "end": { - "line": 3902, + "line": 3910, "column": 30 } }, "object": { "type": "Identifier", - "start": 157045, - "end": 157050, + "start": 157559, + "end": 157564, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 16 }, "end": { - "line": 3902, + "line": 3910, "column": 21 }, "identifierName": "layer" @@ -180319,15 +181380,15 @@ }, "property": { "type": "Identifier", - "start": 157051, - "end": 157059, + "start": 157565, + "end": 157573, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 22 }, "end": { - "line": 3902, + "line": 3910, "column": 30 }, "identifierName": "drawSnap" @@ -180338,73 +181399,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 157061, - "end": 157532, + "start": 157575, + "end": 158046, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 32 }, "end": { - "line": 3911, + "line": 3919, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 157079, - "end": 157115, + "start": 157593, + "end": 157629, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 16 }, "end": { - "line": 3903, + "line": 3911, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 157079, - "end": 157114, + "start": 157593, + "end": 157628, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 16 }, "end": { - "line": 3903, + "line": 3911, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 157079, - "end": 157102, + "start": 157593, + "end": 157616, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 16 }, "end": { - "line": 3903, + "line": 3911, "column": 39 } }, "object": { "type": "Identifier", - "start": 157079, - "end": 157087, + "start": 157593, + "end": 157601, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 16 }, "end": { - "line": 3903, + "line": 3911, "column": 24 }, "identifierName": "frameCtx" @@ -180413,15 +181474,15 @@ }, "property": { "type": "Identifier", - "start": 157088, - "end": 157102, + "start": 157602, + "end": 157616, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 25 }, "end": { - "line": 3903, + "line": 3911, "column": 39 }, "identifierName": "snapPickOrigin" @@ -180432,30 +181493,30 @@ }, "right": { "type": "ArrayExpression", - "start": 157105, - "end": 157114, + "start": 157619, + "end": 157628, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 42 }, "end": { - "line": 3903, + "line": 3911, "column": 51 } }, "elements": [ { "type": "NumericLiteral", - "start": 157106, - "end": 157107, + "start": 157620, + "end": 157621, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 43 }, "end": { - "line": 3903, + "line": 3911, "column": 44 } }, @@ -180467,15 +181528,15 @@ }, { "type": "NumericLiteral", - "start": 157109, - "end": 157110, + "start": 157623, + "end": 157624, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 46 }, "end": { - "line": 3903, + "line": 3911, "column": 47 } }, @@ -180487,15 +181548,15 @@ }, { "type": "NumericLiteral", - "start": 157112, - "end": 157113, + "start": 157626, + "end": 157627, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 49 }, "end": { - "line": 3903, + "line": 3911, "column": 50 } }, @@ -180511,58 +181572,58 @@ }, { "type": "ExpressionStatement", - "start": 157132, - "end": 157177, + "start": 157646, + "end": 157691, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 16 }, "end": { - "line": 3904, + "line": 3912, "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 157132, - "end": 157176, + "start": 157646, + "end": 157690, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 16 }, "end": { - "line": 3904, + "line": 3912, "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 157132, - "end": 157164, + "start": 157646, + "end": 157678, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 16 }, "end": { - "line": 3904, + "line": 3912, "column": 48 } }, "object": { "type": "Identifier", - "start": 157132, - "end": 157140, + "start": 157646, + "end": 157654, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 16 }, "end": { - "line": 3904, + "line": 3912, "column": 24 }, "identifierName": "frameCtx" @@ -180571,15 +181632,15 @@ }, "property": { "type": "Identifier", - "start": 157141, - "end": 157164, + "start": 157655, + "end": 157678, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 25 }, "end": { - "line": 3904, + "line": 3912, "column": 48 }, "identifierName": "snapPickCoordinateScale" @@ -180590,30 +181651,30 @@ }, "right": { "type": "ArrayExpression", - "start": 157167, - "end": 157176, + "start": 157681, + "end": 157690, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 51 }, "end": { - "line": 3904, + "line": 3912, "column": 60 } }, "elements": [ { "type": "NumericLiteral", - "start": 157168, - "end": 157169, + "start": 157682, + "end": 157683, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 52 }, "end": { - "line": 3904, + "line": 3912, "column": 53 } }, @@ -180625,15 +181686,15 @@ }, { "type": "NumericLiteral", - "start": 157171, - "end": 157172, + "start": 157685, + "end": 157686, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 55 }, "end": { - "line": 3904, + "line": 3912, "column": 56 } }, @@ -180645,15 +181706,15 @@ }, { "type": "NumericLiteral", - "start": 157174, - "end": 157175, + "start": 157688, + "end": 157689, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 58 }, "end": { - "line": 3904, + "line": 3912, "column": 59 } }, @@ -180669,29 +181730,29 @@ }, { "type": "ExpressionStatement", - "start": 157194, - "end": 157225, + "start": 157708, + "end": 157739, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 16 }, "end": { - "line": 3905, + "line": 3913, "column": 47 } }, "expression": { "type": "UpdateExpression", - "start": 157194, - "end": 157224, + "start": 157708, + "end": 157738, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 16 }, "end": { - "line": 3905, + "line": 3913, "column": 46 } }, @@ -180699,29 +181760,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 157194, - "end": 157222, + "start": 157708, + "end": 157736, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 16 }, "end": { - "line": 3905, + "line": 3913, "column": 44 } }, "object": { "type": "Identifier", - "start": 157194, - "end": 157202, + "start": 157708, + "end": 157716, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 16 }, "end": { - "line": 3905, + "line": 3913, "column": 24 }, "identifierName": "frameCtx" @@ -180730,15 +181791,15 @@ }, "property": { "type": "Identifier", - "start": 157203, - "end": 157222, + "start": 157717, + "end": 157736, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 25 }, "end": { - "line": 3905, + "line": 3913, "column": 44 }, "identifierName": "snapPickLayerNumber" @@ -180751,57 +181812,57 @@ }, { "type": "ExpressionStatement", - "start": 157242, - "end": 157280, + "start": 157756, + "end": 157794, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 16 }, "end": { - "line": 3906, + "line": 3914, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 157242, - "end": 157279, + "start": 157756, + "end": 157793, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 16 }, "end": { - "line": 3906, + "line": 3914, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 157242, - "end": 157256, + "start": 157756, + "end": 157770, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 16 }, "end": { - "line": 3906, + "line": 3914, "column": 30 } }, "object": { "type": "Identifier", - "start": 157242, - "end": 157247, + "start": 157756, + "end": 157761, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 16 }, "end": { - "line": 3906, + "line": 3914, "column": 21 }, "identifierName": "layer" @@ -180810,15 +181871,15 @@ }, "property": { "type": "Identifier", - "start": 157248, - "end": 157256, + "start": 157762, + "end": 157770, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 22 }, "end": { - "line": 3906, + "line": 3914, "column": 30 }, "identifierName": "drawSnap" @@ -180830,15 +181891,15 @@ "arguments": [ { "type": "Identifier", - "start": 157257, - "end": 157268, + "start": 157771, + "end": 157782, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 31 }, "end": { - "line": 3906, + "line": 3914, "column": 42 }, "identifierName": "renderFlags" @@ -180847,15 +181908,15 @@ }, { "type": "Identifier", - "start": 157270, - "end": 157278, + "start": 157784, + "end": 157792, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 44 }, "end": { - "line": 3906, + "line": 3914, "column": 52 }, "identifierName": "frameCtx" @@ -180867,72 +181928,72 @@ }, { "type": "ExpressionStatement", - "start": 157297, - "end": 157518, + "start": 157811, + "end": 158032, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 16 }, "end": { - "line": 3910, + "line": 3918, "column": 18 } }, "expression": { "type": "AssignmentExpression", - "start": 157297, - "end": 157517, + "start": 157811, + "end": 158031, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 16 }, "end": { - "line": 3910, + "line": 3918, "column": 17 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 157297, - "end": 157355, + "start": 157811, + "end": 157869, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 16 }, "end": { - "line": 3907, + "line": 3915, "column": 74 } }, "object": { "type": "MemberExpression", - "start": 157297, - "end": 157325, + "start": 157811, + "end": 157839, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 16 }, "end": { - "line": 3907, + "line": 3915, "column": 44 } }, "object": { "type": "Identifier", - "start": 157297, - "end": 157305, + "start": 157811, + "end": 157819, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 16 }, "end": { - "line": 3907, + "line": 3915, "column": 24 }, "identifierName": "frameCtx" @@ -180941,15 +182002,15 @@ }, "property": { "type": "Identifier", - "start": 157306, - "end": 157325, + "start": 157820, + "end": 157839, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 25 }, "end": { - "line": 3907, + "line": 3915, "column": 44 }, "identifierName": "snapPickLayerParams" @@ -180960,29 +182021,29 @@ }, "property": { "type": "MemberExpression", - "start": 157326, - "end": 157354, + "start": 157840, + "end": 157868, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 45 }, "end": { - "line": 3907, + "line": 3915, "column": 73 } }, "object": { "type": "Identifier", - "start": 157326, - "end": 157334, + "start": 157840, + "end": 157848, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 45 }, "end": { - "line": 3907, + "line": 3915, "column": 53 }, "identifierName": "frameCtx" @@ -180991,15 +182052,15 @@ }, "property": { "type": "Identifier", - "start": 157335, - "end": 157354, + "start": 157849, + "end": 157868, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 54 }, "end": { - "line": 3907, + "line": 3915, "column": 73 }, "identifierName": "snapPickLayerNumber" @@ -181012,30 +182073,30 @@ }, "right": { "type": "ObjectExpression", - "start": 157358, - "end": 157517, + "start": 157872, + "end": 158031, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 77 }, "end": { - "line": 3910, + "line": 3918, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 157380, - "end": 157419, + "start": 157894, + "end": 157933, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 20 }, "end": { - "line": 3908, + "line": 3916, "column": 59 } }, @@ -181044,15 +182105,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 157380, - "end": 157386, + "start": 157894, + "end": 157900, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 20 }, "end": { - "line": 3908, + "line": 3916, "column": 26 }, "identifierName": "origin" @@ -181061,57 +182122,57 @@ }, "value": { "type": "CallExpression", - "start": 157388, - "end": 157419, + "start": 157902, + "end": 157933, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 28 }, "end": { - "line": 3908, + "line": 3916, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 157388, - "end": 157417, + "start": 157902, + "end": 157931, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 28 }, "end": { - "line": 3908, + "line": 3916, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 157388, - "end": 157411, + "start": 157902, + "end": 157925, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 28 }, "end": { - "line": 3908, + "line": 3916, "column": 51 } }, "object": { "type": "Identifier", - "start": 157388, - "end": 157396, + "start": 157902, + "end": 157910, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 28 }, "end": { - "line": 3908, + "line": 3916, "column": 36 }, "identifierName": "frameCtx" @@ -181120,15 +182181,15 @@ }, "property": { "type": "Identifier", - "start": 157397, - "end": 157411, + "start": 157911, + "end": 157925, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 37 }, "end": { - "line": 3908, + "line": 3916, "column": 51 }, "identifierName": "snapPickOrigin" @@ -181139,15 +182200,15 @@ }, "property": { "type": "Identifier", - "start": 157412, - "end": 157417, + "start": 157926, + "end": 157931, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 52 }, "end": { - "line": 3908, + "line": 3916, "column": 57 }, "identifierName": "slice" @@ -181161,15 +182222,15 @@ }, { "type": "ObjectProperty", - "start": 157441, - "end": 157498, + "start": 157955, + "end": 158012, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 20 }, "end": { - "line": 3909, + "line": 3917, "column": 77 } }, @@ -181178,15 +182239,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 157441, - "end": 157456, + "start": 157955, + "end": 157970, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 20 }, "end": { - "line": 3909, + "line": 3917, "column": 35 }, "identifierName": "coordinateScale" @@ -181195,57 +182256,57 @@ }, "value": { "type": "CallExpression", - "start": 157458, - "end": 157498, + "start": 157972, + "end": 158012, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 37 }, "end": { - "line": 3909, + "line": 3917, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 157458, - "end": 157496, + "start": 157972, + "end": 158010, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 37 }, "end": { - "line": 3909, + "line": 3917, "column": 75 } }, "object": { "type": "MemberExpression", - "start": 157458, - "end": 157490, + "start": 157972, + "end": 158004, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 37 }, "end": { - "line": 3909, + "line": 3917, "column": 69 } }, "object": { "type": "Identifier", - "start": 157458, - "end": 157466, + "start": 157972, + "end": 157980, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 37 }, "end": { - "line": 3909, + "line": 3917, "column": 45 }, "identifierName": "frameCtx" @@ -181254,15 +182315,15 @@ }, "property": { "type": "Identifier", - "start": 157467, - "end": 157490, + "start": 157981, + "end": 158004, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 46 }, "end": { - "line": 3909, + "line": 3917, "column": 69 }, "identifierName": "snapPickCoordinateScale" @@ -181273,15 +182334,15 @@ }, "property": { "type": "Identifier", - "start": 157491, - "end": 157496, + "start": 158005, + "end": 158010, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 70 }, "end": { - "line": 3909, + "line": 3917, "column": 75 }, "identifierName": "slice" @@ -181314,15 +182375,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 156655, - "end": 156682, + "start": 157169, + "end": 157196, "loc": { "start": { - "line": 3891, + "line": 3899, "column": 4 }, "end": { - "line": 3893, + "line": 3901, "column": 7 } } @@ -181332,15 +182393,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this SceneModel.\n ", - "start": 157554, - "end": 157598, + "start": 158068, + "end": 158112, "loc": { "start": { - "line": 3915, + "line": 3923, "column": 4 }, "end": { - "line": 3917, + "line": 3925, "column": 7 } } @@ -181349,15 +182410,15 @@ }, { "type": "ClassMethod", - "start": 157603, - "end": 158965, + "start": 158117, + "end": 159479, "loc": { "start": { - "line": 3918, + "line": 3926, "column": 4 }, "end": { - "line": 3955, + "line": 3963, "column": 5 } }, @@ -181365,15 +182426,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 157603, - "end": 157610, + "start": 158117, + "end": 158124, "loc": { "start": { - "line": 3918, + "line": 3926, "column": 4 }, "end": { - "line": 3918, + "line": 3926, "column": 11 }, "identifierName": "destroy" @@ -181389,73 +182450,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 157613, - "end": 158965, + "start": 158127, + "end": 159479, "loc": { "start": { - "line": 3918, + "line": 3926, "column": 14 }, "end": { - "line": 3955, + "line": 3963, "column": 5 } }, "body": [ { "type": "ForInStatement", - "start": 157623, - "end": 157820, + "start": 158137, + "end": 158334, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 8 }, "end": { - "line": 3923, + "line": 3931, "column": 9 } }, "left": { "type": "VariableDeclaration", - "start": 157628, - "end": 157639, + "start": 158142, + "end": 158153, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 13 }, "end": { - "line": 3919, + "line": 3927, "column": 24 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 157632, - "end": 157639, + "start": 158146, + "end": 158153, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 17 }, "end": { - "line": 3919, + "line": 3927, "column": 24 } }, "id": { "type": "Identifier", - "start": 157632, - "end": 157639, + "start": 158146, + "end": 158153, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 17 }, "end": { - "line": 3919, + "line": 3927, "column": 24 }, "identifierName": "layerId" @@ -181469,44 +182530,44 @@ }, "right": { "type": "MemberExpression", - "start": 157643, - "end": 157666, + "start": 158157, + "end": 158180, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 28 }, "end": { - "line": 3919, + "line": 3927, "column": 51 } }, "object": { "type": "ThisExpression", - "start": 157643, - "end": 157647, + "start": 158157, + "end": 158161, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 28 }, "end": { - "line": 3919, + "line": 3927, "column": 32 } } }, "property": { "type": "Identifier", - "start": 157648, - "end": 157666, + "start": 158162, + "end": 158180, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 33 }, "end": { - "line": 3919, + "line": 3927, "column": 51 }, "identifierName": "_vboBatchingLayers" @@ -181517,101 +182578,101 @@ }, "body": { "type": "BlockStatement", - "start": 157668, - "end": 157820, + "start": 158182, + "end": 158334, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 53 }, "end": { - "line": 3923, + "line": 3931, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 157682, - "end": 157810, + "start": 158196, + "end": 158324, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 12 }, "end": { - "line": 3922, + "line": 3930, "column": 13 } }, "test": { "type": "CallExpression", - "start": 157686, - "end": 157733, + "start": 158200, + "end": 158247, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 16 }, "end": { - "line": 3920, + "line": 3928, "column": 63 } }, "callee": { "type": "MemberExpression", - "start": 157686, - "end": 157724, + "start": 158200, + "end": 158238, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 16 }, "end": { - "line": 3920, + "line": 3928, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 157686, - "end": 157709, + "start": 158200, + "end": 158223, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 16 }, "end": { - "line": 3920, + "line": 3928, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 157686, - "end": 157690, + "start": 158200, + "end": 158204, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 16 }, "end": { - "line": 3920, + "line": 3928, "column": 20 } } }, "property": { "type": "Identifier", - "start": 157691, - "end": 157709, + "start": 158205, + "end": 158223, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 21 }, "end": { - "line": 3920, + "line": 3928, "column": 39 }, "identifierName": "_vboBatchingLayers" @@ -181622,15 +182683,15 @@ }, "property": { "type": "Identifier", - "start": 157710, - "end": 157724, + "start": 158224, + "end": 158238, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 40 }, "end": { - "line": 3920, + "line": 3928, "column": 54 }, "identifierName": "hasOwnProperty" @@ -181642,15 +182703,15 @@ "arguments": [ { "type": "Identifier", - "start": 157725, - "end": 157732, + "start": 158239, + "end": 158246, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 55 }, "end": { - "line": 3920, + "line": 3928, "column": 62 }, "identifierName": "layerId" @@ -181661,115 +182722,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 157735, - "end": 157810, + "start": 158249, + "end": 158324, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 65 }, "end": { - "line": 3922, + "line": 3930, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 157753, - "end": 157796, + "start": 158267, + "end": 158310, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 16 }, "end": { - "line": 3921, + "line": 3929, "column": 59 } }, "expression": { "type": "CallExpression", - "start": 157753, - "end": 157795, + "start": 158267, + "end": 158309, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 16 }, "end": { - "line": 3921, + "line": 3929, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 157753, - "end": 157793, + "start": 158267, + "end": 158307, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 16 }, "end": { - "line": 3921, + "line": 3929, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 157753, - "end": 157785, + "start": 158267, + "end": 158299, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 16 }, "end": { - "line": 3921, + "line": 3929, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 157753, - "end": 157776, + "start": 158267, + "end": 158290, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 16 }, "end": { - "line": 3921, + "line": 3929, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 157753, - "end": 157757, + "start": 158267, + "end": 158271, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 16 }, "end": { - "line": 3921, + "line": 3929, "column": 20 } } }, "property": { "type": "Identifier", - "start": 157758, - "end": 157776, + "start": 158272, + "end": 158290, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 21 }, "end": { - "line": 3921, + "line": 3929, "column": 39 }, "identifierName": "_vboBatchingLayers" @@ -181780,15 +182841,15 @@ }, "property": { "type": "Identifier", - "start": 157777, - "end": 157784, + "start": 158291, + "end": 158298, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 40 }, "end": { - "line": 3921, + "line": 3929, "column": 47 }, "identifierName": "layerId" @@ -181799,15 +182860,15 @@ }, "property": { "type": "Identifier", - "start": 157786, - "end": 157793, + "start": 158300, + "end": 158307, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 49 }, "end": { - "line": 3921, + "line": 3929, "column": 56 }, "identifierName": "destroy" @@ -181830,73 +182891,73 @@ }, { "type": "ExpressionStatement", - "start": 157829, - "end": 157858, + "start": 158343, + "end": 158372, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 8 }, "end": { - "line": 3924, + "line": 3932, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 157829, - "end": 157857, + "start": 158343, + "end": 158371, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 8 }, "end": { - "line": 3924, + "line": 3932, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 157829, - "end": 157852, + "start": 158343, + "end": 158366, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 8 }, "end": { - "line": 3924, + "line": 3932, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 157829, - "end": 157833, + "start": 158343, + "end": 158347, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 8 }, "end": { - "line": 3924, + "line": 3932, "column": 12 } } }, "property": { "type": "Identifier", - "start": 157834, - "end": 157852, + "start": 158348, + "end": 158366, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 13 }, "end": { - "line": 3924, + "line": 3932, "column": 31 }, "identifierName": "_vboBatchingLayers" @@ -181907,15 +182968,15 @@ }, "right": { "type": "ObjectExpression", - "start": 157855, - "end": 157857, + "start": 158369, + "end": 158371, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 34 }, "end": { - "line": 3924, + "line": 3932, "column": 36 } }, @@ -181925,58 +182986,58 @@ }, { "type": "ForInStatement", - "start": 157867, - "end": 158070, + "start": 158381, + "end": 158584, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 8 }, "end": { - "line": 3929, + "line": 3937, "column": 9 } }, "left": { "type": "VariableDeclaration", - "start": 157872, - "end": 157883, + "start": 158386, + "end": 158397, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 13 }, "end": { - "line": 3925, + "line": 3933, "column": 24 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 157876, - "end": 157883, + "start": 158390, + "end": 158397, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 17 }, "end": { - "line": 3925, + "line": 3933, "column": 24 } }, "id": { "type": "Identifier", - "start": 157876, - "end": 157883, + "start": 158390, + "end": 158397, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 17 }, "end": { - "line": 3925, + "line": 3933, "column": 24 }, "identifierName": "layerId" @@ -181990,44 +183051,44 @@ }, "right": { "type": "MemberExpression", - "start": 157887, - "end": 157912, + "start": 158401, + "end": 158426, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 28 }, "end": { - "line": 3925, + "line": 3933, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 157887, - "end": 157891, + "start": 158401, + "end": 158405, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 28 }, "end": { - "line": 3925, + "line": 3933, "column": 32 } } }, "property": { "type": "Identifier", - "start": 157892, - "end": 157912, + "start": 158406, + "end": 158426, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 33 }, "end": { - "line": 3925, + "line": 3933, "column": 53 }, "identifierName": "_vboInstancingLayers" @@ -182038,101 +183099,101 @@ }, "body": { "type": "BlockStatement", - "start": 157914, - "end": 158070, + "start": 158428, + "end": 158584, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 55 }, "end": { - "line": 3929, + "line": 3937, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 157928, - "end": 158060, + "start": 158442, + "end": 158574, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 12 }, "end": { - "line": 3928, + "line": 3936, "column": 13 } }, "test": { "type": "CallExpression", - "start": 157932, - "end": 157981, + "start": 158446, + "end": 158495, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 16 }, "end": { - "line": 3926, + "line": 3934, "column": 65 } }, "callee": { "type": "MemberExpression", - "start": 157932, - "end": 157972, + "start": 158446, + "end": 158486, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 16 }, "end": { - "line": 3926, + "line": 3934, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 157932, - "end": 157957, + "start": 158446, + "end": 158471, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 16 }, "end": { - "line": 3926, + "line": 3934, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 157932, - "end": 157936, + "start": 158446, + "end": 158450, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 16 }, "end": { - "line": 3926, + "line": 3934, "column": 20 } } }, "property": { "type": "Identifier", - "start": 157937, - "end": 157957, + "start": 158451, + "end": 158471, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 21 }, "end": { - "line": 3926, + "line": 3934, "column": 41 }, "identifierName": "_vboInstancingLayers" @@ -182143,15 +183204,15 @@ }, "property": { "type": "Identifier", - "start": 157958, - "end": 157972, + "start": 158472, + "end": 158486, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 42 }, "end": { - "line": 3926, + "line": 3934, "column": 56 }, "identifierName": "hasOwnProperty" @@ -182163,15 +183224,15 @@ "arguments": [ { "type": "Identifier", - "start": 157973, - "end": 157980, + "start": 158487, + "end": 158494, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 57 }, "end": { - "line": 3926, + "line": 3934, "column": 64 }, "identifierName": "layerId" @@ -182182,115 +183243,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 157983, - "end": 158060, + "start": 158497, + "end": 158574, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 67 }, "end": { - "line": 3928, + "line": 3936, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 158001, - "end": 158046, + "start": 158515, + "end": 158560, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 16 }, "end": { - "line": 3927, + "line": 3935, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 158001, - "end": 158045, + "start": 158515, + "end": 158559, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 16 }, "end": { - "line": 3927, + "line": 3935, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 158001, - "end": 158043, + "start": 158515, + "end": 158557, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 16 }, "end": { - "line": 3927, + "line": 3935, "column": 58 } }, "object": { "type": "MemberExpression", - "start": 158001, - "end": 158035, + "start": 158515, + "end": 158549, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 16 }, "end": { - "line": 3927, + "line": 3935, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 158001, - "end": 158026, + "start": 158515, + "end": 158540, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 16 }, "end": { - "line": 3927, + "line": 3935, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 158001, - "end": 158005, + "start": 158515, + "end": 158519, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 16 }, "end": { - "line": 3927, + "line": 3935, "column": 20 } } }, "property": { "type": "Identifier", - "start": 158006, - "end": 158026, + "start": 158520, + "end": 158540, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 21 }, "end": { - "line": 3927, + "line": 3935, "column": 41 }, "identifierName": "_vboInstancingLayers" @@ -182301,15 +183362,15 @@ }, "property": { "type": "Identifier", - "start": 158027, - "end": 158034, + "start": 158541, + "end": 158548, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 42 }, "end": { - "line": 3927, + "line": 3935, "column": 49 }, "identifierName": "layerId" @@ -182320,15 +183381,15 @@ }, "property": { "type": "Identifier", - "start": 158036, - "end": 158043, + "start": 158550, + "end": 158557, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 51 }, "end": { - "line": 3927, + "line": 3935, "column": 58 }, "identifierName": "destroy" @@ -182351,73 +183412,73 @@ }, { "type": "ExpressionStatement", - "start": 158079, - "end": 158110, + "start": 158593, + "end": 158624, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 8 }, "end": { - "line": 3930, + "line": 3938, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 158079, - "end": 158109, + "start": 158593, + "end": 158623, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 8 }, "end": { - "line": 3930, + "line": 3938, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158079, - "end": 158104, + "start": 158593, + "end": 158618, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 8 }, "end": { - "line": 3930, + "line": 3938, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 158079, - "end": 158083, + "start": 158593, + "end": 158597, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 8 }, "end": { - "line": 3930, + "line": 3938, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158084, - "end": 158104, + "start": 158598, + "end": 158618, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 13 }, "end": { - "line": 3930, + "line": 3938, "column": 33 }, "identifierName": "_vboInstancingLayers" @@ -182428,15 +183489,15 @@ }, "right": { "type": "ObjectExpression", - "start": 158107, - "end": 158109, + "start": 158621, + "end": 158623, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 36 }, "end": { - "line": 3930, + "line": 3938, "column": 38 } }, @@ -182446,100 +183507,100 @@ }, { "type": "ExpressionStatement", - "start": 158119, - "end": 158167, + "start": 158633, + "end": 158681, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 8 }, "end": { - "line": 3931, + "line": 3939, "column": 56 } }, "expression": { "type": "CallExpression", - "start": 158119, - "end": 158166, + "start": 158633, + "end": 158680, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 8 }, "end": { - "line": 3931, + "line": 3939, "column": 55 } }, "callee": { "type": "MemberExpression", - "start": 158119, - "end": 158140, + "start": 158633, + "end": 158654, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 8 }, "end": { - "line": 3931, + "line": 3939, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 158119, - "end": 158136, + "start": 158633, + "end": 158650, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 8 }, "end": { - "line": 3931, + "line": 3939, "column": 25 } }, "object": { "type": "MemberExpression", - "start": 158119, - "end": 158129, + "start": 158633, + "end": 158643, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 8 }, "end": { - "line": 3931, + "line": 3939, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 158119, - "end": 158123, + "start": 158633, + "end": 158637, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 8 }, "end": { - "line": 3931, + "line": 3939, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158124, - "end": 158129, + "start": 158638, + "end": 158643, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 13 }, "end": { - "line": 3931, + "line": 3939, "column": 18 }, "identifierName": "scene" @@ -182550,15 +183611,15 @@ }, "property": { "type": "Identifier", - "start": 158130, - "end": 158136, + "start": 158644, + "end": 158650, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 19 }, "end": { - "line": 3931, + "line": 3939, "column": 25 }, "identifierName": "camera" @@ -182569,15 +183630,15 @@ }, "property": { "type": "Identifier", - "start": 158137, - "end": 158140, + "start": 158651, + "end": 158654, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 26 }, "end": { - "line": 3931, + "line": 3939, "column": 29 }, "identifierName": "off" @@ -182589,44 +183650,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 158141, - "end": 158165, + "start": 158655, + "end": 158679, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 30 }, "end": { - "line": 3931, + "line": 3939, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 158141, - "end": 158145, + "start": 158655, + "end": 158659, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 30 }, "end": { - "line": 3931, + "line": 3939, "column": 34 } } }, "property": { "type": "Identifier", - "start": 158146, - "end": 158165, + "start": 158660, + "end": 158679, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 35 }, "end": { - "line": 3931, + "line": 3939, "column": 54 }, "identifierName": "_onCameraViewMatrix" @@ -182640,86 +183701,86 @@ }, { "type": "ExpressionStatement", - "start": 158176, - "end": 158205, + "start": 158690, + "end": 158719, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 8 }, "end": { - "line": 3932, + "line": 3940, "column": 37 } }, "expression": { "type": "CallExpression", - "start": 158176, - "end": 158204, + "start": 158690, + "end": 158718, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 8 }, "end": { - "line": 3932, + "line": 3940, "column": 36 } }, "callee": { "type": "MemberExpression", - "start": 158176, - "end": 158190, + "start": 158690, + "end": 158704, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 8 }, "end": { - "line": 3932, + "line": 3940, "column": 22 } }, "object": { "type": "MemberExpression", - "start": 158176, - "end": 158186, + "start": 158690, + "end": 158700, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 8 }, "end": { - "line": 3932, + "line": 3940, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 158176, - "end": 158180, + "start": 158690, + "end": 158694, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 8 }, "end": { - "line": 3932, + "line": 3940, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158181, - "end": 158186, + "start": 158695, + "end": 158700, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 13 }, "end": { - "line": 3932, + "line": 3940, "column": 18 }, "identifierName": "scene" @@ -182730,15 +183791,15 @@ }, "property": { "type": "Identifier", - "start": 158187, - "end": 158190, + "start": 158701, + "end": 158704, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 19 }, "end": { - "line": 3932, + "line": 3940, "column": 22 }, "identifierName": "off" @@ -182750,44 +183811,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 158191, - "end": 158203, + "start": 158705, + "end": 158717, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 23 }, "end": { - "line": 3932, + "line": 3940, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 158191, - "end": 158195, + "start": 158705, + "end": 158709, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 23 }, "end": { - "line": 3932, + "line": 3940, "column": 27 } } }, "property": { "type": "Identifier", - "start": 158196, - "end": 158203, + "start": 158710, + "end": 158717, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 28 }, "end": { - "line": 3932, + "line": 3940, "column": 35 }, "identifierName": "_onTick" @@ -182801,58 +183862,58 @@ }, { "type": "ForStatement", - "start": 158214, - "end": 158325, + "start": 158728, + "end": 158839, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 8 }, "end": { - "line": 3935, + "line": 3943, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 158219, - "end": 158257, + "start": 158733, + "end": 158771, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 13 }, "end": { - "line": 3933, + "line": 3941, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 158223, - "end": 158228, + "start": 158737, + "end": 158742, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 17 }, "end": { - "line": 3933, + "line": 3941, "column": 22 } }, "id": { "type": "Identifier", - "start": 158223, - "end": 158224, + "start": 158737, + "end": 158738, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 17 }, "end": { - "line": 3933, + "line": 3941, "column": 18 }, "identifierName": "i" @@ -182861,15 +183922,15 @@ }, "init": { "type": "NumericLiteral", - "start": 158227, - "end": 158228, + "start": 158741, + "end": 158742, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 21 }, "end": { - "line": 3933, + "line": 3941, "column": 22 } }, @@ -182882,29 +183943,29 @@ }, { "type": "VariableDeclarator", - "start": 158230, - "end": 158257, + "start": 158744, + "end": 158771, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 24 }, "end": { - "line": 3933, + "line": 3941, "column": 51 } }, "id": { "type": "Identifier", - "start": 158230, - "end": 158233, + "start": 158744, + "end": 158747, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 24 }, "end": { - "line": 3933, + "line": 3941, "column": 27 }, "identifierName": "len" @@ -182913,58 +183974,58 @@ }, "init": { "type": "MemberExpression", - "start": 158236, - "end": 158257, + "start": 158750, + "end": 158771, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 30 }, "end": { - "line": 3933, + "line": 3941, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 158236, - "end": 158250, + "start": 158750, + "end": 158764, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 30 }, "end": { - "line": 3933, + "line": 3941, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 158236, - "end": 158240, + "start": 158750, + "end": 158754, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 30 }, "end": { - "line": 3933, + "line": 3941, "column": 34 } } }, "property": { "type": "Identifier", - "start": 158241, - "end": 158250, + "start": 158755, + "end": 158764, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 35 }, "end": { - "line": 3933, + "line": 3941, "column": 44 }, "identifierName": "layerList" @@ -182975,15 +184036,15 @@ }, "property": { "type": "Identifier", - "start": 158251, - "end": 158257, + "start": 158765, + "end": 158771, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 45 }, "end": { - "line": 3933, + "line": 3941, "column": 51 }, "identifierName": "length" @@ -182998,29 +184059,29 @@ }, "test": { "type": "BinaryExpression", - "start": 158259, - "end": 158266, + "start": 158773, + "end": 158780, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 53 }, "end": { - "line": 3933, + "line": 3941, "column": 60 } }, "left": { "type": "Identifier", - "start": 158259, - "end": 158260, + "start": 158773, + "end": 158774, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 53 }, "end": { - "line": 3933, + "line": 3941, "column": 54 }, "identifierName": "i" @@ -183030,15 +184091,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 158263, - "end": 158266, + "start": 158777, + "end": 158780, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 57 }, "end": { - "line": 3933, + "line": 3941, "column": 60 }, "identifierName": "len" @@ -183048,15 +184109,15 @@ }, "update": { "type": "UpdateExpression", - "start": 158268, - "end": 158271, + "start": 158782, + "end": 158785, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 62 }, "end": { - "line": 3933, + "line": 3941, "column": 65 } }, @@ -183064,15 +184125,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 158268, - "end": 158269, + "start": 158782, + "end": 158783, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 62 }, "end": { - "line": 3933, + "line": 3941, "column": 63 }, "identifierName": "i" @@ -183082,115 +184143,115 @@ }, "body": { "type": "BlockStatement", - "start": 158273, - "end": 158325, + "start": 158787, + "end": 158839, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 67 }, "end": { - "line": 3935, + "line": 3943, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 158287, - "end": 158315, + "start": 158801, + "end": 158829, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 12 }, "end": { - "line": 3934, + "line": 3942, "column": 40 } }, "expression": { "type": "CallExpression", - "start": 158287, - "end": 158314, + "start": 158801, + "end": 158828, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 12 }, "end": { - "line": 3934, + "line": 3942, "column": 39 } }, "callee": { "type": "MemberExpression", - "start": 158287, - "end": 158312, + "start": 158801, + "end": 158826, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 12 }, "end": { - "line": 3934, + "line": 3942, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 158287, - "end": 158304, + "start": 158801, + "end": 158818, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 12 }, "end": { - "line": 3934, + "line": 3942, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 158287, - "end": 158301, + "start": 158801, + "end": 158815, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 12 }, "end": { - "line": 3934, + "line": 3942, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 158287, - "end": 158291, + "start": 158801, + "end": 158805, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 12 }, "end": { - "line": 3934, + "line": 3942, "column": 16 } } }, "property": { "type": "Identifier", - "start": 158292, - "end": 158301, + "start": 158806, + "end": 158815, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 17 }, "end": { - "line": 3934, + "line": 3942, "column": 26 }, "identifierName": "layerList" @@ -183201,15 +184262,15 @@ }, "property": { "type": "Identifier", - "start": 158302, - "end": 158303, + "start": 158816, + "end": 158817, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 27 }, "end": { - "line": 3934, + "line": 3942, "column": 28 }, "identifierName": "i" @@ -183220,15 +184281,15 @@ }, "property": { "type": "Identifier", - "start": 158305, - "end": 158312, + "start": 158819, + "end": 158826, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 30 }, "end": { - "line": 3934, + "line": 3942, "column": 37 }, "identifierName": "destroy" @@ -183246,73 +184307,73 @@ }, { "type": "ExpressionStatement", - "start": 158334, - "end": 158354, + "start": 158848, + "end": 158868, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 8 }, "end": { - "line": 3936, + "line": 3944, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 158334, - "end": 158353, + "start": 158848, + "end": 158867, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 8 }, "end": { - "line": 3936, + "line": 3944, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158334, - "end": 158348, + "start": 158848, + "end": 158862, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 8 }, "end": { - "line": 3936, + "line": 3944, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 158334, - "end": 158338, + "start": 158848, + "end": 158852, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 8 }, "end": { - "line": 3936, + "line": 3944, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158339, - "end": 158348, + "start": 158853, + "end": 158862, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 13 }, "end": { - "line": 3936, + "line": 3944, "column": 22 }, "identifierName": "layerList" @@ -183323,15 +184384,15 @@ }, "right": { "type": "ArrayExpression", - "start": 158351, - "end": 158353, + "start": 158865, + "end": 158867, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 25 }, "end": { - "line": 3936, + "line": 3944, "column": 27 } }, @@ -183341,58 +184402,58 @@ }, { "type": "ForStatement", - "start": 158363, - "end": 158479, + "start": 158877, + "end": 158993, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 8 }, "end": { - "line": 3939, + "line": 3947, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 158368, - "end": 158408, + "start": 158882, + "end": 158922, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 13 }, "end": { - "line": 3937, + "line": 3945, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 158372, - "end": 158377, + "start": 158886, + "end": 158891, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 17 }, "end": { - "line": 3937, + "line": 3945, "column": 22 } }, "id": { "type": "Identifier", - "start": 158372, - "end": 158373, + "start": 158886, + "end": 158887, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 17 }, "end": { - "line": 3937, + "line": 3945, "column": 18 }, "identifierName": "i" @@ -183401,15 +184462,15 @@ }, "init": { "type": "NumericLiteral", - "start": 158376, - "end": 158377, + "start": 158890, + "end": 158891, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 21 }, "end": { - "line": 3937, + "line": 3945, "column": 22 } }, @@ -183422,29 +184483,29 @@ }, { "type": "VariableDeclarator", - "start": 158379, - "end": 158408, + "start": 158893, + "end": 158922, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 24 }, "end": { - "line": 3937, + "line": 3945, "column": 53 } }, "id": { "type": "Identifier", - "start": 158379, - "end": 158382, + "start": 158893, + "end": 158896, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 24 }, "end": { - "line": 3937, + "line": 3945, "column": 27 }, "identifierName": "len" @@ -183453,58 +184514,58 @@ }, "init": { "type": "MemberExpression", - "start": 158385, - "end": 158408, + "start": 158899, + "end": 158922, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 30 }, "end": { - "line": 3937, + "line": 3945, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 158385, - "end": 158401, + "start": 158899, + "end": 158915, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 30 }, "end": { - "line": 3937, + "line": 3945, "column": 46 } }, "object": { "type": "ThisExpression", - "start": 158385, - "end": 158389, + "start": 158899, + "end": 158903, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 30 }, "end": { - "line": 3937, + "line": 3945, "column": 34 } } }, "property": { "type": "Identifier", - "start": 158390, - "end": 158401, + "start": 158904, + "end": 158915, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 35 }, "end": { - "line": 3937, + "line": 3945, "column": 46 }, "identifierName": "_entityList" @@ -183515,15 +184576,15 @@ }, "property": { "type": "Identifier", - "start": 158402, - "end": 158408, + "start": 158916, + "end": 158922, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 47 }, "end": { - "line": 3937, + "line": 3945, "column": 53 }, "identifierName": "length" @@ -183538,29 +184599,29 @@ }, "test": { "type": "BinaryExpression", - "start": 158410, - "end": 158417, + "start": 158924, + "end": 158931, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 55 }, "end": { - "line": 3937, + "line": 3945, "column": 62 } }, "left": { "type": "Identifier", - "start": 158410, - "end": 158411, + "start": 158924, + "end": 158925, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 55 }, "end": { - "line": 3937, + "line": 3945, "column": 56 }, "identifierName": "i" @@ -183570,15 +184631,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 158414, - "end": 158417, + "start": 158928, + "end": 158931, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 59 }, "end": { - "line": 3937, + "line": 3945, "column": 62 }, "identifierName": "len" @@ -183588,15 +184649,15 @@ }, "update": { "type": "UpdateExpression", - "start": 158419, - "end": 158422, + "start": 158933, + "end": 158936, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 64 }, "end": { - "line": 3937, + "line": 3945, "column": 67 } }, @@ -183604,15 +184665,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 158419, - "end": 158420, + "start": 158933, + "end": 158934, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 64 }, "end": { - "line": 3937, + "line": 3945, "column": 65 }, "identifierName": "i" @@ -183622,115 +184683,115 @@ }, "body": { "type": "BlockStatement", - "start": 158424, - "end": 158479, + "start": 158938, + "end": 158993, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 69 }, "end": { - "line": 3939, + "line": 3947, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 158438, - "end": 158469, + "start": 158952, + "end": 158983, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 12 }, "end": { - "line": 3938, + "line": 3946, "column": 43 } }, "expression": { "type": "CallExpression", - "start": 158438, - "end": 158468, + "start": 158952, + "end": 158982, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 12 }, "end": { - "line": 3938, + "line": 3946, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 158438, - "end": 158466, + "start": 158952, + "end": 158980, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 12 }, "end": { - "line": 3938, + "line": 3946, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 158438, - "end": 158457, + "start": 158952, + "end": 158971, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 12 }, "end": { - "line": 3938, + "line": 3946, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 158438, - "end": 158454, + "start": 158952, + "end": 158968, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 12 }, "end": { - "line": 3938, + "line": 3946, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 158438, - "end": 158442, + "start": 158952, + "end": 158956, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 12 }, "end": { - "line": 3938, + "line": 3946, "column": 16 } } }, "property": { "type": "Identifier", - "start": 158443, - "end": 158454, + "start": 158957, + "end": 158968, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 17 }, "end": { - "line": 3938, + "line": 3946, "column": 28 }, "identifierName": "_entityList" @@ -183741,15 +184802,15 @@ }, "property": { "type": "Identifier", - "start": 158455, - "end": 158456, + "start": 158969, + "end": 158970, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 29 }, "end": { - "line": 3938, + "line": 3946, "column": 30 }, "identifierName": "i" @@ -183760,15 +184821,15 @@ }, "property": { "type": "Identifier", - "start": 158458, - "end": 158466, + "start": 158972, + "end": 158980, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 32 }, "end": { - "line": 3938, + "line": 3946, "column": 40 }, "identifierName": "_destroy" @@ -183788,15 +184849,15 @@ { "type": "CommentLine", "value": " Object.entries(this._geometries).forEach(([id, geometry]) => {", - "start": 158488, - "end": 158553, + "start": 159002, + "end": 159067, "loc": { "start": { - "line": 3940, + "line": 3948, "column": 8 }, "end": { - "line": 3940, + "line": 3948, "column": 73 } } @@ -183804,15 +184865,15 @@ { "type": "CommentLine", "value": " geometry.destroy();", - "start": 158562, - "end": 158588, + "start": 159076, + "end": 159102, "loc": { "start": { - "line": 3941, + "line": 3949, "column": 8 }, "end": { - "line": 3941, + "line": 3949, "column": 34 } } @@ -183820,15 +184881,15 @@ { "type": "CommentLine", "value": " });", - "start": 158597, - "end": 158603, + "start": 159111, + "end": 159117, "loc": { "start": { - "line": 3942, + "line": 3950, "column": 8 }, "end": { - "line": 3942, + "line": 3950, "column": 14 } } @@ -183837,58 +184898,58 @@ }, { "type": "ExpressionStatement", - "start": 158612, - "end": 158634, + "start": 159126, + "end": 159148, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 8 }, "end": { - "line": 3943, + "line": 3951, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 158612, - "end": 158633, + "start": 159126, + "end": 159147, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 8 }, "end": { - "line": 3943, + "line": 3951, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158612, - "end": 158628, + "start": 159126, + "end": 159142, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 8 }, "end": { - "line": 3943, + "line": 3951, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 158612, - "end": 158616, + "start": 159126, + "end": 159130, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 8 }, "end": { - "line": 3943, + "line": 3951, "column": 12 } }, @@ -183896,15 +184957,15 @@ }, "property": { "type": "Identifier", - "start": 158617, - "end": 158628, + "start": 159131, + "end": 159142, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 13 }, "end": { - "line": 3943, + "line": 3951, "column": 24 }, "identifierName": "_geometries" @@ -183916,15 +184977,15 @@ }, "right": { "type": "ObjectExpression", - "start": 158631, - "end": 158633, + "start": 159145, + "end": 159147, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 27 }, "end": { - "line": 3943, + "line": 3951, "column": 29 } }, @@ -183936,15 +184997,15 @@ { "type": "CommentLine", "value": " Object.entries(this._geometries).forEach(([id, geometry]) => {", - "start": 158488, - "end": 158553, + "start": 159002, + "end": 159067, "loc": { "start": { - "line": 3940, + "line": 3948, "column": 8 }, "end": { - "line": 3940, + "line": 3948, "column": 73 } } @@ -183952,15 +185013,15 @@ { "type": "CommentLine", "value": " geometry.destroy();", - "start": 158562, - "end": 158588, + "start": 159076, + "end": 159102, "loc": { "start": { - "line": 3941, + "line": 3949, "column": 8 }, "end": { - "line": 3941, + "line": 3949, "column": 34 } } @@ -183968,15 +185029,15 @@ { "type": "CommentLine", "value": " });", - "start": 158597, - "end": 158603, + "start": 159111, + "end": 159117, "loc": { "start": { - "line": 3942, + "line": 3950, "column": 8 }, "end": { - "line": 3942, + "line": 3950, "column": 14 } } @@ -183985,73 +185046,73 @@ }, { "type": "ExpressionStatement", - "start": 158643, - "end": 158665, + "start": 159157, + "end": 159179, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 8 }, "end": { - "line": 3944, + "line": 3952, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 158643, - "end": 158664, + "start": 159157, + "end": 159178, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 8 }, "end": { - "line": 3944, + "line": 3952, "column": 29 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158643, - "end": 158659, + "start": 159157, + "end": 159173, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 8 }, "end": { - "line": 3944, + "line": 3952, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 158643, - "end": 158647, + "start": 159157, + "end": 159161, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 8 }, "end": { - "line": 3944, + "line": 3952, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158648, - "end": 158659, + "start": 159162, + "end": 159173, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 13 }, "end": { - "line": 3944, + "line": 3952, "column": 24 }, "identifierName": "_dtxBuckets" @@ -184062,15 +185123,15 @@ }, "right": { "type": "ObjectExpression", - "start": 158662, - "end": 158664, + "start": 159176, + "end": 159178, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 27 }, "end": { - "line": 3944, + "line": 3952, "column": 29 } }, @@ -184080,73 +185141,73 @@ }, { "type": "ExpressionStatement", - "start": 158674, - "end": 158694, + "start": 159188, + "end": 159208, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 8 }, "end": { - "line": 3945, + "line": 3953, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 158674, - "end": 158693, + "start": 159188, + "end": 159207, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 8 }, "end": { - "line": 3945, + "line": 3953, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158674, - "end": 158688, + "start": 159188, + "end": 159202, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 8 }, "end": { - "line": 3945, + "line": 3953, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 158674, - "end": 158678, + "start": 159188, + "end": 159192, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 8 }, "end": { - "line": 3945, + "line": 3953, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158679, - "end": 158688, + "start": 159193, + "end": 159202, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 13 }, "end": { - "line": 3945, + "line": 3953, "column": 22 }, "identifierName": "_textures" @@ -184157,15 +185218,15 @@ }, "right": { "type": "ObjectExpression", - "start": 158691, - "end": 158693, + "start": 159205, + "end": 159207, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 25 }, "end": { - "line": 3945, + "line": 3953, "column": 27 } }, @@ -184175,73 +185236,73 @@ }, { "type": "ExpressionStatement", - "start": 158703, - "end": 158726, + "start": 159217, + "end": 159240, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 8 }, "end": { - "line": 3946, + "line": 3954, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 158703, - "end": 158725, + "start": 159217, + "end": 159239, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 8 }, "end": { - "line": 3946, + "line": 3954, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158703, - "end": 158720, + "start": 159217, + "end": 159234, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 8 }, "end": { - "line": 3946, + "line": 3954, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 158703, - "end": 158707, + "start": 159217, + "end": 159221, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 8 }, "end": { - "line": 3946, + "line": 3954, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158708, - "end": 158720, + "start": 159222, + "end": 159234, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 13 }, "end": { - "line": 3946, + "line": 3954, "column": 25 }, "identifierName": "_textureSets" @@ -184252,15 +185313,15 @@ }, "right": { "type": "ObjectExpression", - "start": 158723, - "end": 158725, + "start": 159237, + "end": 159239, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 28 }, "end": { - "line": 3946, + "line": 3954, "column": 30 } }, @@ -184270,73 +185331,73 @@ }, { "type": "ExpressionStatement", - "start": 158735, - "end": 158753, + "start": 159249, + "end": 159267, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 8 }, "end": { - "line": 3947, + "line": 3955, "column": 26 } }, "expression": { "type": "AssignmentExpression", - "start": 158735, - "end": 158752, + "start": 159249, + "end": 159266, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 8 }, "end": { - "line": 3947, + "line": 3955, "column": 25 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158735, - "end": 158747, + "start": 159249, + "end": 159261, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 8 }, "end": { - "line": 3947, + "line": 3955, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 158735, - "end": 158739, + "start": 159249, + "end": 159253, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 8 }, "end": { - "line": 3947, + "line": 3955, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158740, - "end": 158747, + "start": 159254, + "end": 159261, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 13 }, "end": { - "line": 3947, + "line": 3955, "column": 20 }, "identifierName": "_meshes" @@ -184347,15 +185408,15 @@ }, "right": { "type": "ObjectExpression", - "start": 158750, - "end": 158752, + "start": 159264, + "end": 159266, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 23 }, "end": { - "line": 3947, + "line": 3955, "column": 25 } }, @@ -184365,73 +185426,73 @@ }, { "type": "ExpressionStatement", - "start": 158762, - "end": 158782, + "start": 159276, + "end": 159296, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 8 }, "end": { - "line": 3948, + "line": 3956, "column": 28 } }, "expression": { "type": "AssignmentExpression", - "start": 158762, - "end": 158781, + "start": 159276, + "end": 159295, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 8 }, "end": { - "line": 3948, + "line": 3956, "column": 27 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158762, - "end": 158776, + "start": 159276, + "end": 159290, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 8 }, "end": { - "line": 3948, + "line": 3956, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 158762, - "end": 158766, + "start": 159276, + "end": 159280, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 8 }, "end": { - "line": 3948, + "line": 3956, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158767, - "end": 158776, + "start": 159281, + "end": 159290, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 13 }, "end": { - "line": 3948, + "line": 3956, "column": 22 }, "identifierName": "_entities" @@ -184442,15 +185503,15 @@ }, "right": { "type": "ObjectExpression", - "start": 158779, - "end": 158781, + "start": 159293, + "end": 159295, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 25 }, "end": { - "line": 3948, + "line": 3956, "column": 27 } }, @@ -184460,87 +185521,87 @@ }, { "type": "ExpressionStatement", - "start": 158791, - "end": 158820, + "start": 159305, + "end": 159334, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 8 }, "end": { - "line": 3949, + "line": 3957, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 158791, - "end": 158819, + "start": 159305, + "end": 159333, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 8 }, "end": { - "line": 3949, + "line": 3957, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 158791, - "end": 158812, + "start": 159305, + "end": 159326, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 8 }, "end": { - "line": 3949, + "line": 3957, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 158791, - "end": 158801, + "start": 159305, + "end": 159315, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 8 }, "end": { - "line": 3949, + "line": 3957, "column": 18 } }, "object": { "type": "ThisExpression", - "start": 158791, - "end": 158795, + "start": 159305, + "end": 159309, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 8 }, "end": { - "line": 3949, + "line": 3957, "column": 12 } } }, "property": { "type": "Identifier", - "start": 158796, - "end": 158801, + "start": 159310, + "end": 159315, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 13 }, "end": { - "line": 3949, + "line": 3957, "column": 18 }, "identifierName": "scene" @@ -184551,15 +185612,15 @@ }, "property": { "type": "Identifier", - "start": 158802, - "end": 158812, + "start": 159316, + "end": 159326, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 19 }, "end": { - "line": 3949, + "line": 3957, "column": 29 }, "identifierName": "_aabbDirty" @@ -184570,15 +185631,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 158815, - "end": 158819, + "start": 159329, + "end": 159333, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 32 }, "end": { - "line": 3949, + "line": 3957, "column": 36 } }, @@ -184588,58 +185649,58 @@ }, { "type": "IfStatement", - "start": 158829, - "end": 158906, + "start": 159343, + "end": 159420, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 8 }, "end": { - "line": 3952, + "line": 3960, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 158833, - "end": 158846, + "start": 159347, + "end": 159360, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 12 }, "end": { - "line": 3950, + "line": 3958, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 158833, - "end": 158837, + "start": 159347, + "end": 159351, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 12 }, "end": { - "line": 3950, + "line": 3958, "column": 16 } } }, "property": { "type": "Identifier", - "start": 158838, - "end": 158846, + "start": 159352, + "end": 159360, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 17 }, "end": { - "line": 3950, + "line": 3958, "column": 25 }, "identifierName": "_isModel" @@ -184650,101 +185711,101 @@ }, "consequent": { "type": "BlockStatement", - "start": 158848, - "end": 158906, + "start": 159362, + "end": 159420, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 27 }, "end": { - "line": 3952, + "line": 3960, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 158862, - "end": 158896, + "start": 159376, + "end": 159410, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 12 }, "end": { - "line": 3951, + "line": 3959, "column": 46 } }, "expression": { "type": "CallExpression", - "start": 158862, - "end": 158895, + "start": 159376, + "end": 159409, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 12 }, "end": { - "line": 3951, + "line": 3959, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 158862, - "end": 158889, + "start": 159376, + "end": 159403, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 12 }, "end": { - "line": 3951, + "line": 3959, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 158862, - "end": 158872, + "start": 159376, + "end": 159386, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 12 }, "end": { - "line": 3951, + "line": 3959, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 158862, - "end": 158866, + "start": 159376, + "end": 159380, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 12 }, "end": { - "line": 3951, + "line": 3959, "column": 16 } } }, "property": { "type": "Identifier", - "start": 158867, - "end": 158872, + "start": 159381, + "end": 159386, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 17 }, "end": { - "line": 3951, + "line": 3959, "column": 22 }, "identifierName": "scene" @@ -184755,15 +185816,15 @@ }, "property": { "type": "Identifier", - "start": 158873, - "end": 158889, + "start": 159387, + "end": 159403, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 23 }, "end": { - "line": 3951, + "line": 3959, "column": 39 }, "identifierName": "_deregisterModel" @@ -184775,15 +185836,15 @@ "arguments": [ { "type": "ThisExpression", - "start": 158890, - "end": 158894, + "start": 159404, + "end": 159408, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 40 }, "end": { - "line": 3951, + "line": 3959, "column": 44 } } @@ -184798,43 +185859,43 @@ }, { "type": "ExpressionStatement", - "start": 158915, - "end": 158934, + "start": 159429, + "end": 159448, "loc": { "start": { - "line": 3953, + "line": 3961, "column": 8 }, "end": { - "line": 3953, + "line": 3961, "column": 27 } }, "expression": { "type": "CallExpression", - "start": 158915, - "end": 158933, + "start": 159429, + "end": 159447, "loc": { "start": { - "line": 3953, + "line": 3961, "column": 8 }, "end": { - "line": 3953, + "line": 3961, "column": 26 } }, "callee": { "type": "Identifier", - "start": 158915, - "end": 158931, + "start": 159429, + "end": 159445, "loc": { "start": { - "line": 3953, + "line": 3961, "column": 8 }, "end": { - "line": 3953, + "line": 3961, "column": 24 }, "identifierName": "putScratchMemory" @@ -184846,72 +185907,72 @@ }, { "type": "ExpressionStatement", - "start": 158943, - "end": 158959, + "start": 159457, + "end": 159473, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 8 }, "end": { - "line": 3954, + "line": 3962, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 158943, - "end": 158958, + "start": 159457, + "end": 159472, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 8 }, "end": { - "line": 3954, + "line": 3962, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 158943, - "end": 158956, + "start": 159457, + "end": 159470, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 8 }, "end": { - "line": 3954, + "line": 3962, "column": 21 } }, "object": { "type": "Super", - "start": 158943, - "end": 158948, + "start": 159457, + "end": 159462, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 8 }, "end": { - "line": 3954, + "line": 3962, "column": 13 } } }, "property": { "type": "Identifier", - "start": 158949, - "end": 158956, + "start": 159463, + "end": 159470, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 14 }, "end": { - "line": 3954, + "line": 3962, "column": 21 }, "identifierName": "destroy" @@ -184930,15 +185991,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this SceneModel.\n ", - "start": 157554, - "end": 157598, + "start": 158068, + "end": 158112, "loc": { "start": { - "line": 3915, + "line": 3923, "column": 4 }, "end": { - "line": 3917, + "line": 3925, "column": 7 } } @@ -184952,15 +186013,15 @@ { "type": "CommentBlock", "value": "*\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * Internally, SceneModel uses a combination of several different techniques to render and represent\n * the different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\n * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\n * serve to demonstrate how to use the capabilities of SceneModel programmatically.\n *\n * * [Loading building models into SceneModels](/examples/buildings)\n * * [Loading city models into SceneModels](/examples/cities)\n * * [Loading LiDAR scans into SceneModels](/examples/lidar)\n * * [Loading CAD models into SceneModels](/examples/cad)\n * * [SceneModel feature tests](/examples/scenemodel)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [SceneModel](#DataTextureSceneModel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates-for-double-precision)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## SceneModel\n *\n * ````SceneModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
\n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````SceneModel```` is an {@link Entity} that represents a model.\n * * A ````SceneModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````SceneModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a SceneModel representing a table\n * // with four legs, using geometry instancing\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the SceneModel\n * // We'll instance this geometry by five meshes\n *\n * sceneModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a SceneModel\n *\n * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````SceneModel````.\n *\n * Once finalized, we can't add anything more to our ````SceneModel````.\n *\n * ```` javascript\n * SceneModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````SceneModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````SceneModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a SceneModel representing a table with four legs, using geometry batching\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the SceneModel.\n *\n * SceneModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````SceneModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````SceneModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for Double Precision\n *\n * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## Positioning at World-space coordinates\n *\n * To position a SceneModel at given double-precision World coordinates, we can\n * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n * 3D World-space position at which the SceneModel will be located.\n *\n * Note that ````position```` is a single-precision offset relative to ````origin````.\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true,\n * origin: origin, // Everything in this SceneModel is relative to this RTC center\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * # Textures\n *\n * ## Loading KTX2 Texture Files into a SceneModel\n *\n * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\n * allow us to load textures into it from KTX2 buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\n * transcoder WASM module.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n *\n * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * });\n * ````\n *\n * @implements {Entity}\n ", - "start": 2951, - "end": 38769, + "start": 2987, + "end": 38805, "loc": { "start": { - "line": 66, + "line": 67, "column": 0 }, "end": { - "line": 1080, + "line": 1081, "column": 3 } } @@ -184970,15 +186031,15 @@ { "type": "CommentBlock", "value": "*\n * This function applies two steps to the provided mesh geometry data:\n *\n * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`.\n *\n * - 2nd, it tries to do an optimization called `index rebucketting`\n *\n * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._\n *\n * - _for 32 bit indices, will try to demote them to 16 bit indices_\n * - _for 16 bit indices, will try to demote them to 8 bits indices_\n * - _8 bits indices are kept as-is_\n *\n * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry.\n *\n * The function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`.\n *\n * @param {object} geometry The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays.\n *\n * @param enableVertexWelding\n * @param enableIndexBucketing\n * @returns {object} The mesh information enrichened with `.buckets` key.\n ", - "start": 158970, - "end": 160183, + "start": 159484, + "end": 160697, "loc": { "start": { - "line": 3959, + "line": 3967, "column": 0 }, "end": { - "line": 3981, + "line": 3989, "column": 3 } } @@ -184989,15 +186050,15 @@ { "type": "CommentBlock", "value": "*\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * Internally, SceneModel uses a combination of several different techniques to render and represent\n * the different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\n * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\n * serve to demonstrate how to use the capabilities of SceneModel programmatically.\n *\n * * [Loading building models into SceneModels](/examples/buildings)\n * * [Loading city models into SceneModels](/examples/cities)\n * * [Loading LiDAR scans into SceneModels](/examples/lidar)\n * * [Loading CAD models into SceneModels](/examples/cad)\n * * [SceneModel feature tests](/examples/scenemodel)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [SceneModel](#DataTextureSceneModel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates-for-double-precision)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## SceneModel\n *\n * ````SceneModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
\n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````SceneModel```` is an {@link Entity} that represents a model.\n * * A ````SceneModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````SceneModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a SceneModel representing a table\n * // with four legs, using geometry instancing\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the SceneModel\n * // We'll instance this geometry by five meshes\n *\n * sceneModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a SceneModel\n *\n * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````SceneModel````.\n *\n * Once finalized, we can't add anything more to our ````SceneModel````.\n *\n * ```` javascript\n * SceneModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````SceneModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````SceneModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a SceneModel representing a table with four legs, using geometry batching\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the SceneModel.\n *\n * SceneModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````SceneModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````SceneModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for Double Precision\n *\n * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## Positioning at World-space coordinates\n *\n * To position a SceneModel at given double-precision World coordinates, we can\n * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n * 3D World-space position at which the SceneModel will be located.\n *\n * Note that ````position```` is a single-precision offset relative to ````origin````.\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true,\n * origin: origin, // Everything in this SceneModel is relative to this RTC center\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * # Textures\n *\n * ## Loading KTX2 Texture Files into a SceneModel\n *\n * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\n * allow us to load textures into it from KTX2 buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\n * transcoder WASM module.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n *\n * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * });\n * ````\n *\n * @implements {Entity}\n ", - "start": 2951, - "end": 38769, + "start": 2987, + "end": 38805, "loc": { "start": { - "line": 66, + "line": 67, "column": 0 }, "end": { - "line": 1080, + "line": 1081, "column": 3 } } @@ -185007,15 +186068,15 @@ { "type": "CommentBlock", "value": "*\n * This function applies two steps to the provided mesh geometry data:\n *\n * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`.\n *\n * - 2nd, it tries to do an optimization called `index rebucketting`\n *\n * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._\n *\n * - _for 32 bit indices, will try to demote them to 16 bit indices_\n * - _for 16 bit indices, will try to demote them to 8 bits indices_\n * - _8 bits indices are kept as-is_\n *\n * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry.\n *\n * The function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`.\n *\n * @param {object} geometry The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays.\n *\n * @param enableVertexWelding\n * @param enableIndexBucketing\n * @returns {object} The mesh information enrichened with `.buckets` key.\n ", - "start": 158970, - "end": 160183, + "start": 159484, + "end": 160697, "loc": { "start": { - "line": 3959, + "line": 3967, "column": 0 }, "end": { - "line": 3981, + "line": 3989, "column": 3 } } @@ -185024,29 +186085,29 @@ }, { "type": "FunctionDeclaration", - "start": 160184, - "end": 161513, + "start": 160698, + "end": 162027, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 0 }, "end": { - "line": 4018, + "line": 4026, "column": 1 } }, "id": { "type": "Identifier", - "start": 160193, - "end": 160209, + "start": 160707, + "end": 160723, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 9 }, "end": { - "line": 3982, + "line": 3990, "column": 25 }, "identifierName": "createDTXBuckets" @@ -185060,15 +186121,15 @@ "params": [ { "type": "Identifier", - "start": 160210, - "end": 160218, + "start": 160724, + "end": 160732, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 26 }, "end": { - "line": 3982, + "line": 3990, "column": 34 }, "identifierName": "geometry" @@ -185077,15 +186138,15 @@ }, { "type": "Identifier", - "start": 160220, - "end": 160239, + "start": 160734, + "end": 160753, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 36 }, "end": { - "line": 3982, + "line": 3990, "column": 55 }, "identifierName": "enableVertexWelding" @@ -185094,15 +186155,15 @@ }, { "type": "Identifier", - "start": 160241, - "end": 160261, + "start": 160755, + "end": 160775, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 57 }, "end": { - "line": 3982, + "line": 3990, "column": 77 }, "identifierName": "enableIndexBucketing" @@ -185112,59 +186173,59 @@ ], "body": { "type": "BlockStatement", - "start": 160263, - "end": 161513, + "start": 160777, + "end": 162027, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 79 }, "end": { - "line": 4018, + "line": 4026, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 160269, - "end": 160333, + "start": 160783, + "end": 160847, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 4 }, "end": { - "line": 3983, + "line": 3991, "column": 68 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 160273, - "end": 160298, + "start": 160787, + "end": 160812, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 8 }, "end": { - "line": 3983, + "line": 3991, "column": 33 } }, "id": { "type": "Identifier", - "start": 160273, - "end": 160298, + "start": 160787, + "end": 160812, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 8 }, "end": { - "line": 3983, + "line": 3991, "column": 33 }, "identifierName": "uniquePositionsCompressed" @@ -185175,29 +186236,29 @@ }, { "type": "VariableDeclarator", - "start": 160300, - "end": 160313, + "start": 160814, + "end": 160827, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 35 }, "end": { - "line": 3983, + "line": 3991, "column": 48 } }, "id": { "type": "Identifier", - "start": 160300, - "end": 160313, + "start": 160814, + "end": 160827, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 35 }, "end": { - "line": 3983, + "line": 3991, "column": 48 }, "identifierName": "uniqueIndices" @@ -185208,29 +186269,29 @@ }, { "type": "VariableDeclarator", - "start": 160315, - "end": 160332, + "start": 160829, + "end": 160846, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 50 }, "end": { - "line": 3983, + "line": 3991, "column": 67 } }, "id": { "type": "Identifier", - "start": 160315, - "end": 160332, + "start": 160829, + "end": 160846, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 50 }, "end": { - "line": 3983, + "line": 3991, "column": 67 }, "identifierName": "uniqueEdgeIndices" @@ -185244,43 +186305,43 @@ }, { "type": "IfStatement", - "start": 160338, - "end": 160888, + "start": 160852, + "end": 161402, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 4 }, "end": { - "line": 3998, + "line": 4006, "column": 5 } }, "test": { "type": "LogicalExpression", - "start": 160342, - "end": 160385, + "start": 160856, + "end": 160899, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 8 }, "end": { - "line": 3984, + "line": 3992, "column": 51 } }, "left": { "type": "Identifier", - "start": 160342, - "end": 160361, + "start": 160856, + "end": 160875, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 8 }, "end": { - "line": 3984, + "line": 3992, "column": 27 }, "identifierName": "enableVertexWelding" @@ -185290,15 +186351,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 160365, - "end": 160385, + "start": 160879, + "end": 160899, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 31 }, "end": { - "line": 3984, + "line": 3992, "column": 51 }, "identifierName": "enableIndexBucketing" @@ -185308,74 +186369,74 @@ }, "consequent": { "type": "BlockStatement", - "start": 160387, - "end": 160717, + "start": 160901, + "end": 161231, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 53 }, "end": { - "line": 3994, + "line": 4002, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 160421, - "end": 160711, + "start": 160935, + "end": 161225, "loc": { "start": { - "line": 3985, + "line": 3993, "column": 8 }, "end": { - "line": 3993, + "line": 4001, "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 160421, - "end": 160710, + "start": 160935, + "end": 161224, "loc": { "start": { - "line": 3985, + "line": 3993, "column": 8 }, "end": { - "line": 3993, + "line": 4001, "column": 10 } }, "operator": "=", "left": { "type": "ArrayPattern", - "start": 160421, - "end": 160529, + "start": 160935, + "end": 161043, "loc": { "start": { - "line": 3985, + "line": 3993, "column": 8 }, "end": { - "line": 3989, + "line": 3997, "column": 9 } }, "elements": [ { "type": "Identifier", - "start": 160435, - "end": 160460, + "start": 160949, + "end": 160974, "loc": { "start": { - "line": 3986, + "line": 3994, "column": 12 }, "end": { - "line": 3986, + "line": 3994, "column": 37 }, "identifierName": "uniquePositionsCompressed" @@ -185385,15 +186446,15 @@ }, { "type": "Identifier", - "start": 160474, - "end": 160487, + "start": 160988, + "end": 161001, "loc": { "start": { - "line": 3987, + "line": 3995, "column": 12 }, "end": { - "line": 3987, + "line": 3995, "column": 25 }, "identifierName": "uniqueIndices" @@ -185402,15 +186463,15 @@ }, { "type": "Identifier", - "start": 160501, - "end": 160518, + "start": 161015, + "end": 161032, "loc": { "start": { - "line": 3988, + "line": 3996, "column": 12 }, "end": { - "line": 3988, + "line": 3996, "column": 29 }, "identifierName": "uniqueEdgeIndices" @@ -185422,29 +186483,29 @@ }, "right": { "type": "CallExpression", - "start": 160532, - "end": 160710, + "start": 161046, + "end": 161224, "loc": { "start": { - "line": 3989, + "line": 3997, "column": 12 }, "end": { - "line": 3993, + "line": 4001, "column": 10 } }, "callee": { "type": "Identifier", - "start": 160532, - "end": 160549, + "start": 161046, + "end": 161063, "loc": { "start": { - "line": 3989, + "line": 3997, "column": 12 }, "end": { - "line": 3989, + "line": 3997, "column": 29 }, "identifierName": "uniquifyPositions" @@ -185454,30 +186515,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 160550, - "end": 160709, + "start": 161064, + "end": 161223, "loc": { "start": { - "line": 3989, + "line": 3997, "column": 30 }, "end": { - "line": 3993, + "line": 4001, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 160564, - "end": 160613, + "start": 161078, + "end": 161127, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 12 }, "end": { - "line": 3990, + "line": 3998, "column": 61 } }, @@ -185486,15 +186547,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 160564, - "end": 160583, + "start": 161078, + "end": 161097, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 12 }, "end": { - "line": 3990, + "line": 3998, "column": 31 }, "identifierName": "positionsCompressed" @@ -185503,29 +186564,29 @@ }, "value": { "type": "MemberExpression", - "start": 160585, - "end": 160613, + "start": 161099, + "end": 161127, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 33 }, "end": { - "line": 3990, + "line": 3998, "column": 61 } }, "object": { "type": "Identifier", - "start": 160585, - "end": 160593, + "start": 161099, + "end": 161107, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 33 }, "end": { - "line": 3990, + "line": 3998, "column": 41 }, "identifierName": "geometry" @@ -185534,15 +186595,15 @@ }, "property": { "type": "Identifier", - "start": 160594, - "end": 160613, + "start": 161108, + "end": 161127, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 42 }, "end": { - "line": 3990, + "line": 3998, "column": 61 }, "identifierName": "positionsCompressed" @@ -185554,15 +186615,15 @@ }, { "type": "ObjectProperty", - "start": 160627, - "end": 160652, + "start": 161141, + "end": 161166, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 12 }, "end": { - "line": 3991, + "line": 3999, "column": 37 } }, @@ -185571,15 +186632,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 160627, - "end": 160634, + "start": 161141, + "end": 161148, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 12 }, "end": { - "line": 3991, + "line": 3999, "column": 19 }, "identifierName": "indices" @@ -185588,29 +186649,29 @@ }, "value": { "type": "MemberExpression", - "start": 160636, - "end": 160652, + "start": 161150, + "end": 161166, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 21 }, "end": { - "line": 3991, + "line": 3999, "column": 37 } }, "object": { "type": "Identifier", - "start": 160636, - "end": 160644, + "start": 161150, + "end": 161158, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 21 }, "end": { - "line": 3991, + "line": 3999, "column": 29 }, "identifierName": "geometry" @@ -185619,15 +186680,15 @@ }, "property": { "type": "Identifier", - "start": 160645, - "end": 160652, + "start": 161159, + "end": 161166, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 30 }, "end": { - "line": 3991, + "line": 3999, "column": 37 }, "identifierName": "indices" @@ -185639,15 +186700,15 @@ }, { "type": "ObjectProperty", - "start": 160666, - "end": 160699, + "start": 161180, + "end": 161213, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 12 }, "end": { - "line": 3992, + "line": 4000, "column": 45 } }, @@ -185656,15 +186717,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 160666, - "end": 160677, + "start": 161180, + "end": 161191, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 12 }, "end": { - "line": 3992, + "line": 4000, "column": 23 }, "identifierName": "edgeIndices" @@ -185673,29 +186734,29 @@ }, "value": { "type": "MemberExpression", - "start": 160679, - "end": 160699, + "start": 161193, + "end": 161213, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 25 }, "end": { - "line": 3992, + "line": 4000, "column": 45 } }, "object": { "type": "Identifier", - "start": 160679, - "end": 160687, + "start": 161193, + "end": 161201, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 25 }, "end": { - "line": 3992, + "line": 4000, "column": 33 }, "identifierName": "geometry" @@ -185704,15 +186765,15 @@ }, "property": { "type": "Identifier", - "start": 160688, - "end": 160699, + "start": 161202, + "end": 161213, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 34 }, "end": { - "line": 3992, + "line": 4000, "column": 45 }, "identifierName": "edgeIndices" @@ -185732,15 +186793,15 @@ { "type": "CommentLine", "value": " Expensive - careful!", - "start": 160389, - "end": 160412, + "start": 160903, + "end": 160926, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 55 }, "end": { - "line": 3984, + "line": 3992, "column": 78 } } @@ -185752,59 +186813,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 160723, - "end": 160888, + "start": 161237, + "end": 161402, "loc": { "start": { - "line": 3994, + "line": 4002, "column": 11 }, "end": { - "line": 3998, + "line": 4006, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 160733, - "end": 160790, + "start": 161247, + "end": 161304, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 8 }, "end": { - "line": 3995, + "line": 4003, "column": 65 } }, "expression": { "type": "AssignmentExpression", - "start": 160733, - "end": 160789, + "start": 161247, + "end": 161303, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 8 }, "end": { - "line": 3995, + "line": 4003, "column": 64 } }, "operator": "=", "left": { "type": "Identifier", - "start": 160733, - "end": 160758, + "start": 161247, + "end": 161272, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 8 }, "end": { - "line": 3995, + "line": 4003, "column": 33 }, "identifierName": "uniquePositionsCompressed" @@ -185813,29 +186874,29 @@ }, "right": { "type": "MemberExpression", - "start": 160761, - "end": 160789, + "start": 161275, + "end": 161303, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 36 }, "end": { - "line": 3995, + "line": 4003, "column": 64 } }, "object": { "type": "Identifier", - "start": 160761, - "end": 160769, + "start": 161275, + "end": 161283, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 36 }, "end": { - "line": 3995, + "line": 4003, "column": 44 }, "identifierName": "geometry" @@ -185844,15 +186905,15 @@ }, "property": { "type": "Identifier", - "start": 160770, - "end": 160789, + "start": 161284, + "end": 161303, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 45 }, "end": { - "line": 3995, + "line": 4003, "column": 64 }, "identifierName": "positionsCompressed" @@ -185865,44 +186926,44 @@ }, { "type": "ExpressionStatement", - "start": 160799, - "end": 160832, + "start": 161313, + "end": 161346, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 8 }, "end": { - "line": 3996, + "line": 4004, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 160799, - "end": 160831, + "start": 161313, + "end": 161345, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 8 }, "end": { - "line": 3996, + "line": 4004, "column": 40 } }, "operator": "=", "left": { "type": "Identifier", - "start": 160799, - "end": 160812, + "start": 161313, + "end": 161326, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 8 }, "end": { - "line": 3996, + "line": 4004, "column": 21 }, "identifierName": "uniqueIndices" @@ -185911,29 +186972,29 @@ }, "right": { "type": "MemberExpression", - "start": 160815, - "end": 160831, + "start": 161329, + "end": 161345, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 24 }, "end": { - "line": 3996, + "line": 4004, "column": 40 } }, "object": { "type": "Identifier", - "start": 160815, - "end": 160823, + "start": 161329, + "end": 161337, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 24 }, "end": { - "line": 3996, + "line": 4004, "column": 32 }, "identifierName": "geometry" @@ -185942,15 +187003,15 @@ }, "property": { "type": "Identifier", - "start": 160824, - "end": 160831, + "start": 161338, + "end": 161345, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 33 }, "end": { - "line": 3996, + "line": 4004, "column": 40 }, "identifierName": "indices" @@ -185963,44 +187024,44 @@ }, { "type": "ExpressionStatement", - "start": 160841, - "end": 160882, + "start": 161355, + "end": 161396, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 8 }, "end": { - "line": 3997, + "line": 4005, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 160841, - "end": 160881, + "start": 161355, + "end": 161395, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 8 }, "end": { - "line": 3997, + "line": 4005, "column": 48 } }, "operator": "=", "left": { "type": "Identifier", - "start": 160841, - "end": 160858, + "start": 161355, + "end": 161372, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 8 }, "end": { - "line": 3997, + "line": 4005, "column": 25 }, "identifierName": "uniqueEdgeIndices" @@ -186009,29 +187070,29 @@ }, "right": { "type": "MemberExpression", - "start": 160861, - "end": 160881, + "start": 161375, + "end": 161395, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 28 }, "end": { - "line": 3997, + "line": 4005, "column": 48 } }, "object": { "type": "Identifier", - "start": 160861, - "end": 160869, + "start": 161375, + "end": 161383, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 28 }, "end": { - "line": 3997, + "line": 4005, "column": 36 }, "identifierName": "geometry" @@ -186040,15 +187101,15 @@ }, "property": { "type": "Identifier", - "start": 160870, - "end": 160881, + "start": 161384, + "end": 161395, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 37 }, "end": { - "line": 3997, + "line": 4005, "column": 48 }, "identifierName": "edgeIndices" @@ -186065,44 +187126,44 @@ }, { "type": "VariableDeclaration", - "start": 160893, - "end": 160905, + "start": 161407, + "end": 161419, "loc": { "start": { - "line": 3999, + "line": 4007, "column": 4 }, "end": { - "line": 3999, + "line": 4007, "column": 16 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 160897, - "end": 160904, + "start": 161411, + "end": 161418, "loc": { "start": { - "line": 3999, + "line": 4007, "column": 8 }, "end": { - "line": 3999, + "line": 4007, "column": 15 } }, "id": { "type": "Identifier", - "start": 160897, - "end": 160904, + "start": 161411, + "end": 161418, "loc": { "start": { - "line": 3999, + "line": 4007, "column": 8 }, "end": { - "line": 3999, + "line": 4007, "column": 15 }, "identifierName": "buckets" @@ -186116,29 +187177,29 @@ }, { "type": "IfStatement", - "start": 160910, - "end": 161491, + "start": 161424, + "end": 162005, "loc": { "start": { - "line": 4000, + "line": 4008, "column": 4 }, "end": { - "line": 4016, + "line": 4024, "column": 5 } }, "test": { "type": "Identifier", - "start": 160914, - "end": 160934, + "start": 161428, + "end": 161448, "loc": { "start": { - "line": 4000, + "line": 4008, "column": 8 }, "end": { - "line": 4000, + "line": 4008, "column": 28 }, "identifierName": "enableIndexBucketing" @@ -186147,59 +187208,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 160936, - "end": 161305, + "start": 161450, + "end": 161819, "loc": { "start": { - "line": 4000, + "line": 4008, "column": 30 }, "end": { - "line": 4010, + "line": 4018, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 160946, - "end": 161008, + "start": 161460, + "end": 161522, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 8 }, "end": { - "line": 4001, + "line": 4009, "column": 70 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 160950, - "end": 161007, + "start": 161464, + "end": 161521, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 12 }, "end": { - "line": 4001, + "line": 4009, "column": 69 } }, "id": { "type": "Identifier", - "start": 160950, - "end": 160968, + "start": 161464, + "end": 161482, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 12 }, "end": { - "line": 4001, + "line": 4009, "column": 30 }, "identifierName": "numUniquePositions" @@ -186208,43 +187269,43 @@ }, "init": { "type": "BinaryExpression", - "start": 160971, - "end": 161007, + "start": 161485, + "end": 161521, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 33 }, "end": { - "line": 4001, + "line": 4009, "column": 69 } }, "left": { "type": "MemberExpression", - "start": 160971, - "end": 161003, + "start": 161485, + "end": 161517, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 33 }, "end": { - "line": 4001, + "line": 4009, "column": 65 } }, "object": { "type": "Identifier", - "start": 160971, - "end": 160996, + "start": 161485, + "end": 161510, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 33 }, "end": { - "line": 4001, + "line": 4009, "column": 58 }, "identifierName": "uniquePositionsCompressed" @@ -186253,15 +187314,15 @@ }, "property": { "type": "Identifier", - "start": 160997, - "end": 161003, + "start": 161511, + "end": 161517, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 59 }, "end": { - "line": 4001, + "line": 4009, "column": 65 }, "identifierName": "length" @@ -186273,15 +187334,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 161006, - "end": 161007, + "start": 161520, + "end": 161521, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 68 }, "end": { - "line": 4001, + "line": 4009, "column": 69 } }, @@ -186298,44 +187359,44 @@ }, { "type": "ExpressionStatement", - "start": 161017, - "end": 161299, + "start": 161531, + "end": 161813, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 8 }, "end": { - "line": 4009, + "line": 4017, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 161017, - "end": 161298, + "start": 161531, + "end": 161812, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 8 }, "end": { - "line": 4009, + "line": 4017, "column": 9 } }, "operator": "=", "left": { "type": "Identifier", - "start": 161017, - "end": 161024, + "start": 161531, + "end": 161538, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 8 }, "end": { - "line": 4002, + "line": 4010, "column": 15 }, "identifierName": "buckets" @@ -186344,29 +187405,29 @@ }, "right": { "type": "CallExpression", - "start": 161027, - "end": 161298, + "start": 161541, + "end": 161812, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 18 }, "end": { - "line": 4009, + "line": 4017, "column": 9 } }, "callee": { "type": "Identifier", - "start": 161027, - "end": 161044, + "start": 161541, + "end": 161558, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 18 }, "end": { - "line": 4002, + "line": 4010, "column": 35 }, "identifierName": "rebucketPositions" @@ -186376,30 +187437,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 161045, - "end": 161212, + "start": 161559, + "end": 161726, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 36 }, "end": { - "line": 4006, + "line": 4014, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 161063, - "end": 161109, + "start": 161577, + "end": 161623, "loc": { "start": { - "line": 4003, + "line": 4011, "column": 16 }, "end": { - "line": 4003, + "line": 4011, "column": 62 } }, @@ -186408,15 +187469,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 161063, - "end": 161082, + "start": 161577, + "end": 161596, "loc": { "start": { - "line": 4003, + "line": 4011, "column": 16 }, "end": { - "line": 4003, + "line": 4011, "column": 35 }, "identifierName": "positionsCompressed" @@ -186425,15 +187486,15 @@ }, "value": { "type": "Identifier", - "start": 161084, - "end": 161109, + "start": 161598, + "end": 161623, "loc": { "start": { - "line": 4003, + "line": 4011, "column": 37 }, "end": { - "line": 4003, + "line": 4011, "column": 62 }, "identifierName": "uniquePositionsCompressed" @@ -186443,15 +187504,15 @@ }, { "type": "ObjectProperty", - "start": 161127, - "end": 161149, + "start": 161641, + "end": 161663, "loc": { "start": { - "line": 4004, + "line": 4012, "column": 16 }, "end": { - "line": 4004, + "line": 4012, "column": 38 } }, @@ -186460,15 +187521,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 161127, - "end": 161134, + "start": 161641, + "end": 161648, "loc": { "start": { - "line": 4004, + "line": 4012, "column": 16 }, "end": { - "line": 4004, + "line": 4012, "column": 23 }, "identifierName": "indices" @@ -186477,15 +187538,15 @@ }, "value": { "type": "Identifier", - "start": 161136, - "end": 161149, + "start": 161650, + "end": 161663, "loc": { "start": { - "line": 4004, + "line": 4012, "column": 25 }, "end": { - "line": 4004, + "line": 4012, "column": 38 }, "identifierName": "uniqueIndices" @@ -186495,15 +187556,15 @@ }, { "type": "ObjectProperty", - "start": 161167, - "end": 161197, + "start": 161681, + "end": 161711, "loc": { "start": { - "line": 4005, + "line": 4013, "column": 16 }, "end": { - "line": 4005, + "line": 4013, "column": 46 } }, @@ -186512,15 +187573,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 161167, - "end": 161178, + "start": 161681, + "end": 161692, "loc": { "start": { - "line": 4005, + "line": 4013, "column": 16 }, "end": { - "line": 4005, + "line": 4013, "column": 27 }, "identifierName": "edgeIndices" @@ -186529,15 +187590,15 @@ }, "value": { "type": "Identifier", - "start": 161180, - "end": 161197, + "start": 161694, + "end": 161711, "loc": { "start": { - "line": 4005, + "line": 4013, "column": 29 }, "end": { - "line": 4005, + "line": 4013, "column": 46 }, "identifierName": "uniqueEdgeIndices" @@ -186549,43 +187610,43 @@ }, { "type": "ConditionalExpression", - "start": 161226, - "end": 161267, + "start": 161740, + "end": 161781, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 12 }, "end": { - "line": 4007, + "line": 4015, "column": 53 } }, "test": { "type": "BinaryExpression", - "start": 161227, - "end": 161257, + "start": 161741, + "end": 161771, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 13 }, "end": { - "line": 4007, + "line": 4015, "column": 43 } }, "left": { "type": "Identifier", - "start": 161227, - "end": 161245, + "start": 161741, + "end": 161759, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 13 }, "end": { - "line": 4007, + "line": 4015, "column": 31 }, "identifierName": "numUniquePositions" @@ -186595,29 +187656,29 @@ "operator": ">", "right": { "type": "BinaryExpression", - "start": 161249, - "end": 161256, + "start": 161763, + "end": 161770, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 35 }, "end": { - "line": 4007, + "line": 4015, "column": 42 } }, "left": { "type": "NumericLiteral", - "start": 161249, - "end": 161250, + "start": 161763, + "end": 161764, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 35 }, "end": { - "line": 4007, + "line": 4015, "column": 36 } }, @@ -186630,15 +187691,15 @@ "operator": "<<", "right": { "type": "NumericLiteral", - "start": 161254, - "end": 161256, + "start": 161768, + "end": 161770, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 40 }, "end": { - "line": 4007, + "line": 4015, "column": 42 } }, @@ -186650,25 +187711,25 @@ }, "extra": { "parenthesized": true, - "parenStart": 161248 + "parenStart": 161762 } }, "extra": { "parenthesized": true, - "parenStart": 161226 + "parenStart": 161740 } }, "consequent": { "type": "NumericLiteral", - "start": 161261, - "end": 161263, + "start": 161775, + "end": 161777, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 47 }, "end": { - "line": 4007, + "line": 4015, "column": 49 } }, @@ -186680,15 +187741,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 161266, - "end": 161267, + "start": 161780, + "end": 161781, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 52 }, "end": { - "line": 4007, + "line": 4015, "column": 53 } }, @@ -186702,15 +187763,15 @@ { "type": "CommentLine", "value": " true", - "start": 161281, - "end": 161288, + "start": 161795, + "end": 161802, "loc": { "start": { - "line": 4008, + "line": 4016, "column": 12 }, "end": { - "line": 4008, + "line": 4016, "column": 19 } } @@ -186726,59 +187787,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 161311, - "end": 161491, + "start": 161825, + "end": 162005, "loc": { "start": { - "line": 4010, + "line": 4018, "column": 11 }, "end": { - "line": 4016, + "line": 4024, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 161321, - "end": 161485, + "start": 161835, + "end": 161999, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 8 }, "end": { - "line": 4015, + "line": 4023, "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 161321, - "end": 161484, + "start": 161835, + "end": 161998, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 8 }, "end": { - "line": 4015, + "line": 4023, "column": 10 } }, "operator": "=", "left": { "type": "Identifier", - "start": 161321, - "end": 161328, + "start": 161835, + "end": 161842, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 8 }, "end": { - "line": 4011, + "line": 4019, "column": 15 }, "identifierName": "buckets" @@ -186787,45 +187848,45 @@ }, "right": { "type": "ArrayExpression", - "start": 161331, - "end": 161484, + "start": 161845, + "end": 161998, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 18 }, "end": { - "line": 4015, + "line": 4023, "column": 10 } }, "elements": [ { "type": "ObjectExpression", - "start": 161332, - "end": 161483, + "start": 161846, + "end": 161997, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 19 }, "end": { - "line": 4015, + "line": 4023, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 161346, - "end": 161392, + "start": 161860, + "end": 161906, "loc": { "start": { - "line": 4012, + "line": 4020, "column": 12 }, "end": { - "line": 4012, + "line": 4020, "column": 58 } }, @@ -186834,15 +187895,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 161346, - "end": 161365, + "start": 161860, + "end": 161879, "loc": { "start": { - "line": 4012, + "line": 4020, "column": 12 }, "end": { - "line": 4012, + "line": 4020, "column": 31 }, "identifierName": "positionsCompressed" @@ -186851,15 +187912,15 @@ }, "value": { "type": "Identifier", - "start": 161367, - "end": 161392, + "start": 161881, + "end": 161906, "loc": { "start": { - "line": 4012, + "line": 4020, "column": 33 }, "end": { - "line": 4012, + "line": 4020, "column": 58 }, "identifierName": "uniquePositionsCompressed" @@ -186869,15 +187930,15 @@ }, { "type": "ObjectProperty", - "start": 161406, - "end": 161428, + "start": 161920, + "end": 161942, "loc": { "start": { - "line": 4013, + "line": 4021, "column": 12 }, "end": { - "line": 4013, + "line": 4021, "column": 34 } }, @@ -186886,15 +187947,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 161406, - "end": 161413, + "start": 161920, + "end": 161927, "loc": { "start": { - "line": 4013, + "line": 4021, "column": 12 }, "end": { - "line": 4013, + "line": 4021, "column": 19 }, "identifierName": "indices" @@ -186903,15 +187964,15 @@ }, "value": { "type": "Identifier", - "start": 161415, - "end": 161428, + "start": 161929, + "end": 161942, "loc": { "start": { - "line": 4013, + "line": 4021, "column": 21 }, "end": { - "line": 4013, + "line": 4021, "column": 34 }, "identifierName": "uniqueIndices" @@ -186921,15 +187982,15 @@ }, { "type": "ObjectProperty", - "start": 161442, - "end": 161472, + "start": 161956, + "end": 161986, "loc": { "start": { - "line": 4014, + "line": 4022, "column": 12 }, "end": { - "line": 4014, + "line": 4022, "column": 42 } }, @@ -186938,15 +187999,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 161442, - "end": 161453, + "start": 161956, + "end": 161967, "loc": { "start": { - "line": 4014, + "line": 4022, "column": 12 }, "end": { - "line": 4014, + "line": 4022, "column": 23 }, "identifierName": "edgeIndices" @@ -186955,15 +188016,15 @@ }, "value": { "type": "Identifier", - "start": 161455, - "end": 161472, + "start": 161969, + "end": 161986, "loc": { "start": { - "line": 4014, + "line": 4022, "column": 25 }, "end": { - "line": 4014, + "line": 4022, "column": 42 }, "identifierName": "uniqueEdgeIndices" @@ -186983,29 +188044,29 @@ }, { "type": "ReturnStatement", - "start": 161496, - "end": 161511, + "start": 162010, + "end": 162025, "loc": { "start": { - "line": 4017, + "line": 4025, "column": 4 }, "end": { - "line": 4017, + "line": 4025, "column": 19 } }, "argument": { "type": "Identifier", - "start": 161503, - "end": 161510, + "start": 162017, + "end": 162024, "loc": { "start": { - "line": 4017, + "line": 4025, "column": 11 }, "end": { - "line": 4017, + "line": 4025, "column": 18 }, "identifierName": "buckets" @@ -187020,15 +188081,15 @@ { "type": "CommentBlock", "value": "*\n * This function applies two steps to the provided mesh geometry data:\n *\n * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`.\n *\n * - 2nd, it tries to do an optimization called `index rebucketting`\n *\n * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._\n *\n * - _for 32 bit indices, will try to demote them to 16 bit indices_\n * - _for 16 bit indices, will try to demote them to 8 bits indices_\n * - _8 bits indices are kept as-is_\n *\n * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry.\n *\n * The function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`.\n *\n * @param {object} geometry The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays.\n *\n * @param enableVertexWelding\n * @param enableIndexBucketing\n * @returns {object} The mesh information enrichened with `.buckets` key.\n ", - "start": 158970, - "end": 160183, + "start": 159484, + "end": 160697, "loc": { "start": { - "line": 3959, + "line": 3967, "column": 0 }, "end": { - "line": 3981, + "line": 3989, "column": 3 } } @@ -187037,29 +188098,29 @@ }, { "type": "FunctionDeclaration", - "start": 161515, - "end": 162606, + "start": 162029, + "end": 163120, "loc": { "start": { - "line": 4020, + "line": 4028, "column": 0 }, "end": { - "line": 4042, + "line": 4050, "column": 1 } }, "id": { "type": "Identifier", - "start": 161525, - "end": 161542, + "start": 162039, + "end": 162056, "loc": { "start": { - "line": 4022, + "line": 4030, "column": 0 }, "end": { - "line": 4022, + "line": 4030, "column": 17 }, "identifierName": "createGeometryOBB" @@ -187072,15 +188133,15 @@ "params": [ { "type": "Identifier", - "start": 161543, - "end": 161551, + "start": 162057, + "end": 162065, "loc": { "start": { - "line": 4022, + "line": 4030, "column": 18 }, "end": { - "line": 4022, + "line": 4030, "column": 26 }, "identifierName": "geometry" @@ -187090,73 +188151,73 @@ ], "body": { "type": "BlockStatement", - "start": 161553, - "end": 162606, + "start": 162067, + "end": 163120, "loc": { "start": { - "line": 4022, + "line": 4030, "column": 28 }, "end": { - "line": 4042, + "line": 4050, "column": 1 } }, "body": [ { "type": "ExpressionStatement", - "start": 161559, - "end": 161586, + "start": 162073, + "end": 162100, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 4 }, "end": { - "line": 4023, + "line": 4031, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 161559, - "end": 161585, + "start": 162073, + "end": 162099, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 4 }, "end": { - "line": 4023, + "line": 4031, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 161559, - "end": 161571, + "start": 162073, + "end": 162085, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 4 }, "end": { - "line": 4023, + "line": 4031, "column": 16 } }, "object": { "type": "Identifier", - "start": 161559, - "end": 161567, + "start": 162073, + "end": 162081, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 4 }, "end": { - "line": 4023, + "line": 4031, "column": 12 }, "identifierName": "geometry" @@ -187165,15 +188226,15 @@ }, "property": { "type": "Identifier", - "start": 161568, - "end": 161571, + "start": 162082, + "end": 162085, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 13 }, "end": { - "line": 4023, + "line": 4031, "column": 16 }, "identifierName": "obb" @@ -187184,43 +188245,43 @@ }, "right": { "type": "CallExpression", - "start": 161574, - "end": 161585, + "start": 162088, + "end": 162099, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 19 }, "end": { - "line": 4023, + "line": 4031, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 161574, - "end": 161583, + "start": 162088, + "end": 162097, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 19 }, "end": { - "line": 4023, + "line": 4031, "column": 28 } }, "object": { "type": "Identifier", - "start": 161574, - "end": 161578, + "start": 162088, + "end": 162092, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 19 }, "end": { - "line": 4023, + "line": 4031, "column": 23 }, "identifierName": "math" @@ -187229,15 +188290,15 @@ }, "property": { "type": "Identifier", - "start": 161579, - "end": 161583, + "start": 162093, + "end": 162097, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 24 }, "end": { - "line": 4023, + "line": 4031, "column": 28 }, "identifierName": "OBB3" @@ -187252,57 +188313,57 @@ }, { "type": "IfStatement", - "start": 161591, - "end": 162604, + "start": 162105, + "end": 163118, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 4 }, "end": { - "line": 4041, + "line": 4049, "column": 5 } }, "test": { "type": "LogicalExpression", - "start": 161595, - "end": 161666, + "start": 162109, + "end": 162180, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 8 }, "end": { - "line": 4024, + "line": 4032, "column": 79 } }, "left": { "type": "MemberExpression", - "start": 161595, - "end": 161623, + "start": 162109, + "end": 162137, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 8 }, "end": { - "line": 4024, + "line": 4032, "column": 36 } }, "object": { "type": "Identifier", - "start": 161595, - "end": 161603, + "start": 162109, + "end": 162117, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 8 }, "end": { - "line": 4024, + "line": 4032, "column": 16 }, "identifierName": "geometry" @@ -187311,15 +188372,15 @@ }, "property": { "type": "Identifier", - "start": 161604, - "end": 161623, + "start": 162118, + "end": 162137, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 17 }, "end": { - "line": 4024, + "line": 4032, "column": 36 }, "identifierName": "positionsCompressed" @@ -187331,57 +188392,57 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 161627, - "end": 161666, + "start": 162141, + "end": 162180, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 40 }, "end": { - "line": 4024, + "line": 4032, "column": 79 } }, "left": { "type": "MemberExpression", - "start": 161627, - "end": 161662, + "start": 162141, + "end": 162176, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 40 }, "end": { - "line": 4024, + "line": 4032, "column": 75 } }, "object": { "type": "MemberExpression", - "start": 161627, - "end": 161655, + "start": 162141, + "end": 162169, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 40 }, "end": { - "line": 4024, + "line": 4032, "column": 68 } }, "object": { "type": "Identifier", - "start": 161627, - "end": 161635, + "start": 162141, + "end": 162149, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 40 }, "end": { - "line": 4024, + "line": 4032, "column": 48 }, "identifierName": "geometry" @@ -187390,15 +188451,15 @@ }, "property": { "type": "Identifier", - "start": 161636, - "end": 161655, + "start": 162150, + "end": 162169, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 49 }, "end": { - "line": 4024, + "line": 4032, "column": 68 }, "identifierName": "positionsCompressed" @@ -187409,15 +188470,15 @@ }, "property": { "type": "Identifier", - "start": 161656, - "end": 161662, + "start": 162170, + "end": 162176, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 69 }, "end": { - "line": 4024, + "line": 4032, "column": 75 }, "identifierName": "length" @@ -187429,15 +188490,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 161665, - "end": 161666, + "start": 162179, + "end": 162180, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 78 }, "end": { - "line": 4024, + "line": 4032, "column": 79 } }, @@ -187451,59 +188512,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 161668, - "end": 161940, + "start": 162182, + "end": 162454, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 81 }, "end": { - "line": 4029, + "line": 4037, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 161678, - "end": 161717, + "start": 162192, + "end": 162231, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 8 }, "end": { - "line": 4025, + "line": 4033, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 161684, - "end": 161716, + "start": 162198, + "end": 162230, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 14 }, "end": { - "line": 4025, + "line": 4033, "column": 46 } }, "id": { "type": "Identifier", - "start": 161684, - "end": 161693, + "start": 162198, + "end": 162207, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 14 }, "end": { - "line": 4025, + "line": 4033, "column": 23 }, "identifierName": "localAABB" @@ -187512,43 +188573,43 @@ }, "init": { "type": "CallExpression", - "start": 161696, - "end": 161716, + "start": 162210, + "end": 162230, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 26 }, "end": { - "line": 4025, + "line": 4033, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 161696, - "end": 161714, + "start": 162210, + "end": 162228, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 26 }, "end": { - "line": 4025, + "line": 4033, "column": 44 } }, "object": { "type": "Identifier", - "start": 161696, - "end": 161700, + "start": 162210, + "end": 162214, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 26 }, "end": { - "line": 4025, + "line": 4033, "column": 30 }, "identifierName": "math" @@ -187557,15 +188618,15 @@ }, "property": { "type": "Identifier", - "start": 161701, - "end": 161714, + "start": 162215, + "end": 162228, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 31 }, "end": { - "line": 4025, + "line": 4033, "column": 44 }, "identifierName": "collapseAABB3" @@ -187582,57 +188643,57 @@ }, { "type": "ExpressionStatement", - "start": 161726, - "end": 161791, + "start": 162240, + "end": 162305, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 8 }, "end": { - "line": 4026, + "line": 4034, "column": 73 } }, "expression": { "type": "CallExpression", - "start": 161726, - "end": 161790, + "start": 162240, + "end": 162304, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 8 }, "end": { - "line": 4026, + "line": 4034, "column": 72 } }, "callee": { "type": "MemberExpression", - "start": 161726, - "end": 161749, + "start": 162240, + "end": 162263, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 8 }, "end": { - "line": 4026, + "line": 4034, "column": 31 } }, "object": { "type": "Identifier", - "start": 161726, - "end": 161730, + "start": 162240, + "end": 162244, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 8 }, "end": { - "line": 4026, + "line": 4034, "column": 12 }, "identifierName": "math" @@ -187641,15 +188702,15 @@ }, "property": { "type": "Identifier", - "start": 161731, - "end": 161749, + "start": 162245, + "end": 162263, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 13 }, "end": { - "line": 4026, + "line": 4034, "column": 31 }, "identifierName": "expandAABB3Points3" @@ -187661,15 +188722,15 @@ "arguments": [ { "type": "Identifier", - "start": 161750, - "end": 161759, + "start": 162264, + "end": 162273, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 32 }, "end": { - "line": 4026, + "line": 4034, "column": 41 }, "identifierName": "localAABB" @@ -187678,29 +188739,29 @@ }, { "type": "MemberExpression", - "start": 161761, - "end": 161789, + "start": 162275, + "end": 162303, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 43 }, "end": { - "line": 4026, + "line": 4034, "column": 71 } }, "object": { "type": "Identifier", - "start": 161761, - "end": 161769, + "start": 162275, + "end": 162283, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 43 }, "end": { - "line": 4026, + "line": 4034, "column": 51 }, "identifierName": "geometry" @@ -187709,15 +188770,15 @@ }, "property": { "type": "Identifier", - "start": 161770, - "end": 161789, + "start": 162284, + "end": 162303, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 52 }, "end": { - "line": 4026, + "line": 4034, "column": 71 }, "identifierName": "positionsCompressed" @@ -187731,57 +188792,57 @@ }, { "type": "ExpressionStatement", - "start": 161800, - "end": 161883, + "start": 162314, + "end": 162397, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 8 }, "end": { - "line": 4027, + "line": 4035, "column": 91 } }, "expression": { "type": "CallExpression", - "start": 161800, - "end": 161882, + "start": 162314, + "end": 162396, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 8 }, "end": { - "line": 4027, + "line": 4035, "column": 90 } }, "callee": { "type": "MemberExpression", - "start": 161800, - "end": 161839, + "start": 162314, + "end": 162353, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 8 }, "end": { - "line": 4027, + "line": 4035, "column": 47 } }, "object": { "type": "Identifier", - "start": 161800, - "end": 161824, + "start": 162314, + "end": 162338, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 8 }, "end": { - "line": 4027, + "line": 4035, "column": 32 }, "identifierName": "geometryCompressionUtils" @@ -187790,15 +188851,15 @@ }, "property": { "type": "Identifier", - "start": 161825, - "end": 161839, + "start": 162339, + "end": 162353, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 33 }, "end": { - "line": 4027, + "line": 4035, "column": 47 }, "identifierName": "decompressAABB" @@ -187810,15 +188871,15 @@ "arguments": [ { "type": "Identifier", - "start": 161840, - "end": 161849, + "start": 162354, + "end": 162363, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 48 }, "end": { - "line": 4027, + "line": 4035, "column": 57 }, "identifierName": "localAABB" @@ -187827,29 +188888,29 @@ }, { "type": "MemberExpression", - "start": 161851, - "end": 161881, + "start": 162365, + "end": 162395, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 59 }, "end": { - "line": 4027, + "line": 4035, "column": 89 } }, "object": { "type": "Identifier", - "start": 161851, - "end": 161859, + "start": 162365, + "end": 162373, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 59 }, "end": { - "line": 4027, + "line": 4035, "column": 67 }, "identifierName": "geometry" @@ -187858,15 +188919,15 @@ }, "property": { "type": "Identifier", - "start": 161860, - "end": 161881, + "start": 162374, + "end": 162395, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 68 }, "end": { - "line": 4027, + "line": 4035, "column": 89 }, "identifierName": "positionsDecodeMatrix" @@ -187880,57 +188941,57 @@ }, { "type": "ExpressionStatement", - "start": 161892, - "end": 161934, + "start": 162406, + "end": 162448, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 8 }, "end": { - "line": 4028, + "line": 4036, "column": 50 } }, "expression": { "type": "CallExpression", - "start": 161892, - "end": 161933, + "start": 162406, + "end": 162447, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 8 }, "end": { - "line": 4028, + "line": 4036, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 161892, - "end": 161908, + "start": 162406, + "end": 162422, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 8 }, "end": { - "line": 4028, + "line": 4036, "column": 24 } }, "object": { "type": "Identifier", - "start": 161892, - "end": 161896, + "start": 162406, + "end": 162410, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 8 }, "end": { - "line": 4028, + "line": 4036, "column": 12 }, "identifierName": "math" @@ -187939,15 +189000,15 @@ }, "property": { "type": "Identifier", - "start": 161897, - "end": 161908, + "start": 162411, + "end": 162422, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 13 }, "end": { - "line": 4028, + "line": 4036, "column": 24 }, "identifierName": "AABB3ToOBB3" @@ -187959,15 +189020,15 @@ "arguments": [ { "type": "Identifier", - "start": 161909, - "end": 161918, + "start": 162423, + "end": 162432, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 25 }, "end": { - "line": 4028, + "line": 4036, "column": 34 }, "identifierName": "localAABB" @@ -187976,29 +189037,29 @@ }, { "type": "MemberExpression", - "start": 161920, - "end": 161932, + "start": 162434, + "end": 162446, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 36 }, "end": { - "line": 4028, + "line": 4036, "column": 48 } }, "object": { "type": "Identifier", - "start": 161920, - "end": 161928, + "start": 162434, + "end": 162442, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 36 }, "end": { - "line": 4028, + "line": 4036, "column": 44 }, "identifierName": "geometry" @@ -188007,15 +189068,15 @@ }, "property": { "type": "Identifier", - "start": 161929, - "end": 161932, + "start": 162443, + "end": 162446, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 45 }, "end": { - "line": 4028, + "line": 4036, "column": 48 }, "identifierName": "obb" @@ -188032,57 +189093,57 @@ }, "alternate": { "type": "IfStatement", - "start": 161946, - "end": 162604, + "start": 162460, + "end": 163118, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 11 }, "end": { - "line": 4041, + "line": 4049, "column": 5 } }, "test": { "type": "LogicalExpression", - "start": 161950, - "end": 162001, + "start": 162464, + "end": 162515, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 15 }, "end": { - "line": 4029, + "line": 4037, "column": 66 } }, "left": { "type": "MemberExpression", - "start": 161950, - "end": 161968, + "start": 162464, + "end": 162482, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 15 }, "end": { - "line": 4029, + "line": 4037, "column": 33 } }, "object": { "type": "Identifier", - "start": 161950, - "end": 161958, + "start": 162464, + "end": 162472, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 15 }, "end": { - "line": 4029, + "line": 4037, "column": 23 }, "identifierName": "geometry" @@ -188091,15 +189152,15 @@ }, "property": { "type": "Identifier", - "start": 161959, - "end": 161968, + "start": 162473, + "end": 162482, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 24 }, "end": { - "line": 4029, + "line": 4037, "column": 33 }, "identifierName": "positions" @@ -188111,57 +189172,57 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 161972, - "end": 162001, + "start": 162486, + "end": 162515, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 37 }, "end": { - "line": 4029, + "line": 4037, "column": 66 } }, "left": { "type": "MemberExpression", - "start": 161972, - "end": 161997, + "start": 162486, + "end": 162511, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 37 }, "end": { - "line": 4029, + "line": 4037, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 161972, - "end": 161990, + "start": 162486, + "end": 162504, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 37 }, "end": { - "line": 4029, + "line": 4037, "column": 55 } }, "object": { "type": "Identifier", - "start": 161972, - "end": 161980, + "start": 162486, + "end": 162494, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 37 }, "end": { - "line": 4029, + "line": 4037, "column": 45 }, "identifierName": "geometry" @@ -188170,15 +189231,15 @@ }, "property": { "type": "Identifier", - "start": 161981, - "end": 161990, + "start": 162495, + "end": 162504, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 46 }, "end": { - "line": 4029, + "line": 4037, "column": 55 }, "identifierName": "positions" @@ -188189,15 +189250,15 @@ }, "property": { "type": "Identifier", - "start": 161991, - "end": 161997, + "start": 162505, + "end": 162511, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 56 }, "end": { - "line": 4029, + "line": 4037, "column": 62 }, "identifierName": "length" @@ -188209,15 +189270,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 162000, - "end": 162001, + "start": 162514, + "end": 162515, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 65 }, "end": { - "line": 4029, + "line": 4037, "column": 66 } }, @@ -188231,59 +189292,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 162003, - "end": 162173, + "start": 162517, + "end": 162687, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 68 }, "end": { - "line": 4033, + "line": 4041, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 162013, - "end": 162052, + "start": 162527, + "end": 162566, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 8 }, "end": { - "line": 4030, + "line": 4038, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 162019, - "end": 162051, + "start": 162533, + "end": 162565, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 14 }, "end": { - "line": 4030, + "line": 4038, "column": 46 } }, "id": { "type": "Identifier", - "start": 162019, - "end": 162028, + "start": 162533, + "end": 162542, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 14 }, "end": { - "line": 4030, + "line": 4038, "column": 23 }, "identifierName": "localAABB" @@ -188292,43 +189353,43 @@ }, "init": { "type": "CallExpression", - "start": 162031, - "end": 162051, + "start": 162545, + "end": 162565, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 26 }, "end": { - "line": 4030, + "line": 4038, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 162031, - "end": 162049, + "start": 162545, + "end": 162563, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 26 }, "end": { - "line": 4030, + "line": 4038, "column": 44 } }, "object": { "type": "Identifier", - "start": 162031, - "end": 162035, + "start": 162545, + "end": 162549, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 26 }, "end": { - "line": 4030, + "line": 4038, "column": 30 }, "identifierName": "math" @@ -188337,15 +189398,15 @@ }, "property": { "type": "Identifier", - "start": 162036, - "end": 162049, + "start": 162550, + "end": 162563, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 31 }, "end": { - "line": 4030, + "line": 4038, "column": 44 }, "identifierName": "collapseAABB3" @@ -188362,57 +189423,57 @@ }, { "type": "ExpressionStatement", - "start": 162061, - "end": 162116, + "start": 162575, + "end": 162630, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 8 }, "end": { - "line": 4031, + "line": 4039, "column": 63 } }, "expression": { "type": "CallExpression", - "start": 162061, - "end": 162115, + "start": 162575, + "end": 162629, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 8 }, "end": { - "line": 4031, + "line": 4039, "column": 62 } }, "callee": { "type": "MemberExpression", - "start": 162061, - "end": 162084, + "start": 162575, + "end": 162598, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 8 }, "end": { - "line": 4031, + "line": 4039, "column": 31 } }, "object": { "type": "Identifier", - "start": 162061, - "end": 162065, + "start": 162575, + "end": 162579, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 8 }, "end": { - "line": 4031, + "line": 4039, "column": 12 }, "identifierName": "math" @@ -188421,15 +189482,15 @@ }, "property": { "type": "Identifier", - "start": 162066, - "end": 162084, + "start": 162580, + "end": 162598, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 13 }, "end": { - "line": 4031, + "line": 4039, "column": 31 }, "identifierName": "expandAABB3Points3" @@ -188441,15 +189502,15 @@ "arguments": [ { "type": "Identifier", - "start": 162085, - "end": 162094, + "start": 162599, + "end": 162608, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 32 }, "end": { - "line": 4031, + "line": 4039, "column": 41 }, "identifierName": "localAABB" @@ -188458,29 +189519,29 @@ }, { "type": "MemberExpression", - "start": 162096, - "end": 162114, + "start": 162610, + "end": 162628, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 43 }, "end": { - "line": 4031, + "line": 4039, "column": 61 } }, "object": { "type": "Identifier", - "start": 162096, - "end": 162104, + "start": 162610, + "end": 162618, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 43 }, "end": { - "line": 4031, + "line": 4039, "column": 51 }, "identifierName": "geometry" @@ -188489,15 +189550,15 @@ }, "property": { "type": "Identifier", - "start": 162105, - "end": 162114, + "start": 162619, + "end": 162628, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 52 }, "end": { - "line": 4031, + "line": 4039, "column": 61 }, "identifierName": "positions" @@ -188511,57 +189572,57 @@ }, { "type": "ExpressionStatement", - "start": 162125, - "end": 162167, + "start": 162639, + "end": 162681, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 8 }, "end": { - "line": 4032, + "line": 4040, "column": 50 } }, "expression": { "type": "CallExpression", - "start": 162125, - "end": 162166, + "start": 162639, + "end": 162680, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 8 }, "end": { - "line": 4032, + "line": 4040, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 162125, - "end": 162141, + "start": 162639, + "end": 162655, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 8 }, "end": { - "line": 4032, + "line": 4040, "column": 24 } }, "object": { "type": "Identifier", - "start": 162125, - "end": 162129, + "start": 162639, + "end": 162643, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 8 }, "end": { - "line": 4032, + "line": 4040, "column": 12 }, "identifierName": "math" @@ -188570,15 +189631,15 @@ }, "property": { "type": "Identifier", - "start": 162130, - "end": 162141, + "start": 162644, + "end": 162655, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 13 }, "end": { - "line": 4032, + "line": 4040, "column": 24 }, "identifierName": "AABB3ToOBB3" @@ -188590,15 +189651,15 @@ "arguments": [ { "type": "Identifier", - "start": 162142, - "end": 162151, + "start": 162656, + "end": 162665, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 25 }, "end": { - "line": 4032, + "line": 4040, "column": 34 }, "identifierName": "localAABB" @@ -188607,29 +189668,29 @@ }, { "type": "MemberExpression", - "start": 162153, - "end": 162165, + "start": 162667, + "end": 162679, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 36 }, "end": { - "line": 4032, + "line": 4040, "column": 48 } }, "object": { "type": "Identifier", - "start": 162153, - "end": 162161, + "start": 162667, + "end": 162675, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 36 }, "end": { - "line": 4032, + "line": 4040, "column": 44 }, "identifierName": "geometry" @@ -188638,15 +189699,15 @@ }, "property": { "type": "Identifier", - "start": 162162, - "end": 162165, + "start": 162676, + "end": 162679, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 45 }, "end": { - "line": 4032, + "line": 4040, "column": 48 }, "identifierName": "obb" @@ -188663,43 +189724,43 @@ }, "alternate": { "type": "IfStatement", - "start": 162179, - "end": 162604, + "start": 162693, + "end": 163118, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 11 }, "end": { - "line": 4041, + "line": 4049, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 162183, - "end": 162199, + "start": 162697, + "end": 162713, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 15 }, "end": { - "line": 4033, + "line": 4041, "column": 31 } }, "object": { "type": "Identifier", - "start": 162183, - "end": 162191, + "start": 162697, + "end": 162705, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 15 }, "end": { - "line": 4033, + "line": 4041, "column": 23 }, "identifierName": "geometry" @@ -188708,15 +189769,15 @@ }, "property": { "type": "Identifier", - "start": 162192, - "end": 162199, + "start": 162706, + "end": 162713, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 24 }, "end": { - "line": 4033, + "line": 4041, "column": 31 }, "identifierName": "buckets" @@ -188727,59 +189788,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 162201, - "end": 162604, + "start": 162715, + "end": 163118, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 33 }, "end": { - "line": 4041, + "line": 4049, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 162211, - "end": 162250, + "start": 162725, + "end": 162764, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 8 }, "end": { - "line": 4034, + "line": 4042, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 162217, - "end": 162249, + "start": 162731, + "end": 162763, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 14 }, "end": { - "line": 4034, + "line": 4042, "column": 46 } }, "id": { "type": "Identifier", - "start": 162217, - "end": 162226, + "start": 162731, + "end": 162740, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 14 }, "end": { - "line": 4034, + "line": 4042, "column": 23 }, "identifierName": "localAABB" @@ -188788,43 +189849,43 @@ }, "init": { "type": "CallExpression", - "start": 162229, - "end": 162249, + "start": 162743, + "end": 162763, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 26 }, "end": { - "line": 4034, + "line": 4042, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 162229, - "end": 162247, + "start": 162743, + "end": 162761, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 26 }, "end": { - "line": 4034, + "line": 4042, "column": 44 } }, "object": { "type": "Identifier", - "start": 162229, - "end": 162233, + "start": 162743, + "end": 162747, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 26 }, "end": { - "line": 4034, + "line": 4042, "column": 30 }, "identifierName": "math" @@ -188833,15 +189894,15 @@ }, "property": { "type": "Identifier", - "start": 162234, - "end": 162247, + "start": 162748, + "end": 162761, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 31 }, "end": { - "line": 4034, + "line": 4042, "column": 44 }, "identifierName": "collapseAABB3" @@ -188858,58 +189919,58 @@ }, { "type": "ForStatement", - "start": 162259, - "end": 162455, + "start": 162773, + "end": 162969, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 8 }, "end": { - "line": 4038, + "line": 4046, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 162264, - "end": 162304, + "start": 162778, + "end": 162818, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 13 }, "end": { - "line": 4035, + "line": 4043, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 162268, - "end": 162273, + "start": 162782, + "end": 162787, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 17 }, "end": { - "line": 4035, + "line": 4043, "column": 22 } }, "id": { "type": "Identifier", - "start": 162268, - "end": 162269, + "start": 162782, + "end": 162783, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 17 }, "end": { - "line": 4035, + "line": 4043, "column": 18 }, "identifierName": "i" @@ -188918,15 +189979,15 @@ }, "init": { "type": "NumericLiteral", - "start": 162272, - "end": 162273, + "start": 162786, + "end": 162787, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 21 }, "end": { - "line": 4035, + "line": 4043, "column": 22 } }, @@ -188939,29 +190000,29 @@ }, { "type": "VariableDeclarator", - "start": 162275, - "end": 162304, + "start": 162789, + "end": 162818, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 24 }, "end": { - "line": 4035, + "line": 4043, "column": 53 } }, "id": { "type": "Identifier", - "start": 162275, - "end": 162278, + "start": 162789, + "end": 162792, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 24 }, "end": { - "line": 4035, + "line": 4043, "column": 27 }, "identifierName": "len" @@ -188970,43 +190031,43 @@ }, "init": { "type": "MemberExpression", - "start": 162281, - "end": 162304, + "start": 162795, + "end": 162818, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 30 }, "end": { - "line": 4035, + "line": 4043, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 162281, - "end": 162297, + "start": 162795, + "end": 162811, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 30 }, "end": { - "line": 4035, + "line": 4043, "column": 46 } }, "object": { "type": "Identifier", - "start": 162281, - "end": 162289, + "start": 162795, + "end": 162803, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 30 }, "end": { - "line": 4035, + "line": 4043, "column": 38 }, "identifierName": "geometry" @@ -189015,15 +190076,15 @@ }, "property": { "type": "Identifier", - "start": 162290, - "end": 162297, + "start": 162804, + "end": 162811, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 39 }, "end": { - "line": 4035, + "line": 4043, "column": 46 }, "identifierName": "buckets" @@ -189034,15 +190095,15 @@ }, "property": { "type": "Identifier", - "start": 162298, - "end": 162304, + "start": 162812, + "end": 162818, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 47 }, "end": { - "line": 4035, + "line": 4043, "column": 53 }, "identifierName": "length" @@ -189057,29 +190118,29 @@ }, "test": { "type": "BinaryExpression", - "start": 162306, - "end": 162313, + "start": 162820, + "end": 162827, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 55 }, "end": { - "line": 4035, + "line": 4043, "column": 62 } }, "left": { "type": "Identifier", - "start": 162306, - "end": 162307, + "start": 162820, + "end": 162821, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 55 }, "end": { - "line": 4035, + "line": 4043, "column": 56 }, "identifierName": "i" @@ -189089,15 +190150,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 162310, - "end": 162313, + "start": 162824, + "end": 162827, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 59 }, "end": { - "line": 4035, + "line": 4043, "column": 62 }, "identifierName": "len" @@ -189107,15 +190168,15 @@ }, "update": { "type": "UpdateExpression", - "start": 162315, - "end": 162318, + "start": 162829, + "end": 162832, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 64 }, "end": { - "line": 4035, + "line": 4043, "column": 67 } }, @@ -189123,15 +190184,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 162315, - "end": 162316, + "start": 162829, + "end": 162830, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 64 }, "end": { - "line": 4035, + "line": 4043, "column": 65 }, "identifierName": "i" @@ -189141,59 +190202,59 @@ }, "body": { "type": "BlockStatement", - "start": 162320, - "end": 162455, + "start": 162834, + "end": 162969, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 69 }, "end": { - "line": 4038, + "line": 4046, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 162334, - "end": 162369, + "start": 162848, + "end": 162883, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 12 }, "end": { - "line": 4036, + "line": 4044, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 162340, - "end": 162368, + "start": 162854, + "end": 162882, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 18 }, "end": { - "line": 4036, + "line": 4044, "column": 46 } }, "id": { "type": "Identifier", - "start": 162340, - "end": 162346, + "start": 162854, + "end": 162860, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 18 }, "end": { - "line": 4036, + "line": 4044, "column": 24 }, "identifierName": "bucket" @@ -189202,43 +190263,43 @@ }, "init": { "type": "MemberExpression", - "start": 162349, - "end": 162368, + "start": 162863, + "end": 162882, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 27 }, "end": { - "line": 4036, + "line": 4044, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 162349, - "end": 162365, + "start": 162863, + "end": 162879, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 27 }, "end": { - "line": 4036, + "line": 4044, "column": 43 } }, "object": { "type": "Identifier", - "start": 162349, - "end": 162357, + "start": 162863, + "end": 162871, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 27 }, "end": { - "line": 4036, + "line": 4044, "column": 35 }, "identifierName": "geometry" @@ -189247,15 +190308,15 @@ }, "property": { "type": "Identifier", - "start": 162358, - "end": 162365, + "start": 162872, + "end": 162879, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 36 }, "end": { - "line": 4036, + "line": 4044, "column": 43 }, "identifierName": "buckets" @@ -189266,15 +190327,15 @@ }, "property": { "type": "Identifier", - "start": 162366, - "end": 162367, + "start": 162880, + "end": 162881, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 44 }, "end": { - "line": 4036, + "line": 4044, "column": 45 }, "identifierName": "i" @@ -189289,57 +190350,57 @@ }, { "type": "ExpressionStatement", - "start": 162382, - "end": 162445, + "start": 162896, + "end": 162959, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 12 }, "end": { - "line": 4037, + "line": 4045, "column": 75 } }, "expression": { "type": "CallExpression", - "start": 162382, - "end": 162444, + "start": 162896, + "end": 162958, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 12 }, "end": { - "line": 4037, + "line": 4045, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 162382, - "end": 162405, + "start": 162896, + "end": 162919, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 12 }, "end": { - "line": 4037, + "line": 4045, "column": 35 } }, "object": { "type": "Identifier", - "start": 162382, - "end": 162386, + "start": 162896, + "end": 162900, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 12 }, "end": { - "line": 4037, + "line": 4045, "column": 16 }, "identifierName": "math" @@ -189348,15 +190409,15 @@ }, "property": { "type": "Identifier", - "start": 162387, - "end": 162405, + "start": 162901, + "end": 162919, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 17 }, "end": { - "line": 4037, + "line": 4045, "column": 35 }, "identifierName": "expandAABB3Points3" @@ -189368,15 +190429,15 @@ "arguments": [ { "type": "Identifier", - "start": 162406, - "end": 162415, + "start": 162920, + "end": 162929, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 36 }, "end": { - "line": 4037, + "line": 4045, "column": 45 }, "identifierName": "localAABB" @@ -189385,29 +190446,29 @@ }, { "type": "MemberExpression", - "start": 162417, - "end": 162443, + "start": 162931, + "end": 162957, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 47 }, "end": { - "line": 4037, + "line": 4045, "column": 73 } }, "object": { "type": "Identifier", - "start": 162417, - "end": 162423, + "start": 162931, + "end": 162937, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 47 }, "end": { - "line": 4037, + "line": 4045, "column": 53 }, "identifierName": "bucket" @@ -189416,15 +190477,15 @@ }, "property": { "type": "Identifier", - "start": 162424, - "end": 162443, + "start": 162938, + "end": 162957, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 54 }, "end": { - "line": 4037, + "line": 4045, "column": 73 }, "identifierName": "positionsCompressed" @@ -189442,57 +190503,57 @@ }, { "type": "ExpressionStatement", - "start": 162464, - "end": 162547, + "start": 162978, + "end": 163061, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 8 }, "end": { - "line": 4039, + "line": 4047, "column": 91 } }, "expression": { "type": "CallExpression", - "start": 162464, - "end": 162546, + "start": 162978, + "end": 163060, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 8 }, "end": { - "line": 4039, + "line": 4047, "column": 90 } }, "callee": { "type": "MemberExpression", - "start": 162464, - "end": 162503, + "start": 162978, + "end": 163017, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 8 }, "end": { - "line": 4039, + "line": 4047, "column": 47 } }, "object": { "type": "Identifier", - "start": 162464, - "end": 162488, + "start": 162978, + "end": 163002, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 8 }, "end": { - "line": 4039, + "line": 4047, "column": 32 }, "identifierName": "geometryCompressionUtils" @@ -189501,15 +190562,15 @@ }, "property": { "type": "Identifier", - "start": 162489, - "end": 162503, + "start": 163003, + "end": 163017, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 33 }, "end": { - "line": 4039, + "line": 4047, "column": 47 }, "identifierName": "decompressAABB" @@ -189521,15 +190582,15 @@ "arguments": [ { "type": "Identifier", - "start": 162504, - "end": 162513, + "start": 163018, + "end": 163027, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 48 }, "end": { - "line": 4039, + "line": 4047, "column": 57 }, "identifierName": "localAABB" @@ -189538,29 +190599,29 @@ }, { "type": "MemberExpression", - "start": 162515, - "end": 162545, + "start": 163029, + "end": 163059, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 59 }, "end": { - "line": 4039, + "line": 4047, "column": 89 } }, "object": { "type": "Identifier", - "start": 162515, - "end": 162523, + "start": 163029, + "end": 163037, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 59 }, "end": { - "line": 4039, + "line": 4047, "column": 67 }, "identifierName": "geometry" @@ -189569,15 +190630,15 @@ }, "property": { "type": "Identifier", - "start": 162524, - "end": 162545, + "start": 163038, + "end": 163059, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 68 }, "end": { - "line": 4039, + "line": 4047, "column": 89 }, "identifierName": "positionsDecodeMatrix" @@ -189591,57 +190652,57 @@ }, { "type": "ExpressionStatement", - "start": 162556, - "end": 162598, + "start": 163070, + "end": 163112, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 8 }, "end": { - "line": 4040, + "line": 4048, "column": 50 } }, "expression": { "type": "CallExpression", - "start": 162556, - "end": 162597, + "start": 163070, + "end": 163111, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 8 }, "end": { - "line": 4040, + "line": 4048, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 162556, - "end": 162572, + "start": 163070, + "end": 163086, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 8 }, "end": { - "line": 4040, + "line": 4048, "column": 24 } }, "object": { "type": "Identifier", - "start": 162556, - "end": 162560, + "start": 163070, + "end": 163074, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 8 }, "end": { - "line": 4040, + "line": 4048, "column": 12 }, "identifierName": "math" @@ -189650,15 +190711,15 @@ }, "property": { "type": "Identifier", - "start": 162561, - "end": 162572, + "start": 163075, + "end": 163086, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 13 }, "end": { - "line": 4040, + "line": 4048, "column": 24 }, "identifierName": "AABB3ToOBB3" @@ -189670,15 +190731,15 @@ "arguments": [ { "type": "Identifier", - "start": 162573, - "end": 162582, + "start": 163087, + "end": 163096, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 25 }, "end": { - "line": 4040, + "line": 4048, "column": 34 }, "identifierName": "localAABB" @@ -189687,29 +190748,29 @@ }, { "type": "MemberExpression", - "start": 162584, - "end": 162596, + "start": 163098, + "end": 163110, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 36 }, "end": { - "line": 4040, + "line": 4048, "column": 48 } }, "object": { "type": "Identifier", - "start": 162584, - "end": 162592, + "start": 163098, + "end": 163106, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 36 }, "end": { - "line": 4040, + "line": 4048, "column": 44 }, "identifierName": "geometry" @@ -189718,15 +190779,15 @@ }, "property": { "type": "Identifier", - "start": 162593, - "end": 162596, + "start": 163107, + "end": 163110, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 45 }, "end": { - "line": 4040, + "line": 4048, "column": 48 }, "identifierName": "obb" @@ -189756,15 +190817,15 @@ { "type": "CommentBlock", "value": "*\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * Internally, SceneModel uses a combination of several different techniques to render and represent\n * the different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\n * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\n * serve to demonstrate how to use the capabilities of SceneModel programmatically.\n *\n * * [Loading building models into SceneModels](/examples/buildings)\n * * [Loading city models into SceneModels](/examples/cities)\n * * [Loading LiDAR scans into SceneModels](/examples/lidar)\n * * [Loading CAD models into SceneModels](/examples/cad)\n * * [SceneModel feature tests](/examples/scenemodel)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [SceneModel](#DataTextureSceneModel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates-for-double-precision)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## SceneModel\n *\n * ````SceneModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
\n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````SceneModel```` is an {@link Entity} that represents a model.\n * * A ````SceneModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````SceneModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a SceneModel representing a table\n * // with four legs, using geometry instancing\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the SceneModel\n * // We'll instance this geometry by five meshes\n *\n * sceneModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a SceneModel\n *\n * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````SceneModel````.\n *\n * Once finalized, we can't add anything more to our ````SceneModel````.\n *\n * ```` javascript\n * SceneModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````SceneModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````SceneModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a SceneModel representing a table with four legs, using geometry batching\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the SceneModel.\n *\n * SceneModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````SceneModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````SceneModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for Double Precision\n *\n * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## Positioning at World-space coordinates\n *\n * To position a SceneModel at given double-precision World coordinates, we can\n * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n * 3D World-space position at which the SceneModel will be located.\n *\n * Note that ````position```` is a single-precision offset relative to ````origin````.\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true,\n * origin: origin, // Everything in this SceneModel is relative to this RTC center\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * # Textures\n *\n * ## Loading KTX2 Texture Files into a SceneModel\n *\n * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\n * allow us to load textures into it from KTX2 buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\n * transcoder WASM module.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n *\n * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * });\n * ````\n *\n * @implements {Entity}\n ", - "start": 2951, - "end": 38769, + "start": 2987, + "end": 38805, "loc": { "start": { - "line": 66, + "line": 67, "column": 0 }, "end": { - "line": 1080, + "line": 1081, "column": 3 } } @@ -189772,15 +190833,15 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this SceneModel represents a model, in which case the SceneModel will be registered by {@link SceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Number[]} [cfg.origin=[0,0,0]] World-space double-precision 3D origin.\n * @param {Number[]} [cfg.position=[0,0,0]] Local, single-precision 3D position, relative to the origin parameter.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModel is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModel is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModel is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModel is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModel is initially included in boundary calculations.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModel is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModel is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModel is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModel's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] SceneModel's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] SceneModel's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this SceneModel. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. SAO is configured by the Scene's {@link SAO} component.\n * @param {Boolean} [cfg.pbrEnabled=true] Indicates if physically-based rendering (PBR) will apply to the SceneModel when {@link Scene#pbrEnabled} is ````true````.\n * @param {Boolean} [cfg.colorTextureEnabled=true] Indicates if base color textures will be rendered for the SceneModel when {@link Scene#colorTextureEnabled} is ````true````.\n * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that SceneModel internally creates for batched geometries.\n * A lower value means less heap allocation/de-allocation while creating/loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while creating/loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n * @param {TextureTranscoder} [cfg.textureTranscoder] Transcoder that will be used internally by {@link SceneModel#createTexture}\n * to convert transcoded texture data. Only required when we'll be providing transcoded data\n * to {@link SceneModel#createTexture}. We assume that all transcoded texture data added to a ````SceneModel````\n * will then in a format supported by this transcoder.\n * @param {Boolean} [cfg.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n ", - "start": 38819, - "end": 43850, + "start": 38855, + "end": 43886, "loc": { "start": { - "line": 1083, + "line": 1084, "column": 4 }, "end": { - "line": 1125, + "line": 1126, "column": 7 } } @@ -189788,15 +190849,15 @@ { "type": "CommentLine", "value": " Not needed for most objects, and very expensive, so disabled", - "start": 44039, - "end": 44102, + "start": 44075, + "end": 44138, "loc": { "start": { - "line": 1132, + "line": 1133, "column": 43 }, "end": { - "line": 1132, + "line": 1133, "column": 106 } } @@ -189804,15 +190865,15 @@ { "type": "CommentLine", "value": " Until fixed: https://github.com/xeokit/xeokit-sdk/issues/1204", - "start": 44147, - "end": 44211, + "start": 44183, + "end": 44247, "loc": { "start": { - "line": 1133, + "line": 1134, "column": 44 }, "end": { - "line": 1133, + "line": 1134, "column": 108 } } @@ -189820,15 +190881,15 @@ { "type": "CommentLine", "value": " For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second", - "start": 44732, - "end": 44837, + "start": 44768, + "end": 44873, "loc": { "start": { - "line": 1151, + "line": 1152, "column": 29 }, "end": { - "line": 1151, + "line": 1152, "column": 134 } } @@ -189836,15 +190897,15 @@ { "type": "CommentLine", "value": " Geometries with optimizations used for data texture representation", - "start": 44932, - "end": 45001, + "start": 44968, + "end": 45037, "loc": { "start": { - "line": 1155, + "line": 1156, "column": 31 }, "end": { - "line": 1155, + "line": 1156, "column": 100 } } @@ -189852,15 +190913,15 @@ { "type": "CommentBlock", "value": "* @private *", - "start": 45192, - "end": 45208, + "start": 45228, + "end": 45244, "loc": { "start": { - "line": 1163, + "line": 1164, "column": 8 }, "end": { - "line": 1163, + "line": 1164, "column": 24 } } @@ -189868,15 +190929,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45264, - "end": 45299, + "start": 45300, + "end": 45335, "loc": { "start": { - "line": 1166, + "line": 1167, "column": 8 }, "end": { - "line": 1168, + "line": 1169, "column": 11 } } @@ -189884,15 +190945,15 @@ { "type": "CommentLine", "value": " Number of geometries created with createGeometry()", - "start": 45332, - "end": 45385, + "start": 45368, + "end": 45421, "loc": { "start": { - "line": 1169, + "line": 1170, "column": 32 }, "end": { - "line": 1169, + "line": 1170, "column": 85 } } @@ -189900,15 +190961,15 @@ { "type": "CommentLine", "value": " These counts are used to avoid unnecessary render passes", - "start": 45395, - "end": 45454, + "start": 45431, + "end": 45490, "loc": { "start": { - "line": 1171, + "line": 1172, "column": 8 }, "end": { - "line": 1171, + "line": 1172, "column": 67 } } @@ -189916,15 +190977,15 @@ { "type": "CommentLine", "value": " They are incremented or decremented exclusively by BatchingLayer and InstancingLayer", - "start": 45463, - "end": 45550, + "start": 45499, + "end": 45586, "loc": { "start": { - "line": 1172, + "line": 1173, "column": 8 }, "end": { - "line": 1172, + "line": 1173, "column": 95 } } @@ -189932,15 +190993,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45560, - "end": 45595, + "start": 45596, + "end": 45631, "loc": { "start": { - "line": 1174, + "line": 1175, "column": 8 }, "end": { - "line": 1176, + "line": 1177, "column": 11 } } @@ -189948,15 +191009,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45635, - "end": 45670, + "start": 45671, + "end": 45706, "loc": { "start": { - "line": 1179, + "line": 1180, "column": 8 }, "end": { - "line": 1181, + "line": 1182, "column": 11 } } @@ -189964,15 +191025,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45722, - "end": 45757, + "start": 45758, + "end": 45793, "loc": { "start": { - "line": 1184, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1187, "column": 11 } } @@ -189980,15 +191041,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45813, - "end": 45848, + "start": 45849, + "end": 45884, "loc": { "start": { - "line": 1189, + "line": 1190, "column": 8 }, "end": { - "line": 1191, + "line": 1192, "column": 11 } } @@ -189996,15 +191057,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45899, - "end": 45934, + "start": 45935, + "end": 45970, "loc": { "start": { - "line": 1194, + "line": 1195, "column": 8 }, "end": { - "line": 1196, + "line": 1197, "column": 11 } } @@ -190012,15 +191073,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 45990, - "end": 46025, + "start": 46026, + "end": 46061, "loc": { "start": { - "line": 1199, + "line": 1200, "column": 8 }, "end": { - "line": 1201, + "line": 1202, "column": 11 } } @@ -190028,15 +191089,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46078, - "end": 46113, + "start": 46114, + "end": 46149, "loc": { "start": { - "line": 1204, + "line": 1205, "column": 8 }, "end": { - "line": 1206, + "line": 1207, "column": 11 } } @@ -190044,15 +191105,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46163, - "end": 46198, + "start": 46199, + "end": 46234, "loc": { "start": { - "line": 1209, + "line": 1210, "column": 8 }, "end": { - "line": 1211, + "line": 1212, "column": 11 } } @@ -190060,15 +191121,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46251, - "end": 46286, + "start": 46287, + "end": 46322, "loc": { "start": { - "line": 1214, + "line": 1215, "column": 8 }, "end": { - "line": 1216, + "line": 1217, "column": 11 } } @@ -190076,15 +191137,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 46340, - "end": 46375, + "start": 46376, + "end": 46411, "loc": { "start": { - "line": 1219, + "line": 1220, "column": 8 }, "end": { - "line": 1221, + "line": 1222, "column": 11 } } @@ -190092,15 +191153,15 @@ { "type": "CommentLine", "value": " Build static matrix", - "start": 46602, - "end": 46624, + "start": 46638, + "end": 46660, "loc": { "start": { - "line": 1231, + "line": 1232, "column": 8 }, "end": { - "line": 1231, + "line": 1232, "column": 30 } } @@ -190108,15 +191169,15 @@ { "type": "CommentLine", "value": " Every SceneModelMesh gets at least the default TextureSet,", - "start": 49376, - "end": 49437, + "start": 49412, + "end": 49473, "loc": { "start": { - "line": 1310, + "line": 1311, "column": 8 }, "end": { - "line": 1310, + "line": 1311, "column": 69 } } @@ -190124,15 +191185,15 @@ { "type": "CommentLine", "value": " which contains empty default textures filled with color", - "start": 49446, - "end": 49504, + "start": 49482, + "end": 49540, "loc": { "start": { - "line": 1311, + "line": 1312, "column": 8 }, "end": { - "line": 1311, + "line": 1312, "column": 66 } } @@ -190140,15 +191201,15 @@ { "type": "CommentLine", "value": " [r, g, b, a]})", - "start": 49729, - "end": 49746, + "start": 49765, + "end": 49782, "loc": { "start": { - "line": 1316, + "line": 1317, "column": 43 }, "end": { - "line": 1316, + "line": 1317, "column": 60 } } @@ -190156,15 +191217,15 @@ { "type": "CommentLine", "value": " [unused, roughness, metalness, unused]", - "start": 50009, - "end": 50050, + "start": 50045, + "end": 50086, "loc": { "start": { - "line": 1323, + "line": 1324, "column": 43 }, "end": { - "line": 1323, + "line": 1324, "column": 84 } } @@ -190172,15 +191233,15 @@ { "type": "CommentLine", "value": " [x, y, z, unused] - these must be zeros", - "start": 50306, - "end": 50348, + "start": 50342, + "end": 50384, "loc": { "start": { - "line": 1330, + "line": 1331, "column": 43 }, "end": { - "line": 1330, + "line": 1331, "column": 85 } } @@ -190188,15 +191249,15 @@ { "type": "CommentLine", "value": " [x, y, z, unused]", - "start": 50606, - "end": 50626, + "start": 50642, + "end": 50662, "loc": { "start": { - "line": 1337, + "line": 1338, "column": 43 }, "end": { - "line": 1337, + "line": 1338, "column": 63 } } @@ -190204,15 +191265,15 @@ { "type": "CommentLine", "value": " [x, y, z, unused]", - "start": 50886, - "end": 50906, + "start": 50922, + "end": 50942, "loc": { "start": { - "line": 1344, + "line": 1345, "column": 43 }, "end": { - "line": 1344, + "line": 1345, "column": 63 } } @@ -190220,15 +191281,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 51759, - "end": 51875, + "start": 51795, + "end": 51911, "loc": { "start": { - "line": 1363, + "line": 1364, "column": 4 }, "end": { - "line": 1363, + "line": 1364, "column": 120 } } @@ -190236,15 +191297,15 @@ { "type": "CommentLine", "value": " SceneModel members", - "start": 51880, - "end": 51901, + "start": 51916, + "end": 51937, "loc": { "start": { - "line": 1364, + "line": 1365, "column": 4 }, "end": { - "line": 1364, + "line": 1365, "column": 25 } } @@ -190252,15 +191313,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 51906, - "end": 52022, + "start": 51942, + "end": 52058, "loc": { "start": { - "line": 1365, + "line": 1366, "column": 4 }, "end": { - "line": 1365, + "line": 1366, "column": 120 } } @@ -190268,15 +191329,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that this Component is a SceneModel.\n * @type {Boolean}\n ", - "start": 52028, - "end": 52131, + "start": 52064, + "end": 52167, "loc": { "start": { - "line": 1367, + "line": 1368, "column": 4 }, "end": { - "line": 1370, + "line": 1371, "column": 7 } } @@ -190284,15 +191345,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTransform}s in this SceneModel.\n *\n * Each {#link SceneModelTransform} is stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", - "start": 52195, - "end": 52402, + "start": 52231, + "end": 52438, "loc": { "start": { - "line": 1375, + "line": 1376, "column": 4 }, "end": { - "line": 1381, + "line": 1382, "column": 7 } } @@ -190300,15 +191361,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTexture}s in this SceneModel.\n *\n * * Each {@link SceneModelTexture} is created with {@link SceneModel.createTexture}.\n * * Each {@link SceneModelTexture} is stored here against its {@link SceneModelTexture.id}.\n *\n * @returns {*|{}}\n ", - "start": 52470, - "end": 52763, + "start": 52506, + "end": 52799, "loc": { "start": { - "line": 1386, + "line": 1387, "column": 4 }, "end": { - "line": 1393, + "line": 1394, "column": 7 } } @@ -190316,15 +191377,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelTextureSet}s in this SceneModel.\n *\n * Each {@link SceneModelTextureSet} is stored here against its {@link SceneModelTextureSet.id}.\n *\n * @returns {*|{}}\n ", - "start": 52827, - "end": 53037, + "start": 52863, + "end": 53073, "loc": { "start": { - "line": 1398, + "line": 1399, "column": 4 }, "end": { - "line": 1404, + "line": 1405, "column": 7 } } @@ -190332,15 +191393,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelMesh}es in this SceneModel.\n *\n * Each {@SceneModelMesh} is stored here against its {@link SceneModelMesh.id}.\n *\n * @returns {*|{}}\n ", - "start": 53107, - "end": 53295, + "start": 53143, + "end": 53331, "loc": { "start": { - "line": 1409, + "line": 1410, "column": 4 }, "end": { - "line": 1415, + "line": 1416, "column": 7 } } @@ -190348,15 +191409,15 @@ { "type": "CommentBlock", "value": "*\n * The {@link SceneModelEntity}s in this SceneModel.\n *\n * Each {#link SceneModelEntity} in this SceneModel that represents an object is\n * stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", - "start": 53355, - "end": 53608, + "start": 53391, + "end": 53644, "loc": { "start": { - "line": 1420, + "line": 1421, "column": 4 }, "end": { - "line": 1427, + "line": 1428, "column": 7 } } @@ -190364,15 +191425,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the 3D World-space origin for this SceneModel.\n *\n * Each {@link SceneModelMesh.origin}, if supplied, is relative to this origin.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Float64Array}\n ", - "start": 53671, - "end": 53915, + "start": 53707, + "end": 53951, "loc": { "start": { - "line": 1432, + "line": 1433, "column": 4 }, "end": { - "line": 1440, + "line": 1441, "column": 7 } } @@ -190380,15 +191441,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 53975, - "end": 54113, + "start": 54011, + "end": 54149, "loc": { "start": { - "line": 1445, + "line": 1446, "column": 4 }, "end": { - "line": 1451, + "line": 1452, "column": 7 } } @@ -190396,15 +191457,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54294, - "end": 54432, + "start": 54330, + "end": 54468, "loc": { "start": { - "line": 1459, + "line": 1460, "column": 4 }, "end": { - "line": 1465, + "line": 1466, "column": 7 } } @@ -190412,15 +191473,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54496, - "end": 54698, + "start": 54532, + "end": 54734, "loc": { "start": { - "line": 1470, + "line": 1471, "column": 4 }, "end": { - "line": 1476, + "line": 1477, "column": 7 } } @@ -190428,15 +191489,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54952, - "end": 55154, + "start": 54988, + "end": 55190, "loc": { "start": { - "line": 1485, + "line": 1486, "column": 4 }, "end": { - "line": 1491, + "line": 1492, "column": 7 } } @@ -190444,15 +191505,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", - "start": 55218, - "end": 55366, + "start": 55254, + "end": 55402, "loc": { "start": { - "line": 1496, + "line": 1497, "column": 4 }, "end": { - "line": 1502, + "line": 1503, "column": 7 } } @@ -190460,15 +191521,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", - "start": 55627, - "end": 55775, + "start": 55663, + "end": 55811, "loc": { "start": { - "line": 1511, + "line": 1512, "column": 4 }, "end": { - "line": 1517, + "line": 1518, "column": 7 } } @@ -190476,15 +191537,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", - "start": 55843, - "end": 55994, + "start": 55879, + "end": 56030, "loc": { "start": { - "line": 1522, + "line": 1523, "column": 4 }, "end": { - "line": 1529, + "line": 1530, "column": 7 } } @@ -190492,15 +191553,15 @@ { "type": "CommentLine", "value": " NOP - deprecated", - "start": 56026, - "end": 56045, + "start": 56062, + "end": 56081, "loc": { "start": { - "line": 1531, + "line": 1532, "column": 8 }, "end": { - "line": 1531, + "line": 1532, "column": 27 } } @@ -190508,15 +191569,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", - "start": 56057, - "end": 56208, + "start": 56093, + "end": 56244, "loc": { "start": { - "line": 1534, + "line": 1535, "column": 4 }, "end": { - "line": 1541, + "line": 1542, "column": 7 } } @@ -190524,15 +191585,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", - "start": 56266, - "end": 56459, + "start": 56302, + "end": 56495, "loc": { "start": { - "line": 1546, + "line": 1547, "column": 4 }, "end": { - "line": 1552, + "line": 1553, "column": 7 } } @@ -190540,15 +191601,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", - "start": 57046, - "end": 57239, + "start": 57082, + "end": 57275, "loc": { "start": { - "line": 1568, + "line": 1569, "column": 4 }, "end": { - "line": 1574, + "line": 1575, "column": 7 } } @@ -190556,15 +191617,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's local modeling rotation transform matrix.\n *\n * @type {Number[]}\n ", - "start": 57379, - "end": 57492, + "start": 57415, + "end": 57528, "loc": { "start": { - "line": 1582, + "line": 1583, "column": 4 }, "end": { - "line": 1586, + "line": 1587, "column": 7 } } @@ -190572,15 +191633,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the conjugate of the SceneModel's local modeling rotation transform matrix.\n *\n * This is used for RTC view matrix management in renderers.\n *\n * @type {Number[]}\n ", - "start": 58155, - "end": 58357, + "start": 58191, + "end": 58393, "loc": { "start": { - "line": 1605, + "line": 1606, "column": 4 }, "end": { - "line": 1611, + "line": 1612, "column": 7 } } @@ -190588,15 +191649,15 @@ { "type": "CommentLine", "value": " Entities need to retransform their World AABBs by SceneModel's worldMatrix", - "start": 59059, - "end": 59136, + "start": 59095, + "end": 59172, "loc": { "start": { - "line": 1636, + "line": 1637, "column": 52 }, "end": { - "line": 1636, + "line": 1637, "column": 129 } } @@ -190604,15 +191665,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n ", - "start": 59158, - "end": 59272, + "start": 59194, + "end": 59308, "loc": { "start": { - "line": 1640, + "line": 1641, "column": 4 }, "end": { - "line": 1645, + "line": 1646, "column": 7 } } @@ -190620,15 +191681,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World normal matrix.\n *\n * @type {Number[]}\n ", - "start": 59336, - "end": 59428, + "start": 59372, + "end": 59464, "loc": { "start": { - "line": 1650, + "line": 1651, "column": 4 }, "end": { - "line": 1654, + "line": 1655, "column": 7 } } @@ -190636,15 +191697,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the view matrix with which to\n * render this SceneModel. The view matrix is the concatenation of the\n * Camera view matrix with the Performance model's world (modeling) matrix.\n *\n * @private\n ", - "start": 59510, - "end": 59782, + "start": 59546, + "end": 59818, "loc": { "start": { - "line": 1659, + "line": 1660, "column": 4 }, "end": { - "line": 1665, + "line": 1666, "column": 7 } } @@ -190652,15 +191713,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel.\n *\n * @private\n ", - "start": 60370, - "end": 60518, + "start": 60406, + "end": 60554, "loc": { "start": { - "line": 1683, + "line": 1684, "column": 4 }, "end": { - "line": 1687, + "line": 1688, "column": 7 } } @@ -190668,15 +191729,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n ", - "start": 61250, - "end": 61390, + "start": 61286, + "end": 61426, "loc": { "start": { - "line": 1707, + "line": 1708, "column": 4 }, "end": { - "line": 1713, + "line": 1714, "column": 7 } } @@ -190684,15 +191745,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this SceneModel.\n *\n * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\n * the Viewer will:\n *\n * * hide backfaces on watertight meshes,\n * * show backfaces on open meshes, and\n * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n *\n * @type {Boolean}\n ", - "start": 61456, - "end": 62038, + "start": 61492, + "end": 62074, "loc": { "start": { - "line": 1718, + "line": 1719, "column": 4 }, "end": { - "line": 1733, + "line": 1734, "column": 7 } } @@ -190700,15 +191761,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the list of {@link SceneModelEntity}s within this SceneModel.\n *\n * @returns {SceneModelEntity[]}\n ", - "start": 62176, - "end": 62305, + "start": 62212, + "end": 62341, "loc": { "start": { - "line": 1740, + "line": 1741, "column": 4 }, "end": { - "line": 1744, + "line": 1745, "column": 7 } } @@ -190716,15 +191777,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that SceneModel is an {@link Entity}.\n * @type {Boolean}\n ", - "start": 62373, - "end": 62477, + "start": 62409, + "end": 62513, "loc": { "start": { - "line": 1749, + "line": 1750, "column": 4 }, "end": { - "line": 1752, + "line": 1753, "column": 7 } } @@ -190732,15 +191793,15 @@ { "type": "CommentBlock", "value": "*\n * Returns ````true```` if this SceneModel represents a model.\n *\n * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in\n * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n ", - "start": 62531, - "end": 62837, + "start": 62567, + "end": 62873, "loc": { "start": { - "line": 1757, + "line": 1758, "column": 4 }, "end": { - "line": 1764, + "line": 1765, "column": 7 } } @@ -190748,15 +191809,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 62899, - "end": 63015, + "start": 62935, + "end": 63051, "loc": { "start": { - "line": 1769, + "line": 1770, "column": 4 }, "end": { - "line": 1769, + "line": 1770, "column": 120 } } @@ -190764,15 +191825,15 @@ { "type": "CommentLine", "value": " SceneModel members", - "start": 63020, - "end": 63041, + "start": 63056, + "end": 63077, "loc": { "start": { - "line": 1770, + "line": 1771, "column": 4 }, "end": { - "line": 1770, + "line": 1771, "column": 25 } } @@ -190780,15 +191841,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 63046, - "end": 63162, + "start": 63082, + "end": 63198, "loc": { "start": { - "line": 1771, + "line": 1772, "column": 4 }, "end": { - "line": 1771, + "line": 1772, "column": 120 } } @@ -190796,15 +191857,15 @@ { "type": "CommentBlock", "value": "*\n * Returns ````false```` to indicate that SceneModel never represents an object.\n *\n * @type {Boolean}\n ", - "start": 63168, - "end": 63294, + "start": 63204, + "end": 63330, "loc": { "start": { - "line": 1773, + "line": 1774, "column": 4 }, "end": { - "line": 1777, + "line": 1778, "column": 7 } } @@ -190812,15 +191873,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the SceneModel's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n ", - "start": 63349, - "end": 63631, + "start": 63385, + "end": 63667, "loc": { "start": { - "line": 1782, + "line": 1783, "column": 4 }, "end": { - "line": 1789, + "line": 1790, "column": 7 } } @@ -190828,15 +191889,15 @@ { "type": "CommentBlock", "value": "*\n * The approximate number of triangle primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 63970, - "end": 64083, + "start": 64006, + "end": 64119, "loc": { "start": { - "line": 1801, + "line": 1802, "column": 4 }, "end": { - "line": 1805, + "line": 1806, "column": 7 } } @@ -190844,15 +191905,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 64155, - "end": 64271, + "start": 64191, + "end": 64307, "loc": { "start": { - "line": 1810, + "line": 1811, "column": 4 }, "end": { - "line": 1810, + "line": 1811, "column": 120 } } @@ -190860,15 +191921,15 @@ { "type": "CommentLine", "value": " Entity members", - "start": 64276, - "end": 64293, + "start": 64312, + "end": 64329, "loc": { "start": { - "line": 1811, + "line": 1812, "column": 4 }, "end": { - "line": 1811, + "line": 1812, "column": 21 } } @@ -190876,15 +191937,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 64298, - "end": 64414, + "start": 64334, + "end": 64450, "loc": { "start": { - "line": 1812, + "line": 1813, "column": 4 }, "end": { - "line": 1812, + "line": 1813, "column": 120 } } @@ -190892,15 +191953,15 @@ { "type": "CommentBlock", "value": "*\n * The approximate number of line primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 64420, - "end": 64529, + "start": 64456, + "end": 64565, "loc": { "start": { - "line": 1814, + "line": 1815, "column": 4 }, "end": { - "line": 1818, + "line": 1819, "column": 7 } } @@ -190908,15 +191969,15 @@ { "type": "CommentBlock", "value": "*\n * The approximate number of point primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 64593, - "end": 64703, + "start": 64629, + "end": 64739, "loc": { "start": { - "line": 1823, + "line": 1824, "column": 4 }, "end": { - "line": 1827, + "line": 1828, "column": 7 } } @@ -190924,15 +191985,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n *\n * @type {Boolean}\n ", - "start": 64769, - "end": 65029, + "start": 64805, + "end": 65065, "loc": { "start": { - "line": 1832, + "line": 1833, "column": 4 }, "end": { - "line": 1838, + "line": 1839, "column": 7 } } @@ -190940,15 +192001,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel is visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n **\n * @type {Boolean}\n ", - "start": 65112, - "end": 65339, + "start": 65148, + "end": 65375, "loc": { "start": { - "line": 1843, + "line": 1844, "column": 4 }, "end": { - "line": 1849, + "line": 1850, "column": 7 } } @@ -190956,15 +192017,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", - "start": 65605, - "end": 65722, + "start": 65641, + "end": 65758, "loc": { "start": { - "line": 1859, + "line": 1860, "column": 4 }, "end": { - "line": 1863, + "line": 1864, "column": 7 } } @@ -190972,15 +192033,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", - "start": 65803, - "end": 65920, + "start": 65839, + "end": 65956, "loc": { "start": { - "line": 1868, + "line": 1869, "column": 4 }, "end": { - "line": 1872, + "line": 1873, "column": 7 } } @@ -190988,15 +192049,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", - "start": 66170, - "end": 66292, + "start": 66206, + "end": 66328, "loc": { "start": { - "line": 1882, + "line": 1883, "column": 4 }, "end": { - "line": 1886, + "line": 1887, "column": 7 } } @@ -191004,15 +192065,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", - "start": 66383, - "end": 66505, + "start": 66419, + "end": 66541, "loc": { "start": { - "line": 1891, + "line": 1892, "column": 4 }, "end": { - "line": 1895, + "line": 1896, "column": 7 } } @@ -191020,15 +192081,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", - "start": 66795, - "end": 66914, + "start": 66831, + "end": 66950, "loc": { "start": { - "line": 1905, + "line": 1906, "column": 4 }, "end": { - "line": 1909, + "line": 1910, "column": 7 } } @@ -191036,15 +192097,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", - "start": 66999, - "end": 67118, + "start": 67035, + "end": 67154, "loc": { "start": { - "line": 1914, + "line": 1915, "column": 4 }, "end": { - "line": 1918, + "line": 1919, "column": 7 } } @@ -191052,15 +192113,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", - "start": 67384, - "end": 67512, + "start": 67420, + "end": 67548, "loc": { "start": { - "line": 1928, + "line": 1929, "column": 4 }, "end": { - "line": 1932, + "line": 1933, "column": 7 } } @@ -191068,15 +192129,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", - "start": 67591, - "end": 67719, + "start": 67627, + "end": 67755, "loc": { "start": { - "line": 1937, + "line": 1938, "column": 4 }, "end": { - "line": 1941, + "line": 1942, "column": 7 } } @@ -191084,15 +192145,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", - "start": 67961, - "end": 68180, + "start": 67997, + "end": 68216, "loc": { "start": { - "line": 1951, + "line": 1952, "column": 4 }, "end": { - "line": 1957, + "line": 1958, "column": 7 } } @@ -191100,15 +192161,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", - "start": 68240, - "end": 68459, + "start": 68276, + "end": 68495, "loc": { "start": { - "line": 1962, + "line": 1963, "column": 4 }, "end": { - "line": 1968, + "line": 1969, "column": 7 } } @@ -191116,15 +192177,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", - "start": 68709, - "end": 68917, + "start": 68745, + "end": 68953, "loc": { "start": { - "line": 1978, + "line": 1979, "column": 4 }, "end": { - "line": 1984, + "line": 1985, "column": 7 } } @@ -191132,15 +192193,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", - "start": 68983, - "end": 69191, + "start": 69019, + "end": 69227, "loc": { "start": { - "line": 1989, + "line": 1990, "column": 4 }, "end": { - "line": 1995, + "line": 1996, "column": 7 } } @@ -191148,15 +192209,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is collidable.\n *\n * @type {Boolean}\n ", - "start": 69473, - "end": 69560, + "start": 69509, + "end": 69596, "loc": { "start": { - "line": 2005, + "line": 2006, "column": 4 }, "end": { - "line": 2009, + "line": 2010, "column": 7 } } @@ -191164,15 +192225,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are collidable.\n *\n * @type {Boolean}\n ", - "start": 69628, - "end": 69745, + "start": 69664, + "end": 69781, "loc": { "start": { - "line": 2014, + "line": 2015, "column": 4 }, "end": { - "line": 2018, + "line": 2019, "column": 7 } } @@ -191180,15 +192241,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", - "start": 70010, - "end": 70158, + "start": 70046, + "end": 70194, "loc": { "start": { - "line": 2027, + "line": 2028, "column": 4 }, "end": { - "line": 2033, + "line": 2034, "column": 7 } } @@ -191196,15 +192257,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", - "start": 70243, - "end": 70421, + "start": 70279, + "end": 70457, "loc": { "start": { - "line": 2038, + "line": 2039, "column": 4 }, "end": { - "line": 2044, + "line": 2045, "column": 7 } } @@ -191212,15 +192273,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the RGB colorize color for this SceneModel.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", - "start": 70670, - "end": 70836, + "start": 70706, + "end": 70872, "loc": { "start": { - "line": 2053, + "line": 2054, "column": 4 }, "end": { - "line": 2059, + "line": 2060, "column": 7 } } @@ -191228,15 +192289,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the RGB colorize color for this SceneModel.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", - "start": 70900, - "end": 71120, + "start": 70936, + "end": 71156, "loc": { "start": { - "line": 2064, + "line": 2065, "column": 4 }, "end": { - "line": 2072, + "line": 2073, "column": 7 } } @@ -191244,15 +192305,15 @@ { "type": "CommentBlock", "value": "*\n * Gets this SceneModel's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", - "start": 71330, - "end": 71521, + "start": 71366, + "end": 71557, "loc": { "start": { - "line": 2080, + "line": 2081, "column": 4 }, "end": { - "line": 2086, + "line": 2087, "column": 7 } } @@ -191260,15 +192321,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the opacity factor for this SceneModel.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", - "start": 71583, - "end": 71780, + "start": 71619, + "end": 71816, "loc": { "start": { - "line": 2091, + "line": 2092, "column": 4 }, "end": { - "line": 2097, + "line": 2098, "column": 7 } } @@ -191276,15 +192337,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", - "start": 71984, - "end": 72072, + "start": 72020, + "end": 72108, "loc": { "start": { - "line": 2105, + "line": 2106, "column": 4 }, "end": { - "line": 2109, + "line": 2110, "column": 7 } } @@ -191292,15 +192353,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", - "start": 72142, - "end": 72230, + "start": 72178, + "end": 72266, "loc": { "start": { - "line": 2114, + "line": 2115, "column": 4 }, "end": { - "line": 2118, + "line": 2119, "column": 7 } } @@ -191308,15 +192369,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", - "start": 72457, - "end": 72559, + "start": 72493, + "end": 72595, "loc": { "start": { - "line": 2127, + "line": 2128, "column": 4 }, "end": { - "line": 2131, + "line": 2132, "column": 7 } } @@ -191324,15 +192385,15 @@ { "type": "CommentBlock", "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", - "start": 72635, - "end": 72737, + "start": 72671, + "end": 72773, "loc": { "start": { - "line": 2136, + "line": 2137, "column": 4 }, "end": { - "line": 2140, + "line": 2141, "column": 7 } } @@ -191340,15 +192401,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * Only works when {@link SAO#enabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 72988, - "end": 73244, + "start": 73024, + "end": 73280, "loc": { "start": { - "line": 2149, + "line": 2150, "column": 4 }, "end": { - "line": 2157, + "line": 2158, "column": 7 } } @@ -191356,15 +192417,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if physically-based rendering (PBR) is enabled for this SceneModel.\n *\n * Only works when {@link Scene#pbrEnabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 73312, - "end": 73502, + "start": 73348, + "end": 73538, "loc": { "start": { - "line": 2162, + "line": 2163, "column": 4 }, "end": { - "line": 2168, + "line": 2169, "column": 7 } } @@ -191372,15 +192433,15 @@ { "type": "CommentBlock", "value": "*\n * Gets if color textures are enabled for this SceneModel.\n *\n * Only works when {@link Scene#colorTextureEnabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 73570, - "end": 73752, + "start": 73606, + "end": 73788, "loc": { "start": { - "line": 2173, + "line": 2174, "column": 4 }, "end": { - "line": 2179, + "line": 2180, "column": 7 } } @@ -191388,15 +192449,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true to indicate that SceneModel is implements {@link Drawable}.\n *\n * @type {Boolean}\n ", - "start": 73838, - "end": 73959, + "start": 73874, + "end": 73995, "loc": { "start": { - "line": 2184, + "line": 2185, "column": 4 }, "end": { - "line": 2188, + "line": 2189, "column": 7 } } @@ -191404,15 +192465,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 74015, - "end": 74030, + "start": 74051, + "end": 74066, "loc": { "start": { - "line": 2193, + "line": 2194, "column": 4 }, "end": { - "line": 2193, + "line": 2194, "column": 19 } } @@ -191420,15 +192481,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of xrayed {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#xrayMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74091, - "end": 74288, + "start": 74127, + "end": 74324, "loc": { "start": { - "line": 2198, + "line": 2199, "column": 4 }, "end": { - "line": 2204, + "line": 2205, "column": 7 } } @@ -191436,15 +192497,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of highlighted {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#highlightMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74365, - "end": 74572, + "start": 74401, + "end": 74608, "loc": { "start": { - "line": 2209, + "line": 2210, "column": 4 }, "end": { - "line": 2215, + "line": 2216, "column": 7 } } @@ -191452,15 +192513,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of selected {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#selectedMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74659, - "end": 74862, + "start": 74695, + "end": 74898, "loc": { "start": { - "line": 2220, + "line": 2221, "column": 4 }, "end": { - "line": 2226, + "line": 2227, "column": 7 } } @@ -191468,15 +192529,15 @@ { "type": "CommentBlock", "value": "*\n * Configures the appearance of edges of {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n ", - "start": 74947, - "end": 75142, + "start": 74983, + "end": 75178, "loc": { "start": { - "line": 2231, + "line": 2232, "column": 4 }, "end": { - "line": 2237, + "line": 2238, "column": 7 } } @@ -191484,15 +192545,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 75219, - "end": 75335, + "start": 75255, + "end": 75371, "loc": { "start": { - "line": 2242, + "line": 2243, "column": 4 }, "end": { - "line": 2242, + "line": 2243, "column": 120 } } @@ -191500,15 +192561,15 @@ { "type": "CommentLine", "value": " Drawable members", - "start": 75340, - "end": 75359, + "start": 75376, + "end": 75395, "loc": { "start": { - "line": 2243, + "line": 2244, "column": 4 }, "end": { - "line": 2243, + "line": 2244, "column": 23 } } @@ -191516,15 +192577,15 @@ { "type": "CommentLine", "value": "------------------------------------------------------------------------------------------------------------------", - "start": 75364, - "end": 75480, + "start": 75400, + "end": 75516, "loc": { "start": { - "line": 2244, + "line": 2245, "column": 4 }, "end": { - "line": 2244, + "line": 2245, "column": 120 } } @@ -191532,15 +192593,15 @@ { "type": "CommentBlock", "value": "*\n * Called by private renderers in ./lib, returns the picking view matrix with which to\n * ray-pick on this SceneModel.\n *\n * @private\n ", - "start": 75486, - "end": 75647, + "start": 75522, + "end": 75683, "loc": { "start": { - "line": 2246, + "line": 2247, "column": 4 }, "end": { - "line": 2251, + "line": 2252, "column": 7 } } @@ -191548,15 +192609,15 @@ { "type": "CommentBlock", "value": "*\n *\n * @param cfg\n ", - "start": 75810, - "end": 75846, + "start": 75846, + "end": 75882, "loc": { "start": { - "line": 2259, + "line": 2260, "column": 4 }, "end": { - "line": 2262, + "line": 2263, "column": 7 } } @@ -191564,15 +192625,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a reusable geometry within this SceneModel.\n *\n * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that\n * instance the geometry.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n ", - "start": 76532, - "end": 79549, + "start": 76568, + "end": 79585, "loc": { "start": { - "line": 2283, + "line": 2284, "column": 4 }, "end": { - "line": 2304, + "line": 2305, "column": 7 } } @@ -191580,15 +192641,15 @@ { "type": "CommentLine", "value": " HACK", - "start": 84987, - "end": 84994, + "start": 85023, + "end": 85030, "loc": { "start": { - "line": 2403, + "line": 2404, "column": 27 }, "end": { - "line": 2403, + "line": 2404, "column": 34 } } @@ -191596,15 +192657,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a texture within this SceneModel.\n *\n * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture.\n *\n * @param {*} cfg Texture properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link SceneModel#createTextureSet}.\n * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file\n * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````SceneModel```` is configured with a {@link TextureTranscoder}.\n * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````SceneModel```` is\n * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps.\n * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded.\n * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel.\n * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}.\n * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}.\n * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}..\n * @param {Number} [cfg.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n ", - "start": 85205, - "end": 87651, + "start": 85241, + "end": 87687, "loc": { "start": { - "line": 2411, + "line": 2412, "column": 4 }, "end": { - "line": 2431, + "line": 2432, "column": 7 } } @@ -191612,15 +192673,15 @@ { "type": "CommentLine", "value": " flipY: cfg.flipY,", - "start": 90921, - "end": 90941, + "start": 90957, + "end": 90977, "loc": { "start": { - "line": 2489, + "line": 2490, "column": 12 }, "end": { - "line": 2489, + "line": 2490, "column": 32 } } @@ -191628,15 +192689,15 @@ { "type": "CommentLine", "value": " Ignore transcoder for Images", - "start": 91097, - "end": 91128, + "start": 91133, + "end": 91164, "loc": { "start": { - "line": 2495, + "line": 2496, "column": 25 }, "end": { - "line": 2495, + "line": 2496, "column": 56 } } @@ -191644,15 +192705,15 @@ { "type": "CommentLine", "value": " Don't transcode recognized image file types", - "start": 91428, - "end": 91474, + "start": 91464, + "end": 91510, "loc": { "start": { - "line": 2501, + "line": 2502, "column": 27 }, "end": { - "line": 2501, + "line": 2502, "column": 73 } } @@ -191660,15 +192721,15 @@ { "type": "CommentLine", "value": " URL or Base64 string", - "start": 92127, - "end": 92150, + "start": 92163, + "end": 92186, "loc": { "start": { - "line": 2519, + "line": 2520, "column": 41 }, "end": { - "line": 2519, + "line": 2520, "column": 64 } } @@ -191676,15 +192737,15 @@ { "type": "CommentLine", "value": " Assume other file types need transcoding", - "start": 92203, - "end": 92246, + "start": 92239, + "end": 92282, "loc": { "start": { - "line": 2521, + "line": 2522, "column": 25 }, "end": { - "line": 2521, + "line": 2522, "column": 68 } } @@ -191692,15 +192753,15 @@ { "type": "CommentLine", "value": " Buffers implicitly require transcoding", - "start": 93352, - "end": 93393, + "start": 93388, + "end": 93429, "loc": { "start": { - "line": 2540, + "line": 2541, "column": 34 }, "end": { - "line": 2540, + "line": 2541, "column": 75 } } @@ -191708,15 +192769,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a texture set within this SceneModel.\n *\n * * Stores the new {@link SceneModelTextureSet} in {@link SceneModel#textureSets}.\n *\n * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set\n * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set.\n *\n * The textures can work as a texture atlas, where each mesh can have geometry UVs that index\n * a different part of the textures. This allows us to minimize the number of textures in our models, which\n * means faster rendering.\n *\n * @param {*} cfg Texture set properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}.\n * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*.\n * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*.\n * @param {*} [cfg.emissiveTextureId] ID of *RGBA* emissive map texture, with emissive color in *RGB*.\n * @param {*} [cfg.occlusionTextureId] ID of *RGBA* occlusion map texture, with occlusion factor in *R*.\n * @returns {SceneModelTransform} The new texture set.\n ", - "start": 93881, - "end": 95327, + "start": 93917, + "end": 95363, "loc": { "start": { - "line": 2552, + "line": 2553, "column": 4 }, "end": { - "line": 2572, + "line": 2573, "column": 7 } } @@ -191724,31 +192785,31 @@ { "type": "CommentBlock", "value": "*\n * Creates a new {@link SceneModelTransform} within this SceneModel.\n *\n * * Stores the new {@link SceneModelTransform} in {@link SceneModel#transforms}.\n * * Can be connected into hierarchies\n * * Each {@link SceneModelTransform} can be used by unlimited {@link SceneModelMesh}es\n *\n * @param {*} cfg Transform creation parameters.\n * @param {String} cfg.id Mandatory ID for the new transform. Must not clash with any existing components within the {@link Scene}.\n * @param {String} [cfg.parentTransformId] ID of a parent transform, previously created with {@link SceneModel#createTextureSet}.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the transform.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the transform as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters.\n * @returns {SceneModelTransform} The new transform.\n ", - "start": 98674, - "end": 99876, + "start": 98710, + "end": 99912, "loc": { "start": { - "line": 2646, + "line": 2647, "column": 4 }, "end": { - "line": 2661, + "line": 2662, "column": 7 } } }, { "type": "CommentBlock", - "value": "*\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n ", - "start": 100986, - "end": 106680, + "value": "*\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.quaternion] Rotation of the mesh as a quaternion. Overridden by ````rotation````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n ", + "start": 101022, + "end": 106829, "loc": { "start": { - "line": 2693, + "line": 2694, "column": 4 }, "end": { - "line": 2732, + "line": 2734, "column": 7 } } @@ -191756,15 +192817,15 @@ { "type": "CommentLine", "value": " Batched geometry", - "start": 107181, - "end": 107200, + "start": 107330, + "end": 107349, "loc": { "start": { - "line": 2750, + "line": 2752, "column": 12 }, "end": { - "line": 2750, + "line": 2752, "column": 31 } } @@ -191772,15 +192833,15 @@ { "type": "CommentLine", "value": " MATRIX - optional for batching", - "start": 110088, - "end": 110121, + "start": 110237, + "end": 110270, "loc": { "start": { - "line": 2796, + "line": 2798, "column": 12 }, "end": { - "line": 2796, + "line": 2798, "column": 45 } } @@ -191788,15 +192849,15 @@ { "type": "CommentLine", "value": " DTX", - "start": 110871, - "end": 110877, + "start": 111177, + "end": 111183, "loc": { "start": { - "line": 2814, + "line": 2819, "column": 16 }, "end": { - "line": 2814, + "line": 2819, "column": 22 } } @@ -191804,15 +192865,15 @@ { "type": "CommentLine", "value": " NPR", - "start": 110928, - "end": 110934, + "start": 111234, + "end": 111240, "loc": { "start": { - "line": 2818, + "line": 2823, "column": 16 }, "end": { - "line": 2818, + "line": 2823, "column": 22 } } @@ -191820,15 +192881,15 @@ { "type": "CommentLine", "value": " RTC", - "start": 111255, - "end": 111261, + "start": 111561, + "end": 111567, "loc": { "start": { - "line": 2823, + "line": 2828, "column": 16 }, "end": { - "line": 2823, + "line": 2828, "column": 22 } } @@ -191836,15 +192897,15 @@ { "type": "CommentLine", "value": " COMPRESSION", - "start": 111728, - "end": 111742, + "start": 112034, + "end": 112048, "loc": { "start": { - "line": 2835, + "line": 2840, "column": 16 }, "end": { - "line": 2835, + "line": 2840, "column": 30 } } @@ -191852,15 +192913,15 @@ { "type": "CommentLine", "value": " EDGES", - "start": 113481, - "end": 113489, + "start": 113787, + "end": 113795, "loc": { "start": { - "line": 2873, + "line": 2878, "column": 16 }, "end": { - "line": 2873, + "line": 2878, "column": 24 } } @@ -191868,15 +192929,15 @@ { "type": "CommentLine", "value": " Faster", - "start": 113683, - "end": 113692, + "start": 113989, + "end": 113998, "loc": { "start": { - "line": 2876, + "line": 2881, "column": 41 }, "end": { - "line": 2876, + "line": 2881, "column": 50 } } @@ -191884,15 +192945,15 @@ { "type": "CommentLine", "value": " BUCKETING", - "start": 114008, - "end": 114020, + "start": 114314, + "end": 114326, "loc": { "start": { - "line": 2883, + "line": 2888, "column": 16 }, "end": { - "line": 2883, + "line": 2888, "column": 28 } } @@ -191900,15 +192961,15 @@ { "type": "CommentLine", "value": " VBO", - "start": 114229, - "end": 114235, + "start": 114535, + "end": 114541, "loc": { "start": { - "line": 2891, + "line": 2896, "column": 16 }, "end": { - "line": 2891, + "line": 2896, "column": 22 } } @@ -191916,15 +192977,15 @@ { "type": "CommentLine", "value": " PBR", - "start": 114294, - "end": 114300, + "start": 114600, + "end": 114606, "loc": { "start": { - "line": 2895, + "line": 2900, "column": 16 }, "end": { - "line": 2895, + "line": 2900, "column": 22 } } @@ -191932,15 +192993,15 @@ { "type": "CommentLine", "value": " RTC", - "start": 114866, - "end": 114872, + "start": 115172, + "end": 115178, "loc": { "start": { - "line": 2902, + "line": 2907, "column": 16 }, "end": { - "line": 2902, + "line": 2907, "column": 22 } } @@ -191948,15 +193009,15 @@ { "type": "CommentLine", "value": " Positions now baked, don't need any more", - "start": 115551, - "end": 115594, + "start": 115857, + "end": 115900, "loc": { "start": { - "line": 2917, + "line": 2922, "column": 47 }, "end": { - "line": 2917, + "line": 2922, "column": 90 } } @@ -191964,15 +193025,15 @@ { "type": "CommentLine", "value": " EDGES", - "start": 116282, - "end": 116290, + "start": 116588, + "end": 116596, "loc": { "start": { - "line": 2935, + "line": 2940, "column": 16 }, "end": { - "line": 2935, + "line": 2940, "column": 24 } } @@ -191980,15 +193041,15 @@ { "type": "CommentLine", "value": " TEXTURE", - "start": 116799, - "end": 116809, + "start": 117105, + "end": 117115, "loc": { "start": { - "line": 2945, + "line": 2950, "column": 16 }, "end": { - "line": 2945, + "line": 2950, "column": 26 } } @@ -191996,15 +193057,15 @@ { "type": "CommentLine", "value": " cfg.textureSetId = cfg.textureSetId || DEFAULT_TEXTURE_SET_ID;", - "start": 116827, - "end": 116892, + "start": 117133, + "end": 117198, "loc": { "start": { - "line": 2947, + "line": 2952, "column": 16 }, "end": { - "line": 2947, + "line": 2952, "column": 81 } } @@ -192012,15 +193073,15 @@ { "type": "CommentLine", "value": " INSTANCING", - "start": 117326, - "end": 117339, + "start": 117632, + "end": 117645, "loc": { "start": { - "line": 2959, + "line": 2964, "column": 12 }, "end": { - "line": 2959, + "line": 2964, "column": 25 } } @@ -192028,15 +193089,15 @@ { "type": "CommentLine", "value": " TRANSFORM", - "start": 118325, - "end": 118337, + "start": 118631, + "end": 118643, "loc": { "start": { - "line": 2977, + "line": 2982, "column": 16 }, "end": { - "line": 2977, + "line": 2982, "column": 28 } } @@ -192044,15 +193105,15 @@ { "type": "CommentLine", "value": " MATRIX", - "start": 118728, - "end": 118737, + "start": 119034, + "end": 119043, "loc": { "start": { - "line": 2990, + "line": 2995, "column": 16 }, "end": { - "line": 2990, + "line": 2995, "column": 25 } } @@ -192060,15 +193121,15 @@ { "type": "CommentLine", "value": " DTX", - "start": 119795, - "end": 119801, + "start": 120309, + "end": 120315, "loc": { "start": { - "line": 3015, + "line": 3023, "column": 16 }, "end": { - "line": 3015, + "line": 3023, "column": 22 } } @@ -192076,15 +193137,15 @@ { "type": "CommentLine", "value": " NPR", - "start": 119852, - "end": 119858, + "start": 120366, + "end": 120372, "loc": { "start": { - "line": 3019, + "line": 3027, "column": 16 }, "end": { - "line": 3019, + "line": 3027, "column": 22 } } @@ -192092,15 +193153,15 @@ { "type": "CommentLine", "value": " BUCKETING - lazy generated, reused", - "start": 120179, - "end": 120216, + "start": 120693, + "end": 120730, "loc": { "start": { - "line": 3024, + "line": 3032, "column": 16 }, "end": { - "line": 3024, + "line": 3032, "column": 53 } } @@ -192108,15 +193169,15 @@ { "type": "CommentLine", "value": " VBO", - "start": 120591, - "end": 120597, + "start": 121105, + "end": 121111, "loc": { "start": { - "line": 3035, + "line": 3043, "column": 16 }, "end": { - "line": 3035, + "line": 3043, "column": 22 } } @@ -192124,15 +193185,15 @@ { "type": "CommentLine", "value": " PBR", - "start": 120658, - "end": 120664, + "start": 121172, + "end": 121178, "loc": { "start": { - "line": 3039, + "line": 3047, "column": 16 }, "end": { - "line": 3039, + "line": 3047, "column": 22 } } @@ -192140,15 +193201,15 @@ { "type": "CommentLine", "value": " TEXTURE", - "start": 121237, - "end": 121247, + "start": 121751, + "end": 121761, "loc": { "start": { - "line": 3046, + "line": 3054, "column": 16 }, "end": { - "line": 3046, + "line": 3054, "column": 26 } } @@ -192156,15 +193217,15 @@ { "type": "CommentLine", "value": " if (!cfg.textureSet) {", - "start": 121383, - "end": 121408, + "start": 121897, + "end": 121922, "loc": { "start": { - "line": 3050, + "line": 3058, "column": 20 }, "end": { - "line": 3050, + "line": 3058, "column": 45 } } @@ -192172,15 +193233,15 @@ { "type": "CommentLine", "value": " this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`);", - "start": 121429, - "end": 121564, + "start": 121943, + "end": 122078, "loc": { "start": { - "line": 3051, + "line": 3059, "column": 20 }, "end": { - "line": 3051, + "line": 3059, "column": 155 } } @@ -192188,15 +193249,15 @@ { "type": "CommentLine", "value": " return false;", - "start": 121585, - "end": 121605, + "start": 122099, + "end": 122119, "loc": { "start": { - "line": 3052, + "line": 3060, "column": 20 }, "end": { - "line": 3052, + "line": 3060, "column": 40 } } @@ -192204,15 +193265,15 @@ { "type": "CommentLine", "value": " }", - "start": 121626, - "end": 121630, + "start": 122140, + "end": 122144, "loc": { "start": { - "line": 3053, + "line": 3061, "column": 20 }, "end": { - "line": 3053, + "line": 3061, "column": 24 } } @@ -192220,15 +193281,15 @@ { "type": "CommentLine", "value": " Quantized pick color", - "start": 122209, - "end": 122232, + "start": 122723, + "end": 122746, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 54 }, "end": { - "line": 3071, + "line": 3079, "column": 77 } } @@ -192236,15 +193297,15 @@ { "type": "CommentLine", "value": " layerIndex is set in #finalize()", - "start": 126283, - "end": 126318, + "start": 126797, + "end": 126832, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 81 }, "end": { - "line": 3173, + "line": 3181, "column": 116 } } @@ -192252,15 +193313,15 @@ { "type": "CommentLine", "value": " layerIndex is set in #finalize()", - "start": 126445, - "end": 126480, + "start": 126959, + "end": 126994, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 77 }, "end": { - "line": 3176, + "line": 3184, "column": 112 } } @@ -192268,15 +193329,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 127511, - "end": 127587, + "start": 128025, + "end": 128101, "loc": { "start": { - "line": 3202, + "line": 3210, "column": 20 }, "end": { - "line": 3202, + "line": 3210, "column": 96 } } @@ -192284,15 +193345,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 127765, - "end": 127794, + "start": 128279, + "end": 128308, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 39 }, "end": { - "line": 3206, + "line": 3214, "column": 68 } } @@ -192300,15 +193361,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 127946, - "end": 127965, + "start": 128460, + "end": 128479, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 75 }, "end": { - "line": 3208, + "line": 3216, "column": 94 } } @@ -192316,15 +193377,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128026, - "end": 128045, + "start": 128540, + "end": 128559, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 60 }, "end": { - "line": 3209, + "line": 3217, "column": 79 } } @@ -192332,15 +193393,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 128355, - "end": 128431, + "start": 128869, + "end": 128945, "loc": { "start": { - "line": 3217, + "line": 3225, "column": 20 }, "end": { - "line": 3217, + "line": 3225, "column": 96 } } @@ -192348,15 +193409,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 128609, - "end": 128638, + "start": 129123, + "end": 129152, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 39 }, "end": { - "line": 3221, + "line": 3229, "column": 68 } } @@ -192364,15 +193425,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128790, - "end": 128809, + "start": 129304, + "end": 129323, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 75 }, "end": { - "line": 3223, + "line": 3231, "column": 94 } } @@ -192380,15 +193441,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128870, - "end": 128889, + "start": 129384, + "end": 129403, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 60 }, "end": { - "line": 3224, + "line": 3232, "column": 79 } } @@ -192396,15 +193457,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 129201, - "end": 129277, + "start": 129715, + "end": 129791, "loc": { "start": { - "line": 3232, + "line": 3240, "column": 20 }, "end": { - "line": 3232, + "line": 3240, "column": 96 } } @@ -192412,15 +193473,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 129455, - "end": 129484, + "start": 129969, + "end": 129998, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 39 }, "end": { - "line": 3236, + "line": 3244, "column": 68 } } @@ -192428,15 +193489,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 129636, - "end": 129655, + "start": 130150, + "end": 130169, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 75 }, "end": { - "line": 3238, + "line": 3246, "column": 94 } } @@ -192444,15 +193505,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 129716, - "end": 129735, + "start": 130230, + "end": 130249, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 60 }, "end": { - "line": 3239, + "line": 3247, "column": 79 } } @@ -192460,15 +193521,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOBatchingLinesLayer`);", - "start": 130045, - "end": 130120, + "start": 130559, + "end": 130634, "loc": { "start": { - "line": 3247, + "line": 3255, "column": 20 }, "end": { - "line": 3247, + "line": 3255, "column": 95 } } @@ -192476,15 +193537,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 130258, - "end": 130287, + "start": 130772, + "end": 130801, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 39 }, "end": { - "line": 3250, + "line": 3258, "column": 68 } } @@ -192492,15 +193553,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 130439, - "end": 130458, + "start": 130953, + "end": 130972, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 75 }, "end": { - "line": 3252, + "line": 3260, "column": 94 } } @@ -192508,15 +193569,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 130519, - "end": 130538, + "start": 131033, + "end": 131052, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 60 }, "end": { - "line": 3253, + "line": 3261, "column": 79 } } @@ -192524,15 +193585,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOBatchingPointsLayer`);", - "start": 130746, - "end": 130822, + "start": 131260, + "end": 131336, "loc": { "start": { - "line": 3259, + "line": 3267, "column": 20 }, "end": { - "line": 3259, + "line": 3267, "column": 96 } } @@ -192540,15 +193601,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 130961, - "end": 130990, + "start": 131475, + "end": 131504, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 39 }, "end": { - "line": 3262, + "line": 3270, "column": 68 } } @@ -192556,15 +193617,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 131142, - "end": 131161, + "start": 131656, + "end": 131675, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 75 }, "end": { - "line": 3264, + "line": 3272, "column": 94 } } @@ -192572,15 +193633,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 131222, - "end": 131241, + "start": 131736, + "end": 131755, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 60 }, "end": { - "line": 3265, + "line": 3273, "column": 79 } } @@ -192588,15 +193649,15 @@ { "type": "CommentLine", "value": " Convert to 32-bit integer", - "start": 132385, - "end": 132413, + "start": 132899, + "end": 132927, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 23 }, "end": { - "line": 3292, + "line": 3300, "column": 51 } } @@ -192604,15 +193665,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 133204, - "end": 133282, + "start": 133718, + "end": 133796, "loc": { "start": { - "line": 3313, + "line": 3321, "column": 20 }, "end": { - "line": 3313, + "line": 3321, "column": 98 } } @@ -192620,15 +193681,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 133668, - "end": 133746, + "start": 134182, + "end": 134260, "loc": { "start": { - "line": 3324, + "line": 3332, "column": 20 }, "end": { - "line": 3324, + "line": 3332, "column": 98 } } @@ -192636,15 +193697,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 134133, - "end": 134211, + "start": 134647, + "end": 134725, "loc": { "start": { - "line": 3335, + "line": 3343, "column": 20 }, "end": { - "line": 3335, + "line": 3343, "column": 98 } } @@ -192652,15 +193713,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOInstancingLinesLayer`);", - "start": 134597, - "end": 134674, + "start": 135111, + "end": 135188, "loc": { "start": { - "line": 3346, + "line": 3354, "column": 20 }, "end": { - "line": 3346, + "line": 3354, "column": 97 } } @@ -192668,15 +193729,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating PointsInstancingLayer`);", - "start": 135019, - "end": 135094, + "start": 135533, + "end": 135608, "loc": { "start": { - "line": 3356, + "line": 3364, "column": 20 }, "end": { - "line": 3356, + "line": 3364, "column": 95 } } @@ -192684,15 +193745,15 @@ { "type": "CommentLine", "value": " const lenPositions = geometry.positionsCompressed.length;", - "start": 135415, - "end": 135475, + "start": 135929, + "end": 135989, "loc": { "start": { - "line": 3366, + "line": 3374, "column": 12 }, "end": { - "line": 3366, + "line": 3374, "column": 72 } } @@ -192700,15 +193761,15 @@ { "type": "CommentLine", "value": " if (!vboInstancingLayer.canCreatePortion(lenPositions, geometry.indices.length)) { // FIXME: indices should be optional", - "start": 135488, - "end": 135610, + "start": 136002, + "end": 136124, "loc": { "start": { - "line": 3367, + "line": 3375, "column": 12 }, "end": { - "line": 3367, + "line": 3375, "column": 134 } } @@ -192716,15 +193777,15 @@ { "type": "CommentLine", "value": " vboInstancingLayer.finalize();", - "start": 135623, - "end": 135660, + "start": 136137, + "end": 136174, "loc": { "start": { - "line": 3368, + "line": 3376, "column": 12 }, "end": { - "line": 3368, + "line": 3376, "column": 49 } } @@ -192732,15 +193793,15 @@ { "type": "CommentLine", "value": " delete this._vboInstancingLayers[layerId];", - "start": 135673, - "end": 135722, + "start": 136187, + "end": 136236, "loc": { "start": { - "line": 3369, + "line": 3377, "column": 12 }, "end": { - "line": 3369, + "line": 3377, "column": 61 } } @@ -192748,15 +193809,15 @@ { "type": "CommentLine", "value": " vboInstancingLayer = null;", - "start": 135735, - "end": 135768, + "start": 136249, + "end": 136282, "loc": { "start": { - "line": 3370, + "line": 3378, "column": 12 }, "end": { - "line": 3370, + "line": 3378, "column": 45 } } @@ -192764,15 +193825,15 @@ { "type": "CommentLine", "value": " }", - "start": 135781, - "end": 135785, + "start": 136295, + "end": 136299, "loc": { "start": { - "line": 3371, + "line": 3379, "column": 12 }, "end": { - "line": 3371, + "line": 3379, "column": 16 } } @@ -192780,15 +193841,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a {@link SceneModelEntity} within this SceneModel.\n *\n * * Gives the SceneModelEntity one or more {@link SceneModelMesh}es previously created with\n * {@link SceneModel#createMesh}. A SceneModelMesh can only belong to one SceneModelEntity, so you'll get an\n * error if you try to reuse a mesh among multiple SceneModelEntitys.\n * * The SceneModelEntity can have a {@link SceneModelTextureSet}, previously created with\n * {@link SceneModel#createTextureSet}. A SceneModelTextureSet can belong to multiple SceneModelEntitys.\n * * The SceneModelEntity can have a geometry, previously created with\n * {@link SceneModel#createTextureSet}. A geometry is a \"virtual component\" and can belong to multiple SceneModelEntitys.\n *\n * @param {Object} cfg SceneModelEntity configuration.\n * @param {String} cfg.id Optional ID for the new SceneModelEntity. Must not clash with any existing components within the {@link Scene}.\n * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link SceneModel@createMesh}.\n * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link SceneModelEntity} represents an object, in which case it will be registered by {@link SceneModelEntity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModelEntity is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModelEntity is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModelEntity is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModelEntity is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModelEntity is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the SceneModelEntity initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the SceneModelEntity initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModelEntity is initially xrayed. XRayed appearance is configured by {@link SceneModel#xrayMaterial}.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModelEntity is initially highlighted. Highlighted appearance is configured by {@link SceneModel#highlightMaterial}.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModelEntity is initially selected. Selected appearance is configured by {@link SceneModel#selectedMaterial}.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModelEntity's edges are initially emphasized. Edges appearance is configured by {@link SceneModel#edgeMaterial}.\n * @returns {SceneModelEntity} The new SceneModelEntity.\n ", - "start": 135956, - "end": 138927, + "start": 136470, + "end": 139441, "loc": { "start": { - "line": 3378, + "line": 3386, "column": 4 }, "end": { - "line": 3405, + "line": 3413, "column": 7 } } @@ -192796,15 +193857,15 @@ { "type": "CommentLine", "value": " Trying to get already created mesh", - "start": 140698, - "end": 140735, + "start": 141212, + "end": 141249, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 45 }, "end": { - "line": 3453, + "line": 3461, "column": 82 } } @@ -192812,15 +193873,15 @@ { "type": "CommentLine", "value": " Checks if there is already created mesh for this meshId", - "start": 140761, - "end": 140819, + "start": 141275, + "end": 141333, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 25 }, "end": { - "line": 3454, + "line": 3462, "column": 83 } } @@ -192828,15 +193889,15 @@ { "type": "CommentLine", "value": " There is no such cfg", - "start": 140913, - "end": 140936, + "start": 141427, + "end": 141450, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 93 }, "end": { - "line": 3455, + "line": 3463, "column": 116 } } @@ -192844,15 +193905,15 @@ { "type": "CommentLine", "value": " Internally sets SceneModelEntity#parent to this SceneModel", - "start": 141479, - "end": 141540, + "start": 141993, + "end": 142054, "loc": { "start": { - "line": 3472, + "line": 3480, "column": 26 }, "end": { - "line": 3472, + "line": 3480, "column": 87 } } @@ -192860,15 +193921,15 @@ { "type": "CommentBlock", "value": "*\n * Finalizes this SceneModel.\n *\n * Once finalized, you can't add anything more to this SceneModel.\n ", - "start": 141660, - "end": 141783, + "start": 142174, + "end": 142297, "loc": { "start": { - "line": 3478, + "line": 3486, "column": 4 }, "end": { - "line": 3482, + "line": 3490, "column": 7 } } @@ -192876,15 +193937,15 @@ { "type": "CommentLine", "value": " Sort layers to reduce WebGL shader switching when rendering them", - "start": 142627, - "end": 142694, + "start": 143141, + "end": 143208, "loc": { "start": { - "line": 3507, + "line": 3515, "column": 8 }, "end": { - "line": 3507, + "line": 3515, "column": 75 } } @@ -192892,15 +193953,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 143376, - "end": 143391, + "start": 143890, + "end": 143905, "loc": { "start": { - "line": 3533, + "line": 3541, "column": 4 }, "end": { - "line": 3533, + "line": 3541, "column": 19 } } @@ -192908,15 +193969,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 143448, - "end": 143463, + "start": 143962, + "end": 143977, "loc": { "start": { - "line": 3537, + "line": 3545, "column": 4 }, "end": { - "line": 3537, + "line": 3545, "column": 19 } } @@ -192924,15 +193985,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 143782, - "end": 143809, + "start": 144296, + "end": 144323, "loc": { "start": { - "line": 3548, + "line": 3556, "column": 4 }, "end": { - "line": 3550, + "line": 3558, "column": 7 } } @@ -192940,15 +194001,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 144376, - "end": 144391, + "start": 144890, + "end": 144905, "loc": { "start": { - "line": 3564, + "line": 3572, "column": 4 }, "end": { - "line": 3564, + "line": 3572, "column": 19 } } @@ -192956,15 +194017,15 @@ { "type": "CommentLine", "value": " -------------- RENDERING ---------------------------------------------------------------------------------------", - "start": 148672, - "end": 148787, + "start": 149186, + "end": 149301, "loc": { "start": { - "line": 3672, + "line": 3680, "column": 4 }, "end": { - "line": 3672, + "line": 3680, "column": 119 } } @@ -192972,15 +194033,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 148793, - "end": 148808, + "start": 149307, + "end": 149322, "loc": { "start": { - "line": 3674, + "line": 3682, "column": 4 }, "end": { - "line": 3674, + "line": 3682, "column": 19 } } @@ -192988,15 +194049,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149128, - "end": 149143, + "start": 149642, + "end": 149657, "loc": { "start": { - "line": 3683, + "line": 3691, "column": 4 }, "end": { - "line": 3683, + "line": 3691, "column": 19 } } @@ -193004,15 +194065,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149473, - "end": 149488, + "start": 149987, + "end": 150002, "loc": { "start": { - "line": 3692, + "line": 3700, "column": 4 }, "end": { - "line": 3692, + "line": 3700, "column": 19 } } @@ -193020,15 +194081,15 @@ { "type": "CommentLine", "value": " Dedicated to SAO because it skips transparent objects", - "start": 149515, - "end": 149571, + "start": 150029, + "end": 150085, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 26 }, "end": { - "line": 3693, + "line": 3701, "column": 82 } } @@ -193036,15 +194097,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149853, - "end": 149868, + "start": 150367, + "end": 150382, "loc": { "start": { - "line": 3701, + "line": 3709, "column": 4 }, "end": { - "line": 3701, + "line": 3709, "column": 19 } } @@ -193052,15 +194113,15 @@ { "type": "CommentLine", "value": " Dedicated to SAO because it skips transparent objects", - "start": 149897, - "end": 149953, + "start": 150411, + "end": 150467, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 28 }, "end": { - "line": 3702, + "line": 3710, "column": 84 } } @@ -193068,15 +194129,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150237, - "end": 150252, + "start": 150751, + "end": 150766, "loc": { "start": { - "line": 3710, + "line": 3718, "column": 4 }, "end": { - "line": 3710, + "line": 3718, "column": 19 } } @@ -193084,15 +194145,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150582, - "end": 150597, + "start": 151096, + "end": 151111, "loc": { "start": { - "line": 3719, + "line": 3727, "column": 4 }, "end": { - "line": 3719, + "line": 3727, "column": 19 } } @@ -193100,15 +194161,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150937, - "end": 150952, + "start": 151451, + "end": 151466, "loc": { "start": { - "line": 3728, + "line": 3736, "column": 4 }, "end": { - "line": 3728, + "line": 3736, "column": 19 } } @@ -193116,15 +194177,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151286, - "end": 151301, + "start": 151800, + "end": 151815, "loc": { "start": { - "line": 3737, + "line": 3745, "column": 4 }, "end": { - "line": 3737, + "line": 3745, "column": 19 } } @@ -193132,15 +194193,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151631, - "end": 151646, + "start": 152145, + "end": 152160, "loc": { "start": { - "line": 3746, + "line": 3754, "column": 4 }, "end": { - "line": 3746, + "line": 3754, "column": 19 } } @@ -193148,15 +194209,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151986, - "end": 152001, + "start": 152500, + "end": 152515, "loc": { "start": { - "line": 3755, + "line": 3763, "column": 4 }, "end": { - "line": 3755, + "line": 3763, "column": 19 } } @@ -193164,15 +194225,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 152321, - "end": 152336, + "start": 152835, + "end": 152850, "loc": { "start": { - "line": 3764, + "line": 3772, "column": 4 }, "end": { - "line": 3764, + "line": 3772, "column": 19 } } @@ -193180,15 +194241,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 152666, - "end": 152681, + "start": 153180, + "end": 153195, "loc": { "start": { - "line": 3773, + "line": 3781, "column": 4 }, "end": { - "line": 3773, + "line": 3781, "column": 19 } } @@ -193196,15 +194257,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 153005, - "end": 153032, + "start": 153519, + "end": 153546, "loc": { "start": { - "line": 3782, + "line": 3790, "column": 4 }, "end": { - "line": 3784, + "line": 3792, "column": 7 } } @@ -193212,15 +194273,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 153428, - "end": 153455, + "start": 153942, + "end": 153969, "loc": { "start": { - "line": 3796, + "line": 3804, "column": 4 }, "end": { - "line": 3798, + "line": 3806, "column": 7 } } @@ -193228,15 +194289,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 153845, - "end": 153860, + "start": 154359, + "end": 154374, "loc": { "start": { - "line": 3810, + "line": 3818, "column": 4 }, "end": { - "line": 3810, + "line": 3818, "column": 19 } } @@ -193244,15 +194305,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 154384, - "end": 154399, + "start": 154898, + "end": 154913, "loc": { "start": { - "line": 3825, + "line": 3833, "column": 4 }, "end": { - "line": 3825, + "line": 3833, "column": 19 } } @@ -193260,15 +194321,15 @@ { "type": "CommentBlock", "value": "*\n * Called by SceneModelMesh.drawPickDepths()\n * @private\n ", - "start": 154793, - "end": 154869, + "start": 155307, + "end": 155383, "loc": { "start": { - "line": 3837, + "line": 3845, "column": 4 }, "end": { - "line": 3840, + "line": 3848, "column": 7 } } @@ -193276,15 +194337,15 @@ { "type": "CommentBlock", "value": "*\n * Called by SceneModelMesh.drawPickNormals()\n * @private\n ", - "start": 155267, - "end": 155344, + "start": 155781, + "end": 155858, "loc": { "start": { - "line": 3852, + "line": 3860, "column": 4 }, "end": { - "line": 3855, + "line": 3863, "column": 7 } } @@ -193292,15 +194353,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 155744, - "end": 155771, + "start": 156258, + "end": 156285, "loc": { "start": { - "line": 3867, + "line": 3875, "column": 4 }, "end": { - "line": 3869, + "line": 3877, "column": 7 } } @@ -193308,15 +194369,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 156655, - "end": 156682, + "start": 157169, + "end": 157196, "loc": { "start": { - "line": 3891, + "line": 3899, "column": 4 }, "end": { - "line": 3893, + "line": 3901, "column": 7 } } @@ -193324,15 +194385,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this SceneModel.\n ", - "start": 157554, - "end": 157598, + "start": 158068, + "end": 158112, "loc": { "start": { - "line": 3915, + "line": 3923, "column": 4 }, "end": { - "line": 3917, + "line": 3925, "column": 7 } } @@ -193340,15 +194401,15 @@ { "type": "CommentLine", "value": " Object.entries(this._geometries).forEach(([id, geometry]) => {", - "start": 158488, - "end": 158553, + "start": 159002, + "end": 159067, "loc": { "start": { - "line": 3940, + "line": 3948, "column": 8 }, "end": { - "line": 3940, + "line": 3948, "column": 73 } } @@ -193356,15 +194417,15 @@ { "type": "CommentLine", "value": " geometry.destroy();", - "start": 158562, - "end": 158588, + "start": 159076, + "end": 159102, "loc": { "start": { - "line": 3941, + "line": 3949, "column": 8 }, "end": { - "line": 3941, + "line": 3949, "column": 34 } } @@ -193372,15 +194433,15 @@ { "type": "CommentLine", "value": " });", - "start": 158597, - "end": 158603, + "start": 159111, + "end": 159117, "loc": { "start": { - "line": 3942, + "line": 3950, "column": 8 }, "end": { - "line": 3942, + "line": 3950, "column": 14 } } @@ -193388,15 +194449,15 @@ { "type": "CommentBlock", "value": "*\n * This function applies two steps to the provided mesh geometry data:\n *\n * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`.\n *\n * - 2nd, it tries to do an optimization called `index rebucketting`\n *\n * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._\n *\n * - _for 32 bit indices, will try to demote them to 16 bit indices_\n * - _for 16 bit indices, will try to demote them to 8 bits indices_\n * - _8 bits indices are kept as-is_\n *\n * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry.\n *\n * The function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`.\n *\n * @param {object} geometry The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays.\n *\n * @param enableVertexWelding\n * @param enableIndexBucketing\n * @returns {object} The mesh information enrichened with `.buckets` key.\n ", - "start": 158970, - "end": 160183, + "start": 159484, + "end": 160697, "loc": { "start": { - "line": 3959, + "line": 3967, "column": 0 }, "end": { - "line": 3981, + "line": 3989, "column": 3 } } @@ -193404,15 +194465,15 @@ { "type": "CommentLine", "value": " Expensive - careful!", - "start": 160389, - "end": 160412, + "start": 160903, + "end": 160926, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 55 }, "end": { - "line": 3984, + "line": 3992, "column": 78 } } @@ -193420,15 +194481,15 @@ { "type": "CommentLine", "value": " true", - "start": 161281, - "end": 161288, + "start": 161795, + "end": 161802, "loc": { "start": { - "line": 4008, + "line": 4016, "column": 12 }, "end": { - "line": 4008, + "line": 4016, "column": 19 } } @@ -193777,36 +194838,3903 @@ }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 79, + "end": 80, + "loc": { + "start": { + "line": 2, + "column": 36 + }, + "end": { + "line": 2, + "column": 37 + } + } + }, + { + "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": 81, + "end": 87, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 88, + "end": 89, + "loc": { + "start": { + "line": 3, + "column": 7 + }, + "end": { + "line": 3, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "buildEdgeIndices", + "start": 89, + "end": 105, + "loc": { + "start": { + "line": 3, + "column": 8 + }, + "end": { + "line": 3, + "column": 24 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 105, + "end": 106, + "loc": { + "start": { + "line": 3, + "column": 24 + }, + "end": { + "line": 3, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 107, + "end": 111, + "loc": { + "start": { + "line": 3, + "column": 26 + }, + "end": { + "line": 3, + "column": 30 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../math/buildEdgeIndices.js", + "start": 112, + "end": 141, + "loc": { + "start": { + "line": 3, + "column": 31 + }, + "end": { + "line": 3, + "column": 60 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 141, + "end": 142, + "loc": { + "start": { + "line": 3, + "column": 60 + }, + "end": { + "line": 3, + "column": 61 + } + } + }, + { + "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": 143, + "end": 149, + "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": 150, + "end": 151, + "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": "SceneModelMesh", + "start": 151, + "end": 165, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 22 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 165, + "end": 166, + "loc": { + "start": { + "line": 4, + "column": 22 + }, + "end": { + "line": 4, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 167, + "end": 171, + "loc": { + "start": { + "line": 4, + "column": 24 + }, + "end": { + "line": 4, + "column": 28 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./SceneModelMesh.js", + "start": 172, + "end": 193, + "loc": { + "start": { + "line": 4, + "column": 29 + }, + "end": { + "line": 4, + "column": 50 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 193, + "end": 194, + "loc": { + "start": { + "line": 4, + "column": 50 + }, + "end": { + "line": 4, + "column": 51 + } + } + }, + { + "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": 195, + "end": 201, + "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": 202, + "end": 203, + "loc": { + "start": { + "line": 5, + "column": 7 + }, + "end": { + "line": 5, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "getScratchMemory", + "start": 203, + "end": 219, + "loc": { + "start": { + "line": 5, + "column": 8 + }, + "end": { + "line": 5, + "column": 24 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 219, + "end": 220, + "loc": { + "start": { + "line": 5, + "column": 24 + }, + "end": { + "line": 5, + "column": 25 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "putScratchMemory", + "start": 221, + "end": 237, + "loc": { + "start": { + "line": 5, + "column": 26 + }, + "end": { + "line": 5, + "column": 42 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 237, + "end": 238, + "loc": { + "start": { + "line": 5, + "column": 42 + }, + "end": { + "line": 5, + "column": 43 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 239, + "end": 243, + "loc": { + "start": { + "line": 5, + "column": 44 + }, + "end": { + "line": 5, + "column": 48 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./vbo/ScratchMemory.js", + "start": 244, + "end": 268, + "loc": { + "start": { + "line": 5, + "column": 49 + }, + "end": { + "line": 5, + "column": 73 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 268, + "end": 269, + "loc": { + "start": { + "line": 5, + "column": 73 + }, + "end": { + "line": 5, + "column": 74 + } + } + }, + { + "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": 270, + "end": 276, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 277, + "end": 278, + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "VBOBatchingTrianglesLayer", + "start": 278, + "end": 303, + "loc": { + "start": { + "line": 6, + "column": 8 + }, + "end": { + "line": 6, + "column": 33 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 303, + "end": 304, + "loc": { + "start": { + "line": 6, + "column": 33 + }, + "end": { + "line": 6, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 305, + "end": 309, + "loc": { + "start": { + "line": 6, + "column": 35 + }, + "end": { + "line": 6, + "column": 39 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./vbo/batching/triangles/VBOBatchingTrianglesLayer.js", + "start": 310, + "end": 365, + "loc": { + "start": { + "line": 6, + "column": 40 + }, + "end": { + "line": 6, + "column": 95 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 365, + "end": 366, + "loc": { + "start": { + "line": 6, + "column": 95 + }, + "end": { + "line": 6, + "column": 96 + } + } + }, + { + "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": 367, + "end": 373, + "loc": { + "start": { + "line": 7, + "column": 0 + }, + "end": { + "line": 7, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 374, + "end": 375, + "loc": { + "start": { + "line": 7, + "column": 7 + }, + "end": { + "line": 7, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "VBOInstancingTrianglesLayer", + "start": 375, + "end": 402, + "loc": { + "start": { + "line": 7, + "column": 8 + }, + "end": { + "line": 7, + "column": 35 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 402, + "end": 403, + "loc": { + "start": { + "line": 7, + "column": 35 + }, + "end": { + "line": 7, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 404, + "end": 408, + "loc": { + "start": { + "line": 7, + "column": 37 + }, + "end": { + "line": 7, + "column": 41 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", + "start": 409, + "end": 468, + "loc": { + "start": { + "line": 7, + "column": 42 + }, + "end": { + "line": 7, + "column": 101 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 468, + "end": 469, + "loc": { + "start": { + "line": 7, + "column": 101 + }, + "end": { + "line": 7, + "column": 102 + } + } + }, + { + "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": 470, + "end": 476, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 477, + "end": 478, + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "VBOBatchingLinesLayer", + "start": 478, + "end": 499, + "loc": { + "start": { + "line": 8, + "column": 8 + }, + "end": { + "line": 8, + "column": 29 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 499, + "end": 500, + "loc": { + "start": { + "line": 8, + "column": 29 + }, + "end": { + "line": 8, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 501, + "end": 505, + "loc": { + "start": { + "line": 8, + "column": 31 + }, + "end": { + "line": 8, + "column": 35 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./vbo/batching/lines/VBOBatchingLinesLayer.js", + "start": 506, + "end": 553, + "loc": { + "start": { + "line": 8, + "column": 36 + }, + "end": { + "line": 8, + "column": 83 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 553, + "end": 554, + "loc": { + "start": { + "line": 8, + "column": 83 + }, + "end": { + "line": 8, + "column": 84 + } + } + }, + { + "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": 555, + "end": 561, + "loc": { + "start": { + "line": 9, + "column": 0 + }, + "end": { + "line": 9, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 562, + "end": 563, + "loc": { + "start": { + "line": 9, + "column": 7 + }, + "end": { + "line": 9, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "VBOInstancingLinesLayer", + "start": 563, + "end": 586, + "loc": { + "start": { + "line": 9, + "column": 8 + }, + "end": { + "line": 9, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 586, + "end": 587, + "loc": { + "start": { + "line": 9, + "column": 31 + }, + "end": { + "line": 9, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 588, + "end": 592, + "loc": { + "start": { + "line": 9, + "column": 33 + }, + "end": { + "line": 9, + "column": 37 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./vbo/instancing/lines/VBOInstancingLinesLayer.js", + "start": 593, + "end": 644, + "loc": { + "start": { + "line": 9, + "column": 38 + }, + "end": { + "line": 9, + "column": 89 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 644, + "end": 645, + "loc": { + "start": { + "line": 9, + "column": 89 + }, + "end": { + "line": 9, + "column": 90 + } + } + }, + { + "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": 646, + "end": 652, + "loc": { + "start": { + "line": 10, + "column": 0 + }, + "end": { + "line": 10, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 653, + "end": 654, + "loc": { + "start": { + "line": 10, + "column": 7 + }, + "end": { + "line": 10, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "VBOBatchingPointsLayer", + "start": 654, + "end": 676, + "loc": { + "start": { + "line": 10, + "column": 8 + }, + "end": { + "line": 10, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 676, + "end": 677, + "loc": { + "start": { + "line": 10, + "column": 30 + }, + "end": { + "line": 10, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 678, + "end": 682, + "loc": { + "start": { + "line": 10, + "column": 32 + }, + "end": { + "line": 10, + "column": 36 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./vbo/batching/points/VBOBatchingPointsLayer.js", + "start": 683, + "end": 732, + "loc": { + "start": { + "line": 10, + "column": 37 + }, + "end": { + "line": 10, + "column": 86 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 732, + "end": 733, + "loc": { + "start": { + "line": 10, + "column": 86 + }, + "end": { + "line": 10, + "column": 87 + } + } + }, + { + "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": 734, + "end": 740, + "loc": { + "start": { + "line": 11, + "column": 0 + }, + "end": { + "line": 11, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 741, + "end": 742, + "loc": { + "start": { + "line": 11, + "column": 7 + }, + "end": { + "line": 11, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "VBOInstancingPointsLayer", + "start": 742, + "end": 766, + "loc": { + "start": { + "line": 11, + "column": 8 + }, + "end": { + "line": 11, + "column": 32 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 766, + "end": 767, + "loc": { + "start": { + "line": 11, + "column": 32 + }, + "end": { + "line": 11, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 768, + "end": 772, + "loc": { + "start": { + "line": 11, + "column": 34 + }, + "end": { + "line": 11, + "column": 38 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./vbo/instancing/points/VBOInstancingPointsLayer.js", + "start": 773, + "end": 826, + "loc": { + "start": { + "line": 11, + "column": 39 + }, + "end": { + "line": 11, + "column": 92 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 826, + "end": 827, + "loc": { + "start": { + "line": 11, + "column": 92 + }, + "end": { + "line": 11, + "column": 93 + } + } + }, + { + "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": 828, + "end": 834, + "loc": { + "start": { + "line": 12, + "column": 0 + }, + "end": { + "line": 12, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 835, + "end": 836, + "loc": { + "start": { + "line": 12, + "column": 7 + }, + "end": { + "line": 12, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DTXLinesLayer", + "start": 836, + "end": 849, + "loc": { + "start": { + "line": 12, + "column": 8 + }, + "end": { + "line": 12, + "column": 21 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 849, + "end": 850, + "loc": { + "start": { + "line": 12, + "column": 21 + }, + "end": { + "line": 12, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 851, + "end": 855, + "loc": { + "start": { + "line": 12, + "column": 23 + }, + "end": { + "line": 12, + "column": 27 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./dtx/lines/DTXLinesLayer.js", + "start": 856, + "end": 886, + "loc": { + "start": { + "line": 12, + "column": 28 + }, + "end": { + "line": 12, + "column": 58 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 886, + "end": 887, + "loc": { + "start": { + "line": 12, + "column": 58 + }, + "end": { + "line": 12, + "column": 59 + } + } + }, + { + "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": 888, + "end": 894, + "loc": { + "start": { + "line": 13, + "column": 0 + }, + "end": { + "line": 13, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 895, + "end": 896, + "loc": { + "start": { + "line": 13, + "column": 7 + }, + "end": { + "line": 13, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DTXTrianglesLayer", + "start": 896, + "end": 913, + "loc": { + "start": { + "line": 13, + "column": 8 + }, + "end": { + "line": 13, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 913, + "end": 914, + "loc": { + "start": { + "line": 13, + "column": 25 + }, + "end": { + "line": 13, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 915, + "end": 919, + "loc": { + "start": { + "line": 13, + "column": 27 + }, + "end": { + "line": 13, + "column": 31 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./dtx/triangles/DTXTrianglesLayer.js", + "start": 920, + "end": 958, + "loc": { + "start": { + "line": 13, + "column": 32 + }, + "end": { + "line": 13, + "column": 70 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 958, + "end": 959, + "loc": { + "start": { + "line": 13, + "column": 70 + }, + "end": { + "line": 13, + "column": 71 + } + } + }, + { + "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": 960, + "end": 966, + "loc": { + "start": { + "line": 14, + "column": 0 + }, + "end": { + "line": 14, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 967, + "end": 968, + "loc": { + "start": { + "line": 14, + "column": 7 + }, + "end": { + "line": 14, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ENTITY_FLAGS", + "start": 968, + "end": 980, + "loc": { + "start": { + "line": 14, + "column": 8 + }, + "end": { + "line": 14, + "column": 20 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 980, + "end": 981, + "loc": { + "start": { + "line": 14, + "column": 20 + }, + "end": { + "line": 14, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 982, + "end": 986, + "loc": { + "start": { + "line": 14, + "column": 22 + }, + "end": { + "line": 14, + "column": 26 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./ENTITY_FLAGS.js", + "start": 987, + "end": 1006, + "loc": { + "start": { + "line": 14, + "column": 27 + }, + "end": { + "line": 14, + "column": 46 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1006, + "end": 1007, + "loc": { + "start": { + "line": 14, + "column": 46 + }, + "end": { + "line": 14, + "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": 1008, + "end": 1014, + "loc": { + "start": { + "line": 15, + "column": 0 + }, + "end": { + "line": 15, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1015, + "end": 1016, + "loc": { + "start": { + "line": 15, + "column": 7 + }, + "end": { + "line": 15, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "RenderFlags", + "start": 1016, + "end": 1027, + "loc": { + "start": { + "line": 15, + "column": 8 + }, + "end": { + "line": 15, + "column": 19 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1027, + "end": 1028, + "loc": { + "start": { + "line": 15, + "column": 19 + }, + "end": { + "line": 15, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 1029, + "end": 1033, + "loc": { + "start": { + "line": 15, + "column": 21 + }, + "end": { + "line": 15, + "column": 25 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../webgl/RenderFlags.js", + "start": 1034, + "end": 1059, + "loc": { + "start": { + "line": 15, + "column": 26 + }, + "end": { + "line": 15, + "column": 51 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1059, + "end": 1060, + "loc": { + "start": { + "line": 15, + "column": 51 + }, + "end": { + "line": 15, + "column": 52 + } + } + }, + { + "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": 1061, + "end": 1067, + "loc": { + "start": { + "line": 16, + "column": 0 + }, + "end": { + "line": 16, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1068, + "end": 1069, + "loc": { + "start": { + "line": 16, + "column": 7 + }, + "end": { + "line": 16, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "worldToRTCPositions", + "start": 1069, + "end": 1088, + "loc": { + "start": { + "line": 16, + "column": 8 + }, + "end": { + "line": 16, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1088, + "end": 1089, + "loc": { + "start": { + "line": 16, + "column": 27 + }, + "end": { + "line": 16, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 1090, + "end": 1094, + "loc": { + "start": { + "line": 16, + "column": 29 + }, + "end": { + "line": 16, + "column": 33 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../math/rtcCoords.js", + "start": 1095, + "end": 1117, + "loc": { + "start": { + "line": 16, + "column": 34 + }, + "end": { + "line": 16, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1117, + "end": 1118, + "loc": { + "start": { + "line": 16, + "column": 56 + }, + "end": { + "line": 16, + "column": 57 + } + } + }, + { + "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": 1119, + "end": 1125, + "loc": { + "start": { + "line": 17, + "column": 0 + }, + "end": { + "line": 17, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1126, + "end": 1127, + "loc": { + "start": { + "line": 17, + "column": 7 + }, + "end": { + "line": 17, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "SceneModelTextureSet", + "start": 1127, + "end": 1147, + "loc": { + "start": { + "line": 17, + "column": 8 + }, + "end": { + "line": 17, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1147, + "end": 1148, + "loc": { + "start": { + "line": 17, + "column": 28 + }, + "end": { + "line": 17, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 1149, + "end": 1153, + "loc": { + "start": { + "line": 17, + "column": 30 + }, + "end": { + "line": 17, + "column": 34 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./SceneModelTextureSet.js", + "start": 1154, + "end": 1181, + "loc": { + "start": { + "line": 17, + "column": 35 + }, + "end": { + "line": 17, + "column": 62 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1181, + "end": 1182, + "loc": { + "start": { + "line": 17, + "column": 62 + }, + "end": { + "line": 17, + "column": 63 + } + } + }, + { + "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": 1183, + "end": 1189, + "loc": { + "start": { + "line": 18, + "column": 0 + }, + "end": { + "line": 18, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1190, + "end": 1191, + "loc": { + "start": { + "line": 18, + "column": 7 + }, + "end": { + "line": 18, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "SceneModelTexture", + "start": 1191, + "end": 1208, + "loc": { + "start": { + "line": 18, + "column": 8 + }, + "end": { + "line": 18, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1208, + "end": 1209, + "loc": { + "start": { + "line": 18, + "column": 25 + }, + "end": { + "line": 18, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 1210, + "end": 1214, + "loc": { + "start": { + "line": 18, + "column": 27 + }, + "end": { + "line": 18, + "column": 31 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "./SceneModelTexture.js", + "start": 1215, + "end": 1239, + "loc": { + "start": { + "line": 18, + "column": 32 + }, + "end": { + "line": 18, + "column": 56 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1239, + "end": 1240, + "loc": { + "start": { + "line": 18, + "column": 56 + }, + "end": { + "line": 18, + "column": 57 + } + } + }, + { + "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": 1241, + "end": 1247, + "loc": { + "start": { + "line": 19, + "column": 0 + }, + "end": { + "line": 19, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1248, + "end": 1249, + "loc": { + "start": { + "line": 19, + "column": 7 + }, + "end": { + "line": 19, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Texture2D", + "start": 1249, + "end": 1258, + "loc": { + "start": { + "line": 19, + "column": 8 + }, + "end": { + "line": 19, + "column": 17 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1258, + "end": 1259, + "loc": { + "start": { + "line": 19, + "column": 17 + }, + "end": { + "line": 19, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 1260, + "end": 1264, + "loc": { + "start": { + "line": 19, + "column": 19 + }, + "end": { + "line": 19, + "column": 23 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../webgl/Texture2D.js", + "start": 1265, + "end": 1288, + "loc": { + "start": { + "line": 19, + "column": 24 + }, + "end": { + "line": 19, + "column": 47 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1288, + "end": 1289, + "loc": { + "start": { + "line": 19, + "column": 47 + }, + "end": { + "line": 19, + "column": 48 + } + } + }, + { + "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": 1290, + "end": 1296, + "loc": { + "start": { + "line": 20, + "column": 0 + }, + "end": { + "line": 20, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1297, + "end": 1298, + "loc": { + "start": { + "line": 20, + "column": 7 + }, + "end": { + "line": 20, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "utils", + "start": 1298, + "end": 1303, + "loc": { + "start": { + "line": 20, + "column": 8 + }, + "end": { + "line": 20, + "column": 13 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1303, + "end": 1304, + "loc": { + "start": { + "line": 20, + "column": 13 + }, + "end": { + "line": 20, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 1305, + "end": 1309, + "loc": { + "start": { + "line": 20, + "column": 15 + }, + "end": { + "line": 20, + "column": 19 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../utils.js", + "start": 1310, + "end": 1323, + "loc": { + "start": { + "line": 20, + "column": 20 + }, + "end": { + "line": 20, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1323, + "end": 1324, + "loc": { + "start": { + "line": 20, + "column": 33 + }, + "end": { + "line": 20, + "column": 34 + } + } + }, + { + "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": 1325, + "end": 1331, + "loc": { + "start": { + "line": 21, + "column": 0 + }, + "end": { + "line": 21, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1332, + "end": 1333, + "loc": { + "start": { + "line": 21, + "column": 7 + }, + "end": { + "line": 21, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "getKTX2TextureTranscoder", + "start": 1333, + "end": 1357, + "loc": { + "start": { + "line": 21, + "column": 8 + }, + "end": { + "line": 21, + "column": 32 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1357, + "end": 1358, + "loc": { + "start": { + "line": 21, + "column": 32 + }, + "end": { + "line": 21, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 1359, + "end": 1363, + "loc": { + "start": { + "line": 21, + "column": 34 + }, + "end": { + "line": 21, + "column": 38 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", + "start": 1364, + "end": 1440, + "loc": { + "start": { + "line": 21, + "column": 39 + }, + "end": { + "line": 21, + "column": 115 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1440, + "end": 1441, + "loc": { + "start": { + "line": 21, + "column": 115 + }, + "end": { + "line": 21, + "column": 116 + } + } + }, + { + "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": 1442, + "end": 1448, + "loc": { + "start": { + "line": 22, + "column": 0 + }, + "end": { + "line": 22, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1449, + "end": 1450, + "loc": { + "start": { + "line": 22, + "column": 7 + }, + "end": { + "line": 22, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ClampToEdgeWrapping", + "start": 1455, + "end": 1474, + "loc": { + "start": { + "line": 23, + "column": 4 + }, + "end": { + "line": 23, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1474, + "end": 1475, + "loc": { + "start": { + "line": 23, + "column": 23 + }, + "end": { + "line": 23, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "LinearEncoding", + "start": 1480, + "end": 1494, + "loc": { + "start": { + "line": 24, + "column": 4 + }, + "end": { + "line": 24, + "column": 18 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1494, + "end": 1495, + "loc": { + "start": { + "line": 24, + "column": 18 + }, + "end": { + "line": 24, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "LinearFilter", + "start": 1500, + "end": 1512, + "loc": { + "start": { + "line": 25, + "column": 4 + }, + "end": { + "line": 25, + "column": 16 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1512, + "end": 1513, + "loc": { + "start": { + "line": 25, + "column": 16 + }, + "end": { + "line": 25, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "LinearMipmapLinearFilter", + "start": 1518, + "end": 1542, + "loc": { + "start": { + "line": 26, + "column": 4 + }, + "end": { + "line": 26, + "column": 28 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1542, + "end": 1543, + "loc": { + "start": { + "line": 26, + "column": 28 + }, + "end": { + "line": 26, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "LinearMipMapNearestFilter", + "start": 1548, + "end": 1573, + "loc": { + "start": { + "line": 27, + "column": 4 + }, + "end": { + "line": 27, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 1573, + "end": 1574, + "loc": { + "start": { + "line": 27, + "column": 29 + }, + "end": { + "line": 27, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 79, - "end": 80, + "value": "MirroredRepeatWrapping", + "start": 1579, + "end": 1601, "loc": { "start": { - "line": 2, - "column": 36 + "line": 28, + "column": 4 }, "end": { - "line": 2, - "column": 37 + "line": 28, + "column": 26 } } }, { "type": { - "label": "import", - "keyword": "import", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -193815,24 +198743,23 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 81, - "end": 87, + "start": 1601, + "end": 1602, "loc": { "start": { - "line": 3, - "column": 0 + "line": 28, + "column": 26 }, "end": { - "line": 3, - "column": 6 + "line": 28, + "column": 27 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -193841,50 +198768,51 @@ "postfix": false, "binop": null }, - "start": 88, - "end": 89, + "value": "NearestFilter", + "start": 1607, + "end": 1620, "loc": { "start": { - "line": 3, - "column": 7 + "line": 29, + "column": 4 }, "end": { - "line": 3, - "column": 8 + "line": 29, + "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": "buildEdgeIndices", - "start": 89, - "end": 105, + "start": 1620, + "end": 1621, "loc": { "start": { - "line": 3, - "column": 8 + "line": 29, + "column": 17 }, "end": { - "line": 3, - "column": 24 + "line": 29, + "column": 18 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -193892,48 +198820,49 @@ "postfix": false, "binop": null }, - "start": 105, - "end": 106, + "value": "NearestMipMapLinearFilter", + "start": 1626, + "end": 1651, "loc": { "start": { - "line": 3, - "column": 24 + "line": 30, + "column": 4 }, "end": { - "line": 3, - "column": 25 + "line": 30, + "column": 29 } } }, { "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": "from", - "start": 107, - "end": 111, + "start": 1651, + "end": 1652, "loc": { "start": { - "line": 3, - "column": 26 + "line": 30, + "column": 29 }, "end": { - "line": 3, + "line": 30, "column": 30 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -193941,26 +198870,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "../math/buildEdgeIndices.js", - "start": 112, - "end": 141, + "value": "NearestMipMapNearestFilter", + "start": 1657, + "end": 1683, "loc": { "start": { - "line": 3, - "column": 31 + "line": 31, + "column": 4 }, "end": { - "line": 3, - "column": 60 + "line": 31, + "column": 30 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -193971,23 +198899,22 @@ "binop": null, "updateContext": null }, - "start": 141, - "end": 142, + "start": 1683, + "end": 1684, "loc": { "start": { - "line": 3, - "column": 60 + "line": 31, + "column": 30 }, "end": { - "line": 3, - "column": 61 + "line": 31, + "column": 31 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -193995,45 +198922,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 143, - "end": 149, + "value": "RepeatWrapping", + "start": 1689, + "end": 1703, "loc": { "start": { - "line": 4, - "column": 0 + "line": 32, + "column": 4 }, "end": { - "line": 4, - "column": 6 + "line": 32, + "column": 18 } } }, { "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": 150, - "end": 151, + "start": 1703, + "end": 1704, "loc": { "start": { - "line": 4, - "column": 7 + "line": 32, + "column": 18 }, "end": { - "line": 4, - "column": 8 + "line": 32, + "column": 19 } } }, @@ -194049,17 +198976,17 @@ "postfix": false, "binop": null }, - "value": "SceneModelMesh", - "start": 151, - "end": 165, + "value": "sRGBEncoding", + "start": 1709, + "end": 1721, "loc": { "start": { - "line": 4, - "column": 8 + "line": 33, + "column": 4 }, "end": { - "line": 4, - "column": 22 + "line": 33, + "column": 16 } } }, @@ -194075,16 +199002,16 @@ "postfix": false, "binop": null }, - "start": 165, - "end": 166, + "start": 1722, + "end": 1723, "loc": { "start": { - "line": 4, - "column": 22 + "line": 34, + "column": 0 }, "end": { - "line": 4, - "column": 23 + "line": 34, + "column": 1 } } }, @@ -194101,16 +199028,16 @@ "binop": null }, "value": "from", - "start": 167, - "end": 171, + "start": 1724, + "end": 1728, "loc": { "start": { - "line": 4, - "column": 24 + "line": 34, + "column": 2 }, "end": { - "line": 4, - "column": 28 + "line": 34, + "column": 6 } } }, @@ -194127,17 +199054,17 @@ "binop": null, "updateContext": null }, - "value": "./SceneModelMesh.js", - "start": 172, - "end": 193, + "value": "../constants/constants.js", + "start": 1729, + "end": 1756, "loc": { "start": { - "line": 4, - "column": 29 + "line": 34, + "column": 7 }, "end": { - "line": 4, - "column": 50 + "line": 34, + "column": 34 } } }, @@ -194154,16 +199081,16 @@ "binop": null, "updateContext": null }, - "start": 193, - "end": 194, + "start": 1756, + "end": 1757, "loc": { "start": { - "line": 4, - "column": 50 + "line": 34, + "column": 34 }, "end": { - "line": 4, - "column": 51 + "line": 34, + "column": 35 } } }, @@ -194182,15 +199109,15 @@ "updateContext": null }, "value": "import", - "start": 195, - "end": 201, + "start": 1758, + "end": 1764, "loc": { "start": { - "line": 5, + "line": 35, "column": 0 }, "end": { - "line": 5, + "line": 35, "column": 6 } } @@ -194207,15 +199134,15 @@ "postfix": false, "binop": null }, - "start": 202, - "end": 203, + "start": 1765, + "end": 1766, "loc": { "start": { - "line": 5, + "line": 35, "column": 7 }, "end": { - "line": 5, + "line": 35, "column": 8 } } @@ -194232,17 +199159,17 @@ "postfix": false, "binop": null }, - "value": "getScratchMemory", - "start": 203, - "end": 219, + "value": "createPositionsDecodeMatrix", + "start": 1766, + "end": 1793, "loc": { "start": { - "line": 5, + "line": 35, "column": 8 }, "end": { - "line": 5, - "column": 24 + "line": 35, + "column": 35 } } }, @@ -194259,16 +199186,16 @@ "binop": null, "updateContext": null }, - "start": 219, - "end": 220, + "start": 1793, + "end": 1794, "loc": { "start": { - "line": 5, - "column": 24 + "line": 35, + "column": 35 }, "end": { - "line": 5, - "column": 25 + "line": 35, + "column": 36 } } }, @@ -194284,17 +199211,17 @@ "postfix": false, "binop": null }, - "value": "putScratchMemory", - "start": 221, - "end": 237, + "value": "quantizePositions", + "start": 1795, + "end": 1812, "loc": { "start": { - "line": 5, - "column": 26 + "line": 35, + "column": 37 }, "end": { - "line": 5, - "column": 42 + "line": 35, + "column": 54 } } }, @@ -194310,16 +199237,16 @@ "postfix": false, "binop": null }, - "start": 237, - "end": 238, + "start": 1812, + "end": 1813, "loc": { "start": { - "line": 5, - "column": 42 + "line": 35, + "column": 54 }, "end": { - "line": 5, - "column": 43 + "line": 35, + "column": 55 } } }, @@ -194336,16 +199263,16 @@ "binop": null }, "value": "from", - "start": 239, - "end": 243, + "start": 1814, + "end": 1818, "loc": { "start": { - "line": 5, - "column": 44 + "line": 35, + "column": 56 }, "end": { - "line": 5, - "column": 48 + "line": 35, + "column": 60 } } }, @@ -194362,17 +199289,17 @@ "binop": null, "updateContext": null }, - "value": "./vbo/ScratchMemory.js", - "start": 244, - "end": 268, + "value": "./compression.js", + "start": 1819, + "end": 1837, "loc": { "start": { - "line": 5, - "column": 49 + "line": 35, + "column": 61 }, "end": { - "line": 5, - "column": 73 + "line": 35, + "column": 79 } } }, @@ -194389,16 +199316,16 @@ "binop": null, "updateContext": null }, - "start": 268, - "end": 269, + "start": 1837, + "end": 1838, "loc": { "start": { - "line": 5, - "column": 73 + "line": 35, + "column": 79 }, "end": { - "line": 5, - "column": 74 + "line": 35, + "column": 80 } } }, @@ -194417,15 +199344,15 @@ "updateContext": null }, "value": "import", - "start": 270, - "end": 276, + "start": 1839, + "end": 1845, "loc": { "start": { - "line": 6, + "line": 36, "column": 0 }, "end": { - "line": 6, + "line": 36, "column": 6 } } @@ -194442,15 +199369,15 @@ "postfix": false, "binop": null }, - "start": 277, - "end": 278, + "start": 1846, + "end": 1847, "loc": { "start": { - "line": 6, + "line": 36, "column": 7 }, "end": { - "line": 6, + "line": 36, "column": 8 } } @@ -194467,17 +199394,17 @@ "postfix": false, "binop": null }, - "value": "VBOBatchingTrianglesLayer", - "start": 278, - "end": 303, + "value": "uniquifyPositions", + "start": 1847, + "end": 1864, "loc": { "start": { - "line": 6, + "line": 36, "column": 8 }, "end": { - "line": 6, - "column": 33 + "line": 36, + "column": 25 } } }, @@ -194493,16 +199420,16 @@ "postfix": false, "binop": null }, - "start": 303, - "end": 304, + "start": 1864, + "end": 1865, "loc": { "start": { - "line": 6, - "column": 33 + "line": 36, + "column": 25 }, "end": { - "line": 6, - "column": 34 + "line": 36, + "column": 26 } } }, @@ -194519,16 +199446,16 @@ "binop": null }, "value": "from", - "start": 305, - "end": 309, + "start": 1866, + "end": 1870, "loc": { "start": { - "line": 6, - "column": 35 + "line": 36, + "column": 27 }, "end": { - "line": 6, - "column": 39 + "line": 36, + "column": 31 } } }, @@ -194545,17 +199472,17 @@ "binop": null, "updateContext": null }, - "value": "./vbo/batching/triangles/VBOBatchingTrianglesLayer.js", - "start": 310, - "end": 365, + "value": "./calculateUniquePositions.js", + "start": 1871, + "end": 1902, "loc": { "start": { - "line": 6, - "column": 40 + "line": 36, + "column": 32 }, "end": { - "line": 6, - "column": 95 + "line": 36, + "column": 63 } } }, @@ -194572,16 +199499,16 @@ "binop": null, "updateContext": null }, - "start": 365, - "end": 366, + "start": 1902, + "end": 1903, "loc": { "start": { - "line": 6, - "column": 95 + "line": 36, + "column": 63 }, "end": { - "line": 6, - "column": 96 + "line": 36, + "column": 64 } } }, @@ -194600,15 +199527,15 @@ "updateContext": null }, "value": "import", - "start": 367, - "end": 373, + "start": 1904, + "end": 1910, "loc": { "start": { - "line": 7, + "line": 37, "column": 0 }, "end": { - "line": 7, + "line": 37, "column": 6 } } @@ -194625,15 +199552,15 @@ "postfix": false, "binop": null }, - "start": 374, - "end": 375, + "start": 1911, + "end": 1912, "loc": { "start": { - "line": 7, + "line": 37, "column": 7 }, "end": { - "line": 7, + "line": 37, "column": 8 } } @@ -194650,17 +199577,17 @@ "postfix": false, "binop": null }, - "value": "VBOInstancingTrianglesLayer", - "start": 375, - "end": 402, + "value": "rebucketPositions", + "start": 1912, + "end": 1929, "loc": { "start": { - "line": 7, + "line": 37, "column": 8 }, "end": { - "line": 7, - "column": 35 + "line": 37, + "column": 25 } } }, @@ -194676,16 +199603,16 @@ "postfix": false, "binop": null }, - "start": 402, - "end": 403, + "start": 1929, + "end": 1930, "loc": { "start": { - "line": 7, - "column": 35 + "line": 37, + "column": 25 }, "end": { - "line": 7, - "column": 36 + "line": 37, + "column": 26 } } }, @@ -194702,16 +199629,16 @@ "binop": null }, "value": "from", - "start": 404, - "end": 408, + "start": 1931, + "end": 1935, "loc": { "start": { - "line": 7, - "column": 37 + "line": 37, + "column": 27 }, "end": { - "line": 7, - "column": 41 + "line": 37, + "column": 31 } } }, @@ -194728,17 +199655,17 @@ "binop": null, "updateContext": null }, - "value": "./vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", - "start": 409, - "end": 468, + "value": "./rebucketPositions.js", + "start": 1936, + "end": 1960, "loc": { "start": { - "line": 7, - "column": 42 + "line": 37, + "column": 32 }, "end": { - "line": 7, - "column": 101 + "line": 37, + "column": 56 } } }, @@ -194755,16 +199682,16 @@ "binop": null, "updateContext": null }, - "start": 468, - "end": 469, + "start": 1960, + "end": 1961, "loc": { "start": { - "line": 7, - "column": 101 + "line": 37, + "column": 56 }, "end": { - "line": 7, - "column": 102 + "line": 37, + "column": 57 } } }, @@ -194783,15 +199710,15 @@ "updateContext": null }, "value": "import", - "start": 470, - "end": 476, + "start": 1962, + "end": 1968, "loc": { "start": { - "line": 8, + "line": 38, "column": 0 }, "end": { - "line": 8, + "line": 38, "column": 6 } } @@ -194808,15 +199735,15 @@ "postfix": false, "binop": null }, - "start": 477, - "end": 478, + "start": 1969, + "end": 1970, "loc": { "start": { - "line": 8, + "line": 38, "column": 7 }, "end": { - "line": 8, + "line": 38, "column": 8 } } @@ -194833,17 +199760,17 @@ "postfix": false, "binop": null }, - "value": "VBOBatchingLinesLayer", - "start": 478, - "end": 499, + "value": "SceneModelEntity", + "start": 1970, + "end": 1986, "loc": { "start": { - "line": 8, + "line": 38, "column": 8 }, "end": { - "line": 8, - "column": 29 + "line": 38, + "column": 24 } } }, @@ -194859,16 +199786,16 @@ "postfix": false, "binop": null }, - "start": 499, - "end": 500, + "start": 1986, + "end": 1987, "loc": { "start": { - "line": 8, - "column": 29 + "line": 38, + "column": 24 }, "end": { - "line": 8, - "column": 30 + "line": 38, + "column": 25 } } }, @@ -194885,16 +199812,16 @@ "binop": null }, "value": "from", - "start": 501, - "end": 505, + "start": 1988, + "end": 1992, "loc": { "start": { - "line": 8, - "column": 31 + "line": 38, + "column": 26 }, "end": { - "line": 8, - "column": 35 + "line": 38, + "column": 30 } } }, @@ -194911,17 +199838,17 @@ "binop": null, "updateContext": null }, - "value": "./vbo/batching/lines/VBOBatchingLinesLayer.js", - "start": 506, - "end": 553, + "value": "./SceneModelEntity.js", + "start": 1993, + "end": 2016, "loc": { "start": { - "line": 8, - "column": 36 + "line": 38, + "column": 31 }, "end": { - "line": 8, - "column": 83 + "line": 38, + "column": 54 } } }, @@ -194938,16 +199865,16 @@ "binop": null, "updateContext": null }, - "start": 553, - "end": 554, + "start": 2016, + "end": 2017, "loc": { "start": { - "line": 8, - "column": 83 + "line": 38, + "column": 54 }, "end": { - "line": 8, - "column": 84 + "line": 38, + "column": 55 } } }, @@ -194966,15 +199893,15 @@ "updateContext": null }, "value": "import", - "start": 555, - "end": 561, + "start": 2018, + "end": 2024, "loc": { "start": { - "line": 9, + "line": 39, "column": 0 }, "end": { - "line": 9, + "line": 39, "column": 6 } } @@ -194991,15 +199918,15 @@ "postfix": false, "binop": null }, - "start": 562, - "end": 563, + "start": 2025, + "end": 2026, "loc": { "start": { - "line": 9, + "line": 39, "column": 7 }, "end": { - "line": 9, + "line": 39, "column": 8 } } @@ -195016,17 +199943,17 @@ "postfix": false, "binop": null }, - "value": "VBOInstancingLinesLayer", - "start": 563, - "end": 586, + "value": "geometryCompressionUtils", + "start": 2026, + "end": 2050, "loc": { "start": { - "line": 9, + "line": 39, "column": 8 }, "end": { - "line": 9, - "column": 31 + "line": 39, + "column": 32 } } }, @@ -195042,16 +199969,16 @@ "postfix": false, "binop": null }, - "start": 586, - "end": 587, + "start": 2050, + "end": 2051, "loc": { "start": { - "line": 9, - "column": 31 + "line": 39, + "column": 32 }, "end": { - "line": 9, - "column": 32 + "line": 39, + "column": 33 } } }, @@ -195068,16 +199995,16 @@ "binop": null }, "value": "from", - "start": 588, - "end": 592, + "start": 2052, + "end": 2056, "loc": { "start": { - "line": 9, - "column": 33 + "line": 39, + "column": 34 }, "end": { - "line": 9, - "column": 37 + "line": 39, + "column": 38 } } }, @@ -195094,17 +200021,17 @@ "binop": null, "updateContext": null }, - "value": "./vbo/instancing/lines/VBOInstancingLinesLayer.js", - "start": 593, - "end": 644, + "value": "../math/geometryCompressionUtils.js", + "start": 2057, + "end": 2094, "loc": { "start": { - "line": 9, - "column": 38 + "line": 39, + "column": 39 }, "end": { - "line": 9, - "column": 89 + "line": 39, + "column": 76 } } }, @@ -195121,16 +200048,16 @@ "binop": null, "updateContext": null }, - "start": 644, - "end": 645, + "start": 2094, + "end": 2095, "loc": { "start": { - "line": 9, - "column": 89 + "line": 39, + "column": 76 }, "end": { - "line": 9, - "column": 90 + "line": 39, + "column": 77 } } }, @@ -195149,15 +200076,15 @@ "updateContext": null }, "value": "import", - "start": 646, - "end": 652, + "start": 2096, + "end": 2102, "loc": { "start": { - "line": 10, + "line": 40, "column": 0 }, "end": { - "line": 10, + "line": 40, "column": 6 } } @@ -195174,15 +200101,15 @@ "postfix": false, "binop": null }, - "start": 653, - "end": 654, + "start": 2103, + "end": 2104, "loc": { "start": { - "line": 10, + "line": 40, "column": 7 }, "end": { - "line": 10, + "line": 40, "column": 8 } } @@ -195199,17 +200126,17 @@ "postfix": false, "binop": null }, - "value": "VBOBatchingPointsLayer", - "start": 654, - "end": 676, + "value": "SceneModelTransform", + "start": 2104, + "end": 2123, "loc": { "start": { - "line": 10, + "line": 40, "column": 8 }, "end": { - "line": 10, - "column": 30 + "line": 40, + "column": 27 } } }, @@ -195225,16 +200152,16 @@ "postfix": false, "binop": null }, - "start": 676, - "end": 677, + "start": 2123, + "end": 2124, "loc": { "start": { - "line": 10, - "column": 30 + "line": 40, + "column": 27 }, "end": { - "line": 10, - "column": 31 + "line": 40, + "column": 28 } } }, @@ -195251,16 +200178,16 @@ "binop": null }, "value": "from", - "start": 678, - "end": 682, + "start": 2125, + "end": 2129, "loc": { "start": { - "line": 10, - "column": 32 + "line": 40, + "column": 29 }, "end": { - "line": 10, - "column": 36 + "line": 40, + "column": 33 } } }, @@ -195277,17 +200204,17 @@ "binop": null, "updateContext": null }, - "value": "./vbo/batching/points/VBOBatchingPointsLayer.js", - "start": 683, - "end": 732, + "value": "./SceneModelTransform.js", + "start": 2130, + "end": 2156, "loc": { "start": { - "line": 10, - "column": 37 + "line": 40, + "column": 34 }, "end": { - "line": 10, - "column": 86 + "line": 40, + "column": 60 } } }, @@ -195304,25 +200231,25 @@ "binop": null, "updateContext": null }, - "start": 732, - "end": 733, + "start": 2156, + "end": 2157, "loc": { "start": { - "line": 10, - "column": 86 + "line": 40, + "column": 60 }, "end": { - "line": 10, - "column": 87 + "line": 40, + "column": 61 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -195331,24 +200258,24 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 734, - "end": 740, + "value": "const", + "start": 2160, + "end": 2165, "loc": { "start": { - "line": 11, + "line": 43, "column": 0 }, "end": { - "line": 11, - "column": 6 + "line": 43, + "column": 5 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -195357,50 +200284,52 @@ "postfix": false, "binop": null }, - "start": 741, - "end": 742, + "value": "tempVec3a", + "start": 2166, + "end": 2175, "loc": { "start": { - "line": 11, - "column": 7 + "line": 43, + "column": 6 }, "end": { - "line": 11, - "column": 8 + "line": 43, + "column": 15 } } }, { "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": "VBOInstancingPointsLayer", - "start": 742, - "end": 766, + "value": "=", + "start": 2176, + "end": 2177, "loc": { "start": { - "line": 11, - "column": 8 + "line": 43, + "column": 16 }, "end": { - "line": 11, - "column": 32 + "line": 43, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -195408,48 +200337,49 @@ "postfix": false, "binop": null }, - "start": 766, - "end": 767, + "value": "math", + "start": 2178, + "end": 2182, "loc": { "start": { - "line": 11, - "column": 32 + "line": 43, + "column": 18 }, "end": { - "line": 11, - "column": 33 + "line": 43, + "column": 22 } } }, { "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": "from", - "start": 768, - "end": 772, + "start": 2182, + "end": 2183, "loc": { "start": { - "line": 11, - "column": 34 + "line": 43, + "column": 22 }, "end": { - "line": 11, - "column": 38 + "line": 43, + "column": 23 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -195457,133 +200387,131 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "./vbo/instancing/points/VBOInstancingPointsLayer.js", - "start": 773, - "end": 826, + "value": "vec3", + "start": 2183, + "end": 2187, "loc": { "start": { - "line": 11, - "column": 39 + "line": 43, + "column": 23 }, "end": { - "line": 11, - "column": 92 + "line": 43, + "column": 27 } } }, { "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": 826, - "end": 827, + "start": 2187, + "end": 2188, "loc": { "start": { - "line": 11, - "column": 92 + "line": 43, + "column": 27 }, "end": { - "line": 11, - "column": 93 + "line": 43, + "column": 28 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 828, - "end": 834, + "start": 2188, + "end": 2189, "loc": { "start": { - "line": 12, - "column": 0 + "line": 43, + "column": 28 }, "end": { - "line": 12, - "column": 6 + "line": 43, + "column": 29 } } }, { "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": 835, - "end": 836, + "start": 2189, + "end": 2190, "loc": { "start": { - "line": 12, - "column": 7 + "line": 43, + "column": 29 }, "end": { - "line": 12, - "column": 8 + "line": 43, + "column": 30 } } }, { "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": "DTXLinesLayer", - "start": 836, - "end": 849, + "value": "const", + "start": 2192, + "end": 2197, "loc": { "start": { - "line": 12, - "column": 8 + "line": 45, + "column": 0 }, "end": { - "line": 12, - "column": 21 + "line": 45, + "column": 5 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -195591,48 +200519,50 @@ "postfix": false, "binop": null }, - "start": 849, - "end": 850, + "value": "tempOBB3", + "start": 2198, + "end": 2206, "loc": { "start": { - "line": 12, - "column": 21 + "line": 45, + "column": 6 }, "end": { - "line": 12, - "column": 22 + "line": 45, + "column": 14 } } }, { "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": "from", - "start": 851, - "end": 855, + "value": "=", + "start": 2207, + "end": 2208, "loc": { "start": { - "line": 12, - "column": 23 + "line": 45, + "column": 15 }, "end": { - "line": 12, - "column": 27 + "line": 45, + "column": 16 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -195640,27 +200570,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "./dtx/lines/DTXLinesLayer.js", - "start": 856, - "end": 886, + "value": "math", + "start": 2209, + "end": 2213, "loc": { "start": { - "line": 12, - "column": 28 + "line": 45, + "column": 17 }, "end": { - "line": 12, - "column": 58 + "line": 45, + "column": 21 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -195670,23 +200599,22 @@ "binop": null, "updateContext": null }, - "start": 886, - "end": 887, + "start": 2213, + "end": 2214, "loc": { "start": { - "line": 12, - "column": 58 + "line": 45, + "column": 21 }, "end": { - "line": 12, - "column": 59 + "line": 45, + "column": 22 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -195694,26 +200622,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 888, - "end": 894, + "value": "OBB3", + "start": 2214, + "end": 2218, "loc": { "start": { - "line": 13, - "column": 0 + "line": 45, + "column": 22 }, "end": { - "line": 13, - "column": 6 + "line": 45, + "column": 26 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -195723,24 +200650,24 @@ "postfix": false, "binop": null }, - "start": 895, - "end": 896, + "start": 2218, + "end": 2219, "loc": { "start": { - "line": 13, - "column": 7 + "line": 45, + "column": 26 }, "end": { - "line": 13, - "column": 8 + "line": 45, + "column": 27 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -195748,74 +200675,76 @@ "postfix": false, "binop": null }, - "value": "DTXTrianglesLayer", - "start": 896, - "end": 913, + "start": 2219, + "end": 2220, "loc": { "start": { - "line": 13, - "column": 8 + "line": 45, + "column": 27 }, "end": { - "line": 13, - "column": 25 + "line": 45, + "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": 913, - "end": 914, + "start": 2220, + "end": 2221, "loc": { "start": { - "line": 13, - "column": 25 + "line": 45, + "column": 28 }, "end": { - "line": 13, - "column": 26 + "line": 45, + "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": "from", - "start": 915, - "end": 919, + "value": "const", + "start": 2222, + "end": 2227, "loc": { "start": { - "line": 13, - "column": 27 + "line": 46, + "column": 0 }, "end": { - "line": 13, - "column": 31 + "line": 46, + "column": 5 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -195823,53 +200752,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "./dtx/triangles/DTXTrianglesLayer.js", - "start": 920, - "end": 958, + "value": "tempQuaternion", + "start": 2228, + "end": 2242, "loc": { "start": { - "line": 13, - "column": 32 + "line": 46, + "column": 6 }, "end": { - "line": 13, - "column": 70 + "line": 46, + "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": 958, - "end": 959, + "value": "=", + "start": 2243, + "end": 2244, "loc": { "start": { - "line": 13, - "column": 70 + "line": 46, + "column": 21 }, "end": { - "line": 13, - "column": 71 + "line": 46, + "column": 22 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -195877,45 +200805,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 960, - "end": 966, + "value": "math", + "start": 2245, + "end": 2249, "loc": { "start": { - "line": 14, - "column": 0 + "line": 46, + "column": 23 }, "end": { - "line": 14, - "column": 6 + "line": 46, + "column": 27 } } }, { "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": 967, - "end": 968, + "start": 2249, + "end": 2250, "loc": { "start": { - "line": 14, - "column": 7 + "line": 46, + "column": 27 }, "end": { - "line": 14, - "column": 8 + "line": 46, + "column": 28 } } }, @@ -195931,25 +200859,25 @@ "postfix": false, "binop": null }, - "value": "ENTITY_FLAGS", - "start": 968, - "end": 980, + "value": "vec4", + "start": 2250, + "end": 2254, "loc": { "start": { - "line": 14, - "column": 8 + "line": 46, + "column": 28 }, "end": { - "line": 14, - "column": 20 + "line": 46, + "column": 32 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -195957,24 +200885,24 @@ "postfix": false, "binop": null }, - "start": 980, - "end": 981, + "start": 2254, + "end": 2255, "loc": { "start": { - "line": 14, - "column": 20 + "line": 46, + "column": 32 }, "end": { - "line": 14, - "column": 21 + "line": 46, + "column": 33 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -195982,25 +200910,24 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 982, - "end": 986, + "start": 2255, + "end": 2256, "loc": { "start": { - "line": 14, - "column": 22 + "line": 46, + "column": 33 }, "end": { - "line": 14, - "column": 26 + "line": 46, + "column": 34 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -196009,24 +200936,24 @@ "binop": null, "updateContext": null }, - "value": "./ENTITY_FLAGS.js", - "start": 987, - "end": 1006, + "start": 2256, + "end": 2257, "loc": { "start": { - "line": 14, - "column": 27 + "line": 46, + "column": 34 }, "end": { - "line": 14, - "column": 46 + "line": 46, + "column": 35 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -196036,23 +200963,23 @@ "binop": null, "updateContext": null }, - "start": 1006, - "end": 1007, + "value": "const", + "start": 2259, + "end": 2264, "loc": { "start": { - "line": 14, - "column": 46 + "line": 48, + "column": 0 }, "end": { - "line": 14, - "column": 47 + "line": 48, + "column": 5 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196060,45 +200987,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 1008, - "end": 1014, + "value": "DEFAULT_SCALE", + "start": 2265, + "end": 2278, "loc": { "start": { - "line": 15, - "column": 0 + "line": 48, + "column": 6 }, "end": { - "line": 15, - "column": 6 + "line": 48, + "column": 19 } } }, { "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": 1015, - "end": 1016, + "value": "=", + "start": 2279, + "end": 2280, "loc": { "start": { - "line": 15, - "column": 7 + "line": 48, + "column": 20 }, "end": { - "line": 15, - "column": 8 + "line": 48, + "column": 21 } } }, @@ -196114,23 +201042,23 @@ "postfix": false, "binop": null }, - "value": "RenderFlags", - "start": 1016, - "end": 1027, + "value": "math", + "start": 2281, + "end": 2285, "loc": { "start": { - "line": 15, - "column": 8 + "line": 48, + "column": 22 }, "end": { - "line": 15, - "column": 19 + "line": 48, + "column": 26 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -196138,18 +201066,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 1027, - "end": 1028, + "start": 2285, + "end": 2286, "loc": { "start": { - "line": 15, - "column": 19 + "line": 48, + "column": 26 }, "end": { - "line": 15, - "column": 20 + "line": 48, + "column": 27 } } }, @@ -196165,52 +201094,50 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 1029, - "end": 1033, + "value": "vec3", + "start": 2286, + "end": 2290, "loc": { "start": { - "line": 15, - "column": 21 + "line": 48, + "column": 27 }, "end": { - "line": 15, - "column": 25 + "line": 48, + "column": 31 } } }, { "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": "../webgl/RenderFlags.js", - "start": 1034, - "end": 1059, + "start": 2290, + "end": 2291, "loc": { "start": { - "line": 15, - "column": 26 + "line": 48, + "column": 31 }, "end": { - "line": 15, - "column": 51 + "line": 48, + "column": 32 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -196219,23 +201146,22 @@ "binop": null, "updateContext": null }, - "start": 1059, - "end": 1060, + "start": 2291, + "end": 2292, "loc": { "start": { - "line": 15, - "column": 51 + "line": 48, + "column": 32 }, "end": { - "line": 15, - "column": 52 + "line": 48, + "column": 33 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196246,48 +201172,49 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 1061, - "end": 1067, + "value": 1, + "start": 2292, + "end": 2293, "loc": { "start": { - "line": 16, - "column": 0 + "line": 48, + "column": 33 }, "end": { - "line": 16, - "column": 6 + "line": 48, + "column": 34 } } }, { "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": 1068, - "end": 1069, + "start": 2293, + "end": 2294, "loc": { "start": { - "line": 16, - "column": 7 + "line": 48, + "column": 34 }, "end": { - "line": 16, - "column": 8 + "line": 48, + "column": 35 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196295,50 +201222,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "worldToRTCPositions", - "start": 1069, - "end": 1088, + "value": 1, + "start": 2295, + "end": 2296, "loc": { "start": { - "line": 16, - "column": 8 + "line": 48, + "column": 36 }, "end": { - "line": 16, - "column": 27 + "line": 48, + "column": 37 } } }, { "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": 1088, - "end": 1089, + "start": 2296, + "end": 2297, "loc": { "start": { - "line": 16, - "column": 27 + "line": 48, + "column": 37 }, "end": { - "line": 16, - "column": 28 + "line": 48, + "column": 38 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196346,27 +201275,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "from", - "start": 1090, - "end": 1094, + "value": 1, + "start": 2298, + "end": 2299, "loc": { "start": { - "line": 16, - "column": 29 + "line": 48, + "column": 39 }, "end": { - "line": 16, - "column": 33 + "line": 48, + "column": 40 } } }, { "type": { - "label": "string", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -196375,52 +201305,49 @@ "binop": null, "updateContext": null }, - "value": "../math/rtcCoords.js", - "start": 1095, - "end": 1117, + "start": 2299, + "end": 2300, "loc": { "start": { - "line": 16, - "column": 34 + "line": 48, + "column": 40 }, "end": { - "line": 16, - "column": 56 + "line": 48, + "column": 41 } } }, { "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": 1117, - "end": 1118, + "start": 2300, + "end": 2301, "loc": { "start": { - "line": 16, - "column": 56 + "line": 48, + "column": 41 }, "end": { - "line": 16, - "column": 57 + "line": 48, + "column": 42 } } }, { "type": { - "label": "import", - "keyword": "import", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -196429,42 +201356,44 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 1119, - "end": 1125, + "start": 2301, + "end": 2302, "loc": { "start": { - "line": 17, - "column": 0 + "line": 48, + "column": 42 }, "end": { - "line": 17, - "column": 6 + "line": 48, + "column": 43 } } }, { "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": 1126, - "end": 1127, + "value": "const", + "start": 2303, + "end": 2308, "loc": { "start": { - "line": 17, - "column": 7 + "line": 49, + "column": 0 }, "end": { - "line": 17, - "column": 8 + "line": 49, + "column": 5 } } }, @@ -196480,42 +201409,44 @@ "postfix": false, "binop": null }, - "value": "SceneModelTextureSet", - "start": 1127, - "end": 1147, + "value": "DEFAULT_POSITION", + "start": 2309, + "end": 2325, "loc": { "start": { - "line": 17, - "column": 8 + "line": 49, + "column": 6 }, "end": { - "line": 17, - "column": 28 + "line": 49, + "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 + "binop": null, + "updateContext": null }, - "start": 1147, - "end": 1148, + "value": "=", + "start": 2326, + "end": 2327, "loc": { "start": { - "line": 17, - "column": 28 + "line": 49, + "column": 23 }, "end": { - "line": 17, - "column": 29 + "line": 49, + "column": 24 } } }, @@ -196531,51 +201462,24 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 1149, - "end": 1153, + "value": "math", + "start": 2328, + "end": 2332, "loc": { "start": { - "line": 17, - "column": 30 + "line": 49, + "column": 25 }, "end": { - "line": 17, - "column": 34 + "line": 49, + "column": 29 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "./SceneModelTextureSet.js", - "start": 1154, - "end": 1181, - "loc": { - "start": { - "line": 17, - "column": 35 - }, - "end": { - "line": 17, - "column": 62 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -196585,23 +201489,22 @@ "binop": null, "updateContext": null }, - "start": 1181, - "end": 1182, + "start": 2332, + "end": 2333, "loc": { "start": { - "line": 17, - "column": 62 + "line": 49, + "column": 29 }, "end": { - "line": 17, - "column": 63 + "line": 49, + "column": 30 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196609,26 +201512,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 1183, - "end": 1189, + "value": "vec3", + "start": 2333, + "end": 2337, "loc": { "start": { - "line": 18, - "column": 0 + "line": 49, + "column": 30 }, "end": { - "line": 18, - "column": 6 + "line": 49, + "column": 34 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -196638,99 +201540,101 @@ "postfix": false, "binop": null }, - "start": 1190, - "end": 1191, + "start": 2337, + "end": 2338, "loc": { "start": { - "line": 18, - "column": 7 + "line": 49, + "column": 34 }, "end": { - "line": 18, - "column": 8 + "line": 49, + "column": 35 } } }, { "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": "SceneModelTexture", - "start": 1191, - "end": 1208, + "start": 2338, + "end": 2339, "loc": { "start": { - "line": 18, - "column": 8 + "line": 49, + "column": 35 }, "end": { - "line": 18, - "column": 25 + "line": 49, + "column": 36 } } }, { "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": 1208, - "end": 1209, + "value": 0, + "start": 2339, + "end": 2340, "loc": { "start": { - "line": 18, - "column": 25 + "line": 49, + "column": 36 }, "end": { - "line": 18, - "column": 26 + "line": 49, + "column": 37 } } }, { "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": "from", - "start": 1210, - "end": 1214, + "start": 2340, + "end": 2341, "loc": { "start": { - "line": 18, - "column": 27 + "line": 49, + "column": 37 }, "end": { - "line": 18, - "column": 31 + "line": 49, + "column": 38 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196741,23 +201645,23 @@ "binop": null, "updateContext": null }, - "value": "./SceneModelTexture.js", - "start": 1215, - "end": 1239, + "value": 0, + "start": 2342, + "end": 2343, "loc": { "start": { - "line": 18, - "column": 32 + "line": 49, + "column": 39 }, "end": { - "line": 18, - "column": 56 + "line": 49, + "column": 40 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -196768,23 +201672,22 @@ "binop": null, "updateContext": null }, - "start": 1239, - "end": 1240, + "start": 2343, + "end": 2344, "loc": { "start": { - "line": 18, - "column": 56 + "line": 49, + "column": 40 }, "end": { - "line": 18, - "column": 57 + "line": 49, + "column": 41 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196795,50 +201698,51 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 1241, - "end": 1247, + "value": 0, + "start": 2345, + "end": 2346, "loc": { "start": { - "line": 19, - "column": 0 + "line": 49, + "column": 42 }, "end": { - "line": 19, - "column": 6 + "line": 49, + "column": 43 } } }, { "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": 1248, - "end": 1249, + "start": 2346, + "end": 2347, "loc": { "start": { - "line": 19, - "column": 7 + "line": 49, + "column": 43 }, "end": { - "line": 19, - "column": 8 + "line": 49, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -196846,74 +201750,76 @@ "postfix": false, "binop": null }, - "value": "Texture2D", - "start": 1249, - "end": 1258, + "start": 2347, + "end": 2348, "loc": { "start": { - "line": 19, - "column": 8 + "line": 49, + "column": 44 }, "end": { - "line": 19, - "column": 17 + "line": 49, + "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": 1258, - "end": 1259, + "start": 2348, + "end": 2349, "loc": { "start": { - "line": 19, - "column": 17 + "line": 49, + "column": 45 }, "end": { - "line": 19, - "column": 18 + "line": 49, + "column": 46 } } }, { "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": "from", - "start": 1260, - "end": 1264, + "value": "const", + "start": 2350, + "end": 2355, "loc": { "start": { - "line": 19, - "column": 19 + "line": 50, + "column": 0 }, "end": { - "line": 19, - "column": 23 + "line": 50, + "column": 5 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196921,53 +201827,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "../webgl/Texture2D.js", - "start": 1265, - "end": 1288, + "value": "DEFAULT_ROTATION", + "start": 2356, + "end": 2372, "loc": { "start": { - "line": 19, - "column": 24 + "line": 50, + "column": 6 }, "end": { - "line": 19, - "column": 47 + "line": 50, + "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": 1288, - "end": 1289, + "value": "=", + "start": 2373, + "end": 2374, "loc": { "start": { - "line": 19, - "column": 47 + "line": 50, + "column": 23 }, "end": { - "line": 19, - "column": 48 + "line": 50, + "column": 24 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -196975,45 +201880,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 1290, - "end": 1296, + "value": "math", + "start": 2375, + "end": 2379, "loc": { "start": { - "line": 20, - "column": 0 + "line": 50, + "column": 25 }, "end": { - "line": 20, - "column": 6 + "line": 50, + "column": 29 } } }, { "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": 1297, - "end": 1298, + "start": 2379, + "end": 2380, "loc": { "start": { - "line": 20, - "column": 7 + "line": 50, + "column": 29 }, "end": { - "line": 20, - "column": 8 + "line": 50, + "column": 30 } } }, @@ -197029,25 +201934,25 @@ "postfix": false, "binop": null }, - "value": "utils", - "start": 1298, - "end": 1303, + "value": "vec3", + "start": 2380, + "end": 2384, "loc": { "start": { - "line": 20, - "column": 8 + "line": 50, + "column": 30 }, "end": { - "line": 20, - "column": 13 + "line": 50, + "column": 34 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -197055,48 +201960,48 @@ "postfix": false, "binop": null }, - "start": 1303, - "end": 1304, + "start": 2384, + "end": 2385, "loc": { "start": { - "line": 20, - "column": 13 + "line": 50, + "column": 34 }, "end": { - "line": 20, - "column": 14 + "line": 50, + "column": 35 } } }, { "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": "from", - "start": 1305, - "end": 1309, + "start": 2385, + "end": 2386, "loc": { "start": { - "line": 20, - "column": 15 + "line": 50, + "column": 35 }, "end": { - "line": 20, - "column": 19 + "line": 50, + "column": 36 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -197107,23 +202012,23 @@ "binop": null, "updateContext": null }, - "value": "../utils.js", - "start": 1310, - "end": 1323, + "value": 0, + "start": 2386, + "end": 2387, "loc": { "start": { - "line": 20, - "column": 20 + "line": 50, + "column": 36 }, "end": { - "line": 20, - "column": 33 + "line": 50, + "column": 37 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -197134,23 +202039,22 @@ "binop": null, "updateContext": null }, - "start": 1323, - "end": 1324, + "start": 2387, + "end": 2388, "loc": { "start": { - "line": 20, - "column": 33 + "line": 50, + "column": 37 }, "end": { - "line": 20, - "column": 34 + "line": 50, + "column": 38 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -197161,48 +202065,49 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 1325, - "end": 1331, + "value": 0, + "start": 2389, + "end": 2390, "loc": { "start": { - "line": 21, - "column": 0 + "line": 50, + "column": 39 }, "end": { - "line": 21, - "column": 6 + "line": 50, + "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": 1332, - "end": 1333, + "start": 2390, + "end": 2391, "loc": { "start": { - "line": 21, - "column": 7 + "line": 50, + "column": 40 }, "end": { - "line": 21, - "column": 8 + "line": 50, + "column": 41 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -197210,25 +202115,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "getKTX2TextureTranscoder", - "start": 1333, - "end": 1357, + "value": 0, + "start": 2392, + "end": 2393, "loc": { "start": { - "line": 21, - "column": 8 + "line": 50, + "column": 42 }, "end": { - "line": 21, - "column": 32 + "line": 50, + "column": 43 } } }, { "type": { - "label": "}", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -197236,26 +202142,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 1357, - "end": 1358, + "start": 2393, + "end": 2394, "loc": { "start": { - "line": 21, - "column": 32 + "line": 50, + "column": 43 }, "end": { - "line": 21, - "column": 33 + "line": 50, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -197263,25 +202170,24 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 1359, - "end": 1363, + "start": 2394, + "end": 2395, "loc": { "start": { - "line": 21, - "column": 34 + "line": 50, + "column": 44 }, "end": { - "line": 21, - "column": 38 + "line": 50, + "column": 45 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -197290,24 +202196,24 @@ "binop": null, "updateContext": null }, - "value": "../utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", - "start": 1364, - "end": 1440, + "start": 2395, + "end": 2396, "loc": { "start": { - "line": 21, - "column": 39 + "line": 50, + "column": 45 }, "end": { - "line": 21, - "column": 115 + "line": 50, + "column": 46 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -197317,23 +202223,23 @@ "binop": null, "updateContext": null }, - "start": 1440, - "end": 1441, + "value": "const", + "start": 2397, + "end": 2402, "loc": { "start": { - "line": 21, - "column": 115 + "line": 51, + "column": 0 }, "end": { - "line": 21, - "column": 116 + "line": 51, + "column": 5 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -197341,45 +202247,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 1442, - "end": 1448, + "value": "DEFAULT_QUATERNION", + "start": 2403, + "end": 2421, "loc": { "start": { - "line": 22, - "column": 0 + "line": 51, + "column": 6 }, "end": { - "line": 22, - "column": 6 + "line": 51, + "column": 24 } } }, { "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": 1449, - "end": 1450, + "value": "=", + "start": 2422, + "end": 2423, "loc": { "start": { - "line": 22, - "column": 7 + "line": 51, + "column": 25 }, "end": { - "line": 22, - "column": 8 + "line": 51, + "column": 26 } } }, @@ -197395,24 +202302,24 @@ "postfix": false, "binop": null }, - "value": "ClampToEdgeWrapping", - "start": 1455, - "end": 1474, + "value": "math", + "start": 2424, + "end": 2428, "loc": { "start": { - "line": 23, - "column": 4 + "line": 51, + "column": 27 }, "end": { - "line": 23, - "column": 23 + "line": 51, + "column": 31 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -197422,16 +202329,16 @@ "binop": null, "updateContext": null }, - "start": 1474, - "end": 1475, + "start": 2428, + "end": 2429, "loc": { "start": { - "line": 23, - "column": 23 + "line": 51, + "column": 31 }, "end": { - "line": 23, - "column": 24 + "line": 51, + "column": 32 } } }, @@ -197447,51 +202354,50 @@ "postfix": false, "binop": null }, - "value": "LinearEncoding", - "start": 1480, - "end": 1494, + "value": "identityQuaternion", + "start": 2429, + "end": 2447, "loc": { "start": { - "line": 24, - "column": 4 + "line": 51, + "column": 32 }, "end": { - "line": 24, - "column": 18 + "line": 51, + "column": 50 } } }, { "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": 1494, - "end": 1495, + "start": 2447, + "end": 2448, "loc": { "start": { - "line": 24, - "column": 18 + "line": 51, + "column": 50 }, "end": { - "line": 24, - "column": 19 + "line": 51, + "column": 51 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -197499,23 +202405,22 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 1500, - "end": 1512, + "start": 2448, + "end": 2449, "loc": { "start": { - "line": 25, - "column": 4 + "line": 51, + "column": 51 }, "end": { - "line": 25, - "column": 16 + "line": 51, + "column": 52 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -197526,49 +202431,24 @@ "binop": null, "updateContext": null }, - "start": 1512, - "end": 1513, + "start": 2449, + "end": 2450, "loc": { "start": { - "line": 25, - "column": 16 + "line": 51, + "column": 52 }, "end": { - "line": 25, - "column": 17 + "line": 51, + "column": 53 } } }, { "type": { - "label": "name", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "LinearMipmapLinearFilter", - "start": 1518, - "end": 1542, - "loc": { - "start": { - "line": 26, - "column": 4 - }, - "end": { - "line": 26, - "column": 28 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -197578,16 +202458,17 @@ "binop": null, "updateContext": null }, - "start": 1542, - "end": 1543, + "value": "const", + "start": 2451, + "end": 2456, "loc": { "start": { - "line": 26, - "column": 28 + "line": 52, + "column": 0 }, "end": { - "line": 26, - "column": 29 + "line": 52, + "column": 5 } } }, @@ -197603,43 +202484,44 @@ "postfix": false, "binop": null }, - "value": "LinearMipMapNearestFilter", - "start": 1548, - "end": 1573, + "value": "DEFAULT_MATRIX", + "start": 2457, + "end": 2471, "loc": { "start": { - "line": 27, - "column": 4 + "line": 52, + "column": 6 }, "end": { - "line": 27, - "column": 29 + "line": 52, + "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": 1573, - "end": 1574, + "value": "=", + "start": 2472, + "end": 2473, "loc": { "start": { - "line": 27, - "column": 29 + "line": 52, + "column": 21 }, "end": { - "line": 27, - "column": 30 + "line": 52, + "column": 22 } } }, @@ -197655,24 +202537,24 @@ "postfix": false, "binop": null }, - "value": "MirroredRepeatWrapping", - "start": 1579, - "end": 1601, + "value": "math", + "start": 2474, + "end": 2478, "loc": { "start": { - "line": 28, - "column": 4 + "line": 52, + "column": 23 }, "end": { - "line": 28, - "column": 26 + "line": 52, + "column": 27 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -197682,16 +202564,16 @@ "binop": null, "updateContext": null }, - "start": 1601, - "end": 1602, + "start": 2478, + "end": 2479, "loc": { "start": { - "line": 28, - "column": 26 + "line": 52, + "column": 27 }, "end": { - "line": 28, - "column": 27 + "line": 52, + "column": 28 } } }, @@ -197707,51 +202589,50 @@ "postfix": false, "binop": null }, - "value": "NearestFilter", - "start": 1607, - "end": 1620, + "value": "identityMat4", + "start": 2479, + "end": 2491, "loc": { "start": { - "line": 29, - "column": 4 + "line": 52, + "column": 28 }, "end": { - "line": 29, - "column": 17 + "line": 52, + "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": 1620, - "end": 1621, + "start": 2491, + "end": 2492, "loc": { "start": { - "line": 29, - "column": 17 + "line": 52, + "column": 40 }, "end": { - "line": 29, - "column": 18 + "line": 52, + "column": 41 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -197759,23 +202640,22 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapLinearFilter", - "start": 1626, - "end": 1651, + "start": 2492, + "end": 2493, "loc": { "start": { - "line": 30, - "column": 4 + "line": 52, + "column": 41 }, "end": { - "line": 30, - "column": 29 + "line": 52, + "column": 42 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -197786,16 +202666,44 @@ "binop": null, "updateContext": null }, - "start": 1651, - "end": 1652, + "start": 2493, + "end": 2494, "loc": { "start": { - "line": 30, - "column": 29 + "line": 52, + "column": 42 }, "end": { - "line": 30, - "column": 30 + "line": 52, + "column": 43 + } + } + }, + { + "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": 2496, + "end": 2501, + "loc": { + "start": { + "line": 54, + "column": 0 + }, + "end": { + "line": 54, + "column": 5 } } }, @@ -197811,49 +202719,50 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapNearestFilter", - "start": 1657, - "end": 1683, + "value": "DEFAULT_COLOR_TEXTURE_ID", + "start": 2502, + "end": 2526, "loc": { "start": { - "line": 31, - "column": 4 + "line": 54, + "column": 6 }, "end": { - "line": 31, + "line": 54, "column": 30 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 1683, - "end": 1684, + "value": "=", + "start": 2527, + "end": 2528, "loc": { "start": { - "line": 31, - "column": 30 + "line": 54, + "column": 31 }, "end": { - "line": 31, - "column": 31 + "line": 54, + "column": 32 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -197861,25 +202770,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "RepeatWrapping", - "start": 1689, - "end": 1703, + "value": "defaultColorTexture", + "start": 2529, + "end": 2550, "loc": { "start": { - "line": 32, - "column": 4 + "line": 54, + "column": 33 }, "end": { - "line": 32, - "column": 18 + "line": 54, + "column": 54 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -197890,50 +202800,52 @@ "binop": null, "updateContext": null }, - "start": 1703, - "end": 1704, + "start": 2550, + "end": 2551, "loc": { "start": { - "line": 32, - "column": 18 + "line": 54, + "column": 54 }, "end": { - "line": 32, - "column": 19 + "line": 54, + "column": 55 } } }, { "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": "sRGBEncoding", - "start": 1709, - "end": 1721, + "value": "const", + "start": 2552, + "end": 2557, "loc": { "start": { - "line": 33, - "column": 4 + "line": 55, + "column": 0 }, "end": { - "line": 33, - "column": 16 + "line": 55, + "column": 5 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -197941,42 +202853,44 @@ "postfix": false, "binop": null }, - "start": 1722, - "end": 1723, + "value": "DEFAULT_METAL_ROUGH_TEXTURE_ID", + "start": 2558, + "end": 2588, "loc": { "start": { - "line": 34, - "column": 0 + "line": 55, + "column": 6 }, "end": { - "line": 34, - "column": 1 + "line": 55, + "column": 36 } } }, { "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": "from", - "start": 1724, - "end": 1728, + "value": "=", + "start": 2589, + "end": 2590, "loc": { "start": { - "line": 34, - "column": 2 + "line": 55, + "column": 37 }, "end": { - "line": 34, - "column": 6 + "line": 55, + "column": 38 } } }, @@ -197993,17 +202907,17 @@ "binop": null, "updateContext": null }, - "value": "../constants/constants.js", - "start": 1729, - "end": 1756, + "value": "defaultMetalRoughTexture", + "start": 2591, + "end": 2617, "loc": { "start": { - "line": 34, - "column": 7 + "line": 55, + "column": 39 }, "end": { - "line": 34, - "column": 34 + "line": 55, + "column": 65 } } }, @@ -198020,25 +202934,25 @@ "binop": null, "updateContext": null }, - "start": 1756, - "end": 1757, + "start": 2617, + "end": 2618, "loc": { "start": { - "line": 34, - "column": 34 + "line": 55, + "column": 65 }, "end": { - "line": 34, - "column": 35 + "line": 55, + "column": 66 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -198047,24 +202961,24 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 1758, - "end": 1764, + "value": "const", + "start": 2619, + "end": 2624, "loc": { "start": { - "line": 35, + "line": 56, "column": 0 }, "end": { - "line": 35, - "column": 6 + "line": 56, + "column": 5 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -198073,50 +202987,52 @@ "postfix": false, "binop": null }, - "start": 1765, - "end": 1766, + "value": "DEFAULT_NORMALS_TEXTURE_ID", + "start": 2625, + "end": 2651, "loc": { "start": { - "line": 35, - "column": 7 + "line": 56, + "column": 6 }, "end": { - "line": 35, - "column": 8 + "line": 56, + "column": 32 } } }, { "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": "createPositionsDecodeMatrix", - "start": 1766, - "end": 1793, + "value": "=", + "start": 2652, + "end": 2653, "loc": { "start": { - "line": 35, - "column": 8 + "line": 56, + "column": 33 }, "end": { - "line": 35, - "column": 35 + "line": 56, + "column": 34 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -198125,48 +203041,50 @@ "binop": null, "updateContext": null }, - "start": 1793, - "end": 1794, + "value": "defaultNormalsTexture", + "start": 2654, + "end": 2677, "loc": { "start": { - "line": 35, + "line": 56, "column": 35 }, "end": { - "line": 35, - "column": 36 + "line": 56, + "column": 58 } } }, { "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": "quantizePositions", - "start": 1795, - "end": 1812, + "start": 2677, + "end": 2678, "loc": { "start": { - "line": 35, - "column": 37 + "line": 56, + "column": 58 }, "end": { - "line": 35, - "column": 54 + "line": 56, + "column": 59 } } }, { "type": { - "label": "}", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -198174,18 +203092,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 1812, - "end": 1813, + "value": "const", + "start": 2679, + "end": 2684, "loc": { "start": { - "line": 35, - "column": 54 + "line": 57, + "column": 0 }, "end": { - "line": 35, - "column": 55 + "line": 57, + "column": 5 } } }, @@ -198201,52 +203121,52 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 1814, - "end": 1818, + "value": "DEFAULT_EMISSIVE_TEXTURE_ID", + "start": 2685, + "end": 2712, "loc": { "start": { - "line": 35, - "column": 56 + "line": 57, + "column": 6 }, "end": { - "line": 35, - "column": 60 + "line": 57, + "column": 33 } } }, { "type": { - "label": "string", - "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": "./compression.js", - "start": 1819, - "end": 1837, + "value": "=", + "start": 2713, + "end": 2714, "loc": { "start": { - "line": 35, - "column": 61 + "line": 57, + "column": 34 }, "end": { - "line": 35, - "column": 79 + "line": 57, + "column": 35 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -198255,25 +203175,25 @@ "binop": null, "updateContext": null }, - "start": 1837, - "end": 1838, + "value": "defaultEmissiveTexture", + "start": 2715, + "end": 2739, "loc": { "start": { - "line": 35, - "column": 79 + "line": 57, + "column": 36 }, "end": { - "line": 35, - "column": 80 + "line": 57, + "column": 60 } } }, { "type": { - "label": "import", - "keyword": "import", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -198282,42 +203202,44 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 1839, - "end": 1845, + "start": 2739, + "end": 2740, "loc": { "start": { - "line": 36, - "column": 0 + "line": 57, + "column": 60 }, "end": { - "line": 36, - "column": 6 + "line": 57, + "column": 61 } } }, { "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": 1846, - "end": 1847, + "value": "const", + "start": 2741, + "end": 2746, "loc": { "start": { - "line": 36, - "column": 7 + "line": 58, + "column": 0 }, "end": { - "line": 36, - "column": 8 + "line": 58, + "column": 5 } } }, @@ -198333,48 +203255,50 @@ "postfix": false, "binop": null }, - "value": "uniquifyPositions", - "start": 1847, - "end": 1864, + "value": "DEFAULT_OCCLUSION_TEXTURE_ID", + "start": 2747, + "end": 2775, "loc": { "start": { - "line": 36, - "column": 8 + "line": 58, + "column": 6 }, "end": { - "line": 36, - "column": 25 + "line": 58, + "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 + "binop": null, + "updateContext": null }, - "start": 1864, - "end": 1865, + "value": "=", + "start": 2776, + "end": 2777, "loc": { "start": { - "line": 36, - "column": 25 + "line": 58, + "column": 35 }, "end": { - "line": 36, - "column": 26 + "line": 58, + "column": 36 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -198382,27 +203306,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "from", - "start": 1866, - "end": 1870, + "value": "defaultOcclusionTexture", + "start": 2778, + "end": 2803, "loc": { "start": { - "line": 36, - "column": 27 + "line": 58, + "column": 37 }, "end": { - "line": 36, - "column": 31 + "line": 58, + "column": 62 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -198411,24 +203336,24 @@ "binop": null, "updateContext": null }, - "value": "./calculateUniquePositions.js", - "start": 1871, - "end": 1902, + "start": 2803, + "end": 2804, "loc": { "start": { - "line": 36, - "column": 32 + "line": 58, + "column": 62 }, "end": { - "line": 36, + "line": 58, "column": 63 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -198438,23 +203363,23 @@ "binop": null, "updateContext": null }, - "start": 1902, - "end": 1903, + "value": "const", + "start": 2805, + "end": 2810, "loc": { "start": { - "line": 36, - "column": 63 + "line": 59, + "column": 0 }, "end": { - "line": 36, - "column": 64 + "line": 59, + "column": 5 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -198462,77 +203387,106 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "DEFAULT_TEXTURE_SET_ID", + "start": 2811, + "end": 2833, + "loc": { + "start": { + "line": 59, + "column": 6 + }, + "end": { + "line": 59, + "column": 28 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": "import", - "start": 1904, - "end": 1910, + "value": "=", + "start": 2834, + "end": 2835, "loc": { "start": { - "line": 37, - "column": 0 + "line": 59, + "column": 29 }, "end": { - "line": 37, - "column": 6 + "line": 59, + "column": 30 } } }, { "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": 1911, - "end": 1912, + "value": "defaultTextureSet", + "start": 2836, + "end": 2855, "loc": { "start": { - "line": 37, - "column": 7 + "line": 59, + "column": 31 }, "end": { - "line": 37, - "column": 8 + "line": 59, + "column": 50 } } }, { "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": "rebucketPositions", - "start": 1912, - "end": 1929, + "start": 2855, + "end": 2856, "loc": { "start": { - "line": 37, - "column": 8 + "line": 59, + "column": 50 }, "end": { - "line": 37, - "column": 25 + "line": 59, + "column": 51 } } }, { "type": { - "label": "}", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -198540,18 +203494,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 1929, - "end": 1930, + "value": "const", + "start": 2858, + "end": 2863, "loc": { "start": { - "line": 37, - "column": 25 + "line": 61, + "column": 0 }, "end": { - "line": 37, - "column": 26 + "line": 61, + "column": 5 } } }, @@ -198567,52 +203523,53 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 1931, - "end": 1935, + "value": "defaultCompressedColor", + "start": 2864, + "end": 2886, "loc": { "start": { - "line": 37, - "column": 27 + "line": 61, + "column": 6 }, "end": { - "line": 37, - "column": 31 + "line": 61, + "column": 28 } } }, { "type": { - "label": "string", - "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": "./rebucketPositions.js", - "start": 1936, - "end": 1960, + "value": "=", + "start": 2887, + "end": 2888, "loc": { "start": { - "line": 37, - "column": 32 + "line": 61, + "column": 29 }, "end": { - "line": 37, - "column": 56 + "line": 61, + "column": 30 } } }, { "type": { - "label": ";", + "label": "new", + "keyword": "new", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -198621,23 +203578,23 @@ "binop": null, "updateContext": null }, - "start": 1960, - "end": 1961, + "value": "new", + "start": 2889, + "end": 2892, "loc": { "start": { - "line": 37, - "column": 56 + "line": 61, + "column": 31 }, "end": { - "line": 37, - "column": 57 + "line": 61, + "column": 34 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -198645,26 +203602,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 1962, - "end": 1968, + "value": "Uint8Array", + "start": 2893, + "end": 2903, "loc": { "start": { - "line": 38, - "column": 0 + "line": 61, + "column": 35 }, "end": { - "line": 38, - "column": 6 + "line": 61, + "column": 45 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -198674,99 +203630,101 @@ "postfix": false, "binop": null }, - "start": 1969, - "end": 1970, + "start": 2903, + "end": 2904, "loc": { "start": { - "line": 38, - "column": 7 + "line": 61, + "column": 45 }, "end": { - "line": 38, - "column": 8 + "line": 61, + "column": 46 } } }, { "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": "SceneModelEntity", - "start": 1970, - "end": 1986, + "start": 2904, + "end": 2905, "loc": { "start": { - "line": 38, - "column": 8 + "line": 61, + "column": 46 }, "end": { - "line": 38, - "column": 24 + "line": 61, + "column": 47 } } }, { "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": 1986, - "end": 1987, + "value": 255, + "start": 2905, + "end": 2908, "loc": { "start": { - "line": 38, - "column": 24 + "line": 61, + "column": 47 }, "end": { - "line": 38, - "column": 25 + "line": 61, + "column": 50 } } }, { "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": "from", - "start": 1988, - "end": 1992, + "start": 2908, + "end": 2909, "loc": { "start": { - "line": 38, - "column": 26 + "line": 61, + "column": 50 }, "end": { - "line": 38, - "column": 30 + "line": 61, + "column": 51 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -198777,23 +203735,23 @@ "binop": null, "updateContext": null }, - "value": "./SceneModelEntity.js", - "start": 1993, - "end": 2016, + "value": 255, + "start": 2910, + "end": 2913, "loc": { "start": { - "line": 38, - "column": 31 + "line": 61, + "column": 52 }, "end": { - "line": 38, - "column": 54 + "line": 61, + "column": 55 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -198804,23 +203762,22 @@ "binop": null, "updateContext": null }, - "start": 2016, - "end": 2017, + "start": 2913, + "end": 2914, "loc": { "start": { - "line": 38, - "column": 54 + "line": 61, + "column": 55 }, "end": { - "line": 38, - "column": 55 + "line": 61, + "column": 56 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -198831,50 +203788,51 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 2018, - "end": 2024, + "value": 255, + "start": 2915, + "end": 2918, "loc": { "start": { - "line": 39, - "column": 0 + "line": 61, + "column": 57 }, "end": { - "line": 39, - "column": 6 + "line": 61, + "column": 60 } } }, { "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": 2025, - "end": 2026, + "start": 2918, + "end": 2919, "loc": { "start": { - "line": 39, - "column": 7 + "line": 61, + "column": 60 }, "end": { - "line": 39, - "column": 8 + "line": 61, + "column": 61 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -198882,74 +203840,76 @@ "postfix": false, "binop": null }, - "value": "geometryCompressionUtils", - "start": 2026, - "end": 2050, + "start": 2919, + "end": 2920, "loc": { "start": { - "line": 39, - "column": 8 + "line": 61, + "column": 61 }, "end": { - "line": 39, - "column": 32 + "line": 61, + "column": 62 } } }, { "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": 2050, - "end": 2051, + "start": 2920, + "end": 2921, "loc": { "start": { - "line": 39, - "column": 32 + "line": 61, + "column": 62 }, "end": { - "line": 39, - "column": 33 + "line": 61, + "column": 63 } } }, { "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": "from", - "start": 2052, - "end": 2056, + "value": "const", + "start": 2923, + "end": 2928, "loc": { "start": { - "line": 39, - "column": 34 + "line": 63, + "column": 0 }, "end": { - "line": 39, - "column": 38 + "line": 63, + "column": 5 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -198957,53 +203917,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "../math/geometryCompressionUtils.js", - "start": 2057, - "end": 2094, + "value": "VBO_INSTANCED", + "start": 2929, + "end": 2942, "loc": { "start": { - "line": 39, - "column": 39 + "line": 63, + "column": 6 }, "end": { - "line": 39, - "column": 76 + "line": 63, + "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": 2094, - "end": 2095, + "value": "=", + "start": 2943, + "end": 2944, "loc": { "start": { - "line": 39, - "column": 76 + "line": 63, + "column": 20 }, "end": { - "line": 39, - "column": 77 + "line": 63, + "column": 21 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -199014,76 +203973,79 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 2096, - "end": 2102, + "value": 0, + "start": 2945, + "end": 2946, "loc": { "start": { - "line": 40, - "column": 0 + "line": 63, + "column": 22 }, "end": { - "line": 40, - "column": 6 + "line": 63, + "column": 23 } } }, { "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": 2103, - "end": 2104, + "start": 2946, + "end": 2947, "loc": { "start": { - "line": 40, - "column": 7 + "line": 63, + "column": 23 }, "end": { - "line": 40, - "column": 8 + "line": 63, + "column": 24 } } }, { "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": "SceneModelTransform", - "start": 2104, - "end": 2123, + "value": "const", + "start": 2948, + "end": 2953, "loc": { "start": { - "line": 40, - "column": 8 + "line": 64, + "column": 0 }, "end": { - "line": 40, - "column": 27 + "line": 64, + "column": 5 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -199091,48 +204053,50 @@ "postfix": false, "binop": null }, - "start": 2123, - "end": 2124, + "value": "VBO_BATCHED", + "start": 2954, + "end": 2965, "loc": { "start": { - "line": 40, - "column": 27 + "line": 64, + "column": 6 }, "end": { - "line": 40, - "column": 28 + "line": 64, + "column": 17 } } }, { "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": "from", - "start": 2125, - "end": 2129, + "value": "=", + "start": 2966, + "end": 2967, "loc": { "start": { - "line": 40, - "column": 29 + "line": 64, + "column": 18 }, "end": { - "line": 40, - "column": 33 + "line": 64, + "column": 19 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -199143,17 +204107,17 @@ "binop": null, "updateContext": null }, - "value": "./SceneModelTransform.js", - "start": 2130, - "end": 2156, + "value": 1, + "start": 2968, + "end": 2969, "loc": { "start": { - "line": 40, - "column": 34 + "line": 64, + "column": 20 }, "end": { - "line": 40, - "column": 60 + "line": 64, + "column": 21 } } }, @@ -199170,16 +204134,16 @@ "binop": null, "updateContext": null }, - "start": 2156, - "end": 2157, + "start": 2969, + "end": 2970, "loc": { "start": { - "line": 40, - "column": 60 + "line": 64, + "column": 21 }, "end": { - "line": 40, - "column": 61 + "line": 64, + "column": 22 } } }, @@ -199198,15 +204162,15 @@ "updateContext": null }, "value": "const", - "start": 2160, - "end": 2165, + "start": 2971, + "end": 2976, "loc": { "start": { - "line": 43, + "line": 65, "column": 0 }, "end": { - "line": 43, + "line": 65, "column": 5 } } @@ -199223,17 +204187,17 @@ "postfix": false, "binop": null }, - "value": "tempVec3a", - "start": 2166, - "end": 2175, + "value": "DTX", + "start": 2977, + "end": 2980, "loc": { "start": { - "line": 43, + "line": 65, "column": 6 }, "end": { - "line": 43, - "column": 15 + "line": 65, + "column": 9 } } }, @@ -199251,22 +204215,22 @@ "updateContext": null }, "value": "=", - "start": 2176, - "end": 2177, + "start": 2981, + "end": 2982, "loc": { "start": { - "line": 43, - "column": 16 + "line": 65, + "column": 10 }, "end": { - "line": 43, - "column": 17 + "line": 65, + "column": 11 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -199274,26 +204238,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 2178, - "end": 2182, + "value": 2, + "start": 2983, + "end": 2984, "loc": { "start": { - "line": 43, - "column": 18 + "line": 65, + "column": 12 }, "end": { - "line": 43, - "column": 22 + "line": 65, + "column": 13 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -199303,75 +204268,96 @@ "binop": null, "updateContext": null }, - "start": 2182, - "end": 2183, + "start": 2984, + "end": 2985, "loc": { "start": { - "line": 43, - "column": 22 + "line": 65, + "column": 13 }, "end": { - "line": 43, - "column": 23 + "line": 65, + "column": 14 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * Internally, SceneModel uses a combination of several different techniques to render and represent\n * the different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\n * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\n * serve to demonstrate how to use the capabilities of SceneModel programmatically.\n *\n * * [Loading building models into SceneModels](/examples/buildings)\n * * [Loading city models into SceneModels](/examples/cities)\n * * [Loading LiDAR scans into SceneModels](/examples/lidar)\n * * [Loading CAD models into SceneModels](/examples/cad)\n * * [SceneModel feature tests](/examples/scenemodel)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [SceneModel](#DataTextureSceneModel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates-for-double-precision)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## SceneModel\n *\n * ````SceneModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
\n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````SceneModel```` is an {@link Entity} that represents a model.\n * * A ````SceneModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````SceneModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a SceneModel representing a table\n * // with four legs, using geometry instancing\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the SceneModel\n * // We'll instance this geometry by five meshes\n *\n * sceneModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a SceneModel\n *\n * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````SceneModel````.\n *\n * Once finalized, we can't add anything more to our ````SceneModel````.\n *\n * ```` javascript\n * SceneModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````SceneModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````SceneModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a SceneModel representing a table with four legs, using geometry batching\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the SceneModel.\n *\n * SceneModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````SceneModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````SceneModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for Double Precision\n *\n * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## Positioning at World-space coordinates\n *\n * To position a SceneModel at given double-precision World coordinates, we can\n * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n * 3D World-space position at which the SceneModel will be located.\n *\n * Note that ````position```` is a single-precision offset relative to ````origin````.\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true,\n * origin: origin, // Everything in this SceneModel is relative to this RTC center\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * # Textures\n *\n * ## Loading KTX2 Texture Files into a SceneModel\n *\n * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\n * allow us to load textures into it from KTX2 buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\n * transcoder WASM module.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n *\n * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * });\n * ````\n *\n * @implements {Entity}\n ", + "start": 2987, + "end": 38805, + "loc": { + "start": { + "line": 67, + "column": 0 + }, + "end": { + "line": 1081, + "column": 3 } } }, { "type": { - "label": "name", + "label": "export", + "keyword": "export", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "vec3", - "start": 2183, - "end": 2187, + "value": "export", + "start": 38806, + "end": 38812, "loc": { "start": { - "line": 43, - "column": 23 + "line": 1082, + "column": 0 }, "end": { - "line": 43, - "column": 27 + "line": 1082, + "column": 6 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "class", + "keyword": "class", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2187, - "end": 2188, + "value": "class", + "start": 38813, + "end": 38818, "loc": { "start": { - "line": 43, - "column": 27 + "line": 1082, + "column": 7 }, "end": { - "line": 43, - "column": 28 + "line": 1082, + "column": 12 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -199379,22 +204365,24 @@ "postfix": false, "binop": null }, - "start": 2188, - "end": 2189, + "value": "SceneModel", + "start": 38819, + "end": 38829, "loc": { "start": { - "line": 43, - "column": 28 + "line": 1082, + "column": 13 }, "end": { - "line": 43, - "column": 29 + "line": 1082, + "column": 23 } } }, { "type": { - "label": ";", + "label": "extends", + "keyword": "extends", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -199405,44 +204393,84 @@ "binop": null, "updateContext": null }, - "start": 2189, - "end": 2190, + "value": "extends", + "start": 38830, + "end": 38837, "loc": { "start": { - "line": 43, - "column": 29 + "line": 1082, + "column": 24 }, "end": { - "line": 43, - "column": 30 + "line": 1082, + "column": 31 } } }, { "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": 2192, - "end": 2197, + "value": "Component", + "start": 38838, + "end": 38847, "loc": { "start": { - "line": 45, - "column": 0 + "line": 1082, + "column": 32 }, "end": { - "line": 45, - "column": 5 + "line": 1082, + "column": 41 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 38848, + "end": 38849, + "loc": { + "start": { + "line": 1082, + "column": 42 + }, + "end": { + "line": 1082, + "column": 43 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this SceneModel represents a model, in which case the SceneModel will be registered by {@link SceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Number[]} [cfg.origin=[0,0,0]] World-space double-precision 3D origin.\n * @param {Number[]} [cfg.position=[0,0,0]] Local, single-precision 3D position, relative to the origin parameter.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModel is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModel is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModel is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModel is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModel is initially included in boundary calculations.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModel is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModel is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModel is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModel's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] SceneModel's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] SceneModel's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this SceneModel. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. SAO is configured by the Scene's {@link SAO} component.\n * @param {Boolean} [cfg.pbrEnabled=true] Indicates if physically-based rendering (PBR) will apply to the SceneModel when {@link Scene#pbrEnabled} is ````true````.\n * @param {Boolean} [cfg.colorTextureEnabled=true] Indicates if base color textures will be rendered for the SceneModel when {@link Scene#colorTextureEnabled} is ````true````.\n * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that SceneModel internally creates for batched geometries.\n * A lower value means less heap allocation/de-allocation while creating/loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while creating/loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n * @param {TextureTranscoder} [cfg.textureTranscoder] Transcoder that will be used internally by {@link SceneModel#createTexture}\n * to convert transcoded texture data. Only required when we'll be providing transcoded data\n * to {@link SceneModel#createTexture}. We assume that all transcoded texture data added to a ````SceneModel````\n * will then in a format supported by this transcoder.\n * @param {Boolean} [cfg.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n ", + "start": 38855, + "end": 43886, + "loc": { + "start": { + "line": 1084, + "column": 4 + }, + "end": { + "line": 1126, + "column": 7 } } }, @@ -199458,43 +204486,41 @@ "postfix": false, "binop": null }, - "value": "tempOBB3", - "start": 2198, - "end": 2206, + "value": "constructor", + "start": 43891, + "end": 43902, "loc": { "start": { - "line": 45, - "column": 6 + "line": 1127, + "column": 4 }, "end": { - "line": 45, - "column": 14 + "line": 1127, + "column": 15 } } }, { "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": 2207, - "end": 2208, + "start": 43902, + "end": 43903, "loc": { "start": { - "line": 45, + "line": 1127, "column": 15 }, "end": { - "line": 45, + "line": 1127, "column": 16 } } @@ -199511,24 +204537,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 2209, - "end": 2213, + "value": "owner", + "start": 43903, + "end": 43908, "loc": { "start": { - "line": 45, - "column": 17 + "line": 1127, + "column": 16 }, "end": { - "line": 45, + "line": 1127, "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -199538,15 +204564,15 @@ "binop": null, "updateContext": null }, - "start": 2213, - "end": 2214, + "start": 43908, + "end": 43909, "loc": { "start": { - "line": 45, + "line": 1127, "column": 21 }, "end": { - "line": 45, + "line": 1127, "column": 22 } } @@ -199563,23 +204589,50 @@ "postfix": false, "binop": null }, - "value": "OBB3", - "start": 2214, - "end": 2218, + "value": "cfg", + "start": 43910, + "end": 43913, "loc": { "start": { - "line": 45, - "column": 22 + "line": 1127, + "column": 23 }, "end": { - "line": 45, + "line": 1127, "column": 26 } } }, { "type": { - "label": "(", + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 43914, + "end": 43915, + "loc": { + "start": { + "line": 1127, + "column": 27 + }, + "end": { + "line": 1127, + "column": 28 + } + } + }, + { + "type": { + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -199589,22 +204642,22 @@ "postfix": false, "binop": null }, - "start": 2218, - "end": 2219, + "start": 43916, + "end": 43917, "loc": { "start": { - "line": 45, - "column": 26 + "line": 1127, + "column": 29 }, "end": { - "line": 45, - "column": 27 + "line": 1127, + "column": 30 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -199614,76 +204667,73 @@ "postfix": false, "binop": null }, - "start": 2219, - "end": 2220, + "start": 43917, + "end": 43918, "loc": { "start": { - "line": 45, - "column": 27 + "line": 1127, + "column": 30 }, "end": { - "line": 45, - "column": 28 + "line": 1127, + "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": 2220, - "end": 2221, + "start": 43918, + "end": 43919, "loc": { "start": { - "line": 45, - "column": 28 + "line": 1127, + "column": 31 }, "end": { - "line": 45, - "column": 29 + "line": 1127, + "column": 32 } } }, { "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": 2223, - "end": 2228, + "start": 43920, + "end": 43921, "loc": { "start": { - "line": 47, - "column": 0 + "line": 1127, + "column": 33 }, "end": { - "line": 47, - "column": 5 + "line": 1127, + "column": 34 } } }, { "type": { - "label": "name", + "label": "super", + "keyword": "super", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -199691,46 +204741,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "DEFAULT_SCALE", - "start": 2229, - "end": 2242, + "value": "super", + "start": 43931, + "end": 43936, "loc": { "start": { - "line": 47, - "column": 6 + "line": 1129, + "column": 8 }, "end": { - "line": 47, - "column": 19 + "line": 1129, + "column": 13 } } }, { "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": 2243, - "end": 2244, + "start": 43936, + "end": 43937, "loc": { "start": { - "line": 47, - "column": 20 + "line": 1129, + "column": 13 }, "end": { - "line": 47, - "column": 21 + "line": 1129, + "column": 14 } } }, @@ -199746,24 +204795,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 2245, - "end": 2249, + "value": "owner", + "start": 43937, + "end": 43942, "loc": { "start": { - "line": 47, - "column": 22 + "line": 1129, + "column": 14 }, "end": { - "line": 47, - "column": 26 + "line": 1129, + "column": 19 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -199773,16 +204822,16 @@ "binop": null, "updateContext": null }, - "start": 2249, - "end": 2250, + "start": 43942, + "end": 43943, "loc": { "start": { - "line": 47, - "column": 26 + "line": 1129, + "column": 19 }, "end": { - "line": 47, - "column": 27 + "line": 1129, + "column": 20 } } }, @@ -199798,25 +204847,25 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 2250, - "end": 2254, + "value": "cfg", + "start": 43944, + "end": 43947, "loc": { "start": { - "line": 47, - "column": 27 + "line": 1129, + "column": 21 }, "end": { - "line": 47, - "column": 31 + "line": 1129, + "column": 24 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -199824,24 +204873,24 @@ "postfix": false, "binop": null }, - "start": 2254, - "end": 2255, + "start": 43947, + "end": 43948, "loc": { "start": { - "line": 47, - "column": 31 + "line": 1129, + "column": 24 }, "end": { - "line": 47, - "column": 32 + "line": 1129, + "column": 25 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -199850,22 +204899,23 @@ "binop": null, "updateContext": null }, - "start": 2255, - "end": 2256, + "start": 43948, + "end": 43949, "loc": { "start": { - "line": 47, - "column": 32 + "line": 1129, + "column": 25 }, "end": { - "line": 47, - "column": 33 + "line": 1129, + "column": 26 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -199876,24 +204926,24 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 2256, - "end": 2257, + "value": "this", + "start": 43959, + "end": 43963, "loc": { "start": { - "line": 47, - "column": 33 + "line": 1131, + "column": 8 }, "end": { - "line": 47, - "column": 34 + "line": 1131, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -199903,22 +204953,22 @@ "binop": null, "updateContext": null }, - "start": 2257, - "end": 2258, + "start": 43963, + "end": 43964, "loc": { "start": { - "line": 47, - "column": 34 + "line": 1131, + "column": 12 }, "end": { - "line": 47, - "column": 35 + "line": 1131, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -199926,52 +204976,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 2259, - "end": 2260, + "value": "_dtxEnabled", + "start": 43964, + "end": 43975, "loc": { "start": { - "line": 47, - "column": 36 + "line": 1131, + "column": 13 }, "end": { - "line": 47, - "column": 37 + "line": 1131, + "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": 2260, - "end": 2261, + "value": "=", + "start": 43976, + "end": 43977, "loc": { "start": { - "line": 47, - "column": 37 + "line": 1131, + "column": 25 }, "end": { - "line": 47, - "column": 38 + "line": 1131, + "column": 26 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -199982,23 +205033,23 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 2262, - "end": 2263, + "value": "this", + "start": 43978, + "end": 43982, "loc": { "start": { - "line": 47, - "column": 39 + "line": 1131, + "column": 27 }, "end": { - "line": 47, - "column": 40 + "line": 1131, + "column": 31 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -200009,24 +205060,24 @@ "binop": null, "updateContext": null }, - "start": 2263, - "end": 2264, + "start": 43982, + "end": 43983, "loc": { "start": { - "line": 47, - "column": 40 + "line": 1131, + "column": 31 }, "end": { - "line": 47, - "column": 41 + "line": 1131, + "column": 32 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -200034,23 +205085,24 @@ "postfix": false, "binop": null }, - "start": 2264, - "end": 2265, + "value": "scene", + "start": 43983, + "end": 43988, "loc": { "start": { - "line": 47, - "column": 41 + "line": 1131, + "column": 32 }, "end": { - "line": 47, - "column": 42 + "line": 1131, + "column": 37 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -200060,97 +205112,94 @@ "binop": null, "updateContext": null }, - "start": 2265, - "end": 2266, + "start": 43988, + "end": 43989, "loc": { "start": { - "line": 47, - "column": 42 + "line": 1131, + "column": 37 }, "end": { - "line": 47, - "column": 43 + "line": 1131, + "column": 38 } } }, { "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": 2267, - "end": 2272, + "value": "dtxEnabled", + "start": 43989, + "end": 43999, "loc": { "start": { - "line": 48, - "column": 0 + "line": 1131, + "column": 38 }, "end": { - "line": 48, - "column": 5 + "line": 1131, + "column": 48 } } }, { "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": 2, + "updateContext": null }, - "value": "DEFAULT_POSITION", - "start": 2273, - "end": 2289, + "value": "&&", + "start": 44000, + "end": 44002, "loc": { "start": { - "line": 48, - "column": 6 + "line": 1131, + "column": 49 }, "end": { - "line": 48, - "column": 22 + "line": 1131, + "column": 51 } } }, { "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": 2290, - "end": 2291, + "start": 44003, + "end": 44004, "loc": { "start": { - "line": 48, - "column": 23 + "line": 1131, + "column": 52 }, "end": { - "line": 48, - "column": 24 + "line": 1131, + "column": 53 } } }, @@ -200166,17 +205215,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 2292, - "end": 2296, + "value": "cfg", + "start": 44004, + "end": 44007, "loc": { "start": { - "line": 48, - "column": 25 + "line": 1131, + "column": 53 }, "end": { - "line": 48, - "column": 29 + "line": 1131, + "column": 56 } } }, @@ -200193,16 +205242,16 @@ "binop": null, "updateContext": null }, - "start": 2296, - "end": 2297, + "start": 44007, + "end": 44008, "loc": { "start": { - "line": 48, - "column": 29 + "line": 1131, + "column": 56 }, "end": { - "line": 48, - "column": 30 + "line": 1131, + "column": 57 } } }, @@ -200218,49 +205267,52 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 2297, - "end": 2301, + "value": "dtxEnabled", + "start": 44008, + "end": 44018, "loc": { "start": { - "line": 48, - "column": 30 + "line": 1131, + "column": 57 }, "end": { - "line": 48, - "column": 34 + "line": 1131, + "column": 67 } } }, { "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": 2301, - "end": 2302, + "value": "!==", + "start": 44019, + "end": 44022, "loc": { "start": { - "line": 48, - "column": 34 + "line": 1131, + "column": 68 }, "end": { - "line": 48, - "column": 35 + "line": 1131, + "column": 71 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "false", + "keyword": "false", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -200270,49 +205322,48 @@ "binop": null, "updateContext": null }, - "start": 2302, - "end": 2303, + "value": "false", + "start": 44023, + "end": 44028, "loc": { "start": { - "line": 48, - "column": 35 + "line": 1131, + "column": 72 }, "end": { - "line": 48, - "column": 36 + "line": 1131, + "column": 77 } } }, { "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": 2303, - "end": 2304, + "start": 44028, + "end": 44029, "loc": { "start": { - "line": 48, - "column": 36 + "line": 1131, + "column": 77 }, "end": { - "line": 48, - "column": 37 + "line": 1131, + "column": 78 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -200323,22 +205374,23 @@ "binop": null, "updateContext": null }, - "start": 2304, - "end": 2305, + "start": 44029, + "end": 44030, "loc": { "start": { - "line": 48, - "column": 37 + "line": 1131, + "column": 78 }, "end": { - "line": 48, - "column": 38 + "line": 1131, + "column": 79 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -200349,24 +205401,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 2306, - "end": 2307, + "value": "this", + "start": 44040, + "end": 44044, "loc": { "start": { - "line": 48, - "column": 39 + "line": 1133, + "column": 8 }, "end": { - "line": 48, - "column": 40 + "line": 1133, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -200376,22 +205428,22 @@ "binop": null, "updateContext": null }, - "start": 2307, - "end": 2308, + "start": 44044, + "end": 44045, "loc": { "start": { - "line": 48, - "column": 40 + "line": 1133, + "column": 12 }, "end": { - "line": 48, - "column": 41 + "line": 1133, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -200399,71 +205451,74 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 2309, - "end": 2310, + "value": "_enableVertexWelding", + "start": 44045, + "end": 44065, "loc": { "start": { - "line": 48, - "column": 42 + "line": 1133, + "column": 13 }, "end": { - "line": 48, - "column": 43 + "line": 1133, + "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": 2310, - "end": 2311, + "value": "=", + "start": 44066, + "end": 44067, "loc": { "start": { - "line": 48, - "column": 43 + "line": 1133, + "column": 34 }, "end": { - "line": 48, - "column": 44 + "line": 1133, + "column": 35 } } }, { "type": { - "label": ")", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2311, - "end": 2312, + "value": "false", + "start": 44068, + "end": 44073, "loc": { "start": { - "line": 48, - "column": 44 + "line": 1133, + "column": 36 }, "end": { - "line": 48, - "column": 45 + "line": 1133, + "column": 41 } } }, @@ -200480,50 +205535,39 @@ "binop": null, "updateContext": null }, - "start": 2312, - "end": 2313, + "start": 44073, + "end": 44074, "loc": { "start": { - "line": 48, - "column": 45 + "line": 1133, + "column": 41 }, "end": { - "line": 48, - "column": 46 + "line": 1133, + "column": 42 } } }, { - "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": 2314, - "end": 2319, + "type": "CommentLine", + "value": " Not needed for most objects, and very expensive, so disabled", + "start": 44075, + "end": 44138, "loc": { "start": { - "line": 49, - "column": 0 + "line": 1133, + "column": 43 }, "end": { - "line": 49, - "column": 5 + "line": 1133, + "column": 106 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -200531,46 +205575,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "DEFAULT_ROTATION", - "start": 2320, - "end": 2336, + "value": "this", + "start": 44147, + "end": 44151, "loc": { "start": { - "line": 49, - "column": 6 + "line": 1134, + "column": 8 }, "end": { - "line": 49, - "column": 22 + "line": 1134, + "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": 2337, - "end": 2338, + "start": 44151, + "end": 44152, "loc": { "start": { - "line": 49, - "column": 23 + "line": 1134, + "column": 12 }, "end": { - "line": 49, - "column": 24 + "line": 1134, + "column": 13 } } }, @@ -200586,49 +205630,51 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 2339, - "end": 2343, + "value": "_enableIndexBucketing", + "start": 44152, + "end": 44173, "loc": { "start": { - "line": 49, - "column": 25 + "line": 1134, + "column": 13 }, "end": { - "line": 49, - "column": 29 + "line": 1134, + "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": 2343, - "end": 2344, + "value": "=", + "start": 44174, + "end": 44175, "loc": { "start": { - "line": 49, - "column": 29 + "line": 1134, + "column": 35 }, "end": { - "line": 49, - "column": 30 + "line": 1134, + "column": 36 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -200636,51 +205682,70 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "vec3", - "start": 2344, - "end": 2348, + "value": "false", + "start": 44176, + "end": 44181, "loc": { "start": { - "line": 49, - "column": 30 + "line": 1134, + "column": 37 }, "end": { - "line": 49, - "column": 34 + "line": 1134, + "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": 2348, - "end": 2349, + "start": 44181, + "end": 44182, "loc": { "start": { - "line": 49, - "column": 34 + "line": 1134, + "column": 42 }, "end": { - "line": 49, - "column": 35 + "line": 1134, + "column": 43 + } + } + }, + { + "type": "CommentLine", + "value": " Until fixed: https://github.com/xeokit/xeokit-sdk/issues/1204", + "start": 44183, + "end": 44247, + "loc": { + "start": { + "line": 1134, + "column": 44 + }, + "end": { + "line": 1134, + "column": 108 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -200690,24 +205755,25 @@ "binop": null, "updateContext": null }, - "start": 2349, - "end": 2350, + "value": "this", + "start": 44257, + "end": 44261, "loc": { "start": { - "line": 49, - "column": 35 + "line": 1136, + "column": 8 }, "end": { - "line": 49, - "column": 36 + "line": 1136, + "column": 12 } } }, { "type": { - "label": "num", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -200716,129 +205782,126 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 2350, - "end": 2351, + "start": 44261, + "end": 44262, "loc": { "start": { - "line": 49, - "column": 36 + "line": 1136, + "column": 12 }, "end": { - "line": 49, - "column": 37 + "line": 1136, + "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": 2351, - "end": 2352, + "value": "_vboBatchingLayerScratchMemory", + "start": 44262, + "end": 44292, "loc": { "start": { - "line": 49, - "column": 37 + "line": 1136, + "column": 13 }, "end": { - "line": 49, - "column": 38 + "line": 1136, + "column": 43 } } }, { "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": 0, - "start": 2353, - "end": 2354, + "value": "=", + "start": 44293, + "end": 44294, "loc": { "start": { - "line": 49, - "column": 39 + "line": 1136, + "column": 44 }, "end": { - "line": 49, - "column": 40 + "line": 1136, + "column": 45 } } }, { "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": 2354, - "end": 2355, + "value": "getScratchMemory", + "start": 44295, + "end": 44311, "loc": { "start": { - "line": 49, - "column": 40 + "line": 1136, + "column": 46 }, "end": { - "line": 49, - "column": 41 + "line": 1136, + "column": 62 } } }, { "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": 2356, - "end": 2357, + "start": 44311, + "end": 44312, "loc": { "start": { - "line": 49, - "column": 42 + "line": 1136, + "column": 62 }, "end": { - "line": 49, - "column": 43 + "line": 1136, + "column": 63 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -200846,52 +205909,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2357, - "end": 2358, + "start": 44312, + "end": 44313, "loc": { "start": { - "line": 49, - "column": 43 + "line": 1136, + "column": 63 }, "end": { - "line": 49, - "column": 44 + "line": 1136, + "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": 2358, - "end": 2359, + "start": 44313, + "end": 44314, "loc": { "start": { - "line": 49, - "column": 44 + "line": 1136, + "column": 64 }, "end": { - "line": 49, - "column": 45 + "line": 1136, + "column": 65 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -200900,23 +205964,23 @@ "binop": null, "updateContext": null }, - "start": 2359, - "end": 2360, + "value": "this", + "start": 44323, + "end": 44327, "loc": { "start": { - "line": 49, - "column": 45 + "line": 1137, + "column": 8 }, "end": { - "line": 49, - "column": 46 + "line": 1137, + "column": 12 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -200927,17 +205991,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2361, - "end": 2366, + "start": 44327, + "end": 44328, "loc": { "start": { - "line": 50, - "column": 0 + "line": 1137, + "column": 12 }, "end": { - "line": 50, - "column": 5 + "line": 1137, + "column": 13 } } }, @@ -200953,17 +206016,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_QUATERNION", - "start": 2367, - "end": 2385, + "value": "_textureTranscoder", + "start": 44328, + "end": 44346, "loc": { "start": { - "line": 50, - "column": 6 + "line": 1137, + "column": 13 }, "end": { - "line": 50, - "column": 24 + "line": 1137, + "column": 31 } } }, @@ -200981,16 +206044,16 @@ "updateContext": null }, "value": "=", - "start": 2386, - "end": 2387, + "start": 44347, + "end": 44348, "loc": { "start": { - "line": 50, - "column": 25 + "line": 1137, + "column": 32 }, "end": { - "line": 50, - "column": 26 + "line": 1137, + "column": 33 } } }, @@ -201006,17 +206069,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 2388, - "end": 2392, + "value": "cfg", + "start": 44349, + "end": 44352, "loc": { "start": { - "line": 50, - "column": 27 + "line": 1137, + "column": 34 }, "end": { - "line": 50, - "column": 31 + "line": 1137, + "column": 37 } } }, @@ -201033,16 +206096,16 @@ "binop": null, "updateContext": null }, - "start": 2392, - "end": 2393, + "start": 44352, + "end": 44353, "loc": { "start": { - "line": 50, - "column": 31 + "line": 1137, + "column": 37 }, "end": { - "line": 50, - "column": 32 + "line": 1137, + "column": 38 } } }, @@ -201058,50 +206121,52 @@ "postfix": false, "binop": null }, - "value": "identityQuaternion", - "start": 2393, - "end": 2411, + "value": "textureTranscoder", + "start": 44353, + "end": 44370, "loc": { "start": { - "line": 50, - "column": 32 + "line": 1137, + "column": 38 }, "end": { - "line": 50, - "column": 50 + "line": 1137, + "column": 55 } } }, { "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": 2411, - "end": 2412, + "value": "||", + "start": 44371, + "end": 44373, "loc": { "start": { - "line": 50, - "column": 50 + "line": 1137, + "column": 56 }, "end": { - "line": 50, - "column": 51 + "line": 1137, + "column": 58 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -201109,51 +206174,51 @@ "postfix": false, "binop": null }, - "start": 2412, - "end": 2413, + "value": "getKTX2TextureTranscoder", + "start": 44374, + "end": 44398, "loc": { "start": { - "line": 50, - "column": 51 + "line": 1137, + "column": 59 }, "end": { - "line": 50, - "column": 52 + "line": 1137, + "column": 83 } } }, { "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": 2413, - "end": 2414, + "start": 44398, + "end": 44399, "loc": { "start": { - "line": 50, - "column": 52 + "line": 1137, + "column": 83 }, "end": { - "line": 50, - "column": 53 + "line": 1137, + "column": 84 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -201162,70 +206227,43 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2415, - "end": 2420, + "value": "this", + "start": 44399, + "end": 44403, "loc": { "start": { - "line": 51, - "column": 0 + "line": 1137, + "column": 84 }, "end": { - "line": 51, - "column": 5 + "line": 1137, + "column": 88 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "DEFAULT_MATRIX", - "start": 2421, - "end": 2435, - "loc": { - "start": { - "line": 51, - "column": 6 - }, - "end": { - "line": 51, - "column": 20 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 2436, - "end": 2437, + "start": 44403, + "end": 44404, "loc": { "start": { - "line": 51, - "column": 21 + "line": 1137, + "column": 88 }, "end": { - "line": 51, - "column": 22 + "line": 1137, + "column": 89 } } }, @@ -201241,17 +206279,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 2438, - "end": 2442, + "value": "scene", + "start": 44404, + "end": 44409, "loc": { "start": { - "line": 51, - "column": 23 + "line": 1137, + "column": 89 }, "end": { - "line": 51, - "column": 27 + "line": 1137, + "column": 94 } } }, @@ -201268,16 +206306,16 @@ "binop": null, "updateContext": null }, - "start": 2442, - "end": 2443, + "start": 44409, + "end": 44410, "loc": { "start": { - "line": 51, - "column": 27 + "line": 1137, + "column": 94 }, "end": { - "line": 51, - "column": 28 + "line": 1137, + "column": 95 } } }, @@ -201293,25 +206331,25 @@ "postfix": false, "binop": null }, - "value": "identityMat4", - "start": 2443, - "end": 2455, + "value": "viewer", + "start": 44410, + "end": 44416, "loc": { "start": { - "line": 51, - "column": 28 + "line": 1137, + "column": 95 }, "end": { - "line": 51, - "column": 40 + "line": 1137, + "column": 101 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -201319,49 +206357,51 @@ "postfix": false, "binop": null }, - "start": 2455, - "end": 2456, + "start": 44416, + "end": 44417, "loc": { "start": { - "line": 51, - "column": 40 + "line": 1137, + "column": 101 }, "end": { - "line": 51, - "column": 41 + "line": 1137, + "column": 102 } } }, { "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": 2456, - "end": 2457, + "start": 44417, + "end": 44418, "loc": { "start": { - "line": 51, - "column": 41 + "line": 1137, + "column": 102 }, "end": { - "line": 51, - "column": 42 + "line": 1137, + "column": 103 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -201370,23 +206410,23 @@ "binop": null, "updateContext": null }, - "start": 2457, - "end": 2458, + "value": "this", + "start": 44428, + "end": 44432, "loc": { "start": { - "line": 51, - "column": 42 + "line": 1139, + "column": 8 }, "end": { - "line": 51, - "column": 43 + "line": 1139, + "column": 12 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -201397,17 +206437,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2460, - "end": 2465, + "start": 44432, + "end": 44433, "loc": { "start": { - "line": 53, - "column": 0 + "line": 1139, + "column": 12 }, "end": { - "line": 53, - "column": 5 + "line": 1139, + "column": 13 } } }, @@ -201423,17 +206462,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_COLOR_TEXTURE_ID", - "start": 2466, - "end": 2490, + "value": "_maxGeometryBatchSize", + "start": 44433, + "end": 44454, "loc": { "start": { - "line": 53, - "column": 6 + "line": 1139, + "column": 13 }, "end": { - "line": 53, - "column": 30 + "line": 1139, + "column": 34 } } }, @@ -201451,22 +206490,22 @@ "updateContext": null }, "value": "=", - "start": 2491, - "end": 2492, + "start": 44455, + "end": 44456, "loc": { "start": { - "line": 53, - "column": 31 + "line": 1139, + "column": 35 }, "end": { - "line": 53, - "column": 32 + "line": 1139, + "column": 36 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -201474,53 +206513,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "defaultColorTexture", - "start": 2493, - "end": 2514, - "loc": { - "start": { - "line": 53, - "column": 33 - }, - "end": { - "line": 53, - "column": 54 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2514, - "end": 2515, + "value": "cfg", + "start": 44457, + "end": 44460, "loc": { "start": { - "line": 53, - "column": 54 + "line": 1139, + "column": 37 }, "end": { - "line": 53, - "column": 55 + "line": 1139, + "column": 40 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -201531,17 +206542,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2516, - "end": 2521, + "start": 44460, + "end": 44461, "loc": { "start": { - "line": 54, - "column": 0 + "line": 1139, + "column": 40 }, "end": { - "line": 54, - "column": 5 + "line": 1139, + "column": 41 } } }, @@ -201557,50 +206567,50 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_METAL_ROUGH_TEXTURE_ID", - "start": 2522, - "end": 2552, + "value": "maxGeometryBatchSize", + "start": 44461, + "end": 44481, "loc": { "start": { - "line": 54, - "column": 6 + "line": 1139, + "column": 41 }, "end": { - "line": 54, - "column": 36 + "line": 1139, + "column": 61 } } }, { "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": 2553, - "end": 2554, + "start": 44481, + "end": 44482, "loc": { "start": { - "line": 54, - "column": 37 + "line": 1139, + "column": 61 }, "end": { - "line": 54, - "column": 38 + "line": 1139, + "column": 62 } } }, { "type": { - "label": "string", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -201611,50 +206621,23 @@ "binop": null, "updateContext": null }, - "value": "defaultMetalRoughTexture", - "start": 2555, - "end": 2581, - "loc": { - "start": { - "line": 54, - "column": 39 - }, - "end": { - "line": 54, - "column": 65 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 2581, - "end": 2582, + "value": "this", + "start": 44492, + "end": 44496, "loc": { "start": { - "line": 54, - "column": 65 + "line": 1141, + "column": 8 }, "end": { - "line": 54, - "column": 66 + "line": 1141, + "column": 12 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -201665,17 +206648,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2583, - "end": 2588, + "start": 44496, + "end": 44497, "loc": { "start": { - "line": 55, - "column": 0 + "line": 1141, + "column": 12 }, "end": { - "line": 55, - "column": 5 + "line": 1141, + "column": 13 } } }, @@ -201691,17 +206673,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_NORMALS_TEXTURE_ID", - "start": 2589, - "end": 2615, + "value": "_aabb", + "start": 44497, + "end": 44502, "loc": { "start": { - "line": 55, - "column": 6 + "line": 1141, + "column": 13 }, "end": { - "line": 55, - "column": 32 + "line": 1141, + "column": 18 } } }, @@ -201719,22 +206701,22 @@ "updateContext": null }, "value": "=", - "start": 2616, - "end": 2617, + "start": 44503, + "end": 44504, "loc": { "start": { - "line": 55, - "column": 33 + "line": 1141, + "column": 19 }, "end": { - "line": 55, - "column": 34 + "line": 1141, + "column": 20 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -201742,27 +206724,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "defaultNormalsTexture", - "start": 2618, - "end": 2641, + "value": "math", + "start": 44505, + "end": 44509, "loc": { "start": { - "line": 55, - "column": 35 + "line": 1141, + "column": 21 }, "end": { - "line": 55, - "column": 58 + "line": 1141, + "column": 25 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -201772,51 +206753,49 @@ "binop": null, "updateContext": null }, - "start": 2641, - "end": 2642, + "start": 44509, + "end": 44510, "loc": { "start": { - "line": 55, - "column": 58 + "line": 1141, + "column": 25 }, "end": { - "line": 55, - "column": 59 + "line": 1141, + "column": 26 } } }, { "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": 2643, - "end": 2648, + "value": "collapseAABB3", + "start": 44510, + "end": 44523, "loc": { "start": { - "line": 56, - "column": 0 + "line": 1141, + "column": 26 }, "end": { - "line": 56, - "column": 5 + "line": 1141, + "column": 39 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -201825,52 +206804,49 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_EMISSIVE_TEXTURE_ID", - "start": 2649, - "end": 2676, + "start": 44523, + "end": 44524, "loc": { "start": { - "line": 56, - "column": 6 + "line": 1141, + "column": 39 }, "end": { - "line": 56, - "column": 33 + "line": 1141, + "column": 40 } } }, { "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": 2677, - "end": 2678, + "start": 44524, + "end": 44525, "loc": { "start": { - "line": 56, - "column": 34 + "line": 1141, + "column": 40 }, "end": { - "line": 56, - "column": 35 + "line": 1141, + "column": 41 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -201879,25 +206855,25 @@ "binop": null, "updateContext": null }, - "value": "defaultEmissiveTexture", - "start": 2679, - "end": 2703, + "start": 44525, + "end": 44526, "loc": { "start": { - "line": 56, - "column": 36 + "line": 1141, + "column": 41 }, "end": { - "line": 56, - "column": 60 + "line": 1141, + "column": 42 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -201906,23 +206882,23 @@ "binop": null, "updateContext": null }, - "start": 2703, - "end": 2704, + "value": "this", + "start": 44535, + "end": 44539, "loc": { "start": { - "line": 56, - "column": 60 + "line": 1142, + "column": 8 }, "end": { - "line": 56, - "column": 61 + "line": 1142, + "column": 12 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -201933,17 +206909,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2705, - "end": 2710, + "start": 44539, + "end": 44540, "loc": { "start": { - "line": 57, - "column": 0 + "line": 1142, + "column": 12 }, "end": { - "line": 57, - "column": 5 + "line": 1142, + "column": 13 } } }, @@ -201959,17 +206934,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_OCCLUSION_TEXTURE_ID", - "start": 2711, - "end": 2739, + "value": "_aabbDirty", + "start": 44540, + "end": 44550, "loc": { "start": { - "line": 57, - "column": 6 + "line": 1142, + "column": 13 }, "end": { - "line": 57, - "column": 34 + "line": 1142, + "column": 23 } } }, @@ -201987,22 +206962,23 @@ "updateContext": null }, "value": "=", - "start": 2740, - "end": 2741, + "start": 44551, + "end": 44552, "loc": { "start": { - "line": 57, - "column": 35 + "line": 1142, + "column": 24 }, "end": { - "line": 57, - "column": 36 + "line": 1142, + "column": 25 } } }, { "type": { - "label": "string", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -202013,17 +206989,17 @@ "binop": null, "updateContext": null }, - "value": "defaultOcclusionTexture", - "start": 2742, - "end": 2767, + "value": "true", + "start": 44553, + "end": 44557, "loc": { "start": { - "line": 57, - "column": 37 + "line": 1142, + "column": 26 }, "end": { - "line": 57, - "column": 62 + "line": 1142, + "column": 30 } } }, @@ -202040,25 +207016,25 @@ "binop": null, "updateContext": null }, - "start": 2767, - "end": 2768, + "start": 44557, + "end": 44558, "loc": { "start": { - "line": 57, - "column": 62 + "line": 1142, + "column": 30 }, "end": { - "line": 57, - "column": 63 + "line": 1142, + "column": 31 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -202067,130 +207043,127 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2769, - "end": 2774, + "value": "this", + "start": 44568, + "end": 44572, "loc": { "start": { - "line": 58, - "column": 0 + "line": 1144, + "column": 8 }, "end": { - "line": 58, - "column": 5 + "line": 1144, + "column": 12 } } }, { "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": "DEFAULT_TEXTURE_SET_ID", - "start": 2775, - "end": 2797, + "start": 44572, + "end": 44573, "loc": { "start": { - "line": 58, - "column": 6 + "line": 1144, + "column": 12 }, "end": { - "line": 58, - "column": 28 + "line": 1144, + "column": 13 } } }, { "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": 2798, - "end": 2799, + "value": "_quantizationRanges", + "start": 44573, + "end": 44592, "loc": { "start": { - "line": 58, - "column": 29 + "line": 1144, + "column": 13 }, "end": { - "line": 58, - "column": 30 + "line": 1144, + "column": 32 } } }, { "type": { - "label": "string", - "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": "defaultTextureSet", - "start": 2800, - "end": 2819, + "value": "=", + "start": 44593, + "end": 44594, "loc": { "start": { - "line": 58, - "column": 31 + "line": 1144, + "column": 33 }, "end": { - "line": 58, - "column": 50 + "line": 1144, + "column": 34 } } }, { "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": 2819, - "end": 2820, + "start": 44595, + "end": 44596, "loc": { "start": { - "line": 58, - "column": 50 + "line": 1144, + "column": 35 }, "end": { - "line": 58, - "column": 51 + "line": 1144, + "column": 36 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -202198,82 +207171,80 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 2822, - "end": 2827, + "start": 44596, + "end": 44597, "loc": { "start": { - "line": 60, - "column": 0 + "line": 1144, + "column": 36 }, "end": { - "line": 60, - "column": 5 + "line": 1144, + "column": 37 } } }, { "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": "defaultCompressedColor", - "start": 2828, - "end": 2850, + "start": 44597, + "end": 44598, "loc": { "start": { - "line": 60, - "column": 6 + "line": 1144, + "column": 37 }, "end": { - "line": 60, - "column": 28 + "line": 1144, + "column": 38 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 2851, - "end": 2852, + "value": "this", + "start": 44608, + "end": 44612, "loc": { "start": { - "line": 60, - "column": 29 + "line": 1146, + "column": 8 }, "end": { - "line": 60, - "column": 30 + "line": 1146, + "column": 12 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -202282,17 +207253,16 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 2853, - "end": 2856, + "start": 44612, + "end": 44613, "loc": { "start": { - "line": 60, - "column": 31 + "line": 1146, + "column": 12 }, "end": { - "line": 60, - "column": 34 + "line": 1146, + "column": 13 } } }, @@ -202308,48 +207278,50 @@ "postfix": false, "binop": null }, - "value": "Uint8Array", - "start": 2857, - "end": 2867, + "value": "_vboInstancingLayers", + "start": 44613, + "end": 44633, "loc": { "start": { - "line": 60, - "column": 35 + "line": 1146, + "column": 13 }, "end": { - "line": 60, - "column": 45 + "line": 1146, + "column": 33 } } }, { "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": 2867, - "end": 2868, + "value": "=", + "start": 44634, + "end": 44635, "loc": { "start": { - "line": 60, - "column": 45 + "line": 1146, + "column": 34 }, "end": { - "line": 60, - "column": 46 + "line": 1146, + "column": 35 } } }, { "type": { - "label": "[", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -202357,52 +207329,49 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2868, - "end": 2869, + "start": 44636, + "end": 44637, "loc": { "start": { - "line": 60, - "column": 46 + "line": 1146, + "column": 36 }, "end": { - "line": 60, - "column": 47 + "line": 1146, + "column": 37 } } }, { "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": 255, - "start": 2869, - "end": 2872, + "start": 44637, + "end": 44638, "loc": { "start": { - "line": 60, - "column": 47 + "line": 1146, + "column": 37 }, "end": { - "line": 60, - "column": 50 + "line": 1146, + "column": 38 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -202413,22 +207382,23 @@ "binop": null, "updateContext": null }, - "start": 2872, - "end": 2873, + "start": 44638, + "end": 44639, "loc": { "start": { - "line": 60, - "column": 50 + "line": 1146, + "column": 38 }, "end": { - "line": 60, - "column": 51 + "line": 1146, + "column": 39 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -202439,24 +207409,24 @@ "binop": null, "updateContext": null }, - "value": 255, - "start": 2874, - "end": 2877, + "value": "this", + "start": 44648, + "end": 44652, "loc": { "start": { - "line": 60, - "column": 52 + "line": 1147, + "column": 8 }, "end": { - "line": 60, - "column": 55 + "line": 1147, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -202466,22 +207436,22 @@ "binop": null, "updateContext": null }, - "start": 2877, - "end": 2878, + "start": 44652, + "end": 44653, "loc": { "start": { - "line": 60, - "column": 55 + "line": 1147, + "column": 12 }, "end": { - "line": 60, - "column": 56 + "line": 1147, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -202489,54 +207459,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 2879, - "end": 2882, + "value": "_vboBatchingLayers", + "start": 44653, + "end": 44671, "loc": { "start": { - "line": 60, - "column": 57 + "line": 1147, + "column": 13 }, "end": { - "line": 60, - "column": 60 + "line": 1147, + "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, "updateContext": null }, - "start": 2882, - "end": 2883, + "value": "=", + "start": 44672, + "end": 44673, "loc": { "start": { - "line": 60, - "column": 60 + "line": 1147, + "column": 32 }, "end": { - "line": 60, - "column": 61 + "line": 1147, + "column": 33 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -202544,50 +207514,48 @@ "postfix": false, "binop": null }, - "start": 2883, - "end": 2884, + "start": 44674, + "end": 44675, "loc": { "start": { - "line": 60, - "column": 61 + "line": 1147, + "column": 34 }, "end": { - "line": 60, - "column": 62 + "line": 1147, + "column": 35 } } }, { "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": 2884, - "end": 2885, + "start": 44675, + "end": 44676, "loc": { "start": { - "line": 60, - "column": 62 + "line": 1147, + "column": 35 }, "end": { - "line": 60, - "column": 63 + "line": 1147, + "column": 36 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -202597,23 +207565,23 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2887, - "end": 2892, + "start": 44676, + "end": 44677, "loc": { "start": { - "line": 62, - "column": 0 + "line": 1147, + "column": 36 }, "end": { - "line": 62, - "column": 5 + "line": 1147, + "column": 37 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -202621,52 +207589,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "VBO_INSTANCED", - "start": 2893, - "end": 2906, + "value": "this", + "start": 44686, + "end": 44690, "loc": { "start": { - "line": 62, - "column": 6 + "line": 1148, + "column": 8 }, "end": { - "line": 62, - "column": 19 + "line": 1148, + "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": 2907, - "end": 2908, + "start": 44690, + "end": 44691, "loc": { "start": { - "line": 62, - "column": 20 + "line": 1148, + "column": 12 }, "end": { - "line": 62, - "column": 21 + "line": 1148, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -202674,82 +207642,79 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 2909, - "end": 2910, + "value": "_dtxLayers", + "start": 44691, + "end": 44701, "loc": { "start": { - "line": 62, - "column": 22 + "line": 1148, + "column": 13 }, "end": { - "line": 62, + "line": 1148, "column": 23 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 2910, - "end": 2911, + "value": "=", + "start": 44702, + "end": 44703, "loc": { "start": { - "line": 62, - "column": 23 + "line": 1148, + "column": 24 }, "end": { - "line": 62, - "column": 24 + "line": 1148, + "column": 25 } } }, { "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": 2912, - "end": 2917, + "start": 44704, + "end": 44705, "loc": { "start": { - "line": 63, - "column": 0 + "line": 1148, + "column": 26 }, "end": { - "line": 63, - "column": 5 + "line": 1148, + "column": 27 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -202757,50 +207722,49 @@ "postfix": false, "binop": null }, - "value": "VBO_BATCHED", - "start": 2918, - "end": 2929, + "start": 44705, + "end": 44706, "loc": { "start": { - "line": 63, - "column": 6 + "line": 1148, + "column": 27 }, "end": { - "line": 63, - "column": 17 + "line": 1148, + "column": 28 } } }, { "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": 2930, - "end": 2931, + "start": 44706, + "end": 44707, "loc": { "start": { - "line": 63, - "column": 18 + "line": 1148, + "column": 28 }, "end": { - "line": 63, - "column": 19 + "line": 1148, + "column": 29 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -202811,50 +207775,23 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 2932, - "end": 2933, - "loc": { - "start": { - "line": 63, - "column": 20 - }, - "end": { - "line": 63, - "column": 21 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 2933, - "end": 2934, + "value": "this", + "start": 44717, + "end": 44721, "loc": { "start": { - "line": 63, - "column": 21 + "line": 1150, + "column": 8 }, "end": { - "line": 63, - "column": 22 + "line": 1150, + "column": 12 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -202865,17 +207802,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 2935, - "end": 2940, + "start": 44721, + "end": 44722, "loc": { "start": { - "line": 64, - "column": 0 + "line": 1150, + "column": 12 }, "end": { - "line": 64, - "column": 5 + "line": 1150, + "column": 13 } } }, @@ -202891,17 +207827,17 @@ "postfix": false, "binop": null }, - "value": "DTX", - "start": 2941, - "end": 2944, + "value": "_meshList", + "start": 44722, + "end": 44731, "loc": { "start": { - "line": 64, - "column": 6 + "line": 1150, + "column": 13 }, - "end": { - "line": 64, - "column": 9 + "end": { + "line": 1150, + "column": 22 } } }, @@ -202919,23 +207855,23 @@ "updateContext": null }, "value": "=", - "start": 2945, - "end": 2946, + "start": 44732, + "end": 44733, "loc": { "start": { - "line": 64, - "column": 10 + "line": 1150, + "column": 23 }, "end": { - "line": 64, - "column": 11 + "line": 1150, + "column": 24 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -202945,24 +207881,23 @@ "binop": null, "updateContext": null }, - "value": 2, - "start": 2947, - "end": 2948, + "start": 44734, + "end": 44735, "loc": { "start": { - "line": 64, - "column": 12 + "line": 1150, + "column": 25 }, "end": { - "line": 64, - "column": 13 + "line": 1150, + "column": 26 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -202972,41 +207907,51 @@ "binop": null, "updateContext": null }, - "start": 2948, - "end": 2949, + "start": 44735, + "end": 44736, "loc": { "start": { - "line": 64, - "column": 13 + "line": 1150, + "column": 26 }, "end": { - "line": 64, - "column": 14 + "line": 1150, + "column": 27 } } }, { - "type": "CommentBlock", - "value": "*\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * Internally, SceneModel uses a combination of several different techniques to render and represent\n * the different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\n * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\n * serve to demonstrate how to use the capabilities of SceneModel programmatically.\n *\n * * [Loading building models into SceneModels](/examples/buildings)\n * * [Loading city models into SceneModels](/examples/cities)\n * * [Loading LiDAR scans into SceneModels](/examples/lidar)\n * * [Loading CAD models into SceneModels](/examples/cad)\n * * [SceneModel feature tests](/examples/scenemodel)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [SceneModel](#DataTextureSceneModel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates-for-double-precision)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## SceneModel\n *\n * ````SceneModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
\n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````SceneModel```` is an {@link Entity} that represents a model.\n * * A ````SceneModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````SceneModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a SceneModel representing a table\n * // with four legs, using geometry instancing\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the SceneModel\n * // We'll instance this geometry by five meshes\n *\n * sceneModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a SceneModel\n *\n * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````SceneModel````.\n *\n * Once finalized, we can't add anything more to our ````SceneModel````.\n *\n * ```` javascript\n * SceneModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````SceneModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````SceneModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a SceneModel representing a table with four legs, using geometry batching\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the SceneModel.\n *\n * SceneModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````SceneModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````SceneModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for Double Precision\n *\n * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## Positioning at World-space coordinates\n *\n * To position a SceneModel at given double-precision World coordinates, we can\n * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n * 3D World-space position at which the SceneModel will be located.\n *\n * Note that ````position```` is a single-precision offset relative to ````origin````.\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true,\n * origin: origin, // Everything in this SceneModel is relative to this RTC center\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * # Textures\n *\n * ## Loading KTX2 Texture Files into a SceneModel\n *\n * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\n * allow us to load textures into it from KTX2 buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\n * transcoder WASM module.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n *\n * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * });\n * ````\n *\n * @implements {Entity}\n ", - "start": 2951, - "end": 38769, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 44736, + "end": 44737, "loc": { "start": { - "line": 66, - "column": 0 + "line": 1150, + "column": 27 }, "end": { - "line": 1080, - "column": 3 + "line": 1150, + "column": 28 } } }, { "type": { - "label": "export", - "keyword": "export", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -203015,24 +207960,23 @@ "binop": null, "updateContext": null }, - "value": "export", - "start": 38770, - "end": 38776, + "value": "this", + "start": 44747, + "end": 44751, "loc": { "start": { - "line": 1081, - "column": 0 + "line": 1152, + "column": 8 }, "end": { - "line": 1081, - "column": 6 + "line": 1152, + "column": 12 } } }, { "type": { - "label": "class", - "keyword": "class", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -203043,17 +207987,16 @@ "binop": null, "updateContext": null }, - "value": "class", - "start": 38777, - "end": 38782, + "start": 44751, + "end": 44752, "loc": { "start": { - "line": 1081, - "column": 7 + "line": 1152, + "column": 12 }, "end": { - "line": 1081, - "column": 12 + "line": 1152, + "column": 13 } } }, @@ -203069,169 +208012,145 @@ "postfix": false, "binop": null }, - "value": "SceneModel", - "start": 38783, - "end": 38793, + "value": "layerList", + "start": 44752, + "end": 44761, "loc": { "start": { - "line": 1081, + "line": 1152, "column": 13 }, "end": { - "line": 1081, - "column": 23 + "line": 1152, + "column": 22 } } }, { "type": { - "label": "extends", - "keyword": "extends", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "extends", - "start": 38794, - "end": 38801, + "value": "=", + "start": 44762, + "end": 44763, "loc": { "start": { - "line": 1081, - "column": 24 + "line": 1152, + "column": 23 }, "end": { - "line": 1081, - "column": 31 + "line": 1152, + "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": "Component", - "start": 38802, - "end": 38811, + "start": 44764, + "end": 44765, "loc": { "start": { - "line": 1081, - "column": 32 + "line": 1152, + "column": 25 }, "end": { - "line": 1081, - "column": 41 + "line": 1152, + "column": 26 } } }, { "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": 38812, - "end": 38813, - "loc": { - "start": { - "line": 1081, - "column": 42 - }, - "end": { - "line": 1081, - "column": 43 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this SceneModel represents a model, in which case the SceneModel will be registered by {@link SceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Number[]} [cfg.origin=[0,0,0]] World-space double-precision 3D origin.\n * @param {Number[]} [cfg.position=[0,0,0]] Local, single-precision 3D position, relative to the origin parameter.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModel is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModel is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModel is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModel is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModel is initially included in boundary calculations.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModel is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModel is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModel is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModel's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] SceneModel's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] SceneModel's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this SceneModel. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. SAO is configured by the Scene's {@link SAO} component.\n * @param {Boolean} [cfg.pbrEnabled=true] Indicates if physically-based rendering (PBR) will apply to the SceneModel when {@link Scene#pbrEnabled} is ````true````.\n * @param {Boolean} [cfg.colorTextureEnabled=true] Indicates if base color textures will be rendered for the SceneModel when {@link Scene#colorTextureEnabled} is ````true````.\n * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that SceneModel internally creates for batched geometries.\n * A lower value means less heap allocation/de-allocation while creating/loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while creating/loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n * @param {TextureTranscoder} [cfg.textureTranscoder] Transcoder that will be used internally by {@link SceneModel#createTexture}\n * to convert transcoded texture data. Only required when we'll be providing transcoded data\n * to {@link SceneModel#createTexture}. We assume that all transcoded texture data added to a ````SceneModel````\n * will then in a format supported by this transcoder.\n * @param {Boolean} [cfg.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n ", - "start": 38819, - "end": 43850, + "start": 44765, + "end": 44766, "loc": { "start": { - "line": 1083, - "column": 4 + "line": 1152, + "column": 26 }, "end": { - "line": 1125, - "column": 7 + "line": 1152, + "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": "constructor", - "start": 43855, - "end": 43866, + "start": 44766, + "end": 44767, "loc": { "start": { - "line": 1126, - "column": 4 + "line": 1152, + "column": 27 }, "end": { - "line": 1126, - "column": 15 + "line": 1152, + "column": 28 } } }, { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 43866, - "end": 43867, + "type": "CommentLine", + "value": " For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second", + "start": 44768, + "end": 44873, "loc": { "start": { - "line": 1126, - "column": 15 + "line": 1152, + "column": 29 }, "end": { - "line": 1126, - "column": 16 + "line": 1152, + "column": 134 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -203239,26 +208158,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "owner", - "start": 43867, - "end": 43872, + "value": "this", + "start": 44882, + "end": 44886, "loc": { "start": { - "line": 1126, - "column": 16 + "line": 1153, + "column": 8 }, "end": { - "line": 1126, - "column": 21 + "line": 1153, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -203268,16 +208188,16 @@ "binop": null, "updateContext": null }, - "start": 43872, - "end": 43873, + "start": 44886, + "end": 44887, "loc": { "start": { - "line": 1126, - "column": 21 + "line": 1153, + "column": 12 }, "end": { - "line": 1126, - "column": 22 + "line": 1153, + "column": 13 } } }, @@ -203293,17 +208213,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 43874, - "end": 43877, + "value": "_entityList", + "start": 44887, + "end": 44898, "loc": { "start": { - "line": 1126, - "column": 23 + "line": 1153, + "column": 13 }, "end": { - "line": 1126, - "column": 26 + "line": 1153, + "column": 24 } } }, @@ -203321,22 +208241,22 @@ "updateContext": null }, "value": "=", - "start": 43878, - "end": 43879, + "start": 44899, + "end": 44900, "loc": { "start": { - "line": 1126, - "column": 27 + "line": 1153, + "column": 25 }, "end": { - "line": 1126, - "column": 28 + "line": 1153, + "column": 26 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -203344,49 +208264,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 43880, - "end": 43881, - "loc": { - "start": { - "line": 1126, - "column": 29 - }, - "end": { - "line": 1126, - "column": 30 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 43881, - "end": 43882, + "start": 44901, + "end": 44902, "loc": { "start": { - "line": 1126, - "column": 30 + "line": 1153, + "column": 27 }, "end": { - "line": 1126, - "column": 31 + "line": 1153, + "column": 28 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -203394,50 +208290,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 43882, - "end": 43883, + "start": 44902, + "end": 44903, "loc": { "start": { - "line": 1126, - "column": 31 + "line": 1153, + "column": 28 }, "end": { - "line": 1126, - "column": 32 + "line": 1153, + "column": 29 } } }, { "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": 43884, - "end": 43885, + "start": 44903, + "end": 44904, "loc": { "start": { - "line": 1126, - "column": 33 + "line": 1153, + "column": 29 }, "end": { - "line": 1126, - "column": 34 + "line": 1153, + "column": 30 } } }, { "type": { - "label": "super", - "keyword": "super", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -203448,42 +208346,43 @@ "binop": null, "updateContext": null }, - "value": "super", - "start": 43895, - "end": 43900, + "value": "this", + "start": 44914, + "end": 44918, "loc": { "start": { - "line": 1128, + "line": 1155, "column": 8 }, "end": { - "line": 1128, - "column": 13 + "line": 1155, + "column": 12 } } }, { "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": 43900, - "end": 43901, + "start": 44918, + "end": 44919, "loc": { "start": { - "line": 1128, - "column": 13 + "line": 1155, + "column": 12 }, "end": { - "line": 1128, - "column": 14 + "line": 1155, + "column": 13 } } }, @@ -203499,50 +208398,51 @@ "postfix": false, "binop": null }, - "value": "owner", - "start": 43901, - "end": 43906, + "value": "_geometries", + "start": 44919, + "end": 44930, "loc": { "start": { - "line": 1128, - "column": 14 + "line": 1155, + "column": 13 }, "end": { - "line": 1128, - "column": 19 + "line": 1155, + "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": 43906, - "end": 43907, + "value": "=", + "start": 44931, + "end": 44932, "loc": { "start": { - "line": 1128, - "column": 19 + "line": 1155, + "column": 25 }, "end": { - "line": 1128, - "column": 20 + "line": 1155, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -203551,23 +208451,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 43908, - "end": 43911, + "start": 44933, + "end": 44934, "loc": { "start": { - "line": 1128, - "column": 21 + "line": 1155, + "column": 27 }, "end": { - "line": 1128, - "column": 24 + "line": 1155, + "column": 28 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -203577,16 +208476,16 @@ "postfix": false, "binop": null }, - "start": 43911, - "end": 43912, + "start": 44934, + "end": 44935, "loc": { "start": { - "line": 1128, - "column": 24 + "line": 1155, + "column": 28 }, "end": { - "line": 1128, - "column": 25 + "line": 1155, + "column": 29 } } }, @@ -203603,16 +208502,16 @@ "binop": null, "updateContext": null }, - "start": 43912, - "end": 43913, + "start": 44935, + "end": 44936, "loc": { "start": { - "line": 1128, - "column": 25 + "line": 1155, + "column": 29 }, "end": { - "line": 1128, - "column": 26 + "line": 1155, + "column": 30 } } }, @@ -203631,15 +208530,15 @@ "updateContext": null }, "value": "this", - "start": 43923, - "end": 43927, + "start": 44945, + "end": 44949, "loc": { "start": { - "line": 1130, + "line": 1156, "column": 8 }, "end": { - "line": 1130, + "line": 1156, "column": 12 } } @@ -203657,15 +208556,15 @@ "binop": null, "updateContext": null }, - "start": 43927, - "end": 43928, + "start": 44949, + "end": 44950, "loc": { "start": { - "line": 1130, + "line": 1156, "column": 12 }, "end": { - "line": 1130, + "line": 1156, "column": 13 } } @@ -203682,16 +208581,16 @@ "postfix": false, "binop": null }, - "value": "_dtxEnabled", - "start": 43928, - "end": 43939, + "value": "_dtxBuckets", + "start": 44950, + "end": 44961, "loc": { "start": { - "line": 1130, + "line": 1156, "column": 13 }, "end": { - "line": 1130, + "line": 1156, "column": 24 } } @@ -203710,50 +208609,47 @@ "updateContext": null }, "value": "=", - "start": 43940, - "end": 43941, + "start": 44962, + "end": 44963, "loc": { "start": { - "line": 1130, + "line": 1156, "column": 25 }, "end": { - "line": 1130, + "line": 1156, "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 43942, - "end": 43946, + "start": 44964, + "end": 44965, "loc": { "start": { - "line": 1130, + "line": 1156, "column": 27 }, "end": { - "line": 1130, - "column": 31 + "line": 1156, + "column": 28 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -203761,25 +208657,67 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 44965, + "end": 44966, + "loc": { + "start": { + "line": 1156, + "column": 28 + }, + "end": { + "line": 1156, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 43946, - "end": 43947, + "start": 44966, + "end": 44967, + "loc": { + "start": { + "line": 1156, + "column": 29 + }, + "end": { + "line": 1156, + "column": 30 + } + } + }, + { + "type": "CommentLine", + "value": " Geometries with optimizations used for data texture representation", + "start": 44968, + "end": 45037, "loc": { "start": { - "line": 1130, + "line": 1156, "column": 31 }, "end": { - "line": 1130, - "column": 32 + "line": 1156, + "column": 100 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -203787,19 +208725,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scene", - "start": 43947, - "end": 43952, + "value": "this", + "start": 45046, + "end": 45050, "loc": { "start": { - "line": 1130, - "column": 32 + "line": 1157, + "column": 8 }, "end": { - "line": 1130, - "column": 37 + "line": 1157, + "column": 12 } } }, @@ -203816,16 +208755,16 @@ "binop": null, "updateContext": null }, - "start": 43952, - "end": 43953, + "start": 45050, + "end": 45051, "loc": { "start": { - "line": 1130, - "column": 37 + "line": 1157, + "column": 12 }, "end": { - "line": 1130, - "column": 38 + "line": 1157, + "column": 13 } } }, @@ -203841,50 +208780,50 @@ "postfix": false, "binop": null }, - "value": "dtxEnabled", - "start": 43953, - "end": 43963, + "value": "_textures", + "start": 45051, + "end": 45060, "loc": { "start": { - "line": 1130, - "column": 38 + "line": 1157, + "column": 13 }, "end": { - "line": 1130, - "column": 48 + "line": 1157, + "column": 22 } } }, { "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": 43964, - "end": 43966, + "value": "=", + "start": 45061, + "end": 45062, "loc": { "start": { - "line": 1130, - "column": 49 + "line": 1157, + "column": 23 }, "end": { - "line": 1130, - "column": 51 + "line": 1157, + "column": 24 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -203894,24 +208833,24 @@ "postfix": false, "binop": null }, - "start": 43967, - "end": 43968, + "start": 45063, + "end": 45064, "loc": { "start": { - "line": 1130, - "column": 52 + "line": 1157, + "column": 25 }, "end": { - "line": 1130, - "column": 53 + "line": 1157, + "column": 26 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -203919,17 +208858,70 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 43968, - "end": 43971, + "start": 45064, + "end": 45065, "loc": { "start": { - "line": 1130, - "column": 53 + "line": 1157, + "column": 26 }, "end": { - "line": 1130, - "column": 56 + "line": 1157, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 45065, + "end": 45066, + "loc": { + "start": { + "line": 1157, + "column": 27 + }, + "end": { + "line": 1157, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 45075, + "end": 45079, + "loc": { + "start": { + "line": 1158, + "column": 8 + }, + "end": { + "line": 1158, + "column": 12 } } }, @@ -203946,16 +208938,16 @@ "binop": null, "updateContext": null }, - "start": 43971, - "end": 43972, + "start": 45079, + "end": 45080, "loc": { "start": { - "line": 1130, - "column": 56 + "line": 1158, + "column": 12 }, "end": { - "line": 1130, - "column": 57 + "line": 1158, + "column": 13 } } }, @@ -203971,78 +208963,75 @@ "postfix": false, "binop": null }, - "value": "dtxEnabled", - "start": 43972, - "end": 43982, + "value": "_textureSets", + "start": 45080, + "end": 45092, "loc": { "start": { - "line": 1130, - "column": 57 + "line": 1158, + "column": 13 }, "end": { - "line": 1130, - "column": 67 + "line": 1158, + "column": 25 } } }, { "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": 43983, - "end": 43986, + "value": "=", + "start": 45093, + "end": 45094, "loc": { "start": { - "line": 1130, - "column": 68 + "line": 1158, + "column": 26 }, "end": { - "line": 1130, - "column": 71 + "line": 1158, + "column": 27 } } }, { "type": { - "label": "false", - "keyword": "false", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 43987, - "end": 43992, + "start": 45095, + "end": 45096, "loc": { "start": { - "line": 1130, - "column": 72 + "line": 1158, + "column": 28 }, "end": { - "line": 1130, - "column": 77 + "line": 1158, + "column": 29 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -204052,16 +209041,16 @@ "postfix": false, "binop": null }, - "start": 43992, - "end": 43993, + "start": 45096, + "end": 45097, "loc": { "start": { - "line": 1130, - "column": 77 + "line": 1158, + "column": 29 }, "end": { - "line": 1130, - "column": 78 + "line": 1158, + "column": 30 } } }, @@ -204078,16 +209067,16 @@ "binop": null, "updateContext": null }, - "start": 43993, - "end": 43994, + "start": 45097, + "end": 45098, "loc": { "start": { - "line": 1130, - "column": 78 + "line": 1158, + "column": 30 }, "end": { - "line": 1130, - "column": 79 + "line": 1158, + "column": 31 } } }, @@ -204106,15 +209095,15 @@ "updateContext": null }, "value": "this", - "start": 44004, - "end": 44008, + "start": 45107, + "end": 45111, "loc": { "start": { - "line": 1132, + "line": 1159, "column": 8 }, "end": { - "line": 1132, + "line": 1159, "column": 12 } } @@ -204132,15 +209121,15 @@ "binop": null, "updateContext": null }, - "start": 44008, - "end": 44009, + "start": 45111, + "end": 45112, "loc": { "start": { - "line": 1132, + "line": 1159, "column": 12 }, "end": { - "line": 1132, + "line": 1159, "column": 13 } } @@ -204157,17 +209146,17 @@ "postfix": false, "binop": null }, - "value": "_enableVertexWelding", - "start": 44009, - "end": 44029, + "value": "_transforms", + "start": 45112, + "end": 45123, "loc": { "start": { - "line": 1132, + "line": 1159, "column": 13 }, "end": { - "line": 1132, - "column": 33 + "line": 1159, + "column": 24 } } }, @@ -204185,86 +209174,92 @@ "updateContext": null }, "value": "=", - "start": 44030, - "end": 44031, + "start": 45124, + "end": 45125, "loc": { "start": { - "line": 1132, - "column": 34 + "line": 1159, + "column": 25 }, "end": { - "line": 1132, - "column": 35 + "line": 1159, + "column": 26 } } }, { "type": { - "label": "false", - "keyword": "false", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 44032, - "end": 44037, + "start": 45126, + "end": 45127, "loc": { "start": { - "line": 1132, - "column": 36 + "line": 1159, + "column": 27 }, "end": { - "line": 1132, - "column": 41 + "line": 1159, + "column": 28 } } }, { "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": 44037, - "end": 44038, + "start": 45127, + "end": 45128, "loc": { "start": { - "line": 1132, - "column": 41 + "line": 1159, + "column": 28 }, "end": { - "line": 1132, - "column": 42 + "line": 1159, + "column": 29 } } }, { - "type": "CommentLine", - "value": " Not needed for most objects, and very expensive, so disabled", - "start": 44039, - "end": 44102, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 45128, + "end": 45129, "loc": { "start": { - "line": 1132, - "column": 43 + "line": 1159, + "column": 29 }, "end": { - "line": 1132, - "column": 106 + "line": 1159, + "column": 30 } } }, @@ -204283,15 +209278,15 @@ "updateContext": null }, "value": "this", - "start": 44111, - "end": 44115, + "start": 45138, + "end": 45142, "loc": { "start": { - "line": 1133, + "line": 1160, "column": 8 }, "end": { - "line": 1133, + "line": 1160, "column": 12 } } @@ -204309,15 +209304,15 @@ "binop": null, "updateContext": null }, - "start": 44115, - "end": 44116, + "start": 45142, + "end": 45143, "loc": { "start": { - "line": 1133, + "line": 1160, "column": 12 }, "end": { - "line": 1133, + "line": 1160, "column": 13 } } @@ -204334,17 +209329,17 @@ "postfix": false, "binop": null }, - "value": "_enableIndexBucketing", - "start": 44116, - "end": 44137, + "value": "_meshes", + "start": 45143, + "end": 45150, "loc": { "start": { - "line": 1133, + "line": 1160, "column": 13 }, "end": { - "line": 1133, - "column": 34 + "line": 1160, + "column": 20 } } }, @@ -204362,86 +209357,92 @@ "updateContext": null }, "value": "=", - "start": 44138, - "end": 44139, + "start": 45151, + "end": 45152, "loc": { "start": { - "line": 1133, - "column": 35 + "line": 1160, + "column": 21 }, "end": { - "line": 1133, - "column": 36 + "line": 1160, + "column": 22 } } }, { "type": { - "label": "false", - "keyword": "false", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 44140, - "end": 44145, + "start": 45153, + "end": 45154, "loc": { "start": { - "line": 1133, - "column": 37 + "line": 1160, + "column": 23 }, "end": { - "line": 1133, - "column": 42 + "line": 1160, + "column": 24 } } }, { "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": 44145, - "end": 44146, + "start": 45154, + "end": 45155, "loc": { "start": { - "line": 1133, - "column": 42 + "line": 1160, + "column": 24 }, "end": { - "line": 1133, - "column": 43 + "line": 1160, + "column": 25 } } }, { - "type": "CommentLine", - "value": " Until fixed: https://github.com/xeokit/xeokit-sdk/issues/1204", - "start": 44147, - "end": 44211, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 45155, + "end": 45156, "loc": { "start": { - "line": 1133, - "column": 44 + "line": 1160, + "column": 25 }, "end": { - "line": 1133, - "column": 108 + "line": 1160, + "column": 26 } } }, @@ -204460,15 +209461,15 @@ "updateContext": null }, "value": "this", - "start": 44221, - "end": 44225, + "start": 45165, + "end": 45169, "loc": { "start": { - "line": 1135, + "line": 1161, "column": 8 }, "end": { - "line": 1135, + "line": 1161, "column": 12 } } @@ -204486,15 +209487,15 @@ "binop": null, "updateContext": null }, - "start": 44225, - "end": 44226, + "start": 45169, + "end": 45170, "loc": { "start": { - "line": 1135, + "line": 1161, "column": 12 }, "end": { - "line": 1135, + "line": 1161, "column": 13 } } @@ -204511,17 +209512,17 @@ "postfix": false, "binop": null }, - "value": "_vboBatchingLayerScratchMemory", - "start": 44226, - "end": 44256, + "value": "_unusedMeshes", + "start": 45170, + "end": 45183, "loc": { "start": { - "line": 1135, + "line": 1161, "column": 13 }, "end": { - "line": 1135, - "column": 43 + "line": 1161, + "column": 26 } } }, @@ -204539,48 +209540,22 @@ "updateContext": null }, "value": "=", - "start": 44257, - "end": 44258, - "loc": { - "start": { - "line": 1135, - "column": 44 - }, - "end": { - "line": 1135, - "column": 45 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "getScratchMemory", - "start": 44259, - "end": 44275, + "start": 45184, + "end": 45185, "loc": { "start": { - "line": 1135, - "column": 46 + "line": 1161, + "column": 27 }, "end": { - "line": 1135, - "column": 62 + "line": 1161, + "column": 28 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -204590,22 +209565,22 @@ "postfix": false, "binop": null }, - "start": 44275, - "end": 44276, + "start": 45186, + "end": 45187, "loc": { "start": { - "line": 1135, - "column": 62 + "line": 1161, + "column": 29 }, "end": { - "line": 1135, - "column": 63 + "line": 1161, + "column": 30 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -204615,16 +209590,16 @@ "postfix": false, "binop": null }, - "start": 44276, - "end": 44277, + "start": 45187, + "end": 45188, "loc": { "start": { - "line": 1135, - "column": 63 + "line": 1161, + "column": 30 }, "end": { - "line": 1135, - "column": 64 + "line": 1161, + "column": 31 } } }, @@ -204641,16 +209616,16 @@ "binop": null, "updateContext": null }, - "start": 44277, - "end": 44278, + "start": 45188, + "end": 45189, "loc": { "start": { - "line": 1135, - "column": 64 + "line": 1161, + "column": 31 }, "end": { - "line": 1135, - "column": 65 + "line": 1161, + "column": 32 } } }, @@ -204669,15 +209644,15 @@ "updateContext": null }, "value": "this", - "start": 44287, - "end": 44291, + "start": 45198, + "end": 45202, "loc": { "start": { - "line": 1136, + "line": 1162, "column": 8 }, "end": { - "line": 1136, + "line": 1162, "column": 12 } } @@ -204695,15 +209670,15 @@ "binop": null, "updateContext": null }, - "start": 44291, - "end": 44292, + "start": 45202, + "end": 45203, "loc": { "start": { - "line": 1136, + "line": 1162, "column": 12 }, "end": { - "line": 1136, + "line": 1162, "column": 13 } } @@ -204720,17 +209695,17 @@ "postfix": false, "binop": null }, - "value": "_textureTranscoder", - "start": 44292, - "end": 44310, + "value": "_entities", + "start": 45203, + "end": 45212, "loc": { "start": { - "line": 1136, + "line": 1162, "column": 13 }, "end": { - "line": 1136, - "column": 31 + "line": 1162, + "column": 22 } } }, @@ -204748,23 +209723,23 @@ "updateContext": null }, "value": "=", - "start": 44311, - "end": 44312, + "start": 45213, + "end": 45214, "loc": { "start": { - "line": 1136, - "column": 32 + "line": 1162, + "column": 23 }, "end": { - "line": 1136, - "column": 33 + "line": 1162, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -204773,23 +209748,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 44313, - "end": 44316, + "start": 45215, + "end": 45216, "loc": { "start": { - "line": 1136, - "column": 34 + "line": 1162, + "column": 25 }, "end": { - "line": 1136, - "column": 37 + "line": 1162, + "column": 26 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -204797,78 +209771,67 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 44316, - "end": 44317, + "start": 45216, + "end": 45217, "loc": { "start": { - "line": 1136, - "column": 37 + "line": 1162, + "column": 26 }, "end": { - "line": 1136, - "column": 38 + "line": 1162, + "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": "textureTranscoder", - "start": 44317, - "end": 44334, + "start": 45217, + "end": 45218, "loc": { "start": { - "line": 1136, - "column": 38 + "line": 1162, + "column": 27 }, "end": { - "line": 1136, - "column": 55 + "line": 1162, + "column": 28 } } }, { - "type": { - "label": "||", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 1, - "updateContext": null - }, - "value": "||", - "start": 44335, - "end": 44337, + "type": "CommentBlock", + "value": "* @private *", + "start": 45228, + "end": 45244, "loc": { "start": { - "line": 1136, - "column": 56 + "line": 1164, + "column": 8 }, "end": { - "line": 1136, - "column": 58 + "line": 1164, + "column": 24 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -204876,51 +209839,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "getKTX2TextureTranscoder", - "start": 44338, - "end": 44362, + "value": "this", + "start": 45253, + "end": 45257, "loc": { "start": { - "line": 1136, - "column": 59 + "line": 1165, + "column": 8 }, "end": { - "line": 1136, - "column": 83 + "line": 1165, + "column": 12 } } }, { "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": 44362, - "end": 44363, + "start": 45257, + "end": 45258, "loc": { "start": { - "line": 1136, - "column": 83 + "line": 1165, + "column": 12 }, "end": { - "line": 1136, - "column": 84 + "line": 1165, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -204928,105 +209892,107 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 44363, - "end": 44367, + "value": "renderFlags", + "start": 45258, + "end": 45269, "loc": { "start": { - "line": 1136, - "column": 84 + "line": 1165, + "column": 13 }, "end": { - "line": 1136, - "column": 88 + "line": 1165, + "column": 24 } } }, { "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": 44367, - "end": 44368, + "value": "=", + "start": 45270, + "end": 45271, "loc": { "start": { - "line": 1136, - "column": 88 + "line": 1165, + "column": 25 }, "end": { - "line": 1136, - "column": 89 + "line": 1165, + "column": 26 } } }, { "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": "scene", - "start": 44368, - "end": 44373, + "value": "new", + "start": 45272, + "end": 45275, "loc": { "start": { - "line": 1136, - "column": 89 + "line": 1165, + "column": 27 }, "end": { - "line": 1136, - "column": 94 + "line": 1165, + "column": 30 } } }, { "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": 44373, - "end": 44374, + "value": "RenderFlags", + "start": 45276, + "end": 45287, "loc": { "start": { - "line": 1136, - "column": 94 + "line": 1165, + "column": 31 }, "end": { - "line": 1136, - "column": 95 + "line": 1165, + "column": 42 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -205035,17 +210001,16 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 44374, - "end": 44380, + "start": 45287, + "end": 45288, "loc": { "start": { - "line": 1136, - "column": 95 + "line": 1165, + "column": 42 }, "end": { - "line": 1136, - "column": 101 + "line": 1165, + "column": 43 } } }, @@ -205061,16 +210026,16 @@ "postfix": false, "binop": null }, - "start": 44380, - "end": 44381, + "start": 45288, + "end": 45289, "loc": { "start": { - "line": 1136, - "column": 101 + "line": 1165, + "column": 43 }, "end": { - "line": 1136, - "column": 102 + "line": 1165, + "column": 44 } } }, @@ -205087,16 +210052,32 @@ "binop": null, "updateContext": null }, - "start": 44381, - "end": 44382, + "start": 45289, + "end": 45290, "loc": { "start": { - "line": 1136, - "column": 102 + "line": 1165, + "column": 44 }, "end": { - "line": 1136, - "column": 103 + "line": 1165, + "column": 45 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 45300, + "end": 45335, + "loc": { + "start": { + "line": 1167, + "column": 8 + }, + "end": { + "line": 1169, + "column": 11 } } }, @@ -205115,15 +210096,15 @@ "updateContext": null }, "value": "this", - "start": 44392, - "end": 44396, + "start": 45344, + "end": 45348, "loc": { "start": { - "line": 1138, + "line": 1170, "column": 8 }, "end": { - "line": 1138, + "line": 1170, "column": 12 } } @@ -205141,15 +210122,15 @@ "binop": null, "updateContext": null }, - "start": 44396, - "end": 44397, + "start": 45348, + "end": 45349, "loc": { "start": { - "line": 1138, + "line": 1170, "column": 12 }, "end": { - "line": 1138, + "line": 1170, "column": 13 } } @@ -205166,17 +210147,17 @@ "postfix": false, "binop": null }, - "value": "_maxGeometryBatchSize", - "start": 44397, - "end": 44418, + "value": "numGeometries", + "start": 45349, + "end": 45362, "loc": { "start": { - "line": 1138, + "line": 1170, "column": 13 }, "end": { - "line": 1138, - "column": 34 + "line": 1170, + "column": 26 } } }, @@ -205194,22 +210175,22 @@ "updateContext": null }, "value": "=", - "start": 44419, - "end": 44420, + "start": 45363, + "end": 45364, "loc": { "start": { - "line": 1138, - "column": 35 + "line": 1170, + "column": 27 }, "end": { - "line": 1138, - "column": 36 + "line": 1170, + "column": 28 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -205217,26 +210198,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 44421, - "end": 44424, + "value": 0, + "start": 45365, + "end": 45366, "loc": { "start": { - "line": 1138, - "column": 37 + "line": 1170, + "column": 29 }, "end": { - "line": 1138, - "column": 40 + "line": 1170, + "column": 30 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -205246,22 +210228,87 @@ "binop": null, "updateContext": null }, - "start": 44424, - "end": 44425, + "start": 45366, + "end": 45367, "loc": { "start": { - "line": 1138, - "column": 40 + "line": 1170, + "column": 30 }, "end": { - "line": 1138, - "column": 41 + "line": 1170, + "column": 31 + } + } + }, + { + "type": "CommentLine", + "value": " Number of geometries created with createGeometry()", + "start": 45368, + "end": 45421, + "loc": { + "start": { + "line": 1170, + "column": 32 + }, + "end": { + "line": 1170, + "column": 85 + } + } + }, + { + "type": "CommentLine", + "value": " These counts are used to avoid unnecessary render passes", + "start": 45431, + "end": 45490, + "loc": { + "start": { + "line": 1172, + "column": 8 + }, + "end": { + "line": 1172, + "column": 67 + } + } + }, + { + "type": "CommentLine", + "value": " They are incremented or decremented exclusively by BatchingLayer and InstancingLayer", + "start": 45499, + "end": 45586, + "loc": { + "start": { + "line": 1173, + "column": 8 + }, + "end": { + "line": 1173, + "column": 95 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 45596, + "end": 45631, + "loc": { + "start": { + "line": 1175, + "column": 8 + }, + "end": { + "line": 1177, + "column": 11 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -205269,26 +210316,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "maxGeometryBatchSize", - "start": 44425, - "end": 44445, + "value": "this", + "start": 45640, + "end": 45644, "loc": { "start": { - "line": 1138, - "column": 41 + "line": 1178, + "column": 8 }, "end": { - "line": 1138, - "column": 61 + "line": 1178, + "column": 12 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -205298,23 +210346,22 @@ "binop": null, "updateContext": null }, - "start": 44445, - "end": 44446, + "start": 45644, + "end": 45645, "loc": { "start": { - "line": 1138, - "column": 61 + "line": 1178, + "column": 12 }, "end": { - "line": 1138, - "column": 62 + "line": 1178, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -205322,52 +210369,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 44456, - "end": 44460, + "value": "numPortions", + "start": 45645, + "end": 45656, "loc": { "start": { - "line": 1140, - "column": 8 + "line": 1178, + "column": 13 }, "end": { - "line": 1140, - "column": 12 + "line": 1178, + "column": 24 } } }, { "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": 44460, - "end": 44461, + "value": "=", + "start": 45657, + "end": 45658, "loc": { "start": { - "line": 1140, - "column": 12 + "line": 1178, + "column": 25 }, "end": { - "line": 1140, - "column": 13 + "line": 1178, + "column": 26 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -205375,52 +210422,69 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_aabb", - "start": 44461, - "end": 44466, + "value": 0, + "start": 45659, + "end": 45660, "loc": { "start": { - "line": 1140, - "column": 13 + "line": 1178, + "column": 27 }, "end": { - "line": 1140, - "column": 18 + "line": 1178, + "column": 28 } } }, { "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": 44467, - "end": 44468, + "start": 45660, + "end": 45661, "loc": { "start": { - "line": 1140, - "column": 19 + "line": 1178, + "column": 28 }, "end": { - "line": 1140, - "column": 20 + "line": 1178, + "column": 29 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 45671, + "end": 45706, + "loc": { + "start": { + "line": 1180, + "column": 8 + }, + "end": { + "line": 1182, + "column": 11 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -205428,19 +210492,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 44469, - "end": 44473, + "value": "this", + "start": 45715, + "end": 45719, "loc": { "start": { - "line": 1140, - "column": 21 + "line": 1183, + "column": 8 }, "end": { - "line": 1140, - "column": 25 + "line": 1183, + "column": 12 } } }, @@ -205457,16 +210522,16 @@ "binop": null, "updateContext": null }, - "start": 44473, - "end": 44474, + "start": 45719, + "end": 45720, "loc": { "start": { - "line": 1140, - "column": 25 + "line": 1183, + "column": 12 }, "end": { - "line": 1140, - "column": 26 + "line": 1183, + "column": 13 } } }, @@ -205482,67 +210547,71 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 44474, - "end": 44487, + "value": "numVisibleLayerPortions", + "start": 45720, + "end": 45743, "loc": { "start": { - "line": 1140, - "column": 26 + "line": 1183, + "column": 13 }, "end": { - "line": 1140, - "column": 39 + "line": 1183, + "column": 36 } } }, { "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": 44487, - "end": 44488, + "value": "=", + "start": 45744, + "end": 45745, "loc": { "start": { - "line": 1140, - "column": 39 + "line": 1183, + "column": 37 }, "end": { - "line": 1140, - "column": 40 + "line": 1183, + "column": 38 } } }, { "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": 44488, - "end": 44489, + "value": 0, + "start": 45746, + "end": 45747, "loc": { "start": { - "line": 1140, - "column": 40 + "line": 1183, + "column": 39 }, "end": { - "line": 1140, - "column": 41 + "line": 1183, + "column": 40 } } }, @@ -205559,16 +210628,32 @@ "binop": null, "updateContext": null }, - "start": 44489, - "end": 44490, + "start": 45747, + "end": 45748, "loc": { "start": { - "line": 1140, + "line": 1183, + "column": 40 + }, + "end": { + "line": 1183, "column": 41 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 45758, + "end": 45793, + "loc": { + "start": { + "line": 1185, + "column": 8 }, "end": { - "line": 1140, - "column": 42 + "line": 1187, + "column": 11 } } }, @@ -205587,15 +210672,15 @@ "updateContext": null }, "value": "this", - "start": 44499, - "end": 44503, + "start": 45802, + "end": 45806, "loc": { "start": { - "line": 1141, + "line": 1188, "column": 8 }, "end": { - "line": 1141, + "line": 1188, "column": 12 } } @@ -205613,15 +210698,15 @@ "binop": null, "updateContext": null }, - "start": 44503, - "end": 44504, + "start": 45806, + "end": 45807, "loc": { "start": { - "line": 1141, + "line": 1188, "column": 12 }, "end": { - "line": 1141, + "line": 1188, "column": 13 } } @@ -205638,17 +210723,17 @@ "postfix": false, "binop": null }, - "value": "_aabbDirty", - "start": 44504, - "end": 44514, + "value": "numTransparentLayerPortions", + "start": 45807, + "end": 45834, "loc": { "start": { - "line": 1141, + "line": 1188, "column": 13 }, "end": { - "line": 1141, - "column": 23 + "line": 1188, + "column": 40 } } }, @@ -205666,23 +210751,22 @@ "updateContext": null }, "value": "=", - "start": 44515, - "end": 44516, + "start": 45835, + "end": 45836, "loc": { "start": { - "line": 1141, - "column": 24 + "line": 1188, + "column": 41 }, "end": { - "line": 1141, - "column": 25 + "line": 1188, + "column": 42 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -205693,17 +210777,17 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 44517, - "end": 44521, + "value": 0, + "start": 45837, + "end": 45838, "loc": { "start": { - "line": 1141, - "column": 26 + "line": 1188, + "column": 43 }, "end": { - "line": 1141, - "column": 30 + "line": 1188, + "column": 44 } } }, @@ -205720,16 +210804,32 @@ "binop": null, "updateContext": null }, - "start": 44521, - "end": 44522, + "start": 45838, + "end": 45839, "loc": { "start": { - "line": 1141, - "column": 30 + "line": 1188, + "column": 44 }, "end": { - "line": 1141, - "column": 31 + "line": 1188, + "column": 45 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 45849, + "end": 45884, + "loc": { + "start": { + "line": 1190, + "column": 8 + }, + "end": { + "line": 1192, + "column": 11 } } }, @@ -205748,15 +210848,15 @@ "updateContext": null }, "value": "this", - "start": 44532, - "end": 44536, + "start": 45893, + "end": 45897, "loc": { "start": { - "line": 1143, + "line": 1193, "column": 8 }, "end": { - "line": 1143, + "line": 1193, "column": 12 } } @@ -205774,15 +210874,15 @@ "binop": null, "updateContext": null }, - "start": 44536, - "end": 44537, + "start": 45897, + "end": 45898, "loc": { "start": { - "line": 1143, + "line": 1193, "column": 12 }, "end": { - "line": 1143, + "line": 1193, "column": 13 } } @@ -205799,17 +210899,17 @@ "postfix": false, "binop": null }, - "value": "_quantizationRanges", - "start": 44537, - "end": 44556, + "value": "numXRayedLayerPortions", + "start": 45898, + "end": 45920, "loc": { "start": { - "line": 1143, + "line": 1193, "column": 13 }, "end": { - "line": 1143, - "column": 32 + "line": 1193, + "column": 35 } } }, @@ -205827,92 +210927,85 @@ "updateContext": null }, "value": "=", - "start": 44557, - "end": 44558, + "start": 45921, + "end": 45922, "loc": { "start": { - "line": 1143, - "column": 33 + "line": 1193, + "column": 36 }, "end": { - "line": 1143, - "column": 34 + "line": 1193, + "column": 37 } } }, { "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": 44559, - "end": 44560, + "value": 0, + "start": 45923, + "end": 45924, "loc": { "start": { - "line": 1143, - "column": 35 + "line": 1193, + "column": 38 }, "end": { - "line": 1143, - "column": 36 + "line": 1193, + "column": 39 } } }, { "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": 44560, - "end": 44561, + "start": 45924, + "end": 45925, "loc": { "start": { - "line": 1143, - "column": 36 + "line": 1193, + "column": 39 }, "end": { - "line": 1143, - "column": 37 + "line": 1193, + "column": 40 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 44561, - "end": 44562, + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 45935, + "end": 45970, "loc": { "start": { - "line": 1143, - "column": 37 + "line": 1195, + "column": 8 }, "end": { - "line": 1143, - "column": 38 + "line": 1197, + "column": 11 } } }, @@ -205931,15 +211024,15 @@ "updateContext": null }, "value": "this", - "start": 44572, - "end": 44576, + "start": 45979, + "end": 45983, "loc": { "start": { - "line": 1145, + "line": 1198, "column": 8 }, "end": { - "line": 1145, + "line": 1198, "column": 12 } } @@ -205957,15 +211050,15 @@ "binop": null, "updateContext": null }, - "start": 44576, - "end": 44577, + "start": 45983, + "end": 45984, "loc": { "start": { - "line": 1145, + "line": 1198, "column": 12 }, "end": { - "line": 1145, + "line": 1198, "column": 13 } } @@ -205982,17 +211075,17 @@ "postfix": false, "binop": null }, - "value": "_vboInstancingLayers", - "start": 44577, - "end": 44597, + "value": "numHighlightedLayerPortions", + "start": 45984, + "end": 46011, "loc": { "start": { - "line": 1145, + "line": 1198, "column": 13 }, "end": { - "line": 1145, - "column": 33 + "line": 1198, + "column": 40 } } }, @@ -206010,92 +211103,85 @@ "updateContext": null }, "value": "=", - "start": 44598, - "end": 44599, + "start": 46012, + "end": 46013, "loc": { "start": { - "line": 1145, - "column": 34 + "line": 1198, + "column": 41 }, "end": { - "line": 1145, - "column": 35 + "line": 1198, + "column": 42 } } }, { "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": 44600, - "end": 44601, + "value": 0, + "start": 46014, + "end": 46015, "loc": { "start": { - "line": 1145, - "column": 36 + "line": 1198, + "column": 43 }, "end": { - "line": 1145, - "column": 37 + "line": 1198, + "column": 44 } } }, { "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": 44601, - "end": 44602, + "start": 46015, + "end": 46016, "loc": { "start": { - "line": 1145, - "column": 37 + "line": 1198, + "column": 44 }, "end": { - "line": 1145, - "column": 38 + "line": 1198, + "column": 45 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 44602, - "end": 44603, + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 46026, + "end": 46061, "loc": { "start": { - "line": 1145, - "column": 38 + "line": 1200, + "column": 8 }, "end": { - "line": 1145, - "column": 39 + "line": 1202, + "column": 11 } } }, @@ -206114,15 +211200,15 @@ "updateContext": null }, "value": "this", - "start": 44612, - "end": 44616, + "start": 46070, + "end": 46074, "loc": { "start": { - "line": 1146, + "line": 1203, "column": 8 }, "end": { - "line": 1146, + "line": 1203, "column": 12 } } @@ -206140,15 +211226,15 @@ "binop": null, "updateContext": null }, - "start": 44616, - "end": 44617, + "start": 46074, + "end": 46075, "loc": { "start": { - "line": 1146, + "line": 1203, "column": 12 }, "end": { - "line": 1146, + "line": 1203, "column": 13 } } @@ -206165,17 +211251,17 @@ "postfix": false, "binop": null }, - "value": "_vboBatchingLayers", - "start": 44617, - "end": 44635, + "value": "numSelectedLayerPortions", + "start": 46075, + "end": 46099, "loc": { "start": { - "line": 1146, + "line": 1203, "column": 13 }, "end": { - "line": 1146, - "column": 31 + "line": 1203, + "column": 37 } } }, @@ -206193,92 +211279,85 @@ "updateContext": null }, "value": "=", - "start": 44636, - "end": 44637, + "start": 46100, + "end": 46101, "loc": { "start": { - "line": 1146, - "column": 32 + "line": 1203, + "column": 38 }, "end": { - "line": 1146, - "column": 33 + "line": 1203, + "column": 39 } } }, { "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": 44638, - "end": 44639, + "value": 0, + "start": 46102, + "end": 46103, "loc": { "start": { - "line": 1146, - "column": 34 + "line": 1203, + "column": 40 }, "end": { - "line": 1146, - "column": 35 + "line": 1203, + "column": 41 } } }, { "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": 44639, - "end": 44640, + "start": 46103, + "end": 46104, "loc": { "start": { - "line": 1146, - "column": 35 + "line": 1203, + "column": 41 }, "end": { - "line": 1146, - "column": 36 + "line": 1203, + "column": 42 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 44640, - "end": 44641, + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 46114, + "end": 46149, "loc": { "start": { - "line": 1146, - "column": 36 + "line": 1205, + "column": 8 }, "end": { - "line": 1146, - "column": 37 + "line": 1207, + "column": 11 } } }, @@ -206297,15 +211376,15 @@ "updateContext": null }, "value": "this", - "start": 44650, - "end": 44654, + "start": 46158, + "end": 46162, "loc": { "start": { - "line": 1147, + "line": 1208, "column": 8 }, "end": { - "line": 1147, + "line": 1208, "column": 12 } } @@ -206323,15 +211402,15 @@ "binop": null, "updateContext": null }, - "start": 44654, - "end": 44655, + "start": 46162, + "end": 46163, "loc": { "start": { - "line": 1147, + "line": 1208, "column": 12 }, "end": { - "line": 1147, + "line": 1208, "column": 13 } } @@ -206348,17 +211427,17 @@ "postfix": false, "binop": null }, - "value": "_dtxLayers", - "start": 44655, - "end": 44665, + "value": "numEdgesLayerPortions", + "start": 46163, + "end": 46184, "loc": { "start": { - "line": 1147, + "line": 1208, "column": 13 }, "end": { - "line": 1147, - "column": 23 + "line": 1208, + "column": 34 } } }, @@ -206376,92 +211455,85 @@ "updateContext": null }, "value": "=", - "start": 44666, - "end": 44667, + "start": 46185, + "end": 46186, "loc": { "start": { - "line": 1147, - "column": 24 + "line": 1208, + "column": 35 }, "end": { - "line": 1147, - "column": 25 + "line": 1208, + "column": 36 } } }, { "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": 44668, - "end": 44669, + "value": 0, + "start": 46187, + "end": 46188, "loc": { "start": { - "line": 1147, - "column": 26 + "line": 1208, + "column": 37 }, "end": { - "line": 1147, - "column": 27 + "line": 1208, + "column": 38 } } }, { "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": 44669, - "end": 44670, + "start": 46188, + "end": 46189, "loc": { "start": { - "line": 1147, - "column": 27 + "line": 1208, + "column": 38 }, "end": { - "line": 1147, - "column": 28 + "line": 1208, + "column": 39 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 44670, - "end": 44671, + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 46199, + "end": 46234, "loc": { "start": { - "line": 1147, - "column": 28 + "line": 1210, + "column": 8 }, "end": { - "line": 1147, - "column": 29 + "line": 1212, + "column": 11 } } }, @@ -206480,15 +211552,15 @@ "updateContext": null }, "value": "this", - "start": 44681, - "end": 44685, + "start": 46243, + "end": 46247, "loc": { "start": { - "line": 1149, + "line": 1213, "column": 8 }, "end": { - "line": 1149, + "line": 1213, "column": 12 } } @@ -206506,15 +211578,15 @@ "binop": null, "updateContext": null }, - "start": 44685, - "end": 44686, + "start": 46247, + "end": 46248, "loc": { "start": { - "line": 1149, + "line": 1213, "column": 12 }, "end": { - "line": 1149, + "line": 1213, "column": 13 } } @@ -206531,17 +211603,17 @@ "postfix": false, "binop": null }, - "value": "_meshList", - "start": 44686, - "end": 44695, + "value": "numPickableLayerPortions", + "start": 46248, + "end": 46272, "loc": { "start": { - "line": 1149, + "line": 1213, "column": 13 }, "end": { - "line": 1149, - "column": 22 + "line": 1213, + "column": 37 } } }, @@ -206559,23 +211631,23 @@ "updateContext": null }, "value": "=", - "start": 44696, - "end": 44697, + "start": 46273, + "end": 46274, "loc": { "start": { - "line": 1149, - "column": 23 + "line": 1213, + "column": 38 }, "end": { - "line": 1149, - "column": 24 + "line": 1213, + "column": 39 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -206585,23 +211657,24 @@ "binop": null, "updateContext": null }, - "start": 44698, - "end": 44699, + "value": 0, + "start": 46275, + "end": 46276, "loc": { "start": { - "line": 1149, - "column": 25 + "line": 1213, + "column": 40 }, "end": { - "line": 1149, - "column": 26 + "line": 1213, + "column": 41 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -206611,42 +211684,32 @@ "binop": null, "updateContext": null }, - "start": 44699, - "end": 44700, + "start": 46276, + "end": 46277, "loc": { "start": { - "line": 1149, - "column": 26 + "line": 1213, + "column": 41 }, "end": { - "line": 1149, - "column": 27 + "line": 1213, + "column": 42 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 44700, - "end": 44701, + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 46287, + "end": 46322, "loc": { "start": { - "line": 1149, - "column": 27 + "line": 1215, + "column": 8 }, "end": { - "line": 1149, - "column": 28 + "line": 1217, + "column": 11 } } }, @@ -206665,15 +211728,15 @@ "updateContext": null }, "value": "this", - "start": 44711, - "end": 44715, + "start": 46331, + "end": 46335, "loc": { "start": { - "line": 1151, + "line": 1218, "column": 8 }, "end": { - "line": 1151, + "line": 1218, "column": 12 } } @@ -206691,15 +211754,15 @@ "binop": null, "updateContext": null }, - "start": 44715, - "end": 44716, + "start": 46335, + "end": 46336, "loc": { "start": { - "line": 1151, + "line": 1218, "column": 12 }, "end": { - "line": 1151, + "line": 1218, "column": 13 } } @@ -206716,17 +211779,17 @@ "postfix": false, "binop": null }, - "value": "layerList", - "start": 44716, - "end": 44725, + "value": "numClippableLayerPortions", + "start": 46336, + "end": 46361, "loc": { "start": { - "line": 1151, + "line": 1218, "column": 13 }, "end": { - "line": 1151, - "column": 22 + "line": 1218, + "column": 38 } } }, @@ -206744,50 +211807,24 @@ "updateContext": null }, "value": "=", - "start": 44726, - "end": 44727, - "loc": { - "start": { - "line": 1151, - "column": 23 - }, - "end": { - "line": 1151, - "column": 24 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 44728, - "end": 44729, + "start": 46362, + "end": 46363, "loc": { "start": { - "line": 1151, - "column": 25 + "line": 1218, + "column": 39 }, "end": { - "line": 1151, - "column": 26 + "line": 1218, + "column": 40 } } }, { "type": { - "label": "]", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -206796,16 +211833,17 @@ "binop": null, "updateContext": null }, - "start": 44729, - "end": 44730, + "value": 0, + "start": 46364, + "end": 46365, "loc": { "start": { - "line": 1151, - "column": 26 + "line": 1218, + "column": 41 }, "end": { - "line": 1151, - "column": 27 + "line": 1218, + "column": 42 } } }, @@ -206822,32 +211860,32 @@ "binop": null, "updateContext": null }, - "start": 44730, - "end": 44731, + "start": 46365, + "end": 46366, "loc": { "start": { - "line": 1151, - "column": 27 + "line": 1218, + "column": 42 }, "end": { - "line": 1151, - "column": 28 + "line": 1218, + "column": 43 } } }, { - "type": "CommentLine", - "value": " For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second", - "start": 44732, - "end": 44837, + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 46376, + "end": 46411, "loc": { "start": { - "line": 1151, - "column": 29 + "line": 1220, + "column": 8 }, "end": { - "line": 1151, - "column": 134 + "line": 1222, + "column": 11 } } }, @@ -206866,15 +211904,15 @@ "updateContext": null }, "value": "this", - "start": 44846, - "end": 44850, + "start": 46420, + "end": 46424, "loc": { "start": { - "line": 1152, + "line": 1223, "column": 8 }, "end": { - "line": 1152, + "line": 1223, "column": 12 } } @@ -206892,15 +211930,15 @@ "binop": null, "updateContext": null }, - "start": 44850, - "end": 44851, + "start": 46424, + "end": 46425, "loc": { "start": { - "line": 1152, + "line": 1223, "column": 12 }, "end": { - "line": 1152, + "line": 1223, "column": 13 } } @@ -206917,17 +211955,17 @@ "postfix": false, "binop": null }, - "value": "_entityList", - "start": 44851, - "end": 44862, + "value": "numCulledLayerPortions", + "start": 46425, + "end": 46447, "loc": { "start": { - "line": 1152, + "line": 1223, "column": 13 }, "end": { - "line": 1152, - "column": 24 + "line": 1223, + "column": 35 } } }, @@ -206945,50 +211983,24 @@ "updateContext": null }, "value": "=", - "start": 44863, - "end": 44864, - "loc": { - "start": { - "line": 1152, - "column": 25 - }, - "end": { - "line": 1152, - "column": 26 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 44865, - "end": 44866, + "start": 46448, + "end": 46449, "loc": { "start": { - "line": 1152, - "column": 27 + "line": 1223, + "column": 36 }, "end": { - "line": 1152, - "column": 28 + "line": 1223, + "column": 37 } } }, { "type": { - "label": "]", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -206997,16 +212009,17 @@ "binop": null, "updateContext": null }, - "start": 44866, - "end": 44867, + "value": 0, + "start": 46450, + "end": 46451, "loc": { "start": { - "line": 1152, - "column": 28 + "line": 1223, + "column": 38 }, "end": { - "line": 1152, - "column": 29 + "line": 1223, + "column": 39 } } }, @@ -207023,16 +212036,16 @@ "binop": null, "updateContext": null }, - "start": 44867, - "end": 44868, + "start": 46451, + "end": 46452, "loc": { "start": { - "line": 1152, - "column": 29 + "line": 1223, + "column": 39 }, "end": { - "line": 1152, - "column": 30 + "line": 1223, + "column": 40 } } }, @@ -207051,15 +212064,15 @@ "updateContext": null }, "value": "this", - "start": 44878, - "end": 44882, + "start": 46462, + "end": 46466, "loc": { "start": { - "line": 1154, + "line": 1225, "column": 8 }, "end": { - "line": 1154, + "line": 1225, "column": 12 } } @@ -207077,15 +212090,15 @@ "binop": null, "updateContext": null }, - "start": 44882, - "end": 44883, + "start": 46466, + "end": 46467, "loc": { "start": { - "line": 1154, + "line": 1225, "column": 12 }, "end": { - "line": 1154, + "line": 1225, "column": 13 } } @@ -207102,16 +212115,16 @@ "postfix": false, "binop": null }, - "value": "_geometries", - "start": 44883, - "end": 44894, + "value": "numEntities", + "start": 46467, + "end": 46478, "loc": { "start": { - "line": 1154, + "line": 1225, "column": 13 }, "end": { - "line": 1154, + "line": 1225, "column": 24 } } @@ -207130,66 +212143,43 @@ "updateContext": null }, "value": "=", - "start": 44895, - "end": 44896, + "start": 46479, + "end": 46480, "loc": { "start": { - "line": 1154, + "line": 1225, "column": 25 }, "end": { - "line": 1154, + "line": 1225, "column": 26 } } }, { "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": 44897, - "end": 44898, + "value": 0, + "start": 46481, + "end": 46482, "loc": { "start": { - "line": 1154, + "line": 1225, "column": 27 }, "end": { - "line": 1154, - "column": 28 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 44898, - "end": 44899, - "loc": { - "start": { - "line": 1154, + "line": 1225, "column": 28 - }, - "end": { - "line": 1154, - "column": 29 } } }, @@ -207206,16 +212196,16 @@ "binop": null, "updateContext": null }, - "start": 44899, - "end": 44900, + "start": 46482, + "end": 46483, "loc": { "start": { - "line": 1154, - "column": 29 + "line": 1225, + "column": 28 }, "end": { - "line": 1154, - "column": 30 + "line": 1225, + "column": 29 } } }, @@ -207234,15 +212224,15 @@ "updateContext": null }, "value": "this", - "start": 44909, - "end": 44913, + "start": 46492, + "end": 46496, "loc": { "start": { - "line": 1155, + "line": 1226, "column": 8 }, "end": { - "line": 1155, + "line": 1226, "column": 12 } } @@ -207260,15 +212250,15 @@ "binop": null, "updateContext": null }, - "start": 44913, - "end": 44914, + "start": 46496, + "end": 46497, "loc": { "start": { - "line": 1155, + "line": 1226, "column": 12 }, "end": { - "line": 1155, + "line": 1226, "column": 13 } } @@ -207285,17 +212275,17 @@ "postfix": false, "binop": null }, - "value": "_dtxBuckets", - "start": 44914, - "end": 44925, + "value": "_numTriangles", + "start": 46497, + "end": 46510, "loc": { "start": { - "line": 1155, + "line": 1226, "column": 13 }, "end": { - "line": 1155, - "column": 24 + "line": 1226, + "column": 26 } } }, @@ -207313,66 +212303,43 @@ "updateContext": null }, "value": "=", - "start": 44926, - "end": 44927, + "start": 46511, + "end": 46512, "loc": { "start": { - "line": 1155, - "column": 25 - }, - "end": { - "line": 1155, - "column": 26 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 44928, - "end": 44929, - "loc": { - "start": { - "line": 1155, + "line": 1226, "column": 27 }, "end": { - "line": 1155, + "line": 1226, "column": 28 } } }, { "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": 44929, - "end": 44930, + "value": 0, + "start": 46513, + "end": 46514, "loc": { "start": { - "line": 1155, - "column": 28 + "line": 1226, + "column": 29 }, "end": { - "line": 1155, - "column": 29 + "line": 1226, + "column": 30 } } }, @@ -207389,32 +212356,16 @@ "binop": null, "updateContext": null }, - "start": 44930, - "end": 44931, + "start": 46514, + "end": 46515, "loc": { "start": { - "line": 1155, - "column": 29 - }, - "end": { - "line": 1155, + "line": 1226, "column": 30 - } - } - }, - { - "type": "CommentLine", - "value": " Geometries with optimizations used for data texture representation", - "start": 44932, - "end": 45001, - "loc": { - "start": { - "line": 1155, - "column": 31 }, "end": { - "line": 1155, - "column": 100 + "line": 1226, + "column": 31 } } }, @@ -207433,15 +212384,15 @@ "updateContext": null }, "value": "this", - "start": 45010, - "end": 45014, + "start": 46524, + "end": 46528, "loc": { "start": { - "line": 1156, + "line": 1227, "column": 8 }, "end": { - "line": 1156, + "line": 1227, "column": 12 } } @@ -207459,15 +212410,15 @@ "binop": null, "updateContext": null }, - "start": 45014, - "end": 45015, + "start": 46528, + "end": 46529, "loc": { "start": { - "line": 1156, + "line": 1227, "column": 12 }, "end": { - "line": 1156, + "line": 1227, "column": 13 } } @@ -207484,16 +212435,16 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 45015, - "end": 45024, + "value": "_numLines", + "start": 46529, + "end": 46538, "loc": { "start": { - "line": 1156, + "line": 1227, "column": 13 }, "end": { - "line": 1156, + "line": 1227, "column": 22 } } @@ -207512,74 +212463,78 @@ "updateContext": null }, "value": "=", - "start": 45025, - "end": 45026, + "start": 46539, + "end": 46540, "loc": { "start": { - "line": 1156, + "line": 1227, "column": 23 }, "end": { - "line": 1156, + "line": 1227, "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": 45027, - "end": 45028, + "value": 0, + "start": 46541, + "end": 46542, "loc": { "start": { - "line": 1156, + "line": 1227, "column": 25 }, "end": { - "line": 1156, + "line": 1227, "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": 45028, - "end": 45029, + "start": 46542, + "end": 46543, "loc": { "start": { - "line": 1156, + "line": 1227, "column": 26 }, "end": { - "line": 1156, + "line": 1227, "column": 27 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -207588,25 +212543,25 @@ "binop": null, "updateContext": null }, - "start": 45029, - "end": 45030, + "value": "this", + "start": 46552, + "end": 46556, "loc": { "start": { - "line": 1156, - "column": 27 + "line": 1228, + "column": 8 }, "end": { - "line": 1156, - "column": 28 + "line": 1228, + "column": 12 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -207615,49 +212570,75 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 45039, - "end": 45043, + "start": 46556, + "end": 46557, "loc": { "start": { - "line": 1157, - "column": 8 + "line": 1228, + "column": 12 }, "end": { - "line": 1157, - "column": 12 + "line": 1228, + "column": 13 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "_numPoints", + "start": 46557, + "end": 46567, + "loc": { + "start": { + "line": 1228, + "column": 13 + }, + "end": { + "line": 1228, + "column": 23 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 45043, - "end": 45044, + "value": "=", + "start": 46568, + "end": 46569, "loc": { "start": { - "line": 1157, - "column": 12 + "line": 1228, + "column": 24 }, "end": { - "line": 1157, - "column": 13 + "line": 1228, + "column": 25 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -207665,79 +212646,108 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_textureSets", - "start": 45044, - "end": 45056, + "value": 0, + "start": 46570, + "end": 46571, "loc": { "start": { - "line": 1157, - "column": 13 + "line": 1228, + "column": 26 + }, + "end": { + "line": 1228, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 46571, + "end": 46572, + "loc": { + "start": { + "line": 1228, + "column": 27 }, "end": { - "line": 1157, - "column": 25 + "line": 1228, + "column": 28 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 45057, - "end": 45058, + "value": "this", + "start": 46582, + "end": 46586, "loc": { "start": { - "line": 1157, - "column": 26 + "line": 1230, + "column": 8 }, "end": { - "line": 1157, - "column": 27 + "line": 1230, + "column": 12 } } }, { "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": 45059, - "end": 45060, + "start": 46586, + "end": 46587, "loc": { "start": { - "line": 1157, - "column": 28 + "line": 1230, + "column": 12 }, "end": { - "line": 1157, - "column": 29 + "line": 1230, + "column": 13 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -207745,49 +212755,50 @@ "postfix": false, "binop": null }, - "start": 45060, - "end": 45061, + "value": "_edgeThreshold", + "start": 46587, + "end": 46601, "loc": { "start": { - "line": 1157, - "column": 29 + "line": 1230, + "column": 13 }, "end": { - "line": 1157, - "column": 30 + "line": 1230, + "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": 45061, - "end": 45062, + "value": "=", + "start": 46602, + "end": 46603, "loc": { "start": { - "line": 1157, - "column": 30 + "line": 1230, + "column": 28 }, "end": { - "line": 1157, - "column": 31 + "line": 1230, + "column": 29 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -207795,20 +212806,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 45071, - "end": 45075, + "value": "cfg", + "start": 46604, + "end": 46607, "loc": { "start": { - "line": 1158, - "column": 8 + "line": 1230, + "column": 30 }, "end": { - "line": 1158, - "column": 12 + "line": 1230, + "column": 33 } } }, @@ -207825,16 +212835,16 @@ "binop": null, "updateContext": null }, - "start": 45075, - "end": 45076, + "start": 46607, + "end": 46608, "loc": { "start": { - "line": 1158, - "column": 12 + "line": 1230, + "column": 33 }, "end": { - "line": 1158, - "column": 13 + "line": 1230, + "column": 34 } } }, @@ -207850,119 +212860,112 @@ "postfix": false, "binop": null }, - "value": "_transforms", - "start": 45076, - "end": 45087, + "value": "edgeThreshold", + "start": 46608, + "end": 46621, "loc": { "start": { - "line": 1158, - "column": 13 + "line": 1230, + "column": 34 }, "end": { - "line": 1158, - "column": 24 + "line": 1230, + "column": 47 } } }, { "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": 45088, - "end": 45089, + "value": "||", + "start": 46622, + "end": 46624, "loc": { "start": { - "line": 1158, - "column": 25 + "line": 1230, + "column": 48 }, "end": { - "line": 1158, - "column": 26 + "line": 1230, + "column": 50 } } }, { "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": 45090, - "end": 45091, + "value": 10, + "start": 46625, + "end": 46627, "loc": { "start": { - "line": 1158, - "column": 27 + "line": 1230, + "column": 51 }, "end": { - "line": 1158, - "column": 28 + "line": 1230, + "column": 53 } } }, { "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": 45091, - "end": 45092, + "start": 46627, + "end": 46628, "loc": { "start": { - "line": 1158, - "column": 28 + "line": 1230, + "column": 53 }, "end": { - "line": 1158, - "column": 29 + "line": 1230, + "column": 54 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 45092, - "end": 45093, + "type": "CommentLine", + "value": " Build static matrix", + "start": 46638, + "end": 46660, "loc": { "start": { - "line": 1158, - "column": 29 + "line": 1232, + "column": 8 }, "end": { - "line": 1158, + "line": 1232, "column": 30 } } @@ -207982,15 +212985,15 @@ "updateContext": null }, "value": "this", - "start": 45102, - "end": 45106, + "start": 46670, + "end": 46674, "loc": { "start": { - "line": 1159, + "line": 1234, "column": 8 }, "end": { - "line": 1159, + "line": 1234, "column": 12 } } @@ -208008,15 +213011,15 @@ "binop": null, "updateContext": null }, - "start": 45106, - "end": 45107, + "start": 46674, + "end": 46675, "loc": { "start": { - "line": 1159, + "line": 1234, "column": 12 }, "end": { - "line": 1159, + "line": 1234, "column": 13 } } @@ -208033,16 +213036,16 @@ "postfix": false, "binop": null }, - "value": "_meshes", - "start": 45107, - "end": 45114, + "value": "_origin", + "start": 46675, + "end": 46682, "loc": { "start": { - "line": 1159, + "line": 1234, "column": 13 }, "end": { - "line": 1159, + "line": 1234, "column": 20 } } @@ -208061,23 +213064,23 @@ "updateContext": null }, "value": "=", - "start": 45115, - "end": 45116, + "start": 46683, + "end": 46684, "loc": { "start": { - "line": 1159, + "line": 1234, "column": 21 }, "end": { - "line": 1159, + "line": 1234, "column": 22 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -208086,22 +213089,23 @@ "postfix": false, "binop": null }, - "start": 45117, - "end": 45118, + "value": "math", + "start": 46685, + "end": 46689, "loc": { "start": { - "line": 1159, + "line": 1234, "column": 23 }, "end": { - "line": 1159, - "column": 24 + "line": 1234, + "column": 27 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -208109,51 +213113,76 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 46689, + "end": 46690, + "loc": { + "start": { + "line": 1234, + "column": 27 + }, + "end": { + "line": 1234, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 45118, - "end": 45119, + "value": "vec3", + "start": 46690, + "end": 46694, "loc": { "start": { - "line": 1159, - "column": 24 + "line": 1234, + "column": 28 }, "end": { - "line": 1159, - "column": 25 + "line": 1234, + "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": 45119, - "end": 45120, + "start": 46694, + "end": 46695, "loc": { "start": { - "line": 1159, - "column": 25 + "line": 1234, + "column": 32 }, "end": { - "line": 1159, - "column": 26 + "line": 1234, + "column": 33 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -208161,20 +213190,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 45129, - "end": 45133, + "value": "cfg", + "start": 46695, + "end": 46698, "loc": { "start": { - "line": 1160, - "column": 8 + "line": 1234, + "column": 33 }, "end": { - "line": 1160, - "column": 12 + "line": 1234, + "column": 36 } } }, @@ -208191,16 +213219,16 @@ "binop": null, "updateContext": null }, - "start": 45133, - "end": 45134, + "start": 46698, + "end": 46699, "loc": { "start": { - "line": 1160, - "column": 12 + "line": 1234, + "column": 36 }, "end": { - "line": 1160, - "column": 13 + "line": 1234, + "column": 37 } } }, @@ -208216,50 +213244,50 @@ "postfix": false, "binop": null }, - "value": "_unusedMeshes", - "start": 45134, - "end": 45147, + "value": "origin", + "start": 46699, + "end": 46705, "loc": { "start": { - "line": 1160, - "column": 13 + "line": 1234, + "column": 37 }, "end": { - "line": 1160, - "column": 26 + "line": 1234, + "column": 43 } } }, { "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": 45148, - "end": 45149, + "value": "||", + "start": 46706, + "end": 46708, "loc": { "start": { - "line": 1160, - "column": 27 + "line": 1234, + "column": 44 }, "end": { - "line": 1160, - "column": 28 + "line": 1234, + "column": 46 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -208267,49 +213295,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 45150, - "end": 45151, + "start": 46709, + "end": 46710, "loc": { "start": { - "line": 1160, - "column": 29 + "line": 1234, + "column": 47 }, "end": { - "line": 1160, - "column": 30 + "line": 1234, + "column": 48 } } }, { "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": 45151, - "end": 45152, + "value": 0, + "start": 46710, + "end": 46711, "loc": { "start": { - "line": 1160, - "column": 30 + "line": 1234, + "column": 48 }, "end": { - "line": 1160, - "column": 31 + "line": 1234, + "column": 49 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -208320,23 +213351,22 @@ "binop": null, "updateContext": null }, - "start": 45152, - "end": 45153, + "start": 46711, + "end": 46712, "loc": { "start": { - "line": 1160, - "column": 31 + "line": 1234, + "column": 49 }, "end": { - "line": 1160, - "column": 32 + "line": 1234, + "column": 50 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -208347,24 +213377,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 45162, - "end": 45166, + "value": 0, + "start": 46713, + "end": 46714, "loc": { "start": { - "line": 1161, - "column": 8 + "line": 1234, + "column": 51 }, "end": { - "line": 1161, - "column": 12 + "line": 1234, + "column": 52 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -208374,22 +213404,22 @@ "binop": null, "updateContext": null }, - "start": 45166, - "end": 45167, + "start": 46714, + "end": 46715, "loc": { "start": { - "line": 1161, - "column": 12 + "line": 1234, + "column": 52 }, "end": { - "line": 1161, - "column": 13 + "line": 1234, + "column": 53 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -208397,77 +213427,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "_entities", - "start": 45167, - "end": 45176, - "loc": { - "start": { - "line": 1161, - "column": 13 - }, - "end": { - "line": 1161, - "column": 22 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 45177, - "end": 45178, + "value": 0, + "start": 46716, + "end": 46717, "loc": { "start": { - "line": 1161, - "column": 23 + "line": 1234, + "column": 54 }, "end": { - "line": 1161, - "column": 24 + "line": 1234, + "column": 55 } } }, { "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": 45179, - "end": 45180, + "start": 46717, + "end": 46718, "loc": { "start": { - "line": 1161, - "column": 25 + "line": 1234, + "column": 55 }, "end": { - "line": 1161, - "column": 26 + "line": 1234, + "column": 56 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -208477,16 +213482,16 @@ "postfix": false, "binop": null }, - "start": 45180, - "end": 45181, + "start": 46718, + "end": 46719, "loc": { "start": { - "line": 1161, - "column": 26 + "line": 1234, + "column": 56 }, "end": { - "line": 1161, - "column": 27 + "line": 1234, + "column": 57 } } }, @@ -208503,32 +213508,16 @@ "binop": null, "updateContext": null }, - "start": 45181, - "end": 45182, - "loc": { - "start": { - "line": 1161, - "column": 27 - }, - "end": { - "line": 1161, - "column": 28 - } - } - }, - { - "type": "CommentBlock", - "value": "* @private *", - "start": 45192, - "end": 45208, + "start": 46719, + "end": 46720, "loc": { "start": { - "line": 1163, - "column": 8 + "line": 1234, + "column": 57 }, "end": { - "line": 1163, - "column": 24 + "line": 1234, + "column": 58 } } }, @@ -208547,15 +213536,15 @@ "updateContext": null }, "value": "this", - "start": 45217, - "end": 45221, + "start": 46729, + "end": 46733, "loc": { "start": { - "line": 1164, + "line": 1235, "column": 8 }, "end": { - "line": 1164, + "line": 1235, "column": 12 } } @@ -208573,15 +213562,15 @@ "binop": null, "updateContext": null }, - "start": 45221, - "end": 45222, + "start": 46733, + "end": 46734, "loc": { "start": { - "line": 1164, + "line": 1235, "column": 12 }, "end": { - "line": 1164, + "line": 1235, "column": 13 } } @@ -208598,17 +213587,17 @@ "postfix": false, "binop": null }, - "value": "renderFlags", - "start": 45222, - "end": 45233, + "value": "_position", + "start": 46734, + "end": 46743, "loc": { "start": { - "line": 1164, + "line": 1235, "column": 13 }, "end": { - "line": 1164, - "column": 24 + "line": 1235, + "column": 22 } } }, @@ -208626,77 +213615,75 @@ "updateContext": null }, "value": "=", - "start": 45234, - "end": 45235, + "start": 46744, + "end": 46745, "loc": { "start": { - "line": 1164, - "column": 25 + "line": 1235, + "column": 23 }, "end": { - "line": 1164, - "column": 26 + "line": 1235, + "column": 24 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "new", - "start": 45236, - "end": 45239, + "value": "math", + "start": 46746, + "end": 46750, "loc": { "start": { - "line": 1164, - "column": 27 + "line": 1235, + "column": 25 }, "end": { - "line": 1164, - "column": 30 + "line": 1235, + "column": 29 } } }, { "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": "RenderFlags", - "start": 45240, - "end": 45251, + "start": 46750, + "end": 46751, "loc": { "start": { - "line": 1164, - "column": 31 + "line": 1235, + "column": 29 }, "end": { - "line": 1164, - "column": 42 + "line": 1235, + "column": 30 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -208705,24 +213692,25 @@ "postfix": false, "binop": null }, - "start": 45251, - "end": 45252, + "value": "vec3", + "start": 46751, + "end": 46755, "loc": { "start": { - "line": 1164, - "column": 42 + "line": 1235, + "column": 30 }, "end": { - "line": 1164, - "column": 43 + "line": 1235, + "column": 34 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -208730,67 +213718,50 @@ "postfix": false, "binop": null }, - "start": 45252, - "end": 45253, + "start": 46755, + "end": 46756, "loc": { "start": { - "line": 1164, - "column": 43 + "line": 1235, + "column": 34 }, "end": { - "line": 1164, - "column": 44 + "line": 1235, + "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": 45253, - "end": 45254, - "loc": { - "start": { - "line": 1164, - "column": 44 - }, - "end": { - "line": 1164, - "column": 45 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 45264, - "end": 45299, + "value": "cfg", + "start": 46756, + "end": 46759, "loc": { "start": { - "line": 1166, - "column": 8 + "line": 1235, + "column": 35 }, "end": { - "line": 1168, - "column": 11 + "line": 1235, + "column": 38 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -208799,96 +213770,95 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 45308, - "end": 45312, + "start": 46759, + "end": 46760, "loc": { "start": { - "line": 1169, - "column": 8 + "line": 1235, + "column": 38 }, "end": { - "line": 1169, - "column": 12 + "line": 1235, + "column": 39 } } }, { "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": 45312, - "end": 45313, + "value": "position", + "start": 46760, + "end": 46768, "loc": { "start": { - "line": 1169, - "column": 12 + "line": 1235, + "column": 39 }, "end": { - "line": 1169, - "column": 13 + "line": 1235, + "column": 47 } } }, { "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": "numGeometries", - "start": 45313, - "end": 45326, + "value": "||", + "start": 46769, + "end": 46771, "loc": { "start": { - "line": 1169, - "column": 13 + "line": 1235, + "column": 48 }, "end": { - "line": 1169, - "column": 26 + "line": 1235, + "column": 50 } } }, { "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": 45327, - "end": 45328, + "start": 46772, + "end": 46773, "loc": { "start": { - "line": 1169, - "column": 27 + "line": 1235, + "column": 51 }, "end": { - "line": 1169, - "column": 28 + "line": 1235, + "column": 52 } } }, @@ -208906,22 +213876,22 @@ "updateContext": null }, "value": 0, - "start": 45329, - "end": 45330, + "start": 46773, + "end": 46774, "loc": { "start": { - "line": 1169, - "column": 29 + "line": 1235, + "column": 52 }, "end": { - "line": 1169, - "column": 30 + "line": 1235, + "column": 53 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -208932,87 +213902,22 @@ "binop": null, "updateContext": null }, - "start": 45330, - "end": 45331, - "loc": { - "start": { - "line": 1169, - "column": 30 - }, - "end": { - "line": 1169, - "column": 31 - } - } - }, - { - "type": "CommentLine", - "value": " Number of geometries created with createGeometry()", - "start": 45332, - "end": 45385, - "loc": { - "start": { - "line": 1169, - "column": 32 - }, - "end": { - "line": 1169, - "column": 85 - } - } - }, - { - "type": "CommentLine", - "value": " These counts are used to avoid unnecessary render passes", - "start": 45395, - "end": 45454, - "loc": { - "start": { - "line": 1171, - "column": 8 - }, - "end": { - "line": 1171, - "column": 67 - } - } - }, - { - "type": "CommentLine", - "value": " They are incremented or decremented exclusively by BatchingLayer and InstancingLayer", - "start": 45463, - "end": 45550, - "loc": { - "start": { - "line": 1172, - "column": 8 - }, - "end": { - "line": 1172, - "column": 95 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 45560, - "end": 45595, + "start": 46774, + "end": 46775, "loc": { "start": { - "line": 1174, - "column": 8 + "line": 1235, + "column": 53 }, "end": { - "line": 1176, - "column": 11 + "line": 1235, + "column": 54 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -209023,24 +213928,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 45604, - "end": 45608, + "value": 0, + "start": 46776, + "end": 46777, "loc": { "start": { - "line": 1177, - "column": 8 + "line": 1235, + "column": 55 }, "end": { - "line": 1177, - "column": 12 + "line": 1235, + "column": 56 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -209050,22 +213955,22 @@ "binop": null, "updateContext": null }, - "start": 45608, - "end": 45609, + "start": 46777, + "end": 46778, "loc": { "start": { - "line": 1177, - "column": 12 + "line": 1235, + "column": 56 }, "end": { - "line": 1177, - "column": 13 + "line": 1235, + "column": 57 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -209073,73 +213978,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "numPortions", - "start": 45609, - "end": 45620, + "value": 0, + "start": 46779, + "end": 46780, "loc": { "start": { - "line": 1177, - "column": 13 + "line": 1235, + "column": 58 }, "end": { - "line": 1177, - "column": 24 + "line": 1235, + "column": 59 } } }, { "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": 45621, - "end": 45622, + "start": 46780, + "end": 46781, "loc": { "start": { - "line": 1177, - "column": 25 + "line": 1235, + "column": 59 }, "end": { - "line": 1177, - "column": 26 + "line": 1235, + "column": 60 } } }, { "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": 45623, - "end": 45624, + "start": 46781, + "end": 46782, "loc": { "start": { - "line": 1177, - "column": 27 + "line": 1235, + "column": 60 }, "end": { - "line": 1177, - "column": 28 + "line": 1235, + "column": 61 } } }, @@ -209156,32 +214059,16 @@ "binop": null, "updateContext": null }, - "start": 45624, - "end": 45625, - "loc": { - "start": { - "line": 1177, - "column": 28 - }, - "end": { - "line": 1177, - "column": 29 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 45635, - "end": 45670, + "start": 46782, + "end": 46783, "loc": { "start": { - "line": 1179, - "column": 8 + "line": 1235, + "column": 61 }, "end": { - "line": 1181, - "column": 11 + "line": 1235, + "column": 62 } } }, @@ -209200,15 +214087,15 @@ "updateContext": null }, "value": "this", - "start": 45679, - "end": 45683, + "start": 46792, + "end": 46796, "loc": { "start": { - "line": 1182, + "line": 1236, "column": 8 }, "end": { - "line": 1182, + "line": 1236, "column": 12 } } @@ -209226,15 +214113,15 @@ "binop": null, "updateContext": null }, - "start": 45683, - "end": 45684, + "start": 46796, + "end": 46797, "loc": { "start": { - "line": 1182, + "line": 1236, "column": 12 }, "end": { - "line": 1182, + "line": 1236, "column": 13 } } @@ -209251,17 +214138,17 @@ "postfix": false, "binop": null }, - "value": "numVisibleLayerPortions", - "start": 45684, - "end": 45707, + "value": "_rotation", + "start": 46797, + "end": 46806, "loc": { "start": { - "line": 1182, + "line": 1236, "column": 13 }, "end": { - "line": 1182, - "column": 36 + "line": 1236, + "column": 22 } } }, @@ -209279,22 +214166,22 @@ "updateContext": null }, "value": "=", - "start": 45708, - "end": 45709, + "start": 46807, + "end": 46808, "loc": { "start": { - "line": 1182, - "column": 37 + "line": 1236, + "column": 23 }, "end": { - "line": 1182, - "column": 38 + "line": 1236, + "column": 24 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -209302,27 +214189,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 45710, - "end": 45711, + "value": "math", + "start": 46809, + "end": 46813, "loc": { "start": { - "line": 1182, - "column": 39 + "line": 1236, + "column": 25 }, "end": { - "line": 1182, - "column": 40 + "line": 1236, + "column": 29 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -209332,39 +214218,73 @@ "binop": null, "updateContext": null }, - "start": 45711, - "end": 45712, + "start": 46813, + "end": 46814, "loc": { "start": { - "line": 1182, - "column": 40 + "line": 1236, + "column": 29 }, "end": { - "line": 1182, - "column": 41 + "line": 1236, + "column": 30 } } }, { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 45722, - "end": 45757, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "vec3", + "start": 46814, + "end": 46818, "loc": { "start": { - "line": 1184, - "column": 8 + "line": 1236, + "column": 30 }, "end": { - "line": 1186, - "column": 11 + "line": 1236, + "column": 34 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 46818, + "end": 46819, + "loc": { + "start": { + "line": 1236, + "column": 34 + }, + "end": { + "line": 1236, + "column": 35 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -209372,20 +214292,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 45766, - "end": 45770, + "value": "cfg", + "start": 46819, + "end": 46822, "loc": { "start": { - "line": 1187, - "column": 8 + "line": 1236, + "column": 35 }, "end": { - "line": 1187, - "column": 12 + "line": 1236, + "column": 38 } } }, @@ -209402,16 +214321,16 @@ "binop": null, "updateContext": null }, - "start": 45770, - "end": 45771, + "start": 46822, + "end": 46823, "loc": { "start": { - "line": 1187, - "column": 12 + "line": 1236, + "column": 38 }, "end": { - "line": 1187, - "column": 13 + "line": 1236, + "column": 39 } } }, @@ -209427,51 +214346,51 @@ "postfix": false, "binop": null }, - "value": "numTransparentLayerPortions", - "start": 45771, - "end": 45798, + "value": "rotation", + "start": 46823, + "end": 46831, "loc": { "start": { - "line": 1187, - "column": 13 + "line": 1236, + "column": 39 }, "end": { - "line": 1187, - "column": 40 + "line": 1236, + "column": 47 } } }, { "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": 45799, - "end": 45800, + "value": "||", + "start": 46832, + "end": 46834, "loc": { "start": { - "line": 1187, - "column": 41 + "line": 1236, + "column": 48 }, "end": { - "line": 1187, - "column": 42 + "line": 1236, + "column": 50 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -209481,25 +214400,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 45801, - "end": 45802, + "start": 46835, + "end": 46836, "loc": { "start": { - "line": 1187, - "column": 43 + "line": 1236, + "column": 51 }, "end": { - "line": 1187, - "column": 44 + "line": 1236, + "column": 52 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -209508,39 +214426,49 @@ "binop": null, "updateContext": null }, - "start": 45802, - "end": 45803, + "value": 0, + "start": 46836, + "end": 46837, "loc": { "start": { - "line": 1187, - "column": 44 + "line": 1236, + "column": 52 }, "end": { - "line": 1187, - "column": 45 + "line": 1236, + "column": 53 } } }, { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 45813, - "end": 45848, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 46837, + "end": 46838, "loc": { "start": { - "line": 1189, - "column": 8 + "line": 1236, + "column": 53 }, "end": { - "line": 1191, - "column": 11 + "line": 1236, + "column": 54 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -209551,24 +214479,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 45857, - "end": 45861, + "value": 0, + "start": 46839, + "end": 46840, "loc": { "start": { - "line": 1192, - "column": 8 + "line": 1236, + "column": 55 }, "end": { - "line": 1192, - "column": 12 + "line": 1236, + "column": 56 } } }, { - "type": { - "label": ".", - "beforeExpr": false, + "type": { + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -209578,22 +214506,22 @@ "binop": null, "updateContext": null }, - "start": 45861, - "end": 45862, + "start": 46840, + "end": 46841, "loc": { "start": { - "line": 1192, - "column": 12 + "line": 1236, + "column": 56 }, "end": { - "line": 1192, - "column": 13 + "line": 1236, + "column": 57 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -209601,73 +214529,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "numXRayedLayerPortions", - "start": 45862, - "end": 45884, + "value": 0, + "start": 46842, + "end": 46843, "loc": { "start": { - "line": 1192, - "column": 13 + "line": 1236, + "column": 58 }, "end": { - "line": 1192, - "column": 35 + "line": 1236, + "column": 59 } } }, { "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": 45885, - "end": 45886, + "start": 46843, + "end": 46844, "loc": { "start": { - "line": 1192, - "column": 36 + "line": 1236, + "column": 59 }, "end": { - "line": 1192, - "column": 37 + "line": 1236, + "column": 60 } } }, { "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": 45887, - "end": 45888, + "start": 46844, + "end": 46845, "loc": { "start": { - "line": 1192, - "column": 38 + "line": 1236, + "column": 60 }, "end": { - "line": 1192, - "column": 39 + "line": 1236, + "column": 61 } } }, @@ -209684,32 +214610,16 @@ "binop": null, "updateContext": null }, - "start": 45888, - "end": 45889, - "loc": { - "start": { - "line": 1192, - "column": 39 - }, - "end": { - "line": 1192, - "column": 40 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 45899, - "end": 45934, + "start": 46845, + "end": 46846, "loc": { "start": { - "line": 1194, - "column": 8 + "line": 1236, + "column": 61 }, "end": { - "line": 1196, - "column": 11 + "line": 1236, + "column": 62 } } }, @@ -209728,15 +214638,15 @@ "updateContext": null }, "value": "this", - "start": 45943, - "end": 45947, + "start": 46855, + "end": 46859, "loc": { "start": { - "line": 1197, + "line": 1237, "column": 8 }, "end": { - "line": 1197, + "line": 1237, "column": 12 } } @@ -209754,15 +214664,15 @@ "binop": null, "updateContext": null }, - "start": 45947, - "end": 45948, + "start": 46859, + "end": 46860, "loc": { "start": { - "line": 1197, + "line": 1237, "column": 12 }, "end": { - "line": 1197, + "line": 1237, "column": 13 } } @@ -209779,17 +214689,17 @@ "postfix": false, "binop": null }, - "value": "numHighlightedLayerPortions", - "start": 45948, - "end": 45975, + "value": "_quaternion", + "start": 46860, + "end": 46871, "loc": { "start": { - "line": 1197, + "line": 1237, "column": 13 }, "end": { - "line": 1197, - "column": 40 + "line": 1237, + "column": 24 } } }, @@ -209807,22 +214717,22 @@ "updateContext": null }, "value": "=", - "start": 45976, - "end": 45977, + "start": 46872, + "end": 46873, "loc": { "start": { - "line": 1197, - "column": 41 + "line": 1237, + "column": 25 }, "end": { - "line": 1197, - "column": 42 + "line": 1237, + "column": 26 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -209830,27 +214740,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 45978, - "end": 45979, + "value": "math", + "start": 46874, + "end": 46878, "loc": { "start": { - "line": 1197, - "column": 43 + "line": 1237, + "column": 27 }, "end": { - "line": 1197, - "column": 44 + "line": 1237, + "column": 31 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -209860,39 +214769,22 @@ "binop": null, "updateContext": null }, - "start": 45979, - "end": 45980, - "loc": { - "start": { - "line": 1197, - "column": 44 - }, - "end": { - "line": 1197, - "column": 45 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 45990, - "end": 46025, + "start": 46878, + "end": 46879, "loc": { "start": { - "line": 1199, - "column": 8 + "line": 1237, + "column": 31 }, "end": { - "line": 1201, - "column": 11 + "line": 1237, + "column": 32 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -209900,46 +214792,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 46034, - "end": 46038, + "value": "vec4", + "start": 46879, + "end": 46883, "loc": { "start": { - "line": 1202, - "column": 8 + "line": 1237, + "column": 32 }, "end": { - "line": 1202, - "column": 12 + "line": 1237, + "column": 36 } } }, { "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": 46038, - "end": 46039, + "start": 46883, + "end": 46884, "loc": { "start": { - "line": 1202, - "column": 12 + "line": 1237, + "column": 36 }, "end": { - "line": 1202, - "column": 13 + "line": 1237, + "column": 37 } } }, @@ -209955,50 +214845,49 @@ "postfix": false, "binop": null }, - "value": "numSelectedLayerPortions", - "start": 46039, - "end": 46063, + "value": "cfg", + "start": 46884, + "end": 46887, "loc": { "start": { - "line": 1202, - "column": 13 + "line": 1237, + "column": 37 }, "end": { - "line": 1202, - "column": 37 + "line": 1237, + "column": 40 } } }, { "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": 46064, - "end": 46065, + "start": 46887, + "end": 46888, "loc": { "start": { - "line": 1202, - "column": 38 + "line": 1237, + "column": 40 }, "end": { - "line": 1202, - "column": 39 + "line": 1237, + "column": 41 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210006,26 +214895,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46066, - "end": 46067, + "value": "quaternion", + "start": 46888, + "end": 46898, "loc": { "start": { - "line": 1202, - "column": 40 + "line": 1237, + "column": 41 }, "end": { - "line": 1202, - "column": 41 + "line": 1237, + "column": 51 } } }, { "type": { - "label": ";", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -210033,43 +214921,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 46067, - "end": 46068, - "loc": { - "start": { - "line": 1202, - "column": 41 - }, - "end": { - "line": 1202, - "column": 42 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 46078, - "end": 46113, + "value": "||", + "start": 46899, + "end": 46901, "loc": { "start": { - "line": 1204, - "column": 8 + "line": 1237, + "column": 52 }, "end": { - "line": 1206, - "column": 11 + "line": 1237, + "column": 54 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -210079,25 +214951,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 46122, - "end": 46126, + "start": 46902, + "end": 46903, "loc": { "start": { - "line": 1207, - "column": 8 + "line": 1237, + "column": 55 }, "end": { - "line": 1207, - "column": 12 + "line": 1237, + "column": 56 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -210106,69 +214977,43 @@ "binop": null, "updateContext": null }, - "start": 46126, - "end": 46127, - "loc": { - "start": { - "line": 1207, - "column": 12 - }, - "end": { - "line": 1207, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "numEdgesLayerPortions", - "start": 46127, - "end": 46148, + "value": 0, + "start": 46903, + "end": 46904, "loc": { "start": { - "line": 1207, - "column": 13 + "line": 1237, + "column": 56 }, "end": { - "line": 1207, - "column": 34 + "line": 1237, + "column": 57 } } }, { "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": 46149, - "end": 46150, + "start": 46904, + "end": 46905, "loc": { "start": { - "line": 1207, - "column": 35 + "line": 1237, + "column": 57 }, "end": { - "line": 1207, - "column": 36 + "line": 1237, + "column": 58 } } }, @@ -210186,22 +215031,22 @@ "updateContext": null }, "value": 0, - "start": 46151, - "end": 46152, + "start": 46906, + "end": 46907, "loc": { "start": { - "line": 1207, - "column": 37 + "line": 1237, + "column": 59 }, "end": { - "line": 1207, - "column": 38 + "line": 1237, + "column": 60 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -210212,39 +215057,22 @@ "binop": null, "updateContext": null }, - "start": 46152, - "end": 46153, - "loc": { - "start": { - "line": 1207, - "column": 38 - }, - "end": { - "line": 1207, - "column": 39 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 46163, - "end": 46198, + "start": 46907, + "end": 46908, "loc": { "start": { - "line": 1209, - "column": 8 + "line": 1237, + "column": 60 }, "end": { - "line": 1211, - "column": 11 + "line": 1237, + "column": 61 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210255,24 +215083,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 46207, - "end": 46211, + "value": 0, + "start": 46909, + "end": 46910, "loc": { "start": { - "line": 1212, - "column": 8 + "line": 1237, + "column": 62 }, "end": { - "line": 1212, - "column": 12 + "line": 1237, + "column": 63 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -210282,22 +215110,22 @@ "binop": null, "updateContext": null }, - "start": 46211, - "end": 46212, + "start": 46910, + "end": 46911, "loc": { "start": { - "line": 1212, - "column": 12 + "line": 1237, + "column": 63 }, "end": { - "line": 1212, - "column": 13 + "line": 1237, + "column": 64 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210305,73 +215133,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "numPickableLayerPortions", - "start": 46212, - "end": 46236, + "value": 1, + "start": 46912, + "end": 46913, "loc": { "start": { - "line": 1212, - "column": 13 + "line": 1237, + "column": 65 }, "end": { - "line": 1212, - "column": 37 + "line": 1237, + "column": 66 } } }, { "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": 46237, - "end": 46238, + "start": 46913, + "end": 46914, "loc": { "start": { - "line": 1212, - "column": 38 + "line": 1237, + "column": 66 }, "end": { - "line": 1212, - "column": 39 + "line": 1237, + "column": 67 } } }, { "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": 46239, - "end": 46240, + "start": 46914, + "end": 46915, "loc": { "start": { - "line": 1212, - "column": 40 + "line": 1237, + "column": 67 }, "end": { - "line": 1212, - "column": 41 + "line": 1237, + "column": 68 } } }, @@ -210388,32 +215214,16 @@ "binop": null, "updateContext": null }, - "start": 46240, - "end": 46241, - "loc": { - "start": { - "line": 1212, - "column": 41 - }, - "end": { - "line": 1212, - "column": 42 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 46251, - "end": 46286, + "start": 46915, + "end": 46916, "loc": { "start": { - "line": 1214, - "column": 8 + "line": 1237, + "column": 68 }, "end": { - "line": 1216, - "column": 11 + "line": 1237, + "column": 69 } } }, @@ -210432,15 +215242,15 @@ "updateContext": null }, "value": "this", - "start": 46295, - "end": 46299, + "start": 46925, + "end": 46929, "loc": { "start": { - "line": 1217, + "line": 1238, "column": 8 }, "end": { - "line": 1217, + "line": 1238, "column": 12 } } @@ -210458,15 +215268,15 @@ "binop": null, "updateContext": null }, - "start": 46299, - "end": 46300, + "start": 46929, + "end": 46930, "loc": { "start": { - "line": 1217, + "line": 1238, "column": 12 }, "end": { - "line": 1217, + "line": 1238, "column": 13 } } @@ -210483,17 +215293,17 @@ "postfix": false, "binop": null }, - "value": "numClippableLayerPortions", - "start": 46300, - "end": 46325, + "value": "_conjugateQuaternion", + "start": 46930, + "end": 46950, "loc": { "start": { - "line": 1217, + "line": 1238, "column": 13 }, "end": { - "line": 1217, - "column": 38 + "line": 1238, + "column": 33 } } }, @@ -210511,22 +215321,22 @@ "updateContext": null }, "value": "=", - "start": 46326, - "end": 46327, + "start": 46951, + "end": 46952, "loc": { "start": { - "line": 1217, - "column": 39 + "line": 1238, + "column": 34 }, "end": { - "line": 1217, - "column": 40 + "line": 1238, + "column": 35 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210534,27 +215344,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46328, - "end": 46329, + "value": "math", + "start": 46953, + "end": 46957, "loc": { "start": { - "line": 1217, - "column": 41 + "line": 1238, + "column": 36 }, "end": { - "line": 1217, - "column": 42 + "line": 1238, + "column": 40 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -210564,39 +215373,22 @@ "binop": null, "updateContext": null }, - "start": 46329, - "end": 46330, - "loc": { - "start": { - "line": 1217, - "column": 42 - }, - "end": { - "line": 1217, - "column": 43 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 46340, - "end": 46375, + "start": 46957, + "end": 46958, "loc": { "start": { - "line": 1219, - "column": 8 + "line": 1238, + "column": 40 }, "end": { - "line": 1221, - "column": 11 + "line": 1238, + "column": 41 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210604,46 +215396,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 46384, - "end": 46388, + "value": "vec4", + "start": 46958, + "end": 46962, "loc": { "start": { - "line": 1222, - "column": 8 + "line": 1238, + "column": 41 }, "end": { - "line": 1222, - "column": 12 + "line": 1238, + "column": 45 } } }, { "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": 46388, - "end": 46389, + "start": 46962, + "end": 46963, "loc": { "start": { - "line": 1222, - "column": 12 + "line": 1238, + "column": 45 }, "end": { - "line": 1222, - "column": 13 + "line": 1238, + "column": 46 } } }, @@ -210659,50 +215449,49 @@ "postfix": false, "binop": null }, - "value": "numCulledLayerPortions", - "start": 46389, - "end": 46411, + "value": "cfg", + "start": 46963, + "end": 46966, "loc": { "start": { - "line": 1222, - "column": 13 + "line": 1238, + "column": 46 }, "end": { - "line": 1222, - "column": 35 + "line": 1238, + "column": 49 } } }, { "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": 46412, - "end": 46413, + "start": 46966, + "end": 46967, "loc": { "start": { - "line": 1222, - "column": 36 + "line": 1238, + "column": 49 }, "end": { - "line": 1222, - "column": 37 + "line": 1238, + "column": 50 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210710,26 +215499,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46414, - "end": 46415, + "value": "quaternion", + "start": 46967, + "end": 46977, "loc": { "start": { - "line": 1222, - "column": 38 + "line": 1238, + "column": 50 }, "end": { - "line": 1222, - "column": 39 + "line": 1238, + "column": 60 } } }, { "type": { - "label": ";", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -210737,26 +215525,52 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": 1, + "updateContext": null + }, + "value": "||", + "start": 46978, + "end": 46980, + "loc": { + "start": { + "line": 1238, + "column": 61 + }, + "end": { + "line": 1238, + "column": 63 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 46415, - "end": 46416, + "start": 46981, + "end": 46982, "loc": { "start": { - "line": 1222, - "column": 39 + "line": 1238, + "column": 64 }, "end": { - "line": 1222, - "column": 40 + "line": 1238, + "column": 65 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210767,24 +215581,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 46426, - "end": 46430, + "value": 0, + "start": 46982, + "end": 46983, "loc": { "start": { - "line": 1224, - "column": 8 + "line": 1238, + "column": 65 }, "end": { - "line": 1224, - "column": 12 + "line": 1238, + "column": 66 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -210794,22 +215608,22 @@ "binop": null, "updateContext": null }, - "start": 46430, - "end": 46431, + "start": 46983, + "end": 46984, "loc": { "start": { - "line": 1224, - "column": 12 + "line": 1238, + "column": 66 }, "end": { - "line": 1224, - "column": 13 + "line": 1238, + "column": 67 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210817,46 +215631,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "numEntities", - "start": 46431, - "end": 46442, + "value": 0, + "start": 46985, + "end": 46986, "loc": { "start": { - "line": 1224, - "column": 13 + "line": 1238, + "column": 68 }, "end": { - "line": 1224, - "column": 24 + "line": 1238, + "column": 69 } } }, { "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": 46443, - "end": 46444, + "start": 46986, + "end": 46987, "loc": { "start": { - "line": 1224, - "column": 25 + "line": 1238, + "column": 69 }, "end": { - "line": 1224, - "column": 26 + "line": 1238, + "column": 70 } } }, @@ -210874,22 +215688,22 @@ "updateContext": null }, "value": 0, - "start": 46445, - "end": 46446, + "start": 46988, + "end": 46989, "loc": { "start": { - "line": 1224, - "column": 27 + "line": 1238, + "column": 71 }, "end": { - "line": 1224, - "column": 28 + "line": 1238, + "column": 72 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -210900,23 +215714,22 @@ "binop": null, "updateContext": null }, - "start": 46446, - "end": 46447, + "start": 46989, + "end": 46990, "loc": { "start": { - "line": 1224, - "column": 28 + "line": 1238, + "column": 72 }, "end": { - "line": 1224, - "column": 29 + "line": 1238, + "column": 73 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -210927,23 +215740,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 46456, - "end": 46460, + "value": 1, + "start": 46991, + "end": 46992, "loc": { "start": { - "line": 1225, - "column": 8 + "line": 1238, + "column": 74 }, "end": { - "line": 1225, - "column": 12 + "line": 1238, + "column": 75 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -210954,24 +215767,24 @@ "binop": null, "updateContext": null }, - "start": 46460, - "end": 46461, + "start": 46992, + "end": 46993, "loc": { "start": { - "line": 1225, - "column": 12 + "line": 1238, + "column": 75 }, "end": { - "line": 1225, - "column": 13 + "line": 1238, + "column": 76 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -210979,52 +215792,51 @@ "postfix": false, "binop": null }, - "value": "_numTriangles", - "start": 46461, - "end": 46474, + "start": 46993, + "end": 46994, "loc": { "start": { - "line": 1225, - "column": 13 + "line": 1238, + "column": 76 }, "end": { - "line": 1225, - "column": 26 + "line": 1238, + "column": 77 } } }, { "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": 46475, - "end": 46476, + "start": 46994, + "end": 46995, "loc": { "start": { - "line": 1225, - "column": 27 + "line": 1238, + "column": 77 }, "end": { - "line": 1225, - "column": 28 + "line": 1238, + "column": 78 } } }, { "type": { - "label": "num", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -211033,50 +215845,48 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46477, - "end": 46478, + "value": "if", + "start": 47005, + "end": 47007, "loc": { "start": { - "line": 1225, - "column": 29 + "line": 1240, + "column": 8 }, "end": { - "line": 1225, - "column": 30 + "line": 1240, + "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": 46478, - "end": 46479, + "start": 47008, + "end": 47009, "loc": { "start": { - "line": 1225, - "column": 30 + "line": 1240, + "column": 11 }, "end": { - "line": 1225, - "column": 31 + "line": 1240, + "column": 12 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -211084,20 +215894,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 46488, - "end": 46492, + "value": "cfg", + "start": 47009, + "end": 47012, "loc": { "start": { - "line": 1226, - "column": 8 + "line": 1240, + "column": 12 }, "end": { - "line": 1226, - "column": 12 + "line": 1240, + "column": 15 } } }, @@ -211114,16 +215923,16 @@ "binop": null, "updateContext": null }, - "start": 46492, - "end": 46493, + "start": 47012, + "end": 47013, "loc": { "start": { - "line": 1226, - "column": 12 + "line": 1240, + "column": 15 }, "end": { - "line": 1226, - "column": 13 + "line": 1240, + "column": 16 } } }, @@ -211139,104 +215948,73 @@ "postfix": false, "binop": null }, - "value": "_numLines", - "start": 46493, - "end": 46502, - "loc": { - "start": { - "line": 1226, - "column": 13 - }, - "end": { - "line": 1226, - "column": 22 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 46503, - "end": 46504, + "value": "rotation", + "start": 47013, + "end": 47021, "loc": { "start": { - "line": 1226, - "column": 23 + "line": 1240, + "column": 16 }, "end": { - "line": 1226, + "line": 1240, "column": 24 } } }, { "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": 46505, - "end": 46506, + "start": 47021, + "end": 47022, "loc": { "start": { - "line": 1226, - "column": 25 + "line": 1240, + "column": 24 }, "end": { - "line": 1226, - "column": 26 + "line": 1240, + "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": 46506, - "end": 46507, + "start": 47023, + "end": 47024, "loc": { "start": { - "line": 1226, + "line": 1240, "column": 26 }, "end": { - "line": 1226, + "line": 1240, "column": 27 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -211244,20 +216022,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 46516, - "end": 46520, + "value": "math", + "start": 47037, + "end": 47041, "loc": { "start": { - "line": 1227, - "column": 8 + "line": 1241, + "column": 12 }, "end": { - "line": 1227, - "column": 12 + "line": 1241, + "column": 16 } } }, @@ -211274,16 +216051,16 @@ "binop": null, "updateContext": null }, - "start": 46520, - "end": 46521, + "start": 47041, + "end": 47042, "loc": { "start": { - "line": 1227, - "column": 12 + "line": 1241, + "column": 16 }, "end": { - "line": 1227, - "column": 13 + "line": 1241, + "column": 17 } } }, @@ -211299,50 +216076,49 @@ "postfix": false, "binop": null }, - "value": "_numPoints", - "start": 46521, - "end": 46531, + "value": "eulerToQuaternion", + "start": 47042, + "end": 47059, "loc": { "start": { - "line": 1227, - "column": 13 + "line": 1241, + "column": 17 }, "end": { - "line": 1227, - "column": 23 + "line": 1241, + "column": 34 } } }, { "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": 46532, - "end": 46533, + "start": 47059, + "end": 47060, "loc": { "start": { - "line": 1227, - "column": 24 + "line": 1241, + "column": 34 }, "end": { - "line": 1227, - "column": 25 + "line": 1241, + "column": 35 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -211353,24 +216129,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46534, - "end": 46535, + "value": "this", + "start": 47060, + "end": 47064, "loc": { "start": { - "line": 1227, - "column": 26 + "line": 1241, + "column": 35 }, "end": { - "line": 1227, - "column": 27 + "line": 1241, + "column": 39 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -211380,23 +216156,22 @@ "binop": null, "updateContext": null }, - "start": 46535, - "end": 46536, + "start": 47064, + "end": 47065, "loc": { "start": { - "line": 1227, - "column": 27 + "line": 1241, + "column": 39 }, "end": { - "line": 1227, - "column": 28 + "line": 1241, + "column": 40 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -211404,27 +216179,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 46546, - "end": 46550, + "value": "_rotation", + "start": 47065, + "end": 47074, "loc": { "start": { - "line": 1229, - "column": 8 + "line": 1241, + "column": 40 }, "end": { - "line": 1229, - "column": 12 + "line": 1241, + "column": 49 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -211434,22 +216208,22 @@ "binop": null, "updateContext": null }, - "start": 46550, - "end": 46551, + "start": 47074, + "end": 47075, "loc": { "start": { - "line": 1229, - "column": 12 + "line": 1241, + "column": 49 }, "end": { - "line": 1229, - "column": 13 + "line": 1241, + "column": 50 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -211457,52 +216231,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_edgeThreshold", - "start": 46551, - "end": 46565, + "value": "XYZ", + "start": 47076, + "end": 47081, "loc": { "start": { - "line": 1229, - "column": 13 + "line": 1241, + "column": 51 }, "end": { - "line": 1229, - "column": 27 + "line": 1241, + "column": 56 } } }, { "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": 46566, - "end": 46567, + "start": 47081, + "end": 47082, "loc": { "start": { - "line": 1229, - "column": 28 + "line": 1241, + "column": 56 }, "end": { - "line": 1229, - "column": 29 + "line": 1241, + "column": 57 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -211510,19 +216285,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 46568, - "end": 46571, + "value": "this", + "start": 47083, + "end": 47087, "loc": { "start": { - "line": 1229, - "column": 30 + "line": 1241, + "column": 58 }, "end": { - "line": 1229, - "column": 33 + "line": 1241, + "column": 62 } } }, @@ -211539,16 +216315,16 @@ "binop": null, "updateContext": null }, - "start": 46571, - "end": 46572, + "start": 47087, + "end": 47088, "loc": { "start": { - "line": 1229, - "column": 33 + "line": 1241, + "column": 62 }, "end": { - "line": 1229, - "column": 34 + "line": 1241, + "column": 63 } } }, @@ -211564,52 +216340,50 @@ "postfix": false, "binop": null }, - "value": "edgeThreshold", - "start": 46572, - "end": 46585, + "value": "_quaternion", + "start": 47088, + "end": 47099, "loc": { "start": { - "line": 1229, - "column": 34 + "line": 1241, + "column": 63 }, "end": { - "line": 1229, - "column": 47 + "line": 1241, + "column": 74 } } }, { "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": 46586, - "end": 46588, + "start": 47099, + "end": 47100, "loc": { "start": { - "line": 1229, - "column": 48 + "line": 1241, + "column": 74 }, "end": { - "line": 1229, - "column": 50 + "line": 1241, + "column": 75 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -211618,59 +216392,41 @@ "binop": null, "updateContext": null }, - "value": 10, - "start": 46589, - "end": 46591, + "start": 47100, + "end": 47101, "loc": { "start": { - "line": 1229, - "column": 51 + "line": 1241, + "column": 75 }, "end": { - "line": 1229, - "column": 53 + "line": 1241, + "column": 76 } } }, { "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": 46591, - "end": 46592, - "loc": { - "start": { - "line": 1229, - "column": 53 - }, - "end": { - "line": 1229, - "column": 54 - } - } - }, - { - "type": "CommentLine", - "value": " Build static matrix", - "start": 46602, - "end": 46624, + "start": 47110, + "end": 47111, "loc": { "start": { - "line": 1231, + "line": 1242, "column": 8 }, "end": { - "line": 1231, - "column": 30 + "line": 1242, + "column": 9 } } }, @@ -211689,15 +216445,15 @@ "updateContext": null }, "value": "this", - "start": 46634, - "end": 46638, + "start": 47120, + "end": 47124, "loc": { "start": { - "line": 1233, + "line": 1243, "column": 8 }, "end": { - "line": 1233, + "line": 1243, "column": 12 } } @@ -211715,15 +216471,15 @@ "binop": null, "updateContext": null }, - "start": 46638, - "end": 46639, + "start": 47124, + "end": 47125, "loc": { "start": { - "line": 1233, + "line": 1243, "column": 12 }, "end": { - "line": 1233, + "line": 1243, "column": 13 } } @@ -211740,17 +216496,17 @@ "postfix": false, "binop": null }, - "value": "_origin", - "start": 46639, - "end": 46646, + "value": "_scale", + "start": 47125, + "end": 47131, "loc": { "start": { - "line": 1233, + "line": 1243, "column": 13 }, "end": { - "line": 1233, - "column": 20 + "line": 1243, + "column": 19 } } }, @@ -211768,16 +216524,16 @@ "updateContext": null }, "value": "=", - "start": 46647, - "end": 46648, + "start": 47132, + "end": 47133, "loc": { "start": { - "line": 1233, - "column": 21 + "line": 1243, + "column": 20 }, "end": { - "line": 1233, - "column": 22 + "line": 1243, + "column": 21 } } }, @@ -211794,16 +216550,16 @@ "binop": null }, "value": "math", - "start": 46649, - "end": 46653, + "start": 47134, + "end": 47138, "loc": { "start": { - "line": 1233, - "column": 23 + "line": 1243, + "column": 22 }, "end": { - "line": 1233, - "column": 27 + "line": 1243, + "column": 26 } } }, @@ -211820,16 +216576,16 @@ "binop": null, "updateContext": null }, - "start": 46653, - "end": 46654, + "start": 47138, + "end": 47139, "loc": { "start": { - "line": 1233, - "column": 27 + "line": 1243, + "column": 26 }, "end": { - "line": 1233, - "column": 28 + "line": 1243, + "column": 27 } } }, @@ -211846,16 +216602,16 @@ "binop": null }, "value": "vec3", - "start": 46654, - "end": 46658, + "start": 47139, + "end": 47143, "loc": { "start": { - "line": 1233, - "column": 28 + "line": 1243, + "column": 27 }, "end": { - "line": 1233, - "column": 32 + "line": 1243, + "column": 31 } } }, @@ -211871,16 +216627,16 @@ "postfix": false, "binop": null }, - "start": 46658, - "end": 46659, + "start": 47143, + "end": 47144, "loc": { "start": { - "line": 1233, - "column": 32 + "line": 1243, + "column": 31 }, "end": { - "line": 1233, - "column": 33 + "line": 1243, + "column": 32 } } }, @@ -211897,16 +216653,16 @@ "binop": null }, "value": "cfg", - "start": 46659, - "end": 46662, + "start": 47144, + "end": 47147, "loc": { "start": { - "line": 1233, - "column": 33 + "line": 1243, + "column": 32 }, "end": { - "line": 1233, - "column": 36 + "line": 1243, + "column": 35 } } }, @@ -211923,16 +216679,16 @@ "binop": null, "updateContext": null }, - "start": 46662, - "end": 46663, + "start": 47147, + "end": 47148, "loc": { "start": { - "line": 1233, - "column": 36 + "line": 1243, + "column": 35 }, "end": { - "line": 1233, - "column": 37 + "line": 1243, + "column": 36 } } }, @@ -211948,17 +216704,17 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 46663, - "end": 46669, + "value": "scale", + "start": 47148, + "end": 47153, "loc": { "start": { - "line": 1233, - "column": 37 + "line": 1243, + "column": 36 }, "end": { - "line": 1233, - "column": 43 + "line": 1243, + "column": 41 } } }, @@ -211976,16 +216732,16 @@ "updateContext": null }, "value": "||", - "start": 46670, - "end": 46672, + "start": 47154, + "end": 47156, "loc": { "start": { - "line": 1233, - "column": 44 + "line": 1243, + "column": 42 }, "end": { - "line": 1233, - "column": 46 + "line": 1243, + "column": 44 } } }, @@ -212002,16 +216758,16 @@ "binop": null, "updateContext": null }, - "start": 46673, - "end": 46674, + "start": 47157, + "end": 47158, "loc": { "start": { - "line": 1233, - "column": 47 + "line": 1243, + "column": 45 }, "end": { - "line": 1233, - "column": 48 + "line": 1243, + "column": 46 } } }, @@ -212028,17 +216784,17 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46674, - "end": 46675, + "value": 1, + "start": 47158, + "end": 47159, "loc": { "start": { - "line": 1233, - "column": 48 + "line": 1243, + "column": 46 }, "end": { - "line": 1233, - "column": 49 + "line": 1243, + "column": 47 } } }, @@ -212055,16 +216811,16 @@ "binop": null, "updateContext": null }, - "start": 46675, - "end": 46676, + "start": 47159, + "end": 47160, "loc": { "start": { - "line": 1233, - "column": 49 + "line": 1243, + "column": 47 }, "end": { - "line": 1233, - "column": 50 + "line": 1243, + "column": 48 } } }, @@ -212081,17 +216837,17 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46677, - "end": 46678, + "value": 1, + "start": 47161, + "end": 47162, "loc": { "start": { - "line": 1233, - "column": 51 + "line": 1243, + "column": 49 }, "end": { - "line": 1233, - "column": 52 + "line": 1243, + "column": 50 } } }, @@ -212108,16 +216864,16 @@ "binop": null, "updateContext": null }, - "start": 46678, - "end": 46679, + "start": 47162, + "end": 47163, "loc": { "start": { - "line": 1233, - "column": 52 + "line": 1243, + "column": 50 }, "end": { - "line": 1233, - "column": 53 + "line": 1243, + "column": 51 } } }, @@ -212134,17 +216890,17 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46680, - "end": 46681, + "value": 1, + "start": 47164, + "end": 47165, "loc": { "start": { - "line": 1233, - "column": 54 + "line": 1243, + "column": 52 }, "end": { - "line": 1233, - "column": 55 + "line": 1243, + "column": 53 } } }, @@ -212161,16 +216917,16 @@ "binop": null, "updateContext": null }, - "start": 46681, - "end": 46682, + "start": 47165, + "end": 47166, "loc": { "start": { - "line": 1233, - "column": 55 + "line": 1243, + "column": 53 }, "end": { - "line": 1233, - "column": 56 + "line": 1243, + "column": 54 } } }, @@ -212186,16 +216942,16 @@ "postfix": false, "binop": null }, - "start": 46682, - "end": 46683, + "start": 47166, + "end": 47167, "loc": { "start": { - "line": 1233, - "column": 56 + "line": 1243, + "column": 54 }, "end": { - "line": 1233, - "column": 57 + "line": 1243, + "column": 55 } } }, @@ -212212,16 +216968,16 @@ "binop": null, "updateContext": null }, - "start": 46683, - "end": 46684, + "start": 47167, + "end": 47168, "loc": { "start": { - "line": 1233, - "column": 57 + "line": 1243, + "column": 55 }, "end": { - "line": 1233, - "column": 58 + "line": 1243, + "column": 56 } } }, @@ -212240,15 +216996,15 @@ "updateContext": null }, "value": "this", - "start": 46693, - "end": 46697, + "start": 47178, + "end": 47182, "loc": { "start": { - "line": 1234, + "line": 1245, "column": 8 }, "end": { - "line": 1234, + "line": 1245, "column": 12 } } @@ -212266,15 +217022,15 @@ "binop": null, "updateContext": null }, - "start": 46697, - "end": 46698, + "start": 47182, + "end": 47183, "loc": { "start": { - "line": 1234, + "line": 1245, "column": 12 }, "end": { - "line": 1234, + "line": 1245, "column": 13 } } @@ -212291,17 +217047,17 @@ "postfix": false, "binop": null }, - "value": "_position", - "start": 46698, - "end": 46707, + "value": "_worldRotationMatrix", + "start": 47183, + "end": 47203, "loc": { "start": { - "line": 1234, + "line": 1245, "column": 13 }, "end": { - "line": 1234, - "column": 22 + "line": 1245, + "column": 33 } } }, @@ -212319,16 +217075,16 @@ "updateContext": null }, "value": "=", - "start": 46708, - "end": 46709, + "start": 47204, + "end": 47205, "loc": { "start": { - "line": 1234, - "column": 23 + "line": 1245, + "column": 34 }, "end": { - "line": 1234, - "column": 24 + "line": 1245, + "column": 35 } } }, @@ -212345,16 +217101,16 @@ "binop": null }, "value": "math", - "start": 46710, - "end": 46714, + "start": 47206, + "end": 47210, "loc": { "start": { - "line": 1234, - "column": 25 + "line": 1245, + "column": 36 }, "end": { - "line": 1234, - "column": 29 + "line": 1245, + "column": 40 } } }, @@ -212371,16 +217127,16 @@ "binop": null, "updateContext": null }, - "start": 46714, - "end": 46715, + "start": 47210, + "end": 47211, "loc": { "start": { - "line": 1234, - "column": 29 + "line": 1245, + "column": 40 }, "end": { - "line": 1234, - "column": 30 + "line": 1245, + "column": 41 } } }, @@ -212396,17 +217152,17 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 46715, - "end": 46719, + "value": "mat4", + "start": 47211, + "end": 47215, "loc": { "start": { - "line": 1234, - "column": 30 + "line": 1245, + "column": 41 }, "end": { - "line": 1234, - "column": 34 + "line": 1245, + "column": 45 } } }, @@ -212422,24 +217178,24 @@ "postfix": false, "binop": null }, - "start": 46719, - "end": 46720, + "start": 47215, + "end": 47216, "loc": { "start": { - "line": 1234, - "column": 34 + "line": 1245, + "column": 45 }, "end": { - "line": 1234, - "column": 35 + "line": 1245, + "column": 46 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -212447,24 +217203,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 46720, - "end": 46723, + "start": 47216, + "end": 47217, "loc": { "start": { - "line": 1234, - "column": 35 + "line": 1245, + "column": 46 }, "end": { - "line": 1234, - "column": 38 + "line": 1245, + "column": 47 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -212474,22 +217229,23 @@ "binop": null, "updateContext": null }, - "start": 46723, - "end": 46724, + "start": 47217, + "end": 47218, "loc": { "start": { - "line": 1234, - "column": 38 + "line": 1245, + "column": 47 }, "end": { - "line": 1234, - "column": 39 + "line": 1245, + "column": 48 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -212497,54 +217253,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "position", - "start": 46724, - "end": 46732, - "loc": { - "start": { - "line": 1234, - "column": 39 - }, - "end": { - "line": 1234, - "column": 47 - } - } - }, - { - "type": { - "label": "||", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 46733, - "end": 46735, + "value": "this", + "start": 47227, + "end": 47231, "loc": { "start": { - "line": 1234, - "column": 48 + "line": 1246, + "column": 8 }, "end": { - "line": 1234, - "column": 50 + "line": 1246, + "column": 12 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -212553,22 +217283,22 @@ "binop": null, "updateContext": null }, - "start": 46736, - "end": 46737, + "start": 47231, + "end": 47232, "loc": { "start": { - "line": 1234, - "column": 51 + "line": 1246, + "column": 12 }, "end": { - "line": 1234, - "column": 52 + "line": 1246, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -212576,52 +217306,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46737, - "end": 46738, + "value": "_worldRotationMatrixConjugate", + "start": 47232, + "end": 47261, "loc": { "start": { - "line": 1234, - "column": 52 + "line": 1246, + "column": 13 }, "end": { - "line": 1234, - "column": 53 + "line": 1246, + "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": 46738, - "end": 46739, + "value": "=", + "start": 47262, + "end": 47263, "loc": { "start": { - "line": 1234, - "column": 53 + "line": 1246, + "column": 43 }, "end": { - "line": 1234, - "column": 54 + "line": 1246, + "column": 44 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -212629,27 +217359,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46740, - "end": 46741, + "value": "math", + "start": 47264, + "end": 47268, "loc": { "start": { - "line": 1234, - "column": 55 + "line": 1246, + "column": 45 }, "end": { - "line": 1234, - "column": 56 + "line": 1246, + "column": 49 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -212659,22 +217388,22 @@ "binop": null, "updateContext": null }, - "start": 46741, - "end": 46742, + "start": 47268, + "end": 47269, "loc": { "start": { - "line": 1234, - "column": 56 + "line": 1246, + "column": 49 }, "end": { - "line": 1234, - "column": 57 + "line": 1246, + "column": 50 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -212682,46 +217411,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46743, - "end": 46744, + "value": "mat4", + "start": 47269, + "end": 47273, "loc": { "start": { - "line": 1234, - "column": 58 + "line": 1246, + "column": 50 }, "end": { - "line": 1234, - "column": 59 + "line": 1246, + "column": 54 } } }, { "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": 46744, - "end": 46745, + "start": 47273, + "end": 47274, "loc": { "start": { - "line": 1234, - "column": 59 + "line": 1246, + "column": 54 }, "end": { - "line": 1234, - "column": 60 + "line": 1246, + "column": 55 } } }, @@ -212737,16 +217464,16 @@ "postfix": false, "binop": null }, - "start": 46745, - "end": 46746, + "start": 47274, + "end": 47275, "loc": { "start": { - "line": 1234, - "column": 60 + "line": 1246, + "column": 55 }, "end": { - "line": 1234, - "column": 61 + "line": 1246, + "column": 56 } } }, @@ -212763,16 +217490,16 @@ "binop": null, "updateContext": null }, - "start": 46746, - "end": 46747, + "start": 47275, + "end": 47276, "loc": { "start": { - "line": 1234, - "column": 61 + "line": 1246, + "column": 56 }, "end": { - "line": 1234, - "column": 62 + "line": 1246, + "column": 57 } } }, @@ -212791,15 +217518,15 @@ "updateContext": null }, "value": "this", - "start": 46756, - "end": 46760, + "start": 47285, + "end": 47289, "loc": { "start": { - "line": 1235, + "line": 1247, "column": 8 }, "end": { - "line": 1235, + "line": 1247, "column": 12 } } @@ -212817,15 +217544,15 @@ "binop": null, "updateContext": null }, - "start": 46760, - "end": 46761, + "start": 47289, + "end": 47290, "loc": { "start": { - "line": 1235, + "line": 1247, "column": 12 }, "end": { - "line": 1235, + "line": 1247, "column": 13 } } @@ -212842,17 +217569,17 @@ "postfix": false, "binop": null }, - "value": "_rotation", - "start": 46761, - "end": 46770, + "value": "_matrix", + "start": 47290, + "end": 47297, "loc": { "start": { - "line": 1235, + "line": 1247, "column": 13 }, "end": { - "line": 1235, - "column": 22 + "line": 1247, + "column": 20 } } }, @@ -212870,16 +217597,16 @@ "updateContext": null }, "value": "=", - "start": 46771, - "end": 46772, + "start": 47298, + "end": 47299, "loc": { "start": { - "line": 1235, - "column": 23 + "line": 1247, + "column": 21 }, "end": { - "line": 1235, - "column": 24 + "line": 1247, + "column": 22 } } }, @@ -212896,16 +217623,16 @@ "binop": null }, "value": "math", - "start": 46773, - "end": 46777, + "start": 47300, + "end": 47304, "loc": { "start": { - "line": 1235, - "column": 25 + "line": 1247, + "column": 23 }, "end": { - "line": 1235, - "column": 29 + "line": 1247, + "column": 27 } } }, @@ -212922,16 +217649,16 @@ "binop": null, "updateContext": null }, - "start": 46777, - "end": 46778, + "start": 47304, + "end": 47305, "loc": { "start": { - "line": 1235, - "column": 29 + "line": 1247, + "column": 27 }, "end": { - "line": 1235, - "column": 30 + "line": 1247, + "column": 28 } } }, @@ -212947,17 +217674,17 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 46778, - "end": 46782, + "value": "mat4", + "start": 47305, + "end": 47309, "loc": { "start": { - "line": 1235, - "column": 30 + "line": 1247, + "column": 28 }, "end": { - "line": 1235, - "column": 34 + "line": 1247, + "column": 32 } } }, @@ -212973,24 +217700,24 @@ "postfix": false, "binop": null }, - "start": 46782, - "end": 46783, + "start": 47309, + "end": 47310, "loc": { "start": { - "line": 1235, - "column": 34 + "line": 1247, + "column": 32 }, "end": { - "line": 1235, - "column": 35 + "line": 1247, + "column": 33 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -212998,24 +217725,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 46783, - "end": 46786, + "start": 47310, + "end": 47311, "loc": { "start": { - "line": 1235, - "column": 35 + "line": 1247, + "column": 33 }, "end": { - "line": 1235, - "column": 38 + "line": 1247, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -213025,22 +217751,23 @@ "binop": null, "updateContext": null }, - "start": 46786, - "end": 46787, + "start": 47311, + "end": 47312, "loc": { "start": { - "line": 1235, - "column": 38 + "line": 1247, + "column": 34 }, "end": { - "line": 1235, - "column": 39 + "line": 1247, + "column": 35 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -213048,78 +217775,106 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "rotation", - "start": 46787, - "end": 46795, + "value": "this", + "start": 47321, + "end": 47325, "loc": { "start": { - "line": 1235, - "column": 39 + "line": 1248, + "column": 8 }, "end": { - "line": 1235, - "column": 47 + "line": 1248, + "column": 12 } } }, { "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": 46796, - "end": 46798, + "start": 47325, + "end": 47326, "loc": { "start": { - "line": 1235, - "column": 48 + "line": 1248, + "column": 12 }, "end": { - "line": 1235, - "column": 50 + "line": 1248, + "column": 13 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "_matrixDirty", + "start": 47326, + "end": 47338, + "loc": { + "start": { + "line": 1248, + "column": 13 + }, + "end": { + "line": 1248, + "column": 25 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 46799, - "end": 46800, + "value": "=", + "start": 47339, + "end": 47340, "loc": { "start": { - "line": 1235, - "column": 51 + "line": 1248, + "column": 26 }, "end": { - "line": 1235, - "column": 52 + "line": 1248, + "column": 27 } } }, { "type": { - "label": "num", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -213130,23 +217885,23 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46800, - "end": 46801, + "value": "true", + "start": 47341, + "end": 47345, "loc": { "start": { - "line": 1235, - "column": 52 + "line": 1248, + "column": 28 }, "end": { - "line": 1235, - "column": 53 + "line": 1248, + "column": 32 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -213157,22 +217912,23 @@ "binop": null, "updateContext": null }, - "start": 46801, - "end": 46802, + "start": 47345, + "end": 47346, "loc": { "start": { - "line": 1235, - "column": 53 + "line": 1248, + "column": 32 }, "end": { - "line": 1235, - "column": 54 + "line": 1248, + "column": 33 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -213183,24 +217939,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46803, - "end": 46804, + "value": "this", + "start": 47356, + "end": 47360, "loc": { "start": { - "line": 1235, - "column": 55 + "line": 1250, + "column": 8 }, "end": { - "line": 1235, - "column": 56 + "line": 1250, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -213210,22 +217966,22 @@ "binop": null, "updateContext": null }, - "start": 46804, - "end": 46805, + "start": 47360, + "end": 47361, "loc": { "start": { - "line": 1235, - "column": 56 + "line": 1250, + "column": 12 }, "end": { - "line": 1235, - "column": 57 + "line": 1250, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -213233,46 +217989,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46806, - "end": 46807, + "value": "_rebuildMatrices", + "start": 47361, + "end": 47377, "loc": { "start": { - "line": 1235, - "column": 58 + "line": 1250, + "column": 13 }, "end": { - "line": 1235, - "column": 59 + "line": 1250, + "column": 29 } } }, - { - "type": { - "label": "]", - "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 }, - "start": 46807, - "end": 46808, + "start": 47377, + "end": 47378, "loc": { "start": { - "line": 1235, - "column": 59 + "line": 1250, + "column": 29 }, "end": { - "line": 1235, - "column": 60 + "line": 1250, + "column": 30 } } }, @@ -213288,16 +218042,16 @@ "postfix": false, "binop": null }, - "start": 46808, - "end": 46809, + "start": 47378, + "end": 47379, "loc": { "start": { - "line": 1235, - "column": 60 + "line": 1250, + "column": 30 }, "end": { - "line": 1235, - "column": 61 + "line": 1250, + "column": 31 } } }, @@ -213314,16 +218068,16 @@ "binop": null, "updateContext": null }, - "start": 46809, - "end": 46810, + "start": 47379, + "end": 47380, "loc": { "start": { - "line": 1235, - "column": 61 + "line": 1250, + "column": 31 }, "end": { - "line": 1235, - "column": 62 + "line": 1250, + "column": 32 } } }, @@ -213342,15 +218096,15 @@ "updateContext": null }, "value": "this", - "start": 46819, - "end": 46823, + "start": 47390, + "end": 47394, "loc": { "start": { - "line": 1236, + "line": 1252, "column": 8 }, "end": { - "line": 1236, + "line": 1252, "column": 12 } } @@ -213368,15 +218122,15 @@ "binop": null, "updateContext": null }, - "start": 46823, - "end": 46824, + "start": 47394, + "end": 47395, "loc": { "start": { - "line": 1236, + "line": 1252, "column": 12 }, "end": { - "line": 1236, + "line": 1252, "column": 13 } } @@ -213393,17 +218147,17 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 46824, - "end": 46835, + "value": "_worldNormalMatrix", + "start": 47395, + "end": 47413, "loc": { "start": { - "line": 1236, + "line": 1252, "column": 13 }, "end": { - "line": 1236, - "column": 24 + "line": 1252, + "column": 31 } } }, @@ -213421,16 +218175,16 @@ "updateContext": null }, "value": "=", - "start": 46836, - "end": 46837, + "start": 47414, + "end": 47415, "loc": { "start": { - "line": 1236, - "column": 25 + "line": 1252, + "column": 32 }, "end": { - "line": 1236, - "column": 26 + "line": 1252, + "column": 33 } } }, @@ -213447,16 +218201,16 @@ "binop": null }, "value": "math", - "start": 46838, - "end": 46842, + "start": 47416, + "end": 47420, "loc": { "start": { - "line": 1236, - "column": 27 + "line": 1252, + "column": 34 }, "end": { - "line": 1236, - "column": 31 + "line": 1252, + "column": 38 } } }, @@ -213473,16 +218227,16 @@ "binop": null, "updateContext": null }, - "start": 46842, - "end": 46843, + "start": 47420, + "end": 47421, "loc": { "start": { - "line": 1236, - "column": 31 + "line": 1252, + "column": 38 }, "end": { - "line": 1236, - "column": 32 + "line": 1252, + "column": 39 } } }, @@ -213498,17 +218252,17 @@ "postfix": false, "binop": null }, - "value": "vec4", - "start": 46843, - "end": 46847, + "value": "mat4", + "start": 47421, + "end": 47425, "loc": { "start": { - "line": 1236, - "column": 32 + "line": 1252, + "column": 39 }, "end": { - "line": 1236, - "column": 36 + "line": 1252, + "column": 43 } } }, @@ -213524,24 +218278,24 @@ "postfix": false, "binop": null }, - "start": 46847, - "end": 46848, + "start": 47425, + "end": 47426, "loc": { "start": { - "line": 1236, - "column": 36 + "line": 1252, + "column": 43 }, "end": { - "line": 1236, - "column": 37 + "line": 1252, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -213549,24 +218303,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 46848, - "end": 46851, + "start": 47426, + "end": 47427, "loc": { "start": { - "line": 1236, - "column": 37 + "line": 1252, + "column": 44 }, "end": { - "line": 1236, - "column": 40 + "line": 1252, + "column": 45 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -213576,16 +218329,16 @@ "binop": null, "updateContext": null }, - "start": 46851, - "end": 46852, + "start": 47427, + "end": 47428, "loc": { "start": { - "line": 1236, - "column": 40 + "line": 1252, + "column": 45 }, "end": { - "line": 1236, - "column": 41 + "line": 1252, + "column": 46 } } }, @@ -213601,105 +218354,103 @@ "postfix": false, "binop": null }, - "value": "quaternion", - "start": 46852, - "end": 46862, + "value": "math", + "start": 47437, + "end": 47441, "loc": { "start": { - "line": 1236, - "column": 41 + "line": 1253, + "column": 8 }, "end": { - "line": 1236, - "column": 51 + "line": 1253, + "column": 12 } } }, { "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": 46863, - "end": 46865, + "start": 47441, + "end": 47442, "loc": { "start": { - "line": 1236, - "column": 52 + "line": 1253, + "column": 12 }, "end": { - "line": 1236, - "column": 54 + "line": 1253, + "column": 13 } } }, { "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": 46866, - "end": 46867, + "value": "inverseMat4", + "start": 47442, + "end": 47453, "loc": { "start": { - "line": 1236, - "column": 55 + "line": 1253, + "column": 13 }, "end": { - "line": 1236, - "column": 56 + "line": 1253, + "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": 0, - "start": 46867, - "end": 46868, + "start": 47453, + "end": 47454, "loc": { "start": { - "line": 1236, - "column": 56 + "line": 1253, + "column": 24 }, "end": { - "line": 1236, - "column": 57 + "line": 1253, + "column": 25 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -213708,24 +218459,25 @@ "binop": null, "updateContext": null }, - "start": 46868, - "end": 46869, + "value": "this", + "start": 47454, + "end": 47458, "loc": { "start": { - "line": 1236, - "column": 57 + "line": 1253, + "column": 25 }, "end": { - "line": 1236, - "column": 58 + "line": 1253, + "column": 29 } } }, { "type": { - "label": "num", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -213734,51 +218486,50 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46870, - "end": 46871, + "start": 47458, + "end": 47459, "loc": { "start": { - "line": 1236, - "column": 59 + "line": 1253, + "column": 29 }, "end": { - "line": 1236, - "column": 60 + "line": 1253, + "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": 46871, - "end": 46872, + "value": "_matrix", + "start": 47459, + "end": 47466, "loc": { "start": { - "line": 1236, - "column": 60 + "line": 1253, + "column": 30 }, "end": { - "line": 1236, - "column": 61 + "line": 1253, + "column": 37 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -213787,25 +218538,25 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 46873, - "end": 46874, + "start": 47466, + "end": 47467, "loc": { "start": { - "line": 1236, - "column": 62 + "line": 1253, + "column": 37 }, "end": { - "line": 1236, - "column": 63 + "line": 1253, + "column": 38 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -213814,24 +218565,25 @@ "binop": null, "updateContext": null }, - "start": 46874, - "end": 46875, + "value": "this", + "start": 47468, + "end": 47472, "loc": { "start": { - "line": 1236, - "column": 63 + "line": 1253, + "column": 39 }, "end": { - "line": 1236, - "column": 64 + "line": 1253, + "column": 43 } } }, { "type": { - "label": "num", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -213840,43 +218592,42 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 46876, - "end": 46877, + "start": 47472, + "end": 47473, "loc": { "start": { - "line": 1236, - "column": 65 + "line": 1253, + "column": 43 }, "end": { - "line": 1236, - "column": 66 + "line": 1253, + "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": 46877, - "end": 46878, + "value": "_worldNormalMatrix", + "start": 47473, + "end": 47491, "loc": { "start": { - "line": 1236, - "column": 66 + "line": 1253, + "column": 44 }, "end": { - "line": 1236, - "column": 67 + "line": 1253, + "column": 62 } } }, @@ -213892,16 +218643,16 @@ "postfix": false, "binop": null }, - "start": 46878, - "end": 46879, + "start": 47491, + "end": 47492, "loc": { "start": { - "line": 1236, - "column": 67 + "line": 1253, + "column": 62 }, "end": { - "line": 1236, - "column": 68 + "line": 1253, + "column": 63 } } }, @@ -213918,23 +218669,22 @@ "binop": null, "updateContext": null }, - "start": 46879, - "end": 46880, + "start": 47492, + "end": 47493, "loc": { "start": { - "line": 1236, - "column": 68 + "line": 1253, + "column": 63 }, "end": { - "line": 1236, - "column": 69 + "line": 1253, + "column": 64 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -213942,19 +218692,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 46889, - "end": 46893, + "value": "math", + "start": 47502, + "end": 47506, "loc": { "start": { - "line": 1237, + "line": 1254, "column": 8 }, "end": { - "line": 1237, + "line": 1254, "column": 12 } } @@ -213972,15 +218721,15 @@ "binop": null, "updateContext": null }, - "start": 46893, - "end": 46894, + "start": 47506, + "end": 47507, "loc": { "start": { - "line": 1237, + "line": 1254, "column": 12 }, "end": { - "line": 1237, + "line": 1254, "column": 13 } } @@ -213997,50 +218746,49 @@ "postfix": false, "binop": null }, - "value": "_conjugateQuaternion", - "start": 46894, - "end": 46914, + "value": "transposeMat4", + "start": 47507, + "end": 47520, "loc": { "start": { - "line": 1237, + "line": 1254, "column": 13 }, "end": { - "line": 1237, - "column": 33 + "line": 1254, + "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": 46915, - "end": 46916, + "start": 47520, + "end": 47521, "loc": { "start": { - "line": 1237, - "column": 34 + "line": 1254, + "column": 26 }, "end": { - "line": 1237, - "column": 35 + "line": 1254, + "column": 27 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -214048,19 +218796,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 46917, - "end": 46921, + "value": "this", + "start": 47521, + "end": 47525, "loc": { "start": { - "line": 1237, - "column": 36 + "line": 1254, + "column": 27 }, "end": { - "line": 1237, - "column": 40 + "line": 1254, + "column": 31 } } }, @@ -214077,16 +218826,16 @@ "binop": null, "updateContext": null }, - "start": 46921, - "end": 46922, + "start": 47525, + "end": 47526, "loc": { "start": { - "line": 1237, - "column": 40 + "line": 1254, + "column": 31 }, "end": { - "line": 1237, - "column": 41 + "line": 1254, + "column": 32 } } }, @@ -214102,50 +218851,25 @@ "postfix": false, "binop": null }, - "value": "vec4", - "start": 46922, - "end": 46926, - "loc": { - "start": { - "line": 1237, - "column": 41 - }, - "end": { - "line": 1237, - "column": 45 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 46926, - "end": 46927, + "value": "_worldNormalMatrix", + "start": 47526, + "end": 47544, "loc": { "start": { - "line": 1237, - "column": 45 + "line": 1254, + "column": 32 }, "end": { - "line": 1237, - "column": 46 + "line": 1254, + "column": 50 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -214153,24 +218877,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 46927, - "end": 46930, + "start": 47544, + "end": 47545, "loc": { "start": { - "line": 1237, - "column": 46 + "line": 1254, + "column": 50 }, "end": { - "line": 1237, - "column": 49 + "line": 1254, + "column": 51 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -214180,75 +218903,50 @@ "binop": null, "updateContext": null }, - "start": 46930, - "end": 46931, + "start": 47545, + "end": 47546, "loc": { "start": { - "line": 1237, - "column": 49 + "line": 1254, + "column": 51 }, "end": { - "line": 1237, - "column": 50 + "line": 1254, + "column": 52 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "quaternion", - "start": 46931, - "end": 46941, - "loc": { - "start": { - "line": 1237, - "column": 50 - }, - "end": { - "line": 1237, - "column": 60 - } - } - }, - { - "type": { - "label": "||", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 46942, - "end": 46944, + "value": "if", + "start": 47556, + "end": 47558, "loc": { "start": { - "line": 1237, - "column": 61 + "line": 1256, + "column": 8 }, "end": { - "line": 1237, - "column": 63 + "line": 1256, + "column": 10 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -214256,25 +218954,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 46945, - "end": 46946, + "start": 47559, + "end": 47560, "loc": { "start": { - "line": 1237, - "column": 64 + "line": 1256, + "column": 11 }, "end": { - "line": 1237, - "column": 65 + "line": 1256, + "column": 12 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -214282,27 +218979,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46946, - "end": 46947, + "value": "cfg", + "start": 47560, + "end": 47563, "loc": { "start": { - "line": 1237, - "column": 65 + "line": 1256, + "column": 12 }, "end": { - "line": 1237, - "column": 66 + "line": 1256, + "column": 15 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -214312,22 +219008,22 @@ "binop": null, "updateContext": null }, - "start": 46947, - "end": 46948, + "start": 47563, + "end": 47564, "loc": { "start": { - "line": 1237, - "column": 66 + "line": 1256, + "column": 15 }, "end": { - "line": 1237, - "column": 67 + "line": 1256, + "column": 16 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -214335,26 +219031,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46949, - "end": 46950, + "value": "matrix", + "start": 47564, + "end": 47570, "loc": { "start": { - "line": 1237, - "column": 68 + "line": 1256, + "column": 16 }, "end": { - "line": 1237, - "column": 69 + "line": 1256, + "column": 22 } } }, { "type": { - "label": ",", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -214362,25 +219057,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 46950, - "end": 46951, + "value": "||", + "start": 47571, + "end": 47573, "loc": { "start": { - "line": 1237, - "column": 69 + "line": 1256, + "column": 23 }, "end": { - "line": 1237, - "column": 70 + "line": 1256, + "column": 25 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -214388,27 +219084,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 46952, - "end": 46953, + "value": "cfg", + "start": 47574, + "end": 47577, "loc": { "start": { - "line": 1237, - "column": 71 + "line": 1256, + "column": 26 }, "end": { - "line": 1237, - "column": 72 + "line": 1256, + "column": 29 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -214418,22 +219113,22 @@ "binop": null, "updateContext": null }, - "start": 46953, - "end": 46954, + "start": 47577, + "end": 47578, "loc": { "start": { - "line": 1237, - "column": 72 + "line": 1256, + "column": 29 }, "end": { - "line": 1237, - "column": 73 + "line": 1256, + "column": 30 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -214441,54 +219136,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 46955, - "end": 46956, + "value": "position", + "start": 47578, + "end": 47586, "loc": { "start": { - "line": 1237, - "column": 74 + "line": 1256, + "column": 30 }, "end": { - "line": 1237, - "column": 75 + "line": 1256, + "column": 38 } } }, { "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": 46956, - "end": 46957, + "value": "||", + "start": 47587, + "end": 47589, "loc": { "start": { - "line": 1237, - "column": 75 + "line": 1256, + "column": 39 }, "end": { - "line": 1237, - "column": 76 + "line": 1256, + "column": 41 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -214496,23 +219191,24 @@ "postfix": false, "binop": null }, - "start": 46957, - "end": 46958, + "value": "cfg", + "start": 47590, + "end": 47593, "loc": { "start": { - "line": 1237, - "column": 76 + "line": 1256, + "column": 42 }, "end": { - "line": 1237, - "column": 77 + "line": 1256, + "column": 45 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -214522,69 +219218,69 @@ "binop": null, "updateContext": null }, - "start": 46958, - "end": 46959, + "start": 47593, + "end": 47594, "loc": { "start": { - "line": 1237, - "column": 77 + "line": 1256, + "column": 45 }, "end": { - "line": 1237, - "column": 78 + "line": 1256, + "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": 46969, - "end": 46971, + "value": "rotation", + "start": 47594, + "end": 47602, "loc": { "start": { - "line": 1239, - "column": 8 + "line": 1256, + "column": 46 }, "end": { - "line": 1239, - "column": 10 + "line": 1256, + "column": 54 } } }, { "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": 46972, - "end": 46973, + "value": "||", + "start": 47603, + "end": 47605, "loc": { "start": { - "line": 1239, - "column": 11 + "line": 1256, + "column": 55 }, "end": { - "line": 1239, - "column": 12 + "line": 1256, + "column": 57 } } }, @@ -214601,16 +219297,16 @@ "binop": null }, "value": "cfg", - "start": 46973, - "end": 46976, + "start": 47606, + "end": 47609, "loc": { "start": { - "line": 1239, - "column": 12 + "line": 1256, + "column": 58 }, "end": { - "line": 1239, - "column": 15 + "line": 1256, + "column": 61 } } }, @@ -214627,16 +219323,16 @@ "binop": null, "updateContext": null }, - "start": 46976, - "end": 46977, + "start": 47609, + "end": 47610, "loc": { "start": { - "line": 1239, - "column": 15 + "line": 1256, + "column": 61 }, "end": { - "line": 1239, - "column": 16 + "line": 1256, + "column": 62 } } }, @@ -214652,49 +219348,51 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 46977, - "end": 46985, + "value": "scale", + "start": 47610, + "end": 47615, "loc": { "start": { - "line": 1239, - "column": 16 + "line": 1256, + "column": 62 }, "end": { - "line": 1239, - "column": 24 + "line": 1256, + "column": 67 } } }, { "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": 46985, - "end": 46986, + "value": "||", + "start": 47616, + "end": 47618, "loc": { "start": { - "line": 1239, - "column": 24 + "line": 1256, + "column": 68 }, "end": { - "line": 1239, - "column": 25 + "line": 1256, + "column": 70 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -214703,76 +219401,77 @@ "postfix": false, "binop": null }, - "start": 46987, - "end": 46988, + "value": "cfg", + "start": 47619, + "end": 47622, "loc": { "start": { - "line": 1239, - "column": 26 + "line": 1256, + "column": 71 }, "end": { - "line": 1239, - "column": 27 + "line": 1256, + "column": 74 } } }, { "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": "math", - "start": 47001, - "end": 47005, + "start": 47622, + "end": 47623, "loc": { "start": { - "line": 1240, - "column": 12 + "line": 1256, + "column": 74 }, "end": { - "line": 1240, - "column": 16 + "line": 1256, + "column": 75 } } }, { "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": 47005, - "end": 47006, + "value": "quaternion", + "start": 47623, + "end": 47633, "loc": { "start": { - "line": 1240, - "column": 16 + "line": 1256, + "column": 75 }, "end": { - "line": 1240, - "column": 17 + "line": 1256, + "column": 85 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -214780,23 +219479,22 @@ "postfix": false, "binop": null }, - "value": "eulerToQuaternion", - "start": 47006, - "end": 47023, + "start": 47633, + "end": 47634, "loc": { "start": { - "line": 1240, - "column": 17 + "line": 1256, + "column": 85 }, "end": { - "line": 1240, - "column": 34 + "line": 1256, + "column": 86 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -214806,16 +219504,16 @@ "postfix": false, "binop": null }, - "start": 47023, - "end": 47024, + "start": 47635, + "end": 47636, "loc": { "start": { - "line": 1240, - "column": 34 + "line": 1256, + "column": 87 }, "end": { - "line": 1240, - "column": 35 + "line": 1256, + "column": 88 } } }, @@ -214834,16 +219532,16 @@ "updateContext": null }, "value": "this", - "start": 47024, - "end": 47028, + "start": 47649, + "end": 47653, "loc": { "start": { - "line": 1240, - "column": 35 + "line": 1257, + "column": 12 }, "end": { - "line": 1240, - "column": 39 + "line": 1257, + "column": 16 } } }, @@ -214860,16 +219558,16 @@ "binop": null, "updateContext": null }, - "start": 47028, - "end": 47029, + "start": 47653, + "end": 47654, "loc": { "start": { - "line": 1240, - "column": 39 + "line": 1257, + "column": 16 }, "end": { - "line": 1240, - "column": 40 + "line": 1257, + "column": 17 } } }, @@ -214885,49 +219583,50 @@ "postfix": false, "binop": null }, - "value": "_rotation", - "start": 47029, - "end": 47038, + "value": "_viewMatrix", + "start": 47654, + "end": 47665, "loc": { "start": { - "line": 1240, - "column": 40 + "line": 1257, + "column": 17 }, "end": { - "line": 1240, - "column": 49 + "line": 1257, + "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": 47038, - "end": 47039, + "value": "=", + "start": 47666, + "end": 47667, "loc": { "start": { - "line": 1240, - "column": 49 + "line": 1257, + "column": 29 }, "end": { - "line": 1240, - "column": 50 + "line": 1257, + "column": 30 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -214935,27 +219634,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "XYZ", - "start": 47040, - "end": 47045, + "value": "math", + "start": 47668, + "end": 47672, "loc": { "start": { - "line": 1240, - "column": 51 + "line": 1257, + "column": 31 }, "end": { - "line": 1240, - "column": 56 + "line": 1257, + "column": 35 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -214965,23 +219663,22 @@ "binop": null, "updateContext": null }, - "start": 47045, - "end": 47046, + "start": 47672, + "end": 47673, "loc": { "start": { - "line": 1240, - "column": 56 + "line": 1257, + "column": 35 }, "end": { - "line": 1240, - "column": 57 + "line": 1257, + "column": 36 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -214989,53 +219686,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 47047, - "end": 47051, - "loc": { - "start": { - "line": 1240, - "column": 58 - }, - "end": { - "line": 1240, - "column": 62 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 47051, - "end": 47052, + "value": "mat4", + "start": 47673, + "end": 47677, "loc": { "start": { - "line": 1240, - "column": 62 + "line": 1257, + "column": 36 }, "end": { - "line": 1240, - "column": 63 + "line": 1257, + "column": 40 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -215044,17 +219714,16 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 47052, - "end": 47063, + "start": 47677, + "end": 47678, "loc": { "start": { - "line": 1240, - "column": 63 + "line": 1257, + "column": 40 }, "end": { - "line": 1240, - "column": 74 + "line": 1257, + "column": 41 } } }, @@ -215070,16 +219739,16 @@ "postfix": false, "binop": null }, - "start": 47063, - "end": 47064, + "start": 47678, + "end": 47679, "loc": { "start": { - "line": 1240, - "column": 74 + "line": 1257, + "column": 41 }, "end": { - "line": 1240, - "column": 75 + "line": 1257, + "column": 42 } } }, @@ -215096,41 +219765,16 @@ "binop": null, "updateContext": null }, - "start": 47064, - "end": 47065, - "loc": { - "start": { - "line": 1240, - "column": 75 - }, - "end": { - "line": 1240, - "column": 76 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 47074, - "end": 47075, + "start": 47679, + "end": 47680, "loc": { "start": { - "line": 1241, - "column": 8 + "line": 1257, + "column": 42 }, "end": { - "line": 1241, - "column": 9 + "line": 1257, + "column": 43 } } }, @@ -215149,16 +219793,16 @@ "updateContext": null }, "value": "this", - "start": 47084, - "end": 47088, + "start": 47693, + "end": 47697, "loc": { "start": { - "line": 1242, - "column": 8 + "line": 1258, + "column": 12 }, "end": { - "line": 1242, - "column": 12 + "line": 1258, + "column": 16 } } }, @@ -215175,16 +219819,16 @@ "binop": null, "updateContext": null }, - "start": 47088, - "end": 47089, + "start": 47697, + "end": 47698, "loc": { "start": { - "line": 1242, - "column": 12 + "line": 1258, + "column": 16 }, "end": { - "line": 1242, - "column": 13 + "line": 1258, + "column": 17 } } }, @@ -215200,17 +219844,17 @@ "postfix": false, "binop": null }, - "value": "_scale", - "start": 47089, - "end": 47095, + "value": "_viewNormalMatrix", + "start": 47698, + "end": 47715, "loc": { "start": { - "line": 1242, - "column": 13 + "line": 1258, + "column": 17 }, "end": { - "line": 1242, - "column": 19 + "line": 1258, + "column": 34 } } }, @@ -215228,16 +219872,16 @@ "updateContext": null }, "value": "=", - "start": 47096, - "end": 47097, + "start": 47716, + "end": 47717, "loc": { "start": { - "line": 1242, - "column": 20 + "line": 1258, + "column": 35 }, "end": { - "line": 1242, - "column": 21 + "line": 1258, + "column": 36 } } }, @@ -215254,16 +219898,16 @@ "binop": null }, "value": "math", - "start": 47098, - "end": 47102, + "start": 47718, + "end": 47722, "loc": { "start": { - "line": 1242, - "column": 22 + "line": 1258, + "column": 37 }, "end": { - "line": 1242, - "column": 26 + "line": 1258, + "column": 41 } } }, @@ -215280,16 +219924,16 @@ "binop": null, "updateContext": null }, - "start": 47102, - "end": 47103, + "start": 47722, + "end": 47723, "loc": { "start": { - "line": 1242, - "column": 26 + "line": 1258, + "column": 41 }, "end": { - "line": 1242, - "column": 27 + "line": 1258, + "column": 42 } } }, @@ -215305,17 +219949,17 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 47103, - "end": 47107, + "value": "mat4", + "start": 47723, + "end": 47727, "loc": { "start": { - "line": 1242, - "column": 27 + "line": 1258, + "column": 42 }, "end": { - "line": 1242, - "column": 31 + "line": 1258, + "column": 46 } } }, @@ -215331,48 +219975,22 @@ "postfix": false, "binop": null }, - "start": 47107, - "end": 47108, - "loc": { - "start": { - "line": 1242, - "column": 31 - }, - "end": { - "line": 1242, - "column": 32 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "cfg", - "start": 47108, - "end": 47111, + "start": 47727, + "end": 47728, "loc": { "start": { - "line": 1242, - "column": 32 + "line": 1258, + "column": 46 }, "end": { - "line": 1242, - "column": 35 + "line": 1258, + "column": 47 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -215380,80 +219998,80 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 47111, - "end": 47112, + "start": 47728, + "end": 47729, "loc": { "start": { - "line": 1242, - "column": 35 + "line": 1258, + "column": 47 }, "end": { - "line": 1242, - "column": 36 + "line": 1258, + "column": 48 } } }, { "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": "scale", - "start": 47112, - "end": 47117, + "start": 47729, + "end": 47730, "loc": { "start": { - "line": 1242, - "column": 36 + "line": 1258, + "column": 48 }, "end": { - "line": 1242, - "column": 41 + "line": 1258, + "column": 49 } } }, { "type": { - "label": "||", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 47118, - "end": 47120, + "value": "this", + "start": 47743, + "end": 47747, "loc": { "start": { - "line": 1242, - "column": 42 + "line": 1259, + "column": 12 }, "end": { - "line": 1242, - "column": 44 + "line": 1259, + "column": 16 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -215462,22 +220080,22 @@ "binop": null, "updateContext": null }, - "start": 47121, - "end": 47122, + "start": 47747, + "end": 47748, "loc": { "start": { - "line": 1242, - "column": 45 + "line": 1259, + "column": 16 }, "end": { - "line": 1242, - "column": 46 + "line": 1259, + "column": 17 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -215485,52 +220103,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 47122, - "end": 47123, + "value": "_viewMatrixDirty", + "start": 47748, + "end": 47764, "loc": { "start": { - "line": 1242, - "column": 46 + "line": 1259, + "column": 17 }, "end": { - "line": 1242, - "column": 47 + "line": 1259, + "column": 33 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 47123, - "end": 47124, + "value": "=", + "start": 47765, + "end": 47766, "loc": { "start": { - "line": 1242, - "column": 47 + "line": 1259, + "column": 34 }, "end": { - "line": 1242, - "column": 48 + "line": 1259, + "column": 35 } } }, { "type": { - "label": "num", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -215541,23 +220160,23 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 47125, - "end": 47126, + "value": "true", + "start": 47767, + "end": 47771, "loc": { "start": { - "line": 1242, - "column": 49 + "line": 1259, + "column": 36 }, "end": { - "line": 1242, - "column": 50 + "line": 1259, + "column": 40 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -215568,22 +220187,23 @@ "binop": null, "updateContext": null }, - "start": 47126, - "end": 47127, + "start": 47771, + "end": 47772, "loc": { "start": { - "line": 1242, - "column": 50 + "line": 1259, + "column": 40 }, "end": { - "line": 1242, - "column": 51 + "line": 1259, + "column": 41 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -215594,23 +220214,23 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 47128, - "end": 47129, + "value": "this", + "start": 47785, + "end": 47789, "loc": { "start": { - "line": 1242, - "column": 52 + "line": 1260, + "column": 12 }, "end": { - "line": 1242, - "column": 53 + "line": 1260, + "column": 16 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -215621,24 +220241,24 @@ "binop": null, "updateContext": null }, - "start": 47129, - "end": 47130, + "start": 47789, + "end": 47790, "loc": { "start": { - "line": 1242, - "column": 53 + "line": 1260, + "column": 16 }, "end": { - "line": 1242, - "column": 54 + "line": 1260, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -215646,49 +220266,51 @@ "postfix": false, "binop": null }, - "start": 47130, - "end": 47131, + "value": "_matrixNonIdentity", + "start": 47790, + "end": 47808, "loc": { "start": { - "line": 1242, - "column": 54 + "line": 1260, + "column": 17 }, "end": { - "line": 1242, - "column": 55 + "line": 1260, + "column": 35 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 47131, - "end": 47132, + "value": "=", + "start": 47809, + "end": 47810, "loc": { "start": { - "line": 1242, - "column": 55 + "line": 1260, + "column": 36 }, "end": { - "line": 1242, - "column": 56 + "line": 1260, + "column": 37 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -215699,24 +220321,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 47142, - "end": 47146, + "value": "true", + "start": 47811, + "end": 47815, "loc": { "start": { - "line": 1244, - "column": 8 + "line": 1260, + "column": 38 }, "end": { - "line": 1244, - "column": 12 + "line": 1260, + "column": 42 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -215726,24 +220348,24 @@ "binop": null, "updateContext": null }, - "start": 47146, - "end": 47147, + "start": 47815, + "end": 47816, "loc": { "start": { - "line": 1244, - "column": 12 + "line": 1260, + "column": 42 }, "end": { - "line": 1244, - "column": 13 + "line": 1260, + "column": 43 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -215751,50 +220373,23 @@ "postfix": false, "binop": null }, - "value": "_worldRotationMatrix", - "start": 47147, - "end": 47167, - "loc": { - "start": { - "line": 1244, - "column": 13 - }, - "end": { - "line": 1244, - "column": 33 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 47168, - "end": 47169, + "start": 47825, + "end": 47826, "loc": { "start": { - "line": 1244, - "column": 34 + "line": 1261, + "column": 8 }, "end": { - "line": 1244, - "column": 35 + "line": 1261, + "column": 9 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -215802,19 +220397,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 47170, - "end": 47174, + "value": "this", + "start": 47836, + "end": 47840, "loc": { "start": { - "line": 1244, - "column": 36 + "line": 1263, + "column": 8 }, "end": { - "line": 1244, - "column": 40 + "line": 1263, + "column": 12 } } }, @@ -215831,16 +220427,16 @@ "binop": null, "updateContext": null }, - "start": 47174, - "end": 47175, + "start": 47840, + "end": 47841, "loc": { "start": { - "line": 1244, - "column": 40 + "line": 1263, + "column": 12 }, "end": { - "line": 1244, - "column": 41 + "line": 1263, + "column": 13 } } }, @@ -215856,67 +220452,71 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 47175, - "end": 47179, + "value": "_opacity", + "start": 47841, + "end": 47849, "loc": { "start": { - "line": 1244, - "column": 41 + "line": 1263, + "column": 13 }, "end": { - "line": 1244, - "column": 45 + "line": 1263, + "column": 21 } } }, { "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": 47179, - "end": 47180, + "value": "=", + "start": 47850, + "end": 47851, "loc": { "start": { - "line": 1244, - "column": 45 + "line": 1263, + "column": 22 }, "end": { - "line": 1244, - "column": 46 + "line": 1263, + "column": 23 } } }, { "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": 47180, - "end": 47181, + "value": 1, + "start": 47852, + "end": 47855, "loc": { "start": { - "line": 1244, - "column": 46 + "line": 1263, + "column": 24 }, "end": { - "line": 1244, - "column": 47 + "line": 1263, + "column": 27 } } }, @@ -215933,16 +220533,16 @@ "binop": null, "updateContext": null }, - "start": 47181, - "end": 47182, + "start": 47855, + "end": 47856, "loc": { "start": { - "line": 1244, - "column": 47 + "line": 1263, + "column": 27 }, "end": { - "line": 1244, - "column": 48 + "line": 1263, + "column": 28 } } }, @@ -215961,15 +220561,15 @@ "updateContext": null }, "value": "this", - "start": 47191, - "end": 47195, + "start": 47865, + "end": 47869, "loc": { "start": { - "line": 1245, + "line": 1264, "column": 8 }, "end": { - "line": 1245, + "line": 1264, "column": 12 } } @@ -215987,15 +220587,15 @@ "binop": null, "updateContext": null }, - "start": 47195, - "end": 47196, + "start": 47869, + "end": 47870, "loc": { "start": { - "line": 1245, + "line": 1264, "column": 12 }, "end": { - "line": 1245, + "line": 1264, "column": 13 } } @@ -216012,17 +220612,17 @@ "postfix": false, "binop": null }, - "value": "_worldRotationMatrixConjugate", - "start": 47196, - "end": 47225, + "value": "_colorize", + "start": 47870, + "end": 47879, "loc": { "start": { - "line": 1245, + "line": 1264, "column": 13 }, "end": { - "line": 1245, - "column": 42 + "line": 1264, + "column": 22 } } }, @@ -216040,49 +220640,76 @@ "updateContext": null }, "value": "=", - "start": 47226, - "end": 47227, + "start": 47880, + "end": 47881, "loc": { "start": { - "line": 1245, - "column": 43 + "line": 1264, + "column": 23 }, "end": { - "line": 1245, - "column": 44 + "line": 1264, + "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": "math", - "start": 47228, - "end": 47232, + "start": 47882, + "end": 47883, "loc": { "start": { - "line": 1245, - "column": 45 + "line": 1264, + "column": 25 }, "end": { - "line": 1245, - "column": 49 + "line": 1264, + "column": 26 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 1, + "start": 47883, + "end": 47884, + "loc": { + "start": { + "line": 1264, + "column": 26 + }, + "end": { + "line": 1264, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -216092,22 +220719,22 @@ "binop": null, "updateContext": null }, - "start": 47232, - "end": 47233, + "start": 47884, + "end": 47885, "loc": { "start": { - "line": 1245, - "column": 49 + "line": 1264, + "column": 27 }, "end": { - "line": 1245, - "column": 50 + "line": 1264, + "column": 28 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -216115,50 +220742,79 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "mat4", - "start": 47233, - "end": 47237, + "value": 1, + "start": 47886, + "end": 47887, "loc": { "start": { - "line": 1245, - "column": 50 + "line": 1264, + "column": 29 }, "end": { - "line": 1245, - "column": 54 + "line": 1264, + "column": 30 } } }, { "type": { - "label": "(", + "label": ",", "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 47887, + "end": 47888, + "loc": { + "start": { + "line": 1264, + "column": 30 + }, + "end": { + "line": 1264, + "column": 31 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 47237, - "end": 47238, + "value": 1, + "start": 47889, + "end": 47890, "loc": { "start": { - "line": 1245, - "column": 54 + "line": 1264, + "column": 32 }, "end": { - "line": 1245, - "column": 55 + "line": 1264, + "column": 33 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -216166,18 +220822,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 47238, - "end": 47239, + "start": 47890, + "end": 47891, "loc": { "start": { - "line": 1245, - "column": 55 + "line": 1264, + "column": 33 }, "end": { - "line": 1245, - "column": 56 + "line": 1264, + "column": 34 } } }, @@ -216194,16 +220851,16 @@ "binop": null, "updateContext": null }, - "start": 47239, - "end": 47240, + "start": 47891, + "end": 47892, "loc": { "start": { - "line": 1245, - "column": 56 + "line": 1264, + "column": 34 }, "end": { - "line": 1245, - "column": 57 + "line": 1264, + "column": 35 } } }, @@ -216222,15 +220879,15 @@ "updateContext": null }, "value": "this", - "start": 47249, - "end": 47253, + "start": 47902, + "end": 47906, "loc": { "start": { - "line": 1246, + "line": 1266, "column": 8 }, "end": { - "line": 1246, + "line": 1266, "column": 12 } } @@ -216248,15 +220905,15 @@ "binop": null, "updateContext": null }, - "start": 47253, - "end": 47254, + "start": 47906, + "end": 47907, "loc": { "start": { - "line": 1246, + "line": 1266, "column": 12 }, "end": { - "line": 1246, + "line": 1266, "column": 13 } } @@ -216273,17 +220930,17 @@ "postfix": false, "binop": null }, - "value": "_matrix", - "start": 47254, - "end": 47261, + "value": "_saoEnabled", + "start": 47907, + "end": 47918, "loc": { "start": { - "line": 1246, + "line": 1266, "column": 13 }, "end": { - "line": 1246, - "column": 20 + "line": 1266, + "column": 24 } } }, @@ -216301,16 +220958,41 @@ "updateContext": null }, "value": "=", - "start": 47262, - "end": 47263, + "start": 47919, + "end": 47920, "loc": { "start": { - "line": 1246, - "column": 21 + "line": 1266, + "column": 25 }, "end": { - "line": 1246, - "column": 22 + "line": 1266, + "column": 26 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 47921, + "end": 47922, + "loc": { + "start": { + "line": 1266, + "column": 27 + }, + "end": { + "line": 1266, + "column": 28 } } }, @@ -216326,17 +221008,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 47264, - "end": 47268, + "value": "cfg", + "start": 47922, + "end": 47925, "loc": { "start": { - "line": 1246, - "column": 23 + "line": 1266, + "column": 28 }, "end": { - "line": 1246, - "column": 27 + "line": 1266, + "column": 31 } } }, @@ -216353,16 +221035,16 @@ "binop": null, "updateContext": null }, - "start": 47268, - "end": 47269, + "start": 47925, + "end": 47926, "loc": { "start": { - "line": 1246, - "column": 27 + "line": 1266, + "column": 31 }, "end": { - "line": 1246, - "column": 28 + "line": 1266, + "column": 32 } } }, @@ -216378,42 +221060,72 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 47269, - "end": 47273, + "value": "saoEnabled", + "start": 47926, + "end": 47936, "loc": { "start": { - "line": 1246, - "column": 28 + "line": 1266, + "column": 32 }, "end": { - "line": 1246, - "column": 32 + "line": 1266, + "column": 42 } } }, { "type": { - "label": "(", + "label": "==/!=", "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 47937, + "end": 47940, + "loc": { + "start": { + "line": 1266, + "column": 43 + }, + "end": { + "line": 1266, + "column": 46 + } + } + }, + { + "type": { + "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": 47273, - "end": 47274, + "value": "false", + "start": 47941, + "end": 47946, "loc": { "start": { - "line": 1246, - "column": 32 + "line": 1266, + "column": 47 }, "end": { - "line": 1246, - "column": 33 + "line": 1266, + "column": 52 } } }, @@ -216429,16 +221141,16 @@ "postfix": false, "binop": null }, - "start": 47274, - "end": 47275, + "start": 47946, + "end": 47947, "loc": { "start": { - "line": 1246, - "column": 33 + "line": 1266, + "column": 52 }, "end": { - "line": 1246, - "column": 34 + "line": 1266, + "column": 53 } } }, @@ -216455,16 +221167,16 @@ "binop": null, "updateContext": null }, - "start": 47275, - "end": 47276, + "start": 47947, + "end": 47948, "loc": { "start": { - "line": 1246, - "column": 34 + "line": 1266, + "column": 53 }, "end": { - "line": 1246, - "column": 35 + "line": 1266, + "column": 54 } } }, @@ -216483,15 +221195,15 @@ "updateContext": null }, "value": "this", - "start": 47285, - "end": 47289, + "start": 47957, + "end": 47961, "loc": { "start": { - "line": 1247, + "line": 1267, "column": 8 }, "end": { - "line": 1247, + "line": 1267, "column": 12 } } @@ -216509,15 +221221,15 @@ "binop": null, "updateContext": null }, - "start": 47289, - "end": 47290, + "start": 47961, + "end": 47962, "loc": { "start": { - "line": 1247, + "line": 1267, "column": 12 }, "end": { - "line": 1247, + "line": 1267, "column": 13 } } @@ -216534,17 +221246,17 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 47290, - "end": 47302, + "value": "_pbrEnabled", + "start": 47962, + "end": 47973, "loc": { "start": { - "line": 1247, + "line": 1267, "column": 13 }, "end": { - "line": 1247, - "column": 25 + "line": 1267, + "column": 24 } } }, @@ -216562,79 +221274,75 @@ "updateContext": null }, "value": "=", - "start": 47303, - "end": 47304, + "start": 47974, + "end": 47975, "loc": { "start": { - "line": 1247, - "column": 26 + "line": 1267, + "column": 25 }, "end": { - "line": 1247, - "column": 27 + "line": 1267, + "column": 26 } } }, { "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": 47305, - "end": 47309, + "start": 47976, + "end": 47977, "loc": { "start": { - "line": 1247, - "column": 28 + "line": 1267, + "column": 27 }, "end": { - "line": 1247, - "column": 32 + "line": 1267, + "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": null, - "updateContext": null + "binop": null }, - "start": 47309, - "end": 47310, + "value": "cfg", + "start": 47977, + "end": 47980, "loc": { "start": { - "line": 1247, - "column": 32 + "line": 1267, + "column": 28 }, "end": { - "line": 1247, - "column": 33 + "line": 1267, + "column": 31 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -216643,94 +221351,97 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 47320, - "end": 47324, + "start": 47980, + "end": 47981, "loc": { "start": { - "line": 1249, - "column": 8 + "line": 1267, + "column": 31 }, "end": { - "line": 1249, - "column": 12 + "line": 1267, + "column": 32 } } }, { "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": 47324, - "end": 47325, + "value": "pbrEnabled", + "start": 47981, + "end": 47991, "loc": { "start": { - "line": 1249, - "column": 12 + "line": 1267, + "column": 32 }, "end": { - "line": 1249, - "column": 13 + "line": 1267, + "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": 6, + "updateContext": null }, - "value": "_rebuildMatrices", - "start": 47325, - "end": 47341, + "value": "!==", + "start": 47992, + "end": 47995, "loc": { "start": { - "line": 1249, - "column": 13 + "line": 1267, + "column": 43 }, "end": { - "line": 1249, - "column": 29 + "line": 1267, + "column": 46 } } }, { "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": 47341, - "end": 47342, + "value": "false", + "start": 47996, + "end": 48001, "loc": { "start": { - "line": 1249, - "column": 29 + "line": 1267, + "column": 47 }, "end": { - "line": 1249, - "column": 30 + "line": 1267, + "column": 52 } } }, @@ -216746,16 +221457,16 @@ "postfix": false, "binop": null }, - "start": 47342, - "end": 47343, + "start": 48001, + "end": 48002, "loc": { "start": { - "line": 1249, - "column": 30 + "line": 1267, + "column": 52 }, "end": { - "line": 1249, - "column": 31 + "line": 1267, + "column": 53 } } }, @@ -216772,16 +221483,16 @@ "binop": null, "updateContext": null }, - "start": 47343, - "end": 47344, + "start": 48002, + "end": 48003, "loc": { "start": { - "line": 1249, - "column": 31 + "line": 1267, + "column": 53 }, "end": { - "line": 1249, - "column": 32 + "line": 1267, + "column": 54 } } }, @@ -216800,15 +221511,15 @@ "updateContext": null }, "value": "this", - "start": 47354, - "end": 47358, + "start": 48012, + "end": 48016, "loc": { "start": { - "line": 1251, + "line": 1268, "column": 8 }, "end": { - "line": 1251, + "line": 1268, "column": 12 } } @@ -216826,15 +221537,15 @@ "binop": null, "updateContext": null }, - "start": 47358, - "end": 47359, + "start": 48016, + "end": 48017, "loc": { "start": { - "line": 1251, + "line": 1268, "column": 12 }, "end": { - "line": 1251, + "line": 1268, "column": 13 } } @@ -216851,17 +221562,17 @@ "postfix": false, "binop": null }, - "value": "_worldNormalMatrix", - "start": 47359, - "end": 47377, + "value": "_colorTextureEnabled", + "start": 48017, + "end": 48037, "loc": { "start": { - "line": 1251, + "line": 1268, "column": 13 }, "end": { - "line": 1251, - "column": 31 + "line": 1268, + "column": 33 } } }, @@ -216879,23 +221590,23 @@ "updateContext": null }, "value": "=", - "start": 47378, - "end": 47379, + "start": 48038, + "end": 48039, "loc": { "start": { - "line": 1251, - "column": 32 + "line": 1268, + "column": 34 }, "end": { - "line": 1251, - "column": 33 + "line": 1268, + "column": 35 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -216904,76 +221615,75 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 47380, - "end": 47384, + "start": 48040, + "end": 48041, "loc": { "start": { - "line": 1251, - "column": 34 + "line": 1268, + "column": 36 }, "end": { - "line": 1251, - "column": 38 + "line": 1268, + "column": 37 } } }, { "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": 47384, - "end": 47385, + "value": "cfg", + "start": 48041, + "end": 48044, "loc": { "start": { - "line": 1251, - "column": 38 + "line": 1268, + "column": 37 }, "end": { - "line": 1251, - "column": 39 + "line": 1268, + "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": "mat4", - "start": 47385, - "end": 47389, + "start": 48044, + "end": 48045, "loc": { "start": { - "line": 1251, - "column": 39 + "line": 1268, + "column": 40 }, "end": { - "line": 1251, - "column": 43 + "line": 1268, + "column": 41 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -216982,49 +221692,53 @@ "postfix": false, "binop": null }, - "start": 47389, - "end": 47390, + "value": "colorTextureEnabled", + "start": 48045, + "end": 48064, "loc": { "start": { - "line": 1251, - "column": 43 + "line": 1268, + "column": 41 }, "end": { - "line": 1251, - "column": 44 + "line": 1268, + "column": 60 } } }, { "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": 47390, - "end": 47391, + "value": "!==", + "start": 48065, + "end": 48068, "loc": { "start": { - "line": 1251, - "column": 44 + "line": 1268, + "column": 61 }, "end": { - "line": 1251, - "column": 45 + "line": 1268, + "column": 64 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "false", + "keyword": "false", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -217033,24 +221747,25 @@ "binop": null, "updateContext": null }, - "start": 47391, - "end": 47392, + "value": "false", + "start": 48069, + "end": 48074, "loc": { "start": { - "line": 1251, - "column": 45 + "line": 1268, + "column": 65 }, "end": { - "line": 1251, - "column": 46 + "line": 1268, + "column": 70 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -217058,24 +221773,23 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 47401, - "end": 47405, + "start": 48074, + "end": 48075, "loc": { "start": { - "line": 1252, - "column": 8 + "line": 1268, + "column": 70 }, "end": { - "line": 1252, - "column": 12 + "line": 1268, + "column": 71 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -217085,22 +221799,23 @@ "binop": null, "updateContext": null }, - "start": 47405, - "end": 47406, + "start": 48075, + "end": 48076, "loc": { "start": { - "line": 1252, - "column": 12 + "line": 1268, + "column": 71 }, "end": { - "line": 1252, - "column": 13 + "line": 1268, + "column": 72 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -217108,51 +221823,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "inverseMat4", - "start": 47406, - "end": 47417, + "value": "this", + "start": 48086, + "end": 48090, "loc": { "start": { - "line": 1252, - "column": 13 + "line": 1270, + "column": 8 }, "end": { - "line": 1252, - "column": 24 + "line": 1270, + "column": 12 } } }, { "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": 47417, - "end": 47418, + "start": 48090, + "end": 48091, "loc": { "start": { - "line": 1252, - "column": 24 + "line": 1270, + "column": 12 }, "end": { - "line": 1252, - "column": 25 + "line": 1270, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -217160,46 +221876,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 47418, - "end": 47422, + "value": "_isModel", + "start": 48091, + "end": 48099, "loc": { "start": { - "line": 1252, - "column": 25 + "line": 1270, + "column": 13 }, "end": { - "line": 1252, - "column": 29 + "line": 1270, + "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": 47422, - "end": 47423, + "value": "=", + "start": 48100, + "end": 48101, "loc": { "start": { - "line": 1252, - "column": 29 + "line": 1270, + "column": 22 }, "end": { - "line": 1252, - "column": 30 + "line": 1270, + "column": 23 } } }, @@ -217215,24 +221931,24 @@ "postfix": false, "binop": null }, - "value": "_matrix", - "start": 47423, - "end": 47430, + "value": "cfg", + "start": 48102, + "end": 48105, "loc": { "start": { - "line": 1252, - "column": 30 + "line": 1270, + "column": 24 }, "end": { - "line": 1252, - "column": 37 + "line": 1270, + "column": 27 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -217242,23 +221958,22 @@ "binop": null, "updateContext": null }, - "start": 47430, - "end": 47431, + "start": 48105, + "end": 48106, "loc": { "start": { - "line": 1252, - "column": 37 + "line": 1270, + "column": 27 }, "end": { - "line": 1252, - "column": 38 + "line": 1270, + "column": 28 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -217266,27 +221981,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 47432, - "end": 47436, + "value": "isModel", + "start": 48106, + "end": 48113, "loc": { "start": { - "line": 1252, - "column": 39 + "line": 1270, + "column": 28 }, "end": { - "line": 1252, - "column": 43 + "line": 1270, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -217296,50 +222010,52 @@ "binop": null, "updateContext": null }, - "start": 47436, - "end": 47437, + "start": 48113, + "end": 48114, "loc": { "start": { - "line": 1252, - "column": 43 + "line": 1270, + "column": 35 }, "end": { - "line": 1252, - "column": 44 + "line": 1270, + "column": 36 } } }, { "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": "_worldNormalMatrix", - "start": 47437, - "end": 47455, + "value": "if", + "start": 48123, + "end": 48125, "loc": { "start": { - "line": 1252, - "column": 44 + "line": 1271, + "column": 8 }, "end": { - "line": 1252, - "column": 62 + "line": 1271, + "column": 10 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -217347,24 +222063,25 @@ "postfix": false, "binop": null }, - "start": 47455, - "end": 47456, + "start": 48126, + "end": 48127, "loc": { "start": { - "line": 1252, - "column": 62 + "line": 1271, + "column": 11 }, "end": { - "line": 1252, - "column": 63 + "line": 1271, + "column": 12 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -217373,76 +222090,77 @@ "binop": null, "updateContext": null }, - "start": 47456, - "end": 47457, + "value": "this", + "start": 48127, + "end": 48131, "loc": { "start": { - "line": 1252, - "column": 63 + "line": 1271, + "column": 12 }, "end": { - "line": 1252, - "column": 64 + "line": 1271, + "column": 16 } } }, { "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": "math", - "start": 47466, - "end": 47470, + "start": 48131, + "end": 48132, "loc": { "start": { - "line": 1253, - "column": 8 + "line": 1271, + "column": 16 }, "end": { - "line": 1253, - "column": 12 + "line": 1271, + "column": 17 } } }, { "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": 47470, - "end": 47471, + "value": "_isModel", + "start": 48132, + "end": 48140, "loc": { "start": { - "line": 1253, - "column": 12 + "line": 1271, + "column": 17 }, "end": { - "line": 1253, - "column": 13 + "line": 1271, + "column": 25 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -217450,23 +222168,22 @@ "postfix": false, "binop": null }, - "value": "transposeMat4", - "start": 47471, - "end": 47484, + "start": 48140, + "end": 48141, "loc": { "start": { - "line": 1253, - "column": 13 + "line": 1271, + "column": 25 }, "end": { - "line": 1253, + "line": 1271, "column": 26 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -217476,16 +222193,16 @@ "postfix": false, "binop": null }, - "start": 47484, - "end": 47485, + "start": 48142, + "end": 48143, "loc": { "start": { - "line": 1253, - "column": 26 + "line": 1271, + "column": 27 }, "end": { - "line": 1253, - "column": 27 + "line": 1271, + "column": 28 } } }, @@ -217504,16 +222221,16 @@ "updateContext": null }, "value": "this", - "start": 47485, - "end": 47489, + "start": 48156, + "end": 48160, "loc": { "start": { - "line": 1253, - "column": 27 + "line": 1272, + "column": 12 }, "end": { - "line": 1253, - "column": 31 + "line": 1272, + "column": 16 } } }, @@ -217530,16 +222247,16 @@ "binop": null, "updateContext": null }, - "start": 47489, - "end": 47490, + "start": 48160, + "end": 48161, "loc": { "start": { - "line": 1253, - "column": 31 + "line": 1272, + "column": 16 }, "end": { - "line": 1253, - "column": 32 + "line": 1272, + "column": 17 } } }, @@ -217555,23 +222272,23 @@ "postfix": false, "binop": null }, - "value": "_worldNormalMatrix", - "start": 47490, - "end": 47508, + "value": "scene", + "start": 48161, + "end": 48166, "loc": { "start": { - "line": 1253, - "column": 32 + "line": 1272, + "column": 17 }, "end": { - "line": 1253, - "column": 50 + "line": 1272, + "column": 22 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -217579,72 +222296,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 47508, - "end": 47509, - "loc": { - "start": { - "line": 1253, - "column": 50 - }, - "end": { - "line": 1253, - "column": 51 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 47509, - "end": 47510, + "start": 48166, + "end": 48167, "loc": { "start": { - "line": 1253, - "column": 51 + "line": 1272, + "column": 22 }, "end": { - "line": 1253, - "column": 52 + "line": 1272, + "column": 23 } } }, { "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": 47520, - "end": 47522, + "value": "_registerModel", + "start": 48167, + "end": 48181, "loc": { "start": { - "line": 1255, - "column": 8 + "line": 1272, + "column": 23 }, "end": { - "line": 1255, - "column": 10 + "line": 1272, + "column": 37 } } }, @@ -217660,22 +222350,23 @@ "postfix": false, "binop": null }, - "start": 47523, - "end": 47524, + "start": 48181, + "end": 48182, "loc": { "start": { - "line": 1255, - "column": 11 + "line": 1272, + "column": 37 }, "end": { - "line": 1255, - "column": 12 + "line": 1272, + "column": 38 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -217683,25 +222374,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 47524, - "end": 47527, + "value": "this", + "start": 48182, + "end": 48186, "loc": { "start": { - "line": 1255, - "column": 12 + "line": 1272, + "column": 38 }, "end": { - "line": 1255, - "column": 15 + "line": 1272, + "column": 42 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -217709,78 +222401,76 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 47527, - "end": 47528, + "start": 48186, + "end": 48187, "loc": { "start": { - "line": 1255, - "column": 15 + "line": 1272, + "column": 42 }, "end": { - "line": 1255, - "column": 16 + "line": 1272, + "column": 43 } } }, { "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": "matrix", - "start": 47528, - "end": 47534, + "start": 48187, + "end": 48188, "loc": { "start": { - "line": 1255, - "column": 16 + "line": 1272, + "column": 43 }, "end": { - "line": 1255, - "column": 22 + "line": 1272, + "column": 44 } } }, { "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": 47535, - "end": 47537, + "start": 48197, + "end": 48198, "loc": { "start": { - "line": 1255, - "column": 23 + "line": 1273, + "column": 8 }, "end": { - "line": 1255, - "column": 25 + "line": 1273, + "column": 9 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -217788,19 +222478,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 47538, - "end": 47541, + "value": "this", + "start": 48208, + "end": 48212, "loc": { "start": { - "line": 1255, - "column": 26 + "line": 1275, + "column": 8 }, "end": { - "line": 1255, - "column": 29 + "line": 1275, + "column": 12 } } }, @@ -217817,16 +222508,16 @@ "binop": null, "updateContext": null }, - "start": 47541, - "end": 47542, + "start": 48212, + "end": 48213, "loc": { "start": { - "line": 1255, - "column": 29 + "line": 1275, + "column": 12 }, "end": { - "line": 1255, - "column": 30 + "line": 1275, + "column": 13 } } }, @@ -217842,50 +222533,51 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 47542, - "end": 47550, + "value": "_onCameraViewMatrix", + "start": 48213, + "end": 48232, "loc": { "start": { - "line": 1255, - "column": 30 + "line": 1275, + "column": 13 }, "end": { - "line": 1255, - "column": 38 + "line": 1275, + "column": 32 } } }, { "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": 47551, - "end": 47553, + "value": "=", + "start": 48233, + "end": 48234, "loc": { "start": { - "line": 1255, - "column": 39 + "line": 1275, + "column": 33 }, "end": { - "line": 1255, - "column": 41 + "line": 1275, + "column": 34 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -217893,19 +222585,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 47554, - "end": 47557, + "value": "this", + "start": 48235, + "end": 48239, "loc": { "start": { - "line": 1255, - "column": 42 + "line": 1275, + "column": 35 }, "end": { - "line": 1255, - "column": 45 + "line": 1275, + "column": 39 } } }, @@ -217922,16 +222615,16 @@ "binop": null, "updateContext": null }, - "start": 47557, - "end": 47558, + "start": 48239, + "end": 48240, "loc": { "start": { - "line": 1255, - "column": 45 + "line": 1275, + "column": 39 }, "end": { - "line": 1255, - "column": 46 + "line": 1275, + "column": 40 } } }, @@ -217947,44 +222640,43 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 47558, - "end": 47566, + "value": "scene", + "start": 48240, + "end": 48245, "loc": { "start": { - "line": 1255, - "column": 46 + "line": 1275, + "column": 40 }, "end": { - "line": 1255, - "column": 54 + "line": 1275, + "column": 45 } } }, { "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": 47567, - "end": 47569, + "start": 48245, + "end": 48246, "loc": { "start": { - "line": 1255, - "column": 55 + "line": 1275, + "column": 45 }, "end": { - "line": 1255, - "column": 57 + "line": 1275, + "column": 46 } } }, @@ -218000,17 +222692,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 47570, - "end": 47573, + "value": "camera", + "start": 48246, + "end": 48252, "loc": { "start": { - "line": 1255, - "column": 58 + "line": 1275, + "column": 46 }, "end": { - "line": 1255, - "column": 61 + "line": 1275, + "column": 52 } } }, @@ -218027,16 +222719,16 @@ "binop": null, "updateContext": null }, - "start": 47573, - "end": 47574, + "start": 48252, + "end": 48253, "loc": { "start": { - "line": 1255, - "column": 61 + "line": 1275, + "column": 52 }, "end": { - "line": 1255, - "column": 62 + "line": 1275, + "column": 53 } } }, @@ -218052,50 +222744,48 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 47574, - "end": 47579, + "value": "on", + "start": 48253, + "end": 48255, "loc": { "start": { - "line": 1255, - "column": 62 + "line": 1275, + "column": 53 }, "end": { - "line": 1255, - "column": 67 + "line": 1275, + "column": 55 } } }, { "type": { - "label": "||", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 47580, - "end": 47582, + "start": 48255, + "end": 48256, "loc": { "start": { - "line": 1255, - "column": 68 + "line": 1275, + "column": 55 }, "end": { - "line": 1255, - "column": 70 + "line": 1275, + "column": 56 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -218103,26 +222793,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 47583, - "end": 47586, + "value": "matrix", + "start": 48256, + "end": 48264, "loc": { "start": { - "line": 1255, - "column": 71 + "line": 1275, + "column": 56 }, "end": { - "line": 1255, - "column": 74 + "line": 1275, + "column": 64 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -218132,23 +222823,23 @@ "binop": null, "updateContext": null }, - "start": 47586, - "end": 47587, + "start": 48264, + "end": 48265, "loc": { "start": { - "line": 1255, - "column": 74 + "line": 1275, + "column": 64 }, "end": { - "line": 1255, - "column": 75 + "line": 1275, + "column": 65 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -218157,17 +222848,16 @@ "postfix": false, "binop": null }, - "value": "quaternion", - "start": 47587, - "end": 47597, + "start": 48266, + "end": 48267, "loc": { "start": { - "line": 1255, - "column": 75 + "line": 1275, + "column": 66 }, "end": { - "line": 1255, - "column": 85 + "line": 1275, + "column": 67 } } }, @@ -218183,16 +222873,42 @@ "postfix": false, "binop": null }, - "start": 47597, - "end": 47598, + "start": 48267, + "end": 48268, "loc": { "start": { - "line": 1255, - "column": 85 + "line": 1275, + "column": 67 }, "end": { - "line": 1255, - "column": 86 + "line": 1275, + "column": 68 + } + } + }, + { + "type": { + "label": "=>", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 48269, + "end": 48271, + "loc": { + "start": { + "line": 1275, + "column": 69 + }, + "end": { + "line": 1275, + "column": 71 } } }, @@ -218208,16 +222924,16 @@ "postfix": false, "binop": null }, - "start": 47599, - "end": 47600, + "start": 48272, + "end": 48273, "loc": { "start": { - "line": 1255, - "column": 87 + "line": 1275, + "column": 72 }, "end": { - "line": 1255, - "column": 88 + "line": 1275, + "column": 73 } } }, @@ -218236,15 +222952,15 @@ "updateContext": null }, "value": "this", - "start": 47613, - "end": 47617, + "start": 48286, + "end": 48290, "loc": { "start": { - "line": 1256, + "line": 1276, "column": 12 }, "end": { - "line": 1256, + "line": 1276, "column": 16 } } @@ -218262,15 +222978,15 @@ "binop": null, "updateContext": null }, - "start": 47617, - "end": 47618, + "start": 48290, + "end": 48291, "loc": { "start": { - "line": 1256, + "line": 1276, "column": 16 }, "end": { - "line": 1256, + "line": 1276, "column": 17 } } @@ -218287,17 +223003,17 @@ "postfix": false, "binop": null }, - "value": "_viewMatrix", - "start": 47618, - "end": 47629, + "value": "_viewMatrixDirty", + "start": 48291, + "end": 48307, "loc": { "start": { - "line": 1256, + "line": 1276, "column": 17 }, "end": { - "line": 1256, - "column": 28 + "line": 1276, + "column": 33 } } }, @@ -218315,22 +223031,23 @@ "updateContext": null }, "value": "=", - "start": 47630, - "end": 47631, + "start": 48308, + "end": 48309, "loc": { "start": { - "line": 1256, - "column": 29 + "line": 1276, + "column": 34 }, "end": { - "line": 1256, - "column": 30 + "line": 1276, + "column": 35 } } }, { "type": { - "label": "name", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -218338,26 +223055,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 47632, - "end": 47636, + "value": "true", + "start": 48310, + "end": 48314, "loc": { "start": { - "line": 1256, - "column": 31 + "line": 1276, + "column": 36 }, "end": { - "line": 1256, - "column": 35 + "line": 1276, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -218367,50 +223085,24 @@ "binop": null, "updateContext": null }, - "start": 47636, - "end": 47637, + "start": 48314, + "end": 48315, "loc": { "start": { - "line": 1256, - "column": 35 + "line": 1276, + "column": 40 }, "end": { - "line": 1256, - "column": 36 + "line": 1276, + "column": 41 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "mat4", - "start": 47637, - "end": 47641, - "loc": { - "start": { - "line": 1256, - "column": 36 - }, - "end": { - "line": 1256, - "column": 40 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -218418,16 +223110,16 @@ "postfix": false, "binop": null }, - "start": 47641, - "end": 47642, + "start": 48324, + "end": 48325, "loc": { "start": { - "line": 1256, - "column": 40 + "line": 1277, + "column": 8 }, "end": { - "line": 1256, - "column": 41 + "line": 1277, + "column": 9 } } }, @@ -218443,16 +223135,16 @@ "postfix": false, "binop": null }, - "start": 47642, - "end": 47643, + "start": 48325, + "end": 48326, "loc": { "start": { - "line": 1256, - "column": 41 + "line": 1277, + "column": 9 }, "end": { - "line": 1256, - "column": 42 + "line": 1277, + "column": 10 } } }, @@ -218469,16 +223161,16 @@ "binop": null, "updateContext": null }, - "start": 47643, - "end": 47644, + "start": 48326, + "end": 48327, "loc": { "start": { - "line": 1256, - "column": 42 + "line": 1277, + "column": 10 }, "end": { - "line": 1256, - "column": 43 + "line": 1277, + "column": 11 } } }, @@ -218497,16 +223189,16 @@ "updateContext": null }, "value": "this", - "start": 47657, - "end": 47661, + "start": 48337, + "end": 48341, "loc": { "start": { - "line": 1257, - "column": 12 + "line": 1279, + "column": 8 }, "end": { - "line": 1257, - "column": 16 + "line": 1279, + "column": 12 } } }, @@ -218523,16 +223215,16 @@ "binop": null, "updateContext": null }, - "start": 47661, - "end": 47662, + "start": 48341, + "end": 48342, "loc": { "start": { - "line": 1257, - "column": 16 + "line": 1279, + "column": 12 }, "end": { - "line": 1257, - "column": 17 + "line": 1279, + "column": 13 } } }, @@ -218548,17 +223240,17 @@ "postfix": false, "binop": null }, - "value": "_viewNormalMatrix", - "start": 47662, - "end": 47679, + "value": "_meshesWithDirtyMatrices", + "start": 48342, + "end": 48366, "loc": { "start": { - "line": 1257, - "column": 17 + "line": 1279, + "column": 13 }, "end": { - "line": 1257, - "column": 34 + "line": 1279, + "column": 37 } } }, @@ -218576,48 +223268,48 @@ "updateContext": null }, "value": "=", - "start": 47680, - "end": 47681, + "start": 48367, + "end": 48368, "loc": { "start": { - "line": 1257, - "column": 35 + "line": 1279, + "column": 38 }, "end": { - "line": 1257, - "column": 36 + "line": 1279, + "column": 39 } } }, { "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": 47682, - "end": 47686, + "start": 48369, + "end": 48370, "loc": { "start": { - "line": 1257, - "column": 37 + "line": 1279, + "column": 40 }, "end": { - "line": 1257, + "line": 1279, "column": 41 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -218628,73 +223320,76 @@ "binop": null, "updateContext": null }, - "start": 47686, - "end": 47687, + "start": 48370, + "end": 48371, "loc": { "start": { - "line": 1257, + "line": 1279, "column": 41 }, "end": { - "line": 1257, + "line": 1279, "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": "mat4", - "start": 47687, - "end": 47691, + "start": 48371, + "end": 48372, "loc": { "start": { - "line": 1257, + "line": 1279, "column": 42 }, "end": { - "line": 1257, - "column": 46 + "line": 1279, + "column": 43 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 47691, - "end": 47692, + "value": "this", + "start": 48381, + "end": 48385, "loc": { "start": { - "line": 1257, - "column": 46 + "line": 1280, + "column": 8 }, "end": { - "line": 1257, - "column": 47 + "line": 1280, + "column": 12 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -218702,51 +223397,78 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 48385, + "end": 48386, + "loc": { + "start": { + "line": 1280, + "column": 12 + }, + "end": { + "line": 1280, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 47692, - "end": 47693, + "value": "_numMeshesWithDirtyMatrices", + "start": 48386, + "end": 48413, "loc": { "start": { - "line": 1257, - "column": 47 + "line": 1280, + "column": 13 }, "end": { - "line": 1257, - "column": 48 + "line": 1280, + "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": 47693, - "end": 47694, + "value": "=", + "start": 48414, + "end": 48415, "loc": { "start": { - "line": 1257, - "column": 48 + "line": 1280, + "column": 41 }, "end": { - "line": 1257, - "column": 49 + "line": 1280, + "column": 42 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -218757,24 +223479,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 47707, - "end": 47711, + "value": 0, + "start": 48416, + "end": 48417, "loc": { "start": { - "line": 1258, - "column": 12 + "line": 1280, + "column": 43 }, "end": { - "line": 1258, - "column": 16 + "line": 1280, + "column": 44 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -218784,22 +223506,23 @@ "binop": null, "updateContext": null }, - "start": 47711, - "end": 47712, + "start": 48417, + "end": 48418, "loc": { "start": { - "line": 1258, - "column": 16 + "line": 1280, + "column": 44 }, "end": { - "line": 1258, - "column": 17 + "line": 1280, + "column": 45 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -218807,53 +223530,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_viewMatrixDirty", - "start": 47712, - "end": 47728, + "value": "this", + "start": 48428, + "end": 48432, "loc": { "start": { - "line": 1258, - "column": 17 + "line": 1282, + "column": 8 }, "end": { - "line": 1258, - "column": 33 + "line": 1282, + "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": 47729, - "end": 47730, + "start": 48432, + "end": 48433, "loc": { "start": { - "line": 1258, - "column": 34 + "line": 1282, + "column": 12 }, "end": { - "line": 1258, - "column": 35 + "line": 1282, + "column": 13 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -218861,46 +223583,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 47731, - "end": 47735, + "value": "_onTick", + "start": 48433, + "end": 48440, "loc": { "start": { - "line": 1258, - "column": 36 + "line": 1282, + "column": 13 }, "end": { - "line": 1258, - "column": 40 + "line": 1282, + "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": 47735, - "end": 47736, + "value": "=", + "start": 48441, + "end": 48442, "loc": { "start": { - "line": 1258, - "column": 40 + "line": 1282, + "column": 21 }, "end": { - "line": 1258, - "column": 41 + "line": 1282, + "column": 22 } } }, @@ -218919,16 +223641,16 @@ "updateContext": null }, "value": "this", - "start": 47749, - "end": 47753, + "start": 48443, + "end": 48447, "loc": { "start": { - "line": 1259, - "column": 12 + "line": 1282, + "column": 23 }, "end": { - "line": 1259, - "column": 16 + "line": 1282, + "column": 27 } } }, @@ -218945,16 +223667,16 @@ "binop": null, "updateContext": null }, - "start": 47753, - "end": 47754, + "start": 48447, + "end": 48448, "loc": { "start": { - "line": 1259, - "column": 16 + "line": 1282, + "column": 27 }, "end": { - "line": 1259, - "column": 17 + "line": 1282, + "column": 28 } } }, @@ -218970,51 +223692,49 @@ "postfix": false, "binop": null }, - "value": "_matrixNonIdentity", - "start": 47754, - "end": 47772, + "value": "scene", + "start": 48448, + "end": 48453, "loc": { "start": { - "line": 1259, - "column": 17 + "line": 1282, + "column": 28 }, "end": { - "line": 1259, - "column": 35 + "line": 1282, + "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": 47773, - "end": 47774, + "start": 48453, + "end": 48454, "loc": { "start": { - "line": 1259, - "column": 36 + "line": 1282, + "column": 33 }, "end": { - "line": 1259, - "column": 37 + "line": 1282, + "column": 34 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -219022,80 +223742,79 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 47775, - "end": 47779, + "value": "on", + "start": 48454, + "end": 48456, "loc": { "start": { - "line": 1259, - "column": 38 + "line": 1282, + "column": 34 }, "end": { - "line": 1259, - "column": 42 + "line": 1282, + "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": 47779, - "end": 47780, + "start": 48456, + "end": 48457, "loc": { "start": { - "line": 1259, - "column": 42 + "line": 1282, + "column": 36 }, "end": { - "line": 1259, - "column": 43 + "line": 1282, + "column": 37 } } }, { "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": 47789, - "end": 47790, + "value": "tick", + "start": 48457, + "end": 48463, "loc": { "start": { - "line": 1260, - "column": 8 + "line": 1282, + "column": 37 }, "end": { - "line": 1260, - "column": 9 + "line": 1282, + "column": 43 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -219104,51 +223823,49 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 47800, - "end": 47804, + "start": 48463, + "end": 48464, "loc": { "start": { - "line": 1262, - "column": 8 + "line": 1282, + "column": 43 }, "end": { - "line": 1262, - "column": 12 + "line": 1282, + "column": 44 } } }, { "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": 47804, - "end": 47805, + "start": 48465, + "end": 48466, "loc": { "start": { - "line": 1262, - "column": 12 + "line": 1282, + "column": 45 }, "end": { - "line": 1262, - "column": 13 + "line": 1282, + "column": 46 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -219156,97 +223873,120 @@ "postfix": false, "binop": null }, - "value": "_opacity", - "start": 47805, - "end": 47813, + "start": 48466, + "end": 48467, "loc": { "start": { - "line": 1262, - "column": 13 + "line": 1282, + "column": 46 }, "end": { - "line": 1262, - "column": 21 + "line": 1282, + "column": 47 } } }, { "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": 47814, - "end": 47815, + "start": 48468, + "end": 48470, "loc": { "start": { - "line": 1262, - "column": 22 + "line": 1282, + "column": 48 }, "end": { - "line": 1262, - "column": 23 + "line": 1282, + "column": 50 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 48471, + "end": 48472, + "loc": { + "start": { + "line": 1282, + "column": 51 + }, + "end": { + "line": 1282, + "column": 52 + } + } + }, + { + "type": { + "label": "while", + "keyword": "while", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": true, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": 1, - "start": 47816, - "end": 47819, + "value": "while", + "start": 48485, + "end": 48490, "loc": { "start": { - "line": 1262, - "column": 24 + "line": 1283, + "column": 12 }, "end": { - "line": 1262, - "column": 27 + "line": 1283, + "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": 47819, - "end": 47820, + "start": 48491, + "end": 48492, "loc": { "start": { - "line": 1262, - "column": 27 + "line": 1283, + "column": 18 }, "end": { - "line": 1262, - "column": 28 + "line": 1283, + "column": 19 } } }, @@ -219265,16 +224005,16 @@ "updateContext": null }, "value": "this", - "start": 47829, - "end": 47833, + "start": 48492, + "end": 48496, "loc": { "start": { - "line": 1263, - "column": 8 + "line": 1283, + "column": 19 }, "end": { - "line": 1263, - "column": 12 + "line": 1283, + "column": 23 } } }, @@ -219291,16 +224031,16 @@ "binop": null, "updateContext": null }, - "start": 47833, - "end": 47834, + "start": 48496, + "end": 48497, "loc": { "start": { - "line": 1263, - "column": 12 + "line": 1283, + "column": 23 }, "end": { - "line": 1263, - "column": 13 + "line": 1283, + "column": 24 } } }, @@ -219316,51 +224056,51 @@ "postfix": false, "binop": null }, - "value": "_colorize", - "start": 47834, - "end": 47843, + "value": "_numMeshesWithDirtyMatrices", + "start": 48497, + "end": 48524, "loc": { "start": { - "line": 1263, - "column": 13 + "line": 1283, + "column": 24 }, "end": { - "line": 1263, - "column": 22 + "line": 1283, + "column": 51 } } }, { "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": 47844, - "end": 47845, + "value": ">", + "start": 48525, + "end": 48526, "loc": { "start": { - "line": 1263, - "column": 23 + "line": 1283, + "column": 52 }, "end": { - "line": 1263, - "column": 24 + "line": 1283, + "column": 53 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -219370,75 +224110,74 @@ "binop": null, "updateContext": null }, - "start": 47846, - "end": 47847, + "value": 0, + "start": 48527, + "end": 48528, "loc": { "start": { - "line": 1263, - "column": 25 + "line": 1283, + "column": 54 }, "end": { - "line": 1263, - "column": 26 + "line": 1283, + "column": 55 } } }, { "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": 1, - "start": 47847, - "end": 47848, + "start": 48528, + "end": 48529, "loc": { "start": { - "line": 1263, - "column": 26 + "line": 1283, + "column": 55 }, "end": { - "line": 1263, - "column": 27 + "line": 1283, + "column": 56 } } }, { "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": 47848, - "end": 47849, + "start": 48530, + "end": 48531, "loc": { "start": { - "line": 1263, - "column": 27 + "line": 1283, + "column": 57 }, "end": { - "line": 1263, - "column": 28 + "line": 1283, + "column": 58 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -219449,24 +224188,24 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 47850, - "end": 47851, + "value": "this", + "start": 48548, + "end": 48552, "loc": { "start": { - "line": 1263, - "column": 29 + "line": 1284, + "column": 16 }, "end": { - "line": 1263, - "column": 30 + "line": 1284, + "column": 20 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -219476,22 +224215,22 @@ "binop": null, "updateContext": null }, - "start": 47851, - "end": 47852, + "start": 48552, + "end": 48553, "loc": { "start": { - "line": 1263, - "column": 30 + "line": 1284, + "column": 20 }, "end": { - "line": 1263, - "column": 31 + "line": 1284, + "column": 21 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -219499,28 +224238,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 47853, - "end": 47854, + "value": "_meshesWithDirtyMatrices", + "start": 48553, + "end": 48577, "loc": { "start": { - "line": 1263, - "column": 32 + "line": 1284, + "column": 21 }, "end": { - "line": 1263, - "column": 33 + "line": 1284, + "column": 45 } } }, { "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -219529,42 +224267,42 @@ "binop": null, "updateContext": null }, - "start": 47854, - "end": 47855, + "start": 48577, + "end": 48578, "loc": { "start": { - "line": 1263, - "column": 33 + "line": 1284, + "column": 45 }, "end": { - "line": 1263, - "column": 34 + "line": 1284, + "column": 46 } } }, { "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": 47855, - "end": 47856, + "value": "--", + "start": 48578, + "end": 48580, "loc": { "start": { - "line": 1263, - "column": 34 + "line": 1284, + "column": 46 }, "end": { - "line": 1263, - "column": 35 + "line": 1284, + "column": 48 } } }, @@ -219583,16 +224321,16 @@ "updateContext": null }, "value": "this", - "start": 47866, - "end": 47870, + "start": 48580, + "end": 48584, "loc": { "start": { - "line": 1265, - "column": 8 + "line": 1284, + "column": 48 }, "end": { - "line": 1265, - "column": 12 + "line": 1284, + "column": 52 } } }, @@ -219609,16 +224347,16 @@ "binop": null, "updateContext": null }, - "start": 47870, - "end": 47871, + "start": 48584, + "end": 48585, "loc": { "start": { - "line": 1265, - "column": 12 + "line": 1284, + "column": 52 }, "end": { - "line": 1265, - "column": 13 + "line": 1284, + "column": 53 } } }, @@ -219634,69 +224372,69 @@ "postfix": false, "binop": null }, - "value": "_saoEnabled", - "start": 47871, - "end": 47882, + "value": "_numMeshesWithDirtyMatrices", + "start": 48585, + "end": 48612, "loc": { "start": { - "line": 1265, - "column": 13 + "line": 1284, + "column": 53 }, "end": { - "line": 1265, - "column": 24 + "line": 1284, + "column": 80 } } }, { "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": 47883, - "end": 47884, + "start": 48612, + "end": 48613, "loc": { "start": { - "line": 1265, - "column": 25 + "line": 1284, + "column": 80 }, "end": { - "line": 1265, - "column": 26 + "line": 1284, + "column": 81 } } }, { "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": 47885, - "end": 47886, + "start": 48613, + "end": 48614, "loc": { "start": { - "line": 1265, - "column": 27 + "line": 1284, + "column": 81 }, "end": { - "line": 1265, - "column": 28 + "line": 1284, + "column": 82 } } }, @@ -219712,51 +224450,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 47886, - "end": 47889, + "value": "_updateMatrix", + "start": 48614, + "end": 48627, "loc": { "start": { - "line": 1265, - "column": 28 + "line": 1284, + "column": 82 }, "end": { - "line": 1265, - "column": 31 + "line": 1284, + "column": 95 } } }, { "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": 47889, - "end": 47890, + "start": 48627, + "end": 48628, "loc": { "start": { - "line": 1265, - "column": 31 + "line": 1284, + "column": 95 }, "end": { - "line": 1265, - "column": 32 + "line": 1284, + "column": 96 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -219764,23 +224501,22 @@ "postfix": false, "binop": null }, - "value": "saoEnabled", - "start": 47890, - "end": 47900, + "start": 48628, + "end": 48629, "loc": { "start": { - "line": 1265, - "column": 32 + "line": 1284, + "column": 96 }, "end": { - "line": 1265, - "column": 42 + "line": 1284, + "column": 97 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -219788,48 +224524,69 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 47901, - "end": 47904, + "start": 48629, + "end": 48630, "loc": { "start": { - "line": 1265, - "column": 43 + "line": 1284, + "column": 97 }, "end": { - "line": 1265, - "column": 46 + "line": 1284, + "column": 98 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 47905, - "end": 47910, + "start": 48643, + "end": 48644, "loc": { "start": { - "line": 1265, - "column": 47 + "line": 1285, + "column": 12 }, "end": { - "line": 1265, - "column": 52 + "line": 1285, + "column": 13 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 48653, + "end": 48654, + "loc": { + "start": { + "line": 1286, + "column": 8 + }, + "end": { + "line": 1286, + "column": 9 } } }, @@ -219845,16 +224602,16 @@ "postfix": false, "binop": null }, - "start": 47910, - "end": 47911, + "start": 48654, + "end": 48655, "loc": { "start": { - "line": 1265, - "column": 52 + "line": 1286, + "column": 9 }, "end": { - "line": 1265, - "column": 53 + "line": 1286, + "column": 10 } } }, @@ -219871,16 +224628,16 @@ "binop": null, "updateContext": null }, - "start": 47911, - "end": 47912, + "start": 48655, + "end": 48656, "loc": { "start": { - "line": 1265, - "column": 53 + "line": 1286, + "column": 10 }, "end": { - "line": 1265, - "column": 54 + "line": 1286, + "column": 11 } } }, @@ -219899,15 +224656,15 @@ "updateContext": null }, "value": "this", - "start": 47921, - "end": 47925, + "start": 48666, + "end": 48670, "loc": { "start": { - "line": 1266, + "line": 1288, "column": 8 }, "end": { - "line": 1266, + "line": 1288, "column": 12 } } @@ -219925,15 +224682,15 @@ "binop": null, "updateContext": null }, - "start": 47925, - "end": 47926, + "start": 48670, + "end": 48671, "loc": { "start": { - "line": 1266, + "line": 1288, "column": 12 }, "end": { - "line": 1266, + "line": 1288, "column": 13 } } @@ -219950,44 +224707,17 @@ "postfix": false, "binop": null }, - "value": "_pbrEnabled", - "start": 47926, - "end": 47937, + "value": "_createDefaultTextureSet", + "start": 48671, + "end": 48695, "loc": { "start": { - "line": 1266, + "line": 1288, "column": 13 }, "end": { - "line": 1266, - "column": 24 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 47938, - "end": 47939, - "loc": { - "start": { - "line": 1266, - "column": 25 - }, - "end": { - "line": 1266, - "column": 26 + "line": 1288, + "column": 37 } } }, @@ -220003,24 +224733,24 @@ "postfix": false, "binop": null }, - "start": 47940, - "end": 47941, + "start": 48695, + "end": 48696, "loc": { "start": { - "line": 1266, - "column": 27 + "line": 1288, + "column": 37 }, "end": { - "line": 1266, - "column": 28 + "line": 1288, + "column": 38 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -220028,24 +224758,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 47941, - "end": 47944, + "start": 48696, + "end": 48697, "loc": { "start": { - "line": 1266, - "column": 28 + "line": 1288, + "column": 38 }, "end": { - "line": 1266, - "column": 31 + "line": 1288, + "column": 39 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -220055,22 +224784,23 @@ "binop": null, "updateContext": null }, - "start": 47944, - "end": 47945, + "start": 48697, + "end": 48698, "loc": { "start": { - "line": 1266, - "column": 31 + "line": 1288, + "column": 39 }, "end": { - "line": 1266, - "column": 32 + "line": 1288, + "column": 40 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -220078,55 +224808,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "pbrEnabled", - "start": 47945, - "end": 47955, - "loc": { - "start": { - "line": 1266, - "column": 32 - }, - "end": { - "line": 1266, - "column": 42 - } - } - }, - { - "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 47956, - "end": 47959, + "value": "this", + "start": 48708, + "end": 48712, "loc": { "start": { - "line": 1266, - "column": 43 + "line": 1290, + "column": 8 }, "end": { - "line": 1266, - "column": 46 + "line": 1290, + "column": 12 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -220135,25 +224838,24 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 47960, - "end": 47965, + "start": 48712, + "end": 48713, "loc": { "start": { - "line": 1266, - "column": 47 + "line": 1290, + "column": 12 }, "end": { - "line": 1266, - "column": 52 + "line": 1290, + "column": 13 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -220161,49 +224863,50 @@ "postfix": false, "binop": null }, - "start": 47965, - "end": 47966, + "value": "visible", + "start": 48713, + "end": 48720, "loc": { "start": { - "line": 1266, - "column": 52 + "line": 1290, + "column": 13 }, "end": { - "line": 1266, - "column": 53 + "line": 1290, + "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": 47966, - "end": 47967, + "value": "=", + "start": 48721, + "end": 48722, "loc": { "start": { - "line": 1266, - "column": 53 + "line": 1290, + "column": 21 }, "end": { - "line": 1266, - "column": 54 + "line": 1290, + "column": 22 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -220211,20 +224914,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 47976, - "end": 47980, + "value": "cfg", + "start": 48723, + "end": 48726, "loc": { "start": { - "line": 1267, - "column": 8 + "line": 1290, + "column": 23 }, "end": { - "line": 1267, - "column": 12 + "line": 1290, + "column": 26 } } }, @@ -220241,16 +224943,16 @@ "binop": null, "updateContext": null }, - "start": 47980, - "end": 47981, + "start": 48726, + "end": 48727, "loc": { "start": { - "line": 1267, - "column": 12 + "line": 1290, + "column": 26 }, "end": { - "line": 1267, - "column": 13 + "line": 1290, + "column": 27 } } }, @@ -220266,183 +224968,184 @@ "postfix": false, "binop": null }, - "value": "_colorTextureEnabled", - "start": 47981, - "end": 48001, + "value": "visible", + "start": 48727, + "end": 48734, "loc": { "start": { - "line": 1267, - "column": 13 + "line": 1290, + "column": 27 }, "end": { - "line": 1267, - "column": 33 + "line": 1290, + "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": 48002, - "end": 48003, + "start": 48734, + "end": 48735, "loc": { "start": { - "line": 1267, + "line": 1290, "column": 34 }, "end": { - "line": 1267, + "line": 1290, "column": 35 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 48004, - "end": 48005, + "value": "this", + "start": 48744, + "end": 48748, "loc": { "start": { - "line": 1267, - "column": 36 + "line": 1291, + "column": 8 }, "end": { - "line": 1267, - "column": 37 + "line": 1291, + "column": 12 } } }, { "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": "cfg", - "start": 48005, - "end": 48008, + "start": 48748, + "end": 48749, "loc": { "start": { - "line": 1267, - "column": 37 + "line": 1291, + "column": 12 }, "end": { - "line": 1267, - "column": 40 + "line": 1291, + "column": 13 } } }, { "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": 48008, - "end": 48009, + "value": "culled", + "start": 48749, + "end": 48755, "loc": { "start": { - "line": 1267, - "column": 40 + "line": 1291, + "column": 13 }, "end": { - "line": 1267, - "column": 41 + "line": 1291, + "column": 19 } } }, { "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": "colorTextureEnabled", - "start": 48009, - "end": 48028, + "value": "=", + "start": 48756, + "end": 48757, "loc": { "start": { - "line": 1267, - "column": 41 + "line": 1291, + "column": 20 }, "end": { - "line": 1267, - "column": 60 + "line": 1291, + "column": 21 } } }, { "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": 48029, - "end": 48032, + "value": "cfg", + "start": 48758, + "end": 48761, "loc": { "start": { - "line": 1267, - "column": 61 + "line": 1291, + "column": 22 }, "end": { - "line": 1267, - "column": 64 + "line": 1291, + "column": 25 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -220451,25 +225154,24 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 48033, - "end": 48038, + "start": 48761, + "end": 48762, "loc": { "start": { - "line": 1267, - "column": 65 + "line": 1291, + "column": 25 }, "end": { - "line": 1267, - "column": 70 + "line": 1291, + "column": 26 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -220477,16 +225179,17 @@ "postfix": false, "binop": null }, - "start": 48038, - "end": 48039, + "value": "culled", + "start": 48762, + "end": 48768, "loc": { "start": { - "line": 1267, - "column": 70 + "line": 1291, + "column": 26 }, "end": { - "line": 1267, - "column": 71 + "line": 1291, + "column": 32 } } }, @@ -220503,16 +225206,16 @@ "binop": null, "updateContext": null }, - "start": 48039, - "end": 48040, + "start": 48768, + "end": 48769, "loc": { "start": { - "line": 1267, - "column": 71 + "line": 1291, + "column": 32 }, "end": { - "line": 1267, - "column": 72 + "line": 1291, + "column": 33 } } }, @@ -220531,15 +225234,15 @@ "updateContext": null }, "value": "this", - "start": 48050, - "end": 48054, + "start": 48778, + "end": 48782, "loc": { "start": { - "line": 1269, + "line": 1292, "column": 8 }, "end": { - "line": 1269, + "line": 1292, "column": 12 } } @@ -220557,15 +225260,15 @@ "binop": null, "updateContext": null }, - "start": 48054, - "end": 48055, + "start": 48782, + "end": 48783, "loc": { "start": { - "line": 1269, + "line": 1292, "column": 12 }, "end": { - "line": 1269, + "line": 1292, "column": 13 } } @@ -220582,16 +225285,16 @@ "postfix": false, "binop": null }, - "value": "_isModel", - "start": 48055, - "end": 48063, + "value": "pickable", + "start": 48783, + "end": 48791, "loc": { "start": { - "line": 1269, + "line": 1292, "column": 13 }, "end": { - "line": 1269, + "line": 1292, "column": 21 } } @@ -220610,15 +225313,15 @@ "updateContext": null }, "value": "=", - "start": 48064, - "end": 48065, + "start": 48792, + "end": 48793, "loc": { "start": { - "line": 1269, + "line": 1292, "column": 22 }, "end": { - "line": 1269, + "line": 1292, "column": 23 } } @@ -220636,15 +225339,15 @@ "binop": null }, "value": "cfg", - "start": 48066, - "end": 48069, + "start": 48794, + "end": 48797, "loc": { "start": { - "line": 1269, + "line": 1292, "column": 24 }, "end": { - "line": 1269, + "line": 1292, "column": 27 } } @@ -220662,15 +225365,15 @@ "binop": null, "updateContext": null }, - "start": 48069, - "end": 48070, + "start": 48797, + "end": 48798, "loc": { "start": { - "line": 1269, + "line": 1292, "column": 27 }, "end": { - "line": 1269, + "line": 1292, "column": 28 } } @@ -220687,17 +225390,17 @@ "postfix": false, "binop": null }, - "value": "isModel", - "start": 48070, - "end": 48077, + "value": "pickable", + "start": 48798, + "end": 48806, "loc": { "start": { - "line": 1269, + "line": 1292, "column": 28 }, "end": { - "line": 1269, - "column": 35 + "line": 1292, + "column": 36 } } }, @@ -220714,25 +225417,25 @@ "binop": null, "updateContext": null }, - "start": 48077, - "end": 48078, + "start": 48806, + "end": 48807, "loc": { "start": { - "line": 1269, - "column": 35 + "line": 1292, + "column": 36 }, "end": { - "line": 1269, - "column": 36 + "line": 1292, + "column": 37 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -220741,49 +225444,49 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 48087, - "end": 48089, + "value": "this", + "start": 48816, + "end": 48820, "loc": { "start": { - "line": 1270, + "line": 1293, "column": 8 }, "end": { - "line": 1270, - "column": 10 + "line": 1293, + "column": 12 } } }, { "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": 48090, - "end": 48091, + "start": 48820, + "end": 48821, "loc": { "start": { - "line": 1270, - "column": 11 + "line": 1293, + "column": 12 }, "end": { - "line": 1270, - "column": 12 + "line": 1293, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -220791,46 +225494,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48091, - "end": 48095, + "value": "clippable", + "start": 48821, + "end": 48830, "loc": { "start": { - "line": 1270, - "column": 12 + "line": 1293, + "column": 13 }, "end": { - "line": 1270, - "column": 16 + "line": 1293, + "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": 48095, - "end": 48096, + "value": "=", + "start": 48831, + "end": 48832, "loc": { "start": { - "line": 1270, - "column": 16 + "line": 1293, + "column": 23 }, "end": { - "line": 1270, - "column": 17 + "line": 1293, + "column": 24 } } }, @@ -220846,23 +225549,23 @@ "postfix": false, "binop": null }, - "value": "_isModel", - "start": 48096, - "end": 48104, + "value": "cfg", + "start": 48833, + "end": 48836, "loc": { "start": { - "line": 1270, - "column": 17 + "line": 1293, + "column": 25 }, "end": { - "line": 1270, - "column": 25 + "line": 1293, + "column": 28 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -220870,50 +225573,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 48104, - "end": 48105, - "loc": { - "start": { - "line": 1270, - "column": 25 - }, - "end": { - "line": 1270, - "column": 26 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 48106, - "end": 48107, + "start": 48836, + "end": 48837, "loc": { "start": { - "line": 1270, - "column": 27 + "line": 1293, + "column": 28 }, "end": { - "line": 1270, - "column": 28 + "line": 1293, + "column": 29 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -220921,27 +225599,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48120, - "end": 48124, + "value": "clippable", + "start": 48837, + "end": 48846, "loc": { "start": { - "line": 1271, - "column": 12 + "line": 1293, + "column": 29 }, "end": { - "line": 1271, - "column": 16 + "line": 1293, + "column": 38 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -220951,22 +225628,23 @@ "binop": null, "updateContext": null }, - "start": 48124, - "end": 48125, + "start": 48846, + "end": 48847, "loc": { "start": { - "line": 1271, - "column": 16 + "line": 1293, + "column": 38 }, "end": { - "line": 1271, - "column": 17 + "line": 1293, + "column": 39 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -220974,19 +225652,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scene", - "start": 48125, - "end": 48130, + "value": "this", + "start": 48856, + "end": 48860, "loc": { "start": { - "line": 1271, - "column": 17 + "line": 1294, + "column": 8 }, "end": { - "line": 1271, - "column": 22 + "line": 1294, + "column": 12 } } }, @@ -221003,16 +225682,16 @@ "binop": null, "updateContext": null }, - "start": 48130, - "end": 48131, + "start": 48860, + "end": 48861, "loc": { "start": { - "line": 1271, - "column": 22 + "line": 1294, + "column": 12 }, "end": { - "line": 1271, - "column": 23 + "line": 1294, + "column": 13 } } }, @@ -221028,49 +225707,50 @@ "postfix": false, "binop": null }, - "value": "_registerModel", - "start": 48131, - "end": 48145, + "value": "collidable", + "start": 48861, + "end": 48871, "loc": { "start": { - "line": 1271, - "column": 23 + "line": 1294, + "column": 13 }, "end": { - "line": 1271, - "column": 37 + "line": 1294, + "column": 23 } } }, { "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": 48145, - "end": 48146, + "value": "=", + "start": 48872, + "end": 48873, "loc": { "start": { - "line": 1271, - "column": 37 + "line": 1294, + "column": 24 }, "end": { - "line": 1271, - "column": 38 + "line": 1294, + "column": 25 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -221078,26 +225758,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48146, - "end": 48150, + "value": "cfg", + "start": 48874, + "end": 48877, "loc": { "start": { - "line": 1271, - "column": 38 + "line": 1294, + "column": 26 }, "end": { - "line": 1271, - "column": 42 + "line": 1294, + "column": 29 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -221105,69 +225784,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 48150, - "end": 48151, + "start": 48877, + "end": 48878, "loc": { "start": { - "line": 1271, - "column": 42 + "line": 1294, + "column": 29 }, "end": { - "line": 1271, - "column": 43 + "line": 1294, + "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": 48151, - "end": 48152, + "value": "collidable", + "start": 48878, + "end": 48888, "loc": { "start": { - "line": 1271, - "column": 43 + "line": 1294, + "column": 30 }, "end": { - "line": 1271, - "column": 44 + "line": 1294, + "column": 40 } } }, { "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": 48161, - "end": 48162, + "start": 48888, + "end": 48889, "loc": { "start": { - "line": 1272, - "column": 8 + "line": 1294, + "column": 40 }, "end": { - "line": 1272, - "column": 9 + "line": 1294, + "column": 41 } } }, @@ -221186,15 +225867,15 @@ "updateContext": null }, "value": "this", - "start": 48172, - "end": 48176, + "start": 48898, + "end": 48902, "loc": { "start": { - "line": 1274, + "line": 1295, "column": 8 }, "end": { - "line": 1274, + "line": 1295, "column": 12 } } @@ -221212,15 +225893,15 @@ "binop": null, "updateContext": null }, - "start": 48176, - "end": 48177, + "start": 48902, + "end": 48903, "loc": { "start": { - "line": 1274, + "line": 1295, "column": 12 }, "end": { - "line": 1274, + "line": 1295, "column": 13 } } @@ -221237,17 +225918,17 @@ "postfix": false, "binop": null }, - "value": "_onCameraViewMatrix", - "start": 48177, - "end": 48196, + "value": "castsShadow", + "start": 48903, + "end": 48914, "loc": { "start": { - "line": 1274, + "line": 1295, "column": 13 }, "end": { - "line": 1274, - "column": 32 + "line": 1295, + "column": 24 } } }, @@ -221265,23 +225946,22 @@ "updateContext": null }, "value": "=", - "start": 48197, - "end": 48198, + "start": 48915, + "end": 48916, "loc": { "start": { - "line": 1274, - "column": 33 + "line": 1295, + "column": 25 }, "end": { - "line": 1274, - "column": 34 + "line": 1295, + "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -221289,20 +225969,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48199, - "end": 48203, + "value": "cfg", + "start": 48917, + "end": 48920, "loc": { "start": { - "line": 1274, - "column": 35 + "line": 1295, + "column": 27 }, "end": { - "line": 1274, - "column": 39 + "line": 1295, + "column": 30 } } }, @@ -221319,16 +225998,16 @@ "binop": null, "updateContext": null }, - "start": 48203, - "end": 48204, + "start": 48920, + "end": 48921, "loc": { "start": { - "line": 1274, - "column": 39 + "line": 1295, + "column": 30 }, "end": { - "line": 1274, - "column": 40 + "line": 1295, + "column": 31 } } }, @@ -221344,24 +226023,24 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 48204, - "end": 48209, + "value": "castsShadow", + "start": 48921, + "end": 48932, "loc": { "start": { - "line": 1274, - "column": 40 + "line": 1295, + "column": 31 }, "end": { - "line": 1274, - "column": 45 + "line": 1295, + "column": 42 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -221371,22 +226050,23 @@ "binop": null, "updateContext": null }, - "start": 48209, - "end": 48210, + "start": 48932, + "end": 48933, "loc": { "start": { - "line": 1274, - "column": 45 + "line": 1295, + "column": 42 }, "end": { - "line": 1274, - "column": 46 + "line": 1295, + "column": 43 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -221394,19 +226074,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "camera", - "start": 48210, - "end": 48216, + "value": "this", + "start": 48942, + "end": 48946, "loc": { "start": { - "line": 1274, - "column": 46 + "line": 1296, + "column": 8 }, "end": { - "line": 1274, - "column": 52 + "line": 1296, + "column": 12 } } }, @@ -221423,16 +226104,16 @@ "binop": null, "updateContext": null }, - "start": 48216, - "end": 48217, + "start": 48946, + "end": 48947, "loc": { "start": { - "line": 1274, - "column": 52 + "line": 1296, + "column": 12 }, "end": { - "line": 1274, - "column": 53 + "line": 1296, + "column": 13 } } }, @@ -221448,48 +226129,50 @@ "postfix": false, "binop": null }, - "value": "on", - "start": 48217, - "end": 48219, + "value": "receivesShadow", + "start": 48947, + "end": 48961, "loc": { "start": { - "line": 1274, - "column": 53 + "line": 1296, + "column": 13 }, "end": { - "line": 1274, - "column": 55 + "line": 1296, + "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": 48219, - "end": 48220, + "value": "=", + "start": 48962, + "end": 48963, "loc": { "start": { - "line": 1274, - "column": 55 + "line": 1296, + "column": 28 }, "end": { - "line": 1274, - "column": 56 + "line": 1296, + "column": 29 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -221497,27 +226180,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "matrix", - "start": 48220, - "end": 48228, + "value": "cfg", + "start": 48964, + "end": 48967, "loc": { "start": { - "line": 1274, - "column": 56 + "line": 1296, + "column": 30 }, "end": { - "line": 1274, - "column": 64 + "line": 1296, + "column": 33 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -221527,49 +226209,24 @@ "binop": null, "updateContext": null }, - "start": 48228, - "end": 48229, - "loc": { - "start": { - "line": 1274, - "column": 64 - }, - "end": { - "line": 1274, - "column": 65 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 48230, - "end": 48231, + "start": 48967, + "end": 48968, "loc": { "start": { - "line": 1274, - "column": 66 + "line": 1296, + "column": 33 }, "end": { - "line": 1274, - "column": 67 + "line": 1296, + "column": 34 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -221577,22 +226234,23 @@ "postfix": false, "binop": null }, - "start": 48231, - "end": 48232, + "value": "receivesShadow", + "start": 48968, + "end": 48982, "loc": { "start": { - "line": 1274, - "column": 67 + "line": 1296, + "column": 34 }, "end": { - "line": 1274, - "column": 68 + "line": 1296, + "column": 48 } } }, { "type": { - "label": "=>", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -221603,41 +226261,16 @@ "binop": null, "updateContext": null }, - "start": 48233, - "end": 48235, - "loc": { - "start": { - "line": 1274, - "column": 69 - }, - "end": { - "line": 1274, - "column": 71 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 48236, - "end": 48237, + "start": 48982, + "end": 48983, "loc": { "start": { - "line": 1274, - "column": 72 + "line": 1296, + "column": 48 }, "end": { - "line": 1274, - "column": 73 + "line": 1296, + "column": 49 } } }, @@ -221656,16 +226289,16 @@ "updateContext": null }, "value": "this", - "start": 48250, - "end": 48254, + "start": 48992, + "end": 48996, "loc": { "start": { - "line": 1275, - "column": 12 + "line": 1297, + "column": 8 }, "end": { - "line": 1275, - "column": 16 + "line": 1297, + "column": 12 } } }, @@ -221682,16 +226315,16 @@ "binop": null, "updateContext": null }, - "start": 48254, - "end": 48255, + "start": 48996, + "end": 48997, "loc": { "start": { - "line": 1275, - "column": 16 + "line": 1297, + "column": 12 }, "end": { - "line": 1275, - "column": 17 + "line": 1297, + "column": 13 } } }, @@ -221707,17 +226340,17 @@ "postfix": false, "binop": null }, - "value": "_viewMatrixDirty", - "start": 48255, - "end": 48271, + "value": "xrayed", + "start": 48997, + "end": 49003, "loc": { "start": { - "line": 1275, - "column": 17 + "line": 1297, + "column": 13 }, "end": { - "line": 1275, - "column": 33 + "line": 1297, + "column": 19 } } }, @@ -221735,23 +226368,22 @@ "updateContext": null }, "value": "=", - "start": 48272, - "end": 48273, + "start": 49004, + "end": 49005, "loc": { "start": { - "line": 1275, - "column": 34 + "line": 1297, + "column": 20 }, "end": { - "line": 1275, - "column": 35 + "line": 1297, + "column": 21 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -221759,27 +226391,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 48274, - "end": 48278, + "value": "cfg", + "start": 49006, + "end": 49009, "loc": { "start": { - "line": 1275, - "column": 36 + "line": 1297, + "column": 22 }, "end": { - "line": 1275, - "column": 40 + "line": 1297, + "column": 25 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -221789,49 +226420,24 @@ "binop": null, "updateContext": null }, - "start": 48278, - "end": 48279, - "loc": { - "start": { - "line": 1275, - "column": 40 - }, - "end": { - "line": 1275, - "column": 41 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 48288, - "end": 48289, + "start": 49009, + "end": 49010, "loc": { "start": { - "line": 1276, - "column": 8 + "line": 1297, + "column": 25 }, "end": { - "line": 1276, - "column": 9 + "line": 1297, + "column": 26 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -221839,16 +226445,17 @@ "postfix": false, "binop": null }, - "start": 48289, - "end": 48290, + "value": "xrayed", + "start": 49010, + "end": 49016, "loc": { "start": { - "line": 1276, - "column": 9 + "line": 1297, + "column": 26 }, "end": { - "line": 1276, - "column": 10 + "line": 1297, + "column": 32 } } }, @@ -221865,16 +226472,16 @@ "binop": null, "updateContext": null }, - "start": 48290, - "end": 48291, + "start": 49016, + "end": 49017, "loc": { "start": { - "line": 1276, - "column": 10 + "line": 1297, + "column": 32 }, "end": { - "line": 1276, - "column": 11 + "line": 1297, + "column": 33 } } }, @@ -221893,15 +226500,15 @@ "updateContext": null }, "value": "this", - "start": 48301, - "end": 48305, + "start": 49026, + "end": 49030, "loc": { "start": { - "line": 1278, + "line": 1298, "column": 8 }, "end": { - "line": 1278, + "line": 1298, "column": 12 } } @@ -221919,15 +226526,15 @@ "binop": null, "updateContext": null }, - "start": 48305, - "end": 48306, + "start": 49030, + "end": 49031, "loc": { "start": { - "line": 1278, + "line": 1298, "column": 12 }, "end": { - "line": 1278, + "line": 1298, "column": 13 } } @@ -221944,17 +226551,17 @@ "postfix": false, "binop": null }, - "value": "_meshesWithDirtyMatrices", - "start": 48306, - "end": 48330, + "value": "highlighted", + "start": 49031, + "end": 49042, "loc": { "start": { - "line": 1278, + "line": 1298, "column": 13 }, "end": { - "line": 1278, - "column": 37 + "line": 1298, + "column": 24 } } }, @@ -221972,48 +226579,48 @@ "updateContext": null }, "value": "=", - "start": 48331, - "end": 48332, + "start": 49043, + "end": 49044, "loc": { "start": { - "line": 1278, - "column": 38 + "line": 1298, + "column": 25 }, "end": { - "line": 1278, - "column": 39 + "line": 1298, + "column": 26 } } }, { "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": 48333, - "end": 48334, + "value": "cfg", + "start": 49045, + "end": 49048, "loc": { "start": { - "line": 1278, - "column": 40 + "line": 1298, + "column": 27 }, "end": { - "line": 1278, - "column": 41 + "line": 1298, + "column": 30 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -222024,15 +226631,41 @@ "binop": null, "updateContext": null }, - "start": 48334, - "end": 48335, + "start": 49048, + "end": 49049, "loc": { "start": { - "line": 1278, - "column": 41 + "line": 1298, + "column": 30 + }, + "end": { + "line": 1298, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "highlighted", + "start": 49049, + "end": 49060, + "loc": { + "start": { + "line": 1298, + "column": 31 }, "end": { - "line": 1278, + "line": 1298, "column": 42 } } @@ -222050,15 +226683,15 @@ "binop": null, "updateContext": null }, - "start": 48335, - "end": 48336, + "start": 49060, + "end": 49061, "loc": { "start": { - "line": 1278, + "line": 1298, "column": 42 }, "end": { - "line": 1278, + "line": 1298, "column": 43 } } @@ -222078,15 +226711,15 @@ "updateContext": null }, "value": "this", - "start": 48345, - "end": 48349, + "start": 49070, + "end": 49074, "loc": { "start": { - "line": 1279, + "line": 1299, "column": 8 }, "end": { - "line": 1279, + "line": 1299, "column": 12 } } @@ -222104,15 +226737,15 @@ "binop": null, "updateContext": null }, - "start": 48349, - "end": 48350, + "start": 49074, + "end": 49075, "loc": { "start": { - "line": 1279, + "line": 1299, "column": 12 }, "end": { - "line": 1279, + "line": 1299, "column": 13 } } @@ -222129,17 +226762,17 @@ "postfix": false, "binop": null }, - "value": "_numMeshesWithDirtyMatrices", - "start": 48350, - "end": 48377, + "value": "selected", + "start": 49075, + "end": 49083, "loc": { "start": { - "line": 1279, + "line": 1299, "column": 13 }, "end": { - "line": 1279, - "column": 40 + "line": 1299, + "column": 21 } } }, @@ -222157,22 +226790,22 @@ "updateContext": null }, "value": "=", - "start": 48378, - "end": 48379, + "start": 49084, + "end": 49085, "loc": { "start": { - "line": 1279, - "column": 41 + "line": 1299, + "column": 22 }, "end": { - "line": 1279, - "column": 42 + "line": 1299, + "column": 23 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -222180,27 +226813,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 48380, - "end": 48381, + "value": "cfg", + "start": 49086, + "end": 49089, "loc": { "start": { - "line": 1279, - "column": 43 + "line": 1299, + "column": 24 }, "end": { - "line": 1279, - "column": 44 + "line": 1299, + "column": 27 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -222210,23 +226842,22 @@ "binop": null, "updateContext": null }, - "start": 48381, - "end": 48382, + "start": 49089, + "end": 49090, "loc": { "start": { - "line": 1279, - "column": 44 + "line": 1299, + "column": 27 }, "end": { - "line": 1279, - "column": 45 + "line": 1299, + "column": 28 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -222234,27 +226865,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48392, - "end": 48396, + "value": "selected", + "start": 49090, + "end": 49098, "loc": { "start": { - "line": 1281, - "column": 8 + "line": 1299, + "column": 28 }, "end": { - "line": 1281, - "column": 12 + "line": 1299, + "column": 36 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -222264,22 +226894,23 @@ "binop": null, "updateContext": null }, - "start": 48396, - "end": 48397, + "start": 49098, + "end": 49099, "loc": { "start": { - "line": 1281, - "column": 12 + "line": 1299, + "column": 36 }, "end": { - "line": 1281, - "column": 13 + "line": 1299, + "column": 37 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -222287,53 +226918,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_onTick", - "start": 48397, - "end": 48404, + "value": "this", + "start": 49108, + "end": 49112, "loc": { "start": { - "line": 1281, - "column": 13 + "line": 1300, + "column": 8 }, "end": { - "line": 1281, - "column": 20 + "line": 1300, + "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": 48405, - "end": 48406, + "start": 49112, + "end": 49113, "loc": { "start": { - "line": 1281, - "column": 21 + "line": 1300, + "column": 12 }, "end": { - "line": 1281, - "column": 22 + "line": 1300, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -222341,46 +226971,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48407, - "end": 48411, + "value": "edges", + "start": 49113, + "end": 49118, "loc": { "start": { - "line": 1281, - "column": 23 + "line": 1300, + "column": 13 }, "end": { - "line": 1281, - "column": 27 + "line": 1300, + "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": 48411, - "end": 48412, + "value": "=", + "start": 49119, + "end": 49120, "loc": { "start": { - "line": 1281, - "column": 27 + "line": 1300, + "column": 19 }, "end": { - "line": 1281, - "column": 28 + "line": 1300, + "column": 20 } } }, @@ -222396,17 +227026,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 48412, - "end": 48417, + "value": "cfg", + "start": 49121, + "end": 49124, "loc": { "start": { - "line": 1281, - "column": 28 + "line": 1300, + "column": 21 }, "end": { - "line": 1281, - "column": 33 + "line": 1300, + "column": 24 } } }, @@ -222423,16 +227053,16 @@ "binop": null, "updateContext": null }, - "start": 48417, - "end": 48418, + "start": 49124, + "end": 49125, "loc": { "start": { - "line": 1281, - "column": 33 + "line": 1300, + "column": 24 }, "end": { - "line": 1281, - "column": 34 + "line": 1300, + "column": 25 } } }, @@ -222448,48 +227078,50 @@ "postfix": false, "binop": null }, - "value": "on", - "start": 48418, - "end": 48420, + "value": "edges", + "start": 49125, + "end": 49130, "loc": { "start": { - "line": 1281, - "column": 34 + "line": 1300, + "column": 25 }, "end": { - "line": 1281, - "column": 36 + "line": 1300, + "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": 48420, - "end": 48421, + "start": 49130, + "end": 49131, "loc": { "start": { - "line": 1281, - "column": 36 + "line": 1300, + "column": 30 }, "end": { - "line": 1281, - "column": 37 + "line": 1300, + "column": 31 } } }, { "type": { - "label": "string", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -222500,24 +227132,24 @@ "binop": null, "updateContext": null }, - "value": "tick", - "start": 48421, - "end": 48427, + "value": "this", + "start": 49140, + "end": 49144, "loc": { "start": { - "line": 1281, - "column": 37 + "line": 1301, + "column": 8 }, "end": { - "line": 1281, - "column": 43 + "line": 1301, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -222527,23 +227159,23 @@ "binop": null, "updateContext": null }, - "start": 48427, - "end": 48428, + "start": 49144, + "end": 49145, "loc": { "start": { - "line": 1281, - "column": 43 + "line": 1301, + "column": 12 }, "end": { - "line": 1281, - "column": 44 + "line": 1301, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -222552,145 +227184,148 @@ "postfix": false, "binop": null }, - "start": 48429, - "end": 48430, + "value": "colorize", + "start": 49145, + "end": 49153, "loc": { "start": { - "line": 1281, - "column": 45 + "line": 1301, + "column": 13 }, "end": { - "line": 1281, - "column": 46 + "line": 1301, + "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 + "binop": null, + "updateContext": null }, - "start": 48430, - "end": 48431, + "value": "=", + "start": 49154, + "end": 49155, "loc": { "start": { - "line": 1281, - "column": 46 + "line": 1301, + "column": 22 }, "end": { - "line": 1281, - "column": 47 + "line": 1301, + "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": 48432, - "end": 48434, + "value": "cfg", + "start": 49156, + "end": 49159, "loc": { "start": { - "line": 1281, - "column": 48 + "line": 1301, + "column": 24 }, "end": { - "line": 1281, - "column": 50 + "line": 1301, + "column": 27 } } }, { "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": 48435, - "end": 48436, + "start": 49159, + "end": 49160, "loc": { "start": { - "line": 1281, - "column": 51 + "line": 1301, + "column": 27 }, "end": { - "line": 1281, - "column": 52 + "line": 1301, + "column": 28 } } }, { "type": { - "label": "while", - "keyword": "while", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "while", - "start": 48449, - "end": 48454, + "value": "colorize", + "start": 49160, + "end": 49168, "loc": { "start": { - "line": 1282, - "column": 12 + "line": 1301, + "column": 28 }, "end": { - "line": 1282, - "column": 17 + "line": 1301, + "column": 36 } } }, { "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": 48455, - "end": 48456, + "start": 49168, + "end": 49169, "loc": { "start": { - "line": 1282, - "column": 18 + "line": 1301, + "column": 36 }, "end": { - "line": 1282, - "column": 19 + "line": 1301, + "column": 37 } } }, @@ -222709,16 +227344,16 @@ "updateContext": null }, "value": "this", - "start": 48456, - "end": 48460, + "start": 49178, + "end": 49182, "loc": { "start": { - "line": 1282, - "column": 19 + "line": 1302, + "column": 8 }, "end": { - "line": 1282, - "column": 23 + "line": 1302, + "column": 12 } } }, @@ -222735,16 +227370,16 @@ "binop": null, "updateContext": null }, - "start": 48460, - "end": 48461, + "start": 49182, + "end": 49183, "loc": { "start": { - "line": 1282, - "column": 23 + "line": 1302, + "column": 12 }, "end": { - "line": 1282, - "column": 24 + "line": 1302, + "column": 13 } } }, @@ -222760,50 +227395,50 @@ "postfix": false, "binop": null }, - "value": "_numMeshesWithDirtyMatrices", - "start": 48461, - "end": 48488, + "value": "opacity", + "start": 49183, + "end": 49190, "loc": { "start": { - "line": 1282, - "column": 24 + "line": 1302, + "column": 13 }, "end": { - "line": 1282, - "column": 51 + "line": 1302, + "column": 20 } } }, { "type": { - "label": "", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": ">", - "start": 48489, - "end": 48490, + "value": "=", + "start": 49191, + "end": 49192, "loc": { "start": { - "line": 1282, - "column": 52 + "line": 1302, + "column": 21 }, "end": { - "line": 1282, - "column": 53 + "line": 1302, + "column": 22 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -222811,28 +227446,53 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 49193, + "end": 49196, + "loc": { + "start": { + "line": 1302, + "column": 23 + }, + "end": { + "line": 1302, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": 0, - "start": 48491, - "end": 48492, + "start": 49196, + "end": 49197, "loc": { "start": { - "line": 1282, - "column": 54 + "line": 1302, + "column": 26 }, "end": { - "line": 1282, - "column": 55 + "line": 1302, + "column": 27 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -222840,41 +227500,43 @@ "postfix": false, "binop": null }, - "start": 48492, - "end": 48493, + "value": "opacity", + "start": 49197, + "end": 49204, "loc": { "start": { - "line": 1282, - "column": 55 + "line": 1302, + "column": 27 }, "end": { - "line": 1282, - "column": 56 + "line": 1302, + "column": 34 } } }, { "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": 48494, - "end": 48495, + "start": 49204, + "end": 49205, "loc": { "start": { - "line": 1282, - "column": 57 + "line": 1302, + "column": 34 }, "end": { - "line": 1282, - "column": 58 + "line": 1302, + "column": 35 } } }, @@ -222893,16 +227555,16 @@ "updateContext": null }, "value": "this", - "start": 48512, - "end": 48516, + "start": 49214, + "end": 49218, "loc": { "start": { - "line": 1283, - "column": 16 + "line": 1303, + "column": 8 }, "end": { - "line": 1283, - "column": 20 + "line": 1303, + "column": 12 } } }, @@ -222919,16 +227581,16 @@ "binop": null, "updateContext": null }, - "start": 48516, - "end": 48517, + "start": 49218, + "end": 49219, "loc": { "start": { - "line": 1283, - "column": 20 + "line": 1303, + "column": 12 }, "end": { - "line": 1283, - "column": 21 + "line": 1303, + "column": 13 } } }, @@ -222944,78 +227606,78 @@ "postfix": false, "binop": null }, - "value": "_meshesWithDirtyMatrices", - "start": 48517, - "end": 48541, + "value": "backfaces", + "start": 49219, + "end": 49228, "loc": { "start": { - "line": 1283, - "column": 21 + "line": 1303, + "column": 13 }, "end": { - "line": 1283, - "column": 45 + "line": 1303, + "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, "updateContext": null }, - "start": 48541, - "end": 48542, + "value": "=", + "start": 49229, + "end": 49230, "loc": { "start": { - "line": 1283, - "column": 45 + "line": 1303, + "column": 23 }, "end": { - "line": 1283, - "column": 46 + "line": 1303, + "column": 24 } } }, { "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": 48542, - "end": 48544, + "value": "cfg", + "start": 49231, + "end": 49234, "loc": { "start": { - "line": 1283, - "column": 46 + "line": 1303, + "column": 25 }, "end": { - "line": 1283, - "column": 48 + "line": 1303, + "column": 28 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -223024,75 +227686,74 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 48544, - "end": 48548, + "start": 49234, + "end": 49235, "loc": { "start": { - "line": 1283, - "column": 48 + "line": 1303, + "column": 28 }, "end": { - "line": 1283, - "column": 52 + "line": 1303, + "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": 48548, - "end": 48549, + "value": "backfaces", + "start": 49235, + "end": 49244, "loc": { "start": { - "line": 1283, - "column": 52 + "line": 1303, + "column": 29 }, "end": { - "line": 1283, - "column": 53 + "line": 1303, + "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": "_numMeshesWithDirtyMatrices", - "start": 48549, - "end": 48576, + "start": 49244, + "end": 49245, "loc": { "start": { - "line": 1283, - "column": 53 + "line": 1303, + "column": 38 }, "end": { - "line": 1283, - "column": 80 + "line": 1303, + "column": 39 } } }, { "type": { - "label": "]", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -223100,52 +227761,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 48576, - "end": 48577, + "start": 49250, + "end": 49251, "loc": { "start": { - "line": 1283, - "column": 80 + "line": 1304, + "column": 4 }, "end": { - "line": 1283, - "column": 81 + "line": 1304, + "column": 5 } } }, { "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": 48577, - "end": 48578, + "value": "_meshMatrixDirty", + "start": 49257, + "end": 49273, "loc": { "start": { - "line": 1283, - "column": 81 + "line": 1306, + "column": 4 }, "end": { - "line": 1283, - "column": 82 + "line": 1306, + "column": 20 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -223154,24 +227814,23 @@ "postfix": false, "binop": null }, - "value": "_updateMatrix", - "start": 48578, - "end": 48591, + "start": 49273, + "end": 49274, "loc": { "start": { - "line": 1283, - "column": 82 + "line": 1306, + "column": 20 }, "end": { - "line": 1283, - "column": 95 + "line": 1306, + "column": 21 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -223180,16 +227839,17 @@ "postfix": false, "binop": null }, - "start": 48591, - "end": 48592, + "value": "mesh", + "start": 49274, + "end": 49278, "loc": { "start": { - "line": 1283, - "column": 95 + "line": 1306, + "column": 21 }, "end": { - "line": 1283, - "column": 96 + "line": 1306, + "column": 25 } } }, @@ -223205,73 +227865,75 @@ "postfix": false, "binop": null }, - "start": 48592, - "end": 48593, + "start": 49278, + "end": 49279, "loc": { "start": { - "line": 1283, - "column": 96 + "line": 1306, + "column": 25 }, "end": { - "line": 1283, - "column": 97 + "line": 1306, + "column": 26 } } }, { "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": 48593, - "end": 48594, + "start": 49280, + "end": 49281, "loc": { "start": { - "line": 1283, - "column": 97 + "line": 1306, + "column": 27 }, "end": { - "line": 1283, - "column": 98 + "line": 1306, + "column": 28 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 48607, - "end": 48608, + "value": "this", + "start": 49290, + "end": 49294, "loc": { "start": { - "line": 1284, - "column": 12 + "line": 1307, + "column": 8 }, "end": { - "line": 1284, - "column": 13 + "line": 1307, + "column": 12 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -223279,26 +227941,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 48617, - "end": 48618, + "start": 49294, + "end": 49295, "loc": { "start": { - "line": 1285, - "column": 8 + "line": 1307, + "column": 12 }, "end": { - "line": 1285, - "column": 9 + "line": 1307, + "column": 13 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -223306,24 +227969,25 @@ "postfix": false, "binop": null }, - "start": 48618, - "end": 48619, + "value": "_meshesWithDirtyMatrices", + "start": 49295, + "end": 49319, "loc": { "start": { - "line": 1285, - "column": 9 + "line": 1307, + "column": 13 }, "end": { - "line": 1285, - "column": 10 + "line": 1307, + "column": 37 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -223332,16 +227996,16 @@ "binop": null, "updateContext": null }, - "start": 48619, - "end": 48620, + "start": 49319, + "end": 49320, "loc": { "start": { - "line": 1285, - "column": 10 + "line": 1307, + "column": 37 }, "end": { - "line": 1285, - "column": 11 + "line": 1307, + "column": 38 } } }, @@ -223360,16 +228024,16 @@ "updateContext": null }, "value": "this", - "start": 48630, - "end": 48634, + "start": 49320, + "end": 49324, "loc": { "start": { - "line": 1287, - "column": 8 + "line": 1307, + "column": 38 }, "end": { - "line": 1287, - "column": 12 + "line": 1307, + "column": 42 } } }, @@ -223386,16 +228050,16 @@ "binop": null, "updateContext": null }, - "start": 48634, - "end": 48635, + "start": 49324, + "end": 49325, "loc": { "start": { - "line": 1287, - "column": 12 + "line": 1307, + "column": 42 }, "end": { - "line": 1287, - "column": 13 + "line": 1307, + "column": 43 } } }, @@ -223411,48 +228075,49 @@ "postfix": false, "binop": null }, - "value": "_createDefaultTextureSet", - "start": 48635, - "end": 48659, + "value": "_numMeshesWithDirtyMatrices", + "start": 49325, + "end": 49352, "loc": { "start": { - "line": 1287, - "column": 13 + "line": 1307, + "column": 43 }, "end": { - "line": 1287, - "column": 37 + "line": 1307, + "column": 70 } } }, { "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": 48659, - "end": 48660, + "value": "++", + "start": 49352, + "end": 49354, "loc": { "start": { - "line": 1287, - "column": 37 + "line": 1307, + "column": 70 }, "end": { - "line": 1287, - "column": 38 + "line": 1307, + "column": 72 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -223460,51 +228125,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 48660, - "end": 48661, + "start": 49354, + "end": 49355, "loc": { "start": { - "line": 1287, - "column": 38 + "line": 1307, + "column": 72 }, "end": { - "line": 1287, - "column": 39 + "line": 1307, + "column": 73 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 48661, - "end": 48662, + "value": "=", + "start": 49356, + "end": 49357, "loc": { "start": { - "line": 1287, - "column": 39 + "line": 1307, + "column": 74 }, "end": { - "line": 1287, - "column": 40 + "line": 1307, + "column": 75 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -223512,26 +228178,51 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "mesh", + "start": 49358, + "end": 49362, + "loc": { + "start": { + "line": 1307, + "column": 76 + }, + "end": { + "line": 1307, + "column": 80 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": "this", - "start": 48672, - "end": 48676, + "start": 49362, + "end": 49363, "loc": { "start": { - "line": 1289, - "column": 8 + "line": 1307, + "column": 80 }, "end": { - "line": 1289, - "column": 12 + "line": 1307, + "column": 81 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -223539,19 +228230,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 48676, - "end": 48677, + "start": 49368, + "end": 49369, "loc": { "start": { - "line": 1289, - "column": 12 + "line": 1308, + "column": 4 }, "end": { - "line": 1289, - "column": 13 + "line": 1308, + "column": 5 } } }, @@ -223567,51 +228257,74 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 48677, - "end": 48684, + "value": "_createDefaultTextureSet", + "start": 49375, + "end": 49399, "loc": { "start": { - "line": 1289, - "column": 13 + "line": 1310, + "column": 4 }, "end": { - "line": 1289, - "column": 20 + "line": 1310, + "column": 28 } } }, { "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": 48685, - "end": 48686, + "start": 49399, + "end": 49400, "loc": { "start": { - "line": 1289, - "column": 21 + "line": 1310, + "column": 28 }, "end": { - "line": 1289, - "column": 22 + "line": 1310, + "column": 29 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 49400, + "end": 49401, + "loc": { + "start": { + "line": 1310, + "column": 29 + }, + "end": { + "line": 1310, + "column": 30 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -223620,23 +228333,55 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 48687, - "end": 48690, + "start": 49402, + "end": 49403, "loc": { "start": { - "line": 1289, - "column": 23 + "line": 1310, + "column": 31 }, "end": { - "line": 1289, - "column": 26 + "line": 1310, + "column": 32 + } + } + }, + { + "type": "CommentLine", + "value": " Every SceneModelMesh gets at least the default TextureSet,", + "start": 49412, + "end": 49473, + "loc": { + "start": { + "line": 1311, + "column": 8 + }, + "end": { + "line": 1311, + "column": 69 + } + } + }, + { + "type": "CommentLine", + "value": " which contains empty default textures filled with color", + "start": 49482, + "end": 49540, + "loc": { + "start": { + "line": 1312, + "column": 8 + }, + "end": { + "line": 1312, + "column": 66 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -223647,16 +228392,17 @@ "binop": null, "updateContext": null }, - "start": 48690, - "end": 48691, + "value": "const", + "start": 49549, + "end": 49554, "loc": { "start": { - "line": 1289, - "column": 26 + "line": 1313, + "column": 8 }, "end": { - "line": 1289, - "column": 27 + "line": 1313, + "column": 13 } } }, @@ -223672,51 +228418,52 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 48691, - "end": 48698, + "value": "defaultColorTexture", + "start": 49555, + "end": 49574, "loc": { "start": { - "line": 1289, - "column": 27 + "line": 1313, + "column": 14 }, "end": { - "line": 1289, - "column": 34 + "line": 1313, + "column": 33 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 48698, - "end": 48699, + "value": "=", + "start": 49575, + "end": 49576, "loc": { "start": { - "line": 1289, + "line": 1313, "column": 34 }, "end": { - "line": 1289, + "line": 1313, "column": 35 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "new", + "keyword": "new", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -223726,50 +228473,50 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 48708, - "end": 48712, + "value": "new", + "start": 49577, + "end": 49580, "loc": { "start": { - "line": 1290, - "column": 8 + "line": 1313, + "column": 36 }, "end": { - "line": 1290, - "column": 12 + "line": 1313, + "column": 39 } } }, { "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": 48712, - "end": 48713, + "value": "SceneModelTexture", + "start": 49581, + "end": 49598, "loc": { "start": { - "line": 1290, - "column": 12 + "line": 1313, + "column": 40 }, "end": { - "line": 1290, - "column": 13 + "line": 1313, + "column": 57 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -223778,44 +228525,41 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 48713, - "end": 48719, + "start": 49598, + "end": 49599, "loc": { "start": { - "line": 1290, - "column": 13 + "line": 1313, + "column": 57 }, "end": { - "line": 1290, - "column": 19 + "line": 1313, + "column": 58 } } }, { "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": 48720, - "end": 48721, + "start": 49599, + "end": 49600, "loc": { "start": { - "line": 1290, - "column": 20 + "line": 1313, + "column": 58 }, "end": { - "line": 1290, - "column": 21 + "line": 1313, + "column": 59 } } }, @@ -223831,24 +228575,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 48722, - "end": 48725, + "value": "id", + "start": 49613, + "end": 49615, "loc": { "start": { - "line": 1290, - "column": 22 + "line": 1314, + "column": 12 }, "end": { - "line": 1290, - "column": 25 + "line": 1314, + "column": 14 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -223858,16 +228602,16 @@ "binop": null, "updateContext": null }, - "start": 48725, - "end": 48726, + "start": 49615, + "end": 49616, "loc": { "start": { - "line": 1290, - "column": 25 + "line": 1314, + "column": 14 }, "end": { - "line": 1290, - "column": 26 + "line": 1314, + "column": 15 } } }, @@ -223883,23 +228627,23 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 48726, - "end": 48732, + "value": "DEFAULT_COLOR_TEXTURE_ID", + "start": 49617, + "end": 49641, "loc": { "start": { - "line": 1290, - "column": 26 + "line": 1314, + "column": 16 }, "end": { - "line": 1290, - "column": 32 + "line": 1314, + "column": 40 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -223910,23 +228654,22 @@ "binop": null, "updateContext": null }, - "start": 48732, - "end": 48733, + "start": 49641, + "end": 49642, "loc": { "start": { - "line": 1290, - "column": 32 + "line": 1314, + "column": 40 }, "end": { - "line": 1290, - "column": 33 + "line": 1314, + "column": 41 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -223934,27 +228677,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48742, - "end": 48746, + "value": "texture", + "start": 49655, + "end": 49662, "loc": { "start": { - "line": 1291, - "column": 8 + "line": 1315, + "column": 12 }, "end": { - "line": 1291, - "column": 12 + "line": 1315, + "column": 19 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -223964,76 +228706,77 @@ "binop": null, "updateContext": null }, - "start": 48746, - "end": 48747, + "start": 49662, + "end": 49663, "loc": { "start": { - "line": 1291, - "column": 12 + "line": 1315, + "column": 19 }, "end": { - "line": 1291, - "column": 13 + "line": 1315, + "column": 20 } } }, { "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": "pickable", - "start": 48747, - "end": 48755, + "value": "new", + "start": 49664, + "end": 49667, "loc": { "start": { - "line": 1291, - "column": 13 + "line": 1315, + "column": 21 }, "end": { - "line": 1291, - "column": 21 + "line": 1315, + "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": 48756, - "end": 48757, + "value": "Texture2D", + "start": 49668, + "end": 49677, "loc": { "start": { - "line": 1291, - "column": 22 + "line": 1315, + "column": 25 }, "end": { - "line": 1291, - "column": 23 + "line": 1315, + "column": 34 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -224042,43 +228785,41 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 48758, - "end": 48761, + "start": 49677, + "end": 49678, "loc": { "start": { - "line": 1291, - "column": 24 + "line": 1315, + "column": 34 }, "end": { - "line": 1291, - "column": 27 + "line": 1315, + "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": 48761, - "end": 48762, + "start": 49678, + "end": 49679, "loc": { "start": { - "line": 1291, - "column": 27 + "line": 1315, + "column": 35 }, "end": { - "line": 1291, - "column": 28 + "line": 1315, + "column": 36 } } }, @@ -224094,23 +228835,23 @@ "postfix": false, "binop": null }, - "value": "pickable", - "start": 48762, - "end": 48770, + "value": "gl", + "start": 49696, + "end": 49698, "loc": { "start": { - "line": 1291, - "column": 28 + "line": 1316, + "column": 16 }, "end": { - "line": 1291, - "column": 36 + "line": 1316, + "column": 18 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -224121,16 +228862,16 @@ "binop": null, "updateContext": null }, - "start": 48770, - "end": 48771, + "start": 49698, + "end": 49699, "loc": { "start": { - "line": 1291, - "column": 36 + "line": 1316, + "column": 18 }, "end": { - "line": 1291, - "column": 37 + "line": 1316, + "column": 19 } } }, @@ -224149,16 +228890,16 @@ "updateContext": null }, "value": "this", - "start": 48780, - "end": 48784, + "start": 49700, + "end": 49704, "loc": { "start": { - "line": 1292, - "column": 8 + "line": 1316, + "column": 20 }, "end": { - "line": 1292, - "column": 12 + "line": 1316, + "column": 24 } } }, @@ -224175,16 +228916,16 @@ "binop": null, "updateContext": null }, - "start": 48784, - "end": 48785, + "start": 49704, + "end": 49705, "loc": { "start": { - "line": 1292, - "column": 12 + "line": 1316, + "column": 24 }, "end": { - "line": 1292, - "column": 13 + "line": 1316, + "column": 25 } } }, @@ -224200,44 +228941,43 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 48785, - "end": 48794, + "value": "scene", + "start": 49705, + "end": 49710, "loc": { "start": { - "line": 1292, - "column": 13 + "line": 1316, + "column": 25 }, "end": { - "line": 1292, - "column": 22 + "line": 1316, + "column": 30 } } }, { "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": 48795, - "end": 48796, + "start": 49710, + "end": 49711, "loc": { "start": { - "line": 1292, - "column": 23 + "line": 1316, + "column": 30 }, "end": { - "line": 1292, - "column": 24 + "line": 1316, + "column": 31 } } }, @@ -224253,17 +228993,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 48797, - "end": 48800, + "value": "canvas", + "start": 49711, + "end": 49717, "loc": { "start": { - "line": 1292, - "column": 25 + "line": 1316, + "column": 31 }, "end": { - "line": 1292, - "column": 28 + "line": 1316, + "column": 37 } } }, @@ -224280,16 +229020,16 @@ "binop": null, "updateContext": null }, - "start": 48800, - "end": 48801, + "start": 49717, + "end": 49718, "loc": { "start": { - "line": 1292, - "column": 28 + "line": 1316, + "column": 37 }, "end": { - "line": 1292, - "column": 29 + "line": 1316, + "column": 38 } } }, @@ -224305,23 +229045,23 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 48801, - "end": 48810, + "value": "gl", + "start": 49718, + "end": 49720, "loc": { "start": { - "line": 1292, - "column": 29 + "line": 1316, + "column": 38 }, "end": { - "line": 1292, - "column": 38 + "line": 1316, + "column": 40 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -224332,23 +229072,22 @@ "binop": null, "updateContext": null }, - "start": 48810, - "end": 48811, + "start": 49720, + "end": 49721, "loc": { "start": { - "line": 1292, - "column": 38 + "line": 1316, + "column": 40 }, "end": { - "line": 1292, - "column": 39 + "line": 1316, + "column": 41 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -224356,28 +229095,53 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "preloadColor", + "start": 49738, + "end": 49750, + "loc": { + "start": { + "line": 1317, + "column": 16 + }, + "end": { + "line": 1317, + "column": 28 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": "this", - "start": 48820, - "end": 48824, + "start": 49750, + "end": 49751, "loc": { "start": { - "line": 1293, - "column": 8 + "line": 1317, + "column": 28 }, "end": { - "line": 1293, - "column": 12 + "line": 1317, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -224386,22 +229150,22 @@ "binop": null, "updateContext": null }, - "start": 48824, - "end": 48825, + "start": 49752, + "end": 49753, "loc": { "start": { - "line": 1293, - "column": 12 + "line": 1317, + "column": 30 }, "end": { - "line": 1293, - "column": 13 + "line": 1317, + "column": 31 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -224409,52 +229173,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "collidable", - "start": 48825, - "end": 48835, + "value": 1, + "start": 49753, + "end": 49754, "loc": { "start": { - "line": 1293, - "column": 13 + "line": 1317, + "column": 31 }, "end": { - "line": 1293, - "column": 23 + "line": 1317, + "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": 48836, - "end": 48837, + "start": 49754, + "end": 49755, "loc": { "start": { - "line": 1293, - "column": 24 + "line": 1317, + "column": 32 }, "end": { - "line": 1293, - "column": 25 + "line": 1317, + "column": 33 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -224462,26 +229226,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 48838, - "end": 48841, + "value": 1, + "start": 49756, + "end": 49757, "loc": { "start": { - "line": 1293, - "column": 26 + "line": 1317, + "column": 34 }, "end": { - "line": 1293, - "column": 29 + "line": 1317, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -224491,22 +229256,22 @@ "binop": null, "updateContext": null }, - "start": 48841, - "end": 48842, + "start": 49757, + "end": 49758, "loc": { "start": { - "line": 1293, - "column": 29 + "line": 1317, + "column": 35 }, "end": { - "line": 1293, - "column": 30 + "line": 1317, + "column": 36 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -224514,25 +229279,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "collidable", - "start": 48842, - "end": 48852, + "value": 1, + "start": 49759, + "end": 49760, "loc": { "start": { - "line": 1293, - "column": 30 + "line": 1317, + "column": 37 }, "end": { - "line": 1293, - "column": 40 + "line": 1317, + "column": 38 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -224543,23 +229309,22 @@ "binop": null, "updateContext": null }, - "start": 48852, - "end": 48853, + "start": 49760, + "end": 49761, "loc": { "start": { - "line": 1293, - "column": 40 + "line": 1317, + "column": 38 }, "end": { - "line": 1293, - "column": 41 + "line": 1317, + "column": 39 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -224570,23 +229335,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 48862, - "end": 48866, + "value": 1, + "start": 49762, + "end": 49763, "loc": { "start": { - "line": 1294, - "column": 8 + "line": 1317, + "column": 40 }, "end": { - "line": 1294, - "column": 12 + "line": 1317, + "column": 41 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -224597,24 +229362,40 @@ "binop": null, "updateContext": null }, - "start": 48866, - "end": 48867, + "start": 49763, + "end": 49764, "loc": { "start": { - "line": 1294, - "column": 12 + "line": 1317, + "column": 41 }, "end": { - "line": 1294, - "column": 13 + "line": 1317, + "column": 42 + } + } + }, + { + "type": "CommentLine", + "value": " [r, g, b, a]})", + "start": 49765, + "end": 49782, + "loc": { + "start": { + "line": 1317, + "column": 43 + }, + "end": { + "line": 1317, + "column": 60 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -224622,52 +229403,49 @@ "postfix": false, "binop": null }, - "value": "castsShadow", - "start": 48867, - "end": 48878, + "start": 49795, + "end": 49796, "loc": { "start": { - "line": 1294, - "column": 13 + "line": 1318, + "column": 12 }, "end": { - "line": 1294, - "column": 24 + "line": 1318, + "column": 13 } } }, { "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": 48879, - "end": 48880, + "start": 49796, + "end": 49797, "loc": { "start": { - "line": 1294, - "column": 25 + "line": 1318, + "column": 13 }, "end": { - "line": 1294, - "column": 26 + "line": 1318, + "column": 14 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -224675,23 +229453,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 48881, - "end": 48884, + "start": 49806, + "end": 49807, "loc": { "start": { - "line": 1294, - "column": 27 + "line": 1319, + "column": 8 }, "end": { - "line": 1294, - "column": 30 + "line": 1319, + "column": 9 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -224699,52 +229476,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 48884, - "end": 48885, + "start": 49807, + "end": 49808, "loc": { "start": { - "line": 1294, - "column": 30 + "line": 1319, + "column": 9 }, "end": { - "line": 1294, - "column": 31 + "line": 1319, + "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": "castsShadow", - "start": 48885, - "end": 48896, + "start": 49808, + "end": 49809, "loc": { "start": { - "line": 1294, - "column": 31 + "line": 1319, + "column": 10 }, "end": { - "line": 1294, - "column": 42 + "line": 1319, + "column": 11 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -224754,23 +229531,23 @@ "binop": null, "updateContext": null }, - "start": 48896, - "end": 48897, + "value": "const", + "start": 49818, + "end": 49823, "loc": { "start": { - "line": 1294, - "column": 42 + "line": 1320, + "column": 8 }, "end": { - "line": 1294, - "column": 43 + "line": 1320, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -224778,106 +229555,107 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48906, - "end": 48910, + "value": "defaultMetalRoughTexture", + "start": 49824, + "end": 49848, "loc": { "start": { - "line": 1295, - "column": 8 + "line": 1320, + "column": 14 }, "end": { - "line": 1295, - "column": 12 + "line": 1320, + "column": 38 } } }, { "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": 48910, - "end": 48911, + "value": "=", + "start": 49849, + "end": 49850, "loc": { "start": { - "line": 1295, - "column": 12 + "line": 1320, + "column": 39 }, "end": { - "line": 1295, - "column": 13 + "line": 1320, + "column": 40 } } }, { "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": "receivesShadow", - "start": 48911, - "end": 48925, + "value": "new", + "start": 49851, + "end": 49854, "loc": { "start": { - "line": 1295, - "column": 13 + "line": 1320, + "column": 41 }, "end": { - "line": 1295, - "column": 27 + "line": 1320, + "column": 44 } } }, { "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": 48926, - "end": 48927, + "value": "SceneModelTexture", + "start": 49855, + "end": 49872, "loc": { "start": { - "line": 1295, - "column": 28 + "line": 1320, + "column": 45 }, "end": { - "line": 1295, - "column": 29 + "line": 1320, + "column": 62 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -224886,43 +229664,41 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 48928, - "end": 48931, + "start": 49872, + "end": 49873, "loc": { "start": { - "line": 1295, - "column": 30 + "line": 1320, + "column": 62 }, "end": { - "line": 1295, - "column": 33 + "line": 1320, + "column": 63 } } }, { "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": 48931, - "end": 48932, + "start": 49873, + "end": 49874, "loc": { "start": { - "line": 1295, - "column": 33 + "line": 1320, + "column": 63 }, "end": { - "line": 1295, - "column": 34 + "line": 1320, + "column": 64 } } }, @@ -224938,23 +229714,23 @@ "postfix": false, "binop": null }, - "value": "receivesShadow", - "start": 48932, - "end": 48946, + "value": "id", + "start": 49887, + "end": 49889, "loc": { "start": { - "line": 1295, - "column": 34 + "line": 1321, + "column": 12 }, "end": { - "line": 1295, - "column": 48 + "line": 1321, + "column": 14 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -224965,23 +229741,22 @@ "binop": null, "updateContext": null }, - "start": 48946, - "end": 48947, + "start": 49889, + "end": 49890, "loc": { "start": { - "line": 1295, - "column": 48 + "line": 1321, + "column": 14 }, "end": { - "line": 1295, - "column": 49 + "line": 1321, + "column": 15 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -224989,27 +229764,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48956, - "end": 48960, + "value": "DEFAULT_METAL_ROUGH_TEXTURE_ID", + "start": 49891, + "end": 49921, "loc": { "start": { - "line": 1296, - "column": 8 + "line": 1321, + "column": 16 }, "end": { - "line": 1296, - "column": 12 + "line": 1321, + "column": 46 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -225019,16 +229793,16 @@ "binop": null, "updateContext": null }, - "start": 48960, - "end": 48961, + "start": 49921, + "end": 49922, "loc": { "start": { - "line": 1296, - "column": 12 + "line": 1321, + "column": 46 }, "end": { - "line": 1296, - "column": 13 + "line": 1321, + "column": 47 } } }, @@ -225044,103 +229818,104 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 48961, - "end": 48967, + "value": "texture", + "start": 49935, + "end": 49942, "loc": { "start": { - "line": 1296, - "column": 13 + "line": 1322, + "column": 12 }, "end": { - "line": 1296, + "line": 1322, "column": 19 } } }, { "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": 48968, - "end": 48969, + "start": 49942, + "end": 49943, "loc": { "start": { - "line": 1296, - "column": 20 + "line": 1322, + "column": 19 }, "end": { - "line": 1296, - "column": 21 + "line": 1322, + "column": 20 } } }, { "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": "cfg", - "start": 48970, - "end": 48973, + "value": "new", + "start": 49944, + "end": 49947, "loc": { "start": { - "line": 1296, - "column": 22 + "line": 1322, + "column": 21 }, "end": { - "line": 1296, - "column": 25 + "line": 1322, + "column": 24 } } }, { "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": 48973, - "end": 48974, + "value": "Texture2D", + "start": 49948, + "end": 49957, "loc": { "start": { - "line": 1296, + "line": 1322, "column": 25 }, "end": { - "line": 1296, - "column": 26 + "line": 1322, + "column": 34 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -225149,50 +229924,47 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 48974, - "end": 48980, + "start": 49957, + "end": 49958, "loc": { "start": { - "line": 1296, - "column": 26 + "line": 1322, + "column": 34 }, "end": { - "line": 1296, - "column": 32 + "line": 1322, + "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": 48980, - "end": 48981, + "start": 49958, + "end": 49959, "loc": { "start": { - "line": 1296, - "column": 32 + "line": 1322, + "column": 35 }, "end": { - "line": 1296, - "column": 33 + "line": 1322, + "column": 36 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -225200,27 +229972,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 48990, - "end": 48994, + "value": "gl", + "start": 49976, + "end": 49978, "loc": { "start": { - "line": 1297, - "column": 8 + "line": 1323, + "column": 16 }, "end": { - "line": 1297, - "column": 12 + "line": 1323, + "column": 18 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -225230,22 +230001,23 @@ "binop": null, "updateContext": null }, - "start": 48994, - "end": 48995, + "start": 49978, + "end": 49979, "loc": { "start": { - "line": 1297, - "column": 12 + "line": 1323, + "column": 18 }, "end": { - "line": 1297, - "column": 13 + "line": 1323, + "column": 19 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -225253,46 +230025,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "highlighted", - "start": 48995, - "end": 49006, + "value": "this", + "start": 49980, + "end": 49984, "loc": { "start": { - "line": 1297, - "column": 13 + "line": 1323, + "column": 20 }, "end": { - "line": 1297, + "line": 1323, "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": 49007, - "end": 49008, + "start": 49984, + "end": 49985, "loc": { "start": { - "line": 1297, - "column": 25 + "line": 1323, + "column": 24 }, "end": { - "line": 1297, - "column": 26 + "line": 1323, + "column": 25 } } }, @@ -225308,16 +230080,16 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 49009, - "end": 49012, + "value": "scene", + "start": 49985, + "end": 49990, "loc": { "start": { - "line": 1297, - "column": 27 + "line": 1323, + "column": 25 }, "end": { - "line": 1297, + "line": 1323, "column": 30 } } @@ -225335,15 +230107,15 @@ "binop": null, "updateContext": null }, - "start": 49012, - "end": 49013, + "start": 49990, + "end": 49991, "loc": { "start": { - "line": 1297, + "line": 1323, "column": 30 }, "end": { - "line": 1297, + "line": 1323, "column": 31 } } @@ -225360,24 +230132,24 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 49013, - "end": 49024, + "value": "canvas", + "start": 49991, + "end": 49997, "loc": { "start": { - "line": 1297, + "line": 1323, "column": 31 }, "end": { - "line": 1297, - "column": 42 + "line": 1323, + "column": 37 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -225387,23 +230159,22 @@ "binop": null, "updateContext": null }, - "start": 49024, - "end": 49025, + "start": 49997, + "end": 49998, "loc": { "start": { - "line": 1297, - "column": 42 + "line": 1323, + "column": 37 }, "end": { - "line": 1297, - "column": 43 + "line": 1323, + "column": 38 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -225411,27 +230182,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 49034, - "end": 49038, + "value": "gl", + "start": 49998, + "end": 50000, "loc": { "start": { - "line": 1298, - "column": 8 + "line": 1323, + "column": 38 }, "end": { - "line": 1298, - "column": 12 + "line": 1323, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -225441,16 +230211,16 @@ "binop": null, "updateContext": null }, - "start": 49038, - "end": 49039, + "start": 50000, + "end": 50001, "loc": { "start": { - "line": 1298, - "column": 12 + "line": 1323, + "column": 40 }, "end": { - "line": 1298, - "column": 13 + "line": 1323, + "column": 41 } } }, @@ -225466,50 +230236,75 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 49039, - "end": 49047, + "value": "preloadColor", + "start": 50018, + "end": 50030, "loc": { "start": { - "line": 1298, - "column": 13 + "line": 1324, + "column": 16 }, "end": { - "line": 1298, - "column": 21 + "line": 1324, + "column": 28 } } }, { "type": { - "label": "=", + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 50030, + "end": 50031, + "loc": { + "start": { + "line": 1324, + "column": 28 + }, + "end": { + "line": 1324, + "column": 29 + } + } + }, + { + "type": { + "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": 49048, - "end": 49049, + "start": 50032, + "end": 50033, "loc": { "start": { - "line": 1298, - "column": 22 + "line": 1324, + "column": 30 }, "end": { - "line": 1298, - "column": 23 + "line": 1324, + "column": 31 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -225517,26 +230312,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 49050, - "end": 49053, + "value": 0, + "start": 50033, + "end": 50034, "loc": { "start": { - "line": 1298, - "column": 24 + "line": 1324, + "column": 31 }, "end": { - "line": 1298, - "column": 27 + "line": 1324, + "column": 32 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -225546,22 +230342,22 @@ "binop": null, "updateContext": null }, - "start": 49053, - "end": 49054, + "start": 50034, + "end": 50035, "loc": { "start": { - "line": 1298, - "column": 27 + "line": 1324, + "column": 32 }, "end": { - "line": 1298, - "column": 28 + "line": 1324, + "column": 33 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -225569,25 +230365,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "selected", - "start": 49054, - "end": 49062, + "value": 1, + "start": 50036, + "end": 50037, "loc": { "start": { - "line": 1298, - "column": 28 + "line": 1324, + "column": 34 }, "end": { - "line": 1298, - "column": 36 + "line": 1324, + "column": 35 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -225598,23 +230395,22 @@ "binop": null, "updateContext": null }, - "start": 49062, - "end": 49063, + "start": 50037, + "end": 50038, "loc": { "start": { - "line": 1298, - "column": 36 + "line": 1324, + "column": 35 }, "end": { - "line": 1298, - "column": 37 + "line": 1324, + "column": 36 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -225625,24 +230421,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 49072, - "end": 49076, + "value": 1, + "start": 50039, + "end": 50040, "loc": { "start": { - "line": 1299, - "column": 8 + "line": 1324, + "column": 37 }, "end": { - "line": 1299, - "column": 12 + "line": 1324, + "column": 38 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -225652,22 +230448,22 @@ "binop": null, "updateContext": null }, - "start": 49076, - "end": 49077, + "start": 50040, + "end": 50041, "loc": { "start": { - "line": 1299, - "column": 12 + "line": 1324, + "column": 38 }, "end": { - "line": 1299, - "column": 13 + "line": 1324, + "column": 39 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -225675,54 +230471,70 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "edges", - "start": 49077, - "end": 49082, + "value": 1, + "start": 50042, + "end": 50043, "loc": { "start": { - "line": 1299, - "column": 13 + "line": 1324, + "column": 40 }, "end": { - "line": 1299, - "column": 18 + "line": 1324, + "column": 41 } } }, { "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": 49083, - "end": 49084, + "start": 50043, + "end": 50044, "loc": { "start": { - "line": 1299, - "column": 19 + "line": 1324, + "column": 41 }, "end": { - "line": 1299, - "column": 20 + "line": 1324, + "column": 42 + } + } + }, + { + "type": "CommentLine", + "value": " [unused, roughness, metalness, unused]", + "start": 50045, + "end": 50086, + "loc": { + "start": { + "line": 1324, + "column": 43 + }, + "end": { + "line": 1324, + "column": 84 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -225730,23 +230542,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 49085, - "end": 49088, + "start": 50099, + "end": 50100, "loc": { "start": { - "line": 1299, - "column": 21 + "line": 1325, + "column": 12 }, "end": { - "line": 1299, - "column": 24 + "line": 1325, + "column": 13 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -225754,27 +230565,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 49088, - "end": 49089, + "start": 50100, + "end": 50101, "loc": { "start": { - "line": 1299, - "column": 24 + "line": 1325, + "column": 13 }, "end": { - "line": 1299, - "column": 25 + "line": 1325, + "column": 14 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -225782,52 +230592,49 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 49089, - "end": 49094, + "start": 50110, + "end": 50111, "loc": { "start": { - "line": 1299, - "column": 25 + "line": 1326, + "column": 8 }, "end": { - "line": 1299, - "column": 30 + "line": 1326, + "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": 49094, - "end": 49095, + "start": 50111, + "end": 50112, "loc": { "start": { - "line": 1299, - "column": 30 + "line": 1326, + "column": 9 }, "end": { - "line": 1299, - "column": 31 + "line": 1326, + "column": 10 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -225836,23 +230643,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 49104, - "end": 49108, + "start": 50112, + "end": 50113, "loc": { "start": { - "line": 1300, - "column": 8 + "line": 1326, + "column": 10 }, "end": { - "line": 1300, - "column": 12 + "line": 1326, + "column": 11 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -225863,15 +230670,16 @@ "binop": null, "updateContext": null }, - "start": 49108, - "end": 49109, + "value": "const", + "start": 50122, + "end": 50127, "loc": { "start": { - "line": 1300, - "column": 12 + "line": 1327, + "column": 8 }, "end": { - "line": 1300, + "line": 1327, "column": 13 } } @@ -225888,17 +230696,17 @@ "postfix": false, "binop": null }, - "value": "colorize", - "start": 49109, - "end": 49117, + "value": "defaultNormalsTexture", + "start": 50128, + "end": 50149, "loc": { "start": { - "line": 1300, - "column": 13 + "line": 1327, + "column": 14 }, "end": { - "line": 1300, - "column": 21 + "line": 1327, + "column": 35 } } }, @@ -225916,75 +230724,77 @@ "updateContext": null }, "value": "=", - "start": 49118, - "end": 49119, + "start": 50150, + "end": 50151, "loc": { "start": { - "line": 1300, - "column": 22 + "line": 1327, + "column": 36 }, "end": { - "line": 1300, - "column": 23 + "line": 1327, + "column": 37 } } }, { "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": "cfg", - "start": 49120, - "end": 49123, + "value": "new", + "start": 50152, + "end": 50155, "loc": { "start": { - "line": 1300, - "column": 24 + "line": 1327, + "column": 38 }, "end": { - "line": 1300, - "column": 27 + "line": 1327, + "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": 49123, - "end": 49124, + "value": "SceneModelTexture", + "start": 50156, + "end": 50173, "loc": { "start": { - "line": 1300, - "column": 27 + "line": 1327, + "column": 42 }, "end": { - "line": 1300, - "column": 28 + "line": 1327, + "column": 59 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -225993,50 +230803,47 @@ "postfix": false, "binop": null }, - "value": "colorize", - "start": 49124, - "end": 49132, + "start": 50173, + "end": 50174, "loc": { "start": { - "line": 1300, - "column": 28 + "line": 1327, + "column": 59 }, "end": { - "line": 1300, - "column": 36 + "line": 1327, + "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": 49132, - "end": 49133, + "start": 50174, + "end": 50175, "loc": { "start": { - "line": 1300, - "column": 36 + "line": 1327, + "column": 60 }, "end": { - "line": 1300, - "column": 37 + "line": 1327, + "column": 61 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -226044,27 +230851,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 49142, - "end": 49146, + "value": "id", + "start": 50188, + "end": 50190, "loc": { "start": { - "line": 1301, - "column": 8 + "line": 1328, + "column": 12 }, "end": { - "line": 1301, - "column": 12 + "line": 1328, + "column": 14 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -226074,16 +230880,16 @@ "binop": null, "updateContext": null }, - "start": 49146, - "end": 49147, + "start": 50190, + "end": 50191, "loc": { "start": { - "line": 1301, - "column": 12 + "line": 1328, + "column": 14 }, "end": { - "line": 1301, - "column": 13 + "line": 1328, + "column": 15 } } }, @@ -226099,44 +230905,43 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 49147, - "end": 49154, + "value": "DEFAULT_NORMALS_TEXTURE_ID", + "start": 50192, + "end": 50218, "loc": { "start": { - "line": 1301, - "column": 13 + "line": 1328, + "column": 16 }, "end": { - "line": 1301, - "column": 20 + "line": 1328, + "column": 42 } } }, { "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": 49155, - "end": 49156, + "start": 50218, + "end": 50219, "loc": { "start": { - "line": 1301, - "column": 21 + "line": 1328, + "column": 42 }, "end": { - "line": 1301, - "column": 22 + "line": 1328, + "column": 43 } } }, @@ -226152,24 +230957,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 49157, - "end": 49160, + "value": "texture", + "start": 50232, + "end": 50239, "loc": { "start": { - "line": 1301, - "column": 23 + "line": 1329, + "column": 12 }, "end": { - "line": 1301, - "column": 26 + "line": 1329, + "column": 19 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -226179,122 +230984,120 @@ "binop": null, "updateContext": null }, - "start": 49160, - "end": 49161, + "start": 50239, + "end": 50240, "loc": { "start": { - "line": 1301, - "column": 26 + "line": 1329, + "column": 19 }, "end": { - "line": 1301, - "column": 27 + "line": 1329, + "column": 20 } } }, { "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": "opacity", - "start": 49161, - "end": 49168, + "value": "new", + "start": 50241, + "end": 50244, "loc": { "start": { - "line": 1301, - "column": 27 + "line": 1329, + "column": 21 }, "end": { - "line": 1301, - "column": 34 + "line": 1329, + "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": 49168, - "end": 49169, + "value": "Texture2D", + "start": 50245, + "end": 50254, "loc": { "start": { - "line": 1301, - "column": 34 + "line": 1329, + "column": 25 }, "end": { - "line": 1301, - "column": 35 + "line": 1329, + "column": 34 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 49178, - "end": 49182, + "start": 50254, + "end": 50255, "loc": { "start": { - "line": 1302, - "column": 8 + "line": 1329, + "column": 34 }, "end": { - "line": 1302, - "column": 12 + "line": 1329, + "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": 49182, - "end": 49183, + "start": 50255, + "end": 50256, "loc": { "start": { - "line": 1302, - "column": 12 + "line": 1329, + "column": 35 }, "end": { - "line": 1302, - "column": 13 + "line": 1329, + "column": 36 } } }, @@ -226310,50 +231113,50 @@ "postfix": false, "binop": null }, - "value": "backfaces", - "start": 49183, - "end": 49192, + "value": "gl", + "start": 50273, + "end": 50275, "loc": { "start": { - "line": 1302, - "column": 13 + "line": 1330, + "column": 16 }, "end": { - "line": 1302, - "column": 22 + "line": 1330, + "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": 49193, - "end": 49194, + "start": 50275, + "end": 50276, "loc": { "start": { - "line": 1302, - "column": 23 + "line": 1330, + "column": 18 }, "end": { - "line": 1302, - "column": 24 + "line": 1330, + "column": 19 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -226361,19 +231164,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 49195, - "end": 49198, + "value": "this", + "start": 50277, + "end": 50281, "loc": { "start": { - "line": 1302, - "column": 25 + "line": 1330, + "column": 20 }, "end": { - "line": 1302, - "column": 28 + "line": 1330, + "column": 24 } } }, @@ -226390,16 +231194,16 @@ "binop": null, "updateContext": null }, - "start": 49198, - "end": 49199, + "start": 50281, + "end": 50282, "loc": { "start": { - "line": 1302, - "column": 28 + "line": 1330, + "column": 24 }, "end": { - "line": 1302, - "column": 29 + "line": 1330, + "column": 25 } } }, @@ -226415,24 +231219,24 @@ "postfix": false, "binop": null }, - "value": "backfaces", - "start": 49199, - "end": 49208, + "value": "scene", + "start": 50282, + "end": 50287, "loc": { "start": { - "line": 1302, - "column": 29 + "line": 1330, + "column": 25 }, "end": { - "line": 1302, - "column": 38 + "line": 1330, + "column": 30 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -226442,41 +231246,16 @@ "binop": null, "updateContext": null }, - "start": 49208, - "end": 49209, - "loc": { - "start": { - "line": 1302, - "column": 38 - }, - "end": { - "line": 1302, - "column": 39 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 49214, - "end": 49215, + "start": 50287, + "end": 50288, "loc": { "start": { - "line": 1303, - "column": 4 + "line": 1330, + "column": 30 }, "end": { - "line": 1303, - "column": 5 + "line": 1330, + "column": 31 } } }, @@ -226492,42 +231271,43 @@ "postfix": false, "binop": null }, - "value": "_meshMatrixDirty", - "start": 49221, - "end": 49237, + "value": "canvas", + "start": 50288, + "end": 50294, "loc": { "start": { - "line": 1305, - "column": 4 + "line": 1330, + "column": 31 }, "end": { - "line": 1305, - "column": 20 + "line": 1330, + "column": 37 } } }, { "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": 49237, - "end": 49238, + "start": 50294, + "end": 50295, "loc": { "start": { - "line": 1305, - "column": 20 + "line": 1330, + "column": 37 }, "end": { - "line": 1305, - "column": 21 + "line": 1330, + "column": 38 } } }, @@ -226543,49 +231323,50 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 49238, - "end": 49242, + "value": "gl", + "start": 50295, + "end": 50297, "loc": { "start": { - "line": 1305, - "column": 21 + "line": 1330, + "column": 38 }, "end": { - "line": 1305, - "column": 25 + "line": 1330, + "column": 40 } } }, { "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": 49242, - "end": 49243, + "start": 50297, + "end": 50298, "loc": { "start": { - "line": 1305, - "column": 25 + "line": 1330, + "column": 40 }, "end": { - "line": 1305, - "column": 26 + "line": 1330, + "column": 41 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -226594,25 +231375,25 @@ "postfix": false, "binop": null }, - "start": 49244, - "end": 49245, + "value": "preloadColor", + "start": 50315, + "end": 50327, "loc": { "start": { - "line": 1305, - "column": 27 + "line": 1331, + "column": 16 }, "end": { - "line": 1305, + "line": 1331, "column": 28 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ":", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -226621,25 +231402,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 49254, - "end": 49258, + "start": 50327, + "end": 50328, "loc": { "start": { - "line": 1306, - "column": 8 + "line": 1331, + "column": 28 }, "end": { - "line": 1306, - "column": 12 + "line": 1331, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -226648,22 +231428,22 @@ "binop": null, "updateContext": null }, - "start": 49258, - "end": 49259, + "start": 50329, + "end": 50330, "loc": { "start": { - "line": 1306, - "column": 12 + "line": 1331, + "column": 30 }, "end": { - "line": 1306, - "column": 13 + "line": 1331, + "column": 31 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -226671,27 +231451,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_meshesWithDirtyMatrices", - "start": 49259, - "end": 49283, + "value": 0, + "start": 50330, + "end": 50331, "loc": { "start": { - "line": 1306, - "column": 13 + "line": 1331, + "column": 31 }, "end": { - "line": 1306, - "column": 37 + "line": 1331, + "column": 32 } } }, { "type": { - "label": "[", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -226700,23 +231481,22 @@ "binop": null, "updateContext": null }, - "start": 49283, - "end": 49284, + "start": 50331, + "end": 50332, "loc": { "start": { - "line": 1306, - "column": 37 + "line": 1331, + "column": 32 }, "end": { - "line": 1306, - "column": 38 + "line": 1331, + "column": 33 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -226727,24 +231507,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 49284, - "end": 49288, + "value": 0, + "start": 50333, + "end": 50334, "loc": { "start": { - "line": 1306, - "column": 38 + "line": 1331, + "column": 34 }, "end": { - "line": 1306, - "column": 42 + "line": 1331, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -226754,22 +231534,22 @@ "binop": null, "updateContext": null }, - "start": 49288, - "end": 49289, + "start": 50334, + "end": 50335, "loc": { "start": { - "line": 1306, - "column": 42 + "line": 1331, + "column": 35 }, "end": { - "line": 1306, - "column": 43 + "line": 1331, + "column": 36 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -226777,52 +231557,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "_numMeshesWithDirtyMatrices", - "start": 49289, - "end": 49316, - "loc": { - "start": { - "line": 1306, - "column": 43 - }, - "end": { - "line": 1306, - "column": 70 - } - } - }, - { - "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null + "binop": null, + "updateContext": null }, - "value": "++", - "start": 49316, - "end": 49318, + "value": 0, + "start": 50336, + "end": 50337, "loc": { "start": { - "line": 1306, - "column": 70 + "line": 1331, + "column": 37 }, "end": { - "line": 1306, - "column": 72 + "line": 1331, + "column": 38 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -226832,95 +231587,85 @@ "binop": null, "updateContext": null }, - "start": 49318, - "end": 49319, + "start": 50337, + "end": 50338, "loc": { "start": { - "line": 1306, - "column": 72 + "line": 1331, + "column": 38 }, "end": { - "line": 1306, - "column": 73 + "line": 1331, + "column": 39 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 49320, - "end": 49321, + "value": 0, + "start": 50339, + "end": 50340, "loc": { "start": { - "line": 1306, - "column": 74 + "line": 1331, + "column": 40 }, "end": { - "line": 1306, - "column": 75 + "line": 1331, + "column": 41 } } }, { "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": "mesh", - "start": 49322, - "end": 49326, + "start": 50340, + "end": 50341, "loc": { "start": { - "line": 1306, - "column": 76 + "line": 1331, + "column": 41 }, "end": { - "line": 1306, - "column": 80 + "line": 1331, + "column": 42 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 49326, - "end": 49327, + "type": "CommentLine", + "value": " [x, y, z, unused] - these must be zeros", + "start": 50342, + "end": 50384, "loc": { "start": { - "line": 1306, - "column": 80 + "line": 1331, + "column": 43 }, "end": { - "line": 1306, - "column": 81 + "line": 1331, + "column": 85 } } }, @@ -226936,24 +231681,24 @@ "postfix": false, "binop": null }, - "start": 49332, - "end": 49333, + "start": 50397, + "end": 50398, "loc": { "start": { - "line": 1307, - "column": 4 + "line": 1332, + "column": 12 }, "end": { - "line": 1307, - "column": 5 + "line": 1332, + "column": 13 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -226961,25 +231706,24 @@ "postfix": false, "binop": null }, - "value": "_createDefaultTextureSet", - "start": 49339, - "end": 49363, + "start": 50398, + "end": 50399, "loc": { "start": { - "line": 1309, - "column": 4 + "line": 1332, + "column": 13 }, "end": { - "line": 1309, - "column": 28 + "line": 1332, + "column": 14 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -226987,16 +231731,16 @@ "postfix": false, "binop": null }, - "start": 49363, - "end": 49364, + "start": 50408, + "end": 50409, "loc": { "start": { - "line": 1309, - "column": 28 + "line": 1333, + "column": 8 }, "end": { - "line": 1309, - "column": 29 + "line": 1333, + "column": 9 } } }, @@ -227012,73 +231756,42 @@ "postfix": false, "binop": null }, - "start": 49364, - "end": 49365, + "start": 50409, + "end": 50410, "loc": { "start": { - "line": 1309, - "column": 29 + "line": 1333, + "column": 9 }, "end": { - "line": 1309, - "column": 30 + "line": 1333, + "column": 10 } } }, { "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": 49366, - "end": 49367, - "loc": { - "start": { - "line": 1309, - "column": 31 - }, - "end": { - "line": 1309, - "column": 32 - } - } - }, - { - "type": "CommentLine", - "value": " Every SceneModelMesh gets at least the default TextureSet,", - "start": 49376, - "end": 49437, - "loc": { - "start": { - "line": 1310, - "column": 8 - }, - "end": { - "line": 1310, - "column": 69 - } - } - }, - { - "type": "CommentLine", - "value": " which contains empty default textures filled with color", - "start": 49446, - "end": 49504, + "start": 50410, + "end": 50411, "loc": { "start": { - "line": 1311, - "column": 8 + "line": 1333, + "column": 10 }, "end": { - "line": 1311, - "column": 66 + "line": 1333, + "column": 11 } } }, @@ -227097,15 +231810,15 @@ "updateContext": null }, "value": "const", - "start": 49513, - "end": 49518, + "start": 50420, + "end": 50425, "loc": { "start": { - "line": 1312, + "line": 1334, "column": 8 }, "end": { - "line": 1312, + "line": 1334, "column": 13 } } @@ -227122,17 +231835,17 @@ "postfix": false, "binop": null }, - "value": "defaultColorTexture", - "start": 49519, - "end": 49538, + "value": "defaultEmissiveTexture", + "start": 50426, + "end": 50448, "loc": { "start": { - "line": 1312, + "line": 1334, "column": 14 }, "end": { - "line": 1312, - "column": 33 + "line": 1334, + "column": 36 } } }, @@ -227150,16 +231863,16 @@ "updateContext": null }, "value": "=", - "start": 49539, - "end": 49540, + "start": 50449, + "end": 50450, "loc": { "start": { - "line": 1312, - "column": 34 + "line": 1334, + "column": 37 }, "end": { - "line": 1312, - "column": 35 + "line": 1334, + "column": 38 } } }, @@ -227178,16 +231891,16 @@ "updateContext": null }, "value": "new", - "start": 49541, - "end": 49544, + "start": 50451, + "end": 50454, "loc": { "start": { - "line": 1312, - "column": 36 + "line": 1334, + "column": 39 }, "end": { - "line": 1312, - "column": 39 + "line": 1334, + "column": 42 } } }, @@ -227204,16 +231917,16 @@ "binop": null }, "value": "SceneModelTexture", - "start": 49545, - "end": 49562, + "start": 50455, + "end": 50472, "loc": { "start": { - "line": 1312, - "column": 40 + "line": 1334, + "column": 43 }, "end": { - "line": 1312, - "column": 57 + "line": 1334, + "column": 60 } } }, @@ -227229,16 +231942,16 @@ "postfix": false, "binop": null }, - "start": 49562, - "end": 49563, + "start": 50472, + "end": 50473, "loc": { "start": { - "line": 1312, - "column": 57 + "line": 1334, + "column": 60 }, "end": { - "line": 1312, - "column": 58 + "line": 1334, + "column": 61 } } }, @@ -227254,16 +231967,16 @@ "postfix": false, "binop": null }, - "start": 49563, - "end": 49564, + "start": 50473, + "end": 50474, "loc": { "start": { - "line": 1312, - "column": 58 + "line": 1334, + "column": 61 }, "end": { - "line": 1312, - "column": 59 + "line": 1334, + "column": 62 } } }, @@ -227280,15 +231993,15 @@ "binop": null }, "value": "id", - "start": 49577, - "end": 49579, + "start": 50487, + "end": 50489, "loc": { "start": { - "line": 1313, + "line": 1335, "column": 12 }, "end": { - "line": 1313, + "line": 1335, "column": 14 } } @@ -227306,15 +232019,15 @@ "binop": null, "updateContext": null }, - "start": 49579, - "end": 49580, + "start": 50489, + "end": 50490, "loc": { "start": { - "line": 1313, + "line": 1335, "column": 14 }, "end": { - "line": 1313, + "line": 1335, "column": 15 } } @@ -227331,17 +232044,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_COLOR_TEXTURE_ID", - "start": 49581, - "end": 49605, + "value": "DEFAULT_EMISSIVE_TEXTURE_ID", + "start": 50491, + "end": 50518, "loc": { "start": { - "line": 1313, + "line": 1335, "column": 16 }, "end": { - "line": 1313, - "column": 40 + "line": 1335, + "column": 43 } } }, @@ -227358,16 +232071,16 @@ "binop": null, "updateContext": null }, - "start": 49605, - "end": 49606, + "start": 50518, + "end": 50519, "loc": { "start": { - "line": 1313, - "column": 40 + "line": 1335, + "column": 43 }, "end": { - "line": 1313, - "column": 41 + "line": 1335, + "column": 44 } } }, @@ -227384,15 +232097,15 @@ "binop": null }, "value": "texture", - "start": 49619, - "end": 49626, + "start": 50532, + "end": 50539, "loc": { "start": { - "line": 1314, + "line": 1336, "column": 12 }, "end": { - "line": 1314, + "line": 1336, "column": 19 } } @@ -227410,15 +232123,15 @@ "binop": null, "updateContext": null }, - "start": 49626, - "end": 49627, + "start": 50539, + "end": 50540, "loc": { "start": { - "line": 1314, + "line": 1336, "column": 19 }, "end": { - "line": 1314, + "line": 1336, "column": 20 } } @@ -227438,15 +232151,15 @@ "updateContext": null }, "value": "new", - "start": 49628, - "end": 49631, + "start": 50541, + "end": 50544, "loc": { "start": { - "line": 1314, + "line": 1336, "column": 21 }, "end": { - "line": 1314, + "line": 1336, "column": 24 } } @@ -227464,15 +232177,15 @@ "binop": null }, "value": "Texture2D", - "start": 49632, - "end": 49641, + "start": 50545, + "end": 50554, "loc": { "start": { - "line": 1314, + "line": 1336, "column": 25 }, "end": { - "line": 1314, + "line": 1336, "column": 34 } } @@ -227489,15 +232202,15 @@ "postfix": false, "binop": null }, - "start": 49641, - "end": 49642, + "start": 50554, + "end": 50555, "loc": { "start": { - "line": 1314, + "line": 1336, "column": 34 }, "end": { - "line": 1314, + "line": 1336, "column": 35 } } @@ -227514,15 +232227,15 @@ "postfix": false, "binop": null }, - "start": 49642, - "end": 49643, + "start": 50555, + "end": 50556, "loc": { "start": { - "line": 1314, + "line": 1336, "column": 35 }, "end": { - "line": 1314, + "line": 1336, "column": 36 } } @@ -227540,15 +232253,15 @@ "binop": null }, "value": "gl", - "start": 49660, - "end": 49662, + "start": 50573, + "end": 50575, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 16 }, "end": { - "line": 1315, + "line": 1337, "column": 18 } } @@ -227566,15 +232279,15 @@ "binop": null, "updateContext": null }, - "start": 49662, - "end": 49663, + "start": 50575, + "end": 50576, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 18 }, "end": { - "line": 1315, + "line": 1337, "column": 19 } } @@ -227594,15 +232307,15 @@ "updateContext": null }, "value": "this", - "start": 49664, - "end": 49668, + "start": 50577, + "end": 50581, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 20 }, "end": { - "line": 1315, + "line": 1337, "column": 24 } } @@ -227620,15 +232333,15 @@ "binop": null, "updateContext": null }, - "start": 49668, - "end": 49669, + "start": 50581, + "end": 50582, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 24 }, "end": { - "line": 1315, + "line": 1337, "column": 25 } } @@ -227646,15 +232359,15 @@ "binop": null }, "value": "scene", - "start": 49669, - "end": 49674, + "start": 50582, + "end": 50587, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 25 }, "end": { - "line": 1315, + "line": 1337, "column": 30 } } @@ -227672,15 +232385,15 @@ "binop": null, "updateContext": null }, - "start": 49674, - "end": 49675, + "start": 50587, + "end": 50588, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 30 }, "end": { - "line": 1315, + "line": 1337, "column": 31 } } @@ -227698,15 +232411,15 @@ "binop": null }, "value": "canvas", - "start": 49675, - "end": 49681, + "start": 50588, + "end": 50594, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 31 }, "end": { - "line": 1315, + "line": 1337, "column": 37 } } @@ -227724,15 +232437,15 @@ "binop": null, "updateContext": null }, - "start": 49681, - "end": 49682, + "start": 50594, + "end": 50595, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 37 }, "end": { - "line": 1315, + "line": 1337, "column": 38 } } @@ -227750,15 +232463,15 @@ "binop": null }, "value": "gl", - "start": 49682, - "end": 49684, + "start": 50595, + "end": 50597, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 38 }, "end": { - "line": 1315, + "line": 1337, "column": 40 } } @@ -227776,15 +232489,15 @@ "binop": null, "updateContext": null }, - "start": 49684, - "end": 49685, + "start": 50597, + "end": 50598, "loc": { "start": { - "line": 1315, + "line": 1337, "column": 40 }, "end": { - "line": 1315, + "line": 1337, "column": 41 } } @@ -227802,15 +232515,15 @@ "binop": null }, "value": "preloadColor", - "start": 49702, - "end": 49714, + "start": 50615, + "end": 50627, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 16 }, "end": { - "line": 1316, + "line": 1338, "column": 28 } } @@ -227828,15 +232541,15 @@ "binop": null, "updateContext": null }, - "start": 49714, - "end": 49715, + "start": 50627, + "end": 50628, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 28 }, "end": { - "line": 1316, + "line": 1338, "column": 29 } } @@ -227854,15 +232567,15 @@ "binop": null, "updateContext": null }, - "start": 49716, - "end": 49717, + "start": 50629, + "end": 50630, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 30 }, "end": { - "line": 1316, + "line": 1338, "column": 31 } } @@ -227880,16 +232593,16 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 49717, - "end": 49718, + "value": 0, + "start": 50630, + "end": 50631, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 31 }, "end": { - "line": 1316, + "line": 1338, "column": 32 } } @@ -227907,15 +232620,15 @@ "binop": null, "updateContext": null }, - "start": 49718, - "end": 49719, + "start": 50631, + "end": 50632, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 32 }, "end": { - "line": 1316, + "line": 1338, "column": 33 } } @@ -227933,16 +232646,16 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 49720, - "end": 49721, + "value": 0, + "start": 50633, + "end": 50634, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 34 }, "end": { - "line": 1316, + "line": 1338, "column": 35 } } @@ -227960,15 +232673,15 @@ "binop": null, "updateContext": null }, - "start": 49721, - "end": 49722, + "start": 50634, + "end": 50635, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 35 }, "end": { - "line": 1316, + "line": 1338, "column": 36 } } @@ -227986,16 +232699,16 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 49723, - "end": 49724, + "value": 0, + "start": 50636, + "end": 50637, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 37 }, "end": { - "line": 1316, + "line": 1338, "column": 38 } } @@ -228013,15 +232726,15 @@ "binop": null, "updateContext": null }, - "start": 49724, - "end": 49725, + "start": 50637, + "end": 50638, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 38 }, "end": { - "line": 1316, + "line": 1338, "column": 39 } } @@ -228040,15 +232753,15 @@ "updateContext": null }, "value": 1, - "start": 49726, - "end": 49727, + "start": 50639, + "end": 50640, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 40 }, "end": { - "line": 1316, + "line": 1338, "column": 41 } } @@ -228066,32 +232779,32 @@ "binop": null, "updateContext": null }, - "start": 49727, - "end": 49728, + "start": 50640, + "end": 50641, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 41 }, "end": { - "line": 1316, + "line": 1338, "column": 42 } } }, { "type": "CommentLine", - "value": " [r, g, b, a]})", - "start": 49729, - "end": 49746, + "value": " [x, y, z, unused]", + "start": 50642, + "end": 50662, "loc": { "start": { - "line": 1316, + "line": 1338, "column": 43 }, "end": { - "line": 1316, - "column": 60 + "line": 1338, + "column": 63 } } }, @@ -228107,15 +232820,15 @@ "postfix": false, "binop": null }, - "start": 49759, - "end": 49760, + "start": 50675, + "end": 50676, "loc": { "start": { - "line": 1317, + "line": 1339, "column": 12 }, "end": { - "line": 1317, + "line": 1339, "column": 13 } } @@ -228132,15 +232845,15 @@ "postfix": false, "binop": null }, - "start": 49760, - "end": 49761, + "start": 50676, + "end": 50677, "loc": { "start": { - "line": 1317, + "line": 1339, "column": 13 }, "end": { - "line": 1317, + "line": 1339, "column": 14 } } @@ -228157,15 +232870,15 @@ "postfix": false, "binop": null }, - "start": 49770, - "end": 49771, + "start": 50686, + "end": 50687, "loc": { "start": { - "line": 1318, + "line": 1340, "column": 8 }, "end": { - "line": 1318, + "line": 1340, "column": 9 } } @@ -228182,15 +232895,15 @@ "postfix": false, "binop": null }, - "start": 49771, - "end": 49772, + "start": 50687, + "end": 50688, "loc": { "start": { - "line": 1318, + "line": 1340, "column": 9 }, "end": { - "line": 1318, + "line": 1340, "column": 10 } } @@ -228208,15 +232921,15 @@ "binop": null, "updateContext": null }, - "start": 49772, - "end": 49773, + "start": 50688, + "end": 50689, "loc": { "start": { - "line": 1318, + "line": 1340, "column": 10 }, "end": { - "line": 1318, + "line": 1340, "column": 11 } } @@ -228236,15 +232949,15 @@ "updateContext": null }, "value": "const", - "start": 49782, - "end": 49787, + "start": 50698, + "end": 50703, "loc": { "start": { - "line": 1319, + "line": 1341, "column": 8 }, "end": { - "line": 1319, + "line": 1341, "column": 13 } } @@ -228261,17 +232974,17 @@ "postfix": false, "binop": null }, - "value": "defaultMetalRoughTexture", - "start": 49788, - "end": 49812, + "value": "defaultOcclusionTexture", + "start": 50704, + "end": 50727, "loc": { "start": { - "line": 1319, + "line": 1341, "column": 14 }, "end": { - "line": 1319, - "column": 38 + "line": 1341, + "column": 37 } } }, @@ -228289,16 +233002,16 @@ "updateContext": null }, "value": "=", - "start": 49813, - "end": 49814, + "start": 50728, + "end": 50729, "loc": { "start": { - "line": 1319, - "column": 39 + "line": 1341, + "column": 38 }, "end": { - "line": 1319, - "column": 40 + "line": 1341, + "column": 39 } } }, @@ -228317,16 +233030,16 @@ "updateContext": null }, "value": "new", - "start": 49815, - "end": 49818, + "start": 50730, + "end": 50733, "loc": { "start": { - "line": 1319, - "column": 41 + "line": 1341, + "column": 40 }, "end": { - "line": 1319, - "column": 44 + "line": 1341, + "column": 43 } } }, @@ -228343,16 +233056,16 @@ "binop": null }, "value": "SceneModelTexture", - "start": 49819, - "end": 49836, + "start": 50734, + "end": 50751, "loc": { "start": { - "line": 1319, - "column": 45 + "line": 1341, + "column": 44 }, "end": { - "line": 1319, - "column": 62 + "line": 1341, + "column": 61 } } }, @@ -228368,16 +233081,16 @@ "postfix": false, "binop": null }, - "start": 49836, - "end": 49837, + "start": 50751, + "end": 50752, "loc": { "start": { - "line": 1319, - "column": 62 + "line": 1341, + "column": 61 }, "end": { - "line": 1319, - "column": 63 + "line": 1341, + "column": 62 } } }, @@ -228393,16 +233106,16 @@ "postfix": false, "binop": null }, - "start": 49837, - "end": 49838, + "start": 50752, + "end": 50753, "loc": { "start": { - "line": 1319, - "column": 63 + "line": 1341, + "column": 62 }, "end": { - "line": 1319, - "column": 64 + "line": 1341, + "column": 63 } } }, @@ -228419,15 +233132,15 @@ "binop": null }, "value": "id", - "start": 49851, - "end": 49853, + "start": 50766, + "end": 50768, "loc": { "start": { - "line": 1320, + "line": 1342, "column": 12 }, "end": { - "line": 1320, + "line": 1342, "column": 14 } } @@ -228445,15 +233158,15 @@ "binop": null, "updateContext": null }, - "start": 49853, - "end": 49854, + "start": 50768, + "end": 50769, "loc": { "start": { - "line": 1320, + "line": 1342, "column": 14 }, "end": { - "line": 1320, + "line": 1342, "column": 15 } } @@ -228470,17 +233183,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_METAL_ROUGH_TEXTURE_ID", - "start": 49855, - "end": 49885, + "value": "DEFAULT_OCCLUSION_TEXTURE_ID", + "start": 50770, + "end": 50798, "loc": { "start": { - "line": 1320, + "line": 1342, "column": 16 }, "end": { - "line": 1320, - "column": 46 + "line": 1342, + "column": 44 } } }, @@ -228497,16 +233210,16 @@ "binop": null, "updateContext": null }, - "start": 49885, - "end": 49886, + "start": 50798, + "end": 50799, "loc": { "start": { - "line": 1320, - "column": 46 + "line": 1342, + "column": 44 }, "end": { - "line": 1320, - "column": 47 + "line": 1342, + "column": 45 } } }, @@ -228523,15 +233236,15 @@ "binop": null }, "value": "texture", - "start": 49899, - "end": 49906, + "start": 50812, + "end": 50819, "loc": { "start": { - "line": 1321, + "line": 1343, "column": 12 }, "end": { - "line": 1321, + "line": 1343, "column": 19 } } @@ -228549,15 +233262,15 @@ "binop": null, "updateContext": null }, - "start": 49906, - "end": 49907, + "start": 50819, + "end": 50820, "loc": { "start": { - "line": 1321, + "line": 1343, "column": 19 }, "end": { - "line": 1321, + "line": 1343, "column": 20 } } @@ -228577,15 +233290,15 @@ "updateContext": null }, "value": "new", - "start": 49908, - "end": 49911, + "start": 50821, + "end": 50824, "loc": { "start": { - "line": 1321, + "line": 1343, "column": 21 }, "end": { - "line": 1321, + "line": 1343, "column": 24 } } @@ -228603,15 +233316,15 @@ "binop": null }, "value": "Texture2D", - "start": 49912, - "end": 49921, + "start": 50825, + "end": 50834, "loc": { "start": { - "line": 1321, + "line": 1343, "column": 25 }, "end": { - "line": 1321, + "line": 1343, "column": 34 } } @@ -228628,15 +233341,15 @@ "postfix": false, "binop": null }, - "start": 49921, - "end": 49922, + "start": 50834, + "end": 50835, "loc": { "start": { - "line": 1321, + "line": 1343, "column": 34 }, "end": { - "line": 1321, + "line": 1343, "column": 35 } } @@ -228653,15 +233366,15 @@ "postfix": false, "binop": null }, - "start": 49922, - "end": 49923, + "start": 50835, + "end": 50836, "loc": { "start": { - "line": 1321, + "line": 1343, "column": 35 }, "end": { - "line": 1321, + "line": 1343, "column": 36 } } @@ -228679,15 +233392,15 @@ "binop": null }, "value": "gl", - "start": 49940, - "end": 49942, + "start": 50853, + "end": 50855, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 16 }, "end": { - "line": 1322, + "line": 1344, "column": 18 } } @@ -228705,15 +233418,15 @@ "binop": null, "updateContext": null }, - "start": 49942, - "end": 49943, + "start": 50855, + "end": 50856, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 18 }, "end": { - "line": 1322, + "line": 1344, "column": 19 } } @@ -228733,15 +233446,15 @@ "updateContext": null }, "value": "this", - "start": 49944, - "end": 49948, + "start": 50857, + "end": 50861, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 20 }, "end": { - "line": 1322, + "line": 1344, "column": 24 } } @@ -228759,15 +233472,15 @@ "binop": null, "updateContext": null }, - "start": 49948, - "end": 49949, + "start": 50861, + "end": 50862, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 24 }, "end": { - "line": 1322, + "line": 1344, "column": 25 } } @@ -228785,15 +233498,15 @@ "binop": null }, "value": "scene", - "start": 49949, - "end": 49954, + "start": 50862, + "end": 50867, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 25 }, "end": { - "line": 1322, + "line": 1344, "column": 30 } } @@ -228811,15 +233524,15 @@ "binop": null, "updateContext": null }, - "start": 49954, - "end": 49955, + "start": 50867, + "end": 50868, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 30 }, "end": { - "line": 1322, + "line": 1344, "column": 31 } } @@ -228837,15 +233550,15 @@ "binop": null }, "value": "canvas", - "start": 49955, - "end": 49961, + "start": 50868, + "end": 50874, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 31 }, "end": { - "line": 1322, + "line": 1344, "column": 37 } } @@ -228863,15 +233576,15 @@ "binop": null, "updateContext": null }, - "start": 49961, - "end": 49962, + "start": 50874, + "end": 50875, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 37 }, "end": { - "line": 1322, + "line": 1344, "column": 38 } } @@ -228889,15 +233602,15 @@ "binop": null }, "value": "gl", - "start": 49962, - "end": 49964, + "start": 50875, + "end": 50877, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 38 }, "end": { - "line": 1322, + "line": 1344, "column": 40 } } @@ -228915,15 +233628,15 @@ "binop": null, "updateContext": null }, - "start": 49964, - "end": 49965, + "start": 50877, + "end": 50878, "loc": { "start": { - "line": 1322, + "line": 1344, "column": 40 }, "end": { - "line": 1322, + "line": 1344, "column": 41 } } @@ -228941,15 +233654,15 @@ "binop": null }, "value": "preloadColor", - "start": 49982, - "end": 49994, + "start": 50895, + "end": 50907, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 16 }, "end": { - "line": 1323, + "line": 1345, "column": 28 } } @@ -228967,15 +233680,15 @@ "binop": null, "updateContext": null }, - "start": 49994, - "end": 49995, + "start": 50907, + "end": 50908, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 28 }, "end": { - "line": 1323, + "line": 1345, "column": 29 } } @@ -228993,15 +233706,15 @@ "binop": null, "updateContext": null }, - "start": 49996, - "end": 49997, + "start": 50909, + "end": 50910, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 30 }, "end": { - "line": 1323, + "line": 1345, "column": 31 } } @@ -229019,16 +233732,16 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 49997, - "end": 49998, + "value": 1, + "start": 50910, + "end": 50911, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 31 }, "end": { - "line": 1323, + "line": 1345, "column": 32 } } @@ -229046,15 +233759,15 @@ "binop": null, "updateContext": null }, - "start": 49998, - "end": 49999, + "start": 50911, + "end": 50912, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 32 }, "end": { - "line": 1323, + "line": 1345, "column": 33 } } @@ -229073,15 +233786,15 @@ "updateContext": null }, "value": 1, - "start": 50000, - "end": 50001, + "start": 50913, + "end": 50914, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 34 }, "end": { - "line": 1323, + "line": 1345, "column": 35 } } @@ -229099,15 +233812,15 @@ "binop": null, "updateContext": null }, - "start": 50001, - "end": 50002, + "start": 50914, + "end": 50915, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 35 }, "end": { - "line": 1323, + "line": 1345, "column": 36 } } @@ -229126,15 +233839,15 @@ "updateContext": null }, "value": 1, - "start": 50003, - "end": 50004, + "start": 50916, + "end": 50917, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 37 }, "end": { - "line": 1323, + "line": 1345, "column": 38 } } @@ -229152,15 +233865,15 @@ "binop": null, "updateContext": null }, - "start": 50004, - "end": 50005, + "start": 50917, + "end": 50918, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 38 }, "end": { - "line": 1323, + "line": 1345, "column": 39 } } @@ -229179,15 +233892,15 @@ "updateContext": null }, "value": 1, - "start": 50006, - "end": 50007, + "start": 50919, + "end": 50920, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 40 }, "end": { - "line": 1323, + "line": 1345, "column": 41 } } @@ -229205,32 +233918,32 @@ "binop": null, "updateContext": null }, - "start": 50007, - "end": 50008, + "start": 50920, + "end": 50921, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 41 }, "end": { - "line": 1323, + "line": 1345, "column": 42 } } }, { "type": "CommentLine", - "value": " [unused, roughness, metalness, unused]", - "start": 50009, - "end": 50050, + "value": " [x, y, z, unused]", + "start": 50922, + "end": 50942, "loc": { "start": { - "line": 1323, + "line": 1345, "column": 43 }, "end": { - "line": 1323, - "column": 84 + "line": 1345, + "column": 63 } } }, @@ -229246,15 +233959,15 @@ "postfix": false, "binop": null }, - "start": 50063, - "end": 50064, + "start": 50955, + "end": 50956, "loc": { "start": { - "line": 1324, + "line": 1346, "column": 12 }, "end": { - "line": 1324, + "line": 1346, "column": 13 } } @@ -229271,15 +233984,15 @@ "postfix": false, "binop": null }, - "start": 50064, - "end": 50065, + "start": 50956, + "end": 50957, "loc": { "start": { - "line": 1324, + "line": 1346, "column": 13 }, "end": { - "line": 1324, + "line": 1346, "column": 14 } } @@ -229296,15 +234009,15 @@ "postfix": false, "binop": null }, - "start": 50074, - "end": 50075, + "start": 50966, + "end": 50967, "loc": { "start": { - "line": 1325, + "line": 1347, "column": 8 }, "end": { - "line": 1325, + "line": 1347, "column": 9 } } @@ -229321,15 +234034,15 @@ "postfix": false, "binop": null }, - "start": 50075, - "end": 50076, + "start": 50967, + "end": 50968, "loc": { "start": { - "line": 1325, + "line": 1347, "column": 9 }, "end": { - "line": 1325, + "line": 1347, "column": 10 } } @@ -229347,25 +234060,25 @@ "binop": null, "updateContext": null }, - "start": 50076, - "end": 50077, + "start": 50968, + "end": 50969, "loc": { "start": { - "line": 1325, + "line": 1347, "column": 10 }, "end": { - "line": 1325, + "line": 1347, "column": 11 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -229374,77 +234087,75 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 50086, - "end": 50091, + "value": "this", + "start": 50978, + "end": 50982, "loc": { "start": { - "line": 1326, + "line": 1348, "column": 8 }, "end": { - "line": 1326, - "column": 13 + "line": 1348, + "column": 12 } } }, { "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": "defaultNormalsTexture", - "start": 50092, - "end": 50113, + "start": 50982, + "end": 50983, "loc": { "start": { - "line": 1326, - "column": 14 + "line": 1348, + "column": 12 }, "end": { - "line": 1326, - "column": 35 + "line": 1348, + "column": 13 } } }, { "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": 50114, - "end": 50115, + "value": "_textures", + "start": 50983, + "end": 50992, "loc": { "start": { - "line": 1326, - "column": 36 + "line": 1348, + "column": 13 }, "end": { - "line": 1326, - "column": 37 + "line": 1348, + "column": 22 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -229455,17 +234166,16 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 50116, - "end": 50119, + "start": 50992, + "end": 50993, "loc": { "start": { - "line": 1326, - "column": 38 + "line": 1348, + "column": 22 }, "end": { - "line": 1326, - "column": 41 + "line": 1348, + "column": 23 } } }, @@ -229481,67 +234191,70 @@ "postfix": false, "binop": null }, - "value": "SceneModelTexture", - "start": 50120, - "end": 50137, + "value": "DEFAULT_COLOR_TEXTURE_ID", + "start": 50993, + "end": 51017, "loc": { "start": { - "line": 1326, - "column": 42 + "line": 1348, + "column": 23 }, "end": { - "line": 1326, - "column": 59 + "line": 1348, + "column": 47 } } }, { "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": 50137, - "end": 50138, + "start": 51017, + "end": 51018, "loc": { "start": { - "line": 1326, - "column": 59 + "line": 1348, + "column": 47 }, "end": { - "line": 1326, - "column": 60 + "line": 1348, + "column": 48 } } }, { "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": 50138, - "end": 50139, + "value": "=", + "start": 51019, + "end": 51020, "loc": { "start": { - "line": 1326, - "column": 60 + "line": 1348, + "column": 49 }, "end": { - "line": 1326, - "column": 61 + "line": 1348, + "column": 50 } } }, @@ -229557,23 +234270,23 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 50152, - "end": 50154, + "value": "defaultColorTexture", + "start": 51021, + "end": 51040, "loc": { "start": { - "line": 1327, - "column": 12 + "line": 1348, + "column": 51 }, "end": { - "line": 1327, - "column": 14 + "line": 1348, + "column": 70 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -229584,22 +234297,23 @@ "binop": null, "updateContext": null }, - "start": 50154, - "end": 50155, + "start": 51040, + "end": 51041, "loc": { "start": { - "line": 1327, - "column": 14 + "line": 1348, + "column": 70 }, "end": { - "line": 1327, - "column": 15 + "line": 1348, + "column": 71 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -229607,26 +234321,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "DEFAULT_NORMALS_TEXTURE_ID", - "start": 50156, - "end": 50182, + "value": "this", + "start": 51050, + "end": 51054, "loc": { "start": { - "line": 1327, - "column": 16 + "line": 1349, + "column": 8 }, "end": { - "line": 1327, - "column": 42 + "line": 1349, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -229636,16 +234351,16 @@ "binop": null, "updateContext": null }, - "start": 50182, - "end": 50183, + "start": 51054, + "end": 51055, "loc": { "start": { - "line": 1327, - "column": 42 + "line": 1349, + "column": 12 }, "end": { - "line": 1327, - "column": 43 + "line": 1349, + "column": 13 } } }, @@ -229661,50 +234376,23 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 50196, - "end": 50203, - "loc": { - "start": { - "line": 1328, - "column": 12 - }, - "end": { - "line": 1328, - "column": 19 - } - } - }, - { - "type": { - "label": ":", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 50203, - "end": 50204, + "value": "_textures", + "start": 51055, + "end": 51064, "loc": { "start": { - "line": 1328, - "column": 19 + "line": 1349, + "column": 13 }, "end": { - "line": 1328, - "column": 20 + "line": 1349, + "column": 22 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -229715,17 +234403,16 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 50205, - "end": 50208, + "start": 51064, + "end": 51065, "loc": { "start": { - "line": 1328, - "column": 21 + "line": 1349, + "column": 22 }, "end": { - "line": 1328, - "column": 24 + "line": 1349, + "column": 23 } } }, @@ -229741,67 +234428,70 @@ "postfix": false, "binop": null }, - "value": "Texture2D", - "start": 50209, - "end": 50218, + "value": "DEFAULT_METAL_ROUGH_TEXTURE_ID", + "start": 51065, + "end": 51095, "loc": { "start": { - "line": 1328, - "column": 25 + "line": 1349, + "column": 23 }, "end": { - "line": 1328, - "column": 34 + "line": 1349, + "column": 53 } } }, { "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": 50218, - "end": 50219, + "start": 51095, + "end": 51096, "loc": { "start": { - "line": 1328, - "column": 34 + "line": 1349, + "column": 53 }, "end": { - "line": 1328, - "column": 35 + "line": 1349, + "column": 54 } } }, { "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": 50219, - "end": 50220, + "value": "=", + "start": 51097, + "end": 51098, "loc": { "start": { - "line": 1328, - "column": 35 + "line": 1349, + "column": 55 }, "end": { - "line": 1328, - "column": 36 + "line": 1349, + "column": 56 } } }, @@ -229817,23 +234507,23 @@ "postfix": false, "binop": null }, - "value": "gl", - "start": 50237, - "end": 50239, + "value": "defaultMetalRoughTexture", + "start": 51099, + "end": 51123, "loc": { "start": { - "line": 1329, - "column": 16 + "line": 1349, + "column": 57 }, "end": { - "line": 1329, - "column": 18 + "line": 1349, + "column": 81 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -229844,16 +234534,16 @@ "binop": null, "updateContext": null }, - "start": 50239, - "end": 50240, + "start": 51123, + "end": 51124, "loc": { "start": { - "line": 1329, - "column": 18 + "line": 1349, + "column": 81 }, "end": { - "line": 1329, - "column": 19 + "line": 1349, + "column": 82 } } }, @@ -229872,16 +234562,16 @@ "updateContext": null }, "value": "this", - "start": 50241, - "end": 50245, + "start": 51133, + "end": 51137, "loc": { "start": { - "line": 1329, - "column": 20 + "line": 1350, + "column": 8 }, "end": { - "line": 1329, - "column": 24 + "line": 1350, + "column": 12 } } }, @@ -229898,16 +234588,16 @@ "binop": null, "updateContext": null }, - "start": 50245, - "end": 50246, + "start": 51137, + "end": 51138, "loc": { "start": { - "line": 1329, - "column": 24 + "line": 1350, + "column": 12 }, "end": { - "line": 1329, - "column": 25 + "line": 1350, + "column": 13 } } }, @@ -229923,25 +234613,25 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 50246, - "end": 50251, + "value": "_textures", + "start": 51138, + "end": 51147, "loc": { "start": { - "line": 1329, - "column": 25 + "line": 1350, + "column": 13 }, "end": { - "line": 1329, - "column": 30 + "line": 1350, + "column": 22 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -229950,16 +234640,16 @@ "binop": null, "updateContext": null }, - "start": 50251, - "end": 50252, + "start": 51147, + "end": 51148, "loc": { "start": { - "line": 1329, - "column": 30 + "line": 1350, + "column": 22 }, "end": { - "line": 1329, - "column": 31 + "line": 1350, + "column": 23 } } }, @@ -229975,23 +234665,23 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 50252, - "end": 50258, + "value": "DEFAULT_NORMALS_TEXTURE_ID", + "start": 51148, + "end": 51174, "loc": { "start": { - "line": 1329, - "column": 31 + "line": 1350, + "column": 23 }, "end": { - "line": 1329, - "column": 37 + "line": 1350, + "column": 49 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -230002,68 +234692,43 @@ "binop": null, "updateContext": null }, - "start": 50258, - "end": 50259, - "loc": { - "start": { - "line": 1329, - "column": 37 - }, - "end": { - "line": 1329, - "column": 38 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "gl", - "start": 50259, - "end": 50261, + "start": 51174, + "end": 51175, "loc": { "start": { - "line": 1329, - "column": 38 + "line": 1350, + "column": 49 }, "end": { - "line": 1329, - "column": 40 + "line": 1350, + "column": 50 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 50261, - "end": 50262, + "value": "=", + "start": 51176, + "end": 51177, "loc": { "start": { - "line": 1329, - "column": 40 + "line": 1350, + "column": 51 }, "end": { - "line": 1329, - "column": 41 + "line": 1350, + "column": 52 } } }, @@ -230079,23 +234744,23 @@ "postfix": false, "binop": null }, - "value": "preloadColor", - "start": 50279, - "end": 50291, + "value": "defaultNormalsTexture", + "start": 51178, + "end": 51199, "loc": { "start": { - "line": 1330, - "column": 16 + "line": 1350, + "column": 53 }, "end": { - "line": 1330, - "column": 28 + "line": 1350, + "column": 74 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -230106,48 +234771,23 @@ "binop": null, "updateContext": null }, - "start": 50291, - "end": 50292, - "loc": { - "start": { - "line": 1330, - "column": 28 - }, - "end": { - "line": 1330, - "column": 29 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 50293, - "end": 50294, + "start": 51199, + "end": 51200, "loc": { "start": { - "line": 1330, - "column": 30 + "line": 1350, + "column": 74 }, "end": { - "line": 1330, - "column": 31 + "line": 1350, + "column": 75 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -230158,24 +234798,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 50294, - "end": 50295, + "value": "this", + "start": 51209, + "end": 51213, "loc": { "start": { - "line": 1330, - "column": 31 + "line": 1351, + "column": 8 }, "end": { - "line": 1330, - "column": 32 + "line": 1351, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -230185,22 +234825,22 @@ "binop": null, "updateContext": null }, - "start": 50295, - "end": 50296, + "start": 51213, + "end": 51214, "loc": { "start": { - "line": 1330, - "column": 32 + "line": 1351, + "column": 12 }, "end": { - "line": 1330, - "column": 33 + "line": 1351, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -230208,28 +234848,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 50297, - "end": 50298, + "value": "_textures", + "start": 51214, + "end": 51223, "loc": { "start": { - "line": 1330, - "column": 34 + "line": 1351, + "column": 13 }, "end": { - "line": 1330, - "column": 35 + "line": 1351, + "column": 22 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -230238,22 +234877,22 @@ "binop": null, "updateContext": null }, - "start": 50298, - "end": 50299, + "start": 51223, + "end": 51224, "loc": { "start": { - "line": 1330, - "column": 35 + "line": 1351, + "column": 22 }, "end": { - "line": 1330, - "column": 36 + "line": 1351, + "column": 23 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -230261,54 +234900,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 50300, - "end": 50301, - "loc": { - "start": { - "line": 1330, - "column": 37 - }, - "end": { - "line": 1330, - "column": 38 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 50301, - "end": 50302, + "value": "DEFAULT_EMISSIVE_TEXTURE_ID", + "start": 51224, + "end": 51251, "loc": { "start": { - "line": 1330, - "column": 38 + "line": 1351, + "column": 23 }, "end": { - "line": 1330, - "column": 39 + "line": 1351, + "column": 50 } } }, { "type": { - "label": "num", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -230317,67 +234929,51 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 50303, - "end": 50304, + "start": 51251, + "end": 51252, "loc": { "start": { - "line": 1330, - "column": 40 + "line": 1351, + "column": 50 }, "end": { - "line": 1330, - "column": 41 + "line": 1351, + "column": 51 } } }, { "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": 50304, - "end": 50305, - "loc": { - "start": { - "line": 1330, - "column": 41 - }, - "end": { - "line": 1330, - "column": 42 - } - } - }, - { - "type": "CommentLine", - "value": " [x, y, z, unused] - these must be zeros", - "start": 50306, - "end": 50348, + "value": "=", + "start": 51253, + "end": 51254, "loc": { "start": { - "line": 1330, - "column": 43 + "line": 1351, + "column": 52 }, "end": { - "line": 1330, - "column": 85 + "line": 1351, + "column": 53 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -230385,72 +234981,77 @@ "postfix": false, "binop": null }, - "start": 50361, - "end": 50362, + "value": "defaultEmissiveTexture", + "start": 51255, + "end": 51277, "loc": { "start": { - "line": 1331, - "column": 12 + "line": 1351, + "column": 54 }, "end": { - "line": 1331, - "column": 13 + "line": 1351, + "column": 76 } } }, { "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": 50362, - "end": 50363, + "start": 51277, + "end": 51278, "loc": { "start": { - "line": 1331, - "column": 13 + "line": 1351, + "column": 76 }, "end": { - "line": 1331, - "column": 14 + "line": 1351, + "column": 77 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 50372, - "end": 50373, + "value": "this", + "start": 51287, + "end": 51291, "loc": { "start": { - "line": 1332, + "line": 1352, "column": 8 }, "end": { - "line": 1332, - "column": 9 + "line": 1352, + "column": 12 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -230458,53 +235059,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 50373, - "end": 50374, + "start": 51291, + "end": 51292, "loc": { "start": { - "line": 1332, - "column": 9 + "line": 1352, + "column": 12 }, "end": { - "line": 1332, - "column": 10 + "line": 1352, + "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": 50374, - "end": 50375, + "value": "_textures", + "start": 51292, + "end": 51301, "loc": { - "start": { - "line": 1332, - "column": 10 + "start": { + "line": 1352, + "column": 13 }, "end": { - "line": 1332, - "column": 11 + "line": 1352, + "column": 22 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -230513,17 +235114,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 50384, - "end": 50389, + "start": 51301, + "end": 51302, "loc": { "start": { - "line": 1333, - "column": 8 + "line": 1352, + "column": 22 }, "end": { - "line": 1333, - "column": 13 + "line": 1352, + "column": 23 } } }, @@ -230539,72 +235139,70 @@ "postfix": false, "binop": null }, - "value": "defaultEmissiveTexture", - "start": 50390, - "end": 50412, + "value": "DEFAULT_OCCLUSION_TEXTURE_ID", + "start": 51302, + "end": 51330, "loc": { "start": { - "line": 1333, - "column": 14 + "line": 1352, + "column": 23 }, "end": { - "line": 1333, - "column": 36 + "line": 1352, + "column": 51 } } }, { "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": 50413, - "end": 50414, + "start": 51330, + "end": 51331, "loc": { "start": { - "line": 1333, - "column": 37 + "line": 1352, + "column": 51 }, "end": { - "line": 1333, - "column": 38 + "line": 1352, + "column": 52 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "new", - "start": 50415, - "end": 50418, + "value": "=", + "start": 51332, + "end": 51333, "loc": { "start": { - "line": 1333, - "column": 39 + "line": 1352, + "column": 53 }, "end": { - "line": 1333, - "column": 42 + "line": 1352, + "column": 54 } } }, @@ -230620,223 +235218,228 @@ "postfix": false, "binop": null }, - "value": "SceneModelTexture", - "start": 50419, - "end": 50436, + "value": "defaultOcclusionTexture", + "start": 51334, + "end": 51357, "loc": { "start": { - "line": 1333, - "column": 43 + "line": 1352, + "column": 55 }, "end": { - "line": 1333, - "column": 60 + "line": 1352, + "column": 78 } } }, { "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": 50436, - "end": 50437, + "start": 51357, + "end": 51358, "loc": { "start": { - "line": 1333, - "column": 60 + "line": 1352, + "column": 78 }, "end": { - "line": 1333, - "column": 61 + "line": 1352, + "column": 79 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 50437, - "end": 50438, + "value": "this", + "start": 51367, + "end": 51371, "loc": { "start": { - "line": 1333, - "column": 61 + "line": 1353, + "column": 8 }, "end": { - "line": 1333, - "column": 62 + "line": 1353, + "column": 12 } } }, { "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": "id", - "start": 50451, - "end": 50453, + "start": 51371, + "end": 51372, "loc": { "start": { - "line": 1334, + "line": 1353, "column": 12 }, "end": { - "line": 1334, - "column": 14 + "line": 1353, + "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": 50453, - "end": 50454, + "value": "_textureSets", + "start": 51372, + "end": 51384, "loc": { "start": { - "line": 1334, - "column": 14 + "line": 1353, + "column": 13 }, "end": { - "line": 1334, - "column": 15 + "line": 1353, + "column": 25 } } }, { "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": "DEFAULT_EMISSIVE_TEXTURE_ID", - "start": 50455, - "end": 50482, + "start": 51384, + "end": 51385, "loc": { "start": { - "line": 1334, - "column": 16 + "line": 1353, + "column": 25 }, "end": { - "line": 1334, - "column": 43 + "line": 1353, + "column": 26 } } }, { "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": 50482, - "end": 50483, + "value": "DEFAULT_TEXTURE_SET_ID", + "start": 51385, + "end": 51407, "loc": { "start": { - "line": 1334, - "column": 43 + "line": 1353, + "column": 26 }, "end": { - "line": 1334, - "column": 44 + "line": 1353, + "column": 48 } } }, { "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": "texture", - "start": 50496, - "end": 50503, + "start": 51407, + "end": 51408, "loc": { "start": { - "line": 1335, - "column": 12 + "line": 1353, + "column": 48 }, "end": { - "line": 1335, - "column": 19 + "line": 1353, + "column": 49 } } }, { "type": { - "label": ":", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 50503, - "end": 50504, + "value": "=", + "start": 51409, + "end": 51410, "loc": { "start": { - "line": 1335, - "column": 19 + "line": 1353, + "column": 50 }, "end": { - "line": 1335, - "column": 20 + "line": 1353, + "column": 51 } } }, @@ -230855,16 +235458,16 @@ "updateContext": null }, "value": "new", - "start": 50505, - "end": 50508, + "start": 51411, + "end": 51414, "loc": { "start": { - "line": 1335, - "column": 21 + "line": 1353, + "column": 52 }, "end": { - "line": 1335, - "column": 24 + "line": 1353, + "column": 55 } } }, @@ -230880,17 +235483,17 @@ "postfix": false, "binop": null }, - "value": "Texture2D", - "start": 50509, - "end": 50518, + "value": "SceneModelTextureSet", + "start": 51415, + "end": 51435, "loc": { "start": { - "line": 1335, - "column": 25 + "line": 1353, + "column": 56 }, "end": { - "line": 1335, - "column": 34 + "line": 1353, + "column": 76 } } }, @@ -230906,16 +235509,16 @@ "postfix": false, "binop": null }, - "start": 50518, - "end": 50519, + "start": 51435, + "end": 51436, "loc": { "start": { - "line": 1335, - "column": 34 + "line": 1353, + "column": 76 }, "end": { - "line": 1335, - "column": 35 + "line": 1353, + "column": 77 } } }, @@ -230931,16 +235534,16 @@ "postfix": false, "binop": null }, - "start": 50519, - "end": 50520, + "start": 51436, + "end": 51437, "loc": { "start": { - "line": 1335, - "column": 35 + "line": 1353, + "column": 77 }, "end": { - "line": 1335, - "column": 36 + "line": 1353, + "column": 78 } } }, @@ -230956,17 +235559,17 @@ "postfix": false, "binop": null }, - "value": "gl", - "start": 50537, - "end": 50539, + "value": "id", + "start": 51450, + "end": 51452, "loc": { "start": { - "line": 1336, - "column": 16 + "line": 1354, + "column": 12 }, "end": { - "line": 1336, - "column": 18 + "line": 1354, + "column": 14 } } }, @@ -230983,23 +235586,22 @@ "binop": null, "updateContext": null }, - "start": 50539, - "end": 50540, + "start": 51452, + "end": 51453, "loc": { "start": { - "line": 1336, - "column": 18 + "line": 1354, + "column": 14 }, "end": { - "line": 1336, - "column": 19 + "line": 1354, + "column": 15 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -231007,27 +235609,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 50541, - "end": 50545, + "value": "DEFAULT_TEXTURE_SET_ID", + "start": 51454, + "end": 51476, "loc": { "start": { - "line": 1336, - "column": 20 + "line": 1354, + "column": 16 }, "end": { - "line": 1336, - "column": 24 + "line": 1354, + "column": 38 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -231037,16 +235638,16 @@ "binop": null, "updateContext": null }, - "start": 50545, - "end": 50546, + "start": 51476, + "end": 51477, "loc": { "start": { - "line": 1336, - "column": 24 + "line": 1354, + "column": 38 }, "end": { - "line": 1336, - "column": 25 + "line": 1354, + "column": 39 } } }, @@ -231062,24 +235663,24 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 50546, - "end": 50551, + "value": "model", + "start": 51490, + "end": 51495, "loc": { "start": { - "line": 1336, - "column": 25 + "line": 1355, + "column": 12 }, "end": { - "line": 1336, - "column": 30 + "line": 1355, + "column": 17 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -231089,22 +235690,23 @@ "binop": null, "updateContext": null }, - "start": 50551, - "end": 50552, + "start": 51495, + "end": 51496, "loc": { "start": { - "line": 1336, - "column": 30 + "line": 1355, + "column": 17 }, "end": { - "line": 1336, - "column": 31 + "line": 1355, + "column": 18 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -231112,26 +235714,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "canvas", - "start": 50552, - "end": 50558, + "value": "this", + "start": 51497, + "end": 51501, "loc": { "start": { - "line": 1336, - "column": 31 + "line": 1355, + "column": 19 }, "end": { - "line": 1336, - "column": 37 + "line": 1355, + "column": 23 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -231141,16 +235744,16 @@ "binop": null, "updateContext": null }, - "start": 50558, - "end": 50559, + "start": 51501, + "end": 51502, "loc": { "start": { - "line": 1336, - "column": 37 + "line": 1355, + "column": 23 }, "end": { - "line": 1336, - "column": 38 + "line": 1355, + "column": 24 } } }, @@ -231166,23 +235769,23 @@ "postfix": false, "binop": null }, - "value": "gl", - "start": 50559, - "end": 50561, + "value": "colorTexture", + "start": 51515, + "end": 51527, "loc": { "start": { - "line": 1336, - "column": 38 + "line": 1356, + "column": 12 }, "end": { - "line": 1336, - "column": 40 + "line": 1356, + "column": 24 } } }, { "type": { - "label": ",", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -231193,16 +235796,16 @@ "binop": null, "updateContext": null }, - "start": 50561, - "end": 50562, + "start": 51527, + "end": 51528, "loc": { "start": { - "line": 1336, - "column": 40 + "line": 1356, + "column": 24 }, "end": { - "line": 1336, - "column": 41 + "line": 1356, + "column": 25 } } }, @@ -231218,23 +235821,23 @@ "postfix": false, "binop": null }, - "value": "preloadColor", - "start": 50579, - "end": 50591, + "value": "defaultColorTexture", + "start": 51529, + "end": 51548, "loc": { "start": { - "line": 1337, - "column": 16 + "line": 1356, + "column": 26 }, "end": { - "line": 1337, - "column": 28 + "line": 1356, + "column": 45 } } }, { "type": { - "label": ":", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -231245,48 +235848,22 @@ "binop": null, "updateContext": null }, - "start": 50591, - "end": 50592, - "loc": { - "start": { - "line": 1337, - "column": 28 - }, - "end": { - "line": 1337, - "column": 29 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 50593, - "end": 50594, + "start": 51548, + "end": 51549, "loc": { "start": { - "line": 1337, - "column": 30 + "line": 1356, + "column": 45 }, "end": { - "line": 1337, - "column": 31 + "line": 1356, + "column": 46 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -231294,26 +235871,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 50594, - "end": 50595, + "value": "metallicRoughnessTexture", + "start": 51562, + "end": 51586, "loc": { "start": { - "line": 1337, - "column": 31 + "line": 1357, + "column": 12 }, "end": { - "line": 1337, - "column": 32 + "line": 1357, + "column": 36 } } }, { "type": { - "label": ",", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -231324,22 +235900,22 @@ "binop": null, "updateContext": null }, - "start": 50595, - "end": 50596, + "start": 51586, + "end": 51587, "loc": { "start": { - "line": 1337, - "column": 32 + "line": 1357, + "column": 36 }, "end": { - "line": 1337, - "column": 33 + "line": 1357, + "column": 37 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -231347,20 +235923,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 50597, - "end": 50598, + "value": "defaultMetalRoughTexture", + "start": 51588, + "end": 51612, "loc": { "start": { - "line": 1337, - "column": 34 + "line": 1357, + "column": 38 }, "end": { - "line": 1337, - "column": 35 + "line": 1357, + "column": 62 } } }, @@ -231377,22 +235952,22 @@ "binop": null, "updateContext": null }, - "start": 50598, - "end": 50599, + "start": 51612, + "end": 51613, "loc": { "start": { - "line": 1337, - "column": 35 + "line": 1357, + "column": 62 }, "end": { - "line": 1337, - "column": 36 + "line": 1357, + "column": 63 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -231400,26 +235975,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 50600, - "end": 50601, + "value": "normalsTexture", + "start": 51626, + "end": 51640, "loc": { "start": { - "line": 1337, - "column": 37 + "line": 1358, + "column": 12 }, "end": { - "line": 1337, - "column": 38 + "line": 1358, + "column": 26 } } }, { "type": { - "label": ",", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -231430,22 +236004,22 @@ "binop": null, "updateContext": null }, - "start": 50601, - "end": 50602, + "start": 51640, + "end": 51641, "loc": { "start": { - "line": 1337, - "column": 38 + "line": 1358, + "column": 26 }, "end": { - "line": 1337, - "column": 39 + "line": 1358, + "column": 27 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -231453,27 +236027,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 50603, - "end": 50604, + "value": "defaultNormalsTexture", + "start": 51642, + "end": 51663, "loc": { "start": { - "line": 1337, - "column": 40 + "line": 1358, + "column": 28 }, "end": { - "line": 1337, - "column": 41 + "line": 1358, + "column": 49 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -231483,65 +236056,76 @@ "binop": null, "updateContext": null }, - "start": 50604, - "end": 50605, + "start": 51663, + "end": 51664, "loc": { "start": { - "line": 1337, - "column": 41 + "line": 1358, + "column": 49 }, "end": { - "line": 1337, - "column": 42 + "line": 1358, + "column": 50 } } }, { - "type": "CommentLine", - "value": " [x, y, z, unused]", - "start": 50606, - "end": 50626, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "emissiveTexture", + "start": 51677, + "end": 51692, "loc": { "start": { - "line": 1337, - "column": 43 + "line": 1359, + "column": 12 }, "end": { - "line": 1337, - "column": 63 + "line": 1359, + "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": 50639, - "end": 50640, + "start": 51692, + "end": 51693, "loc": { "start": { - "line": 1338, - "column": 12 + "line": 1359, + "column": 27 }, "end": { - "line": 1338, - "column": 13 + "line": 1359, + "column": 28 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -231549,49 +236133,51 @@ "postfix": false, "binop": null }, - "start": 50640, - "end": 50641, + "value": "defaultEmissiveTexture", + "start": 51694, + "end": 51716, "loc": { "start": { - "line": 1338, - "column": 13 + "line": 1359, + "column": 29 }, "end": { - "line": 1338, - "column": 14 + "line": 1359, + "column": 51 } } }, { "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": 50650, - "end": 50651, + "start": 51716, + "end": 51717, "loc": { "start": { - "line": 1339, - "column": 8 + "line": 1359, + "column": 51 }, "end": { - "line": 1339, - "column": 9 + "line": 1359, + "column": 52 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -231599,22 +236185,23 @@ "postfix": false, "binop": null }, - "start": 50651, - "end": 50652, + "value": "occlusionTexture", + "start": 51730, + "end": 51746, "loc": { "start": { - "line": 1339, - "column": 9 + "line": 1360, + "column": 12 }, "end": { - "line": 1339, - "column": 10 + "line": 1360, + "column": 28 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -231625,52 +236212,50 @@ "binop": null, "updateContext": null }, - "start": 50652, - "end": 50653, + "start": 51746, + "end": 51747, "loc": { "start": { - "line": 1339, - "column": 10 + "line": 1360, + "column": 28 }, "end": { - "line": 1339, - "column": 11 + "line": 1360, + "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": 50662, - "end": 50667, + "value": "defaultOcclusionTexture", + "start": 51748, + "end": 51771, "loc": { "start": { - "line": 1340, - "column": 8 + "line": 1360, + "column": 30 }, "end": { - "line": 1340, - "column": 13 + "line": 1360, + "column": 53 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -231678,53 +236263,49 @@ "postfix": false, "binop": null }, - "value": "defaultOcclusionTexture", - "start": 50668, - "end": 50691, + "start": 51780, + "end": 51781, "loc": { "start": { - "line": 1340, - "column": 14 + "line": 1361, + "column": 8 }, "end": { - "line": 1340, - "column": 37 + "line": 1361, + "column": 9 } } }, { "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": 50692, - "end": 50693, + "start": 51781, + "end": 51782, "loc": { "start": { - "line": 1340, - "column": 38 + "line": 1361, + "column": 9 }, "end": { - "line": 1340, - "column": 39 + "line": 1361, + "column": 10 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -231733,25 +236314,24 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 50694, - "end": 50697, + "start": 51782, + "end": 51783, "loc": { "start": { - "line": 1340, - "column": 40 + "line": 1361, + "column": 10 }, "end": { - "line": 1340, - "column": 43 + "line": 1361, + "column": 11 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -231759,119 +236339,80 @@ "postfix": false, "binop": null }, - "value": "SceneModelTexture", - "start": 50698, - "end": 50715, + "start": 51788, + "end": 51789, "loc": { "start": { - "line": 1340, - "column": 44 + "line": 1362, + "column": 4 }, "end": { - "line": 1340, - "column": 61 + "line": 1362, + "column": 5 } } }, { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 50715, - "end": 50716, + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 51795, + "end": 51911, "loc": { "start": { - "line": 1340, - "column": 61 + "line": 1364, + "column": 4 }, "end": { - "line": 1340, - "column": 62 + "line": 1364, + "column": 120 } } }, { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 50716, - "end": 50717, + "type": "CommentLine", + "value": " SceneModel members", + "start": 51916, + "end": 51937, "loc": { "start": { - "line": 1340, - "column": 62 + "line": 1365, + "column": 4 }, "end": { - "line": 1340, - "column": 63 + "line": 1365, + "column": 25 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "id", - "start": 50730, - "end": 50732, + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 51942, + "end": 52058, "loc": { "start": { - "line": 1341, - "column": 12 + "line": 1366, + "column": 4 }, "end": { - "line": 1341, - "column": 14 + "line": 1366, + "column": 120 } } }, { - "type": { - "label": ":", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 50732, - "end": 50733, + "type": "CommentBlock", + "value": "*\n * Returns true to indicate that this Component is a SceneModel.\n * @type {Boolean}\n ", + "start": 52064, + "end": 52167, "loc": { "start": { - "line": 1341, - "column": 14 + "line": 1368, + "column": 4 }, "end": { - "line": 1341, - "column": 15 + "line": 1371, + "column": 7 } } }, @@ -231887,50 +236428,50 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_OCCLUSION_TEXTURE_ID", - "start": 50734, - "end": 50762, + "value": "get", + "start": 52172, + "end": 52175, "loc": { "start": { - "line": 1341, - "column": 16 + "line": 1372, + "column": 4 }, "end": { - "line": 1341, - "column": 44 + "line": 1372, + "column": 7 } } }, { "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": 50762, - "end": 50763, + "value": "isPerformanceModel", + "start": 52176, + "end": 52194, "loc": { "start": { - "line": 1341, - "column": 44 + "line": 1372, + "column": 8 }, "end": { - "line": 1341, - "column": 45 + "line": 1372, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -231939,50 +236480,47 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 50776, - "end": 50783, + "start": 52194, + "end": 52195, "loc": { "start": { - "line": 1342, - "column": 12 + "line": 1372, + "column": 26 }, "end": { - "line": 1342, - "column": 19 + "line": 1372, + "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": 50783, - "end": 50784, + "start": 52195, + "end": 52196, "loc": { "start": { - "line": 1342, - "column": 19 + "line": 1372, + "column": 27 }, "end": { - "line": 1342, - "column": 20 + "line": 1372, + "column": 28 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -231990,104 +236528,108 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "new", - "start": 50785, - "end": 50788, + "start": 52197, + "end": 52198, "loc": { "start": { - "line": 1342, - "column": 21 + "line": 1372, + "column": 29 }, "end": { - "line": 1342, - "column": 24 + "line": 1372, + "column": 30 } } }, { "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": "Texture2D", - "start": 50789, - "end": 50798, + "value": "return", + "start": 52207, + "end": 52213, "loc": { "start": { - "line": 1342, - "column": 25 + "line": 1373, + "column": 8 }, "end": { - "line": 1342, - "column": 34 + "line": 1373, + "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": 50798, - "end": 50799, + "value": "true", + "start": 52214, + "end": 52218, "loc": { "start": { - "line": 1342, - "column": 34 + "line": 1373, + "column": 15 }, "end": { - "line": 1342, - "column": 35 + "line": 1373, + "column": 19 } } }, { "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": 50799, - "end": 50800, + "start": 52218, + "end": 52219, "loc": { "start": { - "line": 1342, - "column": 35 + "line": 1373, + "column": 19 }, "end": { - "line": 1342, - "column": 36 + "line": 1373, + "column": 20 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -232095,50 +236637,38 @@ "postfix": false, "binop": null }, - "value": "gl", - "start": 50817, - "end": 50819, + "start": 52224, + "end": 52225, "loc": { "start": { - "line": 1343, - "column": 16 + "line": 1374, + "column": 4 }, "end": { - "line": 1343, - "column": 18 + "line": 1374, + "column": 5 } } }, { - "type": { - "label": ":", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 50819, - "end": 50820, + "type": "CommentBlock", + "value": "*\n * The {@link SceneModelTransform}s in this SceneModel.\n *\n * Each {#link SceneModelTransform} is stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", + "start": 52231, + "end": 52438, "loc": { "start": { - "line": 1343, - "column": 18 + "line": 1376, + "column": 4 }, "end": { - "line": 1343, - "column": 19 + "line": 1382, + "column": 7 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -232146,53 +236676,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 50821, - "end": 50825, + "value": "get", + "start": 52443, + "end": 52446, "loc": { "start": { - "line": 1343, - "column": 20 + "line": 1383, + "column": 4 }, "end": { - "line": 1343, - "column": 24 + "line": 1383, + "column": 7 } } }, { "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": 50825, - "end": 50826, + "value": "transforms", + "start": 52447, + "end": 52457, "loc": { "start": { - "line": 1343, - "column": 24 + "line": 1383, + "column": 8 }, "end": { - "line": 1343, - "column": 25 + "line": 1383, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -232201,23 +236730,22 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 50826, - "end": 50831, + "start": 52457, + "end": 52458, "loc": { "start": { - "line": 1343, - "column": 25 + "line": 1383, + "column": 18 }, "end": { - "line": 1343, - "column": 30 + "line": 1383, + "column": 19 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -232225,26 +236753,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 50831, - "end": 50832, + "start": 52458, + "end": 52459, "loc": { "start": { - "line": 1343, - "column": 30 + "line": 1383, + "column": 19 }, "end": { - "line": 1343, - "column": 31 + "line": 1383, + "column": 20 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -232253,24 +236780,24 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 50832, - "end": 50838, + "start": 52460, + "end": 52461, "loc": { "start": { - "line": 1343, - "column": 31 + "line": 1383, + "column": 21 }, "end": { - "line": 1343, - "column": 37 + "line": 1383, + "column": 22 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -232280,22 +236807,24 @@ "binop": null, "updateContext": null }, - "start": 50838, - "end": 50839, + "value": "return", + "start": 52470, + "end": 52476, "loc": { "start": { - "line": 1343, - "column": 37 + "line": 1384, + "column": 8 }, "end": { - "line": 1343, - "column": 38 + "line": 1384, + "column": 14 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -232303,26 +236832,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "gl", - "start": 50839, - "end": 50841, + "value": "this", + "start": 52477, + "end": 52481, "loc": { "start": { - "line": 1343, - "column": 38 + "line": 1384, + "column": 15 }, "end": { - "line": 1343, - "column": 40 + "line": 1384, + "column": 19 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -232332,16 +236862,16 @@ "binop": null, "updateContext": null }, - "start": 50841, - "end": 50842, + "start": 52481, + "end": 52482, "loc": { "start": { - "line": 1343, - "column": 40 + "line": 1384, + "column": 19 }, "end": { - "line": 1343, - "column": 41 + "line": 1384, + "column": 20 } } }, @@ -232357,23 +236887,23 @@ "postfix": false, "binop": null }, - "value": "preloadColor", - "start": 50859, - "end": 50871, + "value": "_transforms", + "start": 52482, + "end": 52493, "loc": { "start": { - "line": 1344, - "column": 16 + "line": 1384, + "column": 20 }, "end": { - "line": 1344, - "column": 28 + "line": 1384, + "column": 31 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -232384,48 +236914,63 @@ "binop": null, "updateContext": null }, - "start": 50871, - "end": 50872, + "start": 52493, + "end": 52494, "loc": { "start": { - "line": 1344, - "column": 28 + "line": 1384, + "column": 31 }, "end": { - "line": 1344, - "column": 29 + "line": 1384, + "column": 32 } } }, { "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": 50873, - "end": 50874, + "start": 52499, + "end": 52500, "loc": { "start": { - "line": 1344, - "column": 30 + "line": 1385, + "column": 4 }, "end": { - "line": 1344, - "column": 31 + "line": 1385, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * The {@link SceneModelTexture}s in this SceneModel.\n *\n * * Each {@link SceneModelTexture} is created with {@link SceneModel.createTexture}.\n * * Each {@link SceneModelTexture} is stored here against its {@link SceneModelTexture.id}.\n *\n * @returns {*|{}}\n ", + "start": 52506, + "end": 52799, + "loc": { + "start": { + "line": 1387, + "column": 4 + }, + "end": { + "line": 1394, + "column": 7 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -232433,132 +236978,127 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 50874, - "end": 50875, + "value": "get", + "start": 52804, + "end": 52807, "loc": { "start": { - "line": 1344, - "column": 31 + "line": 1395, + "column": 4 }, "end": { - "line": 1344, - "column": 32 + "line": 1395, + "column": 7 } } }, { "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": 50875, - "end": 50876, + "value": "textures", + "start": 52808, + "end": 52816, "loc": { "start": { - "line": 1344, - "column": 32 + "line": 1395, + "column": 8 }, "end": { - "line": 1344, - "column": 33 + "line": 1395, + "column": 16 } } }, { "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": 50877, - "end": 50878, + "start": 52816, + "end": 52817, "loc": { "start": { - "line": 1344, - "column": 34 + "line": 1395, + "column": 16 }, "end": { - "line": 1344, - "column": 35 + "line": 1395, + "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": 50878, - "end": 50879, + "start": 52817, + "end": 52818, "loc": { "start": { - "line": 1344, - "column": 35 + "line": 1395, + "column": 17 }, "end": { - "line": 1344, - "column": 36 + "line": 1395, + "column": 18 } } }, { "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": 50880, - "end": 50881, + "start": 52819, + "end": 52820, "loc": { "start": { - "line": 1344, - "column": 37 + "line": 1395, + "column": 19 }, "end": { - "line": 1344, - "column": 38 + "line": 1395, + "column": 20 } } }, { "type": { - "label": ",", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -232569,22 +237109,24 @@ "binop": null, "updateContext": null }, - "start": 50881, - "end": 50882, + "value": "return", + "start": 52829, + "end": 52835, "loc": { "start": { - "line": 1344, - "column": 38 + "line": 1396, + "column": 8 }, "end": { - "line": 1344, - "column": 39 + "line": 1396, + "column": 14 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -232595,23 +237137,23 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 50883, - "end": 50884, + "value": "this", + "start": 52836, + "end": 52840, "loc": { "start": { - "line": 1344, - "column": 40 + "line": 1396, + "column": 15 }, "end": { - "line": 1344, - "column": 41 + "line": 1396, + "column": 19 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -232622,40 +237164,24 @@ "binop": null, "updateContext": null }, - "start": 50884, - "end": 50885, - "loc": { - "start": { - "line": 1344, - "column": 41 - }, - "end": { - "line": 1344, - "column": 42 - } - } - }, - { - "type": "CommentLine", - "value": " [x, y, z, unused]", - "start": 50886, - "end": 50906, + "start": 52840, + "end": 52841, "loc": { "start": { - "line": 1344, - "column": 43 + "line": 1396, + "column": 19 }, "end": { - "line": 1344, - "column": 63 + "line": 1396, + "column": 20 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -232663,41 +237189,43 @@ "postfix": false, "binop": null }, - "start": 50919, - "end": 50920, + "value": "_textures", + "start": 52841, + "end": 52850, "loc": { "start": { - "line": 1345, - "column": 12 + "line": 1396, + "column": 20 }, "end": { - "line": 1345, - "column": 13 + "line": 1396, + "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": 50920, - "end": 50921, + "start": 52850, + "end": 52851, "loc": { "start": { - "line": 1345, - "column": 13 + "line": 1396, + "column": 29 }, "end": { - "line": 1345, - "column": 14 + "line": 1396, + "column": 30 } } }, @@ -232713,74 +237241,64 @@ "postfix": false, "binop": null }, - "start": 50930, - "end": 50931, + "start": 52856, + "end": 52857, "loc": { "start": { - "line": 1346, - "column": 8 + "line": 1397, + "column": 4 }, "end": { - "line": 1346, - "column": 9 + "line": 1397, + "column": 5 } } }, { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 50931, - "end": 50932, + "type": "CommentBlock", + "value": "*\n * The {@link SceneModelTextureSet}s in this SceneModel.\n *\n * Each {@link SceneModelTextureSet} is stored here against its {@link SceneModelTextureSet.id}.\n *\n * @returns {*|{}}\n ", + "start": 52863, + "end": 53073, "loc": { "start": { - "line": 1346, - "column": 9 + "line": 1399, + "column": 4 }, "end": { - "line": 1346, - "column": 10 + "line": 1405, + "column": 7 } } }, { "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": 50932, - "end": 50933, + "value": "get", + "start": 53078, + "end": 53081, "loc": { "start": { - "line": 1346, - "column": 10 + "line": 1406, + "column": 4 }, "end": { - "line": 1346, - "column": 11 + "line": 1406, + "column": 7 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -232788,54 +237306,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 50942, - "end": 50946, + "value": "textureSets", + "start": 53082, + "end": 53093, "loc": { "start": { - "line": 1347, + "line": 1406, "column": 8 }, "end": { - "line": 1347, - "column": 12 + "line": 1406, + "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": 50946, - "end": 50947, + "start": 53093, + "end": 53094, "loc": { "start": { - "line": 1347, - "column": 12 + "line": 1406, + "column": 19 }, "end": { - "line": 1347, - "column": 13 + "line": 1406, + "column": 20 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -232843,23 +237359,22 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 50947, - "end": 50956, + "start": 53094, + "end": 53095, "loc": { "start": { - "line": 1347, - "column": 13 + "line": 1406, + "column": 20 }, "end": { - "line": 1347, - "column": 22 + "line": 1406, + "column": 21 } } }, { "type": { - "label": "[", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -232867,53 +237382,55 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 50956, - "end": 50957, + "start": 53096, + "end": 53097, "loc": { "start": { - "line": 1347, + "line": 1406, "column": 22 }, "end": { - "line": 1347, + "line": 1406, "column": 23 } } }, { "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": "DEFAULT_COLOR_TEXTURE_ID", - "start": 50957, - "end": 50981, + "value": "return", + "start": 53106, + "end": 53112, "loc": { "start": { - "line": 1347, - "column": 23 + "line": 1407, + "column": 8 }, "end": { - "line": 1347, - "column": 47 + "line": 1407, + "column": 14 } } }, { "type": { - "label": "]", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -232922,43 +237439,43 @@ "binop": null, "updateContext": null }, - "start": 50981, - "end": 50982, + "value": "this", + "start": 53113, + "end": 53117, "loc": { "start": { - "line": 1347, - "column": 47 + "line": 1407, + "column": 15 }, "end": { - "line": 1347, - "column": 48 + "line": 1407, + "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": 50983, - "end": 50984, + "start": 53117, + "end": 53118, "loc": { "start": { - "line": 1347, - "column": 49 + "line": 1407, + "column": 19 }, "end": { - "line": 1347, - "column": 50 + "line": 1407, + "column": 20 } } }, @@ -232974,17 +237491,17 @@ "postfix": false, "binop": null }, - "value": "defaultColorTexture", - "start": 50985, - "end": 51004, + "value": "_textureSets", + "start": 53118, + "end": 53130, "loc": { "start": { - "line": 1347, - "column": 51 + "line": 1407, + "column": 20 }, "end": { - "line": 1347, - "column": 70 + "line": 1407, + "column": 32 } } }, @@ -233001,70 +237518,57 @@ "binop": null, "updateContext": null }, - "start": 51004, - "end": 51005, + "start": 53130, + "end": 53131, "loc": { "start": { - "line": 1347, - "column": 70 + "line": 1407, + "column": 32 }, "end": { - "line": 1347, - "column": 71 + "line": 1407, + "column": 33 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 51014, - "end": 51018, + "start": 53136, + "end": 53137, "loc": { "start": { - "line": 1348, - "column": 8 + "line": 1408, + "column": 4 }, "end": { - "line": 1348, - "column": 12 + "line": 1408, + "column": 5 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 51018, - "end": 51019, + "type": "CommentBlock", + "value": "*\n * The {@link SceneModelMesh}es in this SceneModel.\n *\n * Each {@SceneModelMesh} is stored here against its {@link SceneModelMesh.id}.\n *\n * @returns {*|{}}\n ", + "start": 53143, + "end": 53331, "loc": { "start": { - "line": 1348, - "column": 12 + "line": 1410, + "column": 4 }, "end": { - "line": 1348, - "column": 13 + "line": 1416, + "column": 7 } } }, @@ -233080,50 +237584,50 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 51019, - "end": 51028, + "value": "get", + "start": 53336, + "end": 53339, "loc": { "start": { - "line": 1348, - "column": 13 + "line": 1417, + "column": 4 }, "end": { - "line": 1348, - "column": 22 + "line": 1417, + "column": 7 } } }, { "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": 51028, - "end": 51029, + "value": "meshes", + "start": 53340, + "end": 53346, "loc": { "start": { - "line": 1348, - "column": 22 + "line": 1417, + "column": 8 }, "end": { - "line": 1348, - "column": 23 + "line": 1417, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -233132,23 +237636,22 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_METAL_ROUGH_TEXTURE_ID", - "start": 51029, - "end": 51059, + "start": 53346, + "end": 53347, "loc": { "start": { - "line": 1348, - "column": 23 + "line": 1417, + "column": 14 }, "end": { - "line": 1348, - "column": 53 + "line": 1417, + "column": 15 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -233156,53 +237659,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 51059, - "end": 51060, + "start": 53347, + "end": 53348, "loc": { "start": { - "line": 1348, - "column": 53 + "line": 1417, + "column": 15 }, "end": { - "line": 1348, - "column": 54 + "line": 1417, + "column": 16 } } }, { "type": { - "label": "=", + "label": "{", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 51061, - "end": 51062, - "loc": { - "start": { - "line": 1348, - "column": 55 - }, - "end": { - "line": 1348, - "column": 56 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -233211,23 +237686,23 @@ "postfix": false, "binop": null }, - "value": "defaultMetalRoughTexture", - "start": 51063, - "end": 51087, + "start": 53349, + "end": 53350, "loc": { "start": { - "line": 1348, - "column": 57 + "line": 1417, + "column": 17 }, "end": { - "line": 1348, - "column": 81 + "line": 1417, + "column": 18 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -233238,16 +237713,17 @@ "binop": null, "updateContext": null }, - "start": 51087, - "end": 51088, + "value": "return", + "start": 53359, + "end": 53365, "loc": { "start": { - "line": 1348, - "column": 81 + "line": 1418, + "column": 8 }, "end": { - "line": 1348, - "column": 82 + "line": 1418, + "column": 14 } } }, @@ -233266,16 +237742,16 @@ "updateContext": null }, "value": "this", - "start": 51097, - "end": 51101, + "start": 53366, + "end": 53370, "loc": { "start": { - "line": 1349, - "column": 8 + "line": 1418, + "column": 15 }, "end": { - "line": 1349, - "column": 12 + "line": 1418, + "column": 19 } } }, @@ -233292,16 +237768,16 @@ "binop": null, "updateContext": null }, - "start": 51101, - "end": 51102, + "start": 53370, + "end": 53371, "loc": { "start": { - "line": 1349, - "column": 12 + "line": 1418, + "column": 19 }, "end": { - "line": 1349, - "column": 13 + "line": 1418, + "column": 20 } } }, @@ -233317,25 +237793,25 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 51102, - "end": 51111, + "value": "_meshes", + "start": 53371, + "end": 53378, "loc": { "start": { - "line": 1349, - "column": 13 + "line": 1418, + "column": 20 }, "end": { - "line": 1349, - "column": 22 + "line": 1418, + "column": 27 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -233344,24 +237820,24 @@ "binop": null, "updateContext": null }, - "start": 51111, - "end": 51112, + "start": 53378, + "end": 53379, "loc": { "start": { - "line": 1349, - "column": 22 + "line": 1418, + "column": 27 }, "end": { - "line": 1349, - "column": 23 + "line": 1418, + "column": 28 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -233369,77 +237845,91 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_NORMALS_TEXTURE_ID", - "start": 51112, - "end": 51138, + "start": 53384, + "end": 53385, "loc": { "start": { - "line": 1349, - "column": 23 + "line": 1419, + "column": 4 }, "end": { - "line": 1349, - "column": 49 + "line": 1419, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * The {@link SceneModelEntity}s in this SceneModel.\n *\n * Each {#link SceneModelEntity} in this SceneModel that represents an object is\n * stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", + "start": 53391, + "end": 53644, + "loc": { + "start": { + "line": 1421, + "column": 4 + }, + "end": { + "line": 1428, + "column": 7 } } }, { "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": 51138, - "end": 51139, + "value": "get", + "start": 53649, + "end": 53652, "loc": { "start": { - "line": 1349, - "column": 49 + "line": 1429, + "column": 4 }, "end": { - "line": 1349, - "column": 50 + "line": 1429, + "column": 7 } } }, { "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": 51140, - "end": 51141, + "value": "objects", + "start": 53653, + "end": 53660, "loc": { "start": { - "line": 1349, - "column": 51 + "line": 1429, + "column": 8 }, "end": { - "line": 1349, - "column": 52 + "line": 1429, + "column": 15 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -233448,78 +237938,74 @@ "postfix": false, "binop": null }, - "value": "defaultNormalsTexture", - "start": 51142, - "end": 51163, + "start": 53660, + "end": 53661, "loc": { "start": { - "line": 1349, - "column": 53 + "line": 1429, + "column": 15 }, "end": { - "line": 1349, - "column": 74 + "line": 1429, + "column": 16 } } }, { "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": 51163, - "end": 51164, + "start": 53661, + "end": 53662, "loc": { "start": { - "line": 1349, - "column": 74 + "line": 1429, + "column": 16 }, "end": { - "line": 1349, - "column": 75 + "line": 1429, + "column": 17 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 51173, - "end": 51177, + "start": 53663, + "end": 53664, "loc": { "start": { - "line": 1350, - "column": 8 + "line": 1429, + "column": 18 }, "end": { - "line": 1350, - "column": 12 + "line": 1429, + "column": 19 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -233529,22 +238015,24 @@ "binop": null, "updateContext": null }, - "start": 51177, - "end": 51178, + "value": "return", + "start": 53673, + "end": 53679, "loc": { "start": { - "line": 1350, - "column": 12 + "line": 1430, + "column": 8 }, "end": { - "line": 1350, - "column": 13 + "line": 1430, + "column": 14 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -233552,27 +238040,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_textures", - "start": 51178, - "end": 51187, + "value": "this", + "start": 53680, + "end": 53684, "loc": { "start": { - "line": 1350, - "column": 13 + "line": 1430, + "column": 15 }, "end": { - "line": 1350, - "column": 22 + "line": 1430, + "column": 19 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -233581,16 +238070,16 @@ "binop": null, "updateContext": null }, - "start": 51187, - "end": 51188, + "start": 53684, + "end": 53685, "loc": { "start": { - "line": 1350, - "column": 22 + "line": 1430, + "column": 19 }, "end": { - "line": 1350, - "column": 23 + "line": 1430, + "column": 20 } } }, @@ -233606,24 +238095,24 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_EMISSIVE_TEXTURE_ID", - "start": 51188, - "end": 51215, + "value": "_entities", + "start": 53685, + "end": 53694, "loc": { "start": { - "line": 1350, - "column": 23 + "line": 1430, + "column": 20 }, "end": { - "line": 1350, - "column": 50 + "line": 1430, + "column": 29 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -233633,102 +238122,89 @@ "binop": null, "updateContext": null }, - "start": 51215, - "end": 51216, + "start": 53694, + "end": 53695, "loc": { "start": { - "line": 1350, - "column": 50 + "line": 1430, + "column": 29 }, "end": { - "line": 1350, - "column": 51 + "line": 1430, + "column": 30 } } }, { "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": 51217, - "end": 51218, + "start": 53700, + "end": 53701, "loc": { "start": { - "line": 1350, - "column": 52 + "line": 1431, + "column": 4 }, "end": { - "line": 1350, - "column": 53 + "line": 1431, + "column": 5 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "defaultEmissiveTexture", - "start": 51219, - "end": 51241, + "type": "CommentBlock", + "value": "*\n * Gets the 3D World-space origin for this SceneModel.\n *\n * Each {@link SceneModelMesh.origin}, if supplied, is relative to this origin.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Float64Array}\n ", + "start": 53707, + "end": 53951, "loc": { "start": { - "line": 1350, - "column": 54 + "line": 1433, + "column": 4 }, "end": { - "line": 1350, - "column": 76 + "line": 1441, + "column": 7 } } }, { "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": 51241, - "end": 51242, + "value": "get", + "start": 53956, + "end": 53959, "loc": { "start": { - "line": 1350, - "column": 76 + "line": 1442, + "column": 4 }, "end": { - "line": 1350, - "column": 77 + "line": 1442, + "column": 7 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -233736,54 +238212,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 51251, - "end": 51255, + "value": "origin", + "start": 53960, + "end": 53966, "loc": { "start": { - "line": 1351, + "line": 1442, "column": 8 }, "end": { - "line": 1351, - "column": 12 + "line": 1442, + "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": 51255, - "end": 51256, + "start": 53966, + "end": 53967, "loc": { "start": { - "line": 1351, - "column": 12 + "line": 1442, + "column": 14 }, "end": { - "line": 1351, - "column": 13 + "line": 1442, + "column": 15 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -233791,23 +238265,22 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 51256, - "end": 51265, + "start": 53967, + "end": 53968, "loc": { "start": { - "line": 1351, - "column": 13 + "line": 1442, + "column": 15 }, "end": { - "line": 1351, - "column": 22 + "line": 1442, + "column": 16 } } }, { "type": { - "label": "[", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -233815,53 +238288,55 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 51265, - "end": 51266, + "start": 53969, + "end": 53970, "loc": { "start": { - "line": 1351, - "column": 22 + "line": 1442, + "column": 17 }, "end": { - "line": 1351, - "column": 23 + "line": 1442, + "column": 18 } } }, { "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": "DEFAULT_OCCLUSION_TEXTURE_ID", - "start": 51266, - "end": 51294, + "value": "return", + "start": 53979, + "end": 53985, "loc": { "start": { - "line": 1351, - "column": 23 + "line": 1443, + "column": 8 }, "end": { - "line": 1351, - "column": 51 + "line": 1443, + "column": 14 } } }, { "type": { - "label": "]", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -233870,43 +238345,43 @@ "binop": null, "updateContext": null }, - "start": 51294, - "end": 51295, + "value": "this", + "start": 53986, + "end": 53990, "loc": { "start": { - "line": 1351, - "column": 51 + "line": 1443, + "column": 15 }, "end": { - "line": 1351, - "column": 52 + "line": 1443, + "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": 51296, - "end": 51297, + "start": 53990, + "end": 53991, "loc": { "start": { - "line": 1351, - "column": 53 + "line": 1443, + "column": 19 }, "end": { - "line": 1351, - "column": 54 + "line": 1443, + "column": 20 } } }, @@ -233922,17 +238397,17 @@ "postfix": false, "binop": null }, - "value": "defaultOcclusionTexture", - "start": 51298, - "end": 51321, + "value": "_origin", + "start": 53991, + "end": 53998, "loc": { "start": { - "line": 1351, - "column": 55 + "line": 1443, + "column": 20 }, "end": { - "line": 1351, - "column": 78 + "line": 1443, + "column": 27 } } }, @@ -233949,70 +238424,83 @@ "binop": null, "updateContext": null }, - "start": 51321, - "end": 51322, + "start": 53998, + "end": 53999, "loc": { "start": { - "line": 1351, - "column": 78 + "line": 1443, + "column": 27 }, "end": { - "line": 1351, - "column": 79 + "line": 1443, + "column": 28 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 51331, - "end": 51335, + "start": 54004, + "end": 54005, "loc": { "start": { - "line": 1352, - "column": 8 + "line": 1444, + "column": 4 }, "end": { - "line": 1352, - "column": 12 + "line": 1444, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Sets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", + "start": 54011, + "end": 54149, + "loc": { + "start": { + "line": 1446, + "column": 4 + }, + "end": { + "line": 1452, + "column": 7 } } }, { "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": 51335, - "end": 51336, + "value": "set", + "start": 54154, + "end": 54157, "loc": { "start": { - "line": 1352, - "column": 12 + "line": 1453, + "column": 4 }, "end": { - "line": 1352, - "column": 13 + "line": 1453, + "column": 7 } } }, @@ -234028,23 +238516,23 @@ "postfix": false, "binop": null }, - "value": "_textureSets", - "start": 51336, - "end": 51348, + "value": "position", + "start": 54158, + "end": 54166, "loc": { "start": { - "line": 1352, - "column": 13 + "line": 1453, + "column": 8 }, "end": { - "line": 1352, - "column": 25 + "line": 1453, + "column": 16 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -234052,19 +238540,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 51348, - "end": 51349, + "start": 54166, + "end": 54167, "loc": { "start": { - "line": 1352, - "column": 25 + "line": 1453, + "column": 16 }, "end": { - "line": 1352, - "column": 26 + "line": 1453, + "column": 17 } } }, @@ -234080,23 +238567,23 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_TEXTURE_SET_ID", - "start": 51349, - "end": 51371, + "value": "value", + "start": 54167, + "end": 54172, "loc": { "start": { - "line": 1352, - "column": 26 + "line": 1453, + "column": 17 }, "end": { - "line": 1352, - "column": 48 + "line": 1453, + "column": 22 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -234104,54 +238591,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 51371, - "end": 51372, + "start": 54172, + "end": 54173, "loc": { "start": { - "line": 1352, - "column": 48 + "line": 1453, + "column": 22 }, "end": { - "line": 1352, - "column": 49 + "line": 1453, + "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": 51373, - "end": 51374, + "start": 54174, + "end": 54175, "loc": { "start": { - "line": 1352, - "column": 50 + "line": 1453, + "column": 24 }, "end": { - "line": 1352, - "column": 51 + "line": 1453, + "column": 25 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -234161,50 +238645,50 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 51375, - "end": 51378, + "value": "this", + "start": 54184, + "end": 54188, "loc": { "start": { - "line": 1352, - "column": 52 + "line": 1454, + "column": 8 }, "end": { - "line": 1352, - "column": 55 + "line": 1454, + "column": 12 } } }, { "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": "SceneModelTextureSet", - "start": 51379, - "end": 51399, + "start": 54188, + "end": 54189, "loc": { "start": { - "line": 1352, - "column": 56 + "line": 1454, + "column": 12 }, "end": { - "line": 1352, - "column": 76 + "line": 1454, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -234213,41 +238697,43 @@ "postfix": false, "binop": null }, - "start": 51399, - "end": 51400, + "value": "_position", + "start": 54189, + "end": 54198, "loc": { "start": { - "line": 1352, - "column": 76 + "line": 1454, + "column": 13 }, "end": { - "line": 1352, - "column": 77 + "line": 1454, + "column": 22 } } }, { "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": 51400, - "end": 51401, + "start": 54198, + "end": 54199, "loc": { "start": { - "line": 1352, - "column": 77 + "line": 1454, + "column": 22 }, "end": { - "line": 1352, - "column": 78 + "line": 1454, + "column": 23 } } }, @@ -234263,43 +238749,42 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 51414, - "end": 51416, + "value": "set", + "start": 54199, + "end": 54202, "loc": { "start": { - "line": 1353, - "column": 12 + "line": 1454, + "column": 23 }, "end": { - "line": 1353, - "column": 14 + "line": 1454, + "column": 26 } } }, { "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": 51416, - "end": 51417, + "start": 54202, + "end": 54203, "loc": { "start": { - "line": 1353, - "column": 14 + "line": 1454, + "column": 26 }, "end": { - "line": 1353, - "column": 15 + "line": 1454, + "column": 27 } } }, @@ -234315,23 +238800,23 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_TEXTURE_SET_ID", - "start": 51418, - "end": 51440, + "value": "value", + "start": 54203, + "end": 54208, "loc": { "start": { - "line": 1353, - "column": 16 + "line": 1454, + "column": 27 }, "end": { - "line": 1353, - "column": 38 + "line": 1454, + "column": 32 } } }, { "type": { - "label": ",", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -234339,25 +238824,52 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": 1, + "updateContext": null + }, + "value": "||", + "start": 54209, + "end": 54211, + "loc": { + "start": { + "line": 1454, + "column": 33 + }, + "end": { + "line": 1454, + "column": 35 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 51440, - "end": 51441, + "start": 54212, + "end": 54213, "loc": { "start": { - "line": 1353, - "column": 38 + "line": 1454, + "column": 36 }, "end": { - "line": 1353, - "column": 39 + "line": 1454, + "column": 37 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -234365,25 +238877,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "model", - "start": 51454, - "end": 51459, + "value": 0, + "start": 54213, + "end": 54214, "loc": { "start": { - "line": 1354, - "column": 12 + "line": 1454, + "column": 37 }, "end": { - "line": 1354, - "column": 17 + "line": 1454, + "column": 38 } } }, { "type": { - "label": ":", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -234394,23 +238907,22 @@ "binop": null, "updateContext": null }, - "start": 51459, - "end": 51460, + "start": 54214, + "end": 54215, "loc": { "start": { - "line": 1354, - "column": 17 + "line": 1454, + "column": 38 }, "end": { - "line": 1354, - "column": 18 + "line": 1454, + "column": 39 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -234421,17 +238933,17 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 51461, - "end": 51465, + "value": 0, + "start": 54216, + "end": 54217, "loc": { "start": { - "line": 1354, - "column": 19 + "line": 1454, + "column": 40 }, "end": { - "line": 1354, - "column": 23 + "line": 1454, + "column": 41 } } }, @@ -234448,22 +238960,22 @@ "binop": null, "updateContext": null }, - "start": 51465, - "end": 51466, + "start": 54217, + "end": 54218, "loc": { "start": { - "line": 1354, - "column": 23 + "line": 1454, + "column": 41 }, "end": { - "line": 1354, - "column": 24 + "line": 1454, + "column": 42 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -234471,26 +238983,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "colorTexture", - "start": 51479, - "end": 51491, + "value": 0, + "start": 54219, + "end": 54220, "loc": { "start": { - "line": 1355, - "column": 12 + "line": 1454, + "column": 43 }, "end": { - "line": 1355, - "column": 24 + "line": 1454, + "column": 44 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -234500,24 +239013,24 @@ "binop": null, "updateContext": null }, - "start": 51491, - "end": 51492, + "start": 54220, + "end": 54221, "loc": { "start": { - "line": 1355, - "column": 24 + "line": 1454, + "column": 44 }, "end": { - "line": 1355, - "column": 25 + "line": 1454, + "column": 45 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -234525,23 +239038,22 @@ "postfix": false, "binop": null }, - "value": "defaultColorTexture", - "start": 51493, - "end": 51512, + "start": 54221, + "end": 54222, "loc": { "start": { - "line": 1355, - "column": 26 + "line": 1454, + "column": 45 }, "end": { - "line": 1355, - "column": 45 + "line": 1454, + "column": 46 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -234552,22 +239064,23 @@ "binop": null, "updateContext": null }, - "start": 51512, - "end": 51513, + "start": 54222, + "end": 54223, "loc": { "start": { - "line": 1355, - "column": 45 + "line": 1454, + "column": 46 }, "end": { - "line": 1355, - "column": 46 + "line": 1454, + "column": 47 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -234575,26 +239088,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "metallicRoughnessTexture", - "start": 51526, - "end": 51550, + "value": "this", + "start": 54232, + "end": 54236, "loc": { "start": { - "line": 1356, - "column": 12 + "line": 1455, + "column": 8 }, "end": { - "line": 1356, - "column": 36 + "line": 1455, + "column": 12 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -234604,16 +239118,16 @@ "binop": null, "updateContext": null }, - "start": 51550, - "end": 51551, + "start": 54236, + "end": 54237, "loc": { "start": { - "line": 1356, - "column": 36 + "line": 1455, + "column": 12 }, "end": { - "line": 1356, - "column": 37 + "line": 1455, + "column": 13 } } }, @@ -234629,51 +239143,50 @@ "postfix": false, "binop": null }, - "value": "defaultMetalRoughTexture", - "start": 51552, - "end": 51576, + "value": "_setWorldMatrixDirty", + "start": 54237, + "end": 54257, "loc": { "start": { - "line": 1356, - "column": 38 + "line": 1455, + "column": 13 }, "end": { - "line": 1356, - "column": 62 + "line": 1455, + "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": 51576, - "end": 51577, + "start": 54257, + "end": 54258, "loc": { "start": { - "line": 1356, - "column": 62 + "line": 1455, + "column": 33 }, "end": { - "line": 1356, - "column": 63 + "line": 1455, + "column": 34 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -234681,23 +239194,22 @@ "postfix": false, "binop": null }, - "value": "normalsTexture", - "start": 51590, - "end": 51604, + "start": 54258, + "end": 54259, "loc": { "start": { - "line": 1357, - "column": 12 + "line": 1455, + "column": 34 }, "end": { - "line": 1357, - "column": 26 + "line": 1455, + "column": 35 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -234708,22 +239220,23 @@ "binop": null, "updateContext": null }, - "start": 51604, - "end": 51605, + "start": 54259, + "end": 54260, "loc": { "start": { - "line": 1357, - "column": 26 + "line": 1455, + "column": 35 }, "end": { - "line": 1357, - "column": 27 + "line": 1455, + "column": 36 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -234731,26 +239244,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "defaultNormalsTexture", - "start": 51606, - "end": 51627, + "value": "this", + "start": 54269, + "end": 54273, "loc": { "start": { - "line": 1357, - "column": 28 + "line": 1456, + "column": 8 }, "end": { - "line": 1357, - "column": 49 + "line": 1456, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -234760,16 +239274,16 @@ "binop": null, "updateContext": null }, - "start": 51627, - "end": 51628, + "start": 54273, + "end": 54274, "loc": { "start": { - "line": 1357, - "column": 49 + "line": 1456, + "column": 12 }, "end": { - "line": 1357, - "column": 50 + "line": 1456, + "column": 13 } } }, @@ -234785,51 +239299,50 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 51641, - "end": 51656, + "value": "_sceneModelDirty", + "start": 54274, + "end": 54290, "loc": { "start": { - "line": 1358, - "column": 12 + "line": 1456, + "column": 13 }, "end": { - "line": 1358, - "column": 27 + "line": 1456, + "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": 51656, - "end": 51657, + "start": 54290, + "end": 54291, "loc": { "start": { - "line": 1358, - "column": 27 + "line": 1456, + "column": 29 }, "end": { - "line": 1358, - "column": 28 + "line": 1456, + "column": 30 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -234837,23 +239350,22 @@ "postfix": false, "binop": null }, - "value": "defaultEmissiveTexture", - "start": 51658, - "end": 51680, + "start": 54291, + "end": 54292, "loc": { "start": { - "line": 1358, - "column": 29 + "line": 1456, + "column": 30 }, "end": { - "line": 1358, - "column": 51 + "line": 1456, + "column": 31 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -234864,22 +239376,23 @@ "binop": null, "updateContext": null }, - "start": 51680, - "end": 51681, + "start": 54292, + "end": 54293, "loc": { "start": { - "line": 1358, - "column": 51 + "line": 1456, + "column": 31 }, "end": { - "line": 1358, - "column": 52 + "line": 1456, + "column": 32 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -234887,26 +239400,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "occlusionTexture", - "start": 51694, - "end": 51710, + "value": "this", + "start": 54302, + "end": 54306, "loc": { "start": { - "line": 1359, - "column": 12 + "line": 1457, + "column": 8 }, "end": { - "line": 1359, - "column": 28 + "line": 1457, + "column": 12 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -234916,16 +239430,16 @@ "binop": null, "updateContext": null }, - "start": 51710, - "end": 51711, + "start": 54306, + "end": 54307, "loc": { "start": { - "line": 1359, - "column": 28 + "line": 1457, + "column": 12 }, "end": { - "line": 1359, - "column": 29 + "line": 1457, + "column": 13 } } }, @@ -234941,25 +239455,25 @@ "postfix": false, "binop": null }, - "value": "defaultOcclusionTexture", - "start": 51712, - "end": 51735, + "value": "glRedraw", + "start": 54307, + "end": 54315, "loc": { "start": { - "line": 1359, - "column": 30 + "line": 1457, + "column": 13 }, "end": { - "line": 1359, - "column": 53 + "line": 1457, + "column": 21 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -234967,16 +239481,16 @@ "postfix": false, "binop": null }, - "start": 51744, - "end": 51745, + "start": 54315, + "end": 54316, "loc": { "start": { - "line": 1360, - "column": 8 + "line": 1457, + "column": 21 }, "end": { - "line": 1360, - "column": 9 + "line": 1457, + "column": 22 } } }, @@ -234992,16 +239506,16 @@ "postfix": false, "binop": null }, - "start": 51745, - "end": 51746, + "start": 54316, + "end": 54317, "loc": { "start": { - "line": 1360, - "column": 9 + "line": 1457, + "column": 22 }, "end": { - "line": 1360, - "column": 10 + "line": 1457, + "column": 23 } } }, @@ -235018,16 +239532,16 @@ "binop": null, "updateContext": null }, - "start": 51746, - "end": 51747, + "start": 54317, + "end": 54318, "loc": { "start": { - "line": 1360, - "column": 10 + "line": 1457, + "column": 23 }, "end": { - "line": 1360, - "column": 11 + "line": 1457, + "column": 24 } } }, @@ -235043,79 +239557,31 @@ "postfix": false, "binop": null }, - "start": 51752, - "end": 51753, + "start": 54323, + "end": 54324, "loc": { "start": { - "line": 1361, + "line": 1458, "column": 4 }, "end": { - "line": 1361, + "line": 1458, "column": 5 } } }, - { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 51759, - "end": 51875, - "loc": { - "start": { - "line": 1363, - "column": 4 - }, - "end": { - "line": 1363, - "column": 120 - } - } - }, - { - "type": "CommentLine", - "value": " SceneModel members", - "start": 51880, - "end": 51901, - "loc": { - "start": { - "line": 1364, - "column": 4 - }, - "end": { - "line": 1364, - "column": 25 - } - } - }, - { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 51906, - "end": 52022, - "loc": { - "start": { - "line": 1365, - "column": 4 - }, - "end": { - "line": 1365, - "column": 120 - } - } - }, { "type": "CommentBlock", - "value": "*\n * Returns true to indicate that this Component is a SceneModel.\n * @type {Boolean}\n ", - "start": 52028, - "end": 52131, + "value": "*\n * Gets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", + "start": 54330, + "end": 54468, "loc": { "start": { - "line": 1367, + "line": 1460, "column": 4 }, "end": { - "line": 1370, + "line": 1466, "column": 7 } } @@ -235133,15 +239599,15 @@ "binop": null }, "value": "get", - "start": 52136, - "end": 52139, + "start": 54473, + "end": 54476, "loc": { "start": { - "line": 1371, + "line": 1467, "column": 4 }, "end": { - "line": 1371, + "line": 1467, "column": 7 } } @@ -235158,17 +239624,17 @@ "postfix": false, "binop": null }, - "value": "isPerformanceModel", - "start": 52140, - "end": 52158, + "value": "position", + "start": 54477, + "end": 54485, "loc": { "start": { - "line": 1371, + "line": 1467, "column": 8 }, "end": { - "line": 1371, - "column": 26 + "line": 1467, + "column": 16 } } }, @@ -235184,16 +239650,16 @@ "postfix": false, "binop": null }, - "start": 52158, - "end": 52159, + "start": 54485, + "end": 54486, "loc": { "start": { - "line": 1371, - "column": 26 + "line": 1467, + "column": 16 }, "end": { - "line": 1371, - "column": 27 + "line": 1467, + "column": 17 } } }, @@ -235209,16 +239675,16 @@ "postfix": false, "binop": null }, - "start": 52159, - "end": 52160, + "start": 54486, + "end": 54487, "loc": { "start": { - "line": 1371, - "column": 27 + "line": 1467, + "column": 17 }, "end": { - "line": 1371, - "column": 28 + "line": 1467, + "column": 18 } } }, @@ -235234,16 +239700,16 @@ "postfix": false, "binop": null }, - "start": 52161, - "end": 52162, + "start": 54488, + "end": 54489, "loc": { "start": { - "line": 1371, - "column": 29 + "line": 1467, + "column": 19 }, "end": { - "line": 1371, - "column": 30 + "line": 1467, + "column": 20 } } }, @@ -235262,23 +239728,23 @@ "updateContext": null }, "value": "return", - "start": 52171, - "end": 52177, + "start": 54498, + "end": 54504, "loc": { "start": { - "line": 1372, + "line": 1468, "column": 8 }, "end": { - "line": 1372, + "line": 1468, "column": 14 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -235289,24 +239755,24 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 52178, - "end": 52182, + "value": "this", + "start": 54505, + "end": 54509, "loc": { "start": { - "line": 1372, + "line": 1468, "column": 15 }, "end": { - "line": 1372, + "line": 1468, "column": 19 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -235316,16 +239782,68 @@ "binop": null, "updateContext": null }, - "start": 52182, - "end": 52183, + "start": 54509, + "end": 54510, "loc": { "start": { - "line": 1372, + "line": 1468, "column": 19 }, "end": { - "line": 1372, + "line": 1468, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_position", + "start": 54510, + "end": 54519, + "loc": { + "start": { + "line": 1468, "column": 20 + }, + "end": { + "line": 1468, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 54519, + "end": 54520, + "loc": { + "start": { + "line": 1468, + "column": 29 + }, + "end": { + "line": 1468, + "column": 30 } } }, @@ -235341,31 +239859,31 @@ "postfix": false, "binop": null }, - "start": 52188, - "end": 52189, + "start": 54525, + "end": 54526, "loc": { "start": { - "line": 1373, + "line": 1469, "column": 4 }, "end": { - "line": 1373, + "line": 1469, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * The {@link SceneModelTransform}s in this SceneModel.\n *\n * Each {#link SceneModelTransform} is stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", - "start": 52195, - "end": 52402, + "value": "*\n * Sets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", + "start": 54532, + "end": 54734, "loc": { "start": { - "line": 1375, + "line": 1471, "column": 4 }, "end": { - "line": 1381, + "line": 1477, "column": 7 } } @@ -235382,16 +239900,16 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 52407, - "end": 52410, + "value": "set", + "start": 54739, + "end": 54742, "loc": { "start": { - "line": 1382, + "line": 1478, "column": 4 }, "end": { - "line": 1382, + "line": 1478, "column": 7 } } @@ -235408,17 +239926,17 @@ "postfix": false, "binop": null }, - "value": "transforms", - "start": 52411, - "end": 52421, + "value": "rotation", + "start": 54743, + "end": 54751, "loc": { "start": { - "line": 1382, + "line": 1478, "column": 8 }, "end": { - "line": 1382, - "column": 18 + "line": 1478, + "column": 16 } } }, @@ -235434,24 +239952,24 @@ "postfix": false, "binop": null }, - "start": 52421, - "end": 52422, + "start": 54751, + "end": 54752, "loc": { "start": { - "line": 1382, - "column": 18 + "line": 1478, + "column": 16 }, "end": { - "line": 1382, - "column": 19 + "line": 1478, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -235459,24 +239977,25 @@ "postfix": false, "binop": null }, - "start": 52422, - "end": 52423, + "value": "value", + "start": 54752, + "end": 54757, "loc": { "start": { - "line": 1382, - "column": 19 + "line": 1478, + "column": 17 }, "end": { - "line": 1382, - "column": 20 + "line": 1478, + "column": 22 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -235484,44 +240003,41 @@ "postfix": false, "binop": null }, - "start": 52424, - "end": 52425, + "start": 54757, + "end": 54758, "loc": { "start": { - "line": 1382, - "column": 21 + "line": 1478, + "column": 22 }, "end": { - "line": 1382, - "column": 22 + "line": 1478, + "column": 23 } } }, { "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": 52434, - "end": 52440, + "start": 54759, + "end": 54760, "loc": { "start": { - "line": 1383, - "column": 8 + "line": 1478, + "column": 24 }, "end": { - "line": 1383, - "column": 14 + "line": 1478, + "column": 25 } } }, @@ -235540,16 +240056,16 @@ "updateContext": null }, "value": "this", - "start": 52441, - "end": 52445, + "start": 54769, + "end": 54773, "loc": { "start": { - "line": 1383, - "column": 15 + "line": 1479, + "column": 8 }, "end": { - "line": 1383, - "column": 19 + "line": 1479, + "column": 12 } } }, @@ -235566,16 +240082,16 @@ "binop": null, "updateContext": null }, - "start": 52445, - "end": 52446, + "start": 54773, + "end": 54774, "loc": { "start": { - "line": 1383, - "column": 19 + "line": 1479, + "column": 12 }, "end": { - "line": 1383, - "column": 20 + "line": 1479, + "column": 13 } } }, @@ -235591,24 +240107,24 @@ "postfix": false, "binop": null }, - "value": "_transforms", - "start": 52446, - "end": 52457, + "value": "_rotation", + "start": 54774, + "end": 54783, "loc": { "start": { - "line": 1383, - "column": 20 + "line": 1479, + "column": 13 }, "end": { - "line": 1383, - "column": 31 + "line": 1479, + "column": 22 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -235618,24 +240134,24 @@ "binop": null, "updateContext": null }, - "start": 52457, - "end": 52458, + "start": 54783, + "end": 54784, "loc": { "start": { - "line": 1383, - "column": 31 + "line": 1479, + "column": 22 }, "end": { - "line": 1383, - "column": 32 + "line": 1479, + "column": 23 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -235643,39 +240159,24 @@ "postfix": false, "binop": null }, - "start": 52463, - "end": 52464, - "loc": { - "start": { - "line": 1384, - "column": 4 - }, - "end": { - "line": 1384, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * The {@link SceneModelTexture}s in this SceneModel.\n *\n * * Each {@link SceneModelTexture} is created with {@link SceneModel.createTexture}.\n * * Each {@link SceneModelTexture} is stored here against its {@link SceneModelTexture.id}.\n *\n * @returns {*|{}}\n ", - "start": 52470, - "end": 52763, + "value": "set", + "start": 54784, + "end": 54787, "loc": { "start": { - "line": 1386, - "column": 4 + "line": 1479, + "column": 23 }, "end": { - "line": 1393, - "column": 7 + "line": 1479, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -235684,17 +240185,16 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 52768, - "end": 52771, + "start": 54787, + "end": 54788, "loc": { "start": { - "line": 1394, - "column": 4 + "line": 1479, + "column": 26 }, "end": { - "line": 1394, - "column": 7 + "line": 1479, + "column": 27 } } }, @@ -235710,99 +240210,103 @@ "postfix": false, "binop": null }, - "value": "textures", - "start": 52772, - "end": 52780, + "value": "value", + "start": 54788, + "end": 54793, "loc": { "start": { - "line": 1394, - "column": 8 + "line": 1479, + "column": 27 }, "end": { - "line": 1394, - "column": 16 + "line": 1479, + "column": 32 } } }, { "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": 52780, - "end": 52781, + "value": "||", + "start": 54794, + "end": 54796, "loc": { "start": { - "line": 1394, - "column": 16 + "line": 1479, + "column": 33 }, "end": { - "line": 1394, - "column": 17 + "line": 1479, + "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 + "binop": null, + "updateContext": null }, - "start": 52781, - "end": 52782, + "start": 54797, + "end": 54798, "loc": { "start": { - "line": 1394, - "column": 17 + "line": 1479, + "column": 36 }, "end": { - "line": 1394, - "column": 18 + "line": 1479, + "column": 37 } } }, { "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": 52783, - "end": 52784, + "value": 0, + "start": 54798, + "end": 54799, "loc": { "start": { - "line": 1394, - "column": 19 + "line": 1479, + "column": 37 }, "end": { - "line": 1394, - "column": 20 + "line": 1479, + "column": 38 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -235813,24 +240317,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 52793, - "end": 52799, + "start": 54799, + "end": 54800, "loc": { "start": { - "line": 1395, - "column": 8 + "line": 1479, + "column": 38 }, "end": { - "line": 1395, - "column": 14 + "line": 1479, + "column": 39 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -235841,24 +240343,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 52800, - "end": 52804, + "value": 0, + "start": 54801, + "end": 54802, "loc": { "start": { - "line": 1395, - "column": 15 + "line": 1479, + "column": 40 }, "end": { - "line": 1395, - "column": 19 + "line": 1479, + "column": 41 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -235868,22 +240370,22 @@ "binop": null, "updateContext": null }, - "start": 52804, - "end": 52805, + "start": 54802, + "end": 54803, "loc": { "start": { - "line": 1395, - "column": 19 + "line": 1479, + "column": 41 }, "end": { - "line": 1395, - "column": 20 + "line": 1479, + "column": 42 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -235891,26 +240393,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_textures", - "start": 52805, - "end": 52814, + "value": 0, + "start": 54804, + "end": 54805, "loc": { "start": { - "line": 1395, - "column": 20 + "line": 1479, + "column": 43 }, "end": { - "line": 1395, - "column": 29 + "line": 1479, + "column": 44 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -235920,22 +240423,22 @@ "binop": null, "updateContext": null }, - "start": 52814, - "end": 52815, + "start": 54805, + "end": 54806, "loc": { "start": { - "line": 1395, - "column": 29 + "line": 1479, + "column": 44 }, "end": { - "line": 1395, - "column": 30 + "line": 1479, + "column": 45 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -235945,58 +240448,42 @@ "postfix": false, "binop": null }, - "start": 52820, - "end": 52821, - "loc": { - "start": { - "line": 1396, - "column": 4 - }, - "end": { - "line": 1396, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * The {@link SceneModelTextureSet}s in this SceneModel.\n *\n * Each {@link SceneModelTextureSet} is stored here against its {@link SceneModelTextureSet.id}.\n *\n * @returns {*|{}}\n ", - "start": 52827, - "end": 53037, + "start": 54806, + "end": 54807, "loc": { "start": { - "line": 1398, - "column": 4 + "line": 1479, + "column": 45 }, "end": { - "line": 1404, - "column": 7 + "line": 1479, + "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": "get", - "start": 53042, - "end": 53045, + "start": 54807, + "end": 54808, "loc": { "start": { - "line": 1405, - "column": 4 + "line": 1479, + "column": 46 }, "end": { - "line": 1405, - "column": 7 + "line": 1479, + "column": 47 } } }, @@ -236012,48 +240499,23 @@ "postfix": false, "binop": null }, - "value": "textureSets", - "start": 53046, - "end": 53057, + "value": "math", + "start": 54817, + "end": 54821, "loc": { "start": { - "line": 1405, + "line": 1480, "column": 8 }, - "end": { - "line": 1405, - "column": 19 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 53057, - "end": 53058, - "loc": { - "start": { - "line": 1405, - "column": 19 - }, - "end": { - "line": 1405, - "column": 20 + "end": { + "line": 1480, + "column": 12 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -236061,25 +240523,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 53058, - "end": 53059, + "start": 54821, + "end": 54822, "loc": { "start": { - "line": 1405, - "column": 20 + "line": 1480, + "column": 12 }, "end": { - "line": 1405, - "column": 21 + "line": 1480, + "column": 13 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -236088,44 +240551,42 @@ "postfix": false, "binop": null }, - "start": 53060, - "end": 53061, + "value": "eulerToQuaternion", + "start": 54822, + "end": 54839, "loc": { "start": { - "line": 1405, - "column": 22 + "line": 1480, + "column": 13 }, "end": { - "line": 1405, - "column": 23 + "line": 1480, + "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": 53070, - "end": 53076, + "start": 54839, + "end": 54840, "loc": { "start": { - "line": 1406, - "column": 8 + "line": 1480, + "column": 30 }, "end": { - "line": 1406, - "column": 14 + "line": 1480, + "column": 31 } } }, @@ -236144,16 +240605,16 @@ "updateContext": null }, "value": "this", - "start": 53077, - "end": 53081, + "start": 54840, + "end": 54844, "loc": { "start": { - "line": 1406, - "column": 15 + "line": 1480, + "column": 31 }, "end": { - "line": 1406, - "column": 19 + "line": 1480, + "column": 35 } } }, @@ -236170,16 +240631,16 @@ "binop": null, "updateContext": null }, - "start": 53081, - "end": 53082, + "start": 54844, + "end": 54845, "loc": { "start": { - "line": 1406, - "column": 19 + "line": 1480, + "column": 35 }, "end": { - "line": 1406, - "column": 20 + "line": 1480, + "column": 36 } } }, @@ -236195,23 +240656,23 @@ "postfix": false, "binop": null }, - "value": "_textureSets", - "start": 53082, - "end": 53094, + "value": "_rotation", + "start": 54845, + "end": 54854, "loc": { "start": { - "line": 1406, - "column": 20 + "line": 1480, + "column": 36 }, "end": { - "line": 1406, - "column": 32 + "line": 1480, + "column": 45 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -236222,89 +240683,76 @@ "binop": null, "updateContext": null }, - "start": 53094, - "end": 53095, + "start": 54854, + "end": 54855, "loc": { "start": { - "line": 1406, - "column": 32 + "line": 1480, + "column": 45 }, "end": { - "line": 1406, - "column": 33 + "line": 1480, + "column": 46 } } }, { "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": 53100, - "end": 53101, - "loc": { - "start": { - "line": 1407, - "column": 4 - }, - "end": { - "line": 1407, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * The {@link SceneModelMesh}es in this SceneModel.\n *\n * Each {@SceneModelMesh} is stored here against its {@link SceneModelMesh.id}.\n *\n * @returns {*|{}}\n ", - "start": 53107, - "end": 53295, + "value": "XYZ", + "start": 54856, + "end": 54861, "loc": { "start": { - "line": 1409, - "column": 4 + "line": 1480, + "column": 47 }, "end": { - "line": 1415, - "column": 7 + "line": 1480, + "column": 52 } } }, { "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": "get", - "start": 53300, - "end": 53303, + "start": 54861, + "end": 54862, "loc": { "start": { - "line": 1416, - "column": 4 + "line": 1480, + "column": 52 }, "end": { - "line": 1416, - "column": 7 + "line": 1480, + "column": 53 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -236312,52 +240760,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "meshes", - "start": 53304, - "end": 53310, + "value": "this", + "start": 54863, + "end": 54867, "loc": { "start": { - "line": 1416, - "column": 8 + "line": 1480, + "column": 54 }, "end": { - "line": 1416, - "column": 14 + "line": 1480, + "column": 58 } } }, { "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": 53310, - "end": 53311, + "start": 54867, + "end": 54868, "loc": { "start": { - "line": 1416, - "column": 14 + "line": 1480, + "column": 58 }, "end": { - "line": 1416, - "column": 15 + "line": 1480, + "column": 59 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -236365,24 +240815,25 @@ "postfix": false, "binop": null }, - "start": 53311, - "end": 53312, + "value": "_quaternion", + "start": 54868, + "end": 54879, "loc": { "start": { - "line": 1416, - "column": 15 + "line": 1480, + "column": 59 }, "end": { - "line": 1416, - "column": 16 + "line": 1480, + "column": 70 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -236390,23 +240841,22 @@ "postfix": false, "binop": null }, - "start": 53313, - "end": 53314, + "start": 54879, + "end": 54880, "loc": { "start": { - "line": 1416, - "column": 17 + "line": 1480, + "column": 70 }, "end": { - "line": 1416, - "column": 18 + "line": 1480, + "column": 71 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -236417,17 +240867,16 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 53323, - "end": 53329, + "start": 54880, + "end": 54881, "loc": { "start": { - "line": 1417, - "column": 8 + "line": 1480, + "column": 71 }, "end": { - "line": 1417, - "column": 14 + "line": 1480, + "column": 72 } } }, @@ -236446,16 +240895,16 @@ "updateContext": null }, "value": "this", - "start": 53330, - "end": 53334, + "start": 54890, + "end": 54894, "loc": { "start": { - "line": 1417, - "column": 15 + "line": 1481, + "column": 8 }, "end": { - "line": 1417, - "column": 19 + "line": 1481, + "column": 12 } } }, @@ -236472,16 +240921,16 @@ "binop": null, "updateContext": null }, - "start": 53334, - "end": 53335, + "start": 54894, + "end": 54895, "loc": { "start": { - "line": 1417, - "column": 19 + "line": 1481, + "column": 12 }, "end": { - "line": 1417, - "column": 20 + "line": 1481, + "column": 13 } } }, @@ -236497,49 +240946,48 @@ "postfix": false, "binop": null }, - "value": "_meshes", - "start": 53335, - "end": 53342, + "value": "_setWorldMatrixDirty", + "start": 54895, + "end": 54915, "loc": { "start": { - "line": 1417, - "column": 20 + "line": 1481, + "column": 13 }, "end": { - "line": 1417, - "column": 27 + "line": 1481, + "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": 53342, - "end": 53343, + "start": 54915, + "end": 54916, "loc": { "start": { - "line": 1417, - "column": 27 + "line": 1481, + "column": 33 }, "end": { - "line": 1417, - "column": 28 + "line": 1481, + "column": 34 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -236549,38 +240997,49 @@ "postfix": false, "binop": null }, - "start": 53348, - "end": 53349, + "start": 54916, + "end": 54917, "loc": { "start": { - "line": 1418, - "column": 4 + "line": 1481, + "column": 34 }, "end": { - "line": 1418, - "column": 5 + "line": 1481, + "column": 35 } } }, { - "type": "CommentBlock", - "value": "*\n * The {@link SceneModelEntity}s in this SceneModel.\n *\n * Each {#link SceneModelEntity} in this SceneModel that represents an object is\n * stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n ", - "start": 53355, - "end": 53608, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 54917, + "end": 54918, "loc": { "start": { - "line": 1420, - "column": 4 + "line": 1481, + "column": 35 }, "end": { - "line": 1427, - "column": 7 + "line": 1481, + "column": 36 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -236588,52 +241047,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "get", - "start": 53613, - "end": 53616, + "value": "this", + "start": 54927, + "end": 54931, "loc": { "start": { - "line": 1428, - "column": 4 + "line": 1482, + "column": 8 }, "end": { - "line": 1428, - "column": 7 + "line": 1482, + "column": 12 } } }, { "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": "objects", - "start": 53617, - "end": 53624, + "start": 54931, + "end": 54932, "loc": { "start": { - "line": 1428, - "column": 8 + "line": 1482, + "column": 12 }, "end": { - "line": 1428, - "column": 15 + "line": 1482, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -236642,24 +241102,25 @@ "postfix": false, "binop": null }, - "start": 53624, - "end": 53625, + "value": "_sceneModelDirty", + "start": 54932, + "end": 54948, "loc": { "start": { - "line": 1428, - "column": 15 + "line": 1482, + "column": 13 }, "end": { - "line": 1428, - "column": 16 + "line": 1482, + "column": 29 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -236667,24 +241128,24 @@ "postfix": false, "binop": null }, - "start": 53625, - "end": 53626, + "start": 54948, + "end": 54949, "loc": { "start": { - "line": 1428, - "column": 16 + "line": 1482, + "column": 29 }, "end": { - "line": 1428, - "column": 17 + "line": 1482, + "column": 30 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -236692,23 +241153,22 @@ "postfix": false, "binop": null }, - "start": 53627, - "end": 53628, + "start": 54949, + "end": 54950, "loc": { "start": { - "line": 1428, - "column": 18 + "line": 1482, + "column": 30 }, "end": { - "line": 1428, - "column": 19 + "line": 1482, + "column": 31 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -236719,17 +241179,16 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 53637, - "end": 53643, + "start": 54950, + "end": 54951, "loc": { "start": { - "line": 1429, - "column": 8 + "line": 1482, + "column": 31 }, "end": { - "line": 1429, - "column": 14 + "line": 1482, + "column": 32 } } }, @@ -236748,16 +241207,16 @@ "updateContext": null }, "value": "this", - "start": 53644, - "end": 53648, + "start": 54960, + "end": 54964, "loc": { "start": { - "line": 1429, - "column": 15 + "line": 1483, + "column": 8 }, "end": { - "line": 1429, - "column": 19 + "line": 1483, + "column": 12 } } }, @@ -236774,16 +241233,16 @@ "binop": null, "updateContext": null }, - "start": 53648, - "end": 53649, + "start": 54964, + "end": 54965, "loc": { "start": { - "line": 1429, - "column": 19 + "line": 1483, + "column": 12 }, "end": { - "line": 1429, - "column": 20 + "line": 1483, + "column": 13 } } }, @@ -236799,17 +241258,67 @@ "postfix": false, "binop": null }, - "value": "_entities", - "start": 53649, - "end": 53658, + "value": "glRedraw", + "start": 54965, + "end": 54973, "loc": { "start": { - "line": 1429, - "column": 20 + "line": 1483, + "column": 13 }, "end": { - "line": 1429, - "column": 29 + "line": 1483, + "column": 21 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 54973, + "end": 54974, + "loc": { + "start": { + "line": 1483, + "column": 21 + }, + "end": { + "line": 1483, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 54974, + "end": 54975, + "loc": { + "start": { + "line": 1483, + "column": 22 + }, + "end": { + "line": 1483, + "column": 23 } } }, @@ -236826,16 +241335,16 @@ "binop": null, "updateContext": null }, - "start": 53658, - "end": 53659, + "start": 54975, + "end": 54976, "loc": { "start": { - "line": 1429, - "column": 29 + "line": 1483, + "column": 23 }, "end": { - "line": 1429, - "column": 30 + "line": 1483, + "column": 24 } } }, @@ -236851,31 +241360,31 @@ "postfix": false, "binop": null }, - "start": 53664, - "end": 53665, + "start": 54981, + "end": 54982, "loc": { "start": { - "line": 1430, + "line": 1484, "column": 4 }, "end": { - "line": 1430, + "line": 1484, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets the 3D World-space origin for this SceneModel.\n *\n * Each {@link SceneModelMesh.origin}, if supplied, is relative to this origin.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Float64Array}\n ", - "start": 53671, - "end": 53915, + "value": "*\n * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", + "start": 54988, + "end": 55190, "loc": { "start": { - "line": 1432, + "line": 1486, "column": 4 }, "end": { - "line": 1440, + "line": 1492, "column": 7 } } @@ -236893,15 +241402,15 @@ "binop": null }, "value": "get", - "start": 53920, - "end": 53923, + "start": 55195, + "end": 55198, "loc": { "start": { - "line": 1441, + "line": 1493, "column": 4 }, "end": { - "line": 1441, + "line": 1493, "column": 7 } } @@ -236918,17 +241427,17 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 53924, - "end": 53930, + "value": "rotation", + "start": 55199, + "end": 55207, "loc": { "start": { - "line": 1441, + "line": 1493, "column": 8 }, "end": { - "line": 1441, - "column": 14 + "line": 1493, + "column": 16 } } }, @@ -236944,16 +241453,16 @@ "postfix": false, "binop": null }, - "start": 53930, - "end": 53931, + "start": 55207, + "end": 55208, "loc": { "start": { - "line": 1441, - "column": 14 + "line": 1493, + "column": 16 }, "end": { - "line": 1441, - "column": 15 + "line": 1493, + "column": 17 } } }, @@ -236969,16 +241478,16 @@ "postfix": false, "binop": null }, - "start": 53931, - "end": 53932, + "start": 55208, + "end": 55209, "loc": { "start": { - "line": 1441, - "column": 15 + "line": 1493, + "column": 17 }, "end": { - "line": 1441, - "column": 16 + "line": 1493, + "column": 18 } } }, @@ -236994,16 +241503,16 @@ "postfix": false, "binop": null }, - "start": 53933, - "end": 53934, + "start": 55210, + "end": 55211, "loc": { "start": { - "line": 1441, - "column": 17 + "line": 1493, + "column": 19 }, "end": { - "line": 1441, - "column": 18 + "line": 1493, + "column": 20 } } }, @@ -237022,15 +241531,15 @@ "updateContext": null }, "value": "return", - "start": 53943, - "end": 53949, + "start": 55220, + "end": 55226, "loc": { "start": { - "line": 1442, + "line": 1494, "column": 8 }, "end": { - "line": 1442, + "line": 1494, "column": 14 } } @@ -237050,15 +241559,15 @@ "updateContext": null }, "value": "this", - "start": 53950, - "end": 53954, + "start": 55227, + "end": 55231, "loc": { "start": { - "line": 1442, + "line": 1494, "column": 15 }, "end": { - "line": 1442, + "line": 1494, "column": 19 } } @@ -237076,15 +241585,15 @@ "binop": null, "updateContext": null }, - "start": 53954, - "end": 53955, + "start": 55231, + "end": 55232, "loc": { "start": { - "line": 1442, + "line": 1494, "column": 19 }, "end": { - "line": 1442, + "line": 1494, "column": 20 } } @@ -237101,17 +241610,17 @@ "postfix": false, "binop": null }, - "value": "_origin", - "start": 53955, - "end": 53962, + "value": "_rotation", + "start": 55232, + "end": 55241, "loc": { "start": { - "line": 1442, + "line": 1494, "column": 20 }, "end": { - "line": 1442, - "column": 27 + "line": 1494, + "column": 29 } } }, @@ -237128,16 +241637,16 @@ "binop": null, "updateContext": null }, - "start": 53962, - "end": 53963, + "start": 55241, + "end": 55242, "loc": { "start": { - "line": 1442, - "column": 27 + "line": 1494, + "column": 29 }, "end": { - "line": 1442, - "column": 28 + "line": 1494, + "column": 30 } } }, @@ -237153,31 +241662,31 @@ "postfix": false, "binop": null }, - "start": 53968, - "end": 53969, + "start": 55247, + "end": 55248, "loc": { "start": { - "line": 1443, + "line": 1495, "column": 4 }, "end": { - "line": 1443, + "line": 1495, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 53975, - "end": 54113, + "value": "*\n * Sets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", + "start": 55254, + "end": 55402, "loc": { "start": { - "line": 1445, + "line": 1497, "column": 4 }, "end": { - "line": 1451, + "line": 1503, "column": 7 } } @@ -237195,15 +241704,15 @@ "binop": null }, "value": "set", - "start": 54118, - "end": 54121, + "start": 55407, + "end": 55410, "loc": { "start": { - "line": 1452, + "line": 1504, "column": 4 }, "end": { - "line": 1452, + "line": 1504, "column": 7 } } @@ -237220,17 +241729,17 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 54122, - "end": 54130, + "value": "quaternion", + "start": 55411, + "end": 55421, "loc": { "start": { - "line": 1452, + "line": 1504, "column": 8 }, "end": { - "line": 1452, - "column": 16 + "line": 1504, + "column": 18 } } }, @@ -237246,16 +241755,16 @@ "postfix": false, "binop": null }, - "start": 54130, - "end": 54131, + "start": 55421, + "end": 55422, "loc": { "start": { - "line": 1452, - "column": 16 + "line": 1504, + "column": 18 }, "end": { - "line": 1452, - "column": 17 + "line": 1504, + "column": 19 } } }, @@ -237272,16 +241781,16 @@ "binop": null }, "value": "value", - "start": 54131, - "end": 54136, + "start": 55422, + "end": 55427, "loc": { "start": { - "line": 1452, - "column": 17 + "line": 1504, + "column": 19 }, "end": { - "line": 1452, - "column": 22 + "line": 1504, + "column": 24 } } }, @@ -237297,16 +241806,16 @@ "postfix": false, "binop": null }, - "start": 54136, - "end": 54137, + "start": 55427, + "end": 55428, "loc": { "start": { - "line": 1452, - "column": 22 + "line": 1504, + "column": 24 }, "end": { - "line": 1452, - "column": 23 + "line": 1504, + "column": 25 } } }, @@ -237322,16 +241831,16 @@ "postfix": false, "binop": null }, - "start": 54138, - "end": 54139, + "start": 55429, + "end": 55430, "loc": { "start": { - "line": 1452, - "column": 24 + "line": 1504, + "column": 26 }, "end": { - "line": 1452, - "column": 25 + "line": 1504, + "column": 27 } } }, @@ -237350,15 +241859,15 @@ "updateContext": null }, "value": "this", - "start": 54148, - "end": 54152, + "start": 55439, + "end": 55443, "loc": { "start": { - "line": 1453, + "line": 1505, "column": 8 }, "end": { - "line": 1453, + "line": 1505, "column": 12 } } @@ -237376,15 +241885,15 @@ "binop": null, "updateContext": null }, - "start": 54152, - "end": 54153, + "start": 55443, + "end": 55444, "loc": { "start": { - "line": 1453, + "line": 1505, "column": 12 }, "end": { - "line": 1453, + "line": 1505, "column": 13 } } @@ -237401,17 +241910,17 @@ "postfix": false, "binop": null }, - "value": "_position", - "start": 54153, - "end": 54162, + "value": "_quaternion", + "start": 55444, + "end": 55455, "loc": { "start": { - "line": 1453, + "line": 1505, "column": 13 }, "end": { - "line": 1453, - "column": 22 + "line": 1505, + "column": 24 } } }, @@ -237428,16 +241937,16 @@ "binop": null, "updateContext": null }, - "start": 54162, - "end": 54163, + "start": 55455, + "end": 55456, "loc": { "start": { - "line": 1453, - "column": 22 + "line": 1505, + "column": 24 }, "end": { - "line": 1453, - "column": 23 + "line": 1505, + "column": 25 } } }, @@ -237454,16 +241963,16 @@ "binop": null }, "value": "set", - "start": 54163, - "end": 54166, + "start": 55456, + "end": 55459, "loc": { "start": { - "line": 1453, - "column": 23 + "line": 1505, + "column": 25 }, "end": { - "line": 1453, - "column": 26 + "line": 1505, + "column": 28 } } }, @@ -237479,16 +241988,16 @@ "postfix": false, "binop": null }, - "start": 54166, - "end": 54167, + "start": 55459, + "end": 55460, "loc": { "start": { - "line": 1453, - "column": 26 + "line": 1505, + "column": 28 }, "end": { - "line": 1453, - "column": 27 + "line": 1505, + "column": 29 } } }, @@ -237505,16 +242014,16 @@ "binop": null }, "value": "value", - "start": 54167, - "end": 54172, + "start": 55460, + "end": 55465, "loc": { "start": { - "line": 1453, - "column": 27 + "line": 1505, + "column": 29 }, "end": { - "line": 1453, - "column": 32 + "line": 1505, + "column": 34 } } }, @@ -237532,16 +242041,16 @@ "updateContext": null }, "value": "||", - "start": 54173, - "end": 54175, + "start": 55466, + "end": 55468, "loc": { "start": { - "line": 1453, - "column": 33 + "line": 1505, + "column": 35 }, "end": { - "line": 1453, - "column": 35 + "line": 1505, + "column": 37 } } }, @@ -237558,16 +242067,16 @@ "binop": null, "updateContext": null }, - "start": 54176, - "end": 54177, + "start": 55469, + "end": 55470, "loc": { "start": { - "line": 1453, - "column": 36 + "line": 1505, + "column": 38 }, "end": { - "line": 1453, - "column": 37 + "line": 1505, + "column": 39 } } }, @@ -237585,16 +242094,16 @@ "updateContext": null }, "value": 0, - "start": 54177, - "end": 54178, + "start": 55470, + "end": 55471, "loc": { "start": { - "line": 1453, - "column": 37 + "line": 1505, + "column": 39 }, "end": { - "line": 1453, - "column": 38 + "line": 1505, + "column": 40 } } }, @@ -237611,16 +242120,16 @@ "binop": null, "updateContext": null }, - "start": 54178, - "end": 54179, + "start": 55471, + "end": 55472, "loc": { "start": { - "line": 1453, - "column": 38 + "line": 1505, + "column": 40 }, "end": { - "line": 1453, - "column": 39 + "line": 1505, + "column": 41 } } }, @@ -237638,16 +242147,16 @@ "updateContext": null }, "value": 0, - "start": 54180, - "end": 54181, + "start": 55473, + "end": 55474, "loc": { "start": { - "line": 1453, - "column": 40 + "line": 1505, + "column": 42 }, "end": { - "line": 1453, - "column": 41 + "line": 1505, + "column": 43 } } }, @@ -237664,16 +242173,16 @@ "binop": null, "updateContext": null }, - "start": 54181, - "end": 54182, + "start": 55474, + "end": 55475, "loc": { "start": { - "line": 1453, - "column": 41 + "line": 1505, + "column": 43 }, "end": { - "line": 1453, - "column": 42 + "line": 1505, + "column": 44 } } }, @@ -237691,73 +242200,22 @@ "updateContext": null }, "value": 0, - "start": 54183, - "end": 54184, - "loc": { - "start": { - "line": 1453, - "column": 43 - }, - "end": { - "line": 1453, - "column": 44 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 54184, - "end": 54185, - "loc": { - "start": { - "line": 1453, - "column": 44 - }, - "end": { - "line": 1453, - "column": 45 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 54185, - "end": 54186, + "start": 55476, + "end": 55477, "loc": { "start": { - "line": 1453, + "line": 1505, "column": 45 }, "end": { - "line": 1453, + "line": 1505, "column": 46 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -237768,23 +242226,22 @@ "binop": null, "updateContext": null }, - "start": 54186, - "end": 54187, + "start": 55477, + "end": 55478, "loc": { "start": { - "line": 1453, + "line": 1505, "column": 46 }, "end": { - "line": 1453, + "line": 1505, "column": 47 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -237795,23 +242252,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 54196, - "end": 54200, + "value": 1, + "start": 55479, + "end": 55480, "loc": { "start": { - "line": 1454, - "column": 8 + "line": 1505, + "column": 48 }, "end": { - "line": 1454, - "column": 12 + "line": 1505, + "column": 49 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -237822,67 +242279,16 @@ "binop": null, "updateContext": null }, - "start": 54200, - "end": 54201, - "loc": { - "start": { - "line": 1454, - "column": 12 - }, - "end": { - "line": 1454, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_setWorldMatrixDirty", - "start": 54201, - "end": 54221, - "loc": { - "start": { - "line": 1454, - "column": 13 - }, - "end": { - "line": 1454, - "column": 33 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 54221, - "end": 54222, + "start": 55480, + "end": 55481, "loc": { "start": { - "line": 1454, - "column": 33 + "line": 1505, + "column": 49 }, "end": { - "line": 1454, - "column": 34 + "line": 1505, + "column": 50 } } }, @@ -237898,16 +242304,16 @@ "postfix": false, "binop": null }, - "start": 54222, - "end": 54223, + "start": 55481, + "end": 55482, "loc": { "start": { - "line": 1454, - "column": 34 + "line": 1505, + "column": 50 }, "end": { - "line": 1454, - "column": 35 + "line": 1505, + "column": 51 } } }, @@ -237924,23 +242330,22 @@ "binop": null, "updateContext": null }, - "start": 54223, - "end": 54224, + "start": 55482, + "end": 55483, "loc": { "start": { - "line": 1454, - "column": 35 + "line": 1505, + "column": 51 }, "end": { - "line": 1454, - "column": 36 + "line": 1505, + "column": 52 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -237948,19 +242353,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 54233, - "end": 54237, + "value": "math", + "start": 55492, + "end": 55496, "loc": { "start": { - "line": 1455, + "line": 1506, "column": 8 }, "end": { - "line": 1455, + "line": 1506, "column": 12 } } @@ -237978,15 +242382,15 @@ "binop": null, "updateContext": null }, - "start": 54237, - "end": 54238, + "start": 55496, + "end": 55497, "loc": { "start": { - "line": 1455, + "line": 1506, "column": 12 }, "end": { - "line": 1455, + "line": 1506, "column": 13 } } @@ -238003,17 +242407,17 @@ "postfix": false, "binop": null }, - "value": "_sceneModelDirty", - "start": 54238, - "end": 54254, + "value": "quaternionToEuler", + "start": 55497, + "end": 55514, "loc": { "start": { - "line": 1455, + "line": 1506, "column": 13 }, "end": { - "line": 1455, - "column": 29 + "line": 1506, + "column": 30 } } }, @@ -238029,67 +242433,16 @@ "postfix": false, "binop": null }, - "start": 54254, - "end": 54255, - "loc": { - "start": { - "line": 1455, - "column": 29 - }, - "end": { - "line": 1455, - "column": 30 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 54255, - "end": 54256, + "start": 55514, + "end": 55515, "loc": { "start": { - "line": 1455, + "line": 1506, "column": 30 }, "end": { - "line": 1455, - "column": 31 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 54256, - "end": 54257, - "loc": { - "start": { - "line": 1455, + "line": 1506, "column": 31 - }, - "end": { - "line": 1455, - "column": 32 } } }, @@ -238108,16 +242461,16 @@ "updateContext": null }, "value": "this", - "start": 54266, - "end": 54270, + "start": 55515, + "end": 55519, "loc": { "start": { - "line": 1456, - "column": 8 + "line": 1506, + "column": 31 }, "end": { - "line": 1456, - "column": 12 + "line": 1506, + "column": 35 } } }, @@ -238134,16 +242487,16 @@ "binop": null, "updateContext": null }, - "start": 54270, - "end": 54271, + "start": 55519, + "end": 55520, "loc": { "start": { - "line": 1456, - "column": 12 + "line": 1506, + "column": 35 }, "end": { - "line": 1456, - "column": 13 + "line": 1506, + "column": 36 } } }, @@ -238159,73 +242512,23 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 54271, - "end": 54279, - "loc": { - "start": { - "line": 1456, - "column": 13 - }, - "end": { - "line": 1456, - "column": 21 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 54279, - "end": 54280, - "loc": { - "start": { - "line": 1456, - "column": 21 - }, - "end": { - "line": 1456, - "column": 22 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 54280, - "end": 54281, + "value": "_quaternion", + "start": 55520, + "end": 55531, "loc": { "start": { - "line": 1456, - "column": 22 + "line": 1506, + "column": 36 }, "end": { - "line": 1456, - "column": 23 + "line": 1506, + "column": 47 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -238236,89 +242539,76 @@ "binop": null, "updateContext": null }, - "start": 54281, - "end": 54282, + "start": 55531, + "end": 55532, "loc": { "start": { - "line": 1456, - "column": 23 + "line": 1506, + "column": 47 }, "end": { - "line": 1456, - "column": 24 + "line": 1506, + "column": 48 } } }, { "type": { - "label": "}", + "label": "string", "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 54287, - "end": 54288, - "loc": { - "start": { - "line": 1457, - "column": 4 - }, - "end": { - "line": 1457, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54294, - "end": 54432, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "XYZ", + "start": 55533, + "end": 55538, "loc": { "start": { - "line": 1459, - "column": 4 + "line": 1506, + "column": 49 }, "end": { - "line": 1465, - "column": 7 + "line": 1506, + "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": "get", - "start": 54437, - "end": 54440, + "start": 55538, + "end": 55539, "loc": { "start": { - "line": 1466, - "column": 4 + "line": 1506, + "column": 54 }, "end": { - "line": 1466, - "column": 7 + "line": 1506, + "column": 55 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -238326,52 +242616,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "position", - "start": 54441, - "end": 54449, + "value": "this", + "start": 55540, + "end": 55544, "loc": { "start": { - "line": 1466, - "column": 8 + "line": 1506, + "column": 56 }, "end": { - "line": 1466, - "column": 16 + "line": 1506, + "column": 60 } } }, { "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": 54449, - "end": 54450, + "start": 55544, + "end": 55545, "loc": { "start": { - "line": 1466, - "column": 16 + "line": 1506, + "column": 60 }, "end": { - "line": 1466, - "column": 17 + "line": 1506, + "column": 61 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -238379,24 +242671,25 @@ "postfix": false, "binop": null }, - "start": 54450, - "end": 54451, + "value": "_rotation", + "start": 55545, + "end": 55554, "loc": { "start": { - "line": 1466, - "column": 17 + "line": 1506, + "column": 61 }, "end": { - "line": 1466, - "column": 18 + "line": 1506, + "column": 70 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -238404,23 +242697,22 @@ "postfix": false, "binop": null }, - "start": 54452, - "end": 54453, + "start": 55554, + "end": 55555, "loc": { "start": { - "line": 1466, - "column": 19 + "line": 1506, + "column": 70 }, "end": { - "line": 1466, - "column": 20 + "line": 1506, + "column": 71 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -238431,17 +242723,16 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 54462, - "end": 54468, + "start": 55555, + "end": 55556, "loc": { "start": { - "line": 1467, - "column": 8 + "line": 1506, + "column": 71 }, "end": { - "line": 1467, - "column": 14 + "line": 1506, + "column": 72 } } }, @@ -238460,16 +242751,16 @@ "updateContext": null }, "value": "this", - "start": 54469, - "end": 54473, + "start": 55565, + "end": 55569, "loc": { "start": { - "line": 1467, - "column": 15 + "line": 1507, + "column": 8 }, "end": { - "line": 1467, - "column": 19 + "line": 1507, + "column": 12 } } }, @@ -238486,16 +242777,16 @@ "binop": null, "updateContext": null }, - "start": 54473, - "end": 54474, + "start": 55569, + "end": 55570, "loc": { "start": { - "line": 1467, - "column": 19 + "line": 1507, + "column": 12 }, "end": { - "line": 1467, - "column": 20 + "line": 1507, + "column": 13 } } }, @@ -238511,49 +242802,48 @@ "postfix": false, "binop": null }, - "value": "_position", - "start": 54474, - "end": 54483, + "value": "_setWorldMatrixDirty", + "start": 55570, + "end": 55590, "loc": { "start": { - "line": 1467, - "column": 20 + "line": 1507, + "column": 13 }, "end": { - "line": 1467, - "column": 29 + "line": 1507, + "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": 54483, - "end": 54484, + "start": 55590, + "end": 55591, "loc": { "start": { - "line": 1467, - "column": 29 + "line": 1507, + "column": 33 }, "end": { - "line": 1467, - "column": 30 + "line": 1507, + "column": 34 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -238563,38 +242853,49 @@ "postfix": false, "binop": null }, - "start": 54489, - "end": 54490, + "start": 55591, + "end": 55592, "loc": { "start": { - "line": 1468, - "column": 4 + "line": 1507, + "column": 34 }, "end": { - "line": 1468, - "column": 5 + "line": 1507, + "column": 35 } } }, { - "type": "CommentBlock", - "value": "*\n * Sets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54496, - "end": 54698, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 55592, + "end": 55593, "loc": { "start": { - "line": 1470, - "column": 4 + "line": 1507, + "column": 35 }, "end": { - "line": 1476, - "column": 7 + "line": 1507, + "column": 36 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -238602,52 +242903,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "set", - "start": 54703, - "end": 54706, + "value": "this", + "start": 55602, + "end": 55606, "loc": { "start": { - "line": 1477, - "column": 4 + "line": 1508, + "column": 8 }, "end": { - "line": 1477, - "column": 7 + "line": 1508, + "column": 12 } } }, { "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": "rotation", - "start": 54707, - "end": 54715, + "start": 55606, + "end": 55607, "loc": { "start": { - "line": 1477, - "column": 8 + "line": 1508, + "column": 12 }, "end": { - "line": 1477, - "column": 16 + "line": 1508, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -238656,23 +242958,24 @@ "postfix": false, "binop": null }, - "start": 54715, - "end": 54716, + "value": "_sceneModelDirty", + "start": 55607, + "end": 55623, "loc": { "start": { - "line": 1477, - "column": 16 + "line": 1508, + "column": 13 }, "end": { - "line": 1477, - "column": 17 + "line": 1508, + "column": 29 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -238681,17 +242984,16 @@ "postfix": false, "binop": null }, - "value": "value", - "start": 54716, - "end": 54721, + "start": 55623, + "end": 55624, "loc": { "start": { - "line": 1477, - "column": 17 + "line": 1508, + "column": 29 }, "end": { - "line": 1477, - "column": 22 + "line": 1508, + "column": 30 } } }, @@ -238707,41 +243009,42 @@ "postfix": false, "binop": null }, - "start": 54721, - "end": 54722, + "start": 55624, + "end": 55625, "loc": { "start": { - "line": 1477, - "column": 22 + "line": 1508, + "column": 30 }, "end": { - "line": 1477, - "column": 23 + "line": 1508, + "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": 54723, - "end": 54724, + "start": 55625, + "end": 55626, "loc": { "start": { - "line": 1477, - "column": 24 + "line": 1508, + "column": 31 }, "end": { - "line": 1477, - "column": 25 + "line": 1508, + "column": 32 } } }, @@ -238760,15 +243063,15 @@ "updateContext": null }, "value": "this", - "start": 54733, - "end": 54737, + "start": 55635, + "end": 55639, "loc": { "start": { - "line": 1478, + "line": 1509, "column": 8 }, "end": { - "line": 1478, + "line": 1509, "column": 12 } } @@ -238786,15 +243089,15 @@ "binop": null, "updateContext": null }, - "start": 54737, - "end": 54738, + "start": 55639, + "end": 55640, "loc": { "start": { - "line": 1478, + "line": 1509, "column": 12 }, "end": { - "line": 1478, + "line": 1509, "column": 13 } } @@ -238811,51 +243114,50 @@ "postfix": false, "binop": null }, - "value": "_rotation", - "start": 54738, - "end": 54747, + "value": "glRedraw", + "start": 55640, + "end": 55648, "loc": { "start": { - "line": 1478, + "line": 1509, "column": 13 }, "end": { - "line": 1478, - "column": 22 + "line": 1509, + "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": 54747, - "end": 54748, + "start": 55648, + "end": 55649, "loc": { "start": { - "line": 1478, - "column": 22 + "line": 1509, + "column": 21 }, "end": { - "line": 1478, - "column": 23 + "line": 1509, + "column": 22 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -238863,50 +243165,50 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 54748, - "end": 54751, + "start": 55649, + "end": 55650, "loc": { "start": { - "line": 1478, - "column": 23 + "line": 1509, + "column": 22 }, "end": { - "line": 1478, - "column": 26 + "line": 1509, + "column": 23 } } }, { "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": 54751, - "end": 54752, + "start": 55650, + "end": 55651, "loc": { "start": { - "line": 1478, - "column": 26 + "line": 1509, + "column": 23 }, "end": { - "line": 1478, - "column": 27 + "line": 1509, + "column": 24 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -238914,156 +243216,166 @@ "postfix": false, "binop": null }, - "value": "value", - "start": 54752, - "end": 54757, + "start": 55656, + "end": 55657, "loc": { "start": { - "line": 1478, - "column": 27 + "line": 1510, + "column": 4 }, "end": { - "line": 1478, - "column": 32 + "line": 1510, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Gets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", + "start": 55663, + "end": 55811, + "loc": { + "start": { + "line": 1512, + "column": 4 + }, + "end": { + "line": 1518, + "column": 7 } } }, { "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": 54758, - "end": 54760, + "value": "get", + "start": 55816, + "end": 55819, "loc": { "start": { - "line": 1478, - "column": 33 + "line": 1519, + "column": 4 }, "end": { - "line": 1478, - "column": 35 + "line": 1519, + "column": 7 } } }, { "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": 54761, - "end": 54762, + "value": "quaternion", + "start": 55820, + "end": 55830, "loc": { "start": { - "line": 1478, - "column": 36 + "line": 1519, + "column": 8 }, "end": { - "line": 1478, - "column": 37 + "line": 1519, + "column": 18 } } }, { "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": 54762, - "end": 54763, + "start": 55830, + "end": 55831, "loc": { "start": { - "line": 1478, - "column": 37 + "line": 1519, + "column": 18 }, "end": { - "line": 1478, - "column": 38 + "line": 1519, + "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": 54763, - "end": 54764, + "start": 55831, + "end": 55832, "loc": { "start": { - "line": 1478, - "column": 38 + "line": 1519, + "column": 19 }, "end": { - "line": 1478, - "column": 39 + "line": 1519, + "column": 20 } } }, { "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": 54765, - "end": 54766, + "start": 55833, + "end": 55834, "loc": { "start": { - "line": 1478, - "column": 40 + "line": 1519, + "column": 21 }, "end": { - "line": 1478, - "column": 41 + "line": 1519, + "column": 22 } } }, { "type": { - "label": ",", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -239074,22 +243386,24 @@ "binop": null, "updateContext": null }, - "start": 54766, - "end": 54767, + "value": "return", + "start": 55843, + "end": 55849, "loc": { "start": { - "line": 1478, - "column": 41 + "line": 1520, + "column": 8 }, "end": { - "line": 1478, - "column": 42 + "line": 1520, + "column": 14 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -239100,23 +243414,23 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 54768, - "end": 54769, + "value": "this", + "start": 55850, + "end": 55854, "loc": { "start": { - "line": 1478, - "column": 43 + "line": 1520, + "column": 15 }, "end": { - "line": 1478, - "column": 44 + "line": 1520, + "column": 19 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -239127,24 +243441,24 @@ "binop": null, "updateContext": null }, - "start": 54769, - "end": 54770, + "start": 55854, + "end": 55855, "loc": { "start": { - "line": 1478, - "column": 44 + "line": 1520, + "column": 19 }, "end": { - "line": 1478, - "column": 45 + "line": 1520, + "column": 20 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -239152,16 +243466,17 @@ "postfix": false, "binop": null }, - "start": 54770, - "end": 54771, + "value": "_quaternion", + "start": 55855, + "end": 55866, "loc": { "start": { - "line": 1478, - "column": 45 + "line": 1520, + "column": 20 }, "end": { - "line": 1478, - "column": 46 + "line": 1520, + "column": 31 } } }, @@ -239178,24 +243493,24 @@ "binop": null, "updateContext": null }, - "start": 54771, - "end": 54772, + "start": 55866, + "end": 55867, "loc": { "start": { - "line": 1478, - "column": 46 + "line": 1520, + "column": 31 }, "end": { - "line": 1478, - "column": 47 + "line": 1520, + "column": 32 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -239203,43 +243518,58 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 54781, - "end": 54785, + "start": 55872, + "end": 55873, "loc": { "start": { - "line": 1479, - "column": 8 + "line": 1521, + "column": 4 }, "end": { - "line": 1479, - "column": 12 + "line": 1521, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Sets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", + "start": 55879, + "end": 56030, + "loc": { + "start": { + "line": 1523, + "column": 4 + }, + "end": { + "line": 1530, + "column": 7 } } }, { "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": 54785, - "end": 54786, + "value": "set", + "start": 56035, + "end": 56038, "loc": { "start": { - "line": 1479, - "column": 12 + "line": 1531, + "column": 4 }, "end": { - "line": 1479, - "column": 13 + "line": 1531, + "column": 7 } } }, @@ -239255,17 +243585,17 @@ "postfix": false, "binop": null }, - "value": "eulerToQuaternion", - "start": 54786, - "end": 54803, + "value": "scale", + "start": 56039, + "end": 56044, "loc": { "start": { - "line": 1479, - "column": 13 + "line": 1531, + "column": 8 }, "end": { - "line": 1479, - "column": 30 + "line": 1531, + "column": 13 } } }, @@ -239281,23 +243611,22 @@ "postfix": false, "binop": null }, - "start": 54803, - "end": 54804, + "start": 56044, + "end": 56045, "loc": { "start": { - "line": 1479, - "column": 30 + "line": 1531, + "column": 13 }, "end": { - "line": 1479, - "column": 31 + "line": 1531, + "column": 14 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -239305,26 +243634,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 54804, - "end": 54808, + "value": "value", + "start": 56045, + "end": 56050, "loc": { "start": { - "line": 1479, - "column": 31 + "line": 1531, + "column": 14 }, "end": { - "line": 1479, - "column": 35 + "line": 1531, + "column": 19 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -239332,26 +243660,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 54808, - "end": 54809, + "start": 56050, + "end": 56051, "loc": { "start": { - "line": 1479, - "column": 35 + "line": 1531, + "column": 19 }, "end": { - "line": 1479, - "column": 36 + "line": 1531, + "column": 20 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -239360,103 +243687,105 @@ "postfix": false, "binop": null }, - "value": "_rotation", - "start": 54809, - "end": 54818, + "start": 56052, + "end": 56053, "loc": { "start": { - "line": 1479, - "column": 36 + "line": 1531, + "column": 21 }, "end": { - "line": 1479, - "column": 45 + "line": 1531, + "column": 22 } } }, { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 54818, - "end": 54819, + "type": "CommentLine", + "value": " NOP - deprecated", + "start": 56062, + "end": 56081, "loc": { "start": { - "line": 1479, - "column": 45 + "line": 1532, + "column": 8 }, "end": { - "line": 1479, - "column": 46 + "line": 1532, + "column": 27 } } }, { "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": "XYZ", - "start": 54820, - "end": 54825, + "start": 56086, + "end": 56087, "loc": { "start": { - "line": 1479, - "column": 47 + "line": 1533, + "column": 4 }, "end": { - "line": 1479, - "column": 52 + "line": 1533, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Gets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", + "start": 56093, + "end": 56244, + "loc": { + "start": { + "line": 1535, + "column": 4 + }, + "end": { + "line": 1542, + "column": 7 } } }, { "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": 54825, - "end": 54826, + "value": "get", + "start": 56249, + "end": 56252, "loc": { "start": { - "line": 1479, - "column": 52 + "line": 1543, + "column": 4 }, "end": { - "line": 1479, - "column": 53 + "line": 1543, + "column": 7 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -239464,54 +243793,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 54827, - "end": 54831, + "value": "scale", + "start": 56253, + "end": 56258, "loc": { "start": { - "line": 1479, - "column": 54 + "line": 1543, + "column": 8 }, "end": { - "line": 1479, - "column": 58 + "line": 1543, + "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": 54831, - "end": 54832, + "start": 56258, + "end": 56259, "loc": { "start": { - "line": 1479, - "column": 58 + "line": 1543, + "column": 13 }, "end": { - "line": 1479, - "column": 59 + "line": 1543, + "column": 14 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -239519,25 +243846,24 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 54832, - "end": 54843, + "start": 56259, + "end": 56260, "loc": { "start": { - "line": 1479, - "column": 59 + "line": 1543, + "column": 14 }, "end": { - "line": 1479, - "column": 70 + "line": 1543, + "column": 15 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -239545,22 +243871,23 @@ "postfix": false, "binop": null }, - "start": 54843, - "end": 54844, + "start": 56261, + "end": 56262, "loc": { "start": { - "line": 1479, - "column": 70 + "line": 1543, + "column": 16 }, "end": { - "line": 1479, - "column": 71 + "line": 1543, + "column": 17 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -239571,16 +243898,17 @@ "binop": null, "updateContext": null }, - "start": 54844, - "end": 54845, + "value": "return", + "start": 56271, + "end": 56277, "loc": { "start": { - "line": 1479, - "column": 71 + "line": 1544, + "column": 8 }, "end": { - "line": 1479, - "column": 72 + "line": 1544, + "column": 14 } } }, @@ -239599,16 +243927,16 @@ "updateContext": null }, "value": "this", - "start": 54854, - "end": 54858, + "start": 56278, + "end": 56282, "loc": { "start": { - "line": 1480, - "column": 8 + "line": 1544, + "column": 15 }, "end": { - "line": 1480, - "column": 12 + "line": 1544, + "column": 19 } } }, @@ -239625,16 +243953,16 @@ "binop": null, "updateContext": null }, - "start": 54858, - "end": 54859, + "start": 56282, + "end": 56283, "loc": { "start": { - "line": 1480, - "column": 12 + "line": 1544, + "column": 19 }, "end": { - "line": 1480, - "column": 13 + "line": 1544, + "column": 20 } } }, @@ -239650,48 +243978,49 @@ "postfix": false, "binop": null }, - "value": "_setWorldMatrixDirty", - "start": 54859, - "end": 54879, + "value": "_scale", + "start": 56283, + "end": 56289, "loc": { "start": { - "line": 1480, - "column": 13 + "line": 1544, + "column": 20 }, "end": { - "line": 1480, - "column": 33 + "line": 1544, + "column": 26 } } }, { "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": 54879, - "end": 54880, + "start": 56289, + "end": 56290, "loc": { "start": { - "line": 1480, - "column": 33 + "line": 1544, + "column": 26 }, "end": { - "line": 1480, - "column": 34 + "line": 1544, + "column": 27 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -239701,49 +244030,38 @@ "postfix": false, "binop": null }, - "start": 54880, - "end": 54881, + "start": 56295, + "end": 56296, "loc": { "start": { - "line": 1480, - "column": 34 + "line": 1545, + "column": 4 }, "end": { - "line": 1480, - "column": 35 + "line": 1545, + "column": 5 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 54881, - "end": 54882, + "type": "CommentBlock", + "value": "*\n * Sets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", + "start": 56302, + "end": 56495, "loc": { "start": { - "line": 1480, - "column": 35 + "line": 1547, + "column": 4 }, "end": { - "line": 1480, - "column": 36 + "line": 1553, + "column": 7 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -239751,53 +244069,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 54891, - "end": 54895, + "value": "set", + "start": 56500, + "end": 56503, "loc": { "start": { - "line": 1481, - "column": 8 + "line": 1554, + "column": 4 }, "end": { - "line": 1481, - "column": 12 + "line": 1554, + "column": 7 } } }, { "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": 54895, - "end": 54896, + "value": "matrix", + "start": 56504, + "end": 56510, "loc": { "start": { - "line": 1481, - "column": 12 + "line": 1554, + "column": 8 }, "end": { - "line": 1481, - "column": 13 + "line": 1554, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -239806,24 +244123,23 @@ "postfix": false, "binop": null }, - "value": "_sceneModelDirty", - "start": 54896, - "end": 54912, + "start": 56510, + "end": 56511, "loc": { "start": { - "line": 1481, - "column": 13 + "line": 1554, + "column": 14 }, "end": { - "line": 1481, - "column": 29 + "line": 1554, + "column": 15 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -239832,16 +244148,17 @@ "postfix": false, "binop": null }, - "start": 54912, - "end": 54913, + "value": "value", + "start": 56511, + "end": 56516, "loc": { "start": { - "line": 1481, - "column": 29 + "line": 1554, + "column": 15 }, "end": { - "line": 1481, - "column": 30 + "line": 1554, + "column": 20 } } }, @@ -239857,42 +244174,41 @@ "postfix": false, "binop": null }, - "start": 54913, - "end": 54914, + "start": 56516, + "end": 56517, "loc": { "start": { - "line": 1481, - "column": 30 + "line": 1554, + "column": 20 }, "end": { - "line": 1481, - "column": 31 + "line": 1554, + "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": 54914, - "end": 54915, + "start": 56518, + "end": 56519, "loc": { "start": { - "line": 1481, - "column": 31 + "line": 1554, + "column": 22 }, "end": { - "line": 1481, - "column": 32 + "line": 1554, + "column": 23 } } }, @@ -239911,15 +244227,15 @@ "updateContext": null }, "value": "this", - "start": 54924, - "end": 54928, + "start": 56528, + "end": 56532, "loc": { "start": { - "line": 1482, + "line": 1555, "column": 8 }, "end": { - "line": 1482, + "line": 1555, "column": 12 } } @@ -239937,15 +244253,15 @@ "binop": null, "updateContext": null }, - "start": 54928, - "end": 54929, + "start": 56532, + "end": 56533, "loc": { "start": { - "line": 1482, + "line": 1555, "column": 12 }, "end": { - "line": 1482, + "line": 1555, "column": 13 } } @@ -239962,50 +244278,51 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 54929, - "end": 54937, + "value": "_matrix", + "start": 56533, + "end": 56540, "loc": { "start": { - "line": 1482, + "line": 1555, "column": 13 }, "end": { - "line": 1482, - "column": 21 + "line": 1555, + "column": 20 } } }, { "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": 54937, - "end": 54938, + "start": 56540, + "end": 56541, "loc": { "start": { - "line": 1482, - "column": 21 + "line": 1555, + "column": 20 }, "end": { - "line": 1482, - "column": 22 + "line": 1555, + "column": 21 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -240013,50 +244330,50 @@ "postfix": false, "binop": null }, - "start": 54938, - "end": 54939, + "value": "set", + "start": 56541, + "end": 56544, "loc": { "start": { - "line": 1482, - "column": 22 + "line": 1555, + "column": 21 }, "end": { - "line": 1482, - "column": 23 + "line": 1555, + "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": 54939, - "end": 54940, + "start": 56544, + "end": 56545, "loc": { "start": { - "line": 1482, - "column": 23 + "line": 1555, + "column": 24 }, "end": { - "line": 1482, - "column": 24 + "line": 1555, + "column": 25 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -240064,32 +244381,44 @@ "postfix": false, "binop": null }, - "start": 54945, - "end": 54946, + "value": "value", + "start": 56545, + "end": 56550, "loc": { "start": { - "line": 1483, - "column": 4 + "line": 1555, + "column": 25 }, "end": { - "line": 1483, - "column": 5 + "line": 1555, + "column": 30 } } }, { - "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n ", - "start": 54952, - "end": 55154, + "type": { + "label": "||", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 1, + "updateContext": null + }, + "value": "||", + "start": 56551, + "end": 56553, "loc": { "start": { - "line": 1485, - "column": 4 + "line": 1555, + "column": 31 }, "end": { - "line": 1491, - "column": 7 + "line": 1555, + "column": 33 } } }, @@ -240097,7 +244426,33 @@ "type": { "label": "name", "beforeExpr": false, - "startsExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "DEFAULT_MATRIX", + "start": 56554, + "end": 56568, + "loc": { + "start": { + "line": 1555, + "column": 34 + }, + "end": { + "line": 1555, + "column": 48 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -240105,50 +244460,49 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 55159, - "end": 55162, + "start": 56568, + "end": 56569, "loc": { "start": { - "line": 1492, - "column": 4 + "line": 1555, + "column": 48 }, "end": { - "line": 1492, - "column": 7 + "line": 1555, + "column": 49 } } }, { "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": "rotation", - "start": 55163, - "end": 55171, + "start": 56569, + "end": 56570, "loc": { "start": { - "line": 1492, - "column": 8 + "line": 1555, + "column": 49 }, "end": { - "line": 1492, - "column": 16 + "line": 1555, + "column": 50 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -240157,22 +244511,23 @@ "postfix": false, "binop": null }, - "start": 55171, - "end": 55172, + "value": "math", + "start": 56580, + "end": 56584, "loc": { "start": { - "line": 1492, - "column": 16 + "line": 1557, + "column": 8 }, "end": { - "line": 1492, - "column": 17 + "line": 1557, + "column": 12 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -240180,25 +244535,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 55172, - "end": 55173, + "start": 56584, + "end": 56585, "loc": { "start": { - "line": 1492, - "column": 17 + "line": 1557, + "column": 12 }, "end": { - "line": 1492, - "column": 18 + "line": 1557, + "column": 13 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -240207,44 +244563,42 @@ "postfix": false, "binop": null }, - "start": 55174, - "end": 55175, + "value": "quaternionToRotationMat4", + "start": 56585, + "end": 56609, "loc": { "start": { - "line": 1492, - "column": 19 + "line": 1557, + "column": 13 }, "end": { - "line": 1492, - "column": 20 + "line": 1557, + "column": 37 } } }, { "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": 55184, - "end": 55190, + "start": 56609, + "end": 56610, "loc": { "start": { - "line": 1493, - "column": 8 + "line": 1557, + "column": 37 }, "end": { - "line": 1493, - "column": 14 + "line": 1557, + "column": 38 } } }, @@ -240263,16 +244617,16 @@ "updateContext": null }, "value": "this", - "start": 55191, - "end": 55195, + "start": 56610, + "end": 56614, "loc": { "start": { - "line": 1493, - "column": 15 + "line": 1557, + "column": 38 }, "end": { - "line": 1493, - "column": 19 + "line": 1557, + "column": 42 } } }, @@ -240289,16 +244643,16 @@ "binop": null, "updateContext": null }, - "start": 55195, - "end": 55196, + "start": 56614, + "end": 56615, "loc": { "start": { - "line": 1493, - "column": 19 + "line": 1557, + "column": 42 }, "end": { - "line": 1493, - "column": 20 + "line": 1557, + "column": 43 } } }, @@ -240314,23 +244668,23 @@ "postfix": false, "binop": null }, - "value": "_rotation", - "start": 55196, - "end": 55205, + "value": "_quaternion", + "start": 56615, + "end": 56626, "loc": { "start": { - "line": 1493, - "column": 20 + "line": 1557, + "column": 43 }, "end": { - "line": 1493, - "column": 29 + "line": 1557, + "column": 54 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -240341,57 +244695,70 @@ "binop": null, "updateContext": null }, - "start": 55205, - "end": 55206, + "start": 56626, + "end": 56627, "loc": { "start": { - "line": 1493, - "column": 29 + "line": 1557, + "column": 54 }, "end": { - "line": 1493, - "column": 30 + "line": 1557, + "column": 55 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 55211, - "end": 55212, + "value": "this", + "start": 56628, + "end": 56632, "loc": { "start": { - "line": 1494, - "column": 4 + "line": 1557, + "column": 56 }, "end": { - "line": 1494, - "column": 5 + "line": 1557, + "column": 60 } } }, { - "type": "CommentBlock", - "value": "*\n * Sets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", - "start": 55218, - "end": 55366, + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 56632, + "end": 56633, "loc": { "start": { - "line": 1496, - "column": 4 + "line": 1557, + "column": 60 }, "end": { - "line": 1502, - "column": 7 + "line": 1557, + "column": 61 } } }, @@ -240407,25 +244774,25 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 55371, - "end": 55374, + "value": "_worldRotationMatrix", + "start": 56633, + "end": 56653, "loc": { "start": { - "line": 1503, - "column": 4 + "line": 1557, + "column": 61 }, "end": { - "line": 1503, - "column": 7 + "line": 1557, + "column": 81 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -240433,42 +244800,42 @@ "postfix": false, "binop": null }, - "value": "quaternion", - "start": 55375, - "end": 55385, + "start": 56653, + "end": 56654, "loc": { "start": { - "line": 1503, - "column": 8 + "line": 1557, + "column": 81 }, "end": { - "line": 1503, - "column": 18 + "line": 1557, + "column": 82 } } }, { "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": 55385, - "end": 55386, + "start": 56654, + "end": 56655, "loc": { "start": { - "line": 1503, - "column": 18 + "line": 1557, + "column": 82 }, "end": { - "line": 1503, - "column": 19 + "line": 1557, + "column": 83 } } }, @@ -240484,23 +244851,23 @@ "postfix": false, "binop": null }, - "value": "value", - "start": 55386, - "end": 55391, + "value": "math", + "start": 56664, + "end": 56668, "loc": { "start": { - "line": 1503, - "column": 19 + "line": 1558, + "column": 8 }, "end": { - "line": 1503, - "column": 24 + "line": 1558, + "column": 12 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -240508,24 +244875,51 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 56668, + "end": 56669, + "loc": { + "start": { + "line": 1558, + "column": 12 + }, + "end": { + "line": 1558, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 55391, - "end": 55392, + "value": "conjugateQuaternion", + "start": 56669, + "end": 56688, "loc": { "start": { - "line": 1503, - "column": 24 + "line": 1558, + "column": 13 }, "end": { - "line": 1503, - "column": 25 + "line": 1558, + "column": 32 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -240535,16 +244929,16 @@ "postfix": false, "binop": null }, - "start": 55393, - "end": 55394, + "start": 56688, + "end": 56689, "loc": { "start": { - "line": 1503, - "column": 26 + "line": 1558, + "column": 32 }, "end": { - "line": 1503, - "column": 27 + "line": 1558, + "column": 33 } } }, @@ -240563,16 +244957,16 @@ "updateContext": null }, "value": "this", - "start": 55403, - "end": 55407, + "start": 56689, + "end": 56693, "loc": { "start": { - "line": 1504, - "column": 8 + "line": 1558, + "column": 33 }, "end": { - "line": 1504, - "column": 12 + "line": 1558, + "column": 37 } } }, @@ -240589,16 +244983,16 @@ "binop": null, "updateContext": null }, - "start": 55407, - "end": 55408, + "start": 56693, + "end": 56694, "loc": { "start": { - "line": 1504, - "column": 12 + "line": 1558, + "column": 37 }, "end": { - "line": 1504, - "column": 13 + "line": 1558, + "column": 38 } } }, @@ -240615,23 +245009,23 @@ "binop": null }, "value": "_quaternion", - "start": 55408, - "end": 55419, + "start": 56694, + "end": 56705, "loc": { "start": { - "line": 1504, - "column": 13 + "line": 1558, + "column": 38 }, "end": { - "line": 1504, - "column": 24 + "line": 1558, + "column": 49 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -240641,22 +245035,23 @@ "binop": null, "updateContext": null }, - "start": 55419, - "end": 55420, + "start": 56705, + "end": 56706, "loc": { "start": { - "line": 1504, - "column": 24 + "line": 1558, + "column": 49 }, "end": { - "line": 1504, - "column": 25 + "line": 1558, + "column": 50 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -240664,44 +245059,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "set", - "start": 55420, - "end": 55423, + "value": "this", + "start": 56707, + "end": 56711, "loc": { "start": { - "line": 1504, - "column": 25 + "line": 1558, + "column": 51 }, "end": { - "line": 1504, - "column": 28 + "line": 1558, + "column": 55 } } }, { "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": 55423, - "end": 55424, + "start": 56711, + "end": 56712, "loc": { "start": { - "line": 1504, - "column": 28 + "line": 1558, + "column": 55 }, "end": { - "line": 1504, - "column": 29 + "line": 1558, + "column": 56 } } }, @@ -240717,52 +245114,50 @@ "postfix": false, "binop": null }, - "value": "value", - "start": 55424, - "end": 55429, + "value": "_conjugateQuaternion", + "start": 56712, + "end": 56732, "loc": { "start": { - "line": 1504, - "column": 29 + "line": 1558, + "column": 56 }, "end": { - "line": 1504, - "column": 34 + "line": 1558, + "column": 76 } } }, { "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": 55430, - "end": 55432, + "start": 56732, + "end": 56733, "loc": { "start": { - "line": 1504, - "column": 35 + "line": 1558, + "column": 76 }, "end": { - "line": 1504, - "column": 37 + "line": 1558, + "column": 77 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -240771,22 +245166,22 @@ "binop": null, "updateContext": null }, - "start": 55433, - "end": 55434, + "start": 56733, + "end": 56734, "loc": { "start": { - "line": 1504, - "column": 38 + "line": 1558, + "column": 77 }, "end": { - "line": 1504, - "column": 39 + "line": 1558, + "column": 78 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -240794,27 +245189,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 55434, - "end": 55435, + "value": "math", + "start": 56743, + "end": 56747, "loc": { "start": { - "line": 1504, - "column": 39 + "line": 1559, + "column": 8 }, "end": { - "line": 1504, - "column": 40 + "line": 1559, + "column": 12 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -240824,22 +245218,22 @@ "binop": null, "updateContext": null }, - "start": 55435, - "end": 55436, + "start": 56747, + "end": 56748, "loc": { "start": { - "line": 1504, - "column": 40 + "line": 1559, + "column": 12 }, "end": { - "line": 1504, - "column": 41 + "line": 1559, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -240847,52 +245241,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 55437, - "end": 55438, + "value": "quaternionToRotationMat4", + "start": 56748, + "end": 56772, "loc": { "start": { - "line": 1504, - "column": 42 + "line": 1559, + "column": 13 }, "end": { - "line": 1504, - "column": 43 + "line": 1559, + "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": 55438, - "end": 55439, + "start": 56772, + "end": 56773, "loc": { "start": { - "line": 1504, - "column": 43 + "line": 1559, + "column": 37 }, "end": { - "line": 1504, - "column": 44 + "line": 1559, + "column": 38 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -240903,24 +245296,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 55440, - "end": 55441, + "value": "this", + "start": 56773, + "end": 56777, "loc": { "start": { - "line": 1504, - "column": 45 + "line": 1559, + "column": 38 }, "end": { - "line": 1504, - "column": 46 + "line": 1559, + "column": 42 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -240930,22 +245323,22 @@ "binop": null, "updateContext": null }, - "start": 55441, - "end": 55442, + "start": 56777, + "end": 56778, "loc": { "start": { - "line": 1504, - "column": 46 + "line": 1559, + "column": 42 }, "end": { - "line": 1504, - "column": 47 + "line": 1559, + "column": 43 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -240953,27 +245346,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 55443, - "end": 55444, + "value": "_quaternion", + "start": 56778, + "end": 56789, "loc": { "start": { - "line": 1504, - "column": 48 + "line": 1559, + "column": 43 }, "end": { - "line": 1504, - "column": 49 + "line": 1559, + "column": 54 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -240983,48 +245375,51 @@ "binop": null, "updateContext": null }, - "start": 55444, - "end": 55445, + "start": 56789, + "end": 56790, "loc": { "start": { - "line": 1504, - "column": 49 + "line": 1559, + "column": 54 }, "end": { - "line": 1504, - "column": 50 + "line": 1559, + "column": 55 } } }, { "type": { - "label": ")", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 55445, - "end": 55446, + "value": "this", + "start": 56791, + "end": 56795, "loc": { "start": { - "line": 1504, - "column": 50 + "line": 1559, + "column": 56 }, "end": { - "line": 1504, - "column": 51 + "line": 1559, + "column": 60 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -241034,16 +245429,16 @@ "binop": null, "updateContext": null }, - "start": 55446, - "end": 55447, + "start": 56795, + "end": 56796, "loc": { "start": { - "line": 1504, - "column": 51 + "line": 1559, + "column": 60 }, "end": { - "line": 1504, - "column": 52 + "line": 1559, + "column": 61 } } }, @@ -241059,23 +245454,23 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 55456, - "end": 55460, + "value": "_worldRotationMatrixConjugate", + "start": 56796, + "end": 56825, "loc": { "start": { - "line": 1505, - "column": 8 + "line": 1559, + "column": 61 }, "end": { - "line": 1505, - "column": 12 + "line": 1559, + "column": 90 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -241083,70 +245478,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 55460, - "end": 55461, - "loc": { - "start": { - "line": 1505, - "column": 12 - }, - "end": { - "line": 1505, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "value": "quaternionToEuler", - "start": 55461, - "end": 55478, + "start": 56825, + "end": 56826, "loc": { "start": { - "line": 1505, - "column": 13 + "line": 1559, + "column": 90 }, "end": { - "line": 1505, - "column": 30 + "line": 1559, + "column": 91 } } }, { "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": 55478, - "end": 55479, + "start": 56826, + "end": 56827, "loc": { "start": { - "line": 1505, - "column": 30 + "line": 1559, + "column": 91 }, "end": { - "line": 1505, - "column": 31 + "line": 1559, + "column": 92 } } }, @@ -241165,16 +245534,16 @@ "updateContext": null }, "value": "this", - "start": 55479, - "end": 55483, + "start": 56836, + "end": 56840, "loc": { "start": { - "line": 1505, - "column": 31 + "line": 1560, + "column": 8 }, "end": { - "line": 1505, - "column": 35 + "line": 1560, + "column": 12 } } }, @@ -241191,16 +245560,16 @@ "binop": null, "updateContext": null }, - "start": 55483, - "end": 55484, + "start": 56840, + "end": 56841, "loc": { "start": { - "line": 1505, - "column": 35 + "line": 1560, + "column": 12 }, "end": { - "line": 1505, - "column": 36 + "line": 1560, + "column": 13 } } }, @@ -241216,24 +245585,24 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 55484, - "end": 55495, + "value": "_matrix", + "start": 56841, + "end": 56848, "loc": { "start": { - "line": 1505, - "column": 36 + "line": 1560, + "column": 13 }, "end": { - "line": 1505, - "column": 47 + "line": 1560, + "column": 20 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -241243,22 +245612,22 @@ "binop": null, "updateContext": null }, - "start": 55495, - "end": 55496, + "start": 56848, + "end": 56849, "loc": { "start": { - "line": 1505, - "column": 47 + "line": 1560, + "column": 20 }, "end": { - "line": 1505, - "column": 48 + "line": 1560, + "column": 21 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -241266,46 +245635,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "XYZ", - "start": 55497, - "end": 55502, + "value": "set", + "start": 56849, + "end": 56852, "loc": { "start": { - "line": 1505, - "column": 49 + "line": 1560, + "column": 21 }, "end": { - "line": 1505, - "column": 54 + "line": 1560, + "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": 55502, - "end": 55503, + "start": 56852, + "end": 56853, "loc": { "start": { - "line": 1505, - "column": 54 + "line": 1560, + "column": 24 }, "end": { - "line": 1505, - "column": 55 + "line": 1560, + "column": 25 } } }, @@ -241324,16 +245691,16 @@ "updateContext": null }, "value": "this", - "start": 55504, - "end": 55508, + "start": 56853, + "end": 56857, "loc": { "start": { - "line": 1505, - "column": 56 + "line": 1560, + "column": 25 }, "end": { - "line": 1505, - "column": 60 + "line": 1560, + "column": 29 } } }, @@ -241350,16 +245717,16 @@ "binop": null, "updateContext": null }, - "start": 55508, - "end": 55509, + "start": 56857, + "end": 56858, "loc": { "start": { - "line": 1505, - "column": 60 + "line": 1560, + "column": 29 }, "end": { - "line": 1505, - "column": 61 + "line": 1560, + "column": 30 } } }, @@ -241375,17 +245742,17 @@ "postfix": false, "binop": null }, - "value": "_rotation", - "start": 55509, - "end": 55518, + "value": "_worldRotationMatrix", + "start": 56858, + "end": 56878, "loc": { "start": { - "line": 1505, - "column": 61 + "line": 1560, + "column": 30 }, "end": { - "line": 1505, - "column": 70 + "line": 1560, + "column": 50 } } }, @@ -241401,16 +245768,16 @@ "postfix": false, "binop": null }, - "start": 55518, - "end": 55519, + "start": 56878, + "end": 56879, "loc": { "start": { - "line": 1505, - "column": 70 + "line": 1560, + "column": 50 }, "end": { - "line": 1505, - "column": 71 + "line": 1560, + "column": 51 } } }, @@ -241427,23 +245794,22 @@ "binop": null, "updateContext": null }, - "start": 55519, - "end": 55520, + "start": 56879, + "end": 56880, "loc": { "start": { - "line": 1505, - "column": 71 + "line": 1560, + "column": 51 }, "end": { - "line": 1505, - "column": 72 + "line": 1560, + "column": 52 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -241451,19 +245817,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 55529, - "end": 55533, + "value": "math", + "start": 56889, + "end": 56893, "loc": { "start": { - "line": 1506, + "line": 1561, "column": 8 }, "end": { - "line": 1506, + "line": 1561, "column": 12 } } @@ -241481,15 +245846,15 @@ "binop": null, "updateContext": null }, - "start": 55533, - "end": 55534, + "start": 56893, + "end": 56894, "loc": { "start": { - "line": 1506, + "line": 1561, "column": 12 }, "end": { - "line": 1506, + "line": 1561, "column": 13 } } @@ -241506,17 +245871,17 @@ "postfix": false, "binop": null }, - "value": "_setWorldMatrixDirty", - "start": 55534, - "end": 55554, + "value": "translateMat4v", + "start": 56894, + "end": 56908, "loc": { "start": { - "line": 1506, + "line": 1561, "column": 13 }, "end": { - "line": 1506, - "column": 33 + "line": 1561, + "column": 27 } } }, @@ -241532,48 +245897,51 @@ "postfix": false, "binop": null }, - "start": 55554, - "end": 55555, + "start": 56908, + "end": 56909, "loc": { "start": { - "line": 1506, - "column": 33 + "line": 1561, + "column": 27 }, "end": { - "line": 1506, - "column": 34 + "line": 1561, + "column": 28 } } }, { "type": { - "label": ")", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 55555, - "end": 55556, + "value": "this", + "start": 56909, + "end": 56913, "loc": { "start": { - "line": 1506, - "column": 34 + "line": 1561, + "column": 28 }, "end": { - "line": 1506, - "column": 35 + "line": 1561, + "column": 32 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -241583,23 +245951,22 @@ "binop": null, "updateContext": null }, - "start": 55556, - "end": 55557, + "start": 56913, + "end": 56914, "loc": { "start": { - "line": 1506, - "column": 35 + "line": 1561, + "column": 32 }, "end": { - "line": 1506, - "column": 36 + "line": 1561, + "column": 33 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -241607,28 +245974,54 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "_position", + "start": 56914, + "end": 56923, + "loc": { + "start": { + "line": 1561, + "column": 33 + }, + "end": { + "line": 1561, + "column": 42 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": "this", - "start": 55566, - "end": 55570, + "start": 56923, + "end": 56924, "loc": { "start": { - "line": 1507, - "column": 8 + "line": 1561, + "column": 42 }, "end": { - "line": 1507, - "column": 12 + "line": 1561, + "column": 43 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -241637,49 +246030,50 @@ "binop": null, "updateContext": null }, - "start": 55570, - "end": 55571, + "value": "this", + "start": 56925, + "end": 56929, "loc": { "start": { - "line": 1507, - "column": 12 + "line": 1561, + "column": 44 }, "end": { - "line": 1507, - "column": 13 + "line": 1561, + "column": 48 } } }, { "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": "_sceneModelDirty", - "start": 55571, - "end": 55587, + "start": 56929, + "end": 56930, "loc": { "start": { - "line": 1507, - "column": 13 + "line": 1561, + "column": 48 }, "end": { - "line": 1507, - "column": 29 + "line": 1561, + "column": 49 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -241688,16 +246082,17 @@ "postfix": false, "binop": null }, - "start": 55587, - "end": 55588, + "value": "_matrix", + "start": 56930, + "end": 56937, "loc": { "start": { - "line": 1507, - "column": 29 + "line": 1561, + "column": 49 }, "end": { - "line": 1507, - "column": 30 + "line": 1561, + "column": 56 } } }, @@ -241713,16 +246108,16 @@ "postfix": false, "binop": null }, - "start": 55588, - "end": 55589, + "start": 56937, + "end": 56938, "loc": { "start": { - "line": 1507, - "column": 30 + "line": 1561, + "column": 56 }, "end": { - "line": 1507, - "column": 31 + "line": 1561, + "column": 57 } } }, @@ -241739,16 +246134,16 @@ "binop": null, "updateContext": null }, - "start": 55589, - "end": 55590, + "start": 56938, + "end": 56939, "loc": { "start": { - "line": 1507, - "column": 31 + "line": 1561, + "column": 57 }, "end": { - "line": 1507, - "column": 32 + "line": 1561, + "column": 58 } } }, @@ -241767,15 +246162,15 @@ "updateContext": null }, "value": "this", - "start": 55599, - "end": 55603, + "start": 56949, + "end": 56953, "loc": { "start": { - "line": 1508, + "line": 1563, "column": 8 }, "end": { - "line": 1508, + "line": 1563, "column": 12 } } @@ -241793,15 +246188,15 @@ "binop": null, "updateContext": null }, - "start": 55603, - "end": 55604, + "start": 56953, + "end": 56954, "loc": { "start": { - "line": 1508, + "line": 1563, "column": 12 }, "end": { - "line": 1508, + "line": 1563, "column": 13 } } @@ -241818,67 +246213,72 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 55604, - "end": 55612, + "value": "_matrixDirty", + "start": 56954, + "end": 56966, "loc": { "start": { - "line": 1508, + "line": 1563, "column": 13 }, "end": { - "line": 1508, - "column": 21 + "line": 1563, + "column": 25 } } }, { "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": 55612, - "end": 55613, + "value": "=", + "start": 56967, + "end": 56968, "loc": { "start": { - "line": 1508, - "column": 21 + "line": 1563, + "column": 26 }, "end": { - "line": 1508, - "column": 22 + "line": 1563, + "column": 27 } } }, { "type": { - "label": ")", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 55613, - "end": 55614, + "value": "false", + "start": 56969, + "end": 56974, "loc": { "start": { - "line": 1508, - "column": 22 + "line": 1563, + "column": 28 }, "end": { - "line": 1508, - "column": 23 + "line": 1563, + "column": 33 } } }, @@ -241895,83 +246295,70 @@ "binop": null, "updateContext": null }, - "start": 55614, - "end": 55615, + "start": 56974, + "end": 56975, "loc": { "start": { - "line": 1508, - "column": 23 + "line": 1563, + "column": 33 }, "end": { - "line": 1508, - "column": 24 + "line": 1563, + "column": 34 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 55620, - "end": 55621, - "loc": { - "start": { - "line": 1509, - "column": 4 - }, - "end": { - "line": 1509, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n ", - "start": 55627, - "end": 55775, + "value": "this", + "start": 56984, + "end": 56988, "loc": { "start": { - "line": 1511, - "column": 4 + "line": 1564, + "column": 8 }, "end": { - "line": 1517, - "column": 7 + "line": 1564, + "column": 12 } } }, { "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": "get", - "start": 55780, - "end": 55783, + "start": 56988, + "end": 56989, "loc": { "start": { - "line": 1518, - "column": 4 + "line": 1564, + "column": 12 }, "end": { - "line": 1518, - "column": 7 + "line": 1564, + "column": 13 } } }, @@ -241987,17 +246374,17 @@ "postfix": false, "binop": null }, - "value": "quaternion", - "start": 55784, - "end": 55794, + "value": "_setWorldMatrixDirty", + "start": 56989, + "end": 57009, "loc": { "start": { - "line": 1518, - "column": 8 + "line": 1564, + "column": 13 }, "end": { - "line": 1518, - "column": 18 + "line": 1564, + "column": 33 } } }, @@ -242013,16 +246400,16 @@ "postfix": false, "binop": null }, - "start": 55794, - "end": 55795, + "start": 57009, + "end": 57010, "loc": { "start": { - "line": 1518, - "column": 18 + "line": 1564, + "column": 33 }, "end": { - "line": 1518, - "column": 19 + "line": 1564, + "column": 34 } } }, @@ -242038,48 +246425,22 @@ "postfix": false, "binop": null }, - "start": 55795, - "end": 55796, - "loc": { - "start": { - "line": 1518, - "column": 19 - }, - "end": { - "line": 1518, - "column": 20 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 55797, - "end": 55798, + "start": 57010, + "end": 57011, "loc": { "start": { - "line": 1518, - "column": 21 + "line": 1564, + "column": 34 }, "end": { - "line": 1518, - "column": 22 + "line": 1564, + "column": 35 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -242090,17 +246451,16 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 55807, - "end": 55813, + "start": 57011, + "end": 57012, "loc": { "start": { - "line": 1519, - "column": 8 + "line": 1564, + "column": 35 }, - "end": { - "line": 1519, - "column": 14 + "end": { + "line": 1564, + "column": 36 } } }, @@ -242119,16 +246479,16 @@ "updateContext": null }, "value": "this", - "start": 55814, - "end": 55818, + "start": 57021, + "end": 57025, "loc": { "start": { - "line": 1519, - "column": 15 + "line": 1565, + "column": 8 }, "end": { - "line": 1519, - "column": 19 + "line": 1565, + "column": 12 } } }, @@ -242145,16 +246505,16 @@ "binop": null, "updateContext": null }, - "start": 55818, - "end": 55819, + "start": 57025, + "end": 57026, "loc": { "start": { - "line": 1519, - "column": 19 + "line": 1565, + "column": 12 }, "end": { - "line": 1519, - "column": 20 + "line": 1565, + "column": 13 } } }, @@ -242170,49 +246530,48 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 55819, - "end": 55830, + "value": "_sceneModelDirty", + "start": 57026, + "end": 57042, "loc": { "start": { - "line": 1519, - "column": 20 + "line": 1565, + "column": 13 }, "end": { - "line": 1519, - "column": 31 + "line": 1565, + "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": 55830, - "end": 55831, + "start": 57042, + "end": 57043, "loc": { "start": { - "line": 1519, - "column": 31 + "line": 1565, + "column": 29 }, "end": { - "line": 1519, - "column": 32 + "line": 1565, + "column": 30 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -242222,38 +246581,49 @@ "postfix": false, "binop": null }, - "start": 55836, - "end": 55837, + "start": 57043, + "end": 57044, "loc": { "start": { - "line": 1520, - "column": 4 + "line": 1565, + "column": 30 }, "end": { - "line": 1520, - "column": 5 + "line": 1565, + "column": 31 } } }, { - "type": "CommentBlock", - "value": "*\n * Sets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", - "start": 55843, - "end": 55994, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 57044, + "end": 57045, "loc": { "start": { - "line": 1522, - "column": 4 + "line": 1565, + "column": 31 }, "end": { - "line": 1529, - "column": 7 + "line": 1565, + "column": 32 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -242261,52 +246631,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "set", - "start": 55999, - "end": 56002, + "value": "this", + "start": 57054, + "end": 57058, "loc": { "start": { - "line": 1530, - "column": 4 + "line": 1566, + "column": 8 }, "end": { - "line": 1530, - "column": 7 + "line": 1566, + "column": 12 } } }, { "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": "scale", - "start": 56003, - "end": 56008, + "start": 57058, + "end": 57059, "loc": { "start": { - "line": 1530, - "column": 8 + "line": 1566, + "column": 12 }, "end": { - "line": 1530, + "line": 1566, "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -242315,23 +246686,24 @@ "postfix": false, "binop": null }, - "start": 56008, - "end": 56009, + "value": "glRedraw", + "start": 57059, + "end": 57067, "loc": { "start": { - "line": 1530, + "line": 1566, "column": 13 }, "end": { - "line": 1530, - "column": 14 + "line": 1566, + "column": 21 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -242340,17 +246712,16 @@ "postfix": false, "binop": null }, - "value": "value", - "start": 56009, - "end": 56014, + "start": 57067, + "end": 57068, "loc": { "start": { - "line": 1530, - "column": 14 + "line": 1566, + "column": 21 }, "end": { - "line": 1530, - "column": 19 + "line": 1566, + "column": 22 } } }, @@ -242366,57 +246737,42 @@ "postfix": false, "binop": null }, - "start": 56014, - "end": 56015, + "start": 57068, + "end": 57069, "loc": { "start": { - "line": 1530, - "column": 19 + "line": 1566, + "column": 22 }, "end": { - "line": 1530, - "column": 20 + "line": 1566, + "column": 23 } } }, { "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": 56016, - "end": 56017, - "loc": { - "start": { - "line": 1530, - "column": 21 - }, - "end": { - "line": 1530, - "column": 22 - } - } - }, - { - "type": "CommentLine", - "value": " NOP - deprecated", - "start": 56026, - "end": 56045, + "start": 57069, + "end": 57070, "loc": { "start": { - "line": 1531, - "column": 8 + "line": 1566, + "column": 23 }, "end": { - "line": 1531, - "column": 27 + "line": 1566, + "column": 24 } } }, @@ -242432,31 +246788,31 @@ "postfix": false, "binop": null }, - "start": 56050, - "end": 56051, + "start": 57075, + "end": 57076, "loc": { "start": { - "line": 1532, + "line": 1567, "column": 4 }, "end": { - "line": 1532, + "line": 1567, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n ", - "start": 56057, - "end": 56208, + "value": "*\n * Gets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", + "start": 57082, + "end": 57275, "loc": { "start": { - "line": 1534, + "line": 1569, "column": 4 }, "end": { - "line": 1541, + "line": 1575, "column": 7 } } @@ -242474,15 +246830,15 @@ "binop": null }, "value": "get", - "start": 56213, - "end": 56216, + "start": 57280, + "end": 57283, "loc": { "start": { - "line": 1542, + "line": 1576, "column": 4 }, "end": { - "line": 1542, + "line": 1576, "column": 7 } } @@ -242499,17 +246855,17 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 56217, - "end": 56222, + "value": "matrix", + "start": 57284, + "end": 57290, "loc": { "start": { - "line": 1542, + "line": 1576, "column": 8 }, "end": { - "line": 1542, - "column": 13 + "line": 1576, + "column": 14 } } }, @@ -242525,16 +246881,16 @@ "postfix": false, "binop": null }, - "start": 56222, - "end": 56223, + "start": 57290, + "end": 57291, "loc": { "start": { - "line": 1542, - "column": 13 + "line": 1576, + "column": 14 }, "end": { - "line": 1542, - "column": 14 + "line": 1576, + "column": 15 } } }, @@ -242550,16 +246906,16 @@ "postfix": false, "binop": null }, - "start": 56223, - "end": 56224, + "start": 57291, + "end": 57292, "loc": { "start": { - "line": 1542, - "column": 14 + "line": 1576, + "column": 15 }, "end": { - "line": 1542, - "column": 15 + "line": 1576, + "column": 16 } } }, @@ -242575,24 +246931,24 @@ "postfix": false, "binop": null }, - "start": 56225, - "end": 56226, + "start": 57293, + "end": 57294, "loc": { "start": { - "line": 1542, - "column": 16 + "line": 1576, + "column": 17 }, "end": { - "line": 1542, - "column": 17 + "line": 1576, + "column": 18 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -242602,17 +246958,42 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 56235, - "end": 56241, + "value": "if", + "start": 57303, + "end": 57305, "loc": { "start": { - "line": 1543, + "line": 1577, "column": 8 }, "end": { - "line": 1543, - "column": 14 + "line": 1577, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 57306, + "end": 57307, + "loc": { + "start": { + "line": 1577, + "column": 11 + }, + "end": { + "line": 1577, + "column": 12 } } }, @@ -242631,16 +247012,16 @@ "updateContext": null }, "value": "this", - "start": 56242, - "end": 56246, + "start": 57307, + "end": 57311, "loc": { "start": { - "line": 1543, - "column": 15 + "line": 1577, + "column": 12 }, "end": { - "line": 1543, - "column": 19 + "line": 1577, + "column": 16 } } }, @@ -242657,16 +247038,16 @@ "binop": null, "updateContext": null }, - "start": 56246, - "end": 56247, + "start": 57311, + "end": 57312, "loc": { "start": { - "line": 1543, - "column": 19 + "line": 1577, + "column": 16 }, "end": { - "line": 1543, - "column": 20 + "line": 1577, + "column": 17 } } }, @@ -242682,51 +247063,50 @@ "postfix": false, "binop": null }, - "value": "_scale", - "start": 56247, - "end": 56253, + "value": "_matrixDirty", + "start": 57312, + "end": 57324, "loc": { "start": { - "line": 1543, - "column": 20 + "line": 1577, + "column": 17 }, "end": { - "line": 1543, - "column": 26 + "line": 1577, + "column": 29 } } }, { "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": 56253, - "end": 56254, + "start": 57324, + "end": 57325, "loc": { "start": { - "line": 1543, - "column": 26 + "line": 1577, + "column": 29 }, "end": { - "line": 1543, - "column": 27 + "line": 1577, + "column": 30 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -242734,58 +247114,70 @@ "postfix": false, "binop": null }, - "start": 56259, - "end": 56260, + "start": 57326, + "end": 57327, "loc": { "start": { - "line": 1544, - "column": 4 + "line": 1577, + "column": 31 }, "end": { - "line": 1544, - "column": 5 + "line": 1577, + "column": 32 } } }, { - "type": "CommentBlock", - "value": "*\n * Sets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", - "start": 56266, - "end": 56459, + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 57340, + "end": 57344, "loc": { "start": { - "line": 1546, - "column": 4 + "line": 1578, + "column": 12 }, "end": { - "line": 1552, - "column": 7 + "line": 1578, + "column": 16 } } }, { "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": "set", - "start": 56464, - "end": 56467, + "start": 57344, + "end": 57345, "loc": { "start": { - "line": 1553, - "column": 4 + "line": 1578, + "column": 16 }, "end": { - "line": 1553, - "column": 7 + "line": 1578, + "column": 17 } } }, @@ -242801,17 +247193,17 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 56468, - "end": 56474, + "value": "_rebuildMatrices", + "start": 57345, + "end": 57361, "loc": { "start": { - "line": 1553, - "column": 8 + "line": 1578, + "column": 17 }, "end": { - "line": 1553, - "column": 14 + "line": 1578, + "column": 33 } } }, @@ -242827,24 +247219,24 @@ "postfix": false, "binop": null }, - "start": 56474, - "end": 56475, + "start": 57361, + "end": 57362, "loc": { "start": { - "line": 1553, - "column": 14 + "line": 1578, + "column": 33 }, "end": { - "line": 1553, - "column": 15 + "line": 1578, + "column": 34 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -242852,23 +247244,48 @@ "postfix": false, "binop": null }, - "value": "value", - "start": 56475, - "end": 56480, + "start": 57362, + "end": 57363, "loc": { "start": { - "line": 1553, - "column": 15 + "line": 1578, + "column": 34 }, "end": { - "line": 1553, - "column": 20 + "line": 1578, + "column": 35 } } }, { "type": { - "label": ")", + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 57363, + "end": 57364, + "loc": { + "start": { + "line": 1578, + "column": 35 + }, + "end": { + "line": 1578, + "column": 36 + } + } + }, + { + "type": { + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -242878,41 +247295,44 @@ "postfix": false, "binop": null }, - "start": 56480, - "end": 56481, + "start": 57373, + "end": 57374, "loc": { "start": { - "line": 1553, - "column": 20 + "line": 1579, + "column": 8 }, "end": { - "line": 1553, - "column": 21 + "line": 1579, + "column": 9 } } }, { "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": 56482, - "end": 56483, + "value": "return", + "start": 57383, + "end": 57389, "loc": { "start": { - "line": 1553, - "column": 22 + "line": 1580, + "column": 8 }, "end": { - "line": 1553, - "column": 23 + "line": 1580, + "column": 14 } } }, @@ -242931,16 +247351,16 @@ "updateContext": null }, "value": "this", - "start": 56492, - "end": 56496, + "start": 57390, + "end": 57394, "loc": { "start": { - "line": 1554, - "column": 8 + "line": 1580, + "column": 15 }, "end": { - "line": 1554, - "column": 12 + "line": 1580, + "column": 19 } } }, @@ -242957,16 +247377,16 @@ "binop": null, "updateContext": null }, - "start": 56496, - "end": 56497, + "start": 57394, + "end": 57395, "loc": { "start": { - "line": 1554, - "column": 12 + "line": 1580, + "column": 19 }, "end": { - "line": 1554, - "column": 13 + "line": 1580, + "column": 20 } } }, @@ -242983,23 +247403,23 @@ "binop": null }, "value": "_matrix", - "start": 56497, - "end": 56504, + "start": 57395, + "end": 57402, "loc": { "start": { - "line": 1554, - "column": 13 + "line": 1580, + "column": 20 }, "end": { - "line": 1554, - "column": 20 + "line": 1580, + "column": 27 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -243009,24 +247429,24 @@ "binop": null, "updateContext": null }, - "start": 56504, - "end": 56505, + "start": 57402, + "end": 57403, "loc": { "start": { - "line": 1554, - "column": 20 + "line": 1580, + "column": 27 }, "end": { - "line": 1554, - "column": 21 + "line": 1580, + "column": 28 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -243034,24 +247454,39 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 56505, - "end": 56508, + "start": 57408, + "end": 57409, "loc": { "start": { - "line": 1554, - "column": 21 + "line": 1581, + "column": 4 }, "end": { - "line": 1554, - "column": 24 + "line": 1581, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Gets the SceneModel's local modeling rotation transform matrix.\n *\n * @type {Number[]}\n ", + "start": 57415, + "end": 57528, + "loc": { + "start": { + "line": 1583, + "column": 4 + }, + "end": { + "line": 1587, + "column": 7 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -243060,16 +247495,17 @@ "postfix": false, "binop": null }, - "start": 56508, - "end": 56509, + "value": "get", + "start": 57533, + "end": 57536, "loc": { "start": { - "line": 1554, - "column": 24 + "line": 1588, + "column": 4 }, "end": { - "line": 1554, - "column": 25 + "line": 1588, + "column": 7 } } }, @@ -243085,52 +247521,50 @@ "postfix": false, "binop": null }, - "value": "value", - "start": 56509, - "end": 56514, + "value": "rotationMatrix", + "start": 57537, + "end": 57551, "loc": { "start": { - "line": 1554, - "column": 25 + "line": 1588, + "column": 8 }, "end": { - "line": 1554, - "column": 30 + "line": 1588, + "column": 22 } } }, { "type": { - "label": "||", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 56515, - "end": 56517, + "start": 57551, + "end": 57552, "loc": { "start": { - "line": 1554, - "column": 31 + "line": 1588, + "column": 22 }, "end": { - "line": 1554, - "column": 33 + "line": 1588, + "column": 23 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -243138,25 +247572,24 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_MATRIX", - "start": 56518, - "end": 56532, + "start": 57552, + "end": 57553, "loc": { "start": { - "line": 1554, - "column": 34 + "line": 1588, + "column": 23 }, "end": { - "line": 1554, - "column": 48 + "line": 1588, + "column": 24 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -243164,23 +247597,24 @@ "postfix": false, "binop": null }, - "start": 56532, - "end": 56533, + "start": 57554, + "end": 57555, "loc": { "start": { - "line": 1554, - "column": 48 + "line": 1588, + "column": 25 }, "end": { - "line": 1554, - "column": 49 + "line": 1588, + "column": 26 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -243190,23 +247624,24 @@ "binop": null, "updateContext": null }, - "start": 56533, - "end": 56534, + "value": "if", + "start": 57564, + "end": 57566, "loc": { "start": { - "line": 1554, - "column": 49 + "line": 1589, + "column": 8 }, "end": { - "line": 1554, - "column": 50 + "line": 1589, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -243215,17 +247650,44 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 56544, - "end": 56548, + "start": 57567, + "end": 57568, "loc": { "start": { - "line": 1556, - "column": 8 + "line": 1589, + "column": 11 }, "end": { - "line": 1556, + "line": 1589, + "column": 12 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 57568, + "end": 57572, + "loc": { + "start": { + "line": 1589, "column": 12 + }, + "end": { + "line": 1589, + "column": 16 } } }, @@ -243242,16 +247704,16 @@ "binop": null, "updateContext": null }, - "start": 56548, - "end": 56549, + "start": 57572, + "end": 57573, "loc": { "start": { - "line": 1556, - "column": 12 + "line": 1589, + "column": 16 }, "end": { - "line": 1556, - "column": 13 + "line": 1589, + "column": 17 } } }, @@ -243267,23 +247729,48 @@ "postfix": false, "binop": null }, - "value": "quaternionToRotationMat4", - "start": 56549, - "end": 56573, + "value": "_matrixDirty", + "start": 57573, + "end": 57585, "loc": { "start": { - "line": 1556, - "column": 13 + "line": 1589, + "column": 17 }, "end": { - "line": 1556, - "column": 37 + "line": 1589, + "column": 29 } } }, { "type": { - "label": "(", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 57585, + "end": 57586, + "loc": { + "start": { + "line": 1589, + "column": 29 + }, + "end": { + "line": 1589, + "column": 30 + } + } + }, + { + "type": { + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -243293,16 +247780,16 @@ "postfix": false, "binop": null }, - "start": 56573, - "end": 56574, + "start": 57587, + "end": 57588, "loc": { "start": { - "line": 1556, - "column": 37 + "line": 1589, + "column": 31 }, "end": { - "line": 1556, - "column": 38 + "line": 1589, + "column": 32 } } }, @@ -243321,16 +247808,16 @@ "updateContext": null }, "value": "this", - "start": 56574, - "end": 56578, + "start": 57601, + "end": 57605, "loc": { "start": { - "line": 1556, - "column": 38 + "line": 1590, + "column": 12 }, "end": { - "line": 1556, - "column": 42 + "line": 1590, + "column": 16 } } }, @@ -243347,16 +247834,16 @@ "binop": null, "updateContext": null }, - "start": 56578, - "end": 56579, + "start": 57605, + "end": 57606, "loc": { "start": { - "line": 1556, - "column": 42 + "line": 1590, + "column": 16 }, "end": { - "line": 1556, - "column": 43 + "line": 1590, + "column": 17 } } }, @@ -243372,78 +247859,74 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 56579, - "end": 56590, + "value": "_rebuildMatrices", + "start": 57606, + "end": 57622, "loc": { "start": { - "line": 1556, - "column": 43 + "line": 1590, + "column": 17 }, "end": { - "line": 1556, - "column": 54 + "line": 1590, + "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": 56590, - "end": 56591, + "start": 57622, + "end": 57623, "loc": { "start": { - "line": 1556, - "column": 54 + "line": 1590, + "column": 33 }, "end": { - "line": 1556, - "column": 55 + "line": 1590, + "column": 34 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 56592, - "end": 56596, + "start": 57623, + "end": 57624, "loc": { "start": { - "line": 1556, - "column": 56 + "line": 1590, + "column": 34 }, "end": { - "line": 1556, - "column": 60 + "line": 1590, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -243453,24 +247936,24 @@ "binop": null, "updateContext": null }, - "start": 56596, - "end": 56597, + "start": 57624, + "end": 57625, "loc": { "start": { - "line": 1556, - "column": 60 + "line": 1590, + "column": 35 }, "end": { - "line": 1556, - "column": 61 + "line": 1590, + "column": 36 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -243478,49 +247961,79 @@ "postfix": false, "binop": null }, - "value": "_worldRotationMatrix", - "start": 56597, - "end": 56617, + "start": 57634, + "end": 57635, "loc": { "start": { - "line": 1556, - "column": 61 + "line": 1591, + "column": 8 }, "end": { - "line": 1556, - "column": 81 + "line": 1591, + "column": 9 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 56617, - "end": 56618, + "value": "return", + "start": 57644, + "end": 57650, "loc": { "start": { - "line": 1556, - "column": 81 + "line": 1592, + "column": 8 }, "end": { - "line": 1556, - "column": 82 + "line": 1592, + "column": 14 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 57651, + "end": 57655, + "loc": { + "start": { + "line": 1592, + "column": 15 + }, + "end": { + "line": 1592, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -243530,16 +248043,16 @@ "binop": null, "updateContext": null }, - "start": 56618, - "end": 56619, + "start": 57655, + "end": 57656, "loc": { "start": { - "line": 1556, - "column": 82 + "line": 1592, + "column": 19 }, "end": { - "line": 1556, - "column": 83 + "line": 1592, + "column": 20 } } }, @@ -243555,24 +248068,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 56628, - "end": 56632, + "value": "_worldRotationMatrix", + "start": 57656, + "end": 57676, "loc": { "start": { - "line": 1557, - "column": 8 + "line": 1592, + "column": 20 }, "end": { - "line": 1557, - "column": 12 + "line": 1592, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -243582,24 +248095,24 @@ "binop": null, "updateContext": null }, - "start": 56632, - "end": 56633, + "start": 57676, + "end": 57677, "loc": { "start": { - "line": 1557, - "column": 12 + "line": 1592, + "column": 40 }, "end": { - "line": 1557, - "column": 13 + "line": 1592, + "column": 41 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -243607,24 +248120,23 @@ "postfix": false, "binop": null }, - "value": "conjugateQuaternion", - "start": 56633, - "end": 56652, + "start": 57682, + "end": 57683, "loc": { "start": { - "line": 1557, - "column": 13 + "line": 1593, + "column": 4 }, "end": { - "line": 1557, - "column": 32 + "line": 1593, + "column": 5 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -243633,50 +248145,48 @@ "postfix": false, "binop": null }, - "start": 56652, - "end": 56653, + "value": "_rebuildMatrices", + "start": 57689, + "end": 57705, "loc": { "start": { - "line": 1557, - "column": 32 + "line": 1595, + "column": 4 }, "end": { - "line": 1557, - "column": 33 + "line": 1595, + "column": 20 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 56653, - "end": 56657, + "start": 57705, + "end": 57706, "loc": { "start": { - "line": 1557, - "column": 33 + "line": 1595, + "column": 20 }, "end": { - "line": 1557, - "column": 37 + "line": 1595, + "column": 21 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -243684,26 +248194,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 56657, - "end": 56658, + "start": 57706, + "end": 57707, "loc": { "start": { - "line": 1557, - "column": 37 + "line": 1595, + "column": 21 }, "end": { - "line": 1557, - "column": 38 + "line": 1595, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -243712,24 +248221,24 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 56658, - "end": 56669, + "start": 57708, + "end": 57709, "loc": { "start": { - "line": 1557, - "column": 38 + "line": 1595, + "column": 23 }, "end": { - "line": 1557, - "column": 49 + "line": 1595, + "column": 24 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -243739,16 +248248,42 @@ "binop": null, "updateContext": null }, - "start": 56669, - "end": 56670, + "value": "if", + "start": 57718, + "end": 57720, "loc": { "start": { - "line": 1557, - "column": 49 + "line": 1596, + "column": 8 }, "end": { - "line": 1557, - "column": 50 + "line": 1596, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 57721, + "end": 57722, + "loc": { + "start": { + "line": 1596, + "column": 11 + }, + "end": { + "line": 1596, + "column": 12 } } }, @@ -243767,16 +248302,16 @@ "updateContext": null }, "value": "this", - "start": 56671, - "end": 56675, + "start": 57722, + "end": 57726, "loc": { "start": { - "line": 1557, - "column": 51 + "line": 1596, + "column": 12 }, "end": { - "line": 1557, - "column": 55 + "line": 1596, + "column": 16 } } }, @@ -243793,16 +248328,16 @@ "binop": null, "updateContext": null }, - "start": 56675, - "end": 56676, + "start": 57726, + "end": 57727, "loc": { "start": { - "line": 1557, - "column": 55 + "line": 1596, + "column": 16 }, "end": { - "line": 1557, - "column": 56 + "line": 1596, + "column": 17 } } }, @@ -243818,17 +248353,17 @@ "postfix": false, "binop": null }, - "value": "_conjugateQuaternion", - "start": 56676, - "end": 56696, + "value": "_matrixDirty", + "start": 57727, + "end": 57739, "loc": { "start": { - "line": 1557, - "column": 56 + "line": 1596, + "column": 17 }, "end": { - "line": 1557, - "column": 76 + "line": 1596, + "column": 29 } } }, @@ -243844,42 +248379,41 @@ "postfix": false, "binop": null }, - "start": 56696, - "end": 56697, + "start": 57739, + "end": 57740, "loc": { "start": { - "line": 1557, - "column": 76 + "line": 1596, + "column": 29 }, "end": { - "line": 1557, - "column": 77 + "line": 1596, + "column": 30 } } }, { "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": 56697, - "end": 56698, + "start": 57741, + "end": 57742, "loc": { "start": { - "line": 1557, - "column": 77 + "line": 1596, + "column": 31 }, "end": { - "line": 1557, - "column": 78 + "line": 1596, + "column": 32 } } }, @@ -243896,16 +248430,16 @@ "binop": null }, "value": "math", - "start": 56707, - "end": 56711, + "start": 57755, + "end": 57759, "loc": { "start": { - "line": 1558, - "column": 8 + "line": 1597, + "column": 12 }, "end": { - "line": 1558, - "column": 12 + "line": 1597, + "column": 16 } } }, @@ -243922,16 +248456,16 @@ "binop": null, "updateContext": null }, - "start": 56711, - "end": 56712, + "start": 57759, + "end": 57760, "loc": { "start": { - "line": 1558, - "column": 12 + "line": 1597, + "column": 16 }, "end": { - "line": 1558, - "column": 13 + "line": 1597, + "column": 17 } } }, @@ -243948,16 +248482,16 @@ "binop": null }, "value": "quaternionToRotationMat4", - "start": 56712, - "end": 56736, + "start": 57760, + "end": 57784, "loc": { "start": { - "line": 1558, - "column": 13 + "line": 1597, + "column": 17 }, "end": { - "line": 1558, - "column": 37 + "line": 1597, + "column": 41 } } }, @@ -243973,16 +248507,16 @@ "postfix": false, "binop": null }, - "start": 56736, - "end": 56737, + "start": 57784, + "end": 57785, "loc": { "start": { - "line": 1558, - "column": 37 + "line": 1597, + "column": 41 }, "end": { - "line": 1558, - "column": 38 + "line": 1597, + "column": 42 } } }, @@ -244001,16 +248535,16 @@ "updateContext": null }, "value": "this", - "start": 56737, - "end": 56741, + "start": 57785, + "end": 57789, "loc": { "start": { - "line": 1558, - "column": 38 + "line": 1597, + "column": 42 }, "end": { - "line": 1558, - "column": 42 + "line": 1597, + "column": 46 } } }, @@ -244027,16 +248561,16 @@ "binop": null, "updateContext": null }, - "start": 56741, - "end": 56742, + "start": 57789, + "end": 57790, "loc": { "start": { - "line": 1558, - "column": 42 + "line": 1597, + "column": 46 }, "end": { - "line": 1558, - "column": 43 + "line": 1597, + "column": 47 } } }, @@ -244053,16 +248587,16 @@ "binop": null }, "value": "_quaternion", - "start": 56742, - "end": 56753, + "start": 57790, + "end": 57801, "loc": { "start": { - "line": 1558, - "column": 43 + "line": 1597, + "column": 47 }, "end": { - "line": 1558, - "column": 54 + "line": 1597, + "column": 58 } } }, @@ -244079,16 +248613,16 @@ "binop": null, "updateContext": null }, - "start": 56753, - "end": 56754, + "start": 57801, + "end": 57802, "loc": { "start": { - "line": 1558, - "column": 54 + "line": 1597, + "column": 58 }, "end": { - "line": 1558, - "column": 55 + "line": 1597, + "column": 59 } } }, @@ -244107,16 +248641,16 @@ "updateContext": null }, "value": "this", - "start": 56755, - "end": 56759, + "start": 57803, + "end": 57807, "loc": { "start": { - "line": 1558, - "column": 56 + "line": 1597, + "column": 60 }, "end": { - "line": 1558, - "column": 60 + "line": 1597, + "column": 64 } } }, @@ -244133,16 +248667,16 @@ "binop": null, "updateContext": null }, - "start": 56759, - "end": 56760, + "start": 57807, + "end": 57808, "loc": { "start": { - "line": 1558, - "column": 60 + "line": 1597, + "column": 64 }, "end": { - "line": 1558, - "column": 61 + "line": 1597, + "column": 65 } } }, @@ -244158,17 +248692,17 @@ "postfix": false, "binop": null }, - "value": "_worldRotationMatrixConjugate", - "start": 56760, - "end": 56789, + "value": "_worldRotationMatrix", + "start": 57808, + "end": 57828, "loc": { "start": { - "line": 1558, - "column": 61 + "line": 1597, + "column": 65 }, "end": { - "line": 1558, - "column": 90 + "line": 1597, + "column": 85 } } }, @@ -244184,16 +248718,16 @@ "postfix": false, "binop": null }, - "start": 56789, - "end": 56790, + "start": 57828, + "end": 57829, "loc": { "start": { - "line": 1558, - "column": 90 + "line": 1597, + "column": 85 }, "end": { - "line": 1558, - "column": 91 + "line": 1597, + "column": 86 } } }, @@ -244210,23 +248744,22 @@ "binop": null, "updateContext": null }, - "start": 56790, - "end": 56791, + "start": 57829, + "end": 57830, "loc": { "start": { - "line": 1558, - "column": 91 + "line": 1597, + "column": 86 }, "end": { - "line": 1558, - "column": 92 + "line": 1597, + "column": 87 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -244234,20 +248767,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 56800, - "end": 56804, + "value": "math", + "start": 57843, + "end": 57847, "loc": { "start": { - "line": 1559, - "column": 8 + "line": 1598, + "column": 12 }, "end": { - "line": 1559, - "column": 12 + "line": 1598, + "column": 16 } } }, @@ -244264,16 +248796,16 @@ "binop": null, "updateContext": null }, - "start": 56804, - "end": 56805, + "start": 57847, + "end": 57848, "loc": { "start": { - "line": 1559, - "column": 12 + "line": 1598, + "column": 16 }, "end": { - "line": 1559, - "column": 13 + "line": 1598, + "column": 17 } } }, @@ -244289,17 +248821,70 @@ "postfix": false, "binop": null }, - "value": "_matrix", - "start": 56805, - "end": 56812, + "value": "conjugateQuaternion", + "start": 57848, + "end": 57867, "loc": { "start": { - "line": 1559, - "column": 13 + "line": 1598, + "column": 17 }, "end": { - "line": 1559, - "column": 20 + "line": 1598, + "column": 36 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 57867, + "end": 57868, + "loc": { + "start": { + "line": 1598, + "column": 36 + }, + "end": { + "line": 1598, + "column": 37 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 57868, + "end": 57872, + "loc": { + "start": { + "line": 1598, + "column": 37 + }, + "end": { + "line": 1598, + "column": 41 } } }, @@ -244316,16 +248901,16 @@ "binop": null, "updateContext": null }, - "start": 56812, - "end": 56813, + "start": 57872, + "end": 57873, "loc": { "start": { - "line": 1559, - "column": 20 + "line": 1598, + "column": 41 }, "end": { - "line": 1559, - "column": 21 + "line": 1598, + "column": 42 } } }, @@ -244341,42 +248926,43 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 56813, - "end": 56816, + "value": "_quaternion", + "start": 57873, + "end": 57884, "loc": { "start": { - "line": 1559, - "column": 21 + "line": 1598, + "column": 42 }, "end": { - "line": 1559, - "column": 24 + "line": 1598, + "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": 56816, - "end": 56817, + "start": 57884, + "end": 57885, "loc": { "start": { - "line": 1559, - "column": 24 + "line": 1598, + "column": 53 }, "end": { - "line": 1559, - "column": 25 + "line": 1598, + "column": 54 } } }, @@ -244395,16 +248981,16 @@ "updateContext": null }, "value": "this", - "start": 56817, - "end": 56821, + "start": 57886, + "end": 57890, "loc": { "start": { - "line": 1559, - "column": 25 + "line": 1598, + "column": 55 }, "end": { - "line": 1559, - "column": 29 + "line": 1598, + "column": 59 } } }, @@ -244421,16 +249007,16 @@ "binop": null, "updateContext": null }, - "start": 56821, - "end": 56822, + "start": 57890, + "end": 57891, "loc": { "start": { - "line": 1559, - "column": 29 + "line": 1598, + "column": 59 }, "end": { - "line": 1559, - "column": 30 + "line": 1598, + "column": 60 } } }, @@ -244446,17 +249032,17 @@ "postfix": false, "binop": null }, - "value": "_worldRotationMatrix", - "start": 56822, - "end": 56842, + "value": "_conjugateQuaternion", + "start": 57891, + "end": 57911, "loc": { "start": { - "line": 1559, - "column": 30 + "line": 1598, + "column": 60 }, "end": { - "line": 1559, - "column": 50 + "line": 1598, + "column": 80 } } }, @@ -244472,16 +249058,16 @@ "postfix": false, "binop": null }, - "start": 56842, - "end": 56843, + "start": 57911, + "end": 57912, "loc": { "start": { - "line": 1559, - "column": 50 + "line": 1598, + "column": 80 }, "end": { - "line": 1559, - "column": 51 + "line": 1598, + "column": 81 } } }, @@ -244498,16 +249084,16 @@ "binop": null, "updateContext": null }, - "start": 56843, - "end": 56844, + "start": 57912, + "end": 57913, "loc": { "start": { - "line": 1559, - "column": 51 + "line": 1598, + "column": 81 }, "end": { - "line": 1559, - "column": 52 + "line": 1598, + "column": 82 } } }, @@ -244524,16 +249110,16 @@ "binop": null }, "value": "math", - "start": 56853, - "end": 56857, + "start": 57926, + "end": 57930, "loc": { "start": { - "line": 1560, - "column": 8 + "line": 1599, + "column": 12 }, "end": { - "line": 1560, - "column": 12 + "line": 1599, + "column": 16 } } }, @@ -244550,16 +249136,16 @@ "binop": null, "updateContext": null }, - "start": 56857, - "end": 56858, + "start": 57930, + "end": 57931, "loc": { "start": { - "line": 1560, - "column": 12 + "line": 1599, + "column": 16 }, "end": { - "line": 1560, - "column": 13 + "line": 1599, + "column": 17 } } }, @@ -244575,17 +249161,17 @@ "postfix": false, "binop": null }, - "value": "translateMat4v", - "start": 56858, - "end": 56872, + "value": "quaternionToRotationMat4", + "start": 57931, + "end": 57955, "loc": { "start": { - "line": 1560, - "column": 13 + "line": 1599, + "column": 17 }, "end": { - "line": 1560, - "column": 27 + "line": 1599, + "column": 41 } } }, @@ -244601,16 +249187,16 @@ "postfix": false, "binop": null }, - "start": 56872, - "end": 56873, + "start": 57955, + "end": 57956, "loc": { "start": { - "line": 1560, - "column": 27 + "line": 1599, + "column": 41 }, "end": { - "line": 1560, - "column": 28 + "line": 1599, + "column": 42 } } }, @@ -244629,16 +249215,16 @@ "updateContext": null }, "value": "this", - "start": 56873, - "end": 56877, + "start": 57956, + "end": 57960, "loc": { "start": { - "line": 1560, - "column": 28 + "line": 1599, + "column": 42 }, "end": { - "line": 1560, - "column": 32 + "line": 1599, + "column": 46 } } }, @@ -244655,16 +249241,16 @@ "binop": null, "updateContext": null }, - "start": 56877, - "end": 56878, + "start": 57960, + "end": 57961, "loc": { "start": { - "line": 1560, - "column": 32 + "line": 1599, + "column": 46 }, "end": { - "line": 1560, - "column": 33 + "line": 1599, + "column": 47 } } }, @@ -244680,17 +249266,17 @@ "postfix": false, "binop": null }, - "value": "_position", - "start": 56878, - "end": 56887, + "value": "_quaternion", + "start": 57961, + "end": 57972, "loc": { "start": { - "line": 1560, - "column": 33 + "line": 1599, + "column": 47 }, "end": { - "line": 1560, - "column": 42 + "line": 1599, + "column": 58 } } }, @@ -244707,16 +249293,16 @@ "binop": null, "updateContext": null }, - "start": 56887, - "end": 56888, + "start": 57972, + "end": 57973, "loc": { "start": { - "line": 1560, - "column": 42 + "line": 1599, + "column": 58 }, "end": { - "line": 1560, - "column": 43 + "line": 1599, + "column": 59 } } }, @@ -244735,16 +249321,16 @@ "updateContext": null }, "value": "this", - "start": 56889, - "end": 56893, + "start": 57974, + "end": 57978, "loc": { "start": { - "line": 1560, - "column": 44 + "line": 1599, + "column": 60 }, "end": { - "line": 1560, - "column": 48 + "line": 1599, + "column": 64 } } }, @@ -244761,16 +249347,16 @@ "binop": null, "updateContext": null }, - "start": 56893, - "end": 56894, + "start": 57978, + "end": 57979, "loc": { "start": { - "line": 1560, - "column": 48 + "line": 1599, + "column": 64 }, "end": { - "line": 1560, - "column": 49 + "line": 1599, + "column": 65 } } }, @@ -244786,17 +249372,17 @@ "postfix": false, "binop": null }, - "value": "_matrix", - "start": 56894, - "end": 56901, + "value": "_worldRotationMatrixConjugate", + "start": 57979, + "end": 58008, "loc": { "start": { - "line": 1560, - "column": 49 + "line": 1599, + "column": 65 }, "end": { - "line": 1560, - "column": 56 + "line": 1599, + "column": 94 } } }, @@ -244812,16 +249398,16 @@ "postfix": false, "binop": null }, - "start": 56901, - "end": 56902, + "start": 58008, + "end": 58009, "loc": { "start": { - "line": 1560, - "column": 56 + "line": 1599, + "column": 94 }, "end": { - "line": 1560, - "column": 57 + "line": 1599, + "column": 95 } } }, @@ -244838,16 +249424,16 @@ "binop": null, "updateContext": null }, - "start": 56902, - "end": 56903, + "start": 58009, + "end": 58010, "loc": { "start": { - "line": 1560, - "column": 57 + "line": 1599, + "column": 95 }, "end": { - "line": 1560, - "column": 58 + "line": 1599, + "column": 96 } } }, @@ -244866,16 +249452,16 @@ "updateContext": null }, "value": "this", - "start": 56913, - "end": 56917, + "start": 58023, + "end": 58027, "loc": { "start": { - "line": 1562, - "column": 8 + "line": 1600, + "column": 12 }, "end": { - "line": 1562, - "column": 12 + "line": 1600, + "column": 16 } } }, @@ -244892,16 +249478,16 @@ "binop": null, "updateContext": null }, - "start": 56917, - "end": 56918, + "start": 58027, + "end": 58028, "loc": { "start": { - "line": 1562, - "column": 12 + "line": 1600, + "column": 16 }, "end": { - "line": 1562, - "column": 13 + "line": 1600, + "column": 17 } } }, @@ -244917,51 +249503,49 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 56918, - "end": 56930, + "value": "_matrix", + "start": 58028, + "end": 58035, "loc": { "start": { - "line": 1562, - "column": 13 + "line": 1600, + "column": 17 }, "end": { - "line": 1562, - "column": 25 + "line": 1600, + "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": 56931, - "end": 56932, + "start": 58035, + "end": 58036, "loc": { "start": { - "line": 1562, - "column": 26 + "line": 1600, + "column": 24 }, "end": { - "line": 1562, - "column": 27 + "line": 1600, + "column": 25 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -244969,46 +249553,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 56933, - "end": 56938, + "value": "set", + "start": 58036, + "end": 58039, "loc": { "start": { - "line": 1562, - "column": 28 + "line": 1600, + "column": 25 }, "end": { - "line": 1562, - "column": 33 + "line": 1600, + "column": 28 } } }, { "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": 56938, - "end": 56939, + "start": 58039, + "end": 58040, "loc": { "start": { - "line": 1562, - "column": 33 + "line": 1600, + "column": 28 }, "end": { - "line": 1562, - "column": 34 + "line": 1600, + "column": 29 } } }, @@ -245027,16 +249609,16 @@ "updateContext": null }, "value": "this", - "start": 56948, - "end": 56952, + "start": 58040, + "end": 58044, "loc": { "start": { - "line": 1563, - "column": 8 + "line": 1600, + "column": 29 }, "end": { - "line": 1563, - "column": 12 + "line": 1600, + "column": 33 } } }, @@ -245053,16 +249635,16 @@ "binop": null, "updateContext": null }, - "start": 56952, - "end": 56953, + "start": 58044, + "end": 58045, "loc": { "start": { - "line": 1563, - "column": 12 + "line": 1600, + "column": 33 }, "end": { - "line": 1563, - "column": 13 + "line": 1600, + "column": 34 } } }, @@ -245078,24 +249660,75 @@ "postfix": false, "binop": null }, - "value": "_setWorldMatrixDirty", - "start": 56953, - "end": 56973, + "value": "_worldRotationMatrix", + "start": 58045, + "end": 58065, "loc": { "start": { - "line": 1563, - "column": 13 + "line": 1600, + "column": 34 }, "end": { - "line": 1563, - "column": 33 + "line": 1600, + "column": 54 } } }, { "type": { - "label": "(", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 58065, + "end": 58066, + "loc": { + "start": { + "line": 1600, + "column": 54 + }, + "end": { + "line": 1600, + "column": 55 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 58066, + "end": 58067, + "loc": { + "start": { + "line": 1600, + "column": 55 + }, + "end": { + "line": 1600, + "column": 56 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -245104,22 +249737,23 @@ "postfix": false, "binop": null }, - "start": 56973, - "end": 56974, + "value": "math", + "start": 58080, + "end": 58084, "loc": { "start": { - "line": 1563, - "column": 33 + "line": 1601, + "column": 12 }, "end": { - "line": 1563, - "column": 34 + "line": 1601, + "column": 16 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -245127,44 +249761,70 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 58084, + "end": 58085, + "loc": { + "start": { + "line": 1601, + "column": 16 + }, + "end": { + "line": 1601, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 56974, - "end": 56975, + "value": "translateMat4v", + "start": 58085, + "end": 58099, "loc": { "start": { - "line": 1563, - "column": 34 + "line": 1601, + "column": 17 }, "end": { - "line": 1563, - "column": 35 + "line": 1601, + "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": 56975, - "end": 56976, + "start": 58099, + "end": 58100, "loc": { "start": { - "line": 1563, - "column": 35 + "line": 1601, + "column": 31 }, "end": { - "line": 1563, - "column": 36 + "line": 1601, + "column": 32 } } }, @@ -245183,16 +249843,16 @@ "updateContext": null }, "value": "this", - "start": 56985, - "end": 56989, + "start": 58100, + "end": 58104, "loc": { "start": { - "line": 1564, - "column": 8 + "line": 1601, + "column": 32 }, "end": { - "line": 1564, - "column": 12 + "line": 1601, + "column": 36 } } }, @@ -245209,16 +249869,16 @@ "binop": null, "updateContext": null }, - "start": 56989, - "end": 56990, + "start": 58104, + "end": 58105, "loc": { "start": { - "line": 1564, - "column": 12 + "line": 1601, + "column": 36 }, "end": { - "line": 1564, - "column": 13 + "line": 1601, + "column": 37 } } }, @@ -245234,24 +249894,104 @@ "postfix": false, "binop": null }, - "value": "_sceneModelDirty", - "start": 56990, - "end": 57006, + "value": "_position", + "start": 58105, + "end": 58114, "loc": { "start": { - "line": 1564, - "column": 13 + "line": 1601, + "column": 37 }, "end": { - "line": 1564, - "column": 29 + "line": 1601, + "column": 46 } } }, { "type": { - "label": "(", + "label": ",", "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 58114, + "end": 58115, + "loc": { + "start": { + "line": 1601, + "column": 46 + }, + "end": { + "line": 1601, + "column": 47 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 58116, + "end": 58120, + "loc": { + "start": { + "line": 1601, + "column": 48 + }, + "end": { + "line": 1601, + "column": 52 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 58120, + "end": 58121, + "loc": { + "start": { + "line": 1601, + "column": 52 + }, + "end": { + "line": 1601, + "column": 53 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -245260,16 +250000,17 @@ "postfix": false, "binop": null }, - "start": 57006, - "end": 57007, + "value": "_matrix", + "start": 58121, + "end": 58128, "loc": { "start": { - "line": 1564, - "column": 29 + "line": 1601, + "column": 53 }, "end": { - "line": 1564, - "column": 30 + "line": 1601, + "column": 60 } } }, @@ -245285,16 +250026,16 @@ "postfix": false, "binop": null }, - "start": 57007, - "end": 57008, + "start": 58128, + "end": 58129, "loc": { "start": { - "line": 1564, - "column": 30 + "line": 1601, + "column": 60 }, "end": { - "line": 1564, - "column": 31 + "line": 1601, + "column": 61 } } }, @@ -245311,16 +250052,16 @@ "binop": null, "updateContext": null }, - "start": 57008, - "end": 57009, + "start": 58129, + "end": 58130, "loc": { "start": { - "line": 1564, - "column": 31 + "line": 1601, + "column": 61 }, "end": { - "line": 1564, - "column": 32 + "line": 1601, + "column": 62 } } }, @@ -245339,16 +250080,16 @@ "updateContext": null }, "value": "this", - "start": 57018, - "end": 57022, + "start": 58143, + "end": 58147, "loc": { "start": { - "line": 1565, - "column": 8 + "line": 1602, + "column": 12 }, "end": { - "line": 1565, - "column": 12 + "line": 1602, + "column": 16 } } }, @@ -245365,16 +250106,16 @@ "binop": null, "updateContext": null }, - "start": 57022, - "end": 57023, + "start": 58147, + "end": 58148, "loc": { "start": { - "line": 1565, - "column": 12 + "line": 1602, + "column": 16 }, "end": { - "line": 1565, - "column": 13 + "line": 1602, + "column": 17 } } }, @@ -245390,67 +250131,72 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 57023, - "end": 57031, + "value": "_matrixDirty", + "start": 58148, + "end": 58160, "loc": { "start": { - "line": 1565, - "column": 13 + "line": 1602, + "column": 17 }, "end": { - "line": 1565, - "column": 21 + "line": 1602, + "column": 29 } } }, { "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": 57031, - "end": 57032, + "value": "=", + "start": 58161, + "end": 58162, "loc": { "start": { - "line": 1565, - "column": 21 + "line": 1602, + "column": 30 }, "end": { - "line": 1565, - "column": 22 + "line": 1602, + "column": 31 } } }, { "type": { - "label": ")", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 57032, - "end": 57033, + "value": "false", + "start": 58163, + "end": 58168, "loc": { "start": { - "line": 1565, - "column": 22 + "line": 1602, + "column": 32 }, "end": { - "line": 1565, - "column": 23 + "line": 1602, + "column": 37 } } }, @@ -245467,16 +250213,16 @@ "binop": null, "updateContext": null }, - "start": 57033, - "end": 57034, + "start": 58168, + "end": 58169, "loc": { "start": { - "line": 1565, - "column": 23 + "line": 1602, + "column": 37 }, "end": { - "line": 1565, - "column": 24 + "line": 1602, + "column": 38 } } }, @@ -245492,31 +250238,56 @@ "postfix": false, "binop": null }, - "start": 57039, - "end": 57040, + "start": 58178, + "end": 58179, "loc": { "start": { - "line": 1566, + "line": 1603, + "column": 8 + }, + "end": { + "line": 1603, + "column": 9 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 58184, + "end": 58185, + "loc": { + "start": { + "line": 1604, "column": 4 }, "end": { - "line": 1566, + "line": 1604, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n ", - "start": 57046, - "end": 57239, + "value": "*\n * Gets the conjugate of the SceneModel's local modeling rotation transform matrix.\n *\n * This is used for RTC view matrix management in renderers.\n *\n * @type {Number[]}\n ", + "start": 58191, + "end": 58393, "loc": { "start": { - "line": 1568, + "line": 1606, "column": 4 }, "end": { - "line": 1574, + "line": 1612, "column": 7 } } @@ -245534,15 +250305,15 @@ "binop": null }, "value": "get", - "start": 57244, - "end": 57247, + "start": 58398, + "end": 58401, "loc": { "start": { - "line": 1575, + "line": 1613, "column": 4 }, "end": { - "line": 1575, + "line": 1613, "column": 7 } } @@ -245559,17 +250330,17 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 57248, - "end": 57254, + "value": "rotationMatrixConjugate", + "start": 58402, + "end": 58425, "loc": { "start": { - "line": 1575, + "line": 1613, "column": 8 }, "end": { - "line": 1575, - "column": 14 + "line": 1613, + "column": 31 } } }, @@ -245585,16 +250356,16 @@ "postfix": false, "binop": null }, - "start": 57254, - "end": 57255, + "start": 58425, + "end": 58426, "loc": { "start": { - "line": 1575, - "column": 14 + "line": 1613, + "column": 31 }, "end": { - "line": 1575, - "column": 15 + "line": 1613, + "column": 32 } } }, @@ -245610,16 +250381,16 @@ "postfix": false, "binop": null }, - "start": 57255, - "end": 57256, + "start": 58426, + "end": 58427, "loc": { "start": { - "line": 1575, - "column": 15 + "line": 1613, + "column": 32 }, "end": { - "line": 1575, - "column": 16 + "line": 1613, + "column": 33 } } }, @@ -245635,16 +250406,16 @@ "postfix": false, "binop": null }, - "start": 57257, - "end": 57258, + "start": 58428, + "end": 58429, "loc": { "start": { - "line": 1575, - "column": 17 + "line": 1613, + "column": 34 }, "end": { - "line": 1575, - "column": 18 + "line": 1613, + "column": 35 } } }, @@ -245663,15 +250434,15 @@ "updateContext": null }, "value": "if", - "start": 57267, - "end": 57269, + "start": 58438, + "end": 58440, "loc": { "start": { - "line": 1576, + "line": 1614, "column": 8 }, "end": { - "line": 1576, + "line": 1614, "column": 10 } } @@ -245688,15 +250459,15 @@ "postfix": false, "binop": null }, - "start": 57270, - "end": 57271, + "start": 58441, + "end": 58442, "loc": { "start": { - "line": 1576, + "line": 1614, "column": 11 }, "end": { - "line": 1576, + "line": 1614, "column": 12 } } @@ -245716,15 +250487,15 @@ "updateContext": null }, "value": "this", - "start": 57271, - "end": 57275, + "start": 58442, + "end": 58446, "loc": { "start": { - "line": 1576, + "line": 1614, "column": 12 }, "end": { - "line": 1576, + "line": 1614, "column": 16 } } @@ -245742,15 +250513,15 @@ "binop": null, "updateContext": null }, - "start": 57275, - "end": 57276, + "start": 58446, + "end": 58447, "loc": { "start": { - "line": 1576, + "line": 1614, "column": 16 }, "end": { - "line": 1576, + "line": 1614, "column": 17 } } @@ -245768,15 +250539,15 @@ "binop": null }, "value": "_matrixDirty", - "start": 57276, - "end": 57288, + "start": 58447, + "end": 58459, "loc": { "start": { - "line": 1576, + "line": 1614, "column": 17 }, "end": { - "line": 1576, + "line": 1614, "column": 29 } } @@ -245793,15 +250564,15 @@ "postfix": false, "binop": null }, - "start": 57288, - "end": 57289, + "start": 58459, + "end": 58460, "loc": { "start": { - "line": 1576, + "line": 1614, "column": 29 }, "end": { - "line": 1576, + "line": 1614, "column": 30 } } @@ -245818,15 +250589,15 @@ "postfix": false, "binop": null }, - "start": 57290, - "end": 57291, + "start": 58461, + "end": 58462, "loc": { "start": { - "line": 1576, + "line": 1614, "column": 31 }, "end": { - "line": 1576, + "line": 1614, "column": 32 } } @@ -245846,15 +250617,15 @@ "updateContext": null }, "value": "this", - "start": 57304, - "end": 57308, + "start": 58475, + "end": 58479, "loc": { "start": { - "line": 1577, + "line": 1615, "column": 12 }, "end": { - "line": 1577, + "line": 1615, "column": 16 } } @@ -245872,15 +250643,15 @@ "binop": null, "updateContext": null }, - "start": 57308, - "end": 57309, + "start": 58479, + "end": 58480, "loc": { "start": { - "line": 1577, + "line": 1615, "column": 16 }, "end": { - "line": 1577, + "line": 1615, "column": 17 } } @@ -245898,15 +250669,15 @@ "binop": null }, "value": "_rebuildMatrices", - "start": 57309, - "end": 57325, + "start": 58480, + "end": 58496, "loc": { "start": { - "line": 1577, + "line": 1615, "column": 17 }, "end": { - "line": 1577, + "line": 1615, "column": 33 } } @@ -245923,15 +250694,15 @@ "postfix": false, "binop": null }, - "start": 57325, - "end": 57326, + "start": 58496, + "end": 58497, "loc": { "start": { - "line": 1577, + "line": 1615, "column": 33 }, "end": { - "line": 1577, + "line": 1615, "column": 34 } } @@ -245948,15 +250719,15 @@ "postfix": false, "binop": null }, - "start": 57326, - "end": 57327, + "start": 58497, + "end": 58498, "loc": { "start": { - "line": 1577, + "line": 1615, "column": 34 }, "end": { - "line": 1577, + "line": 1615, "column": 35 } } @@ -245974,15 +250745,15 @@ "binop": null, "updateContext": null }, - "start": 57327, - "end": 57328, + "start": 58498, + "end": 58499, "loc": { "start": { - "line": 1577, + "line": 1615, "column": 35 }, "end": { - "line": 1577, + "line": 1615, "column": 36 } } @@ -245999,15 +250770,15 @@ "postfix": false, "binop": null }, - "start": 57337, - "end": 57338, + "start": 58508, + "end": 58509, "loc": { "start": { - "line": 1578, + "line": 1616, "column": 8 }, "end": { - "line": 1578, + "line": 1616, "column": 9 } } @@ -246027,15 +250798,15 @@ "updateContext": null }, "value": "return", - "start": 57347, - "end": 57353, + "start": 58518, + "end": 58524, "loc": { "start": { - "line": 1579, + "line": 1617, "column": 8 }, "end": { - "line": 1579, + "line": 1617, "column": 14 } } @@ -246055,15 +250826,15 @@ "updateContext": null }, "value": "this", - "start": 57354, - "end": 57358, + "start": 58525, + "end": 58529, "loc": { "start": { - "line": 1579, + "line": 1617, "column": 15 }, "end": { - "line": 1579, + "line": 1617, "column": 19 } } @@ -246081,15 +250852,15 @@ "binop": null, "updateContext": null }, - "start": 57358, - "end": 57359, + "start": 58529, + "end": 58530, "loc": { "start": { - "line": 1579, + "line": 1617, "column": 19 }, "end": { - "line": 1579, + "line": 1617, "column": 20 } } @@ -246106,17 +250877,17 @@ "postfix": false, "binop": null }, - "value": "_matrix", - "start": 57359, - "end": 57366, + "value": "_worldRotationMatrixConjugate", + "start": 58530, + "end": 58559, "loc": { "start": { - "line": 1579, + "line": 1617, "column": 20 }, "end": { - "line": 1579, - "column": 27 + "line": 1617, + "column": 49 } } }, @@ -246133,16 +250904,16 @@ "binop": null, "updateContext": null }, - "start": 57366, - "end": 57367, + "start": 58559, + "end": 58560, "loc": { "start": { - "line": 1579, - "column": 27 + "line": 1617, + "column": 49 }, "end": { - "line": 1579, - "column": 28 + "line": 1617, + "column": 50 } } }, @@ -246158,39 +250929,49 @@ "postfix": false, "binop": null }, - "start": 57372, - "end": 57373, + "start": 58565, + "end": 58566, "loc": { "start": { - "line": 1580, + "line": 1618, "column": 4 }, "end": { - "line": 1580, + "line": 1618, "column": 5 } } }, { - "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's local modeling rotation transform matrix.\n *\n * @type {Number[]}\n ", - "start": 57379, - "end": 57492, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_setWorldMatrixDirty", + "start": 58572, + "end": 58592, "loc": { "start": { - "line": 1582, + "line": 1620, "column": 4 }, "end": { - "line": 1586, - "column": 7 + "line": 1620, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -246199,24 +250980,48 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 57497, - "end": 57500, + "start": 58592, + "end": 58593, "loc": { "start": { - "line": 1587, - "column": 4 + "line": 1620, + "column": 24 }, "end": { - "line": 1587, - "column": 7 + "line": 1620, + "column": 25 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 58593, + "end": 58594, + "loc": { + "start": { + "line": 1620, + "column": 25 + }, + "end": { + "line": 1620, + "column": 26 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -246225,50 +251030,78 @@ "postfix": false, "binop": null }, - "value": "rotationMatrix", - "start": 57501, - "end": 57515, + "start": 58595, + "end": 58596, "loc": { "start": { - "line": 1587, + "line": 1620, + "column": 27 + }, + "end": { + "line": 1620, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 58605, + "end": 58609, + "loc": { + "start": { + "line": 1621, "column": 8 }, "end": { - "line": 1587, - "column": 22 + "line": 1621, + "column": 12 } } }, { "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": 57515, - "end": 57516, + "start": 58609, + "end": 58610, "loc": { "start": { - "line": 1587, - "column": 22 + "line": 1621, + "column": 12 }, "end": { - "line": 1587, - "column": 23 + "line": 1621, + "column": 13 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -246276,50 +251109,53 @@ "postfix": false, "binop": null }, - "start": 57516, - "end": 57517, + "value": "_matrixDirty", + "start": 58610, + "end": 58622, "loc": { "start": { - "line": 1587, - "column": 23 + "line": 1621, + "column": 13 }, "end": { - "line": 1587, - "column": 24 + "line": 1621, + "column": 25 } } }, { "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": 57518, - "end": 57519, + "value": "=", + "start": 58623, + "end": 58624, "loc": { "start": { - "line": 1587, - "column": 25 + "line": 1621, + "column": 26 }, "end": { - "line": 1587, - "column": 26 + "line": 1621, + "column": 27 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "true", + "keyword": "true", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -246328,42 +251164,43 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 57528, - "end": 57530, + "value": "true", + "start": 58625, + "end": 58629, "loc": { "start": { - "line": 1588, - "column": 8 + "line": 1621, + "column": 28 }, "end": { - "line": 1588, - "column": 10 + "line": 1621, + "column": 32 } } }, { "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": 57531, - "end": 57532, + "start": 58629, + "end": 58630, "loc": { "start": { - "line": 1588, - "column": 11 + "line": 1621, + "column": 32 }, "end": { - "line": 1588, - "column": 12 + "line": 1621, + "column": 33 } } }, @@ -246382,16 +251219,16 @@ "updateContext": null }, "value": "this", - "start": 57532, - "end": 57536, + "start": 58639, + "end": 58643, "loc": { "start": { - "line": 1588, - "column": 12 + "line": 1622, + "column": 8 }, "end": { - "line": 1588, - "column": 16 + "line": 1622, + "column": 12 } } }, @@ -246408,16 +251245,16 @@ "binop": null, "updateContext": null }, - "start": 57536, - "end": 57537, + "start": 58643, + "end": 58644, "loc": { "start": { - "line": 1588, - "column": 16 + "line": 1622, + "column": 12 }, "end": { - "line": 1588, - "column": 17 + "line": 1622, + "column": 13 } } }, @@ -246433,76 +251270,80 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 57537, - "end": 57549, + "value": "_aabbDirty", + "start": 58644, + "end": 58654, "loc": { "start": { - "line": 1588, - "column": 17 + "line": 1622, + "column": 13 }, "end": { - "line": 1588, - "column": 29 + "line": 1622, + "column": 23 } } }, { "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": 57549, - "end": 57550, + "value": "=", + "start": 58655, + "end": 58656, "loc": { "start": { - "line": 1588, - "column": 29 + "line": 1622, + "column": 24 }, "end": { - "line": 1588, - "column": 30 + "line": 1622, + "column": 25 } } }, { "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": 57551, - "end": 57552, + "value": "true", + "start": 58657, + "end": 58661, "loc": { "start": { - "line": 1588, - "column": 31 + "line": 1622, + "column": 26 }, "end": { - "line": 1588, - "column": 32 + "line": 1622, + "column": 30 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -246511,23 +251352,22 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 57565, - "end": 57569, + "start": 58661, + "end": 58662, "loc": { "start": { - "line": 1589, - "column": 12 + "line": 1622, + "column": 30 }, "end": { - "line": 1589, - "column": 16 + "line": 1622, + "column": 31 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -246535,19 +251375,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 57569, - "end": 57570, + "start": 58667, + "end": 58668, "loc": { "start": { - "line": 1589, - "column": 16 + "line": 1623, + "column": 4 }, "end": { - "line": 1589, - "column": 17 + "line": 1623, + "column": 5 } } }, @@ -246563,17 +251402,17 @@ "postfix": false, "binop": null }, - "value": "_rebuildMatrices", - "start": 57570, - "end": 57586, + "value": "_transformDirty", + "start": 58674, + "end": 58689, "loc": { "start": { - "line": 1589, - "column": 17 + "line": 1625, + "column": 4 }, "end": { - "line": 1589, - "column": 33 + "line": 1625, + "column": 19 } } }, @@ -246589,16 +251428,16 @@ "postfix": false, "binop": null }, - "start": 57586, - "end": 57587, + "start": 58689, + "end": 58690, "loc": { "start": { - "line": 1589, - "column": 33 + "line": 1625, + "column": 19 }, "end": { - "line": 1589, - "column": 34 + "line": 1625, + "column": 20 } } }, @@ -246614,75 +251453,76 @@ "postfix": false, "binop": null }, - "start": 57587, - "end": 57588, + "start": 58690, + "end": 58691, "loc": { "start": { - "line": 1589, - "column": 34 + "line": 1625, + "column": 20 }, "end": { - "line": 1589, - "column": 35 + "line": 1625, + "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": 57588, - "end": 57589, + "start": 58692, + "end": 58693, "loc": { "start": { - "line": 1589, - "column": 35 + "line": 1625, + "column": 22 }, "end": { - "line": 1589, - "column": 36 + "line": 1625, + "column": 23 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 57598, - "end": 57599, + "value": "this", + "start": 58702, + "end": 58706, "loc": { "start": { - "line": 1590, + "line": 1626, "column": 8 }, "end": { - "line": 1590, - "column": 9 + "line": 1626, + "column": 12 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -246692,24 +251532,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 57608, - "end": 57614, + "start": 58706, + "end": 58707, "loc": { "start": { - "line": 1591, - "column": 8 + "line": 1626, + "column": 12 }, "end": { - "line": 1591, - "column": 14 + "line": 1626, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -246717,52 +251555,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 57615, - "end": 57619, + "value": "_matrixDirty", + "start": 58707, + "end": 58719, "loc": { "start": { - "line": 1591, - "column": 15 + "line": 1626, + "column": 13 }, "end": { - "line": 1591, - "column": 19 + "line": 1626, + "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": 57619, - "end": 57620, + "value": "=", + "start": 58720, + "end": 58721, "loc": { "start": { - "line": 1591, - "column": 19 + "line": 1626, + "column": 26 }, "end": { - "line": 1591, - "column": 20 + "line": 1626, + "column": 27 } } }, { "type": { - "label": "name", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -246770,19 +251609,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_worldRotationMatrix", - "start": 57620, - "end": 57640, + "value": "true", + "start": 58722, + "end": 58726, "loc": { "start": { - "line": 1591, - "column": 20 + "line": 1626, + "column": 28 }, "end": { - "line": 1591, - "column": 40 + "line": 1626, + "column": 32 } } }, @@ -246799,47 +251639,23 @@ "binop": null, "updateContext": null }, - "start": 57640, - "end": 57641, - "loc": { - "start": { - "line": 1591, - "column": 40 - }, - "end": { - "line": 1591, - "column": 41 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 57646, - "end": 57647, + "start": 58726, + "end": 58727, "loc": { "start": { - "line": 1592, - "column": 4 + "line": 1626, + "column": 32 }, "end": { - "line": 1592, - "column": 5 + "line": 1626, + "column": 33 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -246847,52 +251663,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_rebuildMatrices", - "start": 57653, - "end": 57669, + "value": "this", + "start": 58736, + "end": 58740, "loc": { "start": { - "line": 1594, - "column": 4 + "line": 1627, + "column": 8 }, "end": { - "line": 1594, - "column": 20 + "line": 1627, + "column": 12 } } }, { "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": 57669, - "end": 57670, + "start": 58740, + "end": 58741, "loc": { "start": { - "line": 1594, - "column": 20 + "line": 1627, + "column": 12 }, "end": { - "line": 1594, - "column": 21 + "line": 1627, + "column": 13 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -246900,50 +251718,53 @@ "postfix": false, "binop": null }, - "start": 57670, - "end": 57671, + "value": "_aabbDirty", + "start": 58741, + "end": 58751, "loc": { "start": { - "line": 1594, - "column": 21 + "line": 1627, + "column": 13 }, "end": { - "line": 1594, - "column": 22 + "line": 1627, + "column": 23 } } }, { "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": 57672, - "end": 57673, + "value": "=", + "start": 58752, + "end": 58753, "loc": { "start": { - "line": 1594, - "column": 23 + "line": 1627, + "column": 24 }, "end": { - "line": 1594, - "column": 24 + "line": 1627, + "column": 25 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "true", + "keyword": "true", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -246952,42 +251773,43 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 57682, - "end": 57684, + "value": "true", + "start": 58754, + "end": 58758, "loc": { "start": { - "line": 1595, - "column": 8 + "line": 1627, + "column": 26 }, "end": { - "line": 1595, - "column": 10 + "line": 1627, + "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": 57685, - "end": 57686, + "start": 58758, + "end": 58759, "loc": { "start": { - "line": 1595, - "column": 11 + "line": 1627, + "column": 30 }, "end": { - "line": 1595, - "column": 12 + "line": 1627, + "column": 31 } } }, @@ -247006,16 +251828,16 @@ "updateContext": null }, "value": "this", - "start": 57686, - "end": 57690, + "start": 58768, + "end": 58772, "loc": { "start": { - "line": 1595, - "column": 12 + "line": 1628, + "column": 8 }, "end": { - "line": 1595, - "column": 16 + "line": 1628, + "column": 12 } } }, @@ -247032,16 +251854,16 @@ "binop": null, "updateContext": null }, - "start": 57690, - "end": 57691, + "start": 58772, + "end": 58773, "loc": { "start": { - "line": 1595, - "column": 16 + "line": 1628, + "column": 12 }, "end": { - "line": 1595, - "column": 17 + "line": 1628, + "column": 13 } } }, @@ -247057,23 +251879,23 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 57691, - "end": 57703, + "value": "scene", + "start": 58773, + "end": 58778, "loc": { "start": { - "line": 1595, - "column": 17 + "line": 1628, + "column": 13 }, "end": { - "line": 1595, - "column": 29 + "line": 1628, + "column": 18 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -247081,25 +251903,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 57703, - "end": 57704, + "start": 58778, + "end": 58779, "loc": { "start": { - "line": 1595, - "column": 29 + "line": 1628, + "column": 18 }, "end": { - "line": 1595, - "column": 30 + "line": 1628, + "column": 19 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -247108,50 +251931,53 @@ "postfix": false, "binop": null }, - "start": 57705, - "end": 57706, + "value": "_aabbDirty", + "start": 58779, + "end": 58789, "loc": { "start": { - "line": 1595, - "column": 31 + "line": 1628, + "column": 19 }, "end": { - "line": 1595, - "column": 32 + "line": 1628, + "column": 29 } } }, { "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": "math", - "start": 57719, - "end": 57723, + "value": "=", + "start": 58790, + "end": 58791, "loc": { "start": { - "line": 1596, - "column": 12 + "line": 1628, + "column": 30 }, "end": { - "line": 1596, - "column": 16 + "line": 1628, + "column": 31 } } }, { "type": { - "label": ".", + "label": "true", + "keyword": "true", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -247160,50 +251986,51 @@ "binop": null, "updateContext": null }, - "start": 57723, - "end": 57724, + "value": "true", + "start": 58792, + "end": 58796, "loc": { "start": { - "line": 1596, - "column": 16 + "line": 1628, + "column": 32 }, "end": { - "line": 1596, - "column": 17 + "line": 1628, + "column": 36 } } }, { "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": "quaternionToRotationMat4", - "start": 57724, - "end": 57748, + "start": 58796, + "end": 58797, "loc": { "start": { - "line": 1596, - "column": 17 + "line": 1628, + "column": 36 }, "end": { - "line": 1596, - "column": 41 + "line": 1628, + "column": 37 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -247211,23 +252038,22 @@ "postfix": false, "binop": null }, - "start": 57748, - "end": 57749, + "start": 58802, + "end": 58803, "loc": { "start": { - "line": 1596, - "column": 41 + "line": 1629, + "column": 4 }, "end": { - "line": 1596, - "column": 42 + "line": 1629, + "column": 5 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -247235,54 +252061,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 57749, - "end": 57753, + "value": "_sceneModelDirty", + "start": 58809, + "end": 58825, "loc": { "start": { - "line": 1596, - "column": 42 + "line": 1631, + "column": 4 }, "end": { - "line": 1596, - "column": 46 + "line": 1631, + "column": 20 } } }, { "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": 57753, - "end": 57754, + "start": 58825, + "end": 58826, "loc": { "start": { - "line": 1596, - "column": 46 + "line": 1631, + "column": 20 }, "end": { - "line": 1596, - "column": 47 + "line": 1631, + "column": 21 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -247290,43 +252114,41 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 57754, - "end": 57765, + "start": 58826, + "end": 58827, "loc": { "start": { - "line": 1596, - "column": 47 + "line": 1631, + "column": 21 }, "end": { - "line": 1596, - "column": 58 + "line": 1631, + "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": 57765, - "end": 57766, + "start": 58828, + "end": 58829, "loc": { "start": { - "line": 1596, - "column": 58 + "line": 1631, + "column": 23 }, "end": { - "line": 1596, - "column": 59 + "line": 1631, + "column": 24 } } }, @@ -247345,16 +252167,16 @@ "updateContext": null }, "value": "this", - "start": 57767, - "end": 57771, + "start": 58838, + "end": 58842, "loc": { "start": { - "line": 1596, - "column": 60 + "line": 1632, + "column": 8 }, "end": { - "line": 1596, - "column": 64 + "line": 1632, + "column": 12 } } }, @@ -247371,16 +252193,16 @@ "binop": null, "updateContext": null }, - "start": 57771, - "end": 57772, + "start": 58842, + "end": 58843, "loc": { "start": { - "line": 1596, - "column": 64 + "line": 1632, + "column": 12 }, "end": { - "line": 1596, - "column": 65 + "line": 1632, + "column": 13 } } }, @@ -247396,23 +252218,23 @@ "postfix": false, "binop": null }, - "value": "_worldRotationMatrix", - "start": 57772, - "end": 57792, + "value": "scene", + "start": 58843, + "end": 58848, "loc": { "start": { - "line": 1596, - "column": 65 + "line": 1632, + "column": 13 }, "end": { - "line": 1596, - "column": 85 + "line": 1632, + "column": 18 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -247420,44 +252242,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 57792, - "end": 57793, - "loc": { - "start": { - "line": 1596, - "column": 85 - }, - "end": { - "line": 1596, - "column": 86 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 57793, - "end": 57794, + "start": 58848, + "end": 58849, "loc": { "start": { - "line": 1596, - "column": 86 + "line": 1632, + "column": 18 }, "end": { - "line": 1596, - "column": 87 + "line": 1632, + "column": 19 } } }, @@ -247473,49 +252270,51 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 57807, - "end": 57811, + "value": "_aabbDirty", + "start": 58849, + "end": 58859, "loc": { "start": { - "line": 1597, - "column": 12 + "line": 1632, + "column": 19 }, "end": { - "line": 1597, - "column": 16 + "line": 1632, + "column": 29 } } }, { "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": 57811, - "end": 57812, + "value": "=", + "start": 58860, + "end": 58861, "loc": { "start": { - "line": 1597, - "column": 16 + "line": 1632, + "column": 30 }, "end": { - "line": 1597, - "column": 17 + "line": 1632, + "column": 31 } } }, { "type": { - "label": "name", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -247523,43 +252322,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "conjugateQuaternion", - "start": 57812, - "end": 57831, + "value": "true", + "start": 58862, + "end": 58866, "loc": { "start": { - "line": 1597, - "column": 17 + "line": 1632, + "column": 32 }, "end": { - "line": 1597, + "line": 1632, "column": 36 } } }, { "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": 57831, - "end": 57832, + "start": 58866, + "end": 58867, "loc": { "start": { - "line": 1597, + "line": 1632, "column": 36 }, "end": { - "line": 1597, + "line": 1632, "column": 37 } } @@ -247579,16 +252380,16 @@ "updateContext": null }, "value": "this", - "start": 57832, - "end": 57836, + "start": 58876, + "end": 58880, "loc": { "start": { - "line": 1597, - "column": 37 + "line": 1633, + "column": 8 }, "end": { - "line": 1597, - "column": 41 + "line": 1633, + "column": 12 } } }, @@ -247605,16 +252406,16 @@ "binop": null, "updateContext": null }, - "start": 57836, - "end": 57837, + "start": 58880, + "end": 58881, "loc": { "start": { - "line": 1597, - "column": 41 + "line": 1633, + "column": 12 }, "end": { - "line": 1597, - "column": 42 + "line": 1633, + "column": 13 } } }, @@ -247630,50 +252431,51 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 57837, - "end": 57848, + "value": "_aabbDirty", + "start": 58881, + "end": 58891, "loc": { "start": { - "line": 1597, - "column": 42 + "line": 1633, + "column": 13 }, "end": { - "line": 1597, - "column": 53 + "line": 1633, + "column": 23 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 57848, - "end": 57849, + "value": "=", + "start": 58892, + "end": 58893, "loc": { "start": { - "line": 1597, - "column": 53 + "line": 1633, + "column": 24 }, "end": { - "line": 1597, - "column": 54 + "line": 1633, + "column": 25 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -247684,24 +252486,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 57850, - "end": 57854, + "value": "true", + "start": 58894, + "end": 58898, "loc": { "start": { - "line": 1597, - "column": 55 + "line": 1633, + "column": 26 }, "end": { - "line": 1597, - "column": 59 + "line": 1633, + "column": 30 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -247711,22 +252513,23 @@ "binop": null, "updateContext": null }, - "start": 57854, - "end": 57855, + "start": 58898, + "end": 58899, "loc": { "start": { - "line": 1597, - "column": 59 + "line": 1633, + "column": 30 }, "end": { - "line": 1597, - "column": 60 + "line": 1633, + "column": 31 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -247734,25 +252537,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_conjugateQuaternion", - "start": 57855, - "end": 57875, + "value": "this", + "start": 58908, + "end": 58912, "loc": { "start": { - "line": 1597, - "column": 60 + "line": 1634, + "column": 8 }, "end": { - "line": 1597, - "column": 80 + "line": 1634, + "column": 12 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -247760,25 +252564,52 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 58912, + "end": 58913, + "loc": { + "start": { + "line": 1634, + "column": 12 + }, + "end": { + "line": 1634, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 57875, - "end": 57876, + "value": "scene", + "start": 58913, + "end": 58918, "loc": { "start": { - "line": 1597, - "column": 80 + "line": 1634, + "column": 13 }, "end": { - "line": 1597, - "column": 81 + "line": 1634, + "column": 18 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -247788,16 +252619,16 @@ "binop": null, "updateContext": null }, - "start": 57876, - "end": 57877, + "start": 58918, + "end": 58919, "loc": { "start": { - "line": 1597, - "column": 81 + "line": 1634, + "column": 18 }, "end": { - "line": 1597, - "column": 82 + "line": 1634, + "column": 19 } } }, @@ -247813,49 +252644,51 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 57890, - "end": 57894, + "value": "_aabbDirty", + "start": 58919, + "end": 58929, "loc": { "start": { - "line": 1598, - "column": 12 + "line": 1634, + "column": 19 }, "end": { - "line": 1598, - "column": 16 + "line": 1634, + "column": 29 } } }, { "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": 57894, - "end": 57895, + "value": "=", + "start": 58930, + "end": 58931, "loc": { "start": { - "line": 1598, - "column": 16 + "line": 1634, + "column": 30 }, "end": { - "line": 1598, - "column": 17 + "line": 1634, + "column": 31 } } }, { "type": { - "label": "name", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -247863,44 +252696,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "quaternionToRotationMat4", - "start": 57895, - "end": 57919, + "value": "true", + "start": 58932, + "end": 58936, "loc": { "start": { - "line": 1598, - "column": 17 + "line": 1634, + "column": 32 }, "end": { - "line": 1598, - "column": 41 + "line": 1634, + "column": 36 } } }, { "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": 57919, - "end": 57920, + "start": 58936, + "end": 58937, "loc": { "start": { - "line": 1598, - "column": 41 + "line": 1634, + "column": 36 }, "end": { - "line": 1598, - "column": 42 + "line": 1634, + "column": 37 } } }, @@ -247919,16 +252754,16 @@ "updateContext": null }, "value": "this", - "start": 57920, - "end": 57924, + "start": 58946, + "end": 58950, "loc": { "start": { - "line": 1598, - "column": 42 + "line": 1635, + "column": 8 }, "end": { - "line": 1598, - "column": 46 + "line": 1635, + "column": 12 } } }, @@ -247945,16 +252780,16 @@ "binop": null, "updateContext": null }, - "start": 57924, - "end": 57925, + "start": 58950, + "end": 58951, "loc": { "start": { - "line": 1598, - "column": 46 + "line": 1635, + "column": 12 }, "end": { - "line": 1598, - "column": 47 + "line": 1635, + "column": 13 } } }, @@ -247970,50 +252805,51 @@ "postfix": false, "binop": null }, - "value": "_quaternion", - "start": 57925, - "end": 57936, + "value": "_matrixDirty", + "start": 58951, + "end": 58963, "loc": { "start": { - "line": 1598, - "column": 47 + "line": 1635, + "column": 13 }, "end": { - "line": 1598, - "column": 58 + "line": 1635, + "column": 25 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 57936, - "end": 57937, + "value": "=", + "start": 58964, + "end": 58965, "loc": { "start": { - "line": 1598, - "column": 58 + "line": 1635, + "column": 26 }, "end": { - "line": 1598, - "column": 59 + "line": 1635, + "column": 27 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -248024,24 +252860,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 57938, - "end": 57942, + "value": "true", + "start": 58966, + "end": 58970, "loc": { "start": { - "line": 1598, - "column": 60 + "line": 1635, + "column": 28 }, "end": { - "line": 1598, - "column": 64 + "line": 1635, + "column": 32 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -248051,50 +252887,52 @@ "binop": null, "updateContext": null }, - "start": 57942, - "end": 57943, + "start": 58970, + "end": 58971, "loc": { "start": { - "line": 1598, - "column": 64 + "line": 1635, + "column": 32 }, "end": { - "line": 1598, - "column": 65 + "line": 1635, + "column": 33 } } }, { "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": "_worldRotationMatrixConjugate", - "start": 57943, - "end": 57972, + "value": "for", + "start": 58980, + "end": 58983, "loc": { "start": { - "line": 1598, - "column": 65 + "line": 1636, + "column": 8 }, "end": { - "line": 1598, - "column": 94 + "line": 1636, + "column": 11 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -248102,23 +252940,24 @@ "postfix": false, "binop": null }, - "start": 57972, - "end": 57973, + "start": 58984, + "end": 58985, "loc": { "start": { - "line": 1598, - "column": 94 + "line": 1636, + "column": 12 }, "end": { - "line": 1598, - "column": 95 + "line": 1636, + "column": 13 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -248128,23 +252967,23 @@ "binop": null, "updateContext": null }, - "start": 57973, - "end": 57974, + "value": "let", + "start": 58985, + "end": 58988, "loc": { "start": { - "line": 1598, - "column": 95 + "line": 1636, + "column": 13 }, "end": { - "line": 1598, - "column": 96 + "line": 1636, + "column": 16 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -248152,52 +252991,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 57987, - "end": 57991, + "value": "i", + "start": 58989, + "end": 58990, "loc": { "start": { - "line": 1599, - "column": 12 + "line": 1636, + "column": 17 }, "end": { - "line": 1599, - "column": 16 + "line": 1636, + "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": 57991, - "end": 57992, + "value": "=", + "start": 58991, + "end": 58992, "loc": { "start": { - "line": 1599, - "column": 16 + "line": 1636, + "column": 19 }, "end": { - "line": 1599, - "column": 17 + "line": 1636, + "column": 20 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -248205,26 +253044,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_matrix", - "start": 57992, - "end": 57999, + "value": 0, + "start": 58993, + "end": 58994, "loc": { "start": { - "line": 1599, - "column": 17 + "line": 1636, + "column": 21 }, "end": { - "line": 1599, - "column": 24 + "line": 1636, + "column": 22 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -248234,16 +253074,16 @@ "binop": null, "updateContext": null }, - "start": 57999, - "end": 58000, + "start": 58994, + "end": 58995, "loc": { "start": { - "line": 1599, - "column": 24 + "line": 1636, + "column": 22 }, "end": { - "line": 1599, - "column": 25 + "line": 1636, + "column": 23 } } }, @@ -248259,41 +253099,43 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 58000, - "end": 58003, + "value": "len", + "start": 58996, + "end": 58999, "loc": { "start": { - "line": 1599, - "column": 25 + "line": 1636, + "column": 24 }, "end": { - "line": 1599, - "column": 28 + "line": 1636, + "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": 58003, - "end": 58004, + "value": "=", + "start": 59000, + "end": 59001, "loc": { "start": { - "line": 1599, + "line": 1636, "column": 28 }, "end": { - "line": 1599, + "line": 1636, "column": 29 } } @@ -248313,16 +253155,16 @@ "updateContext": null }, "value": "this", - "start": 58004, - "end": 58008, + "start": 59002, + "end": 59006, "loc": { "start": { - "line": 1599, - "column": 29 + "line": 1636, + "column": 30 }, "end": { - "line": 1599, - "column": 33 + "line": 1636, + "column": 34 } } }, @@ -248339,16 +253181,16 @@ "binop": null, "updateContext": null }, - "start": 58008, - "end": 58009, + "start": 59006, + "end": 59007, "loc": { "start": { - "line": 1599, - "column": 33 + "line": 1636, + "column": 34 }, "end": { - "line": 1599, - "column": 34 + "line": 1636, + "column": 35 } } }, @@ -248364,23 +253206,23 @@ "postfix": false, "binop": null }, - "value": "_worldRotationMatrix", - "start": 58009, - "end": 58029, + "value": "_entityList", + "start": 59007, + "end": 59018, "loc": { "start": { - "line": 1599, - "column": 34 + "line": 1636, + "column": 35 }, "end": { - "line": 1599, - "column": 54 + "line": 1636, + "column": 46 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -248388,18 +253230,45 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 59018, + "end": 59019, + "loc": { + "start": { + "line": 1636, + "column": 46 + }, + "end": { + "line": 1636, + "column": 47 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 58029, - "end": 58030, + "value": "length", + "start": 59019, + "end": 59025, "loc": { "start": { - "line": 1599, - "column": 54 + "line": 1636, + "column": 47 }, "end": { - "line": 1599, - "column": 55 + "line": 1636, + "column": 53 } } }, @@ -248416,16 +253285,16 @@ "binop": null, "updateContext": null }, - "start": 58030, - "end": 58031, + "start": 59025, + "end": 59026, "loc": { "start": { - "line": 1599, - "column": 55 + "line": 1636, + "column": 53 }, "end": { - "line": 1599, - "column": 56 + "line": 1636, + "column": 54 } } }, @@ -248441,43 +253310,44 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 58044, - "end": 58048, + "value": "i", + "start": 59027, + "end": 59028, "loc": { "start": { - "line": 1600, - "column": 12 + "line": 1636, + "column": 55 }, "end": { - "line": 1600, - "column": 16 + "line": 1636, + "column": 56 } } }, { "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": 58048, - "end": 58049, + "value": "<", + "start": 59029, + "end": 59030, "loc": { "start": { - "line": 1600, - "column": 16 + "line": 1636, + "column": 57 }, "end": { - "line": 1600, - "column": 17 + "line": 1636, + "column": 58 } } }, @@ -248493,49 +253363,49 @@ "postfix": false, "binop": null }, - "value": "translateMat4v", - "start": 58049, - "end": 58063, + "value": "len", + "start": 59031, + "end": 59034, "loc": { "start": { - "line": 1600, - "column": 17 + "line": 1636, + "column": 59 }, "end": { - "line": 1600, - "column": 31 + "line": 1636, + "column": 62 } } }, { "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": 58063, - "end": 58064, + "start": 59034, + "end": 59035, "loc": { "start": { - "line": 1600, - "column": 31 + "line": 1636, + "column": 62 }, "end": { - "line": 1600, - "column": 32 + "line": 1636, + "column": 63 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -248543,54 +253413,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 58064, - "end": 58068, + "value": "i", + "start": 59036, + "end": 59037, "loc": { "start": { - "line": 1600, - "column": 32 + "line": 1636, + "column": 64 }, "end": { - "line": 1600, - "column": 36 + "line": 1636, + "column": 65 } } }, { "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": 58068, - "end": 58069, + "value": "++", + "start": 59037, + "end": 59039, "loc": { "start": { - "line": 1600, - "column": 36 + "line": 1636, + "column": 65 }, "end": { - "line": 1600, - "column": 37 + "line": 1636, + "column": 67 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -248598,43 +253467,41 @@ "postfix": false, "binop": null }, - "value": "_position", - "start": 58069, - "end": 58078, + "start": 59039, + "end": 59040, "loc": { "start": { - "line": 1600, - "column": 37 + "line": 1636, + "column": 67 }, "end": { - "line": 1600, - "column": 46 + "line": 1636, + "column": 68 } } }, { "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": 58078, - "end": 58079, + "start": 59041, + "end": 59042, "loc": { "start": { - "line": 1600, - "column": 46 + "line": 1636, + "column": 69 }, "end": { - "line": 1600, - "column": 47 + "line": 1636, + "column": 70 } } }, @@ -248653,16 +253520,16 @@ "updateContext": null }, "value": "this", - "start": 58080, - "end": 58084, + "start": 59055, + "end": 59059, "loc": { "start": { - "line": 1600, - "column": 48 + "line": 1637, + "column": 12 }, "end": { - "line": 1600, - "column": 52 + "line": 1637, + "column": 16 } } }, @@ -248679,16 +253546,16 @@ "binop": null, "updateContext": null }, - "start": 58084, - "end": 58085, + "start": 59059, + "end": 59060, "loc": { "start": { - "line": 1600, - "column": 52 + "line": 1637, + "column": 16 }, "end": { - "line": 1600, - "column": 53 + "line": 1637, + "column": 17 } } }, @@ -248704,77 +253571,77 @@ "postfix": false, "binop": null }, - "value": "_matrix", - "start": 58085, - "end": 58092, + "value": "_entityList", + "start": 59060, + "end": 59071, "loc": { "start": { - "line": 1600, - "column": 53 + "line": 1637, + "column": 17 }, "end": { - "line": 1600, - "column": 60 + "line": 1637, + "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 + "binop": null, + "updateContext": null }, - "start": 58092, - "end": 58093, + "start": 59071, + "end": 59072, "loc": { "start": { - "line": 1600, - "column": 60 + "line": 1637, + "column": 28 }, "end": { - "line": 1600, - "column": 61 + "line": 1637, + "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": 58093, - "end": 58094, + "value": "i", + "start": 59072, + "end": 59073, "loc": { "start": { - "line": 1600, - "column": 61 + "line": 1637, + "column": 29 }, "end": { - "line": 1600, - "column": 62 + "line": 1637, + "column": 30 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -248783,17 +253650,16 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 58107, - "end": 58111, + "start": 59073, + "end": 59074, "loc": { "start": { - "line": 1601, - "column": 12 + "line": 1637, + "column": 30 }, "end": { - "line": 1601, - "column": 16 + "line": 1637, + "column": 31 } } }, @@ -248810,16 +253676,16 @@ "binop": null, "updateContext": null }, - "start": 58111, - "end": 58112, + "start": 59074, + "end": 59075, "loc": { "start": { - "line": 1601, - "column": 16 + "line": 1637, + "column": 31 }, "end": { - "line": 1601, - "column": 17 + "line": 1637, + "column": 32 } } }, @@ -248835,72 +253701,67 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 58112, - "end": 58124, + "value": "_sceneModelDirty", + "start": 59075, + "end": 59091, "loc": { "start": { - "line": 1601, - "column": 17 + "line": 1637, + "column": 32 }, "end": { - "line": 1601, - "column": 29 + "line": 1637, + "column": 48 } } }, { "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": 58125, - "end": 58126, + "start": 59091, + "end": 59092, "loc": { "start": { - "line": 1601, - "column": 30 + "line": 1637, + "column": 48 }, "end": { - "line": 1601, - "column": 31 + "line": 1637, + "column": 49 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 58127, - "end": 58132, + "start": 59092, + "end": 59093, "loc": { "start": { - "line": 1601, - "column": 32 + "line": 1637, + "column": 49 }, "end": { - "line": 1601, - "column": 37 + "line": 1637, + "column": 50 } } }, @@ -248917,16 +253778,32 @@ "binop": null, "updateContext": null }, - "start": 58132, - "end": 58133, + "start": 59093, + "end": 59094, "loc": { "start": { - "line": 1601, - "column": 37 + "line": 1637, + "column": 50 }, "end": { - "line": 1601, - "column": 38 + "line": 1637, + "column": 51 + } + } + }, + { + "type": "CommentLine", + "value": " Entities need to retransform their World AABBs by SceneModel's worldMatrix", + "start": 59095, + "end": 59172, + "loc": { + "start": { + "line": 1637, + "column": 52 + }, + "end": { + "line": 1637, + "column": 129 } } }, @@ -248942,15 +253819,15 @@ "postfix": false, "binop": null }, - "start": 58142, - "end": 58143, + "start": 59181, + "end": 59182, "loc": { "start": { - "line": 1602, + "line": 1638, "column": 8 }, "end": { - "line": 1602, + "line": 1638, "column": 9 } } @@ -248967,31 +253844,31 @@ "postfix": false, "binop": null }, - "start": 58148, - "end": 58149, + "start": 59187, + "end": 59188, "loc": { "start": { - "line": 1603, + "line": 1639, "column": 4 }, "end": { - "line": 1603, + "line": 1639, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets the conjugate of the SceneModel's local modeling rotation transform matrix.\n *\n * This is used for RTC view matrix management in renderers.\n *\n * @type {Number[]}\n ", - "start": 58155, - "end": 58357, + "value": "*\n * Gets the SceneModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n ", + "start": 59194, + "end": 59308, "loc": { "start": { - "line": 1605, + "line": 1641, "column": 4 }, "end": { - "line": 1611, + "line": 1646, "column": 7 } } @@ -249009,15 +253886,15 @@ "binop": null }, "value": "get", - "start": 58362, - "end": 58365, + "start": 59313, + "end": 59316, "loc": { "start": { - "line": 1612, + "line": 1647, "column": 4 }, "end": { - "line": 1612, + "line": 1647, "column": 7 } } @@ -249034,17 +253911,17 @@ "postfix": false, "binop": null }, - "value": "rotationMatrixConjugate", - "start": 58366, - "end": 58389, + "value": "worldMatrix", + "start": 59317, + "end": 59328, "loc": { "start": { - "line": 1612, + "line": 1647, "column": 8 }, "end": { - "line": 1612, - "column": 31 + "line": 1647, + "column": 19 } } }, @@ -249060,16 +253937,16 @@ "postfix": false, "binop": null }, - "start": 58389, - "end": 58390, + "start": 59328, + "end": 59329, "loc": { "start": { - "line": 1612, - "column": 31 + "line": 1647, + "column": 19 }, "end": { - "line": 1612, - "column": 32 + "line": 1647, + "column": 20 } } }, @@ -249085,16 +253962,16 @@ "postfix": false, "binop": null }, - "start": 58390, - "end": 58391, + "start": 59329, + "end": 59330, "loc": { "start": { - "line": 1612, - "column": 32 + "line": 1647, + "column": 20 }, "end": { - "line": 1612, - "column": 33 + "line": 1647, + "column": 21 } } }, @@ -249110,24 +253987,24 @@ "postfix": false, "binop": null }, - "start": 58392, - "end": 58393, + "start": 59331, + "end": 59332, "loc": { "start": { - "line": 1612, - "column": 34 + "line": 1647, + "column": 22 }, "end": { - "line": 1612, - "column": 35 + "line": 1647, + "column": 23 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -249137,42 +254014,17 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 58402, - "end": 58404, + "value": "return", + "start": 59341, + "end": 59347, "loc": { "start": { - "line": 1613, + "line": 1648, "column": 8 }, "end": { - "line": 1613, - "column": 10 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 58405, - "end": 58406, - "loc": { - "start": { - "line": 1613, - "column": 11 - }, - "end": { - "line": 1613, - "column": 12 + "line": 1648, + "column": 14 } } }, @@ -249191,16 +254043,16 @@ "updateContext": null }, "value": "this", - "start": 58406, - "end": 58410, + "start": 59348, + "end": 59352, "loc": { "start": { - "line": 1613, - "column": 12 + "line": 1648, + "column": 15 }, "end": { - "line": 1613, - "column": 16 + "line": 1648, + "column": 19 } } }, @@ -249217,16 +254069,16 @@ "binop": null, "updateContext": null }, - "start": 58410, - "end": 58411, + "start": 59352, + "end": 59353, "loc": { "start": { - "line": 1613, - "column": 16 + "line": 1648, + "column": 19 }, "end": { - "line": 1613, - "column": 17 + "line": 1648, + "column": 20 } } }, @@ -249242,50 +254094,51 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 58411, - "end": 58423, + "value": "matrix", + "start": 59353, + "end": 59359, "loc": { "start": { - "line": 1613, - "column": 17 + "line": 1648, + "column": 20 }, "end": { - "line": 1613, - "column": 29 + "line": 1648, + "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": 58423, - "end": 58424, + "start": 59359, + "end": 59360, "loc": { "start": { - "line": 1613, - "column": 29 + "line": 1648, + "column": 26 }, "end": { - "line": 1613, - "column": 30 + "line": 1648, + "column": 27 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -249293,70 +254146,58 @@ "postfix": false, "binop": null }, - "start": 58425, - "end": 58426, + "start": 59365, + "end": 59366, "loc": { "start": { - "line": 1613, - "column": 31 + "line": 1649, + "column": 4 }, "end": { - "line": 1613, - "column": 32 + "line": 1649, + "column": 5 } } }, { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 58439, - "end": 58443, + "type": "CommentBlock", + "value": "*\n * Gets the SceneModel's World normal matrix.\n *\n * @type {Number[]}\n ", + "start": 59372, + "end": 59464, "loc": { "start": { - "line": 1614, - "column": 12 + "line": 1651, + "column": 4 }, "end": { - "line": 1614, - "column": 16 + "line": 1655, + "column": 7 } } }, { "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": 58443, - "end": 58444, + "value": "get", + "start": 59469, + "end": 59472, "loc": { "start": { - "line": 1614, - "column": 16 + "line": 1656, + "column": 4 }, "end": { - "line": 1614, - "column": 17 + "line": 1656, + "column": 7 } } }, @@ -249372,17 +254213,17 @@ "postfix": false, "binop": null }, - "value": "_rebuildMatrices", - "start": 58444, - "end": 58460, + "value": "worldNormalMatrix", + "start": 59473, + "end": 59490, "loc": { "start": { - "line": 1614, - "column": 17 + "line": 1656, + "column": 8 }, "end": { - "line": 1614, - "column": 33 + "line": 1656, + "column": 25 } } }, @@ -249398,16 +254239,16 @@ "postfix": false, "binop": null }, - "start": 58460, - "end": 58461, + "start": 59490, + "end": 59491, "loc": { "start": { - "line": 1614, - "column": 33 + "line": 1656, + "column": 25 }, "end": { - "line": 1614, - "column": 34 + "line": 1656, + "column": 26 } } }, @@ -249423,50 +254264,24 @@ "postfix": false, "binop": null }, - "start": 58461, - "end": 58462, + "start": 59491, + "end": 59492, "loc": { "start": { - "line": 1614, - "column": 34 + "line": 1656, + "column": 26 }, "end": { - "line": 1614, - "column": 35 + "line": 1656, + "column": 27 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 58462, - "end": 58463, - "loc": { - "start": { - "line": 1614, - "column": 35 - }, - "end": { - "line": 1614, - "column": 36 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -249474,16 +254289,16 @@ "postfix": false, "binop": null }, - "start": 58472, - "end": 58473, + "start": 59493, + "end": 59494, "loc": { "start": { - "line": 1615, - "column": 8 + "line": 1656, + "column": 28 }, "end": { - "line": 1615, - "column": 9 + "line": 1656, + "column": 29 } } }, @@ -249502,15 +254317,15 @@ "updateContext": null }, "value": "return", - "start": 58482, - "end": 58488, + "start": 59503, + "end": 59509, "loc": { "start": { - "line": 1616, + "line": 1657, "column": 8 }, "end": { - "line": 1616, + "line": 1657, "column": 14 } } @@ -249530,15 +254345,15 @@ "updateContext": null }, "value": "this", - "start": 58489, - "end": 58493, + "start": 59510, + "end": 59514, "loc": { "start": { - "line": 1616, + "line": 1657, "column": 15 }, "end": { - "line": 1616, + "line": 1657, "column": 19 } } @@ -249556,15 +254371,15 @@ "binop": null, "updateContext": null }, - "start": 58493, - "end": 58494, + "start": 59514, + "end": 59515, "loc": { "start": { - "line": 1616, + "line": 1657, "column": 19 }, "end": { - "line": 1616, + "line": 1657, "column": 20 } } @@ -249581,17 +254396,17 @@ "postfix": false, "binop": null }, - "value": "_worldRotationMatrixConjugate", - "start": 58494, - "end": 58523, + "value": "_worldNormalMatrix", + "start": 59515, + "end": 59533, "loc": { "start": { - "line": 1616, + "line": 1657, "column": 20 }, "end": { - "line": 1616, - "column": 49 + "line": 1657, + "column": 38 } } }, @@ -249608,16 +254423,16 @@ "binop": null, "updateContext": null }, - "start": 58523, - "end": 58524, + "start": 59533, + "end": 59534, "loc": { "start": { - "line": 1616, - "column": 49 + "line": 1657, + "column": 38 }, "end": { - "line": 1616, - "column": 50 + "line": 1657, + "column": 39 } } }, @@ -249633,49 +254448,39 @@ "postfix": false, "binop": null }, - "start": 58529, - "end": 58530, + "start": 59539, + "end": 59540, "loc": { "start": { - "line": 1617, + "line": 1658, "column": 4 }, "end": { - "line": 1617, + "line": 1658, "column": 5 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_setWorldMatrixDirty", - "start": 58536, - "end": 58556, + "type": "CommentBlock", + "value": "*\n * Called by private renderers in ./lib, returns the view matrix with which to\n * render this SceneModel. The view matrix is the concatenation of the\n * Camera view matrix with the Performance model's world (modeling) matrix.\n *\n * @private\n ", + "start": 59546, + "end": 59818, "loc": { "start": { - "line": 1619, + "line": 1660, "column": 4 }, "end": { - "line": 1619, - "column": 24 + "line": 1666, + "column": 7 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -249684,24 +254489,25 @@ "postfix": false, "binop": null }, - "start": 58556, - "end": 58557, + "value": "get", + "start": 59823, + "end": 59826, "loc": { "start": { - "line": 1619, - "column": 24 + "line": 1667, + "column": 4 }, "end": { - "line": 1619, - "column": 25 + "line": 1667, + "column": 7 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -249709,22 +254515,23 @@ "postfix": false, "binop": null }, - "start": 58557, - "end": 58558, + "value": "viewMatrix", + "start": 59827, + "end": 59837, "loc": { "start": { - "line": 1619, - "column": 25 + "line": 1667, + "column": 8 }, "end": { - "line": 1619, - "column": 26 + "line": 1667, + "column": 18 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -249734,50 +254541,22 @@ "postfix": false, "binop": null }, - "start": 58559, - "end": 58560, - "loc": { - "start": { - "line": 1619, - "column": 27 - }, - "end": { - "line": 1619, - "column": 28 - } - } - }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 58569, - "end": 58573, + "start": 59837, + "end": 59838, "loc": { "start": { - "line": 1620, - "column": 8 + "line": 1667, + "column": 18 }, "end": { - "line": 1620, - "column": 12 + "line": 1667, + "column": 19 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -249785,26 +254564,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 58573, - "end": 58574, + "start": 59838, + "end": 59839, "loc": { "start": { - "line": 1620, - "column": 12 + "line": 1667, + "column": 19 }, "end": { - "line": 1620, - "column": 13 + "line": 1667, + "column": 20 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -249813,98 +254591,96 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 58574, - "end": 58586, + "start": 59840, + "end": 59841, "loc": { "start": { - "line": 1620, - "column": 13 + "line": 1667, + "column": 21 }, "end": { - "line": 1620, - "column": 25 + "line": 1667, + "column": 22 } } }, { "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": 58587, - "end": 58588, + "value": "if", + "start": 59850, + "end": 59852, "loc": { "start": { - "line": 1620, - "column": 26 + "line": 1668, + "column": 8 }, "end": { - "line": 1620, - "column": 27 + "line": 1668, + "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": 58589, - "end": 58593, + "start": 59853, + "end": 59854, "loc": { "start": { - "line": 1620, - "column": 28 + "line": 1668, + "column": 11 }, "end": { - "line": 1620, - "column": 32 + "line": 1668, + "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": 58593, - "end": 58594, + "value": "!", + "start": 59854, + "end": 59855, "loc": { "start": { - "line": 1620, - "column": 32 + "line": 1668, + "column": 12 }, "end": { - "line": 1620, - "column": 33 + "line": 1668, + "column": 13 } } }, @@ -249923,16 +254699,16 @@ "updateContext": null }, "value": "this", - "start": 58603, - "end": 58607, + "start": 59855, + "end": 59859, "loc": { "start": { - "line": 1621, - "column": 8 + "line": 1668, + "column": 13 }, "end": { - "line": 1621, - "column": 12 + "line": 1668, + "column": 17 } } }, @@ -249949,16 +254725,16 @@ "binop": null, "updateContext": null }, - "start": 58607, - "end": 58608, + "start": 59859, + "end": 59860, "loc": { "start": { - "line": 1621, - "column": 12 + "line": 1668, + "column": 17 }, "end": { - "line": 1621, - "column": 13 + "line": 1668, + "column": 18 } } }, @@ -249974,78 +254750,74 @@ "postfix": false, "binop": null }, - "value": "_aabbDirty", - "start": 58608, - "end": 58618, + "value": "_viewMatrix", + "start": 59860, + "end": 59871, "loc": { "start": { - "line": 1621, - "column": 13 + "line": 1668, + "column": 18 }, "end": { - "line": 1621, - "column": 23 + "line": 1668, + "column": 29 } } }, { "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": 58619, - "end": 58620, + "start": 59871, + "end": 59872, "loc": { "start": { - "line": 1621, - "column": 24 + "line": 1668, + "column": 29 }, "end": { - "line": 1621, - "column": 25 + "line": 1668, + "column": 30 } } }, { "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": 58621, - "end": 58625, + "start": 59873, + "end": 59874, "loc": { "start": { - "line": 1621, - "column": 26 + "line": 1668, + "column": 31 }, "end": { - "line": 1621, - "column": 30 + "line": 1668, + "column": 32 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -250056,47 +254828,24 @@ "binop": null, "updateContext": null }, - "start": 58625, - "end": 58626, - "loc": { - "start": { - "line": 1621, - "column": 30 - }, - "end": { - "line": 1621, - "column": 31 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 58631, - "end": 58632, + "value": "return", + "start": 59887, + "end": 59893, "loc": { "start": { - "line": 1622, - "column": 4 + "line": 1669, + "column": 12 }, "end": { - "line": 1622, - "column": 5 + "line": 1669, + "column": 18 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -250104,52 +254853,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_transformDirty", - "start": 58638, - "end": 58653, + "value": "this", + "start": 59894, + "end": 59898, "loc": { "start": { - "line": 1624, - "column": 4 + "line": 1669, + "column": 19 }, "end": { - "line": 1624, - "column": 19 + "line": 1669, + "column": 23 } } }, { "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": 58653, - "end": 58654, + "start": 59898, + "end": 59899, "loc": { "start": { - "line": 1624, - "column": 19 + "line": 1669, + "column": 23 }, "end": { - "line": 1624, - "column": 20 + "line": 1669, + "column": 24 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -250157,48 +254908,49 @@ "postfix": false, "binop": null }, - "start": 58654, - "end": 58655, + "value": "scene", + "start": 59899, + "end": 59904, "loc": { "start": { - "line": 1624, - "column": 20 + "line": 1669, + "column": 24 }, "end": { - "line": 1624, - "column": 21 + "line": 1669, + "column": 29 } } }, { "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": 58656, - "end": 58657, + "start": 59904, + "end": 59905, "loc": { "start": { - "line": 1624, - "column": 22 + "line": 1669, + "column": 29 }, "end": { - "line": 1624, - "column": 23 + "line": 1669, + "column": 30 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -250206,20 +254958,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 58666, - "end": 58670, + "value": "camera", + "start": 59905, + "end": 59911, "loc": { "start": { - "line": 1625, - "column": 8 + "line": 1669, + "column": 30 }, "end": { - "line": 1625, - "column": 12 + "line": 1669, + "column": 36 } } }, @@ -250236,16 +254987,16 @@ "binop": null, "updateContext": null }, - "start": 58670, - "end": 58671, + "start": 59911, + "end": 59912, "loc": { "start": { - "line": 1625, - "column": 12 + "line": 1669, + "column": 36 }, "end": { - "line": 1625, - "column": 13 + "line": 1669, + "column": 37 } } }, @@ -250261,79 +255012,76 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 58671, - "end": 58683, + "value": "viewMatrix", + "start": 59912, + "end": 59922, "loc": { "start": { - "line": 1625, - "column": 13 + "line": 1669, + "column": 37 }, "end": { - "line": 1625, - "column": 25 + "line": 1669, + "column": 47 } } }, { "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": 58684, - "end": 58685, + "start": 59922, + "end": 59923, "loc": { "start": { - "line": 1625, - "column": 26 + "line": 1669, + "column": 47 }, "end": { - "line": 1625, - "column": 27 + "line": 1669, + "column": 48 } } }, { "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": 58686, - "end": 58690, + "start": 59932, + "end": 59933, "loc": { "start": { - "line": 1625, - "column": 28 + "line": 1670, + "column": 8 }, "end": { - "line": 1625, - "column": 32 + "line": 1670, + "column": 9 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -250343,52 +255091,51 @@ "binop": null, "updateContext": null }, - "start": 58690, - "end": 58691, + "value": "if", + "start": 59942, + "end": 59944, "loc": { "start": { - "line": 1625, - "column": 32 + "line": 1671, + "column": 8 }, "end": { - "line": 1625, - "column": 33 + "line": 1671, + "column": 10 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 58700, - "end": 58704, + "start": 59945, + "end": 59946, "loc": { "start": { - "line": 1626, - "column": 8 + "line": 1671, + "column": 11 }, "end": { - "line": 1626, + "line": 1671, "column": 12 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -250397,123 +255144,119 @@ "binop": null, "updateContext": null }, - "start": 58704, - "end": 58705, + "value": "this", + "start": 59946, + "end": 59950, "loc": { "start": { - "line": 1626, + "line": 1671, "column": 12 }, "end": { - "line": 1626, - "column": 13 + "line": 1671, + "column": 16 } } }, { "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": "_aabbDirty", - "start": 58705, - "end": 58715, + "start": 59950, + "end": 59951, "loc": { "start": { - "line": 1626, - "column": 13 + "line": 1671, + "column": 16 }, "end": { - "line": 1626, - "column": 23 + "line": 1671, + "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": 58716, - "end": 58717, + "value": "_matrixDirty", + "start": 59951, + "end": 59963, "loc": { "start": { - "line": 1626, - "column": 24 + "line": 1671, + "column": 17 }, "end": { - "line": 1626, - "column": 25 + "line": 1671, + "column": 29 } } }, { "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": 58718, - "end": 58722, + "start": 59963, + "end": 59964, "loc": { "start": { - "line": 1626, - "column": 26 + "line": 1671, + "column": 29 }, "end": { - "line": 1626, + "line": 1671, "column": 30 } } }, { "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": 58722, - "end": 58723, + "start": 59965, + "end": 59966, "loc": { "start": { - "line": 1626, - "column": 30 + "line": 1671, + "column": 31 }, "end": { - "line": 1626, - "column": 31 + "line": 1671, + "column": 32 } } }, @@ -250532,16 +255275,16 @@ "updateContext": null }, "value": "this", - "start": 58732, - "end": 58736, + "start": 59979, + "end": 59983, "loc": { "start": { - "line": 1627, - "column": 8 + "line": 1672, + "column": 12 }, "end": { - "line": 1627, - "column": 12 + "line": 1672, + "column": 16 } } }, @@ -250558,16 +255301,16 @@ "binop": null, "updateContext": null }, - "start": 58736, - "end": 58737, + "start": 59983, + "end": 59984, "loc": { "start": { - "line": 1627, - "column": 12 + "line": 1672, + "column": 16 }, "end": { - "line": 1627, - "column": 13 + "line": 1672, + "column": 17 } } }, @@ -250583,51 +255326,50 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 58737, - "end": 58742, + "value": "_rebuildMatrices", + "start": 59984, + "end": 60000, "loc": { "start": { - "line": 1627, - "column": 13 + "line": 1672, + "column": 17 }, "end": { - "line": 1627, - "column": 18 + "line": 1672, + "column": 33 } } }, { "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": 58742, - "end": 58743, + "start": 60000, + "end": 60001, "loc": { "start": { - "line": 1627, - "column": 18 + "line": 1672, + "column": 33 }, "end": { - "line": 1627, - "column": 19 + "line": 1672, + "column": 34 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -250635,51 +255377,49 @@ "postfix": false, "binop": null }, - "value": "_aabbDirty", - "start": 58743, - "end": 58753, + "start": 60001, + "end": 60002, "loc": { "start": { - "line": 1627, - "column": 19 + "line": 1672, + "column": 34 }, "end": { - "line": 1627, - "column": 29 + "line": 1672, + "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": 58754, - "end": 58755, + "start": 60002, + "end": 60003, "loc": { "start": { - "line": 1627, - "column": 30 + "line": 1672, + "column": 35 }, "end": { - "line": 1627, - "column": 31 + "line": 1672, + "column": 36 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -250690,24 +255430,24 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 58756, - "end": 58760, + "value": "this", + "start": 60016, + "end": 60020, "loc": { "start": { - "line": 1627, - "column": 32 + "line": 1673, + "column": 12 }, "end": { - "line": 1627, - "column": 36 + "line": 1673, + "column": 16 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -250717,24 +255457,24 @@ "binop": null, "updateContext": null }, - "start": 58760, - "end": 58761, + "start": 60020, + "end": 60021, "loc": { "start": { - "line": 1627, - "column": 36 + "line": 1673, + "column": 16 }, "end": { - "line": 1627, - "column": 37 + "line": 1673, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -250742,100 +255482,106 @@ "postfix": false, "binop": null }, - "start": 58766, - "end": 58767, + "value": "_viewMatrixDirty", + "start": 60021, + "end": 60037, "loc": { "start": { - "line": 1628, - "column": 4 + "line": 1673, + "column": 17 }, "end": { - "line": 1628, - "column": 5 + "line": 1673, + "column": 33 } } }, { "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": "_sceneModelDirty", - "start": 58773, - "end": 58789, + "value": "=", + "start": 60038, + "end": 60039, "loc": { "start": { - "line": 1630, - "column": 4 + "line": 1673, + "column": 34 }, "end": { - "line": 1630, - "column": 20 + "line": 1673, + "column": 35 } } }, { "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": 58789, - "end": 58790, + "value": "true", + "start": 60040, + "end": 60044, "loc": { "start": { - "line": 1630, - "column": 20 + "line": 1673, + "column": 36 }, "end": { - "line": 1630, - "column": 21 + "line": 1673, + "column": 40 } } }, { "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": 58790, - "end": 58791, + "start": 60044, + "end": 60045, "loc": { "start": { - "line": 1630, - "column": 21 + "line": 1673, + "column": 40 }, "end": { - "line": 1630, - "column": 22 + "line": 1673, + "column": 41 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -250843,25 +255589,25 @@ "postfix": false, "binop": null }, - "start": 58792, - "end": 58793, + "start": 60054, + "end": 60055, "loc": { "start": { - "line": 1630, - "column": 23 + "line": 1674, + "column": 8 }, "end": { - "line": 1630, - "column": 24 + "line": 1674, + "column": 9 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -250870,49 +255616,49 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 58802, - "end": 58806, + "value": "if", + "start": 60064, + "end": 60066, "loc": { "start": { - "line": 1631, + "line": 1675, "column": 8 }, "end": { - "line": 1631, - "column": 12 + "line": 1675, + "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": 58806, - "end": 58807, + "start": 60067, + "end": 60068, "loc": { "start": { - "line": 1631, - "column": 12 + "line": 1675, + "column": 11 }, "end": { - "line": 1631, - "column": 13 + "line": 1675, + "column": 12 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -250920,19 +255666,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scene", - "start": 58807, - "end": 58812, + "value": "this", + "start": 60068, + "end": 60072, "loc": { "start": { - "line": 1631, - "column": 13 + "line": 1675, + "column": 12 }, "end": { - "line": 1631, - "column": 18 + "line": 1675, + "column": 16 } } }, @@ -250949,16 +255696,16 @@ "binop": null, "updateContext": null }, - "start": 58812, - "end": 58813, + "start": 60072, + "end": 60073, "loc": { "start": { - "line": 1631, - "column": 18 + "line": 1675, + "column": 16 }, "end": { - "line": 1631, - "column": 19 + "line": 1675, + "column": 17 } } }, @@ -250974,105 +255721,73 @@ "postfix": false, "binop": null }, - "value": "_aabbDirty", - "start": 58813, - "end": 58823, - "loc": { - "start": { - "line": 1631, - "column": 19 - }, - "end": { - "line": 1631, - "column": 29 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 58824, - "end": 58825, + "value": "_viewMatrixDirty", + "start": 60073, + "end": 60089, "loc": { "start": { - "line": 1631, - "column": 30 + "line": 1675, + "column": 17 }, "end": { - "line": 1631, - "column": 31 + "line": 1675, + "column": 33 } } }, { "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": 58826, - "end": 58830, + "start": 60089, + "end": 60090, "loc": { "start": { - "line": 1631, - "column": 32 + "line": 1675, + "column": 33 }, "end": { - "line": 1631, - "column": 36 + "line": 1675, + "column": 34 } } }, { "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": 58830, - "end": 58831, + "start": 60091, + "end": 60092, "loc": { "start": { - "line": 1631, - "column": 36 + "line": 1675, + "column": 35 }, "end": { - "line": 1631, - "column": 37 + "line": 1675, + "column": 36 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -251080,20 +255795,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 58840, - "end": 58844, + "value": "math", + "start": 60105, + "end": 60109, "loc": { "start": { - "line": 1632, - "column": 8 + "line": 1676, + "column": 12 }, "end": { - "line": 1632, - "column": 12 + "line": 1676, + "column": 16 } } }, @@ -251110,16 +255824,16 @@ "binop": null, "updateContext": null }, - "start": 58844, - "end": 58845, + "start": 60109, + "end": 60110, "loc": { "start": { - "line": 1632, - "column": 12 + "line": 1676, + "column": 16 }, "end": { - "line": 1632, - "column": 13 + "line": 1676, + "column": 17 } } }, @@ -251135,51 +255849,49 @@ "postfix": false, "binop": null }, - "value": "_aabbDirty", - "start": 58845, - "end": 58855, + "value": "mulMat4", + "start": 60110, + "end": 60117, "loc": { "start": { - "line": 1632, - "column": 13 + "line": 1676, + "column": 17 }, "end": { - "line": 1632, - "column": 23 + "line": 1676, + "column": 24 } } }, { "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": 58856, - "end": 58857, + "start": 60117, + "end": 60118, "loc": { "start": { - "line": 1632, + "line": 1676, "column": 24 }, "end": { - "line": 1632, + "line": 1676, "column": 25 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -251190,24 +255902,24 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 58858, - "end": 58862, + "value": "this", + "start": 60118, + "end": 60122, "loc": { "start": { - "line": 1632, - "column": 26 + "line": 1676, + "column": 25 }, "end": { - "line": 1632, - "column": 30 + "line": 1676, + "column": 29 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -251217,23 +255929,22 @@ "binop": null, "updateContext": null }, - "start": 58862, - "end": 58863, + "start": 60122, + "end": 60123, "loc": { "start": { - "line": 1632, - "column": 30 + "line": 1676, + "column": 29 }, "end": { - "line": 1632, - "column": 31 + "line": 1676, + "column": 30 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -251241,20 +255952,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 58872, - "end": 58876, + "value": "scene", + "start": 60123, + "end": 60128, "loc": { "start": { - "line": 1633, - "column": 8 + "line": 1676, + "column": 30 }, "end": { - "line": 1633, - "column": 12 + "line": 1676, + "column": 35 } } }, @@ -251271,16 +255981,16 @@ "binop": null, "updateContext": null }, - "start": 58876, - "end": 58877, + "start": 60128, + "end": 60129, "loc": { "start": { - "line": 1633, - "column": 12 + "line": 1676, + "column": 35 }, "end": { - "line": 1633, - "column": 13 + "line": 1676, + "column": 36 } } }, @@ -251296,17 +256006,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 58877, - "end": 58882, + "value": "camera", + "start": 60129, + "end": 60135, "loc": { "start": { - "line": 1633, - "column": 13 + "line": 1676, + "column": 36 }, "end": { - "line": 1633, - "column": 18 + "line": 1676, + "column": 42 } } }, @@ -251323,16 +256033,16 @@ "binop": null, "updateContext": null }, - "start": 58882, - "end": 58883, + "start": 60135, + "end": 60136, "loc": { "start": { - "line": 1633, - "column": 18 + "line": 1676, + "column": 42 }, "end": { - "line": 1633, - "column": 19 + "line": 1676, + "column": 43 } } }, @@ -251348,51 +256058,50 @@ "postfix": false, "binop": null }, - "value": "_aabbDirty", - "start": 58883, - "end": 58893, + "value": "viewMatrix", + "start": 60136, + "end": 60146, "loc": { "start": { - "line": 1633, - "column": 19 + "line": 1676, + "column": 43 }, "end": { - "line": 1633, - "column": 29 + "line": 1676, + "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": 58894, - "end": 58895, + "start": 60146, + "end": 60147, "loc": { "start": { - "line": 1633, - "column": 30 + "line": 1676, + "column": 53 }, "end": { - "line": 1633, - "column": 31 + "line": 1676, + "column": 54 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -251403,24 +256112,24 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 58896, - "end": 58900, + "value": "this", + "start": 60148, + "end": 60152, "loc": { "start": { - "line": 1633, - "column": 32 + "line": 1676, + "column": 55 }, "end": { - "line": 1633, - "column": 36 + "line": 1676, + "column": 59 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -251430,23 +256139,22 @@ "binop": null, "updateContext": null }, - "start": 58900, - "end": 58901, + "start": 60152, + "end": 60153, "loc": { "start": { - "line": 1633, - "column": 36 + "line": 1676, + "column": 59 }, "end": { - "line": 1633, - "column": 37 + "line": 1676, + "column": 60 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -251454,27 +256162,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 58910, - "end": 58914, + "value": "_matrix", + "start": 60153, + "end": 60160, "loc": { "start": { - "line": 1634, - "column": 8 + "line": 1676, + "column": 60 }, "end": { - "line": 1634, - "column": 12 + "line": 1676, + "column": 67 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -251484,22 +256191,23 @@ "binop": null, "updateContext": null }, - "start": 58914, - "end": 58915, + "start": 60160, + "end": 60161, "loc": { "start": { - "line": 1634, - "column": 12 + "line": 1676, + "column": 67 }, "end": { - "line": 1634, - "column": 13 + "line": 1676, + "column": 68 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -251507,53 +256215,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_matrixDirty", - "start": 58915, - "end": 58927, + "value": "this", + "start": 60162, + "end": 60166, "loc": { "start": { - "line": 1634, - "column": 13 + "line": 1676, + "column": 69 }, "end": { - "line": 1634, - "column": 25 + "line": 1676, + "column": 73 } } }, { "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": 58928, - "end": 58929, + "start": 60166, + "end": 60167, "loc": { "start": { - "line": 1634, - "column": 26 + "line": 1676, + "column": 73 }, "end": { - "line": 1634, - "column": 27 + "line": 1676, + "column": 74 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -251561,81 +256268,77 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 58930, - "end": 58934, + "value": "_viewMatrix", + "start": 60167, + "end": 60178, "loc": { "start": { - "line": 1634, - "column": 28 + "line": 1676, + "column": 74 }, "end": { - "line": 1634, - "column": 32 + "line": 1676, + "column": 85 } } }, { "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": 58934, - "end": 58935, + "start": 60178, + "end": 60179, "loc": { "start": { - "line": 1634, - "column": 32 + "line": 1676, + "column": 85 }, "end": { - "line": 1634, - "column": 33 + "line": 1676, + "column": 86 } } }, { "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": 58944, - "end": 58947, + "start": 60179, + "end": 60180, "loc": { "start": { - "line": 1635, - "column": 8 + "line": 1676, + "column": 86 }, "end": { - "line": 1635, - "column": 11 + "line": 1676, + "column": 87 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -251644,23 +256347,23 @@ "postfix": false, "binop": null }, - "start": 58948, - "end": 58949, + "value": "math", + "start": 60193, + "end": 60197, "loc": { "start": { - "line": 1635, + "line": 1677, "column": 12 }, "end": { - "line": 1635, - "column": 13 + "line": 1677, + "column": 16 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -251671,17 +256374,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 58949, - "end": 58952, + "start": 60197, + "end": 60198, "loc": { "start": { - "line": 1635, - "column": 13 + "line": 1677, + "column": 16 }, "end": { - "line": 1635, - "column": 16 + "line": 1677, + "column": 17 } } }, @@ -251697,50 +256399,49 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 58953, - "end": 58954, + "value": "inverseMat4", + "start": 60198, + "end": 60209, "loc": { "start": { - "line": 1635, + "line": 1677, "column": 17 }, "end": { - "line": 1635, - "column": 18 + "line": 1677, + "column": 28 } } }, { "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": 58955, - "end": 58956, + "start": 60209, + "end": 60210, "loc": { "start": { - "line": 1635, - "column": 19 + "line": 1677, + "column": 28 }, "end": { - "line": 1635, - "column": 20 + "line": 1677, + "column": 29 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -251751,24 +256452,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 58957, - "end": 58958, + "value": "this", + "start": 60210, + "end": 60214, "loc": { "start": { - "line": 1635, - "column": 21 + "line": 1677, + "column": 29 }, "end": { - "line": 1635, - "column": 22 + "line": 1677, + "column": 33 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -251778,16 +256479,16 @@ "binop": null, "updateContext": null }, - "start": 58958, - "end": 58959, + "start": 60214, + "end": 60215, "loc": { "start": { - "line": 1635, - "column": 22 + "line": 1677, + "column": 33 }, "end": { - "line": 1635, - "column": 23 + "line": 1677, + "column": 34 } } }, @@ -251803,44 +256504,43 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 58960, - "end": 58963, + "value": "_viewMatrix", + "start": 60215, + "end": 60226, "loc": { "start": { - "line": 1635, - "column": 24 + "line": 1677, + "column": 34 }, "end": { - "line": 1635, - "column": 27 + "line": 1677, + "column": 45 } } }, { "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": 58964, - "end": 58965, + "start": 60226, + "end": 60227, "loc": { "start": { - "line": 1635, - "column": 28 + "line": 1677, + "column": 45 }, "end": { - "line": 1635, - "column": 29 + "line": 1677, + "column": 46 } } }, @@ -251859,16 +256559,16 @@ "updateContext": null }, "value": "this", - "start": 58966, - "end": 58970, + "start": 60228, + "end": 60232, "loc": { "start": { - "line": 1635, - "column": 30 + "line": 1677, + "column": 47 }, "end": { - "line": 1635, - "column": 34 + "line": 1677, + "column": 51 } } }, @@ -251885,16 +256585,16 @@ "binop": null, "updateContext": null }, - "start": 58970, - "end": 58971, + "start": 60232, + "end": 60233, "loc": { "start": { - "line": 1635, - "column": 34 + "line": 1677, + "column": 51 }, "end": { - "line": 1635, - "column": 35 + "line": 1677, + "column": 52 } } }, @@ -251910,23 +256610,23 @@ "postfix": false, "binop": null }, - "value": "_entityList", - "start": 58971, - "end": 58982, + "value": "_viewNormalMatrix", + "start": 60233, + "end": 60250, "loc": { "start": { - "line": 1635, - "column": 35 + "line": 1677, + "column": 52 }, "end": { - "line": 1635, - "column": 46 + "line": 1677, + "column": 69 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -251934,131 +256634,129 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 58982, - "end": 58983, + "start": 60250, + "end": 60251, "loc": { "start": { - "line": 1635, - "column": 46 + "line": 1677, + "column": 69 }, "end": { - "line": 1635, - "column": 47 + "line": 1677, + "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": "length", - "start": 58983, - "end": 58989, + "start": 60251, + "end": 60252, "loc": { "start": { - "line": 1635, - "column": 47 + "line": 1677, + "column": 70 }, "end": { - "line": 1635, - "column": 53 + "line": 1677, + "column": 71 } } }, { "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": 58989, - "end": 58990, + "value": "math", + "start": 60265, + "end": 60269, "loc": { "start": { - "line": 1635, - "column": 53 + "line": 1678, + "column": 12 }, "end": { - "line": 1635, - "column": 54 + "line": 1678, + "column": 16 } } }, { "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": "i", - "start": 58991, - "end": 58992, + "start": 60269, + "end": 60270, "loc": { "start": { - "line": 1635, - "column": 55 + "line": 1678, + "column": 16 }, "end": { - "line": 1635, - "column": 56 + "line": 1678, + "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": 7, - "updateContext": null + "binop": null }, - "value": "<", - "start": 58993, - "end": 58994, + "value": "transposeMat4", + "start": 60270, + "end": 60283, "loc": { "start": { - "line": 1635, - "column": 57 + "line": 1678, + "column": 17 }, "end": { - "line": 1635, - "column": 58 + "line": 1678, + "column": 30 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -252067,25 +256765,25 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 58995, - "end": 58998, + "start": 60283, + "end": 60284, "loc": { "start": { - "line": 1635, - "column": 59 + "line": 1678, + "column": 30 }, "end": { - "line": 1635, - "column": 62 + "line": 1678, + "column": 31 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -252094,68 +256792,69 @@ "binop": null, "updateContext": null }, - "start": 58998, - "end": 58999, + "value": "this", + "start": 60284, + "end": 60288, "loc": { "start": { - "line": 1635, - "column": 62 + "line": 1678, + "column": 31 }, "end": { - "line": 1635, - "column": 63 + "line": 1678, + "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": "i", - "start": 59000, - "end": 59001, + "start": 60288, + "end": 60289, "loc": { "start": { - "line": 1635, - "column": 64 + "line": 1678, + "column": 35 }, "end": { - "line": 1635, - "column": 65 + "line": 1678, + "column": 36 } } }, { "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": 59001, - "end": 59003, + "value": "_viewNormalMatrix", + "start": 60289, + "end": 60306, "loc": { "start": { - "line": 1635, - "column": 65 + "line": 1678, + "column": 36 }, "end": { - "line": 1635, - "column": 67 + "line": 1678, + "column": 53 } } }, @@ -252171,41 +256870,42 @@ "postfix": false, "binop": null }, - "start": 59003, - "end": 59004, + "start": 60306, + "end": 60307, "loc": { "start": { - "line": 1635, - "column": 67 + "line": 1678, + "column": 53 }, "end": { - "line": 1635, - "column": 68 + "line": 1678, + "column": 54 } } }, { "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": 59005, - "end": 59006, + "start": 60307, + "end": 60308, "loc": { "start": { - "line": 1635, - "column": 69 + "line": 1678, + "column": 54 }, "end": { - "line": 1635, - "column": 70 + "line": 1678, + "column": 55 } } }, @@ -252224,15 +256924,15 @@ "updateContext": null }, "value": "this", - "start": 59019, - "end": 59023, + "start": 60321, + "end": 60325, "loc": { "start": { - "line": 1636, + "line": 1679, "column": 12 }, "end": { - "line": 1636, + "line": 1679, "column": 16 } } @@ -252250,15 +256950,15 @@ "binop": null, "updateContext": null }, - "start": 59023, - "end": 59024, + "start": 60325, + "end": 60326, "loc": { "start": { - "line": 1636, + "line": 1679, "column": 16 }, "end": { - "line": 1636, + "line": 1679, "column": 17 } } @@ -252275,49 +256975,51 @@ "postfix": false, "binop": null }, - "value": "_entityList", - "start": 59024, - "end": 59035, + "value": "_viewMatrixDirty", + "start": 60326, + "end": 60342, "loc": { "start": { - "line": 1636, + "line": 1679, "column": 17 }, "end": { - "line": 1636, - "column": 28 + "line": 1679, + "column": 33 } } }, { "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": 59035, - "end": 59036, + "value": "=", + "start": 60343, + "end": 60344, "loc": { "start": { - "line": 1636, - "column": 28 + "line": 1679, + "column": 34 }, "end": { - "line": 1636, - "column": 29 + "line": 1679, + "column": 35 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -252325,26 +257027,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "i", - "start": 59036, - "end": 59037, + "value": "false", + "start": 60345, + "end": 60350, "loc": { "start": { - "line": 1636, - "column": 29 + "line": 1679, + "column": 36 }, "end": { - "line": 1636, - "column": 30 + "line": 1679, + "column": 41 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -252354,22 +257057,22 @@ "binop": null, "updateContext": null }, - "start": 59037, - "end": 59038, + "start": 60350, + "end": 60351, "loc": { "start": { - "line": 1636, - "column": 30 + "line": 1679, + "column": 41 }, "end": { - "line": 1636, - "column": 31 + "line": 1679, + "column": 42 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -252377,76 +257080,80 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 59038, - "end": 59039, + "start": 60360, + "end": 60361, "loc": { "start": { - "line": 1636, - "column": 31 + "line": 1680, + "column": 8 }, "end": { - "line": 1636, - "column": 32 + "line": 1680, + "column": 9 } } }, { "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": "_sceneModelDirty", - "start": 59039, - "end": 59055, + "value": "return", + "start": 60370, + "end": 60376, "loc": { "start": { - "line": 1636, - "column": 32 + "line": 1681, + "column": 8 }, "end": { - "line": 1636, - "column": 48 + "line": 1681, + "column": 14 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 59055, - "end": 59056, + "value": "this", + "start": 60377, + "end": 60381, "loc": { "start": { - "line": 1636, - "column": 48 + "line": 1681, + "column": 15 }, "end": { - "line": 1636, - "column": 49 + "line": 1681, + "column": 19 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -252454,85 +257161,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 59056, - "end": 59057, + "start": 60381, + "end": 60382, "loc": { "start": { - "line": 1636, - "column": 49 + "line": 1681, + "column": 19 }, "end": { - "line": 1636, - "column": 50 + "line": 1681, + "column": 20 } } }, { "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": 59057, - "end": 59058, - "loc": { - "start": { - "line": 1636, - "column": 50 - }, - "end": { - "line": 1636, - "column": 51 - } - } - }, - { - "type": "CommentLine", - "value": " Entities need to retransform their World AABBs by SceneModel's worldMatrix", - "start": 59059, - "end": 59136, + "value": "_viewMatrix", + "start": 60382, + "end": 60393, "loc": { "start": { - "line": 1636, - "column": 52 + "line": 1681, + "column": 20 }, "end": { - "line": 1636, - "column": 129 + "line": 1681, + "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": 59145, - "end": 59146, + "start": 60393, + "end": 60394, "loc": { "start": { - "line": 1637, - "column": 8 + "line": 1681, + "column": 31 }, "end": { - "line": 1637, - "column": 9 + "line": 1681, + "column": 32 } } }, @@ -252548,31 +257241,31 @@ "postfix": false, "binop": null }, - "start": 59151, - "end": 59152, + "start": 60399, + "end": 60400, "loc": { "start": { - "line": 1638, + "line": 1682, "column": 4 }, "end": { - "line": 1638, + "line": 1682, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n ", - "start": 59158, - "end": 59272, + "value": "*\n * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel.\n *\n * @private\n ", + "start": 60406, + "end": 60554, "loc": { "start": { - "line": 1640, + "line": 1684, "column": 4 }, "end": { - "line": 1645, + "line": 1688, "column": 7 } } @@ -252590,15 +257283,15 @@ "binop": null }, "value": "get", - "start": 59277, - "end": 59280, + "start": 60559, + "end": 60562, "loc": { "start": { - "line": 1646, + "line": 1689, "column": 4 }, "end": { - "line": 1646, + "line": 1689, "column": 7 } } @@ -252615,17 +257308,17 @@ "postfix": false, "binop": null }, - "value": "worldMatrix", - "start": 59281, - "end": 59292, + "value": "viewNormalMatrix", + "start": 60563, + "end": 60579, "loc": { "start": { - "line": 1646, + "line": 1689, "column": 8 }, "end": { - "line": 1646, - "column": 19 + "line": 1689, + "column": 24 } } }, @@ -252641,16 +257334,16 @@ "postfix": false, "binop": null }, - "start": 59292, - "end": 59293, + "start": 60579, + "end": 60580, "loc": { "start": { - "line": 1646, - "column": 19 + "line": 1689, + "column": 24 }, "end": { - "line": 1646, - "column": 20 + "line": 1689, + "column": 25 } } }, @@ -252666,16 +257359,16 @@ "postfix": false, "binop": null }, - "start": 59293, - "end": 59294, + "start": 60580, + "end": 60581, "loc": { "start": { - "line": 1646, - "column": 20 + "line": 1689, + "column": 25 }, "end": { - "line": 1646, - "column": 21 + "line": 1689, + "column": 26 } } }, @@ -252691,24 +257384,24 @@ "postfix": false, "binop": null }, - "start": 59295, - "end": 59296, + "start": 60582, + "end": 60583, "loc": { "start": { - "line": 1646, - "column": 22 + "line": 1689, + "column": 27 }, "end": { - "line": 1646, - "column": 23 + "line": 1689, + "column": 28 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -252718,77 +257411,76 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 59305, - "end": 59311, + "value": "if", + "start": 60592, + "end": 60594, "loc": { "start": { - "line": 1647, + "line": 1690, "column": 8 }, "end": { - "line": 1647, - "column": 14 + "line": 1690, + "column": 10 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 59312, - "end": 59316, + "start": 60595, + "end": 60596, "loc": { "start": { - "line": 1647, - "column": 15 + "line": 1690, + "column": 11 }, "end": { - "line": 1647, - "column": 19 + "line": 1690, + "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": 59316, - "end": 59317, + "value": "!", + "start": 60596, + "end": 60597, "loc": { "start": { - "line": 1647, - "column": 19 + "line": 1690, + "column": 12 }, "end": { - "line": 1647, - "column": 20 + "line": 1690, + "column": 13 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -252796,26 +257488,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "matrix", - "start": 59317, - "end": 59323, + "value": "this", + "start": 60597, + "end": 60601, "loc": { "start": { - "line": 1647, - "column": 20 + "line": 1690, + "column": 13 }, "end": { - "line": 1647, - "column": 26 + "line": 1690, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -252825,24 +257518,24 @@ "binop": null, "updateContext": null }, - "start": 59323, - "end": 59324, + "start": 60601, + "end": 60602, "loc": { "start": { - "line": 1647, - "column": 26 + "line": 1690, + "column": 17 }, "end": { - "line": 1647, - "column": 27 + "line": 1690, + "column": 18 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -252850,39 +257543,49 @@ "postfix": false, "binop": null }, - "start": 59329, - "end": 59330, + "value": "_viewNormalMatrix", + "start": 60602, + "end": 60619, "loc": { "start": { - "line": 1648, - "column": 4 + "line": 1690, + "column": 18 }, "end": { - "line": 1648, - "column": 5 + "line": 1690, + "column": 35 } } }, { - "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's World normal matrix.\n *\n * @type {Number[]}\n ", - "start": 59336, - "end": 59428, + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 60619, + "end": 60620, "loc": { "start": { - "line": 1650, - "column": 4 + "line": 1690, + "column": 35 }, "end": { - "line": 1654, - "column": 7 + "line": 1690, + "column": 36 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -252891,74 +257594,78 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 59433, - "end": 59436, + "start": 60621, + "end": 60622, "loc": { "start": { - "line": 1655, - "column": 4 + "line": 1690, + "column": 37 }, "end": { - "line": 1655, - "column": 7 + "line": 1690, + "column": 38 } } }, { "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": "worldNormalMatrix", - "start": 59437, - "end": 59454, + "value": "return", + "start": 60635, + "end": 60641, "loc": { "start": { - "line": 1655, - "column": 8 + "line": 1691, + "column": 12 }, "end": { - "line": 1655, - "column": 25 + "line": 1691, + "column": 18 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 59454, - "end": 59455, + "value": "this", + "start": 60642, + "end": 60646, "loc": { "start": { - "line": 1655, - "column": 25 + "line": 1691, + "column": 19 }, "end": { - "line": 1655, - "column": 26 + "line": 1691, + "column": 23 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -252966,25 +257673,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 59455, - "end": 59456, + "start": 60646, + "end": 60647, "loc": { "start": { - "line": 1655, - "column": 26 + "line": 1691, + "column": 23 }, "end": { - "line": 1655, - "column": 27 + "line": 1691, + "column": 24 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -252993,24 +257701,24 @@ "postfix": false, "binop": null }, - "start": 59457, - "end": 59458, + "value": "scene", + "start": 60647, + "end": 60652, "loc": { "start": { - "line": 1655, - "column": 28 + "line": 1691, + "column": 24 }, "end": { - "line": 1655, + "line": 1691, "column": 29 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -253020,24 +257728,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 59467, - "end": 59473, + "start": 60652, + "end": 60653, "loc": { "start": { - "line": 1656, - "column": 8 + "line": 1691, + "column": 29 }, "end": { - "line": 1656, - "column": 14 + "line": 1691, + "column": 30 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -253045,20 +257751,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 59474, - "end": 59478, + "value": "camera", + "start": 60653, + "end": 60659, "loc": { "start": { - "line": 1656, - "column": 15 + "line": 1691, + "column": 30 }, "end": { - "line": 1656, - "column": 19 + "line": 1691, + "column": 36 } } }, @@ -253075,16 +257780,16 @@ "binop": null, "updateContext": null }, - "start": 59478, - "end": 59479, + "start": 60659, + "end": 60660, "loc": { "start": { - "line": 1656, - "column": 19 + "line": 1691, + "column": 36 }, "end": { - "line": 1656, - "column": 20 + "line": 1691, + "column": 37 } } }, @@ -253100,17 +257805,17 @@ "postfix": false, "binop": null }, - "value": "_worldNormalMatrix", - "start": 59479, - "end": 59497, + "value": "viewNormalMatrix", + "start": 60660, + "end": 60676, "loc": { "start": { - "line": 1656, - "column": 20 + "line": 1691, + "column": 37 }, "end": { - "line": 1656, - "column": 38 + "line": 1691, + "column": 53 } } }, @@ -253127,16 +257832,16 @@ "binop": null, "updateContext": null }, - "start": 59497, - "end": 59498, + "start": 60676, + "end": 60677, "loc": { "start": { - "line": 1656, - "column": 38 + "line": 1691, + "column": 53 }, "end": { - "line": 1656, - "column": 39 + "line": 1691, + "column": 54 } } }, @@ -253152,39 +257857,51 @@ "postfix": false, "binop": null }, - "start": 59503, - "end": 59504, + "start": 60686, + "end": 60687, "loc": { "start": { - "line": 1657, - "column": 4 + "line": 1692, + "column": 8 }, "end": { - "line": 1657, - "column": 5 + "line": 1692, + "column": 9 } } }, { - "type": "CommentBlock", - "value": "*\n * Called by private renderers in ./lib, returns the view matrix with which to\n * render this SceneModel. The view matrix is the concatenation of the\n * Camera view matrix with the Performance model's world (modeling) matrix.\n *\n * @private\n ", - "start": 59510, - "end": 59782, + "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": 60696, + "end": 60698, "loc": { "start": { - "line": 1659, - "column": 4 + "line": 1693, + "column": 8 }, "end": { - "line": 1665, - "column": 7 + "line": 1693, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -253193,23 +257910,23 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 59787, - "end": 59790, + "start": 60699, + "end": 60700, "loc": { "start": { - "line": 1666, - "column": 4 + "line": 1693, + "column": 11 }, "end": { - "line": 1666, - "column": 7 + "line": 1693, + "column": 12 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -253217,26 +257934,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "viewMatrix", - "start": 59791, - "end": 59801, + "value": "this", + "start": 60700, + "end": 60704, "loc": { "start": { - "line": 1666, - "column": 8 + "line": 1693, + "column": 12 }, "end": { - "line": 1666, - "column": 18 + "line": 1693, + "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 60704, + "end": 60705, + "loc": { + "start": { + "line": 1693, + "column": 16 + }, + "end": { + "line": 1693, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -253245,16 +257989,17 @@ "postfix": false, "binop": null }, - "start": 59801, - "end": 59802, + "value": "_matrixDirty", + "start": 60705, + "end": 60717, "loc": { "start": { - "line": 1666, - "column": 18 + "line": 1693, + "column": 17 }, "end": { - "line": 1666, - "column": 19 + "line": 1693, + "column": 29 } } }, @@ -253270,16 +258015,16 @@ "postfix": false, "binop": null }, - "start": 59802, - "end": 59803, + "start": 60717, + "end": 60718, "loc": { "start": { - "line": 1666, - "column": 19 + "line": 1693, + "column": 29 }, "end": { - "line": 1666, - "column": 20 + "line": 1693, + "column": 30 } } }, @@ -253295,23 +258040,50 @@ "postfix": false, "binop": null }, - "start": 59804, - "end": 59805, + "start": 60719, + "end": 60720, "loc": { "start": { - "line": 1666, - "column": 21 + "line": 1693, + "column": 31 }, "end": { - "line": 1666, - "column": 22 + "line": 1693, + "column": 32 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 60733, + "end": 60737, + "loc": { + "start": { + "line": 1694, + "column": 12 + }, + "end": { + "line": 1694, + "column": 16 + } + } + }, + { + "type": { + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -253322,24 +258094,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 59814, - "end": 59816, + "start": 60737, + "end": 60738, "loc": { "start": { - "line": 1667, - "column": 8 + "line": 1694, + "column": 16 }, "end": { - "line": 1667, - "column": 10 + "line": 1694, + "column": 17 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -253348,78 +258119,74 @@ "postfix": false, "binop": null }, - "start": 59817, - "end": 59818, + "value": "_rebuildMatrices", + "start": 60738, + "end": 60754, "loc": { "start": { - "line": 1667, - "column": 11 + "line": 1694, + "column": 17 }, "end": { - "line": 1667, - "column": 12 + "line": 1694, + "column": 33 } } }, { "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": 59818, - "end": 59819, + "start": 60754, + "end": 60755, "loc": { "start": { - "line": 1667, - "column": 12 + "line": 1694, + "column": 33 }, "end": { - "line": 1667, - "column": 13 + "line": 1694, + "column": 34 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 59819, - "end": 59823, + "start": 60755, + "end": 60756, "loc": { "start": { - "line": 1667, - "column": 13 + "line": 1694, + "column": 34 }, "end": { - "line": 1667, - "column": 17 + "line": 1694, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -253429,22 +258196,23 @@ "binop": null, "updateContext": null }, - "start": 59823, - "end": 59824, + "start": 60756, + "end": 60757, "loc": { "start": { - "line": 1667, - "column": 17 + "line": 1694, + "column": 35 }, "end": { - "line": 1667, - "column": 18 + "line": 1694, + "column": 36 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -253452,25 +258220,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_viewMatrix", - "start": 59824, - "end": 59835, + "value": "this", + "start": 60770, + "end": 60774, "loc": { "start": { - "line": 1667, - "column": 18 + "line": 1695, + "column": 12 }, "end": { - "line": 1667, - "column": 29 + "line": 1695, + "column": 16 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -253478,25 +258247,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 59835, - "end": 59836, + "start": 60774, + "end": 60775, "loc": { "start": { - "line": 1667, - "column": 29 + "line": 1695, + "column": 16 }, "end": { - "line": 1667, - "column": 30 + "line": 1695, + "column": 17 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -253505,51 +258275,51 @@ "postfix": false, "binop": null }, - "start": 59837, - "end": 59838, + "value": "_viewMatrixDirty", + "start": 60775, + "end": 60791, "loc": { "start": { - "line": 1667, - "column": 31 + "line": 1695, + "column": 17 }, "end": { - "line": 1667, - "column": 32 + "line": 1695, + "column": 33 } } }, { "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": 59851, - "end": 59857, + "value": "=", + "start": 60792, + "end": 60793, "loc": { "start": { - "line": 1668, - "column": 12 + "line": 1695, + "column": 34 }, "end": { - "line": 1668, - "column": 18 + "line": 1695, + "column": 35 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -253560,24 +258330,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 59858, - "end": 59862, + "value": "true", + "start": 60794, + "end": 60798, "loc": { "start": { - "line": 1668, - "column": 19 + "line": 1695, + "column": 36 }, "end": { - "line": 1668, - "column": 23 + "line": 1695, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -253587,24 +258357,24 @@ "binop": null, "updateContext": null }, - "start": 59862, - "end": 59863, + "start": 60798, + "end": 60799, "loc": { "start": { - "line": 1668, - "column": 23 + "line": 1695, + "column": 40 }, "end": { - "line": 1668, - "column": 24 + "line": 1695, + "column": 41 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -253612,23 +258382,23 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 59863, - "end": 59868, + "start": 60808, + "end": 60809, "loc": { "start": { - "line": 1668, - "column": 24 + "line": 1696, + "column": 8 }, "end": { - "line": 1668, - "column": 29 + "line": 1696, + "column": 9 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -253639,23 +258409,24 @@ "binop": null, "updateContext": null }, - "start": 59868, - "end": 59869, + "value": "if", + "start": 60818, + "end": 60820, "loc": { "start": { - "line": 1668, - "column": 29 + "line": 1697, + "column": 8 }, "end": { - "line": 1668, - "column": 30 + "line": 1697, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -253664,25 +258435,25 @@ "postfix": false, "binop": null }, - "value": "camera", - "start": 59869, - "end": 59875, + "start": 60821, + "end": 60822, "loc": { "start": { - "line": 1668, - "column": 30 + "line": 1697, + "column": 11 }, "end": { - "line": 1668, - "column": 36 + "line": 1697, + "column": 12 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -253691,74 +258462,75 @@ "binop": null, "updateContext": null }, - "start": 59875, - "end": 59876, + "value": "this", + "start": 60822, + "end": 60826, "loc": { "start": { - "line": 1668, - "column": 36 + "line": 1697, + "column": 12 }, "end": { - "line": 1668, - "column": 37 + "line": 1697, + "column": 16 } } }, { "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": "viewMatrix", - "start": 59876, - "end": 59886, + "start": 60826, + "end": 60827, "loc": { "start": { - "line": 1668, - "column": 37 + "line": 1697, + "column": 16 }, "end": { - "line": 1668, - "column": 47 + "line": 1697, + "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": 59886, - "end": 59887, + "value": "_viewMatrixDirty", + "start": 60827, + "end": 60843, "loc": { "start": { - "line": 1668, - "column": 47 + "line": 1697, + "column": 17 }, "end": { - "line": 1668, - "column": 48 + "line": 1697, + "column": 33 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -253768,51 +258540,48 @@ "postfix": false, "binop": null }, - "start": 59896, - "end": 59897, + "start": 60843, + "end": 60844, "loc": { "start": { - "line": 1669, - "column": 8 + "line": 1697, + "column": 33 }, "end": { - "line": 1669, - "column": 9 + "line": 1697, + "column": 34 } } }, { "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": 59906, - "end": 59908, + "start": 60845, + "end": 60846, "loc": { "start": { - "line": 1670, - "column": 8 + "line": 1697, + "column": 35 }, "end": { - "line": 1670, - "column": 10 + "line": 1697, + "column": 36 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -253821,25 +258590,25 @@ "postfix": false, "binop": null }, - "start": 59909, - "end": 59910, + "value": "math", + "start": 60859, + "end": 60863, "loc": { "start": { - "line": 1670, - "column": 11 + "line": 1698, + "column": 12 }, "end": { - "line": 1670, - "column": 12 + "line": 1698, + "column": 16 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -253848,50 +258617,49 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 59910, - "end": 59914, + "start": 60863, + "end": 60864, "loc": { "start": { - "line": 1670, - "column": 12 + "line": 1698, + "column": 16 }, "end": { - "line": 1670, - "column": 16 + "line": 1698, + "column": 17 } } }, { "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": 59914, - "end": 59915, + "value": "mulMat4", + "start": 60864, + "end": 60871, "loc": { "start": { - "line": 1670, - "column": 16 + "line": 1698, + "column": 17 }, "end": { - "line": 1670, - "column": 17 + "line": 1698, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -253900,74 +258668,76 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 59915, - "end": 59927, + "start": 60871, + "end": 60872, "loc": { "start": { - "line": 1670, - "column": 17 + "line": 1698, + "column": 24 }, "end": { - "line": 1670, - "column": 29 + "line": 1698, + "column": 25 } } }, { "type": { - "label": ")", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 59927, - "end": 59928, + "value": "this", + "start": 60872, + "end": 60876, "loc": { "start": { - "line": 1670, - "column": 29 + "line": 1698, + "column": 25 }, "end": { - "line": 1670, - "column": 30 + "line": 1698, + "column": 29 } } }, { "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": 59929, - "end": 59930, + "start": 60876, + "end": 60877, "loc": { "start": { - "line": 1670, - "column": 31 + "line": 1698, + "column": 29 }, "end": { - "line": 1670, - "column": 32 + "line": 1698, + "column": 30 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -253975,20 +258745,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 59943, - "end": 59947, + "value": "scene", + "start": 60877, + "end": 60882, "loc": { "start": { - "line": 1671, - "column": 12 + "line": 1698, + "column": 30 }, "end": { - "line": 1671, - "column": 16 + "line": 1698, + "column": 35 } } }, @@ -254005,16 +258774,16 @@ "binop": null, "updateContext": null }, - "start": 59947, - "end": 59948, + "start": 60882, + "end": 60883, "loc": { "start": { - "line": 1671, - "column": 16 + "line": 1698, + "column": 35 }, "end": { - "line": 1671, - "column": 17 + "line": 1698, + "column": 36 } } }, @@ -254030,50 +258799,51 @@ "postfix": false, "binop": null }, - "value": "_rebuildMatrices", - "start": 59948, - "end": 59964, + "value": "camera", + "start": 60883, + "end": 60889, "loc": { "start": { - "line": 1671, - "column": 17 + "line": 1698, + "column": 36 }, "end": { - "line": 1671, - "column": 33 + "line": 1698, + "column": 42 } } }, { "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": 59964, - "end": 59965, + "start": 60889, + "end": 60890, "loc": { "start": { - "line": 1671, - "column": 33 + "line": 1698, + "column": 42 }, "end": { - "line": 1671, - "column": 34 + "line": 1698, + "column": 43 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -254081,22 +258851,23 @@ "postfix": false, "binop": null }, - "start": 59965, - "end": 59966, + "value": "viewMatrix", + "start": 60890, + "end": 60900, "loc": { "start": { - "line": 1671, - "column": 34 + "line": 1698, + "column": 43 }, "end": { - "line": 1671, - "column": 35 + "line": 1698, + "column": 53 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -254107,16 +258878,16 @@ "binop": null, "updateContext": null }, - "start": 59966, - "end": 59967, + "start": 60900, + "end": 60901, "loc": { "start": { - "line": 1671, - "column": 35 + "line": 1698, + "column": 53 }, "end": { - "line": 1671, - "column": 36 + "line": 1698, + "column": 54 } } }, @@ -254135,16 +258906,16 @@ "updateContext": null }, "value": "this", - "start": 59980, - "end": 59984, + "start": 60902, + "end": 60906, "loc": { "start": { - "line": 1672, - "column": 12 + "line": 1698, + "column": 55 }, "end": { - "line": 1672, - "column": 16 + "line": 1698, + "column": 59 } } }, @@ -254161,16 +258932,16 @@ "binop": null, "updateContext": null }, - "start": 59984, - "end": 59985, + "start": 60906, + "end": 60907, "loc": { "start": { - "line": 1672, - "column": 16 + "line": 1698, + "column": 59 }, "end": { - "line": 1672, - "column": 17 + "line": 1698, + "column": 60 } } }, @@ -254186,51 +258957,50 @@ "postfix": false, "binop": null }, - "value": "_viewMatrixDirty", - "start": 59985, - "end": 60001, + "value": "_matrix", + "start": 60907, + "end": 60914, "loc": { "start": { - "line": 1672, - "column": 17 + "line": 1698, + "column": 60 }, "end": { - "line": 1672, - "column": 33 + "line": 1698, + "column": 67 } } }, { "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": 60002, - "end": 60003, + "start": 60914, + "end": 60915, "loc": { "start": { - "line": 1672, - "column": 34 + "line": 1698, + "column": 67 }, "end": { - "line": 1672, - "column": 35 + "line": 1698, + "column": 68 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -254241,24 +259011,24 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 60004, - "end": 60008, + "value": "this", + "start": 60916, + "end": 60920, "loc": { "start": { - "line": 1672, - "column": 36 + "line": 1698, + "column": 69 }, "end": { - "line": 1672, - "column": 40 + "line": 1698, + "column": 73 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -254268,24 +259038,24 @@ "binop": null, "updateContext": null }, - "start": 60008, - "end": 60009, + "start": 60920, + "end": 60921, "loc": { "start": { - "line": 1672, - "column": 40 + "line": 1698, + "column": 73 }, "end": { - "line": 1672, - "column": 41 + "line": 1698, + "column": 74 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -254293,23 +259063,23 @@ "postfix": false, "binop": null }, - "start": 60018, - "end": 60019, + "value": "_viewMatrix", + "start": 60921, + "end": 60932, "loc": { "start": { - "line": 1673, - "column": 8 + "line": 1698, + "column": 74 }, "end": { - "line": 1673, - "column": 9 + "line": 1698, + "column": 85 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -254317,52 +259087,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 60028, - "end": 60030, + "start": 60932, + "end": 60933, "loc": { "start": { - "line": 1674, - "column": 8 + "line": 1698, + "column": 85 }, "end": { - "line": 1674, - "column": 10 + "line": 1698, + "column": 86 } } }, { "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": 60031, - "end": 60032, + "start": 60933, + "end": 60934, "loc": { "start": { - "line": 1674, - "column": 11 + "line": 1698, + "column": 86 }, "end": { - "line": 1674, - "column": 12 + "line": 1698, + "column": 87 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -254370,19 +259138,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 60032, - "end": 60036, + "value": "math", + "start": 60947, + "end": 60951, "loc": { "start": { - "line": 1674, + "line": 1699, "column": 12 }, "end": { - "line": 1674, + "line": 1699, "column": 16 } } @@ -254400,15 +259167,15 @@ "binop": null, "updateContext": null }, - "start": 60036, - "end": 60037, + "start": 60951, + "end": 60952, "loc": { "start": { - "line": 1674, + "line": 1699, "column": 16 }, "end": { - "line": 1674, + "line": 1699, "column": 17 } } @@ -254425,48 +259192,23 @@ "postfix": false, "binop": null }, - "value": "_viewMatrixDirty", - "start": 60037, - "end": 60053, + "value": "inverseMat4", + "start": 60952, + "end": 60963, "loc": { "start": { - "line": 1674, + "line": 1699, "column": 17 }, "end": { - "line": 1674, - "column": 33 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 60053, - "end": 60054, - "loc": { - "start": { - "line": 1674, - "column": 33 - }, - "end": { - "line": 1674, - "column": 34 + "line": 1699, + "column": 28 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -254476,22 +259218,23 @@ "postfix": false, "binop": null }, - "start": 60055, - "end": 60056, + "start": 60963, + "end": 60964, "loc": { "start": { - "line": 1674, - "column": 35 + "line": 1699, + "column": 28 }, "end": { - "line": 1674, - "column": 36 + "line": 1699, + "column": 29 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -254499,19 +259242,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 60069, - "end": 60073, + "value": "this", + "start": 60964, + "end": 60968, "loc": { "start": { - "line": 1675, - "column": 12 + "line": 1699, + "column": 29 }, "end": { - "line": 1675, - "column": 16 + "line": 1699, + "column": 33 } } }, @@ -254528,16 +259272,16 @@ "binop": null, "updateContext": null }, - "start": 60073, - "end": 60074, + "start": 60968, + "end": 60969, "loc": { "start": { - "line": 1675, - "column": 16 + "line": 1699, + "column": 33 }, "end": { - "line": 1675, - "column": 17 + "line": 1699, + "column": 34 } } }, @@ -254553,42 +259297,43 @@ "postfix": false, "binop": null }, - "value": "mulMat4", - "start": 60074, - "end": 60081, + "value": "_viewMatrix", + "start": 60969, + "end": 60980, "loc": { "start": { - "line": 1675, - "column": 17 + "line": 1699, + "column": 34 }, "end": { - "line": 1675, - "column": 24 + "line": 1699, + "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": 60081, - "end": 60082, + "start": 60980, + "end": 60981, "loc": { "start": { - "line": 1675, - "column": 24 + "line": 1699, + "column": 45 }, "end": { - "line": 1675, - "column": 25 + "line": 1699, + "column": 46 } } }, @@ -254607,16 +259352,16 @@ "updateContext": null }, "value": "this", - "start": 60082, - "end": 60086, + "start": 60982, + "end": 60986, "loc": { "start": { - "line": 1675, - "column": 25 + "line": 1699, + "column": 47 }, "end": { - "line": 1675, - "column": 29 + "line": 1699, + "column": 51 } } }, @@ -254633,16 +259378,16 @@ "binop": null, "updateContext": null }, - "start": 60086, - "end": 60087, + "start": 60986, + "end": 60987, "loc": { "start": { - "line": 1675, - "column": 29 + "line": 1699, + "column": 51 }, "end": { - "line": 1675, - "column": 30 + "line": 1699, + "column": 52 } } }, @@ -254658,23 +259403,23 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 60087, - "end": 60092, + "value": "_viewNormalMatrix", + "start": 60987, + "end": 61004, "loc": { "start": { - "line": 1675, - "column": 30 + "line": 1699, + "column": 52 }, "end": { - "line": 1675, - "column": 35 + "line": 1699, + "column": 69 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -254682,19 +259427,44 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 61004, + "end": 61005, + "loc": { + "start": { + "line": 1699, + "column": 69 + }, + "end": { + "line": 1699, + "column": 70 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 60092, - "end": 60093, + "start": 61005, + "end": 61006, "loc": { "start": { - "line": 1675, - "column": 35 + "line": 1699, + "column": 70 }, "end": { - "line": 1675, - "column": 36 + "line": 1699, + "column": 71 } } }, @@ -254710,17 +259480,17 @@ "postfix": false, "binop": null }, - "value": "camera", - "start": 60093, - "end": 60099, + "value": "math", + "start": 61019, + "end": 61023, "loc": { "start": { - "line": 1675, - "column": 36 + "line": 1700, + "column": 12 }, "end": { - "line": 1675, - "column": 42 + "line": 1700, + "column": 16 } } }, @@ -254737,16 +259507,16 @@ "binop": null, "updateContext": null }, - "start": 60099, - "end": 60100, + "start": 61023, + "end": 61024, "loc": { "start": { - "line": 1675, - "column": 42 + "line": 1700, + "column": 16 }, "end": { - "line": 1675, - "column": 43 + "line": 1700, + "column": 17 } } }, @@ -254762,43 +259532,42 @@ "postfix": false, "binop": null }, - "value": "viewMatrix", - "start": 60100, - "end": 60110, + "value": "transposeMat4", + "start": 61024, + "end": 61037, "loc": { "start": { - "line": 1675, - "column": 43 + "line": 1700, + "column": 17 }, "end": { - "line": 1675, - "column": 53 + "line": 1700, + "column": 30 } } }, { "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": 60110, - "end": 60111, + "start": 61037, + "end": 61038, "loc": { "start": { - "line": 1675, - "column": 53 + "line": 1700, + "column": 30 }, "end": { - "line": 1675, - "column": 54 + "line": 1700, + "column": 31 } } }, @@ -254817,16 +259586,16 @@ "updateContext": null }, "value": "this", - "start": 60112, - "end": 60116, + "start": 61038, + "end": 61042, "loc": { "start": { - "line": 1675, - "column": 55 + "line": 1700, + "column": 31 }, "end": { - "line": 1675, - "column": 59 + "line": 1700, + "column": 35 } } }, @@ -254843,16 +259612,16 @@ "binop": null, "updateContext": null }, - "start": 60116, - "end": 60117, + "start": 61042, + "end": 61043, "loc": { "start": { - "line": 1675, - "column": 59 + "line": 1700, + "column": 35 }, "end": { - "line": 1675, - "column": 60 + "line": 1700, + "column": 36 } } }, @@ -254868,23 +259637,48 @@ "postfix": false, "binop": null }, - "value": "_matrix", - "start": 60117, - "end": 60124, + "value": "_viewNormalMatrix", + "start": 61043, + "end": 61060, "loc": { "start": { - "line": 1675, - "column": 60 + "line": 1700, + "column": 36 }, "end": { - "line": 1675, - "column": 67 + "line": 1700, + "column": 53 } } }, { "type": { - "label": ",", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 61060, + "end": 61061, + "loc": { + "start": { + "line": 1700, + "column": 53 + }, + "end": { + "line": 1700, + "column": 54 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -254895,16 +259689,16 @@ "binop": null, "updateContext": null }, - "start": 60124, - "end": 60125, + "start": 61061, + "end": 61062, "loc": { "start": { - "line": 1675, - "column": 67 + "line": 1700, + "column": 54 }, "end": { - "line": 1675, - "column": 68 + "line": 1700, + "column": 55 } } }, @@ -254923,16 +259717,16 @@ "updateContext": null }, "value": "this", - "start": 60126, - "end": 60130, + "start": 61075, + "end": 61079, "loc": { "start": { - "line": 1675, - "column": 69 + "line": 1701, + "column": 12 }, "end": { - "line": 1675, - "column": 73 + "line": 1701, + "column": 16 } } }, @@ -254949,16 +259743,16 @@ "binop": null, "updateContext": null }, - "start": 60130, - "end": 60131, + "start": 61079, + "end": 61080, "loc": { "start": { - "line": 1675, - "column": 73 + "line": 1701, + "column": 16 }, "end": { - "line": 1675, - "column": 74 + "line": 1701, + "column": 17 } } }, @@ -254974,42 +259768,72 @@ "postfix": false, "binop": null }, - "value": "_viewMatrix", - "start": 60131, - "end": 60142, + "value": "_viewMatrixDirty", + "start": 61080, + "end": 61096, "loc": { "start": { - "line": 1675, - "column": 74 + "line": 1701, + "column": 17 }, "end": { - "line": 1675, - "column": 85 + "line": 1701, + "column": 33 } } }, { "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": 61097, + "end": 61098, + "loc": { + "start": { + "line": 1701, + "column": 34 + }, + "end": { + "line": 1701, + "column": 35 + } + } + }, + { + "type": { + "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": 60142, - "end": 60143, + "value": "false", + "start": 61099, + "end": 61104, "loc": { "start": { - "line": 1675, - "column": 85 + "line": 1701, + "column": 36 }, "end": { - "line": 1675, - "column": 86 + "line": 1701, + "column": 41 } } }, @@ -255026,16 +259850,41 @@ "binop": null, "updateContext": null }, - "start": 60143, - "end": 60144, + "start": 61104, + "end": 61105, "loc": { "start": { - "line": 1675, - "column": 86 + "line": 1701, + "column": 41 }, "end": { - "line": 1675, - "column": 87 + "line": 1701, + "column": 42 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 61114, + "end": 61115, + "loc": { + "start": { + "line": 1702, + "column": 8 + }, + "end": { + "line": 1702, + "column": 9 } } }, @@ -255052,16 +259901,16 @@ "binop": null }, "value": "math", - "start": 60157, - "end": 60161, + "start": 61124, + "end": 61128, "loc": { "start": { - "line": 1676, - "column": 12 + "line": 1703, + "column": 8 }, "end": { - "line": 1676, - "column": 16 + "line": 1703, + "column": 12 } } }, @@ -255078,16 +259927,16 @@ "binop": null, "updateContext": null }, - "start": 60161, - "end": 60162, + "start": 61128, + "end": 61129, "loc": { "start": { - "line": 1676, - "column": 16 + "line": 1703, + "column": 12 }, "end": { - "line": 1676, - "column": 17 + "line": 1703, + "column": 13 } } }, @@ -255104,16 +259953,16 @@ "binop": null }, "value": "inverseMat4", - "start": 60162, - "end": 60173, + "start": 61129, + "end": 61140, "loc": { "start": { - "line": 1676, - "column": 17 + "line": 1703, + "column": 13 }, "end": { - "line": 1676, - "column": 28 + "line": 1703, + "column": 24 } } }, @@ -255129,16 +259978,16 @@ "postfix": false, "binop": null }, - "start": 60173, - "end": 60174, + "start": 61140, + "end": 61141, "loc": { "start": { - "line": 1676, - "column": 28 + "line": 1703, + "column": 24 }, "end": { - "line": 1676, - "column": 29 + "line": 1703, + "column": 25 } } }, @@ -255157,16 +260006,16 @@ "updateContext": null }, "value": "this", - "start": 60174, - "end": 60178, + "start": 61141, + "end": 61145, "loc": { "start": { - "line": 1676, - "column": 29 + "line": 1703, + "column": 25 }, "end": { - "line": 1676, - "column": 33 + "line": 1703, + "column": 29 } } }, @@ -255183,16 +260032,16 @@ "binop": null, "updateContext": null }, - "start": 60178, - "end": 60179, + "start": 61145, + "end": 61146, "loc": { "start": { - "line": 1676, - "column": 33 + "line": 1703, + "column": 29 }, "end": { - "line": 1676, - "column": 34 + "line": 1703, + "column": 30 } } }, @@ -255209,16 +260058,16 @@ "binop": null }, "value": "_viewMatrix", - "start": 60179, - "end": 60190, + "start": 61146, + "end": 61157, "loc": { "start": { - "line": 1676, - "column": 34 + "line": 1703, + "column": 30 }, "end": { - "line": 1676, - "column": 45 + "line": 1703, + "column": 41 } } }, @@ -255235,16 +260084,16 @@ "binop": null, "updateContext": null }, - "start": 60190, - "end": 60191, + "start": 61157, + "end": 61158, "loc": { "start": { - "line": 1676, - "column": 45 + "line": 1703, + "column": 41 }, "end": { - "line": 1676, - "column": 46 + "line": 1703, + "column": 42 } } }, @@ -255263,16 +260112,16 @@ "updateContext": null }, "value": "this", - "start": 60192, - "end": 60196, + "start": 61159, + "end": 61163, "loc": { "start": { - "line": 1676, - "column": 47 + "line": 1703, + "column": 43 }, "end": { - "line": 1676, - "column": 51 + "line": 1703, + "column": 47 } } }, @@ -255289,16 +260138,16 @@ "binop": null, "updateContext": null }, - "start": 60196, - "end": 60197, + "start": 61163, + "end": 61164, "loc": { "start": { - "line": 1676, - "column": 51 + "line": 1703, + "column": 47 }, "end": { - "line": 1676, - "column": 52 + "line": 1703, + "column": 48 } } }, @@ -255315,16 +260164,16 @@ "binop": null }, "value": "_viewNormalMatrix", - "start": 60197, - "end": 60214, + "start": 61164, + "end": 61181, "loc": { "start": { - "line": 1676, - "column": 52 + "line": 1703, + "column": 48 }, "end": { - "line": 1676, - "column": 69 + "line": 1703, + "column": 65 } } }, @@ -255340,16 +260189,16 @@ "postfix": false, "binop": null }, - "start": 60214, - "end": 60215, + "start": 61181, + "end": 61182, "loc": { "start": { - "line": 1676, - "column": 69 + "line": 1703, + "column": 65 }, "end": { - "line": 1676, - "column": 70 + "line": 1703, + "column": 66 } } }, @@ -255366,16 +260215,16 @@ "binop": null, "updateContext": null }, - "start": 60215, - "end": 60216, + "start": 61182, + "end": 61183, "loc": { "start": { - "line": 1676, - "column": 70 + "line": 1703, + "column": 66 }, "end": { - "line": 1676, - "column": 71 + "line": 1703, + "column": 67 } } }, @@ -255392,16 +260241,16 @@ "binop": null }, "value": "math", - "start": 60229, - "end": 60233, + "start": 61192, + "end": 61196, "loc": { "start": { - "line": 1677, - "column": 12 + "line": 1704, + "column": 8 }, "end": { - "line": 1677, - "column": 16 + "line": 1704, + "column": 12 } } }, @@ -255418,16 +260267,16 @@ "binop": null, "updateContext": null }, - "start": 60233, - "end": 60234, + "start": 61196, + "end": 61197, "loc": { "start": { - "line": 1677, - "column": 16 + "line": 1704, + "column": 12 }, "end": { - "line": 1677, - "column": 17 + "line": 1704, + "column": 13 } } }, @@ -255444,16 +260293,16 @@ "binop": null }, "value": "transposeMat4", - "start": 60234, - "end": 60247, + "start": 61197, + "end": 61210, "loc": { "start": { - "line": 1677, - "column": 17 + "line": 1704, + "column": 13 }, "end": { - "line": 1677, - "column": 30 + "line": 1704, + "column": 26 } } }, @@ -255469,16 +260318,16 @@ "postfix": false, "binop": null }, - "start": 60247, - "end": 60248, + "start": 61210, + "end": 61211, "loc": { "start": { - "line": 1677, - "column": 30 + "line": 1704, + "column": 26 }, "end": { - "line": 1677, - "column": 31 + "line": 1704, + "column": 27 } } }, @@ -255497,16 +260346,16 @@ "updateContext": null }, "value": "this", - "start": 60248, - "end": 60252, + "start": 61211, + "end": 61215, "loc": { "start": { - "line": 1677, - "column": 31 + "line": 1704, + "column": 27 }, "end": { - "line": 1677, - "column": 35 + "line": 1704, + "column": 31 } } }, @@ -255523,16 +260372,16 @@ "binop": null, "updateContext": null }, - "start": 60252, - "end": 60253, + "start": 61215, + "end": 61216, "loc": { "start": { - "line": 1677, - "column": 35 + "line": 1704, + "column": 31 }, "end": { - "line": 1677, - "column": 36 + "line": 1704, + "column": 32 } } }, @@ -255549,16 +260398,16 @@ "binop": null }, "value": "_viewNormalMatrix", - "start": 60253, - "end": 60270, + "start": 61216, + "end": 61233, "loc": { "start": { - "line": 1677, - "column": 36 + "line": 1704, + "column": 32 }, "end": { - "line": 1677, - "column": 53 + "line": 1704, + "column": 49 } } }, @@ -255574,16 +260423,16 @@ "postfix": false, "binop": null }, - "start": 60270, - "end": 60271, + "start": 61233, + "end": 61234, "loc": { "start": { - "line": 1677, - "column": 53 + "line": 1704, + "column": 49 }, "end": { - "line": 1677, - "column": 54 + "line": 1704, + "column": 50 } } }, @@ -255600,16 +260449,44 @@ "binop": null, "updateContext": null }, - "start": 60271, - "end": 60272, + "start": 61234, + "end": 61235, "loc": { "start": { - "line": 1677, - "column": 54 + "line": 1704, + "column": 50 }, "end": { - "line": 1677, - "column": 55 + "line": 1704, + "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 + }, + "value": "return", + "start": 61244, + "end": 61250, + "loc": { + "start": { + "line": 1705, + "column": 8 + }, + "end": { + "line": 1705, + "column": 14 } } }, @@ -255628,16 +260505,16 @@ "updateContext": null }, "value": "this", - "start": 60285, - "end": 60289, + "start": 61251, + "end": 61255, "loc": { "start": { - "line": 1678, - "column": 12 + "line": 1705, + "column": 15 }, "end": { - "line": 1678, - "column": 16 + "line": 1705, + "column": 19 } } }, @@ -255654,16 +260531,16 @@ "binop": null, "updateContext": null }, - "start": 60289, - "end": 60290, + "start": 61255, + "end": 61256, "loc": { "start": { - "line": 1678, - "column": 16 + "line": 1705, + "column": 19 }, "end": { - "line": 1678, - "column": 17 + "line": 1705, + "column": 20 } } }, @@ -255679,51 +260556,90 @@ "postfix": false, "binop": null }, - "value": "_viewMatrixDirty", - "start": 60290, - "end": 60306, + "value": "_viewNormalMatrix", + "start": 61256, + "end": 61273, "loc": { "start": { - "line": 1678, - "column": 17 + "line": 1705, + "column": 20 }, "end": { - "line": 1678, - "column": 33 + "line": 1705, + "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": 60307, - "end": 60308, + "start": 61273, + "end": 61274, "loc": { "start": { - "line": 1678, - "column": 34 + "line": 1705, + "column": 37 }, "end": { - "line": 1678, - "column": 35 + "line": 1705, + "column": 38 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 61279, + "end": 61280, + "loc": { + "start": { + "line": 1706, + "column": 4 + }, + "end": { + "line": 1706, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n ", + "start": 61286, + "end": 61426, + "loc": { + "start": { + "line": 1708, + "column": 4 + }, + "end": { + "line": 1714, + "column": 7 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -255731,54 +260647,103 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 60309, - "end": 60314, + "value": "get", + "start": 61431, + "end": 61434, "loc": { "start": { - "line": 1678, - "column": 36 + "line": 1715, + "column": 4 }, "end": { - "line": 1678, - "column": 41 + "line": 1715, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "backfaces", + "start": 61435, + "end": 61444, + "loc": { + "start": { + "line": 1715, + "column": 8 + }, + "end": { + "line": 1715, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 61444, + "end": 61445, + "loc": { + "start": { + "line": 1715, + "column": 17 + }, + "end": { + "line": 1715, + "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": 60314, - "end": 60315, + "start": 61445, + "end": 61446, "loc": { "start": { - "line": 1678, - "column": 41 + "line": 1715, + "column": 18 }, "end": { - "line": 1678, - "column": 42 + "line": 1715, + "column": 19 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -255786,16 +260751,16 @@ "postfix": false, "binop": null }, - "start": 60324, - "end": 60325, + "start": 61447, + "end": 61448, "loc": { "start": { - "line": 1679, - "column": 8 + "line": 1715, + "column": 20 }, "end": { - "line": 1679, - "column": 9 + "line": 1715, + "column": 21 } } }, @@ -255814,15 +260779,15 @@ "updateContext": null }, "value": "return", - "start": 60334, - "end": 60340, + "start": 61457, + "end": 61463, "loc": { "start": { - "line": 1680, + "line": 1716, "column": 8 }, "end": { - "line": 1680, + "line": 1716, "column": 14 } } @@ -255842,15 +260807,15 @@ "updateContext": null }, "value": "this", - "start": 60341, - "end": 60345, + "start": 61464, + "end": 61468, "loc": { "start": { - "line": 1680, + "line": 1716, "column": 15 }, "end": { - "line": 1680, + "line": 1716, "column": 19 } } @@ -255868,15 +260833,15 @@ "binop": null, "updateContext": null }, - "start": 60345, - "end": 60346, + "start": 61468, + "end": 61469, "loc": { "start": { - "line": 1680, + "line": 1716, "column": 19 }, "end": { - "line": 1680, + "line": 1716, "column": 20 } } @@ -255893,17 +260858,17 @@ "postfix": false, "binop": null }, - "value": "_viewMatrix", - "start": 60346, - "end": 60357, + "value": "_backfaces", + "start": 61469, + "end": 61479, "loc": { "start": { - "line": 1680, + "line": 1716, "column": 20 }, "end": { - "line": 1680, - "column": 31 + "line": 1716, + "column": 30 } } }, @@ -255920,16 +260885,16 @@ "binop": null, "updateContext": null }, - "start": 60357, - "end": 60358, + "start": 61479, + "end": 61480, "loc": { "start": { - "line": 1680, - "column": 31 + "line": 1716, + "column": 30 }, "end": { - "line": 1680, - "column": 32 + "line": 1716, + "column": 31 } } }, @@ -255945,31 +260910,31 @@ "postfix": false, "binop": null }, - "start": 60363, - "end": 60364, + "start": 61485, + "end": 61486, "loc": { "start": { - "line": 1681, + "line": 1717, "column": 4 }, "end": { - "line": 1681, + "line": 1717, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel.\n *\n * @private\n ", - "start": 60370, - "end": 60518, + "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this SceneModel.\n *\n * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\n * the Viewer will:\n *\n * * hide backfaces on watertight meshes,\n * * show backfaces on open meshes, and\n * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n *\n * @type {Boolean}\n ", + "start": 61492, + "end": 62074, "loc": { "start": { - "line": 1683, + "line": 1719, "column": 4 }, "end": { - "line": 1687, + "line": 1734, "column": 7 } } @@ -255986,16 +260951,16 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 60523, - "end": 60526, + "value": "set", + "start": 62079, + "end": 62082, "loc": { "start": { - "line": 1688, + "line": 1735, "column": 4 }, "end": { - "line": 1688, + "line": 1735, "column": 7 } } @@ -256012,17 +260977,17 @@ "postfix": false, "binop": null }, - "value": "viewNormalMatrix", - "start": 60527, - "end": 60543, + "value": "backfaces", + "start": 62083, + "end": 62092, "loc": { "start": { - "line": 1688, + "line": 1735, "column": 8 }, "end": { - "line": 1688, - "column": 24 + "line": 1735, + "column": 17 } } }, @@ -256038,24 +261003,24 @@ "postfix": false, "binop": null }, - "start": 60543, - "end": 60544, + "start": 62092, + "end": 62093, "loc": { "start": { - "line": 1688, - "column": 24 + "line": 1735, + "column": 17 }, "end": { - "line": 1688, - "column": 25 + "line": 1735, + "column": 18 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -256063,24 +261028,25 @@ "postfix": false, "binop": null }, - "start": 60544, - "end": 60545, + "value": "backfaces", + "start": 62093, + "end": 62102, "loc": { "start": { - "line": 1688, - "column": 25 + "line": 1735, + "column": 18 }, "end": { - "line": 1688, - "column": 26 + "line": 1735, + "column": 27 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -256088,51 +261054,48 @@ "postfix": false, "binop": null }, - "start": 60546, - "end": 60547, + "start": 62102, + "end": 62103, "loc": { "start": { - "line": 1688, + "line": 1735, "column": 27 }, "end": { - "line": 1688, + "line": 1735, "column": 28 } } }, { "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": 60556, - "end": 60558, + "start": 62104, + "end": 62105, "loc": { "start": { - "line": 1689, - "column": 8 + "line": 1735, + "column": 29 }, "end": { - "line": 1689, - "column": 10 + "line": 1735, + "column": 30 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -256141,97 +261104,98 @@ "postfix": false, "binop": null }, - "start": 60559, - "end": 60560, + "value": "backfaces", + "start": 62114, + "end": 62123, "loc": { "start": { - "line": 1689, - "column": 11 + "line": 1736, + "column": 8 }, "end": { - "line": 1689, - "column": 12 + "line": 1736, + "column": 17 } } }, { "type": { - "label": "prefix", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": true, + "isAssign": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 60560, - "end": 60561, + "value": "=", + "start": 62124, + "end": 62125, "loc": { "start": { - "line": 1689, - "column": 12 + "line": 1736, + "column": 18 }, "end": { - "line": 1689, - "column": 13 + "line": 1736, + "column": 19 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "this", - "start": 60561, - "end": 60565, + "value": "!", + "start": 62126, + "end": 62127, "loc": { "start": { - "line": 1689, - "column": 13 + "line": 1736, + "column": 20 }, "end": { - "line": 1689, - "column": 17 + "line": 1736, + "column": 21 } } }, { "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": 60565, - "end": 60566, + "value": "!", + "start": 62127, + "end": 62128, "loc": { "start": { - "line": 1689, - "column": 17 + "line": 1736, + "column": 21 }, "end": { - "line": 1689, - "column": 18 + "line": 1736, + "column": 22 } } }, @@ -256247,75 +261211,78 @@ "postfix": false, "binop": null }, - "value": "_viewNormalMatrix", - "start": 60566, - "end": 60583, + "value": "backfaces", + "start": 62128, + "end": 62137, "loc": { "start": { - "line": 1689, - "column": 18 + "line": 1736, + "column": 22 }, "end": { - "line": 1689, - "column": 35 + "line": 1736, + "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": 60583, - "end": 60584, + "start": 62137, + "end": 62138, "loc": { "start": { - "line": 1689, - "column": 35 + "line": 1736, + "column": 31 }, "end": { - "line": 1689, - "column": 36 + "line": 1736, + "column": 32 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 60585, - "end": 60586, + "value": "this", + "start": 62147, + "end": 62151, "loc": { "start": { - "line": 1689, - "column": 37 + "line": 1737, + "column": 8 }, "end": { - "line": 1689, - "column": 38 + "line": 1737, + "column": 12 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -256325,24 +261292,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 60599, - "end": 60605, + "start": 62151, + "end": 62152, "loc": { "start": { - "line": 1690, + "line": 1737, "column": 12 }, "end": { - "line": 1690, - "column": 18 + "line": 1737, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -256350,46 +261315,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 60606, - "end": 60610, + "value": "_backfaces", + "start": 62152, + "end": 62162, "loc": { "start": { - "line": 1690, - "column": 19 + "line": 1737, + "column": 13 }, "end": { - "line": 1690, + "line": 1737, "column": 23 } } }, { "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": 60610, - "end": 60611, + "value": "=", + "start": 62163, + "end": 62164, "loc": { "start": { - "line": 1690, - "column": 23 + "line": 1737, + "column": 24 }, "end": { - "line": 1690, - "column": 24 + "line": 1737, + "column": 25 } } }, @@ -256405,24 +261370,24 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 60611, - "end": 60616, + "value": "backfaces", + "start": 62165, + "end": 62174, "loc": { "start": { - "line": 1690, - "column": 24 + "line": 1737, + "column": 26 }, "end": { - "line": 1690, - "column": 29 + "line": 1737, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -256432,22 +261397,23 @@ "binop": null, "updateContext": null }, - "start": 60616, - "end": 60617, + "start": 62174, + "end": 62175, "loc": { "start": { - "line": 1690, - "column": 29 + "line": 1737, + "column": 35 }, "end": { - "line": 1690, - "column": 30 + "line": 1737, + "column": 36 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -256455,19 +261421,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "camera", - "start": 60617, - "end": 60623, + "value": "this", + "start": 62184, + "end": 62188, "loc": { "start": { - "line": 1690, - "column": 30 + "line": 1738, + "column": 8 }, "end": { - "line": 1690, - "column": 36 + "line": 1738, + "column": 12 } } }, @@ -256484,16 +261451,16 @@ "binop": null, "updateContext": null }, - "start": 60623, - "end": 60624, + "start": 62188, + "end": 62189, "loc": { "start": { - "line": 1690, - "column": 36 + "line": 1738, + "column": 12 }, "end": { - "line": 1690, - "column": 37 + "line": 1738, + "column": 13 } } }, @@ -256509,49 +261476,48 @@ "postfix": false, "binop": null }, - "value": "viewNormalMatrix", - "start": 60624, - "end": 60640, + "value": "glRedraw", + "start": 62189, + "end": 62197, "loc": { "start": { - "line": 1690, - "column": 37 + "line": 1738, + "column": 13 }, "end": { - "line": 1690, - "column": 53 + "line": 1738, + "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": 60640, - "end": 60641, + "start": 62197, + "end": 62198, "loc": { "start": { - "line": 1690, - "column": 53 + "line": 1738, + "column": 21 }, "end": { - "line": 1690, - "column": 54 + "line": 1738, + "column": 22 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -256561,24 +261527,23 @@ "postfix": false, "binop": null }, - "start": 60650, - "end": 60651, + "start": 62198, + "end": 62199, "loc": { "start": { - "line": 1691, - "column": 8 + "line": 1738, + "column": 22 }, "end": { - "line": 1691, - "column": 9 + "line": 1738, + "column": 23 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -256588,25 +261553,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 60660, - "end": 60662, + "start": 62199, + "end": 62200, "loc": { "start": { - "line": 1692, - "column": 8 + "line": 1738, + "column": 23 }, "end": { - "line": 1692, - "column": 10 + "line": 1738, + "column": 24 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -256614,70 +261578,58 @@ "postfix": false, "binop": null }, - "start": 60663, - "end": 60664, + "start": 62205, + "end": 62206, "loc": { "start": { - "line": 1692, - "column": 11 + "line": 1739, + "column": 4 }, "end": { - "line": 1692, - "column": 12 + "line": 1739, + "column": 5 } } }, { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 60664, - "end": 60668, + "type": "CommentBlock", + "value": "*\n * Gets the list of {@link SceneModelEntity}s within this SceneModel.\n *\n * @returns {SceneModelEntity[]}\n ", + "start": 62212, + "end": 62341, "loc": { "start": { - "line": 1692, - "column": 12 + "line": 1741, + "column": 4 }, "end": { - "line": 1692, - "column": 16 + "line": 1745, + "column": 7 } } }, { "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": 60668, - "end": 60669, + "value": "get", + "start": 62346, + "end": 62349, "loc": { "start": { - "line": 1692, - "column": 16 + "line": 1746, + "column": 4 }, "end": { - "line": 1692, - "column": 17 + "line": 1746, + "column": 7 } } }, @@ -256693,25 +261645,25 @@ "postfix": false, "binop": null }, - "value": "_matrixDirty", - "start": 60669, - "end": 60681, + "value": "entityList", + "start": 62350, + "end": 62360, "loc": { "start": { - "line": 1692, - "column": 17 + "line": 1746, + "column": 8 }, "end": { - "line": 1692, - "column": 29 + "line": 1746, + "column": 18 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -256719,24 +261671,24 @@ "postfix": false, "binop": null }, - "start": 60681, - "end": 60682, + "start": 62360, + "end": 62361, "loc": { "start": { - "line": 1692, - "column": 29 + "line": 1746, + "column": 18 }, "end": { - "line": 1692, - "column": 30 + "line": 1746, + "column": 19 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -256744,51 +261696,49 @@ "postfix": false, "binop": null }, - "start": 60683, - "end": 60684, + "start": 62361, + "end": 62362, "loc": { "start": { - "line": 1692, - "column": 31 + "line": 1746, + "column": 19 }, "end": { - "line": 1692, - "column": 32 + "line": 1746, + "column": 20 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 60697, - "end": 60701, + "start": 62363, + "end": 62364, "loc": { "start": { - "line": 1693, - "column": 12 + "line": 1746, + "column": 21 }, "end": { - "line": 1693, - "column": 16 + "line": 1746, + "column": 22 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -256798,22 +261748,24 @@ "binop": null, "updateContext": null }, - "start": 60701, - "end": 60702, + "value": "return", + "start": 62373, + "end": 62379, "loc": { "start": { - "line": 1693, - "column": 16 + "line": 1747, + "column": 8 }, "end": { - "line": 1693, - "column": 17 + "line": 1747, + "column": 14 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -256821,52 +261773,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_rebuildMatrices", - "start": 60702, - "end": 60718, + "value": "this", + "start": 62380, + "end": 62384, "loc": { "start": { - "line": 1693, - "column": 17 + "line": 1747, + "column": 15 }, "end": { - "line": 1693, - "column": 33 + "line": 1747, + "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": 60718, - "end": 60719, + "start": 62384, + "end": 62385, "loc": { "start": { - "line": 1693, - "column": 33 + "line": 1747, + "column": 19 }, "end": { - "line": 1693, - "column": 34 + "line": 1747, + "column": 20 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -256874,16 +261828,17 @@ "postfix": false, "binop": null }, - "start": 60719, - "end": 60720, + "value": "_entityList", + "start": 62385, + "end": 62396, "loc": { "start": { - "line": 1693, - "column": 34 + "line": 1747, + "column": 20 }, "end": { - "line": 1693, - "column": 35 + "line": 1747, + "column": 31 } } }, @@ -256900,70 +261855,57 @@ "binop": null, "updateContext": null }, - "start": 60720, - "end": 60721, + "start": 62396, + "end": 62397, "loc": { "start": { - "line": 1693, - "column": 35 + "line": 1747, + "column": 31 }, "end": { - "line": 1693, - "column": 36 + "line": 1747, + "column": 32 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 60734, - "end": 60738, + "start": 62402, + "end": 62403, "loc": { "start": { - "line": 1694, - "column": 12 + "line": 1748, + "column": 4 }, "end": { - "line": 1694, - "column": 16 + "line": 1748, + "column": 5 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 60738, - "end": 60739, + "type": "CommentBlock", + "value": "*\n * Returns true to indicate that SceneModel is an {@link Entity}.\n * @type {Boolean}\n ", + "start": 62409, + "end": 62513, "loc": { "start": { - "line": 1694, - "column": 16 + "line": 1750, + "column": 4 }, "end": { - "line": 1694, - "column": 17 + "line": 1753, + "column": 7 } } }, @@ -256979,106 +261921,101 @@ "postfix": false, "binop": null }, - "value": "_viewMatrixDirty", - "start": 60739, - "end": 60755, + "value": "get", + "start": 62518, + "end": 62521, "loc": { "start": { - "line": 1694, - "column": 17 + "line": 1754, + "column": 4 }, "end": { - "line": 1694, - "column": 33 + "line": 1754, + "column": 7 } } }, { "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": 60756, - "end": 60757, + "value": "isEntity", + "start": 62522, + "end": 62530, "loc": { "start": { - "line": 1694, - "column": 34 + "line": 1754, + "column": 8 }, "end": { - "line": 1694, - "column": 35 + "line": 1754, + "column": 16 } } }, { "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": 60758, - "end": 60762, + "start": 62530, + "end": 62531, "loc": { "start": { - "line": 1694, - "column": 36 + "line": 1754, + "column": 16 }, "end": { - "line": 1694, - "column": 40 + "line": 1754, + "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": 60762, - "end": 60763, + "start": 62531, + "end": 62532, "loc": { "start": { - "line": 1694, - "column": 40 + "line": 1754, + "column": 17 }, "end": { - "line": 1694, - "column": 41 + "line": 1754, + "column": 18 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -257086,24 +262023,24 @@ "postfix": false, "binop": null }, - "start": 60772, - "end": 60773, + "start": 62533, + "end": 62534, "loc": { "start": { - "line": 1695, - "column": 8 + "line": 1754, + "column": 19 }, "end": { - "line": 1695, - "column": 9 + "line": 1754, + "column": 20 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -257113,51 +262050,53 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 60782, - "end": 60784, + "value": "return", + "start": 62543, + "end": 62549, "loc": { "start": { - "line": 1696, + "line": 1755, "column": 8 }, "end": { - "line": 1696, - "column": 10 + "line": 1755, + "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": 60785, - "end": 60786, + "value": "true", + "start": 62550, + "end": 62554, "loc": { "start": { - "line": 1696, - "column": 11 + "line": 1755, + "column": 15 }, "end": { - "line": 1696, - "column": 12 + "line": 1755, + "column": 19 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -257166,23 +262105,22 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 60786, - "end": 60790, + "start": 62554, + "end": 62555, "loc": { "start": { - "line": 1696, - "column": 12 + "line": 1755, + "column": 19 }, "end": { - "line": 1696, - "column": 16 + "line": 1755, + "column": 20 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -257190,53 +262128,42 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 60790, - "end": 60791, + "start": 62560, + "end": 62561, "loc": { "start": { - "line": 1696, - "column": 16 + "line": 1756, + "column": 4 }, "end": { - "line": 1696, - "column": 17 + "line": 1756, + "column": 5 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_viewMatrixDirty", - "start": 60791, - "end": 60807, + "type": "CommentBlock", + "value": "*\n * Returns ````true```` if this SceneModel represents a model.\n *\n * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in\n * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n ", + "start": 62567, + "end": 62873, "loc": { "start": { - "line": 1696, - "column": 17 + "line": 1758, + "column": 4 }, "end": { - "line": 1696, - "column": 33 + "line": 1765, + "column": 7 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -257244,23 +262171,24 @@ "postfix": false, "binop": null }, - "start": 60807, - "end": 60808, + "value": "get", + "start": 62878, + "end": 62881, "loc": { "start": { - "line": 1696, - "column": 33 + "line": 1766, + "column": 4 }, "end": { - "line": 1696, - "column": 34 + "line": 1766, + "column": 7 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -257269,23 +262197,24 @@ "postfix": false, "binop": null }, - "start": 60809, - "end": 60810, + "value": "isModel", + "start": 62882, + "end": 62889, "loc": { "start": { - "line": 1696, - "column": 35 + "line": 1766, + "column": 8 }, "end": { - "line": 1696, - "column": 36 + "line": 1766, + "column": 15 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -257294,23 +262223,22 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 60823, - "end": 60827, + "start": 62889, + "end": 62890, "loc": { "start": { - "line": 1697, - "column": 12 + "line": 1766, + "column": 15 }, "end": { - "line": 1697, + "line": 1766, "column": 16 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -257318,26 +262246,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 60827, - "end": 60828, + "start": 62890, + "end": 62891, "loc": { "start": { - "line": 1697, + "line": 1766, "column": 16 }, "end": { - "line": 1697, + "line": 1766, "column": 17 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -257346,42 +262273,44 @@ "postfix": false, "binop": null }, - "value": "mulMat4", - "start": 60828, - "end": 60835, + "start": 62892, + "end": 62893, "loc": { "start": { - "line": 1697, - "column": 17 + "line": 1766, + "column": 18 }, "end": { - "line": 1697, - "column": 24 + "line": 1766, + "column": 19 } } }, { "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": 60835, - "end": 60836, + "value": "return", + "start": 62902, + "end": 62908, "loc": { "start": { - "line": 1697, - "column": 24 + "line": 1767, + "column": 8 }, "end": { - "line": 1697, - "column": 25 + "line": 1767, + "column": 14 } } }, @@ -257400,16 +262329,16 @@ "updateContext": null }, "value": "this", - "start": 60836, - "end": 60840, + "start": 62909, + "end": 62913, "loc": { "start": { - "line": 1697, - "column": 25 + "line": 1767, + "column": 15 }, "end": { - "line": 1697, - "column": 29 + "line": 1767, + "column": 19 } } }, @@ -257426,16 +262355,16 @@ "binop": null, "updateContext": null }, - "start": 60840, - "end": 60841, + "start": 62913, + "end": 62914, "loc": { "start": { - "line": 1697, - "column": 29 + "line": 1767, + "column": 19 }, "end": { - "line": 1697, - "column": 30 + "line": 1767, + "column": 20 } } }, @@ -257451,24 +262380,24 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 60841, - "end": 60846, + "value": "_isModel", + "start": 62914, + "end": 62922, "loc": { "start": { - "line": 1697, - "column": 30 + "line": 1767, + "column": 20 }, "end": { - "line": 1697, - "column": 35 + "line": 1767, + "column": 28 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -257478,24 +262407,24 @@ "binop": null, "updateContext": null }, - "start": 60846, - "end": 60847, + "start": 62922, + "end": 62923, "loc": { "start": { - "line": 1697, - "column": 35 + "line": 1767, + "column": 28 }, "end": { - "line": 1697, - "column": 36 + "line": 1767, + "column": 29 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -257503,149 +262432,106 @@ "postfix": false, "binop": null }, - "value": "camera", - "start": 60847, - "end": 60853, + "start": 62928, + "end": 62929, "loc": { "start": { - "line": 1697, - "column": 36 + "line": 1768, + "column": 4 }, "end": { - "line": 1697, - "column": 42 + "line": 1768, + "column": 5 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 60853, - "end": 60854, + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 62935, + "end": 63051, "loc": { "start": { - "line": 1697, - "column": 42 + "line": 1770, + "column": 4 }, "end": { - "line": 1697, - "column": 43 + "line": 1770, + "column": 120 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "viewMatrix", - "start": 60854, - "end": 60864, + "type": "CommentLine", + "value": " SceneModel members", + "start": 63056, + "end": 63077, "loc": { "start": { - "line": 1697, - "column": 43 + "line": 1771, + "column": 4 }, "end": { - "line": 1697, - "column": 53 + "line": 1771, + "column": 25 } } }, { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 60864, - "end": 60865, + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 63082, + "end": 63198, "loc": { "start": { - "line": 1697, - "column": 53 + "line": 1772, + "column": 4 }, "end": { - "line": 1697, - "column": 54 + "line": 1772, + "column": 120 } } }, { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 60866, - "end": 60870, + "type": "CommentBlock", + "value": "*\n * Returns ````false```` to indicate that SceneModel never represents an object.\n *\n * @type {Boolean}\n ", + "start": 63204, + "end": 63330, "loc": { "start": { - "line": 1697, - "column": 55 + "line": 1774, + "column": 4 }, "end": { - "line": 1697, - "column": 59 + "line": 1778, + "column": 7 } } }, { "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": 60870, - "end": 60871, + "value": "get", + "start": 63335, + "end": 63338, "loc": { "start": { - "line": 1697, - "column": 59 + "line": 1779, + "column": 4 }, "end": { - "line": 1697, - "column": 60 + "line": 1779, + "column": 7 } } }, @@ -257661,148 +262547,148 @@ "postfix": false, "binop": null }, - "value": "_matrix", - "start": 60871, - "end": 60878, + "value": "isObject", + "start": 63339, + "end": 63347, "loc": { "start": { - "line": 1697, - "column": 60 + "line": 1779, + "column": 8 }, "end": { - "line": 1697, - "column": 67 + "line": 1779, + "column": 16 } } }, { "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": 60878, - "end": 60879, + "start": 63347, + "end": 63348, "loc": { "start": { - "line": 1697, - "column": 67 + "line": 1779, + "column": 16 }, "end": { - "line": 1697, - "column": 68 + "line": 1779, + "column": 17 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 60880, - "end": 60884, + "start": 63348, + "end": 63349, "loc": { "start": { - "line": 1697, - "column": 69 + "line": 1779, + "column": 17 }, "end": { - "line": 1697, - "column": 73 + "line": 1779, + "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": 60884, - "end": 60885, + "start": 63350, + "end": 63351, "loc": { "start": { - "line": 1697, - "column": 73 + "line": 1779, + "column": 19 }, "end": { - "line": 1697, - "column": 74 + "line": 1779, + "column": 20 } } }, { "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": "_viewMatrix", - "start": 60885, - "end": 60896, + "value": "return", + "start": 63360, + "end": 63366, "loc": { "start": { - "line": 1697, - "column": 74 + "line": 1780, + "column": 8 }, "end": { - "line": 1697, - "column": 85 + "line": 1780, + "column": 14 } } }, { "type": { - "label": ")", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 60896, - "end": 60897, + "value": "false", + "start": 63367, + "end": 63372, "loc": { "start": { - "line": 1697, - "column": 85 + "line": 1780, + "column": 15 }, "end": { - "line": 1697, - "column": 86 + "line": 1780, + "column": 20 } } }, @@ -257819,24 +262705,24 @@ "binop": null, "updateContext": null }, - "start": 60897, - "end": 60898, + "start": 63372, + "end": 63373, "loc": { "start": { - "line": 1697, - "column": 86 + "line": 1780, + "column": 20 }, "end": { - "line": 1697, - "column": 87 + "line": 1780, + "column": 21 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -257844,43 +262730,58 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 60911, - "end": 60915, + "start": 63378, + "end": 63379, "loc": { "start": { - "line": 1698, - "column": 12 + "line": 1781, + "column": 4 }, "end": { - "line": 1698, - "column": 16 + "line": 1781, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Gets the SceneModel's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n ", + "start": 63385, + "end": 63667, + "loc": { + "start": { + "line": 1783, + "column": 4 + }, + "end": { + "line": 1790, + "column": 7 } } }, { "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": 60915, - "end": 60916, + "value": "get", + "start": 63672, + "end": 63675, "loc": { "start": { - "line": 1698, - "column": 16 + "line": 1791, + "column": 4 }, "end": { - "line": 1698, - "column": 17 + "line": 1791, + "column": 7 } } }, @@ -257896,17 +262797,17 @@ "postfix": false, "binop": null }, - "value": "inverseMat4", - "start": 60916, - "end": 60927, + "value": "aabb", + "start": 63676, + "end": 63680, "loc": { "start": { - "line": 1698, - "column": 17 + "line": 1791, + "column": 8 }, "end": { - "line": 1698, - "column": 28 + "line": 1791, + "column": 12 } } }, @@ -257922,122 +262823,119 @@ "postfix": false, "binop": null }, - "start": 60927, - "end": 60928, + "start": 63680, + "end": 63681, "loc": { "start": { - "line": 1698, - "column": 28 + "line": 1791, + "column": 12 }, "end": { - "line": 1698, - "column": 29 + "line": 1791, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 60928, - "end": 60932, + "start": 63681, + "end": 63682, "loc": { "start": { - "line": 1698, - "column": 29 + "line": 1791, + "column": 13 }, "end": { - "line": 1698, - "column": 33 + "line": 1791, + "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": 60932, - "end": 60933, + "start": 63683, + "end": 63684, "loc": { "start": { - "line": 1698, - "column": 33 + "line": 1791, + "column": 15 }, "end": { - "line": 1698, - "column": 34 + "line": 1791, + "column": 16 } } }, { "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": "_viewMatrix", - "start": 60933, - "end": 60944, + "value": "if", + "start": 63693, + "end": 63695, "loc": { "start": { - "line": 1698, - "column": 34 + "line": 1792, + "column": 8 }, "end": { - "line": 1698, - "column": 45 + "line": 1792, + "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": 60944, - "end": 60945, + "start": 63696, + "end": 63697, "loc": { "start": { - "line": 1698, - "column": 45 + "line": 1792, + "column": 11 }, "end": { - "line": 1698, - "column": 46 + "line": 1792, + "column": 12 } } }, @@ -258056,16 +262954,16 @@ "updateContext": null }, "value": "this", - "start": 60946, - "end": 60950, + "start": 63697, + "end": 63701, "loc": { "start": { - "line": 1698, - "column": 47 + "line": 1792, + "column": 12 }, "end": { - "line": 1698, - "column": 51 + "line": 1792, + "column": 16 } } }, @@ -258082,16 +262980,16 @@ "binop": null, "updateContext": null }, - "start": 60950, - "end": 60951, + "start": 63701, + "end": 63702, "loc": { "start": { - "line": 1698, - "column": 51 + "line": 1792, + "column": 16 }, "end": { - "line": 1698, - "column": 52 + "line": 1792, + "column": 17 } } }, @@ -258107,17 +263005,17 @@ "postfix": false, "binop": null }, - "value": "_viewNormalMatrix", - "start": 60951, - "end": 60968, + "value": "_aabbDirty", + "start": 63702, + "end": 63712, "loc": { "start": { - "line": 1698, - "column": 52 + "line": 1792, + "column": 17 }, "end": { - "line": 1698, - "column": 69 + "line": 1792, + "column": 27 } } }, @@ -258133,42 +263031,41 @@ "postfix": false, "binop": null }, - "start": 60968, - "end": 60969, + "start": 63712, + "end": 63713, "loc": { "start": { - "line": 1698, - "column": 69 + "line": 1792, + "column": 27 }, "end": { - "line": 1698, - "column": 70 + "line": 1792, + "column": 28 } } }, { "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": 60969, - "end": 60970, + "start": 63714, + "end": 63715, "loc": { "start": { - "line": 1698, - "column": 70 + "line": 1792, + "column": 29 }, "end": { - "line": 1698, - "column": 71 + "line": 1792, + "column": 30 } } }, @@ -258185,15 +263082,15 @@ "binop": null }, "value": "math", - "start": 60983, - "end": 60987, + "start": 63728, + "end": 63732, "loc": { "start": { - "line": 1699, + "line": 1793, "column": 12 }, "end": { - "line": 1699, + "line": 1793, "column": 16 } } @@ -258211,15 +263108,15 @@ "binop": null, "updateContext": null }, - "start": 60987, - "end": 60988, + "start": 63732, + "end": 63733, "loc": { "start": { - "line": 1699, + "line": 1793, "column": 16 }, "end": { - "line": 1699, + "line": 1793, "column": 17 } } @@ -258236,16 +263133,16 @@ "postfix": false, "binop": null }, - "value": "transposeMat4", - "start": 60988, - "end": 61001, + "value": "collapseAABB3", + "start": 63733, + "end": 63746, "loc": { "start": { - "line": 1699, + "line": 1793, "column": 17 }, "end": { - "line": 1699, + "line": 1793, "column": 30 } } @@ -258262,15 +263159,15 @@ "postfix": false, "binop": null }, - "start": 61001, - "end": 61002, + "start": 63746, + "end": 63747, "loc": { "start": { - "line": 1699, + "line": 1793, "column": 30 }, "end": { - "line": 1699, + "line": 1793, "column": 31 } } @@ -258290,15 +263187,15 @@ "updateContext": null }, "value": "this", - "start": 61002, - "end": 61006, + "start": 63747, + "end": 63751, "loc": { "start": { - "line": 1699, + "line": 1793, "column": 31 }, "end": { - "line": 1699, + "line": 1793, "column": 35 } } @@ -258316,15 +263213,15 @@ "binop": null, "updateContext": null }, - "start": 61006, - "end": 61007, + "start": 63751, + "end": 63752, "loc": { "start": { - "line": 1699, + "line": 1793, "column": 35 }, "end": { - "line": 1699, + "line": 1793, "column": 36 } } @@ -258341,17 +263238,17 @@ "postfix": false, "binop": null }, - "value": "_viewNormalMatrix", - "start": 61007, - "end": 61024, + "value": "_aabb", + "start": 63752, + "end": 63757, "loc": { "start": { - "line": 1699, + "line": 1793, "column": 36 }, "end": { - "line": 1699, - "column": 53 + "line": 1793, + "column": 41 } } }, @@ -258367,16 +263264,16 @@ "postfix": false, "binop": null }, - "start": 61024, - "end": 61025, + "start": 63757, + "end": 63758, "loc": { "start": { - "line": 1699, - "column": 53 + "line": 1793, + "column": 41 }, "end": { - "line": 1699, - "column": 54 + "line": 1793, + "column": 42 } } }, @@ -258393,50 +263290,76 @@ "binop": null, "updateContext": null }, - "start": 61025, - "end": 61026, + "start": 63758, + "end": 63759, "loc": { "start": { - "line": 1699, - "column": 54 + "line": 1793, + "column": 42 }, "end": { - "line": 1699, - "column": 55 + "line": 1793, + "column": 43 } } }, { "type": { - "label": "this", - "keyword": "this", + "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": "this", - "start": 61039, - "end": 61043, + "value": "for", + "start": 63772, + "end": 63775, "loc": { "start": { - "line": 1700, + "line": 1794, "column": 12 }, "end": { - "line": 1700, + "line": 1794, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 63776, + "end": 63777, + "loc": { + "start": { + "line": 1794, "column": 16 + }, + "end": { + "line": 1794, + "column": 17 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -258447,16 +263370,17 @@ "binop": null, "updateContext": null }, - "start": 61043, - "end": 61044, + "value": "let", + "start": 63777, + "end": 63780, "loc": { "start": { - "line": 1700, - "column": 16 + "line": 1794, + "column": 17 }, "end": { - "line": 1700, - "column": 17 + "line": 1794, + "column": 20 } } }, @@ -258472,17 +263396,17 @@ "postfix": false, "binop": null }, - "value": "_viewMatrixDirty", - "start": 61044, - "end": 61060, + "value": "i", + "start": 63781, + "end": 63782, "loc": { "start": { - "line": 1700, - "column": 17 + "line": 1794, + "column": 21 }, "end": { - "line": 1700, - "column": 33 + "line": 1794, + "column": 22 } } }, @@ -258500,23 +263424,22 @@ "updateContext": null }, "value": "=", - "start": 61061, - "end": 61062, + "start": 63783, + "end": 63784, "loc": { "start": { - "line": 1700, - "column": 34 + "line": 1794, + "column": 23 }, "end": { - "line": 1700, - "column": 35 + "line": 1794, + "column": 24 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -258527,23 +263450,23 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 61063, - "end": 61068, + "value": 0, + "start": 63785, + "end": 63786, "loc": { "start": { - "line": 1700, - "column": 36 + "line": 1794, + "column": 25 }, "end": { - "line": 1700, - "column": 41 + "line": 1794, + "column": 26 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -258554,24 +263477,24 @@ "binop": null, "updateContext": null }, - "start": 61068, - "end": 61069, + "start": 63786, + "end": 63787, "loc": { "start": { - "line": 1700, - "column": 41 + "line": 1794, + "column": 26 }, "end": { - "line": 1700, - "column": 42 + "line": 1794, + "column": 27 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -258579,22 +263502,51 @@ "postfix": false, "binop": null }, - "start": 61078, - "end": 61079, + "value": "len", + "start": 63788, + "end": 63791, "loc": { "start": { - "line": 1701, - "column": 8 + "line": 1794, + "column": 28 }, "end": { - "line": 1701, - "column": 9 + "line": 1794, + "column": 31 } } }, { "type": { - "label": "name", + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 63792, + "end": 63793, + "loc": { + "start": { + "line": 1794, + "column": 32 + }, + "end": { + "line": 1794, + "column": 33 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -258602,19 +263554,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 61088, - "end": 61092, + "value": "this", + "start": 63794, + "end": 63798, "loc": { "start": { - "line": 1702, - "column": 8 + "line": 1794, + "column": 34 }, "end": { - "line": 1702, - "column": 12 + "line": 1794, + "column": 38 } } }, @@ -258631,16 +263584,16 @@ "binop": null, "updateContext": null }, - "start": 61092, - "end": 61093, + "start": 63798, + "end": 63799, "loc": { "start": { - "line": 1702, - "column": 12 + "line": 1794, + "column": 38 }, "end": { - "line": 1702, - "column": 13 + "line": 1794, + "column": 39 } } }, @@ -258656,49 +263609,49 @@ "postfix": false, "binop": null }, - "value": "inverseMat4", - "start": 61093, - "end": 61104, + "value": "_entityList", + "start": 63799, + "end": 63810, "loc": { "start": { - "line": 1702, - "column": 13 + "line": 1794, + "column": 39 }, "end": { - "line": 1702, - "column": 24 + "line": 1794, + "column": 50 } } }, { "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": 61104, - "end": 61105, + "start": 63810, + "end": 63811, "loc": { "start": { - "line": 1702, - "column": 24 + "line": 1794, + "column": 50 }, "end": { - "line": 1702, - "column": 25 + "line": 1794, + "column": 51 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -258706,27 +263659,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 61105, - "end": 61109, + "value": "length", + "start": 63811, + "end": 63817, "loc": { "start": { - "line": 1702, - "column": 25 + "line": 1794, + "column": 51 }, "end": { - "line": 1702, - "column": 29 + "line": 1794, + "column": 57 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -258736,16 +263688,16 @@ "binop": null, "updateContext": null }, - "start": 61109, - "end": 61110, + "start": 63817, + "end": 63818, "loc": { "start": { - "line": 1702, - "column": 29 + "line": 1794, + "column": 57 }, "end": { - "line": 1702, - "column": 30 + "line": 1794, + "column": 58 } } }, @@ -258761,23 +263713,23 @@ "postfix": false, "binop": null }, - "value": "_viewMatrix", - "start": 61110, - "end": 61121, + "value": "i", + "start": 63819, + "end": 63820, "loc": { "start": { - "line": 1702, - "column": 30 + "line": 1794, + "column": 59 }, "end": { - "line": 1702, - "column": 41 + "line": 1794, + "column": 60 } } }, { "type": { - "label": ",", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -258785,26 +263737,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 61121, - "end": 61122, + "value": "<", + "start": 63821, + "end": 63822, "loc": { "start": { - "line": 1702, - "column": 41 + "line": 1794, + "column": 61 }, "end": { - "line": 1702, - "column": 42 + "line": 1794, + "column": 62 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -258812,27 +263764,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 61123, - "end": 61127, + "value": "len", + "start": 63823, + "end": 63826, "loc": { "start": { - "line": 1702, - "column": 43 + "line": 1794, + "column": 63 }, "end": { - "line": 1702, - "column": 47 + "line": 1794, + "column": 66 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -258842,16 +263793,16 @@ "binop": null, "updateContext": null }, - "start": 61127, - "end": 61128, + "start": 63826, + "end": 63827, "loc": { "start": { - "line": 1702, - "column": 47 + "line": 1794, + "column": 66 }, "end": { - "line": 1702, - "column": 48 + "line": 1794, + "column": 67 } } }, @@ -258867,17 +263818,43 @@ "postfix": false, "binop": null }, - "value": "_viewNormalMatrix", - "start": 61128, - "end": 61145, + "value": "i", + "start": 63828, + "end": 63829, "loc": { "start": { - "line": 1702, - "column": 48 + "line": 1794, + "column": 68 }, "end": { - "line": 1702, - "column": 65 + "line": 1794, + "column": 69 + } + } + }, + { + "type": { + "label": "++/--", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": true, + "binop": null + }, + "value": "++", + "start": 63829, + "end": 63831, + "loc": { + "start": { + "line": 1794, + "column": 69 + }, + "end": { + "line": 1794, + "column": 71 } } }, @@ -258893,42 +263870,41 @@ "postfix": false, "binop": null }, - "start": 61145, - "end": 61146, + "start": 63831, + "end": 63832, "loc": { "start": { - "line": 1702, - "column": 65 + "line": 1794, + "column": 71 }, "end": { - "line": 1702, - "column": 66 + "line": 1794, + "column": 72 } } }, { "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": 61146, - "end": 61147, + "start": 63833, + "end": 63834, "loc": { "start": { - "line": 1702, - "column": 66 + "line": 1794, + "column": 73 }, "end": { - "line": 1702, - "column": 67 + "line": 1794, + "column": 74 } } }, @@ -258945,16 +263921,16 @@ "binop": null }, "value": "math", - "start": 61156, - "end": 61160, + "start": 63851, + "end": 63855, "loc": { "start": { - "line": 1703, - "column": 8 + "line": 1795, + "column": 16 }, "end": { - "line": 1703, - "column": 12 + "line": 1795, + "column": 20 } } }, @@ -258971,16 +263947,16 @@ "binop": null, "updateContext": null }, - "start": 61160, - "end": 61161, + "start": 63855, + "end": 63856, "loc": { "start": { - "line": 1703, - "column": 12 + "line": 1795, + "column": 20 }, "end": { - "line": 1703, - "column": 13 + "line": 1795, + "column": 21 } } }, @@ -258996,17 +263972,17 @@ "postfix": false, "binop": null }, - "value": "transposeMat4", - "start": 61161, - "end": 61174, + "value": "expandAABB3", + "start": 63856, + "end": 63867, "loc": { "start": { - "line": 1703, - "column": 13 + "line": 1795, + "column": 21 }, "end": { - "line": 1703, - "column": 26 + "line": 1795, + "column": 32 } } }, @@ -259022,16 +263998,16 @@ "postfix": false, "binop": null }, - "start": 61174, - "end": 61175, + "start": 63867, + "end": 63868, "loc": { "start": { - "line": 1703, - "column": 26 + "line": 1795, + "column": 32 }, "end": { - "line": 1703, - "column": 27 + "line": 1795, + "column": 33 } } }, @@ -259050,16 +264026,16 @@ "updateContext": null }, "value": "this", - "start": 61175, - "end": 61179, + "start": 63868, + "end": 63872, "loc": { "start": { - "line": 1703, - "column": 27 + "line": 1795, + "column": 33 }, "end": { - "line": 1703, - "column": 31 + "line": 1795, + "column": 37 } } }, @@ -259076,16 +264052,16 @@ "binop": null, "updateContext": null }, - "start": 61179, - "end": 61180, + "start": 63872, + "end": 63873, "loc": { "start": { - "line": 1703, - "column": 31 + "line": 1795, + "column": 37 }, "end": { - "line": 1703, - "column": 32 + "line": 1795, + "column": 38 } } }, @@ -259101,23 +264077,77 @@ "postfix": false, "binop": null }, - "value": "_viewNormalMatrix", - "start": 61180, - "end": 61197, + "value": "_aabb", + "start": 63873, + "end": 63878, "loc": { "start": { - "line": 1703, - "column": 32 + "line": 1795, + "column": 38 }, "end": { - "line": 1703, + "line": 1795, + "column": 43 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 63878, + "end": 63879, + "loc": { + "start": { + "line": 1795, + "column": 43 + }, + "end": { + "line": 1795, + "column": 44 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 63880, + "end": 63884, + "loc": { + "start": { + "line": 1795, + "column": 45 + }, + "end": { + "line": 1795, "column": 49 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -259125,53 +264155,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 61197, - "end": 61198, + "start": 63884, + "end": 63885, "loc": { "start": { - "line": 1703, + "line": 1795, "column": 49 }, "end": { - "line": 1703, + "line": 1795, "column": 50 } } }, { "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": 61198, - "end": 61199, + "value": "_entityList", + "start": 63885, + "end": 63896, "loc": { "start": { - "line": 1703, + "line": 1795, "column": 50 }, "end": { - "line": 1703, - "column": 51 + "line": 1795, + "column": 61 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -259180,24 +264210,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 61208, - "end": 61214, + "start": 63896, + "end": 63897, "loc": { "start": { - "line": 1704, - "column": 8 + "line": 1795, + "column": 61 }, "end": { - "line": 1704, - "column": 14 + "line": 1795, + "column": 62 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -259205,20 +264233,45 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "i", + "start": 63897, + "end": 63898, + "loc": { + "start": { + "line": 1795, + "column": 62 + }, + "end": { + "line": 1795, + "column": 63 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": "this", - "start": 61215, - "end": 61219, + "start": 63898, + "end": 63899, "loc": { "start": { - "line": 1704, - "column": 15 + "line": 1795, + "column": 63 }, "end": { - "line": 1704, - "column": 19 + "line": 1795, + "column": 64 } } }, @@ -259235,16 +264288,16 @@ "binop": null, "updateContext": null }, - "start": 61219, - "end": 61220, + "start": 63899, + "end": 63900, "loc": { "start": { - "line": 1704, - "column": 19 + "line": 1795, + "column": 64 }, "end": { - "line": 1704, - "column": 20 + "line": 1795, + "column": 65 } } }, @@ -259260,17 +264313,42 @@ "postfix": false, "binop": null }, - "value": "_viewNormalMatrix", - "start": 61220, - "end": 61237, + "value": "aabb", + "start": 63900, + "end": 63904, "loc": { "start": { - "line": 1704, - "column": 20 + "line": 1795, + "column": 65 }, "end": { - "line": 1704, - "column": 37 + "line": 1795, + "column": 69 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 63904, + "end": 63905, + "loc": { + "start": { + "line": 1795, + "column": 69 + }, + "end": { + "line": 1795, + "column": 70 } } }, @@ -259287,16 +264365,16 @@ "binop": null, "updateContext": null }, - "start": 61237, - "end": 61238, + "start": 63905, + "end": 63906, "loc": { "start": { - "line": 1704, - "column": 37 + "line": 1795, + "column": 70 }, "end": { - "line": 1704, - "column": 38 + "line": 1795, + "column": 71 } } }, @@ -259312,58 +264390,70 @@ "postfix": false, "binop": null }, - "start": 61243, - "end": 61244, + "start": 63919, + "end": 63920, "loc": { "start": { - "line": 1705, - "column": 4 + "line": 1796, + "column": 12 }, "end": { - "line": 1705, - "column": 5 + "line": 1796, + "column": 13 } } }, { - "type": "CommentBlock", - "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n ", - "start": 61250, - "end": 61390, + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 63933, + "end": 63937, "loc": { "start": { - "line": 1707, - "column": 4 + "line": 1797, + "column": 12 }, "end": { - "line": 1713, - "column": 7 + "line": 1797, + "column": 16 } } }, { "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": "get", - "start": 61395, - "end": 61398, + "start": 63937, + "end": 63938, "loc": { "start": { - "line": 1714, - "column": 4 + "line": 1797, + "column": 16 }, "end": { - "line": 1714, - "column": 7 + "line": 1797, + "column": 17 } } }, @@ -259379,75 +264469,106 @@ "postfix": false, "binop": null }, - "value": "backfaces", - "start": 61399, - "end": 61408, + "value": "_aabbDirty", + "start": 63938, + "end": 63948, "loc": { "start": { - "line": 1714, - "column": 8 + "line": 1797, + "column": 17 }, "end": { - "line": 1714, - "column": 17 + "line": 1797, + "column": 27 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 63949, + "end": 63950, + "loc": { + "start": { + "line": 1797, + "column": 28 + }, + "end": { + "line": 1797, + "column": 29 + } + } + }, + { + "type": { + "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": 61408, - "end": 61409, + "value": "false", + "start": 63951, + "end": 63956, "loc": { "start": { - "line": 1714, - "column": 17 + "line": 1797, + "column": 30 }, - "end": { - "line": 1714, - "column": 18 + "end": { + "line": 1797, + "column": 35 } } }, { "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": 61409, - "end": 61410, + "start": 63956, + "end": 63957, "loc": { "start": { - "line": 1714, - "column": 18 + "line": 1797, + "column": 35 }, "end": { - "line": 1714, - "column": 19 + "line": 1797, + "column": 36 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -259455,16 +264576,16 @@ "postfix": false, "binop": null }, - "start": 61411, - "end": 61412, + "start": 63966, + "end": 63967, "loc": { "start": { - "line": 1714, - "column": 20 + "line": 1798, + "column": 8 }, "end": { - "line": 1714, - "column": 21 + "line": 1798, + "column": 9 } } }, @@ -259483,15 +264604,15 @@ "updateContext": null }, "value": "return", - "start": 61421, - "end": 61427, + "start": 63976, + "end": 63982, "loc": { "start": { - "line": 1715, + "line": 1799, "column": 8 }, "end": { - "line": 1715, + "line": 1799, "column": 14 } } @@ -259511,15 +264632,15 @@ "updateContext": null }, "value": "this", - "start": 61428, - "end": 61432, + "start": 63983, + "end": 63987, "loc": { "start": { - "line": 1715, + "line": 1799, "column": 15 }, "end": { - "line": 1715, + "line": 1799, "column": 19 } } @@ -259537,15 +264658,15 @@ "binop": null, "updateContext": null }, - "start": 61432, - "end": 61433, + "start": 63987, + "end": 63988, "loc": { "start": { - "line": 1715, + "line": 1799, "column": 19 }, "end": { - "line": 1715, + "line": 1799, "column": 20 } } @@ -259562,17 +264683,17 @@ "postfix": false, "binop": null }, - "value": "_backfaces", - "start": 61433, - "end": 61443, + "value": "_aabb", + "start": 63988, + "end": 63993, "loc": { "start": { - "line": 1715, + "line": 1799, "column": 20 }, "end": { - "line": 1715, - "column": 30 + "line": 1799, + "column": 25 } } }, @@ -259589,16 +264710,16 @@ "binop": null, "updateContext": null }, - "start": 61443, - "end": 61444, + "start": 63993, + "end": 63994, "loc": { "start": { - "line": 1715, - "column": 30 + "line": 1799, + "column": 25 }, "end": { - "line": 1715, - "column": 31 + "line": 1799, + "column": 26 } } }, @@ -259614,31 +264735,31 @@ "postfix": false, "binop": null }, - "start": 61449, - "end": 61450, + "start": 63999, + "end": 64000, "loc": { "start": { - "line": 1716, + "line": 1800, "column": 4 }, "end": { - "line": 1716, + "line": 1800, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this SceneModel.\n *\n * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\n * the Viewer will:\n *\n * * hide backfaces on watertight meshes,\n * * show backfaces on open meshes, and\n * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n *\n * @type {Boolean}\n ", - "start": 61456, - "end": 62038, + "value": "*\n * The approximate number of triangle primitives in this SceneModel.\n *\n * @type {Number}\n ", + "start": 64006, + "end": 64119, "loc": { "start": { - "line": 1718, + "line": 1802, "column": 4 }, "end": { - "line": 1733, + "line": 1806, "column": 7 } } @@ -259655,16 +264776,16 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 62043, - "end": 62046, + "value": "get", + "start": 64124, + "end": 64127, "loc": { "start": { - "line": 1734, + "line": 1807, "column": 4 }, "end": { - "line": 1734, + "line": 1807, "column": 7 } } @@ -259681,17 +264802,17 @@ "postfix": false, "binop": null }, - "value": "backfaces", - "start": 62047, - "end": 62056, + "value": "numTriangles", + "start": 64128, + "end": 64140, "loc": { "start": { - "line": 1734, + "line": 1807, "column": 8 }, "end": { - "line": 1734, - "column": 17 + "line": 1807, + "column": 20 } } }, @@ -259707,24 +264828,24 @@ "postfix": false, "binop": null }, - "start": 62056, - "end": 62057, + "start": 64140, + "end": 64141, "loc": { "start": { - "line": 1734, - "column": 17 + "line": 1807, + "column": 20 }, "end": { - "line": 1734, - "column": 18 + "line": 1807, + "column": 21 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -259732,25 +264853,24 @@ "postfix": false, "binop": null }, - "value": "backfaces", - "start": 62057, - "end": 62066, + "start": 64141, + "end": 64142, "loc": { "start": { - "line": 1734, - "column": 18 + "line": 1807, + "column": 21 }, "end": { - "line": 1734, - "column": 27 + "line": 1807, + "column": 22 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -259758,47 +264878,51 @@ "postfix": false, "binop": null }, - "start": 62066, - "end": 62067, + "start": 64143, + "end": 64144, "loc": { "start": { - "line": 1734, - "column": 27 + "line": 1807, + "column": 23 }, "end": { - "line": 1734, - "column": 28 + "line": 1807, + "column": 24 } } }, { "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": 62068, - "end": 62069, + "value": "return", + "start": 64153, + "end": 64159, "loc": { "start": { - "line": 1734, - "column": 29 + "line": 1808, + "column": 8 }, "end": { - "line": 1734, - "column": 30 + "line": 1808, + "column": 14 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -259806,108 +264930,106 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "backfaces", - "start": 62078, - "end": 62087, + "value": "this", + "start": 64160, + "end": 64164, "loc": { "start": { - "line": 1735, - "column": 8 + "line": 1808, + "column": 15 }, "end": { - "line": 1735, - "column": 17 + "line": 1808, + "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": 62088, - "end": 62089, + "start": 64164, + "end": 64165, "loc": { "start": { - "line": 1735, - "column": 18 + "line": 1808, + "column": 19 }, "end": { - "line": 1735, - "column": 19 + "line": 1808, + "column": 20 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 62090, - "end": 62091, + "value": "_numTriangles", + "start": 64165, + "end": 64178, "loc": { "start": { - "line": 1735, + "line": 1808, "column": 20 }, "end": { - "line": 1735, - "column": 21 + "line": 1808, + "column": 33 } } }, { "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": 62091, - "end": 62092, + "start": 64178, + "end": 64179, "loc": { "start": { - "line": 1735, - "column": 21 + "line": 1808, + "column": 33 }, "end": { - "line": 1735, - "column": 22 + "line": 1808, + "column": 34 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -259915,97 +265037,80 @@ "postfix": false, "binop": null }, - "value": "backfaces", - "start": 62092, - "end": 62101, + "start": 64184, + "end": 64185, "loc": { "start": { - "line": 1735, - "column": 22 + "line": 1809, + "column": 4 }, "end": { - "line": 1735, - "column": 31 + "line": 1809, + "column": 5 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 62101, - "end": 62102, + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 64191, + "end": 64307, "loc": { "start": { - "line": 1735, - "column": 31 + "line": 1811, + "column": 4 }, "end": { - "line": 1735, - "column": 32 + "line": 1811, + "column": 120 } } }, { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 62111, - "end": 62115, + "type": "CommentLine", + "value": " Entity members", + "start": 64312, + "end": 64329, "loc": { "start": { - "line": 1736, - "column": 8 + "line": 1812, + "column": 4 }, "end": { - "line": 1736, - "column": 12 + "line": 1812, + "column": 21 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 62115, - "end": 62116, + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 64334, + "end": 64450, "loc": { "start": { - "line": 1736, - "column": 12 + "line": 1813, + "column": 4 }, "end": { - "line": 1736, - "column": 13 + "line": 1813, + "column": 120 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * The approximate number of line primitives in this SceneModel.\n *\n * @type {Number}\n ", + "start": 64456, + "end": 64565, + "loc": { + "start": { + "line": 1815, + "column": 4 + }, + "end": { + "line": 1819, + "column": 7 } } }, @@ -260021,51 +265126,50 @@ "postfix": false, "binop": null }, - "value": "_backfaces", - "start": 62116, - "end": 62126, + "value": "get", + "start": 64570, + "end": 64573, "loc": { "start": { - "line": 1736, - "column": 13 + "line": 1820, + "column": 4 }, "end": { - "line": 1736, - "column": 23 + "line": 1820, + "column": 7 } } }, { "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": 62127, - "end": 62128, + "value": "numLines", + "start": 64574, + "end": 64582, "loc": { "start": { - "line": 1736, - "column": 24 + "line": 1820, + "column": 8 }, "end": { - "line": 1736, - "column": 25 + "line": 1820, + "column": 16 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -260074,78 +265178,74 @@ "postfix": false, "binop": null }, - "value": "backfaces", - "start": 62129, - "end": 62138, + "start": 64582, + "end": 64583, "loc": { "start": { - "line": 1736, - "column": 26 + "line": 1820, + "column": 16 }, "end": { - "line": 1736, - "column": 35 + "line": 1820, + "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": 62138, - "end": 62139, + "start": 64583, + "end": 64584, "loc": { "start": { - "line": 1736, - "column": 35 + "line": 1820, + "column": 17 }, "end": { - "line": 1736, - "column": 36 + "line": 1820, + "column": 18 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 62148, - "end": 62152, + "start": 64585, + "end": 64586, "loc": { "start": { - "line": 1737, - "column": 8 + "line": 1820, + "column": 19 }, "end": { - "line": 1737, - "column": 12 + "line": 1820, + "column": 20 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -260155,22 +265255,24 @@ "binop": null, "updateContext": null }, - "start": 62152, - "end": 62153, + "value": "return", + "start": 64595, + "end": 64601, "loc": { "start": { - "line": 1737, - "column": 12 + "line": 1821, + "column": 8 }, "end": { - "line": 1737, - "column": 13 + "line": 1821, + "column": 14 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -260178,52 +265280,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "glRedraw", - "start": 62153, - "end": 62161, + "value": "this", + "start": 64602, + "end": 64606, "loc": { "start": { - "line": 1737, - "column": 13 + "line": 1821, + "column": 15 }, "end": { - "line": 1737, - "column": 21 + "line": 1821, + "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": 62161, - "end": 62162, + "start": 64606, + "end": 64607, "loc": { "start": { - "line": 1737, - "column": 21 + "line": 1821, + "column": 19 }, "end": { - "line": 1737, - "column": 22 + "line": 1821, + "column": 20 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -260231,16 +265335,17 @@ "postfix": false, "binop": null }, - "start": 62162, - "end": 62163, + "value": "_numLines", + "start": 64607, + "end": 64616, "loc": { "start": { - "line": 1737, - "column": 22 + "line": 1821, + "column": 20 }, "end": { - "line": 1737, - "column": 23 + "line": 1821, + "column": 29 } } }, @@ -260257,16 +265362,16 @@ "binop": null, "updateContext": null }, - "start": 62163, - "end": 62164, + "start": 64616, + "end": 64617, "loc": { "start": { - "line": 1737, - "column": 23 + "line": 1821, + "column": 29 }, "end": { - "line": 1737, - "column": 24 + "line": 1821, + "column": 30 } } }, @@ -260282,31 +265387,31 @@ "postfix": false, "binop": null }, - "start": 62169, - "end": 62170, + "start": 64622, + "end": 64623, "loc": { "start": { - "line": 1738, + "line": 1822, "column": 4 }, "end": { - "line": 1738, + "line": 1822, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets the list of {@link SceneModelEntity}s within this SceneModel.\n *\n * @returns {SceneModelEntity[]}\n ", - "start": 62176, - "end": 62305, + "value": "*\n * The approximate number of point primitives in this SceneModel.\n *\n * @type {Number}\n ", + "start": 64629, + "end": 64739, "loc": { "start": { - "line": 1740, + "line": 1824, "column": 4 }, "end": { - "line": 1744, + "line": 1828, "column": 7 } } @@ -260324,15 +265429,15 @@ "binop": null }, "value": "get", - "start": 62310, - "end": 62313, + "start": 64744, + "end": 64747, "loc": { "start": { - "line": 1745, + "line": 1829, "column": 4 }, "end": { - "line": 1745, + "line": 1829, "column": 7 } } @@ -260349,17 +265454,17 @@ "postfix": false, "binop": null }, - "value": "entityList", - "start": 62314, - "end": 62324, + "value": "numPoints", + "start": 64748, + "end": 64757, "loc": { "start": { - "line": 1745, + "line": 1829, "column": 8 }, "end": { - "line": 1745, - "column": 18 + "line": 1829, + "column": 17 } } }, @@ -260375,16 +265480,16 @@ "postfix": false, "binop": null }, - "start": 62324, - "end": 62325, + "start": 64757, + "end": 64758, "loc": { "start": { - "line": 1745, - "column": 18 + "line": 1829, + "column": 17 }, "end": { - "line": 1745, - "column": 19 + "line": 1829, + "column": 18 } } }, @@ -260400,16 +265505,16 @@ "postfix": false, "binop": null }, - "start": 62325, - "end": 62326, + "start": 64758, + "end": 64759, "loc": { "start": { - "line": 1745, - "column": 19 + "line": 1829, + "column": 18 }, "end": { - "line": 1745, - "column": 20 + "line": 1829, + "column": 19 } } }, @@ -260425,16 +265530,16 @@ "postfix": false, "binop": null }, - "start": 62327, - "end": 62328, + "start": 64760, + "end": 64761, "loc": { "start": { - "line": 1745, - "column": 21 + "line": 1829, + "column": 20 }, "end": { - "line": 1745, - "column": 22 + "line": 1829, + "column": 21 } } }, @@ -260453,15 +265558,15 @@ "updateContext": null }, "value": "return", - "start": 62337, - "end": 62343, + "start": 64770, + "end": 64776, "loc": { "start": { - "line": 1746, + "line": 1830, "column": 8 }, "end": { - "line": 1746, + "line": 1830, "column": 14 } } @@ -260481,15 +265586,15 @@ "updateContext": null }, "value": "this", - "start": 62344, - "end": 62348, + "start": 64777, + "end": 64781, "loc": { "start": { - "line": 1746, + "line": 1830, "column": 15 }, "end": { - "line": 1746, + "line": 1830, "column": 19 } } @@ -260507,15 +265612,15 @@ "binop": null, "updateContext": null }, - "start": 62348, - "end": 62349, + "start": 64781, + "end": 64782, "loc": { "start": { - "line": 1746, + "line": 1830, "column": 19 }, "end": { - "line": 1746, + "line": 1830, "column": 20 } } @@ -260532,17 +265637,17 @@ "postfix": false, "binop": null }, - "value": "_entityList", - "start": 62349, - "end": 62360, + "value": "_numPoints", + "start": 64782, + "end": 64792, "loc": { "start": { - "line": 1746, + "line": 1830, "column": 20 }, "end": { - "line": 1746, - "column": 31 + "line": 1830, + "column": 30 } } }, @@ -260559,16 +265664,16 @@ "binop": null, "updateContext": null }, - "start": 62360, - "end": 62361, + "start": 64792, + "end": 64793, "loc": { "start": { - "line": 1746, - "column": 31 + "line": 1830, + "column": 30 }, "end": { - "line": 1746, - "column": 32 + "line": 1830, + "column": 31 } } }, @@ -260584,31 +265689,31 @@ "postfix": false, "binop": null }, - "start": 62366, - "end": 62367, + "start": 64798, + "end": 64799, "loc": { "start": { - "line": 1747, + "line": 1831, "column": 4 }, "end": { - "line": 1747, + "line": 1831, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Returns true to indicate that SceneModel is an {@link Entity}.\n * @type {Boolean}\n ", - "start": 62373, - "end": 62477, + "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n *\n * @type {Boolean}\n ", + "start": 64805, + "end": 65065, "loc": { "start": { - "line": 1749, + "line": 1833, "column": 4 }, "end": { - "line": 1752, + "line": 1839, "column": 7 } } @@ -260626,15 +265731,15 @@ "binop": null }, "value": "get", - "start": 62482, - "end": 62485, + "start": 65070, + "end": 65073, "loc": { "start": { - "line": 1753, + "line": 1840, "column": 4 }, "end": { - "line": 1753, + "line": 1840, "column": 7 } } @@ -260651,17 +265756,17 @@ "postfix": false, "binop": null }, - "value": "isEntity", - "start": 62486, - "end": 62494, + "value": "visible", + "start": 65074, + "end": 65081, "loc": { "start": { - "line": 1753, + "line": 1840, "column": 8 }, "end": { - "line": 1753, - "column": 16 + "line": 1840, + "column": 15 } } }, @@ -260677,16 +265782,16 @@ "postfix": false, "binop": null }, - "start": 62494, - "end": 62495, + "start": 65081, + "end": 65082, "loc": { "start": { - "line": 1753, - "column": 16 + "line": 1840, + "column": 15 }, "end": { - "line": 1753, - "column": 17 + "line": 1840, + "column": 16 } } }, @@ -260702,16 +265807,16 @@ "postfix": false, "binop": null }, - "start": 62495, - "end": 62496, + "start": 65082, + "end": 65083, "loc": { "start": { - "line": 1753, - "column": 17 + "line": 1840, + "column": 16 }, "end": { - "line": 1753, - "column": 18 + "line": 1840, + "column": 17 } } }, @@ -260727,16 +265832,16 @@ "postfix": false, "binop": null }, - "start": 62497, - "end": 62498, + "start": 65084, + "end": 65085, "loc": { "start": { - "line": 1753, - "column": 19 + "line": 1840, + "column": 18 }, "end": { - "line": 1753, - "column": 20 + "line": 1840, + "column": 19 } } }, @@ -260755,23 +265860,48 @@ "updateContext": null }, "value": "return", - "start": 62507, - "end": 62513, + "start": 65094, + "end": 65100, "loc": { "start": { - "line": 1754, + "line": 1841, "column": 8 }, "end": { - "line": 1754, + "line": 1841, "column": 14 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 65101, + "end": 65102, + "loc": { + "start": { + "line": 1841, + "column": 15 + }, + "end": { + "line": 1841, + "column": 16 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -260782,17 +265912,148 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 62514, - "end": 62518, + "value": "this", + "start": 65102, + "end": 65106, "loc": { "start": { - "line": 1754, - "column": 15 + "line": 1841, + "column": 16 }, "end": { - "line": 1754, - "column": 19 + "line": 1841, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 65106, + "end": 65107, + "loc": { + "start": { + "line": 1841, + "column": 20 + }, + "end": { + "line": 1841, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "numVisibleLayerPortions", + "start": 65107, + "end": 65130, + "loc": { + "start": { + "line": 1841, + "column": 21 + }, + "end": { + "line": 1841, + "column": 44 + } + } + }, + { + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": ">", + "start": 65131, + "end": 65132, + "loc": { + "start": { + "line": 1841, + "column": 45 + }, + "end": { + "line": 1841, + "column": 46 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 65133, + "end": 65134, + "loc": { + "start": { + "line": 1841, + "column": 47 + }, + "end": { + "line": 1841, + "column": 48 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 65134, + "end": 65135, + "loc": { + "start": { + "line": 1841, + "column": 48 + }, + "end": { + "line": 1841, + "column": 49 } } }, @@ -260809,16 +266070,16 @@ "binop": null, "updateContext": null }, - "start": 62518, - "end": 62519, + "start": 65135, + "end": 65136, "loc": { "start": { - "line": 1754, - "column": 19 + "line": 1841, + "column": 49 }, "end": { - "line": 1754, - "column": 20 + "line": 1841, + "column": 50 } } }, @@ -260834,31 +266095,31 @@ "postfix": false, "binop": null }, - "start": 62524, - "end": 62525, + "start": 65141, + "end": 65142, "loc": { "start": { - "line": 1755, + "line": 1842, "column": 4 }, "end": { - "line": 1755, + "line": 1842, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Returns ````true```` if this SceneModel represents a model.\n *\n * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in\n * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n ", - "start": 62531, - "end": 62837, + "value": "*\n * Sets if this SceneModel is visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n **\n * @type {Boolean}\n ", + "start": 65148, + "end": 65375, "loc": { "start": { - "line": 1757, + "line": 1844, "column": 4 }, "end": { - "line": 1764, + "line": 1850, "column": 7 } } @@ -260875,16 +266136,16 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 62842, - "end": 62845, + "value": "set", + "start": 65380, + "end": 65383, "loc": { "start": { - "line": 1765, + "line": 1851, "column": 4 }, "end": { - "line": 1765, + "line": 1851, "column": 7 } } @@ -260901,16 +266162,16 @@ "postfix": false, "binop": null }, - "value": "isModel", - "start": 62846, - "end": 62853, + "value": "visible", + "start": 65384, + "end": 65391, "loc": { "start": { - "line": 1765, + "line": 1851, "column": 8 }, "end": { - "line": 1765, + "line": 1851, "column": 15 } } @@ -260927,24 +266188,24 @@ "postfix": false, "binop": null }, - "start": 62853, - "end": 62854, + "start": 65391, + "end": 65392, "loc": { "start": { - "line": 1765, + "line": 1851, "column": 15 }, "end": { - "line": 1765, + "line": 1851, "column": 16 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -260952,24 +266213,25 @@ "postfix": false, "binop": null }, - "start": 62854, - "end": 62855, + "value": "visible", + "start": 65392, + "end": 65399, "loc": { "start": { - "line": 1765, + "line": 1851, "column": 16 }, "end": { - "line": 1765, - "column": 17 + "line": 1851, + "column": 23 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -260977,51 +266239,47 @@ "postfix": false, "binop": null }, - "start": 62856, - "end": 62857, + "start": 65399, + "end": 65400, "loc": { "start": { - "line": 1765, - "column": 18 + "line": 1851, + "column": 23 }, "end": { - "line": 1765, - "column": 19 + "line": 1851, + "column": 24 } } }, { "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": 62866, - "end": 62872, + "start": 65401, + "end": 65402, "loc": { "start": { - "line": 1766, - "column": 8 + "line": 1851, + "column": 25 }, "end": { - "line": 1766, - "column": 14 + "line": 1851, + "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -261029,46 +266287,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 62873, - "end": 62877, + "value": "visible", + "start": 65411, + "end": 65418, "loc": { "start": { - "line": 1766, - "column": 15 + "line": 1852, + "column": 8 }, "end": { - "line": 1766, - "column": 19 + "line": 1852, + "column": 15 } } }, { "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": 62877, - "end": 62878, + "value": "=", + "start": 65419, + "end": 65420, "loc": { "start": { - "line": 1766, - "column": 19 + "line": 1852, + "column": 16 }, "end": { - "line": 1766, - "column": 20 + "line": 1852, + "column": 17 } } }, @@ -261084,23 +266342,23 @@ "postfix": false, "binop": null }, - "value": "_isModel", - "start": 62878, - "end": 62886, + "value": "visible", + "start": 65421, + "end": 65428, "loc": { "start": { - "line": 1766, - "column": 20 + "line": 1852, + "column": 18 }, "end": { - "line": 1766, - "column": 28 + "line": 1852, + "column": 25 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -261108,134 +266366,181 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 62886, - "end": 62887, + "value": "!==", + "start": 65429, + "end": 65432, "loc": { "start": { - "line": 1766, - "column": 28 + "line": 1852, + "column": 26 }, "end": { - "line": 1766, + "line": 1852, "column": 29 } } }, { "type": { - "label": "}", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 62892, - "end": 62893, + "value": "false", + "start": 65433, + "end": 65438, "loc": { "start": { - "line": 1767, - "column": 4 + "line": 1852, + "column": 30 }, "end": { - "line": 1767, - "column": 5 + "line": 1852, + "column": 35 } } }, { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 62899, - "end": 63015, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 65438, + "end": 65439, "loc": { "start": { - "line": 1769, - "column": 4 + "line": 1852, + "column": 35 }, "end": { - "line": 1769, - "column": 120 + "line": 1852, + "column": 36 } } }, { - "type": "CommentLine", - "value": " SceneModel members", - "start": 63020, - "end": 63041, + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 65448, + "end": 65452, "loc": { "start": { - "line": 1770, - "column": 4 + "line": 1853, + "column": 8 }, "end": { - "line": 1770, - "column": 25 + "line": 1853, + "column": 12 } } }, { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 63046, - "end": 63162, + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 65452, + "end": 65453, "loc": { "start": { - "line": 1771, - "column": 4 + "line": 1853, + "column": 12 }, "end": { - "line": 1771, - "column": 120 + "line": 1853, + "column": 13 } } }, { - "type": "CommentBlock", - "value": "*\n * Returns ````false```` to indicate that SceneModel never represents an object.\n *\n * @type {Boolean}\n ", - "start": 63168, - "end": 63294, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_visible", + "start": 65453, + "end": 65461, "loc": { "start": { - "line": 1773, - "column": 4 + "line": 1853, + "column": 13 }, "end": { - "line": 1777, - "column": 7 + "line": 1853, + "column": 21 } } }, { "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": "get", - "start": 63299, - "end": 63302, + "value": "=", + "start": 65462, + "end": 65463, "loc": { "start": { - "line": 1778, - "column": 4 + "line": 1853, + "column": 22 }, "end": { - "line": 1778, - "column": 7 + "line": 1853, + "column": 23 } } }, @@ -261251,73 +266556,77 @@ "postfix": false, "binop": null }, - "value": "isObject", - "start": 63303, - "end": 63311, + "value": "visible", + "start": 65464, + "end": 65471, "loc": { "start": { - "line": 1778, - "column": 8 + "line": 1853, + "column": 24 }, "end": { - "line": 1778, - "column": 16 + "line": 1853, + "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": 63311, - "end": 63312, + "start": 65471, + "end": 65472, "loc": { "start": { - "line": 1778, - "column": 16 + "line": 1853, + "column": 31 }, "end": { - "line": 1778, - "column": 17 + "line": 1853, + "column": 32 } } }, { "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": 63312, - "end": 63313, + "value": "for", + "start": 65481, + "end": 65484, "loc": { - "start": { - "line": 1778, - "column": 17 + "start": { + "line": 1854, + "column": 8 }, "end": { - "line": 1778, - "column": 18 + "line": 1854, + "column": 11 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -261327,24 +266636,24 @@ "postfix": false, "binop": null }, - "start": 63314, - "end": 63315, + "start": 65485, + "end": 65486, "loc": { "start": { - "line": 1778, - "column": 19 + "line": 1854, + "column": 12 }, "end": { - "line": 1778, - "column": 20 + "line": 1854, + "column": 13 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -261354,24 +266663,23 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 63324, - "end": 63330, + "value": "let", + "start": 65486, + "end": 65489, "loc": { "start": { - "line": 1779, - "column": 8 + "line": 1854, + "column": 13 }, "end": { - "line": 1779, - "column": 14 + "line": 1854, + "column": 16 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -261379,87 +266687,99 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 63331, - "end": 63336, + "value": "i", + "start": 65490, + "end": 65491, "loc": { "start": { - "line": 1779, - "column": 15 + "line": 1854, + "column": 17 }, "end": { - "line": 1779, - "column": 20 + "line": 1854, + "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": 63336, - "end": 63337, + "value": "=", + "start": 65492, + "end": 65493, "loc": { "start": { - "line": 1779, - "column": 20 + "line": 1854, + "column": 19 }, "end": { - "line": 1779, - "column": 21 + "line": 1854, + "column": 20 } } }, { "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": 63342, - "end": 63343, + "value": 0, + "start": 65494, + "end": 65495, "loc": { "start": { - "line": 1780, - "column": 4 + "line": 1854, + "column": 21 }, "end": { - "line": 1780, - "column": 5 + "line": 1854, + "column": 22 } } }, { - "type": "CommentBlock", - "value": "*\n * Gets the SceneModel's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n ", - "start": 63349, - "end": 63631, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 65495, + "end": 65496, "loc": { "start": { - "line": 1782, - "column": 4 + "line": 1854, + "column": 22 }, "end": { - "line": 1789, - "column": 7 + "line": 1854, + "column": 23 } } }, @@ -261475,74 +266795,78 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 63636, - "end": 63639, + "value": "len", + "start": 65497, + "end": 65500, "loc": { "start": { - "line": 1790, - "column": 4 + "line": 1854, + "column": 24 }, "end": { - "line": 1790, - "column": 7 + "line": 1854, + "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": "aabb", - "start": 63640, - "end": 63644, + "value": "=", + "start": 65501, + "end": 65502, "loc": { "start": { - "line": 1790, - "column": 8 + "line": 1854, + "column": 28 }, "end": { - "line": 1790, - "column": 12 + "line": 1854, + "column": 29 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 63644, - "end": 63645, + "value": "this", + "start": 65503, + "end": 65507, "loc": { "start": { - "line": 1790, - "column": 12 + "line": 1854, + "column": 30 }, "end": { - "line": 1790, - "column": 13 + "line": 1854, + "column": 34 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -261550,25 +266874,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 63645, - "end": 63646, + "start": 65507, + "end": 65508, "loc": { "start": { - "line": 1790, - "column": 13 + "line": 1854, + "column": 34 }, "end": { - "line": 1790, - "column": 14 + "line": 1854, + "column": 35 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -261577,23 +266902,23 @@ "postfix": false, "binop": null }, - "start": 63647, - "end": 63648, + "value": "_entityList", + "start": 65508, + "end": 65519, "loc": { "start": { - "line": 1790, - "column": 15 + "line": 1854, + "column": 35 }, "end": { - "line": 1790, - "column": 16 + "line": 1854, + "column": 46 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -261604,24 +266929,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 63657, - "end": 63659, + "start": 65519, + "end": 65520, "loc": { "start": { - "line": 1791, - "column": 8 + "line": 1854, + "column": 46 }, "end": { - "line": 1791, - "column": 10 + "line": 1854, + "column": 47 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -261630,25 +266954,25 @@ "postfix": false, "binop": null }, - "start": 63660, - "end": 63661, + "value": "length", + "start": 65520, + "end": 65526, "loc": { "start": { - "line": 1791, - "column": 11 + "line": 1854, + "column": 47 }, "end": { - "line": 1791, - "column": 12 + "line": 1854, + "column": 53 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -261657,77 +266981,77 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 63661, - "end": 63665, + "start": 65526, + "end": 65527, "loc": { "start": { - "line": 1791, - "column": 12 + "line": 1854, + "column": 53 }, "end": { - "line": 1791, - "column": 16 + "line": 1854, + "column": 54 } } }, { "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": 63665, - "end": 63666, + "value": "i", + "start": 65528, + "end": 65529, "loc": { "start": { - "line": 1791, - "column": 16 + "line": 1854, + "column": 55 }, "end": { - "line": 1791, - "column": 17 + "line": 1854, + "column": 56 } } }, { "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": 7, + "updateContext": null }, - "value": "_aabbDirty", - "start": 63666, - "end": 63676, + "value": "<", + "start": 65530, + "end": 65531, "loc": { "start": { - "line": 1791, - "column": 17 + "line": 1854, + "column": 57 }, "end": { - "line": 1791, - "column": 27 + "line": 1854, + "column": 58 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -261735,41 +267059,43 @@ "postfix": false, "binop": null }, - "start": 63676, - "end": 63677, + "value": "len", + "start": 65532, + "end": 65535, "loc": { "start": { - "line": 1791, - "column": 27 + "line": 1854, + "column": 59 }, "end": { - "line": 1791, - "column": 28 + "line": 1854, + "column": 62 } } }, { "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": 63678, - "end": 63679, + "start": 65535, + "end": 65536, "loc": { "start": { - "line": 1791, - "column": 29 + "line": 1854, + "column": 62 }, "end": { - "line": 1791, - "column": 30 + "line": 1854, + "column": 63 } } }, @@ -261785,51 +267111,51 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 63692, - "end": 63696, + "value": "i", + "start": 65537, + "end": 65538, "loc": { "start": { - "line": 1792, - "column": 12 + "line": 1854, + "column": 64 }, "end": { - "line": 1792, - "column": 16 + "line": 1854, + "column": 65 } } }, { "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": 63696, - "end": 63697, + "value": "++", + "start": 65538, + "end": 65540, "loc": { "start": { - "line": 1792, - "column": 16 + "line": 1854, + "column": 65 }, "end": { - "line": 1792, - "column": 17 + "line": 1854, + "column": 67 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -261837,23 +267163,22 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 63697, - "end": 63710, + "start": 65540, + "end": 65541, "loc": { "start": { - "line": 1792, - "column": 17 + "line": 1854, + "column": 67 }, "end": { - "line": 1792, - "column": 30 + "line": 1854, + "column": 68 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -261863,16 +267188,16 @@ "postfix": false, "binop": null }, - "start": 63710, - "end": 63711, + "start": 65542, + "end": 65543, "loc": { "start": { - "line": 1792, - "column": 30 + "line": 1854, + "column": 69 }, "end": { - "line": 1792, - "column": 31 + "line": 1854, + "column": 70 } } }, @@ -261891,16 +267216,16 @@ "updateContext": null }, "value": "this", - "start": 63711, - "end": 63715, + "start": 65556, + "end": 65560, "loc": { "start": { - "line": 1792, - "column": 31 + "line": 1855, + "column": 12 }, "end": { - "line": 1792, - "column": 35 + "line": 1855, + "column": 16 } } }, @@ -261917,16 +267242,16 @@ "binop": null, "updateContext": null }, - "start": 63715, - "end": 63716, + "start": 65560, + "end": 65561, "loc": { "start": { - "line": 1792, - "column": 35 + "line": 1855, + "column": 16 }, "end": { - "line": 1792, - "column": 36 + "line": 1855, + "column": 17 } } }, @@ -261942,50 +267267,25 @@ "postfix": false, "binop": null }, - "value": "_aabb", - "start": 63716, - "end": 63721, - "loc": { - "start": { - "line": 1792, - "column": 36 - }, - "end": { - "line": 1792, - "column": 41 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 63721, - "end": 63722, + "value": "_entityList", + "start": 65561, + "end": 65572, "loc": { "start": { - "line": 1792, - "column": 41 + "line": 1855, + "column": 17 }, "end": { - "line": 1792, - "column": 42 + "line": 1855, + "column": 28 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -261994,76 +267294,74 @@ "binop": null, "updateContext": null }, - "start": 63722, - "end": 63723, + "start": 65572, + "end": 65573, "loc": { "start": { - "line": 1792, - "column": 42 + "line": 1855, + "column": 28 }, "end": { - "line": 1792, - "column": 43 + "line": 1855, + "column": 29 } } }, { "type": { - "label": "for", - "keyword": "for", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "for", - "start": 63736, - "end": 63739, + "value": "i", + "start": 65573, + "end": 65574, "loc": { "start": { - "line": 1793, - "column": 12 + "line": 1855, + "column": 29 }, "end": { - "line": 1793, - "column": 15 + "line": 1855, + "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": 63740, - "end": 63741, + "start": 65574, + "end": 65575, "loc": { "start": { - "line": 1793, - "column": 16 + "line": 1855, + "column": 30 }, "end": { - "line": 1793, - "column": 17 + "line": 1855, + "column": 31 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -262074,17 +267372,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 63741, - "end": 63744, + "start": 65575, + "end": 65576, "loc": { "start": { - "line": 1793, - "column": 17 + "line": 1855, + "column": 31 }, "end": { - "line": 1793, - "column": 20 + "line": 1855, + "column": 32 } } }, @@ -262100,17 +267397,17 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 63745, - "end": 63746, + "value": "visible", + "start": 65576, + "end": 65583, "loc": { "start": { - "line": 1793, - "column": 21 + "line": 1855, + "column": 32 }, "end": { - "line": 1793, - "column": 22 + "line": 1855, + "column": 39 } } }, @@ -262128,22 +267425,22 @@ "updateContext": null }, "value": "=", - "start": 63747, - "end": 63748, + "start": 65584, + "end": 65585, "loc": { "start": { - "line": 1793, - "column": 23 + "line": 1855, + "column": 40 }, "end": { - "line": 1793, - "column": 24 + "line": 1855, + "column": 41 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -262151,26 +267448,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 63749, - "end": 63750, + "value": "visible", + "start": 65586, + "end": 65593, "loc": { "start": { - "line": 1793, - "column": 25 + "line": 1855, + "column": 42 }, "end": { - "line": 1793, - "column": 26 + "line": 1855, + "column": 49 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -262181,24 +267477,24 @@ "binop": null, "updateContext": null }, - "start": 63750, - "end": 63751, + "start": 65593, + "end": 65594, "loc": { "start": { - "line": 1793, - "column": 26 + "line": 1855, + "column": 49 }, "end": { - "line": 1793, - "column": 27 + "line": 1855, + "column": 50 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -262206,44 +267502,16 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 63752, - "end": 63755, - "loc": { - "start": { - "line": 1793, - "column": 28 - }, - "end": { - "line": 1793, - "column": 31 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 63756, - "end": 63757, + "start": 65603, + "end": 65604, "loc": { "start": { - "line": 1793, - "column": 32 + "line": 1856, + "column": 8 }, "end": { - "line": 1793, - "column": 33 + "line": 1856, + "column": 9 } } }, @@ -262262,16 +267530,16 @@ "updateContext": null }, "value": "this", - "start": 63758, - "end": 63762, + "start": 65613, + "end": 65617, "loc": { "start": { - "line": 1793, - "column": 34 + "line": 1857, + "column": 8 }, "end": { - "line": 1793, - "column": 38 + "line": 1857, + "column": 12 } } }, @@ -262288,16 +267556,16 @@ "binop": null, "updateContext": null }, - "start": 63762, - "end": 63763, + "start": 65617, + "end": 65618, "loc": { "start": { - "line": 1793, - "column": 38 + "line": 1857, + "column": 12 }, "end": { - "line": 1793, - "column": 39 + "line": 1857, + "column": 13 } } }, @@ -262313,51 +267581,50 @@ "postfix": false, "binop": null }, - "value": "_entityList", - "start": 63763, - "end": 63774, + "value": "glRedraw", + "start": 65618, + "end": 65626, "loc": { "start": { - "line": 1793, - "column": 39 + "line": 1857, + "column": 13 }, "end": { - "line": 1793, - "column": 50 + "line": 1857, + "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": 63774, - "end": 63775, + "start": 65626, + "end": 65627, "loc": { "start": { - "line": 1793, - "column": 50 + "line": 1857, + "column": 21 }, "end": { - "line": 1793, - "column": 51 + "line": 1857, + "column": 22 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -262365,17 +267632,16 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 63775, - "end": 63781, + "start": 65627, + "end": 65628, "loc": { "start": { - "line": 1793, - "column": 51 + "line": 1857, + "column": 22 }, "end": { - "line": 1793, - "column": 57 + "line": 1857, + "column": 23 } } }, @@ -262392,24 +267658,24 @@ "binop": null, "updateContext": null }, - "start": 63781, - "end": 63782, + "start": 65628, + "end": 65629, "loc": { "start": { - "line": 1793, - "column": 57 + "line": 1857, + "column": 23 }, "end": { - "line": 1793, - "column": 58 + "line": 1857, + "column": 24 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -262417,44 +267683,58 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 63783, - "end": 63784, + "start": 65634, + "end": 65635, "loc": { "start": { - "line": 1793, - "column": 59 + "line": 1858, + "column": 4 }, "end": { - "line": 1793, - "column": 60 + "line": 1858, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", + "start": 65641, + "end": 65758, + "loc": { + "start": { + "line": 1860, + "column": 4 + }, + "end": { + "line": 1864, + "column": 7 } } }, { "type": { - "label": "", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, - "updateContext": null + "binop": null }, - "value": "<", - "start": 63785, - "end": 63786, + "value": "get", + "start": 65763, + "end": 65766, "loc": { "start": { - "line": 1793, - "column": 61 + "line": 1865, + "column": 4 }, "end": { - "line": 1793, - "column": 62 + "line": 1865, + "column": 7 } } }, @@ -262470,51 +267750,50 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 63787, - "end": 63790, + "value": "xrayed", + "start": 65767, + "end": 65773, "loc": { "start": { - "line": 1793, - "column": 63 + "line": 1865, + "column": 8 }, "end": { - "line": 1793, - "column": 66 + "line": 1865, + "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": 63790, - "end": 63791, + "start": 65773, + "end": 65774, "loc": { "start": { - "line": 1793, - "column": 66 + "line": 1865, + "column": 14 }, "end": { - "line": 1793, - "column": 67 + "line": 1865, + "column": 15 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -262522,74 +267801,75 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 63792, - "end": 63793, + "start": 65774, + "end": 65775, "loc": { "start": { - "line": 1793, - "column": 68 + "line": 1865, + "column": 15 }, "end": { - "line": 1793, - "column": 69 + "line": 1865, + "column": 16 } } }, { "type": { - "label": "++/--", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 63793, - "end": 63795, + "start": 65776, + "end": 65777, "loc": { "start": { - "line": 1793, - "column": 69 + "line": 1865, + "column": 17 }, "end": { - "line": 1793, - "column": 71 + "line": 1865, + "column": 18 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 63795, - "end": 63796, + "value": "return", + "start": 65786, + "end": 65792, "loc": { "start": { - "line": 1793, - "column": 71 + "line": 1866, + "column": 8 }, "end": { - "line": 1793, - "column": 72 + "line": 1866, + "column": 14 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -262599,22 +267879,23 @@ "postfix": false, "binop": null }, - "start": 63797, - "end": 63798, + "start": 65793, + "end": 65794, "loc": { "start": { - "line": 1793, - "column": 73 + "line": 1866, + "column": 15 }, "end": { - "line": 1793, - "column": 74 + "line": 1866, + "column": 16 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -262622,18 +267903,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 63815, - "end": 63819, + "value": "this", + "start": 65794, + "end": 65798, "loc": { "start": { - "line": 1794, + "line": 1866, "column": 16 }, "end": { - "line": 1794, + "line": 1866, "column": 20 } } @@ -262651,15 +267933,15 @@ "binop": null, "updateContext": null }, - "start": 63819, - "end": 63820, + "start": 65798, + "end": 65799, "loc": { "start": { - "line": 1794, + "line": 1866, "column": 20 }, "end": { - "line": 1794, + "line": 1866, "column": 21 } } @@ -262676,49 +267958,50 @@ "postfix": false, "binop": null }, - "value": "expandAABB3", - "start": 63820, - "end": 63831, + "value": "numXRayedLayerPortions", + "start": 65799, + "end": 65821, "loc": { "start": { - "line": 1794, + "line": 1866, "column": 21 }, "end": { - "line": 1794, - "column": 32 + "line": 1866, + "column": 43 } } }, { "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": 63831, - "end": 63832, + "value": ">", + "start": 65822, + "end": 65823, "loc": { "start": { - "line": 1794, - "column": 32 + "line": 1866, + "column": 44 }, "end": { - "line": 1794, - "column": 33 + "line": 1866, + "column": 45 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -262729,23 +268012,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 63832, - "end": 63836, + "value": 0, + "start": 65824, + "end": 65825, "loc": { "start": { - "line": 1794, - "column": 33 + "line": 1866, + "column": 46 }, "end": { - "line": 1794, - "column": 37 + "line": 1866, + "column": 47 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -262753,27 +268036,52 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 65825, + "end": 65826, + "loc": { + "start": { + "line": 1866, + "column": 47 + }, + "end": { + "line": 1866, + "column": 48 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 63836, - "end": 63837, + "start": 65826, + "end": 65827, "loc": { "start": { - "line": 1794, - "column": 37 + "line": 1866, + "column": 48 }, "end": { - "line": 1794, - "column": 38 + "line": 1866, + "column": 49 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -262781,50 +268089,64 @@ "postfix": false, "binop": null }, - "value": "_aabb", - "start": 63837, - "end": 63842, + "start": 65832, + "end": 65833, "loc": { "start": { - "line": 1794, - "column": 38 + "line": 1867, + "column": 4 }, "end": { - "line": 1794, - "column": 43 + "line": 1867, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", + "start": 65839, + "end": 65956, + "loc": { + "start": { + "line": 1869, + "column": 4 + }, + "end": { + "line": 1873, + "column": 7 } } }, { "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": 63842, - "end": 63843, + "value": "set", + "start": 65961, + "end": 65964, "loc": { "start": { - "line": 1794, - "column": 43 + "line": 1874, + "column": 4 }, "end": { - "line": 1794, - "column": 44 + "line": 1874, + "column": 7 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -262832,46 +268154,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 63844, - "end": 63848, + "value": "xrayed", + "start": 65965, + "end": 65971, "loc": { "start": { - "line": 1794, - "column": 45 + "line": 1874, + "column": 8 }, "end": { - "line": 1794, - "column": 49 + "line": 1874, + "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": 63848, - "end": 63849, + "start": 65971, + "end": 65972, "loc": { "start": { - "line": 1794, - "column": 49 + "line": 1874, + "column": 14 }, "end": { - "line": 1794, - "column": 50 + "line": 1874, + "column": 15 } } }, @@ -262887,50 +268207,49 @@ "postfix": false, "binop": null }, - "value": "_entityList", - "start": 63849, - "end": 63860, + "value": "xrayed", + "start": 65972, + "end": 65978, "loc": { "start": { - "line": 1794, - "column": 50 + "line": 1874, + "column": 15 }, "end": { - "line": 1794, - "column": 61 + "line": 1874, + "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, - "updateContext": null + "binop": null }, - "start": 63860, - "end": 63861, + "start": 65978, + "end": 65979, "loc": { "start": { - "line": 1794, - "column": 61 + "line": 1874, + "column": 21 }, "end": { - "line": 1794, - "column": 62 + "line": 1874, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -262939,171 +268258,175 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 63861, - "end": 63862, + "start": 65980, + "end": 65981, "loc": { "start": { - "line": 1794, - "column": 62 + "line": 1874, + "column": 23 }, "end": { - "line": 1794, - "column": 63 + "line": 1874, + "column": 24 } } }, { "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": 63862, - "end": 63863, + "value": "xrayed", + "start": 65990, + "end": 65996, "loc": { "start": { - "line": 1794, - "column": 63 + "line": 1875, + "column": 8 }, "end": { - "line": 1794, - "column": 64 + "line": 1875, + "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": 63863, - "end": 63864, + "value": "=", + "start": 65997, + "end": 65998, "loc": { "start": { - "line": 1794, - "column": 64 + "line": 1875, + "column": 15 }, "end": { - "line": 1794, - "column": 65 + "line": 1875, + "column": 16 } } }, { "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": "aabb", - "start": 63864, - "end": 63868, + "value": "!", + "start": 65999, + "end": 66000, "loc": { "start": { - "line": 1794, - "column": 65 + "line": 1875, + "column": 17 }, "end": { - "line": 1794, - "column": 69 + "line": 1875, + "column": 18 } } }, { "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": 63868, - "end": 63869, + "value": "!", + "start": 66000, + "end": 66001, "loc": { "start": { - "line": 1794, - "column": 69 + "line": 1875, + "column": 18 }, "end": { - "line": 1794, - "column": 70 + "line": 1875, + "column": 19 } } }, { "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": 63869, - "end": 63870, + "value": "xrayed", + "start": 66001, + "end": 66007, "loc": { "start": { - "line": 1794, - "column": 70 + "line": 1875, + "column": 19 }, "end": { - "line": 1794, - "column": 71 + "line": 1875, + "column": 25 } } }, { "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": 63883, - "end": 63884, + "start": 66007, + "end": 66008, "loc": { "start": { - "line": 1795, - "column": 12 + "line": 1875, + "column": 25 }, "end": { - "line": 1795, - "column": 13 + "line": 1875, + "column": 26 } } }, @@ -263122,16 +268445,16 @@ "updateContext": null }, "value": "this", - "start": 63897, - "end": 63901, + "start": 66017, + "end": 66021, "loc": { "start": { - "line": 1796, - "column": 12 + "line": 1876, + "column": 8 }, "end": { - "line": 1796, - "column": 16 + "line": 1876, + "column": 12 } } }, @@ -263148,16 +268471,16 @@ "binop": null, "updateContext": null }, - "start": 63901, - "end": 63902, + "start": 66021, + "end": 66022, "loc": { "start": { - "line": 1796, - "column": 16 + "line": 1876, + "column": 12 }, "end": { - "line": 1796, - "column": 17 + "line": 1876, + "column": 13 } } }, @@ -263173,17 +268496,17 @@ "postfix": false, "binop": null }, - "value": "_aabbDirty", - "start": 63902, - "end": 63912, + "value": "_xrayed", + "start": 66022, + "end": 66029, "loc": { "start": { - "line": 1796, - "column": 17 + "line": 1876, + "column": 13 }, "end": { - "line": 1796, - "column": 27 + "line": 1876, + "column": 20 } } }, @@ -263201,23 +268524,22 @@ "updateContext": null }, "value": "=", - "start": 63913, - "end": 63914, + "start": 66030, + "end": 66031, "loc": { "start": { - "line": 1796, - "column": 28 + "line": 1876, + "column": 21 }, "end": { - "line": 1796, - "column": 29 + "line": 1876, + "column": 22 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -263225,20 +268547,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 63915, - "end": 63920, + "value": "xrayed", + "start": 66032, + "end": 66038, "loc": { "start": { - "line": 1796, - "column": 30 + "line": 1876, + "column": 23 }, "end": { - "line": 1796, - "column": 35 + "line": 1876, + "column": 29 } } }, @@ -263255,103 +268576,76 @@ "binop": null, "updateContext": null }, - "start": 63920, - "end": 63921, + "start": 66038, + "end": 66039, "loc": { "start": { - "line": 1796, - "column": 35 + "line": 1876, + "column": 29 }, "end": { - "line": 1796, - "column": 36 + "line": 1876, + "column": 30 } } }, { "type": { - "label": "}", + "label": "for", + "keyword": "for", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 63930, - "end": 63931, - "loc": { - "start": { - "line": 1797, - "column": 8 - }, - "end": { - "line": 1797, - "column": 9 - } - } - }, - { - "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "return", - "start": 63940, - "end": 63946, + "value": "for", + "start": 66048, + "end": 66051, "loc": { "start": { - "line": 1798, + "line": 1877, "column": 8 }, "end": { - "line": 1798, - "column": 14 + "line": 1877, + "column": 11 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 63947, - "end": 63951, + "start": 66052, + "end": 66053, "loc": { "start": { - "line": 1798, - "column": 15 + "line": 1877, + "column": 12 }, "end": { - "line": 1798, - "column": 19 + "line": 1877, + "column": 13 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -263362,16 +268656,17 @@ "binop": null, "updateContext": null }, - "start": 63951, - "end": 63952, + "value": "let", + "start": 66053, + "end": 66056, "loc": { "start": { - "line": 1798, - "column": 19 + "line": 1877, + "column": 13 }, "end": { - "line": 1798, - "column": 20 + "line": 1877, + "column": 16 } } }, @@ -263387,84 +268682,97 @@ "postfix": false, "binop": null }, - "value": "_aabb", - "start": 63952, - "end": 63957, + "value": "i", + "start": 66057, + "end": 66058, "loc": { "start": { - "line": 1798, - "column": 20 + "line": 1877, + "column": 17 }, "end": { - "line": 1798, - "column": 25 + "line": 1877, + "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": 63957, - "end": 63958, + "value": "=", + "start": 66059, + "end": 66060, "loc": { "start": { - "line": 1798, - "column": 25 + "line": 1877, + "column": 19 }, "end": { - "line": 1798, - "column": 26 + "line": 1877, + "column": 20 } } }, { "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": 63963, - "end": 63964, + "value": 0, + "start": 66061, + "end": 66062, "loc": { "start": { - "line": 1799, - "column": 4 + "line": 1877, + "column": 21 }, "end": { - "line": 1799, - "column": 5 + "line": 1877, + "column": 22 } } }, { - "type": "CommentBlock", - "value": "*\n * The approximate number of triangle primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 63970, - "end": 64083, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 66062, + "end": 66063, "loc": { "start": { - "line": 1801, - "column": 4 + "line": 1877, + "column": 22 }, "end": { - "line": 1805, - "column": 7 + "line": 1877, + "column": 23 } } }, @@ -263480,74 +268788,78 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 64088, - "end": 64091, + "value": "len", + "start": 66064, + "end": 66067, "loc": { "start": { - "line": 1806, - "column": 4 + "line": 1877, + "column": 24 }, "end": { - "line": 1806, - "column": 7 + "line": 1877, + "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": "numTriangles", - "start": 64092, - "end": 64104, + "value": "=", + "start": 66068, + "end": 66069, "loc": { "start": { - "line": 1806, - "column": 8 + "line": 1877, + "column": 28 }, "end": { - "line": 1806, - "column": 20 + "line": 1877, + "column": 29 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 64104, - "end": 64105, + "value": "this", + "start": 66070, + "end": 66074, "loc": { "start": { - "line": 1806, - "column": 20 + "line": 1877, + "column": 30 }, "end": { - "line": 1806, - "column": 21 + "line": 1877, + "column": 34 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -263555,25 +268867,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 64105, - "end": 64106, + "start": 66074, + "end": 66075, "loc": { "start": { - "line": 1806, - "column": 21 + "line": 1877, + "column": 34 }, "end": { - "line": 1806, - "column": 22 + "line": 1877, + "column": 35 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -263582,24 +268895,24 @@ "postfix": false, "binop": null }, - "start": 64107, - "end": 64108, + "value": "_entityList", + "start": 66075, + "end": 66086, "loc": { "start": { - "line": 1806, - "column": 23 + "line": 1877, + "column": 35 }, "end": { - "line": 1806, - "column": 24 + "line": 1877, + "column": 46 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -263609,24 +268922,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 64117, - "end": 64123, + "start": 66086, + "end": 66087, "loc": { "start": { - "line": 1807, - "column": 8 + "line": 1877, + "column": 46 }, "end": { - "line": 1807, - "column": 14 + "line": 1877, + "column": 47 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -263634,27 +268945,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 64124, - "end": 64128, + "value": "length", + "start": 66087, + "end": 66093, "loc": { "start": { - "line": 1807, - "column": 15 + "line": 1877, + "column": 47 }, "end": { - "line": 1807, - "column": 19 + "line": 1877, + "column": 53 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -263664,16 +268974,16 @@ "binop": null, "updateContext": null }, - "start": 64128, - "end": 64129, + "start": 66093, + "end": 66094, "loc": { "start": { - "line": 1807, - "column": 19 + "line": 1877, + "column": 53 }, "end": { - "line": 1807, - "column": 20 + "line": 1877, + "column": 54 } } }, @@ -263689,23 +268999,23 @@ "postfix": false, "binop": null }, - "value": "_numTriangles", - "start": 64129, - "end": 64142, + "value": "i", + "start": 66095, + "end": 66096, "loc": { "start": { - "line": 1807, - "column": 20 + "line": 1877, + "column": 55 }, "end": { - "line": 1807, - "column": 33 + "line": 1877, + "column": 56 } } }, { "type": { - "label": ";", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -263713,27 +269023,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 64142, - "end": 64143, + "value": "<", + "start": 66097, + "end": 66098, "loc": { "start": { - "line": 1807, - "column": 33 + "line": 1877, + "column": 57 }, "end": { - "line": 1807, - "column": 34 + "line": 1877, + "column": 58 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -263741,80 +269052,43 @@ "postfix": false, "binop": null }, - "start": 64148, - "end": 64149, - "loc": { - "start": { - "line": 1808, - "column": 4 - }, - "end": { - "line": 1808, - "column": 5 - } - } - }, - { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 64155, - "end": 64271, - "loc": { - "start": { - "line": 1810, - "column": 4 - }, - "end": { - "line": 1810, - "column": 120 - } - } - }, - { - "type": "CommentLine", - "value": " Entity members", - "start": 64276, - "end": 64293, - "loc": { - "start": { - "line": 1811, - "column": 4 - }, - "end": { - "line": 1811, - "column": 21 - } - } - }, - { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 64298, - "end": 64414, + "value": "len", + "start": 66099, + "end": 66102, "loc": { "start": { - "line": 1812, - "column": 4 + "line": 1877, + "column": 59 }, "end": { - "line": 1812, - "column": 120 + "line": 1877, + "column": 62 } } }, { - "type": "CommentBlock", - "value": "*\n * The approximate number of line primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 64420, - "end": 64529, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 66102, + "end": 66103, "loc": { "start": { - "line": 1814, - "column": 4 + "line": 1877, + "column": 62 }, "end": { - "line": 1818, - "column": 7 + "line": 1877, + "column": 63 } } }, @@ -263830,51 +269104,51 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 64534, - "end": 64537, + "value": "i", + "start": 66104, + "end": 66105, "loc": { "start": { - "line": 1819, - "column": 4 + "line": 1877, + "column": 64 }, "end": { - "line": 1819, - "column": 7 + "line": 1877, + "column": 65 } } }, { "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": "numLines", - "start": 64538, - "end": 64546, + "value": "++", + "start": 66105, + "end": 66107, "loc": { "start": { - "line": 1819, - "column": 8 + "line": 1877, + "column": 65 }, "end": { - "line": 1819, - "column": 16 + "line": 1877, + "column": 67 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -263882,24 +269156,24 @@ "postfix": false, "binop": null }, - "start": 64546, - "end": 64547, + "start": 66107, + "end": 66108, "loc": { "start": { - "line": 1819, - "column": 16 + "line": 1877, + "column": 67 }, "end": { - "line": 1819, - "column": 17 + "line": 1877, + "column": 68 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -263907,49 +269181,51 @@ "postfix": false, "binop": null }, - "start": 64547, - "end": 64548, + "start": 66109, + "end": 66110, "loc": { "start": { - "line": 1819, - "column": 17 + "line": 1877, + "column": 69 }, "end": { - "line": 1819, - "column": 18 + "line": 1877, + "column": 70 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 64549, - "end": 64550, + "value": "this", + "start": 66123, + "end": 66127, "loc": { "start": { - "line": 1819, - "column": 19 + "line": 1878, + "column": 12 }, "end": { - "line": 1819, - "column": 20 + "line": 1878, + "column": 16 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -263959,24 +269235,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 64559, - "end": 64565, + "start": 66127, + "end": 66128, "loc": { "start": { - "line": 1820, - "column": 8 + "line": 1878, + "column": 16 }, "end": { - "line": 1820, - "column": 14 + "line": 1878, + "column": 17 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -263984,28 +269258,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 64566, - "end": 64570, + "value": "_entityList", + "start": 66128, + "end": 66139, "loc": { "start": { - "line": 1820, - "column": 15 + "line": 1878, + "column": 17 }, "end": { - "line": 1820, - "column": 19 + "line": 1878, + "column": 28 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -264014,16 +269287,16 @@ "binop": null, "updateContext": null }, - "start": 64570, - "end": 64571, + "start": 66139, + "end": 66140, "loc": { "start": { - "line": 1820, - "column": 19 + "line": 1878, + "column": 28 }, "end": { - "line": 1820, - "column": 20 + "line": 1878, + "column": 29 } } }, @@ -264039,24 +269312,24 @@ "postfix": false, "binop": null }, - "value": "_numLines", - "start": 64571, - "end": 64580, + "value": "i", + "start": 66140, + "end": 66141, "loc": { "start": { - "line": 1820, - "column": 20 + "line": 1878, + "column": 29 }, "end": { - "line": 1820, - "column": 29 + "line": 1878, + "column": 30 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -264066,22 +269339,22 @@ "binop": null, "updateContext": null }, - "start": 64580, - "end": 64581, + "start": 66141, + "end": 66142, "loc": { "start": { - "line": 1820, - "column": 29 + "line": 1878, + "column": 30 }, "end": { - "line": 1820, - "column": 30 + "line": 1878, + "column": 31 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -264089,60 +269362,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 64586, - "end": 64587, + "start": 66142, + "end": 66143, "loc": { "start": { - "line": 1821, - "column": 4 + "line": 1878, + "column": 31 }, "end": { - "line": 1821, - "column": 5 + "line": 1878, + "column": 32 } } }, { - "type": "CommentBlock", - "value": "*\n * The approximate number of point primitives in this SceneModel.\n *\n * @type {Number}\n ", - "start": 64593, - "end": 64703, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "xrayed", + "start": 66143, + "end": 66149, "loc": { "start": { - "line": 1823, - "column": 4 + "line": 1878, + "column": 32 }, "end": { - "line": 1827, - "column": 7 + "line": 1878, + "column": 38 } } }, { "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": "get", - "start": 64708, - "end": 64711, + "value": "=", + "start": 66150, + "end": 66151, "loc": { "start": { - "line": 1828, - "column": 4 + "line": 1878, + "column": 39 }, "end": { - "line": 1828, - "column": 7 + "line": 1878, + "column": 40 } } }, @@ -264158,48 +269443,49 @@ "postfix": false, "binop": null }, - "value": "numPoints", - "start": 64712, - "end": 64721, + "value": "xrayed", + "start": 66152, + "end": 66158, "loc": { "start": { - "line": 1828, - "column": 8 + "line": 1878, + "column": 41 }, "end": { - "line": 1828, - "column": 17 + "line": 1878, + "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": 64721, - "end": 64722, + "start": 66158, + "end": 66159, "loc": { "start": { - "line": 1828, - "column": 17 + "line": 1878, + "column": 47 }, "end": { - "line": 1828, - "column": 18 + "line": 1878, + "column": 48 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -264209,49 +269495,51 @@ "postfix": false, "binop": null }, - "start": 64722, - "end": 64723, + "start": 66168, + "end": 66169, "loc": { "start": { - "line": 1828, - "column": 18 + "line": 1879, + "column": 8 }, "end": { - "line": 1828, - "column": 19 + "line": 1879, + "column": 9 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 64724, - "end": 64725, + "value": "this", + "start": 66178, + "end": 66182, "loc": { "start": { - "line": 1828, - "column": 20 + "line": 1880, + "column": 8 }, "end": { - "line": 1828, - "column": 21 + "line": 1880, + "column": 12 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -264261,24 +269549,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 64734, - "end": 64740, + "start": 66182, + "end": 66183, "loc": { "start": { - "line": 1829, - "column": 8 + "line": 1880, + "column": 12 }, "end": { - "line": 1829, - "column": 14 + "line": 1880, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -264286,54 +269572,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 64741, - "end": 64745, + "value": "glRedraw", + "start": 66183, + "end": 66191, "loc": { "start": { - "line": 1829, - "column": 15 + "line": 1880, + "column": 13 }, "end": { - "line": 1829, - "column": 19 + "line": 1880, + "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": 64745, - "end": 64746, + "start": 66191, + "end": 66192, "loc": { "start": { - "line": 1829, - "column": 19 + "line": 1880, + "column": 21 }, "end": { - "line": 1829, - "column": 20 + "line": 1880, + "column": 22 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -264341,17 +269625,16 @@ "postfix": false, "binop": null }, - "value": "_numPoints", - "start": 64746, - "end": 64756, + "start": 66192, + "end": 66193, "loc": { "start": { - "line": 1829, - "column": 20 + "line": 1880, + "column": 22 }, "end": { - "line": 1829, - "column": 30 + "line": 1880, + "column": 23 } } }, @@ -264368,16 +269651,16 @@ "binop": null, "updateContext": null }, - "start": 64756, - "end": 64757, + "start": 66193, + "end": 66194, "loc": { "start": { - "line": 1829, - "column": 30 + "line": 1880, + "column": 23 }, "end": { - "line": 1829, - "column": 31 + "line": 1880, + "column": 24 } } }, @@ -264393,31 +269676,31 @@ "postfix": false, "binop": null }, - "start": 64762, - "end": 64763, + "start": 66199, + "end": 66200, "loc": { "start": { - "line": 1830, + "line": 1881, "column": 4 }, "end": { - "line": 1830, + "line": 1881, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n *\n * @type {Boolean}\n ", - "start": 64769, - "end": 65029, + "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", + "start": 66206, + "end": 66328, "loc": { "start": { - "line": 1832, + "line": 1883, "column": 4 }, "end": { - "line": 1838, + "line": 1887, "column": 7 } } @@ -264435,15 +269718,15 @@ "binop": null }, "value": "get", - "start": 65034, - "end": 65037, + "start": 66333, + "end": 66336, "loc": { "start": { - "line": 1839, + "line": 1888, "column": 4 }, "end": { - "line": 1839, + "line": 1888, "column": 7 } } @@ -264460,17 +269743,17 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 65038, - "end": 65045, + "value": "highlighted", + "start": 66337, + "end": 66348, "loc": { "start": { - "line": 1839, + "line": 1888, "column": 8 }, "end": { - "line": 1839, - "column": 15 + "line": 1888, + "column": 19 } } }, @@ -264486,16 +269769,16 @@ "postfix": false, "binop": null }, - "start": 65045, - "end": 65046, + "start": 66348, + "end": 66349, "loc": { "start": { - "line": 1839, - "column": 15 + "line": 1888, + "column": 19 }, "end": { - "line": 1839, - "column": 16 + "line": 1888, + "column": 20 } } }, @@ -264511,16 +269794,16 @@ "postfix": false, "binop": null }, - "start": 65046, - "end": 65047, + "start": 66349, + "end": 66350, "loc": { "start": { - "line": 1839, - "column": 16 + "line": 1888, + "column": 20 }, "end": { - "line": 1839, - "column": 17 + "line": 1888, + "column": 21 } } }, @@ -264536,16 +269819,16 @@ "postfix": false, "binop": null }, - "start": 65048, - "end": 65049, + "start": 66351, + "end": 66352, "loc": { "start": { - "line": 1839, - "column": 18 + "line": 1888, + "column": 22 }, "end": { - "line": 1839, - "column": 19 + "line": 1888, + "column": 23 } } }, @@ -264564,15 +269847,15 @@ "updateContext": null }, "value": "return", - "start": 65058, - "end": 65064, + "start": 66361, + "end": 66367, "loc": { "start": { - "line": 1840, + "line": 1889, "column": 8 }, "end": { - "line": 1840, + "line": 1889, "column": 14 } } @@ -264589,15 +269872,15 @@ "postfix": false, "binop": null }, - "start": 65065, - "end": 65066, + "start": 66368, + "end": 66369, "loc": { "start": { - "line": 1840, + "line": 1889, "column": 15 }, "end": { - "line": 1840, + "line": 1889, "column": 16 } } @@ -264617,15 +269900,15 @@ "updateContext": null }, "value": "this", - "start": 65066, - "end": 65070, + "start": 66369, + "end": 66373, "loc": { "start": { - "line": 1840, + "line": 1889, "column": 16 }, "end": { - "line": 1840, + "line": 1889, "column": 20 } } @@ -264643,15 +269926,15 @@ "binop": null, "updateContext": null }, - "start": 65070, - "end": 65071, + "start": 66373, + "end": 66374, "loc": { "start": { - "line": 1840, + "line": 1889, "column": 20 }, "end": { - "line": 1840, + "line": 1889, "column": 21 } } @@ -264668,17 +269951,17 @@ "postfix": false, "binop": null }, - "value": "numVisibleLayerPortions", - "start": 65071, - "end": 65094, + "value": "numHighlightedLayerPortions", + "start": 66374, + "end": 66401, "loc": { "start": { - "line": 1840, + "line": 1889, "column": 21 }, "end": { - "line": 1840, - "column": 44 + "line": 1889, + "column": 48 } } }, @@ -264696,16 +269979,16 @@ "updateContext": null }, "value": ">", - "start": 65095, - "end": 65096, + "start": 66402, + "end": 66403, "loc": { "start": { - "line": 1840, - "column": 45 + "line": 1889, + "column": 49 }, "end": { - "line": 1840, - "column": 46 + "line": 1889, + "column": 50 } } }, @@ -264723,16 +270006,16 @@ "updateContext": null }, "value": 0, - "start": 65097, - "end": 65098, + "start": 66404, + "end": 66405, "loc": { "start": { - "line": 1840, - "column": 47 + "line": 1889, + "column": 51 }, "end": { - "line": 1840, - "column": 48 + "line": 1889, + "column": 52 } } }, @@ -264748,16 +270031,16 @@ "postfix": false, "binop": null }, - "start": 65098, - "end": 65099, + "start": 66405, + "end": 66406, "loc": { "start": { - "line": 1840, - "column": 48 + "line": 1889, + "column": 52 }, "end": { - "line": 1840, - "column": 49 + "line": 1889, + "column": 53 } } }, @@ -264774,16 +270057,16 @@ "binop": null, "updateContext": null }, - "start": 65099, - "end": 65100, + "start": 66406, + "end": 66407, "loc": { "start": { - "line": 1840, - "column": 49 + "line": 1889, + "column": 53 }, "end": { - "line": 1840, - "column": 50 + "line": 1889, + "column": 54 } } }, @@ -264799,31 +270082,31 @@ "postfix": false, "binop": null }, - "start": 65105, - "end": 65106, + "start": 66412, + "end": 66413, "loc": { "start": { - "line": 1841, + "line": 1890, "column": 4 }, "end": { - "line": 1841, + "line": 1890, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if this SceneModel is visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n **\n * @type {Boolean}\n ", - "start": 65112, - "end": 65339, + "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", + "start": 66419, + "end": 66541, "loc": { "start": { - "line": 1843, + "line": 1892, "column": 4 }, "end": { - "line": 1849, + "line": 1896, "column": 7 } } @@ -264841,15 +270124,15 @@ "binop": null }, "value": "set", - "start": 65344, - "end": 65347, + "start": 66546, + "end": 66549, "loc": { "start": { - "line": 1850, + "line": 1897, "column": 4 }, "end": { - "line": 1850, + "line": 1897, "column": 7 } } @@ -264866,17 +270149,17 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 65348, - "end": 65355, + "value": "highlighted", + "start": 66550, + "end": 66561, "loc": { "start": { - "line": 1850, + "line": 1897, "column": 8 }, "end": { - "line": 1850, - "column": 15 + "line": 1897, + "column": 19 } } }, @@ -264892,16 +270175,16 @@ "postfix": false, "binop": null }, - "start": 65355, - "end": 65356, + "start": 66561, + "end": 66562, "loc": { "start": { - "line": 1850, - "column": 15 + "line": 1897, + "column": 19 }, "end": { - "line": 1850, - "column": 16 + "line": 1897, + "column": 20 } } }, @@ -264917,17 +270200,17 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 65356, - "end": 65363, + "value": "highlighted", + "start": 66562, + "end": 66573, "loc": { "start": { - "line": 1850, - "column": 16 + "line": 1897, + "column": 20 }, "end": { - "line": 1850, - "column": 23 + "line": 1897, + "column": 31 } } }, @@ -264943,16 +270226,16 @@ "postfix": false, "binop": null }, - "start": 65363, - "end": 65364, + "start": 66573, + "end": 66574, "loc": { "start": { - "line": 1850, - "column": 23 + "line": 1897, + "column": 31 }, "end": { - "line": 1850, - "column": 24 + "line": 1897, + "column": 32 } } }, @@ -264968,16 +270251,16 @@ "postfix": false, "binop": null }, - "start": 65365, - "end": 65366, + "start": 66575, + "end": 66576, "loc": { "start": { - "line": 1850, - "column": 25 + "line": 1897, + "column": 33 }, "end": { - "line": 1850, - "column": 26 + "line": 1897, + "column": 34 } } }, @@ -264993,17 +270276,17 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 65375, - "end": 65382, + "value": "highlighted", + "start": 66585, + "end": 66596, "loc": { "start": { - "line": 1851, + "line": 1898, "column": 8 }, "end": { - "line": 1851, - "column": 15 + "line": 1898, + "column": 19 } } }, @@ -265021,76 +270304,76 @@ "updateContext": null }, "value": "=", - "start": 65383, - "end": 65384, + "start": 66597, + "end": 66598, "loc": { "start": { - "line": 1851, - "column": 16 + "line": 1898, + "column": 20 }, "end": { - "line": 1851, - "column": 17 + "line": 1898, + "column": 21 } } }, { "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": "visible", - "start": 65385, - "end": 65392, + "value": "!", + "start": 66599, + "end": 66600, "loc": { "start": { - "line": 1851, - "column": 18 + "line": 1898, + "column": 22 }, "end": { - "line": 1851, - "column": 25 + "line": 1898, + "column": 23 } } }, { "type": { - "label": "==/!=", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 65393, - "end": 65396, + "value": "!", + "start": 66600, + "end": 66601, "loc": { "start": { - "line": 1851, - "column": 26 + "line": 1898, + "column": 23 }, "end": { - "line": 1851, - "column": 29 + "line": 1898, + "column": 24 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -265098,19 +270381,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 65397, - "end": 65402, + "value": "highlighted", + "start": 66601, + "end": 66612, "loc": { "start": { - "line": 1851, - "column": 30 + "line": 1898, + "column": 24 }, "end": { - "line": 1851, + "line": 1898, "column": 35 } } @@ -265128,15 +270410,15 @@ "binop": null, "updateContext": null }, - "start": 65402, - "end": 65403, + "start": 66612, + "end": 66613, "loc": { "start": { - "line": 1851, + "line": 1898, "column": 35 }, "end": { - "line": 1851, + "line": 1898, "column": 36 } } @@ -265156,15 +270438,15 @@ "updateContext": null }, "value": "this", - "start": 65412, - "end": 65416, + "start": 66622, + "end": 66626, "loc": { "start": { - "line": 1852, + "line": 1899, "column": 8 }, "end": { - "line": 1852, + "line": 1899, "column": 12 } } @@ -265182,15 +270464,15 @@ "binop": null, "updateContext": null }, - "start": 65416, - "end": 65417, + "start": 66626, + "end": 66627, "loc": { "start": { - "line": 1852, + "line": 1899, "column": 12 }, "end": { - "line": 1852, + "line": 1899, "column": 13 } } @@ -265207,17 +270489,17 @@ "postfix": false, "binop": null }, - "value": "_visible", - "start": 65417, - "end": 65425, + "value": "_highlighted", + "start": 66627, + "end": 66639, "loc": { "start": { - "line": 1852, + "line": 1899, "column": 13 }, "end": { - "line": 1852, - "column": 21 + "line": 1899, + "column": 25 } } }, @@ -265235,16 +270517,16 @@ "updateContext": null }, "value": "=", - "start": 65426, - "end": 65427, + "start": 66640, + "end": 66641, "loc": { "start": { - "line": 1852, - "column": 22 + "line": 1899, + "column": 26 }, "end": { - "line": 1852, - "column": 23 + "line": 1899, + "column": 27 } } }, @@ -265260,17 +270542,17 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 65428, - "end": 65435, + "value": "highlighted", + "start": 66642, + "end": 66653, "loc": { "start": { - "line": 1852, - "column": 24 + "line": 1899, + "column": 28 }, "end": { - "line": 1852, - "column": 31 + "line": 1899, + "column": 39 } } }, @@ -265287,16 +270569,16 @@ "binop": null, "updateContext": null }, - "start": 65435, - "end": 65436, + "start": 66653, + "end": 66654, "loc": { "start": { - "line": 1852, - "column": 31 + "line": 1899, + "column": 39 }, "end": { - "line": 1852, - "column": 32 + "line": 1899, + "column": 40 } } }, @@ -265315,15 +270597,15 @@ "updateContext": null }, "value": "for", - "start": 65445, - "end": 65448, + "start": 66663, + "end": 66666, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 8 }, "end": { - "line": 1853, + "line": 1900, "column": 11 } } @@ -265340,15 +270622,15 @@ "postfix": false, "binop": null }, - "start": 65449, - "end": 65450, + "start": 66667, + "end": 66668, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 12 }, "end": { - "line": 1853, + "line": 1900, "column": 13 } } @@ -265368,15 +270650,15 @@ "updateContext": null }, "value": "let", - "start": 65450, - "end": 65453, + "start": 66668, + "end": 66671, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 13 }, "end": { - "line": 1853, + "line": 1900, "column": 16 } } @@ -265394,15 +270676,15 @@ "binop": null }, "value": "i", - "start": 65454, - "end": 65455, + "start": 66672, + "end": 66673, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 17 }, "end": { - "line": 1853, + "line": 1900, "column": 18 } } @@ -265421,15 +270703,15 @@ "updateContext": null }, "value": "=", - "start": 65456, - "end": 65457, + "start": 66674, + "end": 66675, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 19 }, "end": { - "line": 1853, + "line": 1900, "column": 20 } } @@ -265448,15 +270730,15 @@ "updateContext": null }, "value": 0, - "start": 65458, - "end": 65459, + "start": 66676, + "end": 66677, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 21 }, "end": { - "line": 1853, + "line": 1900, "column": 22 } } @@ -265474,15 +270756,15 @@ "binop": null, "updateContext": null }, - "start": 65459, - "end": 65460, + "start": 66677, + "end": 66678, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 22 }, "end": { - "line": 1853, + "line": 1900, "column": 23 } } @@ -265500,15 +270782,15 @@ "binop": null }, "value": "len", - "start": 65461, - "end": 65464, + "start": 66679, + "end": 66682, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 24 }, "end": { - "line": 1853, + "line": 1900, "column": 27 } } @@ -265527,15 +270809,15 @@ "updateContext": null }, "value": "=", - "start": 65465, - "end": 65466, + "start": 66683, + "end": 66684, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 28 }, "end": { - "line": 1853, + "line": 1900, "column": 29 } } @@ -265555,15 +270837,15 @@ "updateContext": null }, "value": "this", - "start": 65467, - "end": 65471, + "start": 66685, + "end": 66689, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 30 }, "end": { - "line": 1853, + "line": 1900, "column": 34 } } @@ -265581,15 +270863,15 @@ "binop": null, "updateContext": null }, - "start": 65471, - "end": 65472, + "start": 66689, + "end": 66690, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 34 }, "end": { - "line": 1853, + "line": 1900, "column": 35 } } @@ -265607,15 +270889,15 @@ "binop": null }, "value": "_entityList", - "start": 65472, - "end": 65483, + "start": 66690, + "end": 66701, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 35 }, "end": { - "line": 1853, + "line": 1900, "column": 46 } } @@ -265633,15 +270915,15 @@ "binop": null, "updateContext": null }, - "start": 65483, - "end": 65484, + "start": 66701, + "end": 66702, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 46 }, "end": { - "line": 1853, + "line": 1900, "column": 47 } } @@ -265659,15 +270941,15 @@ "binop": null }, "value": "length", - "start": 65484, - "end": 65490, + "start": 66702, + "end": 66708, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 47 }, "end": { - "line": 1853, + "line": 1900, "column": 53 } } @@ -265685,15 +270967,15 @@ "binop": null, "updateContext": null }, - "start": 65490, - "end": 65491, + "start": 66708, + "end": 66709, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 53 }, "end": { - "line": 1853, + "line": 1900, "column": 54 } } @@ -265711,15 +270993,15 @@ "binop": null }, "value": "i", - "start": 65492, - "end": 65493, + "start": 66710, + "end": 66711, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 55 }, "end": { - "line": 1853, + "line": 1900, "column": 56 } } @@ -265738,15 +271020,15 @@ "updateContext": null }, "value": "<", - "start": 65494, - "end": 65495, + "start": 66712, + "end": 66713, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 57 }, "end": { - "line": 1853, + "line": 1900, "column": 58 } } @@ -265764,15 +271046,15 @@ "binop": null }, "value": "len", - "start": 65496, - "end": 65499, + "start": 66714, + "end": 66717, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 59 }, "end": { - "line": 1853, + "line": 1900, "column": 62 } } @@ -265790,15 +271072,15 @@ "binop": null, "updateContext": null }, - "start": 65499, - "end": 65500, + "start": 66717, + "end": 66718, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 62 }, "end": { - "line": 1853, + "line": 1900, "column": 63 } } @@ -265816,15 +271098,15 @@ "binop": null }, "value": "i", - "start": 65501, - "end": 65502, + "start": 66719, + "end": 66720, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 64 }, "end": { - "line": 1853, + "line": 1900, "column": 65 } } @@ -265842,15 +271124,15 @@ "binop": null }, "value": "++", - "start": 65502, - "end": 65504, + "start": 66720, + "end": 66722, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 65 }, "end": { - "line": 1853, + "line": 1900, "column": 67 } } @@ -265867,15 +271149,15 @@ "postfix": false, "binop": null }, - "start": 65504, - "end": 65505, + "start": 66722, + "end": 66723, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 67 }, "end": { - "line": 1853, + "line": 1900, "column": 68 } } @@ -265892,15 +271174,15 @@ "postfix": false, "binop": null }, - "start": 65506, - "end": 65507, + "start": 66724, + "end": 66725, "loc": { "start": { - "line": 1853, + "line": 1900, "column": 69 }, "end": { - "line": 1853, + "line": 1900, "column": 70 } } @@ -265920,15 +271202,15 @@ "updateContext": null }, "value": "this", - "start": 65520, - "end": 65524, + "start": 66738, + "end": 66742, "loc": { "start": { - "line": 1854, + "line": 1901, "column": 12 }, "end": { - "line": 1854, + "line": 1901, "column": 16 } } @@ -265946,15 +271228,15 @@ "binop": null, "updateContext": null }, - "start": 65524, - "end": 65525, + "start": 66742, + "end": 66743, "loc": { "start": { - "line": 1854, + "line": 1901, "column": 16 }, "end": { - "line": 1854, + "line": 1901, "column": 17 } } @@ -265972,15 +271254,15 @@ "binop": null }, "value": "_entityList", - "start": 65525, - "end": 65536, + "start": 66743, + "end": 66754, "loc": { "start": { - "line": 1854, + "line": 1901, "column": 17 }, "end": { - "line": 1854, + "line": 1901, "column": 28 } } @@ -265998,15 +271280,15 @@ "binop": null, "updateContext": null }, - "start": 65536, - "end": 65537, + "start": 66754, + "end": 66755, "loc": { "start": { - "line": 1854, + "line": 1901, "column": 28 }, "end": { - "line": 1854, + "line": 1901, "column": 29 } } @@ -266024,15 +271306,15 @@ "binop": null }, "value": "i", - "start": 65537, - "end": 65538, + "start": 66755, + "end": 66756, "loc": { "start": { - "line": 1854, + "line": 1901, "column": 29 }, "end": { - "line": 1854, + "line": 1901, "column": 30 } } @@ -266050,15 +271332,15 @@ "binop": null, "updateContext": null }, - "start": 65538, - "end": 65539, + "start": 66756, + "end": 66757, "loc": { "start": { - "line": 1854, + "line": 1901, "column": 30 }, "end": { - "line": 1854, + "line": 1901, "column": 31 } } @@ -266076,15 +271358,15 @@ "binop": null, "updateContext": null }, - "start": 65539, - "end": 65540, + "start": 66757, + "end": 66758, "loc": { "start": { - "line": 1854, + "line": 1901, "column": 31 }, "end": { - "line": 1854, + "line": 1901, "column": 32 } } @@ -266101,17 +271383,17 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 65540, - "end": 65547, + "value": "highlighted", + "start": 66758, + "end": 66769, "loc": { "start": { - "line": 1854, + "line": 1901, "column": 32 }, "end": { - "line": 1854, - "column": 39 + "line": 1901, + "column": 43 } } }, @@ -266129,16 +271411,16 @@ "updateContext": null }, "value": "=", - "start": 65548, - "end": 65549, + "start": 66770, + "end": 66771, "loc": { "start": { - "line": 1854, - "column": 40 + "line": 1901, + "column": 44 }, "end": { - "line": 1854, - "column": 41 + "line": 1901, + "column": 45 } } }, @@ -266154,17 +271436,17 @@ "postfix": false, "binop": null }, - "value": "visible", - "start": 65550, - "end": 65557, + "value": "highlighted", + "start": 66772, + "end": 66783, "loc": { "start": { - "line": 1854, - "column": 42 + "line": 1901, + "column": 46 }, "end": { - "line": 1854, - "column": 49 + "line": 1901, + "column": 57 } } }, @@ -266181,16 +271463,16 @@ "binop": null, "updateContext": null }, - "start": 65557, - "end": 65558, + "start": 66783, + "end": 66784, "loc": { "start": { - "line": 1854, - "column": 49 + "line": 1901, + "column": 57 }, "end": { - "line": 1854, - "column": 50 + "line": 1901, + "column": 58 } } }, @@ -266206,15 +271488,15 @@ "postfix": false, "binop": null }, - "start": 65567, - "end": 65568, + "start": 66793, + "end": 66794, "loc": { "start": { - "line": 1855, + "line": 1902, "column": 8 }, "end": { - "line": 1855, + "line": 1902, "column": 9 } } @@ -266234,15 +271516,15 @@ "updateContext": null }, "value": "this", - "start": 65577, - "end": 65581, + "start": 66803, + "end": 66807, "loc": { "start": { - "line": 1856, + "line": 1903, "column": 8 }, "end": { - "line": 1856, + "line": 1903, "column": 12 } } @@ -266260,15 +271542,15 @@ "binop": null, "updateContext": null }, - "start": 65581, - "end": 65582, + "start": 66807, + "end": 66808, "loc": { "start": { - "line": 1856, + "line": 1903, "column": 12 }, "end": { - "line": 1856, + "line": 1903, "column": 13 } } @@ -266286,15 +271568,15 @@ "binop": null }, "value": "glRedraw", - "start": 65582, - "end": 65590, + "start": 66808, + "end": 66816, "loc": { "start": { - "line": 1856, + "line": 1903, "column": 13 }, "end": { - "line": 1856, + "line": 1903, "column": 21 } } @@ -266311,15 +271593,15 @@ "postfix": false, "binop": null }, - "start": 65590, - "end": 65591, + "start": 66816, + "end": 66817, "loc": { "start": { - "line": 1856, + "line": 1903, "column": 21 }, "end": { - "line": 1856, + "line": 1903, "column": 22 } } @@ -266336,15 +271618,15 @@ "postfix": false, "binop": null }, - "start": 65591, - "end": 65592, + "start": 66817, + "end": 66818, "loc": { "start": { - "line": 1856, + "line": 1903, "column": 22 }, "end": { - "line": 1856, + "line": 1903, "column": 23 } } @@ -266362,15 +271644,15 @@ "binop": null, "updateContext": null }, - "start": 65592, - "end": 65593, + "start": 66818, + "end": 66819, "loc": { "start": { - "line": 1856, + "line": 1903, "column": 23 }, "end": { - "line": 1856, + "line": 1903, "column": 24 } } @@ -266387,31 +271669,31 @@ "postfix": false, "binop": null }, - "start": 65598, - "end": 65599, + "start": 66824, + "end": 66825, "loc": { "start": { - "line": 1857, + "line": 1904, "column": 4 }, "end": { - "line": 1857, + "line": 1904, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", - "start": 65605, - "end": 65722, + "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", + "start": 66831, + "end": 66950, "loc": { "start": { - "line": 1859, + "line": 1906, "column": 4 }, "end": { - "line": 1863, + "line": 1910, "column": 7 } } @@ -266429,15 +271711,15 @@ "binop": null }, "value": "get", - "start": 65727, - "end": 65730, + "start": 66955, + "end": 66958, "loc": { "start": { - "line": 1864, + "line": 1911, "column": 4 }, "end": { - "line": 1864, + "line": 1911, "column": 7 } } @@ -266454,17 +271736,17 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 65731, - "end": 65737, + "value": "selected", + "start": 66959, + "end": 66967, "loc": { "start": { - "line": 1864, + "line": 1911, "column": 8 }, "end": { - "line": 1864, - "column": 14 + "line": 1911, + "column": 16 } } }, @@ -266480,16 +271762,16 @@ "postfix": false, "binop": null }, - "start": 65737, - "end": 65738, + "start": 66967, + "end": 66968, "loc": { "start": { - "line": 1864, - "column": 14 + "line": 1911, + "column": 16 }, "end": { - "line": 1864, - "column": 15 + "line": 1911, + "column": 17 } } }, @@ -266505,16 +271787,16 @@ "postfix": false, "binop": null }, - "start": 65738, - "end": 65739, + "start": 66968, + "end": 66969, "loc": { "start": { - "line": 1864, - "column": 15 + "line": 1911, + "column": 17 }, "end": { - "line": 1864, - "column": 16 + "line": 1911, + "column": 18 } } }, @@ -266530,16 +271812,16 @@ "postfix": false, "binop": null }, - "start": 65740, - "end": 65741, + "start": 66970, + "end": 66971, "loc": { "start": { - "line": 1864, - "column": 17 + "line": 1911, + "column": 19 }, "end": { - "line": 1864, - "column": 18 + "line": 1911, + "column": 20 } } }, @@ -266558,15 +271840,15 @@ "updateContext": null }, "value": "return", - "start": 65750, - "end": 65756, + "start": 66980, + "end": 66986, "loc": { "start": { - "line": 1865, + "line": 1912, "column": 8 }, "end": { - "line": 1865, + "line": 1912, "column": 14 } } @@ -266583,15 +271865,15 @@ "postfix": false, "binop": null }, - "start": 65757, - "end": 65758, + "start": 66987, + "end": 66988, "loc": { "start": { - "line": 1865, + "line": 1912, "column": 15 }, "end": { - "line": 1865, + "line": 1912, "column": 16 } } @@ -266611,15 +271893,15 @@ "updateContext": null }, "value": "this", - "start": 65758, - "end": 65762, + "start": 66988, + "end": 66992, "loc": { "start": { - "line": 1865, + "line": 1912, "column": 16 }, "end": { - "line": 1865, + "line": 1912, "column": 20 } } @@ -266637,15 +271919,15 @@ "binop": null, "updateContext": null }, - "start": 65762, - "end": 65763, + "start": 66992, + "end": 66993, "loc": { "start": { - "line": 1865, + "line": 1912, "column": 20 }, "end": { - "line": 1865, + "line": 1912, "column": 21 } } @@ -266662,17 +271944,17 @@ "postfix": false, "binop": null }, - "value": "numXRayedLayerPortions", - "start": 65763, - "end": 65785, + "value": "numSelectedLayerPortions", + "start": 66993, + "end": 67017, "loc": { "start": { - "line": 1865, + "line": 1912, "column": 21 }, "end": { - "line": 1865, - "column": 43 + "line": 1912, + "column": 45 } } }, @@ -266690,16 +271972,16 @@ "updateContext": null }, "value": ">", - "start": 65786, - "end": 65787, + "start": 67018, + "end": 67019, "loc": { "start": { - "line": 1865, - "column": 44 + "line": 1912, + "column": 46 }, "end": { - "line": 1865, - "column": 45 + "line": 1912, + "column": 47 } } }, @@ -266717,16 +271999,16 @@ "updateContext": null }, "value": 0, - "start": 65788, - "end": 65789, + "start": 67020, + "end": 67021, "loc": { "start": { - "line": 1865, - "column": 46 + "line": 1912, + "column": 48 }, "end": { - "line": 1865, - "column": 47 + "line": 1912, + "column": 49 } } }, @@ -266742,16 +272024,16 @@ "postfix": false, "binop": null }, - "start": 65789, - "end": 65790, + "start": 67021, + "end": 67022, "loc": { "start": { - "line": 1865, - "column": 47 + "line": 1912, + "column": 49 }, "end": { - "line": 1865, - "column": 48 + "line": 1912, + "column": 50 } } }, @@ -266768,16 +272050,16 @@ "binop": null, "updateContext": null }, - "start": 65790, - "end": 65791, + "start": 67022, + "end": 67023, "loc": { "start": { - "line": 1865, - "column": 48 + "line": 1912, + "column": 50 }, "end": { - "line": 1865, - "column": 49 + "line": 1912, + "column": 51 } } }, @@ -266793,31 +272075,31 @@ "postfix": false, "binop": null }, - "start": 65796, - "end": 65797, + "start": 67028, + "end": 67029, "loc": { "start": { - "line": 1866, + "line": 1913, "column": 4 }, "end": { - "line": 1866, + "line": 1913, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n ", - "start": 65803, - "end": 65920, + "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", + "start": 67035, + "end": 67154, "loc": { "start": { - "line": 1868, + "line": 1915, "column": 4 }, "end": { - "line": 1872, + "line": 1919, "column": 7 } } @@ -266835,15 +272117,15 @@ "binop": null }, "value": "set", - "start": 65925, - "end": 65928, + "start": 67159, + "end": 67162, "loc": { "start": { - "line": 1873, + "line": 1920, "column": 4 }, "end": { - "line": 1873, + "line": 1920, "column": 7 } } @@ -266860,17 +272142,17 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 65929, - "end": 65935, + "value": "selected", + "start": 67163, + "end": 67171, "loc": { "start": { - "line": 1873, + "line": 1920, "column": 8 }, "end": { - "line": 1873, - "column": 14 + "line": 1920, + "column": 16 } } }, @@ -266886,16 +272168,16 @@ "postfix": false, "binop": null }, - "start": 65935, - "end": 65936, + "start": 67171, + "end": 67172, "loc": { "start": { - "line": 1873, - "column": 14 + "line": 1920, + "column": 16 }, "end": { - "line": 1873, - "column": 15 + "line": 1920, + "column": 17 } } }, @@ -266911,17 +272193,17 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 65936, - "end": 65942, + "value": "selected", + "start": 67172, + "end": 67180, "loc": { "start": { - "line": 1873, - "column": 15 + "line": 1920, + "column": 17 }, "end": { - "line": 1873, - "column": 21 + "line": 1920, + "column": 25 } } }, @@ -266937,16 +272219,16 @@ "postfix": false, "binop": null }, - "start": 65942, - "end": 65943, + "start": 67180, + "end": 67181, "loc": { "start": { - "line": 1873, - "column": 21 + "line": 1920, + "column": 25 }, "end": { - "line": 1873, - "column": 22 + "line": 1920, + "column": 26 } } }, @@ -266962,16 +272244,16 @@ "postfix": false, "binop": null }, - "start": 65944, - "end": 65945, + "start": 67182, + "end": 67183, "loc": { "start": { - "line": 1873, - "column": 23 + "line": 1920, + "column": 27 }, "end": { - "line": 1873, - "column": 24 + "line": 1920, + "column": 28 } } }, @@ -266987,17 +272269,17 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 65954, - "end": 65960, + "value": "selected", + "start": 67192, + "end": 67200, "loc": { "start": { - "line": 1874, + "line": 1921, "column": 8 }, "end": { - "line": 1874, - "column": 14 + "line": 1921, + "column": 16 } } }, @@ -267015,16 +272297,16 @@ "updateContext": null }, "value": "=", - "start": 65961, - "end": 65962, + "start": 67201, + "end": 67202, "loc": { "start": { - "line": 1874, - "column": 15 + "line": 1921, + "column": 17 }, "end": { - "line": 1874, - "column": 16 + "line": 1921, + "column": 18 } } }, @@ -267042,16 +272324,16 @@ "updateContext": null }, "value": "!", - "start": 65963, - "end": 65964, + "start": 67203, + "end": 67204, "loc": { "start": { - "line": 1874, - "column": 17 + "line": 1921, + "column": 19 }, "end": { - "line": 1874, - "column": 18 + "line": 1921, + "column": 20 } } }, @@ -267069,16 +272351,16 @@ "updateContext": null }, "value": "!", - "start": 65964, - "end": 65965, + "start": 67204, + "end": 67205, "loc": { "start": { - "line": 1874, - "column": 18 + "line": 1921, + "column": 20 }, "end": { - "line": 1874, - "column": 19 + "line": 1921, + "column": 21 } } }, @@ -267094,17 +272376,17 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 65965, - "end": 65971, + "value": "selected", + "start": 67205, + "end": 67213, "loc": { "start": { - "line": 1874, - "column": 19 + "line": 1921, + "column": 21 }, "end": { - "line": 1874, - "column": 25 + "line": 1921, + "column": 29 } } }, @@ -267121,16 +272403,16 @@ "binop": null, "updateContext": null }, - "start": 65971, - "end": 65972, + "start": 67213, + "end": 67214, "loc": { "start": { - "line": 1874, - "column": 25 + "line": 1921, + "column": 29 }, "end": { - "line": 1874, - "column": 26 + "line": 1921, + "column": 30 } } }, @@ -267149,15 +272431,15 @@ "updateContext": null }, "value": "this", - "start": 65981, - "end": 65985, + "start": 67223, + "end": 67227, "loc": { "start": { - "line": 1875, + "line": 1922, "column": 8 }, "end": { - "line": 1875, + "line": 1922, "column": 12 } } @@ -267175,15 +272457,15 @@ "binop": null, "updateContext": null }, - "start": 65985, - "end": 65986, + "start": 67227, + "end": 67228, "loc": { "start": { - "line": 1875, + "line": 1922, "column": 12 }, "end": { - "line": 1875, + "line": 1922, "column": 13 } } @@ -267200,17 +272482,17 @@ "postfix": false, "binop": null }, - "value": "_xrayed", - "start": 65986, - "end": 65993, + "value": "_selected", + "start": 67228, + "end": 67237, "loc": { "start": { - "line": 1875, + "line": 1922, "column": 13 }, "end": { - "line": 1875, - "column": 20 + "line": 1922, + "column": 22 } } }, @@ -267228,16 +272510,16 @@ "updateContext": null }, "value": "=", - "start": 65994, - "end": 65995, + "start": 67238, + "end": 67239, "loc": { "start": { - "line": 1875, - "column": 21 + "line": 1922, + "column": 23 }, "end": { - "line": 1875, - "column": 22 + "line": 1922, + "column": 24 } } }, @@ -267253,17 +272535,17 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 65996, - "end": 66002, + "value": "selected", + "start": 67240, + "end": 67248, "loc": { "start": { - "line": 1875, - "column": 23 + "line": 1922, + "column": 25 }, "end": { - "line": 1875, - "column": 29 + "line": 1922, + "column": 33 } } }, @@ -267280,16 +272562,16 @@ "binop": null, "updateContext": null }, - "start": 66002, - "end": 66003, + "start": 67248, + "end": 67249, "loc": { "start": { - "line": 1875, - "column": 29 + "line": 1922, + "column": 33 }, "end": { - "line": 1875, - "column": 30 + "line": 1922, + "column": 34 } } }, @@ -267308,15 +272590,15 @@ "updateContext": null }, "value": "for", - "start": 66012, - "end": 66015, + "start": 67258, + "end": 67261, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 8 }, "end": { - "line": 1876, + "line": 1923, "column": 11 } } @@ -267333,15 +272615,15 @@ "postfix": false, "binop": null }, - "start": 66016, - "end": 66017, + "start": 67262, + "end": 67263, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 12 }, "end": { - "line": 1876, + "line": 1923, "column": 13 } } @@ -267361,15 +272643,15 @@ "updateContext": null }, "value": "let", - "start": 66017, - "end": 66020, + "start": 67263, + "end": 67266, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 13 }, "end": { - "line": 1876, + "line": 1923, "column": 16 } } @@ -267387,15 +272669,15 @@ "binop": null }, "value": "i", - "start": 66021, - "end": 66022, + "start": 67267, + "end": 67268, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 17 }, "end": { - "line": 1876, + "line": 1923, "column": 18 } } @@ -267414,15 +272696,15 @@ "updateContext": null }, "value": "=", - "start": 66023, - "end": 66024, + "start": 67269, + "end": 67270, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 19 }, "end": { - "line": 1876, + "line": 1923, "column": 20 } } @@ -267441,15 +272723,15 @@ "updateContext": null }, "value": 0, - "start": 66025, - "end": 66026, + "start": 67271, + "end": 67272, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 21 }, "end": { - "line": 1876, + "line": 1923, "column": 22 } } @@ -267467,15 +272749,15 @@ "binop": null, "updateContext": null }, - "start": 66026, - "end": 66027, + "start": 67272, + "end": 67273, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 22 }, "end": { - "line": 1876, + "line": 1923, "column": 23 } } @@ -267493,15 +272775,15 @@ "binop": null }, "value": "len", - "start": 66028, - "end": 66031, + "start": 67274, + "end": 67277, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 24 }, "end": { - "line": 1876, + "line": 1923, "column": 27 } } @@ -267520,15 +272802,15 @@ "updateContext": null }, "value": "=", - "start": 66032, - "end": 66033, + "start": 67278, + "end": 67279, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 28 }, "end": { - "line": 1876, + "line": 1923, "column": 29 } } @@ -267548,15 +272830,15 @@ "updateContext": null }, "value": "this", - "start": 66034, - "end": 66038, + "start": 67280, + "end": 67284, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 30 }, "end": { - "line": 1876, + "line": 1923, "column": 34 } } @@ -267574,15 +272856,15 @@ "binop": null, "updateContext": null }, - "start": 66038, - "end": 66039, + "start": 67284, + "end": 67285, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 34 }, "end": { - "line": 1876, + "line": 1923, "column": 35 } } @@ -267600,15 +272882,15 @@ "binop": null }, "value": "_entityList", - "start": 66039, - "end": 66050, + "start": 67285, + "end": 67296, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 35 }, "end": { - "line": 1876, + "line": 1923, "column": 46 } } @@ -267626,15 +272908,15 @@ "binop": null, "updateContext": null }, - "start": 66050, - "end": 66051, + "start": 67296, + "end": 67297, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 46 }, "end": { - "line": 1876, + "line": 1923, "column": 47 } } @@ -267652,15 +272934,15 @@ "binop": null }, "value": "length", - "start": 66051, - "end": 66057, + "start": 67297, + "end": 67303, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 47 }, "end": { - "line": 1876, + "line": 1923, "column": 53 } } @@ -267678,15 +272960,15 @@ "binop": null, "updateContext": null }, - "start": 66057, - "end": 66058, + "start": 67303, + "end": 67304, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 53 }, "end": { - "line": 1876, + "line": 1923, "column": 54 } } @@ -267704,15 +272986,15 @@ "binop": null }, "value": "i", - "start": 66059, - "end": 66060, + "start": 67305, + "end": 67306, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 55 }, "end": { - "line": 1876, + "line": 1923, "column": 56 } } @@ -267731,15 +273013,15 @@ "updateContext": null }, "value": "<", - "start": 66061, - "end": 66062, + "start": 67307, + "end": 67308, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 57 }, "end": { - "line": 1876, + "line": 1923, "column": 58 } } @@ -267757,15 +273039,15 @@ "binop": null }, "value": "len", - "start": 66063, - "end": 66066, + "start": 67309, + "end": 67312, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 59 }, "end": { - "line": 1876, + "line": 1923, "column": 62 } } @@ -267783,15 +273065,15 @@ "binop": null, "updateContext": null }, - "start": 66066, - "end": 66067, + "start": 67312, + "end": 67313, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 62 }, "end": { - "line": 1876, + "line": 1923, "column": 63 } } @@ -267809,15 +273091,15 @@ "binop": null }, "value": "i", - "start": 66068, - "end": 66069, + "start": 67314, + "end": 67315, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 64 }, "end": { - "line": 1876, + "line": 1923, "column": 65 } } @@ -267835,15 +273117,15 @@ "binop": null }, "value": "++", - "start": 66069, - "end": 66071, + "start": 67315, + "end": 67317, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 65 }, "end": { - "line": 1876, + "line": 1923, "column": 67 } } @@ -267860,15 +273142,15 @@ "postfix": false, "binop": null }, - "start": 66071, - "end": 66072, + "start": 67317, + "end": 67318, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 67 }, "end": { - "line": 1876, + "line": 1923, "column": 68 } } @@ -267885,15 +273167,15 @@ "postfix": false, "binop": null }, - "start": 66073, - "end": 66074, + "start": 67319, + "end": 67320, "loc": { "start": { - "line": 1876, + "line": 1923, "column": 69 }, "end": { - "line": 1876, + "line": 1923, "column": 70 } } @@ -267913,15 +273195,15 @@ "updateContext": null }, "value": "this", - "start": 66087, - "end": 66091, + "start": 67333, + "end": 67337, "loc": { "start": { - "line": 1877, + "line": 1924, "column": 12 }, "end": { - "line": 1877, + "line": 1924, "column": 16 } } @@ -267939,15 +273221,15 @@ "binop": null, "updateContext": null }, - "start": 66091, - "end": 66092, + "start": 67337, + "end": 67338, "loc": { "start": { - "line": 1877, + "line": 1924, "column": 16 }, "end": { - "line": 1877, + "line": 1924, "column": 17 } } @@ -267965,15 +273247,15 @@ "binop": null }, "value": "_entityList", - "start": 66092, - "end": 66103, + "start": 67338, + "end": 67349, "loc": { "start": { - "line": 1877, + "line": 1924, "column": 17 }, "end": { - "line": 1877, + "line": 1924, "column": 28 } } @@ -267991,15 +273273,15 @@ "binop": null, "updateContext": null }, - "start": 66103, - "end": 66104, + "start": 67349, + "end": 67350, "loc": { "start": { - "line": 1877, + "line": 1924, "column": 28 }, "end": { - "line": 1877, + "line": 1924, "column": 29 } } @@ -268017,15 +273299,15 @@ "binop": null }, "value": "i", - "start": 66104, - "end": 66105, + "start": 67350, + "end": 67351, "loc": { "start": { - "line": 1877, + "line": 1924, "column": 29 }, "end": { - "line": 1877, + "line": 1924, "column": 30 } } @@ -268043,15 +273325,15 @@ "binop": null, "updateContext": null }, - "start": 66105, - "end": 66106, + "start": 67351, + "end": 67352, "loc": { "start": { - "line": 1877, + "line": 1924, "column": 30 }, "end": { - "line": 1877, + "line": 1924, "column": 31 } } @@ -268069,15 +273351,15 @@ "binop": null, "updateContext": null }, - "start": 66106, - "end": 66107, + "start": 67352, + "end": 67353, "loc": { "start": { - "line": 1877, + "line": 1924, "column": 31 }, "end": { - "line": 1877, + "line": 1924, "column": 32 } } @@ -268094,17 +273376,17 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 66107, - "end": 66113, + "value": "selected", + "start": 67353, + "end": 67361, "loc": { "start": { - "line": 1877, + "line": 1924, "column": 32 }, "end": { - "line": 1877, - "column": 38 + "line": 1924, + "column": 40 } } }, @@ -268122,16 +273404,16 @@ "updateContext": null }, "value": "=", - "start": 66114, - "end": 66115, + "start": 67362, + "end": 67363, "loc": { "start": { - "line": 1877, - "column": 39 + "line": 1924, + "column": 41 }, "end": { - "line": 1877, - "column": 40 + "line": 1924, + "column": 42 } } }, @@ -268147,17 +273429,17 @@ "postfix": false, "binop": null }, - "value": "xrayed", - "start": 66116, - "end": 66122, + "value": "selected", + "start": 67364, + "end": 67372, "loc": { "start": { - "line": 1877, - "column": 41 + "line": 1924, + "column": 43 }, "end": { - "line": 1877, - "column": 47 + "line": 1924, + "column": 51 } } }, @@ -268174,16 +273456,16 @@ "binop": null, "updateContext": null }, - "start": 66122, - "end": 66123, + "start": 67372, + "end": 67373, "loc": { "start": { - "line": 1877, - "column": 47 + "line": 1924, + "column": 51 }, "end": { - "line": 1877, - "column": 48 + "line": 1924, + "column": 52 } } }, @@ -268199,15 +273481,15 @@ "postfix": false, "binop": null }, - "start": 66132, - "end": 66133, + "start": 67382, + "end": 67383, "loc": { "start": { - "line": 1878, + "line": 1925, "column": 8 }, "end": { - "line": 1878, + "line": 1925, "column": 9 } } @@ -268227,15 +273509,15 @@ "updateContext": null }, "value": "this", - "start": 66142, - "end": 66146, + "start": 67392, + "end": 67396, "loc": { "start": { - "line": 1879, + "line": 1926, "column": 8 }, "end": { - "line": 1879, + "line": 1926, "column": 12 } } @@ -268253,15 +273535,15 @@ "binop": null, "updateContext": null }, - "start": 66146, - "end": 66147, + "start": 67396, + "end": 67397, "loc": { "start": { - "line": 1879, + "line": 1926, "column": 12 }, "end": { - "line": 1879, + "line": 1926, "column": 13 } } @@ -268279,15 +273561,15 @@ "binop": null }, "value": "glRedraw", - "start": 66147, - "end": 66155, + "start": 67397, + "end": 67405, "loc": { "start": { - "line": 1879, + "line": 1926, "column": 13 }, "end": { - "line": 1879, + "line": 1926, "column": 21 } } @@ -268304,15 +273586,15 @@ "postfix": false, "binop": null }, - "start": 66155, - "end": 66156, + "start": 67405, + "end": 67406, "loc": { "start": { - "line": 1879, + "line": 1926, "column": 21 }, "end": { - "line": 1879, + "line": 1926, "column": 22 } } @@ -268329,15 +273611,15 @@ "postfix": false, "binop": null }, - "start": 66156, - "end": 66157, + "start": 67406, + "end": 67407, "loc": { "start": { - "line": 1879, + "line": 1926, "column": 22 }, "end": { - "line": 1879, + "line": 1926, "column": 23 } } @@ -268355,15 +273637,15 @@ "binop": null, "updateContext": null }, - "start": 66157, - "end": 66158, + "start": 67407, + "end": 67408, "loc": { "start": { - "line": 1879, + "line": 1926, "column": 23 }, "end": { - "line": 1879, + "line": 1926, "column": 24 } } @@ -268380,31 +273662,31 @@ "postfix": false, "binop": null }, - "start": 66163, - "end": 66164, + "start": 67413, + "end": 67414, "loc": { "start": { - "line": 1880, + "line": 1927, "column": 4 }, "end": { - "line": 1880, + "line": 1927, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", - "start": 66170, - "end": 66292, + "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", + "start": 67420, + "end": 67548, "loc": { "start": { - "line": 1882, + "line": 1929, "column": 4 }, "end": { - "line": 1886, + "line": 1933, "column": 7 } } @@ -268422,15 +273704,15 @@ "binop": null }, "value": "get", - "start": 66297, - "end": 66300, + "start": 67553, + "end": 67556, "loc": { "start": { - "line": 1887, + "line": 1934, "column": 4 }, "end": { - "line": 1887, + "line": 1934, "column": 7 } } @@ -268447,17 +273729,17 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 66301, - "end": 66312, + "value": "edges", + "start": 67557, + "end": 67562, "loc": { "start": { - "line": 1887, + "line": 1934, "column": 8 }, "end": { - "line": 1887, - "column": 19 + "line": 1934, + "column": 13 } } }, @@ -268473,16 +273755,16 @@ "postfix": false, "binop": null }, - "start": 66312, - "end": 66313, + "start": 67562, + "end": 67563, "loc": { "start": { - "line": 1887, - "column": 19 + "line": 1934, + "column": 13 }, "end": { - "line": 1887, - "column": 20 + "line": 1934, + "column": 14 } } }, @@ -268498,16 +273780,16 @@ "postfix": false, "binop": null }, - "start": 66313, - "end": 66314, + "start": 67563, + "end": 67564, "loc": { "start": { - "line": 1887, - "column": 20 + "line": 1934, + "column": 14 }, "end": { - "line": 1887, - "column": 21 + "line": 1934, + "column": 15 } } }, @@ -268523,16 +273805,16 @@ "postfix": false, "binop": null }, - "start": 66315, - "end": 66316, + "start": 67565, + "end": 67566, "loc": { "start": { - "line": 1887, - "column": 22 + "line": 1934, + "column": 16 }, "end": { - "line": 1887, - "column": 23 + "line": 1934, + "column": 17 } } }, @@ -268551,15 +273833,15 @@ "updateContext": null }, "value": "return", - "start": 66325, - "end": 66331, + "start": 67575, + "end": 67581, "loc": { "start": { - "line": 1888, + "line": 1935, "column": 8 }, "end": { - "line": 1888, + "line": 1935, "column": 14 } } @@ -268576,15 +273858,15 @@ "postfix": false, "binop": null }, - "start": 66332, - "end": 66333, + "start": 67582, + "end": 67583, "loc": { "start": { - "line": 1888, + "line": 1935, "column": 15 }, "end": { - "line": 1888, + "line": 1935, "column": 16 } } @@ -268604,15 +273886,15 @@ "updateContext": null }, "value": "this", - "start": 66333, - "end": 66337, + "start": 67583, + "end": 67587, "loc": { "start": { - "line": 1888, + "line": 1935, "column": 16 }, "end": { - "line": 1888, + "line": 1935, "column": 20 } } @@ -268630,15 +273912,15 @@ "binop": null, "updateContext": null }, - "start": 66337, - "end": 66338, + "start": 67587, + "end": 67588, "loc": { "start": { - "line": 1888, + "line": 1935, "column": 20 }, "end": { - "line": 1888, + "line": 1935, "column": 21 } } @@ -268655,17 +273937,17 @@ "postfix": false, "binop": null }, - "value": "numHighlightedLayerPortions", - "start": 66338, - "end": 66365, + "value": "numEdgesLayerPortions", + "start": 67588, + "end": 67609, "loc": { "start": { - "line": 1888, + "line": 1935, "column": 21 }, "end": { - "line": 1888, - "column": 48 + "line": 1935, + "column": 42 } } }, @@ -268683,16 +273965,16 @@ "updateContext": null }, "value": ">", - "start": 66366, - "end": 66367, + "start": 67610, + "end": 67611, "loc": { "start": { - "line": 1888, - "column": 49 + "line": 1935, + "column": 43 }, "end": { - "line": 1888, - "column": 50 + "line": 1935, + "column": 44 } } }, @@ -268710,16 +273992,16 @@ "updateContext": null }, "value": 0, - "start": 66368, - "end": 66369, + "start": 67612, + "end": 67613, "loc": { "start": { - "line": 1888, - "column": 51 + "line": 1935, + "column": 45 }, "end": { - "line": 1888, - "column": 52 + "line": 1935, + "column": 46 } } }, @@ -268735,16 +274017,16 @@ "postfix": false, "binop": null }, - "start": 66369, - "end": 66370, + "start": 67613, + "end": 67614, "loc": { "start": { - "line": 1888, - "column": 52 + "line": 1935, + "column": 46 }, "end": { - "line": 1888, - "column": 53 + "line": 1935, + "column": 47 } } }, @@ -268761,16 +274043,16 @@ "binop": null, "updateContext": null }, - "start": 66370, - "end": 66371, + "start": 67614, + "end": 67615, "loc": { "start": { - "line": 1888, - "column": 53 + "line": 1935, + "column": 47 }, "end": { - "line": 1888, - "column": 54 + "line": 1935, + "column": 48 } } }, @@ -268786,31 +274068,31 @@ "postfix": false, "binop": null }, - "start": 66376, - "end": 66377, + "start": 67620, + "end": 67621, "loc": { "start": { - "line": 1889, + "line": 1936, "column": 4 }, "end": { - "line": 1889, + "line": 1936, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n ", - "start": 66383, - "end": 66505, + "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", + "start": 67627, + "end": 67755, "loc": { "start": { - "line": 1891, + "line": 1938, "column": 4 }, "end": { - "line": 1895, + "line": 1942, "column": 7 } } @@ -268828,15 +274110,15 @@ "binop": null }, "value": "set", - "start": 66510, - "end": 66513, + "start": 67760, + "end": 67763, "loc": { "start": { - "line": 1896, + "line": 1943, "column": 4 }, "end": { - "line": 1896, + "line": 1943, "column": 7 } } @@ -268853,17 +274135,17 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 66514, - "end": 66525, + "value": "edges", + "start": 67764, + "end": 67769, "loc": { "start": { - "line": 1896, + "line": 1943, "column": 8 }, "end": { - "line": 1896, - "column": 19 + "line": 1943, + "column": 13 } } }, @@ -268879,16 +274161,16 @@ "postfix": false, "binop": null }, - "start": 66525, - "end": 66526, + "start": 67769, + "end": 67770, "loc": { "start": { - "line": 1896, - "column": 19 + "line": 1943, + "column": 13 }, "end": { - "line": 1896, - "column": 20 + "line": 1943, + "column": 14 } } }, @@ -268904,17 +274186,17 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 66526, - "end": 66537, + "value": "edges", + "start": 67770, + "end": 67775, "loc": { "start": { - "line": 1896, - "column": 20 + "line": 1943, + "column": 14 }, "end": { - "line": 1896, - "column": 31 + "line": 1943, + "column": 19 } } }, @@ -268930,16 +274212,16 @@ "postfix": false, "binop": null }, - "start": 66537, - "end": 66538, + "start": 67775, + "end": 67776, "loc": { "start": { - "line": 1896, - "column": 31 + "line": 1943, + "column": 19 }, "end": { - "line": 1896, - "column": 32 + "line": 1943, + "column": 20 } } }, @@ -268955,16 +274237,16 @@ "postfix": false, "binop": null }, - "start": 66539, - "end": 66540, + "start": 67777, + "end": 67778, "loc": { "start": { - "line": 1896, - "column": 33 + "line": 1943, + "column": 21 }, "end": { - "line": 1896, - "column": 34 + "line": 1943, + "column": 22 } } }, @@ -268980,17 +274262,17 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 66549, - "end": 66560, + "value": "edges", + "start": 67787, + "end": 67792, "loc": { "start": { - "line": 1897, + "line": 1944, "column": 8 }, "end": { - "line": 1897, - "column": 19 + "line": 1944, + "column": 13 } } }, @@ -269008,16 +274290,16 @@ "updateContext": null }, "value": "=", - "start": 66561, - "end": 66562, + "start": 67793, + "end": 67794, "loc": { "start": { - "line": 1897, - "column": 20 + "line": 1944, + "column": 14 }, "end": { - "line": 1897, - "column": 21 + "line": 1944, + "column": 15 } } }, @@ -269035,16 +274317,16 @@ "updateContext": null }, "value": "!", - "start": 66563, - "end": 66564, + "start": 67795, + "end": 67796, "loc": { "start": { - "line": 1897, - "column": 22 + "line": 1944, + "column": 16 }, "end": { - "line": 1897, - "column": 23 + "line": 1944, + "column": 17 } } }, @@ -269062,16 +274344,16 @@ "updateContext": null }, "value": "!", - "start": 66564, - "end": 66565, + "start": 67796, + "end": 67797, "loc": { "start": { - "line": 1897, - "column": 23 + "line": 1944, + "column": 17 }, "end": { - "line": 1897, - "column": 24 + "line": 1944, + "column": 18 } } }, @@ -269087,17 +274369,17 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 66565, - "end": 66576, + "value": "edges", + "start": 67797, + "end": 67802, "loc": { "start": { - "line": 1897, - "column": 24 + "line": 1944, + "column": 18 }, "end": { - "line": 1897, - "column": 35 + "line": 1944, + "column": 23 } } }, @@ -269114,16 +274396,16 @@ "binop": null, "updateContext": null }, - "start": 66576, - "end": 66577, + "start": 67802, + "end": 67803, "loc": { "start": { - "line": 1897, - "column": 35 + "line": 1944, + "column": 23 }, "end": { - "line": 1897, - "column": 36 + "line": 1944, + "column": 24 } } }, @@ -269142,15 +274424,15 @@ "updateContext": null }, "value": "this", - "start": 66586, - "end": 66590, + "start": 67812, + "end": 67816, "loc": { "start": { - "line": 1898, + "line": 1945, "column": 8 }, "end": { - "line": 1898, + "line": 1945, "column": 12 } } @@ -269168,15 +274450,15 @@ "binop": null, "updateContext": null }, - "start": 66590, - "end": 66591, + "start": 67816, + "end": 67817, "loc": { "start": { - "line": 1898, + "line": 1945, "column": 12 }, "end": { - "line": 1898, + "line": 1945, "column": 13 } } @@ -269193,17 +274475,17 @@ "postfix": false, "binop": null }, - "value": "_highlighted", - "start": 66591, - "end": 66603, + "value": "_edges", + "start": 67817, + "end": 67823, "loc": { "start": { - "line": 1898, + "line": 1945, "column": 13 }, "end": { - "line": 1898, - "column": 25 + "line": 1945, + "column": 19 } } }, @@ -269221,16 +274503,16 @@ "updateContext": null }, "value": "=", - "start": 66604, - "end": 66605, + "start": 67824, + "end": 67825, "loc": { "start": { - "line": 1898, - "column": 26 + "line": 1945, + "column": 20 }, "end": { - "line": 1898, - "column": 27 + "line": 1945, + "column": 21 } } }, @@ -269246,17 +274528,17 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 66606, - "end": 66617, + "value": "edges", + "start": 67826, + "end": 67831, "loc": { "start": { - "line": 1898, - "column": 28 + "line": 1945, + "column": 22 }, "end": { - "line": 1898, - "column": 39 + "line": 1945, + "column": 27 } } }, @@ -269273,16 +274555,16 @@ "binop": null, "updateContext": null }, - "start": 66617, - "end": 66618, + "start": 67831, + "end": 67832, "loc": { "start": { - "line": 1898, - "column": 39 + "line": 1945, + "column": 27 }, "end": { - "line": 1898, - "column": 40 + "line": 1945, + "column": 28 } } }, @@ -269301,15 +274583,15 @@ "updateContext": null }, "value": "for", - "start": 66627, - "end": 66630, + "start": 67841, + "end": 67844, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 8 }, "end": { - "line": 1899, + "line": 1946, "column": 11 } } @@ -269326,15 +274608,15 @@ "postfix": false, "binop": null }, - "start": 66631, - "end": 66632, + "start": 67845, + "end": 67846, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 12 }, "end": { - "line": 1899, + "line": 1946, "column": 13 } } @@ -269354,15 +274636,15 @@ "updateContext": null }, "value": "let", - "start": 66632, - "end": 66635, + "start": 67846, + "end": 67849, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 13 }, "end": { - "line": 1899, + "line": 1946, "column": 16 } } @@ -269380,15 +274662,15 @@ "binop": null }, "value": "i", - "start": 66636, - "end": 66637, + "start": 67850, + "end": 67851, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 17 }, "end": { - "line": 1899, + "line": 1946, "column": 18 } } @@ -269407,15 +274689,15 @@ "updateContext": null }, "value": "=", - "start": 66638, - "end": 66639, + "start": 67852, + "end": 67853, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 19 }, "end": { - "line": 1899, + "line": 1946, "column": 20 } } @@ -269434,15 +274716,15 @@ "updateContext": null }, "value": 0, - "start": 66640, - "end": 66641, + "start": 67854, + "end": 67855, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 21 }, "end": { - "line": 1899, + "line": 1946, "column": 22 } } @@ -269460,15 +274742,15 @@ "binop": null, "updateContext": null }, - "start": 66641, - "end": 66642, + "start": 67855, + "end": 67856, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 22 }, "end": { - "line": 1899, + "line": 1946, "column": 23 } } @@ -269486,15 +274768,15 @@ "binop": null }, "value": "len", - "start": 66643, - "end": 66646, + "start": 67857, + "end": 67860, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 24 }, "end": { - "line": 1899, + "line": 1946, "column": 27 } } @@ -269513,15 +274795,15 @@ "updateContext": null }, "value": "=", - "start": 66647, - "end": 66648, + "start": 67861, + "end": 67862, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 28 }, "end": { - "line": 1899, + "line": 1946, "column": 29 } } @@ -269541,15 +274823,15 @@ "updateContext": null }, "value": "this", - "start": 66649, - "end": 66653, + "start": 67863, + "end": 67867, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 30 }, "end": { - "line": 1899, + "line": 1946, "column": 34 } } @@ -269567,15 +274849,15 @@ "binop": null, "updateContext": null }, - "start": 66653, - "end": 66654, + "start": 67867, + "end": 67868, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 34 }, "end": { - "line": 1899, + "line": 1946, "column": 35 } } @@ -269593,15 +274875,15 @@ "binop": null }, "value": "_entityList", - "start": 66654, - "end": 66665, + "start": 67868, + "end": 67879, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 35 }, "end": { - "line": 1899, + "line": 1946, "column": 46 } } @@ -269619,15 +274901,15 @@ "binop": null, "updateContext": null }, - "start": 66665, - "end": 66666, + "start": 67879, + "end": 67880, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 46 }, "end": { - "line": 1899, + "line": 1946, "column": 47 } } @@ -269645,15 +274927,15 @@ "binop": null }, "value": "length", - "start": 66666, - "end": 66672, + "start": 67880, + "end": 67886, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 47 }, "end": { - "line": 1899, + "line": 1946, "column": 53 } } @@ -269671,15 +274953,15 @@ "binop": null, "updateContext": null }, - "start": 66672, - "end": 66673, + "start": 67886, + "end": 67887, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 53 }, "end": { - "line": 1899, + "line": 1946, "column": 54 } } @@ -269697,15 +274979,15 @@ "binop": null }, "value": "i", - "start": 66674, - "end": 66675, + "start": 67888, + "end": 67889, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 55 }, "end": { - "line": 1899, + "line": 1946, "column": 56 } } @@ -269724,15 +275006,15 @@ "updateContext": null }, "value": "<", - "start": 66676, - "end": 66677, + "start": 67890, + "end": 67891, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 57 }, "end": { - "line": 1899, + "line": 1946, "column": 58 } } @@ -269750,15 +275032,15 @@ "binop": null }, "value": "len", - "start": 66678, - "end": 66681, + "start": 67892, + "end": 67895, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 59 }, "end": { - "line": 1899, + "line": 1946, "column": 62 } } @@ -269776,15 +275058,15 @@ "binop": null, "updateContext": null }, - "start": 66681, - "end": 66682, + "start": 67895, + "end": 67896, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 62 }, "end": { - "line": 1899, + "line": 1946, "column": 63 } } @@ -269802,15 +275084,15 @@ "binop": null }, "value": "i", - "start": 66683, - "end": 66684, + "start": 67897, + "end": 67898, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 64 }, "end": { - "line": 1899, + "line": 1946, "column": 65 } } @@ -269828,15 +275110,15 @@ "binop": null }, "value": "++", - "start": 66684, - "end": 66686, + "start": 67898, + "end": 67900, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 65 }, "end": { - "line": 1899, + "line": 1946, "column": 67 } } @@ -269853,15 +275135,15 @@ "postfix": false, "binop": null }, - "start": 66686, - "end": 66687, + "start": 67900, + "end": 67901, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 67 }, "end": { - "line": 1899, + "line": 1946, "column": 68 } } @@ -269878,15 +275160,15 @@ "postfix": false, "binop": null }, - "start": 66688, - "end": 66689, + "start": 67902, + "end": 67903, "loc": { "start": { - "line": 1899, + "line": 1946, "column": 69 }, "end": { - "line": 1899, + "line": 1946, "column": 70 } } @@ -269906,15 +275188,15 @@ "updateContext": null }, "value": "this", - "start": 66702, - "end": 66706, + "start": 67916, + "end": 67920, "loc": { "start": { - "line": 1900, + "line": 1947, "column": 12 }, "end": { - "line": 1900, + "line": 1947, "column": 16 } } @@ -269932,15 +275214,15 @@ "binop": null, "updateContext": null }, - "start": 66706, - "end": 66707, + "start": 67920, + "end": 67921, "loc": { "start": { - "line": 1900, + "line": 1947, "column": 16 }, "end": { - "line": 1900, + "line": 1947, "column": 17 } } @@ -269958,15 +275240,15 @@ "binop": null }, "value": "_entityList", - "start": 66707, - "end": 66718, + "start": 67921, + "end": 67932, "loc": { "start": { - "line": 1900, + "line": 1947, "column": 17 }, "end": { - "line": 1900, + "line": 1947, "column": 28 } } @@ -269984,15 +275266,15 @@ "binop": null, "updateContext": null }, - "start": 66718, - "end": 66719, + "start": 67932, + "end": 67933, "loc": { "start": { - "line": 1900, + "line": 1947, "column": 28 }, "end": { - "line": 1900, + "line": 1947, "column": 29 } } @@ -270010,15 +275292,15 @@ "binop": null }, "value": "i", - "start": 66719, - "end": 66720, + "start": 67933, + "end": 67934, "loc": { "start": { - "line": 1900, + "line": 1947, "column": 29 }, "end": { - "line": 1900, + "line": 1947, "column": 30 } } @@ -270036,15 +275318,15 @@ "binop": null, "updateContext": null }, - "start": 66720, - "end": 66721, + "start": 67934, + "end": 67935, "loc": { "start": { - "line": 1900, + "line": 1947, "column": 30 }, "end": { - "line": 1900, + "line": 1947, "column": 31 } } @@ -270062,15 +275344,15 @@ "binop": null, "updateContext": null }, - "start": 66721, - "end": 66722, + "start": 67935, + "end": 67936, "loc": { "start": { - "line": 1900, + "line": 1947, "column": 31 }, "end": { - "line": 1900, + "line": 1947, "column": 32 } } @@ -270087,17 +275369,17 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 66722, - "end": 66733, + "value": "edges", + "start": 67936, + "end": 67941, "loc": { "start": { - "line": 1900, + "line": 1947, "column": 32 }, "end": { - "line": 1900, - "column": 43 + "line": 1947, + "column": 37 } } }, @@ -270115,16 +275397,16 @@ "updateContext": null }, "value": "=", - "start": 66734, - "end": 66735, + "start": 67942, + "end": 67943, "loc": { "start": { - "line": 1900, - "column": 44 + "line": 1947, + "column": 38 }, "end": { - "line": 1900, - "column": 45 + "line": 1947, + "column": 39 } } }, @@ -270140,17 +275422,17 @@ "postfix": false, "binop": null }, - "value": "highlighted", - "start": 66736, - "end": 66747, + "value": "edges", + "start": 67944, + "end": 67949, "loc": { "start": { - "line": 1900, - "column": 46 + "line": 1947, + "column": 40 }, "end": { - "line": 1900, - "column": 57 + "line": 1947, + "column": 45 } } }, @@ -270167,16 +275449,16 @@ "binop": null, "updateContext": null }, - "start": 66747, - "end": 66748, + "start": 67949, + "end": 67950, "loc": { "start": { - "line": 1900, - "column": 57 + "line": 1947, + "column": 45 }, "end": { - "line": 1900, - "column": 58 + "line": 1947, + "column": 46 } } }, @@ -270192,15 +275474,15 @@ "postfix": false, "binop": null }, - "start": 66757, - "end": 66758, + "start": 67959, + "end": 67960, "loc": { "start": { - "line": 1901, + "line": 1948, "column": 8 }, "end": { - "line": 1901, + "line": 1948, "column": 9 } } @@ -270220,15 +275502,15 @@ "updateContext": null }, "value": "this", - "start": 66767, - "end": 66771, + "start": 67969, + "end": 67973, "loc": { "start": { - "line": 1902, + "line": 1949, "column": 8 }, "end": { - "line": 1902, + "line": 1949, "column": 12 } } @@ -270246,15 +275528,15 @@ "binop": null, "updateContext": null }, - "start": 66771, - "end": 66772, + "start": 67973, + "end": 67974, "loc": { "start": { - "line": 1902, + "line": 1949, "column": 12 }, "end": { - "line": 1902, + "line": 1949, "column": 13 } } @@ -270272,15 +275554,15 @@ "binop": null }, "value": "glRedraw", - "start": 66772, - "end": 66780, + "start": 67974, + "end": 67982, "loc": { "start": { - "line": 1902, + "line": 1949, "column": 13 }, "end": { - "line": 1902, + "line": 1949, "column": 21 } } @@ -270297,15 +275579,15 @@ "postfix": false, "binop": null }, - "start": 66780, - "end": 66781, + "start": 67982, + "end": 67983, "loc": { "start": { - "line": 1902, + "line": 1949, "column": 21 }, "end": { - "line": 1902, + "line": 1949, "column": 22 } } @@ -270322,15 +275604,15 @@ "postfix": false, "binop": null }, - "start": 66781, - "end": 66782, + "start": 67983, + "end": 67984, "loc": { "start": { - "line": 1902, + "line": 1949, "column": 22 }, "end": { - "line": 1902, + "line": 1949, "column": 23 } } @@ -270348,15 +275630,15 @@ "binop": null, "updateContext": null }, - "start": 66782, - "end": 66783, + "start": 67984, + "end": 67985, "loc": { "start": { - "line": 1902, + "line": 1949, "column": 23 }, "end": { - "line": 1902, + "line": 1949, "column": 24 } } @@ -270373,31 +275655,31 @@ "postfix": false, "binop": null }, - "start": 66788, - "end": 66789, + "start": 67990, + "end": 67991, "loc": { "start": { - "line": 1903, + "line": 1950, "column": 4 }, "end": { - "line": 1903, + "line": 1950, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", - "start": 66795, - "end": 66914, + "value": "*\n * Gets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", + "start": 67997, + "end": 68216, "loc": { "start": { - "line": 1905, + "line": 1952, "column": 4 }, "end": { - "line": 1909, + "line": 1958, "column": 7 } } @@ -270415,15 +275697,15 @@ "binop": null }, "value": "get", - "start": 66919, - "end": 66922, + "start": 68221, + "end": 68224, "loc": { "start": { - "line": 1910, + "line": 1959, "column": 4 }, "end": { - "line": 1910, + "line": 1959, "column": 7 } } @@ -270440,17 +275722,17 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 66923, - "end": 66931, + "value": "culled", + "start": 68225, + "end": 68231, "loc": { "start": { - "line": 1910, + "line": 1959, "column": 8 }, "end": { - "line": 1910, - "column": 16 + "line": 1959, + "column": 14 } } }, @@ -270466,16 +275748,16 @@ "postfix": false, "binop": null }, - "start": 66931, - "end": 66932, + "start": 68231, + "end": 68232, "loc": { "start": { - "line": 1910, - "column": 16 + "line": 1959, + "column": 14 }, "end": { - "line": 1910, - "column": 17 + "line": 1959, + "column": 15 } } }, @@ -270491,16 +275773,16 @@ "postfix": false, "binop": null }, - "start": 66932, - "end": 66933, + "start": 68232, + "end": 68233, "loc": { "start": { - "line": 1910, - "column": 17 + "line": 1959, + "column": 15 }, "end": { - "line": 1910, - "column": 18 + "line": 1959, + "column": 16 } } }, @@ -270516,16 +275798,16 @@ "postfix": false, "binop": null }, - "start": 66934, - "end": 66935, + "start": 68234, + "end": 68235, "loc": { "start": { - "line": 1910, - "column": 19 + "line": 1959, + "column": 17 }, "end": { - "line": 1910, - "column": 20 + "line": 1959, + "column": 18 } } }, @@ -270544,44 +275826,19 @@ "updateContext": null }, "value": "return", - "start": 66944, - "end": 66950, + "start": 68244, + "end": 68250, "loc": { "start": { - "line": 1911, + "line": 1960, "column": 8 }, "end": { - "line": 1911, + "line": 1960, "column": 14 } } }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 66951, - "end": 66952, - "loc": { - "start": { - "line": 1911, - "column": 15 - }, - "end": { - "line": 1911, - "column": 16 - } - } - }, { "type": { "label": "this", @@ -270597,16 +275854,16 @@ "updateContext": null }, "value": "this", - "start": 66952, - "end": 66956, + "start": 68251, + "end": 68255, "loc": { "start": { - "line": 1911, - "column": 16 + "line": 1960, + "column": 15 }, "end": { - "line": 1911, - "column": 20 + "line": 1960, + "column": 19 } } }, @@ -270623,16 +275880,16 @@ "binop": null, "updateContext": null }, - "start": 66956, - "end": 66957, + "start": 68255, + "end": 68256, "loc": { "start": { - "line": 1911, - "column": 20 + "line": 1960, + "column": 19 }, "end": { - "line": 1911, - "column": 21 + "line": 1960, + "column": 20 } } }, @@ -270648,96 +275905,17 @@ "postfix": false, "binop": null }, - "value": "numSelectedLayerPortions", - "start": 66957, - "end": 66981, - "loc": { - "start": { - "line": 1911, - "column": 21 - }, - "end": { - "line": 1911, - "column": 45 - } - } - }, - { - "type": { - "label": "", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 7, - "updateContext": null - }, - "value": ">", - "start": 66982, - "end": 66983, - "loc": { - "start": { - "line": 1911, - "column": 46 - }, - "end": { - "line": 1911, - "column": 47 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 66984, - "end": 66985, - "loc": { - "start": { - "line": 1911, - "column": 48 - }, - "end": { - "line": 1911, - "column": 49 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 66985, - "end": 66986, + "value": "_culled", + "start": 68256, + "end": 68263, "loc": { "start": { - "line": 1911, - "column": 49 + "line": 1960, + "column": 20 }, "end": { - "line": 1911, - "column": 50 + "line": 1960, + "column": 27 } } }, @@ -270754,16 +275932,16 @@ "binop": null, "updateContext": null }, - "start": 66986, - "end": 66987, + "start": 68263, + "end": 68264, "loc": { "start": { - "line": 1911, - "column": 50 + "line": 1960, + "column": 27 }, "end": { - "line": 1911, - "column": 51 + "line": 1960, + "column": 28 } } }, @@ -270779,31 +275957,31 @@ "postfix": false, "binop": null }, - "start": 66992, - "end": 66993, + "start": 68269, + "end": 68270, "loc": { "start": { - "line": 1912, + "line": 1961, "column": 4 }, "end": { - "line": 1912, + "line": 1961, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n ", - "start": 66999, - "end": 67118, + "value": "*\n * Sets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", + "start": 68276, + "end": 68495, "loc": { "start": { - "line": 1914, + "line": 1963, "column": 4 }, "end": { - "line": 1918, + "line": 1969, "column": 7 } } @@ -270821,15 +275999,15 @@ "binop": null }, "value": "set", - "start": 67123, - "end": 67126, + "start": 68500, + "end": 68503, "loc": { "start": { - "line": 1919, + "line": 1970, "column": 4 }, "end": { - "line": 1919, + "line": 1970, "column": 7 } } @@ -270846,17 +276024,17 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 67127, - "end": 67135, + "value": "culled", + "start": 68504, + "end": 68510, "loc": { "start": { - "line": 1919, + "line": 1970, "column": 8 }, "end": { - "line": 1919, - "column": 16 + "line": 1970, + "column": 14 } } }, @@ -270872,16 +276050,16 @@ "postfix": false, "binop": null }, - "start": 67135, - "end": 67136, + "start": 68510, + "end": 68511, "loc": { "start": { - "line": 1919, - "column": 16 + "line": 1970, + "column": 14 }, "end": { - "line": 1919, - "column": 17 + "line": 1970, + "column": 15 } } }, @@ -270897,17 +276075,17 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 67136, - "end": 67144, + "value": "culled", + "start": 68511, + "end": 68517, "loc": { "start": { - "line": 1919, - "column": 17 + "line": 1970, + "column": 15 }, "end": { - "line": 1919, - "column": 25 + "line": 1970, + "column": 21 } } }, @@ -270923,16 +276101,16 @@ "postfix": false, "binop": null }, - "start": 67144, - "end": 67145, + "start": 68517, + "end": 68518, "loc": { "start": { - "line": 1919, - "column": 25 + "line": 1970, + "column": 21 }, "end": { - "line": 1919, - "column": 26 + "line": 1970, + "column": 22 } } }, @@ -270948,16 +276126,16 @@ "postfix": false, "binop": null }, - "start": 67146, - "end": 67147, + "start": 68519, + "end": 68520, "loc": { "start": { - "line": 1919, - "column": 27 + "line": 1970, + "column": 23 }, "end": { - "line": 1919, - "column": 28 + "line": 1970, + "column": 24 } } }, @@ -270973,17 +276151,17 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 67156, - "end": 67164, + "value": "culled", + "start": 68529, + "end": 68535, "loc": { "start": { - "line": 1920, + "line": 1971, "column": 8 }, "end": { - "line": 1920, - "column": 16 + "line": 1971, + "column": 14 } } }, @@ -271001,16 +276179,16 @@ "updateContext": null }, "value": "=", - "start": 67165, - "end": 67166, + "start": 68536, + "end": 68537, "loc": { "start": { - "line": 1920, - "column": 17 + "line": 1971, + "column": 15 }, "end": { - "line": 1920, - "column": 18 + "line": 1971, + "column": 16 } } }, @@ -271028,16 +276206,16 @@ "updateContext": null }, "value": "!", - "start": 67167, - "end": 67168, + "start": 68538, + "end": 68539, "loc": { "start": { - "line": 1920, - "column": 19 + "line": 1971, + "column": 17 }, "end": { - "line": 1920, - "column": 20 + "line": 1971, + "column": 18 } } }, @@ -271055,16 +276233,16 @@ "updateContext": null }, "value": "!", - "start": 67168, - "end": 67169, + "start": 68539, + "end": 68540, "loc": { "start": { - "line": 1920, - "column": 20 + "line": 1971, + "column": 18 }, "end": { - "line": 1920, - "column": 21 + "line": 1971, + "column": 19 } } }, @@ -271080,17 +276258,17 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 67169, - "end": 67177, + "value": "culled", + "start": 68540, + "end": 68546, "loc": { "start": { - "line": 1920, - "column": 21 + "line": 1971, + "column": 19 }, "end": { - "line": 1920, - "column": 29 + "line": 1971, + "column": 25 } } }, @@ -271107,16 +276285,16 @@ "binop": null, "updateContext": null }, - "start": 67177, - "end": 67178, + "start": 68546, + "end": 68547, "loc": { "start": { - "line": 1920, - "column": 29 + "line": 1971, + "column": 25 }, "end": { - "line": 1920, - "column": 30 + "line": 1971, + "column": 26 } } }, @@ -271135,15 +276313,15 @@ "updateContext": null }, "value": "this", - "start": 67187, - "end": 67191, + "start": 68556, + "end": 68560, "loc": { "start": { - "line": 1921, + "line": 1972, "column": 8 }, "end": { - "line": 1921, + "line": 1972, "column": 12 } } @@ -271161,15 +276339,15 @@ "binop": null, "updateContext": null }, - "start": 67191, - "end": 67192, + "start": 68560, + "end": 68561, "loc": { "start": { - "line": 1921, + "line": 1972, "column": 12 }, "end": { - "line": 1921, + "line": 1972, "column": 13 } } @@ -271186,17 +276364,17 @@ "postfix": false, "binop": null }, - "value": "_selected", - "start": 67192, - "end": 67201, + "value": "_culled", + "start": 68561, + "end": 68568, "loc": { "start": { - "line": 1921, + "line": 1972, "column": 13 }, "end": { - "line": 1921, - "column": 22 + "line": 1972, + "column": 20 } } }, @@ -271214,16 +276392,16 @@ "updateContext": null }, "value": "=", - "start": 67202, - "end": 67203, + "start": 68569, + "end": 68570, "loc": { "start": { - "line": 1921, - "column": 23 + "line": 1972, + "column": 21 }, "end": { - "line": 1921, - "column": 24 + "line": 1972, + "column": 22 } } }, @@ -271239,17 +276417,17 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 67204, - "end": 67212, + "value": "culled", + "start": 68571, + "end": 68577, "loc": { "start": { - "line": 1921, - "column": 25 + "line": 1972, + "column": 23 }, "end": { - "line": 1921, - "column": 33 + "line": 1972, + "column": 29 } } }, @@ -271266,16 +276444,16 @@ "binop": null, "updateContext": null }, - "start": 67212, - "end": 67213, + "start": 68577, + "end": 68578, "loc": { "start": { - "line": 1921, - "column": 33 + "line": 1972, + "column": 29 }, "end": { - "line": 1921, - "column": 34 + "line": 1972, + "column": 30 } } }, @@ -271294,15 +276472,15 @@ "updateContext": null }, "value": "for", - "start": 67222, - "end": 67225, + "start": 68587, + "end": 68590, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 8 }, "end": { - "line": 1922, + "line": 1973, "column": 11 } } @@ -271319,15 +276497,15 @@ "postfix": false, "binop": null }, - "start": 67226, - "end": 67227, + "start": 68591, + "end": 68592, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 12 }, "end": { - "line": 1922, + "line": 1973, "column": 13 } } @@ -271347,15 +276525,15 @@ "updateContext": null }, "value": "let", - "start": 67227, - "end": 67230, + "start": 68592, + "end": 68595, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 13 }, "end": { - "line": 1922, + "line": 1973, "column": 16 } } @@ -271373,15 +276551,15 @@ "binop": null }, "value": "i", - "start": 67231, - "end": 67232, + "start": 68596, + "end": 68597, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 17 }, "end": { - "line": 1922, + "line": 1973, "column": 18 } } @@ -271400,15 +276578,15 @@ "updateContext": null }, "value": "=", - "start": 67233, - "end": 67234, + "start": 68598, + "end": 68599, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 19 }, "end": { - "line": 1922, + "line": 1973, "column": 20 } } @@ -271427,15 +276605,15 @@ "updateContext": null }, "value": 0, - "start": 67235, - "end": 67236, + "start": 68600, + "end": 68601, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 21 }, "end": { - "line": 1922, + "line": 1973, "column": 22 } } @@ -271453,15 +276631,15 @@ "binop": null, "updateContext": null }, - "start": 67236, - "end": 67237, + "start": 68601, + "end": 68602, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 22 }, "end": { - "line": 1922, + "line": 1973, "column": 23 } } @@ -271479,15 +276657,15 @@ "binop": null }, "value": "len", - "start": 67238, - "end": 67241, + "start": 68603, + "end": 68606, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 24 }, "end": { - "line": 1922, + "line": 1973, "column": 27 } } @@ -271506,15 +276684,15 @@ "updateContext": null }, "value": "=", - "start": 67242, - "end": 67243, + "start": 68607, + "end": 68608, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 28 }, "end": { - "line": 1922, + "line": 1973, "column": 29 } } @@ -271534,15 +276712,15 @@ "updateContext": null }, "value": "this", - "start": 67244, - "end": 67248, + "start": 68609, + "end": 68613, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 30 }, "end": { - "line": 1922, + "line": 1973, "column": 34 } } @@ -271560,15 +276738,15 @@ "binop": null, "updateContext": null }, - "start": 67248, - "end": 67249, + "start": 68613, + "end": 68614, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 34 }, "end": { - "line": 1922, + "line": 1973, "column": 35 } } @@ -271586,15 +276764,15 @@ "binop": null }, "value": "_entityList", - "start": 67249, - "end": 67260, + "start": 68614, + "end": 68625, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 35 }, "end": { - "line": 1922, + "line": 1973, "column": 46 } } @@ -271612,15 +276790,15 @@ "binop": null, "updateContext": null }, - "start": 67260, - "end": 67261, + "start": 68625, + "end": 68626, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 46 }, "end": { - "line": 1922, + "line": 1973, "column": 47 } } @@ -271638,15 +276816,15 @@ "binop": null }, "value": "length", - "start": 67261, - "end": 67267, + "start": 68626, + "end": 68632, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 47 }, "end": { - "line": 1922, + "line": 1973, "column": 53 } } @@ -271664,15 +276842,15 @@ "binop": null, "updateContext": null }, - "start": 67267, - "end": 67268, + "start": 68632, + "end": 68633, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 53 }, "end": { - "line": 1922, + "line": 1973, "column": 54 } } @@ -271690,15 +276868,15 @@ "binop": null }, "value": "i", - "start": 67269, - "end": 67270, + "start": 68634, + "end": 68635, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 55 }, "end": { - "line": 1922, + "line": 1973, "column": 56 } } @@ -271717,15 +276895,15 @@ "updateContext": null }, "value": "<", - "start": 67271, - "end": 67272, + "start": 68636, + "end": 68637, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 57 }, "end": { - "line": 1922, + "line": 1973, "column": 58 } } @@ -271743,15 +276921,15 @@ "binop": null }, "value": "len", - "start": 67273, - "end": 67276, + "start": 68638, + "end": 68641, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 59 }, "end": { - "line": 1922, + "line": 1973, "column": 62 } } @@ -271769,15 +276947,15 @@ "binop": null, "updateContext": null }, - "start": 67276, - "end": 67277, + "start": 68641, + "end": 68642, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 62 }, "end": { - "line": 1922, + "line": 1973, "column": 63 } } @@ -271795,15 +276973,15 @@ "binop": null }, "value": "i", - "start": 67278, - "end": 67279, + "start": 68643, + "end": 68644, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 64 }, "end": { - "line": 1922, + "line": 1973, "column": 65 } } @@ -271821,15 +276999,15 @@ "binop": null }, "value": "++", - "start": 67279, - "end": 67281, + "start": 68644, + "end": 68646, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 65 }, "end": { - "line": 1922, + "line": 1973, "column": 67 } } @@ -271846,15 +277024,15 @@ "postfix": false, "binop": null }, - "start": 67281, - "end": 67282, + "start": 68646, + "end": 68647, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 67 }, "end": { - "line": 1922, + "line": 1973, "column": 68 } } @@ -271871,15 +277049,15 @@ "postfix": false, "binop": null }, - "start": 67283, - "end": 67284, + "start": 68648, + "end": 68649, "loc": { "start": { - "line": 1922, + "line": 1973, "column": 69 }, "end": { - "line": 1922, + "line": 1973, "column": 70 } } @@ -271899,15 +277077,15 @@ "updateContext": null }, "value": "this", - "start": 67297, - "end": 67301, + "start": 68662, + "end": 68666, "loc": { "start": { - "line": 1923, + "line": 1974, "column": 12 }, "end": { - "line": 1923, + "line": 1974, "column": 16 } } @@ -271925,15 +277103,15 @@ "binop": null, "updateContext": null }, - "start": 67301, - "end": 67302, + "start": 68666, + "end": 68667, "loc": { "start": { - "line": 1923, + "line": 1974, "column": 16 }, "end": { - "line": 1923, + "line": 1974, "column": 17 } } @@ -271951,15 +277129,15 @@ "binop": null }, "value": "_entityList", - "start": 67302, - "end": 67313, + "start": 68667, + "end": 68678, "loc": { "start": { - "line": 1923, + "line": 1974, "column": 17 }, "end": { - "line": 1923, + "line": 1974, "column": 28 } } @@ -271977,15 +277155,15 @@ "binop": null, "updateContext": null }, - "start": 67313, - "end": 67314, + "start": 68678, + "end": 68679, "loc": { "start": { - "line": 1923, + "line": 1974, "column": 28 }, "end": { - "line": 1923, + "line": 1974, "column": 29 } } @@ -272003,15 +277181,15 @@ "binop": null }, "value": "i", - "start": 67314, - "end": 67315, + "start": 68679, + "end": 68680, "loc": { "start": { - "line": 1923, + "line": 1974, "column": 29 }, "end": { - "line": 1923, + "line": 1974, "column": 30 } } @@ -272029,15 +277207,15 @@ "binop": null, "updateContext": null }, - "start": 67315, - "end": 67316, + "start": 68680, + "end": 68681, "loc": { "start": { - "line": 1923, + "line": 1974, "column": 30 }, "end": { - "line": 1923, + "line": 1974, "column": 31 } } @@ -272055,15 +277233,15 @@ "binop": null, "updateContext": null }, - "start": 67316, - "end": 67317, + "start": 68681, + "end": 68682, "loc": { "start": { - "line": 1923, + "line": 1974, "column": 31 }, "end": { - "line": 1923, + "line": 1974, "column": 32 } } @@ -272080,17 +277258,17 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 67317, - "end": 67325, + "value": "culled", + "start": 68682, + "end": 68688, "loc": { "start": { - "line": 1923, + "line": 1974, "column": 32 }, "end": { - "line": 1923, - "column": 40 + "line": 1974, + "column": 38 } } }, @@ -272108,16 +277286,16 @@ "updateContext": null }, "value": "=", - "start": 67326, - "end": 67327, + "start": 68689, + "end": 68690, "loc": { "start": { - "line": 1923, - "column": 41 + "line": 1974, + "column": 39 }, "end": { - "line": 1923, - "column": 42 + "line": 1974, + "column": 40 } } }, @@ -272133,17 +277311,17 @@ "postfix": false, "binop": null }, - "value": "selected", - "start": 67328, - "end": 67336, + "value": "culled", + "start": 68691, + "end": 68697, "loc": { "start": { - "line": 1923, - "column": 43 + "line": 1974, + "column": 41 }, "end": { - "line": 1923, - "column": 51 + "line": 1974, + "column": 47 } } }, @@ -272160,16 +277338,16 @@ "binop": null, "updateContext": null }, - "start": 67336, - "end": 67337, + "start": 68697, + "end": 68698, "loc": { "start": { - "line": 1923, - "column": 51 + "line": 1974, + "column": 47 }, "end": { - "line": 1923, - "column": 52 + "line": 1974, + "column": 48 } } }, @@ -272185,15 +277363,15 @@ "postfix": false, "binop": null }, - "start": 67346, - "end": 67347, + "start": 68707, + "end": 68708, "loc": { "start": { - "line": 1924, + "line": 1975, "column": 8 }, "end": { - "line": 1924, + "line": 1975, "column": 9 } } @@ -272213,15 +277391,15 @@ "updateContext": null }, "value": "this", - "start": 67356, - "end": 67360, + "start": 68717, + "end": 68721, "loc": { "start": { - "line": 1925, + "line": 1976, "column": 8 }, "end": { - "line": 1925, + "line": 1976, "column": 12 } } @@ -272239,15 +277417,15 @@ "binop": null, "updateContext": null }, - "start": 67360, - "end": 67361, + "start": 68721, + "end": 68722, "loc": { "start": { - "line": 1925, + "line": 1976, "column": 12 }, "end": { - "line": 1925, + "line": 1976, "column": 13 } } @@ -272265,15 +277443,15 @@ "binop": null }, "value": "glRedraw", - "start": 67361, - "end": 67369, + "start": 68722, + "end": 68730, "loc": { "start": { - "line": 1925, + "line": 1976, "column": 13 }, "end": { - "line": 1925, + "line": 1976, "column": 21 } } @@ -272290,15 +277468,15 @@ "postfix": false, "binop": null }, - "start": 67369, - "end": 67370, + "start": 68730, + "end": 68731, "loc": { "start": { - "line": 1925, + "line": 1976, "column": 21 }, "end": { - "line": 1925, + "line": 1976, "column": 22 } } @@ -272315,15 +277493,15 @@ "postfix": false, "binop": null }, - "start": 67370, - "end": 67371, + "start": 68731, + "end": 68732, "loc": { "start": { - "line": 1925, + "line": 1976, "column": 22 }, "end": { - "line": 1925, + "line": 1976, "column": 23 } } @@ -272341,15 +277519,15 @@ "binop": null, "updateContext": null }, - "start": 67371, - "end": 67372, + "start": 68732, + "end": 68733, "loc": { "start": { - "line": 1925, + "line": 1976, "column": 23 }, "end": { - "line": 1925, + "line": 1976, "column": 24 } } @@ -272366,31 +277544,31 @@ "postfix": false, "binop": null }, - "start": 67377, - "end": 67378, + "start": 68738, + "end": 68739, "loc": { "start": { - "line": 1926, + "line": 1977, "column": 4 }, "end": { - "line": 1926, + "line": 1977, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if any {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", - "start": 67384, - "end": 67512, + "value": "*\n * Gets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", + "start": 68745, + "end": 68953, "loc": { "start": { - "line": 1928, + "line": 1979, "column": 4 }, "end": { - "line": 1932, + "line": 1985, "column": 7 } } @@ -272408,15 +277586,15 @@ "binop": null }, "value": "get", - "start": 67517, - "end": 67520, + "start": 68958, + "end": 68961, "loc": { "start": { - "line": 1933, + "line": 1986, "column": 4 }, "end": { - "line": 1933, + "line": 1986, "column": 7 } } @@ -272433,17 +277611,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 67521, - "end": 67526, + "value": "clippable", + "start": 68962, + "end": 68971, "loc": { "start": { - "line": 1933, + "line": 1986, "column": 8 }, "end": { - "line": 1933, - "column": 13 + "line": 1986, + "column": 17 } } }, @@ -272459,16 +277637,16 @@ "postfix": false, "binop": null }, - "start": 67526, - "end": 67527, + "start": 68971, + "end": 68972, "loc": { "start": { - "line": 1933, - "column": 13 + "line": 1986, + "column": 17 }, "end": { - "line": 1933, - "column": 14 + "line": 1986, + "column": 18 } } }, @@ -272484,16 +277662,16 @@ "postfix": false, "binop": null }, - "start": 67527, - "end": 67528, + "start": 68972, + "end": 68973, "loc": { "start": { - "line": 1933, - "column": 14 + "line": 1986, + "column": 18 }, "end": { - "line": 1933, - "column": 15 + "line": 1986, + "column": 19 } } }, @@ -272509,16 +277687,16 @@ "postfix": false, "binop": null }, - "start": 67529, - "end": 67530, + "start": 68974, + "end": 68975, "loc": { "start": { - "line": 1933, - "column": 16 + "line": 1986, + "column": 20 }, "end": { - "line": 1933, - "column": 17 + "line": 1986, + "column": 21 } } }, @@ -272537,44 +277715,19 @@ "updateContext": null }, "value": "return", - "start": 67539, - "end": 67545, + "start": 68984, + "end": 68990, "loc": { "start": { - "line": 1934, + "line": 1987, "column": 8 }, "end": { - "line": 1934, + "line": 1987, "column": 14 } } }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 67546, - "end": 67547, - "loc": { - "start": { - "line": 1934, - "column": 15 - }, - "end": { - "line": 1934, - "column": 16 - } - } - }, { "type": { "label": "this", @@ -272590,16 +277743,16 @@ "updateContext": null }, "value": "this", - "start": 67547, - "end": 67551, + "start": 68991, + "end": 68995, "loc": { "start": { - "line": 1934, - "column": 16 + "line": 1987, + "column": 15 }, "end": { - "line": 1934, - "column": 20 + "line": 1987, + "column": 19 } } }, @@ -272616,16 +277769,16 @@ "binop": null, "updateContext": null }, - "start": 67551, - "end": 67552, + "start": 68995, + "end": 68996, "loc": { "start": { - "line": 1934, - "column": 20 + "line": 1987, + "column": 19 }, "end": { - "line": 1934, - "column": 21 + "line": 1987, + "column": 20 } } }, @@ -272641,96 +277794,17 @@ "postfix": false, "binop": null }, - "value": "numEdgesLayerPortions", - "start": 67552, - "end": 67573, - "loc": { - "start": { - "line": 1934, - "column": 21 - }, - "end": { - "line": 1934, - "column": 42 - } - } - }, - { - "type": { - "label": "", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 7, - "updateContext": null - }, - "value": ">", - "start": 67574, - "end": 67575, - "loc": { - "start": { - "line": 1934, - "column": 43 - }, - "end": { - "line": 1934, - "column": 44 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 67576, - "end": 67577, - "loc": { - "start": { - "line": 1934, - "column": 45 - }, - "end": { - "line": 1934, - "column": 46 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 67577, - "end": 67578, + "value": "_clippable", + "start": 68996, + "end": 69006, "loc": { "start": { - "line": 1934, - "column": 46 + "line": 1987, + "column": 20 }, "end": { - "line": 1934, - "column": 47 + "line": 1987, + "column": 30 } } }, @@ -272747,16 +277821,16 @@ "binop": null, "updateContext": null }, - "start": 67578, - "end": 67579, + "start": 69006, + "end": 69007, "loc": { "start": { - "line": 1934, - "column": 47 + "line": 1987, + "column": 30 }, "end": { - "line": 1934, - "column": 48 + "line": 1987, + "column": 31 } } }, @@ -272772,31 +277846,31 @@ "postfix": false, "binop": null }, - "start": 67584, - "end": 67585, + "start": 69012, + "end": 69013, "loc": { "start": { - "line": 1935, + "line": 1988, "column": 4 }, "end": { - "line": 1935, + "line": 1988, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if all {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n ", - "start": 67591, - "end": 67719, + "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", + "start": 69019, + "end": 69227, "loc": { "start": { - "line": 1937, + "line": 1990, "column": 4 }, "end": { - "line": 1941, + "line": 1996, "column": 7 } } @@ -272814,15 +277888,15 @@ "binop": null }, "value": "set", - "start": 67724, - "end": 67727, + "start": 69232, + "end": 69235, "loc": { "start": { - "line": 1942, + "line": 1997, "column": 4 }, "end": { - "line": 1942, + "line": 1997, "column": 7 } } @@ -272839,17 +277913,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 67728, - "end": 67733, + "value": "clippable", + "start": 69236, + "end": 69245, "loc": { "start": { - "line": 1942, + "line": 1997, "column": 8 }, "end": { - "line": 1942, - "column": 13 + "line": 1997, + "column": 17 } } }, @@ -272865,16 +277939,16 @@ "postfix": false, "binop": null }, - "start": 67733, - "end": 67734, + "start": 69245, + "end": 69246, "loc": { "start": { - "line": 1942, - "column": 13 + "line": 1997, + "column": 17 }, "end": { - "line": 1942, - "column": 14 + "line": 1997, + "column": 18 } } }, @@ -272890,17 +277964,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 67734, - "end": 67739, + "value": "clippable", + "start": 69246, + "end": 69255, "loc": { "start": { - "line": 1942, - "column": 14 + "line": 1997, + "column": 18 }, "end": { - "line": 1942, - "column": 19 + "line": 1997, + "column": 27 } } }, @@ -272916,16 +277990,16 @@ "postfix": false, "binop": null }, - "start": 67739, - "end": 67740, + "start": 69255, + "end": 69256, "loc": { "start": { - "line": 1942, - "column": 19 + "line": 1997, + "column": 27 }, "end": { - "line": 1942, - "column": 20 + "line": 1997, + "column": 28 } } }, @@ -272941,16 +278015,16 @@ "postfix": false, "binop": null }, - "start": 67741, - "end": 67742, + "start": 69257, + "end": 69258, "loc": { "start": { - "line": 1942, - "column": 21 + "line": 1997, + "column": 29 }, "end": { - "line": 1942, - "column": 22 + "line": 1997, + "column": 30 } } }, @@ -272966,17 +278040,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 67751, - "end": 67756, + "value": "clippable", + "start": 69267, + "end": 69276, "loc": { "start": { - "line": 1943, + "line": 1998, "column": 8 }, "end": { - "line": 1943, - "column": 13 + "line": 1998, + "column": 17 } } }, @@ -272994,76 +278068,76 @@ "updateContext": null }, "value": "=", - "start": 67757, - "end": 67758, + "start": 69277, + "end": 69278, "loc": { "start": { - "line": 1943, - "column": 14 + "line": 1998, + "column": 18 }, "end": { - "line": 1943, - "column": 15 + "line": 1998, + "column": 19 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 67759, - "end": 67760, + "value": "clippable", + "start": 69279, + "end": 69288, "loc": { "start": { - "line": 1943, - "column": 16 + "line": 1998, + "column": 20 }, "end": { - "line": 1943, - "column": 17 + "line": 1998, + "column": 29 } } }, { "type": { - "label": "prefix", + "label": "==/!=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "!", - "start": 67760, - "end": 67761, + "value": "!==", + "start": 69289, + "end": 69292, "loc": { "start": { - "line": 1943, - "column": 17 + "line": 1998, + "column": 30 }, "end": { - "line": 1943, - "column": 18 + "line": 1998, + "column": 33 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -273071,19 +278145,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "edges", - "start": 67761, - "end": 67766, + "value": "false", + "start": 69293, + "end": 69298, "loc": { "start": { - "line": 1943, - "column": 18 + "line": 1998, + "column": 34 }, "end": { - "line": 1943, - "column": 23 + "line": 1998, + "column": 39 } } }, @@ -273100,16 +278175,16 @@ "binop": null, "updateContext": null }, - "start": 67766, - "end": 67767, + "start": 69298, + "end": 69299, "loc": { "start": { - "line": 1943, - "column": 23 + "line": 1998, + "column": 39 }, "end": { - "line": 1943, - "column": 24 + "line": 1998, + "column": 40 } } }, @@ -273128,15 +278203,15 @@ "updateContext": null }, "value": "this", - "start": 67776, - "end": 67780, + "start": 69308, + "end": 69312, "loc": { "start": { - "line": 1944, + "line": 1999, "column": 8 }, "end": { - "line": 1944, + "line": 1999, "column": 12 } } @@ -273154,15 +278229,15 @@ "binop": null, "updateContext": null }, - "start": 67780, - "end": 67781, + "start": 69312, + "end": 69313, "loc": { "start": { - "line": 1944, + "line": 1999, "column": 12 }, "end": { - "line": 1944, + "line": 1999, "column": 13 } } @@ -273179,17 +278254,17 @@ "postfix": false, "binop": null }, - "value": "_edges", - "start": 67781, - "end": 67787, + "value": "_clippable", + "start": 69313, + "end": 69323, "loc": { "start": { - "line": 1944, + "line": 1999, "column": 13 }, "end": { - "line": 1944, - "column": 19 + "line": 1999, + "column": 23 } } }, @@ -273207,16 +278282,16 @@ "updateContext": null }, "value": "=", - "start": 67788, - "end": 67789, + "start": 69324, + "end": 69325, "loc": { "start": { - "line": 1944, - "column": 20 + "line": 1999, + "column": 24 }, "end": { - "line": 1944, - "column": 21 + "line": 1999, + "column": 25 } } }, @@ -273232,17 +278307,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 67790, - "end": 67795, + "value": "clippable", + "start": 69326, + "end": 69335, "loc": { "start": { - "line": 1944, - "column": 22 + "line": 1999, + "column": 26 }, "end": { - "line": 1944, - "column": 27 + "line": 1999, + "column": 35 } } }, @@ -273259,16 +278334,16 @@ "binop": null, "updateContext": null }, - "start": 67795, - "end": 67796, + "start": 69335, + "end": 69336, "loc": { "start": { - "line": 1944, - "column": 27 + "line": 1999, + "column": 35 }, "end": { - "line": 1944, - "column": 28 + "line": 1999, + "column": 36 } } }, @@ -273287,15 +278362,15 @@ "updateContext": null }, "value": "for", - "start": 67805, - "end": 67808, + "start": 69345, + "end": 69348, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 8 }, "end": { - "line": 1945, + "line": 2000, "column": 11 } } @@ -273312,15 +278387,15 @@ "postfix": false, "binop": null }, - "start": 67809, - "end": 67810, + "start": 69349, + "end": 69350, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 12 }, "end": { - "line": 1945, + "line": 2000, "column": 13 } } @@ -273340,15 +278415,15 @@ "updateContext": null }, "value": "let", - "start": 67810, - "end": 67813, + "start": 69350, + "end": 69353, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 13 }, "end": { - "line": 1945, + "line": 2000, "column": 16 } } @@ -273366,15 +278441,15 @@ "binop": null }, "value": "i", - "start": 67814, - "end": 67815, + "start": 69354, + "end": 69355, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 17 }, "end": { - "line": 1945, + "line": 2000, "column": 18 } } @@ -273393,15 +278468,15 @@ "updateContext": null }, "value": "=", - "start": 67816, - "end": 67817, + "start": 69356, + "end": 69357, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 19 }, "end": { - "line": 1945, + "line": 2000, "column": 20 } } @@ -273420,15 +278495,15 @@ "updateContext": null }, "value": 0, - "start": 67818, - "end": 67819, + "start": 69358, + "end": 69359, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 21 }, "end": { - "line": 1945, + "line": 2000, "column": 22 } } @@ -273446,15 +278521,15 @@ "binop": null, "updateContext": null }, - "start": 67819, - "end": 67820, + "start": 69359, + "end": 69360, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 22 }, "end": { - "line": 1945, + "line": 2000, "column": 23 } } @@ -273472,15 +278547,15 @@ "binop": null }, "value": "len", - "start": 67821, - "end": 67824, + "start": 69361, + "end": 69364, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 24 }, "end": { - "line": 1945, + "line": 2000, "column": 27 } } @@ -273499,15 +278574,15 @@ "updateContext": null }, "value": "=", - "start": 67825, - "end": 67826, + "start": 69365, + "end": 69366, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 28 }, "end": { - "line": 1945, + "line": 2000, "column": 29 } } @@ -273527,15 +278602,15 @@ "updateContext": null }, "value": "this", - "start": 67827, - "end": 67831, + "start": 69367, + "end": 69371, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 30 }, "end": { - "line": 1945, + "line": 2000, "column": 34 } } @@ -273553,15 +278628,15 @@ "binop": null, "updateContext": null }, - "start": 67831, - "end": 67832, + "start": 69371, + "end": 69372, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 34 }, "end": { - "line": 1945, + "line": 2000, "column": 35 } } @@ -273579,15 +278654,15 @@ "binop": null }, "value": "_entityList", - "start": 67832, - "end": 67843, + "start": 69372, + "end": 69383, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 35 }, "end": { - "line": 1945, + "line": 2000, "column": 46 } } @@ -273605,15 +278680,15 @@ "binop": null, "updateContext": null }, - "start": 67843, - "end": 67844, + "start": 69383, + "end": 69384, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 46 }, "end": { - "line": 1945, + "line": 2000, "column": 47 } } @@ -273631,15 +278706,15 @@ "binop": null }, "value": "length", - "start": 67844, - "end": 67850, + "start": 69384, + "end": 69390, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 47 }, "end": { - "line": 1945, + "line": 2000, "column": 53 } } @@ -273657,15 +278732,15 @@ "binop": null, "updateContext": null }, - "start": 67850, - "end": 67851, + "start": 69390, + "end": 69391, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 53 }, "end": { - "line": 1945, + "line": 2000, "column": 54 } } @@ -273683,15 +278758,15 @@ "binop": null }, "value": "i", - "start": 67852, - "end": 67853, + "start": 69392, + "end": 69393, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 55 }, "end": { - "line": 1945, + "line": 2000, "column": 56 } } @@ -273710,15 +278785,15 @@ "updateContext": null }, "value": "<", - "start": 67854, - "end": 67855, + "start": 69394, + "end": 69395, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 57 }, "end": { - "line": 1945, + "line": 2000, "column": 58 } } @@ -273736,15 +278811,15 @@ "binop": null }, "value": "len", - "start": 67856, - "end": 67859, + "start": 69396, + "end": 69399, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 59 }, "end": { - "line": 1945, + "line": 2000, "column": 62 } } @@ -273762,15 +278837,15 @@ "binop": null, "updateContext": null }, - "start": 67859, - "end": 67860, + "start": 69399, + "end": 69400, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 62 }, "end": { - "line": 1945, + "line": 2000, "column": 63 } } @@ -273788,15 +278863,15 @@ "binop": null }, "value": "i", - "start": 67861, - "end": 67862, + "start": 69401, + "end": 69402, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 64 }, "end": { - "line": 1945, + "line": 2000, "column": 65 } } @@ -273814,15 +278889,15 @@ "binop": null }, "value": "++", - "start": 67862, - "end": 67864, + "start": 69402, + "end": 69404, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 65 }, "end": { - "line": 1945, + "line": 2000, "column": 67 } } @@ -273839,15 +278914,15 @@ "postfix": false, "binop": null }, - "start": 67864, - "end": 67865, + "start": 69404, + "end": 69405, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 67 }, "end": { - "line": 1945, + "line": 2000, "column": 68 } } @@ -273864,15 +278939,15 @@ "postfix": false, "binop": null }, - "start": 67866, - "end": 67867, + "start": 69406, + "end": 69407, "loc": { "start": { - "line": 1945, + "line": 2000, "column": 69 }, "end": { - "line": 1945, + "line": 2000, "column": 70 } } @@ -273892,15 +278967,15 @@ "updateContext": null }, "value": "this", - "start": 67880, - "end": 67884, + "start": 69420, + "end": 69424, "loc": { "start": { - "line": 1946, + "line": 2001, "column": 12 }, "end": { - "line": 1946, + "line": 2001, "column": 16 } } @@ -273918,15 +278993,15 @@ "binop": null, "updateContext": null }, - "start": 67884, - "end": 67885, + "start": 69424, + "end": 69425, "loc": { "start": { - "line": 1946, + "line": 2001, "column": 16 }, "end": { - "line": 1946, + "line": 2001, "column": 17 } } @@ -273944,15 +279019,15 @@ "binop": null }, "value": "_entityList", - "start": 67885, - "end": 67896, + "start": 69425, + "end": 69436, "loc": { "start": { - "line": 1946, + "line": 2001, "column": 17 }, "end": { - "line": 1946, + "line": 2001, "column": 28 } } @@ -273970,15 +279045,15 @@ "binop": null, "updateContext": null }, - "start": 67896, - "end": 67897, + "start": 69436, + "end": 69437, "loc": { "start": { - "line": 1946, + "line": 2001, "column": 28 }, "end": { - "line": 1946, + "line": 2001, "column": 29 } } @@ -273996,15 +279071,15 @@ "binop": null }, "value": "i", - "start": 67897, - "end": 67898, + "start": 69437, + "end": 69438, "loc": { "start": { - "line": 1946, + "line": 2001, "column": 29 }, "end": { - "line": 1946, + "line": 2001, "column": 30 } } @@ -274022,15 +279097,15 @@ "binop": null, "updateContext": null }, - "start": 67898, - "end": 67899, + "start": 69438, + "end": 69439, "loc": { "start": { - "line": 1946, + "line": 2001, "column": 30 }, "end": { - "line": 1946, + "line": 2001, "column": 31 } } @@ -274048,15 +279123,15 @@ "binop": null, "updateContext": null }, - "start": 67899, - "end": 67900, + "start": 69439, + "end": 69440, "loc": { "start": { - "line": 1946, + "line": 2001, "column": 31 }, "end": { - "line": 1946, + "line": 2001, "column": 32 } } @@ -274073,17 +279148,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 67900, - "end": 67905, + "value": "clippable", + "start": 69440, + "end": 69449, "loc": { "start": { - "line": 1946, + "line": 2001, "column": 32 }, "end": { - "line": 1946, - "column": 37 + "line": 2001, + "column": 41 } } }, @@ -274101,16 +279176,16 @@ "updateContext": null }, "value": "=", - "start": 67906, - "end": 67907, + "start": 69450, + "end": 69451, "loc": { "start": { - "line": 1946, - "column": 38 + "line": 2001, + "column": 42 }, "end": { - "line": 1946, - "column": 39 + "line": 2001, + "column": 43 } } }, @@ -274126,17 +279201,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 67908, - "end": 67913, + "value": "clippable", + "start": 69452, + "end": 69461, "loc": { "start": { - "line": 1946, - "column": 40 + "line": 2001, + "column": 44 }, "end": { - "line": 1946, - "column": 45 + "line": 2001, + "column": 53 } } }, @@ -274153,16 +279228,16 @@ "binop": null, "updateContext": null }, - "start": 67913, - "end": 67914, + "start": 69461, + "end": 69462, "loc": { "start": { - "line": 1946, - "column": 45 + "line": 2001, + "column": 53 }, "end": { - "line": 1946, - "column": 46 + "line": 2001, + "column": 54 } } }, @@ -274178,15 +279253,15 @@ "postfix": false, "binop": null }, - "start": 67923, - "end": 67924, + "start": 69471, + "end": 69472, "loc": { "start": { - "line": 1947, + "line": 2002, "column": 8 }, "end": { - "line": 1947, + "line": 2002, "column": 9 } } @@ -274206,15 +279281,15 @@ "updateContext": null }, "value": "this", - "start": 67933, - "end": 67937, + "start": 69481, + "end": 69485, "loc": { "start": { - "line": 1948, + "line": 2003, "column": 8 }, "end": { - "line": 1948, + "line": 2003, "column": 12 } } @@ -274232,15 +279307,15 @@ "binop": null, "updateContext": null }, - "start": 67937, - "end": 67938, + "start": 69485, + "end": 69486, "loc": { "start": { - "line": 1948, + "line": 2003, "column": 12 }, "end": { - "line": 1948, + "line": 2003, "column": 13 } } @@ -274258,15 +279333,15 @@ "binop": null }, "value": "glRedraw", - "start": 67938, - "end": 67946, + "start": 69486, + "end": 69494, "loc": { "start": { - "line": 1948, + "line": 2003, "column": 13 }, "end": { - "line": 1948, + "line": 2003, "column": 21 } } @@ -274283,15 +279358,15 @@ "postfix": false, "binop": null }, - "start": 67946, - "end": 67947, + "start": 69494, + "end": 69495, "loc": { "start": { - "line": 1948, + "line": 2003, "column": 21 }, "end": { - "line": 1948, + "line": 2003, "column": 22 } } @@ -274308,15 +279383,15 @@ "postfix": false, "binop": null }, - "start": 67947, - "end": 67948, + "start": 69495, + "end": 69496, "loc": { "start": { - "line": 1948, + "line": 2003, "column": 22 }, "end": { - "line": 1948, + "line": 2003, "column": 23 } } @@ -274334,15 +279409,15 @@ "binop": null, "updateContext": null }, - "start": 67948, - "end": 67949, + "start": 69496, + "end": 69497, "loc": { "start": { - "line": 1948, + "line": 2003, "column": 23 }, "end": { - "line": 1948, + "line": 2003, "column": 24 } } @@ -274359,31 +279434,31 @@ "postfix": false, "binop": null }, - "start": 67954, - "end": 67955, + "start": 69502, + "end": 69503, "loc": { "start": { - "line": 1949, + "line": 2004, "column": 4 }, "end": { - "line": 1949, + "line": 2004, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", - "start": 67961, - "end": 68180, + "value": "*\n * Gets if this SceneModel is collidable.\n *\n * @type {Boolean}\n ", + "start": 69509, + "end": 69596, "loc": { "start": { - "line": 1951, + "line": 2006, "column": 4 }, "end": { - "line": 1957, + "line": 2010, "column": 7 } } @@ -274401,15 +279476,15 @@ "binop": null }, "value": "get", - "start": 68185, - "end": 68188, + "start": 69601, + "end": 69604, "loc": { "start": { - "line": 1958, + "line": 2011, "column": 4 }, "end": { - "line": 1958, + "line": 2011, "column": 7 } } @@ -274426,17 +279501,17 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 68189, - "end": 68195, + "value": "collidable", + "start": 69605, + "end": 69615, "loc": { "start": { - "line": 1958, + "line": 2011, "column": 8 }, "end": { - "line": 1958, - "column": 14 + "line": 2011, + "column": 18 } } }, @@ -274452,16 +279527,16 @@ "postfix": false, "binop": null }, - "start": 68195, - "end": 68196, + "start": 69615, + "end": 69616, "loc": { "start": { - "line": 1958, - "column": 14 + "line": 2011, + "column": 18 }, "end": { - "line": 1958, - "column": 15 + "line": 2011, + "column": 19 } } }, @@ -274477,16 +279552,16 @@ "postfix": false, "binop": null }, - "start": 68196, - "end": 68197, + "start": 69616, + "end": 69617, "loc": { "start": { - "line": 1958, - "column": 15 + "line": 2011, + "column": 19 }, "end": { - "line": 1958, - "column": 16 + "line": 2011, + "column": 20 } } }, @@ -274502,16 +279577,16 @@ "postfix": false, "binop": null }, - "start": 68198, - "end": 68199, + "start": 69618, + "end": 69619, "loc": { "start": { - "line": 1958, - "column": 17 + "line": 2011, + "column": 21 }, "end": { - "line": 1958, - "column": 18 + "line": 2011, + "column": 22 } } }, @@ -274530,15 +279605,15 @@ "updateContext": null }, "value": "return", - "start": 68208, - "end": 68214, + "start": 69628, + "end": 69634, "loc": { "start": { - "line": 1959, + "line": 2012, "column": 8 }, "end": { - "line": 1959, + "line": 2012, "column": 14 } } @@ -274558,15 +279633,15 @@ "updateContext": null }, "value": "this", - "start": 68215, - "end": 68219, + "start": 69635, + "end": 69639, "loc": { "start": { - "line": 1959, + "line": 2012, "column": 15 }, "end": { - "line": 1959, + "line": 2012, "column": 19 } } @@ -274584,15 +279659,15 @@ "binop": null, "updateContext": null }, - "start": 68219, - "end": 68220, + "start": 69639, + "end": 69640, "loc": { "start": { - "line": 1959, + "line": 2012, "column": 19 }, "end": { - "line": 1959, + "line": 2012, "column": 20 } } @@ -274609,17 +279684,17 @@ "postfix": false, "binop": null }, - "value": "_culled", - "start": 68220, - "end": 68227, + "value": "_collidable", + "start": 69640, + "end": 69651, "loc": { "start": { - "line": 1959, + "line": 2012, "column": 20 }, "end": { - "line": 1959, - "column": 27 + "line": 2012, + "column": 31 } } }, @@ -274636,16 +279711,16 @@ "binop": null, "updateContext": null }, - "start": 68227, - "end": 68228, + "start": 69651, + "end": 69652, "loc": { "start": { - "line": 1959, - "column": 27 + "line": 2012, + "column": 31 }, "end": { - "line": 1959, - "column": 28 + "line": 2012, + "column": 32 } } }, @@ -274661,31 +279736,31 @@ "postfix": false, "binop": null }, - "start": 68233, - "end": 68234, + "start": 69657, + "end": 69658, "loc": { "start": { - "line": 1960, + "line": 2013, "column": 4 }, "end": { - "line": 1960, + "line": 2013, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n ", - "start": 68240, - "end": 68459, + "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are collidable.\n *\n * @type {Boolean}\n ", + "start": 69664, + "end": 69781, "loc": { "start": { - "line": 1962, + "line": 2015, "column": 4 }, "end": { - "line": 1968, + "line": 2019, "column": 7 } } @@ -274703,15 +279778,15 @@ "binop": null }, "value": "set", - "start": 68464, - "end": 68467, + "start": 69786, + "end": 69789, "loc": { "start": { - "line": 1969, + "line": 2020, "column": 4 }, "end": { - "line": 1969, + "line": 2020, "column": 7 } } @@ -274728,17 +279803,17 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 68468, - "end": 68474, + "value": "collidable", + "start": 69790, + "end": 69800, "loc": { "start": { - "line": 1969, + "line": 2020, "column": 8 }, "end": { - "line": 1969, - "column": 14 + "line": 2020, + "column": 18 } } }, @@ -274754,16 +279829,16 @@ "postfix": false, "binop": null }, - "start": 68474, - "end": 68475, + "start": 69800, + "end": 69801, "loc": { "start": { - "line": 1969, - "column": 14 + "line": 2020, + "column": 18 }, "end": { - "line": 1969, - "column": 15 + "line": 2020, + "column": 19 } } }, @@ -274779,17 +279854,17 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 68475, - "end": 68481, + "value": "collidable", + "start": 69801, + "end": 69811, "loc": { "start": { - "line": 1969, - "column": 15 + "line": 2020, + "column": 19 }, "end": { - "line": 1969, - "column": 21 + "line": 2020, + "column": 29 } } }, @@ -274805,16 +279880,16 @@ "postfix": false, "binop": null }, - "start": 68481, - "end": 68482, + "start": 69811, + "end": 69812, "loc": { "start": { - "line": 1969, - "column": 21 + "line": 2020, + "column": 29 }, "end": { - "line": 1969, - "column": 22 + "line": 2020, + "column": 30 } } }, @@ -274830,16 +279905,16 @@ "postfix": false, "binop": null }, - "start": 68483, - "end": 68484, + "start": 69813, + "end": 69814, "loc": { "start": { - "line": 1969, - "column": 23 + "line": 2020, + "column": 31 }, "end": { - "line": 1969, - "column": 24 + "line": 2020, + "column": 32 } } }, @@ -274855,17 +279930,17 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 68493, - "end": 68499, + "value": "collidable", + "start": 69823, + "end": 69833, "loc": { "start": { - "line": 1970, + "line": 2021, "column": 8 }, "end": { - "line": 1970, - "column": 14 + "line": 2021, + "column": 18 } } }, @@ -274883,76 +279958,76 @@ "updateContext": null }, "value": "=", - "start": 68500, - "end": 68501, + "start": 69834, + "end": 69835, "loc": { "start": { - "line": 1970, - "column": 15 + "line": 2021, + "column": 19 }, "end": { - "line": 1970, - "column": 16 + "line": 2021, + "column": 20 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 68502, - "end": 68503, + "value": "collidable", + "start": 69836, + "end": 69846, "loc": { "start": { - "line": 1970, - "column": 17 + "line": 2021, + "column": 21 }, "end": { - "line": 1970, - "column": 18 + "line": 2021, + "column": 31 } } }, { "type": { - "label": "prefix", + "label": "==/!=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "!", - "start": 68503, - "end": 68504, + "value": "!==", + "start": 69847, + "end": 69850, "loc": { "start": { - "line": 1970, - "column": 18 + "line": 2021, + "column": 32 }, "end": { - "line": 1970, - "column": 19 + "line": 2021, + "column": 35 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -274960,19 +280035,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "culled", - "start": 68504, - "end": 68510, + "value": "false", + "start": 69851, + "end": 69856, "loc": { "start": { - "line": 1970, - "column": 19 + "line": 2021, + "column": 36 }, "end": { - "line": 1970, - "column": 25 + "line": 2021, + "column": 41 } } }, @@ -274989,16 +280065,16 @@ "binop": null, "updateContext": null }, - "start": 68510, - "end": 68511, + "start": 69856, + "end": 69857, "loc": { "start": { - "line": 1970, - "column": 25 + "line": 2021, + "column": 41 }, "end": { - "line": 1970, - "column": 26 + "line": 2021, + "column": 42 } } }, @@ -275017,15 +280093,15 @@ "updateContext": null }, "value": "this", - "start": 68520, - "end": 68524, + "start": 69866, + "end": 69870, "loc": { "start": { - "line": 1971, + "line": 2022, "column": 8 }, "end": { - "line": 1971, + "line": 2022, "column": 12 } } @@ -275043,15 +280119,15 @@ "binop": null, "updateContext": null }, - "start": 68524, - "end": 68525, + "start": 69870, + "end": 69871, "loc": { "start": { - "line": 1971, + "line": 2022, "column": 12 }, "end": { - "line": 1971, + "line": 2022, "column": 13 } } @@ -275068,17 +280144,17 @@ "postfix": false, "binop": null }, - "value": "_culled", - "start": 68525, - "end": 68532, + "value": "_collidable", + "start": 69871, + "end": 69882, "loc": { "start": { - "line": 1971, + "line": 2022, "column": 13 }, "end": { - "line": 1971, - "column": 20 + "line": 2022, + "column": 24 } } }, @@ -275096,16 +280172,16 @@ "updateContext": null }, "value": "=", - "start": 68533, - "end": 68534, + "start": 69883, + "end": 69884, "loc": { "start": { - "line": 1971, - "column": 21 + "line": 2022, + "column": 25 }, "end": { - "line": 1971, - "column": 22 + "line": 2022, + "column": 26 } } }, @@ -275121,17 +280197,17 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 68535, - "end": 68541, + "value": "collidable", + "start": 69885, + "end": 69895, "loc": { "start": { - "line": 1971, - "column": 23 + "line": 2022, + "column": 27 }, "end": { - "line": 1971, - "column": 29 + "line": 2022, + "column": 37 } } }, @@ -275148,16 +280224,16 @@ "binop": null, "updateContext": null }, - "start": 68541, - "end": 68542, + "start": 69895, + "end": 69896, "loc": { "start": { - "line": 1971, - "column": 29 + "line": 2022, + "column": 37 }, "end": { - "line": 1971, - "column": 30 + "line": 2022, + "column": 38 } } }, @@ -275176,15 +280252,15 @@ "updateContext": null }, "value": "for", - "start": 68551, - "end": 68554, + "start": 69905, + "end": 69908, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 8 }, "end": { - "line": 1972, + "line": 2023, "column": 11 } } @@ -275201,15 +280277,15 @@ "postfix": false, "binop": null }, - "start": 68555, - "end": 68556, + "start": 69909, + "end": 69910, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 12 }, "end": { - "line": 1972, + "line": 2023, "column": 13 } } @@ -275229,15 +280305,15 @@ "updateContext": null }, "value": "let", - "start": 68556, - "end": 68559, + "start": 69910, + "end": 69913, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 13 }, "end": { - "line": 1972, + "line": 2023, "column": 16 } } @@ -275255,15 +280331,15 @@ "binop": null }, "value": "i", - "start": 68560, - "end": 68561, + "start": 69914, + "end": 69915, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 17 }, "end": { - "line": 1972, + "line": 2023, "column": 18 } } @@ -275282,15 +280358,15 @@ "updateContext": null }, "value": "=", - "start": 68562, - "end": 68563, + "start": 69916, + "end": 69917, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 19 }, "end": { - "line": 1972, + "line": 2023, "column": 20 } } @@ -275309,15 +280385,15 @@ "updateContext": null }, "value": 0, - "start": 68564, - "end": 68565, + "start": 69918, + "end": 69919, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 21 }, "end": { - "line": 1972, + "line": 2023, "column": 22 } } @@ -275335,15 +280411,15 @@ "binop": null, "updateContext": null }, - "start": 68565, - "end": 68566, + "start": 69919, + "end": 69920, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 22 }, "end": { - "line": 1972, + "line": 2023, "column": 23 } } @@ -275361,15 +280437,15 @@ "binop": null }, "value": "len", - "start": 68567, - "end": 68570, + "start": 69921, + "end": 69924, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 24 }, "end": { - "line": 1972, + "line": 2023, "column": 27 } } @@ -275388,15 +280464,15 @@ "updateContext": null }, "value": "=", - "start": 68571, - "end": 68572, + "start": 69925, + "end": 69926, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 28 }, "end": { - "line": 1972, + "line": 2023, "column": 29 } } @@ -275416,15 +280492,15 @@ "updateContext": null }, "value": "this", - "start": 68573, - "end": 68577, + "start": 69927, + "end": 69931, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 30 }, "end": { - "line": 1972, + "line": 2023, "column": 34 } } @@ -275442,15 +280518,15 @@ "binop": null, "updateContext": null }, - "start": 68577, - "end": 68578, + "start": 69931, + "end": 69932, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 34 }, "end": { - "line": 1972, + "line": 2023, "column": 35 } } @@ -275468,15 +280544,15 @@ "binop": null }, "value": "_entityList", - "start": 68578, - "end": 68589, + "start": 69932, + "end": 69943, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 35 }, "end": { - "line": 1972, + "line": 2023, "column": 46 } } @@ -275494,15 +280570,15 @@ "binop": null, "updateContext": null }, - "start": 68589, - "end": 68590, + "start": 69943, + "end": 69944, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 46 }, "end": { - "line": 1972, + "line": 2023, "column": 47 } } @@ -275520,15 +280596,15 @@ "binop": null }, "value": "length", - "start": 68590, - "end": 68596, + "start": 69944, + "end": 69950, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 47 }, "end": { - "line": 1972, + "line": 2023, "column": 53 } } @@ -275546,15 +280622,15 @@ "binop": null, "updateContext": null }, - "start": 68596, - "end": 68597, + "start": 69950, + "end": 69951, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 53 }, "end": { - "line": 1972, + "line": 2023, "column": 54 } } @@ -275572,15 +280648,15 @@ "binop": null }, "value": "i", - "start": 68598, - "end": 68599, + "start": 69952, + "end": 69953, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 55 }, "end": { - "line": 1972, + "line": 2023, "column": 56 } } @@ -275599,15 +280675,15 @@ "updateContext": null }, "value": "<", - "start": 68600, - "end": 68601, + "start": 69954, + "end": 69955, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 57 }, "end": { - "line": 1972, + "line": 2023, "column": 58 } } @@ -275625,15 +280701,15 @@ "binop": null }, "value": "len", - "start": 68602, - "end": 68605, + "start": 69956, + "end": 69959, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 59 }, "end": { - "line": 1972, + "line": 2023, "column": 62 } } @@ -275651,15 +280727,15 @@ "binop": null, "updateContext": null }, - "start": 68605, - "end": 68606, + "start": 69959, + "end": 69960, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 62 }, "end": { - "line": 1972, + "line": 2023, "column": 63 } } @@ -275677,15 +280753,15 @@ "binop": null }, "value": "i", - "start": 68607, - "end": 68608, + "start": 69961, + "end": 69962, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 64 }, "end": { - "line": 1972, + "line": 2023, "column": 65 } } @@ -275703,15 +280779,15 @@ "binop": null }, "value": "++", - "start": 68608, - "end": 68610, + "start": 69962, + "end": 69964, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 65 }, "end": { - "line": 1972, + "line": 2023, "column": 67 } } @@ -275728,15 +280804,15 @@ "postfix": false, "binop": null }, - "start": 68610, - "end": 68611, + "start": 69964, + "end": 69965, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 67 }, "end": { - "line": 1972, + "line": 2023, "column": 68 } } @@ -275753,15 +280829,15 @@ "postfix": false, "binop": null }, - "start": 68612, - "end": 68613, + "start": 69966, + "end": 69967, "loc": { "start": { - "line": 1972, + "line": 2023, "column": 69 }, "end": { - "line": 1972, + "line": 2023, "column": 70 } } @@ -275781,15 +280857,15 @@ "updateContext": null }, "value": "this", - "start": 68626, - "end": 68630, + "start": 69980, + "end": 69984, "loc": { "start": { - "line": 1973, + "line": 2024, "column": 12 }, "end": { - "line": 1973, + "line": 2024, "column": 16 } } @@ -275807,15 +280883,15 @@ "binop": null, "updateContext": null }, - "start": 68630, - "end": 68631, + "start": 69984, + "end": 69985, "loc": { "start": { - "line": 1973, + "line": 2024, "column": 16 }, "end": { - "line": 1973, + "line": 2024, "column": 17 } } @@ -275833,15 +280909,15 @@ "binop": null }, "value": "_entityList", - "start": 68631, - "end": 68642, + "start": 69985, + "end": 69996, "loc": { "start": { - "line": 1973, + "line": 2024, "column": 17 }, "end": { - "line": 1973, + "line": 2024, "column": 28 } } @@ -275859,15 +280935,15 @@ "binop": null, "updateContext": null }, - "start": 68642, - "end": 68643, + "start": 69996, + "end": 69997, "loc": { "start": { - "line": 1973, + "line": 2024, "column": 28 }, "end": { - "line": 1973, + "line": 2024, "column": 29 } } @@ -275885,15 +280961,15 @@ "binop": null }, "value": "i", - "start": 68643, - "end": 68644, + "start": 69997, + "end": 69998, "loc": { "start": { - "line": 1973, + "line": 2024, "column": 29 }, "end": { - "line": 1973, + "line": 2024, "column": 30 } } @@ -275911,15 +280987,15 @@ "binop": null, "updateContext": null }, - "start": 68644, - "end": 68645, + "start": 69998, + "end": 69999, "loc": { "start": { - "line": 1973, + "line": 2024, "column": 30 }, "end": { - "line": 1973, + "line": 2024, "column": 31 } } @@ -275937,15 +281013,15 @@ "binop": null, "updateContext": null }, - "start": 68645, - "end": 68646, + "start": 69999, + "end": 70000, "loc": { "start": { - "line": 1973, + "line": 2024, "column": 31 }, "end": { - "line": 1973, + "line": 2024, "column": 32 } } @@ -275962,17 +281038,17 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 68646, - "end": 68652, + "value": "collidable", + "start": 70000, + "end": 70010, "loc": { "start": { - "line": 1973, + "line": 2024, "column": 32 }, "end": { - "line": 1973, - "column": 38 + "line": 2024, + "column": 42 } } }, @@ -275990,16 +281066,16 @@ "updateContext": null }, "value": "=", - "start": 68653, - "end": 68654, + "start": 70011, + "end": 70012, "loc": { "start": { - "line": 1973, - "column": 39 + "line": 2024, + "column": 43 }, "end": { - "line": 1973, - "column": 40 + "line": 2024, + "column": 44 } } }, @@ -276015,17 +281091,17 @@ "postfix": false, "binop": null }, - "value": "culled", - "start": 68655, - "end": 68661, + "value": "collidable", + "start": 70013, + "end": 70023, "loc": { "start": { - "line": 1973, - "column": 41 + "line": 2024, + "column": 45 }, "end": { - "line": 1973, - "column": 47 + "line": 2024, + "column": 55 } } }, @@ -276042,16 +281118,16 @@ "binop": null, "updateContext": null }, - "start": 68661, - "end": 68662, + "start": 70023, + "end": 70024, "loc": { "start": { - "line": 1973, - "column": 47 + "line": 2024, + "column": 55 }, "end": { - "line": 1973, - "column": 48 + "line": 2024, + "column": 56 } } }, @@ -276067,70 +281143,57 @@ "postfix": false, "binop": null }, - "start": 68671, - "end": 68672, + "start": 70033, + "end": 70034, "loc": { "start": { - "line": 1974, + "line": 2025, "column": 8 }, "end": { - "line": 1974, + "line": 2025, "column": 9 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 68681, - "end": 68685, + "start": 70039, + "end": 70040, "loc": { "start": { - "line": 1975, - "column": 8 + "line": 2026, + "column": 4 }, "end": { - "line": 1975, - "column": 12 + "line": 2026, + "column": 5 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 68685, - "end": 68686, + "type": "CommentBlock", + "value": "*\n * Gets if this SceneModel is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", + "start": 70046, + "end": 70194, "loc": { "start": { - "line": 1975, - "column": 12 + "line": 2028, + "column": 4 }, "end": { - "line": 1975, - "column": 13 + "line": 2034, + "column": 7 } } }, @@ -276146,50 +281209,25 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 68686, - "end": 68694, - "loc": { - "start": { - "line": 1975, - "column": 13 - }, - "end": { - "line": 1975, - "column": 21 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 68694, - "end": 68695, + "value": "get", + "start": 70199, + "end": 70202, "loc": { "start": { - "line": 1975, - "column": 21 + "line": 2035, + "column": 4 }, "end": { - "line": 1975, - "column": 22 + "line": 2035, + "column": 7 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -276197,48 +281235,48 @@ "postfix": false, "binop": null }, - "start": 68695, - "end": 68696, + "value": "pickable", + "start": 70203, + "end": 70211, "loc": { "start": { - "line": 1975, - "column": 22 + "line": 2035, + "column": 8 }, "end": { - "line": 1975, - "column": 23 + "line": 2035, + "column": 16 } } }, { "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": 68696, - "end": 68697, + "start": 70211, + "end": 70212, "loc": { "start": { - "line": 1975, - "column": 23 + "line": 2035, + "column": 16 }, "end": { - "line": 1975, - "column": 24 + "line": 2035, + "column": 17 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -276248,39 +281286,23 @@ "postfix": false, "binop": null }, - "start": 68702, - "end": 68703, - "loc": { - "start": { - "line": 1976, - "column": 4 - }, - "end": { - "line": 1976, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Gets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", - "start": 68709, - "end": 68917, + "start": 70212, + "end": 70213, "loc": { "start": { - "line": 1978, - "column": 4 + "line": 2035, + "column": 17 }, "end": { - "line": 1984, - "column": 7 + "line": 2035, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -276289,43 +281311,44 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 68922, - "end": 68925, + "start": 70214, + "end": 70215, "loc": { "start": { - "line": 1985, - "column": 4 + "line": 2035, + "column": 19 }, "end": { - "line": 1985, - "column": 7 + "line": 2035, + "column": 20 } } }, { "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": "clippable", - "start": 68926, - "end": 68935, + "value": "return", + "start": 70224, + "end": 70230, "loc": { "start": { - "line": 1985, + "line": 2036, "column": 8 }, "end": { - "line": 1985, - "column": 17 + "line": 2036, + "column": 14 } } }, @@ -276341,130 +281364,131 @@ "postfix": false, "binop": null }, - "start": 68935, - "end": 68936, + "start": 70231, + "end": 70232, "loc": { "start": { - "line": 1985, - "column": 17 + "line": 2036, + "column": 15 }, "end": { - "line": 1985, - "column": 18 + "line": 2036, + "column": 16 } } }, { "type": { - "label": ")", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 68936, - "end": 68937, + "value": "this", + "start": 70232, + "end": 70236, "loc": { "start": { - "line": 1985, - "column": 18 + "line": 2036, + "column": 16 }, "end": { - "line": 1985, - "column": 19 + "line": 2036, + "column": 20 } } }, { "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": 68938, - "end": 68939, + "start": 70236, + "end": 70237, "loc": { "start": { - "line": 1985, + "line": 2036, "column": 20 }, "end": { - "line": 1985, + "line": 2036, "column": 21 } } }, { "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": 68948, - "end": 68954, + "value": "numPickableLayerPortions", + "start": 70237, + "end": 70261, "loc": { "start": { - "line": 1986, - "column": 8 + "line": 2036, + "column": 21 }, "end": { - "line": 1986, - "column": 14 + "line": 2036, + "column": 45 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": "", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "value": "this", - "start": 68955, - "end": 68959, + "value": ">", + "start": 70262, + "end": 70263, "loc": { "start": { - "line": 1986, - "column": 15 + "line": 2036, + "column": 46 }, "end": { - "line": 1986, - "column": 19 + "line": 2036, + "column": 47 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -276473,24 +281497,25 @@ "binop": null, "updateContext": null }, - "start": 68959, - "end": 68960, + "value": 0, + "start": 70264, + "end": 70265, "loc": { "start": { - "line": 1986, - "column": 19 + "line": 2036, + "column": 48 }, "end": { - "line": 1986, - "column": 20 + "line": 2036, + "column": 49 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -276498,17 +281523,16 @@ "postfix": false, "binop": null }, - "value": "_clippable", - "start": 68960, - "end": 68970, + "start": 70265, + "end": 70266, "loc": { "start": { - "line": 1986, - "column": 20 + "line": 2036, + "column": 49 }, "end": { - "line": 1986, - "column": 30 + "line": 2036, + "column": 50 } } }, @@ -276525,16 +281549,16 @@ "binop": null, "updateContext": null }, - "start": 68970, - "end": 68971, + "start": 70266, + "end": 70267, "loc": { "start": { - "line": 1986, - "column": 30 + "line": 2036, + "column": 50 }, "end": { - "line": 1986, - "column": 31 + "line": 2036, + "column": 51 } } }, @@ -276550,31 +281574,31 @@ "postfix": false, "binop": null }, - "start": 68976, - "end": 68977, + "start": 70272, + "end": 70273, "loc": { "start": { - "line": 1987, + "line": 2037, "column": 4 }, "end": { - "line": 1987, + "line": 2037, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n ", - "start": 68983, - "end": 69191, + "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", + "start": 70279, + "end": 70457, "loc": { "start": { - "line": 1989, + "line": 2039, "column": 4 }, "end": { - "line": 1995, + "line": 2045, "column": 7 } } @@ -276592,15 +281616,15 @@ "binop": null }, "value": "set", - "start": 69196, - "end": 69199, + "start": 70462, + "end": 70465, "loc": { "start": { - "line": 1996, + "line": 2046, "column": 4 }, "end": { - "line": 1996, + "line": 2046, "column": 7 } } @@ -276617,17 +281641,17 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 69200, - "end": 69209, + "value": "pickable", + "start": 70466, + "end": 70474, "loc": { "start": { - "line": 1996, + "line": 2046, "column": 8 }, "end": { - "line": 1996, - "column": 17 + "line": 2046, + "column": 16 } } }, @@ -276643,16 +281667,16 @@ "postfix": false, "binop": null }, - "start": 69209, - "end": 69210, + "start": 70474, + "end": 70475, "loc": { "start": { - "line": 1996, - "column": 17 + "line": 2046, + "column": 16 }, "end": { - "line": 1996, - "column": 18 + "line": 2046, + "column": 17 } } }, @@ -276668,17 +281692,17 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 69210, - "end": 69219, + "value": "pickable", + "start": 70475, + "end": 70483, "loc": { "start": { - "line": 1996, - "column": 18 + "line": 2046, + "column": 17 }, "end": { - "line": 1996, - "column": 27 + "line": 2046, + "column": 25 } } }, @@ -276694,16 +281718,16 @@ "postfix": false, "binop": null }, - "start": 69219, - "end": 69220, + "start": 70483, + "end": 70484, "loc": { "start": { - "line": 1996, - "column": 27 + "line": 2046, + "column": 25 }, "end": { - "line": 1996, - "column": 28 + "line": 2046, + "column": 26 } } }, @@ -276719,16 +281743,16 @@ "postfix": false, "binop": null }, - "start": 69221, - "end": 69222, + "start": 70485, + "end": 70486, "loc": { "start": { - "line": 1996, - "column": 29 + "line": 2046, + "column": 27 }, "end": { - "line": 1996, - "column": 30 + "line": 2046, + "column": 28 } } }, @@ -276744,17 +281768,17 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 69231, - "end": 69240, + "value": "pickable", + "start": 70495, + "end": 70503, "loc": { "start": { - "line": 1997, + "line": 2047, "column": 8 }, "end": { - "line": 1997, - "column": 17 + "line": 2047, + "column": 16 } } }, @@ -276772,16 +281796,16 @@ "updateContext": null }, "value": "=", - "start": 69241, - "end": 69242, + "start": 70504, + "end": 70505, "loc": { "start": { - "line": 1997, - "column": 18 + "line": 2047, + "column": 17 }, "end": { - "line": 1997, - "column": 19 + "line": 2047, + "column": 18 } } }, @@ -276797,17 +281821,17 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 69243, - "end": 69252, + "value": "pickable", + "start": 70506, + "end": 70514, "loc": { "start": { - "line": 1997, - "column": 20 + "line": 2047, + "column": 19 }, "end": { - "line": 1997, - "column": 29 + "line": 2047, + "column": 27 } } }, @@ -276825,16 +281849,16 @@ "updateContext": null }, "value": "!==", - "start": 69253, - "end": 69256, + "start": 70515, + "end": 70518, "loc": { "start": { - "line": 1997, - "column": 30 + "line": 2047, + "column": 28 }, "end": { - "line": 1997, - "column": 33 + "line": 2047, + "column": 31 } } }, @@ -276853,16 +281877,16 @@ "updateContext": null }, "value": "false", - "start": 69257, - "end": 69262, + "start": 70519, + "end": 70524, "loc": { "start": { - "line": 1997, - "column": 34 + "line": 2047, + "column": 32 }, "end": { - "line": 1997, - "column": 39 + "line": 2047, + "column": 37 } } }, @@ -276879,16 +281903,16 @@ "binop": null, "updateContext": null }, - "start": 69262, - "end": 69263, + "start": 70524, + "end": 70525, "loc": { "start": { - "line": 1997, - "column": 39 + "line": 2047, + "column": 37 }, "end": { - "line": 1997, - "column": 40 + "line": 2047, + "column": 38 } } }, @@ -276907,15 +281931,15 @@ "updateContext": null }, "value": "this", - "start": 69272, - "end": 69276, + "start": 70534, + "end": 70538, "loc": { "start": { - "line": 1998, + "line": 2048, "column": 8 }, "end": { - "line": 1998, + "line": 2048, "column": 12 } } @@ -276933,15 +281957,15 @@ "binop": null, "updateContext": null }, - "start": 69276, - "end": 69277, + "start": 70538, + "end": 70539, "loc": { "start": { - "line": 1998, + "line": 2048, "column": 12 }, "end": { - "line": 1998, + "line": 2048, "column": 13 } } @@ -276958,17 +281982,17 @@ "postfix": false, "binop": null }, - "value": "_clippable", - "start": 69277, - "end": 69287, + "value": "_pickable", + "start": 70539, + "end": 70548, "loc": { "start": { - "line": 1998, + "line": 2048, "column": 13 }, "end": { - "line": 1998, - "column": 23 + "line": 2048, + "column": 22 } } }, @@ -276986,16 +282010,16 @@ "updateContext": null }, "value": "=", - "start": 69288, - "end": 69289, + "start": 70549, + "end": 70550, "loc": { "start": { - "line": 1998, - "column": 24 + "line": 2048, + "column": 23 }, "end": { - "line": 1998, - "column": 25 + "line": 2048, + "column": 24 } } }, @@ -277011,17 +282035,17 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 69290, - "end": 69299, + "value": "pickable", + "start": 70551, + "end": 70559, "loc": { "start": { - "line": 1998, - "column": 26 + "line": 2048, + "column": 25 }, "end": { - "line": 1998, - "column": 35 + "line": 2048, + "column": 33 } } }, @@ -277038,16 +282062,16 @@ "binop": null, "updateContext": null }, - "start": 69299, - "end": 69300, + "start": 70559, + "end": 70560, "loc": { "start": { - "line": 1998, - "column": 35 + "line": 2048, + "column": 33 }, "end": { - "line": 1998, - "column": 36 + "line": 2048, + "column": 34 } } }, @@ -277066,15 +282090,15 @@ "updateContext": null }, "value": "for", - "start": 69309, - "end": 69312, + "start": 70569, + "end": 70572, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 8 }, "end": { - "line": 1999, + "line": 2049, "column": 11 } } @@ -277091,15 +282115,15 @@ "postfix": false, "binop": null }, - "start": 69313, - "end": 69314, + "start": 70573, + "end": 70574, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 12 }, "end": { - "line": 1999, + "line": 2049, "column": 13 } } @@ -277119,15 +282143,15 @@ "updateContext": null }, "value": "let", - "start": 69314, - "end": 69317, + "start": 70574, + "end": 70577, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 13 }, "end": { - "line": 1999, + "line": 2049, "column": 16 } } @@ -277145,15 +282169,15 @@ "binop": null }, "value": "i", - "start": 69318, - "end": 69319, + "start": 70578, + "end": 70579, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 17 }, "end": { - "line": 1999, + "line": 2049, "column": 18 } } @@ -277172,15 +282196,15 @@ "updateContext": null }, "value": "=", - "start": 69320, - "end": 69321, + "start": 70580, + "end": 70581, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 19 }, "end": { - "line": 1999, + "line": 2049, "column": 20 } } @@ -277199,15 +282223,15 @@ "updateContext": null }, "value": 0, - "start": 69322, - "end": 69323, + "start": 70582, + "end": 70583, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 21 }, "end": { - "line": 1999, + "line": 2049, "column": 22 } } @@ -277225,15 +282249,15 @@ "binop": null, "updateContext": null }, - "start": 69323, - "end": 69324, + "start": 70583, + "end": 70584, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 22 }, "end": { - "line": 1999, + "line": 2049, "column": 23 } } @@ -277251,15 +282275,15 @@ "binop": null }, "value": "len", - "start": 69325, - "end": 69328, + "start": 70585, + "end": 70588, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 24 }, "end": { - "line": 1999, + "line": 2049, "column": 27 } } @@ -277278,15 +282302,15 @@ "updateContext": null }, "value": "=", - "start": 69329, - "end": 69330, + "start": 70589, + "end": 70590, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 28 }, "end": { - "line": 1999, + "line": 2049, "column": 29 } } @@ -277306,15 +282330,15 @@ "updateContext": null }, "value": "this", - "start": 69331, - "end": 69335, + "start": 70591, + "end": 70595, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 30 }, "end": { - "line": 1999, + "line": 2049, "column": 34 } } @@ -277332,15 +282356,15 @@ "binop": null, "updateContext": null }, - "start": 69335, - "end": 69336, + "start": 70595, + "end": 70596, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 34 }, "end": { - "line": 1999, + "line": 2049, "column": 35 } } @@ -277358,15 +282382,15 @@ "binop": null }, "value": "_entityList", - "start": 69336, - "end": 69347, + "start": 70596, + "end": 70607, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 35 }, "end": { - "line": 1999, + "line": 2049, "column": 46 } } @@ -277384,15 +282408,15 @@ "binop": null, "updateContext": null }, - "start": 69347, - "end": 69348, + "start": 70607, + "end": 70608, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 46 }, "end": { - "line": 1999, + "line": 2049, "column": 47 } } @@ -277410,15 +282434,15 @@ "binop": null }, "value": "length", - "start": 69348, - "end": 69354, + "start": 70608, + "end": 70614, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 47 }, "end": { - "line": 1999, + "line": 2049, "column": 53 } } @@ -277436,15 +282460,15 @@ "binop": null, "updateContext": null }, - "start": 69354, - "end": 69355, + "start": 70614, + "end": 70615, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 53 }, "end": { - "line": 1999, + "line": 2049, "column": 54 } } @@ -277462,15 +282486,15 @@ "binop": null }, "value": "i", - "start": 69356, - "end": 69357, + "start": 70616, + "end": 70617, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 55 }, "end": { - "line": 1999, + "line": 2049, "column": 56 } } @@ -277489,15 +282513,15 @@ "updateContext": null }, "value": "<", - "start": 69358, - "end": 69359, + "start": 70618, + "end": 70619, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 57 }, "end": { - "line": 1999, + "line": 2049, "column": 58 } } @@ -277515,15 +282539,15 @@ "binop": null }, "value": "len", - "start": 69360, - "end": 69363, + "start": 70620, + "end": 70623, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 59 }, "end": { - "line": 1999, + "line": 2049, "column": 62 } } @@ -277541,15 +282565,15 @@ "binop": null, "updateContext": null }, - "start": 69363, - "end": 69364, + "start": 70623, + "end": 70624, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 62 }, "end": { - "line": 1999, + "line": 2049, "column": 63 } } @@ -277567,15 +282591,15 @@ "binop": null }, "value": "i", - "start": 69365, - "end": 69366, + "start": 70625, + "end": 70626, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 64 }, "end": { - "line": 1999, + "line": 2049, "column": 65 } } @@ -277593,15 +282617,15 @@ "binop": null }, "value": "++", - "start": 69366, - "end": 69368, + "start": 70626, + "end": 70628, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 65 }, "end": { - "line": 1999, + "line": 2049, "column": 67 } } @@ -277618,15 +282642,15 @@ "postfix": false, "binop": null }, - "start": 69368, - "end": 69369, + "start": 70628, + "end": 70629, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 67 }, "end": { - "line": 1999, + "line": 2049, "column": 68 } } @@ -277643,15 +282667,15 @@ "postfix": false, "binop": null }, - "start": 69370, - "end": 69371, + "start": 70630, + "end": 70631, "loc": { "start": { - "line": 1999, + "line": 2049, "column": 69 }, "end": { - "line": 1999, + "line": 2049, "column": 70 } } @@ -277671,15 +282695,15 @@ "updateContext": null }, "value": "this", - "start": 69384, - "end": 69388, + "start": 70644, + "end": 70648, "loc": { "start": { - "line": 2000, + "line": 2050, "column": 12 }, "end": { - "line": 2000, + "line": 2050, "column": 16 } } @@ -277697,15 +282721,15 @@ "binop": null, "updateContext": null }, - "start": 69388, - "end": 69389, + "start": 70648, + "end": 70649, "loc": { "start": { - "line": 2000, + "line": 2050, "column": 16 }, "end": { - "line": 2000, + "line": 2050, "column": 17 } } @@ -277723,15 +282747,15 @@ "binop": null }, "value": "_entityList", - "start": 69389, - "end": 69400, + "start": 70649, + "end": 70660, "loc": { "start": { - "line": 2000, + "line": 2050, "column": 17 }, "end": { - "line": 2000, + "line": 2050, "column": 28 } } @@ -277749,15 +282773,15 @@ "binop": null, "updateContext": null }, - "start": 69400, - "end": 69401, + "start": 70660, + "end": 70661, "loc": { "start": { - "line": 2000, + "line": 2050, "column": 28 }, "end": { - "line": 2000, + "line": 2050, "column": 29 } } @@ -277775,15 +282799,15 @@ "binop": null }, "value": "i", - "start": 69401, - "end": 69402, + "start": 70661, + "end": 70662, "loc": { "start": { - "line": 2000, + "line": 2050, "column": 29 }, "end": { - "line": 2000, + "line": 2050, "column": 30 } } @@ -277801,15 +282825,15 @@ "binop": null, "updateContext": null }, - "start": 69402, - "end": 69403, + "start": 70662, + "end": 70663, "loc": { "start": { - "line": 2000, + "line": 2050, "column": 30 }, "end": { - "line": 2000, + "line": 2050, "column": 31 } } @@ -277827,15 +282851,15 @@ "binop": null, "updateContext": null }, - "start": 69403, - "end": 69404, + "start": 70663, + "end": 70664, "loc": { "start": { - "line": 2000, + "line": 2050, "column": 31 }, "end": { - "line": 2000, + "line": 2050, "column": 32 } } @@ -277852,17 +282876,17 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 69404, - "end": 69413, + "value": "pickable", + "start": 70664, + "end": 70672, "loc": { "start": { - "line": 2000, + "line": 2050, "column": 32 }, "end": { - "line": 2000, - "column": 41 + "line": 2050, + "column": 40 } } }, @@ -277880,16 +282904,16 @@ "updateContext": null }, "value": "=", - "start": 69414, - "end": 69415, + "start": 70673, + "end": 70674, "loc": { "start": { - "line": 2000, - "column": 42 + "line": 2050, + "column": 41 }, "end": { - "line": 2000, - "column": 43 + "line": 2050, + "column": 42 } } }, @@ -277905,17 +282929,17 @@ "postfix": false, "binop": null }, - "value": "clippable", - "start": 69416, - "end": 69425, + "value": "pickable", + "start": 70675, + "end": 70683, "loc": { "start": { - "line": 2000, - "column": 44 + "line": 2050, + "column": 43 }, "end": { - "line": 2000, - "column": 53 + "line": 2050, + "column": 51 } } }, @@ -277932,16 +282956,16 @@ "binop": null, "updateContext": null }, - "start": 69425, - "end": 69426, + "start": 70683, + "end": 70684, "loc": { "start": { - "line": 2000, - "column": 53 + "line": 2050, + "column": 51 }, "end": { - "line": 2000, - "column": 54 + "line": 2050, + "column": 52 } } }, @@ -277957,175 +282981,19 @@ "postfix": false, "binop": null }, - "start": 69435, - "end": 69436, + "start": 70693, + "end": 70694, "loc": { "start": { - "line": 2001, + "line": 2051, "column": 8 }, "end": { - "line": 2001, + "line": 2051, "column": 9 } } }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 69445, - "end": 69449, - "loc": { - "start": { - "line": 2002, - "column": 8 - }, - "end": { - "line": 2002, - "column": 12 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 69449, - "end": 69450, - "loc": { - "start": { - "line": 2002, - "column": 12 - }, - "end": { - "line": 2002, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "glRedraw", - "start": 69450, - "end": 69458, - "loc": { - "start": { - "line": 2002, - "column": 13 - }, - "end": { - "line": 2002, - "column": 21 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 69458, - "end": 69459, - "loc": { - "start": { - "line": 2002, - "column": 21 - }, - "end": { - "line": 2002, - "column": 22 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 69459, - "end": 69460, - "loc": { - "start": { - "line": 2002, - "column": 22 - }, - "end": { - "line": 2002, - "column": 23 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 69460, - "end": 69461, - "loc": { - "start": { - "line": 2002, - "column": 23 - }, - "end": { - "line": 2002, - "column": 24 - } - } - }, { "type": { "label": "}", @@ -278138,31 +283006,31 @@ "postfix": false, "binop": null }, - "start": 69466, - "end": 69467, + "start": 70699, + "end": 70700, "loc": { "start": { - "line": 2003, + "line": 2052, "column": 4 }, "end": { - "line": 2003, + "line": 2052, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if this SceneModel is collidable.\n *\n * @type {Boolean}\n ", - "start": 69473, - "end": 69560, + "value": "*\n * Gets the RGB colorize color for this SceneModel.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", + "start": 70706, + "end": 70872, "loc": { "start": { - "line": 2005, + "line": 2054, "column": 4 }, "end": { - "line": 2009, + "line": 2060, "column": 7 } } @@ -278180,15 +283048,15 @@ "binop": null }, "value": "get", - "start": 69565, - "end": 69568, + "start": 70877, + "end": 70880, "loc": { "start": { - "line": 2010, + "line": 2061, "column": 4 }, "end": { - "line": 2010, + "line": 2061, "column": 7 } } @@ -278205,17 +283073,17 @@ "postfix": false, "binop": null }, - "value": "collidable", - "start": 69569, - "end": 69579, + "value": "colorize", + "start": 70881, + "end": 70889, "loc": { "start": { - "line": 2010, + "line": 2061, "column": 8 }, "end": { - "line": 2010, - "column": 18 + "line": 2061, + "column": 16 } } }, @@ -278231,16 +283099,16 @@ "postfix": false, "binop": null }, - "start": 69579, - "end": 69580, + "start": 70889, + "end": 70890, "loc": { "start": { - "line": 2010, - "column": 18 + "line": 2061, + "column": 16 }, "end": { - "line": 2010, - "column": 19 + "line": 2061, + "column": 17 } } }, @@ -278256,16 +283124,16 @@ "postfix": false, "binop": null }, - "start": 69580, - "end": 69581, + "start": 70890, + "end": 70891, "loc": { "start": { - "line": 2010, - "column": 19 + "line": 2061, + "column": 17 }, "end": { - "line": 2010, - "column": 20 + "line": 2061, + "column": 18 } } }, @@ -278281,16 +283149,16 @@ "postfix": false, "binop": null }, - "start": 69582, - "end": 69583, + "start": 70892, + "end": 70893, "loc": { "start": { - "line": 2010, - "column": 21 + "line": 2061, + "column": 19 }, "end": { - "line": 2010, - "column": 22 + "line": 2061, + "column": 20 } } }, @@ -278309,15 +283177,15 @@ "updateContext": null }, "value": "return", - "start": 69592, - "end": 69598, + "start": 70902, + "end": 70908, "loc": { "start": { - "line": 2011, + "line": 2062, "column": 8 }, "end": { - "line": 2011, + "line": 2062, "column": 14 } } @@ -278337,15 +283205,15 @@ "updateContext": null }, "value": "this", - "start": 69599, - "end": 69603, + "start": 70909, + "end": 70913, "loc": { "start": { - "line": 2011, + "line": 2062, "column": 15 }, "end": { - "line": 2011, + "line": 2062, "column": 19 } } @@ -278363,15 +283231,15 @@ "binop": null, "updateContext": null }, - "start": 69603, - "end": 69604, + "start": 70913, + "end": 70914, "loc": { "start": { - "line": 2011, + "line": 2062, "column": 19 }, "end": { - "line": 2011, + "line": 2062, "column": 20 } } @@ -278388,17 +283256,17 @@ "postfix": false, "binop": null }, - "value": "_collidable", - "start": 69604, - "end": 69615, + "value": "_colorize", + "start": 70914, + "end": 70923, "loc": { "start": { - "line": 2011, + "line": 2062, "column": 20 }, "end": { - "line": 2011, - "column": 31 + "line": 2062, + "column": 29 } } }, @@ -278415,16 +283283,16 @@ "binop": null, "updateContext": null }, - "start": 69615, - "end": 69616, + "start": 70923, + "end": 70924, "loc": { "start": { - "line": 2011, - "column": 31 + "line": 2062, + "column": 29 }, "end": { - "line": 2011, - "column": 32 + "line": 2062, + "column": 30 } } }, @@ -278440,31 +283308,31 @@ "postfix": false, "binop": null }, - "start": 69621, - "end": 69622, + "start": 70929, + "end": 70930, "loc": { "start": { - "line": 2012, + "line": 2063, "column": 4 }, "end": { - "line": 2012, + "line": 2063, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are collidable.\n *\n * @type {Boolean}\n ", - "start": 69628, - "end": 69745, + "value": "*\n * Sets the RGB colorize color for this SceneModel.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", + "start": 70936, + "end": 71156, "loc": { "start": { - "line": 2014, + "line": 2065, "column": 4 }, "end": { - "line": 2018, + "line": 2073, "column": 7 } } @@ -278482,15 +283350,15 @@ "binop": null }, "value": "set", - "start": 69750, - "end": 69753, + "start": 71161, + "end": 71164, "loc": { "start": { - "line": 2019, + "line": 2074, "column": 4 }, "end": { - "line": 2019, + "line": 2074, "column": 7 } } @@ -278507,17 +283375,17 @@ "postfix": false, "binop": null }, - "value": "collidable", - "start": 69754, - "end": 69764, + "value": "colorize", + "start": 71165, + "end": 71173, "loc": { "start": { - "line": 2019, + "line": 2074, "column": 8 }, "end": { - "line": 2019, - "column": 18 + "line": 2074, + "column": 16 } } }, @@ -278533,16 +283401,16 @@ "postfix": false, "binop": null }, - "start": 69764, - "end": 69765, + "start": 71173, + "end": 71174, "loc": { "start": { - "line": 2019, - "column": 18 + "line": 2074, + "column": 16 }, "end": { - "line": 2019, - "column": 19 + "line": 2074, + "column": 17 } } }, @@ -278558,17 +283426,17 @@ "postfix": false, "binop": null }, - "value": "collidable", - "start": 69765, - "end": 69775, + "value": "colorize", + "start": 71174, + "end": 71182, "loc": { "start": { - "line": 2019, - "column": 19 + "line": 2074, + "column": 17 }, "end": { - "line": 2019, - "column": 29 + "line": 2074, + "column": 25 } } }, @@ -278584,16 +283452,16 @@ "postfix": false, "binop": null }, - "start": 69775, - "end": 69776, + "start": 71182, + "end": 71183, "loc": { "start": { - "line": 2019, - "column": 29 + "line": 2074, + "column": 25 }, "end": { - "line": 2019, - "column": 30 + "line": 2074, + "column": 26 } } }, @@ -278609,176 +283477,16 @@ "postfix": false, "binop": null }, - "start": 69777, - "end": 69778, - "loc": { - "start": { - "line": 2019, - "column": 31 - }, - "end": { - "line": 2019, - "column": 32 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "collidable", - "start": 69787, - "end": 69797, - "loc": { - "start": { - "line": 2020, - "column": 8 - }, - "end": { - "line": 2020, - "column": 18 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 69798, - "end": 69799, - "loc": { - "start": { - "line": 2020, - "column": 19 - }, - "end": { - "line": 2020, - "column": 20 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "collidable", - "start": 69800, - "end": 69810, - "loc": { - "start": { - "line": 2020, - "column": 21 - }, - "end": { - "line": 2020, - "column": 31 - } - } - }, - { - "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 69811, - "end": 69814, + "start": 71184, + "end": 71185, "loc": { "start": { - "line": 2020, - "column": 32 - }, - "end": { - "line": 2020, - "column": 35 - } - } - }, - { - "type": { - "label": "false", - "keyword": "false", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "false", - "start": 69815, - "end": 69820, - "loc": { - "start": { - "line": 2020, - "column": 36 - }, - "end": { - "line": 2020, - "column": 41 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 69820, - "end": 69821, - "loc": { - "start": { - "line": 2020, - "column": 41 + "line": 2074, + "column": 27 }, "end": { - "line": 2020, - "column": 42 + "line": 2074, + "column": 28 } } }, @@ -278797,15 +283505,15 @@ "updateContext": null }, "value": "this", - "start": 69830, - "end": 69834, + "start": 71194, + "end": 71198, "loc": { "start": { - "line": 2021, + "line": 2075, "column": 8 }, "end": { - "line": 2021, + "line": 2075, "column": 12 } } @@ -278823,15 +283531,15 @@ "binop": null, "updateContext": null }, - "start": 69834, - "end": 69835, + "start": 71198, + "end": 71199, "loc": { "start": { - "line": 2021, + "line": 2075, "column": 12 }, "end": { - "line": 2021, + "line": 2075, "column": 13 } } @@ -278848,17 +283556,17 @@ "postfix": false, "binop": null }, - "value": "_collidable", - "start": 69835, - "end": 69846, + "value": "_colorize", + "start": 71199, + "end": 71208, "loc": { "start": { - "line": 2021, + "line": 2075, "column": 13 }, "end": { - "line": 2021, - "column": 24 + "line": 2075, + "column": 22 } } }, @@ -278876,16 +283584,16 @@ "updateContext": null }, "value": "=", - "start": 69847, - "end": 69848, + "start": 71209, + "end": 71210, "loc": { "start": { - "line": 2021, - "column": 25 + "line": 2075, + "column": 23 }, "end": { - "line": 2021, - "column": 26 + "line": 2075, + "column": 24 } } }, @@ -278901,17 +283609,17 @@ "postfix": false, "binop": null }, - "value": "collidable", - "start": 69849, - "end": 69859, + "value": "colorize", + "start": 71211, + "end": 71219, "loc": { "start": { - "line": 2021, - "column": 27 + "line": 2075, + "column": 25 }, "end": { - "line": 2021, - "column": 37 + "line": 2075, + "column": 33 } } }, @@ -278928,16 +283636,16 @@ "binop": null, "updateContext": null }, - "start": 69859, - "end": 69860, + "start": 71219, + "end": 71220, "loc": { "start": { - "line": 2021, - "column": 37 + "line": 2075, + "column": 33 }, "end": { - "line": 2021, - "column": 38 + "line": 2075, + "column": 34 } } }, @@ -278956,15 +283664,15 @@ "updateContext": null }, "value": "for", - "start": 69869, - "end": 69872, + "start": 71229, + "end": 71232, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 8 }, "end": { - "line": 2022, + "line": 2076, "column": 11 } } @@ -278981,15 +283689,15 @@ "postfix": false, "binop": null }, - "start": 69873, - "end": 69874, + "start": 71233, + "end": 71234, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 12 }, "end": { - "line": 2022, + "line": 2076, "column": 13 } } @@ -279009,15 +283717,15 @@ "updateContext": null }, "value": "let", - "start": 69874, - "end": 69877, + "start": 71234, + "end": 71237, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 13 }, "end": { - "line": 2022, + "line": 2076, "column": 16 } } @@ -279035,15 +283743,15 @@ "binop": null }, "value": "i", - "start": 69878, - "end": 69879, + "start": 71238, + "end": 71239, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 17 }, "end": { - "line": 2022, + "line": 2076, "column": 18 } } @@ -279062,15 +283770,15 @@ "updateContext": null }, "value": "=", - "start": 69880, - "end": 69881, + "start": 71240, + "end": 71241, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 19 }, "end": { - "line": 2022, + "line": 2076, "column": 20 } } @@ -279089,15 +283797,15 @@ "updateContext": null }, "value": 0, - "start": 69882, - "end": 69883, + "start": 71242, + "end": 71243, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 21 }, "end": { - "line": 2022, + "line": 2076, "column": 22 } } @@ -279115,15 +283823,15 @@ "binop": null, "updateContext": null }, - "start": 69883, - "end": 69884, + "start": 71243, + "end": 71244, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 22 }, "end": { - "line": 2022, + "line": 2076, "column": 23 } } @@ -279141,15 +283849,15 @@ "binop": null }, "value": "len", - "start": 69885, - "end": 69888, + "start": 71245, + "end": 71248, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 24 }, "end": { - "line": 2022, + "line": 2076, "column": 27 } } @@ -279168,15 +283876,15 @@ "updateContext": null }, "value": "=", - "start": 69889, - "end": 69890, + "start": 71249, + "end": 71250, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 28 }, "end": { - "line": 2022, + "line": 2076, "column": 29 } } @@ -279196,15 +283904,15 @@ "updateContext": null }, "value": "this", - "start": 69891, - "end": 69895, + "start": 71251, + "end": 71255, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 30 }, "end": { - "line": 2022, + "line": 2076, "column": 34 } } @@ -279222,15 +283930,15 @@ "binop": null, "updateContext": null }, - "start": 69895, - "end": 69896, + "start": 71255, + "end": 71256, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 34 }, "end": { - "line": 2022, + "line": 2076, "column": 35 } } @@ -279248,15 +283956,15 @@ "binop": null }, "value": "_entityList", - "start": 69896, - "end": 69907, + "start": 71256, + "end": 71267, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 35 }, "end": { - "line": 2022, + "line": 2076, "column": 46 } } @@ -279274,15 +283982,15 @@ "binop": null, "updateContext": null }, - "start": 69907, - "end": 69908, + "start": 71267, + "end": 71268, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 46 }, "end": { - "line": 2022, + "line": 2076, "column": 47 } } @@ -279300,15 +284008,15 @@ "binop": null }, "value": "length", - "start": 69908, - "end": 69914, + "start": 71268, + "end": 71274, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 47 }, "end": { - "line": 2022, + "line": 2076, "column": 53 } } @@ -279326,15 +284034,15 @@ "binop": null, "updateContext": null }, - "start": 69914, - "end": 69915, + "start": 71274, + "end": 71275, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 53 }, "end": { - "line": 2022, + "line": 2076, "column": 54 } } @@ -279352,15 +284060,15 @@ "binop": null }, "value": "i", - "start": 69916, - "end": 69917, + "start": 71276, + "end": 71277, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 55 }, "end": { - "line": 2022, + "line": 2076, "column": 56 } } @@ -279379,15 +284087,15 @@ "updateContext": null }, "value": "<", - "start": 69918, - "end": 69919, + "start": 71278, + "end": 71279, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 57 }, "end": { - "line": 2022, + "line": 2076, "column": 58 } } @@ -279405,15 +284113,15 @@ "binop": null }, "value": "len", - "start": 69920, - "end": 69923, + "start": 71280, + "end": 71283, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 59 }, "end": { - "line": 2022, + "line": 2076, "column": 62 } } @@ -279431,15 +284139,15 @@ "binop": null, "updateContext": null }, - "start": 69923, - "end": 69924, + "start": 71283, + "end": 71284, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 62 }, "end": { - "line": 2022, + "line": 2076, "column": 63 } } @@ -279457,15 +284165,15 @@ "binop": null }, "value": "i", - "start": 69925, - "end": 69926, + "start": 71285, + "end": 71286, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 64 }, "end": { - "line": 2022, + "line": 2076, "column": 65 } } @@ -279483,15 +284191,15 @@ "binop": null }, "value": "++", - "start": 69926, - "end": 69928, + "start": 71286, + "end": 71288, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 65 }, "end": { - "line": 2022, + "line": 2076, "column": 67 } } @@ -279508,15 +284216,15 @@ "postfix": false, "binop": null }, - "start": 69928, - "end": 69929, + "start": 71288, + "end": 71289, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 67 }, "end": { - "line": 2022, + "line": 2076, "column": 68 } } @@ -279533,15 +284241,15 @@ "postfix": false, "binop": null }, - "start": 69930, - "end": 69931, + "start": 71290, + "end": 71291, "loc": { "start": { - "line": 2022, + "line": 2076, "column": 69 }, "end": { - "line": 2022, + "line": 2076, "column": 70 } } @@ -279561,15 +284269,15 @@ "updateContext": null }, "value": "this", - "start": 69944, - "end": 69948, + "start": 71304, + "end": 71308, "loc": { "start": { - "line": 2023, + "line": 2077, "column": 12 }, "end": { - "line": 2023, + "line": 2077, "column": 16 } } @@ -279587,15 +284295,15 @@ "binop": null, "updateContext": null }, - "start": 69948, - "end": 69949, + "start": 71308, + "end": 71309, "loc": { "start": { - "line": 2023, + "line": 2077, "column": 16 }, "end": { - "line": 2023, + "line": 2077, "column": 17 } } @@ -279613,15 +284321,15 @@ "binop": null }, "value": "_entityList", - "start": 69949, - "end": 69960, + "start": 71309, + "end": 71320, "loc": { "start": { - "line": 2023, + "line": 2077, "column": 17 }, "end": { - "line": 2023, + "line": 2077, "column": 28 } } @@ -279639,15 +284347,15 @@ "binop": null, "updateContext": null }, - "start": 69960, - "end": 69961, + "start": 71320, + "end": 71321, "loc": { "start": { - "line": 2023, + "line": 2077, "column": 28 }, "end": { - "line": 2023, + "line": 2077, "column": 29 } } @@ -279665,15 +284373,15 @@ "binop": null }, "value": "i", - "start": 69961, - "end": 69962, + "start": 71321, + "end": 71322, "loc": { "start": { - "line": 2023, + "line": 2077, "column": 29 }, "end": { - "line": 2023, + "line": 2077, "column": 30 } } @@ -279691,15 +284399,15 @@ "binop": null, "updateContext": null }, - "start": 69962, - "end": 69963, + "start": 71322, + "end": 71323, "loc": { "start": { - "line": 2023, + "line": 2077, "column": 30 }, "end": { - "line": 2023, + "line": 2077, "column": 31 } } @@ -279717,15 +284425,15 @@ "binop": null, "updateContext": null }, - "start": 69963, - "end": 69964, + "start": 71323, + "end": 71324, "loc": { "start": { - "line": 2023, + "line": 2077, "column": 31 }, "end": { - "line": 2023, + "line": 2077, "column": 32 } } @@ -279742,17 +284450,17 @@ "postfix": false, "binop": null }, - "value": "collidable", - "start": 69964, - "end": 69974, + "value": "colorize", + "start": 71324, + "end": 71332, "loc": { "start": { - "line": 2023, + "line": 2077, "column": 32 }, "end": { - "line": 2023, - "column": 42 + "line": 2077, + "column": 40 } } }, @@ -279770,160 +284478,16 @@ "updateContext": null }, "value": "=", - "start": 69975, - "end": 69976, - "loc": { - "start": { - "line": 2023, - "column": 43 - }, - "end": { - "line": 2023, - "column": 44 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "collidable", - "start": 69977, - "end": 69987, + "start": 71333, + "end": 71334, "loc": { "start": { - "line": 2023, - "column": 45 - }, - "end": { - "line": 2023, - "column": 55 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 69987, - "end": 69988, - "loc": { - "start": { - "line": 2023, - "column": 55 - }, - "end": { - "line": 2023, - "column": 56 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 69997, - "end": 69998, - "loc": { - "start": { - "line": 2024, - "column": 8 - }, - "end": { - "line": 2024, - "column": 9 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 70003, - "end": 70004, - "loc": { - "start": { - "line": 2025, - "column": 4 - }, - "end": { - "line": 2025, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Gets if this SceneModel is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", - "start": 70010, - "end": 70158, - "loc": { - "start": { - "line": 2027, - "column": 4 - }, - "end": { - "line": 2033, - "column": 7 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "get", - "start": 70163, - "end": 70166, - "loc": { - "start": { - "line": 2034, - "column": 4 + "line": 2077, + "column": 41 }, "end": { - "line": 2034, - "column": 7 + "line": 2077, + "column": 42 } } }, @@ -279939,99 +284503,23 @@ "postfix": false, "binop": null }, - "value": "pickable", - "start": 70167, - "end": 70175, - "loc": { - "start": { - "line": 2034, - "column": 8 - }, - "end": { - "line": 2034, - "column": 16 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 70175, - "end": 70176, - "loc": { - "start": { - "line": 2034, - "column": 16 - }, - "end": { - "line": 2034, - "column": 17 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 70176, - "end": 70177, - "loc": { - "start": { - "line": 2034, - "column": 17 - }, - "end": { - "line": 2034, - "column": 18 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 70178, - "end": 70179, + "value": "colorize", + "start": 71335, + "end": 71343, "loc": { "start": { - "line": 2034, - "column": 19 + "line": 2077, + "column": 43 }, "end": { - "line": 2034, - "column": 20 + "line": 2077, + "column": 51 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -280042,25 +284530,24 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 70188, - "end": 70194, + "start": 71343, + "end": 71344, "loc": { "start": { - "line": 2035, - "column": 8 + "line": 2077, + "column": 51 }, "end": { - "line": 2035, - "column": 14 + "line": 2077, + "column": 52 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -280068,70 +284555,57 @@ "postfix": false, "binop": null }, - "start": 70195, - "end": 70196, + "start": 71353, + "end": 71354, "loc": { "start": { - "line": 2035, - "column": 15 + "line": 2078, + "column": 8 }, "end": { - "line": 2035, - "column": 16 + "line": 2078, + "column": 9 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 70196, - "end": 70200, + "start": 71359, + "end": 71360, "loc": { "start": { - "line": 2035, - "column": 16 + "line": 2079, + "column": 4 }, "end": { - "line": 2035, - "column": 20 + "line": 2079, + "column": 5 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 70200, - "end": 70201, + "type": "CommentBlock", + "value": "*\n * Gets this SceneModel's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", + "start": 71366, + "end": 71557, "loc": { "start": { - "line": 2035, - "column": 20 + "line": 2081, + "column": 4 }, "end": { - "line": 2035, - "column": 21 + "line": 2087, + "column": 7 } } }, @@ -280147,71 +284621,68 @@ "postfix": false, "binop": null }, - "value": "numPickableLayerPortions", - "start": 70201, - "end": 70225, + "value": "get", + "start": 71562, + "end": 71565, "loc": { "start": { - "line": 2035, - "column": 21 + "line": 2088, + "column": 4 }, "end": { - "line": 2035, - "column": 45 + "line": 2088, + "column": 7 } } }, { "type": { - "label": "", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, - "updateContext": null + "binop": null }, - "value": ">", - "start": 70226, - "end": 70227, + "value": "opacity", + "start": 71566, + "end": 71573, "loc": { "start": { - "line": 2035, - "column": 46 + "line": 2088, + "column": 8 }, "end": { - "line": 2035, - "column": 47 + "line": 2088, + "column": 15 } } }, { "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": 70228, - "end": 70229, + "start": 71573, + "end": 71574, "loc": { "start": { - "line": 2035, - "column": 48 + "line": 2088, + "column": 15 }, "end": { - "line": 2035, - "column": 49 + "line": 2088, + "column": 16 } } }, @@ -280227,89 +284698,76 @@ "postfix": false, "binop": null }, - "start": 70229, - "end": 70230, + "start": 71574, + "end": 71575, "loc": { "start": { - "line": 2035, - "column": 49 + "line": 2088, + "column": 16 }, "end": { - "line": 2035, - "column": 50 + "line": 2088, + "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": 70230, - "end": 70231, + "start": 71576, + "end": 71577, "loc": { "start": { - "line": 2035, - "column": 50 + "line": 2088, + "column": 18 }, "end": { - "line": 2035, - "column": 51 + "line": 2088, + "column": 19 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 70236, - "end": 70237, - "loc": { - "start": { - "line": 2036, - "column": 4 - }, - "end": { - "line": 2036, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Sets if {@link SceneModelEntity}s in this SceneModel are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n ", - "start": 70243, - "end": 70421, + "value": "return", + "start": 71586, + "end": 71592, "loc": { "start": { - "line": 2038, - "column": 4 + "line": 2089, + "column": 8 }, "end": { - "line": 2044, - "column": 7 + "line": 2089, + "column": 14 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -280317,52 +284775,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "set", - "start": 70426, - "end": 70429, + "value": "this", + "start": 71593, + "end": 71597, "loc": { "start": { - "line": 2045, - "column": 4 + "line": 2089, + "column": 15 }, "end": { - "line": 2045, - "column": 7 + "line": 2089, + "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": "pickable", - "start": 70430, - "end": 70438, + "start": 71597, + "end": 71598, "loc": { "start": { - "line": 2045, - "column": 8 + "line": 2089, + "column": 19 }, "end": { - "line": 2045, - "column": 16 + "line": 2089, + "column": 20 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -280371,48 +284830,49 @@ "postfix": false, "binop": null }, - "start": 70438, - "end": 70439, + "value": "_opacity", + "start": 71598, + "end": 71606, "loc": { "start": { - "line": 2045, - "column": 16 + "line": 2089, + "column": 20 }, "end": { - "line": 2045, - "column": 17 + "line": 2089, + "column": 28 } } }, { "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": "pickable", - "start": 70439, - "end": 70447, + "start": 71606, + "end": 71607, "loc": { "start": { - "line": 2045, - "column": 17 + "line": 2089, + "column": 28 }, "end": { - "line": 2045, - "column": 25 + "line": 2089, + "column": 29 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -280422,41 +284882,32 @@ "postfix": false, "binop": null }, - "start": 70447, - "end": 70448, + "start": 71612, + "end": 71613, "loc": { "start": { - "line": 2045, - "column": 25 + "line": 2090, + "column": 4 }, "end": { - "line": 2045, - "column": 26 + "line": 2090, + "column": 5 } } }, { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 70449, - "end": 70450, + "type": "CommentBlock", + "value": "*\n * Sets the opacity factor for this SceneModel.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", + "start": 71619, + "end": 71816, "loc": { "start": { - "line": 2045, - "column": 27 + "line": 2092, + "column": 4 }, "end": { - "line": 2045, - "column": 28 + "line": 2098, + "column": 7 } } }, @@ -280472,51 +284923,50 @@ "postfix": false, "binop": null }, - "value": "pickable", - "start": 70459, - "end": 70467, + "value": "set", + "start": 71821, + "end": 71824, "loc": { "start": { - "line": 2046, - "column": 8 + "line": 2099, + "column": 4 }, "end": { - "line": 2046, - "column": 16 + "line": 2099, + "column": 7 } } }, { "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": 70468, - "end": 70469, + "value": "opacity", + "start": 71825, + "end": 71832, "loc": { "start": { - "line": 2046, - "column": 17 + "line": 2099, + "column": 8 }, "end": { - "line": 2046, - "column": 18 + "line": 2099, + "column": 15 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -280525,98 +284975,92 @@ "postfix": false, "binop": null }, - "value": "pickable", - "start": 70470, - "end": 70478, + "start": 71832, + "end": 71833, "loc": { "start": { - "line": 2046, - "column": 19 + "line": 2099, + "column": 15 }, "end": { - "line": 2046, - "column": 27 + "line": 2099, + "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": 6, - "updateContext": null + "binop": null }, - "value": "!==", - "start": 70479, - "end": 70482, + "value": "opacity", + "start": 71833, + "end": 71840, "loc": { "start": { - "line": 2046, - "column": 28 + "line": 2099, + "column": 16 }, "end": { - "line": 2046, - "column": 31 + "line": 2099, + "column": 23 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 70483, - "end": 70488, + "start": 71840, + "end": 71841, "loc": { "start": { - "line": 2046, - "column": 32 + "line": 2099, + "column": 23 }, "end": { - "line": 2046, - "column": 37 + "line": 2099, + "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": 70488, - "end": 70489, + "start": 71842, + "end": 71843, "loc": { "start": { - "line": 2046, - "column": 37 + "line": 2099, + "column": 25 }, "end": { - "line": 2046, - "column": 38 + "line": 2099, + "column": 26 } } }, @@ -280635,15 +285079,15 @@ "updateContext": null }, "value": "this", - "start": 70498, - "end": 70502, + "start": 71852, + "end": 71856, "loc": { "start": { - "line": 2047, + "line": 2100, "column": 8 }, "end": { - "line": 2047, + "line": 2100, "column": 12 } } @@ -280661,15 +285105,15 @@ "binop": null, "updateContext": null }, - "start": 70502, - "end": 70503, + "start": 71856, + "end": 71857, "loc": { "start": { - "line": 2047, + "line": 2100, "column": 12 }, "end": { - "line": 2047, + "line": 2100, "column": 13 } } @@ -280686,17 +285130,17 @@ "postfix": false, "binop": null }, - "value": "_pickable", - "start": 70503, - "end": 70512, + "value": "_opacity", + "start": 71857, + "end": 71865, "loc": { "start": { - "line": 2047, + "line": 2100, "column": 13 }, "end": { - "line": 2047, - "column": 22 + "line": 2100, + "column": 21 } } }, @@ -280714,16 +285158,16 @@ "updateContext": null }, "value": "=", - "start": 70513, - "end": 70514, + "start": 71866, + "end": 71867, "loc": { "start": { - "line": 2047, - "column": 23 + "line": 2100, + "column": 22 }, "end": { - "line": 2047, - "column": 24 + "line": 2100, + "column": 23 } } }, @@ -280739,17 +285183,17 @@ "postfix": false, "binop": null }, - "value": "pickable", - "start": 70515, - "end": 70523, + "value": "opacity", + "start": 71868, + "end": 71875, "loc": { "start": { - "line": 2047, - "column": 25 + "line": 2100, + "column": 24 }, "end": { - "line": 2047, - "column": 33 + "line": 2100, + "column": 31 } } }, @@ -280766,16 +285210,16 @@ "binop": null, "updateContext": null }, - "start": 70523, - "end": 70524, + "start": 71875, + "end": 71876, "loc": { "start": { - "line": 2047, - "column": 33 + "line": 2100, + "column": 31 }, "end": { - "line": 2047, - "column": 34 + "line": 2100, + "column": 32 } } }, @@ -280794,15 +285238,15 @@ "updateContext": null }, "value": "for", - "start": 70533, - "end": 70536, + "start": 71885, + "end": 71888, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 8 }, "end": { - "line": 2048, + "line": 2101, "column": 11 } } @@ -280819,15 +285263,15 @@ "postfix": false, "binop": null }, - "start": 70537, - "end": 70538, + "start": 71889, + "end": 71890, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 12 }, "end": { - "line": 2048, + "line": 2101, "column": 13 } } @@ -280847,15 +285291,15 @@ "updateContext": null }, "value": "let", - "start": 70538, - "end": 70541, + "start": 71890, + "end": 71893, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 13 }, "end": { - "line": 2048, + "line": 2101, "column": 16 } } @@ -280873,15 +285317,15 @@ "binop": null }, "value": "i", - "start": 70542, - "end": 70543, + "start": 71894, + "end": 71895, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 17 }, "end": { - "line": 2048, + "line": 2101, "column": 18 } } @@ -280900,15 +285344,15 @@ "updateContext": null }, "value": "=", - "start": 70544, - "end": 70545, + "start": 71896, + "end": 71897, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 19 }, "end": { - "line": 2048, + "line": 2101, "column": 20 } } @@ -280927,15 +285371,15 @@ "updateContext": null }, "value": 0, - "start": 70546, - "end": 70547, + "start": 71898, + "end": 71899, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 21 }, "end": { - "line": 2048, + "line": 2101, "column": 22 } } @@ -280953,15 +285397,15 @@ "binop": null, "updateContext": null }, - "start": 70547, - "end": 70548, + "start": 71899, + "end": 71900, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 22 }, "end": { - "line": 2048, + "line": 2101, "column": 23 } } @@ -280979,15 +285423,15 @@ "binop": null }, "value": "len", - "start": 70549, - "end": 70552, + "start": 71901, + "end": 71904, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 24 }, "end": { - "line": 2048, + "line": 2101, "column": 27 } } @@ -281006,15 +285450,15 @@ "updateContext": null }, "value": "=", - "start": 70553, - "end": 70554, + "start": 71905, + "end": 71906, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 28 }, "end": { - "line": 2048, + "line": 2101, "column": 29 } } @@ -281034,15 +285478,15 @@ "updateContext": null }, "value": "this", - "start": 70555, - "end": 70559, + "start": 71907, + "end": 71911, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 30 }, "end": { - "line": 2048, + "line": 2101, "column": 34 } } @@ -281060,15 +285504,15 @@ "binop": null, "updateContext": null }, - "start": 70559, - "end": 70560, + "start": 71911, + "end": 71912, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 34 }, "end": { - "line": 2048, + "line": 2101, "column": 35 } } @@ -281086,15 +285530,15 @@ "binop": null }, "value": "_entityList", - "start": 70560, - "end": 70571, + "start": 71912, + "end": 71923, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 35 }, "end": { - "line": 2048, + "line": 2101, "column": 46 } } @@ -281112,15 +285556,15 @@ "binop": null, "updateContext": null }, - "start": 70571, - "end": 70572, + "start": 71923, + "end": 71924, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 46 }, "end": { - "line": 2048, + "line": 2101, "column": 47 } } @@ -281138,15 +285582,15 @@ "binop": null }, "value": "length", - "start": 70572, - "end": 70578, + "start": 71924, + "end": 71930, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 47 }, "end": { - "line": 2048, + "line": 2101, "column": 53 } } @@ -281164,15 +285608,15 @@ "binop": null, "updateContext": null }, - "start": 70578, - "end": 70579, + "start": 71930, + "end": 71931, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 53 }, "end": { - "line": 2048, + "line": 2101, "column": 54 } } @@ -281190,15 +285634,15 @@ "binop": null }, "value": "i", - "start": 70580, - "end": 70581, + "start": 71932, + "end": 71933, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 55 }, "end": { - "line": 2048, + "line": 2101, "column": 56 } } @@ -281217,15 +285661,15 @@ "updateContext": null }, "value": "<", - "start": 70582, - "end": 70583, + "start": 71934, + "end": 71935, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 57 }, "end": { - "line": 2048, + "line": 2101, "column": 58 } } @@ -281243,15 +285687,15 @@ "binop": null }, "value": "len", - "start": 70584, - "end": 70587, + "start": 71936, + "end": 71939, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 59 }, "end": { - "line": 2048, + "line": 2101, "column": 62 } } @@ -281269,15 +285713,15 @@ "binop": null, "updateContext": null }, - "start": 70587, - "end": 70588, + "start": 71939, + "end": 71940, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 62 }, "end": { - "line": 2048, + "line": 2101, "column": 63 } } @@ -281295,15 +285739,15 @@ "binop": null }, "value": "i", - "start": 70589, - "end": 70590, + "start": 71941, + "end": 71942, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 64 }, "end": { - "line": 2048, + "line": 2101, "column": 65 } } @@ -281321,15 +285765,15 @@ "binop": null }, "value": "++", - "start": 70590, - "end": 70592, + "start": 71942, + "end": 71944, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 65 }, "end": { - "line": 2048, + "line": 2101, "column": 67 } } @@ -281346,15 +285790,15 @@ "postfix": false, "binop": null }, - "start": 70592, - "end": 70593, + "start": 71944, + "end": 71945, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 67 }, "end": { - "line": 2048, + "line": 2101, "column": 68 } } @@ -281371,15 +285815,15 @@ "postfix": false, "binop": null }, - "start": 70594, - "end": 70595, + "start": 71946, + "end": 71947, "loc": { "start": { - "line": 2048, + "line": 2101, "column": 69 }, "end": { - "line": 2048, + "line": 2101, "column": 70 } } @@ -281399,15 +285843,15 @@ "updateContext": null }, "value": "this", - "start": 70608, - "end": 70612, + "start": 71960, + "end": 71964, "loc": { "start": { - "line": 2049, + "line": 2102, "column": 12 }, "end": { - "line": 2049, + "line": 2102, "column": 16 } } @@ -281425,15 +285869,15 @@ "binop": null, "updateContext": null }, - "start": 70612, - "end": 70613, + "start": 71964, + "end": 71965, "loc": { "start": { - "line": 2049, + "line": 2102, "column": 16 }, "end": { - "line": 2049, + "line": 2102, "column": 17 } } @@ -281451,15 +285895,15 @@ "binop": null }, "value": "_entityList", - "start": 70613, - "end": 70624, + "start": 71965, + "end": 71976, "loc": { "start": { - "line": 2049, + "line": 2102, "column": 17 }, "end": { - "line": 2049, + "line": 2102, "column": 28 } } @@ -281477,15 +285921,15 @@ "binop": null, "updateContext": null }, - "start": 70624, - "end": 70625, + "start": 71976, + "end": 71977, "loc": { "start": { - "line": 2049, + "line": 2102, "column": 28 }, "end": { - "line": 2049, + "line": 2102, "column": 29 } } @@ -281503,15 +285947,15 @@ "binop": null }, "value": "i", - "start": 70625, - "end": 70626, + "start": 71977, + "end": 71978, "loc": { "start": { - "line": 2049, + "line": 2102, "column": 29 }, "end": { - "line": 2049, + "line": 2102, "column": 30 } } @@ -281529,15 +285973,15 @@ "binop": null, "updateContext": null }, - "start": 70626, - "end": 70627, + "start": 71978, + "end": 71979, "loc": { "start": { - "line": 2049, + "line": 2102, "column": 30 }, "end": { - "line": 2049, + "line": 2102, "column": 31 } } @@ -281555,15 +285999,15 @@ "binop": null, "updateContext": null }, - "start": 70627, - "end": 70628, + "start": 71979, + "end": 71980, "loc": { "start": { - "line": 2049, + "line": 2102, "column": 31 }, "end": { - "line": 2049, + "line": 2102, "column": 32 } } @@ -281580,17 +286024,17 @@ "postfix": false, "binop": null }, - "value": "pickable", - "start": 70628, - "end": 70636, + "value": "opacity", + "start": 71980, + "end": 71987, "loc": { "start": { - "line": 2049, + "line": 2102, "column": 32 }, "end": { - "line": 2049, - "column": 40 + "line": 2102, + "column": 39 } } }, @@ -281608,16 +286052,16 @@ "updateContext": null }, "value": "=", - "start": 70637, - "end": 70638, + "start": 71988, + "end": 71989, "loc": { "start": { - "line": 2049, - "column": 41 + "line": 2102, + "column": 40 }, "end": { - "line": 2049, - "column": 42 + "line": 2102, + "column": 41 } } }, @@ -281633,17 +286077,17 @@ "postfix": false, "binop": null }, - "value": "pickable", - "start": 70639, - "end": 70647, + "value": "opacity", + "start": 71990, + "end": 71997, "loc": { "start": { - "line": 2049, - "column": 43 + "line": 2102, + "column": 42 }, "end": { - "line": 2049, - "column": 51 + "line": 2102, + "column": 49 } } }, @@ -281660,16 +286104,16 @@ "binop": null, "updateContext": null }, - "start": 70647, - "end": 70648, + "start": 71997, + "end": 71998, "loc": { "start": { - "line": 2049, - "column": 51 + "line": 2102, + "column": 49 }, "end": { - "line": 2049, - "column": 52 + "line": 2102, + "column": 50 } } }, @@ -281685,15 +286129,15 @@ "postfix": false, "binop": null }, - "start": 70657, - "end": 70658, + "start": 72007, + "end": 72008, "loc": { "start": { - "line": 2050, + "line": 2103, "column": 8 }, "end": { - "line": 2050, + "line": 2103, "column": 9 } } @@ -281710,31 +286154,31 @@ "postfix": false, "binop": null }, - "start": 70663, - "end": 70664, + "start": 72013, + "end": 72014, "loc": { "start": { - "line": 2051, + "line": 2104, "column": 4 }, "end": { - "line": 2051, + "line": 2104, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets the RGB colorize color for this SceneModel.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", - "start": 70670, - "end": 70836, + "value": "*\n * Gets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", + "start": 72020, + "end": 72108, "loc": { "start": { - "line": 2053, + "line": 2106, "column": 4 }, "end": { - "line": 2059, + "line": 2110, "column": 7 } } @@ -281752,15 +286196,15 @@ "binop": null }, "value": "get", - "start": 70841, - "end": 70844, + "start": 72113, + "end": 72116, "loc": { "start": { - "line": 2060, + "line": 2111, "column": 4 }, "end": { - "line": 2060, + "line": 2111, "column": 7 } } @@ -281777,17 +286221,17 @@ "postfix": false, "binop": null }, - "value": "colorize", - "start": 70845, - "end": 70853, + "value": "castsShadow", + "start": 72117, + "end": 72128, "loc": { "start": { - "line": 2060, + "line": 2111, "column": 8 }, "end": { - "line": 2060, - "column": 16 + "line": 2111, + "column": 19 } } }, @@ -281803,16 +286247,16 @@ "postfix": false, "binop": null }, - "start": 70853, - "end": 70854, + "start": 72128, + "end": 72129, "loc": { "start": { - "line": 2060, - "column": 16 + "line": 2111, + "column": 19 }, "end": { - "line": 2060, - "column": 17 + "line": 2111, + "column": 20 } } }, @@ -281828,16 +286272,16 @@ "postfix": false, "binop": null }, - "start": 70854, - "end": 70855, + "start": 72129, + "end": 72130, "loc": { "start": { - "line": 2060, - "column": 17 + "line": 2111, + "column": 20 }, "end": { - "line": 2060, - "column": 18 + "line": 2111, + "column": 21 } } }, @@ -281853,16 +286297,16 @@ "postfix": false, "binop": null }, - "start": 70856, - "end": 70857, + "start": 72131, + "end": 72132, "loc": { "start": { - "line": 2060, - "column": 19 + "line": 2111, + "column": 22 }, "end": { - "line": 2060, - "column": 20 + "line": 2111, + "column": 23 } } }, @@ -281881,15 +286325,15 @@ "updateContext": null }, "value": "return", - "start": 70866, - "end": 70872, + "start": 72141, + "end": 72147, "loc": { "start": { - "line": 2061, + "line": 2112, "column": 8 }, "end": { - "line": 2061, + "line": 2112, "column": 14 } } @@ -281909,15 +286353,15 @@ "updateContext": null }, "value": "this", - "start": 70873, - "end": 70877, + "start": 72148, + "end": 72152, "loc": { "start": { - "line": 2061, + "line": 2112, "column": 15 }, "end": { - "line": 2061, + "line": 2112, "column": 19 } } @@ -281935,15 +286379,15 @@ "binop": null, "updateContext": null }, - "start": 70877, - "end": 70878, + "start": 72152, + "end": 72153, "loc": { "start": { - "line": 2061, + "line": 2112, "column": 19 }, "end": { - "line": 2061, + "line": 2112, "column": 20 } } @@ -281960,17 +286404,17 @@ "postfix": false, "binop": null }, - "value": "_colorize", - "start": 70878, - "end": 70887, + "value": "_castsShadow", + "start": 72153, + "end": 72165, "loc": { "start": { - "line": 2061, + "line": 2112, "column": 20 }, "end": { - "line": 2061, - "column": 29 + "line": 2112, + "column": 32 } } }, @@ -281987,16 +286431,16 @@ "binop": null, "updateContext": null }, - "start": 70887, - "end": 70888, + "start": 72165, + "end": 72166, "loc": { "start": { - "line": 2061, - "column": 29 + "line": 2112, + "column": 32 }, "end": { - "line": 2061, - "column": 30 + "line": 2112, + "column": 33 } } }, @@ -282012,31 +286456,31 @@ "postfix": false, "binop": null }, - "start": 70893, - "end": 70894, + "start": 72171, + "end": 72172, "loc": { "start": { - "line": 2062, + "line": 2113, "column": 4 }, "end": { - "line": 2062, + "line": 2113, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets the RGB colorize color for this SceneModel.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n ", - "start": 70900, - "end": 71120, + "value": "*\n * Sets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", + "start": 72178, + "end": 72266, "loc": { "start": { - "line": 2064, + "line": 2115, "column": 4 }, "end": { - "line": 2072, + "line": 2119, "column": 7 } } @@ -282054,15 +286498,15 @@ "binop": null }, "value": "set", - "start": 71125, - "end": 71128, + "start": 72271, + "end": 72274, "loc": { "start": { - "line": 2073, + "line": 2120, "column": 4 }, "end": { - "line": 2073, + "line": 2120, "column": 7 } } @@ -282079,365 +286523,24 @@ "postfix": false, "binop": null }, - "value": "colorize", - "start": 71129, - "end": 71137, - "loc": { - "start": { - "line": 2073, - "column": 8 - }, - "end": { - "line": 2073, - "column": 16 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 71137, - "end": 71138, - "loc": { - "start": { - "line": 2073, - "column": 16 - }, - "end": { - "line": 2073, - "column": 17 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "colorize", - "start": 71138, - "end": 71146, - "loc": { - "start": { - "line": 2073, - "column": 17 - }, - "end": { - "line": 2073, - "column": 25 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 71146, - "end": 71147, - "loc": { - "start": { - "line": 2073, - "column": 25 - }, - "end": { - "line": 2073, - "column": 26 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 71148, - "end": 71149, - "loc": { - "start": { - "line": 2073, - "column": 27 - }, - "end": { - "line": 2073, - "column": 28 - } - } - }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 71158, - "end": 71162, - "loc": { - "start": { - "line": 2074, - "column": 8 - }, - "end": { - "line": 2074, - "column": 12 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 71162, - "end": 71163, - "loc": { - "start": { - "line": 2074, - "column": 12 - }, - "end": { - "line": 2074, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_colorize", - "start": 71163, - "end": 71172, - "loc": { - "start": { - "line": 2074, - "column": 13 - }, - "end": { - "line": 2074, - "column": 22 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 71173, - "end": 71174, - "loc": { - "start": { - "line": 2074, - "column": 23 - }, - "end": { - "line": 2074, - "column": 24 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "colorize", - "start": 71175, - "end": 71183, - "loc": { - "start": { - "line": 2074, - "column": 25 - }, - "end": { - "line": 2074, - "column": 33 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 71183, - "end": 71184, - "loc": { - "start": { - "line": 2074, - "column": 33 - }, - "end": { - "line": 2074, - "column": 34 - } - } - }, - { - "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": 71193, - "end": 71196, + "value": "castsShadow", + "start": 72275, + "end": 72286, "loc": { "start": { - "line": 2075, + "line": 2120, "column": 8 }, "end": { - "line": 2075, - "column": 11 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 71197, - "end": 71198, - "loc": { - "start": { - "line": 2075, - "column": 12 - }, - "end": { - "line": 2075, - "column": 13 - } - } - }, - { - "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": 71198, - "end": 71201, - "loc": { - "start": { - "line": 2075, - "column": 13 - }, - "end": { - "line": 2075, - "column": 16 + "line": 2120, + "column": 19 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -282446,97 +286549,92 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 71202, - "end": 71203, + "start": 72286, + "end": 72287, "loc": { "start": { - "line": 2075, - "column": 17 + "line": 2120, + "column": 19 }, "end": { - "line": 2075, - "column": 18 + "line": 2120, + "column": 20 } } }, { "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": 71204, - "end": 71205, + "value": "castsShadow", + "start": 72287, + "end": 72298, "loc": { "start": { - "line": 2075, - "column": 19 + "line": 2120, + "column": 20 }, "end": { - "line": 2075, - "column": 20 + "line": 2120, + "column": 31 } } }, { "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": 71206, - "end": 71207, + "start": 72298, + "end": 72299, "loc": { "start": { - "line": 2075, - "column": 21 + "line": 2120, + "column": 31 }, "end": { - "line": 2075, - "column": 22 + "line": 2120, + "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": 71207, - "end": 71208, + "start": 72300, + "end": 72301, "loc": { "start": { - "line": 2075, - "column": 22 + "line": 2120, + "column": 33 }, "end": { - "line": 2075, - "column": 23 + "line": 2120, + "column": 34 } } }, @@ -282552,17 +286650,17 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 71209, - "end": 71212, + "value": "castsShadow", + "start": 72310, + "end": 72321, "loc": { "start": { - "line": 2075, - "column": 24 + "line": 2121, + "column": 8 }, "end": { - "line": 2075, - "column": 27 + "line": 2121, + "column": 19 } } }, @@ -282580,104 +286678,103 @@ "updateContext": null }, "value": "=", - "start": 71213, - "end": 71214, + "start": 72322, + "end": 72323, "loc": { "start": { - "line": 2075, - "column": 28 + "line": 2121, + "column": 20 }, "end": { - "line": 2075, - "column": 29 + "line": 2121, + "column": 21 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 71215, - "end": 71219, + "start": 72324, + "end": 72325, "loc": { "start": { - "line": 2075, - "column": 30 + "line": 2121, + "column": 22 }, "end": { - "line": 2075, - "column": 34 + "line": 2121, + "column": 23 } } }, { "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": 71219, - "end": 71220, + "value": "castsShadow", + "start": 72325, + "end": 72336, "loc": { "start": { - "line": 2075, - "column": 34 + "line": 2121, + "column": 23 }, "end": { - "line": 2075, - "column": 35 + "line": 2121, + "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": 6, + "updateContext": null }, - "value": "_entityList", - "start": 71220, - "end": 71231, + "value": "!==", + "start": 72337, + "end": 72340, "loc": { "start": { - "line": 2075, + "line": 2121, "column": 35 }, "end": { - "line": 2075, - "column": 46 + "line": 2121, + "column": 38 } } }, { "type": { - "label": ".", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -282686,24 +286783,25 @@ "binop": null, "updateContext": null }, - "start": 71231, - "end": 71232, + "value": "false", + "start": 72341, + "end": 72346, "loc": { "start": { - "line": 2075, - "column": 46 + "line": 2121, + "column": 39 }, "end": { - "line": 2075, - "column": 47 + "line": 2121, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -282711,17 +286809,16 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 71232, - "end": 71238, + "start": 72346, + "end": 72347, "loc": { "start": { - "line": 2075, - "column": 47 + "line": 2121, + "column": 44 }, "end": { - "line": 2075, - "column": 53 + "line": 2121, + "column": 45 } } }, @@ -282738,69 +286835,69 @@ "binop": null, "updateContext": null }, - "start": 71238, - "end": 71239, + "start": 72347, + "end": 72348, "loc": { "start": { - "line": 2075, - "column": 53 + "line": 2121, + "column": 45 }, "end": { - "line": 2075, - "column": 54 + "line": 2121, + "column": 46 } } }, { "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": 71240, - "end": 71241, + "value": "if", + "start": 72357, + "end": 72359, "loc": { "start": { - "line": 2075, - "column": 55 + "line": 2122, + "column": 8 }, "end": { - "line": 2075, - "column": 56 + "line": 2122, + "column": 10 } } }, { "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": 71242, - "end": 71243, + "start": 72360, + "end": 72361, "loc": { "start": { - "line": 2075, - "column": 57 + "line": 2122, + "column": 11 }, "end": { - "line": 2075, - "column": 58 + "line": 2122, + "column": 12 } } }, @@ -282816,23 +286913,23 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 71244, - "end": 71247, + "value": "castsShadow", + "start": 72361, + "end": 72372, "loc": { "start": { - "line": 2075, - "column": 59 + "line": 2122, + "column": 12 }, "end": { - "line": 2075, - "column": 62 + "line": 2122, + "column": 23 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -282840,25 +286937,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 71247, - "end": 71248, + "value": "!==", + "start": 72373, + "end": 72376, "loc": { "start": { - "line": 2075, - "column": 62 + "line": 2122, + "column": 24 }, "end": { - "line": 2075, - "column": 63 + "line": 2122, + "column": 27 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -282866,45 +286965,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "i", - "start": 71249, - "end": 71250, + "value": "this", + "start": 72377, + "end": 72381, "loc": { "start": { - "line": 2075, - "column": 64 + "line": 2122, + "column": 28 }, "end": { - "line": 2075, - "column": 65 + "line": 2122, + "column": 32 } } }, { "type": { - "label": "++/--", + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 72381, + "end": 72382, + "loc": { + "start": { + "line": 2122, + "column": 32 + }, + "end": { + "line": 2122, + "column": 33 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 71250, - "end": 71252, + "value": "_castsShadow", + "start": 72382, + "end": 72394, "loc": { "start": { - "line": 2075, - "column": 65 + "line": 2122, + "column": 33 }, "end": { - "line": 2075, - "column": 67 + "line": 2122, + "column": 45 } } }, @@ -282920,16 +287046,16 @@ "postfix": false, "binop": null }, - "start": 71252, - "end": 71253, + "start": 72394, + "end": 72395, "loc": { "start": { - "line": 2075, - "column": 67 + "line": 2122, + "column": 45 }, "end": { - "line": 2075, - "column": 68 + "line": 2122, + "column": 46 } } }, @@ -282945,16 +287071,16 @@ "postfix": false, "binop": null }, - "start": 71254, - "end": 71255, + "start": 72396, + "end": 72397, "loc": { "start": { - "line": 2075, - "column": 69 + "line": 2122, + "column": 47 }, "end": { - "line": 2075, - "column": 70 + "line": 2122, + "column": 48 } } }, @@ -282973,15 +287099,15 @@ "updateContext": null }, "value": "this", - "start": 71268, - "end": 71272, + "start": 72410, + "end": 72414, "loc": { "start": { - "line": 2076, + "line": 2123, "column": 12 }, "end": { - "line": 2076, + "line": 2123, "column": 16 } } @@ -282999,15 +287125,15 @@ "binop": null, "updateContext": null }, - "start": 71272, - "end": 71273, + "start": 72414, + "end": 72415, "loc": { "start": { - "line": 2076, + "line": 2123, "column": 16 }, "end": { - "line": 2076, + "line": 2123, "column": 17 } } @@ -283024,43 +287150,44 @@ "postfix": false, "binop": null }, - "value": "_entityList", - "start": 71273, - "end": 71284, + "value": "_castsShadow", + "start": 72415, + "end": 72427, "loc": { "start": { - "line": 2076, + "line": 2123, "column": 17 }, "end": { - "line": 2076, - "column": 28 + "line": 2123, + "column": 29 } } }, { "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": 71284, - "end": 71285, + "value": "=", + "start": 72428, + "end": 72429, "loc": { "start": { - "line": 2076, - "column": 28 + "line": 2123, + "column": 30 }, "end": { - "line": 2076, - "column": 29 + "line": 2123, + "column": 31 } } }, @@ -283076,24 +287203,24 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 71285, - "end": 71286, + "value": "castsShadow", + "start": 72430, + "end": 72441, "loc": { "start": { - "line": 2076, - "column": 29 + "line": 2123, + "column": 32 }, "end": { - "line": 2076, - "column": 30 + "line": 2123, + "column": 43 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -283103,16 +287230,44 @@ "binop": null, "updateContext": null }, - "start": 71286, - "end": 71287, + "start": 72441, + "end": 72442, "loc": { "start": { - "line": 2076, - "column": 30 + "line": 2123, + "column": 43 }, "end": { - "line": 2076, - "column": 31 + "line": 2123, + "column": 44 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 72455, + "end": 72459, + "loc": { + "start": { + "line": 2124, + "column": 12 + }, + "end": { + "line": 2124, + "column": 16 } } }, @@ -283129,16 +287284,16 @@ "binop": null, "updateContext": null }, - "start": 71287, - "end": 71288, + "start": 72459, + "end": 72460, "loc": { "start": { - "line": 2076, - "column": 31 + "line": 2124, + "column": 16 }, "end": { - "line": 2076, - "column": 32 + "line": 2124, + "column": 17 } } }, @@ -283154,52 +287309,50 @@ "postfix": false, "binop": null }, - "value": "colorize", - "start": 71288, - "end": 71296, + "value": "glRedraw", + "start": 72460, + "end": 72468, "loc": { "start": { - "line": 2076, - "column": 32 + "line": 2124, + "column": 17 }, "end": { - "line": 2076, - "column": 40 + "line": 2124, + "column": 25 } } }, { "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": 71297, - "end": 71298, + "start": 72468, + "end": 72469, "loc": { "start": { - "line": 2076, - "column": 41 + "line": 2124, + "column": 25 }, "end": { - "line": 2076, - "column": 42 + "line": 2124, + "column": 26 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -283207,17 +287360,16 @@ "postfix": false, "binop": null }, - "value": "colorize", - "start": 71299, - "end": 71307, + "start": 72469, + "end": 72470, "loc": { "start": { - "line": 2076, - "column": 43 + "line": 2124, + "column": 26 }, "end": { - "line": 2076, - "column": 51 + "line": 2124, + "column": 27 } } }, @@ -283234,16 +287386,16 @@ "binop": null, "updateContext": null }, - "start": 71307, - "end": 71308, + "start": 72470, + "end": 72471, "loc": { "start": { - "line": 2076, - "column": 51 + "line": 2124, + "column": 27 }, "end": { - "line": 2076, - "column": 52 + "line": 2124, + "column": 28 } } }, @@ -283259,15 +287411,15 @@ "postfix": false, "binop": null }, - "start": 71317, - "end": 71318, + "start": 72480, + "end": 72481, "loc": { "start": { - "line": 2077, + "line": 2125, "column": 8 }, "end": { - "line": 2077, + "line": 2125, "column": 9 } } @@ -283284,31 +287436,31 @@ "postfix": false, "binop": null }, - "start": 71323, - "end": 71324, + "start": 72486, + "end": 72487, "loc": { "start": { - "line": 2078, + "line": 2126, "column": 4 }, "end": { - "line": 2078, + "line": 2126, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets this SceneModel's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", - "start": 71330, - "end": 71521, + "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", + "start": 72493, + "end": 72595, "loc": { "start": { - "line": 2080, + "line": 2128, "column": 4 }, "end": { - "line": 2086, + "line": 2132, "column": 7 } } @@ -283326,15 +287478,15 @@ "binop": null }, "value": "get", - "start": 71526, - "end": 71529, + "start": 72600, + "end": 72603, "loc": { "start": { - "line": 2087, + "line": 2133, "column": 4 }, "end": { - "line": 2087, + "line": 2133, "column": 7 } } @@ -283351,17 +287503,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 71530, - "end": 71537, + "value": "receivesShadow", + "start": 72604, + "end": 72618, "loc": { "start": { - "line": 2087, + "line": 2133, "column": 8 }, "end": { - "line": 2087, - "column": 15 + "line": 2133, + "column": 22 } } }, @@ -283377,16 +287529,16 @@ "postfix": false, "binop": null }, - "start": 71537, - "end": 71538, + "start": 72618, + "end": 72619, "loc": { "start": { - "line": 2087, - "column": 15 + "line": 2133, + "column": 22 }, "end": { - "line": 2087, - "column": 16 + "line": 2133, + "column": 23 } } }, @@ -283402,16 +287554,16 @@ "postfix": false, "binop": null }, - "start": 71538, - "end": 71539, + "start": 72619, + "end": 72620, "loc": { "start": { - "line": 2087, - "column": 16 + "line": 2133, + "column": 23 }, "end": { - "line": 2087, - "column": 17 + "line": 2133, + "column": 24 } } }, @@ -283427,16 +287579,16 @@ "postfix": false, "binop": null }, - "start": 71540, - "end": 71541, + "start": 72621, + "end": 72622, "loc": { "start": { - "line": 2087, - "column": 18 + "line": 2133, + "column": 25 }, "end": { - "line": 2087, - "column": 19 + "line": 2133, + "column": 26 } } }, @@ -283455,15 +287607,15 @@ "updateContext": null }, "value": "return", - "start": 71550, - "end": 71556, + "start": 72631, + "end": 72637, "loc": { "start": { - "line": 2088, + "line": 2134, "column": 8 }, "end": { - "line": 2088, + "line": 2134, "column": 14 } } @@ -283483,15 +287635,15 @@ "updateContext": null }, "value": "this", - "start": 71557, - "end": 71561, + "start": 72638, + "end": 72642, "loc": { "start": { - "line": 2088, + "line": 2134, "column": 15 }, "end": { - "line": 2088, + "line": 2134, "column": 19 } } @@ -283509,15 +287661,15 @@ "binop": null, "updateContext": null }, - "start": 71561, - "end": 71562, + "start": 72642, + "end": 72643, "loc": { "start": { - "line": 2088, + "line": 2134, "column": 19 }, "end": { - "line": 2088, + "line": 2134, "column": 20 } } @@ -283534,17 +287686,17 @@ "postfix": false, "binop": null }, - "value": "_opacity", - "start": 71562, - "end": 71570, + "value": "_receivesShadow", + "start": 72643, + "end": 72658, "loc": { "start": { - "line": 2088, + "line": 2134, "column": 20 }, "end": { - "line": 2088, - "column": 28 + "line": 2134, + "column": 35 } } }, @@ -283561,16 +287713,16 @@ "binop": null, "updateContext": null }, - "start": 71570, - "end": 71571, + "start": 72658, + "end": 72659, "loc": { "start": { - "line": 2088, - "column": 28 + "line": 2134, + "column": 35 }, "end": { - "line": 2088, - "column": 29 + "line": 2134, + "column": 36 } } }, @@ -283586,31 +287738,31 @@ "postfix": false, "binop": null }, - "start": 71576, - "end": 71577, + "start": 72664, + "end": 72665, "loc": { "start": { - "line": 2089, + "line": 2135, "column": 4 }, "end": { - "line": 2089, + "line": 2135, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets the opacity factor for this SceneModel.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n ", - "start": 71583, - "end": 71780, + "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", + "start": 72671, + "end": 72773, "loc": { "start": { - "line": 2091, + "line": 2137, "column": 4 }, "end": { - "line": 2097, + "line": 2141, "column": 7 } } @@ -283628,15 +287780,15 @@ "binop": null }, "value": "set", - "start": 71785, - "end": 71788, + "start": 72778, + "end": 72781, "loc": { "start": { - "line": 2098, + "line": 2142, "column": 4 }, "end": { - "line": 2098, + "line": 2142, "column": 7 } } @@ -283653,17 +287805,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 71789, - "end": 71796, + "value": "receivesShadow", + "start": 72782, + "end": 72796, "loc": { "start": { - "line": 2098, + "line": 2142, "column": 8 }, "end": { - "line": 2098, - "column": 15 + "line": 2142, + "column": 22 } } }, @@ -283679,16 +287831,16 @@ "postfix": false, "binop": null }, - "start": 71796, - "end": 71797, + "start": 72796, + "end": 72797, "loc": { "start": { - "line": 2098, - "column": 15 + "line": 2142, + "column": 22 }, "end": { - "line": 2098, - "column": 16 + "line": 2142, + "column": 23 } } }, @@ -283704,17 +287856,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 71797, - "end": 71804, + "value": "receivesShadow", + "start": 72797, + "end": 72811, "loc": { "start": { - "line": 2098, - "column": 16 + "line": 2142, + "column": 23 }, "end": { - "line": 2098, - "column": 23 + "line": 2142, + "column": 37 } } }, @@ -283730,16 +287882,16 @@ "postfix": false, "binop": null }, - "start": 71804, - "end": 71805, + "start": 72811, + "end": 72812, "loc": { "start": { - "line": 2098, - "column": 23 + "line": 2142, + "column": 37 }, "end": { - "line": 2098, - "column": 24 + "line": 2142, + "column": 38 } } }, @@ -283755,70 +287907,16 @@ "postfix": false, "binop": null }, - "start": 71806, - "end": 71807, - "loc": { - "start": { - "line": 2098, - "column": 25 - }, - "end": { - "line": 2098, - "column": 26 - } - } - }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 71816, - "end": 71820, - "loc": { - "start": { - "line": 2099, - "column": 8 - }, - "end": { - "line": 2099, - "column": 12 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 71820, - "end": 71821, + "start": 72813, + "end": 72814, "loc": { "start": { - "line": 2099, - "column": 12 + "line": 2142, + "column": 39 }, "end": { - "line": 2099, - "column": 13 + "line": 2142, + "column": 40 } } }, @@ -283834,17 +287932,17 @@ "postfix": false, "binop": null }, - "value": "_opacity", - "start": 71821, - "end": 71829, + "value": "receivesShadow", + "start": 72823, + "end": 72837, "loc": { "start": { - "line": 2099, - "column": 13 + "line": 2143, + "column": 8 }, "end": { - "line": 2099, - "column": 21 + "line": 2143, + "column": 22 } } }, @@ -283862,96 +287960,16 @@ "updateContext": null }, "value": "=", - "start": 71830, - "end": 71831, + "start": 72838, + "end": 72839, "loc": { "start": { - "line": 2099, - "column": 22 - }, - "end": { - "line": 2099, + "line": 2143, "column": 23 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "opacity", - "start": 71832, - "end": 71839, - "loc": { - "start": { - "line": 2099, - "column": 24 - }, - "end": { - "line": 2099, - "column": 31 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 71839, - "end": 71840, - "loc": { - "start": { - "line": 2099, - "column": 31 - }, - "end": { - "line": 2099, - "column": 32 - } - } - }, - { - "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": 71849, - "end": 71852, - "loc": { - "start": { - "line": 2100, - "column": 8 }, "end": { - "line": 2100, - "column": 11 + "line": 2143, + "column": 24 } } }, @@ -283967,44 +287985,16 @@ "postfix": false, "binop": null }, - "start": 71853, - "end": 71854, - "loc": { - "start": { - "line": 2100, - "column": 12 - }, - "end": { - "line": 2100, - "column": 13 - } - } - }, - { - "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": 71854, - "end": 71857, + "start": 72840, + "end": 72841, "loc": { "start": { - "line": 2100, - "column": 13 + "line": 2143, + "column": 25 }, "end": { - "line": 2100, - "column": 16 + "line": 2143, + "column": 26 } } }, @@ -284020,77 +288010,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 71858, - "end": 71859, - "loc": { - "start": { - "line": 2100, - "column": 17 - }, - "end": { - "line": 2100, - "column": 18 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 71860, - "end": 71861, - "loc": { - "start": { - "line": 2100, - "column": 19 - }, - "end": { - "line": 2100, - "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": 71862, - "end": 71863, + "value": "receivesShadow", + "start": 72841, + "end": 72855, "loc": { "start": { - "line": 2100, - "column": 21 + "line": 2143, + "column": 26 }, "end": { - "line": 2100, - "column": 22 + "line": 2143, + "column": 40 } } }, { "type": { - "label": ",", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -284098,79 +288034,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 71863, - "end": 71864, - "loc": { - "start": { - "line": 2100, - "column": 22 - }, - "end": { - "line": 2100, - "column": 23 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "len", - "start": 71865, - "end": 71868, - "loc": { - "start": { - "line": 2100, - "column": 24 - }, - "end": { - "line": 2100, - "column": 27 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "=", - "start": 71869, - "end": 71870, + "value": "!==", + "start": 72856, + "end": 72859, "loc": { "start": { - "line": 2100, - "column": 28 + "line": 2143, + "column": 41 }, "end": { - "line": 2100, - "column": 29 + "line": 2143, + "column": 44 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -284181,23 +288065,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 71871, - "end": 71875, + "value": "false", + "start": 72860, + "end": 72865, "loc": { "start": { - "line": 2100, - "column": 30 + "line": 2143, + "column": 45 }, "end": { - "line": 2100, - "column": 34 + "line": 2143, + "column": 50 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -284205,52 +288089,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 71875, - "end": 71876, - "loc": { - "start": { - "line": 2100, - "column": 34 - }, - "end": { - "line": 2100, - "column": 35 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "value": "_entityList", - "start": 71876, - "end": 71887, + "start": 72865, + "end": 72866, "loc": { "start": { - "line": 2100, - "column": 35 + "line": 2143, + "column": 50 }, "end": { - "line": 2100, - "column": 46 + "line": 2143, + "column": 51 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -284260,49 +288117,24 @@ "binop": null, "updateContext": null }, - "start": 71887, - "end": 71888, + "start": 72866, + "end": 72867, "loc": { "start": { - "line": 2100, - "column": 46 + "line": 2143, + "column": 51 }, "end": { - "line": 2100, - "column": 47 + "line": 2143, + "column": 52 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "length", - "start": 71888, - "end": 71894, - "loc": { - "start": { - "line": 2100, - "column": 47 - }, - "end": { - "line": 2100, - "column": 53 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -284312,23 +288144,24 @@ "binop": null, "updateContext": null }, - "start": 71894, - "end": 71895, + "value": "if", + "start": 72876, + "end": 72878, "loc": { "start": { - "line": 2100, - "column": 53 + "line": 2144, + "column": 8 }, "end": { - "line": 2100, - "column": 54 + "line": 2144, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -284337,78 +288170,78 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 71896, - "end": 71897, + "start": 72879, + "end": 72880, "loc": { "start": { - "line": 2100, - "column": 55 + "line": 2144, + "column": 11 }, "end": { - "line": 2100, - "column": 56 + "line": 2144, + "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": 7, - "updateContext": null + "binop": null }, - "value": "<", - "start": 71898, - "end": 71899, + "value": "receivesShadow", + "start": 72880, + "end": 72894, "loc": { "start": { - "line": 2100, - "column": 57 + "line": 2144, + "column": 12 }, "end": { - "line": 2100, - "column": 58 + "line": 2144, + "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": 6, + "updateContext": null }, - "value": "len", - "start": 71900, - "end": 71903, + "value": "!==", + "start": 72895, + "end": 72898, "loc": { "start": { - "line": 2100, - "column": 59 + "line": 2144, + "column": 27 }, "end": { - "line": 2100, - "column": 62 + "line": 2144, + "column": 30 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -284417,68 +288250,69 @@ "binop": null, "updateContext": null }, - "start": 71903, - "end": 71904, + "value": "this", + "start": 72899, + "end": 72903, "loc": { "start": { - "line": 2100, - "column": 62 + "line": 2144, + "column": 31 }, "end": { - "line": 2100, - "column": 63 + "line": 2144, + "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": "i", - "start": 71905, - "end": 71906, + "start": 72903, + "end": 72904, "loc": { "start": { - "line": 2100, - "column": 64 + "line": 2144, + "column": 35 }, "end": { - "line": 2100, - "column": 65 + "line": 2144, + "column": 36 } } }, { "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": 71906, - "end": 71908, + "value": "_receivesShadow", + "start": 72904, + "end": 72919, "loc": { "start": { - "line": 2100, - "column": 65 + "line": 2144, + "column": 36 }, "end": { - "line": 2100, - "column": 67 + "line": 2144, + "column": 51 } } }, @@ -284494,16 +288328,16 @@ "postfix": false, "binop": null }, - "start": 71908, - "end": 71909, + "start": 72919, + "end": 72920, "loc": { "start": { - "line": 2100, - "column": 67 + "line": 2144, + "column": 51 }, "end": { - "line": 2100, - "column": 68 + "line": 2144, + "column": 52 } } }, @@ -284519,16 +288353,16 @@ "postfix": false, "binop": null }, - "start": 71910, - "end": 71911, + "start": 72921, + "end": 72922, "loc": { "start": { - "line": 2100, - "column": 69 + "line": 2144, + "column": 53 }, "end": { - "line": 2100, - "column": 70 + "line": 2144, + "column": 54 } } }, @@ -284547,15 +288381,15 @@ "updateContext": null }, "value": "this", - "start": 71924, - "end": 71928, + "start": 72935, + "end": 72939, "loc": { "start": { - "line": 2101, + "line": 2145, "column": 12 }, "end": { - "line": 2101, + "line": 2145, "column": 16 } } @@ -284573,15 +288407,15 @@ "binop": null, "updateContext": null }, - "start": 71928, - "end": 71929, + "start": 72939, + "end": 72940, "loc": { "start": { - "line": 2101, + "line": 2145, "column": 16 }, "end": { - "line": 2101, + "line": 2145, "column": 17 } } @@ -284598,43 +288432,44 @@ "postfix": false, "binop": null }, - "value": "_entityList", - "start": 71929, - "end": 71940, + "value": "_receivesShadow", + "start": 72940, + "end": 72955, "loc": { "start": { - "line": 2101, + "line": 2145, "column": 17 }, "end": { - "line": 2101, - "column": 28 + "line": 2145, + "column": 32 } } }, { "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": 71940, - "end": 71941, + "value": "=", + "start": 72956, + "end": 72957, "loc": { "start": { - "line": 2101, - "column": 28 + "line": 2145, + "column": 33 }, "end": { - "line": 2101, - "column": 29 + "line": 2145, + "column": 34 } } }, @@ -284650,24 +288485,24 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 71941, - "end": 71942, + "value": "receivesShadow", + "start": 72958, + "end": 72972, "loc": { "start": { - "line": 2101, - "column": 29 + "line": 2145, + "column": 35 }, "end": { - "line": 2101, - "column": 30 + "line": 2145, + "column": 49 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -284677,16 +288512,44 @@ "binop": null, "updateContext": null }, - "start": 71942, - "end": 71943, + "start": 72972, + "end": 72973, "loc": { "start": { - "line": 2101, - "column": 30 + "line": 2145, + "column": 49 }, "end": { - "line": 2101, - "column": 31 + "line": 2145, + "column": 50 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 72986, + "end": 72990, + "loc": { + "start": { + "line": 2146, + "column": 12 + }, + "end": { + "line": 2146, + "column": 16 } } }, @@ -284703,16 +288566,16 @@ "binop": null, "updateContext": null }, - "start": 71943, - "end": 71944, + "start": 72990, + "end": 72991, "loc": { "start": { - "line": 2101, - "column": 31 + "line": 2146, + "column": 16 }, "end": { - "line": 2101, - "column": 32 + "line": 2146, + "column": 17 } } }, @@ -284728,52 +288591,50 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 71944, - "end": 71951, + "value": "glRedraw", + "start": 72991, + "end": 72999, "loc": { "start": { - "line": 2101, - "column": 32 + "line": 2146, + "column": 17 }, "end": { - "line": 2101, - "column": 39 + "line": 2146, + "column": 25 } } }, { "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": 71952, - "end": 71953, + "start": 72999, + "end": 73000, "loc": { "start": { - "line": 2101, - "column": 40 + "line": 2146, + "column": 25 }, "end": { - "line": 2101, - "column": 41 + "line": 2146, + "column": 26 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -284781,17 +288642,16 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 71954, - "end": 71961, + "start": 73000, + "end": 73001, "loc": { "start": { - "line": 2101, - "column": 42 + "line": 2146, + "column": 26 }, "end": { - "line": 2101, - "column": 49 + "line": 2146, + "column": 27 } } }, @@ -284808,16 +288668,16 @@ "binop": null, "updateContext": null }, - "start": 71961, - "end": 71962, + "start": 73001, + "end": 73002, "loc": { "start": { - "line": 2101, - "column": 49 + "line": 2146, + "column": 27 }, "end": { - "line": 2101, - "column": 50 + "line": 2146, + "column": 28 } } }, @@ -284833,15 +288693,15 @@ "postfix": false, "binop": null }, - "start": 71971, - "end": 71972, + "start": 73011, + "end": 73012, "loc": { "start": { - "line": 2102, + "line": 2147, "column": 8 }, "end": { - "line": 2102, + "line": 2147, "column": 9 } } @@ -284858,31 +288718,31 @@ "postfix": false, "binop": null }, - "start": 71977, - "end": 71978, + "start": 73017, + "end": 73018, "loc": { "start": { - "line": 2103, + "line": 2148, "column": 4 }, "end": { - "line": 2103, + "line": 2148, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", - "start": 71984, - "end": 72072, + "value": "*\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * Only works when {@link SAO#enabled} is also true.\n *\n * @type {Boolean}\n ", + "start": 73024, + "end": 73280, "loc": { "start": { - "line": 2105, + "line": 2150, "column": 4 }, "end": { - "line": 2109, + "line": 2158, "column": 7 } } @@ -284900,15 +288760,15 @@ "binop": null }, "value": "get", - "start": 72077, - "end": 72080, + "start": 73285, + "end": 73288, "loc": { "start": { - "line": 2110, + "line": 2159, "column": 4 }, "end": { - "line": 2110, + "line": 2159, "column": 7 } } @@ -284925,17 +288785,17 @@ "postfix": false, "binop": null }, - "value": "castsShadow", - "start": 72081, - "end": 72092, + "value": "saoEnabled", + "start": 73289, + "end": 73299, "loc": { "start": { - "line": 2110, + "line": 2159, "column": 8 }, "end": { - "line": 2110, - "column": 19 + "line": 2159, + "column": 18 } } }, @@ -284951,16 +288811,16 @@ "postfix": false, "binop": null }, - "start": 72092, - "end": 72093, + "start": 73299, + "end": 73300, "loc": { "start": { - "line": 2110, - "column": 19 + "line": 2159, + "column": 18 }, "end": { - "line": 2110, - "column": 20 + "line": 2159, + "column": 19 } } }, @@ -284976,16 +288836,16 @@ "postfix": false, "binop": null }, - "start": 72093, - "end": 72094, + "start": 73300, + "end": 73301, "loc": { "start": { - "line": 2110, - "column": 20 + "line": 2159, + "column": 19 }, "end": { - "line": 2110, - "column": 21 + "line": 2159, + "column": 20 } } }, @@ -285001,16 +288861,16 @@ "postfix": false, "binop": null }, - "start": 72095, - "end": 72096, + "start": 73302, + "end": 73303, "loc": { "start": { - "line": 2110, - "column": 22 + "line": 2159, + "column": 21 }, "end": { - "line": 2110, - "column": 23 + "line": 2159, + "column": 22 } } }, @@ -285029,15 +288889,15 @@ "updateContext": null }, "value": "return", - "start": 72105, - "end": 72111, + "start": 73312, + "end": 73318, "loc": { "start": { - "line": 2111, + "line": 2160, "column": 8 }, "end": { - "line": 2111, + "line": 2160, "column": 14 } } @@ -285057,15 +288917,15 @@ "updateContext": null }, "value": "this", - "start": 72112, - "end": 72116, + "start": 73319, + "end": 73323, "loc": { "start": { - "line": 2111, + "line": 2160, "column": 15 }, "end": { - "line": 2111, + "line": 2160, "column": 19 } } @@ -285083,15 +288943,15 @@ "binop": null, "updateContext": null }, - "start": 72116, - "end": 72117, + "start": 73323, + "end": 73324, "loc": { "start": { - "line": 2111, + "line": 2160, "column": 19 }, "end": { - "line": 2111, + "line": 2160, "column": 20 } } @@ -285108,17 +288968,17 @@ "postfix": false, "binop": null }, - "value": "_castsShadow", - "start": 72117, - "end": 72129, + "value": "_saoEnabled", + "start": 73324, + "end": 73335, "loc": { "start": { - "line": 2111, + "line": 2160, "column": 20 }, "end": { - "line": 2111, - "column": 32 + "line": 2160, + "column": 31 } } }, @@ -285135,16 +288995,16 @@ "binop": null, "updateContext": null }, - "start": 72129, - "end": 72130, + "start": 73335, + "end": 73336, "loc": { "start": { - "line": 2111, - "column": 32 + "line": 2160, + "column": 31 }, "end": { - "line": 2111, - "column": 33 + "line": 2160, + "column": 32 } } }, @@ -285160,31 +289020,31 @@ "postfix": false, "binop": null }, - "start": 72135, - "end": 72136, + "start": 73341, + "end": 73342, "loc": { "start": { - "line": 2112, + "line": 2161, "column": 4 }, "end": { - "line": 2112, + "line": 2161, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n ", - "start": 72142, - "end": 72230, + "value": "*\n * Gets if physically-based rendering (PBR) is enabled for this SceneModel.\n *\n * Only works when {@link Scene#pbrEnabled} is also true.\n *\n * @type {Boolean}\n ", + "start": 73348, + "end": 73538, "loc": { "start": { - "line": 2114, + "line": 2163, "column": 4 }, "end": { - "line": 2118, + "line": 2169, "column": 7 } } @@ -285201,16 +289061,16 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 72235, - "end": 72238, + "value": "get", + "start": 73543, + "end": 73546, "loc": { "start": { - "line": 2119, + "line": 2170, "column": 4 }, "end": { - "line": 2119, + "line": 2170, "column": 7 } } @@ -285227,17 +289087,17 @@ "postfix": false, "binop": null }, - "value": "castsShadow", - "start": 72239, - "end": 72250, + "value": "pbrEnabled", + "start": 73547, + "end": 73557, "loc": { "start": { - "line": 2119, + "line": 2170, "column": 8 }, "end": { - "line": 2119, - "column": 19 + "line": 2170, + "column": 18 } } }, @@ -285253,42 +289113,16 @@ "postfix": false, "binop": null }, - "start": 72250, - "end": 72251, - "loc": { - "start": { - "line": 2119, - "column": 19 - }, - "end": { - "line": 2119, - "column": 20 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "castsShadow", - "start": 72251, - "end": 72262, + "start": 73557, + "end": 73558, "loc": { "start": { - "line": 2119, - "column": 20 + "line": 2170, + "column": 18 }, "end": { - "line": 2119, - "column": 31 + "line": 2170, + "column": 19 } } }, @@ -285304,16 +289138,16 @@ "postfix": false, "binop": null }, - "start": 72262, - "end": 72263, + "start": 73558, + "end": 73559, "loc": { "start": { - "line": 2119, - "column": 31 + "line": 2170, + "column": 19 }, "end": { - "line": 2119, - "column": 32 + "line": 2170, + "column": 20 } } }, @@ -285329,100 +289163,51 @@ "postfix": false, "binop": null }, - "start": 72264, - "end": 72265, - "loc": { - "start": { - "line": 2119, - "column": 33 - }, - "end": { - "line": 2119, - "column": 34 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "castsShadow", - "start": 72274, - "end": 72285, + "start": 73560, + "end": 73561, "loc": { "start": { - "line": 2120, - "column": 8 + "line": 2170, + "column": 21 }, "end": { - "line": 2120, - "column": 19 + "line": 2170, + "column": 22 } } }, { "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": 72286, - "end": 72287, - "loc": { - "start": { - "line": 2120, - "column": 20 - }, - "end": { - "line": 2120, - "column": 21 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 72288, - "end": 72289, + "value": "return", + "start": 73570, + "end": 73576, "loc": { "start": { - "line": 2120, - "column": 22 + "line": 2171, + "column": 8 }, "end": { - "line": 2120, - "column": 23 + "line": 2171, + "column": 14 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -285430,55 +289215,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "castsShadow", - "start": 72289, - "end": 72300, - "loc": { - "start": { - "line": 2120, - "column": 23 - }, - "end": { - "line": 2120, - "column": 34 - } - } - }, - { - "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 72301, - "end": 72304, + "value": "this", + "start": 73577, + "end": 73581, "loc": { "start": { - "line": 2120, - "column": 35 + "line": 2171, + "column": 15 }, "end": { - "line": 2120, - "column": 38 + "line": 2171, + "column": 19 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -285487,25 +289245,24 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 72305, - "end": 72310, + "start": 73581, + "end": 73582, "loc": { "start": { - "line": 2120, - "column": 39 + "line": 2171, + "column": 19 }, "end": { - "line": 2120, - "column": 44 + "line": 2171, + "column": 20 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -285513,16 +289270,17 @@ "postfix": false, "binop": null }, - "start": 72310, - "end": 72311, + "value": "_pbrEnabled", + "start": 73582, + "end": 73593, "loc": { "start": { - "line": 2120, - "column": 44 + "line": 2171, + "column": 20 }, "end": { - "line": 2120, - "column": 45 + "line": 2171, + "column": 31 } } }, @@ -285539,23 +289297,22 @@ "binop": null, "updateContext": null }, - "start": 72311, - "end": 72312, + "start": 73593, + "end": 73594, "loc": { "start": { - "line": 2120, - "column": 45 + "line": 2171, + "column": 31 }, "end": { - "line": 2120, - "column": 46 + "line": 2171, + "column": 32 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -285563,45 +289320,34 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 72321, - "end": 72323, + "start": 73599, + "end": 73600, "loc": { "start": { - "line": 2121, - "column": 8 + "line": 2172, + "column": 4 }, "end": { - "line": 2121, - "column": 10 + "line": 2172, + "column": 5 } } }, { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 72324, - "end": 72325, + "type": "CommentBlock", + "value": "*\n * Gets if color textures are enabled for this SceneModel.\n *\n * Only works when {@link Scene#colorTextureEnabled} is also true.\n *\n * @type {Boolean}\n ", + "start": 73606, + "end": 73788, "loc": { "start": { - "line": 2121, - "column": 11 + "line": 2174, + "column": 4 }, "end": { - "line": 2121, - "column": 12 + "line": 2180, + "column": 7 } } }, @@ -285617,78 +289363,74 @@ "postfix": false, "binop": null }, - "value": "castsShadow", - "start": 72325, - "end": 72336, + "value": "get", + "start": 73793, + "end": 73796, "loc": { "start": { - "line": 2121, - "column": 12 + "line": 2181, + "column": 4 }, "end": { - "line": 2121, - "column": 23 + "line": 2181, + "column": 7 } } }, { "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": 72337, - "end": 72340, + "value": "colorTextureEnabled", + "start": 73797, + "end": 73816, "loc": { "start": { - "line": 2121, - "column": 24 + "line": 2181, + "column": 8 }, "end": { - "line": 2121, + "line": 2181, "column": 27 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 72341, - "end": 72345, + "start": 73816, + "end": 73817, "loc": { "start": { - "line": 2121, - "column": 28 + "line": 2181, + "column": 27 }, "end": { - "line": 2121, - "column": 32 + "line": 2181, + "column": 28 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -285696,53 +289438,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 72345, - "end": 72346, - "loc": { - "start": { - "line": 2121, - "column": 32 - }, - "end": { - "line": 2121, - "column": 33 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "value": "_castsShadow", - "start": 72346, - "end": 72358, + "start": 73817, + "end": 73818, "loc": { "start": { - "line": 2121, - "column": 33 + "line": 2181, + "column": 28 }, "end": { - "line": 2121, - "column": 45 + "line": 2181, + "column": 29 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -285750,41 +289465,44 @@ "postfix": false, "binop": null }, - "start": 72358, - "end": 72359, + "start": 73819, + "end": 73820, "loc": { "start": { - "line": 2121, - "column": 45 + "line": 2181, + "column": 30 }, "end": { - "line": 2121, - "column": 46 + "line": 2181, + "column": 31 } } }, { "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": 72360, - "end": 72361, + "value": "return", + "start": 73829, + "end": 73835, "loc": { "start": { - "line": 2121, - "column": 47 + "line": 2182, + "column": 8 }, "end": { - "line": 2121, - "column": 48 + "line": 2182, + "column": 14 } } }, @@ -285803,16 +289521,16 @@ "updateContext": null }, "value": "this", - "start": 72374, - "end": 72378, + "start": 73836, + "end": 73840, "loc": { "start": { - "line": 2122, - "column": 12 + "line": 2182, + "column": 15 }, "end": { - "line": 2122, - "column": 16 + "line": 2182, + "column": 19 } } }, @@ -285829,16 +289547,16 @@ "binop": null, "updateContext": null }, - "start": 72378, - "end": 72379, + "start": 73840, + "end": 73841, "loc": { "start": { - "line": 2122, - "column": 16 + "line": 2182, + "column": 19 }, "end": { - "line": 2122, - "column": 17 + "line": 2182, + "column": 20 } } }, @@ -285854,52 +289572,51 @@ "postfix": false, "binop": null }, - "value": "_castsShadow", - "start": 72379, - "end": 72391, + "value": "_colorTextureEnabled", + "start": 73841, + "end": 73861, "loc": { "start": { - "line": 2122, - "column": 17 + "line": 2182, + "column": 20 }, "end": { - "line": 2122, - "column": 29 + "line": 2182, + "column": 40 } } }, { "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": 72392, - "end": 72393, + "start": 73861, + "end": 73862, "loc": { "start": { - "line": 2122, - "column": 30 + "line": 2182, + "column": 40 }, "end": { - "line": 2122, - "column": 31 + "line": 2182, + "column": 41 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -285907,50 +289624,64 @@ "postfix": false, "binop": null }, - "value": "castsShadow", - "start": 72394, - "end": 72405, + "start": 73867, + "end": 73868, "loc": { "start": { - "line": 2122, - "column": 32 + "line": 2183, + "column": 4 }, "end": { - "line": 2122, - "column": 43 + "line": 2183, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Returns true to indicate that SceneModel is implements {@link Drawable}.\n *\n * @type {Boolean}\n ", + "start": 73874, + "end": 73995, + "loc": { + "start": { + "line": 2185, + "column": 4 + }, + "end": { + "line": 2189, + "column": 7 } } }, { "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": 72405, - "end": 72406, + "value": "get", + "start": 74000, + "end": 74003, "loc": { "start": { - "line": 2122, - "column": 43 + "line": 2190, + "column": 4 }, "end": { - "line": 2122, - "column": 44 + "line": 2190, + "column": 7 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -285958,54 +289689,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 72419, - "end": 72423, + "value": "isDrawable", + "start": 74004, + "end": 74014, "loc": { "start": { - "line": 2123, - "column": 12 + "line": 2190, + "column": 8 }, "end": { - "line": 2123, - "column": 16 + "line": 2190, + "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": 72423, - "end": 72424, + "start": 74014, + "end": 74015, "loc": { "start": { - "line": 2123, - "column": 16 + "line": 2190, + "column": 18 }, "end": { - "line": 2123, - "column": 17 + "line": 2190, + "column": 19 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -286013,23 +289742,22 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 72424, - "end": 72432, + "start": 74015, + "end": 74016, "loc": { "start": { - "line": 2123, - "column": 17 + "line": 2190, + "column": 19 }, "end": { - "line": 2123, - "column": 25 + "line": 2190, + "column": 20 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -286039,49 +289767,53 @@ "postfix": false, "binop": null }, - "start": 72432, - "end": 72433, + "start": 74017, + "end": 74018, "loc": { "start": { - "line": 2123, - "column": 25 + "line": 2190, + "column": 21 }, "end": { - "line": 2123, - "column": 26 + "line": 2190, + "column": 22 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 72433, - "end": 72434, + "value": "return", + "start": 74027, + "end": 74033, "loc": { "start": { - "line": 2123, - "column": 26 + "line": 2191, + "column": 8 }, "end": { - "line": 2123, - "column": 27 + "line": 2191, + "column": 14 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "true", + "keyword": "true", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -286090,41 +289822,43 @@ "binop": null, "updateContext": null }, - "start": 72434, - "end": 72435, + "value": "true", + "start": 74034, + "end": 74038, "loc": { "start": { - "line": 2123, - "column": 27 + "line": 2191, + "column": 15 }, "end": { - "line": 2123, - "column": 28 + "line": 2191, + "column": 19 } } }, { "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": 72444, - "end": 72445, + "start": 74038, + "end": 74039, "loc": { "start": { - "line": 2124, - "column": 8 + "line": 2191, + "column": 19 }, "end": { - "line": 2124, - "column": 9 + "line": 2191, + "column": 20 } } }, @@ -286140,32 +289874,32 @@ "postfix": false, "binop": null }, - "start": 72450, - "end": 72451, + "start": 74044, + "end": 74045, "loc": { "start": { - "line": 2125, + "line": 2192, "column": 4 }, "end": { - "line": 2125, + "line": 2192, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", - "start": 72457, - "end": 72559, + "value": "* @private ", + "start": 74051, + "end": 74066, "loc": { "start": { - "line": 2127, + "line": 2194, "column": 4 }, "end": { - "line": 2131, - "column": 7 + "line": 2194, + "column": 19 } } }, @@ -286182,15 +289916,15 @@ "binop": null }, "value": "get", - "start": 72564, - "end": 72567, + "start": 74071, + "end": 74074, "loc": { "start": { - "line": 2132, + "line": 2195, "column": 4 }, "end": { - "line": 2132, + "line": 2195, "column": 7 } } @@ -286207,17 +289941,17 @@ "postfix": false, "binop": null }, - "value": "receivesShadow", - "start": 72568, - "end": 72582, + "value": "isStateSortable", + "start": 74075, + "end": 74090, "loc": { "start": { - "line": 2132, + "line": 2195, "column": 8 }, "end": { - "line": 2132, - "column": 22 + "line": 2195, + "column": 23 } } }, @@ -286233,16 +289967,16 @@ "postfix": false, "binop": null }, - "start": 72582, - "end": 72583, + "start": 74090, + "end": 74091, "loc": { "start": { - "line": 2132, - "column": 22 + "line": 2195, + "column": 23 }, "end": { - "line": 2132, - "column": 23 + "line": 2195, + "column": 24 } } }, @@ -286258,16 +289992,16 @@ "postfix": false, "binop": null }, - "start": 72583, - "end": 72584, + "start": 74091, + "end": 74092, "loc": { "start": { - "line": 2132, - "column": 23 + "line": 2195, + "column": 24 }, "end": { - "line": 2132, - "column": 24 + "line": 2195, + "column": 25 } } }, @@ -286283,16 +290017,16 @@ "postfix": false, "binop": null }, - "start": 72585, - "end": 72586, + "start": 74093, + "end": 74094, "loc": { "start": { - "line": 2132, - "column": 25 + "line": 2195, + "column": 26 }, "end": { - "line": 2132, - "column": 26 + "line": 2195, + "column": 27 } } }, @@ -286311,104 +290045,25 @@ "updateContext": null }, "value": "return", - "start": 72595, - "end": 72601, - "loc": { - "start": { - "line": 2133, - "column": 8 - }, - "end": { - "line": 2133, - "column": 14 - } - } - }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 72602, - "end": 72606, - "loc": { - "start": { - "line": 2133, - "column": 15 - }, - "end": { - "line": 2133, - "column": 19 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 72606, - "end": 72607, - "loc": { - "start": { - "line": 2133, - "column": 19 - }, - "end": { - "line": 2133, - "column": 20 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_receivesShadow", - "start": 72607, - "end": 72622, + "start": 74103, + "end": 74109, "loc": { "start": { - "line": 2133, - "column": 20 + "line": 2196, + "column": 8 }, "end": { - "line": 2133, - "column": 35 + "line": 2196, + "column": 14 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "false", + "keyword": "false", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -286417,16 +290072,17 @@ "binop": null, "updateContext": null }, - "start": 72622, - "end": 72623, + "value": "false", + "start": 74110, + "end": 74115, "loc": { "start": { - "line": 2133, - "column": 35 + "line": 2196, + "column": 15 }, "end": { - "line": 2133, - "column": 36 + "line": 2196, + "column": 20 } } }, @@ -286442,31 +290098,31 @@ "postfix": false, "binop": null }, - "start": 72628, - "end": 72629, + "start": 74120, + "end": 74121, "loc": { "start": { - "line": 2134, + "line": 2197, "column": 4 }, "end": { - "line": 2134, + "line": 2197, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n ", - "start": 72635, - "end": 72737, + "value": "*\n * Configures the appearance of xrayed {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#xrayMaterial}.\n *\n * @type {EmphasisMaterial}\n ", + "start": 74127, + "end": 74324, "loc": { "start": { - "line": 2136, + "line": 2199, "column": 4 }, "end": { - "line": 2140, + "line": 2205, "column": 7 } } @@ -286483,16 +290139,16 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 72742, - "end": 72745, + "value": "get", + "start": 74329, + "end": 74332, "loc": { "start": { - "line": 2141, + "line": 2206, "column": 4 }, "end": { - "line": 2141, + "line": 2206, "column": 7 } } @@ -286509,17 +290165,17 @@ "postfix": false, "binop": null }, - "value": "receivesShadow", - "start": 72746, - "end": 72760, + "value": "xrayMaterial", + "start": 74333, + "end": 74345, "loc": { "start": { - "line": 2141, + "line": 2206, "column": 8 }, "end": { - "line": 2141, - "column": 22 + "line": 2206, + "column": 20 } } }, @@ -286535,24 +290191,24 @@ "postfix": false, "binop": null }, - "start": 72760, - "end": 72761, + "start": 74345, + "end": 74346, "loc": { "start": { - "line": 2141, - "column": 22 + "line": 2206, + "column": 20 }, "end": { - "line": 2141, - "column": 23 + "line": 2206, + "column": 21 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -286560,25 +290216,24 @@ "postfix": false, "binop": null }, - "value": "receivesShadow", - "start": 72761, - "end": 72775, + "start": 74346, + "end": 74347, "loc": { "start": { - "line": 2141, - "column": 23 + "line": 2206, + "column": 21 }, "end": { - "line": 2141, - "column": 37 + "line": 2206, + "column": 22 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -286586,47 +290241,51 @@ "postfix": false, "binop": null }, - "start": 72775, - "end": 72776, + "start": 74348, + "end": 74349, "loc": { "start": { - "line": 2141, - "column": 37 + "line": 2206, + "column": 23 }, "end": { - "line": 2141, - "column": 38 + "line": 2206, + "column": 24 } } }, { "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": 72777, - "end": 72778, + "value": "return", + "start": 74358, + "end": 74364, "loc": { "start": { - "line": 2141, - "column": 39 + "line": 2207, + "column": 8 }, "end": { - "line": 2141, - "column": 40 + "line": 2207, + "column": 14 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -286634,53 +290293,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "receivesShadow", - "start": 72787, - "end": 72801, + "value": "this", + "start": 74365, + "end": 74369, "loc": { "start": { - "line": 2142, - "column": 8 + "line": 2207, + "column": 15 }, "end": { - "line": 2142, - "column": 22 + "line": 2207, + "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": 72802, - "end": 72803, + "start": 74369, + "end": 74370, "loc": { "start": { - "line": 2142, - "column": 23 + "line": 2207, + "column": 19 }, "end": { - "line": 2142, - "column": 24 + "line": 2207, + "column": 20 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -286689,15 +290348,42 @@ "postfix": false, "binop": null }, - "start": 72804, - "end": 72805, + "value": "scene", + "start": 74370, + "end": 74375, "loc": { "start": { - "line": 2142, + "line": 2207, + "column": 20 + }, + "end": { + "line": 2207, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 74375, + "end": 74376, + "loc": { + "start": { + "line": 2207, "column": 25 }, "end": { - "line": 2142, + "line": 2207, "column": 26 } } @@ -286714,23 +290400,23 @@ "postfix": false, "binop": null }, - "value": "receivesShadow", - "start": 72805, - "end": 72819, + "value": "xrayMaterial", + "start": 74376, + "end": 74388, "loc": { "start": { - "line": 2142, + "line": 2207, "column": 26 }, "end": { - "line": 2142, - "column": 40 + "line": 2207, + "column": 38 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -286738,56 +290424,68 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 72820, - "end": 72823, + "start": 74388, + "end": 74389, "loc": { "start": { - "line": 2142, - "column": 41 + "line": 2207, + "column": 38 }, "end": { - "line": 2142, - "column": 44 + "line": 2207, + "column": 39 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 72824, - "end": 72829, + "start": 74394, + "end": 74395, "loc": { "start": { - "line": 2142, - "column": 45 + "line": 2208, + "column": 4 }, "end": { - "line": 2142, - "column": 50 + "line": 2208, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Configures the appearance of highlighted {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#highlightMaterial}.\n *\n * @type {EmphasisMaterial}\n ", + "start": 74401, + "end": 74608, + "loc": { + "start": { + "line": 2210, + "column": 4 + }, + "end": { + "line": 2216, + "column": 7 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -286795,78 +290493,76 @@ "postfix": false, "binop": null }, - "start": 72829, - "end": 72830, + "value": "get", + "start": 74613, + "end": 74616, "loc": { "start": { - "line": 2142, - "column": 50 + "line": 2217, + "column": 4 }, "end": { - "line": 2142, - "column": 51 + "line": 2217, + "column": 7 } } }, { "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": 72830, - "end": 72831, + "value": "highlightMaterial", + "start": 74617, + "end": 74634, "loc": { "start": { - "line": 2142, - "column": 51 + "line": 2217, + "column": 8 }, "end": { - "line": 2142, - "column": 52 + "line": 2217, + "column": 25 } } }, { "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": 72840, - "end": 72842, + "start": 74634, + "end": 74635, "loc": { "start": { - "line": 2143, - "column": 8 + "line": 2217, + "column": 25 }, "end": { - "line": 2143, - "column": 10 + "line": 2217, + "column": 26 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -286874,23 +290570,23 @@ "postfix": false, "binop": null }, - "start": 72843, - "end": 72844, + "start": 74635, + "end": 74636, "loc": { "start": { - "line": 2143, - "column": 11 + "line": 2217, + "column": 26 }, "end": { - "line": 2143, - "column": 12 + "line": 2217, + "column": 27 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -286899,23 +290595,23 @@ "postfix": false, "binop": null }, - "value": "receivesShadow", - "start": 72844, - "end": 72858, + "start": 74637, + "end": 74638, "loc": { "start": { - "line": 2143, - "column": 12 + "line": 2217, + "column": 28 }, "end": { - "line": 2143, - "column": 26 + "line": 2217, + "column": 29 } } }, { "type": { - "label": "==/!=", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -286923,20 +290619,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 72859, - "end": 72862, + "value": "return", + "start": 74647, + "end": 74653, "loc": { "start": { - "line": 2143, - "column": 27 + "line": 2218, + "column": 8 }, "end": { - "line": 2143, - "column": 30 + "line": 2218, + "column": 14 } } }, @@ -286955,16 +290651,16 @@ "updateContext": null }, "value": "this", - "start": 72863, - "end": 72867, + "start": 74654, + "end": 74658, "loc": { "start": { - "line": 2143, - "column": 31 + "line": 2218, + "column": 15 }, "end": { - "line": 2143, - "column": 35 + "line": 2218, + "column": 19 } } }, @@ -286981,16 +290677,16 @@ "binop": null, "updateContext": null }, - "start": 72867, - "end": 72868, + "start": 74658, + "end": 74659, "loc": { "start": { - "line": 2143, - "column": 35 + "line": 2218, + "column": 19 }, "end": { - "line": 2143, - "column": 36 + "line": 2218, + "column": 20 } } }, @@ -287006,23 +290702,23 @@ "postfix": false, "binop": null }, - "value": "_receivesShadow", - "start": 72868, - "end": 72883, + "value": "scene", + "start": 74659, + "end": 74664, "loc": { "start": { - "line": 2143, - "column": 36 + "line": 2218, + "column": 20 }, "end": { - "line": 2143, - "column": 51 + "line": 2218, + "column": 25 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -287030,25 +290726,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 72883, - "end": 72884, + "start": 74664, + "end": 74665, "loc": { "start": { - "line": 2143, - "column": 51 + "line": 2218, + "column": 25 }, "end": { - "line": 2143, - "column": 52 + "line": 2218, + "column": 26 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -287057,25 +290754,25 @@ "postfix": false, "binop": null }, - "start": 72885, - "end": 72886, + "value": "highlightMaterial", + "start": 74665, + "end": 74682, "loc": { "start": { - "line": 2143, - "column": 53 + "line": 2218, + "column": 26 }, "end": { - "line": 2143, - "column": 54 + "line": 2218, + "column": 43 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -287084,23 +290781,22 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 72899, - "end": 72903, + "start": 74682, + "end": 74683, "loc": { "start": { - "line": 2144, - "column": 12 + "line": 2218, + "column": 43 }, "end": { - "line": 2144, - "column": 16 + "line": 2218, + "column": 44 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -287108,19 +290804,34 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 72903, - "end": 72904, + "start": 74688, + "end": 74689, "loc": { "start": { - "line": 2144, - "column": 16 + "line": 2219, + "column": 4 }, "end": { - "line": 2144, - "column": 17 + "line": 2219, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Configures the appearance of selected {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#selectedMaterial}.\n *\n * @type {EmphasisMaterial}\n ", + "start": 74695, + "end": 74898, + "loc": { + "start": { + "line": 2221, + "column": 4 + }, + "end": { + "line": 2227, + "column": 7 } } }, @@ -287136,51 +290847,100 @@ "postfix": false, "binop": null }, - "value": "_receivesShadow", - "start": 72904, - "end": 72919, + "value": "get", + "start": 74903, + "end": 74906, "loc": { "start": { - "line": 2144, - "column": 17 + "line": 2228, + "column": 4 }, "end": { - "line": 2144, - "column": 32 + "line": 2228, + "column": 7 } } }, { "type": { - "label": "=", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "selectedMaterial", + "start": 74907, + "end": 74923, + "loc": { + "start": { + "line": 2228, + "column": 8 + }, + "end": { + "line": 2228, + "column": 24 + } + } + }, + { + "type": { + "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": 72920, - "end": 72921, + "start": 74923, + "end": 74924, "loc": { "start": { - "line": 2144, - "column": 33 + "line": 2228, + "column": 24 }, "end": { - "line": 2144, - "column": 34 + "line": 2228, + "column": 25 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 74924, + "end": 74925, + "loc": { + "start": { + "line": 2228, + "column": 25 + }, + "end": { + "line": 2228, + "column": 26 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -287189,23 +290949,23 @@ "postfix": false, "binop": null }, - "value": "receivesShadow", - "start": 72922, - "end": 72936, + "start": 74926, + "end": 74927, "loc": { "start": { - "line": 2144, - "column": 35 + "line": 2228, + "column": 27 }, "end": { - "line": 2144, - "column": 49 + "line": 2228, + "column": 28 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -287216,16 +290976,17 @@ "binop": null, "updateContext": null }, - "start": 72936, - "end": 72937, + "value": "return", + "start": 74936, + "end": 74942, "loc": { "start": { - "line": 2144, - "column": 49 + "line": 2229, + "column": 8 }, "end": { - "line": 2144, - "column": 50 + "line": 2229, + "column": 14 } } }, @@ -287244,16 +291005,16 @@ "updateContext": null }, "value": "this", - "start": 72950, - "end": 72954, + "start": 74943, + "end": 74947, "loc": { "start": { - "line": 2145, - "column": 12 + "line": 2229, + "column": 15 }, "end": { - "line": 2145, - "column": 16 + "line": 2229, + "column": 19 } } }, @@ -287270,16 +291031,16 @@ "binop": null, "updateContext": null }, - "start": 72954, - "end": 72955, + "start": 74947, + "end": 74948, "loc": { "start": { - "line": 2145, - "column": 16 + "line": 2229, + "column": 19 }, "end": { - "line": 2145, - "column": 17 + "line": 2229, + "column": 20 } } }, @@ -287295,50 +291056,51 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 72955, - "end": 72963, + "value": "scene", + "start": 74948, + "end": 74953, "loc": { "start": { - "line": 2145, - "column": 17 + "line": 2229, + "column": 20 }, "end": { - "line": 2145, + "line": 2229, "column": 25 } } }, { "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": 72963, - "end": 72964, + "start": 74953, + "end": 74954, "loc": { "start": { - "line": 2145, + "line": 2229, "column": 25 }, "end": { - "line": 2145, + "line": 2229, "column": 26 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -287346,16 +291108,17 @@ "postfix": false, "binop": null }, - "start": 72964, - "end": 72965, + "value": "selectedMaterial", + "start": 74954, + "end": 74970, "loc": { "start": { - "line": 2145, + "line": 2229, "column": 26 }, "end": { - "line": 2145, - "column": 27 + "line": 2229, + "column": 42 } } }, @@ -287372,41 +291135,16 @@ "binop": null, "updateContext": null }, - "start": 72965, - "end": 72966, - "loc": { - "start": { - "line": 2145, - "column": 27 - }, - "end": { - "line": 2145, - "column": 28 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 72975, - "end": 72976, + "start": 74970, + "end": 74971, "loc": { "start": { - "line": 2146, - "column": 8 + "line": 2229, + "column": 42 }, "end": { - "line": 2146, - "column": 9 + "line": 2229, + "column": 43 } } }, @@ -287422,31 +291160,31 @@ "postfix": false, "binop": null }, - "start": 72981, - "end": 72982, + "start": 74976, + "end": 74977, "loc": { "start": { - "line": 2147, + "line": 2230, "column": 4 }, "end": { - "line": 2147, + "line": 2230, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * Only works when {@link SAO#enabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 72988, - "end": 73244, + "value": "*\n * Configures the appearance of edges of {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n ", + "start": 74983, + "end": 75178, "loc": { "start": { - "line": 2149, + "line": 2232, "column": 4 }, "end": { - "line": 2157, + "line": 2238, "column": 7 } } @@ -287464,15 +291202,15 @@ "binop": null }, "value": "get", - "start": 73249, - "end": 73252, + "start": 75183, + "end": 75186, "loc": { "start": { - "line": 2158, + "line": 2239, "column": 4 }, "end": { - "line": 2158, + "line": 2239, "column": 7 } } @@ -287489,17 +291227,17 @@ "postfix": false, "binop": null }, - "value": "saoEnabled", - "start": 73253, - "end": 73263, + "value": "edgeMaterial", + "start": 75187, + "end": 75199, "loc": { "start": { - "line": 2158, + "line": 2239, "column": 8 }, "end": { - "line": 2158, - "column": 18 + "line": 2239, + "column": 20 } } }, @@ -287515,16 +291253,16 @@ "postfix": false, "binop": null }, - "start": 73263, - "end": 73264, + "start": 75199, + "end": 75200, "loc": { "start": { - "line": 2158, - "column": 18 + "line": 2239, + "column": 20 }, "end": { - "line": 2158, - "column": 19 + "line": 2239, + "column": 21 } } }, @@ -287540,16 +291278,16 @@ "postfix": false, "binop": null }, - "start": 73264, - "end": 73265, + "start": 75200, + "end": 75201, "loc": { "start": { - "line": 2158, - "column": 19 + "line": 2239, + "column": 21 }, "end": { - "line": 2158, - "column": 20 + "line": 2239, + "column": 22 } } }, @@ -287565,16 +291303,16 @@ "postfix": false, "binop": null }, - "start": 73266, - "end": 73267, + "start": 75202, + "end": 75203, "loc": { "start": { - "line": 2158, - "column": 21 + "line": 2239, + "column": 23 }, "end": { - "line": 2158, - "column": 22 + "line": 2239, + "column": 24 } } }, @@ -287593,15 +291331,15 @@ "updateContext": null }, "value": "return", - "start": 73276, - "end": 73282, + "start": 75212, + "end": 75218, "loc": { "start": { - "line": 2159, + "line": 2240, "column": 8 }, "end": { - "line": 2159, + "line": 2240, "column": 14 } } @@ -287621,15 +291359,15 @@ "updateContext": null }, "value": "this", - "start": 73283, - "end": 73287, + "start": 75219, + "end": 75223, "loc": { "start": { - "line": 2159, + "line": 2240, "column": 15 }, "end": { - "line": 2159, + "line": 2240, "column": 19 } } @@ -287647,15 +291385,15 @@ "binop": null, "updateContext": null }, - "start": 73287, - "end": 73288, + "start": 75223, + "end": 75224, "loc": { "start": { - "line": 2159, + "line": 2240, "column": 19 }, "end": { - "line": 2159, + "line": 2240, "column": 20 } } @@ -287672,17 +291410,69 @@ "postfix": false, "binop": null }, - "value": "_saoEnabled", - "start": 73288, - "end": 73299, + "value": "scene", + "start": 75224, + "end": 75229, "loc": { "start": { - "line": 2159, + "line": 2240, "column": 20 }, "end": { - "line": 2159, - "column": 31 + "line": 2240, + "column": 25 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 75229, + "end": 75230, + "loc": { + "start": { + "line": 2240, + "column": 25 + }, + "end": { + "line": 2240, + "column": 26 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "edgeMaterial", + "start": 75230, + "end": 75242, + "loc": { + "start": { + "line": 2240, + "column": 26 + }, + "end": { + "line": 2240, + "column": 38 } } }, @@ -287699,16 +291489,16 @@ "binop": null, "updateContext": null }, - "start": 73299, - "end": 73300, + "start": 75242, + "end": 75243, "loc": { "start": { - "line": 2159, - "column": 31 + "line": 2240, + "column": 38 }, "end": { - "line": 2159, - "column": 32 + "line": 2240, + "column": 39 } } }, @@ -287724,31 +291514,79 @@ "postfix": false, "binop": null }, - "start": 73305, - "end": 73306, + "start": 75248, + "end": 75249, "loc": { "start": { - "line": 2160, + "line": 2241, "column": 4 }, "end": { - "line": 2160, + "line": 2241, "column": 5 } } }, + { + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 75255, + "end": 75371, + "loc": { + "start": { + "line": 2243, + "column": 4 + }, + "end": { + "line": 2243, + "column": 120 + } + } + }, + { + "type": "CommentLine", + "value": " Drawable members", + "start": 75376, + "end": 75395, + "loc": { + "start": { + "line": 2244, + "column": 4 + }, + "end": { + "line": 2244, + "column": 23 + } + } + }, + { + "type": "CommentLine", + "value": "------------------------------------------------------------------------------------------------------------------", + "start": 75400, + "end": 75516, + "loc": { + "start": { + "line": 2245, + "column": 4 + }, + "end": { + "line": 2245, + "column": 120 + } + } + }, { "type": "CommentBlock", - "value": "*\n * Gets if physically-based rendering (PBR) is enabled for this SceneModel.\n *\n * Only works when {@link Scene#pbrEnabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 73312, - "end": 73502, + "value": "*\n * Called by private renderers in ./lib, returns the picking view matrix with which to\n * ray-pick on this SceneModel.\n *\n * @private\n ", + "start": 75522, + "end": 75683, "loc": { "start": { - "line": 2162, + "line": 2247, "column": 4 }, "end": { - "line": 2168, + "line": 2252, "column": 7 } } @@ -287765,24 +291603,24 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 73507, - "end": 73510, + "value": "getPickViewMatrix", + "start": 75688, + "end": 75705, "loc": { "start": { - "line": 2169, + "line": 2253, "column": 4 }, "end": { - "line": 2169, - "column": 7 + "line": 2253, + "column": 21 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -287791,24 +291629,23 @@ "postfix": false, "binop": null }, - "value": "pbrEnabled", - "start": 73511, - "end": 73521, + "start": 75705, + "end": 75706, "loc": { "start": { - "line": 2169, - "column": 8 + "line": 2253, + "column": 21 }, "end": { - "line": 2169, - "column": 18 + "line": 2253, + "column": 22 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -287817,16 +291654,17 @@ "postfix": false, "binop": null }, - "start": 73521, - "end": 73522, + "value": "pickViewMatrix", + "start": 75706, + "end": 75720, "loc": { "start": { - "line": 2169, - "column": 18 + "line": 2253, + "column": 22 }, "end": { - "line": 2169, - "column": 19 + "line": 2253, + "column": 36 } } }, @@ -287842,16 +291680,16 @@ "postfix": false, "binop": null }, - "start": 73522, - "end": 73523, + "start": 75720, + "end": 75721, "loc": { "start": { - "line": 2169, - "column": 19 + "line": 2253, + "column": 36 }, "end": { - "line": 2169, - "column": 20 + "line": 2253, + "column": 37 } } }, @@ -287867,24 +291705,24 @@ "postfix": false, "binop": null }, - "start": 73524, - "end": 73525, + "start": 75722, + "end": 75723, "loc": { "start": { - "line": 2169, - "column": 21 + "line": 2253, + "column": 38 }, "end": { - "line": 2169, - "column": 22 + "line": 2253, + "column": 39 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -287894,77 +291732,76 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 73534, - "end": 73540, + "value": "if", + "start": 75732, + "end": 75734, "loc": { "start": { - "line": 2170, + "line": 2254, "column": 8 }, "end": { - "line": 2170, - "column": 14 + "line": 2254, + "column": 10 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 73541, - "end": 73545, + "start": 75735, + "end": 75736, "loc": { "start": { - "line": 2170, - "column": 15 + "line": 2254, + "column": 11 }, "end": { - "line": 2170, - "column": 19 + "line": 2254, + "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": 73545, - "end": 73546, + "value": "!", + "start": 75736, + "end": 75737, "loc": { "start": { - "line": 2170, - "column": 19 + "line": 2254, + "column": 12 }, "end": { - "line": 2170, - "column": 20 + "line": 2254, + "column": 13 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -287972,26 +291809,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_pbrEnabled", - "start": 73546, - "end": 73557, + "value": "this", + "start": 75737, + "end": 75741, "loc": { "start": { - "line": 2170, - "column": 20 + "line": 2254, + "column": 13 }, "end": { - "line": 2170, - "column": 31 + "line": 2254, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -288001,24 +291839,24 @@ "binop": null, "updateContext": null }, - "start": 73557, - "end": 73558, + "start": 75741, + "end": 75742, "loc": { "start": { - "line": 2170, - "column": 31 + "line": 2254, + "column": 17 }, "end": { - "line": 2170, - "column": 32 + "line": 2254, + "column": 18 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -288026,39 +291864,49 @@ "postfix": false, "binop": null }, - "start": 73563, - "end": 73564, + "value": "_viewMatrix", + "start": 75742, + "end": 75753, "loc": { "start": { - "line": 2171, - "column": 4 + "line": 2254, + "column": 18 }, "end": { - "line": 2171, - "column": 5 + "line": 2254, + "column": 29 } } }, { - "type": "CommentBlock", - "value": "*\n * Gets if color textures are enabled for this SceneModel.\n *\n * Only works when {@link Scene#colorTextureEnabled} is also true.\n *\n * @type {Boolean}\n ", - "start": 73570, - "end": 73752, + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 75753, + "end": 75754, "loc": { "start": { - "line": 2173, - "column": 4 + "line": 2254, + "column": 29 }, "end": { - "line": 2179, - "column": 7 + "line": 2254, + "column": 30 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -288067,50 +291915,51 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 73757, - "end": 73760, + "start": 75755, + "end": 75756, "loc": { "start": { - "line": 2180, - "column": 4 + "line": 2254, + "column": 31 }, "end": { - "line": 2180, - "column": 7 + "line": 2254, + "column": 32 } } }, { "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": "colorTextureEnabled", - "start": 73761, - "end": 73780, + "value": "return", + "start": 75769, + "end": 75775, "loc": { "start": { - "line": 2180, - "column": 8 + "line": 2255, + "column": 12 }, "end": { - "line": 2180, - "column": 27 + "line": 2255, + "column": 18 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -288119,49 +291968,51 @@ "postfix": false, "binop": null }, - "start": 73780, - "end": 73781, + "value": "pickViewMatrix", + "start": 75776, + "end": 75790, "loc": { "start": { - "line": 2180, - "column": 27 + "line": 2255, + "column": 19 }, "end": { - "line": 2180, - "column": 28 + "line": 2255, + "column": 33 } } }, { "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": 73781, - "end": 73782, + "start": 75790, + "end": 75791, "loc": { "start": { - "line": 2180, - "column": 28 + "line": 2255, + "column": 33 }, "end": { - "line": 2180, - "column": 29 + "line": 2255, + "column": 34 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -288169,16 +292020,16 @@ "postfix": false, "binop": null }, - "start": 73783, - "end": 73784, + "start": 75800, + "end": 75801, "loc": { "start": { - "line": 2180, - "column": 30 + "line": 2256, + "column": 8 }, "end": { - "line": 2180, - "column": 31 + "line": 2256, + "column": 9 } } }, @@ -288197,15 +292048,15 @@ "updateContext": null }, "value": "return", - "start": 73793, - "end": 73799, + "start": 75810, + "end": 75816, "loc": { "start": { - "line": 2181, + "line": 2257, "column": 8 }, "end": { - "line": 2181, + "line": 2257, "column": 14 } } @@ -288225,15 +292076,15 @@ "updateContext": null }, "value": "this", - "start": 73800, - "end": 73804, + "start": 75817, + "end": 75821, "loc": { "start": { - "line": 2181, + "line": 2257, "column": 15 }, "end": { - "line": 2181, + "line": 2257, "column": 19 } } @@ -288251,15 +292102,15 @@ "binop": null, "updateContext": null }, - "start": 73804, - "end": 73805, + "start": 75821, + "end": 75822, "loc": { "start": { - "line": 2181, + "line": 2257, "column": 19 }, "end": { - "line": 2181, + "line": 2257, "column": 20 } } @@ -288276,17 +292127,17 @@ "postfix": false, "binop": null }, - "value": "_colorTextureEnabled", - "start": 73805, - "end": 73825, + "value": "_viewMatrix", + "start": 75822, + "end": 75833, "loc": { "start": { - "line": 2181, + "line": 2257, "column": 20 }, "end": { - "line": 2181, - "column": 40 + "line": 2257, + "column": 31 } } }, @@ -288303,16 +292154,16 @@ "binop": null, "updateContext": null }, - "start": 73825, - "end": 73826, + "start": 75833, + "end": 75834, "loc": { - "start": { - "line": 2181, - "column": 40 + "start": { + "line": 2257, + "column": 31 }, "end": { - "line": 2181, - "column": 41 + "line": 2257, + "column": 32 } } }, @@ -288328,31 +292179,31 @@ "postfix": false, "binop": null }, - "start": 73831, - "end": 73832, + "start": 75839, + "end": 75840, "loc": { "start": { - "line": 2182, + "line": 2258, "column": 4 }, "end": { - "line": 2182, + "line": 2258, "column": 5 } } }, { "type": "CommentBlock", - "value": "*\n * Returns true to indicate that SceneModel is implements {@link Drawable}.\n *\n * @type {Boolean}\n ", - "start": 73838, - "end": 73959, + "value": "*\n *\n * @param cfg\n ", + "start": 75846, + "end": 75882, "loc": { "start": { - "line": 2184, + "line": 2260, "column": 4 }, "end": { - "line": 2188, + "line": 2263, "column": 7 } } @@ -288369,24 +292220,24 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 73964, - "end": 73967, + "value": "createQuantizationRange", + "start": 75887, + "end": 75910, "loc": { "start": { - "line": 2189, + "line": 2264, "column": 4 }, "end": { - "line": 2189, - "column": 7 + "line": 2264, + "column": 27 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -288395,24 +292246,23 @@ "postfix": false, "binop": null }, - "value": "isDrawable", - "start": 73968, - "end": 73978, + "start": 75910, + "end": 75911, "loc": { "start": { - "line": 2189, - "column": 8 + "line": 2264, + "column": 27 }, "end": { - "line": 2189, - "column": 18 + "line": 2264, + "column": 28 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -288421,16 +292271,17 @@ "postfix": false, "binop": null }, - "start": 73978, - "end": 73979, + "value": "cfg", + "start": 75911, + "end": 75914, "loc": { "start": { - "line": 2189, - "column": 18 + "line": 2264, + "column": 28 }, "end": { - "line": 2189, - "column": 19 + "line": 2264, + "column": 31 } } }, @@ -288446,16 +292297,16 @@ "postfix": false, "binop": null }, - "start": 73979, - "end": 73980, + "start": 75914, + "end": 75915, "loc": { "start": { - "line": 2189, - "column": 19 + "line": 2264, + "column": 31 }, "end": { - "line": 2189, - "column": 20 + "line": 2264, + "column": 32 } } }, @@ -288471,24 +292322,24 @@ "postfix": false, "binop": null }, - "start": 73981, - "end": 73982, + "start": 75916, + "end": 75917, "loc": { "start": { - "line": 2189, - "column": 21 + "line": 2264, + "column": 33 }, "end": { - "line": 2189, - "column": 22 + "line": 2264, + "column": 34 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -288498,24 +292349,48 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 73991, - "end": 73997, + "value": "if", + "start": 75926, + "end": 75928, "loc": { "start": { - "line": 2190, + "line": 2265, "column": 8 }, "end": { - "line": 2190, - "column": 14 + "line": 2265, + "column": 10 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 75929, + "end": 75930, + "loc": { + "start": { + "line": 2265, + "column": 11 + }, + "end": { + "line": 2265, + "column": 12 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -288523,27 +292398,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 73998, - "end": 74002, + "value": "cfg", + "start": 75930, + "end": 75933, "loc": { "start": { - "line": 2190, - "column": 15 + "line": 2265, + "column": 12 }, "end": { - "line": 2190, - "column": 19 + "line": 2265, + "column": 15 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -288553,24 +292427,24 @@ "binop": null, "updateContext": null }, - "start": 74002, - "end": 74003, + "start": 75933, + "end": 75934, "loc": { "start": { - "line": 2190, - "column": 19 + "line": 2265, + "column": 15 }, "end": { - "line": 2190, - "column": 20 + "line": 2265, + "column": 16 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -288578,32 +292452,44 @@ "postfix": false, "binop": null }, - "start": 74008, - "end": 74009, + "value": "id", + "start": 75934, + "end": 75936, "loc": { "start": { - "line": 2191, - "column": 4 + "line": 2265, + "column": 16 }, "end": { - "line": 2191, - "column": 5 + "line": 2265, + "column": 18 } } }, { - "type": "CommentBlock", - "value": "* @private ", - "start": 74015, - "end": 74030, + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "===", + "start": 75937, + "end": 75940, "loc": { "start": { - "line": 2193, - "column": 4 + "line": 2265, + "column": 19 }, "end": { - "line": 2193, - "column": 19 + "line": 2265, + "column": 22 } } }, @@ -288619,50 +292505,51 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 74035, - "end": 74038, + "value": "undefined", + "start": 75941, + "end": 75950, "loc": { "start": { - "line": 2194, - "column": 4 + "line": 2265, + "column": 23 }, "end": { - "line": 2194, - "column": 7 + "line": 2265, + "column": 32 } } }, { "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": "isStateSortable", - "start": 74039, - "end": 74054, + "value": "||", + "start": 75951, + "end": 75953, "loc": { "start": { - "line": 2194, - "column": 8 + "line": 2265, + "column": 33 }, "end": { - "line": 2194, - "column": 23 + "line": 2265, + "column": 35 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -288671,22 +292558,23 @@ "postfix": false, "binop": null }, - "start": 74054, - "end": 74055, + "value": "cfg", + "start": 75954, + "end": 75957, "loc": { "start": { - "line": 2194, - "column": 23 + "line": 2265, + "column": 36 }, "end": { - "line": 2194, - "column": 24 + "line": 2265, + "column": 39 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -288694,25 +292582,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 74055, - "end": 74056, + "start": 75957, + "end": 75958, "loc": { "start": { - "line": 2194, - "column": 24 + "line": 2265, + "column": 39 }, "end": { - "line": 2194, - "column": 25 + "line": 2265, + "column": 40 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -288721,23 +292610,23 @@ "postfix": false, "binop": null }, - "start": 74057, - "end": 74058, + "value": "id", + "start": 75958, + "end": 75960, "loc": { "start": { - "line": 2194, - "column": 26 + "line": 2265, + "column": 40 }, "end": { - "line": 2194, - "column": 27 + "line": 2265, + "column": 42 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -288745,27 +292634,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "return", - "start": 74067, - "end": 74073, + "value": "===", + "start": 75961, + "end": 75964, "loc": { "start": { - "line": 2195, - "column": 8 + "line": 2265, + "column": 43 }, "end": { - "line": 2195, - "column": 14 + "line": 2265, + "column": 46 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -288776,23 +292665,23 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 74074, - "end": 74079, + "value": "null", + "start": 75965, + "end": 75969, "loc": { "start": { - "line": 2195, - "column": 15 + "line": 2265, + "column": 47 }, "end": { - "line": 2195, - "column": 20 + "line": 2265, + "column": 51 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -288802,39 +292691,23 @@ "postfix": false, "binop": null }, - "start": 74084, - "end": 74085, - "loc": { - "start": { - "line": 2196, - "column": 4 - }, - "end": { - "line": 2196, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Configures the appearance of xrayed {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#xrayMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74091, - "end": 74288, + "start": 75969, + "end": 75970, "loc": { "start": { - "line": 2198, - "column": 4 + "line": 2265, + "column": 51 }, "end": { - "line": 2204, - "column": 7 + "line": 2265, + "column": 52 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -288843,23 +292716,23 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 74293, - "end": 74296, + "start": 75971, + "end": 75972, "loc": { "start": { - "line": 2205, - "column": 4 + "line": 2265, + "column": 53 }, "end": { - "line": 2205, - "column": 7 + "line": 2265, + "column": 54 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -288867,52 +292740,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "xrayMaterial", - "start": 74297, - "end": 74309, + "value": "this", + "start": 75985, + "end": 75989, "loc": { "start": { - "line": 2205, - "column": 8 + "line": 2266, + "column": 12 }, "end": { - "line": 2205, - "column": 20 + "line": 2266, + "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": 74309, - "end": 74310, + "start": 75989, + "end": 75990, "loc": { "start": { - "line": 2205, - "column": 20 + "line": 2266, + "column": 16 }, "end": { - "line": 2205, - "column": 21 + "line": 2266, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -288920,22 +292795,23 @@ "postfix": false, "binop": null }, - "start": 74310, - "end": 74311, + "value": "error", + "start": 75990, + "end": 75995, "loc": { "start": { - "line": 2205, - "column": 21 + "line": 2266, + "column": 17 }, "end": { - "line": 2205, + "line": 2266, "column": 22 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -288945,25 +292821,24 @@ "postfix": false, "binop": null }, - "start": 74312, - "end": 74313, + "start": 75995, + "end": 75996, "loc": { "start": { - "line": 2205, - "column": 23 + "line": 2266, + "column": 22 }, "end": { - "line": 2205, - "column": 24 + "line": 2266, + "column": 23 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -288972,52 +292847,49 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 74322, - "end": 74328, + "value": "[createQuantizationRange] Config missing: id", + "start": 75996, + "end": 76042, "loc": { "start": { - "line": 2206, - "column": 8 + "line": 2266, + "column": 23 }, "end": { - "line": 2206, - "column": 14 + "line": 2266, + "column": 69 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 74329, - "end": 74333, + "start": 76042, + "end": 76043, "loc": { "start": { - "line": 2206, - "column": 15 + "line": 2266, + "column": 69 }, "end": { - "line": 2206, - "column": 19 + "line": 2266, + "column": 70 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -289027,49 +292899,51 @@ "binop": null, "updateContext": null }, - "start": 74333, - "end": 74334, + "start": 76043, + "end": 76044, "loc": { "start": { - "line": 2206, - "column": 19 + "line": 2266, + "column": 70 }, "end": { - "line": 2206, - "column": 20 + "line": 2266, + "column": 71 } } }, { "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": "scene", - "start": 74334, - "end": 74339, + "value": "return", + "start": 76057, + "end": 76063, "loc": { "start": { - "line": 2206, - "column": 20 + "line": 2267, + "column": 12 }, "end": { - "line": 2206, - "column": 25 + "line": 2267, + "column": 18 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -289079,24 +292953,24 @@ "binop": null, "updateContext": null }, - "start": 74339, - "end": 74340, + "start": 76063, + "end": 76064, "loc": { "start": { - "line": 2206, - "column": 25 + "line": 2267, + "column": 18 }, "end": { - "line": 2206, - "column": 26 + "line": 2267, + "column": 19 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289104,24 +292978,24 @@ "postfix": false, "binop": null }, - "value": "xrayMaterial", - "start": 74340, - "end": 74352, + "start": 76073, + "end": 76074, "loc": { "start": { - "line": 2206, - "column": 26 + "line": 2268, + "column": 8 }, "end": { - "line": 2206, - "column": 38 + "line": 2268, + "column": 9 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -289131,24 +293005,25 @@ "binop": null, "updateContext": null }, - "start": 74352, - "end": 74353, + "value": "if", + "start": 76083, + "end": 76085, "loc": { "start": { - "line": 2206, - "column": 38 + "line": 2269, + "column": 8 }, "end": { - "line": 2206, - "column": 39 + "line": 2269, + "column": 10 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289156,32 +293031,16 @@ "postfix": false, "binop": null }, - "start": 74358, - "end": 74359, - "loc": { - "start": { - "line": 2207, - "column": 4 - }, - "end": { - "line": 2207, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Configures the appearance of highlighted {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#highlightMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74365, - "end": 74572, + "start": 76086, + "end": 76087, "loc": { "start": { - "line": 2209, - "column": 4 + "line": 2269, + "column": 11 }, "end": { - "line": 2215, - "column": 7 + "line": 2269, + "column": 12 } } }, @@ -289197,50 +293056,50 @@ "postfix": false, "binop": null }, - "value": "get", - "start": 74577, - "end": 74580, + "value": "cfg", + "start": 76087, + "end": 76090, "loc": { "start": { - "line": 2216, - "column": 4 + "line": 2269, + "column": 12 }, "end": { - "line": 2216, - "column": 7 + "line": 2269, + "column": 15 } } }, { "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": "highlightMaterial", - "start": 74581, - "end": 74598, + "start": 76090, + "end": 76091, "loc": { "start": { - "line": 2216, - "column": 8 + "line": 2269, + "column": 15 }, "end": { - "line": 2216, - "column": 25 + "line": 2269, + "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -289249,16 +293108,17 @@ "postfix": false, "binop": null }, - "start": 74598, - "end": 74599, + "value": "aabb", + "start": 76091, + "end": 76095, "loc": { "start": { - "line": 2216, - "column": 25 + "line": 2269, + "column": 16 }, "end": { - "line": 2216, - "column": 26 + "line": 2269, + "column": 20 } } }, @@ -289274,16 +293134,16 @@ "postfix": false, "binop": null }, - "start": 74599, - "end": 74600, + "start": 76095, + "end": 76096, "loc": { "start": { - "line": 2216, - "column": 26 + "line": 2269, + "column": 20 }, "end": { - "line": 2216, - "column": 27 + "line": 2269, + "column": 21 } } }, @@ -289299,25 +293159,25 @@ "postfix": false, "binop": null }, - "start": 74601, - "end": 74602, + "start": 76097, + "end": 76098, "loc": { "start": { - "line": 2216, - "column": 28 + "line": 2269, + "column": 22 }, "end": { - "line": 2216, - "column": 29 + "line": 2269, + "column": 23 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289326,26 +293186,25 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 74611, - "end": 74617, + "value": "this", + "start": 76111, + "end": 76115, "loc": { "start": { - "line": 2217, - "column": 8 + "line": 2270, + "column": 12 }, "end": { - "line": 2217, - "column": 14 + "line": 2270, + "column": 16 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289354,50 +293213,49 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 74618, - "end": 74622, + "start": 76115, + "end": 76116, "loc": { "start": { - "line": 2217, - "column": 15 + "line": 2270, + "column": 16 }, "end": { - "line": 2217, - "column": 19 + "line": 2270, + "column": 17 } } }, { "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": 74622, - "end": 74623, + "value": "error", + "start": 76116, + "end": 76121, "loc": { "start": { - "line": 2217, - "column": 19 + "line": 2270, + "column": 17 }, "end": { - "line": 2217, - "column": 20 + "line": 2270, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -289406,25 +293264,24 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 74623, - "end": 74628, + "start": 76121, + "end": 76122, "loc": { "start": { - "line": 2217, - "column": 20 + "line": 2270, + "column": 22 }, "end": { - "line": 2217, - "column": 25 + "line": 2270, + "column": 23 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289433,24 +293290,25 @@ "binop": null, "updateContext": null }, - "start": 74628, - "end": 74629, + "value": "[createQuantizationRange] Config missing: aabb", + "start": 76122, + "end": 76170, "loc": { "start": { - "line": 2217, - "column": 25 + "line": 2270, + "column": 23 }, "end": { - "line": 2217, - "column": 26 + "line": 2270, + "column": 71 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289458,17 +293316,16 @@ "postfix": false, "binop": null }, - "value": "highlightMaterial", - "start": 74629, - "end": 74646, + "start": 76170, + "end": 76171, "loc": { "start": { - "line": 2217, - "column": 26 + "line": 2270, + "column": 71 }, "end": { - "line": 2217, - "column": 43 + "line": 2270, + "column": 72 } } }, @@ -289485,91 +293342,78 @@ "binop": null, "updateContext": null }, - "start": 74646, - "end": 74647, + "start": 76171, + "end": 76172, "loc": { "start": { - "line": 2217, - "column": 43 + "line": 2270, + "column": 72 }, "end": { - "line": 2217, - "column": 44 + "line": 2270, + "column": 73 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 74652, - "end": 74653, - "loc": { - "start": { - "line": 2218, - "column": 4 - }, - "end": { - "line": 2218, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Configures the appearance of selected {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#selectedMaterial}.\n *\n * @type {EmphasisMaterial}\n ", - "start": 74659, - "end": 74862, + "value": "return", + "start": 76185, + "end": 76191, "loc": { "start": { - "line": 2220, - "column": 4 + "line": 2271, + "column": 12 }, "end": { - "line": 2226, - "column": 7 + "line": 2271, + "column": 18 } } }, { "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": "get", - "start": 74867, - "end": 74870, + "start": 76191, + "end": 76192, "loc": { "start": { - "line": 2227, - "column": 4 + "line": 2271, + "column": 18 }, "end": { - "line": 2227, - "column": 7 + "line": 2271, + "column": 19 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289577,50 +293421,52 @@ "postfix": false, "binop": null }, - "value": "selectedMaterial", - "start": 74871, - "end": 74887, + "start": 76201, + "end": 76202, "loc": { "start": { - "line": 2227, + "line": 2272, "column": 8 }, "end": { - "line": 2227, - "column": 24 + "line": 2272, + "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": 74887, - "end": 74888, + "value": "if", + "start": 76211, + "end": 76213, "loc": { "start": { - "line": 2227, - "column": 24 + "line": 2273, + "column": 8 }, "end": { - "line": 2227, - "column": 25 + "line": 2273, + "column": 10 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289628,49 +293474,51 @@ "postfix": false, "binop": null }, - "start": 74888, - "end": 74889, + "start": 76214, + "end": 76215, "loc": { "start": { - "line": 2227, - "column": 25 + "line": 2273, + "column": 11 }, "end": { - "line": 2227, - "column": 26 + "line": 2273, + "column": 12 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 74890, - "end": 74891, + "value": "this", + "start": 76215, + "end": 76219, "loc": { "start": { - "line": 2227, - "column": 27 + "line": 2273, + "column": 12 }, "end": { - "line": 2227, - "column": 28 + "line": 2273, + "column": 16 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -289680,24 +293528,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 74900, - "end": 74906, + "start": 76219, + "end": 76220, "loc": { "start": { - "line": 2228, - "column": 8 + "line": 2273, + "column": 16 }, "end": { - "line": 2228, - "column": 14 + "line": 2273, + "column": 17 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -289705,28 +293551,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 74907, - "end": 74911, + "value": "_quantizationRanges", + "start": 76220, + "end": 76239, "loc": { "start": { - "line": 2228, - "column": 15 + "line": 2273, + "column": 17 }, "end": { - "line": 2228, - "column": 19 + "line": 2273, + "column": 36 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289735,16 +293580,16 @@ "binop": null, "updateContext": null }, - "start": 74911, - "end": 74912, + "start": 76239, + "end": 76240, "loc": { "start": { - "line": 2228, - "column": 19 + "line": 2273, + "column": 36 }, "end": { - "line": 2228, - "column": 20 + "line": 2273, + "column": 37 } } }, @@ -289760,17 +293605,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 74912, - "end": 74917, + "value": "cfg", + "start": 76240, + "end": 76243, "loc": { "start": { - "line": 2228, - "column": 20 + "line": 2273, + "column": 37 }, "end": { - "line": 2228, - "column": 25 + "line": 2273, + "column": 40 } } }, @@ -289787,16 +293632,16 @@ "binop": null, "updateContext": null }, - "start": 74917, - "end": 74918, + "start": 76243, + "end": 76244, "loc": { "start": { - "line": 2228, - "column": 25 + "line": 2273, + "column": 40 }, "end": { - "line": 2228, - "column": 26 + "line": 2273, + "column": 41 } } }, @@ -289812,24 +293657,24 @@ "postfix": false, "binop": null }, - "value": "selectedMaterial", - "start": 74918, - "end": 74934, + "value": "id", + "start": 76244, + "end": 76246, "loc": { "start": { - "line": 2228, - "column": 26 + "line": 2273, + "column": 41 }, "end": { - "line": 2228, - "column": 42 + "line": 2273, + "column": 43 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -289839,22 +293684,22 @@ "binop": null, "updateContext": null }, - "start": 74934, - "end": 74935, + "start": 76246, + "end": 76247, "loc": { "start": { - "line": 2228, - "column": 42 + "line": 2273, + "column": 43 }, "end": { - "line": 2228, - "column": 43 + "line": 2273, + "column": 44 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -289864,38 +293709,48 @@ "postfix": false, "binop": null }, - "start": 74940, - "end": 74941, + "start": 76247, + "end": 76248, "loc": { "start": { - "line": 2229, - "column": 4 + "line": 2273, + "column": 44 }, "end": { - "line": 2229, - "column": 5 + "line": 2273, + "column": 45 } } }, { - "type": "CommentBlock", - "value": "*\n * Configures the appearance of edges of {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n ", - "start": 74947, - "end": 75142, + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 76249, + "end": 76250, "loc": { "start": { - "line": 2231, - "column": 4 + "line": 2273, + "column": 46 }, "end": { - "line": 2237, - "column": 7 + "line": 2273, + "column": 47 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -289903,52 +293758,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "get", - "start": 75147, - "end": 75150, + "value": "this", + "start": 76263, + "end": 76267, "loc": { "start": { - "line": 2238, - "column": 4 + "line": 2274, + "column": 12 }, "end": { - "line": 2238, - "column": 7 + "line": 2274, + "column": 16 } } }, { "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": "edgeMaterial", - "start": 75151, - "end": 75163, + "start": 76267, + "end": 76268, "loc": { "start": { - "line": 2238, - "column": 8 + "line": 2274, + "column": 16 }, "end": { - "line": 2238, - "column": 20 + "line": 2274, + "column": 17 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -289957,24 +293813,25 @@ "postfix": false, "binop": null }, - "start": 75163, - "end": 75164, + "value": "error", + "start": 76268, + "end": 76273, "loc": { "start": { - "line": 2238, - "column": 20 + "line": 2274, + "column": 17 }, "end": { - "line": 2238, - "column": 21 + "line": 2274, + "column": 22 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -289982,76 +293839,76 @@ "postfix": false, "binop": null }, - "start": 75164, - "end": 75165, + "start": 76273, + "end": 76274, "loc": { "start": { - "line": 2238, - "column": 21 + "line": 2274, + "column": 22 }, "end": { - "line": 2238, - "column": 22 + "line": 2274, + "column": 23 } } }, { "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": 75166, - "end": 75167, + "value": "[createQuantizationRange] QuantizationRange already created: ", + "start": 76274, + "end": 76337, "loc": { "start": { - "line": 2238, + "line": 2274, "column": 23 }, "end": { - "line": 2238, - "column": 24 + "line": 2274, + "column": 86 } } }, { "type": { - "label": "return", - "keyword": "return", + "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 }, - "value": "return", - "start": 75176, - "end": 75182, + "value": "+", + "start": 76338, + "end": 76339, "loc": { "start": { - "line": 2239, - "column": 8 + "line": 2274, + "column": 87 }, "end": { - "line": 2239, - "column": 14 + "line": 2274, + "column": 88 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -290059,20 +293916,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 75183, - "end": 75187, + "value": "cfg", + "start": 76340, + "end": 76343, "loc": { "start": { - "line": 2239, - "column": 15 + "line": 2274, + "column": 89 }, "end": { - "line": 2239, - "column": 19 + "line": 2274, + "column": 92 } } }, @@ -290089,16 +293945,16 @@ "binop": null, "updateContext": null }, - "start": 75187, - "end": 75188, + "start": 76343, + "end": 76344, "loc": { "start": { - "line": 2239, - "column": 19 + "line": 2274, + "column": 92 }, "end": { - "line": 2239, - "column": 20 + "line": 2274, + "column": 93 } } }, @@ -290114,24 +293970,49 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 75188, - "end": 75193, + "value": "id", + "start": 76344, + "end": 76346, "loc": { "start": { - "line": 2239, - "column": 20 + "line": 2274, + "column": 93 }, "end": { - "line": 2239, - "column": 25 + "line": 2274, + "column": 95 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 76346, + "end": 76347, + "loc": { + "start": { + "line": 2274, + "column": 95 + }, + "end": { + "line": 2274, + "column": 96 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -290141,42 +294022,44 @@ "binop": null, "updateContext": null }, - "start": 75193, - "end": 75194, + "start": 76347, + "end": 76348, "loc": { "start": { - "line": 2239, - "column": 25 + "line": 2274, + "column": 96 }, "end": { - "line": 2239, - "column": 26 + "line": 2274, + "column": 97 } } }, { "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": "edgeMaterial", - "start": 75194, - "end": 75206, + "value": "return", + "start": 76361, + "end": 76367, "loc": { "start": { - "line": 2239, - "column": 26 + "line": 2275, + "column": 12 }, "end": { - "line": 2239, - "column": 38 + "line": 2275, + "column": 18 } } }, @@ -290193,16 +294076,16 @@ "binop": null, "updateContext": null }, - "start": 75206, - "end": 75207, + "start": 76367, + "end": 76368, "loc": { "start": { - "line": 2239, - "column": 38 + "line": 2275, + "column": 18 }, "end": { - "line": 2239, - "column": 39 + "line": 2275, + "column": 19 } } }, @@ -290218,80 +294101,70 @@ "postfix": false, "binop": null }, - "start": 75212, - "end": 75213, - "loc": { - "start": { - "line": 2240, - "column": 4 - }, - "end": { - "line": 2240, - "column": 5 - } - } - }, - { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 75219, - "end": 75335, - "loc": { - "start": { - "line": 2242, - "column": 4 - }, - "end": { - "line": 2242, - "column": 120 - } - } - }, - { - "type": "CommentLine", - "value": " Drawable members", - "start": 75340, - "end": 75359, + "start": 76377, + "end": 76378, "loc": { "start": { - "line": 2243, - "column": 4 + "line": 2276, + "column": 8 }, "end": { - "line": 2243, - "column": 23 + "line": 2276, + "column": 9 } } }, { - "type": "CommentLine", - "value": "------------------------------------------------------------------------------------------------------------------", - "start": 75364, - "end": 75480, + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 76387, + "end": 76391, "loc": { "start": { - "line": 2244, - "column": 4 + "line": 2277, + "column": 8 }, "end": { - "line": 2244, - "column": 120 + "line": 2277, + "column": 12 } } }, { - "type": "CommentBlock", - "value": "*\n * Called by private renderers in ./lib, returns the picking view matrix with which to\n * ray-pick on this SceneModel.\n *\n * @private\n ", - "start": 75486, - "end": 75647, + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 76391, + "end": 76392, "loc": { "start": { - "line": 2246, - "column": 4 + "line": 2277, + "column": 12 }, "end": { - "line": 2251, - "column": 7 + "line": 2277, + "column": 13 } } }, @@ -290307,23 +294180,23 @@ "postfix": false, "binop": null }, - "value": "getPickViewMatrix", - "start": 75652, - "end": 75669, + "value": "_quantizationRanges", + "start": 76392, + "end": 76411, "loc": { "start": { - "line": 2252, - "column": 4 + "line": 2277, + "column": 13 }, "end": { - "line": 2252, - "column": 21 + "line": 2277, + "column": 32 } } }, { "type": { - "label": "(", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -290331,18 +294204,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 75669, - "end": 75670, + "start": 76411, + "end": 76412, "loc": { "start": { - "line": 2252, - "column": 21 + "line": 2277, + "column": 32 }, "end": { - "line": 2252, - "column": 22 + "line": 2277, + "column": 33 } } }, @@ -290358,23 +294232,23 @@ "postfix": false, "binop": null }, - "value": "pickViewMatrix", - "start": 75670, - "end": 75684, + "value": "cfg", + "start": 76412, + "end": 76415, "loc": { "start": { - "line": 2252, - "column": 22 + "line": 2277, + "column": 33 }, "end": { - "line": 2252, + "line": 2277, "column": 36 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -290382,25 +294256,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 75684, - "end": 75685, + "start": 76415, + "end": 76416, "loc": { "start": { - "line": 2252, + "line": 2277, "column": 36 }, "end": { - "line": 2252, + "line": 2277, "column": 37 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -290409,23 +294284,23 @@ "postfix": false, "binop": null }, - "start": 75686, - "end": 75687, + "value": "id", + "start": 76416, + "end": 76418, "loc": { "start": { - "line": 2252, - "column": 38 + "line": 2277, + "column": 37 }, "end": { - "line": 2252, + "line": 2277, "column": 39 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -290436,76 +294311,74 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 75696, - "end": 75698, + "start": 76418, + "end": 76419, "loc": { "start": { - "line": 2253, - "column": 8 + "line": 2277, + "column": 39 }, "end": { - "line": 2253, - "column": 10 + "line": 2277, + "column": 40 } } }, { "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": 75699, - "end": 75700, + "value": "=", + "start": 76420, + "end": 76421, "loc": { "start": { - "line": 2253, - "column": 11 + "line": 2277, + "column": 41 }, "end": { - "line": 2253, - "column": 12 + "line": 2277, + "column": 42 } } }, { "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": 75700, - "end": 75701, + "start": 76422, + "end": 76423, "loc": { "start": { - "line": 2253, - "column": 12 + "line": 2277, + "column": 43 }, "end": { - "line": 2253, - "column": 13 + "line": 2277, + "column": 44 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -290513,27 +294386,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 75701, - "end": 75705, + "value": "id", + "start": 76436, + "end": 76438, "loc": { "start": { - "line": 2253, - "column": 13 + "line": 2278, + "column": 12 }, "end": { - "line": 2253, - "column": 17 + "line": 2278, + "column": 14 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -290543,16 +294415,16 @@ "binop": null, "updateContext": null }, - "start": 75705, - "end": 75706, + "start": 76438, + "end": 76439, "loc": { "start": { - "line": 2253, - "column": 17 + "line": 2278, + "column": 14 }, "end": { - "line": 2253, - "column": 18 + "line": 2278, + "column": 15 } } }, @@ -290568,23 +294440,23 @@ "postfix": false, "binop": null }, - "value": "_viewMatrix", - "start": 75706, - "end": 75717, + "value": "cfg", + "start": 76440, + "end": 76443, "loc": { "start": { - "line": 2253, - "column": 18 + "line": 2278, + "column": 16 }, "end": { - "line": 2253, - "column": 29 + "line": 2278, + "column": 19 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -290592,25 +294464,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 75717, - "end": 75718, + "start": 76443, + "end": 76444, "loc": { "start": { - "line": 2253, - "column": 29 + "line": 2278, + "column": 19 }, "end": { - "line": 2253, - "column": 30 + "line": 2278, + "column": 20 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -290619,23 +294492,23 @@ "postfix": false, "binop": null }, - "start": 75719, - "end": 75720, + "value": "id", + "start": 76444, + "end": 76446, "loc": { "start": { - "line": 2253, - "column": 31 + "line": 2278, + "column": 20 }, "end": { - "line": 2253, - "column": 32 + "line": 2278, + "column": 22 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -290646,17 +294519,16 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 75733, - "end": 75739, + "start": 76446, + "end": 76447, "loc": { "start": { - "line": 2254, - "column": 12 + "line": 2278, + "column": 22 }, "end": { - "line": 2254, - "column": 18 + "line": 2278, + "column": 23 } } }, @@ -290672,23 +294544,23 @@ "postfix": false, "binop": null }, - "value": "pickViewMatrix", - "start": 75740, - "end": 75754, + "value": "aabb", + "start": 76460, + "end": 76464, "loc": { "start": { - "line": 2254, - "column": 19 + "line": 2279, + "column": 12 }, "end": { - "line": 2254, - "column": 33 + "line": 2279, + "column": 16 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -290699,24 +294571,24 @@ "binop": null, "updateContext": null }, - "start": 75754, - "end": 75755, + "start": 76464, + "end": 76465, "loc": { "start": { - "line": 2254, - "column": 33 + "line": 2279, + "column": 16 }, "end": { - "line": 2254, - "column": 34 + "line": 2279, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -290724,24 +294596,24 @@ "postfix": false, "binop": null }, - "start": 75764, - "end": 75765, + "value": "cfg", + "start": 76466, + "end": 76469, "loc": { "start": { - "line": 2255, - "column": 8 + "line": 2279, + "column": 18 }, "end": { - "line": 2255, - "column": 9 + "line": 2279, + "column": 21 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -290751,24 +294623,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 75774, - "end": 75780, + "start": 76469, + "end": 76470, "loc": { "start": { - "line": 2256, - "column": 8 + "line": 2279, + "column": 21 }, "end": { - "line": 2256, - "column": 14 + "line": 2279, + "column": 22 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -290776,27 +294646,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 75781, - "end": 75785, + "value": "aabb", + "start": 76470, + "end": 76474, "loc": { "start": { - "line": 2256, - "column": 15 + "line": 2279, + "column": 22 }, "end": { - "line": 2256, - "column": 19 + "line": 2279, + "column": 26 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -290806,16 +294675,16 @@ "binop": null, "updateContext": null }, - "start": 75785, - "end": 75786, + "start": 76474, + "end": 76475, "loc": { "start": { - "line": 2256, - "column": 19 + "line": 2279, + "column": 26 }, "end": { - "line": 2256, - "column": 20 + "line": 2279, + "column": 27 } } }, @@ -290831,23 +294700,23 @@ "postfix": false, "binop": null }, - "value": "_viewMatrix", - "start": 75786, - "end": 75797, + "value": "matrix", + "start": 76488, + "end": 76494, "loc": { "start": { - "line": 2256, - "column": 20 + "line": 2280, + "column": 12 }, "end": { - "line": 2256, - "column": 31 + "line": 2280, + "column": 18 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -290858,57 +294727,16 @@ "binop": null, "updateContext": null }, - "start": 75797, - "end": 75798, - "loc": { - "start": { - "line": 2256, - "column": 31 - }, - "end": { - "line": 2256, - "column": 32 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 75803, - "end": 75804, - "loc": { - "start": { - "line": 2257, - "column": 4 - }, - "end": { - "line": 2257, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n *\n * @param cfg\n ", - "start": 75810, - "end": 75846, + "start": 76494, + "end": 76495, "loc": { "start": { - "line": 2259, - "column": 4 + "line": 2280, + "column": 18 }, "end": { - "line": 2262, - "column": 7 + "line": 2280, + "column": 19 } } }, @@ -290924,17 +294752,17 @@ "postfix": false, "binop": null }, - "value": "createQuantizationRange", - "start": 75851, - "end": 75874, + "value": "createPositionsDecodeMatrix", + "start": 76496, + "end": 76523, "loc": { "start": { - "line": 2263, - "column": 4 + "line": 2280, + "column": 20 }, "end": { - "line": 2263, - "column": 27 + "line": 2280, + "column": 47 } } }, @@ -290950,16 +294778,16 @@ "postfix": false, "binop": null }, - "start": 75874, - "end": 75875, + "start": 76523, + "end": 76524, "loc": { "start": { - "line": 2263, - "column": 27 + "line": 2280, + "column": 47 }, "end": { - "line": 2263, - "column": 28 + "line": 2280, + "column": 48 } } }, @@ -290976,22 +294804,22 @@ "binop": null }, "value": "cfg", - "start": 75875, - "end": 75878, + "start": 76524, + "end": 76527, "loc": { "start": { - "line": 2263, - "column": 28 + "line": 2280, + "column": 48 }, "end": { - "line": 2263, - "column": 31 + "line": 2280, + "column": 51 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -290999,25 +294827,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 75878, - "end": 75879, + "start": 76527, + "end": 76528, "loc": { "start": { - "line": 2263, - "column": 31 + "line": 2280, + "column": 51 }, "end": { - "line": 2263, - "column": 32 + "line": 2280, + "column": 52 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -291026,24 +294855,24 @@ "postfix": false, "binop": null }, - "start": 75880, - "end": 75881, + "value": "aabb", + "start": 76528, + "end": 76532, "loc": { "start": { - "line": 2263, - "column": 33 + "line": 2280, + "column": 52 }, "end": { - "line": 2263, - "column": 34 + "line": 2280, + "column": 56 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -291053,42 +294882,16 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 75890, - "end": 75892, - "loc": { - "start": { - "line": 2264, - "column": 8 - }, - "end": { - "line": 2264, - "column": 10 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 75893, - "end": 75894, + "start": 76532, + "end": 76533, "loc": { "start": { - "line": 2264, - "column": 11 + "line": 2280, + "column": 56 }, "end": { - "line": 2264, - "column": 12 + "line": 2280, + "column": 57 } } }, @@ -291104,17 +294907,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 75894, - "end": 75897, + "value": "math", + "start": 76534, + "end": 76538, "loc": { "start": { - "line": 2264, - "column": 12 + "line": 2280, + "column": 58 }, "end": { - "line": 2264, - "column": 15 + "line": 2280, + "column": 62 } } }, @@ -291131,16 +294934,16 @@ "binop": null, "updateContext": null }, - "start": 75897, - "end": 75898, + "start": 76538, + "end": 76539, "loc": { "start": { - "line": 2264, - "column": 15 + "line": 2280, + "column": 62 }, "end": { - "line": 2264, - "column": 16 + "line": 2280, + "column": 63 } } }, @@ -291156,52 +294959,50 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 75898, - "end": 75900, + "value": "mat4", + "start": 76539, + "end": 76543, "loc": { "start": { - "line": 2264, - "column": 16 + "line": 2280, + "column": 63 }, "end": { - "line": 2264, - "column": 18 + "line": 2280, + "column": 67 } } }, { "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": 75901, - "end": 75904, + "start": 76543, + "end": 76544, "loc": { "start": { - "line": 2264, - "column": 19 + "line": 2280, + "column": 67 }, "end": { - "line": 2264, - "column": 22 + "line": 2280, + "column": 68 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -291209,52 +295010,49 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 75905, - "end": 75914, + "start": 76544, + "end": 76545, "loc": { "start": { - "line": 2264, - "column": 23 + "line": 2280, + "column": 68 }, "end": { - "line": 2264, - "column": 32 + "line": 2280, + "column": 69 } } }, { "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": 75915, - "end": 75917, + "start": 76545, + "end": 76546, "loc": { "start": { - "line": 2264, - "column": 33 + "line": 2280, + "column": 69 }, "end": { - "line": 2264, - "column": 35 + "line": 2280, + "column": 70 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -291262,23 +295060,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 75918, - "end": 75921, + "start": 76555, + "end": 76556, "loc": { "start": { - "line": 2264, - "column": 36 + "line": 2281, + "column": 8 }, "end": { - "line": 2264, - "column": 39 + "line": 2281, + "column": 9 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -291286,19 +295083,34 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 75921, - "end": 75922, + "start": 76561, + "end": 76562, "loc": { "start": { - "line": 2264, - "column": 39 + "line": 2282, + "column": 4 }, "end": { - "line": 2264, - "column": 40 + "line": 2282, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Creates a reusable geometry within this SceneModel.\n *\n * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that\n * instance the geometry.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n ", + "start": 76568, + "end": 79585, + "loc": { + "start": { + "line": 2284, + "column": 4 + }, + "end": { + "line": 2305, + "column": 7 } } }, @@ -291314,51 +295126,48 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 75922, - "end": 75924, + "value": "createGeometry", + "start": 79590, + "end": 79604, "loc": { "start": { - "line": 2264, - "column": 40 + "line": 2306, + "column": 4 }, "end": { - "line": 2264, - "column": 42 + "line": 2306, + "column": 18 } } }, { "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": 75925, - "end": 75928, + "start": 79604, + "end": 79605, "loc": { "start": { - "line": 2264, - "column": 43 + "line": 2306, + "column": 18 }, "end": { - "line": 2264, - "column": 46 + "line": 2306, + "column": 19 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -291366,20 +295175,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 75929, - "end": 75933, + "value": "cfg", + "start": 79605, + "end": 79608, "loc": { "start": { - "line": 2264, - "column": 47 + "line": 2306, + "column": 19 }, "end": { - "line": 2264, - "column": 51 + "line": 2306, + "column": 22 } } }, @@ -291395,16 +295203,16 @@ "postfix": false, "binop": null }, - "start": 75933, - "end": 75934, + "start": 79608, + "end": 79609, "loc": { "start": { - "line": 2264, - "column": 51 + "line": 2306, + "column": 22 }, "end": { - "line": 2264, - "column": 52 + "line": 2306, + "column": 23 } } }, @@ -291420,50 +295228,23 @@ "postfix": false, "binop": null }, - "start": 75935, - "end": 75936, - "loc": { - "start": { - "line": 2264, - "column": 53 - }, - "end": { - "line": 2264, - "column": 54 - } - } - }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 75949, - "end": 75953, + "start": 79610, + "end": 79611, "loc": { "start": { - "line": 2265, - "column": 12 + "line": 2306, + "column": 24 }, "end": { - "line": 2265, - "column": 16 + "line": 2306, + "column": 25 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -291474,23 +295255,24 @@ "binop": null, "updateContext": null }, - "start": 75953, - "end": 75954, + "value": "if", + "start": 79620, + "end": 79622, "loc": { "start": { - "line": 2265, - "column": 16 + "line": 2307, + "column": 8 }, "end": { - "line": 2265, - "column": 17 + "line": 2307, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -291499,24 +295281,23 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 75954, - "end": 75959, + "start": 79623, + "end": 79624, "loc": { "start": { - "line": 2265, - "column": 17 + "line": 2307, + "column": 11 }, "end": { - "line": 2265, - "column": 22 + "line": 2307, + "column": 12 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -291525,24 +295306,25 @@ "postfix": false, "binop": null }, - "start": 75959, - "end": 75960, + "value": "cfg", + "start": 79624, + "end": 79627, "loc": { "start": { - "line": 2265, - "column": 22 + "line": 2307, + "column": 12 }, "end": { - "line": 2265, - "column": 23 + "line": 2307, + "column": 15 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -291551,25 +295333,24 @@ "binop": null, "updateContext": null }, - "value": "[createQuantizationRange] Config missing: id", - "start": 75960, - "end": 76006, + "start": 79627, + "end": 79628, "loc": { "start": { - "line": 2265, - "column": 23 + "line": 2307, + "column": 15 }, "end": { - "line": 2265, - "column": 69 + "line": 2307, + "column": 16 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -291577,22 +295358,23 @@ "postfix": false, "binop": null }, - "start": 76006, - "end": 76007, + "value": "id", + "start": 79628, + "end": 79630, "loc": { "start": { - "line": 2265, - "column": 69 + "line": 2307, + "column": 16 }, "end": { - "line": 2265, - "column": 70 + "line": 2307, + "column": 18 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -291600,53 +295382,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 76007, - "end": 76008, + "value": "===", + "start": 79631, + "end": 79634, "loc": { "start": { - "line": 2265, - "column": 70 + "line": 2307, + "column": 19 }, "end": { - "line": 2265, - "column": 71 + "line": 2307, + "column": 22 } } }, { "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": 76021, - "end": 76027, + "value": "undefined", + "start": 79635, + "end": 79644, "loc": { "start": { - "line": 2266, - "column": 12 + "line": 2307, + "column": 23 }, "end": { - "line": 2266, - "column": 18 + "line": 2307, + "column": 32 } } }, { "type": { - "label": ";", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -291654,27 +295435,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 76027, - "end": 76028, + "value": "||", + "start": 79645, + "end": 79647, "loc": { "start": { - "line": 2266, - "column": 18 + "line": 2307, + "column": 33 }, "end": { - "line": 2266, - "column": 19 + "line": 2307, + "column": 35 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -291682,23 +295464,23 @@ "postfix": false, "binop": null }, - "start": 76037, - "end": 76038, + "value": "cfg", + "start": 79648, + "end": 79651, "loc": { "start": { - "line": 2267, - "column": 8 + "line": 2307, + "column": 36 }, "end": { - "line": 2267, - "column": 9 + "line": 2307, + "column": 39 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -291709,42 +295491,16 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 76047, - "end": 76049, - "loc": { - "start": { - "line": 2268, - "column": 8 - }, - "end": { - "line": 2268, - "column": 10 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 76050, - "end": 76051, + "start": 79651, + "end": 79652, "loc": { "start": { - "line": 2268, - "column": 11 + "line": 2307, + "column": 39 }, "end": { - "line": 2268, - "column": 12 + "line": 2307, + "column": 40 } } }, @@ -291760,49 +295516,51 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 76051, - "end": 76054, + "value": "id", + "start": 79652, + "end": 79654, "loc": { "start": { - "line": 2268, - "column": 12 + "line": 2307, + "column": 40 }, "end": { - "line": 2268, - "column": 15 + "line": 2307, + "column": 42 } } }, { "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": 76054, - "end": 76055, + "value": "===", + "start": 79655, + "end": 79658, "loc": { "start": { - "line": 2268, - "column": 15 + "line": 2307, + "column": 43 }, "end": { - "line": 2268, - "column": 16 + "line": 2307, + "column": 46 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -291810,19 +295568,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "aabb", - "start": 76055, - "end": 76059, + "value": "null", + "start": 79659, + "end": 79663, "loc": { "start": { - "line": 2268, - "column": 16 + "line": 2307, + "column": 47 }, "end": { - "line": 2268, - "column": 20 + "line": 2307, + "column": 51 } } }, @@ -291838,16 +295597,16 @@ "postfix": false, "binop": null }, - "start": 76059, - "end": 76060, + "start": 79663, + "end": 79664, "loc": { "start": { - "line": 2268, - "column": 20 + "line": 2307, + "column": 51 }, "end": { - "line": 2268, - "column": 21 + "line": 2307, + "column": 52 } } }, @@ -291863,16 +295622,16 @@ "postfix": false, "binop": null }, - "start": 76061, - "end": 76062, + "start": 79665, + "end": 79666, "loc": { "start": { - "line": 2268, - "column": 22 + "line": 2307, + "column": 53 }, "end": { - "line": 2268, - "column": 23 + "line": 2307, + "column": 54 } } }, @@ -291891,15 +295650,15 @@ "updateContext": null }, "value": "this", - "start": 76075, - "end": 76079, + "start": 79679, + "end": 79683, "loc": { "start": { - "line": 2269, + "line": 2308, "column": 12 }, "end": { - "line": 2269, + "line": 2308, "column": 16 } } @@ -291917,15 +295676,15 @@ "binop": null, "updateContext": null }, - "start": 76079, - "end": 76080, + "start": 79683, + "end": 79684, "loc": { "start": { - "line": 2269, + "line": 2308, "column": 16 }, "end": { - "line": 2269, + "line": 2308, "column": 17 } } @@ -291943,15 +295702,15 @@ "binop": null }, "value": "error", - "start": 76080, - "end": 76085, + "start": 79684, + "end": 79689, "loc": { "start": { - "line": 2269, + "line": 2308, "column": 17 }, "end": { - "line": 2269, + "line": 2308, "column": 22 } } @@ -291968,15 +295727,15 @@ "postfix": false, "binop": null }, - "start": 76085, - "end": 76086, + "start": 79689, + "end": 79690, "loc": { "start": { - "line": 2269, + "line": 2308, "column": 22 }, "end": { - "line": 2269, + "line": 2308, "column": 23 } } @@ -291994,17 +295753,17 @@ "binop": null, "updateContext": null }, - "value": "[createQuantizationRange] Config missing: aabb", - "start": 76086, - "end": 76134, + "value": "[createGeometry] Config missing: id", + "start": 79690, + "end": 79727, "loc": { "start": { - "line": 2269, + "line": 2308, "column": 23 }, "end": { - "line": 2269, - "column": 71 + "line": 2308, + "column": 60 } } }, @@ -292020,16 +295779,16 @@ "postfix": false, "binop": null }, - "start": 76134, - "end": 76135, + "start": 79727, + "end": 79728, "loc": { "start": { - "line": 2269, - "column": 71 + "line": 2308, + "column": 60 }, "end": { - "line": 2269, - "column": 72 + "line": 2308, + "column": 61 } } }, @@ -292046,16 +295805,16 @@ "binop": null, "updateContext": null }, - "start": 76135, - "end": 76136, + "start": 79728, + "end": 79729, "loc": { "start": { - "line": 2269, - "column": 72 + "line": 2308, + "column": 61 }, "end": { - "line": 2269, - "column": 73 + "line": 2308, + "column": 62 } } }, @@ -292074,15 +295833,15 @@ "updateContext": null }, "value": "return", - "start": 76149, - "end": 76155, + "start": 79742, + "end": 79748, "loc": { "start": { - "line": 2270, + "line": 2309, "column": 12 }, "end": { - "line": 2270, + "line": 2309, "column": 18 } } @@ -292100,15 +295859,15 @@ "binop": null, "updateContext": null }, - "start": 76155, - "end": 76156, + "start": 79748, + "end": 79749, "loc": { "start": { - "line": 2270, + "line": 2309, "column": 18 }, "end": { - "line": 2270, + "line": 2309, "column": 19 } } @@ -292125,15 +295884,15 @@ "postfix": false, "binop": null }, - "start": 76165, - "end": 76166, + "start": 79758, + "end": 79759, "loc": { "start": { - "line": 2271, + "line": 2310, "column": 8 }, "end": { - "line": 2271, + "line": 2310, "column": 9 } } @@ -292153,15 +295912,15 @@ "updateContext": null }, "value": "if", - "start": 76175, - "end": 76177, + "start": 79768, + "end": 79770, "loc": { "start": { - "line": 2272, + "line": 2311, "column": 8 }, "end": { - "line": 2272, + "line": 2311, "column": 10 } } @@ -292178,15 +295937,15 @@ "postfix": false, "binop": null }, - "start": 76178, - "end": 76179, + "start": 79771, + "end": 79772, "loc": { "start": { - "line": 2272, + "line": 2311, "column": 11 }, "end": { - "line": 2272, + "line": 2311, "column": 12 } } @@ -292206,15 +295965,15 @@ "updateContext": null }, "value": "this", - "start": 76179, - "end": 76183, + "start": 79772, + "end": 79776, "loc": { "start": { - "line": 2272, + "line": 2311, "column": 12 }, "end": { - "line": 2272, + "line": 2311, "column": 16 } } @@ -292232,15 +295991,15 @@ "binop": null, "updateContext": null }, - "start": 76183, - "end": 76184, + "start": 79776, + "end": 79777, "loc": { "start": { - "line": 2272, + "line": 2311, "column": 16 }, "end": { - "line": 2272, + "line": 2311, "column": 17 } } @@ -292257,17 +296016,17 @@ "postfix": false, "binop": null }, - "value": "_quantizationRanges", - "start": 76184, - "end": 76203, + "value": "_geometries", + "start": 79777, + "end": 79788, "loc": { "start": { - "line": 2272, + "line": 2311, "column": 17 }, "end": { - "line": 2272, - "column": 36 + "line": 2311, + "column": 28 } } }, @@ -292284,16 +296043,16 @@ "binop": null, "updateContext": null }, - "start": 76203, - "end": 76204, + "start": 79788, + "end": 79789, "loc": { "start": { - "line": 2272, - "column": 36 + "line": 2311, + "column": 28 }, "end": { - "line": 2272, - "column": 37 + "line": 2311, + "column": 29 } } }, @@ -292310,16 +296069,16 @@ "binop": null }, "value": "cfg", - "start": 76204, - "end": 76207, + "start": 79789, + "end": 79792, "loc": { "start": { - "line": 2272, - "column": 37 + "line": 2311, + "column": 29 }, "end": { - "line": 2272, - "column": 40 + "line": 2311, + "column": 32 } } }, @@ -292336,16 +296095,16 @@ "binop": null, "updateContext": null }, - "start": 76207, - "end": 76208, + "start": 79792, + "end": 79793, "loc": { "start": { - "line": 2272, - "column": 40 + "line": 2311, + "column": 32 }, "end": { - "line": 2272, - "column": 41 + "line": 2311, + "column": 33 } } }, @@ -292362,16 +296121,16 @@ "binop": null }, "value": "id", - "start": 76208, - "end": 76210, + "start": 79793, + "end": 79795, "loc": { "start": { - "line": 2272, - "column": 41 + "line": 2311, + "column": 33 }, "end": { - "line": 2272, - "column": 43 + "line": 2311, + "column": 35 } } }, @@ -292388,16 +296147,16 @@ "binop": null, "updateContext": null }, - "start": 76210, - "end": 76211, + "start": 79795, + "end": 79796, "loc": { "start": { - "line": 2272, - "column": 43 + "line": 2311, + "column": 35 }, "end": { - "line": 2272, - "column": 44 + "line": 2311, + "column": 36 } } }, @@ -292413,16 +296172,16 @@ "postfix": false, "binop": null }, - "start": 76211, - "end": 76212, + "start": 79796, + "end": 79797, "loc": { "start": { - "line": 2272, - "column": 44 + "line": 2311, + "column": 36 }, "end": { - "line": 2272, - "column": 45 + "line": 2311, + "column": 37 } } }, @@ -292438,16 +296197,16 @@ "postfix": false, "binop": null }, - "start": 76213, - "end": 76214, + "start": 79798, + "end": 79799, "loc": { "start": { - "line": 2272, - "column": 46 + "line": 2311, + "column": 38 }, "end": { - "line": 2272, - "column": 47 + "line": 2311, + "column": 39 } } }, @@ -292466,15 +296225,15 @@ "updateContext": null }, "value": "this", - "start": 76227, - "end": 76231, + "start": 79812, + "end": 79816, "loc": { "start": { - "line": 2273, + "line": 2312, "column": 12 }, "end": { - "line": 2273, + "line": 2312, "column": 16 } } @@ -292492,15 +296251,15 @@ "binop": null, "updateContext": null }, - "start": 76231, - "end": 76232, + "start": 79816, + "end": 79817, "loc": { "start": { - "line": 2273, + "line": 2312, "column": 16 }, "end": { - "line": 2273, + "line": 2312, "column": 17 } } @@ -292518,15 +296277,15 @@ "binop": null }, "value": "error", - "start": 76232, - "end": 76237, + "start": 79817, + "end": 79822, "loc": { "start": { - "line": 2273, + "line": 2312, "column": 17 }, "end": { - "line": 2273, + "line": 2312, "column": 22 } } @@ -292543,15 +296302,15 @@ "postfix": false, "binop": null }, - "start": 76237, - "end": 76238, + "start": 79822, + "end": 79823, "loc": { "start": { - "line": 2273, + "line": 2312, "column": 22 }, "end": { - "line": 2273, + "line": 2312, "column": 23 } } @@ -292569,17 +296328,17 @@ "binop": null, "updateContext": null }, - "value": "[createQuantizationRange] QuantizationRange already created: ", - "start": 76238, - "end": 76301, + "value": "[createGeometry] Geometry already created: ", + "start": 79823, + "end": 79868, "loc": { "start": { - "line": 2273, + "line": 2312, "column": 23 }, "end": { - "line": 2273, - "column": 86 + "line": 2312, + "column": 68 } } }, @@ -292597,16 +296356,16 @@ "updateContext": null }, "value": "+", - "start": 76302, - "end": 76303, + "start": 79869, + "end": 79870, "loc": { "start": { - "line": 2273, - "column": 87 + "line": 2312, + "column": 69 }, "end": { - "line": 2273, - "column": 88 + "line": 2312, + "column": 70 } } }, @@ -292623,16 +296382,16 @@ "binop": null }, "value": "cfg", - "start": 76304, - "end": 76307, + "start": 79871, + "end": 79874, "loc": { "start": { - "line": 2273, - "column": 89 + "line": 2312, + "column": 71 }, "end": { - "line": 2273, - "column": 92 + "line": 2312, + "column": 74 } } }, @@ -292649,16 +296408,16 @@ "binop": null, "updateContext": null }, - "start": 76307, - "end": 76308, + "start": 79874, + "end": 79875, "loc": { "start": { - "line": 2273, - "column": 92 + "line": 2312, + "column": 74 }, "end": { - "line": 2273, - "column": 93 + "line": 2312, + "column": 75 } } }, @@ -292675,16 +296434,16 @@ "binop": null }, "value": "id", - "start": 76308, - "end": 76310, + "start": 79875, + "end": 79877, "loc": { "start": { - "line": 2273, - "column": 93 + "line": 2312, + "column": 75 }, "end": { - "line": 2273, - "column": 95 + "line": 2312, + "column": 77 } } }, @@ -292700,16 +296459,16 @@ "postfix": false, "binop": null }, - "start": 76310, - "end": 76311, + "start": 79877, + "end": 79878, "loc": { "start": { - "line": 2273, - "column": 95 + "line": 2312, + "column": 77 }, "end": { - "line": 2273, - "column": 96 + "line": 2312, + "column": 78 } } }, @@ -292726,16 +296485,16 @@ "binop": null, "updateContext": null }, - "start": 76311, - "end": 76312, + "start": 79878, + "end": 79879, "loc": { "start": { - "line": 2273, - "column": 96 + "line": 2312, + "column": 78 }, "end": { - "line": 2273, - "column": 97 + "line": 2312, + "column": 79 } } }, @@ -292754,15 +296513,15 @@ "updateContext": null }, "value": "return", - "start": 76325, - "end": 76331, + "start": 79892, + "end": 79898, "loc": { "start": { - "line": 2274, + "line": 2313, "column": 12 }, "end": { - "line": 2274, + "line": 2313, "column": 18 } } @@ -292780,15 +296539,15 @@ "binop": null, "updateContext": null }, - "start": 76331, - "end": 76332, + "start": 79898, + "end": 79899, "loc": { "start": { - "line": 2274, + "line": 2313, "column": 18 }, "end": { - "line": 2274, + "line": 2313, "column": 19 } } @@ -292805,25 +296564,25 @@ "postfix": false, "binop": null }, - "start": 76341, - "end": 76342, + "start": 79908, + "end": 79909, "loc": { "start": { - "line": 2275, + "line": 2314, "column": 8 }, "end": { - "line": 2275, + "line": 2314, "column": 9 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -292832,43 +296591,42 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 76351, - "end": 76355, + "value": "if", + "start": 79918, + "end": 79920, "loc": { "start": { - "line": 2276, + "line": 2315, "column": 8 }, "end": { - "line": 2276, - "column": 12 + "line": 2315, + "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": 76355, - "end": 76356, + "start": 79921, + "end": 79922, "loc": { "start": { - "line": 2276, - "column": 12 + "line": 2315, + "column": 11 }, "end": { - "line": 2276, - "column": 13 + "line": 2315, + "column": 12 } } }, @@ -292884,25 +296642,25 @@ "postfix": false, "binop": null }, - "value": "_quantizationRanges", - "start": 76356, - "end": 76375, + "value": "cfg", + "start": 79922, + "end": 79925, "loc": { "start": { - "line": 2276, - "column": 13 + "line": 2315, + "column": 12 }, "end": { - "line": 2276, - "column": 32 + "line": 2315, + "column": 15 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -292911,16 +296669,16 @@ "binop": null, "updateContext": null }, - "start": 76375, - "end": 76376, + "start": 79925, + "end": 79926, "loc": { "start": { - "line": 2276, - "column": 32 + "line": 2315, + "column": 15 }, "end": { - "line": 2276, - "column": 33 + "line": 2315, + "column": 16 } } }, @@ -292936,43 +296694,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 76376, - "end": 76379, + "value": "primitive", + "start": 79926, + "end": 79935, "loc": { "start": { - "line": 2276, - "column": 33 + "line": 2315, + "column": 16 }, "end": { - "line": 2276, - "column": 36 + "line": 2315, + "column": 25 } } }, { "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": 76379, - "end": 76380, + "value": "===", + "start": 79936, + "end": 79939, "loc": { "start": { - "line": 2276, - "column": 36 + "line": 2315, + "column": 26 }, "end": { - "line": 2276, - "column": 37 + "line": 2315, + "column": 29 } } }, @@ -292988,95 +296747,96 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 76380, - "end": 76382, + "value": "undefined", + "start": 79940, + "end": 79949, "loc": { "start": { - "line": 2276, - "column": 37 + "line": 2315, + "column": 30 }, "end": { - "line": 2276, + "line": 2315, "column": 39 } } }, { "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": 76382, - "end": 76383, + "value": "||", + "start": 79950, + "end": 79952, "loc": { "start": { - "line": 2276, - "column": 39 + "line": 2315, + "column": 40 }, "end": { - "line": 2276, - "column": 40 + "line": 2315, + "column": 42 } } }, { "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": 76384, - "end": 76385, + "value": "cfg", + "start": 79953, + "end": 79956, "loc": { "start": { - "line": 2276, - "column": 41 + "line": 2315, + "column": 43 }, "end": { - "line": 2276, - "column": 42 + "line": 2315, + "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": 76386, - "end": 76387, + "start": 79956, + "end": 79957, "loc": { "start": { - "line": 2276, - "column": 43 + "line": 2315, + "column": 46 }, "end": { - "line": 2276, - "column": 44 + "line": 2315, + "column": 47 } } }, @@ -293092,23 +296852,23 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 76400, - "end": 76402, + "value": "primitive", + "start": 79957, + "end": 79966, "loc": { "start": { - "line": 2277, - "column": 12 + "line": 2315, + "column": 47 }, "end": { - "line": 2277, - "column": 14 + "line": 2315, + "column": 56 } } }, { "type": { - "label": ":", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -293116,25 +296876,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 76402, - "end": 76403, + "value": "===", + "start": 79967, + "end": 79970, "loc": { "start": { - "line": 2277, - "column": 14 + "line": 2315, + "column": 57 }, "end": { - "line": 2277, - "column": 15 + "line": 2315, + "column": 60 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -293142,53 +296904,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "cfg", - "start": 76404, - "end": 76407, - "loc": { - "start": { - "line": 2277, - "column": 16 - }, - "end": { - "line": 2277, - "column": 19 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 76407, - "end": 76408, + "value": "null", + "start": 79971, + "end": 79975, "loc": { "start": { - "line": 2277, - "column": 19 + "line": 2315, + "column": 61 }, "end": { - "line": 2277, - "column": 20 + "line": 2315, + "column": 65 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -293196,43 +296933,41 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 76408, - "end": 76410, + "start": 79975, + "end": 79976, "loc": { "start": { - "line": 2277, - "column": 20 + "line": 2315, + "column": 65 }, "end": { - "line": 2277, - "column": 22 + "line": 2315, + "column": 66 } } }, { "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": 76410, - "end": 76411, + "start": 79977, + "end": 79978, "loc": { "start": { - "line": 2277, - "column": 22 + "line": 2315, + "column": 67 }, "end": { - "line": 2277, - "column": 23 + "line": 2315, + "column": 68 } } }, @@ -293248,24 +296983,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 76424, - "end": 76428, + "value": "cfg", + "start": 79991, + "end": 79994, "loc": { "start": { - "line": 2278, + "line": 2316, "column": 12 }, "end": { - "line": 2278, - "column": 16 + "line": 2316, + "column": 15 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -293275,16 +297010,16 @@ "binop": null, "updateContext": null }, - "start": 76428, - "end": 76429, + "start": 79994, + "end": 79995, "loc": { "start": { - "line": 2278, - "column": 16 + "line": 2316, + "column": 15 }, "end": { - "line": 2278, - "column": 17 + "line": 2316, + "column": 16 } } }, @@ -293300,49 +297035,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 76430, - "end": 76433, + "value": "primitive", + "start": 79995, + "end": 80004, "loc": { "start": { - "line": 2278, - "column": 18 + "line": 2316, + "column": 16 }, "end": { - "line": 2278, - "column": 21 + "line": 2316, + "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": 76433, - "end": 76434, + "value": "=", + "start": 80005, + "end": 80006, "loc": { "start": { - "line": 2278, - "column": 21 + "line": 2316, + "column": 26 }, "end": { - "line": 2278, - "column": 22 + "line": 2316, + "column": 27 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -293350,25 +297086,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "aabb", - "start": 76434, - "end": 76438, + "value": "triangles", + "start": 80007, + "end": 80018, "loc": { "start": { - "line": 2278, - "column": 22 + "line": 2316, + "column": 28 }, "end": { - "line": 2278, - "column": 26 + "line": 2316, + "column": 39 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -293379,24 +297116,24 @@ "binop": null, "updateContext": null }, - "start": 76438, - "end": 76439, + "start": 80018, + "end": 80019, "loc": { "start": { - "line": 2278, - "column": 26 + "line": 2316, + "column": 39 }, "end": { - "line": 2278, - "column": 27 + "line": 2316, + "column": 40 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -293404,24 +297141,24 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 76452, - "end": 76458, + "start": 80028, + "end": 80029, "loc": { "start": { - "line": 2279, - "column": 12 + "line": 2317, + "column": 8 }, "end": { - "line": 2279, - "column": 18 + "line": 2317, + "column": 9 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -293431,42 +297168,17 @@ "binop": null, "updateContext": null }, - "start": 76458, - "end": 76459, - "loc": { - "start": { - "line": 2279, - "column": 18 - }, - "end": { - "line": 2279, - "column": 19 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "createPositionsDecodeMatrix", - "start": 76460, - "end": 76487, + "value": "if", + "start": 80038, + "end": 80040, "loc": { "start": { - "line": 2279, - "column": 20 + "line": 2318, + "column": 8 }, "end": { - "line": 2279, - "column": 47 + "line": 2318, + "column": 10 } } }, @@ -293482,16 +297194,16 @@ "postfix": false, "binop": null }, - "start": 76487, - "end": 76488, + "start": 80041, + "end": 80042, "loc": { "start": { - "line": 2279, - "column": 47 + "line": 2318, + "column": 11 }, "end": { - "line": 2279, - "column": 48 + "line": 2318, + "column": 12 } } }, @@ -293508,16 +297220,16 @@ "binop": null }, "value": "cfg", - "start": 76488, - "end": 76491, + "start": 80042, + "end": 80045, "loc": { "start": { - "line": 2279, - "column": 48 + "line": 2318, + "column": 12 }, "end": { - "line": 2279, - "column": 51 + "line": 2318, + "column": 15 } } }, @@ -293534,16 +297246,16 @@ "binop": null, "updateContext": null }, - "start": 76491, - "end": 76492, + "start": 80045, + "end": 80046, "loc": { "start": { - "line": 2279, - "column": 51 + "line": 2318, + "column": 15 }, "end": { - "line": 2279, - "column": 52 + "line": 2318, + "column": 16 } } }, @@ -293559,23 +297271,23 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 76492, - "end": 76496, + "value": "primitive", + "start": 80046, + "end": 80055, "loc": { "start": { - "line": 2279, - "column": 52 + "line": 2318, + "column": 16 }, "end": { - "line": 2279, - "column": 56 + "line": 2318, + "column": 25 } } }, { "type": { - "label": ",", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -293583,25 +297295,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 76496, - "end": 76497, + "value": "!==", + "start": 80056, + "end": 80059, "loc": { "start": { - "line": 2279, - "column": 56 + "line": 2318, + "column": 26 }, "end": { - "line": 2279, - "column": 57 + "line": 2318, + "column": 29 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -293609,45 +297322,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 76498, - "end": 76502, + "value": "points", + "start": 80060, + "end": 80068, "loc": { "start": { - "line": 2279, - "column": 58 + "line": 2318, + "column": 30 }, "end": { - "line": 2279, - "column": 62 + "line": 2318, + "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": 76502, - "end": 76503, + "value": "&&", + "start": 80069, + "end": 80071, "loc": { "start": { - "line": 2279, - "column": 62 + "line": 2318, + "column": 39 }, "end": { - "line": 2279, - "column": 63 + "line": 2318, + "column": 41 } } }, @@ -293663,48 +297378,23 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 76503, - "end": 76507, - "loc": { - "start": { - "line": 2279, - "column": 63 - }, - "end": { - "line": 2279, - "column": 67 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 76507, - "end": 76508, + "value": "cfg", + "start": 80072, + "end": 80075, "loc": { "start": { - "line": 2279, - "column": 67 + "line": 2318, + "column": 42 }, "end": { - "line": 2279, - "column": 68 + "line": 2318, + "column": 45 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -293712,26 +297402,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 76508, - "end": 76509, + "start": 80075, + "end": 80076, "loc": { "start": { - "line": 2279, - "column": 68 + "line": 2318, + "column": 45 }, "end": { - "line": 2279, - "column": 69 + "line": 2318, + "column": 46 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -293739,115 +297430,105 @@ "postfix": false, "binop": null }, - "start": 76509, - "end": 76510, + "value": "primitive", + "start": 80076, + "end": 80085, "loc": { "start": { - "line": 2279, - "column": 69 + "line": 2318, + "column": 46 }, "end": { - "line": 2279, - "column": 70 + "line": 2318, + "column": 55 } } }, { "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": 76519, - "end": 76520, + "value": "!==", + "start": 80086, + "end": 80089, "loc": { "start": { - "line": 2280, - "column": 8 + "line": 2318, + "column": 56 }, "end": { - "line": 2280, - "column": 9 + "line": 2318, + "column": 59 } } }, { "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": 76525, - "end": 76526, - "loc": { - "start": { - "line": 2281, - "column": 4 - }, - "end": { - "line": 2281, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Creates a reusable geometry within this SceneModel.\n *\n * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that\n * instance the geometry.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n ", - "start": 76532, - "end": 79549, + "value": "lines", + "start": 80090, + "end": 80097, "loc": { "start": { - "line": 2283, - "column": 4 + "line": 2318, + "column": 60 }, "end": { - "line": 2304, - "column": 7 + "line": 2318, + "column": 67 } } }, { "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": 2, + "updateContext": null }, - "value": "createGeometry", - "start": 79554, - "end": 79568, + "value": "&&", + "start": 80098, + "end": 80100, "loc": { "start": { - "line": 2305, - "column": 4 + "line": 2318, + "column": 68 }, "end": { - "line": 2305, - "column": 18 + "line": 2318, + "column": 70 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -293856,50 +297537,51 @@ "postfix": false, "binop": null }, - "start": 79568, - "end": 79569, + "value": "cfg", + "start": 80101, + "end": 80104, "loc": { "start": { - "line": 2305, - "column": 18 + "line": 2318, + "column": 71 }, "end": { - "line": 2305, - "column": 19 + "line": 2318, + "column": 74 } } }, { "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": "cfg", - "start": 79569, - "end": 79572, + "start": 80104, + "end": 80105, "loc": { "start": { - "line": 2305, - "column": 19 + "line": 2318, + "column": 74 }, "end": { - "line": 2305, - "column": 22 + "line": 2318, + "column": 75 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -293907,50 +297589,52 @@ "postfix": false, "binop": null }, - "start": 79572, - "end": 79573, + "value": "primitive", + "start": 80105, + "end": 80114, "loc": { "start": { - "line": 2305, - "column": 22 + "line": 2318, + "column": 75 }, "end": { - "line": 2305, - "column": 23 + "line": 2318, + "column": 84 } } }, { "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": 79574, - "end": 79575, + "value": "!==", + "start": 80115, + "end": 80118, "loc": { "start": { - "line": 2305, - "column": 24 + "line": 2318, + "column": 85 }, "end": { - "line": 2305, - "column": 25 + "line": 2318, + "column": 88 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -293959,42 +297643,44 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 79584, - "end": 79586, + "value": "triangles", + "start": 80119, + "end": 80130, "loc": { "start": { - "line": 2306, - "column": 8 + "line": 2318, + "column": 89 }, "end": { - "line": 2306, - "column": 10 + "line": 2318, + "column": 100 } } }, { "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": 79587, - "end": 79588, + "value": "&&", + "start": 80131, + "end": 80133, "loc": { "start": { - "line": 2306, - "column": 11 + "line": 2318, + "column": 101 }, "end": { - "line": 2306, - "column": 12 + "line": 2318, + "column": 103 } } }, @@ -294011,16 +297697,16 @@ "binop": null }, "value": "cfg", - "start": 79588, - "end": 79591, + "start": 80134, + "end": 80137, "loc": { "start": { - "line": 2306, - "column": 12 + "line": 2318, + "column": 104 }, "end": { - "line": 2306, - "column": 15 + "line": 2318, + "column": 107 } } }, @@ -294037,16 +297723,16 @@ "binop": null, "updateContext": null }, - "start": 79591, - "end": 79592, + "start": 80137, + "end": 80138, "loc": { "start": { - "line": 2306, - "column": 15 + "line": 2318, + "column": 107 }, "end": { - "line": 2306, - "column": 16 + "line": 2318, + "column": 108 } } }, @@ -294062,17 +297748,17 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 79592, - "end": 79594, + "value": "primitive", + "start": 80138, + "end": 80147, "loc": { "start": { - "line": 2306, - "column": 16 + "line": 2318, + "column": 108 }, "end": { - "line": 2306, - "column": 18 + "line": 2318, + "column": 117 } } }, @@ -294089,23 +297775,23 @@ "binop": 6, "updateContext": null }, - "value": "===", - "start": 79595, - "end": 79598, + "value": "!==", + "start": 80148, + "end": 80151, "loc": { "start": { - "line": 2306, - "column": 19 + "line": 2318, + "column": 118 }, "end": { - "line": 2306, - "column": 22 + "line": 2318, + "column": 121 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -294113,25 +297799,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "undefined", - "start": 79599, - "end": 79608, + "value": "solid", + "start": 80152, + "end": 80159, "loc": { "start": { - "line": 2306, - "column": 23 + "line": 2318, + "column": 122 }, "end": { - "line": 2306, - "column": 32 + "line": 2318, + "column": 129 } } }, { "type": { - "label": "||", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -294139,20 +297826,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": 2, "updateContext": null }, - "value": "||", - "start": 79609, - "end": 79611, + "value": "&&", + "start": 80160, + "end": 80162, "loc": { "start": { - "line": 2306, - "column": 33 + "line": 2318, + "column": 130 }, "end": { - "line": 2306, - "column": 35 + "line": 2318, + "column": 132 } } }, @@ -294169,16 +297856,16 @@ "binop": null }, "value": "cfg", - "start": 79612, - "end": 79615, + "start": 80163, + "end": 80166, "loc": { "start": { - "line": 2306, - "column": 36 + "line": 2318, + "column": 133 }, "end": { - "line": 2306, - "column": 39 + "line": 2318, + "column": 136 } } }, @@ -294195,16 +297882,16 @@ "binop": null, "updateContext": null }, - "start": 79615, - "end": 79616, + "start": 80166, + "end": 80167, "loc": { "start": { - "line": 2306, - "column": 39 + "line": 2318, + "column": 136 }, "end": { - "line": 2306, - "column": 40 + "line": 2318, + "column": 137 } } }, @@ -294220,17 +297907,17 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 79616, - "end": 79618, + "value": "primitive", + "start": 80167, + "end": 80176, "loc": { "start": { - "line": 2306, - "column": 40 + "line": 2318, + "column": 137 }, "end": { - "line": 2306, - "column": 42 + "line": 2318, + "column": 146 } } }, @@ -294247,24 +297934,23 @@ "binop": 6, "updateContext": null }, - "value": "===", - "start": 79619, - "end": 79622, + "value": "!==", + "start": 80177, + "end": 80180, "loc": { "start": { - "line": 2306, - "column": 43 + "line": 2318, + "column": 147 }, "end": { - "line": 2306, - "column": 46 + "line": 2318, + "column": 150 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -294275,17 +297961,17 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 79623, - "end": 79627, + "value": "surface", + "start": 80181, + "end": 80190, "loc": { "start": { - "line": 2306, - "column": 47 + "line": 2318, + "column": 151 }, "end": { - "line": 2306, - "column": 51 + "line": 2318, + "column": 160 } } }, @@ -294301,16 +297987,16 @@ "postfix": false, "binop": null }, - "start": 79627, - "end": 79628, + "start": 80190, + "end": 80191, "loc": { "start": { - "line": 2306, - "column": 51 + "line": 2318, + "column": 160 }, "end": { - "line": 2306, - "column": 52 + "line": 2318, + "column": 161 } } }, @@ -294326,16 +298012,16 @@ "postfix": false, "binop": null }, - "start": 79629, - "end": 79630, + "start": 80192, + "end": 80193, "loc": { "start": { - "line": 2306, - "column": 53 + "line": 2318, + "column": 162 }, "end": { - "line": 2306, - "column": 54 + "line": 2318, + "column": 163 } } }, @@ -294354,15 +298040,15 @@ "updateContext": null }, "value": "this", - "start": 79643, - "end": 79647, + "start": 80206, + "end": 80210, "loc": { "start": { - "line": 2307, + "line": 2319, "column": 12 }, "end": { - "line": 2307, + "line": 2319, "column": 16 } } @@ -294380,15 +298066,15 @@ "binop": null, "updateContext": null }, - "start": 79647, - "end": 79648, + "start": 80210, + "end": 80211, "loc": { "start": { - "line": 2307, + "line": 2319, "column": 16 }, "end": { - "line": 2307, + "line": 2319, "column": 17 } } @@ -294406,15 +298092,15 @@ "binop": null }, "value": "error", - "start": 79648, - "end": 79653, + "start": 80211, + "end": 80216, "loc": { "start": { - "line": 2307, + "line": 2319, "column": 17 }, "end": { - "line": 2307, + "line": 2319, "column": 22 } } @@ -294431,22 +298117,22 @@ "postfix": false, "binop": null }, - "start": 79653, - "end": 79654, + "start": 80216, + "end": 80217, "loc": { "start": { - "line": 2307, + "line": 2319, "column": 22 }, "end": { - "line": 2307, + "line": 2319, "column": 23 } } }, { "type": { - "label": "string", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -294454,26 +298140,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "[createGeometry] Config missing: id", - "start": 79654, - "end": 79691, + "start": 80217, + "end": 80218, "loc": { "start": { - "line": 2307, + "line": 2319, "column": 23 }, "end": { - "line": 2307, - "column": 60 + "line": 2319, + "column": 24 } } }, { "type": { - "label": ")", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -294481,79 +298165,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 79691, - "end": 79692, + "value": "[createGeometry] Unsupported value for 'primitive': '", + "start": 80218, + "end": 80271, "loc": { "start": { - "line": 2307, - "column": 60 + "line": 2319, + "column": 24 }, "end": { - "line": 2307, - "column": 61 + "line": 2319, + "column": 77 } } }, { "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": 79692, - "end": 79693, + "start": 80271, + "end": 80273, "loc": { "start": { - "line": 2307, - "column": 61 + "line": 2319, + "column": 77 }, "end": { - "line": 2307, - "column": 62 + "line": 2319, + "column": 79 } } }, { "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": 79706, - "end": 79712, + "value": "cfg", + "start": 80273, + "end": 80276, "loc": { "start": { - "line": 2308, - "column": 12 + "line": 2319, + "column": 79 }, "end": { - "line": 2308, - "column": 18 + "line": 2319, + "column": 82 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -294563,16 +298246,42 @@ "binop": null, "updateContext": null }, - "start": 79712, - "end": 79713, + "start": 80276, + "end": 80277, "loc": { "start": { - "line": 2308, - "column": 18 + "line": 2319, + "column": 82 }, "end": { - "line": 2308, - "column": 19 + "line": 2319, + "column": 83 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "primitive", + "start": 80277, + "end": 80286, + "loc": { + "start": { + "line": 2319, + "column": 83 + }, + "end": { + "line": 2319, + "column": 92 } } }, @@ -294588,23 +298297,22 @@ "postfix": false, "binop": null }, - "start": 79722, - "end": 79723, + "start": 80286, + "end": 80287, "loc": { "start": { - "line": 2309, - "column": 8 + "line": 2319, + "column": 92 }, "end": { - "line": 2309, - "column": 9 + "line": 2319, + "column": 93 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -294615,24 +298323,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 79732, - "end": 79734, + "value": "' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.", + "start": 80287, + "end": 80393, "loc": { "start": { - "line": 2310, - "column": 8 + "line": 2319, + "column": 93 }, "end": { - "line": 2310, - "column": 10 + "line": 2319, + "column": 199 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "`", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -294641,25 +298349,49 @@ "postfix": false, "binop": null }, - "start": 79735, - "end": 79736, + "start": 80393, + "end": 80394, "loc": { "start": { - "line": 2310, - "column": 11 + "line": 2319, + "column": 199 }, "end": { - "line": 2310, - "column": 12 + "line": 2319, + "column": 200 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 80394, + "end": 80395, + "loc": { + "start": { + "line": 2319, + "column": 200 + }, + "end": { + "line": 2319, + "column": 201 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -294668,24 +298400,51 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 79736, - "end": 79740, + "start": 80395, + "end": 80396, "loc": { "start": { - "line": 2310, + "line": 2319, + "column": 201 + }, + "end": { + "line": 2319, + "column": 202 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 80409, + "end": 80415, + "loc": { + "start": { + "line": 2320, "column": 12 }, "end": { - "line": 2310, - "column": 16 + "line": 2320, + "column": 18 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -294695,24 +298454,24 @@ "binop": null, "updateContext": null }, - "start": 79740, - "end": 79741, + "start": 80415, + "end": 80416, "loc": { "start": { - "line": 2310, - "column": 16 + "line": 2320, + "column": 18 }, "end": { - "line": 2310, - "column": 17 + "line": 2320, + "column": 19 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -294720,25 +298479,25 @@ "postfix": false, "binop": null }, - "value": "_geometries", - "start": 79741, - "end": 79752, + "start": 80425, + "end": 80426, "loc": { "start": { - "line": 2310, - "column": 17 + "line": 2321, + "column": 8 }, "end": { - "line": 2310, - "column": 28 + "line": 2321, + "column": 9 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -294747,23 +298506,24 @@ "binop": null, "updateContext": null }, - "start": 79752, - "end": 79753, + "value": "if", + "start": 80435, + "end": 80437, "loc": { "start": { - "line": 2310, - "column": 28 + "line": 2322, + "column": 8 }, "end": { - "line": 2310, - "column": 29 + "line": 2322, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -294772,43 +298532,43 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 79753, - "end": 79756, + "start": 80438, + "end": 80439, "loc": { "start": { - "line": 2310, - "column": 29 + "line": 2322, + "column": 11 }, "end": { - "line": 2310, - "column": 32 + "line": 2322, + "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": 79756, - "end": 79757, + "value": "!", + "start": 80439, + "end": 80440, "loc": { "start": { - "line": 2310, - "column": 32 + "line": 2322, + "column": 12 }, "end": { - "line": 2310, - "column": 33 + "line": 2322, + "column": 13 } } }, @@ -294824,23 +298584,23 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 79757, - "end": 79759, + "value": "cfg", + "start": 80440, + "end": 80443, "loc": { "start": { - "line": 2310, - "column": 33 + "line": 2322, + "column": 13 }, "end": { - "line": 2310, - "column": 35 + "line": 2322, + "column": 16 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -294851,24 +298611,24 @@ "binop": null, "updateContext": null }, - "start": 79759, - "end": 79760, + "start": 80443, + "end": 80444, "loc": { "start": { - "line": 2310, - "column": 35 + "line": 2322, + "column": 16 }, "end": { - "line": 2310, - "column": 36 + "line": 2322, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -294876,128 +298636,130 @@ "postfix": false, "binop": null }, - "start": 79760, - "end": 79761, + "value": "positions", + "start": 80444, + "end": 80453, "loc": { "start": { - "line": 2310, - "column": 36 + "line": 2322, + "column": 17 }, "end": { - "line": 2310, - "column": 37 + "line": 2322, + "column": 26 } } }, { "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": 79762, - "end": 79763, + "value": "&&", + "start": 80454, + "end": 80456, "loc": { "start": { - "line": 2310, - "column": 38 + "line": 2322, + "column": 27 }, "end": { - "line": 2310, - "column": 39 + "line": 2322, + "column": 29 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "this", - "start": 79776, - "end": 79780, + "value": "!", + "start": 80457, + "end": 80458, "loc": { "start": { - "line": 2311, - "column": 12 + "line": 2322, + "column": 30 }, "end": { - "line": 2311, - "column": 16 + "line": 2322, + "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": 79780, - "end": 79781, + "value": "cfg", + "start": 80458, + "end": 80461, "loc": { "start": { - "line": 2311, - "column": 16 + "line": 2322, + "column": 31 }, "end": { - "line": 2311, - "column": 17 + "line": 2322, + "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": "error", - "start": 79781, - "end": 79786, + "start": 80461, + "end": 80462, "loc": { "start": { - "line": 2311, - "column": 17 + "line": 2322, + "column": 34 }, "end": { - "line": 2311, - "column": 22 + "line": 2322, + "column": 35 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -295006,49 +298768,50 @@ "postfix": false, "binop": null }, - "start": 79786, - "end": 79787, + "value": "positionsCompressed", + "start": 80462, + "end": 80481, "loc": { "start": { - "line": 2311, - "column": 22 + "line": 2322, + "column": 35 }, "end": { - "line": 2311, - "column": 23 + "line": 2322, + "column": 54 } } }, { "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": 2, "updateContext": null }, - "value": "[createGeometry] Geometry already created: ", - "start": 79787, - "end": 79832, + "value": "&&", + "start": 80482, + "end": 80484, "loc": { "start": { - "line": 2311, - "column": 23 + "line": 2322, + "column": 55 }, "end": { - "line": 2311, - "column": 68 + "line": 2322, + "column": 57 } } }, { "type": { - "label": "+/-", + "label": "prefix", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -295056,20 +298819,20 @@ "isAssign": false, "prefix": true, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 79833, - "end": 79834, + "value": "!", + "start": 80485, + "end": 80486, "loc": { "start": { - "line": 2311, - "column": 69 + "line": 2322, + "column": 58 }, "end": { - "line": 2311, - "column": 70 + "line": 2322, + "column": 59 } } }, @@ -295086,16 +298849,16 @@ "binop": null }, "value": "cfg", - "start": 79835, - "end": 79838, + "start": 80486, + "end": 80489, "loc": { "start": { - "line": 2311, - "column": 71 + "line": 2322, + "column": 59 }, "end": { - "line": 2311, - "column": 74 + "line": 2322, + "column": 62 } } }, @@ -295112,16 +298875,16 @@ "binop": null, "updateContext": null }, - "start": 79838, - "end": 79839, + "start": 80489, + "end": 80490, "loc": { "start": { - "line": 2311, - "column": 74 + "line": 2322, + "column": 62 }, "end": { - "line": 2311, - "column": 75 + "line": 2322, + "column": 63 } } }, @@ -295137,17 +298900,17 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 79839, - "end": 79841, + "value": "buckets", + "start": 80490, + "end": 80497, "loc": { "start": { - "line": 2311, - "column": 75 + "line": 2322, + "column": 63 }, "end": { - "line": 2311, - "column": 77 + "line": 2322, + "column": 70 } } }, @@ -295163,51 +298926,50 @@ "postfix": false, "binop": null }, - "start": 79841, - "end": 79842, + "start": 80497, + "end": 80498, "loc": { "start": { - "line": 2311, - "column": 77 + "line": 2322, + "column": 70 }, "end": { - "line": 2311, - "column": 78 + "line": 2322, + "column": 71 } } }, { "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": 79842, - "end": 79843, + "start": 80499, + "end": 80500, "loc": { "start": { - "line": 2311, - "column": 78 + "line": 2322, + "column": 72 }, "end": { - "line": 2311, - "column": 79 + "line": 2322, + "column": 73 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -295216,24 +298978,24 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 79856, - "end": 79862, + "value": "this", + "start": 80513, + "end": 80517, "loc": { "start": { - "line": 2312, + "line": 2323, "column": 12 }, "end": { - "line": 2312, - "column": 18 + "line": 2323, + "column": 16 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -295243,24 +299005,24 @@ "binop": null, "updateContext": null }, - "start": 79862, - "end": 79863, + "start": 80517, + "end": 80518, "loc": { "start": { - "line": 2312, - "column": 18 + "line": 2323, + "column": 16 }, "end": { - "line": 2312, - "column": 19 + "line": 2323, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -295268,77 +299030,77 @@ "postfix": false, "binop": null }, - "start": 79872, - "end": 79873, + "value": "error", + "start": 80518, + "end": 80523, "loc": { "start": { - "line": 2313, - "column": 8 + "line": 2323, + "column": 17 }, "end": { - "line": 2313, - "column": 9 + "line": 2323, + "column": 22 } } }, { "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": 79882, - "end": 79884, + "start": 80523, + "end": 80524, "loc": { "start": { - "line": 2314, - "column": 8 + "line": 2323, + "column": 22 }, "end": { - "line": 2314, - "column": 10 + "line": 2323, + "column": 23 } } }, { "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": 79885, - "end": 79886, + "value": "[createGeometry] Param expected: `positions`, `positionsCompressed' or 'buckets", + "start": 80524, + "end": 80606, "loc": { "start": { - "line": 2314, - "column": 11 + "line": 2323, + "column": 23 }, "end": { - "line": 2314, - "column": 12 + "line": 2323, + "column": 105 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -295346,24 +299108,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 79886, - "end": 79889, + "start": 80606, + "end": 80607, "loc": { "start": { - "line": 2314, - "column": 12 + "line": 2323, + "column": 105 }, "end": { - "line": 2314, - "column": 15 + "line": 2323, + "column": 106 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -295373,174 +299134,176 @@ "binop": null, "updateContext": null }, - "start": 79889, - "end": 79890, + "start": 80607, + "end": 80608, "loc": { "start": { - "line": 2314, - "column": 15 + "line": 2323, + "column": 106 }, "end": { - "line": 2314, - "column": 16 + "line": 2323, + "column": 107 } } }, { "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": "primitive", - "start": 79890, - "end": 79899, + "value": "return", + "start": 80621, + "end": 80627, "loc": { "start": { - "line": 2314, - "column": 16 + "line": 2324, + "column": 12 }, "end": { - "line": 2314, - "column": 25 + "line": 2324, + "column": 18 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, + "label": "null", + "keyword": "null", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 79900, - "end": 79903, + "value": "null", + "start": 80628, + "end": 80632, "loc": { "start": { - "line": 2314, - "column": 26 + "line": 2324, + "column": 19 }, "end": { - "line": 2314, - "column": 29 + "line": 2324, + "column": 23 } } }, { "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": "undefined", - "start": 79904, - "end": 79913, + "start": 80632, + "end": 80633, "loc": { "start": { - "line": 2314, - "column": 30 + "line": 2324, + "column": 23 }, "end": { - "line": 2314, - "column": 39 + "line": 2324, + "column": 24 } } }, { "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": 79914, - "end": 79916, + "start": 80642, + "end": 80643, "loc": { "start": { - "line": 2314, - "column": 40 + "line": 2325, + "column": 8 }, "end": { - "line": 2314, - "column": 42 + "line": 2325, + "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": "cfg", - "start": 79917, - "end": 79920, + "value": "if", + "start": 80652, + "end": 80654, "loc": { "start": { - "line": 2314, - "column": 43 + "line": 2326, + "column": 8 }, "end": { - "line": 2314, - "column": 46 + "line": 2326, + "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": 79920, - "end": 79921, + "start": 80655, + "end": 80656, "loc": { "start": { - "line": 2314, - "column": 46 + "line": 2326, + "column": 11 }, "end": { - "line": 2314, - "column": 47 + "line": 2326, + "column": 12 } } }, @@ -295556,51 +299319,49 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 79921, - "end": 79930, + "value": "cfg", + "start": 80656, + "end": 80659, "loc": { "start": { - "line": 2314, - "column": 47 + "line": 2326, + "column": 12 }, "end": { - "line": 2314, - "column": 56 + "line": 2326, + "column": 15 } } }, { "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": 79931, - "end": 79934, + "start": 80659, + "end": 80660, "loc": { "start": { - "line": 2314, - "column": 57 + "line": 2326, + "column": 15 }, "end": { - "line": 2314, - "column": 60 + "line": 2326, + "column": 16 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -295608,70 +299369,73 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 79935, - "end": 79939, + "value": "positionsCompressed", + "start": 80660, + "end": 80679, "loc": { "start": { - "line": 2314, - "column": 61 + "line": 2326, + "column": 16 }, "end": { - "line": 2314, - "column": 65 + "line": 2326, + "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": 79939, - "end": 79940, + "value": "&&", + "start": 80680, + "end": 80682, "loc": { "start": { - "line": 2314, - "column": 65 + "line": 2326, + "column": 36 }, "end": { - "line": 2314, - "column": 66 + "line": 2326, + "column": 38 } } }, { "type": { - "label": "{", + "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": 79941, - "end": 79942, + "value": "!", + "start": 80683, + "end": 80684, "loc": { "start": { - "line": 2314, - "column": 67 + "line": 2326, + "column": 39 }, "end": { - "line": 2314, - "column": 68 + "line": 2326, + "column": 40 } } }, @@ -295688,16 +299452,16 @@ "binop": null }, "value": "cfg", - "start": 79955, - "end": 79958, + "start": 80684, + "end": 80687, "loc": { "start": { - "line": 2315, - "column": 12 + "line": 2326, + "column": 40 }, "end": { - "line": 2315, - "column": 15 + "line": 2326, + "column": 43 } } }, @@ -295714,16 +299478,16 @@ "binop": null, "updateContext": null }, - "start": 79958, - "end": 79959, + "start": 80687, + "end": 80688, "loc": { "start": { - "line": 2315, - "column": 15 + "line": 2326, + "column": 43 }, "end": { - "line": 2315, - "column": 16 + "line": 2326, + "column": 44 } } }, @@ -295739,50 +299503,77 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 79959, - "end": 79968, + "value": "positionsDecodeMatrix", + "start": 80688, + "end": 80709, "loc": { "start": { - "line": 2315, - "column": 16 + "line": 2326, + "column": 44 }, "end": { - "line": 2315, - "column": 25 + "line": 2326, + "column": 65 } } }, { "type": { - "label": "=", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 80710, + "end": 80712, + "loc": { + "start": { + "line": 2326, + "column": 66 + }, + "end": { + "line": 2326, + "column": 68 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 79969, - "end": 79970, + "value": "!", + "start": 80713, + "end": 80714, "loc": { "start": { - "line": 2315, - "column": 26 + "line": 2326, + "column": 69 }, "end": { - "line": 2315, - "column": 27 + "line": 2326, + "column": 70 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -295790,27 +299581,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "triangles", - "start": 79971, - "end": 79982, + "value": "cfg", + "start": 80714, + "end": 80717, "loc": { "start": { - "line": 2315, - "column": 28 + "line": 2326, + "column": 70 }, "end": { - "line": 2315, - "column": 39 + "line": 2326, + "column": 73 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -295820,24 +299610,24 @@ "binop": null, "updateContext": null }, - "start": 79982, - "end": 79983, + "start": 80717, + "end": 80718, "loc": { "start": { - "line": 2315, - "column": 39 + "line": 2326, + "column": 73 }, "end": { - "line": 2315, - "column": 40 + "line": 2326, + "column": 74 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -295845,23 +299635,23 @@ "postfix": false, "binop": null }, - "start": 79992, - "end": 79993, + "value": "positionsDecodeBoundary", + "start": 80718, + "end": 80741, "loc": { "start": { - "line": 2316, - "column": 8 + "line": 2326, + "column": 74 }, "end": { - "line": 2316, - "column": 9 + "line": 2326, + "column": 97 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -295869,26 +299659,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 80002, - "end": 80004, + "start": 80741, + "end": 80742, "loc": { "start": { - "line": 2317, - "column": 8 + "line": 2326, + "column": 97 }, "end": { - "line": 2317, - "column": 10 + "line": 2326, + "column": 98 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -295898,22 +299686,23 @@ "postfix": false, "binop": null }, - "start": 80005, - "end": 80006, + "start": 80743, + "end": 80744, "loc": { "start": { - "line": 2317, - "column": 11 + "line": 2326, + "column": 99 }, "end": { - "line": 2317, - "column": 12 + "line": 2326, + "column": 100 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -295921,19 +299710,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 80006, - "end": 80009, + "value": "this", + "start": 80757, + "end": 80761, "loc": { "start": { - "line": 2317, + "line": 2327, "column": 12 }, "end": { - "line": 2317, - "column": 15 + "line": 2327, + "column": 16 } } }, @@ -295950,16 +299740,16 @@ "binop": null, "updateContext": null }, - "start": 80009, - "end": 80010, + "start": 80761, + "end": 80762, "loc": { "start": { - "line": 2317, - "column": 15 + "line": 2327, + "column": 16 }, "end": { - "line": 2317, - "column": 16 + "line": 2327, + "column": 17 } } }, @@ -295975,44 +299765,42 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 80010, - "end": 80019, + "value": "error", + "start": 80762, + "end": 80767, "loc": { "start": { - "line": 2317, - "column": 16 + "line": 2327, + "column": 17 }, "end": { - "line": 2317, - "column": 25 + "line": 2327, + "column": 22 } } }, { "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": 80020, - "end": 80023, + "start": 80767, + "end": 80768, "loc": { "start": { - "line": 2317, - "column": 26 + "line": 2327, + "column": 22 }, "end": { - "line": 2317, - "column": 29 + "line": 2327, + "column": 23 } } }, @@ -296029,77 +299817,76 @@ "binop": null, "updateContext": null }, - "value": "points", - "start": 80024, - "end": 80032, + "value": "[createGeometry] Param expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')", + "start": 80768, + "end": 80892, "loc": { "start": { - "line": 2317, - "column": 30 + "line": 2327, + "column": 23 }, "end": { - "line": 2317, - "column": 38 + "line": 2327, + "column": 147 } } }, { "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": 80033, - "end": 80035, + "start": 80892, + "end": 80893, "loc": { "start": { - "line": 2317, - "column": 39 + "line": 2327, + "column": 147 }, "end": { - "line": 2317, - "column": 41 + "line": 2327, + "column": 148 } } }, { "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": "cfg", - "start": 80036, - "end": 80039, + "start": 80893, + "end": 80894, "loc": { "start": { - "line": 2317, - "column": 42 + "line": 2327, + "column": 148 }, "end": { - "line": 2317, - "column": 45 + "line": 2327, + "column": 149 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -296109,22 +299896,24 @@ "binop": null, "updateContext": null }, - "start": 80039, - "end": 80040, + "value": "return", + "start": 80907, + "end": 80913, "loc": { "start": { - "line": 2317, - "column": 45 + "line": 2328, + "column": 12 }, "end": { - "line": 2317, - "column": 46 + "line": 2328, + "column": 18 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -296132,25 +299921,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "primitive", - "start": 80040, - "end": 80049, + "value": "null", + "start": 80914, + "end": 80918, "loc": { "start": { - "line": 2317, - "column": 46 + "line": 2328, + "column": 19 }, "end": { - "line": 2317, - "column": 55 + "line": 2328, + "column": 23 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -296158,28 +299948,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 80050, - "end": 80053, + "start": 80918, + "end": 80919, "loc": { "start": { - "line": 2317, - "column": 56 + "line": 2328, + "column": 23 }, "end": { - "line": 2317, - "column": 59 + "line": 2328, + "column": 24 } } }, { "type": { - "label": "string", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 80928, + "end": 80929, + "loc": { + "start": { + "line": 2329, + "column": 8 + }, + "end": { + "line": 2329, + "column": 9 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -296188,44 +300003,42 @@ "binop": null, "updateContext": null }, - "value": "lines", - "start": 80054, - "end": 80061, + "value": "if", + "start": 80938, + "end": 80940, "loc": { "start": { - "line": 2317, - "column": 60 + "line": 2330, + "column": 8 }, "end": { - "line": 2317, - "column": 67 + "line": 2330, + "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": 80062, - "end": 80064, + "start": 80941, + "end": 80942, "loc": { "start": { - "line": 2317, - "column": 68 + "line": 2330, + "column": 11 }, "end": { - "line": 2317, - "column": 70 + "line": 2330, + "column": 12 } } }, @@ -296242,16 +300055,16 @@ "binop": null }, "value": "cfg", - "start": 80065, - "end": 80068, + "start": 80942, + "end": 80945, "loc": { "start": { - "line": 2317, - "column": 71 + "line": 2330, + "column": 12 }, "end": { - "line": 2317, - "column": 74 + "line": 2330, + "column": 15 } } }, @@ -296268,16 +300081,16 @@ "binop": null, "updateContext": null }, - "start": 80068, - "end": 80069, + "start": 80945, + "end": 80946, "loc": { "start": { - "line": 2317, - "column": 74 + "line": 2330, + "column": 15 }, "end": { - "line": 2317, - "column": 75 + "line": 2330, + "column": 16 } } }, @@ -296293,23 +300106,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 80069, - "end": 80078, + "value": "positionsDecodeMatrix", + "start": 80946, + "end": 80967, "loc": { "start": { - "line": 2317, - "column": 75 + "line": 2330, + "column": 16 }, "end": { - "line": 2317, - "column": 84 + "line": 2330, + "column": 37 } } }, { "type": { - "label": "==/!=", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -296317,26 +300130,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": 2, "updateContext": null }, - "value": "!==", - "start": 80079, - "end": 80082, + "value": "&&", + "start": 80968, + "end": 80970, "loc": { "start": { - "line": 2317, - "column": 85 + "line": 2330, + "column": 38 }, "end": { - "line": 2317, - "column": 88 + "line": 2330, + "column": 40 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -296344,47 +300157,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "triangles", - "start": 80083, - "end": 80094, + "value": "cfg", + "start": 80971, + "end": 80974, "loc": { "start": { - "line": 2317, - "column": 89 + "line": 2330, + "column": 41 }, "end": { - "line": 2317, - "column": 100 + "line": 2330, + "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": 80095, - "end": 80097, + "start": 80974, + "end": 80975, "loc": { "start": { - "line": 2317, - "column": 101 + "line": 2330, + "column": 44 }, "end": { - "line": 2317, - "column": 103 + "line": 2330, + "column": 45 } } }, @@ -296400,23 +300211,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 80098, - "end": 80101, + "value": "positionsDecodeBoundary", + "start": 80975, + "end": 80998, "loc": { "start": { - "line": 2317, - "column": 104 + "line": 2330, + "column": 45 }, "end": { - "line": 2317, - "column": 107 + "line": 2330, + "column": 68 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -296424,26 +300235,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 80101, - "end": 80102, + "start": 80998, + "end": 80999, "loc": { "start": { - "line": 2317, - "column": 107 + "line": 2330, + "column": 68 }, "end": { - "line": 2317, - "column": 108 + "line": 2330, + "column": 69 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -296452,52 +300262,52 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 80102, - "end": 80111, + "start": 81000, + "end": 81001, "loc": { "start": { - "line": 2317, - "column": 108 + "line": 2330, + "column": 70 }, "end": { - "line": 2317, - "column": 117 + "line": 2330, + "column": 71 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 80112, - "end": 80115, + "value": "this", + "start": 81014, + "end": 81018, "loc": { "start": { - "line": 2317, - "column": 118 + "line": 2331, + "column": 12 }, "end": { - "line": 2317, - "column": 121 + "line": 2331, + "column": 16 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -296506,51 +300316,49 @@ "binop": null, "updateContext": null }, - "value": "solid", - "start": 80116, - "end": 80123, + "start": 81018, + "end": 81019, "loc": { "start": { - "line": 2317, - "column": 122 + "line": 2331, + "column": 16 }, "end": { - "line": 2317, - "column": 129 + "line": 2331, + "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": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 80124, - "end": 80126, + "value": "error", + "start": 81019, + "end": 81024, "loc": { "start": { - "line": 2317, - "column": 130 + "line": 2331, + "column": 17 }, "end": { - "line": 2317, - "column": 132 + "line": 2331, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -296559,25 +300367,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 80127, - "end": 80130, + "start": 81024, + "end": 81025, "loc": { "start": { - "line": 2317, - "column": 133 + "line": 2331, + "column": 22 }, "end": { - "line": 2317, - "column": 136 + "line": 2331, + "column": 23 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -296586,24 +300393,25 @@ "binop": null, "updateContext": null }, - "start": 80130, - "end": 80131, + "value": "[createGeometry] Only one of these params expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')", + "start": 81025, + "end": 81168, "loc": { "start": { - "line": 2317, - "column": 136 + "line": 2331, + "column": 23 }, "end": { - "line": 2317, - "column": 137 + "line": 2331, + "column": 166 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -296611,23 +300419,22 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 80131, - "end": 80140, + "start": 81168, + "end": 81169, "loc": { "start": { - "line": 2317, - "column": 137 + "line": 2331, + "column": 166 }, "end": { - "line": 2317, - "column": 146 + "line": 2331, + "column": 167 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -296635,28 +300442,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 80141, - "end": 80144, + "start": 81169, + "end": 81170, "loc": { "start": { - "line": 2317, - "column": 147 + "line": 2331, + "column": 167 }, "end": { - "line": 2317, - "column": 150 + "line": 2331, + "column": 168 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -296665,101 +300472,103 @@ "binop": null, "updateContext": null }, - "value": "surface", - "start": 80145, - "end": 80154, + "value": "return", + "start": 81183, + "end": 81189, "loc": { "start": { - "line": 2317, - "column": 151 + "line": 2332, + "column": 12 }, "end": { - "line": 2317, - "column": 160 + "line": 2332, + "column": 18 } } }, { "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": 80154, - "end": 80155, + "value": "null", + "start": 81190, + "end": 81194, "loc": { "start": { - "line": 2317, - "column": 160 + "line": 2332, + "column": 19 }, "end": { - "line": 2317, - "column": 161 + "line": 2332, + "column": 23 } } }, { "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": 80156, - "end": 80157, + "start": 81194, + "end": 81195, "loc": { "start": { - "line": 2317, - "column": 162 + "line": 2332, + "column": 23 }, "end": { - "line": 2317, - "column": 163 + "line": 2332, + "column": 24 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 80170, - "end": 80174, + "start": 81204, + "end": 81205, "loc": { "start": { - "line": 2318, - "column": 12 + "line": 2333, + "column": 8 }, "end": { - "line": 2318, - "column": 16 + "line": 2333, + "column": 9 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -296770,23 +300579,24 @@ "binop": null, "updateContext": null }, - "start": 80174, - "end": 80175, + "value": "if", + "start": 81214, + "end": 81216, "loc": { "start": { - "line": 2318, - "column": 16 + "line": 2334, + "column": 8 }, "end": { - "line": 2318, - "column": 17 + "line": 2334, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -296795,24 +300605,23 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 80175, - "end": 80180, + "start": 81217, + "end": 81218, "loc": { "start": { - "line": 2318, - "column": 17 + "line": 2334, + "column": 11 }, "end": { - "line": 2318, - "column": 22 + "line": 2334, + "column": 12 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -296821,22 +300630,49 @@ "postfix": false, "binop": null }, - "start": 80180, - "end": 80181, + "value": "cfg", + "start": 81218, + "end": 81221, "loc": { "start": { - "line": 2318, - "column": 22 + "line": 2334, + "column": 12 }, "end": { - "line": 2318, - "column": 23 + "line": 2334, + "column": 15 } } }, { "type": { - "label": "`", + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 81221, + "end": 81222, + "loc": { + "start": { + "line": 2334, + "column": 15 + }, + "end": { + "line": 2334, + "column": 16 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -296846,68 +300682,71 @@ "postfix": false, "binop": null }, - "start": 80181, - "end": 80182, + "value": "uvCompressed", + "start": 81222, + "end": 81234, "loc": { "start": { - "line": 2318, - "column": 23 + "line": 2334, + "column": 16 }, "end": { - "line": 2318, - "column": 24 + "line": 2334, + "column": 28 } } }, { "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": "[createGeometry] Unsupported value for 'primitive': '", - "start": 80182, - "end": 80235, + "value": "&&", + "start": 81235, + "end": 81237, "loc": { "start": { - "line": 2318, - "column": 24 + "line": 2334, + "column": 29 }, "end": { - "line": 2318, - "column": 77 + "line": 2334, + "column": 31 } } }, { "type": { - "label": "${", + "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": 80235, - "end": 80237, + "value": "!", + "start": 81238, + "end": 81239, "loc": { "start": { - "line": 2318, - "column": 77 + "line": 2334, + "column": 32 }, "end": { - "line": 2318, - "column": 79 + "line": 2334, + "column": 33 } } }, @@ -296924,16 +300763,16 @@ "binop": null }, "value": "cfg", - "start": 80237, - "end": 80240, + "start": 81239, + "end": 81242, "loc": { "start": { - "line": 2318, - "column": 79 + "line": 2334, + "column": 33 }, "end": { - "line": 2318, - "column": 82 + "line": 2334, + "column": 36 } } }, @@ -296950,16 +300789,16 @@ "binop": null, "updateContext": null }, - "start": 80240, - "end": 80241, + "start": 81242, + "end": 81243, "loc": { "start": { - "line": 2318, - "column": 82 + "line": 2334, + "column": 36 }, "end": { - "line": 2318, - "column": 83 + "line": 2334, + "column": 37 } } }, @@ -296975,23 +300814,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 80241, - "end": 80250, + "value": "uvDecodeMatrix", + "start": 81243, + "end": 81257, "loc": { "start": { - "line": 2318, - "column": 83 + "line": 2334, + "column": 37 }, "end": { - "line": 2318, - "column": 92 + "line": 2334, + "column": 51 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -297001,49 +300840,48 @@ "postfix": false, "binop": null }, - "start": 80250, - "end": 80251, + "start": 81257, + "end": 81258, "loc": { "start": { - "line": 2318, - "column": 92 + "line": 2334, + "column": 51 }, "end": { - "line": 2318, - "column": 93 + "line": 2334, + "column": 52 } } }, { "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": "' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.", - "start": 80251, - "end": 80357, + "start": 81259, + "end": 81260, "loc": { "start": { - "line": 2318, - "column": 93 + "line": 2334, + "column": 53 }, "end": { - "line": 2318, - "column": 199 + "line": 2334, + "column": 54 } } }, { "type": { - "label": "`", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -297051,24 +300889,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 80357, - "end": 80358, + "value": "this", + "start": 81273, + "end": 81277, "loc": { "start": { - "line": 2318, - "column": 199 + "line": 2335, + "column": 12 }, "end": { - "line": 2318, - "column": 200 + "line": 2335, + "column": 16 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -297076,80 +300916,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 80358, - "end": 80359, + "start": 81277, + "end": 81278, "loc": { "start": { - "line": 2318, - "column": 200 + "line": 2335, + "column": 16 }, "end": { - "line": 2318, - "column": 201 + "line": 2335, + "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": 80359, - "end": 80360, + "value": "error", + "start": 81278, + "end": 81283, "loc": { "start": { - "line": 2318, - "column": 201 + "line": 2335, + "column": 17 }, "end": { - "line": 2318, - "column": 202 + "line": 2335, + "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": 80373, - "end": 80379, + "start": 81283, + "end": 81284, "loc": { "start": { - "line": 2319, - "column": 12 + "line": 2335, + "column": 22 }, "end": { - "line": 2319, - "column": 18 + "line": 2335, + "column": 23 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -297158,22 +300996,23 @@ "binop": null, "updateContext": null }, - "start": 80379, - "end": 80380, + "value": "[createGeometry] Param expected: `uvDecodeMatrix` (required for `uvCompressed')", + "start": 81284, + "end": 81365, "loc": { "start": { - "line": 2319, - "column": 18 + "line": 2335, + "column": 23 }, "end": { - "line": 2319, - "column": 19 + "line": 2335, + "column": 104 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -297183,24 +301022,23 @@ "postfix": false, "binop": null }, - "start": 80389, - "end": 80390, + "start": 81365, + "end": 81366, "loc": { "start": { - "line": 2320, - "column": 8 + "line": 2335, + "column": 104 }, "end": { - "line": 2320, - "column": 9 + "line": 2335, + "column": 105 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -297210,101 +301048,104 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 80399, - "end": 80401, + "start": 81366, + "end": 81367, "loc": { "start": { - "line": 2321, - "column": 8 + "line": 2335, + "column": 105 }, "end": { - "line": 2321, - "column": 10 + "line": 2335, + "column": 106 } } }, { "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": 80402, - "end": 80403, + "value": "return", + "start": 81380, + "end": 81386, "loc": { "start": { - "line": 2321, - "column": 11 + "line": 2336, + "column": 12 }, "end": { - "line": 2321, - "column": 12 + "line": 2336, + "column": 18 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "null", + "keyword": "null", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 80403, - "end": 80404, + "value": "null", + "start": 81387, + "end": 81391, "loc": { "start": { - "line": 2321, - "column": 12 + "line": 2336, + "column": 19 }, "end": { - "line": 2321, - "column": 13 + "line": 2336, + "column": 23 } } }, { "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": "cfg", - "start": 80404, - "end": 80407, + "start": 81391, + "end": 81392, "loc": { "start": { - "line": 2321, - "column": 13 + "line": 2336, + "column": 23 }, "end": { - "line": 2321, - "column": 16 + "line": 2336, + "column": 24 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -297312,72 +301153,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 80407, - "end": 80408, + "start": 81401, + "end": 81402, "loc": { "start": { - "line": 2321, - "column": 16 + "line": 2337, + "column": 8 }, "end": { - "line": 2321, - "column": 17 + "line": 2337, + "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": "positions", - "start": 80408, - "end": 80417, + "value": "if", + "start": 81411, + "end": 81413, "loc": { "start": { - "line": 2321, - "column": 17 + "line": 2338, + "column": 8 }, "end": { - "line": 2321, - "column": 26 + "line": 2338, + "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": 80418, - "end": 80420, + "start": 81414, + "end": 81415, "loc": { "start": { - "line": 2321, - "column": 27 + "line": 2338, + "column": 11 }, "end": { - "line": 2321, - "column": 29 + "line": 2338, + "column": 12 } } }, @@ -297395,16 +301235,16 @@ "updateContext": null }, "value": "!", - "start": 80421, - "end": 80422, + "start": 81415, + "end": 81416, "loc": { "start": { - "line": 2321, - "column": 30 + "line": 2338, + "column": 12 }, "end": { - "line": 2321, - "column": 31 + "line": 2338, + "column": 13 } } }, @@ -297421,16 +301261,16 @@ "binop": null }, "value": "cfg", - "start": 80422, - "end": 80425, + "start": 81416, + "end": 81419, "loc": { "start": { - "line": 2321, - "column": 31 + "line": 2338, + "column": 13 }, "end": { - "line": 2321, - "column": 34 + "line": 2338, + "column": 16 } } }, @@ -297447,16 +301287,16 @@ "binop": null, "updateContext": null }, - "start": 80425, - "end": 80426, + "start": 81419, + "end": 81420, "loc": { "start": { - "line": 2321, - "column": 34 + "line": 2338, + "column": 16 }, "end": { - "line": 2321, - "column": 35 + "line": 2338, + "column": 17 } } }, @@ -297472,17 +301312,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 80426, - "end": 80445, + "value": "buckets", + "start": 81420, + "end": 81427, "loc": { "start": { - "line": 2321, - "column": 35 + "line": 2338, + "column": 17 }, "end": { - "line": 2321, - "column": 54 + "line": 2338, + "column": 24 } } }, @@ -297500,16 +301340,16 @@ "updateContext": null }, "value": "&&", - "start": 80446, - "end": 80448, + "start": 81428, + "end": 81430, "loc": { "start": { - "line": 2321, - "column": 55 + "line": 2338, + "column": 25 }, "end": { - "line": 2321, - "column": 57 + "line": 2338, + "column": 27 } } }, @@ -297527,16 +301367,16 @@ "updateContext": null }, "value": "!", - "start": 80449, - "end": 80450, + "start": 81431, + "end": 81432, "loc": { "start": { - "line": 2321, - "column": 58 + "line": 2338, + "column": 28 }, "end": { - "line": 2321, - "column": 59 + "line": 2338, + "column": 29 } } }, @@ -297553,16 +301393,16 @@ "binop": null }, "value": "cfg", - "start": 80450, - "end": 80453, + "start": 81432, + "end": 81435, "loc": { "start": { - "line": 2321, - "column": 59 + "line": 2338, + "column": 29 }, "end": { - "line": 2321, - "column": 62 + "line": 2338, + "column": 32 } } }, @@ -297579,16 +301419,16 @@ "binop": null, "updateContext": null }, - "start": 80453, - "end": 80454, + "start": 81435, + "end": 81436, "loc": { "start": { - "line": 2321, - "column": 62 + "line": 2338, + "column": 32 }, "end": { - "line": 2321, - "column": 63 + "line": 2338, + "column": 33 } } }, @@ -297604,48 +301444,50 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 80454, - "end": 80461, + "value": "indices", + "start": 81436, + "end": 81443, "loc": { "start": { - "line": 2321, - "column": 63 + "line": 2338, + "column": 33 }, "end": { - "line": 2321, - "column": 70 + "line": 2338, + "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": 80461, - "end": 80462, + "value": "&&", + "start": 81444, + "end": 81446, "loc": { "start": { - "line": 2321, - "column": 70 + "line": 2338, + "column": 41 }, "end": { - "line": 2321, - "column": 71 + "line": 2338, + "column": 43 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -297655,23 +301497,22 @@ "postfix": false, "binop": null }, - "start": 80463, - "end": 80464, + "start": 81447, + "end": 81448, "loc": { "start": { - "line": 2321, - "column": 72 + "line": 2338, + "column": 44 }, "end": { - "line": 2321, - "column": 73 + "line": 2338, + "column": 45 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -297679,20 +301520,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 80477, - "end": 80481, + "value": "cfg", + "start": 81448, + "end": 81451, "loc": { "start": { - "line": 2322, - "column": 12 + "line": 2338, + "column": 45 }, "end": { - "line": 2322, - "column": 16 + "line": 2338, + "column": 48 } } }, @@ -297709,16 +301549,16 @@ "binop": null, "updateContext": null }, - "start": 80481, - "end": 80482, + "start": 81451, + "end": 81452, "loc": { "start": { - "line": 2322, - "column": 16 + "line": 2338, + "column": 48 }, "end": { - "line": 2322, - "column": 17 + "line": 2338, + "column": 49 } } }, @@ -297734,42 +301574,44 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 80482, - "end": 80487, + "value": "primitive", + "start": 81452, + "end": 81461, "loc": { "start": { - "line": 2322, - "column": 17 + "line": 2338, + "column": 49 }, "end": { - "line": 2322, - "column": 22 + "line": 2338, + "column": 58 } } }, { "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": 80487, - "end": 80488, + "value": "===", + "start": 81462, + "end": 81465, "loc": { "start": { - "line": 2322, - "column": 22 + "line": 2338, + "column": 59 }, "end": { - "line": 2322, - "column": 23 + "line": 2338, + "column": 62 } } }, @@ -297786,76 +301628,77 @@ "binop": null, "updateContext": null }, - "value": "[createGeometry] Param expected: `positions`, `positionsCompressed' or 'buckets", - "start": 80488, - "end": 80570, + "value": "triangles", + "start": 81466, + "end": 81477, "loc": { "start": { - "line": 2322, - "column": 23 + "line": 2338, + "column": 63 }, "end": { - "line": 2322, - "column": 105 + "line": 2338, + "column": 74 } } }, { "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": 80570, - "end": 80571, + "value": "||", + "start": 81478, + "end": 81480, "loc": { "start": { - "line": 2322, - "column": 105 + "line": 2338, + "column": 75 }, "end": { - "line": 2322, - "column": 106 + "line": 2338, + "column": 77 } } }, { "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": 80571, - "end": 80572, + "value": "cfg", + "start": 81481, + "end": 81484, "loc": { "start": { - "line": 2322, - "column": 106 + "line": 2338, + "column": 78 }, "end": { - "line": 2322, - "column": 107 + "line": 2338, + "column": 81 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -297865,24 +301708,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 80585, - "end": 80591, + "start": 81484, + "end": 81485, "loc": { "start": { - "line": 2323, - "column": 12 + "line": 2338, + "column": 81 }, "end": { - "line": 2323, - "column": 18 + "line": 2338, + "column": 82 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -297890,26 +301731,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 80592, - "end": 80596, + "value": "primitive", + "start": 81485, + "end": 81494, "loc": { "start": { - "line": 2323, - "column": 19 + "line": 2338, + "column": 82 }, "end": { - "line": 2323, - "column": 23 + "line": 2338, + "column": 91 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -297917,79 +301757,81 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 80596, - "end": 80597, + "value": "===", + "start": 81495, + "end": 81498, "loc": { "start": { - "line": 2323, - "column": 23 + "line": 2338, + "column": 92 }, "end": { - "line": 2323, - "column": 24 + "line": 2338, + "column": 95 } } }, { "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": 80606, - "end": 80607, + "value": "solid", + "start": 81499, + "end": 81506, "loc": { "start": { - "line": 2324, - "column": 8 + "line": 2338, + "column": 96 }, "end": { - "line": 2324, - "column": 9 + "line": 2338, + "column": 103 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "||", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "if", - "start": 80616, - "end": 80618, + "value": "||", + "start": 81507, + "end": 81509, "loc": { "start": { - "line": 2325, - "column": 8 + "line": 2338, + "column": 104 }, "end": { - "line": 2325, - "column": 10 + "line": 2338, + "column": 106 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -297998,16 +301840,43 @@ "postfix": false, "binop": null }, - "start": 80619, - "end": 80620, + "value": "cfg", + "start": 81510, + "end": 81513, "loc": { "start": { - "line": 2325, - "column": 11 + "line": 2338, + "column": 107 }, "end": { - "line": 2325, - "column": 12 + "line": 2338, + "column": 110 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 81513, + "end": 81514, + "loc": { + "start": { + "line": 2338, + "column": 110 + }, + "end": { + "line": 2338, + "column": 111 } } }, @@ -298023,49 +301892,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 80620, - "end": 80623, + "value": "primitive", + "start": 81514, + "end": 81523, "loc": { "start": { - "line": 2325, - "column": 12 + "line": 2338, + "column": 111 }, "end": { - "line": 2325, - "column": 15 + "line": 2338, + "column": 120 } } }, { "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": 80623, - "end": 80624, + "value": "===", + "start": 81524, + "end": 81527, "loc": { "start": { - "line": 2325, - "column": 15 + "line": 2338, + "column": 121 }, "end": { - "line": 2325, - "column": 16 + "line": 2338, + "column": 124 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -298073,80 +301943,77 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "positionsCompressed", - "start": 80624, - "end": 80643, + "value": "surface", + "start": 81528, + "end": 81537, "loc": { "start": { - "line": 2325, - "column": 16 + "line": 2338, + "column": 125 }, "end": { - "line": 2325, - "column": 35 + "line": 2338, + "column": 134 } } }, { "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": 80644, - "end": 80646, + "start": 81537, + "end": 81538, "loc": { "start": { - "line": 2325, - "column": 36 + "line": 2338, + "column": 134 }, "end": { - "line": 2325, - "column": 38 + "line": 2338, + "column": 135 } } }, { "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": 80647, - "end": 80648, + "start": 81538, + "end": 81539, "loc": { "start": { - "line": 2325, - "column": 39 + "line": 2338, + "column": 135 }, "end": { - "line": 2325, - "column": 40 + "line": 2338, + "column": 136 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -298155,23 +302022,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 80648, - "end": 80651, + "start": 81540, + "end": 81541, "loc": { "start": { - "line": 2325, - "column": 40 + "line": 2338, + "column": 137 }, "end": { - "line": 2325, - "column": 43 + "line": 2338, + "column": 138 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -298182,16 +302049,17 @@ "binop": null, "updateContext": null }, - "start": 80651, - "end": 80652, + "value": "const", + "start": 81554, + "end": 81559, "loc": { "start": { - "line": 2325, - "column": 43 + "line": 2339, + "column": 12 }, "end": { - "line": 2325, - "column": 44 + "line": 2339, + "column": 17 } } }, @@ -298207,71 +302075,69 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 80652, - "end": 80673, + "value": "numPositions", + "start": 81560, + "end": 81572, "loc": { "start": { - "line": 2325, - "column": 44 + "line": 2339, + "column": 18 }, "end": { - "line": 2325, - "column": 65 + "line": 2339, + "column": 30 } } }, { "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": 80674, - "end": 80676, + "value": "=", + "start": 81573, + "end": 81574, "loc": { "start": { - "line": 2325, - "column": 66 + "line": 2339, + "column": 31 }, "end": { - "line": 2325, - "column": 68 + "line": 2339, + "column": 32 } } }, { "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": 80677, - "end": 80678, + "start": 81575, + "end": 81576, "loc": { "start": { - "line": 2325, - "column": 69 + "line": 2339, + "column": 33 }, "end": { - "line": 2325, - "column": 70 + "line": 2339, + "column": 34 } } }, @@ -298288,16 +302154,16 @@ "binop": null }, "value": "cfg", - "start": 80678, - "end": 80681, + "start": 81576, + "end": 81579, "loc": { "start": { - "line": 2325, - "column": 70 + "line": 2339, + "column": 34 }, "end": { - "line": 2325, - "column": 73 + "line": 2339, + "column": 37 } } }, @@ -298314,16 +302180,16 @@ "binop": null, "updateContext": null }, - "start": 80681, - "end": 80682, + "start": 81579, + "end": 81580, "loc": { "start": { - "line": 2325, - "column": 73 + "line": 2339, + "column": 37 }, "end": { - "line": 2325, - "column": 74 + "line": 2339, + "column": 38 } } }, @@ -298339,49 +302205,51 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 80682, - "end": 80705, + "value": "positions", + "start": 81580, + "end": 81589, "loc": { "start": { - "line": 2325, - "column": 74 + "line": 2339, + "column": 38 }, "end": { - "line": 2325, - "column": 97 + "line": 2339, + "column": 47 } } }, { "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": 80705, - "end": 80706, + "value": "||", + "start": 81590, + "end": 81592, "loc": { "start": { - "line": 2325, - "column": 97 + "line": 2339, + "column": 48 }, "end": { - "line": 2325, - "column": 98 + "line": 2339, + "column": 50 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -298390,25 +302258,25 @@ "postfix": false, "binop": null }, - "start": 80707, - "end": 80708, + "value": "cfg", + "start": 81593, + "end": 81596, "loc": { "start": { - "line": 2325, - "column": 99 + "line": 2339, + "column": 51 }, "end": { - "line": 2325, - "column": 100 + "line": 2339, + "column": 54 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -298417,51 +302285,50 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 80721, - "end": 80725, + "start": 81596, + "end": 81597, "loc": { "start": { - "line": 2326, - "column": 12 + "line": 2339, + "column": 54 }, "end": { - "line": 2326, - "column": 16 + "line": 2339, + "column": 55 } } }, { "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": 80725, - "end": 80726, + "value": "positionsCompressed", + "start": 81597, + "end": 81616, "loc": { "start": { - "line": 2326, - "column": 16 + "line": 2339, + "column": 55 }, "end": { - "line": 2326, - "column": 17 + "line": 2339, + "column": 74 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -298469,48 +302336,48 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 80726, - "end": 80731, + "start": 81616, + "end": 81617, "loc": { "start": { - "line": 2326, - "column": 17 + "line": 2339, + "column": 74 }, "end": { - "line": 2326, - "column": 22 + "line": 2339, + "column": 75 } } }, { "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": 80731, - "end": 80732, + "start": 81617, + "end": 81618, "loc": { "start": { - "line": 2326, - "column": 22 + "line": 2339, + "column": 75 }, "end": { - "line": 2326, - "column": 23 + "line": 2339, + "column": 76 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -298518,53 +302385,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "[createGeometry] Param expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')", - "start": 80732, - "end": 80856, + "value": "length", + "start": 81618, + "end": 81624, "loc": { "start": { - "line": 2326, - "column": 23 + "line": 2339, + "column": 76 }, "end": { - "line": 2326, - "column": 147 + "line": 2339, + "column": 82 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "/", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 10, + "updateContext": null }, - "start": 80856, - "end": 80857, + "value": "/", + "start": 81625, + "end": 81626, "loc": { "start": { - "line": 2326, - "column": 147 + "line": 2339, + "column": 83 }, "end": { - "line": 2326, - "column": 148 + "line": 2339, + "column": 84 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -298573,23 +302441,23 @@ "binop": null, "updateContext": null }, - "start": 80857, - "end": 80858, + "value": 3, + "start": 81627, + "end": 81628, "loc": { "start": { - "line": 2326, - "column": 148 + "line": 2339, + "column": 85 }, "end": { - "line": 2326, - "column": 149 + "line": 2339, + "column": 86 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -298600,24 +302468,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 80871, - "end": 80877, + "start": 81628, + "end": 81629, "loc": { "start": { - "line": 2327, - "column": 12 + "line": 2339, + "column": 86 }, "end": { - "line": 2327, - "column": 18 + "line": 2339, + "column": 87 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -298625,27 +302491,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 80878, - "end": 80882, + "value": "cfg", + "start": 81642, + "end": 81645, "loc": { "start": { - "line": 2327, - "column": 19 + "line": 2340, + "column": 12 }, "end": { - "line": 2327, - "column": 23 + "line": 2340, + "column": 15 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -298655,24 +302520,24 @@ "binop": null, "updateContext": null }, - "start": 80882, - "end": 80883, + "start": 81645, + "end": 81646, "loc": { "start": { - "line": 2327, - "column": 23 + "line": 2340, + "column": 15 }, "end": { - "line": 2327, - "column": 24 + "line": 2340, + "column": 16 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -298680,128 +302545,131 @@ "postfix": false, "binop": null }, - "start": 80892, - "end": 80893, + "value": "indices", + "start": 81646, + "end": 81653, "loc": { "start": { - "line": 2328, - "column": 8 + "line": 2340, + "column": 16 }, "end": { - "line": 2328, - "column": 9 + "line": 2340, + "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": 80902, - "end": 80904, + "value": "=", + "start": 81654, + "end": 81655, "loc": { "start": { - "line": 2329, - "column": 8 + "line": 2340, + "column": 24 }, "end": { - "line": 2329, - "column": 10 + "line": 2340, + "column": 25 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 80905, - "end": 80906, + "value": "this", + "start": 81656, + "end": 81660, "loc": { "start": { - "line": 2329, - "column": 11 + "line": 2340, + "column": 26 }, "end": { - "line": 2329, - "column": 12 + "line": 2340, + "column": 30 } } }, { "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": "cfg", - "start": 80906, - "end": 80909, + "start": 81660, + "end": 81661, "loc": { "start": { - "line": 2329, - "column": 12 + "line": 2340, + "column": 30 }, "end": { - "line": 2329, - "column": 15 + "line": 2340, + "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": 80909, - "end": 80910, + "value": "_createDefaultIndices", + "start": 81661, + "end": 81682, "loc": { "start": { - "line": 2329, - "column": 15 + "line": 2340, + "column": 31 }, "end": { - "line": 2329, - "column": 16 + "line": 2340, + "column": 52 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -298810,52 +302678,50 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 80910, - "end": 80931, + "start": 81682, + "end": 81683, "loc": { "start": { - "line": 2329, - "column": 16 + "line": 2340, + "column": 52 }, "end": { - "line": 2329, - "column": 37 + "line": 2340, + "column": 53 } } }, { "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 80932, - "end": 80934, + "value": "numPositions", + "start": 81683, + "end": 81695, "loc": { "start": { - "line": 2329, - "column": 38 + "line": 2340, + "column": 53 }, "end": { - "line": 2329, - "column": 40 + "line": 2340, + "column": 65 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -298863,24 +302729,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 80935, - "end": 80938, + "start": 81695, + "end": 81696, "loc": { "start": { - "line": 2329, - "column": 41 + "line": 2340, + "column": 65 }, "end": { - "line": 2329, - "column": 44 + "line": 2340, + "column": 66 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -298890,24 +302755,24 @@ "binop": null, "updateContext": null }, - "start": 80938, - "end": 80939, + "start": 81696, + "end": 81697, "loc": { "start": { - "line": 2329, - "column": 44 + "line": 2340, + "column": 66 }, "end": { - "line": 2329, - "column": 45 + "line": 2340, + "column": 67 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -298915,23 +302780,23 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 80939, - "end": 80962, + "start": 81706, + "end": 81707, "loc": { "start": { - "line": 2329, - "column": 45 + "line": 2341, + "column": 8 }, "end": { - "line": 2329, - "column": 68 + "line": 2341, + "column": 9 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -298939,24 +302804,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 80962, - "end": 80963, + "value": "if", + "start": 81716, + "end": 81718, "loc": { "start": { - "line": 2329, - "column": 68 + "line": 2342, + "column": 8 }, "end": { - "line": 2329, - "column": 69 + "line": 2342, + "column": 10 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -298966,43 +302833,68 @@ "postfix": false, "binop": null }, - "start": 80964, - "end": 80965, + "start": 81719, + "end": 81720, "loc": { "start": { - "line": 2329, - "column": 70 + "line": 2342, + "column": 11 }, "end": { - "line": 2329, - "column": 71 + "line": 2342, + "column": 12 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "this", - "start": 80978, - "end": 80982, + "value": "!", + "start": 81720, + "end": 81721, "loc": { "start": { - "line": 2330, + "line": 2342, "column": 12 }, "end": { - "line": 2330, + "line": 2342, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 81721, + "end": 81724, + "loc": { + "start": { + "line": 2342, + "column": 13 + }, + "end": { + "line": 2342, "column": 16 } } @@ -299020,15 +302912,15 @@ "binop": null, "updateContext": null }, - "start": 80982, - "end": 80983, + "start": 81724, + "end": 81725, "loc": { "start": { - "line": 2330, + "line": 2342, "column": 16 }, "end": { - "line": 2330, + "line": 2342, "column": 17 } } @@ -299045,77 +302937,79 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 80983, - "end": 80988, + "value": "buckets", + "start": 81725, + "end": 81732, "loc": { "start": { - "line": 2330, + "line": 2342, "column": 17 }, "end": { - "line": 2330, - "column": 22 + "line": 2342, + "column": 24 } } }, { "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": 80988, - "end": 80989, + "value": "&&", + "start": 81733, + "end": 81735, "loc": { "start": { - "line": 2330, - "column": 22 + "line": 2342, + "column": 25 }, "end": { - "line": 2330, - "column": 23 + "line": 2342, + "column": 27 } } }, { "type": { - "label": "string", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "[createGeometry] Only one of these params expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')", - "start": 80989, - "end": 81132, + "value": "!", + "start": 81736, + "end": 81737, "loc": { "start": { - "line": 2330, - "column": 23 + "line": 2342, + "column": 28 }, "end": { - "line": 2330, - "column": 166 + "line": 2342, + "column": 29 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -299123,23 +303017,24 @@ "postfix": false, "binop": null }, - "start": 81132, - "end": 81133, + "value": "cfg", + "start": 81737, + "end": 81740, "loc": { "start": { - "line": 2330, - "column": 166 + "line": 2342, + "column": 29 }, "end": { - "line": 2330, - "column": 167 + "line": 2342, + "column": 32 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -299149,104 +303044,101 @@ "binop": null, "updateContext": null }, - "start": 81133, - "end": 81134, + "start": 81740, + "end": 81741, "loc": { "start": { - "line": 2330, - "column": 167 + "line": 2342, + "column": 32 }, "end": { - "line": 2330, - "column": 168 + "line": 2342, + "column": 33 } } }, { "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": 81147, - "end": 81153, + "value": "indices", + "start": 81741, + "end": 81748, "loc": { "start": { - "line": 2331, - "column": 12 + "line": 2342, + "column": 33 }, "end": { - "line": 2331, - "column": 18 + "line": 2342, + "column": 40 } } }, { "type": { - "label": "null", - "keyword": "null", - "beforeExpr": false, - "startsExpr": true, + "label": "&&", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "null", - "start": 81154, - "end": 81158, + "value": "&&", + "start": 81749, + "end": 81751, "loc": { "start": { - "line": 2331, - "column": 19 + "line": 2342, + "column": 41 }, "end": { - "line": 2331, - "column": 23 + "line": 2342, + "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": 81158, - "end": 81159, + "value": "cfg", + "start": 81752, + "end": 81755, "loc": { "start": { - "line": 2331, - "column": 23 + "line": 2342, + "column": 44 }, "end": { - "line": 2331, - "column": 24 + "line": 2342, + "column": 47 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -299254,77 +303146,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 81168, - "end": 81169, + "start": 81755, + "end": 81756, "loc": { "start": { - "line": 2332, - "column": 8 + "line": 2342, + "column": 47 }, "end": { - "line": 2332, - "column": 9 + "line": 2342, + "column": 48 } } }, { "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": 81178, - "end": 81180, + "value": "primitive", + "start": 81756, + "end": 81765, "loc": { "start": { - "line": 2333, - "column": 8 + "line": 2342, + "column": 48 }, "end": { - "line": 2333, - "column": 10 + "line": 2342, + "column": 57 } } }, { "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": 81181, - "end": 81182, + "value": "!==", + "start": 81766, + "end": 81769, "loc": { "start": { - "line": 2333, - "column": 11 + "line": 2342, + "column": 58 }, "end": { - "line": 2333, - "column": 12 + "line": 2342, + "column": 61 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -299332,25 +303225,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 81182, - "end": 81185, + "value": "points", + "start": 81770, + "end": 81778, "loc": { "start": { - "line": 2333, - "column": 12 + "line": 2342, + "column": 62 }, "end": { - "line": 2333, - "column": 15 + "line": 2342, + "column": 70 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -299358,26 +303252,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 81185, - "end": 81186, + "start": 81778, + "end": 81779, "loc": { "start": { - "line": 2333, - "column": 15 + "line": 2342, + "column": 70 }, "end": { - "line": 2333, - "column": 16 + "line": 2342, + "column": 71 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -299386,71 +303279,70 @@ "postfix": false, "binop": null }, - "value": "uvCompressed", - "start": 81186, - "end": 81198, + "start": 81780, + "end": 81781, "loc": { "start": { - "line": 2333, - "column": 16 + "line": 2342, + "column": 72 }, "end": { - "line": 2333, - "column": 28 + "line": 2342, + "column": 73 } } }, { "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 81199, - "end": 81201, + "value": "this", + "start": 81794, + "end": 81798, "loc": { "start": { - "line": 2333, - "column": 29 + "line": 2343, + "column": 12 }, "end": { - "line": 2333, - "column": 31 + "line": 2343, + "column": 16 } } }, { "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": 81202, - "end": 81203, + "start": 81798, + "end": 81799, "loc": { "start": { - "line": 2333, - "column": 32 + "line": 2343, + "column": 16 }, "end": { - "line": 2333, - "column": 33 + "line": 2343, + "column": 17 } } }, @@ -299466,49 +303358,48 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 81203, - "end": 81206, + "value": "error", + "start": 81799, + "end": 81804, "loc": { "start": { - "line": 2333, - "column": 33 + "line": 2343, + "column": 17 }, "end": { - "line": 2333, - "column": 36 + "line": 2343, + "column": 22 } } }, { "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": 81206, - "end": 81207, + "start": 81804, + "end": 81805, "loc": { "start": { - "line": 2333, - "column": 36 + "line": 2343, + "column": 22 }, "end": { - "line": 2333, - "column": 37 + "line": 2343, + "column": 23 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -299518,23 +303409,22 @@ "postfix": false, "binop": null }, - "value": "uvDecodeMatrix", - "start": 81207, - "end": 81221, + "start": 81805, + "end": 81806, "loc": { "start": { - "line": 2333, - "column": 37 + "line": 2343, + "column": 23 }, "end": { - "line": 2333, - "column": 51 + "line": 2343, + "column": 24 } } }, { "type": { - "label": ")", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -299542,24 +303432,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 81221, - "end": 81222, + "value": "[createGeometry] Param expected: indices (required for '", + "start": 81806, + "end": 81862, "loc": { "start": { - "line": 2333, - "column": 51 + "line": 2343, + "column": 24 }, "end": { - "line": 2333, - "column": 52 + "line": 2343, + "column": 80 } } }, { "type": { - "label": "{", + "label": "${", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -299569,23 +303461,22 @@ "postfix": false, "binop": null }, - "start": 81223, - "end": 81224, + "start": 81862, + "end": 81864, "loc": { "start": { - "line": 2333, - "column": 53 + "line": 2343, + "column": 80 }, "end": { - "line": 2333, - "column": 54 + "line": 2343, + "column": 82 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -299593,20 +303484,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 81237, - "end": 81241, + "value": "cfg", + "start": 81864, + "end": 81867, "loc": { "start": { - "line": 2334, - "column": 12 + "line": 2343, + "column": 82 }, "end": { - "line": 2334, - "column": 16 + "line": 2343, + "column": 85 } } }, @@ -299623,16 +303513,16 @@ "binop": null, "updateContext": null }, - "start": 81241, - "end": 81242, + "start": 81867, + "end": 81868, "loc": { "start": { - "line": 2334, - "column": 16 + "line": 2343, + "column": 85 }, "end": { - "line": 2334, - "column": 17 + "line": 2343, + "column": 86 } } }, @@ -299648,25 +303538,25 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 81242, - "end": 81247, + "value": "primitive", + "start": 81868, + "end": 81877, "loc": { "start": { - "line": 2334, - "column": 17 + "line": 2343, + "column": 86 }, "end": { - "line": 2334, - "column": 22 + "line": 2343, + "column": 95 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -299674,24 +303564,24 @@ "postfix": false, "binop": null }, - "start": 81247, - "end": 81248, + "start": 81877, + "end": 81878, "loc": { "start": { - "line": 2334, - "column": 22 + "line": 2343, + "column": 95 }, "end": { - "line": 2334, - "column": 23 + "line": 2343, + "column": 96 } } }, { "type": { - "label": "string", + "label": "template", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -299700,17 +303590,42 @@ "binop": null, "updateContext": null }, - "value": "[createGeometry] Param expected: `uvDecodeMatrix` (required for `uvCompressed')", - "start": 81248, - "end": 81329, + "value": "' primitive type)", + "start": 81878, + "end": 81895, "loc": { "start": { - "line": 2334, - "column": 23 + "line": 2343, + "column": 96 }, "end": { - "line": 2334, - "column": 104 + "line": 2343, + "column": 113 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 81895, + "end": 81896, + "loc": { + "start": { + "line": 2343, + "column": 113 + }, + "end": { + "line": 2343, + "column": 114 } } }, @@ -299726,16 +303641,16 @@ "postfix": false, "binop": null }, - "start": 81329, - "end": 81330, + "start": 81896, + "end": 81897, "loc": { "start": { - "line": 2334, - "column": 104 + "line": 2343, + "column": 114 }, "end": { - "line": 2334, - "column": 105 + "line": 2343, + "column": 115 } } }, @@ -299752,16 +303667,16 @@ "binop": null, "updateContext": null }, - "start": 81330, - "end": 81331, + "start": 81897, + "end": 81898, "loc": { "start": { - "line": 2334, - "column": 105 + "line": 2343, + "column": 115 }, "end": { - "line": 2334, - "column": 106 + "line": 2343, + "column": 116 } } }, @@ -299780,15 +303695,15 @@ "updateContext": null }, "value": "return", - "start": 81344, - "end": 81350, + "start": 81911, + "end": 81917, "loc": { "start": { - "line": 2335, + "line": 2344, "column": 12 }, "end": { - "line": 2335, + "line": 2344, "column": 18 } } @@ -299808,15 +303723,15 @@ "updateContext": null }, "value": "null", - "start": 81351, - "end": 81355, + "start": 81918, + "end": 81922, "loc": { "start": { - "line": 2335, + "line": 2344, "column": 19 }, "end": { - "line": 2335, + "line": 2344, "column": 23 } } @@ -299834,15 +303749,15 @@ "binop": null, "updateContext": null }, - "start": 81355, - "end": 81356, + "start": 81922, + "end": 81923, "loc": { "start": { - "line": 2335, + "line": 2344, "column": 23 }, "end": { - "line": 2335, + "line": 2344, "column": 24 } } @@ -299859,15 +303774,15 @@ "postfix": false, "binop": null }, - "start": 81365, - "end": 81366, + "start": 81932, + "end": 81933, "loc": { "start": { - "line": 2336, + "line": 2345, "column": 8 }, "end": { - "line": 2336, + "line": 2345, "column": 9 } } @@ -299887,15 +303802,15 @@ "updateContext": null }, "value": "if", - "start": 81375, - "end": 81377, + "start": 81942, + "end": 81944, "loc": { "start": { - "line": 2337, + "line": 2346, "column": 8 }, "end": { - "line": 2337, + "line": 2346, "column": 10 } } @@ -299912,43 +303827,16 @@ "postfix": false, "binop": null }, - "start": 81378, - "end": 81379, + "start": 81945, + "end": 81946, "loc": { "start": { - "line": 2337, + "line": 2346, "column": 11 }, "end": { - "line": 2337, - "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": 81379, - "end": 81380, - "loc": { - "start": { - "line": 2337, + "line": 2346, "column": 12 - }, - "end": { - "line": 2337, - "column": 13 } } }, @@ -299965,16 +303853,16 @@ "binop": null }, "value": "cfg", - "start": 81380, - "end": 81383, + "start": 81946, + "end": 81949, "loc": { "start": { - "line": 2337, - "column": 13 + "line": 2346, + "column": 12 }, "end": { - "line": 2337, - "column": 16 + "line": 2346, + "column": 15 } } }, @@ -299991,16 +303879,16 @@ "binop": null, "updateContext": null }, - "start": 81383, - "end": 81384, + "start": 81949, + "end": 81950, "loc": { "start": { - "line": 2337, - "column": 16 + "line": 2346, + "column": 15 }, "end": { - "line": 2337, - "column": 17 + "line": 2346, + "column": 16 } } }, @@ -300016,71 +303904,67 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 81384, - "end": 81391, + "value": "positionsDecodeBoundary", + "start": 81950, + "end": 81973, "loc": { "start": { - "line": 2337, - "column": 17 + "line": 2346, + "column": 16 }, "end": { - "line": 2337, - "column": 24 + "line": 2346, + "column": 39 } } }, { "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": 81392, - "end": 81394, + "start": 81973, + "end": 81974, "loc": { "start": { - "line": 2337, - "column": 25 + "line": 2346, + "column": 39 }, "end": { - "line": 2337, - "column": 27 + "line": 2346, + "column": 40 } } }, { "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": 81395, - "end": 81396, + "start": 81975, + "end": 81976, "loc": { "start": { - "line": 2337, - "column": 28 + "line": 2346, + "column": 41 }, "end": { - "line": 2337, - "column": 29 + "line": 2346, + "column": 42 } } }, @@ -300097,16 +303981,16 @@ "binop": null }, "value": "cfg", - "start": 81396, - "end": 81399, + "start": 81989, + "end": 81992, "loc": { "start": { - "line": 2337, - "column": 29 + "line": 2347, + "column": 12 }, "end": { - "line": 2337, - "column": 32 + "line": 2347, + "column": 15 } } }, @@ -300123,16 +304007,16 @@ "binop": null, "updateContext": null }, - "start": 81399, - "end": 81400, + "start": 81992, + "end": 81993, "loc": { "start": { - "line": 2337, - "column": 32 + "line": 2347, + "column": 15 }, "end": { - "line": 2337, - "column": 33 + "line": 2347, + "column": 16 } } }, @@ -300148,44 +304032,70 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 81400, - "end": 81407, + "value": "positionsDecodeMatrix", + "start": 81993, + "end": 82014, "loc": { "start": { - "line": 2337, - "column": 33 + "line": 2347, + "column": 16 }, "end": { - "line": 2337, - "column": 40 + "line": 2347, + "column": 37 } } }, { "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": 81408, - "end": 81410, + "value": "=", + "start": 82015, + "end": 82016, "loc": { "start": { - "line": 2337, - "column": 41 + "line": 2347, + "column": 38 }, "end": { - "line": 2337, - "column": 43 + "line": 2347, + "column": 39 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "createPositionsDecodeMatrix", + "start": 82017, + "end": 82044, + "loc": { + "start": { + "line": 2347, + "column": 40 + }, + "end": { + "line": 2347, + "column": 67 } } }, @@ -300201,16 +304111,16 @@ "postfix": false, "binop": null }, - "start": 81411, - "end": 81412, + "start": 82044, + "end": 82045, "loc": { "start": { - "line": 2337, - "column": 44 + "line": 2347, + "column": 67 }, "end": { - "line": 2337, - "column": 45 + "line": 2347, + "column": 68 } } }, @@ -300227,16 +304137,16 @@ "binop": null }, "value": "cfg", - "start": 81412, - "end": 81415, + "start": 82045, + "end": 82048, "loc": { "start": { - "line": 2337, - "column": 45 + "line": 2347, + "column": 68 }, "end": { - "line": 2337, - "column": 48 + "line": 2347, + "column": 71 } } }, @@ -300253,16 +304163,16 @@ "binop": null, "updateContext": null }, - "start": 81415, - "end": 81416, + "start": 82048, + "end": 82049, "loc": { "start": { - "line": 2337, - "column": 48 + "line": 2347, + "column": 71 }, "end": { - "line": 2337, - "column": 49 + "line": 2347, + "column": 72 } } }, @@ -300278,23 +304188,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 81416, - "end": 81425, + "value": "positionsDecodeBoundary", + "start": 82049, + "end": 82072, "loc": { "start": { - "line": 2337, - "column": 49 + "line": 2347, + "column": 72 }, "end": { - "line": 2337, - "column": 58 + "line": 2347, + "column": 95 } } }, { "type": { - "label": "==/!=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -300302,26 +304212,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 81426, - "end": 81429, + "start": 82072, + "end": 82073, "loc": { "start": { - "line": 2337, - "column": 59 + "line": 2347, + "column": 95 }, "end": { - "line": 2337, - "column": 62 + "line": 2347, + "column": 96 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -300329,47 +304238,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "triangles", - "start": 81430, - "end": 81441, + "value": "math", + "start": 82074, + "end": 82078, "loc": { "start": { - "line": 2337, - "column": 63 + "line": 2347, + "column": 97 }, "end": { - "line": 2337, - "column": 74 + "line": 2347, + "column": 101 } } }, { "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": 81442, - "end": 81444, + "start": 82078, + "end": 82079, "loc": { "start": { - "line": 2337, - "column": 75 + "line": 2347, + "column": 101 }, "end": { - "line": 2337, - "column": 77 + "line": 2347, + "column": 102 } } }, @@ -300385,50 +304292,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 81445, - "end": 81448, - "loc": { - "start": { - "line": 2337, - "column": 78 - }, - "end": { - "line": 2337, - "column": 81 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 81448, - "end": 81449, + "value": "mat4", + "start": 82079, + "end": 82083, "loc": { "start": { - "line": 2337, - "column": 81 + "line": 2347, + "column": 102 }, "end": { - "line": 2337, - "column": 82 + "line": 2347, + "column": 106 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -300437,77 +304318,72 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 81449, - "end": 81458, + "start": 82083, + "end": 82084, "loc": { "start": { - "line": 2337, - "column": 82 + "line": 2347, + "column": 106 }, "end": { - "line": 2337, - "column": 91 + "line": 2347, + "column": 107 } } }, { "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": 81459, - "end": 81462, + "start": 82084, + "end": 82085, "loc": { "start": { - "line": 2337, - "column": 92 + "line": 2347, + "column": 107 }, "end": { - "line": 2337, - "column": 95 + "line": 2347, + "column": 108 } } }, { "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": "solid", - "start": 81463, - "end": 81470, + "start": 82085, + "end": 82086, "loc": { "start": { - "line": 2337, - "column": 96 + "line": 2347, + "column": 108 }, "end": { - "line": 2337, - "column": 103 + "line": 2347, + "column": 109 } } }, { "type": { - "label": "||", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -300515,28 +304391,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 81471, - "end": 81473, + "start": 82086, + "end": 82087, "loc": { "start": { - "line": 2337, - "column": 104 + "line": 2347, + "column": 109 }, "end": { - "line": 2337, - "column": 106 + "line": 2347, + "column": 110 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -300544,23 +304419,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 81474, - "end": 81477, + "start": 82096, + "end": 82097, "loc": { "start": { - "line": 2337, - "column": 107 + "line": 2348, + "column": 8 }, "end": { - "line": 2337, - "column": 110 + "line": 2348, + "column": 9 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -300571,23 +304446,24 @@ "binop": null, "updateContext": null }, - "start": 81477, - "end": 81478, + "value": "if", + "start": 82106, + "end": 82108, "loc": { "start": { - "line": 2337, - "column": 110 + "line": 2349, + "column": 8 }, "end": { - "line": 2337, - "column": 111 + "line": 2349, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -300596,52 +304472,50 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 81478, - "end": 81487, + "start": 82109, + "end": 82110, "loc": { "start": { - "line": 2337, - "column": 111 + "line": 2349, + "column": 11 }, "end": { - "line": 2337, - "column": 120 + "line": 2349, + "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": 6, - "updateContext": null + "binop": null }, - "value": "===", - "start": 81488, - "end": 81491, + "value": "cfg", + "start": 82110, + "end": 82113, "loc": { "start": { - "line": 2337, - "column": 121 + "line": 2349, + "column": 12 }, "end": { - "line": 2337, - "column": 124 + "line": 2349, + "column": 15 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -300650,25 +304524,24 @@ "binop": null, "updateContext": null }, - "value": "surface", - "start": 81492, - "end": 81501, + "start": 82113, + "end": 82114, "loc": { "start": { - "line": 2337, - "column": 125 + "line": 2349, + "column": 15 }, "end": { - "line": 2337, - "column": 134 + "line": 2349, + "column": 16 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -300676,16 +304549,17 @@ "postfix": false, "binop": null }, - "start": 81501, - "end": 81502, + "value": "positions", + "start": 82114, + "end": 82123, "loc": { "start": { - "line": 2337, - "column": 134 + "line": 2349, + "column": 16 }, "end": { - "line": 2337, - "column": 135 + "line": 2349, + "column": 25 } } }, @@ -300701,16 +304575,16 @@ "postfix": false, "binop": null }, - "start": 81502, - "end": 81503, + "start": 82123, + "end": 82124, "loc": { "start": { - "line": 2337, - "column": 135 + "line": 2349, + "column": 25 }, "end": { - "line": 2337, - "column": 136 + "line": 2349, + "column": 26 } } }, @@ -300726,16 +304600,16 @@ "postfix": false, "binop": null }, - "start": 81504, - "end": 81505, + "start": 82125, + "end": 82126, "loc": { "start": { - "line": 2337, - "column": 137 + "line": 2349, + "column": 27 }, "end": { - "line": 2337, - "column": 138 + "line": 2349, + "column": 28 } } }, @@ -300754,15 +304628,15 @@ "updateContext": null }, "value": "const", - "start": 81518, - "end": 81523, + "start": 82139, + "end": 82144, "loc": { "start": { - "line": 2338, + "line": 2350, "column": 12 }, "end": { - "line": 2338, + "line": 2350, "column": 17 } } @@ -300779,17 +304653,17 @@ "postfix": false, "binop": null }, - "value": "numPositions", - "start": 81524, - "end": 81536, + "value": "aabb", + "start": 82145, + "end": 82149, "loc": { "start": { - "line": 2338, + "line": 2350, "column": 18 }, "end": { - "line": 2338, - "column": 30 + "line": 2350, + "column": 22 } } }, @@ -300807,41 +304681,16 @@ "updateContext": null }, "value": "=", - "start": 81537, - "end": 81538, - "loc": { - "start": { - "line": 2338, - "column": 31 - }, - "end": { - "line": 2338, - "column": 32 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 81539, - "end": 81540, + "start": 82150, + "end": 82151, "loc": { "start": { - "line": 2338, - "column": 33 + "line": 2350, + "column": 23 }, "end": { - "line": 2338, - "column": 34 + "line": 2350, + "column": 24 } } }, @@ -300857,17 +304706,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 81540, - "end": 81543, + "value": "math", + "start": 82152, + "end": 82156, "loc": { "start": { - "line": 2338, - "column": 34 + "line": 2350, + "column": 25 }, "end": { - "line": 2338, - "column": 37 + "line": 2350, + "column": 29 } } }, @@ -300884,16 +304733,16 @@ "binop": null, "updateContext": null }, - "start": 81543, - "end": 81544, + "start": 82156, + "end": 82157, "loc": { "start": { - "line": 2338, - "column": 37 + "line": 2350, + "column": 29 }, "end": { - "line": 2338, - "column": 38 + "line": 2350, + "column": 30 } } }, @@ -300909,52 +304758,50 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 81544, - "end": 81553, + "value": "collapseAABB3", + "start": 82157, + "end": 82170, "loc": { "start": { - "line": 2338, - "column": 38 + "line": 2350, + "column": 30 }, "end": { - "line": 2338, - "column": 47 + "line": 2350, + "column": 43 } } }, { "type": { - "label": "||", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 81554, - "end": 81556, + "start": 82170, + "end": 82171, "loc": { "start": { - "line": 2338, - "column": 48 + "line": 2350, + "column": 43 }, "end": { - "line": 2338, - "column": 50 + "line": 2350, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -300962,24 +304809,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 81557, - "end": 81560, + "start": 82171, + "end": 82172, "loc": { "start": { - "line": 2338, - "column": 51 + "line": 2350, + "column": 44 }, "end": { - "line": 2338, - "column": 54 + "line": 2350, + "column": 45 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -300989,16 +304835,16 @@ "binop": null, "updateContext": null }, - "start": 81560, - "end": 81561, + "start": 82172, + "end": 82173, "loc": { "start": { - "line": 2338, - "column": 54 + "line": 2350, + "column": 45 }, "end": { - "line": 2338, - "column": 55 + "line": 2350, + "column": 46 } } }, @@ -301014,42 +304860,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 81561, - "end": 81580, - "loc": { - "start": { - "line": 2338, - "column": 55 - }, - "end": { - "line": 2338, - "column": 74 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 81580, - "end": 81581, + "value": "cfg", + "start": 82186, + "end": 82189, "loc": { "start": { - "line": 2338, - "column": 74 + "line": 2351, + "column": 12 }, "end": { - "line": 2338, - "column": 75 + "line": 2351, + "column": 15 } } }, @@ -301066,16 +304887,16 @@ "binop": null, "updateContext": null }, - "start": 81581, - "end": 81582, + "start": 82189, + "end": 82190, "loc": { "start": { - "line": 2338, - "column": 75 + "line": 2351, + "column": 15 }, "end": { - "line": 2338, - "column": 76 + "line": 2351, + "column": 16 } } }, @@ -301091,50 +304912,50 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 81582, - "end": 81588, + "value": "positionsDecodeMatrix", + "start": 82190, + "end": 82211, "loc": { "start": { - "line": 2338, - "column": 76 + "line": 2351, + "column": 16 }, "end": { - "line": 2338, - "column": 82 + "line": 2351, + "column": 37 } } }, { "type": { - "label": "/", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "/", - "start": 81589, - "end": 81590, + "value": "=", + "start": 82212, + "end": 82213, "loc": { "start": { - "line": 2338, - "column": 83 + "line": 2351, + "column": 38 }, "end": { - "line": 2338, - "column": 84 + "line": 2351, + "column": 39 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -301142,27 +304963,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 3, - "start": 81591, - "end": 81592, + "value": "math", + "start": 82214, + "end": 82218, "loc": { "start": { - "line": 2338, - "column": 85 + "line": 2351, + "column": 40 }, "end": { - "line": 2338, - "column": 86 + "line": 2351, + "column": 44 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -301172,16 +304992,16 @@ "binop": null, "updateContext": null }, - "start": 81592, - "end": 81593, + "start": 82218, + "end": 82219, "loc": { "start": { - "line": 2338, - "column": 86 + "line": 2351, + "column": 44 }, "end": { - "line": 2338, - "column": 87 + "line": 2351, + "column": 45 } } }, @@ -301197,51 +305017,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 81606, - "end": 81609, + "value": "mat4", + "start": 82219, + "end": 82223, "loc": { "start": { - "line": 2339, - "column": 12 + "line": 2351, + "column": 45 }, "end": { - "line": 2339, - "column": 15 + "line": 2351, + "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": 81609, - "end": 81610, + "start": 82223, + "end": 82224, "loc": { "start": { - "line": 2339, - "column": 15 + "line": 2351, + "column": 49 }, "end": { - "line": 2339, - "column": 16 + "line": 2351, + "column": 50 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -301249,51 +305068,48 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 81610, - "end": 81617, + "start": 82224, + "end": 82225, "loc": { "start": { - "line": 2339, - "column": 16 + "line": 2351, + "column": 50 }, "end": { - "line": 2339, - "column": 23 + "line": 2351, + "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": 81618, - "end": 81619, + "start": 82225, + "end": 82226, "loc": { "start": { - "line": 2339, - "column": 24 + "line": 2351, + "column": 51 }, "end": { - "line": 2339, - "column": 25 + "line": 2351, + "column": 52 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -301301,20 +305117,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 81620, - "end": 81624, + "value": "math", + "start": 82239, + "end": 82243, "loc": { "start": { - "line": 2339, - "column": 26 + "line": 2352, + "column": 12 }, "end": { - "line": 2339, - "column": 30 + "line": 2352, + "column": 16 } } }, @@ -301331,16 +305146,16 @@ "binop": null, "updateContext": null }, - "start": 81624, - "end": 81625, + "start": 82243, + "end": 82244, "loc": { "start": { - "line": 2339, - "column": 30 + "line": 2352, + "column": 16 }, "end": { - "line": 2339, - "column": 31 + "line": 2352, + "column": 17 } } }, @@ -301356,17 +305171,17 @@ "postfix": false, "binop": null }, - "value": "_createDefaultIndices", - "start": 81625, - "end": 81646, + "value": "expandAABB3Points3", + "start": 82244, + "end": 82262, "loc": { "start": { - "line": 2339, - "column": 31 + "line": 2352, + "column": 17 }, "end": { - "line": 2339, - "column": 52 + "line": 2352, + "column": 35 } } }, @@ -301382,16 +305197,16 @@ "postfix": false, "binop": null }, - "start": 81646, - "end": 81647, + "start": 82262, + "end": 82263, "loc": { "start": { - "line": 2339, - "column": 52 + "line": 2352, + "column": 35 }, "end": { - "line": 2339, - "column": 53 + "line": 2352, + "column": 36 } } }, @@ -301407,74 +305222,75 @@ "postfix": false, "binop": null }, - "value": "numPositions", - "start": 81647, - "end": 81659, + "value": "aabb", + "start": 82263, + "end": 82267, "loc": { "start": { - "line": 2339, - "column": 53 + "line": 2352, + "column": 36 }, "end": { - "line": 2339, - "column": 65 + "line": 2352, + "column": 40 } } }, { "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": 81659, - "end": 81660, + "start": 82267, + "end": 82268, "loc": { "start": { - "line": 2339, - "column": 65 + "line": 2352, + "column": 40 }, "end": { - "line": 2339, - "column": 66 + "line": 2352, + "column": 41 } } }, { "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": 81660, - "end": 81661, + "value": "cfg", + "start": 82269, + "end": 82272, "loc": { "start": { - "line": 2339, - "column": 66 + "line": 2352, + "column": 42 }, "end": { - "line": 2339, - "column": 67 + "line": 2352, + "column": 45 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -301482,54 +305298,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 81670, - "end": 81671, + "start": 82272, + "end": 82273, "loc": { "start": { - "line": 2340, - "column": 8 + "line": 2352, + "column": 45 }, "end": { - "line": 2340, - "column": 9 + "line": 2352, + "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": 81680, - "end": 81682, + "value": "positions", + "start": 82273, + "end": 82282, "loc": { "start": { - "line": 2341, - "column": 8 + "line": 2352, + "column": 46 }, "end": { - "line": 2341, - "column": 10 + "line": 2352, + "column": 55 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -301537,43 +305352,42 @@ "postfix": false, "binop": null }, - "start": 81683, - "end": 81684, + "start": 82282, + "end": 82283, "loc": { "start": { - "line": 2341, - "column": 11 + "line": 2352, + "column": 55 }, "end": { - "line": 2341, - "column": 12 + "line": 2352, + "column": 56 } } }, { "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": 81684, - "end": 81685, + "start": 82283, + "end": 82284, "loc": { "start": { - "line": 2341, - "column": 12 + "line": 2352, + "column": 56 }, "end": { - "line": 2341, - "column": 13 + "line": 2352, + "column": 57 } } }, @@ -301590,16 +305404,16 @@ "binop": null }, "value": "cfg", - "start": 81685, - "end": 81688, + "start": 82297, + "end": 82300, "loc": { "start": { - "line": 2341, - "column": 13 + "line": 2353, + "column": 12 }, "end": { - "line": 2341, - "column": 16 + "line": 2353, + "column": 15 } } }, @@ -301616,16 +305430,16 @@ "binop": null, "updateContext": null }, - "start": 81688, - "end": 81689, + "start": 82300, + "end": 82301, "loc": { "start": { - "line": 2341, - "column": 16 + "line": 2353, + "column": 15 }, "end": { - "line": 2341, - "column": 17 + "line": 2353, + "column": 16 } } }, @@ -301641,71 +305455,95 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 81689, - "end": 81696, + "value": "positionsCompressed", + "start": 82301, + "end": 82320, "loc": { "start": { - "line": 2341, - "column": 17 + "line": 2353, + "column": 16 }, "end": { - "line": 2341, - "column": 24 + "line": 2353, + "column": 35 } } }, { "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": 81697, - "end": 81699, + "value": "=", + "start": 82321, + "end": 82322, "loc": { "start": { - "line": 2341, - "column": 25 + "line": 2353, + "column": 36 }, "end": { - "line": 2341, - "column": 27 + "line": 2353, + "column": 37 } } }, { "type": { - "label": "prefix", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "quantizePositions", + "start": 82323, + "end": 82340, + "loc": { + "start": { + "line": 2353, + "column": 38 + }, + "end": { + "line": 2353, + "column": 55 + } + } + }, + { + "type": { + "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": 81700, - "end": 81701, + "start": 82340, + "end": 82341, "loc": { "start": { - "line": 2341, - "column": 28 + "line": 2353, + "column": 55 }, "end": { - "line": 2341, - "column": 29 + "line": 2353, + "column": 56 } } }, @@ -301722,16 +305560,16 @@ "binop": null }, "value": "cfg", - "start": 81701, - "end": 81704, + "start": 82341, + "end": 82344, "loc": { "start": { - "line": 2341, - "column": 29 + "line": 2353, + "column": 56 }, "end": { - "line": 2341, - "column": 32 + "line": 2353, + "column": 59 } } }, @@ -301748,16 +305586,16 @@ "binop": null, "updateContext": null }, - "start": 81704, - "end": 81705, + "start": 82344, + "end": 82345, "loc": { "start": { - "line": 2341, - "column": 32 + "line": 2353, + "column": 59 }, "end": { - "line": 2341, - "column": 33 + "line": 2353, + "column": 60 } } }, @@ -301773,23 +305611,23 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 81705, - "end": 81712, + "value": "positions", + "start": 82345, + "end": 82354, "loc": { "start": { - "line": 2341, - "column": 33 + "line": 2353, + "column": 60 }, "end": { - "line": 2341, - "column": 40 + "line": 2353, + "column": 69 } } }, { "type": { - "label": "&&", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -301797,20 +305635,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 81713, - "end": 81715, + "start": 82354, + "end": 82355, "loc": { "start": { - "line": 2341, - "column": 41 + "line": 2353, + "column": 69 }, "end": { - "line": 2341, - "column": 43 + "line": 2353, + "column": 70 } } }, @@ -301826,24 +305663,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 81716, - "end": 81719, + "value": "aabb", + "start": 82356, + "end": 82360, "loc": { "start": { - "line": 2341, - "column": 44 + "line": 2353, + "column": 71 }, "end": { - "line": 2341, - "column": 47 + "line": 2353, + "column": 75 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -301853,16 +305690,16 @@ "binop": null, "updateContext": null }, - "start": 81719, - "end": 81720, + "start": 82360, + "end": 82361, "loc": { "start": { - "line": 2341, - "column": 47 + "line": 2353, + "column": 75 }, "end": { - "line": 2341, - "column": 48 + "line": 2353, + "column": 76 } } }, @@ -301878,50 +305715,49 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 81720, - "end": 81729, + "value": "cfg", + "start": 82362, + "end": 82365, "loc": { "start": { - "line": 2341, - "column": 48 + "line": 2353, + "column": 77 }, "end": { - "line": 2341, - "column": 57 + "line": 2353, + "column": 80 } } }, { "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": 81730, - "end": 81733, + "start": 82365, + "end": 82366, "loc": { "start": { - "line": 2341, - "column": 58 + "line": 2353, + "column": 80 }, "end": { - "line": 2341, - "column": 61 + "line": 2353, + "column": 81 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -301929,20 +305765,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "points", - "start": 81734, - "end": 81742, + "value": "positionsDecodeMatrix", + "start": 82366, + "end": 82387, "loc": { "start": { - "line": 2341, - "column": 62 + "line": 2353, + "column": 81 }, "end": { - "line": 2341, - "column": 70 + "line": 2353, + "column": 102 } } }, @@ -301958,48 +305793,48 @@ "postfix": false, "binop": null }, - "start": 81742, - "end": 81743, + "start": 82387, + "end": 82388, "loc": { "start": { - "line": 2341, - "column": 70 + "line": 2353, + "column": 102 }, "end": { - "line": 2341, - "column": 71 + "line": 2353, + "column": 103 } } }, { "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": 81744, - "end": 81745, + "start": 82388, + "end": 82389, "loc": { "start": { - "line": 2341, - "column": 72 + "line": 2353, + "column": 103 }, "end": { - "line": 2341, - "column": 73 + "line": 2353, + "column": 104 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -302007,20 +305842,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 81758, - "end": 81762, + "value": "cfg", + "start": 82402, + "end": 82405, "loc": { "start": { - "line": 2342, + "line": 2354, "column": 12 }, "end": { - "line": 2342, - "column": 16 + "line": 2354, + "column": 15 } } }, @@ -302037,16 +305871,16 @@ "binop": null, "updateContext": null }, - "start": 81762, - "end": 81763, + "start": 82405, + "end": 82406, "loc": { "start": { - "line": 2342, - "column": 16 + "line": 2354, + "column": 15 }, "end": { - "line": 2342, - "column": 17 + "line": 2354, + "column": 16 } } }, @@ -302062,48 +305896,50 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 81763, - "end": 81768, + "value": "aabb", + "start": 82406, + "end": 82410, "loc": { "start": { - "line": 2342, - "column": 17 + "line": 2354, + "column": 16 }, "end": { - "line": 2342, - "column": 22 + "line": 2354, + "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 + "binop": null, + "updateContext": null }, - "start": 81768, - "end": 81769, + "value": "=", + "start": 82411, + "end": 82412, "loc": { "start": { - "line": 2342, - "column": 22 + "line": 2354, + "column": 21 }, "end": { - "line": 2342, - "column": 23 + "line": 2354, + "column": 22 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -302113,23 +305949,24 @@ "postfix": false, "binop": null }, - "start": 81769, - "end": 81770, + "value": "aabb", + "start": 82413, + "end": 82417, "loc": { "start": { - "line": 2342, + "line": 2354, "column": 23 }, "end": { - "line": 2342, - "column": 24 + "line": 2354, + "column": 27 } } }, { "type": { - "label": "template", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -302139,25 +305976,24 @@ "binop": null, "updateContext": null }, - "value": "[createGeometry] Param expected: indices (required for '", - "start": 81770, - "end": 81826, + "start": 82417, + "end": 82418, "loc": { "start": { - "line": 2342, - "column": 24 + "line": 2354, + "column": 27 }, "end": { - "line": 2342, - "column": 80 + "line": 2354, + "column": 28 } } }, { "type": { - "label": "${", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -302165,48 +306001,51 @@ "postfix": false, "binop": null }, - "start": 81826, - "end": 81828, + "start": 82427, + "end": 82428, "loc": { "start": { - "line": 2342, - "column": 80 + "line": 2355, + "column": 8 }, "end": { - "line": 2342, - "column": 82 + "line": 2355, + "column": 9 } } }, { "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": "cfg", - "start": 81828, - "end": 81831, + "value": "else", + "start": 82429, + "end": 82433, "loc": { "start": { - "line": 2342, - "column": 82 + "line": 2355, + "column": 10 }, "end": { - "line": 2342, - "column": 85 + "line": 2355, + "column": 14 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -302217,23 +306056,24 @@ "binop": null, "updateContext": null }, - "start": 81831, - "end": 81832, + "value": "if", + "start": 82434, + "end": 82436, "loc": { "start": { - "line": 2342, - "column": 85 + "line": 2355, + "column": 15 }, "end": { - "line": 2342, - "column": 86 + "line": 2355, + "column": 17 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -302242,25 +306082,24 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 81832, - "end": 81841, + "start": 82437, + "end": 82438, "loc": { "start": { - "line": 2342, - "column": 86 + "line": 2355, + "column": 18 }, "end": { - "line": 2342, - "column": 95 + "line": 2355, + "column": 19 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -302268,22 +306107,23 @@ "postfix": false, "binop": null }, - "start": 81841, - "end": 81842, + "value": "cfg", + "start": 82438, + "end": 82441, "loc": { "start": { - "line": 2342, - "column": 95 + "line": 2355, + "column": 19 }, "end": { - "line": 2342, - "column": 96 + "line": 2355, + "column": 22 } } }, { "type": { - "label": "template", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -302294,23 +306134,22 @@ "binop": null, "updateContext": null }, - "value": "' primitive type)", - "start": 81842, - "end": 81859, + "start": 82441, + "end": 82442, "loc": { "start": { - "line": 2342, - "column": 96 + "line": 2355, + "column": 22 }, "end": { - "line": 2342, - "column": 113 + "line": 2355, + "column": 23 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -302320,16 +306159,17 @@ "postfix": false, "binop": null }, - "start": 81859, - "end": 81860, + "value": "positionsCompressed", + "start": 82442, + "end": 82461, "loc": { "start": { - "line": 2342, - "column": 113 + "line": 2355, + "column": 23 }, "end": { - "line": 2342, - "column": 114 + "line": 2355, + "column": 42 } } }, @@ -302345,50 +306185,49 @@ "postfix": false, "binop": null }, - "start": 81860, - "end": 81861, + "start": 82461, + "end": 82462, "loc": { "start": { - "line": 2342, - "column": 114 + "line": 2355, + "column": 42 }, "end": { - "line": 2342, - "column": 115 + "line": 2355, + "column": 43 } } }, { "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": 81861, - "end": 81862, + "start": 82463, + "end": 82464, "loc": { "start": { - "line": 2342, - "column": 115 + "line": 2355, + "column": 44 }, "end": { - "line": 2342, - "column": 116 + "line": 2355, + "column": 45 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -302398,24 +306237,23 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 81875, - "end": 81881, + "value": "const", + "start": 82477, + "end": 82482, "loc": { "start": { - "line": 2343, + "line": 2356, "column": 12 }, "end": { - "line": 2343, - "column": 18 + "line": 2356, + "column": 17 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -302423,54 +306261,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 81882, - "end": 81886, + "value": "aabb", + "start": 82483, + "end": 82487, "loc": { "start": { - "line": 2343, - "column": 19 + "line": 2356, + "column": 18 }, "end": { - "line": 2343, - "column": 23 + "line": 2356, + "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": 81886, - "end": 81887, + "value": "=", + "start": 82488, + "end": 82489, "loc": { "start": { - "line": 2343, + "line": 2356, "column": 23 }, "end": { - "line": 2343, + "line": 2356, "column": 24 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -302478,23 +306316,23 @@ "postfix": false, "binop": null }, - "start": 81896, - "end": 81897, + "value": "math", + "start": 82490, + "end": 82494, "loc": { "start": { - "line": 2344, - "column": 8 + "line": 2356, + "column": 25 }, "end": { - "line": 2344, - "column": 9 + "line": 2356, + "column": 29 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -302505,42 +306343,16 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 81906, - "end": 81908, - "loc": { - "start": { - "line": 2345, - "column": 8 - }, - "end": { - "line": 2345, - "column": 10 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 81909, - "end": 81910, + "start": 82494, + "end": 82495, "loc": { "start": { - "line": 2345, - "column": 11 + "line": 2356, + "column": 29 }, "end": { - "line": 2345, - "column": 12 + "line": 2356, + "column": 30 } } }, @@ -302556,50 +306368,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 81910, - "end": 81913, - "loc": { - "start": { - "line": 2345, - "column": 12 - }, - "end": { - "line": 2345, - "column": 15 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 81913, - "end": 81914, + "value": "collapseAABB3", + "start": 82495, + "end": 82508, "loc": { "start": { - "line": 2345, - "column": 15 + "line": 2356, + "column": 30 }, "end": { - "line": 2345, - "column": 16 + "line": 2356, + "column": 43 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -302608,17 +306394,16 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 81914, - "end": 81937, + "start": 82508, + "end": 82509, "loc": { "start": { - "line": 2345, - "column": 16 + "line": 2356, + "column": 43 }, "end": { - "line": 2345, - "column": 39 + "line": 2356, + "column": 44 } } }, @@ -302634,41 +306419,42 @@ "postfix": false, "binop": null }, - "start": 81937, - "end": 81938, + "start": 82509, + "end": 82510, "loc": { "start": { - "line": 2345, - "column": 39 + "line": 2356, + "column": 44 }, "end": { - "line": 2345, - "column": 40 + "line": 2356, + "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": 81939, - "end": 81940, + "start": 82510, + "end": 82511, "loc": { "start": { - "line": 2345, - "column": 41 + "line": 2356, + "column": 45 }, "end": { - "line": 2345, - "column": 42 + "line": 2356, + "column": 46 } } }, @@ -302685,15 +306471,15 @@ "binop": null }, "value": "cfg", - "start": 81953, - "end": 81956, + "start": 82524, + "end": 82527, "loc": { "start": { - "line": 2346, + "line": 2357, "column": 12 }, "end": { - "line": 2346, + "line": 2357, "column": 15 } } @@ -302711,15 +306497,15 @@ "binop": null, "updateContext": null }, - "start": 81956, - "end": 81957, + "start": 82527, + "end": 82528, "loc": { "start": { - "line": 2346, + "line": 2357, "column": 15 }, "end": { - "line": 2346, + "line": 2357, "column": 16 } } @@ -302737,15 +306523,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 81957, - "end": 81978, + "start": 82528, + "end": 82549, "loc": { "start": { - "line": 2346, + "line": 2357, "column": 16 }, "end": { - "line": 2346, + "line": 2357, "column": 37 } } @@ -302764,19 +306550,47 @@ "updateContext": null }, "value": "=", - "start": 81979, - "end": 81980, + "start": 82550, + "end": 82551, "loc": { "start": { - "line": 2346, + "line": 2357, "column": 38 }, "end": { - "line": 2346, + "line": 2357, "column": 39 } } }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 82552, + "end": 82555, + "loc": { + "start": { + "line": 2357, + "column": 40 + }, + "end": { + "line": 2357, + "column": 43 + } + } + }, { "type": { "label": "name", @@ -302789,17 +306603,17 @@ "postfix": false, "binop": null }, - "value": "createPositionsDecodeMatrix", - "start": 81981, - "end": 82008, + "value": "Float64Array", + "start": 82556, + "end": 82568, "loc": { "start": { - "line": 2346, - "column": 40 + "line": 2357, + "column": 44 }, "end": { - "line": 2346, - "column": 67 + "line": 2357, + "column": 56 } } }, @@ -302815,16 +306629,16 @@ "postfix": false, "binop": null }, - "start": 82008, - "end": 82009, + "start": 82568, + "end": 82569, "loc": { "start": { - "line": 2346, - "column": 67 + "line": 2357, + "column": 56 }, "end": { - "line": 2346, - "column": 68 + "line": 2357, + "column": 57 } } }, @@ -302841,16 +306655,16 @@ "binop": null }, "value": "cfg", - "start": 82009, - "end": 82012, + "start": 82569, + "end": 82572, "loc": { "start": { - "line": 2346, - "column": 68 + "line": 2357, + "column": 57 }, "end": { - "line": 2346, - "column": 71 + "line": 2357, + "column": 60 } } }, @@ -302867,16 +306681,16 @@ "binop": null, "updateContext": null }, - "start": 82012, - "end": 82013, + "start": 82572, + "end": 82573, "loc": { "start": { - "line": 2346, - "column": 71 + "line": 2357, + "column": 60 }, "end": { - "line": 2346, - "column": 72 + "line": 2357, + "column": 61 } } }, @@ -302892,23 +306706,48 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 82013, - "end": 82036, + "value": "positionsDecodeMatrix", + "start": 82573, + "end": 82594, "loc": { "start": { - "line": 2346, - "column": 72 + "line": 2357, + "column": 61 }, "end": { - "line": 2346, - "column": 95 + "line": 2357, + "column": 82 } } }, { "type": { - "label": ",", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 82594, + "end": 82595, + "loc": { + "start": { + "line": 2357, + "column": 82 + }, + "end": { + "line": 2357, + "column": 83 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -302919,16 +306758,16 @@ "binop": null, "updateContext": null }, - "start": 82036, - "end": 82037, + "start": 82595, + "end": 82596, "loc": { "start": { - "line": 2346, - "column": 95 + "line": 2357, + "column": 83 }, "end": { - "line": 2346, - "column": 96 + "line": 2357, + "column": 84 } } }, @@ -302944,17 +306783,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 82038, - "end": 82042, + "value": "cfg", + "start": 82609, + "end": 82612, "loc": { "start": { - "line": 2346, - "column": 97 + "line": 2358, + "column": 12 }, "end": { - "line": 2346, - "column": 101 + "line": 2358, + "column": 15 } } }, @@ -302971,16 +306810,16 @@ "binop": null, "updateContext": null }, - "start": 82042, - "end": 82043, + "start": 82612, + "end": 82613, "loc": { "start": { - "line": 2346, - "column": 101 + "line": 2358, + "column": 15 }, "end": { - "line": 2346, - "column": 102 + "line": 2358, + "column": 16 } } }, @@ -302996,75 +306835,80 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 82043, - "end": 82047, + "value": "positionsCompressed", + "start": 82613, + "end": 82632, "loc": { "start": { - "line": 2346, - "column": 102 + "line": 2358, + "column": 16 }, "end": { - "line": 2346, - "column": 106 + "line": 2358, + "column": 35 } } }, { "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": 82047, - "end": 82048, + "value": "=", + "start": 82633, + "end": 82634, "loc": { "start": { - "line": 2346, - "column": 106 + "line": 2358, + "column": 36 }, "end": { - "line": 2346, - "column": 107 + "line": 2358, + "column": 37 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": 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 }, - "start": 82048, - "end": 82049, + "value": "new", + "start": 82635, + "end": 82638, "loc": { "start": { - "line": 2346, - "column": 107 + "line": 2358, + "column": 38 }, "end": { - "line": 2346, - "column": 108 + "line": 2358, + "column": 41 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -303072,50 +306916,50 @@ "postfix": false, "binop": null }, - "start": 82049, - "end": 82050, + "value": "Uint16Array", + "start": 82639, + "end": 82650, "loc": { "start": { - "line": 2346, - "column": 108 + "line": 2358, + "column": 42 }, "end": { - "line": 2346, - "column": 109 + "line": 2358, + "column": 53 } } }, { "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": 82050, - "end": 82051, + "start": 82650, + "end": 82651, "loc": { "start": { - "line": 2346, - "column": 109 + "line": 2358, + "column": 53 }, "end": { - "line": 2346, - "column": 110 + "line": 2358, + "column": 54 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -303123,23 +306967,23 @@ "postfix": false, "binop": null }, - "start": 82060, - "end": 82061, + "value": "cfg", + "start": 82651, + "end": 82654, "loc": { "start": { - "line": 2347, - "column": 8 + "line": 2358, + "column": 54 }, "end": { - "line": 2347, - "column": 9 + "line": 2358, + "column": 57 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -303150,24 +306994,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 82070, - "end": 82072, + "start": 82654, + "end": 82655, "loc": { "start": { - "line": 2348, - "column": 8 + "line": 2358, + "column": 57 }, "end": { - "line": 2348, - "column": 10 + "line": 2358, + "column": 58 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -303176,24 +307019,25 @@ "postfix": false, "binop": null }, - "start": 82073, - "end": 82074, + "value": "positionsCompressed", + "start": 82655, + "end": 82674, "loc": { "start": { - "line": 2348, - "column": 11 + "line": 2358, + "column": 58 }, "end": { - "line": 2348, - "column": 12 + "line": 2358, + "column": 77 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -303201,24 +307045,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82074, - "end": 82077, + "start": 82674, + "end": 82675, "loc": { "start": { - "line": 2348, - "column": 12 + "line": 2358, + "column": 77 }, "end": { - "line": 2348, - "column": 15 + "line": 2358, + "column": 78 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -303228,16 +307071,16 @@ "binop": null, "updateContext": null }, - "start": 82077, - "end": 82078, + "start": 82675, + "end": 82676, "loc": { "start": { - "line": 2348, - "column": 15 + "line": 2358, + "column": 78 }, "end": { - "line": 2348, - "column": 16 + "line": 2358, + "column": 79 } } }, @@ -303253,23 +307096,23 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 82078, - "end": 82087, + "value": "math", + "start": 82689, + "end": 82693, "loc": { "start": { - "line": 2348, - "column": 16 + "line": 2359, + "column": 12 }, "end": { - "line": 2348, - "column": 25 + "line": 2359, + "column": 16 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -303277,25 +307120,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 82087, - "end": 82088, + "start": 82693, + "end": 82694, "loc": { "start": { - "line": 2348, - "column": 25 + "line": 2359, + "column": 16 }, "end": { - "line": 2348, - "column": 26 + "line": 2359, + "column": 17 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -303304,44 +307148,42 @@ "postfix": false, "binop": null }, - "start": 82089, - "end": 82090, + "value": "expandAABB3Points3", + "start": 82694, + "end": 82712, "loc": { "start": { - "line": 2348, - "column": 27 + "line": 2359, + "column": 17 }, "end": { - "line": 2348, - "column": 28 + "line": 2359, + "column": 35 } } }, { "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": 82103, - "end": 82108, + "start": 82712, + "end": 82713, "loc": { "start": { - "line": 2349, - "column": 12 + "line": 2359, + "column": 35 }, "end": { - "line": 2349, - "column": 17 + "line": 2359, + "column": 36 } } }, @@ -303358,43 +307200,42 @@ "binop": null }, "value": "aabb", - "start": 82109, - "end": 82113, + "start": 82713, + "end": 82717, "loc": { "start": { - "line": 2349, - "column": 18 + "line": 2359, + "column": 36 }, "end": { - "line": 2349, - "column": 22 + "line": 2359, + "column": 40 } } }, { "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": 82114, - "end": 82115, + "start": 82717, + "end": 82718, "loc": { "start": { - "line": 2349, - "column": 23 + "line": 2359, + "column": 40 }, "end": { - "line": 2349, - "column": 24 + "line": 2359, + "column": 41 } } }, @@ -303410,17 +307251,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 82116, - "end": 82120, + "value": "cfg", + "start": 82719, + "end": 82722, "loc": { "start": { - "line": 2349, - "column": 25 + "line": 2359, + "column": 42 }, "end": { - "line": 2349, - "column": 29 + "line": 2359, + "column": 45 } } }, @@ -303437,16 +307278,16 @@ "binop": null, "updateContext": null }, - "start": 82120, - "end": 82121, + "start": 82722, + "end": 82723, "loc": { "start": { - "line": 2349, - "column": 29 + "line": 2359, + "column": 45 }, "end": { - "line": 2349, - "column": 30 + "line": 2359, + "column": 46 } } }, @@ -303462,42 +307303,17 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 82121, - "end": 82134, - "loc": { - "start": { - "line": 2349, - "column": 30 - }, - "end": { - "line": 2349, - "column": 43 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 82134, - "end": 82135, + "value": "positionsCompressed", + "start": 82723, + "end": 82742, "loc": { "start": { - "line": 2349, - "column": 43 + "line": 2359, + "column": 46 }, "end": { - "line": 2349, - "column": 44 + "line": 2359, + "column": 65 } } }, @@ -303513,16 +307329,16 @@ "postfix": false, "binop": null }, - "start": 82135, - "end": 82136, + "start": 82742, + "end": 82743, "loc": { "start": { - "line": 2349, - "column": 44 + "line": 2359, + "column": 65 }, "end": { - "line": 2349, - "column": 45 + "line": 2359, + "column": 66 } } }, @@ -303539,16 +307355,16 @@ "binop": null, "updateContext": null }, - "start": 82136, - "end": 82137, + "start": 82743, + "end": 82744, "loc": { "start": { - "line": 2349, - "column": 45 + "line": 2359, + "column": 66 }, "end": { - "line": 2349, - "column": 46 + "line": 2359, + "column": 67 } } }, @@ -303564,17 +307380,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82150, - "end": 82153, + "value": "geometryCompressionUtils", + "start": 82757, + "end": 82781, "loc": { "start": { - "line": 2350, + "line": 2360, "column": 12 }, "end": { - "line": 2350, - "column": 15 + "line": 2360, + "column": 36 } } }, @@ -303591,16 +307407,16 @@ "binop": null, "updateContext": null }, - "start": 82153, - "end": 82154, + "start": 82781, + "end": 82782, "loc": { "start": { - "line": 2350, - "column": 15 + "line": 2360, + "column": 36 }, "end": { - "line": 2350, - "column": 16 + "line": 2360, + "column": 37 } } }, @@ -303616,44 +307432,42 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 82154, - "end": 82175, + "value": "decompressAABB", + "start": 82782, + "end": 82796, "loc": { "start": { - "line": 2350, - "column": 16 + "line": 2360, + "column": 37 }, "end": { - "line": 2350, - "column": 37 + "line": 2360, + "column": 51 } } }, { "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": 82176, - "end": 82177, + "start": 82796, + "end": 82797, "loc": { "start": { - "line": 2350, - "column": 38 + "line": 2360, + "column": 51 }, "end": { - "line": 2350, - "column": 39 + "line": 2360, + "column": 52 } } }, @@ -303669,24 +307483,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 82178, - "end": 82182, + "value": "aabb", + "start": 82797, + "end": 82801, "loc": { "start": { - "line": 2350, - "column": 40 + "line": 2360, + "column": 52 }, "end": { - "line": 2350, - "column": 44 + "line": 2360, + "column": 56 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -303696,16 +307510,16 @@ "binop": null, "updateContext": null }, - "start": 82182, - "end": 82183, + "start": 82801, + "end": 82802, "loc": { "start": { - "line": 2350, - "column": 44 + "line": 2360, + "column": 56 }, "end": { - "line": 2350, - "column": 45 + "line": 2360, + "column": 57 } } }, @@ -303721,24 +307535,50 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 82183, - "end": 82187, + "value": "cfg", + "start": 82803, + "end": 82806, "loc": { "start": { - "line": 2350, - "column": 45 + "line": 2360, + "column": 58 }, "end": { - "line": 2350, - "column": 49 + "line": 2360, + "column": 61 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 82806, + "end": 82807, + "loc": { + "start": { + "line": 2360, + "column": 61 + }, + "end": { + "line": 2360, + "column": 62 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -303747,16 +307587,17 @@ "postfix": false, "binop": null }, - "start": 82187, - "end": 82188, + "value": "positionsDecodeMatrix", + "start": 82807, + "end": 82828, "loc": { "start": { - "line": 2350, - "column": 49 + "line": 2360, + "column": 62 }, "end": { - "line": 2350, - "column": 50 + "line": 2360, + "column": 83 } } }, @@ -303772,16 +307613,16 @@ "postfix": false, "binop": null }, - "start": 82188, - "end": 82189, + "start": 82828, + "end": 82829, "loc": { "start": { - "line": 2350, - "column": 50 + "line": 2360, + "column": 83 }, "end": { - "line": 2350, - "column": 51 + "line": 2360, + "column": 84 } } }, @@ -303798,16 +307639,16 @@ "binop": null, "updateContext": null }, - "start": 82189, - "end": 82190, + "start": 82829, + "end": 82830, "loc": { "start": { - "line": 2350, - "column": 51 + "line": 2360, + "column": 84 }, "end": { - "line": 2350, - "column": 52 + "line": 2360, + "column": 85 } } }, @@ -303823,17 +307664,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 82203, - "end": 82207, + "value": "cfg", + "start": 82843, + "end": 82846, "loc": { "start": { - "line": 2351, + "line": 2361, "column": 12 }, "end": { - "line": 2351, - "column": 16 + "line": 2361, + "column": 15 } } }, @@ -303850,16 +307691,16 @@ "binop": null, "updateContext": null }, - "start": 82207, - "end": 82208, + "start": 82846, + "end": 82847, "loc": { "start": { - "line": 2351, - "column": 16 + "line": 2361, + "column": 15 }, "end": { - "line": 2351, - "column": 17 + "line": 2361, + "column": 16 } } }, @@ -303875,42 +307716,44 @@ "postfix": false, "binop": null }, - "value": "expandAABB3Points3", - "start": 82208, - "end": 82226, + "value": "aabb", + "start": 82847, + "end": 82851, "loc": { "start": { - "line": 2351, - "column": 17 + "line": 2361, + "column": 16 }, "end": { - "line": 2351, - "column": 35 + "line": 2361, + "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 + "binop": null, + "updateContext": null }, - "start": 82226, - "end": 82227, + "value": "=", + "start": 82852, + "end": 82853, "loc": { "start": { - "line": 2351, - "column": 35 + "line": 2361, + "column": 21 }, "end": { - "line": 2351, - "column": 36 + "line": 2361, + "column": 22 } } }, @@ -303927,22 +307770,22 @@ "binop": null }, "value": "aabb", - "start": 82227, - "end": 82231, + "start": 82854, + "end": 82858, "loc": { "start": { - "line": 2351, - "column": 36 + "line": 2361, + "column": 23 }, "end": { - "line": 2351, - "column": 40 + "line": 2361, + "column": 27 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -303953,24 +307796,24 @@ "binop": null, "updateContext": null }, - "start": 82231, - "end": 82232, + "start": 82858, + "end": 82859, "loc": { "start": { - "line": 2351, - "column": 40 + "line": 2361, + "column": 27 }, "end": { - "line": 2351, - "column": 41 + "line": 2361, + "column": 28 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -303978,24 +307821,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82233, - "end": 82236, + "start": 82868, + "end": 82869, "loc": { "start": { - "line": 2351, - "column": 42 + "line": 2362, + "column": 8 }, "end": { - "line": 2351, - "column": 45 + "line": 2362, + "column": 9 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -304005,23 +307848,52 @@ "binop": null, "updateContext": null }, - "start": 82236, - "end": 82237, + "value": "else", + "start": 82870, + "end": 82874, "loc": { "start": { - "line": 2351, - "column": 45 + "line": 2362, + "column": 10 }, "end": { - "line": 2351, - "column": 46 + "line": 2362, + "column": 14 } } }, { "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": 82875, + "end": 82877, + "loc": { + "start": { + "line": 2362, + "column": 15 + }, + "end": { + "line": 2362, + "column": 17 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -304030,25 +307902,24 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 82237, - "end": 82246, + "start": 82878, + "end": 82879, "loc": { "start": { - "line": 2351, - "column": 46 + "line": 2362, + "column": 18 }, "end": { - "line": 2351, - "column": 55 + "line": 2362, + "column": 19 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -304056,23 +307927,24 @@ "postfix": false, "binop": null }, - "start": 82246, - "end": 82247, + "value": "cfg", + "start": 82879, + "end": 82882, "loc": { "start": { - "line": 2351, - "column": 55 + "line": 2362, + "column": 19 }, "end": { - "line": 2351, - "column": 56 + "line": 2362, + "column": 22 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -304082,16 +307954,16 @@ "binop": null, "updateContext": null }, - "start": 82247, - "end": 82248, + "start": 82882, + "end": 82883, "loc": { "start": { - "line": 2351, - "column": 56 + "line": 2362, + "column": 22 }, "end": { - "line": 2351, - "column": 57 + "line": 2362, + "column": 23 } } }, @@ -304107,23 +307979,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82261, - "end": 82264, + "value": "buckets", + "start": 82883, + "end": 82890, "loc": { "start": { - "line": 2352, - "column": 12 + "line": 2362, + "column": 23 }, "end": { - "line": 2352, - "column": 15 + "line": 2362, + "column": 30 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -304131,26 +308003,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 82264, - "end": 82265, + "start": 82890, + "end": 82891, "loc": { "start": { - "line": 2352, - "column": 15 + "line": 2362, + "column": 30 }, "end": { - "line": 2352, - "column": 16 + "line": 2362, + "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -304159,44 +308030,44 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 82265, - "end": 82284, + "start": 82892, + "end": 82893, "loc": { "start": { - "line": 2352, - "column": 16 + "line": 2362, + "column": 32 }, "end": { - "line": 2352, - "column": 35 + "line": 2362, + "column": 33 } } }, { "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": 82285, - "end": 82286, + "value": "const", + "start": 82906, + "end": 82911, "loc": { "start": { - "line": 2352, - "column": 36 + "line": 2363, + "column": 12 }, "end": { - "line": 2352, - "column": 37 + "line": 2363, + "column": 17 } } }, @@ -304212,42 +308083,44 @@ "postfix": false, "binop": null }, - "value": "quantizePositions", - "start": 82287, - "end": 82304, + "value": "aabb", + "start": 82912, + "end": 82916, "loc": { "start": { - "line": 2352, - "column": 38 + "line": 2363, + "column": 18 }, "end": { - "line": 2352, - "column": 55 + "line": 2363, + "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": 82304, - "end": 82305, + "value": "=", + "start": 82917, + "end": 82918, "loc": { "start": { - "line": 2352, - "column": 55 + "line": 2363, + "column": 23 }, "end": { - "line": 2352, - "column": 56 + "line": 2363, + "column": 24 } } }, @@ -304263,17 +308136,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82305, - "end": 82308, + "value": "math", + "start": 82919, + "end": 82923, "loc": { "start": { - "line": 2352, - "column": 56 + "line": 2363, + "column": 25 }, "end": { - "line": 2352, - "column": 59 + "line": 2363, + "column": 29 } } }, @@ -304290,16 +308163,16 @@ "binop": null, "updateContext": null }, - "start": 82308, - "end": 82309, + "start": 82923, + "end": 82924, "loc": { "start": { - "line": 2352, - "column": 59 + "line": 2363, + "column": 29 }, "end": { - "line": 2352, - "column": 60 + "line": 2363, + "column": 30 } } }, @@ -304315,51 +308188,50 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 82309, - "end": 82318, + "value": "collapseAABB3", + "start": 82924, + "end": 82937, "loc": { "start": { - "line": 2352, - "column": 60 + "line": 2363, + "column": 30 }, "end": { - "line": 2352, - "column": 69 + "line": 2363, + "column": 43 } } }, { "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": 82318, - "end": 82319, + "start": 82937, + "end": 82938, "loc": { "start": { - "line": 2352, - "column": 69 + "line": 2363, + "column": 43 }, "end": { - "line": 2352, - "column": 70 + "line": 2363, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -304367,23 +308239,22 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 82320, - "end": 82324, + "start": 82938, + "end": 82939, "loc": { "start": { - "line": 2352, - "column": 71 + "line": 2363, + "column": 44 }, "end": { - "line": 2352, - "column": 75 + "line": 2363, + "column": 45 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -304394,22 +308265,23 @@ "binop": null, "updateContext": null }, - "start": 82324, - "end": 82325, + "start": 82939, + "end": 82940, "loc": { "start": { - "line": 2352, - "column": 75 + "line": 2363, + "column": 45 }, "end": { - "line": 2352, - "column": 76 + "line": 2363, + "column": 46 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -304417,19 +308289,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 82326, - "end": 82329, + "value": "this", + "start": 82953, + "end": 82957, "loc": { "start": { - "line": 2352, - "column": 77 + "line": 2364, + "column": 12 }, "end": { - "line": 2352, - "column": 80 + "line": 2364, + "column": 16 } } }, @@ -304446,16 +308319,16 @@ "binop": null, "updateContext": null }, - "start": 82329, - "end": 82330, + "start": 82957, + "end": 82958, "loc": { "start": { - "line": 2352, - "column": 80 + "line": 2364, + "column": 16 }, "end": { - "line": 2352, - "column": 81 + "line": 2364, + "column": 17 } } }, @@ -304471,146 +308344,147 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 82330, - "end": 82351, + "value": "_dtxBuckets", + "start": 82958, + "end": 82969, "loc": { "start": { - "line": 2352, - "column": 81 + "line": 2364, + "column": 17 }, "end": { - "line": 2352, - "column": 102 + "line": 2364, + "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 + "binop": null, + "updateContext": null }, - "start": 82351, - "end": 82352, + "start": 82969, + "end": 82970, "loc": { "start": { - "line": 2352, - "column": 102 + "line": 2364, + "column": 28 }, "end": { - "line": 2352, - "column": 103 + "line": 2364, + "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": 82352, - "end": 82353, + "value": "cfg", + "start": 82970, + "end": 82973, "loc": { "start": { - "line": 2352, - "column": 103 + "line": 2364, + "column": 29 }, "end": { - "line": 2352, - "column": 104 + "line": 2364, + "column": 32 } } }, { "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": "cfg", - "start": 82366, - "end": 82369, + "start": 82973, + "end": 82974, "loc": { "start": { - "line": 2353, - "column": 12 + "line": 2364, + "column": 32 }, "end": { - "line": 2353, - "column": 15 + "line": 2364, + "column": 33 } } }, { "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": 82369, - "end": 82370, + "value": "id", + "start": 82974, + "end": 82976, "loc": { "start": { - "line": 2353, - "column": 15 + "line": 2364, + "column": 33 }, "end": { - "line": 2353, - "column": 16 + "line": 2364, + "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": "aabb", - "start": 82370, - "end": 82374, + "start": 82976, + "end": 82977, "loc": { "start": { - "line": 2353, - "column": 16 + "line": 2364, + "column": 35 }, "end": { - "line": 2353, - "column": 20 + "line": 2364, + "column": 36 } } }, @@ -304628,16 +308502,16 @@ "updateContext": null }, "value": "=", - "start": 82375, - "end": 82376, + "start": 82978, + "end": 82979, "loc": { "start": { - "line": 2353, - "column": 21 + "line": 2364, + "column": 37 }, "end": { - "line": 2353, - "column": 22 + "line": 2364, + "column": 38 } } }, @@ -304653,24 +308527,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 82377, - "end": 82381, + "value": "cfg", + "start": 82980, + "end": 82983, "loc": { "start": { - "line": 2353, - "column": 23 + "line": 2364, + "column": 39 }, "end": { - "line": 2353, - "column": 27 + "line": 2364, + "column": 42 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -304680,24 +308554,24 @@ "binop": null, "updateContext": null }, - "start": 82381, - "end": 82382, + "start": 82983, + "end": 82984, "loc": { "start": { - "line": 2353, - "column": 27 + "line": 2364, + "column": 42 }, "end": { - "line": 2353, - "column": 28 + "line": 2364, + "column": 43 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -304705,23 +308579,23 @@ "postfix": false, "binop": null }, - "start": 82391, - "end": 82392, + "value": "buckets", + "start": 82984, + "end": 82991, "loc": { "start": { - "line": 2354, - "column": 8 + "line": 2364, + "column": 43 }, "end": { - "line": 2354, - "column": 9 + "line": 2364, + "column": 50 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -304732,45 +308606,44 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 82393, - "end": 82397, + "start": 82991, + "end": 82992, "loc": { "start": { - "line": 2354, - "column": 10 + "line": 2364, + "column": 50 }, "end": { - "line": 2354, - "column": 14 + "line": 2364, + "column": 51 } } }, { "type": { - "label": "if", - "keyword": "if", + "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": "if", - "start": 82398, - "end": 82400, + "value": "for", + "start": 83005, + "end": 83008, "loc": { "start": { - "line": 2354, - "column": 15 + "line": 2365, + "column": 12 }, "end": { - "line": 2354, - "column": 17 + "line": 2365, + "column": 15 } } }, @@ -304786,48 +308659,23 @@ "postfix": false, "binop": null }, - "start": 82401, - "end": 82402, - "loc": { - "start": { - "line": 2354, - "column": 18 - }, - "end": { - "line": 2354, - "column": 19 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "cfg", - "start": 82402, - "end": 82405, + "start": 83009, + "end": 83010, "loc": { "start": { - "line": 2354, - "column": 19 + "line": 2365, + "column": 16 }, "end": { - "line": 2354, - "column": 22 + "line": 2365, + "column": 17 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -304838,16 +308686,17 @@ "binop": null, "updateContext": null }, - "start": 82405, - "end": 82406, + "value": "let", + "start": 83010, + "end": 83013, "loc": { "start": { - "line": 2354, - "column": 22 + "line": 2365, + "column": 17 }, "end": { - "line": 2354, - "column": 23 + "line": 2365, + "column": 20 } } }, @@ -304863,75 +308712,78 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 82406, - "end": 82425, + "value": "i", + "start": 83014, + "end": 83015, "loc": { "start": { - "line": 2354, - "column": 23 + "line": 2365, + "column": 21 }, "end": { - "line": 2354, - "column": 42 + "line": 2365, + "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 + "binop": null, + "updateContext": null }, - "start": 82425, - "end": 82426, + "value": "=", + "start": 83016, + "end": 83017, "loc": { "start": { - "line": 2354, - "column": 42 + "line": 2365, + "column": 23 }, "end": { - "line": 2354, - "column": 43 + "line": 2365, + "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": 82427, - "end": 82428, + "value": 0, + "start": 83018, + "end": 83019, "loc": { "start": { - "line": 2354, - "column": 44 + "line": 2365, + "column": 25 }, "end": { - "line": 2354, - "column": 45 + "line": 2365, + "column": 26 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -304941,17 +308793,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 82441, - "end": 82446, + "start": 83019, + "end": 83020, "loc": { "start": { - "line": 2355, - "column": 12 + "line": 2365, + "column": 26 }, "end": { - "line": 2355, - "column": 17 + "line": 2365, + "column": 27 } } }, @@ -304967,17 +308818,17 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 82447, - "end": 82451, + "value": "len", + "start": 83021, + "end": 83024, "loc": { "start": { - "line": 2355, - "column": 18 + "line": 2365, + "column": 28 }, "end": { - "line": 2355, - "column": 22 + "line": 2365, + "column": 31 } } }, @@ -304995,16 +308846,16 @@ "updateContext": null }, "value": "=", - "start": 82452, - "end": 82453, + "start": 83025, + "end": 83026, "loc": { "start": { - "line": 2355, - "column": 23 + "line": 2365, + "column": 32 }, "end": { - "line": 2355, - "column": 24 + "line": 2365, + "column": 33 } } }, @@ -305020,17 +308871,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 82454, - "end": 82458, + "value": "cfg", + "start": 83027, + "end": 83030, "loc": { "start": { - "line": 2355, - "column": 25 + "line": 2365, + "column": 34 }, "end": { - "line": 2355, - "column": 29 + "line": 2365, + "column": 37 } } }, @@ -305047,16 +308898,16 @@ "binop": null, "updateContext": null }, - "start": 82458, - "end": 82459, + "start": 83030, + "end": 83031, "loc": { "start": { - "line": 2355, - "column": 29 + "line": 2365, + "column": 37 }, "end": { - "line": 2355, - "column": 30 + "line": 2365, + "column": 38 } } }, @@ -305072,50 +308923,51 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 82459, - "end": 82472, + "value": "buckets", + "start": 83031, + "end": 83038, "loc": { "start": { - "line": 2355, - "column": 30 + "line": 2365, + "column": 38 }, "end": { - "line": 2355, - "column": 43 + "line": 2365, + "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 + "binop": null, + "updateContext": null }, - "start": 82472, - "end": 82473, + "start": 83038, + "end": 83039, "loc": { "start": { - "line": 2355, - "column": 43 + "line": 2365, + "column": 45 }, "end": { - "line": 2355, - "column": 44 + "line": 2365, + "column": 46 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -305123,16 +308975,17 @@ "postfix": false, "binop": null }, - "start": 82473, - "end": 82474, + "value": "length", + "start": 83039, + "end": 83045, "loc": { "start": { - "line": 2355, - "column": 44 + "line": 2365, + "column": 46 }, "end": { - "line": 2355, - "column": 45 + "line": 2365, + "column": 52 } } }, @@ -305149,16 +309002,16 @@ "binop": null, "updateContext": null }, - "start": 82474, - "end": 82475, + "start": 83045, + "end": 83046, "loc": { "start": { - "line": 2355, - "column": 45 + "line": 2365, + "column": 52 }, "end": { - "line": 2355, - "column": 46 + "line": 2365, + "column": 53 } } }, @@ -305174,43 +309027,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82488, - "end": 82491, + "value": "i", + "start": 83047, + "end": 83048, "loc": { "start": { - "line": 2356, - "column": 12 + "line": 2365, + "column": 54 }, "end": { - "line": 2356, - "column": 15 + "line": 2365, + "column": 55 } } }, { "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": 82491, - "end": 82492, + "value": "<", + "start": 83049, + "end": 83050, "loc": { "start": { - "line": 2356, - "column": 15 + "line": 2365, + "column": 56 }, "end": { - "line": 2356, - "column": 16 + "line": 2365, + "column": 57 } } }, @@ -305226,106 +309080,103 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 82492, - "end": 82513, + "value": "len", + "start": 83051, + "end": 83054, "loc": { - "start": { - "line": 2356, - "column": 16 + "start": { + "line": 2365, + "column": 58 }, "end": { - "line": 2356, - "column": 37 + "line": 2365, + "column": 61 } } }, { "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": 82514, - "end": 82515, + "start": 83054, + "end": 83055, "loc": { "start": { - "line": 2356, - "column": 38 + "line": 2365, + "column": 61 }, "end": { - "line": 2356, - "column": 39 + "line": 2365, + "column": 62 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "new", - "start": 82516, - "end": 82519, + "value": "i", + "start": 83056, + "end": 83057, "loc": { "start": { - "line": 2356, - "column": 40 + "line": 2365, + "column": 63 }, "end": { - "line": 2356, - "column": 43 + "line": 2365, + "column": 64 } } }, { "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": "Float64Array", - "start": 82520, - "end": 82532, + "value": "++", + "start": 83057, + "end": 83059, "loc": { "start": { - "line": 2356, - "column": 44 + "line": 2365, + "column": 64 }, "end": { - "line": 2356, - "column": 56 + "line": 2365, + "column": 66 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -305333,23 +309184,23 @@ "postfix": false, "binop": null }, - "start": 82532, - "end": 82533, + "start": 83059, + "end": 83060, "loc": { "start": { - "line": 2356, - "column": 56 + "line": 2365, + "column": 66 }, "end": { - "line": 2356, - "column": 57 + "line": 2365, + "column": 67 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -305358,23 +309209,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82533, - "end": 82536, + "start": 83061, + "end": 83062, "loc": { "start": { - "line": 2356, - "column": 57 + "line": 2365, + "column": 68 }, "end": { - "line": 2356, - "column": 60 + "line": 2365, + "column": 69 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -305385,16 +309236,17 @@ "binop": null, "updateContext": null }, - "start": 82536, - "end": 82537, + "value": "const", + "start": 83079, + "end": 83084, "loc": { "start": { - "line": 2356, - "column": 60 + "line": 2366, + "column": 16 }, "end": { - "line": 2356, - "column": 61 + "line": 2366, + "column": 21 } } }, @@ -305410,49 +309262,77 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 82537, - "end": 82558, + "value": "bucket", + "start": 83085, + "end": 83091, "loc": { "start": { - "line": 2356, - "column": 61 + "line": 2366, + "column": 22 }, "end": { - "line": 2356, - "column": 82 + "line": 2366, + "column": 28 } } }, { "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": 83092, + "end": 83093, + "loc": { + "start": { + "line": 2366, + "column": 29 + }, + "end": { + "line": 2366, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, - "start": 82558, - "end": 82559, + "value": "cfg", + "start": 83094, + "end": 83097, "loc": { "start": { - "line": 2356, - "column": 82 + "line": 2366, + "column": 31 }, "end": { - "line": 2356, - "column": 83 + "line": 2366, + "column": 34 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -305462,16 +309342,16 @@ "binop": null, "updateContext": null }, - "start": 82559, - "end": 82560, + "start": 83097, + "end": 83098, "loc": { "start": { - "line": 2356, - "column": 83 + "line": 2366, + "column": 34 }, "end": { - "line": 2356, - "column": 84 + "line": 2366, + "column": 35 } } }, @@ -305487,25 +309367,25 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82573, - "end": 82576, + "value": "buckets", + "start": 83098, + "end": 83105, "loc": { "start": { - "line": 2357, - "column": 12 + "line": 2366, + "column": 35 }, "end": { - "line": 2357, - "column": 15 + "line": 2366, + "column": 42 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -305514,16 +309394,16 @@ "binop": null, "updateContext": null }, - "start": 82576, - "end": 82577, + "start": 83105, + "end": 83106, "loc": { "start": { - "line": 2357, - "column": 15 + "line": 2366, + "column": 42 }, "end": { - "line": 2357, - "column": 16 + "line": 2366, + "column": 43 } } }, @@ -305539,53 +309419,51 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 82577, - "end": 82596, + "value": "i", + "start": 83106, + "end": 83107, "loc": { "start": { - "line": 2357, - "column": 16 + "line": 2366, + "column": 43 }, "end": { - "line": 2357, - "column": 35 + "line": 2366, + "column": 44 } } }, { "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": 82597, - "end": 82598, + "start": 83107, + "end": 83108, "loc": { "start": { - "line": 2357, - "column": 36 + "line": 2366, + "column": 44 }, "end": { - "line": 2357, - "column": 37 + "line": 2366, + "column": 45 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -305594,43 +309472,44 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 82599, - "end": 82602, + "start": 83108, + "end": 83109, "loc": { "start": { - "line": 2357, - "column": 38 + "line": 2366, + "column": 45 }, "end": { - "line": 2357, - "column": 41 + "line": 2366, + "column": 46 } } }, { "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": "Uint16Array", - "start": 82603, - "end": 82614, + "value": "if", + "start": 83126, + "end": 83128, "loc": { "start": { - "line": 2357, - "column": 42 + "line": 2367, + "column": 16 }, "end": { - "line": 2357, - "column": 53 + "line": 2367, + "column": 18 } } }, @@ -305646,16 +309525,16 @@ "postfix": false, "binop": null }, - "start": 82614, - "end": 82615, + "start": 83129, + "end": 83130, "loc": { "start": { - "line": 2357, - "column": 53 + "line": 2367, + "column": 19 }, "end": { - "line": 2357, - "column": 54 + "line": 2367, + "column": 20 } } }, @@ -305671,17 +309550,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82615, - "end": 82618, + "value": "bucket", + "start": 83130, + "end": 83136, "loc": { "start": { - "line": 2357, - "column": 54 + "line": 2367, + "column": 20 }, "end": { - "line": 2357, - "column": 57 + "line": 2367, + "column": 26 } } }, @@ -305698,16 +309577,16 @@ "binop": null, "updateContext": null }, - "start": 82618, - "end": 82619, + "start": 83136, + "end": 83137, "loc": { "start": { - "line": 2357, - "column": 57 + "line": 2367, + "column": 26 }, "end": { - "line": 2357, - "column": 58 + "line": 2367, + "column": 27 } } }, @@ -305723,17 +309602,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 82619, - "end": 82638, + "value": "positions", + "start": 83137, + "end": 83146, "loc": { "start": { - "line": 2357, - "column": 58 + "line": 2367, + "column": 27 }, "end": { - "line": 2357, - "column": 77 + "line": 2367, + "column": 36 } } }, @@ -305749,42 +309628,41 @@ "postfix": false, "binop": null }, - "start": 82638, - "end": 82639, + "start": 83146, + "end": 83147, "loc": { "start": { - "line": 2357, - "column": 77 + "line": 2367, + "column": 36 }, "end": { - "line": 2357, - "column": 78 + "line": 2367, + "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": 82639, - "end": 82640, + "start": 83148, + "end": 83149, "loc": { "start": { - "line": 2357, - "column": 78 + "line": 2367, + "column": 38 }, "end": { - "line": 2357, - "column": 79 + "line": 2367, + "column": 39 } } }, @@ -305801,16 +309679,16 @@ "binop": null }, "value": "math", - "start": 82653, - "end": 82657, + "start": 83170, + "end": 83174, "loc": { "start": { - "line": 2358, - "column": 12 + "line": 2368, + "column": 20 }, "end": { - "line": 2358, - "column": 16 + "line": 2368, + "column": 24 } } }, @@ -305827,16 +309705,16 @@ "binop": null, "updateContext": null }, - "start": 82657, - "end": 82658, + "start": 83174, + "end": 83175, "loc": { "start": { - "line": 2358, - "column": 16 + "line": 2368, + "column": 24 }, "end": { - "line": 2358, - "column": 17 + "line": 2368, + "column": 25 } } }, @@ -305853,16 +309731,16 @@ "binop": null }, "value": "expandAABB3Points3", - "start": 82658, - "end": 82676, + "start": 83175, + "end": 83193, "loc": { "start": { - "line": 2358, - "column": 17 + "line": 2368, + "column": 25 }, "end": { - "line": 2358, - "column": 35 + "line": 2368, + "column": 43 } } }, @@ -305878,16 +309756,16 @@ "postfix": false, "binop": null }, - "start": 82676, - "end": 82677, + "start": 83193, + "end": 83194, "loc": { "start": { - "line": 2358, - "column": 35 + "line": 2368, + "column": 43 }, "end": { - "line": 2358, - "column": 36 + "line": 2368, + "column": 44 } } }, @@ -305904,16 +309782,16 @@ "binop": null }, "value": "aabb", - "start": 82677, - "end": 82681, + "start": 83194, + "end": 83198, "loc": { "start": { - "line": 2358, - "column": 36 + "line": 2368, + "column": 44 }, "end": { - "line": 2358, - "column": 40 + "line": 2368, + "column": 48 } } }, @@ -305930,16 +309808,16 @@ "binop": null, "updateContext": null }, - "start": 82681, - "end": 82682, + "start": 83198, + "end": 83199, "loc": { "start": { - "line": 2358, - "column": 40 + "line": 2368, + "column": 48 }, "end": { - "line": 2358, - "column": 41 + "line": 2368, + "column": 49 } } }, @@ -305955,17 +309833,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82683, - "end": 82686, + "value": "bucket", + "start": 83200, + "end": 83206, "loc": { "start": { - "line": 2358, - "column": 42 + "line": 2368, + "column": 50 }, "end": { - "line": 2358, - "column": 45 + "line": 2368, + "column": 56 } } }, @@ -305982,16 +309860,16 @@ "binop": null, "updateContext": null }, - "start": 82686, - "end": 82687, + "start": 83206, + "end": 83207, "loc": { "start": { - "line": 2358, - "column": 45 + "line": 2368, + "column": 56 }, "end": { - "line": 2358, - "column": 46 + "line": 2368, + "column": 57 } } }, @@ -306007,17 +309885,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 82687, - "end": 82706, + "value": "positions", + "start": 83207, + "end": 83216, "loc": { "start": { - "line": 2358, - "column": 46 + "line": 2368, + "column": 57 }, "end": { - "line": 2358, - "column": 65 + "line": 2368, + "column": 66 } } }, @@ -306033,16 +309911,16 @@ "postfix": false, "binop": null }, - "start": 82706, - "end": 82707, + "start": 83216, + "end": 83217, "loc": { "start": { - "line": 2358, - "column": 65 + "line": 2368, + "column": 66 }, "end": { - "line": 2358, - "column": 66 + "line": 2368, + "column": 67 } } }, @@ -306059,24 +309937,24 @@ "binop": null, "updateContext": null }, - "start": 82707, - "end": 82708, + "start": 83217, + "end": 83218, "loc": { "start": { - "line": 2358, - "column": 66 + "line": 2368, + "column": 67 }, "end": { - "line": 2358, - "column": 67 + "line": 2368, + "column": 68 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -306084,24 +309962,24 @@ "postfix": false, "binop": null }, - "value": "geometryCompressionUtils", - "start": 82721, - "end": 82745, + "start": 83235, + "end": 83236, "loc": { "start": { - "line": 2359, - "column": 12 + "line": 2369, + "column": 16 }, "end": { - "line": 2359, - "column": 36 + "line": 2369, + "column": 17 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -306111,42 +309989,45 @@ "binop": null, "updateContext": null }, - "start": 82745, - "end": 82746, + "value": "else", + "start": 83237, + "end": 83241, "loc": { "start": { - "line": 2359, - "column": 36 + "line": 2369, + "column": 18 }, "end": { - "line": 2359, - "column": 37 + "line": 2369, + "column": 22 } } }, { "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": "decompressAABB", - "start": 82746, - "end": 82760, + "value": "if", + "start": 83242, + "end": 83244, "loc": { "start": { - "line": 2359, - "column": 37 + "line": 2369, + "column": 23 }, "end": { - "line": 2359, - "column": 51 + "line": 2369, + "column": 25 } } }, @@ -306162,16 +310043,16 @@ "postfix": false, "binop": null }, - "start": 82760, - "end": 82761, + "start": 83245, + "end": 83246, "loc": { "start": { - "line": 2359, - "column": 51 + "line": 2369, + "column": 26 }, "end": { - "line": 2359, - "column": 52 + "line": 2369, + "column": 27 } } }, @@ -306187,24 +310068,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 82761, - "end": 82765, + "value": "bucket", + "start": 83246, + "end": 83252, "loc": { "start": { - "line": 2359, - "column": 52 + "line": 2369, + "column": 27 }, "end": { - "line": 2359, - "column": 56 + "line": 2369, + "column": 33 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -306214,16 +310095,16 @@ "binop": null, "updateContext": null }, - "start": 82765, - "end": 82766, + "start": 83252, + "end": 83253, "loc": { "start": { - "line": 2359, - "column": 56 + "line": 2369, + "column": 33 }, "end": { - "line": 2359, - "column": 57 + "line": 2369, + "column": 34 } } }, @@ -306239,23 +310120,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82767, - "end": 82770, + "value": "positionsCompressed", + "start": 83253, + "end": 83272, "loc": { "start": { - "line": 2359, - "column": 58 + "line": 2369, + "column": 34 }, "end": { - "line": 2359, - "column": 61 + "line": 2369, + "column": 53 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -306263,26 +310144,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 82770, - "end": 82771, + "start": 83272, + "end": 83273, "loc": { "start": { - "line": 2359, - "column": 61 + "line": 2369, + "column": 53 }, "end": { - "line": 2359, - "column": 62 + "line": 2369, + "column": 54 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -306291,25 +310171,24 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 82771, - "end": 82792, + "start": 83274, + "end": 83275, "loc": { "start": { - "line": 2359, - "column": 62 + "line": 2369, + "column": 55 }, "end": { - "line": 2359, - "column": 83 + "line": 2369, + "column": 56 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -306317,23 +310196,24 @@ "postfix": false, "binop": null }, - "start": 82792, - "end": 82793, + "value": "math", + "start": 83296, + "end": 83300, "loc": { "start": { - "line": 2359, - "column": 83 + "line": 2370, + "column": 20 }, "end": { - "line": 2359, - "column": 84 + "line": 2370, + "column": 24 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -306343,16 +310223,16 @@ "binop": null, "updateContext": null }, - "start": 82793, - "end": 82794, + "start": 83300, + "end": 83301, "loc": { "start": { - "line": 2359, - "column": 84 + "line": 2370, + "column": 24 }, "end": { - "line": 2359, - "column": 85 + "line": 2370, + "column": 25 } } }, @@ -306368,43 +310248,42 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82807, - "end": 82810, + "value": "expandAABB3Points3", + "start": 83301, + "end": 83319, "loc": { "start": { - "line": 2360, - "column": 12 + "line": 2370, + "column": 25 }, "end": { - "line": 2360, - "column": 15 + "line": 2370, + "column": 43 } } }, { "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": 82810, - "end": 82811, + "start": 83319, + "end": 83320, "loc": { "start": { - "line": 2360, - "column": 15 + "line": 2370, + "column": 43 }, "end": { - "line": 2360, - "column": 16 + "line": 2370, + "column": 44 } } }, @@ -306421,43 +310300,42 @@ "binop": null }, "value": "aabb", - "start": 82811, - "end": 82815, + "start": 83320, + "end": 83324, "loc": { "start": { - "line": 2360, - "column": 16 + "line": 2370, + "column": 44 }, "end": { - "line": 2360, - "column": 20 + "line": 2370, + "column": 48 } } }, { "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": 82816, - "end": 82817, + "start": 83324, + "end": 83325, "loc": { "start": { - "line": 2360, - "column": 21 + "line": 2370, + "column": 48 }, "end": { - "line": 2360, - "column": 22 + "line": 2370, + "column": 49 } } }, @@ -306473,24 +310351,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 82818, - "end": 82822, + "value": "bucket", + "start": 83326, + "end": 83332, "loc": { "start": { - "line": 2360, - "column": 23 + "line": 2370, + "column": 50 }, "end": { - "line": 2360, - "column": 27 + "line": 2370, + "column": 56 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -306500,24 +310378,24 @@ "binop": null, "updateContext": null }, - "start": 82822, - "end": 82823, + "start": 83332, + "end": 83333, "loc": { "start": { - "line": 2360, - "column": 27 + "line": 2370, + "column": 56 }, "end": { - "line": 2360, - "column": 28 + "line": 2370, + "column": 57 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -306525,52 +310403,49 @@ "postfix": false, "binop": null }, - "start": 82832, - "end": 82833, + "value": "positionsCompressed", + "start": 83333, + "end": 83352, "loc": { "start": { - "line": 2361, - "column": 8 + "line": 2370, + "column": 57 }, "end": { - "line": 2361, - "column": 9 + "line": 2370, + "column": 76 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "else", - "start": 82834, - "end": 82838, + "start": 83352, + "end": 83353, "loc": { "start": { - "line": 2361, - "column": 10 + "line": 2370, + "column": 76 }, "end": { - "line": 2361, - "column": 14 + "line": 2370, + "column": 77 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -306580,25 +310455,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 82839, - "end": 82841, + "start": 83353, + "end": 83354, "loc": { "start": { - "line": 2361, - "column": 15 + "line": 2370, + "column": 77 }, "end": { - "line": 2361, - "column": 17 + "line": 2370, + "column": 78 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -306606,24 +310480,24 @@ "postfix": false, "binop": null }, - "start": 82842, - "end": 82843, + "start": 83371, + "end": 83372, "loc": { "start": { - "line": 2361, - "column": 18 + "line": 2371, + "column": 16 }, "end": { - "line": 2361, - "column": 19 + "line": 2371, + "column": 17 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -306631,23 +310505,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82843, - "end": 82846, + "start": 83385, + "end": 83386, "loc": { "start": { - "line": 2361, - "column": 19 + "line": 2372, + "column": 12 }, "end": { - "line": 2361, - "column": 22 + "line": 2372, + "column": 13 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -306658,23 +310532,24 @@ "binop": null, "updateContext": null }, - "start": 82846, - "end": 82847, + "value": "if", + "start": 83399, + "end": 83401, "loc": { "start": { - "line": 2361, - "column": 22 + "line": 2373, + "column": 12 }, "end": { - "line": 2361, - "column": 23 + "line": 2373, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -306683,25 +310558,24 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 82847, - "end": 82854, + "start": 83402, + "end": 83403, "loc": { "start": { - "line": 2361, - "column": 23 + "line": 2373, + "column": 15 }, "end": { - "line": 2361, - "column": 30 + "line": 2373, + "column": 16 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -306709,77 +310583,77 @@ "postfix": false, "binop": null }, - "start": 82854, - "end": 82855, + "value": "cfg", + "start": 83403, + "end": 83406, "loc": { "start": { - "line": 2361, - "column": 30 + "line": 2373, + "column": 16 }, "end": { - "line": 2361, - "column": 31 + "line": 2373, + "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": 82856, - "end": 82857, + "start": 83406, + "end": 83407, "loc": { "start": { - "line": 2361, - "column": 32 + "line": 2373, + "column": 19 }, "end": { - "line": 2361, - "column": 33 + "line": 2373, + "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": 82870, - "end": 82875, + "value": "positionsDecodeMatrix", + "start": 83407, + "end": 83428, "loc": { "start": { - "line": 2362, - "column": 12 + "line": 2373, + "column": 20 }, "end": { - "line": 2362, - "column": 17 + "line": 2373, + "column": 41 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -306787,44 +310661,41 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 82876, - "end": 82880, + "start": 83428, + "end": 83429, "loc": { "start": { - "line": 2362, - "column": 18 + "line": 2373, + "column": 41 }, "end": { - "line": 2362, - "column": 22 + "line": 2373, + "column": 42 } } }, { "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": 82881, - "end": 82882, + "start": 83430, + "end": 83431, "loc": { "start": { - "line": 2362, - "column": 23 + "line": 2373, + "column": 43 }, "end": { - "line": 2362, - "column": 24 + "line": 2373, + "column": 44 } } }, @@ -306840,17 +310711,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 82883, - "end": 82887, + "value": "geometryCompressionUtils", + "start": 83448, + "end": 83472, "loc": { "start": { - "line": 2362, - "column": 25 + "line": 2374, + "column": 16 }, "end": { - "line": 2362, - "column": 29 + "line": 2374, + "column": 40 } } }, @@ -306867,16 +310738,16 @@ "binop": null, "updateContext": null }, - "start": 82887, - "end": 82888, + "start": 83472, + "end": 83473, "loc": { "start": { - "line": 2362, - "column": 29 + "line": 2374, + "column": 40 }, "end": { - "line": 2362, - "column": 30 + "line": 2374, + "column": 41 } } }, @@ -306892,17 +310763,17 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 82888, - "end": 82901, + "value": "decompressAABB", + "start": 83473, + "end": 83487, "loc": { "start": { - "line": 2362, - "column": 30 + "line": 2374, + "column": 41 }, "end": { - "line": 2362, - "column": 43 + "line": 2374, + "column": 55 } } }, @@ -306918,24 +310789,24 @@ "postfix": false, "binop": null }, - "start": 82901, - "end": 82902, + "start": 83487, + "end": 83488, "loc": { "start": { - "line": 2362, - "column": 43 + "line": 2374, + "column": 55 }, "end": { - "line": 2362, - "column": 44 + "line": 2374, + "column": 56 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -306943,22 +310814,23 @@ "postfix": false, "binop": null }, - "start": 82902, - "end": 82903, + "value": "aabb", + "start": 83488, + "end": 83492, "loc": { "start": { - "line": 2362, - "column": 44 + "line": 2374, + "column": 56 }, "end": { - "line": 2362, - "column": 45 + "line": 2374, + "column": 60 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -306969,23 +310841,22 @@ "binop": null, "updateContext": null }, - "start": 82903, - "end": 82904, + "start": 83492, + "end": 83493, "loc": { "start": { - "line": 2362, - "column": 45 + "line": 2374, + "column": 60 }, "end": { - "line": 2362, - "column": 46 + "line": 2374, + "column": 61 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -306993,20 +310864,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 82917, - "end": 82921, + "value": "cfg", + "start": 83494, + "end": 83497, "loc": { "start": { - "line": 2363, - "column": 12 + "line": 2374, + "column": 62 }, "end": { - "line": 2363, - "column": 16 + "line": 2374, + "column": 65 } } }, @@ -307023,16 +310893,16 @@ "binop": null, "updateContext": null }, - "start": 82921, - "end": 82922, + "start": 83497, + "end": 83498, "loc": { "start": { - "line": 2363, - "column": 16 + "line": 2374, + "column": 65 }, "end": { - "line": 2363, - "column": 17 + "line": 2374, + "column": 66 } } }, @@ -307048,25 +310918,50 @@ "postfix": false, "binop": null }, - "value": "_dtxBuckets", - "start": 82922, - "end": 82933, + "value": "positionsDecodeMatrix", + "start": 83498, + "end": 83519, "loc": { "start": { - "line": 2363, - "column": 17 + "line": 2374, + "column": 66 }, "end": { - "line": 2363, - "column": 28 + "line": 2374, + "column": 87 } } }, { "type": { - "label": "[", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 83519, + "end": 83520, + "loc": { + "start": { + "line": 2374, + "column": 87 + }, + "end": { + "line": 2374, + "column": 88 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -307075,16 +310970,41 @@ "binop": null, "updateContext": null }, - "start": 82933, - "end": 82934, + "start": 83520, + "end": 83521, "loc": { "start": { - "line": 2363, - "column": 28 + "line": 2374, + "column": 88 }, "end": { - "line": 2363, - "column": 29 + "line": 2374, + "column": 89 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 83534, + "end": 83535, + "loc": { + "start": { + "line": 2375, + "column": 12 + }, + "end": { + "line": 2375, + "column": 13 } } }, @@ -307101,16 +311021,16 @@ "binop": null }, "value": "cfg", - "start": 82934, - "end": 82937, + "start": 83548, + "end": 83551, "loc": { "start": { - "line": 2363, - "column": 29 + "line": 2376, + "column": 12 }, "end": { - "line": 2363, - "column": 32 + "line": 2376, + "column": 15 } } }, @@ -307127,16 +311047,16 @@ "binop": null, "updateContext": null }, - "start": 82937, - "end": 82938, + "start": 83551, + "end": 83552, "loc": { "start": { - "line": 2363, - "column": 32 + "line": 2376, + "column": 15 }, "end": { - "line": 2363, - "column": 33 + "line": 2376, + "column": 16 } } }, @@ -307152,78 +311072,104 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 82938, - "end": 82940, + "value": "aabb", + "start": 83552, + "end": 83556, "loc": { "start": { - "line": 2363, - "column": 33 + "line": 2376, + "column": 16 }, "end": { - "line": 2363, - "column": 35 + "line": 2376, + "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": 82940, - "end": 82941, + "value": "=", + "start": 83557, + "end": 83558, "loc": { "start": { - "line": 2363, - "column": 35 + "line": 2376, + "column": 21 }, "end": { - "line": 2363, - "column": 36 + "line": 2376, + "column": 22 } } }, { "type": { - "label": "=", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "aabb", + "start": 83559, + "end": 83563, + "loc": { + "start": { + "line": 2376, + "column": 23 + }, + "end": { + "line": 2376, + "column": 27 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 82942, - "end": 82943, + "start": 83563, + "end": 83564, "loc": { "start": { - "line": 2363, - "column": 37 + "line": 2376, + "column": 27 }, "end": { - "line": 2363, - "column": 38 + "line": 2376, + "column": 28 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -307231,23 +311177,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 82944, - "end": 82947, + "start": 83573, + "end": 83574, "loc": { "start": { - "line": 2363, - "column": 39 + "line": 2377, + "column": 8 }, "end": { - "line": 2363, - "column": 42 + "line": 2377, + "column": 9 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -307258,23 +311204,24 @@ "binop": null, "updateContext": null }, - "start": 82947, - "end": 82948, + "value": "if", + "start": 83583, + "end": 83585, "loc": { "start": { - "line": 2363, - "column": 42 + "line": 2378, + "column": 8 }, "end": { - "line": 2363, - "column": 43 + "line": 2378, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -307283,78 +311230,75 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 82948, - "end": 82955, + "start": 83586, + "end": 83587, "loc": { "start": { - "line": 2363, - "column": 43 + "line": 2378, + "column": 11 }, "end": { - "line": 2363, - "column": 50 + "line": 2378, + "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": 82955, - "end": 82956, + "value": "cfg", + "start": 83587, + "end": 83590, "loc": { "start": { - "line": 2363, - "column": 50 + "line": 2378, + "column": 12 }, "end": { - "line": 2363, - "column": 51 + "line": 2378, + "column": 15 } } }, { "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 }, - "value": "for", - "start": 82969, - "end": 82972, + "start": 83590, + "end": 83591, "loc": { "start": { - "line": 2364, - "column": 12 + "line": 2378, + "column": 15 }, "end": { - "line": 2364, - "column": 15 + "line": 2378, + "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -307363,44 +311307,44 @@ "postfix": false, "binop": null }, - "start": 82973, - "end": 82974, + "value": "colorsCompressed", + "start": 83591, + "end": 83607, "loc": { "start": { - "line": 2364, + "line": 2378, "column": 16 }, "end": { - "line": 2364, - "column": 17 + "line": 2378, + "column": 32 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "let", - "start": 82974, - "end": 82977, + "value": "&&", + "start": 83608, + "end": 83610, "loc": { "start": { - "line": 2364, - "column": 17 + "line": 2378, + "column": 33 }, "end": { - "line": 2364, - "column": 20 + "line": 2378, + "column": 35 } } }, @@ -307416,50 +311360,49 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 82978, - "end": 82979, + "value": "cfg", + "start": 83611, + "end": 83614, "loc": { "start": { - "line": 2364, - "column": 21 + "line": 2378, + "column": 36 }, "end": { - "line": 2364, - "column": 22 + "line": 2378, + "column": 39 } } }, { "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": 82980, - "end": 82981, + "start": 83614, + "end": 83615, "loc": { "start": { - "line": 2364, - "column": 23 + "line": 2378, + "column": 39 }, "end": { - "line": 2364, - "column": 24 + "line": 2378, + "column": 40 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -307467,27 +311410,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 82982, - "end": 82983, + "value": "colorsCompressed", + "start": 83615, + "end": 83631, "loc": { "start": { - "line": 2364, - "column": 25 + "line": 2378, + "column": 40 }, "end": { - "line": 2364, - "column": 26 + "line": 2378, + "column": 56 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -307497,16 +311439,16 @@ "binop": null, "updateContext": null }, - "start": 82983, - "end": 82984, + "start": 83631, + "end": 83632, "loc": { "start": { - "line": 2364, - "column": 26 + "line": 2378, + "column": 56 }, "end": { - "line": 2364, - "column": 27 + "line": 2378, + "column": 57 } } }, @@ -307522,50 +311464,50 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 82985, - "end": 82988, + "value": "length", + "start": 83632, + "end": 83638, "loc": { "start": { - "line": 2364, - "column": 28 + "line": 2378, + "column": 57 }, "end": { - "line": 2364, - "column": 31 + "line": 2378, + "column": 63 } } }, { "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": 82989, - "end": 82990, + "value": ">", + "start": 83639, + "end": 83640, "loc": { "start": { - "line": 2364, - "column": 32 + "line": 2378, + "column": 64 }, "end": { - "line": 2364, - "column": 33 + "line": 2378, + "column": 65 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -307573,25 +311515,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 82991, - "end": 82994, + "value": 0, + "start": 83641, + "end": 83642, "loc": { "start": { - "line": 2364, - "column": 34 + "line": 2378, + "column": 66 }, "end": { - "line": 2364, - "column": 37 + "line": 2378, + "column": 67 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -307599,19 +311542,43 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 82994, - "end": 82995, + "start": 83642, + "end": 83643, "loc": { "start": { - "line": 2364, - "column": 37 + "line": 2378, + "column": 67 }, "end": { - "line": 2364, - "column": 38 + "line": 2378, + "column": 68 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 83644, + "end": 83645, + "loc": { + "start": { + "line": 2378, + "column": 69 + }, + "end": { + "line": 2378, + "column": 70 } } }, @@ -307627,17 +311594,17 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 82995, - "end": 83002, + "value": "cfg", + "start": 83658, + "end": 83661, "loc": { "start": { - "line": 2364, - "column": 38 + "line": 2379, + "column": 12 }, "end": { - "line": 2364, - "column": 45 + "line": 2379, + "column": 15 } } }, @@ -307654,16 +311621,16 @@ "binop": null, "updateContext": null }, - "start": 83002, - "end": 83003, + "start": 83661, + "end": 83662, "loc": { "start": { - "line": 2364, - "column": 45 + "line": 2379, + "column": 15 }, "end": { - "line": 2364, - "column": 46 + "line": 2379, + "column": 16 } } }, @@ -307679,43 +311646,72 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 83003, - "end": 83009, + "value": "colorsCompressed", + "start": 83662, + "end": 83678, "loc": { "start": { - "line": 2364, - "column": 46 + "line": 2379, + "column": 16 }, "end": { - "line": 2364, - "column": 52 + "line": 2379, + "column": 32 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 83679, + "end": 83680, + "loc": { + "start": { + "line": 2379, + "column": 33 + }, + "end": { + "line": 2379, + "column": 34 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 83009, - "end": 83010, + "value": "new", + "start": 83681, + "end": 83684, "loc": { "start": { - "line": 2364, - "column": 52 + "line": 2379, + "column": 35 }, "end": { - "line": 2364, - "column": 53 + "line": 2379, + "column": 38 } } }, @@ -307731,44 +311727,42 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 83011, - "end": 83012, + "value": "Uint8Array", + "start": 83685, + "end": 83695, "loc": { "start": { - "line": 2364, - "column": 54 + "line": 2379, + "column": 39 }, "end": { - "line": 2364, - "column": 55 + "line": 2379, + "column": 49 } } }, { "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": 83013, - "end": 83014, + "start": 83695, + "end": 83696, "loc": { "start": { - "line": 2364, - "column": 56 + "line": 2379, + "column": 49 }, "end": { - "line": 2364, - "column": 57 + "line": 2379, + "column": 50 } } }, @@ -307784,24 +311778,24 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 83015, - "end": 83018, + "value": "cfg", + "start": 83696, + "end": 83699, "loc": { "start": { - "line": 2364, - "column": 58 + "line": 2379, + "column": 50 }, "end": { - "line": 2364, - "column": 61 + "line": 2379, + "column": 53 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -307811,16 +311805,16 @@ "binop": null, "updateContext": null }, - "start": 83018, - "end": 83019, + "start": 83699, + "end": 83700, "loc": { "start": { - "line": 2364, - "column": 61 + "line": 2379, + "column": 53 }, "end": { - "line": 2364, - "column": 62 + "line": 2379, + "column": 54 } } }, @@ -307836,76 +311830,76 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 83020, - "end": 83021, + "value": "colorsCompressed", + "start": 83700, + "end": 83716, "loc": { "start": { - "line": 2364, - "column": 63 + "line": 2379, + "column": 54 }, "end": { - "line": 2364, - "column": 64 + "line": 2379, + "column": 70 } } }, { "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": 83021, - "end": 83023, + "start": 83716, + "end": 83717, "loc": { "start": { - "line": 2364, - "column": 64 + "line": 2379, + "column": 70 }, "end": { - "line": 2364, - "column": 66 + "line": 2379, + "column": 71 } } }, { "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": 83023, - "end": 83024, + "start": 83717, + "end": 83718, "loc": { "start": { - "line": 2364, - "column": 66 + "line": 2379, + "column": 71 }, "end": { - "line": 2364, - "column": 67 + "line": 2379, + "column": 72 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -307913,24 +311907,24 @@ "postfix": false, "binop": null }, - "start": 83025, - "end": 83026, + "start": 83727, + "end": 83728, "loc": { "start": { - "line": 2364, - "column": 68 + "line": 2380, + "column": 8 }, "end": { - "line": 2364, - "column": 69 + "line": 2380, + "column": 9 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -307940,70 +311934,70 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 83043, - "end": 83048, + "value": "else", + "start": 83729, + "end": 83733, "loc": { "start": { - "line": 2365, - "column": 16 + "line": 2380, + "column": 10 }, "end": { - "line": 2365, - "column": 21 + "line": 2380, + "column": 14 } } }, { "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": "bucket", - "start": 83049, - "end": 83055, + "value": "if", + "start": 83734, + "end": 83736, "loc": { "start": { - "line": 2365, - "column": 22 + "line": 2380, + "column": 15 }, "end": { - "line": 2365, - "column": 28 + "line": 2380, + "column": 17 } } }, { "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": 83056, - "end": 83057, + "start": 83737, + "end": 83738, "loc": { "start": { - "line": 2365, - "column": 29 + "line": 2380, + "column": 18 }, "end": { - "line": 2365, - "column": 30 + "line": 2380, + "column": 19 } } }, @@ -308020,16 +312014,16 @@ "binop": null }, "value": "cfg", - "start": 83058, - "end": 83061, + "start": 83738, + "end": 83741, "loc": { "start": { - "line": 2365, - "column": 31 + "line": 2380, + "column": 19 }, "end": { - "line": 2365, - "column": 34 + "line": 2380, + "column": 22 } } }, @@ -308046,16 +312040,16 @@ "binop": null, "updateContext": null }, - "start": 83061, - "end": 83062, + "start": 83741, + "end": 83742, "loc": { "start": { - "line": 2365, - "column": 34 + "line": 2380, + "column": 22 }, "end": { - "line": 2365, - "column": 35 + "line": 2380, + "column": 23 } } }, @@ -308071,43 +312065,44 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 83062, - "end": 83069, + "value": "colors", + "start": 83742, + "end": 83748, "loc": { "start": { - "line": 2365, - "column": 35 + "line": 2380, + "column": 23 }, "end": { - "line": 2365, - "column": 42 + "line": 2380, + "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": 83069, - "end": 83070, + "value": "&&", + "start": 83749, + "end": 83751, "loc": { "start": { - "line": 2365, - "column": 42 + "line": 2380, + "column": 30 }, "end": { - "line": 2365, - "column": 43 + "line": 2380, + "column": 32 } } }, @@ -308123,23 +312118,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 83070, - "end": 83071, + "value": "cfg", + "start": 83752, + "end": 83755, "loc": { "start": { - "line": 2365, - "column": 43 + "line": 2380, + "column": 33 }, "end": { - "line": 2365, - "column": 44 + "line": 2380, + "column": 36 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -308150,49 +312145,48 @@ "binop": null, "updateContext": null }, - "start": 83071, - "end": 83072, + "start": 83755, + "end": 83756, "loc": { "start": { - "line": 2365, - "column": 44 + "line": 2380, + "column": 36 }, "end": { - "line": 2365, - "column": 45 + "line": 2380, + "column": 37 } } }, { "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": 83072, - "end": 83073, + "value": "colors", + "start": 83756, + "end": 83762, "loc": { "start": { - "line": 2365, - "column": 45 + "line": 2380, + "column": 37 }, "end": { - "line": 2365, - "column": 46 + "line": 2380, + "column": 43 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -308203,24 +312197,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 83090, - "end": 83092, + "start": 83762, + "end": 83763, "loc": { "start": { - "line": 2366, - "column": 16 + "line": 2380, + "column": 43 }, "end": { - "line": 2366, - "column": 18 + "line": 2380, + "column": 44 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -308229,50 +312222,52 @@ "postfix": false, "binop": null }, - "start": 83093, - "end": 83094, + "value": "length", + "start": 83763, + "end": 83769, "loc": { "start": { - "line": 2366, - "column": 19 + "line": 2380, + "column": 44 }, "end": { - "line": 2366, - "column": 20 + "line": 2380, + "column": 50 } } }, { "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": 7, + "updateContext": null }, - "value": "bucket", - "start": 83094, - "end": 83100, + "value": ">", + "start": 83770, + "end": 83771, "loc": { "start": { - "line": 2366, - "column": 20 + "line": 2380, + "column": 51 }, "end": { - "line": 2366, - "column": 26 + "line": 2380, + "column": 52 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -308281,24 +312276,25 @@ "binop": null, "updateContext": null }, - "start": 83100, - "end": 83101, + "value": 0, + "start": 83772, + "end": 83773, "loc": { "start": { - "line": 2366, - "column": 26 + "line": 2380, + "column": 53 }, "end": { - "line": 2366, - "column": 27 + "line": 2380, + "column": 54 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -308306,25 +312302,24 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 83101, - "end": 83110, + "start": 83773, + "end": 83774, "loc": { "start": { - "line": 2366, - "column": 27 + "line": 2380, + "column": 54 }, "end": { - "line": 2366, - "column": 36 + "line": 2380, + "column": 55 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -308332,41 +312327,44 @@ "postfix": false, "binop": null }, - "start": 83110, - "end": 83111, + "start": 83775, + "end": 83776, "loc": { "start": { - "line": 2366, - "column": 36 + "line": 2380, + "column": 56 }, "end": { - "line": 2366, - "column": 37 + "line": 2380, + "column": 57 } } }, { "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": 83112, - "end": 83113, + "value": "const", + "start": 83789, + "end": 83794, "loc": { "start": { - "line": 2366, - "column": 38 + "line": 2381, + "column": 12 }, "end": { - "line": 2366, - "column": 39 + "line": 2381, + "column": 17 } } }, @@ -308382,43 +312380,44 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 83134, - "end": 83138, + "value": "colors", + "start": 83795, + "end": 83801, "loc": { "start": { - "line": 2367, - "column": 20 + "line": 2381, + "column": 18 }, "end": { - "line": 2367, + "line": 2381, "column": 24 } } }, { "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": 83138, - "end": 83139, + "value": "=", + "start": 83802, + "end": 83803, "loc": { "start": { - "line": 2367, - "column": 24 + "line": 2381, + "column": 25 }, "end": { - "line": 2367, - "column": 25 + "line": 2381, + "column": 26 } } }, @@ -308434,42 +312433,43 @@ "postfix": false, "binop": null }, - "value": "expandAABB3Points3", - "start": 83139, - "end": 83157, + "value": "cfg", + "start": 83804, + "end": 83807, "loc": { "start": { - "line": 2367, - "column": 25 + "line": 2381, + "column": 27 }, "end": { - "line": 2367, - "column": 43 + "line": 2381, + "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": 83157, - "end": 83158, + "start": 83807, + "end": 83808, "loc": { "start": { - "line": 2367, - "column": 43 + "line": 2381, + "column": 30 }, "end": { - "line": 2367, - "column": 44 + "line": 2381, + "column": 31 } } }, @@ -308485,23 +312485,23 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 83158, - "end": 83162, + "value": "colors", + "start": 83808, + "end": 83814, "loc": { "start": { - "line": 2367, - "column": 44 + "line": 2381, + "column": 31 }, "end": { - "line": 2367, - "column": 48 + "line": 2381, + "column": 37 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -308512,153 +312512,159 @@ "binop": null, "updateContext": null }, - "start": 83162, - "end": 83163, + "start": 83814, + "end": 83815, "loc": { "start": { - "line": 2367, - "column": 48 + "line": 2381, + "column": 37 }, "end": { - "line": 2367, - "column": 49 + "line": 2381, + "column": 38 } } }, { "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": "bucket", - "start": 83164, - "end": 83170, + "value": "const", + "start": 83828, + "end": 83833, "loc": { "start": { - "line": 2367, - "column": 50 + "line": 2382, + "column": 12 }, "end": { - "line": 2367, - "column": 56 + "line": 2382, + "column": 17 } } }, { "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": 83170, - "end": 83171, + "value": "colorsCompressed", + "start": 83834, + "end": 83850, "loc": { "start": { - "line": 2367, - "column": 56 + "line": 2382, + "column": 18 }, "end": { - "line": 2367, - "column": 57 + "line": 2382, + "column": 34 } } }, { "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": "positions", - "start": 83171, - "end": 83180, + "value": "=", + "start": 83851, + "end": 83852, "loc": { "start": { - "line": 2367, - "column": 57 + "line": 2382, + "column": 35 }, "end": { - "line": 2367, - "column": 66 + "line": 2382, + "column": 36 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": 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 }, - "start": 83180, - "end": 83181, + "value": "new", + "start": 83853, + "end": 83856, "loc": { "start": { - "line": 2367, - "column": 66 + "line": 2382, + "column": 37 }, "end": { - "line": 2367, - "column": 67 + "line": 2382, + "column": 40 } } }, { "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": 83181, - "end": 83182, + "value": "Uint8Array", + "start": 83857, + "end": 83867, "loc": { "start": { - "line": 2367, - "column": 67 + "line": 2382, + "column": 41 }, "end": { - "line": 2367, - "column": 68 + "line": 2382, + "column": 51 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -308666,51 +312672,48 @@ "postfix": false, "binop": null }, - "start": 83199, - "end": 83200, + "start": 83867, + "end": 83868, "loc": { "start": { - "line": 2368, - "column": 16 + "line": 2382, + "column": 51 }, "end": { - "line": 2368, - "column": 17 + "line": 2382, + "column": 52 } } }, { "type": { - "label": "else", - "keyword": "else", - "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": "else", - "start": 83201, - "end": 83205, + "value": "colors", + "start": 83868, + "end": 83874, "loc": { "start": { - "line": 2368, - "column": 18 + "line": 2382, + "column": 52 }, "end": { - "line": 2368, - "column": 22 + "line": 2382, + "column": 58 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -308721,24 +312724,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 83206, - "end": 83208, + "start": 83874, + "end": 83875, "loc": { "start": { - "line": 2368, - "column": 23 + "line": 2382, + "column": 58 }, "end": { - "line": 2368, - "column": 25 + "line": 2382, + "column": 59 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -308747,24 +312749,25 @@ "postfix": false, "binop": null }, - "start": 83209, - "end": 83210, + "value": "length", + "start": 83875, + "end": 83881, "loc": { "start": { - "line": 2368, - "column": 26 + "line": 2382, + "column": 59 }, "end": { - "line": 2368, - "column": 27 + "line": 2382, + "column": 65 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -308772,24 +312775,23 @@ "postfix": false, "binop": null }, - "value": "bucket", - "start": 83210, - "end": 83216, + "start": 83881, + "end": 83882, "loc": { "start": { - "line": 2368, - "column": 27 + "line": 2382, + "column": 65 }, "end": { - "line": 2368, - "column": 33 + "line": 2382, + "column": 66 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -308799,50 +312801,52 @@ "binop": null, "updateContext": null }, - "start": 83216, - "end": 83217, + "start": 83882, + "end": 83883, "loc": { "start": { - "line": 2368, - "column": 33 + "line": 2382, + "column": 66 }, "end": { - "line": 2368, - "column": 34 + "line": 2382, + "column": 67 } } }, { "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": "positionsCompressed", - "start": 83217, - "end": 83236, + "value": "for", + "start": 83896, + "end": 83899, "loc": { "start": { - "line": 2368, - "column": 34 + "line": 2383, + "column": 12 }, "end": { - "line": 2368, - "column": 53 + "line": 2383, + "column": 15 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -308850,41 +312854,44 @@ "postfix": false, "binop": null }, - "start": 83236, - "end": 83237, + "start": 83900, + "end": 83901, "loc": { "start": { - "line": 2368, - "column": 53 + "line": 2383, + "column": 16 }, "end": { - "line": 2368, - "column": 54 + "line": 2383, + "column": 17 } } }, { "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": 83238, - "end": 83239, + "value": "let", + "start": 83901, + "end": 83904, "loc": { "start": { - "line": 2368, - "column": 55 + "line": 2383, + "column": 17 }, "end": { - "line": 2368, - "column": 56 + "line": 2383, + "column": 20 } } }, @@ -308900,49 +312907,50 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 83260, - "end": 83264, + "value": "i", + "start": 83905, + "end": 83906, "loc": { "start": { - "line": 2369, - "column": 20 + "line": 2383, + "column": 21 }, "end": { - "line": 2369, - "column": 24 + "line": 2383, + "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": 83264, - "end": 83265, + "value": "=", + "start": 83907, + "end": 83908, "loc": { "start": { - "line": 2369, - "column": 24 + "line": 2383, + "column": 23 }, - "end": { - "line": 2369, - "column": 25 + "end": { + "line": 2383, + "column": 24 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -308950,44 +312958,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "expandAABB3Points3", - "start": 83265, - "end": 83283, + "value": 0, + "start": 83909, + "end": 83910, "loc": { "start": { - "line": 2369, + "line": 2383, "column": 25 }, "end": { - "line": 2369, - "column": 43 + "line": 2383, + "column": 26 } } }, { "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": 83283, - "end": 83284, + "start": 83910, + "end": 83911, "loc": { "start": { - "line": 2369, - "column": 43 + "line": 2383, + "column": 26 }, "end": { - "line": 2369, - "column": 44 + "line": 2383, + "column": 27 } } }, @@ -309003,43 +313013,44 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 83284, - "end": 83288, + "value": "len", + "start": 83912, + "end": 83915, "loc": { "start": { - "line": 2369, - "column": 44 + "line": 2383, + "column": 28 }, "end": { - "line": 2369, - "column": 48 + "line": 2383, + "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": 83288, - "end": 83289, + "value": "=", + "start": 83916, + "end": 83917, "loc": { "start": { - "line": 2369, - "column": 48 + "line": 2383, + "column": 32 }, "end": { - "line": 2369, - "column": 49 + "line": 2383, + "column": 33 } } }, @@ -309055,17 +313066,17 @@ "postfix": false, "binop": null }, - "value": "bucket", - "start": 83290, - "end": 83296, + "value": "colors", + "start": 83918, + "end": 83924, "loc": { "start": { - "line": 2369, - "column": 50 + "line": 2383, + "column": 34 }, "end": { - "line": 2369, - "column": 56 + "line": 2383, + "column": 40 } } }, @@ -309082,16 +313093,16 @@ "binop": null, "updateContext": null }, - "start": 83296, - "end": 83297, + "start": 83924, + "end": 83925, "loc": { "start": { - "line": 2369, - "column": 56 + "line": 2383, + "column": 40 }, "end": { - "line": 2369, - "column": 57 + "line": 2383, + "column": 41 } } }, @@ -309107,101 +313118,104 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 83297, - "end": 83316, + "value": "length", + "start": 83925, + "end": 83931, "loc": { "start": { - "line": 2369, - "column": 57 + "line": 2383, + "column": 41 }, "end": { - "line": 2369, - "column": 76 + "line": 2383, + "column": 47 } } }, { "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": 83316, - "end": 83317, + "start": 83931, + "end": 83932, "loc": { "start": { - "line": 2369, - "column": 76 + "line": 2383, + "column": 47 }, "end": { - "line": 2369, - "column": 77 + "line": 2383, + "column": 48 } } }, { "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": 83317, - "end": 83318, + "value": "i", + "start": 83933, + "end": 83934, "loc": { "start": { - "line": 2369, - "column": 77 + "line": 2383, + "column": 49 }, "end": { - "line": 2369, - "column": 78 + "line": 2383, + "column": 50 } } }, { "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": 83335, - "end": 83336, + "value": "<", + "start": 83935, + "end": 83936, "loc": { "start": { - "line": 2370, - "column": 16 + "line": 2383, + "column": 51 }, "end": { - "line": 2370, - "column": 17 + "line": 2383, + "column": 52 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -309209,24 +313223,24 @@ "postfix": false, "binop": null }, - "start": 83349, - "end": 83350, + "value": "len", + "start": 83937, + "end": 83940, "loc": { "start": { - "line": 2371, - "column": 12 + "line": 2383, + "column": 53 }, "end": { - "line": 2371, - "column": 13 + "line": 2383, + "column": 56 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -309236,24 +313250,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 83363, - "end": 83365, + "start": 83940, + "end": 83941, "loc": { "start": { - "line": 2372, - "column": 12 + "line": 2383, + "column": 56 }, "end": { - "line": 2372, - "column": 14 + "line": 2383, + "column": 57 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -309262,48 +313275,49 @@ "postfix": false, "binop": null }, - "start": 83366, - "end": 83367, + "value": "i", + "start": 83942, + "end": 83943, "loc": { "start": { - "line": 2372, - "column": 15 + "line": 2383, + "column": 58 }, "end": { - "line": 2372, - "column": 16 + "line": 2383, + "column": 59 } } }, { "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": "cfg", - "start": 83367, - "end": 83370, + "value": "++", + "start": 83943, + "end": 83945, "loc": { "start": { - "line": 2372, - "column": 16 + "line": 2383, + "column": 59 }, "end": { - "line": 2372, - "column": 19 + "line": 2383, + "column": 61 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -309311,26 +313325,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 83370, - "end": 83371, + "start": 83945, + "end": 83946, "loc": { "start": { - "line": 2372, - "column": 19 + "line": 2383, + "column": 61 }, "end": { - "line": 2372, - "column": 20 + "line": 2383, + "column": 62 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -309339,25 +313352,24 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 83371, - "end": 83392, + "start": 83947, + "end": 83948, "loc": { "start": { - "line": 2372, - "column": 20 + "line": 2383, + "column": 63 }, "end": { - "line": 2372, - "column": 41 + "line": 2383, + "column": 64 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -309365,22 +313377,23 @@ "postfix": false, "binop": null }, - "start": 83392, - "end": 83393, + "value": "colorsCompressed", + "start": 83965, + "end": 83981, "loc": { "start": { - "line": 2372, - "column": 41 + "line": 2384, + "column": 16 }, "end": { - "line": 2372, - "column": 42 + "line": 2384, + "column": 32 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -309388,18 +313401,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 83394, - "end": 83395, + "start": 83981, + "end": 83982, "loc": { "start": { - "line": 2372, - "column": 43 + "line": 2384, + "column": 32 }, "end": { - "line": 2372, - "column": 44 + "line": 2384, + "column": 33 } } }, @@ -309415,23 +313429,23 @@ "postfix": false, "binop": null }, - "value": "geometryCompressionUtils", - "start": 83412, - "end": 83436, + "value": "i", + "start": 83982, + "end": 83983, "loc": { "start": { - "line": 2373, - "column": 16 + "line": 2384, + "column": 33 }, "end": { - "line": 2373, - "column": 40 + "line": 2384, + "column": 34 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -309442,67 +313456,43 @@ "binop": null, "updateContext": null }, - "start": 83436, - "end": 83437, - "loc": { - "start": { - "line": 2373, - "column": 40 - }, - "end": { - "line": 2373, - "column": 41 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "decompressAABB", - "start": 83437, - "end": 83451, + "start": 83983, + "end": 83984, "loc": { "start": { - "line": 2373, - "column": 41 + "line": 2384, + "column": 34 }, "end": { - "line": 2373, - "column": 55 + "line": 2384, + "column": 35 } } }, { "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": 83451, - "end": 83452, + "value": "=", + "start": 83985, + "end": 83986, "loc": { "start": { - "line": 2373, - "column": 55 + "line": 2384, + "column": 36 }, "end": { - "line": 2373, - "column": 56 + "line": 2384, + "column": 37 } } }, @@ -309518,25 +313508,25 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 83452, - "end": 83456, + "value": "colors", + "start": 83987, + "end": 83993, "loc": { "start": { - "line": 2373, - "column": 56 + "line": 2384, + "column": 38 }, "end": { - "line": 2373, - "column": 60 + "line": 2384, + "column": 44 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -309545,16 +313535,16 @@ "binop": null, "updateContext": null }, - "start": 83456, - "end": 83457, + "start": 83993, + "end": 83994, "loc": { "start": { - "line": 2373, - "column": 60 + "line": 2384, + "column": 44 }, "end": { - "line": 2373, - "column": 61 + "line": 2384, + "column": 45 } } }, @@ -309570,23 +313560,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 83458, - "end": 83461, + "value": "i", + "start": 83994, + "end": 83995, "loc": { "start": { - "line": 2373, - "column": 62 + "line": 2384, + "column": 45 }, "end": { - "line": 2373, - "column": 65 + "line": 2384, + "column": 46 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -309597,67 +313587,70 @@ "binop": null, "updateContext": null }, - "start": 83461, - "end": 83462, + "start": 83995, + "end": 83996, "loc": { "start": { - "line": 2373, - "column": 65 + "line": 2384, + "column": 46 }, "end": { - "line": 2373, - "column": 66 + "line": 2384, + "column": 47 } } }, { "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": 10, + "updateContext": null }, - "value": "positionsDecodeMatrix", - "start": 83462, - "end": 83483, + "value": "*", + "start": 83997, + "end": 83998, "loc": { "start": { - "line": 2373, - "column": 66 + "line": 2384, + "column": 48 }, "end": { - "line": 2373, - "column": 87 + "line": 2384, + "column": 49 } } }, { "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": 83483, - "end": 83484, + "value": 255, + "start": 83999, + "end": 84002, "loc": { "start": { - "line": 2373, - "column": 87 + "line": 2384, + "column": 50 }, "end": { - "line": 2373, - "column": 88 + "line": 2384, + "column": 53 } } }, @@ -309674,16 +313667,16 @@ "binop": null, "updateContext": null }, - "start": 83484, - "end": 83485, + "start": 84002, + "end": 84003, "loc": { "start": { - "line": 2373, - "column": 88 + "line": 2384, + "column": 53 }, "end": { - "line": 2373, - "column": 89 + "line": 2384, + "column": 54 } } }, @@ -309699,15 +313692,15 @@ "postfix": false, "binop": null }, - "start": 83498, - "end": 83499, + "start": 84016, + "end": 84017, "loc": { "start": { - "line": 2374, + "line": 2385, "column": 12 }, "end": { - "line": 2374, + "line": 2385, "column": 13 } } @@ -309725,15 +313718,15 @@ "binop": null }, "value": "cfg", - "start": 83512, - "end": 83515, + "start": 84030, + "end": 84033, "loc": { "start": { - "line": 2375, + "line": 2386, "column": 12 }, "end": { - "line": 2375, + "line": 2386, "column": 15 } } @@ -309751,15 +313744,15 @@ "binop": null, "updateContext": null }, - "start": 83515, - "end": 83516, + "start": 84033, + "end": 84034, "loc": { "start": { - "line": 2375, + "line": 2386, "column": 15 }, "end": { - "line": 2375, + "line": 2386, "column": 16 } } @@ -309776,17 +313769,17 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 83516, - "end": 83520, + "value": "colorsCompressed", + "start": 84034, + "end": 84050, "loc": { "start": { - "line": 2375, + "line": 2386, "column": 16 }, "end": { - "line": 2375, - "column": 20 + "line": 2386, + "column": 32 } } }, @@ -309804,16 +313797,16 @@ "updateContext": null }, "value": "=", - "start": 83521, - "end": 83522, + "start": 84051, + "end": 84052, "loc": { "start": { - "line": 2375, - "column": 21 + "line": 2386, + "column": 33 }, "end": { - "line": 2375, - "column": 22 + "line": 2386, + "column": 34 } } }, @@ -309829,17 +313822,17 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 83523, - "end": 83527, + "value": "colorsCompressed", + "start": 84053, + "end": 84069, "loc": { "start": { - "line": 2375, - "column": 23 + "line": 2386, + "column": 35 }, "end": { - "line": 2375, - "column": 27 + "line": 2386, + "column": 51 } } }, @@ -309856,16 +313849,16 @@ "binop": null, "updateContext": null }, - "start": 83527, - "end": 83528, + "start": 84069, + "end": 84070, "loc": { "start": { - "line": 2375, - "column": 27 + "line": 2386, + "column": 51 }, "end": { - "line": 2375, - "column": 28 + "line": 2386, + "column": 52 } } }, @@ -309881,15 +313874,15 @@ "postfix": false, "binop": null }, - "start": 83537, - "end": 83538, + "start": 84079, + "end": 84080, "loc": { "start": { - "line": 2376, + "line": 2387, "column": 8 }, "end": { - "line": 2376, + "line": 2387, "column": 9 } } @@ -309909,15 +313902,15 @@ "updateContext": null }, "value": "if", - "start": 83547, - "end": 83549, + "start": 84089, + "end": 84091, "loc": { "start": { - "line": 2377, + "line": 2388, "column": 8 }, "end": { - "line": 2377, + "line": 2388, "column": 10 } } @@ -309934,16 +313927,43 @@ "postfix": false, "binop": null }, - "start": 83550, - "end": 83551, + "start": 84092, + "end": 84093, "loc": { "start": { - "line": 2377, + "line": 2388, "column": 11 }, "end": { - "line": 2377, + "line": 2388, + "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": 84093, + "end": 84094, + "loc": { + "start": { + "line": 2388, "column": 12 + }, + "end": { + "line": 2388, + "column": 13 } } }, @@ -309960,16 +313980,16 @@ "binop": null }, "value": "cfg", - "start": 83551, - "end": 83554, + "start": 84094, + "end": 84097, "loc": { "start": { - "line": 2377, - "column": 12 + "line": 2388, + "column": 13 }, "end": { - "line": 2377, - "column": 15 + "line": 2388, + "column": 16 } } }, @@ -309986,16 +314006,16 @@ "binop": null, "updateContext": null }, - "start": 83554, - "end": 83555, + "start": 84097, + "end": 84098, "loc": { "start": { - "line": 2377, - "column": 15 + "line": 2388, + "column": 16 }, "end": { - "line": 2377, - "column": 16 + "line": 2388, + "column": 17 } } }, @@ -310011,17 +314031,17 @@ "postfix": false, "binop": null }, - "value": "colorsCompressed", - "start": 83555, - "end": 83571, + "value": "buckets", + "start": 84098, + "end": 84105, "loc": { "start": { - "line": 2377, - "column": 16 + "line": 2388, + "column": 17 }, "end": { - "line": 2377, - "column": 32 + "line": 2388, + "column": 24 } } }, @@ -310039,16 +314059,43 @@ "updateContext": null }, "value": "&&", - "start": 83572, - "end": 83574, + "start": 84106, + "end": 84108, "loc": { "start": { - "line": 2377, - "column": 33 + "line": 2388, + "column": 25 }, "end": { - "line": 2377, - "column": 35 + "line": 2388, + "column": 27 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 84109, + "end": 84110, + "loc": { + "start": { + "line": 2388, + "column": 28 + }, + "end": { + "line": 2388, + "column": 29 } } }, @@ -310065,16 +314112,16 @@ "binop": null }, "value": "cfg", - "start": 83575, - "end": 83578, + "start": 84110, + "end": 84113, "loc": { "start": { - "line": 2377, - "column": 36 + "line": 2388, + "column": 29 }, "end": { - "line": 2377, - "column": 39 + "line": 2388, + "column": 32 } } }, @@ -310091,16 +314138,16 @@ "binop": null, "updateContext": null }, - "start": 83578, - "end": 83579, + "start": 84113, + "end": 84114, "loc": { "start": { - "line": 2377, - "column": 39 + "line": 2388, + "column": 32 }, "end": { - "line": 2377, - "column": 40 + "line": 2388, + "column": 33 } } }, @@ -310116,50 +314163,51 @@ "postfix": false, "binop": null }, - "value": "colorsCompressed", - "start": 83579, - "end": 83595, + "value": "edgeIndices", + "start": 84114, + "end": 84125, "loc": { "start": { - "line": 2377, - "column": 40 + "line": 2388, + "column": 33 }, "end": { - "line": 2377, - "column": 56 + "line": 2388, + "column": 44 } } }, { "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": 83595, - "end": 83596, + "value": "&&", + "start": 84126, + "end": 84128, "loc": { "start": { - "line": 2377, - "column": 56 + "line": 2388, + "column": 45 }, "end": { - "line": 2377, - "column": 57 + "line": 2388, + "column": 47 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -310168,52 +314216,50 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 83596, - "end": 83602, + "start": 84129, + "end": 84130, "loc": { "start": { - "line": 2377, - "column": 57 + "line": 2388, + "column": 48 }, "end": { - "line": 2377, - "column": 63 + "line": 2388, + "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": 7, - "updateContext": null + "binop": null }, - "value": ">", - "start": 83603, - "end": 83604, + "value": "cfg", + "start": 84130, + "end": 84133, "loc": { "start": { - "line": 2377, - "column": 64 + "line": 2388, + "column": 49 }, "end": { - "line": 2377, - "column": 65 + "line": 2388, + "column": 52 } } }, { "type": { - "label": "num", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -310222,25 +314268,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 83605, - "end": 83606, + "start": 84133, + "end": 84134, "loc": { "start": { - "line": 2377, - "column": 66 + "line": 2388, + "column": 52 }, "end": { - "line": 2377, - "column": 67 + "line": 2388, + "column": 53 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -310248,47 +314293,50 @@ "postfix": false, "binop": null }, - "start": 83606, - "end": 83607, + "value": "primitive", + "start": 84134, + "end": 84143, "loc": { "start": { - "line": 2377, - "column": 67 + "line": 2388, + "column": 53 }, "end": { - "line": 2377, - "column": 68 + "line": 2388, + "column": 62 } } }, { "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": 83608, - "end": 83609, + "value": "===", + "start": 84144, + "end": 84147, "loc": { "start": { - "line": 2377, - "column": 69 + "line": 2388, + "column": 63 }, "end": { - "line": 2377, - "column": 70 + "line": 2388, + "column": 66 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -310296,45 +314344,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 83622, - "end": 83625, + "value": "triangles", + "start": 84148, + "end": 84159, "loc": { "start": { - "line": 2378, - "column": 12 + "line": 2388, + "column": 67 }, "end": { - "line": 2378, - "column": 15 + "line": 2388, + "column": 78 } } }, { "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": 83625, - "end": 83626, + "value": "||", + "start": 84160, + "end": 84162, "loc": { "start": { - "line": 2378, - "column": 15 + "line": 2388, + "column": 79 }, "end": { - "line": 2378, - "column": 16 + "line": 2388, + "column": 81 } } }, @@ -310350,78 +314400,102 @@ "postfix": false, "binop": null }, - "value": "colorsCompressed", - "start": 83626, - "end": 83642, + "value": "cfg", + "start": 84163, + "end": 84166, "loc": { "start": { - "line": 2378, - "column": 16 + "line": 2388, + "column": 82 }, "end": { - "line": 2378, - "column": 32 + "line": 2388, + "column": 85 } } }, { "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": 83643, - "end": 83644, + "start": 84166, + "end": 84167, "loc": { "start": { - "line": 2378, - "column": 33 + "line": 2388, + "column": 85 }, "end": { - "line": 2378, - "column": 34 + "line": 2388, + "column": 86 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": null + }, + "value": "primitive", + "start": 84167, + "end": 84176, + "loc": { + "start": { + "line": 2388, + "column": 86 + }, + "end": { + "line": 2388, + "column": 95 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, "updateContext": null }, - "value": "new", - "start": 83645, - "end": 83648, + "value": "===", + "start": 84177, + "end": 84180, "loc": { "start": { - "line": 2378, - "column": 35 + "line": 2388, + "column": 96 }, "end": { - "line": 2378, - "column": 38 + "line": 2388, + "column": 99 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -310429,44 +314503,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "Uint8Array", - "start": 83649, - "end": 83659, + "value": "solid", + "start": 84181, + "end": 84188, "loc": { "start": { - "line": 2378, - "column": 39 + "line": 2388, + "column": 100 }, "end": { - "line": 2378, - "column": 49 + "line": 2388, + "column": 107 } } }, { "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": 83659, - "end": 83660, + "value": "||", + "start": 84189, + "end": 84191, "loc": { "start": { - "line": 2378, - "column": 49 + "line": 2388, + "column": 108 }, "end": { - "line": 2378, - "column": 50 + "line": 2388, + "column": 110 } } }, @@ -310483,16 +314560,16 @@ "binop": null }, "value": "cfg", - "start": 83660, - "end": 83663, + "start": 84192, + "end": 84195, "loc": { "start": { - "line": 2378, - "column": 50 + "line": 2388, + "column": 111 }, "end": { - "line": 2378, - "column": 53 + "line": 2388, + "column": 114 } } }, @@ -310509,16 +314586,16 @@ "binop": null, "updateContext": null }, - "start": 83663, - "end": 83664, + "start": 84195, + "end": 84196, "loc": { "start": { - "line": 2378, - "column": 53 + "line": 2388, + "column": 114 }, "end": { - "line": 2378, - "column": 54 + "line": 2388, + "column": 115 } } }, @@ -310534,50 +314611,52 @@ "postfix": false, "binop": null }, - "value": "colorsCompressed", - "start": 83664, - "end": 83680, + "value": "primitive", + "start": 84196, + "end": 84205, "loc": { "start": { - "line": 2378, - "column": 54 + "line": 2388, + "column": 115 }, "end": { - "line": 2378, - "column": 70 + "line": 2388, + "column": 124 } } }, { "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": 83680, - "end": 83681, + "value": "===", + "start": 84206, + "end": 84209, "loc": { "start": { - "line": 2378, - "column": 70 + "line": 2388, + "column": 125 }, "end": { - "line": 2378, - "column": 71 + "line": 2388, + "column": 128 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -310586,22 +314665,23 @@ "binop": null, "updateContext": null }, - "start": 83681, - "end": 83682, + "value": "surface", + "start": 84210, + "end": 84219, "loc": { "start": { - "line": 2378, - "column": 71 + "line": 2388, + "column": 129 }, "end": { - "line": 2378, - "column": 72 + "line": 2388, + "column": 138 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -310611,44 +314691,66 @@ "postfix": false, "binop": null }, - "start": 83691, - "end": 83692, + "start": 84219, + "end": 84220, "loc": { "start": { - "line": 2379, - "column": 8 + "line": 2388, + "column": 138 }, "end": { - "line": 2379, - "column": 9 + "line": 2388, + "column": 139 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "else", - "start": 83693, - "end": 83697, + "start": 84220, + "end": 84221, "loc": { "start": { - "line": 2379, - "column": 10 + "line": 2388, + "column": 139 }, "end": { - "line": 2379, - "column": 14 + "line": 2388, + "column": 140 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 84222, + "end": 84223, + "loc": { + "start": { + "line": 2388, + "column": 141 + }, + "end": { + "line": 2388, + "column": 142 } } }, @@ -310667,16 +314769,16 @@ "updateContext": null }, "value": "if", - "start": 83698, - "end": 83700, + "start": 84236, + "end": 84238, "loc": { "start": { - "line": 2379, - "column": 15 + "line": 2389, + "column": 12 }, "end": { - "line": 2379, - "column": 17 + "line": 2389, + "column": 14 } } }, @@ -310692,16 +314794,16 @@ "postfix": false, "binop": null }, - "start": 83701, - "end": 83702, + "start": 84239, + "end": 84240, "loc": { "start": { - "line": 2379, - "column": 18 + "line": 2389, + "column": 15 }, "end": { - "line": 2379, - "column": 19 + "line": 2389, + "column": 16 } } }, @@ -310718,16 +314820,16 @@ "binop": null }, "value": "cfg", - "start": 83702, - "end": 83705, + "start": 84240, + "end": 84243, "loc": { "start": { - "line": 2379, - "column": 19 + "line": 2389, + "column": 16 }, "end": { - "line": 2379, - "column": 22 + "line": 2389, + "column": 19 } } }, @@ -310744,16 +314846,16 @@ "binop": null, "updateContext": null }, - "start": 83705, - "end": 83706, + "start": 84243, + "end": 84244, "loc": { "start": { - "line": 2379, - "column": 22 + "line": 2389, + "column": 19 }, "end": { - "line": 2379, - "column": 23 + "line": 2389, + "column": 20 } } }, @@ -310769,43 +314871,66 @@ "postfix": false, "binop": null }, - "value": "colors", - "start": 83706, - "end": 83712, + "value": "positions", + "start": 84244, + "end": 84253, "loc": { "start": { - "line": 2379, - "column": 23 + "line": 2389, + "column": 20 }, "end": { - "line": 2379, + "line": 2389, "column": 29 } } }, { "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": 83713, - "end": 83715, + "start": 84253, + "end": 84254, "loc": { "start": { - "line": 2379, + "line": 2389, + "column": 29 + }, + "end": { + "line": 2389, "column": 30 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 84255, + "end": 84256, + "loc": { + "start": { + "line": 2389, + "column": 31 }, "end": { - "line": 2379, + "line": 2389, "column": 32 } } @@ -310823,16 +314948,16 @@ "binop": null }, "value": "cfg", - "start": 83716, - "end": 83719, + "start": 84273, + "end": 84276, "loc": { "start": { - "line": 2379, - "column": 33 + "line": 2390, + "column": 16 }, "end": { - "line": 2379, - "column": 36 + "line": 2390, + "column": 19 } } }, @@ -310849,16 +314974,16 @@ "binop": null, "updateContext": null }, - "start": 83719, - "end": 83720, + "start": 84276, + "end": 84277, "loc": { "start": { - "line": 2379, - "column": 36 + "line": 2390, + "column": 19 }, "end": { - "line": 2379, - "column": 37 + "line": 2390, + "column": 20 } } }, @@ -310874,43 +314999,44 @@ "postfix": false, "binop": null }, - "value": "colors", - "start": 83720, - "end": 83726, + "value": "edgeIndices", + "start": 84277, + "end": 84288, "loc": { "start": { - "line": 2379, - "column": 37 + "line": 2390, + "column": 20 }, "end": { - "line": 2379, - "column": 43 + "line": 2390, + "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, "updateContext": null }, - "start": 83726, - "end": 83727, + "value": "=", + "start": 84289, + "end": 84290, "loc": { "start": { - "line": 2379, - "column": 43 + "line": 2390, + "column": 32 }, "end": { - "line": 2379, - "column": 44 + "line": 2390, + "column": 33 } } }, @@ -310926,50 +315052,48 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 83727, - "end": 83733, + "value": "buildEdgeIndices", + "start": 84291, + "end": 84307, "loc": { "start": { - "line": 2379, - "column": 44 + "line": 2390, + "column": 34 }, "end": { - "line": 2379, + "line": 2390, "column": 50 } } }, { "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": 83734, - "end": 83735, + "start": 84307, + "end": 84308, "loc": { "start": { - "line": 2379, - "column": 51 + "line": 2390, + "column": 50 }, "end": { - "line": 2379, - "column": 52 + "line": 2390, + "column": 51 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -310977,26 +315101,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 83736, - "end": 83737, + "value": "cfg", + "start": 84308, + "end": 84311, "loc": { "start": { - "line": 2379, - "column": 53 + "line": 2390, + "column": 51 }, "end": { - "line": 2379, + "line": 2390, "column": 54 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -311004,25 +315127,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 83737, - "end": 83738, + "start": 84311, + "end": 84312, "loc": { "start": { - "line": 2379, + "line": 2390, "column": 54 }, "end": { - "line": 2379, + "line": 2390, "column": 55 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -311031,24 +315155,24 @@ "postfix": false, "binop": null }, - "start": 83739, - "end": 83740, + "value": "positions", + "start": 84312, + "end": 84321, "loc": { "start": { - "line": 2379, - "column": 56 + "line": 2390, + "column": 55 }, "end": { - "line": 2379, - "column": 57 + "line": 2390, + "column": 64 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -311058,17 +315182,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 83753, - "end": 83758, + "start": 84321, + "end": 84322, "loc": { "start": { - "line": 2380, - "column": 12 + "line": 2390, + "column": 64 }, "end": { - "line": 2380, - "column": 17 + "line": 2390, + "column": 65 } } }, @@ -311084,44 +315207,43 @@ "postfix": false, "binop": null }, - "value": "colors", - "start": 83759, - "end": 83765, + "value": "cfg", + "start": 84323, + "end": 84326, "loc": { "start": { - "line": 2380, - "column": 18 + "line": 2390, + "column": 66 }, "end": { - "line": 2380, - "column": 24 + "line": 2390, + "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 }, - "value": "=", - "start": 83766, - "end": 83767, + "start": 84326, + "end": 84327, "loc": { "start": { - "line": 2380, - "column": 25 + "line": 2390, + "column": 69 }, "end": { - "line": 2380, - "column": 26 + "line": 2390, + "column": 70 } } }, @@ -311137,24 +315259,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 83768, - "end": 83771, + "value": "indices", + "start": 84327, + "end": 84334, "loc": { "start": { - "line": 2380, - "column": 27 + "line": 2390, + "column": 70 }, "end": { - "line": 2380, - "column": 30 + "line": 2390, + "column": 77 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -311164,22 +315286,23 @@ "binop": null, "updateContext": null }, - "start": 83771, - "end": 83772, + "start": 84334, + "end": 84335, "loc": { "start": { - "line": 2380, - "column": 30 + "line": 2390, + "column": 77 }, "end": { - "line": 2380, - "column": 31 + "line": 2390, + "column": 78 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -311187,25 +315310,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "colors", - "start": 83772, - "end": 83778, + "value": "null", + "start": 84336, + "end": 84340, "loc": { "start": { - "line": 2380, - "column": 31 + "line": 2390, + "column": 79 }, "end": { - "line": 2380, - "column": 37 + "line": 2390, + "column": 83 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -311216,25 +315340,24 @@ "binop": null, "updateContext": null }, - "start": 83778, - "end": 83779, + "start": 84340, + "end": 84341, "loc": { "start": { - "line": 2380, - "column": 37 + "line": 2390, + "column": 83 }, "end": { - "line": 2380, - "column": 38 + "line": 2390, + "column": 84 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -311243,25 +315366,25 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 83792, - "end": 83797, + "value": 5, + "start": 84342, + "end": 84345, "loc": { "start": { - "line": 2381, - "column": 12 + "line": 2390, + "column": 85 }, "end": { - "line": 2381, - "column": 17 + "line": 2390, + "column": 88 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -311269,104 +315392,101 @@ "postfix": false, "binop": null }, - "value": "colorsCompressed", - "start": 83798, - "end": 83814, + "start": 84345, + "end": 84346, "loc": { "start": { - "line": 2381, - "column": 18 + "line": 2390, + "column": 88 }, "end": { - "line": 2381, - "column": 34 + "line": 2390, + "column": 89 } } }, { "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": 83815, - "end": 83816, + "start": 84346, + "end": 84347, "loc": { "start": { - "line": 2381, - "column": 35 + "line": 2390, + "column": 89 }, "end": { - "line": 2381, - "column": 36 + "line": 2390, + "column": 90 } } }, { "type": { - "label": "new", - "keyword": "new", - "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 }, - "value": "new", - "start": 83817, - "end": 83820, + "start": 84360, + "end": 84361, "loc": { "start": { - "line": 2381, - "column": 37 + "line": 2391, + "column": 12 }, "end": { - "line": 2381, - "column": 40 + "line": 2391, + "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": "Uint8Array", - "start": 83821, - "end": 83831, + "value": "else", + "start": 84362, + "end": 84366, "loc": { "start": { - "line": 2381, - "column": 41 + "line": 2391, + "column": 14 }, "end": { - "line": 2381, - "column": 51 + "line": 2391, + "column": 18 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -311376,16 +315496,16 @@ "postfix": false, "binop": null }, - "start": 83831, - "end": 83832, + "start": 84367, + "end": 84368, "loc": { "start": { - "line": 2381, - "column": 51 + "line": 2391, + "column": 19 }, "end": { - "line": 2381, - "column": 52 + "line": 2391, + "column": 20 } } }, @@ -311401,17 +315521,17 @@ "postfix": false, "binop": null }, - "value": "colors", - "start": 83832, - "end": 83838, + "value": "cfg", + "start": 84385, + "end": 84388, "loc": { "start": { - "line": 2381, - "column": 52 + "line": 2392, + "column": 16 }, "end": { - "line": 2381, - "column": 58 + "line": 2392, + "column": 19 } } }, @@ -311428,16 +315548,16 @@ "binop": null, "updateContext": null }, - "start": 83838, - "end": 83839, + "start": 84388, + "end": 84389, "loc": { "start": { - "line": 2381, - "column": 58 + "line": 2392, + "column": 19 }, "end": { - "line": 2381, - "column": 59 + "line": 2392, + "column": 20 } } }, @@ -311453,103 +315573,102 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 83839, - "end": 83845, + "value": "edgeIndices", + "start": 84389, + "end": 84400, "loc": { "start": { - "line": 2381, - "column": 59 + "line": 2392, + "column": 20 }, "end": { - "line": 2381, - "column": 65 + "line": 2392, + "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": 83845, - "end": 83846, + "value": "=", + "start": 84401, + "end": 84402, "loc": { "start": { - "line": 2381, - "column": 65 + "line": 2392, + "column": 32 }, "end": { - "line": 2381, - "column": 66 + "line": 2392, + "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": 83846, - "end": 83847, + "value": "buildEdgeIndices", + "start": 84403, + "end": 84419, "loc": { "start": { - "line": 2381, - "column": 66 + "line": 2392, + "column": 34 }, "end": { - "line": 2381, - "column": 67 + "line": 2392, + "column": 50 } } }, { "type": { - "label": "for", - "keyword": "for", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "for", - "start": 83860, - "end": 83863, + "start": 84419, + "end": 84420, "loc": { "start": { - "line": 2382, - "column": 12 + "line": 2392, + "column": 50 }, "end": { - "line": 2382, - "column": 15 + "line": 2392, + "column": 51 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -311558,23 +315677,23 @@ "postfix": false, "binop": null }, - "start": 83864, - "end": 83865, + "value": "cfg", + "start": 84420, + "end": 84423, "loc": { "start": { - "line": 2382, - "column": 16 + "line": 2392, + "column": 51 }, "end": { - "line": 2382, - "column": 17 + "line": 2392, + "column": 54 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -311585,17 +315704,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 83865, - "end": 83868, + "start": 84423, + "end": 84424, "loc": { "start": { - "line": 2382, - "column": 17 + "line": 2392, + "column": 54 }, "end": { - "line": 2382, - "column": 20 + "line": 2392, + "column": 55 } } }, @@ -311611,50 +315729,49 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 83869, - "end": 83870, + "value": "positionsCompressed", + "start": 84424, + "end": 84443, "loc": { "start": { - "line": 2382, - "column": 21 + "line": 2392, + "column": 55 }, "end": { - "line": 2382, - "column": 22 + "line": 2392, + "column": 74 } } }, { "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": 83871, - "end": 83872, + "start": 84443, + "end": 84444, "loc": { "start": { - "line": 2382, - "column": 23 + "line": 2392, + "column": 74 }, "end": { - "line": 2382, - "column": 24 + "line": 2392, + "column": 75 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -311662,27 +315779,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 83873, - "end": 83874, + "value": "cfg", + "start": 84445, + "end": 84448, "loc": { "start": { - "line": 2382, - "column": 25 + "line": 2392, + "column": 76 }, "end": { - "line": 2382, - "column": 26 + "line": 2392, + "column": 79 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -311692,16 +315808,16 @@ "binop": null, "updateContext": null }, - "start": 83874, - "end": 83875, + "start": 84448, + "end": 84449, "loc": { "start": { - "line": 2382, - "column": 26 + "line": 2392, + "column": 79 }, "end": { - "line": 2382, - "column": 27 + "line": 2392, + "column": 80 } } }, @@ -311717,44 +315833,43 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 83876, - "end": 83879, + "value": "indices", + "start": 84449, + "end": 84456, "loc": { "start": { - "line": 2382, - "column": 28 + "line": 2392, + "column": 80 }, "end": { - "line": 2382, - "column": 31 + "line": 2392, + "column": 87 } } }, { "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": 83880, - "end": 83881, + "start": 84456, + "end": 84457, "loc": { "start": { - "line": 2382, - "column": 32 + "line": 2392, + "column": 87 }, "end": { - "line": 2382, - "column": 33 + "line": 2392, + "column": 88 } } }, @@ -311770,17 +315885,17 @@ "postfix": false, "binop": null }, - "value": "colors", - "start": 83882, - "end": 83888, + "value": "cfg", + "start": 84458, + "end": 84461, "loc": { "start": { - "line": 2382, - "column": 34 + "line": 2392, + "column": 89 }, "end": { - "line": 2382, - "column": 40 + "line": 2392, + "column": 92 } } }, @@ -311797,16 +315912,16 @@ "binop": null, "updateContext": null }, - "start": 83888, - "end": 83889, + "start": 84461, + "end": 84462, "loc": { "start": { - "line": 2382, - "column": 40 + "line": 2392, + "column": 92 }, "end": { - "line": 2382, - "column": 41 + "line": 2392, + "column": 93 } } }, @@ -311822,23 +315937,23 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 83889, - "end": 83895, + "value": "positionsDecodeMatrix", + "start": 84462, + "end": 84483, "loc": { "start": { - "line": 2382, - "column": 41 + "line": 2392, + "column": 93 }, "end": { - "line": 2382, - "column": 47 + "line": 2392, + "column": 114 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -311849,22 +315964,22 @@ "binop": null, "updateContext": null }, - "start": 83895, - "end": 83896, + "start": 84483, + "end": 84484, "loc": { "start": { - "line": 2382, - "column": 47 + "line": 2392, + "column": 114 }, "end": { - "line": 2382, - "column": 48 + "line": 2392, + "column": 115 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -311872,54 +315987,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "i", - "start": 83897, - "end": 83898, - "loc": { - "start": { - "line": 2382, - "column": 49 - }, - "end": { - "line": 2382, - "column": 50 - } - } - }, - { - "type": { - "label": "", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 83899, - "end": 83900, + "value": 2, + "start": 84485, + "end": 84488, "loc": { "start": { - "line": 2382, - "column": 51 + "line": 2392, + "column": 116 }, "end": { - "line": 2382, - "column": 52 + "line": 2392, + "column": 119 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -311927,17 +316016,16 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 83901, - "end": 83904, + "start": 84488, + "end": 84489, "loc": { "start": { - "line": 2382, - "column": 53 + "line": 2392, + "column": 119 }, "end": { - "line": 2382, - "column": 56 + "line": 2392, + "column": 120 } } }, @@ -311954,24 +316042,24 @@ "binop": null, "updateContext": null }, - "start": 83904, - "end": 83905, + "start": 84489, + "end": 84490, "loc": { "start": { - "line": 2382, - "column": 56 + "line": 2392, + "column": 120 }, "end": { - "line": 2382, - "column": 57 + "line": 2392, + "column": 121 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -311979,49 +316067,48 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 83906, - "end": 83907, + "start": 84503, + "end": 84504, "loc": { "start": { - "line": 2382, - "column": 58 + "line": 2393, + "column": 12 }, "end": { - "line": 2382, - "column": 59 + "line": 2393, + "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": 83907, - "end": 83909, + "start": 84513, + "end": 84514, "loc": { "start": { - "line": 2382, - "column": 59 + "line": 2394, + "column": 8 }, "end": { - "line": 2382, - "column": 61 + "line": 2394, + "column": 9 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -312029,24 +316116,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 83909, - "end": 83910, + "value": "if", + "start": 84523, + "end": 84525, "loc": { "start": { - "line": 2382, - "column": 61 + "line": 2395, + "column": 8 }, "end": { - "line": 2382, - "column": 62 + "line": 2395, + "column": 10 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -312056,16 +316145,16 @@ "postfix": false, "binop": null }, - "start": 83911, - "end": 83912, + "start": 84526, + "end": 84527, "loc": { "start": { - "line": 2382, - "column": 63 + "line": 2395, + "column": 11 }, "end": { - "line": 2382, - "column": 64 + "line": 2395, + "column": 12 } } }, @@ -312081,25 +316170,25 @@ "postfix": false, "binop": null }, - "value": "colorsCompressed", - "start": 83929, - "end": 83945, + "value": "cfg", + "start": 84527, + "end": 84530, "loc": { "start": { - "line": 2383, - "column": 16 + "line": 2395, + "column": 12 }, "end": { - "line": 2383, - "column": 32 + "line": 2395, + "column": 15 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -312108,16 +316197,16 @@ "binop": null, "updateContext": null }, - "start": 83945, - "end": 83946, + "start": 84530, + "end": 84531, "loc": { "start": { - "line": 2383, - "column": 32 + "line": 2395, + "column": 15 }, "end": { - "line": 2383, - "column": 33 + "line": 2395, + "column": 16 } } }, @@ -312133,23 +316222,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 83946, - "end": 83947, + "value": "uv", + "start": 84531, + "end": 84533, "loc": { "start": { - "line": 2383, - "column": 33 + "line": 2395, + "column": 16 }, "end": { - "line": 2383, - "column": 34 + "line": 2395, + "column": 18 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -312157,46 +316246,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 83947, - "end": 83948, + "start": 84533, + "end": 84534, "loc": { "start": { - "line": 2383, - "column": 34 + "line": 2395, + "column": 18 }, "end": { - "line": 2383, - "column": 35 + "line": 2395, + "column": 19 } } }, { "type": { - "label": "=", + "label": "{", "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 84535, + "end": 84536, + "loc": { + "start": { + "line": 2395, + "column": 20 + }, + "end": { + "line": 2395, + "column": 21 + } + } + }, + { + "type": { + "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": 83949, - "end": 83950, + "value": "const", + "start": 84549, + "end": 84554, "loc": { "start": { - "line": 2383, - "column": 36 + "line": 2396, + "column": 12 }, "end": { - "line": 2383, - "column": 37 + "line": 2396, + "column": 17 } } }, @@ -312212,43 +316326,44 @@ "postfix": false, "binop": null }, - "value": "colors", - "start": 83951, - "end": 83957, + "value": "bounds", + "start": 84555, + "end": 84561, "loc": { "start": { - "line": 2383, - "column": 38 + "line": 2396, + "column": 18 }, "end": { - "line": 2383, - "column": 44 + "line": 2396, + "column": 24 } } }, { "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": 83957, - "end": 83958, + "value": "=", + "start": 84562, + "end": 84563, "loc": { "start": { - "line": 2383, - "column": 44 + "line": 2396, + "column": 25 }, "end": { - "line": 2383, - "column": 45 + "line": 2396, + "column": 26 } } }, @@ -312264,23 +316379,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 83958, - "end": 83959, + "value": "geometryCompressionUtils", + "start": 84564, + "end": 84588, "loc": { "start": { - "line": 2383, - "column": 45 + "line": 2396, + "column": 27 }, "end": { - "line": 2383, - "column": 46 + "line": 2396, + "column": 51 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -312291,102 +316406,99 @@ "binop": null, "updateContext": null }, - "start": 83959, - "end": 83960, + "start": 84588, + "end": 84589, "loc": { "start": { - "line": 2383, - "column": 46 + "line": 2396, + "column": 51 }, "end": { - "line": 2383, - "column": 47 + "line": 2396, + "column": 52 } } }, { "type": { - "label": "*", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, - "updateContext": null + "binop": null }, - "value": "*", - "start": 83961, - "end": 83962, + "value": "getUVBounds", + "start": 84589, + "end": 84600, "loc": { "start": { - "line": 2383, - "column": 48 + "line": 2396, + "column": 52 }, "end": { - "line": 2383, - "column": 49 + "line": 2396, + "column": 63 } } }, { "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": 255, - "start": 83963, - "end": 83966, + "start": 84600, + "end": 84601, "loc": { "start": { - "line": 2383, - "column": 50 + "line": 2396, + "column": 63 }, "end": { - "line": 2383, - "column": 53 + "line": 2396, + "column": 64 } } }, { "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": 83966, - "end": 83967, + "value": "cfg", + "start": 84601, + "end": 84604, "loc": { "start": { - "line": 2383, - "column": 53 + "line": 2396, + "column": 64 }, "end": { - "line": 2383, - "column": 54 + "line": 2396, + "column": 67 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -312394,18 +316506,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 83980, - "end": 83981, + "start": 84604, + "end": 84605, "loc": { "start": { - "line": 2384, - "column": 12 + "line": 2396, + "column": 67 }, "end": { - "line": 2384, - "column": 13 + "line": 2396, + "column": 68 } } }, @@ -312421,23 +316534,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 83994, - "end": 83997, + "value": "uv", + "start": 84605, + "end": 84607, "loc": { "start": { - "line": 2385, - "column": 12 + "line": 2396, + "column": 68 }, "end": { - "line": 2385, - "column": 15 + "line": 2396, + "column": 70 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -312445,72 +316558,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 83997, - "end": 83998, + "start": 84607, + "end": 84608, "loc": { "start": { - "line": 2385, - "column": 15 + "line": 2396, + "column": 70 }, "end": { - "line": 2385, - "column": 16 + "line": 2396, + "column": 71 } } }, { "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": "colorsCompressed", - "start": 83998, - "end": 84014, + "start": 84608, + "end": 84609, "loc": { "start": { - "line": 2385, - "column": 16 + "line": 2396, + "column": 71 }, "end": { - "line": 2385, - "column": 32 + "line": 2396, + "column": 72 } } }, { "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": 84015, - "end": 84016, + "value": "const", + "start": 84622, + "end": 84627, "loc": { "start": { - "line": 2385, - "column": 33 + "line": 2397, + "column": 12 }, "end": { - "line": 2385, - "column": 34 + "line": 2397, + "column": 17 } } }, @@ -312526,51 +316639,52 @@ "postfix": false, "binop": null }, - "value": "colorsCompressed", - "start": 84017, - "end": 84033, + "value": "result", + "start": 84628, + "end": 84634, "loc": { "start": { - "line": 2385, - "column": 35 + "line": 2397, + "column": 18 }, "end": { - "line": 2385, - "column": 51 + "line": 2397, + "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": 84033, - "end": 84034, + "value": "=", + "start": 84635, + "end": 84636, "loc": { "start": { - "line": 2385, - "column": 51 + "line": 2397, + "column": 25 }, "end": { - "line": 2385, - "column": 52 + "line": 2397, + "column": 26 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -312578,23 +316692,23 @@ "postfix": false, "binop": null }, - "start": 84043, - "end": 84044, + "value": "geometryCompressionUtils", + "start": 84637, + "end": 84661, "loc": { "start": { - "line": 2386, - "column": 8 + "line": 2397, + "column": 27 }, "end": { - "line": 2386, - "column": 9 + "line": 2397, + "column": 51 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -312605,24 +316719,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 84053, - "end": 84055, + "start": 84661, + "end": 84662, "loc": { "start": { - "line": 2387, - "column": 8 + "line": 2397, + "column": 51 }, "end": { - "line": 2387, - "column": 10 + "line": 2397, + "column": 52 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -312631,43 +316744,42 @@ "postfix": false, "binop": null }, - "start": 84056, - "end": 84057, + "value": "compressUVs", + "start": 84662, + "end": 84673, "loc": { "start": { - "line": 2387, - "column": 11 + "line": 2397, + "column": 52 }, "end": { - "line": 2387, - "column": 12 + "line": 2397, + "column": 63 } } }, { "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": 84057, - "end": 84058, + "start": 84673, + "end": 84674, "loc": { "start": { - "line": 2387, - "column": 12 + "line": 2397, + "column": 63 }, "end": { - "line": 2387, - "column": 13 + "line": 2397, + "column": 64 } } }, @@ -312684,16 +316796,16 @@ "binop": null }, "value": "cfg", - "start": 84058, - "end": 84061, + "start": 84674, + "end": 84677, "loc": { "start": { - "line": 2387, - "column": 13 + "line": 2397, + "column": 64 }, "end": { - "line": 2387, - "column": 16 + "line": 2397, + "column": 67 } } }, @@ -312710,16 +316822,16 @@ "binop": null, "updateContext": null }, - "start": 84061, - "end": 84062, + "start": 84677, + "end": 84678, "loc": { "start": { - "line": 2387, - "column": 16 + "line": 2397, + "column": 67 }, "end": { - "line": 2387, - "column": 17 + "line": 2397, + "column": 68 } } }, @@ -312735,23 +316847,23 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 84062, - "end": 84069, + "value": "uv", + "start": 84678, + "end": 84680, "loc": { "start": { - "line": 2387, - "column": 17 + "line": 2397, + "column": 68 }, "end": { - "line": 2387, - "column": 24 + "line": 2397, + "column": 70 } } }, { "type": { - "label": "&&", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -312759,47 +316871,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null, + "updateContext": null + }, + "start": 84680, + "end": 84681, + "loc": { + "start": { + "line": 2397, + "column": 70 + }, + "end": { + "line": 2397, + "column": 71 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null }, - "value": "&&", - "start": 84070, - "end": 84072, + "value": "bounds", + "start": 84682, + "end": 84688, "loc": { "start": { - "line": 2387, - "column": 25 + "line": 2397, + "column": 72 }, "end": { - "line": 2387, - "column": 27 + "line": 2397, + "column": 78 } } }, { "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": 84073, - "end": 84074, + "start": 84688, + "end": 84689, "loc": { "start": { - "line": 2387, - "column": 28 + "line": 2397, + "column": 78 }, "end": { - "line": 2387, - "column": 29 + "line": 2397, + "column": 79 } } }, @@ -312815,24 +316951,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84074, - "end": 84077, + "value": "min", + "start": 84689, + "end": 84692, "loc": { "start": { - "line": 2387, - "column": 29 + "line": 2397, + "column": 79 }, "end": { - "line": 2387, - "column": 32 + "line": 2397, + "column": 82 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -312842,16 +316978,16 @@ "binop": null, "updateContext": null }, - "start": 84077, - "end": 84078, + "start": 84692, + "end": 84693, "loc": { "start": { - "line": 2387, - "column": 32 + "line": 2397, + "column": 82 }, "end": { - "line": 2387, - "column": 33 + "line": 2397, + "column": 83 } } }, @@ -312867,51 +317003,50 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 84078, - "end": 84089, + "value": "bounds", + "start": 84694, + "end": 84700, "loc": { "start": { - "line": 2387, - "column": 33 + "line": 2397, + "column": 84 }, "end": { - "line": 2387, - "column": 44 + "line": 2397, + "column": 90 } } }, { "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": 84090, - "end": 84092, + "start": 84700, + "end": 84701, "loc": { "start": { - "line": 2387, - "column": 45 + "line": 2397, + "column": 90 }, "end": { - "line": 2387, - "column": 47 + "line": 2397, + "column": 91 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -312920,24 +317055,25 @@ "postfix": false, "binop": null }, - "start": 84093, - "end": 84094, + "value": "max", + "start": 84701, + "end": 84704, "loc": { "start": { - "line": 2387, - "column": 48 + "line": 2397, + "column": 91 }, "end": { - "line": 2387, - "column": 49 + "line": 2397, + "column": 94 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -312945,24 +317081,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84094, - "end": 84097, + "start": 84704, + "end": 84705, "loc": { "start": { - "line": 2387, - "column": 49 + "line": 2397, + "column": 94 }, "end": { - "line": 2387, - "column": 52 + "line": 2397, + "column": 95 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -312972,16 +317107,16 @@ "binop": null, "updateContext": null }, - "start": 84097, - "end": 84098, + "start": 84705, + "end": 84706, "loc": { "start": { - "line": 2387, - "column": 52 + "line": 2397, + "column": 95 }, "end": { - "line": 2387, - "column": 53 + "line": 2397, + "column": 96 } } }, @@ -312997,50 +317132,49 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 84098, - "end": 84107, + "value": "cfg", + "start": 84719, + "end": 84722, "loc": { "start": { - "line": 2387, - "column": 53 + "line": 2398, + "column": 12 }, "end": { - "line": 2387, - "column": 62 + "line": 2398, + "column": 15 } } }, { "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": 84108, - "end": 84111, + "start": 84722, + "end": 84723, "loc": { "start": { - "line": 2387, - "column": 63 + "line": 2398, + "column": 15 }, "end": { - "line": 2387, - "column": 66 + "line": 2398, + "column": 16 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -313048,47 +317182,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "triangles", - "start": 84112, - "end": 84123, + "value": "uvCompressed", + "start": 84723, + "end": 84735, "loc": { "start": { - "line": 2387, - "column": 67 + "line": 2398, + "column": 16 }, "end": { - "line": 2387, - "column": 78 + "line": 2398, + "column": 28 } } }, { "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": 84124, - "end": 84126, + "value": "=", + "start": 84736, + "end": 84737, "loc": { "start": { - "line": 2387, - "column": 79 + "line": 2398, + "column": 29 }, "end": { - "line": 2387, - "column": 81 + "line": 2398, + "column": 30 } } }, @@ -313104,17 +317237,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84127, - "end": 84130, + "value": "result", + "start": 84738, + "end": 84744, "loc": { "start": { - "line": 2387, - "column": 82 + "line": 2398, + "column": 31 }, "end": { - "line": 2387, - "column": 85 + "line": 2398, + "column": 37 } } }, @@ -313131,16 +317264,16 @@ "binop": null, "updateContext": null }, - "start": 84130, - "end": 84131, + "start": 84744, + "end": 84745, "loc": { "start": { - "line": 2387, - "column": 85 + "line": 2398, + "column": 37 }, "end": { - "line": 2387, - "column": 86 + "line": 2398, + "column": 38 } } }, @@ -313156,23 +317289,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 84131, - "end": 84140, + "value": "quantized", + "start": 84745, + "end": 84754, "loc": { "start": { - "line": 2387, - "column": 86 + "line": 2398, + "column": 38 }, "end": { - "line": 2387, - "column": 95 + "line": 2398, + "column": 47 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -313180,26 +317313,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 84141, - "end": 84144, + "start": 84754, + "end": 84755, "loc": { "start": { - "line": 2387, - "column": 96 + "line": 2398, + "column": 47 }, "end": { - "line": 2387, - "column": 99 + "line": 2398, + "column": 48 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -313207,47 +317339,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "solid", - "start": 84145, - "end": 84152, + "value": "cfg", + "start": 84768, + "end": 84771, "loc": { "start": { - "line": 2387, - "column": 100 + "line": 2399, + "column": 12 }, "end": { - "line": 2387, - "column": 107 + "line": 2399, + "column": 15 } } }, { "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": 84153, - "end": 84155, + "start": 84771, + "end": 84772, "loc": { "start": { - "line": 2387, - "column": 108 + "line": 2399, + "column": 15 }, "end": { - "line": 2387, - "column": 110 + "line": 2399, + "column": 16 } } }, @@ -313263,43 +317393,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84156, - "end": 84159, + "value": "uvDecodeMatrix", + "start": 84772, + "end": 84786, "loc": { "start": { - "line": 2387, - "column": 111 + "line": 2399, + "column": 16 }, "end": { - "line": 2387, - "column": 114 + "line": 2399, + "column": 30 } } }, { "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": 84159, - "end": 84160, + "value": "=", + "start": 84787, + "end": 84788, "loc": { "start": { - "line": 2387, - "column": 114 + "line": 2399, + "column": 31 }, "end": { - "line": 2387, - "column": 115 + "line": 2399, + "column": 32 } } }, @@ -313315,50 +317446,49 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 84160, - "end": 84169, + "value": "result", + "start": 84789, + "end": 84795, "loc": { "start": { - "line": 2387, - "column": 115 + "line": 2399, + "column": 33 }, "end": { - "line": 2387, - "column": 124 + "line": 2399, + "column": 39 } } }, { "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": 84170, - "end": 84173, + "start": 84795, + "end": 84796, "loc": { "start": { - "line": 2387, - "column": 125 + "line": 2399, + "column": 39 }, "end": { - "line": 2387, - "column": 128 + "line": 2399, + "column": 40 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -313366,51 +317496,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "surface", - "start": 84174, - "end": 84183, + "value": "decodeMatrix", + "start": 84796, + "end": 84808, "loc": { "start": { - "line": 2387, - "column": 129 + "line": 2399, + "column": 40 }, "end": { - "line": 2387, - "column": 138 + "line": 2399, + "column": 52 } } }, { "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": 84183, - "end": 84184, + "start": 84808, + "end": 84809, "loc": { "start": { - "line": 2387, - "column": 138 + "line": 2399, + "column": 52 }, "end": { - "line": 2387, - "column": 139 + "line": 2399, + "column": 53 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -313420,41 +317550,44 @@ "postfix": false, "binop": null }, - "start": 84184, - "end": 84185, + "start": 84818, + "end": 84819, "loc": { "start": { - "line": 2387, - "column": 139 + "line": 2400, + "column": 8 }, "end": { - "line": 2387, - "column": 140 + "line": 2400, + "column": 9 } } }, { "type": { - "label": "{", + "label": "else", + "keyword": "else", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 84186, - "end": 84187, + "value": "else", + "start": 84820, + "end": 84824, "loc": { "start": { - "line": 2387, - "column": 141 + "line": 2400, + "column": 10 }, "end": { - "line": 2387, - "column": 142 + "line": 2400, + "column": 14 } } }, @@ -313473,16 +317606,16 @@ "updateContext": null }, "value": "if", - "start": 84200, - "end": 84202, + "start": 84825, + "end": 84827, "loc": { "start": { - "line": 2388, - "column": 12 + "line": 2400, + "column": 15 }, "end": { - "line": 2388, - "column": 14 + "line": 2400, + "column": 17 } } }, @@ -313498,16 +317631,16 @@ "postfix": false, "binop": null }, - "start": 84203, - "end": 84204, + "start": 84828, + "end": 84829, "loc": { "start": { - "line": 2388, - "column": 15 + "line": 2400, + "column": 18 }, "end": { - "line": 2388, - "column": 16 + "line": 2400, + "column": 19 } } }, @@ -313524,16 +317657,16 @@ "binop": null }, "value": "cfg", - "start": 84204, - "end": 84207, + "start": 84829, + "end": 84832, "loc": { "start": { - "line": 2388, - "column": 16 + "line": 2400, + "column": 19 }, "end": { - "line": 2388, - "column": 19 + "line": 2400, + "column": 22 } } }, @@ -313550,16 +317683,16 @@ "binop": null, "updateContext": null }, - "start": 84207, - "end": 84208, + "start": 84832, + "end": 84833, "loc": { "start": { - "line": 2388, - "column": 19 + "line": 2400, + "column": 22 }, "end": { - "line": 2388, - "column": 20 + "line": 2400, + "column": 23 } } }, @@ -313575,17 +317708,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 84208, - "end": 84217, + "value": "uvCompressed", + "start": 84833, + "end": 84845, "loc": { "start": { - "line": 2388, - "column": 20 + "line": 2400, + "column": 23 }, "end": { - "line": 2388, - "column": 29 + "line": 2400, + "column": 35 } } }, @@ -313601,16 +317734,16 @@ "postfix": false, "binop": null }, - "start": 84217, - "end": 84218, + "start": 84845, + "end": 84846, "loc": { "start": { - "line": 2388, - "column": 29 + "line": 2400, + "column": 35 }, "end": { - "line": 2388, - "column": 30 + "line": 2400, + "column": 36 } } }, @@ -313626,16 +317759,16 @@ "postfix": false, "binop": null }, - "start": 84219, - "end": 84220, + "start": 84847, + "end": 84848, "loc": { "start": { - "line": 2388, - "column": 31 + "line": 2400, + "column": 37 }, "end": { - "line": 2388, - "column": 32 + "line": 2400, + "column": 38 } } }, @@ -313652,16 +317785,16 @@ "binop": null }, "value": "cfg", - "start": 84237, - "end": 84240, + "start": 84861, + "end": 84864, "loc": { "start": { - "line": 2389, - "column": 16 + "line": 2401, + "column": 12 }, "end": { - "line": 2389, - "column": 19 + "line": 2401, + "column": 15 } } }, @@ -313678,16 +317811,16 @@ "binop": null, "updateContext": null }, - "start": 84240, - "end": 84241, + "start": 84864, + "end": 84865, "loc": { "start": { - "line": 2389, - "column": 19 + "line": 2401, + "column": 15 }, "end": { - "line": 2389, - "column": 20 + "line": 2401, + "column": 16 } } }, @@ -313703,17 +317836,17 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 84241, - "end": 84252, + "value": "uvCompressed", + "start": 84865, + "end": 84877, "loc": { "start": { - "line": 2389, - "column": 20 + "line": 2401, + "column": 16 }, "end": { - "line": 2389, - "column": 31 + "line": 2401, + "column": 28 } } }, @@ -313731,16 +317864,44 @@ "updateContext": null }, "value": "=", - "start": 84253, - "end": 84254, + "start": 84878, + "end": 84879, "loc": { "start": { - "line": 2389, - "column": 32 + "line": 2401, + "column": 29 }, "end": { - "line": 2389, - "column": 33 + "line": 2401, + "column": 30 + } + } + }, + { + "type": { + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "new", + "start": 84880, + "end": 84883, + "loc": { + "start": { + "line": 2401, + "column": 31 + }, + "end": { + "line": 2401, + "column": 34 } } }, @@ -313756,17 +317917,17 @@ "postfix": false, "binop": null }, - "value": "buildEdgeIndices", - "start": 84255, - "end": 84271, + "value": "Uint16Array", + "start": 84884, + "end": 84895, "loc": { "start": { - "line": 2389, - "column": 34 + "line": 2401, + "column": 35 }, "end": { - "line": 2389, - "column": 50 + "line": 2401, + "column": 46 } } }, @@ -313782,16 +317943,16 @@ "postfix": false, "binop": null }, - "start": 84271, - "end": 84272, + "start": 84895, + "end": 84896, "loc": { "start": { - "line": 2389, - "column": 50 + "line": 2401, + "column": 46 }, "end": { - "line": 2389, - "column": 51 + "line": 2401, + "column": 47 } } }, @@ -313808,16 +317969,16 @@ "binop": null }, "value": "cfg", - "start": 84272, - "end": 84275, + "start": 84896, + "end": 84899, "loc": { "start": { - "line": 2389, - "column": 51 + "line": 2401, + "column": 47 }, "end": { - "line": 2389, - "column": 54 + "line": 2401, + "column": 50 } } }, @@ -313834,16 +317995,16 @@ "binop": null, "updateContext": null }, - "start": 84275, - "end": 84276, + "start": 84899, + "end": 84900, "loc": { "start": { - "line": 2389, - "column": 54 + "line": 2401, + "column": 50 }, "end": { - "line": 2389, - "column": 55 + "line": 2401, + "column": 51 } } }, @@ -313859,23 +318020,48 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 84276, - "end": 84285, + "value": "uvCompressed", + "start": 84900, + "end": 84912, "loc": { "start": { - "line": 2389, - "column": 55 + "line": 2401, + "column": 51 }, "end": { - "line": 2389, + "line": 2401, + "column": 63 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 84912, + "end": 84913, + "loc": { + "start": { + "line": 2401, + "column": 63 + }, + "end": { + "line": 2401, "column": 64 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -313886,15 +318072,15 @@ "binop": null, "updateContext": null }, - "start": 84285, - "end": 84286, + "start": 84913, + "end": 84914, "loc": { "start": { - "line": 2389, + "line": 2401, "column": 64 }, "end": { - "line": 2389, + "line": 2401, "column": 65 } } @@ -313912,16 +318098,16 @@ "binop": null }, "value": "cfg", - "start": 84287, - "end": 84290, + "start": 84927, + "end": 84930, "loc": { "start": { - "line": 2389, - "column": 66 + "line": 2402, + "column": 12 }, "end": { - "line": 2389, - "column": 69 + "line": 2402, + "column": 15 } } }, @@ -313938,16 +318124,16 @@ "binop": null, "updateContext": null }, - "start": 84290, - "end": 84291, + "start": 84930, + "end": 84931, "loc": { "start": { - "line": 2389, - "column": 69 + "line": 2402, + "column": 15 }, "end": { - "line": 2389, - "column": 70 + "line": 2402, + "column": 16 } } }, @@ -313963,51 +318149,52 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 84291, - "end": 84298, + "value": "uvDecodeMatrix", + "start": 84931, + "end": 84945, "loc": { "start": { - "line": 2389, - "column": 70 + "line": 2402, + "column": 16 }, "end": { - "line": 2389, - "column": 77 + "line": 2402, + "column": 30 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 84298, - "end": 84299, + "value": "=", + "start": 84946, + "end": 84947, "loc": { "start": { - "line": 2389, - "column": 77 + "line": 2402, + "column": 31 }, "end": { - "line": 2389, - "column": 78 + "line": 2402, + "column": 32 } } }, { "type": { - "label": "null", - "keyword": "null", - "beforeExpr": false, + "label": "new", + "keyword": "new", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -314017,24 +318204,101 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 84300, - "end": 84304, + "value": "new", + "start": 84948, + "end": 84951, "loc": { "start": { - "line": 2389, - "column": 79 + "line": 2402, + "column": 33 }, "end": { - "line": 2389, - "column": 83 + "line": 2402, + "column": 36 } } }, { "type": { - "label": ",", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Float64Array", + "start": 84952, + "end": 84964, + "loc": { + "start": { + "line": 2402, + "column": 37 + }, + "end": { + "line": 2402, + "column": 49 + } + } + }, + { + "type": { + "label": "(", "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 84964, + "end": 84965, + "loc": { + "start": { + "line": 2402, + "column": 49 + }, + "end": { + "line": 2402, + "column": 50 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 84965, + "end": 84968, + "loc": { + "start": { + "line": 2402, + "column": 50 + }, + "end": { + "line": 2402, + "column": 53 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -314044,22 +318308,22 @@ "binop": null, "updateContext": null }, - "start": 84304, - "end": 84305, + "start": 84968, + "end": 84969, "loc": { "start": { - "line": 2389, - "column": 83 + "line": 2402, + "column": 53 }, "end": { - "line": 2389, - "column": 84 + "line": 2402, + "column": 54 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -314067,20 +318331,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 5, - "start": 84306, - "end": 84309, + "value": "uvDecodeMatrix", + "start": 84969, + "end": 84983, "loc": { "start": { - "line": 2389, - "column": 85 + "line": 2402, + "column": 54 }, "end": { - "line": 2389, - "column": 88 + "line": 2402, + "column": 68 } } }, @@ -314096,16 +318359,16 @@ "postfix": false, "binop": null }, - "start": 84309, - "end": 84310, + "start": 84983, + "end": 84984, "loc": { "start": { - "line": 2389, - "column": 88 + "line": 2402, + "column": 68 }, "end": { - "line": 2389, - "column": 89 + "line": 2402, + "column": 69 } } }, @@ -314122,16 +318385,16 @@ "binop": null, "updateContext": null }, - "start": 84310, - "end": 84311, + "start": 84984, + "end": 84985, "loc": { "start": { - "line": 2389, - "column": 89 + "line": 2402, + "column": 69 }, "end": { - "line": 2389, - "column": 90 + "line": 2402, + "column": 70 } } }, @@ -314147,24 +318410,24 @@ "postfix": false, "binop": null }, - "start": 84324, - "end": 84325, + "start": 84994, + "end": 84995, "loc": { "start": { - "line": 2390, - "column": 12 + "line": 2403, + "column": 8 }, "end": { - "line": 2390, - "column": 13 + "line": 2403, + "column": 9 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -314174,23 +318437,23 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 84326, - "end": 84330, + "value": "if", + "start": 85004, + "end": 85006, "loc": { "start": { - "line": 2390, - "column": 14 + "line": 2404, + "column": 8 }, "end": { - "line": 2390, - "column": 18 + "line": 2404, + "column": 10 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -314200,16 +318463,16 @@ "postfix": false, "binop": null }, - "start": 84331, - "end": 84332, + "start": 85007, + "end": 85008, "loc": { "start": { - "line": 2390, - "column": 19 + "line": 2404, + "column": 11 }, "end": { - "line": 2390, - "column": 20 + "line": 2404, + "column": 12 } } }, @@ -314226,16 +318489,16 @@ "binop": null }, "value": "cfg", - "start": 84349, - "end": 84352, + "start": 85008, + "end": 85011, "loc": { "start": { - "line": 2391, - "column": 16 + "line": 2404, + "column": 12 }, "end": { - "line": 2391, - "column": 19 + "line": 2404, + "column": 15 } } }, @@ -314252,16 +318515,16 @@ "binop": null, "updateContext": null }, - "start": 84352, - "end": 84353, + "start": 85011, + "end": 85012, "loc": { "start": { - "line": 2391, - "column": 19 + "line": 2404, + "column": 15 }, "end": { - "line": 2391, - "column": 20 + "line": 2404, + "column": 16 } } }, @@ -314277,51 +318540,49 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 84353, - "end": 84364, + "value": "normals", + "start": 85012, + "end": 85019, "loc": { "start": { - "line": 2391, - "column": 20 + "line": 2404, + "column": 16 }, "end": { - "line": 2391, - "column": 31 + "line": 2404, + "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": 84365, - "end": 84366, + "start": 85019, + "end": 85020, "loc": { "start": { - "line": 2391, - "column": 32 + "line": 2404, + "column": 23 }, "end": { - "line": 2391, - "column": 33 + "line": 2404, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -314330,24 +318591,39 @@ "postfix": false, "binop": null }, - "value": "buildEdgeIndices", - "start": 84367, - "end": 84383, + "start": 85021, + "end": 85022, "loc": { "start": { - "line": 2391, - "column": 34 + "line": 2404, + "column": 25 }, "end": { - "line": 2391, - "column": 50 + "line": 2404, + "column": 26 + } + } + }, + { + "type": "CommentLine", + "value": " HACK", + "start": 85023, + "end": 85030, + "loc": { + "start": { + "line": 2404, + "column": 27 + }, + "end": { + "line": 2404, + "column": 34 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -314356,16 +318632,43 @@ "postfix": false, "binop": null }, - "start": 84383, - "end": 84384, + "value": "cfg", + "start": 85043, + "end": 85046, "loc": { "start": { - "line": 2391, - "column": 50 + "line": 2405, + "column": 12 }, "end": { - "line": 2391, - "column": 51 + "line": 2405, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 85046, + "end": 85047, + "loc": { + "start": { + "line": 2405, + "column": 15 + }, + "end": { + "line": 2405, + "column": 16 } } }, @@ -314381,49 +318684,51 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84384, - "end": 84387, + "value": "normals", + "start": 85047, + "end": 85054, "loc": { "start": { - "line": 2391, - "column": 51 + "line": 2405, + "column": 16 }, "end": { - "line": 2391, - "column": 54 + "line": 2405, + "column": 23 } } }, { "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": 84387, - "end": 84388, + "value": "=", + "start": 85055, + "end": 85056, "loc": { "start": { - "line": 2391, - "column": 54 + "line": 2405, + "column": 24 }, "end": { - "line": 2391, - "column": 55 + "line": 2405, + "column": 25 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -314431,25 +318736,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "positionsCompressed", - "start": 84388, - "end": 84407, + "value": "null", + "start": 85057, + "end": 85061, "loc": { "start": { - "line": 2391, - "column": 55 + "line": 2405, + "column": 26 }, "end": { - "line": 2391, - "column": 74 + "line": 2405, + "column": 30 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -314460,24 +318766,24 @@ "binop": null, "updateContext": null }, - "start": 84407, - "end": 84408, + "start": 85061, + "end": 85062, "loc": { "start": { - "line": 2391, - "column": 74 + "line": 2405, + "column": 30 }, "end": { - "line": 2391, - "column": 75 + "line": 2405, + "column": 31 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -314485,17 +318791,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84409, - "end": 84412, + "start": 85071, + "end": 85072, "loc": { "start": { - "line": 2391, - "column": 76 + "line": 2406, + "column": 8 }, "end": { - "line": 2391, - "column": 79 + "line": 2406, + "column": 9 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 85081, + "end": 85085, + "loc": { + "start": { + "line": 2407, + "column": 8 + }, + "end": { + "line": 2407, + "column": 12 } } }, @@ -314512,16 +318845,16 @@ "binop": null, "updateContext": null }, - "start": 84412, - "end": 84413, + "start": 85085, + "end": 85086, "loc": { "start": { - "line": 2391, - "column": 79 + "line": 2407, + "column": 12 }, "end": { - "line": 2391, - "column": 80 + "line": 2407, + "column": 13 } } }, @@ -314537,25 +318870,25 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 84413, - "end": 84420, + "value": "_geometries", + "start": 85086, + "end": 85097, "loc": { "start": { - "line": 2391, - "column": 80 + "line": 2407, + "column": 13 }, "end": { - "line": 2391, - "column": 87 + "line": 2407, + "column": 24 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -314564,16 +318897,16 @@ "binop": null, "updateContext": null }, - "start": 84420, - "end": 84421, + "start": 85098, + "end": 85099, "loc": { "start": { - "line": 2391, - "column": 87 + "line": 2407, + "column": 25 }, "end": { - "line": 2391, - "column": 88 + "line": 2407, + "column": 26 } } }, @@ -314590,16 +318923,16 @@ "binop": null }, "value": "cfg", - "start": 84422, - "end": 84425, + "start": 85099, + "end": 85102, "loc": { "start": { - "line": 2391, - "column": 89 + "line": 2407, + "column": 26 }, "end": { - "line": 2391, - "column": 92 + "line": 2407, + "column": 29 } } }, @@ -314616,16 +318949,16 @@ "binop": null, "updateContext": null }, - "start": 84425, - "end": 84426, + "start": 85102, + "end": 85103, "loc": { "start": { - "line": 2391, - "column": 92 + "line": 2407, + "column": 29 }, "end": { - "line": 2391, - "column": 93 + "line": 2407, + "column": 30 } } }, @@ -314641,24 +318974,24 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 84426, - "end": 84447, + "value": "id", + "start": 85103, + "end": 85105, "loc": { "start": { - "line": 2391, - "column": 93 + "line": 2407, + "column": 30 }, "end": { - "line": 2391, - "column": 114 + "line": 2407, + "column": 32 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -314668,51 +319001,51 @@ "binop": null, "updateContext": null }, - "start": 84447, - "end": 84448, + "start": 85105, + "end": 85106, "loc": { "start": { - "line": 2391, - "column": 114 + "line": 2407, + "column": 32 }, "end": { - "line": 2391, - "column": 115 + "line": 2407, + "column": 33 } } }, { "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": 2, - "start": 84449, - "end": 84452, + "value": "=", + "start": 85107, + "end": 85108, "loc": { "start": { - "line": 2391, - "column": 116 + "line": 2407, + "column": 34 }, "end": { - "line": 2391, - "column": 119 + "line": 2407, + "column": 35 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -314720,16 +319053,17 @@ "postfix": false, "binop": null }, - "start": 84452, - "end": 84453, + "value": "cfg", + "start": 85109, + "end": 85112, "loc": { "start": { - "line": 2391, - "column": 119 + "line": 2407, + "column": 36 }, "end": { - "line": 2391, - "column": 120 + "line": 2407, + "column": 39 } } }, @@ -314746,22 +319080,50 @@ "binop": null, "updateContext": null }, - "start": 84453, - "end": 84454, + "start": 85112, + "end": 85113, "loc": { "start": { - "line": 2391, - "column": 120 + "line": 2407, + "column": 39 }, "end": { - "line": 2391, - "column": 121 + "line": 2407, + "column": 40 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 85122, + "end": 85126, + "loc": { + "start": { + "line": 2408, + "column": 8 + }, + "end": { + "line": 2408, + "column": 12 + } + } + }, + { + "type": { + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -314769,26 +319131,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 84467, - "end": 84468, + "start": 85126, + "end": 85127, "loc": { "start": { - "line": 2392, + "line": 2408, "column": 12 }, "end": { - "line": 2392, + "line": 2408, "column": 13 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -314796,44 +319159,44 @@ "postfix": false, "binop": null }, - "start": 84477, - "end": 84478, + "value": "_numTriangles", + "start": 85127, + "end": 85140, "loc": { "start": { - "line": 2393, - "column": 8 + "line": 2408, + "column": 13 }, "end": { - "line": 2393, - "column": 9 + "line": 2408, + "column": 26 } } }, { "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": 84487, - "end": 84489, + "value": "+=", + "start": 85141, + "end": 85143, "loc": { "start": { - "line": 2394, - "column": 8 + "line": 2408, + "column": 27 }, "end": { - "line": 2394, - "column": 10 + "line": 2408, + "column": 29 } } }, @@ -314849,16 +319212,16 @@ "postfix": false, "binop": null }, - "start": 84490, - "end": 84491, + "start": 85144, + "end": 85145, "loc": { "start": { - "line": 2394, - "column": 11 + "line": 2408, + "column": 30 }, "end": { - "line": 2394, - "column": 12 + "line": 2408, + "column": 31 } } }, @@ -314875,16 +319238,16 @@ "binop": null }, "value": "cfg", - "start": 84491, - "end": 84494, + "start": 85145, + "end": 85148, "loc": { "start": { - "line": 2394, - "column": 12 + "line": 2408, + "column": 31 }, "end": { - "line": 2394, - "column": 15 + "line": 2408, + "column": 34 } } }, @@ -314901,16 +319264,16 @@ "binop": null, "updateContext": null }, - "start": 84494, - "end": 84495, + "start": 85148, + "end": 85149, "loc": { "start": { - "line": 2394, - "column": 15 + "line": 2408, + "column": 34 }, "end": { - "line": 2394, - "column": 16 + "line": 2408, + "column": 35 } } }, @@ -314926,49 +319289,50 @@ "postfix": false, "binop": null }, - "value": "uv", - "start": 84495, - "end": 84497, + "value": "indices", + "start": 85149, + "end": 85156, "loc": { "start": { - "line": 2394, - "column": 16 + "line": 2408, + "column": 35 }, "end": { - "line": 2394, - "column": 18 + "line": 2408, + "column": 42 } } }, { "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": 84497, - "end": 84498, + "start": 85157, + "end": 85158, "loc": { "start": { - "line": 2394, - "column": 18 + "line": 2408, + "column": 43 }, "end": { - "line": 2394, - "column": 19 + "line": 2408, + "column": 44 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -314977,23 +319341,23 @@ "postfix": false, "binop": null }, - "start": 84499, - "end": 84500, + "value": "Math", + "start": 85159, + "end": 85163, "loc": { "start": { - "line": 2394, - "column": 20 + "line": 2408, + "column": 45 }, "end": { - "line": 2394, - "column": 21 + "line": 2408, + "column": 49 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -315004,17 +319368,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 84513, - "end": 84518, + "start": 85163, + "end": 85164, "loc": { "start": { - "line": 2395, - "column": 12 + "line": 2408, + "column": 49 }, "end": { - "line": 2395, - "column": 17 + "line": 2408, + "column": 50 } } }, @@ -315030,44 +319393,42 @@ "postfix": false, "binop": null }, - "value": "bounds", - "start": 84519, - "end": 84525, + "value": "round", + "start": 85164, + "end": 85169, "loc": { "start": { - "line": 2395, - "column": 18 + "line": 2408, + "column": 50 }, "end": { - "line": 2395, - "column": 24 + "line": 2408, + "column": 55 } } }, { "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": 84526, - "end": 84527, + "start": 85169, + "end": 85170, "loc": { "start": { - "line": 2395, - "column": 25 + "line": 2408, + "column": 55 }, "end": { - "line": 2395, - "column": 26 + "line": 2408, + "column": 56 } } }, @@ -315083,17 +319444,17 @@ "postfix": false, "binop": null }, - "value": "geometryCompressionUtils", - "start": 84528, - "end": 84552, + "value": "cfg", + "start": 85170, + "end": 85173, "loc": { "start": { - "line": 2395, - "column": 27 + "line": 2408, + "column": 56 }, "end": { - "line": 2395, - "column": 51 + "line": 2408, + "column": 59 } } }, @@ -315110,16 +319471,16 @@ "binop": null, "updateContext": null }, - "start": 84552, - "end": 84553, + "start": 85173, + "end": 85174, "loc": { "start": { - "line": 2395, - "column": 51 + "line": 2408, + "column": 59 }, "end": { - "line": 2395, - "column": 52 + "line": 2408, + "column": 60 } } }, @@ -315135,42 +319496,43 @@ "postfix": false, "binop": null }, - "value": "getUVBounds", - "start": 84553, - "end": 84564, + "value": "indices", + "start": 85174, + "end": 85181, "loc": { "start": { - "line": 2395, - "column": 52 + "line": 2408, + "column": 60 }, "end": { - "line": 2395, - "column": 63 + "line": 2408, + "column": 67 } } }, { "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": 84564, - "end": 84565, + "start": 85181, + "end": 85182, "loc": { "start": { - "line": 2395, - "column": 63 + "line": 2408, + "column": 67 }, "end": { - "line": 2395, - "column": 64 + "line": 2408, + "column": 68 } } }, @@ -315186,49 +319548,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84565, - "end": 84568, + "value": "length", + "start": 85182, + "end": 85188, "loc": { "start": { - "line": 2395, - "column": 64 + "line": 2408, + "column": 68 }, "end": { - "line": 2395, - "column": 67 + "line": 2408, + "column": 74 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "/", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "start": 84568, - "end": 84569, + "value": "/", + "start": 85189, + "end": 85190, "loc": { "start": { - "line": 2395, - "column": 67 + "line": 2408, + "column": 75 }, "end": { - "line": 2395, - "column": 68 + "line": 2408, + "column": 76 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -315236,19 +319599,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "uv", - "start": 84569, - "end": 84571, + "value": 3, + "start": 85191, + "end": 85192, "loc": { "start": { - "line": 2395, - "column": 68 + "line": 2408, + "column": 77 }, "end": { - "line": 2395, - "column": 70 + "line": 2408, + "column": 78 } } }, @@ -315264,22 +319628,22 @@ "postfix": false, "binop": null }, - "start": 84571, - "end": 84572, + "start": 85192, + "end": 85193, "loc": { "start": { - "line": 2395, - "column": 70 + "line": 2408, + "column": 78 }, "end": { - "line": 2395, - "column": 71 + "line": 2408, + "column": 79 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -315290,25 +319654,24 @@ "binop": null, "updateContext": null }, - "start": 84572, - "end": 84573, + "start": 85194, + "end": 85195, "loc": { "start": { - "line": 2395, - "column": 71 + "line": 2408, + "column": 80 }, "end": { - "line": 2395, - "column": 72 + "line": 2408, + "column": 81 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -315317,25 +319680,25 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 84586, - "end": 84591, + "value": 0, + "start": 85196, + "end": 85197, "loc": { "start": { - "line": 2396, - "column": 12 + "line": 2408, + "column": 82 }, "end": { - "line": 2396, - "column": 17 + "line": 2408, + "column": 83 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -315343,50 +319706,49 @@ "postfix": false, "binop": null }, - "value": "result", - "start": 84592, - "end": 84598, + "start": 85197, + "end": 85198, "loc": { "start": { - "line": 2396, - "column": 18 + "line": 2408, + "column": 83 }, "end": { - "line": 2396, - "column": 24 + "line": 2408, + "column": 84 } } }, { "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": 84599, - "end": 84600, + "start": 85198, + "end": 85199, "loc": { "start": { - "line": 2396, - "column": 25 + "line": 2408, + "column": 84 }, "end": { - "line": 2396, - "column": 26 + "line": 2408, + "column": 85 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -315394,19 +319756,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "geometryCompressionUtils", - "start": 84601, - "end": 84625, + "value": "this", + "start": 85208, + "end": 85212, "loc": { "start": { - "line": 2396, - "column": 27 + "line": 2409, + "column": 8 }, "end": { - "line": 2396, - "column": 51 + "line": 2409, + "column": 12 } } }, @@ -315423,16 +319786,16 @@ "binop": null, "updateContext": null }, - "start": 84625, - "end": 84626, + "start": 85212, + "end": 85213, "loc": { "start": { - "line": 2396, - "column": 51 + "line": 2409, + "column": 12 }, "end": { - "line": 2396, - "column": 52 + "line": 2409, + "column": 13 } } }, @@ -315448,42 +319811,110 @@ "postfix": false, "binop": null }, - "value": "compressUVs", - "start": 84626, - "end": 84637, + "value": "numGeometries", + "start": 85213, + "end": 85226, "loc": { "start": { - "line": 2396, - "column": 52 + "line": 2409, + "column": 13 }, "end": { - "line": 2396, - "column": 63 + "line": 2409, + "column": 26 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "++/--", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, + "prefix": true, + "postfix": true, + "binop": null + }, + "value": "++", + "start": 85226, + "end": 85228, + "loc": { + "start": { + "line": 2409, + "column": 26 + }, + "end": { + "line": 2409, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 85228, + "end": 85229, + "loc": { + "start": { + "line": 2409, + "column": 28 + }, + "end": { + "line": 2409, + "column": 29 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, "prefix": false, "postfix": false, "binop": null }, - "start": 84637, - "end": 84638, + "start": 85234, + "end": 85235, "loc": { "start": { - "line": 2396, - "column": 63 + "line": 2410, + "column": 4 }, "end": { - "line": 2396, - "column": 64 + "line": 2410, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Creates a texture within this SceneModel.\n *\n * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture.\n *\n * @param {*} cfg Texture properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link SceneModel#createTextureSet}.\n * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file\n * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````SceneModel```` is configured with a {@link TextureTranscoder}.\n * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````SceneModel```` is\n * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps.\n * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded.\n * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel.\n * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}.\n * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}.\n * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}..\n * @param {Number} [cfg.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n ", + "start": 85241, + "end": 87687, + "loc": { + "start": { + "line": 2412, + "column": 4 + }, + "end": { + "line": 2432, + "column": 7 } } }, @@ -315499,43 +319930,42 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84638, - "end": 84641, + "value": "createTexture", + "start": 87692, + "end": 87705, "loc": { "start": { - "line": 2396, - "column": 64 + "line": 2433, + "column": 4 }, "end": { - "line": 2396, - "column": 67 + "line": 2433, + "column": 17 } } }, { "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": 84641, - "end": 84642, + "start": 87705, + "end": 87706, "loc": { "start": { - "line": 2396, - "column": 67 + "line": 2433, + "column": 17 }, "end": { - "line": 2396, - "column": 68 + "line": 2433, + "column": 18 } } }, @@ -315551,50 +319981,49 @@ "postfix": false, "binop": null }, - "value": "uv", - "start": 84642, - "end": 84644, + "value": "cfg", + "start": 87706, + "end": 87709, "loc": { "start": { - "line": 2396, - "column": 68 + "line": 2433, + "column": 18 }, "end": { - "line": 2396, - "column": 70 + "line": 2433, + "column": 21 } } }, { "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": 84644, - "end": 84645, + "start": 87709, + "end": 87710, "loc": { "start": { - "line": 2396, - "column": 70 + "line": 2433, + "column": 21 }, "end": { - "line": 2396, - "column": 71 + "line": 2433, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -315603,23 +320032,23 @@ "postfix": false, "binop": null }, - "value": "bounds", - "start": 84646, - "end": 84652, + "start": 87711, + "end": 87712, "loc": { "start": { - "line": 2396, - "column": 72 + "line": 2433, + "column": 23 }, "end": { - "line": 2396, - "column": 78 + "line": 2433, + "column": 24 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -315630,16 +320059,17 @@ "binop": null, "updateContext": null }, - "start": 84652, - "end": 84653, + "value": "const", + "start": 87721, + "end": 87726, "loc": { "start": { - "line": 2396, - "column": 78 + "line": 2434, + "column": 8 }, "end": { - "line": 2396, - "column": 79 + "line": 2434, + "column": 13 } } }, @@ -315655,43 +320085,44 @@ "postfix": false, "binop": null }, - "value": "min", - "start": 84653, - "end": 84656, + "value": "textureId", + "start": 87727, + "end": 87736, "loc": { "start": { - "line": 2396, - "column": 79 + "line": 2434, + "column": 14 }, "end": { - "line": 2396, - "column": 82 + "line": 2434, + "column": 23 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 84656, - "end": 84657, + "value": "=", + "start": 87737, + "end": 87738, "loc": { "start": { - "line": 2396, - "column": 82 + "line": 2434, + "column": 24 }, "end": { - "line": 2396, - "column": 83 + "line": 2434, + "column": 25 } } }, @@ -315707,17 +320138,17 @@ "postfix": false, "binop": null }, - "value": "bounds", - "start": 84658, - "end": 84664, + "value": "cfg", + "start": 87739, + "end": 87742, "loc": { "start": { - "line": 2396, - "column": 84 + "line": 2434, + "column": 26 }, "end": { - "line": 2396, - "column": 90 + "line": 2434, + "column": 29 } } }, @@ -315734,16 +320165,16 @@ "binop": null, "updateContext": null }, - "start": 84664, - "end": 84665, + "start": 87742, + "end": 87743, "loc": { "start": { - "line": 2396, - "column": 90 + "line": 2434, + "column": 29 }, "end": { - "line": 2396, - "column": 91 + "line": 2434, + "column": 30 } } }, @@ -315759,49 +320190,51 @@ "postfix": false, "binop": null }, - "value": "max", - "start": 84665, - "end": 84668, + "value": "id", + "start": 87743, + "end": 87745, "loc": { "start": { - "line": 2396, - "column": 91 + "line": 2434, + "column": 30 }, "end": { - "line": 2396, - "column": 94 + "line": 2434, + "column": 32 } } }, { "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": 84668, - "end": 84669, + "start": 87745, + "end": 87746, "loc": { "start": { - "line": 2396, - "column": 94 + "line": 2434, + "column": 32 }, "end": { - "line": 2396, - "column": 95 + "line": 2434, + "column": 33 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -315811,16 +320244,42 @@ "binop": null, "updateContext": null }, - "start": 84669, - "end": 84670, + "value": "if", + "start": 87755, + "end": 87757, "loc": { "start": { - "line": 2396, - "column": 95 + "line": 2435, + "column": 8 }, "end": { - "line": 2396, - "column": 96 + "line": 2435, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 87758, + "end": 87759, + "loc": { + "start": { + "line": 2435, + "column": 11 + }, + "end": { + "line": 2435, + "column": 12 } } }, @@ -315836,43 +320295,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84683, - "end": 84686, + "value": "textureId", + "start": 87759, + "end": 87768, "loc": { "start": { - "line": 2397, + "line": 2435, "column": 12 }, "end": { - "line": 2397, - "column": 15 + "line": 2435, + "column": 21 } } }, { "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": 84686, - "end": 84687, + "value": "===", + "start": 87769, + "end": 87772, "loc": { "start": { - "line": 2397, - "column": 15 + "line": 2435, + "column": 22 }, "end": { - "line": 2397, - "column": 16 + "line": 2435, + "column": 25 } } }, @@ -315888,44 +320348,44 @@ "postfix": false, "binop": null }, - "value": "uvCompressed", - "start": 84687, - "end": 84699, + "value": "undefined", + "start": 87773, + "end": 87782, "loc": { "start": { - "line": 2397, - "column": 16 + "line": 2435, + "column": 26 }, "end": { - "line": 2397, - "column": 28 + "line": 2435, + "column": 35 } } }, { "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": 84700, - "end": 84701, + "value": "||", + "start": 87783, + "end": 87785, "loc": { "start": { - "line": 2397, - "column": 29 + "line": 2435, + "column": 36 }, "end": { - "line": 2397, - "column": 30 + "line": 2435, + "column": 38 } } }, @@ -315941,49 +320401,51 @@ "postfix": false, "binop": null }, - "value": "result", - "start": 84702, - "end": 84708, + "value": "textureId", + "start": 87786, + "end": 87795, "loc": { "start": { - "line": 2397, - "column": 31 + "line": 2435, + "column": 39 }, "end": { - "line": 2397, - "column": 37 + "line": 2435, + "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": 84708, - "end": 84709, + "value": "===", + "start": 87796, + "end": 87799, "loc": { "start": { - "line": 2397, - "column": 37 + "line": 2435, + "column": 49 }, "end": { - "line": 2397, - "column": 38 + "line": 2435, + "column": 52 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -315991,52 +320453,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "quantized", - "start": 84709, - "end": 84718, + "value": "null", + "start": 87800, + "end": 87804, "loc": { "start": { - "line": 2397, - "column": 38 + "line": 2435, + "column": 53 }, "end": { - "line": 2397, - "column": 47 + "line": 2435, + "column": 57 } } }, { "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": 84718, - "end": 84719, + "start": 87804, + "end": 87805, "loc": { "start": { - "line": 2397, - "column": 47 + "line": 2435, + "column": 57 }, "end": { - "line": 2397, - "column": 48 + "line": 2435, + "column": 58 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -316045,25 +320507,25 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84732, - "end": 84735, + "start": 87806, + "end": 87807, "loc": { "start": { - "line": 2398, - "column": 12 + "line": 2435, + "column": 59 }, "end": { - "line": 2398, - "column": 15 + "line": 2435, + "column": 60 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -316072,76 +320534,76 @@ "binop": null, "updateContext": null }, - "start": 84735, - "end": 84736, + "value": "this", + "start": 87820, + "end": 87824, "loc": { "start": { - "line": 2398, - "column": 15 + "line": 2436, + "column": 12 }, "end": { - "line": 2398, + "line": 2436, "column": 16 } } }, { "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": "uvDecodeMatrix", - "start": 84736, - "end": 84750, + "start": 87824, + "end": 87825, "loc": { "start": { - "line": 2398, + "line": 2436, "column": 16 }, "end": { - "line": 2398, - "column": 30 + "line": 2436, + "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": 84751, - "end": 84752, + "value": "error", + "start": 87825, + "end": 87830, "loc": { "start": { - "line": 2398, - "column": 31 + "line": 2436, + "column": 17 }, "end": { - "line": 2398, - "column": 32 + "line": 2436, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -316150,25 +320612,24 @@ "postfix": false, "binop": null }, - "value": "result", - "start": 84753, - "end": 84759, + "start": 87830, + "end": 87831, "loc": { "start": { - "line": 2398, - "column": 33 + "line": 2436, + "column": 22 }, "end": { - "line": 2398, - "column": 39 + "line": 2436, + "column": 23 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -316177,24 +320638,25 @@ "binop": null, "updateContext": null }, - "start": 84759, - "end": 84760, + "value": "[createTexture] Config missing: id", + "start": 87831, + "end": 87867, "loc": { "start": { - "line": 2398, - "column": 39 + "line": 2436, + "column": 23 }, "end": { - "line": 2398, - "column": 40 + "line": 2436, + "column": 59 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -316202,17 +320664,16 @@ "postfix": false, "binop": null }, - "value": "decodeMatrix", - "start": 84760, - "end": 84772, + "start": 87867, + "end": 87868, "loc": { "start": { - "line": 2398, - "column": 40 + "line": 2436, + "column": 59 }, "end": { - "line": 2398, - "column": 52 + "line": 2436, + "column": 60 } } }, @@ -316229,48 +320690,50 @@ "binop": null, "updateContext": null }, - "start": 84772, - "end": 84773, + "start": 87868, + "end": 87869, "loc": { "start": { - "line": 2398, - "column": 52 + "line": 2436, + "column": 60 }, "end": { - "line": 2398, - "column": 53 + "line": 2436, + "column": 61 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 84782, - "end": 84783, + "value": "return", + "start": 87882, + "end": 87888, "loc": { "start": { - "line": 2399, - "column": 8 + "line": 2437, + "column": 12 }, "end": { - "line": 2399, - "column": 9 + "line": 2437, + "column": 18 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -316281,17 +320744,41 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 84784, - "end": 84788, + "start": 87888, + "end": 87889, "loc": { "start": { - "line": 2399, - "column": 10 + "line": 2437, + "column": 18 }, "end": { - "line": 2399, - "column": 14 + "line": 2437, + "column": 19 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 87898, + "end": 87899, + "loc": { + "start": { + "line": 2438, + "column": 8 + }, + "end": { + "line": 2438, + "column": 9 } } }, @@ -316310,16 +320797,16 @@ "updateContext": null }, "value": "if", - "start": 84789, - "end": 84791, + "start": 87908, + "end": 87910, "loc": { "start": { - "line": 2399, - "column": 15 + "line": 2439, + "column": 8 }, "end": { - "line": 2399, - "column": 17 + "line": 2439, + "column": 10 } } }, @@ -316335,22 +320822,23 @@ "postfix": false, "binop": null }, - "start": 84792, - "end": 84793, + "start": 87911, + "end": 87912, "loc": { "start": { - "line": 2399, - "column": 18 + "line": 2439, + "column": 11 }, "end": { - "line": 2399, - "column": 19 + "line": 2439, + "column": 12 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -316358,19 +320846,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 84793, - "end": 84796, + "value": "this", + "start": 87912, + "end": 87916, "loc": { "start": { - "line": 2399, - "column": 19 + "line": 2439, + "column": 12 }, "end": { - "line": 2399, - "column": 22 + "line": 2439, + "column": 16 } } }, @@ -316387,16 +320876,16 @@ "binop": null, "updateContext": null }, - "start": 84796, - "end": 84797, + "start": 87916, + "end": 87917, "loc": { "start": { - "line": 2399, - "column": 22 + "line": 2439, + "column": 16 }, "end": { - "line": 2399, - "column": 23 + "line": 2439, + "column": 17 } } }, @@ -316412,49 +320901,50 @@ "postfix": false, "binop": null }, - "value": "uvCompressed", - "start": 84797, - "end": 84809, + "value": "_textures", + "start": 87917, + "end": 87926, "loc": { "start": { - "line": 2399, - "column": 23 + "line": 2439, + "column": 17 }, "end": { - "line": 2399, - "column": 35 + "line": 2439, + "column": 26 } } }, { "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": 84809, - "end": 84810, + "start": 87926, + "end": 87927, "loc": { "start": { - "line": 2399, - "column": 35 + "line": 2439, + "column": 26 }, "end": { - "line": 2399, - "column": 36 + "line": 2439, + "column": 27 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -316463,48 +320953,49 @@ "postfix": false, "binop": null }, - "start": 84811, - "end": 84812, + "value": "textureId", + "start": 87927, + "end": 87936, "loc": { "start": { - "line": 2399, - "column": 37 + "line": 2439, + "column": 27 }, "end": { - "line": 2399, - "column": 38 + "line": 2439, + "column": 36 } } }, { "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": "cfg", - "start": 84825, - "end": 84828, + "start": 87936, + "end": 87937, "loc": { "start": { - "line": 2400, - "column": 12 + "line": 2439, + "column": 36 }, "end": { - "line": 2400, - "column": 15 + "line": 2439, + "column": 37 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -316512,26 +321003,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 84828, - "end": 84829, + "start": 87937, + "end": 87938, "loc": { "start": { - "line": 2400, - "column": 15 + "line": 2439, + "column": 37 }, "end": { - "line": 2400, - "column": 16 + "line": 2439, + "column": 38 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -316540,53 +321030,52 @@ "postfix": false, "binop": null }, - "value": "uvCompressed", - "start": 84829, - "end": 84841, + "start": 87939, + "end": 87940, "loc": { "start": { - "line": 2400, - "column": 16 + "line": 2439, + "column": 39 }, "end": { - "line": 2400, - "column": 28 + "line": 2439, + "column": 40 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 84842, - "end": 84843, + "value": "this", + "start": 87953, + "end": 87957, "loc": { "start": { - "line": 2400, - "column": 29 + "line": 2440, + "column": 12 }, "end": { - "line": 2400, - "column": 30 + "line": 2440, + "column": 16 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -316595,17 +321084,16 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 84844, - "end": 84847, + "start": 87957, + "end": 87958, "loc": { "start": { - "line": 2400, - "column": 31 + "line": 2440, + "column": 16 }, "end": { - "line": 2400, - "column": 34 + "line": 2440, + "column": 17 } } }, @@ -316621,17 +321109,17 @@ "postfix": false, "binop": null }, - "value": "Uint16Array", - "start": 84848, - "end": 84859, + "value": "error", + "start": 87958, + "end": 87963, "loc": { "start": { - "line": 2400, - "column": 35 + "line": 2440, + "column": 17 }, "end": { - "line": 2400, - "column": 46 + "line": 2440, + "column": 22 } } }, @@ -316647,22 +321135,22 @@ "postfix": false, "binop": null }, - "start": 84859, - "end": 84860, + "start": 87963, + "end": 87964, "loc": { "start": { - "line": 2400, - "column": 46 + "line": 2440, + "column": 22 }, "end": { - "line": 2400, - "column": 47 + "line": 2440, + "column": 23 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -316670,45 +321158,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 84860, - "end": 84863, + "value": "[createTexture] Texture already created: ", + "start": 87964, + "end": 88007, "loc": { "start": { - "line": 2400, - "column": 47 + "line": 2440, + "column": 23 }, "end": { - "line": 2400, - "column": 50 + "line": 2440, + "column": 66 } } }, { "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": 84863, - "end": 84864, + "value": "+", + "start": 88008, + "end": 88009, "loc": { "start": { - "line": 2400, - "column": 50 + "line": 2440, + "column": 67 }, "end": { - "line": 2400, - "column": 51 + "line": 2440, + "column": 68 } } }, @@ -316724,17 +321214,17 @@ "postfix": false, "binop": null }, - "value": "uvCompressed", - "start": 84864, - "end": 84876, + "value": "textureId", + "start": 88010, + "end": 88019, "loc": { "start": { - "line": 2400, - "column": 51 + "line": 2440, + "column": 69 }, "end": { - "line": 2400, - "column": 63 + "line": 2440, + "column": 78 } } }, @@ -316750,16 +321240,16 @@ "postfix": false, "binop": null }, - "start": 84876, - "end": 84877, + "start": 88019, + "end": 88020, "loc": { "start": { - "line": 2400, - "column": 63 + "line": 2440, + "column": 78 }, "end": { - "line": 2400, - "column": 64 + "line": 2440, + "column": 79 } } }, @@ -316776,49 +321266,51 @@ "binop": null, "updateContext": null }, - "start": 84877, - "end": 84878, + "start": 88020, + "end": 88021, "loc": { "start": { - "line": 2400, - "column": 64 + "line": 2440, + "column": 79 }, "end": { - "line": 2400, - "column": 65 + "line": 2440, + "column": 80 } } }, { "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": "cfg", - "start": 84891, - "end": 84894, + "value": "return", + "start": 88034, + "end": 88040, "loc": { "start": { - "line": 2401, + "line": 2441, "column": 12 }, "end": { - "line": 2401, - "column": 15 + "line": 2441, + "column": 18 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -316828,24 +321320,24 @@ "binop": null, "updateContext": null }, - "start": 84894, - "end": 84895, + "start": 88040, + "end": 88041, "loc": { "start": { - "line": 2401, - "column": 15 + "line": 2441, + "column": 18 }, "end": { - "line": 2401, - "column": 16 + "line": 2441, + "column": 19 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -316853,51 +321345,50 @@ "postfix": false, "binop": null }, - "value": "uvDecodeMatrix", - "start": 84895, - "end": 84909, + "start": 88050, + "end": 88051, "loc": { "start": { - "line": 2401, - "column": 16 + "line": 2442, + "column": 8 }, "end": { - "line": 2401, - "column": 30 + "line": 2442, + "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": 84910, - "end": 84911, + "value": "if", + "start": 88060, + "end": 88062, "loc": { "start": { - "line": 2401, - "column": 31 + "line": 2443, + "column": 8 }, "end": { - "line": 2401, - "column": 32 + "line": 2443, + "column": 10 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -316905,20 +321396,45 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 88063, + "end": 88064, + "loc": { + "start": { + "line": 2443, + "column": 11 + }, + "end": { + "line": 2443, + "column": 12 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, "binop": null, "updateContext": null }, - "value": "new", - "start": 84912, - "end": 84915, + "value": "!", + "start": 88064, + "end": 88065, "loc": { "start": { - "line": 2401, - "column": 33 + "line": 2443, + "column": 12 }, "end": { - "line": 2401, - "column": 36 + "line": 2443, + "column": 13 } } }, @@ -316934,42 +321450,43 @@ "postfix": false, "binop": null }, - "value": "Float64Array", - "start": 84916, - "end": 84928, + "value": "cfg", + "start": 88065, + "end": 88068, "loc": { "start": { - "line": 2401, - "column": 37 + "line": 2443, + "column": 13 }, "end": { - "line": 2401, - "column": 49 + "line": 2443, + "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": 84928, - "end": 84929, + "start": 88068, + "end": 88069, "loc": { "start": { - "line": 2401, - "column": 49 + "line": 2443, + "column": 16 }, "end": { - "line": 2401, - "column": 50 + "line": 2443, + "column": 17 } } }, @@ -316985,77 +321502,79 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 84929, - "end": 84932, + "value": "src", + "start": 88069, + "end": 88072, "loc": { "start": { - "line": 2401, - "column": 50 + "line": 2443, + "column": 17 }, "end": { - "line": 2401, - "column": 53 + "line": 2443, + "column": 20 } } }, { "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": 84932, - "end": 84933, + "value": "&&", + "start": 88073, + "end": 88075, "loc": { "start": { - "line": 2401, - "column": 53 + "line": 2443, + "column": 21 }, "end": { - "line": 2401, - "column": 54 + "line": 2443, + "column": 23 } } }, { "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": "uvDecodeMatrix", - "start": 84933, - "end": 84947, + "value": "!", + "start": 88076, + "end": 88077, "loc": { "start": { - "line": 2401, - "column": 54 + "line": 2443, + "column": 24 }, "end": { - "line": 2401, - "column": 68 + "line": 2443, + "column": 25 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -317063,23 +321582,24 @@ "postfix": false, "binop": null }, - "start": 84947, - "end": 84948, + "value": "cfg", + "start": 88077, + "end": 88080, "loc": { "start": { - "line": 2401, - "column": 68 + "line": 2443, + "column": 25 }, "end": { - "line": 2401, - "column": 69 + "line": 2443, + "column": 28 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -317089,24 +321609,24 @@ "binop": null, "updateContext": null }, - "start": 84948, - "end": 84949, + "start": 88080, + "end": 88081, "loc": { "start": { - "line": 2401, - "column": 69 + "line": 2443, + "column": 28 }, "end": { - "line": 2401, - "column": 70 + "line": 2443, + "column": 29 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -317114,69 +321634,71 @@ "postfix": false, "binop": null }, - "start": 84958, - "end": 84959, + "value": "image", + "start": 88081, + "end": 88086, "loc": { "start": { - "line": 2402, - "column": 8 + "line": 2443, + "column": 29 }, "end": { - "line": 2402, - "column": 9 + "line": 2443, + "column": 34 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "if", - "start": 84968, - "end": 84970, + "value": "&&", + "start": 88087, + "end": 88089, "loc": { "start": { - "line": 2403, - "column": 8 + "line": 2443, + "column": 35 }, "end": { - "line": 2403, - "column": 10 + "line": 2443, + "column": 37 } } }, { "type": { - "label": "(", + "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": 84971, - "end": 84972, + "value": "!", + "start": 88090, + "end": 88091, "loc": { "start": { - "line": 2403, - "column": 11 + "line": 2443, + "column": 38 }, "end": { - "line": 2403, - "column": 12 + "line": 2443, + "column": 39 } } }, @@ -317193,16 +321715,16 @@ "binop": null }, "value": "cfg", - "start": 84972, - "end": 84975, + "start": 88091, + "end": 88094, "loc": { "start": { - "line": 2403, - "column": 12 + "line": 2443, + "column": 39 }, "end": { - "line": 2403, - "column": 15 + "line": 2443, + "column": 42 } } }, @@ -317219,16 +321741,16 @@ "binop": null, "updateContext": null }, - "start": 84975, - "end": 84976, + "start": 88094, + "end": 88095, "loc": { "start": { - "line": 2403, - "column": 15 + "line": 2443, + "column": 42 }, "end": { - "line": 2403, - "column": 16 + "line": 2443, + "column": 43 } } }, @@ -317244,17 +321766,17 @@ "postfix": false, "binop": null }, - "value": "normals", - "start": 84976, - "end": 84983, + "value": "buffers", + "start": 88095, + "end": 88102, "loc": { "start": { - "line": 2403, - "column": 16 + "line": 2443, + "column": 43 }, "end": { - "line": 2403, - "column": 23 + "line": 2443, + "column": 50 } } }, @@ -317270,16 +321792,16 @@ "postfix": false, "binop": null }, - "start": 84983, - "end": 84984, + "start": 88102, + "end": 88103, "loc": { "start": { - "line": 2403, - "column": 23 + "line": 2443, + "column": 50 }, "end": { - "line": 2403, - "column": 24 + "line": 2443, + "column": 51 } } }, @@ -317295,38 +321817,23 @@ "postfix": false, "binop": null }, - "start": 84985, - "end": 84986, - "loc": { - "start": { - "line": 2403, - "column": 25 - }, - "end": { - "line": 2403, - "column": 26 - } - } - }, - { - "type": "CommentLine", - "value": " HACK", - "start": 84987, - "end": 84994, + "start": 88104, + "end": 88105, "loc": { "start": { - "line": 2403, - "column": 27 + "line": 2443, + "column": 52 }, "end": { - "line": 2403, - "column": 34 + "line": 2443, + "column": 53 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -317334,19 +321841,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 85007, - "end": 85010, + "value": "this", + "start": 88118, + "end": 88122, "loc": { "start": { - "line": 2404, + "line": 2444, "column": 12 }, "end": { - "line": 2404, - "column": 15 + "line": 2444, + "column": 16 } } }, @@ -317363,16 +321871,16 @@ "binop": null, "updateContext": null }, - "start": 85010, - "end": 85011, + "start": 88122, + "end": 88123, "loc": { "start": { - "line": 2404, - "column": 15 + "line": 2444, + "column": 16 }, "end": { - "line": 2404, - "column": 16 + "line": 2444, + "column": 17 } } }, @@ -317388,51 +321896,48 @@ "postfix": false, "binop": null }, - "value": "normals", - "start": 85011, - "end": 85018, + "value": "error", + "start": 88123, + "end": 88128, "loc": { "start": { - "line": 2404, - "column": 16 + "line": 2444, + "column": 17 }, "end": { - "line": 2404, - "column": 23 + "line": 2444, + "column": 22 } } }, { "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": 85019, - "end": 85020, + "start": 88128, + "end": 88129, "loc": { "start": { - "line": 2404, - "column": 24 + "line": 2444, + "column": 22 }, "end": { - "line": 2404, - "column": 25 + "line": 2444, + "column": 23 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -317443,17 +321948,42 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 85021, - "end": 85025, + "value": "[createTexture] Param expected: `src`, `image' or 'buffers'", + "start": 88129, + "end": 88190, "loc": { "start": { - "line": 2404, - "column": 26 + "line": 2444, + "column": 23 }, "end": { - "line": 2404, - "column": 30 + "line": 2444, + "column": 84 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 88190, + "end": 88191, + "loc": { + "start": { + "line": 2444, + "column": 84 + }, + "end": { + "line": 2444, + "column": 85 } } }, @@ -317470,48 +322000,51 @@ "binop": null, "updateContext": null }, - "start": 85025, - "end": 85026, + "start": 88191, + "end": 88192, "loc": { "start": { - "line": 2404, - "column": 30 + "line": 2444, + "column": 85 }, "end": { - "line": 2404, - "column": 31 + "line": 2444, + "column": 86 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 85035, - "end": 85036, + "value": "return", + "start": 88205, + "end": 88211, "loc": { "start": { - "line": 2405, - "column": 8 + "line": 2445, + "column": 12 }, "end": { - "line": 2405, - "column": 9 + "line": 2445, + "column": 18 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -317522,24 +322055,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 85045, - "end": 85049, + "value": "null", + "start": 88212, + "end": 88216, "loc": { "start": { - "line": 2406, - "column": 8 + "line": 2445, + "column": 19 }, "end": { - "line": 2406, - "column": 12 + "line": 2445, + "column": 23 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -317549,24 +322082,24 @@ "binop": null, "updateContext": null }, - "start": 85049, - "end": 85050, + "start": 88216, + "end": 88217, "loc": { "start": { - "line": 2406, - "column": 12 + "line": 2445, + "column": 23 }, "end": { - "line": 2406, - "column": 13 + "line": 2445, + "column": 24 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -317574,25 +322107,25 @@ "postfix": false, "binop": null }, - "value": "_geometries", - "start": 85050, - "end": 85061, + "start": 88226, + "end": 88227, "loc": { "start": { - "line": 2406, - "column": 13 + "line": 2446, + "column": 8 }, "end": { - "line": 2406, - "column": 24 + "line": 2446, + "column": 9 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -317601,16 +322134,17 @@ "binop": null, "updateContext": null }, - "start": 85062, - "end": 85063, + "value": "let", + "start": 88236, + "end": 88239, "loc": { "start": { - "line": 2406, - "column": 25 + "line": 2447, + "column": 8 }, "end": { - "line": 2406, - "column": 26 + "line": 2447, + "column": 11 } } }, @@ -317626,43 +322160,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 85063, - "end": 85066, + "value": "minFilter", + "start": 88240, + "end": 88249, "loc": { "start": { - "line": 2406, - "column": 26 + "line": 2447, + "column": 12 }, "end": { - "line": 2406, - "column": 29 + "line": 2447, + "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": 85066, - "end": 85067, + "value": "=", + "start": 88250, + "end": 88251, "loc": { "start": { - "line": 2406, - "column": 29 + "line": 2447, + "column": 22 }, "end": { - "line": 2406, - "column": 30 + "line": 2447, + "column": 23 } } }, @@ -317678,23 +322213,23 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 85067, - "end": 85069, + "value": "cfg", + "start": 88252, + "end": 88255, "loc": { "start": { - "line": 2406, - "column": 30 + "line": 2447, + "column": 24 }, "end": { - "line": 2406, - "column": 32 + "line": 2447, + "column": 27 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -317705,43 +322240,69 @@ "binop": null, "updateContext": null }, - "start": 85069, - "end": 85070, + "start": 88255, + "end": 88256, "loc": { "start": { - "line": 2406, - "column": 32 + "line": 2447, + "column": 27 }, "end": { - "line": 2406, - "column": 33 + "line": 2447, + "column": 28 } } }, { "type": { - "label": "=", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "minFilter", + "start": 88256, + "end": 88265, + "loc": { + "start": { + "line": 2447, + "column": 28 + }, + "end": { + "line": 2447, + "column": 37 + } + } + }, + { + "type": { + "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": 85071, - "end": 85072, + "value": "||", + "start": 88266, + "end": 88268, "loc": { "start": { - "line": 2406, - "column": 34 + "line": 2447, + "column": 38 }, "end": { - "line": 2406, - "column": 35 + "line": 2447, + "column": 40 } } }, @@ -317757,17 +322318,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 85073, - "end": 85076, + "value": "LinearMipmapLinearFilter", + "start": 88269, + "end": 88293, "loc": { "start": { - "line": 2406, - "column": 36 + "line": 2447, + "column": 41 }, "end": { - "line": 2406, - "column": 39 + "line": 2447, + "column": 65 } } }, @@ -317784,25 +322345,25 @@ "binop": null, "updateContext": null }, - "start": 85076, - "end": 85077, + "start": 88293, + "end": 88294, "loc": { "start": { - "line": 2406, - "column": 39 + "line": 2447, + "column": 65 }, "end": { - "line": 2406, - "column": 40 + "line": 2447, + "column": 66 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -317811,43 +322372,42 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 85086, - "end": 85090, + "value": "if", + "start": 88303, + "end": 88305, "loc": { "start": { - "line": 2407, + "line": 2448, "column": 8 }, "end": { - "line": 2407, - "column": 12 + "line": 2448, + "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": 85090, - "end": 85091, + "start": 88306, + "end": 88307, "loc": { "start": { - "line": 2407, - "column": 12 + "line": 2448, + "column": 11 }, "end": { - "line": 2407, - "column": 13 + "line": 2448, + "column": 12 } } }, @@ -317863,51 +322423,51 @@ "postfix": false, "binop": null }, - "value": "_numTriangles", - "start": 85091, - "end": 85104, + "value": "minFilter", + "start": 88307, + "end": 88316, "loc": { "start": { - "line": 2407, - "column": 13 + "line": 2448, + "column": 12 }, "end": { - "line": 2407, - "column": 26 + "line": 2448, + "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": 85105, - "end": 85107, + "value": "!==", + "start": 88317, + "end": 88320, "loc": { "start": { - "line": 2407, - "column": 27 + "line": 2448, + "column": 22 }, "end": { - "line": 2407, - "column": 29 + "line": 2448, + "column": 25 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -317916,16 +322476,44 @@ "postfix": false, "binop": null }, - "start": 85108, - "end": 85109, + "value": "LinearFilter", + "start": 88321, + "end": 88333, "loc": { "start": { - "line": 2407, - "column": 30 + "line": 2448, + "column": 26 }, "end": { - "line": 2407, - "column": 31 + "line": 2448, + "column": 38 + } + } + }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 88334, + "end": 88336, + "loc": { + "start": { + "line": 2448, + "column": 39 + }, + "end": { + "line": 2448, + "column": 41 } } }, @@ -317941,43 +322529,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 85109, - "end": 85112, + "value": "minFilter", + "start": 88349, + "end": 88358, "loc": { "start": { - "line": 2407, - "column": 31 + "line": 2449, + "column": 12 }, "end": { - "line": 2407, - "column": 34 + "line": 2449, + "column": 21 } } }, { "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": 85112, - "end": 85113, + "value": "!==", + "start": 88359, + "end": 88362, "loc": { "start": { - "line": 2407, - "column": 34 + "line": 2449, + "column": 22 }, "end": { - "line": 2407, - "column": 35 + "line": 2449, + "column": 25 } } }, @@ -317993,23 +322582,23 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 85113, - "end": 85120, + "value": "LinearMipMapNearestFilter", + "start": 88363, + "end": 88388, "loc": { "start": { - "line": 2407, - "column": 35 + "line": 2449, + "column": 26 }, "end": { - "line": 2407, - "column": 42 + "line": 2449, + "column": 51 } } }, { "type": { - "label": "?", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -318017,19 +322606,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 85121, - "end": 85122, + "value": "&&", + "start": 88389, + "end": 88391, "loc": { "start": { - "line": 2407, - "column": 43 + "line": 2449, + "column": 52 }, "end": { - "line": 2407, - "column": 44 + "line": 2449, + "column": 54 } } }, @@ -318045,43 +322635,44 @@ "postfix": false, "binop": null }, - "value": "Math", - "start": 85123, - "end": 85127, + "value": "minFilter", + "start": 88404, + "end": 88413, "loc": { "start": { - "line": 2407, - "column": 45 + "line": 2450, + "column": 12 }, "end": { - "line": 2407, - "column": 49 + "line": 2450, + "column": 21 } } }, { "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": 85127, - "end": 85128, + "value": "!==", + "start": 88414, + "end": 88417, "loc": { "start": { - "line": 2407, - "column": 49 + "line": 2450, + "column": 22 }, "end": { - "line": 2407, - "column": 50 + "line": 2450, + "column": 25 } } }, @@ -318097,42 +322688,44 @@ "postfix": false, "binop": null }, - "value": "round", - "start": 85128, - "end": 85133, + "value": "LinearMipmapLinearFilter", + "start": 88418, + "end": 88442, "loc": { "start": { - "line": 2407, - "column": 50 + "line": 2450, + "column": 26 }, "end": { - "line": 2407, - "column": 55 + "line": 2450, + "column": 50 } } }, { "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": 85133, - "end": 85134, + "value": "&&", + "start": 88443, + "end": 88445, "loc": { "start": { - "line": 2407, - "column": 55 + "line": 2450, + "column": 51 }, "end": { - "line": 2407, - "column": 56 + "line": 2450, + "column": 53 } } }, @@ -318148,43 +322741,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 85134, - "end": 85137, + "value": "minFilter", + "start": 88458, + "end": 88467, "loc": { "start": { - "line": 2407, - "column": 56 + "line": 2451, + "column": 12 }, "end": { - "line": 2407, - "column": 59 + "line": 2451, + "column": 21 } } }, { "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": 85137, - "end": 85138, + "value": "!==", + "start": 88468, + "end": 88471, "loc": { "start": { - "line": 2407, - "column": 59 + "line": 2451, + "column": 22 }, "end": { - "line": 2407, - "column": 60 + "line": 2451, + "column": 25 } } }, @@ -318200,43 +322794,44 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 85138, - "end": 85145, + "value": "NearestMipMapLinearFilter", + "start": 88472, + "end": 88497, "loc": { "start": { - "line": 2407, - "column": 60 + "line": 2451, + "column": 26 }, "end": { - "line": 2407, - "column": 67 + "line": 2451, + "column": 51 } } }, { "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": 85145, - "end": 85146, + "value": "&&", + "start": 88498, + "end": 88500, "loc": { "start": { - "line": 2407, - "column": 67 + "line": 2451, + "column": 52 }, "end": { - "line": 2407, - "column": 68 + "line": 2451, + "column": 54 } } }, @@ -318252,23 +322847,23 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 85146, - "end": 85152, + "value": "minFilter", + "start": 88513, + "end": 88522, "loc": { "start": { - "line": 2407, - "column": 68 + "line": 2452, + "column": 12 }, "end": { - "line": 2407, - "column": 74 + "line": 2452, + "column": 21 } } }, { "type": { - "label": "/", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -318276,26 +322871,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": 6, "updateContext": null }, - "value": "/", - "start": 85153, - "end": 85154, + "value": "!==", + "start": 88523, + "end": 88526, "loc": { "start": { - "line": 2407, - "column": 75 + "line": 2452, + "column": 22 }, "end": { - "line": 2407, - "column": 76 + "line": 2452, + "column": 25 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -318303,20 +322898,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 3, - "start": 85155, - "end": 85156, + "value": "NearestMipMapNearestFilter", + "start": 88527, + "end": 88553, "loc": { "start": { - "line": 2407, - "column": 77 + "line": 2452, + "column": 26 }, "end": { - "line": 2407, - "column": 78 + "line": 2452, + "column": 52 } } }, @@ -318332,48 +322926,48 @@ "postfix": false, "binop": null }, - "start": 85156, - "end": 85157, + "start": 88553, + "end": 88554, "loc": { "start": { - "line": 2407, - "column": 78 + "line": 2452, + "column": 52 }, "end": { - "line": 2407, - "column": 79 + "line": 2452, + "column": 53 } } }, { "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": 85158, - "end": 85159, + "start": 88555, + "end": 88556, "loc": { "start": { - "line": 2407, - "column": 80 + "line": 2452, + "column": 54 }, "end": { - "line": 2407, - "column": 81 + "line": 2452, + "column": 55 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -318384,23 +322978,23 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 85160, - "end": 85161, + "value": "this", + "start": 88569, + "end": 88573, "loc": { "start": { - "line": 2407, - "column": 82 + "line": 2453, + "column": 12 }, "end": { - "line": 2407, - "column": 83 + "line": 2453, + "column": 16 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -318408,51 +323002,76 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 88573, + "end": 88574, + "loc": { + "start": { + "line": 2453, + "column": 16 + }, + "end": { + "line": 2453, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 85161, - "end": 85162, + "value": "error", + "start": 88574, + "end": 88579, "loc": { "start": { - "line": 2407, - "column": 83 + "line": 2453, + "column": 17 }, "end": { - "line": 2407, - "column": 84 + "line": 2453, + "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": 85162, - "end": 85163, + "start": 88579, + "end": 88580, "loc": { "start": { - "line": 2407, - "column": 84 + "line": 2453, + "column": 22 }, "end": { - "line": 2407, - "column": 85 + "line": 2453, + "column": 23 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -318460,26 +323079,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 85172, - "end": 85176, + "start": 88580, + "end": 88581, "loc": { "start": { - "line": 2408, - "column": 8 + "line": 2453, + "column": 23 }, "end": { - "line": 2408, - "column": 12 + "line": 2453, + "column": 24 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -318490,22 +323107,23 @@ "binop": null, "updateContext": null }, - "start": 85176, - "end": 85177, + "value": "[createTexture] Unsupported value for 'minFilter' - \n supported values are LinearFilter, LinearMipMapNearestFilter, NearestMipMapNearestFilter, \n NearestMipMapLinearFilter and LinearMipmapLinearFilter. Defaulting to LinearMipmapLinearFilter.", + "start": 88581, + "end": 88844, "loc": { "start": { - "line": 2408, - "column": 12 + "line": 2453, + "column": 24 }, "end": { - "line": 2408, - "column": 13 + "line": 2455, + "column": 107 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -318515,43 +323133,41 @@ "postfix": false, "binop": null }, - "value": "numGeometries", - "start": 85177, - "end": 85190, + "start": 88844, + "end": 88845, "loc": { "start": { - "line": 2408, - "column": 13 + "line": 2455, + "column": 107 }, "end": { - "line": 2408, - "column": 26 + "line": 2455, + "column": 108 } } }, { "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": 85190, - "end": 85192, + "start": 88845, + "end": 88846, "loc": { "start": { - "line": 2408, - "column": 26 + "line": 2455, + "column": 108 }, "end": { - "line": 2408, - "column": 28 + "line": 2455, + "column": 109 } } }, @@ -318568,24 +323184,24 @@ "binop": null, "updateContext": null }, - "start": 85192, - "end": 85193, + "start": 88846, + "end": 88847, "loc": { "start": { - "line": 2408, - "column": 28 + "line": 2455, + "column": 109 }, "end": { - "line": 2408, - "column": 29 + "line": 2455, + "column": 110 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -318593,32 +323209,44 @@ "postfix": false, "binop": null }, - "start": 85198, - "end": 85199, + "value": "minFilter", + "start": 88860, + "end": 88869, "loc": { "start": { - "line": 2409, - "column": 4 + "line": 2456, + "column": 12 }, "end": { - "line": 2409, - "column": 5 + "line": 2456, + "column": 21 } } }, { - "type": "CommentBlock", - "value": "*\n * Creates a texture within this SceneModel.\n *\n * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture.\n *\n * @param {*} cfg Texture properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link SceneModel#createTextureSet}.\n * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file\n * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````SceneModel```` is configured with a {@link TextureTranscoder}.\n * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````SceneModel```` is\n * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps.\n * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded.\n * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel.\n * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}.\n * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}.\n * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}..\n * @param {Number} [cfg.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n ", - "start": 85205, - "end": 87651, + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 88870, + "end": 88871, "loc": { "start": { - "line": 2411, - "column": 4 + "line": 2456, + "column": 22 }, "end": { - "line": 2431, - "column": 7 + "line": 2456, + "column": 23 } } }, @@ -318634,50 +323262,51 @@ "postfix": false, "binop": null }, - "value": "createTexture", - "start": 87656, - "end": 87669, + "value": "LinearMipmapLinearFilter", + "start": 88872, + "end": 88896, "loc": { "start": { - "line": 2432, - "column": 4 + "line": 2456, + "column": 24 }, "end": { - "line": 2432, - "column": 17 + "line": 2456, + "column": 48 } } }, { "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": 87669, - "end": 87670, + "start": 88896, + "end": 88897, "loc": { "start": { - "line": 2432, - "column": 17 + "line": 2456, + "column": 48 }, "end": { - "line": 2432, - "column": 18 + "line": 2456, + "column": 49 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -318685,23 +323314,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 87670, - "end": 87673, + "start": 88906, + "end": 88907, "loc": { "start": { - "line": 2432, - "column": 18 + "line": 2457, + "column": 8 }, "end": { - "line": 2432, - "column": 21 + "line": 2457, + "column": 9 } } }, { "type": { - "label": ")", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -318709,25 +323338,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 87673, - "end": 87674, + "value": "let", + "start": 88916, + "end": 88919, "loc": { "start": { - "line": 2432, - "column": 21 + "line": 2458, + "column": 8 }, "end": { - "line": 2432, - "column": 22 + "line": 2458, + "column": 11 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -318736,44 +323367,44 @@ "postfix": false, "binop": null }, - "start": 87675, - "end": 87676, + "value": "magFilter", + "start": 88920, + "end": 88929, "loc": { "start": { - "line": 2432, - "column": 23 + "line": 2458, + "column": 12 }, "end": { - "line": 2432, - "column": 24 + "line": 2458, + "column": 21 } } }, { "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": 87685, - "end": 87690, + "value": "=", + "start": 88930, + "end": 88931, "loc": { "start": { - "line": 2433, - "column": 8 + "line": 2458, + "column": 22 }, "end": { - "line": 2433, - "column": 13 + "line": 2458, + "column": 23 } } }, @@ -318789,44 +323420,43 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 87691, - "end": 87700, + "value": "cfg", + "start": 88932, + "end": 88935, "loc": { "start": { - "line": 2433, - "column": 14 + "line": 2458, + "column": 24 }, "end": { - "line": 2433, - "column": 23 + "line": 2458, + "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": 87701, - "end": 87702, + "start": 88935, + "end": 88936, "loc": { "start": { - "line": 2433, - "column": 24 + "line": 2458, + "column": 27 }, "end": { - "line": 2433, - "column": 25 + "line": 2458, + "column": 28 } } }, @@ -318842,43 +323472,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 87703, - "end": 87706, + "value": "magFilter", + "start": 88936, + "end": 88945, "loc": { "start": { - "line": 2433, - "column": 26 + "line": 2458, + "column": 28 }, "end": { - "line": 2433, - "column": 29 + "line": 2458, + "column": 37 } } }, { "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": 87706, - "end": 87707, + "value": "||", + "start": 88946, + "end": 88948, "loc": { "start": { - "line": 2433, - "column": 29 + "line": 2458, + "column": 38 }, "end": { - "line": 2433, - "column": 30 + "line": 2458, + "column": 40 } } }, @@ -318894,17 +323525,17 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 87707, - "end": 87709, + "value": "LinearFilter", + "start": 88949, + "end": 88961, "loc": { "start": { - "line": 2433, - "column": 30 + "line": 2458, + "column": 41 }, "end": { - "line": 2433, - "column": 32 + "line": 2458, + "column": 53 } } }, @@ -318921,16 +323552,16 @@ "binop": null, "updateContext": null }, - "start": 87709, - "end": 87710, + "start": 88961, + "end": 88962, "loc": { "start": { - "line": 2433, - "column": 32 + "line": 2458, + "column": 53 }, "end": { - "line": 2433, - "column": 33 + "line": 2458, + "column": 54 } } }, @@ -318949,15 +323580,15 @@ "updateContext": null }, "value": "if", - "start": 87719, - "end": 87721, + "start": 88971, + "end": 88973, "loc": { "start": { - "line": 2434, + "line": 2459, "column": 8 }, "end": { - "line": 2434, + "line": 2459, "column": 10 } } @@ -318974,15 +323605,15 @@ "postfix": false, "binop": null }, - "start": 87722, - "end": 87723, + "start": 88974, + "end": 88975, "loc": { "start": { - "line": 2434, + "line": 2459, "column": 11 }, "end": { - "line": 2434, + "line": 2459, "column": 12 } } @@ -318999,16 +323630,16 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 87723, - "end": 87732, + "value": "magFilter", + "start": 88975, + "end": 88984, "loc": { "start": { - "line": 2434, + "line": 2459, "column": 12 }, "end": { - "line": 2434, + "line": 2459, "column": 21 } } @@ -319026,16 +323657,16 @@ "binop": 6, "updateContext": null }, - "value": "===", - "start": 87733, - "end": 87736, + "value": "!==", + "start": 88985, + "end": 88988, "loc": { "start": { - "line": 2434, + "line": 2459, "column": 22 }, "end": { - "line": 2434, + "line": 2459, "column": 25 } } @@ -319052,23 +323683,23 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 87737, - "end": 87746, + "value": "LinearFilter", + "start": 88989, + "end": 89001, "loc": { "start": { - "line": 2434, + "line": 2459, "column": 26 }, "end": { - "line": 2434, - "column": 35 + "line": 2459, + "column": 38 } } }, { "type": { - "label": "||", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -319076,20 +323707,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": 2, "updateContext": null }, - "value": "||", - "start": 87747, - "end": 87749, + "value": "&&", + "start": 89002, + "end": 89004, "loc": { "start": { - "line": 2434, - "column": 36 + "line": 2459, + "column": 39 }, "end": { - "line": 2434, - "column": 38 + "line": 2459, + "column": 41 } } }, @@ -319105,17 +323736,17 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 87750, - "end": 87759, + "value": "magFilter", + "start": 89005, + "end": 89014, "loc": { "start": { - "line": 2434, - "column": 39 + "line": 2459, + "column": 42 }, "end": { - "line": 2434, - "column": 48 + "line": 2459, + "column": 51 } } }, @@ -319132,24 +323763,23 @@ "binop": 6, "updateContext": null }, - "value": "===", - "start": 87760, - "end": 87763, + "value": "!==", + "start": 89015, + "end": 89018, "loc": { "start": { - "line": 2434, - "column": 49 + "line": 2459, + "column": 52 }, "end": { - "line": 2434, - "column": 52 + "line": 2459, + "column": 55 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -319157,20 +323787,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 87764, - "end": 87768, + "value": "NearestFilter", + "start": 89019, + "end": 89032, "loc": { "start": { - "line": 2434, - "column": 53 + "line": 2459, + "column": 56 }, "end": { - "line": 2434, - "column": 57 + "line": 2459, + "column": 69 } } }, @@ -319186,16 +323815,16 @@ "postfix": false, "binop": null }, - "start": 87768, - "end": 87769, + "start": 89032, + "end": 89033, "loc": { "start": { - "line": 2434, - "column": 57 + "line": 2459, + "column": 69 }, "end": { - "line": 2434, - "column": 58 + "line": 2459, + "column": 70 } } }, @@ -319211,16 +323840,16 @@ "postfix": false, "binop": null }, - "start": 87770, - "end": 87771, + "start": 89034, + "end": 89035, "loc": { "start": { - "line": 2434, - "column": 59 + "line": 2459, + "column": 71 }, "end": { - "line": 2434, - "column": 60 + "line": 2459, + "column": 72 } } }, @@ -319239,15 +323868,15 @@ "updateContext": null }, "value": "this", - "start": 87784, - "end": 87788, + "start": 89048, + "end": 89052, "loc": { "start": { - "line": 2435, + "line": 2460, "column": 12 }, "end": { - "line": 2435, + "line": 2460, "column": 16 } } @@ -319265,15 +323894,15 @@ "binop": null, "updateContext": null }, - "start": 87788, - "end": 87789, + "start": 89052, + "end": 89053, "loc": { "start": { - "line": 2435, + "line": 2460, "column": 16 }, "end": { - "line": 2435, + "line": 2460, "column": 17 } } @@ -319291,15 +323920,15 @@ "binop": null }, "value": "error", - "start": 87789, - "end": 87794, + "start": 89053, + "end": 89058, "loc": { "start": { - "line": 2435, + "line": 2460, "column": 17 }, "end": { - "line": 2435, + "line": 2460, "column": 22 } } @@ -319316,22 +323945,22 @@ "postfix": false, "binop": null }, - "start": 87794, - "end": 87795, + "start": 89058, + "end": 89059, "loc": { "start": { - "line": 2435, + "line": 2460, "column": 22 }, "end": { - "line": 2435, + "line": 2460, "column": 23 } } }, { "type": { - "label": "string", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -319339,26 +323968,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "[createTexture] Config missing: id", - "start": 87795, - "end": 87831, + "start": 89059, + "end": 89060, "loc": { "start": { - "line": 2435, + "line": 2460, "column": 23 }, "end": { - "line": 2435, - "column": 59 + "line": 2460, + "column": 24 } } }, { "type": { - "label": ")", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -319366,106 +323993,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 87831, - "end": 87832, - "loc": { - "start": { - "line": 2435, - "column": 59 - }, - "end": { - "line": 2435, - "column": 60 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 87832, - "end": 87833, - "loc": { - "start": { - "line": 2435, - "column": 60 - }, - "end": { - "line": 2435, - "column": 61 - } - } - }, - { - "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "return", - "start": 87846, - "end": 87852, - "loc": { - "start": { - "line": 2436, - "column": 12 - }, - "end": { - "line": 2436, - "column": 18 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 87852, - "end": 87853, + "value": "[createTexture] Unsupported value for 'magFilter' - supported values are LinearFilter and NearestFilter. Defaulting to LinearFilter.", + "start": 89060, + "end": 89192, "loc": { "start": { - "line": 2436, - "column": 18 + "line": 2460, + "column": 24 }, "end": { - "line": 2436, - "column": 19 + "line": 2460, + "column": 156 } } }, { "type": { - "label": "}", + "label": "`", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -319473,23 +324022,22 @@ "postfix": false, "binop": null }, - "start": 87862, - "end": 87863, + "start": 89192, + "end": 89193, "loc": { "start": { - "line": 2437, - "column": 8 + "line": 2460, + "column": 156 }, "end": { - "line": 2437, - "column": 9 + "line": 2460, + "column": 157 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -319497,80 +324045,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "if", - "start": 87872, - "end": 87874, - "loc": { - "start": { - "line": 2438, - "column": 8 - }, - "end": { - "line": 2438, - "column": 10 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "start": 87875, - "end": 87876, - "loc": { - "start": { - "line": 2438, - "column": 11 - }, - "end": { - "line": 2438, - "column": 12 - } - } - }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 87876, - "end": 87880, + "start": 89193, + "end": 89194, "loc": { "start": { - "line": 2438, - "column": 12 + "line": 2460, + "column": 157 }, "end": { - "line": 2438, - "column": 16 + "line": 2460, + "column": 158 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -319580,16 +324073,16 @@ "binop": null, "updateContext": null }, - "start": 87880, - "end": 87881, + "start": 89194, + "end": 89195, "loc": { "start": { - "line": 2438, - "column": 16 + "line": 2460, + "column": 158 }, "end": { - "line": 2438, - "column": 17 + "line": 2460, + "column": 159 } } }, @@ -319605,43 +324098,44 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 87881, - "end": 87890, + "value": "magFilter", + "start": 89208, + "end": 89217, "loc": { "start": { - "line": 2438, - "column": 17 + "line": 2461, + "column": 12 }, "end": { - "line": 2438, - "column": 26 + "line": 2461, + "column": 21 } } }, { "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": 87890, - "end": 87891, + "value": "=", + "start": 89218, + "end": 89219, "loc": { "start": { - "line": 2438, - "column": 26 + "line": 2461, + "column": 22 }, "end": { - "line": 2438, - "column": 27 + "line": 2461, + "column": 23 } } }, @@ -319657,24 +324151,24 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 87891, - "end": 87900, + "value": "LinearFilter", + "start": 89220, + "end": 89232, "loc": { "start": { - "line": 2438, - "column": 27 + "line": 2461, + "column": 24 }, "end": { - "line": 2438, + "line": 2461, "column": 36 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -319684,22 +324178,22 @@ "binop": null, "updateContext": null }, - "start": 87900, - "end": 87901, + "start": 89232, + "end": 89233, "loc": { "start": { - "line": 2438, + "line": 2461, "column": 36 }, "end": { - "line": 2438, + "line": 2461, "column": 37 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -319709,48 +324203,50 @@ "postfix": false, "binop": null }, - "start": 87901, - "end": 87902, + "start": 89242, + "end": 89243, "loc": { "start": { - "line": 2438, - "column": 37 + "line": 2462, + "column": 8 }, "end": { - "line": 2438, - "column": 38 + "line": 2462, + "column": 9 } } }, { "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": 87903, - "end": 87904, + "value": "let", + "start": 89252, + "end": 89255, "loc": { "start": { - "line": 2438, - "column": 39 + "line": 2463, + "column": 8 }, "end": { - "line": 2438, - "column": 40 + "line": 2463, + "column": 11 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -319758,46 +324254,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 87917, - "end": 87921, + "value": "wrapS", + "start": 89256, + "end": 89261, "loc": { "start": { - "line": 2439, + "line": 2463, "column": 12 }, "end": { - "line": 2439, - "column": 16 + "line": 2463, + "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": 87921, - "end": 87922, + "value": "=", + "start": 89262, + "end": 89263, "loc": { "start": { - "line": 2439, - "column": 16 + "line": 2463, + "column": 18 }, "end": { - "line": 2439, - "column": 17 + "line": 2463, + "column": 19 } } }, @@ -319813,50 +324309,25 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 87922, - "end": 87927, - "loc": { - "start": { - "line": 2439, - "column": 17 - }, - "end": { - "line": 2439, - "column": 22 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 87927, - "end": 87928, + "value": "cfg", + "start": 89264, + "end": 89267, "loc": { "start": { - "line": 2439, - "column": 22 + "line": 2463, + "column": 20 }, "end": { - "line": 2439, + "line": 2463, "column": 23 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -319865,44 +324336,16 @@ "binop": null, "updateContext": null }, - "value": "[createTexture] Texture already created: ", - "start": 87928, - "end": 87971, + "start": 89267, + "end": 89268, "loc": { "start": { - "line": 2439, + "line": 2463, "column": 23 }, "end": { - "line": 2439, - "column": 66 - } - } - }, - { - "type": { - "label": "+/-", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": 9, - "updateContext": null - }, - "value": "+", - "start": 87972, - "end": 87973, - "loc": { - "start": { - "line": 2439, - "column": 67 - }, - "end": { - "line": 2439, - "column": 68 + "line": 2463, + "column": 24 } } }, @@ -319918,48 +324361,23 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 87974, - "end": 87983, - "loc": { - "start": { - "line": 2439, - "column": 69 - }, - "end": { - "line": 2439, - "column": 78 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 87983, - "end": 87984, + "value": "wrapS", + "start": 89268, + "end": 89273, "loc": { "start": { - "line": 2439, - "column": 78 + "line": 2463, + "column": 24 }, "end": { - "line": 2439, - "column": 79 + "line": 2463, + "column": 29 } } }, { "type": { - "label": ";", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -319967,47 +324385,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 87984, - "end": 87985, + "value": "||", + "start": 89274, + "end": 89276, "loc": { "start": { - "line": 2439, - "column": 79 + "line": 2463, + "column": 30 }, "end": { - "line": 2439, - "column": 80 + "line": 2463, + "column": 32 } } }, { "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": 87998, - "end": 88004, + "value": "RepeatWrapping", + "start": 89277, + "end": 89291, "loc": { "start": { - "line": 2440, - "column": 12 + "line": 2463, + "column": 33 }, "end": { - "line": 2440, - "column": 18 + "line": 2463, + "column": 47 } } }, @@ -320024,41 +324441,16 @@ "binop": null, "updateContext": null }, - "start": 88004, - "end": 88005, - "loc": { - "start": { - "line": 2440, - "column": 18 - }, - "end": { - "line": 2440, - "column": 19 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 88014, - "end": 88015, + "start": 89291, + "end": 89292, "loc": { "start": { - "line": 2441, - "column": 8 + "line": 2463, + "column": 47 }, "end": { - "line": 2441, - "column": 9 + "line": 2463, + "column": 48 } } }, @@ -320066,79 +324458,52 @@ "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": 88024, - "end": 88026, - "loc": { - "start": { - "line": 2442, - "column": 8 - }, - "end": { - "line": 2442, - "column": 10 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 88027, - "end": 88028, + "value": "if", + "start": 89301, + "end": 89303, "loc": { "start": { - "line": 2442, - "column": 11 + "line": 2464, + "column": 8 }, "end": { - "line": 2442, - "column": 12 + "line": 2464, + "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": 88028, - "end": 88029, + "start": 89304, + "end": 89305, "loc": { "start": { - "line": 2442, - "column": 12 + "line": 2464, + "column": 11 }, "end": { - "line": 2442, - "column": 13 + "line": 2464, + "column": 12 } } }, @@ -320154,43 +324519,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 88029, - "end": 88032, + "value": "wrapS", + "start": 89305, + "end": 89310, "loc": { "start": { - "line": 2442, - "column": 13 + "line": 2464, + "column": 12 }, "end": { - "line": 2442, - "column": 16 + "line": 2464, + "column": 17 } } }, { "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": 88032, - "end": 88033, + "value": "!==", + "start": 89311, + "end": 89314, "loc": { "start": { - "line": 2442, - "column": 16 + "line": 2464, + "column": 18 }, "end": { - "line": 2442, - "column": 17 + "line": 2464, + "column": 21 } } }, @@ -320206,17 +324572,17 @@ "postfix": false, "binop": null }, - "value": "src", - "start": 88033, - "end": 88036, + "value": "ClampToEdgeWrapping", + "start": 89315, + "end": 89334, "loc": { "start": { - "line": 2442, - "column": 17 + "line": 2464, + "column": 22 }, "end": { - "line": 2442, - "column": 20 + "line": 2464, + "column": 41 } } }, @@ -320234,43 +324600,16 @@ "updateContext": null }, "value": "&&", - "start": 88037, - "end": 88039, - "loc": { - "start": { - "line": 2442, - "column": 21 - }, - "end": { - "line": 2442, - "column": 23 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "!", - "start": 88040, - "end": 88041, + "start": 89335, + "end": 89337, "loc": { "start": { - "line": 2442, - "column": 24 + "line": 2464, + "column": 42 }, "end": { - "line": 2442, - "column": 25 + "line": 2464, + "column": 44 } } }, @@ -320286,43 +324625,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 88041, - "end": 88044, + "value": "wrapS", + "start": 89338, + "end": 89343, "loc": { "start": { - "line": 2442, - "column": 25 + "line": 2464, + "column": 45 }, "end": { - "line": 2442, - "column": 28 + "line": 2464, + "column": 50 } } }, { "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": 88044, - "end": 88045, + "value": "!==", + "start": 89344, + "end": 89347, "loc": { "start": { - "line": 2442, - "column": 28 + "line": 2464, + "column": 51 }, "end": { - "line": 2442, - "column": 29 + "line": 2464, + "column": 54 } } }, @@ -320338,17 +324678,17 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 88045, - "end": 88050, + "value": "MirroredRepeatWrapping", + "start": 89348, + "end": 89370, "loc": { "start": { - "line": 2442, - "column": 29 + "line": 2464, + "column": 55 }, "end": { - "line": 2442, - "column": 34 + "line": 2464, + "column": 77 } } }, @@ -320366,43 +324706,16 @@ "updateContext": null }, "value": "&&", - "start": 88051, - "end": 88053, - "loc": { - "start": { - "line": 2442, - "column": 35 - }, - "end": { - "line": 2442, - "column": 37 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "!", - "start": 88054, - "end": 88055, + "start": 89371, + "end": 89373, "loc": { "start": { - "line": 2442, - "column": 38 + "line": 2464, + "column": 78 }, "end": { - "line": 2442, - "column": 39 + "line": 2464, + "column": 80 } } }, @@ -320418,43 +324731,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 88055, - "end": 88058, + "value": "wrapS", + "start": 89374, + "end": 89379, "loc": { "start": { - "line": 2442, - "column": 39 + "line": 2464, + "column": 81 }, "end": { - "line": 2442, - "column": 42 + "line": 2464, + "column": 86 } } }, { "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": 88058, - "end": 88059, + "value": "!==", + "start": 89380, + "end": 89383, "loc": { "start": { - "line": 2442, - "column": 42 + "line": 2464, + "column": 87 }, "end": { - "line": 2442, - "column": 43 + "line": 2464, + "column": 90 } } }, @@ -320470,17 +324784,17 @@ "postfix": false, "binop": null }, - "value": "buffers", - "start": 88059, - "end": 88066, + "value": "RepeatWrapping", + "start": 89384, + "end": 89398, "loc": { "start": { - "line": 2442, - "column": 43 + "line": 2464, + "column": 91 }, "end": { - "line": 2442, - "column": 50 + "line": 2464, + "column": 105 } } }, @@ -320496,16 +324810,16 @@ "postfix": false, "binop": null }, - "start": 88066, - "end": 88067, + "start": 89398, + "end": 89399, "loc": { "start": { - "line": 2442, - "column": 50 + "line": 2464, + "column": 105 }, "end": { - "line": 2442, - "column": 51 + "line": 2464, + "column": 106 } } }, @@ -320521,16 +324835,16 @@ "postfix": false, "binop": null }, - "start": 88068, - "end": 88069, + "start": 89400, + "end": 89401, "loc": { "start": { - "line": 2442, - "column": 52 + "line": 2464, + "column": 107 }, "end": { - "line": 2442, - "column": 53 + "line": 2464, + "column": 108 } } }, @@ -320549,15 +324863,15 @@ "updateContext": null }, "value": "this", - "start": 88082, - "end": 88086, + "start": 89414, + "end": 89418, "loc": { "start": { - "line": 2443, + "line": 2465, "column": 12 }, "end": { - "line": 2443, + "line": 2465, "column": 16 } } @@ -320575,15 +324889,15 @@ "binop": null, "updateContext": null }, - "start": 88086, - "end": 88087, + "start": 89418, + "end": 89419, "loc": { "start": { - "line": 2443, + "line": 2465, "column": 16 }, "end": { - "line": 2443, + "line": 2465, "column": 17 } } @@ -320601,15 +324915,15 @@ "binop": null }, "value": "error", - "start": 88087, - "end": 88092, + "start": 89419, + "end": 89424, "loc": { "start": { - "line": 2443, + "line": 2465, "column": 17 }, "end": { - "line": 2443, + "line": 2465, "column": 22 } } @@ -320626,22 +324940,22 @@ "postfix": false, "binop": null }, - "start": 88092, - "end": 88093, + "start": 89424, + "end": 89425, "loc": { "start": { - "line": 2443, + "line": 2465, "column": 22 }, "end": { - "line": 2443, + "line": 2465, "column": 23 } } }, { "type": { - "label": "string", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -320649,26 +324963,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "[createTexture] Param expected: `src`, `image' or 'buffers'", - "start": 88093, - "end": 88154, + "start": 89425, + "end": 89426, "loc": { "start": { - "line": 2443, + "line": 2465, "column": 23 }, "end": { - "line": 2443, - "column": 84 + "line": 2465, + "column": 24 } } }, { "type": { - "label": ")", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -320676,79 +324988,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 88154, - "end": 88155, - "loc": { - "start": { - "line": 2443, - "column": 84 - }, - "end": { - "line": 2443, - "column": 85 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 88155, - "end": 88156, - "loc": { - "start": { - "line": 2443, - "column": 85 - }, - "end": { - "line": 2443, - "column": 86 - } - } - }, - { - "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "value": "return", - "start": 88169, - "end": 88175, + "value": "[createTexture] Unsupported value for 'wrapS' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.", + "start": 89426, + "end": 89588, "loc": { "start": { - "line": 2444, - "column": 12 + "line": 2465, + "column": 24 }, "end": { - "line": 2444, - "column": 18 + "line": 2465, + "column": 186 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -320756,52 +325015,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "null", - "start": 88176, - "end": 88180, - "loc": { - "start": { - "line": 2444, - "column": 19 - }, - "end": { - "line": 2444, - "column": 23 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 88180, - "end": 88181, + "start": 89588, + "end": 89589, "loc": { "start": { - "line": 2444, - "column": 23 + "line": 2465, + "column": 186 }, "end": { - "line": 2444, - "column": 24 + "line": 2465, + "column": 187 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -320811,24 +325042,23 @@ "postfix": false, "binop": null }, - "start": 88190, - "end": 88191, + "start": 89589, + "end": 89590, "loc": { "start": { - "line": 2445, - "column": 8 + "line": 2465, + "column": 187 }, "end": { - "line": 2445, - "column": 9 + "line": 2465, + "column": 188 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -320838,17 +325068,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 88200, - "end": 88203, + "start": 89590, + "end": 89591, "loc": { "start": { - "line": 2446, - "column": 8 + "line": 2465, + "column": 188 }, "end": { - "line": 2446, - "column": 11 + "line": 2465, + "column": 189 } } }, @@ -320864,17 +325093,17 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 88204, - "end": 88213, + "value": "wrapS", + "start": 89604, + "end": 89609, "loc": { "start": { - "line": 2446, + "line": 2466, "column": 12 }, "end": { - "line": 2446, - "column": 21 + "line": 2466, + "column": 17 } } }, @@ -320892,16 +325121,16 @@ "updateContext": null }, "value": "=", - "start": 88214, - "end": 88215, + "start": 89610, + "end": 89611, "loc": { "start": { - "line": 2446, - "column": 22 + "line": 2466, + "column": 18 }, "end": { - "line": 2446, - "column": 23 + "line": 2466, + "column": 19 } } }, @@ -320917,24 +325146,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 88216, - "end": 88219, + "value": "RepeatWrapping", + "start": 89612, + "end": 89626, "loc": { "start": { - "line": 2446, - "column": 24 + "line": 2466, + "column": 20 }, "end": { - "line": 2446, - "column": 27 + "line": 2466, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -320944,24 +325173,24 @@ "binop": null, "updateContext": null }, - "start": 88219, - "end": 88220, + "start": 89626, + "end": 89627, "loc": { "start": { - "line": 2446, - "column": 27 + "line": 2466, + "column": 34 }, "end": { - "line": 2446, - "column": 28 + "line": 2466, + "column": 35 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -320969,44 +325198,44 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 88220, - "end": 88229, + "start": 89636, + "end": 89637, "loc": { "start": { - "line": 2446, - "column": 28 + "line": 2467, + "column": 8 }, "end": { - "line": 2446, - "column": 37 + "line": 2467, + "column": 9 } } }, { "type": { - "label": "||", - "beforeExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 88230, - "end": 88232, + "value": "let", + "start": 89646, + "end": 89649, "loc": { "start": { - "line": 2446, - "column": 38 + "line": 2468, + "column": 8 }, "end": { - "line": 2446, - "column": 40 + "line": 2468, + "column": 11 } } }, @@ -321022,96 +325251,44 @@ "postfix": false, "binop": null }, - "value": "LinearMipmapLinearFilter", - "start": 88233, - "end": 88257, + "value": "wrapT", + "start": 89650, + "end": 89655, "loc": { "start": { - "line": 2446, - "column": 41 + "line": 2468, + "column": 12 }, "end": { - "line": 2446, - "column": 65 + "line": 2468, + "column": 17 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 88257, - "end": 88258, - "loc": { - "start": { - "line": 2446, - "column": 65 - }, - "end": { - "line": 2446, - "column": 66 - } - } - }, - { - "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "if", - "start": 88267, - "end": 88269, - "loc": { - "start": { - "line": 2447, - "column": 8 - }, - "end": { - "line": 2447, - "column": 10 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 88270, - "end": 88271, + "value": "=", + "start": 89656, + "end": 89657, "loc": { "start": { - "line": 2447, - "column": 11 + "line": 2468, + "column": 18 }, "end": { - "line": 2447, - "column": 12 + "line": 2468, + "column": 19 } } }, @@ -321127,44 +325304,43 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 88271, - "end": 88280, + "value": "cfg", + "start": 89658, + "end": 89661, "loc": { "start": { - "line": 2447, - "column": 12 + "line": 2468, + "column": 20 }, "end": { - "line": 2447, - "column": 21 + "line": 2468, + "column": 23 } } }, { "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": 88281, - "end": 88284, + "start": 89661, + "end": 89662, "loc": { "start": { - "line": 2447, - "column": 22 + "line": 2468, + "column": 23 }, "end": { - "line": 2447, - "column": 25 + "line": 2468, + "column": 24 } } }, @@ -321180,23 +325356,23 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 88285, - "end": 88297, + "value": "wrapT", + "start": 89662, + "end": 89667, "loc": { "start": { - "line": 2447, - "column": 26 + "line": 2468, + "column": 24 }, "end": { - "line": 2447, - "column": 38 + "line": 2468, + "column": 29 } } }, { "type": { - "label": "&&", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -321204,20 +325380,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": 1, "updateContext": null }, - "value": "&&", - "start": 88298, - "end": 88300, + "value": "||", + "start": 89668, + "end": 89670, "loc": { "start": { - "line": 2447, - "column": 39 + "line": 2468, + "column": 30 }, "end": { - "line": 2447, - "column": 41 + "line": 2468, + "column": 32 } } }, @@ -321233,23 +325409,23 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 88313, - "end": 88322, + "value": "RepeatWrapping", + "start": 89671, + "end": 89685, "loc": { "start": { - "line": 2448, - "column": 12 + "line": 2468, + "column": 33 }, "end": { - "line": 2448, - "column": 21 + "line": 2468, + "column": 47 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -321257,73 +325433,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 88323, - "end": 88326, + "start": 89685, + "end": 89686, "loc": { "start": { - "line": 2448, - "column": 22 + "line": 2468, + "column": 47 }, "end": { - "line": 2448, - "column": 25 + "line": 2468, + "column": 48 } } }, { "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": "LinearMipMapNearestFilter", - "start": 88327, - "end": 88352, + "value": "if", + "start": 89695, + "end": 89697, "loc": { "start": { - "line": 2448, - "column": 26 + "line": 2469, + "column": 8 }, "end": { - "line": 2448, - "column": 51 + "line": 2469, + "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": 88353, - "end": 88355, + "start": 89698, + "end": 89699, "loc": { "start": { - "line": 2448, - "column": 52 + "line": 2469, + "column": 11 }, "end": { - "line": 2448, - "column": 54 + "line": 2469, + "column": 12 } } }, @@ -321339,17 +325514,17 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 88368, - "end": 88377, + "value": "wrapT", + "start": 89699, + "end": 89704, "loc": { "start": { - "line": 2449, + "line": 2469, "column": 12 }, "end": { - "line": 2449, - "column": 21 + "line": 2469, + "column": 17 } } }, @@ -321367,16 +325542,16 @@ "updateContext": null }, "value": "!==", - "start": 88378, - "end": 88381, + "start": 89705, + "end": 89708, "loc": { "start": { - "line": 2449, - "column": 22 + "line": 2469, + "column": 18 }, "end": { - "line": 2449, - "column": 25 + "line": 2469, + "column": 21 } } }, @@ -321392,17 +325567,17 @@ "postfix": false, "binop": null }, - "value": "LinearMipmapLinearFilter", - "start": 88382, - "end": 88406, + "value": "ClampToEdgeWrapping", + "start": 89709, + "end": 89728, "loc": { "start": { - "line": 2449, - "column": 26 + "line": 2469, + "column": 22 }, "end": { - "line": 2449, - "column": 50 + "line": 2469, + "column": 41 } } }, @@ -321420,16 +325595,16 @@ "updateContext": null }, "value": "&&", - "start": 88407, - "end": 88409, + "start": 89729, + "end": 89731, "loc": { "start": { - "line": 2449, - "column": 51 + "line": 2469, + "column": 42 }, "end": { - "line": 2449, - "column": 53 + "line": 2469, + "column": 44 } } }, @@ -321445,17 +325620,17 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 88422, - "end": 88431, + "value": "wrapT", + "start": 89732, + "end": 89737, "loc": { "start": { - "line": 2450, - "column": 12 + "line": 2469, + "column": 45 }, "end": { - "line": 2450, - "column": 21 + "line": 2469, + "column": 50 } } }, @@ -321473,16 +325648,16 @@ "updateContext": null }, "value": "!==", - "start": 88432, - "end": 88435, + "start": 89738, + "end": 89741, "loc": { "start": { - "line": 2450, - "column": 22 + "line": 2469, + "column": 51 }, "end": { - "line": 2450, - "column": 25 + "line": 2469, + "column": 54 } } }, @@ -321498,17 +325673,17 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapLinearFilter", - "start": 88436, - "end": 88461, + "value": "MirroredRepeatWrapping", + "start": 89742, + "end": 89764, "loc": { "start": { - "line": 2450, - "column": 26 + "line": 2469, + "column": 55 }, "end": { - "line": 2450, - "column": 51 + "line": 2469, + "column": 77 } } }, @@ -321526,16 +325701,16 @@ "updateContext": null }, "value": "&&", - "start": 88462, - "end": 88464, + "start": 89765, + "end": 89767, "loc": { "start": { - "line": 2450, - "column": 52 + "line": 2469, + "column": 78 }, "end": { - "line": 2450, - "column": 54 + "line": 2469, + "column": 80 } } }, @@ -321551,17 +325726,17 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 88477, - "end": 88486, + "value": "wrapT", + "start": 89768, + "end": 89773, "loc": { "start": { - "line": 2451, - "column": 12 + "line": 2469, + "column": 81 }, "end": { - "line": 2451, - "column": 21 + "line": 2469, + "column": 86 } } }, @@ -321579,16 +325754,16 @@ "updateContext": null }, "value": "!==", - "start": 88487, - "end": 88490, + "start": 89774, + "end": 89777, "loc": { "start": { - "line": 2451, - "column": 22 + "line": 2469, + "column": 87 }, "end": { - "line": 2451, - "column": 25 + "line": 2469, + "column": 90 } } }, @@ -321604,17 +325779,17 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapNearestFilter", - "start": 88491, - "end": 88517, + "value": "RepeatWrapping", + "start": 89778, + "end": 89792, "loc": { "start": { - "line": 2451, - "column": 26 + "line": 2469, + "column": 91 }, "end": { - "line": 2451, - "column": 52 + "line": 2469, + "column": 105 } } }, @@ -321630,16 +325805,16 @@ "postfix": false, "binop": null }, - "start": 88517, - "end": 88518, + "start": 89792, + "end": 89793, "loc": { "start": { - "line": 2451, - "column": 52 + "line": 2469, + "column": 105 }, "end": { - "line": 2451, - "column": 53 + "line": 2469, + "column": 106 } } }, @@ -321655,16 +325830,16 @@ "postfix": false, "binop": null }, - "start": 88519, - "end": 88520, + "start": 89794, + "end": 89795, "loc": { "start": { - "line": 2451, - "column": 54 + "line": 2469, + "column": 107 }, "end": { - "line": 2451, - "column": 55 + "line": 2469, + "column": 108 } } }, @@ -321683,15 +325858,15 @@ "updateContext": null }, "value": "this", - "start": 88533, - "end": 88537, + "start": 89808, + "end": 89812, "loc": { "start": { - "line": 2452, + "line": 2470, "column": 12 }, "end": { - "line": 2452, + "line": 2470, "column": 16 } } @@ -321709,15 +325884,15 @@ "binop": null, "updateContext": null }, - "start": 88537, - "end": 88538, + "start": 89812, + "end": 89813, "loc": { "start": { - "line": 2452, + "line": 2470, "column": 16 }, "end": { - "line": 2452, + "line": 2470, "column": 17 } } @@ -321735,15 +325910,15 @@ "binop": null }, "value": "error", - "start": 88538, - "end": 88543, + "start": 89813, + "end": 89818, "loc": { "start": { - "line": 2452, + "line": 2470, "column": 17 }, "end": { - "line": 2452, + "line": 2470, "column": 22 } } @@ -321760,15 +325935,15 @@ "postfix": false, "binop": null }, - "start": 88543, - "end": 88544, + "start": 89818, + "end": 89819, "loc": { "start": { - "line": 2452, + "line": 2470, "column": 22 }, "end": { - "line": 2452, + "line": 2470, "column": 23 } } @@ -321785,15 +325960,15 @@ "postfix": false, "binop": null }, - "start": 88544, - "end": 88545, + "start": 89819, + "end": 89820, "loc": { "start": { - "line": 2452, + "line": 2470, "column": 23 }, "end": { - "line": 2452, + "line": 2470, "column": 24 } } @@ -321811,17 +325986,17 @@ "binop": null, "updateContext": null }, - "value": "[createTexture] Unsupported value for 'minFilter' - \n supported values are LinearFilter, LinearMipMapNearestFilter, NearestMipMapNearestFilter, \n NearestMipMapLinearFilter and LinearMipmapLinearFilter. Defaulting to LinearMipmapLinearFilter.", - "start": 88545, - "end": 88808, + "value": "[createTexture] Unsupported value for 'wrapT' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.", + "start": 89820, + "end": 89982, "loc": { "start": { - "line": 2452, + "line": 2470, "column": 24 }, "end": { - "line": 2454, - "column": 107 + "line": 2470, + "column": 186 } } }, @@ -321837,16 +326012,16 @@ "postfix": false, "binop": null }, - "start": 88808, - "end": 88809, + "start": 89982, + "end": 89983, "loc": { "start": { - "line": 2454, - "column": 107 + "line": 2470, + "column": 186 }, "end": { - "line": 2454, - "column": 108 + "line": 2470, + "column": 187 } } }, @@ -321862,16 +326037,16 @@ "postfix": false, "binop": null }, - "start": 88809, - "end": 88810, + "start": 89983, + "end": 89984, "loc": { "start": { - "line": 2454, - "column": 108 + "line": 2470, + "column": 187 }, "end": { - "line": 2454, - "column": 109 + "line": 2470, + "column": 188 } } }, @@ -321888,16 +326063,16 @@ "binop": null, "updateContext": null }, - "start": 88810, - "end": 88811, + "start": 89984, + "end": 89985, "loc": { "start": { - "line": 2454, - "column": 109 + "line": 2470, + "column": 188 }, "end": { - "line": 2454, - "column": 110 + "line": 2470, + "column": 189 } } }, @@ -321913,17 +326088,17 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 88824, - "end": 88833, + "value": "wrapT", + "start": 89998, + "end": 90003, "loc": { "start": { - "line": 2455, + "line": 2471, "column": 12 }, "end": { - "line": 2455, - "column": 21 + "line": 2471, + "column": 17 } } }, @@ -321941,16 +326116,16 @@ "updateContext": null }, "value": "=", - "start": 88834, - "end": 88835, + "start": 90004, + "end": 90005, "loc": { "start": { - "line": 2455, - "column": 22 + "line": 2471, + "column": 18 }, "end": { - "line": 2455, - "column": 23 + "line": 2471, + "column": 19 } } }, @@ -321966,17 +326141,17 @@ "postfix": false, "binop": null }, - "value": "LinearMipmapLinearFilter", - "start": 88836, - "end": 88860, + "value": "RepeatWrapping", + "start": 90006, + "end": 90020, "loc": { "start": { - "line": 2455, - "column": 24 + "line": 2471, + "column": 20 }, "end": { - "line": 2455, - "column": 48 + "line": 2471, + "column": 34 } } }, @@ -321993,16 +326168,16 @@ "binop": null, "updateContext": null }, - "start": 88860, - "end": 88861, + "start": 90020, + "end": 90021, "loc": { "start": { - "line": 2455, - "column": 48 + "line": 2471, + "column": 34 }, "end": { - "line": 2455, - "column": 49 + "line": 2471, + "column": 35 } } }, @@ -322018,15 +326193,15 @@ "postfix": false, "binop": null }, - "start": 88870, - "end": 88871, + "start": 90030, + "end": 90031, "loc": { "start": { - "line": 2456, + "line": 2472, "column": 8 }, "end": { - "line": 2456, + "line": 2472, "column": 9 } } @@ -322046,15 +326221,15 @@ "updateContext": null }, "value": "let", - "start": 88880, - "end": 88883, + "start": 90040, + "end": 90043, "loc": { "start": { - "line": 2457, + "line": 2473, "column": 8 }, "end": { - "line": 2457, + "line": 2473, "column": 11 } } @@ -322071,17 +326246,17 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 88884, - "end": 88893, + "value": "wrapR", + "start": 90044, + "end": 90049, "loc": { "start": { - "line": 2457, + "line": 2473, "column": 12 }, "end": { - "line": 2457, - "column": 21 + "line": 2473, + "column": 17 } } }, @@ -322099,16 +326274,16 @@ "updateContext": null }, "value": "=", - "start": 88894, - "end": 88895, + "start": 90050, + "end": 90051, "loc": { "start": { - "line": 2457, - "column": 22 + "line": 2473, + "column": 18 }, "end": { - "line": 2457, - "column": 23 + "line": 2473, + "column": 19 } } }, @@ -322125,16 +326300,16 @@ "binop": null }, "value": "cfg", - "start": 88896, - "end": 88899, + "start": 90052, + "end": 90055, "loc": { "start": { - "line": 2457, - "column": 24 + "line": 2473, + "column": 20 }, "end": { - "line": 2457, - "column": 27 + "line": 2473, + "column": 23 } } }, @@ -322151,16 +326326,16 @@ "binop": null, "updateContext": null }, - "start": 88899, - "end": 88900, + "start": 90055, + "end": 90056, "loc": { "start": { - "line": 2457, - "column": 27 + "line": 2473, + "column": 23 }, "end": { - "line": 2457, - "column": 28 + "line": 2473, + "column": 24 } } }, @@ -322176,17 +326351,17 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 88900, - "end": 88909, + "value": "wrapR", + "start": 90056, + "end": 90061, "loc": { "start": { - "line": 2457, - "column": 28 + "line": 2473, + "column": 24 }, "end": { - "line": 2457, - "column": 37 + "line": 2473, + "column": 29 } } }, @@ -322204,16 +326379,16 @@ "updateContext": null }, "value": "||", - "start": 88910, - "end": 88912, + "start": 90062, + "end": 90064, "loc": { "start": { - "line": 2457, - "column": 38 + "line": 2473, + "column": 30 }, "end": { - "line": 2457, - "column": 40 + "line": 2473, + "column": 32 } } }, @@ -322229,17 +326404,17 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 88913, - "end": 88925, + "value": "RepeatWrapping", + "start": 90065, + "end": 90079, "loc": { "start": { - "line": 2457, - "column": 41 + "line": 2473, + "column": 33 }, "end": { - "line": 2457, - "column": 53 + "line": 2473, + "column": 47 } } }, @@ -322256,69 +326431,175 @@ "binop": null, "updateContext": null }, - "start": 88925, - "end": 88926, + "start": 90079, + "end": 90080, "loc": { "start": { - "line": 2457, - "column": 53 + "line": 2473, + "column": 47 + }, + "end": { + "line": 2473, + "column": 48 + } + } + }, + { + "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": 90089, + "end": 90091, + "loc": { + "start": { + "line": 2474, + "column": 8 + }, + "end": { + "line": 2474, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 90092, + "end": 90093, + "loc": { + "start": { + "line": 2474, + "column": 11 + }, + "end": { + "line": 2474, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "wrapR", + "start": 90093, + "end": 90098, + "loc": { + "start": { + "line": 2474, + "column": 12 + }, + "end": { + "line": 2474, + "column": 17 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 90099, + "end": 90102, + "loc": { + "start": { + "line": 2474, + "column": 18 }, "end": { - "line": 2457, - "column": 54 + "line": 2474, + "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": 88935, - "end": 88937, + "value": "ClampToEdgeWrapping", + "start": 90103, + "end": 90122, "loc": { "start": { - "line": 2458, - "column": 8 + "line": 2474, + "column": 22 }, "end": { - "line": 2458, - "column": 10 + "line": 2474, + "column": 41 } } }, { "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": 88938, - "end": 88939, + "value": "&&", + "start": 90123, + "end": 90125, "loc": { "start": { - "line": 2458, - "column": 11 + "line": 2474, + "column": 42 }, "end": { - "line": 2458, - "column": 12 + "line": 2474, + "column": 44 } } }, @@ -322334,17 +326615,17 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 88939, - "end": 88948, + "value": "wrapR", + "start": 90126, + "end": 90131, "loc": { "start": { - "line": 2458, - "column": 12 + "line": 2474, + "column": 45 }, "end": { - "line": 2458, - "column": 21 + "line": 2474, + "column": 50 } } }, @@ -322362,16 +326643,16 @@ "updateContext": null }, "value": "!==", - "start": 88949, - "end": 88952, + "start": 90132, + "end": 90135, "loc": { "start": { - "line": 2458, - "column": 22 + "line": 2474, + "column": 51 }, "end": { - "line": 2458, - "column": 25 + "line": 2474, + "column": 54 } } }, @@ -322387,17 +326668,17 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 88953, - "end": 88965, + "value": "MirroredRepeatWrapping", + "start": 90136, + "end": 90158, "loc": { "start": { - "line": 2458, - "column": 26 + "line": 2474, + "column": 55 }, "end": { - "line": 2458, - "column": 38 + "line": 2474, + "column": 77 } } }, @@ -322415,16 +326696,16 @@ "updateContext": null }, "value": "&&", - "start": 88966, - "end": 88968, + "start": 90159, + "end": 90161, "loc": { "start": { - "line": 2458, - "column": 39 + "line": 2474, + "column": 78 }, "end": { - "line": 2458, - "column": 41 + "line": 2474, + "column": 80 } } }, @@ -322440,17 +326721,17 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 88969, - "end": 88978, + "value": "wrapR", + "start": 90162, + "end": 90167, "loc": { "start": { - "line": 2458, - "column": 42 + "line": 2474, + "column": 81 }, "end": { - "line": 2458, - "column": 51 + "line": 2474, + "column": 86 } } }, @@ -322468,16 +326749,16 @@ "updateContext": null }, "value": "!==", - "start": 88979, - "end": 88982, + "start": 90168, + "end": 90171, "loc": { "start": { - "line": 2458, - "column": 52 + "line": 2474, + "column": 87 }, "end": { - "line": 2458, - "column": 55 + "line": 2474, + "column": 90 } } }, @@ -322493,17 +326774,17 @@ "postfix": false, "binop": null }, - "value": "NearestFilter", - "start": 88983, - "end": 88996, + "value": "RepeatWrapping", + "start": 90172, + "end": 90186, "loc": { "start": { - "line": 2458, - "column": 56 + "line": 2474, + "column": 91 }, "end": { - "line": 2458, - "column": 69 + "line": 2474, + "column": 105 } } }, @@ -322519,16 +326800,16 @@ "postfix": false, "binop": null }, - "start": 88996, - "end": 88997, + "start": 90186, + "end": 90187, "loc": { "start": { - "line": 2458, - "column": 69 + "line": 2474, + "column": 105 }, "end": { - "line": 2458, - "column": 70 + "line": 2474, + "column": 106 } } }, @@ -322544,16 +326825,16 @@ "postfix": false, "binop": null }, - "start": 88998, - "end": 88999, + "start": 90188, + "end": 90189, "loc": { "start": { - "line": 2458, - "column": 71 + "line": 2474, + "column": 107 }, "end": { - "line": 2458, - "column": 72 + "line": 2474, + "column": 108 } } }, @@ -322572,15 +326853,15 @@ "updateContext": null }, "value": "this", - "start": 89012, - "end": 89016, + "start": 90202, + "end": 90206, "loc": { "start": { - "line": 2459, + "line": 2475, "column": 12 }, "end": { - "line": 2459, + "line": 2475, "column": 16 } } @@ -322598,15 +326879,15 @@ "binop": null, "updateContext": null }, - "start": 89016, - "end": 89017, + "start": 90206, + "end": 90207, "loc": { "start": { - "line": 2459, + "line": 2475, "column": 16 }, "end": { - "line": 2459, + "line": 2475, "column": 17 } } @@ -322624,15 +326905,15 @@ "binop": null }, "value": "error", - "start": 89017, - "end": 89022, + "start": 90207, + "end": 90212, "loc": { "start": { - "line": 2459, + "line": 2475, "column": 17 }, "end": { - "line": 2459, + "line": 2475, "column": 22 } } @@ -322649,15 +326930,15 @@ "postfix": false, "binop": null }, - "start": 89022, - "end": 89023, + "start": 90212, + "end": 90213, "loc": { "start": { - "line": 2459, + "line": 2475, "column": 22 }, "end": { - "line": 2459, + "line": 2475, "column": 23 } } @@ -322674,15 +326955,15 @@ "postfix": false, "binop": null }, - "start": 89023, - "end": 89024, + "start": 90213, + "end": 90214, "loc": { "start": { - "line": 2459, + "line": 2475, "column": 23 }, "end": { - "line": 2459, + "line": 2475, "column": 24 } } @@ -322700,17 +326981,17 @@ "binop": null, "updateContext": null }, - "value": "[createTexture] Unsupported value for 'magFilter' - supported values are LinearFilter and NearestFilter. Defaulting to LinearFilter.", - "start": 89024, - "end": 89156, + "value": "[createTexture] Unsupported value for 'wrapR' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.", + "start": 90214, + "end": 90376, "loc": { "start": { - "line": 2459, + "line": 2475, "column": 24 }, "end": { - "line": 2459, - "column": 156 + "line": 2475, + "column": 186 } } }, @@ -322726,16 +327007,16 @@ "postfix": false, "binop": null }, - "start": 89156, - "end": 89157, + "start": 90376, + "end": 90377, "loc": { "start": { - "line": 2459, - "column": 156 + "line": 2475, + "column": 186 }, "end": { - "line": 2459, - "column": 157 + "line": 2475, + "column": 187 } } }, @@ -322751,16 +327032,16 @@ "postfix": false, "binop": null }, - "start": 89157, - "end": 89158, + "start": 90377, + "end": 90378, "loc": { "start": { - "line": 2459, - "column": 157 + "line": 2475, + "column": 187 }, "end": { - "line": 2459, - "column": 158 + "line": 2475, + "column": 188 } } }, @@ -322777,16 +327058,16 @@ "binop": null, "updateContext": null }, - "start": 89158, - "end": 89159, + "start": 90378, + "end": 90379, "loc": { "start": { - "line": 2459, - "column": 158 + "line": 2475, + "column": 188 }, "end": { - "line": 2459, - "column": 159 + "line": 2475, + "column": 189 } } }, @@ -322802,17 +327083,17 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 89172, - "end": 89181, + "value": "wrapR", + "start": 90392, + "end": 90397, "loc": { "start": { - "line": 2460, + "line": 2476, "column": 12 }, "end": { - "line": 2460, - "column": 21 + "line": 2476, + "column": 17 } } }, @@ -322830,16 +327111,16 @@ "updateContext": null }, "value": "=", - "start": 89182, - "end": 89183, + "start": 90398, + "end": 90399, "loc": { "start": { - "line": 2460, - "column": 22 + "line": 2476, + "column": 18 }, "end": { - "line": 2460, - "column": 23 + "line": 2476, + "column": 19 } } }, @@ -322855,17 +327136,17 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 89184, - "end": 89196, + "value": "RepeatWrapping", + "start": 90400, + "end": 90414, "loc": { "start": { - "line": 2460, - "column": 24 + "line": 2476, + "column": 20 }, "end": { - "line": 2460, - "column": 36 + "line": 2476, + "column": 34 } } }, @@ -322882,16 +327163,16 @@ "binop": null, "updateContext": null }, - "start": 89196, - "end": 89197, + "start": 90414, + "end": 90415, "loc": { "start": { - "line": 2460, - "column": 36 + "line": 2476, + "column": 34 }, "end": { - "line": 2460, - "column": 37 + "line": 2476, + "column": 35 } } }, @@ -322907,15 +327188,15 @@ "postfix": false, "binop": null }, - "start": 89206, - "end": 89207, + "start": 90424, + "end": 90425, "loc": { "start": { - "line": 2461, + "line": 2477, "column": 8 }, "end": { - "line": 2461, + "line": 2477, "column": 9 } } @@ -322935,15 +327216,15 @@ "updateContext": null }, "value": "let", - "start": 89216, - "end": 89219, + "start": 90434, + "end": 90437, "loc": { "start": { - "line": 2462, + "line": 2478, "column": 8 }, "end": { - "line": 2462, + "line": 2478, "column": 11 } } @@ -322960,17 +327241,17 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 89220, - "end": 89225, + "value": "encoding", + "start": 90438, + "end": 90446, "loc": { "start": { - "line": 2462, + "line": 2478, "column": 12 }, "end": { - "line": 2462, - "column": 17 + "line": 2478, + "column": 20 } } }, @@ -322988,16 +327269,16 @@ "updateContext": null }, "value": "=", - "start": 89226, - "end": 89227, + "start": 90447, + "end": 90448, "loc": { "start": { - "line": 2462, - "column": 18 + "line": 2478, + "column": 21 }, "end": { - "line": 2462, - "column": 19 + "line": 2478, + "column": 22 } } }, @@ -323014,16 +327295,16 @@ "binop": null }, "value": "cfg", - "start": 89228, - "end": 89231, + "start": 90449, + "end": 90452, "loc": { "start": { - "line": 2462, - "column": 20 + "line": 2478, + "column": 23 }, "end": { - "line": 2462, - "column": 23 + "line": 2478, + "column": 26 } } }, @@ -323040,16 +327321,16 @@ "binop": null, "updateContext": null }, - "start": 89231, - "end": 89232, + "start": 90452, + "end": 90453, "loc": { "start": { - "line": 2462, - "column": 23 + "line": 2478, + "column": 26 }, "end": { - "line": 2462, - "column": 24 + "line": 2478, + "column": 27 } } }, @@ -323065,17 +327346,17 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 89232, - "end": 89237, + "value": "encoding", + "start": 90453, + "end": 90461, "loc": { "start": { - "line": 2462, - "column": 24 + "line": 2478, + "column": 27 }, "end": { - "line": 2462, - "column": 29 + "line": 2478, + "column": 35 } } }, @@ -323093,16 +327374,16 @@ "updateContext": null }, "value": "||", - "start": 89238, - "end": 89240, + "start": 90462, + "end": 90464, "loc": { "start": { - "line": 2462, - "column": 30 + "line": 2478, + "column": 36 }, "end": { - "line": 2462, - "column": 32 + "line": 2478, + "column": 38 } } }, @@ -323118,17 +327399,17 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 89241, - "end": 89255, + "value": "LinearEncoding", + "start": 90465, + "end": 90479, "loc": { "start": { - "line": 2462, - "column": 33 + "line": 2478, + "column": 39 }, "end": { - "line": 2462, - "column": 47 + "line": 2478, + "column": 53 } } }, @@ -323145,16 +327426,16 @@ "binop": null, "updateContext": null }, - "start": 89255, - "end": 89256, + "start": 90479, + "end": 90480, "loc": { "start": { - "line": 2462, - "column": 47 + "line": 2478, + "column": 53 }, "end": { - "line": 2462, - "column": 48 + "line": 2478, + "column": 54 } } }, @@ -323173,15 +327454,15 @@ "updateContext": null }, "value": "if", - "start": 89265, - "end": 89267, + "start": 90489, + "end": 90491, "loc": { "start": { - "line": 2463, + "line": 2479, "column": 8 }, "end": { - "line": 2463, + "line": 2479, "column": 10 } } @@ -323198,15 +327479,15 @@ "postfix": false, "binop": null }, - "start": 89268, - "end": 89269, + "start": 90492, + "end": 90493, "loc": { "start": { - "line": 2463, + "line": 2479, "column": 11 }, "end": { - "line": 2463, + "line": 2479, "column": 12 } } @@ -323223,17 +327504,17 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 89269, - "end": 89274, + "value": "encoding", + "start": 90493, + "end": 90501, "loc": { "start": { - "line": 2463, + "line": 2479, "column": 12 }, "end": { - "line": 2463, - "column": 17 + "line": 2479, + "column": 20 } } }, @@ -323251,122 +327532,16 @@ "updateContext": null }, "value": "!==", - "start": 89275, - "end": 89278, + "start": 90502, + "end": 90505, "loc": { "start": { - "line": 2463, - "column": 18 - }, - "end": { - "line": 2463, + "line": 2479, "column": 21 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "ClampToEdgeWrapping", - "start": 89279, - "end": 89298, - "loc": { - "start": { - "line": 2463, - "column": 22 - }, - "end": { - "line": 2463, - "column": 41 - } - } - }, - { - "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 2, - "updateContext": null - }, - "value": "&&", - "start": 89299, - "end": 89301, - "loc": { - "start": { - "line": 2463, - "column": 42 - }, - "end": { - "line": 2463, - "column": 44 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "wrapS", - "start": 89302, - "end": 89307, - "loc": { - "start": { - "line": 2463, - "column": 45 - }, - "end": { - "line": 2463, - "column": 50 - } - } - }, - { - "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 89308, - "end": 89311, - "loc": { - "start": { - "line": 2463, - "column": 51 }, "end": { - "line": 2463, - "column": 54 + "line": 2479, + "column": 24 } } }, @@ -323382,17 +327557,17 @@ "postfix": false, "binop": null }, - "value": "MirroredRepeatWrapping", - "start": 89312, - "end": 89334, + "value": "LinearEncoding", + "start": 90506, + "end": 90520, "loc": { "start": { - "line": 2463, - "column": 55 + "line": 2479, + "column": 25 }, "end": { - "line": 2463, - "column": 77 + "line": 2479, + "column": 39 } } }, @@ -323410,16 +327585,16 @@ "updateContext": null }, "value": "&&", - "start": 89335, - "end": 89337, + "start": 90521, + "end": 90523, "loc": { "start": { - "line": 2463, - "column": 78 + "line": 2479, + "column": 40 }, "end": { - "line": 2463, - "column": 80 + "line": 2479, + "column": 42 } } }, @@ -323435,17 +327610,17 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 89338, - "end": 89343, + "value": "encoding", + "start": 90524, + "end": 90532, "loc": { "start": { - "line": 2463, - "column": 81 + "line": 2479, + "column": 43 }, "end": { - "line": 2463, - "column": 86 + "line": 2479, + "column": 51 } } }, @@ -323463,16 +327638,16 @@ "updateContext": null }, "value": "!==", - "start": 89344, - "end": 89347, + "start": 90533, + "end": 90536, "loc": { "start": { - "line": 2463, - "column": 87 + "line": 2479, + "column": 52 }, "end": { - "line": 2463, - "column": 90 + "line": 2479, + "column": 55 } } }, @@ -323488,17 +327663,17 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 89348, - "end": 89362, + "value": "sRGBEncoding", + "start": 90537, + "end": 90549, "loc": { "start": { - "line": 2463, - "column": 91 + "line": 2479, + "column": 56 }, "end": { - "line": 2463, - "column": 105 + "line": 2479, + "column": 68 } } }, @@ -323514,16 +327689,16 @@ "postfix": false, "binop": null }, - "start": 89362, - "end": 89363, + "start": 90549, + "end": 90550, "loc": { "start": { - "line": 2463, - "column": 105 + "line": 2479, + "column": 68 }, "end": { - "line": 2463, - "column": 106 + "line": 2479, + "column": 69 } } }, @@ -323539,16 +327714,16 @@ "postfix": false, "binop": null }, - "start": 89364, - "end": 89365, + "start": 90551, + "end": 90552, "loc": { "start": { - "line": 2463, - "column": 107 + "line": 2479, + "column": 70 }, "end": { - "line": 2463, - "column": 108 + "line": 2479, + "column": 71 } } }, @@ -323567,15 +327742,15 @@ "updateContext": null }, "value": "this", - "start": 89378, - "end": 89382, + "start": 90565, + "end": 90569, "loc": { "start": { - "line": 2464, + "line": 2480, "column": 12 }, "end": { - "line": 2464, + "line": 2480, "column": 16 } } @@ -323593,15 +327768,15 @@ "binop": null, "updateContext": null }, - "start": 89382, - "end": 89383, + "start": 90569, + "end": 90570, "loc": { "start": { - "line": 2464, + "line": 2480, "column": 16 }, "end": { - "line": 2464, + "line": 2480, "column": 17 } } @@ -323619,15 +327794,15 @@ "binop": null }, "value": "error", - "start": 89383, - "end": 89388, + "start": 90570, + "end": 90575, "loc": { "start": { - "line": 2464, + "line": 2480, "column": 17 }, "end": { - "line": 2464, + "line": 2480, "column": 22 } } @@ -323644,22 +327819,22 @@ "postfix": false, "binop": null }, - "start": 89388, - "end": 89389, + "start": 90575, + "end": 90576, "loc": { "start": { - "line": 2464, + "line": 2480, "column": 22 }, "end": { - "line": 2464, + "line": 2480, "column": 23 } } }, { "type": { - "label": "`", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -323667,70 +327842,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 89389, - "end": 89390, - "loc": { - "start": { - "line": 2464, - "column": 23 - }, - "end": { - "line": 2464, - "column": 24 - } - } - }, - { - "type": { - "label": "template", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "value": "[createTexture] Unsupported value for 'wrapS' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.", - "start": 89390, - "end": 89552, - "loc": { - "start": { - "line": 2464, - "column": 24 - }, - "end": { - "line": 2464, - "column": 186 - } - } - }, - { - "type": { - "label": "`", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 89552, - "end": 89553, + "value": "[createTexture] Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding.", + "start": 90576, + "end": 90712, "loc": { "start": { - "line": 2464, - "column": 186 + "line": 2480, + "column": 23 }, "end": { - "line": 2464, - "column": 187 + "line": 2480, + "column": 159 } } }, @@ -323746,16 +327871,16 @@ "postfix": false, "binop": null }, - "start": 89553, - "end": 89554, + "start": 90712, + "end": 90713, "loc": { "start": { - "line": 2464, - "column": 187 + "line": 2480, + "column": 159 }, "end": { - "line": 2464, - "column": 188 + "line": 2480, + "column": 160 } } }, @@ -323772,16 +327897,16 @@ "binop": null, "updateContext": null }, - "start": 89554, - "end": 89555, + "start": 90713, + "end": 90714, "loc": { "start": { - "line": 2464, - "column": 188 + "line": 2480, + "column": 160 }, "end": { - "line": 2464, - "column": 189 + "line": 2480, + "column": 161 } } }, @@ -323797,17 +327922,17 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 89568, - "end": 89573, + "value": "encoding", + "start": 90727, + "end": 90735, "loc": { "start": { - "line": 2465, + "line": 2481, "column": 12 }, "end": { - "line": 2465, - "column": 17 + "line": 2481, + "column": 20 } } }, @@ -323825,16 +327950,16 @@ "updateContext": null }, "value": "=", - "start": 89574, - "end": 89575, + "start": 90736, + "end": 90737, "loc": { "start": { - "line": 2465, - "column": 18 + "line": 2481, + "column": 21 }, "end": { - "line": 2465, - "column": 19 + "line": 2481, + "column": 22 } } }, @@ -323850,17 +327975,17 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 89576, - "end": 89590, + "value": "LinearEncoding", + "start": 90738, + "end": 90752, "loc": { "start": { - "line": 2465, - "column": 20 + "line": 2481, + "column": 23 }, "end": { - "line": 2465, - "column": 34 + "line": 2481, + "column": 37 } } }, @@ -323877,16 +328002,16 @@ "binop": null, "updateContext": null }, - "start": 89590, - "end": 89591, + "start": 90752, + "end": 90753, "loc": { "start": { - "line": 2465, - "column": 34 + "line": 2481, + "column": 37 }, "end": { - "line": 2465, - "column": 35 + "line": 2481, + "column": 38 } } }, @@ -323902,23 +328027,23 @@ "postfix": false, "binop": null }, - "start": 89600, - "end": 89601, + "start": 90762, + "end": 90763, "loc": { "start": { - "line": 2466, + "line": 2482, "column": 8 }, "end": { - "line": 2466, + "line": 2482, "column": 9 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -323929,17 +328054,17 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 89610, - "end": 89613, + "value": "const", + "start": 90772, + "end": 90777, "loc": { "start": { - "line": 2467, + "line": 2483, "column": 8 }, "end": { - "line": 2467, - "column": 11 + "line": 2483, + "column": 13 } } }, @@ -323955,17 +328080,17 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 89614, - "end": 89619, + "value": "texture", + "start": 90778, + "end": 90785, "loc": { "start": { - "line": 2467, - "column": 12 + "line": 2483, + "column": 14 }, "end": { - "line": 2467, - "column": 17 + "line": 2483, + "column": 21 } } }, @@ -323983,50 +328108,25 @@ "updateContext": null }, "value": "=", - "start": 89620, - "end": 89621, - "loc": { - "start": { - "line": 2467, - "column": 18 - }, - "end": { - "line": 2467, - "column": 19 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "cfg", - "start": 89622, - "end": 89625, + "start": 90786, + "end": 90787, "loc": { "start": { - "line": 2467, - "column": 20 + "line": 2483, + "column": 22 }, "end": { - "line": 2467, + "line": 2483, "column": 23 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "new", + "keyword": "new", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -324035,16 +328135,17 @@ "binop": null, "updateContext": null }, - "start": 89625, - "end": 89626, + "value": "new", + "start": 90788, + "end": 90791, "loc": { "start": { - "line": 2467, - "column": 23 + "line": 2483, + "column": 24 }, "end": { - "line": 2467, - "column": 24 + "line": 2483, + "column": 27 } } }, @@ -324060,51 +328161,24 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 89626, - "end": 89631, + "value": "Texture2D", + "start": 90792, + "end": 90801, "loc": { "start": { - "line": 2467, - "column": 24 + "line": 2483, + "column": 28 }, "end": { - "line": 2467, - "column": 29 + "line": 2483, + "column": 37 } } }, { "type": { - "label": "||", + "label": "(", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 1, - "updateContext": null - }, - "value": "||", - "start": 89632, - "end": 89634, - "loc": { - "start": { - "line": 2467, - "column": 30 - }, - "end": { - "line": 2467, - "column": 32 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -324113,77 +328187,22 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 89635, - "end": 89649, - "loc": { - "start": { - "line": 2467, - "column": 33 - }, - "end": { - "line": 2467, - "column": 47 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 89649, - "end": 89650, - "loc": { - "start": { - "line": 2467, - "column": 47 - }, - "end": { - "line": 2467, - "column": 48 - } - } - }, - { - "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": 89659, - "end": 89661, + "start": 90801, + "end": 90802, "loc": { "start": { - "line": 2468, - "column": 8 + "line": 2483, + "column": 37 }, "end": { - "line": 2468, - "column": 10 + "line": 2483, + "column": 38 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -324193,16 +328212,16 @@ "postfix": false, "binop": null }, - "start": 89662, - "end": 89663, + "start": 90802, + "end": 90803, "loc": { "start": { - "line": 2468, - "column": 11 + "line": 2483, + "column": 38 }, "end": { - "line": 2468, - "column": 12 + "line": 2483, + "column": 39 } } }, @@ -324218,23 +328237,23 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 89663, - "end": 89668, + "value": "gl", + "start": 90816, + "end": 90818, "loc": { "start": { - "line": 2468, + "line": 2484, "column": 12 }, "end": { - "line": 2468, - "column": 17 + "line": 2484, + "column": 14 } } }, { "type": { - "label": "==/!=", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -324242,26 +328261,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 89669, - "end": 89672, + "start": 90818, + "end": 90819, "loc": { "start": { - "line": 2468, - "column": 18 + "line": 2484, + "column": 14 }, "end": { - "line": 2468, - "column": 21 + "line": 2484, + "column": 15 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -324269,46 +328288,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ClampToEdgeWrapping", - "start": 89673, - "end": 89692, + "value": "this", + "start": 90820, + "end": 90824, "loc": { "start": { - "line": 2468, - "column": 22 + "line": 2484, + "column": 16 }, "end": { - "line": 2468, - "column": 41 + "line": 2484, + "column": 20 } } }, { "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": 89693, - "end": 89695, + "start": 90824, + "end": 90825, "loc": { "start": { - "line": 2468, - "column": 42 + "line": 2484, + "column": 20 }, "end": { - "line": 2468, - "column": 44 + "line": 2484, + "column": 21 } } }, @@ -324324,44 +328343,43 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 89696, - "end": 89701, + "value": "scene", + "start": 90825, + "end": 90830, "loc": { "start": { - "line": 2468, - "column": 45 + "line": 2484, + "column": 21 }, "end": { - "line": 2468, - "column": 50 + "line": 2484, + "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": 89702, - "end": 89705, + "start": 90830, + "end": 90831, "loc": { "start": { - "line": 2468, - "column": 51 + "line": 2484, + "column": 26 }, "end": { - "line": 2468, - "column": 54 + "line": 2484, + "column": 27 } } }, @@ -324377,44 +328395,43 @@ "postfix": false, "binop": null }, - "value": "MirroredRepeatWrapping", - "start": 89706, - "end": 89728, + "value": "canvas", + "start": 90831, + "end": 90837, "loc": { "start": { - "line": 2468, - "column": 55 + "line": 2484, + "column": 27 }, "end": { - "line": 2468, - "column": 77 + "line": 2484, + "column": 33 } } }, { "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": 89729, - "end": 89731, + "start": 90837, + "end": 90838, "loc": { "start": { - "line": 2468, - "column": 78 + "line": 2484, + "column": 33 }, "end": { - "line": 2468, - "column": 80 + "line": 2484, + "column": 34 } } }, @@ -324430,23 +328447,23 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 89732, - "end": 89737, + "value": "gl", + "start": 90838, + "end": 90840, "loc": { "start": { - "line": 2468, - "column": 81 + "line": 2484, + "column": 34 }, "end": { - "line": 2468, - "column": 86 + "line": 2484, + "column": 36 } } }, { "type": { - "label": "==/!=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -324454,20 +328471,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 89738, - "end": 89741, + "start": 90840, + "end": 90841, "loc": { "start": { - "line": 2468, - "column": 87 + "line": 2484, + "column": 36 }, "end": { - "line": 2468, - "column": 90 + "line": 2484, + "column": 37 } } }, @@ -324483,102 +328499,24 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 89742, - "end": 89756, - "loc": { - "start": { - "line": 2468, - "column": 91 - }, - "end": { - "line": 2468, - "column": 105 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 89756, - "end": 89757, - "loc": { - "start": { - "line": 2468, - "column": 105 - }, - "end": { - "line": 2468, - "column": 106 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 89758, - "end": 89759, - "loc": { - "start": { - "line": 2468, - "column": 107 - }, - "end": { - "line": 2468, - "column": 108 - } - } - }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 89772, - "end": 89776, + "value": "minFilter", + "start": 90854, + "end": 90863, "loc": { "start": { - "line": 2469, + "line": 2485, "column": 12 }, "end": { - "line": 2469, - "column": 16 + "line": 2485, + "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -324588,16 +328526,16 @@ "binop": null, "updateContext": null }, - "start": 89776, - "end": 89777, + "start": 90863, + "end": 90864, "loc": { "start": { - "line": 2469, - "column": 16 + "line": 2485, + "column": 21 }, "end": { - "line": 2469, - "column": 17 + "line": 2485, + "column": 22 } } }, @@ -324613,48 +328551,49 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 89777, - "end": 89782, + "value": "magFilter", + "start": 90877, + "end": 90886, "loc": { "start": { - "line": 2469, - "column": 17 + "line": 2486, + "column": 12 }, "end": { - "line": 2469, - "column": 22 + "line": 2486, + "column": 21 } } }, { "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": 89782, - "end": 89783, + "start": 90886, + "end": 90887, "loc": { "start": { - "line": 2469, - "column": 22 + "line": 2486, + "column": 21 }, "end": { - "line": 2469, - "column": 23 + "line": 2486, + "column": 22 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -324664,23 +328603,24 @@ "postfix": false, "binop": null }, - "start": 89783, - "end": 89784, + "value": "wrapS", + "start": 90900, + "end": 90905, "loc": { "start": { - "line": 2469, - "column": 23 + "line": 2487, + "column": 12 }, "end": { - "line": 2469, - "column": 24 + "line": 2487, + "column": 17 } } }, { "type": { - "label": "template", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -324690,23 +328630,22 @@ "binop": null, "updateContext": null }, - "value": "[createTexture] Unsupported value for 'wrapT' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.", - "start": 89784, - "end": 89946, + "start": 90905, + "end": 90906, "loc": { "start": { - "line": 2469, - "column": 24 + "line": 2487, + "column": 17 }, "end": { - "line": 2469, - "column": 186 + "line": 2487, + "column": 18 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -324716,47 +328655,23 @@ "postfix": false, "binop": null }, - "start": 89946, - "end": 89947, - "loc": { - "start": { - "line": 2469, - "column": 186 - }, - "end": { - "line": 2469, - "column": 187 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 89947, - "end": 89948, + "value": "wrapT", + "start": 90919, + "end": 90924, "loc": { "start": { - "line": 2469, - "column": 187 + "line": 2488, + "column": 12 }, "end": { - "line": 2469, - "column": 188 + "line": 2488, + "column": 17 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -324767,16 +328682,16 @@ "binop": null, "updateContext": null }, - "start": 89948, - "end": 89949, + "start": 90924, + "end": 90925, "loc": { "start": { - "line": 2469, - "column": 188 + "line": 2488, + "column": 17 }, "end": { - "line": 2469, - "column": 189 + "line": 2488, + "column": 18 } } }, @@ -324792,44 +328707,59 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 89962, - "end": 89967, + "value": "wrapR", + "start": 90938, + "end": 90943, "loc": { "start": { - "line": 2470, + "line": 2489, "column": 12 }, "end": { - "line": 2470, + "line": 2489, "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": 89968, - "end": 89969, + "start": 90943, + "end": 90944, "loc": { "start": { - "line": 2470, + "line": 2489, + "column": 17 + }, + "end": { + "line": 2489, "column": 18 + } + } + }, + { + "type": "CommentLine", + "value": " flipY: cfg.flipY,", + "start": 90957, + "end": 90977, + "loc": { + "start": { + "line": 2490, + "column": 12 }, "end": { - "line": 2470, - "column": 19 + "line": 2490, + "column": 32 } } }, @@ -324845,49 +328775,48 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 89970, - "end": 89984, + "value": "encoding", + "start": 90990, + "end": 90998, "loc": { "start": { - "line": 2470, - "column": 20 + "line": 2491, + "column": 12 }, "end": { - "line": 2470, - "column": 34 + "line": 2491, + "column": 20 } } }, { "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": 89984, - "end": 89985, + "start": 91007, + "end": 91008, "loc": { "start": { - "line": 2470, - "column": 34 + "line": 2492, + "column": 8 }, "end": { - "line": 2470, - "column": 35 + "line": 2492, + "column": 9 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -324897,24 +328826,23 @@ "postfix": false, "binop": null }, - "start": 89994, - "end": 89995, + "start": 91008, + "end": 91009, "loc": { "start": { - "line": 2471, - "column": 8 + "line": 2492, + "column": 9 }, "end": { - "line": 2471, - "column": 9 + "line": 2492, + "column": 10 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -324924,70 +328852,69 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 90004, - "end": 90007, + "start": 91009, + "end": 91010, "loc": { "start": { - "line": 2472, - "column": 8 + "line": 2492, + "column": 10 }, "end": { - "line": 2472, + "line": 2492, "column": 11 } } }, { "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": 90008, - "end": 90013, + "value": "if", + "start": 91019, + "end": 91021, "loc": { "start": { - "line": 2472, - "column": 12 + "line": 2493, + "column": 8 }, "end": { - "line": 2472, - "column": 17 + "line": 2493, + "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 + "binop": null }, - "value": "=", - "start": 90014, - "end": 90015, + "start": 91022, + "end": 91023, "loc": { "start": { - "line": 2472, - "column": 18 + "line": 2493, + "column": 11 }, "end": { - "line": 2472, - "column": 19 + "line": 2493, + "column": 12 } } }, @@ -325004,16 +328931,16 @@ "binop": null }, "value": "cfg", - "start": 90016, - "end": 90019, + "start": 91023, + "end": 91026, "loc": { "start": { - "line": 2472, - "column": 20 + "line": 2493, + "column": 12 }, "end": { - "line": 2472, - "column": 23 + "line": 2493, + "column": 15 } } }, @@ -325030,16 +328957,16 @@ "binop": null, "updateContext": null }, - "start": 90019, - "end": 90020, + "start": 91026, + "end": 91027, "loc": { "start": { - "line": 2472, - "column": 23 + "line": 2493, + "column": 15 }, "end": { - "line": 2472, - "column": 24 + "line": 2493, + "column": 16 } } }, @@ -325055,44 +328982,67 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 90020, - "end": 90025, + "value": "preloadColor", + "start": 91027, + "end": 91039, "loc": { "start": { - "line": 2472, - "column": 24 + "line": 2493, + "column": 16 }, "end": { - "line": 2472, + "line": 2493, + "column": 28 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 91039, + "end": 91040, + "loc": { + "start": { + "line": 2493, + "column": 28 + }, + "end": { + "line": 2493, "column": 29 } } }, { "type": { - "label": "||", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 90026, - "end": 90028, + "start": 91041, + "end": 91042, "loc": { "start": { - "line": 2472, + "line": 2493, "column": 30 }, "end": { - "line": 2472, - "column": 32 + "line": 2493, + "column": 31 } } }, @@ -325108,24 +329058,24 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 90029, - "end": 90043, + "value": "texture", + "start": 91055, + "end": 91062, "loc": { "start": { - "line": 2472, - "column": 33 + "line": 2494, + "column": 12 }, "end": { - "line": 2472, - "column": 47 + "line": 2494, + "column": 19 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -325135,44 +329085,42 @@ "binop": null, "updateContext": null }, - "start": 90043, - "end": 90044, + "start": 91062, + "end": 91063, "loc": { "start": { - "line": 2472, - "column": 47 + "line": 2494, + "column": 19 }, "end": { - "line": 2472, - "column": 48 + "line": 2494, + "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": 90053, - "end": 90055, + "value": "setPreloadColor", + "start": 91063, + "end": 91078, "loc": { "start": { - "line": 2473, - "column": 8 + "line": 2494, + "column": 20 }, "end": { - "line": 2473, - "column": 10 + "line": 2494, + "column": 35 } } }, @@ -325188,16 +329136,16 @@ "postfix": false, "binop": null }, - "start": 90056, - "end": 90057, + "start": 91078, + "end": 91079, "loc": { "start": { - "line": 2473, - "column": 11 + "line": 2494, + "column": 35 }, "end": { - "line": 2473, - "column": 12 + "line": 2494, + "column": 36 } } }, @@ -325213,44 +329161,43 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 90057, - "end": 90062, + "value": "cfg", + "start": 91079, + "end": 91082, "loc": { "start": { - "line": 2473, - "column": 12 + "line": 2494, + "column": 36 }, "end": { - "line": 2473, - "column": 17 + "line": 2494, + "column": 39 } } }, { "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": 90063, - "end": 90066, + "start": 91082, + "end": 91083, "loc": { "start": { - "line": 2473, - "column": 18 + "line": 2494, + "column": 39 }, "end": { - "line": 2473, - "column": 21 + "line": 2494, + "column": 40 } } }, @@ -325266,150 +329213,146 @@ "postfix": false, "binop": null }, - "value": "ClampToEdgeWrapping", - "start": 90067, - "end": 90086, + "value": "preloadColor", + "start": 91083, + "end": 91095, "loc": { "start": { - "line": 2473, - "column": 22 + "line": 2494, + "column": 40 }, "end": { - "line": 2473, - "column": 41 + "line": 2494, + "column": 52 } } }, { "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": 90087, - "end": 90089, + "start": 91095, + "end": 91096, "loc": { "start": { - "line": 2473, - "column": 42 + "line": 2494, + "column": 52 }, "end": { - "line": 2473, - "column": 44 + "line": 2494, + "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": "wrapR", - "start": 90090, - "end": 90095, + "start": 91096, + "end": 91097, "loc": { "start": { - "line": 2473, - "column": 45 + "line": 2494, + "column": 53 }, "end": { - "line": 2473, - "column": 50 + "line": 2494, + "column": 54 } } }, { "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": 90096, - "end": 90099, + "start": 91106, + "end": 91107, "loc": { "start": { - "line": 2473, - "column": 51 + "line": 2495, + "column": 8 }, "end": { - "line": 2473, - "column": 54 + "line": 2495, + "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": "MirroredRepeatWrapping", - "start": 90100, - "end": 90122, + "value": "if", + "start": 91116, + "end": 91118, "loc": { "start": { - "line": 2473, - "column": 55 + "line": 2496, + "column": 8 }, "end": { - "line": 2473, - "column": 77 + "line": 2496, + "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": 90123, - "end": 90125, + "start": 91119, + "end": 91120, "loc": { "start": { - "line": 2473, - "column": 78 + "line": 2496, + "column": 11 }, "end": { - "line": 2473, - "column": 80 + "line": 2496, + "column": 12 } } }, @@ -325425,44 +329368,43 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 90126, - "end": 90131, + "value": "cfg", + "start": 91120, + "end": 91123, "loc": { "start": { - "line": 2473, - "column": 81 + "line": 2496, + "column": 12 }, "end": { - "line": 2473, - "column": 86 + "line": 2496, + "column": 15 } } }, { "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": 90132, - "end": 90135, + "start": 91123, + "end": 91124, "loc": { "start": { - "line": 2473, - "column": 87 + "line": 2496, + "column": 15 }, "end": { - "line": 2473, - "column": 90 + "line": 2496, + "column": 16 } } }, @@ -325478,17 +329420,17 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 90136, - "end": 90150, + "value": "image", + "start": 91124, + "end": 91129, "loc": { "start": { - "line": 2473, - "column": 91 + "line": 2496, + "column": 16 }, "end": { - "line": 2473, - "column": 105 + "line": 2496, + "column": 21 } } }, @@ -325504,16 +329446,16 @@ "postfix": false, "binop": null }, - "start": 90150, - "end": 90151, + "start": 91129, + "end": 91130, "loc": { "start": { - "line": 2473, - "column": 105 + "line": 2496, + "column": 21 }, "end": { - "line": 2473, - "column": 106 + "line": 2496, + "column": 22 } } }, @@ -325529,50 +329471,39 @@ "postfix": false, "binop": null }, - "start": 90152, - "end": 90153, + "start": 91131, + "end": 91132, "loc": { "start": { - "line": 2473, - "column": 107 + "line": 2496, + "column": 23 }, "end": { - "line": 2473, - "column": 108 + "line": 2496, + "column": 24 } } }, { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 90166, - "end": 90170, + "type": "CommentLine", + "value": " Ignore transcoder for Images", + "start": 91133, + "end": 91164, "loc": { "start": { - "line": 2474, - "column": 12 + "line": 2496, + "column": 25 }, "end": { - "line": 2474, - "column": 16 + "line": 2496, + "column": 56 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -325583,15 +329514,16 @@ "binop": null, "updateContext": null }, - "start": 90170, - "end": 90171, + "value": "const", + "start": 91177, + "end": 91182, "loc": { "start": { - "line": 2474, - "column": 16 + "line": 2497, + "column": 12 }, "end": { - "line": 2474, + "line": 2497, "column": 17 } } @@ -325608,48 +329540,50 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 90171, - "end": 90176, + "value": "image", + "start": 91183, + "end": 91188, "loc": { "start": { - "line": 2474, - "column": 17 + "line": 2497, + "column": 18 }, "end": { - "line": 2474, - "column": 22 + "line": 2497, + "column": 23 } } }, { "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": 90176, - "end": 90177, + "value": "=", + "start": 91189, + "end": 91190, "loc": { "start": { - "line": 2474, - "column": 22 + "line": 2497, + "column": 24 }, "end": { - "line": 2474, - "column": 23 + "line": 2497, + "column": 25 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -325659,22 +329593,23 @@ "postfix": false, "binop": null }, - "start": 90177, - "end": 90178, + "value": "cfg", + "start": 91191, + "end": 91194, "loc": { "start": { - "line": 2474, - "column": 23 + "line": 2497, + "column": 26 }, "end": { - "line": 2474, - "column": 24 + "line": 2497, + "column": 29 } } }, { "type": { - "label": "template", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -325685,23 +329620,22 @@ "binop": null, "updateContext": null }, - "value": "[createTexture] Unsupported value for 'wrapR' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.", - "start": 90178, - "end": 90340, + "start": 91194, + "end": 91195, "loc": { "start": { - "line": 2474, - "column": 24 + "line": 2497, + "column": 29 }, "end": { - "line": 2474, - "column": 186 + "line": 2497, + "column": 30 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -325711,48 +329645,76 @@ "postfix": false, "binop": null }, - "start": 90340, - "end": 90341, + "value": "image", + "start": 91195, + "end": 91200, "loc": { "start": { - "line": 2474, - "column": 186 + "line": 2497, + "column": 30 }, "end": { - "line": 2474, - "column": 187 + "line": 2497, + "column": 35 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 91200, + "end": 91201, + "loc": { + "start": { + "line": 2497, + "column": 35 + }, + "end": { + "line": 2497, + "column": 36 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 90341, - "end": 90342, + "value": "image", + "start": 91214, + "end": 91219, "loc": { "start": { - "line": 2474, - "column": 187 + "line": 2498, + "column": 12 }, "end": { - "line": 2474, - "column": 188 + "line": 2498, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -325762,16 +329724,16 @@ "binop": null, "updateContext": null }, - "start": 90342, - "end": 90343, + "start": 91219, + "end": 91220, "loc": { "start": { - "line": 2474, - "column": 188 + "line": 2498, + "column": 17 }, "end": { - "line": 2474, - "column": 189 + "line": 2498, + "column": 18 } } }, @@ -325787,17 +329749,17 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 90356, - "end": 90361, + "value": "crossOrigin", + "start": 91220, + "end": 91231, "loc": { "start": { - "line": 2475, - "column": 12 + "line": 2498, + "column": 18 }, "end": { - "line": 2475, - "column": 17 + "line": 2498, + "column": 29 } } }, @@ -325815,22 +329777,22 @@ "updateContext": null }, "value": "=", - "start": 90362, - "end": 90363, + "start": 91232, + "end": 91233, "loc": { "start": { - "line": 2475, - "column": 18 + "line": 2498, + "column": 30 }, "end": { - "line": 2475, - "column": 19 + "line": 2498, + "column": 31 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -325838,19 +329800,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "RepeatWrapping", - "start": 90364, - "end": 90378, + "value": "Anonymous", + "start": 91234, + "end": 91245, "loc": { "start": { - "line": 2475, - "column": 20 + "line": 2498, + "column": 32 }, "end": { - "line": 2475, - "column": 34 + "line": 2498, + "column": 43 } } }, @@ -325867,24 +329830,24 @@ "binop": null, "updateContext": null }, - "start": 90378, - "end": 90379, + "start": 91245, + "end": 91246, "loc": { "start": { - "line": 2475, - "column": 34 + "line": 2498, + "column": 43 }, "end": { - "line": 2475, - "column": 35 + "line": 2498, + "column": 44 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -325892,23 +329855,23 @@ "postfix": false, "binop": null }, - "start": 90388, - "end": 90389, + "value": "texture", + "start": 91259, + "end": 91266, "loc": { "start": { - "line": 2476, - "column": 8 + "line": 2499, + "column": 12 }, "end": { - "line": 2476, - "column": 9 + "line": 2499, + "column": 19 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -325919,17 +329882,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 90398, - "end": 90401, + "start": 91266, + "end": 91267, "loc": { "start": { - "line": 2477, - "column": 8 + "line": 2499, + "column": 19 }, "end": { - "line": 2477, - "column": 11 + "line": 2499, + "column": 20 } } }, @@ -325945,44 +329907,42 @@ "postfix": false, "binop": null }, - "value": "encoding", - "start": 90402, - "end": 90410, + "value": "setImage", + "start": 91267, + "end": 91275, "loc": { "start": { - "line": 2477, - "column": 12 + "line": 2499, + "column": 20 }, "end": { - "line": 2477, - "column": 20 + "line": 2499, + "column": 28 } } }, { "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": 90411, - "end": 90412, + "start": 91275, + "end": 91276, "loc": { "start": { - "line": 2477, - "column": 21 + "line": 2499, + "column": 28 }, "end": { - "line": 2477, - "column": 22 + "line": 2499, + "column": 29 } } }, @@ -325998,24 +329958,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 90413, - "end": 90416, + "value": "image", + "start": 91276, + "end": 91281, "loc": { "start": { - "line": 2477, - "column": 23 + "line": 2499, + "column": 29 }, "end": { - "line": 2477, - "column": 26 + "line": 2499, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -326025,16 +329985,41 @@ "binop": null, "updateContext": null }, - "start": 90416, - "end": 90417, + "start": 91281, + "end": 91282, "loc": { "start": { - "line": 2477, - "column": 26 + "line": 2499, + "column": 34 }, "end": { - "line": 2477, - "column": 27 + "line": 2499, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 91283, + "end": 91284, + "loc": { + "start": { + "line": 2499, + "column": 36 + }, + "end": { + "line": 2499, + "column": 37 } } }, @@ -326050,23 +330035,23 @@ "postfix": false, "binop": null }, - "value": "encoding", - "start": 90417, - "end": 90425, + "value": "minFilter", + "start": 91284, + "end": 91293, "loc": { "start": { - "line": 2477, - "column": 27 + "line": 2499, + "column": 37 }, "end": { - "line": 2477, - "column": 35 + "line": 2499, + "column": 46 } } }, { "type": { - "label": "||", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -326074,20 +330059,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 90426, - "end": 90428, + "start": 91293, + "end": 91294, "loc": { "start": { - "line": 2477, - "column": 36 + "line": 2499, + "column": 46 }, "end": { - "line": 2477, - "column": 38 + "line": 2499, + "column": 47 } } }, @@ -326103,23 +330087,23 @@ "postfix": false, "binop": null }, - "value": "LinearEncoding", - "start": 90429, - "end": 90443, + "value": "magFilter", + "start": 91295, + "end": 91304, "loc": { "start": { - "line": 2477, - "column": 39 + "line": 2499, + "column": 48 }, "end": { - "line": 2477, - "column": 53 + "line": 2499, + "column": 57 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -326130,24 +330114,49 @@ "binop": null, "updateContext": null }, - "start": 90443, - "end": 90444, + "start": 91304, + "end": 91305, "loc": { "start": { - "line": 2477, - "column": 53 + "line": 2499, + "column": 57 }, "end": { - "line": 2477, - "column": 54 + "line": 2499, + "column": 58 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "wrapS", + "start": 91306, + "end": 91311, + "loc": { + "start": { + "line": 2499, + "column": 59 + }, + "end": { + "line": 2499, + "column": 64 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -326157,24 +330166,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 90453, - "end": 90455, + "start": 91311, + "end": 91312, "loc": { "start": { - "line": 2478, - "column": 8 + "line": 2499, + "column": 64 }, "end": { - "line": 2478, - "column": 10 + "line": 2499, + "column": 65 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -326183,16 +330191,43 @@ "postfix": false, "binop": null }, - "start": 90456, - "end": 90457, + "value": "wrapT", + "start": 91313, + "end": 91318, "loc": { "start": { - "line": 2478, - "column": 11 + "line": 2499, + "column": 66 }, "end": { - "line": 2478, - "column": 12 + "line": 2499, + "column": 71 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 91318, + "end": 91319, + "loc": { + "start": { + "line": 2499, + "column": 71 + }, + "end": { + "line": 2499, + "column": 72 } } }, @@ -326208,23 +330243,23 @@ "postfix": false, "binop": null }, - "value": "encoding", - "start": 90457, - "end": 90465, + "value": "wrapR", + "start": 91320, + "end": 91325, "loc": { "start": { - "line": 2478, - "column": 12 + "line": 2499, + "column": 73 }, "end": { - "line": 2478, - "column": 20 + "line": 2499, + "column": 78 } } }, { "type": { - "label": "==/!=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -326232,20 +330267,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 90466, - "end": 90469, + "start": 91325, + "end": 91326, "loc": { "start": { - "line": 2478, - "column": 21 + "line": 2499, + "column": 78 }, "end": { - "line": 2478, - "column": 24 + "line": 2499, + "column": 79 } } }, @@ -326261,23 +330295,23 @@ "postfix": false, "binop": null }, - "value": "LinearEncoding", - "start": 90470, - "end": 90484, + "value": "flipY", + "start": 91327, + "end": 91332, "loc": { "start": { - "line": 2478, - "column": 25 + "line": 2499, + "column": 80 }, "end": { - "line": 2478, - "column": 39 + "line": 2499, + "column": 85 } } }, { "type": { - "label": "&&", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -326285,20 +330319,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 90485, - "end": 90487, + "start": 91332, + "end": 91333, "loc": { "start": { - "line": 2478, - "column": 40 + "line": 2499, + "column": 85 }, "end": { - "line": 2478, - "column": 42 + "line": 2499, + "column": 86 } } }, @@ -326314,44 +330347,43 @@ "postfix": false, "binop": null }, - "value": "encoding", - "start": 90488, - "end": 90496, + "value": "cfg", + "start": 91334, + "end": 91337, "loc": { "start": { - "line": 2478, - "column": 43 + "line": 2499, + "column": 87 }, "end": { - "line": 2478, - "column": 51 + "line": 2499, + "column": 90 } } }, { "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": 90497, - "end": 90500, + "start": 91337, + "end": 91338, "loc": { "start": { - "line": 2478, - "column": 52 + "line": 2499, + "column": 90 }, "end": { - "line": 2478, - "column": 55 + "line": 2499, + "column": 91 } } }, @@ -326367,49 +330399,50 @@ "postfix": false, "binop": null }, - "value": "sRGBEncoding", - "start": 90501, - "end": 90513, + "value": "flipY", + "start": 91338, + "end": 91343, "loc": { "start": { - "line": 2478, - "column": 56 + "line": 2499, + "column": 91 }, "end": { - "line": 2478, - "column": 68 + "line": 2499, + "column": 96 } } }, { "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": 90513, - "end": 90514, + "start": 91343, + "end": 91344, "loc": { "start": { - "line": 2478, - "column": 68 + "line": 2499, + "column": 96 }, "end": { - "line": 2478, - "column": 69 + "line": 2499, + "column": 97 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -326418,50 +330451,48 @@ "postfix": false, "binop": null }, - "start": 90515, - "end": 90516, + "value": "encoding", + "start": 91345, + "end": 91353, "loc": { "start": { - "line": 2478, - "column": 70 + "line": 2499, + "column": 98 }, "end": { - "line": 2478, - "column": 71 + "line": 2499, + "column": 106 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 90529, - "end": 90533, + "start": 91353, + "end": 91354, "loc": { "start": { - "line": 2479, - "column": 12 + "line": 2499, + "column": 106 }, "end": { - "line": 2479, - "column": 16 + "line": 2499, + "column": 107 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -326469,53 +330500,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 90533, - "end": 90534, + "start": 91354, + "end": 91355, "loc": { "start": { - "line": 2479, - "column": 16 + "line": 2499, + "column": 107 }, "end": { - "line": 2479, - "column": 17 + "line": 2499, + "column": 108 } } }, { "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": "error", - "start": 90534, - "end": 90539, + "start": 91355, + "end": 91356, "loc": { "start": { - "line": 2479, - "column": 17 + "line": 2499, + "column": 108 }, "end": { - "line": 2479, - "column": 22 + "line": 2499, + "column": 109 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -326523,24 +330553,25 @@ "postfix": false, "binop": null }, - "start": 90539, - "end": 90540, + "start": 91365, + "end": 91366, "loc": { "start": { - "line": 2479, - "column": 22 + "line": 2500, + "column": 8 }, "end": { - "line": 2479, - "column": 23 + "line": 2500, + "column": 9 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": "else", + "keyword": "else", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -326549,23 +330580,24 @@ "binop": null, "updateContext": null }, - "value": "[createTexture] Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding.", - "start": 90540, - "end": 90676, + "value": "else", + "start": 91367, + "end": 91371, "loc": { "start": { - "line": 2479, - "column": 23 + "line": 2500, + "column": 10 }, "end": { - "line": 2479, - "column": 159 + "line": 2500, + "column": 14 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -326573,44 +330605,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 90676, - "end": 90677, + "value": "if", + "start": 91372, + "end": 91374, "loc": { "start": { - "line": 2479, - "column": 159 + "line": 2500, + "column": 15 }, "end": { - "line": 2479, - "column": 160 + "line": 2500, + "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": 90677, - "end": 90678, + "start": 91375, + "end": 91376, "loc": { "start": { - "line": 2479, - "column": 160 + "line": 2500, + "column": 18 }, "end": { - "line": 2479, - "column": 161 + "line": 2500, + "column": 19 } } }, @@ -326626,44 +330659,43 @@ "postfix": false, "binop": null }, - "value": "encoding", - "start": 90691, - "end": 90699, + "value": "cfg", + "start": 91376, + "end": 91379, "loc": { "start": { - "line": 2480, - "column": 12 + "line": 2500, + "column": 19 }, "end": { - "line": 2480, - "column": 20 + "line": 2500, + "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": 90700, - "end": 90701, + "start": 91379, + "end": 91380, "loc": { "start": { - "line": 2480, - "column": 21 + "line": 2500, + "column": 22 }, "end": { - "line": 2480, - "column": 22 + "line": 2500, + "column": 23 } } }, @@ -326679,51 +330711,50 @@ "postfix": false, "binop": null }, - "value": "LinearEncoding", - "start": 90702, - "end": 90716, + "value": "src", + "start": 91380, + "end": 91383, "loc": { "start": { - "line": 2480, + "line": 2500, "column": 23 }, "end": { - "line": 2480, - "column": 37 + "line": 2500, + "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": 90716, - "end": 90717, + "start": 91383, + "end": 91384, "loc": { "start": { - "line": 2480, - "column": 37 + "line": 2500, + "column": 26 }, "end": { - "line": 2480, - "column": 38 + "line": 2500, + "column": 27 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -326731,16 +330762,16 @@ "postfix": false, "binop": null }, - "start": 90726, - "end": 90727, + "start": 91385, + "end": 91386, "loc": { "start": { - "line": 2481, - "column": 8 + "line": 2500, + "column": 28 }, "end": { - "line": 2481, - "column": 9 + "line": 2500, + "column": 29 } } }, @@ -326759,16 +330790,16 @@ "updateContext": null }, "value": "const", - "start": 90736, - "end": 90741, + "start": 91399, + "end": 91404, "loc": { "start": { - "line": 2482, - "column": 8 + "line": 2501, + "column": 12 }, "end": { - "line": 2482, - "column": 13 + "line": 2501, + "column": 17 } } }, @@ -326784,16 +330815,16 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 90742, - "end": 90749, + "value": "ext", + "start": 91405, + "end": 91408, "loc": { "start": { - "line": 2482, - "column": 14 + "line": 2501, + "column": 18 }, "end": { - "line": 2482, + "line": 2501, "column": 21 } } @@ -326812,77 +330843,75 @@ "updateContext": null }, "value": "=", - "start": 90750, - "end": 90751, + "start": 91409, + "end": 91410, "loc": { "start": { - "line": 2482, + "line": 2501, "column": 22 }, "end": { - "line": 2482, + "line": 2501, "column": 23 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "new", - "start": 90752, - "end": 90755, + "value": "cfg", + "start": 91411, + "end": 91414, "loc": { "start": { - "line": 2482, + "line": 2501, "column": 24 }, "end": { - "line": 2482, + "line": 2501, "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": "Texture2D", - "start": 90756, - "end": 90765, + "start": 91414, + "end": 91415, "loc": { "start": { - "line": 2482, - "column": 28 + "line": 2501, + "column": 27 }, "end": { - "line": 2482, - "column": 37 + "line": 2501, + "column": 28 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -326891,41 +330920,43 @@ "postfix": false, "binop": null }, - "start": 90765, - "end": 90766, + "value": "src", + "start": 91415, + "end": 91418, "loc": { "start": { - "line": 2482, - "column": 37 + "line": 2501, + "column": 28 }, "end": { - "line": 2482, - "column": 38 + "line": 2501, + "column": 31 } } }, { "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": 90766, - "end": 90767, + "start": 91418, + "end": 91419, "loc": { "start": { - "line": 2482, - "column": 38 + "line": 2501, + "column": 31 }, "end": { - "line": 2482, - "column": 39 + "line": 2501, + "column": 32 } } }, @@ -326941,50 +330972,48 @@ "postfix": false, "binop": null }, - "value": "gl", - "start": 90780, - "end": 90782, + "value": "split", + "start": 91419, + "end": 91424, "loc": { "start": { - "line": 2483, - "column": 12 + "line": 2501, + "column": 32 }, "end": { - "line": 2483, - "column": 14 + "line": 2501, + "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": 90782, - "end": 90783, + "start": 91424, + "end": 91425, "loc": { "start": { - "line": 2483, - "column": 14 + "line": 2501, + "column": 37 }, "end": { - "line": 2483, - "column": 15 + "line": 2501, + "column": 38 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -326995,23 +331024,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 90784, - "end": 90788, + "value": ".", + "start": 91425, + "end": 91428, "loc": { "start": { - "line": 2483, - "column": 16 + "line": 2501, + "column": 38 }, "end": { - "line": 2483, - "column": 20 + "line": 2501, + "column": 41 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -327019,45 +331048,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 90788, - "end": 90789, - "loc": { - "start": { - "line": 2483, - "column": 20 - }, - "end": { - "line": 2483, - "column": 21 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "value": "scene", - "start": 90789, - "end": 90794, + "start": 91428, + "end": 91429, "loc": { "start": { - "line": 2483, - "column": 21 + "line": 2501, + "column": 41 }, "end": { - "line": 2483, - "column": 26 + "line": 2501, + "column": 42 } } }, @@ -327074,16 +331076,16 @@ "binop": null, "updateContext": null }, - "start": 90794, - "end": 90795, + "start": 91429, + "end": 91430, "loc": { "start": { - "line": 2483, - "column": 26 + "line": 2501, + "column": 42 }, "end": { - "line": 2483, - "column": 27 + "line": 2501, + "column": 43 } } }, @@ -327099,51 +331101,50 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 90795, - "end": 90801, + "value": "pop", + "start": 91430, + "end": 91433, "loc": { "start": { - "line": 2483, - "column": 27 + "line": 2501, + "column": 43 }, "end": { - "line": 2483, - "column": 33 + "line": 2501, + "column": 46 } } }, { "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": 90801, - "end": 90802, + "start": 91433, + "end": 91434, "loc": { "start": { - "line": 2483, - "column": 33 + "line": 2501, + "column": 46 }, "end": { - "line": 2483, - "column": 34 + "line": 2501, + "column": 47 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -327151,23 +331152,22 @@ "postfix": false, "binop": null }, - "value": "gl", - "start": 90802, - "end": 90804, + "start": 91434, + "end": 91435, "loc": { "start": { - "line": 2483, - "column": 34 + "line": 2501, + "column": 47 }, "end": { - "line": 2483, - "column": 36 + "line": 2501, + "column": 48 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -327178,68 +331178,69 @@ "binop": null, "updateContext": null }, - "start": 90804, - "end": 90805, + "start": 91435, + "end": 91436, "loc": { "start": { - "line": 2483, - "column": 36 + "line": 2501, + "column": 48 }, "end": { - "line": 2483, - "column": 37 + "line": 2501, + "column": 49 } } }, { "type": { - "label": "name", + "label": "switch", + "keyword": "switch", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "minFilter", - "start": 90818, - "end": 90827, + "value": "switch", + "start": 91449, + "end": 91455, "loc": { "start": { - "line": 2484, + "line": 2502, "column": 12 }, "end": { - "line": 2484, - "column": 21 + "line": 2502, + "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": 90827, - "end": 90828, + "start": 91456, + "end": 91457, "loc": { "start": { - "line": 2484, - "column": 21 + "line": 2502, + "column": 19 }, "end": { - "line": 2484, - "column": 22 + "line": 2502, + "column": 20 } } }, @@ -327255,50 +331256,49 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 90841, - "end": 90850, + "value": "ext", + "start": 91457, + "end": 91460, "loc": { "start": { - "line": 2485, - "column": 12 + "line": 2502, + "column": 20 }, "end": { - "line": 2485, - "column": 21 + "line": 2502, + "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": 90850, - "end": 90851, + "start": 91460, + "end": 91461, "loc": { "start": { - "line": 2485, - "column": 21 + "line": 2502, + "column": 23 }, "end": { - "line": 2485, - "column": 22 + "line": 2502, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -327307,23 +331307,39 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 90864, - "end": 90869, + "start": 91462, + "end": 91463, "loc": { "start": { - "line": 2486, - "column": 12 + "line": 2502, + "column": 25 }, "end": { - "line": 2486, - "column": 17 + "line": 2502, + "column": 26 + } + } + }, + { + "type": "CommentLine", + "value": " Don't transcode recognized image file types", + "start": 91464, + "end": 91510, + "loc": { + "start": { + "line": 2502, + "column": 27 + }, + "end": { + "line": 2502, + "column": 73 } } }, { "type": { - "label": ",", + "label": "case", + "keyword": "case", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -327334,22 +331350,23 @@ "binop": null, "updateContext": null }, - "start": 90869, - "end": 90870, + "value": "case", + "start": 91527, + "end": 91531, "loc": { "start": { - "line": 2486, - "column": 17 + "line": 2503, + "column": 16 }, "end": { - "line": 2486, - "column": 18 + "line": 2503, + "column": 20 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -327357,25 +331374,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "wrapT", - "start": 90883, - "end": 90888, + "value": "jpeg", + "start": 91532, + "end": 91538, "loc": { "start": { - "line": 2487, - "column": 12 + "line": 2503, + "column": 21 }, "end": { - "line": 2487, - "column": 17 + "line": 2503, + "column": 27 } } }, { "type": { - "label": ",", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -327386,50 +331404,52 @@ "binop": null, "updateContext": null }, - "start": 90888, - "end": 90889, + "start": 91538, + "end": 91539, "loc": { "start": { - "line": 2487, - "column": 17 + "line": 2503, + "column": 27 }, "end": { - "line": 2487, - "column": 18 + "line": 2503, + "column": 28 } } }, { "type": { - "label": "name", - "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 }, - "value": "wrapR", - "start": 90902, - "end": 90907, + "value": "case", + "start": 91556, + "end": 91560, "loc": { "start": { - "line": 2488, - "column": 12 + "line": 2504, + "column": 16 }, "end": { - "line": 2488, - "column": 17 + "line": 2504, + "column": 20 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -327438,114 +331458,104 @@ "binop": null, "updateContext": null }, - "start": 90907, - "end": 90908, - "loc": { - "start": { - "line": 2488, - "column": 17 - }, - "end": { - "line": 2488, - "column": 18 - } - } - }, - { - "type": "CommentLine", - "value": " flipY: cfg.flipY,", - "start": 90921, - "end": 90941, + "value": "jpg", + "start": 91561, + "end": 91566, "loc": { "start": { - "line": 2489, - "column": 12 + "line": 2504, + "column": 21 }, "end": { - "line": 2489, - "column": 32 + "line": 2504, + "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": "encoding", - "start": 90954, - "end": 90962, + "start": 91566, + "end": 91567, "loc": { "start": { - "line": 2490, - "column": 12 + "line": 2504, + "column": 26 }, "end": { - "line": 2490, - "column": 20 + "line": 2504, + "column": 27 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "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": 90971, - "end": 90972, + "value": "case", + "start": 91584, + "end": 91588, "loc": { "start": { - "line": 2491, - "column": 8 + "line": 2505, + "column": 16 }, "end": { - "line": 2491, - "column": 9 + "line": 2505, + "column": 20 } } }, { "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": 90972, - "end": 90973, + "value": "png", + "start": 91589, + "end": 91594, "loc": { "start": { - "line": 2491, - "column": 9 + "line": 2505, + "column": 21 }, "end": { - "line": 2491, - "column": 10 + "line": 2505, + "column": 26 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -327556,24 +331566,24 @@ "binop": null, "updateContext": null }, - "start": 90973, - "end": 90974, + "start": 91594, + "end": 91595, "loc": { "start": { - "line": 2491, - "column": 10 + "line": 2505, + "column": 26 }, "end": { - "line": 2491, - "column": 11 + "line": 2505, + "column": 27 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "case", + "keyword": "case", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -327583,74 +331593,77 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 90983, - "end": 90985, + "value": "case", + "start": 91612, + "end": 91616, "loc": { "start": { - "line": 2492, - "column": 8 + "line": 2506, + "column": 16 }, "end": { - "line": 2492, - "column": 10 + "line": 2506, + "column": 20 } } }, { "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": 90986, - "end": 90987, + "value": "gif", + "start": 91617, + "end": 91622, "loc": { "start": { - "line": 2492, - "column": 11 + "line": 2506, + "column": 21 }, "end": { - "line": 2492, - "column": 12 + "line": 2506, + "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": "cfg", - "start": 90987, - "end": 90990, + "start": 91622, + "end": 91623, "loc": { "start": { - "line": 2492, - "column": 12 + "line": 2506, + "column": 26 }, "end": { - "line": 2492, - "column": 15 + "line": 2506, + "column": 27 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -327661,16 +331674,17 @@ "binop": null, "updateContext": null }, - "start": 90990, - "end": 90991, + "value": "const", + "start": 91644, + "end": 91649, "loc": { "start": { - "line": 2492, - "column": 15 + "line": 2507, + "column": 20 }, "end": { - "line": 2492, - "column": 16 + "line": 2507, + "column": 25 } } }, @@ -327686,48 +331700,51 @@ "postfix": false, "binop": null }, - "value": "preloadColor", - "start": 90991, - "end": 91003, + "value": "image", + "start": 91650, + "end": 91655, "loc": { "start": { - "line": 2492, - "column": 16 + "line": 2507, + "column": 26 }, "end": { - "line": 2492, - "column": 28 + "line": 2507, + "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": 91003, - "end": 91004, + "value": "=", + "start": 91656, + "end": 91657, "loc": { "start": { - "line": 2492, - "column": 28 + "line": 2507, + "column": 32 }, "end": { - "line": 2492, - "column": 29 + "line": 2507, + "column": 33 } } }, { "type": { - "label": "{", + "label": "new", + "keyword": "new", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -327735,18 +331752,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 91005, - "end": 91006, + "value": "new", + "start": 91658, + "end": 91661, "loc": { "start": { - "line": 2492, - "column": 30 + "line": 2507, + "column": 34 }, "end": { - "line": 2492, - "column": 31 + "line": 2507, + "column": 37 } } }, @@ -327762,51 +331781,50 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 91019, - "end": 91026, + "value": "Image", + "start": 91662, + "end": 91667, "loc": { "start": { - "line": 2493, - "column": 12 + "line": 2507, + "column": 38 }, "end": { - "line": 2493, - "column": 19 + "line": 2507, + "column": 43 } } }, { "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": 91026, - "end": 91027, + "start": 91667, + "end": 91668, "loc": { "start": { - "line": 2493, - "column": 19 + "line": 2507, + "column": 43 }, "end": { - "line": 2493, - "column": 20 + "line": 2507, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -327814,42 +331832,42 @@ "postfix": false, "binop": null }, - "value": "setPreloadColor", - "start": 91027, - "end": 91042, + "start": 91668, + "end": 91669, "loc": { "start": { - "line": 2493, - "column": 20 + "line": 2507, + "column": 44 }, "end": { - "line": 2493, - "column": 35 + "line": 2507, + "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": 91042, - "end": 91043, + "start": 91669, + "end": 91670, "loc": { "start": { - "line": 2493, - "column": 35 + "line": 2507, + "column": 45 }, "end": { - "line": 2493, - "column": 36 + "line": 2507, + "column": 46 } } }, @@ -327865,17 +331883,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 91043, - "end": 91046, + "value": "image", + "start": 91691, + "end": 91696, "loc": { "start": { - "line": 2493, - "column": 36 + "line": 2508, + "column": 20 }, "end": { - "line": 2493, - "column": 39 + "line": 2508, + "column": 25 } } }, @@ -327892,16 +331910,16 @@ "binop": null, "updateContext": null }, - "start": 91046, - "end": 91047, + "start": 91696, + "end": 91697, "loc": { "start": { - "line": 2493, - "column": 39 + "line": 2508, + "column": 25 }, "end": { - "line": 2493, - "column": 40 + "line": 2508, + "column": 26 } } }, @@ -327917,74 +331935,75 @@ "postfix": false, "binop": null }, - "value": "preloadColor", - "start": 91047, - "end": 91059, + "value": "onload", + "start": 91697, + "end": 91703, "loc": { "start": { - "line": 2493, - "column": 40 + "line": 2508, + "column": 26 }, "end": { - "line": 2493, - "column": 52 + "line": 2508, + "column": 32 } } }, { "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": 91059, - "end": 91060, + "value": "=", + "start": 91704, + "end": 91705, "loc": { "start": { - "line": 2493, - "column": 52 + "line": 2508, + "column": 33 }, "end": { - "line": 2493, - "column": 53 + "line": 2508, + "column": 34 } } }, { "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": 91060, - "end": 91061, + "start": 91706, + "end": 91707, "loc": { "start": { - "line": 2493, - "column": 53 + "line": 2508, + "column": 35 }, "end": { - "line": 2493, - "column": 54 + "line": 2508, + "column": 36 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -327994,24 +332013,23 @@ "postfix": false, "binop": null }, - "start": 91070, - "end": 91071, + "start": 91707, + "end": 91708, "loc": { "start": { - "line": 2494, - "column": 8 + "line": 2508, + "column": 36 }, "end": { - "line": 2494, - "column": 9 + "line": 2508, + "column": 37 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "=>", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -328021,23 +332039,22 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 91080, - "end": 91082, + "start": 91709, + "end": 91711, "loc": { "start": { - "line": 2495, - "column": 8 + "line": 2508, + "column": 38 }, "end": { - "line": 2495, - "column": 10 + "line": 2508, + "column": 40 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -328047,16 +332064,16 @@ "postfix": false, "binop": null }, - "start": 91083, - "end": 91084, + "start": 91712, + "end": 91713, "loc": { "start": { - "line": 2495, - "column": 11 + "line": 2508, + "column": 41 }, "end": { - "line": 2495, - "column": 12 + "line": 2508, + "column": 42 } } }, @@ -328072,17 +332089,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 91084, - "end": 91087, + "value": "texture", + "start": 91738, + "end": 91745, "loc": { "start": { - "line": 2495, - "column": 12 + "line": 2509, + "column": 24 }, "end": { - "line": 2495, - "column": 15 + "line": 2509, + "column": 31 } } }, @@ -328099,16 +332116,16 @@ "binop": null, "updateContext": null }, - "start": 91087, - "end": 91088, + "start": 91745, + "end": 91746, "loc": { "start": { - "line": 2495, - "column": 15 + "line": 2509, + "column": 31 }, "end": { - "line": 2495, - "column": 16 + "line": 2509, + "column": 32 } } }, @@ -328124,25 +332141,25 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 91088, - "end": 91093, + "value": "setImage", + "start": 91746, + "end": 91754, "loc": { "start": { - "line": 2495, - "column": 16 + "line": 2509, + "column": 32 }, "end": { - "line": 2495, - "column": 21 + "line": 2509, + "column": 40 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -328150,23 +332167,23 @@ "postfix": false, "binop": null }, - "start": 91093, - "end": 91094, + "start": 91754, + "end": 91755, "loc": { "start": { - "line": 2495, - "column": 21 + "line": 2509, + "column": 40 }, "end": { - "line": 2495, - "column": 22 + "line": 2509, + "column": 41 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -328175,60 +332192,68 @@ "postfix": false, "binop": null }, - "start": 91095, - "end": 91096, + "value": "image", + "start": 91755, + "end": 91760, "loc": { "start": { - "line": 2495, - "column": 23 + "line": 2509, + "column": 41 }, "end": { - "line": 2495, - "column": 24 + "line": 2509, + "column": 46 } } }, { - "type": "CommentLine", - "value": " Ignore transcoder for Images", - "start": 91097, - "end": 91128, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 91760, + "end": 91761, "loc": { "start": { - "line": 2495, - "column": 25 + "line": 2509, + "column": 46 }, "end": { - "line": 2495, - "column": 56 + "line": 2509, + "column": 47 } } }, { "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": 91141, - "end": 91146, + "start": 91762, + "end": 91763, "loc": { "start": { - "line": 2496, - "column": 12 + "line": 2509, + "column": 48 }, "end": { - "line": 2496, - "column": 17 + "line": 2509, + "column": 49 } } }, @@ -328244,44 +332269,43 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 91147, - "end": 91152, + "value": "minFilter", + "start": 91792, + "end": 91801, "loc": { "start": { - "line": 2496, - "column": 18 + "line": 2510, + "column": 28 }, "end": { - "line": 2496, - "column": 23 + "line": 2510, + "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": 91153, - "end": 91154, + "start": 91801, + "end": 91802, "loc": { "start": { - "line": 2496, - "column": 24 + "line": 2510, + "column": 37 }, "end": { - "line": 2496, - "column": 25 + "line": 2510, + "column": 38 } } }, @@ -328297,24 +332321,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 91155, - "end": 91158, + "value": "magFilter", + "start": 91831, + "end": 91840, "loc": { "start": { - "line": 2496, - "column": 26 + "line": 2511, + "column": 28 }, "end": { - "line": 2496, - "column": 29 + "line": 2511, + "column": 37 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -328324,16 +332348,16 @@ "binop": null, "updateContext": null }, - "start": 91158, - "end": 91159, + "start": 91840, + "end": 91841, "loc": { "start": { - "line": 2496, - "column": 29 + "line": 2511, + "column": 37 }, "end": { - "line": 2496, - "column": 30 + "line": 2511, + "column": 38 } } }, @@ -328349,23 +332373,23 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 91159, - "end": 91164, + "value": "wrapS", + "start": 91870, + "end": 91875, "loc": { "start": { - "line": 2496, - "column": 30 + "line": 2512, + "column": 28 }, "end": { - "line": 2496, - "column": 35 + "line": 2512, + "column": 33 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -328376,16 +332400,16 @@ "binop": null, "updateContext": null }, - "start": 91164, - "end": 91165, + "start": 91875, + "end": 91876, "loc": { "start": { - "line": 2496, - "column": 35 + "line": 2512, + "column": 33 }, "end": { - "line": 2496, - "column": 36 + "line": 2512, + "column": 34 } } }, @@ -328401,24 +332425,24 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 91178, - "end": 91183, + "value": "wrapT", + "start": 91905, + "end": 91910, "loc": { "start": { - "line": 2497, - "column": 12 + "line": 2513, + "column": 28 }, "end": { - "line": 2497, - "column": 17 + "line": 2513, + "column": 33 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -328428,16 +332452,16 @@ "binop": null, "updateContext": null }, - "start": 91183, - "end": 91184, + "start": 91910, + "end": 91911, "loc": { "start": { - "line": 2497, - "column": 17 + "line": 2513, + "column": 33 }, "end": { - "line": 2497, - "column": 18 + "line": 2513, + "column": 34 } } }, @@ -328453,50 +332477,49 @@ "postfix": false, "binop": null }, - "value": "crossOrigin", - "start": 91184, - "end": 91195, + "value": "wrapR", + "start": 91940, + "end": 91945, "loc": { "start": { - "line": 2497, - "column": 18 + "line": 2514, + "column": 28 }, "end": { - "line": 2497, - "column": 29 + "line": 2514, + "column": 33 } } }, { "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": 91196, - "end": 91197, + "start": 91945, + "end": 91946, "loc": { "start": { - "line": 2497, - "column": 30 + "line": 2514, + "column": 33 }, "end": { - "line": 2497, - "column": 31 + "line": 2514, + "column": 34 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -328504,26 +332527,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "Anonymous", - "start": 91198, - "end": 91209, + "value": "flipY", + "start": 91975, + "end": 91980, "loc": { "start": { - "line": 2497, - "column": 32 + "line": 2515, + "column": 28 }, "end": { - "line": 2497, - "column": 43 + "line": 2515, + "column": 33 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -328534,16 +332556,16 @@ "binop": null, "updateContext": null }, - "start": 91209, - "end": 91210, + "start": 91980, + "end": 91981, "loc": { "start": { - "line": 2497, - "column": 43 + "line": 2515, + "column": 33 }, "end": { - "line": 2497, - "column": 44 + "line": 2515, + "column": 34 } } }, @@ -328559,17 +332581,17 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 91223, - "end": 91230, + "value": "cfg", + "start": 91982, + "end": 91985, "loc": { "start": { - "line": 2498, - "column": 12 + "line": 2515, + "column": 35 }, "end": { - "line": 2498, - "column": 19 + "line": 2515, + "column": 38 } } }, @@ -328586,16 +332608,16 @@ "binop": null, "updateContext": null }, - "start": 91230, - "end": 91231, + "start": 91985, + "end": 91986, "loc": { "start": { - "line": 2498, - "column": 19 + "line": 2515, + "column": 38 }, "end": { - "line": 2498, - "column": 20 + "line": 2515, + "column": 39 } } }, @@ -328611,42 +332633,43 @@ "postfix": false, "binop": null }, - "value": "setImage", - "start": 91231, - "end": 91239, + "value": "flipY", + "start": 91986, + "end": 91991, "loc": { "start": { - "line": 2498, - "column": 20 + "line": 2515, + "column": 39 }, "end": { - "line": 2498, - "column": 28 + "line": 2515, + "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": 91239, - "end": 91240, + "start": 91991, + "end": 91992, "loc": { "start": { - "line": 2498, - "column": 28 + "line": 2515, + "column": 44 }, "end": { - "line": 2498, - "column": 29 + "line": 2515, + "column": 45 } } }, @@ -328662,76 +332685,50 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 91240, - "end": 91245, + "value": "encoding", + "start": 92021, + "end": 92029, "loc": { "start": { - "line": 2498, - "column": 29 + "line": 2516, + "column": 28 }, "end": { - "line": 2498, - "column": 34 + "line": 2516, + "column": 36 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 91245, - "end": 91246, - "loc": { - "start": { - "line": 2498, - "column": 34 - }, - "end": { - "line": 2498, - "column": 35 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "start": 91247, - "end": 91248, + "start": 92054, + "end": 92055, "loc": { "start": { - "line": 2498, - "column": 36 + "line": 2517, + "column": 24 }, "end": { - "line": 2498, - "column": 37 + "line": 2517, + "column": 25 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -328739,23 +332736,22 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 91248, - "end": 91257, + "start": 92055, + "end": 92056, "loc": { "start": { - "line": 2498, - "column": 37 + "line": 2517, + "column": 25 }, "end": { - "line": 2498, - "column": 46 + "line": 2517, + "column": 26 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -328766,22 +332762,23 @@ "binop": null, "updateContext": null }, - "start": 91257, - "end": 91258, + "start": 92056, + "end": 92057, "loc": { "start": { - "line": 2498, - "column": 46 + "line": 2517, + "column": 26 }, "end": { - "line": 2498, - "column": 47 + "line": 2517, + "column": 27 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -328789,26 +332786,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "magFilter", - "start": 91259, - "end": 91268, + "value": "this", + "start": 92082, + "end": 92086, "loc": { "start": { - "line": 2498, - "column": 48 + "line": 2518, + "column": 24 }, "end": { - "line": 2498, - "column": 57 + "line": 2518, + "column": 28 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -328818,16 +332816,16 @@ "binop": null, "updateContext": null }, - "start": 91268, - "end": 91269, + "start": 92086, + "end": 92087, "loc": { "start": { - "line": 2498, - "column": 57 + "line": 2518, + "column": 28 }, "end": { - "line": 2498, - "column": 58 + "line": 2518, + "column": 29 } } }, @@ -328843,51 +332841,50 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 91270, - "end": 91275, + "value": "glRedraw", + "start": 92087, + "end": 92095, "loc": { "start": { - "line": 2498, - "column": 59 + "line": 2518, + "column": 29 }, "end": { - "line": 2498, - "column": 64 + "line": 2518, + "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": 91275, - "end": 91276, + "start": 92095, + "end": 92096, "loc": { "start": { - "line": 2498, - "column": 64 + "line": 2518, + "column": 37 }, "end": { - "line": 2498, - "column": 65 + "line": 2518, + "column": 38 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -328895,23 +332892,22 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 91277, - "end": 91282, + "start": 92096, + "end": 92097, "loc": { "start": { - "line": 2498, - "column": 66 + "line": 2518, + "column": 38 }, "end": { - "line": 2498, - "column": 71 + "line": 2518, + "column": 39 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -328922,24 +332918,24 @@ "binop": null, "updateContext": null }, - "start": 91282, - "end": 91283, + "start": 92097, + "end": 92098, "loc": { "start": { - "line": 2498, - "column": 71 + "line": 2518, + "column": 39 }, "end": { - "line": 2498, - "column": 72 + "line": 2518, + "column": 40 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -328947,23 +332943,22 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 91284, - "end": 91289, + "start": 92119, + "end": 92120, "loc": { "start": { - "line": 2498, - "column": 73 + "line": 2519, + "column": 20 }, "end": { - "line": 2498, - "column": 78 + "line": 2519, + "column": 21 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -328974,16 +332969,16 @@ "binop": null, "updateContext": null }, - "start": 91289, - "end": 91290, + "start": 92120, + "end": 92121, "loc": { "start": { - "line": 2498, - "column": 78 + "line": 2519, + "column": 21 }, "end": { - "line": 2498, - "column": 79 + "line": 2519, + "column": 22 } } }, @@ -328999,24 +332994,24 @@ "postfix": false, "binop": null }, - "value": "flipY", - "start": 91291, - "end": 91296, + "value": "image", + "start": 92142, + "end": 92147, "loc": { "start": { - "line": 2498, - "column": 80 + "line": 2520, + "column": 20 }, "end": { - "line": 2498, - "column": 85 + "line": 2520, + "column": 25 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -329026,16 +333021,16 @@ "binop": null, "updateContext": null }, - "start": 91296, - "end": 91297, + "start": 92147, + "end": 92148, "loc": { "start": { - "line": 2498, - "column": 85 + "line": 2520, + "column": 25 }, "end": { - "line": 2498, - "column": 86 + "line": 2520, + "column": 26 } } }, @@ -329051,43 +333046,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 91298, - "end": 91301, + "value": "src", + "start": 92148, + "end": 92151, "loc": { "start": { - "line": 2498, - "column": 87 + "line": 2520, + "column": 26 }, "end": { - "line": 2498, - "column": 90 + "line": 2520, + "column": 29 } } }, { "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": 91301, - "end": 91302, + "value": "=", + "start": 92152, + "end": 92153, "loc": { "start": { - "line": 2498, - "column": 90 + "line": 2520, + "column": 30 }, "end": { - "line": 2498, - "column": 91 + "line": 2520, + "column": 31 } } }, @@ -329103,24 +333099,24 @@ "postfix": false, "binop": null }, - "value": "flipY", - "start": 91302, - "end": 91307, + "value": "cfg", + "start": 92154, + "end": 92157, "loc": { "start": { - "line": 2498, - "column": 91 + "line": 2520, + "column": 32 }, "end": { - "line": 2498, - "column": 96 + "line": 2520, + "column": 35 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -329130,16 +333126,16 @@ "binop": null, "updateContext": null }, - "start": 91307, - "end": 91308, + "start": 92157, + "end": 92158, "loc": { "start": { - "line": 2498, - "column": 96 + "line": 2520, + "column": 35 }, "end": { - "line": 2498, - "column": 97 + "line": 2520, + "column": 36 } } }, @@ -329155,48 +333151,66 @@ "postfix": false, "binop": null }, - "value": "encoding", - "start": 91309, - "end": 91317, + "value": "src", + "start": 92158, + "end": 92161, "loc": { "start": { - "line": 2498, - "column": 98 + "line": 2520, + "column": 36 }, "end": { - "line": 2498, - "column": 106 + "line": 2520, + "column": 39 } } }, { "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": 91317, - "end": 91318, + "start": 92161, + "end": 92162, "loc": { "start": { - "line": 2498, - "column": 106 + "line": 2520, + "column": 39 }, "end": { - "line": 2498, - "column": 107 + "line": 2520, + "column": 40 + } + } + }, + { + "type": "CommentLine", + "value": " URL or Base64 string", + "start": 92163, + "end": 92186, + "loc": { + "start": { + "line": 2520, + "column": 41 + }, + "end": { + "line": 2520, + "column": 64 } } }, { "type": { - "label": ")", + "label": "break", + "keyword": "break", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -329204,18 +333218,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 91318, - "end": 91319, + "value": "break", + "start": 92207, + "end": 92212, "loc": { "start": { - "line": 2498, - "column": 107 + "line": 2521, + "column": 20 }, "end": { - "line": 2498, - "column": 108 + "line": 2521, + "column": 25 } } }, @@ -329232,48 +333248,50 @@ "binop": null, "updateContext": null }, - "start": 91319, - "end": 91320, + "start": 92212, + "end": 92213, "loc": { "start": { - "line": 2498, - "column": 108 + "line": 2521, + "column": 25 }, "end": { - "line": 2498, - "column": 109 + "line": 2521, + "column": 26 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "default", + "keyword": "default", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 91329, - "end": 91330, + "value": "default", + "start": 92230, + "end": 92237, "loc": { "start": { - "line": 2499, - "column": 8 + "line": 2522, + "column": 16 }, "end": { - "line": 2499, - "column": 9 + "line": 2522, + "column": 23 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -329284,17 +333302,32 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 91331, - "end": 91335, + "start": 92237, + "end": 92238, "loc": { "start": { - "line": 2499, - "column": 10 + "line": 2522, + "column": 23 }, "end": { - "line": 2499, - "column": 14 + "line": 2522, + "column": 24 + } + } + }, + { + "type": "CommentLine", + "value": " Assume other file types need transcoding", + "start": 92239, + "end": 92282, + "loc": { + "start": { + "line": 2522, + "column": 25 + }, + "end": { + "line": 2522, + "column": 68 } } }, @@ -329313,16 +333346,16 @@ "updateContext": null }, "value": "if", - "start": 91336, - "end": 91338, + "start": 92303, + "end": 92305, "loc": { "start": { - "line": 2499, - "column": 15 + "line": 2523, + "column": 20 }, "end": { - "line": 2499, - "column": 17 + "line": 2523, + "column": 22 } } }, @@ -329338,50 +333371,52 @@ "postfix": false, "binop": null }, - "start": 91339, - "end": 91340, + "start": 92306, + "end": 92307, "loc": { "start": { - "line": 2499, - "column": 18 + "line": 2523, + "column": 23 }, "end": { - "line": 2499, - "column": 19 + "line": 2523, + "column": 24 } } }, { "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": "cfg", - "start": 91340, - "end": 91343, + "value": "!", + "start": 92307, + "end": 92308, "loc": { "start": { - "line": 2499, - "column": 19 + "line": 2523, + "column": 24 }, "end": { - "line": 2499, - "column": 22 + "line": 2523, + "column": 25 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -329390,50 +333425,51 @@ "binop": null, "updateContext": null }, - "start": 91343, - "end": 91344, + "value": "this", + "start": 92308, + "end": 92312, "loc": { "start": { - "line": 2499, - "column": 22 + "line": 2523, + "column": 25 }, "end": { - "line": 2499, - "column": 23 + "line": 2523, + "column": 29 } } }, { "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": "src", - "start": 91344, - "end": 91347, + "start": 92312, + "end": 92313, "loc": { "start": { - "line": 2499, - "column": 23 + "line": 2523, + "column": 29 }, "end": { - "line": 2499, - "column": 26 + "line": 2523, + "column": 30 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -329441,24 +333477,25 @@ "postfix": false, "binop": null }, - "start": 91347, - "end": 91348, + "value": "_textureTranscoder", + "start": 92313, + "end": 92331, "loc": { "start": { - "line": 2499, - "column": 26 + "line": 2523, + "column": 30 }, "end": { - "line": 2499, - "column": 27 + "line": 2523, + "column": 48 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -329466,50 +333503,48 @@ "postfix": false, "binop": null }, - "start": 91349, - "end": 91350, + "start": 92331, + "end": 92332, "loc": { "start": { - "line": 2499, - "column": 28 + "line": 2523, + "column": 48 }, "end": { - "line": 2499, - "column": 29 + "line": 2523, + "column": 49 } } }, { "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": 91363, - "end": 91368, + "start": 92333, + "end": 92334, "loc": { "start": { - "line": 2500, - "column": 12 + "line": 2523, + "column": 50 }, "end": { - "line": 2500, - "column": 17 + "line": 2523, + "column": 51 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -329517,46 +333552,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ext", - "start": 91369, - "end": 91372, + "value": "this", + "start": 92359, + "end": 92363, "loc": { "start": { - "line": 2500, - "column": 18 + "line": 2524, + "column": 24 }, "end": { - "line": 2500, - "column": 21 + "line": 2524, + "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": 91373, - "end": 91374, + "start": 92363, + "end": 92364, "loc": { "start": { - "line": 2500, - "column": 22 + "line": 2524, + "column": 28 }, "end": { - "line": 2500, - "column": 23 + "line": 2524, + "column": 29 } } }, @@ -329572,49 +333607,48 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 91375, - "end": 91378, + "value": "error", + "start": 92364, + "end": 92369, "loc": { "start": { - "line": 2500, - "column": 24 + "line": 2524, + "column": 29 }, "end": { - "line": 2500, - "column": 27 + "line": 2524, + "column": 34 } } }, { "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": 91378, - "end": 91379, + "start": 92369, + "end": 92370, "loc": { "start": { - "line": 2500, - "column": 27 + "line": 2524, + "column": 34 }, "end": { - "line": 2500, - "column": 28 + "line": 2524, + "column": 35 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -329624,23 +333658,22 @@ "postfix": false, "binop": null }, - "value": "src", - "start": 91379, - "end": 91382, + "start": 92370, + "end": 92371, "loc": { "start": { - "line": 2500, - "column": 28 + "line": 2524, + "column": 35 }, "end": { - "line": 2500, - "column": 31 + "line": 2524, + "column": 36 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -329651,23 +333684,24 @@ "binop": null, "updateContext": null }, - "start": 91382, - "end": 91383, + "value": "[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('", + "start": 92371, + "end": 92501, "loc": { "start": { - "line": 2500, - "column": 31 + "line": 2524, + "column": 36 }, "end": { - "line": 2500, - "column": 32 + "line": 2524, + "column": 166 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -329676,24 +333710,23 @@ "postfix": false, "binop": null }, - "value": "split", - "start": 91383, - "end": 91388, + "start": 92501, + "end": 92503, "loc": { "start": { - "line": 2500, - "column": 32 + "line": 2524, + "column": 166 }, "end": { - "line": 2500, - "column": 37 + "line": 2524, + "column": 168 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -329702,49 +333735,48 @@ "postfix": false, "binop": null }, - "start": 91388, - "end": 91389, + "value": "ext", + "start": 92503, + "end": 92506, "loc": { "start": { - "line": 2500, - "column": 37 + "line": 2524, + "column": 168 }, "end": { - "line": 2500, - "column": 38 + "line": 2524, + "column": 171 } } }, { "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": ".", - "start": 91389, - "end": 91392, + "start": 92506, + "end": 92507, "loc": { "start": { - "line": 2500, - "column": 38 + "line": 2524, + "column": 171 }, "end": { - "line": 2500, - "column": 41 + "line": 2524, + "column": 172 } } }, { "type": { - "label": ")", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -329752,52 +333784,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 91392, - "end": 91393, + "value": "')", + "start": 92507, + "end": 92509, "loc": { "start": { - "line": 2500, - "column": 41 + "line": 2524, + "column": 172 }, "end": { - "line": 2500, - "column": 42 + "line": 2524, + "column": 174 } } }, { "type": { - "label": ".", + "label": "`", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 91393, - "end": 91394, + "start": 92509, + "end": 92510, "loc": { "start": { - "line": 2500, - "column": 42 + "line": 2524, + "column": 174 }, "end": { - "line": 2500, - "column": 43 + "line": 2524, + "column": 175 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -329805,48 +333838,48 @@ "postfix": false, "binop": null }, - "value": "pop", - "start": 91394, - "end": 91397, + "start": 92510, + "end": 92511, "loc": { "start": { - "line": 2500, - "column": 43 + "line": 2524, + "column": 175 }, "end": { - "line": 2500, - "column": 46 + "line": 2524, + "column": 176 } } }, { "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": 91397, - "end": 91398, + "start": 92511, + "end": 92512, "loc": { "start": { - "line": 2500, - "column": 46 + "line": 2524, + "column": 176 }, "end": { - "line": 2500, - "column": 47 + "line": 2524, + "column": 177 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -329856,22 +333889,23 @@ "postfix": false, "binop": null }, - "start": 91398, - "end": 91399, + "start": 92533, + "end": 92534, "loc": { "start": { - "line": 2500, - "column": 47 + "line": 2525, + "column": 20 }, "end": { - "line": 2500, - "column": 48 + "line": 2525, + "column": 21 } } }, { "type": { - "label": ";", + "label": "else", + "keyword": "else", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -329882,51 +333916,49 @@ "binop": null, "updateContext": null }, - "start": 91399, - "end": 91400, + "value": "else", + "start": 92535, + "end": 92539, "loc": { "start": { - "line": 2500, - "column": 48 + "line": 2525, + "column": 22 }, "end": { - "line": 2500, - "column": 49 + "line": 2525, + "column": 26 } } }, { "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": 91413, - "end": 91419, + "start": 92540, + "end": 92541, "loc": { "start": { - "line": 2501, - "column": 12 + "line": 2525, + "column": 27 }, "end": { - "line": 2501, - "column": 18 + "line": 2525, + "column": 28 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -329935,50 +333967,51 @@ "postfix": false, "binop": null }, - "start": 91420, - "end": 91421, + "value": "utils", + "start": 92566, + "end": 92571, "loc": { "start": { - "line": 2501, - "column": 19 + "line": 2526, + "column": 24 }, "end": { - "line": 2501, - "column": 20 + "line": 2526, + "column": 29 } } }, { "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": "ext", - "start": 91421, - "end": 91424, + "start": 92571, + "end": 92572, "loc": { "start": { - "line": 2501, - "column": 20 + "line": 2526, + "column": 29 }, "end": { - "line": 2501, - "column": 23 + "line": 2526, + "column": 30 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -329986,22 +334019,23 @@ "postfix": false, "binop": null }, - "start": 91424, - "end": 91425, + "value": "loadArraybuffer", + "start": 92572, + "end": 92587, "loc": { "start": { - "line": 2501, - "column": 23 + "line": 2526, + "column": 30 }, "end": { - "line": 2501, - "column": 24 + "line": 2526, + "column": 45 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -330011,40 +334045,49 @@ "postfix": false, "binop": null }, - "start": 91426, - "end": 91427, + "start": 92587, + "end": 92588, "loc": { "start": { - "line": 2501, - "column": 25 + "line": 2526, + "column": 45 }, "end": { - "line": 2501, - "column": 26 + "line": 2526, + "column": 46 } } }, { - "type": "CommentLine", - "value": " Don't transcode recognized image file types", - "start": 91428, - "end": 91474, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 92588, + "end": 92591, "loc": { "start": { - "line": 2501, - "column": 27 + "line": 2526, + "column": 46 }, "end": { - "line": 2501, - "column": 73 + "line": 2526, + "column": 49 } } }, { "type": { - "label": "case", - "keyword": "case", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -330054,23 +334097,22 @@ "binop": null, "updateContext": null }, - "value": "case", - "start": 91491, - "end": 91495, + "start": 92591, + "end": 92592, "loc": { "start": { - "line": 2502, - "column": 16 + "line": 2526, + "column": 49 }, "end": { - "line": 2502, - "column": 20 + "line": 2526, + "column": 50 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -330078,26 +334120,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "jpeg", - "start": 91496, - "end": 91502, + "value": "src", + "start": 92592, + "end": 92595, "loc": { "start": { - "line": 2502, - "column": 21 + "line": 2526, + "column": 50 }, "end": { - "line": 2502, - "column": 27 + "line": 2526, + "column": 53 } } }, { "type": { - "label": ":", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -330108,50 +334149,47 @@ "binop": null, "updateContext": null }, - "start": 91502, - "end": 91503, + "start": 92595, + "end": 92596, "loc": { "start": { - "line": 2502, - "column": 27 + "line": 2526, + "column": 53 }, "end": { - "line": 2502, - "column": 28 + "line": 2526, + "column": 54 } } }, { "type": { - "label": "case", - "keyword": "case", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "case", - "start": 91520, - "end": 91524, + "start": 92597, + "end": 92598, "loc": { "start": { - "line": 2503, - "column": 16 + "line": 2526, + "column": 55 }, "end": { - "line": 2503, - "column": 20 + "line": 2526, + "column": 56 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -330159,53 +334197,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "jpg", - "start": 91525, - "end": 91530, + "value": "arrayBuffer", + "start": 92598, + "end": 92609, "loc": { "start": { - "line": 2503, - "column": 21 + "line": 2526, + "column": 56 }, "end": { - "line": 2503, - "column": 26 + "line": 2526, + "column": 67 } } }, { "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": 91530, - "end": 91531, + "start": 92609, + "end": 92610, "loc": { "start": { - "line": 2503, - "column": 26 + "line": 2526, + "column": 67 }, "end": { - "line": 2503, - "column": 27 + "line": 2526, + "column": 68 } } }, { "type": { - "label": "case", - "keyword": "case", + "label": "=>", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -330216,51 +334251,49 @@ "binop": null, "updateContext": null }, - "value": "case", - "start": 91548, - "end": 91552, + "start": 92611, + "end": 92613, "loc": { "start": { - "line": 2504, - "column": 16 + "line": 2526, + "column": 69 }, "end": { - "line": 2504, - "column": 20 + "line": 2526, + "column": 71 } } }, { "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": "png", - "start": 91553, - "end": 91558, + "start": 92614, + "end": 92615, "loc": { "start": { - "line": 2504, - "column": 21 + "line": 2526, + "column": 72 }, "end": { - "line": 2504, - "column": 26 + "line": 2526, + "column": 73 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -330270,104 +334303,101 @@ "binop": null, "updateContext": null }, - "start": 91558, - "end": 91559, + "value": "if", + "start": 92648, + "end": 92650, "loc": { "start": { - "line": 2504, - "column": 26 + "line": 2527, + "column": 32 }, "end": { - "line": 2504, - "column": 27 + "line": 2527, + "column": 34 } } }, { "type": { - "label": "case", - "keyword": "case", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "case", - "start": 91576, - "end": 91580, + "start": 92651, + "end": 92652, "loc": { "start": { - "line": 2505, - "column": 16 + "line": 2527, + "column": 35 }, "end": { - "line": 2505, - "column": 20 + "line": 2527, + "column": 36 } } }, { "type": { - "label": "string", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "gif", - "start": 91581, - "end": 91586, + "value": "!", + "start": 92652, + "end": 92653, "loc": { "start": { - "line": 2505, - "column": 21 + "line": 2527, + "column": 36 }, "end": { - "line": 2505, - "column": 26 + "line": 2527, + "column": 37 } } }, { "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": 91586, - "end": 91587, + "value": "arrayBuffer", + "start": 92653, + "end": 92664, "loc": { "start": { - "line": 2505, - "column": 26 + "line": 2527, + "column": 37 }, "end": { - "line": 2505, - "column": 27 + "line": 2527, + "column": 48 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -330378,17 +334408,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 91608, - "end": 91613, + "start": 92664, + "end": 92665, "loc": { "start": { - "line": 2506, - "column": 20 + "line": 2527, + "column": 48 }, "end": { - "line": 2506, - "column": 25 + "line": 2527, + "column": 49 } } }, @@ -330404,51 +334433,48 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 91614, - "end": 91619, + "value": "byteLength", + "start": 92665, + "end": 92675, "loc": { "start": { - "line": 2506, - "column": 26 + "line": 2527, + "column": 49 }, "end": { - "line": 2506, - "column": 31 + "line": 2527, + "column": 59 } } }, { "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": 91620, - "end": 91621, + "start": 92675, + "end": 92676, "loc": { "start": { - "line": 2506, - "column": 32 + "line": 2527, + "column": 59 }, "end": { - "line": 2506, - "column": 33 + "line": 2527, + "column": 60 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -330456,26 +334482,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "new", - "start": 91622, - "end": 91625, + "start": 92677, + "end": 92678, "loc": { "start": { - "line": 2506, - "column": 34 + "line": 2527, + "column": 61 }, "end": { - "line": 2506, - "column": 37 + "line": 2527, + "column": 62 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -330483,52 +334508,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "Image", - "start": 91626, - "end": 91631, + "value": "this", + "start": 92715, + "end": 92719, "loc": { "start": { - "line": 2506, - "column": 38 + "line": 2528, + "column": 36 }, "end": { - "line": 2506, - "column": 43 + "line": 2528, + "column": 40 } } }, { "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": 91631, - "end": 91632, + "start": 92719, + "end": 92720, "loc": { "start": { - "line": 2506, - "column": 43 + "line": 2528, + "column": 40 }, "end": { - "line": 2506, - "column": 44 + "line": 2528, + "column": 41 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -330536,48 +334563,48 @@ "postfix": false, "binop": null }, - "start": 91632, - "end": 91633, + "value": "error", + "start": 92720, + "end": 92725, "loc": { "start": { - "line": 2506, - "column": 44 + "line": 2528, + "column": 41 }, "end": { - "line": 2506, - "column": 45 + "line": 2528, + "column": 46 } } }, { "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": 91633, - "end": 91634, + "start": 92725, + "end": 92726, "loc": { "start": { - "line": 2506, - "column": 45 + "line": 2528, + "column": 46 }, "end": { - "line": 2506, - "column": 46 + "line": 2528, + "column": 47 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -330587,23 +334614,22 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 91655, - "end": 91660, + "start": 92726, + "end": 92727, "loc": { "start": { - "line": 2507, - "column": 20 + "line": 2528, + "column": 47 }, "end": { - "line": 2507, - "column": 25 + "line": 2528, + "column": 48 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -330614,22 +334640,23 @@ "binop": null, "updateContext": null }, - "start": 91660, - "end": 91661, + "value": "[createTexture] Can't create texture from 'src': file data is zero length", + "start": 92727, + "end": 92800, "loc": { "start": { - "line": 2507, - "column": 25 + "line": 2528, + "column": 48 }, "end": { - "line": 2507, - "column": 26 + "line": 2528, + "column": 121 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -330639,100 +334666,101 @@ "postfix": false, "binop": null }, - "value": "onload", - "start": 91661, - "end": 91667, + "start": 92800, + "end": 92801, "loc": { "start": { - "line": 2507, - "column": 26 + "line": 2528, + "column": 121 }, "end": { - "line": 2507, - "column": 32 + "line": 2528, + "column": 122 } } }, { "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": 91668, - "end": 91669, + "start": 92801, + "end": 92802, "loc": { "start": { - "line": 2507, - "column": 33 + "line": 2528, + "column": 122 }, "end": { - "line": 2507, - "column": 34 + "line": 2528, + "column": 123 } } }, { "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": 91670, - "end": 91671, + "start": 92802, + "end": 92803, "loc": { "start": { - "line": 2507, - "column": 35 + "line": 2528, + "column": 123 }, "end": { - "line": 2507, - "column": 36 + "line": 2528, + "column": 124 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 91671, - "end": 91672, + "value": "return", + "start": 92840, + "end": 92846, "loc": { "start": { - "line": 2507, + "line": 2529, "column": 36 }, "end": { - "line": 2507, - "column": 37 + "line": 2529, + "column": 42 } } }, { "type": { - "label": "=>", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -330743,24 +334771,24 @@ "binop": null, "updateContext": null }, - "start": 91673, - "end": 91675, + "start": 92846, + "end": 92847, "loc": { "start": { - "line": 2507, - "column": 38 + "line": 2529, + "column": 42 }, "end": { - "line": 2507, - "column": 40 + "line": 2529, + "column": 43 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -330768,22 +334796,23 @@ "postfix": false, "binop": null }, - "start": 91676, - "end": 91677, + "start": 92880, + "end": 92881, "loc": { "start": { - "line": 2507, - "column": 41 + "line": 2530, + "column": 32 }, "end": { - "line": 2507, - "column": 42 + "line": 2530, + "column": 33 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -330791,19 +334820,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "texture", - "start": 91702, - "end": 91709, + "value": "this", + "start": 92914, + "end": 92918, "loc": { "start": { - "line": 2508, - "column": 24 + "line": 2531, + "column": 32 }, "end": { - "line": 2508, - "column": 31 + "line": 2531, + "column": 36 } } }, @@ -330820,16 +334850,16 @@ "binop": null, "updateContext": null }, - "start": 91709, - "end": 91710, + "start": 92918, + "end": 92919, "loc": { "start": { - "line": 2508, - "column": 31 + "line": 2531, + "column": 36 }, "end": { - "line": 2508, - "column": 32 + "line": 2531, + "column": 37 } } }, @@ -330845,42 +334875,43 @@ "postfix": false, "binop": null }, - "value": "setImage", - "start": 91710, - "end": 91718, + "value": "_textureTranscoder", + "start": 92919, + "end": 92937, "loc": { "start": { - "line": 2508, - "column": 32 + "line": 2531, + "column": 37 }, "end": { - "line": 2508, - "column": 40 + "line": 2531, + "column": 55 } } }, { "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": 91718, - "end": 91719, + "start": 92937, + "end": 92938, "loc": { "start": { - "line": 2508, - "column": 40 + "line": 2531, + "column": 55 }, "end": { - "line": 2508, - "column": 41 + "line": 2531, + "column": 56 } } }, @@ -330896,49 +334927,48 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 91719, - "end": 91724, + "value": "transcode", + "start": 92938, + "end": 92947, "loc": { "start": { - "line": 2508, - "column": 41 + "line": 2531, + "column": 56 }, "end": { - "line": 2508, - "column": 46 + "line": 2531, + "column": 65 } } }, { "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": 91724, - "end": 91725, + "start": 92947, + "end": 92948, "loc": { "start": { - "line": 2508, - "column": 46 + "line": 2531, + "column": 65 }, "end": { - "line": 2508, - "column": 47 + "line": 2531, + "column": 66 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -330946,18 +334976,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 91726, - "end": 91727, + "start": 92948, + "end": 92949, "loc": { "start": { - "line": 2508, - "column": 48 + "line": 2531, + "column": 66 }, "end": { - "line": 2508, - "column": 49 + "line": 2531, + "column": 67 } } }, @@ -330973,24 +335004,24 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 91756, - "end": 91765, + "value": "arrayBuffer", + "start": 92949, + "end": 92960, "loc": { "start": { - "line": 2509, - "column": 28 + "line": 2531, + "column": 67 }, "end": { - "line": 2509, - "column": 37 + "line": 2531, + "column": 78 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -331000,76 +335031,76 @@ "binop": null, "updateContext": null }, - "start": 91765, - "end": 91766, + "start": 92960, + "end": 92961, "loc": { "start": { - "line": 2509, - "column": 37 + "line": 2531, + "column": 78 }, "end": { - "line": 2509, - "column": 38 + "line": 2531, + "column": 79 } } }, { "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": "magFilter", - "start": 91795, - "end": 91804, + "start": 92961, + "end": 92962, "loc": { "start": { - "line": 2510, - "column": 28 + "line": 2531, + "column": 79 }, "end": { - "line": 2510, - "column": 37 + "line": 2531, + "column": 80 } } }, { "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": 91804, - "end": 91805, + "value": "texture", + "start": 92963, + "end": 92970, "loc": { "start": { - "line": 2510, - "column": 37 + "line": 2531, + "column": 81 }, "end": { - "line": 2510, - "column": 38 + "line": 2531, + "column": 88 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -331077,24 +335108,23 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 91834, - "end": 91839, + "start": 92970, + "end": 92971, "loc": { "start": { - "line": 2511, - "column": 28 + "line": 2531, + "column": 88 }, "end": { - "line": 2511, - "column": 33 + "line": 2531, + "column": 89 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -331104,16 +335134,16 @@ "binop": null, "updateContext": null }, - "start": 91839, - "end": 91840, + "start": 92971, + "end": 92972, "loc": { "start": { - "line": 2511, - "column": 33 + "line": 2531, + "column": 89 }, "end": { - "line": 2511, - "column": 34 + "line": 2531, + "column": 90 } } }, @@ -331129,50 +335159,49 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 91869, - "end": 91874, + "value": "then", + "start": 92972, + "end": 92976, "loc": { "start": { - "line": 2512, - "column": 28 + "line": 2531, + "column": 90 }, "end": { - "line": 2512, - "column": 33 + "line": 2531, + "column": 94 } } }, { "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": 91874, - "end": 91875, + "start": 92976, + "end": 92977, "loc": { "start": { - "line": 2512, - "column": 33 + "line": 2531, + "column": 94 }, "end": { - "line": 2512, - "column": 34 + "line": 2531, + "column": 95 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -331181,101 +335210,99 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 91904, - "end": 91909, + "start": 92977, + "end": 92978, "loc": { "start": { - "line": 2513, - "column": 28 + "line": 2531, + "column": 95 }, "end": { - "line": 2513, - "column": 33 + "line": 2531, + "column": 96 } } }, { "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": 91909, - "end": 91910, + "start": 92978, + "end": 92979, "loc": { "start": { - "line": 2513, - "column": 33 + "line": 2531, + "column": 96 }, "end": { - "line": 2513, - "column": 34 + "line": 2531, + "column": 97 } } }, { "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": "flipY", - "start": 91939, - "end": 91944, + "start": 92980, + "end": 92982, "loc": { "start": { - "line": 2514, - "column": 28 + "line": 2531, + "column": 98 }, "end": { - "line": 2514, - "column": 33 + "line": 2531, + "column": 100 } } }, { "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": 91944, - "end": 91945, + "start": 92983, + "end": 92984, "loc": { "start": { - "line": 2514, - "column": 33 + "line": 2531, + "column": 101 }, "end": { - "line": 2514, - "column": 34 + "line": 2531, + "column": 102 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -331283,19 +335310,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 91946, - "end": 91949, + "value": "this", + "start": 93021, + "end": 93025, "loc": { "start": { - "line": 2514, - "column": 35 + "line": 2532, + "column": 36 }, "end": { - "line": 2514, - "column": 38 + "line": 2532, + "column": 40 } } }, @@ -331312,16 +335340,16 @@ "binop": null, "updateContext": null }, - "start": 91949, - "end": 91950, + "start": 93025, + "end": 93026, "loc": { "start": { - "line": 2514, - "column": 38 + "line": 2532, + "column": 40 }, "end": { - "line": 2514, - "column": 39 + "line": 2532, + "column": 41 } } }, @@ -331337,51 +335365,50 @@ "postfix": false, "binop": null }, - "value": "flipY", - "start": 91950, - "end": 91955, + "value": "glRedraw", + "start": 93026, + "end": 93034, "loc": { "start": { - "line": 2514, - "column": 39 + "line": 2532, + "column": 41 }, "end": { - "line": 2514, - "column": 44 + "line": 2532, + "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": 91955, - "end": 91956, + "start": 93034, + "end": 93035, "loc": { "start": { - "line": 2514, - "column": 44 + "line": 2532, + "column": 49 }, "end": { - "line": 2514, - "column": 45 + "line": 2532, + "column": 50 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -331389,17 +335416,42 @@ "postfix": false, "binop": null }, - "value": "encoding", - "start": 91985, - "end": 91993, + "start": 93035, + "end": 93036, "loc": { "start": { - "line": 2515, - "column": 28 + "line": 2532, + "column": 50 }, "end": { - "line": 2515, - "column": 36 + "line": 2532, + "column": 51 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 93036, + "end": 93037, + "loc": { + "start": { + "line": 2532, + "column": 51 + }, + "end": { + "line": 2532, + "column": 52 } } }, @@ -331415,16 +335467,16 @@ "postfix": false, "binop": null }, - "start": 92018, - "end": 92019, + "start": 93070, + "end": 93071, "loc": { "start": { - "line": 2516, - "column": 24 + "line": 2533, + "column": 32 }, "end": { - "line": 2516, - "column": 25 + "line": 2533, + "column": 33 } } }, @@ -331440,16 +335492,16 @@ "postfix": false, "binop": null }, - "start": 92019, - "end": 92020, + "start": 93071, + "end": 93072, "loc": { "start": { - "line": 2516, - "column": 25 + "line": 2533, + "column": 33 }, "end": { - "line": 2516, - "column": 26 + "line": 2533, + "column": 34 } } }, @@ -331466,51 +335518,48 @@ "binop": null, "updateContext": null }, - "start": 92020, - "end": 92021, + "start": 93072, + "end": 93073, "loc": { "start": { - "line": 2516, - "column": 26 + "line": 2533, + "column": 34 }, "end": { - "line": 2516, - "column": 27 + "line": 2533, + "column": 35 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 92046, - "end": 92050, + "start": 93102, + "end": 93103, "loc": { "start": { - "line": 2517, - "column": 24 + "line": 2534, + "column": 28 }, "end": { - "line": 2517, - "column": 28 + "line": 2534, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -331520,22 +335569,23 @@ "binop": null, "updateContext": null }, - "start": 92050, - "end": 92051, + "start": 93103, + "end": 93104, "loc": { "start": { - "line": 2517, - "column": 28 + "line": 2534, + "column": 29 }, "end": { - "line": 2517, - "column": 29 + "line": 2534, + "column": 30 } } }, { "type": { - "label": "name", + "label": "function", + "keyword": "function", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -331545,17 +335595,17 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 92051, - "end": 92059, + "value": "function", + "start": 93133, + "end": 93141, "loc": { "start": { - "line": 2517, - "column": 29 + "line": 2535, + "column": 28 }, "end": { - "line": 2517, - "column": 37 + "line": 2535, + "column": 36 } } }, @@ -331571,19 +335621,45 @@ "postfix": false, "binop": null }, - "start": 92059, - "end": 92060, + "start": 93142, + "end": 93143, "loc": { "start": { - "line": 2517, + "line": 2535, "column": 37 }, "end": { - "line": 2517, + "line": 2535, "column": 38 } } }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "errMsg", + "start": 93143, + "end": 93149, + "loc": { + "start": { + "line": 2535, + "column": 38 + }, + "end": { + "line": 2535, + "column": 44 + } + } + }, { "type": { "label": ")", @@ -331596,74 +335672,76 @@ "postfix": false, "binop": null }, - "start": 92060, - "end": 92061, + "start": 93149, + "end": 93150, "loc": { "start": { - "line": 2517, - "column": 38 + "line": 2535, + "column": 44 }, "end": { - "line": 2517, - "column": 39 + "line": 2535, + "column": 45 } } }, { "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": 92061, - "end": 92062, + "start": 93151, + "end": 93152, "loc": { "start": { - "line": 2517, - "column": 39 + "line": 2535, + "column": 46 }, "end": { - "line": 2517, - "column": 40 + "line": 2535, + "column": 47 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 92083, - "end": 92084, + "value": "this", + "start": 93185, + "end": 93189, "loc": { "start": { - "line": 2518, - "column": 20 + "line": 2536, + "column": 32 }, "end": { - "line": 2518, - "column": 21 + "line": 2536, + "column": 36 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -331673,16 +335751,16 @@ "binop": null, "updateContext": null }, - "start": 92084, - "end": 92085, + "start": 93189, + "end": 93190, "loc": { "start": { - "line": 2518, - "column": 21 + "line": 2536, + "column": 36 }, "end": { - "line": 2518, - "column": 22 + "line": 2536, + "column": 37 } } }, @@ -331698,49 +335776,48 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 92106, - "end": 92111, + "value": "error", + "start": 93190, + "end": 93195, "loc": { "start": { - "line": 2519, - "column": 20 + "line": 2536, + "column": 37 }, "end": { - "line": 2519, - "column": 25 + "line": 2536, + "column": 42 } } }, { "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": 92111, - "end": 92112, + "start": 93195, + "end": 93196, "loc": { "start": { - "line": 2519, - "column": 25 + "line": 2536, + "column": 42 }, "end": { - "line": 2519, - "column": 26 + "line": 2536, + "column": 43 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -331750,51 +335827,50 @@ "postfix": false, "binop": null }, - "value": "src", - "start": 92112, - "end": 92115, + "start": 93196, + "end": 93197, "loc": { "start": { - "line": 2519, - "column": 26 + "line": 2536, + "column": 43 }, "end": { - "line": 2519, - "column": 29 + "line": 2536, + "column": 44 } } }, { "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": 92116, - "end": 92117, + "value": "[createTexture] Can't create texture from 'src': ", + "start": 93197, + "end": 93246, "loc": { "start": { - "line": 2519, - "column": 30 + "line": 2536, + "column": 44 }, "end": { - "line": 2519, - "column": 31 + "line": 2536, + "column": 93 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -331803,51 +335879,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 92118, - "end": 92121, + "start": 93246, + "end": 93248, "loc": { "start": { - "line": 2519, - "column": 32 + "line": 2536, + "column": 93 }, "end": { - "line": 2519, - "column": 35 + "line": 2536, + "column": 95 } } }, { "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": 92121, - "end": 92122, + "value": "errMsg", + "start": 93248, + "end": 93254, "loc": { "start": { - "line": 2519, - "column": 35 + "line": 2536, + "column": 95 }, "end": { - "line": 2519, - "column": 36 + "line": 2536, + "column": 101 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -331855,24 +335930,23 @@ "postfix": false, "binop": null }, - "value": "src", - "start": 92122, - "end": 92125, + "start": 93254, + "end": 93255, "loc": { "start": { - "line": 2519, - "column": 36 + "line": 2536, + "column": 101 }, "end": { - "line": 2519, - "column": 39 + "line": 2536, + "column": 102 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -331882,39 +335956,48 @@ "binop": null, "updateContext": null }, - "start": 92125, - "end": 92126, + "value": "", + "start": 93255, + "end": 93255, "loc": { "start": { - "line": 2519, - "column": 39 + "line": 2536, + "column": 102 }, "end": { - "line": 2519, - "column": 40 + "line": 2536, + "column": 102 } } }, { - "type": "CommentLine", - "value": " URL or Base64 string", - "start": 92127, - "end": 92150, + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 93255, + "end": 93256, "loc": { "start": { - "line": 2519, - "column": 41 + "line": 2536, + "column": 102 }, "end": { - "line": 2519, - "column": 64 + "line": 2536, + "column": 103 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -331922,20 +336005,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "break", - "start": 92171, - "end": 92176, + "start": 93256, + "end": 93257, "loc": { "start": { - "line": 2520, - "column": 20 + "line": 2536, + "column": 103 }, "end": { - "line": 2520, - "column": 25 + "line": 2536, + "column": 104 } } }, @@ -331952,93 +336033,98 @@ "binop": null, "updateContext": null }, - "start": 92176, - "end": 92177, + "start": 93257, + "end": 93258, "loc": { "start": { - "line": 2520, - "column": 25 + "line": 2536, + "column": 104 }, "end": { - "line": 2520, - "column": 26 + "line": 2536, + "column": 105 } } }, { "type": { - "label": "default", - "keyword": "default", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "default", - "start": 92194, - "end": 92201, + "start": 93287, + "end": 93288, "loc": { "start": { - "line": 2521, - "column": 16 + "line": 2537, + "column": 28 }, "end": { - "line": 2521, - "column": 23 + "line": 2537, + "column": 29 } } }, { "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": 92201, - "end": 92202, + "start": 93288, + "end": 93289, "loc": { "start": { - "line": 2521, - "column": 23 + "line": 2537, + "column": 29 }, "end": { - "line": 2521, - "column": 24 + "line": 2537, + "column": 30 } } }, { - "type": "CommentLine", - "value": " Assume other file types need transcoding", - "start": 92203, - "end": 92246, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 93289, + "end": 93290, "loc": { "start": { - "line": 2521, - "column": 25 + "line": 2537, + "column": 30 }, "end": { - "line": 2521, - "column": 68 + "line": 2537, + "column": 31 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -332046,106 +336132,103 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 92267, - "end": 92269, + "start": 93311, + "end": 93312, "loc": { "start": { - "line": 2522, + "line": 2538, "column": 20 }, "end": { - "line": 2522, - "column": 22 + "line": 2538, + "column": 21 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "break", + "keyword": "break", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 92270, - "end": 92271, + "value": "break", + "start": 93333, + "end": 93338, "loc": { "start": { - "line": 2522, - "column": 23 + "line": 2539, + "column": 20 }, "end": { - "line": 2522, - "column": 24 + "line": 2539, + "column": 25 } } }, { "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": 92271, - "end": 92272, + "start": 93338, + "end": 93339, "loc": { "start": { - "line": 2522, - "column": 24 + "line": 2539, + "column": 25 }, "end": { - "line": 2522, - "column": 25 + "line": 2539, + "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 92272, - "end": 92276, + "start": 93352, + "end": 93353, "loc": { "start": { - "line": 2522, - "column": 25 + "line": 2540, + "column": 12 }, "end": { - "line": 2522, - "column": 29 + "line": 2540, + "column": 13 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -332153,51 +336236,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 92276, - "end": 92277, + "start": 93362, + "end": 93363, "loc": { "start": { - "line": 2522, - "column": 29 + "line": 2541, + "column": 8 }, "end": { - "line": 2522, - "column": 30 + "line": 2541, + "column": 9 } } }, { "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": "_textureTranscoder", - "start": 92277, - "end": 92295, + "value": "else", + "start": 93364, + "end": 93368, "loc": { "start": { - "line": 2522, - "column": 30 + "line": 2541, + "column": 10 }, "end": { - "line": 2522, - "column": 48 + "line": 2541, + "column": 14 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -332205,24 +336290,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 92295, - "end": 92296, + "value": "if", + "start": 93369, + "end": 93371, "loc": { "start": { - "line": 2522, - "column": 48 + "line": 2541, + "column": 15 }, "end": { - "line": 2522, - "column": 49 + "line": 2541, + "column": 17 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -332232,23 +336319,22 @@ "postfix": false, "binop": null }, - "start": 92297, - "end": 92298, + "start": 93372, + "end": 93373, "loc": { "start": { - "line": 2522, - "column": 50 + "line": 2541, + "column": 18 }, "end": { - "line": 2522, - "column": 51 + "line": 2541, + "column": 19 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -332256,20 +336342,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 92323, - "end": 92327, + "value": "cfg", + "start": 93373, + "end": 93376, "loc": { "start": { - "line": 2523, - "column": 24 + "line": 2541, + "column": 19 }, "end": { - "line": 2523, - "column": 28 + "line": 2541, + "column": 22 } } }, @@ -332286,16 +336371,16 @@ "binop": null, "updateContext": null }, - "start": 92327, - "end": 92328, + "start": 93376, + "end": 93377, "loc": { "start": { - "line": 2523, - "column": 28 + "line": 2541, + "column": 22 }, "end": { - "line": 2523, - "column": 29 + "line": 2541, + "column": 23 } } }, @@ -332311,25 +336396,25 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 92328, - "end": 92333, + "value": "buffers", + "start": 93377, + "end": 93384, "loc": { "start": { - "line": 2523, - "column": 29 + "line": 2541, + "column": 23 }, "end": { - "line": 2523, - "column": 34 + "line": 2541, + "column": 30 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -332337,23 +336422,23 @@ "postfix": false, "binop": null }, - "start": 92333, - "end": 92334, + "start": 93384, + "end": 93385, "loc": { "start": { - "line": 2523, - "column": 34 + "line": 2541, + "column": 30 }, "end": { - "line": 2523, - "column": 35 + "line": 2541, + "column": 31 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -332362,22 +336447,39 @@ "postfix": false, "binop": null }, - "start": 92334, - "end": 92335, + "start": 93386, + "end": 93387, "loc": { "start": { - "line": 2523, - "column": 35 + "line": 2541, + "column": 32 }, "end": { - "line": 2523, - "column": 36 + "line": 2541, + "column": 33 + } + } + }, + { + "type": "CommentLine", + "value": " Buffers implicitly require transcoding", + "start": 93388, + "end": 93429, + "loc": { + "start": { + "line": 2541, + "column": 34 + }, + "end": { + "line": 2541, + "column": 75 } } }, { "type": { - "label": "template", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -332388,23 +336490,23 @@ "binop": null, "updateContext": null }, - "value": "[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('", - "start": 92335, - "end": 92465, + "value": "if", + "start": 93442, + "end": 93444, "loc": { "start": { - "line": 2523, - "column": 36 + "line": 2542, + "column": 12 }, "end": { - "line": 2523, - "column": 166 + "line": 2542, + "column": 14 } } }, { "type": { - "label": "${", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -332414,73 +336516,77 @@ "postfix": false, "binop": null }, - "start": 92465, - "end": 92467, + "start": 93445, + "end": 93446, "loc": { "start": { - "line": 2523, - "column": 166 + "line": 2542, + "column": 15 }, "end": { - "line": 2523, - "column": 168 + "line": 2542, + "column": 16 } } }, { "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": "ext", - "start": 92467, - "end": 92470, + "value": "!", + "start": 93446, + "end": 93447, "loc": { "start": { - "line": 2523, - "column": 168 + "line": 2542, + "column": 16 }, "end": { - "line": 2523, - "column": 171 + "line": 2542, + "column": 17 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 92470, - "end": 92471, + "value": "this", + "start": 93447, + "end": 93451, "loc": { "start": { - "line": 2523, - "column": 171 + "line": 2542, + "column": 17 }, "end": { - "line": 2523, - "column": 172 + "line": 2542, + "column": 21 } } }, { "type": { - "label": "template", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -332491,23 +336597,22 @@ "binop": null, "updateContext": null }, - "value": "')", - "start": 92471, - "end": 92473, + "start": 93451, + "end": 93452, "loc": { "start": { - "line": 2523, - "column": 172 + "line": 2542, + "column": 21 }, "end": { - "line": 2523, - "column": 174 + "line": 2542, + "column": 22 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -332517,16 +336622,17 @@ "postfix": false, "binop": null }, - "start": 92473, - "end": 92474, + "value": "_textureTranscoder", + "start": 93452, + "end": 93470, "loc": { "start": { - "line": 2523, - "column": 174 + "line": 2542, + "column": 22 }, "end": { - "line": 2523, - "column": 175 + "line": 2542, + "column": 40 } } }, @@ -332542,75 +336648,76 @@ "postfix": false, "binop": null }, - "start": 92474, - "end": 92475, + "start": 93470, + "end": 93471, "loc": { "start": { - "line": 2523, - "column": 175 + "line": 2542, + "column": 40 }, "end": { - "line": 2523, - "column": 176 + "line": 2542, + "column": 41 } } }, { "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": 92475, - "end": 92476, + "start": 93472, + "end": 93473, "loc": { "start": { - "line": 2523, - "column": 176 + "line": 2542, + "column": 42 }, "end": { - "line": 2523, - "column": 177 + "line": 2542, + "column": 43 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 92497, - "end": 92498, + "value": "this", + "start": 93490, + "end": 93494, "loc": { "start": { - "line": 2524, - "column": 20 + "line": 2543, + "column": 16 }, "end": { - "line": 2524, - "column": 21 + "line": 2543, + "column": 20 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -332620,24 +336727,23 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 92499, - "end": 92503, + "start": 93494, + "end": 93495, "loc": { "start": { - "line": 2524, - "column": 22 + "line": 2543, + "column": 20 }, "end": { - "line": 2524, - "column": 26 + "line": 2543, + "column": 21 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -332646,23 +336752,24 @@ "postfix": false, "binop": null }, - "start": 92504, - "end": 92505, + "value": "error", + "start": 93495, + "end": 93500, "loc": { "start": { - "line": 2524, - "column": 27 + "line": 2543, + "column": 21 }, "end": { - "line": 2524, - "column": 28 + "line": 2543, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -332671,76 +336778,75 @@ "postfix": false, "binop": null }, - "value": "utils", - "start": 92530, - "end": 92535, + "start": 93500, + "end": 93501, "loc": { "start": { - "line": 2525, - "column": 24 + "line": 2543, + "column": 26 }, "end": { - "line": 2525, - "column": 29 + "line": 2543, + "column": 27 } } }, { "type": { - "label": ".", + "label": "`", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 92535, - "end": 92536, + "start": 93501, + "end": 93502, "loc": { "start": { - "line": 2525, - "column": 29 + "line": 2543, + "column": 27 }, "end": { - "line": 2525, - "column": 30 + "line": 2543, + "column": 28 } } }, { "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": "loadArraybuffer", - "start": 92536, - "end": 92551, + "value": "[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option", + "start": 93502, + "end": 93630, "loc": { "start": { - "line": 2525, - "column": 30 + "line": 2543, + "column": 28 }, "end": { - "line": 2525, - "column": 45 + "line": 2543, + "column": 156 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "`", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -332749,24 +336855,24 @@ "postfix": false, "binop": null }, - "start": 92551, - "end": 92552, + "start": 93630, + "end": 93631, "loc": { "start": { - "line": 2525, - "column": 45 + "line": 2543, + "column": 156 }, "end": { - "line": 2525, - "column": 46 + "line": 2543, + "column": 157 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -332774,24 +336880,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 92552, - "end": 92555, + "start": 93631, + "end": 93632, "loc": { "start": { - "line": 2525, - "column": 46 + "line": 2543, + "column": 157 }, "end": { - "line": 2525, - "column": 49 + "line": 2543, + "column": 158 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -332801,24 +336906,24 @@ "binop": null, "updateContext": null }, - "start": 92555, - "end": 92556, + "start": 93632, + "end": 93633, "loc": { "start": { - "line": 2525, - "column": 49 + "line": 2543, + "column": 158 }, "end": { - "line": 2525, - "column": 50 + "line": 2543, + "column": 159 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -332826,23 +336931,23 @@ "postfix": false, "binop": null }, - "value": "src", - "start": 92556, - "end": 92559, + "start": 93646, + "end": 93647, "loc": { "start": { - "line": 2525, - "column": 50 + "line": 2544, + "column": 12 }, "end": { - "line": 2525, - "column": 53 + "line": 2544, + "column": 13 } } }, { "type": { - "label": ",", + "label": "else", + "keyword": "else", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -332853,22 +336958,23 @@ "binop": null, "updateContext": null }, - "start": 92559, - "end": 92560, + "value": "else", + "start": 93648, + "end": 93652, "loc": { "start": { - "line": 2525, - "column": 53 + "line": 2544, + "column": 14 }, "end": { - "line": 2525, - "column": 54 + "line": 2544, + "column": 18 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -332878,22 +336984,23 @@ "postfix": false, "binop": null }, - "start": 92561, - "end": 92562, + "start": 93653, + "end": 93654, "loc": { "start": { - "line": 2525, - "column": 55 + "line": 2544, + "column": 19 }, "end": { - "line": 2525, - "column": 56 + "line": 2544, + "column": 20 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -332901,25 +337008,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "arrayBuffer", - "start": 92562, - "end": 92573, + "value": "this", + "start": 93671, + "end": 93675, "loc": { "start": { - "line": 2525, - "column": 56 + "line": 2545, + "column": 16 }, "end": { - "line": 2525, - "column": 67 + "line": 2545, + "column": 20 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -332927,51 +337035,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 92573, - "end": 92574, - "loc": { - "start": { - "line": 2525, - "column": 67 - }, - "end": { - "line": 2525, - "column": 68 - } - } - }, - { - "type": { - "label": "=>", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 92575, - "end": 92577, + "start": 93675, + "end": 93676, "loc": { "start": { - "line": 2525, - "column": 69 + "line": 2545, + "column": 20 }, "end": { - "line": 2525, - "column": 71 + "line": 2545, + "column": 21 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -332980,23 +337063,23 @@ "postfix": false, "binop": null }, - "start": 92578, - "end": 92579, + "value": "_textureTranscoder", + "start": 93676, + "end": 93694, "loc": { "start": { - "line": 2525, - "column": 72 + "line": 2545, + "column": 21 }, "end": { - "line": 2525, - "column": 73 + "line": 2545, + "column": 39 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -333007,24 +337090,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 92612, - "end": 92614, + "start": 93694, + "end": 93695, "loc": { "start": { - "line": 2526, - "column": 32 + "line": 2545, + "column": 39 }, "end": { - "line": 2526, - "column": 34 + "line": 2545, + "column": 40 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -333033,43 +337115,42 @@ "postfix": false, "binop": null }, - "start": 92615, - "end": 92616, + "value": "transcode", + "start": 93695, + "end": 93704, "loc": { "start": { - "line": 2526, - "column": 35 + "line": 2545, + "column": 40 }, "end": { - "line": 2526, - "column": 36 + "line": 2545, + "column": 49 } } }, { "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": 92616, - "end": 92617, + "start": 93704, + "end": 93705, "loc": { "start": { - "line": 2526, - "column": 36 + "line": 2545, + "column": 49 }, "end": { - "line": 2526, - "column": 37 + "line": 2545, + "column": 50 } } }, @@ -333085,17 +337166,17 @@ "postfix": false, "binop": null }, - "value": "arrayBuffer", - "start": 92617, - "end": 92628, + "value": "cfg", + "start": 93705, + "end": 93708, "loc": { "start": { - "line": 2526, - "column": 37 + "line": 2545, + "column": 50 }, "end": { - "line": 2526, - "column": 48 + "line": 2545, + "column": 53 } } }, @@ -333112,16 +337193,16 @@ "binop": null, "updateContext": null }, - "start": 92628, - "end": 92629, + "start": 93708, + "end": 93709, "loc": { "start": { - "line": 2526, - "column": 48 + "line": 2545, + "column": 53 }, "end": { - "line": 2526, - "column": 49 + "line": 2545, + "column": 54 } } }, @@ -333137,49 +337218,50 @@ "postfix": false, "binop": null }, - "value": "byteLength", - "start": 92629, - "end": 92639, + "value": "buffers", + "start": 93709, + "end": 93716, "loc": { "start": { - "line": 2526, - "column": 49 + "line": 2545, + "column": 54 }, "end": { - "line": 2526, - "column": 59 + "line": 2545, + "column": 61 } } }, { "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": 92639, - "end": 92640, + "start": 93716, + "end": 93717, "loc": { "start": { - "line": 2526, - "column": 59 + "line": 2545, + "column": 61 }, "end": { - "line": 2526, - "column": 60 + "line": 2545, + "column": 62 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -333188,44 +337270,42 @@ "postfix": false, "binop": null }, - "start": 92641, - "end": 92642, + "value": "texture", + "start": 93718, + "end": 93725, "loc": { "start": { - "line": 2526, - "column": 61 + "line": 2545, + "column": 63 }, "end": { - "line": 2526, - "column": 62 + "line": 2545, + "column": 70 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 92679, - "end": 92683, + "start": 93725, + "end": 93726, "loc": { "start": { - "line": 2527, - "column": 36 + "line": 2545, + "column": 70 }, "end": { - "line": 2527, - "column": 40 + "line": 2545, + "column": 71 } } }, @@ -333242,16 +337322,16 @@ "binop": null, "updateContext": null }, - "start": 92683, - "end": 92684, + "start": 93726, + "end": 93727, "loc": { "start": { - "line": 2527, - "column": 40 + "line": 2545, + "column": 71 }, "end": { - "line": 2527, - "column": 41 + "line": 2545, + "column": 72 } } }, @@ -333267,17 +337347,17 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 92684, - "end": 92689, + "value": "then", + "start": 93727, + "end": 93731, "loc": { "start": { - "line": 2527, - "column": 41 + "line": 2545, + "column": 72 }, "end": { - "line": 2527, - "column": 46 + "line": 2545, + "column": 76 } } }, @@ -333293,23 +337373,23 @@ "postfix": false, "binop": null }, - "start": 92689, - "end": 92690, + "start": 93731, + "end": 93732, "loc": { "start": { - "line": 2527, - "column": 46 + "line": 2545, + "column": 76 }, "end": { - "line": 2527, - "column": 47 + "line": 2545, + "column": 77 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -333318,22 +337398,22 @@ "postfix": false, "binop": null }, - "start": 92690, - "end": 92691, + "start": 93732, + "end": 93733, "loc": { "start": { - "line": 2527, - "column": 47 + "line": 2545, + "column": 77 }, "end": { - "line": 2527, - "column": 48 + "line": 2545, + "column": 78 } } }, { "type": { - "label": "template", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -333341,27 +337421,51 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 93733, + "end": 93734, + "loc": { + "start": { + "line": 2545, + "column": 78 + }, + "end": { + "line": 2545, + "column": 79 + } + } + }, + { + "type": { + "label": "=>", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": "[createTexture] Can't create texture from 'src': file data is zero length", - "start": 92691, - "end": 92764, + "start": 93735, + "end": 93737, "loc": { "start": { - "line": 2527, - "column": 48 + "line": 2545, + "column": 80 }, "end": { - "line": 2527, - "column": 121 + "line": 2545, + "column": 82 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -333370,48 +337474,51 @@ "postfix": false, "binop": null }, - "start": 92764, - "end": 92765, + "start": 93738, + "end": 93739, "loc": { "start": { - "line": 2527, - "column": 121 + "line": 2545, + "column": 83 }, "end": { - "line": 2527, - "column": 122 + "line": 2545, + "column": 84 } } }, { "type": { - "label": ")", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 92765, - "end": 92766, + "value": "this", + "start": 93760, + "end": 93764, "loc": { "start": { - "line": 2527, - "column": 122 + "line": 2546, + "column": 20 }, "end": { - "line": 2527, - "column": 123 + "line": 2546, + "column": 24 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -333421,76 +337528,73 @@ "binop": null, "updateContext": null }, - "start": 92766, - "end": 92767, + "start": 93764, + "end": 93765, "loc": { "start": { - "line": 2527, - "column": 123 + "line": 2546, + "column": 24 }, "end": { - "line": 2527, - "column": 124 + "line": 2546, + "column": 25 } } }, { "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": 92804, - "end": 92810, + "value": "glRedraw", + "start": 93765, + "end": 93773, "loc": { "start": { - "line": 2528, - "column": 36 + "line": 2546, + "column": 25 }, "end": { - "line": 2528, - "column": 42 + "line": 2546, + "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": 92810, - "end": 92811, + "start": 93773, + "end": 93774, "loc": { "start": { - "line": 2528, - "column": 42 + "line": 2546, + "column": 33 }, "end": { - "line": 2528, - "column": 43 + "line": 2546, + "column": 34 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -333500,25 +337604,24 @@ "postfix": false, "binop": null }, - "start": 92844, - "end": 92845, + "start": 93774, + "end": 93775, "loc": { "start": { - "line": 2529, - "column": 32 + "line": 2546, + "column": 34 }, "end": { - "line": 2529, - "column": 33 + "line": 2546, + "column": 35 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -333527,23 +337630,22 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 92878, - "end": 92882, + "start": 93775, + "end": 93776, "loc": { "start": { - "line": 2530, - "column": 32 + "line": 2546, + "column": 35 }, "end": { - "line": 2530, + "line": 2546, "column": 36 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -333551,27 +337653,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 92882, - "end": 92883, + "start": 93793, + "end": 93794, "loc": { "start": { - "line": 2530, - "column": 36 + "line": 2547, + "column": 16 }, "end": { - "line": 2530, - "column": 37 + "line": 2547, + "column": 17 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -333579,24 +337680,23 @@ "postfix": false, "binop": null }, - "value": "_textureTranscoder", - "start": 92883, - "end": 92901, + "start": 93794, + "end": 93795, "loc": { "start": { - "line": 2530, - "column": 37 + "line": 2547, + "column": 17 }, "end": { - "line": 2530, - "column": 55 + "line": 2547, + "column": 18 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -333606,24 +337706,24 @@ "binop": null, "updateContext": null }, - "start": 92901, - "end": 92902, + "start": 93795, + "end": 93796, "loc": { "start": { - "line": 2530, - "column": 55 + "line": 2547, + "column": 18 }, "end": { - "line": 2530, - "column": 56 + "line": 2547, + "column": 19 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -333631,25 +337731,24 @@ "postfix": false, "binop": null }, - "value": "transcode", - "start": 92902, - "end": 92911, + "start": 93809, + "end": 93810, "loc": { "start": { - "line": 2530, - "column": 56 + "line": 2548, + "column": 12 }, "end": { - "line": 2530, - "column": 65 + "line": 2548, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -333657,23 +337756,24 @@ "postfix": false, "binop": null }, - "start": 92911, - "end": 92912, + "start": 93819, + "end": 93820, "loc": { "start": { - "line": 2530, - "column": 65 + "line": 2549, + "column": 8 }, "end": { - "line": 2530, - "column": 66 + "line": 2549, + "column": 9 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -333683,76 +337783,77 @@ "binop": null, "updateContext": null }, - "start": 92912, - "end": 92913, + "value": "this", + "start": 93829, + "end": 93833, "loc": { "start": { - "line": 2530, - "column": 66 + "line": 2550, + "column": 8 }, "end": { - "line": 2530, - "column": 67 + "line": 2550, + "column": 12 } } }, { "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": "arrayBuffer", - "start": 92913, - "end": 92924, + "start": 93833, + "end": 93834, "loc": { "start": { - "line": 2530, - "column": 67 + "line": 2550, + "column": 12 }, "end": { - "line": 2530, - "column": 78 + "line": 2550, + "column": 13 } } }, { "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": 92924, - "end": 92925, + "value": "_textures", + "start": 93834, + "end": 93843, "loc": { "start": { - "line": 2530, - "column": 78 + "line": 2550, + "column": 13 }, "end": { - "line": 2530, - "column": 79 + "line": 2550, + "column": 22 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -333761,16 +337862,16 @@ "binop": null, "updateContext": null }, - "start": 92925, - "end": 92926, + "start": 93843, + "end": 93844, "loc": { "start": { - "line": 2530, - "column": 79 + "line": 2550, + "column": 22 }, "end": { - "line": 2530, - "column": 80 + "line": 2550, + "column": 23 } } }, @@ -333786,23 +337887,23 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 92927, - "end": 92934, + "value": "textureId", + "start": 93844, + "end": 93853, "loc": { "start": { - "line": 2530, - "column": 81 + "line": 2550, + "column": 23 }, "end": { - "line": 2530, - "column": 88 + "line": 2550, + "column": 32 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -333810,77 +337911,81 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 92934, - "end": 92935, + "start": 93853, + "end": 93854, "loc": { "start": { - "line": 2530, - "column": 88 + "line": 2550, + "column": 32 }, "end": { - "line": 2530, - "column": 89 + "line": 2550, + "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": 92935, - "end": 92936, + "value": "=", + "start": 93855, + "end": 93856, "loc": { "start": { - "line": 2530, - "column": 89 + "line": 2550, + "column": 34 }, "end": { - "line": 2530, - "column": 90 + "line": 2550, + "column": 35 } } }, { "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": "then", - "start": 92936, - "end": 92940, + "value": "new", + "start": 93857, + "end": 93860, "loc": { "start": { - "line": 2530, - "column": 90 + "line": 2550, + "column": 36 }, "end": { - "line": 2530, - "column": 94 + "line": 2550, + "column": 39 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -333889,16 +337994,17 @@ "postfix": false, "binop": null }, - "start": 92940, - "end": 92941, + "value": "SceneModelTexture", + "start": 93861, + "end": 93878, "loc": { "start": { - "line": 2530, - "column": 94 + "line": 2550, + "column": 40 }, "end": { - "line": 2530, - "column": 95 + "line": 2550, + "column": 57 } } }, @@ -333914,24 +338020,24 @@ "postfix": false, "binop": null }, - "start": 92941, - "end": 92942, + "start": 93878, + "end": 93879, "loc": { "start": { - "line": 2530, - "column": 95 + "line": 2550, + "column": 57 }, "end": { - "line": 2530, - "column": 96 + "line": 2550, + "column": 58 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -333939,74 +338045,74 @@ "postfix": false, "binop": null }, - "start": 92942, - "end": 92943, + "start": 93879, + "end": 93880, "loc": { "start": { - "line": 2530, - "column": 96 + "line": 2550, + "column": 58 }, "end": { - "line": 2530, - "column": 97 + "line": 2550, + "column": 59 } } }, { "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": 92944, - "end": 92946, + "value": "id", + "start": 93880, + "end": 93882, "loc": { "start": { - "line": 2530, - "column": 98 + "line": 2550, + "column": 59 }, "end": { - "line": 2530, - "column": 100 + "line": 2550, + "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": 92947, - "end": 92948, + "start": 93882, + "end": 93883, "loc": { "start": { - "line": 2530, - "column": 101 + "line": 2550, + "column": 61 }, "end": { - "line": 2530, - "column": 102 + "line": 2550, + "column": 62 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -334014,27 +338120,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 92985, - "end": 92989, + "value": "textureId", + "start": 93884, + "end": 93893, "loc": { "start": { - "line": 2531, - "column": 36 + "line": 2550, + "column": 63 }, "end": { - "line": 2531, - "column": 40 + "line": 2550, + "column": 72 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -334044,16 +338149,16 @@ "binop": null, "updateContext": null }, - "start": 92989, - "end": 92990, + "start": 93893, + "end": 93894, "loc": { "start": { - "line": 2531, - "column": 40 + "line": 2550, + "column": 72 }, "end": { - "line": 2531, - "column": 41 + "line": 2550, + "column": 73 } } }, @@ -334069,25 +338174,25 @@ "postfix": false, "binop": null }, - "value": "glRedraw", - "start": 92990, - "end": 92998, + "value": "texture", + "start": 93895, + "end": 93902, "loc": { "start": { - "line": 2531, - "column": 41 + "line": 2550, + "column": 74 }, "end": { - "line": 2531, - "column": 49 + "line": 2550, + "column": 81 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -334095,16 +338200,16 @@ "postfix": false, "binop": null }, - "start": 92998, - "end": 92999, + "start": 93902, + "end": 93903, "loc": { "start": { - "line": 2531, - "column": 49 + "line": 2550, + "column": 81 }, "end": { - "line": 2531, - "column": 50 + "line": 2550, + "column": 82 } } }, @@ -334120,16 +338225,16 @@ "postfix": false, "binop": null }, - "start": 92999, - "end": 93000, + "start": 93903, + "end": 93904, "loc": { "start": { - "line": 2531, - "column": 50 + "line": 2550, + "column": 82 }, "end": { - "line": 2531, - "column": 51 + "line": 2550, + "column": 83 } } }, @@ -334146,16 +338251,16 @@ "binop": null, "updateContext": null }, - "start": 93000, - "end": 93001, + "start": 93904, + "end": 93905, "loc": { "start": { - "line": 2531, - "column": 51 + "line": 2550, + "column": 83 }, "end": { - "line": 2531, - "column": 52 + "line": 2550, + "column": 84 } } }, @@ -334171,24 +338276,40 @@ "postfix": false, "binop": null }, - "start": 93034, - "end": 93035, + "start": 93910, + "end": 93911, "loc": { "start": { - "line": 2532, - "column": 32 + "line": 2551, + "column": 4 }, "end": { - "line": 2532, - "column": 33 + "line": 2551, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Creates a texture set within this SceneModel.\n *\n * * Stores the new {@link SceneModelTextureSet} in {@link SceneModel#textureSets}.\n *\n * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set\n * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set.\n *\n * The textures can work as a texture atlas, where each mesh can have geometry UVs that index\n * a different part of the textures. This allows us to minimize the number of textures in our models, which\n * means faster rendering.\n *\n * @param {*} cfg Texture set properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}.\n * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*.\n * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*.\n * @param {*} [cfg.emissiveTextureId] ID of *RGBA* emissive map texture, with emissive color in *RGB*.\n * @param {*} [cfg.occlusionTextureId] ID of *RGBA* occlusion map texture, with occlusion factor in *R*.\n * @returns {SceneModelTransform} The new texture set.\n ", + "start": 93917, + "end": 95363, + "loc": { + "start": { + "line": 2553, + "column": 4 + }, + "end": { + "line": 2573, + "column": 7 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -334196,50 +338317,50 @@ "postfix": false, "binop": null }, - "start": 93035, - "end": 93036, + "value": "createTextureSet", + "start": 95368, + "end": 95384, "loc": { "start": { - "line": 2532, - "column": 33 + "line": 2574, + "column": 4 }, "end": { - "line": 2532, - "column": 34 + "line": 2574, + "column": 20 } } }, { "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": 93036, - "end": 93037, + "start": 95384, + "end": 95385, "loc": { "start": { - "line": 2532, - "column": 34 + "line": 2574, + "column": 20 }, "end": { - "line": 2532, - "column": 35 + "line": 2574, + "column": 21 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -334247,50 +338368,49 @@ "postfix": false, "binop": null }, - "start": 93066, - "end": 93067, + "value": "cfg", + "start": 95385, + "end": 95388, "loc": { "start": { - "line": 2533, - "column": 28 + "line": 2574, + "column": 21 }, "end": { - "line": 2533, - "column": 29 + "line": 2574, + "column": 24 } } }, { "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": 93067, - "end": 93068, + "start": 95388, + "end": 95389, "loc": { "start": { - "line": 2533, - "column": 29 + "line": 2574, + "column": 24 }, "end": { - "line": 2533, - "column": 30 + "line": 2574, + "column": 25 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -334299,42 +338419,44 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 93097, - "end": 93105, + "start": 95390, + "end": 95391, "loc": { "start": { - "line": 2534, - "column": 28 + "line": 2574, + "column": 26 }, "end": { - "line": 2534, - "column": 36 + "line": 2574, + "column": 27 } } }, { "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": 93106, - "end": 93107, + "value": "const", + "start": 95400, + "end": 95405, "loc": { "start": { - "line": 2534, - "column": 37 + "line": 2575, + "column": 8 }, "end": { - "line": 2534, - "column": 38 + "line": 2575, + "column": 13 } } }, @@ -334350,49 +338472,51 @@ "postfix": false, "binop": null }, - "value": "errMsg", - "start": 93107, - "end": 93113, + "value": "textureSetId", + "start": 95406, + "end": 95418, "loc": { "start": { - "line": 2534, - "column": 38 + "line": 2575, + "column": 14 }, "end": { - "line": 2534, - "column": 44 + "line": 2575, + "column": 26 } } }, { "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": 93113, - "end": 93114, + "value": "=", + "start": 95419, + "end": 95420, "loc": { "start": { - "line": 2534, - "column": 44 + "line": 2575, + "column": 27 }, "end": { - "line": 2534, - "column": 45 + "line": 2575, + "column": 28 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -334401,25 +338525,25 @@ "postfix": false, "binop": null }, - "start": 93115, - "end": 93116, + "value": "cfg", + "start": 95421, + "end": 95424, "loc": { "start": { - "line": 2534, - "column": 46 + "line": 2575, + "column": 29 }, "end": { - "line": 2534, - "column": 47 + "line": 2575, + "column": 32 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -334428,24 +338552,49 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 93149, - "end": 93153, + "start": 95424, + "end": 95425, "loc": { "start": { - "line": 2535, + "line": 2575, "column": 32 }, "end": { - "line": 2535, - "column": 36 + "line": 2575, + "column": 33 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "id", + "start": 95425, + "end": 95427, + "loc": { + "start": { + "line": 2575, + "column": 33 + }, + "end": { + "line": 2575, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -334455,42 +338604,44 @@ "binop": null, "updateContext": null }, - "start": 93153, - "end": 93154, + "start": 95427, + "end": 95428, "loc": { "start": { - "line": 2535, - "column": 36 + "line": 2575, + "column": 35 }, "end": { - "line": 2535, - "column": 37 + "line": 2575, + "column": 36 } } }, { "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": "error", - "start": 93154, - "end": 93159, + "value": "if", + "start": 95437, + "end": 95439, "loc": { "start": { - "line": 2535, - "column": 37 + "line": 2576, + "column": 8 }, "end": { - "line": 2535, - "column": 42 + "line": 2576, + "column": 10 } } }, @@ -334506,22 +338657,22 @@ "postfix": false, "binop": null }, - "start": 93159, - "end": 93160, + "start": 95440, + "end": 95441, "loc": { "start": { - "line": 2535, - "column": 42 + "line": 2576, + "column": 11 }, "end": { - "line": 2535, - "column": 43 + "line": 2576, + "column": 12 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -334531,50 +338682,51 @@ "postfix": false, "binop": null }, - "start": 93160, - "end": 93161, + "value": "textureSetId", + "start": 95441, + "end": 95453, "loc": { "start": { - "line": 2535, - "column": 43 + "line": 2576, + "column": 12 }, "end": { - "line": 2535, - "column": 44 + "line": 2576, + "column": 24 } } }, { "type": { - "label": "template", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "[createTexture] Can't create texture from 'src': ", - "start": 93161, - "end": 93210, + "value": "===", + "start": 95454, + "end": 95457, "loc": { "start": { - "line": 2535, - "column": 44 + "line": 2576, + "column": 25 }, "end": { - "line": 2535, - "column": 93 + "line": 2576, + "column": 28 } } }, { "type": { - "label": "${", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -334583,50 +338735,52 @@ "postfix": false, "binop": null }, - "start": 93210, - "end": 93212, + "value": "undefined", + "start": 95458, + "end": 95467, "loc": { "start": { - "line": 2535, - "column": 93 + "line": 2576, + "column": 29 }, "end": { - "line": 2535, - "column": 95 + "line": 2576, + "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": 1, + "updateContext": null }, - "value": "errMsg", - "start": 93212, - "end": 93218, + "value": "||", + "start": 95468, + "end": 95470, "loc": { "start": { - "line": 2535, - "column": 95 + "line": 2576, + "column": 39 }, "end": { - "line": 2535, - "column": 101 + "line": 2576, + "column": 41 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -334634,49 +338788,51 @@ "postfix": false, "binop": null }, - "start": 93218, - "end": 93219, + "value": "textureSetId", + "start": 95471, + "end": 95483, "loc": { "start": { - "line": 2535, - "column": 101 + "line": 2576, + "column": 42 }, "end": { - "line": 2535, - "column": 102 + "line": 2576, + "column": 54 } } }, { "type": { - "label": "template", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "", - "start": 93219, - "end": 93219, + "value": "===", + "start": 95484, + "end": 95487, "loc": { "start": { - "line": 2535, - "column": 102 + "line": 2576, + "column": 55 }, "end": { - "line": 2535, - "column": 102 + "line": 2576, + "column": 58 } } }, { "type": { - "label": "`", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -334684,18 +338840,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 93219, - "end": 93220, + "value": "null", + "start": 95488, + "end": 95492, "loc": { "start": { - "line": 2535, - "column": 102 + "line": 2576, + "column": 59 }, "end": { - "line": 2535, - "column": 103 + "line": 2576, + "column": 63 } } }, @@ -334711,24 +338869,50 @@ "postfix": false, "binop": null }, - "start": 93220, - "end": 93221, + "start": 95492, + "end": 95493, "loc": { "start": { - "line": 2535, - "column": 103 + "line": 2576, + "column": 63 }, "end": { - "line": 2535, - "column": 104 + "line": 2576, + "column": 64 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 95494, + "end": 95495, + "loc": { + "start": { + "line": 2576, + "column": 65 + }, + "end": { + "line": 2576, + "column": 66 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -334737,22 +338921,23 @@ "binop": null, "updateContext": null }, - "start": 93221, - "end": 93222, + "value": "this", + "start": 95508, + "end": 95512, "loc": { "start": { - "line": 2535, - "column": 104 + "line": 2577, + "column": 12 }, "end": { - "line": 2535, - "column": 105 + "line": 2577, + "column": 16 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -334760,26 +338945,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 93251, - "end": 93252, + "start": 95512, + "end": 95513, "loc": { "start": { - "line": 2536, - "column": 28 + "line": 2577, + "column": 16 }, "end": { - "line": 2536, - "column": 29 + "line": 2577, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -334787,74 +338973,75 @@ "postfix": false, "binop": null }, - "start": 93252, - "end": 93253, + "value": "error", + "start": 95513, + "end": 95518, "loc": { "start": { - "line": 2536, - "column": 29 + "line": 2577, + "column": 17 }, "end": { - "line": 2536, - "column": 30 + "line": 2577, + "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": 93253, - "end": 93254, + "start": 95518, + "end": 95519, "loc": { "start": { - "line": 2536, - "column": 30 + "line": 2577, + "column": 22 }, "end": { - "line": 2536, - "column": 31 + "line": 2577, + "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": 93275, - "end": 93276, + "value": "[createTextureSet] Config missing: id", + "start": 95519, + "end": 95558, "loc": { "start": { - "line": 2537, - "column": 20 + "line": 2577, + "column": 23 }, "end": { - "line": 2537, - "column": 21 + "line": 2577, + "column": 62 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -334862,20 +339049,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "break", - "start": 93297, - "end": 93302, + "start": 95558, + "end": 95559, "loc": { "start": { - "line": 2538, - "column": 20 + "line": 2577, + "column": 62 }, "end": { - "line": 2538, - "column": 25 + "line": 2577, + "column": 63 } } }, @@ -334892,94 +339077,95 @@ "binop": null, "updateContext": null }, - "start": 93302, - "end": 93303, + "start": 95559, + "end": 95560, "loc": { "start": { - "line": 2538, - "column": 25 + "line": 2577, + "column": 63 }, "end": { - "line": 2538, - "column": 26 + "line": 2577, + "column": 64 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 93316, - "end": 93317, + "value": "return", + "start": 95573, + "end": 95579, "loc": { "start": { - "line": 2539, + "line": 2578, "column": 12 }, "end": { - "line": 2539, - "column": 13 + "line": 2578, + "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": 93326, - "end": 93327, + "start": 95579, + "end": 95580, "loc": { "start": { - "line": 2540, - "column": 8 + "line": 2578, + "column": 18 }, "end": { - "line": 2540, - "column": 9 + "line": 2578, + "column": 19 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "else", - "start": 93328, - "end": 93332, + "start": 95589, + "end": 95590, "loc": { "start": { - "line": 2540, - "column": 10 + "line": 2579, + "column": 8 }, "end": { - "line": 2540, - "column": 14 + "line": 2579, + "column": 9 } } }, @@ -334998,16 +339184,16 @@ "updateContext": null }, "value": "if", - "start": 93333, - "end": 93335, + "start": 95599, + "end": 95601, "loc": { "start": { - "line": 2540, - "column": 15 + "line": 2580, + "column": 8 }, "end": { - "line": 2540, - "column": 17 + "line": 2580, + "column": 10 } } }, @@ -335023,22 +339209,23 @@ "postfix": false, "binop": null }, - "start": 93336, - "end": 93337, + "start": 95602, + "end": 95603, "loc": { "start": { - "line": 2540, - "column": 18 + "line": 2580, + "column": 11 }, "end": { - "line": 2540, - "column": 19 + "line": 2580, + "column": 12 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -335046,19 +339233,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 93337, - "end": 93340, + "value": "this", + "start": 95603, + "end": 95607, "loc": { "start": { - "line": 2540, - "column": 19 + "line": 2580, + "column": 12 }, "end": { - "line": 2540, - "column": 22 + "line": 2580, + "column": 16 } } }, @@ -335075,16 +339263,16 @@ "binop": null, "updateContext": null }, - "start": 93340, - "end": 93341, + "start": 95607, + "end": 95608, "loc": { "start": { - "line": 2540, - "column": 22 + "line": 2580, + "column": 16 }, "end": { - "line": 2540, - "column": 23 + "line": 2580, + "column": 17 } } }, @@ -335100,49 +339288,50 @@ "postfix": false, "binop": null }, - "value": "buffers", - "start": 93341, - "end": 93348, + "value": "_textureSets", + "start": 95608, + "end": 95620, "loc": { "start": { - "line": 2540, - "column": 23 + "line": 2580, + "column": 17 }, "end": { - "line": 2540, - "column": 30 + "line": 2580, + "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 + "binop": null, + "updateContext": null }, - "start": 93348, - "end": 93349, + "start": 95620, + "end": 95621, "loc": { "start": { - "line": 2540, - "column": 30 + "line": 2580, + "column": 29 }, "end": { - "line": 2540, - "column": 31 + "line": 2580, + "column": 30 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -335151,39 +339340,23 @@ "postfix": false, "binop": null }, - "start": 93350, - "end": 93351, - "loc": { - "start": { - "line": 2540, - "column": 32 - }, - "end": { - "line": 2540, - "column": 33 - } - } - }, - { - "type": "CommentLine", - "value": " Buffers implicitly require transcoding", - "start": 93352, - "end": 93393, + "value": "textureSetId", + "start": 95621, + "end": 95633, "loc": { "start": { - "line": 2540, - "column": 34 + "line": 2580, + "column": 30 }, "end": { - "line": 2540, - "column": 75 + "line": 2580, + "column": 42 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -335194,25 +339367,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 93406, - "end": 93408, + "start": 95633, + "end": 95634, "loc": { "start": { - "line": 2541, - "column": 12 + "line": 2580, + "column": 42 }, "end": { - "line": 2541, - "column": 14 + "line": 2580, + "column": 43 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -335220,43 +339392,41 @@ "postfix": false, "binop": null }, - "start": 93409, - "end": 93410, + "start": 95634, + "end": 95635, "loc": { "start": { - "line": 2541, - "column": 15 + "line": 2580, + "column": 43 }, "end": { - "line": 2541, - "column": 16 + "line": 2580, + "column": 44 } } }, { "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": 93410, - "end": 93411, + "start": 95636, + "end": 95637, "loc": { "start": { - "line": 2541, - "column": 16 + "line": 2580, + "column": 45 }, "end": { - "line": 2541, - "column": 17 + "line": 2580, + "column": 46 } } }, @@ -335275,16 +339445,16 @@ "updateContext": null }, "value": "this", - "start": 93411, - "end": 93415, + "start": 95650, + "end": 95654, "loc": { "start": { - "line": 2541, - "column": 17 + "line": 2581, + "column": 12 }, "end": { - "line": 2541, - "column": 21 + "line": 2581, + "column": 16 } } }, @@ -335301,16 +339471,16 @@ "binop": null, "updateContext": null }, - "start": 93415, - "end": 93416, + "start": 95654, + "end": 95655, "loc": { "start": { - "line": 2541, - "column": 21 + "line": 2581, + "column": 16 }, "end": { - "line": 2541, - "column": 22 + "line": 2581, + "column": 17 } } }, @@ -335326,48 +339496,23 @@ "postfix": false, "binop": null }, - "value": "_textureTranscoder", - "start": 93416, - "end": 93434, - "loc": { - "start": { - "line": 2541, - "column": 22 - }, - "end": { - "line": 2541, - "column": 40 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 93434, - "end": 93435, + "value": "error", + "start": 95655, + "end": 95660, "loc": { "start": { - "line": 2541, - "column": 40 + "line": 2581, + "column": 17 }, "end": { - "line": 2541, - "column": 41 + "line": 2581, + "column": 22 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -335377,23 +339522,22 @@ "postfix": false, "binop": null }, - "start": 93436, - "end": 93437, + "start": 95660, + "end": 95661, "loc": { "start": { - "line": 2541, - "column": 42 + "line": 2581, + "column": 22 }, "end": { - "line": 2541, - "column": 43 + "line": 2581, + "column": 23 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -335401,26 +339545,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 93454, - "end": 93458, + "start": 95661, + "end": 95662, "loc": { "start": { - "line": 2542, - "column": 16 + "line": 2581, + "column": 23 }, "end": { - "line": 2542, - "column": 20 + "line": 2581, + "column": 24 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -335431,23 +339573,24 @@ "binop": null, "updateContext": null }, - "start": 93458, - "end": 93459, + "value": "[createTextureSet] Texture set already created: ", + "start": 95662, + "end": 95710, "loc": { "start": { - "line": 2542, - "column": 20 + "line": 2581, + "column": 24 }, "end": { - "line": 2542, - "column": 21 + "line": 2581, + "column": 72 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -335456,24 +339599,23 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 93459, - "end": 93464, + "start": 95710, + "end": 95712, "loc": { "start": { - "line": 2542, - "column": 21 + "line": 2581, + "column": 72 }, "end": { - "line": 2542, - "column": 26 + "line": 2581, + "column": 74 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -335482,24 +339624,25 @@ "postfix": false, "binop": null }, - "start": 93464, - "end": 93465, + "value": "textureSetId", + "start": 95712, + "end": 95724, "loc": { "start": { - "line": 2542, - "column": 26 + "line": 2581, + "column": 74 }, "end": { - "line": 2542, - "column": 27 + "line": 2581, + "column": 86 } } }, { "type": { - "label": "`", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -335507,16 +339650,16 @@ "postfix": false, "binop": null }, - "start": 93465, - "end": 93466, + "start": 95724, + "end": 95725, "loc": { "start": { - "line": 2542, - "column": 27 + "line": 2581, + "column": 86 }, "end": { - "line": 2542, - "column": 28 + "line": 2581, + "column": 87 } } }, @@ -335533,17 +339676,17 @@ "binop": null, "updateContext": null }, - "value": "[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option", - "start": 93466, - "end": 93594, + "value": "", + "start": 95725, + "end": 95725, "loc": { "start": { - "line": 2542, - "column": 28 + "line": 2581, + "column": 87 }, "end": { - "line": 2542, - "column": 156 + "line": 2581, + "column": 87 } } }, @@ -335559,16 +339702,16 @@ "postfix": false, "binop": null }, - "start": 93594, - "end": 93595, + "start": 95725, + "end": 95726, "loc": { "start": { - "line": 2542, - "column": 156 + "line": 2581, + "column": 87 }, "end": { - "line": 2542, - "column": 157 + "line": 2581, + "column": 88 } } }, @@ -335584,16 +339727,16 @@ "postfix": false, "binop": null }, - "start": 93595, - "end": 93596, + "start": 95726, + "end": 95727, "loc": { "start": { - "line": 2542, - "column": 157 + "line": 2581, + "column": 88 }, "end": { - "line": 2542, - "column": 158 + "line": 2581, + "column": 89 } } }, @@ -335610,48 +339753,23 @@ "binop": null, "updateContext": null }, - "start": 93596, - "end": 93597, - "loc": { - "start": { - "line": 2542, - "column": 158 - }, - "end": { - "line": 2542, - "column": 159 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 93610, - "end": 93611, + "start": 95727, + "end": 95728, "loc": { "start": { - "line": 2543, - "column": 12 + "line": 2581, + "column": 89 }, "end": { - "line": 2543, - "column": 13 + "line": 2581, + "column": 90 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -335662,76 +339780,75 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 93612, - "end": 93616, + "value": "return", + "start": 95741, + "end": 95747, "loc": { "start": { - "line": 2543, - "column": 14 + "line": 2582, + "column": 12 }, "end": { - "line": 2543, + "line": 2582, "column": 18 } } }, { "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": 93617, - "end": 93618, + "start": 95747, + "end": 95748, "loc": { "start": { - "line": 2543, - "column": 19 + "line": 2582, + "column": 18 }, "end": { - "line": 2543, - "column": 20 + "line": 2582, + "column": 19 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 93635, - "end": 93639, + "start": 95757, + "end": 95758, "loc": { "start": { - "line": 2544, - "column": 16 + "line": 2583, + "column": 8 }, "end": { - "line": 2544, - "column": 20 + "line": 2583, + "column": 9 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -335742,16 +339859,17 @@ "binop": null, "updateContext": null }, - "start": 93639, - "end": 93640, + "value": "let", + "start": 95767, + "end": 95770, "loc": { "start": { - "line": 2544, - "column": 20 + "line": 2584, + "column": 8 }, "end": { - "line": 2544, - "column": 21 + "line": 2584, + "column": 11 } } }, @@ -335767,24 +339885,24 @@ "postfix": false, "binop": null }, - "value": "_textureTranscoder", - "start": 93640, - "end": 93658, + "value": "colorTexture", + "start": 95771, + "end": 95783, "loc": { "start": { - "line": 2544, - "column": 21 + "line": 2584, + "column": 12 }, "end": { - "line": 2544, - "column": 39 + "line": 2584, + "column": 24 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -335794,42 +339912,44 @@ "binop": null, "updateContext": null }, - "start": 93658, - "end": 93659, + "start": 95783, + "end": 95784, "loc": { "start": { - "line": 2544, - "column": 39 + "line": 2584, + "column": 24 }, "end": { - "line": 2544, - "column": 40 + "line": 2584, + "column": 25 } } }, { "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": "transcode", - "start": 93659, - "end": 93668, + "value": "if", + "start": 95793, + "end": 95795, "loc": { "start": { - "line": 2544, - "column": 40 + "line": 2585, + "column": 8 }, "end": { - "line": 2544, - "column": 49 + "line": 2585, + "column": 10 } } }, @@ -335845,16 +339965,16 @@ "postfix": false, "binop": null }, - "start": 93668, - "end": 93669, + "start": 95796, + "end": 95797, "loc": { "start": { - "line": 2544, - "column": 49 + "line": 2585, + "column": 11 }, "end": { - "line": 2544, - "column": 50 + "line": 2585, + "column": 12 } } }, @@ -335871,16 +339991,16 @@ "binop": null }, "value": "cfg", - "start": 93669, - "end": 93672, + "start": 95797, + "end": 95800, "loc": { "start": { - "line": 2544, - "column": 50 + "line": 2585, + "column": 12 }, "end": { - "line": 2544, - "column": 53 + "line": 2585, + "column": 15 } } }, @@ -335897,16 +340017,16 @@ "binop": null, "updateContext": null }, - "start": 93672, - "end": 93673, + "start": 95800, + "end": 95801, "loc": { "start": { - "line": 2544, - "column": 53 + "line": 2585, + "column": 15 }, "end": { - "line": 2544, - "column": 54 + "line": 2585, + "column": 16 } } }, @@ -335922,23 +340042,23 @@ "postfix": false, "binop": null }, - "value": "buffers", - "start": 93673, - "end": 93680, + "value": "colorTextureId", + "start": 95801, + "end": 95815, "loc": { "start": { - "line": 2544, - "column": 54 + "line": 2585, + "column": 16 }, "end": { - "line": 2544, - "column": 61 + "line": 2585, + "column": 30 } } }, { "type": { - "label": ",", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -335946,19 +340066,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 93680, - "end": 93681, + "value": "!==", + "start": 95816, + "end": 95819, "loc": { "start": { - "line": 2544, - "column": 61 + "line": 2585, + "column": 31 }, "end": { - "line": 2544, - "column": 62 + "line": 2585, + "column": 34 } } }, @@ -335974,101 +340095,103 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 93682, - "end": 93689, + "value": "undefined", + "start": 95820, + "end": 95829, "loc": { "start": { - "line": 2544, - "column": 63 + "line": 2585, + "column": 35 }, "end": { - "line": 2544, - "column": 70 + "line": 2585, + "column": 44 } } }, { "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": 93689, - "end": 93690, + "value": "&&", + "start": 95830, + "end": 95832, "loc": { "start": { - "line": 2544, - "column": 70 + "line": 2585, + "column": 45 }, "end": { - "line": 2544, - "column": 71 + "line": 2585, + "column": 47 } } }, { "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": 93690, - "end": 93691, + "value": "cfg", + "start": 95833, + "end": 95836, "loc": { "start": { - "line": 2544, - "column": 71 + "line": 2585, + "column": 48 }, "end": { - "line": 2544, - "column": 72 + "line": 2585, + "column": 51 } } }, { "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": "then", - "start": 93691, - "end": 93695, + "start": 95836, + "end": 95837, "loc": { "start": { - "line": 2544, - "column": 72 + "line": 2585, + "column": 51 }, "end": { - "line": 2544, - "column": 76 + "line": 2585, + "column": 52 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -336077,92 +340200,97 @@ "postfix": false, "binop": null }, - "start": 93695, - "end": 93696, + "value": "colorTextureId", + "start": 95837, + "end": 95851, "loc": { "start": { - "line": 2544, - "column": 76 + "line": 2585, + "column": 52 }, "end": { - "line": 2544, - "column": 77 + "line": 2585, + "column": 66 } } }, { "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": 93696, - "end": 93697, + "value": "!==", + "start": 95852, + "end": 95855, "loc": { "start": { - "line": 2544, - "column": 77 + "line": 2585, + "column": 67 }, "end": { - "line": 2544, - "column": 78 + "line": 2585, + "column": 70 } } }, { "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": 93697, - "end": 93698, + "value": "null", + "start": 95856, + "end": 95860, "loc": { "start": { - "line": 2544, - "column": 78 + "line": 2585, + "column": 71 }, "end": { - "line": 2544, - "column": 79 + "line": 2585, + "column": 75 } } }, { "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": 93699, - "end": 93701, + "start": 95860, + "end": 95861, "loc": { "start": { - "line": 2544, - "column": 80 + "line": 2585, + "column": 75 }, "end": { - "line": 2544, - "column": 82 + "line": 2585, + "column": 76 } } }, @@ -336178,23 +340306,22 @@ "postfix": false, "binop": null }, - "start": 93702, - "end": 93703, + "start": 95862, + "end": 95863, "loc": { "start": { - "line": 2544, - "column": 83 + "line": 2585, + "column": 77 }, "end": { - "line": 2544, - "column": 84 + "line": 2585, + "column": 78 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -336202,52 +340329,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 93724, - "end": 93728, + "value": "colorTexture", + "start": 95876, + "end": 95888, "loc": { "start": { - "line": 2545, - "column": 20 + "line": 2586, + "column": 12 }, "end": { - "line": 2545, + "line": 2586, "column": 24 } } }, { "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": 93728, - "end": 93729, + "value": "=", + "start": 95889, + "end": 95890, "loc": { "start": { - "line": 2545, - "column": 24 + "line": 2586, + "column": 25 }, "end": { - "line": 2545, - "column": 25 + "line": 2586, + "column": 26 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -336255,52 +340383,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "glRedraw", - "start": 93729, - "end": 93737, + "value": "this", + "start": 95891, + "end": 95895, "loc": { "start": { - "line": 2545, - "column": 25 + "line": 2586, + "column": 27 }, "end": { - "line": 2545, - "column": 33 + "line": 2586, + "column": 31 } } }, { "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": 93737, - "end": 93738, + "start": 95895, + "end": 95896, "loc": { "start": { - "line": 2545, - "column": 33 + "line": 2586, + "column": 31 }, "end": { - "line": 2545, - "column": 34 + "line": 2586, + "column": 32 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -336308,24 +340438,25 @@ "postfix": false, "binop": null }, - "start": 93738, - "end": 93739, + "value": "_textures", + "start": 95896, + "end": 95905, "loc": { "start": { - "line": 2545, - "column": 34 + "line": 2586, + "column": 32 }, "end": { - "line": 2545, - "column": 35 + "line": 2586, + "column": 41 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -336334,24 +340465,24 @@ "binop": null, "updateContext": null }, - "start": 93739, - "end": 93740, + "start": 95905, + "end": 95906, "loc": { "start": { - "line": 2545, - "column": 35 + "line": 2586, + "column": 41 }, "end": { - "line": 2545, - "column": 36 + "line": 2586, + "column": 42 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -336359,22 +340490,23 @@ "postfix": false, "binop": null }, - "start": 93757, - "end": 93758, + "value": "cfg", + "start": 95906, + "end": 95909, "loc": { "start": { - "line": 2546, - "column": 16 + "line": 2586, + "column": 42 }, "end": { - "line": 2546, - "column": 17 + "line": 2586, + "column": 45 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -336382,52 +340514,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 93758, - "end": 93759, - "loc": { - "start": { - "line": 2546, - "column": 17 - }, - "end": { - "line": 2546, - "column": 18 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 93759, - "end": 93760, + "start": 95909, + "end": 95910, "loc": { "start": { - "line": 2546, - "column": 18 + "line": 2586, + "column": 45 }, "end": { - "line": 2546, - "column": 19 + "line": 2586, + "column": 46 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -336435,22 +340542,23 @@ "postfix": false, "binop": null }, - "start": 93773, - "end": 93774, + "value": "colorTextureId", + "start": 95910, + "end": 95924, "loc": { "start": { - "line": 2547, - "column": 12 + "line": 2586, + "column": 46 }, "end": { - "line": 2547, - "column": 13 + "line": 2586, + "column": 60 } } }, { "type": { - "label": "}", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -336458,27 +340566,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 93783, - "end": 93784, + "start": 95924, + "end": 95925, "loc": { "start": { - "line": 2548, - "column": 8 + "line": 2586, + "column": 60 }, "end": { - "line": 2548, - "column": 9 + "line": 2586, + "column": 61 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -336487,23 +340595,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 93793, - "end": 93797, + "start": 95925, + "end": 95926, "loc": { "start": { - "line": 2549, - "column": 8 + "line": 2586, + "column": 61 }, "end": { - "line": 2549, - "column": 12 + "line": 2586, + "column": 62 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -336514,23 +340622,24 @@ "binop": null, "updateContext": null }, - "start": 93797, - "end": 93798, + "value": "if", + "start": 95939, + "end": 95941, "loc": { "start": { - "line": 2549, + "line": 2587, "column": 12 }, "end": { - "line": 2549, - "column": 13 + "line": 2587, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -336539,43 +340648,43 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 93798, - "end": 93807, + "start": 95942, + "end": 95943, "loc": { "start": { - "line": 2549, - "column": 13 + "line": 2587, + "column": 15 }, "end": { - "line": 2549, - "column": 22 + "line": 2587, + "column": 16 } } }, { "type": { - "label": "[", + "label": "prefix", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 93807, - "end": 93808, + "value": "!", + "start": 95943, + "end": 95944, "loc": { "start": { - "line": 2549, - "column": 22 + "line": 2587, + "column": 16 }, "end": { - "line": 2549, - "column": 23 + "line": 2587, + "column": 17 } } }, @@ -336591,23 +340700,23 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 93808, - "end": 93817, + "value": "colorTexture", + "start": 95944, + "end": 95956, "loc": { "start": { - "line": 2549, - "column": 23 + "line": 2587, + "column": 17 }, "end": { - "line": 2549, - "column": 32 + "line": 2587, + "column": 29 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -336615,54 +340724,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 93817, - "end": 93818, + "start": 95956, + "end": 95957, "loc": { "start": { - "line": 2549, - "column": 32 + "line": 2587, + "column": 29 }, "end": { - "line": 2549, - "column": 33 + "line": 2587, + "column": 30 } } }, { "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": 93819, - "end": 93820, + "start": 95958, + "end": 95959, "loc": { "start": { - "line": 2549, - "column": 34 + "line": 2587, + "column": 31 }, "end": { - "line": 2549, - "column": 35 + "line": 2587, + "column": 32 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -336672,50 +340778,50 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 93821, - "end": 93824, + "value": "this", + "start": 95976, + "end": 95980, "loc": { "start": { - "line": 2549, - "column": 36 + "line": 2588, + "column": 16 }, "end": { - "line": 2549, - "column": 39 + "line": 2588, + "column": 20 } } }, { "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": "SceneModelTexture", - "start": 93825, - "end": 93842, + "start": 95980, + "end": 95981, "loc": { "start": { - "line": 2549, - "column": 40 + "line": 2588, + "column": 20 }, "end": { - "line": 2549, - "column": 57 + "line": 2588, + "column": 21 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -336724,22 +340830,23 @@ "postfix": false, "binop": null }, - "start": 93842, - "end": 93843, + "value": "error", + "start": 95981, + "end": 95986, "loc": { "start": { - "line": 2549, - "column": 57 + "line": 2588, + "column": 21 }, "end": { - "line": 2549, - "column": 58 + "line": 2588, + "column": 26 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -336749,22 +340856,22 @@ "postfix": false, "binop": null }, - "start": 93843, - "end": 93844, + "start": 95986, + "end": 95987, "loc": { "start": { - "line": 2549, - "column": 58 + "line": 2588, + "column": 26 }, "end": { - "line": 2549, - "column": 59 + "line": 2588, + "column": 27 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -336774,24 +340881,23 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 93844, - "end": 93846, + "start": 95987, + "end": 95988, "loc": { "start": { - "line": 2549, - "column": 59 + "line": 2588, + "column": 27 }, "end": { - "line": 2549, - "column": 61 + "line": 2588, + "column": 28 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -336801,23 +340907,24 @@ "binop": null, "updateContext": null }, - "start": 93846, - "end": 93847, + "value": "[createTextureSet] Texture not found: ", + "start": 95988, + "end": 96026, "loc": { "start": { - "line": 2549, - "column": 61 + "line": 2588, + "column": 28 }, "end": { - "line": 2549, - "column": 62 + "line": 2588, + "column": 66 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -336826,43 +340933,16 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 93848, - "end": 93857, - "loc": { - "start": { - "line": 2549, - "column": 63 - }, - "end": { - "line": 2549, - "column": 72 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 93857, - "end": 93858, + "start": 96026, + "end": 96028, "loc": { "start": { - "line": 2549, - "column": 72 + "line": 2588, + "column": 66 }, "end": { - "line": 2549, - "column": 73 + "line": 2588, + "column": 68 } } }, @@ -336878,23 +340958,23 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 93859, - "end": 93866, + "value": "cfg", + "start": 96028, + "end": 96031, "loc": { "start": { - "line": 2549, - "column": 74 + "line": 2588, + "column": 68 }, "end": { - "line": 2549, - "column": 81 + "line": 2588, + "column": 71 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -336902,26 +340982,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 93866, - "end": 93867, + "start": 96031, + "end": 96032, "loc": { "start": { - "line": 2549, - "column": 81 + "line": 2588, + "column": 71 }, "end": { - "line": 2549, - "column": 82 + "line": 2588, + "column": 72 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -336929,48 +341010,48 @@ "postfix": false, "binop": null }, - "start": 93867, - "end": 93868, + "value": "colorTextureId", + "start": 96032, + "end": 96046, "loc": { "start": { - "line": 2549, - "column": 82 + "line": 2588, + "column": 72 }, "end": { - "line": 2549, - "column": 83 + "line": 2588, + "column": 86 } } }, { "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": 93868, - "end": 93869, + "start": 96046, + "end": 96047, "loc": { "start": { - "line": 2549, - "column": 83 + "line": 2588, + "column": 86 }, "end": { - "line": 2549, - "column": 84 + "line": 2588, + "column": 87 } } }, { "type": { - "label": "}", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -336978,40 +341059,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 93874, - "end": 93875, - "loc": { - "start": { - "line": 2550, - "column": 4 - }, - "end": { - "line": 2550, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Creates a texture set within this SceneModel.\n *\n * * Stores the new {@link SceneModelTextureSet} in {@link SceneModel#textureSets}.\n *\n * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set\n * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set.\n *\n * The textures can work as a texture atlas, where each mesh can have geometry UVs that index\n * a different part of the textures. This allows us to minimize the number of textures in our models, which\n * means faster rendering.\n *\n * @param {*} cfg Texture set properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}.\n * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*.\n * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*.\n * @param {*} [cfg.emissiveTextureId] ID of *RGBA* emissive map texture, with emissive color in *RGB*.\n * @param {*} [cfg.occlusionTextureId] ID of *RGBA* occlusion map texture, with occlusion factor in *R*.\n * @returns {SceneModelTransform} The new texture set.\n ", - "start": 93881, - "end": 95327, + "value": " - ensure that you create it first with createTexture()", + "start": 96047, + "end": 96102, "loc": { "start": { - "line": 2552, - "column": 4 + "line": 2588, + "column": 87 }, "end": { - "line": 2572, - "column": 7 + "line": 2588, + "column": 142 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -337021,25 +341088,24 @@ "postfix": false, "binop": null }, - "value": "createTextureSet", - "start": 95332, - "end": 95348, + "start": 96102, + "end": 96103, "loc": { "start": { - "line": 2573, - "column": 4 + "line": 2588, + "column": 142 }, "end": { - "line": 2573, - "column": 20 + "line": 2588, + "column": 143 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337047,99 +341113,102 @@ "postfix": false, "binop": null }, - "start": 95348, - "end": 95349, + "start": 96103, + "end": 96104, "loc": { "start": { - "line": 2573, - "column": 20 + "line": 2588, + "column": 143 }, "end": { - "line": 2573, - "column": 21 + "line": 2588, + "column": 144 } } }, { "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": "cfg", - "start": 95349, - "end": 95352, + "start": 96104, + "end": 96105, "loc": { "start": { - "line": 2573, - "column": 21 + "line": 2588, + "column": 144 }, "end": { - "line": 2573, - "column": 24 + "line": 2588, + "column": 145 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 95352, - "end": 95353, + "value": "return", + "start": 96122, + "end": 96128, "loc": { "start": { - "line": 2573, - "column": 24 + "line": 2589, + "column": 16 }, "end": { - "line": 2573, - "column": 25 + "line": 2589, + "column": 22 } } }, { "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": 95354, - "end": 95355, + "start": 96128, + "end": 96129, "loc": { "start": { - "line": 2573, - "column": 26 + "line": 2589, + "column": 22 }, "end": { - "line": 2573, - "column": 27 + "line": 2589, + "column": 23 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -337147,28 +341216,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 95364, - "end": 95369, + "start": 96142, + "end": 96143, "loc": { "start": { - "line": 2574, - "column": 8 + "line": 2590, + "column": 12 }, "end": { - "line": 2574, + "line": 2590, "column": 13 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337176,51 +341243,51 @@ "postfix": false, "binop": null }, - "value": "textureSetId", - "start": 95370, - "end": 95382, + "start": 96152, + "end": 96153, "loc": { "start": { - "line": 2574, - "column": 14 + "line": 2591, + "column": 8 }, "end": { - "line": 2574, - "column": 26 + "line": 2591, + "column": 9 } } }, { "type": { - "label": "=", + "label": "else", + "keyword": "else", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 95383, - "end": 95384, + "value": "else", + "start": 96154, + "end": 96158, "loc": { "start": { - "line": 2574, - "column": 27 + "line": 2591, + "column": 10 }, "end": { - "line": 2574, - "column": 28 + "line": 2591, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -337229,43 +341296,16 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 95385, - "end": 95388, - "loc": { - "start": { - "line": 2574, - "column": 29 - }, - "end": { - "line": 2574, - "column": 32 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 95388, - "end": 95389, + "start": 96159, + "end": 96160, "loc": { "start": { - "line": 2574, - "column": 32 + "line": 2591, + "column": 15 }, "end": { - "line": 2574, - "column": 33 + "line": 2591, + "column": 16 } } }, @@ -337281,52 +341321,53 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 95389, - "end": 95391, + "value": "colorTexture", + "start": 96173, + "end": 96185, "loc": { "start": { - "line": 2574, - "column": 33 + "line": 2592, + "column": 12 }, "end": { - "line": 2574, - "column": 35 + "line": 2592, + "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": 95391, - "end": 95392, + "value": "=", + "start": 96186, + "end": 96187, "loc": { "start": { - "line": 2574, - "column": 35 + "line": 2592, + "column": 25 }, "end": { - "line": 2574, - "column": 36 + "line": 2592, + "column": 26 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337335,42 +341376,43 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 95401, - "end": 95403, + "value": "this", + "start": 96188, + "end": 96192, "loc": { "start": { - "line": 2575, - "column": 8 + "line": 2592, + "column": 27 }, "end": { - "line": 2575, - "column": 10 + "line": 2592, + "column": 31 } } }, { "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": 95404, - "end": 95405, + "start": 96192, + "end": 96193, "loc": { "start": { - "line": 2575, - "column": 11 + "line": 2592, + "column": 31 }, "end": { - "line": 2575, - "column": 12 + "line": 2592, + "column": 32 } } }, @@ -337386,44 +341428,43 @@ "postfix": false, "binop": null }, - "value": "textureSetId", - "start": 95405, - "end": 95417, + "value": "_textures", + "start": 96193, + "end": 96202, "loc": { "start": { - "line": 2575, - "column": 12 + "line": 2592, + "column": 32 }, "end": { - "line": 2575, - "column": 24 + "line": 2592, + "column": 41 } } }, { "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": 95418, - "end": 95421, + "start": 96202, + "end": 96203, "loc": { "start": { - "line": 2575, - "column": 25 + "line": 2592, + "column": 41 }, "end": { - "line": 2575, - "column": 28 + "line": 2592, + "column": 42 } } }, @@ -337439,76 +341480,49 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 95422, - "end": 95431, - "loc": { - "start": { - "line": 2575, - "column": 29 - }, - "end": { - "line": 2575, - "column": 38 - } - } - }, - { - "type": { - "label": "||", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 1, - "updateContext": null - }, - "value": "||", - "start": 95432, - "end": 95434, + "value": "DEFAULT_COLOR_TEXTURE_ID", + "start": 96203, + "end": 96227, "loc": { "start": { - "line": 2575, - "column": 39 + "line": 2592, + "column": 42 }, "end": { - "line": 2575, - "column": 41 + "line": 2592, + "column": 66 } } }, { "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": "textureSetId", - "start": 95435, - "end": 95447, + "start": 96227, + "end": 96228, "loc": { "start": { - "line": 2575, - "column": 42 + "line": 2592, + "column": 66 }, "end": { - "line": 2575, - "column": 54 + "line": 2592, + "column": 67 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -337516,54 +341530,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 95448, - "end": 95451, + "start": 96228, + "end": 96229, "loc": { "start": { - "line": 2575, - "column": 55 + "line": 2592, + "column": 67 }, "end": { - "line": 2575, - "column": 58 + "line": 2592, + "column": 68 } } }, { "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": 95452, - "end": 95456, + "start": 96238, + "end": 96239, "loc": { "start": { - "line": 2575, - "column": 59 + "line": 2593, + "column": 8 }, "end": { - "line": 2575, - "column": 63 + "line": 2593, + "column": 9 } } }, { "type": { - "label": ")", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -337571,25 +341582,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 95456, - "end": 95457, + "value": "let", + "start": 96248, + "end": 96251, "loc": { "start": { - "line": 2575, - "column": 63 + "line": 2594, + "column": 8 }, "end": { - "line": 2575, - "column": 64 + "line": 2594, + "column": 11 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -337598,25 +341611,25 @@ "postfix": false, "binop": null }, - "start": 95458, - "end": 95459, + "value": "metallicRoughnessTexture", + "start": 96252, + "end": 96276, "loc": { "start": { - "line": 2575, - "column": 65 + "line": 2594, + "column": 12 }, "end": { - "line": 2575, - "column": 66 + "line": 2594, + "column": 36 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337625,23 +341638,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 95472, - "end": 95476, + "start": 96276, + "end": 96277, "loc": { "start": { - "line": 2576, - "column": 12 + "line": 2594, + "column": 36 }, "end": { - "line": 2576, - "column": 16 + "line": 2594, + "column": 37 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -337652,23 +341665,24 @@ "binop": null, "updateContext": null }, - "start": 95476, - "end": 95477, + "value": "if", + "start": 96286, + "end": 96288, "loc": { "start": { - "line": 2576, - "column": 16 + "line": 2595, + "column": 8 }, "end": { - "line": 2576, - "column": 17 + "line": 2595, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -337677,24 +341691,23 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 95477, - "end": 95482, + "start": 96289, + "end": 96290, "loc": { "start": { - "line": 2576, - "column": 17 + "line": 2595, + "column": 11 }, "end": { - "line": 2576, - "column": 22 + "line": 2595, + "column": 12 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -337703,24 +341716,25 @@ "postfix": false, "binop": null }, - "start": 95482, - "end": 95483, + "value": "cfg", + "start": 96290, + "end": 96293, "loc": { "start": { - "line": 2576, - "column": 22 + "line": 2595, + "column": 12 }, "end": { - "line": 2576, - "column": 23 + "line": 2595, + "column": 15 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337729,25 +341743,24 @@ "binop": null, "updateContext": null }, - "value": "[createTextureSet] Config missing: id", - "start": 95483, - "end": 95522, + "start": 96293, + "end": 96294, "loc": { "start": { - "line": 2576, - "column": 23 + "line": 2595, + "column": 15 }, "end": { - "line": 2576, - "column": 62 + "line": 2595, + "column": 16 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337755,22 +341768,23 @@ "postfix": false, "binop": null }, - "start": 95522, - "end": 95523, + "value": "metallicRoughnessTextureId", + "start": 96294, + "end": 96320, "loc": { "start": { - "line": 2576, - "column": 62 + "line": 2595, + "column": 16 }, "end": { - "line": 2576, - "column": 63 + "line": 2595, + "column": 42 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -337778,53 +341792,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 95523, - "end": 95524, + "value": "!==", + "start": 96321, + "end": 96324, "loc": { "start": { - "line": 2576, - "column": 63 + "line": 2595, + "column": 43 }, "end": { - "line": 2576, - "column": 64 + "line": 2595, + "column": 46 } } }, { "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": 95537, - "end": 95543, + "value": "undefined", + "start": 96325, + "end": 96334, "loc": { "start": { - "line": 2577, - "column": 12 + "line": 2595, + "column": 47 }, "end": { - "line": 2577, - "column": 18 + "line": 2595, + "column": 56 } } }, { "type": { - "label": ";", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -337832,27 +341845,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 95543, - "end": 95544, + "value": "&&", + "start": 96335, + "end": 96337, "loc": { "start": { - "line": 2577, - "column": 18 + "line": 2595, + "column": 57 }, "end": { - "line": 2577, - "column": 19 + "line": 2595, + "column": 59 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337860,23 +341874,23 @@ "postfix": false, "binop": null }, - "start": 95553, - "end": 95554, + "value": "cfg", + "start": 96338, + "end": 96341, "loc": { "start": { - "line": 2578, - "column": 8 + "line": 2595, + "column": 60 }, "end": { - "line": 2578, - "column": 9 + "line": 2595, + "column": 63 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -337887,24 +341901,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 95563, - "end": 95565, + "start": 96341, + "end": 96342, "loc": { "start": { - "line": 2579, - "column": 8 + "line": 2595, + "column": 63 }, "end": { - "line": 2579, - "column": 10 + "line": 2595, + "column": 64 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -337913,52 +341926,53 @@ "postfix": false, "binop": null }, - "start": 95566, - "end": 95567, + "value": "metallicRoughnessTextureId", + "start": 96342, + "end": 96368, "loc": { "start": { - "line": 2579, - "column": 11 + "line": 2595, + "column": 64 }, "end": { - "line": 2579, - "column": 12 + "line": 2595, + "column": 90 } } }, { "type": { - "label": "this", - "keyword": "this", - "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": "this", - "start": 95567, - "end": 95571, + "value": "!==", + "start": 96369, + "end": 96372, "loc": { "start": { - "line": 2579, - "column": 12 + "line": 2595, + "column": 91 }, "end": { - "line": 2579, - "column": 16 + "line": 2595, + "column": 94 } } }, { "type": { - "label": ".", + "label": "null", + "keyword": "null", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337967,24 +341981,25 @@ "binop": null, "updateContext": null }, - "start": 95571, - "end": 95572, + "value": "null", + "start": 96373, + "end": 96377, "loc": { "start": { - "line": 2579, - "column": 16 + "line": 2595, + "column": 95 }, "end": { - "line": 2579, - "column": 17 + "line": 2595, + "column": 99 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -337992,23 +342007,22 @@ "postfix": false, "binop": null }, - "value": "_textureSets", - "start": 95572, - "end": 95584, + "start": 96377, + "end": 96378, "loc": { "start": { - "line": 2579, - "column": 17 + "line": 2595, + "column": 99 }, "end": { - "line": 2579, - "column": 29 + "line": 2595, + "column": 100 } } }, { "type": { - "label": "[", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -338016,19 +342030,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 95584, - "end": 95585, + "start": 96379, + "end": 96380, "loc": { "start": { - "line": 2579, - "column": 29 + "line": 2595, + "column": 101 }, "end": { - "line": 2579, - "column": 30 + "line": 2595, + "column": 102 } } }, @@ -338044,100 +342057,104 @@ "postfix": false, "binop": null }, - "value": "textureSetId", - "start": 95585, - "end": 95597, + "value": "metallicRoughnessTexture", + "start": 96393, + "end": 96417, "loc": { "start": { - "line": 2579, - "column": 30 + "line": 2596, + "column": 12 }, "end": { - "line": 2579, - "column": 42 + "line": 2596, + "column": 36 } } }, { "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": 95597, - "end": 95598, + "value": "=", + "start": 96418, + "end": 96419, "loc": { "start": { - "line": 2579, - "column": 42 + "line": 2596, + "column": 37 }, "end": { - "line": 2579, - "column": 43 + "line": 2596, + "column": 38 } } }, { "type": { - "label": ")", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 95598, - "end": 95599, + "value": "this", + "start": 96420, + "end": 96424, "loc": { "start": { - "line": 2579, - "column": 43 + "line": 2596, + "column": 39 }, "end": { - "line": 2579, - "column": 44 + "line": 2596, + "column": 43 } } }, { "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": 95600, - "end": 95601, + "start": 96424, + "end": 96425, "loc": { "start": { - "line": 2579, - "column": 45 + "line": 2596, + "column": 43 }, "end": { - "line": 2579, - "column": 46 + "line": 2596, + "column": 44 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -338145,28 +342162,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 95614, - "end": 95618, + "value": "_textures", + "start": 96425, + "end": 96434, "loc": { "start": { - "line": 2580, - "column": 12 + "line": 2596, + "column": 44 }, "end": { - "line": 2580, - "column": 16 + "line": 2596, + "column": 53 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -338175,16 +342191,16 @@ "binop": null, "updateContext": null }, - "start": 95618, - "end": 95619, + "start": 96434, + "end": 96435, "loc": { "start": { - "line": 2580, - "column": 16 + "line": 2596, + "column": 53 }, "end": { - "line": 2580, - "column": 17 + "line": 2596, + "column": 54 } } }, @@ -338200,48 +342216,49 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 95619, - "end": 95624, + "value": "cfg", + "start": 96435, + "end": 96438, "loc": { "start": { - "line": 2580, - "column": 17 + "line": 2596, + "column": 54 }, "end": { - "line": 2580, - "column": 22 + "line": 2596, + "column": 57 } } }, { "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": 95624, - "end": 95625, + "start": 96438, + "end": 96439, "loc": { "start": { - "line": 2580, - "column": 22 + "line": 2596, + "column": 57 }, "end": { - "line": 2580, - "column": 23 + "line": 2596, + "column": 58 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -338251,22 +342268,23 @@ "postfix": false, "binop": null }, - "start": 95625, - "end": 95626, + "value": "metallicRoughnessTextureId", + "start": 96439, + "end": 96465, "loc": { "start": { - "line": 2580, - "column": 23 + "line": 2596, + "column": 58 }, "end": { - "line": 2580, - "column": 24 + "line": 2596, + "column": 84 } } }, { "type": { - "label": "template", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -338277,76 +342295,78 @@ "binop": null, "updateContext": null }, - "value": "[createTextureSet] Texture set already created: ", - "start": 95626, - "end": 95674, + "start": 96465, + "end": 96466, "loc": { "start": { - "line": 2580, - "column": 24 + "line": 2596, + "column": 84 }, "end": { - "line": 2580, - "column": 72 + "line": 2596, + "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": 95674, - "end": 95676, + "start": 96466, + "end": 96467, "loc": { "start": { - "line": 2580, - "column": 72 + "line": 2596, + "column": 85 }, "end": { - "line": 2580, - "column": 74 + "line": 2596, + "column": 86 } } }, { "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": "textureSetId", - "start": 95676, - "end": 95688, + "value": "if", + "start": 96480, + "end": 96482, "loc": { "start": { - "line": 2580, - "column": 74 + "line": 2597, + "column": 12 }, "end": { - "line": 2580, - "column": 86 + "line": 2597, + "column": 14 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -338354,49 +342374,49 @@ "postfix": false, "binop": null }, - "start": 95688, - "end": 95689, + "start": 96483, + "end": 96484, "loc": { "start": { - "line": 2580, - "column": 86 + "line": 2597, + "column": 15 }, "end": { - "line": 2580, - "column": 87 + "line": 2597, + "column": 16 } } }, { "type": { - "label": "template", - "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": "", - "start": 95689, - "end": 95689, + "value": "!", + "start": 96484, + "end": 96485, "loc": { "start": { - "line": 2580, - "column": 87 + "line": 2597, + "column": 16 }, "end": { - "line": 2580, - "column": 87 + "line": 2597, + "column": 17 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -338406,16 +342426,17 @@ "postfix": false, "binop": null }, - "start": 95689, - "end": 95690, + "value": "metallicRoughnessTexture", + "start": 96485, + "end": 96509, "loc": { "start": { - "line": 2580, - "column": 87 + "line": 2597, + "column": 17 }, "end": { - "line": 2580, - "column": 88 + "line": 2597, + "column": 41 } } }, @@ -338431,51 +342452,50 @@ "postfix": false, "binop": null }, - "start": 95690, - "end": 95691, + "start": 96509, + "end": 96510, "loc": { "start": { - "line": 2580, - "column": 88 + "line": 2597, + "column": 41 }, "end": { - "line": 2580, - "column": 89 + "line": 2597, + "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": 95691, - "end": 95692, + "start": 96511, + "end": 96512, "loc": { "start": { - "line": 2580, - "column": 89 + "line": 2597, + "column": 43 }, "end": { - "line": 2580, - "column": 90 + "line": 2597, + "column": 44 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -338484,24 +342504,24 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 95705, - "end": 95711, + "value": "this", + "start": 96529, + "end": 96533, "loc": { "start": { - "line": 2581, - "column": 12 + "line": 2598, + "column": 16 }, "end": { - "line": 2581, - "column": 18 + "line": 2598, + "column": 20 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -338511,24 +342531,24 @@ "binop": null, "updateContext": null }, - "start": 95711, - "end": 95712, + "start": 96533, + "end": 96534, "loc": { "start": { - "line": 2581, - "column": 18 + "line": 2598, + "column": 20 }, "end": { - "line": 2581, - "column": 19 + "line": 2598, + "column": 21 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -338536,50 +342556,48 @@ "postfix": false, "binop": null }, - "start": 95721, - "end": 95722, + "value": "error", + "start": 96534, + "end": 96539, "loc": { "start": { - "line": 2582, - "column": 8 + "line": 2598, + "column": 21 }, "end": { - "line": 2582, - "column": 9 + "line": 2598, + "column": 26 } } }, { "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": 95731, - "end": 95734, + "start": 96539, + "end": 96540, "loc": { "start": { - "line": 2583, - "column": 8 + "line": 2598, + "column": 26 }, "end": { - "line": 2583, - "column": 11 + "line": 2598, + "column": 27 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -338589,24 +342607,23 @@ "postfix": false, "binop": null }, - "value": "colorTexture", - "start": 95735, - "end": 95747, + "start": 96540, + "end": 96541, "loc": { "start": { - "line": 2583, - "column": 12 + "line": 2598, + "column": 27 }, "end": { - "line": 2583, - "column": 24 + "line": 2598, + "column": 28 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -338616,51 +342633,49 @@ "binop": null, "updateContext": null }, - "start": 95747, - "end": 95748, + "value": "[createTextureSet] Texture not found: ", + "start": 96541, + "end": 96579, "loc": { "start": { - "line": 2583, - "column": 24 + "line": 2598, + "column": 28 }, "end": { - "line": 2583, - "column": 25 + "line": 2598, + "column": 66 } } }, { "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": 95757, - "end": 95759, + "start": 96579, + "end": 96581, "loc": { "start": { - "line": 2584, - "column": 8 + "line": 2598, + "column": 66 }, "end": { - "line": 2584, - "column": 10 + "line": 2598, + "column": 68 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -338669,76 +342684,77 @@ "postfix": false, "binop": null }, - "start": 95760, - "end": 95761, + "value": "cfg", + "start": 96581, + "end": 96584, "loc": { "start": { - "line": 2584, - "column": 11 + "line": 2598, + "column": 68 }, "end": { - "line": 2584, - "column": 12 + "line": 2598, + "column": 71 } } }, { "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": "cfg", - "start": 95761, - "end": 95764, + "start": 96584, + "end": 96585, "loc": { "start": { - "line": 2584, - "column": 12 + "line": 2598, + "column": 71 }, "end": { - "line": 2584, - "column": 15 + "line": 2598, + "column": 72 } } }, { "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": 95764, - "end": 95765, + "value": "metallicRoughnessTextureId", + "start": 96585, + "end": 96611, "loc": { "start": { - "line": 2584, - "column": 15 + "line": 2598, + "column": 72 }, "end": { - "line": 2584, - "column": 16 + "line": 2598, + "column": 98 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -338746,50 +342762,49 @@ "postfix": false, "binop": null }, - "value": "colorTextureId", - "start": 95765, - "end": 95779, + "start": 96611, + "end": 96612, "loc": { "start": { - "line": 2584, - "column": 16 + "line": 2598, + "column": 98 }, "end": { - "line": 2584, - "column": 30 + "line": 2598, + "column": 99 } } }, { "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": 95780, - "end": 95783, + "value": " - ensure that you create it first with createTexture()", + "start": 96612, + "end": 96667, "loc": { "start": { - "line": 2584, - "column": 31 + "line": 2598, + "column": 99 }, "end": { - "line": 2584, - "column": 34 + "line": 2598, + "column": 154 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -338799,77 +342814,75 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 95784, - "end": 95793, + "start": 96667, + "end": 96668, "loc": { "start": { - "line": 2584, - "column": 35 + "line": 2598, + "column": 154 }, "end": { - "line": 2584, - "column": 44 + "line": 2598, + "column": 155 } } }, { "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": 95794, - "end": 95796, + "start": 96668, + "end": 96669, "loc": { "start": { - "line": 2584, - "column": 45 + "line": 2598, + "column": 155 }, "end": { - "line": 2584, - "column": 47 + "line": 2598, + "column": 156 } } }, { "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": "cfg", - "start": 95797, - "end": 95800, + "start": 96669, + "end": 96670, "loc": { "start": { - "line": 2584, - "column": 48 + "line": 2598, + "column": 156 }, "end": { - "line": 2584, - "column": 51 + "line": 2598, + "column": 157 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -338879,122 +342892,121 @@ "binop": null, "updateContext": null }, - "start": 95800, - "end": 95801, + "value": "return", + "start": 96687, + "end": 96693, "loc": { "start": { - "line": 2584, - "column": 51 + "line": 2599, + "column": 16 }, "end": { - "line": 2584, - "column": 52 + "line": 2599, + "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": "colorTextureId", - "start": 95801, - "end": 95815, + "start": 96693, + "end": 96694, "loc": { "start": { - "line": 2584, - "column": 52 + "line": 2599, + "column": 22 }, "end": { - "line": 2584, - "column": 66 + "line": 2599, + "column": 23 } } }, { "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": 95816, - "end": 95819, + "start": 96707, + "end": 96708, "loc": { "start": { - "line": 2584, - "column": 67 + "line": 2600, + "column": 12 }, "end": { - "line": 2584, - "column": 70 + "line": 2600, + "column": 13 } } }, { "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": 95820, - "end": 95824, + "start": 96717, + "end": 96718, "loc": { "start": { - "line": 2584, - "column": 71 + "line": 2601, + "column": 8 }, "end": { - "line": 2584, - "column": 75 + "line": 2601, + "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": 95824, - "end": 95825, + "value": "else", + "start": 96719, + "end": 96723, "loc": { "start": { - "line": 2584, - "column": 75 + "line": 2601, + "column": 10 }, "end": { - "line": 2584, - "column": 76 + "line": 2601, + "column": 14 } } }, @@ -339010,16 +343022,16 @@ "postfix": false, "binop": null }, - "start": 95826, - "end": 95827, + "start": 96724, + "end": 96725, "loc": { "start": { - "line": 2584, - "column": 77 + "line": 2601, + "column": 15 }, "end": { - "line": 2584, - "column": 78 + "line": 2601, + "column": 16 } } }, @@ -339035,17 +343047,17 @@ "postfix": false, "binop": null }, - "value": "colorTexture", - "start": 95840, - "end": 95852, + "value": "metallicRoughnessTexture", + "start": 96738, + "end": 96762, "loc": { "start": { - "line": 2585, + "line": 2602, "column": 12 }, "end": { - "line": 2585, - "column": 24 + "line": 2602, + "column": 36 } } }, @@ -339063,16 +343075,16 @@ "updateContext": null }, "value": "=", - "start": 95853, - "end": 95854, + "start": 96763, + "end": 96764, "loc": { "start": { - "line": 2585, - "column": 25 + "line": 2602, + "column": 37 }, "end": { - "line": 2585, - "column": 26 + "line": 2602, + "column": 38 } } }, @@ -339091,16 +343103,16 @@ "updateContext": null }, "value": "this", - "start": 95855, - "end": 95859, + "start": 96765, + "end": 96769, "loc": { "start": { - "line": 2585, - "column": 27 + "line": 2602, + "column": 39 }, "end": { - "line": 2585, - "column": 31 + "line": 2602, + "column": 43 } } }, @@ -339117,16 +343129,16 @@ "binop": null, "updateContext": null }, - "start": 95859, - "end": 95860, + "start": 96769, + "end": 96770, "loc": { "start": { - "line": 2585, - "column": 31 + "line": 2602, + "column": 43 }, "end": { - "line": 2585, - "column": 32 + "line": 2602, + "column": 44 } } }, @@ -339143,16 +343155,16 @@ "binop": null }, "value": "_textures", - "start": 95860, - "end": 95869, + "start": 96770, + "end": 96779, "loc": { "start": { - "line": 2585, - "column": 32 + "line": 2602, + "column": 44 }, "end": { - "line": 2585, - "column": 41 + "line": 2602, + "column": 53 } } }, @@ -339169,68 +343181,16 @@ "binop": null, "updateContext": null }, - "start": 95869, - "end": 95870, - "loc": { - "start": { - "line": 2585, - "column": 41 - }, - "end": { - "line": 2585, - "column": 42 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "cfg", - "start": 95870, - "end": 95873, - "loc": { - "start": { - "line": 2585, - "column": 42 - }, - "end": { - "line": 2585, - "column": 45 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 95873, - "end": 95874, + "start": 96779, + "end": 96780, "loc": { "start": { - "line": 2585, - "column": 45 + "line": 2602, + "column": 53 }, "end": { - "line": 2585, - "column": 46 + "line": 2602, + "column": 54 } } }, @@ -339246,17 +343206,17 @@ "postfix": false, "binop": null }, - "value": "colorTextureId", - "start": 95874, - "end": 95888, + "value": "DEFAULT_METAL_ROUGH_TEXTURE_ID", + "start": 96780, + "end": 96810, "loc": { "start": { - "line": 2585, - "column": 46 + "line": 2602, + "column": 54 }, "end": { - "line": 2585, - "column": 60 + "line": 2602, + "column": 84 } } }, @@ -339273,16 +343233,16 @@ "binop": null, "updateContext": null }, - "start": 95888, - "end": 95889, + "start": 96810, + "end": 96811, "loc": { "start": { - "line": 2585, - "column": 60 + "line": 2602, + "column": 84 }, "end": { - "line": 2585, - "column": 61 + "line": 2602, + "column": 85 } } }, @@ -339299,23 +343259,22 @@ "binop": null, "updateContext": null }, - "start": 95889, - "end": 95890, + "start": 96811, + "end": 96812, "loc": { "start": { - "line": 2585, - "column": 61 + "line": 2602, + "column": 85 }, "end": { - "line": 2585, - "column": 62 + "line": 2602, + "column": 86 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -339323,104 +343282,105 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 95903, - "end": 95905, + "start": 96821, + "end": 96822, "loc": { "start": { - "line": 2586, - "column": 12 + "line": 2603, + "column": 8 }, "end": { - "line": 2586, - "column": 14 + "line": 2603, + "column": 9 } } }, { "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": 95906, - "end": 95907, + "value": "let", + "start": 96831, + "end": 96834, "loc": { "start": { - "line": 2586, - "column": 15 + "line": 2604, + "column": 8 }, "end": { - "line": 2586, - "column": 16 + "line": 2604, + "column": 11 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 95907, - "end": 95908, + "value": "normalsTexture", + "start": 96835, + "end": 96849, "loc": { "start": { - "line": 2586, - "column": 16 + "line": 2604, + "column": 12 }, "end": { - "line": 2586, - "column": 17 + "line": 2604, + "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": "colorTexture", - "start": 95908, - "end": 95920, + "start": 96849, + "end": 96850, "loc": { "start": { - "line": 2586, - "column": 17 + "line": 2604, + "column": 26 }, "end": { - "line": 2586, - "column": 29 + "line": 2604, + "column": 27 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -339428,24 +343388,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 95920, - "end": 95921, + "value": "if", + "start": 96859, + "end": 96861, "loc": { "start": { - "line": 2586, - "column": 29 + "line": 2605, + "column": 8 }, "end": { - "line": 2586, - "column": 30 + "line": 2605, + "column": 10 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -339455,23 +343417,22 @@ "postfix": false, "binop": null }, - "start": 95922, - "end": 95923, + "start": 96862, + "end": 96863, "loc": { "start": { - "line": 2586, - "column": 31 + "line": 2605, + "column": 11 }, "end": { - "line": 2586, - "column": 32 + "line": 2605, + "column": 12 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -339479,20 +343440,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 95940, - "end": 95944, + "value": "cfg", + "start": 96863, + "end": 96866, "loc": { "start": { - "line": 2587, - "column": 16 + "line": 2605, + "column": 12 }, "end": { - "line": 2587, - "column": 20 + "line": 2605, + "column": 15 } } }, @@ -339509,16 +343469,16 @@ "binop": null, "updateContext": null }, - "start": 95944, - "end": 95945, + "start": 96866, + "end": 96867, "loc": { "start": { - "line": 2587, - "column": 20 + "line": 2605, + "column": 15 }, "end": { - "line": 2587, - "column": 21 + "line": 2605, + "column": 16 } } }, @@ -339534,48 +343494,50 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 95945, - "end": 95950, + "value": "normalsTextureId", + "start": 96867, + "end": 96883, "loc": { "start": { - "line": 2587, - "column": 21 + "line": 2605, + "column": 16 }, "end": { - "line": 2587, - "column": 26 + "line": 2605, + "column": 32 } } }, { "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": 95950, - "end": 95951, + "value": "!==", + "start": 96884, + "end": 96887, "loc": { "start": { - "line": 2587, - "column": 26 + "line": 2605, + "column": 33 }, "end": { - "line": 2587, - "column": 27 + "line": 2605, + "column": 36 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -339585,50 +343547,51 @@ "postfix": false, "binop": null }, - "start": 95951, - "end": 95952, + "value": "undefined", + "start": 96888, + "end": 96897, "loc": { "start": { - "line": 2587, - "column": 27 + "line": 2605, + "column": 37 }, "end": { - "line": 2587, - "column": 28 + "line": 2605, + "column": 46 } } }, { "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": "[createTextureSet] Texture not found: ", - "start": 95952, - "end": 95990, + "value": "&&", + "start": 96898, + "end": 96900, "loc": { "start": { - "line": 2587, - "column": 28 + "line": 2605, + "column": 47 }, "end": { - "line": 2587, - "column": 66 + "line": 2605, + "column": 49 } } }, { "type": { - "label": "${", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -339637,125 +343600,130 @@ "postfix": false, "binop": null }, - "start": 95990, - "end": 95992, + "value": "cfg", + "start": 96901, + "end": 96904, "loc": { "start": { - "line": 2587, - "column": 66 + "line": 2605, + "column": 50 }, "end": { - "line": 2587, - "column": 68 + "line": 2605, + "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": "cfg", - "start": 95992, - "end": 95995, + "start": 96904, + "end": 96905, "loc": { "start": { - "line": 2587, - "column": 68 + "line": 2605, + "column": 53 }, "end": { - "line": 2587, - "column": 71 + "line": 2605, + "column": 54 } } }, { "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": 95995, - "end": 95996, + "value": "normalsTextureId", + "start": 96905, + "end": 96921, "loc": { "start": { - "line": 2587, - "column": 71 + "line": 2605, + "column": 54 }, "end": { - "line": 2587, - "column": 72 + "line": 2605, + "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": 6, + "updateContext": null }, - "value": "colorTextureId", - "start": 95996, - "end": 96010, + "value": "!==", + "start": 96922, + "end": 96925, "loc": { "start": { - "line": 2587, - "column": 72 + "line": 2605, + "column": 71 }, "end": { - "line": 2587, - "column": 86 + "line": 2605, + "column": 74 } } }, { "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": 96010, - "end": 96011, + "value": "null", + "start": 96926, + "end": 96930, "loc": { "start": { - "line": 2587, - "column": 86 + "line": 2605, + "column": 75 }, "end": { - "line": 2587, - "column": 87 + "line": 2605, + "column": 79 } } }, { "type": { - "label": "template", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -339763,27 +343731,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": " - ensure that you create it first with createTexture()", - "start": 96011, - "end": 96066, + "start": 96930, + "end": 96931, "loc": { "start": { - "line": 2587, - "column": 87 + "line": 2605, + "column": 79 }, "end": { - "line": 2587, - "column": 142 + "line": 2605, + "column": 80 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -339792,24 +343758,24 @@ "postfix": false, "binop": null }, - "start": 96066, - "end": 96067, + "start": 96932, + "end": 96933, "loc": { "start": { - "line": 2587, - "column": 142 + "line": 2605, + "column": 81 }, "end": { - "line": 2587, - "column": 143 + "line": 2605, + "column": 82 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -339817,51 +343783,53 @@ "postfix": false, "binop": null }, - "start": 96067, - "end": 96068, + "value": "normalsTexture", + "start": 96946, + "end": 96960, "loc": { "start": { - "line": 2587, - "column": 143 + "line": 2606, + "column": 12 }, "end": { - "line": 2587, - "column": 144 + "line": 2606, + "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": 96068, - "end": 96069, + "value": "=", + "start": 96961, + "end": 96962, "loc": { "start": { - "line": 2587, - "column": 144 + "line": 2606, + "column": 27 }, "end": { - "line": 2587, - "column": 145 + "line": 2606, + "column": 28 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -339870,24 +343838,24 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 96086, - "end": 96092, + "value": "this", + "start": 96963, + "end": 96967, "loc": { "start": { - "line": 2588, - "column": 16 + "line": 2606, + "column": 29 }, "end": { - "line": 2588, - "column": 22 + "line": 2606, + "column": 33 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -339897,24 +343865,24 @@ "binop": null, "updateContext": null }, - "start": 96092, - "end": 96093, + "start": 96967, + "end": 96968, "loc": { "start": { - "line": 2588, - "column": 22 + "line": 2606, + "column": 33 }, "end": { - "line": 2588, - "column": 23 + "line": 2606, + "column": 34 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -339922,94 +343890,95 @@ "postfix": false, "binop": null }, - "start": 96106, - "end": 96107, + "value": "_textures", + "start": 96968, + "end": 96977, "loc": { "start": { - "line": 2589, - "column": 12 + "line": 2606, + "column": 34 }, "end": { - "line": 2589, - "column": 13 + "line": 2606, + "column": 43 } } }, { "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": 96116, - "end": 96117, + "start": 96977, + "end": 96978, "loc": { "start": { - "line": 2590, - "column": 8 + "line": 2606, + "column": 43 }, "end": { - "line": 2590, - "column": 9 + "line": 2606, + "column": 44 } } }, { "type": { - "label": "else", - "keyword": "else", - "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": "else", - "start": 96118, - "end": 96122, + "value": "cfg", + "start": 96978, + "end": 96981, "loc": { "start": { - "line": 2590, - "column": 10 + "line": 2606, + "column": 44 }, "end": { - "line": 2590, - "column": 14 + "line": 2606, + "column": 47 } } }, { "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": 96123, - "end": 96124, + "start": 96981, + "end": 96982, "loc": { "start": { - "line": 2590, - "column": 15 + "line": 2606, + "column": 47 }, "end": { - "line": 2590, - "column": 16 + "line": 2606, + "column": 48 } } }, @@ -340025,53 +343994,51 @@ "postfix": false, "binop": null }, - "value": "colorTexture", - "start": 96137, - "end": 96149, + "value": "normalsTextureId", + "start": 96982, + "end": 96998, "loc": { "start": { - "line": 2591, - "column": 12 + "line": 2606, + "column": 48 }, "end": { - "line": 2591, - "column": 24 + "line": 2606, + "column": 64 } } }, { "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": 96150, - "end": 96151, + "start": 96998, + "end": 96999, "loc": { "start": { - "line": 2591, - "column": 25 + "line": 2606, + "column": 64 }, "end": { - "line": 2591, - "column": 26 + "line": 2606, + "column": 65 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -340080,23 +344047,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 96152, - "end": 96156, + "start": 96999, + "end": 97000, "loc": { "start": { - "line": 2591, - "column": 27 + "line": 2606, + "column": 65 }, "end": { - "line": 2591, - "column": 31 + "line": 2606, + "column": 66 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -340107,23 +344074,24 @@ "binop": null, "updateContext": null }, - "start": 96156, - "end": 96157, + "value": "if", + "start": 97013, + "end": 97015, "loc": { "start": { - "line": 2591, - "column": 31 + "line": 2607, + "column": 12 }, "end": { - "line": 2591, - "column": 32 + "line": 2607, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -340132,43 +344100,43 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 96157, - "end": 96166, + "start": 97016, + "end": 97017, "loc": { "start": { - "line": 2591, - "column": 32 + "line": 2607, + "column": 15 }, "end": { - "line": 2591, - "column": 41 + "line": 2607, + "column": 16 } } }, { "type": { - "label": "[", + "label": "prefix", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 96166, - "end": 96167, + "value": "!", + "start": 97017, + "end": 97018, "loc": { "start": { - "line": 2591, - "column": 41 + "line": 2607, + "column": 16 }, "end": { - "line": 2591, - "column": 42 + "line": 2607, + "column": 17 } } }, @@ -340184,23 +344152,23 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_COLOR_TEXTURE_ID", - "start": 96167, - "end": 96191, + "value": "normalsTexture", + "start": 97018, + "end": 97032, "loc": { "start": { - "line": 2591, - "column": 42 + "line": 2607, + "column": 17 }, "end": { - "line": 2591, - "column": 66 + "line": 2607, + "column": 31 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -340208,77 +344176,77 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 96191, - "end": 96192, + "start": 97032, + "end": 97033, "loc": { "start": { - "line": 2591, - "column": 66 + "line": 2607, + "column": 31 }, "end": { - "line": 2591, - "column": 67 + "line": 2607, + "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": 96192, - "end": 96193, + "start": 97034, + "end": 97035, "loc": { "start": { - "line": 2591, - "column": 67 + "line": 2607, + "column": 33 }, "end": { - "line": 2591, - "column": 68 + "line": 2607, + "column": 34 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 96202, - "end": 96203, + "value": "this", + "start": 97052, + "end": 97056, "loc": { "start": { - "line": 2592, - "column": 8 + "line": 2608, + "column": 16 }, "end": { - "line": 2592, - "column": 9 + "line": 2608, + "column": 20 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -340289,17 +344257,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 96212, - "end": 96215, + "start": 97056, + "end": 97057, "loc": { "start": { - "line": 2593, - "column": 8 + "line": 2608, + "column": 20 }, "end": { - "line": 2593, - "column": 11 + "line": 2608, + "column": 21 } } }, @@ -340315,50 +344282,73 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTexture", - "start": 96216, - "end": 96240, + "value": "error", + "start": 97057, + "end": 97062, "loc": { "start": { - "line": 2593, - "column": 12 + "line": 2608, + "column": 21 }, "end": { - "line": 2593, - "column": 36 + "line": 2608, + "column": 26 } } }, { "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": 96240, - "end": 96241, + "start": 97062, + "end": 97063, "loc": { "start": { - "line": 2593, - "column": 36 + "line": 2608, + "column": 26 }, "end": { - "line": 2593, - "column": 37 + "line": 2608, + "column": 27 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 97063, + "end": 97064, + "loc": { + "start": { + "line": 2608, + "column": 27 + }, + "end": { + "line": 2608, + "column": 28 + } + } + }, + { + "type": { + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -340369,23 +344359,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 96250, - "end": 96252, + "value": "[createTextureSet] Texture not found: ", + "start": 97064, + "end": 97102, "loc": { "start": { - "line": 2594, - "column": 8 + "line": 2608, + "column": 28 }, "end": { - "line": 2594, - "column": 10 + "line": 2608, + "column": 66 } } }, { "type": { - "label": "(", + "label": "${", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -340395,16 +344385,16 @@ "postfix": false, "binop": null }, - "start": 96253, - "end": 96254, + "start": 97102, + "end": 97104, "loc": { "start": { - "line": 2594, - "column": 11 + "line": 2608, + "column": 66 }, "end": { - "line": 2594, - "column": 12 + "line": 2608, + "column": 68 } } }, @@ -340421,16 +344411,16 @@ "binop": null }, "value": "cfg", - "start": 96254, - "end": 96257, + "start": 97104, + "end": 97107, "loc": { "start": { - "line": 2594, - "column": 12 + "line": 2608, + "column": 68 }, "end": { - "line": 2594, - "column": 15 + "line": 2608, + "column": 71 } } }, @@ -340447,16 +344437,16 @@ "binop": null, "updateContext": null }, - "start": 96257, - "end": 96258, + "start": 97107, + "end": 97108, "loc": { "start": { - "line": 2594, - "column": 15 + "line": 2608, + "column": 71 }, "end": { - "line": 2594, - "column": 16 + "line": 2608, + "column": 72 } } }, @@ -340472,105 +344462,102 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTextureId", - "start": 96258, - "end": 96284, + "value": "normalsTextureId", + "start": 97108, + "end": 97124, "loc": { "start": { - "line": 2594, - "column": 16 + "line": 2608, + "column": 72 }, "end": { - "line": 2594, - "column": 42 + "line": 2608, + "column": 88 } } }, { "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": 96285, - "end": 96288, + "start": 97124, + "end": 97125, "loc": { "start": { - "line": 2594, - "column": 43 + "line": 2608, + "column": 88 }, "end": { - "line": 2594, - "column": 46 + "line": 2608, + "column": 89 } } }, { "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": "undefined", - "start": 96289, - "end": 96298, + "value": " - ensure that you create it first with createTexture()", + "start": 97125, + "end": 97180, "loc": { "start": { - "line": 2594, - "column": 47 + "line": 2608, + "column": 89 }, "end": { - "line": 2594, - "column": 56 + "line": 2608, + "column": 144 } } }, { "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, + "label": "`", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 96299, - "end": 96301, + "start": 97180, + "end": 97181, "loc": { "start": { - "line": 2594, - "column": 57 + "line": 2608, + "column": 144 }, "end": { - "line": 2594, - "column": 59 + "line": 2608, + "column": 145 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -340578,24 +344565,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 96302, - "end": 96305, + "start": 97181, + "end": 97182, "loc": { "start": { - "line": 2594, - "column": 60 + "line": 2608, + "column": 145 }, "end": { - "line": 2594, - "column": 63 + "line": 2608, + "column": 146 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -340605,48 +344591,50 @@ "binop": null, "updateContext": null }, - "start": 96305, - "end": 96306, + "start": 97182, + "end": 97183, "loc": { "start": { - "line": 2594, - "column": 63 + "line": 2608, + "column": 146 }, "end": { - "line": 2594, - "column": 64 + "line": 2608, + "column": 147 } } }, { "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": "metallicRoughnessTextureId", - "start": 96306, - "end": 96332, + "value": "return", + "start": 97200, + "end": 97206, "loc": { "start": { - "line": 2594, - "column": 64 + "line": 2609, + "column": 16 }, "end": { - "line": 2594, - "column": 90 + "line": 2609, + "column": 22 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -340654,54 +344642,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 96333, - "end": 96336, + "start": 97206, + "end": 97207, "loc": { "start": { - "line": 2594, - "column": 91 + "line": 2609, + "column": 22 }, "end": { - "line": 2594, - "column": 94 + "line": 2609, + "column": 23 } } }, { "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": 96337, - "end": 96341, + "start": 97220, + "end": 97221, "loc": { "start": { - "line": 2594, - "column": 95 + "line": 2610, + "column": 12 }, "end": { - "line": 2594, - "column": 99 + "line": 2610, + "column": 13 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -340711,16 +344695,44 @@ "postfix": false, "binop": null }, - "start": 96341, - "end": 96342, + "start": 97230, + "end": 97231, "loc": { "start": { - "line": 2594, - "column": 99 + "line": 2611, + "column": 8 }, "end": { - "line": 2594, - "column": 100 + "line": 2611, + "column": 9 + } + } + }, + { + "type": { + "label": "else", + "keyword": "else", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "else", + "start": 97232, + "end": 97236, + "loc": { + "start": { + "line": 2611, + "column": 10 + }, + "end": { + "line": 2611, + "column": 14 } } }, @@ -340736,16 +344748,16 @@ "postfix": false, "binop": null }, - "start": 96343, - "end": 96344, + "start": 97237, + "end": 97238, "loc": { "start": { - "line": 2594, - "column": 101 + "line": 2611, + "column": 15 }, "end": { - "line": 2594, - "column": 102 + "line": 2611, + "column": 16 } } }, @@ -340761,17 +344773,17 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTexture", - "start": 96357, - "end": 96381, + "value": "normalsTexture", + "start": 97251, + "end": 97265, "loc": { "start": { - "line": 2595, + "line": 2612, "column": 12 }, "end": { - "line": 2595, - "column": 36 + "line": 2612, + "column": 26 } } }, @@ -340789,16 +344801,16 @@ "updateContext": null }, "value": "=", - "start": 96382, - "end": 96383, + "start": 97266, + "end": 97267, "loc": { "start": { - "line": 2595, - "column": 37 + "line": 2612, + "column": 27 }, "end": { - "line": 2595, - "column": 38 + "line": 2612, + "column": 28 } } }, @@ -340817,16 +344829,16 @@ "updateContext": null }, "value": "this", - "start": 96384, - "end": 96388, + "start": 97268, + "end": 97272, "loc": { "start": { - "line": 2595, - "column": 39 + "line": 2612, + "column": 29 }, "end": { - "line": 2595, - "column": 43 + "line": 2612, + "column": 33 } } }, @@ -340843,16 +344855,16 @@ "binop": null, "updateContext": null }, - "start": 96388, - "end": 96389, + "start": 97272, + "end": 97273, "loc": { "start": { - "line": 2595, - "column": 43 + "line": 2612, + "column": 33 }, "end": { - "line": 2595, - "column": 44 + "line": 2612, + "column": 34 } } }, @@ -340869,16 +344881,16 @@ "binop": null }, "value": "_textures", - "start": 96389, - "end": 96398, + "start": 97273, + "end": 97282, "loc": { "start": { - "line": 2595, - "column": 44 + "line": 2612, + "column": 34 }, "end": { - "line": 2595, - "column": 53 + "line": 2612, + "column": 43 } } }, @@ -340895,16 +344907,16 @@ "binop": null, "updateContext": null }, - "start": 96398, - "end": 96399, + "start": 97282, + "end": 97283, "loc": { "start": { - "line": 2595, - "column": 53 + "line": 2612, + "column": 43 }, "end": { - "line": 2595, - "column": 54 + "line": 2612, + "column": 44 } } }, @@ -340920,23 +344932,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 96399, - "end": 96402, + "value": "DEFAULT_NORMALS_TEXTURE_ID", + "start": 97283, + "end": 97309, "loc": { "start": { - "line": 2595, - "column": 54 + "line": 2612, + "column": 44 }, "end": { - "line": 2595, - "column": 57 + "line": 2612, + "column": 70 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -340947,49 +344959,23 @@ "binop": null, "updateContext": null }, - "start": 96402, - "end": 96403, + "start": 97309, + "end": 97310, "loc": { "start": { - "line": 2595, - "column": 57 - }, - "end": { - "line": 2595, - "column": 58 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "metallicRoughnessTextureId", - "start": 96403, - "end": 96429, - "loc": { - "start": { - "line": 2595, - "column": 58 + "line": 2612, + "column": 70 }, "end": { - "line": 2595, - "column": 84 + "line": 2612, + "column": 71 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -340999,49 +344985,48 @@ "binop": null, "updateContext": null }, - "start": 96429, - "end": 96430, + "start": 97310, + "end": 97311, "loc": { "start": { - "line": 2595, - "column": 84 + "line": 2612, + "column": 71 }, "end": { - "line": 2595, - "column": 85 + "line": 2612, + "column": 72 } } }, { "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": 96430, - "end": 96431, + "start": 97320, + "end": 97321, "loc": { "start": { - "line": 2595, - "column": 85 + "line": 2613, + "column": 8 }, "end": { - "line": 2595, - "column": 86 + "line": 2613, + "column": 9 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -341052,24 +345037,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 96444, - "end": 96446, + "value": "let", + "start": 97330, + "end": 97333, "loc": { "start": { - "line": 2596, - "column": 12 + "line": 2614, + "column": 8 }, "end": { - "line": 2596, - "column": 14 + "line": 2614, + "column": 11 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -341078,75 +345063,50 @@ "postfix": false, "binop": null }, - "start": 96447, - "end": 96448, + "value": "emissiveTexture", + "start": 97334, + "end": 97349, "loc": { "start": { - "line": 2596, - "column": 15 + "line": 2614, + "column": 12 }, "end": { - "line": 2596, - "column": 16 + "line": 2614, + "column": 27 } } }, { "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": 96448, - "end": 96449, - "loc": { - "start": { - "line": 2596, - "column": 16 - }, - "end": { - "line": 2596, - "column": 17 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "metallicRoughnessTexture", - "start": 96449, - "end": 96473, + "start": 97349, + "end": 97350, "loc": { "start": { - "line": 2596, - "column": 17 + "line": 2614, + "column": 27 }, "end": { - "line": 2596, - "column": 41 + "line": 2614, + "column": 28 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -341154,24 +345114,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 96473, - "end": 96474, + "value": "if", + "start": 97359, + "end": 97361, "loc": { "start": { - "line": 2596, - "column": 41 + "line": 2615, + "column": 8 }, "end": { - "line": 2596, - "column": 42 + "line": 2615, + "column": 10 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -341181,23 +345143,22 @@ "postfix": false, "binop": null }, - "start": 96475, - "end": 96476, + "start": 97362, + "end": 97363, "loc": { "start": { - "line": 2596, - "column": 43 + "line": 2615, + "column": 11 }, "end": { - "line": 2596, - "column": 44 + "line": 2615, + "column": 12 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -341205,20 +345166,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 96493, - "end": 96497, + "value": "cfg", + "start": 97363, + "end": 97366, "loc": { "start": { - "line": 2597, - "column": 16 + "line": 2615, + "column": 12 }, "end": { - "line": 2597, - "column": 20 + "line": 2615, + "column": 15 } } }, @@ -341235,16 +345195,16 @@ "binop": null, "updateContext": null }, - "start": 96497, - "end": 96498, + "start": 97366, + "end": 97367, "loc": { "start": { - "line": 2597, - "column": 20 + "line": 2615, + "column": 15 }, "end": { - "line": 2597, - "column": 21 + "line": 2615, + "column": 16 } } }, @@ -341260,48 +345220,50 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 96498, - "end": 96503, + "value": "emissiveTextureId", + "start": 97367, + "end": 97384, "loc": { "start": { - "line": 2597, - "column": 21 + "line": 2615, + "column": 16 }, "end": { - "line": 2597, - "column": 26 + "line": 2615, + "column": 33 } } }, { "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": 96503, - "end": 96504, + "value": "!==", + "start": 97385, + "end": 97388, "loc": { "start": { - "line": 2597, - "column": 26 + "line": 2615, + "column": 34 }, "end": { - "line": 2597, - "column": 27 + "line": 2615, + "column": 37 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -341311,50 +345273,51 @@ "postfix": false, "binop": null }, - "start": 96504, - "end": 96505, + "value": "undefined", + "start": 97389, + "end": 97398, "loc": { "start": { - "line": 2597, - "column": 27 + "line": 2615, + "column": 38 }, "end": { - "line": 2597, - "column": 28 + "line": 2615, + "column": 47 } } }, { "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": "[createTextureSet] Texture not found: ", - "start": 96505, - "end": 96543, + "value": "&&", + "start": 97399, + "end": 97401, "loc": { "start": { - "line": 2597, - "column": 28 + "line": 2615, + "column": 48 }, "end": { - "line": 2597, - "column": 66 + "line": 2615, + "column": 50 } } }, { "type": { - "label": "${", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -341363,125 +345326,130 @@ "postfix": false, "binop": null }, - "start": 96543, - "end": 96545, + "value": "cfg", + "start": 97402, + "end": 97405, "loc": { "start": { - "line": 2597, - "column": 66 + "line": 2615, + "column": 51 }, "end": { - "line": 2597, - "column": 68 + "line": 2615, + "column": 54 } } }, { "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": "cfg", - "start": 96545, - "end": 96548, + "start": 97405, + "end": 97406, "loc": { "start": { - "line": 2597, - "column": 68 + "line": 2615, + "column": 54 }, "end": { - "line": 2597, - "column": 71 + "line": 2615, + "column": 55 } } }, { "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": 96548, - "end": 96549, + "value": "emissiveTextureId", + "start": 97406, + "end": 97423, "loc": { "start": { - "line": 2597, - "column": 71 + "line": 2615, + "column": 55 }, "end": { - "line": 2597, + "line": 2615, "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": 6, + "updateContext": null }, - "value": "metallicRoughnessTextureId", - "start": 96549, - "end": 96575, + "value": "!==", + "start": 97424, + "end": 97427, "loc": { "start": { - "line": 2597, - "column": 72 + "line": 2615, + "column": 73 }, "end": { - "line": 2597, - "column": 98 + "line": 2615, + "column": 76 } } }, { "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": 96575, - "end": 96576, + "value": "null", + "start": 97428, + "end": 97432, "loc": { "start": { - "line": 2597, - "column": 98 + "line": 2615, + "column": 77 }, "end": { - "line": 2597, - "column": 99 + "line": 2615, + "column": 81 } } }, { "type": { - "label": "template", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -341489,27 +345457,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": " - ensure that you create it first with createTexture()", - "start": 96576, - "end": 96631, + "start": 97432, + "end": 97433, "loc": { "start": { - "line": 2597, - "column": 99 + "line": 2615, + "column": 81 }, "end": { - "line": 2597, - "column": 154 + "line": 2615, + "column": 82 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -341518,24 +345484,24 @@ "postfix": false, "binop": null }, - "start": 96631, - "end": 96632, + "start": 97434, + "end": 97435, "loc": { "start": { - "line": 2597, - "column": 154 + "line": 2615, + "column": 83 }, "end": { - "line": 2597, - "column": 155 + "line": 2615, + "column": 84 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -341543,51 +345509,53 @@ "postfix": false, "binop": null }, - "start": 96632, - "end": 96633, + "value": "emissiveTexture", + "start": 97448, + "end": 97463, "loc": { "start": { - "line": 2597, - "column": 155 + "line": 2616, + "column": 12 }, "end": { - "line": 2597, - "column": 156 + "line": 2616, + "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": 96633, - "end": 96634, + "value": "=", + "start": 97464, + "end": 97465, "loc": { "start": { - "line": 2597, - "column": 156 + "line": 2616, + "column": 28 }, "end": { - "line": 2597, - "column": 157 + "line": 2616, + "column": 29 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -341596,24 +345564,24 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 96651, - "end": 96657, + "value": "this", + "start": 97466, + "end": 97470, "loc": { "start": { - "line": 2598, - "column": 16 + "line": 2616, + "column": 30 }, "end": { - "line": 2598, - "column": 22 + "line": 2616, + "column": 34 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -341623,24 +345591,24 @@ "binop": null, "updateContext": null }, - "start": 96657, - "end": 96658, + "start": 97470, + "end": 97471, "loc": { "start": { - "line": 2598, - "column": 22 + "line": 2616, + "column": 34 }, "end": { - "line": 2598, - "column": 23 + "line": 2616, + "column": 35 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -341648,94 +345616,95 @@ "postfix": false, "binop": null }, - "start": 96671, - "end": 96672, + "value": "_textures", + "start": 97471, + "end": 97480, "loc": { "start": { - "line": 2599, - "column": 12 + "line": 2616, + "column": 35 }, "end": { - "line": 2599, - "column": 13 + "line": 2616, + "column": 44 } } }, { "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": 96681, - "end": 96682, + "start": 97480, + "end": 97481, "loc": { "start": { - "line": 2600, - "column": 8 + "line": 2616, + "column": 44 }, "end": { - "line": 2600, - "column": 9 + "line": 2616, + "column": 45 } } }, { "type": { - "label": "else", - "keyword": "else", - "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": "else", - "start": 96683, - "end": 96687, + "value": "cfg", + "start": 97481, + "end": 97484, "loc": { "start": { - "line": 2600, - "column": 10 + "line": 2616, + "column": 45 }, "end": { - "line": 2600, - "column": 14 + "line": 2616, + "column": 48 } } }, { "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": 96688, - "end": 96689, + "start": 97484, + "end": 97485, "loc": { "start": { - "line": 2600, - "column": 15 + "line": 2616, + "column": 48 }, "end": { - "line": 2600, - "column": 16 + "line": 2616, + "column": 49 } } }, @@ -341751,53 +345720,51 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTexture", - "start": 96702, - "end": 96726, + "value": "emissiveTextureId", + "start": 97485, + "end": 97502, "loc": { "start": { - "line": 2601, - "column": 12 + "line": 2616, + "column": 49 }, "end": { - "line": 2601, - "column": 36 + "line": 2616, + "column": 66 } } }, { "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": 96727, - "end": 96728, + "start": 97502, + "end": 97503, "loc": { "start": { - "line": 2601, - "column": 37 + "line": 2616, + "column": 66 }, "end": { - "line": 2601, - "column": 38 + "line": 2616, + "column": 67 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -341806,23 +345773,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 96729, - "end": 96733, + "start": 97503, + "end": 97504, "loc": { "start": { - "line": 2601, - "column": 39 + "line": 2616, + "column": 67 }, "end": { - "line": 2601, - "column": 43 + "line": 2616, + "column": 68 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -341833,23 +345800,24 @@ "binop": null, "updateContext": null }, - "start": 96733, - "end": 96734, + "value": "if", + "start": 97517, + "end": 97519, "loc": { "start": { - "line": 2601, - "column": 43 + "line": 2617, + "column": 12 }, "end": { - "line": 2601, - "column": 44 + "line": 2617, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -341858,43 +345826,43 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 96734, - "end": 96743, + "start": 97520, + "end": 97521, "loc": { "start": { - "line": 2601, - "column": 44 + "line": 2617, + "column": 15 }, "end": { - "line": 2601, - "column": 53 + "line": 2617, + "column": 16 } } }, { "type": { - "label": "[", + "label": "prefix", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 96743, - "end": 96744, + "value": "!", + "start": 97521, + "end": 97522, "loc": { "start": { - "line": 2601, - "column": 53 + "line": 2617, + "column": 16 }, "end": { - "line": 2601, - "column": 54 + "line": 2617, + "column": 17 } } }, @@ -341910,23 +345878,23 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_METAL_ROUGH_TEXTURE_ID", - "start": 96744, - "end": 96774, + "value": "emissiveTexture", + "start": 97522, + "end": 97537, "loc": { "start": { - "line": 2601, - "column": 54 + "line": 2617, + "column": 17 }, "end": { - "line": 2601, - "column": 84 + "line": 2617, + "column": 32 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -341934,77 +345902,77 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 96774, - "end": 96775, + "start": 97537, + "end": 97538, "loc": { "start": { - "line": 2601, - "column": 84 + "line": 2617, + "column": 32 }, "end": { - "line": 2601, - "column": 85 + "line": 2617, + "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": 96775, - "end": 96776, + "start": 97539, + "end": 97540, "loc": { "start": { - "line": 2601, - "column": 85 + "line": 2617, + "column": 34 }, "end": { - "line": 2601, - "column": 86 + "line": 2617, + "column": 35 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 96785, - "end": 96786, + "value": "this", + "start": 97557, + "end": 97561, "loc": { "start": { - "line": 2602, - "column": 8 + "line": 2618, + "column": 16 }, "end": { - "line": 2602, - "column": 9 + "line": 2618, + "column": 20 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -342015,17 +345983,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 96795, - "end": 96798, + "start": 97561, + "end": 97562, "loc": { "start": { - "line": 2603, - "column": 8 + "line": 2618, + "column": 20 }, "end": { - "line": 2603, - "column": 11 + "line": 2618, + "column": 21 } } }, @@ -342041,50 +346008,73 @@ "postfix": false, "binop": null }, - "value": "normalsTexture", - "start": 96799, - "end": 96813, + "value": "error", + "start": 97562, + "end": 97567, "loc": { "start": { - "line": 2603, - "column": 12 + "line": 2618, + "column": 21 }, "end": { - "line": 2603, + "line": 2618, "column": 26 } } }, { "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": 96813, - "end": 96814, + "start": 97567, + "end": 97568, "loc": { "start": { - "line": 2603, + "line": 2618, "column": 26 }, "end": { - "line": 2603, + "line": 2618, "column": 27 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 97568, + "end": 97569, + "loc": { + "start": { + "line": 2618, + "column": 27 + }, + "end": { + "line": 2618, + "column": 28 + } + } + }, + { + "type": { + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -342095,23 +346085,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 96823, - "end": 96825, + "value": "[createTextureSet] Texture not found: ", + "start": 97569, + "end": 97607, "loc": { "start": { - "line": 2604, - "column": 8 + "line": 2618, + "column": 28 }, "end": { - "line": 2604, - "column": 10 + "line": 2618, + "column": 66 } } }, { "type": { - "label": "(", + "label": "${", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -342121,16 +346111,16 @@ "postfix": false, "binop": null }, - "start": 96826, - "end": 96827, + "start": 97607, + "end": 97609, "loc": { "start": { - "line": 2604, - "column": 11 + "line": 2618, + "column": 66 }, "end": { - "line": 2604, - "column": 12 + "line": 2618, + "column": 68 } } }, @@ -342147,16 +346137,16 @@ "binop": null }, "value": "cfg", - "start": 96827, - "end": 96830, + "start": 97609, + "end": 97612, "loc": { "start": { - "line": 2604, - "column": 12 + "line": 2618, + "column": 68 }, "end": { - "line": 2604, - "column": 15 + "line": 2618, + "column": 71 } } }, @@ -342173,16 +346163,16 @@ "binop": null, "updateContext": null }, - "start": 96830, - "end": 96831, + "start": 97612, + "end": 97613, "loc": { "start": { - "line": 2604, - "column": 15 + "line": 2618, + "column": 71 }, "end": { - "line": 2604, - "column": 16 + "line": 2618, + "column": 72 } } }, @@ -342198,105 +346188,102 @@ "postfix": false, "binop": null }, - "value": "normalsTextureId", - "start": 96831, - "end": 96847, + "value": "emissiveTextureId", + "start": 97613, + "end": 97630, "loc": { "start": { - "line": 2604, - "column": 16 + "line": 2618, + "column": 72 }, "end": { - "line": 2604, - "column": 32 + "line": 2618, + "column": 89 } } }, { "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": 96848, - "end": 96851, + "start": 97630, + "end": 97631, "loc": { "start": { - "line": 2604, - "column": 33 + "line": 2618, + "column": 89 }, "end": { - "line": 2604, - "column": 36 + "line": 2618, + "column": 90 } } }, { "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": "undefined", - "start": 96852, - "end": 96861, + "value": " - ensure that you create it first with createTexture()", + "start": 97631, + "end": 97686, "loc": { "start": { - "line": 2604, - "column": 37 + "line": 2618, + "column": 90 }, "end": { - "line": 2604, - "column": 46 + "line": 2618, + "column": 145 } } }, { "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, + "label": "`", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 96862, - "end": 96864, + "start": 97686, + "end": 97687, "loc": { "start": { - "line": 2604, - "column": 47 + "line": 2618, + "column": 145 }, "end": { - "line": 2604, - "column": 49 + "line": 2618, + "column": 146 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -342304,24 +346291,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 96865, - "end": 96868, + "start": 97687, + "end": 97688, "loc": { "start": { - "line": 2604, - "column": 50 + "line": 2618, + "column": 146 }, "end": { - "line": 2604, - "column": 53 + "line": 2618, + "column": 147 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -342331,48 +346317,50 @@ "binop": null, "updateContext": null }, - "start": 96868, - "end": 96869, + "start": 97688, + "end": 97689, "loc": { "start": { - "line": 2604, - "column": 53 + "line": 2618, + "column": 147 }, "end": { - "line": 2604, - "column": 54 + "line": 2618, + "column": 148 } } }, { "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": "normalsTextureId", - "start": 96869, - "end": 96885, + "value": "return", + "start": 97706, + "end": 97712, "loc": { "start": { - "line": 2604, - "column": 54 + "line": 2619, + "column": 16 }, "end": { - "line": 2604, - "column": 70 + "line": 2619, + "column": 22 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -342380,54 +346368,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 96886, - "end": 96889, + "start": 97712, + "end": 97713, "loc": { "start": { - "line": 2604, - "column": 71 + "line": 2619, + "column": 22 }, "end": { - "line": 2604, - "column": 74 + "line": 2619, + "column": 23 } } }, { "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": 96890, - "end": 96894, + "start": 97726, + "end": 97727, "loc": { "start": { - "line": 2604, - "column": 75 + "line": 2620, + "column": 12 }, "end": { - "line": 2604, - "column": 79 + "line": 2620, + "column": 13 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -342437,16 +346421,44 @@ "postfix": false, "binop": null }, - "start": 96894, - "end": 96895, + "start": 97736, + "end": 97737, "loc": { "start": { - "line": 2604, - "column": 79 + "line": 2621, + "column": 8 }, "end": { - "line": 2604, - "column": 80 + "line": 2621, + "column": 9 + } + } + }, + { + "type": { + "label": "else", + "keyword": "else", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "else", + "start": 97738, + "end": 97742, + "loc": { + "start": { + "line": 2621, + "column": 10 + }, + "end": { + "line": 2621, + "column": 14 } } }, @@ -342462,16 +346474,16 @@ "postfix": false, "binop": null }, - "start": 96896, - "end": 96897, + "start": 97743, + "end": 97744, "loc": { "start": { - "line": 2604, - "column": 81 + "line": 2621, + "column": 15 }, "end": { - "line": 2604, - "column": 82 + "line": 2621, + "column": 16 } } }, @@ -342487,17 +346499,17 @@ "postfix": false, "binop": null }, - "value": "normalsTexture", - "start": 96910, - "end": 96924, + "value": "emissiveTexture", + "start": 97757, + "end": 97772, "loc": { "start": { - "line": 2605, + "line": 2622, "column": 12 }, "end": { - "line": 2605, - "column": 26 + "line": 2622, + "column": 27 } } }, @@ -342515,16 +346527,16 @@ "updateContext": null }, "value": "=", - "start": 96925, - "end": 96926, + "start": 97773, + "end": 97774, "loc": { "start": { - "line": 2605, - "column": 27 + "line": 2622, + "column": 28 }, "end": { - "line": 2605, - "column": 28 + "line": 2622, + "column": 29 } } }, @@ -342543,16 +346555,16 @@ "updateContext": null }, "value": "this", - "start": 96927, - "end": 96931, + "start": 97775, + "end": 97779, "loc": { "start": { - "line": 2605, - "column": 29 + "line": 2622, + "column": 30 }, "end": { - "line": 2605, - "column": 33 + "line": 2622, + "column": 34 } } }, @@ -342569,16 +346581,16 @@ "binop": null, "updateContext": null }, - "start": 96931, - "end": 96932, + "start": 97779, + "end": 97780, "loc": { "start": { - "line": 2605, - "column": 33 + "line": 2622, + "column": 34 }, "end": { - "line": 2605, - "column": 34 + "line": 2622, + "column": 35 } } }, @@ -342595,16 +346607,16 @@ "binop": null }, "value": "_textures", - "start": 96932, - "end": 96941, + "start": 97780, + "end": 97789, "loc": { "start": { - "line": 2605, - "column": 34 + "line": 2622, + "column": 35 }, "end": { - "line": 2605, - "column": 43 + "line": 2622, + "column": 44 } } }, @@ -342621,16 +346633,16 @@ "binop": null, "updateContext": null }, - "start": 96941, - "end": 96942, + "start": 97789, + "end": 97790, "loc": { "start": { - "line": 2605, - "column": 43 + "line": 2622, + "column": 44 }, "end": { - "line": 2605, - "column": 44 + "line": 2622, + "column": 45 } } }, @@ -342646,23 +346658,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 96942, - "end": 96945, + "value": "DEFAULT_EMISSIVE_TEXTURE_ID", + "start": 97790, + "end": 97817, "loc": { "start": { - "line": 2605, - "column": 44 + "line": 2622, + "column": 45 }, "end": { - "line": 2605, - "column": 47 + "line": 2622, + "column": 72 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -342673,49 +346685,23 @@ "binop": null, "updateContext": null }, - "start": 96945, - "end": 96946, - "loc": { - "start": { - "line": 2605, - "column": 47 - }, - "end": { - "line": 2605, - "column": 48 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "normalsTextureId", - "start": 96946, - "end": 96962, + "start": 97817, + "end": 97818, "loc": { "start": { - "line": 2605, - "column": 48 + "line": 2622, + "column": 72 }, "end": { - "line": 2605, - "column": 64 + "line": 2622, + "column": 73 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -342725,49 +346711,48 @@ "binop": null, "updateContext": null }, - "start": 96962, - "end": 96963, + "start": 97818, + "end": 97819, "loc": { "start": { - "line": 2605, - "column": 64 + "line": 2622, + "column": 73 }, "end": { - "line": 2605, - "column": 65 + "line": 2622, + "column": 74 } } }, { "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": 96963, - "end": 96964, + "start": 97828, + "end": 97829, "loc": { "start": { - "line": 2605, - "column": 65 + "line": 2623, + "column": 8 }, "end": { - "line": 2605, - "column": 66 + "line": 2623, + "column": 9 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -342778,24 +346763,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 96977, - "end": 96979, + "value": "let", + "start": 97838, + "end": 97841, "loc": { "start": { - "line": 2606, - "column": 12 + "line": 2624, + "column": 8 }, "end": { - "line": 2606, - "column": 14 + "line": 2624, + "column": 11 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -342804,75 +346789,50 @@ "postfix": false, "binop": null }, - "start": 96980, - "end": 96981, + "value": "occlusionTexture", + "start": 97842, + "end": 97858, "loc": { "start": { - "line": 2606, - "column": 15 + "line": 2624, + "column": 12 }, "end": { - "line": 2606, - "column": 16 + "line": 2624, + "column": 28 } } }, { "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": 96981, - "end": 96982, - "loc": { - "start": { - "line": 2606, - "column": 16 - }, - "end": { - "line": 2606, - "column": 17 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "normalsTexture", - "start": 96982, - "end": 96996, + "start": 97858, + "end": 97859, "loc": { "start": { - "line": 2606, - "column": 17 + "line": 2624, + "column": 28 }, "end": { - "line": 2606, - "column": 31 + "line": 2624, + "column": 29 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -342880,24 +346840,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 96996, - "end": 96997, + "value": "if", + "start": 97868, + "end": 97870, "loc": { "start": { - "line": 2606, - "column": 31 + "line": 2625, + "column": 8 }, "end": { - "line": 2606, - "column": 32 + "line": 2625, + "column": 10 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -342907,23 +346869,22 @@ "postfix": false, "binop": null }, - "start": 96998, - "end": 96999, + "start": 97871, + "end": 97872, "loc": { "start": { - "line": 2606, - "column": 33 + "line": 2625, + "column": 11 }, "end": { - "line": 2606, - "column": 34 + "line": 2625, + "column": 12 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -342931,20 +346892,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 97016, - "end": 97020, + "value": "cfg", + "start": 97872, + "end": 97875, "loc": { "start": { - "line": 2607, - "column": 16 + "line": 2625, + "column": 12 }, "end": { - "line": 2607, - "column": 20 + "line": 2625, + "column": 15 } } }, @@ -342958,52 +346918,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 97020, - "end": 97021, - "loc": { - "start": { - "line": 2607, - "column": 20 - }, - "end": { - "line": 2607, - "column": 21 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "error", - "start": 97021, - "end": 97026, + "start": 97875, + "end": 97876, "loc": { "start": { - "line": 2607, - "column": 21 + "line": 2625, + "column": 15 }, "end": { - "line": 2607, - "column": 26 + "line": 2625, + "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -343012,93 +346946,97 @@ "postfix": false, "binop": null }, - "start": 97026, - "end": 97027, + "value": "occlusionTextureId", + "start": 97876, + "end": 97894, "loc": { "start": { - "line": 2607, - "column": 26 + "line": 2625, + "column": 16 }, "end": { - "line": 2607, - "column": 27 + "line": 2625, + "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": 6, + "updateContext": null }, - "start": 97027, - "end": 97028, + "value": "!==", + "start": 97895, + "end": 97898, "loc": { "start": { - "line": 2607, - "column": 27 + "line": 2625, + "column": 35 }, "end": { - "line": 2607, - "column": 28 + "line": 2625, + "column": 38 } } }, { "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": "[createTextureSet] Texture not found: ", - "start": 97028, - "end": 97066, + "value": "undefined", + "start": 97899, + "end": 97908, "loc": { "start": { - "line": 2607, - "column": 28 + "line": 2625, + "column": 39 }, "end": { - "line": 2607, - "column": 66 + "line": 2625, + "column": 48 } } }, { "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": 97066, - "end": 97068, + "value": "&&", + "start": 97909, + "end": 97911, "loc": { "start": { - "line": 2607, - "column": 66 + "line": 2625, + "column": 49 }, "end": { - "line": 2607, - "column": 68 + "line": 2625, + "column": 51 } } }, @@ -343115,16 +347053,16 @@ "binop": null }, "value": "cfg", - "start": 97068, - "end": 97071, + "start": 97912, + "end": 97915, "loc": { "start": { - "line": 2607, - "column": 68 + "line": 2625, + "column": 52 }, "end": { - "line": 2607, - "column": 71 + "line": 2625, + "column": 55 } } }, @@ -343141,16 +347079,16 @@ "binop": null, "updateContext": null }, - "start": 97071, - "end": 97072, + "start": 97915, + "end": 97916, "loc": { "start": { - "line": 2607, - "column": 71 + "line": 2625, + "column": 55 }, "end": { - "line": 2607, - "column": 72 + "line": 2625, + "column": 56 } } }, @@ -343166,50 +347104,53 @@ "postfix": false, "binop": null }, - "value": "normalsTextureId", - "start": 97072, - "end": 97088, + "value": "occlusionTextureId", + "start": 97916, + "end": 97934, "loc": { "start": { - "line": 2607, - "column": 72 + "line": 2625, + "column": 56 }, "end": { - "line": 2607, - "column": 88 + "line": 2625, + "column": 74 } } }, { "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": 97088, - "end": 97089, + "value": "!==", + "start": 97935, + "end": 97938, "loc": { "start": { - "line": 2607, - "column": 88 + "line": 2625, + "column": 75 }, "end": { - "line": 2607, - "column": 89 + "line": 2625, + "column": 78 } } }, { "type": { - "label": "template", + "label": "null", + "keyword": "null", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -343218,25 +347159,25 @@ "binop": null, "updateContext": null }, - "value": " - ensure that you create it first with createTexture()", - "start": 97089, - "end": 97144, + "value": "null", + "start": 97939, + "end": 97943, "loc": { "start": { - "line": 2607, - "column": 89 + "line": 2625, + "column": 79 }, "end": { - "line": 2607, - "column": 144 + "line": 2625, + "column": 83 } } }, { "type": { - "label": "`", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -343244,24 +347185,24 @@ "postfix": false, "binop": null }, - "start": 97144, - "end": 97145, + "start": 97943, + "end": 97944, "loc": { "start": { - "line": 2607, - "column": 144 + "line": 2625, + "column": 83 }, "end": { - "line": 2607, - "column": 145 + "line": 2625, + "column": 84 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -343269,78 +347210,78 @@ "postfix": false, "binop": null }, - "start": 97145, - "end": 97146, + "start": 97945, + "end": 97946, "loc": { "start": { - "line": 2607, - "column": 145 + "line": 2625, + "column": 85 }, "end": { - "line": 2607, - "column": 146 + "line": 2625, + "column": 86 } } }, { "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": 97146, - "end": 97147, + "value": "occlusionTexture", + "start": 97959, + "end": 97975, "loc": { "start": { - "line": 2607, - "column": 146 + "line": 2626, + "column": 12 }, "end": { - "line": 2607, - "column": 147 + "line": 2626, + "column": 28 } } }, { "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": 97164, - "end": 97170, + "value": "=", + "start": 97976, + "end": 97977, "loc": { "start": { - "line": 2608, - "column": 16 + "line": 2626, + "column": 29 }, "end": { - "line": 2608, - "column": 22 + "line": 2626, + "column": 30 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -343349,22 +347290,23 @@ "binop": null, "updateContext": null }, - "start": 97170, - "end": 97171, + "value": "this", + "start": 97978, + "end": 97982, "loc": { "start": { - "line": 2608, - "column": 22 + "line": 2626, + "column": 31 }, "end": { - "line": 2608, - "column": 23 + "line": 2626, + "column": 35 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -343372,26 +347314,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 97184, - "end": 97185, + "start": 97982, + "end": 97983, "loc": { "start": { - "line": 2609, - "column": 12 + "line": 2626, + "column": 35 }, "end": { - "line": 2609, - "column": 13 + "line": 2626, + "column": 36 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -343399,25 +347342,25 @@ "postfix": false, "binop": null }, - "start": 97194, - "end": 97195, + "value": "_textures", + "start": 97983, + "end": 97992, "loc": { "start": { - "line": 2610, - "column": 8 + "line": 2626, + "column": 36 }, "end": { - "line": 2610, - "column": 9 + "line": 2626, + "column": 45 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -343426,24 +347369,23 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 97196, - "end": 97200, + "start": 97992, + "end": 97993, "loc": { "start": { - "line": 2610, - "column": 10 + "line": 2626, + "column": 45 }, "end": { - "line": 2610, - "column": 14 + "line": 2626, + "column": 46 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -343452,16 +347394,43 @@ "postfix": false, "binop": null }, - "start": 97201, - "end": 97202, + "value": "cfg", + "start": 97993, + "end": 97996, "loc": { "start": { - "line": 2610, - "column": 15 + "line": 2626, + "column": 46 }, "end": { - "line": 2610, - "column": 16 + "line": 2626, + "column": 49 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 97996, + "end": 97997, + "loc": { + "start": { + "line": 2626, + "column": 49 + }, + "end": { + "line": 2626, + "column": 50 } } }, @@ -343477,53 +347446,51 @@ "postfix": false, "binop": null }, - "value": "normalsTexture", - "start": 97215, - "end": 97229, + "value": "occlusionTextureId", + "start": 97997, + "end": 98015, "loc": { "start": { - "line": 2611, - "column": 12 + "line": 2626, + "column": 50 }, "end": { - "line": 2611, - "column": 26 + "line": 2626, + "column": 68 } } }, { "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": 97230, - "end": 97231, + "start": 98015, + "end": 98016, "loc": { "start": { - "line": 2611, - "column": 27 + "line": 2626, + "column": 68 }, "end": { - "line": 2611, - "column": 28 + "line": 2626, + "column": 69 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -343532,23 +347499,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 97232, - "end": 97236, + "start": 98016, + "end": 98017, "loc": { "start": { - "line": 2611, - "column": 29 + "line": 2626, + "column": 69 }, "end": { - "line": 2611, - "column": 33 + "line": 2626, + "column": 70 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -343559,23 +347526,24 @@ "binop": null, "updateContext": null }, - "start": 97236, - "end": 97237, + "value": "if", + "start": 98030, + "end": 98032, "loc": { "start": { - "line": 2611, - "column": 33 + "line": 2627, + "column": 12 }, "end": { - "line": 2611, - "column": 34 + "line": 2627, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -343584,43 +347552,43 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 97237, - "end": 97246, + "start": 98033, + "end": 98034, "loc": { "start": { - "line": 2611, - "column": 34 + "line": 2627, + "column": 15 }, "end": { - "line": 2611, - "column": 43 + "line": 2627, + "column": 16 } } }, { "type": { - "label": "[", + "label": "prefix", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 97246, - "end": 97247, + "value": "!", + "start": 98034, + "end": 98035, "loc": { "start": { - "line": 2611, - "column": 43 + "line": 2627, + "column": 16 }, "end": { - "line": 2611, - "column": 44 + "line": 2627, + "column": 17 } } }, @@ -343636,23 +347604,23 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_NORMALS_TEXTURE_ID", - "start": 97247, - "end": 97273, + "value": "occlusionTexture", + "start": 98035, + "end": 98051, "loc": { "start": { - "line": 2611, - "column": 44 + "line": 2627, + "column": 17 }, "end": { - "line": 2611, - "column": 70 + "line": 2627, + "column": 33 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -343660,77 +347628,77 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 97273, - "end": 97274, + "start": 98051, + "end": 98052, "loc": { "start": { - "line": 2611, - "column": 70 + "line": 2627, + "column": 33 }, "end": { - "line": 2611, - "column": 71 + "line": 2627, + "column": 34 } } }, { "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": 97274, - "end": 97275, + "start": 98053, + "end": 98054, "loc": { "start": { - "line": 2611, - "column": 71 + "line": 2627, + "column": 35 }, "end": { - "line": 2611, - "column": 72 + "line": 2627, + "column": 36 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 97284, - "end": 97285, + "value": "this", + "start": 98071, + "end": 98075, "loc": { "start": { - "line": 2612, - "column": 8 + "line": 2628, + "column": 16 }, "end": { - "line": 2612, - "column": 9 + "line": 2628, + "column": 20 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -343741,17 +347709,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 97294, - "end": 97297, + "start": 98075, + "end": 98076, "loc": { "start": { - "line": 2613, - "column": 8 + "line": 2628, + "column": 20 }, "end": { - "line": 2613, - "column": 11 + "line": 2628, + "column": 21 } } }, @@ -343767,50 +347734,73 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 97298, - "end": 97313, + "value": "error", + "start": 98076, + "end": 98081, "loc": { "start": { - "line": 2613, - "column": 12 + "line": 2628, + "column": 21 }, "end": { - "line": 2613, - "column": 27 + "line": 2628, + "column": 26 } } }, { "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": 97313, - "end": 97314, + "start": 98081, + "end": 98082, "loc": { "start": { - "line": 2613, + "line": 2628, + "column": 26 + }, + "end": { + "line": 2628, + "column": 27 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 98082, + "end": 98083, + "loc": { + "start": { + "line": 2628, "column": 27 }, "end": { - "line": 2613, + "line": 2628, "column": 28 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -343821,23 +347811,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 97323, - "end": 97325, + "value": "[createTextureSet] Texture not found: ", + "start": 98083, + "end": 98121, "loc": { "start": { - "line": 2614, - "column": 8 + "line": 2628, + "column": 28 }, "end": { - "line": 2614, - "column": 10 + "line": 2628, + "column": 66 } } }, { "type": { - "label": "(", + "label": "${", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -343847,16 +347837,16 @@ "postfix": false, "binop": null }, - "start": 97326, - "end": 97327, + "start": 98121, + "end": 98123, "loc": { "start": { - "line": 2614, - "column": 11 + "line": 2628, + "column": 66 }, "end": { - "line": 2614, - "column": 12 + "line": 2628, + "column": 68 } } }, @@ -343873,16 +347863,16 @@ "binop": null }, "value": "cfg", - "start": 97327, - "end": 97330, + "start": 98123, + "end": 98126, "loc": { "start": { - "line": 2614, - "column": 12 + "line": 2628, + "column": 68 }, "end": { - "line": 2614, - "column": 15 + "line": 2628, + "column": 71 } } }, @@ -343899,16 +347889,16 @@ "binop": null, "updateContext": null }, - "start": 97330, - "end": 97331, + "start": 98126, + "end": 98127, "loc": { "start": { - "line": 2614, - "column": 15 + "line": 2628, + "column": 71 }, "end": { - "line": 2614, - "column": 16 + "line": 2628, + "column": 72 } } }, @@ -343924,105 +347914,102 @@ "postfix": false, "binop": null }, - "value": "emissiveTextureId", - "start": 97331, - "end": 97348, + "value": "occlusionTextureId", + "start": 98127, + "end": 98145, "loc": { "start": { - "line": 2614, - "column": 16 + "line": 2628, + "column": 72 }, "end": { - "line": 2614, - "column": 33 + "line": 2628, + "column": 90 } } }, { "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": 97349, - "end": 97352, + "start": 98145, + "end": 98146, "loc": { "start": { - "line": 2614, - "column": 34 + "line": 2628, + "column": 90 }, "end": { - "line": 2614, - "column": 37 + "line": 2628, + "column": 91 } } }, { "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": "undefined", - "start": 97353, - "end": 97362, + "value": " - ensure that you create it first with createTexture()", + "start": 98146, + "end": 98201, "loc": { "start": { - "line": 2614, - "column": 38 + "line": 2628, + "column": 91 }, "end": { - "line": 2614, - "column": 47 + "line": 2628, + "column": 146 } } }, { "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, + "label": "`", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 97363, - "end": 97365, + "start": 98201, + "end": 98202, "loc": { "start": { - "line": 2614, - "column": 48 + "line": 2628, + "column": 146 }, "end": { - "line": 2614, - "column": 50 + "line": 2628, + "column": 147 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -344030,24 +348017,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 97366, - "end": 97369, + "start": 98202, + "end": 98203, "loc": { "start": { - "line": 2614, - "column": 51 + "line": 2628, + "column": 147 }, "end": { - "line": 2614, - "column": 54 + "line": 2628, + "column": 148 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -344057,48 +348043,50 @@ "binop": null, "updateContext": null }, - "start": 97369, - "end": 97370, + "start": 98203, + "end": 98204, "loc": { "start": { - "line": 2614, - "column": 54 + "line": 2628, + "column": 148 }, "end": { - "line": 2614, - "column": 55 + "line": 2628, + "column": 149 } } }, { "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": "emissiveTextureId", - "start": 97370, - "end": 97387, + "value": "return", + "start": 98221, + "end": 98227, "loc": { "start": { - "line": 2614, - "column": 55 + "line": 2629, + "column": 16 }, "end": { - "line": 2614, - "column": 72 + "line": 2629, + "column": 22 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -344106,54 +348094,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 97388, - "end": 97391, + "start": 98227, + "end": 98228, "loc": { "start": { - "line": 2614, - "column": 73 + "line": 2629, + "column": 22 }, "end": { - "line": 2614, - "column": 76 + "line": 2629, + "column": 23 } } }, { "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": 97392, - "end": 97396, + "start": 98241, + "end": 98242, "loc": { "start": { - "line": 2614, - "column": 77 + "line": 2630, + "column": 12 }, "end": { - "line": 2614, - "column": 81 + "line": 2630, + "column": 13 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -344163,16 +348147,44 @@ "postfix": false, "binop": null }, - "start": 97396, - "end": 97397, + "start": 98251, + "end": 98252, "loc": { "start": { - "line": 2614, - "column": 81 + "line": 2631, + "column": 8 }, "end": { - "line": 2614, - "column": 82 + "line": 2631, + "column": 9 + } + } + }, + { + "type": { + "label": "else", + "keyword": "else", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "else", + "start": 98253, + "end": 98257, + "loc": { + "start": { + "line": 2631, + "column": 10 + }, + "end": { + "line": 2631, + "column": 14 } } }, @@ -344188,16 +348200,16 @@ "postfix": false, "binop": null }, - "start": 97398, - "end": 97399, + "start": 98258, + "end": 98259, "loc": { "start": { - "line": 2614, - "column": 83 + "line": 2631, + "column": 15 }, "end": { - "line": 2614, - "column": 84 + "line": 2631, + "column": 16 } } }, @@ -344213,17 +348225,17 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 97412, - "end": 97427, + "value": "occlusionTexture", + "start": 98272, + "end": 98288, "loc": { "start": { - "line": 2615, + "line": 2632, "column": 12 }, "end": { - "line": 2615, - "column": 27 + "line": 2632, + "column": 28 } } }, @@ -344241,16 +348253,16 @@ "updateContext": null }, "value": "=", - "start": 97428, - "end": 97429, + "start": 98289, + "end": 98290, "loc": { "start": { - "line": 2615, - "column": 28 + "line": 2632, + "column": 29 }, "end": { - "line": 2615, - "column": 29 + "line": 2632, + "column": 30 } } }, @@ -344269,16 +348281,16 @@ "updateContext": null }, "value": "this", - "start": 97430, - "end": 97434, + "start": 98291, + "end": 98295, "loc": { "start": { - "line": 2615, - "column": 30 + "line": 2632, + "column": 31 }, "end": { - "line": 2615, - "column": 34 + "line": 2632, + "column": 35 } } }, @@ -344295,16 +348307,16 @@ "binop": null, "updateContext": null }, - "start": 97434, - "end": 97435, + "start": 98295, + "end": 98296, "loc": { "start": { - "line": 2615, - "column": 34 + "line": 2632, + "column": 35 }, "end": { - "line": 2615, - "column": 35 + "line": 2632, + "column": 36 } } }, @@ -344321,16 +348333,16 @@ "binop": null }, "value": "_textures", - "start": 97435, - "end": 97444, + "start": 98296, + "end": 98305, "loc": { "start": { - "line": 2615, - "column": 35 + "line": 2632, + "column": 36 }, "end": { - "line": 2615, - "column": 44 + "line": 2632, + "column": 45 } } }, @@ -344347,68 +348359,16 @@ "binop": null, "updateContext": null }, - "start": 97444, - "end": 97445, - "loc": { - "start": { - "line": 2615, - "column": 44 - }, - "end": { - "line": 2615, - "column": 45 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "cfg", - "start": 97445, - "end": 97448, + "start": 98305, + "end": 98306, "loc": { "start": { - "line": 2615, + "line": 2632, "column": 45 }, "end": { - "line": 2615, - "column": 48 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 97448, - "end": 97449, - "loc": { - "start": { - "line": 2615, - "column": 48 - }, - "end": { - "line": 2615, - "column": 49 + "line": 2632, + "column": 46 } } }, @@ -344424,17 +348384,17 @@ "postfix": false, "binop": null }, - "value": "emissiveTextureId", - "start": 97449, - "end": 97466, + "value": "DEFAULT_OCCLUSION_TEXTURE_ID", + "start": 98306, + "end": 98334, "loc": { "start": { - "line": 2615, - "column": 49 + "line": 2632, + "column": 46 }, "end": { - "line": 2615, - "column": 66 + "line": 2632, + "column": 74 } } }, @@ -344451,16 +348411,16 @@ "binop": null, "updateContext": null }, - "start": 97466, - "end": 97467, + "start": 98334, + "end": 98335, "loc": { "start": { - "line": 2615, - "column": 66 + "line": 2632, + "column": 74 }, "end": { - "line": 2615, - "column": 67 + "line": 2632, + "column": 75 } } }, @@ -344477,23 +348437,22 @@ "binop": null, "updateContext": null }, - "start": 97467, - "end": 97468, + "start": 98335, + "end": 98336, "loc": { "start": { - "line": 2615, - "column": 67 + "line": 2632, + "column": 75 }, "end": { - "line": 2615, - "column": 68 + "line": 2632, + "column": 76 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -344501,72 +348460,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "if", - "start": 97481, - "end": 97483, - "loc": { - "start": { - "line": 2616, - "column": 12 - }, - "end": { - "line": 2616, - "column": 14 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "start": 97484, - "end": 97485, + "start": 98345, + "end": 98346, "loc": { "start": { - "line": 2616, - "column": 15 + "line": 2633, + "column": 8 }, "end": { - "line": 2616, - "column": 16 + "line": 2633, + "column": 9 } } }, { "type": { - "label": "prefix", - "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": null, "updateContext": null }, - "value": "!", - "start": 97485, - "end": 97486, + "value": "const", + "start": 98355, + "end": 98360, "loc": { "start": { - "line": 2616, - "column": 16 + "line": 2634, + "column": 8 }, "end": { - "line": 2616, - "column": 17 + "line": 2634, + "column": 13 } } }, @@ -344582,48 +348515,51 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 97486, - "end": 97501, + "value": "textureSet", + "start": 98361, + "end": 98371, "loc": { "start": { - "line": 2616, - "column": 17 + "line": 2634, + "column": 14 }, "end": { - "line": 2616, - "column": 32 + "line": 2634, + "column": 24 } } }, { "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": 97501, - "end": 97502, + "value": "=", + "start": 98372, + "end": 98373, "loc": { "start": { - "line": 2616, - "column": 32 + "line": 2634, + "column": 25 }, "end": { - "line": 2616, - "column": 33 + "line": 2634, + "column": 26 } } }, { "type": { - "label": "{", + "label": "new", + "keyword": "new", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -344631,25 +348567,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 97503, - "end": 97504, + "value": "new", + "start": 98374, + "end": 98377, "loc": { "start": { - "line": 2616, - "column": 34 + "line": 2634, + "column": 27 }, "end": { - "line": 2616, - "column": 35 + "line": 2634, + "column": 30 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -344657,53 +348594,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 97521, - "end": 97525, + "value": "SceneModelTextureSet", + "start": 98378, + "end": 98398, "loc": { "start": { - "line": 2617, - "column": 16 + "line": 2634, + "column": 31 }, "end": { - "line": 2617, - "column": 20 + "line": 2634, + "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, - "updateContext": null + "binop": null }, - "start": 97525, - "end": 97526, + "start": 98398, + "end": 98399, "loc": { "start": { - "line": 2617, - "column": 20 + "line": 2634, + "column": 51 }, "end": { - "line": 2617, - "column": 21 + "line": 2634, + "column": 52 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -344712,24 +348647,23 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 97526, - "end": 97531, + "start": 98399, + "end": 98400, "loc": { "start": { - "line": 2617, - "column": 21 + "line": 2634, + "column": 52 }, "end": { - "line": 2617, - "column": 26 + "line": 2634, + "column": 53 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -344738,93 +348672,95 @@ "postfix": false, "binop": null }, - "start": 97531, - "end": 97532, + "value": "id", + "start": 98413, + "end": 98415, "loc": { "start": { - "line": 2617, - "column": 26 + "line": 2635, + "column": 12 }, "end": { - "line": 2617, - "column": 27 + "line": 2635, + "column": 14 } } }, { "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": 97532, - "end": 97533, + "start": 98415, + "end": 98416, "loc": { "start": { - "line": 2617, - "column": 27 + "line": 2635, + "column": 14 }, "end": { - "line": 2617, - "column": 28 + "line": 2635, + "column": 15 } } }, { "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": "[createTextureSet] Texture not found: ", - "start": 97533, - "end": 97571, + "value": "textureSetId", + "start": 98417, + "end": 98429, "loc": { "start": { - "line": 2617, - "column": 28 + "line": 2635, + "column": 16 }, "end": { - "line": 2617, - "column": 66 + "line": 2635, + "column": 28 } } }, { "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": 97571, - "end": 97573, + "start": 98429, + "end": 98430, "loc": { "start": { - "line": 2617, - "column": 66 + "line": 2635, + "column": 28 }, "end": { - "line": 2617, - "column": 68 + "line": 2635, + "column": 29 } } }, @@ -344840,24 +348776,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 97573, - "end": 97576, + "value": "model", + "start": 98443, + "end": 98448, "loc": { "start": { - "line": 2617, - "column": 68 + "line": 2636, + "column": 12 }, "end": { - "line": 2617, - "column": 71 + "line": 2636, + "column": 17 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -344867,22 +348803,23 @@ "binop": null, "updateContext": null }, - "start": 97576, - "end": 97577, + "start": 98448, + "end": 98449, "loc": { "start": { - "line": 2617, - "column": 71 + "line": 2636, + "column": 17 }, "end": { - "line": 2617, - "column": 72 + "line": 2636, + "column": 18 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -344890,104 +348827,106 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "emissiveTextureId", - "start": 97577, - "end": 97594, + "value": "this", + "start": 98450, + "end": 98454, "loc": { "start": { - "line": 2617, - "column": 72 + "line": 2636, + "column": 19 }, "end": { - "line": 2617, - "column": 89 + "line": 2636, + "column": 23 } } }, { "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": 97594, - "end": 97595, + "start": 98454, + "end": 98455, "loc": { "start": { - "line": 2617, - "column": 89 + "line": 2636, + "column": 23 }, "end": { - "line": 2617, - "column": 90 + "line": 2636, + "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": " - ensure that you create it first with createTexture()", - "start": 97595, - "end": 97650, + "value": "colorTexture", + "start": 98468, + "end": 98480, "loc": { "start": { - "line": 2617, - "column": 90 + "line": 2637, + "column": 12 }, "end": { - "line": 2617, - "column": 145 + "line": 2637, + "column": 24 } } }, { "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": 97650, - "end": 97651, + "start": 98480, + "end": 98481, "loc": { "start": { - "line": 2617, - "column": 145 + "line": 2637, + "column": 24 }, "end": { - "line": 2617, - "column": 146 + "line": 2637, + "column": 25 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -344995,22 +348934,23 @@ "postfix": false, "binop": null }, - "start": 97651, - "end": 97652, + "value": "metallicRoughnessTexture", + "start": 98494, + "end": 98518, "loc": { "start": { - "line": 2617, - "column": 146 + "line": 2638, + "column": 12 }, "end": { - "line": 2617, - "column": 147 + "line": 2638, + "column": 36 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -345021,50 +348961,48 @@ "binop": null, "updateContext": null }, - "start": 97652, - "end": 97653, + "start": 98518, + "end": 98519, "loc": { "start": { - "line": 2617, - "column": 147 + "line": 2638, + "column": 36 }, "end": { - "line": 2617, - "column": 148 + "line": 2638, + "column": 37 } } }, { "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": 97670, - "end": 97676, + "value": "normalsTexture", + "start": 98532, + "end": 98546, "loc": { "start": { - "line": 2618, - "column": 16 + "line": 2639, + "column": 12 }, "end": { - "line": 2618, - "column": 22 + "line": 2639, + "column": 26 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -345075,24 +349013,24 @@ "binop": null, "updateContext": null }, - "start": 97676, - "end": 97677, + "start": 98546, + "end": 98547, "loc": { "start": { - "line": 2618, - "column": 22 + "line": 2639, + "column": 26 }, "end": { - "line": 2618, - "column": 23 + "line": 2639, + "column": 27 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -345100,77 +349038,77 @@ "postfix": false, "binop": null }, - "start": 97690, - "end": 97691, + "value": "emissiveTexture", + "start": 98560, + "end": 98575, "loc": { "start": { - "line": 2619, + "line": 2640, "column": 12 }, "end": { - "line": 2619, - "column": 13 + "line": 2640, + "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": 97700, - "end": 97701, + "start": 98575, + "end": 98576, "loc": { "start": { - "line": 2620, - "column": 8 + "line": 2640, + "column": 27 }, "end": { - "line": 2620, - "column": 9 + "line": 2640, + "column": 28 } } }, { "type": { - "label": "else", - "keyword": "else", - "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": "else", - "start": 97702, - "end": 97706, + "value": "occlusionTexture", + "start": 98589, + "end": 98605, "loc": { "start": { - "line": 2620, - "column": 10 + "line": 2641, + "column": 12 }, "end": { - "line": 2620, - "column": 14 + "line": 2641, + "column": 28 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -345178,24 +349116,24 @@ "postfix": false, "binop": null }, - "start": 97707, - "end": 97708, + "start": 98614, + "end": 98615, "loc": { "start": { - "line": 2620, - "column": 15 + "line": 2642, + "column": 8 }, "end": { - "line": 2620, - "column": 16 + "line": 2642, + "column": 9 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -345203,44 +349141,42 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 97721, - "end": 97736, + "start": 98615, + "end": 98616, "loc": { "start": { - "line": 2621, - "column": 12 + "line": 2642, + "column": 9 }, "end": { - "line": 2621, - "column": 27 + "line": 2642, + "column": 10 } } }, { "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": 97737, - "end": 97738, + "start": 98616, + "end": 98617, "loc": { "start": { - "line": 2621, - "column": 28 + "line": 2642, + "column": 10 }, "end": { - "line": 2621, - "column": 29 + "line": 2642, + "column": 11 } } }, @@ -345259,16 +349195,16 @@ "updateContext": null }, "value": "this", - "start": 97739, - "end": 97743, + "start": 98626, + "end": 98630, "loc": { "start": { - "line": 2621, - "column": 30 + "line": 2643, + "column": 8 }, "end": { - "line": 2621, - "column": 34 + "line": 2643, + "column": 12 } } }, @@ -345285,16 +349221,16 @@ "binop": null, "updateContext": null }, - "start": 97743, - "end": 97744, + "start": 98630, + "end": 98631, "loc": { "start": { - "line": 2621, - "column": 34 + "line": 2643, + "column": 12 }, "end": { - "line": 2621, - "column": 35 + "line": 2643, + "column": 13 } } }, @@ -345310,17 +349246,17 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 97744, - "end": 97753, + "value": "_textureSets", + "start": 98631, + "end": 98643, "loc": { "start": { - "line": 2621, - "column": 35 + "line": 2643, + "column": 13 }, "end": { - "line": 2621, - "column": 44 + "line": 2643, + "column": 25 } } }, @@ -345337,16 +349273,16 @@ "binop": null, "updateContext": null }, - "start": 97753, - "end": 97754, + "start": 98643, + "end": 98644, "loc": { "start": { - "line": 2621, - "column": 44 + "line": 2643, + "column": 25 }, "end": { - "line": 2621, - "column": 45 + "line": 2643, + "column": 26 } } }, @@ -345362,17 +349298,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_EMISSIVE_TEXTURE_ID", - "start": 97754, - "end": 97781, + "value": "textureSetId", + "start": 98644, + "end": 98656, "loc": { "start": { - "line": 2621, - "column": 45 + "line": 2643, + "column": 26 }, "end": { - "line": 2621, - "column": 72 + "line": 2643, + "column": 38 } } }, @@ -345389,50 +349325,51 @@ "binop": null, "updateContext": null }, - "start": 97781, - "end": 97782, + "start": 98656, + "end": 98657, "loc": { "start": { - "line": 2621, - "column": 72 + "line": 2643, + "column": 38 }, "end": { - "line": 2621, - "column": 73 + "line": 2643, + "column": 39 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 97782, - "end": 97783, + "value": "=", + "start": 98658, + "end": 98659, "loc": { "start": { - "line": 2621, - "column": 73 + "line": 2643, + "column": 40 }, "end": { - "line": 2621, - "column": 74 + "line": 2643, + "column": 41 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -345440,24 +349377,24 @@ "postfix": false, "binop": null }, - "start": 97792, - "end": 97793, + "value": "textureSet", + "start": 98660, + "end": 98670, "loc": { "start": { - "line": 2622, - "column": 8 + "line": 2643, + "column": 42 }, "end": { - "line": 2622, - "column": 9 + "line": 2643, + "column": 52 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -345467,49 +349404,23 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 97802, - "end": 97805, - "loc": { - "start": { - "line": 2623, - "column": 8 - }, - "end": { - "line": 2623, - "column": 11 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "occlusionTexture", - "start": 97806, - "end": 97822, + "start": 98670, + "end": 98671, "loc": { "start": { - "line": 2623, - "column": 12 + "line": 2643, + "column": 52 }, "end": { - "line": 2623, - "column": 28 + "line": 2643, + "column": 53 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -345520,77 +349431,77 @@ "binop": null, "updateContext": null }, - "start": 97822, - "end": 97823, + "value": "return", + "start": 98680, + "end": 98686, "loc": { "start": { - "line": 2623, - "column": 28 + "line": 2644, + "column": 8 }, "end": { - "line": 2623, - "column": 29 + "line": 2644, + "column": 14 } } }, { "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": 97832, - "end": 97834, + "value": "textureSet", + "start": 98687, + "end": 98697, "loc": { "start": { - "line": 2624, - "column": 8 + "line": 2644, + "column": 15 }, "end": { - "line": 2624, - "column": 10 + "line": 2644, + "column": 25 } } }, { "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": 97835, - "end": 97836, + "start": 98697, + "end": 98698, "loc": { "start": { - "line": 2624, - "column": 11 + "line": 2644, + "column": 25 }, "end": { - "line": 2624, - "column": 12 + "line": 2644, + "column": 26 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -345598,43 +349509,32 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 97836, - "end": 97839, + "start": 98703, + "end": 98704, "loc": { "start": { - "line": 2624, - "column": 12 + "line": 2645, + "column": 4 }, "end": { - "line": 2624, - "column": 15 + "line": 2645, + "column": 5 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 97839, - "end": 97840, + "type": "CommentBlock", + "value": "*\n * Creates a new {@link SceneModelTransform} within this SceneModel.\n *\n * * Stores the new {@link SceneModelTransform} in {@link SceneModel#transforms}.\n * * Can be connected into hierarchies\n * * Each {@link SceneModelTransform} can be used by unlimited {@link SceneModelMesh}es\n *\n * @param {*} cfg Transform creation parameters.\n * @param {String} cfg.id Mandatory ID for the new transform. Must not clash with any existing components within the {@link Scene}.\n * @param {String} [cfg.parentTransformId] ID of a parent transform, previously created with {@link SceneModel#createTextureSet}.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the transform.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the transform as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters.\n * @returns {SceneModelTransform} The new transform.\n ", + "start": 98710, + "end": 99912, "loc": { "start": { - "line": 2624, - "column": 15 + "line": 2647, + "column": 4 }, "end": { - "line": 2624, - "column": 16 + "line": 2662, + "column": 7 } } }, @@ -345650,44 +349550,42 @@ "postfix": false, "binop": null }, - "value": "occlusionTextureId", - "start": 97840, - "end": 97858, + "value": "createTransform", + "start": 99917, + "end": 99932, "loc": { "start": { - "line": 2624, - "column": 16 + "line": 2663, + "column": 4 }, "end": { - "line": 2624, - "column": 34 + "line": 2663, + "column": 19 } } }, { "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": 97859, - "end": 97862, + "start": 99932, + "end": 99933, "loc": { "start": { - "line": 2624, - "column": 35 + "line": 2663, + "column": 19 }, "end": { - "line": 2624, - "column": 38 + "line": 2663, + "column": 20 } } }, @@ -345703,51 +349601,49 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 97863, - "end": 97872, + "value": "cfg", + "start": 99933, + "end": 99936, "loc": { "start": { - "line": 2624, - "column": 39 + "line": 2663, + "column": 20 }, "end": { - "line": 2624, - "column": 48 + "line": 2663, + "column": 23 } } }, { "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": 97873, - "end": 97875, + "start": 99936, + "end": 99937, "loc": { "start": { - "line": 2624, - "column": 49 + "line": 2663, + "column": 23 }, "end": { - "line": 2624, - "column": 51 + "line": 2663, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -345756,23 +349652,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 97876, - "end": 97879, + "start": 99938, + "end": 99939, "loc": { "start": { - "line": 2624, - "column": 52 + "line": 2663, + "column": 25 }, "end": { - "line": 2624, - "column": 55 + "line": 2663, + "column": 26 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -345783,23 +349679,24 @@ "binop": null, "updateContext": null }, - "start": 97879, - "end": 97880, + "value": "if", + "start": 99948, + "end": 99950, "loc": { "start": { - "line": 2624, - "column": 55 + "line": 2664, + "column": 8 }, "end": { - "line": 2624, - "column": 56 + "line": 2664, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -345808,53 +349705,50 @@ "postfix": false, "binop": null }, - "value": "occlusionTextureId", - "start": 97880, - "end": 97898, + "start": 99951, + "end": 99952, "loc": { "start": { - "line": 2624, - "column": 56 + "line": 2664, + "column": 11 }, "end": { - "line": 2624, - "column": 74 + "line": 2664, + "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": 6, - "updateContext": null + "binop": null }, - "value": "!==", - "start": 97899, - "end": 97902, + "value": "cfg", + "start": 99952, + "end": 99955, "loc": { "start": { - "line": 2624, - "column": 75 + "line": 2664, + "column": 12 }, "end": { - "line": 2624, - "column": 78 + "line": 2664, + "column": 15 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -345863,25 +349757,24 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 97903, - "end": 97907, + "start": 99955, + "end": 99956, "loc": { "start": { - "line": 2624, - "column": 79 + "line": 2664, + "column": 15 }, "end": { - "line": 2624, - "column": 83 + "line": 2664, + "column": 16 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -345889,41 +349782,44 @@ "postfix": false, "binop": null }, - "start": 97907, - "end": 97908, + "value": "id", + "start": 99956, + "end": 99958, "loc": { "start": { - "line": 2624, - "column": 83 + "line": 2664, + "column": 16 }, "end": { - "line": 2624, - "column": 84 + "line": 2664, + "column": 18 } } }, { "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": 97909, - "end": 97910, + "value": "===", + "start": 99959, + "end": 99962, "loc": { "start": { - "line": 2624, - "column": 85 + "line": 2664, + "column": 19 }, "end": { - "line": 2624, - "column": 86 + "line": 2664, + "column": 22 } } }, @@ -345939,51 +349835,50 @@ "postfix": false, "binop": null }, - "value": "occlusionTexture", - "start": 97923, - "end": 97939, + "value": "undefined", + "start": 99963, + "end": 99972, "loc": { "start": { - "line": 2625, - "column": 12 + "line": 2664, + "column": 23 }, "end": { - "line": 2625, - "column": 28 + "line": 2664, + "column": 32 } } }, { "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": 97940, - "end": 97941, + "value": "||", + "start": 99973, + "end": 99975, "loc": { "start": { - "line": 2625, - "column": 29 + "line": 2664, + "column": 33 }, "end": { - "line": 2625, - "column": 30 + "line": 2664, + "column": 35 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -345991,20 +349886,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 97942, - "end": 97946, + "value": "cfg", + "start": 99976, + "end": 99979, "loc": { "start": { - "line": 2625, - "column": 31 + "line": 2664, + "column": 36 }, "end": { - "line": 2625, - "column": 35 + "line": 2664, + "column": 39 } } }, @@ -346021,16 +349915,16 @@ "binop": null, "updateContext": null }, - "start": 97946, - "end": 97947, + "start": 99979, + "end": 99980, "loc": { "start": { - "line": 2625, - "column": 35 + "line": 2664, + "column": 39 }, "end": { - "line": 2625, - "column": 36 + "line": 2664, + "column": 40 } } }, @@ -346046,49 +349940,51 @@ "postfix": false, "binop": null }, - "value": "_textures", - "start": 97947, - "end": 97956, + "value": "id", + "start": 99980, + "end": 99982, "loc": { "start": { - "line": 2625, - "column": 36 + "line": 2664, + "column": 40 }, "end": { - "line": 2625, - "column": 45 + "line": 2664, + "column": 42 } } }, { "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": 97956, - "end": 97957, + "value": "===", + "start": 99983, + "end": 99986, "loc": { "start": { - "line": 2625, - "column": 45 + "line": 2664, + "column": 43 }, "end": { - "line": 2625, + "line": 2664, "column": 46 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -346096,25 +349992,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 97957, - "end": 97960, + "value": "null", + "start": 99987, + "end": 99991, "loc": { "start": { - "line": 2625, - "column": 46 + "line": 2664, + "column": 47 }, "end": { - "line": 2625, - "column": 49 + "line": 2664, + "column": 51 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -346122,26 +350019,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 97960, - "end": 97961, + "start": 99991, + "end": 99992, "loc": { "start": { - "line": 2625, - "column": 49 + "line": 2664, + "column": 51 }, "end": { - "line": 2625, - "column": 50 + "line": 2664, + "column": 52 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -346150,25 +350046,25 @@ "postfix": false, "binop": null }, - "value": "occlusionTextureId", - "start": 97961, - "end": 97979, + "start": 99993, + "end": 99994, "loc": { "start": { - "line": 2625, - "column": 50 + "line": 2664, + "column": 53 }, "end": { - "line": 2625, - "column": 68 + "line": 2664, + "column": 54 } } }, { "type": { - "label": "]", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346177,23 +350073,24 @@ "binop": null, "updateContext": null }, - "start": 97979, - "end": 97980, + "value": "this", + "start": 100007, + "end": 100011, "loc": { "start": { - "line": 2625, - "column": 68 + "line": 2665, + "column": 12 }, "end": { - "line": 2625, - "column": 69 + "line": 2665, + "column": 16 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -346203,44 +350100,42 @@ "binop": null, "updateContext": null }, - "start": 97980, - "end": 97981, + "start": 100011, + "end": 100012, "loc": { "start": { - "line": 2625, - "column": 69 + "line": 2665, + "column": 16 }, "end": { - "line": 2625, - "column": 70 + "line": 2665, + "column": 17 } } }, { "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": 97994, - "end": 97996, + "value": "error", + "start": 100012, + "end": 100017, "loc": { "start": { - "line": 2626, - "column": 12 + "line": 2665, + "column": 17 }, "end": { - "line": 2626, - "column": 14 + "line": 2665, + "column": 22 } } }, @@ -346256,51 +350151,51 @@ "postfix": false, "binop": null }, - "start": 97997, - "end": 97998, + "start": 100017, + "end": 100018, "loc": { "start": { - "line": 2626, - "column": 15 + "line": 2665, + "column": 22 }, "end": { - "line": 2626, - "column": 16 + "line": 2665, + "column": 23 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "string", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 97998, - "end": 97999, + "value": "[createTransform] SceneModel.createTransform() config missing: id", + "start": 100018, + "end": 100085, "loc": { "start": { - "line": 2626, - "column": 16 + "line": 2665, + "column": 23 }, "end": { - "line": 2626, - "column": 17 + "line": 2665, + "column": 90 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346308,76 +350203,78 @@ "postfix": false, "binop": null }, - "value": "occlusionTexture", - "start": 97999, - "end": 98015, + "start": 100085, + "end": 100086, "loc": { "start": { - "line": 2626, - "column": 17 + "line": 2665, + "column": 90 }, "end": { - "line": 2626, - "column": 33 + "line": 2665, + "column": 91 } } }, { "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": 98015, - "end": 98016, + "start": 100086, + "end": 100087, "loc": { "start": { - "line": 2626, - "column": 33 + "line": 2665, + "column": 91 }, "end": { - "line": 2626, - "column": 34 + "line": 2665, + "column": 92 } } }, { "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": 98017, - "end": 98018, + "value": "return", + "start": 100100, + "end": 100106, "loc": { "start": { - "line": 2626, - "column": 35 + "line": 2666, + "column": 12 }, "end": { - "line": 2626, - "column": 36 + "line": 2666, + "column": 18 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346386,23 +350283,22 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 98035, - "end": 98039, + "start": 100106, + "end": 100107, "loc": { "start": { - "line": 2627, - "column": 16 + "line": 2666, + "column": 18 }, "end": { - "line": 2627, - "column": 20 + "line": 2666, + "column": 19 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -346410,45 +350306,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 98039, - "end": 98040, + "start": 100116, + "end": 100117, "loc": { "start": { - "line": 2627, - "column": 20 + "line": 2667, + "column": 8 }, "end": { - "line": 2627, - "column": 21 + "line": 2667, + "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": "error", - "start": 98040, - "end": 98045, + "value": "if", + "start": 100126, + "end": 100128, "loc": { "start": { - "line": 2627, - "column": 21 + "line": 2668, + "column": 8 }, "end": { - "line": 2627, - "column": 26 + "line": 2668, + "column": 10 } } }, @@ -346464,22 +350361,23 @@ "postfix": false, "binop": null }, - "start": 98045, - "end": 98046, + "start": 100129, + "end": 100130, "loc": { "start": { - "line": 2627, - "column": 26 + "line": 2668, + "column": 11 }, "end": { - "line": 2627, - "column": 27 + "line": 2668, + "column": 12 } } }, { "type": { - "label": "`", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -346487,24 +350385,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 98046, - "end": 98047, + "value": "this", + "start": 100130, + "end": 100134, "loc": { "start": { - "line": 2627, - "column": 27 + "line": 2668, + "column": 12 }, "end": { - "line": 2627, - "column": 28 + "line": 2668, + "column": 16 } } }, { "type": { - "label": "template", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -346515,24 +350415,23 @@ "binop": null, "updateContext": null }, - "value": "[createTextureSet] Texture not found: ", - "start": 98047, - "end": 98085, + "start": 100134, + "end": 100135, "loc": { "start": { - "line": 2627, - "column": 28 + "line": 2668, + "column": 16 }, "end": { - "line": 2627, - "column": 66 + "line": 2668, + "column": 17 } } }, { "type": { - "label": "${", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -346541,102 +350440,103 @@ "postfix": false, "binop": null }, - "start": 98085, - "end": 98087, + "value": "_transforms", + "start": 100135, + "end": 100146, "loc": { "start": { - "line": 2627, - "column": 66 + "line": 2668, + "column": 17 }, "end": { - "line": 2627, - "column": 68 + "line": 2668, + "column": 28 } } }, { "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": "cfg", - "start": 98087, - "end": 98090, + "start": 100146, + "end": 100147, "loc": { "start": { - "line": 2627, - "column": 68 + "line": 2668, + "column": 28 }, "end": { - "line": 2627, - "column": 71 + "line": 2668, + "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": 98090, - "end": 98091, + "value": "cfg", + "start": 100147, + "end": 100150, "loc": { "start": { - "line": 2627, - "column": 71 + "line": 2668, + "column": 29 }, "end": { - "line": 2627, - "column": 72 + "line": 2668, + "column": 32 } } }, { "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": "occlusionTextureId", - "start": 98091, - "end": 98109, + "start": 100150, + "end": 100151, "loc": { "start": { - "line": 2627, - "column": 72 + "line": 2668, + "column": 32 }, "end": { - "line": 2627, - "column": 90 + "line": 2668, + "column": 33 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346644,22 +350544,23 @@ "postfix": false, "binop": null }, - "start": 98109, - "end": 98110, + "value": "id", + "start": 100151, + "end": 100153, "loc": { "start": { - "line": 2627, - "column": 90 + "line": 2668, + "column": 33 }, "end": { - "line": 2627, - "column": 91 + "line": 2668, + "column": 35 } } }, { "type": { - "label": "template", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -346670,25 +350571,24 @@ "binop": null, "updateContext": null }, - "value": " - ensure that you create it first with createTexture()", - "start": 98110, - "end": 98165, + "start": 100153, + "end": 100154, "loc": { "start": { - "line": 2627, - "column": 91 + "line": 2668, + "column": 35 }, "end": { - "line": 2627, - "column": 146 + "line": 2668, + "column": 36 } } }, { "type": { - "label": "`", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346696,24 +350596,24 @@ "postfix": false, "binop": null }, - "start": 98165, - "end": 98166, + "start": 100154, + "end": 100155, "loc": { "start": { - "line": 2627, - "column": 146 + "line": 2668, + "column": 36 }, "end": { - "line": 2627, - "column": 147 + "line": 2668, + "column": 37 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346721,24 +350621,25 @@ "postfix": false, "binop": null }, - "start": 98166, - "end": 98167, + "start": 100156, + "end": 100157, "loc": { "start": { - "line": 2627, - "column": 147 + "line": 2668, + "column": 38 }, "end": { - "line": 2627, - "column": 148 + "line": 2668, + "column": 39 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346747,24 +350648,24 @@ "binop": null, "updateContext": null }, - "start": 98167, - "end": 98168, + "value": "this", + "start": 100170, + "end": 100174, "loc": { "start": { - "line": 2627, - "column": 148 + "line": 2669, + "column": 12 }, "end": { - "line": 2627, - "column": 149 + "line": 2669, + "column": 16 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -346774,51 +350675,50 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 98185, - "end": 98191, + "start": 100174, + "end": 100175, "loc": { "start": { - "line": 2628, + "line": 2669, "column": 16 }, "end": { - "line": 2628, - "column": 22 + "line": 2669, + "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": 98191, - "end": 98192, + "value": "error", + "start": 100175, + "end": 100180, "loc": { "start": { - "line": 2628, - "column": 22 + "line": 2669, + "column": 17 }, "end": { - "line": 2628, - "column": 23 + "line": 2669, + "column": 22 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346826,24 +350726,24 @@ "postfix": false, "binop": null }, - "start": 98205, - "end": 98206, + "start": 100180, + "end": 100181, "loc": { "start": { - "line": 2629, - "column": 12 + "line": 2669, + "column": 22 }, "end": { - "line": 2629, - "column": 13 + "line": 2669, + "column": 23 } } }, { "type": { - "label": "}", + "label": "`", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -346851,24 +350751,23 @@ "postfix": false, "binop": null }, - "start": 98215, - "end": 98216, + "start": 100181, + "end": 100182, "loc": { "start": { - "line": 2630, - "column": 8 + "line": 2669, + "column": 23 }, "end": { - "line": 2630, - "column": 9 + "line": 2669, + "column": 24 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -346878,23 +350777,23 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 98217, - "end": 98221, + "value": "[createTransform] SceneModel already has a transform with this ID: ", + "start": 100182, + "end": 100249, "loc": { "start": { - "line": 2630, - "column": 10 + "line": 2669, + "column": 24 }, "end": { - "line": 2630, - "column": 14 + "line": 2669, + "column": 91 } } }, { "type": { - "label": "{", + "label": "${", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -346904,16 +350803,16 @@ "postfix": false, "binop": null }, - "start": 98222, - "end": 98223, + "start": 100249, + "end": 100251, "loc": { "start": { - "line": 2630, - "column": 15 + "line": 2669, + "column": 91 }, "end": { - "line": 2630, - "column": 16 + "line": 2669, + "column": 93 } } }, @@ -346929,51 +350828,49 @@ "postfix": false, "binop": null }, - "value": "occlusionTexture", - "start": 98236, - "end": 98252, + "value": "cfg", + "start": 100251, + "end": 100254, "loc": { "start": { - "line": 2631, - "column": 12 + "line": 2669, + "column": 93 }, "end": { - "line": 2631, - "column": 28 + "line": 2669, + "column": 96 } } }, { "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": 98253, - "end": 98254, + "start": 100254, + "end": 100255, "loc": { "start": { - "line": 2631, - "column": 29 + "line": 2669, + "column": 96 }, "end": { - "line": 2631, - "column": 30 + "line": 2669, + "column": 97 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -346981,26 +350878,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 98255, - "end": 98259, + "value": "id", + "start": 100255, + "end": 100257, "loc": { "start": { - "line": 2631, - "column": 31 + "line": 2669, + "column": 97 }, "end": { - "line": 2631, - "column": 35 + "line": 2669, + "column": 99 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -347008,79 +350904,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 98259, - "end": 98260, + "start": 100257, + "end": 100258, "loc": { "start": { - "line": 2631, - "column": 35 + "line": 2669, + "column": 99 }, "end": { - "line": 2631, - "column": 36 + "line": 2669, + "column": 100 } } }, { "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": "_textures", - "start": 98260, - "end": 98269, + "value": "", + "start": 100258, + "end": 100258, "loc": { "start": { - "line": 2631, - "column": 36 + "line": 2669, + "column": 100 }, "end": { - "line": 2631, - "column": 45 + "line": 2669, + "column": 100 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "`", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 98269, - "end": 98270, + "start": 100258, + "end": 100259, "loc": { "start": { - "line": 2631, - "column": 45 + "line": 2669, + "column": 100 }, "end": { - "line": 2631, - "column": 46 + "line": 2669, + "column": 101 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -347088,24 +350983,23 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_OCCLUSION_TEXTURE_ID", - "start": 98270, - "end": 98298, + "start": 100259, + "end": 100260, "loc": { "start": { - "line": 2631, - "column": 46 + "line": 2669, + "column": 101 }, "end": { - "line": 2631, - "column": 74 + "line": 2669, + "column": 102 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -347115,22 +351009,23 @@ "binop": null, "updateContext": null }, - "start": 98298, - "end": 98299, + "start": 100260, + "end": 100261, "loc": { "start": { - "line": 2631, - "column": 74 + "line": 2669, + "column": 102 }, "end": { - "line": 2631, - "column": 75 + "line": 2669, + "column": 103 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -347141,48 +351036,49 @@ "binop": null, "updateContext": null }, - "start": 98299, - "end": 98300, + "value": "return", + "start": 100274, + "end": 100280, "loc": { "start": { - "line": 2631, - "column": 75 + "line": 2670, + "column": 12 }, "end": { - "line": 2631, - "column": 76 + "line": 2670, + "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": 98309, - "end": 98310, + "start": 100280, + "end": 100281, "loc": { "start": { - "line": 2632, - "column": 8 + "line": 2670, + "column": 18 }, "end": { - "line": 2632, - "column": 9 + "line": 2670, + "column": 19 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -347190,82 +351086,80 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 98319, - "end": 98324, + "start": 100290, + "end": 100291, "loc": { "start": { - "line": 2633, + "line": 2671, "column": 8 }, "end": { - "line": 2633, - "column": 13 + "line": 2671, + "column": 9 } } }, { "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": "textureSet", - "start": 98325, - "end": 98335, + "value": "let", + "start": 100300, + "end": 100303, "loc": { "start": { - "line": 2633, - "column": 14 + "line": 2672, + "column": 8 }, "end": { - "line": 2633, - "column": 24 + "line": 2672, + "column": 11 } } }, { "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": 98336, - "end": 98337, + "value": "parentTransform", + "start": 100304, + "end": 100319, "loc": { "start": { - "line": 2633, - "column": 25 + "line": 2672, + "column": 12 }, "end": { - "line": 2633, - "column": 26 + "line": 2672, + "column": 27 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -347274,43 +351168,44 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 98338, - "end": 98341, + "start": 100319, + "end": 100320, "loc": { "start": { - "line": 2633, + "line": 2672, "column": 27 }, "end": { - "line": 2633, - "column": 30 + "line": 2672, + "column": 28 } } }, { "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": "SceneModelTextureSet", - "start": 98342, - "end": 98362, + "value": "if", + "start": 100329, + "end": 100331, "loc": { "start": { - "line": 2633, - "column": 31 + "line": 2673, + "column": 8 }, "end": { - "line": 2633, - "column": 51 + "line": 2673, + "column": 10 } } }, @@ -347326,23 +351221,23 @@ "postfix": false, "binop": null }, - "start": 98362, - "end": 98363, + "start": 100332, + "end": 100333, "loc": { "start": { - "line": 2633, - "column": 51 + "line": 2673, + "column": 11 }, "end": { - "line": 2633, - "column": 52 + "line": 2673, + "column": 12 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -347351,76 +351246,77 @@ "postfix": false, "binop": null }, - "start": 98363, - "end": 98364, + "value": "cfg", + "start": 100333, + "end": 100336, "loc": { "start": { - "line": 2633, - "column": 52 + "line": 2673, + "column": 12 }, "end": { - "line": 2633, - "column": 53 + "line": 2673, + "column": 15 } } }, { "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": "id", - "start": 98377, - "end": 98379, + "start": 100336, + "end": 100337, "loc": { "start": { - "line": 2634, - "column": 12 + "line": 2673, + "column": 15 }, "end": { - "line": 2634, - "column": 14 + "line": 2673, + "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": 98379, - "end": 98380, + "value": "parentTransformId", + "start": 100337, + "end": 100354, "loc": { "start": { - "line": 2634, - "column": 14 + "line": 2673, + "column": 16 }, "end": { - "line": 2634, - "column": 15 + "line": 2673, + "column": 33 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -347428,43 +351324,41 @@ "postfix": false, "binop": null }, - "value": "textureSetId", - "start": 98381, - "end": 98393, + "start": 100354, + "end": 100355, "loc": { "start": { - "line": 2634, - "column": 16 + "line": 2673, + "column": 33 }, "end": { - "line": 2634, - "column": 28 + "line": 2673, + "column": 34 } } }, { "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": 98393, - "end": 98394, + "start": 100356, + "end": 100357, "loc": { "start": { - "line": 2634, - "column": 28 + "line": 2673, + "column": 35 }, "end": { - "line": 2634, - "column": 29 + "line": 2673, + "column": 36 } } }, @@ -347480,43 +351374,44 @@ "postfix": false, "binop": null }, - "value": "model", - "start": 98407, - "end": 98412, + "value": "parentTransform", + "start": 100370, + "end": 100385, "loc": { "start": { - "line": 2635, + "line": 2674, "column": 12 }, "end": { - "line": 2635, - "column": 17 + "line": 2674, + "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": 98412, - "end": 98413, + "value": "=", + "start": 100386, + "end": 100387, "loc": { "start": { - "line": 2635, - "column": 17 + "line": 2674, + "column": 28 }, "end": { - "line": 2635, - "column": 18 + "line": 2674, + "column": 29 } } }, @@ -347535,23 +351430,23 @@ "updateContext": null }, "value": "this", - "start": 98414, - "end": 98418, + "start": 100388, + "end": 100392, "loc": { "start": { - "line": 2635, - "column": 19 + "line": 2674, + "column": 30 }, "end": { - "line": 2635, - "column": 23 + "line": 2674, + "column": 34 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -347561,16 +351456,16 @@ "binop": null, "updateContext": null }, - "start": 98418, - "end": 98419, + "start": 100392, + "end": 100393, "loc": { "start": { - "line": 2635, - "column": 23 + "line": 2674, + "column": 34 }, "end": { - "line": 2635, - "column": 24 + "line": 2674, + "column": 35 } } }, @@ -347586,25 +351481,25 @@ "postfix": false, "binop": null }, - "value": "colorTexture", - "start": 98432, - "end": 98444, + "value": "_transforms", + "start": 100393, + "end": 100404, "loc": { "start": { - "line": 2636, - "column": 12 + "line": 2674, + "column": 35 }, "end": { - "line": 2636, - "column": 24 + "line": 2674, + "column": 46 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -347613,16 +351508,16 @@ "binop": null, "updateContext": null }, - "start": 98444, - "end": 98445, + "start": 100404, + "end": 100405, "loc": { "start": { - "line": 2636, - "column": 24 + "line": 2674, + "column": 46 }, "end": { - "line": 2636, - "column": 25 + "line": 2674, + "column": 47 } } }, @@ -347638,24 +351533,24 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTexture", - "start": 98458, - "end": 98482, + "value": "cfg", + "start": 100405, + "end": 100408, "loc": { "start": { - "line": 2637, - "column": 12 + "line": 2674, + "column": 47 }, "end": { - "line": 2637, - "column": 36 + "line": 2674, + "column": 50 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -347665,16 +351560,16 @@ "binop": null, "updateContext": null }, - "start": 98482, - "end": 98483, + "start": 100408, + "end": 100409, "loc": { "start": { - "line": 2637, - "column": 36 + "line": 2674, + "column": 50 }, "end": { - "line": 2637, - "column": 37 + "line": 2674, + "column": 51 } } }, @@ -347690,24 +351585,24 @@ "postfix": false, "binop": null }, - "value": "normalsTexture", - "start": 98496, - "end": 98510, + "value": "parentTransformId", + "start": 100409, + "end": 100426, "loc": { "start": { - "line": 2638, - "column": 12 + "line": 2674, + "column": 51 }, "end": { - "line": 2638, - "column": 26 + "line": 2674, + "column": 68 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -347717,49 +351612,50 @@ "binop": null, "updateContext": null }, - "start": 98510, - "end": 98511, + "start": 100426, + "end": 100427, "loc": { "start": { - "line": 2638, - "column": 26 + "line": 2674, + "column": 68 }, "end": { - "line": 2638, - "column": 27 + "line": 2674, + "column": 69 } } }, { "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": "emissiveTexture", - "start": 98524, - "end": 98539, + "start": 100427, + "end": 100428, "loc": { "start": { - "line": 2639, - "column": 12 + "line": 2674, + "column": 69 }, "end": { - "line": 2639, - "column": 27 + "line": 2674, + "column": 70 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -347769,23 +351665,24 @@ "binop": null, "updateContext": null }, - "start": 98539, - "end": 98540, + "value": "if", + "start": 100441, + "end": 100443, "loc": { "start": { - "line": 2639, - "column": 27 + "line": 2675, + "column": 12 }, "end": { - "line": 2639, - "column": 28 + "line": 2675, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -347794,25 +351691,51 @@ "postfix": false, "binop": null }, - "value": "occlusionTexture", - "start": 98553, - "end": 98569, + "start": 100444, + "end": 100445, "loc": { "start": { - "line": 2640, - "column": 12 + "line": 2675, + "column": 15 }, "end": { - "line": 2640, - "column": 28 + "line": 2675, + "column": 16 } } }, { "type": { - "label": "}", + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 100445, + "end": 100446, + "loc": { + "start": { + "line": 2675, + "column": 16 + }, + "end": { + "line": 2675, + "column": 17 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -347820,16 +351743,17 @@ "postfix": false, "binop": null }, - "start": 98578, - "end": 98579, + "value": "parentTransform", + "start": 100446, + "end": 100461, "loc": { "start": { - "line": 2641, - "column": 8 + "line": 2675, + "column": 17 }, "end": { - "line": 2641, - "column": 9 + "line": 2675, + "column": 32 } } }, @@ -347845,42 +351769,41 @@ "postfix": false, "binop": null }, - "start": 98579, - "end": 98580, + "start": 100461, + "end": 100462, "loc": { "start": { - "line": 2641, - "column": 9 + "line": 2675, + "column": 32 }, "end": { - "line": 2641, - "column": 10 + "line": 2675, + "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": 98580, - "end": 98581, + "start": 100463, + "end": 100464, "loc": { "start": { - "line": 2641, - "column": 10 + "line": 2675, + "column": 34 }, "end": { - "line": 2641, - "column": 11 + "line": 2675, + "column": 35 } } }, @@ -347899,16 +351822,16 @@ "updateContext": null }, "value": "this", - "start": 98590, - "end": 98594, + "start": 100481, + "end": 100485, "loc": { "start": { - "line": 2642, - "column": 8 + "line": 2676, + "column": 16 }, "end": { - "line": 2642, - "column": 12 + "line": 2676, + "column": 20 } } }, @@ -347925,16 +351848,16 @@ "binop": null, "updateContext": null }, - "start": 98594, - "end": 98595, + "start": 100485, + "end": 100486, "loc": { "start": { - "line": 2642, - "column": 12 + "line": 2676, + "column": 20 }, "end": { - "line": 2642, - "column": 13 + "line": 2676, + "column": 21 } } }, @@ -347950,23 +351873,23 @@ "postfix": false, "binop": null }, - "value": "_textureSets", - "start": 98595, - "end": 98607, + "value": "error", + "start": 100486, + "end": 100491, "loc": { "start": { - "line": 2642, - "column": 13 + "line": 2676, + "column": 21 }, "end": { - "line": 2642, - "column": 25 + "line": 2676, + "column": 26 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -347974,25 +351897,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 98607, - "end": 98608, + "start": 100491, + "end": 100492, "loc": { "start": { - "line": 2642, - "column": 25 + "line": 2676, + "column": 26 }, "end": { - "line": 2642, - "column": 26 + "line": 2676, + "column": 27 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -348000,25 +351922,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textureSetId", - "start": 98608, - "end": 98620, + "value": "[createTransform] SceneModel.createTransform() config missing: id", + "start": 100492, + "end": 100559, "loc": { "start": { - "line": 2642, - "column": 26 + "line": 2676, + "column": 27 }, "end": { - "line": 2642, - "column": 38 + "line": 2676, + "column": 94 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -348026,78 +351949,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 98620, - "end": 98621, + "start": 100559, + "end": 100560, "loc": { "start": { - "line": 2642, - "column": 38 + "line": 2676, + "column": 94 }, "end": { - "line": 2642, - "column": 39 + "line": 2676, + "column": 95 } } }, { "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": 98622, - "end": 98623, - "loc": { - "start": { - "line": 2642, - "column": 40 - }, - "end": { - "line": 2642, - "column": 41 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "textureSet", - "start": 98624, - "end": 98634, + "start": 100560, + "end": 100561, "loc": { "start": { - "line": 2642, - "column": 42 + "line": 2676, + "column": 95 }, "end": { - "line": 2642, - "column": 52 + "line": 2676, + "column": 96 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -348108,23 +352004,23 @@ "binop": null, "updateContext": null }, - "start": 98634, - "end": 98635, + "value": "return", + "start": 100578, + "end": 100584, "loc": { "start": { - "line": 2642, - "column": 52 + "line": 2677, + "column": 16 }, "end": { - "line": 2642, - "column": 53 + "line": 2677, + "column": 22 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -348135,25 +352031,24 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 98644, - "end": 98650, + "start": 100584, + "end": 100585, "loc": { "start": { - "line": 2643, - "column": 8 + "line": 2677, + "column": 22 }, "end": { - "line": 2643, - "column": 14 + "line": 2677, + "column": 23 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -348161,49 +352056,48 @@ "postfix": false, "binop": null }, - "value": "textureSet", - "start": 98651, - "end": 98661, + "start": 100598, + "end": 100599, "loc": { "start": { - "line": 2643, - "column": 15 + "line": 2678, + "column": 12 }, "end": { - "line": 2643, - "column": 25 + "line": 2678, + "column": 13 } } }, { "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": 98661, - "end": 98662, + "start": 100608, + "end": 100609, "loc": { "start": { - "line": 2643, - "column": 25 + "line": 2679, + "column": 8 }, "end": { - "line": 2643, - "column": 26 + "line": 2679, + "column": 9 } } }, { "type": { - "label": "}", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -348211,34 +352105,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 98667, - "end": 98668, - "loc": { - "start": { - "line": 2644, - "column": 4 - }, - "end": { - "line": 2644, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Creates a new {@link SceneModelTransform} within this SceneModel.\n *\n * * Stores the new {@link SceneModelTransform} in {@link SceneModel#transforms}.\n * * Can be connected into hierarchies\n * * Each {@link SceneModelTransform} can be used by unlimited {@link SceneModelMesh}es\n *\n * @param {*} cfg Transform creation parameters.\n * @param {String} cfg.id Mandatory ID for the new transform. Must not clash with any existing components within the {@link Scene}.\n * @param {String} [cfg.parentTransformId] ID of a parent transform, previously created with {@link SceneModel#createTextureSet}.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the transform.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the transform as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters.\n * @returns {SceneModelTransform} The new transform.\n ", - "start": 98674, - "end": 99876, + "value": "const", + "start": 100618, + "end": 100623, "loc": { "start": { - "line": 2646, - "column": 4 + "line": 2680, + "column": 8 }, "end": { - "line": 2661, - "column": 7 + "line": 2680, + "column": 13 } } }, @@ -348254,76 +352134,80 @@ "postfix": false, "binop": null }, - "value": "createTransform", - "start": 99881, - "end": 99896, + "value": "transform", + "start": 100624, + "end": 100633, "loc": { "start": { - "line": 2662, - "column": 4 + "line": 2680, + "column": 14 }, "end": { - "line": 2662, - "column": 19 + "line": 2680, + "column": 23 } } }, { "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": 99896, - "end": 99897, + "value": "=", + "start": 100634, + "end": 100635, "loc": { "start": { - "line": 2662, - "column": 19 + "line": 2680, + "column": 24 }, "end": { - "line": 2662, - "column": 20 + "line": 2680, + "column": 25 } } }, { "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": "cfg", - "start": 99897, - "end": 99900, + "value": "new", + "start": 100636, + "end": 100639, "loc": { "start": { - "line": 2662, - "column": 20 + "line": 2680, + "column": 26 }, "end": { - "line": 2662, - "column": 23 + "line": 2680, + "column": 29 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -348331,22 +352215,23 @@ "postfix": false, "binop": null }, - "start": 99900, - "end": 99901, + "value": "SceneModelTransform", + "start": 100640, + "end": 100659, "loc": { "start": { - "line": 2662, - "column": 23 + "line": 2680, + "column": 30 }, "end": { - "line": 2662, - "column": 24 + "line": 2680, + "column": 49 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -348356,50 +352241,22 @@ "postfix": false, "binop": null }, - "start": 99902, - "end": 99903, - "loc": { - "start": { - "line": 2662, - "column": 25 - }, - "end": { - "line": 2662, - "column": 26 - } - } - }, - { - "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": 99912, - "end": 99914, + "start": 100659, + "end": 100660, "loc": { "start": { - "line": 2663, - "column": 8 + "line": 2680, + "column": 49 }, "end": { - "line": 2663, - "column": 10 + "line": 2680, + "column": 50 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -348409,16 +352266,16 @@ "postfix": false, "binop": null }, - "start": 99915, - "end": 99916, + "start": 100660, + "end": 100661, "loc": { "start": { - "line": 2663, - "column": 11 + "line": 2680, + "column": 50 }, "end": { - "line": 2663, - "column": 12 + "line": 2680, + "column": 51 } } }, @@ -348434,24 +352291,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 99916, - "end": 99919, + "value": "id", + "start": 100674, + "end": 100676, "loc": { "start": { - "line": 2663, + "line": 2681, "column": 12 }, "end": { - "line": 2663, - "column": 15 + "line": 2681, + "column": 14 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -348461,16 +352318,16 @@ "binop": null, "updateContext": null }, - "start": 99919, - "end": 99920, + "start": 100676, + "end": 100677, "loc": { "start": { - "line": 2663, - "column": 15 + "line": 2681, + "column": 14 }, "end": { - "line": 2663, - "column": 16 + "line": 2681, + "column": 15 } } }, @@ -348486,44 +352343,43 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 99920, - "end": 99922, + "value": "cfg", + "start": 100678, + "end": 100681, "loc": { "start": { - "line": 2663, + "line": 2681, "column": 16 }, "end": { - "line": 2663, - "column": 18 + "line": 2681, + "column": 19 } } }, { "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": 99923, - "end": 99926, + "start": 100681, + "end": 100682, "loc": { "start": { - "line": 2663, + "line": 2681, "column": 19 }, "end": { - "line": 2663, - "column": 22 + "line": 2681, + "column": 20 } } }, @@ -348539,23 +352395,23 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 99927, - "end": 99936, + "value": "id", + "start": 100682, + "end": 100684, "loc": { "start": { - "line": 2663, - "column": 23 + "line": 2681, + "column": 20 }, "end": { - "line": 2663, - "column": 32 + "line": 2681, + "column": 22 } } }, { "type": { - "label": "||", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -348563,20 +352419,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 99937, - "end": 99939, + "start": 100684, + "end": 100685, "loc": { - "start": { - "line": 2663, - "column": 33 + "start": { + "line": 2681, + "column": 22 }, "end": { - "line": 2663, - "column": 35 + "line": 2681, + "column": 23 } } }, @@ -348592,24 +352447,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 99940, - "end": 99943, + "value": "model", + "start": 100698, + "end": 100703, "loc": { "start": { - "line": 2663, - "column": 36 + "line": 2682, + "column": 12 }, "end": { - "line": 2663, - "column": 39 + "line": 2682, + "column": 17 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -348619,22 +352474,23 @@ "binop": null, "updateContext": null }, - "start": 99943, - "end": 99944, + "start": 100703, + "end": 100704, "loc": { "start": { - "line": 2663, - "column": 39 + "line": 2682, + "column": 17 }, "end": { - "line": 2663, - "column": 40 + "line": 2682, + "column": 18 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -348642,25 +352498,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "id", - "start": 99944, - "end": 99946, + "value": "this", + "start": 100705, + "end": 100709, "loc": { "start": { - "line": 2663, - "column": 40 + "line": 2682, + "column": 19 }, "end": { - "line": 2663, - "column": 42 + "line": 2682, + "column": 23 } } }, { "type": { - "label": "==/!=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -348668,27 +352525,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 99947, - "end": 99950, + "start": 100709, + "end": 100710, "loc": { "start": { - "line": 2663, - "column": 43 + "line": 2682, + "column": 23 }, "end": { - "line": 2663, - "column": 46 + "line": 2682, + "column": 24 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -348696,52 +352551,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 99951, - "end": 99955, + "value": "parent", + "start": 100723, + "end": 100729, "loc": { "start": { - "line": 2663, - "column": 47 + "line": 2683, + "column": 12 }, "end": { - "line": 2663, - "column": 51 + "line": 2683, + "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": 99955, - "end": 99956, + "start": 100729, + "end": 100730, "loc": { "start": { - "line": 2663, - "column": 51 + "line": 2683, + "column": 18 }, "end": { - "line": 2663, - "column": 52 + "line": 2683, + "column": 19 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -348750,25 +352605,25 @@ "postfix": false, "binop": null }, - "start": 99957, - "end": 99958, + "value": "parentTransform", + "start": 100731, + "end": 100746, "loc": { "start": { - "line": 2663, - "column": 53 + "line": 2683, + "column": 20 }, "end": { - "line": 2663, - "column": 54 + "line": 2683, + "column": 35 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -348777,76 +352632,75 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 99971, - "end": 99975, + "start": 100746, + "end": 100747, "loc": { "start": { - "line": 2664, - "column": 12 + "line": 2683, + "column": 35 }, "end": { - "line": 2664, - "column": 16 + "line": 2683, + "column": 36 } } }, { "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": 99975, - "end": 99976, + "value": "matrix", + "start": 100760, + "end": 100766, "loc": { "start": { - "line": 2664, - "column": 16 + "line": 2684, + "column": 12 }, "end": { - "line": 2664, - "column": 17 + "line": 2684, + "column": 18 } } }, { "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": "error", - "start": 99976, - "end": 99981, + "start": 100766, + "end": 100767, "loc": { "start": { - "line": 2664, - "column": 17 + "line": 2684, + "column": 18 }, "end": { - "line": 2664, - "column": 22 + "line": 2684, + "column": 19 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -348855,24 +352709,25 @@ "postfix": false, "binop": null }, - "start": 99981, - "end": 99982, + "value": "cfg", + "start": 100768, + "end": 100771, "loc": { "start": { - "line": 2664, - "column": 22 + "line": 2684, + "column": 20 }, "end": { - "line": 2664, + "line": 2684, "column": 23 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -348881,25 +352736,24 @@ "binop": null, "updateContext": null }, - "value": "[createTransform] SceneModel.createTransform() config missing: id", - "start": 99982, - "end": 100049, + "start": 100771, + "end": 100772, "loc": { "start": { - "line": 2664, + "line": 2684, "column": 23 }, "end": { - "line": 2664, - "column": 90 + "line": 2684, + "column": 24 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -348907,22 +352761,23 @@ "postfix": false, "binop": null }, - "start": 100049, - "end": 100050, + "value": "matrix", + "start": 100772, + "end": 100778, "loc": { "start": { - "line": 2664, - "column": 90 + "line": 2684, + "column": 24 }, "end": { - "line": 2664, - "column": 91 + "line": 2684, + "column": 30 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -348933,50 +352788,48 @@ "binop": null, "updateContext": null }, - "start": 100050, - "end": 100051, + "start": 100778, + "end": 100779, "loc": { "start": { - "line": 2664, - "column": 91 + "line": 2684, + "column": 30 }, "end": { - "line": 2664, - "column": 92 + "line": 2684, + "column": 31 } } }, { "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": 100064, - "end": 100070, + "value": "position", + "start": 100792, + "end": 100800, "loc": { "start": { - "line": 2665, + "line": 2685, "column": 12 }, "end": { - "line": 2665, - "column": 18 + "line": 2685, + "column": 20 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -348987,24 +352840,24 @@ "binop": null, "updateContext": null }, - "start": 100070, - "end": 100071, + "start": 100800, + "end": 100801, "loc": { "start": { - "line": 2665, - "column": 18 + "line": 2685, + "column": 20 }, "end": { - "line": 2665, - "column": 19 + "line": 2685, + "column": 21 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -349012,23 +352865,23 @@ "postfix": false, "binop": null }, - "start": 100080, - "end": 100081, + "value": "cfg", + "start": 100802, + "end": 100805, "loc": { "start": { - "line": 2666, - "column": 8 + "line": 2685, + "column": 22 }, "end": { - "line": 2666, - "column": 9 + "line": 2685, + "column": 25 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -349039,24 +352892,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 100090, - "end": 100092, + "start": 100805, + "end": 100806, "loc": { "start": { - "line": 2667, - "column": 8 + "line": 2685, + "column": 25 }, "end": { - "line": 2667, - "column": 10 + "line": 2685, + "column": 26 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -349065,25 +352917,25 @@ "postfix": false, "binop": null }, - "start": 100093, - "end": 100094, + "value": "position", + "start": 100806, + "end": 100814, "loc": { "start": { - "line": 2667, - "column": 11 + "line": 2685, + "column": 26 }, "end": { - "line": 2667, - "column": 12 + "line": 2685, + "column": 34 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -349092,24 +352944,49 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 100094, - "end": 100098, + "start": 100814, + "end": 100815, "loc": { "start": { - "line": 2667, - "column": 12 + "line": 2685, + "column": 34 }, "end": { - "line": 2667, - "column": 16 + "line": 2685, + "column": 35 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scale", + "start": 100828, + "end": 100833, + "loc": { + "start": { + "line": 2686, + "column": 12 + }, + "end": { + "line": 2686, + "column": 17 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -349119,16 +352996,16 @@ "binop": null, "updateContext": null }, - "start": 100098, - "end": 100099, + "start": 100833, + "end": 100834, "loc": { "start": { - "line": 2667, - "column": 16 + "line": 2686, + "column": 17 }, "end": { - "line": 2667, - "column": 17 + "line": 2686, + "column": 18 } } }, @@ -349144,25 +353021,25 @@ "postfix": false, "binop": null }, - "value": "_transforms", - "start": 100099, - "end": 100110, + "value": "cfg", + "start": 100835, + "end": 100838, "loc": { "start": { - "line": 2667, - "column": 17 + "line": 2686, + "column": 19 }, "end": { - "line": 2667, - "column": 28 + "line": 2686, + "column": 22 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -349171,16 +353048,16 @@ "binop": null, "updateContext": null }, - "start": 100110, - "end": 100111, + "start": 100838, + "end": 100839, "loc": { "start": { - "line": 2667, - "column": 28 + "line": 2686, + "column": 22 }, "end": { - "line": 2667, - "column": 29 + "line": 2686, + "column": 23 } } }, @@ -349196,24 +353073,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 100111, - "end": 100114, + "value": "scale", + "start": 100839, + "end": 100844, "loc": { "start": { - "line": 2667, - "column": 29 + "line": 2686, + "column": 23 }, "end": { - "line": 2667, - "column": 32 + "line": 2686, + "column": 28 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -349223,16 +353100,16 @@ "binop": null, "updateContext": null }, - "start": 100114, - "end": 100115, + "start": 100844, + "end": 100845, "loc": { "start": { - "line": 2667, - "column": 32 + "line": 2686, + "column": 28 }, "end": { - "line": 2667, - "column": 33 + "line": 2686, + "column": 29 } } }, @@ -349248,24 +353125,24 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 100115, - "end": 100117, + "value": "rotation", + "start": 100858, + "end": 100866, "loc": { "start": { - "line": 2667, - "column": 33 + "line": 2687, + "column": 12 }, "end": { - "line": 2667, - "column": 35 + "line": 2687, + "column": 20 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -349275,24 +353152,24 @@ "binop": null, "updateContext": null }, - "start": 100117, - "end": 100118, + "start": 100866, + "end": 100867, "loc": { "start": { - "line": 2667, - "column": 35 + "line": 2687, + "column": 20 }, "end": { - "line": 2667, - "column": 36 + "line": 2687, + "column": 21 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -349300,48 +353177,49 @@ "postfix": false, "binop": null }, - "start": 100118, - "end": 100119, + "value": "cfg", + "start": 100868, + "end": 100871, "loc": { "start": { - "line": 2667, - "column": 36 + "line": 2687, + "column": 22 }, "end": { - "line": 2667, - "column": 37 + "line": 2687, + "column": 25 } } }, { "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": 100120, - "end": 100121, + "start": 100871, + "end": 100872, "loc": { "start": { - "line": 2667, - "column": 38 + "line": 2687, + "column": 25 }, "end": { - "line": 2667, - "column": 39 + "line": 2687, + "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -349349,27 +353227,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 100134, - "end": 100138, + "value": "rotation", + "start": 100872, + "end": 100880, "loc": { "start": { - "line": 2668, - "column": 12 + "line": 2687, + "column": 26 }, "end": { - "line": 2668, - "column": 16 + "line": 2687, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -349379,16 +353256,16 @@ "binop": null, "updateContext": null }, - "start": 100138, - "end": 100139, + "start": 100880, + "end": 100881, "loc": { "start": { - "line": 2668, - "column": 16 + "line": 2687, + "column": 34 }, "end": { - "line": 2668, - "column": 17 + "line": 2687, + "column": 35 } } }, @@ -349404,48 +353281,49 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 100139, - "end": 100144, + "value": "quaternion", + "start": 100894, + "end": 100904, "loc": { "start": { - "line": 2668, - "column": 17 + "line": 2688, + "column": 12 }, "end": { - "line": 2668, + "line": 2688, "column": 22 } } }, { "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": 100144, - "end": 100145, + "start": 100904, + "end": 100905, "loc": { "start": { - "line": 2668, + "line": 2688, "column": 22 }, "end": { - "line": 2668, + "line": 2688, "column": 23 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -349455,22 +353333,23 @@ "postfix": false, "binop": null }, - "start": 100145, - "end": 100146, + "value": "cfg", + "start": 100906, + "end": 100909, "loc": { "start": { - "line": 2668, - "column": 23 + "line": 2688, + "column": 24 }, "end": { - "line": 2668, - "column": 24 + "line": 2688, + "column": 27 } } }, { "type": { - "label": "template", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -349481,24 +353360,23 @@ "binop": null, "updateContext": null }, - "value": "[createTransform] SceneModel already has a transform with this ID: ", - "start": 100146, - "end": 100213, + "start": 100909, + "end": 100910, "loc": { "start": { - "line": 2668, - "column": 24 + "line": 2688, + "column": 27 }, "end": { - "line": 2668, - "column": 91 + "line": 2688, + "column": 28 } } }, { "type": { - "label": "${", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -349507,24 +353385,25 @@ "postfix": false, "binop": null }, - "start": 100213, - "end": 100215, + "value": "quaternion", + "start": 100910, + "end": 100920, "loc": { "start": { - "line": 2668, - "column": 91 + "line": 2688, + "column": 28 }, "end": { - "line": 2668, - "column": 93 + "line": 2688, + "column": 38 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -349532,23 +353411,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 100215, - "end": 100218, + "start": 100929, + "end": 100930, "loc": { "start": { - "line": 2668, - "column": 93 + "line": 2689, + "column": 8 }, "end": { - "line": 2668, - "column": 96 + "line": 2689, + "column": 9 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -349556,76 +353434,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 100218, - "end": 100219, + "start": 100930, + "end": 100931, "loc": { "start": { - "line": 2668, - "column": 96 + "line": 2689, + "column": 9 }, "end": { - "line": 2668, - "column": 97 + "line": 2689, + "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": "id", - "start": 100219, - "end": 100221, + "start": 100931, + "end": 100932, "loc": { "start": { - "line": 2668, - "column": 97 + "line": 2689, + "column": 10 }, "end": { - "line": 2668, - "column": 99 + "line": 2689, + "column": 11 } } }, { "type": { - "label": "}", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 100221, - "end": 100222, + "value": "this", + "start": 100941, + "end": 100945, "loc": { "start": { - "line": 2668, - "column": 99 + "line": 2690, + "column": 8 }, "end": { - "line": 2668, - "column": 100 + "line": 2690, + "column": 12 } } }, { "type": { - "label": "template", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -349636,23 +353516,22 @@ "binop": null, "updateContext": null }, - "value": "", - "start": 100222, - "end": 100222, + "start": 100945, + "end": 100946, "loc": { "start": { - "line": 2668, - "column": 100 + "line": 2690, + "column": 12 }, "end": { - "line": 2668, - "column": 100 + "line": 2690, + "column": 13 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -349662,75 +353541,76 @@ "postfix": false, "binop": null }, - "start": 100222, - "end": 100223, + "value": "_transforms", + "start": 100946, + "end": 100957, "loc": { "start": { - "line": 2668, - "column": 100 + "line": 2690, + "column": 13 }, "end": { - "line": 2668, - "column": 101 + "line": 2690, + "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 + "binop": null, + "updateContext": null }, - "start": 100223, - "end": 100224, + "start": 100957, + "end": 100958, "loc": { "start": { - "line": 2668, - "column": 101 + "line": 2690, + "column": 24 }, "end": { - "line": 2668, - "column": 102 + "line": 2690, + "column": 25 } } }, { "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": 100224, - "end": 100225, + "value": "transform", + "start": 100958, + "end": 100967, "loc": { "start": { - "line": 2668, - "column": 102 + "line": 2690, + "column": 25 }, "end": { - "line": 2668, - "column": 103 + "line": 2690, + "column": 34 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -349740,49 +353620,48 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 100238, - "end": 100244, + "start": 100967, + "end": 100968, "loc": { "start": { - "line": 2669, - "column": 12 + "line": 2690, + "column": 34 }, "end": { - "line": 2669, - "column": 18 + "line": 2690, + "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": 100244, - "end": 100245, + "value": "id", + "start": 100968, + "end": 100970, "loc": { "start": { - "line": 2669, - "column": 18 + "line": 2690, + "column": 35 }, "end": { - "line": 2669, - "column": 19 + "line": 2690, + "column": 37 } } }, { "type": { - "label": "}", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -349790,46 +353669,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 100254, - "end": 100255, + "start": 100970, + "end": 100971, "loc": { "start": { - "line": 2670, - "column": 8 + "line": 2690, + "column": 37 }, "end": { - "line": 2670, - "column": 9 + "line": 2690, + "column": 38 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "let", - "start": 100264, - "end": 100267, + "value": "=", + "start": 100972, + "end": 100973, "loc": { "start": { - "line": 2671, - "column": 8 + "line": 2690, + "column": 39 }, "end": { - "line": 2671, - "column": 11 + "line": 2690, + "column": 40 } } }, @@ -349845,17 +353724,17 @@ "postfix": false, "binop": null }, - "value": "parentTransform", - "start": 100268, - "end": 100283, + "value": "transform", + "start": 100974, + "end": 100983, "loc": { "start": { - "line": 2671, - "column": 12 + "line": 2690, + "column": 41 }, "end": { - "line": 2671, - "column": 27 + "line": 2690, + "column": 50 } } }, @@ -349872,24 +353751,24 @@ "binop": null, "updateContext": null }, - "start": 100283, - "end": 100284, + "start": 100983, + "end": 100984, "loc": { "start": { - "line": 2671, - "column": 27 + "line": 2690, + "column": 50 }, "end": { - "line": 2671, - "column": 28 + "line": 2690, + "column": 51 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -349899,24 +353778,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 100293, - "end": 100295, + "value": "return", + "start": 100993, + "end": 100999, "loc": { "start": { - "line": 2672, + "line": 2691, "column": 8 }, "end": { - "line": 2672, - "column": 10 + "line": 2691, + "column": 14 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -349925,48 +353804,49 @@ "postfix": false, "binop": null }, - "start": 100296, - "end": 100297, + "value": "transform", + "start": 101000, + "end": 101009, "loc": { "start": { - "line": 2672, - "column": 11 + "line": 2691, + "column": 15 }, "end": { - "line": 2672, - "column": 12 + "line": 2691, + "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": "cfg", - "start": 100297, - "end": 100300, + "start": 101009, + "end": 101010, "loc": { "start": { - "line": 2672, - "column": 12 + "line": 2691, + "column": 24 }, "end": { - "line": 2672, - "column": 15 + "line": 2691, + "column": 25 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -349974,19 +353854,34 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 100300, - "end": 100301, + "start": 101015, + "end": 101016, "loc": { "start": { - "line": 2672, - "column": 15 + "line": 2692, + "column": 4 }, "end": { - "line": 2672, - "column": 16 + "line": 2692, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.quaternion] Rotation of the mesh as a quaternion. Overridden by ````rotation````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n ", + "start": 101022, + "end": 106829, + "loc": { + "start": { + "line": 2694, + "column": 4 + }, + "end": { + "line": 2734, + "column": 7 } } }, @@ -350002,25 +353897,25 @@ "postfix": false, "binop": null }, - "value": "parentTransformId", - "start": 100301, - "end": 100318, + "value": "createMesh", + "start": 106834, + "end": 106844, "loc": { "start": { - "line": 2672, - "column": 16 + "line": 2735, + "column": 4 }, "end": { - "line": 2672, - "column": 33 + "line": 2735, + "column": 14 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -350028,23 +353923,23 @@ "postfix": false, "binop": null }, - "start": 100318, - "end": 100319, + "start": 106844, + "end": 106845, "loc": { "start": { - "line": 2672, - "column": 33 + "line": 2735, + "column": 14 }, "end": { - "line": 2672, - "column": 34 + "line": 2735, + "column": 15 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -350053,24 +353948,25 @@ "postfix": false, "binop": null }, - "start": 100320, - "end": 100321, + "value": "cfg", + "start": 106845, + "end": 106848, "loc": { "start": { - "line": 2672, - "column": 35 + "line": 2735, + "column": 15 }, "end": { - "line": 2672, - "column": 36 + "line": 2735, + "column": 18 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -350078,53 +353974,50 @@ "postfix": false, "binop": null }, - "value": "parentTransform", - "start": 100334, - "end": 100349, + "start": 106848, + "end": 106849, "loc": { "start": { - "line": 2673, - "column": 12 + "line": 2735, + "column": 18 }, "end": { - "line": 2673, - "column": 27 + "line": 2735, + "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": 100350, - "end": 100351, + "start": 106850, + "end": 106851, "loc": { "start": { - "line": 2673, - "column": 28 + "line": 2735, + "column": 20 }, "end": { - "line": 2673, - "column": 29 + "line": 2735, + "column": 21 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -350133,43 +354026,42 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 100352, - "end": 100356, + "value": "if", + "start": 106861, + "end": 106863, "loc": { "start": { - "line": 2673, - "column": 30 + "line": 2737, + "column": 8 }, "end": { - "line": 2673, - "column": 34 + "line": 2737, + "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": 100356, - "end": 100357, + "start": 106864, + "end": 106865, "loc": { "start": { - "line": 2673, - "column": 34 + "line": 2737, + "column": 11 }, "end": { - "line": 2673, - "column": 35 + "line": 2737, + "column": 12 } } }, @@ -350185,25 +354077,25 @@ "postfix": false, "binop": null }, - "value": "_transforms", - "start": 100357, - "end": 100368, + "value": "cfg", + "start": 106865, + "end": 106868, "loc": { "start": { - "line": 2673, - "column": 35 + "line": 2737, + "column": 12 }, "end": { - "line": 2673, - "column": 46 + "line": 2737, + "column": 15 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -350212,16 +354104,16 @@ "binop": null, "updateContext": null }, - "start": 100368, - "end": 100369, + "start": 106868, + "end": 106869, "loc": { "start": { - "line": 2673, - "column": 46 + "line": 2737, + "column": 15 }, "end": { - "line": 2673, - "column": 47 + "line": 2737, + "column": 16 } } }, @@ -350237,43 +354129,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 100369, - "end": 100372, + "value": "id", + "start": 106869, + "end": 106871, "loc": { "start": { - "line": 2673, - "column": 47 + "line": 2737, + "column": 16 }, "end": { - "line": 2673, - "column": 50 + "line": 2737, + "column": 18 } } }, { "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": 100372, - "end": 100373, + "value": "===", + "start": 106872, + "end": 106875, "loc": { "start": { - "line": 2673, - "column": 50 + "line": 2737, + "column": 19 }, "end": { - "line": 2673, - "column": 51 + "line": 2737, + "column": 22 } } }, @@ -350289,76 +354182,76 @@ "postfix": false, "binop": null }, - "value": "parentTransformId", - "start": 100373, - "end": 100390, + "value": "undefined", + "start": 106876, + "end": 106885, "loc": { "start": { - "line": 2673, - "column": 51 + "line": 2737, + "column": 23 }, "end": { - "line": 2673, - "column": 68 + "line": 2737, + "column": 32 } } }, { "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": 100390, - "end": 100391, + "value": "||", + "start": 106886, + "end": 106888, "loc": { "start": { - "line": 2673, - "column": 68 + "line": 2737, + "column": 33 }, "end": { - "line": 2673, - "column": 69 + "line": 2737, + "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": 100391, - "end": 100392, + "value": "cfg", + "start": 106889, + "end": 106892, "loc": { "start": { - "line": 2673, - "column": 69 + "line": 2737, + "column": 36 }, "end": { - "line": 2673, - "column": 70 + "line": 2737, + "column": 39 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -350369,24 +354262,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 100405, - "end": 100407, + "start": 106892, + "end": 106893, "loc": { "start": { - "line": 2674, - "column": 12 + "line": 2737, + "column": 39 }, "end": { - "line": 2674, - "column": 14 + "line": 2737, + "column": 40 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -350395,49 +354287,51 @@ "postfix": false, "binop": null }, - "start": 100408, - "end": 100409, + "value": "id", + "start": 106893, + "end": 106895, "loc": { "start": { - "line": 2674, - "column": 15 + "line": 2737, + "column": 40 }, "end": { - "line": 2674, - "column": 16 + "line": 2737, + "column": 42 } } }, { "type": { - "label": "prefix", + "label": "==/!=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "!", - "start": 100409, - "end": 100410, + "value": "===", + "start": 106896, + "end": 106899, "loc": { "start": { - "line": 2674, - "column": 16 + "line": 2737, + "column": 43 }, "end": { - "line": 2674, - "column": 17 + "line": 2737, + "column": 46 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -350445,19 +354339,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "parentTransform", - "start": 100410, - "end": 100425, + "value": "null", + "start": 106900, + "end": 106904, "loc": { "start": { - "line": 2674, - "column": 17 + "line": 2737, + "column": 47 }, "end": { - "line": 2674, - "column": 32 + "line": 2737, + "column": 51 } } }, @@ -350473,16 +354368,16 @@ "postfix": false, "binop": null }, - "start": 100425, - "end": 100426, + "start": 106904, + "end": 106905, "loc": { "start": { - "line": 2674, - "column": 32 + "line": 2737, + "column": 51 }, "end": { - "line": 2674, - "column": 33 + "line": 2737, + "column": 52 } } }, @@ -350498,16 +354393,16 @@ "postfix": false, "binop": null }, - "start": 100427, - "end": 100428, + "start": 106906, + "end": 106907, "loc": { "start": { - "line": 2674, - "column": 34 + "line": 2737, + "column": 53 }, "end": { - "line": 2674, - "column": 35 + "line": 2737, + "column": 54 } } }, @@ -350526,16 +354421,16 @@ "updateContext": null }, "value": "this", - "start": 100445, - "end": 100449, + "start": 106920, + "end": 106924, "loc": { "start": { - "line": 2675, - "column": 16 + "line": 2738, + "column": 12 }, "end": { - "line": 2675, - "column": 20 + "line": 2738, + "column": 16 } } }, @@ -350552,16 +354447,16 @@ "binop": null, "updateContext": null }, - "start": 100449, - "end": 100450, + "start": 106924, + "end": 106925, "loc": { "start": { - "line": 2675, - "column": 20 + "line": 2738, + "column": 16 }, "end": { - "line": 2675, - "column": 21 + "line": 2738, + "column": 17 } } }, @@ -350578,16 +354473,16 @@ "binop": null }, "value": "error", - "start": 100450, - "end": 100455, + "start": 106925, + "end": 106930, "loc": { "start": { - "line": 2675, - "column": 21 + "line": 2738, + "column": 17 }, "end": { - "line": 2675, - "column": 26 + "line": 2738, + "column": 22 } } }, @@ -350603,16 +354498,16 @@ "postfix": false, "binop": null }, - "start": 100455, - "end": 100456, + "start": 106930, + "end": 106931, "loc": { "start": { - "line": 2675, - "column": 26 + "line": 2738, + "column": 22 }, "end": { - "line": 2675, - "column": 27 + "line": 2738, + "column": 23 } } }, @@ -350629,17 +354524,17 @@ "binop": null, "updateContext": null }, - "value": "[createTransform] SceneModel.createTransform() config missing: id", - "start": 100456, - "end": 100523, + "value": "[createMesh] SceneModel.createMesh() config missing: id", + "start": 106931, + "end": 106988, "loc": { "start": { - "line": 2675, - "column": 27 + "line": 2738, + "column": 23 }, "end": { - "line": 2675, - "column": 94 + "line": 2738, + "column": 80 } } }, @@ -350655,16 +354550,16 @@ "postfix": false, "binop": null }, - "start": 100523, - "end": 100524, + "start": 106988, + "end": 106989, "loc": { "start": { - "line": 2675, - "column": 94 + "line": 2738, + "column": 80 }, "end": { - "line": 2675, - "column": 95 + "line": 2738, + "column": 81 } } }, @@ -350681,16 +354576,16 @@ "binop": null, "updateContext": null }, - "start": 100524, - "end": 100525, + "start": 106989, + "end": 106990, "loc": { "start": { - "line": 2675, - "column": 95 + "line": 2738, + "column": 81 }, "end": { - "line": 2675, - "column": 96 + "line": 2738, + "column": 82 } } }, @@ -350709,24 +354604,25 @@ "updateContext": null }, "value": "return", - "start": 100542, - "end": 100548, + "start": 107003, + "end": 107009, "loc": { "start": { - "line": 2676, - "column": 16 + "line": 2739, + "column": 12 }, "end": { - "line": 2676, - "column": 22 + "line": 2739, + "column": 18 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "false", + "keyword": "false", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -350735,41 +354631,43 @@ "binop": null, "updateContext": null }, - "start": 100548, - "end": 100549, + "value": "false", + "start": 107010, + "end": 107015, "loc": { "start": { - "line": 2676, - "column": 22 + "line": 2739, + "column": 19 }, "end": { - "line": 2676, - "column": 23 + "line": 2739, + "column": 24 } } }, { "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": 100562, - "end": 100563, + "start": 107015, + "end": 107016, "loc": { "start": { - "line": 2677, - "column": 12 + "line": 2739, + "column": 24 }, "end": { - "line": 2677, - "column": 13 + "line": 2739, + "column": 25 } } }, @@ -350785,23 +354683,23 @@ "postfix": false, "binop": null }, - "start": 100572, - "end": 100573, + "start": 107025, + "end": 107026, "loc": { "start": { - "line": 2678, + "line": 2740, "column": 8 }, "end": { - "line": 2678, + "line": 2740, "column": 9 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -350812,24 +354710,24 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 100582, - "end": 100587, + "value": "if", + "start": 107036, + "end": 107038, "loc": { "start": { - "line": 2679, + "line": 2742, "column": 8 }, "end": { - "line": 2679, - "column": 13 + "line": 2742, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -350838,53 +354736,52 @@ "postfix": false, "binop": null }, - "value": "transform", - "start": 100588, - "end": 100597, + "start": 107039, + "end": 107040, "loc": { "start": { - "line": 2679, - "column": 14 + "line": 2742, + "column": 11 }, "end": { - "line": 2679, - "column": 23 + "line": 2742, + "column": 12 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 100598, - "end": 100599, + "value": "this", + "start": 107040, + "end": 107044, "loc": { "start": { - "line": 2679, - "column": 24 + "line": 2742, + "column": 12 }, "end": { - "line": 2679, - "column": 25 + "line": 2742, + "column": 16 } } }, { "type": { - "label": "new", - "keyword": "new", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -350893,17 +354790,16 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 100600, - "end": 100603, + "start": 107044, + "end": 107045, "loc": { "start": { - "line": 2679, - "column": 26 + "line": 2742, + "column": 16 }, "end": { - "line": 2679, - "column": 29 + "line": 2742, + "column": 17 } } }, @@ -350919,23 +354815,23 @@ "postfix": false, "binop": null }, - "value": "SceneModelTransform", - "start": 100604, - "end": 100623, + "value": "_meshes", + "start": 107045, + "end": 107052, "loc": { "start": { - "line": 2679, - "column": 30 + "line": 2742, + "column": 17 }, "end": { - "line": 2679, - "column": 49 + "line": 2742, + "column": 24 } } }, { "type": { - "label": "(", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -350943,25 +354839,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 100623, - "end": 100624, + "start": 107052, + "end": 107053, "loc": { "start": { - "line": 2679, - "column": 49 + "line": 2742, + "column": 24 }, "end": { - "line": 2679, - "column": 50 + "line": 2742, + "column": 25 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -350970,16 +354867,43 @@ "postfix": false, "binop": null }, - "start": 100624, - "end": 100625, + "value": "cfg", + "start": 107053, + "end": 107056, "loc": { "start": { - "line": 2679, - "column": 50 + "line": 2742, + "column": 25 }, "end": { - "line": 2679, - "column": 51 + "line": 2742, + "column": 28 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 107056, + "end": 107057, + "loc": { + "start": { + "line": 2742, + "column": 28 + }, + "end": { + "line": 2742, + "column": 29 } } }, @@ -350996,23 +354920,23 @@ "binop": null }, "value": "id", - "start": 100638, - "end": 100640, + "start": 107057, + "end": 107059, "loc": { "start": { - "line": 2680, - "column": 12 + "line": 2742, + "column": 29 }, "end": { - "line": 2680, - "column": 14 + "line": 2742, + "column": 31 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -351022,23 +354946,48 @@ "binop": null, "updateContext": null }, - "start": 100640, - "end": 100641, + "start": 107059, + "end": 107060, "loc": { "start": { - "line": 2680, - "column": 14 + "line": 2742, + "column": 31 }, "end": { - "line": 2680, - "column": 15 + "line": 2742, + "column": 32 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 107060, + "end": 107061, + "loc": { + "start": { + "line": 2742, + "column": 32 + }, + "end": { + "line": 2742, + "column": 33 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -351047,17 +354996,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 100642, - "end": 100645, + "start": 107062, + "end": 107063, "loc": { "start": { - "line": 2680, - "column": 16 + "line": 2742, + "column": 34 }, "end": { - "line": 2680, - "column": 19 + "line": 2742, + "column": 35 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 107076, + "end": 107080, + "loc": { + "start": { + "line": 2743, + "column": 12 + }, + "end": { + "line": 2743, + "column": 16 } } }, @@ -351074,16 +355050,16 @@ "binop": null, "updateContext": null }, - "start": 100645, - "end": 100646, + "start": 107080, + "end": 107081, "loc": { "start": { - "line": 2680, - "column": 19 + "line": 2743, + "column": 16 }, "end": { - "line": 2680, - "column": 20 + "line": 2743, + "column": 17 } } }, @@ -351099,49 +355075,48 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 100646, - "end": 100648, + "value": "error", + "start": 107081, + "end": 107086, "loc": { "start": { - "line": 2680, - "column": 20 + "line": 2743, + "column": 17 }, "end": { - "line": 2680, + "line": 2743, "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": 100648, - "end": 100649, + "start": 107086, + "end": 107087, "loc": { "start": { - "line": 2680, + "line": 2743, "column": 22 }, "end": { - "line": 2680, + "line": 2743, "column": 23 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -351151,24 +355126,23 @@ "postfix": false, "binop": null }, - "value": "model", - "start": 100662, - "end": 100667, + "start": 107087, + "end": 107088, "loc": { "start": { - "line": 2681, - "column": 12 + "line": 2743, + "column": 23 }, "end": { - "line": 2681, - "column": 17 + "line": 2743, + "column": 24 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -351178,23 +355152,48 @@ "binop": null, "updateContext": null }, - "start": 100667, - "end": 100668, + "value": "[createMesh] SceneModel already has a mesh with this ID: ", + "start": 107088, + "end": 107145, "loc": { "start": { - "line": 2681, - "column": 17 + "line": 2743, + "column": 24 }, "end": { - "line": 2681, - "column": 18 + "line": 2743, + "column": 81 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 107145, + "end": 107147, + "loc": { + "start": { + "line": 2743, + "column": 81 + }, + "end": { + "line": 2743, + "column": 83 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -351202,27 +355201,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 100669, - "end": 100673, + "value": "cfg", + "start": 107147, + "end": 107150, "loc": { "start": { - "line": 2681, - "column": 19 + "line": 2743, + "column": 83 }, "end": { - "line": 2681, - "column": 23 + "line": 2743, + "column": 86 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -351232,16 +355230,16 @@ "binop": null, "updateContext": null }, - "start": 100673, - "end": 100674, + "start": 107150, + "end": 107151, "loc": { "start": { - "line": 2681, - "column": 23 + "line": 2743, + "column": 86 }, "end": { - "line": 2681, - "column": 24 + "line": 2743, + "column": 87 } } }, @@ -351257,24 +355255,49 @@ "postfix": false, "binop": null }, - "value": "parent", - "start": 100687, - "end": 100693, + "value": "id", + "start": 107151, + "end": 107153, "loc": { "start": { - "line": 2682, - "column": 12 + "line": 2743, + "column": 87 }, "end": { - "line": 2682, - "column": 18 + "line": 2743, + "column": 89 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 107153, + "end": 107154, + "loc": { + "start": { + "line": 2743, + "column": 89 + }, + "end": { + "line": 2743, + "column": 90 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -351284,22 +355307,23 @@ "binop": null, "updateContext": null }, - "start": 100693, - "end": 100694, + "value": "", + "start": 107154, + "end": 107154, "loc": { "start": { - "line": 2682, - "column": 18 + "line": 2743, + "column": 90 }, "end": { - "line": 2682, - "column": 19 + "line": 2743, + "column": 90 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -351309,75 +355333,74 @@ "postfix": false, "binop": null }, - "value": "parentTransform", - "start": 100695, - "end": 100710, + "start": 107154, + "end": 107155, "loc": { "start": { - "line": 2682, - "column": 20 + "line": 2743, + "column": 90 }, "end": { - "line": 2682, - "column": 35 + "line": 2743, + "column": 91 } } }, { "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": 100710, - "end": 100711, + "start": 107155, + "end": 107156, "loc": { "start": { - "line": 2682, - "column": 35 + "line": 2743, + "column": 91 }, "end": { - "line": 2682, - "column": 36 + "line": 2743, + "column": 92 } } }, { "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": "matrix", - "start": 100724, - "end": 100730, + "start": 107156, + "end": 107157, "loc": { "start": { - "line": 2683, - "column": 12 + "line": 2743, + "column": 92 }, "end": { - "line": 2683, - "column": 18 + "line": 2743, + "column": 93 } } }, { "type": { - "label": ":", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -351388,22 +355411,24 @@ "binop": null, "updateContext": null }, - "start": 100730, - "end": 100731, + "value": "return", + "start": 107170, + "end": 107176, "loc": { "start": { - "line": 2683, - "column": 18 + "line": 2744, + "column": 12 }, "end": { - "line": 2683, - "column": 19 + "line": 2744, + "column": 18 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -351411,26 +355436,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 100732, - "end": 100735, + "value": "false", + "start": 107177, + "end": 107182, "loc": { "start": { - "line": 2683, - "column": 20 + "line": 2744, + "column": 19 }, "end": { - "line": 2683, - "column": 23 + "line": 2744, + "column": 24 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -351440,24 +355466,24 @@ "binop": null, "updateContext": null }, - "start": 100735, - "end": 100736, + "start": 107182, + "end": 107183, "loc": { "start": { - "line": 2683, - "column": 23 + "line": 2744, + "column": 24 }, "end": { - "line": 2683, - "column": 24 + "line": 2744, + "column": 25 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -351465,24 +355491,24 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 100736, - "end": 100742, + "start": 107192, + "end": 107193, "loc": { "start": { - "line": 2683, - "column": 24 + "line": 2745, + "column": 8 }, "end": { - "line": 2683, - "column": 30 + "line": 2745, + "column": 9 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -351492,16 +355518,17 @@ "binop": null, "updateContext": null }, - "start": 100742, - "end": 100743, + "value": "const", + "start": 107203, + "end": 107208, "loc": { "start": { - "line": 2683, - "column": 30 + "line": 2747, + "column": 8 }, "end": { - "line": 2683, - "column": 31 + "line": 2747, + "column": 13 } } }, @@ -351517,43 +355544,69 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 100756, - "end": 100764, + "value": "instancing", + "start": 107209, + "end": 107219, "loc": { "start": { - "line": 2684, - "column": 12 + "line": 2747, + "column": 14 }, "end": { - "line": 2684, - "column": 20 + "line": 2747, + "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": 100764, - "end": 100765, + "value": "=", + "start": 107220, + "end": 107221, "loc": { "start": { - "line": 2684, - "column": 20 + "line": 2747, + "column": 25 }, "end": { - "line": 2684, - "column": 21 + "line": 2747, + "column": 26 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 107222, + "end": 107223, + "loc": { + "start": { + "line": 2747, + "column": 27 + }, + "end": { + "line": 2747, + "column": 28 } } }, @@ -351570,16 +355623,16 @@ "binop": null }, "value": "cfg", - "start": 100766, - "end": 100769, + "start": 107223, + "end": 107226, "loc": { "start": { - "line": 2684, - "column": 22 + "line": 2747, + "column": 28 }, "end": { - "line": 2684, - "column": 25 + "line": 2747, + "column": 31 } } }, @@ -351596,16 +355649,16 @@ "binop": null, "updateContext": null }, - "start": 100769, - "end": 100770, + "start": 107226, + "end": 107227, "loc": { "start": { - "line": 2684, - "column": 25 + "line": 2747, + "column": 31 }, "end": { - "line": 2684, - "column": 26 + "line": 2747, + "column": 32 } } }, @@ -351621,23 +355674,23 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 100770, - "end": 100778, + "value": "geometryId", + "start": 107227, + "end": 107237, "loc": { "start": { - "line": 2684, - "column": 26 + "line": 2747, + "column": 32 }, "end": { - "line": 2684, - "column": 34 + "line": 2747, + "column": 42 } } }, { "type": { - "label": ",", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -351645,19 +355698,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 100778, - "end": 100779, + "value": "!==", + "start": 107238, + "end": 107241, "loc": { "start": { - "line": 2684, - "column": 34 + "line": 2747, + "column": 43 }, "end": { - "line": 2684, - "column": 35 + "line": 2747, + "column": 46 } } }, @@ -351673,75 +355727,75 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 100792, - "end": 100797, + "value": "undefined", + "start": 107242, + "end": 107251, "loc": { "start": { - "line": 2685, - "column": 12 + "line": 2747, + "column": 47 }, "end": { - "line": 2685, - "column": 17 + "line": 2747, + "column": 56 } } }, { "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": 100797, - "end": 100798, + "start": 107251, + "end": 107252, "loc": { "start": { - "line": 2685, - "column": 17 + "line": 2747, + "column": 56 }, "end": { - "line": 2685, - "column": 18 + "line": 2747, + "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": "cfg", - "start": 100799, - "end": 100802, + "start": 107252, + "end": 107253, "loc": { "start": { - "line": 2685, - "column": 19 + "line": 2747, + "column": 57 }, "end": { - "line": 2685, - "column": 22 + "line": 2747, + "column": 58 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -351752,16 +355806,17 @@ "binop": null, "updateContext": null }, - "start": 100802, - "end": 100803, + "value": "const", + "start": 107262, + "end": 107267, "loc": { "start": { - "line": 2685, - "column": 22 + "line": 2748, + "column": 8 }, "end": { - "line": 2685, - "column": 23 + "line": 2748, + "column": 13 } } }, @@ -351777,43 +355832,71 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 100803, - "end": 100808, + "value": "batching", + "start": 107268, + "end": 107276, "loc": { "start": { - "line": 2685, - "column": 23 + "line": 2748, + "column": 14 }, "end": { - "line": 2685, - "column": 28 + "line": 2748, + "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": 100808, - "end": 100809, + "value": "=", + "start": 107277, + "end": 107278, "loc": { "start": { - "line": 2685, - "column": 28 + "line": 2748, + "column": 23 }, "end": { - "line": 2685, - "column": 29 + "line": 2748, + "column": 24 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 107279, + "end": 107280, + "loc": { + "start": { + "line": 2748, + "column": 25 + }, + "end": { + "line": 2748, + "column": 26 } } }, @@ -351829,23 +355912,23 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 100822, - "end": 100830, + "value": "instancing", + "start": 107280, + "end": 107290, "loc": { "start": { - "line": 2686, - "column": 12 + "line": 2748, + "column": 26 }, "end": { - "line": 2686, - "column": 20 + "line": 2748, + "column": 36 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -351856,68 +355939,69 @@ "binop": null, "updateContext": null }, - "start": 100830, - "end": 100831, + "start": 107290, + "end": 107291, "loc": { "start": { - "line": 2686, - "column": 20 + "line": 2748, + "column": 36 }, "end": { - "line": 2686, - "column": 21 + "line": 2748, + "column": 37 } } }, { "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": "cfg", - "start": 100832, - "end": 100835, + "value": "if", + "start": 107301, + "end": 107303, "loc": { "start": { - "line": 2686, - "column": 22 + "line": 2750, + "column": 8 }, "end": { - "line": 2686, - "column": 25 + "line": 2750, + "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": 100835, - "end": 100836, + "start": 107304, + "end": 107305, "loc": { "start": { - "line": 2686, - "column": 25 + "line": 2750, + "column": 11 }, "end": { - "line": 2686, - "column": 26 + "line": 2750, + "column": 12 } } }, @@ -351933,50 +356017,49 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 100836, - "end": 100844, + "value": "batching", + "start": 107305, + "end": 107313, "loc": { "start": { - "line": 2686, - "column": 26 + "line": 2750, + "column": 12 }, "end": { - "line": 2686, - "column": 34 + "line": 2750, + "column": 20 } } }, { "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": 100844, - "end": 100845, + "start": 107313, + "end": 107314, "loc": { "start": { - "line": 2686, - "column": 34 + "line": 2750, + "column": 20 }, "end": { - "line": 2686, - "column": 35 + "line": 2750, + "column": 21 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -351985,24 +356068,40 @@ "postfix": false, "binop": null }, - "value": "quaternion", - "start": 100858, - "end": 100868, + "start": 107315, + "end": 107316, "loc": { "start": { - "line": 2687, + "line": 2750, + "column": 22 + }, + "end": { + "line": 2750, + "column": 23 + } + } + }, + { + "type": "CommentLine", + "value": " Batched geometry", + "start": 107330, + "end": 107349, + "loc": { + "start": { + "line": 2752, "column": 12 }, "end": { - "line": 2687, - "column": 22 + "line": 2752, + "column": 31 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -352012,16 +356111,42 @@ "binop": null, "updateContext": null }, - "start": 100868, - "end": 100869, + "value": "if", + "start": 107363, + "end": 107365, "loc": { "start": { - "line": 2687, - "column": 22 + "line": 2754, + "column": 12 }, "end": { - "line": 2687, - "column": 23 + "line": 2754, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 107366, + "end": 107367, + "loc": { + "start": { + "line": 2754, + "column": 15 + }, + "end": { + "line": 2754, + "column": 16 } } }, @@ -352038,16 +356163,16 @@ "binop": null }, "value": "cfg", - "start": 100870, - "end": 100873, + "start": 107367, + "end": 107370, "loc": { "start": { - "line": 2687, - "column": 24 + "line": 2754, + "column": 16 }, "end": { - "line": 2687, - "column": 27 + "line": 2754, + "column": 19 } } }, @@ -352064,16 +356189,16 @@ "binop": null, "updateContext": null }, - "start": 100873, - "end": 100874, + "start": 107370, + "end": 107371, "loc": { "start": { - "line": 2687, - "column": 27 + "line": 2754, + "column": 19 }, "end": { - "line": 2687, - "column": 28 + "line": 2754, + "column": 20 } } }, @@ -352089,50 +356214,52 @@ "postfix": false, "binop": null }, - "value": "quaternion", - "start": 100874, - "end": 100884, + "value": "primitive", + "start": 107371, + "end": 107380, "loc": { "start": { - "line": 2687, - "column": 28 + "line": 2754, + "column": 20 }, "end": { - "line": 2687, - "column": 38 + "line": 2754, + "column": 29 } } }, { "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": 100893, - "end": 100894, + "value": "===", + "start": 107381, + "end": 107384, "loc": { "start": { - "line": 2688, - "column": 8 + "line": 2754, + "column": 30 }, "end": { - "line": 2688, - "column": 9 + "line": 2754, + "column": 33 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -352140,22 +356267,23 @@ "postfix": false, "binop": null }, - "start": 100894, - "end": 100895, + "value": "undefined", + "start": 107385, + "end": 107394, "loc": { "start": { - "line": 2688, - "column": 9 + "line": 2754, + "column": 34 }, "end": { - "line": 2688, - "column": 10 + "line": 2754, + "column": 43 } } }, { "type": { - "label": ";", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -352163,26 +356291,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 100895, - "end": 100896, + "value": "||", + "start": 107395, + "end": 107397, "loc": { "start": { - "line": 2688, - "column": 10 + "line": 2754, + "column": 44 }, "end": { - "line": 2688, - "column": 11 + "line": 2754, + "column": 46 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -352190,20 +356318,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 100905, - "end": 100909, + "value": "cfg", + "start": 107398, + "end": 107401, "loc": { "start": { - "line": 2689, - "column": 8 + "line": 2754, + "column": 47 }, "end": { - "line": 2689, - "column": 12 + "line": 2754, + "column": 50 } } }, @@ -352220,16 +356347,16 @@ "binop": null, "updateContext": null }, - "start": 100909, - "end": 100910, + "start": 107401, + "end": 107402, "loc": { "start": { - "line": 2689, - "column": 12 + "line": 2754, + "column": 50 }, "end": { - "line": 2689, - "column": 13 + "line": 2754, + "column": 51 } } }, @@ -352245,49 +356372,51 @@ "postfix": false, "binop": null }, - "value": "_transforms", - "start": 100910, - "end": 100921, + "value": "primitive", + "start": 107402, + "end": 107411, "loc": { "start": { - "line": 2689, - "column": 13 + "line": 2754, + "column": 51 }, "end": { - "line": 2689, - "column": 24 + "line": 2754, + "column": 60 } } }, { "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": 100921, - "end": 100922, + "value": "===", + "start": 107412, + "end": 107415, "loc": { "start": { - "line": 2689, - "column": 24 + "line": 2754, + "column": 61 }, "end": { - "line": 2689, - "column": 25 + "line": 2754, + "column": 64 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -352295,25 +356424,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "transform", - "start": 100922, - "end": 100931, + "value": "null", + "start": 107416, + "end": 107420, "loc": { "start": { - "line": 2689, - "column": 25 + "line": 2754, + "column": 65 }, "end": { - "line": 2689, - "column": 34 + "line": 2754, + "column": 69 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -352321,26 +356451,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 100931, - "end": 100932, + "start": 107420, + "end": 107421, "loc": { "start": { - "line": 2689, - "column": 34 + "line": 2754, + "column": 69 }, "end": { - "line": 2689, - "column": 35 + "line": 2754, + "column": 70 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -352349,70 +356478,68 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 100932, - "end": 100934, + "start": 107422, + "end": 107423, "loc": { "start": { - "line": 2689, - "column": 35 + "line": 2754, + "column": 71 }, "end": { - "line": 2689, - "column": 37 + "line": 2754, + "column": 72 } } }, { "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": 100934, - "end": 100935, + "value": "cfg", + "start": 107440, + "end": 107443, "loc": { "start": { - "line": 2689, - "column": 37 + "line": 2755, + "column": 16 }, "end": { - "line": 2689, - "column": 38 + "line": 2755, + "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": 100936, - "end": 100937, + "start": 107443, + "end": 107444, "loc": { "start": { - "line": 2689, - "column": 39 + "line": 2755, + "column": 19 }, "end": { - "line": 2689, - "column": 40 + "line": 2755, + "column": 20 } } }, @@ -352428,52 +356555,52 @@ "postfix": false, "binop": null }, - "value": "transform", - "start": 100938, - "end": 100947, + "value": "primitive", + "start": 107444, + "end": 107453, "loc": { "start": { - "line": 2689, - "column": 41 + "line": 2755, + "column": 20 }, "end": { - "line": 2689, - "column": 50 + "line": 2755, + "column": 29 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 100947, - "end": 100948, + "value": "=", + "start": 107454, + "end": 107455, "loc": { "start": { - "line": 2689, - "column": 50 + "line": 2755, + "column": 30 }, "end": { - "line": 2689, - "column": 51 + "line": 2755, + "column": 31 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -352482,75 +356609,75 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 100957, - "end": 100963, + "value": "triangles", + "start": 107456, + "end": 107467, "loc": { "start": { - "line": 2690, - "column": 8 + "line": 2755, + "column": 32 }, "end": { - "line": 2690, - "column": 14 + "line": 2755, + "column": 43 } } }, { "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": "transform", - "start": 100964, - "end": 100973, + "start": 107467, + "end": 107468, "loc": { "start": { - "line": 2690, - "column": 15 + "line": 2755, + "column": 43 }, "end": { - "line": 2690, - "column": 24 + "line": 2755, + "column": 44 } } }, { "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": 100973, - "end": 100974, + "start": 107481, + "end": 107482, "loc": { "start": { - "line": 2690, - "column": 24 + "line": 2756, + "column": 12 }, "end": { - "line": 2690, - "column": 25 + "line": 2756, + "column": 13 } } }, { "type": { - "label": "}", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -352558,41 +356685,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 100979, - "end": 100980, - "loc": { - "start": { - "line": 2691, - "column": 4 - }, - "end": { - "line": 2691, - "column": 5 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n ", - "start": 100986, - "end": 106680, + "value": "if", + "start": 107495, + "end": 107497, "loc": { "start": { - "line": 2693, - "column": 4 + "line": 2757, + "column": 12 }, "end": { - "line": 2732, - "column": 7 + "line": 2757, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -352601,24 +356714,23 @@ "postfix": false, "binop": null }, - "value": "createMesh", - "start": 106685, - "end": 106695, + "start": 107498, + "end": 107499, "loc": { "start": { - "line": 2733, - "column": 4 + "line": 2757, + "column": 15 }, "end": { - "line": 2733, - "column": 14 + "line": 2757, + "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -352627,50 +356739,51 @@ "postfix": false, "binop": null }, - "start": 106695, - "end": 106696, + "value": "cfg", + "start": 107499, + "end": 107502, "loc": { "start": { - "line": 2733, - "column": 14 + "line": 2757, + "column": 16 }, "end": { - "line": 2733, - "column": 15 + "line": 2757, + "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": "cfg", - "start": 106696, - "end": 106699, + "start": 107502, + "end": 107503, "loc": { "start": { - "line": 2733, - "column": 15 + "line": 2757, + "column": 19 }, "end": { - "line": 2733, - "column": 18 + "line": 2757, + "column": 20 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -352678,50 +356791,52 @@ "postfix": false, "binop": null }, - "start": 106699, - "end": 106700, + "value": "primitive", + "start": 107503, + "end": 107512, "loc": { "start": { - "line": 2733, - "column": 18 + "line": 2757, + "column": 20 }, "end": { - "line": 2733, - "column": 19 + "line": 2757, + "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": 106701, - "end": 106702, + "value": "!==", + "start": 107513, + "end": 107516, "loc": { "start": { - "line": 2733, - "column": 20 + "line": 2757, + "column": 30 }, "end": { - "line": 2733, - "column": 21 + "line": 2757, + "column": 33 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -352730,42 +356845,44 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 106712, - "end": 106714, + "value": "points", + "start": 107517, + "end": 107525, "loc": { "start": { - "line": 2735, - "column": 8 + "line": 2757, + "column": 34 }, "end": { - "line": 2735, - "column": 10 + "line": 2757, + "column": 42 } } }, { "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": 106715, - "end": 106716, + "value": "&&", + "start": 107526, + "end": 107528, "loc": { "start": { - "line": 2735, - "column": 11 + "line": 2757, + "column": 43 }, "end": { - "line": 2735, - "column": 12 + "line": 2757, + "column": 45 } } }, @@ -352782,16 +356899,16 @@ "binop": null }, "value": "cfg", - "start": 106716, - "end": 106719, + "start": 107529, + "end": 107532, "loc": { "start": { - "line": 2735, - "column": 12 + "line": 2757, + "column": 46 }, "end": { - "line": 2735, - "column": 15 + "line": 2757, + "column": 49 } } }, @@ -352808,16 +356925,16 @@ "binop": null, "updateContext": null }, - "start": 106719, - "end": 106720, + "start": 107532, + "end": 107533, "loc": { "start": { - "line": 2735, - "column": 15 + "line": 2757, + "column": 49 }, "end": { - "line": 2735, - "column": 16 + "line": 2757, + "column": 50 } } }, @@ -352833,17 +356950,17 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 106720, - "end": 106722, + "value": "primitive", + "start": 107533, + "end": 107542, "loc": { "start": { - "line": 2735, - "column": 16 + "line": 2757, + "column": 50 }, "end": { - "line": 2735, - "column": 18 + "line": 2757, + "column": 59 } } }, @@ -352860,23 +356977,23 @@ "binop": 6, "updateContext": null }, - "value": "===", - "start": 106723, - "end": 106726, + "value": "!==", + "start": 107543, + "end": 107546, "loc": { "start": { - "line": 2735, - "column": 19 + "line": 2757, + "column": 60 }, "end": { - "line": 2735, - "column": 22 + "line": 2757, + "column": 63 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -352884,25 +357001,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "undefined", - "start": 106727, - "end": 106736, + "value": "lines", + "start": 107547, + "end": 107554, "loc": { "start": { - "line": 2735, - "column": 23 + "line": 2757, + "column": 64 }, "end": { - "line": 2735, - "column": 32 + "line": 2757, + "column": 71 } } }, { "type": { - "label": "||", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -352910,20 +357028,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": 2, "updateContext": null }, - "value": "||", - "start": 106737, - "end": 106739, + "value": "&&", + "start": 107555, + "end": 107557, "loc": { "start": { - "line": 2735, - "column": 33 + "line": 2757, + "column": 72 }, "end": { - "line": 2735, - "column": 35 + "line": 2757, + "column": 74 } } }, @@ -352940,16 +357058,16 @@ "binop": null }, "value": "cfg", - "start": 106740, - "end": 106743, + "start": 107558, + "end": 107561, "loc": { "start": { - "line": 2735, - "column": 36 + "line": 2757, + "column": 75 }, "end": { - "line": 2735, - "column": 39 + "line": 2757, + "column": 78 } } }, @@ -352966,16 +357084,16 @@ "binop": null, "updateContext": null }, - "start": 106743, - "end": 106744, + "start": 107561, + "end": 107562, "loc": { "start": { - "line": 2735, - "column": 39 + "line": 2757, + "column": 78 }, "end": { - "line": 2735, - "column": 40 + "line": 2757, + "column": 79 } } }, @@ -352991,17 +357109,17 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 106744, - "end": 106746, + "value": "primitive", + "start": 107562, + "end": 107571, "loc": { "start": { - "line": 2735, - "column": 40 + "line": 2757, + "column": 79 }, "end": { - "line": 2735, - "column": 42 + "line": 2757, + "column": 88 } } }, @@ -353018,24 +357136,23 @@ "binop": 6, "updateContext": null }, - "value": "===", - "start": 106747, - "end": 106750, + "value": "!==", + "start": 107572, + "end": 107575, "loc": { "start": { - "line": 2735, - "column": 43 + "line": 2757, + "column": 89 }, "end": { - "line": 2735, - "column": 46 + "line": 2757, + "column": 92 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -353046,74 +357163,50 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 106751, - "end": 106755, - "loc": { - "start": { - "line": 2735, - "column": 47 - }, - "end": { - "line": 2735, - "column": 51 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 106755, - "end": 106756, + "value": "triangles", + "start": 107576, + "end": 107587, "loc": { "start": { - "line": 2735, - "column": 51 + "line": 2757, + "column": 93 }, "end": { - "line": 2735, - "column": 52 + "line": 2757, + "column": 104 } } }, { "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": 106757, - "end": 106758, + "value": "&&", + "start": 107588, + "end": 107590, "loc": { "start": { - "line": 2735, - "column": 53 + "line": 2757, + "column": 105 }, "end": { - "line": 2735, - "column": 54 + "line": 2757, + "column": 107 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -353121,20 +357214,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 106771, - "end": 106775, + "value": "cfg", + "start": 107591, + "end": 107594, "loc": { "start": { - "line": 2736, - "column": 12 + "line": 2757, + "column": 108 }, "end": { - "line": 2736, - "column": 16 + "line": 2757, + "column": 111 } } }, @@ -353151,16 +357243,16 @@ "binop": null, "updateContext": null }, - "start": 106775, - "end": 106776, + "start": 107594, + "end": 107595, "loc": { "start": { - "line": 2736, - "column": 16 + "line": 2757, + "column": 111 }, "end": { - "line": 2736, - "column": 17 + "line": 2757, + "column": 112 } } }, @@ -353176,42 +357268,44 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 106776, - "end": 106781, + "value": "primitive", + "start": 107595, + "end": 107604, "loc": { "start": { - "line": 2736, - "column": 17 + "line": 2757, + "column": 112 }, "end": { - "line": 2736, - "column": 22 + "line": 2757, + "column": 121 } } }, { "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": 106781, - "end": 106782, + "value": "!==", + "start": 107605, + "end": 107608, "loc": { "start": { - "line": 2736, - "column": 22 + "line": 2757, + "column": 122 }, "end": { - "line": 2736, - "column": 23 + "line": 2757, + "column": 125 } } }, @@ -353228,76 +357322,77 @@ "binop": null, "updateContext": null }, - "value": "[createMesh] SceneModel.createMesh() config missing: id", - "start": 106782, - "end": 106839, + "value": "solid", + "start": 107609, + "end": 107616, "loc": { "start": { - "line": 2736, - "column": 23 + "line": 2757, + "column": 126 }, "end": { - "line": 2736, - "column": 80 + "line": 2757, + "column": 133 } } }, { "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": 106839, - "end": 106840, + "value": "&&", + "start": 107617, + "end": 107619, "loc": { "start": { - "line": 2736, - "column": 80 + "line": 2757, + "column": 134 }, "end": { - "line": 2736, - "column": 81 + "line": 2757, + "column": 136 } } }, { "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": 106840, - "end": 106841, + "value": "cfg", + "start": 107620, + "end": 107623, "loc": { "start": { - "line": 2736, - "column": 81 + "line": 2757, + "column": 137 }, "end": { - "line": 2736, - "column": 82 + "line": 2757, + "column": 140 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -353307,24 +357402,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 106854, - "end": 106860, + "start": 107623, + "end": 107624, "loc": { "start": { - "line": 2737, - "column": 12 + "line": 2757, + "column": 140 }, "end": { - "line": 2737, - "column": 18 + "line": 2757, + "column": 141 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -353332,26 +357425,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 106861, - "end": 106866, + "value": "primitive", + "start": 107624, + "end": 107633, "loc": { "start": { - "line": 2737, - "column": 19 + "line": 2757, + "column": 141 }, "end": { - "line": 2737, - "column": 24 + "line": 2757, + "column": 150 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -353359,51 +357451,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 106866, - "end": 106867, + "value": "!==", + "start": 107634, + "end": 107637, "loc": { "start": { - "line": 2737, - "column": 24 + "line": 2757, + "column": 151 }, "end": { - "line": 2737, - "column": 25 + "line": 2757, + "column": 154 } } }, { "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": 106876, - "end": 106877, + "value": "surface", + "start": 107638, + "end": 107647, "loc": { "start": { - "line": 2738, - "column": 8 + "line": 2757, + "column": 155 }, "end": { - "line": 2738, - "column": 9 + "line": 2757, + "column": 164 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -353411,26 +357505,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 106887, - "end": 106889, + "start": 107647, + "end": 107648, "loc": { "start": { - "line": 2740, - "column": 8 + "line": 2757, + "column": 164 }, "end": { - "line": 2740, - "column": 10 + "line": 2757, + "column": 165 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -353440,16 +357532,16 @@ "postfix": false, "binop": null }, - "start": 106890, - "end": 106891, + "start": 107649, + "end": 107650, "loc": { "start": { - "line": 2740, - "column": 11 + "line": 2757, + "column": 166 }, "end": { - "line": 2740, - "column": 12 + "line": 2757, + "column": 167 } } }, @@ -353468,16 +357560,16 @@ "updateContext": null }, "value": "this", - "start": 106891, - "end": 106895, + "start": 107667, + "end": 107671, "loc": { "start": { - "line": 2740, - "column": 12 + "line": 2758, + "column": 16 }, "end": { - "line": 2740, - "column": 16 + "line": 2758, + "column": 20 } } }, @@ -353494,16 +357586,16 @@ "binop": null, "updateContext": null }, - "start": 106895, - "end": 106896, + "start": 107671, + "end": 107672, "loc": { "start": { - "line": 2740, - "column": 16 + "line": 2758, + "column": 20 }, "end": { - "line": 2740, - "column": 17 + "line": 2758, + "column": 21 } } }, @@ -353519,23 +357611,23 @@ "postfix": false, "binop": null }, - "value": "_meshes", - "start": 106896, - "end": 106903, + "value": "error", + "start": 107672, + "end": 107677, "loc": { "start": { - "line": 2740, - "column": 17 + "line": 2758, + "column": 21 }, "end": { - "line": 2740, - "column": 24 + "line": 2758, + "column": 26 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -353543,25 +357635,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 106903, - "end": 106904, + "start": 107677, + "end": 107678, "loc": { "start": { - "line": 2740, - "column": 24 + "line": 2758, + "column": 26 }, "end": { - "line": 2740, - "column": 25 + "line": 2758, + "column": 27 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -353571,23 +357662,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 106904, - "end": 106907, + "start": 107678, + "end": 107679, "loc": { "start": { - "line": 2740, - "column": 25 + "line": 2758, + "column": 27 }, "end": { - "line": 2740, + "line": 2758, "column": 28 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -353598,16 +357688,42 @@ "binop": null, "updateContext": null }, - "start": 106907, - "end": 106908, + "value": "Unsupported value for 'primitive': '", + "start": 107679, + "end": 107715, "loc": { "start": { - "line": 2740, + "line": 2758, "column": 28 }, "end": { - "line": 2740, - "column": 29 + "line": 2758, + "column": 64 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 107715, + "end": 107717, + "loc": { + "start": { + "line": 2758, + "column": 64 + }, + "end": { + "line": 2758, + "column": 66 } } }, @@ -353623,23 +357739,23 @@ "postfix": false, "binop": null }, - "value": "id", - "start": 106908, - "end": 106910, + "value": "primitive", + "start": 107717, + "end": 107726, "loc": { "start": { - "line": 2740, - "column": 29 + "line": 2758, + "column": 66 }, "end": { - "line": 2740, - "column": 31 + "line": 2758, + "column": 75 } } }, { "type": { - "label": "]", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -353647,25 +357763,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 106910, - "end": 106911, + "start": 107726, + "end": 107727, "loc": { "start": { - "line": 2740, - "column": 31 + "line": 2758, + "column": 75 }, "end": { - "line": 2740, - "column": 32 + "line": 2758, + "column": 76 } } }, { "type": { - "label": ")", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -353673,25 +357788,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 106911, - "end": 106912, + "value": "' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.", + "start": 107727, + "end": 107832, "loc": { "start": { - "line": 2740, - "column": 32 + "line": 2758, + "column": 76 }, "end": { - "line": 2740, - "column": 33 + "line": 2758, + "column": 181 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "`", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -353700,25 +357817,49 @@ "postfix": false, "binop": null }, - "start": 106913, - "end": 106914, + "start": 107832, + "end": 107833, "loc": { "start": { - "line": 2740, - "column": 34 + "line": 2758, + "column": 181 }, "end": { - "line": 2740, - "column": 35 + "line": 2758, + "column": 182 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 107833, + "end": 107834, + "loc": { + "start": { + "line": 2758, + "column": 182 + }, + "end": { + "line": 2758, + "column": 183 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -353727,24 +357868,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 106927, - "end": 106931, + "start": 107834, + "end": 107835, "loc": { "start": { - "line": 2741, - "column": 12 + "line": 2758, + "column": 183 }, "end": { - "line": 2741, - "column": 16 + "line": 2758, + "column": 184 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -353754,22 +357895,24 @@ "binop": null, "updateContext": null }, - "start": 106931, - "end": 106932, + "value": "return", + "start": 107852, + "end": 107858, "loc": { "start": { - "line": 2741, + "line": 2759, "column": 16 }, "end": { - "line": 2741, - "column": 17 + "line": 2759, + "column": 22 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -353777,52 +357920,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "error", - "start": 106932, - "end": 106937, + "value": "false", + "start": 107859, + "end": 107864, "loc": { "start": { - "line": 2741, - "column": 17 + "line": 2759, + "column": 23 }, "end": { - "line": 2741, - "column": 22 + "line": 2759, + "column": 28 } } }, { "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": 106937, - "end": 106938, + "start": 107864, + "end": 107865, "loc": { "start": { - "line": 2741, - "column": 22 + "line": 2759, + "column": 28 }, "end": { - "line": 2741, - "column": 23 + "line": 2759, + "column": 29 } } }, { "type": { - "label": "`", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -353830,22 +357975,23 @@ "postfix": false, "binop": null }, - "start": 106938, - "end": 106939, + "start": 107878, + "end": 107879, "loc": { "start": { - "line": 2741, - "column": 23 + "line": 2760, + "column": 12 }, "end": { - "line": 2741, - "column": 24 + "line": 2760, + "column": 13 } } }, { "type": { - "label": "template", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -353856,23 +358002,23 @@ "binop": null, "updateContext": null }, - "value": "[createMesh] SceneModel already has a mesh with this ID: ", - "start": 106939, - "end": 106996, + "value": "if", + "start": 107892, + "end": 107894, "loc": { "start": { - "line": 2741, - "column": 24 + "line": 2761, + "column": 12 }, "end": { - "line": 2741, - "column": 81 + "line": 2761, + "column": 14 } } }, { "type": { - "label": "${", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -353882,102 +358028,103 @@ "postfix": false, "binop": null }, - "start": 106996, - "end": 106998, + "start": 107895, + "end": 107896, "loc": { "start": { - "line": 2741, - "column": 81 + "line": 2761, + "column": 15 }, "end": { - "line": 2741, - "column": 83 + "line": 2761, + "column": 16 } } }, { "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": "cfg", - "start": 106998, - "end": 107001, + "value": "!", + "start": 107896, + "end": 107897, "loc": { "start": { - "line": 2741, - "column": 83 + "line": 2761, + "column": 16 }, "end": { - "line": 2741, - "column": 86 + "line": 2761, + "column": 17 } } }, { "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": 107001, - "end": 107002, + "value": "cfg", + "start": 107897, + "end": 107900, "loc": { "start": { - "line": 2741, - "column": 86 + "line": 2761, + "column": 17 }, "end": { - "line": 2741, - "column": 87 + "line": 2761, + "column": 20 } } }, { "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": "id", - "start": 107002, - "end": 107004, + "start": 107900, + "end": 107901, "loc": { "start": { - "line": 2741, - "column": 87 + "line": 2761, + "column": 20 }, "end": { - "line": 2741, - "column": 89 + "line": 2761, + "column": 21 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -353985,76 +358132,79 @@ "postfix": false, "binop": null }, - "start": 107004, - "end": 107005, + "value": "positions", + "start": 107901, + "end": 107910, "loc": { "start": { - "line": 2741, - "column": 89 + "line": 2761, + "column": 21 }, "end": { - "line": 2741, - "column": 90 + "line": 2761, + "column": 30 } } }, { "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": "", - "start": 107005, - "end": 107005, + "value": "&&", + "start": 107911, + "end": 107913, "loc": { "start": { - "line": 2741, - "column": 90 + "line": 2761, + "column": 31 }, "end": { - "line": 2741, - "column": 90 + "line": 2761, + "column": 33 } } }, { "type": { - "label": "`", - "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 }, - "start": 107005, - "end": 107006, + "value": "!", + "start": 107914, + "end": 107915, "loc": { "start": { - "line": 2741, - "column": 90 + "line": 2761, + "column": 34 }, "end": { - "line": 2741, - "column": 91 + "line": 2761, + "column": 35 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -354062,23 +358212,24 @@ "postfix": false, "binop": null }, - "start": 107006, - "end": 107007, + "value": "cfg", + "start": 107915, + "end": 107918, "loc": { "start": { - "line": 2741, - "column": 91 + "line": 2761, + "column": 35 }, "end": { - "line": 2741, - "column": 92 + "line": 2761, + "column": 38 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -354088,106 +358239,104 @@ "binop": null, "updateContext": null }, - "start": 107007, - "end": 107008, + "start": 107918, + "end": 107919, "loc": { "start": { - "line": 2741, - "column": 92 + "line": 2761, + "column": 38 }, "end": { - "line": 2741, - "column": 93 + "line": 2761, + "column": 39 } } }, { "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": 107021, - "end": 107027, + "value": "positionsCompressed", + "start": 107919, + "end": 107938, "loc": { "start": { - "line": 2742, - "column": 12 + "line": 2761, + "column": 39 }, "end": { - "line": 2742, - "column": 18 + "line": 2761, + "column": 58 } } }, - { - "type": { - "label": "false", - "keyword": "false", - "beforeExpr": false, - "startsExpr": true, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "false", - "start": 107028, - "end": 107033, + "value": "&&", + "start": 107939, + "end": 107941, "loc": { "start": { - "line": 2742, - "column": 19 + "line": 2761, + "column": 59 }, "end": { - "line": 2742, - "column": 24 + "line": 2761, + "column": 61 } } }, { "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": 107033, - "end": 107034, + "value": "!", + "start": 107942, + "end": 107943, "loc": { "start": { - "line": 2742, - "column": 24 + "line": 2761, + "column": 62 }, "end": { - "line": 2742, - "column": 25 + "line": 2761, + "column": 63 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -354195,23 +358344,23 @@ "postfix": false, "binop": null }, - "start": 107043, - "end": 107044, + "value": "cfg", + "start": 107943, + "end": 107946, "loc": { "start": { - "line": 2743, - "column": 8 + "line": 2761, + "column": 63 }, "end": { - "line": 2743, - "column": 9 + "line": 2761, + "column": 66 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -354222,17 +358371,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 107054, - "end": 107059, + "start": 107946, + "end": 107947, "loc": { "start": { - "line": 2745, - "column": 8 + "line": 2761, + "column": 66 }, "end": { - "line": 2745, - "column": 13 + "line": 2761, + "column": 67 } } }, @@ -354248,50 +358396,48 @@ "postfix": false, "binop": null }, - "value": "instancing", - "start": 107060, - "end": 107070, + "value": "buckets", + "start": 107947, + "end": 107954, "loc": { "start": { - "line": 2745, - "column": 14 + "line": 2761, + "column": 67 }, "end": { - "line": 2745, - "column": 24 + "line": 2761, + "column": 74 } } }, { "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": 107071, - "end": 107072, + "start": 107954, + "end": 107955, "loc": { "start": { - "line": 2745, - "column": 25 + "line": 2761, + "column": 74 }, "end": { - "line": 2745, - "column": 26 + "line": 2761, + "column": 75 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -354301,22 +358447,23 @@ "postfix": false, "binop": null }, - "start": 107073, - "end": 107074, + "start": 107956, + "end": 107957, "loc": { "start": { - "line": 2745, - "column": 27 + "line": 2761, + "column": 76 }, "end": { - "line": 2745, - "column": 28 + "line": 2761, + "column": 77 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -354324,19 +358471,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 107074, - "end": 107077, + "value": "this", + "start": 107974, + "end": 107978, "loc": { "start": { - "line": 2745, - "column": 28 + "line": 2762, + "column": 16 }, "end": { - "line": 2745, - "column": 31 + "line": 2762, + "column": 20 } } }, @@ -354353,16 +358501,16 @@ "binop": null, "updateContext": null }, - "start": 107077, - "end": 107078, + "start": 107978, + "end": 107979, "loc": { "start": { - "line": 2745, - "column": 31 + "line": 2762, + "column": 20 }, "end": { - "line": 2745, - "column": 32 + "line": 2762, + "column": 21 } } }, @@ -354378,50 +358526,48 @@ "postfix": false, "binop": null }, - "value": "geometryId", - "start": 107078, - "end": 107088, + "value": "error", + "start": 107979, + "end": 107984, "loc": { "start": { - "line": 2745, - "column": 32 + "line": 2762, + "column": 21 }, "end": { - "line": 2745, - "column": 42 + "line": 2762, + "column": 26 } } }, { "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": 107089, - "end": 107092, + "start": 107984, + "end": 107985, "loc": { "start": { - "line": 2745, - "column": 43 + "line": 2762, + "column": 26 }, "end": { - "line": 2745, - "column": 46 + "line": 2762, + "column": 27 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -354429,19 +358575,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "undefined", - "start": 107093, - "end": 107102, + "value": "Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)", + "start": 107985, + "end": 108077, "loc": { "start": { - "line": 2745, - "column": 47 + "line": 2762, + "column": 27 }, "end": { - "line": 2745, - "column": 56 + "line": 2762, + "column": 119 } } }, @@ -354457,16 +358604,16 @@ "postfix": false, "binop": null }, - "start": 107102, - "end": 107103, + "start": 108077, + "end": 108078, "loc": { "start": { - "line": 2745, - "column": 56 + "line": 2762, + "column": 119 }, "end": { - "line": 2745, - "column": 57 + "line": 2762, + "column": 120 } } }, @@ -354483,24 +358630,24 @@ "binop": null, "updateContext": null }, - "start": 107103, - "end": 107104, + "start": 108078, + "end": 108079, "loc": { "start": { - "line": 2745, - "column": 57 + "line": 2762, + "column": 120 }, "end": { - "line": 2745, - "column": 58 + "line": 2762, + "column": 121 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -354510,23 +358657,24 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 107113, - "end": 107118, + "value": "return", + "start": 108096, + "end": 108102, "loc": { "start": { - "line": 2746, - "column": 8 + "line": 2763, + "column": 16 }, "end": { - "line": 2746, - "column": 13 + "line": 2763, + "column": 22 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -354534,125 +358682,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "batching", - "start": 107119, - "end": 107127, - "loc": { - "start": { - "line": 2746, - "column": 14 - }, - "end": { - "line": 2746, - "column": 22 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 107128, - "end": 107129, + "value": "false", + "start": 108103, + "end": 108108, "loc": { "start": { - "line": 2746, + "line": 2763, "column": 23 }, "end": { - "line": 2746, - "column": 24 + "line": 2763, + "column": 28 } } }, { "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": 107130, - "end": 107131, + "start": 108108, + "end": 108109, "loc": { "start": { - "line": 2746, - "column": 25 + "line": 2763, + "column": 28 }, "end": { - "line": 2746, - "column": 26 + "line": 2763, + "column": 29 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "instancing", - "start": 107131, - "end": 107141, - "loc": { - "start": { - "line": 2746, - "column": 26 - }, - "end": { - "line": 2746, - "column": 36 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 107141, - "end": 107142, + "start": 108122, + "end": 108123, "loc": { "start": { - "line": 2746, - "column": 36 + "line": 2764, + "column": 12 }, "end": { - "line": 2746, - "column": 37 + "line": 2764, + "column": 13 } } }, @@ -354671,16 +358765,16 @@ "updateContext": null }, "value": "if", - "start": 107152, - "end": 107154, + "start": 108136, + "end": 108138, "loc": { "start": { - "line": 2748, - "column": 8 + "line": 2765, + "column": 12 }, "end": { - "line": 2748, - "column": 10 + "line": 2765, + "column": 14 } } }, @@ -354696,16 +358790,16 @@ "postfix": false, "binop": null }, - "start": 107155, - "end": 107156, + "start": 108139, + "end": 108140, "loc": { "start": { - "line": 2748, - "column": 11 + "line": 2765, + "column": 15 }, "end": { - "line": 2748, - "column": 12 + "line": 2765, + "column": 16 } } }, @@ -354721,23 +358815,23 @@ "postfix": false, "binop": null }, - "value": "batching", - "start": 107156, - "end": 107164, + "value": "cfg", + "start": 108140, + "end": 108143, "loc": { "start": { - "line": 2748, - "column": 12 + "line": 2765, + "column": 16 }, "end": { - "line": 2748, - "column": 20 + "line": 2765, + "column": 19 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -354745,25 +358839,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 107164, - "end": 107165, + "start": 108143, + "end": 108144, "loc": { "start": { - "line": 2748, - "column": 20 + "line": 2765, + "column": 19 }, "end": { - "line": 2748, - "column": 21 + "line": 2765, + "column": 20 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -354772,60 +358867,44 @@ "postfix": false, "binop": null }, - "start": 107166, - "end": 107167, - "loc": { - "start": { - "line": 2748, - "column": 22 - }, - "end": { - "line": 2748, - "column": 23 - } - } - }, - { - "type": "CommentLine", - "value": " Batched geometry", - "start": 107181, - "end": 107200, + "value": "positions", + "start": 108144, + "end": 108153, "loc": { "start": { - "line": 2750, - "column": 12 + "line": 2765, + "column": 20 }, "end": { - "line": 2750, - "column": 31 + "line": 2765, + "column": 29 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "if", - "start": 107214, - "end": 107216, + "value": "&&", + "start": 108154, + "end": 108156, "loc": { "start": { - "line": 2752, - "column": 12 + "line": 2765, + "column": 30 }, "end": { - "line": 2752, - "column": 14 + "line": 2765, + "column": 32 } } }, @@ -354841,16 +358920,16 @@ "postfix": false, "binop": null }, - "start": 107217, - "end": 107218, + "start": 108157, + "end": 108158, "loc": { "start": { - "line": 2752, - "column": 15 + "line": 2765, + "column": 33 }, "end": { - "line": 2752, - "column": 16 + "line": 2765, + "column": 34 } } }, @@ -354867,16 +358946,16 @@ "binop": null }, "value": "cfg", - "start": 107218, - "end": 107221, + "start": 108158, + "end": 108161, "loc": { "start": { - "line": 2752, - "column": 16 + "line": 2765, + "column": 34 }, "end": { - "line": 2752, - "column": 19 + "line": 2765, + "column": 37 } } }, @@ -354893,16 +358972,16 @@ "binop": null, "updateContext": null }, - "start": 107221, - "end": 107222, + "start": 108161, + "end": 108162, "loc": { "start": { - "line": 2752, - "column": 19 + "line": 2765, + "column": 37 }, "end": { - "line": 2752, - "column": 20 + "line": 2765, + "column": 38 } } }, @@ -354918,23 +358997,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107222, - "end": 107231, + "value": "positionsDecodeMatrix", + "start": 108162, + "end": 108183, "loc": { "start": { - "line": 2752, - "column": 20 + "line": 2765, + "column": 38 }, "end": { - "line": 2752, - "column": 29 + "line": 2765, + "column": 59 } } }, { "type": { - "label": "==/!=", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -354942,20 +359021,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": 1, "updateContext": null }, - "value": "===", - "start": 107232, - "end": 107235, + "value": "||", + "start": 108184, + "end": 108186, "loc": { "start": { - "line": 2752, - "column": 30 + "line": 2765, + "column": 60 }, "end": { - "line": 2752, - "column": 33 + "line": 2765, + "column": 62 } } }, @@ -354971,44 +359050,43 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 107236, - "end": 107245, + "value": "cfg", + "start": 108187, + "end": 108190, "loc": { "start": { - "line": 2752, - "column": 34 + "line": 2765, + "column": 63 }, "end": { - "line": 2752, - "column": 43 + "line": 2765, + "column": 66 } } }, { "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": 107246, - "end": 107248, + "start": 108190, + "end": 108191, "loc": { "start": { - "line": 2752, - "column": 44 + "line": 2765, + "column": 66 }, "end": { - "line": 2752, - "column": 46 + "line": 2765, + "column": 67 } } }, @@ -355024,23 +359102,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 107249, - "end": 107252, + "value": "positionsDecodeBoundary", + "start": 108191, + "end": 108214, "loc": { "start": { - "line": 2752, - "column": 47 + "line": 2765, + "column": 67 }, "end": { - "line": 2752, - "column": 50 + "line": 2765, + "column": 90 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -355048,27 +359126,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 107252, - "end": 107253, + "start": 108214, + "end": 108215, "loc": { "start": { - "line": 2752, - "column": 50 + "line": 2765, + "column": 90 }, "end": { - "line": 2752, - "column": 51 + "line": 2765, + "column": 91 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -355076,51 +359153,48 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107253, - "end": 107262, + "start": 108215, + "end": 108216, "loc": { "start": { - "line": 2752, - "column": 51 + "line": 2765, + "column": 91 }, "end": { - "line": 2752, - "column": 60 + "line": 2765, + "column": 92 } } }, { "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": 107263, - "end": 107266, + "start": 108217, + "end": 108218, "loc": { "start": { - "line": 2752, - "column": 61 + "line": 2765, + "column": 93 }, "end": { - "line": 2752, - "column": 64 + "line": 2765, + "column": 94 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -355131,23 +359205,23 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 107267, - "end": 107271, + "value": "this", + "start": 108235, + "end": 108239, "loc": { "start": { - "line": 2752, - "column": 65 + "line": 2766, + "column": 16 }, "end": { - "line": 2752, - "column": 69 + "line": 2766, + "column": 20 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -355155,25 +359229,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 107271, - "end": 107272, + "start": 108239, + "end": 108240, "loc": { "start": { - "line": 2752, - "column": 69 + "line": 2766, + "column": 20 }, "end": { - "line": 2752, - "column": 70 + "line": 2766, + "column": 21 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -355182,23 +359257,24 @@ "postfix": false, "binop": null }, - "start": 107273, - "end": 107274, + "value": "error", + "start": 108240, + "end": 108245, "loc": { "start": { - "line": 2752, - "column": 71 + "line": 2766, + "column": 21 }, "end": { - "line": 2752, - "column": 72 + "line": 2766, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -355207,25 +359283,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 107291, - "end": 107294, + "start": 108245, + "end": 108246, "loc": { "start": { - "line": 2753, - "column": 16 + "line": 2766, + "column": 26 }, "end": { - "line": 2753, - "column": 19 + "line": 2766, + "column": 27 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -355234,24 +359309,25 @@ "binop": null, "updateContext": null }, - "start": 107294, - "end": 107295, + "value": "Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)", + "start": 108246, + "end": 108368, "loc": { "start": { - "line": 2753, - "column": 19 + "line": 2766, + "column": 27 }, "end": { - "line": 2753, - "column": 20 + "line": 2766, + "column": 149 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -355259,50 +359335,77 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107295, - "end": 107304, + "start": 108368, + "end": 108369, "loc": { "start": { - "line": 2753, - "column": 20 + "line": 2766, + "column": 149 }, "end": { - "line": 2753, - "column": 29 + "line": 2766, + "column": 150 } } }, { "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": 107305, - "end": 107306, + "start": 108369, + "end": 108370, "loc": { "start": { - "line": 2753, - "column": 30 + "line": 2766, + "column": 150 }, "end": { - "line": 2753, - "column": 31 + "line": 2766, + "column": 151 } } }, { "type": { - "label": "string", + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 108387, + "end": 108393, + "loc": { + "start": { + "line": 2767, + "column": 16 + }, + "end": { + "line": 2767, + "column": 22 + } + } + }, + { + "type": { + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -355313,17 +359416,17 @@ "binop": null, "updateContext": null }, - "value": "triangles", - "start": 107307, - "end": 107318, + "value": "false", + "start": 108394, + "end": 108399, "loc": { "start": { - "line": 2753, - "column": 32 + "line": 2767, + "column": 23 }, "end": { - "line": 2753, - "column": 43 + "line": 2767, + "column": 28 } } }, @@ -355340,16 +359443,16 @@ "binop": null, "updateContext": null }, - "start": 107318, - "end": 107319, + "start": 108399, + "end": 108400, "loc": { "start": { - "line": 2753, - "column": 43 + "line": 2767, + "column": 28 }, "end": { - "line": 2753, - "column": 44 + "line": 2767, + "column": 29 } } }, @@ -355365,15 +359468,15 @@ "postfix": false, "binop": null }, - "start": 107332, - "end": 107333, + "start": 108413, + "end": 108414, "loc": { "start": { - "line": 2754, + "line": 2768, "column": 12 }, "end": { - "line": 2754, + "line": 2768, "column": 13 } } @@ -355393,15 +359496,15 @@ "updateContext": null }, "value": "if", - "start": 107346, - "end": 107348, + "start": 108427, + "end": 108429, "loc": { "start": { - "line": 2755, + "line": 2769, "column": 12 }, "end": { - "line": 2755, + "line": 2769, "column": 14 } } @@ -355418,15 +359521,15 @@ "postfix": false, "binop": null }, - "start": 107349, - "end": 107350, + "start": 108430, + "end": 108431, "loc": { "start": { - "line": 2755, + "line": 2769, "column": 15 }, "end": { - "line": 2755, + "line": 2769, "column": 16 } } @@ -355444,15 +359547,15 @@ "binop": null }, "value": "cfg", - "start": 107350, - "end": 107353, + "start": 108431, + "end": 108434, "loc": { "start": { - "line": 2755, + "line": 2769, "column": 16 }, "end": { - "line": 2755, + "line": 2769, "column": 19 } } @@ -355470,15 +359573,15 @@ "binop": null, "updateContext": null }, - "start": 107353, - "end": 107354, + "start": 108434, + "end": 108435, "loc": { "start": { - "line": 2755, + "line": 2769, "column": 19 }, "end": { - "line": 2755, + "line": 2769, "column": 20 } } @@ -355495,23 +359598,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107354, - "end": 107363, + "value": "positionsCompressed", + "start": 108435, + "end": 108454, "loc": { "start": { - "line": 2755, + "line": 2769, "column": 20 }, "end": { - "line": 2755, - "column": 29 + "line": 2769, + "column": 39 } } }, { "type": { - "label": "==/!=", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -355519,74 +359622,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 107364, - "end": 107367, - "loc": { - "start": { - "line": 2755, - "column": 30 - }, - "end": { - "line": 2755, - "column": 33 - } - } - }, - { - "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "points", - "start": 107368, - "end": 107376, + "value": "&&", + "start": 108455, + "end": 108457, "loc": { "start": { - "line": 2755, - "column": 34 + "line": 2769, + "column": 40 }, "end": { - "line": 2755, + "line": 2769, "column": 42 } } }, { "type": { - "label": "&&", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 107377, - "end": 107379, + "value": "!", + "start": 108458, + "end": 108459, "loc": { "start": { - "line": 2755, + "line": 2769, "column": 43 }, "end": { - "line": 2755, - "column": 45 + "line": 2769, + "column": 44 } } }, @@ -355603,16 +359679,16 @@ "binop": null }, "value": "cfg", - "start": 107380, - "end": 107383, + "start": 108459, + "end": 108462, "loc": { "start": { - "line": 2755, - "column": 46 + "line": 2769, + "column": 44 }, "end": { - "line": 2755, - "column": 49 + "line": 2769, + "column": 47 } } }, @@ -355629,16 +359705,16 @@ "binop": null, "updateContext": null }, - "start": 107383, - "end": 107384, + "start": 108462, + "end": 108463, "loc": { "start": { - "line": 2755, - "column": 49 + "line": 2769, + "column": 47 }, "end": { - "line": 2755, - "column": 50 + "line": 2769, + "column": 48 } } }, @@ -355654,23 +359730,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107384, - "end": 107393, + "value": "positionsDecodeMatrix", + "start": 108463, + "end": 108484, "loc": { "start": { - "line": 2755, - "column": 50 + "line": 2769, + "column": 48 }, "end": { - "line": 2755, - "column": 59 + "line": 2769, + "column": 69 } } }, { "type": { - "label": "==/!=", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -355678,134 +359754,133 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": 2, "updateContext": null }, - "value": "!==", - "start": 107394, - "end": 107397, + "value": "&&", + "start": 108485, + "end": 108487, "loc": { "start": { - "line": 2755, - "column": 60 + "line": 2769, + "column": 70 }, "end": { - "line": 2755, - "column": 63 + "line": 2769, + "column": 72 } } }, { "type": { - "label": "string", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "lines", - "start": 107398, - "end": 107405, + "value": "!", + "start": 108488, + "end": 108489, "loc": { "start": { - "line": 2755, - "column": 64 + "line": 2769, + "column": 73 }, "end": { - "line": 2755, - "column": 71 + "line": 2769, + "column": 74 } } }, { "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 107406, - "end": 107408, + "value": "cfg", + "start": 108489, + "end": 108492, "loc": { "start": { - "line": 2755, - "column": 72 + "line": 2769, + "column": 74 }, "end": { - "line": 2755, - "column": 74 + "line": 2769, + "column": 77 } } }, { "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": "cfg", - "start": 107409, - "end": 107412, + "start": 108492, + "end": 108493, "loc": { "start": { - "line": 2755, - "column": 75 + "line": 2769, + "column": 77 }, "end": { - "line": 2755, + "line": 2769, "column": 78 } } }, { "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": 107412, - "end": 107413, + "value": "positionsDecodeBoundary", + "start": 108493, + "end": 108516, "loc": { "start": { - "line": 2755, + "line": 2769, "column": 78 }, "end": { - "line": 2755, - "column": 79 + "line": 2769, + "column": 101 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -355813,50 +359888,48 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107413, - "end": 107422, + "start": 108516, + "end": 108517, "loc": { "start": { - "line": 2755, - "column": 79 + "line": 2769, + "column": 101 }, "end": { - "line": 2755, - "column": 88 + "line": 2769, + "column": 102 } } }, { "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": 107423, - "end": 107426, + "start": 108518, + "end": 108519, "loc": { "start": { - "line": 2755, - "column": 89 + "line": 2769, + "column": 103 }, "end": { - "line": 2755, - "column": 92 + "line": 2769, + "column": 104 } } }, { "type": { - "label": "string", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -355867,44 +359940,43 @@ "binop": null, "updateContext": null }, - "value": "triangles", - "start": 107427, - "end": 107438, + "value": "this", + "start": 108536, + "end": 108540, "loc": { "start": { - "line": 2755, - "column": 93 + "line": 2770, + "column": 16 }, "end": { - "line": 2755, - "column": 104 + "line": 2770, + "column": 20 } } }, { "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": 107439, - "end": 107441, + "start": 108540, + "end": 108541, "loc": { "start": { - "line": 2755, - "column": 105 + "line": 2770, + "column": 20 }, "end": { - "line": 2755, - "column": 107 + "line": 2770, + "column": 21 } } }, @@ -355920,25 +359992,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 107442, - "end": 107445, + "value": "error", + "start": 108541, + "end": 108546, "loc": { "start": { - "line": 2755, - "column": 108 + "line": 2770, + "column": 21 }, "end": { - "line": 2755, - "column": 111 + "line": 2770, + "column": 26 } } }, { "type": { - "label": ".", + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 108546, + "end": 108547, + "loc": { + "start": { + "line": 2770, + "column": 26 + }, + "end": { + "line": 2770, + "column": 27 + } + } + }, + { + "type": { + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -355947,24 +360044,25 @@ "binop": null, "updateContext": null }, - "start": 107445, - "end": 107446, + "value": "Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)", + "start": 108547, + "end": 108686, "loc": { "start": { - "line": 2755, - "column": 111 + "line": 2770, + "column": 27 }, "end": { - "line": 2755, - "column": 112 + "line": 2770, + "column": 166 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -355972,23 +360070,22 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107446, - "end": 107455, + "start": 108686, + "end": 108687, "loc": { "start": { - "line": 2755, - "column": 112 + "line": 2770, + "column": 166 }, "end": { - "line": 2755, - "column": 121 + "line": 2770, + "column": 167 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -355996,26 +360093,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 107456, - "end": 107459, + "start": 108687, + "end": 108688, "loc": { "start": { - "line": 2755, - "column": 122 + "line": 2770, + "column": 167 }, "end": { - "line": 2755, - "column": 125 + "line": 2770, + "column": 168 } } }, { "type": { - "label": "string", + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 108705, + "end": 108711, + "loc": { + "start": { + "line": 2771, + "column": 16 + }, + "end": { + "line": 2771, + "column": 22 + } + } + }, + { + "type": { + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -356026,23 +360151,23 @@ "binop": null, "updateContext": null }, - "value": "solid", - "start": 107460, - "end": 107467, + "value": "false", + "start": 108712, + "end": 108717, "loc": { "start": { - "line": 2755, - "column": 126 + "line": 2771, + "column": 23 }, "end": { - "line": 2755, - "column": 133 + "line": 2771, + "column": 28 } } }, { "type": { - "label": "&&", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -356050,72 +360175,97 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 107468, - "end": 107470, + "start": 108717, + "end": 108718, "loc": { "start": { - "line": 2755, - "column": 134 + "line": 2771, + "column": 28 }, "end": { - "line": 2755, - "column": 136 + "line": 2771, + "column": 29 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 108731, + "end": 108732, + "loc": { + "start": { + "line": 2772, + "column": 12 + }, + "end": { + "line": 2772, + "column": 13 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 107471, - "end": 107474, + "value": "if", + "start": 108745, + "end": 108747, "loc": { "start": { - "line": 2755, - "column": 137 + "line": 2773, + "column": 12 }, "end": { - "line": 2755, - "column": 140 + "line": 2773, + "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": 107474, - "end": 107475, + "start": 108748, + "end": 108749, "loc": { "start": { - "line": 2755, - "column": 140 + "line": 2773, + "column": 15 }, "end": { - "line": 2755, - "column": 141 + "line": 2773, + "column": 16 } } }, @@ -356131,50 +360281,49 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107475, - "end": 107484, + "value": "cfg", + "start": 108749, + "end": 108752, "loc": { "start": { - "line": 2755, - "column": 141 + "line": 2773, + "column": 16 }, "end": { - "line": 2755, - "column": 150 + "line": 2773, + "column": 19 } } }, { "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": 107485, - "end": 107488, + "start": 108752, + "end": 108753, "loc": { "start": { - "line": 2755, - "column": 151 + "line": 2773, + "column": 19 }, "end": { - "line": 2755, - "column": 154 + "line": 2773, + "column": 20 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -356182,77 +360331,79 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "surface", - "start": 107489, - "end": 107498, + "value": "uvCompressed", + "start": 108753, + "end": 108765, "loc": { "start": { - "line": 2755, - "column": 155 + "line": 2773, + "column": 20 }, "end": { - "line": 2755, - "column": 164 + "line": 2773, + "column": 32 } } }, { "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": 107498, - "end": 107499, + "value": "&&", + "start": 108766, + "end": 108768, "loc": { "start": { - "line": 2755, - "column": 164 + "line": 2773, + "column": 33 }, "end": { - "line": 2755, - "column": 165 + "line": 2773, + "column": 35 } } }, { "type": { - "label": "{", + "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": 107500, - "end": 107501, + "value": "!", + "start": 108769, + "end": 108770, "loc": { "start": { - "line": 2755, - "column": 166 + "line": 2773, + "column": 36 }, "end": { - "line": 2755, - "column": 167 + "line": 2773, + "column": 37 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -356260,20 +360411,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 107518, - "end": 107522, + "value": "cfg", + "start": 108770, + "end": 108773, "loc": { "start": { - "line": 2756, - "column": 16 + "line": 2773, + "column": 37 }, "end": { - "line": 2756, - "column": 20 + "line": 2773, + "column": 40 } } }, @@ -356290,16 +360440,16 @@ "binop": null, "updateContext": null }, - "start": 107522, - "end": 107523, + "start": 108773, + "end": 108774, "loc": { "start": { - "line": 2756, - "column": 20 + "line": 2773, + "column": 40 }, "end": { - "line": 2756, - "column": 21 + "line": 2773, + "column": 41 } } }, @@ -356315,25 +360465,25 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 107523, - "end": 107528, + "value": "uvDecodeMatrix", + "start": 108774, + "end": 108788, "loc": { "start": { - "line": 2756, - "column": 21 + "line": 2773, + "column": 41 }, "end": { - "line": 2756, - "column": 26 + "line": 2773, + "column": 55 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -356341,23 +360491,23 @@ "postfix": false, "binop": null }, - "start": 107528, - "end": 107529, + "start": 108788, + "end": 108789, "loc": { "start": { - "line": 2756, - "column": 26 + "line": 2773, + "column": 55 }, "end": { - "line": 2756, - "column": 27 + "line": 2773, + "column": 56 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -356366,24 +360516,25 @@ "postfix": false, "binop": null }, - "start": 107529, - "end": 107530, + "start": 108790, + "end": 108791, "loc": { "start": { - "line": 2756, - "column": 27 + "line": 2773, + "column": 57 }, "end": { - "line": 2756, - "column": 28 + "line": 2773, + "column": 58 } } }, { "type": { - "label": "template", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -356392,42 +360543,43 @@ "binop": null, "updateContext": null }, - "value": "Unsupported value for 'primitive': '", - "start": 107530, - "end": 107566, + "value": "this", + "start": 108808, + "end": 108812, "loc": { "start": { - "line": 2756, - "column": 28 + "line": 2774, + "column": 16 }, "end": { - "line": 2756, - "column": 64 + "line": 2774, + "column": 20 } } }, { "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": 107566, - "end": 107568, + "start": 108812, + "end": 108813, "loc": { "start": { - "line": 2756, - "column": 64 + "line": 2774, + "column": 20 }, "end": { - "line": 2756, - "column": 66 + "line": 2774, + "column": 21 } } }, @@ -356443,25 +360595,25 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 107568, - "end": 107577, + "value": "error", + "start": 108813, + "end": 108818, "loc": { "start": { - "line": 2756, - "column": 66 + "line": 2774, + "column": 21 }, "end": { - "line": 2756, - "column": 75 + "line": 2774, + "column": 26 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -356469,24 +360621,24 @@ "postfix": false, "binop": null }, - "start": 107577, - "end": 107578, + "start": 108818, + "end": 108819, "loc": { "start": { - "line": 2756, - "column": 75 + "line": 2774, + "column": 26 }, "end": { - "line": 2756, - "column": 76 + "line": 2774, + "column": 27 } } }, { "type": { - "label": "template", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -356495,42 +360647,17 @@ "binop": null, "updateContext": null }, - "value": "' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.", - "start": 107578, - "end": 107683, - "loc": { - "start": { - "line": 2756, - "column": 76 - }, - "end": { - "line": 2756, - "column": 181 - } - } - }, - { - "type": { - "label": "`", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 107683, - "end": 107684, + "value": "Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)", + "start": 108819, + "end": 108918, "loc": { "start": { - "line": 2756, - "column": 181 + "line": 2774, + "column": 27 }, "end": { - "line": 2756, - "column": 182 + "line": 2774, + "column": 126 } } }, @@ -356546,16 +360673,16 @@ "postfix": false, "binop": null }, - "start": 107684, - "end": 107685, + "start": 108918, + "end": 108919, "loc": { "start": { - "line": 2756, - "column": 182 + "line": 2774, + "column": 126 }, "end": { - "line": 2756, - "column": 183 + "line": 2774, + "column": 127 } } }, @@ -356572,16 +360699,16 @@ "binop": null, "updateContext": null }, - "start": 107685, - "end": 107686, + "start": 108919, + "end": 108920, "loc": { "start": { - "line": 2756, - "column": 183 + "line": 2774, + "column": 127 }, "end": { - "line": 2756, - "column": 184 + "line": 2774, + "column": 128 } } }, @@ -356600,15 +360727,15 @@ "updateContext": null }, "value": "return", - "start": 107703, - "end": 107709, + "start": 108937, + "end": 108943, "loc": { "start": { - "line": 2757, + "line": 2775, "column": 16 }, "end": { - "line": 2757, + "line": 2775, "column": 22 } } @@ -356628,15 +360755,15 @@ "updateContext": null }, "value": "false", - "start": 107710, - "end": 107715, + "start": 108944, + "end": 108949, "loc": { "start": { - "line": 2757, + "line": 2775, "column": 23 }, "end": { - "line": 2757, + "line": 2775, "column": 28 } } @@ -356654,15 +360781,15 @@ "binop": null, "updateContext": null }, - "start": 107715, - "end": 107716, + "start": 108949, + "end": 108950, "loc": { "start": { - "line": 2757, + "line": 2775, "column": 28 }, "end": { - "line": 2757, + "line": 2775, "column": 29 } } @@ -356679,15 +360806,15 @@ "postfix": false, "binop": null }, - "start": 107729, - "end": 107730, + "start": 108963, + "end": 108964, "loc": { "start": { - "line": 2758, + "line": 2776, "column": 12 }, "end": { - "line": 2758, + "line": 2776, "column": 13 } } @@ -356707,15 +360834,15 @@ "updateContext": null }, "value": "if", - "start": 107743, - "end": 107745, + "start": 108977, + "end": 108979, "loc": { "start": { - "line": 2759, + "line": 2777, "column": 12 }, "end": { - "line": 2759, + "line": 2777, "column": 14 } } @@ -356732,15 +360859,15 @@ "postfix": false, "binop": null }, - "start": 107746, - "end": 107747, + "start": 108980, + "end": 108981, "loc": { "start": { - "line": 2759, + "line": 2777, "column": 15 }, "end": { - "line": 2759, + "line": 2777, "column": 16 } } @@ -356759,15 +360886,15 @@ "updateContext": null }, "value": "!", - "start": 107747, - "end": 107748, + "start": 108981, + "end": 108982, "loc": { "start": { - "line": 2759, + "line": 2777, "column": 16 }, "end": { - "line": 2759, + "line": 2777, "column": 17 } } @@ -356785,15 +360912,15 @@ "binop": null }, "value": "cfg", - "start": 107748, - "end": 107751, + "start": 108982, + "end": 108985, "loc": { "start": { - "line": 2759, + "line": 2777, "column": 17 }, "end": { - "line": 2759, + "line": 2777, "column": 20 } } @@ -356811,15 +360938,15 @@ "binop": null, "updateContext": null }, - "start": 107751, - "end": 107752, + "start": 108985, + "end": 108986, "loc": { "start": { - "line": 2759, + "line": 2777, "column": 20 }, "end": { - "line": 2759, + "line": 2777, "column": 21 } } @@ -356836,17 +360963,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 107752, - "end": 107761, + "value": "buckets", + "start": 108986, + "end": 108993, "loc": { "start": { - "line": 2759, + "line": 2777, "column": 21 }, "end": { - "line": 2759, - "column": 30 + "line": 2777, + "column": 28 } } }, @@ -356864,16 +360991,16 @@ "updateContext": null }, "value": "&&", - "start": 107762, - "end": 107764, + "start": 108994, + "end": 108996, "loc": { "start": { - "line": 2759, - "column": 31 + "line": 2777, + "column": 29 }, "end": { - "line": 2759, - "column": 33 + "line": 2777, + "column": 31 } } }, @@ -356891,16 +361018,16 @@ "updateContext": null }, "value": "!", - "start": 107765, - "end": 107766, + "start": 108997, + "end": 108998, "loc": { "start": { - "line": 2759, - "column": 34 + "line": 2777, + "column": 32 }, "end": { - "line": 2759, - "column": 35 + "line": 2777, + "column": 33 } } }, @@ -356917,16 +361044,16 @@ "binop": null }, "value": "cfg", - "start": 107766, - "end": 107769, + "start": 108998, + "end": 109001, "loc": { "start": { - "line": 2759, - "column": 35 + "line": 2777, + "column": 33 }, "end": { - "line": 2759, - "column": 38 + "line": 2777, + "column": 36 } } }, @@ -356943,16 +361070,16 @@ "binop": null, "updateContext": null }, - "start": 107769, - "end": 107770, + "start": 109001, + "end": 109002, "loc": { "start": { - "line": 2759, - "column": 38 + "line": 2777, + "column": 36 }, "end": { - "line": 2759, - "column": 39 + "line": 2777, + "column": 37 } } }, @@ -356968,17 +361095,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 107770, - "end": 107789, + "value": "indices", + "start": 109002, + "end": 109009, "loc": { "start": { - "line": 2759, - "column": 39 + "line": 2777, + "column": 37 }, "end": { - "line": 2759, - "column": 58 + "line": 2777, + "column": 44 } } }, @@ -356996,43 +361123,41 @@ "updateContext": null }, "value": "&&", - "start": 107790, - "end": 107792, + "start": 109010, + "end": 109012, "loc": { "start": { - "line": 2759, - "column": 59 + "line": 2777, + "column": 45 }, "end": { - "line": 2759, - "column": 61 + "line": 2777, + "column": 47 } } }, { "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": 107793, - "end": 107794, + "start": 109013, + "end": 109014, "loc": { "start": { - "line": 2759, - "column": 62 + "line": 2777, + "column": 48 }, "end": { - "line": 2759, - "column": 63 + "line": 2777, + "column": 49 } } }, @@ -357049,16 +361174,16 @@ "binop": null }, "value": "cfg", - "start": 107794, - "end": 107797, + "start": 109014, + "end": 109017, "loc": { "start": { - "line": 2759, - "column": 63 + "line": 2777, + "column": 49 }, "end": { - "line": 2759, - "column": 66 + "line": 2777, + "column": 52 } } }, @@ -357075,16 +361200,16 @@ "binop": null, "updateContext": null }, - "start": 107797, - "end": 107798, + "start": 109017, + "end": 109018, "loc": { "start": { - "line": 2759, - "column": 66 + "line": 2777, + "column": 52 }, "end": { - "line": 2759, - "column": 67 + "line": 2777, + "column": 53 } } }, @@ -357100,74 +361225,104 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 107798, - "end": 107805, + "value": "primitive", + "start": 109018, + "end": 109027, "loc": { "start": { - "line": 2759, - "column": 67 + "line": 2777, + "column": 53 }, "end": { - "line": 2759, - "column": 74 + "line": 2777, + "column": 62 } } }, { "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": 107805, - "end": 107806, + "value": "===", + "start": 109028, + "end": 109031, "loc": { "start": { - "line": 2759, - "column": 74 + "line": 2777, + "column": 63 }, "end": { - "line": 2759, - "column": 75 + "line": 2777, + "column": 66 } } }, { "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": 107807, - "end": 107808, + "value": "triangles", + "start": 109032, + "end": 109043, "loc": { "start": { - "line": 2759, - "column": 76 + "line": 2777, + "column": 67 }, "end": { - "line": 2759, - "column": 77 + "line": 2777, + "column": 78 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "||", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 1, + "updateContext": null + }, + "value": "||", + "start": 109044, + "end": 109046, + "loc": { + "start": { + "line": 2777, + "column": 79 + }, + "end": { + "line": 2777, + "column": 81 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -357175,20 +361330,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 107825, - "end": 107829, + "value": "cfg", + "start": 109047, + "end": 109050, "loc": { "start": { - "line": 2760, - "column": 16 + "line": 2777, + "column": 82 }, "end": { - "line": 2760, - "column": 20 + "line": 2777, + "column": 85 } } }, @@ -357205,16 +361359,16 @@ "binop": null, "updateContext": null }, - "start": 107829, - "end": 107830, + "start": 109050, + "end": 109051, "loc": { "start": { - "line": 2760, - "column": 20 + "line": 2777, + "column": 85 }, "end": { - "line": 2760, - "column": 21 + "line": 2777, + "column": 86 } } }, @@ -357230,42 +361384,44 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 107830, - "end": 107835, + "value": "primitive", + "start": 109051, + "end": 109060, "loc": { "start": { - "line": 2760, - "column": 21 + "line": 2777, + "column": 86 }, "end": { - "line": 2760, - "column": 26 + "line": 2777, + "column": 95 } } }, { "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": 107835, - "end": 107836, + "value": "===", + "start": 109061, + "end": 109064, "loc": { "start": { - "line": 2760, - "column": 26 + "line": 2777, + "column": 96 }, "end": { - "line": 2760, - "column": 27 + "line": 2777, + "column": 99 } } }, @@ -357282,76 +361438,77 @@ "binop": null, "updateContext": null }, - "value": "Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)", - "start": 107836, - "end": 107928, + "value": "solid", + "start": 109065, + "end": 109072, "loc": { "start": { - "line": 2760, - "column": 27 + "line": 2777, + "column": 100 }, "end": { - "line": 2760, - "column": 119 + "line": 2777, + "column": 107 } } }, { "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": 107928, - "end": 107929, + "value": "||", + "start": 109073, + "end": 109075, "loc": { "start": { - "line": 2760, - "column": 119 + "line": 2777, + "column": 108 }, "end": { - "line": 2760, - "column": 120 + "line": 2777, + "column": 110 } } }, { "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": 107929, - "end": 107930, + "value": "cfg", + "start": 109076, + "end": 109079, "loc": { "start": { - "line": 2760, - "column": 120 + "line": 2777, + "column": 111 }, "end": { - "line": 2760, - "column": 121 + "line": 2777, + "column": 114 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -357361,24 +361518,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 107947, - "end": 107953, + "start": 109079, + "end": 109080, "loc": { "start": { - "line": 2761, - "column": 16 + "line": 2777, + "column": 114 }, "end": { - "line": 2761, - "column": 22 + "line": 2777, + "column": 115 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -357386,26 +361541,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 107954, - "end": 107959, + "value": "primitive", + "start": 109080, + "end": 109089, "loc": { "start": { - "line": 2761, - "column": 23 + "line": 2777, + "column": 115 }, "end": { - "line": 2761, - "column": 28 + "line": 2777, + "column": 124 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -357413,51 +361567,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 107959, - "end": 107960, + "value": "===", + "start": 109090, + "end": 109093, "loc": { "start": { - "line": 2761, - "column": 28 + "line": 2777, + "column": 125 }, "end": { - "line": 2761, - "column": 29 + "line": 2777, + "column": 128 } } }, { "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": 107973, - "end": 107974, + "value": "surface", + "start": 109094, + "end": 109103, "loc": { "start": { - "line": 2762, - "column": 12 + "line": 2777, + "column": 129 }, "end": { - "line": 2762, - "column": 13 + "line": 2777, + "column": 138 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -357465,28 +361621,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 107987, - "end": 107989, + "start": 109103, + "end": 109104, "loc": { "start": { - "line": 2763, - "column": 12 + "line": 2777, + "column": 138 }, "end": { - "line": 2763, - "column": 14 + "line": 2777, + "column": 139 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -357494,23 +361648,23 @@ "postfix": false, "binop": null }, - "start": 107990, - "end": 107991, + "start": 109104, + "end": 109105, "loc": { "start": { - "line": 2763, - "column": 15 + "line": 2777, + "column": 139 }, "end": { - "line": 2763, - "column": 16 + "line": 2777, + "column": 140 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -357519,23 +361673,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 107991, - "end": 107994, + "start": 109106, + "end": 109107, "loc": { "start": { - "line": 2763, - "column": 16 + "line": 2777, + "column": 141 }, "end": { - "line": 2763, - "column": 19 + "line": 2777, + "column": 142 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -357546,16 +361700,17 @@ "binop": null, "updateContext": null }, - "start": 107994, - "end": 107995, + "value": "const", + "start": 109124, + "end": 109129, "loc": { "start": { - "line": 2763, - "column": 19 + "line": 2778, + "column": 16 }, "end": { - "line": 2763, - "column": 20 + "line": 2778, + "column": 21 } } }, @@ -357571,44 +361726,44 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 107995, - "end": 108004, + "value": "numPositions", + "start": 109130, + "end": 109142, "loc": { "start": { - "line": 2763, - "column": 20 + "line": 2778, + "column": 22 }, "end": { - "line": 2763, - "column": 29 + "line": 2778, + "column": 34 } } }, { "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": 108005, - "end": 108007, + "value": "=", + "start": 109143, + "end": 109144, "loc": { "start": { - "line": 2763, - "column": 30 + "line": 2778, + "column": 35 }, "end": { - "line": 2763, - "column": 32 + "line": 2778, + "column": 36 } } }, @@ -357624,16 +361779,16 @@ "postfix": false, "binop": null }, - "start": 108008, - "end": 108009, + "start": 109145, + "end": 109146, "loc": { "start": { - "line": 2763, - "column": 33 + "line": 2778, + "column": 37 }, "end": { - "line": 2763, - "column": 34 + "line": 2778, + "column": 38 } } }, @@ -357650,16 +361805,16 @@ "binop": null }, "value": "cfg", - "start": 108009, - "end": 108012, + "start": 109146, + "end": 109149, "loc": { "start": { - "line": 2763, - "column": 34 + "line": 2778, + "column": 38 }, "end": { - "line": 2763, - "column": 37 + "line": 2778, + "column": 41 } } }, @@ -357676,16 +361831,16 @@ "binop": null, "updateContext": null }, - "start": 108012, - "end": 108013, + "start": 109149, + "end": 109150, "loc": { "start": { - "line": 2763, - "column": 37 + "line": 2778, + "column": 41 }, "end": { - "line": 2763, - "column": 38 + "line": 2778, + "column": 42 } } }, @@ -357701,17 +361856,17 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 108013, - "end": 108034, + "value": "positions", + "start": 109150, + "end": 109159, "loc": { "start": { - "line": 2763, - "column": 38 + "line": 2778, + "column": 42 }, "end": { - "line": 2763, - "column": 59 + "line": 2778, + "column": 51 } } }, @@ -357729,16 +361884,16 @@ "updateContext": null }, "value": "||", - "start": 108035, - "end": 108037, + "start": 109160, + "end": 109162, "loc": { "start": { - "line": 2763, - "column": 60 + "line": 2778, + "column": 52 }, "end": { - "line": 2763, - "column": 62 + "line": 2778, + "column": 54 } } }, @@ -357755,16 +361910,16 @@ "binop": null }, "value": "cfg", - "start": 108038, - "end": 108041, + "start": 109163, + "end": 109166, "loc": { "start": { - "line": 2763, - "column": 63 + "line": 2778, + "column": 55 }, "end": { - "line": 2763, - "column": 66 + "line": 2778, + "column": 58 } } }, @@ -357781,16 +361936,16 @@ "binop": null, "updateContext": null }, - "start": 108041, - "end": 108042, + "start": 109166, + "end": 109167, "loc": { "start": { - "line": 2763, - "column": 66 + "line": 2778, + "column": 58 }, "end": { - "line": 2763, - "column": 67 + "line": 2778, + "column": 59 } } }, @@ -357806,17 +361961,17 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 108042, - "end": 108065, + "value": "positionsCompressed", + "start": 109167, + "end": 109186, "loc": { "start": { - "line": 2763, - "column": 67 + "line": 2778, + "column": 59 }, "end": { - "line": 2763, - "column": 90 + "line": 2778, + "column": 78 } } }, @@ -357832,22 +361987,22 @@ "postfix": false, "binop": null }, - "start": 108065, - "end": 108066, + "start": 109186, + "end": 109187, "loc": { "start": { - "line": 2763, - "column": 90 + "line": 2778, + "column": 78 }, "end": { - "line": 2763, - "column": 91 + "line": 2778, + "column": 79 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -357855,25 +362010,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 108066, - "end": 108067, + "start": 109187, + "end": 109188, "loc": { "start": { - "line": 2763, - "column": 91 + "line": 2778, + "column": 79 }, "end": { - "line": 2763, - "column": 92 + "line": 2778, + "column": 80 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -357882,23 +362038,50 @@ "postfix": false, "binop": null }, - "start": 108068, - "end": 108069, + "value": "length", + "start": 109188, + "end": 109194, "loc": { "start": { - "line": 2763, - "column": 93 + "line": 2778, + "column": 80 }, "end": { - "line": 2763, - "column": 94 + "line": 2778, + "column": 86 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "/", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "/", + "start": 109195, + "end": 109196, + "loc": { + "start": { + "line": 2778, + "column": 87 + }, + "end": { + "line": 2778, + "column": 88 + } + } + }, + { + "type": { + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -357909,24 +362092,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 108086, - "end": 108090, + "value": 3, + "start": 109197, + "end": 109198, "loc": { "start": { - "line": 2764, - "column": 16 + "line": 2778, + "column": 89 }, "end": { - "line": 2764, - "column": 20 + "line": 2778, + "column": 90 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -357936,16 +362119,16 @@ "binop": null, "updateContext": null }, - "start": 108090, - "end": 108091, + "start": 109198, + "end": 109199, "loc": { "start": { - "line": 2764, - "column": 20 + "line": 2778, + "column": 90 }, "end": { - "line": 2764, - "column": 21 + "line": 2778, + "column": 91 } } }, @@ -357961,24 +362144,50 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 108091, - "end": 108096, + "value": "cfg", + "start": 109216, + "end": 109219, "loc": { "start": { - "line": 2764, - "column": 21 + "line": 2779, + "column": 16 }, "end": { - "line": 2764, - "column": 26 + "line": 2779, + "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 + }, + "start": 109219, + "end": 109220, + "loc": { + "start": { + "line": 2779, + "column": 19 + }, + "end": { + "line": 2779, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -357987,22 +362196,51 @@ "postfix": false, "binop": null }, - "start": 108096, - "end": 108097, + "value": "indices", + "start": 109220, + "end": 109227, "loc": { "start": { - "line": 2764, - "column": 26 + "line": 2779, + "column": 20 }, "end": { - "line": 2764, + "line": 2779, "column": 27 } } }, { "type": { - "label": "string", + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 109228, + "end": 109229, + "loc": { + "start": { + "line": 2779, + "column": 28 + }, + "end": { + "line": 2779, + "column": 29 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -358013,23 +362251,23 @@ "binop": null, "updateContext": null }, - "value": "Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)", - "start": 108097, - "end": 108219, + "value": "this", + "start": 109230, + "end": 109234, "loc": { "start": { - "line": 2764, - "column": 27 + "line": 2779, + "column": 30 }, "end": { - "line": 2764, - "column": 149 + "line": 2779, + "column": 34 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -358037,100 +362275,121 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 108219, - "end": 108220, + "start": 109234, + "end": 109235, "loc": { "start": { - "line": 2764, - "column": 149 + "line": 2779, + "column": 34 }, "end": { - "line": 2764, - "column": 150 + "line": 2779, + "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": 108220, - "end": 108221, + "value": "_createDefaultIndices", + "start": 109235, + "end": 109256, "loc": { "start": { - "line": 2764, - "column": 150 + "line": 2779, + "column": 35 }, "end": { - "line": 2764, - "column": 151 + "line": 2779, + "column": 56 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 109256, + "end": 109257, + "loc": { + "start": { + "line": 2779, + "column": 56 + }, + "end": { + "line": 2779, + "column": 57 + } + } + }, + { + "type": { + "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": 108238, - "end": 108244, + "value": "numPositions", + "start": 109257, + "end": 109269, "loc": { "start": { - "line": 2765, - "column": 16 + "line": 2779, + "column": 57 }, "end": { - "line": 2765, - "column": 22 + "line": 2779, + "column": 69 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 108245, - "end": 108250, + "start": 109269, + "end": 109270, "loc": { "start": { - "line": 2765, - "column": 23 + "line": 2779, + "column": 69 }, "end": { - "line": 2765, - "column": 28 + "line": 2779, + "column": 70 } } }, @@ -358147,16 +362406,16 @@ "binop": null, "updateContext": null }, - "start": 108250, - "end": 108251, + "start": 109270, + "end": 109271, "loc": { "start": { - "line": 2765, - "column": 28 + "line": 2779, + "column": 70 }, "end": { - "line": 2765, - "column": 29 + "line": 2779, + "column": 71 } } }, @@ -358172,15 +362431,15 @@ "postfix": false, "binop": null }, - "start": 108264, - "end": 108265, + "start": 109284, + "end": 109285, "loc": { "start": { - "line": 2766, + "line": 2780, "column": 12 }, "end": { - "line": 2766, + "line": 2780, "column": 13 } } @@ -358200,15 +362459,15 @@ "updateContext": null }, "value": "if", - "start": 108278, - "end": 108280, + "start": 109298, + "end": 109300, "loc": { "start": { - "line": 2767, + "line": 2781, "column": 12 }, "end": { - "line": 2767, + "line": 2781, "column": 14 } } @@ -358225,16 +362484,43 @@ "postfix": false, "binop": null }, - "start": 108281, - "end": 108282, + "start": 109301, + "end": 109302, "loc": { "start": { - "line": 2767, + "line": 2781, "column": 15 }, "end": { - "line": 2767, + "line": 2781, + "column": 16 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 109302, + "end": 109303, + "loc": { + "start": { + "line": 2781, "column": 16 + }, + "end": { + "line": 2781, + "column": 17 } } }, @@ -358251,16 +362537,16 @@ "binop": null }, "value": "cfg", - "start": 108282, - "end": 108285, + "start": 109303, + "end": 109306, "loc": { "start": { - "line": 2767, - "column": 16 + "line": 2781, + "column": 17 }, "end": { - "line": 2767, - "column": 19 + "line": 2781, + "column": 20 } } }, @@ -358277,16 +362563,16 @@ "binop": null, "updateContext": null }, - "start": 108285, - "end": 108286, + "start": 109306, + "end": 109307, "loc": { "start": { - "line": 2767, - "column": 19 + "line": 2781, + "column": 20 }, "end": { - "line": 2767, - "column": 20 + "line": 2781, + "column": 21 } } }, @@ -358302,17 +362588,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 108286, - "end": 108305, + "value": "buckets", + "start": 109307, + "end": 109314, "loc": { "start": { - "line": 2767, - "column": 20 + "line": 2781, + "column": 21 }, "end": { - "line": 2767, - "column": 39 + "line": 2781, + "column": 28 } } }, @@ -358330,16 +362616,16 @@ "updateContext": null }, "value": "&&", - "start": 108306, - "end": 108308, + "start": 109315, + "end": 109317, "loc": { "start": { - "line": 2767, - "column": 40 + "line": 2781, + "column": 29 }, "end": { - "line": 2767, - "column": 42 + "line": 2781, + "column": 31 } } }, @@ -358357,16 +362643,16 @@ "updateContext": null }, "value": "!", - "start": 108309, - "end": 108310, + "start": 109318, + "end": 109319, "loc": { "start": { - "line": 2767, - "column": 43 + "line": 2781, + "column": 32 }, "end": { - "line": 2767, - "column": 44 + "line": 2781, + "column": 33 } } }, @@ -358383,16 +362669,16 @@ "binop": null }, "value": "cfg", - "start": 108310, - "end": 108313, + "start": 109319, + "end": 109322, "loc": { "start": { - "line": 2767, - "column": 44 + "line": 2781, + "column": 33 }, "end": { - "line": 2767, - "column": 47 + "line": 2781, + "column": 36 } } }, @@ -358409,16 +362695,16 @@ "binop": null, "updateContext": null }, - "start": 108313, - "end": 108314, + "start": 109322, + "end": 109323, "loc": { "start": { - "line": 2767, - "column": 47 + "line": 2781, + "column": 36 }, "end": { - "line": 2767, - "column": 48 + "line": 2781, + "column": 37 } } }, @@ -358434,17 +362720,17 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 108314, - "end": 108335, + "value": "indices", + "start": 109323, + "end": 109330, "loc": { "start": { - "line": 2767, - "column": 48 + "line": 2781, + "column": 37 }, "end": { - "line": 2767, - "column": 69 + "line": 2781, + "column": 44 } } }, @@ -358462,43 +362748,16 @@ "updateContext": null }, "value": "&&", - "start": 108336, - "end": 108338, - "loc": { - "start": { - "line": 2767, - "column": 70 - }, - "end": { - "line": 2767, - "column": 72 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "!", - "start": 108339, - "end": 108340, + "start": 109331, + "end": 109333, "loc": { "start": { - "line": 2767, - "column": 73 + "line": 2781, + "column": 45 }, "end": { - "line": 2767, - "column": 74 + "line": 2781, + "column": 47 } } }, @@ -358515,16 +362774,16 @@ "binop": null }, "value": "cfg", - "start": 108340, - "end": 108343, + "start": 109334, + "end": 109337, "loc": { "start": { - "line": 2767, - "column": 74 + "line": 2781, + "column": 48 }, "end": { - "line": 2767, - "column": 77 + "line": 2781, + "column": 51 } } }, @@ -358541,16 +362800,16 @@ "binop": null, "updateContext": null }, - "start": 108343, - "end": 108344, + "start": 109337, + "end": 109338, "loc": { "start": { - "line": 2767, - "column": 77 + "line": 2781, + "column": 51 }, "end": { - "line": 2767, - "column": 78 + "line": 2781, + "column": 52 } } }, @@ -358566,74 +362825,50 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 108344, - "end": 108367, - "loc": { - "start": { - "line": 2767, - "column": 78 - }, - "end": { - "line": 2767, - "column": 101 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 108367, - "end": 108368, + "value": "primitive", + "start": 109338, + "end": 109347, "loc": { "start": { - "line": 2767, - "column": 101 + "line": 2781, + "column": 52 }, "end": { - "line": 2767, - "column": 102 + "line": 2781, + "column": 61 } } }, { "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": 108369, - "end": 108370, + "value": "!==", + "start": 109348, + "end": 109351, "loc": { "start": { - "line": 2767, - "column": 103 + "line": 2781, + "column": 62 }, "end": { - "line": 2767, - "column": 104 + "line": 2781, + "column": 65 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -358644,23 +362879,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 108387, - "end": 108391, + "value": "points", + "start": 109352, + "end": 109360, "loc": { "start": { - "line": 2768, - "column": 16 + "line": 2781, + "column": 66 }, "end": { - "line": 2768, - "column": 20 + "line": 2781, + "column": 74 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -358668,26 +362903,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 108391, - "end": 108392, + "start": 109360, + "end": 109361, "loc": { "start": { - "line": 2768, - "column": 20 + "line": 2781, + "column": 74 }, "end": { - "line": 2768, - "column": 21 + "line": 2781, + "column": 75 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -358696,24 +362930,23 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 108392, - "end": 108397, + "start": 109362, + "end": 109363, "loc": { "start": { - "line": 2768, - "column": 21 + "line": 2781, + "column": 76 }, "end": { - "line": 2768, - "column": 26 + "line": 2781, + "column": 77 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -358722,24 +362955,25 @@ "postfix": false, "binop": null }, - "start": 108397, - "end": 108398, + "value": "cfg", + "start": 109380, + "end": 109383, "loc": { "start": { - "line": 2768, - "column": 26 + "line": 2782, + "column": 16 }, "end": { - "line": 2768, - "column": 27 + "line": 2782, + "column": 19 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -358748,25 +362982,24 @@ "binop": null, "updateContext": null }, - "value": "Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)", - "start": 108398, - "end": 108537, + "start": 109383, + "end": 109384, "loc": { "start": { - "line": 2768, - "column": 27 + "line": 2782, + "column": 19 }, "end": { - "line": 2768, - "column": 166 + "line": 2782, + "column": 20 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -358774,51 +363007,53 @@ "postfix": false, "binop": null }, - "start": 108537, - "end": 108538, + "value": "indices", + "start": 109384, + "end": 109391, "loc": { "start": { - "line": 2768, - "column": 166 + "line": 2782, + "column": 20 }, "end": { - "line": 2768, - "column": 167 + "line": 2782, + "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": 108538, - "end": 108539, + "value": "=", + "start": 109392, + "end": 109393, "loc": { "start": { - "line": 2768, - "column": 167 + "line": 2782, + "column": 28 }, "end": { - "line": 2768, - "column": 168 + "line": 2782, + "column": 29 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -358827,26 +363062,25 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 108556, - "end": 108562, + "value": "this", + "start": 109394, + "end": 109398, "loc": { "start": { - "line": 2769, - "column": 16 + "line": 2782, + "column": 30 }, "end": { - "line": 2769, - "column": 22 + "line": 2782, + "column": 34 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -358855,51 +363089,50 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 108563, - "end": 108568, + "start": 109398, + "end": 109399, "loc": { "start": { - "line": 2769, - "column": 23 + "line": 2782, + "column": 34 }, "end": { - "line": 2769, - "column": 28 + "line": 2782, + "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": 108568, - "end": 108569, + "value": "_createDefaultIndices", + "start": 109399, + "end": 109420, "loc": { "start": { - "line": 2769, - "column": 28 + "line": 2782, + "column": 35 }, "end": { - "line": 2769, - "column": 29 + "line": 2782, + "column": 56 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -358907,52 +363140,50 @@ "postfix": false, "binop": null }, - "start": 108582, - "end": 108583, + "start": 109420, + "end": 109421, "loc": { "start": { - "line": 2770, - "column": 12 + "line": 2782, + "column": 56 }, "end": { - "line": 2770, - "column": 13 + "line": 2782, + "column": 57 } } }, { "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": 108596, - "end": 108598, + "value": "numIndices", + "start": 109421, + "end": 109431, "loc": { "start": { - "line": 2771, - "column": 12 + "line": 2782, + "column": 57 }, "end": { - "line": 2771, - "column": 14 + "line": 2782, + "column": 67 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -358960,22 +363191,23 @@ "postfix": false, "binop": null }, - "start": 108599, - "end": 108600, + "start": 109431, + "end": 109432, "loc": { "start": { - "line": 2771, - "column": 15 + "line": 2782, + "column": 67 }, "end": { - "line": 2771, - "column": 16 + "line": 2782, + "column": 68 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -358983,19 +363215,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 108600, - "end": 108603, + "value": "this", + "start": 109449, + "end": 109453, "loc": { "start": { - "line": 2771, + "line": 2783, "column": 16 }, "end": { - "line": 2771, - "column": 19 + "line": 2783, + "column": 20 } } }, @@ -359012,16 +363245,16 @@ "binop": null, "updateContext": null }, - "start": 108603, - "end": 108604, + "start": 109453, + "end": 109454, "loc": { "start": { - "line": 2771, - "column": 19 + "line": 2783, + "column": 20 }, "end": { - "line": 2771, - "column": 20 + "line": 2783, + "column": 21 } } }, @@ -359037,77 +363270,48 @@ "postfix": false, "binop": null }, - "value": "uvCompressed", - "start": 108604, - "end": 108616, - "loc": { - "start": { - "line": 2771, - "column": 20 - }, - "end": { - "line": 2771, - "column": 32 - } - } - }, - { - "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 2, - "updateContext": null - }, - "value": "&&", - "start": 108617, - "end": 108619, + "value": "error", + "start": 109454, + "end": 109459, "loc": { "start": { - "line": 2771, - "column": 33 + "line": 2783, + "column": 21 }, "end": { - "line": 2771, - "column": 35 + "line": 2783, + "column": 26 } } }, { "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": 108620, - "end": 108621, + "start": 109459, + "end": 109460, "loc": { "start": { - "line": 2771, - "column": 36 + "line": 2783, + "column": 26 }, "end": { - "line": 2771, - "column": 37 + "line": 2783, + "column": 27 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -359117,23 +363321,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 108621, - "end": 108624, + "start": 109460, + "end": 109461, "loc": { "start": { - "line": 2771, - "column": 37 + "line": 2783, + "column": 27 }, "end": { - "line": 2771, - "column": 40 + "line": 2783, + "column": 28 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -359144,23 +363347,24 @@ "binop": null, "updateContext": null }, - "start": 108624, - "end": 108625, + "value": "Param expected: indices (required for '", + "start": 109461, + "end": 109500, "loc": { "start": { - "line": 2771, - "column": 40 + "line": 2783, + "column": 28 }, "end": { - "line": 2771, - "column": 41 + "line": 2783, + "column": 67 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -359169,49 +363373,23 @@ "postfix": false, "binop": null }, - "value": "uvDecodeMatrix", - "start": 108625, - "end": 108639, + "start": 109500, + "end": 109502, "loc": { "start": { - "line": 2771, - "column": 41 + "line": 2783, + "column": 67 }, "end": { - "line": 2771, - "column": 55 + "line": 2783, + "column": 69 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 108639, - "end": 108640, - "loc": { - "start": { - "line": 2771, - "column": 55 - }, - "end": { - "line": 2771, - "column": 56 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -359220,25 +363398,25 @@ "postfix": false, "binop": null }, - "start": 108641, - "end": 108642, + "value": "cfg", + "start": 109502, + "end": 109505, "loc": { "start": { - "line": 2771, - "column": 57 + "line": 2783, + "column": 69 }, "end": { - "line": 2771, - "column": 58 + "line": 2783, + "column": 72 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -359247,51 +363425,50 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 108659, - "end": 108663, + "start": 109505, + "end": 109506, "loc": { "start": { - "line": 2772, - "column": 16 + "line": 2783, + "column": 72 }, "end": { - "line": 2772, - "column": 20 + "line": 2783, + "column": 73 } } }, { "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": 108663, - "end": 108664, + "value": "primitive", + "start": 109506, + "end": 109515, "loc": { "start": { - "line": 2772, - "column": 20 + "line": 2783, + "column": 73 }, "end": { - "line": 2772, - "column": 21 + "line": 2783, + "column": 82 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -359299,48 +363476,49 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 108664, - "end": 108669, + "start": 109515, + "end": 109516, "loc": { "start": { - "line": 2772, - "column": 21 + "line": 2783, + "column": 82 }, "end": { - "line": 2772, - "column": 26 + "line": 2783, + "column": 83 } } }, { "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": 108669, - "end": 108670, + "value": "' primitive type)", + "start": 109516, + "end": 109533, "loc": { "start": { - "line": 2772, - "column": 26 + "line": 2783, + "column": 83 }, "end": { - "line": 2772, - "column": 27 + "line": 2783, + "column": 100 } } }, { "type": { - "label": "string", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -359348,20 +363526,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)", - "start": 108670, - "end": 108769, + "start": 109533, + "end": 109534, "loc": { "start": { - "line": 2772, - "column": 27 + "line": 2783, + "column": 100 }, "end": { - "line": 2772, - "column": 126 + "line": 2783, + "column": 101 } } }, @@ -359377,16 +363553,16 @@ "postfix": false, "binop": null }, - "start": 108769, - "end": 108770, + "start": 109534, + "end": 109535, "loc": { "start": { - "line": 2772, - "column": 126 + "line": 2783, + "column": 101 }, "end": { - "line": 2772, - "column": 127 + "line": 2783, + "column": 102 } } }, @@ -359403,16 +363579,16 @@ "binop": null, "updateContext": null }, - "start": 108770, - "end": 108771, + "start": 109535, + "end": 109536, "loc": { "start": { - "line": 2772, - "column": 127 + "line": 2783, + "column": 102 }, "end": { - "line": 2772, - "column": 128 + "line": 2783, + "column": 103 } } }, @@ -359431,15 +363607,15 @@ "updateContext": null }, "value": "return", - "start": 108788, - "end": 108794, + "start": 109553, + "end": 109559, "loc": { "start": { - "line": 2773, + "line": 2784, "column": 16 }, "end": { - "line": 2773, + "line": 2784, "column": 22 } } @@ -359459,15 +363635,15 @@ "updateContext": null }, "value": "false", - "start": 108795, - "end": 108800, + "start": 109560, + "end": 109565, "loc": { "start": { - "line": 2773, + "line": 2784, "column": 23 }, "end": { - "line": 2773, + "line": 2784, "column": 28 } } @@ -359485,15 +363661,15 @@ "binop": null, "updateContext": null }, - "start": 108800, - "end": 108801, + "start": 109565, + "end": 109566, "loc": { "start": { - "line": 2773, + "line": 2784, "column": 28 }, "end": { - "line": 2773, + "line": 2784, "column": 29 } } @@ -359510,15 +363686,15 @@ "postfix": false, "binop": null }, - "start": 108814, - "end": 108815, + "start": 109579, + "end": 109580, "loc": { "start": { - "line": 2774, + "line": 2785, "column": 12 }, "end": { - "line": 2774, + "line": 2785, "column": 13 } } @@ -359538,15 +363714,15 @@ "updateContext": null }, "value": "if", - "start": 108828, - "end": 108830, + "start": 109593, + "end": 109595, "loc": { "start": { - "line": 2775, + "line": 2786, "column": 12 }, "end": { - "line": 2775, + "line": 2786, "column": 14 } } @@ -359563,42 +363739,40 @@ "postfix": false, "binop": null }, - "start": 108831, - "end": 108832, + "start": 109596, + "end": 109597, "loc": { "start": { - "line": 2775, + "line": 2786, "column": 15 }, "end": { - "line": 2775, + "line": 2786, "column": 16 } } }, { "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": 108832, - "end": 108833, + "start": 109597, + "end": 109598, "loc": { "start": { - "line": 2775, + "line": 2786, "column": 16 }, "end": { - "line": 2775, + "line": 2786, "column": 17 } } @@ -359616,15 +363790,15 @@ "binop": null }, "value": "cfg", - "start": 108833, - "end": 108836, + "start": 109598, + "end": 109601, "loc": { "start": { - "line": 2775, + "line": 2786, "column": 17 }, "end": { - "line": 2775, + "line": 2786, "column": 20 } } @@ -359642,15 +363816,15 @@ "binop": null, "updateContext": null }, - "start": 108836, - "end": 108837, + "start": 109601, + "end": 109602, "loc": { "start": { - "line": 2775, + "line": 2786, "column": 20 }, "end": { - "line": 2775, + "line": 2786, "column": 21 } } @@ -359667,23 +363841,23 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 108837, - "end": 108844, + "value": "matrix", + "start": 109602, + "end": 109608, "loc": { "start": { - "line": 2775, + "line": 2786, "column": 21 }, "end": { - "line": 2775, - "column": 28 + "line": 2786, + "column": 27 } } }, { "type": { - "label": "&&", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -359691,47 +363865,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null - }, - "value": "&&", - "start": 108845, - "end": 108847, - "loc": { - "start": { - "line": 2775, - "column": 29 - }, - "end": { - "line": 2775, - "column": 31 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "!", - "start": 108848, - "end": 108849, + "value": "||", + "start": 109609, + "end": 109611, "loc": { "start": { - "line": 2775, - "column": 32 + "line": 2786, + "column": 28 }, "end": { - "line": 2775, - "column": 33 + "line": 2786, + "column": 30 } } }, @@ -359748,16 +363895,16 @@ "binop": null }, "value": "cfg", - "start": 108849, - "end": 108852, + "start": 109612, + "end": 109615, "loc": { "start": { - "line": 2775, - "column": 33 + "line": 2786, + "column": 31 }, "end": { - "line": 2775, - "column": 36 + "line": 2786, + "column": 34 } } }, @@ -359774,16 +363921,16 @@ "binop": null, "updateContext": null }, - "start": 108852, - "end": 108853, + "start": 109615, + "end": 109616, "loc": { "start": { - "line": 2775, - "column": 36 + "line": 2786, + "column": 34 }, "end": { - "line": 2775, - "column": 37 + "line": 2786, + "column": 35 } } }, @@ -359799,23 +363946,23 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 108853, - "end": 108860, + "value": "position", + "start": 109616, + "end": 109624, "loc": { "start": { - "line": 2775, - "column": 37 + "line": 2786, + "column": 35 }, "end": { - "line": 2775, - "column": 44 + "line": 2786, + "column": 43 } } }, { "type": { - "label": "&&", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -359823,45 +363970,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": 1, "updateContext": null }, - "value": "&&", - "start": 108861, - "end": 108863, - "loc": { - "start": { - "line": 2775, - "column": 45 - }, - "end": { - "line": 2775, - "column": 47 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 108864, - "end": 108865, + "value": "||", + "start": 109625, + "end": 109627, "loc": { "start": { - "line": 2775, - "column": 48 + "line": 2786, + "column": 44 }, "end": { - "line": 2775, - "column": 49 + "line": 2786, + "column": 46 } } }, @@ -359878,16 +364000,16 @@ "binop": null }, "value": "cfg", - "start": 108865, - "end": 108868, + "start": 109628, + "end": 109631, "loc": { "start": { - "line": 2775, - "column": 49 + "line": 2786, + "column": 47 }, "end": { - "line": 2775, - "column": 52 + "line": 2786, + "column": 50 } } }, @@ -359904,16 +364026,16 @@ "binop": null, "updateContext": null }, - "start": 108868, - "end": 108869, + "start": 109631, + "end": 109632, "loc": { "start": { - "line": 2775, - "column": 52 + "line": 2786, + "column": 50 }, "end": { - "line": 2775, - "column": 53 + "line": 2786, + "column": 51 } } }, @@ -359929,23 +364051,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 108869, - "end": 108878, + "value": "rotation", + "start": 109632, + "end": 109640, "loc": { "start": { - "line": 2775, - "column": 53 + "line": 2786, + "column": 51 }, "end": { - "line": 2775, - "column": 62 + "line": 2786, + "column": 59 } } }, { "type": { - "label": "==/!=", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -359953,26 +364075,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": 1, "updateContext": null }, - "value": "===", - "start": 108879, - "end": 108882, + "value": "||", + "start": 109641, + "end": 109643, "loc": { "start": { - "line": 2775, - "column": 63 + "line": 2786, + "column": 60 }, "end": { - "line": 2775, - "column": 66 + "line": 2786, + "column": 62 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -359980,47 +364102,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "triangles", - "start": 108883, - "end": 108894, + "value": "cfg", + "start": 109644, + "end": 109647, "loc": { "start": { - "line": 2775, - "column": 67 + "line": 2786, + "column": 63 }, "end": { - "line": 2775, - "column": 78 + "line": 2786, + "column": 66 } } }, { "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": 108895, - "end": 108897, + "start": 109647, + "end": 109648, "loc": { "start": { - "line": 2775, - "column": 79 + "line": 2786, + "column": 66 }, "end": { - "line": 2775, - "column": 81 + "line": 2786, + "column": 67 } } }, @@ -360036,23 +364156,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 108898, - "end": 108901, + "value": "scale", + "start": 109648, + "end": 109653, "loc": { "start": { - "line": 2775, - "column": 82 + "line": 2786, + "column": 67 }, "end": { - "line": 2775, - "column": 85 + "line": 2786, + "column": 72 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -360060,78 +364180,76 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 108901, - "end": 108902, + "start": 109653, + "end": 109654, "loc": { "start": { - "line": 2775, - "column": 85 + "line": 2786, + "column": 72 }, "end": { - "line": 2775, - "column": 86 + "line": 2786, + "column": 73 } } }, { "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": 2, + "updateContext": null }, - "value": "primitive", - "start": 108902, - "end": 108911, + "value": "&&", + "start": 109655, + "end": 109657, "loc": { "start": { - "line": 2775, - "column": 86 + "line": 2786, + "column": 74 }, "end": { - "line": 2775, - "column": 95 + "line": 2786, + "column": 76 } } }, { "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": 108912, - "end": 108915, + "start": 109658, + "end": 109659, "loc": { "start": { - "line": 2775, - "column": 96 + "line": 2786, + "column": 77 }, "end": { - "line": 2775, - "column": 99 + "line": 2786, + "column": 78 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -360139,47 +364257,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "solid", - "start": 108916, - "end": 108923, + "value": "cfg", + "start": 109659, + "end": 109662, "loc": { "start": { - "line": 2775, - "column": 100 + "line": 2786, + "column": 78 }, "end": { - "line": 2775, - "column": 107 + "line": 2786, + "column": 81 } } }, { "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": 108924, - "end": 108926, + "start": 109662, + "end": 109663, "loc": { "start": { - "line": 2775, - "column": 108 + "line": 2786, + "column": 81 }, "end": { - "line": 2775, - "column": 110 + "line": 2786, + "column": 82 } } }, @@ -360195,43 +364311,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 108927, - "end": 108930, + "value": "positionsCompressed", + "start": 109663, + "end": 109682, "loc": { "start": { - "line": 2775, - "column": 111 + "line": 2786, + "column": 82 }, "end": { - "line": 2775, - "column": 114 + "line": 2786, + "column": 101 } } }, { "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": 108930, - "end": 108931, + "value": "||", + "start": 109683, + "end": 109685, "loc": { "start": { - "line": 2775, - "column": 114 + "line": 2786, + "column": 102 }, "end": { - "line": 2775, - "column": 115 + "line": 2786, + "column": 104 } } }, @@ -360247,50 +364364,49 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 108931, - "end": 108940, + "value": "cfg", + "start": 109686, + "end": 109689, "loc": { "start": { - "line": 2775, - "column": 115 + "line": 2786, + "column": 105 }, "end": { - "line": 2775, - "column": 124 + "line": 2786, + "column": 108 } } }, { "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": 108941, - "end": 108944, + "start": 109689, + "end": 109690, "loc": { "start": { - "line": 2775, - "column": 125 + "line": 2786, + "column": 108 }, "end": { - "line": 2775, - "column": 128 + "line": 2786, + "column": 109 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -360298,20 +364414,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "surface", - "start": 108945, - "end": 108954, + "value": "positionsDecodeBoundary", + "start": 109690, + "end": 109713, "loc": { "start": { - "line": 2775, - "column": 129 + "line": 2786, + "column": 109 }, "end": { - "line": 2775, - "column": 138 + "line": 2786, + "column": 132 } } }, @@ -360327,16 +364442,16 @@ "postfix": false, "binop": null }, - "start": 108954, - "end": 108955, + "start": 109713, + "end": 109714, "loc": { "start": { - "line": 2775, - "column": 138 + "line": 2786, + "column": 132 }, "end": { - "line": 2775, - "column": 139 + "line": 2786, + "column": 133 } } }, @@ -360352,16 +364467,16 @@ "postfix": false, "binop": null }, - "start": 108955, - "end": 108956, + "start": 109714, + "end": 109715, "loc": { "start": { - "line": 2775, - "column": 139 + "line": 2786, + "column": 133 }, "end": { - "line": 2775, - "column": 140 + "line": 2786, + "column": 134 } } }, @@ -360377,25 +364492,25 @@ "postfix": false, "binop": null }, - "start": 108957, - "end": 108958, + "start": 109716, + "end": 109717, "loc": { "start": { - "line": 2775, - "column": 141 + "line": 2786, + "column": 135 }, "end": { - "line": 2775, - "column": 142 + "line": 2786, + "column": 136 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -360404,70 +364519,69 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 108975, - "end": 108980, + "value": "this", + "start": 109734, + "end": 109738, "loc": { "start": { - "line": 2776, + "line": 2787, "column": 16 }, "end": { - "line": 2776, - "column": 21 + "line": 2787, + "column": 20 } } }, { "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": "numPositions", - "start": 108981, - "end": 108993, + "start": 109738, + "end": 109739, "loc": { "start": { - "line": 2776, - "column": 22 + "line": 2787, + "column": 20 }, "end": { - "line": 2776, - "column": 34 + "line": 2787, + "column": 21 } } }, { "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": 108994, - "end": 108995, + "value": "error", + "start": 109739, + "end": 109744, "loc": { "start": { - "line": 2776, - "column": 35 + "line": 2787, + "column": 21 }, "end": { - "line": 2776, - "column": 36 + "line": 2787, + "column": 26 } } }, @@ -360483,22 +364597,22 @@ "postfix": false, "binop": null }, - "start": 108996, - "end": 108997, + "start": 109744, + "end": 109745, "loc": { "start": { - "line": 2776, - "column": 37 + "line": 2787, + "column": 26 }, "end": { - "line": 2776, - "column": 38 + "line": 2787, + "column": 27 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -360506,25 +364620,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 108997, - "end": 109000, + "value": "Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'", + "start": 109745, + "end": 109846, "loc": { "start": { - "line": 2776, - "column": 38 + "line": 2787, + "column": 27 }, "end": { - "line": 2776, - "column": 41 + "line": 2787, + "column": 128 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -360532,51 +364647,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 109000, - "end": 109001, + "start": 109846, + "end": 109847, "loc": { "start": { - "line": 2776, - "column": 41 + "line": 2787, + "column": 128 }, "end": { - "line": 2776, - "column": 42 + "line": 2787, + "column": 129 } } }, { "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": "positions", - "start": 109001, - "end": 109010, + "start": 109847, + "end": 109848, "loc": { "start": { - "line": 2776, - "column": 42 + "line": 2787, + "column": 129 }, "end": { - "line": 2776, - "column": 51 + "line": 2787, + "column": 130 } } }, { "type": { - "label": "||", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -360584,26 +364699,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 109011, - "end": 109013, + "value": "return", + "start": 109865, + "end": 109871, "loc": { "start": { - "line": 2776, - "column": 52 + "line": 2788, + "column": 16 }, "end": { - "line": 2776, - "column": 54 + "line": 2788, + "column": 22 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -360611,26 +364727,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 109014, - "end": 109017, + "value": "false", + "start": 109872, + "end": 109877, "loc": { "start": { - "line": 2776, - "column": 55 + "line": 2788, + "column": 23 }, "end": { - "line": 2776, - "column": 58 + "line": 2788, + "column": 28 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -360640,24 +364757,24 @@ "binop": null, "updateContext": null }, - "start": 109017, - "end": 109018, + "start": 109877, + "end": 109878, "loc": { "start": { - "line": 2776, - "column": 58 + "line": 2788, + "column": 28 }, "end": { - "line": 2776, - "column": 59 + "line": 2788, + "column": 29 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -360665,23 +364782,23 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 109018, - "end": 109037, + "start": 109891, + "end": 109892, "loc": { "start": { - "line": 2776, - "column": 59 + "line": 2789, + "column": 12 }, "end": { - "line": 2776, - "column": 78 + "line": 2789, + "column": 13 } } }, { "type": { - "label": ")", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -360689,156 +364806,159 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 109037, - "end": 109038, + "value": "const", + "start": 109906, + "end": 109911, "loc": { "start": { - "line": 2776, - "column": 78 + "line": 2791, + "column": 12 }, "end": { - "line": 2776, - "column": 79 + "line": 2791, + "column": 17 } } }, { "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": 109038, - "end": 109039, + "value": "useDTX", + "start": 109912, + "end": 109918, "loc": { "start": { - "line": 2776, - "column": 79 + "line": 2791, + "column": 18 }, "end": { - "line": 2776, - "column": 80 + "line": 2791, + "column": 24 } } }, { "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": "length", - "start": 109039, - "end": 109045, + "value": "=", + "start": 109919, + "end": 109920, "loc": { "start": { - "line": 2776, - "column": 80 + "line": 2791, + "column": 25 }, "end": { - "line": 2776, - "column": 86 + "line": 2791, + "column": 26 } } }, { "type": { - "label": "/", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, - "updateContext": null + "binop": null }, - "value": "/", - "start": 109046, - "end": 109047, + "start": 109921, + "end": 109922, "loc": { "start": { - "line": 2776, - "column": 87 + "line": 2791, + "column": 27 }, "end": { - "line": 2776, - "column": 88 + "line": 2791, + "column": 28 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": 3, - "start": 109048, - "end": 109049, + "value": "!", + "start": 109922, + "end": 109923, "loc": { "start": { - "line": 2776, - "column": 89 + "line": 2791, + "column": 28 }, "end": { - "line": 2776, - "column": 90 + "line": 2791, + "column": 29 } } }, { "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": 109049, - "end": 109050, + "value": "!", + "start": 109923, + "end": 109924, "loc": { "start": { - "line": 2776, - "column": 90 + "line": 2791, + "column": 29 }, "end": { - "line": 2776, - "column": 91 + "line": 2791, + "column": 30 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -360846,19 +364966,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 109067, - "end": 109070, + "value": "this", + "start": 109924, + "end": 109928, "loc": { "start": { - "line": 2777, - "column": 16 + "line": 2791, + "column": 30 }, "end": { - "line": 2777, - "column": 19 + "line": 2791, + "column": 34 } } }, @@ -360875,16 +364996,16 @@ "binop": null, "updateContext": null }, - "start": 109070, - "end": 109071, + "start": 109928, + "end": 109929, "loc": { "start": { - "line": 2777, - "column": 19 + "line": 2791, + "column": 34 }, "end": { - "line": 2777, - "column": 20 + "line": 2791, + "column": 35 } } }, @@ -360900,51 +365021,75 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 109071, - "end": 109078, + "value": "_dtxEnabled", + "start": 109929, + "end": 109940, "loc": { "start": { - "line": 2777, - "column": 20 + "line": 2791, + "column": 35 }, "end": { - "line": 2777, - "column": 27 + "line": 2791, + "column": 46 } } }, { "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": 109079, - "end": 109080, + "value": "&&", + "start": 109941, + "end": 109943, "loc": { "start": { - "line": 2777, - "column": 28 + "line": 2791, + "column": 47 }, "end": { - "line": 2777, - "column": 29 + "line": 2791, + "column": 49 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 109944, + "end": 109945, + "loc": { + "start": { + "line": 2791, + "column": 50 + }, + "end": { + "line": 2791, + "column": 51 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -360952,20 +365097,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 109081, - "end": 109085, + "value": "cfg", + "start": 109945, + "end": 109948, "loc": { "start": { - "line": 2777, - "column": 30 + "line": 2791, + "column": 51 }, "end": { - "line": 2777, - "column": 34 + "line": 2791, + "column": 54 } } }, @@ -360982,16 +365126,16 @@ "binop": null, "updateContext": null }, - "start": 109085, - "end": 109086, + "start": 109948, + "end": 109949, "loc": { "start": { - "line": 2777, - "column": 34 + "line": 2791, + "column": 54 }, "end": { - "line": 2777, - "column": 35 + "line": 2791, + "column": 55 } } }, @@ -361007,48 +365151,50 @@ "postfix": false, "binop": null }, - "value": "_createDefaultIndices", - "start": 109086, - "end": 109107, + "value": "primitive", + "start": 109949, + "end": 109958, "loc": { "start": { - "line": 2777, - "column": 35 + "line": 2791, + "column": 55 }, "end": { - "line": 2777, - "column": 56 + "line": 2791, + "column": 64 } } }, { "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": 109107, - "end": 109108, + "value": "===", + "start": 109959, + "end": 109962, "loc": { "start": { - "line": 2777, - "column": 56 + "line": 2791, + "column": 65 }, "end": { - "line": 2777, - "column": 57 + "line": 2791, + "column": 68 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -361056,51 +365202,80 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "numPositions", - "start": 109108, - "end": 109120, + "value": "triangles", + "start": 109963, + "end": 109974, "loc": { "start": { - "line": 2777, - "column": 57 + "line": 2791, + "column": 69 }, "end": { - "line": 2777, - "column": 69 + "line": 2791, + "column": 80 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "||", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, + "binop": 1, + "updateContext": null + }, + "value": "||", + "start": 109995, + "end": 109997, + "loc": { + "start": { + "line": 2792, + "column": 20 + }, + "end": { + "line": 2792, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 109120, - "end": 109121, + "value": "cfg", + "start": 109998, + "end": 110001, "loc": { "start": { - "line": 2777, - "column": 69 + "line": 2792, + "column": 23 }, "end": { - "line": 2777, - "column": 70 + "line": 2792, + "column": 26 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -361110,24 +365285,24 @@ "binop": null, "updateContext": null }, - "start": 109121, - "end": 109122, + "start": 110001, + "end": 110002, "loc": { "start": { - "line": 2777, - "column": 70 + "line": 2792, + "column": 26 }, "end": { - "line": 2777, - "column": 71 + "line": 2792, + "column": 27 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -361135,96 +365310,98 @@ "postfix": false, "binop": null }, - "start": 109135, - "end": 109136, + "value": "primitive", + "start": 110002, + "end": 110011, "loc": { "start": { - "line": 2778, - "column": 12 + "line": 2792, + "column": 27 }, "end": { - "line": 2778, - "column": 13 + "line": 2792, + "column": 36 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "if", - "start": 109149, - "end": 109151, + "value": "===", + "start": 110012, + "end": 110015, "loc": { "start": { - "line": 2779, - "column": 12 + "line": 2792, + "column": 37 }, "end": { - "line": 2779, - "column": 14 + "line": 2792, + "column": 40 } } }, { "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": 109152, - "end": 109153, + "value": "solid", + "start": 110016, + "end": 110023, "loc": { "start": { - "line": 2779, - "column": 15 + "line": 2792, + "column": 41 }, "end": { - "line": 2779, - "column": 16 + "line": 2792, + "column": 48 } } }, { "type": { - "label": "prefix", + "label": "||", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "!", - "start": 109153, - "end": 109154, + "value": "||", + "start": 110044, + "end": 110046, "loc": { "start": { - "line": 2779, - "column": 16 + "line": 2793, + "column": 20 }, "end": { - "line": 2779, - "column": 17 + "line": 2793, + "column": 22 } } }, @@ -361241,16 +365418,16 @@ "binop": null }, "value": "cfg", - "start": 109154, - "end": 109157, + "start": 110047, + "end": 110050, "loc": { "start": { - "line": 2779, - "column": 17 + "line": 2793, + "column": 23 }, "end": { - "line": 2779, - "column": 20 + "line": 2793, + "column": 26 } } }, @@ -361267,16 +365444,16 @@ "binop": null, "updateContext": null }, - "start": 109157, - "end": 109158, + "start": 110050, + "end": 110051, "loc": { "start": { - "line": 2779, - "column": 20 + "line": 2793, + "column": 26 }, "end": { - "line": 2779, - "column": 21 + "line": 2793, + "column": 27 } } }, @@ -361292,23 +365469,23 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 109158, - "end": 109165, + "value": "primitive", + "start": 110051, + "end": 110060, "loc": { "start": { - "line": 2779, - "column": 21 + "line": 2793, + "column": 27 }, "end": { - "line": 2779, - "column": 28 + "line": 2793, + "column": 36 } } }, { "type": { - "label": "&&", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -361316,55 +365493,55 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": 6, "updateContext": null }, - "value": "&&", - "start": 109166, - "end": 109168, + "value": "===", + "start": 110061, + "end": 110064, "loc": { "start": { - "line": 2779, - "column": 29 + "line": 2793, + "column": 37 }, "end": { - "line": 2779, - "column": 31 + "line": 2793, + "column": 40 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "string", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 109169, - "end": 109170, + "value": "surface", + "start": 110065, + "end": 110074, "loc": { "start": { - "line": 2779, - "column": 32 + "line": 2793, + "column": 41 }, "end": { - "line": 2779, - "column": 33 + "line": 2793, + "column": 50 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -361372,23 +365549,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 109170, - "end": 109173, + "start": 110074, + "end": 110075, "loc": { "start": { - "line": 2779, - "column": 33 + "line": 2793, + "column": 50 }, "end": { - "line": 2779, - "column": 36 + "line": 2793, + "column": 51 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -361396,26 +365572,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": null + }, + "start": 110075, + "end": 110076, + "loc": { + "start": { + "line": 2793, + "column": 51 + }, + "end": { + "line": 2793, + "column": 52 + } + } + }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, "updateContext": null }, - "start": 109173, - "end": 109174, + "value": "&&", + "start": 110093, + "end": 110095, "loc": { "start": { - "line": 2779, - "column": 36 + "line": 2794, + "column": 16 }, "end": { - "line": 2779, - "column": 37 + "line": 2794, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -361424,44 +365626,43 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 109174, - "end": 109181, + "start": 110096, + "end": 110097, "loc": { "start": { - "line": 2779, - "column": 37 + "line": 2794, + "column": 19 }, "end": { - "line": 2779, - "column": 44 + "line": 2794, + "column": 20 } } }, { "type": { - "label": "&&", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 109182, - "end": 109184, + "value": "!", + "start": 110097, + "end": 110098, "loc": { "start": { - "line": 2779, - "column": 45 + "line": 2794, + "column": 20 }, "end": { - "line": 2779, - "column": 47 + "line": 2794, + "column": 21 } } }, @@ -361478,16 +365679,16 @@ "binop": null }, "value": "cfg", - "start": 109185, - "end": 109188, + "start": 110098, + "end": 110101, "loc": { "start": { - "line": 2779, - "column": 48 + "line": 2794, + "column": 21 }, "end": { - "line": 2779, - "column": 51 + "line": 2794, + "column": 24 } } }, @@ -361504,16 +365705,16 @@ "binop": null, "updateContext": null }, - "start": 109188, - "end": 109189, + "start": 110101, + "end": 110102, "loc": { "start": { - "line": 2779, - "column": 51 + "line": 2794, + "column": 24 }, "end": { - "line": 2779, - "column": 52 + "line": 2794, + "column": 25 } } }, @@ -361529,52 +365730,50 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 109189, - "end": 109198, + "value": "textureSetId", + "start": 110102, + "end": 110114, "loc": { "start": { - "line": 2779, - "column": 52 + "line": 2794, + "column": 25 }, "end": { - "line": 2779, - "column": 61 + "line": 2794, + "column": 37 } } }, { "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": 109199, - "end": 109202, + "start": 110114, + "end": 110115, "loc": { "start": { - "line": 2779, - "column": 62 + "line": 2794, + "column": 37 }, "end": { - "line": 2779, - "column": 65 + "line": 2794, + "column": 38 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -361583,25 +365782,24 @@ "binop": null, "updateContext": null }, - "value": "points", - "start": 109203, - "end": 109211, + "start": 110115, + "end": 110116, "loc": { "start": { - "line": 2779, - "column": 66 + "line": 2794, + "column": 38 }, "end": { - "line": 2779, - "column": 74 + "line": 2794, + "column": 39 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -361609,41 +365807,43 @@ "postfix": false, "binop": null }, - "start": 109211, - "end": 109212, + "value": "cfg", + "start": 110130, + "end": 110133, "loc": { "start": { - "line": 2779, - "column": 74 + "line": 2796, + "column": 12 }, "end": { - "line": 2779, - "column": 75 + "line": 2796, + "column": 15 } } }, { "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": 109213, - "end": 109214, + "start": 110133, + "end": 110134, "loc": { "start": { - "line": 2779, - "column": 76 + "line": 2796, + "column": 15 }, "end": { - "line": 2779, - "column": 77 + "line": 2796, + "column": 16 } } }, @@ -361659,43 +365859,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 109231, - "end": 109234, + "value": "origin", + "start": 110134, + "end": 110140, "loc": { "start": { - "line": 2780, + "line": 2796, "column": 16 }, "end": { - "line": 2780, - "column": 19 + "line": 2796, + "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": 109234, - "end": 109235, + "value": "=", + "start": 110141, + "end": 110142, "loc": { "start": { - "line": 2780, - "column": 19 + "line": 2796, + "column": 23 }, "end": { - "line": 2780, - "column": 20 + "line": 2796, + "column": 24 } } }, @@ -361711,51 +365912,49 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 109235, - "end": 109242, + "value": "cfg", + "start": 110143, + "end": 110146, "loc": { "start": { - "line": 2780, - "column": 20 + "line": 2796, + "column": 25 }, "end": { - "line": 2780, - "column": 27 + "line": 2796, + "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": 109243, - "end": 109244, + "start": 110146, + "end": 110147, "loc": { "start": { - "line": 2780, + "line": 2796, "column": 28 }, "end": { - "line": 2780, + "line": 2796, "column": 29 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -361763,27 +365962,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 109245, - "end": 109249, + "value": "origin", + "start": 110147, + "end": 110153, "loc": { "start": { - "line": 2780, - "column": 30 + "line": 2796, + "column": 29 }, "end": { - "line": 2780, - "column": 34 + "line": 2796, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "?", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -361793,16 +365991,16 @@ "binop": null, "updateContext": null }, - "start": 109249, - "end": 109250, + "start": 110154, + "end": 110155, "loc": { "start": { - "line": 2780, - "column": 34 + "line": 2796, + "column": 36 }, "end": { - "line": 2780, - "column": 35 + "line": 2796, + "column": 37 } } }, @@ -361818,42 +366016,43 @@ "postfix": false, "binop": null }, - "value": "_createDefaultIndices", - "start": 109250, - "end": 109271, + "value": "math", + "start": 110156, + "end": 110160, "loc": { "start": { - "line": 2780, - "column": 35 + "line": 2796, + "column": 38 }, "end": { - "line": 2780, - "column": 56 + "line": 2796, + "column": 42 } } }, { "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": 109271, - "end": 109272, + "start": 110160, + "end": 110161, "loc": { "start": { - "line": 2780, - "column": 56 + "line": 2796, + "column": 42 }, "end": { - "line": 2780, - "column": 57 + "line": 2796, + "column": 43 } } }, @@ -361869,25 +366068,25 @@ "postfix": false, "binop": null }, - "value": "numIndices", - "start": 109272, - "end": 109282, + "value": "addVec3", + "start": 110161, + "end": 110168, "loc": { "start": { - "line": 2780, - "column": 57 + "line": 2796, + "column": 43 }, "end": { - "line": 2780, - "column": 67 + "line": 2796, + "column": 50 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -361895,16 +366094,16 @@ "postfix": false, "binop": null }, - "start": 109282, - "end": 109283, + "start": 110168, + "end": 110169, "loc": { "start": { - "line": 2780, - "column": 67 + "line": 2796, + "column": 50 }, "end": { - "line": 2780, - "column": 68 + "line": 2796, + "column": 51 } } }, @@ -361923,16 +366122,16 @@ "updateContext": null }, "value": "this", - "start": 109300, - "end": 109304, + "start": 110169, + "end": 110173, "loc": { "start": { - "line": 2781, - "column": 16 + "line": 2796, + "column": 51 }, "end": { - "line": 2781, - "column": 20 + "line": 2796, + "column": 55 } } }, @@ -361949,16 +366148,16 @@ "binop": null, "updateContext": null }, - "start": 109304, - "end": 109305, + "start": 110173, + "end": 110174, "loc": { "start": { - "line": 2781, - "column": 20 + "line": 2796, + "column": 55 }, "end": { - "line": 2781, - "column": 21 + "line": 2796, + "column": 56 } } }, @@ -361974,24 +366173,50 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 109305, - "end": 109310, + "value": "_origin", + "start": 110174, + "end": 110181, "loc": { "start": { - "line": 2781, - "column": 21 + "line": 2796, + "column": 56 }, "end": { - "line": 2781, - "column": 26 + "line": 2796, + "column": 63 } } }, { "type": { - "label": "(", + "label": ",", "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 110181, + "end": 110182, + "loc": { + "start": { + "line": 2796, + "column": 63 + }, + "end": { + "line": 2796, + "column": 64 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -362000,93 +366225,95 @@ "postfix": false, "binop": null }, - "start": 109310, - "end": 109311, + "value": "cfg", + "start": 110183, + "end": 110186, "loc": { "start": { - "line": 2781, - "column": 26 + "line": 2796, + "column": 65 }, "end": { - "line": 2781, - "column": 27 + "line": 2796, + "column": 68 } } }, { "type": { - "label": "`", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 109311, - "end": 109312, + "start": 110186, + "end": 110187, "loc": { "start": { - "line": 2781, - "column": 27 + "line": 2796, + "column": 68 }, "end": { - "line": 2781, - "column": 28 + "line": 2796, + "column": 69 } } }, { "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": "Param expected: indices (required for '", - "start": 109312, - "end": 109351, + "value": "origin", + "start": 110187, + "end": 110193, "loc": { "start": { - "line": 2781, - "column": 28 + "line": 2796, + "column": 69 }, "end": { - "line": 2781, - "column": 67 + "line": 2796, + "column": 75 } } }, { "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": 109351, - "end": 109353, + "start": 110193, + "end": 110194, "loc": { "start": { - "line": 2781, - "column": 67 + "line": 2796, + "column": 75 }, "end": { - "line": 2781, - "column": 69 + "line": 2796, + "column": 76 } } }, @@ -362102,17 +366329,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 109353, - "end": 109356, + "value": "math", + "start": 110195, + "end": 110199, "loc": { "start": { - "line": 2781, - "column": 69 + "line": 2796, + "column": 77 }, "end": { - "line": 2781, - "column": 72 + "line": 2796, + "column": 81 } } }, @@ -362129,16 +366356,16 @@ "binop": null, "updateContext": null }, - "start": 109356, - "end": 109357, + "start": 110199, + "end": 110200, "loc": { "start": { - "line": 2781, - "column": 72 + "line": 2796, + "column": 81 }, "end": { - "line": 2781, - "column": 73 + "line": 2796, + "column": 82 } } }, @@ -362154,25 +366381,25 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 109357, - "end": 109366, + "value": "vec3", + "start": 110200, + "end": 110204, "loc": { "start": { - "line": 2781, - "column": 73 + "line": 2796, + "column": 82 }, "end": { - "line": 2781, - "column": 82 + "line": 2796, + "column": 86 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -362180,22 +366407,22 @@ "postfix": false, "binop": null }, - "start": 109366, - "end": 109367, + "start": 110204, + "end": 110205, "loc": { "start": { - "line": 2781, - "column": 82 + "line": 2796, + "column": 86 }, "end": { - "line": 2781, - "column": 83 + "line": 2796, + "column": 87 } } }, { "type": { - "label": "template", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -362203,28 +366430,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "' primitive type)", - "start": 109367, - "end": 109384, + "start": 110205, + "end": 110206, "loc": { "start": { - "line": 2781, - "column": 83 + "line": 2796, + "column": 87 }, "end": { - "line": 2781, - "column": 100 + "line": 2796, + "column": 88 } } }, { "type": { - "label": "`", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -362232,49 +366457,51 @@ "postfix": false, "binop": null }, - "start": 109384, - "end": 109385, + "start": 110206, + "end": 110207, "loc": { "start": { - "line": 2781, - "column": 100 + "line": 2796, + "column": 88 }, "end": { - "line": 2781, - "column": 101 + "line": 2796, + "column": 89 } } }, { "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": 109385, - "end": 109386, + "start": 110208, + "end": 110209, "loc": { "start": { - "line": 2781, - "column": 101 + "line": 2796, + "column": 90 }, "end": { - "line": 2781, - "column": 102 + "line": 2796, + "column": 91 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -362283,24 +366510,24 @@ "binop": null, "updateContext": null }, - "start": 109386, - "end": 109387, + "value": "this", + "start": 110210, + "end": 110214, "loc": { "start": { - "line": 2781, - "column": 102 + "line": 2796, + "column": 92 }, "end": { - "line": 2781, - "column": 103 + "line": 2796, + "column": 96 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -362310,24 +366537,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 109404, - "end": 109410, + "start": 110214, + "end": 110215, "loc": { "start": { - "line": 2782, - "column": 16 + "line": 2796, + "column": 96 }, "end": { - "line": 2782, - "column": 22 + "line": 2796, + "column": 97 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -362335,20 +366560,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 109411, - "end": 109416, + "value": "_origin", + "start": 110215, + "end": 110222, "loc": { "start": { - "line": 2782, - "column": 23 + "line": 2796, + "column": 97 }, "end": { - "line": 2782, - "column": 28 + "line": 2796, + "column": 104 } } }, @@ -362365,41 +366589,32 @@ "binop": null, "updateContext": null }, - "start": 109416, - "end": 109417, + "start": 110222, + "end": 110223, "loc": { "start": { - "line": 2782, - "column": 28 + "line": 2796, + "column": 104 }, "end": { - "line": 2782, - "column": 29 + "line": 2796, + "column": 105 } } }, { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 109430, - "end": 109431, + "type": "CommentLine", + "value": " MATRIX - optional for batching", + "start": 110237, + "end": 110270, "loc": { "start": { - "line": 2783, + "line": 2798, "column": 12 }, "end": { - "line": 2783, - "column": 13 + "line": 2798, + "column": 45 } } }, @@ -362418,15 +366633,15 @@ "updateContext": null }, "value": "if", - "start": 109444, - "end": 109446, + "start": 110284, + "end": 110286, "loc": { "start": { - "line": 2784, + "line": 2800, "column": 12 }, "end": { - "line": 2784, + "line": 2800, "column": 14 } } @@ -362443,23 +366658,23 @@ "postfix": false, "binop": null }, - "start": 109447, - "end": 109448, + "start": 110287, + "end": 110288, "loc": { "start": { - "line": 2784, + "line": 2800, "column": 15 }, "end": { - "line": 2784, + "line": 2800, "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -362468,76 +366683,77 @@ "postfix": false, "binop": null }, - "start": 109448, - "end": 109449, + "value": "cfg", + "start": 110288, + "end": 110291, "loc": { "start": { - "line": 2784, + "line": 2800, "column": 16 }, "end": { - "line": 2784, - "column": 17 + "line": 2800, + "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": "cfg", - "start": 109449, - "end": 109452, + "start": 110291, + "end": 110292, "loc": { "start": { - "line": 2784, - "column": 17 + "line": 2800, + "column": 19 }, "end": { - "line": 2784, + "line": 2800, "column": 20 } } }, { "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": 109452, - "end": 109453, + "value": "matrix", + "start": 110292, + "end": 110298, "loc": { "start": { - "line": 2784, + "line": 2800, "column": 20 }, "end": { - "line": 2784, - "column": 21 + "line": 2800, + "column": 26 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -362545,44 +366761,41 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 109453, - "end": 109459, + "start": 110298, + "end": 110299, "loc": { "start": { - "line": 2784, - "column": 21 + "line": 2800, + "column": 26 }, "end": { - "line": 2784, + "line": 2800, "column": 27 } } }, { "type": { - "label": "||", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 109460, - "end": 109462, + "start": 110300, + "end": 110301, "loc": { "start": { - "line": 2784, + "line": 2800, "column": 28 }, "end": { - "line": 2784, - "column": 30 + "line": 2800, + "column": 29 } } }, @@ -362599,16 +366812,16 @@ "binop": null }, "value": "cfg", - "start": 109463, - "end": 109466, + "start": 110318, + "end": 110321, "loc": { "start": { - "line": 2784, - "column": 31 + "line": 2801, + "column": 16 }, "end": { - "line": 2784, - "column": 34 + "line": 2801, + "column": 19 } } }, @@ -362625,16 +366838,16 @@ "binop": null, "updateContext": null }, - "start": 109466, - "end": 109467, + "start": 110321, + "end": 110322, "loc": { "start": { - "line": 2784, - "column": 34 + "line": 2801, + "column": 19 }, "end": { - "line": 2784, - "column": 35 + "line": 2801, + "column": 20 } } }, @@ -362650,44 +366863,44 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 109467, - "end": 109475, + "value": "meshMatrix", + "start": 110322, + "end": 110332, "loc": { "start": { - "line": 2784, - "column": 35 + "line": 2801, + "column": 20 }, "end": { - "line": 2784, - "column": 43 + "line": 2801, + "column": 30 } } }, { "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": 109476, - "end": 109478, + "value": "=", + "start": 110333, + "end": 110334, "loc": { "start": { - "line": 2784, - "column": 44 + "line": 2801, + "column": 31 }, "end": { - "line": 2784, - "column": 46 + "line": 2801, + "column": 32 } } }, @@ -362704,16 +366917,16 @@ "binop": null }, "value": "cfg", - "start": 109479, - "end": 109482, + "start": 110335, + "end": 110338, "loc": { "start": { - "line": 2784, - "column": 47 + "line": 2801, + "column": 33 }, "end": { - "line": 2784, - "column": 50 + "line": 2801, + "column": 36 } } }, @@ -362730,16 +366943,16 @@ "binop": null, "updateContext": null }, - "start": 109482, - "end": 109483, + "start": 110338, + "end": 110339, "loc": { "start": { - "line": 2784, - "column": 50 + "line": 2801, + "column": 36 }, "end": { - "line": 2784, - "column": 51 + "line": 2801, + "column": 37 } } }, @@ -362755,23 +366968,23 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 109483, - "end": 109491, + "value": "matrix", + "start": 110339, + "end": 110345, "loc": { "start": { - "line": 2784, - "column": 51 + "line": 2801, + "column": 37 }, "end": { - "line": 2784, - "column": 59 + "line": 2801, + "column": 43 } } }, { "type": { - "label": "||", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -362779,28 +366992,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 109492, - "end": 109494, + "start": 110345, + "end": 110346, "loc": { "start": { - "line": 2784, - "column": 60 + "line": 2801, + "column": 43 }, "end": { - "line": 2784, - "column": 62 + "line": 2801, + "column": 44 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -362808,24 +367020,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 109495, - "end": 109498, + "start": 110359, + "end": 110360, "loc": { "start": { - "line": 2784, - "column": 63 + "line": 2802, + "column": 12 }, "end": { - "line": 2784, - "column": 66 + "line": 2802, + "column": 13 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -362835,48 +367047,24 @@ "binop": null, "updateContext": null }, - "start": 109498, - "end": 109499, - "loc": { - "start": { - "line": 2784, - "column": 66 - }, - "end": { - "line": 2784, - "column": 67 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "scale", - "start": 109499, - "end": 109504, + "value": "else", + "start": 110361, + "end": 110365, "loc": { "start": { - "line": 2784, - "column": 67 + "line": 2802, + "column": 14 }, "end": { - "line": 2784, - "column": 72 + "line": 2802, + "column": 18 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -362884,45 +367072,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 109504, - "end": 109505, - "loc": { - "start": { - "line": 2784, - "column": 72 - }, - "end": { - "line": 2784, - "column": 73 - } - } - }, - { - "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 109506, - "end": 109508, + "value": "if", + "start": 110366, + "end": 110368, "loc": { "start": { - "line": 2784, - "column": 74 + "line": 2802, + "column": 19 }, "end": { - "line": 2784, - "column": 76 + "line": 2802, + "column": 21 } } }, @@ -362938,16 +367101,16 @@ "postfix": false, "binop": null }, - "start": 109509, - "end": 109510, + "start": 110369, + "end": 110370, "loc": { "start": { - "line": 2784, - "column": 77 + "line": 2802, + "column": 22 }, "end": { - "line": 2784, - "column": 78 + "line": 2802, + "column": 23 } } }, @@ -362964,16 +367127,16 @@ "binop": null }, "value": "cfg", - "start": 109510, - "end": 109513, + "start": 110370, + "end": 110373, "loc": { "start": { - "line": 2784, - "column": 78 + "line": 2802, + "column": 23 }, "end": { - "line": 2784, - "column": 81 + "line": 2802, + "column": 26 } } }, @@ -362990,16 +367153,16 @@ "binop": null, "updateContext": null }, - "start": 109513, - "end": 109514, + "start": 110373, + "end": 110374, "loc": { "start": { - "line": 2784, - "column": 81 + "line": 2802, + "column": 26 }, "end": { - "line": 2784, - "column": 82 + "line": 2802, + "column": 27 } } }, @@ -363015,17 +367178,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 109514, - "end": 109533, + "value": "scale", + "start": 110374, + "end": 110379, "loc": { "start": { - "line": 2784, - "column": 82 + "line": 2802, + "column": 27 }, "end": { - "line": 2784, - "column": 101 + "line": 2802, + "column": 32 } } }, @@ -363043,16 +367206,16 @@ "updateContext": null }, "value": "||", - "start": 109534, - "end": 109536, + "start": 110380, + "end": 110382, "loc": { "start": { - "line": 2784, - "column": 102 + "line": 2802, + "column": 33 }, "end": { - "line": 2784, - "column": 104 + "line": 2802, + "column": 35 } } }, @@ -363069,16 +367232,16 @@ "binop": null }, "value": "cfg", - "start": 109537, - "end": 109540, + "start": 110383, + "end": 110386, "loc": { "start": { - "line": 2784, - "column": 105 + "line": 2802, + "column": 36 }, "end": { - "line": 2784, - "column": 108 + "line": 2802, + "column": 39 } } }, @@ -363095,16 +367258,16 @@ "binop": null, "updateContext": null }, - "start": 109540, - "end": 109541, + "start": 110386, + "end": 110387, "loc": { "start": { - "line": 2784, - "column": 108 + "line": 2802, + "column": 39 }, "end": { - "line": 2784, - "column": 109 + "line": 2802, + "column": 40 } } }, @@ -363120,74 +367283,51 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 109541, - "end": 109564, + "value": "rotation", + "start": 110387, + "end": 110395, "loc": { "start": { - "line": 2784, - "column": 109 + "line": 2802, + "column": 40 }, "end": { - "line": 2784, - "column": 132 + "line": 2802, + "column": 48 } } }, { "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": 109564, - "end": 109565, + "value": "||", + "start": 110396, + "end": 110398, "loc": { "start": { - "line": 2784, - "column": 132 + "line": 2802, + "column": 49 }, "end": { - "line": 2784, - "column": 133 + "line": 2802, + "column": 51 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 109565, - "end": 109566, - "loc": { - "start": { - "line": 2784, - "column": 133 - }, - "end": { - "line": 2784, - "column": 134 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -363196,44 +367336,17 @@ "postfix": false, "binop": null }, - "start": 109567, - "end": 109568, - "loc": { - "start": { - "line": 2784, - "column": 135 - }, - "end": { - "line": 2784, - "column": 136 - } - } - }, - { - "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "this", - "start": 109585, - "end": 109589, + "value": "cfg", + "start": 110399, + "end": 110402, "loc": { "start": { - "line": 2785, - "column": 16 + "line": 2802, + "column": 52 }, "end": { - "line": 2785, - "column": 20 + "line": 2802, + "column": 55 } } }, @@ -363250,16 +367363,16 @@ "binop": null, "updateContext": null }, - "start": 109589, - "end": 109590, + "start": 110402, + "end": 110403, "loc": { "start": { - "line": 2785, - "column": 20 + "line": 2802, + "column": 55 }, "end": { - "line": 2785, - "column": 21 + "line": 2802, + "column": 56 } } }, @@ -363275,77 +367388,52 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 109590, - "end": 109595, + "value": "position", + "start": 110403, + "end": 110411, "loc": { "start": { - "line": 2785, - "column": 21 + "line": 2802, + "column": 56 }, "end": { - "line": 2785, - "column": 26 + "line": 2802, + "column": 64 } } }, { "type": { - "label": "(", + "label": "||", "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 109595, - "end": 109596, - "loc": { - "start": { - "line": 2785, - "column": 26 - }, - "end": { - "line": 2785, - "column": 27 - } - } - }, - { - "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'", - "start": 109596, - "end": 109697, + "value": "||", + "start": 110412, + "end": 110414, "loc": { "start": { - "line": 2785, - "column": 27 + "line": 2802, + "column": 65 }, "end": { - "line": 2785, - "column": 128 + "line": 2802, + "column": 67 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -363353,50 +367441,24 @@ "postfix": false, "binop": null }, - "start": 109697, - "end": 109698, - "loc": { - "start": { - "line": 2785, - "column": 128 - }, - "end": { - "line": 2785, - "column": 129 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 109698, - "end": 109699, + "value": "cfg", + "start": 110415, + "end": 110418, "loc": { "start": { - "line": 2785, - "column": 129 + "line": 2802, + "column": 68 }, "end": { - "line": 2785, - "column": 130 + "line": 2802, + "column": 71 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -363406,24 +367468,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 109716, - "end": 109722, + "start": 110418, + "end": 110419, "loc": { "start": { - "line": 2786, - "column": 16 + "line": 2802, + "column": 71 }, "end": { - "line": 2786, - "column": 22 + "line": 2802, + "column": 72 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -363431,54 +367491,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 109723, - "end": 109728, + "value": "quaternion", + "start": 110419, + "end": 110429, "loc": { "start": { - "line": 2786, - "column": 23 + "line": 2802, + "column": 72 }, "end": { - "line": 2786, - "column": 28 + "line": 2802, + "column": 82 } } }, { "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": 109728, - "end": 109729, + "start": 110429, + "end": 110430, "loc": { "start": { - "line": 2786, - "column": 28 + "line": 2802, + "column": 82 }, "end": { - "line": 2786, - "column": 29 + "line": 2802, + "column": 83 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -363486,16 +367544,16 @@ "postfix": false, "binop": null }, - "start": 109742, - "end": 109743, + "start": 110431, + "end": 110432, "loc": { "start": { - "line": 2787, - "column": 12 + "line": 2802, + "column": 84 }, "end": { - "line": 2787, - "column": 13 + "line": 2802, + "column": 85 } } }, @@ -363514,16 +367572,16 @@ "updateContext": null }, "value": "const", - "start": 109757, - "end": 109762, + "start": 110449, + "end": 110454, "loc": { "start": { - "line": 2789, - "column": 12 + "line": 2803, + "column": 16 }, "end": { - "line": 2789, - "column": 17 + "line": 2803, + "column": 21 } } }, @@ -363539,17 +367597,17 @@ "postfix": false, "binop": null }, - "value": "useDTX", - "start": 109763, - "end": 109769, + "value": "scale", + "start": 110455, + "end": 110460, "loc": { "start": { - "line": 2789, - "column": 18 + "line": 2803, + "column": 22 }, "end": { - "line": 2789, - "column": 24 + "line": 2803, + "column": 27 } } }, @@ -363567,102 +367625,22 @@ "updateContext": null }, "value": "=", - "start": 109770, - "end": 109771, - "loc": { - "start": { - "line": 2789, - "column": 25 - }, - "end": { - "line": 2789, - "column": 26 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 109772, - "end": 109773, - "loc": { - "start": { - "line": 2789, - "column": 27 - }, - "end": { - "line": 2789, - "column": 28 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "!", - "start": 109773, - "end": 109774, + "start": 110461, + "end": 110462, "loc": { "start": { - "line": 2789, + "line": 2803, "column": 28 }, "end": { - "line": 2789, - "column": 29 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "!", - "start": 109774, - "end": 109775, - "loc": { - "start": { - "line": 2789, + "line": 2803, "column": 29 - }, - "end": { - "line": 2789, - "column": 30 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -363670,20 +367648,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 109775, - "end": 109779, + "value": "cfg", + "start": 110463, + "end": 110466, "loc": { "start": { - "line": 2789, + "line": 2803, "column": 30 }, "end": { - "line": 2789, - "column": 34 + "line": 2803, + "column": 33 } } }, @@ -363700,16 +367677,16 @@ "binop": null, "updateContext": null }, - "start": 109779, - "end": 109780, + "start": 110466, + "end": 110467, "loc": { "start": { - "line": 2789, - "column": 34 + "line": 2803, + "column": 33 }, "end": { - "line": 2789, - "column": 35 + "line": 2803, + "column": 34 } } }, @@ -363725,23 +367702,23 @@ "postfix": false, "binop": null }, - "value": "_dtxEnabled", - "start": 109780, - "end": 109791, + "value": "scale", + "start": 110467, + "end": 110472, "loc": { "start": { - "line": 2789, - "column": 35 + "line": 2803, + "column": 34 }, "end": { - "line": 2789, - "column": 46 + "line": 2803, + "column": 39 } } }, { "type": { - "label": "&&", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -363749,27 +367726,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": 1, "updateContext": null }, - "value": "&&", - "start": 109792, - "end": 109794, + "value": "||", + "start": 110473, + "end": 110475, "loc": { "start": { - "line": 2789, - "column": 47 + "line": 2803, + "column": 40 }, "end": { - "line": 2789, - "column": 49 + "line": 2803, + "column": 42 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -363778,48 +367755,50 @@ "postfix": false, "binop": null }, - "start": 109795, - "end": 109796, + "value": "DEFAULT_SCALE", + "start": 110476, + "end": 110489, "loc": { "start": { - "line": 2789, - "column": 50 + "line": 2803, + "column": 43 }, "end": { - "line": 2789, - "column": 51 + "line": 2803, + "column": 56 } } }, { "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": "cfg", - "start": 109796, - "end": 109799, + "start": 110489, + "end": 110490, "loc": { "start": { - "line": 2789, - "column": 51 + "line": 2803, + "column": 56 }, "end": { - "line": 2789, - "column": 54 + "line": 2803, + "column": 57 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -363830,16 +367809,17 @@ "binop": null, "updateContext": null }, - "start": 109799, - "end": 109800, + "value": "const", + "start": 110507, + "end": 110512, "loc": { "start": { - "line": 2789, - "column": 54 + "line": 2804, + "column": 16 }, "end": { - "line": 2789, - "column": 55 + "line": 2804, + "column": 21 } } }, @@ -363855,50 +367835,50 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 109800, - "end": 109809, + "value": "position", + "start": 110513, + "end": 110521, "loc": { "start": { - "line": 2789, - "column": 55 + "line": 2804, + "column": 22 }, "end": { - "line": 2789, - "column": 64 + "line": 2804, + "column": 30 } } }, { "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": 109810, - "end": 109813, + "value": "=", + "start": 110522, + "end": 110523, "loc": { "start": { - "line": 2789, - "column": 65 + "line": 2804, + "column": 31 }, "end": { - "line": 2789, - "column": 68 + "line": 2804, + "column": 32 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -363906,47 +367886,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "triangles", - "start": 109814, - "end": 109825, + "value": "cfg", + "start": 110524, + "end": 110527, "loc": { "start": { - "line": 2789, - "column": 69 + "line": 2804, + "column": 33 }, "end": { - "line": 2789, - "column": 80 + "line": 2804, + "column": 36 } } }, { "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": 109846, - "end": 109848, + "start": 110527, + "end": 110528, "loc": { "start": { - "line": 2790, - "column": 20 + "line": 2804, + "column": 36 }, "end": { - "line": 2790, - "column": 22 + "line": 2804, + "column": 37 } } }, @@ -363962,43 +367940,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 109849, - "end": 109852, + "value": "position", + "start": 110528, + "end": 110536, "loc": { "start": { - "line": 2790, - "column": 23 + "line": 2804, + "column": 37 }, "end": { - "line": 2790, - "column": 26 + "line": 2804, + "column": 45 } } }, { "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": 109852, - "end": 109853, + "value": "||", + "start": 110537, + "end": 110539, "loc": { "start": { - "line": 2790, - "column": 26 + "line": 2804, + "column": 46 }, "end": { - "line": 2790, - "column": 27 + "line": 2804, + "column": 48 } } }, @@ -364014,23 +367993,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 109853, - "end": 109862, + "value": "DEFAULT_POSITION", + "start": 110540, + "end": 110556, "loc": { "start": { - "line": 2790, - "column": 27 + "line": 2804, + "column": 49 }, "end": { - "line": 2790, - "column": 36 + "line": 2804, + "column": 65 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -364038,28 +368017,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 109863, - "end": 109866, + "start": 110556, + "end": 110557, "loc": { "start": { - "line": 2790, - "column": 37 + "line": 2804, + "column": 65 }, "end": { - "line": 2790, - "column": 40 + "line": 2804, + "column": 66 } } }, { "type": { - "label": "string", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -364068,44 +368047,42 @@ "binop": null, "updateContext": null }, - "value": "solid", - "start": 109867, - "end": 109874, + "value": "if", + "start": 110574, + "end": 110576, "loc": { "start": { - "line": 2790, - "column": 41 + "line": 2805, + "column": 16 }, "end": { - "line": 2790, - "column": 48 + "line": 2805, + "column": 18 } } }, { "type": { - "label": "||", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 109895, - "end": 109897, + "start": 110577, + "end": 110578, "loc": { "start": { - "line": 2791, - "column": 20 + "line": 2805, + "column": 19 }, "end": { - "line": 2791, - "column": 22 + "line": 2805, + "column": 20 } } }, @@ -364122,16 +368099,16 @@ "binop": null }, "value": "cfg", - "start": 109898, - "end": 109901, + "start": 110578, + "end": 110581, "loc": { "start": { - "line": 2791, - "column": 23 + "line": 2805, + "column": 20 }, "end": { - "line": 2791, - "column": 26 + "line": 2805, + "column": 23 } } }, @@ -364148,16 +368125,16 @@ "binop": null, "updateContext": null }, - "start": 109901, - "end": 109902, + "start": 110581, + "end": 110582, "loc": { "start": { - "line": 2791, - "column": 26 + "line": 2805, + "column": 23 }, "end": { - "line": 2791, - "column": 27 + "line": 2805, + "column": 24 } } }, @@ -364173,104 +368150,75 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 109902, - "end": 109911, + "value": "rotation", + "start": 110582, + "end": 110590, "loc": { "start": { - "line": 2791, - "column": 27 + "line": 2805, + "column": 24 }, "end": { - "line": 2791, - "column": 36 + "line": 2805, + "column": 32 } } }, { "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": 109912, - "end": 109915, + "start": 110590, + "end": 110591, "loc": { "start": { - "line": 2791, - "column": 37 + "line": 2805, + "column": 32 }, "end": { - "line": 2791, - "column": 40 + "line": 2805, + "column": 33 } } }, { "type": { - "label": "string", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "surface", - "start": 109916, - "end": 109925, - "loc": { - "start": { - "line": 2791, - "column": 41 - }, - "end": { - "line": 2791, - "column": 50 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "start": 109925, - "end": 109926, + "start": 110592, + "end": 110593, "loc": { "start": { - "line": 2791, - "column": 50 + "line": 2805, + "column": 34 }, "end": { - "line": 2791, - "column": 51 + "line": 2805, + "column": 35 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -364278,50 +368226,50 @@ "postfix": false, "binop": null }, - "start": 109926, - "end": 109927, + "value": "math", + "start": 110614, + "end": 110618, "loc": { "start": { - "line": 2791, - "column": 51 + "line": 2806, + "column": 20 }, "end": { - "line": 2791, - "column": 52 + "line": 2806, + "column": 24 } } }, { "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": 109944, - "end": 109946, + "start": 110618, + "end": 110619, "loc": { "start": { - "line": 2792, - "column": 16 + "line": 2806, + "column": 24 }, "end": { - "line": 2792, - "column": 18 + "line": 2806, + "column": 25 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -364330,43 +368278,42 @@ "postfix": false, "binop": null }, - "start": 109947, - "end": 109948, + "value": "eulerToQuaternion", + "start": 110619, + "end": 110636, "loc": { "start": { - "line": 2792, - "column": 19 + "line": 2806, + "column": 25 }, "end": { - "line": 2792, - "column": 20 + "line": 2806, + "column": 42 } } }, { "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": 109948, - "end": 109949, + "start": 110636, + "end": 110637, "loc": { "start": { - "line": 2792, - "column": 20 + "line": 2806, + "column": 42 }, "end": { - "line": 2792, - "column": 21 + "line": 2806, + "column": 43 } } }, @@ -364383,16 +368330,16 @@ "binop": null }, "value": "cfg", - "start": 109949, - "end": 109952, + "start": 110637, + "end": 110640, "loc": { "start": { - "line": 2792, - "column": 21 + "line": 2806, + "column": 43 }, "end": { - "line": 2792, - "column": 24 + "line": 2806, + "column": 46 } } }, @@ -364409,16 +368356,16 @@ "binop": null, "updateContext": null }, - "start": 109952, - "end": 109953, + "start": 110640, + "end": 110641, "loc": { "start": { - "line": 2792, - "column": 24 + "line": 2806, + "column": 46 }, "end": { - "line": 2792, - "column": 25 + "line": 2806, + "column": 47 } } }, @@ -364434,50 +368381,51 @@ "postfix": false, "binop": null }, - "value": "textureSetId", - "start": 109953, - "end": 109965, + "value": "rotation", + "start": 110641, + "end": 110649, "loc": { "start": { - "line": 2792, - "column": 25 + "line": 2806, + "column": 47 }, "end": { - "line": 2792, - "column": 37 + "line": 2806, + "column": 55 } } }, { "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": 109965, - "end": 109966, + "start": 110649, + "end": 110650, "loc": { "start": { - "line": 2792, - "column": 37 + "line": 2806, + "column": 55 }, "end": { - "line": 2792, - "column": 38 + "line": 2806, + "column": 56 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -364486,76 +368434,77 @@ "binop": null, "updateContext": null }, - "start": 109966, - "end": 109967, + "value": "XYZ", + "start": 110651, + "end": 110656, "loc": { "start": { - "line": 2792, - "column": 38 + "line": 2806, + "column": 57 }, "end": { - "line": 2792, - "column": 39 + "line": 2806, + "column": 62 } } }, { "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": "cfg", - "start": 109981, - "end": 109984, + "start": 110656, + "end": 110657, "loc": { "start": { - "line": 2794, - "column": 12 + "line": 2806, + "column": 62 }, "end": { - "line": 2794, - "column": 15 + "line": 2806, + "column": 63 } } }, { "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": 109984, - "end": 109985, + "value": "tempQuaternion", + "start": 110658, + "end": 110672, "loc": { "start": { - "line": 2794, - "column": 15 + "line": 2806, + "column": 64 }, "end": { - "line": 2794, - "column": 16 + "line": 2806, + "column": 78 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -364563,44 +368512,42 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 109985, - "end": 109991, + "start": 110672, + "end": 110673, "loc": { "start": { - "line": 2794, - "column": 16 + "line": 2806, + "column": 78 }, "end": { - "line": 2794, - "column": 22 + "line": 2806, + "column": 79 } } }, { "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": 109992, - "end": 109993, + "start": 110673, + "end": 110674, "loc": { "start": { - "line": 2794, - "column": 23 + "line": 2806, + "column": 79 }, "end": { - "line": 2794, - "column": 24 + "line": 2806, + "column": 80 } } }, @@ -364617,16 +368564,16 @@ "binop": null }, "value": "cfg", - "start": 109994, - "end": 109997, + "start": 110695, + "end": 110698, "loc": { "start": { - "line": 2794, - "column": 25 + "line": 2807, + "column": 20 }, "end": { - "line": 2794, - "column": 28 + "line": 2807, + "column": 23 } } }, @@ -364643,16 +368590,16 @@ "binop": null, "updateContext": null }, - "start": 109997, - "end": 109998, + "start": 110698, + "end": 110699, "loc": { "start": { - "line": 2794, - "column": 28 + "line": 2807, + "column": 23 }, "end": { - "line": 2794, - "column": 29 + "line": 2807, + "column": 24 } } }, @@ -364668,43 +368615,44 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 109998, - "end": 110004, + "value": "meshMatrix", + "start": 110699, + "end": 110709, "loc": { "start": { - "line": 2794, - "column": 29 + "line": 2807, + "column": 24 }, "end": { - "line": 2794, - "column": 35 + "line": 2807, + "column": 34 } } }, { "type": { - "label": "?", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 110005, - "end": 110006, + "value": "=", + "start": 110710, + "end": 110711, "loc": { "start": { - "line": 2794, - "column": 36 + "line": 2807, + "column": 35 }, "end": { - "line": 2794, - "column": 37 + "line": 2807, + "column": 36 } } }, @@ -364721,16 +368669,16 @@ "binop": null }, "value": "math", - "start": 110007, - "end": 110011, + "start": 110712, + "end": 110716, "loc": { "start": { - "line": 2794, - "column": 38 + "line": 2807, + "column": 37 }, "end": { - "line": 2794, - "column": 42 + "line": 2807, + "column": 41 } } }, @@ -364747,16 +368695,16 @@ "binop": null, "updateContext": null }, - "start": 110011, - "end": 110012, + "start": 110716, + "end": 110717, "loc": { "start": { - "line": 2794, - "column": 42 + "line": 2807, + "column": 41 }, "end": { - "line": 2794, - "column": 43 + "line": 2807, + "column": 42 } } }, @@ -364772,17 +368720,17 @@ "postfix": false, "binop": null }, - "value": "addVec3", - "start": 110012, - "end": 110019, + "value": "composeMat4", + "start": 110717, + "end": 110728, "loc": { "start": { - "line": 2794, - "column": 43 + "line": 2807, + "column": 42 }, "end": { - "line": 2794, - "column": 50 + "line": 2807, + "column": 53 } } }, @@ -364798,23 +368746,22 @@ "postfix": false, "binop": null }, - "start": 110019, - "end": 110020, + "start": 110728, + "end": 110729, "loc": { "start": { - "line": 2794, - "column": 50 + "line": 2807, + "column": 53 }, "end": { - "line": 2794, - "column": 51 + "line": 2807, + "column": 54 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -364822,27 +368769,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 110020, - "end": 110024, + "value": "position", + "start": 110729, + "end": 110737, "loc": { "start": { - "line": 2794, - "column": 51 + "line": 2807, + "column": 54 }, "end": { - "line": 2794, - "column": 55 + "line": 2807, + "column": 62 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -364852,16 +368798,16 @@ "binop": null, "updateContext": null }, - "start": 110024, - "end": 110025, + "start": 110737, + "end": 110738, "loc": { "start": { - "line": 2794, - "column": 55 + "line": 2807, + "column": 62 }, "end": { - "line": 2794, - "column": 56 + "line": 2807, + "column": 63 } } }, @@ -364877,17 +368823,17 @@ "postfix": false, "binop": null }, - "value": "_origin", - "start": 110025, - "end": 110032, + "value": "tempQuaternion", + "start": 110739, + "end": 110753, "loc": { "start": { - "line": 2794, - "column": 56 + "line": 2807, + "column": 64 }, "end": { - "line": 2794, - "column": 63 + "line": 2807, + "column": 78 } } }, @@ -364904,16 +368850,16 @@ "binop": null, "updateContext": null }, - "start": 110032, - "end": 110033, + "start": 110753, + "end": 110754, "loc": { "start": { - "line": 2794, - "column": 63 + "line": 2807, + "column": 78 }, "end": { - "line": 2794, - "column": 64 + "line": 2807, + "column": 79 } } }, @@ -364929,24 +368875,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 110034, - "end": 110037, + "value": "scale", + "start": 110755, + "end": 110760, "loc": { "start": { - "line": 2794, - "column": 65 + "line": 2807, + "column": 80 }, "end": { - "line": 2794, - "column": 68 + "line": 2807, + "column": 85 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -364956,16 +368902,16 @@ "binop": null, "updateContext": null }, - "start": 110037, - "end": 110038, + "start": 110760, + "end": 110761, "loc": { "start": { - "line": 2794, - "column": 68 + "line": 2807, + "column": 85 }, "end": { - "line": 2794, - "column": 69 + "line": 2807, + "column": 86 } } }, @@ -364981,24 +368927,24 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 110038, - "end": 110044, + "value": "math", + "start": 110762, + "end": 110766, "loc": { "start": { - "line": 2794, - "column": 69 + "line": 2807, + "column": 87 }, "end": { - "line": 2794, - "column": 75 + "line": 2807, + "column": 91 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -365008,16 +368954,16 @@ "binop": null, "updateContext": null }, - "start": 110044, - "end": 110045, + "start": 110766, + "end": 110767, "loc": { "start": { - "line": 2794, - "column": 75 + "line": 2807, + "column": 91 }, "end": { - "line": 2794, - "column": 76 + "line": 2807, + "column": 92 } } }, @@ -365033,51 +368979,50 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 110046, - "end": 110050, + "value": "mat4", + "start": 110767, + "end": 110771, "loc": { "start": { - "line": 2794, - "column": 77 + "line": 2807, + "column": 92 }, "end": { - "line": 2794, - "column": 81 + "line": 2807, + "column": 96 } } }, { "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": 110050, - "end": 110051, + "start": 110771, + "end": 110772, "loc": { "start": { - "line": 2794, - "column": 81 + "line": 2807, + "column": 96 }, "end": { - "line": 2794, - "column": 82 + "line": 2807, + "column": 97 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -365085,25 +369030,24 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 110051, - "end": 110055, + "start": 110772, + "end": 110773, "loc": { "start": { - "line": 2794, - "column": 82 + "line": 2807, + "column": 97 }, "end": { - "line": 2794, - "column": 86 + "line": 2807, + "column": 98 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -365111,47 +369055,48 @@ "postfix": false, "binop": null }, - "start": 110055, - "end": 110056, + "start": 110773, + "end": 110774, "loc": { "start": { - "line": 2794, - "column": 86 + "line": 2807, + "column": 98 }, "end": { - "line": 2794, - "column": 87 + "line": 2807, + "column": 99 } } }, { "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": 110056, - "end": 110057, + "start": 110774, + "end": 110775, "loc": { "start": { - "line": 2794, - "column": 87 + "line": 2807, + "column": 99 }, "end": { - "line": 2794, - "column": 88 + "line": 2807, + "column": 100 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -365161,22 +369106,23 @@ "postfix": false, "binop": null }, - "start": 110057, - "end": 110058, + "start": 110792, + "end": 110793, "loc": { "start": { - "line": 2794, - "column": 88 + "line": 2808, + "column": 16 }, "end": { - "line": 2794, - "column": 89 + "line": 2808, + "column": 17 } } }, { "type": { - "label": ":", + "label": "else", + "keyword": "else", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -365187,173 +369133,154 @@ "binop": null, "updateContext": null }, - "start": 110059, - "end": 110060, + "value": "else", + "start": 110794, + "end": 110798, "loc": { "start": { - "line": 2794, - "column": 90 + "line": 2808, + "column": 18 }, "end": { - "line": 2794, - "column": 91 + "line": 2808, + "column": 22 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 110061, - "end": 110065, + "start": 110799, + "end": 110800, "loc": { "start": { - "line": 2794, - "column": 92 + "line": 2808, + "column": 23 }, "end": { - "line": 2794, - "column": 96 + "line": 2808, + "column": 24 } } }, { "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": 110065, - "end": 110066, + "value": "cfg", + "start": 110821, + "end": 110824, "loc": { "start": { - "line": 2794, - "column": 96 + "line": 2809, + "column": 20 }, "end": { - "line": 2794, - "column": 97 + "line": 2809, + "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": "_origin", - "start": 110066, - "end": 110073, + "start": 110824, + "end": 110825, "loc": { "start": { - "line": 2794, - "column": 97 + "line": 2809, + "column": 23 }, "end": { - "line": 2794, - "column": 104 + "line": 2809, + "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": 110073, - "end": 110074, - "loc": { - "start": { - "line": 2794, - "column": 104 - }, - "end": { - "line": 2794, - "column": 105 - } - } - }, - { - "type": "CommentLine", - "value": " MATRIX - optional for batching", - "start": 110088, - "end": 110121, + "value": "meshMatrix", + "start": 110825, + "end": 110835, "loc": { "start": { - "line": 2796, - "column": 12 + "line": 2809, + "column": 24 }, "end": { - "line": 2796, - "column": 45 + "line": 2809, + "column": 34 } } }, { "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": 110135, - "end": 110137, + "value": "=", + "start": 110836, + "end": 110837, "loc": { "start": { - "line": 2798, - "column": 12 + "line": 2809, + "column": 35 }, "end": { - "line": 2798, - "column": 14 + "line": 2809, + "column": 36 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -365362,75 +369289,76 @@ "postfix": false, "binop": null }, - "start": 110138, - "end": 110139, + "value": "math", + "start": 110838, + "end": 110842, "loc": { "start": { - "line": 2798, - "column": 15 + "line": 2809, + "column": 37 }, "end": { - "line": 2798, - "column": 16 + "line": 2809, + "column": 41 } } }, { "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": "cfg", - "start": 110139, - "end": 110142, + "start": 110842, + "end": 110843, "loc": { "start": { - "line": 2798, - "column": 16 + "line": 2809, + "column": 41 }, "end": { - "line": 2798, - "column": 19 + "line": 2809, + "column": 42 } } }, { "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": 110142, - "end": 110143, + "value": "composeMat4", + "start": 110843, + "end": 110854, "loc": { "start": { - "line": 2798, - "column": 19 + "line": 2809, + "column": 42 }, "end": { - "line": 2798, - "column": 20 + "line": 2809, + "column": 53 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -365439,25 +369367,24 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 110143, - "end": 110149, + "start": 110854, + "end": 110855, "loc": { "start": { - "line": 2798, - "column": 20 + "line": 2809, + "column": 53 }, "end": { - "line": 2798, - "column": 26 + "line": 2809, + "column": 54 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -365465,41 +369392,43 @@ "postfix": false, "binop": null }, - "start": 110149, - "end": 110150, + "value": "position", + "start": 110855, + "end": 110863, "loc": { "start": { - "line": 2798, - "column": 26 + "line": 2809, + "column": 54 }, "end": { - "line": 2798, - "column": 27 + "line": 2809, + "column": 62 } } }, { "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": 110151, - "end": 110152, + "start": 110863, + "end": 110864, "loc": { "start": { - "line": 2798, - "column": 28 + "line": 2809, + "column": 62 }, "end": { - "line": 2798, - "column": 29 + "line": 2809, + "column": 63 } } }, @@ -365516,16 +369445,16 @@ "binop": null }, "value": "cfg", - "start": 110169, - "end": 110172, + "start": 110865, + "end": 110868, "loc": { "start": { - "line": 2799, - "column": 16 + "line": 2809, + "column": 64 }, "end": { - "line": 2799, - "column": 19 + "line": 2809, + "column": 67 } } }, @@ -365542,16 +369471,16 @@ "binop": null, "updateContext": null }, - "start": 110172, - "end": 110173, + "start": 110868, + "end": 110869, "loc": { "start": { - "line": 2799, - "column": 19 + "line": 2809, + "column": 67 }, "end": { - "line": 2799, - "column": 20 + "line": 2809, + "column": 68 } } }, @@ -365567,44 +369496,44 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 110173, - "end": 110183, + "value": "quaternion", + "start": 110869, + "end": 110879, "loc": { "start": { - "line": 2799, - "column": 20 + "line": 2809, + "column": 68 }, "end": { - "line": 2799, - "column": 30 + "line": 2809, + "column": 78 } } }, { "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": 110184, - "end": 110185, + "value": "||", + "start": 110880, + "end": 110882, "loc": { "start": { - "line": 2799, - "column": 31 + "line": 2809, + "column": 79 }, "end": { - "line": 2799, - "column": 32 + "line": 2809, + "column": 81 } } }, @@ -365620,24 +369549,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 110186, - "end": 110189, + "value": "DEFAULT_QUATERNION", + "start": 110883, + "end": 110901, "loc": { "start": { - "line": 2799, - "column": 33 + "line": 2809, + "column": 82 }, "end": { - "line": 2799, - "column": 36 + "line": 2809, + "column": 100 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -365647,16 +369576,16 @@ "binop": null, "updateContext": null }, - "start": 110189, - "end": 110190, + "start": 110901, + "end": 110902, "loc": { "start": { - "line": 2799, - "column": 36 + "line": 2809, + "column": 100 }, "end": { - "line": 2799, - "column": 37 + "line": 2809, + "column": 101 } } }, @@ -365672,23 +369601,23 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 110190, - "end": 110196, + "value": "scale", + "start": 110903, + "end": 110908, "loc": { "start": { - "line": 2799, - "column": 37 + "line": 2809, + "column": 102 }, "end": { - "line": 2799, - "column": 43 + "line": 2809, + "column": 107 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -365699,24 +369628,24 @@ "binop": null, "updateContext": null }, - "start": 110196, - "end": 110197, + "start": 110908, + "end": 110909, "loc": { "start": { - "line": 2799, - "column": 43 + "line": 2809, + "column": 107 }, "end": { - "line": 2799, - "column": 44 + "line": 2809, + "column": 108 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -365724,24 +369653,24 @@ "postfix": false, "binop": null }, - "start": 110210, - "end": 110211, + "value": "math", + "start": 110910, + "end": 110914, "loc": { "start": { - "line": 2800, - "column": 12 + "line": 2809, + "column": 109 }, "end": { - "line": 2800, - "column": 13 + "line": 2809, + "column": 113 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -365751,45 +369680,42 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 110212, - "end": 110216, + "start": 110914, + "end": 110915, "loc": { "start": { - "line": 2800, - "column": 14 + "line": 2809, + "column": 113 }, "end": { - "line": 2800, - "column": 18 + "line": 2809, + "column": 114 } } }, { "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": 110217, - "end": 110219, + "value": "mat4", + "start": 110915, + "end": 110919, "loc": { "start": { - "line": 2800, - "column": 19 + "line": 2809, + "column": 114 }, "end": { - "line": 2800, - "column": 21 + "line": 2809, + "column": 118 } } }, @@ -365805,24 +369731,24 @@ "postfix": false, "binop": null }, - "start": 110220, - "end": 110221, + "start": 110919, + "end": 110920, "loc": { "start": { - "line": 2800, - "column": 22 + "line": 2809, + "column": 118 }, "end": { - "line": 2800, - "column": 23 + "line": 2809, + "column": 119 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -365830,23 +369756,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 110221, - "end": 110224, + "start": 110920, + "end": 110921, "loc": { "start": { - "line": 2800, - "column": 23 + "line": 2809, + "column": 119 }, "end": { - "line": 2800, - "column": 26 + "line": 2809, + "column": 120 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -365854,80 +369779,77 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 110224, - "end": 110225, + "start": 110921, + "end": 110922, "loc": { "start": { - "line": 2800, - "column": 26 + "line": 2809, + "column": 120 }, "end": { - "line": 2800, - "column": 27 + "line": 2809, + "column": 121 } } }, { "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": "scale", - "start": 110225, - "end": 110230, + "start": 110922, + "end": 110923, "loc": { "start": { - "line": 2800, - "column": 27 + "line": 2809, + "column": 121 }, "end": { - "line": 2800, - "column": 32 + "line": 2809, + "column": 122 } } }, { "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": 110231, - "end": 110233, + "start": 110940, + "end": 110941, "loc": { "start": { - "line": 2800, - "column": 33 + "line": 2810, + "column": 16 }, "end": { - "line": 2800, - "column": 35 + "line": 2810, + "column": 17 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -365935,23 +369857,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 110234, - "end": 110237, + "start": 110954, + "end": 110955, "loc": { "start": { - "line": 2800, - "column": 36 + "line": 2811, + "column": 12 }, "end": { - "line": 2800, - "column": 39 + "line": 2811, + "column": 13 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -365962,16 +369884,42 @@ "binop": null, "updateContext": null }, - "start": 110237, - "end": 110238, + "value": "if", + "start": 110969, + "end": 110971, "loc": { "start": { - "line": 2800, - "column": 39 + "line": 2813, + "column": 12 }, "end": { - "line": 2800, - "column": 40 + "line": 2813, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 110972, + "end": 110973, + "loc": { + "start": { + "line": 2813, + "column": 15 + }, + "end": { + "line": 2813, + "column": 16 } } }, @@ -365987,44 +369935,43 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 110238, - "end": 110246, + "value": "cfg", + "start": 110973, + "end": 110976, "loc": { "start": { - "line": 2800, - "column": 40 + "line": 2813, + "column": 16 }, "end": { - "line": 2800, - "column": 48 + "line": 2813, + "column": 19 } } }, { "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": 110247, - "end": 110249, + "start": 110976, + "end": 110977, "loc": { "start": { - "line": 2800, - "column": 49 + "line": 2813, + "column": 19 }, "end": { - "line": 2800, - "column": 51 + "line": 2813, + "column": 20 } } }, @@ -366040,23 +369987,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 110250, - "end": 110253, + "value": "positionsDecodeBoundary", + "start": 110977, + "end": 111000, "loc": { "start": { - "line": 2800, - "column": 52 + "line": 2813, + "column": 20 }, "end": { - "line": 2800, - "column": 55 + "line": 2813, + "column": 43 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -366064,19 +370011,43 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null + }, + "start": 111000, + "end": 111001, + "loc": { + "start": { + "line": 2813, + "column": 43 + }, + "end": { + "line": 2813, + "column": 44 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null }, - "start": 110253, - "end": 110254, + "start": 111002, + "end": 111003, "loc": { "start": { - "line": 2800, - "column": 55 + "line": 2813, + "column": 45 }, "end": { - "line": 2800, - "column": 56 + "line": 2813, + "column": 46 } } }, @@ -366092,23 +370063,23 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 110254, - "end": 110262, + "value": "cfg", + "start": 111020, + "end": 111023, "loc": { "start": { - "line": 2800, - "column": 56 + "line": 2814, + "column": 16 }, "end": { - "line": 2800, - "column": 64 + "line": 2814, + "column": 19 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -366116,25 +370087,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 110262, - "end": 110263, + "start": 111023, + "end": 111024, "loc": { "start": { - "line": 2800, - "column": 64 + "line": 2814, + "column": 19 }, "end": { - "line": 2800, - "column": 65 + "line": 2814, + "column": 20 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -366143,44 +370115,44 @@ "postfix": false, "binop": null }, - "start": 110264, - "end": 110265, + "value": "positionsDecodeMatrix", + "start": 111024, + "end": 111045, "loc": { "start": { - "line": 2800, - "column": 66 + "line": 2814, + "column": 20 }, "end": { - "line": 2800, - "column": 67 + "line": 2814, + "column": 41 } } }, { "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": 110282, - "end": 110287, + "value": "=", + "start": 111046, + "end": 111047, "loc": { "start": { - "line": 2801, - "column": 16 + "line": 2814, + "column": 42 }, "end": { - "line": 2801, - "column": 21 + "line": 2814, + "column": 43 } } }, @@ -366196,44 +370168,42 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 110288, - "end": 110293, + "value": "createPositionsDecodeMatrix", + "start": 111048, + "end": 111075, "loc": { "start": { - "line": 2801, - "column": 22 + "line": 2814, + "column": 44 }, "end": { - "line": 2801, - "column": 27 + "line": 2814, + "column": 71 } } }, { "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": 110294, - "end": 110295, + "start": 111075, + "end": 111076, "loc": { "start": { - "line": 2801, - "column": 28 + "line": 2814, + "column": 71 }, "end": { - "line": 2801, - "column": 29 + "line": 2814, + "column": 72 } } }, @@ -366250,16 +370220,16 @@ "binop": null }, "value": "cfg", - "start": 110296, - "end": 110299, + "start": 111076, + "end": 111079, "loc": { "start": { - "line": 2801, - "column": 30 + "line": 2814, + "column": 72 }, "end": { - "line": 2801, - "column": 33 + "line": 2814, + "column": 75 } } }, @@ -366276,16 +370246,16 @@ "binop": null, "updateContext": null }, - "start": 110299, - "end": 110300, + "start": 111079, + "end": 111080, "loc": { "start": { - "line": 2801, - "column": 33 + "line": 2814, + "column": 75 }, "end": { - "line": 2801, - "column": 34 + "line": 2814, + "column": 76 } } }, @@ -366301,23 +370271,23 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 110300, - "end": 110305, + "value": "positionsDecodeBoundary", + "start": 111080, + "end": 111103, "loc": { "start": { - "line": 2801, - "column": 34 + "line": 2814, + "column": 76 }, "end": { - "line": 2801, - "column": 39 + "line": 2814, + "column": 99 } } }, { "type": { - "label": "||", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -366325,20 +370295,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 110306, - "end": 110308, + "start": 111103, + "end": 111104, "loc": { "start": { - "line": 2801, - "column": 40 + "line": 2814, + "column": 99 }, "end": { - "line": 2801, - "column": 42 + "line": 2814, + "column": 100 } } }, @@ -366354,24 +370323,24 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_SCALE", - "start": 110309, - "end": 110322, + "value": "math", + "start": 111105, + "end": 111109, "loc": { "start": { - "line": 2801, - "column": 43 + "line": 2814, + "column": 101 }, "end": { - "line": 2801, - "column": 56 + "line": 2814, + "column": 105 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -366381,51 +370350,49 @@ "binop": null, "updateContext": null }, - "start": 110322, - "end": 110323, + "start": 111109, + "end": 111110, "loc": { "start": { - "line": 2801, - "column": 56 + "line": 2814, + "column": 105 }, "end": { - "line": 2801, - "column": 57 + "line": 2814, + "column": 106 } } }, { "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": 110340, - "end": 110345, + "value": "mat4", + "start": 111110, + "end": 111114, "loc": { "start": { - "line": 2802, - "column": 16 + "line": 2814, + "column": 106 }, "end": { - "line": 2802, - "column": 21 + "line": 2814, + "column": 110 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -366434,52 +370401,49 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 110346, - "end": 110354, + "start": 111114, + "end": 111115, "loc": { "start": { - "line": 2802, - "column": 22 + "line": 2814, + "column": 110 }, "end": { - "line": 2802, - "column": 30 + "line": 2814, + "column": 111 } } }, { "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": 110355, - "end": 110356, + "start": 111115, + "end": 111116, "loc": { "start": { - "line": 2802, - "column": 31 + "line": 2814, + "column": 111 }, "end": { - "line": 2802, - "column": 32 + "line": 2814, + "column": 112 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -366487,24 +370451,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 110357, - "end": 110360, + "start": 111116, + "end": 111117, "loc": { "start": { - "line": 2802, - "column": 33 + "line": 2814, + "column": 112 }, "end": { - "line": 2802, - "column": 36 + "line": 2814, + "column": 113 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -366514,24 +370477,24 @@ "binop": null, "updateContext": null }, - "start": 110360, - "end": 110361, + "start": 111117, + "end": 111118, "loc": { "start": { - "line": 2802, - "column": 36 + "line": 2814, + "column": 113 }, "end": { - "line": 2802, - "column": 37 + "line": 2814, + "column": 114 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -366539,51 +370502,51 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 110361, - "end": 110369, + "start": 111131, + "end": 111132, "loc": { "start": { - "line": 2802, - "column": 37 + "line": 2815, + "column": 12 }, "end": { - "line": 2802, - "column": 45 + "line": 2815, + "column": 13 } } }, { "type": { - "label": "||", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 110370, - "end": 110372, + "value": "if", + "start": 111146, + "end": 111148, "loc": { "start": { - "line": 2802, - "column": 46 + "line": 2817, + "column": 12 }, "end": { - "line": 2802, - "column": 48 + "line": 2817, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -366592,50 +370555,48 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_POSITION", - "start": 110373, - "end": 110389, + "start": 111149, + "end": 111150, "loc": { "start": { - "line": 2802, - "column": 49 + "line": 2817, + "column": 15 }, "end": { - "line": 2802, - "column": 65 + "line": 2817, + "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": 110389, - "end": 110390, + "value": "useDTX", + "start": 111150, + "end": 111156, "loc": { "start": { - "line": 2802, - "column": 65 + "line": 2817, + "column": 16 }, "end": { - "line": 2802, - "column": 66 + "line": 2817, + "column": 22 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -366643,27 +370604,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 110407, - "end": 110412, + "start": 111156, + "end": 111157, "loc": { "start": { - "line": 2803, - "column": 16 + "line": 2817, + "column": 22 }, "end": { - "line": 2803, - "column": 21 + "line": 2817, + "column": 23 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -366672,44 +370631,32 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 110413, - "end": 110421, + "start": 111158, + "end": 111159, "loc": { "start": { - "line": 2803, - "column": 22 + "line": 2817, + "column": 24 }, "end": { - "line": 2803, - "column": 30 + "line": 2817, + "column": 25 } } }, { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 110422, - "end": 110423, + "type": "CommentLine", + "value": " DTX", + "start": 111177, + "end": 111183, "loc": { "start": { - "line": 2803, - "column": 31 + "line": 2819, + "column": 16 }, "end": { - "line": 2803, - "column": 32 + "line": 2819, + "column": 22 } } }, @@ -366726,16 +370673,16 @@ "binop": null }, "value": "cfg", - "start": 110424, - "end": 110427, + "start": 111201, + "end": 111204, "loc": { "start": { - "line": 2803, - "column": 33 + "line": 2821, + "column": 16 }, "end": { - "line": 2803, - "column": 36 + "line": 2821, + "column": 19 } } }, @@ -366752,16 +370699,16 @@ "binop": null, "updateContext": null }, - "start": 110427, - "end": 110428, + "start": 111204, + "end": 111205, "loc": { "start": { - "line": 2803, - "column": 36 + "line": 2821, + "column": 19 }, "end": { - "line": 2803, - "column": 37 + "line": 2821, + "column": 20 } } }, @@ -366777,44 +370724,44 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 110428, - "end": 110436, + "value": "type", + "start": 111205, + "end": 111209, "loc": { "start": { - "line": 2803, - "column": 37 + "line": 2821, + "column": 20 }, "end": { - "line": 2803, - "column": 45 + "line": 2821, + "column": 24 } } }, { "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": 110437, - "end": 110439, + "value": "=", + "start": 111210, + "end": 111211, "loc": { "start": { - "line": 2803, - "column": 46 + "line": 2821, + "column": 25 }, "end": { - "line": 2803, - "column": 48 + "line": 2821, + "column": 26 } } }, @@ -366830,17 +370777,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_ROTATION", - "start": 110440, - "end": 110456, + "value": "DTX", + "start": 111212, + "end": 111215, "loc": { "start": { - "line": 2803, - "column": 49 + "line": 2821, + "column": 27 }, "end": { - "line": 2803, - "column": 65 + "line": 2821, + "column": 30 } } }, @@ -366857,16 +370804,32 @@ "binop": null, "updateContext": null }, - "start": 110456, - "end": 110457, + "start": 111215, + "end": 111216, "loc": { "start": { - "line": 2803, - "column": 65 + "line": 2821, + "column": 30 }, "end": { - "line": 2803, - "column": 66 + "line": 2821, + "column": 31 + } + } + }, + { + "type": "CommentLine", + "value": " NPR", + "start": 111234, + "end": 111240, + "loc": { + "start": { + "line": 2823, + "column": 16 + }, + "end": { + "line": 2823, + "column": 22 } } }, @@ -366882,17 +370845,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 110474, - "end": 110478, + "value": "cfg", + "start": 111258, + "end": 111261, "loc": { "start": { - "line": 2804, + "line": 2825, "column": 16 }, "end": { - "line": 2804, - "column": 20 + "line": 2825, + "column": 19 } } }, @@ -366909,16 +370872,16 @@ "binop": null, "updateContext": null }, - "start": 110478, - "end": 110479, + "start": 111261, + "end": 111262, "loc": { "start": { - "line": 2804, - "column": 20 + "line": 2825, + "column": 19 }, "end": { - "line": 2804, - "column": 21 + "line": 2825, + "column": 20 } } }, @@ -366934,49 +370897,51 @@ "postfix": false, "binop": null }, - "value": "eulerToQuaternion", - "start": 110479, - "end": 110496, + "value": "color", + "start": 111262, + "end": 111267, "loc": { "start": { - "line": 2804, - "column": 21 + "line": 2825, + "column": 20 }, "end": { - "line": 2804, - "column": 38 + "line": 2825, + "column": 25 } } }, { "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": 110496, - "end": 110497, + "value": "=", + "start": 111268, + "end": 111269, "loc": { "start": { - "line": 2804, - "column": 38 + "line": 2825, + "column": 26 }, "end": { - "line": 2804, - "column": 39 + "line": 2825, + "column": 27 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -366985,49 +370950,22 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 110497, - "end": 110505, - "loc": { - "start": { - "line": 2804, - "column": 39 - }, - "end": { - "line": 2804, - "column": 47 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 110505, - "end": 110506, + "start": 111270, + "end": 111271, "loc": { "start": { - "line": 2804, - "column": 47 + "line": 2825, + "column": 28 }, "end": { - "line": 2804, - "column": 48 + "line": 2825, + "column": 29 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -367035,27 +370973,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "XYZ", - "start": 110507, - "end": 110512, + "value": "cfg", + "start": 111271, + "end": 111274, "loc": { "start": { - "line": 2804, - "column": 49 + "line": 2825, + "column": 29 }, "end": { - "line": 2804, - "column": 54 + "line": 2825, + "column": 32 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -367065,16 +371002,16 @@ "binop": null, "updateContext": null }, - "start": 110512, - "end": 110513, + "start": 111274, + "end": 111275, "loc": { "start": { - "line": 2804, - "column": 54 + "line": 2825, + "column": 32 }, "end": { - "line": 2804, - "column": 55 + "line": 2825, + "column": 33 } } }, @@ -367090,17 +371027,17 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_QUATERNION", - "start": 110514, - "end": 110532, + "value": "color", + "start": 111275, + "end": 111280, "loc": { "start": { - "line": 2804, - "column": 56 + "line": 2825, + "column": 33 }, "end": { - "line": 2804, - "column": 74 + "line": 2825, + "column": 38 } } }, @@ -367116,22 +371053,22 @@ "postfix": false, "binop": null }, - "start": 110532, - "end": 110533, + "start": 111280, + "end": 111281, "loc": { "start": { - "line": 2804, - "column": 74 + "line": 2825, + "column": 38 }, "end": { - "line": 2804, - "column": 75 + "line": 2825, + "column": 39 } } }, { "type": { - "label": ";", + "label": "?", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -367142,75 +371079,77 @@ "binop": null, "updateContext": null }, - "start": 110533, - "end": 110534, + "start": 111282, + "end": 111283, "loc": { "start": { - "line": 2804, - "column": 75 + "line": 2825, + "column": 40 }, "end": { - "line": 2804, - "column": 76 + "line": 2825, + "column": 41 } } }, { "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": "cfg", - "start": 110551, - "end": 110554, + "value": "new", + "start": 111284, + "end": 111287, "loc": { "start": { - "line": 2805, - "column": 16 + "line": 2825, + "column": 42 }, "end": { - "line": 2805, - "column": 19 + "line": 2825, + "column": 45 } } }, { "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": 110554, - "end": 110555, + "value": "Uint8Array", + "start": 111288, + "end": 111298, "loc": { "start": { - "line": 2805, - "column": 19 + "line": 2825, + "column": 46 }, "end": { - "line": 2805, - "column": 20 + "line": 2825, + "column": 56 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -367219,44 +371158,42 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 110555, - "end": 110565, + "start": 111298, + "end": 111299, "loc": { "start": { - "line": 2805, - "column": 20 + "line": 2825, + "column": 56 }, "end": { - "line": 2805, - "column": 30 + "line": 2825, + "column": 57 } } }, { "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": 110566, - "end": 110567, + "start": 111299, + "end": 111300, "loc": { "start": { - "line": 2805, - "column": 31 + "line": 2825, + "column": 57 }, "end": { - "line": 2805, - "column": 32 + "line": 2825, + "column": 58 } } }, @@ -367272,17 +371209,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 110568, - "end": 110572, + "value": "Math", + "start": 111300, + "end": 111304, "loc": { "start": { - "line": 2805, - "column": 33 + "line": 2825, + "column": 58 }, "end": { - "line": 2805, - "column": 37 + "line": 2825, + "column": 62 } } }, @@ -367299,16 +371236,16 @@ "binop": null, "updateContext": null }, - "start": 110572, - "end": 110573, + "start": 111304, + "end": 111305, "loc": { "start": { - "line": 2805, - "column": 37 + "line": 2825, + "column": 62 }, "end": { - "line": 2805, - "column": 38 + "line": 2825, + "column": 63 } } }, @@ -367324,17 +371261,17 @@ "postfix": false, "binop": null }, - "value": "composeMat4", - "start": 110573, - "end": 110584, + "value": "floor", + "start": 111305, + "end": 111310, "loc": { "start": { - "line": 2805, - "column": 38 + "line": 2825, + "column": 63 }, "end": { - "line": 2805, - "column": 49 + "line": 2825, + "column": 68 } } }, @@ -367350,16 +371287,16 @@ "postfix": false, "binop": null }, - "start": 110584, - "end": 110585, + "start": 111310, + "end": 111311, "loc": { "start": { - "line": 2805, - "column": 49 + "line": 2825, + "column": 68 }, "end": { - "line": 2805, - "column": 50 + "line": 2825, + "column": 69 } } }, @@ -367375,24 +371312,24 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 110585, - "end": 110593, + "value": "cfg", + "start": 111311, + "end": 111314, "loc": { "start": { - "line": 2805, - "column": 50 + "line": 2825, + "column": 69 }, "end": { - "line": 2805, - "column": 58 + "line": 2825, + "column": 72 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -367402,16 +371339,16 @@ "binop": null, "updateContext": null }, - "start": 110593, - "end": 110594, + "start": 111314, + "end": 111315, "loc": { "start": { - "line": 2805, - "column": 58 + "line": 2825, + "column": 72 }, "end": { - "line": 2805, - "column": 59 + "line": 2825, + "column": 73 } } }, @@ -367427,25 +371364,25 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_QUATERNION", - "start": 110595, - "end": 110613, + "value": "color", + "start": 111315, + "end": 111320, "loc": { "start": { - "line": 2805, - "column": 60 + "line": 2825, + "column": 73 }, "end": { - "line": 2805, + "line": 2825, "column": 78 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -367454,22 +371391,22 @@ "binop": null, "updateContext": null }, - "start": 110613, - "end": 110614, + "start": 111320, + "end": 111321, "loc": { "start": { - "line": 2805, + "line": 2825, "column": 78 }, "end": { - "line": 2805, + "line": 2825, "column": 79 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -367477,26 +371414,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scale", - "start": 110615, - "end": 110620, + "value": 0, + "start": 111321, + "end": 111322, "loc": { "start": { - "line": 2805, - "column": 80 + "line": 2825, + "column": 79 }, "end": { - "line": 2805, - "column": 85 + "line": 2825, + "column": 80 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -367506,50 +371444,51 @@ "binop": null, "updateContext": null }, - "start": 110620, - "end": 110621, + "start": 111322, + "end": 111323, "loc": { "start": { - "line": 2805, - "column": 85 + "line": 2825, + "column": 80 }, "end": { - "line": 2805, - "column": 86 + "line": 2825, + "column": 81 } } }, { "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": 10, + "updateContext": null }, - "value": "math", - "start": 110622, - "end": 110626, + "value": "*", + "start": 111324, + "end": 111325, "loc": { "start": { - "line": 2805, - "column": 87 + "line": 2825, + "column": 82 }, "end": { - "line": 2805, - "column": 91 + "line": 2825, + "column": 83 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -367558,24 +371497,25 @@ "binop": null, "updateContext": null }, - "start": 110626, - "end": 110627, + "value": 255, + "start": 111326, + "end": 111329, "loc": { "start": { - "line": 2805, - "column": 91 + "line": 2825, + "column": 84 }, "end": { - "line": 2805, - "column": 92 + "line": 2825, + "column": 87 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -367583,75 +371523,50 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 110627, - "end": 110631, + "start": 111329, + "end": 111330, "loc": { "start": { - "line": 2805, - "column": 92 + "line": 2825, + "column": 87 }, "end": { - "line": 2805, - "column": 96 + "line": 2825, + "column": 88 } } }, { "type": { - "label": "(", + "label": ",", "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 110631, - "end": 110632, - "loc": { - "start": { - "line": 2805, - "column": 96 - }, - "end": { - "line": 2805, - "column": 97 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 110632, - "end": 110633, + "start": 111330, + "end": 111331, "loc": { "start": { - "line": 2805, - "column": 97 + "line": 2825, + "column": 88 }, "end": { - "line": 2805, - "column": 98 + "line": 2825, + "column": 89 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -367659,23 +371574,24 @@ "postfix": false, "binop": null }, - "start": 110633, - "end": 110634, + "value": "Math", + "start": 111332, + "end": 111336, "loc": { "start": { - "line": 2805, - "column": 98 + "line": 2825, + "column": 90 }, "end": { - "line": 2805, - "column": 99 + "line": 2825, + "column": 94 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -367685,24 +371601,24 @@ "binop": null, "updateContext": null }, - "start": 110634, - "end": 110635, + "start": 111336, + "end": 111337, "loc": { "start": { - "line": 2805, - "column": 99 + "line": 2825, + "column": 94 }, "end": { - "line": 2805, - "column": 100 + "line": 2825, + "column": 95 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -367710,44 +371626,17 @@ "postfix": false, "binop": null }, - "start": 110648, - "end": 110649, - "loc": { - "start": { - "line": 2806, - "column": 12 - }, - "end": { - "line": 2806, - "column": 13 - } - } - }, - { - "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": 110663, - "end": 110665, + "value": "floor", + "start": 111337, + "end": 111342, "loc": { "start": { - "line": 2808, - "column": 12 + "line": 2825, + "column": 95 }, "end": { - "line": 2808, - "column": 14 + "line": 2825, + "column": 100 } } }, @@ -367763,16 +371652,16 @@ "postfix": false, "binop": null }, - "start": 110666, - "end": 110667, + "start": 111342, + "end": 111343, "loc": { "start": { - "line": 2808, - "column": 15 + "line": 2825, + "column": 100 }, "end": { - "line": 2808, - "column": 16 + "line": 2825, + "column": 101 } } }, @@ -367789,16 +371678,16 @@ "binop": null }, "value": "cfg", - "start": 110667, - "end": 110670, + "start": 111343, + "end": 111346, "loc": { "start": { - "line": 2808, - "column": 16 + "line": 2825, + "column": 101 }, "end": { - "line": 2808, - "column": 19 + "line": 2825, + "column": 104 } } }, @@ -367815,16 +371704,16 @@ "binop": null, "updateContext": null }, - "start": 110670, - "end": 110671, + "start": 111346, + "end": 111347, "loc": { "start": { - "line": 2808, - "column": 19 + "line": 2825, + "column": 104 }, "end": { - "line": 2808, - "column": 20 + "line": 2825, + "column": 105 } } }, @@ -367840,48 +371729,23 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 110671, - "end": 110694, - "loc": { - "start": { - "line": 2808, - "column": 20 - }, - "end": { - "line": 2808, - "column": 43 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 110694, - "end": 110695, + "value": "color", + "start": 111347, + "end": 111352, "loc": { "start": { - "line": 2808, - "column": 43 + "line": 2825, + "column": 105 }, "end": { - "line": 2808, - "column": 44 + "line": 2825, + "column": 110 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -367889,24 +371753,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 110696, - "end": 110697, + "start": 111352, + "end": 111353, "loc": { "start": { - "line": 2808, - "column": 45 + "line": 2825, + "column": 110 }, "end": { - "line": 2808, - "column": 46 + "line": 2825, + "column": 111 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -367914,25 +371779,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 110714, - "end": 110717, + "value": 1, + "start": 111353, + "end": 111354, "loc": { "start": { - "line": 2809, - "column": 16 + "line": 2825, + "column": 111 }, "end": { - "line": 2809, - "column": 19 + "line": 2825, + "column": 112 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -367943,77 +371809,78 @@ "binop": null, "updateContext": null }, - "start": 110717, - "end": 110718, + "start": 111354, + "end": 111355, "loc": { "start": { - "line": 2809, - "column": 19 + "line": 2825, + "column": 112 }, "end": { - "line": 2809, - "column": 20 + "line": 2825, + "column": 113 } } }, { "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": 10, + "updateContext": null }, - "value": "positionsDecodeMatrix", - "start": 110718, - "end": 110739, + "value": "*", + "start": 111356, + "end": 111357, "loc": { "start": { - "line": 2809, - "column": 20 + "line": 2825, + "column": 114 }, "end": { - "line": 2809, - "column": 41 + "line": 2825, + "column": 115 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 110740, - "end": 110741, + "value": 255, + "start": 111358, + "end": 111361, "loc": { "start": { - "line": 2809, - "column": 42 + "line": 2825, + "column": 116 }, "end": { - "line": 2809, - "column": 43 + "line": 2825, + "column": 119 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -368021,42 +371888,42 @@ "postfix": false, "binop": null }, - "value": "createPositionsDecodeMatrix", - "start": 110742, - "end": 110769, + "start": 111361, + "end": 111362, "loc": { "start": { - "line": 2809, - "column": 44 + "line": 2825, + "column": 119 }, "end": { - "line": 2809, - "column": 71 + "line": 2825, + "column": 120 } } }, { "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": 110769, - "end": 110770, + "start": 111362, + "end": 111363, "loc": { "start": { - "line": 2809, - "column": 71 + "line": 2825, + "column": 120 }, "end": { - "line": 2809, - "column": 72 + "line": 2825, + "column": 121 } } }, @@ -368072,17 +371939,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 110770, - "end": 110773, + "value": "Math", + "start": 111364, + "end": 111368, "loc": { "start": { - "line": 2809, - "column": 72 + "line": 2825, + "column": 122 }, "end": { - "line": 2809, - "column": 75 + "line": 2825, + "column": 126 } } }, @@ -368099,16 +371966,16 @@ "binop": null, "updateContext": null }, - "start": 110773, - "end": 110774, + "start": 111368, + "end": 111369, "loc": { "start": { - "line": 2809, - "column": 75 + "line": 2825, + "column": 126 }, "end": { - "line": 2809, - "column": 76 + "line": 2825, + "column": 127 } } }, @@ -368124,43 +371991,42 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeBoundary", - "start": 110774, - "end": 110797, + "value": "floor", + "start": 111369, + "end": 111374, "loc": { "start": { - "line": 2809, - "column": 76 + "line": 2825, + "column": 127 }, "end": { - "line": 2809, - "column": 99 + "line": 2825, + "column": 132 } } }, { "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": 110797, - "end": 110798, + "start": 111374, + "end": 111375, "loc": { "start": { - "line": 2809, - "column": 99 + "line": 2825, + "column": 132 }, "end": { - "line": 2809, - "column": 100 + "line": 2825, + "column": 133 } } }, @@ -368176,17 +372042,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 110799, - "end": 110803, + "value": "cfg", + "start": 111375, + "end": 111378, "loc": { "start": { - "line": 2809, - "column": 101 + "line": 2825, + "column": 133 }, "end": { - "line": 2809, - "column": 105 + "line": 2825, + "column": 136 } } }, @@ -368203,16 +372069,16 @@ "binop": null, "updateContext": null }, - "start": 110803, - "end": 110804, + "start": 111378, + "end": 111379, "loc": { "start": { - "line": 2809, - "column": 105 + "line": 2825, + "column": 136 }, "end": { - "line": 2809, - "column": 106 + "line": 2825, + "column": 137 } } }, @@ -368228,23 +372094,23 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 110804, - "end": 110808, + "value": "color", + "start": 111379, + "end": 111384, "loc": { "start": { - "line": 2809, - "column": 106 + "line": 2825, + "column": 137 }, "end": { - "line": 2809, - "column": 110 + "line": 2825, + "column": 142 } } }, { "type": { - "label": "(", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -368252,49 +372118,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 110808, - "end": 110809, + "start": 111384, + "end": 111385, "loc": { "start": { - "line": 2809, - "column": 110 + "line": 2825, + "column": 142 }, "end": { - "line": 2809, - "column": 111 + "line": 2825, + "column": 143 } } }, { "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": 110809, - "end": 110810, + "value": 2, + "start": 111385, + "end": 111386, "loc": { "start": { - "line": 2809, - "column": 111 + "line": 2825, + "column": 143 }, "end": { - "line": 2809, - "column": 112 + "line": 2825, + "column": 144 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -368302,24 +372171,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 110810, - "end": 110811, + "start": 111386, + "end": 111387, "loc": { "start": { - "line": 2809, - "column": 112 + "line": 2825, + "column": 144 }, "end": { - "line": 2809, - "column": 113 + "line": 2825, + "column": 145 } } }, { "type": { - "label": ";", + "label": "*", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -368327,51 +372197,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "start": 110811, - "end": 110812, + "value": "*", + "start": 111388, + "end": 111389, "loc": { "start": { - "line": 2809, - "column": 113 + "line": 2825, + "column": 146 }, "end": { - "line": 2809, - "column": 114 + "line": 2825, + "column": 147 } } }, { "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": 110825, - "end": 110826, + "value": 255, + "start": 111390, + "end": 111393, "loc": { "start": { - "line": 2810, - "column": 12 + "line": 2825, + "column": 148 }, "end": { - "line": 2810, - "column": 13 + "line": 2825, + "column": 151 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -368379,53 +372251,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 110840, - "end": 110842, + "start": 111393, + "end": 111394, "loc": { "start": { - "line": 2812, - "column": 12 + "line": 2825, + "column": 151 }, "end": { - "line": 2812, - "column": 14 + "line": 2825, + "column": 152 } } }, { "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": 110843, - "end": 110844, + "start": 111394, + "end": 111395, "loc": { "start": { - "line": 2812, - "column": 15 + "line": 2825, + "column": 152 }, "end": { - "line": 2812, - "column": 16 + "line": 2825, + "column": 153 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -368433,49 +372304,49 @@ "postfix": false, "binop": null }, - "value": "useDTX", - "start": 110844, - "end": 110850, + "start": 111395, + "end": 111396, "loc": { "start": { - "line": 2812, - "column": 16 + "line": 2825, + "column": 153 }, "end": { - "line": 2812, - "column": 22 + "line": 2825, + "column": 154 } } }, { "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": 110850, - "end": 110851, + "start": 111397, + "end": 111398, "loc": { "start": { - "line": 2812, - "column": 22 + "line": 2825, + "column": 155 }, "end": { - "line": 2812, - "column": 23 + "line": 2825, + "column": 156 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -368484,32 +372355,43 @@ "postfix": false, "binop": null }, - "start": 110852, - "end": 110853, + "value": "defaultCompressedColor", + "start": 111399, + "end": 111421, "loc": { "start": { - "line": 2812, - "column": 24 + "line": 2825, + "column": 157 }, "end": { - "line": 2812, - "column": 25 + "line": 2825, + "column": 179 } } }, { - "type": "CommentLine", - "value": " DTX", - "start": 110871, - "end": 110877, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 111421, + "end": 111422, "loc": { "start": { - "line": 2814, - "column": 16 + "line": 2825, + "column": 179 }, "end": { - "line": 2814, - "column": 22 + "line": 2825, + "column": 180 } } }, @@ -368526,15 +372408,15 @@ "binop": null }, "value": "cfg", - "start": 110895, - "end": 110898, + "start": 111439, + "end": 111442, "loc": { "start": { - "line": 2816, + "line": 2826, "column": 16 }, "end": { - "line": 2816, + "line": 2826, "column": 19 } } @@ -368552,15 +372434,15 @@ "binop": null, "updateContext": null }, - "start": 110898, - "end": 110899, + "start": 111442, + "end": 111443, "loc": { "start": { - "line": 2816, + "line": 2826, "column": 19 }, "end": { - "line": 2816, + "line": 2826, "column": 20 } } @@ -368577,17 +372459,17 @@ "postfix": false, "binop": null }, - "value": "type", - "start": 110899, - "end": 110903, + "value": "opacity", + "start": 111443, + "end": 111450, "loc": { "start": { - "line": 2816, + "line": 2826, "column": 20 }, "end": { - "line": 2816, - "column": 24 + "line": 2826, + "column": 27 } } }, @@ -368605,23 +372487,23 @@ "updateContext": null }, "value": "=", - "start": 110904, - "end": 110905, + "start": 111451, + "end": 111452, "loc": { "start": { - "line": 2816, - "column": 25 + "line": 2826, + "column": 28 }, "end": { - "line": 2816, - "column": 26 + "line": 2826, + "column": 29 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -368630,62 +372512,19 @@ "postfix": false, "binop": null }, - "value": "DTX", - "start": 110906, - "end": 110909, - "loc": { - "start": { - "line": 2816, - "column": 27 - }, - "end": { - "line": 2816, - "column": 30 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 110909, - "end": 110910, + "start": 111453, + "end": 111454, "loc": { "start": { - "line": 2816, + "line": 2826, "column": 30 }, "end": { - "line": 2816, + "line": 2826, "column": 31 } } }, - { - "type": "CommentLine", - "value": " NPR", - "start": 110928, - "end": 110934, - "loc": { - "start": { - "line": 2818, - "column": 16 - }, - "end": { - "line": 2818, - "column": 22 - } - } - }, { "type": { "label": "name", @@ -368699,16 +372538,16 @@ "binop": null }, "value": "cfg", - "start": 110952, - "end": 110955, + "start": 111454, + "end": 111457, "loc": { "start": { - "line": 2820, - "column": 16 + "line": 2826, + "column": 31 }, "end": { - "line": 2820, - "column": 19 + "line": 2826, + "column": 34 } } }, @@ -368725,16 +372564,16 @@ "binop": null, "updateContext": null }, - "start": 110955, - "end": 110956, + "start": 111457, + "end": 111458, "loc": { "start": { - "line": 2820, - "column": 19 + "line": 2826, + "column": 34 }, "end": { - "line": 2820, - "column": 20 + "line": 2826, + "column": 35 } } }, @@ -368750,69 +372589,44 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 110956, - "end": 110961, + "value": "opacity", + "start": 111458, + "end": 111465, "loc": { "start": { - "line": 2820, - "column": 20 + "line": 2826, + "column": 35 }, "end": { - "line": 2820, - "column": 25 + "line": 2826, + "column": 42 } } }, { "type": { - "label": "=", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 110962, - "end": 110963, - "loc": { - "start": { - "line": 2820, - "column": 26 - }, - "end": { - "line": 2820, - "column": 27 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "start": 110964, - "end": 110965, + "value": "!==", + "start": 111466, + "end": 111469, "loc": { "start": { - "line": 2820, - "column": 28 + "line": 2826, + "column": 43 }, "end": { - "line": 2820, - "column": 29 + "line": 2826, + "column": 46 } } }, @@ -368828,43 +372642,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 110965, - "end": 110968, + "value": "undefined", + "start": 111470, + "end": 111479, "loc": { "start": { - "line": 2820, - "column": 29 + "line": 2826, + "column": 47 }, "end": { - "line": 2820, - "column": 32 + "line": 2826, + "column": 56 } } }, { "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": 110968, - "end": 110969, + "value": "&&", + "start": 111480, + "end": 111482, "loc": { "start": { - "line": 2820, - "column": 32 + "line": 2826, + "column": 57 }, "end": { - "line": 2820, - "column": 33 + "line": 2826, + "column": 59 } } }, @@ -368880,23 +372695,23 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 110969, - "end": 110974, + "value": "cfg", + "start": 111483, + "end": 111486, "loc": { "start": { - "line": 2820, - "column": 33 + "line": 2826, + "column": 60 }, "end": { - "line": 2820, - "column": 38 + "line": 2826, + "column": 63 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -368904,78 +372719,79 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 110974, - "end": 110975, + "start": 111486, + "end": 111487, "loc": { "start": { - "line": 2820, - "column": 38 + "line": 2826, + "column": 63 }, "end": { - "line": 2820, - "column": 39 + "line": 2826, + "column": 64 } } }, { "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": 110976, - "end": 110977, + "value": "opacity", + "start": 111487, + "end": 111494, "loc": { "start": { - "line": 2820, - "column": 40 + "line": 2826, + "column": 64 }, "end": { - "line": 2820, - "column": 41 + "line": 2826, + "column": 71 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "==/!=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "new", - "start": 110978, - "end": 110981, + "value": "!==", + "start": 111495, + "end": 111498, "loc": { "start": { - "line": 2820, - "column": 42 + "line": 2826, + "column": 72 }, "end": { - "line": 2820, - "column": 45 + "line": 2826, + "column": 75 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -368983,27 +372799,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "Uint8Array", - "start": 110982, - "end": 110992, + "value": "null", + "start": 111499, + "end": 111503, "loc": { "start": { - "line": 2820, - "column": 46 + "line": 2826, + "column": 76 }, "end": { - "line": 2820, - "column": 56 + "line": 2826, + "column": 80 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -369011,24 +372828,24 @@ "postfix": false, "binop": null }, - "start": 110992, - "end": 110993, + "start": 111503, + "end": 111504, "loc": { "start": { - "line": 2820, - "column": 56 + "line": 2826, + "column": 80 }, "end": { - "line": 2820, - "column": 57 + "line": 2826, + "column": 81 } } }, { "type": { - "label": "[", + "label": "?", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -369037,16 +372854,16 @@ "binop": null, "updateContext": null }, - "start": 110993, - "end": 110994, + "start": 111505, + "end": 111506, "loc": { "start": { - "line": 2820, - "column": 57 + "line": 2826, + "column": 82 }, "end": { - "line": 2820, - "column": 58 + "line": 2826, + "column": 83 } } }, @@ -369063,16 +372880,16 @@ "binop": null }, "value": "Math", - "start": 110994, - "end": 110998, + "start": 111507, + "end": 111511, "loc": { "start": { - "line": 2820, - "column": 58 + "line": 2826, + "column": 84 }, "end": { - "line": 2820, - "column": 62 + "line": 2826, + "column": 88 } } }, @@ -369089,16 +372906,16 @@ "binop": null, "updateContext": null }, - "start": 110998, - "end": 110999, + "start": 111511, + "end": 111512, "loc": { "start": { - "line": 2820, - "column": 62 + "line": 2826, + "column": 88 }, "end": { - "line": 2820, - "column": 63 + "line": 2826, + "column": 89 } } }, @@ -369115,16 +372932,16 @@ "binop": null }, "value": "floor", - "start": 110999, - "end": 111004, + "start": 111512, + "end": 111517, "loc": { "start": { - "line": 2820, - "column": 63 + "line": 2826, + "column": 89 }, "end": { - "line": 2820, - "column": 68 + "line": 2826, + "column": 94 } } }, @@ -369140,16 +372957,16 @@ "postfix": false, "binop": null }, - "start": 111004, - "end": 111005, + "start": 111517, + "end": 111518, "loc": { "start": { - "line": 2820, - "column": 68 + "line": 2826, + "column": 94 }, "end": { - "line": 2820, - "column": 69 + "line": 2826, + "column": 95 } } }, @@ -369166,16 +372983,16 @@ "binop": null }, "value": "cfg", - "start": 111005, - "end": 111008, + "start": 111518, + "end": 111521, "loc": { "start": { - "line": 2820, - "column": 69 + "line": 2826, + "column": 95 }, "end": { - "line": 2820, - "column": 72 + "line": 2826, + "column": 98 } } }, @@ -369192,16 +373009,16 @@ "binop": null, "updateContext": null }, - "start": 111008, - "end": 111009, + "start": 111521, + "end": 111522, "loc": { "start": { - "line": 2820, - "column": 72 + "line": 2826, + "column": 98 }, "end": { - "line": 2820, - "column": 73 + "line": 2826, + "column": 99 } } }, @@ -369217,43 +373034,44 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 111009, - "end": 111014, + "value": "opacity", + "start": 111522, + "end": 111529, "loc": { "start": { - "line": 2820, - "column": 73 + "line": 2826, + "column": 99 }, "end": { - "line": 2820, - "column": 78 + "line": 2826, + "column": 106 } } }, { "type": { - "label": "[", + "label": "*", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "start": 111014, - "end": 111015, + "value": "*", + "start": 111530, + "end": 111531, "loc": { "start": { - "line": 2820, - "column": 78 + "line": 2826, + "column": 107 }, "end": { - "line": 2820, - "column": 79 + "line": 2826, + "column": 108 } } }, @@ -369270,23 +373088,23 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 111015, - "end": 111016, + "value": 255, + "start": 111532, + "end": 111535, "loc": { "start": { - "line": 2820, - "column": 79 + "line": 2826, + "column": 109 }, "end": { - "line": 2820, - "column": 80 + "line": 2826, + "column": 112 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -369294,25 +373112,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 111016, - "end": 111017, + "start": 111535, + "end": 111536, "loc": { "start": { - "line": 2820, - "column": 80 + "line": 2826, + "column": 112 }, "end": { - "line": 2820, - "column": 81 + "line": 2826, + "column": 113 } } }, { "type": { - "label": "*", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -369320,20 +373137,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 111018, - "end": 111019, + "start": 111537, + "end": 111538, "loc": { "start": { - "line": 2820, - "column": 82 + "line": 2826, + "column": 114 }, "end": { - "line": 2820, - "column": 83 + "line": 2826, + "column": 115 } } }, @@ -369351,48 +373167,66 @@ "updateContext": null }, "value": 255, - "start": 111020, - "end": 111023, + "start": 111539, + "end": 111542, "loc": { "start": { - "line": 2820, - "column": 84 + "line": 2826, + "column": 116 }, "end": { - "line": 2820, - "column": 87 + "line": 2826, + "column": 119 } } }, { "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": 111023, - "end": 111024, + "start": 111542, + "end": 111543, "loc": { "start": { - "line": 2820, - "column": 87 + "line": 2826, + "column": 119 }, "end": { - "line": 2820, - "column": 88 + "line": 2826, + "column": 120 + } + } + }, + { + "type": "CommentLine", + "value": " RTC", + "start": 111561, + "end": 111567, + "loc": { + "start": { + "line": 2828, + "column": 16 + }, + "end": { + "line": 2828, + "column": 22 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -369402,16 +373236,42 @@ "binop": null, "updateContext": null }, - "start": 111024, - "end": 111025, + "value": "if", + "start": 111585, + "end": 111587, "loc": { "start": { - "line": 2820, - "column": 88 + "line": 2830, + "column": 16 }, "end": { - "line": 2820, - "column": 89 + "line": 2830, + "column": 18 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 111588, + "end": 111589, + "loc": { + "start": { + "line": 2830, + "column": 19 + }, + "end": { + "line": 2830, + "column": 20 } } }, @@ -369427,17 +373287,17 @@ "postfix": false, "binop": null }, - "value": "Math", - "start": 111026, - "end": 111030, + "value": "cfg", + "start": 111589, + "end": 111592, "loc": { "start": { - "line": 2820, - "column": 90 + "line": 2830, + "column": 20 }, "end": { - "line": 2820, - "column": 94 + "line": 2830, + "column": 23 } } }, @@ -369454,16 +373314,16 @@ "binop": null, "updateContext": null }, - "start": 111030, - "end": 111031, + "start": 111592, + "end": 111593, "loc": { "start": { - "line": 2820, - "column": 94 + "line": 2830, + "column": 23 }, "end": { - "line": 2820, - "column": 95 + "line": 2830, + "column": 24 } } }, @@ -369479,25 +373339,25 @@ "postfix": false, "binop": null }, - "value": "floor", - "start": 111031, - "end": 111036, + "value": "positions", + "start": 111593, + "end": 111602, "loc": { "start": { - "line": 2820, - "column": 95 + "line": 2830, + "column": 24 }, "end": { - "line": 2820, - "column": 100 + "line": 2830, + "column": 33 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -369505,23 +373365,23 @@ "postfix": false, "binop": null }, - "start": 111036, - "end": 111037, + "start": 111602, + "end": 111603, "loc": { "start": { - "line": 2820, - "column": 100 + "line": 2830, + "column": 33 }, "end": { - "line": 2820, - "column": 101 + "line": 2830, + "column": 34 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -369530,23 +373390,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 111037, - "end": 111040, + "start": 111604, + "end": 111605, "loc": { "start": { - "line": 2820, - "column": 101 + "line": 2830, + "column": 35 }, "end": { - "line": 2820, - "column": 104 + "line": 2830, + "column": 36 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -369557,16 +373417,17 @@ "binop": null, "updateContext": null }, - "start": 111040, - "end": 111041, + "value": "const", + "start": 111626, + "end": 111631, "loc": { "start": { - "line": 2820, - "column": 104 + "line": 2831, + "column": 20 }, "end": { - "line": 2820, - "column": 105 + "line": 2831, + "column": 25 } } }, @@ -369582,49 +373443,50 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 111041, - "end": 111046, + "value": "rtcCenter", + "start": 111632, + "end": 111641, "loc": { "start": { - "line": 2820, - "column": 105 + "line": 2831, + "column": 26 }, "end": { - "line": 2820, - "column": 110 + "line": 2831, + "column": 35 } } }, { "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": 111046, - "end": 111047, + "value": "=", + "start": 111642, + "end": 111643, "loc": { "start": { - "line": 2820, - "column": 110 + "line": 2831, + "column": 36 }, "end": { - "line": 2820, - "column": 111 + "line": 2831, + "column": 37 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -369632,26 +373494,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 111047, - "end": 111048, + "value": "math", + "start": 111644, + "end": 111648, "loc": { "start": { - "line": 2820, - "column": 111 + "line": 2831, + "column": 38 }, "end": { - "line": 2820, - "column": 112 + "line": 2831, + "column": 42 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -369662,70 +373523,67 @@ "binop": null, "updateContext": null }, - "start": 111048, - "end": 111049, + "start": 111648, + "end": 111649, "loc": { "start": { - "line": 2820, - "column": 112 + "line": 2831, + "column": 42 }, "end": { - "line": 2820, - "column": 113 + "line": 2831, + "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": 10, - "updateContext": null + "binop": null }, - "value": "*", - "start": 111050, - "end": 111051, + "value": "vec3", + "start": 111649, + "end": 111653, "loc": { "start": { - "line": 2820, - "column": 114 + "line": 2831, + "column": 43 }, "end": { - "line": 2820, - "column": 115 + "line": 2831, + "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": 255, - "start": 111052, - "end": 111055, + "start": 111653, + "end": 111654, "loc": { "start": { - "line": 2820, - "column": 116 + "line": 2831, + "column": 47 }, "end": { - "line": 2820, - "column": 119 + "line": 2831, + "column": 48 } } }, @@ -369741,22 +373599,22 @@ "postfix": false, "binop": null }, - "start": 111055, - "end": 111056, + "start": 111654, + "end": 111655, "loc": { "start": { - "line": 2820, - "column": 119 + "line": 2831, + "column": 48 }, "end": { - "line": 2820, - "column": 120 + "line": 2831, + "column": 49 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -369767,16 +373625,44 @@ "binop": null, "updateContext": null }, - "start": 111056, - "end": 111057, + "start": 111655, + "end": 111656, "loc": { "start": { - "line": 2820, - "column": 120 + "line": 2831, + "column": 49 }, "end": { - "line": 2820, - "column": 121 + "line": 2831, + "column": 50 + } + } + }, + { + "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": 111677, + "end": 111682, + "loc": { + "start": { + "line": 2832, + "column": 20 + }, + "end": { + "line": 2832, + "column": 25 } } }, @@ -369792,126 +373678,129 @@ "postfix": false, "binop": null }, - "value": "Math", - "start": 111058, - "end": 111062, + "value": "rtcPositions", + "start": 111683, + "end": 111695, "loc": { "start": { - "line": 2820, - "column": 122 + "line": 2832, + "column": 26 }, "end": { - "line": 2820, - "column": 126 + "line": 2832, + "column": 38 } } }, { "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": 111062, - "end": 111063, + "value": "=", + "start": 111696, + "end": 111697, "loc": { "start": { - "line": 2820, - "column": 126 + "line": 2832, + "column": 39 }, "end": { - "line": 2820, - "column": 127 + "line": 2832, + "column": 40 } } }, { "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": "floor", - "start": 111063, - "end": 111068, + "start": 111698, + "end": 111699, "loc": { "start": { - "line": 2820, - "column": 127 + "line": 2832, + "column": 41 }, "end": { - "line": 2820, - "column": 132 + "line": 2832, + "column": 42 } } }, { "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": 111068, - "end": 111069, + "start": 111699, + "end": 111700, "loc": { "start": { - "line": 2820, - "column": 132 + "line": 2832, + "column": 42 }, "end": { - "line": 2820, - "column": 133 + "line": 2832, + "column": 43 } } }, { "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": "cfg", - "start": 111069, - "end": 111072, + "start": 111700, + "end": 111701, "loc": { "start": { - "line": 2820, - "column": 133 + "line": 2832, + "column": 43 }, "end": { - "line": 2820, - "column": 136 + "line": 2832, + "column": 44 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -369922,16 +373811,17 @@ "binop": null, "updateContext": null }, - "start": 111072, - "end": 111073, + "value": "const", + "start": 111722, + "end": 111727, "loc": { "start": { - "line": 2820, - "column": 136 + "line": 2833, + "column": 20 }, "end": { - "line": 2820, - "column": 137 + "line": 2833, + "column": 25 } } }, @@ -369947,49 +373837,50 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 111073, - "end": 111078, + "value": "rtcNeeded", + "start": 111728, + "end": 111737, "loc": { "start": { - "line": 2820, - "column": 137 + "line": 2833, + "column": 26 }, "end": { - "line": 2820, - "column": 142 + "line": 2833, + "column": 35 } } }, { "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": 111078, - "end": 111079, + "value": "=", + "start": 111738, + "end": 111739, "loc": { "start": { - "line": 2820, - "column": 142 + "line": 2833, + "column": 36 }, "end": { - "line": 2820, - "column": 143 + "line": 2833, + "column": 37 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -369997,81 +373888,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 2, - "start": 111079, - "end": 111080, + "value": "worldToRTCPositions", + "start": 111740, + "end": 111759, "loc": { "start": { - "line": 2820, - "column": 143 + "line": 2833, + "column": 38 }, "end": { - "line": 2820, - "column": 144 + "line": 2833, + "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, - "updateContext": null + "binop": null }, - "start": 111080, - "end": 111081, + "start": 111759, + "end": 111760, "loc": { "start": { - "line": 2820, - "column": 144 + "line": 2833, + "column": 57 }, "end": { - "line": 2820, - "column": 145 + "line": 2833, + "column": 58 } } }, { "type": { - "label": "*", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, - "updateContext": null + "binop": null }, - "value": "*", - "start": 111082, - "end": 111083, + "value": "cfg", + "start": 111760, + "end": 111763, "loc": { "start": { - "line": 2820, - "column": 146 + "line": 2833, + "column": 58 }, "end": { - "line": 2820, - "column": 147 + "line": 2833, + "column": 61 } } }, { "type": { - "label": "num", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -370080,25 +373968,24 @@ "binop": null, "updateContext": null }, - "value": 255, - "start": 111084, - "end": 111087, + "start": 111763, + "end": 111764, "loc": { "start": { - "line": 2820, - "column": 148 + "line": 2833, + "column": 61 }, "end": { - "line": 2820, - "column": 151 + "line": 2833, + "column": 62 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -370106,23 +373993,24 @@ "postfix": false, "binop": null }, - "start": 111087, - "end": 111088, + "value": "positions", + "start": 111764, + "end": 111773, "loc": { "start": { - "line": 2820, - "column": 151 + "line": 2833, + "column": 62 }, "end": { - "line": 2820, - "column": 152 + "line": 2833, + "column": 71 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -370132,24 +374020,24 @@ "binop": null, "updateContext": null }, - "start": 111088, - "end": 111089, + "start": 111773, + "end": 111774, "loc": { "start": { - "line": 2820, - "column": 152 + "line": 2833, + "column": 71 }, "end": { - "line": 2820, - "column": 153 + "line": 2833, + "column": 72 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -370157,22 +374045,23 @@ "postfix": false, "binop": null }, - "start": 111089, - "end": 111090, + "value": "rtcPositions", + "start": 111775, + "end": 111787, "loc": { "start": { - "line": 2820, - "column": 153 + "line": 2833, + "column": 73 }, "end": { - "line": 2820, - "column": 154 + "line": 2833, + "column": 85 } } }, { "type": { - "label": ":", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -370183,16 +374072,16 @@ "binop": null, "updateContext": null }, - "start": 111091, - "end": 111092, + "start": 111787, + "end": 111788, "loc": { "start": { - "line": 2820, - "column": 155 + "line": 2833, + "column": 85 }, "end": { - "line": 2820, - "column": 156 + "line": 2833, + "column": 86 } } }, @@ -370208,17 +374097,42 @@ "postfix": false, "binop": null }, - "value": "defaultCompressedColor", - "start": 111093, - "end": 111115, + "value": "rtcCenter", + "start": 111789, + "end": 111798, "loc": { "start": { - "line": 2820, - "column": 157 + "line": 2833, + "column": 87 }, "end": { - "line": 2820, - "column": 179 + "line": 2833, + "column": 96 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 111798, + "end": 111799, + "loc": { + "start": { + "line": 2833, + "column": 96 + }, + "end": { + "line": 2833, + "column": 97 } } }, @@ -370235,68 +374149,69 @@ "binop": null, "updateContext": null }, - "start": 111115, - "end": 111116, + "start": 111799, + "end": 111800, "loc": { "start": { - "line": 2820, - "column": 179 + "line": 2833, + "column": 97 }, "end": { - "line": 2820, - "column": 180 + "line": 2833, + "column": 98 } } }, { "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": "cfg", - "start": 111133, - "end": 111136, + "value": "if", + "start": 111821, + "end": 111823, "loc": { "start": { - "line": 2821, - "column": 16 + "line": 2834, + "column": 20 }, "end": { - "line": 2821, - "column": 19 + "line": 2834, + "column": 22 } } }, { "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": 111136, - "end": 111137, + "start": 111824, + "end": 111825, "loc": { "start": { - "line": 2821, - "column": 19 + "line": 2834, + "column": 23 }, "end": { - "line": 2821, - "column": 20 + "line": 2834, + "column": 24 } } }, @@ -370312,50 +374227,48 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 111137, - "end": 111144, + "value": "rtcNeeded", + "start": 111825, + "end": 111834, "loc": { "start": { - "line": 2821, - "column": 20 + "line": 2834, + "column": 24 }, "end": { - "line": 2821, - "column": 27 + "line": 2834, + "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 + "binop": null }, - "value": "=", - "start": 111145, - "end": 111146, + "start": 111834, + "end": 111835, "loc": { "start": { - "line": 2821, - "column": 28 + "line": 2834, + "column": 33 }, "end": { - "line": 2821, - "column": 29 + "line": 2834, + "column": 34 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -370365,16 +374278,16 @@ "postfix": false, "binop": null }, - "start": 111147, - "end": 111148, + "start": 111836, + "end": 111837, "loc": { "start": { - "line": 2821, - "column": 30 + "line": 2834, + "column": 35 }, "end": { - "line": 2821, - "column": 31 + "line": 2834, + "column": 36 } } }, @@ -370391,16 +374304,16 @@ "binop": null }, "value": "cfg", - "start": 111148, - "end": 111151, + "start": 111862, + "end": 111865, "loc": { "start": { - "line": 2821, - "column": 31 + "line": 2835, + "column": 24 }, "end": { - "line": 2821, - "column": 34 + "line": 2835, + "column": 27 } } }, @@ -370417,16 +374330,16 @@ "binop": null, "updateContext": null }, - "start": 111151, - "end": 111152, + "start": 111865, + "end": 111866, "loc": { "start": { - "line": 2821, - "column": 34 + "line": 2835, + "column": 27 }, "end": { - "line": 2821, - "column": 35 + "line": 2835, + "column": 28 } } }, @@ -370442,44 +374355,44 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 111152, - "end": 111159, + "value": "positions", + "start": 111866, + "end": 111875, "loc": { "start": { - "line": 2821, - "column": 35 + "line": 2835, + "column": 28 }, "end": { - "line": 2821, - "column": 42 + "line": 2835, + "column": 37 } } }, { "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": 111160, - "end": 111163, + "value": "=", + "start": 111876, + "end": 111877, "loc": { "start": { - "line": 2821, - "column": 43 + "line": 2835, + "column": 38 }, "end": { - "line": 2821, - "column": 46 + "line": 2835, + "column": 39 } } }, @@ -370495,23 +374408,23 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 111164, - "end": 111173, + "value": "rtcPositions", + "start": 111878, + "end": 111890, "loc": { "start": { - "line": 2821, - "column": 47 + "line": 2835, + "column": 40 }, "end": { - "line": 2821, - "column": 56 + "line": 2835, + "column": 52 } } }, { "type": { - "label": "&&", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -370519,20 +374432,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 111174, - "end": 111176, + "start": 111890, + "end": 111891, "loc": { "start": { - "line": 2821, - "column": 57 + "line": 2835, + "column": 52 }, "end": { - "line": 2821, - "column": 59 + "line": 2835, + "column": 53 } } }, @@ -370549,16 +374461,16 @@ "binop": null }, "value": "cfg", - "start": 111177, - "end": 111180, + "start": 111916, + "end": 111919, "loc": { "start": { - "line": 2821, - "column": 60 + "line": 2836, + "column": 24 }, "end": { - "line": 2821, - "column": 63 + "line": 2836, + "column": 27 } } }, @@ -370575,16 +374487,16 @@ "binop": null, "updateContext": null }, - "start": 111180, - "end": 111181, + "start": 111919, + "end": 111920, "loc": { "start": { - "line": 2821, - "column": 63 + "line": 2836, + "column": 27 }, "end": { - "line": 2821, - "column": 64 + "line": 2836, + "column": 28 } } }, @@ -370600,80 +374512,52 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 111181, - "end": 111188, + "value": "origin", + "start": 111920, + "end": 111926, "loc": { "start": { - "line": 2821, - "column": 64 + "line": 2836, + "column": 28 }, "end": { - "line": 2821, - "column": 71 + "line": 2836, + "column": 34 } } }, { "type": { - "label": "==/!=", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 111189, - "end": 111192, - "loc": { - "start": { - "line": 2821, - "column": 72 - }, - "end": { - "line": 2821, - "column": 75 - } - } - }, - { - "type": { - "label": "null", - "keyword": "null", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "null", - "start": 111193, - "end": 111197, + "value": "=", + "start": 111927, + "end": 111928, "loc": { "start": { - "line": 2821, - "column": 76 + "line": 2836, + "column": 35 }, "end": { - "line": 2821, - "column": 80 + "line": 2836, + "column": 36 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -370681,23 +374565,24 @@ "postfix": false, "binop": null }, - "start": 111197, - "end": 111198, + "value": "math", + "start": 111929, + "end": 111933, "loc": { "start": { - "line": 2821, - "column": 80 + "line": 2836, + "column": 37 }, "end": { - "line": 2821, - "column": 81 + "line": 2836, + "column": 41 } } }, { "type": { - "label": "?", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -370707,16 +374592,16 @@ "binop": null, "updateContext": null }, - "start": 111199, - "end": 111200, + "start": 111933, + "end": 111934, "loc": { "start": { - "line": 2821, - "column": 82 + "line": 2836, + "column": 41 }, "end": { - "line": 2821, - "column": 83 + "line": 2836, + "column": 42 } } }, @@ -370732,43 +374617,42 @@ "postfix": false, "binop": null }, - "value": "Math", - "start": 111201, - "end": 111205, + "value": "addVec3", + "start": 111934, + "end": 111941, "loc": { "start": { - "line": 2821, - "column": 84 + "line": 2836, + "column": 42 }, "end": { - "line": 2821, - "column": 88 + "line": 2836, + "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": 111205, - "end": 111206, + "start": 111941, + "end": 111942, "loc": { "start": { - "line": 2821, - "column": 88 + "line": 2836, + "column": 49 }, "end": { - "line": 2821, - "column": 89 + "line": 2836, + "column": 50 } } }, @@ -370784,42 +374668,43 @@ "postfix": false, "binop": null }, - "value": "floor", - "start": 111206, - "end": 111211, + "value": "cfg", + "start": 111942, + "end": 111945, "loc": { "start": { - "line": 2821, - "column": 89 + "line": 2836, + "column": 50 }, "end": { - "line": 2821, - "column": 94 + "line": 2836, + "column": 53 } } }, { "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": 111211, - "end": 111212, + "start": 111945, + "end": 111946, "loc": { "start": { - "line": 2821, - "column": 94 + "line": 2836, + "column": 53 }, "end": { - "line": 2821, - "column": 95 + "line": 2836, + "column": 54 } } }, @@ -370835,24 +374720,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 111212, - "end": 111215, + "value": "origin", + "start": 111946, + "end": 111952, "loc": { "start": { - "line": 2821, - "column": 95 + "line": 2836, + "column": 54 }, "end": { - "line": 2821, - "column": 98 + "line": 2836, + "column": 60 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -370862,16 +374747,16 @@ "binop": null, "updateContext": null }, - "start": 111215, - "end": 111216, + "start": 111952, + "end": 111953, "loc": { "start": { - "line": 2821, - "column": 98 + "line": 2836, + "column": 60 }, "end": { - "line": 2821, - "column": 99 + "line": 2836, + "column": 61 } } }, @@ -370887,23 +374772,23 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 111216, - "end": 111223, + "value": "rtcCenter", + "start": 111954, + "end": 111963, "loc": { "start": { - "line": 2821, - "column": 99 + "line": 2836, + "column": 62 }, "end": { - "line": 2821, - "column": 106 + "line": 2836, + "column": 71 } } }, { "type": { - "label": "*", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -370911,26 +374796,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 111224, - "end": 111225, + "start": 111963, + "end": 111964, "loc": { "start": { - "line": 2821, - "column": 107 + "line": 2836, + "column": 71 }, "end": { - "line": 2821, - "column": 108 + "line": 2836, + "column": 72 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -370938,20 +374822,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 111226, - "end": 111229, + "value": "rtcCenter", + "start": 111965, + "end": 111974, "loc": { "start": { - "line": 2821, - "column": 109 + "line": 2836, + "column": 73 }, "end": { - "line": 2821, - "column": 112 + "line": 2836, + "column": 82 } } }, @@ -370967,22 +374850,22 @@ "postfix": false, "binop": null }, - "start": 111229, - "end": 111230, + "start": 111974, + "end": 111975, "loc": { "start": { - "line": 2821, - "column": 112 + "line": 2836, + "column": 82 }, "end": { - "line": 2821, - "column": 113 + "line": 2836, + "column": 83 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -370993,85 +374876,82 @@ "binop": null, "updateContext": null }, - "start": 111231, - "end": 111232, + "start": 111975, + "end": 111976, "loc": { "start": { - "line": 2821, - "column": 114 + "line": 2836, + "column": 83 }, "end": { - "line": 2821, - "column": 115 + "line": 2836, + "column": 84 } } }, { "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": 255, - "start": 111233, - "end": 111236, + "start": 111997, + "end": 111998, "loc": { "start": { - "line": 2821, - "column": 116 + "line": 2837, + "column": 20 }, "end": { - "line": 2821, - "column": 119 + "line": 2837, + "column": 21 } } }, { "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": 111236, - "end": 111237, + "start": 112015, + "end": 112016, "loc": { "start": { - "line": 2821, - "column": 119 + "line": 2838, + "column": 16 }, "end": { - "line": 2821, - "column": 120 + "line": 2838, + "column": 17 } } }, { "type": "CommentLine", - "value": " RTC", - "start": 111255, - "end": 111261, + "value": " COMPRESSION", + "start": 112034, + "end": 112048, "loc": { "start": { - "line": 2823, + "line": 2840, "column": 16 }, "end": { - "line": 2823, - "column": 22 + "line": 2840, + "column": 30 } } }, @@ -371090,15 +374970,15 @@ "updateContext": null }, "value": "if", - "start": 111279, - "end": 111281, + "start": 112066, + "end": 112068, "loc": { "start": { - "line": 2825, + "line": 2842, "column": 16 }, "end": { - "line": 2825, + "line": 2842, "column": 18 } } @@ -371115,15 +374995,15 @@ "postfix": false, "binop": null }, - "start": 111282, - "end": 111283, + "start": 112069, + "end": 112070, "loc": { "start": { - "line": 2825, + "line": 2842, "column": 19 }, "end": { - "line": 2825, + "line": 2842, "column": 20 } } @@ -371141,15 +375021,15 @@ "binop": null }, "value": "cfg", - "start": 111283, - "end": 111286, + "start": 112070, + "end": 112073, "loc": { "start": { - "line": 2825, + "line": 2842, "column": 20 }, "end": { - "line": 2825, + "line": 2842, "column": 23 } } @@ -371167,15 +375047,15 @@ "binop": null, "updateContext": null }, - "start": 111286, - "end": 111287, + "start": 112073, + "end": 112074, "loc": { "start": { - "line": 2825, + "line": 2842, "column": 23 }, "end": { - "line": 2825, + "line": 2842, "column": 24 } } @@ -371193,15 +375073,15 @@ "binop": null }, "value": "positions", - "start": 111287, - "end": 111296, + "start": 112074, + "end": 112083, "loc": { "start": { - "line": 2825, + "line": 2842, "column": 24 }, "end": { - "line": 2825, + "line": 2842, "column": 33 } } @@ -371218,15 +375098,15 @@ "postfix": false, "binop": null }, - "start": 111296, - "end": 111297, + "start": 112083, + "end": 112084, "loc": { "start": { - "line": 2825, + "line": 2842, "column": 33 }, "end": { - "line": 2825, + "line": 2842, "column": 34 } } @@ -371243,15 +375123,15 @@ "postfix": false, "binop": null }, - "start": 111298, - "end": 111299, + "start": 112085, + "end": 112086, "loc": { "start": { - "line": 2825, + "line": 2842, "column": 35 }, "end": { - "line": 2825, + "line": 2842, "column": 36 } } @@ -371271,15 +375151,15 @@ "updateContext": null }, "value": "const", - "start": 111320, - "end": 111325, + "start": 112107, + "end": 112112, "loc": { "start": { - "line": 2826, + "line": 2843, "column": 20 }, "end": { - "line": 2826, + "line": 2843, "column": 25 } } @@ -371296,17 +375176,17 @@ "postfix": false, "binop": null }, - "value": "rtcCenter", - "start": 111326, - "end": 111335, + "value": "aabb", + "start": 112113, + "end": 112117, "loc": { "start": { - "line": 2826, + "line": 2843, "column": 26 }, "end": { - "line": 2826, - "column": 35 + "line": 2843, + "column": 30 } } }, @@ -371324,16 +375204,16 @@ "updateContext": null }, "value": "=", - "start": 111336, - "end": 111337, + "start": 112118, + "end": 112119, "loc": { "start": { - "line": 2826, - "column": 36 + "line": 2843, + "column": 31 }, "end": { - "line": 2826, - "column": 37 + "line": 2843, + "column": 32 } } }, @@ -371350,16 +375230,16 @@ "binop": null }, "value": "math", - "start": 111338, - "end": 111342, + "start": 112120, + "end": 112124, "loc": { "start": { - "line": 2826, - "column": 38 + "line": 2843, + "column": 33 }, "end": { - "line": 2826, - "column": 42 + "line": 2843, + "column": 37 } } }, @@ -371376,16 +375256,16 @@ "binop": null, "updateContext": null }, - "start": 111342, - "end": 111343, + "start": 112124, + "end": 112125, "loc": { "start": { - "line": 2826, - "column": 42 + "line": 2843, + "column": 37 }, "end": { - "line": 2826, - "column": 43 + "line": 2843, + "column": 38 } } }, @@ -371401,17 +375281,17 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 111343, - "end": 111347, + "value": "collapseAABB3", + "start": 112125, + "end": 112138, "loc": { "start": { - "line": 2826, - "column": 43 + "line": 2843, + "column": 38 }, "end": { - "line": 2826, - "column": 47 + "line": 2843, + "column": 51 } } }, @@ -371427,16 +375307,16 @@ "postfix": false, "binop": null }, - "start": 111347, - "end": 111348, + "start": 112138, + "end": 112139, "loc": { "start": { - "line": 2826, - "column": 47 + "line": 2843, + "column": 51 }, "end": { - "line": 2826, - "column": 48 + "line": 2843, + "column": 52 } } }, @@ -371452,16 +375332,16 @@ "postfix": false, "binop": null }, - "start": 111348, - "end": 111349, + "start": 112139, + "end": 112140, "loc": { "start": { - "line": 2826, - "column": 48 + "line": 2843, + "column": 52 }, "end": { - "line": 2826, - "column": 49 + "line": 2843, + "column": 53 } } }, @@ -371478,44 +375358,16 @@ "binop": null, "updateContext": null }, - "start": 111349, - "end": 111350, - "loc": { - "start": { - "line": 2826, - "column": 49 - }, - "end": { - "line": 2826, - "column": 50 - } - } - }, - { - "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": 111371, - "end": 111376, + "start": 112140, + "end": 112141, "loc": { "start": { - "line": 2827, - "column": 20 + "line": 2843, + "column": 53 }, "end": { - "line": 2827, - "column": 25 + "line": 2843, + "column": 54 } } }, @@ -371531,150 +375383,96 @@ "postfix": false, "binop": null }, - "value": "rtcPositions", - "start": 111377, - "end": 111389, + "value": "cfg", + "start": 112162, + "end": 112165, "loc": { "start": { - "line": 2827, - "column": 26 + "line": 2844, + "column": 20 }, "end": { - "line": 2827, - "column": 38 + "line": 2844, + "column": 23 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 111390, - "end": 111391, - "loc": { - "start": { - "line": 2827, - "column": 39 - }, - "end": { - "line": 2827, - "column": 40 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 111392, - "end": 111393, + "start": 112165, + "end": 112166, "loc": { "start": { - "line": 2827, - "column": 41 + "line": 2844, + "column": 23 }, "end": { - "line": 2827, - "column": 42 + "line": 2844, + "column": 24 } } }, { "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": 111393, - "end": 111394, + "value": "positionsDecodeMatrix", + "start": 112166, + "end": 112187, "loc": { "start": { - "line": 2827, - "column": 42 + "line": 2844, + "column": 24 }, "end": { - "line": 2827, - "column": 43 + "line": 2844, + "column": 45 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 111394, - "end": 111395, - "loc": { - "start": { - "line": 2827, - "column": 43 - }, - "end": { - "line": 2827, - "column": 44 - } - } - }, - { - "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "const", - "start": 111416, - "end": 111421, + "value": "=", + "start": 112188, + "end": 112189, "loc": { "start": { - "line": 2828, - "column": 20 + "line": 2844, + "column": 46 }, "end": { - "line": 2828, - "column": 25 + "line": 2844, + "column": 47 } } }, @@ -371690,44 +375488,43 @@ "postfix": false, "binop": null }, - "value": "rtcNeeded", - "start": 111422, - "end": 111431, + "value": "math", + "start": 112190, + "end": 112194, "loc": { "start": { - "line": 2828, - "column": 26 + "line": 2844, + "column": 48 }, "end": { - "line": 2828, - "column": 35 + "line": 2844, + "column": 52 } } }, { "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": 111432, - "end": 111433, + "start": 112194, + "end": 112195, "loc": { "start": { - "line": 2828, - "column": 36 + "line": 2844, + "column": 52 }, "end": { - "line": 2828, - "column": 37 + "line": 2844, + "column": 53 } } }, @@ -371743,16 +375540,16 @@ "postfix": false, "binop": null }, - "value": "worldToRTCPositions", - "start": 111434, - "end": 111453, + "value": "mat4", + "start": 112195, + "end": 112199, "loc": { "start": { - "line": 2828, - "column": 38 + "line": 2844, + "column": 53 }, "end": { - "line": 2828, + "line": 2844, "column": 57 } } @@ -371769,24 +375566,24 @@ "postfix": false, "binop": null }, - "start": 111453, - "end": 111454, + "start": 112199, + "end": 112200, "loc": { "start": { - "line": 2828, + "line": 2844, "column": 57 }, "end": { - "line": 2828, + "line": 2844, "column": 58 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -371794,24 +375591,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 111454, - "end": 111457, + "start": 112200, + "end": 112201, "loc": { "start": { - "line": 2828, + "line": 2844, "column": 58 }, "end": { - "line": 2828, - "column": 61 + "line": 2844, + "column": 59 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -371821,16 +375617,16 @@ "binop": null, "updateContext": null }, - "start": 111457, - "end": 111458, + "start": 112201, + "end": 112202, "loc": { "start": { - "line": 2828, - "column": 61 + "line": 2844, + "column": 59 }, "end": { - "line": 2828, - "column": 62 + "line": 2844, + "column": 60 } } }, @@ -371846,24 +375642,24 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 111458, - "end": 111467, + "value": "math", + "start": 112223, + "end": 112227, "loc": { "start": { - "line": 2828, - "column": 62 + "line": 2845, + "column": 20 }, "end": { - "line": 2828, - "column": 71 + "line": 2845, + "column": 24 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -371873,16 +375669,16 @@ "binop": null, "updateContext": null }, - "start": 111467, - "end": 111468, + "start": 112227, + "end": 112228, "loc": { "start": { - "line": 2828, - "column": 71 + "line": 2845, + "column": 24 }, "end": { - "line": 2828, - "column": 72 + "line": 2845, + "column": 25 } } }, @@ -371898,50 +375694,24 @@ "postfix": false, "binop": null }, - "value": "rtcPositions", - "start": 111469, - "end": 111481, + "value": "expandAABB3Points3", + "start": 112228, + "end": 112246, "loc": { "start": { - "line": 2828, - "column": 73 + "line": 2845, + "column": 25 }, "end": { - "line": 2828, - "column": 85 + "line": 2845, + "column": 43 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 111481, - "end": 111482, - "loc": { - "start": { - "line": 2828, - "column": 85 - }, - "end": { - "line": 2828, - "column": 86 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -371950,25 +375720,24 @@ "postfix": false, "binop": null }, - "value": "rtcCenter", - "start": 111483, - "end": 111492, + "start": 112246, + "end": 112247, "loc": { "start": { - "line": 2828, - "column": 87 + "line": 2845, + "column": 43 }, "end": { - "line": 2828, - "column": 96 + "line": 2845, + "column": 44 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -371976,22 +375745,23 @@ "postfix": false, "binop": null }, - "start": 111492, - "end": 111493, + "value": "aabb", + "start": 112247, + "end": 112251, "loc": { "start": { - "line": 2828, - "column": 96 + "line": 2845, + "column": 44 }, "end": { - "line": 2828, - "column": 97 + "line": 2845, + "column": 48 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -372002,69 +375772,68 @@ "binop": null, "updateContext": null }, - "start": 111493, - "end": 111494, + "start": 112251, + "end": 112252, "loc": { "start": { - "line": 2828, - "column": 97 + "line": 2845, + "column": 48 }, "end": { - "line": 2828, - "column": 98 + "line": 2845, + "column": 49 } } }, { "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": 111515, - "end": 111517, + "value": "cfg", + "start": 112253, + "end": 112256, "loc": { "start": { - "line": 2829, - "column": 20 + "line": 2845, + "column": 50 }, "end": { - "line": 2829, - "column": 22 + "line": 2845, + "column": 53 } } }, { "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": 111518, - "end": 111519, + "start": 112256, + "end": 112257, "loc": { "start": { - "line": 2829, - "column": 23 + "line": 2845, + "column": 53 }, "end": { - "line": 2829, - "column": 24 + "line": 2845, + "column": 54 } } }, @@ -372080,17 +375849,17 @@ "postfix": false, "binop": null }, - "value": "rtcNeeded", - "start": 111519, - "end": 111528, + "value": "positions", + "start": 112257, + "end": 112266, "loc": { "start": { - "line": 2829, - "column": 24 + "line": 2845, + "column": 54 }, "end": { - "line": 2829, - "column": 33 + "line": 2845, + "column": 63 } } }, @@ -372106,41 +375875,42 @@ "postfix": false, "binop": null }, - "start": 111528, - "end": 111529, + "start": 112266, + "end": 112267, "loc": { "start": { - "line": 2829, - "column": 33 + "line": 2845, + "column": 63 }, "end": { - "line": 2829, - "column": 34 + "line": 2845, + "column": 64 } } }, { "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": 111530, - "end": 111531, + "start": 112267, + "end": 112268, "loc": { "start": { - "line": 2829, - "column": 35 + "line": 2845, + "column": 64 }, "end": { - "line": 2829, - "column": 36 + "line": 2845, + "column": 65 } } }, @@ -372157,16 +375927,16 @@ "binop": null }, "value": "cfg", - "start": 111556, - "end": 111559, + "start": 112289, + "end": 112292, "loc": { "start": { - "line": 2830, - "column": 24 + "line": 2846, + "column": 20 }, "end": { - "line": 2830, - "column": 27 + "line": 2846, + "column": 23 } } }, @@ -372183,16 +375953,16 @@ "binop": null, "updateContext": null }, - "start": 111559, - "end": 111560, + "start": 112292, + "end": 112293, "loc": { "start": { - "line": 2830, - "column": 27 + "line": 2846, + "column": 23 }, "end": { - "line": 2830, - "column": 28 + "line": 2846, + "column": 24 } } }, @@ -372208,17 +375978,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 111560, - "end": 111569, + "value": "positionsCompressed", + "start": 112293, + "end": 112312, "loc": { "start": { - "line": 2830, - "column": 28 + "line": 2846, + "column": 24 }, "end": { - "line": 2830, - "column": 37 + "line": 2846, + "column": 43 } } }, @@ -372236,16 +376006,16 @@ "updateContext": null }, "value": "=", - "start": 111570, - "end": 111571, + "start": 112313, + "end": 112314, "loc": { "start": { - "line": 2830, - "column": 38 + "line": 2846, + "column": 44 }, "end": { - "line": 2830, - "column": 39 + "line": 2846, + "column": 45 } } }, @@ -372261,50 +376031,24 @@ "postfix": false, "binop": null }, - "value": "rtcPositions", - "start": 111572, - "end": 111584, + "value": "quantizePositions", + "start": 112315, + "end": 112332, "loc": { "start": { - "line": 2830, - "column": 40 + "line": 2846, + "column": 46 }, "end": { - "line": 2830, - "column": 52 + "line": 2846, + "column": 63 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 111584, - "end": 111585, - "loc": { - "start": { - "line": 2830, - "column": 52 - }, - "end": { - "line": 2830, - "column": 53 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -372313,43 +376057,16 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 111610, - "end": 111613, - "loc": { - "start": { - "line": 2831, - "column": 24 - }, - "end": { - "line": 2831, - "column": 27 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 111613, - "end": 111614, + "start": 112332, + "end": 112333, "loc": { "start": { - "line": 2831, - "column": 27 + "line": 2846, + "column": 63 }, "end": { - "line": 2831, - "column": 28 + "line": 2846, + "column": 64 } } }, @@ -372365,44 +376082,43 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 111614, - "end": 111620, + "value": "cfg", + "start": 112333, + "end": 112336, "loc": { - "start": { - "line": 2831, - "column": 28 + "start": { + "line": 2846, + "column": 64 }, "end": { - "line": 2831, - "column": 34 + "line": 2846, + "column": 67 } } }, { "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": 111621, - "end": 111622, + "start": 112336, + "end": 112337, "loc": { "start": { - "line": 2831, - "column": 35 + "line": 2846, + "column": 67 }, "end": { - "line": 2831, - "column": 36 + "line": 2846, + "column": 68 } } }, @@ -372418,24 +376134,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 111623, - "end": 111627, + "value": "positions", + "start": 112337, + "end": 112346, "loc": { "start": { - "line": 2831, - "column": 37 + "line": 2846, + "column": 68 }, "end": { - "line": 2831, - "column": 41 + "line": 2846, + "column": 77 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -372445,16 +376161,16 @@ "binop": null, "updateContext": null }, - "start": 111627, - "end": 111628, + "start": 112346, + "end": 112347, "loc": { "start": { - "line": 2831, - "column": 41 + "line": 2846, + "column": 77 }, "end": { - "line": 2831, - "column": 42 + "line": 2846, + "column": 78 } } }, @@ -372470,42 +376186,43 @@ "postfix": false, "binop": null }, - "value": "addVec3", - "start": 111628, - "end": 111635, + "value": "aabb", + "start": 112348, + "end": 112352, "loc": { "start": { - "line": 2831, - "column": 42 + "line": 2846, + "column": 79 }, "end": { - "line": 2831, - "column": 49 + "line": 2846, + "column": 83 } } }, { "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": 111635, - "end": 111636, + "start": 112352, + "end": 112353, "loc": { "start": { - "line": 2831, - "column": 49 + "line": 2846, + "column": 83 }, "end": { - "line": 2831, - "column": 50 + "line": 2846, + "column": 84 } } }, @@ -372522,16 +376239,16 @@ "binop": null }, "value": "cfg", - "start": 111636, - "end": 111639, + "start": 112354, + "end": 112357, "loc": { "start": { - "line": 2831, - "column": 50 + "line": 2846, + "column": 85 }, "end": { - "line": 2831, - "column": 53 + "line": 2846, + "column": 88 } } }, @@ -372548,16 +376265,16 @@ "binop": null, "updateContext": null }, - "start": 111639, - "end": 111640, + "start": 112357, + "end": 112358, "loc": { "start": { - "line": 2831, - "column": 53 + "line": 2846, + "column": 88 }, "end": { - "line": 2831, - "column": 54 + "line": 2846, + "column": 89 } } }, @@ -372573,23 +376290,48 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 111640, - "end": 111646, + "value": "positionsDecodeMatrix", + "start": 112358, + "end": 112379, "loc": { "start": { - "line": 2831, - "column": 54 + "line": 2846, + "column": 89 }, "end": { - "line": 2831, - "column": 60 + "line": 2846, + "column": 110 } } }, { "type": { - "label": ",", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 112379, + "end": 112380, + "loc": { + "start": { + "line": 2846, + "column": 110 + }, + "end": { + "line": 2846, + "column": 111 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -372600,16 +376342,16 @@ "binop": null, "updateContext": null }, - "start": 111646, - "end": 111647, + "start": 112380, + "end": 112381, "loc": { "start": { - "line": 2831, - "column": 60 + "line": 2846, + "column": 111 }, "end": { - "line": 2831, - "column": 61 + "line": 2846, + "column": 112 } } }, @@ -372625,24 +376367,24 @@ "postfix": false, "binop": null }, - "value": "rtcCenter", - "start": 111648, - "end": 111657, + "value": "cfg", + "start": 112402, + "end": 112405, "loc": { "start": { - "line": 2831, - "column": 62 + "line": 2847, + "column": 20 }, "end": { - "line": 2831, - "column": 71 + "line": 2847, + "column": 23 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -372652,16 +376394,16 @@ "binop": null, "updateContext": null }, - "start": 111657, - "end": 111658, + "start": 112405, + "end": 112406, "loc": { "start": { - "line": 2831, - "column": 71 + "line": 2847, + "column": 23 }, "end": { - "line": 2831, - "column": 72 + "line": 2847, + "column": 24 } } }, @@ -372677,93 +376419,96 @@ "postfix": false, "binop": null }, - "value": "rtcCenter", - "start": 111659, - "end": 111668, + "value": "aabb", + "start": 112406, + "end": 112410, "loc": { "start": { - "line": 2831, - "column": 73 + "line": 2847, + "column": 24 }, "end": { - "line": 2831, - "column": 82 + "line": 2847, + "column": 28 } } }, { "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": 111668, - "end": 111669, + "value": "=", + "start": 112411, + "end": 112412, "loc": { "start": { - "line": 2831, - "column": 82 + "line": 2847, + "column": 29 }, "end": { - "line": 2831, - "column": 83 + "line": 2847, + "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": 111669, - "end": 111670, + "value": "aabb", + "start": 112413, + "end": 112417, "loc": { "start": { - "line": 2831, - "column": 83 + "line": 2847, + "column": 31 }, "end": { - "line": 2831, - "column": 84 + "line": 2847, + "column": 35 } } }, { "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": 111691, - "end": 111692, + "start": 112417, + "end": 112418, "loc": { "start": { - "line": 2832, - "column": 20 + "line": 2847, + "column": 35 }, "end": { - "line": 2832, - "column": 21 + "line": 2847, + "column": 36 } } }, @@ -372779,32 +376524,44 @@ "postfix": false, "binop": null }, - "start": 111709, - "end": 111710, + "start": 112436, + "end": 112437, "loc": { "start": { - "line": 2833, + "line": 2849, "column": 16 }, "end": { - "line": 2833, + "line": 2849, "column": 17 } } }, { - "type": "CommentLine", - "value": " COMPRESSION", - "start": 111728, - "end": 111742, + "type": { + "label": "else", + "keyword": "else", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "else", + "start": 112438, + "end": 112442, "loc": { "start": { - "line": 2835, - "column": 16 + "line": 2849, + "column": 18 }, "end": { - "line": 2835, - "column": 30 + "line": 2849, + "column": 22 } } }, @@ -372823,16 +376580,16 @@ "updateContext": null }, "value": "if", - "start": 111760, - "end": 111762, + "start": 112443, + "end": 112445, "loc": { "start": { - "line": 2837, - "column": 16 + "line": 2849, + "column": 23 }, "end": { - "line": 2837, - "column": 18 + "line": 2849, + "column": 25 } } }, @@ -372848,16 +376605,16 @@ "postfix": false, "binop": null }, - "start": 111763, - "end": 111764, + "start": 112446, + "end": 112447, "loc": { "start": { - "line": 2837, - "column": 19 + "line": 2849, + "column": 26 }, "end": { - "line": 2837, - "column": 20 + "line": 2849, + "column": 27 } } }, @@ -372874,16 +376631,16 @@ "binop": null }, "value": "cfg", - "start": 111764, - "end": 111767, + "start": 112447, + "end": 112450, "loc": { "start": { - "line": 2837, - "column": 20 + "line": 2849, + "column": 27 }, "end": { - "line": 2837, - "column": 23 + "line": 2849, + "column": 30 } } }, @@ -372900,16 +376657,16 @@ "binop": null, "updateContext": null }, - "start": 111767, - "end": 111768, + "start": 112450, + "end": 112451, "loc": { "start": { - "line": 2837, - "column": 23 + "line": 2849, + "column": 30 }, "end": { - "line": 2837, - "column": 24 + "line": 2849, + "column": 31 } } }, @@ -372925,17 +376682,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 111768, - "end": 111777, + "value": "positionsCompressed", + "start": 112451, + "end": 112470, "loc": { "start": { - "line": 2837, - "column": 24 + "line": 2849, + "column": 31 }, "end": { - "line": 2837, - "column": 33 + "line": 2849, + "column": 50 } } }, @@ -372951,16 +376708,16 @@ "postfix": false, "binop": null }, - "start": 111777, - "end": 111778, + "start": 112470, + "end": 112471, "loc": { "start": { - "line": 2837, - "column": 33 + "line": 2849, + "column": 50 }, "end": { - "line": 2837, - "column": 34 + "line": 2849, + "column": 51 } } }, @@ -372976,16 +376733,16 @@ "postfix": false, "binop": null }, - "start": 111779, - "end": 111780, + "start": 112472, + "end": 112473, "loc": { "start": { - "line": 2837, - "column": 35 + "line": 2849, + "column": 52 }, "end": { - "line": 2837, - "column": 36 + "line": 2849, + "column": 53 } } }, @@ -373004,15 +376761,15 @@ "updateContext": null }, "value": "const", - "start": 111801, - "end": 111806, + "start": 112494, + "end": 112499, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 20 }, "end": { - "line": 2838, + "line": 2850, "column": 25 } } @@ -373030,15 +376787,15 @@ "binop": null }, "value": "aabb", - "start": 111807, - "end": 111811, + "start": 112500, + "end": 112504, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 26 }, "end": { - "line": 2838, + "line": 2850, "column": 30 } } @@ -373057,15 +376814,15 @@ "updateContext": null }, "value": "=", - "start": 111812, - "end": 111813, + "start": 112505, + "end": 112506, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 31 }, "end": { - "line": 2838, + "line": 2850, "column": 32 } } @@ -373083,15 +376840,15 @@ "binop": null }, "value": "math", - "start": 111814, - "end": 111818, + "start": 112507, + "end": 112511, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 33 }, "end": { - "line": 2838, + "line": 2850, "column": 37 } } @@ -373109,15 +376866,15 @@ "binop": null, "updateContext": null }, - "start": 111818, - "end": 111819, + "start": 112511, + "end": 112512, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 37 }, "end": { - "line": 2838, + "line": 2850, "column": 38 } } @@ -373135,15 +376892,15 @@ "binop": null }, "value": "collapseAABB3", - "start": 111819, - "end": 111832, + "start": 112512, + "end": 112525, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 38 }, "end": { - "line": 2838, + "line": 2850, "column": 51 } } @@ -373160,15 +376917,15 @@ "postfix": false, "binop": null }, - "start": 111832, - "end": 111833, + "start": 112525, + "end": 112526, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 51 }, "end": { - "line": 2838, + "line": 2850, "column": 52 } } @@ -373185,15 +376942,15 @@ "postfix": false, "binop": null }, - "start": 111833, - "end": 111834, + "start": 112526, + "end": 112527, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 52 }, "end": { - "line": 2838, + "line": 2850, "column": 53 } } @@ -373211,15 +376968,15 @@ "binop": null, "updateContext": null }, - "start": 111834, - "end": 111835, + "start": 112527, + "end": 112528, "loc": { "start": { - "line": 2838, + "line": 2850, "column": 53 }, "end": { - "line": 2838, + "line": 2850, "column": 54 } } @@ -373236,17 +376993,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 111856, - "end": 111859, + "value": "math", + "start": 112549, + "end": 112553, "loc": { "start": { - "line": 2839, + "line": 2851, "column": 20 }, "end": { - "line": 2839, - "column": 23 + "line": 2851, + "column": 24 } } }, @@ -373263,16 +377020,16 @@ "binop": null, "updateContext": null }, - "start": 111859, - "end": 111860, + "start": 112553, + "end": 112554, "loc": { "start": { - "line": 2839, - "column": 23 + "line": 2851, + "column": 24 }, "end": { - "line": 2839, - "column": 24 + "line": 2851, + "column": 25 } } }, @@ -373288,44 +377045,42 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 111860, - "end": 111881, + "value": "expandAABB3Points3", + "start": 112554, + "end": 112572, "loc": { "start": { - "line": 2839, - "column": 24 + "line": 2851, + "column": 25 }, "end": { - "line": 2839, - "column": 45 + "line": 2851, + "column": 43 } } }, { "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": 111882, - "end": 111883, + "start": 112572, + "end": 112573, "loc": { "start": { - "line": 2839, - "column": 46 + "line": 2851, + "column": 43 }, "end": { - "line": 2839, - "column": 47 + "line": 2851, + "column": 44 } } }, @@ -373341,24 +377096,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 111884, - "end": 111888, + "value": "aabb", + "start": 112573, + "end": 112577, "loc": { "start": { - "line": 2839, - "column": 48 + "line": 2851, + "column": 44 }, "end": { - "line": 2839, - "column": 52 + "line": 2851, + "column": 48 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -373368,16 +377123,16 @@ "binop": null, "updateContext": null }, - "start": 111888, - "end": 111889, + "start": 112577, + "end": 112578, "loc": { "start": { - "line": 2839, - "column": 52 + "line": 2851, + "column": 48 }, "end": { - "line": 2839, - "column": 53 + "line": 2851, + "column": 49 } } }, @@ -373393,24 +377148,50 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 111889, - "end": 111893, + "value": "cfg", + "start": 112579, + "end": 112582, + "loc": { + "start": { + "line": 2851, + "column": 50 + }, + "end": { + "line": 2851, + "column": 53 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 112582, + "end": 112583, "loc": { "start": { - "line": 2839, + "line": 2851, "column": 53 }, "end": { - "line": 2839, - "column": 57 + "line": 2851, + "column": 54 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -373419,16 +377200,17 @@ "postfix": false, "binop": null }, - "start": 111893, - "end": 111894, + "value": "positionsCompressed", + "start": 112583, + "end": 112602, "loc": { "start": { - "line": 2839, - "column": 57 + "line": 2851, + "column": 54 }, "end": { - "line": 2839, - "column": 58 + "line": 2851, + "column": 73 } } }, @@ -373444,16 +377226,16 @@ "postfix": false, "binop": null }, - "start": 111894, - "end": 111895, + "start": 112602, + "end": 112603, "loc": { "start": { - "line": 2839, - "column": 58 + "line": 2851, + "column": 73 }, "end": { - "line": 2839, - "column": 59 + "line": 2851, + "column": 74 } } }, @@ -373470,16 +377252,16 @@ "binop": null, "updateContext": null }, - "start": 111895, - "end": 111896, + "start": 112603, + "end": 112604, "loc": { "start": { - "line": 2839, - "column": 59 + "line": 2851, + "column": 74 }, "end": { - "line": 2839, - "column": 60 + "line": 2851, + "column": 75 } } }, @@ -373495,17 +377277,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 111917, - "end": 111921, + "value": "geometryCompressionUtils", + "start": 112625, + "end": 112649, "loc": { "start": { - "line": 2840, + "line": 2852, "column": 20 }, "end": { - "line": 2840, - "column": 24 + "line": 2852, + "column": 44 } } }, @@ -373522,16 +377304,16 @@ "binop": null, "updateContext": null }, - "start": 111921, - "end": 111922, + "start": 112649, + "end": 112650, "loc": { "start": { - "line": 2840, - "column": 24 + "line": 2852, + "column": 44 }, "end": { - "line": 2840, - "column": 25 + "line": 2852, + "column": 45 } } }, @@ -373547,17 +377329,17 @@ "postfix": false, "binop": null }, - "value": "expandAABB3Points3", - "start": 111922, - "end": 111940, + "value": "decompressAABB", + "start": 112650, + "end": 112664, "loc": { "start": { - "line": 2840, - "column": 25 + "line": 2852, + "column": 45 }, "end": { - "line": 2840, - "column": 43 + "line": 2852, + "column": 59 } } }, @@ -373573,16 +377355,16 @@ "postfix": false, "binop": null }, - "start": 111940, - "end": 111941, + "start": 112664, + "end": 112665, "loc": { "start": { - "line": 2840, - "column": 43 + "line": 2852, + "column": 59 }, "end": { - "line": 2840, - "column": 44 + "line": 2852, + "column": 60 } } }, @@ -373599,16 +377381,16 @@ "binop": null }, "value": "aabb", - "start": 111941, - "end": 111945, + "start": 112665, + "end": 112669, "loc": { "start": { - "line": 2840, - "column": 44 + "line": 2852, + "column": 60 }, "end": { - "line": 2840, - "column": 48 + "line": 2852, + "column": 64 } } }, @@ -373625,16 +377407,16 @@ "binop": null, "updateContext": null }, - "start": 111945, - "end": 111946, + "start": 112669, + "end": 112670, "loc": { "start": { - "line": 2840, - "column": 48 + "line": 2852, + "column": 64 }, "end": { - "line": 2840, - "column": 49 + "line": 2852, + "column": 65 } } }, @@ -373651,16 +377433,16 @@ "binop": null }, "value": "cfg", - "start": 111947, - "end": 111950, + "start": 112671, + "end": 112674, "loc": { "start": { - "line": 2840, - "column": 50 + "line": 2852, + "column": 66 }, "end": { - "line": 2840, - "column": 53 + "line": 2852, + "column": 69 } } }, @@ -373677,16 +377459,16 @@ "binop": null, "updateContext": null }, - "start": 111950, - "end": 111951, + "start": 112674, + "end": 112675, "loc": { "start": { - "line": 2840, - "column": 53 + "line": 2852, + "column": 69 }, "end": { - "line": 2840, - "column": 54 + "line": 2852, + "column": 70 } } }, @@ -373702,17 +377484,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 111951, - "end": 111960, + "value": "positionsDecodeMatrix", + "start": 112675, + "end": 112696, "loc": { "start": { - "line": 2840, - "column": 54 + "line": 2852, + "column": 70 }, "end": { - "line": 2840, - "column": 63 + "line": 2852, + "column": 91 } } }, @@ -373728,16 +377510,16 @@ "postfix": false, "binop": null }, - "start": 111960, - "end": 111961, + "start": 112696, + "end": 112697, "loc": { "start": { - "line": 2840, - "column": 63 + "line": 2852, + "column": 91 }, "end": { - "line": 2840, - "column": 64 + "line": 2852, + "column": 92 } } }, @@ -373754,16 +377536,16 @@ "binop": null, "updateContext": null }, - "start": 111961, - "end": 111962, + "start": 112697, + "end": 112698, "loc": { "start": { - "line": 2840, - "column": 64 + "line": 2852, + "column": 92 }, "end": { - "line": 2840, - "column": 65 + "line": 2852, + "column": 93 } } }, @@ -373780,15 +377562,15 @@ "binop": null }, "value": "cfg", - "start": 111983, - "end": 111986, + "start": 112719, + "end": 112722, "loc": { "start": { - "line": 2841, + "line": 2853, "column": 20 }, "end": { - "line": 2841, + "line": 2853, "column": 23 } } @@ -373806,15 +377588,15 @@ "binop": null, "updateContext": null }, - "start": 111986, - "end": 111987, + "start": 112722, + "end": 112723, "loc": { "start": { - "line": 2841, + "line": 2853, "column": 23 }, "end": { - "line": 2841, + "line": 2853, "column": 24 } } @@ -373831,17 +377613,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 111987, - "end": 112006, + "value": "aabb", + "start": 112723, + "end": 112727, "loc": { "start": { - "line": 2841, + "line": 2853, "column": 24 }, "end": { - "line": 2841, - "column": 43 + "line": 2853, + "column": 28 } } }, @@ -373859,16 +377641,16 @@ "updateContext": null }, "value": "=", - "start": 112007, - "end": 112008, + "start": 112728, + "end": 112729, "loc": { "start": { - "line": 2841, - "column": 44 + "line": 2853, + "column": 29 }, "end": { - "line": 2841, - "column": 45 + "line": 2853, + "column": 30 } } }, @@ -373884,50 +377666,51 @@ "postfix": false, "binop": null }, - "value": "quantizePositions", - "start": 112009, - "end": 112026, + "value": "aabb", + "start": 112730, + "end": 112734, "loc": { "start": { - "line": 2841, - "column": 46 + "line": 2853, + "column": 31 }, "end": { - "line": 2841, - "column": 63 + "line": 2853, + "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": 112026, - "end": 112027, + "start": 112734, + "end": 112735, "loc": { "start": { - "line": 2841, - "column": 63 + "line": 2853, + "column": 35 }, "end": { - "line": 2841, - "column": 64 + "line": 2853, + "column": 36 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -373935,23 +377718,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 112027, - "end": 112030, + "start": 112753, + "end": 112754, "loc": { "start": { - "line": 2841, - "column": 64 + "line": 2855, + "column": 16 }, "end": { - "line": 2841, - "column": 67 + "line": 2855, + "column": 17 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -373962,23 +377745,24 @@ "binop": null, "updateContext": null }, - "start": 112030, - "end": 112031, + "value": "if", + "start": 112771, + "end": 112773, "loc": { "start": { - "line": 2841, - "column": 67 + "line": 2856, + "column": 16 }, "end": { - "line": 2841, - "column": 68 + "line": 2856, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -373987,103 +377771,102 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 112031, - "end": 112040, + "start": 112774, + "end": 112775, "loc": { "start": { - "line": 2841, - "column": 68 + "line": 2856, + "column": 19 }, "end": { - "line": 2841, - "column": 77 + "line": 2856, + "column": 20 } } }, { "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": 112040, - "end": 112041, + "value": "cfg", + "start": 112775, + "end": 112778, "loc": { "start": { - "line": 2841, - "column": 77 + "line": 2856, + "column": 20 }, "end": { - "line": 2841, - "column": 78 + "line": 2856, + "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": "aabb", - "start": 112042, - "end": 112046, + "start": 112778, + "end": 112779, "loc": { "start": { - "line": 2841, - "column": 79 + "line": 2856, + "column": 23 }, "end": { - "line": 2841, - "column": 83 + "line": 2856, + "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": 112046, - "end": 112047, + "value": "buckets", + "start": 112779, + "end": 112786, "loc": { "start": { - "line": 2841, - "column": 83 + "line": 2856, + "column": 24 }, "end": { - "line": 2841, - "column": 84 + "line": 2856, + "column": 31 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -374091,77 +377874,77 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 112048, - "end": 112051, + "start": 112786, + "end": 112787, "loc": { "start": { - "line": 2841, - "column": 85 + "line": 2856, + "column": 31 }, "end": { - "line": 2841, - "column": 88 + "line": 2856, + "column": 32 } } }, { "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": 112051, - "end": 112052, + "start": 112788, + "end": 112789, "loc": { "start": { - "line": 2841, - "column": 88 + "line": 2856, + "column": 33 }, "end": { - "line": 2841, - "column": 89 + "line": 2856, + "column": 34 } } }, { "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": "positionsDecodeMatrix", - "start": 112052, - "end": 112073, + "value": "const", + "start": 112810, + "end": 112815, "loc": { "start": { - "line": 2841, - "column": 89 + "line": 2857, + "column": 20 }, "end": { - "line": 2841, - "column": 110 + "line": 2857, + "column": 25 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -374169,42 +377952,44 @@ "postfix": false, "binop": null }, - "start": 112073, - "end": 112074, + "value": "aabb", + "start": 112816, + "end": 112820, "loc": { "start": { - "line": 2841, - "column": 110 + "line": 2857, + "column": 26 }, "end": { - "line": 2841, - "column": 111 + "line": 2857, + "column": 30 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 112074, - "end": 112075, + "value": "=", + "start": 112821, + "end": 112822, "loc": { "start": { - "line": 2841, - "column": 111 + "line": 2857, + "column": 31 }, "end": { - "line": 2841, - "column": 112 + "line": 2857, + "column": 32 } } }, @@ -374220,17 +378005,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 112096, - "end": 112099, + "value": "math", + "start": 112823, + "end": 112827, "loc": { "start": { - "line": 2842, - "column": 20 + "line": 2857, + "column": 33 }, "end": { - "line": 2842, - "column": 23 + "line": 2857, + "column": 37 } } }, @@ -374247,16 +378032,16 @@ "binop": null, "updateContext": null }, - "start": 112099, - "end": 112100, + "start": 112827, + "end": 112828, "loc": { "start": { - "line": 2842, - "column": 23 + "line": 2857, + "column": 37 }, "end": { - "line": 2842, - "column": 24 + "line": 2857, + "column": 38 } } }, @@ -374272,52 +378057,50 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112100, - "end": 112104, + "value": "collapseAABB3", + "start": 112828, + "end": 112841, "loc": { "start": { - "line": 2842, - "column": 24 + "line": 2857, + "column": 38 }, "end": { - "line": 2842, - "column": 28 + "line": 2857, + "column": 51 } } }, { "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": 112105, - "end": 112106, + "start": 112841, + "end": 112842, "loc": { "start": { - "line": 2842, - "column": 29 + "line": 2857, + "column": 51 }, "end": { - "line": 2842, - "column": 30 + "line": 2857, + "column": 52 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -374325,17 +378108,16 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112107, - "end": 112111, + "start": 112842, + "end": 112843, "loc": { "start": { - "line": 2842, - "column": 31 + "line": 2857, + "column": 52 }, "end": { - "line": 2842, - "column": 35 + "line": 2857, + "column": 53 } } }, @@ -374352,76 +378134,76 @@ "binop": null, "updateContext": null }, - "start": 112111, - "end": 112112, + "start": 112843, + "end": 112844, "loc": { "start": { - "line": 2842, - "column": 35 + "line": 2857, + "column": 53 }, "end": { - "line": 2842, - "column": 36 + "line": 2857, + "column": 54 } } }, { "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": 112130, - "end": 112131, + "value": "for", + "start": 112865, + "end": 112868, "loc": { "start": { - "line": 2844, - "column": 16 + "line": 2858, + "column": 20 }, "end": { - "line": 2844, - "column": 17 + "line": 2858, + "column": 23 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "else", - "start": 112132, - "end": 112136, + "start": 112869, + "end": 112870, "loc": { "start": { - "line": 2844, - "column": 18 + "line": 2858, + "column": 24 }, "end": { - "line": 2844, - "column": 22 + "line": 2858, + "column": 25 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -374432,24 +378214,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 112137, - "end": 112139, + "value": "let", + "start": 112870, + "end": 112873, "loc": { "start": { - "line": 2844, - "column": 23 + "line": 2858, + "column": 25 }, "end": { - "line": 2844, - "column": 25 + "line": 2858, + "column": 28 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -374458,22 +378240,50 @@ "postfix": false, "binop": null }, - "start": 112140, - "end": 112141, + "value": "i", + "start": 112874, + "end": 112875, "loc": { "start": { - "line": 2844, - "column": 26 + "line": 2858, + "column": 29 }, "end": { - "line": 2844, - "column": 27 + "line": 2858, + "column": 30 } } }, { "type": { - "label": "name", + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 112876, + "end": 112877, + "loc": { + "start": { + "line": 2858, + "column": 31 + }, + "end": { + "line": 2858, + "column": 32 + } + } + }, + { + "type": { + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -374481,26 +378291,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 112141, - "end": 112144, + "value": 0, + "start": 112878, + "end": 112879, "loc": { "start": { - "line": 2844, - "column": 27 + "line": 2858, + "column": 33 }, "end": { - "line": 2844, - "column": 30 + "line": 2858, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -374510,16 +378321,16 @@ "binop": null, "updateContext": null }, - "start": 112144, - "end": 112145, + "start": 112879, + "end": 112880, "loc": { "start": { - "line": 2844, - "column": 30 + "line": 2858, + "column": 34 }, "end": { - "line": 2844, - "column": 31 + "line": 2858, + "column": 35 } } }, @@ -374535,49 +378346,51 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 112145, - "end": 112164, + "value": "len", + "start": 112881, + "end": 112884, "loc": { "start": { - "line": 2844, - "column": 31 + "line": 2858, + "column": 36 }, "end": { - "line": 2844, - "column": 50 + "line": 2858, + "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": 112164, - "end": 112165, + "value": "=", + "start": 112885, + "end": 112886, "loc": { "start": { - "line": 2844, - "column": 50 + "line": 2858, + "column": 40 }, "end": { - "line": 2844, - "column": 51 + "line": 2858, + "column": 41 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -374586,23 +378399,23 @@ "postfix": false, "binop": null }, - "start": 112166, - "end": 112167, + "value": "cfg", + "start": 112887, + "end": 112890, "loc": { "start": { - "line": 2844, - "column": 52 + "line": 2858, + "column": 42 }, "end": { - "line": 2844, - "column": 53 + "line": 2858, + "column": 45 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -374613,17 +378426,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 112188, - "end": 112193, + "start": 112890, + "end": 112891, "loc": { "start": { - "line": 2845, - "column": 20 + "line": 2858, + "column": 45 }, "end": { - "line": 2845, - "column": 25 + "line": 2858, + "column": 46 } } }, @@ -374639,44 +378451,43 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112194, - "end": 112198, + "value": "buckets", + "start": 112891, + "end": 112898, "loc": { "start": { - "line": 2845, - "column": 26 + "line": 2858, + "column": 46 }, "end": { - "line": 2845, - "column": 30 + "line": 2858, + "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 }, - "value": "=", - "start": 112199, - "end": 112200, + "start": 112898, + "end": 112899, "loc": { "start": { - "line": 2845, - "column": 31 + "line": 2858, + "column": 53 }, "end": { - "line": 2845, - "column": 32 + "line": 2858, + "column": 54 } } }, @@ -374692,24 +378503,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 112201, - "end": 112205, + "value": "length", + "start": 112899, + "end": 112905, "loc": { "start": { - "line": 2845, - "column": 33 + "line": 2858, + "column": 54 }, "end": { - "line": 2845, - "column": 37 + "line": 2858, + "column": 60 } } }, { - "type": { - "label": ".", - "beforeExpr": false, + "type": { + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -374719,16 +378530,16 @@ "binop": null, "updateContext": null }, - "start": 112205, - "end": 112206, + "start": 112905, + "end": 112906, "loc": { "start": { - "line": 2845, - "column": 37 + "line": 2858, + "column": 60 }, "end": { - "line": 2845, - "column": 38 + "line": 2858, + "column": 61 } } }, @@ -374744,50 +378555,52 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 112206, - "end": 112219, + "value": "i", + "start": 112907, + "end": 112908, "loc": { "start": { - "line": 2845, - "column": 38 + "line": 2858, + "column": 62 }, "end": { - "line": 2845, - "column": 51 + "line": 2858, + "column": 63 } } }, { "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": 112219, - "end": 112220, + "value": "<", + "start": 112909, + "end": 112910, "loc": { "start": { - "line": 2845, - "column": 51 + "line": 2858, + "column": 64 }, "end": { - "line": 2845, - "column": 52 + "line": 2858, + "column": 65 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -374795,16 +378608,17 @@ "postfix": false, "binop": null }, - "start": 112220, - "end": 112221, + "value": "len", + "start": 112911, + "end": 112914, "loc": { "start": { - "line": 2845, - "column": 52 + "line": 2858, + "column": 66 }, "end": { - "line": 2845, - "column": 53 + "line": 2858, + "column": 69 } } }, @@ -374821,16 +378635,16 @@ "binop": null, "updateContext": null }, - "start": 112221, - "end": 112222, + "start": 112914, + "end": 112915, "loc": { "start": { - "line": 2845, - "column": 53 + "line": 2858, + "column": 69 }, "end": { - "line": 2845, - "column": 54 + "line": 2858, + "column": 70 } } }, @@ -374846,51 +378660,51 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 112243, - "end": 112247, + "value": "i", + "start": 112916, + "end": 112917, "loc": { "start": { - "line": 2846, - "column": 20 + "line": 2858, + "column": 71 }, "end": { - "line": 2846, - "column": 24 + "line": 2858, + "column": 72 } } }, { "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": 112247, - "end": 112248, + "value": "++", + "start": 112917, + "end": 112919, "loc": { "start": { - "line": 2846, - "column": 24 + "line": 2858, + "column": 72 }, "end": { - "line": 2846, - "column": 25 + "line": 2858, + "column": 74 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -374898,23 +378712,22 @@ "postfix": false, "binop": null }, - "value": "expandAABB3Points3", - "start": 112248, - "end": 112266, + "start": 112919, + "end": 112920, "loc": { "start": { - "line": 2846, - "column": 25 + "line": 2858, + "column": 74 }, "end": { - "line": 2846, - "column": 43 + "line": 2858, + "column": 75 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -374924,16 +378737,44 @@ "postfix": false, "binop": null }, - "start": 112266, - "end": 112267, + "start": 112921, + "end": 112922, "loc": { "start": { - "line": 2846, - "column": 43 + "line": 2858, + "column": 76 }, "end": { - "line": 2846, - "column": 44 + "line": 2858, + "column": 77 + } + } + }, + { + "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": 112947, + "end": 112952, + "loc": { + "start": { + "line": 2859, + "column": 24 + }, + "end": { + "line": 2859, + "column": 29 } } }, @@ -374949,43 +378790,44 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112267, - "end": 112271, + "value": "bucket", + "start": 112953, + "end": 112959, "loc": { "start": { - "line": 2846, - "column": 44 + "line": 2859, + "column": 30 }, "end": { - "line": 2846, - "column": 48 + "line": 2859, + "column": 36 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 112271, - "end": 112272, + "value": "=", + "start": 112960, + "end": 112961, "loc": { "start": { - "line": 2846, - "column": 48 + "line": 2859, + "column": 37 }, "end": { - "line": 2846, - "column": 49 + "line": 2859, + "column": 38 } } }, @@ -375002,16 +378844,16 @@ "binop": null }, "value": "cfg", - "start": 112273, - "end": 112276, + "start": 112962, + "end": 112965, "loc": { "start": { - "line": 2846, - "column": 50 + "line": 2859, + "column": 39 }, "end": { - "line": 2846, - "column": 53 + "line": 2859, + "column": 42 } } }, @@ -375028,16 +378870,16 @@ "binop": null, "updateContext": null }, - "start": 112276, - "end": 112277, + "start": 112965, + "end": 112966, "loc": { "start": { - "line": 2846, - "column": 53 + "line": 2859, + "column": 42 }, "end": { - "line": 2846, - "column": 54 + "line": 2859, + "column": 43 } } }, @@ -375053,101 +378895,102 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 112277, - "end": 112296, + "value": "buckets", + "start": 112966, + "end": 112973, "loc": { "start": { - "line": 2846, - "column": 54 + "line": 2859, + "column": 43 }, "end": { - "line": 2846, - "column": 73 + "line": 2859, + "column": 50 } } }, { "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": 112296, - "end": 112297, + "start": 112973, + "end": 112974, "loc": { "start": { - "line": 2846, - "column": 73 + "line": 2859, + "column": 50 }, "end": { - "line": 2846, - "column": 74 + "line": 2859, + "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": 112297, - "end": 112298, + "value": "i", + "start": 112974, + "end": 112975, "loc": { "start": { - "line": 2846, - "column": 74 + "line": 2859, + "column": 51 }, "end": { - "line": 2846, - "column": 75 + "line": 2859, + "column": 52 } } }, { "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": "geometryCompressionUtils", - "start": 112319, - "end": 112343, + "start": 112975, + "end": 112976, "loc": { "start": { - "line": 2847, - "column": 20 + "line": 2859, + "column": 52 }, "end": { - "line": 2847, - "column": 44 + "line": 2859, + "column": 53 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -375157,42 +379000,44 @@ "binop": null, "updateContext": null }, - "start": 112343, - "end": 112344, + "start": 112976, + "end": 112977, "loc": { "start": { - "line": 2847, - "column": 44 + "line": 2859, + "column": 53 }, "end": { - "line": 2847, - "column": 45 + "line": 2859, + "column": 54 } } }, { "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": "decompressAABB", - "start": 112344, - "end": 112358, + "value": "if", + "start": 113002, + "end": 113004, "loc": { "start": { - "line": 2847, - "column": 45 + "line": 2860, + "column": 24 }, "end": { - "line": 2847, - "column": 59 + "line": 2860, + "column": 26 } } }, @@ -375208,16 +379053,16 @@ "postfix": false, "binop": null }, - "start": 112358, - "end": 112359, + "start": 113005, + "end": 113006, "loc": { "start": { - "line": 2847, - "column": 59 + "line": 2860, + "column": 27 }, "end": { - "line": 2847, - "column": 60 + "line": 2860, + "column": 28 } } }, @@ -375233,24 +379078,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112359, - "end": 112363, + "value": "bucket", + "start": 113006, + "end": 113012, "loc": { "start": { - "line": 2847, - "column": 60 + "line": 2860, + "column": 28 }, "end": { - "line": 2847, - "column": 64 + "line": 2860, + "column": 34 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -375260,16 +379105,16 @@ "binop": null, "updateContext": null }, - "start": 112363, - "end": 112364, + "start": 113012, + "end": 113013, "loc": { "start": { - "line": 2847, - "column": 64 + "line": 2860, + "column": 34 }, "end": { - "line": 2847, - "column": 65 + "line": 2860, + "column": 35 } } }, @@ -375285,23 +379130,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 112365, - "end": 112368, + "value": "positions", + "start": 113013, + "end": 113022, "loc": { "start": { - "line": 2847, - "column": 66 + "line": 2860, + "column": 35 }, "end": { - "line": 2847, - "column": 69 + "line": 2860, + "column": 44 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -375309,26 +379154,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 112368, - "end": 112369, + "start": 113022, + "end": 113023, "loc": { "start": { - "line": 2847, - "column": 69 + "line": 2860, + "column": 44 }, "end": { - "line": 2847, - "column": 70 + "line": 2860, + "column": 45 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -375337,25 +379181,24 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 112369, - "end": 112390, + "start": 113024, + "end": 113025, "loc": { "start": { - "line": 2847, - "column": 70 + "line": 2860, + "column": 46 }, "end": { - "line": 2847, - "column": 91 + "line": 2860, + "column": 47 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -375363,23 +379206,24 @@ "postfix": false, "binop": null }, - "start": 112390, - "end": 112391, + "value": "math", + "start": 113054, + "end": 113058, "loc": { "start": { - "line": 2847, - "column": 91 + "line": 2861, + "column": 28 }, "end": { - "line": 2847, - "column": 92 + "line": 2861, + "column": 32 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -375389,16 +379233,16 @@ "binop": null, "updateContext": null }, - "start": 112391, - "end": 112392, + "start": 113058, + "end": 113059, "loc": { "start": { - "line": 2847, - "column": 92 + "line": 2861, + "column": 32 }, "end": { - "line": 2847, - "column": 93 + "line": 2861, + "column": 33 } } }, @@ -375414,43 +379258,42 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 112413, - "end": 112416, + "value": "expandAABB3Points3", + "start": 113059, + "end": 113077, "loc": { "start": { - "line": 2848, - "column": 20 + "line": 2861, + "column": 33 }, "end": { - "line": 2848, - "column": 23 + "line": 2861, + "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, - "updateContext": null + "binop": null }, - "start": 112416, - "end": 112417, + "start": 113077, + "end": 113078, "loc": { "start": { - "line": 2848, - "column": 23 + "line": 2861, + "column": 51 }, "end": { - "line": 2848, - "column": 24 + "line": 2861, + "column": 52 } } }, @@ -375467,43 +379310,42 @@ "binop": null }, "value": "aabb", - "start": 112417, - "end": 112421, + "start": 113078, + "end": 113082, "loc": { "start": { - "line": 2848, - "column": 24 + "line": 2861, + "column": 52 }, "end": { - "line": 2848, - "column": 28 + "line": 2861, + "column": 56 } } }, { "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": 112422, - "end": 112423, + "start": 113082, + "end": 113083, "loc": { "start": { - "line": 2848, - "column": 29 + "line": 2861, + "column": 56 }, "end": { - "line": 2848, - "column": 30 + "line": 2861, + "column": 57 } } }, @@ -375519,24 +379361,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112424, - "end": 112428, + "value": "bucket", + "start": 113084, + "end": 113090, "loc": { "start": { - "line": 2848, - "column": 31 + "line": 2861, + "column": 58 }, "end": { - "line": 2848, - "column": 35 + "line": 2861, + "column": 64 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -375546,24 +379388,24 @@ "binop": null, "updateContext": null }, - "start": 112428, - "end": 112429, + "start": 113090, + "end": 113091, "loc": { "start": { - "line": 2848, - "column": 35 + "line": 2861, + "column": 64 }, "end": { - "line": 2848, - "column": 36 + "line": 2861, + "column": 65 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -375571,23 +379413,23 @@ "postfix": false, "binop": null }, - "start": 112447, - "end": 112448, + "value": "positions", + "start": 113091, + "end": 113100, "loc": { "start": { - "line": 2850, - "column": 16 + "line": 2861, + "column": 65 }, "end": { - "line": 2850, - "column": 17 + "line": 2861, + "column": 74 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -375595,53 +379437,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 112465, - "end": 112467, + "start": 113100, + "end": 113101, "loc": { "start": { - "line": 2851, - "column": 16 + "line": 2861, + "column": 74 }, "end": { - "line": 2851, - "column": 18 + "line": 2861, + "column": 75 } } }, { "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": 112468, - "end": 112469, + "start": 113101, + "end": 113102, "loc": { "start": { - "line": 2851, - "column": 19 + "line": 2861, + "column": 75 }, "end": { - "line": 2851, - "column": 20 + "line": 2861, + "column": 76 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -375649,24 +379490,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 112469, - "end": 112472, + "start": 113127, + "end": 113128, "loc": { "start": { - "line": 2851, - "column": 20 + "line": 2862, + "column": 24 }, "end": { - "line": 2851, - "column": 23 + "line": 2862, + "column": 25 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -375676,50 +379517,53 @@ "binop": null, "updateContext": null }, - "start": 112472, - "end": 112473, + "value": "else", + "start": 113129, + "end": 113133, "loc": { "start": { - "line": 2851, - "column": 23 + "line": 2862, + "column": 26 }, "end": { - "line": 2851, - "column": 24 + "line": 2862, + "column": 30 } } }, { "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": "buckets", - "start": 112473, - "end": 112480, + "value": "if", + "start": 113134, + "end": 113136, "loc": { "start": { - "line": 2851, - "column": 24 + "line": 2862, + "column": 31 }, "end": { - "line": 2851, - "column": 31 + "line": 2862, + "column": 33 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -375727,23 +379571,23 @@ "postfix": false, "binop": null }, - "start": 112480, - "end": 112481, + "start": 113137, + "end": 113138, "loc": { "start": { - "line": 2851, - "column": 31 + "line": 2862, + "column": 34 }, "end": { - "line": 2851, - "column": 32 + "line": 2862, + "column": 35 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -375752,23 +379596,23 @@ "postfix": false, "binop": null }, - "start": 112482, - "end": 112483, + "value": "bucket", + "start": 113138, + "end": 113144, "loc": { "start": { - "line": 2851, - "column": 33 + "line": 2862, + "column": 35 }, "end": { - "line": 2851, - "column": 34 + "line": 2862, + "column": 41 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -375779,17 +379623,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 112504, - "end": 112509, + "start": 113144, + "end": 113145, "loc": { "start": { - "line": 2852, - "column": 20 + "line": 2862, + "column": 41 }, "end": { - "line": 2852, - "column": 25 + "line": 2862, + "column": 42 } } }, @@ -375805,44 +379648,67 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112510, - "end": 112514, + "value": "positionsCompressed", + "start": 113145, + "end": 113164, "loc": { "start": { - "line": 2852, - "column": 26 + "line": 2862, + "column": 42 }, "end": { - "line": 2852, - "column": 30 + "line": 2862, + "column": 61 } } }, { "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": 112515, - "end": 112516, + "start": 113164, + "end": 113165, "loc": { "start": { - "line": 2852, - "column": 31 + "line": 2862, + "column": 61 }, "end": { - "line": 2852, - "column": 32 + "line": 2862, + "column": 62 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 113166, + "end": 113167, + "loc": { + "start": { + "line": 2862, + "column": 63 + }, + "end": { + "line": 2862, + "column": 64 } } }, @@ -375859,16 +379725,16 @@ "binop": null }, "value": "math", - "start": 112517, - "end": 112521, + "start": 113196, + "end": 113200, "loc": { "start": { - "line": 2852, - "column": 33 + "line": 2863, + "column": 28 }, "end": { - "line": 2852, - "column": 37 + "line": 2863, + "column": 32 } } }, @@ -375885,16 +379751,16 @@ "binop": null, "updateContext": null }, - "start": 112521, - "end": 112522, + "start": 113200, + "end": 113201, "loc": { "start": { - "line": 2852, - "column": 37 + "line": 2863, + "column": 32 }, "end": { - "line": 2852, - "column": 38 + "line": 2863, + "column": 33 } } }, @@ -375910,16 +379776,16 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 112522, - "end": 112535, + "value": "expandAABB3Points3", + "start": 113201, + "end": 113219, "loc": { "start": { - "line": 2852, - "column": 38 + "line": 2863, + "column": 33 }, "end": { - "line": 2852, + "line": 2863, "column": 51 } } @@ -375936,24 +379802,24 @@ "postfix": false, "binop": null }, - "start": 112535, - "end": 112536, + "start": 113219, + "end": 113220, "loc": { "start": { - "line": 2852, + "line": 2863, "column": 51 }, "end": { - "line": 2852, + "line": 2863, "column": 52 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -375961,22 +379827,23 @@ "postfix": false, "binop": null }, - "start": 112536, - "end": 112537, + "value": "aabb", + "start": 113220, + "end": 113224, "loc": { "start": { - "line": 2852, + "line": 2863, "column": 52 }, "end": { - "line": 2852, - "column": 53 + "line": 2863, + "column": 56 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -375987,105 +379854,102 @@ "binop": null, "updateContext": null }, - "start": 112537, - "end": 112538, + "start": 113224, + "end": 113225, "loc": { "start": { - "line": 2852, - "column": 53 + "line": 2863, + "column": 56 }, "end": { - "line": 2852, - "column": 54 + "line": 2863, + "column": 57 } } }, { "type": { - "label": "for", - "keyword": "for", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "for", - "start": 112559, - "end": 112562, + "value": "bucket", + "start": 113226, + "end": 113232, "loc": { "start": { - "line": 2853, - "column": 20 + "line": 2863, + "column": 58 }, "end": { - "line": 2853, - "column": 23 + "line": 2863, + "column": 64 } } }, { "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": 112563, - "end": 112564, + "start": 113232, + "end": 113233, "loc": { "start": { - "line": 2853, - "column": 24 + "line": 2863, + "column": 64 }, "end": { - "line": 2853, - "column": 25 + "line": 2863, + "column": 65 } } }, { "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": 112564, - "end": 112567, + "value": "positionsCompressed", + "start": 113233, + "end": 113252, "loc": { "start": { - "line": 2853, - "column": 25 + "line": 2863, + "column": 65 }, "end": { - "line": 2853, - "column": 28 + "line": 2863, + "column": 84 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -376093,150 +379957,145 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 112568, - "end": 112569, + "start": 113252, + "end": 113253, "loc": { "start": { - "line": 2853, - "column": 29 + "line": 2863, + "column": 84 }, "end": { - "line": 2853, - "column": 30 + "line": 2863, + "column": 85 } } }, { "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": 112570, - "end": 112571, + "start": 113253, + "end": 113254, "loc": { "start": { - "line": 2853, - "column": 31 + "line": 2863, + "column": 85 }, "end": { - "line": 2853, - "column": 32 + "line": 2863, + "column": 86 } } }, { "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": 112572, - "end": 112573, + "start": 113279, + "end": 113280, "loc": { "start": { - "line": 2853, - "column": 33 + "line": 2864, + "column": 24 }, "end": { - "line": 2853, - "column": 34 + "line": 2864, + "column": 25 } } }, { "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": 112573, - "end": 112574, + "start": 113301, + "end": 113302, "loc": { "start": { - "line": 2853, - "column": 34 + "line": 2865, + "column": 20 }, "end": { - "line": 2853, - "column": 35 + "line": 2865, + "column": 21 } } }, { "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": 112575, - "end": 112578, + "value": "if", + "start": 113323, + "end": 113325, "loc": { "start": { - "line": 2853, - "column": 36 + "line": 2866, + "column": 20 }, "end": { - "line": 2853, - "column": 39 + "line": 2866, + "column": 22 } } }, { "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": 112579, - "end": 112580, + "start": 113326, + "end": 113327, "loc": { "start": { - "line": 2853, - "column": 40 + "line": 2866, + "column": 23 }, "end": { - "line": 2853, - "column": 41 + "line": 2866, + "column": 24 } } }, @@ -376253,16 +380112,16 @@ "binop": null }, "value": "cfg", - "start": 112581, - "end": 112584, + "start": 113327, + "end": 113330, "loc": { "start": { - "line": 2853, - "column": 42 + "line": 2866, + "column": 24 }, "end": { - "line": 2853, - "column": 45 + "line": 2866, + "column": 27 } } }, @@ -376279,16 +380138,16 @@ "binop": null, "updateContext": null }, - "start": 112584, - "end": 112585, + "start": 113330, + "end": 113331, "loc": { "start": { - "line": 2853, - "column": 45 + "line": 2866, + "column": 27 }, "end": { - "line": 2853, - "column": 46 + "line": 2866, + "column": 28 } } }, @@ -376304,23 +380163,23 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 112585, - "end": 112592, + "value": "positionsDecodeMatrix", + "start": 113331, + "end": 113352, "loc": { "start": { - "line": 2853, - "column": 46 + "line": 2866, + "column": 28 }, "end": { - "line": 2853, - "column": 53 + "line": 2866, + "column": 49 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -376328,19 +380187,43 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 112592, - "end": 112593, + "start": 113352, + "end": 113353, "loc": { "start": { - "line": 2853, - "column": 53 + "line": 2866, + "column": 49 }, "end": { - "line": 2853, - "column": 54 + "line": 2866, + "column": 50 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 113354, + "end": 113355, + "loc": { + "start": { + "line": 2866, + "column": 51 + }, + "end": { + "line": 2866, + "column": 52 } } }, @@ -376356,24 +380239,24 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 112593, - "end": 112599, + "value": "geometryCompressionUtils", + "start": 113380, + "end": 113404, "loc": { "start": { - "line": 2853, - "column": 54 + "line": 2867, + "column": 24 }, "end": { - "line": 2853, - "column": 60 + "line": 2867, + "column": 48 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -376383,16 +380266,16 @@ "binop": null, "updateContext": null }, - "start": 112599, - "end": 112600, + "start": 113404, + "end": 113405, "loc": { "start": { - "line": 2853, - "column": 60 + "line": 2867, + "column": 48 }, "end": { - "line": 2853, - "column": 61 + "line": 2867, + "column": 49 } } }, @@ -376408,44 +380291,42 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 112601, - "end": 112602, + "value": "decompressAABB", + "start": 113405, + "end": 113419, "loc": { "start": { - "line": 2853, - "column": 62 + "line": 2867, + "column": 49 }, "end": { - "line": 2853, + "line": 2867, "column": 63 } } }, { "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": 112603, - "end": 112604, + "start": 113419, + "end": 113420, "loc": { "start": { - "line": 2853, - "column": 64 + "line": 2867, + "column": 63 }, "end": { - "line": 2853, - "column": 65 + "line": 2867, + "column": 64 } } }, @@ -376461,23 +380342,23 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 112605, - "end": 112608, + "value": "aabb", + "start": 113420, + "end": 113424, "loc": { "start": { - "line": 2853, - "column": 66 + "line": 2867, + "column": 64 }, "end": { - "line": 2853, - "column": 69 + "line": 2867, + "column": 68 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -376488,16 +380369,16 @@ "binop": null, "updateContext": null }, - "start": 112608, - "end": 112609, + "start": 113424, + "end": 113425, "loc": { "start": { - "line": 2853, - "column": 69 + "line": 2867, + "column": 68 }, "end": { - "line": 2853, - "column": 70 + "line": 2867, + "column": 69 } } }, @@ -376513,51 +380394,51 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 112610, - "end": 112611, + "value": "cfg", + "start": 113426, + "end": 113429, "loc": { "start": { - "line": 2853, - "column": 71 + "line": 2867, + "column": 70 }, "end": { - "line": 2853, - "column": 72 + "line": 2867, + "column": 73 } } }, { "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": 112611, - "end": 112613, + "start": 113429, + "end": 113430, "loc": { "start": { - "line": 2853, - "column": 72 + "line": 2867, + "column": 73 }, "end": { - "line": 2853, + "line": 2867, "column": 74 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -376565,24 +380446,25 @@ "postfix": false, "binop": null }, - "start": 112613, - "end": 112614, + "value": "positionsDecodeMatrix", + "start": 113430, + "end": 113451, "loc": { "start": { - "line": 2853, + "line": 2867, "column": 74 }, "end": { - "line": 2853, - "column": 75 + "line": 2867, + "column": 95 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -376590,24 +380472,23 @@ "postfix": false, "binop": null }, - "start": 112615, - "end": 112616, + "start": 113451, + "end": 113452, "loc": { "start": { - "line": 2853, - "column": 76 + "line": 2867, + "column": 95 }, "end": { - "line": 2853, - "column": 77 + "line": 2867, + "column": 96 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -376617,70 +380498,41 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 112641, - "end": 112646, - "loc": { - "start": { - "line": 2854, - "column": 24 - }, - "end": { - "line": 2854, - "column": 29 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "bucket", - "start": 112647, - "end": 112653, + "start": 113452, + "end": 113453, "loc": { "start": { - "line": 2854, - "column": 30 + "line": 2867, + "column": 96 }, "end": { - "line": 2854, - "column": 36 + "line": 2867, + "column": 97 } } }, { "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": 112654, - "end": 112655, + "start": 113474, + "end": 113475, "loc": { "start": { - "line": 2854, - "column": 37 + "line": 2868, + "column": 20 }, "end": { - "line": 2854, - "column": 38 + "line": 2868, + "column": 21 } } }, @@ -376697,16 +380549,16 @@ "binop": null }, "value": "cfg", - "start": 112656, - "end": 112659, + "start": 113496, + "end": 113499, "loc": { "start": { - "line": 2854, - "column": 39 + "line": 2869, + "column": 20 }, "end": { - "line": 2854, - "column": 42 + "line": 2869, + "column": 23 } } }, @@ -376723,16 +380575,16 @@ "binop": null, "updateContext": null }, - "start": 112659, - "end": 112660, + "start": 113499, + "end": 113500, "loc": { "start": { - "line": 2854, - "column": 42 + "line": 2869, + "column": 23 }, "end": { - "line": 2854, - "column": 43 + "line": 2869, + "column": 24 } } }, @@ -376748,43 +380600,44 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 112660, - "end": 112667, + "value": "aabb", + "start": 113500, + "end": 113504, "loc": { "start": { - "line": 2854, - "column": 43 + "line": 2869, + "column": 24 }, "end": { - "line": 2854, - "column": 50 + "line": 2869, + "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": 112667, - "end": 112668, + "value": "=", + "start": 113505, + "end": 113506, "loc": { "start": { - "line": 2854, - "column": 50 + "line": 2869, + "column": 29 }, "end": { - "line": 2854, - "column": 51 + "line": 2869, + "column": 30 } } }, @@ -376800,24 +380653,24 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 112668, - "end": 112669, + "value": "aabb", + "start": 113507, + "end": 113511, "loc": { "start": { - "line": 2854, - "column": 51 + "line": 2869, + "column": 31 }, "end": { - "line": 2854, - "column": 52 + "line": 2869, + "column": 35 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -376827,42 +380680,41 @@ "binop": null, "updateContext": null }, - "start": 112669, - "end": 112670, + "start": 113511, + "end": 113512, "loc": { "start": { - "line": 2854, - "column": 52 + "line": 2869, + "column": 35 }, "end": { - "line": 2854, - "column": 53 + "line": 2869, + "column": 36 } } }, { "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": 112670, - "end": 112671, + "start": 113529, + "end": 113530, "loc": { "start": { - "line": 2854, - "column": 53 + "line": 2870, + "column": 16 }, "end": { - "line": 2854, - "column": 54 + "line": 2870, + "column": 17 } } }, @@ -376881,16 +380733,16 @@ "updateContext": null }, "value": "if", - "start": 112696, - "end": 112698, + "start": 113548, + "end": 113550, "loc": { "start": { - "line": 2855, - "column": 24 + "line": 2872, + "column": 16 }, "end": { - "line": 2855, - "column": 26 + "line": 2872, + "column": 18 } } }, @@ -376906,16 +380758,16 @@ "postfix": false, "binop": null }, - "start": 112699, - "end": 112700, + "start": 113551, + "end": 113552, "loc": { "start": { - "line": 2855, - "column": 27 + "line": 2872, + "column": 19 }, "end": { - "line": 2855, - "column": 28 + "line": 2872, + "column": 20 } } }, @@ -376931,17 +380783,17 @@ "postfix": false, "binop": null }, - "value": "bucket", - "start": 112700, - "end": 112706, + "value": "cfg", + "start": 113552, + "end": 113555, "loc": { "start": { - "line": 2855, - "column": 28 + "line": 2872, + "column": 20 }, "end": { - "line": 2855, - "column": 34 + "line": 2872, + "column": 23 } } }, @@ -376958,16 +380810,16 @@ "binop": null, "updateContext": null }, - "start": 112706, - "end": 112707, + "start": 113555, + "end": 113556, "loc": { "start": { - "line": 2855, - "column": 34 + "line": 2872, + "column": 23 }, "end": { - "line": 2855, - "column": 35 + "line": 2872, + "column": 24 } } }, @@ -376983,17 +380835,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 112707, - "end": 112716, + "value": "meshMatrix", + "start": 113556, + "end": 113566, "loc": { "start": { - "line": 2855, - "column": 35 + "line": 2872, + "column": 24 }, "end": { - "line": 2855, - "column": 44 + "line": 2872, + "column": 34 } } }, @@ -377009,16 +380861,16 @@ "postfix": false, "binop": null }, - "start": 112716, - "end": 112717, + "start": 113566, + "end": 113567, "loc": { "start": { - "line": 2855, - "column": 44 + "line": 2872, + "column": 34 }, "end": { - "line": 2855, - "column": 45 + "line": 2872, + "column": 35 } } }, @@ -377034,16 +380886,16 @@ "postfix": false, "binop": null }, - "start": 112718, - "end": 112719, + "start": 113568, + "end": 113569, "loc": { "start": { - "line": 2855, - "column": 46 + "line": 2872, + "column": 36 }, "end": { - "line": 2855, - "column": 47 + "line": 2872, + "column": 37 } } }, @@ -377060,16 +380912,16 @@ "binop": null }, "value": "math", - "start": 112748, - "end": 112752, + "start": 113590, + "end": 113594, "loc": { "start": { - "line": 2856, - "column": 28 + "line": 2873, + "column": 20 }, "end": { - "line": 2856, - "column": 32 + "line": 2873, + "column": 24 } } }, @@ -377086,16 +380938,16 @@ "binop": null, "updateContext": null }, - "start": 112752, - "end": 112753, + "start": 113594, + "end": 113595, "loc": { "start": { - "line": 2856, - "column": 32 + "line": 2873, + "column": 24 }, "end": { - "line": 2856, - "column": 33 + "line": 2873, + "column": 25 } } }, @@ -377111,17 +380963,17 @@ "postfix": false, "binop": null }, - "value": "expandAABB3Points3", - "start": 112753, - "end": 112771, + "value": "AABB3ToOBB3", + "start": 113595, + "end": 113606, "loc": { "start": { - "line": 2856, - "column": 33 + "line": 2873, + "column": 25 }, "end": { - "line": 2856, - "column": 51 + "line": 2873, + "column": 36 } } }, @@ -377137,16 +380989,16 @@ "postfix": false, "binop": null }, - "start": 112771, - "end": 112772, + "start": 113606, + "end": 113607, "loc": { "start": { - "line": 2856, - "column": 51 + "line": 2873, + "column": 36 }, "end": { - "line": 2856, - "column": 52 + "line": 2873, + "column": 37 } } }, @@ -377162,24 +381014,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112772, - "end": 112776, + "value": "cfg", + "start": 113607, + "end": 113610, "loc": { "start": { - "line": 2856, - "column": 52 + "line": 2873, + "column": 37 }, "end": { - "line": 2856, - "column": 56 + "line": 2873, + "column": 40 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -377189,16 +381041,16 @@ "binop": null, "updateContext": null }, - "start": 112776, - "end": 112777, + "start": 113610, + "end": 113611, "loc": { "start": { - "line": 2856, - "column": 56 + "line": 2873, + "column": 40 }, "end": { - "line": 2856, - "column": 57 + "line": 2873, + "column": 41 } } }, @@ -377214,24 +381066,24 @@ "postfix": false, "binop": null }, - "value": "bucket", - "start": 112778, - "end": 112784, + "value": "aabb", + "start": 113611, + "end": 113615, "loc": { "start": { - "line": 2856, - "column": 58 + "line": 2873, + "column": 41 }, "end": { - "line": 2856, - "column": 64 + "line": 2873, + "column": 45 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -377241,16 +381093,16 @@ "binop": null, "updateContext": null }, - "start": 112784, - "end": 112785, + "start": 113615, + "end": 113616, "loc": { "start": { - "line": 2856, - "column": 64 + "line": 2873, + "column": 45 }, "end": { - "line": 2856, - "column": 65 + "line": 2873, + "column": 46 } } }, @@ -377266,17 +381118,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 112785, - "end": 112794, + "value": "tempOBB3", + "start": 113617, + "end": 113625, "loc": { "start": { - "line": 2856, - "column": 65 + "line": 2873, + "column": 47 }, "end": { - "line": 2856, - "column": 74 + "line": 2873, + "column": 55 } } }, @@ -377292,16 +381144,16 @@ "postfix": false, "binop": null }, - "start": 112794, - "end": 112795, + "start": 113625, + "end": 113626, "loc": { "start": { - "line": 2856, - "column": 74 + "line": 2873, + "column": 55 }, "end": { - "line": 2856, - "column": 75 + "line": 2873, + "column": 56 } } }, @@ -377318,24 +381170,24 @@ "binop": null, "updateContext": null }, - "start": 112795, - "end": 112796, + "start": 113626, + "end": 113627, "loc": { "start": { - "line": 2856, - "column": 75 + "line": 2873, + "column": 56 }, "end": { - "line": 2856, - "column": 76 + "line": 2873, + "column": 57 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -377343,24 +381195,24 @@ "postfix": false, "binop": null }, - "start": 112821, - "end": 112822, + "value": "math", + "start": 113648, + "end": 113652, "loc": { "start": { - "line": 2857, - "column": 24 + "line": 2874, + "column": 20 }, "end": { - "line": 2857, - "column": 25 + "line": 2874, + "column": 24 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -377370,45 +381222,42 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 112823, - "end": 112827, + "start": 113652, + "end": 113653, "loc": { "start": { - "line": 2857, - "column": 26 + "line": 2874, + "column": 24 }, "end": { - "line": 2857, - "column": 30 + "line": 2874, + "column": 25 } } }, { "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": 112828, - "end": 112830, + "value": "transformOBB3", + "start": 113653, + "end": 113666, "loc": { "start": { - "line": 2857, - "column": 31 + "line": 2874, + "column": 25 }, "end": { - "line": 2857, - "column": 33 + "line": 2874, + "column": 38 } } }, @@ -377424,16 +381273,16 @@ "postfix": false, "binop": null }, - "start": 112831, - "end": 112832, + "start": 113666, + "end": 113667, "loc": { "start": { - "line": 2857, - "column": 34 + "line": 2874, + "column": 38 }, "end": { - "line": 2857, - "column": 35 + "line": 2874, + "column": 39 } } }, @@ -377449,17 +381298,17 @@ "postfix": false, "binop": null }, - "value": "bucket", - "start": 112832, - "end": 112838, + "value": "cfg", + "start": 113667, + "end": 113670, "loc": { "start": { - "line": 2857, - "column": 35 + "line": 2874, + "column": 39 }, "end": { - "line": 2857, - "column": 41 + "line": 2874, + "column": 42 } } }, @@ -377476,16 +381325,16 @@ "binop": null, "updateContext": null }, - "start": 112838, - "end": 112839, + "start": 113670, + "end": 113671, "loc": { "start": { - "line": 2857, - "column": 41 + "line": 2874, + "column": 42 }, "end": { - "line": 2857, - "column": 42 + "line": 2874, + "column": 43 } } }, @@ -377501,49 +381350,50 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 112839, - "end": 112858, + "value": "meshMatrix", + "start": 113671, + "end": 113681, "loc": { "start": { - "line": 2857, - "column": 42 + "line": 2874, + "column": 43 }, "end": { - "line": 2857, - "column": 61 + "line": 2874, + "column": 53 } } }, { "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": 112858, - "end": 112859, + "start": 113681, + "end": 113682, "loc": { "start": { - "line": 2857, - "column": 61 + "line": 2874, + "column": 53 }, "end": { - "line": 2857, - "column": 62 + "line": 2874, + "column": 54 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -377552,16 +381402,68 @@ "postfix": false, "binop": null }, - "start": 112860, - "end": 112861, + "value": "tempOBB3", + "start": 113683, + "end": 113691, "loc": { "start": { - "line": 2857, + "line": 2874, + "column": 55 + }, + "end": { + "line": 2874, + "column": 63 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 113691, + "end": 113692, + "loc": { + "start": { + "line": 2874, "column": 63 }, "end": { - "line": 2857, + "line": 2874, + "column": 64 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 113692, + "end": 113693, + "loc": { + "start": { + "line": 2874, "column": 64 + }, + "end": { + "line": 2874, + "column": 65 } } }, @@ -377578,16 +381480,16 @@ "binop": null }, "value": "math", - "start": 112890, - "end": 112894, + "start": 113714, + "end": 113718, "loc": { "start": { - "line": 2858, - "column": 28 + "line": 2875, + "column": 20 }, "end": { - "line": 2858, - "column": 32 + "line": 2875, + "column": 24 } } }, @@ -377604,16 +381506,16 @@ "binop": null, "updateContext": null }, - "start": 112894, - "end": 112895, + "start": 113718, + "end": 113719, "loc": { "start": { - "line": 2858, - "column": 32 + "line": 2875, + "column": 24 }, "end": { - "line": 2858, - "column": 33 + "line": 2875, + "column": 25 } } }, @@ -377629,17 +381531,17 @@ "postfix": false, "binop": null }, - "value": "expandAABB3Points3", - "start": 112895, - "end": 112913, + "value": "OBB3ToAABB3", + "start": 113719, + "end": 113730, "loc": { "start": { - "line": 2858, - "column": 33 + "line": 2875, + "column": 25 }, "end": { - "line": 2858, - "column": 51 + "line": 2875, + "column": 36 } } }, @@ -377655,16 +381557,16 @@ "postfix": false, "binop": null }, - "start": 112913, - "end": 112914, + "start": 113730, + "end": 113731, "loc": { "start": { - "line": 2858, - "column": 51 + "line": 2875, + "column": 36 }, "end": { - "line": 2858, - "column": 52 + "line": 2875, + "column": 37 } } }, @@ -377680,17 +381582,17 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 112914, - "end": 112918, + "value": "tempOBB3", + "start": 113731, + "end": 113739, "loc": { "start": { - "line": 2858, - "column": 52 + "line": 2875, + "column": 37 }, "end": { - "line": 2858, - "column": 56 + "line": 2875, + "column": 45 } } }, @@ -377707,16 +381609,16 @@ "binop": null, "updateContext": null }, - "start": 112918, - "end": 112919, + "start": 113739, + "end": 113740, "loc": { "start": { - "line": 2858, - "column": 56 + "line": 2875, + "column": 45 }, "end": { - "line": 2858, - "column": 57 + "line": 2875, + "column": 46 } } }, @@ -377732,17 +381634,17 @@ "postfix": false, "binop": null }, - "value": "bucket", - "start": 112920, - "end": 112926, + "value": "cfg", + "start": 113741, + "end": 113744, "loc": { "start": { - "line": 2858, - "column": 58 + "line": 2875, + "column": 47 }, "end": { - "line": 2858, - "column": 64 + "line": 2875, + "column": 50 } } }, @@ -377759,16 +381661,16 @@ "binop": null, "updateContext": null }, - "start": 112926, - "end": 112927, + "start": 113744, + "end": 113745, "loc": { "start": { - "line": 2858, - "column": 64 + "line": 2875, + "column": 50 }, "end": { - "line": 2858, - "column": 65 + "line": 2875, + "column": 51 } } }, @@ -377784,17 +381686,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 112927, - "end": 112946, + "value": "aabb", + "start": 113745, + "end": 113749, "loc": { "start": { - "line": 2858, - "column": 65 + "line": 2875, + "column": 51 }, "end": { - "line": 2858, - "column": 84 + "line": 2875, + "column": 55 } } }, @@ -377810,16 +381712,16 @@ "postfix": false, "binop": null }, - "start": 112946, - "end": 112947, + "start": 113749, + "end": 113750, "loc": { "start": { - "line": 2858, - "column": 84 + "line": 2875, + "column": 55 }, "end": { - "line": 2858, - "column": 85 + "line": 2875, + "column": 56 } } }, @@ -377836,16 +381738,16 @@ "binop": null, "updateContext": null }, - "start": 112947, - "end": 112948, + "start": 113750, + "end": 113751, "loc": { "start": { - "line": 2858, - "column": 85 + "line": 2875, + "column": 56 }, "end": { - "line": 2858, - "column": 86 + "line": 2875, + "column": 57 } } }, @@ -377861,41 +381763,32 @@ "postfix": false, "binop": null }, - "start": 112973, - "end": 112974, + "start": 113768, + "end": 113769, "loc": { "start": { - "line": 2859, - "column": 24 + "line": 2876, + "column": 16 }, "end": { - "line": 2859, - "column": 25 + "line": 2876, + "column": 17 } } }, { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 112995, - "end": 112996, + "type": "CommentLine", + "value": " EDGES", + "start": 113787, + "end": 113795, "loc": { "start": { - "line": 2860, - "column": 20 + "line": 2878, + "column": 16 }, "end": { - "line": 2860, - "column": 21 + "line": 2878, + "column": 24 } } }, @@ -377914,16 +381807,16 @@ "updateContext": null }, "value": "if", - "start": 113017, - "end": 113019, + "start": 113813, + "end": 113815, "loc": { "start": { - "line": 2861, - "column": 20 + "line": 2880, + "column": 16 }, "end": { - "line": 2861, - "column": 22 + "line": 2880, + "column": 18 } } }, @@ -377939,16 +381832,43 @@ "postfix": false, "binop": null }, - "start": 113020, - "end": 113021, + "start": 113816, + "end": 113817, "loc": { "start": { - "line": 2861, - "column": 23 + "line": 2880, + "column": 19 }, "end": { - "line": 2861, - "column": 24 + "line": 2880, + "column": 20 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 113817, + "end": 113818, + "loc": { + "start": { + "line": 2880, + "column": 20 + }, + "end": { + "line": 2880, + "column": 21 } } }, @@ -377965,16 +381885,16 @@ "binop": null }, "value": "cfg", - "start": 113021, - "end": 113024, + "start": 113818, + "end": 113821, "loc": { "start": { - "line": 2861, - "column": 24 + "line": 2880, + "column": 21 }, "end": { - "line": 2861, - "column": 27 + "line": 2880, + "column": 24 } } }, @@ -377991,16 +381911,16 @@ "binop": null, "updateContext": null }, - "start": 113024, - "end": 113025, + "start": 113821, + "end": 113822, "loc": { "start": { - "line": 2861, - "column": 27 + "line": 2880, + "column": 24 }, "end": { - "line": 2861, - "column": 28 + "line": 2880, + "column": 25 } } }, @@ -378016,67 +381936,71 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 113025, - "end": 113046, + "value": "buckets", + "start": 113822, + "end": 113829, "loc": { "start": { - "line": 2861, - "column": 28 + "line": 2880, + "column": 25 }, "end": { - "line": 2861, - "column": 49 + "line": 2880, + "column": 32 } } }, { "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": 113046, - "end": 113047, + "value": "&&", + "start": 113830, + "end": 113832, "loc": { "start": { - "line": 2861, - "column": 49 + "line": 2880, + "column": 33 }, "end": { - "line": 2861, - "column": 50 + "line": 2880, + "column": 35 } } }, { "type": { - "label": "{", + "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": 113048, - "end": 113049, + "value": "!", + "start": 113833, + "end": 113834, "loc": { "start": { - "line": 2861, - "column": 51 + "line": 2880, + "column": 36 }, "end": { - "line": 2861, - "column": 52 + "line": 2880, + "column": 37 } } }, @@ -378092,17 +382016,17 @@ "postfix": false, "binop": null }, - "value": "geometryCompressionUtils", - "start": 113074, - "end": 113098, + "value": "cfg", + "start": 113834, + "end": 113837, "loc": { "start": { - "line": 2862, - "column": 24 + "line": 2880, + "column": 37 }, "end": { - "line": 2862, - "column": 48 + "line": 2880, + "column": 40 } } }, @@ -378119,16 +382043,16 @@ "binop": null, "updateContext": null }, - "start": 113098, - "end": 113099, + "start": 113837, + "end": 113838, "loc": { "start": { - "line": 2862, - "column": 48 + "line": 2880, + "column": 40 }, "end": { - "line": 2862, - "column": 49 + "line": 2880, + "column": 41 } } }, @@ -378144,49 +382068,51 @@ "postfix": false, "binop": null }, - "value": "decompressAABB", - "start": 113099, - "end": 113113, + "value": "edgeIndices", + "start": 113838, + "end": 113849, "loc": { "start": { - "line": 2862, - "column": 49 + "line": 2880, + "column": 41 }, "end": { - "line": 2862, - "column": 63 + "line": 2880, + "column": 52 } } }, { "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": 113113, - "end": 113114, + "value": "&&", + "start": 113850, + "end": 113852, "loc": { "start": { - "line": 2862, - "column": 63 + "line": 2880, + "column": 53 }, "end": { - "line": 2862, - "column": 64 + "line": 2880, + "column": 55 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -378195,43 +382121,16 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 113114, - "end": 113118, - "loc": { - "start": { - "line": 2862, - "column": 64 - }, - "end": { - "line": 2862, - "column": 68 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 113118, - "end": 113119, + "start": 113853, + "end": 113854, "loc": { "start": { - "line": 2862, - "column": 68 + "line": 2880, + "column": 56 }, "end": { - "line": 2862, - "column": 69 + "line": 2880, + "column": 57 } } }, @@ -378248,16 +382147,16 @@ "binop": null }, "value": "cfg", - "start": 113120, - "end": 113123, + "start": 113854, + "end": 113857, "loc": { "start": { - "line": 2862, - "column": 70 + "line": 2880, + "column": 57 }, "end": { - "line": 2862, - "column": 73 + "line": 2880, + "column": 60 } } }, @@ -378274,16 +382173,16 @@ "binop": null, "updateContext": null }, - "start": 113123, - "end": 113124, + "start": 113857, + "end": 113858, "loc": { "start": { - "line": 2862, - "column": 73 + "line": 2880, + "column": 60 }, "end": { - "line": 2862, - "column": 74 + "line": 2880, + "column": 61 } } }, @@ -378299,50 +382198,52 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 113124, - "end": 113145, + "value": "primitive", + "start": 113858, + "end": 113867, "loc": { "start": { - "line": 2862, - "column": 74 + "line": 2880, + "column": 61 }, "end": { - "line": 2862, - "column": 95 + "line": 2880, + "column": 70 } } }, { "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": 113145, - "end": 113146, + "value": "===", + "start": 113868, + "end": 113871, "loc": { "start": { - "line": 2862, - "column": 95 + "line": 2880, + "column": 71 }, "end": { - "line": 2862, - "column": 96 + "line": 2880, + "column": 74 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -378351,41 +382252,44 @@ "binop": null, "updateContext": null }, - "start": 113146, - "end": 113147, + "value": "triangles", + "start": 113872, + "end": 113883, "loc": { "start": { - "line": 2862, - "column": 96 + "line": 2880, + "column": 75 }, "end": { - "line": 2862, - "column": 97 + "line": 2880, + "column": 86 } } }, { "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": 113168, - "end": 113169, + "value": "||", + "start": 113884, + "end": 113886, "loc": { "start": { - "line": 2863, - "column": 20 + "line": 2880, + "column": 87 }, "end": { - "line": 2863, - "column": 21 + "line": 2880, + "column": 89 } } }, @@ -378402,16 +382306,16 @@ "binop": null }, "value": "cfg", - "start": 113190, - "end": 113193, + "start": 113887, + "end": 113890, "loc": { "start": { - "line": 2864, - "column": 20 + "line": 2880, + "column": 90 }, "end": { - "line": 2864, - "column": 23 + "line": 2880, + "column": 93 } } }, @@ -378428,16 +382332,16 @@ "binop": null, "updateContext": null }, - "start": 113193, - "end": 113194, + "start": 113890, + "end": 113891, "loc": { "start": { - "line": 2864, - "column": 23 + "line": 2880, + "column": 93 }, "end": { - "line": 2864, - "column": 24 + "line": 2880, + "column": 94 } } }, @@ -378453,50 +382357,50 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 113194, - "end": 113198, + "value": "primitive", + "start": 113891, + "end": 113900, "loc": { "start": { - "line": 2864, - "column": 24 + "line": 2880, + "column": 94 }, "end": { - "line": 2864, - "column": 28 + "line": 2880, + "column": 103 } } }, { "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": 113199, - "end": 113200, + "value": "===", + "start": 113901, + "end": 113904, "loc": { "start": { - "line": 2864, - "column": 29 + "line": 2880, + "column": 104 }, "end": { - "line": 2864, - "column": 30 + "line": 2880, + "column": 107 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -378504,25 +382408,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "aabb", - "start": 113201, - "end": 113205, + "value": "solid", + "start": 113905, + "end": 113912, "loc": { "start": { - "line": 2864, - "column": 31 + "line": 2880, + "column": 108 }, "end": { - "line": 2864, - "column": 35 + "line": 2880, + "column": 115 } } }, { "type": { - "label": ";", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -378530,27 +382435,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 113205, - "end": 113206, + "value": "||", + "start": 113913, + "end": 113915, "loc": { "start": { - "line": 2864, - "column": 35 + "line": 2880, + "column": 116 }, "end": { - "line": 2864, - "column": 36 + "line": 2880, + "column": 118 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -378558,23 +382464,23 @@ "postfix": false, "binop": null }, - "start": 113223, - "end": 113224, + "value": "cfg", + "start": 113916, + "end": 113919, "loc": { "start": { - "line": 2865, - "column": 16 + "line": 2880, + "column": 119 }, "end": { - "line": 2865, - "column": 17 + "line": 2880, + "column": 122 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -378585,42 +382491,16 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 113242, - "end": 113244, - "loc": { - "start": { - "line": 2867, - "column": 16 - }, - "end": { - "line": 2867, - "column": 18 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 113245, - "end": 113246, + "start": 113919, + "end": 113920, "loc": { "start": { - "line": 2867, - "column": 19 + "line": 2880, + "column": 122 }, "end": { - "line": 2867, - "column": 20 + "line": 2880, + "column": 123 } } }, @@ -378636,49 +382516,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 113246, - "end": 113249, + "value": "primitive", + "start": 113920, + "end": 113929, "loc": { "start": { - "line": 2867, - "column": 20 + "line": 2880, + "column": 123 }, "end": { - "line": 2867, - "column": 23 + "line": 2880, + "column": 132 } } }, { "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": 113249, - "end": 113250, + "value": "===", + "start": 113930, + "end": 113933, "loc": { "start": { - "line": 2867, - "column": 23 + "line": 2880, + "column": 133 }, "end": { - "line": 2867, - "column": 24 + "line": 2880, + "column": 136 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -378686,19 +382567,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "meshMatrix", - "start": 113250, - "end": 113260, + "value": "surface", + "start": 113934, + "end": 113943, "loc": { "start": { - "line": 2867, - "column": 24 + "line": 2880, + "column": 137 }, "end": { - "line": 2867, - "column": 34 + "line": 2880, + "column": 146 } } }, @@ -378714,24 +382596,24 @@ "postfix": false, "binop": null }, - "start": 113260, - "end": 113261, + "start": 113943, + "end": 113944, "loc": { "start": { - "line": 2867, - "column": 34 + "line": 2880, + "column": 146 }, "end": { - "line": 2867, - "column": 35 + "line": 2880, + "column": 147 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -378739,23 +382621,23 @@ "postfix": false, "binop": null }, - "start": 113262, - "end": 113263, + "start": 113944, + "end": 113945, "loc": { "start": { - "line": 2867, - "column": 36 + "line": 2880, + "column": 147 }, "end": { - "line": 2867, - "column": 37 + "line": 2880, + "column": 148 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -378764,69 +382646,44 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 113284, - "end": 113288, - "loc": { - "start": { - "line": 2868, - "column": 20 - }, - "end": { - "line": 2868, - "column": 24 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 113288, - "end": 113289, + "start": 113946, + "end": 113947, "loc": { "start": { - "line": 2868, - "column": 24 + "line": 2880, + "column": 149 }, "end": { - "line": 2868, - "column": 25 + "line": 2880, + "column": 150 } } }, { "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": "AABB3ToOBB3", - "start": 113289, - "end": 113300, + "value": "if", + "start": 113968, + "end": 113970, "loc": { "start": { - "line": 2868, - "column": 25 + "line": 2881, + "column": 20 }, "end": { - "line": 2868, - "column": 36 + "line": 2881, + "column": 22 } } }, @@ -378842,16 +382699,16 @@ "postfix": false, "binop": null }, - "start": 113300, - "end": 113301, + "start": 113971, + "end": 113972, "loc": { "start": { - "line": 2868, - "column": 36 + "line": 2881, + "column": 23 }, "end": { - "line": 2868, - "column": 37 + "line": 2881, + "column": 24 } } }, @@ -378868,16 +382725,16 @@ "binop": null }, "value": "cfg", - "start": 113301, - "end": 113304, + "start": 113972, + "end": 113975, "loc": { "start": { - "line": 2868, - "column": 37 + "line": 2881, + "column": 24 }, "end": { - "line": 2868, - "column": 40 + "line": 2881, + "column": 27 } } }, @@ -378894,16 +382751,16 @@ "binop": null, "updateContext": null }, - "start": 113304, - "end": 113305, + "start": 113975, + "end": 113976, "loc": { "start": { - "line": 2868, - "column": 40 + "line": 2881, + "column": 27 }, "end": { - "line": 2868, - "column": 41 + "line": 2881, + "column": 28 } } }, @@ -378919,50 +382776,49 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 113305, - "end": 113309, + "value": "positions", + "start": 113976, + "end": 113985, "loc": { "start": { - "line": 2868, - "column": 41 + "line": 2881, + "column": 28 }, "end": { - "line": 2868, - "column": 45 + "line": 2881, + "column": 37 } } }, { "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": 113309, - "end": 113310, + "start": 113985, + "end": 113986, "loc": { "start": { - "line": 2868, - "column": 45 + "line": 2881, + "column": 37 }, "end": { - "line": 2868, - "column": 46 + "line": 2881, + "column": 38 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -378971,25 +382827,40 @@ "postfix": false, "binop": null }, - "value": "tempOBB3", - "start": 113311, - "end": 113319, + "start": 113987, + "end": 113988, "loc": { "start": { - "line": 2868, - "column": 47 + "line": 2881, + "column": 39 }, "end": { - "line": 2868, - "column": 55 + "line": 2881, + "column": 40 + } + } + }, + { + "type": "CommentLine", + "value": " Faster", + "start": 113989, + "end": 113998, + "loc": { + "start": { + "line": 2881, + "column": 41 + }, + "end": { + "line": 2881, + "column": 50 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -378997,23 +382868,24 @@ "postfix": false, "binop": null }, - "start": 113319, - "end": 113320, + "value": "cfg", + "start": 114023, + "end": 114026, "loc": { "start": { - "line": 2868, - "column": 55 + "line": 2882, + "column": 24 }, "end": { - "line": 2868, - "column": 56 + "line": 2882, + "column": 27 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -379023,16 +382895,16 @@ "binop": null, "updateContext": null }, - "start": 113320, - "end": 113321, + "start": 114026, + "end": 114027, "loc": { "start": { - "line": 2868, - "column": 56 + "line": 2882, + "column": 27 }, "end": { - "line": 2868, - "column": 57 + "line": 2882, + "column": 28 } } }, @@ -379048,43 +382920,44 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 113342, - "end": 113346, + "value": "edgeIndices", + "start": 114027, + "end": 114038, "loc": { "start": { - "line": 2869, - "column": 20 + "line": 2882, + "column": 28 }, "end": { - "line": 2869, - "column": 24 + "line": 2882, + "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, "updateContext": null }, - "start": 113346, - "end": 113347, + "value": "=", + "start": 114039, + "end": 114040, "loc": { "start": { - "line": 2869, - "column": 24 + "line": 2882, + "column": 40 }, "end": { - "line": 2869, - "column": 25 + "line": 2882, + "column": 41 } } }, @@ -379100,17 +382973,17 @@ "postfix": false, "binop": null }, - "value": "transformOBB3", - "start": 113347, - "end": 113360, + "value": "buildEdgeIndices", + "start": 114041, + "end": 114057, "loc": { "start": { - "line": 2869, - "column": 25 + "line": 2882, + "column": 42 }, "end": { - "line": 2869, - "column": 38 + "line": 2882, + "column": 58 } } }, @@ -379126,16 +382999,16 @@ "postfix": false, "binop": null }, - "start": 113360, - "end": 113361, + "start": 114057, + "end": 114058, "loc": { "start": { - "line": 2869, - "column": 38 + "line": 2882, + "column": 58 }, "end": { - "line": 2869, - "column": 39 + "line": 2882, + "column": 59 } } }, @@ -379152,16 +383025,16 @@ "binop": null }, "value": "cfg", - "start": 113361, - "end": 113364, + "start": 114058, + "end": 114061, "loc": { "start": { - "line": 2869, - "column": 39 + "line": 2882, + "column": 59 }, "end": { - "line": 2869, - "column": 42 + "line": 2882, + "column": 62 } } }, @@ -379178,16 +383051,16 @@ "binop": null, "updateContext": null }, - "start": 113364, - "end": 113365, + "start": 114061, + "end": 114062, "loc": { "start": { - "line": 2869, - "column": 42 + "line": 2882, + "column": 62 }, "end": { - "line": 2869, - "column": 43 + "line": 2882, + "column": 63 } } }, @@ -379203,17 +383076,17 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 113365, - "end": 113375, + "value": "positions", + "start": 114062, + "end": 114071, "loc": { "start": { - "line": 2869, - "column": 43 + "line": 2882, + "column": 63 }, "end": { - "line": 2869, - "column": 53 + "line": 2882, + "column": 72 } } }, @@ -379230,16 +383103,16 @@ "binop": null, "updateContext": null }, - "start": 113375, - "end": 113376, + "start": 114071, + "end": 114072, "loc": { "start": { - "line": 2869, - "column": 53 + "line": 2882, + "column": 72 }, "end": { - "line": 2869, - "column": 54 + "line": 2882, + "column": 73 } } }, @@ -379255,23 +383128,23 @@ "postfix": false, "binop": null }, - "value": "tempOBB3", - "start": 113377, - "end": 113385, + "value": "cfg", + "start": 114073, + "end": 114076, "loc": { "start": { - "line": 2869, - "column": 55 + "line": 2882, + "column": 74 }, "end": { - "line": 2869, - "column": 63 + "line": 2882, + "column": 77 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -379279,78 +383152,80 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 113385, - "end": 113386, + "start": 114076, + "end": 114077, "loc": { "start": { - "line": 2869, - "column": 63 + "line": 2882, + "column": 77 }, "end": { - "line": 2869, - "column": 64 + "line": 2882, + "column": 78 } } }, { "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": 113386, - "end": 113387, + "value": "indices", + "start": 114077, + "end": 114084, "loc": { "start": { - "line": 2869, - "column": 64 + "line": 2882, + "column": 78 }, "end": { - "line": 2869, - "column": 65 + "line": 2882, + "column": 85 } } }, { "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": "math", - "start": 113408, - "end": 113412, + "start": 114084, + "end": 114085, "loc": { "start": { - "line": 2870, - "column": 20 + "line": 2882, + "column": 85 }, "end": { - "line": 2870, - "column": 24 + "line": 2882, + "column": 86 } } }, { "type": { - "label": ".", + "label": "null", + "keyword": "null", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -379359,75 +383234,78 @@ "binop": null, "updateContext": null }, - "start": 113412, - "end": 113413, + "value": "null", + "start": 114086, + "end": 114090, "loc": { "start": { - "line": 2870, - "column": 24 + "line": 2882, + "column": 87 }, "end": { - "line": 2870, - "column": 25 + "line": 2882, + "column": 91 } } }, { "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": "OBB3ToAABB3", - "start": 113413, - "end": 113424, + "start": 114090, + "end": 114091, "loc": { "start": { - "line": 2870, - "column": 25 + "line": 2882, + "column": 91 }, "end": { - "line": 2870, - "column": 36 + "line": 2882, + "column": 92 } } }, { "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": 113424, - "end": 113425, + "value": 2, + "start": 114092, + "end": 114095, "loc": { "start": { - "line": 2870, - "column": 36 + "line": 2882, + "column": 93 }, "end": { - "line": 2870, - "column": 37 + "line": 2882, + "column": 96 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -379435,23 +383313,22 @@ "postfix": false, "binop": null }, - "value": "tempOBB3", - "start": 113425, - "end": 113433, + "start": 114095, + "end": 114096, "loc": { "start": { - "line": 2870, - "column": 37 + "line": 2882, + "column": 96 }, "end": { - "line": 2870, - "column": 45 + "line": 2882, + "column": 97 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -379462,24 +383339,24 @@ "binop": null, "updateContext": null }, - "start": 113433, - "end": 113434, + "start": 114096, + "end": 114097, "loc": { "start": { - "line": 2870, - "column": 45 + "line": 2882, + "column": 97 }, "end": { - "line": 2870, - "column": 46 + "line": 2882, + "column": 98 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -379487,24 +383364,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 113435, - "end": 113438, + "start": 114118, + "end": 114119, "loc": { "start": { - "line": 2870, - "column": 47 + "line": 2883, + "column": 20 }, "end": { - "line": 2870, - "column": 50 + "line": 2883, + "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -379514,23 +383391,24 @@ "binop": null, "updateContext": null }, - "start": 113438, - "end": 113439, + "value": "else", + "start": 114120, + "end": 114124, "loc": { "start": { - "line": 2870, - "column": 50 + "line": 2883, + "column": 22 }, "end": { - "line": 2870, - "column": 51 + "line": 2883, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -379539,25 +383417,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 113439, - "end": 113443, + "start": 114125, + "end": 114126, "loc": { "start": { - "line": 2870, - "column": 51 + "line": 2883, + "column": 27 }, "end": { - "line": 2870, - "column": 55 + "line": 2883, + "column": 28 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -379565,23 +383442,24 @@ "postfix": false, "binop": null }, - "start": 113443, - "end": 113444, + "value": "cfg", + "start": 114151, + "end": 114154, "loc": { "start": { - "line": 2870, - "column": 55 + "line": 2884, + "column": 24 }, "end": { - "line": 2870, - "column": 56 + "line": 2884, + "column": 27 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -379591,24 +383469,24 @@ "binop": null, "updateContext": null }, - "start": 113444, - "end": 113445, + "start": 114154, + "end": 114155, "loc": { "start": { - "line": 2870, - "column": 56 + "line": 2884, + "column": 27 }, "end": { - "line": 2870, - "column": 57 + "line": 2884, + "column": 28 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -379616,67 +383494,51 @@ "postfix": false, "binop": null }, - "start": 113462, - "end": 113463, - "loc": { - "start": { - "line": 2871, - "column": 16 - }, - "end": { - "line": 2871, - "column": 17 - } - } - }, - { - "type": "CommentLine", - "value": " EDGES", - "start": 113481, - "end": 113489, + "value": "edgeIndices", + "start": 114155, + "end": 114166, "loc": { "start": { - "line": 2873, - "column": 16 + "line": 2884, + "column": 28 }, "end": { - "line": 2873, - "column": 24 + "line": 2884, + "column": 39 } } }, { "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": 113507, - "end": 113509, + "value": "=", + "start": 114167, + "end": 114168, "loc": { "start": { - "line": 2875, - "column": 16 + "line": 2884, + "column": 40 }, "end": { - "line": 2875, - "column": 18 + "line": 2884, + "column": 41 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -379685,43 +383547,42 @@ "postfix": false, "binop": null }, - "start": 113510, - "end": 113511, + "value": "buildEdgeIndices", + "start": 114169, + "end": 114185, "loc": { "start": { - "line": 2875, - "column": 19 + "line": 2884, + "column": 42 }, "end": { - "line": 2875, - "column": 20 + "line": 2884, + "column": 58 } } }, { "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": 113511, - "end": 113512, + "start": 114185, + "end": 114186, "loc": { "start": { - "line": 2875, - "column": 20 + "line": 2884, + "column": 58 }, "end": { - "line": 2875, - "column": 21 + "line": 2884, + "column": 59 } } }, @@ -379738,16 +383599,16 @@ "binop": null }, "value": "cfg", - "start": 113512, - "end": 113515, + "start": 114186, + "end": 114189, "loc": { "start": { - "line": 2875, - "column": 21 + "line": 2884, + "column": 59 }, "end": { - "line": 2875, - "column": 24 + "line": 2884, + "column": 62 } } }, @@ -379764,16 +383625,16 @@ "binop": null, "updateContext": null }, - "start": 113515, - "end": 113516, + "start": 114189, + "end": 114190, "loc": { "start": { - "line": 2875, - "column": 24 + "line": 2884, + "column": 62 }, "end": { - "line": 2875, - "column": 25 + "line": 2884, + "column": 63 } } }, @@ -379789,23 +383650,23 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 113516, - "end": 113523, + "value": "positionsCompressed", + "start": 114190, + "end": 114209, "loc": { "start": { - "line": 2875, - "column": 25 + "line": 2884, + "column": 63 }, "end": { - "line": 2875, - "column": 32 + "line": 2884, + "column": 82 } } }, { "type": { - "label": "&&", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -379813,47 +383674,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null - }, - "value": "&&", - "start": 113524, - "end": 113526, - "loc": { - "start": { - "line": 2875, - "column": 33 - }, - "end": { - "line": 2875, - "column": 35 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 113527, - "end": 113528, + "start": 114209, + "end": 114210, "loc": { "start": { - "line": 2875, - "column": 36 + "line": 2884, + "column": 82 }, "end": { - "line": 2875, - "column": 37 + "line": 2884, + "column": 83 } } }, @@ -379870,16 +383703,16 @@ "binop": null }, "value": "cfg", - "start": 113528, - "end": 113531, + "start": 114211, + "end": 114214, "loc": { "start": { - "line": 2875, - "column": 37 + "line": 2884, + "column": 84 }, "end": { - "line": 2875, - "column": 40 + "line": 2884, + "column": 87 } } }, @@ -379896,16 +383729,16 @@ "binop": null, "updateContext": null }, - "start": 113531, - "end": 113532, + "start": 114214, + "end": 114215, "loc": { "start": { - "line": 2875, - "column": 40 + "line": 2884, + "column": 87 }, "end": { - "line": 2875, - "column": 41 + "line": 2884, + "column": 88 } } }, @@ -379921,23 +383754,23 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 113532, - "end": 113543, + "value": "indices", + "start": 114215, + "end": 114222, "loc": { "start": { - "line": 2875, - "column": 41 + "line": 2884, + "column": 88 }, "end": { - "line": 2875, - "column": 52 + "line": 2884, + "column": 95 } } }, { "type": { - "label": "&&", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -379945,45 +383778,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 113544, - "end": 113546, - "loc": { - "start": { - "line": 2875, - "column": 53 - }, - "end": { - "line": 2875, - "column": 55 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 113547, - "end": 113548, + "start": 114222, + "end": 114223, "loc": { "start": { - "line": 2875, - "column": 56 + "line": 2884, + "column": 95 }, "end": { - "line": 2875, - "column": 57 + "line": 2884, + "column": 96 } } }, @@ -380000,16 +383807,16 @@ "binop": null }, "value": "cfg", - "start": 113548, - "end": 113551, + "start": 114224, + "end": 114227, "loc": { "start": { - "line": 2875, - "column": 57 + "line": 2884, + "column": 97 }, "end": { - "line": 2875, - "column": 60 + "line": 2884, + "column": 100 } } }, @@ -380026,16 +383833,16 @@ "binop": null, "updateContext": null }, - "start": 113551, - "end": 113552, + "start": 114227, + "end": 114228, "loc": { "start": { - "line": 2875, - "column": 60 + "line": 2884, + "column": 100 }, "end": { - "line": 2875, - "column": 61 + "line": 2884, + "column": 101 } } }, @@ -380051,23 +383858,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 113552, - "end": 113561, + "value": "positionsDecodeMatrix", + "start": 114228, + "end": 114249, "loc": { "start": { - "line": 2875, - "column": 61 + "line": 2884, + "column": 101 }, "end": { - "line": 2875, - "column": 70 + "line": 2884, + "column": 122 } } }, { "type": { - "label": "==/!=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -380075,26 +383882,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 113562, - "end": 113565, + "start": 114249, + "end": 114250, "loc": { "start": { - "line": 2875, - "column": 71 + "line": 2884, + "column": 122 }, "end": { - "line": 2875, - "column": 74 + "line": 2884, + "column": 123 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -380105,76 +383911,74 @@ "binop": null, "updateContext": null }, - "value": "triangles", - "start": 113566, - "end": 113577, + "value": 2, + "start": 114251, + "end": 114254, "loc": { "start": { - "line": 2875, - "column": 75 + "line": 2884, + "column": 124 }, "end": { - "line": 2875, - "column": 86 + "line": 2884, + "column": 127 } } }, { "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": 113578, - "end": 113580, + "start": 114254, + "end": 114255, "loc": { "start": { - "line": 2875, - "column": 87 + "line": 2884, + "column": 127 }, "end": { - "line": 2875, - "column": 89 + "line": 2884, + "column": 128 } } }, { "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": "cfg", - "start": 113581, - "end": 113584, + "start": 114255, + "end": 114256, "loc": { "start": { - "line": 2875, - "column": 90 + "line": 2884, + "column": 128 }, "end": { - "line": 2875, - "column": 93 + "line": 2884, + "column": 129 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -380182,27 +383986,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 113584, - "end": 113585, + "start": 114277, + "end": 114278, "loc": { "start": { - "line": 2875, - "column": 93 + "line": 2885, + "column": 20 }, "end": { - "line": 2875, - "column": 94 + "line": 2885, + "column": 21 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -380210,98 +384013,112 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 113585, - "end": 113594, + "start": 114295, + "end": 114296, "loc": { "start": { - "line": 2875, - "column": 94 + "line": 2886, + "column": 16 }, "end": { - "line": 2875, - "column": 103 + "line": 2886, + "column": 17 + } + } + }, + { + "type": "CommentLine", + "value": " BUCKETING", + "start": 114314, + "end": 114326, + "loc": { + "start": { + "line": 2888, + "column": 16 + }, + "end": { + "line": 2888, + "column": 28 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 113595, - "end": 113598, + "value": "if", + "start": 114344, + "end": 114346, "loc": { "start": { - "line": 2875, - "column": 104 + "line": 2890, + "column": 16 }, "end": { - "line": 2875, - "column": 107 + "line": 2890, + "column": 18 } } }, { "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": "solid", - "start": 113599, - "end": 113606, + "start": 114347, + "end": 114348, "loc": { "start": { - "line": 2875, - "column": 108 + "line": 2890, + "column": 19 }, "end": { - "line": 2875, - "column": 115 + "line": 2890, + "column": 20 } } }, { "type": { - "label": "||", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 113607, - "end": 113609, + "value": "!", + "start": 114348, + "end": 114349, "loc": { "start": { - "line": 2875, - "column": 116 + "line": 2890, + "column": 20 }, "end": { - "line": 2875, - "column": 118 + "line": 2890, + "column": 21 } } }, @@ -380318,16 +384135,16 @@ "binop": null }, "value": "cfg", - "start": 113610, - "end": 113613, + "start": 114349, + "end": 114352, "loc": { "start": { - "line": 2875, - "column": 119 + "line": 2890, + "column": 21 }, "end": { - "line": 2875, - "column": 122 + "line": 2890, + "column": 24 } } }, @@ -380344,16 +384161,16 @@ "binop": null, "updateContext": null }, - "start": 113613, - "end": 113614, + "start": 114352, + "end": 114353, "loc": { "start": { - "line": 2875, - "column": 122 + "line": 2890, + "column": 24 }, "end": { - "line": 2875, - "column": 123 + "line": 2890, + "column": 25 } } }, @@ -380369,79 +384186,75 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 113614, - "end": 113623, + "value": "buckets", + "start": 114353, + "end": 114360, "loc": { "start": { - "line": 2875, - "column": 123 + "line": 2890, + "column": 25 }, "end": { - "line": 2875, - "column": 132 + "line": 2890, + "column": 32 } } }, { "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": 113624, - "end": 113627, + "start": 114360, + "end": 114361, "loc": { "start": { - "line": 2875, - "column": 133 + "line": 2890, + "column": 32 }, "end": { - "line": 2875, - "column": 136 + "line": 2890, + "column": 33 } } }, { "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": "surface", - "start": 113628, - "end": 113637, + "start": 114362, + "end": 114363, "loc": { "start": { - "line": 2875, - "column": 137 + "line": 2890, + "column": 34 }, "end": { - "line": 2875, - "column": 146 + "line": 2890, + "column": 35 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -380449,22 +384262,23 @@ "postfix": false, "binop": null }, - "start": 113637, - "end": 113638, + "value": "cfg", + "start": 114384, + "end": 114387, "loc": { "start": { - "line": 2875, - "column": 146 + "line": 2891, + "column": 20 }, "end": { - "line": 2875, - "column": 147 + "line": 2891, + "column": 23 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -380472,25 +384286,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 113638, - "end": 113639, + "start": 114387, + "end": 114388, "loc": { "start": { - "line": 2875, - "column": 147 + "line": 2891, + "column": 23 }, "end": { - "line": 2875, - "column": 148 + "line": 2891, + "column": 24 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -380499,44 +384314,70 @@ "postfix": false, "binop": null }, - "start": 113640, - "end": 113641, + "value": "buckets", + "start": 114388, + "end": 114395, "loc": { "start": { - "line": 2875, - "column": 149 + "line": 2891, + "column": 24 }, "end": { - "line": 2875, - "column": 150 + "line": 2891, + "column": 31 } } }, { "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": 113662, - "end": 113664, + "value": "=", + "start": 114396, + "end": 114397, "loc": { "start": { - "line": 2876, - "column": 20 + "line": 2891, + "column": 32 }, "end": { - "line": 2876, - "column": 22 + "line": 2891, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "createDTXBuckets", + "start": 114398, + "end": 114414, + "loc": { + "start": { + "line": 2891, + "column": 34 + }, + "end": { + "line": 2891, + "column": 50 } } }, @@ -380552,16 +384393,16 @@ "postfix": false, "binop": null }, - "start": 113665, - "end": 113666, + "start": 114414, + "end": 114415, "loc": { "start": { - "line": 2876, - "column": 23 + "line": 2891, + "column": 50 }, "end": { - "line": 2876, - "column": 24 + "line": 2891, + "column": 51 } } }, @@ -380578,23 +384419,23 @@ "binop": null }, "value": "cfg", - "start": 113666, - "end": 113669, + "start": 114415, + "end": 114418, "loc": { "start": { - "line": 2876, - "column": 24 + "line": 2891, + "column": 51 }, "end": { - "line": 2876, - "column": 27 + "line": 2891, + "column": 54 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -380604,22 +384445,23 @@ "binop": null, "updateContext": null }, - "start": 113669, - "end": 113670, + "start": 114418, + "end": 114419, "loc": { "start": { - "line": 2876, - "column": 27 + "line": 2891, + "column": 54 }, "end": { - "line": 2876, - "column": 28 + "line": 2891, + "column": 55 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -380627,25 +384469,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "positions", - "start": 113670, - "end": 113679, + "value": "this", + "start": 114420, + "end": 114424, "loc": { "start": { - "line": 2876, - "column": 28 + "line": 2891, + "column": 56 }, "end": { - "line": 2876, - "column": 37 + "line": 2891, + "column": 60 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -380653,25 +384496,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 113679, - "end": 113680, + "start": 114424, + "end": 114425, "loc": { "start": { - "line": 2876, - "column": 37 + "line": 2891, + "column": 60 }, "end": { - "line": 2876, - "column": 38 + "line": 2891, + "column": 61 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -380680,38 +384524,51 @@ "postfix": false, "binop": null }, - "start": 113681, - "end": 113682, + "value": "_enableVertexWelding", + "start": 114425, + "end": 114445, "loc": { "start": { - "line": 2876, - "column": 39 + "line": 2891, + "column": 61 }, "end": { - "line": 2876, - "column": 40 + "line": 2891, + "column": 81 } } }, { - "type": "CommentLine", - "value": " Faster", - "start": 113683, - "end": 113692, + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 114446, + "end": 114448, "loc": { "start": { - "line": 2876, - "column": 41 + "line": 2891, + "column": 82 }, "end": { - "line": 2876, - "column": 50 + "line": 2891, + "column": 84 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -380719,19 +384576,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 113717, - "end": 113720, + "value": "this", + "start": 114449, + "end": 114453, "loc": { "start": { - "line": 2877, - "column": 24 + "line": 2891, + "column": 85 }, "end": { - "line": 2877, - "column": 27 + "line": 2891, + "column": 89 } } }, @@ -380748,16 +384606,16 @@ "binop": null, "updateContext": null }, - "start": 113720, - "end": 113721, + "start": 114453, + "end": 114454, "loc": { "start": { - "line": 2877, - "column": 27 + "line": 2891, + "column": 89 }, "end": { - "line": 2877, - "column": 28 + "line": 2891, + "column": 90 } } }, @@ -380773,78 +384631,76 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 113721, - "end": 113732, + "value": "_enableIndexBucketing", + "start": 114454, + "end": 114475, "loc": { "start": { - "line": 2877, - "column": 28 + "line": 2891, + "column": 90 }, "end": { - "line": 2877, - "column": 39 + "line": 2891, + "column": 111 } } }, { "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": 113733, - "end": 113734, + "start": 114475, + "end": 114476, "loc": { "start": { - "line": 2877, - "column": 40 + "line": 2891, + "column": 111 }, "end": { - "line": 2877, - "column": 41 + "line": 2891, + "column": 112 } } }, { "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": "buildEdgeIndices", - "start": 113735, - "end": 113751, + "start": 114476, + "end": 114477, "loc": { "start": { - "line": 2877, - "column": 42 + "line": 2891, + "column": 112 }, "end": { - "line": 2877, - "column": 58 + "line": 2891, + "column": 113 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -380852,24 +384708,24 @@ "postfix": false, "binop": null }, - "start": 113751, - "end": 113752, + "start": 114494, + "end": 114495, "loc": { "start": { - "line": 2877, - "column": 58 + "line": 2892, + "column": 16 }, "end": { - "line": 2877, - "column": 59 + "line": 2892, + "column": 17 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -380877,24 +384733,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 113752, - "end": 113755, + "start": 114509, + "end": 114510, "loc": { "start": { - "line": 2877, - "column": 59 + "line": 2894, + "column": 12 }, "end": { - "line": 2877, - "column": 62 + "line": 2894, + "column": 13 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -380904,23 +384760,24 @@ "binop": null, "updateContext": null }, - "start": 113755, - "end": 113756, + "value": "else", + "start": 114511, + "end": 114515, "loc": { "start": { - "line": 2877, - "column": 62 + "line": 2894, + "column": 14 }, "end": { - "line": 2877, - "column": 63 + "line": 2894, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -380929,43 +384786,32 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 113756, - "end": 113765, + "start": 114516, + "end": 114517, "loc": { "start": { - "line": 2877, - "column": 63 + "line": 2894, + "column": 19 }, "end": { - "line": 2877, - "column": 72 + "line": 2894, + "column": 20 } } }, { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 113765, - "end": 113766, + "type": "CommentLine", + "value": " VBO", + "start": 114535, + "end": 114541, "loc": { "start": { - "line": 2877, - "column": 72 + "line": 2896, + "column": 16 }, "end": { - "line": 2877, - "column": 73 + "line": 2896, + "column": 22 } } }, @@ -380982,16 +384828,16 @@ "binop": null }, "value": "cfg", - "start": 113767, - "end": 113770, + "start": 114559, + "end": 114562, "loc": { "start": { - "line": 2877, - "column": 74 + "line": 2898, + "column": 16 }, "end": { - "line": 2877, - "column": 77 + "line": 2898, + "column": 19 } } }, @@ -381008,16 +384854,16 @@ "binop": null, "updateContext": null }, - "start": 113770, - "end": 113771, + "start": 114562, + "end": 114563, "loc": { "start": { - "line": 2877, - "column": 77 + "line": 2898, + "column": 19 }, "end": { - "line": 2877, - "column": 78 + "line": 2898, + "column": 20 } } }, @@ -381033,50 +384879,50 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 113771, - "end": 113778, + "value": "type", + "start": 114563, + "end": 114567, "loc": { "start": { - "line": 2877, - "column": 78 + "line": 2898, + "column": 20 }, "end": { - "line": 2877, - "column": 85 + "line": 2898, + "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": 113778, - "end": 113779, + "value": "=", + "start": 114568, + "end": 114569, "loc": { "start": { - "line": 2877, - "column": 85 + "line": 2898, + "column": 25 }, "end": { - "line": 2877, - "column": 86 + "line": 2898, + "column": 26 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -381084,26 +384930,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 113780, - "end": 113784, + "value": "VBO_BATCHED", + "start": 114570, + "end": 114581, "loc": { "start": { - "line": 2877, - "column": 87 + "line": 2898, + "column": 27 }, "end": { - "line": 2877, - "column": 91 + "line": 2898, + "column": 38 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -381114,51 +384959,40 @@ "binop": null, "updateContext": null }, - "start": 113784, - "end": 113785, + "start": 114581, + "end": 114582, "loc": { "start": { - "line": 2877, - "column": 91 + "line": 2898, + "column": 38 }, "end": { - "line": 2877, - "column": 92 + "line": 2898, + "column": 39 } } }, { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 2, - "start": 113786, - "end": 113789, + "type": "CommentLine", + "value": " PBR", + "start": 114600, + "end": 114606, "loc": { "start": { - "line": 2877, - "column": 93 + "line": 2900, + "column": 16 }, "end": { - "line": 2877, - "column": 96 + "line": 2900, + "column": 22 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -381166,23 +385000,24 @@ "postfix": false, "binop": null }, - "start": 113789, - "end": 113790, + "value": "cfg", + "start": 114624, + "end": 114627, "loc": { "start": { - "line": 2877, - "column": 96 + "line": 2902, + "column": 16 }, "end": { - "line": 2877, - "column": 97 + "line": 2902, + "column": 19 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -381192,24 +385027,24 @@ "binop": null, "updateContext": null }, - "start": 113790, - "end": 113791, + "start": 114627, + "end": 114628, "loc": { "start": { - "line": 2877, - "column": 97 + "line": 2902, + "column": 19 }, "end": { - "line": 2877, - "column": 98 + "line": 2902, + "column": 20 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -381217,50 +385052,50 @@ "postfix": false, "binop": null }, - "start": 113812, - "end": 113813, + "value": "color", + "start": 114628, + "end": 114633, "loc": { "start": { - "line": 2878, + "line": 2902, "column": 20 }, "end": { - "line": 2878, - "column": 21 + "line": 2902, + "column": 25 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "else", - "start": 113814, - "end": 113818, + "value": "=", + "start": 114634, + "end": 114635, "loc": { "start": { - "line": 2878, - "column": 22 + "line": 2902, + "column": 26 }, "end": { - "line": 2878, - "column": 26 + "line": 2902, + "column": 27 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -381270,16 +385105,16 @@ "postfix": false, "binop": null }, - "start": 113819, - "end": 113820, + "start": 114636, + "end": 114637, "loc": { "start": { - "line": 2878, - "column": 27 + "line": 2902, + "column": 28 }, "end": { - "line": 2878, - "column": 28 + "line": 2902, + "column": 29 } } }, @@ -381296,16 +385131,16 @@ "binop": null }, "value": "cfg", - "start": 113845, - "end": 113848, + "start": 114637, + "end": 114640, "loc": { "start": { - "line": 2879, - "column": 24 + "line": 2902, + "column": 29 }, "end": { - "line": 2879, - "column": 27 + "line": 2902, + "column": 32 } } }, @@ -381322,16 +385157,16 @@ "binop": null, "updateContext": null }, - "start": 113848, - "end": 113849, + "start": 114640, + "end": 114641, "loc": { "start": { - "line": 2879, - "column": 27 + "line": 2902, + "column": 32 }, "end": { - "line": 2879, - "column": 28 + "line": 2902, + "column": 33 } } }, @@ -381347,76 +385182,75 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 113849, - "end": 113860, + "value": "color", + "start": 114641, + "end": 114646, "loc": { "start": { - "line": 2879, - "column": 28 + "line": 2902, + "column": 33 }, "end": { - "line": 2879, - "column": 39 + "line": 2902, + "column": 38 } } }, { "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": 113861, - "end": 113862, + "start": 114646, + "end": 114647, "loc": { "start": { - "line": 2879, - "column": 40 + "line": 2902, + "column": 38 }, "end": { - "line": 2879, - "column": 41 + "line": 2902, + "column": 39 } } }, { "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": "buildEdgeIndices", - "start": 113863, - "end": 113879, + "start": 114648, + "end": 114649, "loc": { "start": { - "line": 2879, - "column": 42 + "line": 2902, + "column": 40 }, "end": { - "line": 2879, - "column": 58 + "line": 2902, + "column": 41 } } }, { "type": { - "label": "(", + "label": "new", + "keyword": "new", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -381424,18 +385258,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 113879, - "end": 113880, + "value": "new", + "start": 114650, + "end": 114653, "loc": { "start": { - "line": 2879, - "column": 58 + "line": 2902, + "column": 42 }, "end": { - "line": 2879, - "column": 59 + "line": 2902, + "column": 45 } } }, @@ -381451,50 +385287,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 113880, - "end": 113883, - "loc": { - "start": { - "line": 2879, - "column": 59 - }, - "end": { - "line": 2879, - "column": 62 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 113883, - "end": 113884, + "value": "Uint8Array", + "start": 114654, + "end": 114664, "loc": { "start": { - "line": 2879, - "column": 62 + "line": 2902, + "column": 46 }, "end": { - "line": 2879, - "column": 63 + "line": 2902, + "column": 56 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -381503,25 +385313,24 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 113884, - "end": 113903, + "start": 114664, + "end": 114665, "loc": { "start": { - "line": 2879, - "column": 63 + "line": 2902, + "column": 56 }, "end": { - "line": 2879, - "column": 82 + "line": 2902, + "column": 57 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -381530,16 +385339,16 @@ "binop": null, "updateContext": null }, - "start": 113903, - "end": 113904, + "start": 114665, + "end": 114666, "loc": { "start": { - "line": 2879, - "column": 82 + "line": 2902, + "column": 57 }, "end": { - "line": 2879, - "column": 83 + "line": 2902, + "column": 58 } } }, @@ -381555,17 +385364,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 113905, - "end": 113908, + "value": "Math", + "start": 114666, + "end": 114670, "loc": { "start": { - "line": 2879, - "column": 84 + "line": 2902, + "column": 58 }, "end": { - "line": 2879, - "column": 87 + "line": 2902, + "column": 62 } } }, @@ -381582,16 +385391,16 @@ "binop": null, "updateContext": null }, - "start": 113908, - "end": 113909, + "start": 114670, + "end": 114671, "loc": { "start": { - "line": 2879, - "column": 87 + "line": 2902, + "column": 62 }, "end": { - "line": 2879, - "column": 88 + "line": 2902, + "column": 63 } } }, @@ -381607,43 +385416,42 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 113909, - "end": 113916, + "value": "floor", + "start": 114671, + "end": 114676, "loc": { "start": { - "line": 2879, - "column": 88 + "line": 2902, + "column": 63 }, "end": { - "line": 2879, - "column": 95 + "line": 2902, + "column": 68 } } }, { "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": 113916, - "end": 113917, + "start": 114676, + "end": 114677, "loc": { "start": { - "line": 2879, - "column": 95 + "line": 2902, + "column": 68 }, "end": { - "line": 2879, - "column": 96 + "line": 2902, + "column": 69 } } }, @@ -381660,16 +385468,16 @@ "binop": null }, "value": "cfg", - "start": 113918, - "end": 113921, + "start": 114677, + "end": 114680, "loc": { "start": { - "line": 2879, - "column": 97 + "line": 2902, + "column": 69 }, "end": { - "line": 2879, - "column": 100 + "line": 2902, + "column": 72 } } }, @@ -381686,16 +385494,16 @@ "binop": null, "updateContext": null }, - "start": 113921, - "end": 113922, + "start": 114680, + "end": 114681, "loc": { "start": { - "line": 2879, - "column": 100 + "line": 2902, + "column": 72 }, "end": { - "line": 2879, - "column": 101 + "line": 2902, + "column": 73 } } }, @@ -381711,25 +385519,25 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 113922, - "end": 113943, + "value": "color", + "start": 114681, + "end": 114686, "loc": { "start": { - "line": 2879, - "column": 101 + "line": 2902, + "column": 73 }, "end": { - "line": 2879, - "column": 122 + "line": 2902, + "column": 78 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -381738,16 +385546,16 @@ "binop": null, "updateContext": null }, - "start": 113943, - "end": 113944, + "start": 114686, + "end": 114687, "loc": { "start": { - "line": 2879, - "column": 122 + "line": 2902, + "column": 78 }, "end": { - "line": 2879, - "column": 123 + "line": 2902, + "column": 79 } } }, @@ -381764,23 +385572,23 @@ "binop": null, "updateContext": null }, - "value": 2, - "start": 113945, - "end": 113948, + "value": 0, + "start": 114687, + "end": 114688, "loc": { "start": { - "line": 2879, - "column": 124 + "line": 2902, + "column": 79 }, "end": { - "line": 2879, - "column": 127 + "line": 2902, + "column": 80 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -381788,24 +385596,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 113948, - "end": 113949, + "start": 114688, + "end": 114689, "loc": { "start": { - "line": 2879, - "column": 127 + "line": 2902, + "column": 80 }, "end": { - "line": 2879, - "column": 128 + "line": 2902, + "column": 81 } } }, { "type": { - "label": ";", + "label": "*", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -381813,25 +385622,53 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": 10, + "updateContext": null + }, + "value": "*", + "start": 114690, + "end": 114691, + "loc": { + "start": { + "line": 2902, + "column": 82 + }, + "end": { + "line": 2902, + "column": 83 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 113949, - "end": 113950, + "value": 255, + "start": 114692, + "end": 114695, "loc": { "start": { - "line": 2879, - "column": 128 + "line": 2902, + "column": 84 }, "end": { - "line": 2879, - "column": 129 + "line": 2902, + "column": 87 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -381841,64 +385678,74 @@ "postfix": false, "binop": null }, - "start": 113971, - "end": 113972, + "start": 114695, + "end": 114696, "loc": { "start": { - "line": 2880, - "column": 20 + "line": 2902, + "column": 87 }, "end": { - "line": 2880, - "column": 21 + "line": 2902, + "column": 88 } } }, { "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": 113989, - "end": 113990, + "start": 114696, + "end": 114697, "loc": { "start": { - "line": 2881, - "column": 16 + "line": 2902, + "column": 88 }, "end": { - "line": 2881, - "column": 17 + "line": 2902, + "column": 89 } } }, { - "type": "CommentLine", - "value": " BUCKETING", - "start": 114008, - "end": 114020, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Math", + "start": 114698, + "end": 114702, "loc": { "start": { - "line": 2883, - "column": 16 + "line": 2902, + "column": 90 }, "end": { - "line": 2883, - "column": 28 + "line": 2902, + "column": 94 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -381909,24 +385756,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 114038, - "end": 114040, + "start": 114702, + "end": 114703, "loc": { "start": { - "line": 2885, - "column": 16 + "line": 2902, + "column": 94 }, "end": { - "line": 2885, - "column": 18 + "line": 2902, + "column": 95 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -381935,43 +385781,42 @@ "postfix": false, "binop": null }, - "start": 114041, - "end": 114042, + "value": "floor", + "start": 114703, + "end": 114708, "loc": { "start": { - "line": 2885, - "column": 19 + "line": 2902, + "column": 95 }, "end": { - "line": 2885, - "column": 20 + "line": 2902, + "column": 100 } } }, { "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": 114042, - "end": 114043, + "start": 114708, + "end": 114709, "loc": { "start": { - "line": 2885, - "column": 20 + "line": 2902, + "column": 100 }, "end": { - "line": 2885, - "column": 21 + "line": 2902, + "column": 101 } } }, @@ -381988,16 +385833,16 @@ "binop": null }, "value": "cfg", - "start": 114043, - "end": 114046, + "start": 114709, + "end": 114712, "loc": { "start": { - "line": 2885, - "column": 21 + "line": 2902, + "column": 101 }, "end": { - "line": 2885, - "column": 24 + "line": 2902, + "column": 104 } } }, @@ -382014,16 +385859,16 @@ "binop": null, "updateContext": null }, - "start": 114046, - "end": 114047, + "start": 114712, + "end": 114713, "loc": { "start": { - "line": 2885, - "column": 24 + "line": 2902, + "column": 104 }, "end": { - "line": 2885, - "column": 25 + "line": 2902, + "column": 105 } } }, @@ -382039,125 +385884,129 @@ "postfix": false, "binop": null }, - "value": "buckets", - "start": 114047, - "end": 114054, + "value": "color", + "start": 114713, + "end": 114718, "loc": { "start": { - "line": 2885, - "column": 25 + "line": 2902, + "column": 105 }, "end": { - "line": 2885, - "column": 32 + "line": 2902, + "column": 110 } } }, { "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": 114054, - "end": 114055, + "start": 114718, + "end": 114719, "loc": { "start": { - "line": 2885, - "column": 32 + "line": 2902, + "column": 110 }, "end": { - "line": 2885, - "column": 33 + "line": 2902, + "column": 111 } } }, { "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": 114056, - "end": 114057, + "value": 1, + "start": 114719, + "end": 114720, "loc": { "start": { - "line": 2885, - "column": 34 + "line": 2902, + "column": 111 }, "end": { - "line": 2885, - "column": 35 + "line": 2902, + "column": 112 } } }, { "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": "cfg", - "start": 114078, - "end": 114081, + "start": 114720, + "end": 114721, "loc": { "start": { - "line": 2886, - "column": 20 + "line": 2902, + "column": 112 }, "end": { - "line": 2886, - "column": 23 + "line": 2902, + "column": 113 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "*", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "start": 114081, - "end": 114082, + "value": "*", + "start": 114722, + "end": 114723, "loc": { "start": { - "line": 2886, - "column": 23 + "line": 2902, + "column": 114 }, "end": { - "line": 2886, - "column": 24 + "line": 2902, + "column": 115 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -382165,46 +386014,71 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 255, + "start": 114724, + "end": 114727, + "loc": { + "start": { + "line": 2902, + "column": 116 + }, + "end": { + "line": 2902, + "column": 119 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "value": "buckets", - "start": 114082, - "end": 114089, + "start": 114727, + "end": 114728, "loc": { "start": { - "line": 2886, - "column": 24 + "line": 2902, + "column": 119 }, "end": { - "line": 2886, - "column": 31 + "line": 2902, + "column": 120 } } }, { "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": 114090, - "end": 114091, + "start": 114728, + "end": 114729, "loc": { "start": { - "line": 2886, - "column": 32 + "line": 2902, + "column": 120 }, "end": { - "line": 2886, - "column": 33 + "line": 2902, + "column": 121 } } }, @@ -382220,42 +386094,43 @@ "postfix": false, "binop": null }, - "value": "createDTXBuckets", - "start": 114092, - "end": 114108, + "value": "Math", + "start": 114730, + "end": 114734, "loc": { "start": { - "line": 2886, - "column": 34 + "line": 2902, + "column": 122 }, "end": { - "line": 2886, - "column": 50 + "line": 2902, + "column": 126 } } }, { "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": 114108, - "end": 114109, + "start": 114734, + "end": 114735, "loc": { "start": { - "line": 2886, - "column": 50 + "line": 2902, + "column": 126 }, "end": { - "line": 2886, - "column": 51 + "line": 2902, + "column": 127 } } }, @@ -382271,50 +386146,48 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 114109, - "end": 114112, + "value": "floor", + "start": 114735, + "end": 114740, "loc": { "start": { - "line": 2886, - "column": 51 + "line": 2902, + "column": 127 }, "end": { - "line": 2886, - "column": 54 + "line": 2902, + "column": 132 } } }, { "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": 114112, - "end": 114113, + "start": 114740, + "end": 114741, "loc": { "start": { - "line": 2886, - "column": 54 + "line": 2902, + "column": 132 }, "end": { - "line": 2886, - "column": 55 + "line": 2902, + "column": 133 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -382322,20 +386195,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 114114, - "end": 114118, + "value": "cfg", + "start": 114741, + "end": 114744, "loc": { "start": { - "line": 2886, - "column": 56 + "line": 2902, + "column": 133 }, "end": { - "line": 2886, - "column": 60 + "line": 2902, + "column": 136 } } }, @@ -382352,16 +386224,16 @@ "binop": null, "updateContext": null }, - "start": 114118, - "end": 114119, + "start": 114744, + "end": 114745, "loc": { "start": { - "line": 2886, - "column": 60 + "line": 2902, + "column": 136 }, "end": { - "line": 2886, - "column": 61 + "line": 2902, + "column": 137 } } }, @@ -382377,51 +386249,49 @@ "postfix": false, "binop": null }, - "value": "_enableVertexWelding", - "start": 114119, - "end": 114139, + "value": "color", + "start": 114745, + "end": 114750, "loc": { "start": { - "line": 2886, - "column": 61 + "line": 2902, + "column": 137 }, "end": { - "line": 2886, - "column": 81 + "line": 2902, + "column": 142 } } }, { "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": 114140, - "end": 114142, + "start": 114750, + "end": 114751, "loc": { "start": { - "line": 2886, - "column": 82 + "line": 2902, + "column": 142 }, "end": { - "line": 2886, - "column": 84 + "line": 2902, + "column": 143 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -382432,23 +386302,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 114143, - "end": 114147, + "value": 2, + "start": 114751, + "end": 114752, "loc": { "start": { - "line": 2886, - "column": 85 + "line": 2902, + "column": 143 }, "end": { - "line": 2886, - "column": 89 + "line": 2902, + "column": 144 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -382459,99 +386329,101 @@ "binop": null, "updateContext": null }, - "start": 114147, - "end": 114148, + "start": 114752, + "end": 114753, "loc": { "start": { - "line": 2886, - "column": 89 + "line": 2902, + "column": 144 }, "end": { - "line": 2886, - "column": 90 + "line": 2902, + "column": 145 } } }, { "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": 10, + "updateContext": null }, - "value": "_enableIndexBucketing", - "start": 114148, - "end": 114169, + "value": "*", + "start": 114754, + "end": 114755, "loc": { "start": { - "line": 2886, - "column": 90 + "line": 2902, + "column": 146 }, "end": { - "line": 2886, - "column": 111 + "line": 2902, + "column": 147 } } }, { "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": 114169, - "end": 114170, + "value": 255, + "start": 114756, + "end": 114759, "loc": { "start": { - "line": 2886, - "column": 111 + "line": 2902, + "column": 148 }, "end": { - "line": 2886, - "column": 112 + "line": 2902, + "column": 151 } } }, { "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": 114170, - "end": 114171, + "start": 114759, + "end": 114760, "loc": { "start": { - "line": 2886, - "column": 112 + "line": 2902, + "column": 151 }, "end": { - "line": 2886, - "column": 113 + "line": 2902, + "column": 152 } } }, { "type": { - "label": "}", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -382559,24 +386431,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 114188, - "end": 114189, + "start": 114760, + "end": 114761, "loc": { "start": { - "line": 2887, - "column": 16 + "line": 2902, + "column": 152 }, "end": { - "line": 2887, - "column": 17 + "line": 2902, + "column": 153 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -382586,23 +386459,22 @@ "postfix": false, "binop": null }, - "start": 114203, - "end": 114204, + "start": 114761, + "end": 114762, "loc": { "start": { - "line": 2889, - "column": 12 + "line": 2902, + "column": 153 }, "end": { - "line": 2889, - "column": 13 + "line": 2902, + "column": 154 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -382613,23 +386485,22 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 114205, - "end": 114209, + "start": 114763, + "end": 114764, "loc": { "start": { - "line": 2889, - "column": 14 + "line": 2902, + "column": 155 }, "end": { - "line": 2889, - "column": 18 + "line": 2902, + "column": 156 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -382637,40 +386508,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 114210, - "end": 114211, - "loc": { - "start": { - "line": 2889, - "column": 19 - }, - "end": { - "line": 2889, - "column": 20 - } - } - }, - { - "type": "CommentLine", - "value": " VBO", - "start": 114229, - "end": 114235, + "start": 114765, + "end": 114766, "loc": { "start": { - "line": 2891, - "column": 16 + "line": 2902, + "column": 157 }, "end": { - "line": 2891, - "column": 22 + "line": 2902, + "column": 158 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -382678,26 +386534,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 114253, - "end": 114256, + "value": 255, + "start": 114766, + "end": 114769, "loc": { "start": { - "line": 2893, - "column": 16 + "line": 2902, + "column": 158 }, "end": { - "line": 2893, - "column": 19 + "line": 2902, + "column": 161 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -382707,22 +386564,22 @@ "binop": null, "updateContext": null }, - "start": 114256, - "end": 114257, + "start": 114769, + "end": 114770, "loc": { "start": { - "line": 2893, - "column": 19 + "line": 2902, + "column": 161 }, "end": { - "line": 2893, - "column": 20 + "line": 2902, + "column": 162 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -382730,52 +386587,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "type", - "start": 114257, - "end": 114261, + "value": 255, + "start": 114771, + "end": 114774, "loc": { "start": { - "line": 2893, - "column": 20 + "line": 2902, + "column": 163 }, "end": { - "line": 2893, - "column": 24 + "line": 2902, + "column": 166 } } }, { "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": 114262, - "end": 114263, + "start": 114774, + "end": 114775, "loc": { "start": { - "line": 2893, - "column": 25 + "line": 2902, + "column": 166 }, "end": { - "line": 2893, - "column": 26 + "line": 2902, + "column": 167 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -382783,26 +386640,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "VBO_BATCHED", - "start": 114264, - "end": 114275, + "value": 255, + "start": 114776, + "end": 114779, "loc": { "start": { - "line": 2893, - "column": 27 + "line": 2902, + "column": 168 }, "end": { - "line": 2893, - "column": 38 + "line": 2902, + "column": 171 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -382812,32 +386670,42 @@ "binop": null, "updateContext": null }, - "start": 114275, - "end": 114276, + "start": 114779, + "end": 114780, "loc": { "start": { - "line": 2893, - "column": 38 + "line": 2902, + "column": 171 }, "end": { - "line": 2893, - "column": 39 + "line": 2902, + "column": 172 } } }, { - "type": "CommentLine", - "value": " PBR", - "start": 114294, - "end": 114300, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 114780, + "end": 114781, "loc": { "start": { - "line": 2895, - "column": 16 + "line": 2902, + "column": 172 }, "end": { - "line": 2895, - "column": 22 + "line": 2902, + "column": 173 } } }, @@ -382854,15 +386722,15 @@ "binop": null }, "value": "cfg", - "start": 114318, - "end": 114321, + "start": 114798, + "end": 114801, "loc": { "start": { - "line": 2897, + "line": 2903, "column": 16 }, "end": { - "line": 2897, + "line": 2903, "column": 19 } } @@ -382880,15 +386748,15 @@ "binop": null, "updateContext": null }, - "start": 114321, - "end": 114322, + "start": 114801, + "end": 114802, "loc": { "start": { - "line": 2897, + "line": 2903, "column": 19 }, "end": { - "line": 2897, + "line": 2903, "column": 20 } } @@ -382905,17 +386773,17 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 114322, - "end": 114327, + "value": "opacity", + "start": 114802, + "end": 114809, "loc": { "start": { - "line": 2897, + "line": 2903, "column": 20 }, "end": { - "line": 2897, - "column": 25 + "line": 2903, + "column": 27 } } }, @@ -382933,16 +386801,16 @@ "updateContext": null }, "value": "=", - "start": 114328, - "end": 114329, + "start": 114810, + "end": 114811, "loc": { "start": { - "line": 2897, - "column": 26 + "line": 2903, + "column": 28 }, "end": { - "line": 2897, - "column": 27 + "line": 2903, + "column": 29 } } }, @@ -382958,16 +386826,16 @@ "postfix": false, "binop": null }, - "start": 114330, - "end": 114331, + "start": 114812, + "end": 114813, "loc": { "start": { - "line": 2897, - "column": 28 + "line": 2903, + "column": 30 }, "end": { - "line": 2897, - "column": 29 + "line": 2903, + "column": 31 } } }, @@ -382984,16 +386852,16 @@ "binop": null }, "value": "cfg", - "start": 114331, - "end": 114334, + "start": 114813, + "end": 114816, "loc": { "start": { - "line": 2897, - "column": 29 + "line": 2903, + "column": 31 }, "end": { - "line": 2897, - "column": 32 + "line": 2903, + "column": 34 } } }, @@ -383010,16 +386878,16 @@ "binop": null, "updateContext": null }, - "start": 114334, - "end": 114335, + "start": 114816, + "end": 114817, "loc": { "start": { - "line": 2897, - "column": 32 + "line": 2903, + "column": 34 }, "end": { - "line": 2897, - "column": 33 + "line": 2903, + "column": 35 } } }, @@ -383035,96 +386903,97 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 114335, - "end": 114340, + "value": "opacity", + "start": 114817, + "end": 114824, "loc": { "start": { - "line": 2897, - "column": 33 + "line": 2903, + "column": 35 }, "end": { - "line": 2897, - "column": 38 + "line": 2903, + "column": 42 } } }, { "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": 114340, - "end": 114341, + "value": "!==", + "start": 114825, + "end": 114828, "loc": { "start": { - "line": 2897, - "column": 38 + "line": 2903, + "column": 43 }, "end": { - "line": 2897, - "column": 39 + "line": 2903, + "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": 114342, - "end": 114343, + "value": "undefined", + "start": 114829, + "end": 114838, "loc": { "start": { - "line": 2897, - "column": 40 + "line": 2903, + "column": 47 }, "end": { - "line": 2897, - "column": 41 + "line": 2903, + "column": 56 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "&&", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "new", - "start": 114344, - "end": 114347, + "value": "&&", + "start": 114839, + "end": 114841, "loc": { "start": { - "line": 2897, - "column": 42 + "line": 2903, + "column": 57 }, "end": { - "line": 2897, - "column": 45 + "line": 2903, + "column": 59 } } }, @@ -383140,102 +387009,105 @@ "postfix": false, "binop": null }, - "value": "Uint8Array", - "start": 114348, - "end": 114358, + "value": "cfg", + "start": 114842, + "end": 114845, "loc": { "start": { - "line": 2897, - "column": 46 + "line": 2903, + "column": 60 }, "end": { - "line": 2897, - "column": 56 + "line": 2903, + "column": 63 } } }, { "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": 114358, - "end": 114359, + "start": 114845, + "end": 114846, "loc": { "start": { - "line": 2897, - "column": 56 + "line": 2903, + "column": 63 }, "end": { - "line": 2897, - "column": 57 + "line": 2903, + "column": 64 } } }, { "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": 114359, - "end": 114360, + "value": "opacity", + "start": 114846, + "end": 114853, "loc": { "start": { - "line": 2897, - "column": 57 + "line": 2903, + "column": 64 }, "end": { - "line": 2897, - "column": 58 + "line": 2903, + "column": 71 } } }, { "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": "Math", - "start": 114360, - "end": 114364, + "value": "!==", + "start": 114854, + "end": 114857, "loc": { "start": { - "line": 2897, - "column": 58 + "line": 2903, + "column": 72 }, "end": { - "line": 2897, - "column": 62 + "line": 2903, + "column": 75 } } }, { "type": { - "label": ".", + "label": "null", + "keyword": "null", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -383244,24 +387116,25 @@ "binop": null, "updateContext": null }, - "start": 114364, - "end": 114365, + "value": "null", + "start": 114858, + "end": 114862, "loc": { "start": { - "line": 2897, - "column": 62 + "line": 2903, + "column": 76 }, "end": { - "line": 2897, - "column": 63 + "line": 2903, + "column": 80 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -383269,42 +387142,42 @@ "postfix": false, "binop": null }, - "value": "floor", - "start": 114365, - "end": 114370, + "start": 114862, + "end": 114863, "loc": { "start": { - "line": 2897, - "column": 63 + "line": 2903, + "column": 80 }, "end": { - "line": 2897, - "column": 68 + "line": 2903, + "column": 81 } } }, { "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": 114370, - "end": 114371, + "start": 114864, + "end": 114865, "loc": { "start": { - "line": 2897, - "column": 68 + "line": 2903, + "column": 82 }, "end": { - "line": 2897, - "column": 69 + "line": 2903, + "column": 83 } } }, @@ -383320,17 +387193,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 114371, - "end": 114374, + "value": "Math", + "start": 114866, + "end": 114870, "loc": { "start": { - "line": 2897, - "column": 69 + "line": 2903, + "column": 84 }, "end": { - "line": 2897, - "column": 72 + "line": 2903, + "column": 88 } } }, @@ -383347,16 +387220,16 @@ "binop": null, "updateContext": null }, - "start": 114374, - "end": 114375, + "start": 114870, + "end": 114871, "loc": { "start": { - "line": 2897, - "column": 72 + "line": 2903, + "column": 88 }, "end": { - "line": 2897, - "column": 73 + "line": 2903, + "column": 89 } } }, @@ -383372,23 +387245,23 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 114375, - "end": 114380, + "value": "floor", + "start": 114871, + "end": 114876, "loc": { "start": { - "line": 2897, - "column": 73 + "line": 2903, + "column": 89 }, "end": { - "line": 2897, - "column": 78 + "line": 2903, + "column": 94 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -383396,25 +387269,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 114380, - "end": 114381, + "start": 114876, + "end": 114877, "loc": { "start": { - "line": 2897, - "column": 78 + "line": 2903, + "column": 94 }, "end": { - "line": 2897, - "column": 79 + "line": 2903, + "column": 95 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -383422,26 +387294,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 114381, - "end": 114382, + "value": "cfg", + "start": 114877, + "end": 114880, "loc": { "start": { - "line": 2897, - "column": 79 + "line": 2903, + "column": 95 }, "end": { - "line": 2897, - "column": 80 + "line": 2903, + "column": 98 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -383452,49 +387323,22 @@ "binop": null, "updateContext": null }, - "start": 114382, - "end": 114383, + "start": 114880, + "end": 114881, "loc": { "start": { - "line": 2897, - "column": 80 - }, - "end": { - "line": 2897, - "column": 81 - } - } - }, - { - "type": { - "label": "*", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 10, - "updateContext": null - }, - "value": "*", - "start": 114384, - "end": 114385, - "loc": { - "start": { - "line": 2897, - "column": 82 + "line": 2903, + "column": 98 }, "end": { - "line": 2897, - "column": 83 + "line": 2903, + "column": 99 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -383502,53 +387346,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 114386, - "end": 114389, + "value": "opacity", + "start": 114881, + "end": 114888, "loc": { "start": { - "line": 2897, - "column": 84 + "line": 2903, + "column": 99 }, "end": { - "line": 2897, - "column": 87 + "line": 2903, + "column": 106 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "*", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 10, + "updateContext": null }, - "start": 114389, - "end": 114390, + "value": "*", + "start": 114889, + "end": 114890, "loc": { "start": { - "line": 2897, - "column": 87 + "line": 2903, + "column": 107 }, "end": { - "line": 2897, - "column": 88 + "line": 2903, + "column": 108 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -383557,24 +387402,25 @@ "binop": null, "updateContext": null }, - "start": 114390, - "end": 114391, + "value": 255, + "start": 114891, + "end": 114894, "loc": { "start": { - "line": 2897, - "column": 88 + "line": 2903, + "column": 109 }, "end": { - "line": 2897, - "column": 89 + "line": 2903, + "column": 112 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -383582,24 +387428,23 @@ "postfix": false, "binop": null }, - "value": "Math", - "start": 114392, - "end": 114396, + "start": 114894, + "end": 114895, "loc": { "start": { - "line": 2897, - "column": 90 + "line": 2903, + "column": 112 }, "end": { - "line": 2897, - "column": 94 + "line": 2903, + "column": 113 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -383609,22 +387454,22 @@ "binop": null, "updateContext": null }, - "start": 114396, - "end": 114397, + "start": 114896, + "end": 114897, "loc": { "start": { - "line": 2897, - "column": 94 + "line": 2903, + "column": 114 }, "end": { - "line": 2897, - "column": 95 + "line": 2903, + "column": 115 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -383632,44 +387477,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "floor", - "start": 114397, - "end": 114402, + "value": 255, + "start": 114898, + "end": 114901, "loc": { "start": { - "line": 2897, - "column": 95 + "line": 2903, + "column": 116 }, "end": { - "line": 2897, - "column": 100 + "line": 2903, + "column": 119 } } }, { "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": 114402, - "end": 114403, + "start": 114901, + "end": 114902, "loc": { "start": { - "line": 2897, - "column": 100 + "line": 2903, + "column": 119 }, "end": { - "line": 2897, - "column": 101 + "line": 2903, + "column": 120 } } }, @@ -383686,16 +387533,16 @@ "binop": null }, "value": "cfg", - "start": 114403, - "end": 114406, + "start": 114919, + "end": 114922, "loc": { "start": { - "line": 2897, - "column": 101 + "line": 2904, + "column": 16 }, "end": { - "line": 2897, - "column": 104 + "line": 2904, + "column": 19 } } }, @@ -383712,16 +387559,16 @@ "binop": null, "updateContext": null }, - "start": 114406, - "end": 114407, + "start": 114922, + "end": 114923, "loc": { "start": { - "line": 2897, - "column": 104 + "line": 2904, + "column": 19 }, "end": { - "line": 2897, - "column": 105 + "line": 2904, + "column": 20 } } }, @@ -383737,158 +387584,77 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 114407, - "end": 114412, + "value": "metallic", + "start": 114923, + "end": 114931, "loc": { "start": { - "line": 2897, - "column": 105 + "line": 2904, + "column": 20 }, "end": { - "line": 2897, - "column": 110 + "line": 2904, + "column": 28 } } }, { "type": { - "label": "[", + "label": "=", "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 114412, - "end": 114413, - "loc": { - "start": { - "line": 2897, - "column": 110 - }, - "end": { - "line": 2897, - "column": 111 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 1, - "start": 114413, - "end": 114414, - "loc": { - "start": { - "line": 2897, - "column": 111 - }, - "end": { - "line": 2897, - "column": 112 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 114414, - "end": 114415, + "value": "=", + "start": 114932, + "end": 114933, "loc": { "start": { - "line": 2897, - "column": 112 + "line": 2904, + "column": 29 }, "end": { - "line": 2897, - "column": 113 + "line": 2904, + "column": 30 } } }, { "type": { - "label": "*", + "label": "(", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 10, - "updateContext": null - }, - "value": "*", - "start": 114416, - "end": 114417, - "loc": { - "start": { - "line": 2897, - "column": 114 - }, - "end": { - "line": 2897, - "column": 115 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 114418, - "end": 114421, + "start": 114934, + "end": 114935, "loc": { "start": { - "line": 2897, - "column": 116 + "line": 2904, + "column": 31 }, "end": { - "line": 2897, - "column": 119 + "line": 2904, + "column": 32 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -383896,23 +387662,24 @@ "postfix": false, "binop": null }, - "start": 114421, - "end": 114422, + "value": "cfg", + "start": 114935, + "end": 114938, "loc": { "start": { - "line": 2897, - "column": 119 + "line": 2904, + "column": 32 }, "end": { - "line": 2897, - "column": 120 + "line": 2904, + "column": 35 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -383922,16 +387689,16 @@ "binop": null, "updateContext": null }, - "start": 114422, - "end": 114423, + "start": 114938, + "end": 114939, "loc": { "start": { - "line": 2897, - "column": 120 + "line": 2904, + "column": 35 }, "end": { - "line": 2897, - "column": 121 + "line": 2904, + "column": 36 } } }, @@ -383947,43 +387714,44 @@ "postfix": false, "binop": null }, - "value": "Math", - "start": 114424, - "end": 114428, + "value": "metallic", + "start": 114939, + "end": 114947, "loc": { "start": { - "line": 2897, - "column": 122 + "line": 2904, + "column": 36 }, "end": { - "line": 2897, - "column": 126 + "line": 2904, + "column": 44 } } }, { "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": 114428, - "end": 114429, + "value": "!==", + "start": 114948, + "end": 114951, "loc": { "start": { - "line": 2897, - "column": 126 + "line": 2904, + "column": 45 }, "end": { - "line": 2897, - "column": 127 + "line": 2904, + "column": 48 } } }, @@ -383999,42 +387767,44 @@ "postfix": false, "binop": null }, - "value": "floor", - "start": 114429, - "end": 114434, + "value": "undefined", + "start": 114952, + "end": 114961, "loc": { "start": { - "line": 2897, - "column": 127 + "line": 2904, + "column": 49 }, "end": { - "line": 2897, - "column": 132 + "line": 2904, + "column": 58 } } }, { "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": 114434, - "end": 114435, + "value": "&&", + "start": 114962, + "end": 114964, "loc": { "start": { - "line": 2897, - "column": 132 + "line": 2904, + "column": 59 }, "end": { - "line": 2897, - "column": 133 + "line": 2904, + "column": 61 } } }, @@ -384051,16 +387821,16 @@ "binop": null }, "value": "cfg", - "start": 114435, - "end": 114438, + "start": 114965, + "end": 114968, "loc": { "start": { - "line": 2897, - "column": 133 + "line": 2904, + "column": 62 }, "end": { - "line": 2897, - "column": 136 + "line": 2904, + "column": 65 } } }, @@ -384077,16 +387847,16 @@ "binop": null, "updateContext": null }, - "start": 114438, - "end": 114439, + "start": 114968, + "end": 114969, "loc": { "start": { - "line": 2897, - "column": 136 + "line": 2904, + "column": 65 }, "end": { - "line": 2897, - "column": 137 + "line": 2904, + "column": 66 } } }, @@ -384102,49 +387872,51 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 114439, - "end": 114444, + "value": "metallic", + "start": 114969, + "end": 114977, "loc": { "start": { - "line": 2897, - "column": 137 + "line": 2904, + "column": 66 }, "end": { - "line": 2897, - "column": 142 + "line": 2904, + "column": 74 } } }, { "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": 114444, - "end": 114445, + "value": "!==", + "start": 114978, + "end": 114981, "loc": { "start": { - "line": 2897, - "column": 142 + "line": 2904, + "column": 75 }, "end": { - "line": 2897, - "column": 143 + "line": 2904, + "column": 78 } } }, { "type": { - "label": "num", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -384155,23 +387927,23 @@ "binop": null, "updateContext": null }, - "value": 2, - "start": 114445, - "end": 114446, + "value": "null", + "start": 114982, + "end": 114986, "loc": { "start": { - "line": 2897, - "column": 143 + "line": 2904, + "column": 79 }, "end": { - "line": 2897, - "column": 144 + "line": 2904, + "column": 83 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -384179,25 +387951,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 114446, - "end": 114447, + "start": 114986, + "end": 114987, "loc": { "start": { - "line": 2897, - "column": 144 + "line": 2904, + "column": 83 }, "end": { - "line": 2897, - "column": 145 + "line": 2904, + "column": 84 } } }, { "type": { - "label": "*", + "label": "?", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -384205,26 +387976,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 114448, - "end": 114449, + "start": 114988, + "end": 114989, "loc": { "start": { - "line": 2897, - "column": 146 + "line": 2904, + "column": 85 }, "end": { - "line": 2897, - "column": 147 + "line": 2904, + "column": 86 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -384232,26 +388002,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 114450, - "end": 114453, + "value": "Math", + "start": 114990, + "end": 114994, "loc": { "start": { - "line": 2897, - "column": 148 + "line": 2904, + "column": 87 }, "end": { - "line": 2897, - "column": 151 + "line": 2904, + "column": 91 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -384259,52 +388028,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 114453, - "end": 114454, + "start": 114994, + "end": 114995, "loc": { "start": { - "line": 2897, - "column": 151 + "line": 2904, + "column": 91 }, "end": { - "line": 2897, - "column": 152 + "line": 2904, + "column": 92 } } }, { "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": 114454, - "end": 114455, + "value": "floor", + "start": 114995, + "end": 115000, "loc": { "start": { - "line": 2897, - "column": 152 + "line": 2904, + "column": 92 }, "end": { - "line": 2897, - "column": 153 + "line": 2904, + "column": 97 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -384312,50 +388082,50 @@ "postfix": false, "binop": null }, - "start": 114455, - "end": 114456, + "start": 115000, + "end": 115001, "loc": { "start": { - "line": 2897, - "column": 153 + "line": 2904, + "column": 97 }, "end": { - "line": 2897, - "column": 154 + "line": 2904, + "column": 98 } } }, { "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": 114457, - "end": 114458, + "value": "cfg", + "start": 115001, + "end": 115004, "loc": { "start": { - "line": 2897, - "column": 155 + "line": 2904, + "column": 98 }, "end": { - "line": 2897, - "column": 156 + "line": 2904, + "column": 101 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -384364,22 +388134,22 @@ "binop": null, "updateContext": null }, - "start": 114459, - "end": 114460, + "start": 115004, + "end": 115005, "loc": { "start": { - "line": 2897, - "column": 157 + "line": 2904, + "column": 101 }, "end": { - "line": 2897, - "column": 158 + "line": 2904, + "column": 102 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -384387,26 +388157,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 114460, - "end": 114463, + "value": "metallic", + "start": 115005, + "end": 115013, "loc": { "start": { - "line": 2897, - "column": 158 + "line": 2904, + "column": 102 }, "end": { - "line": 2897, - "column": 161 + "line": 2904, + "column": 110 } } }, { "type": { - "label": ",", + "label": "*", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -384414,19 +388183,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "start": 114463, - "end": 114464, + "value": "*", + "start": 115014, + "end": 115015, "loc": { "start": { - "line": 2897, - "column": 161 + "line": 2904, + "column": 111 }, "end": { - "line": 2897, - "column": 162 + "line": 2904, + "column": 112 } } }, @@ -384444,50 +388214,49 @@ "updateContext": null }, "value": 255, - "start": 114465, - "end": 114468, + "start": 115016, + "end": 115019, "loc": { "start": { - "line": 2897, - "column": 163 + "line": 2904, + "column": 113 }, "end": { - "line": 2897, - "column": 166 + "line": 2904, + "column": 116 } } }, { "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": 114468, - "end": 114469, + "start": 115019, + "end": 115020, "loc": { "start": { - "line": 2897, - "column": 166 + "line": 2904, + "column": 116 }, "end": { - "line": 2897, - "column": 167 + "line": 2904, + "column": 117 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": ":", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -384496,25 +388265,24 @@ "binop": null, "updateContext": null }, - "value": 255, - "start": 114470, - "end": 114473, + "start": 115021, + "end": 115022, "loc": { "start": { - "line": 2897, - "column": 168 + "line": 2904, + "column": 118 }, "end": { - "line": 2897, - "column": 171 + "line": 2904, + "column": 119 } } }, { "type": { - "label": "]", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -384523,16 +388291,17 @@ "binop": null, "updateContext": null }, - "start": 114473, - "end": 114474, + "value": 0, + "start": 115023, + "end": 115024, "loc": { "start": { - "line": 2897, - "column": 171 + "line": 2904, + "column": 120 }, "end": { - "line": 2897, - "column": 172 + "line": 2904, + "column": 121 } } }, @@ -384549,16 +388318,16 @@ "binop": null, "updateContext": null }, - "start": 114474, - "end": 114475, + "start": 115024, + "end": 115025, "loc": { "start": { - "line": 2897, - "column": 172 + "line": 2904, + "column": 121 }, "end": { - "line": 2897, - "column": 173 + "line": 2904, + "column": 122 } } }, @@ -384575,15 +388344,15 @@ "binop": null }, "value": "cfg", - "start": 114492, - "end": 114495, + "start": 115042, + "end": 115045, "loc": { "start": { - "line": 2898, + "line": 2905, "column": 16 }, "end": { - "line": 2898, + "line": 2905, "column": 19 } } @@ -384601,15 +388370,15 @@ "binop": null, "updateContext": null }, - "start": 114495, - "end": 114496, + "start": 115045, + "end": 115046, "loc": { "start": { - "line": 2898, + "line": 2905, "column": 19 }, "end": { - "line": 2898, + "line": 2905, "column": 20 } } @@ -384626,17 +388395,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 114496, - "end": 114503, + "value": "roughness", + "start": 115046, + "end": 115055, "loc": { "start": { - "line": 2898, + "line": 2905, "column": 20 }, "end": { - "line": 2898, - "column": 27 + "line": 2905, + "column": 29 } } }, @@ -384654,16 +388423,16 @@ "updateContext": null }, "value": "=", - "start": 114504, - "end": 114505, + "start": 115056, + "end": 115057, "loc": { "start": { - "line": 2898, - "column": 28 + "line": 2905, + "column": 30 }, "end": { - "line": 2898, - "column": 29 + "line": 2905, + "column": 31 } } }, @@ -384679,16 +388448,16 @@ "postfix": false, "binop": null }, - "start": 114506, - "end": 114507, + "start": 115058, + "end": 115059, "loc": { "start": { - "line": 2898, - "column": 30 + "line": 2905, + "column": 32 }, "end": { - "line": 2898, - "column": 31 + "line": 2905, + "column": 33 } } }, @@ -384705,16 +388474,16 @@ "binop": null }, "value": "cfg", - "start": 114507, - "end": 114510, + "start": 115059, + "end": 115062, "loc": { "start": { - "line": 2898, - "column": 31 + "line": 2905, + "column": 33 }, "end": { - "line": 2898, - "column": 34 + "line": 2905, + "column": 36 } } }, @@ -384731,16 +388500,16 @@ "binop": null, "updateContext": null }, - "start": 114510, - "end": 114511, + "start": 115062, + "end": 115063, "loc": { "start": { - "line": 2898, - "column": 34 + "line": 2905, + "column": 36 }, "end": { - "line": 2898, - "column": 35 + "line": 2905, + "column": 37 } } }, @@ -384756,17 +388525,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 114511, - "end": 114518, + "value": "roughness", + "start": 115063, + "end": 115072, "loc": { "start": { - "line": 2898, - "column": 35 + "line": 2905, + "column": 37 }, "end": { - "line": 2898, - "column": 42 + "line": 2905, + "column": 46 } } }, @@ -384784,16 +388553,16 @@ "updateContext": null }, "value": "!==", - "start": 114519, - "end": 114522, + "start": 115073, + "end": 115076, "loc": { "start": { - "line": 2898, - "column": 43 + "line": 2905, + "column": 47 }, "end": { - "line": 2898, - "column": 46 + "line": 2905, + "column": 50 } } }, @@ -384810,16 +388579,16 @@ "binop": null }, "value": "undefined", - "start": 114523, - "end": 114532, + "start": 115077, + "end": 115086, "loc": { "start": { - "line": 2898, - "column": 47 + "line": 2905, + "column": 51 }, "end": { - "line": 2898, - "column": 56 + "line": 2905, + "column": 60 } } }, @@ -384837,16 +388606,16 @@ "updateContext": null }, "value": "&&", - "start": 114533, - "end": 114535, + "start": 115087, + "end": 115089, "loc": { "start": { - "line": 2898, - "column": 57 + "line": 2905, + "column": 61 }, "end": { - "line": 2898, - "column": 59 + "line": 2905, + "column": 63 } } }, @@ -384863,16 +388632,16 @@ "binop": null }, "value": "cfg", - "start": 114536, - "end": 114539, + "start": 115090, + "end": 115093, "loc": { "start": { - "line": 2898, - "column": 60 + "line": 2905, + "column": 64 }, "end": { - "line": 2898, - "column": 63 + "line": 2905, + "column": 67 } } }, @@ -384889,16 +388658,16 @@ "binop": null, "updateContext": null }, - "start": 114539, - "end": 114540, + "start": 115093, + "end": 115094, "loc": { "start": { - "line": 2898, - "column": 63 + "line": 2905, + "column": 67 }, "end": { - "line": 2898, - "column": 64 + "line": 2905, + "column": 68 } } }, @@ -384914,17 +388683,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 114540, - "end": 114547, + "value": "roughness", + "start": 115094, + "end": 115103, "loc": { "start": { - "line": 2898, - "column": 64 + "line": 2905, + "column": 68 }, "end": { - "line": 2898, - "column": 71 + "line": 2905, + "column": 77 } } }, @@ -384942,16 +388711,16 @@ "updateContext": null }, "value": "!==", - "start": 114548, - "end": 114551, + "start": 115104, + "end": 115107, "loc": { "start": { - "line": 2898, - "column": 72 + "line": 2905, + "column": 78 }, "end": { - "line": 2898, - "column": 75 + "line": 2905, + "column": 81 } } }, @@ -384970,16 +388739,16 @@ "updateContext": null }, "value": "null", - "start": 114552, - "end": 114556, + "start": 115108, + "end": 115112, "loc": { "start": { - "line": 2898, - "column": 76 + "line": 2905, + "column": 82 }, "end": { - "line": 2898, - "column": 80 + "line": 2905, + "column": 86 } } }, @@ -384995,16 +388764,16 @@ "postfix": false, "binop": null }, - "start": 114556, - "end": 114557, + "start": 115112, + "end": 115113, "loc": { "start": { - "line": 2898, - "column": 80 + "line": 2905, + "column": 86 }, "end": { - "line": 2898, - "column": 81 + "line": 2905, + "column": 87 } } }, @@ -385021,16 +388790,16 @@ "binop": null, "updateContext": null }, - "start": 114558, - "end": 114559, + "start": 115114, + "end": 115115, "loc": { "start": { - "line": 2898, - "column": 82 + "line": 2905, + "column": 88 }, "end": { - "line": 2898, - "column": 83 + "line": 2905, + "column": 89 } } }, @@ -385047,16 +388816,16 @@ "binop": null }, "value": "Math", - "start": 114560, - "end": 114564, + "start": 115116, + "end": 115120, "loc": { "start": { - "line": 2898, - "column": 84 + "line": 2905, + "column": 90 }, "end": { - "line": 2898, - "column": 88 + "line": 2905, + "column": 94 } } }, @@ -385073,16 +388842,16 @@ "binop": null, "updateContext": null }, - "start": 114564, - "end": 114565, + "start": 115120, + "end": 115121, "loc": { "start": { - "line": 2898, - "column": 88 + "line": 2905, + "column": 94 }, "end": { - "line": 2898, - "column": 89 + "line": 2905, + "column": 95 } } }, @@ -385099,16 +388868,16 @@ "binop": null }, "value": "floor", - "start": 114565, - "end": 114570, + "start": 115121, + "end": 115126, "loc": { "start": { - "line": 2898, - "column": 89 + "line": 2905, + "column": 95 }, "end": { - "line": 2898, - "column": 94 + "line": 2905, + "column": 100 } } }, @@ -385124,16 +388893,16 @@ "postfix": false, "binop": null }, - "start": 114570, - "end": 114571, + "start": 115126, + "end": 115127, "loc": { "start": { - "line": 2898, - "column": 94 + "line": 2905, + "column": 100 }, "end": { - "line": 2898, - "column": 95 + "line": 2905, + "column": 101 } } }, @@ -385150,16 +388919,16 @@ "binop": null }, "value": "cfg", - "start": 114571, - "end": 114574, + "start": 115127, + "end": 115130, "loc": { "start": { - "line": 2898, - "column": 95 + "line": 2905, + "column": 101 }, "end": { - "line": 2898, - "column": 98 + "line": 2905, + "column": 104 } } }, @@ -385176,16 +388945,16 @@ "binop": null, "updateContext": null }, - "start": 114574, - "end": 114575, + "start": 115130, + "end": 115131, "loc": { "start": { - "line": 2898, - "column": 98 + "line": 2905, + "column": 104 }, "end": { - "line": 2898, - "column": 99 + "line": 2905, + "column": 105 } } }, @@ -385201,17 +388970,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 114575, - "end": 114582, + "value": "roughness", + "start": 115131, + "end": 115140, "loc": { "start": { - "line": 2898, - "column": 99 + "line": 2905, + "column": 105 }, "end": { - "line": 2898, - "column": 106 + "line": 2905, + "column": 114 } } }, @@ -385229,16 +388998,16 @@ "updateContext": null }, "value": "*", - "start": 114583, - "end": 114584, + "start": 115141, + "end": 115142, "loc": { "start": { - "line": 2898, - "column": 107 + "line": 2905, + "column": 115 }, "end": { - "line": 2898, - "column": 108 + "line": 2905, + "column": 116 } } }, @@ -385256,16 +389025,16 @@ "updateContext": null }, "value": 255, - "start": 114585, - "end": 114588, + "start": 115143, + "end": 115146, "loc": { "start": { - "line": 2898, - "column": 109 + "line": 2905, + "column": 117 }, "end": { - "line": 2898, - "column": 112 + "line": 2905, + "column": 120 } } }, @@ -385281,16 +389050,16 @@ "postfix": false, "binop": null }, - "start": 114588, - "end": 114589, + "start": 115146, + "end": 115147, "loc": { "start": { - "line": 2898, - "column": 112 + "line": 2905, + "column": 120 }, "end": { - "line": 2898, - "column": 113 + "line": 2905, + "column": 121 } } }, @@ -385307,16 +389076,16 @@ "binop": null, "updateContext": null }, - "start": 114590, - "end": 114591, + "start": 115148, + "end": 115149, "loc": { "start": { - "line": 2898, - "column": 114 + "line": 2905, + "column": 122 }, "end": { - "line": 2898, - "column": 115 + "line": 2905, + "column": 123 } } }, @@ -385334,16 +389103,16 @@ "updateContext": null }, "value": 255, - "start": 114592, - "end": 114595, + "start": 115150, + "end": 115153, "loc": { "start": { - "line": 2898, - "column": 116 + "line": 2905, + "column": 124 }, "end": { - "line": 2898, - "column": 119 + "line": 2905, + "column": 127 } } }, @@ -385360,48 +389129,39 @@ "binop": null, "updateContext": null }, - "start": 114595, - "end": 114596, + "start": 115153, + "end": 115154, "loc": { "start": { - "line": 2898, - "column": 119 + "line": 2905, + "column": 127 }, "end": { - "line": 2898, - "column": 120 + "line": 2905, + "column": 128 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "cfg", - "start": 114613, - "end": 114616, + "type": "CommentLine", + "value": " RTC", + "start": 115172, + "end": 115178, "loc": { "start": { - "line": 2899, + "line": 2907, "column": 16 }, "end": { - "line": 2899, - "column": 19 + "line": 2907, + "column": 22 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -385412,69 +389172,17 @@ "binop": null, "updateContext": null }, - "start": 114616, - "end": 114617, - "loc": { - "start": { - "line": 2899, - "column": 19 - }, - "end": { - "line": 2899, - "column": 20 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "metallic", - "start": 114617, - "end": 114625, - "loc": { - "start": { - "line": 2899, - "column": 20 - }, - "end": { - "line": 2899, - "column": 28 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 114626, - "end": 114627, + "value": "if", + "start": 115196, + "end": 115198, "loc": { "start": { - "line": 2899, - "column": 29 + "line": 2909, + "column": 16 }, "end": { - "line": 2899, - "column": 30 + "line": 2909, + "column": 18 } } }, @@ -385490,16 +389198,16 @@ "postfix": false, "binop": null }, - "start": 114628, - "end": 114629, + "start": 115199, + "end": 115200, "loc": { "start": { - "line": 2899, - "column": 31 + "line": 2909, + "column": 19 }, "end": { - "line": 2899, - "column": 32 + "line": 2909, + "column": 20 } } }, @@ -385516,16 +389224,16 @@ "binop": null }, "value": "cfg", - "start": 114629, - "end": 114632, + "start": 115200, + "end": 115203, "loc": { "start": { - "line": 2899, - "column": 32 + "line": 2909, + "column": 20 }, "end": { - "line": 2899, - "column": 35 + "line": 2909, + "column": 23 } } }, @@ -385542,16 +389250,16 @@ "binop": null, "updateContext": null }, - "start": 114632, - "end": 114633, + "start": 115203, + "end": 115204, "loc": { "start": { - "line": 2899, - "column": 35 + "line": 2909, + "column": 23 }, "end": { - "line": 2899, - "column": 36 + "line": 2909, + "column": 24 } } }, @@ -385567,51 +389275,49 @@ "postfix": false, "binop": null }, - "value": "metallic", - "start": 114633, - "end": 114641, + "value": "positions", + "start": 115204, + "end": 115213, "loc": { "start": { - "line": 2899, - "column": 36 + "line": 2909, + "column": 24 }, "end": { - "line": 2899, - "column": 44 + "line": 2909, + "column": 33 } } }, { "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": 114642, - "end": 114645, + "start": 115213, + "end": 115214, "loc": { "start": { - "line": 2899, - "column": 45 + "line": 2909, + "column": 33 }, "end": { - "line": 2899, - "column": 48 + "line": 2909, + "column": 34 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -385620,44 +389326,44 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 114646, - "end": 114655, + "start": 115215, + "end": 115216, "loc": { "start": { - "line": 2899, - "column": 49 + "line": 2909, + "column": 35 }, "end": { - "line": 2899, - "column": 58 + "line": 2909, + "column": 36 } } }, { "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": 114656, - "end": 114658, + "value": "const", + "start": 115237, + "end": 115242, "loc": { "start": { - "line": 2899, - "column": 59 + "line": 2910, + "column": 20 }, "end": { - "line": 2899, - "column": 61 + "line": 2910, + "column": 25 } } }, @@ -385673,105 +389379,78 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 114659, - "end": 114662, + "value": "rtcPositions", + "start": 115243, + "end": 115255, "loc": { "start": { - "line": 2899, - "column": 62 + "line": 2910, + "column": 26 }, "end": { - "line": 2899, - "column": 65 + "line": 2910, + "column": 38 } } }, { "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": 114662, - "end": 114663, - "loc": { - "start": { - "line": 2899, - "column": 65 - }, - "end": { - "line": 2899, - "column": 66 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "metallic", - "start": 114663, - "end": 114671, + "value": "=", + "start": 115256, + "end": 115257, "loc": { "start": { - "line": 2899, - "column": 66 + "line": 2910, + "column": 39 }, "end": { - "line": 2899, - "column": 74 + "line": 2910, + "column": 40 } } }, { "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": 114672, - "end": 114675, + "start": 115258, + "end": 115259, "loc": { "start": { - "line": 2899, - "column": 75 + "line": 2910, + "column": 41 }, "end": { - "line": 2899, - "column": 78 + "line": 2910, + "column": 42 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -385780,49 +389459,50 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 114676, - "end": 114680, + "start": 115259, + "end": 115260, "loc": { "start": { - "line": 2899, - "column": 79 + "line": 2910, + "column": 42 }, "end": { - "line": 2899, - "column": 83 + "line": 2910, + "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": 114680, - "end": 114681, + "start": 115260, + "end": 115261, "loc": { "start": { - "line": 2899, - "column": 83 + "line": 2910, + "column": 43 }, "end": { - "line": 2899, - "column": 84 + "line": 2910, + "column": 44 } } }, { "type": { - "label": "?", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -385832,16 +389512,17 @@ "binop": null, "updateContext": null }, - "start": 114682, - "end": 114683, + "value": "const", + "start": 115282, + "end": 115287, "loc": { "start": { - "line": 2899, - "column": 85 + "line": 2911, + "column": 20 }, "end": { - "line": 2899, - "column": 86 + "line": 2911, + "column": 25 } } }, @@ -385857,43 +389538,44 @@ "postfix": false, "binop": null }, - "value": "Math", - "start": 114684, - "end": 114688, + "value": "rtcNeeded", + "start": 115288, + "end": 115297, "loc": { "start": { - "line": 2899, - "column": 87 + "line": 2911, + "column": 26 }, "end": { - "line": 2899, - "column": 91 + "line": 2911, + "column": 35 } } }, { "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": 114688, - "end": 114689, + "value": "=", + "start": 115298, + "end": 115299, "loc": { "start": { - "line": 2899, - "column": 91 + "line": 2911, + "column": 36 }, "end": { - "line": 2899, - "column": 92 + "line": 2911, + "column": 37 } } }, @@ -385909,17 +389591,17 @@ "postfix": false, "binop": null }, - "value": "floor", - "start": 114689, - "end": 114694, + "value": "worldToRTCPositions", + "start": 115300, + "end": 115319, "loc": { "start": { - "line": 2899, - "column": 92 + "line": 2911, + "column": 38 }, "end": { - "line": 2899, - "column": 97 + "line": 2911, + "column": 57 } } }, @@ -385935,16 +389617,16 @@ "postfix": false, "binop": null }, - "start": 114694, - "end": 114695, + "start": 115319, + "end": 115320, "loc": { "start": { - "line": 2899, - "column": 97 + "line": 2911, + "column": 57 }, "end": { - "line": 2899, - "column": 98 + "line": 2911, + "column": 58 } } }, @@ -385961,16 +389643,16 @@ "binop": null }, "value": "cfg", - "start": 114695, - "end": 114698, + "start": 115320, + "end": 115323, "loc": { "start": { - "line": 2899, - "column": 98 + "line": 2911, + "column": 58 }, "end": { - "line": 2899, - "column": 101 + "line": 2911, + "column": 61 } } }, @@ -385987,16 +389669,16 @@ "binop": null, "updateContext": null }, - "start": 114698, - "end": 114699, + "start": 115323, + "end": 115324, "loc": { "start": { - "line": 2899, - "column": 101 + "line": 2911, + "column": 61 }, "end": { - "line": 2899, - "column": 102 + "line": 2911, + "column": 62 } } }, @@ -386012,23 +389694,23 @@ "postfix": false, "binop": null }, - "value": "metallic", - "start": 114699, - "end": 114707, + "value": "positions", + "start": 115324, + "end": 115333, "loc": { "start": { - "line": 2899, - "column": 102 + "line": 2911, + "column": 62 }, "end": { - "line": 2899, - "column": 110 + "line": 2911, + "column": 71 } } }, { "type": { - "label": "*", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -386036,55 +389718,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, - "updateContext": null - }, - "value": "*", - "start": 114708, - "end": 114709, - "loc": { - "start": { - "line": 2899, - "column": 111 - }, - "end": { - "line": 2899, - "column": 112 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "value": 255, - "start": 114710, - "end": 114713, + "start": 115333, + "end": 115334, "loc": { "start": { - "line": 2899, - "column": 113 + "line": 2911, + "column": 71 }, "end": { - "line": 2899, - "column": 116 + "line": 2911, + "column": 72 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -386092,22 +389746,23 @@ "postfix": false, "binop": null }, - "start": 114713, - "end": 114714, + "value": "rtcPositions", + "start": 115335, + "end": 115347, "loc": { "start": { - "line": 2899, - "column": 116 + "line": 2911, + "column": 73 }, "end": { - "line": 2899, - "column": 117 + "line": 2911, + "column": 85 } } }, { "type": { - "label": ":", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -386118,22 +389773,22 @@ "binop": null, "updateContext": null }, - "start": 114715, - "end": 114716, + "start": 115347, + "end": 115348, "loc": { "start": { - "line": 2899, - "column": 118 + "line": 2911, + "column": 85 }, "end": { - "line": 2899, - "column": 119 + "line": 2911, + "column": 86 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -386141,54 +389796,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 114717, - "end": 114718, - "loc": { - "start": { - "line": 2899, - "column": 120 - }, - "end": { - "line": 2899, - "column": 121 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 114718, - "end": 114719, + "value": "tempVec3a", + "start": 115349, + "end": 115358, "loc": { "start": { - "line": 2899, - "column": 121 + "line": 2911, + "column": 87 }, "end": { - "line": 2899, - "column": 122 + "line": 2911, + "column": 96 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -386196,24 +389824,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 114736, - "end": 114739, + "start": 115358, + "end": 115359, "loc": { "start": { - "line": 2900, - "column": 16 + "line": 2911, + "column": 96 }, "end": { - "line": 2900, - "column": 19 + "line": 2911, + "column": 97 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -386223,69 +389850,44 @@ "binop": null, "updateContext": null }, - "start": 114739, - "end": 114740, + "start": 115359, + "end": 115360, "loc": { "start": { - "line": 2900, - "column": 19 + "line": 2911, + "column": 97 }, "end": { - "line": 2900, - "column": 20 + "line": 2911, + "column": 98 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "roughness", - "start": 114740, - "end": 114749, - "loc": { - "start": { - "line": 2900, - "column": 20 - }, - "end": { - "line": 2900, - "column": 29 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 114750, - "end": 114751, + "value": "if", + "start": 115381, + "end": 115383, "loc": { "start": { - "line": 2900, - "column": 30 + "line": 2912, + "column": 20 }, "end": { - "line": 2900, - "column": 31 + "line": 2912, + "column": 22 } } }, @@ -386301,16 +389903,16 @@ "postfix": false, "binop": null }, - "start": 114752, - "end": 114753, + "start": 115384, + "end": 115385, "loc": { "start": { - "line": 2900, - "column": 32 + "line": 2912, + "column": 23 }, "end": { - "line": 2900, - "column": 33 + "line": 2912, + "column": 24 } } }, @@ -386326,23 +389928,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 114753, - "end": 114756, + "value": "rtcNeeded", + "start": 115385, + "end": 115394, "loc": { "start": { - "line": 2900, - "column": 33 + "line": 2912, + "column": 24 }, "end": { - "line": 2900, - "column": 36 + "line": 2912, + "column": 33 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -386350,79 +389952,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 114756, - "end": 114757, - "loc": { - "start": { - "line": 2900, - "column": 36 - }, - "end": { - "line": 2900, - "column": 37 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "value": "roughness", - "start": 114757, - "end": 114766, + "start": 115394, + "end": 115395, "loc": { "start": { - "line": 2900, - "column": 37 + "line": 2912, + "column": 33 }, "end": { - "line": 2900, - "column": 46 + "line": 2912, + "column": 34 } } }, { "type": { - "label": "==/!=", + "label": "{", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 114767, - "end": 114770, - "loc": { - "start": { - "line": 2900, - "column": 47 - }, - "end": { - "line": 2900, - "column": 50 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -386431,44 +389979,16 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 114771, - "end": 114780, - "loc": { - "start": { - "line": 2900, - "column": 51 - }, - "end": { - "line": 2900, - "column": 60 - } - } - }, - { - "type": { - "label": "&&", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 2, - "updateContext": null - }, - "value": "&&", - "start": 114781, - "end": 114783, + "start": 115396, + "end": 115397, "loc": { "start": { - "line": 2900, - "column": 61 + "line": 2912, + "column": 35 }, "end": { - "line": 2900, - "column": 63 + "line": 2912, + "column": 36 } } }, @@ -386485,16 +390005,16 @@ "binop": null }, "value": "cfg", - "start": 114784, - "end": 114787, + "start": 115422, + "end": 115425, "loc": { "start": { - "line": 2900, - "column": 64 + "line": 2913, + "column": 24 }, "end": { - "line": 2900, - "column": 67 + "line": 2913, + "column": 27 } } }, @@ -386511,16 +390031,16 @@ "binop": null, "updateContext": null }, - "start": 114787, - "end": 114788, + "start": 115425, + "end": 115426, "loc": { "start": { - "line": 2900, - "column": 67 + "line": 2913, + "column": 27 }, "end": { - "line": 2900, - "column": 68 + "line": 2913, + "column": 28 } } }, @@ -386536,80 +390056,52 @@ "postfix": false, "binop": null }, - "value": "roughness", - "start": 114788, - "end": 114797, + "value": "positions", + "start": 115426, + "end": 115435, "loc": { "start": { - "line": 2900, - "column": 68 + "line": 2913, + "column": 28 }, "end": { - "line": 2900, - "column": 77 + "line": 2913, + "column": 37 } } }, { "type": { - "label": "==/!=", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 114798, - "end": 114801, - "loc": { - "start": { - "line": 2900, - "column": 78 - }, - "end": { - "line": 2900, - "column": 81 - } - } - }, - { - "type": { - "label": "null", - "keyword": "null", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "null", - "start": 114802, - "end": 114806, + "value": "=", + "start": 115436, + "end": 115437, "loc": { "start": { - "line": 2900, - "column": 82 + "line": 2913, + "column": 38 }, "end": { - "line": 2900, - "column": 86 + "line": 2913, + "column": 39 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -386617,22 +390109,23 @@ "postfix": false, "binop": null }, - "start": 114806, - "end": 114807, + "value": "rtcPositions", + "start": 115438, + "end": 115450, "loc": { "start": { - "line": 2900, - "column": 86 + "line": 2913, + "column": 40 }, "end": { - "line": 2900, - "column": 87 + "line": 2913, + "column": 52 } } }, { "type": { - "label": "?", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -386643,16 +390136,16 @@ "binop": null, "updateContext": null }, - "start": 114808, - "end": 114809, + "start": 115450, + "end": 115451, "loc": { "start": { - "line": 2900, - "column": 88 + "line": 2913, + "column": 52 }, "end": { - "line": 2900, - "column": 89 + "line": 2913, + "column": 53 } } }, @@ -386668,17 +390161,17 @@ "postfix": false, "binop": null }, - "value": "Math", - "start": 114810, - "end": 114814, + "value": "cfg", + "start": 115476, + "end": 115479, "loc": { "start": { - "line": 2900, - "column": 90 + "line": 2914, + "column": 24 }, "end": { - "line": 2900, - "column": 94 + "line": 2914, + "column": 27 } } }, @@ -386695,16 +390188,16 @@ "binop": null, "updateContext": null }, - "start": 114814, - "end": 114815, + "start": 115479, + "end": 115480, "loc": { "start": { - "line": 2900, - "column": 94 + "line": 2914, + "column": 27 }, "end": { - "line": 2900, - "column": 95 + "line": 2914, + "column": 28 } } }, @@ -386720,42 +390213,44 @@ "postfix": false, "binop": null }, - "value": "floor", - "start": 114815, - "end": 114820, + "value": "origin", + "start": 115480, + "end": 115486, "loc": { "start": { - "line": 2900, - "column": 95 + "line": 2914, + "column": 28 }, "end": { - "line": 2900, - "column": 100 + "line": 2914, + "column": 34 } } }, { "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": 114820, - "end": 114821, + "value": "=", + "start": 115487, + "end": 115488, "loc": { "start": { - "line": 2900, - "column": 100 + "line": 2914, + "column": 35 }, "end": { - "line": 2900, - "column": 101 + "line": 2914, + "column": 36 } } }, @@ -386771,17 +390266,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 114821, - "end": 114824, + "value": "math", + "start": 115489, + "end": 115493, "loc": { "start": { - "line": 2900, - "column": 101 + "line": 2914, + "column": 37 }, "end": { - "line": 2900, - "column": 104 + "line": 2914, + "column": 41 } } }, @@ -386798,16 +390293,16 @@ "binop": null, "updateContext": null }, - "start": 114824, - "end": 114825, + "start": 115493, + "end": 115494, "loc": { "start": { - "line": 2900, - "column": 104 + "line": 2914, + "column": 41 }, "end": { - "line": 2900, - "column": 105 + "line": 2914, + "column": 42 } } }, @@ -386823,79 +390318,50 @@ "postfix": false, "binop": null }, - "value": "roughness", - "start": 114825, - "end": 114834, + "value": "addVec3", + "start": 115494, + "end": 115501, "loc": { "start": { - "line": 2900, - "column": 105 + "line": 2914, + "column": 42 }, "end": { - "line": 2900, - "column": 114 + "line": 2914, + "column": 49 } } }, { "type": { - "label": "*", + "label": "(", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 10, - "updateContext": null - }, - "value": "*", - "start": 114835, - "end": 114836, - "loc": { - "start": { - "line": 2900, - "column": 115 - }, - "end": { - "line": 2900, - "column": 116 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 114837, - "end": 114840, + "start": 115501, + "end": 115502, "loc": { "start": { - "line": 2900, - "column": 117 + "line": 2914, + "column": 49 }, "end": { - "line": 2900, - "column": 120 + "line": 2914, + "column": 50 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -386903,23 +390369,24 @@ "postfix": false, "binop": null }, - "start": 114840, - "end": 114841, + "value": "cfg", + "start": 115502, + "end": 115505, "loc": { "start": { - "line": 2900, - "column": 120 + "line": 2914, + "column": 50 }, "end": { - "line": 2900, - "column": 121 + "line": 2914, + "column": 53 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -386929,22 +390396,22 @@ "binop": null, "updateContext": null }, - "start": 114842, - "end": 114843, + "start": 115505, + "end": 115506, "loc": { "start": { - "line": 2900, - "column": 122 + "line": 2914, + "column": 53 }, "end": { - "line": 2900, - "column": 123 + "line": 2914, + "column": 54 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -386952,26 +390419,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 114844, - "end": 114847, + "value": "origin", + "start": 115506, + "end": 115512, "loc": { "start": { - "line": 2900, - "column": 124 + "line": 2914, + "column": 54 }, "end": { - "line": 2900, - "column": 127 + "line": 2914, + "column": 60 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -386982,85 +390448,68 @@ "binop": null, "updateContext": null }, - "start": 114847, - "end": 114848, - "loc": { - "start": { - "line": 2900, - "column": 127 - }, - "end": { - "line": 2900, - "column": 128 - } - } - }, - { - "type": "CommentLine", - "value": " RTC", - "start": 114866, - "end": 114872, + "start": 115512, + "end": 115513, "loc": { "start": { - "line": 2902, - "column": 16 + "line": 2914, + "column": 60 }, "end": { - "line": 2902, - "column": 22 + "line": 2914, + "column": 61 } } }, { "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": 114890, - "end": 114892, + "value": "tempVec3a", + "start": 115514, + "end": 115523, "loc": { "start": { - "line": 2904, - "column": 16 + "line": 2914, + "column": 62 }, "end": { - "line": 2904, - "column": 18 + "line": 2914, + "column": 71 } } }, { "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": 114893, - "end": 114894, + "start": 115523, + "end": 115524, "loc": { "start": { - "line": 2904, - "column": 19 + "line": 2914, + "column": 71 }, "end": { - "line": 2904, - "column": 20 + "line": 2914, + "column": 72 } } }, @@ -387076,17 +390525,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 114894, - "end": 114897, + "value": "math", + "start": 115525, + "end": 115529, "loc": { "start": { - "line": 2904, - "column": 20 + "line": 2914, + "column": 73 }, "end": { - "line": 2904, - "column": 23 + "line": 2914, + "column": 77 } } }, @@ -387103,16 +390552,16 @@ "binop": null, "updateContext": null }, - "start": 114897, - "end": 114898, + "start": 115529, + "end": 115530, "loc": { "start": { - "line": 2904, - "column": 23 + "line": 2914, + "column": 77 }, "end": { - "line": 2904, - "column": 24 + "line": 2914, + "column": 78 } } }, @@ -387128,48 +390577,23 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 114898, - "end": 114907, - "loc": { - "start": { - "line": 2904, - "column": 24 - }, - "end": { - "line": 2904, - "column": 33 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 114907, - "end": 114908, + "value": "vec3", + "start": 115530, + "end": 115534, "loc": { "start": { - "line": 2904, - "column": 33 + "line": 2914, + "column": 78 }, "end": { - "line": 2904, - "column": 34 + "line": 2914, + "column": 82 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -387179,23 +390603,22 @@ "postfix": false, "binop": null }, - "start": 114909, - "end": 114910, + "start": 115534, + "end": 115535, "loc": { "start": { - "line": 2904, - "column": 35 + "line": 2914, + "column": 82 }, "end": { - "line": 2904, - "column": 36 + "line": 2914, + "column": 83 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -387203,28 +390626,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 114931, - "end": 114936, + "start": 115535, + "end": 115536, "loc": { "start": { - "line": 2905, - "column": 20 + "line": 2914, + "column": 83 }, "end": { - "line": 2905, - "column": 25 + "line": 2914, + "column": 84 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -387232,76 +390653,73 @@ "postfix": false, "binop": null }, - "value": "rtcPositions", - "start": 114937, - "end": 114949, + "start": 115536, + "end": 115537, "loc": { "start": { - "line": 2905, - "column": 26 + "line": 2914, + "column": 84 }, "end": { - "line": 2905, - "column": 38 + "line": 2914, + "column": 85 } } }, { "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": 114950, - "end": 114951, + "start": 115537, + "end": 115538, "loc": { "start": { - "line": 2905, - "column": 39 + "line": 2914, + "column": 85 }, "end": { - "line": 2905, - "column": 40 + "line": 2914, + "column": 86 } } }, { "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": 114952, - "end": 114953, + "start": 115559, + "end": 115560, "loc": { "start": { - "line": 2905, - "column": 41 + "line": 2915, + "column": 20 }, "end": { - "line": 2905, - "column": 42 + "line": 2915, + "column": 21 } } }, { "type": { - "label": "]", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -387309,26 +390727,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 114953, - "end": 114954, + "start": 115577, + "end": 115578, "loc": { "start": { - "line": 2905, - "column": 42 + "line": 2916, + "column": 16 }, "end": { - "line": 2905, - "column": 43 + "line": 2916, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -387338,44 +390756,42 @@ "binop": null, "updateContext": null }, - "start": 114954, - "end": 114955, + "value": "if", + "start": 115596, + "end": 115598, "loc": { "start": { - "line": 2905, - "column": 43 + "line": 2918, + "column": 16 }, "end": { - "line": 2905, - "column": 44 + "line": 2918, + "column": 18 } } }, { "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": 114976, - "end": 114981, + "start": 115599, + "end": 115600, "loc": { "start": { - "line": 2906, - "column": 20 + "line": 2918, + "column": 19 }, "end": { - "line": 2906, - "column": 25 + "line": 2918, + "column": 20 } } }, @@ -387391,44 +390807,43 @@ "postfix": false, "binop": null }, - "value": "rtcNeeded", - "start": 114982, - "end": 114991, + "value": "cfg", + "start": 115600, + "end": 115603, "loc": { "start": { - "line": 2906, - "column": 26 + "line": 2918, + "column": 20 }, "end": { - "line": 2906, - "column": 35 + "line": 2918, + "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 }, - "value": "=", - "start": 114992, - "end": 114993, + "start": 115603, + "end": 115604, "loc": { "start": { - "line": 2906, - "column": 36 + "line": 2918, + "column": 23 }, "end": { - "line": 2906, - "column": 37 + "line": 2918, + "column": 24 } } }, @@ -387444,25 +390859,25 @@ "postfix": false, "binop": null }, - "value": "worldToRTCPositions", - "start": 114994, - "end": 115013, + "value": "positions", + "start": 115604, + "end": 115613, "loc": { "start": { - "line": 2906, - "column": 38 + "line": 2918, + "column": 24 }, "end": { - "line": 2906, - "column": 57 + "line": 2918, + "column": 33 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -387470,23 +390885,23 @@ "postfix": false, "binop": null }, - "start": 115013, - "end": 115014, + "start": 115613, + "end": 115614, "loc": { "start": { - "line": 2906, - "column": 57 + "line": 2918, + "column": 33 }, "end": { - "line": 2906, - "column": 58 + "line": 2918, + "column": 34 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -387495,23 +390910,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115014, - "end": 115017, + "start": 115615, + "end": 115616, "loc": { "start": { - "line": 2906, - "column": 58 + "line": 2918, + "column": 35 }, "end": { - "line": 2906, - "column": 61 + "line": 2918, + "column": 36 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -387522,16 +390937,17 @@ "binop": null, "updateContext": null }, - "start": 115017, - "end": 115018, + "value": "const", + "start": 115637, + "end": 115642, "loc": { "start": { - "line": 2906, - "column": 61 + "line": 2919, + "column": 20 }, "end": { - "line": 2906, - "column": 62 + "line": 2919, + "column": 25 } } }, @@ -387547,43 +390963,44 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 115018, - "end": 115027, + "value": "aabb", + "start": 115643, + "end": 115647, "loc": { "start": { - "line": 2906, - "column": 62 + "line": 2919, + "column": 26 }, "end": { - "line": 2906, - "column": 71 + "line": 2919, + "column": 30 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 115027, - "end": 115028, + "value": "=", + "start": 115648, + "end": 115649, "loc": { "start": { - "line": 2906, - "column": 71 + "line": 2919, + "column": 31 }, "end": { - "line": 2906, - "column": 72 + "line": 2919, + "column": 32 } } }, @@ -387599,24 +391016,24 @@ "postfix": false, "binop": null }, - "value": "rtcPositions", - "start": 115029, - "end": 115041, + "value": "math", + "start": 115650, + "end": 115654, "loc": { "start": { - "line": 2906, - "column": 73 + "line": 2919, + "column": 33 }, "end": { - "line": 2906, - "column": 85 + "line": 2919, + "column": 37 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -387626,16 +391043,16 @@ "binop": null, "updateContext": null }, - "start": 115041, - "end": 115042, + "start": 115654, + "end": 115655, "loc": { "start": { - "line": 2906, - "column": 85 + "line": 2919, + "column": 37 }, "end": { - "line": 2906, - "column": 86 + "line": 2919, + "column": 38 } } }, @@ -387651,17 +391068,42 @@ "postfix": false, "binop": null }, - "value": "tempVec3a", - "start": 115043, - "end": 115052, + "value": "collapseAABB3", + "start": 115655, + "end": 115668, "loc": { "start": { - "line": 2906, - "column": 87 + "line": 2919, + "column": 38 }, "end": { - "line": 2906, - "column": 96 + "line": 2919, + "column": 51 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 115668, + "end": 115669, + "loc": { + "start": { + "line": 2919, + "column": 51 + }, + "end": { + "line": 2919, + "column": 52 } } }, @@ -387677,16 +391119,16 @@ "postfix": false, "binop": null }, - "start": 115052, - "end": 115053, + "start": 115669, + "end": 115670, "loc": { "start": { - "line": 2906, - "column": 96 + "line": 2919, + "column": 52 }, "end": { - "line": 2906, - "column": 97 + "line": 2919, + "column": 53 } } }, @@ -387703,16 +391145,16 @@ "binop": null, "updateContext": null }, - "start": 115053, - "end": 115054, + "start": 115670, + "end": 115671, "loc": { "start": { - "line": 2906, - "column": 97 + "line": 2919, + "column": 53 }, "end": { - "line": 2906, - "column": 98 + "line": 2919, + "column": 54 } } }, @@ -387731,15 +391173,15 @@ "updateContext": null }, "value": "if", - "start": 115075, - "end": 115077, + "start": 115692, + "end": 115694, "loc": { "start": { - "line": 2907, + "line": 2920, "column": 20 }, "end": { - "line": 2907, + "line": 2920, "column": 22 } } @@ -387756,15 +391198,15 @@ "postfix": false, "binop": null }, - "start": 115078, - "end": 115079, + "start": 115695, + "end": 115696, "loc": { "start": { - "line": 2907, + "line": 2920, "column": 23 }, "end": { - "line": 2907, + "line": 2920, "column": 24 } } @@ -387781,23 +391223,23 @@ "postfix": false, "binop": null }, - "value": "rtcNeeded", - "start": 115079, - "end": 115088, + "value": "cfg", + "start": 115696, + "end": 115699, "loc": { "start": { - "line": 2907, + "line": 2920, "column": 24 }, "end": { - "line": 2907, - "column": 33 + "line": 2920, + "column": 27 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -387805,25 +391247,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 115088, - "end": 115089, + "start": 115699, + "end": 115700, "loc": { "start": { - "line": 2907, - "column": 33 + "line": 2920, + "column": 27 }, "end": { - "line": 2907, - "column": 34 + "line": 2920, + "column": 28 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -387832,24 +391275,25 @@ "postfix": false, "binop": null }, - "start": 115090, - "end": 115091, + "value": "meshMatrix", + "start": 115700, + "end": 115710, "loc": { "start": { - "line": 2907, - "column": 35 + "line": 2920, + "column": 28 }, "end": { - "line": 2907, - "column": 36 + "line": 2920, + "column": 38 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -387857,43 +391301,41 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115116, - "end": 115119, + "start": 115710, + "end": 115711, "loc": { "start": { - "line": 2908, - "column": 24 + "line": 2920, + "column": 38 }, "end": { - "line": 2908, - "column": 27 + "line": 2920, + "column": 39 } } }, { "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": 115119, - "end": 115120, + "start": 115712, + "end": 115713, "loc": { "start": { - "line": 2908, - "column": 27 + "line": 2920, + "column": 40 }, "end": { - "line": 2908, - "column": 28 + "line": 2920, + "column": 41 } } }, @@ -387909,44 +391351,43 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 115120, - "end": 115129, + "value": "math", + "start": 115738, + "end": 115742, "loc": { "start": { - "line": 2908, - "column": 28 + "line": 2921, + "column": 24 }, "end": { - "line": 2908, - "column": 37 + "line": 2921, + "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": 115130, - "end": 115131, + "start": 115742, + "end": 115743, "loc": { "start": { - "line": 2908, - "column": 38 + "line": 2921, + "column": 28 }, "end": { - "line": 2908, - "column": 39 + "line": 2921, + "column": 29 } } }, @@ -387962,43 +391403,42 @@ "postfix": false, "binop": null }, - "value": "rtcPositions", - "start": 115132, - "end": 115144, + "value": "transformPositions3", + "start": 115743, + "end": 115762, "loc": { "start": { - "line": 2908, - "column": 40 + "line": 2921, + "column": 29 }, "end": { - "line": 2908, - "column": 52 + "line": 2921, + "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": 115144, - "end": 115145, + "start": 115762, + "end": 115763, "loc": { "start": { - "line": 2908, - "column": 52 + "line": 2921, + "column": 48 }, "end": { - "line": 2908, - "column": 53 + "line": 2921, + "column": 49 } } }, @@ -388015,16 +391455,16 @@ "binop": null }, "value": "cfg", - "start": 115170, - "end": 115173, + "start": 115763, + "end": 115766, "loc": { "start": { - "line": 2909, - "column": 24 + "line": 2921, + "column": 49 }, "end": { - "line": 2909, - "column": 27 + "line": 2921, + "column": 52 } } }, @@ -388041,16 +391481,16 @@ "binop": null, "updateContext": null }, - "start": 115173, - "end": 115174, + "start": 115766, + "end": 115767, "loc": { "start": { - "line": 2909, - "column": 27 + "line": 2921, + "column": 52 }, "end": { - "line": 2909, - "column": 28 + "line": 2921, + "column": 53 } } }, @@ -388066,44 +391506,43 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 115174, - "end": 115180, + "value": "meshMatrix", + "start": 115767, + "end": 115777, "loc": { "start": { - "line": 2909, - "column": 28 + "line": 2921, + "column": 53 }, "end": { - "line": 2909, - "column": 34 + "line": 2921, + "column": 63 } } }, { "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": 115181, - "end": 115182, + "start": 115777, + "end": 115778, "loc": { "start": { - "line": 2909, - "column": 35 + "line": 2921, + "column": 63 }, "end": { - "line": 2909, - "column": 36 + "line": 2921, + "column": 64 } } }, @@ -388119,17 +391558,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 115183, - "end": 115187, + "value": "cfg", + "start": 115779, + "end": 115782, "loc": { "start": { - "line": 2909, - "column": 37 + "line": 2921, + "column": 65 }, "end": { - "line": 2909, - "column": 41 + "line": 2921, + "column": 68 } } }, @@ -388146,16 +391585,16 @@ "binop": null, "updateContext": null }, - "start": 115187, - "end": 115188, + "start": 115782, + "end": 115783, "loc": { "start": { - "line": 2909, - "column": 41 + "line": 2921, + "column": 68 }, "end": { - "line": 2909, - "column": 42 + "line": 2921, + "column": 69 } } }, @@ -388171,42 +391610,43 @@ "postfix": false, "binop": null }, - "value": "addVec3", - "start": 115188, - "end": 115195, + "value": "positions", + "start": 115783, + "end": 115792, "loc": { "start": { - "line": 2909, - "column": 42 + "line": 2921, + "column": 69 }, "end": { - "line": 2909, - "column": 49 + "line": 2921, + "column": 78 } } }, { "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": 115195, - "end": 115196, + "start": 115792, + "end": 115793, "loc": { "start": { - "line": 2909, - "column": 49 + "line": 2921, + "column": 78 }, "end": { - "line": 2909, - "column": 50 + "line": 2921, + "column": 79 } } }, @@ -388223,16 +391663,16 @@ "binop": null }, "value": "cfg", - "start": 115196, - "end": 115199, + "start": 115794, + "end": 115797, "loc": { "start": { - "line": 2909, - "column": 50 + "line": 2921, + "column": 80 }, "end": { - "line": 2909, - "column": 53 + "line": 2921, + "column": 83 } } }, @@ -388249,16 +391689,16 @@ "binop": null, "updateContext": null }, - "start": 115199, - "end": 115200, + "start": 115797, + "end": 115798, "loc": { "start": { - "line": 2909, - "column": 53 + "line": 2921, + "column": 83 }, "end": { - "line": 2909, - "column": 54 + "line": 2921, + "column": 84 } } }, @@ -388274,51 +391714,25 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 115200, - "end": 115206, - "loc": { - "start": { - "line": 2909, - "column": 54 - }, - "end": { - "line": 2909, - "column": 60 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 115206, - "end": 115207, + "value": "positions", + "start": 115798, + "end": 115807, "loc": { "start": { - "line": 2909, - "column": 60 + "line": 2921, + "column": 84 }, "end": { - "line": 2909, - "column": 61 + "line": 2921, + "column": 93 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -388326,23 +391740,22 @@ "postfix": false, "binop": null }, - "value": "tempVec3a", - "start": 115208, - "end": 115217, + "start": 115807, + "end": 115808, "loc": { "start": { - "line": 2909, - "column": 62 + "line": 2921, + "column": 93 }, "end": { - "line": 2909, - "column": 71 + "line": 2921, + "column": 94 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -388353,16 +391766,16 @@ "binop": null, "updateContext": null }, - "start": 115217, - "end": 115218, + "start": 115808, + "end": 115809, "loc": { "start": { - "line": 2909, - "column": 71 + "line": 2921, + "column": 94 }, "end": { - "line": 2909, - "column": 72 + "line": 2921, + "column": 95 } } }, @@ -388378,17 +391791,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 115219, - "end": 115223, + "value": "cfg", + "start": 115834, + "end": 115837, "loc": { "start": { - "line": 2909, - "column": 73 + "line": 2922, + "column": 24 }, "end": { - "line": 2909, - "column": 77 + "line": 2922, + "column": 27 } } }, @@ -388405,16 +391818,16 @@ "binop": null, "updateContext": null }, - "start": 115223, - "end": 115224, + "start": 115837, + "end": 115838, "loc": { "start": { - "line": 2909, - "column": 77 + "line": 2922, + "column": 27 }, "end": { - "line": 2909, - "column": 78 + "line": 2922, + "column": 28 } } }, @@ -388430,118 +391843,114 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 115224, - "end": 115228, + "value": "meshMatrix", + "start": 115838, + "end": 115848, "loc": { "start": { - "line": 2909, - "column": 78 + "line": 2922, + "column": 28 }, "end": { - "line": 2909, - "column": 82 + "line": 2922, + "column": 38 } } }, { "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": 115228, - "end": 115229, + "value": "=", + "start": 115849, + "end": 115850, "loc": { "start": { - "line": 2909, - "column": 82 + "line": 2922, + "column": 39 }, "end": { - "line": 2909, - "column": 83 + "line": 2922, + "column": 40 } } }, { "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": 115229, - "end": 115230, + "value": "null", + "start": 115851, + "end": 115855, "loc": { "start": { - "line": 2909, - "column": 83 + "line": 2922, + "column": 41 }, "end": { - "line": 2909, - "column": 84 + "line": 2922, + "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": 115230, - "end": 115231, + "start": 115855, + "end": 115856, "loc": { "start": { - "line": 2909, - "column": 84 + "line": 2922, + "column": 45 }, "end": { - "line": 2909, - "column": 85 + "line": 2922, + "column": 46 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 115231, - "end": 115232, + "type": "CommentLine", + "value": " Positions now baked, don't need any more", + "start": 115857, + "end": 115900, "loc": { "start": { - "line": 2909, - "column": 85 + "line": 2922, + "column": 47 }, "end": { - "line": 2909, - "column": 86 + "line": 2922, + "column": 90 } } }, @@ -388557,24 +391966,24 @@ "postfix": false, "binop": null }, - "start": 115253, - "end": 115254, + "start": 115921, + "end": 115922, "loc": { "start": { - "line": 2910, + "line": 2923, "column": 20 }, "end": { - "line": 2910, + "line": 2923, "column": 21 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -388582,23 +391991,23 @@ "postfix": false, "binop": null }, - "start": 115271, - "end": 115272, + "value": "math", + "start": 115943, + "end": 115947, "loc": { "start": { - "line": 2911, - "column": 16 + "line": 2924, + "column": 20 }, "end": { - "line": 2911, - "column": 17 + "line": 2924, + "column": 24 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -388609,24 +392018,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 115290, - "end": 115292, + "start": 115947, + "end": 115948, "loc": { "start": { - "line": 2913, - "column": 16 + "line": 2924, + "column": 24 }, "end": { - "line": 2913, - "column": 18 + "line": 2924, + "column": 25 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -388635,23 +392043,24 @@ "postfix": false, "binop": null }, - "start": 115293, - "end": 115294, + "value": "expandAABB3Points3", + "start": 115948, + "end": 115966, "loc": { "start": { - "line": 2913, - "column": 19 + "line": 2924, + "column": 25 }, "end": { - "line": 2913, - "column": 20 + "line": 2924, + "column": 43 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -388660,77 +392069,76 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115294, - "end": 115297, + "start": 115966, + "end": 115967, "loc": { "start": { - "line": 2913, - "column": 20 + "line": 2924, + "column": 43 }, "end": { - "line": 2913, - "column": 23 + "line": 2924, + "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": 115297, - "end": 115298, + "value": "aabb", + "start": 115967, + "end": 115971, "loc": { "start": { - "line": 2913, - "column": 23 + "line": 2924, + "column": 44 }, "end": { - "line": 2913, - "column": 24 + "line": 2924, + "column": 48 } } }, { "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": "positions", - "start": 115298, - "end": 115307, + "start": 115971, + "end": 115972, "loc": { "start": { - "line": 2913, - "column": 24 + "line": 2924, + "column": 48 }, "end": { - "line": 2913, - "column": 33 + "line": 2924, + "column": 49 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -388738,77 +392146,77 @@ "postfix": false, "binop": null }, - "start": 115307, - "end": 115308, + "value": "cfg", + "start": 115973, + "end": 115976, "loc": { "start": { - "line": 2913, - "column": 33 + "line": 2924, + "column": 50 }, "end": { - "line": 2913, - "column": 34 + "line": 2924, + "column": 53 } } }, { "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": 115309, - "end": 115310, + "start": 115976, + "end": 115977, "loc": { "start": { - "line": 2913, - "column": 35 + "line": 2924, + "column": 53 }, "end": { - "line": 2913, - "column": 36 + "line": 2924, + "column": 54 } } }, { "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": 115331, - "end": 115336, + "value": "positions", + "start": 115977, + "end": 115986, "loc": { "start": { - "line": 2914, - "column": 20 + "line": 2924, + "column": 54 }, "end": { - "line": 2914, - "column": 25 + "line": 2924, + "column": 63 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -388816,44 +392224,42 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 115337, - "end": 115341, + "start": 115986, + "end": 115987, "loc": { "start": { - "line": 2914, - "column": 26 + "line": 2924, + "column": 63 }, "end": { - "line": 2914, - "column": 30 + "line": 2924, + "column": 64 } } }, { "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": 115342, - "end": 115343, + "start": 115987, + "end": 115988, "loc": { "start": { - "line": 2914, - "column": 31 + "line": 2924, + "column": 64 }, "end": { - "line": 2914, - "column": 32 + "line": 2924, + "column": 65 } } }, @@ -388869,17 +392275,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 115344, - "end": 115348, + "value": "cfg", + "start": 116009, + "end": 116012, "loc": { "start": { - "line": 2914, - "column": 33 + "line": 2925, + "column": 20 }, "end": { - "line": 2914, - "column": 37 + "line": 2925, + "column": 23 } } }, @@ -388896,16 +392302,16 @@ "binop": null, "updateContext": null }, - "start": 115348, - "end": 115349, + "start": 116012, + "end": 116013, "loc": { "start": { - "line": 2914, - "column": 37 + "line": 2925, + "column": 23 }, "end": { - "line": 2914, - "column": 38 + "line": 2925, + "column": 24 } } }, @@ -388921,50 +392327,52 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 115349, - "end": 115362, + "value": "aabb", + "start": 116013, + "end": 116017, "loc": { "start": { - "line": 2914, - "column": 38 + "line": 2925, + "column": 24 }, "end": { - "line": 2914, - "column": 51 + "line": 2925, + "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 + "binop": null, + "updateContext": null }, - "start": 115362, - "end": 115363, + "value": "=", + "start": 116018, + "end": 116019, "loc": { "start": { - "line": 2914, - "column": 51 + "line": 2925, + "column": 29 }, "end": { - "line": 2914, - "column": 52 + "line": 2925, + "column": 30 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -388972,16 +392380,17 @@ "postfix": false, "binop": null }, - "start": 115363, - "end": 115364, + "value": "aabb", + "start": 116020, + "end": 116024, "loc": { "start": { - "line": 2914, - "column": 52 + "line": 2925, + "column": 31 }, "end": { - "line": 2914, - "column": 53 + "line": 2925, + "column": 35 } } }, @@ -388998,23 +392407,22 @@ "binop": null, "updateContext": null }, - "start": 115364, - "end": 115365, + "start": 116024, + "end": 116025, "loc": { "start": { - "line": 2914, - "column": 53 + "line": 2925, + "column": 35 }, "end": { - "line": 2914, - "column": 54 + "line": 2925, + "column": 36 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -389022,52 +392430,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 115386, - "end": 115388, + "start": 116043, + "end": 116044, "loc": { "start": { - "line": 2915, - "column": 20 + "line": 2927, + "column": 16 }, "end": { - "line": 2915, - "column": 22 + "line": 2927, + "column": 17 } } }, { "type": { - "label": "(", + "label": "else", + "keyword": "else", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 115389, - "end": 115390, + "value": "else", + "start": 116045, + "end": 116049, "loc": { "start": { - "line": 2915, - "column": 23 + "line": 2927, + "column": 18 }, "end": { - "line": 2915, - "column": 24 + "line": 2927, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -389076,23 +392485,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115390, - "end": 115393, + "start": 116050, + "end": 116051, "loc": { "start": { - "line": 2915, - "column": 24 + "line": 2927, + "column": 23 }, "end": { - "line": 2915, - "column": 27 + "line": 2927, + "column": 24 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -389103,16 +392512,17 @@ "binop": null, "updateContext": null }, - "start": 115393, - "end": 115394, + "value": "const", + "start": 116072, + "end": 116077, "loc": { "start": { - "line": 2915, - "column": 27 + "line": 2928, + "column": 20 }, "end": { - "line": 2915, - "column": 28 + "line": 2928, + "column": 25 } } }, @@ -389128,67 +392538,44 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 115394, - "end": 115404, - "loc": { - "start": { - "line": 2915, - "column": 28 - }, - "end": { - "line": 2915, - "column": 38 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 115404, - "end": 115405, + "value": "aabb", + "start": 116078, + "end": 116082, "loc": { "start": { - "line": 2915, - "column": 38 + "line": 2928, + "column": 26 }, "end": { - "line": 2915, - "column": 39 + "line": 2928, + "column": 30 } } }, { "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": 115406, - "end": 115407, + "value": "=", + "start": 116083, + "end": 116084, "loc": { "start": { - "line": 2915, - "column": 40 + "line": 2928, + "column": 31 }, "end": { - "line": 2915, - "column": 41 + "line": 2928, + "column": 32 } } }, @@ -389205,16 +392592,16 @@ "binop": null }, "value": "math", - "start": 115432, - "end": 115436, + "start": 116085, + "end": 116089, "loc": { "start": { - "line": 2916, - "column": 24 + "line": 2928, + "column": 33 }, "end": { - "line": 2916, - "column": 28 + "line": 2928, + "column": 37 } } }, @@ -389231,16 +392618,16 @@ "binop": null, "updateContext": null }, - "start": 115436, - "end": 115437, + "start": 116089, + "end": 116090, "loc": { "start": { - "line": 2916, - "column": 28 + "line": 2928, + "column": 37 }, "end": { - "line": 2916, - "column": 29 + "line": 2928, + "column": 38 } } }, @@ -389256,17 +392643,17 @@ "postfix": false, "binop": null }, - "value": "transformPositions3", - "start": 115437, - "end": 115456, + "value": "collapseAABB3", + "start": 116090, + "end": 116103, "loc": { "start": { - "line": 2916, - "column": 29 + "line": 2928, + "column": 38 }, "end": { - "line": 2916, - "column": 48 + "line": 2928, + "column": 51 } } }, @@ -389282,24 +392669,24 @@ "postfix": false, "binop": null }, - "start": 115456, - "end": 115457, + "start": 116103, + "end": 116104, "loc": { "start": { - "line": 2916, - "column": 48 + "line": 2928, + "column": 51 }, "end": { - "line": 2916, - "column": 49 + "line": 2928, + "column": 52 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -389307,24 +392694,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115457, - "end": 115460, + "start": 116104, + "end": 116105, "loc": { "start": { - "line": 2916, - "column": 49 + "line": 2928, + "column": 52 }, "end": { - "line": 2916, - "column": 52 + "line": 2928, + "column": 53 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -389334,16 +392720,16 @@ "binop": null, "updateContext": null }, - "start": 115460, - "end": 115461, + "start": 116105, + "end": 116106, "loc": { "start": { - "line": 2916, - "column": 52 + "line": 2928, + "column": 53 }, "end": { - "line": 2916, - "column": 53 + "line": 2928, + "column": 54 } } }, @@ -389359,24 +392745,24 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 115461, - "end": 115471, + "value": "math", + "start": 116127, + "end": 116131, "loc": { "start": { - "line": 2916, - "column": 53 + "line": 2929, + "column": 20 }, "end": { - "line": 2916, - "column": 63 + "line": 2929, + "column": 24 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -389386,16 +392772,16 @@ "binop": null, "updateContext": null }, - "start": 115471, - "end": 115472, + "start": 116131, + "end": 116132, "loc": { "start": { - "line": 2916, - "column": 63 + "line": 2929, + "column": 24 }, "end": { - "line": 2916, - "column": 64 + "line": 2929, + "column": 25 } } }, @@ -389411,43 +392797,42 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115473, - "end": 115476, + "value": "expandAABB3Points3", + "start": 116132, + "end": 116150, "loc": { "start": { - "line": 2916, - "column": 65 + "line": 2929, + "column": 25 }, "end": { - "line": 2916, - "column": 68 + "line": 2929, + "column": 43 } } }, { "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": 115476, - "end": 115477, + "start": 116150, + "end": 116151, "loc": { "start": { - "line": 2916, - "column": 68 + "line": 2929, + "column": 43 }, "end": { - "line": 2916, - "column": 69 + "line": 2929, + "column": 44 } } }, @@ -389463,17 +392848,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 115477, - "end": 115486, + "value": "aabb", + "start": 116151, + "end": 116155, "loc": { "start": { - "line": 2916, - "column": 69 + "line": 2929, + "column": 44 }, "end": { - "line": 2916, - "column": 78 + "line": 2929, + "column": 48 } } }, @@ -389490,16 +392875,16 @@ "binop": null, "updateContext": null }, - "start": 115486, - "end": 115487, + "start": 116155, + "end": 116156, "loc": { "start": { - "line": 2916, - "column": 78 + "line": 2929, + "column": 48 }, "end": { - "line": 2916, - "column": 79 + "line": 2929, + "column": 49 } } }, @@ -389516,16 +392901,16 @@ "binop": null }, "value": "cfg", - "start": 115488, - "end": 115491, + "start": 116157, + "end": 116160, "loc": { "start": { - "line": 2916, - "column": 80 + "line": 2929, + "column": 50 }, "end": { - "line": 2916, - "column": 83 + "line": 2929, + "column": 53 } } }, @@ -389542,16 +392927,16 @@ "binop": null, "updateContext": null }, - "start": 115491, - "end": 115492, + "start": 116160, + "end": 116161, "loc": { "start": { - "line": 2916, - "column": 83 + "line": 2929, + "column": 53 }, "end": { - "line": 2916, - "column": 84 + "line": 2929, + "column": 54 } } }, @@ -389567,17 +392952,17 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 115492, - "end": 115501, + "value": "positionsCompressed", + "start": 116161, + "end": 116180, "loc": { "start": { - "line": 2916, - "column": 84 + "line": 2929, + "column": 54 }, "end": { - "line": 2916, - "column": 93 + "line": 2929, + "column": 73 } } }, @@ -389593,16 +392978,16 @@ "postfix": false, "binop": null }, - "start": 115501, - "end": 115502, + "start": 116180, + "end": 116181, "loc": { "start": { - "line": 2916, - "column": 93 + "line": 2929, + "column": 73 }, "end": { - "line": 2916, - "column": 94 + "line": 2929, + "column": 74 } } }, @@ -389619,16 +393004,16 @@ "binop": null, "updateContext": null }, - "start": 115502, - "end": 115503, + "start": 116181, + "end": 116182, "loc": { "start": { - "line": 2916, - "column": 94 + "line": 2929, + "column": 74 }, "end": { - "line": 2916, - "column": 95 + "line": 2929, + "column": 75 } } }, @@ -389644,17 +393029,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115528, - "end": 115531, + "value": "geometryCompressionUtils", + "start": 116203, + "end": 116227, "loc": { "start": { - "line": 2917, - "column": 24 + "line": 2930, + "column": 20 }, "end": { - "line": 2917, - "column": 27 + "line": 2930, + "column": 44 } } }, @@ -389671,16 +393056,16 @@ "binop": null, "updateContext": null }, - "start": 115531, - "end": 115532, + "start": 116227, + "end": 116228, "loc": { "start": { - "line": 2917, - "column": 27 + "line": 2930, + "column": 44 }, "end": { - "line": 2917, - "column": 28 + "line": 2930, + "column": 45 } } }, @@ -389696,51 +393081,48 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 115532, - "end": 115542, + "value": "decompressAABB", + "start": 116228, + "end": 116242, "loc": { "start": { - "line": 2917, - "column": 28 + "line": 2930, + "column": 45 }, "end": { - "line": 2917, - "column": 38 + "line": 2930, + "column": 59 } } }, { "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": 115543, - "end": 115544, + "start": 116242, + "end": 116243, "loc": { "start": { - "line": 2917, - "column": 39 + "line": 2930, + "column": 59 }, "end": { - "line": 2917, - "column": 40 + "line": 2930, + "column": 60 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -389748,26 +393130,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 115545, - "end": 115549, + "value": "aabb", + "start": 116243, + "end": 116247, "loc": { "start": { - "line": 2917, - "column": 41 + "line": 2930, + "column": 60 }, "end": { - "line": 2917, - "column": 45 + "line": 2930, + "column": 64 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -389778,38 +393159,48 @@ "binop": null, "updateContext": null }, - "start": 115549, - "end": 115550, + "start": 116247, + "end": 116248, "loc": { "start": { - "line": 2917, - "column": 45 + "line": 2930, + "column": 64 }, "end": { - "line": 2917, - "column": 46 + "line": 2930, + "column": 65 } } }, { - "type": "CommentLine", - "value": " Positions now baked, don't need any more", - "start": 115551, - "end": 115594, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 116249, + "end": 116252, "loc": { "start": { - "line": 2917, - "column": 47 + "line": 2930, + "column": 66 }, "end": { - "line": 2917, - "column": 90 + "line": 2930, + "column": 69 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -389817,18 +393208,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 115615, - "end": 115616, + "start": 116252, + "end": 116253, "loc": { "start": { - "line": 2918, - "column": 20 + "line": 2930, + "column": 69 }, "end": { - "line": 2918, - "column": 21 + "line": 2930, + "column": 70 } } }, @@ -389844,23 +393236,23 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 115637, - "end": 115641, + "value": "positionsDecodeMatrix", + "start": 116253, + "end": 116274, "loc": { "start": { - "line": 2919, - "column": 20 + "line": 2930, + "column": 70 }, "end": { - "line": 2919, - "column": 24 + "line": 2930, + "column": 91 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -389868,19 +393260,44 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 116274, + "end": 116275, + "loc": { + "start": { + "line": 2930, + "column": 91 + }, + "end": { + "line": 2930, + "column": 92 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 115641, - "end": 115642, + "start": 116275, + "end": 116276, "loc": { "start": { - "line": 2919, - "column": 24 + "line": 2930, + "column": 92 }, "end": { - "line": 2919, - "column": 25 + "line": 2930, + "column": 93 } } }, @@ -389896,42 +393313,43 @@ "postfix": false, "binop": null }, - "value": "expandAABB3Points3", - "start": 115642, - "end": 115660, + "value": "cfg", + "start": 116297, + "end": 116300, "loc": { "start": { - "line": 2919, - "column": 25 + "line": 2931, + "column": 20 }, "end": { - "line": 2919, - "column": 43 + "line": 2931, + "column": 23 } } }, { "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": 115660, - "end": 115661, + "start": 116300, + "end": 116301, "loc": { "start": { - "line": 2919, - "column": 43 + "line": 2931, + "column": 23 }, "end": { - "line": 2919, - "column": 44 + "line": 2931, + "column": 24 } } }, @@ -389948,42 +393366,43 @@ "binop": null }, "value": "aabb", - "start": 115661, - "end": 115665, + "start": 116301, + "end": 116305, "loc": { "start": { - "line": 2919, - "column": 44 + "line": 2931, + "column": 24 }, "end": { - "line": 2919, - "column": 48 + "line": 2931, + "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": 115665, - "end": 115666, + "value": "=", + "start": 116306, + "end": 116307, "loc": { "start": { - "line": 2919, - "column": 48 + "line": 2931, + "column": 29 }, "end": { - "line": 2919, - "column": 49 + "line": 2931, + "column": 30 } } }, @@ -389999,24 +393418,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115667, - "end": 115670, + "value": "aabb", + "start": 116308, + "end": 116312, "loc": { "start": { - "line": 2919, - "column": 50 + "line": 2931, + "column": 31 }, "end": { - "line": 2919, - "column": 53 + "line": 2931, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -390026,24 +393445,24 @@ "binop": null, "updateContext": null }, - "start": 115670, - "end": 115671, + "start": 116312, + "end": 116313, "loc": { "start": { - "line": 2919, - "column": 53 + "line": 2931, + "column": 35 }, "end": { - "line": 2919, - "column": 54 + "line": 2931, + "column": 36 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -390051,23 +393470,23 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 115671, - "end": 115680, + "start": 116330, + "end": 116331, "loc": { "start": { - "line": 2919, - "column": 54 + "line": 2932, + "column": 16 }, "end": { - "line": 2919, - "column": 63 + "line": 2932, + "column": 17 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -390075,44 +393494,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 115680, - "end": 115681, + "value": "if", + "start": 116349, + "end": 116351, "loc": { "start": { - "line": 2919, - "column": 63 + "line": 2934, + "column": 16 }, "end": { - "line": 2919, - "column": 64 + "line": 2934, + "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": 115681, - "end": 115682, + "start": 116352, + "end": 116353, "loc": { "start": { - "line": 2919, - "column": 64 + "line": 2934, + "column": 19 }, "end": { - "line": 2919, - "column": 65 + "line": 2934, + "column": 20 } } }, @@ -390129,15 +393549,15 @@ "binop": null }, "value": "cfg", - "start": 115703, - "end": 115706, + "start": 116353, + "end": 116356, "loc": { "start": { - "line": 2920, + "line": 2934, "column": 20 }, "end": { - "line": 2920, + "line": 2934, "column": 23 } } @@ -390155,15 +393575,15 @@ "binop": null, "updateContext": null }, - "start": 115706, - "end": 115707, + "start": 116356, + "end": 116357, "loc": { "start": { - "line": 2920, + "line": 2934, "column": 23 }, "end": { - "line": 2920, + "line": 2934, "column": 24 } } @@ -390180,52 +393600,25 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 115707, - "end": 115711, + "value": "meshMatrix", + "start": 116357, + "end": 116367, "loc": { "start": { - "line": 2920, + "line": 2934, "column": 24 }, "end": { - "line": 2920, - "column": 28 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 115712, - "end": 115713, - "loc": { - "start": { - "line": 2920, - "column": 29 - }, - "end": { - "line": 2920, - "column": 30 + "line": 2934, + "column": 34 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -390233,51 +393626,49 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 115714, - "end": 115718, + "start": 116367, + "end": 116368, "loc": { "start": { - "line": 2920, - "column": 31 + "line": 2934, + "column": 34 }, "end": { - "line": 2920, + "line": 2934, "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": 115718, - "end": 115719, + "start": 116369, + "end": 116370, "loc": { "start": { - "line": 2920, - "column": 35 + "line": 2934, + "column": 36 }, "end": { - "line": 2920, - "column": 36 + "line": 2934, + "column": 37 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -390285,24 +393676,24 @@ "postfix": false, "binop": null }, - "start": 115737, - "end": 115738, + "value": "math", + "start": 116391, + "end": 116395, "loc": { "start": { - "line": 2922, - "column": 16 + "line": 2935, + "column": 20 }, "end": { - "line": 2922, - "column": 17 + "line": 2935, + "column": 24 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -390312,24 +393703,23 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 115739, - "end": 115743, + "start": 116395, + "end": 116396, "loc": { "start": { - "line": 2922, - "column": 18 + "line": 2935, + "column": 24 }, "end": { - "line": 2922, - "column": 22 + "line": 2935, + "column": 25 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -390338,44 +393728,42 @@ "postfix": false, "binop": null }, - "start": 115744, - "end": 115745, + "value": "AABB3ToOBB3", + "start": 116396, + "end": 116407, "loc": { "start": { - "line": 2922, - "column": 23 + "line": 2935, + "column": 25 }, "end": { - "line": 2922, - "column": 24 + "line": 2935, + "column": 36 } } }, { "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": 115766, - "end": 115771, + "start": 116407, + "end": 116408, "loc": { "start": { - "line": 2923, - "column": 20 + "line": 2935, + "column": 36 }, "end": { - "line": 2923, - "column": 25 + "line": 2935, + "column": 37 } } }, @@ -390391,44 +393779,43 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 115772, - "end": 115776, + "value": "cfg", + "start": 116408, + "end": 116411, "loc": { "start": { - "line": 2923, - "column": 26 + "line": 2935, + "column": 37 }, "end": { - "line": 2923, - "column": 30 + "line": 2935, + "column": 40 } } }, { "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": 115777, - "end": 115778, + "start": 116411, + "end": 116412, "loc": { "start": { - "line": 2923, - "column": 31 + "line": 2935, + "column": 40 }, "end": { - "line": 2923, - "column": 32 + "line": 2935, + "column": 41 } } }, @@ -390444,24 +393831,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 115779, - "end": 115783, + "value": "aabb", + "start": 116412, + "end": 116416, "loc": { "start": { - "line": 2923, - "column": 33 + "line": 2935, + "column": 41 }, "end": { - "line": 2923, - "column": 37 + "line": 2935, + "column": 45 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -390471,16 +393858,16 @@ "binop": null, "updateContext": null }, - "start": 115783, - "end": 115784, + "start": 116416, + "end": 116417, "loc": { "start": { - "line": 2923, - "column": 37 + "line": 2935, + "column": 45 }, "end": { - "line": 2923, - "column": 38 + "line": 2935, + "column": 46 } } }, @@ -390496,42 +393883,17 @@ "postfix": false, "binop": null }, - "value": "collapseAABB3", - "start": 115784, - "end": 115797, - "loc": { - "start": { - "line": 2923, - "column": 38 - }, - "end": { - "line": 2923, - "column": 51 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 115797, - "end": 115798, + "value": "tempOBB3", + "start": 116418, + "end": 116426, "loc": { "start": { - "line": 2923, - "column": 51 + "line": 2935, + "column": 47 }, "end": { - "line": 2923, - "column": 52 + "line": 2935, + "column": 55 } } }, @@ -390547,16 +393909,16 @@ "postfix": false, "binop": null }, - "start": 115798, - "end": 115799, + "start": 116426, + "end": 116427, "loc": { "start": { - "line": 2923, - "column": 52 + "line": 2935, + "column": 55 }, "end": { - "line": 2923, - "column": 53 + "line": 2935, + "column": 56 } } }, @@ -390573,16 +393935,16 @@ "binop": null, "updateContext": null }, - "start": 115799, - "end": 115800, + "start": 116427, + "end": 116428, "loc": { "start": { - "line": 2923, - "column": 53 + "line": 2935, + "column": 56 }, "end": { - "line": 2923, - "column": 54 + "line": 2935, + "column": 57 } } }, @@ -390599,15 +393961,15 @@ "binop": null }, "value": "math", - "start": 115821, - "end": 115825, + "start": 116449, + "end": 116453, "loc": { "start": { - "line": 2924, + "line": 2936, "column": 20 }, "end": { - "line": 2924, + "line": 2936, "column": 24 } } @@ -390625,15 +393987,15 @@ "binop": null, "updateContext": null }, - "start": 115825, - "end": 115826, + "start": 116453, + "end": 116454, "loc": { "start": { - "line": 2924, + "line": 2936, "column": 24 }, "end": { - "line": 2924, + "line": 2936, "column": 25 } } @@ -390650,17 +394012,17 @@ "postfix": false, "binop": null }, - "value": "expandAABB3Points3", - "start": 115826, - "end": 115844, + "value": "transformOBB3", + "start": 116454, + "end": 116467, "loc": { "start": { - "line": 2924, + "line": 2936, "column": 25 }, "end": { - "line": 2924, - "column": 43 + "line": 2936, + "column": 38 } } }, @@ -390676,16 +394038,16 @@ "postfix": false, "binop": null }, - "start": 115844, - "end": 115845, + "start": 116467, + "end": 116468, "loc": { "start": { - "line": 2924, - "column": 43 + "line": 2936, + "column": 38 }, "end": { - "line": 2924, - "column": 44 + "line": 2936, + "column": 39 } } }, @@ -390701,24 +394063,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 115845, - "end": 115849, + "value": "cfg", + "start": 116468, + "end": 116471, "loc": { "start": { - "line": 2924, - "column": 44 + "line": 2936, + "column": 39 }, "end": { - "line": 2924, - "column": 48 + "line": 2936, + "column": 42 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -390728,16 +394090,16 @@ "binop": null, "updateContext": null }, - "start": 115849, - "end": 115850, + "start": 116471, + "end": 116472, "loc": { "start": { - "line": 2924, - "column": 48 + "line": 2936, + "column": 42 }, "end": { - "line": 2924, - "column": 49 + "line": 2936, + "column": 43 } } }, @@ -390753,24 +394115,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115851, - "end": 115854, + "value": "meshMatrix", + "start": 116472, + "end": 116482, "loc": { "start": { - "line": 2924, - "column": 50 + "line": 2936, + "column": 43 }, "end": { - "line": 2924, + "line": 2936, "column": 53 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -390780,15 +394142,15 @@ "binop": null, "updateContext": null }, - "start": 115854, - "end": 115855, + "start": 116482, + "end": 116483, "loc": { "start": { - "line": 2924, + "line": 2936, "column": 53 }, "end": { - "line": 2924, + "line": 2936, "column": 54 } } @@ -390805,17 +394167,17 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 115855, - "end": 115874, + "value": "tempOBB3", + "start": 116484, + "end": 116492, "loc": { "start": { - "line": 2924, - "column": 54 + "line": 2936, + "column": 55 }, "end": { - "line": 2924, - "column": 73 + "line": 2936, + "column": 63 } } }, @@ -390831,16 +394193,16 @@ "postfix": false, "binop": null }, - "start": 115874, - "end": 115875, + "start": 116492, + "end": 116493, "loc": { "start": { - "line": 2924, - "column": 73 + "line": 2936, + "column": 63 }, "end": { - "line": 2924, - "column": 74 + "line": 2936, + "column": 64 } } }, @@ -390857,16 +394219,16 @@ "binop": null, "updateContext": null }, - "start": 115875, - "end": 115876, + "start": 116493, + "end": 116494, "loc": { "start": { - "line": 2924, - "column": 74 + "line": 2936, + "column": 64 }, "end": { - "line": 2924, - "column": 75 + "line": 2936, + "column": 65 } } }, @@ -390882,17 +394244,17 @@ "postfix": false, "binop": null }, - "value": "geometryCompressionUtils", - "start": 115897, - "end": 115921, + "value": "math", + "start": 116515, + "end": 116519, "loc": { "start": { - "line": 2925, + "line": 2937, "column": 20 }, "end": { - "line": 2925, - "column": 44 + "line": 2937, + "column": 24 } } }, @@ -390909,16 +394271,16 @@ "binop": null, "updateContext": null }, - "start": 115921, - "end": 115922, + "start": 116519, + "end": 116520, "loc": { "start": { - "line": 2925, - "column": 44 + "line": 2937, + "column": 24 }, "end": { - "line": 2925, - "column": 45 + "line": 2937, + "column": 25 } } }, @@ -390934,17 +394296,17 @@ "postfix": false, "binop": null }, - "value": "decompressAABB", - "start": 115922, - "end": 115936, + "value": "OBB3ToAABB3", + "start": 116520, + "end": 116531, "loc": { "start": { - "line": 2925, - "column": 45 + "line": 2937, + "column": 25 }, "end": { - "line": 2925, - "column": 59 + "line": 2937, + "column": 36 } } }, @@ -390960,16 +394322,16 @@ "postfix": false, "binop": null }, - "start": 115936, - "end": 115937, + "start": 116531, + "end": 116532, "loc": { "start": { - "line": 2925, - "column": 59 + "line": 2937, + "column": 36 }, "end": { - "line": 2925, - "column": 60 + "line": 2937, + "column": 37 } } }, @@ -390985,17 +394347,17 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 115937, - "end": 115941, + "value": "tempOBB3", + "start": 116532, + "end": 116540, "loc": { "start": { - "line": 2925, - "column": 60 + "line": 2937, + "column": 37 }, "end": { - "line": 2925, - "column": 64 + "line": 2937, + "column": 45 } } }, @@ -391012,16 +394374,16 @@ "binop": null, "updateContext": null }, - "start": 115941, - "end": 115942, + "start": 116540, + "end": 116541, "loc": { "start": { - "line": 2925, - "column": 64 + "line": 2937, + "column": 45 }, "end": { - "line": 2925, - "column": 65 + "line": 2937, + "column": 46 } } }, @@ -391038,16 +394400,16 @@ "binop": null }, "value": "cfg", - "start": 115943, - "end": 115946, + "start": 116542, + "end": 116545, "loc": { "start": { - "line": 2925, - "column": 66 + "line": 2937, + "column": 47 }, "end": { - "line": 2925, - "column": 69 + "line": 2937, + "column": 50 } } }, @@ -391064,16 +394426,16 @@ "binop": null, "updateContext": null }, - "start": 115946, - "end": 115947, + "start": 116545, + "end": 116546, "loc": { "start": { - "line": 2925, - "column": 69 + "line": 2937, + "column": 50 }, "end": { - "line": 2925, - "column": 70 + "line": 2937, + "column": 51 } } }, @@ -391089,17 +394451,17 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 115947, - "end": 115968, + "value": "aabb", + "start": 116546, + "end": 116550, "loc": { "start": { - "line": 2925, - "column": 70 + "line": 2937, + "column": 51 }, "end": { - "line": 2925, - "column": 91 + "line": 2937, + "column": 55 } } }, @@ -391115,16 +394477,16 @@ "postfix": false, "binop": null }, - "start": 115968, - "end": 115969, + "start": 116550, + "end": 116551, "loc": { "start": { - "line": 2925, - "column": 91 + "line": 2937, + "column": 55 }, "end": { - "line": 2925, - "column": 92 + "line": 2937, + "column": 56 } } }, @@ -391141,24 +394503,24 @@ "binop": null, "updateContext": null }, - "start": 115969, - "end": 115970, + "start": 116551, + "end": 116552, "loc": { "start": { - "line": 2925, - "column": 92 + "line": 2937, + "column": 56 }, "end": { - "line": 2925, - "column": 93 + "line": 2937, + "column": 57 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -391166,23 +394528,39 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 115991, - "end": 115994, + "start": 116569, + "end": 116570, "loc": { "start": { - "line": 2926, - "column": 20 + "line": 2938, + "column": 16 }, "end": { - "line": 2926, - "column": 23 + "line": 2938, + "column": 17 + } + } + }, + { + "type": "CommentLine", + "value": " EDGES", + "start": 116588, + "end": 116596, + "loc": { + "start": { + "line": 2940, + "column": 16 + }, + "end": { + "line": 2940, + "column": 24 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -391193,23 +394571,24 @@ "binop": null, "updateContext": null }, - "start": 115994, - "end": 115995, + "value": "if", + "start": 116614, + "end": 116616, "loc": { "start": { - "line": 2926, - "column": 23 + "line": 2942, + "column": 16 }, "end": { - "line": 2926, - "column": 24 + "line": 2942, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -391218,44 +394597,43 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 115995, - "end": 115999, + "start": 116617, + "end": 116618, "loc": { "start": { - "line": 2926, - "column": 24 + "line": 2942, + "column": 19 }, "end": { - "line": 2926, - "column": 28 + "line": 2942, + "column": 20 } } }, { "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": 116000, - "end": 116001, + "value": "!", + "start": 116618, + "end": 116619, "loc": { "start": { - "line": 2926, - "column": 29 + "line": 2942, + "column": 20 }, "end": { - "line": 2926, - "column": 30 + "line": 2942, + "column": 21 } } }, @@ -391271,24 +394649,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 116002, - "end": 116006, + "value": "cfg", + "start": 116619, + "end": 116622, "loc": { "start": { - "line": 2926, - "column": 31 + "line": 2942, + "column": 21 }, "end": { - "line": 2926, - "column": 35 + "line": 2942, + "column": 24 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -391298,24 +394676,24 @@ "binop": null, "updateContext": null }, - "start": 116006, - "end": 116007, + "start": 116622, + "end": 116623, "loc": { "start": { - "line": 2926, - "column": 35 + "line": 2942, + "column": 24 }, "end": { - "line": 2926, - "column": 36 + "line": 2942, + "column": 25 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -391323,69 +394701,71 @@ "postfix": false, "binop": null }, - "start": 116024, - "end": 116025, + "value": "buckets", + "start": 116623, + "end": 116630, "loc": { "start": { - "line": 2927, - "column": 16 + "line": 2942, + "column": 25 }, "end": { - "line": 2927, - "column": 17 + "line": 2942, + "column": 32 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "if", - "start": 116043, - "end": 116045, + "value": "&&", + "start": 116631, + "end": 116633, "loc": { "start": { - "line": 2929, - "column": 16 + "line": 2942, + "column": 33 }, "end": { - "line": 2929, - "column": 18 + "line": 2942, + "column": 35 } } }, { "type": { - "label": "(", + "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": 116046, - "end": 116047, + "value": "!", + "start": 116634, + "end": 116635, "loc": { "start": { - "line": 2929, - "column": 19 + "line": 2942, + "column": 36 }, "end": { - "line": 2929, - "column": 20 + "line": 2942, + "column": 37 } } }, @@ -391402,16 +394782,16 @@ "binop": null }, "value": "cfg", - "start": 116047, - "end": 116050, + "start": 116635, + "end": 116638, "loc": { "start": { - "line": 2929, - "column": 20 + "line": 2942, + "column": 37 }, "end": { - "line": 2929, - "column": 23 + "line": 2942, + "column": 40 } } }, @@ -391428,16 +394808,16 @@ "binop": null, "updateContext": null }, - "start": 116050, - "end": 116051, + "start": 116638, + "end": 116639, "loc": { "start": { - "line": 2929, - "column": 23 + "line": 2942, + "column": 40 }, "end": { - "line": 2929, - "column": 24 + "line": 2942, + "column": 41 } } }, @@ -391453,48 +394833,50 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 116051, - "end": 116061, + "value": "edgeIndices", + "start": 116639, + "end": 116650, "loc": { "start": { - "line": 2929, - "column": 24 + "line": 2942, + "column": 41 }, "end": { - "line": 2929, - "column": 34 + "line": 2942, + "column": 52 } } }, { "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": 116061, - "end": 116062, + "value": "&&", + "start": 116651, + "end": 116653, "loc": { "start": { - "line": 2929, - "column": 34 + "line": 2942, + "column": 53 }, "end": { - "line": 2929, - "column": 35 + "line": 2942, + "column": 55 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -391504,16 +394886,16 @@ "postfix": false, "binop": null }, - "start": 116063, - "end": 116064, + "start": 116654, + "end": 116655, "loc": { "start": { - "line": 2929, - "column": 36 + "line": 2942, + "column": 56 }, "end": { - "line": 2929, - "column": 37 + "line": 2942, + "column": 57 } } }, @@ -391529,17 +394911,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 116085, - "end": 116089, + "value": "cfg", + "start": 116655, + "end": 116658, "loc": { "start": { - "line": 2930, - "column": 20 + "line": 2942, + "column": 57 }, "end": { - "line": 2930, - "column": 24 + "line": 2942, + "column": 60 } } }, @@ -391556,16 +394938,16 @@ "binop": null, "updateContext": null }, - "start": 116089, - "end": 116090, + "start": 116658, + "end": 116659, "loc": { "start": { - "line": 2930, - "column": 24 + "line": 2942, + "column": 60 }, "end": { - "line": 2930, - "column": 25 + "line": 2942, + "column": 61 } } }, @@ -391581,48 +394963,50 @@ "postfix": false, "binop": null }, - "value": "AABB3ToOBB3", - "start": 116090, - "end": 116101, + "value": "primitive", + "start": 116659, + "end": 116668, "loc": { "start": { - "line": 2930, - "column": 25 + "line": 2942, + "column": 61 }, "end": { - "line": 2930, - "column": 36 + "line": 2942, + "column": 70 } } }, { "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": 116101, - "end": 116102, + "value": "===", + "start": 116669, + "end": 116672, "loc": { "start": { - "line": 2930, - "column": 36 + "line": 2942, + "column": 71 }, "end": { - "line": 2930, - "column": 37 + "line": 2942, + "column": 74 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -391630,45 +395014,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 116102, - "end": 116105, + "value": "triangles", + "start": 116673, + "end": 116684, "loc": { "start": { - "line": 2930, - "column": 37 + "line": 2942, + "column": 75 }, "end": { - "line": 2930, - "column": 40 + "line": 2942, + "column": 86 } } }, { "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": 116105, - "end": 116106, + "value": "||", + "start": 116685, + "end": 116687, "loc": { "start": { - "line": 2930, - "column": 40 + "line": 2942, + "column": 87 }, "end": { - "line": 2930, - "column": 41 + "line": 2942, + "column": 89 } } }, @@ -391684,24 +395070,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 116106, - "end": 116110, + "value": "cfg", + "start": 116688, + "end": 116691, "loc": { "start": { - "line": 2930, - "column": 41 + "line": 2942, + "column": 90 }, "end": { - "line": 2930, - "column": 45 + "line": 2942, + "column": 93 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -391711,16 +395097,16 @@ "binop": null, "updateContext": null }, - "start": 116110, - "end": 116111, + "start": 116691, + "end": 116692, "loc": { "start": { - "line": 2930, - "column": 45 + "line": 2942, + "column": 93 }, "end": { - "line": 2930, - "column": 46 + "line": 2942, + "column": 94 } } }, @@ -391736,50 +395122,52 @@ "postfix": false, "binop": null }, - "value": "tempOBB3", - "start": 116112, - "end": 116120, + "value": "primitive", + "start": 116692, + "end": 116701, "loc": { "start": { - "line": 2930, - "column": 47 + "line": 2942, + "column": 94 }, "end": { - "line": 2930, - "column": 55 + "line": 2942, + "column": 103 } } }, { "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": 116120, - "end": 116121, + "value": "===", + "start": 116702, + "end": 116705, "loc": { "start": { - "line": 2930, - "column": 55 + "line": 2942, + "column": 104 }, "end": { - "line": 2930, - "column": 56 + "line": 2942, + "column": 107 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -391788,101 +395176,103 @@ "binop": null, "updateContext": null }, - "start": 116121, - "end": 116122, + "value": "solid", + "start": 116706, + "end": 116713, "loc": { "start": { - "line": 2930, - "column": 56 + "line": 2942, + "column": 108 }, "end": { - "line": 2930, - "column": 57 + "line": 2942, + "column": 115 } } }, { "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": "math", - "start": 116143, - "end": 116147, + "value": "||", + "start": 116714, + "end": 116716, "loc": { "start": { - "line": 2931, - "column": 20 + "line": 2942, + "column": 116 }, "end": { - "line": 2931, - "column": 24 + "line": 2942, + "column": 118 } } }, { "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": 116147, - "end": 116148, + "value": "cfg", + "start": 116717, + "end": 116720, "loc": { "start": { - "line": 2931, - "column": 24 + "line": 2942, + "column": 119 }, "end": { - "line": 2931, - "column": 25 + "line": 2942, + "column": 122 } } }, { "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": "transformOBB3", - "start": 116148, - "end": 116161, + "start": 116720, + "end": 116721, "loc": { "start": { - "line": 2931, - "column": 25 + "line": 2942, + "column": 122 }, "end": { - "line": 2931, - "column": 38 + "line": 2942, + "column": 123 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -391891,50 +395281,52 @@ "postfix": false, "binop": null }, - "start": 116161, - "end": 116162, + "value": "primitive", + "start": 116721, + "end": 116730, "loc": { "start": { - "line": 2931, - "column": 38 + "line": 2942, + "column": 123 }, "end": { - "line": 2931, - "column": 39 + "line": 2942, + "column": 132 } } }, { "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": "cfg", - "start": 116162, - "end": 116165, + "value": "===", + "start": 116731, + "end": 116734, "loc": { "start": { - "line": 2931, - "column": 39 + "line": 2942, + "column": 133 }, "end": { - "line": 2931, - "column": 42 + "line": 2942, + "column": 136 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -391943,24 +395335,25 @@ "binop": null, "updateContext": null }, - "start": 116165, - "end": 116166, + "value": "surface", + "start": 116735, + "end": 116744, "loc": { "start": { - "line": 2931, - "column": 42 + "line": 2942, + "column": 137 }, "end": { - "line": 2931, - "column": 43 + "line": 2942, + "column": 146 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -391968,50 +395361,48 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 116166, - "end": 116176, + "start": 116744, + "end": 116745, "loc": { "start": { - "line": 2931, - "column": 43 + "line": 2942, + "column": 146 }, "end": { - "line": 2931, - "column": 53 + "line": 2942, + "column": 147 } } }, { "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": 116176, - "end": 116177, + "start": 116745, + "end": 116746, "loc": { "start": { - "line": 2931, - "column": 53 + "line": 2942, + "column": 147 }, "end": { - "line": 2931, - "column": 54 + "line": 2942, + "column": 148 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -392020,23 +395411,23 @@ "postfix": false, "binop": null }, - "value": "tempOBB3", - "start": 116178, - "end": 116186, + "start": 116747, + "end": 116748, "loc": { "start": { - "line": 2931, - "column": 55 + "line": 2942, + "column": 149 }, "end": { - "line": 2931, - "column": 63 + "line": 2942, + "column": 150 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -392044,44 +395435,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 116186, - "end": 116187, + "value": "if", + "start": 116769, + "end": 116771, "loc": { "start": { - "line": 2931, - "column": 63 + "line": 2943, + "column": 20 }, "end": { - "line": 2931, - "column": 64 + "line": 2943, + "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": 116187, - "end": 116188, + "start": 116772, + "end": 116773, "loc": { "start": { - "line": 2931, - "column": 64 + "line": 2943, + "column": 23 }, "end": { - "line": 2931, - "column": 65 + "line": 2943, + "column": 24 } } }, @@ -392097,17 +395489,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 116209, - "end": 116213, + "value": "cfg", + "start": 116773, + "end": 116776, "loc": { "start": { - "line": 2932, - "column": 20 + "line": 2943, + "column": 24 }, "end": { - "line": 2932, - "column": 24 + "line": 2943, + "column": 27 } } }, @@ -392124,16 +395516,16 @@ "binop": null, "updateContext": null }, - "start": 116213, - "end": 116214, + "start": 116776, + "end": 116777, "loc": { "start": { - "line": 2932, - "column": 24 + "line": 2943, + "column": 27 }, "end": { - "line": 2932, - "column": 25 + "line": 2943, + "column": 28 } } }, @@ -392149,23 +395541,48 @@ "postfix": false, "binop": null }, - "value": "OBB3ToAABB3", - "start": 116214, - "end": 116225, + "value": "positions", + "start": 116777, + "end": 116786, "loc": { "start": { - "line": 2932, - "column": 25 + "line": 2943, + "column": 28 }, "end": { - "line": 2932, - "column": 36 + "line": 2943, + "column": 37 } } }, { "type": { - "label": "(", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 116786, + "end": 116787, + "loc": { + "start": { + "line": 2943, + "column": 37 + }, + "end": { + "line": 2943, + "column": 38 + } + } + }, + { + "type": { + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -392175,16 +395592,16 @@ "postfix": false, "binop": null }, - "start": 116225, - "end": 116226, + "start": 116788, + "end": 116789, "loc": { "start": { - "line": 2932, - "column": 36 + "line": 2943, + "column": 39 }, "end": { - "line": 2932, - "column": 37 + "line": 2943, + "column": 40 } } }, @@ -392200,24 +395617,24 @@ "postfix": false, "binop": null }, - "value": "tempOBB3", - "start": 116226, - "end": 116234, + "value": "cfg", + "start": 116814, + "end": 116817, "loc": { "start": { - "line": 2932, - "column": 37 + "line": 2944, + "column": 24 }, "end": { - "line": 2932, - "column": 45 + "line": 2944, + "column": 27 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -392227,16 +395644,16 @@ "binop": null, "updateContext": null }, - "start": 116234, - "end": 116235, + "start": 116817, + "end": 116818, "loc": { "start": { - "line": 2932, - "column": 45 + "line": 2944, + "column": 27 }, "end": { - "line": 2932, - "column": 46 + "line": 2944, + "column": 28 } } }, @@ -392252,43 +395669,44 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 116236, - "end": 116239, + "value": "edgeIndices", + "start": 116818, + "end": 116829, "loc": { "start": { - "line": 2932, - "column": 47 + "line": 2944, + "column": 28 }, "end": { - "line": 2932, - "column": 50 + "line": 2944, + "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, "updateContext": null }, - "start": 116239, - "end": 116240, + "value": "=", + "start": 116830, + "end": 116831, "loc": { "start": { - "line": 2932, - "column": 50 + "line": 2944, + "column": 40 }, "end": { - "line": 2932, - "column": 51 + "line": 2944, + "column": 41 } } }, @@ -392304,25 +395722,25 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 116240, - "end": 116244, + "value": "buildEdgeIndices", + "start": 116832, + "end": 116848, "loc": { "start": { - "line": 2932, - "column": 51 + "line": 2944, + "column": 42 }, "end": { - "line": 2932, - "column": 55 + "line": 2944, + "column": 58 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -392330,48 +395748,48 @@ "postfix": false, "binop": null }, - "start": 116244, - "end": 116245, + "start": 116848, + "end": 116849, "loc": { "start": { - "line": 2932, - "column": 55 + "line": 2944, + "column": 58 }, "end": { - "line": 2932, - "column": 56 + "line": 2944, + "column": 59 } } }, { "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": 116245, - "end": 116246, + "value": "cfg", + "start": 116849, + "end": 116852, "loc": { "start": { - "line": 2932, - "column": 56 + "line": 2944, + "column": 59 }, "end": { - "line": 2932, - "column": 57 + "line": 2944, + "column": 62 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -392379,42 +395797,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 116263, - "end": 116264, + "start": 116852, + "end": 116853, "loc": { "start": { - "line": 2933, - "column": 16 + "line": 2944, + "column": 62 }, "end": { - "line": 2933, - "column": 17 + "line": 2944, + "column": 63 } } }, { - "type": "CommentLine", - "value": " EDGES", - "start": 116282, - "end": 116290, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "positions", + "start": 116853, + "end": 116862, "loc": { "start": { - "line": 2935, - "column": 16 + "line": 2944, + "column": 63 }, "end": { - "line": 2935, - "column": 24 + "line": 2944, + "column": 72 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -392424,24 +395852,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 116308, - "end": 116310, + "start": 116862, + "end": 116863, "loc": { "start": { - "line": 2937, - "column": 16 + "line": 2944, + "column": 72 }, "end": { - "line": 2937, - "column": 18 + "line": 2944, + "column": 73 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -392450,43 +395877,43 @@ "postfix": false, "binop": null }, - "start": 116311, - "end": 116312, + "value": "cfg", + "start": 116864, + "end": 116867, "loc": { "start": { - "line": 2937, - "column": 19 + "line": 2944, + "column": 74 }, "end": { - "line": 2937, - "column": 20 + "line": 2944, + "column": 77 } } }, { "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": 116312, - "end": 116313, + "start": 116867, + "end": 116868, "loc": { "start": { - "line": 2937, - "column": 20 + "line": 2944, + "column": 77 }, "end": { - "line": 2937, - "column": 21 + "line": 2944, + "column": 78 } } }, @@ -392502,24 +395929,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 116313, - "end": 116316, + "value": "indices", + "start": 116868, + "end": 116875, "loc": { "start": { - "line": 2937, - "column": 21 + "line": 2944, + "column": 78 }, "end": { - "line": 2937, - "column": 24 + "line": 2944, + "column": 85 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -392529,22 +395956,23 @@ "binop": null, "updateContext": null }, - "start": 116316, - "end": 116317, + "start": 116875, + "end": 116876, "loc": { "start": { - "line": 2937, - "column": 24 + "line": 2944, + "column": 85 }, "end": { - "line": 2937, - "column": 25 + "line": 2944, + "column": 86 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -392552,25 +395980,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "buckets", - "start": 116317, - "end": 116324, + "value": "null", + "start": 116877, + "end": 116881, "loc": { "start": { - "line": 2937, - "column": 25 + "line": 2944, + "column": 87 }, "end": { - "line": 2937, - "column": 32 + "line": 2944, + "column": 91 } } }, { "type": { - "label": "&&", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -392578,55 +396007,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 116325, - "end": 116327, + "start": 116881, + "end": 116882, "loc": { "start": { - "line": 2937, - "column": 33 + "line": 2944, + "column": 91 }, "end": { - "line": 2937, - "column": 35 + "line": 2944, + "column": 92 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 116328, - "end": 116329, + "value": 2, + "start": 116883, + "end": 116886, "loc": { "start": { - "line": 2937, - "column": 36 + "line": 2944, + "column": 93 }, "end": { - "line": 2937, - "column": 37 + "line": 2944, + "column": 96 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -392634,24 +396062,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 116329, - "end": 116332, + "start": 116886, + "end": 116887, "loc": { "start": { - "line": 2937, - "column": 37 + "line": 2944, + "column": 96 }, "end": { - "line": 2937, - "column": 40 + "line": 2944, + "column": 97 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -392661,24 +396088,24 @@ "binop": null, "updateContext": null }, - "start": 116332, - "end": 116333, + "start": 116887, + "end": 116888, "loc": { "start": { - "line": 2937, - "column": 40 + "line": 2944, + "column": 97 }, "end": { - "line": 2937, - "column": 41 + "line": 2944, + "column": 98 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -392686,23 +396113,23 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 116333, - "end": 116344, + "start": 116909, + "end": 116910, "loc": { "start": { - "line": 2937, - "column": 41 + "line": 2945, + "column": 20 }, "end": { - "line": 2937, - "column": 52 + "line": 2945, + "column": 21 } } }, { "type": { - "label": "&&", + "label": "else", + "keyword": "else", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -392710,26 +396137,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 116345, - "end": 116347, + "value": "else", + "start": 116911, + "end": 116915, "loc": { "start": { - "line": 2937, - "column": 53 + "line": 2945, + "column": 22 }, "end": { - "line": 2937, - "column": 55 + "line": 2945, + "column": 26 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -392739,16 +396166,16 @@ "postfix": false, "binop": null }, - "start": 116348, - "end": 116349, + "start": 116916, + "end": 116917, "loc": { "start": { - "line": 2937, - "column": 56 + "line": 2945, + "column": 27 }, "end": { - "line": 2937, - "column": 57 + "line": 2945, + "column": 28 } } }, @@ -392765,16 +396192,16 @@ "binop": null }, "value": "cfg", - "start": 116349, - "end": 116352, + "start": 116942, + "end": 116945, "loc": { "start": { - "line": 2937, - "column": 57 + "line": 2946, + "column": 24 }, "end": { - "line": 2937, - "column": 60 + "line": 2946, + "column": 27 } } }, @@ -392791,16 +396218,16 @@ "binop": null, "updateContext": null }, - "start": 116352, - "end": 116353, + "start": 116945, + "end": 116946, "loc": { "start": { - "line": 2937, - "column": 60 + "line": 2946, + "column": 27 }, "end": { - "line": 2937, - "column": 61 + "line": 2946, + "column": 28 } } }, @@ -392816,50 +396243,50 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 116353, - "end": 116362, + "value": "edgeIndices", + "start": 116946, + "end": 116957, "loc": { "start": { - "line": 2937, - "column": 61 + "line": 2946, + "column": 28 }, "end": { - "line": 2937, - "column": 70 + "line": 2946, + "column": 39 } } }, { "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": 116363, - "end": 116366, + "value": "=", + "start": 116958, + "end": 116959, "loc": { "start": { - "line": 2937, - "column": 71 + "line": 2946, + "column": 40 }, "end": { - "line": 2937, - "column": 74 + "line": 2946, + "column": 41 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -392867,47 +396294,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "triangles", - "start": 116367, - "end": 116378, + "value": "buildEdgeIndices", + "start": 116960, + "end": 116976, "loc": { "start": { - "line": 2937, - "column": 75 + "line": 2946, + "column": 42 }, "end": { - "line": 2937, - "column": 86 + "line": 2946, + "column": 58 } } }, { "type": { - "label": "||", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 116379, - "end": 116381, + "start": 116976, + "end": 116977, "loc": { "start": { - "line": 2937, - "column": 87 + "line": 2946, + "column": 58 }, "end": { - "line": 2937, - "column": 89 + "line": 2946, + "column": 59 } } }, @@ -392924,16 +396348,16 @@ "binop": null }, "value": "cfg", - "start": 116382, - "end": 116385, + "start": 116977, + "end": 116980, "loc": { "start": { - "line": 2937, - "column": 90 + "line": 2946, + "column": 59 }, "end": { - "line": 2937, - "column": 93 + "line": 2946, + "column": 62 } } }, @@ -392950,16 +396374,16 @@ "binop": null, "updateContext": null }, - "start": 116385, - "end": 116386, + "start": 116980, + "end": 116981, "loc": { "start": { - "line": 2937, - "column": 93 + "line": 2946, + "column": 62 }, "end": { - "line": 2937, - "column": 94 + "line": 2946, + "column": 63 } } }, @@ -392975,23 +396399,23 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 116386, - "end": 116395, + "value": "positionsCompressed", + "start": 116981, + "end": 117000, "loc": { "start": { - "line": 2937, - "column": 94 + "line": 2946, + "column": 63 }, "end": { - "line": 2937, - "column": 103 + "line": 2946, + "column": 82 } } }, { "type": { - "label": "==/!=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -392999,26 +396423,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 116396, - "end": 116399, + "start": 117000, + "end": 117001, "loc": { "start": { - "line": 2937, - "column": 104 + "line": 2946, + "column": 82 }, "end": { - "line": 2937, - "column": 107 + "line": 2946, + "column": 83 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -393026,47 +396449,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "solid", - "start": 116400, - "end": 116407, + "value": "cfg", + "start": 117002, + "end": 117005, "loc": { "start": { - "line": 2937, - "column": 108 + "line": 2946, + "column": 84 }, "end": { - "line": 2937, - "column": 115 + "line": 2946, + "column": 87 } } }, { "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": 116408, - "end": 116410, + "start": 117005, + "end": 117006, "loc": { "start": { - "line": 2937, - "column": 116 + "line": 2946, + "column": 87 }, "end": { - "line": 2937, - "column": 118 + "line": 2946, + "column": 88 } } }, @@ -393082,24 +396503,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 116411, - "end": 116414, + "value": "indices", + "start": 117006, + "end": 117013, "loc": { "start": { - "line": 2937, - "column": 119 + "line": 2946, + "column": 88 }, "end": { - "line": 2937, - "column": 122 + "line": 2946, + "column": 95 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -393109,16 +396530,16 @@ "binop": null, "updateContext": null }, - "start": 116414, - "end": 116415, + "start": 117013, + "end": 117014, "loc": { "start": { - "line": 2937, - "column": 122 + "line": 2946, + "column": 95 }, "end": { - "line": 2937, - "column": 123 + "line": 2946, + "column": 96 } } }, @@ -393134,52 +396555,25 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 116415, - "end": 116424, - "loc": { - "start": { - "line": 2937, - "column": 123 - }, - "end": { - "line": 2937, - "column": 132 - } - } - }, - { - "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "===", - "start": 116425, - "end": 116428, + "value": "cfg", + "start": 117015, + "end": 117018, "loc": { "start": { - "line": 2937, - "column": 133 + "line": 2946, + "column": 97 }, "end": { - "line": 2937, - "column": 136 + "line": 2946, + "column": 100 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -393188,25 +396582,24 @@ "binop": null, "updateContext": null }, - "value": "surface", - "start": 116429, - "end": 116438, + "start": 117018, + "end": 117019, "loc": { "start": { - "line": 2937, - "column": 137 + "line": 2946, + "column": 100 }, "end": { - "line": 2937, - "column": 146 + "line": 2946, + "column": 101 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -393214,73 +396607,76 @@ "postfix": false, "binop": null }, - "start": 116438, - "end": 116439, + "value": "positionsDecodeMatrix", + "start": 117019, + "end": 117040, "loc": { "start": { - "line": 2937, - "column": 146 + "line": 2946, + "column": 101 }, "end": { - "line": 2937, - "column": 147 + "line": 2946, + "column": 122 } } }, { "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": 116439, - "end": 116440, + "start": 117040, + "end": 117041, "loc": { "start": { - "line": 2937, - "column": 147 + "line": 2946, + "column": 122 }, "end": { - "line": 2937, - "column": 148 + "line": 2946, + "column": 123 } } }, { "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": 116441, - "end": 116442, + "value": 2, + "start": 117042, + "end": 117045, "loc": { "start": { - "line": 2937, - "column": 149 + "line": 2946, + "column": 124 }, "end": { - "line": 2937, - "column": 150 + "line": 2946, + "column": 127 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -393288,53 +396684,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 116463, - "end": 116465, + "start": 117045, + "end": 117046, "loc": { "start": { - "line": 2938, - "column": 20 + "line": 2946, + "column": 127 }, "end": { - "line": 2938, - "column": 22 + "line": 2946, + "column": 128 } } }, { "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": 116466, - "end": 116467, + "start": 117046, + "end": 117047, "loc": { "start": { - "line": 2938, - "column": 23 + "line": 2946, + "column": 128 }, - "end": { - "line": 2938, - "column": 24 + "end": { + "line": 2946, + "column": 129 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -393342,23 +396737,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 116467, - "end": 116470, + "start": 117068, + "end": 117069, "loc": { "start": { - "line": 2938, - "column": 24 + "line": 2947, + "column": 20 }, "end": { - "line": 2938, - "column": 27 + "line": 2947, + "column": 21 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -393366,51 +396760,57 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 116470, - "end": 116471, + "start": 117086, + "end": 117087, "loc": { "start": { - "line": 2938, - "column": 27 + "line": 2948, + "column": 16 }, "end": { - "line": 2938, - "column": 28 + "line": 2948, + "column": 17 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "positions", - "start": 116471, - "end": 116480, + "type": "CommentLine", + "value": " TEXTURE", + "start": 117105, + "end": 117115, "loc": { "start": { - "line": 2938, - "column": 28 + "line": 2950, + "column": 16 }, "end": { - "line": 2938, - "column": 37 + "line": 2950, + "column": 26 + } + } + }, + { + "type": "CommentLine", + "value": " cfg.textureSetId = cfg.textureSetId || DEFAULT_TEXTURE_SET_ID;", + "start": 117133, + "end": 117198, + "loc": { + "start": { + "line": 2952, + "column": 16 + }, + "end": { + "line": 2952, + "column": 81 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -393418,24 +396818,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 116480, - "end": 116481, + "value": "if", + "start": 117215, + "end": 117217, "loc": { "start": { - "line": 2938, - "column": 37 + "line": 2953, + "column": 16 }, "end": { - "line": 2938, - "column": 38 + "line": 2953, + "column": 18 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -393445,16 +396847,16 @@ "postfix": false, "binop": null }, - "start": 116482, - "end": 116483, + "start": 117218, + "end": 117219, "loc": { "start": { - "line": 2938, - "column": 39 + "line": 2953, + "column": 19 }, "end": { - "line": 2938, - "column": 40 + "line": 2953, + "column": 20 } } }, @@ -393471,16 +396873,16 @@ "binop": null }, "value": "cfg", - "start": 116508, - "end": 116511, + "start": 117219, + "end": 117222, "loc": { "start": { - "line": 2939, - "column": 24 + "line": 2953, + "column": 20 }, "end": { - "line": 2939, - "column": 27 + "line": 2953, + "column": 23 } } }, @@ -393497,16 +396899,16 @@ "binop": null, "updateContext": null }, - "start": 116511, - "end": 116512, + "start": 117222, + "end": 117223, "loc": { "start": { - "line": 2939, - "column": 27 + "line": 2953, + "column": 23 }, "end": { - "line": 2939, - "column": 28 + "line": 2953, + "column": 24 } } }, @@ -393522,52 +396924,25 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 116512, - "end": 116523, - "loc": { - "start": { - "line": 2939, - "column": 28 - }, - "end": { - "line": 2939, - "column": 39 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 116524, - "end": 116525, + "value": "textureSetId", + "start": 117223, + "end": 117235, "loc": { "start": { - "line": 2939, - "column": 40 + "line": 2953, + "column": 24 }, "end": { - "line": 2939, - "column": 41 + "line": 2953, + "column": 36 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -393575,23 +396950,22 @@ "postfix": false, "binop": null }, - "value": "buildEdgeIndices", - "start": 116526, - "end": 116542, + "start": 117235, + "end": 117236, "loc": { "start": { - "line": 2939, - "column": 42 + "line": 2953, + "column": 36 }, "end": { - "line": 2939, - "column": 58 + "line": 2953, + "column": 37 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -393601,16 +396975,16 @@ "postfix": false, "binop": null }, - "start": 116542, - "end": 116543, + "start": 117237, + "end": 117238, "loc": { "start": { - "line": 2939, - "column": 58 + "line": 2953, + "column": 38 }, "end": { - "line": 2939, - "column": 59 + "line": 2953, + "column": 39 } } }, @@ -393627,16 +397001,16 @@ "binop": null }, "value": "cfg", - "start": 116543, - "end": 116546, + "start": 117259, + "end": 117262, "loc": { "start": { - "line": 2939, - "column": 59 + "line": 2954, + "column": 20 }, "end": { - "line": 2939, - "column": 62 + "line": 2954, + "column": 23 } } }, @@ -393653,16 +397027,16 @@ "binop": null, "updateContext": null }, - "start": 116546, - "end": 116547, + "start": 117262, + "end": 117263, "loc": { "start": { - "line": 2939, - "column": 62 + "line": 2954, + "column": 23 }, "end": { - "line": 2939, - "column": 63 + "line": 2954, + "column": 24 } } }, @@ -393678,49 +397052,51 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 116547, - "end": 116556, + "value": "textureSet", + "start": 117263, + "end": 117273, "loc": { "start": { - "line": 2939, - "column": 63 + "line": 2954, + "column": 24 }, "end": { - "line": 2939, - "column": 72 + "line": 2954, + "column": 34 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 116556, - "end": 116557, + "value": "=", + "start": 117274, + "end": 117275, "loc": { "start": { - "line": 2939, - "column": 72 + "line": 2954, + "column": 35 }, "end": { - "line": 2939, - "column": 73 + "line": 2954, + "column": 36 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -393728,19 +397104,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 116558, - "end": 116561, + "value": "this", + "start": 117276, + "end": 117280, "loc": { "start": { - "line": 2939, - "column": 74 + "line": 2954, + "column": 37 }, "end": { - "line": 2939, - "column": 77 + "line": 2954, + "column": 41 } } }, @@ -393757,16 +397134,16 @@ "binop": null, "updateContext": null }, - "start": 116561, - "end": 116562, + "start": 117280, + "end": 117281, "loc": { "start": { - "line": 2939, - "column": 77 + "line": 2954, + "column": 41 }, "end": { - "line": 2939, - "column": 78 + "line": 2954, + "column": 42 } } }, @@ -393782,25 +397159,25 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 116562, - "end": 116569, + "value": "_textureSets", + "start": 117281, + "end": 117293, "loc": { "start": { - "line": 2939, - "column": 78 + "line": 2954, + "column": 42 }, "end": { - "line": 2939, - "column": 85 + "line": 2954, + "column": 54 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -393809,23 +397186,22 @@ "binop": null, "updateContext": null }, - "start": 116569, - "end": 116570, + "start": 117293, + "end": 117294, "loc": { "start": { - "line": 2939, - "column": 85 + "line": 2954, + "column": 54 }, "end": { - "line": 2939, - "column": 86 + "line": 2954, + "column": 55 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -393833,27 +397209,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 116571, - "end": 116575, + "value": "cfg", + "start": 117294, + "end": 117297, "loc": { "start": { - "line": 2939, - "column": 87 + "line": 2954, + "column": 55 }, "end": { - "line": 2939, - "column": 91 + "line": 2954, + "column": 58 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -393863,22 +397238,22 @@ "binop": null, "updateContext": null }, - "start": 116575, - "end": 116576, + "start": 117297, + "end": 117298, "loc": { "start": { - "line": 2939, - "column": 91 + "line": 2954, + "column": 58 }, "end": { - "line": 2939, - "column": 92 + "line": 2954, + "column": 59 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -393886,26 +397261,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 2, - "start": 116577, - "end": 116580, + "value": "textureSetId", + "start": 117298, + "end": 117310, "loc": { "start": { - "line": 2939, - "column": 93 + "line": 2954, + "column": 59 }, "end": { - "line": 2939, - "column": 96 + "line": 2954, + "column": 71 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -393913,18 +397287,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 116580, - "end": 116581, + "start": 117310, + "end": 117311, "loc": { "start": { - "line": 2939, - "column": 96 + "line": 2954, + "column": 71 }, "end": { - "line": 2939, - "column": 97 + "line": 2954, + "column": 72 } } }, @@ -393941,22 +397316,23 @@ "binop": null, "updateContext": null }, - "start": 116581, - "end": 116582, + "start": 117311, + "end": 117312, "loc": { "start": { - "line": 2939, - "column": 97 + "line": 2954, + "column": 72 }, "end": { - "line": 2939, - "column": 98 + "line": 2954, + "column": 73 } } }, { "type": { - "label": "}", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -393964,71 +397340,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 116603, - "end": 116604, + "value": "if", + "start": 117333, + "end": 117335, "loc": { "start": { - "line": 2940, + "line": 2955, "column": 20 }, "end": { - "line": 2940, - "column": 21 + "line": 2955, + "column": 22 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "else", - "start": 116605, - "end": 116609, + "start": 117336, + "end": 117337, "loc": { "start": { - "line": 2940, - "column": 22 + "line": 2955, + "column": 23 }, "end": { - "line": 2940, - "column": 26 + "line": 2955, + "column": 24 } } }, { "type": { - "label": "{", + "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": 116610, - "end": 116611, + "value": "!", + "start": 117337, + "end": 117338, "loc": { "start": { - "line": 2940, - "column": 27 + "line": 2955, + "column": 24 }, "end": { - "line": 2940, - "column": 28 + "line": 2955, + "column": 25 } } }, @@ -394045,16 +397422,16 @@ "binop": null }, "value": "cfg", - "start": 116636, - "end": 116639, + "start": 117338, + "end": 117341, "loc": { "start": { - "line": 2941, - "column": 24 + "line": 2955, + "column": 25 }, "end": { - "line": 2941, - "column": 27 + "line": 2955, + "column": 28 } } }, @@ -394071,16 +397448,16 @@ "binop": null, "updateContext": null }, - "start": 116639, - "end": 116640, + "start": 117341, + "end": 117342, "loc": { "start": { - "line": 2941, - "column": 27 + "line": 2955, + "column": 28 }, "end": { - "line": 2941, - "column": 28 + "line": 2955, + "column": 29 } } }, @@ -394096,52 +397473,25 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 116640, - "end": 116651, + "value": "textureSet", + "start": 117342, + "end": 117352, "loc": { "start": { - "line": 2941, - "column": 28 + "line": 2955, + "column": 29 }, "end": { - "line": 2941, + "line": 2955, "column": 39 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 116652, - "end": 116653, - "loc": { - "start": { - "line": 2941, - "column": 40 - }, - "end": { - "line": 2941, - "column": 41 - } - } - }, - { - "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -394149,23 +397499,22 @@ "postfix": false, "binop": null }, - "value": "buildEdgeIndices", - "start": 116654, - "end": 116670, + "start": 117352, + "end": 117353, "loc": { "start": { - "line": 2941, - "column": 42 + "line": 2955, + "column": 39 }, "end": { - "line": 2941, - "column": 58 + "line": 2955, + "column": 40 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -394175,22 +397524,23 @@ "postfix": false, "binop": null }, - "start": 116670, - "end": 116671, + "start": 117354, + "end": 117355, "loc": { "start": { - "line": 2941, - "column": 58 + "line": 2955, + "column": 41 }, "end": { - "line": 2941, - "column": 59 + "line": 2955, + "column": 42 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -394198,19 +397548,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 116671, - "end": 116674, + "value": "this", + "start": 117380, + "end": 117384, "loc": { "start": { - "line": 2941, - "column": 59 + "line": 2956, + "column": 24 }, "end": { - "line": 2941, - "column": 62 + "line": 2956, + "column": 28 } } }, @@ -394227,16 +397578,16 @@ "binop": null, "updateContext": null }, - "start": 116674, - "end": 116675, + "start": 117384, + "end": 117385, "loc": { "start": { - "line": 2941, - "column": 62 + "line": 2956, + "column": 28 }, "end": { - "line": 2941, - "column": 63 + "line": 2956, + "column": 29 } } }, @@ -394252,49 +397603,48 @@ "postfix": false, "binop": null }, - "value": "positionsCompressed", - "start": 116675, - "end": 116694, + "value": "error", + "start": 117385, + "end": 117390, "loc": { "start": { - "line": 2941, - "column": 63 + "line": 2956, + "column": 29 }, "end": { - "line": 2941, - "column": 82 + "line": 2956, + "column": 34 } } }, { "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": 116694, - "end": 116695, + "start": 117390, + "end": 117391, "loc": { "start": { - "line": 2941, - "column": 82 + "line": 2956, + "column": 34 }, "end": { - "line": 2941, - "column": 83 + "line": 2956, + "column": 35 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -394304,23 +397654,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 116696, - "end": 116699, + "start": 117391, + "end": 117392, "loc": { "start": { - "line": 2941, - "column": 84 + "line": 2956, + "column": 35 }, "end": { - "line": 2941, - "column": 87 + "line": 2956, + "column": 36 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -394331,23 +397680,24 @@ "binop": null, "updateContext": null }, - "start": 116699, - "end": 116700, + "value": "[createMesh] Texture set not found: ", + "start": 117392, + "end": 117428, "loc": { "start": { - "line": 2941, - "column": 87 + "line": 2956, + "column": 36 }, "end": { - "line": 2941, - "column": 88 + "line": 2956, + "column": 72 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -394356,43 +397706,16 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 116700, - "end": 116707, - "loc": { - "start": { - "line": 2941, - "column": 88 - }, - "end": { - "line": 2941, - "column": 95 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 116707, - "end": 116708, + "start": 117428, + "end": 117430, "loc": { "start": { - "line": 2941, - "column": 95 + "line": 2956, + "column": 72 }, "end": { - "line": 2941, - "column": 96 + "line": 2956, + "column": 74 } } }, @@ -394409,16 +397732,16 @@ "binop": null }, "value": "cfg", - "start": 116709, - "end": 116712, + "start": 117430, + "end": 117433, "loc": { "start": { - "line": 2941, - "column": 97 + "line": 2956, + "column": 74 }, "end": { - "line": 2941, - "column": 100 + "line": 2956, + "column": 77 } } }, @@ -394435,16 +397758,16 @@ "binop": null, "updateContext": null }, - "start": 116712, - "end": 116713, + "start": 117433, + "end": 117434, "loc": { "start": { - "line": 2941, - "column": 100 + "line": 2956, + "column": 77 }, "end": { - "line": 2941, - "column": 101 + "line": 2956, + "column": 78 } } }, @@ -394460,51 +397783,50 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 116713, - "end": 116734, + "value": "textureSetId", + "start": 117434, + "end": 117446, "loc": { "start": { - "line": 2941, - "column": 101 + "line": 2956, + "column": 78 }, "end": { - "line": 2941, - "column": 122 + "line": 2956, + "column": 90 } } }, { "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": 116734, - "end": 116735, + "start": 117446, + "end": 117447, "loc": { "start": { - "line": 2941, - "column": 122 + "line": 2956, + "column": 90 }, "end": { - "line": 2941, - "column": 123 + "line": 2956, + "column": 91 } } }, { "type": { - "label": "num", + "label": "template", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -394513,25 +397835,25 @@ "binop": null, "updateContext": null }, - "value": 2, - "start": 116736, - "end": 116739, + "value": " - ensure that you create it first with createTextureSet()", + "start": 117447, + "end": 117505, "loc": { "start": { - "line": 2941, - "column": 124 + "line": 2956, + "column": 91 }, "end": { - "line": 2941, - "column": 127 + "line": 2956, + "column": 149 } } }, { "type": { - "label": ")", + "label": "`", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -394539,133 +397861,104 @@ "postfix": false, "binop": null }, - "start": 116739, - "end": 116740, + "start": 117505, + "end": 117506, "loc": { "start": { - "line": 2941, - "column": 127 + "line": 2956, + "column": 149 }, "end": { - "line": 2941, - "column": 128 + "line": 2956, + "column": 150 } } }, { "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": 116740, - "end": 116741, + "start": 117506, + "end": 117507, "loc": { "start": { - "line": 2941, - "column": 128 + "line": 2956, + "column": 150 }, "end": { - "line": 2941, - "column": 129 + "line": 2956, + "column": 151 } } }, { "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": 116762, - "end": 116763, + "start": 117507, + "end": 117508, "loc": { "start": { - "line": 2942, - "column": 20 + "line": 2956, + "column": 151 }, "end": { - "line": 2942, - "column": 21 + "line": 2956, + "column": 152 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 116780, - "end": 116781, - "loc": { - "start": { - "line": 2943, - "column": 16 - }, - "end": { - "line": 2943, - "column": 17 - } - } - }, - { - "type": "CommentLine", - "value": " TEXTURE", - "start": 116799, - "end": 116809, - "loc": { - "start": { - "line": 2945, - "column": 16 - }, - "end": { - "line": 2945, - "column": 26 - } - } - }, - { - "type": "CommentLine", - "value": " cfg.textureSetId = cfg.textureSetId || DEFAULT_TEXTURE_SET_ID;", - "start": 116827, - "end": 116892, + "value": "return", + "start": 117533, + "end": 117539, "loc": { "start": { - "line": 2947, - "column": 16 + "line": 2957, + "column": 24 }, "end": { - "line": 2947, - "column": 81 + "line": 2957, + "column": 30 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -394674,50 +397967,51 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 116909, - "end": 116911, + "value": "false", + "start": 117540, + "end": 117545, "loc": { "start": { - "line": 2948, - "column": 16 + "line": 2957, + "column": 31 }, "end": { - "line": 2948, - "column": 18 + "line": 2957, + "column": 36 } } }, { "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": 116912, - "end": 116913, + "start": 117545, + "end": 117546, "loc": { "start": { - "line": 2948, - "column": 19 + "line": 2957, + "column": 36 }, "end": { - "line": 2948, - "column": 20 + "line": 2957, + "column": 37 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -394725,23 +398019,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 116913, - "end": 116916, + "start": 117567, + "end": 117568, "loc": { "start": { - "line": 2948, + "line": 2958, "column": 20 }, "end": { - "line": 2948, - "column": 23 + "line": 2958, + "column": 21 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -394749,27 +398042,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 116916, - "end": 116917, + "start": 117585, + "end": 117586, "loc": { "start": { - "line": 2948, - "column": 23 + "line": 2959, + "column": 16 }, "end": { - "line": 2948, - "column": 24 + "line": 2959, + "column": 17 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -394777,23 +398069,22 @@ "postfix": false, "binop": null }, - "value": "textureSetId", - "start": 116917, - "end": 116929, + "start": 117599, + "end": 117600, "loc": { "start": { - "line": 2948, - "column": 24 + "line": 2960, + "column": 12 }, "end": { - "line": 2948, - "column": 36 + "line": 2960, + "column": 13 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -394803,48 +398094,51 @@ "postfix": false, "binop": null }, - "start": 116929, - "end": 116930, + "start": 117610, + "end": 117611, "loc": { "start": { - "line": 2948, - "column": 36 + "line": 2962, + "column": 8 }, "end": { - "line": 2948, - "column": 37 + "line": 2962, + "column": 9 } } }, { "type": { - "label": "{", + "label": "else", + "keyword": "else", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 116931, - "end": 116932, + "value": "else", + "start": 117612, + "end": 117616, "loc": { "start": { - "line": 2948, - "column": 38 + "line": 2962, + "column": 10 }, "end": { - "line": 2948, - "column": 39 + "line": 2962, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -394853,103 +398147,91 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 116953, - "end": 116956, + "start": 117617, + "end": 117618, "loc": { "start": { - "line": 2949, - "column": 20 + "line": 2962, + "column": 15 }, "end": { - "line": 2949, - "column": 23 + "line": 2962, + "column": 16 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 116956, - "end": 116957, + "type": "CommentLine", + "value": " INSTANCING", + "start": 117632, + "end": 117645, "loc": { "start": { - "line": 2949, - "column": 23 + "line": 2964, + "column": 12 }, "end": { - "line": 2949, - "column": 24 + "line": 2964, + "column": 25 } } }, { "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": "textureSet", - "start": 116957, - "end": 116967, + "value": "if", + "start": 117659, + "end": 117661, "loc": { "start": { - "line": 2949, - "column": 24 + "line": 2966, + "column": 12 }, "end": { - "line": 2949, - "column": 34 + "line": 2966, + "column": 14 } } }, { "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": 116968, - "end": 116969, + "start": 117662, + "end": 117663, "loc": { "start": { - "line": 2949, - "column": 35 + "line": 2966, + "column": 15 }, "end": { - "line": 2949, - "column": 36 + "line": 2966, + "column": 16 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -394957,20 +398239,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 116970, - "end": 116974, + "value": "cfg", + "start": 117663, + "end": 117666, "loc": { "start": { - "line": 2949, - "column": 37 + "line": 2966, + "column": 16 }, "end": { - "line": 2949, - "column": 41 + "line": 2966, + "column": 19 } } }, @@ -394987,16 +398268,16 @@ "binop": null, "updateContext": null }, - "start": 116974, - "end": 116975, + "start": 117666, + "end": 117667, "loc": { "start": { - "line": 2949, - "column": 41 + "line": 2966, + "column": 19 }, "end": { - "line": 2949, - "column": 42 + "line": 2966, + "column": 20 } } }, @@ -395012,43 +398293,44 @@ "postfix": false, "binop": null }, - "value": "_textureSets", - "start": 116975, - "end": 116987, + "value": "positions", + "start": 117667, + "end": 117676, "loc": { "start": { - "line": 2949, - "column": 42 + "line": 2966, + "column": 20 }, "end": { - "line": 2949, - "column": 54 + "line": 2966, + "column": 29 } } }, { "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": 116987, - "end": 116988, + "value": "||", + "start": 117677, + "end": 117679, "loc": { "start": { - "line": 2949, - "column": 54 + "line": 2966, + "column": 30 }, "end": { - "line": 2949, - "column": 55 + "line": 2966, + "column": 32 } } }, @@ -395065,16 +398347,16 @@ "binop": null }, "value": "cfg", - "start": 116988, - "end": 116991, + "start": 117680, + "end": 117683, "loc": { "start": { - "line": 2949, - "column": 55 + "line": 2966, + "column": 33 }, "end": { - "line": 2949, - "column": 58 + "line": 2966, + "column": 36 } } }, @@ -395091,16 +398373,16 @@ "binop": null, "updateContext": null }, - "start": 116991, - "end": 116992, + "start": 117683, + "end": 117684, "loc": { "start": { - "line": 2949, - "column": 58 + "line": 2966, + "column": 36 }, "end": { - "line": 2949, - "column": 59 + "line": 2966, + "column": 37 } } }, @@ -395116,76 +398398,76 @@ "postfix": false, "binop": null }, - "value": "textureSetId", - "start": 116992, - "end": 117004, + "value": "positionsCompressed", + "start": 117684, + "end": 117703, "loc": { "start": { - "line": 2949, - "column": 59 + "line": 2966, + "column": 37 }, "end": { - "line": 2949, - "column": 71 + "line": 2966, + "column": 56 } } }, { "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": 117004, - "end": 117005, + "value": "||", + "start": 117704, + "end": 117706, "loc": { "start": { - "line": 2949, - "column": 71 + "line": 2966, + "column": 57 }, "end": { - "line": 2949, - "column": 72 + "line": 2966, + "column": 59 } } }, { "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": 117005, - "end": 117006, + "value": "cfg", + "start": 117707, + "end": 117710, "loc": { "start": { - "line": 2949, - "column": 72 + "line": 2966, + "column": 60 }, "end": { - "line": 2949, - "column": 73 + "line": 2966, + "column": 63 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -395196,24 +398478,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 117027, - "end": 117029, + "start": 117710, + "end": 117711, "loc": { "start": { - "line": 2950, - "column": 20 + "line": 2966, + "column": 63 }, "end": { - "line": 2950, - "column": 22 + "line": 2966, + "column": 64 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -395222,43 +398503,44 @@ "postfix": false, "binop": null }, - "start": 117030, - "end": 117031, + "value": "indices", + "start": 117711, + "end": 117718, "loc": { "start": { - "line": 2950, - "column": 23 + "line": 2966, + "column": 64 }, "end": { - "line": 2950, - "column": 24 + "line": 2966, + "column": 71 } } }, { "type": { - "label": "prefix", + "label": "||", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "!", - "start": 117031, - "end": 117032, + "value": "||", + "start": 117719, + "end": 117721, "loc": { "start": { - "line": 2950, - "column": 24 + "line": 2966, + "column": 72 }, "end": { - "line": 2950, - "column": 25 + "line": 2966, + "column": 74 } } }, @@ -395275,16 +398557,16 @@ "binop": null }, "value": "cfg", - "start": 117032, - "end": 117035, + "start": 117722, + "end": 117725, "loc": { "start": { - "line": 2950, - "column": 25 + "line": 2966, + "column": 75 }, "end": { - "line": 2950, - "column": 28 + "line": 2966, + "column": 78 } } }, @@ -395301,16 +398583,16 @@ "binop": null, "updateContext": null }, - "start": 117035, - "end": 117036, + "start": 117725, + "end": 117726, "loc": { "start": { - "line": 2950, - "column": 28 + "line": 2966, + "column": 78 }, "end": { - "line": 2950, - "column": 29 + "line": 2966, + "column": 79 } } }, @@ -395326,74 +398608,50 @@ "postfix": false, "binop": null }, - "value": "textureSet", - "start": 117036, - "end": 117046, - "loc": { - "start": { - "line": 2950, - "column": 29 - }, - "end": { - "line": 2950, - "column": 39 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 117046, - "end": 117047, + "value": "edgeIndices", + "start": 117726, + "end": 117737, "loc": { "start": { - "line": 2950, - "column": 39 + "line": 2966, + "column": 79 }, "end": { - "line": 2950, - "column": 40 + "line": 2966, + "column": 90 } } }, { "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": 117048, - "end": 117049, + "value": "||", + "start": 117738, + "end": 117740, "loc": { "start": { - "line": 2950, - "column": 41 + "line": 2966, + "column": 91 }, "end": { - "line": 2950, - "column": 42 + "line": 2966, + "column": 93 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -395401,20 +398659,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 117074, - "end": 117078, + "value": "cfg", + "start": 117741, + "end": 117744, "loc": { "start": { - "line": 2951, - "column": 24 + "line": 2966, + "column": 94 }, "end": { - "line": 2951, - "column": 28 + "line": 2966, + "column": 97 } } }, @@ -395431,73 +398688,22 @@ "binop": null, "updateContext": null }, - "start": 117078, - "end": 117079, - "loc": { - "start": { - "line": 2951, - "column": 28 - }, - "end": { - "line": 2951, - "column": 29 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "error", - "start": 117079, - "end": 117084, - "loc": { - "start": { - "line": 2951, - "column": 29 - }, - "end": { - "line": 2951, - "column": 34 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 117084, - "end": 117085, + "start": 117744, + "end": 117745, "loc": { "start": { - "line": 2951, - "column": 34 + "line": 2966, + "column": 97 }, "end": { - "line": 2951, - "column": 35 + "line": 2966, + "column": 98 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -395507,50 +398713,51 @@ "postfix": false, "binop": null }, - "start": 117085, - "end": 117086, + "value": "normals", + "start": 117745, + "end": 117752, "loc": { "start": { - "line": 2951, - "column": 35 + "line": 2966, + "column": 98 }, "end": { - "line": 2951, - "column": 36 + "line": 2966, + "column": 105 } } }, { "type": { - "label": "template", - "beforeExpr": false, + "label": "||", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "[createMesh] Texture set not found: ", - "start": 117086, - "end": 117122, + "value": "||", + "start": 117753, + "end": 117755, "loc": { "start": { - "line": 2951, - "column": 36 + "line": 2966, + "column": 106 }, "end": { - "line": 2951, - "column": 72 + "line": 2966, + "column": 108 } } }, { "type": { - "label": "${", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -395559,102 +398766,104 @@ "postfix": false, "binop": null }, - "start": 117122, - "end": 117124, + "value": "cfg", + "start": 117756, + "end": 117759, "loc": { "start": { - "line": 2951, - "column": 72 + "line": 2966, + "column": 109 }, "end": { - "line": 2951, - "column": 74 + "line": 2966, + "column": 112 } } }, { "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": "cfg", - "start": 117124, - "end": 117127, + "start": 117759, + "end": 117760, "loc": { "start": { - "line": 2951, - "column": 74 + "line": 2966, + "column": 112 }, "end": { - "line": 2951, - "column": 77 + "line": 2966, + "column": 113 } } }, { "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": 117127, - "end": 117128, + "value": "normalsCompressed", + "start": 117760, + "end": 117777, "loc": { "start": { - "line": 2951, - "column": 77 + "line": 2966, + "column": 113 }, "end": { - "line": 2951, - "column": 78 + "line": 2966, + "column": 130 } } }, { "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": "textureSetId", - "start": 117128, - "end": 117140, + "value": "||", + "start": 117778, + "end": 117780, "loc": { "start": { - "line": 2951, - "column": 78 + "line": 2966, + "column": 131 }, "end": { - "line": 2951, - "column": 90 + "line": 2966, + "column": 133 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -395662,22 +398871,23 @@ "postfix": false, "binop": null }, - "start": 117140, - "end": 117141, + "value": "cfg", + "start": 117781, + "end": 117784, "loc": { "start": { - "line": 2951, - "column": 90 + "line": 2966, + "column": 134 }, "end": { - "line": 2951, - "column": 91 + "line": 2966, + "column": 137 } } }, { "type": { - "label": "template", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -395688,23 +398898,22 @@ "binop": null, "updateContext": null }, - "value": " - ensure that you create it first with createTextureSet()", - "start": 117141, - "end": 117199, + "start": 117784, + "end": 117785, "loc": { "start": { - "line": 2951, - "column": 91 + "line": 2966, + "column": 137 }, "end": { - "line": 2951, - "column": 149 + "line": 2966, + "column": 138 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -395714,75 +398923,77 @@ "postfix": false, "binop": null }, - "start": 117199, - "end": 117200, + "value": "uv", + "start": 117785, + "end": 117787, "loc": { "start": { - "line": 2951, - "column": 149 + "line": 2966, + "column": 138 }, "end": { - "line": 2951, - "column": 150 + "line": 2966, + "column": 140 } } }, { "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": 117200, - "end": 117201, + "value": "||", + "start": 117788, + "end": 117790, "loc": { "start": { - "line": 2951, - "column": 150 + "line": 2966, + "column": 141 }, "end": { - "line": 2951, - "column": 151 + "line": 2966, + "column": 143 } } }, { "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": 117201, - "end": 117202, + "value": "cfg", + "start": 117791, + "end": 117794, "loc": { "start": { - "line": 2951, - "column": 151 + "line": 2966, + "column": 144 }, "end": { - "line": 2951, - "column": 152 + "line": 2966, + "column": 147 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -395792,24 +399003,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 117227, - "end": 117233, + "start": 117794, + "end": 117795, "loc": { "start": { - "line": 2952, - "column": 24 + "line": 2966, + "column": 147 }, "end": { - "line": 2952, - "column": 30 + "line": 2966, + "column": 148 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -395817,26 +399026,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 117234, - "end": 117239, + "value": "uvCompressed", + "start": 117795, + "end": 117807, "loc": { "start": { - "line": 2952, - "column": 31 + "line": 2966, + "column": 148 }, "end": { - "line": 2952, - "column": 36 + "line": 2966, + "column": 160 } } }, { "type": { - "label": ";", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -395844,27 +399052,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 117239, - "end": 117240, + "value": "||", + "start": 117808, + "end": 117810, "loc": { "start": { - "line": 2952, - "column": 36 + "line": 2966, + "column": 161 }, "end": { - "line": 2952, - "column": 37 + "line": 2966, + "column": 163 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -395872,22 +399081,23 @@ "postfix": false, "binop": null }, - "start": 117261, - "end": 117262, + "value": "cfg", + "start": 117811, + "end": 117814, "loc": { "start": { - "line": 2953, - "column": 20 + "line": 2966, + "column": 164 }, "end": { - "line": 2953, - "column": 21 + "line": 2966, + "column": 167 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -395895,26 +399105,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 117279, - "end": 117280, + "start": 117814, + "end": 117815, "loc": { "start": { - "line": 2954, - "column": 16 + "line": 2966, + "column": 167 }, "end": { - "line": 2954, - "column": 17 + "line": 2966, + "column": 168 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -395922,22 +399133,23 @@ "postfix": false, "binop": null }, - "start": 117293, - "end": 117294, + "value": "positionsDecodeMatrix", + "start": 117815, + "end": 117836, "loc": { "start": { - "line": 2955, - "column": 12 + "line": 2966, + "column": 168 }, "end": { - "line": 2955, - "column": 13 + "line": 2966, + "column": 189 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -395947,113 +399159,121 @@ "postfix": false, "binop": null }, - "start": 117304, - "end": 117305, + "start": 117836, + "end": 117837, "loc": { "start": { - "line": 2957, - "column": 8 + "line": 2966, + "column": 189 }, "end": { - "line": 2957, - "column": 9 + "line": 2966, + "column": 190 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "else", - "start": 117306, - "end": 117310, + "start": 117838, + "end": 117839, "loc": { "start": { - "line": 2957, - "column": 10 + "line": 2966, + "column": 191 }, "end": { - "line": 2957, - "column": 14 + "line": 2966, + "column": 192 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 117311, - "end": 117312, + "value": "this", + "start": 117856, + "end": 117860, "loc": { "start": { - "line": 2957, - "column": 15 + "line": 2967, + "column": 16 }, "end": { - "line": 2957, - "column": 16 + "line": 2967, + "column": 20 } } }, { - "type": "CommentLine", - "value": " INSTANCING", - "start": 117326, - "end": 117339, + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 117860, + "end": 117861, "loc": { "start": { - "line": 2959, - "column": 12 + "line": 2967, + "column": 20 }, "end": { - "line": 2959, - "column": 25 + "line": 2967, + "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": 117353, - "end": 117355, + "value": "error", + "start": 117861, + "end": 117866, "loc": { "start": { - "line": 2961, - "column": 12 + "line": 2967, + "column": 21 }, "end": { - "line": 2961, - "column": 14 + "line": 2967, + "column": 26 } } }, @@ -396069,22 +399289,22 @@ "postfix": false, "binop": null }, - "start": 117356, - "end": 117357, + "start": 117866, + "end": 117867, "loc": { "start": { - "line": 2961, - "column": 15 + "line": 2967, + "column": 26 }, "end": { - "line": 2961, - "column": 16 + "line": 2967, + "column": 27 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -396094,23 +399314,22 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 117357, - "end": 117360, + "start": 117867, + "end": 117868, "loc": { "start": { - "line": 2961, - "column": 16 + "line": 2967, + "column": 27 }, "end": { - "line": 2961, - "column": 19 + "line": 2967, + "column": 28 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -396121,22 +399340,23 @@ "binop": null, "updateContext": null }, - "start": 117360, - "end": 117361, + "value": "Mesh geometry parameters not expected when instancing a geometry (not expected: positions, positionsCompressed, indices, edgeIndices, normals, normalsCompressed, uv, uvCompressed, positionsDecodeMatrix)", + "start": 117868, + "end": 118070, "loc": { "start": { - "line": 2961, - "column": 19 + "line": 2967, + "column": 28 }, "end": { - "line": 2961, - "column": 20 + "line": 2967, + "column": 230 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -396146,77 +399366,75 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 117361, - "end": 117370, + "start": 118070, + "end": 118071, "loc": { "start": { - "line": 2961, - "column": 20 + "line": 2967, + "column": 230 }, "end": { - "line": 2961, - "column": 29 + "line": 2967, + "column": 231 } } }, { "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": 117371, - "end": 117373, + "start": 118071, + "end": 118072, "loc": { "start": { - "line": 2961, - "column": 30 + "line": 2967, + "column": 231 }, "end": { - "line": 2961, - "column": 32 + "line": 2967, + "column": 232 } } }, { "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": "cfg", - "start": 117374, - "end": 117377, + "start": 118072, + "end": 118073, "loc": { "start": { - "line": 2961, - "column": 33 + "line": 2967, + "column": 232 }, "end": { - "line": 2961, - "column": 36 + "line": 2967, + "column": 233 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -396226,22 +399444,24 @@ "binop": null, "updateContext": null }, - "start": 117377, - "end": 117378, + "value": "return", + "start": 118090, + "end": 118096, "loc": { "start": { - "line": 2961, - "column": 36 + "line": 2968, + "column": 16 }, "end": { - "line": 2961, - "column": 37 + "line": 2968, + "column": 22 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -396249,25 +399469,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "positionsCompressed", - "start": 117378, - "end": 117397, + "value": "false", + "start": 118097, + "end": 118102, "loc": { "start": { - "line": 2961, - "column": 37 + "line": 2968, + "column": 23 }, "end": { - "line": 2961, - "column": 56 + "line": 2968, + "column": 28 } } }, { "type": { - "label": "||", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -396275,20 +399496,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 117398, - "end": 117400, + "start": 118102, + "end": 118103, "loc": { "start": { - "line": 2961, - "column": 57 + "line": 2968, + "column": 28 }, "end": { - "line": 2961, - "column": 59 + "line": 2968, + "column": 29 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 118116, + "end": 118117, + "loc": { + "start": { + "line": 2969, + "column": 12 + }, + "end": { + "line": 2969, + "column": 13 } } }, @@ -396305,16 +399550,16 @@ "binop": null }, "value": "cfg", - "start": 117401, - "end": 117404, + "start": 118131, + "end": 118134, "loc": { "start": { - "line": 2961, - "column": 60 + "line": 2971, + "column": 12 }, "end": { - "line": 2961, - "column": 63 + "line": 2971, + "column": 15 } } }, @@ -396331,16 +399576,16 @@ "binop": null, "updateContext": null }, - "start": 117404, - "end": 117405, + "start": 118134, + "end": 118135, "loc": { "start": { - "line": 2961, - "column": 63 + "line": 2971, + "column": 15 }, "end": { - "line": 2961, - "column": 64 + "line": 2971, + "column": 16 } } }, @@ -396356,50 +399601,51 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 117405, - "end": 117412, + "value": "geometry", + "start": 118135, + "end": 118143, "loc": { "start": { - "line": 2961, - "column": 64 + "line": 2971, + "column": 16 }, "end": { - "line": 2961, - "column": 71 + "line": 2971, + "column": 24 } } }, { "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": 117413, - "end": 117415, + "value": "=", + "start": 118144, + "end": 118145, "loc": { "start": { - "line": 2961, - "column": 72 + "line": 2971, + "column": 25 }, "end": { - "line": 2961, - "column": 74 + "line": 2971, + "column": 26 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -396407,19 +399653,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 117416, - "end": 117419, + "value": "this", + "start": 118146, + "end": 118150, "loc": { "start": { - "line": 2961, - "column": 75 + "line": 2971, + "column": 27 }, "end": { - "line": 2961, - "column": 78 + "line": 2971, + "column": 31 } } }, @@ -396436,16 +399683,16 @@ "binop": null, "updateContext": null }, - "start": 117419, - "end": 117420, + "start": 118150, + "end": 118151, "loc": { "start": { - "line": 2961, - "column": 78 + "line": 2971, + "column": 31 }, "end": { - "line": 2961, - "column": 79 + "line": 2971, + "column": 32 } } }, @@ -396461,44 +399708,43 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 117420, - "end": 117431, + "value": "_geometries", + "start": 118151, + "end": 118162, "loc": { "start": { - "line": 2961, - "column": 79 + "line": 2971, + "column": 32 }, "end": { - "line": 2961, - "column": 90 + "line": 2971, + "column": 43 } } }, { "type": { - "label": "||", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 117432, - "end": 117434, + "start": 118162, + "end": 118163, "loc": { "start": { - "line": 2961, - "column": 91 + "line": 2971, + "column": 43 }, "end": { - "line": 2961, - "column": 93 + "line": 2971, + "column": 44 } } }, @@ -396515,16 +399761,16 @@ "binop": null }, "value": "cfg", - "start": 117435, - "end": 117438, + "start": 118163, + "end": 118166, "loc": { "start": { - "line": 2961, - "column": 94 + "line": 2971, + "column": 44 }, "end": { - "line": 2961, - "column": 97 + "line": 2971, + "column": 47 } } }, @@ -396541,16 +399787,16 @@ "binop": null, "updateContext": null }, - "start": 117438, - "end": 117439, + "start": 118166, + "end": 118167, "loc": { "start": { - "line": 2961, - "column": 97 + "line": 2971, + "column": 47 }, "end": { - "line": 2961, - "column": 98 + "line": 2971, + "column": 48 } } }, @@ -396566,76 +399812,76 @@ "postfix": false, "binop": null }, - "value": "normals", - "start": 117439, - "end": 117446, + "value": "geometryId", + "start": 118167, + "end": 118177, "loc": { "start": { - "line": 2961, - "column": 98 + "line": 2971, + "column": 48 }, "end": { - "line": 2961, - "column": 105 + "line": 2971, + "column": 58 } } }, { "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": 117447, - "end": 117449, + "start": 118177, + "end": 118178, "loc": { "start": { - "line": 2961, - "column": 106 + "line": 2971, + "column": 58 }, "end": { - "line": 2961, - "column": 108 + "line": 2971, + "column": 59 } } }, { "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": "cfg", - "start": 117450, - "end": 117453, + "start": 118178, + "end": 118179, "loc": { "start": { - "line": 2961, - "column": 109 + "line": 2971, + "column": 59 }, "end": { - "line": 2961, - "column": 112 + "line": 2971, + "column": 60 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -396646,23 +399892,24 @@ "binop": null, "updateContext": null }, - "start": 117453, - "end": 117454, + "value": "if", + "start": 118192, + "end": 118194, "loc": { "start": { - "line": 2961, - "column": 112 + "line": 2972, + "column": 12 }, "end": { - "line": 2961, - "column": 113 + "line": 2972, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -396671,44 +399918,43 @@ "postfix": false, "binop": null }, - "value": "normalsCompressed", - "start": 117454, - "end": 117471, + "start": 118195, + "end": 118196, "loc": { "start": { - "line": 2961, - "column": 113 + "line": 2972, + "column": 15 }, "end": { - "line": 2961, - "column": 130 + "line": 2972, + "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": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 117472, - "end": 117474, + "value": "!", + "start": 118196, + "end": 118197, "loc": { "start": { - "line": 2961, - "column": 131 + "line": 2972, + "column": 16 }, "end": { - "line": 2961, - "column": 133 + "line": 2972, + "column": 17 } } }, @@ -396725,16 +399971,16 @@ "binop": null }, "value": "cfg", - "start": 117475, - "end": 117478, + "start": 118197, + "end": 118200, "loc": { "start": { - "line": 2961, - "column": 134 + "line": 2972, + "column": 17 }, "end": { - "line": 2961, - "column": 137 + "line": 2972, + "column": 20 } } }, @@ -396751,16 +399997,16 @@ "binop": null, "updateContext": null }, - "start": 117478, - "end": 117479, + "start": 118200, + "end": 118201, "loc": { "start": { - "line": 2961, - "column": 137 + "line": 2972, + "column": 20 }, "end": { - "line": 2961, - "column": 138 + "line": 2972, + "column": 21 } } }, @@ -396776,51 +400022,49 @@ "postfix": false, "binop": null }, - "value": "uv", - "start": 117479, - "end": 117481, + "value": "geometry", + "start": 118201, + "end": 118209, "loc": { "start": { - "line": 2961, - "column": 138 + "line": 2972, + "column": 21 }, "end": { - "line": 2961, - "column": 140 + "line": 2972, + "column": 29 } } }, { "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": 117482, - "end": 117484, + "start": 118209, + "end": 118210, "loc": { "start": { - "line": 2961, - "column": 141 + "line": 2972, + "column": 29 }, "end": { - "line": 2961, - "column": 143 + "line": 2972, + "column": 30 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -396829,25 +400073,25 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 117485, - "end": 117488, + "start": 118211, + "end": 118212, "loc": { "start": { - "line": 2961, - "column": 144 + "line": 2972, + "column": 31 }, "end": { - "line": 2961, - "column": 147 + "line": 2972, + "column": 32 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -396856,69 +400100,43 @@ "binop": null, "updateContext": null }, - "start": 117488, - "end": 117489, + "value": "this", + "start": 118229, + "end": 118233, "loc": { "start": { - "line": 2961, - "column": 147 + "line": 2973, + "column": 16 }, "end": { - "line": 2961, - "column": 148 + "line": 2973, + "column": 20 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "uvCompressed", - "start": 117489, - "end": 117501, - "loc": { - "start": { - "line": 2961, - "column": 148 - }, - "end": { - "line": 2961, - "column": 160 - } - } - }, - { - "type": { - "label": "||", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 117502, - "end": 117504, + "start": 118233, + "end": 118234, "loc": { "start": { - "line": 2961, - "column": 161 + "line": 2973, + "column": 20 }, "end": { - "line": 2961, - "column": 163 + "line": 2973, + "column": 21 } } }, @@ -396934,49 +400152,48 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 117505, - "end": 117508, + "value": "error", + "start": 118234, + "end": 118239, "loc": { "start": { - "line": 2961, - "column": 164 + "line": 2973, + "column": 21 }, "end": { - "line": 2961, - "column": 167 + "line": 2973, + "column": 26 } } }, { "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": 117508, - "end": 117509, + "start": 118239, + "end": 118240, "loc": { "start": { - "line": 2961, - "column": 167 + "line": 2973, + "column": 26 }, "end": { - "line": 2961, - "column": 168 + "line": 2973, + "column": 27 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -396986,23 +400203,22 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 117509, - "end": 117530, + "start": 118240, + "end": 118241, "loc": { "start": { - "line": 2961, - "column": 168 + "line": 2973, + "column": 27 }, "end": { - "line": 2961, - "column": 189 + "line": 2973, + "column": 28 } } }, { "type": { - "label": ")", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -397010,24 +400226,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 117530, - "end": 117531, + "value": "[createMesh] Geometry not found: ", + "start": 118241, + "end": 118274, "loc": { "start": { - "line": 2961, - "column": 189 + "line": 2973, + "column": 28 }, "end": { - "line": 2961, - "column": 190 + "line": 2973, + "column": 61 } } }, { "type": { - "label": "{", + "label": "${", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -397037,23 +400255,22 @@ "postfix": false, "binop": null }, - "start": 117532, - "end": 117533, + "start": 118274, + "end": 118276, "loc": { "start": { - "line": 2961, - "column": 191 + "line": 2973, + "column": 61 }, "end": { - "line": 2961, - "column": 192 + "line": 2973, + "column": 63 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -397061,20 +400278,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 117550, - "end": 117554, + "value": "cfg", + "start": 118276, + "end": 118279, "loc": { "start": { - "line": 2962, - "column": 16 + "line": 2973, + "column": 63 }, "end": { - "line": 2962, - "column": 20 + "line": 2973, + "column": 66 } } }, @@ -397091,16 +400307,16 @@ "binop": null, "updateContext": null }, - "start": 117554, - "end": 117555, + "start": 118279, + "end": 118280, "loc": { "start": { - "line": 2962, - "column": 20 + "line": 2973, + "column": 66 }, "end": { - "line": 2962, - "column": 21 + "line": 2973, + "column": 67 } } }, @@ -397116,50 +400332,25 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 117555, - "end": 117560, - "loc": { - "start": { - "line": 2962, - "column": 21 - }, - "end": { - "line": 2962, - "column": 26 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 117560, - "end": 117561, + "value": "geometryId", + "start": 118280, + "end": 118290, "loc": { "start": { - "line": 2962, - "column": 26 + "line": 2973, + "column": 67 }, "end": { - "line": 2962, - "column": 27 + "line": 2973, + "column": 77 } } }, { "type": { - "label": "`", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -397167,16 +400358,16 @@ "postfix": false, "binop": null }, - "start": 117561, - "end": 117562, + "start": 118290, + "end": 118291, "loc": { "start": { - "line": 2962, - "column": 27 + "line": 2973, + "column": 77 }, "end": { - "line": 2962, - "column": 28 + "line": 2973, + "column": 78 } } }, @@ -397193,17 +400384,17 @@ "binop": null, "updateContext": null }, - "value": "Mesh geometry parameters not expected when instancing a geometry (not expected: positions, positionsCompressed, indices, edgeIndices, normals, normalsCompressed, uv, uvCompressed, positionsDecodeMatrix)", - "start": 117562, - "end": 117764, + "value": " - ensure that you create it first with createGeometry()", + "start": 118291, + "end": 118347, "loc": { "start": { - "line": 2962, - "column": 28 + "line": 2973, + "column": 78 }, "end": { - "line": 2962, - "column": 230 + "line": 2973, + "column": 134 } } }, @@ -397219,16 +400410,16 @@ "postfix": false, "binop": null }, - "start": 117764, - "end": 117765, + "start": 118347, + "end": 118348, "loc": { "start": { - "line": 2962, - "column": 230 + "line": 2973, + "column": 134 }, "end": { - "line": 2962, - "column": 231 + "line": 2973, + "column": 135 } } }, @@ -397244,16 +400435,16 @@ "postfix": false, "binop": null }, - "start": 117765, - "end": 117766, + "start": 118348, + "end": 118349, "loc": { "start": { - "line": 2962, - "column": 231 + "line": 2973, + "column": 135 }, "end": { - "line": 2962, - "column": 232 + "line": 2973, + "column": 136 } } }, @@ -397270,16 +400461,16 @@ "binop": null, "updateContext": null }, - "start": 117766, - "end": 117767, + "start": 118349, + "end": 118350, "loc": { "start": { - "line": 2962, - "column": 232 + "line": 2973, + "column": 136 }, "end": { - "line": 2962, - "column": 233 + "line": 2973, + "column": 137 } } }, @@ -397298,15 +400489,15 @@ "updateContext": null }, "value": "return", - "start": 117784, - "end": 117790, + "start": 118367, + "end": 118373, "loc": { "start": { - "line": 2963, + "line": 2974, "column": 16 }, "end": { - "line": 2963, + "line": 2974, "column": 22 } } @@ -397326,15 +400517,15 @@ "updateContext": null }, "value": "false", - "start": 117791, - "end": 117796, + "start": 118374, + "end": 118379, "loc": { "start": { - "line": 2963, + "line": 2974, "column": 23 }, "end": { - "line": 2963, + "line": 2974, "column": 28 } } @@ -397352,15 +400543,15 @@ "binop": null, "updateContext": null }, - "start": 117796, - "end": 117797, + "start": 118379, + "end": 118380, "loc": { "start": { - "line": 2963, + "line": 2974, "column": 28 }, "end": { - "line": 2963, + "line": 2974, "column": 29 } } @@ -397377,15 +400568,15 @@ "postfix": false, "binop": null }, - "start": 117810, - "end": 117811, + "start": 118393, + "end": 118394, "loc": { "start": { - "line": 2964, + "line": 2975, "column": 12 }, "end": { - "line": 2964, + "line": 2975, "column": 13 } } @@ -397403,15 +400594,15 @@ "binop": null }, "value": "cfg", - "start": 117825, - "end": 117828, + "start": 118408, + "end": 118411, "loc": { "start": { - "line": 2966, + "line": 2977, "column": 12 }, "end": { - "line": 2966, + "line": 2977, "column": 15 } } @@ -397429,15 +400620,15 @@ "binop": null, "updateContext": null }, - "start": 117828, - "end": 117829, + "start": 118411, + "end": 118412, "loc": { "start": { - "line": 2966, + "line": 2977, "column": 15 }, "end": { - "line": 2966, + "line": 2977, "column": 16 } } @@ -397454,17 +400645,17 @@ "postfix": false, "binop": null }, - "value": "geometry", - "start": 117829, - "end": 117837, + "value": "origin", + "start": 118412, + "end": 118418, "loc": { "start": { - "line": 2966, + "line": 2977, "column": 16 }, "end": { - "line": 2966, - "column": 24 + "line": 2977, + "column": 22 } } }, @@ -397482,23 +400673,22 @@ "updateContext": null }, "value": "=", - "start": 117838, - "end": 117839, + "start": 118419, + "end": 118420, "loc": { "start": { - "line": 2966, - "column": 25 + "line": 2977, + "column": 23 }, "end": { - "line": 2966, - "column": 26 + "line": 2977, + "column": 24 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -397506,20 +400696,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 117840, - "end": 117844, + "value": "cfg", + "start": 118421, + "end": 118424, "loc": { "start": { - "line": 2966, - "column": 27 + "line": 2977, + "column": 25 }, "end": { - "line": 2966, - "column": 31 + "line": 2977, + "column": 28 } } }, @@ -397536,16 +400725,16 @@ "binop": null, "updateContext": null }, - "start": 117844, - "end": 117845, + "start": 118424, + "end": 118425, "loc": { "start": { - "line": 2966, - "column": 31 + "line": 2977, + "column": 28 }, "end": { - "line": 2966, - "column": 32 + "line": 2977, + "column": 29 } } }, @@ -397561,25 +400750,25 @@ "postfix": false, "binop": null }, - "value": "_geometries", - "start": 117845, - "end": 117856, + "value": "origin", + "start": 118425, + "end": 118431, "loc": { "start": { - "line": 2966, - "column": 32 + "line": 2977, + "column": 29 }, "end": { - "line": 2966, - "column": 43 + "line": 2977, + "column": 35 } } }, { "type": { - "label": "[", + "label": "?", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -397588,16 +400777,16 @@ "binop": null, "updateContext": null }, - "start": 117856, - "end": 117857, + "start": 118432, + "end": 118433, "loc": { "start": { - "line": 2966, - "column": 43 + "line": 2977, + "column": 36 }, "end": { - "line": 2966, - "column": 44 + "line": 2977, + "column": 37 } } }, @@ -397613,17 +400802,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 117857, - "end": 117860, + "value": "math", + "start": 118434, + "end": 118438, "loc": { "start": { - "line": 2966, - "column": 44 + "line": 2977, + "column": 38 }, "end": { - "line": 2966, - "column": 47 + "line": 2977, + "column": 42 } } }, @@ -397640,16 +400829,16 @@ "binop": null, "updateContext": null }, - "start": 117860, - "end": 117861, + "start": 118438, + "end": 118439, "loc": { "start": { - "line": 2966, - "column": 47 + "line": 2977, + "column": 42 }, "end": { - "line": 2966, - "column": 48 + "line": 2977, + "column": 43 } } }, @@ -397665,51 +400854,51 @@ "postfix": false, "binop": null }, - "value": "geometryId", - "start": 117861, - "end": 117871, + "value": "addVec3", + "start": 118439, + "end": 118446, "loc": { "start": { - "line": 2966, - "column": 48 + "line": 2977, + "column": 43 }, "end": { - "line": 2966, - "column": 58 + "line": 2977, + "column": 50 } } }, { "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": 117871, - "end": 117872, + "start": 118446, + "end": 118447, "loc": { "start": { - "line": 2966, - "column": 58 + "line": 2977, + "column": 50 }, "end": { - "line": 2966, - "column": 59 + "line": 2977, + "column": 51 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -397718,23 +400907,23 @@ "binop": null, "updateContext": null }, - "start": 117872, - "end": 117873, + "value": "this", + "start": 118447, + "end": 118451, "loc": { "start": { - "line": 2966, - "column": 59 + "line": 2977, + "column": 51 }, "end": { - "line": 2966, - "column": 60 + "line": 2977, + "column": 55 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -397745,24 +400934,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 117886, - "end": 117888, + "start": 118451, + "end": 118452, "loc": { "start": { - "line": 2967, - "column": 12 + "line": 2977, + "column": 55 }, "end": { - "line": 2967, - "column": 14 + "line": 2977, + "column": 56 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -397771,43 +400959,43 @@ "postfix": false, "binop": null }, - "start": 117889, - "end": 117890, + "value": "_origin", + "start": 118452, + "end": 118459, "loc": { "start": { - "line": 2967, - "column": 15 + "line": 2977, + "column": 56 }, "end": { - "line": 2967, - "column": 16 + "line": 2977, + "column": 63 } } }, { "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": 117890, - "end": 117891, + "start": 118459, + "end": 118460, "loc": { "start": { - "line": 2967, - "column": 16 + "line": 2977, + "column": 63 }, "end": { - "line": 2967, - "column": 17 + "line": 2977, + "column": 64 } } }, @@ -397824,16 +401012,16 @@ "binop": null }, "value": "cfg", - "start": 117891, - "end": 117894, + "start": 118461, + "end": 118464, "loc": { "start": { - "line": 2967, - "column": 17 + "line": 2977, + "column": 65 }, "end": { - "line": 2967, - "column": 20 + "line": 2977, + "column": 68 } } }, @@ -397850,16 +401038,16 @@ "binop": null, "updateContext": null }, - "start": 117894, - "end": 117895, + "start": 118464, + "end": 118465, "loc": { "start": { - "line": 2967, - "column": 20 + "line": 2977, + "column": 68 }, "end": { - "line": 2967, - "column": 21 + "line": 2977, + "column": 69 } } }, @@ -397875,74 +401063,49 @@ "postfix": false, "binop": null }, - "value": "geometry", - "start": 117895, - "end": 117903, - "loc": { - "start": { - "line": 2967, - "column": 21 - }, - "end": { - "line": 2967, - "column": 29 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 117903, - "end": 117904, + "value": "origin", + "start": 118465, + "end": 118471, "loc": { "start": { - "line": 2967, - "column": 29 + "line": 2977, + "column": 69 }, "end": { - "line": 2967, - "column": 30 + "line": 2977, + "column": 75 } } }, { "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": 117905, - "end": 117906, + "start": 118471, + "end": 118472, "loc": { "start": { - "line": 2967, - "column": 31 + "line": 2977, + "column": 75 }, "end": { - "line": 2967, - "column": 32 + "line": 2977, + "column": 76 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -397950,20 +401113,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 117923, - "end": 117927, + "value": "math", + "start": 118473, + "end": 118477, "loc": { "start": { - "line": 2968, - "column": 16 + "line": 2977, + "column": 77 }, "end": { - "line": 2968, - "column": 20 + "line": 2977, + "column": 81 } } }, @@ -397980,16 +401142,16 @@ "binop": null, "updateContext": null }, - "start": 117927, - "end": 117928, + "start": 118477, + "end": 118478, "loc": { "start": { - "line": 2968, - "column": 20 + "line": 2977, + "column": 81 }, "end": { - "line": 2968, - "column": 21 + "line": 2977, + "column": 82 } } }, @@ -398005,17 +401167,17 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 117928, - "end": 117933, + "value": "vec3", + "start": 118478, + "end": 118482, "loc": { "start": { - "line": 2968, - "column": 21 + "line": 2977, + "column": 82 }, "end": { - "line": 2968, - "column": 26 + "line": 2977, + "column": 86 } } }, @@ -398031,24 +401193,24 @@ "postfix": false, "binop": null }, - "start": 117933, - "end": 117934, + "start": 118482, + "end": 118483, "loc": { "start": { - "line": 2968, - "column": 26 + "line": 2977, + "column": 86 }, "end": { - "line": 2968, - "column": 27 + "line": 2977, + "column": 87 } } }, { "type": { - "label": "`", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -398056,22 +401218,22 @@ "postfix": false, "binop": null }, - "start": 117934, - "end": 117935, + "start": 118483, + "end": 118484, "loc": { "start": { - "line": 2968, - "column": 27 + "line": 2977, + "column": 87 }, "end": { - "line": 2968, - "column": 28 + "line": 2977, + "column": 88 } } }, { "type": { - "label": "template", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -398079,51 +401241,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "[createMesh] Geometry not found: ", - "start": 117935, - "end": 117968, + "start": 118484, + "end": 118485, "loc": { "start": { - "line": 2968, - "column": 28 + "line": 2977, + "column": 88 }, "end": { - "line": 2968, - "column": 61 + "line": 2977, + "column": 89 } } }, { "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": 117968, - "end": 117970, + "start": 118486, + "end": 118487, "loc": { "start": { - "line": 2968, - "column": 61 + "line": 2977, + "column": 90 }, "end": { - "line": 2968, - "column": 63 + "line": 2977, + "column": 91 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -398131,19 +401293,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 117970, - "end": 117973, + "value": "this", + "start": 118488, + "end": 118492, "loc": { "start": { - "line": 2968, - "column": 63 + "line": 2977, + "column": 92 }, "end": { - "line": 2968, - "column": 66 + "line": 2977, + "column": 96 } } }, @@ -398160,16 +401323,16 @@ "binop": null, "updateContext": null }, - "start": 117973, - "end": 117974, + "start": 118492, + "end": 118493, "loc": { "start": { - "line": 2968, - "column": 66 + "line": 2977, + "column": 96 }, "end": { - "line": 2968, - "column": 67 + "line": 2977, + "column": 97 } } }, @@ -398185,102 +401348,103 @@ "postfix": false, "binop": null }, - "value": "geometryId", - "start": 117974, - "end": 117984, + "value": "_origin", + "start": 118493, + "end": 118500, "loc": { "start": { - "line": 2968, - "column": 67 + "line": 2977, + "column": 97 }, "end": { - "line": 2968, - "column": 77 + "line": 2977, + "column": 104 } } }, { "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": 117984, - "end": 117985, + "start": 118500, + "end": 118501, "loc": { "start": { - "line": 2968, - "column": 77 + "line": 2977, + "column": 104 }, "end": { - "line": 2968, - "column": 78 + "line": 2977, + "column": 105 } } }, { "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": " - ensure that you create it first with createGeometry()", - "start": 117985, - "end": 118041, + "value": "cfg", + "start": 118514, + "end": 118517, "loc": { "start": { - "line": 2968, - "column": 78 + "line": 2978, + "column": 12 }, "end": { - "line": 2968, - "column": 134 + "line": 2978, + "column": 15 } } }, { "type": { - "label": "`", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 118041, - "end": 118042, + "start": 118517, + "end": 118518, "loc": { "start": { - "line": 2968, - "column": 134 + "line": 2978, + "column": 15 }, "end": { - "line": 2968, - "column": 135 + "line": 2978, + "column": 16 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -398288,79 +401452,78 @@ "postfix": false, "binop": null }, - "start": 118042, - "end": 118043, + "value": "positionsDecodeMatrix", + "start": 118518, + "end": 118539, "loc": { "start": { - "line": 2968, - "column": 135 + "line": 2978, + "column": 16 }, "end": { - "line": 2968, - "column": 136 + "line": 2978, + "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": 118043, - "end": 118044, + "value": "=", + "start": 118540, + "end": 118541, "loc": { "start": { - "line": 2968, - "column": 136 + "line": 2978, + "column": 38 }, "end": { - "line": 2968, - "column": 137 + "line": 2978, + "column": 39 } } }, { "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": 118061, - "end": 118067, + "value": "cfg", + "start": 118542, + "end": 118545, "loc": { "start": { - "line": 2969, - "column": 16 + "line": 2978, + "column": 40 }, "end": { - "line": 2969, - "column": 22 + "line": 2978, + "column": 43 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -398369,49 +401532,48 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 118068, - "end": 118073, + "start": 118545, + "end": 118546, "loc": { "start": { - "line": 2969, - "column": 23 + "line": 2978, + "column": 43 }, "end": { - "line": 2969, - "column": 28 + "line": 2978, + "column": 44 } } }, { "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": 118073, - "end": 118074, + "value": "geometry", + "start": 118546, + "end": 118554, "loc": { "start": { - "line": 2969, - "column": 28 + "line": 2978, + "column": 44 }, "end": { - "line": 2969, - "column": 29 + "line": 2978, + "column": 52 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -398419,18 +401581,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 118087, - "end": 118088, + "start": 118554, + "end": 118555, "loc": { "start": { - "line": 2970, - "column": 12 + "line": 2978, + "column": 52 }, "end": { - "line": 2970, - "column": 13 + "line": 2978, + "column": 53 } } }, @@ -398446,24 +401609,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 118102, - "end": 118105, + "value": "positionsDecodeMatrix", + "start": 118555, + "end": 118576, "loc": { "start": { - "line": 2972, - "column": 12 + "line": 2978, + "column": 53 }, "end": { - "line": 2972, - "column": 15 + "line": 2978, + "column": 74 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -398473,69 +401636,69 @@ "binop": null, "updateContext": null }, - "start": 118105, - "end": 118106, + "start": 118576, + "end": 118577, "loc": { "start": { - "line": 2972, - "column": 15 + "line": 2978, + "column": 74 }, "end": { - "line": 2972, - "column": 16 + "line": 2978, + "column": 75 } } }, { "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": "origin", - "start": 118106, - "end": 118112, + "value": "if", + "start": 118591, + "end": 118593, "loc": { "start": { - "line": 2972, - "column": 16 + "line": 2980, + "column": 12 }, "end": { - "line": 2972, - "column": 22 + "line": 2980, + "column": 14 } } }, { "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": 118113, - "end": 118114, + "start": 118594, + "end": 118595, "loc": { "start": { - "line": 2972, - "column": 23 + "line": 2980, + "column": 15 }, "end": { - "line": 2972, - "column": 24 + "line": 2980, + "column": 16 } } }, @@ -398552,16 +401715,16 @@ "binop": null }, "value": "cfg", - "start": 118115, - "end": 118118, + "start": 118595, + "end": 118598, "loc": { "start": { - "line": 2972, - "column": 25 + "line": 2980, + "column": 16 }, "end": { - "line": 2972, - "column": 28 + "line": 2980, + "column": 19 } } }, @@ -398578,16 +401741,16 @@ "binop": null, "updateContext": null }, - "start": 118118, - "end": 118119, + "start": 118598, + "end": 118599, "loc": { "start": { - "line": 2972, - "column": 28 + "line": 2980, + "column": 19 }, "end": { - "line": 2972, - "column": 29 + "line": 2980, + "column": 20 } } }, @@ -398603,43 +401766,83 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 118119, - "end": 118125, + "value": "transformId", + "start": 118599, + "end": 118610, "loc": { "start": { - "line": 2972, - "column": 29 + "line": 2980, + "column": 20 }, "end": { - "line": 2972, - "column": 35 + "line": 2980, + "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": 118126, - "end": 118127, + "start": 118610, + "end": 118611, "loc": { "start": { - "line": 2972, - "column": 36 + "line": 2980, + "column": 31 }, "end": { - "line": 2972, - "column": 37 + "line": 2980, + "column": 32 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 118612, + "end": 118613, + "loc": { + "start": { + "line": 2980, + "column": 33 + }, + "end": { + "line": 2980, + "column": 34 + } + } + }, + { + "type": "CommentLine", + "value": " TRANSFORM", + "start": 118631, + "end": 118643, + "loc": { + "start": { + "line": 2982, + "column": 16 + }, + "end": { + "line": 2982, + "column": 28 } } }, @@ -398655,17 +401858,17 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 118128, - "end": 118132, + "value": "cfg", + "start": 118661, + "end": 118664, "loc": { "start": { - "line": 2972, - "column": 38 + "line": 2984, + "column": 16 }, "end": { - "line": 2972, - "column": 42 + "line": 2984, + "column": 19 } } }, @@ -398682,16 +401885,16 @@ "binop": null, "updateContext": null }, - "start": 118132, - "end": 118133, + "start": 118664, + "end": 118665, "loc": { "start": { - "line": 2972, - "column": 42 + "line": 2984, + "column": 19 }, "end": { - "line": 2972, - "column": 43 + "line": 2984, + "column": 20 } } }, @@ -398707,42 +401910,44 @@ "postfix": false, "binop": null }, - "value": "addVec3", - "start": 118133, - "end": 118140, + "value": "transform", + "start": 118665, + "end": 118674, "loc": { "start": { - "line": 2972, - "column": 43 + "line": 2984, + "column": 20 }, "end": { - "line": 2972, - "column": 50 + "line": 2984, + "column": 29 } } }, { "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": 118140, - "end": 118141, + "value": "=", + "start": 118675, + "end": 118676, "loc": { "start": { - "line": 2972, - "column": 50 + "line": 2984, + "column": 30 }, "end": { - "line": 2972, - "column": 51 + "line": 2984, + "column": 31 } } }, @@ -398761,16 +401966,16 @@ "updateContext": null }, "value": "this", - "start": 118141, - "end": 118145, + "start": 118677, + "end": 118681, "loc": { "start": { - "line": 2972, - "column": 51 + "line": 2984, + "column": 32 }, "end": { - "line": 2972, - "column": 55 + "line": 2984, + "column": 36 } } }, @@ -398787,16 +401992,16 @@ "binop": null, "updateContext": null }, - "start": 118145, - "end": 118146, + "start": 118681, + "end": 118682, "loc": { "start": { - "line": 2972, - "column": 55 + "line": 2984, + "column": 36 }, "end": { - "line": 2972, - "column": 56 + "line": 2984, + "column": 37 } } }, @@ -398812,25 +402017,25 @@ "postfix": false, "binop": null }, - "value": "_origin", - "start": 118146, - "end": 118153, + "value": "_transforms", + "start": 118682, + "end": 118693, "loc": { "start": { - "line": 2972, - "column": 56 + "line": 2984, + "column": 37 }, "end": { - "line": 2972, - "column": 63 + "line": 2984, + "column": 48 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -398839,16 +402044,16 @@ "binop": null, "updateContext": null }, - "start": 118153, - "end": 118154, + "start": 118693, + "end": 118694, "loc": { "start": { - "line": 2972, - "column": 63 + "line": 2984, + "column": 48 }, "end": { - "line": 2972, - "column": 64 + "line": 2984, + "column": 49 } } }, @@ -398865,16 +402070,16 @@ "binop": null }, "value": "cfg", - "start": 118155, - "end": 118158, + "start": 118694, + "end": 118697, "loc": { "start": { - "line": 2972, - "column": 65 + "line": 2984, + "column": 49 }, "end": { - "line": 2972, - "column": 68 + "line": 2984, + "column": 52 } } }, @@ -398891,16 +402096,16 @@ "binop": null, "updateContext": null }, - "start": 118158, - "end": 118159, + "start": 118697, + "end": 118698, "loc": { "start": { - "line": 2972, - "column": 68 + "line": 2984, + "column": 52 }, "end": { - "line": 2972, - "column": 69 + "line": 2984, + "column": 53 } } }, @@ -398916,24 +402121,24 @@ "postfix": false, "binop": null }, - "value": "origin", - "start": 118159, - "end": 118165, + "value": "transformId", + "start": 118698, + "end": 118709, "loc": { "start": { - "line": 2972, - "column": 69 + "line": 2984, + "column": 53 }, "end": { - "line": 2972, - "column": 75 + "line": 2984, + "column": 64 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -398943,48 +402148,49 @@ "binop": null, "updateContext": null }, - "start": 118165, - "end": 118166, + "start": 118709, + "end": 118710, "loc": { "start": { - "line": 2972, - "column": 75 + "line": 2984, + "column": 64 }, "end": { - "line": 2972, - "column": 76 + "line": 2984, + "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": "math", - "start": 118167, - "end": 118171, + "start": 118710, + "end": 118711, "loc": { "start": { - "line": 2972, - "column": 77 + "line": 2984, + "column": 65 }, "end": { - "line": 2972, - "column": 81 + "line": 2984, + "column": 66 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -398995,23 +402201,24 @@ "binop": null, "updateContext": null }, - "start": 118171, - "end": 118172, + "value": "if", + "start": 118729, + "end": 118731, "loc": { "start": { - "line": 2972, - "column": 81 + "line": 2986, + "column": 16 }, "end": { - "line": 2972, - "column": 82 + "line": 2986, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -399020,50 +402227,51 @@ "postfix": false, "binop": null }, - "value": "vec3", - "start": 118172, - "end": 118176, + "start": 118732, + "end": 118733, "loc": { "start": { - "line": 2972, - "column": 82 + "line": 2986, + "column": 19 }, "end": { - "line": 2972, - "column": 86 + "line": 2986, + "column": 20 } } }, { "type": { - "label": "(", + "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": 118176, - "end": 118177, + "value": "!", + "start": 118733, + "end": 118734, "loc": { "start": { - "line": 2972, - "column": 86 + "line": 2986, + "column": 20 }, "end": { - "line": 2972, - "column": 87 + "line": 2986, + "column": 21 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -399071,22 +402279,23 @@ "postfix": false, "binop": null }, - "start": 118177, - "end": 118178, + "value": "cfg", + "start": 118734, + "end": 118737, "loc": { "start": { - "line": 2972, - "column": 87 + "line": 2986, + "column": 21 }, "end": { - "line": 2972, - "column": 88 + "line": 2986, + "column": 24 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -399094,104 +402303,102 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 118178, - "end": 118179, + "start": 118737, + "end": 118738, "loc": { "start": { - "line": 2972, - "column": 88 + "line": 2986, + "column": 24 }, "end": { - "line": 2972, - "column": 89 + "line": 2986, + "column": 25 } } }, { "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": 118180, - "end": 118181, + "value": "transform", + "start": 118738, + "end": 118747, "loc": { "start": { - "line": 2972, - "column": 90 + "line": 2986, + "column": 25 }, "end": { - "line": 2972, - "column": 91 + "line": 2986, + "column": 34 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 118182, - "end": 118186, + "start": 118747, + "end": 118748, "loc": { "start": { - "line": 2972, - "column": 92 + "line": 2986, + "column": 34 }, "end": { - "line": 2972, - "column": 96 + "line": 2986, + "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": 118186, - "end": 118187, + "start": 118749, + "end": 118750, "loc": { "start": { - "line": 2972, - "column": 96 + "line": 2986, + "column": 36 }, "end": { - "line": 2972, - "column": 97 + "line": 2986, + "column": 37 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -399199,26 +402406,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_origin", - "start": 118187, - "end": 118194, + "value": "this", + "start": 118771, + "end": 118775, "loc": { "start": { - "line": 2972, - "column": 97 + "line": 2987, + "column": 20 }, "end": { - "line": 2972, - "column": 104 + "line": 2987, + "column": 24 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -399228,16 +402436,16 @@ "binop": null, "updateContext": null }, - "start": 118194, - "end": 118195, + "start": 118775, + "end": 118776, "loc": { "start": { - "line": 2972, - "column": 104 + "line": 2987, + "column": 24 }, "end": { - "line": 2972, - "column": 105 + "line": 2987, + "column": 25 } } }, @@ -399253,49 +402461,48 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 118208, - "end": 118211, + "value": "error", + "start": 118776, + "end": 118781, "loc": { "start": { - "line": 2973, - "column": 12 + "line": 2987, + "column": 25 }, "end": { - "line": 2973, - "column": 15 + "line": 2987, + "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": 118211, - "end": 118212, + "start": 118781, + "end": 118782, "loc": { "start": { - "line": 2973, - "column": 15 + "line": 2987, + "column": 30 }, "end": { - "line": 2973, - "column": 16 + "line": 2987, + "column": 31 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -399305,51 +402512,50 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 118212, - "end": 118233, + "start": 118782, + "end": 118783, "loc": { "start": { - "line": 2973, - "column": 16 + "line": 2987, + "column": 31 }, "end": { - "line": 2973, - "column": 37 + "line": 2987, + "column": 32 } } }, { "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": 118234, - "end": 118235, + "value": "[createMesh] Transform not found: ", + "start": 118783, + "end": 118817, "loc": { "start": { - "line": 2973, - "column": 38 + "line": 2987, + "column": 32 }, "end": { - "line": 2973, - "column": 39 + "line": 2987, + "column": 66 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -399358,43 +402564,16 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 118236, - "end": 118239, - "loc": { - "start": { - "line": 2973, - "column": 40 - }, - "end": { - "line": 2973, - "column": 43 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 118239, - "end": 118240, + "start": 118817, + "end": 118819, "loc": { "start": { - "line": 2973, - "column": 43 + "line": 2987, + "column": 66 }, "end": { - "line": 2973, - "column": 44 + "line": 2987, + "column": 68 } } }, @@ -399410,17 +402589,17 @@ "postfix": false, "binop": null }, - "value": "geometry", - "start": 118240, - "end": 118248, + "value": "cfg", + "start": 118819, + "end": 118822, "loc": { "start": { - "line": 2973, - "column": 44 + "line": 2987, + "column": 68 }, "end": { - "line": 2973, - "column": 52 + "line": 2987, + "column": 71 } } }, @@ -399437,16 +402616,16 @@ "binop": null, "updateContext": null }, - "start": 118248, - "end": 118249, + "start": 118822, + "end": 118823, "loc": { "start": { - "line": 2973, - "column": 52 + "line": 2987, + "column": 71 }, "end": { - "line": 2973, - "column": 53 + "line": 2987, + "column": 72 } } }, @@ -399462,50 +402641,48 @@ "postfix": false, "binop": null }, - "value": "positionsDecodeMatrix", - "start": 118249, - "end": 118270, + "value": "transformId", + "start": 118823, + "end": 118834, "loc": { "start": { - "line": 2973, - "column": 53 + "line": 2987, + "column": 72 }, "end": { - "line": 2973, - "column": 74 + "line": 2987, + "column": 83 } } }, { "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": 118270, - "end": 118271, + "start": 118834, + "end": 118835, "loc": { "start": { - "line": 2973, - "column": 74 + "line": 2987, + "column": 83 }, "end": { - "line": 2973, - "column": 75 + "line": 2987, + "column": 84 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -399516,24 +402693,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 118285, - "end": 118287, + "value": " - ensure that you create it first with createTransform()", + "start": 118835, + "end": 118892, "loc": { "start": { - "line": 2975, - "column": 12 + "line": 2987, + "column": 84 }, "end": { - "line": 2975, - "column": 14 + "line": 2987, + "column": 141 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "`", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -399542,24 +402719,24 @@ "postfix": false, "binop": null }, - "start": 118288, - "end": 118289, + "start": 118892, + "end": 118893, "loc": { "start": { - "line": 2975, - "column": 15 + "line": 2987, + "column": 141 }, "end": { - "line": 2975, - "column": 16 + "line": 2987, + "column": 142 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -399567,24 +402744,23 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 118289, - "end": 118292, + "start": 118893, + "end": 118894, "loc": { "start": { - "line": 2975, - "column": 16 + "line": 2987, + "column": 142 }, "end": { - "line": 2975, - "column": 19 + "line": 2987, + "column": 143 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -399594,108 +402770,123 @@ "binop": null, "updateContext": null }, - "start": 118292, - "end": 118293, + "start": 118894, + "end": 118895, "loc": { "start": { - "line": 2975, - "column": 19 + "line": 2987, + "column": 143 }, "end": { - "line": 2975, - "column": 20 + "line": 2987, + "column": 144 } } }, { "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": "transformId", - "start": 118293, - "end": 118304, + "value": "return", + "start": 118916, + "end": 118922, "loc": { "start": { - "line": 2975, + "line": 2988, "column": 20 }, "end": { - "line": 2975, - "column": 31 + "line": 2988, + "column": 26 } } }, { "type": { - "label": ")", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 118304, - "end": 118305, + "value": "false", + "start": 118923, + "end": 118928, "loc": { "start": { - "line": 2975, - "column": 31 + "line": 2988, + "column": 27 }, "end": { - "line": 2975, + "line": 2988, "column": 32 } } }, { "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": 118306, - "end": 118307, + "start": 118928, + "end": 118929, "loc": { "start": { - "line": 2975, - "column": 33 + "line": 2988, + "column": 32 }, "end": { - "line": 2975, - "column": 34 + "line": 2988, + "column": 33 } } }, { - "type": "CommentLine", - "value": " TRANSFORM", - "start": 118325, - "end": 118337, + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 118946, + "end": 118947, "loc": { "start": { - "line": 2977, + "line": 2989, "column": 16 }, "end": { - "line": 2977, - "column": 28 + "line": 2989, + "column": 17 } } }, @@ -399712,15 +402903,15 @@ "binop": null }, "value": "cfg", - "start": 118355, - "end": 118358, + "start": 118965, + "end": 118968, "loc": { "start": { - "line": 2979, + "line": 2991, "column": 16 }, "end": { - "line": 2979, + "line": 2991, "column": 19 } } @@ -399738,15 +402929,15 @@ "binop": null, "updateContext": null }, - "start": 118358, - "end": 118359, + "start": 118968, + "end": 118969, "loc": { "start": { - "line": 2979, + "line": 2991, "column": 19 }, "end": { - "line": 2979, + "line": 2991, "column": 20 } } @@ -399763,17 +402954,17 @@ "postfix": false, "binop": null }, - "value": "transform", - "start": 118359, - "end": 118368, + "value": "aabb", + "start": 118969, + "end": 118973, "loc": { "start": { - "line": 2979, + "line": 2991, "column": 20 }, "end": { - "line": 2979, - "column": 29 + "line": 2991, + "column": 24 } } }, @@ -399791,23 +402982,22 @@ "updateContext": null }, "value": "=", - "start": 118369, - "end": 118370, + "start": 118974, + "end": 118975, "loc": { "start": { - "line": 2979, - "column": 30 + "line": 2991, + "column": 25 }, "end": { - "line": 2979, - "column": 31 + "line": 2991, + "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -399815,20 +403005,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 118371, - "end": 118375, + "value": "cfg", + "start": 118976, + "end": 118979, "loc": { "start": { - "line": 2979, - "column": 32 + "line": 2991, + "column": 27 }, "end": { - "line": 2979, - "column": 36 + "line": 2991, + "column": 30 } } }, @@ -399845,16 +403034,16 @@ "binop": null, "updateContext": null }, - "start": 118375, - "end": 118376, + "start": 118979, + "end": 118980, "loc": { "start": { - "line": 2979, - "column": 36 + "line": 2991, + "column": 30 }, "end": { - "line": 2979, - "column": 37 + "line": 2991, + "column": 31 } } }, @@ -399870,25 +403059,25 @@ "postfix": false, "binop": null }, - "value": "_transforms", - "start": 118376, - "end": 118387, + "value": "geometry", + "start": 118980, + "end": 118988, "loc": { "start": { - "line": 2979, - "column": 37 + "line": 2991, + "column": 31 }, "end": { - "line": 2979, - "column": 48 + "line": 2991, + "column": 39 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -399897,16 +403086,16 @@ "binop": null, "updateContext": null }, - "start": 118387, - "end": 118388, + "start": 118988, + "end": 118989, "loc": { "start": { - "line": 2979, - "column": 48 + "line": 2991, + "column": 39 }, "end": { - "line": 2979, - "column": 49 + "line": 2991, + "column": 40 } } }, @@ -399922,24 +403111,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 118388, - "end": 118391, + "value": "aabb", + "start": 118989, + "end": 118993, "loc": { "start": { - "line": 2979, - "column": 49 + "line": 2991, + "column": 40 }, "end": { - "line": 2979, - "column": 52 + "line": 2991, + "column": 44 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -399949,24 +403138,24 @@ "binop": null, "updateContext": null }, - "start": 118391, - "end": 118392, + "start": 118993, + "end": 118994, "loc": { "start": { - "line": 2979, - "column": 52 + "line": 2991, + "column": 44 }, "end": { - "line": 2979, - "column": 53 + "line": 2991, + "column": 45 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -399974,24 +403163,24 @@ "postfix": false, "binop": null }, - "value": "transformId", - "start": 118392, - "end": 118403, + "start": 119008, + "end": 119009, "loc": { "start": { - "line": 2979, - "column": 53 + "line": 2993, + "column": 12 }, "end": { - "line": 2979, - "column": 64 + "line": 2993, + "column": 13 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -400001,42 +403190,58 @@ "binop": null, "updateContext": null }, - "start": 118403, - "end": 118404, + "value": "else", + "start": 119010, + "end": 119014, "loc": { "start": { - "line": 2979, - "column": 64 + "line": 2993, + "column": 14 }, "end": { - "line": 2979, - "column": 65 + "line": 2993, + "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": 118404, - "end": 118405, + "start": 119015, + "end": 119016, "loc": { "start": { - "line": 2979, - "column": 65 + "line": 2993, + "column": 19 }, "end": { - "line": 2979, - "column": 66 + "line": 2993, + "column": 20 + } + } + }, + { + "type": "CommentLine", + "value": " MATRIX", + "start": 119034, + "end": 119043, + "loc": { + "start": { + "line": 2995, + "column": 16 + }, + "end": { + "line": 2995, + "column": 25 } } }, @@ -400055,15 +403260,15 @@ "updateContext": null }, "value": "if", - "start": 118423, - "end": 118425, + "start": 119061, + "end": 119063, "loc": { "start": { - "line": 2981, + "line": 2997, "column": 16 }, "end": { - "line": 2981, + "line": 2997, "column": 18 } } @@ -400080,43 +403285,16 @@ "postfix": false, "binop": null }, - "start": 118426, - "end": 118427, + "start": 119064, + "end": 119065, "loc": { "start": { - "line": 2981, + "line": 2997, "column": 19 }, "end": { - "line": 2981, - "column": 20 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "!", - "start": 118427, - "end": 118428, - "loc": { - "start": { - "line": 2981, + "line": 2997, "column": 20 - }, - "end": { - "line": 2981, - "column": 21 } } }, @@ -400133,16 +403311,16 @@ "binop": null }, "value": "cfg", - "start": 118428, - "end": 118431, + "start": 119065, + "end": 119068, "loc": { "start": { - "line": 2981, - "column": 21 + "line": 2997, + "column": 20 }, "end": { - "line": 2981, - "column": 24 + "line": 2997, + "column": 23 } } }, @@ -400159,16 +403337,16 @@ "binop": null, "updateContext": null }, - "start": 118431, - "end": 118432, + "start": 119068, + "end": 119069, "loc": { "start": { - "line": 2981, - "column": 24 + "line": 2997, + "column": 23 }, "end": { - "line": 2981, - "column": 25 + "line": 2997, + "column": 24 } } }, @@ -400184,17 +403362,17 @@ "postfix": false, "binop": null }, - "value": "transform", - "start": 118432, - "end": 118441, + "value": "matrix", + "start": 119069, + "end": 119075, "loc": { "start": { - "line": 2981, - "column": 25 + "line": 2997, + "column": 24 }, "end": { - "line": 2981, - "column": 34 + "line": 2997, + "column": 30 } } }, @@ -400210,16 +403388,16 @@ "postfix": false, "binop": null }, - "start": 118441, - "end": 118442, + "start": 119075, + "end": 119076, "loc": { "start": { - "line": 2981, - "column": 34 + "line": 2997, + "column": 30 }, "end": { - "line": 2981, - "column": 35 + "line": 2997, + "column": 31 } } }, @@ -400235,23 +403413,22 @@ "postfix": false, "binop": null }, - "start": 118443, - "end": 118444, + "start": 119077, + "end": 119078, "loc": { "start": { - "line": 2981, - "column": 36 + "line": 2997, + "column": 32 }, "end": { - "line": 2981, - "column": 37 + "line": 2997, + "column": 33 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -400259,20 +403436,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 118465, - "end": 118469, + "value": "cfg", + "start": 119099, + "end": 119102, "loc": { "start": { - "line": 2982, + "line": 2998, "column": 20 }, "end": { - "line": 2982, - "column": 24 + "line": 2998, + "column": 23 } } }, @@ -400289,16 +403465,16 @@ "binop": null, "updateContext": null }, - "start": 118469, - "end": 118470, + "start": 119102, + "end": 119103, "loc": { "start": { - "line": 2982, - "column": 24 + "line": 2998, + "column": 23 }, "end": { - "line": 2982, - "column": 25 + "line": 2998, + "column": 24 } } }, @@ -400314,48 +403490,50 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 118470, - "end": 118475, + "value": "meshMatrix", + "start": 119103, + "end": 119113, "loc": { "start": { - "line": 2982, - "column": 25 + "line": 2998, + "column": 24 }, "end": { - "line": 2982, - "column": 30 + "line": 2998, + "column": 34 } } }, { "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": 118475, - "end": 118476, + "value": "=", + "start": 119114, + "end": 119115, "loc": { "start": { - "line": 2982, - "column": 30 + "line": 2998, + "column": 35 }, "end": { - "line": 2982, - "column": 31 + "line": 2998, + "column": 36 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -400365,22 +403543,23 @@ "postfix": false, "binop": null }, - "start": 118476, - "end": 118477, + "value": "cfg", + "start": 119116, + "end": 119119, "loc": { "start": { - "line": 2982, - "column": 31 + "line": 2998, + "column": 37 }, "end": { - "line": 2982, - "column": 32 + "line": 2998, + "column": 40 } } }, { "type": { - "label": "template", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -400391,24 +403570,23 @@ "binop": null, "updateContext": null }, - "value": "[createMesh] Transform not found: ", - "start": 118477, - "end": 118511, + "start": 119119, + "end": 119120, "loc": { "start": { - "line": 2982, - "column": 32 + "line": 2998, + "column": 40 }, "end": { - "line": 2982, - "column": 66 + "line": 2998, + "column": 41 } } }, { "type": { - "label": "${", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -400417,48 +403595,49 @@ "postfix": false, "binop": null }, - "start": 118511, - "end": 118513, + "value": "matrix", + "start": 119120, + "end": 119126, "loc": { "start": { - "line": 2982, - "column": 66 + "line": 2998, + "column": 41 }, "end": { - "line": 2982, - "column": 68 + "line": 2998, + "column": 47 } } }, { "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": "cfg", - "start": 118513, - "end": 118516, + "start": 119126, + "end": 119127, "loc": { "start": { - "line": 2982, - "column": 68 + "line": 2998, + "column": 47 }, "end": { - "line": 2982, - "column": 71 + "line": 2998, + "column": 48 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -400466,51 +403645,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 118516, - "end": 118517, + "start": 119144, + "end": 119145, "loc": { "start": { - "line": 2982, - "column": 71 + "line": 2999, + "column": 16 }, "end": { - "line": 2982, - "column": 72 + "line": 2999, + "column": 17 } } }, { "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": "transformId", - "start": 118517, - "end": 118528, + "value": "else", + "start": 119146, + "end": 119150, "loc": { "start": { - "line": 2982, - "column": 72 + "line": 2999, + "column": 18 }, "end": { - "line": 2982, - "column": 83 + "line": 2999, + "column": 22 } } }, { "type": { - "label": "}", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -400518,51 +403699,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 118528, - "end": 118529, + "value": "if", + "start": 119151, + "end": 119153, "loc": { "start": { - "line": 2982, - "column": 83 + "line": 2999, + "column": 23 }, "end": { - "line": 2982, - "column": 84 + "line": 2999, + "column": 25 } } }, { "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": " - ensure that you create it first with createTransform()", - "start": 118529, - "end": 118586, + "start": 119154, + "end": 119155, "loc": { "start": { - "line": 2982, - "column": 84 + "line": 2999, + "column": 26 }, "end": { - "line": 2982, - "column": 141 + "line": 2999, + "column": 27 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -400572,22 +403753,23 @@ "postfix": false, "binop": null }, - "start": 118586, - "end": 118587, + "value": "cfg", + "start": 119155, + "end": 119158, "loc": { "start": { - "line": 2982, - "column": 141 + "line": 2999, + "column": 27 }, "end": { - "line": 2982, - "column": 142 + "line": 2999, + "column": 30 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -400595,51 +403777,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 118587, - "end": 118588, + "start": 119158, + "end": 119159, "loc": { "start": { - "line": 2982, - "column": 142 + "line": 2999, + "column": 30 }, "end": { - "line": 2982, - "column": 143 + "line": 2999, + "column": 31 } } }, { "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": 118588, - "end": 118589, + "value": "scale", + "start": 119159, + "end": 119164, "loc": { "start": { - "line": 2982, - "column": 143 + "line": 2999, + "column": 31 }, "end": { - "line": 2982, - "column": 144 + "line": 2999, + "column": 36 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -400647,27 +403829,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "return", - "start": 118610, - "end": 118616, + "value": "||", + "start": 119165, + "end": 119167, "loc": { "start": { - "line": 2983, - "column": 20 + "line": 2999, + "column": 37 }, "end": { - "line": 2983, - "column": 26 + "line": 2999, + "column": 39 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -400675,27 +403856,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 118617, - "end": 118622, + "value": "cfg", + "start": 119168, + "end": 119171, "loc": { "start": { - "line": 2983, - "column": 27 + "line": 2999, + "column": 40 }, "end": { - "line": 2983, - "column": 32 + "line": 2999, + "column": 43 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -400705,24 +403885,24 @@ "binop": null, "updateContext": null }, - "start": 118622, - "end": 118623, + "start": 119171, + "end": 119172, "loc": { "start": { - "line": 2983, - "column": 32 + "line": 2999, + "column": 43 }, "end": { - "line": 2983, - "column": 33 + "line": 2999, + "column": 44 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -400730,16 +403910,44 @@ "postfix": false, "binop": null }, - "start": 118640, - "end": 118641, + "value": "rotation", + "start": 119172, + "end": 119180, "loc": { "start": { - "line": 2984, - "column": 16 + "line": 2999, + "column": 44 }, "end": { - "line": 2984, - "column": 17 + "line": 2999, + "column": 52 + } + } + }, + { + "type": { + "label": "||", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 1, + "updateContext": null + }, + "value": "||", + "start": 119181, + "end": 119183, + "loc": { + "start": { + "line": 2999, + "column": 53 + }, + "end": { + "line": 2999, + "column": 55 } } }, @@ -400756,16 +403964,16 @@ "binop": null }, "value": "cfg", - "start": 118659, - "end": 118662, + "start": 119184, + "end": 119187, "loc": { "start": { - "line": 2986, - "column": 16 + "line": 2999, + "column": 56 }, "end": { - "line": 2986, - "column": 19 + "line": 2999, + "column": 59 } } }, @@ -400782,16 +403990,16 @@ "binop": null, "updateContext": null }, - "start": 118662, - "end": 118663, + "start": 119187, + "end": 119188, "loc": { "start": { - "line": 2986, - "column": 19 + "line": 2999, + "column": 59 }, "end": { - "line": 2986, - "column": 20 + "line": 2999, + "column": 60 } } }, @@ -400807,44 +404015,44 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 118663, - "end": 118667, + "value": "position", + "start": 119188, + "end": 119196, "loc": { "start": { - "line": 2986, - "column": 20 + "line": 2999, + "column": 60 }, "end": { - "line": 2986, - "column": 24 + "line": 2999, + "column": 68 } } }, { "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": 118668, - "end": 118669, + "value": "||", + "start": 119197, + "end": 119199, "loc": { "start": { - "line": 2986, - "column": 25 + "line": 2999, + "column": 69 }, "end": { - "line": 2986, - "column": 26 + "line": 2999, + "column": 71 } } }, @@ -400861,16 +404069,16 @@ "binop": null }, "value": "cfg", - "start": 118670, - "end": 118673, + "start": 119200, + "end": 119203, "loc": { "start": { - "line": 2986, - "column": 27 + "line": 2999, + "column": 72 }, "end": { - "line": 2986, - "column": 30 + "line": 2999, + "column": 75 } } }, @@ -400887,16 +404095,16 @@ "binop": null, "updateContext": null }, - "start": 118673, - "end": 118674, + "start": 119203, + "end": 119204, "loc": { "start": { - "line": 2986, - "column": 30 + "line": 2999, + "column": 75 }, "end": { - "line": 2986, - "column": 31 + "line": 2999, + "column": 76 } } }, @@ -400912,23 +404120,23 @@ "postfix": false, "binop": null }, - "value": "geometry", - "start": 118674, - "end": 118682, + "value": "quaternion", + "start": 119204, + "end": 119214, "loc": { "start": { - "line": 2986, - "column": 31 + "line": 2999, + "column": 76 }, "end": { - "line": 2986, - "column": 39 + "line": 2999, + "column": 86 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -400936,26 +404144,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 118682, - "end": 118683, + "start": 119214, + "end": 119215, "loc": { "start": { - "line": 2986, - "column": 39 + "line": 2999, + "column": 86 }, "end": { - "line": 2986, - "column": 40 + "line": 2999, + "column": 87 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -400964,24 +404171,24 @@ "postfix": false, "binop": null }, - "value": "aabb", - "start": 118683, - "end": 118687, + "start": 119216, + "end": 119217, "loc": { "start": { - "line": 2986, - "column": 40 + "line": 2999, + "column": 88 }, "end": { - "line": 2986, - "column": 44 + "line": 2999, + "column": 89 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -400991,24 +404198,25 @@ "binop": null, "updateContext": null }, - "start": 118687, - "end": 118688, + "value": "const", + "start": 119238, + "end": 119243, "loc": { "start": { - "line": 2986, - "column": 44 + "line": 3000, + "column": 20 }, "end": { - "line": 2986, - "column": 45 + "line": 3000, + "column": 25 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -401016,51 +404224,51 @@ "postfix": false, "binop": null }, - "start": 118702, - "end": 118703, + "value": "scale", + "start": 119244, + "end": 119249, "loc": { "start": { - "line": 2988, - "column": 12 + "line": 3000, + "column": 26 }, "end": { - "line": 2988, - "column": 13 + "line": 3000, + "column": 31 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "else", - "start": 118704, - "end": 118708, + "value": "=", + "start": 119250, + "end": 119251, "loc": { "start": { - "line": 2988, - "column": 14 + "line": 3000, + "column": 32 }, "end": { - "line": 2988, - "column": 18 + "line": 3000, + "column": 33 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -401069,85 +404277,96 @@ "postfix": false, "binop": null }, - "start": 118709, - "end": 118710, + "value": "cfg", + "start": 119252, + "end": 119255, "loc": { "start": { - "line": 2988, - "column": 19 + "line": 3000, + "column": 34 }, "end": { - "line": 2988, - "column": 20 + "line": 3000, + "column": 37 } } }, { - "type": "CommentLine", - "value": " MATRIX", - "start": 118728, - "end": 118737, + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 119255, + "end": 119256, "loc": { "start": { - "line": 2990, - "column": 16 + "line": 3000, + "column": 37 }, "end": { - "line": 2990, - "column": 25 + "line": 3000, + "column": 38 } } }, { "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": 118755, - "end": 118757, + "value": "scale", + "start": 119256, + "end": 119261, "loc": { "start": { - "line": 2992, - "column": 16 + "line": 3000, + "column": 38 }, "end": { - "line": 2992, - "column": 18 + "line": 3000, + "column": 43 } } }, { "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": 118758, - "end": 118759, + "value": "||", + "start": 119262, + "end": 119264, "loc": { "start": { - "line": 2992, - "column": 19 + "line": 3000, + "column": 44 }, "end": { - "line": 2992, - "column": 20 + "line": 3000, + "column": 46 } } }, @@ -401163,24 +404382,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 118759, - "end": 118762, + "value": "DEFAULT_SCALE", + "start": 119265, + "end": 119278, "loc": { "start": { - "line": 2992, - "column": 20 + "line": 3000, + "column": 47 }, "end": { - "line": 2992, - "column": 23 + "line": 3000, + "column": 60 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -401190,50 +404409,52 @@ "binop": null, "updateContext": null }, - "start": 118762, - "end": 118763, + "start": 119278, + "end": 119279, "loc": { "start": { - "line": 2992, - "column": 23 + "line": 3000, + "column": 60 }, "end": { - "line": 2992, - "column": 24 + "line": 3000, + "column": 61 } } }, { "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": "matrix", - "start": 118763, - "end": 118769, + "value": "const", + "start": 119300, + "end": 119305, "loc": { "start": { - "line": 2992, - "column": 24 + "line": 3001, + "column": 20 }, "end": { - "line": 2992, - "column": 30 + "line": 3001, + "column": 25 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -401241,41 +404462,44 @@ "postfix": false, "binop": null }, - "start": 118769, - "end": 118770, + "value": "position", + "start": 119306, + "end": 119314, "loc": { "start": { - "line": 2992, - "column": 30 + "line": 3001, + "column": 26 }, "end": { - "line": 2992, - "column": 31 + "line": 3001, + "column": 34 } } }, { "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": 118771, - "end": 118772, + "value": "=", + "start": 119315, + "end": 119316, "loc": { "start": { - "line": 2992, - "column": 32 + "line": 3001, + "column": 35 }, "end": { - "line": 2992, - "column": 33 + "line": 3001, + "column": 36 } } }, @@ -401292,16 +404516,16 @@ "binop": null }, "value": "cfg", - "start": 118793, - "end": 118796, + "start": 119317, + "end": 119320, "loc": { "start": { - "line": 2993, - "column": 20 + "line": 3001, + "column": 37 }, "end": { - "line": 2993, - "column": 23 + "line": 3001, + "column": 40 } } }, @@ -401318,16 +404542,16 @@ "binop": null, "updateContext": null }, - "start": 118796, - "end": 118797, + "start": 119320, + "end": 119321, "loc": { "start": { - "line": 2993, - "column": 23 + "line": 3001, + "column": 40 }, "end": { - "line": 2993, - "column": 24 + "line": 3001, + "column": 41 } } }, @@ -401343,44 +404567,44 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 118797, - "end": 118807, + "value": "position", + "start": 119321, + "end": 119329, "loc": { "start": { - "line": 2993, - "column": 24 + "line": 3001, + "column": 41 }, "end": { - "line": 2993, - "column": 34 + "line": 3001, + "column": 49 } } }, { "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": 118808, - "end": 118809, + "value": "||", + "start": 119330, + "end": 119332, "loc": { "start": { - "line": 2993, - "column": 35 + "line": 3001, + "column": 50 }, "end": { - "line": 2993, - "column": 36 + "line": 3001, + "column": 52 } } }, @@ -401396,23 +404620,50 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 118810, - "end": 118813, + "value": "DEFAULT_POSITION", + "start": 119333, + "end": 119349, "loc": { "start": { - "line": 2993, - "column": 37 + "line": 3001, + "column": 53 }, "end": { - "line": 2993, - "column": 40 + "line": 3001, + "column": 69 } } }, { "type": { - "label": ".", + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 119349, + "end": 119350, + "loc": { + "start": { + "line": 3001, + "column": 69 + }, + "end": { + "line": 3001, + "column": 70 + } + } + }, + { + "type": { + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -401423,16 +404674,42 @@ "binop": null, "updateContext": null }, - "start": 118813, - "end": 118814, + "value": "if", + "start": 119371, + "end": 119373, "loc": { "start": { - "line": 2993, - "column": 40 + "line": 3002, + "column": 20 }, "end": { - "line": 2993, - "column": 41 + "line": 3002, + "column": 22 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 119374, + "end": 119375, + "loc": { + "start": { + "line": 3002, + "column": 23 + }, + "end": { + "line": 3002, + "column": 24 } } }, @@ -401448,17 +404725,17 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 118814, - "end": 118820, + "value": "cfg", + "start": 119375, + "end": 119378, "loc": { "start": { - "line": 2993, - "column": 41 + "line": 3002, + "column": 24 }, "end": { - "line": 2993, - "column": 47 + "line": 3002, + "column": 27 } } }, @@ -401475,16 +404752,16 @@ "binop": null, "updateContext": null }, - "start": 118820, - "end": 118821, + "start": 119378, + "end": 119379, "loc": { "start": { - "line": 2993, - "column": 47 + "line": 3002, + "column": 27 }, "end": { - "line": 2993, - "column": 48 + "line": 3002, + "column": 28 } } }, @@ -401500,23 +404777,48 @@ "postfix": false, "binop": null }, - "value": "slice", - "start": 118821, - "end": 118826, + "value": "rotation", + "start": 119379, + "end": 119387, "loc": { "start": { - "line": 2993, - "column": 48 + "line": 3002, + "column": 28 }, "end": { - "line": 2993, - "column": 53 + "line": 3002, + "column": 36 } } }, { "type": { - "label": "(", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 119387, + "end": 119388, + "loc": { + "start": { + "line": 3002, + "column": 36 + }, + "end": { + "line": 3002, + "column": 37 + } + } + }, + { + "type": { + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -401526,24 +404828,24 @@ "postfix": false, "binop": null }, - "start": 118826, - "end": 118827, + "start": 119389, + "end": 119390, "loc": { "start": { - "line": 2993, - "column": 53 + "line": 3002, + "column": 38 }, "end": { - "line": 2993, - "column": 54 + "line": 3002, + "column": 39 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -401551,23 +404853,24 @@ "postfix": false, "binop": null }, - "start": 118827, - "end": 118828, + "value": "math", + "start": 119415, + "end": 119419, "loc": { "start": { - "line": 2993, - "column": 54 + "line": 3003, + "column": 24 }, "end": { - "line": 2993, - "column": 55 + "line": 3003, + "column": 28 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -401577,24 +404880,24 @@ "binop": null, "updateContext": null }, - "start": 118828, - "end": 118829, + "start": 119419, + "end": 119420, "loc": { "start": { - "line": 2993, - "column": 55 + "line": 3003, + "column": 28 }, "end": { - "line": 2993, - "column": 56 + "line": 3003, + "column": 29 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -401602,51 +404905,49 @@ "postfix": false, "binop": null }, - "start": 118846, - "end": 118847, + "value": "eulerToQuaternion", + "start": 119420, + "end": 119437, "loc": { "start": { - "line": 2994, - "column": 16 + "line": 3003, + "column": 29 }, "end": { - "line": 2994, - "column": 17 + "line": 3003, + "column": 46 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "else", - "start": 118848, - "end": 118852, + "start": 119437, + "end": 119438, "loc": { "start": { - "line": 2994, - "column": 18 + "line": 3003, + "column": 46 }, "end": { - "line": 2994, - "column": 22 + "line": 3003, + "column": 47 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -401655,23 +404956,23 @@ "postfix": false, "binop": null }, - "start": 118853, - "end": 118854, + "value": "cfg", + "start": 119438, + "end": 119441, "loc": { "start": { - "line": 2994, - "column": 23 + "line": 3003, + "column": 47 }, "end": { - "line": 2994, - "column": 24 + "line": 3003, + "column": 50 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -401682,17 +404983,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 118875, - "end": 118880, + "start": 119441, + "end": 119442, "loc": { "start": { - "line": 2995, - "column": 20 + "line": 3003, + "column": 50 }, "end": { - "line": 2995, - "column": 25 + "line": 3003, + "column": 51 } } }, @@ -401708,50 +405008,49 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 118881, - "end": 118886, + "value": "rotation", + "start": 119442, + "end": 119450, "loc": { "start": { - "line": 2995, - "column": 26 + "line": 3003, + "column": 51 }, "end": { - "line": 2995, - "column": 31 + "line": 3003, + "column": 59 } } }, { "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": 118887, - "end": 118888, + "start": 119450, + "end": 119451, "loc": { "start": { - "line": 2995, - "column": 32 + "line": 3003, + "column": 59 }, "end": { - "line": 2995, - "column": 33 + "line": 3003, + "column": 60 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -401759,26 +405058,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 118889, - "end": 118892, + "value": "XYZ", + "start": 119452, + "end": 119457, "loc": { "start": { - "line": 2995, - "column": 34 + "line": 3003, + "column": 61 }, "end": { - "line": 2995, - "column": 37 + "line": 3003, + "column": 66 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -401788,16 +405088,16 @@ "binop": null, "updateContext": null }, - "start": 118892, - "end": 118893, + "start": 119457, + "end": 119458, "loc": { "start": { - "line": 2995, - "column": 37 + "line": 3003, + "column": 66 }, "end": { - "line": 2995, - "column": 38 + "line": 3003, + "column": 67 } } }, @@ -401813,103 +405113,100 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 118893, - "end": 118898, + "value": "tempQuaternion", + "start": 119459, + "end": 119473, "loc": { "start": { - "line": 2995, - "column": 38 + "line": 3003, + "column": 68 }, "end": { - "line": 2995, - "column": 43 + "line": 3003, + "column": 82 } } }, { "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": 118899, - "end": 118901, + "start": 119473, + "end": 119474, "loc": { "start": { - "line": 2995, - "column": 44 + "line": 3003, + "column": 82 }, "end": { - "line": 2995, - "column": 46 + "line": 3003, + "column": 83 } } }, { "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": "DEFAULT_SCALE", - "start": 118902, - "end": 118915, + "start": 119474, + "end": 119475, "loc": { "start": { - "line": 2995, - "column": 47 + "line": 3003, + "column": 83 }, "end": { - "line": 2995, - "column": 60 + "line": 3003, + "column": 84 } } }, { "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": 118915, - "end": 118916, + "value": "cfg", + "start": 119500, + "end": 119503, "loc": { "start": { - "line": 2995, - "column": 60 + "line": 3004, + "column": 24 }, "end": { - "line": 2995, - "column": 61 + "line": 3004, + "column": 27 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -401920,17 +405217,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 118937, - "end": 118942, + "start": 119503, + "end": 119504, "loc": { "start": { - "line": 2996, - "column": 20 + "line": 3004, + "column": 27 }, "end": { - "line": 2996, - "column": 25 + "line": 3004, + "column": 28 } } }, @@ -401946,17 +405242,17 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 118943, - "end": 118951, + "value": "meshMatrix", + "start": 119504, + "end": 119514, "loc": { "start": { - "line": 2996, - "column": 26 + "line": 3004, + "column": 28 }, "end": { - "line": 2996, - "column": 34 + "line": 3004, + "column": 38 } } }, @@ -401974,16 +405270,16 @@ "updateContext": null }, "value": "=", - "start": 118952, - "end": 118953, + "start": 119515, + "end": 119516, "loc": { "start": { - "line": 2996, - "column": 35 + "line": 3004, + "column": 39 }, "end": { - "line": 2996, - "column": 36 + "line": 3004, + "column": 40 } } }, @@ -401999,17 +405295,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 118954, - "end": 118957, + "value": "math", + "start": 119517, + "end": 119521, "loc": { "start": { - "line": 2996, - "column": 37 + "line": 3004, + "column": 41 }, "end": { - "line": 2996, - "column": 40 + "line": 3004, + "column": 45 } } }, @@ -402026,16 +405322,16 @@ "binop": null, "updateContext": null }, - "start": 118957, - "end": 118958, + "start": 119521, + "end": 119522, "loc": { "start": { - "line": 2996, - "column": 40 + "line": 3004, + "column": 45 }, "end": { - "line": 2996, - "column": 41 + "line": 3004, + "column": 46 } } }, @@ -402051,44 +405347,42 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 118958, - "end": 118966, + "value": "composeMat4", + "start": 119522, + "end": 119533, "loc": { "start": { - "line": 2996, - "column": 41 + "line": 3004, + "column": 46 }, "end": { - "line": 2996, - "column": 49 + "line": 3004, + "column": 57 } } }, { "type": { - "label": "||", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 118967, - "end": 118969, + "start": 119533, + "end": 119534, "loc": { "start": { - "line": 2996, - "column": 50 + "line": 3004, + "column": 57 }, "end": { - "line": 2996, - "column": 52 + "line": 3004, + "column": 58 } } }, @@ -402104,23 +405398,23 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_POSITION", - "start": 118970, - "end": 118986, + "value": "position", + "start": 119534, + "end": 119542, "loc": { "start": { - "line": 2996, - "column": 53 + "line": 3004, + "column": 58 }, "end": { - "line": 2996, - "column": 69 + "line": 3004, + "column": 66 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -402131,44 +405425,16 @@ "binop": null, "updateContext": null }, - "start": 118986, - "end": 118987, - "loc": { - "start": { - "line": 2996, - "column": 69 - }, - "end": { - "line": 2996, - "column": 70 - } - } - }, - { - "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": 119008, - "end": 119013, + "start": 119542, + "end": 119543, "loc": { "start": { - "line": 2997, - "column": 20 + "line": 3004, + "column": 66 }, "end": { - "line": 2997, - "column": 25 + "line": 3004, + "column": 67 } } }, @@ -402184,44 +405450,43 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 119014, - "end": 119022, + "value": "tempQuaternion", + "start": 119544, + "end": 119558, "loc": { "start": { - "line": 2997, - "column": 26 + "line": 3004, + "column": 68 }, "end": { - "line": 2997, - "column": 34 + "line": 3004, + "column": 82 } } }, { "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": 119023, - "end": 119024, + "start": 119558, + "end": 119559, "loc": { "start": { - "line": 2997, - "column": 35 + "line": 3004, + "column": 82 }, "end": { - "line": 2997, - "column": 36 + "line": 3004, + "column": 83 } } }, @@ -402237,24 +405502,24 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 119025, - "end": 119028, + "value": "scale", + "start": 119560, + "end": 119565, "loc": { "start": { - "line": 2997, - "column": 37 + "line": 3004, + "column": 84 }, "end": { - "line": 2997, - "column": 40 + "line": 3004, + "column": 89 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -402264,16 +405529,16 @@ "binop": null, "updateContext": null }, - "start": 119028, - "end": 119029, + "start": 119565, + "end": 119566, "loc": { "start": { - "line": 2997, - "column": 40 + "line": 3004, + "column": 89 }, "end": { - "line": 2997, - "column": 41 + "line": 3004, + "column": 90 } } }, @@ -402289,44 +405554,43 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 119029, - "end": 119037, + "value": "math", + "start": 119567, + "end": 119571, "loc": { "start": { - "line": 2997, - "column": 41 + "line": 3004, + "column": 91 }, "end": { - "line": 2997, - "column": 49 + "line": 3004, + "column": 95 } } }, { "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": 119038, - "end": 119040, + "start": 119571, + "end": 119572, "loc": { "start": { - "line": 2997, - "column": 50 + "line": 3004, + "column": 95 }, "end": { - "line": 2997, - "column": 52 + "line": 3004, + "column": 96 } } }, @@ -402342,50 +405606,24 @@ "postfix": false, "binop": null }, - "value": "DEFAULT_ROTATION", - "start": 119041, - "end": 119057, + "value": "mat4", + "start": 119572, + "end": 119576, "loc": { "start": { - "line": 2997, - "column": 53 + "line": 3004, + "column": 96 }, "end": { - "line": 2997, - "column": 69 + "line": 3004, + "column": 100 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 119057, - "end": 119058, - "loc": { - "start": { - "line": 2997, - "column": 69 - }, - "end": { - "line": 2997, - "column": 70 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -402394,23 +405632,22 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 119079, - "end": 119083, + "start": 119576, + "end": 119577, "loc": { "start": { - "line": 2998, - "column": 20 + "line": 3004, + "column": 100 }, "end": { - "line": 2998, - "column": 24 + "line": 3004, + "column": 101 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -402418,27 +405655,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 119083, - "end": 119084, + "start": 119577, + "end": 119578, "loc": { "start": { - "line": 2998, - "column": 24 + "line": 3004, + "column": 101 }, "end": { - "line": 2998, - "column": 25 + "line": 3004, + "column": 102 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -402446,50 +405682,50 @@ "postfix": false, "binop": null }, - "value": "eulerToQuaternion", - "start": 119084, - "end": 119101, + "start": 119578, + "end": 119579, "loc": { "start": { - "line": 2998, - "column": 25 + "line": 3004, + "column": 102 }, "end": { - "line": 2998, - "column": 42 + "line": 3004, + "column": 103 } } }, { "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": 119101, - "end": 119102, + "start": 119579, + "end": 119580, "loc": { "start": { - "line": 2998, - "column": 42 + "line": 3004, + "column": 103 }, "end": { - "line": 2998, - "column": 43 + "line": 3004, + "column": 104 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -402497,23 +405733,23 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 119102, - "end": 119110, + "start": 119601, + "end": 119602, "loc": { "start": { - "line": 2998, - "column": 43 + "line": 3005, + "column": 20 }, "end": { - "line": 2998, - "column": 51 + "line": 3005, + "column": 21 } } }, { "type": { - "label": ",", + "label": "else", + "keyword": "else", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -402524,103 +405760,102 @@ "binop": null, "updateContext": null }, - "start": 119110, - "end": 119111, + "value": "else", + "start": 119603, + "end": 119607, "loc": { "start": { - "line": 2998, - "column": 51 + "line": 3005, + "column": 22 }, "end": { - "line": 2998, - "column": 52 + "line": 3005, + "column": 26 } } }, { "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": "XYZ", - "start": 119112, - "end": 119117, + "start": 119608, + "end": 119609, "loc": { "start": { - "line": 2998, - "column": 53 + "line": 3005, + "column": 27 }, "end": { - "line": 2998, - "column": 58 + "line": 3005, + "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": null, - "updateContext": null + "binop": null }, - "start": 119117, - "end": 119118, + "value": "cfg", + "start": 119634, + "end": 119637, "loc": { "start": { - "line": 2998, - "column": 58 + "line": 3006, + "column": 24 }, "end": { - "line": 2998, - "column": 59 + "line": 3006, + "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": "DEFAULT_QUATERNION", - "start": 119119, - "end": 119137, + "start": 119637, + "end": 119638, "loc": { "start": { - "line": 2998, - "column": 60 + "line": 3006, + "column": 27 }, "end": { - "line": 2998, - "column": 78 + "line": 3006, + "column": 28 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -402628,42 +405863,44 @@ "postfix": false, "binop": null }, - "start": 119137, - "end": 119138, + "value": "meshMatrix", + "start": 119638, + "end": 119648, "loc": { "start": { - "line": 2998, - "column": 78 + "line": 3006, + "column": 28 }, "end": { - "line": 2998, - "column": 79 + "line": 3006, + "column": 38 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 119138, - "end": 119139, + "value": "=", + "start": 119649, + "end": 119650, "loc": { "start": { - "line": 2998, - "column": 79 + "line": 3006, + "column": 39 }, "end": { - "line": 2998, - "column": 80 + "line": 3006, + "column": 40 } } }, @@ -402679,17 +405916,17 @@ "postfix": false, "binop": null }, - "value": "cfg", - "start": 119160, - "end": 119163, + "value": "math", + "start": 119651, + "end": 119655, "loc": { "start": { - "line": 2999, - "column": 20 + "line": 3006, + "column": 41 }, "end": { - "line": 2999, - "column": 23 + "line": 3006, + "column": 45 } } }, @@ -402706,16 +405943,16 @@ "binop": null, "updateContext": null }, - "start": 119163, - "end": 119164, + "start": 119655, + "end": 119656, "loc": { "start": { - "line": 2999, - "column": 23 + "line": 3006, + "column": 45 }, "end": { - "line": 2999, - "column": 24 + "line": 3006, + "column": 46 } } }, @@ -402731,44 +405968,42 @@ "postfix": false, "binop": null }, - "value": "meshMatrix", - "start": 119164, - "end": 119174, + "value": "composeMat4", + "start": 119656, + "end": 119667, "loc": { "start": { - "line": 2999, - "column": 24 + "line": 3006, + "column": 46 }, "end": { - "line": 2999, - "column": 34 + "line": 3006, + "column": 57 } } }, { "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": 119175, - "end": 119176, + "start": 119667, + "end": 119668, "loc": { "start": { - "line": 2999, - "column": 35 + "line": 3006, + "column": 57 }, "end": { - "line": 2999, - "column": 36 + "line": 3006, + "column": 58 } } }, @@ -402784,24 +406019,24 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 119177, - "end": 119181, + "value": "position", + "start": 119668, + "end": 119676, "loc": { "start": { - "line": 2999, - "column": 37 + "line": 3006, + "column": 58 }, "end": { - "line": 2999, - "column": 41 + "line": 3006, + "column": 66 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -402811,16 +406046,16 @@ "binop": null, "updateContext": null }, - "start": 119181, - "end": 119182, + "start": 119676, + "end": 119677, "loc": { "start": { - "line": 2999, - "column": 41 + "line": 3006, + "column": 66 }, "end": { - "line": 2999, - "column": 42 + "line": 3006, + "column": 67 } } }, @@ -402836,42 +406071,43 @@ "postfix": false, "binop": null }, - "value": "composeMat4", - "start": 119182, - "end": 119193, + "value": "cfg", + "start": 119678, + "end": 119681, "loc": { "start": { - "line": 2999, - "column": 42 + "line": 3006, + "column": 68 }, "end": { - "line": 2999, - "column": 53 + "line": 3006, + "column": 71 } } }, { "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": 119193, - "end": 119194, + "start": 119681, + "end": 119682, "loc": { "start": { - "line": 2999, - "column": 53 + "line": 3006, + "column": 71 }, "end": { - "line": 2999, - "column": 54 + "line": 3006, + "column": 72 } } }, @@ -402887,23 +406123,23 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 119194, - "end": 119202, + "value": "quaternion", + "start": 119682, + "end": 119692, "loc": { "start": { - "line": 2999, - "column": 54 + "line": 3006, + "column": 72 }, "end": { - "line": 2999, - "column": 62 + "line": 3006, + "column": 82 } } }, { "type": { - "label": ",", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -402911,19 +406147,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 119202, - "end": 119203, + "value": "||", + "start": 119693, + "end": 119695, "loc": { "start": { - "line": 2999, - "column": 62 + "line": 3006, + "column": 83 }, "end": { - "line": 2999, - "column": 63 + "line": 3006, + "column": 85 } } }, @@ -402940,16 +406177,16 @@ "binop": null }, "value": "DEFAULT_QUATERNION", - "start": 119204, - "end": 119222, + "start": 119696, + "end": 119714, "loc": { "start": { - "line": 2999, - "column": 64 + "line": 3006, + "column": 86 }, "end": { - "line": 2999, - "column": 82 + "line": 3006, + "column": 104 } } }, @@ -402966,16 +406203,16 @@ "binop": null, "updateContext": null }, - "start": 119222, - "end": 119223, + "start": 119714, + "end": 119715, "loc": { "start": { - "line": 2999, - "column": 82 + "line": 3006, + "column": 104 }, "end": { - "line": 2999, - "column": 83 + "line": 3006, + "column": 105 } } }, @@ -402992,16 +406229,16 @@ "binop": null }, "value": "scale", - "start": 119224, - "end": 119229, + "start": 119716, + "end": 119721, "loc": { "start": { - "line": 2999, - "column": 84 + "line": 3006, + "column": 106 }, "end": { - "line": 2999, - "column": 89 + "line": 3006, + "column": 111 } } }, @@ -403018,16 +406255,16 @@ "binop": null, "updateContext": null }, - "start": 119229, - "end": 119230, + "start": 119721, + "end": 119722, "loc": { "start": { - "line": 2999, - "column": 89 + "line": 3006, + "column": 111 }, "end": { - "line": 2999, - "column": 90 + "line": 3006, + "column": 112 } } }, @@ -403044,16 +406281,16 @@ "binop": null }, "value": "math", - "start": 119231, - "end": 119235, + "start": 119723, + "end": 119727, "loc": { "start": { - "line": 2999, - "column": 91 + "line": 3006, + "column": 113 }, "end": { - "line": 2999, - "column": 95 + "line": 3006, + "column": 117 } } }, @@ -403070,16 +406307,16 @@ "binop": null, "updateContext": null }, - "start": 119235, - "end": 119236, + "start": 119727, + "end": 119728, "loc": { "start": { - "line": 2999, - "column": 95 + "line": 3006, + "column": 117 }, "end": { - "line": 2999, - "column": 96 + "line": 3006, + "column": 118 } } }, @@ -403096,16 +406333,16 @@ "binop": null }, "value": "mat4", - "start": 119236, - "end": 119240, + "start": 119728, + "end": 119732, "loc": { "start": { - "line": 2999, - "column": 96 + "line": 3006, + "column": 118 }, "end": { - "line": 2999, - "column": 100 + "line": 3006, + "column": 122 } } }, @@ -403121,16 +406358,16 @@ "postfix": false, "binop": null }, - "start": 119240, - "end": 119241, + "start": 119732, + "end": 119733, "loc": { "start": { - "line": 2999, - "column": 100 + "line": 3006, + "column": 122 }, "end": { - "line": 2999, - "column": 101 + "line": 3006, + "column": 123 } } }, @@ -403146,16 +406383,16 @@ "postfix": false, "binop": null }, - "start": 119241, - "end": 119242, + "start": 119733, + "end": 119734, "loc": { "start": { - "line": 2999, - "column": 101 + "line": 3006, + "column": 123 }, "end": { - "line": 2999, - "column": 102 + "line": 3006, + "column": 124 } } }, @@ -403171,16 +406408,16 @@ "postfix": false, "binop": null }, - "start": 119242, - "end": 119243, + "start": 119734, + "end": 119735, "loc": { "start": { - "line": 2999, - "column": 102 + "line": 3006, + "column": 124 }, "end": { - "line": 2999, - "column": 103 + "line": 3006, + "column": 125 } } }, @@ -403197,16 +406434,16 @@ "binop": null, "updateContext": null }, - "start": 119243, - "end": 119244, + "start": 119735, + "end": 119736, "loc": { "start": { - "line": 2999, - "column": 103 + "line": 3006, + "column": 125 }, "end": { - "line": 2999, - "column": 104 + "line": 3006, + "column": 126 } } }, @@ -403222,15 +406459,40 @@ "postfix": false, "binop": null }, - "start": 119261, - "end": 119262, + "start": 119757, + "end": 119758, "loc": { "start": { - "line": 3000, + "line": 3007, + "column": 20 + }, + "end": { + "line": 3007, + "column": 21 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 119775, + "end": 119776, + "loc": { + "start": { + "line": 3008, "column": 16 }, "end": { - "line": 3000, + "line": 3008, "column": 17 } } @@ -403248,15 +406510,15 @@ "binop": null }, "value": "math", - "start": 119280, - "end": 119284, + "start": 119794, + "end": 119798, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 16 }, "end": { - "line": 3002, + "line": 3010, "column": 20 } } @@ -403274,15 +406536,15 @@ "binop": null, "updateContext": null }, - "start": 119284, - "end": 119285, + "start": 119798, + "end": 119799, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 20 }, "end": { - "line": 3002, + "line": 3010, "column": 21 } } @@ -403300,15 +406562,15 @@ "binop": null }, "value": "AABB3ToOBB3", - "start": 119285, - "end": 119296, + "start": 119799, + "end": 119810, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 21 }, "end": { - "line": 3002, + "line": 3010, "column": 32 } } @@ -403325,15 +406587,15 @@ "postfix": false, "binop": null }, - "start": 119296, - "end": 119297, + "start": 119810, + "end": 119811, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 32 }, "end": { - "line": 3002, + "line": 3010, "column": 33 } } @@ -403351,15 +406613,15 @@ "binop": null }, "value": "cfg", - "start": 119297, - "end": 119300, + "start": 119811, + "end": 119814, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 33 }, "end": { - "line": 3002, + "line": 3010, "column": 36 } } @@ -403377,15 +406639,15 @@ "binop": null, "updateContext": null }, - "start": 119300, - "end": 119301, + "start": 119814, + "end": 119815, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 36 }, "end": { - "line": 3002, + "line": 3010, "column": 37 } } @@ -403403,15 +406665,15 @@ "binop": null }, "value": "geometry", - "start": 119301, - "end": 119309, + "start": 119815, + "end": 119823, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 37 }, "end": { - "line": 3002, + "line": 3010, "column": 45 } } @@ -403429,15 +406691,15 @@ "binop": null, "updateContext": null }, - "start": 119309, - "end": 119310, + "start": 119823, + "end": 119824, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 45 }, "end": { - "line": 3002, + "line": 3010, "column": 46 } } @@ -403455,15 +406717,15 @@ "binop": null }, "value": "aabb", - "start": 119310, - "end": 119314, + "start": 119824, + "end": 119828, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 46 }, "end": { - "line": 3002, + "line": 3010, "column": 50 } } @@ -403481,15 +406743,15 @@ "binop": null, "updateContext": null }, - "start": 119314, - "end": 119315, + "start": 119828, + "end": 119829, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 50 }, "end": { - "line": 3002, + "line": 3010, "column": 51 } } @@ -403507,15 +406769,15 @@ "binop": null }, "value": "tempOBB3", - "start": 119316, - "end": 119324, + "start": 119830, + "end": 119838, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 52 }, "end": { - "line": 3002, + "line": 3010, "column": 60 } } @@ -403532,15 +406794,15 @@ "postfix": false, "binop": null }, - "start": 119324, - "end": 119325, + "start": 119838, + "end": 119839, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 60 }, "end": { - "line": 3002, + "line": 3010, "column": 61 } } @@ -403558,15 +406820,15 @@ "binop": null, "updateContext": null }, - "start": 119325, - "end": 119326, + "start": 119839, + "end": 119840, "loc": { "start": { - "line": 3002, + "line": 3010, "column": 61 }, "end": { - "line": 3002, + "line": 3010, "column": 62 } } @@ -403584,15 +406846,15 @@ "binop": null }, "value": "math", - "start": 119343, - "end": 119347, + "start": 119857, + "end": 119861, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 16 }, "end": { - "line": 3003, + "line": 3011, "column": 20 } } @@ -403610,15 +406872,15 @@ "binop": null, "updateContext": null }, - "start": 119347, - "end": 119348, + "start": 119861, + "end": 119862, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 20 }, "end": { - "line": 3003, + "line": 3011, "column": 21 } } @@ -403636,15 +406898,15 @@ "binop": null }, "value": "transformOBB3", - "start": 119348, - "end": 119361, + "start": 119862, + "end": 119875, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 21 }, "end": { - "line": 3003, + "line": 3011, "column": 34 } } @@ -403661,15 +406923,15 @@ "postfix": false, "binop": null }, - "start": 119361, - "end": 119362, + "start": 119875, + "end": 119876, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 34 }, "end": { - "line": 3003, + "line": 3011, "column": 35 } } @@ -403687,15 +406949,15 @@ "binop": null }, "value": "cfg", - "start": 119362, - "end": 119365, + "start": 119876, + "end": 119879, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 35 }, "end": { - "line": 3003, + "line": 3011, "column": 38 } } @@ -403713,15 +406975,15 @@ "binop": null, "updateContext": null }, - "start": 119365, - "end": 119366, + "start": 119879, + "end": 119880, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 38 }, "end": { - "line": 3003, + "line": 3011, "column": 39 } } @@ -403739,15 +407001,15 @@ "binop": null }, "value": "meshMatrix", - "start": 119366, - "end": 119376, + "start": 119880, + "end": 119890, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 39 }, "end": { - "line": 3003, + "line": 3011, "column": 49 } } @@ -403765,15 +407027,15 @@ "binop": null, "updateContext": null }, - "start": 119376, - "end": 119377, + "start": 119890, + "end": 119891, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 49 }, "end": { - "line": 3003, + "line": 3011, "column": 50 } } @@ -403791,15 +407053,15 @@ "binop": null }, "value": "tempOBB3", - "start": 119378, - "end": 119386, + "start": 119892, + "end": 119900, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 51 }, "end": { - "line": 3003, + "line": 3011, "column": 59 } } @@ -403816,15 +407078,15 @@ "postfix": false, "binop": null }, - "start": 119386, - "end": 119387, + "start": 119900, + "end": 119901, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 59 }, "end": { - "line": 3003, + "line": 3011, "column": 60 } } @@ -403842,15 +407104,15 @@ "binop": null, "updateContext": null }, - "start": 119387, - "end": 119388, + "start": 119901, + "end": 119902, "loc": { "start": { - "line": 3003, + "line": 3011, "column": 60 }, "end": { - "line": 3003, + "line": 3011, "column": 61 } } @@ -403868,15 +407130,15 @@ "binop": null }, "value": "cfg", - "start": 119405, - "end": 119408, + "start": 119919, + "end": 119922, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 16 }, "end": { - "line": 3004, + "line": 3012, "column": 19 } } @@ -403894,15 +407156,15 @@ "binop": null, "updateContext": null }, - "start": 119408, - "end": 119409, + "start": 119922, + "end": 119923, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 19 }, "end": { - "line": 3004, + "line": 3012, "column": 20 } } @@ -403920,15 +407182,15 @@ "binop": null }, "value": "aabb", - "start": 119409, - "end": 119413, + "start": 119923, + "end": 119927, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 20 }, "end": { - "line": 3004, + "line": 3012, "column": 24 } } @@ -403947,15 +407209,15 @@ "updateContext": null }, "value": "=", - "start": 119414, - "end": 119415, + "start": 119928, + "end": 119929, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 25 }, "end": { - "line": 3004, + "line": 3012, "column": 26 } } @@ -403973,15 +407235,15 @@ "binop": null }, "value": "math", - "start": 119416, - "end": 119420, + "start": 119930, + "end": 119934, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 27 }, "end": { - "line": 3004, + "line": 3012, "column": 31 } } @@ -403999,15 +407261,15 @@ "binop": null, "updateContext": null }, - "start": 119420, - "end": 119421, + "start": 119934, + "end": 119935, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 31 }, "end": { - "line": 3004, + "line": 3012, "column": 32 } } @@ -404025,15 +407287,15 @@ "binop": null }, "value": "OBB3ToAABB3", - "start": 119421, - "end": 119432, + "start": 119935, + "end": 119946, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 32 }, "end": { - "line": 3004, + "line": 3012, "column": 43 } } @@ -404050,15 +407312,15 @@ "postfix": false, "binop": null }, - "start": 119432, - "end": 119433, + "start": 119946, + "end": 119947, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 43 }, "end": { - "line": 3004, + "line": 3012, "column": 44 } } @@ -404076,15 +407338,15 @@ "binop": null }, "value": "tempOBB3", - "start": 119433, - "end": 119441, + "start": 119947, + "end": 119955, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 44 }, "end": { - "line": 3004, + "line": 3012, "column": 52 } } @@ -404102,15 +407364,15 @@ "binop": null, "updateContext": null }, - "start": 119441, - "end": 119442, + "start": 119955, + "end": 119956, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 52 }, "end": { - "line": 3004, + "line": 3012, "column": 53 } } @@ -404128,15 +407390,15 @@ "binop": null }, "value": "math", - "start": 119443, - "end": 119447, + "start": 119957, + "end": 119961, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 54 }, "end": { - "line": 3004, + "line": 3012, "column": 58 } } @@ -404154,15 +407416,15 @@ "binop": null, "updateContext": null }, - "start": 119447, - "end": 119448, + "start": 119961, + "end": 119962, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 58 }, "end": { - "line": 3004, + "line": 3012, "column": 59 } } @@ -404180,15 +407442,15 @@ "binop": null }, "value": "AABB3", - "start": 119448, - "end": 119453, + "start": 119962, + "end": 119967, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 59 }, "end": { - "line": 3004, + "line": 3012, "column": 64 } } @@ -404205,15 +407467,15 @@ "postfix": false, "binop": null }, - "start": 119453, - "end": 119454, + "start": 119967, + "end": 119968, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 64 }, "end": { - "line": 3004, + "line": 3012, "column": 65 } } @@ -404230,15 +407492,15 @@ "postfix": false, "binop": null }, - "start": 119454, - "end": 119455, + "start": 119968, + "end": 119969, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 65 }, "end": { - "line": 3004, + "line": 3012, "column": 66 } } @@ -404255,15 +407517,15 @@ "postfix": false, "binop": null }, - "start": 119455, - "end": 119456, + "start": 119969, + "end": 119970, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 66 }, "end": { - "line": 3004, + "line": 3012, "column": 67 } } @@ -404281,15 +407543,15 @@ "binop": null, "updateContext": null }, - "start": 119456, - "end": 119457, + "start": 119970, + "end": 119971, "loc": { "start": { - "line": 3004, + "line": 3012, "column": 67 }, "end": { - "line": 3004, + "line": 3012, "column": 68 } } @@ -404306,15 +407568,15 @@ "postfix": false, "binop": null }, - "start": 119470, - "end": 119471, + "start": 119984, + "end": 119985, "loc": { "start": { - "line": 3005, + "line": 3013, "column": 12 }, "end": { - "line": 3005, + "line": 3013, "column": 13 } } @@ -404334,15 +407596,15 @@ "updateContext": null }, "value": "const", - "start": 119485, - "end": 119490, + "start": 119999, + "end": 120004, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 12 }, "end": { - "line": 3007, + "line": 3015, "column": 17 } } @@ -404360,15 +407622,15 @@ "binop": null }, "value": "useDTX", - "start": 119491, - "end": 119497, + "start": 120005, + "end": 120011, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 18 }, "end": { - "line": 3007, + "line": 3015, "column": 24 } } @@ -404387,15 +407649,15 @@ "updateContext": null }, "value": "=", - "start": 119498, - "end": 119499, + "start": 120012, + "end": 120013, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 25 }, "end": { - "line": 3007, + "line": 3015, "column": 26 } } @@ -404412,15 +407674,15 @@ "postfix": false, "binop": null }, - "start": 119500, - "end": 119501, + "start": 120014, + "end": 120015, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 27 }, "end": { - "line": 3007, + "line": 3015, "column": 28 } } @@ -404439,15 +407701,15 @@ "updateContext": null }, "value": "!", - "start": 119501, - "end": 119502, + "start": 120015, + "end": 120016, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 28 }, "end": { - "line": 3007, + "line": 3015, "column": 29 } } @@ -404466,15 +407728,15 @@ "updateContext": null }, "value": "!", - "start": 119502, - "end": 119503, + "start": 120016, + "end": 120017, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 29 }, "end": { - "line": 3007, + "line": 3015, "column": 30 } } @@ -404494,15 +407756,15 @@ "updateContext": null }, "value": "this", - "start": 119503, - "end": 119507, + "start": 120017, + "end": 120021, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 30 }, "end": { - "line": 3007, + "line": 3015, "column": 34 } } @@ -404520,15 +407782,15 @@ "binop": null, "updateContext": null }, - "start": 119507, - "end": 119508, + "start": 120021, + "end": 120022, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 34 }, "end": { - "line": 3007, + "line": 3015, "column": 35 } } @@ -404546,15 +407808,15 @@ "binop": null }, "value": "_dtxEnabled", - "start": 119508, - "end": 119519, + "start": 120022, + "end": 120033, "loc": { "start": { - "line": 3007, + "line": 3015, "column": 35 }, "end": { - "line": 3007, + "line": 3015, "column": 46 } } @@ -404573,15 +407835,15 @@ "updateContext": null }, "value": "&&", - "start": 119540, - "end": 119542, + "start": 120054, + "end": 120056, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 20 }, "end": { - "line": 3008, + "line": 3016, "column": 22 } } @@ -404598,15 +407860,15 @@ "postfix": false, "binop": null }, - "start": 119543, - "end": 119544, + "start": 120057, + "end": 120058, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 23 }, "end": { - "line": 3008, + "line": 3016, "column": 24 } } @@ -404624,15 +407886,15 @@ "binop": null }, "value": "cfg", - "start": 119544, - "end": 119547, + "start": 120058, + "end": 120061, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 24 }, "end": { - "line": 3008, + "line": 3016, "column": 27 } } @@ -404650,15 +407912,15 @@ "binop": null, "updateContext": null }, - "start": 119547, - "end": 119548, + "start": 120061, + "end": 120062, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 27 }, "end": { - "line": 3008, + "line": 3016, "column": 28 } } @@ -404676,15 +407938,15 @@ "binop": null }, "value": "geometry", - "start": 119548, - "end": 119556, + "start": 120062, + "end": 120070, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 28 }, "end": { - "line": 3008, + "line": 3016, "column": 36 } } @@ -404702,15 +407964,15 @@ "binop": null, "updateContext": null }, - "start": 119556, - "end": 119557, + "start": 120070, + "end": 120071, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 36 }, "end": { - "line": 3008, + "line": 3016, "column": 37 } } @@ -404728,15 +407990,15 @@ "binop": null }, "value": "primitive", - "start": 119557, - "end": 119566, + "start": 120071, + "end": 120080, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 37 }, "end": { - "line": 3008, + "line": 3016, "column": 46 } } @@ -404755,15 +408017,15 @@ "updateContext": null }, "value": "===", - "start": 119567, - "end": 119570, + "start": 120081, + "end": 120084, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 47 }, "end": { - "line": 3008, + "line": 3016, "column": 50 } } @@ -404782,15 +408044,15 @@ "updateContext": null }, "value": "triangles", - "start": 119571, - "end": 119582, + "start": 120085, + "end": 120096, "loc": { "start": { - "line": 3008, + "line": 3016, "column": 51 }, "end": { - "line": 3008, + "line": 3016, "column": 62 } } @@ -404809,15 +408071,15 @@ "updateContext": null }, "value": "||", - "start": 119607, - "end": 119609, + "start": 120121, + "end": 120123, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 24 }, "end": { - "line": 3009, + "line": 3017, "column": 26 } } @@ -404835,15 +408097,15 @@ "binop": null }, "value": "cfg", - "start": 119610, - "end": 119613, + "start": 120124, + "end": 120127, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 27 }, "end": { - "line": 3009, + "line": 3017, "column": 30 } } @@ -404861,15 +408123,15 @@ "binop": null, "updateContext": null }, - "start": 119613, - "end": 119614, + "start": 120127, + "end": 120128, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 30 }, "end": { - "line": 3009, + "line": 3017, "column": 31 } } @@ -404887,15 +408149,15 @@ "binop": null }, "value": "geometry", - "start": 119614, - "end": 119622, + "start": 120128, + "end": 120136, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 31 }, "end": { - "line": 3009, + "line": 3017, "column": 39 } } @@ -404913,15 +408175,15 @@ "binop": null, "updateContext": null }, - "start": 119622, - "end": 119623, + "start": 120136, + "end": 120137, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 39 }, "end": { - "line": 3009, + "line": 3017, "column": 40 } } @@ -404939,15 +408201,15 @@ "binop": null }, "value": "primitive", - "start": 119623, - "end": 119632, + "start": 120137, + "end": 120146, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 40 }, "end": { - "line": 3009, + "line": 3017, "column": 49 } } @@ -404966,15 +408228,15 @@ "updateContext": null }, "value": "===", - "start": 119633, - "end": 119636, + "start": 120147, + "end": 120150, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 50 }, "end": { - "line": 3009, + "line": 3017, "column": 53 } } @@ -404993,15 +408255,15 @@ "updateContext": null }, "value": "solid", - "start": 119637, - "end": 119644, + "start": 120151, + "end": 120158, "loc": { "start": { - "line": 3009, + "line": 3017, "column": 54 }, "end": { - "line": 3009, + "line": 3017, "column": 61 } } @@ -405020,15 +408282,15 @@ "updateContext": null }, "value": "||", - "start": 119669, - "end": 119671, + "start": 120183, + "end": 120185, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 24 }, "end": { - "line": 3010, + "line": 3018, "column": 26 } } @@ -405046,15 +408308,15 @@ "binop": null }, "value": "cfg", - "start": 119672, - "end": 119675, + "start": 120186, + "end": 120189, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 27 }, "end": { - "line": 3010, + "line": 3018, "column": 30 } } @@ -405072,15 +408334,15 @@ "binop": null, "updateContext": null }, - "start": 119675, - "end": 119676, + "start": 120189, + "end": 120190, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 30 }, "end": { - "line": 3010, + "line": 3018, "column": 31 } } @@ -405098,15 +408360,15 @@ "binop": null }, "value": "geometry", - "start": 119676, - "end": 119684, + "start": 120190, + "end": 120198, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 31 }, "end": { - "line": 3010, + "line": 3018, "column": 39 } } @@ -405124,15 +408386,15 @@ "binop": null, "updateContext": null }, - "start": 119684, - "end": 119685, + "start": 120198, + "end": 120199, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 39 }, "end": { - "line": 3010, + "line": 3018, "column": 40 } } @@ -405150,15 +408412,15 @@ "binop": null }, "value": "primitive", - "start": 119685, - "end": 119694, + "start": 120199, + "end": 120208, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 40 }, "end": { - "line": 3010, + "line": 3018, "column": 49 } } @@ -405177,15 +408439,15 @@ "updateContext": null }, "value": "===", - "start": 119695, - "end": 119698, + "start": 120209, + "end": 120212, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 50 }, "end": { - "line": 3010, + "line": 3018, "column": 53 } } @@ -405204,15 +408466,15 @@ "updateContext": null }, "value": "surface", - "start": 119699, - "end": 119708, + "start": 120213, + "end": 120222, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 54 }, "end": { - "line": 3010, + "line": 3018, "column": 63 } } @@ -405229,15 +408491,15 @@ "postfix": false, "binop": null }, - "start": 119708, - "end": 119709, + "start": 120222, + "end": 120223, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 63 }, "end": { - "line": 3010, + "line": 3018, "column": 64 } } @@ -405254,15 +408516,15 @@ "postfix": false, "binop": null }, - "start": 119709, - "end": 119710, + "start": 120223, + "end": 120224, "loc": { "start": { - "line": 3010, + "line": 3018, "column": 64 }, "end": { - "line": 3010, + "line": 3018, "column": 65 } } @@ -405281,15 +408543,15 @@ "updateContext": null }, "value": "&&", - "start": 119727, - "end": 119729, + "start": 120241, + "end": 120243, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 16 }, "end": { - "line": 3011, + "line": 3019, "column": 18 } } @@ -405306,15 +408568,15 @@ "postfix": false, "binop": null }, - "start": 119730, - "end": 119731, + "start": 120244, + "end": 120245, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 19 }, "end": { - "line": 3011, + "line": 3019, "column": 20 } } @@ -405333,15 +408595,15 @@ "updateContext": null }, "value": "!", - "start": 119731, - "end": 119732, + "start": 120245, + "end": 120246, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 20 }, "end": { - "line": 3011, + "line": 3019, "column": 21 } } @@ -405359,15 +408621,15 @@ "binop": null }, "value": "cfg", - "start": 119732, - "end": 119735, + "start": 120246, + "end": 120249, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 21 }, "end": { - "line": 3011, + "line": 3019, "column": 24 } } @@ -405385,15 +408647,15 @@ "binop": null, "updateContext": null }, - "start": 119735, - "end": 119736, + "start": 120249, + "end": 120250, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 24 }, "end": { - "line": 3011, + "line": 3019, "column": 25 } } @@ -405411,15 +408673,15 @@ "binop": null }, "value": "textureSetId", - "start": 119736, - "end": 119748, + "start": 120250, + "end": 120262, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 25 }, "end": { - "line": 3011, + "line": 3019, "column": 37 } } @@ -405436,15 +408698,15 @@ "postfix": false, "binop": null }, - "start": 119748, - "end": 119749, + "start": 120262, + "end": 120263, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 37 }, "end": { - "line": 3011, + "line": 3019, "column": 38 } } @@ -405462,15 +408724,15 @@ "binop": null, "updateContext": null }, - "start": 119749, - "end": 119750, + "start": 120263, + "end": 120264, "loc": { "start": { - "line": 3011, + "line": 3019, "column": 38 }, "end": { - "line": 3011, + "line": 3019, "column": 39 } } @@ -405490,15 +408752,15 @@ "updateContext": null }, "value": "if", - "start": 119764, - "end": 119766, + "start": 120278, + "end": 120280, "loc": { "start": { - "line": 3013, + "line": 3021, "column": 12 }, "end": { - "line": 3013, + "line": 3021, "column": 14 } } @@ -405515,15 +408777,15 @@ "postfix": false, "binop": null }, - "start": 119767, - "end": 119768, + "start": 120281, + "end": 120282, "loc": { "start": { - "line": 3013, + "line": 3021, "column": 15 }, "end": { - "line": 3013, + "line": 3021, "column": 16 } } @@ -405541,15 +408803,15 @@ "binop": null }, "value": "useDTX", - "start": 119768, - "end": 119774, + "start": 120282, + "end": 120288, "loc": { "start": { - "line": 3013, + "line": 3021, "column": 16 }, "end": { - "line": 3013, + "line": 3021, "column": 22 } } @@ -405566,15 +408828,15 @@ "postfix": false, "binop": null }, - "start": 119774, - "end": 119775, + "start": 120288, + "end": 120289, "loc": { "start": { - "line": 3013, + "line": 3021, "column": 22 }, "end": { - "line": 3013, + "line": 3021, "column": 23 } } @@ -405591,15 +408853,15 @@ "postfix": false, "binop": null }, - "start": 119776, - "end": 119777, + "start": 120290, + "end": 120291, "loc": { "start": { - "line": 3013, + "line": 3021, "column": 24 }, "end": { - "line": 3013, + "line": 3021, "column": 25 } } @@ -405607,15 +408869,15 @@ { "type": "CommentLine", "value": " DTX", - "start": 119795, - "end": 119801, + "start": 120309, + "end": 120315, "loc": { "start": { - "line": 3015, + "line": 3023, "column": 16 }, "end": { - "line": 3015, + "line": 3023, "column": 22 } } @@ -405633,15 +408895,15 @@ "binop": null }, "value": "cfg", - "start": 119819, - "end": 119822, + "start": 120333, + "end": 120336, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 16 }, "end": { - "line": 3017, + "line": 3025, "column": 19 } } @@ -405659,15 +408921,15 @@ "binop": null, "updateContext": null }, - "start": 119822, - "end": 119823, + "start": 120336, + "end": 120337, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 19 }, "end": { - "line": 3017, + "line": 3025, "column": 20 } } @@ -405685,15 +408947,15 @@ "binop": null }, "value": "type", - "start": 119823, - "end": 119827, + "start": 120337, + "end": 120341, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 20 }, "end": { - "line": 3017, + "line": 3025, "column": 24 } } @@ -405712,15 +408974,15 @@ "updateContext": null }, "value": "=", - "start": 119828, - "end": 119829, + "start": 120342, + "end": 120343, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 25 }, "end": { - "line": 3017, + "line": 3025, "column": 26 } } @@ -405738,15 +409000,15 @@ "binop": null }, "value": "DTX", - "start": 119830, - "end": 119833, + "start": 120344, + "end": 120347, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 27 }, "end": { - "line": 3017, + "line": 3025, "column": 30 } } @@ -405764,15 +409026,15 @@ "binop": null, "updateContext": null }, - "start": 119833, - "end": 119834, + "start": 120347, + "end": 120348, "loc": { "start": { - "line": 3017, + "line": 3025, "column": 30 }, "end": { - "line": 3017, + "line": 3025, "column": 31 } } @@ -405780,15 +409042,15 @@ { "type": "CommentLine", "value": " NPR", - "start": 119852, - "end": 119858, + "start": 120366, + "end": 120372, "loc": { "start": { - "line": 3019, + "line": 3027, "column": 16 }, "end": { - "line": 3019, + "line": 3027, "column": 22 } } @@ -405806,15 +409068,15 @@ "binop": null }, "value": "cfg", - "start": 119876, - "end": 119879, + "start": 120390, + "end": 120393, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 16 }, "end": { - "line": 3021, + "line": 3029, "column": 19 } } @@ -405832,15 +409094,15 @@ "binop": null, "updateContext": null }, - "start": 119879, - "end": 119880, + "start": 120393, + "end": 120394, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 19 }, "end": { - "line": 3021, + "line": 3029, "column": 20 } } @@ -405858,15 +409120,15 @@ "binop": null }, "value": "color", - "start": 119880, - "end": 119885, + "start": 120394, + "end": 120399, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 20 }, "end": { - "line": 3021, + "line": 3029, "column": 25 } } @@ -405885,15 +409147,15 @@ "updateContext": null }, "value": "=", - "start": 119886, - "end": 119887, + "start": 120400, + "end": 120401, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 26 }, "end": { - "line": 3021, + "line": 3029, "column": 27 } } @@ -405910,15 +409172,15 @@ "postfix": false, "binop": null }, - "start": 119888, - "end": 119889, + "start": 120402, + "end": 120403, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 28 }, "end": { - "line": 3021, + "line": 3029, "column": 29 } } @@ -405936,15 +409198,15 @@ "binop": null }, "value": "cfg", - "start": 119889, - "end": 119892, + "start": 120403, + "end": 120406, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 29 }, "end": { - "line": 3021, + "line": 3029, "column": 32 } } @@ -405962,15 +409224,15 @@ "binop": null, "updateContext": null }, - "start": 119892, - "end": 119893, + "start": 120406, + "end": 120407, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 32 }, "end": { - "line": 3021, + "line": 3029, "column": 33 } } @@ -405988,15 +409250,15 @@ "binop": null }, "value": "color", - "start": 119893, - "end": 119898, + "start": 120407, + "end": 120412, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 33 }, "end": { - "line": 3021, + "line": 3029, "column": 38 } } @@ -406013,15 +409275,15 @@ "postfix": false, "binop": null }, - "start": 119898, - "end": 119899, + "start": 120412, + "end": 120413, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 38 }, "end": { - "line": 3021, + "line": 3029, "column": 39 } } @@ -406039,15 +409301,15 @@ "binop": null, "updateContext": null }, - "start": 119900, - "end": 119901, + "start": 120414, + "end": 120415, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 40 }, "end": { - "line": 3021, + "line": 3029, "column": 41 } } @@ -406067,15 +409329,15 @@ "updateContext": null }, "value": "new", - "start": 119902, - "end": 119905, + "start": 120416, + "end": 120419, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 42 }, "end": { - "line": 3021, + "line": 3029, "column": 45 } } @@ -406093,15 +409355,15 @@ "binop": null }, "value": "Uint8Array", - "start": 119906, - "end": 119916, + "start": 120420, + "end": 120430, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 46 }, "end": { - "line": 3021, + "line": 3029, "column": 56 } } @@ -406118,15 +409380,15 @@ "postfix": false, "binop": null }, - "start": 119916, - "end": 119917, + "start": 120430, + "end": 120431, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 56 }, "end": { - "line": 3021, + "line": 3029, "column": 57 } } @@ -406144,15 +409406,15 @@ "binop": null, "updateContext": null }, - "start": 119917, - "end": 119918, + "start": 120431, + "end": 120432, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 57 }, "end": { - "line": 3021, + "line": 3029, "column": 58 } } @@ -406170,15 +409432,15 @@ "binop": null }, "value": "Math", - "start": 119918, - "end": 119922, + "start": 120432, + "end": 120436, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 58 }, "end": { - "line": 3021, + "line": 3029, "column": 62 } } @@ -406196,15 +409458,15 @@ "binop": null, "updateContext": null }, - "start": 119922, - "end": 119923, + "start": 120436, + "end": 120437, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 62 }, "end": { - "line": 3021, + "line": 3029, "column": 63 } } @@ -406222,15 +409484,15 @@ "binop": null }, "value": "floor", - "start": 119923, - "end": 119928, + "start": 120437, + "end": 120442, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 63 }, "end": { - "line": 3021, + "line": 3029, "column": 68 } } @@ -406247,15 +409509,15 @@ "postfix": false, "binop": null }, - "start": 119928, - "end": 119929, + "start": 120442, + "end": 120443, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 68 }, "end": { - "line": 3021, + "line": 3029, "column": 69 } } @@ -406273,15 +409535,15 @@ "binop": null }, "value": "cfg", - "start": 119929, - "end": 119932, + "start": 120443, + "end": 120446, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 69 }, "end": { - "line": 3021, + "line": 3029, "column": 72 } } @@ -406299,15 +409561,15 @@ "binop": null, "updateContext": null }, - "start": 119932, - "end": 119933, + "start": 120446, + "end": 120447, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 72 }, "end": { - "line": 3021, + "line": 3029, "column": 73 } } @@ -406325,15 +409587,15 @@ "binop": null }, "value": "color", - "start": 119933, - "end": 119938, + "start": 120447, + "end": 120452, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 73 }, "end": { - "line": 3021, + "line": 3029, "column": 78 } } @@ -406351,15 +409613,15 @@ "binop": null, "updateContext": null }, - "start": 119938, - "end": 119939, + "start": 120452, + "end": 120453, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 78 }, "end": { - "line": 3021, + "line": 3029, "column": 79 } } @@ -406378,15 +409640,15 @@ "updateContext": null }, "value": 0, - "start": 119939, - "end": 119940, + "start": 120453, + "end": 120454, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 79 }, "end": { - "line": 3021, + "line": 3029, "column": 80 } } @@ -406404,15 +409666,15 @@ "binop": null, "updateContext": null }, - "start": 119940, - "end": 119941, + "start": 120454, + "end": 120455, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 80 }, "end": { - "line": 3021, + "line": 3029, "column": 81 } } @@ -406431,15 +409693,15 @@ "updateContext": null }, "value": "*", - "start": 119942, - "end": 119943, + "start": 120456, + "end": 120457, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 82 }, "end": { - "line": 3021, + "line": 3029, "column": 83 } } @@ -406458,15 +409720,15 @@ "updateContext": null }, "value": 255, - "start": 119944, - "end": 119947, + "start": 120458, + "end": 120461, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 84 }, "end": { - "line": 3021, + "line": 3029, "column": 87 } } @@ -406483,15 +409745,15 @@ "postfix": false, "binop": null }, - "start": 119947, - "end": 119948, + "start": 120461, + "end": 120462, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 87 }, "end": { - "line": 3021, + "line": 3029, "column": 88 } } @@ -406509,15 +409771,15 @@ "binop": null, "updateContext": null }, - "start": 119948, - "end": 119949, + "start": 120462, + "end": 120463, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 88 }, "end": { - "line": 3021, + "line": 3029, "column": 89 } } @@ -406535,15 +409797,15 @@ "binop": null }, "value": "Math", - "start": 119950, - "end": 119954, + "start": 120464, + "end": 120468, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 90 }, "end": { - "line": 3021, + "line": 3029, "column": 94 } } @@ -406561,15 +409823,15 @@ "binop": null, "updateContext": null }, - "start": 119954, - "end": 119955, + "start": 120468, + "end": 120469, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 94 }, "end": { - "line": 3021, + "line": 3029, "column": 95 } } @@ -406587,15 +409849,15 @@ "binop": null }, "value": "floor", - "start": 119955, - "end": 119960, + "start": 120469, + "end": 120474, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 95 }, "end": { - "line": 3021, + "line": 3029, "column": 100 } } @@ -406612,15 +409874,15 @@ "postfix": false, "binop": null }, - "start": 119960, - "end": 119961, + "start": 120474, + "end": 120475, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 100 }, "end": { - "line": 3021, + "line": 3029, "column": 101 } } @@ -406638,15 +409900,15 @@ "binop": null }, "value": "cfg", - "start": 119961, - "end": 119964, + "start": 120475, + "end": 120478, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 101 }, "end": { - "line": 3021, + "line": 3029, "column": 104 } } @@ -406664,15 +409926,15 @@ "binop": null, "updateContext": null }, - "start": 119964, - "end": 119965, + "start": 120478, + "end": 120479, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 104 }, "end": { - "line": 3021, + "line": 3029, "column": 105 } } @@ -406690,15 +409952,15 @@ "binop": null }, "value": "color", - "start": 119965, - "end": 119970, + "start": 120479, + "end": 120484, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 105 }, "end": { - "line": 3021, + "line": 3029, "column": 110 } } @@ -406716,15 +409978,15 @@ "binop": null, "updateContext": null }, - "start": 119970, - "end": 119971, + "start": 120484, + "end": 120485, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 110 }, "end": { - "line": 3021, + "line": 3029, "column": 111 } } @@ -406743,15 +410005,15 @@ "updateContext": null }, "value": 1, - "start": 119971, - "end": 119972, + "start": 120485, + "end": 120486, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 111 }, "end": { - "line": 3021, + "line": 3029, "column": 112 } } @@ -406769,15 +410031,15 @@ "binop": null, "updateContext": null }, - "start": 119972, - "end": 119973, + "start": 120486, + "end": 120487, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 112 }, "end": { - "line": 3021, + "line": 3029, "column": 113 } } @@ -406796,15 +410058,15 @@ "updateContext": null }, "value": "*", - "start": 119974, - "end": 119975, + "start": 120488, + "end": 120489, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 114 }, "end": { - "line": 3021, + "line": 3029, "column": 115 } } @@ -406823,15 +410085,15 @@ "updateContext": null }, "value": 255, - "start": 119976, - "end": 119979, + "start": 120490, + "end": 120493, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 116 }, "end": { - "line": 3021, + "line": 3029, "column": 119 } } @@ -406848,15 +410110,15 @@ "postfix": false, "binop": null }, - "start": 119979, - "end": 119980, + "start": 120493, + "end": 120494, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 119 }, "end": { - "line": 3021, + "line": 3029, "column": 120 } } @@ -406874,15 +410136,15 @@ "binop": null, "updateContext": null }, - "start": 119980, - "end": 119981, + "start": 120494, + "end": 120495, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 120 }, "end": { - "line": 3021, + "line": 3029, "column": 121 } } @@ -406900,15 +410162,15 @@ "binop": null }, "value": "Math", - "start": 119982, - "end": 119986, + "start": 120496, + "end": 120500, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 122 }, "end": { - "line": 3021, + "line": 3029, "column": 126 } } @@ -406926,15 +410188,15 @@ "binop": null, "updateContext": null }, - "start": 119986, - "end": 119987, + "start": 120500, + "end": 120501, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 126 }, "end": { - "line": 3021, + "line": 3029, "column": 127 } } @@ -406952,15 +410214,15 @@ "binop": null }, "value": "floor", - "start": 119987, - "end": 119992, + "start": 120501, + "end": 120506, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 127 }, "end": { - "line": 3021, + "line": 3029, "column": 132 } } @@ -406977,15 +410239,15 @@ "postfix": false, "binop": null }, - "start": 119992, - "end": 119993, + "start": 120506, + "end": 120507, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 132 }, "end": { - "line": 3021, + "line": 3029, "column": 133 } } @@ -407003,15 +410265,15 @@ "binop": null }, "value": "cfg", - "start": 119993, - "end": 119996, + "start": 120507, + "end": 120510, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 133 }, "end": { - "line": 3021, + "line": 3029, "column": 136 } } @@ -407029,15 +410291,15 @@ "binop": null, "updateContext": null }, - "start": 119996, - "end": 119997, + "start": 120510, + "end": 120511, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 136 }, "end": { - "line": 3021, + "line": 3029, "column": 137 } } @@ -407055,15 +410317,15 @@ "binop": null }, "value": "color", - "start": 119997, - "end": 120002, + "start": 120511, + "end": 120516, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 137 }, "end": { - "line": 3021, + "line": 3029, "column": 142 } } @@ -407081,15 +410343,15 @@ "binop": null, "updateContext": null }, - "start": 120002, - "end": 120003, + "start": 120516, + "end": 120517, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 142 }, "end": { - "line": 3021, + "line": 3029, "column": 143 } } @@ -407108,15 +410370,15 @@ "updateContext": null }, "value": 2, - "start": 120003, - "end": 120004, + "start": 120517, + "end": 120518, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 143 }, "end": { - "line": 3021, + "line": 3029, "column": 144 } } @@ -407134,15 +410396,15 @@ "binop": null, "updateContext": null }, - "start": 120004, - "end": 120005, + "start": 120518, + "end": 120519, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 144 }, "end": { - "line": 3021, + "line": 3029, "column": 145 } } @@ -407161,15 +410423,15 @@ "updateContext": null }, "value": "*", - "start": 120006, - "end": 120007, + "start": 120520, + "end": 120521, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 146 }, "end": { - "line": 3021, + "line": 3029, "column": 147 } } @@ -407188,15 +410450,15 @@ "updateContext": null }, "value": 255, - "start": 120008, - "end": 120011, + "start": 120522, + "end": 120525, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 148 }, "end": { - "line": 3021, + "line": 3029, "column": 151 } } @@ -407213,15 +410475,15 @@ "postfix": false, "binop": null }, - "start": 120011, - "end": 120012, + "start": 120525, + "end": 120526, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 151 }, "end": { - "line": 3021, + "line": 3029, "column": 152 } } @@ -407239,15 +410501,15 @@ "binop": null, "updateContext": null }, - "start": 120012, - "end": 120013, + "start": 120526, + "end": 120527, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 152 }, "end": { - "line": 3021, + "line": 3029, "column": 153 } } @@ -407264,15 +410526,15 @@ "postfix": false, "binop": null }, - "start": 120013, - "end": 120014, + "start": 120527, + "end": 120528, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 153 }, "end": { - "line": 3021, + "line": 3029, "column": 154 } } @@ -407290,15 +410552,15 @@ "binop": null, "updateContext": null }, - "start": 120015, - "end": 120016, + "start": 120529, + "end": 120530, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 155 }, "end": { - "line": 3021, + "line": 3029, "column": 156 } } @@ -407316,15 +410578,15 @@ "binop": null }, "value": "defaultCompressedColor", - "start": 120017, - "end": 120039, + "start": 120531, + "end": 120553, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 157 }, "end": { - "line": 3021, + "line": 3029, "column": 179 } } @@ -407342,15 +410604,15 @@ "binop": null, "updateContext": null }, - "start": 120039, - "end": 120040, + "start": 120553, + "end": 120554, "loc": { "start": { - "line": 3021, + "line": 3029, "column": 179 }, "end": { - "line": 3021, + "line": 3029, "column": 180 } } @@ -407368,15 +410630,15 @@ "binop": null }, "value": "cfg", - "start": 120057, - "end": 120060, + "start": 120571, + "end": 120574, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 16 }, "end": { - "line": 3022, + "line": 3030, "column": 19 } } @@ -407394,15 +410656,15 @@ "binop": null, "updateContext": null }, - "start": 120060, - "end": 120061, + "start": 120574, + "end": 120575, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 19 }, "end": { - "line": 3022, + "line": 3030, "column": 20 } } @@ -407420,15 +410682,15 @@ "binop": null }, "value": "opacity", - "start": 120061, - "end": 120068, + "start": 120575, + "end": 120582, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 20 }, "end": { - "line": 3022, + "line": 3030, "column": 27 } } @@ -407447,15 +410709,15 @@ "updateContext": null }, "value": "=", - "start": 120069, - "end": 120070, + "start": 120583, + "end": 120584, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 28 }, "end": { - "line": 3022, + "line": 3030, "column": 29 } } @@ -407472,15 +410734,15 @@ "postfix": false, "binop": null }, - "start": 120071, - "end": 120072, + "start": 120585, + "end": 120586, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 30 }, "end": { - "line": 3022, + "line": 3030, "column": 31 } } @@ -407498,15 +410760,15 @@ "binop": null }, "value": "cfg", - "start": 120072, - "end": 120075, + "start": 120586, + "end": 120589, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 31 }, "end": { - "line": 3022, + "line": 3030, "column": 34 } } @@ -407524,15 +410786,15 @@ "binop": null, "updateContext": null }, - "start": 120075, - "end": 120076, + "start": 120589, + "end": 120590, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 34 }, "end": { - "line": 3022, + "line": 3030, "column": 35 } } @@ -407550,15 +410812,15 @@ "binop": null }, "value": "opacity", - "start": 120076, - "end": 120083, + "start": 120590, + "end": 120597, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 35 }, "end": { - "line": 3022, + "line": 3030, "column": 42 } } @@ -407577,15 +410839,15 @@ "updateContext": null }, "value": "!==", - "start": 120084, - "end": 120087, + "start": 120598, + "end": 120601, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 43 }, "end": { - "line": 3022, + "line": 3030, "column": 46 } } @@ -407603,15 +410865,15 @@ "binop": null }, "value": "undefined", - "start": 120088, - "end": 120097, + "start": 120602, + "end": 120611, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 47 }, "end": { - "line": 3022, + "line": 3030, "column": 56 } } @@ -407630,15 +410892,15 @@ "updateContext": null }, "value": "&&", - "start": 120098, - "end": 120100, + "start": 120612, + "end": 120614, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 57 }, "end": { - "line": 3022, + "line": 3030, "column": 59 } } @@ -407656,15 +410918,15 @@ "binop": null }, "value": "cfg", - "start": 120101, - "end": 120104, + "start": 120615, + "end": 120618, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 60 }, "end": { - "line": 3022, + "line": 3030, "column": 63 } } @@ -407682,15 +410944,15 @@ "binop": null, "updateContext": null }, - "start": 120104, - "end": 120105, + "start": 120618, + "end": 120619, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 63 }, "end": { - "line": 3022, + "line": 3030, "column": 64 } } @@ -407708,15 +410970,15 @@ "binop": null }, "value": "opacity", - "start": 120105, - "end": 120112, + "start": 120619, + "end": 120626, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 64 }, "end": { - "line": 3022, + "line": 3030, "column": 71 } } @@ -407735,15 +410997,15 @@ "updateContext": null }, "value": "!==", - "start": 120113, - "end": 120116, + "start": 120627, + "end": 120630, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 72 }, "end": { - "line": 3022, + "line": 3030, "column": 75 } } @@ -407763,15 +411025,15 @@ "updateContext": null }, "value": "null", - "start": 120117, - "end": 120121, + "start": 120631, + "end": 120635, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 76 }, "end": { - "line": 3022, + "line": 3030, "column": 80 } } @@ -407788,15 +411050,15 @@ "postfix": false, "binop": null }, - "start": 120121, - "end": 120122, + "start": 120635, + "end": 120636, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 80 }, "end": { - "line": 3022, + "line": 3030, "column": 81 } } @@ -407814,15 +411076,15 @@ "binop": null, "updateContext": null }, - "start": 120123, - "end": 120124, + "start": 120637, + "end": 120638, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 82 }, "end": { - "line": 3022, + "line": 3030, "column": 83 } } @@ -407840,15 +411102,15 @@ "binop": null }, "value": "Math", - "start": 120125, - "end": 120129, + "start": 120639, + "end": 120643, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 84 }, "end": { - "line": 3022, + "line": 3030, "column": 88 } } @@ -407866,15 +411128,15 @@ "binop": null, "updateContext": null }, - "start": 120129, - "end": 120130, + "start": 120643, + "end": 120644, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 88 }, "end": { - "line": 3022, + "line": 3030, "column": 89 } } @@ -407892,15 +411154,15 @@ "binop": null }, "value": "floor", - "start": 120130, - "end": 120135, + "start": 120644, + "end": 120649, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 89 }, "end": { - "line": 3022, + "line": 3030, "column": 94 } } @@ -407917,15 +411179,15 @@ "postfix": false, "binop": null }, - "start": 120135, - "end": 120136, + "start": 120649, + "end": 120650, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 94 }, "end": { - "line": 3022, + "line": 3030, "column": 95 } } @@ -407943,15 +411205,15 @@ "binop": null }, "value": "cfg", - "start": 120136, - "end": 120139, + "start": 120650, + "end": 120653, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 95 }, "end": { - "line": 3022, + "line": 3030, "column": 98 } } @@ -407969,15 +411231,15 @@ "binop": null, "updateContext": null }, - "start": 120139, - "end": 120140, + "start": 120653, + "end": 120654, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 98 }, "end": { - "line": 3022, + "line": 3030, "column": 99 } } @@ -407995,15 +411257,15 @@ "binop": null }, "value": "opacity", - "start": 120140, - "end": 120147, + "start": 120654, + "end": 120661, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 99 }, "end": { - "line": 3022, + "line": 3030, "column": 106 } } @@ -408022,15 +411284,15 @@ "updateContext": null }, "value": "*", - "start": 120148, - "end": 120149, + "start": 120662, + "end": 120663, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 107 }, "end": { - "line": 3022, + "line": 3030, "column": 108 } } @@ -408049,15 +411311,15 @@ "updateContext": null }, "value": 255, - "start": 120150, - "end": 120153, + "start": 120664, + "end": 120667, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 109 }, "end": { - "line": 3022, + "line": 3030, "column": 112 } } @@ -408074,15 +411336,15 @@ "postfix": false, "binop": null }, - "start": 120153, - "end": 120154, + "start": 120667, + "end": 120668, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 112 }, "end": { - "line": 3022, + "line": 3030, "column": 113 } } @@ -408100,15 +411362,15 @@ "binop": null, "updateContext": null }, - "start": 120155, - "end": 120156, + "start": 120669, + "end": 120670, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 114 }, "end": { - "line": 3022, + "line": 3030, "column": 115 } } @@ -408127,15 +411389,15 @@ "updateContext": null }, "value": 255, - "start": 120157, - "end": 120160, + "start": 120671, + "end": 120674, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 116 }, "end": { - "line": 3022, + "line": 3030, "column": 119 } } @@ -408153,15 +411415,15 @@ "binop": null, "updateContext": null }, - "start": 120160, - "end": 120161, + "start": 120674, + "end": 120675, "loc": { "start": { - "line": 3022, + "line": 3030, "column": 119 }, "end": { - "line": 3022, + "line": 3030, "column": 120 } } @@ -408169,15 +411431,15 @@ { "type": "CommentLine", "value": " BUCKETING - lazy generated, reused", - "start": 120179, - "end": 120216, + "start": 120693, + "end": 120730, "loc": { "start": { - "line": 3024, + "line": 3032, "column": 16 }, "end": { - "line": 3024, + "line": 3032, "column": 53 } } @@ -408197,15 +411459,15 @@ "updateContext": null }, "value": "let", - "start": 120234, - "end": 120237, + "start": 120748, + "end": 120751, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 16 }, "end": { - "line": 3026, + "line": 3034, "column": 19 } } @@ -408223,15 +411485,15 @@ "binop": null }, "value": "buckets", - "start": 120238, - "end": 120245, + "start": 120752, + "end": 120759, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 20 }, "end": { - "line": 3026, + "line": 3034, "column": 27 } } @@ -408250,15 +411512,15 @@ "updateContext": null }, "value": "=", - "start": 120246, - "end": 120247, + "start": 120760, + "end": 120761, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 28 }, "end": { - "line": 3026, + "line": 3034, "column": 29 } } @@ -408278,15 +411540,15 @@ "updateContext": null }, "value": "this", - "start": 120248, - "end": 120252, + "start": 120762, + "end": 120766, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 30 }, "end": { - "line": 3026, + "line": 3034, "column": 34 } } @@ -408304,15 +411566,15 @@ "binop": null, "updateContext": null }, - "start": 120252, - "end": 120253, + "start": 120766, + "end": 120767, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 34 }, "end": { - "line": 3026, + "line": 3034, "column": 35 } } @@ -408330,15 +411592,15 @@ "binop": null }, "value": "_dtxBuckets", - "start": 120253, - "end": 120264, + "start": 120767, + "end": 120778, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 35 }, "end": { - "line": 3026, + "line": 3034, "column": 46 } } @@ -408356,15 +411618,15 @@ "binop": null, "updateContext": null }, - "start": 120264, - "end": 120265, + "start": 120778, + "end": 120779, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 46 }, "end": { - "line": 3026, + "line": 3034, "column": 47 } } @@ -408382,15 +411644,15 @@ "binop": null }, "value": "cfg", - "start": 120265, - "end": 120268, + "start": 120779, + "end": 120782, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 47 }, "end": { - "line": 3026, + "line": 3034, "column": 50 } } @@ -408408,15 +411670,15 @@ "binop": null, "updateContext": null }, - "start": 120268, - "end": 120269, + "start": 120782, + "end": 120783, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 50 }, "end": { - "line": 3026, + "line": 3034, "column": 51 } } @@ -408434,15 +411696,15 @@ "binop": null }, "value": "geometryId", - "start": 120269, - "end": 120279, + "start": 120783, + "end": 120793, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 51 }, "end": { - "line": 3026, + "line": 3034, "column": 61 } } @@ -408460,15 +411722,15 @@ "binop": null, "updateContext": null }, - "start": 120279, - "end": 120280, + "start": 120793, + "end": 120794, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 61 }, "end": { - "line": 3026, + "line": 3034, "column": 62 } } @@ -408486,15 +411748,15 @@ "binop": null, "updateContext": null }, - "start": 120280, - "end": 120281, + "start": 120794, + "end": 120795, "loc": { "start": { - "line": 3026, + "line": 3034, "column": 62 }, "end": { - "line": 3026, + "line": 3034, "column": 63 } } @@ -408514,15 +411776,15 @@ "updateContext": null }, "value": "if", - "start": 120298, - "end": 120300, + "start": 120812, + "end": 120814, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 16 }, "end": { - "line": 3027, + "line": 3035, "column": 18 } } @@ -408539,15 +411801,15 @@ "postfix": false, "binop": null }, - "start": 120301, - "end": 120302, + "start": 120815, + "end": 120816, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 19 }, "end": { - "line": 3027, + "line": 3035, "column": 20 } } @@ -408566,15 +411828,15 @@ "updateContext": null }, "value": "!", - "start": 120302, - "end": 120303, + "start": 120816, + "end": 120817, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 20 }, "end": { - "line": 3027, + "line": 3035, "column": 21 } } @@ -408592,15 +411854,15 @@ "binop": null }, "value": "buckets", - "start": 120303, - "end": 120310, + "start": 120817, + "end": 120824, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 21 }, "end": { - "line": 3027, + "line": 3035, "column": 28 } } @@ -408617,15 +411879,15 @@ "postfix": false, "binop": null }, - "start": 120310, - "end": 120311, + "start": 120824, + "end": 120825, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 28 }, "end": { - "line": 3027, + "line": 3035, "column": 29 } } @@ -408642,15 +411904,15 @@ "postfix": false, "binop": null }, - "start": 120312, - "end": 120313, + "start": 120826, + "end": 120827, "loc": { "start": { - "line": 3027, + "line": 3035, "column": 30 }, "end": { - "line": 3027, + "line": 3035, "column": 31 } } @@ -408668,15 +411930,15 @@ "binop": null }, "value": "buckets", - "start": 120334, - "end": 120341, + "start": 120848, + "end": 120855, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 20 }, "end": { - "line": 3028, + "line": 3036, "column": 27 } } @@ -408695,15 +411957,15 @@ "updateContext": null }, "value": "=", - "start": 120342, - "end": 120343, + "start": 120856, + "end": 120857, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 28 }, "end": { - "line": 3028, + "line": 3036, "column": 29 } } @@ -408721,15 +411983,15 @@ "binop": null }, "value": "createDTXBuckets", - "start": 120344, - "end": 120360, + "start": 120858, + "end": 120874, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 30 }, "end": { - "line": 3028, + "line": 3036, "column": 46 } } @@ -408746,15 +412008,15 @@ "postfix": false, "binop": null }, - "start": 120360, - "end": 120361, + "start": 120874, + "end": 120875, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 46 }, "end": { - "line": 3028, + "line": 3036, "column": 47 } } @@ -408772,15 +412034,15 @@ "binop": null }, "value": "cfg", - "start": 120361, - "end": 120364, + "start": 120875, + "end": 120878, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 47 }, "end": { - "line": 3028, + "line": 3036, "column": 50 } } @@ -408798,15 +412060,15 @@ "binop": null, "updateContext": null }, - "start": 120364, - "end": 120365, + "start": 120878, + "end": 120879, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 50 }, "end": { - "line": 3028, + "line": 3036, "column": 51 } } @@ -408824,15 +412086,15 @@ "binop": null }, "value": "geometry", - "start": 120365, - "end": 120373, + "start": 120879, + "end": 120887, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 51 }, "end": { - "line": 3028, + "line": 3036, "column": 59 } } @@ -408850,15 +412112,15 @@ "binop": null, "updateContext": null }, - "start": 120373, - "end": 120374, + "start": 120887, + "end": 120888, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 59 }, "end": { - "line": 3028, + "line": 3036, "column": 60 } } @@ -408878,15 +412140,15 @@ "updateContext": null }, "value": "this", - "start": 120375, - "end": 120379, + "start": 120889, + "end": 120893, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 61 }, "end": { - "line": 3028, + "line": 3036, "column": 65 } } @@ -408904,15 +412166,15 @@ "binop": null, "updateContext": null }, - "start": 120379, - "end": 120380, + "start": 120893, + "end": 120894, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 65 }, "end": { - "line": 3028, + "line": 3036, "column": 66 } } @@ -408930,15 +412192,15 @@ "binop": null }, "value": "_enableVertexWelding", - "start": 120380, - "end": 120400, + "start": 120894, + "end": 120914, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 66 }, "end": { - "line": 3028, + "line": 3036, "column": 86 } } @@ -408956,15 +412218,15 @@ "binop": null, "updateContext": null }, - "start": 120400, - "end": 120401, + "start": 120914, + "end": 120915, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 86 }, "end": { - "line": 3028, + "line": 3036, "column": 87 } } @@ -408984,15 +412246,15 @@ "updateContext": null }, "value": "this", - "start": 120402, - "end": 120406, + "start": 120916, + "end": 120920, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 88 }, "end": { - "line": 3028, + "line": 3036, "column": 92 } } @@ -409010,15 +412272,15 @@ "binop": null, "updateContext": null }, - "start": 120406, - "end": 120407, + "start": 120920, + "end": 120921, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 92 }, "end": { - "line": 3028, + "line": 3036, "column": 93 } } @@ -409036,15 +412298,15 @@ "binop": null }, "value": "_enableIndexBucketing", - "start": 120407, - "end": 120428, + "start": 120921, + "end": 120942, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 93 }, "end": { - "line": 3028, + "line": 3036, "column": 114 } } @@ -409061,15 +412323,15 @@ "postfix": false, "binop": null }, - "start": 120428, - "end": 120429, + "start": 120942, + "end": 120943, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 114 }, "end": { - "line": 3028, + "line": 3036, "column": 115 } } @@ -409087,15 +412349,15 @@ "binop": null, "updateContext": null }, - "start": 120429, - "end": 120430, + "start": 120943, + "end": 120944, "loc": { "start": { - "line": 3028, + "line": 3036, "column": 115 }, "end": { - "line": 3028, + "line": 3036, "column": 116 } } @@ -409115,15 +412377,15 @@ "updateContext": null }, "value": "this", - "start": 120451, - "end": 120455, + "start": 120965, + "end": 120969, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 20 }, "end": { - "line": 3029, + "line": 3037, "column": 24 } } @@ -409141,15 +412403,15 @@ "binop": null, "updateContext": null }, - "start": 120455, - "end": 120456, + "start": 120969, + "end": 120970, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 24 }, "end": { - "line": 3029, + "line": 3037, "column": 25 } } @@ -409167,15 +412429,15 @@ "binop": null }, "value": "_dtxBuckets", - "start": 120456, - "end": 120467, + "start": 120970, + "end": 120981, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 25 }, "end": { - "line": 3029, + "line": 3037, "column": 36 } } @@ -409193,15 +412455,15 @@ "binop": null, "updateContext": null }, - "start": 120467, - "end": 120468, + "start": 120981, + "end": 120982, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 36 }, "end": { - "line": 3029, + "line": 3037, "column": 37 } } @@ -409219,15 +412481,15 @@ "binop": null }, "value": "cfg", - "start": 120468, - "end": 120471, + "start": 120982, + "end": 120985, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 37 }, "end": { - "line": 3029, + "line": 3037, "column": 40 } } @@ -409245,15 +412507,15 @@ "binop": null, "updateContext": null }, - "start": 120471, - "end": 120472, + "start": 120985, + "end": 120986, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 40 }, "end": { - "line": 3029, + "line": 3037, "column": 41 } } @@ -409271,15 +412533,15 @@ "binop": null }, "value": "geometryId", - "start": 120472, - "end": 120482, + "start": 120986, + "end": 120996, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 41 }, "end": { - "line": 3029, + "line": 3037, "column": 51 } } @@ -409297,15 +412559,15 @@ "binop": null, "updateContext": null }, - "start": 120482, - "end": 120483, + "start": 120996, + "end": 120997, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 51 }, "end": { - "line": 3029, + "line": 3037, "column": 52 } } @@ -409324,15 +412586,15 @@ "updateContext": null }, "value": "=", - "start": 120484, - "end": 120485, + "start": 120998, + "end": 120999, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 53 }, "end": { - "line": 3029, + "line": 3037, "column": 54 } } @@ -409350,15 +412612,15 @@ "binop": null }, "value": "buckets", - "start": 120486, - "end": 120493, + "start": 121000, + "end": 121007, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 55 }, "end": { - "line": 3029, + "line": 3037, "column": 62 } } @@ -409376,15 +412638,15 @@ "binop": null, "updateContext": null }, - "start": 120493, - "end": 120494, + "start": 121007, + "end": 121008, "loc": { "start": { - "line": 3029, + "line": 3037, "column": 62 }, "end": { - "line": 3029, + "line": 3037, "column": 63 } } @@ -409401,15 +412663,15 @@ "postfix": false, "binop": null }, - "start": 120511, - "end": 120512, + "start": 121025, + "end": 121026, "loc": { "start": { - "line": 3030, + "line": 3038, "column": 16 }, "end": { - "line": 3030, + "line": 3038, "column": 17 } } @@ -409427,15 +412689,15 @@ "binop": null }, "value": "cfg", - "start": 120529, - "end": 120532, + "start": 121043, + "end": 121046, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 16 }, "end": { - "line": 3031, + "line": 3039, "column": 19 } } @@ -409453,15 +412715,15 @@ "binop": null, "updateContext": null }, - "start": 120532, - "end": 120533, + "start": 121046, + "end": 121047, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 19 }, "end": { - "line": 3031, + "line": 3039, "column": 20 } } @@ -409479,15 +412741,15 @@ "binop": null }, "value": "buckets", - "start": 120533, - "end": 120540, + "start": 121047, + "end": 121054, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 20 }, "end": { - "line": 3031, + "line": 3039, "column": 27 } } @@ -409506,15 +412768,15 @@ "updateContext": null }, "value": "=", - "start": 120541, - "end": 120542, + "start": 121055, + "end": 121056, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 28 }, "end": { - "line": 3031, + "line": 3039, "column": 29 } } @@ -409532,15 +412794,15 @@ "binop": null }, "value": "buckets", - "start": 120543, - "end": 120550, + "start": 121057, + "end": 121064, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 30 }, "end": { - "line": 3031, + "line": 3039, "column": 37 } } @@ -409558,15 +412820,15 @@ "binop": null, "updateContext": null }, - "start": 120550, - "end": 120551, + "start": 121064, + "end": 121065, "loc": { "start": { - "line": 3031, + "line": 3039, "column": 37 }, "end": { - "line": 3031, + "line": 3039, "column": 38 } } @@ -409583,15 +412845,15 @@ "postfix": false, "binop": null }, - "start": 120565, - "end": 120566, + "start": 121079, + "end": 121080, "loc": { "start": { - "line": 3033, + "line": 3041, "column": 12 }, "end": { - "line": 3033, + "line": 3041, "column": 13 } } @@ -409611,15 +412873,15 @@ "updateContext": null }, "value": "else", - "start": 120567, - "end": 120571, + "start": 121081, + "end": 121085, "loc": { "start": { - "line": 3033, + "line": 3041, "column": 14 }, "end": { - "line": 3033, + "line": 3041, "column": 18 } } @@ -409636,15 +412898,15 @@ "postfix": false, "binop": null }, - "start": 120572, - "end": 120573, + "start": 121086, + "end": 121087, "loc": { "start": { - "line": 3033, + "line": 3041, "column": 19 }, "end": { - "line": 3033, + "line": 3041, "column": 20 } } @@ -409652,15 +412914,15 @@ { "type": "CommentLine", "value": " VBO", - "start": 120591, - "end": 120597, + "start": 121105, + "end": 121111, "loc": { "start": { - "line": 3035, + "line": 3043, "column": 16 }, "end": { - "line": 3035, + "line": 3043, "column": 22 } } @@ -409678,15 +412940,15 @@ "binop": null }, "value": "cfg", - "start": 120615, - "end": 120618, + "start": 121129, + "end": 121132, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 16 }, "end": { - "line": 3037, + "line": 3045, "column": 19 } } @@ -409704,15 +412966,15 @@ "binop": null, "updateContext": null }, - "start": 120618, - "end": 120619, + "start": 121132, + "end": 121133, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 19 }, "end": { - "line": 3037, + "line": 3045, "column": 20 } } @@ -409730,15 +412992,15 @@ "binop": null }, "value": "type", - "start": 120619, - "end": 120623, + "start": 121133, + "end": 121137, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 20 }, "end": { - "line": 3037, + "line": 3045, "column": 24 } } @@ -409757,15 +413019,15 @@ "updateContext": null }, "value": "=", - "start": 120624, - "end": 120625, + "start": 121138, + "end": 121139, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 25 }, "end": { - "line": 3037, + "line": 3045, "column": 26 } } @@ -409783,15 +413045,15 @@ "binop": null }, "value": "VBO_INSTANCED", - "start": 120626, - "end": 120639, + "start": 121140, + "end": 121153, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 27 }, "end": { - "line": 3037, + "line": 3045, "column": 40 } } @@ -409809,15 +413071,15 @@ "binop": null, "updateContext": null }, - "start": 120639, - "end": 120640, + "start": 121153, + "end": 121154, "loc": { "start": { - "line": 3037, + "line": 3045, "column": 40 }, "end": { - "line": 3037, + "line": 3045, "column": 41 } } @@ -409825,15 +413087,15 @@ { "type": "CommentLine", "value": " PBR", - "start": 120658, - "end": 120664, + "start": 121172, + "end": 121178, "loc": { "start": { - "line": 3039, + "line": 3047, "column": 16 }, "end": { - "line": 3039, + "line": 3047, "column": 22 } } @@ -409851,15 +413113,15 @@ "binop": null }, "value": "cfg", - "start": 120682, - "end": 120685, + "start": 121196, + "end": 121199, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 16 }, "end": { - "line": 3041, + "line": 3049, "column": 19 } } @@ -409877,15 +413139,15 @@ "binop": null, "updateContext": null }, - "start": 120685, - "end": 120686, + "start": 121199, + "end": 121200, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 19 }, "end": { - "line": 3041, + "line": 3049, "column": 20 } } @@ -409903,15 +413165,15 @@ "binop": null }, "value": "color", - "start": 120686, - "end": 120691, + "start": 121200, + "end": 121205, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 20 }, "end": { - "line": 3041, + "line": 3049, "column": 25 } } @@ -409930,15 +413192,15 @@ "updateContext": null }, "value": "=", - "start": 120692, - "end": 120693, + "start": 121206, + "end": 121207, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 26 }, "end": { - "line": 3041, + "line": 3049, "column": 27 } } @@ -409955,15 +413217,15 @@ "postfix": false, "binop": null }, - "start": 120694, - "end": 120695, + "start": 121208, + "end": 121209, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 28 }, "end": { - "line": 3041, + "line": 3049, "column": 29 } } @@ -409981,15 +413243,15 @@ "binop": null }, "value": "cfg", - "start": 120695, - "end": 120698, + "start": 121209, + "end": 121212, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 29 }, "end": { - "line": 3041, + "line": 3049, "column": 32 } } @@ -410007,15 +413269,15 @@ "binop": null, "updateContext": null }, - "start": 120698, - "end": 120699, + "start": 121212, + "end": 121213, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 32 }, "end": { - "line": 3041, + "line": 3049, "column": 33 } } @@ -410033,15 +413295,15 @@ "binop": null }, "value": "color", - "start": 120699, - "end": 120704, + "start": 121213, + "end": 121218, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 33 }, "end": { - "line": 3041, + "line": 3049, "column": 38 } } @@ -410058,15 +413320,15 @@ "postfix": false, "binop": null }, - "start": 120704, - "end": 120705, + "start": 121218, + "end": 121219, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 38 }, "end": { - "line": 3041, + "line": 3049, "column": 39 } } @@ -410084,15 +413346,15 @@ "binop": null, "updateContext": null }, - "start": 120706, - "end": 120707, + "start": 121220, + "end": 121221, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 40 }, "end": { - "line": 3041, + "line": 3049, "column": 41 } } @@ -410112,15 +413374,15 @@ "updateContext": null }, "value": "new", - "start": 120708, - "end": 120711, + "start": 121222, + "end": 121225, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 42 }, "end": { - "line": 3041, + "line": 3049, "column": 45 } } @@ -410138,15 +413400,15 @@ "binop": null }, "value": "Uint8Array", - "start": 120712, - "end": 120722, + "start": 121226, + "end": 121236, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 46 }, "end": { - "line": 3041, + "line": 3049, "column": 56 } } @@ -410163,15 +413425,15 @@ "postfix": false, "binop": null }, - "start": 120722, - "end": 120723, + "start": 121236, + "end": 121237, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 56 }, "end": { - "line": 3041, + "line": 3049, "column": 57 } } @@ -410189,15 +413451,15 @@ "binop": null, "updateContext": null }, - "start": 120723, - "end": 120724, + "start": 121237, + "end": 121238, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 57 }, "end": { - "line": 3041, + "line": 3049, "column": 58 } } @@ -410215,15 +413477,15 @@ "binop": null }, "value": "Math", - "start": 120724, - "end": 120728, + "start": 121238, + "end": 121242, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 58 }, "end": { - "line": 3041, + "line": 3049, "column": 62 } } @@ -410241,15 +413503,15 @@ "binop": null, "updateContext": null }, - "start": 120728, - "end": 120729, + "start": 121242, + "end": 121243, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 62 }, "end": { - "line": 3041, + "line": 3049, "column": 63 } } @@ -410267,15 +413529,15 @@ "binop": null }, "value": "floor", - "start": 120729, - "end": 120734, + "start": 121243, + "end": 121248, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 63 }, "end": { - "line": 3041, + "line": 3049, "column": 68 } } @@ -410292,15 +413554,15 @@ "postfix": false, "binop": null }, - "start": 120734, - "end": 120735, + "start": 121248, + "end": 121249, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 68 }, "end": { - "line": 3041, + "line": 3049, "column": 69 } } @@ -410318,15 +413580,15 @@ "binop": null }, "value": "cfg", - "start": 120735, - "end": 120738, + "start": 121249, + "end": 121252, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 69 }, "end": { - "line": 3041, + "line": 3049, "column": 72 } } @@ -410344,15 +413606,15 @@ "binop": null, "updateContext": null }, - "start": 120738, - "end": 120739, + "start": 121252, + "end": 121253, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 72 }, "end": { - "line": 3041, + "line": 3049, "column": 73 } } @@ -410370,15 +413632,15 @@ "binop": null }, "value": "color", - "start": 120739, - "end": 120744, + "start": 121253, + "end": 121258, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 73 }, "end": { - "line": 3041, + "line": 3049, "column": 78 } } @@ -410396,15 +413658,15 @@ "binop": null, "updateContext": null }, - "start": 120744, - "end": 120745, + "start": 121258, + "end": 121259, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 78 }, "end": { - "line": 3041, + "line": 3049, "column": 79 } } @@ -410423,15 +413685,15 @@ "updateContext": null }, "value": 0, - "start": 120745, - "end": 120746, + "start": 121259, + "end": 121260, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 79 }, "end": { - "line": 3041, + "line": 3049, "column": 80 } } @@ -410449,15 +413711,15 @@ "binop": null, "updateContext": null }, - "start": 120746, - "end": 120747, + "start": 121260, + "end": 121261, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 80 }, "end": { - "line": 3041, + "line": 3049, "column": 81 } } @@ -410476,15 +413738,15 @@ "updateContext": null }, "value": "*", - "start": 120748, - "end": 120749, + "start": 121262, + "end": 121263, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 82 }, "end": { - "line": 3041, + "line": 3049, "column": 83 } } @@ -410503,15 +413765,15 @@ "updateContext": null }, "value": 255, - "start": 120750, - "end": 120753, + "start": 121264, + "end": 121267, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 84 }, "end": { - "line": 3041, + "line": 3049, "column": 87 } } @@ -410528,15 +413790,15 @@ "postfix": false, "binop": null }, - "start": 120753, - "end": 120754, + "start": 121267, + "end": 121268, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 87 }, "end": { - "line": 3041, + "line": 3049, "column": 88 } } @@ -410554,15 +413816,15 @@ "binop": null, "updateContext": null }, - "start": 120754, - "end": 120755, + "start": 121268, + "end": 121269, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 88 }, "end": { - "line": 3041, + "line": 3049, "column": 89 } } @@ -410580,15 +413842,15 @@ "binop": null }, "value": "Math", - "start": 120756, - "end": 120760, + "start": 121270, + "end": 121274, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 90 }, "end": { - "line": 3041, + "line": 3049, "column": 94 } } @@ -410606,15 +413868,15 @@ "binop": null, "updateContext": null }, - "start": 120760, - "end": 120761, + "start": 121274, + "end": 121275, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 94 }, "end": { - "line": 3041, + "line": 3049, "column": 95 } } @@ -410632,15 +413894,15 @@ "binop": null }, "value": "floor", - "start": 120761, - "end": 120766, + "start": 121275, + "end": 121280, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 95 }, "end": { - "line": 3041, + "line": 3049, "column": 100 } } @@ -410657,15 +413919,15 @@ "postfix": false, "binop": null }, - "start": 120766, - "end": 120767, + "start": 121280, + "end": 121281, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 100 }, "end": { - "line": 3041, + "line": 3049, "column": 101 } } @@ -410683,15 +413945,15 @@ "binop": null }, "value": "cfg", - "start": 120767, - "end": 120770, + "start": 121281, + "end": 121284, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 101 }, "end": { - "line": 3041, + "line": 3049, "column": 104 } } @@ -410709,15 +413971,15 @@ "binop": null, "updateContext": null }, - "start": 120770, - "end": 120771, + "start": 121284, + "end": 121285, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 104 }, "end": { - "line": 3041, + "line": 3049, "column": 105 } } @@ -410735,15 +413997,15 @@ "binop": null }, "value": "color", - "start": 120771, - "end": 120776, + "start": 121285, + "end": 121290, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 105 }, "end": { - "line": 3041, + "line": 3049, "column": 110 } } @@ -410761,15 +414023,15 @@ "binop": null, "updateContext": null }, - "start": 120776, - "end": 120777, + "start": 121290, + "end": 121291, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 110 }, "end": { - "line": 3041, + "line": 3049, "column": 111 } } @@ -410788,15 +414050,15 @@ "updateContext": null }, "value": 1, - "start": 120777, - "end": 120778, + "start": 121291, + "end": 121292, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 111 }, "end": { - "line": 3041, + "line": 3049, "column": 112 } } @@ -410814,15 +414076,15 @@ "binop": null, "updateContext": null }, - "start": 120778, - "end": 120779, + "start": 121292, + "end": 121293, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 112 }, "end": { - "line": 3041, + "line": 3049, "column": 113 } } @@ -410841,15 +414103,15 @@ "updateContext": null }, "value": "*", - "start": 120780, - "end": 120781, + "start": 121294, + "end": 121295, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 114 }, "end": { - "line": 3041, + "line": 3049, "column": 115 } } @@ -410868,15 +414130,15 @@ "updateContext": null }, "value": 255, - "start": 120782, - "end": 120785, + "start": 121296, + "end": 121299, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 116 }, "end": { - "line": 3041, + "line": 3049, "column": 119 } } @@ -410893,15 +414155,15 @@ "postfix": false, "binop": null }, - "start": 120785, - "end": 120786, + "start": 121299, + "end": 121300, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 119 }, "end": { - "line": 3041, + "line": 3049, "column": 120 } } @@ -410919,15 +414181,15 @@ "binop": null, "updateContext": null }, - "start": 120786, - "end": 120787, + "start": 121300, + "end": 121301, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 120 }, "end": { - "line": 3041, + "line": 3049, "column": 121 } } @@ -410945,15 +414207,15 @@ "binop": null }, "value": "Math", - "start": 120788, - "end": 120792, + "start": 121302, + "end": 121306, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 122 }, "end": { - "line": 3041, + "line": 3049, "column": 126 } } @@ -410971,15 +414233,15 @@ "binop": null, "updateContext": null }, - "start": 120792, - "end": 120793, + "start": 121306, + "end": 121307, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 126 }, "end": { - "line": 3041, + "line": 3049, "column": 127 } } @@ -410997,15 +414259,15 @@ "binop": null }, "value": "floor", - "start": 120793, - "end": 120798, + "start": 121307, + "end": 121312, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 127 }, "end": { - "line": 3041, + "line": 3049, "column": 132 } } @@ -411022,15 +414284,15 @@ "postfix": false, "binop": null }, - "start": 120798, - "end": 120799, + "start": 121312, + "end": 121313, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 132 }, "end": { - "line": 3041, + "line": 3049, "column": 133 } } @@ -411048,15 +414310,15 @@ "binop": null }, "value": "cfg", - "start": 120799, - "end": 120802, + "start": 121313, + "end": 121316, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 133 }, "end": { - "line": 3041, + "line": 3049, "column": 136 } } @@ -411074,15 +414336,15 @@ "binop": null, "updateContext": null }, - "start": 120802, - "end": 120803, + "start": 121316, + "end": 121317, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 136 }, "end": { - "line": 3041, + "line": 3049, "column": 137 } } @@ -411100,15 +414362,15 @@ "binop": null }, "value": "color", - "start": 120803, - "end": 120808, + "start": 121317, + "end": 121322, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 137 }, "end": { - "line": 3041, + "line": 3049, "column": 142 } } @@ -411126,15 +414388,15 @@ "binop": null, "updateContext": null }, - "start": 120808, - "end": 120809, + "start": 121322, + "end": 121323, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 142 }, "end": { - "line": 3041, + "line": 3049, "column": 143 } } @@ -411153,15 +414415,15 @@ "updateContext": null }, "value": 2, - "start": 120809, - "end": 120810, + "start": 121323, + "end": 121324, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 143 }, "end": { - "line": 3041, + "line": 3049, "column": 144 } } @@ -411179,15 +414441,15 @@ "binop": null, "updateContext": null }, - "start": 120810, - "end": 120811, + "start": 121324, + "end": 121325, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 144 }, "end": { - "line": 3041, + "line": 3049, "column": 145 } } @@ -411206,15 +414468,15 @@ "updateContext": null }, "value": "*", - "start": 120812, - "end": 120813, + "start": 121326, + "end": 121327, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 146 }, "end": { - "line": 3041, + "line": 3049, "column": 147 } } @@ -411233,15 +414495,15 @@ "updateContext": null }, "value": 255, - "start": 120814, - "end": 120817, + "start": 121328, + "end": 121331, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 148 }, "end": { - "line": 3041, + "line": 3049, "column": 151 } } @@ -411258,15 +414520,15 @@ "postfix": false, "binop": null }, - "start": 120817, - "end": 120818, + "start": 121331, + "end": 121332, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 151 }, "end": { - "line": 3041, + "line": 3049, "column": 152 } } @@ -411284,15 +414546,15 @@ "binop": null, "updateContext": null }, - "start": 120818, - "end": 120819, + "start": 121332, + "end": 121333, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 152 }, "end": { - "line": 3041, + "line": 3049, "column": 153 } } @@ -411309,15 +414571,15 @@ "postfix": false, "binop": null }, - "start": 120819, - "end": 120820, + "start": 121333, + "end": 121334, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 153 }, "end": { - "line": 3041, + "line": 3049, "column": 154 } } @@ -411335,15 +414597,15 @@ "binop": null, "updateContext": null }, - "start": 120821, - "end": 120822, + "start": 121335, + "end": 121336, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 155 }, "end": { - "line": 3041, + "line": 3049, "column": 156 } } @@ -411361,15 +414623,15 @@ "binop": null }, "value": "defaultCompressedColor", - "start": 120823, - "end": 120845, + "start": 121337, + "end": 121359, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 157 }, "end": { - "line": 3041, + "line": 3049, "column": 179 } } @@ -411387,15 +414649,15 @@ "binop": null, "updateContext": null }, - "start": 120845, - "end": 120846, + "start": 121359, + "end": 121360, "loc": { "start": { - "line": 3041, + "line": 3049, "column": 179 }, "end": { - "line": 3041, + "line": 3049, "column": 180 } } @@ -411413,15 +414675,15 @@ "binop": null }, "value": "cfg", - "start": 120863, - "end": 120866, + "start": 121377, + "end": 121380, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 16 }, "end": { - "line": 3042, + "line": 3050, "column": 19 } } @@ -411439,15 +414701,15 @@ "binop": null, "updateContext": null }, - "start": 120866, - "end": 120867, + "start": 121380, + "end": 121381, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 19 }, "end": { - "line": 3042, + "line": 3050, "column": 20 } } @@ -411465,15 +414727,15 @@ "binop": null }, "value": "opacity", - "start": 120867, - "end": 120874, + "start": 121381, + "end": 121388, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 20 }, "end": { - "line": 3042, + "line": 3050, "column": 27 } } @@ -411492,15 +414754,15 @@ "updateContext": null }, "value": "=", - "start": 120875, - "end": 120876, + "start": 121389, + "end": 121390, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 28 }, "end": { - "line": 3042, + "line": 3050, "column": 29 } } @@ -411517,15 +414779,15 @@ "postfix": false, "binop": null }, - "start": 120877, - "end": 120878, + "start": 121391, + "end": 121392, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 30 }, "end": { - "line": 3042, + "line": 3050, "column": 31 } } @@ -411543,15 +414805,15 @@ "binop": null }, "value": "cfg", - "start": 120878, - "end": 120881, + "start": 121392, + "end": 121395, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 31 }, "end": { - "line": 3042, + "line": 3050, "column": 34 } } @@ -411569,15 +414831,15 @@ "binop": null, "updateContext": null }, - "start": 120881, - "end": 120882, + "start": 121395, + "end": 121396, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 34 }, "end": { - "line": 3042, + "line": 3050, "column": 35 } } @@ -411595,15 +414857,15 @@ "binop": null }, "value": "opacity", - "start": 120882, - "end": 120889, + "start": 121396, + "end": 121403, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 35 }, "end": { - "line": 3042, + "line": 3050, "column": 42 } } @@ -411622,15 +414884,15 @@ "updateContext": null }, "value": "!==", - "start": 120890, - "end": 120893, + "start": 121404, + "end": 121407, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 43 }, "end": { - "line": 3042, + "line": 3050, "column": 46 } } @@ -411648,15 +414910,15 @@ "binop": null }, "value": "undefined", - "start": 120894, - "end": 120903, + "start": 121408, + "end": 121417, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 47 }, "end": { - "line": 3042, + "line": 3050, "column": 56 } } @@ -411675,15 +414937,15 @@ "updateContext": null }, "value": "&&", - "start": 120904, - "end": 120906, + "start": 121418, + "end": 121420, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 57 }, "end": { - "line": 3042, + "line": 3050, "column": 59 } } @@ -411701,15 +414963,15 @@ "binop": null }, "value": "cfg", - "start": 120907, - "end": 120910, + "start": 121421, + "end": 121424, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 60 }, "end": { - "line": 3042, + "line": 3050, "column": 63 } } @@ -411727,15 +414989,15 @@ "binop": null, "updateContext": null }, - "start": 120910, - "end": 120911, + "start": 121424, + "end": 121425, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 63 }, "end": { - "line": 3042, + "line": 3050, "column": 64 } } @@ -411753,15 +415015,15 @@ "binop": null }, "value": "opacity", - "start": 120911, - "end": 120918, + "start": 121425, + "end": 121432, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 64 }, "end": { - "line": 3042, + "line": 3050, "column": 71 } } @@ -411780,15 +415042,15 @@ "updateContext": null }, "value": "!==", - "start": 120919, - "end": 120922, + "start": 121433, + "end": 121436, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 72 }, "end": { - "line": 3042, + "line": 3050, "column": 75 } } @@ -411808,15 +415070,15 @@ "updateContext": null }, "value": "null", - "start": 120923, - "end": 120927, + "start": 121437, + "end": 121441, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 76 }, "end": { - "line": 3042, + "line": 3050, "column": 80 } } @@ -411833,15 +415095,15 @@ "postfix": false, "binop": null }, - "start": 120927, - "end": 120928, + "start": 121441, + "end": 121442, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 80 }, "end": { - "line": 3042, + "line": 3050, "column": 81 } } @@ -411859,15 +415121,15 @@ "binop": null, "updateContext": null }, - "start": 120929, - "end": 120930, + "start": 121443, + "end": 121444, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 82 }, "end": { - "line": 3042, + "line": 3050, "column": 83 } } @@ -411885,15 +415147,15 @@ "binop": null }, "value": "Math", - "start": 120931, - "end": 120935, + "start": 121445, + "end": 121449, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 84 }, "end": { - "line": 3042, + "line": 3050, "column": 88 } } @@ -411911,15 +415173,15 @@ "binop": null, "updateContext": null }, - "start": 120935, - "end": 120936, + "start": 121449, + "end": 121450, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 88 }, "end": { - "line": 3042, + "line": 3050, "column": 89 } } @@ -411937,15 +415199,15 @@ "binop": null }, "value": "floor", - "start": 120936, - "end": 120941, + "start": 121450, + "end": 121455, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 89 }, "end": { - "line": 3042, + "line": 3050, "column": 94 } } @@ -411962,15 +415224,15 @@ "postfix": false, "binop": null }, - "start": 120941, - "end": 120942, + "start": 121455, + "end": 121456, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 94 }, "end": { - "line": 3042, + "line": 3050, "column": 95 } } @@ -411988,15 +415250,15 @@ "binop": null }, "value": "cfg", - "start": 120942, - "end": 120945, + "start": 121456, + "end": 121459, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 95 }, "end": { - "line": 3042, + "line": 3050, "column": 98 } } @@ -412014,15 +415276,15 @@ "binop": null, "updateContext": null }, - "start": 120945, - "end": 120946, + "start": 121459, + "end": 121460, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 98 }, "end": { - "line": 3042, + "line": 3050, "column": 99 } } @@ -412040,15 +415302,15 @@ "binop": null }, "value": "opacity", - "start": 120946, - "end": 120953, + "start": 121460, + "end": 121467, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 99 }, "end": { - "line": 3042, + "line": 3050, "column": 106 } } @@ -412067,15 +415329,15 @@ "updateContext": null }, "value": "*", - "start": 120954, - "end": 120955, + "start": 121468, + "end": 121469, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 107 }, "end": { - "line": 3042, + "line": 3050, "column": 108 } } @@ -412094,15 +415356,15 @@ "updateContext": null }, "value": 255, - "start": 120956, - "end": 120959, + "start": 121470, + "end": 121473, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 109 }, "end": { - "line": 3042, + "line": 3050, "column": 112 } } @@ -412119,15 +415381,15 @@ "postfix": false, "binop": null }, - "start": 120959, - "end": 120960, + "start": 121473, + "end": 121474, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 112 }, "end": { - "line": 3042, + "line": 3050, "column": 113 } } @@ -412145,15 +415407,15 @@ "binop": null, "updateContext": null }, - "start": 120961, - "end": 120962, + "start": 121475, + "end": 121476, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 114 }, "end": { - "line": 3042, + "line": 3050, "column": 115 } } @@ -412172,15 +415434,15 @@ "updateContext": null }, "value": 255, - "start": 120963, - "end": 120966, + "start": 121477, + "end": 121480, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 116 }, "end": { - "line": 3042, + "line": 3050, "column": 119 } } @@ -412198,15 +415460,15 @@ "binop": null, "updateContext": null }, - "start": 120966, - "end": 120967, + "start": 121480, + "end": 121481, "loc": { "start": { - "line": 3042, + "line": 3050, "column": 119 }, "end": { - "line": 3042, + "line": 3050, "column": 120 } } @@ -412224,15 +415486,15 @@ "binop": null }, "value": "cfg", - "start": 120984, - "end": 120987, + "start": 121498, + "end": 121501, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 16 }, "end": { - "line": 3043, + "line": 3051, "column": 19 } } @@ -412250,15 +415512,15 @@ "binop": null, "updateContext": null }, - "start": 120987, - "end": 120988, + "start": 121501, + "end": 121502, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 19 }, "end": { - "line": 3043, + "line": 3051, "column": 20 } } @@ -412276,15 +415538,15 @@ "binop": null }, "value": "metallic", - "start": 120988, - "end": 120996, + "start": 121502, + "end": 121510, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 20 }, "end": { - "line": 3043, + "line": 3051, "column": 28 } } @@ -412303,15 +415565,15 @@ "updateContext": null }, "value": "=", - "start": 120997, - "end": 120998, + "start": 121511, + "end": 121512, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 29 }, "end": { - "line": 3043, + "line": 3051, "column": 30 } } @@ -412328,15 +415590,15 @@ "postfix": false, "binop": null }, - "start": 120999, - "end": 121000, + "start": 121513, + "end": 121514, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 31 }, "end": { - "line": 3043, + "line": 3051, "column": 32 } } @@ -412354,15 +415616,15 @@ "binop": null }, "value": "cfg", - "start": 121000, - "end": 121003, + "start": 121514, + "end": 121517, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 32 }, "end": { - "line": 3043, + "line": 3051, "column": 35 } } @@ -412380,15 +415642,15 @@ "binop": null, "updateContext": null }, - "start": 121003, - "end": 121004, + "start": 121517, + "end": 121518, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 35 }, "end": { - "line": 3043, + "line": 3051, "column": 36 } } @@ -412406,15 +415668,15 @@ "binop": null }, "value": "metallic", - "start": 121004, - "end": 121012, + "start": 121518, + "end": 121526, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 36 }, "end": { - "line": 3043, + "line": 3051, "column": 44 } } @@ -412433,15 +415695,15 @@ "updateContext": null }, "value": "!==", - "start": 121013, - "end": 121016, + "start": 121527, + "end": 121530, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 45 }, "end": { - "line": 3043, + "line": 3051, "column": 48 } } @@ -412459,15 +415721,15 @@ "binop": null }, "value": "undefined", - "start": 121017, - "end": 121026, + "start": 121531, + "end": 121540, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 49 }, "end": { - "line": 3043, + "line": 3051, "column": 58 } } @@ -412486,15 +415748,15 @@ "updateContext": null }, "value": "&&", - "start": 121027, - "end": 121029, + "start": 121541, + "end": 121543, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 59 }, "end": { - "line": 3043, + "line": 3051, "column": 61 } } @@ -412512,15 +415774,15 @@ "binop": null }, "value": "cfg", - "start": 121030, - "end": 121033, + "start": 121544, + "end": 121547, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 62 }, "end": { - "line": 3043, + "line": 3051, "column": 65 } } @@ -412538,15 +415800,15 @@ "binop": null, "updateContext": null }, - "start": 121033, - "end": 121034, + "start": 121547, + "end": 121548, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 65 }, "end": { - "line": 3043, + "line": 3051, "column": 66 } } @@ -412564,15 +415826,15 @@ "binop": null }, "value": "metallic", - "start": 121034, - "end": 121042, + "start": 121548, + "end": 121556, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 66 }, "end": { - "line": 3043, + "line": 3051, "column": 74 } } @@ -412591,15 +415853,15 @@ "updateContext": null }, "value": "!==", - "start": 121043, - "end": 121046, + "start": 121557, + "end": 121560, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 75 }, "end": { - "line": 3043, + "line": 3051, "column": 78 } } @@ -412619,15 +415881,15 @@ "updateContext": null }, "value": "null", - "start": 121047, - "end": 121051, + "start": 121561, + "end": 121565, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 79 }, "end": { - "line": 3043, + "line": 3051, "column": 83 } } @@ -412644,15 +415906,15 @@ "postfix": false, "binop": null }, - "start": 121051, - "end": 121052, + "start": 121565, + "end": 121566, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 83 }, "end": { - "line": 3043, + "line": 3051, "column": 84 } } @@ -412670,15 +415932,15 @@ "binop": null, "updateContext": null }, - "start": 121053, - "end": 121054, + "start": 121567, + "end": 121568, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 85 }, "end": { - "line": 3043, + "line": 3051, "column": 86 } } @@ -412696,15 +415958,15 @@ "binop": null }, "value": "Math", - "start": 121055, - "end": 121059, + "start": 121569, + "end": 121573, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 87 }, "end": { - "line": 3043, + "line": 3051, "column": 91 } } @@ -412722,15 +415984,15 @@ "binop": null, "updateContext": null }, - "start": 121059, - "end": 121060, + "start": 121573, + "end": 121574, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 91 }, "end": { - "line": 3043, + "line": 3051, "column": 92 } } @@ -412748,15 +416010,15 @@ "binop": null }, "value": "floor", - "start": 121060, - "end": 121065, + "start": 121574, + "end": 121579, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 92 }, "end": { - "line": 3043, + "line": 3051, "column": 97 } } @@ -412773,15 +416035,15 @@ "postfix": false, "binop": null }, - "start": 121065, - "end": 121066, + "start": 121579, + "end": 121580, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 97 }, "end": { - "line": 3043, + "line": 3051, "column": 98 } } @@ -412799,15 +416061,15 @@ "binop": null }, "value": "cfg", - "start": 121066, - "end": 121069, + "start": 121580, + "end": 121583, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 98 }, "end": { - "line": 3043, + "line": 3051, "column": 101 } } @@ -412825,15 +416087,15 @@ "binop": null, "updateContext": null }, - "start": 121069, - "end": 121070, + "start": 121583, + "end": 121584, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 101 }, "end": { - "line": 3043, + "line": 3051, "column": 102 } } @@ -412851,15 +416113,15 @@ "binop": null }, "value": "metallic", - "start": 121070, - "end": 121078, + "start": 121584, + "end": 121592, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 102 }, "end": { - "line": 3043, + "line": 3051, "column": 110 } } @@ -412878,15 +416140,15 @@ "updateContext": null }, "value": "*", - "start": 121079, - "end": 121080, + "start": 121593, + "end": 121594, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 111 }, "end": { - "line": 3043, + "line": 3051, "column": 112 } } @@ -412905,15 +416167,15 @@ "updateContext": null }, "value": 255, - "start": 121081, - "end": 121084, + "start": 121595, + "end": 121598, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 113 }, "end": { - "line": 3043, + "line": 3051, "column": 116 } } @@ -412930,15 +416192,15 @@ "postfix": false, "binop": null }, - "start": 121084, - "end": 121085, + "start": 121598, + "end": 121599, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 116 }, "end": { - "line": 3043, + "line": 3051, "column": 117 } } @@ -412956,15 +416218,15 @@ "binop": null, "updateContext": null }, - "start": 121086, - "end": 121087, + "start": 121600, + "end": 121601, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 118 }, "end": { - "line": 3043, + "line": 3051, "column": 119 } } @@ -412983,15 +416245,15 @@ "updateContext": null }, "value": 0, - "start": 121088, - "end": 121089, + "start": 121602, + "end": 121603, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 120 }, "end": { - "line": 3043, + "line": 3051, "column": 121 } } @@ -413009,15 +416271,15 @@ "binop": null, "updateContext": null }, - "start": 121089, - "end": 121090, + "start": 121603, + "end": 121604, "loc": { "start": { - "line": 3043, + "line": 3051, "column": 121 }, "end": { - "line": 3043, + "line": 3051, "column": 122 } } @@ -413035,15 +416297,15 @@ "binop": null }, "value": "cfg", - "start": 121107, - "end": 121110, + "start": 121621, + "end": 121624, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 16 }, "end": { - "line": 3044, + "line": 3052, "column": 19 } } @@ -413061,15 +416323,15 @@ "binop": null, "updateContext": null }, - "start": 121110, - "end": 121111, + "start": 121624, + "end": 121625, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 19 }, "end": { - "line": 3044, + "line": 3052, "column": 20 } } @@ -413087,15 +416349,15 @@ "binop": null }, "value": "roughness", - "start": 121111, - "end": 121120, + "start": 121625, + "end": 121634, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 20 }, "end": { - "line": 3044, + "line": 3052, "column": 29 } } @@ -413114,15 +416376,15 @@ "updateContext": null }, "value": "=", - "start": 121121, - "end": 121122, + "start": 121635, + "end": 121636, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 30 }, "end": { - "line": 3044, + "line": 3052, "column": 31 } } @@ -413139,15 +416401,15 @@ "postfix": false, "binop": null }, - "start": 121123, - "end": 121124, + "start": 121637, + "end": 121638, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 32 }, "end": { - "line": 3044, + "line": 3052, "column": 33 } } @@ -413165,15 +416427,15 @@ "binop": null }, "value": "cfg", - "start": 121124, - "end": 121127, + "start": 121638, + "end": 121641, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 33 }, "end": { - "line": 3044, + "line": 3052, "column": 36 } } @@ -413191,15 +416453,15 @@ "binop": null, "updateContext": null }, - "start": 121127, - "end": 121128, + "start": 121641, + "end": 121642, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 36 }, "end": { - "line": 3044, + "line": 3052, "column": 37 } } @@ -413217,15 +416479,15 @@ "binop": null }, "value": "roughness", - "start": 121128, - "end": 121137, + "start": 121642, + "end": 121651, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 37 }, "end": { - "line": 3044, + "line": 3052, "column": 46 } } @@ -413244,15 +416506,15 @@ "updateContext": null }, "value": "!==", - "start": 121138, - "end": 121141, + "start": 121652, + "end": 121655, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 47 }, "end": { - "line": 3044, + "line": 3052, "column": 50 } } @@ -413270,15 +416532,15 @@ "binop": null }, "value": "undefined", - "start": 121142, - "end": 121151, + "start": 121656, + "end": 121665, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 51 }, "end": { - "line": 3044, + "line": 3052, "column": 60 } } @@ -413297,15 +416559,15 @@ "updateContext": null }, "value": "&&", - "start": 121152, - "end": 121154, + "start": 121666, + "end": 121668, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 61 }, "end": { - "line": 3044, + "line": 3052, "column": 63 } } @@ -413323,15 +416585,15 @@ "binop": null }, "value": "cfg", - "start": 121155, - "end": 121158, + "start": 121669, + "end": 121672, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 64 }, "end": { - "line": 3044, + "line": 3052, "column": 67 } } @@ -413349,15 +416611,15 @@ "binop": null, "updateContext": null }, - "start": 121158, - "end": 121159, + "start": 121672, + "end": 121673, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 67 }, "end": { - "line": 3044, + "line": 3052, "column": 68 } } @@ -413375,15 +416637,15 @@ "binop": null }, "value": "roughness", - "start": 121159, - "end": 121168, + "start": 121673, + "end": 121682, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 68 }, "end": { - "line": 3044, + "line": 3052, "column": 77 } } @@ -413402,15 +416664,15 @@ "updateContext": null }, "value": "!==", - "start": 121169, - "end": 121172, + "start": 121683, + "end": 121686, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 78 }, "end": { - "line": 3044, + "line": 3052, "column": 81 } } @@ -413430,15 +416692,15 @@ "updateContext": null }, "value": "null", - "start": 121173, - "end": 121177, + "start": 121687, + "end": 121691, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 82 }, "end": { - "line": 3044, + "line": 3052, "column": 86 } } @@ -413455,15 +416717,15 @@ "postfix": false, "binop": null }, - "start": 121177, - "end": 121178, + "start": 121691, + "end": 121692, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 86 }, "end": { - "line": 3044, + "line": 3052, "column": 87 } } @@ -413481,15 +416743,15 @@ "binop": null, "updateContext": null }, - "start": 121179, - "end": 121180, + "start": 121693, + "end": 121694, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 88 }, "end": { - "line": 3044, + "line": 3052, "column": 89 } } @@ -413507,15 +416769,15 @@ "binop": null }, "value": "Math", - "start": 121181, - "end": 121185, + "start": 121695, + "end": 121699, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 90 }, "end": { - "line": 3044, + "line": 3052, "column": 94 } } @@ -413533,15 +416795,15 @@ "binop": null, "updateContext": null }, - "start": 121185, - "end": 121186, + "start": 121699, + "end": 121700, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 94 }, "end": { - "line": 3044, + "line": 3052, "column": 95 } } @@ -413559,15 +416821,15 @@ "binop": null }, "value": "floor", - "start": 121186, - "end": 121191, + "start": 121700, + "end": 121705, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 95 }, "end": { - "line": 3044, + "line": 3052, "column": 100 } } @@ -413584,15 +416846,15 @@ "postfix": false, "binop": null }, - "start": 121191, - "end": 121192, + "start": 121705, + "end": 121706, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 100 }, "end": { - "line": 3044, + "line": 3052, "column": 101 } } @@ -413610,15 +416872,15 @@ "binop": null }, "value": "cfg", - "start": 121192, - "end": 121195, + "start": 121706, + "end": 121709, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 101 }, "end": { - "line": 3044, + "line": 3052, "column": 104 } } @@ -413636,15 +416898,15 @@ "binop": null, "updateContext": null }, - "start": 121195, - "end": 121196, + "start": 121709, + "end": 121710, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 104 }, "end": { - "line": 3044, + "line": 3052, "column": 105 } } @@ -413662,15 +416924,15 @@ "binop": null }, "value": "roughness", - "start": 121196, - "end": 121205, + "start": 121710, + "end": 121719, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 105 }, "end": { - "line": 3044, + "line": 3052, "column": 114 } } @@ -413689,15 +416951,15 @@ "updateContext": null }, "value": "*", - "start": 121206, - "end": 121207, + "start": 121720, + "end": 121721, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 115 }, "end": { - "line": 3044, + "line": 3052, "column": 116 } } @@ -413716,15 +416978,15 @@ "updateContext": null }, "value": 255, - "start": 121208, - "end": 121211, + "start": 121722, + "end": 121725, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 117 }, "end": { - "line": 3044, + "line": 3052, "column": 120 } } @@ -413741,15 +417003,15 @@ "postfix": false, "binop": null }, - "start": 121211, - "end": 121212, + "start": 121725, + "end": 121726, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 120 }, "end": { - "line": 3044, + "line": 3052, "column": 121 } } @@ -413767,15 +417029,15 @@ "binop": null, "updateContext": null }, - "start": 121213, - "end": 121214, + "start": 121727, + "end": 121728, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 122 }, "end": { - "line": 3044, + "line": 3052, "column": 123 } } @@ -413794,15 +417056,15 @@ "updateContext": null }, "value": 255, - "start": 121215, - "end": 121218, + "start": 121729, + "end": 121732, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 124 }, "end": { - "line": 3044, + "line": 3052, "column": 127 } } @@ -413820,15 +417082,15 @@ "binop": null, "updateContext": null }, - "start": 121218, - "end": 121219, + "start": 121732, + "end": 121733, "loc": { "start": { - "line": 3044, + "line": 3052, "column": 127 }, "end": { - "line": 3044, + "line": 3052, "column": 128 } } @@ -413836,15 +417098,15 @@ { "type": "CommentLine", "value": " TEXTURE", - "start": 121237, - "end": 121247, + "start": 121751, + "end": 121761, "loc": { "start": { - "line": 3046, + "line": 3054, "column": 16 }, "end": { - "line": 3046, + "line": 3054, "column": 26 } } @@ -413864,15 +417126,15 @@ "updateContext": null }, "value": "if", - "start": 121265, - "end": 121267, + "start": 121779, + "end": 121781, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 16 }, "end": { - "line": 3048, + "line": 3056, "column": 18 } } @@ -413889,15 +417151,15 @@ "postfix": false, "binop": null }, - "start": 121268, - "end": 121269, + "start": 121782, + "end": 121783, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 19 }, "end": { - "line": 3048, + "line": 3056, "column": 20 } } @@ -413915,15 +417177,15 @@ "binop": null }, "value": "cfg", - "start": 121269, - "end": 121272, + "start": 121783, + "end": 121786, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 20 }, "end": { - "line": 3048, + "line": 3056, "column": 23 } } @@ -413941,15 +417203,15 @@ "binop": null, "updateContext": null }, - "start": 121272, - "end": 121273, + "start": 121786, + "end": 121787, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 23 }, "end": { - "line": 3048, + "line": 3056, "column": 24 } } @@ -413967,15 +417229,15 @@ "binop": null }, "value": "textureSetId", - "start": 121273, - "end": 121285, + "start": 121787, + "end": 121799, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 24 }, "end": { - "line": 3048, + "line": 3056, "column": 36 } } @@ -413992,15 +417254,15 @@ "postfix": false, "binop": null }, - "start": 121285, - "end": 121286, + "start": 121799, + "end": 121800, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 36 }, "end": { - "line": 3048, + "line": 3056, "column": 37 } } @@ -414017,15 +417279,15 @@ "postfix": false, "binop": null }, - "start": 121287, - "end": 121288, + "start": 121801, + "end": 121802, "loc": { "start": { - "line": 3048, + "line": 3056, "column": 38 }, "end": { - "line": 3048, + "line": 3056, "column": 39 } } @@ -414043,15 +417305,15 @@ "binop": null }, "value": "cfg", - "start": 121309, - "end": 121312, + "start": 121823, + "end": 121826, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 20 }, "end": { - "line": 3049, + "line": 3057, "column": 23 } } @@ -414069,15 +417331,15 @@ "binop": null, "updateContext": null }, - "start": 121312, - "end": 121313, + "start": 121826, + "end": 121827, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 23 }, "end": { - "line": 3049, + "line": 3057, "column": 24 } } @@ -414095,15 +417357,15 @@ "binop": null }, "value": "textureSet", - "start": 121313, - "end": 121323, + "start": 121827, + "end": 121837, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 24 }, "end": { - "line": 3049, + "line": 3057, "column": 34 } } @@ -414122,15 +417384,15 @@ "updateContext": null }, "value": "=", - "start": 121324, - "end": 121325, + "start": 121838, + "end": 121839, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 35 }, "end": { - "line": 3049, + "line": 3057, "column": 36 } } @@ -414150,15 +417412,15 @@ "updateContext": null }, "value": "this", - "start": 121326, - "end": 121330, + "start": 121840, + "end": 121844, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 37 }, "end": { - "line": 3049, + "line": 3057, "column": 41 } } @@ -414176,15 +417438,15 @@ "binop": null, "updateContext": null }, - "start": 121330, - "end": 121331, + "start": 121844, + "end": 121845, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 41 }, "end": { - "line": 3049, + "line": 3057, "column": 42 } } @@ -414202,15 +417464,15 @@ "binop": null }, "value": "_textureSets", - "start": 121331, - "end": 121343, + "start": 121845, + "end": 121857, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 42 }, "end": { - "line": 3049, + "line": 3057, "column": 54 } } @@ -414228,15 +417490,15 @@ "binop": null, "updateContext": null }, - "start": 121343, - "end": 121344, + "start": 121857, + "end": 121858, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 54 }, "end": { - "line": 3049, + "line": 3057, "column": 55 } } @@ -414254,15 +417516,15 @@ "binop": null }, "value": "cfg", - "start": 121344, - "end": 121347, + "start": 121858, + "end": 121861, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 55 }, "end": { - "line": 3049, + "line": 3057, "column": 58 } } @@ -414280,15 +417542,15 @@ "binop": null, "updateContext": null }, - "start": 121347, - "end": 121348, + "start": 121861, + "end": 121862, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 58 }, "end": { - "line": 3049, + "line": 3057, "column": 59 } } @@ -414306,15 +417568,15 @@ "binop": null }, "value": "textureSetId", - "start": 121348, - "end": 121360, + "start": 121862, + "end": 121874, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 59 }, "end": { - "line": 3049, + "line": 3057, "column": 71 } } @@ -414332,15 +417594,15 @@ "binop": null, "updateContext": null }, - "start": 121360, - "end": 121361, + "start": 121874, + "end": 121875, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 71 }, "end": { - "line": 3049, + "line": 3057, "column": 72 } } @@ -414358,15 +417620,15 @@ "binop": null, "updateContext": null }, - "start": 121361, - "end": 121362, + "start": 121875, + "end": 121876, "loc": { "start": { - "line": 3049, + "line": 3057, "column": 72 }, "end": { - "line": 3049, + "line": 3057, "column": 73 } } @@ -414374,15 +417636,15 @@ { "type": "CommentLine", "value": " if (!cfg.textureSet) {", - "start": 121383, - "end": 121408, + "start": 121897, + "end": 121922, "loc": { "start": { - "line": 3050, + "line": 3058, "column": 20 }, "end": { - "line": 3050, + "line": 3058, "column": 45 } } @@ -414390,15 +417652,15 @@ { "type": "CommentLine", "value": " this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`);", - "start": 121429, - "end": 121564, + "start": 121943, + "end": 122078, "loc": { "start": { - "line": 3051, + "line": 3059, "column": 20 }, "end": { - "line": 3051, + "line": 3059, "column": 155 } } @@ -414406,15 +417668,15 @@ { "type": "CommentLine", "value": " return false;", - "start": 121585, - "end": 121605, + "start": 122099, + "end": 122119, "loc": { "start": { - "line": 3052, + "line": 3060, "column": 20 }, "end": { - "line": 3052, + "line": 3060, "column": 40 } } @@ -414422,15 +417684,15 @@ { "type": "CommentLine", "value": " }", - "start": 121626, - "end": 121630, + "start": 122140, + "end": 122144, "loc": { "start": { - "line": 3053, + "line": 3061, "column": 20 }, "end": { - "line": 3053, + "line": 3061, "column": 24 } } @@ -414447,15 +417709,15 @@ "postfix": false, "binop": null }, - "start": 121647, - "end": 121648, + "start": 122161, + "end": 122162, "loc": { "start": { - "line": 3054, + "line": 3062, "column": 16 }, "end": { - "line": 3054, + "line": 3062, "column": 17 } } @@ -414472,15 +417734,15 @@ "postfix": false, "binop": null }, - "start": 121661, - "end": 121662, + "start": 122175, + "end": 122176, "loc": { "start": { - "line": 3055, + "line": 3063, "column": 12 }, "end": { - "line": 3055, + "line": 3063, "column": 13 } } @@ -414497,15 +417759,15 @@ "postfix": false, "binop": null }, - "start": 121671, - "end": 121672, + "start": 122185, + "end": 122186, "loc": { "start": { - "line": 3056, + "line": 3064, "column": 8 }, "end": { - "line": 3056, + "line": 3064, "column": 9 } } @@ -414523,15 +417785,15 @@ "binop": null }, "value": "cfg", - "start": 121682, - "end": 121685, + "start": 122196, + "end": 122199, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 8 }, "end": { - "line": 3058, + "line": 3066, "column": 11 } } @@ -414549,15 +417811,15 @@ "binop": null, "updateContext": null }, - "start": 121685, - "end": 121686, + "start": 122199, + "end": 122200, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 11 }, "end": { - "line": 3058, + "line": 3066, "column": 12 } } @@ -414575,15 +417837,15 @@ "binop": null }, "value": "numPrimitives", - "start": 121686, - "end": 121699, + "start": 122200, + "end": 122213, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 12 }, "end": { - "line": 3058, + "line": 3066, "column": 25 } } @@ -414602,15 +417864,15 @@ "updateContext": null }, "value": "=", - "start": 121700, - "end": 121701, + "start": 122214, + "end": 122215, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 26 }, "end": { - "line": 3058, + "line": 3066, "column": 27 } } @@ -414630,15 +417892,15 @@ "updateContext": null }, "value": "this", - "start": 121702, - "end": 121706, + "start": 122216, + "end": 122220, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 28 }, "end": { - "line": 3058, + "line": 3066, "column": 32 } } @@ -414656,15 +417918,15 @@ "binop": null, "updateContext": null }, - "start": 121706, - "end": 121707, + "start": 122220, + "end": 122221, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 32 }, "end": { - "line": 3058, + "line": 3066, "column": 33 } } @@ -414682,15 +417944,15 @@ "binop": null }, "value": "_getNumPrimitives", - "start": 121707, - "end": 121724, + "start": 122221, + "end": 122238, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 33 }, "end": { - "line": 3058, + "line": 3066, "column": 50 } } @@ -414707,15 +417969,15 @@ "postfix": false, "binop": null }, - "start": 121724, - "end": 121725, + "start": 122238, + "end": 122239, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 50 }, "end": { - "line": 3058, + "line": 3066, "column": 51 } } @@ -414733,15 +417995,15 @@ "binop": null }, "value": "cfg", - "start": 121725, - "end": 121728, + "start": 122239, + "end": 122242, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 51 }, "end": { - "line": 3058, + "line": 3066, "column": 54 } } @@ -414758,15 +418020,15 @@ "postfix": false, "binop": null }, - "start": 121728, - "end": 121729, + "start": 122242, + "end": 122243, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 54 }, "end": { - "line": 3058, + "line": 3066, "column": 55 } } @@ -414784,15 +418046,15 @@ "binop": null, "updateContext": null }, - "start": 121729, - "end": 121730, + "start": 122243, + "end": 122244, "loc": { "start": { - "line": 3058, + "line": 3066, "column": 55 }, "end": { - "line": 3058, + "line": 3066, "column": 56 } } @@ -414812,15 +418074,15 @@ "updateContext": null }, "value": "return", - "start": 121740, - "end": 121746, + "start": 122254, + "end": 122260, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 8 }, "end": { - "line": 3060, + "line": 3068, "column": 14 } } @@ -414840,15 +418102,15 @@ "updateContext": null }, "value": "this", - "start": 121747, - "end": 121751, + "start": 122261, + "end": 122265, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 15 }, "end": { - "line": 3060, + "line": 3068, "column": 19 } } @@ -414866,15 +418128,15 @@ "binop": null, "updateContext": null }, - "start": 121751, - "end": 121752, + "start": 122265, + "end": 122266, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 19 }, "end": { - "line": 3060, + "line": 3068, "column": 20 } } @@ -414892,15 +418154,15 @@ "binop": null }, "value": "_createMesh", - "start": 121752, - "end": 121763, + "start": 122266, + "end": 122277, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 20 }, "end": { - "line": 3060, + "line": 3068, "column": 31 } } @@ -414917,15 +418179,15 @@ "postfix": false, "binop": null }, - "start": 121763, - "end": 121764, + "start": 122277, + "end": 122278, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 31 }, "end": { - "line": 3060, + "line": 3068, "column": 32 } } @@ -414943,15 +418205,15 @@ "binop": null }, "value": "cfg", - "start": 121764, - "end": 121767, + "start": 122278, + "end": 122281, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 32 }, "end": { - "line": 3060, + "line": 3068, "column": 35 } } @@ -414968,15 +418230,15 @@ "postfix": false, "binop": null }, - "start": 121767, - "end": 121768, + "start": 122281, + "end": 122282, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 35 }, "end": { - "line": 3060, + "line": 3068, "column": 36 } } @@ -414994,15 +418256,15 @@ "binop": null, "updateContext": null }, - "start": 121768, - "end": 121769, + "start": 122282, + "end": 122283, "loc": { "start": { - "line": 3060, + "line": 3068, "column": 36 }, "end": { - "line": 3060, + "line": 3068, "column": 37 } } @@ -415019,15 +418281,15 @@ "postfix": false, "binop": null }, - "start": 121774, - "end": 121775, + "start": 122288, + "end": 122289, "loc": { "start": { - "line": 3061, + "line": 3069, "column": 4 }, "end": { - "line": 3061, + "line": 3069, "column": 5 } } @@ -415045,15 +418307,15 @@ "binop": null }, "value": "_createMesh", - "start": 121781, - "end": 121792, + "start": 122295, + "end": 122306, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 4 }, "end": { - "line": 3063, + "line": 3071, "column": 15 } } @@ -415070,15 +418332,15 @@ "postfix": false, "binop": null }, - "start": 121792, - "end": 121793, + "start": 122306, + "end": 122307, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 15 }, "end": { - "line": 3063, + "line": 3071, "column": 16 } } @@ -415096,15 +418358,15 @@ "binop": null }, "value": "cfg", - "start": 121793, - "end": 121796, + "start": 122307, + "end": 122310, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 16 }, "end": { - "line": 3063, + "line": 3071, "column": 19 } } @@ -415121,15 +418383,15 @@ "postfix": false, "binop": null }, - "start": 121796, - "end": 121797, + "start": 122310, + "end": 122311, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 19 }, "end": { - "line": 3063, + "line": 3071, "column": 20 } } @@ -415146,15 +418408,15 @@ "postfix": false, "binop": null }, - "start": 121798, - "end": 121799, + "start": 122312, + "end": 122313, "loc": { "start": { - "line": 3063, + "line": 3071, "column": 21 }, "end": { - "line": 3063, + "line": 3071, "column": 22 } } @@ -415174,15 +418436,15 @@ "updateContext": null }, "value": "const", - "start": 121808, - "end": 121813, + "start": 122322, + "end": 122327, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 8 }, "end": { - "line": 3064, + "line": 3072, "column": 13 } } @@ -415200,15 +418462,15 @@ "binop": null }, "value": "mesh", - "start": 121814, - "end": 121818, + "start": 122328, + "end": 122332, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 14 }, "end": { - "line": 3064, + "line": 3072, "column": 18 } } @@ -415227,15 +418489,15 @@ "updateContext": null }, "value": "=", - "start": 121819, - "end": 121820, + "start": 122333, + "end": 122334, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 19 }, "end": { - "line": 3064, + "line": 3072, "column": 20 } } @@ -415255,15 +418517,15 @@ "updateContext": null }, "value": "new", - "start": 121821, - "end": 121824, + "start": 122335, + "end": 122338, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 21 }, "end": { - "line": 3064, + "line": 3072, "column": 24 } } @@ -415281,15 +418543,15 @@ "binop": null }, "value": "SceneModelMesh", - "start": 121825, - "end": 121839, + "start": 122339, + "end": 122353, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 25 }, "end": { - "line": 3064, + "line": 3072, "column": 39 } } @@ -415306,15 +418568,15 @@ "postfix": false, "binop": null }, - "start": 121839, - "end": 121840, + "start": 122353, + "end": 122354, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 39 }, "end": { - "line": 3064, + "line": 3072, "column": 40 } } @@ -415334,15 +418596,15 @@ "updateContext": null }, "value": "this", - "start": 121840, - "end": 121844, + "start": 122354, + "end": 122358, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 40 }, "end": { - "line": 3064, + "line": 3072, "column": 44 } } @@ -415360,15 +418622,15 @@ "binop": null, "updateContext": null }, - "start": 121844, - "end": 121845, + "start": 122358, + "end": 122359, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 44 }, "end": { - "line": 3064, + "line": 3072, "column": 45 } } @@ -415386,15 +418648,15 @@ "binop": null }, "value": "cfg", - "start": 121846, - "end": 121849, + "start": 122360, + "end": 122363, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 46 }, "end": { - "line": 3064, + "line": 3072, "column": 49 } } @@ -415412,15 +418674,15 @@ "binop": null, "updateContext": null }, - "start": 121849, - "end": 121850, + "start": 122363, + "end": 122364, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 49 }, "end": { - "line": 3064, + "line": 3072, "column": 50 } } @@ -415438,15 +418700,15 @@ "binop": null }, "value": "id", - "start": 121850, - "end": 121852, + "start": 122364, + "end": 122366, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 50 }, "end": { - "line": 3064, + "line": 3072, "column": 52 } } @@ -415464,15 +418726,15 @@ "binop": null, "updateContext": null }, - "start": 121852, - "end": 121853, + "start": 122366, + "end": 122367, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 52 }, "end": { - "line": 3064, + "line": 3072, "column": 53 } } @@ -415490,15 +418752,15 @@ "binop": null }, "value": "cfg", - "start": 121854, - "end": 121857, + "start": 122368, + "end": 122371, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 54 }, "end": { - "line": 3064, + "line": 3072, "column": 57 } } @@ -415516,15 +418778,15 @@ "binop": null, "updateContext": null }, - "start": 121857, - "end": 121858, + "start": 122371, + "end": 122372, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 57 }, "end": { - "line": 3064, + "line": 3072, "column": 58 } } @@ -415542,15 +418804,15 @@ "binop": null }, "value": "color", - "start": 121858, - "end": 121863, + "start": 122372, + "end": 122377, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 58 }, "end": { - "line": 3064, + "line": 3072, "column": 63 } } @@ -415568,15 +418830,15 @@ "binop": null, "updateContext": null }, - "start": 121863, - "end": 121864, + "start": 122377, + "end": 122378, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 63 }, "end": { - "line": 3064, + "line": 3072, "column": 64 } } @@ -415594,15 +418856,15 @@ "binop": null }, "value": "cfg", - "start": 121865, - "end": 121868, + "start": 122379, + "end": 122382, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 65 }, "end": { - "line": 3064, + "line": 3072, "column": 68 } } @@ -415620,15 +418882,15 @@ "binop": null, "updateContext": null }, - "start": 121868, - "end": 121869, + "start": 122382, + "end": 122383, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 68 }, "end": { - "line": 3064, + "line": 3072, "column": 69 } } @@ -415646,15 +418908,15 @@ "binop": null }, "value": "opacity", - "start": 121869, - "end": 121876, + "start": 122383, + "end": 122390, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 69 }, "end": { - "line": 3064, + "line": 3072, "column": 76 } } @@ -415672,15 +418934,15 @@ "binop": null, "updateContext": null }, - "start": 121876, - "end": 121877, + "start": 122390, + "end": 122391, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 76 }, "end": { - "line": 3064, + "line": 3072, "column": 77 } } @@ -415698,15 +418960,15 @@ "binop": null }, "value": "cfg", - "start": 121878, - "end": 121881, + "start": 122392, + "end": 122395, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 78 }, "end": { - "line": 3064, + "line": 3072, "column": 81 } } @@ -415724,15 +418986,15 @@ "binop": null, "updateContext": null }, - "start": 121881, - "end": 121882, + "start": 122395, + "end": 122396, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 81 }, "end": { - "line": 3064, + "line": 3072, "column": 82 } } @@ -415750,15 +419012,15 @@ "binop": null }, "value": "transform", - "start": 121882, - "end": 121891, + "start": 122396, + "end": 122405, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 82 }, "end": { - "line": 3064, + "line": 3072, "column": 91 } } @@ -415776,15 +419038,15 @@ "binop": null, "updateContext": null }, - "start": 121891, - "end": 121892, + "start": 122405, + "end": 122406, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 91 }, "end": { - "line": 3064, + "line": 3072, "column": 92 } } @@ -415802,15 +419064,15 @@ "binop": null }, "value": "cfg", - "start": 121893, - "end": 121896, + "start": 122407, + "end": 122410, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 93 }, "end": { - "line": 3064, + "line": 3072, "column": 96 } } @@ -415828,15 +419090,15 @@ "binop": null, "updateContext": null }, - "start": 121896, - "end": 121897, + "start": 122410, + "end": 122411, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 96 }, "end": { - "line": 3064, + "line": 3072, "column": 97 } } @@ -415854,15 +419116,15 @@ "binop": null }, "value": "textureSet", - "start": 121897, - "end": 121907, + "start": 122411, + "end": 122421, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 97 }, "end": { - "line": 3064, + "line": 3072, "column": 107 } } @@ -415879,15 +419141,15 @@ "postfix": false, "binop": null }, - "start": 121907, - "end": 121908, + "start": 122421, + "end": 122422, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 107 }, "end": { - "line": 3064, + "line": 3072, "column": 108 } } @@ -415905,15 +419167,15 @@ "binop": null, "updateContext": null }, - "start": 121908, - "end": 121909, + "start": 122422, + "end": 122423, "loc": { "start": { - "line": 3064, + "line": 3072, "column": 108 }, "end": { - "line": 3064, + "line": 3072, "column": 109 } } @@ -415931,15 +419193,15 @@ "binop": null }, "value": "mesh", - "start": 121918, - "end": 121922, + "start": 122432, + "end": 122436, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 8 }, "end": { - "line": 3065, + "line": 3073, "column": 12 } } @@ -415957,15 +419219,15 @@ "binop": null, "updateContext": null }, - "start": 121922, - "end": 121923, + "start": 122436, + "end": 122437, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 12 }, "end": { - "line": 3065, + "line": 3073, "column": 13 } } @@ -415983,15 +419245,15 @@ "binop": null }, "value": "pickId", - "start": 121923, - "end": 121929, + "start": 122437, + "end": 122443, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 13 }, "end": { - "line": 3065, + "line": 3073, "column": 19 } } @@ -416010,15 +419272,15 @@ "updateContext": null }, "value": "=", - "start": 121930, - "end": 121931, + "start": 122444, + "end": 122445, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 20 }, "end": { - "line": 3065, + "line": 3073, "column": 21 } } @@ -416038,15 +419300,15 @@ "updateContext": null }, "value": "this", - "start": 121932, - "end": 121936, + "start": 122446, + "end": 122450, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 22 }, "end": { - "line": 3065, + "line": 3073, "column": 26 } } @@ -416064,15 +419326,15 @@ "binop": null, "updateContext": null }, - "start": 121936, - "end": 121937, + "start": 122450, + "end": 122451, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 26 }, "end": { - "line": 3065, + "line": 3073, "column": 27 } } @@ -416090,15 +419352,15 @@ "binop": null }, "value": "scene", - "start": 121937, - "end": 121942, + "start": 122451, + "end": 122456, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 27 }, "end": { - "line": 3065, + "line": 3073, "column": 32 } } @@ -416116,15 +419378,15 @@ "binop": null, "updateContext": null }, - "start": 121942, - "end": 121943, + "start": 122456, + "end": 122457, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 32 }, "end": { - "line": 3065, + "line": 3073, "column": 33 } } @@ -416142,15 +419404,15 @@ "binop": null }, "value": "_renderer", - "start": 121943, - "end": 121952, + "start": 122457, + "end": 122466, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 33 }, "end": { - "line": 3065, + "line": 3073, "column": 42 } } @@ -416168,15 +419430,15 @@ "binop": null, "updateContext": null }, - "start": 121952, - "end": 121953, + "start": 122466, + "end": 122467, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 42 }, "end": { - "line": 3065, + "line": 3073, "column": 43 } } @@ -416194,15 +419456,15 @@ "binop": null }, "value": "getPickID", - "start": 121953, - "end": 121962, + "start": 122467, + "end": 122476, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 43 }, "end": { - "line": 3065, + "line": 3073, "column": 52 } } @@ -416219,15 +419481,15 @@ "postfix": false, "binop": null }, - "start": 121962, - "end": 121963, + "start": 122476, + "end": 122477, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 52 }, "end": { - "line": 3065, + "line": 3073, "column": 53 } } @@ -416245,15 +419507,15 @@ "binop": null }, "value": "mesh", - "start": 121963, - "end": 121967, + "start": 122477, + "end": 122481, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 53 }, "end": { - "line": 3065, + "line": 3073, "column": 57 } } @@ -416270,15 +419532,15 @@ "postfix": false, "binop": null }, - "start": 121967, - "end": 121968, + "start": 122481, + "end": 122482, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 57 }, "end": { - "line": 3065, + "line": 3073, "column": 58 } } @@ -416296,15 +419558,15 @@ "binop": null, "updateContext": null }, - "start": 121968, - "end": 121969, + "start": 122482, + "end": 122483, "loc": { "start": { - "line": 3065, + "line": 3073, "column": 58 }, "end": { - "line": 3065, + "line": 3073, "column": 59 } } @@ -416324,15 +419586,15 @@ "updateContext": null }, "value": "const", - "start": 121978, - "end": 121983, + "start": 122492, + "end": 122497, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 8 }, "end": { - "line": 3066, + "line": 3074, "column": 13 } } @@ -416350,15 +419612,15 @@ "binop": null }, "value": "pickId", - "start": 121984, - "end": 121990, + "start": 122498, + "end": 122504, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 14 }, "end": { - "line": 3066, + "line": 3074, "column": 20 } } @@ -416377,15 +419639,15 @@ "updateContext": null }, "value": "=", - "start": 121991, - "end": 121992, + "start": 122505, + "end": 122506, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 21 }, "end": { - "line": 3066, + "line": 3074, "column": 22 } } @@ -416403,15 +419665,15 @@ "binop": null }, "value": "mesh", - "start": 121993, - "end": 121997, + "start": 122507, + "end": 122511, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 23 }, "end": { - "line": 3066, + "line": 3074, "column": 27 } } @@ -416429,15 +419691,15 @@ "binop": null, "updateContext": null }, - "start": 121997, - "end": 121998, + "start": 122511, + "end": 122512, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 27 }, "end": { - "line": 3066, + "line": 3074, "column": 28 } } @@ -416455,15 +419717,15 @@ "binop": null }, "value": "pickId", - "start": 121998, - "end": 122004, + "start": 122512, + "end": 122518, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 28 }, "end": { - "line": 3066, + "line": 3074, "column": 34 } } @@ -416481,15 +419743,15 @@ "binop": null, "updateContext": null }, - "start": 122004, - "end": 122005, + "start": 122518, + "end": 122519, "loc": { "start": { - "line": 3066, + "line": 3074, "column": 34 }, "end": { - "line": 3066, + "line": 3074, "column": 35 } } @@ -416509,15 +419771,15 @@ "updateContext": null }, "value": "const", - "start": 122014, - "end": 122019, + "start": 122528, + "end": 122533, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 8 }, "end": { - "line": 3067, + "line": 3075, "column": 13 } } @@ -416535,15 +419797,15 @@ "binop": null }, "value": "a", - "start": 122020, - "end": 122021, + "start": 122534, + "end": 122535, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 14 }, "end": { - "line": 3067, + "line": 3075, "column": 15 } } @@ -416562,15 +419824,15 @@ "updateContext": null }, "value": "=", - "start": 122022, - "end": 122023, + "start": 122536, + "end": 122537, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 16 }, "end": { - "line": 3067, + "line": 3075, "column": 17 } } @@ -416588,15 +419850,15 @@ "binop": null }, "value": "pickId", - "start": 122024, - "end": 122030, + "start": 122538, + "end": 122544, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 18 }, "end": { - "line": 3067, + "line": 3075, "column": 24 } } @@ -416615,15 +419877,15 @@ "updateContext": null }, "value": ">>", - "start": 122031, - "end": 122033, + "start": 122545, + "end": 122547, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 25 }, "end": { - "line": 3067, + "line": 3075, "column": 27 } } @@ -416642,15 +419904,15 @@ "updateContext": null }, "value": 24, - "start": 122034, - "end": 122036, + "start": 122548, + "end": 122550, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 28 }, "end": { - "line": 3067, + "line": 3075, "column": 30 } } @@ -416669,15 +419931,15 @@ "updateContext": null }, "value": "&", - "start": 122037, - "end": 122038, + "start": 122551, + "end": 122552, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 31 }, "end": { - "line": 3067, + "line": 3075, "column": 32 } } @@ -416696,15 +419958,15 @@ "updateContext": null }, "value": 255, - "start": 122039, - "end": 122043, + "start": 122553, + "end": 122557, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 33 }, "end": { - "line": 3067, + "line": 3075, "column": 37 } } @@ -416722,15 +419984,15 @@ "binop": null, "updateContext": null }, - "start": 122043, - "end": 122044, + "start": 122557, + "end": 122558, "loc": { "start": { - "line": 3067, + "line": 3075, "column": 37 }, "end": { - "line": 3067, + "line": 3075, "column": 38 } } @@ -416750,15 +420012,15 @@ "updateContext": null }, "value": "const", - "start": 122053, - "end": 122058, + "start": 122567, + "end": 122572, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 8 }, "end": { - "line": 3068, + "line": 3076, "column": 13 } } @@ -416776,15 +420038,15 @@ "binop": null }, "value": "b", - "start": 122059, - "end": 122060, + "start": 122573, + "end": 122574, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 14 }, "end": { - "line": 3068, + "line": 3076, "column": 15 } } @@ -416803,15 +420065,15 @@ "updateContext": null }, "value": "=", - "start": 122061, - "end": 122062, + "start": 122575, + "end": 122576, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 16 }, "end": { - "line": 3068, + "line": 3076, "column": 17 } } @@ -416829,15 +420091,15 @@ "binop": null }, "value": "pickId", - "start": 122063, - "end": 122069, + "start": 122577, + "end": 122583, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 18 }, "end": { - "line": 3068, + "line": 3076, "column": 24 } } @@ -416856,15 +420118,15 @@ "updateContext": null }, "value": ">>", - "start": 122070, - "end": 122072, + "start": 122584, + "end": 122586, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 25 }, "end": { - "line": 3068, + "line": 3076, "column": 27 } } @@ -416883,15 +420145,15 @@ "updateContext": null }, "value": 16, - "start": 122073, - "end": 122075, + "start": 122587, + "end": 122589, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 28 }, "end": { - "line": 3068, + "line": 3076, "column": 30 } } @@ -416910,15 +420172,15 @@ "updateContext": null }, "value": "&", - "start": 122076, - "end": 122077, + "start": 122590, + "end": 122591, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 31 }, "end": { - "line": 3068, + "line": 3076, "column": 32 } } @@ -416937,15 +420199,15 @@ "updateContext": null }, "value": 255, - "start": 122078, - "end": 122082, + "start": 122592, + "end": 122596, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 33 }, "end": { - "line": 3068, + "line": 3076, "column": 37 } } @@ -416963,15 +420225,15 @@ "binop": null, "updateContext": null }, - "start": 122082, - "end": 122083, + "start": 122596, + "end": 122597, "loc": { "start": { - "line": 3068, + "line": 3076, "column": 37 }, "end": { - "line": 3068, + "line": 3076, "column": 38 } } @@ -416991,15 +420253,15 @@ "updateContext": null }, "value": "const", - "start": 122092, - "end": 122097, + "start": 122606, + "end": 122611, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 8 }, "end": { - "line": 3069, + "line": 3077, "column": 13 } } @@ -417017,15 +420279,15 @@ "binop": null }, "value": "g", - "start": 122098, - "end": 122099, + "start": 122612, + "end": 122613, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 14 }, "end": { - "line": 3069, + "line": 3077, "column": 15 } } @@ -417044,15 +420306,15 @@ "updateContext": null }, "value": "=", - "start": 122100, - "end": 122101, + "start": 122614, + "end": 122615, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 16 }, "end": { - "line": 3069, + "line": 3077, "column": 17 } } @@ -417070,15 +420332,15 @@ "binop": null }, "value": "pickId", - "start": 122102, - "end": 122108, + "start": 122616, + "end": 122622, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 18 }, "end": { - "line": 3069, + "line": 3077, "column": 24 } } @@ -417097,15 +420359,15 @@ "updateContext": null }, "value": ">>", - "start": 122109, - "end": 122111, + "start": 122623, + "end": 122625, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 25 }, "end": { - "line": 3069, + "line": 3077, "column": 27 } } @@ -417124,15 +420386,15 @@ "updateContext": null }, "value": 8, - "start": 122112, - "end": 122113, + "start": 122626, + "end": 122627, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 28 }, "end": { - "line": 3069, + "line": 3077, "column": 29 } } @@ -417151,15 +420413,15 @@ "updateContext": null }, "value": "&", - "start": 122114, - "end": 122115, + "start": 122628, + "end": 122629, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 30 }, "end": { - "line": 3069, + "line": 3077, "column": 31 } } @@ -417178,15 +420440,15 @@ "updateContext": null }, "value": 255, - "start": 122116, - "end": 122120, + "start": 122630, + "end": 122634, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 32 }, "end": { - "line": 3069, + "line": 3077, "column": 36 } } @@ -417204,15 +420466,15 @@ "binop": null, "updateContext": null }, - "start": 122120, - "end": 122121, + "start": 122634, + "end": 122635, "loc": { "start": { - "line": 3069, + "line": 3077, "column": 36 }, "end": { - "line": 3069, + "line": 3077, "column": 37 } } @@ -417232,15 +420494,15 @@ "updateContext": null }, "value": "const", - "start": 122130, - "end": 122135, + "start": 122644, + "end": 122649, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 8 }, "end": { - "line": 3070, + "line": 3078, "column": 13 } } @@ -417258,15 +420520,15 @@ "binop": null }, "value": "r", - "start": 122136, - "end": 122137, + "start": 122650, + "end": 122651, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 14 }, "end": { - "line": 3070, + "line": 3078, "column": 15 } } @@ -417285,15 +420547,15 @@ "updateContext": null }, "value": "=", - "start": 122138, - "end": 122139, + "start": 122652, + "end": 122653, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 16 }, "end": { - "line": 3070, + "line": 3078, "column": 17 } } @@ -417311,15 +420573,15 @@ "binop": null }, "value": "pickId", - "start": 122140, - "end": 122146, + "start": 122654, + "end": 122660, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 18 }, "end": { - "line": 3070, + "line": 3078, "column": 24 } } @@ -417338,15 +420600,15 @@ "updateContext": null }, "value": "&", - "start": 122147, - "end": 122148, + "start": 122661, + "end": 122662, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 25 }, "end": { - "line": 3070, + "line": 3078, "column": 26 } } @@ -417365,15 +420627,15 @@ "updateContext": null }, "value": 255, - "start": 122149, - "end": 122153, + "start": 122663, + "end": 122667, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 27 }, "end": { - "line": 3070, + "line": 3078, "column": 31 } } @@ -417391,15 +420653,15 @@ "binop": null, "updateContext": null }, - "start": 122153, - "end": 122154, + "start": 122667, + "end": 122668, "loc": { "start": { - "line": 3070, + "line": 3078, "column": 31 }, "end": { - "line": 3070, + "line": 3078, "column": 32 } } @@ -417417,15 +420679,15 @@ "binop": null }, "value": "cfg", - "start": 122163, - "end": 122166, + "start": 122677, + "end": 122680, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 8 }, "end": { - "line": 3071, + "line": 3079, "column": 11 } } @@ -417443,15 +420705,15 @@ "binop": null, "updateContext": null }, - "start": 122166, - "end": 122167, + "start": 122680, + "end": 122681, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 11 }, "end": { - "line": 3071, + "line": 3079, "column": 12 } } @@ -417469,15 +420731,15 @@ "binop": null }, "value": "pickColor", - "start": 122167, - "end": 122176, + "start": 122681, + "end": 122690, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 12 }, "end": { - "line": 3071, + "line": 3079, "column": 21 } } @@ -417496,15 +420758,15 @@ "updateContext": null }, "value": "=", - "start": 122177, - "end": 122178, + "start": 122691, + "end": 122692, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 22 }, "end": { - "line": 3071, + "line": 3079, "column": 23 } } @@ -417524,15 +420786,15 @@ "updateContext": null }, "value": "new", - "start": 122179, - "end": 122182, + "start": 122693, + "end": 122696, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 24 }, "end": { - "line": 3071, + "line": 3079, "column": 27 } } @@ -417550,15 +420812,15 @@ "binop": null }, "value": "Uint8Array", - "start": 122183, - "end": 122193, + "start": 122697, + "end": 122707, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 28 }, "end": { - "line": 3071, + "line": 3079, "column": 38 } } @@ -417575,15 +420837,15 @@ "postfix": false, "binop": null }, - "start": 122193, - "end": 122194, + "start": 122707, + "end": 122708, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 38 }, "end": { - "line": 3071, + "line": 3079, "column": 39 } } @@ -417601,15 +420863,15 @@ "binop": null, "updateContext": null }, - "start": 122194, - "end": 122195, + "start": 122708, + "end": 122709, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 39 }, "end": { - "line": 3071, + "line": 3079, "column": 40 } } @@ -417627,15 +420889,15 @@ "binop": null }, "value": "r", - "start": 122195, - "end": 122196, + "start": 122709, + "end": 122710, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 40 }, "end": { - "line": 3071, + "line": 3079, "column": 41 } } @@ -417653,15 +420915,15 @@ "binop": null, "updateContext": null }, - "start": 122196, - "end": 122197, + "start": 122710, + "end": 122711, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 41 }, "end": { - "line": 3071, + "line": 3079, "column": 42 } } @@ -417679,15 +420941,15 @@ "binop": null }, "value": "g", - "start": 122198, - "end": 122199, + "start": 122712, + "end": 122713, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 43 }, "end": { - "line": 3071, + "line": 3079, "column": 44 } } @@ -417705,15 +420967,15 @@ "binop": null, "updateContext": null }, - "start": 122199, - "end": 122200, + "start": 122713, + "end": 122714, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 44 }, "end": { - "line": 3071, + "line": 3079, "column": 45 } } @@ -417731,15 +420993,15 @@ "binop": null }, "value": "b", - "start": 122201, - "end": 122202, + "start": 122715, + "end": 122716, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 46 }, "end": { - "line": 3071, + "line": 3079, "column": 47 } } @@ -417757,15 +421019,15 @@ "binop": null, "updateContext": null }, - "start": 122202, - "end": 122203, + "start": 122716, + "end": 122717, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 47 }, "end": { - "line": 3071, + "line": 3079, "column": 48 } } @@ -417783,15 +421045,15 @@ "binop": null }, "value": "a", - "start": 122204, - "end": 122205, + "start": 122718, + "end": 122719, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 49 }, "end": { - "line": 3071, + "line": 3079, "column": 50 } } @@ -417809,15 +421071,15 @@ "binop": null, "updateContext": null }, - "start": 122205, - "end": 122206, + "start": 122719, + "end": 122720, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 50 }, "end": { - "line": 3071, + "line": 3079, "column": 51 } } @@ -417834,15 +421096,15 @@ "postfix": false, "binop": null }, - "start": 122206, - "end": 122207, + "start": 122720, + "end": 122721, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 51 }, "end": { - "line": 3071, + "line": 3079, "column": 52 } } @@ -417860,15 +421122,15 @@ "binop": null, "updateContext": null }, - "start": 122207, - "end": 122208, + "start": 122721, + "end": 122722, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 52 }, "end": { - "line": 3071, + "line": 3079, "column": 53 } } @@ -417876,15 +421138,15 @@ { "type": "CommentLine", "value": " Quantized pick color", - "start": 122209, - "end": 122232, + "start": 122723, + "end": 122746, "loc": { "start": { - "line": 3071, + "line": 3079, "column": 54 }, "end": { - "line": 3071, + "line": 3079, "column": 77 } } @@ -417902,15 +421164,15 @@ "binop": null }, "value": "cfg", - "start": 122241, - "end": 122244, + "start": 122755, + "end": 122758, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 8 }, "end": { - "line": 3072, + "line": 3080, "column": 11 } } @@ -417928,15 +421190,15 @@ "binop": null, "updateContext": null }, - "start": 122244, - "end": 122245, + "start": 122758, + "end": 122759, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 11 }, "end": { - "line": 3072, + "line": 3080, "column": 12 } } @@ -417954,15 +421216,15 @@ "binop": null }, "value": "solid", - "start": 122245, - "end": 122250, + "start": 122759, + "end": 122764, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 12 }, "end": { - "line": 3072, + "line": 3080, "column": 17 } } @@ -417981,15 +421243,15 @@ "updateContext": null }, "value": "=", - "start": 122251, - "end": 122252, + "start": 122765, + "end": 122766, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 18 }, "end": { - "line": 3072, + "line": 3080, "column": 19 } } @@ -418006,15 +421268,15 @@ "postfix": false, "binop": null }, - "start": 122253, - "end": 122254, + "start": 122767, + "end": 122768, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 20 }, "end": { - "line": 3072, + "line": 3080, "column": 21 } } @@ -418032,15 +421294,15 @@ "binop": null }, "value": "cfg", - "start": 122254, - "end": 122257, + "start": 122768, + "end": 122771, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 21 }, "end": { - "line": 3072, + "line": 3080, "column": 24 } } @@ -418058,15 +421320,15 @@ "binop": null, "updateContext": null }, - "start": 122257, - "end": 122258, + "start": 122771, + "end": 122772, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 24 }, "end": { - "line": 3072, + "line": 3080, "column": 25 } } @@ -418084,15 +421346,15 @@ "binop": null }, "value": "primitive", - "start": 122258, - "end": 122267, + "start": 122772, + "end": 122781, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 25 }, "end": { - "line": 3072, + "line": 3080, "column": 34 } } @@ -418111,15 +421373,15 @@ "updateContext": null }, "value": "===", - "start": 122268, - "end": 122271, + "start": 122782, + "end": 122785, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 35 }, "end": { - "line": 3072, + "line": 3080, "column": 38 } } @@ -418138,15 +421400,15 @@ "updateContext": null }, "value": "solid", - "start": 122272, - "end": 122279, + "start": 122786, + "end": 122793, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 39 }, "end": { - "line": 3072, + "line": 3080, "column": 46 } } @@ -418163,15 +421425,15 @@ "postfix": false, "binop": null }, - "start": 122279, - "end": 122280, + "start": 122793, + "end": 122794, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 46 }, "end": { - "line": 3072, + "line": 3080, "column": 47 } } @@ -418189,15 +421451,15 @@ "binop": null, "updateContext": null }, - "start": 122280, - "end": 122281, + "start": 122794, + "end": 122795, "loc": { "start": { - "line": 3072, + "line": 3080, "column": 47 }, "end": { - "line": 3072, + "line": 3080, "column": 48 } } @@ -418215,15 +421477,15 @@ "binop": null }, "value": "mesh", - "start": 122290, - "end": 122294, + "start": 122804, + "end": 122808, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 8 }, "end": { - "line": 3073, + "line": 3081, "column": 12 } } @@ -418241,15 +421503,15 @@ "binop": null, "updateContext": null }, - "start": 122294, - "end": 122295, + "start": 122808, + "end": 122809, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 12 }, "end": { - "line": 3073, + "line": 3081, "column": 13 } } @@ -418267,15 +421529,15 @@ "binop": null }, "value": "origin", - "start": 122295, - "end": 122301, + "start": 122809, + "end": 122815, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 13 }, "end": { - "line": 3073, + "line": 3081, "column": 19 } } @@ -418294,15 +421556,15 @@ "updateContext": null }, "value": "=", - "start": 122302, - "end": 122303, + "start": 122816, + "end": 122817, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 20 }, "end": { - "line": 3073, + "line": 3081, "column": 21 } } @@ -418320,15 +421582,15 @@ "binop": null }, "value": "math", - "start": 122304, - "end": 122308, + "start": 122818, + "end": 122822, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 22 }, "end": { - "line": 3073, + "line": 3081, "column": 26 } } @@ -418346,15 +421608,15 @@ "binop": null, "updateContext": null }, - "start": 122308, - "end": 122309, + "start": 122822, + "end": 122823, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 26 }, "end": { - "line": 3073, + "line": 3081, "column": 27 } } @@ -418372,15 +421634,15 @@ "binop": null }, "value": "vec3", - "start": 122309, - "end": 122313, + "start": 122823, + "end": 122827, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 27 }, "end": { - "line": 3073, + "line": 3081, "column": 31 } } @@ -418397,15 +421659,15 @@ "postfix": false, "binop": null }, - "start": 122313, - "end": 122314, + "start": 122827, + "end": 122828, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 31 }, "end": { - "line": 3073, + "line": 3081, "column": 32 } } @@ -418423,15 +421685,15 @@ "binop": null }, "value": "cfg", - "start": 122314, - "end": 122317, + "start": 122828, + "end": 122831, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 32 }, "end": { - "line": 3073, + "line": 3081, "column": 35 } } @@ -418449,15 +421711,15 @@ "binop": null, "updateContext": null }, - "start": 122317, - "end": 122318, + "start": 122831, + "end": 122832, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 35 }, "end": { - "line": 3073, + "line": 3081, "column": 36 } } @@ -418475,15 +421737,15 @@ "binop": null }, "value": "origin", - "start": 122318, - "end": 122324, + "start": 122832, + "end": 122838, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 36 }, "end": { - "line": 3073, + "line": 3081, "column": 42 } } @@ -418500,15 +421762,15 @@ "postfix": false, "binop": null }, - "start": 122324, - "end": 122325, + "start": 122838, + "end": 122839, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 42 }, "end": { - "line": 3073, + "line": 3081, "column": 43 } } @@ -418526,15 +421788,15 @@ "binop": null, "updateContext": null }, - "start": 122325, - "end": 122326, + "start": 122839, + "end": 122840, "loc": { "start": { - "line": 3073, + "line": 3081, "column": 43 }, "end": { - "line": 3073, + "line": 3081, "column": 44 } } @@ -418554,15 +421816,15 @@ "updateContext": null }, "value": "switch", - "start": 122335, - "end": 122341, + "start": 122849, + "end": 122855, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 8 }, "end": { - "line": 3074, + "line": 3082, "column": 14 } } @@ -418579,15 +421841,15 @@ "postfix": false, "binop": null }, - "start": 122342, - "end": 122343, + "start": 122856, + "end": 122857, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 15 }, "end": { - "line": 3074, + "line": 3082, "column": 16 } } @@ -418605,15 +421867,15 @@ "binop": null }, "value": "cfg", - "start": 122343, - "end": 122346, + "start": 122857, + "end": 122860, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 16 }, "end": { - "line": 3074, + "line": 3082, "column": 19 } } @@ -418631,15 +421893,15 @@ "binop": null, "updateContext": null }, - "start": 122346, - "end": 122347, + "start": 122860, + "end": 122861, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 19 }, "end": { - "line": 3074, + "line": 3082, "column": 20 } } @@ -418657,15 +421919,15 @@ "binop": null }, "value": "type", - "start": 122347, - "end": 122351, + "start": 122861, + "end": 122865, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 20 }, "end": { - "line": 3074, + "line": 3082, "column": 24 } } @@ -418682,15 +421944,15 @@ "postfix": false, "binop": null }, - "start": 122351, - "end": 122352, + "start": 122865, + "end": 122866, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 24 }, "end": { - "line": 3074, + "line": 3082, "column": 25 } } @@ -418707,15 +421969,15 @@ "postfix": false, "binop": null }, - "start": 122353, - "end": 122354, + "start": 122867, + "end": 122868, "loc": { "start": { - "line": 3074, + "line": 3082, "column": 26 }, "end": { - "line": 3074, + "line": 3082, "column": 27 } } @@ -418735,15 +421997,15 @@ "updateContext": null }, "value": "case", - "start": 122367, - "end": 122371, + "start": 122881, + "end": 122885, "loc": { "start": { - "line": 3075, + "line": 3083, "column": 12 }, "end": { - "line": 3075, + "line": 3083, "column": 16 } } @@ -418761,15 +422023,15 @@ "binop": null }, "value": "DTX", - "start": 122372, - "end": 122375, + "start": 122886, + "end": 122889, "loc": { "start": { - "line": 3075, + "line": 3083, "column": 17 }, "end": { - "line": 3075, + "line": 3083, "column": 20 } } @@ -418787,15 +422049,15 @@ "binop": null, "updateContext": null }, - "start": 122375, - "end": 122376, + "start": 122889, + "end": 122890, "loc": { "start": { - "line": 3075, + "line": 3083, "column": 20 }, "end": { - "line": 3075, + "line": 3083, "column": 21 } } @@ -418813,15 +422075,15 @@ "binop": null }, "value": "mesh", - "start": 122393, - "end": 122397, + "start": 122907, + "end": 122911, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 16 }, "end": { - "line": 3076, + "line": 3084, "column": 20 } } @@ -418839,15 +422101,15 @@ "binop": null, "updateContext": null }, - "start": 122397, - "end": 122398, + "start": 122911, + "end": 122912, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 20 }, "end": { - "line": 3076, + "line": 3084, "column": 21 } } @@ -418865,15 +422127,15 @@ "binop": null }, "value": "layer", - "start": 122398, - "end": 122403, + "start": 122912, + "end": 122917, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 21 }, "end": { - "line": 3076, + "line": 3084, "column": 26 } } @@ -418892,15 +422154,15 @@ "updateContext": null }, "value": "=", - "start": 122404, - "end": 122405, + "start": 122918, + "end": 122919, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 27 }, "end": { - "line": 3076, + "line": 3084, "column": 28 } } @@ -418920,15 +422182,15 @@ "updateContext": null }, "value": "this", - "start": 122406, - "end": 122410, + "start": 122920, + "end": 122924, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 29 }, "end": { - "line": 3076, + "line": 3084, "column": 33 } } @@ -418946,15 +422208,15 @@ "binop": null, "updateContext": null }, - "start": 122410, - "end": 122411, + "start": 122924, + "end": 122925, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 33 }, "end": { - "line": 3076, + "line": 3084, "column": 34 } } @@ -418972,15 +422234,15 @@ "binop": null }, "value": "_getDTXLayer", - "start": 122411, - "end": 122423, + "start": 122925, + "end": 122937, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 34 }, "end": { - "line": 3076, + "line": 3084, "column": 46 } } @@ -418997,15 +422259,15 @@ "postfix": false, "binop": null }, - "start": 122423, - "end": 122424, + "start": 122937, + "end": 122938, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 46 }, "end": { - "line": 3076, + "line": 3084, "column": 47 } } @@ -419023,15 +422285,15 @@ "binop": null }, "value": "cfg", - "start": 122424, - "end": 122427, + "start": 122938, + "end": 122941, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 47 }, "end": { - "line": 3076, + "line": 3084, "column": 50 } } @@ -419048,15 +422310,15 @@ "postfix": false, "binop": null }, - "start": 122427, - "end": 122428, + "start": 122941, + "end": 122942, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 50 }, "end": { - "line": 3076, + "line": 3084, "column": 51 } } @@ -419074,15 +422336,15 @@ "binop": null, "updateContext": null }, - "start": 122428, - "end": 122429, + "start": 122942, + "end": 122943, "loc": { "start": { - "line": 3076, + "line": 3084, "column": 51 }, "end": { - "line": 3076, + "line": 3084, "column": 52 } } @@ -419100,15 +422362,15 @@ "binop": null }, "value": "mesh", - "start": 122446, - "end": 122450, + "start": 122960, + "end": 122964, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 16 }, "end": { - "line": 3077, + "line": 3085, "column": 20 } } @@ -419126,15 +422388,15 @@ "binop": null, "updateContext": null }, - "start": 122450, - "end": 122451, + "start": 122964, + "end": 122965, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 20 }, "end": { - "line": 3077, + "line": 3085, "column": 21 } } @@ -419152,15 +422414,15 @@ "binop": null }, "value": "aabb", - "start": 122451, - "end": 122455, + "start": 122965, + "end": 122969, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 21 }, "end": { - "line": 3077, + "line": 3085, "column": 25 } } @@ -419179,15 +422441,15 @@ "updateContext": null }, "value": "=", - "start": 122456, - "end": 122457, + "start": 122970, + "end": 122971, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 26 }, "end": { - "line": 3077, + "line": 3085, "column": 27 } } @@ -419205,15 +422467,15 @@ "binop": null }, "value": "cfg", - "start": 122458, - "end": 122461, + "start": 122972, + "end": 122975, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 28 }, "end": { - "line": 3077, + "line": 3085, "column": 31 } } @@ -419231,15 +422493,15 @@ "binop": null, "updateContext": null }, - "start": 122461, - "end": 122462, + "start": 122975, + "end": 122976, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 31 }, "end": { - "line": 3077, + "line": 3085, "column": 32 } } @@ -419257,15 +422519,15 @@ "binop": null }, "value": "aabb", - "start": 122462, - "end": 122466, + "start": 122976, + "end": 122980, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 32 }, "end": { - "line": 3077, + "line": 3085, "column": 36 } } @@ -419283,15 +422545,15 @@ "binop": null, "updateContext": null }, - "start": 122466, - "end": 122467, + "start": 122980, + "end": 122981, "loc": { "start": { - "line": 3077, + "line": 3085, "column": 36 }, "end": { - "line": 3077, + "line": 3085, "column": 37 } } @@ -419311,15 +422573,15 @@ "updateContext": null }, "value": "break", - "start": 122484, - "end": 122489, + "start": 122998, + "end": 123003, "loc": { "start": { - "line": 3078, + "line": 3086, "column": 16 }, "end": { - "line": 3078, + "line": 3086, "column": 21 } } @@ -419337,15 +422599,15 @@ "binop": null, "updateContext": null }, - "start": 122489, - "end": 122490, + "start": 123003, + "end": 123004, "loc": { "start": { - "line": 3078, + "line": 3086, "column": 21 }, "end": { - "line": 3078, + "line": 3086, "column": 22 } } @@ -419365,15 +422627,15 @@ "updateContext": null }, "value": "case", - "start": 122503, - "end": 122507, + "start": 123017, + "end": 123021, "loc": { "start": { - "line": 3079, + "line": 3087, "column": 12 }, "end": { - "line": 3079, + "line": 3087, "column": 16 } } @@ -419391,15 +422653,15 @@ "binop": null }, "value": "VBO_BATCHED", - "start": 122508, - "end": 122519, + "start": 123022, + "end": 123033, "loc": { "start": { - "line": 3079, + "line": 3087, "column": 17 }, "end": { - "line": 3079, + "line": 3087, "column": 28 } } @@ -419417,15 +422679,15 @@ "binop": null, "updateContext": null }, - "start": 122519, - "end": 122520, + "start": 123033, + "end": 123034, "loc": { "start": { - "line": 3079, + "line": 3087, "column": 28 }, "end": { - "line": 3079, + "line": 3087, "column": 29 } } @@ -419443,15 +422705,15 @@ "binop": null }, "value": "mesh", - "start": 122537, - "end": 122541, + "start": 123051, + "end": 123055, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 16 }, "end": { - "line": 3080, + "line": 3088, "column": 20 } } @@ -419469,15 +422731,15 @@ "binop": null, "updateContext": null }, - "start": 122541, - "end": 122542, + "start": 123055, + "end": 123056, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 20 }, "end": { - "line": 3080, + "line": 3088, "column": 21 } } @@ -419495,15 +422757,15 @@ "binop": null }, "value": "layer", - "start": 122542, - "end": 122547, + "start": 123056, + "end": 123061, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 21 }, "end": { - "line": 3080, + "line": 3088, "column": 26 } } @@ -419522,15 +422784,15 @@ "updateContext": null }, "value": "=", - "start": 122548, - "end": 122549, + "start": 123062, + "end": 123063, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 27 }, "end": { - "line": 3080, + "line": 3088, "column": 28 } } @@ -419550,15 +422812,15 @@ "updateContext": null }, "value": "this", - "start": 122550, - "end": 122554, + "start": 123064, + "end": 123068, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 29 }, "end": { - "line": 3080, + "line": 3088, "column": 33 } } @@ -419576,15 +422838,15 @@ "binop": null, "updateContext": null }, - "start": 122554, - "end": 122555, + "start": 123068, + "end": 123069, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 33 }, "end": { - "line": 3080, + "line": 3088, "column": 34 } } @@ -419602,15 +422864,15 @@ "binop": null }, "value": "_getVBOBatchingLayer", - "start": 122555, - "end": 122575, + "start": 123069, + "end": 123089, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 34 }, "end": { - "line": 3080, + "line": 3088, "column": 54 } } @@ -419627,15 +422889,15 @@ "postfix": false, "binop": null }, - "start": 122575, - "end": 122576, + "start": 123089, + "end": 123090, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 54 }, "end": { - "line": 3080, + "line": 3088, "column": 55 } } @@ -419653,15 +422915,15 @@ "binop": null }, "value": "cfg", - "start": 122576, - "end": 122579, + "start": 123090, + "end": 123093, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 55 }, "end": { - "line": 3080, + "line": 3088, "column": 58 } } @@ -419678,15 +422940,15 @@ "postfix": false, "binop": null }, - "start": 122579, - "end": 122580, + "start": 123093, + "end": 123094, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 58 }, "end": { - "line": 3080, + "line": 3088, "column": 59 } } @@ -419704,15 +422966,15 @@ "binop": null, "updateContext": null }, - "start": 122580, - "end": 122581, + "start": 123094, + "end": 123095, "loc": { "start": { - "line": 3080, + "line": 3088, "column": 59 }, "end": { - "line": 3080, + "line": 3088, "column": 60 } } @@ -419730,15 +422992,15 @@ "binop": null }, "value": "mesh", - "start": 122598, - "end": 122602, + "start": 123112, + "end": 123116, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 16 }, "end": { - "line": 3081, + "line": 3089, "column": 20 } } @@ -419756,15 +423018,15 @@ "binop": null, "updateContext": null }, - "start": 122602, - "end": 122603, + "start": 123116, + "end": 123117, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 20 }, "end": { - "line": 3081, + "line": 3089, "column": 21 } } @@ -419782,15 +423044,15 @@ "binop": null }, "value": "aabb", - "start": 122603, - "end": 122607, + "start": 123117, + "end": 123121, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 21 }, "end": { - "line": 3081, + "line": 3089, "column": 25 } } @@ -419809,15 +423071,15 @@ "updateContext": null }, "value": "=", - "start": 122608, - "end": 122609, + "start": 123122, + "end": 123123, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 26 }, "end": { - "line": 3081, + "line": 3089, "column": 27 } } @@ -419835,15 +423097,15 @@ "binop": null }, "value": "cfg", - "start": 122610, - "end": 122613, + "start": 123124, + "end": 123127, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 28 }, "end": { - "line": 3081, + "line": 3089, "column": 31 } } @@ -419861,15 +423123,15 @@ "binop": null, "updateContext": null }, - "start": 122613, - "end": 122614, + "start": 123127, + "end": 123128, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 31 }, "end": { - "line": 3081, + "line": 3089, "column": 32 } } @@ -419887,15 +423149,15 @@ "binop": null }, "value": "aabb", - "start": 122614, - "end": 122618, + "start": 123128, + "end": 123132, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 32 }, "end": { - "line": 3081, + "line": 3089, "column": 36 } } @@ -419913,15 +423175,15 @@ "binop": null, "updateContext": null }, - "start": 122618, - "end": 122619, + "start": 123132, + "end": 123133, "loc": { "start": { - "line": 3081, + "line": 3089, "column": 36 }, "end": { - "line": 3081, + "line": 3089, "column": 37 } } @@ -419941,15 +423203,15 @@ "updateContext": null }, "value": "break", - "start": 122636, - "end": 122641, + "start": 123150, + "end": 123155, "loc": { "start": { - "line": 3082, + "line": 3090, "column": 16 }, "end": { - "line": 3082, + "line": 3090, "column": 21 } } @@ -419967,15 +423229,15 @@ "binop": null, "updateContext": null }, - "start": 122641, - "end": 122642, + "start": 123155, + "end": 123156, "loc": { "start": { - "line": 3082, + "line": 3090, "column": 21 }, "end": { - "line": 3082, + "line": 3090, "column": 22 } } @@ -419995,15 +423257,15 @@ "updateContext": null }, "value": "case", - "start": 122655, - "end": 122659, + "start": 123169, + "end": 123173, "loc": { "start": { - "line": 3083, + "line": 3091, "column": 12 }, "end": { - "line": 3083, + "line": 3091, "column": 16 } } @@ -420021,15 +423283,15 @@ "binop": null }, "value": "VBO_INSTANCED", - "start": 122660, - "end": 122673, + "start": 123174, + "end": 123187, "loc": { "start": { - "line": 3083, + "line": 3091, "column": 17 }, "end": { - "line": 3083, + "line": 3091, "column": 30 } } @@ -420047,15 +423309,15 @@ "binop": null, "updateContext": null }, - "start": 122673, - "end": 122674, + "start": 123187, + "end": 123188, "loc": { "start": { - "line": 3083, + "line": 3091, "column": 30 }, "end": { - "line": 3083, + "line": 3091, "column": 31 } } @@ -420073,15 +423335,15 @@ "binop": null }, "value": "mesh", - "start": 122691, - "end": 122695, + "start": 123205, + "end": 123209, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 16 }, "end": { - "line": 3084, + "line": 3092, "column": 20 } } @@ -420099,15 +423361,15 @@ "binop": null, "updateContext": null }, - "start": 122695, - "end": 122696, + "start": 123209, + "end": 123210, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 20 }, "end": { - "line": 3084, + "line": 3092, "column": 21 } } @@ -420125,15 +423387,15 @@ "binop": null }, "value": "layer", - "start": 122696, - "end": 122701, + "start": 123210, + "end": 123215, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 21 }, "end": { - "line": 3084, + "line": 3092, "column": 26 } } @@ -420152,15 +423414,15 @@ "updateContext": null }, "value": "=", - "start": 122702, - "end": 122703, + "start": 123216, + "end": 123217, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 27 }, "end": { - "line": 3084, + "line": 3092, "column": 28 } } @@ -420180,15 +423442,15 @@ "updateContext": null }, "value": "this", - "start": 122704, - "end": 122708, + "start": 123218, + "end": 123222, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 29 }, "end": { - "line": 3084, + "line": 3092, "column": 33 } } @@ -420206,15 +423468,15 @@ "binop": null, "updateContext": null }, - "start": 122708, - "end": 122709, + "start": 123222, + "end": 123223, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 33 }, "end": { - "line": 3084, + "line": 3092, "column": 34 } } @@ -420232,15 +423494,15 @@ "binop": null }, "value": "_getVBOInstancingLayer", - "start": 122709, - "end": 122731, + "start": 123223, + "end": 123245, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 34 }, "end": { - "line": 3084, + "line": 3092, "column": 56 } } @@ -420257,15 +423519,15 @@ "postfix": false, "binop": null }, - "start": 122731, - "end": 122732, + "start": 123245, + "end": 123246, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 56 }, "end": { - "line": 3084, + "line": 3092, "column": 57 } } @@ -420283,15 +423545,15 @@ "binop": null }, "value": "cfg", - "start": 122732, - "end": 122735, + "start": 123246, + "end": 123249, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 57 }, "end": { - "line": 3084, + "line": 3092, "column": 60 } } @@ -420308,15 +423570,15 @@ "postfix": false, "binop": null }, - "start": 122735, - "end": 122736, + "start": 123249, + "end": 123250, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 60 }, "end": { - "line": 3084, + "line": 3092, "column": 61 } } @@ -420334,15 +423596,15 @@ "binop": null, "updateContext": null }, - "start": 122736, - "end": 122737, + "start": 123250, + "end": 123251, "loc": { "start": { - "line": 3084, + "line": 3092, "column": 61 }, "end": { - "line": 3084, + "line": 3092, "column": 62 } } @@ -420360,15 +423622,15 @@ "binop": null }, "value": "mesh", - "start": 122754, - "end": 122758, + "start": 123268, + "end": 123272, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 16 }, "end": { - "line": 3085, + "line": 3093, "column": 20 } } @@ -420386,15 +423648,15 @@ "binop": null, "updateContext": null }, - "start": 122758, - "end": 122759, + "start": 123272, + "end": 123273, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 20 }, "end": { - "line": 3085, + "line": 3093, "column": 21 } } @@ -420412,15 +423674,15 @@ "binop": null }, "value": "aabb", - "start": 122759, - "end": 122763, + "start": 123273, + "end": 123277, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 21 }, "end": { - "line": 3085, + "line": 3093, "column": 25 } } @@ -420439,15 +423701,15 @@ "updateContext": null }, "value": "=", - "start": 122764, - "end": 122765, + "start": 123278, + "end": 123279, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 26 }, "end": { - "line": 3085, + "line": 3093, "column": 27 } } @@ -420465,15 +423727,15 @@ "binop": null }, "value": "cfg", - "start": 122766, - "end": 122769, + "start": 123280, + "end": 123283, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 28 }, "end": { - "line": 3085, + "line": 3093, "column": 31 } } @@ -420491,15 +423753,15 @@ "binop": null, "updateContext": null }, - "start": 122769, - "end": 122770, + "start": 123283, + "end": 123284, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 31 }, "end": { - "line": 3085, + "line": 3093, "column": 32 } } @@ -420517,15 +423779,15 @@ "binop": null }, "value": "aabb", - "start": 122770, - "end": 122774, + "start": 123284, + "end": 123288, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 32 }, "end": { - "line": 3085, + "line": 3093, "column": 36 } } @@ -420543,15 +423805,15 @@ "binop": null, "updateContext": null }, - "start": 122774, - "end": 122775, + "start": 123288, + "end": 123289, "loc": { "start": { - "line": 3085, + "line": 3093, "column": 36 }, "end": { - "line": 3085, + "line": 3093, "column": 37 } } @@ -420571,15 +423833,15 @@ "updateContext": null }, "value": "break", - "start": 122792, - "end": 122797, + "start": 123306, + "end": 123311, "loc": { "start": { - "line": 3086, + "line": 3094, "column": 16 }, "end": { - "line": 3086, + "line": 3094, "column": 21 } } @@ -420597,15 +423859,15 @@ "binop": null, "updateContext": null }, - "start": 122797, - "end": 122798, + "start": 123311, + "end": 123312, "loc": { "start": { - "line": 3086, + "line": 3094, "column": 21 }, "end": { - "line": 3086, + "line": 3094, "column": 22 } } @@ -420622,15 +423884,15 @@ "postfix": false, "binop": null }, - "start": 122807, - "end": 122808, + "start": 123321, + "end": 123322, "loc": { "start": { - "line": 3087, + "line": 3095, "column": 8 }, "end": { - "line": 3087, + "line": 3095, "column": 9 } } @@ -420650,15 +423912,15 @@ "updateContext": null }, "value": "if", - "start": 122817, - "end": 122819, + "start": 123331, + "end": 123333, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 8 }, "end": { - "line": 3088, + "line": 3096, "column": 10 } } @@ -420675,15 +423937,15 @@ "postfix": false, "binop": null }, - "start": 122820, - "end": 122821, + "start": 123334, + "end": 123335, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 11 }, "end": { - "line": 3088, + "line": 3096, "column": 12 } } @@ -420701,15 +423963,15 @@ "binop": null }, "value": "cfg", - "start": 122821, - "end": 122824, + "start": 123335, + "end": 123338, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 12 }, "end": { - "line": 3088, + "line": 3096, "column": 15 } } @@ -420727,15 +423989,15 @@ "binop": null, "updateContext": null }, - "start": 122824, - "end": 122825, + "start": 123338, + "end": 123339, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 15 }, "end": { - "line": 3088, + "line": 3096, "column": 16 } } @@ -420753,15 +424015,15 @@ "binop": null }, "value": "transform", - "start": 122825, - "end": 122834, + "start": 123339, + "end": 123348, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 16 }, "end": { - "line": 3088, + "line": 3096, "column": 25 } } @@ -420778,15 +424040,15 @@ "postfix": false, "binop": null }, - "start": 122834, - "end": 122835, + "start": 123348, + "end": 123349, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 25 }, "end": { - "line": 3088, + "line": 3096, "column": 26 } } @@ -420803,15 +424065,15 @@ "postfix": false, "binop": null }, - "start": 122836, - "end": 122837, + "start": 123350, + "end": 123351, "loc": { "start": { - "line": 3088, + "line": 3096, "column": 27 }, "end": { - "line": 3088, + "line": 3096, "column": 28 } } @@ -420829,15 +424091,15 @@ "binop": null }, "value": "cfg", - "start": 122850, - "end": 122853, + "start": 123364, + "end": 123367, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 12 }, "end": { - "line": 3089, + "line": 3097, "column": 15 } } @@ -420855,15 +424117,15 @@ "binop": null, "updateContext": null }, - "start": 122853, - "end": 122854, + "start": 123367, + "end": 123368, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 15 }, "end": { - "line": 3089, + "line": 3097, "column": 16 } } @@ -420881,15 +424143,15 @@ "binop": null }, "value": "meshMatrix", - "start": 122854, - "end": 122864, + "start": 123368, + "end": 123378, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 16 }, "end": { - "line": 3089, + "line": 3097, "column": 26 } } @@ -420908,15 +424170,15 @@ "updateContext": null }, "value": "=", - "start": 122865, - "end": 122866, + "start": 123379, + "end": 123380, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 27 }, "end": { - "line": 3089, + "line": 3097, "column": 28 } } @@ -420934,15 +424196,15 @@ "binop": null }, "value": "cfg", - "start": 122867, - "end": 122870, + "start": 123381, + "end": 123384, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 29 }, "end": { - "line": 3089, + "line": 3097, "column": 32 } } @@ -420960,15 +424222,15 @@ "binop": null, "updateContext": null }, - "start": 122870, - "end": 122871, + "start": 123384, + "end": 123385, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 32 }, "end": { - "line": 3089, + "line": 3097, "column": 33 } } @@ -420986,15 +424248,15 @@ "binop": null }, "value": "transform", - "start": 122871, - "end": 122880, + "start": 123385, + "end": 123394, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 33 }, "end": { - "line": 3089, + "line": 3097, "column": 42 } } @@ -421012,15 +424274,15 @@ "binop": null, "updateContext": null }, - "start": 122880, - "end": 122881, + "start": 123394, + "end": 123395, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 42 }, "end": { - "line": 3089, + "line": 3097, "column": 43 } } @@ -421038,15 +424300,15 @@ "binop": null }, "value": "worldMatrix", - "start": 122881, - "end": 122892, + "start": 123395, + "end": 123406, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 43 }, "end": { - "line": 3089, + "line": 3097, "column": 54 } } @@ -421064,15 +424326,15 @@ "binop": null, "updateContext": null }, - "start": 122892, - "end": 122893, + "start": 123406, + "end": 123407, "loc": { "start": { - "line": 3089, + "line": 3097, "column": 54 }, "end": { - "line": 3089, + "line": 3097, "column": 55 } } @@ -421089,15 +424351,15 @@ "postfix": false, "binop": null }, - "start": 122902, - "end": 122903, + "start": 123416, + "end": 123417, "loc": { "start": { - "line": 3090, + "line": 3098, "column": 8 }, "end": { - "line": 3090, + "line": 3098, "column": 9 } } @@ -421115,15 +424377,15 @@ "binop": null }, "value": "mesh", - "start": 122912, - "end": 122916, + "start": 123426, + "end": 123430, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 8 }, "end": { - "line": 3091, + "line": 3099, "column": 12 } } @@ -421141,15 +424403,15 @@ "binop": null, "updateContext": null }, - "start": 122916, - "end": 122917, + "start": 123430, + "end": 123431, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 12 }, "end": { - "line": 3091, + "line": 3099, "column": 13 } } @@ -421167,15 +424429,15 @@ "binop": null }, "value": "portionId", - "start": 122917, - "end": 122926, + "start": 123431, + "end": 123440, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 13 }, "end": { - "line": 3091, + "line": 3099, "column": 22 } } @@ -421194,15 +424456,15 @@ "updateContext": null }, "value": "=", - "start": 122927, - "end": 122928, + "start": 123441, + "end": 123442, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 23 }, "end": { - "line": 3091, + "line": 3099, "column": 24 } } @@ -421220,15 +424482,15 @@ "binop": null }, "value": "mesh", - "start": 122929, - "end": 122933, + "start": 123443, + "end": 123447, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 25 }, "end": { - "line": 3091, + "line": 3099, "column": 29 } } @@ -421246,15 +424508,15 @@ "binop": null, "updateContext": null }, - "start": 122933, - "end": 122934, + "start": 123447, + "end": 123448, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 29 }, "end": { - "line": 3091, + "line": 3099, "column": 30 } } @@ -421272,15 +424534,15 @@ "binop": null }, "value": "layer", - "start": 122934, - "end": 122939, + "start": 123448, + "end": 123453, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 30 }, "end": { - "line": 3091, + "line": 3099, "column": 35 } } @@ -421298,15 +424560,15 @@ "binop": null, "updateContext": null }, - "start": 122939, - "end": 122940, + "start": 123453, + "end": 123454, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 35 }, "end": { - "line": 3091, + "line": 3099, "column": 36 } } @@ -421324,15 +424586,15 @@ "binop": null }, "value": "createPortion", - "start": 122940, - "end": 122953, + "start": 123454, + "end": 123467, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 36 }, "end": { - "line": 3091, + "line": 3099, "column": 49 } } @@ -421349,15 +424611,15 @@ "postfix": false, "binop": null }, - "start": 122953, - "end": 122954, + "start": 123467, + "end": 123468, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 49 }, "end": { - "line": 3091, + "line": 3099, "column": 50 } } @@ -421375,15 +424637,15 @@ "binop": null }, "value": "mesh", - "start": 122954, - "end": 122958, + "start": 123468, + "end": 123472, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 50 }, "end": { - "line": 3091, + "line": 3099, "column": 54 } } @@ -421401,15 +424663,15 @@ "binop": null, "updateContext": null }, - "start": 122958, - "end": 122959, + "start": 123472, + "end": 123473, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 54 }, "end": { - "line": 3091, + "line": 3099, "column": 55 } } @@ -421427,15 +424689,15 @@ "binop": null }, "value": "cfg", - "start": 122960, - "end": 122963, + "start": 123474, + "end": 123477, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 56 }, "end": { - "line": 3091, + "line": 3099, "column": 59 } } @@ -421452,15 +424714,15 @@ "postfix": false, "binop": null }, - "start": 122963, - "end": 122964, + "start": 123477, + "end": 123478, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 59 }, "end": { - "line": 3091, + "line": 3099, "column": 60 } } @@ -421478,15 +424740,15 @@ "binop": null, "updateContext": null }, - "start": 122964, - "end": 122965, + "start": 123478, + "end": 123479, "loc": { "start": { - "line": 3091, + "line": 3099, "column": 60 }, "end": { - "line": 3091, + "line": 3099, "column": 61 } } @@ -421506,15 +424768,15 @@ "updateContext": null }, "value": "this", - "start": 122974, - "end": 122978, + "start": 123488, + "end": 123492, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 8 }, "end": { - "line": 3092, + "line": 3100, "column": 12 } } @@ -421532,15 +424794,15 @@ "binop": null, "updateContext": null }, - "start": 122978, - "end": 122979, + "start": 123492, + "end": 123493, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 12 }, "end": { - "line": 3092, + "line": 3100, "column": 13 } } @@ -421558,15 +424820,15 @@ "binop": null }, "value": "_meshes", - "start": 122979, - "end": 122986, + "start": 123493, + "end": 123500, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 13 }, "end": { - "line": 3092, + "line": 3100, "column": 20 } } @@ -421584,15 +424846,15 @@ "binop": null, "updateContext": null }, - "start": 122986, - "end": 122987, + "start": 123500, + "end": 123501, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 20 }, "end": { - "line": 3092, + "line": 3100, "column": 21 } } @@ -421610,15 +424872,15 @@ "binop": null }, "value": "cfg", - "start": 122987, - "end": 122990, + "start": 123501, + "end": 123504, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 21 }, "end": { - "line": 3092, + "line": 3100, "column": 24 } } @@ -421636,15 +424898,15 @@ "binop": null, "updateContext": null }, - "start": 122990, - "end": 122991, + "start": 123504, + "end": 123505, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 24 }, "end": { - "line": 3092, + "line": 3100, "column": 25 } } @@ -421662,15 +424924,15 @@ "binop": null }, "value": "id", - "start": 122991, - "end": 122993, + "start": 123505, + "end": 123507, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 25 }, "end": { - "line": 3092, + "line": 3100, "column": 27 } } @@ -421688,15 +424950,15 @@ "binop": null, "updateContext": null }, - "start": 122993, - "end": 122994, + "start": 123507, + "end": 123508, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 27 }, "end": { - "line": 3092, + "line": 3100, "column": 28 } } @@ -421715,15 +424977,15 @@ "updateContext": null }, "value": "=", - "start": 122995, - "end": 122996, + "start": 123509, + "end": 123510, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 29 }, "end": { - "line": 3092, + "line": 3100, "column": 30 } } @@ -421741,15 +425003,15 @@ "binop": null }, "value": "mesh", - "start": 122997, - "end": 123001, + "start": 123511, + "end": 123515, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 31 }, "end": { - "line": 3092, + "line": 3100, "column": 35 } } @@ -421767,15 +425029,15 @@ "binop": null, "updateContext": null }, - "start": 123001, - "end": 123002, + "start": 123515, + "end": 123516, "loc": { "start": { - "line": 3092, + "line": 3100, "column": 35 }, "end": { - "line": 3092, + "line": 3100, "column": 36 } } @@ -421795,15 +425057,15 @@ "updateContext": null }, "value": "this", - "start": 123011, - "end": 123015, + "start": 123525, + "end": 123529, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 8 }, "end": { - "line": 3093, + "line": 3101, "column": 12 } } @@ -421821,15 +425083,15 @@ "binop": null, "updateContext": null }, - "start": 123015, - "end": 123016, + "start": 123529, + "end": 123530, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 12 }, "end": { - "line": 3093, + "line": 3101, "column": 13 } } @@ -421847,15 +425109,15 @@ "binop": null }, "value": "_unusedMeshes", - "start": 123016, - "end": 123029, + "start": 123530, + "end": 123543, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 13 }, "end": { - "line": 3093, + "line": 3101, "column": 26 } } @@ -421873,15 +425135,15 @@ "binop": null, "updateContext": null }, - "start": 123029, - "end": 123030, + "start": 123543, + "end": 123544, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 26 }, "end": { - "line": 3093, + "line": 3101, "column": 27 } } @@ -421899,15 +425161,15 @@ "binop": null }, "value": "cfg", - "start": 123030, - "end": 123033, + "start": 123544, + "end": 123547, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 27 }, "end": { - "line": 3093, + "line": 3101, "column": 30 } } @@ -421925,15 +425187,15 @@ "binop": null, "updateContext": null }, - "start": 123033, - "end": 123034, + "start": 123547, + "end": 123548, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 30 }, "end": { - "line": 3093, + "line": 3101, "column": 31 } } @@ -421951,15 +425213,15 @@ "binop": null }, "value": "id", - "start": 123034, - "end": 123036, + "start": 123548, + "end": 123550, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 31 }, "end": { - "line": 3093, + "line": 3101, "column": 33 } } @@ -421977,15 +425239,15 @@ "binop": null, "updateContext": null }, - "start": 123036, - "end": 123037, + "start": 123550, + "end": 123551, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 33 }, "end": { - "line": 3093, + "line": 3101, "column": 34 } } @@ -422004,15 +425266,15 @@ "updateContext": null }, "value": "=", - "start": 123038, - "end": 123039, + "start": 123552, + "end": 123553, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 35 }, "end": { - "line": 3093, + "line": 3101, "column": 36 } } @@ -422030,15 +425292,15 @@ "binop": null }, "value": "mesh", - "start": 123040, - "end": 123044, + "start": 123554, + "end": 123558, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 37 }, "end": { - "line": 3093, + "line": 3101, "column": 41 } } @@ -422056,15 +425318,15 @@ "binop": null, "updateContext": null }, - "start": 123044, - "end": 123045, + "start": 123558, + "end": 123559, "loc": { "start": { - "line": 3093, + "line": 3101, "column": 41 }, "end": { - "line": 3093, + "line": 3101, "column": 42 } } @@ -422084,15 +425346,15 @@ "updateContext": null }, "value": "this", - "start": 123054, - "end": 123058, + "start": 123568, + "end": 123572, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 8 }, "end": { - "line": 3094, + "line": 3102, "column": 12 } } @@ -422110,15 +425372,15 @@ "binop": null, "updateContext": null }, - "start": 123058, - "end": 123059, + "start": 123572, + "end": 123573, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 12 }, "end": { - "line": 3094, + "line": 3102, "column": 13 } } @@ -422136,15 +425398,15 @@ "binop": null }, "value": "_meshList", - "start": 123059, - "end": 123068, + "start": 123573, + "end": 123582, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 13 }, "end": { - "line": 3094, + "line": 3102, "column": 22 } } @@ -422162,15 +425424,15 @@ "binop": null, "updateContext": null }, - "start": 123068, - "end": 123069, + "start": 123582, + "end": 123583, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 22 }, "end": { - "line": 3094, + "line": 3102, "column": 23 } } @@ -422188,15 +425450,15 @@ "binop": null }, "value": "push", - "start": 123069, - "end": 123073, + "start": 123583, + "end": 123587, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 23 }, "end": { - "line": 3094, + "line": 3102, "column": 27 } } @@ -422213,15 +425475,15 @@ "postfix": false, "binop": null }, - "start": 123073, - "end": 123074, + "start": 123587, + "end": 123588, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 27 }, "end": { - "line": 3094, + "line": 3102, "column": 28 } } @@ -422239,15 +425501,15 @@ "binop": null }, "value": "mesh", - "start": 123074, - "end": 123078, + "start": 123588, + "end": 123592, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 28 }, "end": { - "line": 3094, + "line": 3102, "column": 32 } } @@ -422264,15 +425526,15 @@ "postfix": false, "binop": null }, - "start": 123078, - "end": 123079, + "start": 123592, + "end": 123593, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 32 }, "end": { - "line": 3094, + "line": 3102, "column": 33 } } @@ -422290,15 +425552,15 @@ "binop": null, "updateContext": null }, - "start": 123079, - "end": 123080, + "start": 123593, + "end": 123594, "loc": { "start": { - "line": 3094, + "line": 3102, "column": 33 }, "end": { - "line": 3094, + "line": 3102, "column": 34 } } @@ -422318,15 +425580,15 @@ "updateContext": null }, "value": "return", - "start": 123089, - "end": 123095, + "start": 123603, + "end": 123609, "loc": { "start": { - "line": 3095, + "line": 3103, "column": 8 }, "end": { - "line": 3095, + "line": 3103, "column": 14 } } @@ -422344,15 +425606,15 @@ "binop": null }, "value": "mesh", - "start": 123096, - "end": 123100, + "start": 123610, + "end": 123614, "loc": { "start": { - "line": 3095, + "line": 3103, "column": 15 }, "end": { - "line": 3095, + "line": 3103, "column": 19 } } @@ -422370,15 +425632,15 @@ "binop": null, "updateContext": null }, - "start": 123100, - "end": 123101, + "start": 123614, + "end": 123615, "loc": { "start": { - "line": 3095, + "line": 3103, "column": 19 }, "end": { - "line": 3095, + "line": 3103, "column": 20 } } @@ -422395,15 +425657,15 @@ "postfix": false, "binop": null }, - "start": 123106, - "end": 123107, + "start": 123620, + "end": 123621, "loc": { "start": { - "line": 3096, + "line": 3104, "column": 4 }, "end": { - "line": 3096, + "line": 3104, "column": 5 } } @@ -422421,15 +425683,15 @@ "binop": null }, "value": "_getNumPrimitives", - "start": 123113, - "end": 123130, + "start": 123627, + "end": 123644, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 4 }, "end": { - "line": 3098, + "line": 3106, "column": 21 } } @@ -422446,15 +425708,15 @@ "postfix": false, "binop": null }, - "start": 123130, - "end": 123131, + "start": 123644, + "end": 123645, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 21 }, "end": { - "line": 3098, + "line": 3106, "column": 22 } } @@ -422472,15 +425734,15 @@ "binop": null }, "value": "cfg", - "start": 123131, - "end": 123134, + "start": 123645, + "end": 123648, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 22 }, "end": { - "line": 3098, + "line": 3106, "column": 25 } } @@ -422497,15 +425759,15 @@ "postfix": false, "binop": null }, - "start": 123134, - "end": 123135, + "start": 123648, + "end": 123649, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 25 }, "end": { - "line": 3098, + "line": 3106, "column": 26 } } @@ -422522,15 +425784,15 @@ "postfix": false, "binop": null }, - "start": 123136, - "end": 123137, + "start": 123650, + "end": 123651, "loc": { "start": { - "line": 3098, + "line": 3106, "column": 27 }, "end": { - "line": 3098, + "line": 3106, "column": 28 } } @@ -422550,15 +425812,15 @@ "updateContext": null }, "value": "let", - "start": 123146, - "end": 123149, + "start": 123660, + "end": 123663, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 8 }, "end": { - "line": 3099, + "line": 3107, "column": 11 } } @@ -422576,15 +425838,15 @@ "binop": null }, "value": "countIndices", - "start": 123150, - "end": 123162, + "start": 123664, + "end": 123676, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 12 }, "end": { - "line": 3099, + "line": 3107, "column": 24 } } @@ -422603,15 +425865,15 @@ "updateContext": null }, "value": "=", - "start": 123163, - "end": 123164, + "start": 123677, + "end": 123678, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 25 }, "end": { - "line": 3099, + "line": 3107, "column": 26 } } @@ -422630,15 +425892,15 @@ "updateContext": null }, "value": 0, - "start": 123165, - "end": 123166, + "start": 123679, + "end": 123680, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 27 }, "end": { - "line": 3099, + "line": 3107, "column": 28 } } @@ -422656,15 +425918,15 @@ "binop": null, "updateContext": null }, - "start": 123166, - "end": 123167, + "start": 123680, + "end": 123681, "loc": { "start": { - "line": 3099, + "line": 3107, "column": 28 }, "end": { - "line": 3099, + "line": 3107, "column": 29 } } @@ -422684,15 +425946,15 @@ "updateContext": null }, "value": "const", - "start": 123176, - "end": 123181, + "start": 123690, + "end": 123695, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 8 }, "end": { - "line": 3100, + "line": 3108, "column": 13 } } @@ -422710,15 +425972,15 @@ "binop": null }, "value": "primitive", - "start": 123182, - "end": 123191, + "start": 123696, + "end": 123705, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 14 }, "end": { - "line": 3100, + "line": 3108, "column": 23 } } @@ -422737,15 +425999,15 @@ "updateContext": null }, "value": "=", - "start": 123192, - "end": 123193, + "start": 123706, + "end": 123707, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 24 }, "end": { - "line": 3100, + "line": 3108, "column": 25 } } @@ -422763,15 +426025,15 @@ "binop": null }, "value": "cfg", - "start": 123194, - "end": 123197, + "start": 123708, + "end": 123711, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 26 }, "end": { - "line": 3100, + "line": 3108, "column": 29 } } @@ -422789,15 +426051,15 @@ "binop": null, "updateContext": null }, - "start": 123197, - "end": 123198, + "start": 123711, + "end": 123712, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 29 }, "end": { - "line": 3100, + "line": 3108, "column": 30 } } @@ -422815,15 +426077,15 @@ "binop": null }, "value": "geometry", - "start": 123198, - "end": 123206, + "start": 123712, + "end": 123720, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 30 }, "end": { - "line": 3100, + "line": 3108, "column": 38 } } @@ -422841,15 +426103,15 @@ "binop": null, "updateContext": null }, - "start": 123207, - "end": 123208, + "start": 123721, + "end": 123722, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 39 }, "end": { - "line": 3100, + "line": 3108, "column": 40 } } @@ -422867,15 +426129,15 @@ "binop": null }, "value": "cfg", - "start": 123209, - "end": 123212, + "start": 123723, + "end": 123726, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 41 }, "end": { - "line": 3100, + "line": 3108, "column": 44 } } @@ -422893,15 +426155,15 @@ "binop": null, "updateContext": null }, - "start": 123212, - "end": 123213, + "start": 123726, + "end": 123727, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 44 }, "end": { - "line": 3100, + "line": 3108, "column": 45 } } @@ -422919,15 +426181,15 @@ "binop": null }, "value": "geometry", - "start": 123213, - "end": 123221, + "start": 123727, + "end": 123735, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 45 }, "end": { - "line": 3100, + "line": 3108, "column": 53 } } @@ -422945,15 +426207,15 @@ "binop": null, "updateContext": null }, - "start": 123221, - "end": 123222, + "start": 123735, + "end": 123736, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 53 }, "end": { - "line": 3100, + "line": 3108, "column": 54 } } @@ -422971,15 +426233,15 @@ "binop": null }, "value": "primitive", - "start": 123222, - "end": 123231, + "start": 123736, + "end": 123745, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 54 }, "end": { - "line": 3100, + "line": 3108, "column": 63 } } @@ -422997,15 +426259,15 @@ "binop": null, "updateContext": null }, - "start": 123232, - "end": 123233, + "start": 123746, + "end": 123747, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 64 }, "end": { - "line": 3100, + "line": 3108, "column": 65 } } @@ -423023,15 +426285,15 @@ "binop": null }, "value": "cfg", - "start": 123234, - "end": 123237, + "start": 123748, + "end": 123751, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 66 }, "end": { - "line": 3100, + "line": 3108, "column": 69 } } @@ -423049,15 +426311,15 @@ "binop": null, "updateContext": null }, - "start": 123237, - "end": 123238, + "start": 123751, + "end": 123752, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 69 }, "end": { - "line": 3100, + "line": 3108, "column": 70 } } @@ -423075,15 +426337,15 @@ "binop": null }, "value": "primitive", - "start": 123238, - "end": 123247, + "start": 123752, + "end": 123761, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 70 }, "end": { - "line": 3100, + "line": 3108, "column": 79 } } @@ -423101,15 +426363,15 @@ "binop": null, "updateContext": null }, - "start": 123247, - "end": 123248, + "start": 123761, + "end": 123762, "loc": { "start": { - "line": 3100, + "line": 3108, "column": 79 }, "end": { - "line": 3100, + "line": 3108, "column": 80 } } @@ -423129,15 +426391,15 @@ "updateContext": null }, "value": "switch", - "start": 123257, - "end": 123263, + "start": 123771, + "end": 123777, "loc": { "start": { - "line": 3101, + "line": 3109, "column": 8 }, "end": { - "line": 3101, + "line": 3109, "column": 14 } } @@ -423154,15 +426416,15 @@ "postfix": false, "binop": null }, - "start": 123264, - "end": 123265, + "start": 123778, + "end": 123779, "loc": { "start": { - "line": 3101, + "line": 3109, "column": 15 }, "end": { - "line": 3101, + "line": 3109, "column": 16 } } @@ -423180,15 +426442,15 @@ "binop": null }, "value": "primitive", - "start": 123265, - "end": 123274, + "start": 123779, + "end": 123788, "loc": { "start": { - "line": 3101, + "line": 3109, "column": 16 }, "end": { - "line": 3101, + "line": 3109, "column": 25 } } @@ -423205,15 +426467,15 @@ "postfix": false, "binop": null }, - "start": 123274, - "end": 123275, + "start": 123788, + "end": 123789, "loc": { "start": { - "line": 3101, + "line": 3109, "column": 25 }, "end": { - "line": 3101, + "line": 3109, "column": 26 } } @@ -423230,15 +426492,15 @@ "postfix": false, "binop": null }, - "start": 123276, - "end": 123277, + "start": 123790, + "end": 123791, "loc": { "start": { - "line": 3101, + "line": 3109, "column": 27 }, "end": { - "line": 3101, + "line": 3109, "column": 28 } } @@ -423258,15 +426520,15 @@ "updateContext": null }, "value": "case", - "start": 123290, - "end": 123294, + "start": 123804, + "end": 123808, "loc": { "start": { - "line": 3102, + "line": 3110, "column": 12 }, "end": { - "line": 3102, + "line": 3110, "column": 16 } } @@ -423285,15 +426547,15 @@ "updateContext": null }, "value": "triangles", - "start": 123295, - "end": 123306, + "start": 123809, + "end": 123820, "loc": { "start": { - "line": 3102, + "line": 3110, "column": 17 }, "end": { - "line": 3102, + "line": 3110, "column": 28 } } @@ -423311,15 +426573,15 @@ "binop": null, "updateContext": null }, - "start": 123306, - "end": 123307, + "start": 123820, + "end": 123821, "loc": { "start": { - "line": 3102, + "line": 3110, "column": 28 }, "end": { - "line": 3102, + "line": 3110, "column": 29 } } @@ -423339,15 +426601,15 @@ "updateContext": null }, "value": "case", - "start": 123320, - "end": 123324, + "start": 123834, + "end": 123838, "loc": { "start": { - "line": 3103, + "line": 3111, "column": 12 }, "end": { - "line": 3103, + "line": 3111, "column": 16 } } @@ -423366,15 +426628,15 @@ "updateContext": null }, "value": "solid", - "start": 123325, - "end": 123332, + "start": 123839, + "end": 123846, "loc": { "start": { - "line": 3103, + "line": 3111, "column": 17 }, "end": { - "line": 3103, + "line": 3111, "column": 24 } } @@ -423392,15 +426654,15 @@ "binop": null, "updateContext": null }, - "start": 123332, - "end": 123333, + "start": 123846, + "end": 123847, "loc": { "start": { - "line": 3103, + "line": 3111, "column": 24 }, "end": { - "line": 3103, + "line": 3111, "column": 25 } } @@ -423420,15 +426682,15 @@ "updateContext": null }, "value": "case", - "start": 123346, - "end": 123350, + "start": 123860, + "end": 123864, "loc": { "start": { - "line": 3104, + "line": 3112, "column": 12 }, "end": { - "line": 3104, + "line": 3112, "column": 16 } } @@ -423447,15 +426709,15 @@ "updateContext": null }, "value": "surface", - "start": 123351, - "end": 123360, + "start": 123865, + "end": 123874, "loc": { "start": { - "line": 3104, + "line": 3112, "column": 17 }, "end": { - "line": 3104, + "line": 3112, "column": 26 } } @@ -423473,15 +426735,15 @@ "binop": null, "updateContext": null }, - "start": 123360, - "end": 123361, + "start": 123874, + "end": 123875, "loc": { "start": { - "line": 3104, + "line": 3112, "column": 26 }, "end": { - "line": 3104, + "line": 3112, "column": 27 } } @@ -423501,15 +426763,15 @@ "updateContext": null }, "value": "switch", - "start": 123378, - "end": 123384, + "start": 123892, + "end": 123898, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 16 }, "end": { - "line": 3105, + "line": 3113, "column": 22 } } @@ -423526,15 +426788,15 @@ "postfix": false, "binop": null }, - "start": 123385, - "end": 123386, + "start": 123899, + "end": 123900, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 23 }, "end": { - "line": 3105, + "line": 3113, "column": 24 } } @@ -423552,15 +426814,15 @@ "binop": null }, "value": "cfg", - "start": 123386, - "end": 123389, + "start": 123900, + "end": 123903, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 24 }, "end": { - "line": 3105, + "line": 3113, "column": 27 } } @@ -423578,15 +426840,15 @@ "binop": null, "updateContext": null }, - "start": 123389, - "end": 123390, + "start": 123903, + "end": 123904, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 27 }, "end": { - "line": 3105, + "line": 3113, "column": 28 } } @@ -423604,15 +426866,15 @@ "binop": null }, "value": "type", - "start": 123390, - "end": 123394, + "start": 123904, + "end": 123908, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 28 }, "end": { - "line": 3105, + "line": 3113, "column": 32 } } @@ -423629,15 +426891,15 @@ "postfix": false, "binop": null }, - "start": 123394, - "end": 123395, + "start": 123908, + "end": 123909, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 32 }, "end": { - "line": 3105, + "line": 3113, "column": 33 } } @@ -423654,15 +426916,15 @@ "postfix": false, "binop": null }, - "start": 123396, - "end": 123397, + "start": 123910, + "end": 123911, "loc": { "start": { - "line": 3105, + "line": 3113, "column": 34 }, "end": { - "line": 3105, + "line": 3113, "column": 35 } } @@ -423682,15 +426944,15 @@ "updateContext": null }, "value": "case", - "start": 123418, - "end": 123422, + "start": 123932, + "end": 123936, "loc": { "start": { - "line": 3106, + "line": 3114, "column": 20 }, "end": { - "line": 3106, + "line": 3114, "column": 24 } } @@ -423708,15 +426970,15 @@ "binop": null }, "value": "DTX", - "start": 123423, - "end": 123426, + "start": 123937, + "end": 123940, "loc": { "start": { - "line": 3106, + "line": 3114, "column": 25 }, "end": { - "line": 3106, + "line": 3114, "column": 28 } } @@ -423734,15 +426996,15 @@ "binop": null, "updateContext": null }, - "start": 123426, - "end": 123427, + "start": 123940, + "end": 123941, "loc": { "start": { - "line": 3106, + "line": 3114, "column": 28 }, "end": { - "line": 3106, + "line": 3114, "column": 29 } } @@ -423762,15 +427024,15 @@ "updateContext": null }, "value": "for", - "start": 123452, - "end": 123455, + "start": 123966, + "end": 123969, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 24 }, "end": { - "line": 3107, + "line": 3115, "column": 27 } } @@ -423787,15 +427049,15 @@ "postfix": false, "binop": null }, - "start": 123456, - "end": 123457, + "start": 123970, + "end": 123971, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 28 }, "end": { - "line": 3107, + "line": 3115, "column": 29 } } @@ -423815,15 +427077,15 @@ "updateContext": null }, "value": "let", - "start": 123457, - "end": 123460, + "start": 123971, + "end": 123974, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 29 }, "end": { - "line": 3107, + "line": 3115, "column": 32 } } @@ -423841,15 +427103,15 @@ "binop": null }, "value": "i", - "start": 123461, - "end": 123462, + "start": 123975, + "end": 123976, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 33 }, "end": { - "line": 3107, + "line": 3115, "column": 34 } } @@ -423868,15 +427130,15 @@ "updateContext": null }, "value": "=", - "start": 123463, - "end": 123464, + "start": 123977, + "end": 123978, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 35 }, "end": { - "line": 3107, + "line": 3115, "column": 36 } } @@ -423895,15 +427157,15 @@ "updateContext": null }, "value": 0, - "start": 123465, - "end": 123466, + "start": 123979, + "end": 123980, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 37 }, "end": { - "line": 3107, + "line": 3115, "column": 38 } } @@ -423921,15 +427183,15 @@ "binop": null, "updateContext": null }, - "start": 123466, - "end": 123467, + "start": 123980, + "end": 123981, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 38 }, "end": { - "line": 3107, + "line": 3115, "column": 39 } } @@ -423947,15 +427209,15 @@ "binop": null }, "value": "len", - "start": 123468, - "end": 123471, + "start": 123982, + "end": 123985, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 40 }, "end": { - "line": 3107, + "line": 3115, "column": 43 } } @@ -423974,15 +427236,15 @@ "updateContext": null }, "value": "=", - "start": 123472, - "end": 123473, + "start": 123986, + "end": 123987, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 44 }, "end": { - "line": 3107, + "line": 3115, "column": 45 } } @@ -424000,15 +427262,15 @@ "binop": null }, "value": "cfg", - "start": 123474, - "end": 123477, + "start": 123988, + "end": 123991, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 46 }, "end": { - "line": 3107, + "line": 3115, "column": 49 } } @@ -424026,15 +427288,15 @@ "binop": null, "updateContext": null }, - "start": 123477, - "end": 123478, + "start": 123991, + "end": 123992, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 49 }, "end": { - "line": 3107, + "line": 3115, "column": 50 } } @@ -424052,15 +427314,15 @@ "binop": null }, "value": "buckets", - "start": 123478, - "end": 123485, + "start": 123992, + "end": 123999, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 50 }, "end": { - "line": 3107, + "line": 3115, "column": 57 } } @@ -424078,15 +427340,15 @@ "binop": null, "updateContext": null }, - "start": 123485, - "end": 123486, + "start": 123999, + "end": 124000, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 57 }, "end": { - "line": 3107, + "line": 3115, "column": 58 } } @@ -424104,15 +427366,15 @@ "binop": null }, "value": "length", - "start": 123486, - "end": 123492, + "start": 124000, + "end": 124006, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 58 }, "end": { - "line": 3107, + "line": 3115, "column": 64 } } @@ -424130,15 +427392,15 @@ "binop": null, "updateContext": null }, - "start": 123492, - "end": 123493, + "start": 124006, + "end": 124007, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 64 }, "end": { - "line": 3107, + "line": 3115, "column": 65 } } @@ -424156,15 +427418,15 @@ "binop": null }, "value": "i", - "start": 123494, - "end": 123495, + "start": 124008, + "end": 124009, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 66 }, "end": { - "line": 3107, + "line": 3115, "column": 67 } } @@ -424183,15 +427445,15 @@ "updateContext": null }, "value": "<", - "start": 123496, - "end": 123497, + "start": 124010, + "end": 124011, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 68 }, "end": { - "line": 3107, + "line": 3115, "column": 69 } } @@ -424209,15 +427471,15 @@ "binop": null }, "value": "len", - "start": 123498, - "end": 123501, + "start": 124012, + "end": 124015, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 70 }, "end": { - "line": 3107, + "line": 3115, "column": 73 } } @@ -424235,15 +427497,15 @@ "binop": null, "updateContext": null }, - "start": 123501, - "end": 123502, + "start": 124015, + "end": 124016, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 73 }, "end": { - "line": 3107, + "line": 3115, "column": 74 } } @@ -424261,15 +427523,15 @@ "binop": null }, "value": "i", - "start": 123503, - "end": 123504, + "start": 124017, + "end": 124018, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 75 }, "end": { - "line": 3107, + "line": 3115, "column": 76 } } @@ -424287,15 +427549,15 @@ "binop": null }, "value": "++", - "start": 123504, - "end": 123506, + "start": 124018, + "end": 124020, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 76 }, "end": { - "line": 3107, + "line": 3115, "column": 78 } } @@ -424312,15 +427574,15 @@ "postfix": false, "binop": null }, - "start": 123506, - "end": 123507, + "start": 124020, + "end": 124021, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 78 }, "end": { - "line": 3107, + "line": 3115, "column": 79 } } @@ -424337,15 +427599,15 @@ "postfix": false, "binop": null }, - "start": 123508, - "end": 123509, + "start": 124022, + "end": 124023, "loc": { "start": { - "line": 3107, + "line": 3115, "column": 80 }, "end": { - "line": 3107, + "line": 3115, "column": 81 } } @@ -424363,15 +427625,15 @@ "binop": null }, "value": "countIndices", - "start": 123538, - "end": 123550, + "start": 124052, + "end": 124064, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 28 }, "end": { - "line": 3108, + "line": 3116, "column": 40 } } @@ -424390,15 +427652,15 @@ "updateContext": null }, "value": "+=", - "start": 123551, - "end": 123553, + "start": 124065, + "end": 124067, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 41 }, "end": { - "line": 3108, + "line": 3116, "column": 43 } } @@ -424416,15 +427678,15 @@ "binop": null }, "value": "cfg", - "start": 123554, - "end": 123557, + "start": 124068, + "end": 124071, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 44 }, "end": { - "line": 3108, + "line": 3116, "column": 47 } } @@ -424442,15 +427704,15 @@ "binop": null, "updateContext": null }, - "start": 123557, - "end": 123558, + "start": 124071, + "end": 124072, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 47 }, "end": { - "line": 3108, + "line": 3116, "column": 48 } } @@ -424468,15 +427730,15 @@ "binop": null }, "value": "buckets", - "start": 123558, - "end": 123565, + "start": 124072, + "end": 124079, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 48 }, "end": { - "line": 3108, + "line": 3116, "column": 55 } } @@ -424494,15 +427756,15 @@ "binop": null, "updateContext": null }, - "start": 123565, - "end": 123566, + "start": 124079, + "end": 124080, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 55 }, "end": { - "line": 3108, + "line": 3116, "column": 56 } } @@ -424520,15 +427782,15 @@ "binop": null }, "value": "i", - "start": 123566, - "end": 123567, + "start": 124080, + "end": 124081, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 56 }, "end": { - "line": 3108, + "line": 3116, "column": 57 } } @@ -424546,15 +427808,15 @@ "binop": null, "updateContext": null }, - "start": 123567, - "end": 123568, + "start": 124081, + "end": 124082, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 57 }, "end": { - "line": 3108, + "line": 3116, "column": 58 } } @@ -424572,15 +427834,15 @@ "binop": null, "updateContext": null }, - "start": 123568, - "end": 123569, + "start": 124082, + "end": 124083, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 58 }, "end": { - "line": 3108, + "line": 3116, "column": 59 } } @@ -424598,15 +427860,15 @@ "binop": null }, "value": "indices", - "start": 123569, - "end": 123576, + "start": 124083, + "end": 124090, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 59 }, "end": { - "line": 3108, + "line": 3116, "column": 66 } } @@ -424624,15 +427886,15 @@ "binop": null, "updateContext": null }, - "start": 123576, - "end": 123577, + "start": 124090, + "end": 124091, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 66 }, "end": { - "line": 3108, + "line": 3116, "column": 67 } } @@ -424650,15 +427912,15 @@ "binop": null }, "value": "length", - "start": 123577, - "end": 123583, + "start": 124091, + "end": 124097, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 67 }, "end": { - "line": 3108, + "line": 3116, "column": 73 } } @@ -424676,15 +427938,15 @@ "binop": null, "updateContext": null }, - "start": 123583, - "end": 123584, + "start": 124097, + "end": 124098, "loc": { "start": { - "line": 3108, + "line": 3116, "column": 73 }, "end": { - "line": 3108, + "line": 3116, "column": 74 } } @@ -424701,15 +427963,15 @@ "postfix": false, "binop": null }, - "start": 123609, - "end": 123610, + "start": 124123, + "end": 124124, "loc": { "start": { - "line": 3109, + "line": 3117, "column": 24 }, "end": { - "line": 3109, + "line": 3117, "column": 25 } } @@ -424729,15 +427991,15 @@ "updateContext": null }, "value": "break", - "start": 123635, - "end": 123640, + "start": 124149, + "end": 124154, "loc": { "start": { - "line": 3110, + "line": 3118, "column": 24 }, "end": { - "line": 3110, + "line": 3118, "column": 29 } } @@ -424755,15 +428017,15 @@ "binop": null, "updateContext": null }, - "start": 123640, - "end": 123641, + "start": 124154, + "end": 124155, "loc": { "start": { - "line": 3110, + "line": 3118, "column": 29 }, "end": { - "line": 3110, + "line": 3118, "column": 30 } } @@ -424783,15 +428045,15 @@ "updateContext": null }, "value": "case", - "start": 123662, - "end": 123666, + "start": 124176, + "end": 124180, "loc": { "start": { - "line": 3111, + "line": 3119, "column": 20 }, "end": { - "line": 3111, + "line": 3119, "column": 24 } } @@ -424809,15 +428071,15 @@ "binop": null }, "value": "VBO_BATCHED", - "start": 123667, - "end": 123678, + "start": 124181, + "end": 124192, "loc": { "start": { - "line": 3111, + "line": 3119, "column": 25 }, "end": { - "line": 3111, + "line": 3119, "column": 36 } } @@ -424835,15 +428097,15 @@ "binop": null, "updateContext": null }, - "start": 123678, - "end": 123679, + "start": 124192, + "end": 124193, "loc": { "start": { - "line": 3111, + "line": 3119, "column": 36 }, "end": { - "line": 3111, + "line": 3119, "column": 37 } } @@ -424861,15 +428123,15 @@ "binop": null }, "value": "countIndices", - "start": 123704, - "end": 123716, + "start": 124218, + "end": 124230, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 24 }, "end": { - "line": 3112, + "line": 3120, "column": 36 } } @@ -424888,15 +428150,15 @@ "updateContext": null }, "value": "+=", - "start": 123717, - "end": 123719, + "start": 124231, + "end": 124233, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 37 }, "end": { - "line": 3112, + "line": 3120, "column": 39 } } @@ -424914,15 +428176,15 @@ "binop": null }, "value": "cfg", - "start": 123720, - "end": 123723, + "start": 124234, + "end": 124237, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 40 }, "end": { - "line": 3112, + "line": 3120, "column": 43 } } @@ -424940,15 +428202,15 @@ "binop": null, "updateContext": null }, - "start": 123723, - "end": 123724, + "start": 124237, + "end": 124238, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 43 }, "end": { - "line": 3112, + "line": 3120, "column": 44 } } @@ -424966,15 +428228,15 @@ "binop": null }, "value": "indices", - "start": 123724, - "end": 123731, + "start": 124238, + "end": 124245, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 44 }, "end": { - "line": 3112, + "line": 3120, "column": 51 } } @@ -424992,15 +428254,15 @@ "binop": null, "updateContext": null }, - "start": 123731, - "end": 123732, + "start": 124245, + "end": 124246, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 51 }, "end": { - "line": 3112, + "line": 3120, "column": 52 } } @@ -425018,15 +428280,15 @@ "binop": null }, "value": "length", - "start": 123732, - "end": 123738, + "start": 124246, + "end": 124252, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 52 }, "end": { - "line": 3112, + "line": 3120, "column": 58 } } @@ -425044,15 +428306,15 @@ "binop": null, "updateContext": null }, - "start": 123738, - "end": 123739, + "start": 124252, + "end": 124253, "loc": { "start": { - "line": 3112, + "line": 3120, "column": 58 }, "end": { - "line": 3112, + "line": 3120, "column": 59 } } @@ -425072,15 +428334,15 @@ "updateContext": null }, "value": "break", - "start": 123764, - "end": 123769, + "start": 124278, + "end": 124283, "loc": { "start": { - "line": 3113, + "line": 3121, "column": 24 }, "end": { - "line": 3113, + "line": 3121, "column": 29 } } @@ -425098,15 +428360,15 @@ "binop": null, "updateContext": null }, - "start": 123769, - "end": 123770, + "start": 124283, + "end": 124284, "loc": { "start": { - "line": 3113, + "line": 3121, "column": 29 }, "end": { - "line": 3113, + "line": 3121, "column": 30 } } @@ -425126,15 +428388,15 @@ "updateContext": null }, "value": "case", - "start": 123791, - "end": 123795, + "start": 124305, + "end": 124309, "loc": { "start": { - "line": 3114, + "line": 3122, "column": 20 }, "end": { - "line": 3114, + "line": 3122, "column": 24 } } @@ -425152,15 +428414,15 @@ "binop": null }, "value": "VBO_INSTANCED", - "start": 123796, - "end": 123809, + "start": 124310, + "end": 124323, "loc": { "start": { - "line": 3114, + "line": 3122, "column": 25 }, "end": { - "line": 3114, + "line": 3122, "column": 38 } } @@ -425178,15 +428440,15 @@ "binop": null, "updateContext": null }, - "start": 123809, - "end": 123810, + "start": 124323, + "end": 124324, "loc": { "start": { - "line": 3114, + "line": 3122, "column": 38 }, "end": { - "line": 3114, + "line": 3122, "column": 39 } } @@ -425204,15 +428466,15 @@ "binop": null }, "value": "countIndices", - "start": 123835, - "end": 123847, + "start": 124349, + "end": 124361, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 24 }, "end": { - "line": 3115, + "line": 3123, "column": 36 } } @@ -425231,15 +428493,15 @@ "updateContext": null }, "value": "+=", - "start": 123848, - "end": 123850, + "start": 124362, + "end": 124364, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 37 }, "end": { - "line": 3115, + "line": 3123, "column": 39 } } @@ -425257,15 +428519,15 @@ "binop": null }, "value": "cfg", - "start": 123851, - "end": 123854, + "start": 124365, + "end": 124368, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 40 }, "end": { - "line": 3115, + "line": 3123, "column": 43 } } @@ -425283,15 +428545,15 @@ "binop": null, "updateContext": null }, - "start": 123854, - "end": 123855, + "start": 124368, + "end": 124369, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 43 }, "end": { - "line": 3115, + "line": 3123, "column": 44 } } @@ -425309,15 +428571,15 @@ "binop": null }, "value": "geometry", - "start": 123855, - "end": 123863, + "start": 124369, + "end": 124377, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 44 }, "end": { - "line": 3115, + "line": 3123, "column": 52 } } @@ -425335,15 +428597,15 @@ "binop": null, "updateContext": null }, - "start": 123863, - "end": 123864, + "start": 124377, + "end": 124378, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 52 }, "end": { - "line": 3115, + "line": 3123, "column": 53 } } @@ -425361,15 +428623,15 @@ "binop": null }, "value": "indices", - "start": 123864, - "end": 123871, + "start": 124378, + "end": 124385, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 53 }, "end": { - "line": 3115, + "line": 3123, "column": 60 } } @@ -425387,15 +428649,15 @@ "binop": null, "updateContext": null }, - "start": 123871, - "end": 123872, + "start": 124385, + "end": 124386, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 60 }, "end": { - "line": 3115, + "line": 3123, "column": 61 } } @@ -425413,15 +428675,15 @@ "binop": null }, "value": "length", - "start": 123872, - "end": 123878, + "start": 124386, + "end": 124392, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 61 }, "end": { - "line": 3115, + "line": 3123, "column": 67 } } @@ -425439,15 +428701,15 @@ "binop": null, "updateContext": null }, - "start": 123878, - "end": 123879, + "start": 124392, + "end": 124393, "loc": { "start": { - "line": 3115, + "line": 3123, "column": 67 }, "end": { - "line": 3115, + "line": 3123, "column": 68 } } @@ -425467,15 +428729,15 @@ "updateContext": null }, "value": "break", - "start": 123904, - "end": 123909, + "start": 124418, + "end": 124423, "loc": { "start": { - "line": 3116, + "line": 3124, "column": 24 }, "end": { - "line": 3116, + "line": 3124, "column": 29 } } @@ -425493,15 +428755,15 @@ "binop": null, "updateContext": null }, - "start": 123909, - "end": 123910, + "start": 124423, + "end": 124424, "loc": { "start": { - "line": 3116, + "line": 3124, "column": 29 }, "end": { - "line": 3116, + "line": 3124, "column": 30 } } @@ -425518,15 +428780,15 @@ "postfix": false, "binop": null }, - "start": 123927, - "end": 123928, + "start": 124441, + "end": 124442, "loc": { "start": { - "line": 3117, + "line": 3125, "column": 16 }, "end": { - "line": 3117, + "line": 3125, "column": 17 } } @@ -425546,15 +428808,15 @@ "updateContext": null }, "value": "return", - "start": 123945, - "end": 123951, + "start": 124459, + "end": 124465, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 16 }, "end": { - "line": 3118, + "line": 3126, "column": 22 } } @@ -425572,15 +428834,15 @@ "binop": null }, "value": "Math", - "start": 123952, - "end": 123956, + "start": 124466, + "end": 124470, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 23 }, "end": { - "line": 3118, + "line": 3126, "column": 27 } } @@ -425598,15 +428860,15 @@ "binop": null, "updateContext": null }, - "start": 123956, - "end": 123957, + "start": 124470, + "end": 124471, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 27 }, "end": { - "line": 3118, + "line": 3126, "column": 28 } } @@ -425624,15 +428886,15 @@ "binop": null }, "value": "round", - "start": 123957, - "end": 123962, + "start": 124471, + "end": 124476, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 28 }, "end": { - "line": 3118, + "line": 3126, "column": 33 } } @@ -425649,15 +428911,15 @@ "postfix": false, "binop": null }, - "start": 123962, - "end": 123963, + "start": 124476, + "end": 124477, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 33 }, "end": { - "line": 3118, + "line": 3126, "column": 34 } } @@ -425675,15 +428937,15 @@ "binop": null }, "value": "countIndices", - "start": 123963, - "end": 123975, + "start": 124477, + "end": 124489, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 34 }, "end": { - "line": 3118, + "line": 3126, "column": 46 } } @@ -425702,15 +428964,15 @@ "updateContext": null }, "value": "/", - "start": 123976, - "end": 123977, + "start": 124490, + "end": 124491, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 47 }, "end": { - "line": 3118, + "line": 3126, "column": 48 } } @@ -425729,15 +428991,15 @@ "updateContext": null }, "value": 3, - "start": 123978, - "end": 123979, + "start": 124492, + "end": 124493, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 49 }, "end": { - "line": 3118, + "line": 3126, "column": 50 } } @@ -425754,15 +429016,15 @@ "postfix": false, "binop": null }, - "start": 123979, - "end": 123980, + "start": 124493, + "end": 124494, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 50 }, "end": { - "line": 3118, + "line": 3126, "column": 51 } } @@ -425780,15 +429042,15 @@ "binop": null, "updateContext": null }, - "start": 123980, - "end": 123981, + "start": 124494, + "end": 124495, "loc": { "start": { - "line": 3118, + "line": 3126, "column": 51 }, "end": { - "line": 3118, + "line": 3126, "column": 52 } } @@ -425808,15 +429070,15 @@ "updateContext": null }, "value": "case", - "start": 123994, - "end": 123998, + "start": 124508, + "end": 124512, "loc": { "start": { - "line": 3119, + "line": 3127, "column": 12 }, "end": { - "line": 3119, + "line": 3127, "column": 16 } } @@ -425835,15 +429097,15 @@ "updateContext": null }, "value": "points", - "start": 123999, - "end": 124007, + "start": 124513, + "end": 124521, "loc": { "start": { - "line": 3119, + "line": 3127, "column": 17 }, "end": { - "line": 3119, + "line": 3127, "column": 25 } } @@ -425861,15 +429123,15 @@ "binop": null, "updateContext": null }, - "start": 124007, - "end": 124008, + "start": 124521, + "end": 124522, "loc": { "start": { - "line": 3119, + "line": 3127, "column": 25 }, "end": { - "line": 3119, + "line": 3127, "column": 26 } } @@ -425889,15 +429151,15 @@ "updateContext": null }, "value": "switch", - "start": 124025, - "end": 124031, + "start": 124539, + "end": 124545, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 16 }, "end": { - "line": 3120, + "line": 3128, "column": 22 } } @@ -425914,15 +429176,15 @@ "postfix": false, "binop": null }, - "start": 124032, - "end": 124033, + "start": 124546, + "end": 124547, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 23 }, "end": { - "line": 3120, + "line": 3128, "column": 24 } } @@ -425940,15 +429202,15 @@ "binop": null }, "value": "cfg", - "start": 124033, - "end": 124036, + "start": 124547, + "end": 124550, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 24 }, "end": { - "line": 3120, + "line": 3128, "column": 27 } } @@ -425966,15 +429228,15 @@ "binop": null, "updateContext": null }, - "start": 124036, - "end": 124037, + "start": 124550, + "end": 124551, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 27 }, "end": { - "line": 3120, + "line": 3128, "column": 28 } } @@ -425992,15 +429254,15 @@ "binop": null }, "value": "type", - "start": 124037, - "end": 124041, + "start": 124551, + "end": 124555, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 28 }, "end": { - "line": 3120, + "line": 3128, "column": 32 } } @@ -426017,15 +429279,15 @@ "postfix": false, "binop": null }, - "start": 124041, - "end": 124042, + "start": 124555, + "end": 124556, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 32 }, "end": { - "line": 3120, + "line": 3128, "column": 33 } } @@ -426042,15 +429304,15 @@ "postfix": false, "binop": null }, - "start": 124043, - "end": 124044, + "start": 124557, + "end": 124558, "loc": { "start": { - "line": 3120, + "line": 3128, "column": 34 }, "end": { - "line": 3120, + "line": 3128, "column": 35 } } @@ -426070,15 +429332,15 @@ "updateContext": null }, "value": "case", - "start": 124065, - "end": 124069, + "start": 124579, + "end": 124583, "loc": { "start": { - "line": 3121, + "line": 3129, "column": 20 }, "end": { - "line": 3121, + "line": 3129, "column": 24 } } @@ -426096,15 +429358,15 @@ "binop": null }, "value": "DTX", - "start": 124070, - "end": 124073, + "start": 124584, + "end": 124587, "loc": { "start": { - "line": 3121, + "line": 3129, "column": 25 }, "end": { - "line": 3121, + "line": 3129, "column": 28 } } @@ -426122,15 +429384,15 @@ "binop": null, "updateContext": null }, - "start": 124073, - "end": 124074, + "start": 124587, + "end": 124588, "loc": { "start": { - "line": 3121, + "line": 3129, "column": 28 }, "end": { - "line": 3121, + "line": 3129, "column": 29 } } @@ -426150,15 +429412,15 @@ "updateContext": null }, "value": "for", - "start": 124099, - "end": 124102, + "start": 124613, + "end": 124616, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 24 }, "end": { - "line": 3122, + "line": 3130, "column": 27 } } @@ -426175,15 +429437,15 @@ "postfix": false, "binop": null }, - "start": 124103, - "end": 124104, + "start": 124617, + "end": 124618, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 28 }, "end": { - "line": 3122, + "line": 3130, "column": 29 } } @@ -426203,15 +429465,15 @@ "updateContext": null }, "value": "let", - "start": 124104, - "end": 124107, + "start": 124618, + "end": 124621, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 29 }, "end": { - "line": 3122, + "line": 3130, "column": 32 } } @@ -426229,15 +429491,15 @@ "binop": null }, "value": "i", - "start": 124108, - "end": 124109, + "start": 124622, + "end": 124623, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 33 }, "end": { - "line": 3122, + "line": 3130, "column": 34 } } @@ -426256,15 +429518,15 @@ "updateContext": null }, "value": "=", - "start": 124110, - "end": 124111, + "start": 124624, + "end": 124625, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 35 }, "end": { - "line": 3122, + "line": 3130, "column": 36 } } @@ -426283,15 +429545,15 @@ "updateContext": null }, "value": 0, - "start": 124112, - "end": 124113, + "start": 124626, + "end": 124627, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 37 }, "end": { - "line": 3122, + "line": 3130, "column": 38 } } @@ -426309,15 +429571,15 @@ "binop": null, "updateContext": null }, - "start": 124113, - "end": 124114, + "start": 124627, + "end": 124628, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 38 }, "end": { - "line": 3122, + "line": 3130, "column": 39 } } @@ -426335,15 +429597,15 @@ "binop": null }, "value": "len", - "start": 124115, - "end": 124118, + "start": 124629, + "end": 124632, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 40 }, "end": { - "line": 3122, + "line": 3130, "column": 43 } } @@ -426362,15 +429624,15 @@ "updateContext": null }, "value": "=", - "start": 124119, - "end": 124120, + "start": 124633, + "end": 124634, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 44 }, "end": { - "line": 3122, + "line": 3130, "column": 45 } } @@ -426388,15 +429650,15 @@ "binop": null }, "value": "cfg", - "start": 124121, - "end": 124124, + "start": 124635, + "end": 124638, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 46 }, "end": { - "line": 3122, + "line": 3130, "column": 49 } } @@ -426414,15 +429676,15 @@ "binop": null, "updateContext": null }, - "start": 124124, - "end": 124125, + "start": 124638, + "end": 124639, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 49 }, "end": { - "line": 3122, + "line": 3130, "column": 50 } } @@ -426440,15 +429702,15 @@ "binop": null }, "value": "buckets", - "start": 124125, - "end": 124132, + "start": 124639, + "end": 124646, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 50 }, "end": { - "line": 3122, + "line": 3130, "column": 57 } } @@ -426466,15 +429728,15 @@ "binop": null, "updateContext": null }, - "start": 124132, - "end": 124133, + "start": 124646, + "end": 124647, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 57 }, "end": { - "line": 3122, + "line": 3130, "column": 58 } } @@ -426492,15 +429754,15 @@ "binop": null }, "value": "length", - "start": 124133, - "end": 124139, + "start": 124647, + "end": 124653, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 58 }, "end": { - "line": 3122, + "line": 3130, "column": 64 } } @@ -426518,15 +429780,15 @@ "binop": null, "updateContext": null }, - "start": 124139, - "end": 124140, + "start": 124653, + "end": 124654, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 64 }, "end": { - "line": 3122, + "line": 3130, "column": 65 } } @@ -426544,15 +429806,15 @@ "binop": null }, "value": "i", - "start": 124141, - "end": 124142, + "start": 124655, + "end": 124656, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 66 }, "end": { - "line": 3122, + "line": 3130, "column": 67 } } @@ -426571,15 +429833,15 @@ "updateContext": null }, "value": "<", - "start": 124143, - "end": 124144, + "start": 124657, + "end": 124658, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 68 }, "end": { - "line": 3122, + "line": 3130, "column": 69 } } @@ -426597,15 +429859,15 @@ "binop": null }, "value": "len", - "start": 124145, - "end": 124148, + "start": 124659, + "end": 124662, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 70 }, "end": { - "line": 3122, + "line": 3130, "column": 73 } } @@ -426623,15 +429885,15 @@ "binop": null, "updateContext": null }, - "start": 124148, - "end": 124149, + "start": 124662, + "end": 124663, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 73 }, "end": { - "line": 3122, + "line": 3130, "column": 74 } } @@ -426649,15 +429911,15 @@ "binop": null }, "value": "i", - "start": 124150, - "end": 124151, + "start": 124664, + "end": 124665, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 75 }, "end": { - "line": 3122, + "line": 3130, "column": 76 } } @@ -426675,15 +429937,15 @@ "binop": null }, "value": "++", - "start": 124151, - "end": 124153, + "start": 124665, + "end": 124667, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 76 }, "end": { - "line": 3122, + "line": 3130, "column": 78 } } @@ -426700,15 +429962,15 @@ "postfix": false, "binop": null }, - "start": 124153, - "end": 124154, + "start": 124667, + "end": 124668, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 78 }, "end": { - "line": 3122, + "line": 3130, "column": 79 } } @@ -426725,15 +429987,15 @@ "postfix": false, "binop": null }, - "start": 124155, - "end": 124156, + "start": 124669, + "end": 124670, "loc": { "start": { - "line": 3122, + "line": 3130, "column": 80 }, "end": { - "line": 3122, + "line": 3130, "column": 81 } } @@ -426751,15 +430013,15 @@ "binop": null }, "value": "countIndices", - "start": 124185, - "end": 124197, + "start": 124699, + "end": 124711, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 28 }, "end": { - "line": 3123, + "line": 3131, "column": 40 } } @@ -426778,15 +430040,15 @@ "updateContext": null }, "value": "+=", - "start": 124198, - "end": 124200, + "start": 124712, + "end": 124714, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 41 }, "end": { - "line": 3123, + "line": 3131, "column": 43 } } @@ -426804,15 +430066,15 @@ "binop": null }, "value": "cfg", - "start": 124201, - "end": 124204, + "start": 124715, + "end": 124718, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 44 }, "end": { - "line": 3123, + "line": 3131, "column": 47 } } @@ -426830,15 +430092,15 @@ "binop": null, "updateContext": null }, - "start": 124204, - "end": 124205, + "start": 124718, + "end": 124719, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 47 }, "end": { - "line": 3123, + "line": 3131, "column": 48 } } @@ -426856,15 +430118,15 @@ "binop": null }, "value": "buckets", - "start": 124205, - "end": 124212, + "start": 124719, + "end": 124726, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 48 }, "end": { - "line": 3123, + "line": 3131, "column": 55 } } @@ -426882,15 +430144,15 @@ "binop": null, "updateContext": null }, - "start": 124212, - "end": 124213, + "start": 124726, + "end": 124727, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 55 }, "end": { - "line": 3123, + "line": 3131, "column": 56 } } @@ -426908,15 +430170,15 @@ "binop": null }, "value": "i", - "start": 124213, - "end": 124214, + "start": 124727, + "end": 124728, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 56 }, "end": { - "line": 3123, + "line": 3131, "column": 57 } } @@ -426934,15 +430196,15 @@ "binop": null, "updateContext": null }, - "start": 124214, - "end": 124215, + "start": 124728, + "end": 124729, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 57 }, "end": { - "line": 3123, + "line": 3131, "column": 58 } } @@ -426960,15 +430222,15 @@ "binop": null, "updateContext": null }, - "start": 124215, - "end": 124216, + "start": 124729, + "end": 124730, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 58 }, "end": { - "line": 3123, + "line": 3131, "column": 59 } } @@ -426986,15 +430248,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 124216, - "end": 124235, + "start": 124730, + "end": 124749, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 59 }, "end": { - "line": 3123, + "line": 3131, "column": 78 } } @@ -427012,15 +430274,15 @@ "binop": null, "updateContext": null }, - "start": 124235, - "end": 124236, + "start": 124749, + "end": 124750, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 78 }, "end": { - "line": 3123, + "line": 3131, "column": 79 } } @@ -427038,15 +430300,15 @@ "binop": null }, "value": "length", - "start": 124236, - "end": 124242, + "start": 124750, + "end": 124756, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 79 }, "end": { - "line": 3123, + "line": 3131, "column": 85 } } @@ -427064,15 +430326,15 @@ "binop": null, "updateContext": null }, - "start": 124242, - "end": 124243, + "start": 124756, + "end": 124757, "loc": { "start": { - "line": 3123, + "line": 3131, "column": 85 }, "end": { - "line": 3123, + "line": 3131, "column": 86 } } @@ -427089,15 +430351,15 @@ "postfix": false, "binop": null }, - "start": 124268, - "end": 124269, + "start": 124782, + "end": 124783, "loc": { "start": { - "line": 3124, + "line": 3132, "column": 24 }, "end": { - "line": 3124, + "line": 3132, "column": 25 } } @@ -427117,15 +430379,15 @@ "updateContext": null }, "value": "break", - "start": 124294, - "end": 124299, + "start": 124808, + "end": 124813, "loc": { "start": { - "line": 3125, + "line": 3133, "column": 24 }, "end": { - "line": 3125, + "line": 3133, "column": 29 } } @@ -427143,15 +430405,15 @@ "binop": null, "updateContext": null }, - "start": 124299, - "end": 124300, + "start": 124813, + "end": 124814, "loc": { "start": { - "line": 3125, + "line": 3133, "column": 29 }, "end": { - "line": 3125, + "line": 3133, "column": 30 } } @@ -427171,15 +430433,15 @@ "updateContext": null }, "value": "case", - "start": 124321, - "end": 124325, + "start": 124835, + "end": 124839, "loc": { "start": { - "line": 3126, + "line": 3134, "column": 20 }, "end": { - "line": 3126, + "line": 3134, "column": 24 } } @@ -427197,15 +430459,15 @@ "binop": null }, "value": "VBO_BATCHED", - "start": 124326, - "end": 124337, + "start": 124840, + "end": 124851, "loc": { "start": { - "line": 3126, + "line": 3134, "column": 25 }, "end": { - "line": 3126, + "line": 3134, "column": 36 } } @@ -427223,15 +430485,15 @@ "binop": null, "updateContext": null }, - "start": 124337, - "end": 124338, + "start": 124851, + "end": 124852, "loc": { "start": { - "line": 3126, + "line": 3134, "column": 36 }, "end": { - "line": 3126, + "line": 3134, "column": 37 } } @@ -427249,15 +430511,15 @@ "binop": null }, "value": "countIndices", - "start": 124363, - "end": 124375, + "start": 124877, + "end": 124889, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 24 }, "end": { - "line": 3127, + "line": 3135, "column": 36 } } @@ -427276,15 +430538,15 @@ "updateContext": null }, "value": "+=", - "start": 124376, - "end": 124378, + "start": 124890, + "end": 124892, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 37 }, "end": { - "line": 3127, + "line": 3135, "column": 39 } } @@ -427302,15 +430564,15 @@ "binop": null }, "value": "cfg", - "start": 124379, - "end": 124382, + "start": 124893, + "end": 124896, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 40 }, "end": { - "line": 3127, + "line": 3135, "column": 43 } } @@ -427328,15 +430590,15 @@ "binop": null, "updateContext": null }, - "start": 124382, - "end": 124383, + "start": 124896, + "end": 124897, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 43 }, "end": { - "line": 3127, + "line": 3135, "column": 44 } } @@ -427354,15 +430616,15 @@ "binop": null }, "value": "positions", - "start": 124383, - "end": 124392, + "start": 124897, + "end": 124906, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 44 }, "end": { - "line": 3127, + "line": 3135, "column": 53 } } @@ -427380,15 +430642,15 @@ "binop": null, "updateContext": null }, - "start": 124393, - "end": 124394, + "start": 124907, + "end": 124908, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 54 }, "end": { - "line": 3127, + "line": 3135, "column": 55 } } @@ -427406,15 +430668,15 @@ "binop": null }, "value": "cfg", - "start": 124395, - "end": 124398, + "start": 124909, + "end": 124912, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 56 }, "end": { - "line": 3127, + "line": 3135, "column": 59 } } @@ -427432,15 +430694,15 @@ "binop": null, "updateContext": null }, - "start": 124398, - "end": 124399, + "start": 124912, + "end": 124913, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 59 }, "end": { - "line": 3127, + "line": 3135, "column": 60 } } @@ -427458,15 +430720,15 @@ "binop": null }, "value": "positions", - "start": 124399, - "end": 124408, + "start": 124913, + "end": 124922, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 60 }, "end": { - "line": 3127, + "line": 3135, "column": 69 } } @@ -427484,15 +430746,15 @@ "binop": null, "updateContext": null }, - "start": 124408, - "end": 124409, + "start": 124922, + "end": 124923, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 69 }, "end": { - "line": 3127, + "line": 3135, "column": 70 } } @@ -427510,15 +430772,15 @@ "binop": null }, "value": "length", - "start": 124409, - "end": 124415, + "start": 124923, + "end": 124929, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 70 }, "end": { - "line": 3127, + "line": 3135, "column": 76 } } @@ -427536,15 +430798,15 @@ "binop": null, "updateContext": null }, - "start": 124416, - "end": 124417, + "start": 124930, + "end": 124931, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 77 }, "end": { - "line": 3127, + "line": 3135, "column": 78 } } @@ -427562,15 +430824,15 @@ "binop": null }, "value": "cfg", - "start": 124418, - "end": 124421, + "start": 124932, + "end": 124935, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 79 }, "end": { - "line": 3127, + "line": 3135, "column": 82 } } @@ -427588,15 +430850,15 @@ "binop": null, "updateContext": null }, - "start": 124421, - "end": 124422, + "start": 124935, + "end": 124936, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 82 }, "end": { - "line": 3127, + "line": 3135, "column": 83 } } @@ -427614,15 +430876,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 124422, - "end": 124441, + "start": 124936, + "end": 124955, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 83 }, "end": { - "line": 3127, + "line": 3135, "column": 102 } } @@ -427640,15 +430902,15 @@ "binop": null, "updateContext": null }, - "start": 124441, - "end": 124442, + "start": 124955, + "end": 124956, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 102 }, "end": { - "line": 3127, + "line": 3135, "column": 103 } } @@ -427666,15 +430928,15 @@ "binop": null }, "value": "length", - "start": 124442, - "end": 124448, + "start": 124956, + "end": 124962, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 103 }, "end": { - "line": 3127, + "line": 3135, "column": 109 } } @@ -427692,15 +430954,15 @@ "binop": null, "updateContext": null }, - "start": 124448, - "end": 124449, + "start": 124962, + "end": 124963, "loc": { "start": { - "line": 3127, + "line": 3135, "column": 109 }, "end": { - "line": 3127, + "line": 3135, "column": 110 } } @@ -427720,15 +430982,15 @@ "updateContext": null }, "value": "break", - "start": 124474, - "end": 124479, + "start": 124988, + "end": 124993, "loc": { "start": { - "line": 3128, + "line": 3136, "column": 24 }, "end": { - "line": 3128, + "line": 3136, "column": 29 } } @@ -427746,15 +431008,15 @@ "binop": null, "updateContext": null }, - "start": 124479, - "end": 124480, + "start": 124993, + "end": 124994, "loc": { "start": { - "line": 3128, + "line": 3136, "column": 29 }, "end": { - "line": 3128, + "line": 3136, "column": 30 } } @@ -427774,15 +431036,15 @@ "updateContext": null }, "value": "case", - "start": 124501, - "end": 124505, + "start": 125015, + "end": 125019, "loc": { "start": { - "line": 3129, + "line": 3137, "column": 20 }, "end": { - "line": 3129, + "line": 3137, "column": 24 } } @@ -427800,15 +431062,15 @@ "binop": null }, "value": "VBO_INSTANCED", - "start": 124506, - "end": 124519, + "start": 125020, + "end": 125033, "loc": { "start": { - "line": 3129, + "line": 3137, "column": 25 }, "end": { - "line": 3129, + "line": 3137, "column": 38 } } @@ -427826,15 +431088,15 @@ "binop": null, "updateContext": null }, - "start": 124519, - "end": 124520, + "start": 125033, + "end": 125034, "loc": { "start": { - "line": 3129, + "line": 3137, "column": 38 }, "end": { - "line": 3129, + "line": 3137, "column": 39 } } @@ -427854,15 +431116,15 @@ "updateContext": null }, "value": "const", - "start": 124545, - "end": 124550, + "start": 125059, + "end": 125064, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 24 }, "end": { - "line": 3130, + "line": 3138, "column": 29 } } @@ -427880,15 +431142,15 @@ "binop": null }, "value": "geometry", - "start": 124551, - "end": 124559, + "start": 125065, + "end": 125073, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 30 }, "end": { - "line": 3130, + "line": 3138, "column": 38 } } @@ -427907,15 +431169,15 @@ "updateContext": null }, "value": "=", - "start": 124560, - "end": 124561, + "start": 125074, + "end": 125075, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 39 }, "end": { - "line": 3130, + "line": 3138, "column": 40 } } @@ -427933,15 +431195,15 @@ "binop": null }, "value": "cfg", - "start": 124562, - "end": 124565, + "start": 125076, + "end": 125079, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 41 }, "end": { - "line": 3130, + "line": 3138, "column": 44 } } @@ -427959,15 +431221,15 @@ "binop": null, "updateContext": null }, - "start": 124565, - "end": 124566, + "start": 125079, + "end": 125080, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 44 }, "end": { - "line": 3130, + "line": 3138, "column": 45 } } @@ -427985,15 +431247,15 @@ "binop": null }, "value": "geometry", - "start": 124566, - "end": 124574, + "start": 125080, + "end": 125088, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 45 }, "end": { - "line": 3130, + "line": 3138, "column": 53 } } @@ -428011,15 +431273,15 @@ "binop": null, "updateContext": null }, - "start": 124574, - "end": 124575, + "start": 125088, + "end": 125089, "loc": { "start": { - "line": 3130, + "line": 3138, "column": 53 }, "end": { - "line": 3130, + "line": 3138, "column": 54 } } @@ -428037,15 +431299,15 @@ "binop": null }, "value": "countIndices", - "start": 124600, - "end": 124612, + "start": 125114, + "end": 125126, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 24 }, "end": { - "line": 3131, + "line": 3139, "column": 36 } } @@ -428064,15 +431326,15 @@ "updateContext": null }, "value": "+=", - "start": 124613, - "end": 124615, + "start": 125127, + "end": 125129, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 37 }, "end": { - "line": 3131, + "line": 3139, "column": 39 } } @@ -428090,15 +431352,15 @@ "binop": null }, "value": "geometry", - "start": 124616, - "end": 124624, + "start": 125130, + "end": 125138, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 40 }, "end": { - "line": 3131, + "line": 3139, "column": 48 } } @@ -428116,15 +431378,15 @@ "binop": null, "updateContext": null }, - "start": 124624, - "end": 124625, + "start": 125138, + "end": 125139, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 48 }, "end": { - "line": 3131, + "line": 3139, "column": 49 } } @@ -428142,15 +431404,15 @@ "binop": null }, "value": "positions", - "start": 124625, - "end": 124634, + "start": 125139, + "end": 125148, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 49 }, "end": { - "line": 3131, + "line": 3139, "column": 58 } } @@ -428168,15 +431430,15 @@ "binop": null, "updateContext": null }, - "start": 124635, - "end": 124636, + "start": 125149, + "end": 125150, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 59 }, "end": { - "line": 3131, + "line": 3139, "column": 60 } } @@ -428194,15 +431456,15 @@ "binop": null }, "value": "geometry", - "start": 124637, - "end": 124645, + "start": 125151, + "end": 125159, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 61 }, "end": { - "line": 3131, + "line": 3139, "column": 69 } } @@ -428220,15 +431482,15 @@ "binop": null, "updateContext": null }, - "start": 124645, - "end": 124646, + "start": 125159, + "end": 125160, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 69 }, "end": { - "line": 3131, + "line": 3139, "column": 70 } } @@ -428246,15 +431508,15 @@ "binop": null }, "value": "positions", - "start": 124646, - "end": 124655, + "start": 125160, + "end": 125169, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 70 }, "end": { - "line": 3131, + "line": 3139, "column": 79 } } @@ -428272,15 +431534,15 @@ "binop": null, "updateContext": null }, - "start": 124655, - "end": 124656, + "start": 125169, + "end": 125170, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 79 }, "end": { - "line": 3131, + "line": 3139, "column": 80 } } @@ -428298,15 +431560,15 @@ "binop": null }, "value": "length", - "start": 124656, - "end": 124662, + "start": 125170, + "end": 125176, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 80 }, "end": { - "line": 3131, + "line": 3139, "column": 86 } } @@ -428324,15 +431586,15 @@ "binop": null, "updateContext": null }, - "start": 124663, - "end": 124664, + "start": 125177, + "end": 125178, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 87 }, "end": { - "line": 3131, + "line": 3139, "column": 88 } } @@ -428350,15 +431612,15 @@ "binop": null }, "value": "geometry", - "start": 124665, - "end": 124673, + "start": 125179, + "end": 125187, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 89 }, "end": { - "line": 3131, + "line": 3139, "column": 97 } } @@ -428376,15 +431638,15 @@ "binop": null, "updateContext": null }, - "start": 124673, - "end": 124674, + "start": 125187, + "end": 125188, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 97 }, "end": { - "line": 3131, + "line": 3139, "column": 98 } } @@ -428402,15 +431664,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 124674, - "end": 124693, + "start": 125188, + "end": 125207, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 98 }, "end": { - "line": 3131, + "line": 3139, "column": 117 } } @@ -428428,15 +431690,15 @@ "binop": null, "updateContext": null }, - "start": 124693, - "end": 124694, + "start": 125207, + "end": 125208, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 117 }, "end": { - "line": 3131, + "line": 3139, "column": 118 } } @@ -428454,15 +431716,15 @@ "binop": null }, "value": "length", - "start": 124694, - "end": 124700, + "start": 125208, + "end": 125214, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 118 }, "end": { - "line": 3131, + "line": 3139, "column": 124 } } @@ -428480,15 +431742,15 @@ "binop": null, "updateContext": null }, - "start": 124700, - "end": 124701, + "start": 125214, + "end": 125215, "loc": { "start": { - "line": 3131, + "line": 3139, "column": 124 }, "end": { - "line": 3131, + "line": 3139, "column": 125 } } @@ -428508,15 +431770,15 @@ "updateContext": null }, "value": "break", - "start": 124726, - "end": 124731, + "start": 125240, + "end": 125245, "loc": { "start": { - "line": 3132, + "line": 3140, "column": 24 }, "end": { - "line": 3132, + "line": 3140, "column": 29 } } @@ -428534,15 +431796,15 @@ "binop": null, "updateContext": null }, - "start": 124731, - "end": 124732, + "start": 125245, + "end": 125246, "loc": { "start": { - "line": 3132, + "line": 3140, "column": 29 }, "end": { - "line": 3132, + "line": 3140, "column": 30 } } @@ -428559,15 +431821,15 @@ "postfix": false, "binop": null }, - "start": 124749, - "end": 124750, + "start": 125263, + "end": 125264, "loc": { "start": { - "line": 3133, + "line": 3141, "column": 16 }, "end": { - "line": 3133, + "line": 3141, "column": 17 } } @@ -428587,15 +431849,15 @@ "updateContext": null }, "value": "return", - "start": 124767, - "end": 124773, + "start": 125281, + "end": 125287, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 16 }, "end": { - "line": 3134, + "line": 3142, "column": 22 } } @@ -428613,15 +431875,15 @@ "binop": null }, "value": "Math", - "start": 124774, - "end": 124778, + "start": 125288, + "end": 125292, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 23 }, "end": { - "line": 3134, + "line": 3142, "column": 27 } } @@ -428639,15 +431901,15 @@ "binop": null, "updateContext": null }, - "start": 124778, - "end": 124779, + "start": 125292, + "end": 125293, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 27 }, "end": { - "line": 3134, + "line": 3142, "column": 28 } } @@ -428665,15 +431927,15 @@ "binop": null }, "value": "round", - "start": 124779, - "end": 124784, + "start": 125293, + "end": 125298, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 28 }, "end": { - "line": 3134, + "line": 3142, "column": 33 } } @@ -428690,15 +431952,15 @@ "postfix": false, "binop": null }, - "start": 124784, - "end": 124785, + "start": 125298, + "end": 125299, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 33 }, "end": { - "line": 3134, + "line": 3142, "column": 34 } } @@ -428716,15 +431978,15 @@ "binop": null }, "value": "countIndices", - "start": 124785, - "end": 124797, + "start": 125299, + "end": 125311, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 34 }, "end": { - "line": 3134, + "line": 3142, "column": 46 } } @@ -428741,15 +432003,15 @@ "postfix": false, "binop": null }, - "start": 124797, - "end": 124798, + "start": 125311, + "end": 125312, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 46 }, "end": { - "line": 3134, + "line": 3142, "column": 47 } } @@ -428767,15 +432029,15 @@ "binop": null, "updateContext": null }, - "start": 124798, - "end": 124799, + "start": 125312, + "end": 125313, "loc": { "start": { - "line": 3134, + "line": 3142, "column": 47 }, "end": { - "line": 3134, + "line": 3142, "column": 48 } } @@ -428795,15 +432057,15 @@ "updateContext": null }, "value": "case", - "start": 124812, - "end": 124816, + "start": 125326, + "end": 125330, "loc": { "start": { - "line": 3135, + "line": 3143, "column": 12 }, "end": { - "line": 3135, + "line": 3143, "column": 16 } } @@ -428822,15 +432084,15 @@ "updateContext": null }, "value": "lines", - "start": 124817, - "end": 124824, + "start": 125331, + "end": 125338, "loc": { "start": { - "line": 3135, + "line": 3143, "column": 17 }, "end": { - "line": 3135, + "line": 3143, "column": 24 } } @@ -428848,15 +432110,15 @@ "binop": null, "updateContext": null }, - "start": 124824, - "end": 124825, + "start": 125338, + "end": 125339, "loc": { "start": { - "line": 3135, + "line": 3143, "column": 24 }, "end": { - "line": 3135, + "line": 3143, "column": 25 } } @@ -428876,15 +432138,15 @@ "updateContext": null }, "value": "case", - "start": 124838, - "end": 124842, + "start": 125352, + "end": 125356, "loc": { "start": { - "line": 3136, + "line": 3144, "column": 12 }, "end": { - "line": 3136, + "line": 3144, "column": 16 } } @@ -428903,15 +432165,15 @@ "updateContext": null }, "value": "line-strip", - "start": 124843, - "end": 124855, + "start": 125357, + "end": 125369, "loc": { "start": { - "line": 3136, + "line": 3144, "column": 17 }, "end": { - "line": 3136, + "line": 3144, "column": 29 } } @@ -428929,15 +432191,15 @@ "binop": null, "updateContext": null }, - "start": 124855, - "end": 124856, + "start": 125369, + "end": 125370, "loc": { "start": { - "line": 3136, + "line": 3144, "column": 29 }, "end": { - "line": 3136, + "line": 3144, "column": 30 } } @@ -428957,15 +432219,15 @@ "updateContext": null }, "value": "switch", - "start": 124873, - "end": 124879, + "start": 125387, + "end": 125393, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 16 }, "end": { - "line": 3137, + "line": 3145, "column": 22 } } @@ -428982,15 +432244,15 @@ "postfix": false, "binop": null }, - "start": 124880, - "end": 124881, + "start": 125394, + "end": 125395, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 23 }, "end": { - "line": 3137, + "line": 3145, "column": 24 } } @@ -429008,15 +432270,15 @@ "binop": null }, "value": "cfg", - "start": 124881, - "end": 124884, + "start": 125395, + "end": 125398, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 24 }, "end": { - "line": 3137, + "line": 3145, "column": 27 } } @@ -429034,15 +432296,15 @@ "binop": null, "updateContext": null }, - "start": 124884, - "end": 124885, + "start": 125398, + "end": 125399, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 27 }, "end": { - "line": 3137, + "line": 3145, "column": 28 } } @@ -429060,15 +432322,15 @@ "binop": null }, "value": "type", - "start": 124885, - "end": 124889, + "start": 125399, + "end": 125403, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 28 }, "end": { - "line": 3137, + "line": 3145, "column": 32 } } @@ -429085,15 +432347,15 @@ "postfix": false, "binop": null }, - "start": 124889, - "end": 124890, + "start": 125403, + "end": 125404, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 32 }, "end": { - "line": 3137, + "line": 3145, "column": 33 } } @@ -429110,15 +432372,15 @@ "postfix": false, "binop": null }, - "start": 124891, - "end": 124892, + "start": 125405, + "end": 125406, "loc": { "start": { - "line": 3137, + "line": 3145, "column": 34 }, "end": { - "line": 3137, + "line": 3145, "column": 35 } } @@ -429138,15 +432400,15 @@ "updateContext": null }, "value": "case", - "start": 124913, - "end": 124917, + "start": 125427, + "end": 125431, "loc": { "start": { - "line": 3138, + "line": 3146, "column": 20 }, "end": { - "line": 3138, + "line": 3146, "column": 24 } } @@ -429164,15 +432426,15 @@ "binop": null }, "value": "DTX", - "start": 124918, - "end": 124921, + "start": 125432, + "end": 125435, "loc": { "start": { - "line": 3138, + "line": 3146, "column": 25 }, "end": { - "line": 3138, + "line": 3146, "column": 28 } } @@ -429190,15 +432452,15 @@ "binop": null, "updateContext": null }, - "start": 124921, - "end": 124922, + "start": 125435, + "end": 125436, "loc": { "start": { - "line": 3138, + "line": 3146, "column": 28 }, "end": { - "line": 3138, + "line": 3146, "column": 29 } } @@ -429218,15 +432480,15 @@ "updateContext": null }, "value": "for", - "start": 124947, - "end": 124950, + "start": 125461, + "end": 125464, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 24 }, "end": { - "line": 3139, + "line": 3147, "column": 27 } } @@ -429243,15 +432505,15 @@ "postfix": false, "binop": null }, - "start": 124951, - "end": 124952, + "start": 125465, + "end": 125466, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 28 }, "end": { - "line": 3139, + "line": 3147, "column": 29 } } @@ -429271,15 +432533,15 @@ "updateContext": null }, "value": "let", - "start": 124952, - "end": 124955, + "start": 125466, + "end": 125469, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 29 }, "end": { - "line": 3139, + "line": 3147, "column": 32 } } @@ -429297,15 +432559,15 @@ "binop": null }, "value": "i", - "start": 124956, - "end": 124957, + "start": 125470, + "end": 125471, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 33 }, "end": { - "line": 3139, + "line": 3147, "column": 34 } } @@ -429324,15 +432586,15 @@ "updateContext": null }, "value": "=", - "start": 124958, - "end": 124959, + "start": 125472, + "end": 125473, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 35 }, "end": { - "line": 3139, + "line": 3147, "column": 36 } } @@ -429351,15 +432613,15 @@ "updateContext": null }, "value": 0, - "start": 124960, - "end": 124961, + "start": 125474, + "end": 125475, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 37 }, "end": { - "line": 3139, + "line": 3147, "column": 38 } } @@ -429377,15 +432639,15 @@ "binop": null, "updateContext": null }, - "start": 124961, - "end": 124962, + "start": 125475, + "end": 125476, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 38 }, "end": { - "line": 3139, + "line": 3147, "column": 39 } } @@ -429403,15 +432665,15 @@ "binop": null }, "value": "len", - "start": 124963, - "end": 124966, + "start": 125477, + "end": 125480, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 40 }, "end": { - "line": 3139, + "line": 3147, "column": 43 } } @@ -429430,15 +432692,15 @@ "updateContext": null }, "value": "=", - "start": 124967, - "end": 124968, + "start": 125481, + "end": 125482, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 44 }, "end": { - "line": 3139, + "line": 3147, "column": 45 } } @@ -429456,15 +432718,15 @@ "binop": null }, "value": "cfg", - "start": 124969, - "end": 124972, + "start": 125483, + "end": 125486, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 46 }, "end": { - "line": 3139, + "line": 3147, "column": 49 } } @@ -429482,15 +432744,15 @@ "binop": null, "updateContext": null }, - "start": 124972, - "end": 124973, + "start": 125486, + "end": 125487, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 49 }, "end": { - "line": 3139, + "line": 3147, "column": 50 } } @@ -429508,15 +432770,15 @@ "binop": null }, "value": "buckets", - "start": 124973, - "end": 124980, + "start": 125487, + "end": 125494, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 50 }, "end": { - "line": 3139, + "line": 3147, "column": 57 } } @@ -429534,15 +432796,15 @@ "binop": null, "updateContext": null }, - "start": 124980, - "end": 124981, + "start": 125494, + "end": 125495, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 57 }, "end": { - "line": 3139, + "line": 3147, "column": 58 } } @@ -429560,15 +432822,15 @@ "binop": null }, "value": "length", - "start": 124981, - "end": 124987, + "start": 125495, + "end": 125501, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 58 }, "end": { - "line": 3139, + "line": 3147, "column": 64 } } @@ -429586,15 +432848,15 @@ "binop": null, "updateContext": null }, - "start": 124987, - "end": 124988, + "start": 125501, + "end": 125502, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 64 }, "end": { - "line": 3139, + "line": 3147, "column": 65 } } @@ -429612,15 +432874,15 @@ "binop": null }, "value": "i", - "start": 124989, - "end": 124990, + "start": 125503, + "end": 125504, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 66 }, "end": { - "line": 3139, + "line": 3147, "column": 67 } } @@ -429639,15 +432901,15 @@ "updateContext": null }, "value": "<", - "start": 124991, - "end": 124992, + "start": 125505, + "end": 125506, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 68 }, "end": { - "line": 3139, + "line": 3147, "column": 69 } } @@ -429665,15 +432927,15 @@ "binop": null }, "value": "len", - "start": 124993, - "end": 124996, + "start": 125507, + "end": 125510, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 70 }, "end": { - "line": 3139, + "line": 3147, "column": 73 } } @@ -429691,15 +432953,15 @@ "binop": null, "updateContext": null }, - "start": 124996, - "end": 124997, + "start": 125510, + "end": 125511, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 73 }, "end": { - "line": 3139, + "line": 3147, "column": 74 } } @@ -429717,15 +432979,15 @@ "binop": null }, "value": "i", - "start": 124998, - "end": 124999, + "start": 125512, + "end": 125513, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 75 }, "end": { - "line": 3139, + "line": 3147, "column": 76 } } @@ -429743,15 +433005,15 @@ "binop": null }, "value": "++", - "start": 124999, - "end": 125001, + "start": 125513, + "end": 125515, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 76 }, "end": { - "line": 3139, + "line": 3147, "column": 78 } } @@ -429768,15 +433030,15 @@ "postfix": false, "binop": null }, - "start": 125001, - "end": 125002, + "start": 125515, + "end": 125516, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 78 }, "end": { - "line": 3139, + "line": 3147, "column": 79 } } @@ -429793,15 +433055,15 @@ "postfix": false, "binop": null }, - "start": 125003, - "end": 125004, + "start": 125517, + "end": 125518, "loc": { "start": { - "line": 3139, + "line": 3147, "column": 80 }, "end": { - "line": 3139, + "line": 3147, "column": 81 } } @@ -429819,15 +433081,15 @@ "binop": null }, "value": "countIndices", - "start": 125033, - "end": 125045, + "start": 125547, + "end": 125559, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 28 }, "end": { - "line": 3140, + "line": 3148, "column": 40 } } @@ -429846,15 +433108,15 @@ "updateContext": null }, "value": "+=", - "start": 125046, - "end": 125048, + "start": 125560, + "end": 125562, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 41 }, "end": { - "line": 3140, + "line": 3148, "column": 43 } } @@ -429872,15 +433134,15 @@ "binop": null }, "value": "cfg", - "start": 125049, - "end": 125052, + "start": 125563, + "end": 125566, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 44 }, "end": { - "line": 3140, + "line": 3148, "column": 47 } } @@ -429898,15 +433160,15 @@ "binop": null, "updateContext": null }, - "start": 125052, - "end": 125053, + "start": 125566, + "end": 125567, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 47 }, "end": { - "line": 3140, + "line": 3148, "column": 48 } } @@ -429924,15 +433186,15 @@ "binop": null }, "value": "buckets", - "start": 125053, - "end": 125060, + "start": 125567, + "end": 125574, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 48 }, "end": { - "line": 3140, + "line": 3148, "column": 55 } } @@ -429950,15 +433212,15 @@ "binop": null, "updateContext": null }, - "start": 125060, - "end": 125061, + "start": 125574, + "end": 125575, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 55 }, "end": { - "line": 3140, + "line": 3148, "column": 56 } } @@ -429976,15 +433238,15 @@ "binop": null }, "value": "i", - "start": 125061, - "end": 125062, + "start": 125575, + "end": 125576, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 56 }, "end": { - "line": 3140, + "line": 3148, "column": 57 } } @@ -430002,15 +433264,15 @@ "binop": null, "updateContext": null }, - "start": 125062, - "end": 125063, + "start": 125576, + "end": 125577, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 57 }, "end": { - "line": 3140, + "line": 3148, "column": 58 } } @@ -430028,15 +433290,15 @@ "binop": null, "updateContext": null }, - "start": 125063, - "end": 125064, + "start": 125577, + "end": 125578, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 58 }, "end": { - "line": 3140, + "line": 3148, "column": 59 } } @@ -430054,15 +433316,15 @@ "binop": null }, "value": "indices", - "start": 125064, - "end": 125071, + "start": 125578, + "end": 125585, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 59 }, "end": { - "line": 3140, + "line": 3148, "column": 66 } } @@ -430080,15 +433342,15 @@ "binop": null, "updateContext": null }, - "start": 125071, - "end": 125072, + "start": 125585, + "end": 125586, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 66 }, "end": { - "line": 3140, + "line": 3148, "column": 67 } } @@ -430106,15 +433368,15 @@ "binop": null }, "value": "length", - "start": 125072, - "end": 125078, + "start": 125586, + "end": 125592, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 67 }, "end": { - "line": 3140, + "line": 3148, "column": 73 } } @@ -430132,15 +433394,15 @@ "binop": null, "updateContext": null }, - "start": 125078, - "end": 125079, + "start": 125592, + "end": 125593, "loc": { "start": { - "line": 3140, + "line": 3148, "column": 73 }, "end": { - "line": 3140, + "line": 3148, "column": 74 } } @@ -430157,15 +433419,15 @@ "postfix": false, "binop": null }, - "start": 125104, - "end": 125105, + "start": 125618, + "end": 125619, "loc": { "start": { - "line": 3141, + "line": 3149, "column": 24 }, "end": { - "line": 3141, + "line": 3149, "column": 25 } } @@ -430185,15 +433447,15 @@ "updateContext": null }, "value": "break", - "start": 125130, - "end": 125135, + "start": 125644, + "end": 125649, "loc": { "start": { - "line": 3142, + "line": 3150, "column": 24 }, "end": { - "line": 3142, + "line": 3150, "column": 29 } } @@ -430211,15 +433473,15 @@ "binop": null, "updateContext": null }, - "start": 125135, - "end": 125136, + "start": 125649, + "end": 125650, "loc": { "start": { - "line": 3142, + "line": 3150, "column": 29 }, "end": { - "line": 3142, + "line": 3150, "column": 30 } } @@ -430239,15 +433501,15 @@ "updateContext": null }, "value": "case", - "start": 125157, - "end": 125161, + "start": 125671, + "end": 125675, "loc": { "start": { - "line": 3143, + "line": 3151, "column": 20 }, "end": { - "line": 3143, + "line": 3151, "column": 24 } } @@ -430265,15 +433527,15 @@ "binop": null }, "value": "VBO_BATCHED", - "start": 125162, - "end": 125173, + "start": 125676, + "end": 125687, "loc": { "start": { - "line": 3143, + "line": 3151, "column": 25 }, "end": { - "line": 3143, + "line": 3151, "column": 36 } } @@ -430291,15 +433553,15 @@ "binop": null, "updateContext": null }, - "start": 125173, - "end": 125174, + "start": 125687, + "end": 125688, "loc": { "start": { - "line": 3143, + "line": 3151, "column": 36 }, "end": { - "line": 3143, + "line": 3151, "column": 37 } } @@ -430317,15 +433579,15 @@ "binop": null }, "value": "countIndices", - "start": 125199, - "end": 125211, + "start": 125713, + "end": 125725, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 24 }, "end": { - "line": 3144, + "line": 3152, "column": 36 } } @@ -430344,15 +433606,15 @@ "updateContext": null }, "value": "+=", - "start": 125212, - "end": 125214, + "start": 125726, + "end": 125728, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 37 }, "end": { - "line": 3144, + "line": 3152, "column": 39 } } @@ -430370,15 +433632,15 @@ "binop": null }, "value": "cfg", - "start": 125215, - "end": 125218, + "start": 125729, + "end": 125732, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 40 }, "end": { - "line": 3144, + "line": 3152, "column": 43 } } @@ -430396,15 +433658,15 @@ "binop": null, "updateContext": null }, - "start": 125218, - "end": 125219, + "start": 125732, + "end": 125733, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 43 }, "end": { - "line": 3144, + "line": 3152, "column": 44 } } @@ -430422,15 +433684,15 @@ "binop": null }, "value": "indices", - "start": 125219, - "end": 125226, + "start": 125733, + "end": 125740, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 44 }, "end": { - "line": 3144, + "line": 3152, "column": 51 } } @@ -430448,15 +433710,15 @@ "binop": null, "updateContext": null }, - "start": 125226, - "end": 125227, + "start": 125740, + "end": 125741, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 51 }, "end": { - "line": 3144, + "line": 3152, "column": 52 } } @@ -430474,15 +433736,15 @@ "binop": null }, "value": "length", - "start": 125227, - "end": 125233, + "start": 125741, + "end": 125747, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 52 }, "end": { - "line": 3144, + "line": 3152, "column": 58 } } @@ -430500,15 +433762,15 @@ "binop": null, "updateContext": null }, - "start": 125233, - "end": 125234, + "start": 125747, + "end": 125748, "loc": { "start": { - "line": 3144, + "line": 3152, "column": 58 }, "end": { - "line": 3144, + "line": 3152, "column": 59 } } @@ -430528,15 +433790,15 @@ "updateContext": null }, "value": "break", - "start": 125259, - "end": 125264, + "start": 125773, + "end": 125778, "loc": { "start": { - "line": 3145, + "line": 3153, "column": 24 }, "end": { - "line": 3145, + "line": 3153, "column": 29 } } @@ -430554,15 +433816,15 @@ "binop": null, "updateContext": null }, - "start": 125264, - "end": 125265, + "start": 125778, + "end": 125779, "loc": { "start": { - "line": 3145, + "line": 3153, "column": 29 }, "end": { - "line": 3145, + "line": 3153, "column": 30 } } @@ -430582,15 +433844,15 @@ "updateContext": null }, "value": "case", - "start": 125286, - "end": 125290, + "start": 125800, + "end": 125804, "loc": { "start": { - "line": 3146, + "line": 3154, "column": 20 }, "end": { - "line": 3146, + "line": 3154, "column": 24 } } @@ -430608,15 +433870,15 @@ "binop": null }, "value": "VBO_INSTANCED", - "start": 125291, - "end": 125304, + "start": 125805, + "end": 125818, "loc": { "start": { - "line": 3146, + "line": 3154, "column": 25 }, "end": { - "line": 3146, + "line": 3154, "column": 38 } } @@ -430634,15 +433896,15 @@ "binop": null, "updateContext": null }, - "start": 125304, - "end": 125305, + "start": 125818, + "end": 125819, "loc": { "start": { - "line": 3146, + "line": 3154, "column": 38 }, "end": { - "line": 3146, + "line": 3154, "column": 39 } } @@ -430660,15 +433922,15 @@ "binop": null }, "value": "countIndices", - "start": 125330, - "end": 125342, + "start": 125844, + "end": 125856, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 24 }, "end": { - "line": 3147, + "line": 3155, "column": 36 } } @@ -430687,15 +433949,15 @@ "updateContext": null }, "value": "+=", - "start": 125343, - "end": 125345, + "start": 125857, + "end": 125859, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 37 }, "end": { - "line": 3147, + "line": 3155, "column": 39 } } @@ -430713,15 +433975,15 @@ "binop": null }, "value": "cfg", - "start": 125346, - "end": 125349, + "start": 125860, + "end": 125863, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 40 }, "end": { - "line": 3147, + "line": 3155, "column": 43 } } @@ -430739,15 +434001,15 @@ "binop": null, "updateContext": null }, - "start": 125349, - "end": 125350, + "start": 125863, + "end": 125864, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 43 }, "end": { - "line": 3147, + "line": 3155, "column": 44 } } @@ -430765,15 +434027,15 @@ "binop": null }, "value": "geometry", - "start": 125350, - "end": 125358, + "start": 125864, + "end": 125872, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 44 }, "end": { - "line": 3147, + "line": 3155, "column": 52 } } @@ -430791,15 +434053,15 @@ "binop": null, "updateContext": null }, - "start": 125358, - "end": 125359, + "start": 125872, + "end": 125873, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 52 }, "end": { - "line": 3147, + "line": 3155, "column": 53 } } @@ -430817,15 +434079,15 @@ "binop": null }, "value": "indices", - "start": 125359, - "end": 125366, + "start": 125873, + "end": 125880, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 53 }, "end": { - "line": 3147, + "line": 3155, "column": 60 } } @@ -430843,15 +434105,15 @@ "binop": null, "updateContext": null }, - "start": 125366, - "end": 125367, + "start": 125880, + "end": 125881, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 60 }, "end": { - "line": 3147, + "line": 3155, "column": 61 } } @@ -430869,15 +434131,15 @@ "binop": null }, "value": "length", - "start": 125367, - "end": 125373, + "start": 125881, + "end": 125887, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 61 }, "end": { - "line": 3147, + "line": 3155, "column": 67 } } @@ -430895,15 +434157,15 @@ "binop": null, "updateContext": null }, - "start": 125373, - "end": 125374, + "start": 125887, + "end": 125888, "loc": { "start": { - "line": 3147, + "line": 3155, "column": 67 }, "end": { - "line": 3147, + "line": 3155, "column": 68 } } @@ -430923,15 +434185,15 @@ "updateContext": null }, "value": "break", - "start": 125399, - "end": 125404, + "start": 125913, + "end": 125918, "loc": { "start": { - "line": 3148, + "line": 3156, "column": 24 }, "end": { - "line": 3148, + "line": 3156, "column": 29 } } @@ -430949,15 +434211,15 @@ "binop": null, "updateContext": null }, - "start": 125404, - "end": 125405, + "start": 125918, + "end": 125919, "loc": { "start": { - "line": 3148, + "line": 3156, "column": 29 }, "end": { - "line": 3148, + "line": 3156, "column": 30 } } @@ -430974,15 +434236,15 @@ "postfix": false, "binop": null }, - "start": 125422, - "end": 125423, + "start": 125936, + "end": 125937, "loc": { "start": { - "line": 3149, + "line": 3157, "column": 16 }, "end": { - "line": 3149, + "line": 3157, "column": 17 } } @@ -431002,15 +434264,15 @@ "updateContext": null }, "value": "return", - "start": 125440, - "end": 125446, + "start": 125954, + "end": 125960, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 16 }, "end": { - "line": 3150, + "line": 3158, "column": 22 } } @@ -431028,15 +434290,15 @@ "binop": null }, "value": "Math", - "start": 125447, - "end": 125451, + "start": 125961, + "end": 125965, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 23 }, "end": { - "line": 3150, + "line": 3158, "column": 27 } } @@ -431054,15 +434316,15 @@ "binop": null, "updateContext": null }, - "start": 125451, - "end": 125452, + "start": 125965, + "end": 125966, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 27 }, "end": { - "line": 3150, + "line": 3158, "column": 28 } } @@ -431080,15 +434342,15 @@ "binop": null }, "value": "round", - "start": 125452, - "end": 125457, + "start": 125966, + "end": 125971, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 28 }, "end": { - "line": 3150, + "line": 3158, "column": 33 } } @@ -431105,15 +434367,15 @@ "postfix": false, "binop": null }, - "start": 125457, - "end": 125458, + "start": 125971, + "end": 125972, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 33 }, "end": { - "line": 3150, + "line": 3158, "column": 34 } } @@ -431131,15 +434393,15 @@ "binop": null }, "value": "countIndices", - "start": 125458, - "end": 125470, + "start": 125972, + "end": 125984, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 34 }, "end": { - "line": 3150, + "line": 3158, "column": 46 } } @@ -431158,15 +434420,15 @@ "updateContext": null }, "value": "/", - "start": 125471, - "end": 125472, + "start": 125985, + "end": 125986, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 47 }, "end": { - "line": 3150, + "line": 3158, "column": 48 } } @@ -431185,15 +434447,15 @@ "updateContext": null }, "value": 2, - "start": 125473, - "end": 125474, + "start": 125987, + "end": 125988, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 49 }, "end": { - "line": 3150, + "line": 3158, "column": 50 } } @@ -431210,15 +434472,15 @@ "postfix": false, "binop": null }, - "start": 125474, - "end": 125475, + "start": 125988, + "end": 125989, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 50 }, "end": { - "line": 3150, + "line": 3158, "column": 51 } } @@ -431236,15 +434498,15 @@ "binop": null, "updateContext": null }, - "start": 125475, - "end": 125476, + "start": 125989, + "end": 125990, "loc": { "start": { - "line": 3150, + "line": 3158, "column": 51 }, "end": { - "line": 3150, + "line": 3158, "column": 52 } } @@ -431261,15 +434523,15 @@ "postfix": false, "binop": null }, - "start": 125485, - "end": 125486, + "start": 125999, + "end": 126000, "loc": { "start": { - "line": 3151, + "line": 3159, "column": 8 }, "end": { - "line": 3151, + "line": 3159, "column": 9 } } @@ -431289,15 +434551,15 @@ "updateContext": null }, "value": "return", - "start": 125495, - "end": 125501, + "start": 126009, + "end": 126015, "loc": { "start": { - "line": 3152, + "line": 3160, "column": 8 }, "end": { - "line": 3152, + "line": 3160, "column": 14 } } @@ -431316,15 +434578,15 @@ "updateContext": null }, "value": 0, - "start": 125502, - "end": 125503, + "start": 126016, + "end": 126017, "loc": { "start": { - "line": 3152, + "line": 3160, "column": 15 }, "end": { - "line": 3152, + "line": 3160, "column": 16 } } @@ -431342,15 +434604,15 @@ "binop": null, "updateContext": null }, - "start": 125503, - "end": 125504, + "start": 126017, + "end": 126018, "loc": { "start": { - "line": 3152, + "line": 3160, "column": 16 }, "end": { - "line": 3152, + "line": 3160, "column": 17 } } @@ -431367,15 +434629,15 @@ "postfix": false, "binop": null }, - "start": 125509, - "end": 125510, + "start": 126023, + "end": 126024, "loc": { "start": { - "line": 3153, + "line": 3161, "column": 4 }, "end": { - "line": 3153, + "line": 3161, "column": 5 } } @@ -431393,15 +434655,15 @@ "binop": null }, "value": "_getDTXLayer", - "start": 125516, - "end": 125528, + "start": 126030, + "end": 126042, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 4 }, "end": { - "line": 3155, + "line": 3163, "column": 16 } } @@ -431418,15 +434680,15 @@ "postfix": false, "binop": null }, - "start": 125528, - "end": 125529, + "start": 126042, + "end": 126043, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 16 }, "end": { - "line": 3155, + "line": 3163, "column": 17 } } @@ -431444,15 +434706,15 @@ "binop": null }, "value": "cfg", - "start": 125529, - "end": 125532, + "start": 126043, + "end": 126046, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 17 }, "end": { - "line": 3155, + "line": 3163, "column": 20 } } @@ -431469,15 +434731,15 @@ "postfix": false, "binop": null }, - "start": 125532, - "end": 125533, + "start": 126046, + "end": 126047, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 20 }, "end": { - "line": 3155, + "line": 3163, "column": 21 } } @@ -431494,15 +434756,15 @@ "postfix": false, "binop": null }, - "start": 125534, - "end": 125535, + "start": 126048, + "end": 126049, "loc": { "start": { - "line": 3155, + "line": 3163, "column": 22 }, "end": { - "line": 3155, + "line": 3163, "column": 23 } } @@ -431522,15 +434784,15 @@ "updateContext": null }, "value": "const", - "start": 125544, - "end": 125549, + "start": 126058, + "end": 126063, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 8 }, "end": { - "line": 3156, + "line": 3164, "column": 13 } } @@ -431548,15 +434810,15 @@ "binop": null }, "value": "origin", - "start": 125550, - "end": 125556, + "start": 126064, + "end": 126070, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 14 }, "end": { - "line": 3156, + "line": 3164, "column": 20 } } @@ -431575,15 +434837,15 @@ "updateContext": null }, "value": "=", - "start": 125557, - "end": 125558, + "start": 126071, + "end": 126072, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 21 }, "end": { - "line": 3156, + "line": 3164, "column": 22 } } @@ -431601,15 +434863,15 @@ "binop": null }, "value": "cfg", - "start": 125559, - "end": 125562, + "start": 126073, + "end": 126076, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 23 }, "end": { - "line": 3156, + "line": 3164, "column": 26 } } @@ -431627,15 +434889,15 @@ "binop": null, "updateContext": null }, - "start": 125562, - "end": 125563, + "start": 126076, + "end": 126077, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 26 }, "end": { - "line": 3156, + "line": 3164, "column": 27 } } @@ -431653,15 +434915,15 @@ "binop": null }, "value": "origin", - "start": 125563, - "end": 125569, + "start": 126077, + "end": 126083, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 27 }, "end": { - "line": 3156, + "line": 3164, "column": 33 } } @@ -431679,15 +434941,15 @@ "binop": null, "updateContext": null }, - "start": 125569, - "end": 125570, + "start": 126083, + "end": 126084, "loc": { "start": { - "line": 3156, + "line": 3164, "column": 33 }, "end": { - "line": 3156, + "line": 3164, "column": 34 } } @@ -431707,15 +434969,15 @@ "updateContext": null }, "value": "const", - "start": 125579, - "end": 125584, + "start": 126093, + "end": 126098, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 8 }, "end": { - "line": 3157, + "line": 3165, "column": 13 } } @@ -431733,15 +434995,15 @@ "binop": null }, "value": "primitive", - "start": 125585, - "end": 125594, + "start": 126099, + "end": 126108, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 14 }, "end": { - "line": 3157, + "line": 3165, "column": 23 } } @@ -431760,15 +435022,15 @@ "updateContext": null }, "value": "=", - "start": 125595, - "end": 125596, + "start": 126109, + "end": 126110, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 24 }, "end": { - "line": 3157, + "line": 3165, "column": 25 } } @@ -431786,15 +435048,15 @@ "binop": null }, "value": "cfg", - "start": 125597, - "end": 125600, + "start": 126111, + "end": 126114, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 26 }, "end": { - "line": 3157, + "line": 3165, "column": 29 } } @@ -431812,15 +435074,15 @@ "binop": null, "updateContext": null }, - "start": 125600, - "end": 125601, + "start": 126114, + "end": 126115, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 29 }, "end": { - "line": 3157, + "line": 3165, "column": 30 } } @@ -431838,15 +435100,15 @@ "binop": null }, "value": "geometry", - "start": 125601, - "end": 125609, + "start": 126115, + "end": 126123, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 30 }, "end": { - "line": 3157, + "line": 3165, "column": 38 } } @@ -431864,15 +435126,15 @@ "binop": null, "updateContext": null }, - "start": 125610, - "end": 125611, + "start": 126124, + "end": 126125, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 39 }, "end": { - "line": 3157, + "line": 3165, "column": 40 } } @@ -431890,15 +435152,15 @@ "binop": null }, "value": "cfg", - "start": 125612, - "end": 125615, + "start": 126126, + "end": 126129, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 41 }, "end": { - "line": 3157, + "line": 3165, "column": 44 } } @@ -431916,15 +435178,15 @@ "binop": null, "updateContext": null }, - "start": 125615, - "end": 125616, + "start": 126129, + "end": 126130, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 44 }, "end": { - "line": 3157, + "line": 3165, "column": 45 } } @@ -431942,15 +435204,15 @@ "binop": null }, "value": "geometry", - "start": 125616, - "end": 125624, + "start": 126130, + "end": 126138, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 45 }, "end": { - "line": 3157, + "line": 3165, "column": 53 } } @@ -431968,15 +435230,15 @@ "binop": null, "updateContext": null }, - "start": 125624, - "end": 125625, + "start": 126138, + "end": 126139, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 53 }, "end": { - "line": 3157, + "line": 3165, "column": 54 } } @@ -431994,15 +435256,15 @@ "binop": null }, "value": "primitive", - "start": 125625, - "end": 125634, + "start": 126139, + "end": 126148, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 54 }, "end": { - "line": 3157, + "line": 3165, "column": 63 } } @@ -432020,15 +435282,15 @@ "binop": null, "updateContext": null }, - "start": 125635, - "end": 125636, + "start": 126149, + "end": 126150, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 64 }, "end": { - "line": 3157, + "line": 3165, "column": 65 } } @@ -432046,15 +435308,15 @@ "binop": null }, "value": "cfg", - "start": 125637, - "end": 125640, + "start": 126151, + "end": 126154, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 66 }, "end": { - "line": 3157, + "line": 3165, "column": 69 } } @@ -432072,15 +435334,15 @@ "binop": null, "updateContext": null }, - "start": 125640, - "end": 125641, + "start": 126154, + "end": 126155, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 69 }, "end": { - "line": 3157, + "line": 3165, "column": 70 } } @@ -432098,15 +435360,15 @@ "binop": null }, "value": "primitive", - "start": 125641, - "end": 125650, + "start": 126155, + "end": 126164, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 70 }, "end": { - "line": 3157, + "line": 3165, "column": 79 } } @@ -432124,15 +435386,15 @@ "binop": null, "updateContext": null }, - "start": 125650, - "end": 125651, + "start": 126164, + "end": 126165, "loc": { "start": { - "line": 3157, + "line": 3165, "column": 79 }, "end": { - "line": 3157, + "line": 3165, "column": 80 } } @@ -432152,15 +435414,15 @@ "updateContext": null }, "value": "const", - "start": 125660, - "end": 125665, + "start": 126174, + "end": 126179, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 8 }, "end": { - "line": 3158, + "line": 3166, "column": 13 } } @@ -432178,15 +435440,15 @@ "binop": null }, "value": "layerId", - "start": 125666, - "end": 125673, + "start": 126180, + "end": 126187, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 14 }, "end": { - "line": 3158, + "line": 3166, "column": 21 } } @@ -432205,15 +435467,15 @@ "updateContext": null }, "value": "=", - "start": 125674, - "end": 125675, + "start": 126188, + "end": 126189, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 22 }, "end": { - "line": 3158, + "line": 3166, "column": 23 } } @@ -432230,15 +435492,15 @@ "postfix": false, "binop": null }, - "start": 125676, - "end": 125677, + "start": 126190, + "end": 126191, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 24 }, "end": { - "line": 3158, + "line": 3166, "column": 25 } } @@ -432257,15 +435519,15 @@ "updateContext": null }, "value": ".", - "start": 125677, - "end": 125678, + "start": 126191, + "end": 126192, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 25 }, "end": { - "line": 3158, + "line": 3166, "column": 26 } } @@ -432282,15 +435544,15 @@ "postfix": false, "binop": null }, - "start": 125678, - "end": 125680, + "start": 126192, + "end": 126194, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 26 }, "end": { - "line": 3158, + "line": 3166, "column": 28 } } @@ -432308,15 +435570,15 @@ "binop": null }, "value": "primitive", - "start": 125680, - "end": 125689, + "start": 126194, + "end": 126203, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 28 }, "end": { - "line": 3158, + "line": 3166, "column": 37 } } @@ -432333,15 +435595,15 @@ "postfix": false, "binop": null }, - "start": 125689, - "end": 125690, + "start": 126203, + "end": 126204, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 37 }, "end": { - "line": 3158, + "line": 3166, "column": 38 } } @@ -432360,15 +435622,15 @@ "updateContext": null }, "value": ".", - "start": 125690, - "end": 125691, + "start": 126204, + "end": 126205, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 38 }, "end": { - "line": 3158, + "line": 3166, "column": 39 } } @@ -432385,15 +435647,15 @@ "postfix": false, "binop": null }, - "start": 125691, - "end": 125693, + "start": 126205, + "end": 126207, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 39 }, "end": { - "line": 3158, + "line": 3166, "column": 41 } } @@ -432411,15 +435673,15 @@ "binop": null }, "value": "Math", - "start": 125693, - "end": 125697, + "start": 126207, + "end": 126211, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 41 }, "end": { - "line": 3158, + "line": 3166, "column": 45 } } @@ -432437,15 +435699,15 @@ "binop": null, "updateContext": null }, - "start": 125697, - "end": 125698, + "start": 126211, + "end": 126212, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 45 }, "end": { - "line": 3158, + "line": 3166, "column": 46 } } @@ -432463,15 +435725,15 @@ "binop": null }, "value": "round", - "start": 125698, - "end": 125703, + "start": 126212, + "end": 126217, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 46 }, "end": { - "line": 3158, + "line": 3166, "column": 51 } } @@ -432488,15 +435750,15 @@ "postfix": false, "binop": null }, - "start": 125703, - "end": 125704, + "start": 126217, + "end": 126218, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 51 }, "end": { - "line": 3158, + "line": 3166, "column": 52 } } @@ -432514,15 +435776,15 @@ "binop": null }, "value": "origin", - "start": 125704, - "end": 125710, + "start": 126218, + "end": 126224, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 52 }, "end": { - "line": 3158, + "line": 3166, "column": 58 } } @@ -432540,15 +435802,15 @@ "binop": null, "updateContext": null }, - "start": 125710, - "end": 125711, + "start": 126224, + "end": 126225, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 58 }, "end": { - "line": 3158, + "line": 3166, "column": 59 } } @@ -432567,15 +435829,15 @@ "updateContext": null }, "value": 0, - "start": 125711, - "end": 125712, + "start": 126225, + "end": 126226, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 59 }, "end": { - "line": 3158, + "line": 3166, "column": 60 } } @@ -432593,15 +435855,15 @@ "binop": null, "updateContext": null }, - "start": 125712, - "end": 125713, + "start": 126226, + "end": 126227, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 60 }, "end": { - "line": 3158, + "line": 3166, "column": 61 } } @@ -432618,15 +435880,15 @@ "postfix": false, "binop": null }, - "start": 125713, - "end": 125714, + "start": 126227, + "end": 126228, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 61 }, "end": { - "line": 3158, + "line": 3166, "column": 62 } } @@ -432643,15 +435905,15 @@ "postfix": false, "binop": null }, - "start": 125714, - "end": 125715, + "start": 126228, + "end": 126229, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 62 }, "end": { - "line": 3158, + "line": 3166, "column": 63 } } @@ -432670,15 +435932,15 @@ "updateContext": null }, "value": ".", - "start": 125715, - "end": 125716, + "start": 126229, + "end": 126230, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 63 }, "end": { - "line": 3158, + "line": 3166, "column": 64 } } @@ -432695,15 +435957,15 @@ "postfix": false, "binop": null }, - "start": 125716, - "end": 125718, + "start": 126230, + "end": 126232, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 64 }, "end": { - "line": 3158, + "line": 3166, "column": 66 } } @@ -432721,15 +435983,15 @@ "binop": null }, "value": "Math", - "start": 125718, - "end": 125722, + "start": 126232, + "end": 126236, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 66 }, "end": { - "line": 3158, + "line": 3166, "column": 70 } } @@ -432747,15 +436009,15 @@ "binop": null, "updateContext": null }, - "start": 125722, - "end": 125723, + "start": 126236, + "end": 126237, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 70 }, "end": { - "line": 3158, + "line": 3166, "column": 71 } } @@ -432773,15 +436035,15 @@ "binop": null }, "value": "round", - "start": 125723, - "end": 125728, + "start": 126237, + "end": 126242, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 71 }, "end": { - "line": 3158, + "line": 3166, "column": 76 } } @@ -432798,15 +436060,15 @@ "postfix": false, "binop": null }, - "start": 125728, - "end": 125729, + "start": 126242, + "end": 126243, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 76 }, "end": { - "line": 3158, + "line": 3166, "column": 77 } } @@ -432824,15 +436086,15 @@ "binop": null }, "value": "origin", - "start": 125729, - "end": 125735, + "start": 126243, + "end": 126249, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 77 }, "end": { - "line": 3158, + "line": 3166, "column": 83 } } @@ -432850,15 +436112,15 @@ "binop": null, "updateContext": null }, - "start": 125735, - "end": 125736, + "start": 126249, + "end": 126250, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 83 }, "end": { - "line": 3158, + "line": 3166, "column": 84 } } @@ -432877,15 +436139,15 @@ "updateContext": null }, "value": 1, - "start": 125736, - "end": 125737, + "start": 126250, + "end": 126251, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 84 }, "end": { - "line": 3158, + "line": 3166, "column": 85 } } @@ -432903,15 +436165,15 @@ "binop": null, "updateContext": null }, - "start": 125737, - "end": 125738, + "start": 126251, + "end": 126252, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 85 }, "end": { - "line": 3158, + "line": 3166, "column": 86 } } @@ -432928,15 +436190,15 @@ "postfix": false, "binop": null }, - "start": 125738, - "end": 125739, + "start": 126252, + "end": 126253, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 86 }, "end": { - "line": 3158, + "line": 3166, "column": 87 } } @@ -432953,15 +436215,15 @@ "postfix": false, "binop": null }, - "start": 125739, - "end": 125740, + "start": 126253, + "end": 126254, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 87 }, "end": { - "line": 3158, + "line": 3166, "column": 88 } } @@ -432980,15 +436242,15 @@ "updateContext": null }, "value": ".", - "start": 125740, - "end": 125741, + "start": 126254, + "end": 126255, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 88 }, "end": { - "line": 3158, + "line": 3166, "column": 89 } } @@ -433005,15 +436267,15 @@ "postfix": false, "binop": null }, - "start": 125741, - "end": 125743, + "start": 126255, + "end": 126257, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 89 }, "end": { - "line": 3158, + "line": 3166, "column": 91 } } @@ -433031,15 +436293,15 @@ "binop": null }, "value": "Math", - "start": 125743, - "end": 125747, + "start": 126257, + "end": 126261, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 91 }, "end": { - "line": 3158, + "line": 3166, "column": 95 } } @@ -433057,15 +436319,15 @@ "binop": null, "updateContext": null }, - "start": 125747, - "end": 125748, + "start": 126261, + "end": 126262, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 95 }, "end": { - "line": 3158, + "line": 3166, "column": 96 } } @@ -433083,15 +436345,15 @@ "binop": null }, "value": "round", - "start": 125748, - "end": 125753, + "start": 126262, + "end": 126267, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 96 }, "end": { - "line": 3158, + "line": 3166, "column": 101 } } @@ -433108,15 +436370,15 @@ "postfix": false, "binop": null }, - "start": 125753, - "end": 125754, + "start": 126267, + "end": 126268, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 101 }, "end": { - "line": 3158, + "line": 3166, "column": 102 } } @@ -433134,15 +436396,15 @@ "binop": null }, "value": "origin", - "start": 125754, - "end": 125760, + "start": 126268, + "end": 126274, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 102 }, "end": { - "line": 3158, + "line": 3166, "column": 108 } } @@ -433160,15 +436422,15 @@ "binop": null, "updateContext": null }, - "start": 125760, - "end": 125761, + "start": 126274, + "end": 126275, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 108 }, "end": { - "line": 3158, + "line": 3166, "column": 109 } } @@ -433187,15 +436449,15 @@ "updateContext": null }, "value": 2, - "start": 125761, - "end": 125762, + "start": 126275, + "end": 126276, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 109 }, "end": { - "line": 3158, + "line": 3166, "column": 110 } } @@ -433213,15 +436475,15 @@ "binop": null, "updateContext": null }, - "start": 125762, - "end": 125763, + "start": 126276, + "end": 126277, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 110 }, "end": { - "line": 3158, + "line": 3166, "column": 111 } } @@ -433238,15 +436500,15 @@ "postfix": false, "binop": null }, - "start": 125763, - "end": 125764, + "start": 126277, + "end": 126278, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 111 }, "end": { - "line": 3158, + "line": 3166, "column": 112 } } @@ -433263,15 +436525,15 @@ "postfix": false, "binop": null }, - "start": 125764, - "end": 125765, + "start": 126278, + "end": 126279, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 112 }, "end": { - "line": 3158, + "line": 3166, "column": 113 } } @@ -433290,15 +436552,15 @@ "updateContext": null }, "value": "", - "start": 125765, - "end": 125765, + "start": 126279, + "end": 126279, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 113 }, "end": { - "line": 3158, + "line": 3166, "column": 113 } } @@ -433315,15 +436577,15 @@ "postfix": false, "binop": null }, - "start": 125765, - "end": 125766, + "start": 126279, + "end": 126280, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 113 }, "end": { - "line": 3158, + "line": 3166, "column": 114 } } @@ -433341,15 +436603,15 @@ "binop": null, "updateContext": null }, - "start": 125766, - "end": 125767, + "start": 126280, + "end": 126281, "loc": { "start": { - "line": 3158, + "line": 3166, "column": 114 }, "end": { - "line": 3158, + "line": 3166, "column": 115 } } @@ -433369,15 +436631,15 @@ "updateContext": null }, "value": "let", - "start": 125776, - "end": 125779, + "start": 126290, + "end": 126293, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 8 }, "end": { - "line": 3159, + "line": 3167, "column": 11 } } @@ -433395,15 +436657,15 @@ "binop": null }, "value": "dtxLayer", - "start": 125780, - "end": 125788, + "start": 126294, + "end": 126302, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 12 }, "end": { - "line": 3159, + "line": 3167, "column": 20 } } @@ -433422,15 +436684,15 @@ "updateContext": null }, "value": "=", - "start": 125789, - "end": 125790, + "start": 126303, + "end": 126304, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 21 }, "end": { - "line": 3159, + "line": 3167, "column": 22 } } @@ -433450,15 +436712,15 @@ "updateContext": null }, "value": "this", - "start": 125791, - "end": 125795, + "start": 126305, + "end": 126309, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 23 }, "end": { - "line": 3159, + "line": 3167, "column": 27 } } @@ -433476,15 +436738,15 @@ "binop": null, "updateContext": null }, - "start": 125795, - "end": 125796, + "start": 126309, + "end": 126310, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 27 }, "end": { - "line": 3159, + "line": 3167, "column": 28 } } @@ -433502,15 +436764,15 @@ "binop": null }, "value": "_dtxLayers", - "start": 125796, - "end": 125806, + "start": 126310, + "end": 126320, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 28 }, "end": { - "line": 3159, + "line": 3167, "column": 38 } } @@ -433528,15 +436790,15 @@ "binop": null, "updateContext": null }, - "start": 125806, - "end": 125807, + "start": 126320, + "end": 126321, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 38 }, "end": { - "line": 3159, + "line": 3167, "column": 39 } } @@ -433554,15 +436816,15 @@ "binop": null }, "value": "layerId", - "start": 125807, - "end": 125814, + "start": 126321, + "end": 126328, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 39 }, "end": { - "line": 3159, + "line": 3167, "column": 46 } } @@ -433580,15 +436842,15 @@ "binop": null, "updateContext": null }, - "start": 125814, - "end": 125815, + "start": 126328, + "end": 126329, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 46 }, "end": { - "line": 3159, + "line": 3167, "column": 47 } } @@ -433606,15 +436868,15 @@ "binop": null, "updateContext": null }, - "start": 125815, - "end": 125816, + "start": 126329, + "end": 126330, "loc": { "start": { - "line": 3159, + "line": 3167, "column": 47 }, "end": { - "line": 3159, + "line": 3167, "column": 48 } } @@ -433634,15 +436896,15 @@ "updateContext": null }, "value": "if", - "start": 125825, - "end": 125827, + "start": 126339, + "end": 126341, "loc": { "start": { - "line": 3160, + "line": 3168, "column": 8 }, "end": { - "line": 3160, + "line": 3168, "column": 10 } } @@ -433659,15 +436921,15 @@ "postfix": false, "binop": null }, - "start": 125828, - "end": 125829, + "start": 126342, + "end": 126343, "loc": { "start": { - "line": 3160, + "line": 3168, "column": 11 }, "end": { - "line": 3160, + "line": 3168, "column": 12 } } @@ -433685,15 +436947,15 @@ "binop": null }, "value": "dtxLayer", - "start": 125829, - "end": 125837, + "start": 126343, + "end": 126351, "loc": { "start": { - "line": 3160, + "line": 3168, "column": 12 }, "end": { - "line": 3160, + "line": 3168, "column": 20 } } @@ -433710,15 +436972,15 @@ "postfix": false, "binop": null }, - "start": 125837, - "end": 125838, + "start": 126351, + "end": 126352, "loc": { "start": { - "line": 3160, + "line": 3168, "column": 20 }, "end": { - "line": 3160, + "line": 3168, "column": 21 } } @@ -433735,15 +436997,15 @@ "postfix": false, "binop": null }, - "start": 125839, - "end": 125840, + "start": 126353, + "end": 126354, "loc": { "start": { - "line": 3160, + "line": 3168, "column": 22 }, "end": { - "line": 3160, + "line": 3168, "column": 23 } } @@ -433763,15 +437025,15 @@ "updateContext": null }, "value": "if", - "start": 125853, - "end": 125855, + "start": 126367, + "end": 126369, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 12 }, "end": { - "line": 3161, + "line": 3169, "column": 14 } } @@ -433788,15 +437050,15 @@ "postfix": false, "binop": null }, - "start": 125856, - "end": 125857, + "start": 126370, + "end": 126371, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 15 }, "end": { - "line": 3161, + "line": 3169, "column": 16 } } @@ -433815,15 +437077,15 @@ "updateContext": null }, "value": "!", - "start": 125857, - "end": 125858, + "start": 126371, + "end": 126372, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 16 }, "end": { - "line": 3161, + "line": 3169, "column": 17 } } @@ -433841,15 +437103,15 @@ "binop": null }, "value": "dtxLayer", - "start": 125858, - "end": 125866, + "start": 126372, + "end": 126380, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 17 }, "end": { - "line": 3161, + "line": 3169, "column": 25 } } @@ -433867,15 +437129,15 @@ "binop": null, "updateContext": null }, - "start": 125866, - "end": 125867, + "start": 126380, + "end": 126381, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 25 }, "end": { - "line": 3161, + "line": 3169, "column": 26 } } @@ -433893,15 +437155,15 @@ "binop": null }, "value": "canCreatePortion", - "start": 125867, - "end": 125883, + "start": 126381, + "end": 126397, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 26 }, "end": { - "line": 3161, + "line": 3169, "column": 42 } } @@ -433918,15 +437180,15 @@ "postfix": false, "binop": null }, - "start": 125883, - "end": 125884, + "start": 126397, + "end": 126398, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 42 }, "end": { - "line": 3161, + "line": 3169, "column": 43 } } @@ -433944,15 +437206,15 @@ "binop": null }, "value": "cfg", - "start": 125884, - "end": 125887, + "start": 126398, + "end": 126401, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 43 }, "end": { - "line": 3161, + "line": 3169, "column": 46 } } @@ -433969,15 +437231,15 @@ "postfix": false, "binop": null }, - "start": 125887, - "end": 125888, + "start": 126401, + "end": 126402, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 46 }, "end": { - "line": 3161, + "line": 3169, "column": 47 } } @@ -433994,15 +437256,15 @@ "postfix": false, "binop": null }, - "start": 125888, - "end": 125889, + "start": 126402, + "end": 126403, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 47 }, "end": { - "line": 3161, + "line": 3169, "column": 48 } } @@ -434019,15 +437281,15 @@ "postfix": false, "binop": null }, - "start": 125890, - "end": 125891, + "start": 126404, + "end": 126405, "loc": { "start": { - "line": 3161, + "line": 3169, "column": 49 }, "end": { - "line": 3161, + "line": 3169, "column": 50 } } @@ -434045,15 +437307,15 @@ "binop": null }, "value": "dtxLayer", - "start": 125908, - "end": 125916, + "start": 126422, + "end": 126430, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 16 }, "end": { - "line": 3162, + "line": 3170, "column": 24 } } @@ -434071,15 +437333,15 @@ "binop": null, "updateContext": null }, - "start": 125916, - "end": 125917, + "start": 126430, + "end": 126431, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 24 }, "end": { - "line": 3162, + "line": 3170, "column": 25 } } @@ -434097,15 +437359,15 @@ "binop": null }, "value": "finalize", - "start": 125917, - "end": 125925, + "start": 126431, + "end": 126439, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 25 }, "end": { - "line": 3162, + "line": 3170, "column": 33 } } @@ -434122,15 +437384,15 @@ "postfix": false, "binop": null }, - "start": 125925, - "end": 125926, + "start": 126439, + "end": 126440, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 33 }, "end": { - "line": 3162, + "line": 3170, "column": 34 } } @@ -434147,15 +437409,15 @@ "postfix": false, "binop": null }, - "start": 125926, - "end": 125927, + "start": 126440, + "end": 126441, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 34 }, "end": { - "line": 3162, + "line": 3170, "column": 35 } } @@ -434173,15 +437435,15 @@ "binop": null, "updateContext": null }, - "start": 125927, - "end": 125928, + "start": 126441, + "end": 126442, "loc": { "start": { - "line": 3162, + "line": 3170, "column": 35 }, "end": { - "line": 3162, + "line": 3170, "column": 36 } } @@ -434201,15 +437463,15 @@ "updateContext": null }, "value": "delete", - "start": 125945, - "end": 125951, + "start": 126459, + "end": 126465, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 16 }, "end": { - "line": 3163, + "line": 3171, "column": 22 } } @@ -434229,15 +437491,15 @@ "updateContext": null }, "value": "this", - "start": 125952, - "end": 125956, + "start": 126466, + "end": 126470, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 23 }, "end": { - "line": 3163, + "line": 3171, "column": 27 } } @@ -434255,15 +437517,15 @@ "binop": null, "updateContext": null }, - "start": 125956, - "end": 125957, + "start": 126470, + "end": 126471, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 27 }, "end": { - "line": 3163, + "line": 3171, "column": 28 } } @@ -434281,15 +437543,15 @@ "binop": null }, "value": "_dtxLayers", - "start": 125957, - "end": 125967, + "start": 126471, + "end": 126481, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 28 }, "end": { - "line": 3163, + "line": 3171, "column": 38 } } @@ -434307,15 +437569,15 @@ "binop": null, "updateContext": null }, - "start": 125967, - "end": 125968, + "start": 126481, + "end": 126482, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 38 }, "end": { - "line": 3163, + "line": 3171, "column": 39 } } @@ -434333,15 +437595,15 @@ "binop": null }, "value": "layerId", - "start": 125968, - "end": 125975, + "start": 126482, + "end": 126489, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 39 }, "end": { - "line": 3163, + "line": 3171, "column": 46 } } @@ -434359,15 +437621,15 @@ "binop": null, "updateContext": null }, - "start": 125975, - "end": 125976, + "start": 126489, + "end": 126490, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 46 }, "end": { - "line": 3163, + "line": 3171, "column": 47 } } @@ -434385,15 +437647,15 @@ "binop": null, "updateContext": null }, - "start": 125976, - "end": 125977, + "start": 126490, + "end": 126491, "loc": { "start": { - "line": 3163, + "line": 3171, "column": 47 }, "end": { - "line": 3163, + "line": 3171, "column": 48 } } @@ -434411,15 +437673,15 @@ "binop": null }, "value": "dtxLayer", - "start": 125994, - "end": 126002, + "start": 126508, + "end": 126516, "loc": { "start": { - "line": 3164, + "line": 3172, "column": 16 }, "end": { - "line": 3164, + "line": 3172, "column": 24 } } @@ -434438,15 +437700,15 @@ "updateContext": null }, "value": "=", - "start": 126003, - "end": 126004, + "start": 126517, + "end": 126518, "loc": { "start": { - "line": 3164, + "line": 3172, "column": 25 }, "end": { - "line": 3164, + "line": 3172, "column": 26 } } @@ -434466,15 +437728,15 @@ "updateContext": null }, "value": "null", - "start": 126005, - "end": 126009, + "start": 126519, + "end": 126523, "loc": { "start": { - "line": 3164, + "line": 3172, "column": 27 }, "end": { - "line": 3164, + "line": 3172, "column": 31 } } @@ -434492,15 +437754,15 @@ "binop": null, "updateContext": null }, - "start": 126009, - "end": 126010, + "start": 126523, + "end": 126524, "loc": { "start": { - "line": 3164, + "line": 3172, "column": 31 }, "end": { - "line": 3164, + "line": 3172, "column": 32 } } @@ -434517,15 +437779,15 @@ "postfix": false, "binop": null }, - "start": 126023, - "end": 126024, + "start": 126537, + "end": 126538, "loc": { "start": { - "line": 3165, + "line": 3173, "column": 12 }, "end": { - "line": 3165, + "line": 3173, "column": 13 } } @@ -434545,15 +437807,15 @@ "updateContext": null }, "value": "else", - "start": 126025, - "end": 126029, + "start": 126539, + "end": 126543, "loc": { "start": { - "line": 3165, + "line": 3173, "column": 14 }, "end": { - "line": 3165, + "line": 3173, "column": 18 } } @@ -434570,15 +437832,15 @@ "postfix": false, "binop": null }, - "start": 126030, - "end": 126031, + "start": 126544, + "end": 126545, "loc": { "start": { - "line": 3165, + "line": 3173, "column": 19 }, "end": { - "line": 3165, + "line": 3173, "column": 20 } } @@ -434598,15 +437860,15 @@ "updateContext": null }, "value": "return", - "start": 126048, - "end": 126054, + "start": 126562, + "end": 126568, "loc": { "start": { - "line": 3166, + "line": 3174, "column": 16 }, "end": { - "line": 3166, + "line": 3174, "column": 22 } } @@ -434624,15 +437886,15 @@ "binop": null }, "value": "dtxLayer", - "start": 126055, - "end": 126063, + "start": 126569, + "end": 126577, "loc": { "start": { - "line": 3166, + "line": 3174, "column": 23 }, "end": { - "line": 3166, + "line": 3174, "column": 31 } } @@ -434650,15 +437912,15 @@ "binop": null, "updateContext": null }, - "start": 126063, - "end": 126064, + "start": 126577, + "end": 126578, "loc": { "start": { - "line": 3166, + "line": 3174, "column": 31 }, "end": { - "line": 3166, + "line": 3174, "column": 32 } } @@ -434675,15 +437937,15 @@ "postfix": false, "binop": null }, - "start": 126077, - "end": 126078, + "start": 126591, + "end": 126592, "loc": { "start": { - "line": 3167, + "line": 3175, "column": 12 }, "end": { - "line": 3167, + "line": 3175, "column": 13 } } @@ -434700,15 +437962,15 @@ "postfix": false, "binop": null }, - "start": 126087, - "end": 126088, + "start": 126601, + "end": 126602, "loc": { "start": { - "line": 3168, + "line": 3176, "column": 8 }, "end": { - "line": 3168, + "line": 3176, "column": 9 } } @@ -434728,15 +437990,15 @@ "updateContext": null }, "value": "switch", - "start": 126097, - "end": 126103, + "start": 126611, + "end": 126617, "loc": { "start": { - "line": 3169, + "line": 3177, "column": 8 }, "end": { - "line": 3169, + "line": 3177, "column": 14 } } @@ -434753,15 +438015,15 @@ "postfix": false, "binop": null }, - "start": 126104, - "end": 126105, + "start": 126618, + "end": 126619, "loc": { "start": { - "line": 3169, + "line": 3177, "column": 15 }, "end": { - "line": 3169, + "line": 3177, "column": 16 } } @@ -434779,15 +438041,15 @@ "binop": null }, "value": "primitive", - "start": 126105, - "end": 126114, + "start": 126619, + "end": 126628, "loc": { "start": { - "line": 3169, + "line": 3177, "column": 16 }, "end": { - "line": 3169, + "line": 3177, "column": 25 } } @@ -434804,15 +438066,15 @@ "postfix": false, "binop": null }, - "start": 126114, - "end": 126115, + "start": 126628, + "end": 126629, "loc": { "start": { - "line": 3169, + "line": 3177, "column": 25 }, "end": { - "line": 3169, + "line": 3177, "column": 26 } } @@ -434829,15 +438091,15 @@ "postfix": false, "binop": null }, - "start": 126116, - "end": 126117, + "start": 126630, + "end": 126631, "loc": { "start": { - "line": 3169, + "line": 3177, "column": 27 }, "end": { - "line": 3169, + "line": 3177, "column": 28 } } @@ -434857,15 +438119,15 @@ "updateContext": null }, "value": "case", - "start": 126130, - "end": 126134, + "start": 126644, + "end": 126648, "loc": { "start": { - "line": 3170, + "line": 3178, "column": 12 }, "end": { - "line": 3170, + "line": 3178, "column": 16 } } @@ -434884,15 +438146,15 @@ "updateContext": null }, "value": "triangles", - "start": 126135, - "end": 126146, + "start": 126649, + "end": 126660, "loc": { "start": { - "line": 3170, + "line": 3178, "column": 17 }, "end": { - "line": 3170, + "line": 3178, "column": 28 } } @@ -434910,15 +438172,15 @@ "binop": null, "updateContext": null }, - "start": 126146, - "end": 126147, + "start": 126660, + "end": 126661, "loc": { "start": { - "line": 3170, + "line": 3178, "column": 28 }, "end": { - "line": 3170, + "line": 3178, "column": 29 } } @@ -434938,15 +438200,15 @@ "updateContext": null }, "value": "case", - "start": 126160, - "end": 126164, + "start": 126674, + "end": 126678, "loc": { "start": { - "line": 3171, + "line": 3179, "column": 12 }, "end": { - "line": 3171, + "line": 3179, "column": 16 } } @@ -434965,15 +438227,15 @@ "updateContext": null }, "value": "solid", - "start": 126165, - "end": 126172, + "start": 126679, + "end": 126686, "loc": { "start": { - "line": 3171, + "line": 3179, "column": 17 }, "end": { - "line": 3171, + "line": 3179, "column": 24 } } @@ -434991,15 +438253,15 @@ "binop": null, "updateContext": null }, - "start": 126172, - "end": 126173, + "start": 126686, + "end": 126687, "loc": { "start": { - "line": 3171, + "line": 3179, "column": 24 }, "end": { - "line": 3171, + "line": 3179, "column": 25 } } @@ -435019,15 +438281,15 @@ "updateContext": null }, "value": "case", - "start": 126186, - "end": 126190, + "start": 126700, + "end": 126704, "loc": { "start": { - "line": 3172, + "line": 3180, "column": 12 }, "end": { - "line": 3172, + "line": 3180, "column": 16 } } @@ -435046,15 +438308,15 @@ "updateContext": null }, "value": "surface", - "start": 126191, - "end": 126200, + "start": 126705, + "end": 126714, "loc": { "start": { - "line": 3172, + "line": 3180, "column": 17 }, "end": { - "line": 3172, + "line": 3180, "column": 26 } } @@ -435072,15 +438334,15 @@ "binop": null, "updateContext": null }, - "start": 126200, - "end": 126201, + "start": 126714, + "end": 126715, "loc": { "start": { - "line": 3172, + "line": 3180, "column": 26 }, "end": { - "line": 3172, + "line": 3180, "column": 27 } } @@ -435098,15 +438360,15 @@ "binop": null }, "value": "dtxLayer", - "start": 126218, - "end": 126226, + "start": 126732, + "end": 126740, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 16 }, "end": { - "line": 3173, + "line": 3181, "column": 24 } } @@ -435125,15 +438387,15 @@ "updateContext": null }, "value": "=", - "start": 126227, - "end": 126228, + "start": 126741, + "end": 126742, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 25 }, "end": { - "line": 3173, + "line": 3181, "column": 26 } } @@ -435153,15 +438415,15 @@ "updateContext": null }, "value": "new", - "start": 126229, - "end": 126232, + "start": 126743, + "end": 126746, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 27 }, "end": { - "line": 3173, + "line": 3181, "column": 30 } } @@ -435179,15 +438441,15 @@ "binop": null }, "value": "DTXTrianglesLayer", - "start": 126233, - "end": 126250, + "start": 126747, + "end": 126764, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 31 }, "end": { - "line": 3173, + "line": 3181, "column": 48 } } @@ -435204,15 +438466,15 @@ "postfix": false, "binop": null }, - "start": 126250, - "end": 126251, + "start": 126764, + "end": 126765, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 48 }, "end": { - "line": 3173, + "line": 3181, "column": 49 } } @@ -435232,15 +438494,15 @@ "updateContext": null }, "value": "this", - "start": 126251, - "end": 126255, + "start": 126765, + "end": 126769, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 49 }, "end": { - "line": 3173, + "line": 3181, "column": 53 } } @@ -435258,15 +438520,15 @@ "binop": null, "updateContext": null }, - "start": 126255, - "end": 126256, + "start": 126769, + "end": 126770, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 53 }, "end": { - "line": 3173, + "line": 3181, "column": 54 } } @@ -435283,15 +438545,15 @@ "postfix": false, "binop": null }, - "start": 126257, - "end": 126258, + "start": 126771, + "end": 126772, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 55 }, "end": { - "line": 3173, + "line": 3181, "column": 56 } } @@ -435309,15 +438571,15 @@ "binop": null }, "value": "layerIndex", - "start": 126258, - "end": 126268, + "start": 126772, + "end": 126782, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 56 }, "end": { - "line": 3173, + "line": 3181, "column": 66 } } @@ -435335,15 +438597,15 @@ "binop": null, "updateContext": null }, - "start": 126268, - "end": 126269, + "start": 126782, + "end": 126783, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 66 }, "end": { - "line": 3173, + "line": 3181, "column": 67 } } @@ -435362,15 +438624,15 @@ "updateContext": null }, "value": 0, - "start": 126270, - "end": 126271, + "start": 126784, + "end": 126785, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 68 }, "end": { - "line": 3173, + "line": 3181, "column": 69 } } @@ -435388,15 +438650,15 @@ "binop": null, "updateContext": null }, - "start": 126271, - "end": 126272, + "start": 126785, + "end": 126786, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 69 }, "end": { - "line": 3173, + "line": 3181, "column": 70 } } @@ -435414,15 +438676,15 @@ "binop": null }, "value": "origin", - "start": 126273, - "end": 126279, + "start": 126787, + "end": 126793, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 71 }, "end": { - "line": 3173, + "line": 3181, "column": 77 } } @@ -435439,15 +438701,15 @@ "postfix": false, "binop": null }, - "start": 126279, - "end": 126280, + "start": 126793, + "end": 126794, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 77 }, "end": { - "line": 3173, + "line": 3181, "column": 78 } } @@ -435464,15 +438726,15 @@ "postfix": false, "binop": null }, - "start": 126280, - "end": 126281, + "start": 126794, + "end": 126795, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 78 }, "end": { - "line": 3173, + "line": 3181, "column": 79 } } @@ -435490,15 +438752,15 @@ "binop": null, "updateContext": null }, - "start": 126281, - "end": 126282, + "start": 126795, + "end": 126796, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 79 }, "end": { - "line": 3173, + "line": 3181, "column": 80 } } @@ -435506,15 +438768,15 @@ { "type": "CommentLine", "value": " layerIndex is set in #finalize()", - "start": 126283, - "end": 126318, + "start": 126797, + "end": 126832, "loc": { "start": { - "line": 3173, + "line": 3181, "column": 81 }, "end": { - "line": 3173, + "line": 3181, "column": 116 } } @@ -435534,15 +438796,15 @@ "updateContext": null }, "value": "break", - "start": 126335, - "end": 126340, + "start": 126849, + "end": 126854, "loc": { "start": { - "line": 3174, + "line": 3182, "column": 16 }, "end": { - "line": 3174, + "line": 3182, "column": 21 } } @@ -435560,15 +438822,15 @@ "binop": null, "updateContext": null }, - "start": 126340, - "end": 126341, + "start": 126854, + "end": 126855, "loc": { "start": { - "line": 3174, + "line": 3182, "column": 21 }, "end": { - "line": 3174, + "line": 3182, "column": 22 } } @@ -435588,15 +438850,15 @@ "updateContext": null }, "value": "case", - "start": 126354, - "end": 126358, + "start": 126868, + "end": 126872, "loc": { "start": { - "line": 3175, + "line": 3183, "column": 12 }, "end": { - "line": 3175, + "line": 3183, "column": 16 } } @@ -435615,15 +438877,15 @@ "updateContext": null }, "value": "lines", - "start": 126359, - "end": 126366, + "start": 126873, + "end": 126880, "loc": { "start": { - "line": 3175, + "line": 3183, "column": 17 }, "end": { - "line": 3175, + "line": 3183, "column": 24 } } @@ -435641,15 +438903,15 @@ "binop": null, "updateContext": null }, - "start": 126366, - "end": 126367, + "start": 126880, + "end": 126881, "loc": { "start": { - "line": 3175, + "line": 3183, "column": 24 }, "end": { - "line": 3175, + "line": 3183, "column": 25 } } @@ -435667,15 +438929,15 @@ "binop": null }, "value": "dtxLayer", - "start": 126384, - "end": 126392, + "start": 126898, + "end": 126906, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 16 }, "end": { - "line": 3176, + "line": 3184, "column": 24 } } @@ -435694,15 +438956,15 @@ "updateContext": null }, "value": "=", - "start": 126393, - "end": 126394, + "start": 126907, + "end": 126908, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 25 }, "end": { - "line": 3176, + "line": 3184, "column": 26 } } @@ -435722,15 +438984,15 @@ "updateContext": null }, "value": "new", - "start": 126395, - "end": 126398, + "start": 126909, + "end": 126912, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 27 }, "end": { - "line": 3176, + "line": 3184, "column": 30 } } @@ -435748,15 +439010,15 @@ "binop": null }, "value": "DTXLinesLayer", - "start": 126399, - "end": 126412, + "start": 126913, + "end": 126926, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 31 }, "end": { - "line": 3176, + "line": 3184, "column": 44 } } @@ -435773,15 +439035,15 @@ "postfix": false, "binop": null }, - "start": 126412, - "end": 126413, + "start": 126926, + "end": 126927, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 44 }, "end": { - "line": 3176, + "line": 3184, "column": 45 } } @@ -435801,15 +439063,15 @@ "updateContext": null }, "value": "this", - "start": 126413, - "end": 126417, + "start": 126927, + "end": 126931, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 45 }, "end": { - "line": 3176, + "line": 3184, "column": 49 } } @@ -435827,15 +439089,15 @@ "binop": null, "updateContext": null }, - "start": 126417, - "end": 126418, + "start": 126931, + "end": 126932, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 49 }, "end": { - "line": 3176, + "line": 3184, "column": 50 } } @@ -435852,15 +439114,15 @@ "postfix": false, "binop": null }, - "start": 126419, - "end": 126420, + "start": 126933, + "end": 126934, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 51 }, "end": { - "line": 3176, + "line": 3184, "column": 52 } } @@ -435878,15 +439140,15 @@ "binop": null }, "value": "layerIndex", - "start": 126420, - "end": 126430, + "start": 126934, + "end": 126944, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 52 }, "end": { - "line": 3176, + "line": 3184, "column": 62 } } @@ -435904,15 +439166,15 @@ "binop": null, "updateContext": null }, - "start": 126430, - "end": 126431, + "start": 126944, + "end": 126945, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 62 }, "end": { - "line": 3176, + "line": 3184, "column": 63 } } @@ -435931,15 +439193,15 @@ "updateContext": null }, "value": 0, - "start": 126432, - "end": 126433, + "start": 126946, + "end": 126947, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 64 }, "end": { - "line": 3176, + "line": 3184, "column": 65 } } @@ -435957,15 +439219,15 @@ "binop": null, "updateContext": null }, - "start": 126433, - "end": 126434, + "start": 126947, + "end": 126948, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 65 }, "end": { - "line": 3176, + "line": 3184, "column": 66 } } @@ -435983,15 +439245,15 @@ "binop": null }, "value": "origin", - "start": 126435, - "end": 126441, + "start": 126949, + "end": 126955, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 67 }, "end": { - "line": 3176, + "line": 3184, "column": 73 } } @@ -436008,15 +439270,15 @@ "postfix": false, "binop": null }, - "start": 126441, - "end": 126442, + "start": 126955, + "end": 126956, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 73 }, "end": { - "line": 3176, + "line": 3184, "column": 74 } } @@ -436033,15 +439295,15 @@ "postfix": false, "binop": null }, - "start": 126442, - "end": 126443, + "start": 126956, + "end": 126957, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 74 }, "end": { - "line": 3176, + "line": 3184, "column": 75 } } @@ -436059,15 +439321,15 @@ "binop": null, "updateContext": null }, - "start": 126443, - "end": 126444, + "start": 126957, + "end": 126958, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 75 }, "end": { - "line": 3176, + "line": 3184, "column": 76 } } @@ -436075,15 +439337,15 @@ { "type": "CommentLine", "value": " layerIndex is set in #finalize()", - "start": 126445, - "end": 126480, + "start": 126959, + "end": 126994, "loc": { "start": { - "line": 3176, + "line": 3184, "column": 77 }, "end": { - "line": 3176, + "line": 3184, "column": 112 } } @@ -436103,15 +439365,15 @@ "updateContext": null }, "value": "break", - "start": 126497, - "end": 126502, + "start": 127011, + "end": 127016, "loc": { "start": { - "line": 3177, + "line": 3185, "column": 16 }, "end": { - "line": 3177, + "line": 3185, "column": 21 } } @@ -436129,15 +439391,15 @@ "binop": null, "updateContext": null }, - "start": 126502, - "end": 126503, + "start": 127016, + "end": 127017, "loc": { "start": { - "line": 3177, + "line": 3185, "column": 21 }, "end": { - "line": 3177, + "line": 3185, "column": 22 } } @@ -436157,15 +439419,15 @@ "updateContext": null }, "value": "default", - "start": 126516, - "end": 126523, + "start": 127030, + "end": 127037, "loc": { "start": { - "line": 3178, + "line": 3186, "column": 12 }, "end": { - "line": 3178, + "line": 3186, "column": 19 } } @@ -436183,15 +439445,15 @@ "binop": null, "updateContext": null }, - "start": 126523, - "end": 126524, + "start": 127037, + "end": 127038, "loc": { "start": { - "line": 3178, + "line": 3186, "column": 19 }, "end": { - "line": 3178, + "line": 3186, "column": 20 } } @@ -436211,15 +439473,15 @@ "updateContext": null }, "value": "return", - "start": 126541, - "end": 126547, + "start": 127055, + "end": 127061, "loc": { "start": { - "line": 3179, + "line": 3187, "column": 16 }, "end": { - "line": 3179, + "line": 3187, "column": 22 } } @@ -436237,15 +439499,15 @@ "binop": null, "updateContext": null }, - "start": 126547, - "end": 126548, + "start": 127061, + "end": 127062, "loc": { "start": { - "line": 3179, + "line": 3187, "column": 22 }, "end": { - "line": 3179, + "line": 3187, "column": 23 } } @@ -436262,15 +439524,15 @@ "postfix": false, "binop": null }, - "start": 126557, - "end": 126558, + "start": 127071, + "end": 127072, "loc": { "start": { - "line": 3180, + "line": 3188, "column": 8 }, "end": { - "line": 3180, + "line": 3188, "column": 9 } } @@ -436290,15 +439552,15 @@ "updateContext": null }, "value": "this", - "start": 126567, - "end": 126571, + "start": 127081, + "end": 127085, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 8 }, "end": { - "line": 3181, + "line": 3189, "column": 12 } } @@ -436316,15 +439578,15 @@ "binop": null, "updateContext": null }, - "start": 126571, - "end": 126572, + "start": 127085, + "end": 127086, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 12 }, "end": { - "line": 3181, + "line": 3189, "column": 13 } } @@ -436342,15 +439604,15 @@ "binop": null }, "value": "_dtxLayers", - "start": 126572, - "end": 126582, + "start": 127086, + "end": 127096, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 13 }, "end": { - "line": 3181, + "line": 3189, "column": 23 } } @@ -436368,15 +439630,15 @@ "binop": null, "updateContext": null }, - "start": 126582, - "end": 126583, + "start": 127096, + "end": 127097, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 23 }, "end": { - "line": 3181, + "line": 3189, "column": 24 } } @@ -436394,15 +439656,15 @@ "binop": null }, "value": "layerId", - "start": 126583, - "end": 126590, + "start": 127097, + "end": 127104, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 24 }, "end": { - "line": 3181, + "line": 3189, "column": 31 } } @@ -436420,15 +439682,15 @@ "binop": null, "updateContext": null }, - "start": 126590, - "end": 126591, + "start": 127104, + "end": 127105, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 31 }, "end": { - "line": 3181, + "line": 3189, "column": 32 } } @@ -436447,15 +439709,15 @@ "updateContext": null }, "value": "=", - "start": 126592, - "end": 126593, + "start": 127106, + "end": 127107, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 33 }, "end": { - "line": 3181, + "line": 3189, "column": 34 } } @@ -436473,15 +439735,15 @@ "binop": null }, "value": "dtxLayer", - "start": 126594, - "end": 126602, + "start": 127108, + "end": 127116, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 35 }, "end": { - "line": 3181, + "line": 3189, "column": 43 } } @@ -436499,15 +439761,15 @@ "binop": null, "updateContext": null }, - "start": 126602, - "end": 126603, + "start": 127116, + "end": 127117, "loc": { "start": { - "line": 3181, + "line": 3189, "column": 43 }, "end": { - "line": 3181, + "line": 3189, "column": 44 } } @@ -436527,15 +439789,15 @@ "updateContext": null }, "value": "this", - "start": 126612, - "end": 126616, + "start": 127126, + "end": 127130, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 8 }, "end": { - "line": 3182, + "line": 3190, "column": 12 } } @@ -436553,15 +439815,15 @@ "binop": null, "updateContext": null }, - "start": 126616, - "end": 126617, + "start": 127130, + "end": 127131, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 12 }, "end": { - "line": 3182, + "line": 3190, "column": 13 } } @@ -436579,15 +439841,15 @@ "binop": null }, "value": "layerList", - "start": 126617, - "end": 126626, + "start": 127131, + "end": 127140, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 13 }, "end": { - "line": 3182, + "line": 3190, "column": 22 } } @@ -436605,15 +439867,15 @@ "binop": null, "updateContext": null }, - "start": 126626, - "end": 126627, + "start": 127140, + "end": 127141, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 22 }, "end": { - "line": 3182, + "line": 3190, "column": 23 } } @@ -436631,15 +439893,15 @@ "binop": null }, "value": "push", - "start": 126627, - "end": 126631, + "start": 127141, + "end": 127145, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 23 }, "end": { - "line": 3182, + "line": 3190, "column": 27 } } @@ -436656,15 +439918,15 @@ "postfix": false, "binop": null }, - "start": 126631, - "end": 126632, + "start": 127145, + "end": 127146, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 27 }, "end": { - "line": 3182, + "line": 3190, "column": 28 } } @@ -436682,15 +439944,15 @@ "binop": null }, "value": "dtxLayer", - "start": 126632, - "end": 126640, + "start": 127146, + "end": 127154, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 28 }, "end": { - "line": 3182, + "line": 3190, "column": 36 } } @@ -436707,15 +439969,15 @@ "postfix": false, "binop": null }, - "start": 126640, - "end": 126641, + "start": 127154, + "end": 127155, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 36 }, "end": { - "line": 3182, + "line": 3190, "column": 37 } } @@ -436733,15 +439995,15 @@ "binop": null, "updateContext": null }, - "start": 126641, - "end": 126642, + "start": 127155, + "end": 127156, "loc": { "start": { - "line": 3182, + "line": 3190, "column": 37 }, "end": { - "line": 3182, + "line": 3190, "column": 38 } } @@ -436761,15 +440023,15 @@ "updateContext": null }, "value": "return", - "start": 126651, - "end": 126657, + "start": 127165, + "end": 127171, "loc": { "start": { - "line": 3183, + "line": 3191, "column": 8 }, "end": { - "line": 3183, + "line": 3191, "column": 14 } } @@ -436787,15 +440049,15 @@ "binop": null }, "value": "dtxLayer", - "start": 126658, - "end": 126666, + "start": 127172, + "end": 127180, "loc": { "start": { - "line": 3183, + "line": 3191, "column": 15 }, "end": { - "line": 3183, + "line": 3191, "column": 23 } } @@ -436813,15 +440075,15 @@ "binop": null, "updateContext": null }, - "start": 126666, - "end": 126667, + "start": 127180, + "end": 127181, "loc": { "start": { - "line": 3183, + "line": 3191, "column": 23 }, "end": { - "line": 3183, + "line": 3191, "column": 24 } } @@ -436838,15 +440100,15 @@ "postfix": false, "binop": null }, - "start": 126672, - "end": 126673, + "start": 127186, + "end": 127187, "loc": { "start": { - "line": 3184, + "line": 3192, "column": 4 }, "end": { - "line": 3184, + "line": 3192, "column": 5 } } @@ -436864,15 +440126,15 @@ "binop": null }, "value": "_getVBOBatchingLayer", - "start": 126679, - "end": 126699, + "start": 127193, + "end": 127213, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 4 }, "end": { - "line": 3186, + "line": 3194, "column": 24 } } @@ -436889,15 +440151,15 @@ "postfix": false, "binop": null }, - "start": 126699, - "end": 126700, + "start": 127213, + "end": 127214, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 24 }, "end": { - "line": 3186, + "line": 3194, "column": 25 } } @@ -436915,15 +440177,15 @@ "binop": null }, "value": "cfg", - "start": 126700, - "end": 126703, + "start": 127214, + "end": 127217, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 25 }, "end": { - "line": 3186, + "line": 3194, "column": 28 } } @@ -436940,15 +440202,15 @@ "postfix": false, "binop": null }, - "start": 126703, - "end": 126704, + "start": 127217, + "end": 127218, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 28 }, "end": { - "line": 3186, + "line": 3194, "column": 29 } } @@ -436965,15 +440227,15 @@ "postfix": false, "binop": null }, - "start": 126705, - "end": 126706, + "start": 127219, + "end": 127220, "loc": { "start": { - "line": 3186, + "line": 3194, "column": 30 }, "end": { - "line": 3186, + "line": 3194, "column": 31 } } @@ -436993,15 +440255,15 @@ "updateContext": null }, "value": "const", - "start": 126715, - "end": 126720, + "start": 127229, + "end": 127234, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 8 }, "end": { - "line": 3187, + "line": 3195, "column": 13 } } @@ -437019,15 +440281,15 @@ "binop": null }, "value": "model", - "start": 126721, - "end": 126726, + "start": 127235, + "end": 127240, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 14 }, "end": { - "line": 3187, + "line": 3195, "column": 19 } } @@ -437046,15 +440308,15 @@ "updateContext": null }, "value": "=", - "start": 126727, - "end": 126728, + "start": 127241, + "end": 127242, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 20 }, "end": { - "line": 3187, + "line": 3195, "column": 21 } } @@ -437074,15 +440336,15 @@ "updateContext": null }, "value": "this", - "start": 126729, - "end": 126733, + "start": 127243, + "end": 127247, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 22 }, "end": { - "line": 3187, + "line": 3195, "column": 26 } } @@ -437100,15 +440362,15 @@ "binop": null, "updateContext": null }, - "start": 126733, - "end": 126734, + "start": 127247, + "end": 127248, "loc": { "start": { - "line": 3187, + "line": 3195, "column": 26 }, "end": { - "line": 3187, + "line": 3195, "column": 27 } } @@ -437128,15 +440390,15 @@ "updateContext": null }, "value": "const", - "start": 126743, - "end": 126748, + "start": 127257, + "end": 127262, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 8 }, "end": { - "line": 3188, + "line": 3196, "column": 13 } } @@ -437154,15 +440416,15 @@ "binop": null }, "value": "origin", - "start": 126749, - "end": 126755, + "start": 127263, + "end": 127269, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 14 }, "end": { - "line": 3188, + "line": 3196, "column": 20 } } @@ -437181,15 +440443,15 @@ "updateContext": null }, "value": "=", - "start": 126756, - "end": 126757, + "start": 127270, + "end": 127271, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 21 }, "end": { - "line": 3188, + "line": 3196, "column": 22 } } @@ -437207,15 +440469,15 @@ "binop": null }, "value": "cfg", - "start": 126758, - "end": 126761, + "start": 127272, + "end": 127275, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 23 }, "end": { - "line": 3188, + "line": 3196, "column": 26 } } @@ -437233,15 +440495,15 @@ "binop": null, "updateContext": null }, - "start": 126761, - "end": 126762, + "start": 127275, + "end": 127276, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 26 }, "end": { - "line": 3188, + "line": 3196, "column": 27 } } @@ -437259,15 +440521,15 @@ "binop": null }, "value": "origin", - "start": 126762, - "end": 126768, + "start": 127276, + "end": 127282, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 27 }, "end": { - "line": 3188, + "line": 3196, "column": 33 } } @@ -437285,15 +440547,15 @@ "binop": null, "updateContext": null }, - "start": 126768, - "end": 126769, + "start": 127282, + "end": 127283, "loc": { "start": { - "line": 3188, + "line": 3196, "column": 33 }, "end": { - "line": 3188, + "line": 3196, "column": 34 } } @@ -437313,15 +440575,15 @@ "updateContext": null }, "value": "const", - "start": 126778, - "end": 126783, + "start": 127292, + "end": 127297, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 8 }, "end": { - "line": 3189, + "line": 3197, "column": 13 } } @@ -437339,15 +440601,15 @@ "binop": null }, "value": "positionsDecodeHash", - "start": 126784, - "end": 126803, + "start": 127298, + "end": 127317, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 14 }, "end": { - "line": 3189, + "line": 3197, "column": 33 } } @@ -437366,15 +440628,15 @@ "updateContext": null }, "value": "=", - "start": 126804, - "end": 126805, + "start": 127318, + "end": 127319, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 34 }, "end": { - "line": 3189, + "line": 3197, "column": 35 } } @@ -437392,15 +440654,15 @@ "binop": null }, "value": "cfg", - "start": 126806, - "end": 126809, + "start": 127320, + "end": 127323, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 36 }, "end": { - "line": 3189, + "line": 3197, "column": 39 } } @@ -437418,15 +440680,15 @@ "binop": null, "updateContext": null }, - "start": 126809, - "end": 126810, + "start": 127323, + "end": 127324, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 39 }, "end": { - "line": 3189, + "line": 3197, "column": 40 } } @@ -437444,15 +440706,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 126810, - "end": 126831, + "start": 127324, + "end": 127345, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 40 }, "end": { - "line": 3189, + "line": 3197, "column": 61 } } @@ -437471,15 +440733,15 @@ "updateContext": null }, "value": "||", - "start": 126832, - "end": 126834, + "start": 127346, + "end": 127348, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 62 }, "end": { - "line": 3189, + "line": 3197, "column": 64 } } @@ -437497,15 +440759,15 @@ "binop": null }, "value": "cfg", - "start": 126835, - "end": 126838, + "start": 127349, + "end": 127352, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 65 }, "end": { - "line": 3189, + "line": 3197, "column": 68 } } @@ -437523,15 +440785,15 @@ "binop": null, "updateContext": null }, - "start": 126838, - "end": 126839, + "start": 127352, + "end": 127353, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 68 }, "end": { - "line": 3189, + "line": 3197, "column": 69 } } @@ -437549,15 +440811,15 @@ "binop": null }, "value": "positionsDecodeBoundary", - "start": 126839, - "end": 126862, + "start": 127353, + "end": 127376, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 69 }, "end": { - "line": 3189, + "line": 3197, "column": 92 } } @@ -437575,15 +440837,15 @@ "binop": null, "updateContext": null }, - "start": 126863, - "end": 126864, + "start": 127377, + "end": 127378, "loc": { "start": { - "line": 3189, + "line": 3197, "column": 93 }, "end": { - "line": 3189, + "line": 3197, "column": 94 } } @@ -437603,15 +440865,15 @@ "updateContext": null }, "value": "this", - "start": 126877, - "end": 126881, + "start": 127391, + "end": 127395, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 12 }, "end": { - "line": 3190, + "line": 3198, "column": 16 } } @@ -437629,15 +440891,15 @@ "binop": null, "updateContext": null }, - "start": 126881, - "end": 126882, + "start": 127395, + "end": 127396, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 16 }, "end": { - "line": 3190, + "line": 3198, "column": 17 } } @@ -437655,15 +440917,15 @@ "binop": null }, "value": "_createHashStringFromMatrix", - "start": 126882, - "end": 126909, + "start": 127396, + "end": 127423, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 17 }, "end": { - "line": 3190, + "line": 3198, "column": 44 } } @@ -437680,15 +440942,15 @@ "postfix": false, "binop": null }, - "start": 126909, - "end": 126910, + "start": 127423, + "end": 127424, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 44 }, "end": { - "line": 3190, + "line": 3198, "column": 45 } } @@ -437706,15 +440968,15 @@ "binop": null }, "value": "cfg", - "start": 126910, - "end": 126913, + "start": 127424, + "end": 127427, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 45 }, "end": { - "line": 3190, + "line": 3198, "column": 48 } } @@ -437732,15 +440994,15 @@ "binop": null, "updateContext": null }, - "start": 126913, - "end": 126914, + "start": 127427, + "end": 127428, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 48 }, "end": { - "line": 3190, + "line": 3198, "column": 49 } } @@ -437758,15 +441020,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 126914, - "end": 126935, + "start": 127428, + "end": 127449, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 49 }, "end": { - "line": 3190, + "line": 3198, "column": 70 } } @@ -437785,15 +441047,15 @@ "updateContext": null }, "value": "||", - "start": 126936, - "end": 126938, + "start": 127450, + "end": 127452, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 71 }, "end": { - "line": 3190, + "line": 3198, "column": 73 } } @@ -437811,15 +441073,15 @@ "binop": null }, "value": "cfg", - "start": 126939, - "end": 126942, + "start": 127453, + "end": 127456, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 74 }, "end": { - "line": 3190, + "line": 3198, "column": 77 } } @@ -437837,15 +441099,15 @@ "binop": null, "updateContext": null }, - "start": 126942, - "end": 126943, + "start": 127456, + "end": 127457, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 77 }, "end": { - "line": 3190, + "line": 3198, "column": 78 } } @@ -437863,15 +441125,15 @@ "binop": null }, "value": "positionsDecodeBoundary", - "start": 126943, - "end": 126966, + "start": 127457, + "end": 127480, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 78 }, "end": { - "line": 3190, + "line": 3198, "column": 101 } } @@ -437888,15 +441150,15 @@ "postfix": false, "binop": null }, - "start": 126966, - "end": 126967, + "start": 127480, + "end": 127481, "loc": { "start": { - "line": 3190, + "line": 3198, "column": 101 }, "end": { - "line": 3190, + "line": 3198, "column": 102 } } @@ -437914,15 +441176,15 @@ "binop": null, "updateContext": null }, - "start": 126980, - "end": 126981, + "start": 127494, + "end": 127495, "loc": { "start": { - "line": 3191, + "line": 3199, "column": 12 }, "end": { - "line": 3191, + "line": 3199, "column": 13 } } @@ -437941,15 +441203,15 @@ "updateContext": null }, "value": "-", - "start": 126982, - "end": 126985, + "start": 127496, + "end": 127499, "loc": { "start": { - "line": 3191, + "line": 3199, "column": 14 }, "end": { - "line": 3191, + "line": 3199, "column": 17 } } @@ -437967,15 +441229,15 @@ "binop": null, "updateContext": null }, - "start": 126985, - "end": 126986, + "start": 127499, + "end": 127500, "loc": { "start": { - "line": 3191, + "line": 3199, "column": 17 }, "end": { - "line": 3191, + "line": 3199, "column": 18 } } @@ -437995,15 +441257,15 @@ "updateContext": null }, "value": "const", - "start": 126995, - "end": 127000, + "start": 127509, + "end": 127514, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 8 }, "end": { - "line": 3192, + "line": 3200, "column": 13 } } @@ -438021,15 +441283,15 @@ "binop": null }, "value": "textureSetId", - "start": 127001, - "end": 127013, + "start": 127515, + "end": 127527, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 14 }, "end": { - "line": 3192, + "line": 3200, "column": 26 } } @@ -438048,15 +441310,15 @@ "updateContext": null }, "value": "=", - "start": 127014, - "end": 127015, + "start": 127528, + "end": 127529, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 27 }, "end": { - "line": 3192, + "line": 3200, "column": 28 } } @@ -438074,15 +441336,15 @@ "binop": null }, "value": "cfg", - "start": 127016, - "end": 127019, + "start": 127530, + "end": 127533, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 29 }, "end": { - "line": 3192, + "line": 3200, "column": 32 } } @@ -438100,15 +441362,15 @@ "binop": null, "updateContext": null }, - "start": 127019, - "end": 127020, + "start": 127533, + "end": 127534, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 32 }, "end": { - "line": 3192, + "line": 3200, "column": 33 } } @@ -438126,15 +441388,15 @@ "binop": null }, "value": "textureSetId", - "start": 127020, - "end": 127032, + "start": 127534, + "end": 127546, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 33 }, "end": { - "line": 3192, + "line": 3200, "column": 45 } } @@ -438153,15 +441415,15 @@ "updateContext": null }, "value": "||", - "start": 127033, - "end": 127035, + "start": 127547, + "end": 127549, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 46 }, "end": { - "line": 3192, + "line": 3200, "column": 48 } } @@ -438180,15 +441442,15 @@ "updateContext": null }, "value": "-", - "start": 127036, - "end": 127039, + "start": 127550, + "end": 127553, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 49 }, "end": { - "line": 3192, + "line": 3200, "column": 52 } } @@ -438206,15 +441468,15 @@ "binop": null, "updateContext": null }, - "start": 127039, - "end": 127040, + "start": 127553, + "end": 127554, "loc": { "start": { - "line": 3192, + "line": 3200, "column": 52 }, "end": { - "line": 3192, + "line": 3200, "column": 53 } } @@ -438234,15 +441496,15 @@ "updateContext": null }, "value": "const", - "start": 127049, - "end": 127054, + "start": 127563, + "end": 127568, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 8 }, "end": { - "line": 3193, + "line": 3201, "column": 13 } } @@ -438260,15 +441522,15 @@ "binop": null }, "value": "layerId", - "start": 127055, - "end": 127062, + "start": 127569, + "end": 127576, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 14 }, "end": { - "line": 3193, + "line": 3201, "column": 21 } } @@ -438287,15 +441549,15 @@ "updateContext": null }, "value": "=", - "start": 127063, - "end": 127064, + "start": 127577, + "end": 127578, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 22 }, "end": { - "line": 3193, + "line": 3201, "column": 23 } } @@ -438312,15 +441574,15 @@ "postfix": false, "binop": null }, - "start": 127065, - "end": 127066, + "start": 127579, + "end": 127580, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 24 }, "end": { - "line": 3193, + "line": 3201, "column": 25 } } @@ -438339,15 +441601,15 @@ "updateContext": null }, "value": "", - "start": 127066, - "end": 127066, + "start": 127580, + "end": 127580, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 25 }, "end": { - "line": 3193, + "line": 3201, "column": 25 } } @@ -438364,15 +441626,15 @@ "postfix": false, "binop": null }, - "start": 127066, - "end": 127068, + "start": 127580, + "end": 127582, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 25 }, "end": { - "line": 3193, + "line": 3201, "column": 27 } } @@ -438390,15 +441652,15 @@ "binop": null }, "value": "Math", - "start": 127068, - "end": 127072, + "start": 127582, + "end": 127586, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 27 }, "end": { - "line": 3193, + "line": 3201, "column": 31 } } @@ -438416,15 +441678,15 @@ "binop": null, "updateContext": null }, - "start": 127072, - "end": 127073, + "start": 127586, + "end": 127587, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 31 }, "end": { - "line": 3193, + "line": 3201, "column": 32 } } @@ -438442,15 +441704,15 @@ "binop": null }, "value": "round", - "start": 127073, - "end": 127078, + "start": 127587, + "end": 127592, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 32 }, "end": { - "line": 3193, + "line": 3201, "column": 37 } } @@ -438467,15 +441729,15 @@ "postfix": false, "binop": null }, - "start": 127078, - "end": 127079, + "start": 127592, + "end": 127593, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 37 }, "end": { - "line": 3193, + "line": 3201, "column": 38 } } @@ -438493,15 +441755,15 @@ "binop": null }, "value": "origin", - "start": 127079, - "end": 127085, + "start": 127593, + "end": 127599, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 38 }, "end": { - "line": 3193, + "line": 3201, "column": 44 } } @@ -438519,15 +441781,15 @@ "binop": null, "updateContext": null }, - "start": 127085, - "end": 127086, + "start": 127599, + "end": 127600, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 44 }, "end": { - "line": 3193, + "line": 3201, "column": 45 } } @@ -438546,15 +441808,15 @@ "updateContext": null }, "value": 0, - "start": 127086, - "end": 127087, + "start": 127600, + "end": 127601, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 45 }, "end": { - "line": 3193, + "line": 3201, "column": 46 } } @@ -438572,15 +441834,15 @@ "binop": null, "updateContext": null }, - "start": 127087, - "end": 127088, + "start": 127601, + "end": 127602, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 46 }, "end": { - "line": 3193, + "line": 3201, "column": 47 } } @@ -438597,15 +441859,15 @@ "postfix": false, "binop": null }, - "start": 127088, - "end": 127089, + "start": 127602, + "end": 127603, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 47 }, "end": { - "line": 3193, + "line": 3201, "column": 48 } } @@ -438622,15 +441884,15 @@ "postfix": false, "binop": null }, - "start": 127089, - "end": 127090, + "start": 127603, + "end": 127604, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 48 }, "end": { - "line": 3193, + "line": 3201, "column": 49 } } @@ -438649,15 +441911,15 @@ "updateContext": null }, "value": ".", - "start": 127090, - "end": 127091, + "start": 127604, + "end": 127605, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 49 }, "end": { - "line": 3193, + "line": 3201, "column": 50 } } @@ -438674,15 +441936,15 @@ "postfix": false, "binop": null }, - "start": 127091, - "end": 127093, + "start": 127605, + "end": 127607, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 50 }, "end": { - "line": 3193, + "line": 3201, "column": 52 } } @@ -438700,15 +441962,15 @@ "binop": null }, "value": "Math", - "start": 127093, - "end": 127097, + "start": 127607, + "end": 127611, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 52 }, "end": { - "line": 3193, + "line": 3201, "column": 56 } } @@ -438726,15 +441988,15 @@ "binop": null, "updateContext": null }, - "start": 127097, - "end": 127098, + "start": 127611, + "end": 127612, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 56 }, "end": { - "line": 3193, + "line": 3201, "column": 57 } } @@ -438752,15 +442014,15 @@ "binop": null }, "value": "round", - "start": 127098, - "end": 127103, + "start": 127612, + "end": 127617, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 57 }, "end": { - "line": 3193, + "line": 3201, "column": 62 } } @@ -438777,15 +442039,15 @@ "postfix": false, "binop": null }, - "start": 127103, - "end": 127104, + "start": 127617, + "end": 127618, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 62 }, "end": { - "line": 3193, + "line": 3201, "column": 63 } } @@ -438803,15 +442065,15 @@ "binop": null }, "value": "origin", - "start": 127104, - "end": 127110, + "start": 127618, + "end": 127624, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 63 }, "end": { - "line": 3193, + "line": 3201, "column": 69 } } @@ -438829,15 +442091,15 @@ "binop": null, "updateContext": null }, - "start": 127110, - "end": 127111, + "start": 127624, + "end": 127625, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 69 }, "end": { - "line": 3193, + "line": 3201, "column": 70 } } @@ -438856,15 +442118,15 @@ "updateContext": null }, "value": 1, - "start": 127111, - "end": 127112, + "start": 127625, + "end": 127626, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 70 }, "end": { - "line": 3193, + "line": 3201, "column": 71 } } @@ -438882,15 +442144,15 @@ "binop": null, "updateContext": null }, - "start": 127112, - "end": 127113, + "start": 127626, + "end": 127627, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 71 }, "end": { - "line": 3193, + "line": 3201, "column": 72 } } @@ -438907,15 +442169,15 @@ "postfix": false, "binop": null }, - "start": 127113, - "end": 127114, + "start": 127627, + "end": 127628, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 72 }, "end": { - "line": 3193, + "line": 3201, "column": 73 } } @@ -438932,15 +442194,15 @@ "postfix": false, "binop": null }, - "start": 127114, - "end": 127115, + "start": 127628, + "end": 127629, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 73 }, "end": { - "line": 3193, + "line": 3201, "column": 74 } } @@ -438959,15 +442221,15 @@ "updateContext": null }, "value": ".", - "start": 127115, - "end": 127116, + "start": 127629, + "end": 127630, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 74 }, "end": { - "line": 3193, + "line": 3201, "column": 75 } } @@ -438984,15 +442246,15 @@ "postfix": false, "binop": null }, - "start": 127116, - "end": 127118, + "start": 127630, + "end": 127632, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 75 }, "end": { - "line": 3193, + "line": 3201, "column": 77 } } @@ -439010,15 +442272,15 @@ "binop": null }, "value": "Math", - "start": 127118, - "end": 127122, + "start": 127632, + "end": 127636, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 77 }, "end": { - "line": 3193, + "line": 3201, "column": 81 } } @@ -439036,15 +442298,15 @@ "binop": null, "updateContext": null }, - "start": 127122, - "end": 127123, + "start": 127636, + "end": 127637, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 81 }, "end": { - "line": 3193, + "line": 3201, "column": 82 } } @@ -439062,15 +442324,15 @@ "binop": null }, "value": "round", - "start": 127123, - "end": 127128, + "start": 127637, + "end": 127642, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 82 }, "end": { - "line": 3193, + "line": 3201, "column": 87 } } @@ -439087,15 +442349,15 @@ "postfix": false, "binop": null }, - "start": 127128, - "end": 127129, + "start": 127642, + "end": 127643, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 87 }, "end": { - "line": 3193, + "line": 3201, "column": 88 } } @@ -439113,15 +442375,15 @@ "binop": null }, "value": "origin", - "start": 127129, - "end": 127135, + "start": 127643, + "end": 127649, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 88 }, "end": { - "line": 3193, + "line": 3201, "column": 94 } } @@ -439139,15 +442401,15 @@ "binop": null, "updateContext": null }, - "start": 127135, - "end": 127136, + "start": 127649, + "end": 127650, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 94 }, "end": { - "line": 3193, + "line": 3201, "column": 95 } } @@ -439166,15 +442428,15 @@ "updateContext": null }, "value": 2, - "start": 127136, - "end": 127137, + "start": 127650, + "end": 127651, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 95 }, "end": { - "line": 3193, + "line": 3201, "column": 96 } } @@ -439192,15 +442454,15 @@ "binop": null, "updateContext": null }, - "start": 127137, - "end": 127138, + "start": 127651, + "end": 127652, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 96 }, "end": { - "line": 3193, + "line": 3201, "column": 97 } } @@ -439217,15 +442479,15 @@ "postfix": false, "binop": null }, - "start": 127138, - "end": 127139, + "start": 127652, + "end": 127653, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 97 }, "end": { - "line": 3193, + "line": 3201, "column": 98 } } @@ -439242,15 +442504,15 @@ "postfix": false, "binop": null }, - "start": 127139, - "end": 127140, + "start": 127653, + "end": 127654, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 98 }, "end": { - "line": 3193, + "line": 3201, "column": 99 } } @@ -439269,15 +442531,15 @@ "updateContext": null }, "value": ".", - "start": 127140, - "end": 127141, + "start": 127654, + "end": 127655, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 99 }, "end": { - "line": 3193, + "line": 3201, "column": 100 } } @@ -439294,15 +442556,15 @@ "postfix": false, "binop": null }, - "start": 127141, - "end": 127143, + "start": 127655, + "end": 127657, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 100 }, "end": { - "line": 3193, + "line": 3201, "column": 102 } } @@ -439320,15 +442582,15 @@ "binop": null }, "value": "cfg", - "start": 127143, - "end": 127146, + "start": 127657, + "end": 127660, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 102 }, "end": { - "line": 3193, + "line": 3201, "column": 105 } } @@ -439346,15 +442608,15 @@ "binop": null, "updateContext": null }, - "start": 127146, - "end": 127147, + "start": 127660, + "end": 127661, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 105 }, "end": { - "line": 3193, + "line": 3201, "column": 106 } } @@ -439372,15 +442634,15 @@ "binop": null }, "value": "primitive", - "start": 127147, - "end": 127156, + "start": 127661, + "end": 127670, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 106 }, "end": { - "line": 3193, + "line": 3201, "column": 115 } } @@ -439397,15 +442659,15 @@ "postfix": false, "binop": null }, - "start": 127156, - "end": 127157, + "start": 127670, + "end": 127671, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 115 }, "end": { - "line": 3193, + "line": 3201, "column": 116 } } @@ -439424,15 +442686,15 @@ "updateContext": null }, "value": ".", - "start": 127157, - "end": 127158, + "start": 127671, + "end": 127672, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 116 }, "end": { - "line": 3193, + "line": 3201, "column": 117 } } @@ -439449,15 +442711,15 @@ "postfix": false, "binop": null }, - "start": 127158, - "end": 127160, + "start": 127672, + "end": 127674, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 117 }, "end": { - "line": 3193, + "line": 3201, "column": 119 } } @@ -439475,15 +442737,15 @@ "binop": null }, "value": "positionsDecodeHash", - "start": 127160, - "end": 127179, + "start": 127674, + "end": 127693, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 119 }, "end": { - "line": 3193, + "line": 3201, "column": 138 } } @@ -439500,15 +442762,15 @@ "postfix": false, "binop": null }, - "start": 127179, - "end": 127180, + "start": 127693, + "end": 127694, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 138 }, "end": { - "line": 3193, + "line": 3201, "column": 139 } } @@ -439527,15 +442789,15 @@ "updateContext": null }, "value": ".", - "start": 127180, - "end": 127181, + "start": 127694, + "end": 127695, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 139 }, "end": { - "line": 3193, + "line": 3201, "column": 140 } } @@ -439552,15 +442814,15 @@ "postfix": false, "binop": null }, - "start": 127181, - "end": 127183, + "start": 127695, + "end": 127697, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 140 }, "end": { - "line": 3193, + "line": 3201, "column": 142 } } @@ -439578,15 +442840,15 @@ "binop": null }, "value": "textureSetId", - "start": 127183, - "end": 127195, + "start": 127697, + "end": 127709, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 142 }, "end": { - "line": 3193, + "line": 3201, "column": 154 } } @@ -439603,15 +442865,15 @@ "postfix": false, "binop": null }, - "start": 127195, - "end": 127196, + "start": 127709, + "end": 127710, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 154 }, "end": { - "line": 3193, + "line": 3201, "column": 155 } } @@ -439630,15 +442892,15 @@ "updateContext": null }, "value": "", - "start": 127196, - "end": 127196, + "start": 127710, + "end": 127710, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 155 }, "end": { - "line": 3193, + "line": 3201, "column": 155 } } @@ -439655,15 +442917,15 @@ "postfix": false, "binop": null }, - "start": 127196, - "end": 127197, + "start": 127710, + "end": 127711, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 155 }, "end": { - "line": 3193, + "line": 3201, "column": 156 } } @@ -439681,15 +442943,15 @@ "binop": null, "updateContext": null }, - "start": 127197, - "end": 127198, + "start": 127711, + "end": 127712, "loc": { "start": { - "line": 3193, + "line": 3201, "column": 156 }, "end": { - "line": 3193, + "line": 3201, "column": 157 } } @@ -439709,15 +442971,15 @@ "updateContext": null }, "value": "let", - "start": 127207, - "end": 127210, + "start": 127721, + "end": 127724, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 8 }, "end": { - "line": 3194, + "line": 3202, "column": 11 } } @@ -439735,15 +442997,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 127211, - "end": 127227, + "start": 127725, + "end": 127741, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 12 }, "end": { - "line": 3194, + "line": 3202, "column": 28 } } @@ -439762,15 +443024,15 @@ "updateContext": null }, "value": "=", - "start": 127228, - "end": 127229, + "start": 127742, + "end": 127743, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 29 }, "end": { - "line": 3194, + "line": 3202, "column": 30 } } @@ -439790,15 +443052,15 @@ "updateContext": null }, "value": "this", - "start": 127230, - "end": 127234, + "start": 127744, + "end": 127748, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 31 }, "end": { - "line": 3194, + "line": 3202, "column": 35 } } @@ -439816,15 +443078,15 @@ "binop": null, "updateContext": null }, - "start": 127234, - "end": 127235, + "start": 127748, + "end": 127749, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 35 }, "end": { - "line": 3194, + "line": 3202, "column": 36 } } @@ -439842,15 +443104,15 @@ "binop": null }, "value": "_vboBatchingLayers", - "start": 127235, - "end": 127253, + "start": 127749, + "end": 127767, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 36 }, "end": { - "line": 3194, + "line": 3202, "column": 54 } } @@ -439868,15 +443130,15 @@ "binop": null, "updateContext": null }, - "start": 127253, - "end": 127254, + "start": 127767, + "end": 127768, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 54 }, "end": { - "line": 3194, + "line": 3202, "column": 55 } } @@ -439894,15 +443156,15 @@ "binop": null }, "value": "layerId", - "start": 127254, - "end": 127261, + "start": 127768, + "end": 127775, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 55 }, "end": { - "line": 3194, + "line": 3202, "column": 62 } } @@ -439920,15 +443182,15 @@ "binop": null, "updateContext": null }, - "start": 127261, - "end": 127262, + "start": 127775, + "end": 127776, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 62 }, "end": { - "line": 3194, + "line": 3202, "column": 63 } } @@ -439946,15 +443208,15 @@ "binop": null, "updateContext": null }, - "start": 127262, - "end": 127263, + "start": 127776, + "end": 127777, "loc": { "start": { - "line": 3194, + "line": 3202, "column": 63 }, "end": { - "line": 3194, + "line": 3202, "column": 64 } } @@ -439974,15 +443236,15 @@ "updateContext": null }, "value": "if", - "start": 127272, - "end": 127274, + "start": 127786, + "end": 127788, "loc": { "start": { - "line": 3195, + "line": 3203, "column": 8 }, "end": { - "line": 3195, + "line": 3203, "column": 10 } } @@ -439999,15 +443261,15 @@ "postfix": false, "binop": null }, - "start": 127275, - "end": 127276, + "start": 127789, + "end": 127790, "loc": { "start": { - "line": 3195, + "line": 3203, "column": 11 }, "end": { - "line": 3195, + "line": 3203, "column": 12 } } @@ -440025,15 +443287,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 127276, - "end": 127292, + "start": 127790, + "end": 127806, "loc": { "start": { - "line": 3195, + "line": 3203, "column": 12 }, "end": { - "line": 3195, + "line": 3203, "column": 28 } } @@ -440050,15 +443312,15 @@ "postfix": false, "binop": null }, - "start": 127292, - "end": 127293, + "start": 127806, + "end": 127807, "loc": { "start": { - "line": 3195, + "line": 3203, "column": 28 }, "end": { - "line": 3195, + "line": 3203, "column": 29 } } @@ -440075,15 +443337,15 @@ "postfix": false, "binop": null }, - "start": 127294, - "end": 127295, + "start": 127808, + "end": 127809, "loc": { "start": { - "line": 3195, + "line": 3203, "column": 30 }, "end": { - "line": 3195, + "line": 3203, "column": 31 } } @@ -440103,15 +443365,15 @@ "updateContext": null }, "value": "return", - "start": 127308, - "end": 127314, + "start": 127822, + "end": 127828, "loc": { "start": { - "line": 3196, + "line": 3204, "column": 12 }, "end": { - "line": 3196, + "line": 3204, "column": 18 } } @@ -440129,15 +443391,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 127315, - "end": 127331, + "start": 127829, + "end": 127845, "loc": { "start": { - "line": 3196, + "line": 3204, "column": 19 }, "end": { - "line": 3196, + "line": 3204, "column": 35 } } @@ -440155,15 +443417,15 @@ "binop": null, "updateContext": null }, - "start": 127331, - "end": 127332, + "start": 127845, + "end": 127846, "loc": { "start": { - "line": 3196, + "line": 3204, "column": 35 }, "end": { - "line": 3196, + "line": 3204, "column": 36 } } @@ -440180,15 +443442,15 @@ "postfix": false, "binop": null }, - "start": 127341, - "end": 127342, + "start": 127855, + "end": 127856, "loc": { "start": { - "line": 3197, + "line": 3205, "column": 8 }, "end": { - "line": 3197, + "line": 3205, "column": 9 } } @@ -440208,15 +443470,15 @@ "updateContext": null }, "value": "let", - "start": 127351, - "end": 127354, + "start": 127865, + "end": 127868, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 8 }, "end": { - "line": 3198, + "line": 3206, "column": 11 } } @@ -440234,15 +443496,15 @@ "binop": null }, "value": "textureSet", - "start": 127355, - "end": 127365, + "start": 127869, + "end": 127879, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 12 }, "end": { - "line": 3198, + "line": 3206, "column": 22 } } @@ -440261,15 +443523,15 @@ "updateContext": null }, "value": "=", - "start": 127366, - "end": 127367, + "start": 127880, + "end": 127881, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 23 }, "end": { - "line": 3198, + "line": 3206, "column": 24 } } @@ -440287,15 +443549,15 @@ "binop": null }, "value": "cfg", - "start": 127368, - "end": 127371, + "start": 127882, + "end": 127885, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 25 }, "end": { - "line": 3198, + "line": 3206, "column": 28 } } @@ -440313,15 +443575,15 @@ "binop": null, "updateContext": null }, - "start": 127371, - "end": 127372, + "start": 127885, + "end": 127886, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 28 }, "end": { - "line": 3198, + "line": 3206, "column": 29 } } @@ -440339,15 +443601,15 @@ "binop": null }, "value": "textureSet", - "start": 127372, - "end": 127382, + "start": 127886, + "end": 127896, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 29 }, "end": { - "line": 3198, + "line": 3206, "column": 39 } } @@ -440365,15 +443627,15 @@ "binop": null, "updateContext": null }, - "start": 127382, - "end": 127383, + "start": 127896, + "end": 127897, "loc": { "start": { - "line": 3198, + "line": 3206, "column": 39 }, "end": { - "line": 3198, + "line": 3206, "column": 40 } } @@ -440393,15 +443655,15 @@ "updateContext": null }, "value": "while", - "start": 127392, - "end": 127397, + "start": 127906, + "end": 127911, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 8 }, "end": { - "line": 3199, + "line": 3207, "column": 13 } } @@ -440418,15 +443680,15 @@ "postfix": false, "binop": null }, - "start": 127398, - "end": 127399, + "start": 127912, + "end": 127913, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 14 }, "end": { - "line": 3199, + "line": 3207, "column": 15 } } @@ -440445,15 +443707,15 @@ "updateContext": null }, "value": "!", - "start": 127399, - "end": 127400, + "start": 127913, + "end": 127914, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 15 }, "end": { - "line": 3199, + "line": 3207, "column": 16 } } @@ -440471,15 +443733,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 127400, - "end": 127416, + "start": 127914, + "end": 127930, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 16 }, "end": { - "line": 3199, + "line": 3207, "column": 32 } } @@ -440496,15 +443758,15 @@ "postfix": false, "binop": null }, - "start": 127416, - "end": 127417, + "start": 127930, + "end": 127931, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 32 }, "end": { - "line": 3199, + "line": 3207, "column": 33 } } @@ -440521,15 +443783,15 @@ "postfix": false, "binop": null }, - "start": 127418, - "end": 127419, + "start": 127932, + "end": 127933, "loc": { "start": { - "line": 3199, + "line": 3207, "column": 34 }, "end": { - "line": 3199, + "line": 3207, "column": 35 } } @@ -440549,15 +443811,15 @@ "updateContext": null }, "value": "switch", - "start": 127432, - "end": 127438, + "start": 127946, + "end": 127952, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 12 }, "end": { - "line": 3200, + "line": 3208, "column": 18 } } @@ -440574,15 +443836,15 @@ "postfix": false, "binop": null }, - "start": 127439, - "end": 127440, + "start": 127953, + "end": 127954, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 19 }, "end": { - "line": 3200, + "line": 3208, "column": 20 } } @@ -440600,15 +443862,15 @@ "binop": null }, "value": "cfg", - "start": 127440, - "end": 127443, + "start": 127954, + "end": 127957, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 20 }, "end": { - "line": 3200, + "line": 3208, "column": 23 } } @@ -440626,15 +443888,15 @@ "binop": null, "updateContext": null }, - "start": 127443, - "end": 127444, + "start": 127957, + "end": 127958, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 23 }, "end": { - "line": 3200, + "line": 3208, "column": 24 } } @@ -440652,15 +443914,15 @@ "binop": null }, "value": "primitive", - "start": 127444, - "end": 127453, + "start": 127958, + "end": 127967, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 24 }, "end": { - "line": 3200, + "line": 3208, "column": 33 } } @@ -440677,15 +443939,15 @@ "postfix": false, "binop": null }, - "start": 127453, - "end": 127454, + "start": 127967, + "end": 127968, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 33 }, "end": { - "line": 3200, + "line": 3208, "column": 34 } } @@ -440702,15 +443964,15 @@ "postfix": false, "binop": null }, - "start": 127455, - "end": 127456, + "start": 127969, + "end": 127970, "loc": { "start": { - "line": 3200, + "line": 3208, "column": 35 }, "end": { - "line": 3200, + "line": 3208, "column": 36 } } @@ -440730,15 +443992,15 @@ "updateContext": null }, "value": "case", - "start": 127473, - "end": 127477, + "start": 127987, + "end": 127991, "loc": { "start": { - "line": 3201, + "line": 3209, "column": 16 }, "end": { - "line": 3201, + "line": 3209, "column": 20 } } @@ -440757,15 +444019,15 @@ "updateContext": null }, "value": "triangles", - "start": 127478, - "end": 127489, + "start": 127992, + "end": 128003, "loc": { "start": { - "line": 3201, + "line": 3209, "column": 21 }, "end": { - "line": 3201, + "line": 3209, "column": 32 } } @@ -440783,15 +444045,15 @@ "binop": null, "updateContext": null }, - "start": 127489, - "end": 127490, + "start": 128003, + "end": 128004, "loc": { "start": { - "line": 3201, + "line": 3209, "column": 32 }, "end": { - "line": 3201, + "line": 3209, "column": 33 } } @@ -440799,15 +444061,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 127511, - "end": 127587, + "start": 128025, + "end": 128101, "loc": { "start": { - "line": 3202, + "line": 3210, "column": 20 }, "end": { - "line": 3202, + "line": 3210, "column": 96 } } @@ -440825,15 +444087,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 127608, - "end": 127624, + "start": 128122, + "end": 128138, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 20 }, "end": { - "line": 3203, + "line": 3211, "column": 36 } } @@ -440852,15 +444114,15 @@ "updateContext": null }, "value": "=", - "start": 127625, - "end": 127626, + "start": 128139, + "end": 128140, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 37 }, "end": { - "line": 3203, + "line": 3211, "column": 38 } } @@ -440880,15 +444142,15 @@ "updateContext": null }, "value": "new", - "start": 127627, - "end": 127630, + "start": 128141, + "end": 128144, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 39 }, "end": { - "line": 3203, + "line": 3211, "column": 42 } } @@ -440906,15 +444168,15 @@ "binop": null }, "value": "VBOBatchingTrianglesLayer", - "start": 127631, - "end": 127656, + "start": 128145, + "end": 128170, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 43 }, "end": { - "line": 3203, + "line": 3211, "column": 68 } } @@ -440931,15 +444193,15 @@ "postfix": false, "binop": null }, - "start": 127656, - "end": 127657, + "start": 128170, + "end": 128171, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 68 }, "end": { - "line": 3203, + "line": 3211, "column": 69 } } @@ -440956,15 +444218,15 @@ "postfix": false, "binop": null }, - "start": 127657, - "end": 127658, + "start": 128171, + "end": 128172, "loc": { "start": { - "line": 3203, + "line": 3211, "column": 69 }, "end": { - "line": 3203, + "line": 3211, "column": 70 } } @@ -440982,15 +444244,15 @@ "binop": null }, "value": "model", - "start": 127683, - "end": 127688, + "start": 128197, + "end": 128202, "loc": { "start": { - "line": 3204, + "line": 3212, "column": 24 }, "end": { - "line": 3204, + "line": 3212, "column": 29 } } @@ -441008,15 +444270,15 @@ "binop": null, "updateContext": null }, - "start": 127688, - "end": 127689, + "start": 128202, + "end": 128203, "loc": { "start": { - "line": 3204, + "line": 3212, "column": 29 }, "end": { - "line": 3204, + "line": 3212, "column": 30 } } @@ -441034,15 +444296,15 @@ "binop": null }, "value": "textureSet", - "start": 127714, - "end": 127724, + "start": 128228, + "end": 128238, "loc": { "start": { - "line": 3205, + "line": 3213, "column": 24 }, "end": { - "line": 3205, + "line": 3213, "column": 34 } } @@ -441060,15 +444322,15 @@ "binop": null, "updateContext": null }, - "start": 127724, - "end": 127725, + "start": 128238, + "end": 128239, "loc": { "start": { - "line": 3205, + "line": 3213, "column": 34 }, "end": { - "line": 3205, + "line": 3213, "column": 35 } } @@ -441086,15 +444348,15 @@ "binop": null }, "value": "layerIndex", - "start": 127750, - "end": 127760, + "start": 128264, + "end": 128274, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 24 }, "end": { - "line": 3206, + "line": 3214, "column": 34 } } @@ -441112,15 +444374,15 @@ "binop": null, "updateContext": null }, - "start": 127760, - "end": 127761, + "start": 128274, + "end": 128275, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 34 }, "end": { - "line": 3206, + "line": 3214, "column": 35 } } @@ -441139,15 +444401,15 @@ "updateContext": null }, "value": 0, - "start": 127762, - "end": 127763, + "start": 128276, + "end": 128277, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 36 }, "end": { - "line": 3206, + "line": 3214, "column": 37 } } @@ -441165,15 +444427,15 @@ "binop": null, "updateContext": null }, - "start": 127763, - "end": 127764, + "start": 128277, + "end": 128278, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 37 }, "end": { - "line": 3206, + "line": 3214, "column": 38 } } @@ -441181,15 +444443,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 127765, - "end": 127794, + "start": 128279, + "end": 128308, "loc": { "start": { - "line": 3206, + "line": 3214, "column": 39 }, "end": { - "line": 3206, + "line": 3214, "column": 68 } } @@ -441207,15 +444469,15 @@ "binop": null }, "value": "scratchMemory", - "start": 127819, - "end": 127832, + "start": 128333, + "end": 128346, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 24 }, "end": { - "line": 3207, + "line": 3215, "column": 37 } } @@ -441233,15 +444495,15 @@ "binop": null, "updateContext": null }, - "start": 127832, - "end": 127833, + "start": 128346, + "end": 128347, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 37 }, "end": { - "line": 3207, + "line": 3215, "column": 38 } } @@ -441261,15 +444523,15 @@ "updateContext": null }, "value": "this", - "start": 127834, - "end": 127838, + "start": 128348, + "end": 128352, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 39 }, "end": { - "line": 3207, + "line": 3215, "column": 43 } } @@ -441287,15 +444549,15 @@ "binop": null, "updateContext": null }, - "start": 127838, - "end": 127839, + "start": 128352, + "end": 128353, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 43 }, "end": { - "line": 3207, + "line": 3215, "column": 44 } } @@ -441313,15 +444575,15 @@ "binop": null }, "value": "_vboBatchingLayerScratchMemory", - "start": 127839, - "end": 127869, + "start": 128353, + "end": 128383, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 44 }, "end": { - "line": 3207, + "line": 3215, "column": 74 } } @@ -441339,15 +444601,15 @@ "binop": null, "updateContext": null }, - "start": 127869, - "end": 127870, + "start": 128383, + "end": 128384, "loc": { "start": { - "line": 3207, + "line": 3215, "column": 74 }, "end": { - "line": 3207, + "line": 3215, "column": 75 } } @@ -441365,15 +444627,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 127895, - "end": 127916, + "start": 128409, + "end": 128430, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 24 }, "end": { - "line": 3208, + "line": 3216, "column": 45 } } @@ -441391,15 +444653,15 @@ "binop": null, "updateContext": null }, - "start": 127916, - "end": 127917, + "start": 128430, + "end": 128431, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 45 }, "end": { - "line": 3208, + "line": 3216, "column": 46 } } @@ -441417,15 +444679,15 @@ "binop": null }, "value": "cfg", - "start": 127918, - "end": 127921, + "start": 128432, + "end": 128435, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 47 }, "end": { - "line": 3208, + "line": 3216, "column": 50 } } @@ -441443,15 +444705,15 @@ "binop": null, "updateContext": null }, - "start": 127921, - "end": 127922, + "start": 128435, + "end": 128436, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 50 }, "end": { - "line": 3208, + "line": 3216, "column": 51 } } @@ -441469,15 +444731,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 127922, - "end": 127943, + "start": 128436, + "end": 128457, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 51 }, "end": { - "line": 3208, + "line": 3216, "column": 72 } } @@ -441495,15 +444757,15 @@ "binop": null, "updateContext": null }, - "start": 127943, - "end": 127944, + "start": 128457, + "end": 128458, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 72 }, "end": { - "line": 3208, + "line": 3216, "column": 73 } } @@ -441511,15 +444773,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 127946, - "end": 127965, + "start": 128460, + "end": 128479, "loc": { "start": { - "line": 3208, + "line": 3216, "column": 75 }, "end": { - "line": 3208, + "line": 3216, "column": 94 } } @@ -441537,15 +444799,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 127990, - "end": 128004, + "start": 128504, + "end": 128518, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 24 }, "end": { - "line": 3209, + "line": 3217, "column": 38 } } @@ -441563,15 +444825,15 @@ "binop": null, "updateContext": null }, - "start": 128004, - "end": 128005, + "start": 128518, + "end": 128519, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 38 }, "end": { - "line": 3209, + "line": 3217, "column": 39 } } @@ -441589,15 +444851,15 @@ "binop": null }, "value": "cfg", - "start": 128006, - "end": 128009, + "start": 128520, + "end": 128523, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 40 }, "end": { - "line": 3209, + "line": 3217, "column": 43 } } @@ -441615,15 +444877,15 @@ "binop": null, "updateContext": null }, - "start": 128009, - "end": 128010, + "start": 128523, + "end": 128524, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 43 }, "end": { - "line": 3209, + "line": 3217, "column": 44 } } @@ -441641,15 +444903,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 128010, - "end": 128024, + "start": 128524, + "end": 128538, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 44 }, "end": { - "line": 3209, + "line": 3217, "column": 58 } } @@ -441667,15 +444929,15 @@ "binop": null, "updateContext": null }, - "start": 128024, - "end": 128025, + "start": 128538, + "end": 128539, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 58 }, "end": { - "line": 3209, + "line": 3217, "column": 59 } } @@ -441683,15 +444945,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128026, - "end": 128045, + "start": 128540, + "end": 128559, "loc": { "start": { - "line": 3209, + "line": 3217, "column": 60 }, "end": { - "line": 3209, + "line": 3217, "column": 79 } } @@ -441709,15 +444971,15 @@ "binop": null }, "value": "origin", - "start": 128070, - "end": 128076, + "start": 128584, + "end": 128590, "loc": { "start": { - "line": 3210, + "line": 3218, "column": 24 }, "end": { - "line": 3210, + "line": 3218, "column": 30 } } @@ -441735,15 +444997,15 @@ "binop": null, "updateContext": null }, - "start": 128076, - "end": 128077, + "start": 128590, + "end": 128591, "loc": { "start": { - "line": 3210, + "line": 3218, "column": 30 }, "end": { - "line": 3210, + "line": 3218, "column": 31 } } @@ -441761,15 +445023,15 @@ "binop": null }, "value": "maxGeometryBatchSize", - "start": 128102, - "end": 128122, + "start": 128616, + "end": 128636, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 24 }, "end": { - "line": 3211, + "line": 3219, "column": 44 } } @@ -441787,15 +445049,15 @@ "binop": null, "updateContext": null }, - "start": 128122, - "end": 128123, + "start": 128636, + "end": 128637, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 44 }, "end": { - "line": 3211, + "line": 3219, "column": 45 } } @@ -441815,15 +445077,15 @@ "updateContext": null }, "value": "this", - "start": 128124, - "end": 128128, + "start": 128638, + "end": 128642, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 46 }, "end": { - "line": 3211, + "line": 3219, "column": 50 } } @@ -441841,15 +445103,15 @@ "binop": null, "updateContext": null }, - "start": 128128, - "end": 128129, + "start": 128642, + "end": 128643, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 50 }, "end": { - "line": 3211, + "line": 3219, "column": 51 } } @@ -441867,15 +445129,15 @@ "binop": null }, "value": "_maxGeometryBatchSize", - "start": 128129, - "end": 128150, + "start": 128643, + "end": 128664, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 51 }, "end": { - "line": 3211, + "line": 3219, "column": 72 } } @@ -441893,15 +445155,15 @@ "binop": null, "updateContext": null }, - "start": 128150, - "end": 128151, + "start": 128664, + "end": 128665, "loc": { "start": { - "line": 3211, + "line": 3219, "column": 72 }, "end": { - "line": 3211, + "line": 3219, "column": 73 } } @@ -441919,15 +445181,15 @@ "binop": null }, "value": "solid", - "start": 128176, - "end": 128181, + "start": 128690, + "end": 128695, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 24 }, "end": { - "line": 3212, + "line": 3220, "column": 29 } } @@ -441945,15 +445207,15 @@ "binop": null, "updateContext": null }, - "start": 128181, - "end": 128182, + "start": 128695, + "end": 128696, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 29 }, "end": { - "line": 3212, + "line": 3220, "column": 30 } } @@ -441970,15 +445232,15 @@ "postfix": false, "binop": null }, - "start": 128183, - "end": 128184, + "start": 128697, + "end": 128698, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 31 }, "end": { - "line": 3212, + "line": 3220, "column": 32 } } @@ -441996,15 +445258,15 @@ "binop": null }, "value": "cfg", - "start": 128184, - "end": 128187, + "start": 128698, + "end": 128701, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 32 }, "end": { - "line": 3212, + "line": 3220, "column": 35 } } @@ -442022,15 +445284,15 @@ "binop": null, "updateContext": null }, - "start": 128187, - "end": 128188, + "start": 128701, + "end": 128702, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 35 }, "end": { - "line": 3212, + "line": 3220, "column": 36 } } @@ -442048,15 +445310,15 @@ "binop": null }, "value": "primitive", - "start": 128188, - "end": 128197, + "start": 128702, + "end": 128711, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 36 }, "end": { - "line": 3212, + "line": 3220, "column": 45 } } @@ -442075,15 +445337,15 @@ "updateContext": null }, "value": "===", - "start": 128198, - "end": 128201, + "start": 128712, + "end": 128715, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 46 }, "end": { - "line": 3212, + "line": 3220, "column": 49 } } @@ -442102,15 +445364,15 @@ "updateContext": null }, "value": "solid", - "start": 128202, - "end": 128209, + "start": 128716, + "end": 128723, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 50 }, "end": { - "line": 3212, + "line": 3220, "column": 57 } } @@ -442127,15 +445389,15 @@ "postfix": false, "binop": null }, - "start": 128209, - "end": 128210, + "start": 128723, + "end": 128724, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 57 }, "end": { - "line": 3212, + "line": 3220, "column": 58 } } @@ -442153,15 +445415,15 @@ "binop": null, "updateContext": null }, - "start": 128210, - "end": 128211, + "start": 128724, + "end": 128725, "loc": { "start": { - "line": 3212, + "line": 3220, "column": 58 }, "end": { - "line": 3212, + "line": 3220, "column": 59 } } @@ -442179,15 +445441,15 @@ "binop": null }, "value": "autoNormals", - "start": 128236, - "end": 128247, + "start": 128750, + "end": 128761, "loc": { "start": { - "line": 3213, + "line": 3221, "column": 24 }, "end": { - "line": 3213, + "line": 3221, "column": 35 } } @@ -442205,15 +445467,15 @@ "binop": null, "updateContext": null }, - "start": 128247, - "end": 128248, + "start": 128761, + "end": 128762, "loc": { "start": { - "line": 3213, + "line": 3221, "column": 35 }, "end": { - "line": 3213, + "line": 3221, "column": 36 } } @@ -442233,15 +445495,15 @@ "updateContext": null }, "value": "true", - "start": 128249, - "end": 128253, + "start": 128763, + "end": 128767, "loc": { "start": { - "line": 3213, + "line": 3221, "column": 37 }, "end": { - "line": 3213, + "line": 3221, "column": 41 } } @@ -442258,15 +445520,15 @@ "postfix": false, "binop": null }, - "start": 128274, - "end": 128275, + "start": 128788, + "end": 128789, "loc": { "start": { - "line": 3214, + "line": 3222, "column": 20 }, "end": { - "line": 3214, + "line": 3222, "column": 21 } } @@ -442283,15 +445545,15 @@ "postfix": false, "binop": null }, - "start": 128275, - "end": 128276, + "start": 128789, + "end": 128790, "loc": { "start": { - "line": 3214, + "line": 3222, "column": 21 }, "end": { - "line": 3214, + "line": 3222, "column": 22 } } @@ -442309,15 +445571,15 @@ "binop": null, "updateContext": null }, - "start": 128276, - "end": 128277, + "start": 128790, + "end": 128791, "loc": { "start": { - "line": 3214, + "line": 3222, "column": 22 }, "end": { - "line": 3214, + "line": 3222, "column": 23 } } @@ -442337,15 +445599,15 @@ "updateContext": null }, "value": "break", - "start": 128298, - "end": 128303, + "start": 128812, + "end": 128817, "loc": { "start": { - "line": 3215, + "line": 3223, "column": 20 }, "end": { - "line": 3215, + "line": 3223, "column": 25 } } @@ -442363,15 +445625,15 @@ "binop": null, "updateContext": null }, - "start": 128303, - "end": 128304, + "start": 128817, + "end": 128818, "loc": { "start": { - "line": 3215, + "line": 3223, "column": 25 }, "end": { - "line": 3215, + "line": 3223, "column": 26 } } @@ -442391,15 +445653,15 @@ "updateContext": null }, "value": "case", - "start": 128321, - "end": 128325, + "start": 128835, + "end": 128839, "loc": { "start": { - "line": 3216, + "line": 3224, "column": 16 }, "end": { - "line": 3216, + "line": 3224, "column": 20 } } @@ -442418,15 +445680,15 @@ "updateContext": null }, "value": "solid", - "start": 128326, - "end": 128333, + "start": 128840, + "end": 128847, "loc": { "start": { - "line": 3216, + "line": 3224, "column": 21 }, "end": { - "line": 3216, + "line": 3224, "column": 28 } } @@ -442444,15 +445706,15 @@ "binop": null, "updateContext": null }, - "start": 128333, - "end": 128334, + "start": 128847, + "end": 128848, "loc": { "start": { - "line": 3216, + "line": 3224, "column": 28 }, "end": { - "line": 3216, + "line": 3224, "column": 29 } } @@ -442460,15 +445722,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 128355, - "end": 128431, + "start": 128869, + "end": 128945, "loc": { "start": { - "line": 3217, + "line": 3225, "column": 20 }, "end": { - "line": 3217, + "line": 3225, "column": 96 } } @@ -442486,15 +445748,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 128452, - "end": 128468, + "start": 128966, + "end": 128982, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 20 }, "end": { - "line": 3218, + "line": 3226, "column": 36 } } @@ -442513,15 +445775,15 @@ "updateContext": null }, "value": "=", - "start": 128469, - "end": 128470, + "start": 128983, + "end": 128984, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 37 }, "end": { - "line": 3218, + "line": 3226, "column": 38 } } @@ -442541,15 +445803,15 @@ "updateContext": null }, "value": "new", - "start": 128471, - "end": 128474, + "start": 128985, + "end": 128988, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 39 }, "end": { - "line": 3218, + "line": 3226, "column": 42 } } @@ -442567,15 +445829,15 @@ "binop": null }, "value": "VBOBatchingTrianglesLayer", - "start": 128475, - "end": 128500, + "start": 128989, + "end": 129014, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 43 }, "end": { - "line": 3218, + "line": 3226, "column": 68 } } @@ -442592,15 +445854,15 @@ "postfix": false, "binop": null }, - "start": 128500, - "end": 128501, + "start": 129014, + "end": 129015, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 68 }, "end": { - "line": 3218, + "line": 3226, "column": 69 } } @@ -442617,15 +445879,15 @@ "postfix": false, "binop": null }, - "start": 128501, - "end": 128502, + "start": 129015, + "end": 129016, "loc": { "start": { - "line": 3218, + "line": 3226, "column": 69 }, "end": { - "line": 3218, + "line": 3226, "column": 70 } } @@ -442643,15 +445905,15 @@ "binop": null }, "value": "model", - "start": 128527, - "end": 128532, + "start": 129041, + "end": 129046, "loc": { "start": { - "line": 3219, + "line": 3227, "column": 24 }, "end": { - "line": 3219, + "line": 3227, "column": 29 } } @@ -442669,15 +445931,15 @@ "binop": null, "updateContext": null }, - "start": 128532, - "end": 128533, + "start": 129046, + "end": 129047, "loc": { "start": { - "line": 3219, + "line": 3227, "column": 29 }, "end": { - "line": 3219, + "line": 3227, "column": 30 } } @@ -442695,15 +445957,15 @@ "binop": null }, "value": "textureSet", - "start": 128558, - "end": 128568, + "start": 129072, + "end": 129082, "loc": { "start": { - "line": 3220, + "line": 3228, "column": 24 }, "end": { - "line": 3220, + "line": 3228, "column": 34 } } @@ -442721,15 +445983,15 @@ "binop": null, "updateContext": null }, - "start": 128568, - "end": 128569, + "start": 129082, + "end": 129083, "loc": { "start": { - "line": 3220, + "line": 3228, "column": 34 }, "end": { - "line": 3220, + "line": 3228, "column": 35 } } @@ -442747,15 +446009,15 @@ "binop": null }, "value": "layerIndex", - "start": 128594, - "end": 128604, + "start": 129108, + "end": 129118, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 24 }, "end": { - "line": 3221, + "line": 3229, "column": 34 } } @@ -442773,15 +446035,15 @@ "binop": null, "updateContext": null }, - "start": 128604, - "end": 128605, + "start": 129118, + "end": 129119, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 34 }, "end": { - "line": 3221, + "line": 3229, "column": 35 } } @@ -442800,15 +446062,15 @@ "updateContext": null }, "value": 0, - "start": 128606, - "end": 128607, + "start": 129120, + "end": 129121, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 36 }, "end": { - "line": 3221, + "line": 3229, "column": 37 } } @@ -442826,15 +446088,15 @@ "binop": null, "updateContext": null }, - "start": 128607, - "end": 128608, + "start": 129121, + "end": 129122, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 37 }, "end": { - "line": 3221, + "line": 3229, "column": 38 } } @@ -442842,15 +446104,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 128609, - "end": 128638, + "start": 129123, + "end": 129152, "loc": { "start": { - "line": 3221, + "line": 3229, "column": 39 }, "end": { - "line": 3221, + "line": 3229, "column": 68 } } @@ -442868,15 +446130,15 @@ "binop": null }, "value": "scratchMemory", - "start": 128663, - "end": 128676, + "start": 129177, + "end": 129190, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 24 }, "end": { - "line": 3222, + "line": 3230, "column": 37 } } @@ -442894,15 +446156,15 @@ "binop": null, "updateContext": null }, - "start": 128676, - "end": 128677, + "start": 129190, + "end": 129191, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 37 }, "end": { - "line": 3222, + "line": 3230, "column": 38 } } @@ -442922,15 +446184,15 @@ "updateContext": null }, "value": "this", - "start": 128678, - "end": 128682, + "start": 129192, + "end": 129196, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 39 }, "end": { - "line": 3222, + "line": 3230, "column": 43 } } @@ -442948,15 +446210,15 @@ "binop": null, "updateContext": null }, - "start": 128682, - "end": 128683, + "start": 129196, + "end": 129197, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 43 }, "end": { - "line": 3222, + "line": 3230, "column": 44 } } @@ -442974,15 +446236,15 @@ "binop": null }, "value": "_vboBatchingLayerScratchMemory", - "start": 128683, - "end": 128713, + "start": 129197, + "end": 129227, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 44 }, "end": { - "line": 3222, + "line": 3230, "column": 74 } } @@ -443000,15 +446262,15 @@ "binop": null, "updateContext": null }, - "start": 128713, - "end": 128714, + "start": 129227, + "end": 129228, "loc": { "start": { - "line": 3222, + "line": 3230, "column": 74 }, "end": { - "line": 3222, + "line": 3230, "column": 75 } } @@ -443026,15 +446288,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 128739, - "end": 128760, + "start": 129253, + "end": 129274, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 24 }, "end": { - "line": 3223, + "line": 3231, "column": 45 } } @@ -443052,15 +446314,15 @@ "binop": null, "updateContext": null }, - "start": 128760, - "end": 128761, + "start": 129274, + "end": 129275, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 45 }, "end": { - "line": 3223, + "line": 3231, "column": 46 } } @@ -443078,15 +446340,15 @@ "binop": null }, "value": "cfg", - "start": 128762, - "end": 128765, + "start": 129276, + "end": 129279, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 47 }, "end": { - "line": 3223, + "line": 3231, "column": 50 } } @@ -443104,15 +446366,15 @@ "binop": null, "updateContext": null }, - "start": 128765, - "end": 128766, + "start": 129279, + "end": 129280, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 50 }, "end": { - "line": 3223, + "line": 3231, "column": 51 } } @@ -443130,15 +446392,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 128766, - "end": 128787, + "start": 129280, + "end": 129301, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 51 }, "end": { - "line": 3223, + "line": 3231, "column": 72 } } @@ -443156,15 +446418,15 @@ "binop": null, "updateContext": null }, - "start": 128787, - "end": 128788, + "start": 129301, + "end": 129302, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 72 }, "end": { - "line": 3223, + "line": 3231, "column": 73 } } @@ -443172,15 +446434,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128790, - "end": 128809, + "start": 129304, + "end": 129323, "loc": { "start": { - "line": 3223, + "line": 3231, "column": 75 }, "end": { - "line": 3223, + "line": 3231, "column": 94 } } @@ -443198,15 +446460,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 128834, - "end": 128848, + "start": 129348, + "end": 129362, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 24 }, "end": { - "line": 3224, + "line": 3232, "column": 38 } } @@ -443224,15 +446486,15 @@ "binop": null, "updateContext": null }, - "start": 128848, - "end": 128849, + "start": 129362, + "end": 129363, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 38 }, "end": { - "line": 3224, + "line": 3232, "column": 39 } } @@ -443250,15 +446512,15 @@ "binop": null }, "value": "cfg", - "start": 128850, - "end": 128853, + "start": 129364, + "end": 129367, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 40 }, "end": { - "line": 3224, + "line": 3232, "column": 43 } } @@ -443276,15 +446538,15 @@ "binop": null, "updateContext": null }, - "start": 128853, - "end": 128854, + "start": 129367, + "end": 129368, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 43 }, "end": { - "line": 3224, + "line": 3232, "column": 44 } } @@ -443302,15 +446564,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 128854, - "end": 128868, + "start": 129368, + "end": 129382, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 44 }, "end": { - "line": 3224, + "line": 3232, "column": 58 } } @@ -443328,15 +446590,15 @@ "binop": null, "updateContext": null }, - "start": 128868, - "end": 128869, + "start": 129382, + "end": 129383, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 58 }, "end": { - "line": 3224, + "line": 3232, "column": 59 } } @@ -443344,15 +446606,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 128870, - "end": 128889, + "start": 129384, + "end": 129403, "loc": { "start": { - "line": 3224, + "line": 3232, "column": 60 }, "end": { - "line": 3224, + "line": 3232, "column": 79 } } @@ -443370,15 +446632,15 @@ "binop": null }, "value": "origin", - "start": 128914, - "end": 128920, + "start": 129428, + "end": 129434, "loc": { "start": { - "line": 3225, + "line": 3233, "column": 24 }, "end": { - "line": 3225, + "line": 3233, "column": 30 } } @@ -443396,15 +446658,15 @@ "binop": null, "updateContext": null }, - "start": 128920, - "end": 128921, + "start": 129434, + "end": 129435, "loc": { "start": { - "line": 3225, + "line": 3233, "column": 30 }, "end": { - "line": 3225, + "line": 3233, "column": 31 } } @@ -443422,15 +446684,15 @@ "binop": null }, "value": "maxGeometryBatchSize", - "start": 128946, - "end": 128966, + "start": 129460, + "end": 129480, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 24 }, "end": { - "line": 3226, + "line": 3234, "column": 44 } } @@ -443448,15 +446710,15 @@ "binop": null, "updateContext": null }, - "start": 128966, - "end": 128967, + "start": 129480, + "end": 129481, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 44 }, "end": { - "line": 3226, + "line": 3234, "column": 45 } } @@ -443476,15 +446738,15 @@ "updateContext": null }, "value": "this", - "start": 128968, - "end": 128972, + "start": 129482, + "end": 129486, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 46 }, "end": { - "line": 3226, + "line": 3234, "column": 50 } } @@ -443502,15 +446764,15 @@ "binop": null, "updateContext": null }, - "start": 128972, - "end": 128973, + "start": 129486, + "end": 129487, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 50 }, "end": { - "line": 3226, + "line": 3234, "column": 51 } } @@ -443528,15 +446790,15 @@ "binop": null }, "value": "_maxGeometryBatchSize", - "start": 128973, - "end": 128994, + "start": 129487, + "end": 129508, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 51 }, "end": { - "line": 3226, + "line": 3234, "column": 72 } } @@ -443554,15 +446816,15 @@ "binop": null, "updateContext": null }, - "start": 128994, - "end": 128995, + "start": 129508, + "end": 129509, "loc": { "start": { - "line": 3226, + "line": 3234, "column": 72 }, "end": { - "line": 3226, + "line": 3234, "column": 73 } } @@ -443580,15 +446842,15 @@ "binop": null }, "value": "solid", - "start": 129020, - "end": 129025, + "start": 129534, + "end": 129539, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 24 }, "end": { - "line": 3227, + "line": 3235, "column": 29 } } @@ -443606,15 +446868,15 @@ "binop": null, "updateContext": null }, - "start": 129025, - "end": 129026, + "start": 129539, + "end": 129540, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 29 }, "end": { - "line": 3227, + "line": 3235, "column": 30 } } @@ -443631,15 +446893,15 @@ "postfix": false, "binop": null }, - "start": 129027, - "end": 129028, + "start": 129541, + "end": 129542, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 31 }, "end": { - "line": 3227, + "line": 3235, "column": 32 } } @@ -443657,15 +446919,15 @@ "binop": null }, "value": "cfg", - "start": 129028, - "end": 129031, + "start": 129542, + "end": 129545, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 32 }, "end": { - "line": 3227, + "line": 3235, "column": 35 } } @@ -443683,15 +446945,15 @@ "binop": null, "updateContext": null }, - "start": 129031, - "end": 129032, + "start": 129545, + "end": 129546, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 35 }, "end": { - "line": 3227, + "line": 3235, "column": 36 } } @@ -443709,15 +446971,15 @@ "binop": null }, "value": "primitive", - "start": 129032, - "end": 129041, + "start": 129546, + "end": 129555, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 36 }, "end": { - "line": 3227, + "line": 3235, "column": 45 } } @@ -443736,15 +446998,15 @@ "updateContext": null }, "value": "===", - "start": 129042, - "end": 129045, + "start": 129556, + "end": 129559, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 46 }, "end": { - "line": 3227, + "line": 3235, "column": 49 } } @@ -443763,15 +447025,15 @@ "updateContext": null }, "value": "solid", - "start": 129046, - "end": 129053, + "start": 129560, + "end": 129567, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 50 }, "end": { - "line": 3227, + "line": 3235, "column": 57 } } @@ -443788,15 +447050,15 @@ "postfix": false, "binop": null }, - "start": 129053, - "end": 129054, + "start": 129567, + "end": 129568, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 57 }, "end": { - "line": 3227, + "line": 3235, "column": 58 } } @@ -443814,15 +447076,15 @@ "binop": null, "updateContext": null }, - "start": 129054, - "end": 129055, + "start": 129568, + "end": 129569, "loc": { "start": { - "line": 3227, + "line": 3235, "column": 58 }, "end": { - "line": 3227, + "line": 3235, "column": 59 } } @@ -443840,15 +447102,15 @@ "binop": null }, "value": "autoNormals", - "start": 129080, - "end": 129091, + "start": 129594, + "end": 129605, "loc": { "start": { - "line": 3228, + "line": 3236, "column": 24 }, "end": { - "line": 3228, + "line": 3236, "column": 35 } } @@ -443866,15 +447128,15 @@ "binop": null, "updateContext": null }, - "start": 129091, - "end": 129092, + "start": 129605, + "end": 129606, "loc": { "start": { - "line": 3228, + "line": 3236, "column": 35 }, "end": { - "line": 3228, + "line": 3236, "column": 36 } } @@ -443894,15 +447156,15 @@ "updateContext": null }, "value": "true", - "start": 129093, - "end": 129097, + "start": 129607, + "end": 129611, "loc": { "start": { - "line": 3228, + "line": 3236, "column": 37 }, "end": { - "line": 3228, + "line": 3236, "column": 41 } } @@ -443919,15 +447181,15 @@ "postfix": false, "binop": null }, - "start": 129118, - "end": 129119, + "start": 129632, + "end": 129633, "loc": { "start": { - "line": 3229, + "line": 3237, "column": 20 }, "end": { - "line": 3229, + "line": 3237, "column": 21 } } @@ -443944,15 +447206,15 @@ "postfix": false, "binop": null }, - "start": 129119, - "end": 129120, + "start": 129633, + "end": 129634, "loc": { "start": { - "line": 3229, + "line": 3237, "column": 21 }, "end": { - "line": 3229, + "line": 3237, "column": 22 } } @@ -443970,15 +447232,15 @@ "binop": null, "updateContext": null }, - "start": 129120, - "end": 129121, + "start": 129634, + "end": 129635, "loc": { "start": { - "line": 3229, + "line": 3237, "column": 22 }, "end": { - "line": 3229, + "line": 3237, "column": 23 } } @@ -443998,15 +447260,15 @@ "updateContext": null }, "value": "break", - "start": 129142, - "end": 129147, + "start": 129656, + "end": 129661, "loc": { "start": { - "line": 3230, + "line": 3238, "column": 20 }, "end": { - "line": 3230, + "line": 3238, "column": 25 } } @@ -444024,15 +447286,15 @@ "binop": null, "updateContext": null }, - "start": 129147, - "end": 129148, + "start": 129661, + "end": 129662, "loc": { "start": { - "line": 3230, + "line": 3238, "column": 25 }, "end": { - "line": 3230, + "line": 3238, "column": 26 } } @@ -444052,15 +447314,15 @@ "updateContext": null }, "value": "case", - "start": 129165, - "end": 129169, + "start": 129679, + "end": 129683, "loc": { "start": { - "line": 3231, + "line": 3239, "column": 16 }, "end": { - "line": 3231, + "line": 3239, "column": 20 } } @@ -444079,15 +447341,15 @@ "updateContext": null }, "value": "surface", - "start": 129170, - "end": 129179, + "start": 129684, + "end": 129693, "loc": { "start": { - "line": 3231, + "line": 3239, "column": 21 }, "end": { - "line": 3231, + "line": 3239, "column": 30 } } @@ -444105,15 +447367,15 @@ "binop": null, "updateContext": null }, - "start": 129179, - "end": 129180, + "start": 129693, + "end": 129694, "loc": { "start": { - "line": 3231, + "line": 3239, "column": 30 }, "end": { - "line": 3231, + "line": 3239, "column": 31 } } @@ -444121,15 +447383,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);", - "start": 129201, - "end": 129277, + "start": 129715, + "end": 129791, "loc": { "start": { - "line": 3232, + "line": 3240, "column": 20 }, "end": { - "line": 3232, + "line": 3240, "column": 96 } } @@ -444147,15 +447409,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 129298, - "end": 129314, + "start": 129812, + "end": 129828, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 20 }, "end": { - "line": 3233, + "line": 3241, "column": 36 } } @@ -444174,15 +447436,15 @@ "updateContext": null }, "value": "=", - "start": 129315, - "end": 129316, + "start": 129829, + "end": 129830, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 37 }, "end": { - "line": 3233, + "line": 3241, "column": 38 } } @@ -444202,15 +447464,15 @@ "updateContext": null }, "value": "new", - "start": 129317, - "end": 129320, + "start": 129831, + "end": 129834, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 39 }, "end": { - "line": 3233, + "line": 3241, "column": 42 } } @@ -444228,15 +447490,15 @@ "binop": null }, "value": "VBOBatchingTrianglesLayer", - "start": 129321, - "end": 129346, + "start": 129835, + "end": 129860, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 43 }, "end": { - "line": 3233, + "line": 3241, "column": 68 } } @@ -444253,15 +447515,15 @@ "postfix": false, "binop": null }, - "start": 129346, - "end": 129347, + "start": 129860, + "end": 129861, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 68 }, "end": { - "line": 3233, + "line": 3241, "column": 69 } } @@ -444278,15 +447540,15 @@ "postfix": false, "binop": null }, - "start": 129347, - "end": 129348, + "start": 129861, + "end": 129862, "loc": { "start": { - "line": 3233, + "line": 3241, "column": 69 }, "end": { - "line": 3233, + "line": 3241, "column": 70 } } @@ -444304,15 +447566,15 @@ "binop": null }, "value": "model", - "start": 129373, - "end": 129378, + "start": 129887, + "end": 129892, "loc": { "start": { - "line": 3234, + "line": 3242, "column": 24 }, "end": { - "line": 3234, + "line": 3242, "column": 29 } } @@ -444330,15 +447592,15 @@ "binop": null, "updateContext": null }, - "start": 129378, - "end": 129379, + "start": 129892, + "end": 129893, "loc": { "start": { - "line": 3234, + "line": 3242, "column": 29 }, "end": { - "line": 3234, + "line": 3242, "column": 30 } } @@ -444356,15 +447618,15 @@ "binop": null }, "value": "textureSet", - "start": 129404, - "end": 129414, + "start": 129918, + "end": 129928, "loc": { "start": { - "line": 3235, + "line": 3243, "column": 24 }, "end": { - "line": 3235, + "line": 3243, "column": 34 } } @@ -444382,15 +447644,15 @@ "binop": null, "updateContext": null }, - "start": 129414, - "end": 129415, + "start": 129928, + "end": 129929, "loc": { "start": { - "line": 3235, + "line": 3243, "column": 34 }, "end": { - "line": 3235, + "line": 3243, "column": 35 } } @@ -444408,15 +447670,15 @@ "binop": null }, "value": "layerIndex", - "start": 129440, - "end": 129450, + "start": 129954, + "end": 129964, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 24 }, "end": { - "line": 3236, + "line": 3244, "column": 34 } } @@ -444434,15 +447696,15 @@ "binop": null, "updateContext": null }, - "start": 129450, - "end": 129451, + "start": 129964, + "end": 129965, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 34 }, "end": { - "line": 3236, + "line": 3244, "column": 35 } } @@ -444461,15 +447723,15 @@ "updateContext": null }, "value": 0, - "start": 129452, - "end": 129453, + "start": 129966, + "end": 129967, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 36 }, "end": { - "line": 3236, + "line": 3244, "column": 37 } } @@ -444487,15 +447749,15 @@ "binop": null, "updateContext": null }, - "start": 129453, - "end": 129454, + "start": 129967, + "end": 129968, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 37 }, "end": { - "line": 3236, + "line": 3244, "column": 38 } } @@ -444503,15 +447765,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 129455, - "end": 129484, + "start": 129969, + "end": 129998, "loc": { "start": { - "line": 3236, + "line": 3244, "column": 39 }, "end": { - "line": 3236, + "line": 3244, "column": 68 } } @@ -444529,15 +447791,15 @@ "binop": null }, "value": "scratchMemory", - "start": 129509, - "end": 129522, + "start": 130023, + "end": 130036, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 24 }, "end": { - "line": 3237, + "line": 3245, "column": 37 } } @@ -444555,15 +447817,15 @@ "binop": null, "updateContext": null }, - "start": 129522, - "end": 129523, + "start": 130036, + "end": 130037, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 37 }, "end": { - "line": 3237, + "line": 3245, "column": 38 } } @@ -444583,15 +447845,15 @@ "updateContext": null }, "value": "this", - "start": 129524, - "end": 129528, + "start": 130038, + "end": 130042, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 39 }, "end": { - "line": 3237, + "line": 3245, "column": 43 } } @@ -444609,15 +447871,15 @@ "binop": null, "updateContext": null }, - "start": 129528, - "end": 129529, + "start": 130042, + "end": 130043, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 43 }, "end": { - "line": 3237, + "line": 3245, "column": 44 } } @@ -444635,15 +447897,15 @@ "binop": null }, "value": "_vboBatchingLayerScratchMemory", - "start": 129529, - "end": 129559, + "start": 130043, + "end": 130073, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 44 }, "end": { - "line": 3237, + "line": 3245, "column": 74 } } @@ -444661,15 +447923,15 @@ "binop": null, "updateContext": null }, - "start": 129559, - "end": 129560, + "start": 130073, + "end": 130074, "loc": { "start": { - "line": 3237, + "line": 3245, "column": 74 }, "end": { - "line": 3237, + "line": 3245, "column": 75 } } @@ -444687,15 +447949,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 129585, - "end": 129606, + "start": 130099, + "end": 130120, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 24 }, "end": { - "line": 3238, + "line": 3246, "column": 45 } } @@ -444713,15 +447975,15 @@ "binop": null, "updateContext": null }, - "start": 129606, - "end": 129607, + "start": 130120, + "end": 130121, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 45 }, "end": { - "line": 3238, + "line": 3246, "column": 46 } } @@ -444739,15 +448001,15 @@ "binop": null }, "value": "cfg", - "start": 129608, - "end": 129611, + "start": 130122, + "end": 130125, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 47 }, "end": { - "line": 3238, + "line": 3246, "column": 50 } } @@ -444765,15 +448027,15 @@ "binop": null, "updateContext": null }, - "start": 129611, - "end": 129612, + "start": 130125, + "end": 130126, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 50 }, "end": { - "line": 3238, + "line": 3246, "column": 51 } } @@ -444791,15 +448053,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 129612, - "end": 129633, + "start": 130126, + "end": 130147, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 51 }, "end": { - "line": 3238, + "line": 3246, "column": 72 } } @@ -444817,15 +448079,15 @@ "binop": null, "updateContext": null }, - "start": 129633, - "end": 129634, + "start": 130147, + "end": 130148, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 72 }, "end": { - "line": 3238, + "line": 3246, "column": 73 } } @@ -444833,15 +448095,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 129636, - "end": 129655, + "start": 130150, + "end": 130169, "loc": { "start": { - "line": 3238, + "line": 3246, "column": 75 }, "end": { - "line": 3238, + "line": 3246, "column": 94 } } @@ -444859,15 +448121,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 129680, - "end": 129694, + "start": 130194, + "end": 130208, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 24 }, "end": { - "line": 3239, + "line": 3247, "column": 38 } } @@ -444885,15 +448147,15 @@ "binop": null, "updateContext": null }, - "start": 129694, - "end": 129695, + "start": 130208, + "end": 130209, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 38 }, "end": { - "line": 3239, + "line": 3247, "column": 39 } } @@ -444911,15 +448173,15 @@ "binop": null }, "value": "cfg", - "start": 129696, - "end": 129699, + "start": 130210, + "end": 130213, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 40 }, "end": { - "line": 3239, + "line": 3247, "column": 43 } } @@ -444937,15 +448199,15 @@ "binop": null, "updateContext": null }, - "start": 129699, - "end": 129700, + "start": 130213, + "end": 130214, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 43 }, "end": { - "line": 3239, + "line": 3247, "column": 44 } } @@ -444963,15 +448225,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 129700, - "end": 129714, + "start": 130214, + "end": 130228, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 44 }, "end": { - "line": 3239, + "line": 3247, "column": 58 } } @@ -444989,15 +448251,15 @@ "binop": null, "updateContext": null }, - "start": 129714, - "end": 129715, + "start": 130228, + "end": 130229, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 58 }, "end": { - "line": 3239, + "line": 3247, "column": 59 } } @@ -445005,15 +448267,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 129716, - "end": 129735, + "start": 130230, + "end": 130249, "loc": { "start": { - "line": 3239, + "line": 3247, "column": 60 }, "end": { - "line": 3239, + "line": 3247, "column": 79 } } @@ -445031,15 +448293,15 @@ "binop": null }, "value": "origin", - "start": 129760, - "end": 129766, + "start": 130274, + "end": 130280, "loc": { "start": { - "line": 3240, + "line": 3248, "column": 24 }, "end": { - "line": 3240, + "line": 3248, "column": 30 } } @@ -445057,15 +448319,15 @@ "binop": null, "updateContext": null }, - "start": 129766, - "end": 129767, + "start": 130280, + "end": 130281, "loc": { "start": { - "line": 3240, + "line": 3248, "column": 30 }, "end": { - "line": 3240, + "line": 3248, "column": 31 } } @@ -445083,15 +448345,15 @@ "binop": null }, "value": "maxGeometryBatchSize", - "start": 129792, - "end": 129812, + "start": 130306, + "end": 130326, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 24 }, "end": { - "line": 3241, + "line": 3249, "column": 44 } } @@ -445109,15 +448371,15 @@ "binop": null, "updateContext": null }, - "start": 129812, - "end": 129813, + "start": 130326, + "end": 130327, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 44 }, "end": { - "line": 3241, + "line": 3249, "column": 45 } } @@ -445137,15 +448399,15 @@ "updateContext": null }, "value": "this", - "start": 129814, - "end": 129818, + "start": 130328, + "end": 130332, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 46 }, "end": { - "line": 3241, + "line": 3249, "column": 50 } } @@ -445163,15 +448425,15 @@ "binop": null, "updateContext": null }, - "start": 129818, - "end": 129819, + "start": 130332, + "end": 130333, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 50 }, "end": { - "line": 3241, + "line": 3249, "column": 51 } } @@ -445189,15 +448451,15 @@ "binop": null }, "value": "_maxGeometryBatchSize", - "start": 129819, - "end": 129840, + "start": 130333, + "end": 130354, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 51 }, "end": { - "line": 3241, + "line": 3249, "column": 72 } } @@ -445215,15 +448477,15 @@ "binop": null, "updateContext": null }, - "start": 129840, - "end": 129841, + "start": 130354, + "end": 130355, "loc": { "start": { - "line": 3241, + "line": 3249, "column": 72 }, "end": { - "line": 3241, + "line": 3249, "column": 73 } } @@ -445241,15 +448503,15 @@ "binop": null }, "value": "solid", - "start": 129866, - "end": 129871, + "start": 130380, + "end": 130385, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 24 }, "end": { - "line": 3242, + "line": 3250, "column": 29 } } @@ -445267,15 +448529,15 @@ "binop": null, "updateContext": null }, - "start": 129871, - "end": 129872, + "start": 130385, + "end": 130386, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 29 }, "end": { - "line": 3242, + "line": 3250, "column": 30 } } @@ -445292,15 +448554,15 @@ "postfix": false, "binop": null }, - "start": 129873, - "end": 129874, + "start": 130387, + "end": 130388, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 31 }, "end": { - "line": 3242, + "line": 3250, "column": 32 } } @@ -445318,15 +448580,15 @@ "binop": null }, "value": "cfg", - "start": 129874, - "end": 129877, + "start": 130388, + "end": 130391, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 32 }, "end": { - "line": 3242, + "line": 3250, "column": 35 } } @@ -445344,15 +448606,15 @@ "binop": null, "updateContext": null }, - "start": 129877, - "end": 129878, + "start": 130391, + "end": 130392, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 35 }, "end": { - "line": 3242, + "line": 3250, "column": 36 } } @@ -445370,15 +448632,15 @@ "binop": null }, "value": "primitive", - "start": 129878, - "end": 129887, + "start": 130392, + "end": 130401, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 36 }, "end": { - "line": 3242, + "line": 3250, "column": 45 } } @@ -445397,15 +448659,15 @@ "updateContext": null }, "value": "===", - "start": 129888, - "end": 129891, + "start": 130402, + "end": 130405, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 46 }, "end": { - "line": 3242, + "line": 3250, "column": 49 } } @@ -445424,15 +448686,15 @@ "updateContext": null }, "value": "solid", - "start": 129892, - "end": 129899, + "start": 130406, + "end": 130413, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 50 }, "end": { - "line": 3242, + "line": 3250, "column": 57 } } @@ -445449,15 +448711,15 @@ "postfix": false, "binop": null }, - "start": 129899, - "end": 129900, + "start": 130413, + "end": 130414, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 57 }, "end": { - "line": 3242, + "line": 3250, "column": 58 } } @@ -445475,15 +448737,15 @@ "binop": null, "updateContext": null }, - "start": 129900, - "end": 129901, + "start": 130414, + "end": 130415, "loc": { "start": { - "line": 3242, + "line": 3250, "column": 58 }, "end": { - "line": 3242, + "line": 3250, "column": 59 } } @@ -445501,15 +448763,15 @@ "binop": null }, "value": "autoNormals", - "start": 129926, - "end": 129937, + "start": 130440, + "end": 130451, "loc": { "start": { - "line": 3243, + "line": 3251, "column": 24 }, "end": { - "line": 3243, + "line": 3251, "column": 35 } } @@ -445527,15 +448789,15 @@ "binop": null, "updateContext": null }, - "start": 129937, - "end": 129938, + "start": 130451, + "end": 130452, "loc": { "start": { - "line": 3243, + "line": 3251, "column": 35 }, "end": { - "line": 3243, + "line": 3251, "column": 36 } } @@ -445555,15 +448817,15 @@ "updateContext": null }, "value": "true", - "start": 129939, - "end": 129943, + "start": 130453, + "end": 130457, "loc": { "start": { - "line": 3243, + "line": 3251, "column": 37 }, "end": { - "line": 3243, + "line": 3251, "column": 41 } } @@ -445580,15 +448842,15 @@ "postfix": false, "binop": null }, - "start": 129964, - "end": 129965, + "start": 130478, + "end": 130479, "loc": { "start": { - "line": 3244, + "line": 3252, "column": 20 }, "end": { - "line": 3244, + "line": 3252, "column": 21 } } @@ -445605,15 +448867,15 @@ "postfix": false, "binop": null }, - "start": 129965, - "end": 129966, + "start": 130479, + "end": 130480, "loc": { "start": { - "line": 3244, + "line": 3252, "column": 21 }, "end": { - "line": 3244, + "line": 3252, "column": 22 } } @@ -445631,15 +448893,15 @@ "binop": null, "updateContext": null }, - "start": 129966, - "end": 129967, + "start": 130480, + "end": 130481, "loc": { "start": { - "line": 3244, + "line": 3252, "column": 22 }, "end": { - "line": 3244, + "line": 3252, "column": 23 } } @@ -445659,15 +448921,15 @@ "updateContext": null }, "value": "break", - "start": 129988, - "end": 129993, + "start": 130502, + "end": 130507, "loc": { "start": { - "line": 3245, + "line": 3253, "column": 20 }, "end": { - "line": 3245, + "line": 3253, "column": 25 } } @@ -445685,15 +448947,15 @@ "binop": null, "updateContext": null }, - "start": 129993, - "end": 129994, + "start": 130507, + "end": 130508, "loc": { "start": { - "line": 3245, + "line": 3253, "column": 25 }, "end": { - "line": 3245, + "line": 3253, "column": 26 } } @@ -445713,15 +448975,15 @@ "updateContext": null }, "value": "case", - "start": 130011, - "end": 130015, + "start": 130525, + "end": 130529, "loc": { "start": { - "line": 3246, + "line": 3254, "column": 16 }, "end": { - "line": 3246, + "line": 3254, "column": 20 } } @@ -445740,15 +449002,15 @@ "updateContext": null }, "value": "lines", - "start": 130016, - "end": 130023, + "start": 130530, + "end": 130537, "loc": { "start": { - "line": 3246, + "line": 3254, "column": 21 }, "end": { - "line": 3246, + "line": 3254, "column": 28 } } @@ -445766,15 +449028,15 @@ "binop": null, "updateContext": null }, - "start": 130023, - "end": 130024, + "start": 130537, + "end": 130538, "loc": { "start": { - "line": 3246, + "line": 3254, "column": 28 }, "end": { - "line": 3246, + "line": 3254, "column": 29 } } @@ -445782,15 +449044,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOBatchingLinesLayer`);", - "start": 130045, - "end": 130120, + "start": 130559, + "end": 130634, "loc": { "start": { - "line": 3247, + "line": 3255, "column": 20 }, "end": { - "line": 3247, + "line": 3255, "column": 95 } } @@ -445808,15 +449070,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 130141, - "end": 130157, + "start": 130655, + "end": 130671, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 20 }, "end": { - "line": 3248, + "line": 3256, "column": 36 } } @@ -445835,15 +449097,15 @@ "updateContext": null }, "value": "=", - "start": 130158, - "end": 130159, + "start": 130672, + "end": 130673, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 37 }, "end": { - "line": 3248, + "line": 3256, "column": 38 } } @@ -445863,15 +449125,15 @@ "updateContext": null }, "value": "new", - "start": 130160, - "end": 130163, + "start": 130674, + "end": 130677, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 39 }, "end": { - "line": 3248, + "line": 3256, "column": 42 } } @@ -445889,15 +449151,15 @@ "binop": null }, "value": "VBOBatchingLinesLayer", - "start": 130164, - "end": 130185, + "start": 130678, + "end": 130699, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 43 }, "end": { - "line": 3248, + "line": 3256, "column": 64 } } @@ -445914,15 +449176,15 @@ "postfix": false, "binop": null }, - "start": 130185, - "end": 130186, + "start": 130699, + "end": 130700, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 64 }, "end": { - "line": 3248, + "line": 3256, "column": 65 } } @@ -445939,15 +449201,15 @@ "postfix": false, "binop": null }, - "start": 130186, - "end": 130187, + "start": 130700, + "end": 130701, "loc": { "start": { - "line": 3248, + "line": 3256, "column": 65 }, "end": { - "line": 3248, + "line": 3256, "column": 66 } } @@ -445965,15 +449227,15 @@ "binop": null }, "value": "model", - "start": 130212, - "end": 130217, + "start": 130726, + "end": 130731, "loc": { "start": { - "line": 3249, + "line": 3257, "column": 24 }, "end": { - "line": 3249, + "line": 3257, "column": 29 } } @@ -445991,15 +449253,15 @@ "binop": null, "updateContext": null }, - "start": 130217, - "end": 130218, + "start": 130731, + "end": 130732, "loc": { "start": { - "line": 3249, + "line": 3257, "column": 29 }, "end": { - "line": 3249, + "line": 3257, "column": 30 } } @@ -446017,15 +449279,15 @@ "binop": null }, "value": "layerIndex", - "start": 130243, - "end": 130253, + "start": 130757, + "end": 130767, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 24 }, "end": { - "line": 3250, + "line": 3258, "column": 34 } } @@ -446043,15 +449305,15 @@ "binop": null, "updateContext": null }, - "start": 130253, - "end": 130254, + "start": 130767, + "end": 130768, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 34 }, "end": { - "line": 3250, + "line": 3258, "column": 35 } } @@ -446070,15 +449332,15 @@ "updateContext": null }, "value": 0, - "start": 130255, - "end": 130256, + "start": 130769, + "end": 130770, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 36 }, "end": { - "line": 3250, + "line": 3258, "column": 37 } } @@ -446096,15 +449358,15 @@ "binop": null, "updateContext": null }, - "start": 130256, - "end": 130257, + "start": 130770, + "end": 130771, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 37 }, "end": { - "line": 3250, + "line": 3258, "column": 38 } } @@ -446112,15 +449374,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 130258, - "end": 130287, + "start": 130772, + "end": 130801, "loc": { "start": { - "line": 3250, + "line": 3258, "column": 39 }, "end": { - "line": 3250, + "line": 3258, "column": 68 } } @@ -446138,15 +449400,15 @@ "binop": null }, "value": "scratchMemory", - "start": 130312, - "end": 130325, + "start": 130826, + "end": 130839, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 24 }, "end": { - "line": 3251, + "line": 3259, "column": 37 } } @@ -446164,15 +449426,15 @@ "binop": null, "updateContext": null }, - "start": 130325, - "end": 130326, + "start": 130839, + "end": 130840, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 37 }, "end": { - "line": 3251, + "line": 3259, "column": 38 } } @@ -446192,15 +449454,15 @@ "updateContext": null }, "value": "this", - "start": 130327, - "end": 130331, + "start": 130841, + "end": 130845, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 39 }, "end": { - "line": 3251, + "line": 3259, "column": 43 } } @@ -446218,15 +449480,15 @@ "binop": null, "updateContext": null }, - "start": 130331, - "end": 130332, + "start": 130845, + "end": 130846, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 43 }, "end": { - "line": 3251, + "line": 3259, "column": 44 } } @@ -446244,15 +449506,15 @@ "binop": null }, "value": "_vboBatchingLayerScratchMemory", - "start": 130332, - "end": 130362, + "start": 130846, + "end": 130876, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 44 }, "end": { - "line": 3251, + "line": 3259, "column": 74 } } @@ -446270,15 +449532,15 @@ "binop": null, "updateContext": null }, - "start": 130362, - "end": 130363, + "start": 130876, + "end": 130877, "loc": { "start": { - "line": 3251, + "line": 3259, "column": 74 }, "end": { - "line": 3251, + "line": 3259, "column": 75 } } @@ -446296,15 +449558,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 130388, - "end": 130409, + "start": 130902, + "end": 130923, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 24 }, "end": { - "line": 3252, + "line": 3260, "column": 45 } } @@ -446322,15 +449584,15 @@ "binop": null, "updateContext": null }, - "start": 130409, - "end": 130410, + "start": 130923, + "end": 130924, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 45 }, "end": { - "line": 3252, + "line": 3260, "column": 46 } } @@ -446348,15 +449610,15 @@ "binop": null }, "value": "cfg", - "start": 130411, - "end": 130414, + "start": 130925, + "end": 130928, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 47 }, "end": { - "line": 3252, + "line": 3260, "column": 50 } } @@ -446374,15 +449636,15 @@ "binop": null, "updateContext": null }, - "start": 130414, - "end": 130415, + "start": 130928, + "end": 130929, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 50 }, "end": { - "line": 3252, + "line": 3260, "column": 51 } } @@ -446400,15 +449662,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 130415, - "end": 130436, + "start": 130929, + "end": 130950, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 51 }, "end": { - "line": 3252, + "line": 3260, "column": 72 } } @@ -446426,15 +449688,15 @@ "binop": null, "updateContext": null }, - "start": 130436, - "end": 130437, + "start": 130950, + "end": 130951, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 72 }, "end": { - "line": 3252, + "line": 3260, "column": 73 } } @@ -446442,15 +449704,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 130439, - "end": 130458, + "start": 130953, + "end": 130972, "loc": { "start": { - "line": 3252, + "line": 3260, "column": 75 }, "end": { - "line": 3252, + "line": 3260, "column": 94 } } @@ -446468,15 +449730,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 130483, - "end": 130497, + "start": 130997, + "end": 131011, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 24 }, "end": { - "line": 3253, + "line": 3261, "column": 38 } } @@ -446494,15 +449756,15 @@ "binop": null, "updateContext": null }, - "start": 130497, - "end": 130498, + "start": 131011, + "end": 131012, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 38 }, "end": { - "line": 3253, + "line": 3261, "column": 39 } } @@ -446520,15 +449782,15 @@ "binop": null }, "value": "cfg", - "start": 130499, - "end": 130502, + "start": 131013, + "end": 131016, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 40 }, "end": { - "line": 3253, + "line": 3261, "column": 43 } } @@ -446546,15 +449808,15 @@ "binop": null, "updateContext": null }, - "start": 130502, - "end": 130503, + "start": 131016, + "end": 131017, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 43 }, "end": { - "line": 3253, + "line": 3261, "column": 44 } } @@ -446572,15 +449834,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 130503, - "end": 130517, + "start": 131017, + "end": 131031, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 44 }, "end": { - "line": 3253, + "line": 3261, "column": 58 } } @@ -446598,15 +449860,15 @@ "binop": null, "updateContext": null }, - "start": 130517, - "end": 130518, + "start": 131031, + "end": 131032, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 58 }, "end": { - "line": 3253, + "line": 3261, "column": 59 } } @@ -446614,15 +449876,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 130519, - "end": 130538, + "start": 131033, + "end": 131052, "loc": { "start": { - "line": 3253, + "line": 3261, "column": 60 }, "end": { - "line": 3253, + "line": 3261, "column": 79 } } @@ -446640,15 +449902,15 @@ "binop": null }, "value": "origin", - "start": 130563, - "end": 130569, + "start": 131077, + "end": 131083, "loc": { "start": { - "line": 3254, + "line": 3262, "column": 24 }, "end": { - "line": 3254, + "line": 3262, "column": 30 } } @@ -446666,15 +449928,15 @@ "binop": null, "updateContext": null }, - "start": 130569, - "end": 130570, + "start": 131083, + "end": 131084, "loc": { "start": { - "line": 3254, + "line": 3262, "column": 30 }, "end": { - "line": 3254, + "line": 3262, "column": 31 } } @@ -446692,15 +449954,15 @@ "binop": null }, "value": "maxGeometryBatchSize", - "start": 130595, - "end": 130615, + "start": 131109, + "end": 131129, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 24 }, "end": { - "line": 3255, + "line": 3263, "column": 44 } } @@ -446718,15 +449980,15 @@ "binop": null, "updateContext": null }, - "start": 130615, - "end": 130616, + "start": 131129, + "end": 131130, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 44 }, "end": { - "line": 3255, + "line": 3263, "column": 45 } } @@ -446746,15 +450008,15 @@ "updateContext": null }, "value": "this", - "start": 130617, - "end": 130621, + "start": 131131, + "end": 131135, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 46 }, "end": { - "line": 3255, + "line": 3263, "column": 50 } } @@ -446772,15 +450034,15 @@ "binop": null, "updateContext": null }, - "start": 130621, - "end": 130622, + "start": 131135, + "end": 131136, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 50 }, "end": { - "line": 3255, + "line": 3263, "column": 51 } } @@ -446798,15 +450060,15 @@ "binop": null }, "value": "_maxGeometryBatchSize", - "start": 130622, - "end": 130643, + "start": 131136, + "end": 131157, "loc": { "start": { - "line": 3255, + "line": 3263, "column": 51 }, "end": { - "line": 3255, + "line": 3263, "column": 72 } } @@ -446823,15 +450085,15 @@ "postfix": false, "binop": null }, - "start": 130664, - "end": 130665, + "start": 131178, + "end": 131179, "loc": { "start": { - "line": 3256, + "line": 3264, "column": 20 }, "end": { - "line": 3256, + "line": 3264, "column": 21 } } @@ -446848,15 +450110,15 @@ "postfix": false, "binop": null }, - "start": 130665, - "end": 130666, + "start": 131179, + "end": 131180, "loc": { "start": { - "line": 3256, + "line": 3264, "column": 21 }, "end": { - "line": 3256, + "line": 3264, "column": 22 } } @@ -446874,15 +450136,15 @@ "binop": null, "updateContext": null }, - "start": 130666, - "end": 130667, + "start": 131180, + "end": 131181, "loc": { "start": { - "line": 3256, + "line": 3264, "column": 22 }, "end": { - "line": 3256, + "line": 3264, "column": 23 } } @@ -446902,15 +450164,15 @@ "updateContext": null }, "value": "break", - "start": 130688, - "end": 130693, + "start": 131202, + "end": 131207, "loc": { "start": { - "line": 3257, + "line": 3265, "column": 20 }, "end": { - "line": 3257, + "line": 3265, "column": 25 } } @@ -446928,15 +450190,15 @@ "binop": null, "updateContext": null }, - "start": 130693, - "end": 130694, + "start": 131207, + "end": 131208, "loc": { "start": { - "line": 3257, + "line": 3265, "column": 25 }, "end": { - "line": 3257, + "line": 3265, "column": 26 } } @@ -446956,15 +450218,15 @@ "updateContext": null }, "value": "case", - "start": 130711, - "end": 130715, + "start": 131225, + "end": 131229, "loc": { "start": { - "line": 3258, + "line": 3266, "column": 16 }, "end": { - "line": 3258, + "line": 3266, "column": 20 } } @@ -446983,15 +450245,15 @@ "updateContext": null }, "value": "points", - "start": 130716, - "end": 130724, + "start": 131230, + "end": 131238, "loc": { "start": { - "line": 3258, + "line": 3266, "column": 21 }, "end": { - "line": 3258, + "line": 3266, "column": 29 } } @@ -447009,15 +450271,15 @@ "binop": null, "updateContext": null }, - "start": 130724, - "end": 130725, + "start": 131238, + "end": 131239, "loc": { "start": { - "line": 3258, + "line": 3266, "column": 29 }, "end": { - "line": 3258, + "line": 3266, "column": 30 } } @@ -447025,15 +450287,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOBatchingPointsLayer`);", - "start": 130746, - "end": 130822, + "start": 131260, + "end": 131336, "loc": { "start": { - "line": 3259, + "line": 3267, "column": 20 }, "end": { - "line": 3259, + "line": 3267, "column": 96 } } @@ -447051,15 +450313,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 130843, - "end": 130859, + "start": 131357, + "end": 131373, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 20 }, "end": { - "line": 3260, + "line": 3268, "column": 36 } } @@ -447078,15 +450340,15 @@ "updateContext": null }, "value": "=", - "start": 130860, - "end": 130861, + "start": 131374, + "end": 131375, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 37 }, "end": { - "line": 3260, + "line": 3268, "column": 38 } } @@ -447106,15 +450368,15 @@ "updateContext": null }, "value": "new", - "start": 130862, - "end": 130865, + "start": 131376, + "end": 131379, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 39 }, "end": { - "line": 3260, + "line": 3268, "column": 42 } } @@ -447132,15 +450394,15 @@ "binop": null }, "value": "VBOBatchingPointsLayer", - "start": 130866, - "end": 130888, + "start": 131380, + "end": 131402, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 43 }, "end": { - "line": 3260, + "line": 3268, "column": 65 } } @@ -447157,15 +450419,15 @@ "postfix": false, "binop": null }, - "start": 130888, - "end": 130889, + "start": 131402, + "end": 131403, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 65 }, "end": { - "line": 3260, + "line": 3268, "column": 66 } } @@ -447182,15 +450444,15 @@ "postfix": false, "binop": null }, - "start": 130889, - "end": 130890, + "start": 131403, + "end": 131404, "loc": { "start": { - "line": 3260, + "line": 3268, "column": 66 }, "end": { - "line": 3260, + "line": 3268, "column": 67 } } @@ -447208,15 +450470,15 @@ "binop": null }, "value": "model", - "start": 130915, - "end": 130920, + "start": 131429, + "end": 131434, "loc": { "start": { - "line": 3261, + "line": 3269, "column": 24 }, "end": { - "line": 3261, + "line": 3269, "column": 29 } } @@ -447234,15 +450496,15 @@ "binop": null, "updateContext": null }, - "start": 130920, - "end": 130921, + "start": 131434, + "end": 131435, "loc": { "start": { - "line": 3261, + "line": 3269, "column": 29 }, "end": { - "line": 3261, + "line": 3269, "column": 30 } } @@ -447260,15 +450522,15 @@ "binop": null }, "value": "layerIndex", - "start": 130946, - "end": 130956, + "start": 131460, + "end": 131470, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 24 }, "end": { - "line": 3262, + "line": 3270, "column": 34 } } @@ -447286,15 +450548,15 @@ "binop": null, "updateContext": null }, - "start": 130956, - "end": 130957, + "start": 131470, + "end": 131471, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 34 }, "end": { - "line": 3262, + "line": 3270, "column": 35 } } @@ -447313,15 +450575,15 @@ "updateContext": null }, "value": 0, - "start": 130958, - "end": 130959, + "start": 131472, + "end": 131473, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 36 }, "end": { - "line": 3262, + "line": 3270, "column": 37 } } @@ -447339,15 +450601,15 @@ "binop": null, "updateContext": null }, - "start": 130959, - "end": 130960, + "start": 131473, + "end": 131474, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 37 }, "end": { - "line": 3262, + "line": 3270, "column": 38 } } @@ -447355,15 +450617,15 @@ { "type": "CommentLine", "value": " This is set in #finalize()", - "start": 130961, - "end": 130990, + "start": 131475, + "end": 131504, "loc": { "start": { - "line": 3262, + "line": 3270, "column": 39 }, "end": { - "line": 3262, + "line": 3270, "column": 68 } } @@ -447381,15 +450643,15 @@ "binop": null }, "value": "scratchMemory", - "start": 131015, - "end": 131028, + "start": 131529, + "end": 131542, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 24 }, "end": { - "line": 3263, + "line": 3271, "column": 37 } } @@ -447407,15 +450669,15 @@ "binop": null, "updateContext": null }, - "start": 131028, - "end": 131029, + "start": 131542, + "end": 131543, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 37 }, "end": { - "line": 3263, + "line": 3271, "column": 38 } } @@ -447435,15 +450697,15 @@ "updateContext": null }, "value": "this", - "start": 131030, - "end": 131034, + "start": 131544, + "end": 131548, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 39 }, "end": { - "line": 3263, + "line": 3271, "column": 43 } } @@ -447461,15 +450723,15 @@ "binop": null, "updateContext": null }, - "start": 131034, - "end": 131035, + "start": 131548, + "end": 131549, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 43 }, "end": { - "line": 3263, + "line": 3271, "column": 44 } } @@ -447487,15 +450749,15 @@ "binop": null }, "value": "_vboBatchingLayerScratchMemory", - "start": 131035, - "end": 131065, + "start": 131549, + "end": 131579, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 44 }, "end": { - "line": 3263, + "line": 3271, "column": 74 } } @@ -447513,15 +450775,15 @@ "binop": null, "updateContext": null }, - "start": 131065, - "end": 131066, + "start": 131579, + "end": 131580, "loc": { "start": { - "line": 3263, + "line": 3271, "column": 74 }, "end": { - "line": 3263, + "line": 3271, "column": 75 } } @@ -447539,15 +450801,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 131091, - "end": 131112, + "start": 131605, + "end": 131626, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 24 }, "end": { - "line": 3264, + "line": 3272, "column": 45 } } @@ -447565,15 +450827,15 @@ "binop": null, "updateContext": null }, - "start": 131112, - "end": 131113, + "start": 131626, + "end": 131627, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 45 }, "end": { - "line": 3264, + "line": 3272, "column": 46 } } @@ -447591,15 +450853,15 @@ "binop": null }, "value": "cfg", - "start": 131114, - "end": 131117, + "start": 131628, + "end": 131631, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 47 }, "end": { - "line": 3264, + "line": 3272, "column": 50 } } @@ -447617,15 +450879,15 @@ "binop": null, "updateContext": null }, - "start": 131117, - "end": 131118, + "start": 131631, + "end": 131632, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 50 }, "end": { - "line": 3264, + "line": 3272, "column": 51 } } @@ -447643,15 +450905,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 131118, - "end": 131139, + "start": 131632, + "end": 131653, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 51 }, "end": { - "line": 3264, + "line": 3272, "column": 72 } } @@ -447669,15 +450931,15 @@ "binop": null, "updateContext": null }, - "start": 131139, - "end": 131140, + "start": 131653, + "end": 131654, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 72 }, "end": { - "line": 3264, + "line": 3272, "column": 73 } } @@ -447685,15 +450947,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 131142, - "end": 131161, + "start": 131656, + "end": 131675, "loc": { "start": { - "line": 3264, + "line": 3272, "column": 75 }, "end": { - "line": 3264, + "line": 3272, "column": 94 } } @@ -447711,15 +450973,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 131186, - "end": 131200, + "start": 131700, + "end": 131714, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 24 }, "end": { - "line": 3265, + "line": 3273, "column": 38 } } @@ -447737,15 +450999,15 @@ "binop": null, "updateContext": null }, - "start": 131200, - "end": 131201, + "start": 131714, + "end": 131715, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 38 }, "end": { - "line": 3265, + "line": 3273, "column": 39 } } @@ -447763,15 +451025,15 @@ "binop": null }, "value": "cfg", - "start": 131202, - "end": 131205, + "start": 131716, + "end": 131719, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 40 }, "end": { - "line": 3265, + "line": 3273, "column": 43 } } @@ -447789,15 +451051,15 @@ "binop": null, "updateContext": null }, - "start": 131205, - "end": 131206, + "start": 131719, + "end": 131720, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 43 }, "end": { - "line": 3265, + "line": 3273, "column": 44 } } @@ -447815,15 +451077,15 @@ "binop": null }, "value": "uvDecodeMatrix", - "start": 131206, - "end": 131220, + "start": 131720, + "end": 131734, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 44 }, "end": { - "line": 3265, + "line": 3273, "column": 58 } } @@ -447841,15 +451103,15 @@ "binop": null, "updateContext": null }, - "start": 131220, - "end": 131221, + "start": 131734, + "end": 131735, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 58 }, "end": { - "line": 3265, + "line": 3273, "column": 59 } } @@ -447857,15 +451119,15 @@ { "type": "CommentLine", "value": " Can be undefined", - "start": 131222, - "end": 131241, + "start": 131736, + "end": 131755, "loc": { "start": { - "line": 3265, + "line": 3273, "column": 60 }, "end": { - "line": 3265, + "line": 3273, "column": 79 } } @@ -447883,15 +451145,15 @@ "binop": null }, "value": "origin", - "start": 131266, - "end": 131272, + "start": 131780, + "end": 131786, "loc": { "start": { - "line": 3266, + "line": 3274, "column": 24 }, "end": { - "line": 3266, + "line": 3274, "column": 30 } } @@ -447909,15 +451171,15 @@ "binop": null, "updateContext": null }, - "start": 131272, - "end": 131273, + "start": 131786, + "end": 131787, "loc": { "start": { - "line": 3266, + "line": 3274, "column": 30 }, "end": { - "line": 3266, + "line": 3274, "column": 31 } } @@ -447935,15 +451197,15 @@ "binop": null }, "value": "maxGeometryBatchSize", - "start": 131298, - "end": 131318, + "start": 131812, + "end": 131832, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 24 }, "end": { - "line": 3267, + "line": 3275, "column": 44 } } @@ -447961,15 +451223,15 @@ "binop": null, "updateContext": null }, - "start": 131318, - "end": 131319, + "start": 131832, + "end": 131833, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 44 }, "end": { - "line": 3267, + "line": 3275, "column": 45 } } @@ -447989,15 +451251,15 @@ "updateContext": null }, "value": "this", - "start": 131320, - "end": 131324, + "start": 131834, + "end": 131838, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 46 }, "end": { - "line": 3267, + "line": 3275, "column": 50 } } @@ -448015,15 +451277,15 @@ "binop": null, "updateContext": null }, - "start": 131324, - "end": 131325, + "start": 131838, + "end": 131839, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 50 }, "end": { - "line": 3267, + "line": 3275, "column": 51 } } @@ -448041,15 +451303,15 @@ "binop": null }, "value": "_maxGeometryBatchSize", - "start": 131325, - "end": 131346, + "start": 131839, + "end": 131860, "loc": { "start": { - "line": 3267, + "line": 3275, "column": 51 }, "end": { - "line": 3267, + "line": 3275, "column": 72 } } @@ -448066,15 +451328,15 @@ "postfix": false, "binop": null }, - "start": 131367, - "end": 131368, + "start": 131881, + "end": 131882, "loc": { "start": { - "line": 3268, + "line": 3276, "column": 20 }, "end": { - "line": 3268, + "line": 3276, "column": 21 } } @@ -448091,15 +451353,15 @@ "postfix": false, "binop": null }, - "start": 131368, - "end": 131369, + "start": 131882, + "end": 131883, "loc": { "start": { - "line": 3268, + "line": 3276, "column": 21 }, "end": { - "line": 3268, + "line": 3276, "column": 22 } } @@ -448117,15 +451379,15 @@ "binop": null, "updateContext": null }, - "start": 131369, - "end": 131370, + "start": 131883, + "end": 131884, "loc": { "start": { - "line": 3268, + "line": 3276, "column": 22 }, "end": { - "line": 3268, + "line": 3276, "column": 23 } } @@ -448145,15 +451407,15 @@ "updateContext": null }, "value": "break", - "start": 131391, - "end": 131396, + "start": 131905, + "end": 131910, "loc": { "start": { - "line": 3269, + "line": 3277, "column": 20 }, "end": { - "line": 3269, + "line": 3277, "column": 25 } } @@ -448171,15 +451433,15 @@ "binop": null, "updateContext": null }, - "start": 131396, - "end": 131397, + "start": 131910, + "end": 131911, "loc": { "start": { - "line": 3269, + "line": 3277, "column": 25 }, "end": { - "line": 3269, + "line": 3277, "column": 26 } } @@ -448196,15 +451458,15 @@ "postfix": false, "binop": null }, - "start": 131410, - "end": 131411, + "start": 131924, + "end": 131925, "loc": { "start": { - "line": 3270, + "line": 3278, "column": 12 }, "end": { - "line": 3270, + "line": 3278, "column": 13 } } @@ -448224,15 +451486,15 @@ "updateContext": null }, "value": "const", - "start": 131424, - "end": 131429, + "start": 131938, + "end": 131943, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 12 }, "end": { - "line": 3271, + "line": 3279, "column": 17 } } @@ -448250,15 +451512,15 @@ "binop": null }, "value": "lenPositions", - "start": 131430, - "end": 131442, + "start": 131944, + "end": 131956, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 18 }, "end": { - "line": 3271, + "line": 3279, "column": 30 } } @@ -448277,15 +451539,15 @@ "updateContext": null }, "value": "=", - "start": 131443, - "end": 131444, + "start": 131957, + "end": 131958, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 31 }, "end": { - "line": 3271, + "line": 3279, "column": 32 } } @@ -448303,15 +451565,15 @@ "binop": null }, "value": "cfg", - "start": 131445, - "end": 131448, + "start": 131959, + "end": 131962, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 33 }, "end": { - "line": 3271, + "line": 3279, "column": 36 } } @@ -448329,15 +451591,15 @@ "binop": null, "updateContext": null }, - "start": 131448, - "end": 131449, + "start": 131962, + "end": 131963, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 36 }, "end": { - "line": 3271, + "line": 3279, "column": 37 } } @@ -448355,15 +451617,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 131449, - "end": 131468, + "start": 131963, + "end": 131982, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 37 }, "end": { - "line": 3271, + "line": 3279, "column": 56 } } @@ -448381,15 +451643,15 @@ "binop": null, "updateContext": null }, - "start": 131469, - "end": 131470, + "start": 131983, + "end": 131984, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 57 }, "end": { - "line": 3271, + "line": 3279, "column": 58 } } @@ -448407,15 +451669,15 @@ "binop": null }, "value": "cfg", - "start": 131471, - "end": 131474, + "start": 131985, + "end": 131988, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 59 }, "end": { - "line": 3271, + "line": 3279, "column": 62 } } @@ -448433,15 +451695,15 @@ "binop": null, "updateContext": null }, - "start": 131474, - "end": 131475, + "start": 131988, + "end": 131989, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 62 }, "end": { - "line": 3271, + "line": 3279, "column": 63 } } @@ -448459,15 +451721,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 131475, - "end": 131494, + "start": 131989, + "end": 132008, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 63 }, "end": { - "line": 3271, + "line": 3279, "column": 82 } } @@ -448485,15 +451747,15 @@ "binop": null, "updateContext": null }, - "start": 131494, - "end": 131495, + "start": 132008, + "end": 132009, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 82 }, "end": { - "line": 3271, + "line": 3279, "column": 83 } } @@ -448511,15 +451773,15 @@ "binop": null }, "value": "length", - "start": 131495, - "end": 131501, + "start": 132009, + "end": 132015, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 83 }, "end": { - "line": 3271, + "line": 3279, "column": 89 } } @@ -448537,15 +451799,15 @@ "binop": null, "updateContext": null }, - "start": 131502, - "end": 131503, + "start": 132016, + "end": 132017, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 90 }, "end": { - "line": 3271, + "line": 3279, "column": 91 } } @@ -448563,15 +451825,15 @@ "binop": null }, "value": "cfg", - "start": 131504, - "end": 131507, + "start": 132018, + "end": 132021, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 92 }, "end": { - "line": 3271, + "line": 3279, "column": 95 } } @@ -448589,15 +451851,15 @@ "binop": null, "updateContext": null }, - "start": 131507, - "end": 131508, + "start": 132021, + "end": 132022, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 95 }, "end": { - "line": 3271, + "line": 3279, "column": 96 } } @@ -448615,15 +451877,15 @@ "binop": null }, "value": "positions", - "start": 131508, - "end": 131517, + "start": 132022, + "end": 132031, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 96 }, "end": { - "line": 3271, + "line": 3279, "column": 105 } } @@ -448641,15 +451903,15 @@ "binop": null, "updateContext": null }, - "start": 131517, - "end": 131518, + "start": 132031, + "end": 132032, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 105 }, "end": { - "line": 3271, + "line": 3279, "column": 106 } } @@ -448667,15 +451929,15 @@ "binop": null }, "value": "length", - "start": 131518, - "end": 131524, + "start": 132032, + "end": 132038, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 106 }, "end": { - "line": 3271, + "line": 3279, "column": 112 } } @@ -448693,15 +451955,15 @@ "binop": null, "updateContext": null }, - "start": 131524, - "end": 131525, + "start": 132038, + "end": 132039, "loc": { "start": { - "line": 3271, + "line": 3279, "column": 112 }, "end": { - "line": 3271, + "line": 3279, "column": 113 } } @@ -448721,15 +451983,15 @@ "updateContext": null }, "value": "const", - "start": 131538, - "end": 131543, + "start": 132052, + "end": 132057, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 12 }, "end": { - "line": 3272, + "line": 3280, "column": 17 } } @@ -448747,15 +452009,15 @@ "binop": null }, "value": "canCreatePortion", - "start": 131544, - "end": 131560, + "start": 132058, + "end": 132074, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 18 }, "end": { - "line": 3272, + "line": 3280, "column": 34 } } @@ -448774,15 +452036,15 @@ "updateContext": null }, "value": "=", - "start": 131561, - "end": 131562, + "start": 132075, + "end": 132076, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 35 }, "end": { - "line": 3272, + "line": 3280, "column": 36 } } @@ -448799,15 +452061,15 @@ "postfix": false, "binop": null }, - "start": 131563, - "end": 131564, + "start": 132077, + "end": 132078, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 37 }, "end": { - "line": 3272, + "line": 3280, "column": 38 } } @@ -448825,15 +452087,15 @@ "binop": null }, "value": "cfg", - "start": 131564, - "end": 131567, + "start": 132078, + "end": 132081, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 38 }, "end": { - "line": 3272, + "line": 3280, "column": 41 } } @@ -448851,15 +452113,15 @@ "binop": null, "updateContext": null }, - "start": 131567, - "end": 131568, + "start": 132081, + "end": 132082, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 41 }, "end": { - "line": 3272, + "line": 3280, "column": 42 } } @@ -448877,15 +452139,15 @@ "binop": null }, "value": "primitive", - "start": 131568, - "end": 131577, + "start": 132082, + "end": 132091, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 42 }, "end": { - "line": 3272, + "line": 3280, "column": 51 } } @@ -448904,15 +452166,15 @@ "updateContext": null }, "value": "===", - "start": 131578, - "end": 131581, + "start": 132092, + "end": 132095, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 52 }, "end": { - "line": 3272, + "line": 3280, "column": 55 } } @@ -448931,15 +452193,15 @@ "updateContext": null }, "value": "points", - "start": 131582, - "end": 131590, + "start": 132096, + "end": 132104, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 56 }, "end": { - "line": 3272, + "line": 3280, "column": 64 } } @@ -448956,15 +452218,15 @@ "postfix": false, "binop": null }, - "start": 131590, - "end": 131591, + "start": 132104, + "end": 132105, "loc": { "start": { - "line": 3272, + "line": 3280, "column": 64 }, "end": { - "line": 3272, + "line": 3280, "column": 65 } } @@ -448982,15 +452244,15 @@ "binop": null, "updateContext": null }, - "start": 131608, - "end": 131609, + "start": 132122, + "end": 132123, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 16 }, "end": { - "line": 3273, + "line": 3281, "column": 17 } } @@ -449008,15 +452270,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 131610, - "end": 131626, + "start": 132124, + "end": 132140, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 18 }, "end": { - "line": 3273, + "line": 3281, "column": 34 } } @@ -449034,15 +452296,15 @@ "binop": null, "updateContext": null }, - "start": 131626, - "end": 131627, + "start": 132140, + "end": 132141, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 34 }, "end": { - "line": 3273, + "line": 3281, "column": 35 } } @@ -449060,15 +452322,15 @@ "binop": null }, "value": "canCreatePortion", - "start": 131627, - "end": 131643, + "start": 132141, + "end": 132157, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 35 }, "end": { - "line": 3273, + "line": 3281, "column": 51 } } @@ -449085,15 +452347,15 @@ "postfix": false, "binop": null }, - "start": 131643, - "end": 131644, + "start": 132157, + "end": 132158, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 51 }, "end": { - "line": 3273, + "line": 3281, "column": 52 } } @@ -449111,15 +452373,15 @@ "binop": null }, "value": "lenPositions", - "start": 131644, - "end": 131656, + "start": 132158, + "end": 132170, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 52 }, "end": { - "line": 3273, + "line": 3281, "column": 64 } } @@ -449136,15 +452398,15 @@ "postfix": false, "binop": null }, - "start": 131656, - "end": 131657, + "start": 132170, + "end": 132171, "loc": { "start": { - "line": 3273, + "line": 3281, "column": 64 }, "end": { - "line": 3273, + "line": 3281, "column": 65 } } @@ -449162,15 +452424,15 @@ "binop": null, "updateContext": null }, - "start": 131674, - "end": 131675, + "start": 132188, + "end": 132189, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 16 }, "end": { - "line": 3274, + "line": 3282, "column": 17 } } @@ -449188,15 +452450,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 131676, - "end": 131692, + "start": 132190, + "end": 132206, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 18 }, "end": { - "line": 3274, + "line": 3282, "column": 34 } } @@ -449214,15 +452476,15 @@ "binop": null, "updateContext": null }, - "start": 131692, - "end": 131693, + "start": 132206, + "end": 132207, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 34 }, "end": { - "line": 3274, + "line": 3282, "column": 35 } } @@ -449240,15 +452502,15 @@ "binop": null }, "value": "canCreatePortion", - "start": 131693, - "end": 131709, + "start": 132207, + "end": 132223, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 35 }, "end": { - "line": 3274, + "line": 3282, "column": 51 } } @@ -449265,15 +452527,15 @@ "postfix": false, "binop": null }, - "start": 131709, - "end": 131710, + "start": 132223, + "end": 132224, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 51 }, "end": { - "line": 3274, + "line": 3282, "column": 52 } } @@ -449291,15 +452553,15 @@ "binop": null }, "value": "lenPositions", - "start": 131710, - "end": 131722, + "start": 132224, + "end": 132236, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 52 }, "end": { - "line": 3274, + "line": 3282, "column": 64 } } @@ -449317,15 +452579,15 @@ "binop": null, "updateContext": null }, - "start": 131722, - "end": 131723, + "start": 132236, + "end": 132237, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 64 }, "end": { - "line": 3274, + "line": 3282, "column": 65 } } @@ -449343,15 +452605,15 @@ "binop": null }, "value": "cfg", - "start": 131724, - "end": 131727, + "start": 132238, + "end": 132241, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 66 }, "end": { - "line": 3274, + "line": 3282, "column": 69 } } @@ -449369,15 +452631,15 @@ "binop": null, "updateContext": null }, - "start": 131727, - "end": 131728, + "start": 132241, + "end": 132242, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 69 }, "end": { - "line": 3274, + "line": 3282, "column": 70 } } @@ -449395,15 +452657,15 @@ "binop": null }, "value": "indices", - "start": 131728, - "end": 131735, + "start": 132242, + "end": 132249, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 70 }, "end": { - "line": 3274, + "line": 3282, "column": 77 } } @@ -449421,15 +452683,15 @@ "binop": null, "updateContext": null }, - "start": 131735, - "end": 131736, + "start": 132249, + "end": 132250, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 77 }, "end": { - "line": 3274, + "line": 3282, "column": 78 } } @@ -449447,15 +452709,15 @@ "binop": null }, "value": "length", - "start": 131736, - "end": 131742, + "start": 132250, + "end": 132256, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 78 }, "end": { - "line": 3274, + "line": 3282, "column": 84 } } @@ -449472,15 +452734,15 @@ "postfix": false, "binop": null }, - "start": 131742, - "end": 131743, + "start": 132256, + "end": 132257, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 84 }, "end": { - "line": 3274, + "line": 3282, "column": 85 } } @@ -449498,15 +452760,15 @@ "binop": null, "updateContext": null }, - "start": 131743, - "end": 131744, + "start": 132257, + "end": 132258, "loc": { "start": { - "line": 3274, + "line": 3282, "column": 85 }, "end": { - "line": 3274, + "line": 3282, "column": 86 } } @@ -449526,15 +452788,15 @@ "updateContext": null }, "value": "if", - "start": 131757, - "end": 131759, + "start": 132271, + "end": 132273, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 12 }, "end": { - "line": 3275, + "line": 3283, "column": 14 } } @@ -449551,15 +452813,15 @@ "postfix": false, "binop": null }, - "start": 131760, - "end": 131761, + "start": 132274, + "end": 132275, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 15 }, "end": { - "line": 3275, + "line": 3283, "column": 16 } } @@ -449578,15 +452840,15 @@ "updateContext": null }, "value": "!", - "start": 131761, - "end": 131762, + "start": 132275, + "end": 132276, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 16 }, "end": { - "line": 3275, + "line": 3283, "column": 17 } } @@ -449604,15 +452866,15 @@ "binop": null }, "value": "canCreatePortion", - "start": 131762, - "end": 131778, + "start": 132276, + "end": 132292, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 17 }, "end": { - "line": 3275, + "line": 3283, "column": 33 } } @@ -449629,15 +452891,15 @@ "postfix": false, "binop": null }, - "start": 131778, - "end": 131779, + "start": 132292, + "end": 132293, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 33 }, "end": { - "line": 3275, + "line": 3283, "column": 34 } } @@ -449654,15 +452916,15 @@ "postfix": false, "binop": null }, - "start": 131780, - "end": 131781, + "start": 132294, + "end": 132295, "loc": { "start": { - "line": 3275, + "line": 3283, "column": 35 }, "end": { - "line": 3275, + "line": 3283, "column": 36 } } @@ -449680,15 +452942,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 131798, - "end": 131814, + "start": 132312, + "end": 132328, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 16 }, "end": { - "line": 3276, + "line": 3284, "column": 32 } } @@ -449706,15 +452968,15 @@ "binop": null, "updateContext": null }, - "start": 131814, - "end": 131815, + "start": 132328, + "end": 132329, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 32 }, "end": { - "line": 3276, + "line": 3284, "column": 33 } } @@ -449732,15 +452994,15 @@ "binop": null }, "value": "finalize", - "start": 131815, - "end": 131823, + "start": 132329, + "end": 132337, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 33 }, "end": { - "line": 3276, + "line": 3284, "column": 41 } } @@ -449757,15 +453019,15 @@ "postfix": false, "binop": null }, - "start": 131823, - "end": 131824, + "start": 132337, + "end": 132338, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 41 }, "end": { - "line": 3276, + "line": 3284, "column": 42 } } @@ -449782,15 +453044,15 @@ "postfix": false, "binop": null }, - "start": 131824, - "end": 131825, + "start": 132338, + "end": 132339, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 42 }, "end": { - "line": 3276, + "line": 3284, "column": 43 } } @@ -449808,15 +453070,15 @@ "binop": null, "updateContext": null }, - "start": 131825, - "end": 131826, + "start": 132339, + "end": 132340, "loc": { "start": { - "line": 3276, + "line": 3284, "column": 43 }, "end": { - "line": 3276, + "line": 3284, "column": 44 } } @@ -449836,15 +453098,15 @@ "updateContext": null }, "value": "delete", - "start": 131843, - "end": 131849, + "start": 132357, + "end": 132363, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 16 }, "end": { - "line": 3277, + "line": 3285, "column": 22 } } @@ -449864,15 +453126,15 @@ "updateContext": null }, "value": "this", - "start": 131850, - "end": 131854, + "start": 132364, + "end": 132368, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 23 }, "end": { - "line": 3277, + "line": 3285, "column": 27 } } @@ -449890,15 +453152,15 @@ "binop": null, "updateContext": null }, - "start": 131854, - "end": 131855, + "start": 132368, + "end": 132369, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 27 }, "end": { - "line": 3277, + "line": 3285, "column": 28 } } @@ -449916,15 +453178,15 @@ "binop": null }, "value": "_vboBatchingLayers", - "start": 131855, - "end": 131873, + "start": 132369, + "end": 132387, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 28 }, "end": { - "line": 3277, + "line": 3285, "column": 46 } } @@ -449942,15 +453204,15 @@ "binop": null, "updateContext": null }, - "start": 131873, - "end": 131874, + "start": 132387, + "end": 132388, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 46 }, "end": { - "line": 3277, + "line": 3285, "column": 47 } } @@ -449968,15 +453230,15 @@ "binop": null }, "value": "layerId", - "start": 131874, - "end": 131881, + "start": 132388, + "end": 132395, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 47 }, "end": { - "line": 3277, + "line": 3285, "column": 54 } } @@ -449994,15 +453256,15 @@ "binop": null, "updateContext": null }, - "start": 131881, - "end": 131882, + "start": 132395, + "end": 132396, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 54 }, "end": { - "line": 3277, + "line": 3285, "column": 55 } } @@ -450020,15 +453282,15 @@ "binop": null, "updateContext": null }, - "start": 131882, - "end": 131883, + "start": 132396, + "end": 132397, "loc": { "start": { - "line": 3277, + "line": 3285, "column": 55 }, "end": { - "line": 3277, + "line": 3285, "column": 56 } } @@ -450046,15 +453308,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 131900, - "end": 131916, + "start": 132414, + "end": 132430, "loc": { "start": { - "line": 3278, + "line": 3286, "column": 16 }, "end": { - "line": 3278, + "line": 3286, "column": 32 } } @@ -450073,15 +453335,15 @@ "updateContext": null }, "value": "=", - "start": 131917, - "end": 131918, + "start": 132431, + "end": 132432, "loc": { "start": { - "line": 3278, + "line": 3286, "column": 33 }, "end": { - "line": 3278, + "line": 3286, "column": 34 } } @@ -450101,15 +453363,15 @@ "updateContext": null }, "value": "null", - "start": 131919, - "end": 131923, + "start": 132433, + "end": 132437, "loc": { "start": { - "line": 3278, + "line": 3286, "column": 35 }, "end": { - "line": 3278, + "line": 3286, "column": 39 } } @@ -450127,15 +453389,15 @@ "binop": null, "updateContext": null }, - "start": 131923, - "end": 131924, + "start": 132437, + "end": 132438, "loc": { "start": { - "line": 3278, + "line": 3286, "column": 39 }, "end": { - "line": 3278, + "line": 3286, "column": 40 } } @@ -450152,15 +453414,15 @@ "postfix": false, "binop": null }, - "start": 131937, - "end": 131938, + "start": 132451, + "end": 132452, "loc": { "start": { - "line": 3279, + "line": 3287, "column": 12 }, "end": { - "line": 3279, + "line": 3287, "column": 13 } } @@ -450177,15 +453439,15 @@ "postfix": false, "binop": null }, - "start": 131947, - "end": 131948, + "start": 132461, + "end": 132462, "loc": { "start": { - "line": 3280, + "line": 3288, "column": 8 }, "end": { - "line": 3280, + "line": 3288, "column": 9 } } @@ -450205,15 +453467,15 @@ "updateContext": null }, "value": "this", - "start": 131957, - "end": 131961, + "start": 132471, + "end": 132475, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 8 }, "end": { - "line": 3281, + "line": 3289, "column": 12 } } @@ -450231,15 +453493,15 @@ "binop": null, "updateContext": null }, - "start": 131961, - "end": 131962, + "start": 132475, + "end": 132476, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 12 }, "end": { - "line": 3281, + "line": 3289, "column": 13 } } @@ -450257,15 +453519,15 @@ "binop": null }, "value": "_vboBatchingLayers", - "start": 131962, - "end": 131980, + "start": 132476, + "end": 132494, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 13 }, "end": { - "line": 3281, + "line": 3289, "column": 31 } } @@ -450283,15 +453545,15 @@ "binop": null, "updateContext": null }, - "start": 131980, - "end": 131981, + "start": 132494, + "end": 132495, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 31 }, "end": { - "line": 3281, + "line": 3289, "column": 32 } } @@ -450309,15 +453571,15 @@ "binop": null }, "value": "layerId", - "start": 131981, - "end": 131988, + "start": 132495, + "end": 132502, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 32 }, "end": { - "line": 3281, + "line": 3289, "column": 39 } } @@ -450335,15 +453597,15 @@ "binop": null, "updateContext": null }, - "start": 131988, - "end": 131989, + "start": 132502, + "end": 132503, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 39 }, "end": { - "line": 3281, + "line": 3289, "column": 40 } } @@ -450362,15 +453624,15 @@ "updateContext": null }, "value": "=", - "start": 131990, - "end": 131991, + "start": 132504, + "end": 132505, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 41 }, "end": { - "line": 3281, + "line": 3289, "column": 42 } } @@ -450388,15 +453650,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 131992, - "end": 132008, + "start": 132506, + "end": 132522, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 43 }, "end": { - "line": 3281, + "line": 3289, "column": 59 } } @@ -450414,15 +453676,15 @@ "binop": null, "updateContext": null }, - "start": 132008, - "end": 132009, + "start": 132522, + "end": 132523, "loc": { "start": { - "line": 3281, + "line": 3289, "column": 59 }, "end": { - "line": 3281, + "line": 3289, "column": 60 } } @@ -450442,15 +453704,15 @@ "updateContext": null }, "value": "this", - "start": 132018, - "end": 132022, + "start": 132532, + "end": 132536, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 8 }, "end": { - "line": 3282, + "line": 3290, "column": 12 } } @@ -450468,15 +453730,15 @@ "binop": null, "updateContext": null }, - "start": 132022, - "end": 132023, + "start": 132536, + "end": 132537, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 12 }, "end": { - "line": 3282, + "line": 3290, "column": 13 } } @@ -450494,15 +453756,15 @@ "binop": null }, "value": "layerList", - "start": 132023, - "end": 132032, + "start": 132537, + "end": 132546, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 13 }, "end": { - "line": 3282, + "line": 3290, "column": 22 } } @@ -450520,15 +453782,15 @@ "binop": null, "updateContext": null }, - "start": 132032, - "end": 132033, + "start": 132546, + "end": 132547, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 22 }, "end": { - "line": 3282, + "line": 3290, "column": 23 } } @@ -450546,15 +453808,15 @@ "binop": null }, "value": "push", - "start": 132033, - "end": 132037, + "start": 132547, + "end": 132551, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 23 }, "end": { - "line": 3282, + "line": 3290, "column": 27 } } @@ -450571,15 +453833,15 @@ "postfix": false, "binop": null }, - "start": 132037, - "end": 132038, + "start": 132551, + "end": 132552, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 27 }, "end": { - "line": 3282, + "line": 3290, "column": 28 } } @@ -450597,15 +453859,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 132038, - "end": 132054, + "start": 132552, + "end": 132568, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 28 }, "end": { - "line": 3282, + "line": 3290, "column": 44 } } @@ -450622,15 +453884,15 @@ "postfix": false, "binop": null }, - "start": 132054, - "end": 132055, + "start": 132568, + "end": 132569, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 44 }, "end": { - "line": 3282, + "line": 3290, "column": 45 } } @@ -450648,15 +453910,15 @@ "binop": null, "updateContext": null }, - "start": 132055, - "end": 132056, + "start": 132569, + "end": 132570, "loc": { "start": { - "line": 3282, + "line": 3290, "column": 45 }, "end": { - "line": 3282, + "line": 3290, "column": 46 } } @@ -450676,15 +453938,15 @@ "updateContext": null }, "value": "return", - "start": 132065, - "end": 132071, + "start": 132579, + "end": 132585, "loc": { "start": { - "line": 3283, + "line": 3291, "column": 8 }, "end": { - "line": 3283, + "line": 3291, "column": 14 } } @@ -450702,15 +453964,15 @@ "binop": null }, "value": "vboBatchingLayer", - "start": 132072, - "end": 132088, + "start": 132586, + "end": 132602, "loc": { "start": { - "line": 3283, + "line": 3291, "column": 15 }, "end": { - "line": 3283, + "line": 3291, "column": 31 } } @@ -450728,15 +453990,15 @@ "binop": null, "updateContext": null }, - "start": 132088, - "end": 132089, + "start": 132602, + "end": 132603, "loc": { "start": { - "line": 3283, + "line": 3291, "column": 31 }, "end": { - "line": 3283, + "line": 3291, "column": 32 } } @@ -450753,15 +454015,15 @@ "postfix": false, "binop": null }, - "start": 132094, - "end": 132095, + "start": 132608, + "end": 132609, "loc": { "start": { - "line": 3284, + "line": 3292, "column": 4 }, "end": { - "line": 3284, + "line": 3292, "column": 5 } } @@ -450779,15 +454041,15 @@ "binop": null }, "value": "_createHashStringFromMatrix", - "start": 132101, - "end": 132128, + "start": 132615, + "end": 132642, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 4 }, "end": { - "line": 3286, + "line": 3294, "column": 31 } } @@ -450804,15 +454066,15 @@ "postfix": false, "binop": null }, - "start": 132128, - "end": 132129, + "start": 132642, + "end": 132643, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 31 }, "end": { - "line": 3286, + "line": 3294, "column": 32 } } @@ -450830,15 +454092,15 @@ "binop": null }, "value": "matrix", - "start": 132129, - "end": 132135, + "start": 132643, + "end": 132649, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 32 }, "end": { - "line": 3286, + "line": 3294, "column": 38 } } @@ -450855,15 +454117,15 @@ "postfix": false, "binop": null }, - "start": 132135, - "end": 132136, + "start": 132649, + "end": 132650, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 38 }, "end": { - "line": 3286, + "line": 3294, "column": 39 } } @@ -450880,15 +454142,15 @@ "postfix": false, "binop": null }, - "start": 132137, - "end": 132138, + "start": 132651, + "end": 132652, "loc": { "start": { - "line": 3286, + "line": 3294, "column": 40 }, "end": { - "line": 3286, + "line": 3294, "column": 41 } } @@ -450908,15 +454170,15 @@ "updateContext": null }, "value": "const", - "start": 132147, - "end": 132152, + "start": 132661, + "end": 132666, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 8 }, "end": { - "line": 3287, + "line": 3295, "column": 13 } } @@ -450934,15 +454196,15 @@ "binop": null }, "value": "matrixString", - "start": 132153, - "end": 132165, + "start": 132667, + "end": 132679, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 14 }, "end": { - "line": 3287, + "line": 3295, "column": 26 } } @@ -450961,15 +454223,15 @@ "updateContext": null }, "value": "=", - "start": 132166, - "end": 132167, + "start": 132680, + "end": 132681, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 27 }, "end": { - "line": 3287, + "line": 3295, "column": 28 } } @@ -450987,15 +454249,15 @@ "binop": null }, "value": "matrix", - "start": 132168, - "end": 132174, + "start": 132682, + "end": 132688, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 29 }, "end": { - "line": 3287, + "line": 3295, "column": 35 } } @@ -451013,15 +454275,15 @@ "binop": null, "updateContext": null }, - "start": 132174, - "end": 132175, + "start": 132688, + "end": 132689, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 35 }, "end": { - "line": 3287, + "line": 3295, "column": 36 } } @@ -451039,15 +454301,15 @@ "binop": null }, "value": "join", - "start": 132175, - "end": 132179, + "start": 132689, + "end": 132693, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 36 }, "end": { - "line": 3287, + "line": 3295, "column": 40 } } @@ -451064,15 +454326,15 @@ "postfix": false, "binop": null }, - "start": 132179, - "end": 132180, + "start": 132693, + "end": 132694, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 40 }, "end": { - "line": 3287, + "line": 3295, "column": 41 } } @@ -451091,15 +454353,15 @@ "updateContext": null }, "value": "", - "start": 132180, - "end": 132182, + "start": 132694, + "end": 132696, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 41 }, "end": { - "line": 3287, + "line": 3295, "column": 43 } } @@ -451116,15 +454378,15 @@ "postfix": false, "binop": null }, - "start": 132182, - "end": 132183, + "start": 132696, + "end": 132697, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 43 }, "end": { - "line": 3287, + "line": 3295, "column": 44 } } @@ -451142,15 +454404,15 @@ "binop": null, "updateContext": null }, - "start": 132183, - "end": 132184, + "start": 132697, + "end": 132698, "loc": { "start": { - "line": 3287, + "line": 3295, "column": 44 }, "end": { - "line": 3287, + "line": 3295, "column": 45 } } @@ -451170,15 +454432,15 @@ "updateContext": null }, "value": "let", - "start": 132193, - "end": 132196, + "start": 132707, + "end": 132710, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 8 }, "end": { - "line": 3288, + "line": 3296, "column": 11 } } @@ -451196,15 +454458,15 @@ "binop": null }, "value": "hash", - "start": 132197, - "end": 132201, + "start": 132711, + "end": 132715, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 12 }, "end": { - "line": 3288, + "line": 3296, "column": 16 } } @@ -451223,15 +454485,15 @@ "updateContext": null }, "value": "=", - "start": 132202, - "end": 132203, + "start": 132716, + "end": 132717, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 17 }, "end": { - "line": 3288, + "line": 3296, "column": 18 } } @@ -451250,15 +454512,15 @@ "updateContext": null }, "value": 0, - "start": 132204, - "end": 132205, + "start": 132718, + "end": 132719, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 19 }, "end": { - "line": 3288, + "line": 3296, "column": 20 } } @@ -451276,15 +454538,15 @@ "binop": null, "updateContext": null }, - "start": 132205, - "end": 132206, + "start": 132719, + "end": 132720, "loc": { "start": { - "line": 3288, + "line": 3296, "column": 20 }, "end": { - "line": 3288, + "line": 3296, "column": 21 } } @@ -451304,15 +454566,15 @@ "updateContext": null }, "value": "for", - "start": 132215, - "end": 132218, + "start": 132729, + "end": 132732, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 8 }, "end": { - "line": 3289, + "line": 3297, "column": 11 } } @@ -451329,15 +454591,15 @@ "postfix": false, "binop": null }, - "start": 132219, - "end": 132220, + "start": 132733, + "end": 132734, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 12 }, "end": { - "line": 3289, + "line": 3297, "column": 13 } } @@ -451357,15 +454619,15 @@ "updateContext": null }, "value": "let", - "start": 132220, - "end": 132223, + "start": 132734, + "end": 132737, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 13 }, "end": { - "line": 3289, + "line": 3297, "column": 16 } } @@ -451383,15 +454645,15 @@ "binop": null }, "value": "i", - "start": 132224, - "end": 132225, + "start": 132738, + "end": 132739, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 17 }, "end": { - "line": 3289, + "line": 3297, "column": 18 } } @@ -451410,15 +454672,15 @@ "updateContext": null }, "value": "=", - "start": 132226, - "end": 132227, + "start": 132740, + "end": 132741, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 19 }, "end": { - "line": 3289, + "line": 3297, "column": 20 } } @@ -451437,15 +454699,15 @@ "updateContext": null }, "value": 0, - "start": 132228, - "end": 132229, + "start": 132742, + "end": 132743, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 21 }, "end": { - "line": 3289, + "line": 3297, "column": 22 } } @@ -451463,15 +454725,15 @@ "binop": null, "updateContext": null }, - "start": 132229, - "end": 132230, + "start": 132743, + "end": 132744, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 22 }, "end": { - "line": 3289, + "line": 3297, "column": 23 } } @@ -451489,15 +454751,15 @@ "binop": null }, "value": "i", - "start": 132231, - "end": 132232, + "start": 132745, + "end": 132746, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 24 }, "end": { - "line": 3289, + "line": 3297, "column": 25 } } @@ -451516,15 +454778,15 @@ "updateContext": null }, "value": "<", - "start": 132233, - "end": 132234, + "start": 132747, + "end": 132748, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 26 }, "end": { - "line": 3289, + "line": 3297, "column": 27 } } @@ -451542,15 +454804,15 @@ "binop": null }, "value": "matrixString", - "start": 132235, - "end": 132247, + "start": 132749, + "end": 132761, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 28 }, "end": { - "line": 3289, + "line": 3297, "column": 40 } } @@ -451568,15 +454830,15 @@ "binop": null, "updateContext": null }, - "start": 132247, - "end": 132248, + "start": 132761, + "end": 132762, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 40 }, "end": { - "line": 3289, + "line": 3297, "column": 41 } } @@ -451594,15 +454856,15 @@ "binop": null }, "value": "length", - "start": 132248, - "end": 132254, + "start": 132762, + "end": 132768, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 41 }, "end": { - "line": 3289, + "line": 3297, "column": 47 } } @@ -451620,15 +454882,15 @@ "binop": null, "updateContext": null }, - "start": 132254, - "end": 132255, + "start": 132768, + "end": 132769, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 47 }, "end": { - "line": 3289, + "line": 3297, "column": 48 } } @@ -451646,15 +454908,15 @@ "binop": null }, "value": "i", - "start": 132256, - "end": 132257, + "start": 132770, + "end": 132771, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 49 }, "end": { - "line": 3289, + "line": 3297, "column": 50 } } @@ -451672,15 +454934,15 @@ "binop": null }, "value": "++", - "start": 132257, - "end": 132259, + "start": 132771, + "end": 132773, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 50 }, "end": { - "line": 3289, + "line": 3297, "column": 52 } } @@ -451697,15 +454959,15 @@ "postfix": false, "binop": null }, - "start": 132259, - "end": 132260, + "start": 132773, + "end": 132774, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 52 }, "end": { - "line": 3289, + "line": 3297, "column": 53 } } @@ -451722,15 +454984,15 @@ "postfix": false, "binop": null }, - "start": 132261, - "end": 132262, + "start": 132775, + "end": 132776, "loc": { "start": { - "line": 3289, + "line": 3297, "column": 54 }, "end": { - "line": 3289, + "line": 3297, "column": 55 } } @@ -451750,15 +455012,15 @@ "updateContext": null }, "value": "const", - "start": 132275, - "end": 132280, + "start": 132789, + "end": 132794, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 12 }, "end": { - "line": 3290, + "line": 3298, "column": 17 } } @@ -451776,15 +455038,15 @@ "binop": null }, "value": "char", - "start": 132281, - "end": 132285, + "start": 132795, + "end": 132799, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 18 }, "end": { - "line": 3290, + "line": 3298, "column": 22 } } @@ -451803,15 +455065,15 @@ "updateContext": null }, "value": "=", - "start": 132286, - "end": 132287, + "start": 132800, + "end": 132801, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 23 }, "end": { - "line": 3290, + "line": 3298, "column": 24 } } @@ -451829,15 +455091,15 @@ "binop": null }, "value": "matrixString", - "start": 132288, - "end": 132300, + "start": 132802, + "end": 132814, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 25 }, "end": { - "line": 3290, + "line": 3298, "column": 37 } } @@ -451855,15 +455117,15 @@ "binop": null, "updateContext": null }, - "start": 132300, - "end": 132301, + "start": 132814, + "end": 132815, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 37 }, "end": { - "line": 3290, + "line": 3298, "column": 38 } } @@ -451881,15 +455143,15 @@ "binop": null }, "value": "charCodeAt", - "start": 132301, - "end": 132311, + "start": 132815, + "end": 132825, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 38 }, "end": { - "line": 3290, + "line": 3298, "column": 48 } } @@ -451906,15 +455168,15 @@ "postfix": false, "binop": null }, - "start": 132311, - "end": 132312, + "start": 132825, + "end": 132826, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 48 }, "end": { - "line": 3290, + "line": 3298, "column": 49 } } @@ -451932,15 +455194,15 @@ "binop": null }, "value": "i", - "start": 132312, - "end": 132313, + "start": 132826, + "end": 132827, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 49 }, "end": { - "line": 3290, + "line": 3298, "column": 50 } } @@ -451957,15 +455219,15 @@ "postfix": false, "binop": null }, - "start": 132313, - "end": 132314, + "start": 132827, + "end": 132828, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 50 }, "end": { - "line": 3290, + "line": 3298, "column": 51 } } @@ -451983,15 +455245,15 @@ "binop": null, "updateContext": null }, - "start": 132314, - "end": 132315, + "start": 132828, + "end": 132829, "loc": { "start": { - "line": 3290, + "line": 3298, "column": 51 }, "end": { - "line": 3290, + "line": 3298, "column": 52 } } @@ -452009,15 +455271,15 @@ "binop": null }, "value": "hash", - "start": 132328, - "end": 132332, + "start": 132842, + "end": 132846, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 12 }, "end": { - "line": 3291, + "line": 3299, "column": 16 } } @@ -452036,15 +455298,15 @@ "updateContext": null }, "value": "=", - "start": 132333, - "end": 132334, + "start": 132847, + "end": 132848, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 17 }, "end": { - "line": 3291, + "line": 3299, "column": 18 } } @@ -452061,15 +455323,15 @@ "postfix": false, "binop": null }, - "start": 132335, - "end": 132336, + "start": 132849, + "end": 132850, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 19 }, "end": { - "line": 3291, + "line": 3299, "column": 20 } } @@ -452087,15 +455349,15 @@ "binop": null }, "value": "hash", - "start": 132336, - "end": 132340, + "start": 132850, + "end": 132854, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 20 }, "end": { - "line": 3291, + "line": 3299, "column": 24 } } @@ -452114,15 +455376,15 @@ "updateContext": null }, "value": "<<", - "start": 132341, - "end": 132343, + "start": 132855, + "end": 132857, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 25 }, "end": { - "line": 3291, + "line": 3299, "column": 27 } } @@ -452141,15 +455403,15 @@ "updateContext": null }, "value": 5, - "start": 132344, - "end": 132345, + "start": 132858, + "end": 132859, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 28 }, "end": { - "line": 3291, + "line": 3299, "column": 29 } } @@ -452166,15 +455428,15 @@ "postfix": false, "binop": null }, - "start": 132345, - "end": 132346, + "start": 132859, + "end": 132860, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 29 }, "end": { - "line": 3291, + "line": 3299, "column": 30 } } @@ -452193,15 +455455,15 @@ "updateContext": null }, "value": "-", - "start": 132347, - "end": 132348, + "start": 132861, + "end": 132862, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 31 }, "end": { - "line": 3291, + "line": 3299, "column": 32 } } @@ -452219,15 +455481,15 @@ "binop": null }, "value": "hash", - "start": 132349, - "end": 132353, + "start": 132863, + "end": 132867, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 33 }, "end": { - "line": 3291, + "line": 3299, "column": 37 } } @@ -452246,15 +455508,15 @@ "updateContext": null }, "value": "+", - "start": 132354, - "end": 132355, + "start": 132868, + "end": 132869, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 38 }, "end": { - "line": 3291, + "line": 3299, "column": 39 } } @@ -452272,15 +455534,15 @@ "binop": null }, "value": "char", - "start": 132356, - "end": 132360, + "start": 132870, + "end": 132874, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 40 }, "end": { - "line": 3291, + "line": 3299, "column": 44 } } @@ -452298,15 +455560,15 @@ "binop": null, "updateContext": null }, - "start": 132360, - "end": 132361, + "start": 132874, + "end": 132875, "loc": { "start": { - "line": 3291, + "line": 3299, "column": 44 }, "end": { - "line": 3291, + "line": 3299, "column": 45 } } @@ -452324,15 +455586,15 @@ "binop": null }, "value": "hash", - "start": 132374, - "end": 132378, + "start": 132888, + "end": 132892, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 12 }, "end": { - "line": 3292, + "line": 3300, "column": 16 } } @@ -452351,15 +455613,15 @@ "updateContext": null }, "value": "|=", - "start": 132379, - "end": 132381, + "start": 132893, + "end": 132895, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 17 }, "end": { - "line": 3292, + "line": 3300, "column": 19 } } @@ -452378,15 +455640,15 @@ "updateContext": null }, "value": 0, - "start": 132382, - "end": 132383, + "start": 132896, + "end": 132897, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 20 }, "end": { - "line": 3292, + "line": 3300, "column": 21 } } @@ -452404,15 +455666,15 @@ "binop": null, "updateContext": null }, - "start": 132383, - "end": 132384, + "start": 132897, + "end": 132898, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 21 }, "end": { - "line": 3292, + "line": 3300, "column": 22 } } @@ -452420,15 +455682,15 @@ { "type": "CommentLine", "value": " Convert to 32-bit integer", - "start": 132385, - "end": 132413, + "start": 132899, + "end": 132927, "loc": { "start": { - "line": 3292, + "line": 3300, "column": 23 }, "end": { - "line": 3292, + "line": 3300, "column": 51 } } @@ -452445,15 +455707,15 @@ "postfix": false, "binop": null }, - "start": 132422, - "end": 132423, + "start": 132936, + "end": 132937, "loc": { "start": { - "line": 3293, + "line": 3301, "column": 8 }, "end": { - "line": 3293, + "line": 3301, "column": 9 } } @@ -452473,15 +455735,15 @@ "updateContext": null }, "value": "const", - "start": 132432, - "end": 132437, + "start": 132946, + "end": 132951, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 8 }, "end": { - "line": 3294, + "line": 3302, "column": 13 } } @@ -452499,15 +455761,15 @@ "binop": null }, "value": "hashString", - "start": 132438, - "end": 132448, + "start": 132952, + "end": 132962, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 14 }, "end": { - "line": 3294, + "line": 3302, "column": 24 } } @@ -452526,15 +455788,15 @@ "updateContext": null }, "value": "=", - "start": 132449, - "end": 132450, + "start": 132963, + "end": 132964, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 25 }, "end": { - "line": 3294, + "line": 3302, "column": 26 } } @@ -452551,15 +455813,15 @@ "postfix": false, "binop": null }, - "start": 132451, - "end": 132452, + "start": 132965, + "end": 132966, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 27 }, "end": { - "line": 3294, + "line": 3302, "column": 28 } } @@ -452577,15 +455839,15 @@ "binop": null }, "value": "hash", - "start": 132452, - "end": 132456, + "start": 132966, + "end": 132970, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 28 }, "end": { - "line": 3294, + "line": 3302, "column": 32 } } @@ -452604,15 +455866,15 @@ "updateContext": null }, "value": ">>>", - "start": 132457, - "end": 132460, + "start": 132971, + "end": 132974, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 33 }, "end": { - "line": 3294, + "line": 3302, "column": 36 } } @@ -452631,15 +455893,15 @@ "updateContext": null }, "value": 0, - "start": 132461, - "end": 132462, + "start": 132975, + "end": 132976, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 37 }, "end": { - "line": 3294, + "line": 3302, "column": 38 } } @@ -452656,15 +455918,15 @@ "postfix": false, "binop": null }, - "start": 132462, - "end": 132463, + "start": 132976, + "end": 132977, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 38 }, "end": { - "line": 3294, + "line": 3302, "column": 39 } } @@ -452682,15 +455944,15 @@ "binop": null, "updateContext": null }, - "start": 132463, - "end": 132464, + "start": 132977, + "end": 132978, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 39 }, "end": { - "line": 3294, + "line": 3302, "column": 40 } } @@ -452708,15 +455970,15 @@ "binop": null }, "value": "toString", - "start": 132464, - "end": 132472, + "start": 132978, + "end": 132986, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 40 }, "end": { - "line": 3294, + "line": 3302, "column": 48 } } @@ -452733,15 +455995,15 @@ "postfix": false, "binop": null }, - "start": 132472, - "end": 132473, + "start": 132986, + "end": 132987, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 48 }, "end": { - "line": 3294, + "line": 3302, "column": 49 } } @@ -452760,15 +456022,15 @@ "updateContext": null }, "value": 16, - "start": 132473, - "end": 132475, + "start": 132987, + "end": 132989, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 49 }, "end": { - "line": 3294, + "line": 3302, "column": 51 } } @@ -452785,15 +456047,15 @@ "postfix": false, "binop": null }, - "start": 132475, - "end": 132476, + "start": 132989, + "end": 132990, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 51 }, "end": { - "line": 3294, + "line": 3302, "column": 52 } } @@ -452811,15 +456073,15 @@ "binop": null, "updateContext": null }, - "start": 132476, - "end": 132477, + "start": 132990, + "end": 132991, "loc": { "start": { - "line": 3294, + "line": 3302, "column": 52 }, "end": { - "line": 3294, + "line": 3302, "column": 53 } } @@ -452839,15 +456101,15 @@ "updateContext": null }, "value": "return", - "start": 132486, - "end": 132492, + "start": 133000, + "end": 133006, "loc": { "start": { - "line": 3295, + "line": 3303, "column": 8 }, "end": { - "line": 3295, + "line": 3303, "column": 14 } } @@ -452865,15 +456127,15 @@ "binop": null }, "value": "hashString", - "start": 132493, - "end": 132503, + "start": 133007, + "end": 133017, "loc": { "start": { - "line": 3295, + "line": 3303, "column": 15 }, "end": { - "line": 3295, + "line": 3303, "column": 25 } } @@ -452891,15 +456153,15 @@ "binop": null, "updateContext": null }, - "start": 132503, - "end": 132504, + "start": 133017, + "end": 133018, "loc": { "start": { - "line": 3295, + "line": 3303, "column": 25 }, "end": { - "line": 3295, + "line": 3303, "column": 26 } } @@ -452916,15 +456178,15 @@ "postfix": false, "binop": null }, - "start": 132509, - "end": 132510, + "start": 133023, + "end": 133024, "loc": { "start": { - "line": 3296, + "line": 3304, "column": 4 }, "end": { - "line": 3296, + "line": 3304, "column": 5 } } @@ -452942,15 +456204,15 @@ "binop": null }, "value": "_getVBOInstancingLayer", - "start": 132516, - "end": 132538, + "start": 133030, + "end": 133052, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 4 }, "end": { - "line": 3298, + "line": 3306, "column": 26 } } @@ -452967,15 +456229,15 @@ "postfix": false, "binop": null }, - "start": 132538, - "end": 132539, + "start": 133052, + "end": 133053, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 26 }, "end": { - "line": 3298, + "line": 3306, "column": 27 } } @@ -452993,15 +456255,15 @@ "binop": null }, "value": "cfg", - "start": 132539, - "end": 132542, + "start": 133053, + "end": 133056, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 27 }, "end": { - "line": 3298, + "line": 3306, "column": 30 } } @@ -453018,15 +456280,15 @@ "postfix": false, "binop": null }, - "start": 132542, - "end": 132543, + "start": 133056, + "end": 133057, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 30 }, "end": { - "line": 3298, + "line": 3306, "column": 31 } } @@ -453043,15 +456305,15 @@ "postfix": false, "binop": null }, - "start": 132544, - "end": 132545, + "start": 133058, + "end": 133059, "loc": { "start": { - "line": 3298, + "line": 3306, "column": 32 }, "end": { - "line": 3298, + "line": 3306, "column": 33 } } @@ -453071,15 +456333,15 @@ "updateContext": null }, "value": "const", - "start": 132554, - "end": 132559, + "start": 133068, + "end": 133073, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 8 }, "end": { - "line": 3299, + "line": 3307, "column": 13 } } @@ -453097,15 +456359,15 @@ "binop": null }, "value": "model", - "start": 132560, - "end": 132565, + "start": 133074, + "end": 133079, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 14 }, "end": { - "line": 3299, + "line": 3307, "column": 19 } } @@ -453124,15 +456386,15 @@ "updateContext": null }, "value": "=", - "start": 132566, - "end": 132567, + "start": 133080, + "end": 133081, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 20 }, "end": { - "line": 3299, + "line": 3307, "column": 21 } } @@ -453152,15 +456414,15 @@ "updateContext": null }, "value": "this", - "start": 132568, - "end": 132572, + "start": 133082, + "end": 133086, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 22 }, "end": { - "line": 3299, + "line": 3307, "column": 26 } } @@ -453178,15 +456440,15 @@ "binop": null, "updateContext": null }, - "start": 132572, - "end": 132573, + "start": 133086, + "end": 133087, "loc": { "start": { - "line": 3299, + "line": 3307, "column": 26 }, "end": { - "line": 3299, + "line": 3307, "column": 27 } } @@ -453206,15 +456468,15 @@ "updateContext": null }, "value": "const", - "start": 132582, - "end": 132587, + "start": 133096, + "end": 133101, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 8 }, "end": { - "line": 3300, + "line": 3308, "column": 13 } } @@ -453232,15 +456494,15 @@ "binop": null }, "value": "origin", - "start": 132588, - "end": 132594, + "start": 133102, + "end": 133108, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 14 }, "end": { - "line": 3300, + "line": 3308, "column": 20 } } @@ -453259,15 +456521,15 @@ "updateContext": null }, "value": "=", - "start": 132595, - "end": 132596, + "start": 133109, + "end": 133110, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 21 }, "end": { - "line": 3300, + "line": 3308, "column": 22 } } @@ -453285,15 +456547,15 @@ "binop": null }, "value": "cfg", - "start": 132597, - "end": 132600, + "start": 133111, + "end": 133114, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 23 }, "end": { - "line": 3300, + "line": 3308, "column": 26 } } @@ -453311,15 +456573,15 @@ "binop": null, "updateContext": null }, - "start": 132600, - "end": 132601, + "start": 133114, + "end": 133115, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 26 }, "end": { - "line": 3300, + "line": 3308, "column": 27 } } @@ -453337,15 +456599,15 @@ "binop": null }, "value": "origin", - "start": 132601, - "end": 132607, + "start": 133115, + "end": 133121, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 27 }, "end": { - "line": 3300, + "line": 3308, "column": 33 } } @@ -453363,15 +456625,15 @@ "binop": null, "updateContext": null }, - "start": 132607, - "end": 132608, + "start": 133121, + "end": 133122, "loc": { "start": { - "line": 3300, + "line": 3308, "column": 33 }, "end": { - "line": 3300, + "line": 3308, "column": 34 } } @@ -453391,15 +456653,15 @@ "updateContext": null }, "value": "const", - "start": 132617, - "end": 132622, + "start": 133131, + "end": 133136, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 8 }, "end": { - "line": 3301, + "line": 3309, "column": 13 } } @@ -453417,15 +456679,15 @@ "binop": null }, "value": "textureSetId", - "start": 132623, - "end": 132635, + "start": 133137, + "end": 133149, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 14 }, "end": { - "line": 3301, + "line": 3309, "column": 26 } } @@ -453444,15 +456706,15 @@ "updateContext": null }, "value": "=", - "start": 132636, - "end": 132637, + "start": 133150, + "end": 133151, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 27 }, "end": { - "line": 3301, + "line": 3309, "column": 28 } } @@ -453470,15 +456732,15 @@ "binop": null }, "value": "cfg", - "start": 132638, - "end": 132641, + "start": 133152, + "end": 133155, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 29 }, "end": { - "line": 3301, + "line": 3309, "column": 32 } } @@ -453496,15 +456758,15 @@ "binop": null, "updateContext": null }, - "start": 132641, - "end": 132642, + "start": 133155, + "end": 133156, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 32 }, "end": { - "line": 3301, + "line": 3309, "column": 33 } } @@ -453522,15 +456784,15 @@ "binop": null }, "value": "textureSetId", - "start": 132642, - "end": 132654, + "start": 133156, + "end": 133168, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 33 }, "end": { - "line": 3301, + "line": 3309, "column": 45 } } @@ -453549,15 +456811,15 @@ "updateContext": null }, "value": "||", - "start": 132655, - "end": 132657, + "start": 133169, + "end": 133171, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 46 }, "end": { - "line": 3301, + "line": 3309, "column": 48 } } @@ -453576,15 +456838,15 @@ "updateContext": null }, "value": "-", - "start": 132658, - "end": 132661, + "start": 133172, + "end": 133175, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 49 }, "end": { - "line": 3301, + "line": 3309, "column": 52 } } @@ -453602,15 +456864,15 @@ "binop": null, "updateContext": null }, - "start": 132661, - "end": 132662, + "start": 133175, + "end": 133176, "loc": { "start": { - "line": 3301, + "line": 3309, "column": 52 }, "end": { - "line": 3301, + "line": 3309, "column": 53 } } @@ -453630,15 +456892,15 @@ "updateContext": null }, "value": "const", - "start": 132671, - "end": 132676, + "start": 133185, + "end": 133190, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 8 }, "end": { - "line": 3302, + "line": 3310, "column": 13 } } @@ -453656,15 +456918,15 @@ "binop": null }, "value": "geometryId", - "start": 132677, - "end": 132687, + "start": 133191, + "end": 133201, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 14 }, "end": { - "line": 3302, + "line": 3310, "column": 24 } } @@ -453683,15 +456945,15 @@ "updateContext": null }, "value": "=", - "start": 132688, - "end": 132689, + "start": 133202, + "end": 133203, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 25 }, "end": { - "line": 3302, + "line": 3310, "column": 26 } } @@ -453709,15 +456971,15 @@ "binop": null }, "value": "cfg", - "start": 132690, - "end": 132693, + "start": 133204, + "end": 133207, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 27 }, "end": { - "line": 3302, + "line": 3310, "column": 30 } } @@ -453735,15 +456997,15 @@ "binop": null, "updateContext": null }, - "start": 132693, - "end": 132694, + "start": 133207, + "end": 133208, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 30 }, "end": { - "line": 3302, + "line": 3310, "column": 31 } } @@ -453761,15 +457023,15 @@ "binop": null }, "value": "geometryId", - "start": 132694, - "end": 132704, + "start": 133208, + "end": 133218, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 31 }, "end": { - "line": 3302, + "line": 3310, "column": 41 } } @@ -453787,15 +457049,15 @@ "binop": null, "updateContext": null }, - "start": 132704, - "end": 132705, + "start": 133218, + "end": 133219, "loc": { "start": { - "line": 3302, + "line": 3310, "column": 41 }, "end": { - "line": 3302, + "line": 3310, "column": 42 } } @@ -453815,15 +457077,15 @@ "updateContext": null }, "value": "const", - "start": 132714, - "end": 132719, + "start": 133228, + "end": 133233, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 8 }, "end": { - "line": 3303, + "line": 3311, "column": 13 } } @@ -453841,15 +457103,15 @@ "binop": null }, "value": "layerId", - "start": 132720, - "end": 132727, + "start": 133234, + "end": 133241, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 14 }, "end": { - "line": 3303, + "line": 3311, "column": 21 } } @@ -453868,15 +457130,15 @@ "updateContext": null }, "value": "=", - "start": 132728, - "end": 132729, + "start": 133242, + "end": 133243, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 22 }, "end": { - "line": 3303, + "line": 3311, "column": 23 } } @@ -453893,15 +457155,15 @@ "postfix": false, "binop": null }, - "start": 132730, - "end": 132731, + "start": 133244, + "end": 133245, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 24 }, "end": { - "line": 3303, + "line": 3311, "column": 25 } } @@ -453920,15 +457182,15 @@ "updateContext": null }, "value": "", - "start": 132731, - "end": 132731, + "start": 133245, + "end": 133245, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 25 }, "end": { - "line": 3303, + "line": 3311, "column": 25 } } @@ -453945,15 +457207,15 @@ "postfix": false, "binop": null }, - "start": 132731, - "end": 132733, + "start": 133245, + "end": 133247, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 25 }, "end": { - "line": 3303, + "line": 3311, "column": 27 } } @@ -453971,15 +457233,15 @@ "binop": null }, "value": "Math", - "start": 132733, - "end": 132737, + "start": 133247, + "end": 133251, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 27 }, "end": { - "line": 3303, + "line": 3311, "column": 31 } } @@ -453997,15 +457259,15 @@ "binop": null, "updateContext": null }, - "start": 132737, - "end": 132738, + "start": 133251, + "end": 133252, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 31 }, "end": { - "line": 3303, + "line": 3311, "column": 32 } } @@ -454023,15 +457285,15 @@ "binop": null }, "value": "round", - "start": 132738, - "end": 132743, + "start": 133252, + "end": 133257, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 32 }, "end": { - "line": 3303, + "line": 3311, "column": 37 } } @@ -454048,15 +457310,15 @@ "postfix": false, "binop": null }, - "start": 132743, - "end": 132744, + "start": 133257, + "end": 133258, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 37 }, "end": { - "line": 3303, + "line": 3311, "column": 38 } } @@ -454074,15 +457336,15 @@ "binop": null }, "value": "origin", - "start": 132744, - "end": 132750, + "start": 133258, + "end": 133264, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 38 }, "end": { - "line": 3303, + "line": 3311, "column": 44 } } @@ -454100,15 +457362,15 @@ "binop": null, "updateContext": null }, - "start": 132750, - "end": 132751, + "start": 133264, + "end": 133265, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 44 }, "end": { - "line": 3303, + "line": 3311, "column": 45 } } @@ -454127,15 +457389,15 @@ "updateContext": null }, "value": 0, - "start": 132751, - "end": 132752, + "start": 133265, + "end": 133266, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 45 }, "end": { - "line": 3303, + "line": 3311, "column": 46 } } @@ -454153,15 +457415,15 @@ "binop": null, "updateContext": null }, - "start": 132752, - "end": 132753, + "start": 133266, + "end": 133267, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 46 }, "end": { - "line": 3303, + "line": 3311, "column": 47 } } @@ -454178,15 +457440,15 @@ "postfix": false, "binop": null }, - "start": 132753, - "end": 132754, + "start": 133267, + "end": 133268, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 47 }, "end": { - "line": 3303, + "line": 3311, "column": 48 } } @@ -454203,15 +457465,15 @@ "postfix": false, "binop": null }, - "start": 132754, - "end": 132755, + "start": 133268, + "end": 133269, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 48 }, "end": { - "line": 3303, + "line": 3311, "column": 49 } } @@ -454230,15 +457492,15 @@ "updateContext": null }, "value": ".", - "start": 132755, - "end": 132756, + "start": 133269, + "end": 133270, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 49 }, "end": { - "line": 3303, + "line": 3311, "column": 50 } } @@ -454255,15 +457517,15 @@ "postfix": false, "binop": null }, - "start": 132756, - "end": 132758, + "start": 133270, + "end": 133272, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 50 }, "end": { - "line": 3303, + "line": 3311, "column": 52 } } @@ -454281,15 +457543,15 @@ "binop": null }, "value": "Math", - "start": 132758, - "end": 132762, + "start": 133272, + "end": 133276, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 52 }, "end": { - "line": 3303, + "line": 3311, "column": 56 } } @@ -454307,15 +457569,15 @@ "binop": null, "updateContext": null }, - "start": 132762, - "end": 132763, + "start": 133276, + "end": 133277, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 56 }, "end": { - "line": 3303, + "line": 3311, "column": 57 } } @@ -454333,15 +457595,15 @@ "binop": null }, "value": "round", - "start": 132763, - "end": 132768, + "start": 133277, + "end": 133282, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 57 }, "end": { - "line": 3303, + "line": 3311, "column": 62 } } @@ -454358,15 +457620,15 @@ "postfix": false, "binop": null }, - "start": 132768, - "end": 132769, + "start": 133282, + "end": 133283, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 62 }, "end": { - "line": 3303, + "line": 3311, "column": 63 } } @@ -454384,15 +457646,15 @@ "binop": null }, "value": "origin", - "start": 132769, - "end": 132775, + "start": 133283, + "end": 133289, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 63 }, "end": { - "line": 3303, + "line": 3311, "column": 69 } } @@ -454410,15 +457672,15 @@ "binop": null, "updateContext": null }, - "start": 132775, - "end": 132776, + "start": 133289, + "end": 133290, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 69 }, "end": { - "line": 3303, + "line": 3311, "column": 70 } } @@ -454437,15 +457699,15 @@ "updateContext": null }, "value": 1, - "start": 132776, - "end": 132777, + "start": 133290, + "end": 133291, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 70 }, "end": { - "line": 3303, + "line": 3311, "column": 71 } } @@ -454463,15 +457725,15 @@ "binop": null, "updateContext": null }, - "start": 132777, - "end": 132778, + "start": 133291, + "end": 133292, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 71 }, "end": { - "line": 3303, + "line": 3311, "column": 72 } } @@ -454488,15 +457750,15 @@ "postfix": false, "binop": null }, - "start": 132778, - "end": 132779, + "start": 133292, + "end": 133293, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 72 }, "end": { - "line": 3303, + "line": 3311, "column": 73 } } @@ -454513,15 +457775,15 @@ "postfix": false, "binop": null }, - "start": 132779, - "end": 132780, + "start": 133293, + "end": 133294, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 73 }, "end": { - "line": 3303, + "line": 3311, "column": 74 } } @@ -454540,15 +457802,15 @@ "updateContext": null }, "value": ".", - "start": 132780, - "end": 132781, + "start": 133294, + "end": 133295, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 74 }, "end": { - "line": 3303, + "line": 3311, "column": 75 } } @@ -454565,15 +457827,15 @@ "postfix": false, "binop": null }, - "start": 132781, - "end": 132783, + "start": 133295, + "end": 133297, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 75 }, "end": { - "line": 3303, + "line": 3311, "column": 77 } } @@ -454591,15 +457853,15 @@ "binop": null }, "value": "Math", - "start": 132783, - "end": 132787, + "start": 133297, + "end": 133301, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 77 }, "end": { - "line": 3303, + "line": 3311, "column": 81 } } @@ -454617,15 +457879,15 @@ "binop": null, "updateContext": null }, - "start": 132787, - "end": 132788, + "start": 133301, + "end": 133302, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 81 }, "end": { - "line": 3303, + "line": 3311, "column": 82 } } @@ -454643,15 +457905,15 @@ "binop": null }, "value": "round", - "start": 132788, - "end": 132793, + "start": 133302, + "end": 133307, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 82 }, "end": { - "line": 3303, + "line": 3311, "column": 87 } } @@ -454668,15 +457930,15 @@ "postfix": false, "binop": null }, - "start": 132793, - "end": 132794, + "start": 133307, + "end": 133308, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 87 }, "end": { - "line": 3303, + "line": 3311, "column": 88 } } @@ -454694,15 +457956,15 @@ "binop": null }, "value": "origin", - "start": 132794, - "end": 132800, + "start": 133308, + "end": 133314, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 88 }, "end": { - "line": 3303, + "line": 3311, "column": 94 } } @@ -454720,15 +457982,15 @@ "binop": null, "updateContext": null }, - "start": 132800, - "end": 132801, + "start": 133314, + "end": 133315, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 94 }, "end": { - "line": 3303, + "line": 3311, "column": 95 } } @@ -454747,15 +458009,15 @@ "updateContext": null }, "value": 2, - "start": 132801, - "end": 132802, + "start": 133315, + "end": 133316, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 95 }, "end": { - "line": 3303, + "line": 3311, "column": 96 } } @@ -454773,15 +458035,15 @@ "binop": null, "updateContext": null }, - "start": 132802, - "end": 132803, + "start": 133316, + "end": 133317, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 96 }, "end": { - "line": 3303, + "line": 3311, "column": 97 } } @@ -454798,15 +458060,15 @@ "postfix": false, "binop": null }, - "start": 132803, - "end": 132804, + "start": 133317, + "end": 133318, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 97 }, "end": { - "line": 3303, + "line": 3311, "column": 98 } } @@ -454823,15 +458085,15 @@ "postfix": false, "binop": null }, - "start": 132804, - "end": 132805, + "start": 133318, + "end": 133319, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 98 }, "end": { - "line": 3303, + "line": 3311, "column": 99 } } @@ -454850,15 +458112,15 @@ "updateContext": null }, "value": ".", - "start": 132805, - "end": 132806, + "start": 133319, + "end": 133320, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 99 }, "end": { - "line": 3303, + "line": 3311, "column": 100 } } @@ -454875,15 +458137,15 @@ "postfix": false, "binop": null }, - "start": 132806, - "end": 132808, + "start": 133320, + "end": 133322, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 100 }, "end": { - "line": 3303, + "line": 3311, "column": 102 } } @@ -454901,15 +458163,15 @@ "binop": null }, "value": "textureSetId", - "start": 132808, - "end": 132820, + "start": 133322, + "end": 133334, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 102 }, "end": { - "line": 3303, + "line": 3311, "column": 114 } } @@ -454926,15 +458188,15 @@ "postfix": false, "binop": null }, - "start": 132820, - "end": 132821, + "start": 133334, + "end": 133335, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 114 }, "end": { - "line": 3303, + "line": 3311, "column": 115 } } @@ -454953,15 +458215,15 @@ "updateContext": null }, "value": ".", - "start": 132821, - "end": 132822, + "start": 133335, + "end": 133336, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 115 }, "end": { - "line": 3303, + "line": 3311, "column": 116 } } @@ -454978,15 +458240,15 @@ "postfix": false, "binop": null }, - "start": 132822, - "end": 132824, + "start": 133336, + "end": 133338, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 116 }, "end": { - "line": 3303, + "line": 3311, "column": 118 } } @@ -455004,15 +458266,15 @@ "binop": null }, "value": "geometryId", - "start": 132824, - "end": 132834, + "start": 133338, + "end": 133348, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 118 }, "end": { - "line": 3303, + "line": 3311, "column": 128 } } @@ -455029,15 +458291,15 @@ "postfix": false, "binop": null }, - "start": 132834, - "end": 132835, + "start": 133348, + "end": 133349, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 128 }, "end": { - "line": 3303, + "line": 3311, "column": 129 } } @@ -455056,15 +458318,15 @@ "updateContext": null }, "value": "", - "start": 132835, - "end": 132835, + "start": 133349, + "end": 133349, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 129 }, "end": { - "line": 3303, + "line": 3311, "column": 129 } } @@ -455081,15 +458343,15 @@ "postfix": false, "binop": null }, - "start": 132835, - "end": 132836, + "start": 133349, + "end": 133350, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 129 }, "end": { - "line": 3303, + "line": 3311, "column": 130 } } @@ -455107,15 +458369,15 @@ "binop": null, "updateContext": null }, - "start": 132836, - "end": 132837, + "start": 133350, + "end": 133351, "loc": { "start": { - "line": 3303, + "line": 3311, "column": 130 }, "end": { - "line": 3303, + "line": 3311, "column": 131 } } @@ -455135,15 +458397,15 @@ "updateContext": null }, "value": "let", - "start": 132846, - "end": 132849, + "start": 133360, + "end": 133363, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 8 }, "end": { - "line": 3304, + "line": 3312, "column": 11 } } @@ -455161,15 +458423,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 132850, - "end": 132868, + "start": 133364, + "end": 133382, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 12 }, "end": { - "line": 3304, + "line": 3312, "column": 30 } } @@ -455188,15 +458450,15 @@ "updateContext": null }, "value": "=", - "start": 132869, - "end": 132870, + "start": 133383, + "end": 133384, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 31 }, "end": { - "line": 3304, + "line": 3312, "column": 32 } } @@ -455216,15 +458478,15 @@ "updateContext": null }, "value": "this", - "start": 132871, - "end": 132875, + "start": 133385, + "end": 133389, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 33 }, "end": { - "line": 3304, + "line": 3312, "column": 37 } } @@ -455242,15 +458504,15 @@ "binop": null, "updateContext": null }, - "start": 132875, - "end": 132876, + "start": 133389, + "end": 133390, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 37 }, "end": { - "line": 3304, + "line": 3312, "column": 38 } } @@ -455268,15 +458530,15 @@ "binop": null }, "value": "_vboInstancingLayers", - "start": 132876, - "end": 132896, + "start": 133390, + "end": 133410, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 38 }, "end": { - "line": 3304, + "line": 3312, "column": 58 } } @@ -455294,15 +458556,15 @@ "binop": null, "updateContext": null }, - "start": 132896, - "end": 132897, + "start": 133410, + "end": 133411, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 58 }, "end": { - "line": 3304, + "line": 3312, "column": 59 } } @@ -455320,15 +458582,15 @@ "binop": null }, "value": "layerId", - "start": 132897, - "end": 132904, + "start": 133411, + "end": 133418, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 59 }, "end": { - "line": 3304, + "line": 3312, "column": 66 } } @@ -455346,15 +458608,15 @@ "binop": null, "updateContext": null }, - "start": 132904, - "end": 132905, + "start": 133418, + "end": 133419, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 66 }, "end": { - "line": 3304, + "line": 3312, "column": 67 } } @@ -455372,15 +458634,15 @@ "binop": null, "updateContext": null }, - "start": 132905, - "end": 132906, + "start": 133419, + "end": 133420, "loc": { "start": { - "line": 3304, + "line": 3312, "column": 67 }, "end": { - "line": 3304, + "line": 3312, "column": 68 } } @@ -455400,15 +458662,15 @@ "updateContext": null }, "value": "if", - "start": 132915, - "end": 132917, + "start": 133429, + "end": 133431, "loc": { "start": { - "line": 3305, + "line": 3313, "column": 8 }, "end": { - "line": 3305, + "line": 3313, "column": 10 } } @@ -455425,15 +458687,15 @@ "postfix": false, "binop": null }, - "start": 132918, - "end": 132919, + "start": 133432, + "end": 133433, "loc": { "start": { - "line": 3305, + "line": 3313, "column": 11 }, "end": { - "line": 3305, + "line": 3313, "column": 12 } } @@ -455451,15 +458713,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 132919, - "end": 132937, + "start": 133433, + "end": 133451, "loc": { "start": { - "line": 3305, + "line": 3313, "column": 12 }, "end": { - "line": 3305, + "line": 3313, "column": 30 } } @@ -455476,15 +458738,15 @@ "postfix": false, "binop": null }, - "start": 132937, - "end": 132938, + "start": 133451, + "end": 133452, "loc": { "start": { - "line": 3305, + "line": 3313, "column": 30 }, "end": { - "line": 3305, + "line": 3313, "column": 31 } } @@ -455501,15 +458763,15 @@ "postfix": false, "binop": null }, - "start": 132939, - "end": 132940, + "start": 133453, + "end": 133454, "loc": { "start": { - "line": 3305, + "line": 3313, "column": 32 }, "end": { - "line": 3305, + "line": 3313, "column": 33 } } @@ -455529,15 +458791,15 @@ "updateContext": null }, "value": "return", - "start": 132953, - "end": 132959, + "start": 133467, + "end": 133473, "loc": { "start": { - "line": 3306, + "line": 3314, "column": 12 }, "end": { - "line": 3306, + "line": 3314, "column": 18 } } @@ -455555,15 +458817,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 132960, - "end": 132978, + "start": 133474, + "end": 133492, "loc": { "start": { - "line": 3306, + "line": 3314, "column": 19 }, "end": { - "line": 3306, + "line": 3314, "column": 37 } } @@ -455581,15 +458843,15 @@ "binop": null, "updateContext": null }, - "start": 132978, - "end": 132979, + "start": 133492, + "end": 133493, "loc": { "start": { - "line": 3306, + "line": 3314, "column": 37 }, "end": { - "line": 3306, + "line": 3314, "column": 38 } } @@ -455606,15 +458868,15 @@ "postfix": false, "binop": null }, - "start": 132988, - "end": 132989, + "start": 133502, + "end": 133503, "loc": { "start": { - "line": 3307, + "line": 3315, "column": 8 }, "end": { - "line": 3307, + "line": 3315, "column": 9 } } @@ -455634,15 +458896,15 @@ "updateContext": null }, "value": "let", - "start": 132998, - "end": 133001, + "start": 133512, + "end": 133515, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 8 }, "end": { - "line": 3308, + "line": 3316, "column": 11 } } @@ -455660,15 +458922,15 @@ "binop": null }, "value": "textureSet", - "start": 133002, - "end": 133012, + "start": 133516, + "end": 133526, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 12 }, "end": { - "line": 3308, + "line": 3316, "column": 22 } } @@ -455687,15 +458949,15 @@ "updateContext": null }, "value": "=", - "start": 133013, - "end": 133014, + "start": 133527, + "end": 133528, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 23 }, "end": { - "line": 3308, + "line": 3316, "column": 24 } } @@ -455713,15 +458975,15 @@ "binop": null }, "value": "cfg", - "start": 133015, - "end": 133018, + "start": 133529, + "end": 133532, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 25 }, "end": { - "line": 3308, + "line": 3316, "column": 28 } } @@ -455739,15 +459001,15 @@ "binop": null, "updateContext": null }, - "start": 133018, - "end": 133019, + "start": 133532, + "end": 133533, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 28 }, "end": { - "line": 3308, + "line": 3316, "column": 29 } } @@ -455765,15 +459027,15 @@ "binop": null }, "value": "textureSet", - "start": 133019, - "end": 133029, + "start": 133533, + "end": 133543, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 29 }, "end": { - "line": 3308, + "line": 3316, "column": 39 } } @@ -455791,15 +459053,15 @@ "binop": null, "updateContext": null }, - "start": 133029, - "end": 133030, + "start": 133543, + "end": 133544, "loc": { "start": { - "line": 3308, + "line": 3316, "column": 39 }, "end": { - "line": 3308, + "line": 3316, "column": 40 } } @@ -455819,15 +459081,15 @@ "updateContext": null }, "value": "const", - "start": 133039, - "end": 133044, + "start": 133553, + "end": 133558, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 8 }, "end": { - "line": 3309, + "line": 3317, "column": 13 } } @@ -455845,15 +459107,15 @@ "binop": null }, "value": "geometry", - "start": 133045, - "end": 133053, + "start": 133559, + "end": 133567, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 14 }, "end": { - "line": 3309, + "line": 3317, "column": 22 } } @@ -455872,15 +459134,15 @@ "updateContext": null }, "value": "=", - "start": 133054, - "end": 133055, + "start": 133568, + "end": 133569, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 23 }, "end": { - "line": 3309, + "line": 3317, "column": 24 } } @@ -455898,15 +459160,15 @@ "binop": null }, "value": "cfg", - "start": 133056, - "end": 133059, + "start": 133570, + "end": 133573, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 25 }, "end": { - "line": 3309, + "line": 3317, "column": 28 } } @@ -455924,15 +459186,15 @@ "binop": null, "updateContext": null }, - "start": 133059, - "end": 133060, + "start": 133573, + "end": 133574, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 28 }, "end": { - "line": 3309, + "line": 3317, "column": 29 } } @@ -455950,15 +459212,15 @@ "binop": null }, "value": "geometry", - "start": 133060, - "end": 133068, + "start": 133574, + "end": 133582, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 29 }, "end": { - "line": 3309, + "line": 3317, "column": 37 } } @@ -455976,15 +459238,15 @@ "binop": null, "updateContext": null }, - "start": 133068, - "end": 133069, + "start": 133582, + "end": 133583, "loc": { "start": { - "line": 3309, + "line": 3317, "column": 37 }, "end": { - "line": 3309, + "line": 3317, "column": 38 } } @@ -456004,15 +459266,15 @@ "updateContext": null }, "value": "while", - "start": 133078, - "end": 133083, + "start": 133592, + "end": 133597, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 8 }, "end": { - "line": 3310, + "line": 3318, "column": 13 } } @@ -456029,15 +459291,15 @@ "postfix": false, "binop": null }, - "start": 133084, - "end": 133085, + "start": 133598, + "end": 133599, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 14 }, "end": { - "line": 3310, + "line": 3318, "column": 15 } } @@ -456056,15 +459318,15 @@ "updateContext": null }, "value": "!", - "start": 133085, - "end": 133086, + "start": 133599, + "end": 133600, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 15 }, "end": { - "line": 3310, + "line": 3318, "column": 16 } } @@ -456082,15 +459344,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 133086, - "end": 133104, + "start": 133600, + "end": 133618, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 16 }, "end": { - "line": 3310, + "line": 3318, "column": 34 } } @@ -456107,15 +459369,15 @@ "postfix": false, "binop": null }, - "start": 133104, - "end": 133105, + "start": 133618, + "end": 133619, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 34 }, "end": { - "line": 3310, + "line": 3318, "column": 35 } } @@ -456132,15 +459394,15 @@ "postfix": false, "binop": null }, - "start": 133106, - "end": 133107, + "start": 133620, + "end": 133621, "loc": { "start": { - "line": 3310, + "line": 3318, "column": 36 }, "end": { - "line": 3310, + "line": 3318, "column": 37 } } @@ -456160,15 +459422,15 @@ "updateContext": null }, "value": "switch", - "start": 133120, - "end": 133126, + "start": 133634, + "end": 133640, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 12 }, "end": { - "line": 3311, + "line": 3319, "column": 18 } } @@ -456185,15 +459447,15 @@ "postfix": false, "binop": null }, - "start": 133127, - "end": 133128, + "start": 133641, + "end": 133642, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 19 }, "end": { - "line": 3311, + "line": 3319, "column": 20 } } @@ -456211,15 +459473,15 @@ "binop": null }, "value": "geometry", - "start": 133128, - "end": 133136, + "start": 133642, + "end": 133650, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 20 }, "end": { - "line": 3311, + "line": 3319, "column": 28 } } @@ -456237,15 +459499,15 @@ "binop": null, "updateContext": null }, - "start": 133136, - "end": 133137, + "start": 133650, + "end": 133651, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 28 }, "end": { - "line": 3311, + "line": 3319, "column": 29 } } @@ -456263,15 +459525,15 @@ "binop": null }, "value": "primitive", - "start": 133137, - "end": 133146, + "start": 133651, + "end": 133660, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 29 }, "end": { - "line": 3311, + "line": 3319, "column": 38 } } @@ -456288,15 +459550,15 @@ "postfix": false, "binop": null }, - "start": 133146, - "end": 133147, + "start": 133660, + "end": 133661, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 38 }, "end": { - "line": 3311, + "line": 3319, "column": 39 } } @@ -456313,15 +459575,15 @@ "postfix": false, "binop": null }, - "start": 133148, - "end": 133149, + "start": 133662, + "end": 133663, "loc": { "start": { - "line": 3311, + "line": 3319, "column": 40 }, "end": { - "line": 3311, + "line": 3319, "column": 41 } } @@ -456341,15 +459603,15 @@ "updateContext": null }, "value": "case", - "start": 133166, - "end": 133170, + "start": 133680, + "end": 133684, "loc": { "start": { - "line": 3312, + "line": 3320, "column": 16 }, "end": { - "line": 3312, + "line": 3320, "column": 20 } } @@ -456368,15 +459630,15 @@ "updateContext": null }, "value": "triangles", - "start": 133171, - "end": 133182, + "start": 133685, + "end": 133696, "loc": { "start": { - "line": 3312, + "line": 3320, "column": 21 }, "end": { - "line": 3312, + "line": 3320, "column": 32 } } @@ -456394,15 +459656,15 @@ "binop": null, "updateContext": null }, - "start": 133182, - "end": 133183, + "start": 133696, + "end": 133697, "loc": { "start": { - "line": 3312, + "line": 3320, "column": 32 }, "end": { - "line": 3312, + "line": 3320, "column": 33 } } @@ -456410,15 +459672,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 133204, - "end": 133282, + "start": 133718, + "end": 133796, "loc": { "start": { - "line": 3313, + "line": 3321, "column": 20 }, "end": { - "line": 3313, + "line": 3321, "column": 98 } } @@ -456436,15 +459698,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 133303, - "end": 133321, + "start": 133817, + "end": 133835, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 20 }, "end": { - "line": 3314, + "line": 3322, "column": 38 } } @@ -456463,15 +459725,15 @@ "updateContext": null }, "value": "=", - "start": 133322, - "end": 133323, + "start": 133836, + "end": 133837, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 39 }, "end": { - "line": 3314, + "line": 3322, "column": 40 } } @@ -456491,15 +459753,15 @@ "updateContext": null }, "value": "new", - "start": 133324, - "end": 133327, + "start": 133838, + "end": 133841, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 41 }, "end": { - "line": 3314, + "line": 3322, "column": 44 } } @@ -456517,15 +459779,15 @@ "binop": null }, "value": "VBOInstancingTrianglesLayer", - "start": 133328, - "end": 133355, + "start": 133842, + "end": 133869, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 45 }, "end": { - "line": 3314, + "line": 3322, "column": 72 } } @@ -456542,15 +459804,15 @@ "postfix": false, "binop": null }, - "start": 133355, - "end": 133356, + "start": 133869, + "end": 133870, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 72 }, "end": { - "line": 3314, + "line": 3322, "column": 73 } } @@ -456567,15 +459829,15 @@ "postfix": false, "binop": null }, - "start": 133356, - "end": 133357, + "start": 133870, + "end": 133871, "loc": { "start": { - "line": 3314, + "line": 3322, "column": 73 }, "end": { - "line": 3314, + "line": 3322, "column": 74 } } @@ -456593,15 +459855,15 @@ "binop": null }, "value": "model", - "start": 133382, - "end": 133387, + "start": 133896, + "end": 133901, "loc": { "start": { - "line": 3315, + "line": 3323, "column": 24 }, "end": { - "line": 3315, + "line": 3323, "column": 29 } } @@ -456619,15 +459881,15 @@ "binop": null, "updateContext": null }, - "start": 133387, - "end": 133388, + "start": 133901, + "end": 133902, "loc": { "start": { - "line": 3315, + "line": 3323, "column": 29 }, "end": { - "line": 3315, + "line": 3323, "column": 30 } } @@ -456645,15 +459907,15 @@ "binop": null }, "value": "textureSet", - "start": 133413, - "end": 133423, + "start": 133927, + "end": 133937, "loc": { "start": { - "line": 3316, + "line": 3324, "column": 24 }, "end": { - "line": 3316, + "line": 3324, "column": 34 } } @@ -456671,15 +459933,15 @@ "binop": null, "updateContext": null }, - "start": 133423, - "end": 133424, + "start": 133937, + "end": 133938, "loc": { "start": { - "line": 3316, + "line": 3324, "column": 34 }, "end": { - "line": 3316, + "line": 3324, "column": 35 } } @@ -456697,15 +459959,15 @@ "binop": null }, "value": "geometry", - "start": 133449, - "end": 133457, + "start": 133963, + "end": 133971, "loc": { "start": { - "line": 3317, + "line": 3325, "column": 24 }, "end": { - "line": 3317, + "line": 3325, "column": 32 } } @@ -456723,15 +459985,15 @@ "binop": null, "updateContext": null }, - "start": 133457, - "end": 133458, + "start": 133971, + "end": 133972, "loc": { "start": { - "line": 3317, + "line": 3325, "column": 32 }, "end": { - "line": 3317, + "line": 3325, "column": 33 } } @@ -456749,15 +460011,15 @@ "binop": null }, "value": "origin", - "start": 133483, - "end": 133489, + "start": 133997, + "end": 134003, "loc": { "start": { - "line": 3318, + "line": 3326, "column": 24 }, "end": { - "line": 3318, + "line": 3326, "column": 30 } } @@ -456775,15 +460037,15 @@ "binop": null, "updateContext": null }, - "start": 133489, - "end": 133490, + "start": 134003, + "end": 134004, "loc": { "start": { - "line": 3318, + "line": 3326, "column": 30 }, "end": { - "line": 3318, + "line": 3326, "column": 31 } } @@ -456801,15 +460063,15 @@ "binop": null }, "value": "layerIndex", - "start": 133515, - "end": 133525, + "start": 134029, + "end": 134039, "loc": { "start": { - "line": 3319, + "line": 3327, "column": 24 }, "end": { - "line": 3319, + "line": 3327, "column": 34 } } @@ -456827,15 +460089,15 @@ "binop": null, "updateContext": null }, - "start": 133525, - "end": 133526, + "start": 134039, + "end": 134040, "loc": { "start": { - "line": 3319, + "line": 3327, "column": 34 }, "end": { - "line": 3319, + "line": 3327, "column": 35 } } @@ -456854,15 +460116,15 @@ "updateContext": null }, "value": 0, - "start": 133527, - "end": 133528, + "start": 134041, + "end": 134042, "loc": { "start": { - "line": 3319, + "line": 3327, "column": 36 }, "end": { - "line": 3319, + "line": 3327, "column": 37 } } @@ -456880,15 +460142,15 @@ "binop": null, "updateContext": null }, - "start": 133528, - "end": 133529, + "start": 134042, + "end": 134043, "loc": { "start": { - "line": 3319, + "line": 3327, "column": 37 }, "end": { - "line": 3319, + "line": 3327, "column": 38 } } @@ -456906,15 +460168,15 @@ "binop": null }, "value": "solid", - "start": 133554, - "end": 133559, + "start": 134068, + "end": 134073, "loc": { "start": { - "line": 3320, + "line": 3328, "column": 24 }, "end": { - "line": 3320, + "line": 3328, "column": 29 } } @@ -456932,15 +460194,15 @@ "binop": null, "updateContext": null }, - "start": 133559, - "end": 133560, + "start": 134073, + "end": 134074, "loc": { "start": { - "line": 3320, + "line": 3328, "column": 29 }, "end": { - "line": 3320, + "line": 3328, "column": 30 } } @@ -456960,15 +460222,15 @@ "updateContext": null }, "value": "false", - "start": 133561, - "end": 133566, + "start": 134075, + "end": 134080, "loc": { "start": { - "line": 3320, + "line": 3328, "column": 31 }, "end": { - "line": 3320, + "line": 3328, "column": 36 } } @@ -456985,15 +460247,15 @@ "postfix": false, "binop": null }, - "start": 133587, - "end": 133588, + "start": 134101, + "end": 134102, "loc": { "start": { - "line": 3321, + "line": 3329, "column": 20 }, "end": { - "line": 3321, + "line": 3329, "column": 21 } } @@ -457010,15 +460272,15 @@ "postfix": false, "binop": null }, - "start": 133588, - "end": 133589, + "start": 134102, + "end": 134103, "loc": { "start": { - "line": 3321, + "line": 3329, "column": 21 }, "end": { - "line": 3321, + "line": 3329, "column": 22 } } @@ -457036,15 +460298,15 @@ "binop": null, "updateContext": null }, - "start": 133589, - "end": 133590, + "start": 134103, + "end": 134104, "loc": { "start": { - "line": 3321, + "line": 3329, "column": 22 }, "end": { - "line": 3321, + "line": 3329, "column": 23 } } @@ -457064,15 +460326,15 @@ "updateContext": null }, "value": "break", - "start": 133611, - "end": 133616, + "start": 134125, + "end": 134130, "loc": { "start": { - "line": 3322, + "line": 3330, "column": 20 }, "end": { - "line": 3322, + "line": 3330, "column": 25 } } @@ -457090,15 +460352,15 @@ "binop": null, "updateContext": null }, - "start": 133616, - "end": 133617, + "start": 134130, + "end": 134131, "loc": { "start": { - "line": 3322, + "line": 3330, "column": 25 }, "end": { - "line": 3322, + "line": 3330, "column": 26 } } @@ -457118,15 +460380,15 @@ "updateContext": null }, "value": "case", - "start": 133634, - "end": 133638, + "start": 134148, + "end": 134152, "loc": { "start": { - "line": 3323, + "line": 3331, "column": 16 }, "end": { - "line": 3323, + "line": 3331, "column": 20 } } @@ -457145,15 +460407,15 @@ "updateContext": null }, "value": "solid", - "start": 133639, - "end": 133646, + "start": 134153, + "end": 134160, "loc": { "start": { - "line": 3323, + "line": 3331, "column": 21 }, "end": { - "line": 3323, + "line": 3331, "column": 28 } } @@ -457171,15 +460433,15 @@ "binop": null, "updateContext": null }, - "start": 133646, - "end": 133647, + "start": 134160, + "end": 134161, "loc": { "start": { - "line": 3323, + "line": 3331, "column": 28 }, "end": { - "line": 3323, + "line": 3331, "column": 29 } } @@ -457187,15 +460449,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 133668, - "end": 133746, + "start": 134182, + "end": 134260, "loc": { "start": { - "line": 3324, + "line": 3332, "column": 20 }, "end": { - "line": 3324, + "line": 3332, "column": 98 } } @@ -457213,15 +460475,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 133767, - "end": 133785, + "start": 134281, + "end": 134299, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 20 }, "end": { - "line": 3325, + "line": 3333, "column": 38 } } @@ -457240,15 +460502,15 @@ "updateContext": null }, "value": "=", - "start": 133786, - "end": 133787, + "start": 134300, + "end": 134301, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 39 }, "end": { - "line": 3325, + "line": 3333, "column": 40 } } @@ -457268,15 +460530,15 @@ "updateContext": null }, "value": "new", - "start": 133788, - "end": 133791, + "start": 134302, + "end": 134305, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 41 }, "end": { - "line": 3325, + "line": 3333, "column": 44 } } @@ -457294,15 +460556,15 @@ "binop": null }, "value": "VBOInstancingTrianglesLayer", - "start": 133792, - "end": 133819, + "start": 134306, + "end": 134333, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 45 }, "end": { - "line": 3325, + "line": 3333, "column": 72 } } @@ -457319,15 +460581,15 @@ "postfix": false, "binop": null }, - "start": 133819, - "end": 133820, + "start": 134333, + "end": 134334, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 72 }, "end": { - "line": 3325, + "line": 3333, "column": 73 } } @@ -457344,15 +460606,15 @@ "postfix": false, "binop": null }, - "start": 133820, - "end": 133821, + "start": 134334, + "end": 134335, "loc": { "start": { - "line": 3325, + "line": 3333, "column": 73 }, "end": { - "line": 3325, + "line": 3333, "column": 74 } } @@ -457370,15 +460632,15 @@ "binop": null }, "value": "model", - "start": 133846, - "end": 133851, + "start": 134360, + "end": 134365, "loc": { "start": { - "line": 3326, + "line": 3334, "column": 24 }, "end": { - "line": 3326, + "line": 3334, "column": 29 } } @@ -457396,15 +460658,15 @@ "binop": null, "updateContext": null }, - "start": 133851, - "end": 133852, + "start": 134365, + "end": 134366, "loc": { "start": { - "line": 3326, + "line": 3334, "column": 29 }, "end": { - "line": 3326, + "line": 3334, "column": 30 } } @@ -457422,15 +460684,15 @@ "binop": null }, "value": "textureSet", - "start": 133877, - "end": 133887, + "start": 134391, + "end": 134401, "loc": { "start": { - "line": 3327, + "line": 3335, "column": 24 }, "end": { - "line": 3327, + "line": 3335, "column": 34 } } @@ -457448,15 +460710,15 @@ "binop": null, "updateContext": null }, - "start": 133887, - "end": 133888, + "start": 134401, + "end": 134402, "loc": { "start": { - "line": 3327, + "line": 3335, "column": 34 }, "end": { - "line": 3327, + "line": 3335, "column": 35 } } @@ -457474,15 +460736,15 @@ "binop": null }, "value": "geometry", - "start": 133913, - "end": 133921, + "start": 134427, + "end": 134435, "loc": { "start": { - "line": 3328, + "line": 3336, "column": 24 }, "end": { - "line": 3328, + "line": 3336, "column": 32 } } @@ -457500,15 +460762,15 @@ "binop": null, "updateContext": null }, - "start": 133921, - "end": 133922, + "start": 134435, + "end": 134436, "loc": { "start": { - "line": 3328, + "line": 3336, "column": 32 }, "end": { - "line": 3328, + "line": 3336, "column": 33 } } @@ -457526,15 +460788,15 @@ "binop": null }, "value": "origin", - "start": 133947, - "end": 133953, + "start": 134461, + "end": 134467, "loc": { "start": { - "line": 3329, + "line": 3337, "column": 24 }, "end": { - "line": 3329, + "line": 3337, "column": 30 } } @@ -457552,15 +460814,15 @@ "binop": null, "updateContext": null }, - "start": 133953, - "end": 133954, + "start": 134467, + "end": 134468, "loc": { "start": { - "line": 3329, + "line": 3337, "column": 30 }, "end": { - "line": 3329, + "line": 3337, "column": 31 } } @@ -457578,15 +460840,15 @@ "binop": null }, "value": "layerIndex", - "start": 133979, - "end": 133989, + "start": 134493, + "end": 134503, "loc": { "start": { - "line": 3330, + "line": 3338, "column": 24 }, "end": { - "line": 3330, + "line": 3338, "column": 34 } } @@ -457604,15 +460866,15 @@ "binop": null, "updateContext": null }, - "start": 133989, - "end": 133990, + "start": 134503, + "end": 134504, "loc": { "start": { - "line": 3330, + "line": 3338, "column": 34 }, "end": { - "line": 3330, + "line": 3338, "column": 35 } } @@ -457631,15 +460893,15 @@ "updateContext": null }, "value": 0, - "start": 133991, - "end": 133992, + "start": 134505, + "end": 134506, "loc": { "start": { - "line": 3330, + "line": 3338, "column": 36 }, "end": { - "line": 3330, + "line": 3338, "column": 37 } } @@ -457657,15 +460919,15 @@ "binop": null, "updateContext": null }, - "start": 133992, - "end": 133993, + "start": 134506, + "end": 134507, "loc": { "start": { - "line": 3330, + "line": 3338, "column": 37 }, "end": { - "line": 3330, + "line": 3338, "column": 38 } } @@ -457683,15 +460945,15 @@ "binop": null }, "value": "solid", - "start": 134018, - "end": 134023, + "start": 134532, + "end": 134537, "loc": { "start": { - "line": 3331, + "line": 3339, "column": 24 }, "end": { - "line": 3331, + "line": 3339, "column": 29 } } @@ -457709,15 +460971,15 @@ "binop": null, "updateContext": null }, - "start": 134023, - "end": 134024, + "start": 134537, + "end": 134538, "loc": { "start": { - "line": 3331, + "line": 3339, "column": 29 }, "end": { - "line": 3331, + "line": 3339, "column": 30 } } @@ -457737,15 +460999,15 @@ "updateContext": null }, "value": "true", - "start": 134025, - "end": 134029, + "start": 134539, + "end": 134543, "loc": { "start": { - "line": 3331, + "line": 3339, "column": 31 }, "end": { - "line": 3331, + "line": 3339, "column": 35 } } @@ -457762,15 +461024,15 @@ "postfix": false, "binop": null }, - "start": 134050, - "end": 134051, + "start": 134564, + "end": 134565, "loc": { "start": { - "line": 3332, + "line": 3340, "column": 20 }, "end": { - "line": 3332, + "line": 3340, "column": 21 } } @@ -457787,15 +461049,15 @@ "postfix": false, "binop": null }, - "start": 134051, - "end": 134052, + "start": 134565, + "end": 134566, "loc": { "start": { - "line": 3332, + "line": 3340, "column": 21 }, "end": { - "line": 3332, + "line": 3340, "column": 22 } } @@ -457813,15 +461075,15 @@ "binop": null, "updateContext": null }, - "start": 134052, - "end": 134053, + "start": 134566, + "end": 134567, "loc": { "start": { - "line": 3332, + "line": 3340, "column": 22 }, "end": { - "line": 3332, + "line": 3340, "column": 23 } } @@ -457841,15 +461103,15 @@ "updateContext": null }, "value": "break", - "start": 134074, - "end": 134079, + "start": 134588, + "end": 134593, "loc": { "start": { - "line": 3333, + "line": 3341, "column": 20 }, "end": { - "line": 3333, + "line": 3341, "column": 25 } } @@ -457867,15 +461129,15 @@ "binop": null, "updateContext": null }, - "start": 134079, - "end": 134080, + "start": 134593, + "end": 134594, "loc": { "start": { - "line": 3333, + "line": 3341, "column": 25 }, "end": { - "line": 3333, + "line": 3341, "column": 26 } } @@ -457895,15 +461157,15 @@ "updateContext": null }, "value": "case", - "start": 134097, - "end": 134101, + "start": 134611, + "end": 134615, "loc": { "start": { - "line": 3334, + "line": 3342, "column": 16 }, "end": { - "line": 3334, + "line": 3342, "column": 20 } } @@ -457922,15 +461184,15 @@ "updateContext": null }, "value": "surface", - "start": 134102, - "end": 134111, + "start": 134616, + "end": 134625, "loc": { "start": { - "line": 3334, + "line": 3342, "column": 21 }, "end": { - "line": 3334, + "line": 3342, "column": 30 } } @@ -457948,15 +461210,15 @@ "binop": null, "updateContext": null }, - "start": 134111, - "end": 134112, + "start": 134625, + "end": 134626, "loc": { "start": { - "line": 3334, + "line": 3342, "column": 30 }, "end": { - "line": 3334, + "line": 3342, "column": 31 } } @@ -457964,15 +461226,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);", - "start": 134133, - "end": 134211, + "start": 134647, + "end": 134725, "loc": { "start": { - "line": 3335, + "line": 3343, "column": 20 }, "end": { - "line": 3335, + "line": 3343, "column": 98 } } @@ -457990,15 +461252,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 134232, - "end": 134250, + "start": 134746, + "end": 134764, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 20 }, "end": { - "line": 3336, + "line": 3344, "column": 38 } } @@ -458017,15 +461279,15 @@ "updateContext": null }, "value": "=", - "start": 134251, - "end": 134252, + "start": 134765, + "end": 134766, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 39 }, "end": { - "line": 3336, + "line": 3344, "column": 40 } } @@ -458045,15 +461307,15 @@ "updateContext": null }, "value": "new", - "start": 134253, - "end": 134256, + "start": 134767, + "end": 134770, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 41 }, "end": { - "line": 3336, + "line": 3344, "column": 44 } } @@ -458071,15 +461333,15 @@ "binop": null }, "value": "VBOInstancingTrianglesLayer", - "start": 134257, - "end": 134284, + "start": 134771, + "end": 134798, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 45 }, "end": { - "line": 3336, + "line": 3344, "column": 72 } } @@ -458096,15 +461358,15 @@ "postfix": false, "binop": null }, - "start": 134284, - "end": 134285, + "start": 134798, + "end": 134799, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 72 }, "end": { - "line": 3336, + "line": 3344, "column": 73 } } @@ -458121,15 +461383,15 @@ "postfix": false, "binop": null }, - "start": 134285, - "end": 134286, + "start": 134799, + "end": 134800, "loc": { "start": { - "line": 3336, + "line": 3344, "column": 73 }, "end": { - "line": 3336, + "line": 3344, "column": 74 } } @@ -458147,15 +461409,15 @@ "binop": null }, "value": "model", - "start": 134311, - "end": 134316, + "start": 134825, + "end": 134830, "loc": { "start": { - "line": 3337, + "line": 3345, "column": 24 }, "end": { - "line": 3337, + "line": 3345, "column": 29 } } @@ -458173,15 +461435,15 @@ "binop": null, "updateContext": null }, - "start": 134316, - "end": 134317, + "start": 134830, + "end": 134831, "loc": { "start": { - "line": 3337, + "line": 3345, "column": 29 }, "end": { - "line": 3337, + "line": 3345, "column": 30 } } @@ -458199,15 +461461,15 @@ "binop": null }, "value": "textureSet", - "start": 134342, - "end": 134352, + "start": 134856, + "end": 134866, "loc": { "start": { - "line": 3338, + "line": 3346, "column": 24 }, "end": { - "line": 3338, + "line": 3346, "column": 34 } } @@ -458225,15 +461487,15 @@ "binop": null, "updateContext": null }, - "start": 134352, - "end": 134353, + "start": 134866, + "end": 134867, "loc": { "start": { - "line": 3338, + "line": 3346, "column": 34 }, "end": { - "line": 3338, + "line": 3346, "column": 35 } } @@ -458251,15 +461513,15 @@ "binop": null }, "value": "geometry", - "start": 134378, - "end": 134386, + "start": 134892, + "end": 134900, "loc": { "start": { - "line": 3339, + "line": 3347, "column": 24 }, "end": { - "line": 3339, + "line": 3347, "column": 32 } } @@ -458277,15 +461539,15 @@ "binop": null, "updateContext": null }, - "start": 134386, - "end": 134387, + "start": 134900, + "end": 134901, "loc": { "start": { - "line": 3339, + "line": 3347, "column": 32 }, "end": { - "line": 3339, + "line": 3347, "column": 33 } } @@ -458303,15 +461565,15 @@ "binop": null }, "value": "origin", - "start": 134412, - "end": 134418, + "start": 134926, + "end": 134932, "loc": { "start": { - "line": 3340, + "line": 3348, "column": 24 }, "end": { - "line": 3340, + "line": 3348, "column": 30 } } @@ -458329,15 +461591,15 @@ "binop": null, "updateContext": null }, - "start": 134418, - "end": 134419, + "start": 134932, + "end": 134933, "loc": { "start": { - "line": 3340, + "line": 3348, "column": 30 }, "end": { - "line": 3340, + "line": 3348, "column": 31 } } @@ -458355,15 +461617,15 @@ "binop": null }, "value": "layerIndex", - "start": 134444, - "end": 134454, + "start": 134958, + "end": 134968, "loc": { "start": { - "line": 3341, + "line": 3349, "column": 24 }, "end": { - "line": 3341, + "line": 3349, "column": 34 } } @@ -458381,15 +461643,15 @@ "binop": null, "updateContext": null }, - "start": 134454, - "end": 134455, + "start": 134968, + "end": 134969, "loc": { "start": { - "line": 3341, + "line": 3349, "column": 34 }, "end": { - "line": 3341, + "line": 3349, "column": 35 } } @@ -458408,15 +461670,15 @@ "updateContext": null }, "value": 0, - "start": 134456, - "end": 134457, + "start": 134970, + "end": 134971, "loc": { "start": { - "line": 3341, + "line": 3349, "column": 36 }, "end": { - "line": 3341, + "line": 3349, "column": 37 } } @@ -458434,15 +461696,15 @@ "binop": null, "updateContext": null }, - "start": 134457, - "end": 134458, + "start": 134971, + "end": 134972, "loc": { "start": { - "line": 3341, + "line": 3349, "column": 37 }, "end": { - "line": 3341, + "line": 3349, "column": 38 } } @@ -458460,15 +461722,15 @@ "binop": null }, "value": "solid", - "start": 134483, - "end": 134488, + "start": 134997, + "end": 135002, "loc": { "start": { - "line": 3342, + "line": 3350, "column": 24 }, "end": { - "line": 3342, + "line": 3350, "column": 29 } } @@ -458486,15 +461748,15 @@ "binop": null, "updateContext": null }, - "start": 134488, - "end": 134489, + "start": 135002, + "end": 135003, "loc": { "start": { - "line": 3342, + "line": 3350, "column": 29 }, "end": { - "line": 3342, + "line": 3350, "column": 30 } } @@ -458514,15 +461776,15 @@ "updateContext": null }, "value": "false", - "start": 134490, - "end": 134495, + "start": 135004, + "end": 135009, "loc": { "start": { - "line": 3342, + "line": 3350, "column": 31 }, "end": { - "line": 3342, + "line": 3350, "column": 36 } } @@ -458539,15 +461801,15 @@ "postfix": false, "binop": null }, - "start": 134516, - "end": 134517, + "start": 135030, + "end": 135031, "loc": { "start": { - "line": 3343, + "line": 3351, "column": 20 }, "end": { - "line": 3343, + "line": 3351, "column": 21 } } @@ -458564,15 +461826,15 @@ "postfix": false, "binop": null }, - "start": 134517, - "end": 134518, + "start": 135031, + "end": 135032, "loc": { "start": { - "line": 3343, + "line": 3351, "column": 21 }, "end": { - "line": 3343, + "line": 3351, "column": 22 } } @@ -458590,15 +461852,15 @@ "binop": null, "updateContext": null }, - "start": 134518, - "end": 134519, + "start": 135032, + "end": 135033, "loc": { "start": { - "line": 3343, + "line": 3351, "column": 22 }, "end": { - "line": 3343, + "line": 3351, "column": 23 } } @@ -458618,15 +461880,15 @@ "updateContext": null }, "value": "break", - "start": 134540, - "end": 134545, + "start": 135054, + "end": 135059, "loc": { "start": { - "line": 3344, + "line": 3352, "column": 20 }, "end": { - "line": 3344, + "line": 3352, "column": 25 } } @@ -458644,15 +461906,15 @@ "binop": null, "updateContext": null }, - "start": 134545, - "end": 134546, + "start": 135059, + "end": 135060, "loc": { "start": { - "line": 3344, + "line": 3352, "column": 25 }, "end": { - "line": 3344, + "line": 3352, "column": 26 } } @@ -458672,15 +461934,15 @@ "updateContext": null }, "value": "case", - "start": 134563, - "end": 134567, + "start": 135077, + "end": 135081, "loc": { "start": { - "line": 3345, + "line": 3353, "column": 16 }, "end": { - "line": 3345, + "line": 3353, "column": 20 } } @@ -458699,15 +461961,15 @@ "updateContext": null }, "value": "lines", - "start": 134568, - "end": 134575, + "start": 135082, + "end": 135089, "loc": { "start": { - "line": 3345, + "line": 3353, "column": 21 }, "end": { - "line": 3345, + "line": 3353, "column": 28 } } @@ -458725,15 +461987,15 @@ "binop": null, "updateContext": null }, - "start": 134575, - "end": 134576, + "start": 135089, + "end": 135090, "loc": { "start": { - "line": 3345, + "line": 3353, "column": 28 }, "end": { - "line": 3345, + "line": 3353, "column": 29 } } @@ -458741,15 +462003,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating VBOInstancingLinesLayer`);", - "start": 134597, - "end": 134674, + "start": 135111, + "end": 135188, "loc": { "start": { - "line": 3346, + "line": 3354, "column": 20 }, "end": { - "line": 3346, + "line": 3354, "column": 97 } } @@ -458767,15 +462029,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 134695, - "end": 134713, + "start": 135209, + "end": 135227, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 20 }, "end": { - "line": 3347, + "line": 3355, "column": 38 } } @@ -458794,15 +462056,15 @@ "updateContext": null }, "value": "=", - "start": 134714, - "end": 134715, + "start": 135228, + "end": 135229, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 39 }, "end": { - "line": 3347, + "line": 3355, "column": 40 } } @@ -458822,15 +462084,15 @@ "updateContext": null }, "value": "new", - "start": 134716, - "end": 134719, + "start": 135230, + "end": 135233, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 41 }, "end": { - "line": 3347, + "line": 3355, "column": 44 } } @@ -458848,15 +462110,15 @@ "binop": null }, "value": "VBOInstancingLinesLayer", - "start": 134720, - "end": 134743, + "start": 135234, + "end": 135257, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 45 }, "end": { - "line": 3347, + "line": 3355, "column": 68 } } @@ -458873,15 +462135,15 @@ "postfix": false, "binop": null }, - "start": 134743, - "end": 134744, + "start": 135257, + "end": 135258, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 68 }, "end": { - "line": 3347, + "line": 3355, "column": 69 } } @@ -458898,15 +462160,15 @@ "postfix": false, "binop": null }, - "start": 134744, - "end": 134745, + "start": 135258, + "end": 135259, "loc": { "start": { - "line": 3347, + "line": 3355, "column": 69 }, "end": { - "line": 3347, + "line": 3355, "column": 70 } } @@ -458924,15 +462186,15 @@ "binop": null }, "value": "model", - "start": 134770, - "end": 134775, + "start": 135284, + "end": 135289, "loc": { "start": { - "line": 3348, + "line": 3356, "column": 24 }, "end": { - "line": 3348, + "line": 3356, "column": 29 } } @@ -458950,15 +462212,15 @@ "binop": null, "updateContext": null }, - "start": 134775, - "end": 134776, + "start": 135289, + "end": 135290, "loc": { "start": { - "line": 3348, + "line": 3356, "column": 29 }, "end": { - "line": 3348, + "line": 3356, "column": 30 } } @@ -458976,15 +462238,15 @@ "binop": null }, "value": "textureSet", - "start": 134801, - "end": 134811, + "start": 135315, + "end": 135325, "loc": { "start": { - "line": 3349, + "line": 3357, "column": 24 }, "end": { - "line": 3349, + "line": 3357, "column": 34 } } @@ -459002,15 +462264,15 @@ "binop": null, "updateContext": null }, - "start": 134811, - "end": 134812, + "start": 135325, + "end": 135326, "loc": { "start": { - "line": 3349, + "line": 3357, "column": 34 }, "end": { - "line": 3349, + "line": 3357, "column": 35 } } @@ -459028,15 +462290,15 @@ "binop": null }, "value": "geometry", - "start": 134837, - "end": 134845, + "start": 135351, + "end": 135359, "loc": { "start": { - "line": 3350, + "line": 3358, "column": 24 }, "end": { - "line": 3350, + "line": 3358, "column": 32 } } @@ -459054,15 +462316,15 @@ "binop": null, "updateContext": null }, - "start": 134845, - "end": 134846, + "start": 135359, + "end": 135360, "loc": { "start": { - "line": 3350, + "line": 3358, "column": 32 }, "end": { - "line": 3350, + "line": 3358, "column": 33 } } @@ -459080,15 +462342,15 @@ "binop": null }, "value": "origin", - "start": 134871, - "end": 134877, + "start": 135385, + "end": 135391, "loc": { "start": { - "line": 3351, + "line": 3359, "column": 24 }, "end": { - "line": 3351, + "line": 3359, "column": 30 } } @@ -459106,15 +462368,15 @@ "binop": null, "updateContext": null }, - "start": 134877, - "end": 134878, + "start": 135391, + "end": 135392, "loc": { "start": { - "line": 3351, + "line": 3359, "column": 30 }, "end": { - "line": 3351, + "line": 3359, "column": 31 } } @@ -459132,15 +462394,15 @@ "binop": null }, "value": "layerIndex", - "start": 134903, - "end": 134913, + "start": 135417, + "end": 135427, "loc": { "start": { - "line": 3352, + "line": 3360, "column": 24 }, "end": { - "line": 3352, + "line": 3360, "column": 34 } } @@ -459158,15 +462420,15 @@ "binop": null, "updateContext": null }, - "start": 134913, - "end": 134914, + "start": 135427, + "end": 135428, "loc": { "start": { - "line": 3352, + "line": 3360, "column": 34 }, "end": { - "line": 3352, + "line": 3360, "column": 35 } } @@ -459185,15 +462447,15 @@ "updateContext": null }, "value": 0, - "start": 134915, - "end": 134916, + "start": 135429, + "end": 135430, "loc": { "start": { - "line": 3352, + "line": 3360, "column": 36 }, "end": { - "line": 3352, + "line": 3360, "column": 37 } } @@ -459210,15 +462472,15 @@ "postfix": false, "binop": null }, - "start": 134937, - "end": 134938, + "start": 135451, + "end": 135452, "loc": { "start": { - "line": 3353, + "line": 3361, "column": 20 }, "end": { - "line": 3353, + "line": 3361, "column": 21 } } @@ -459235,15 +462497,15 @@ "postfix": false, "binop": null }, - "start": 134938, - "end": 134939, + "start": 135452, + "end": 135453, "loc": { "start": { - "line": 3353, + "line": 3361, "column": 21 }, "end": { - "line": 3353, + "line": 3361, "column": 22 } } @@ -459261,15 +462523,15 @@ "binop": null, "updateContext": null }, - "start": 134939, - "end": 134940, + "start": 135453, + "end": 135454, "loc": { "start": { - "line": 3353, + "line": 3361, "column": 22 }, "end": { - "line": 3353, + "line": 3361, "column": 23 } } @@ -459289,15 +462551,15 @@ "updateContext": null }, "value": "break", - "start": 134961, - "end": 134966, + "start": 135475, + "end": 135480, "loc": { "start": { - "line": 3354, + "line": 3362, "column": 20 }, "end": { - "line": 3354, + "line": 3362, "column": 25 } } @@ -459315,15 +462577,15 @@ "binop": null, "updateContext": null }, - "start": 134966, - "end": 134967, + "start": 135480, + "end": 135481, "loc": { "start": { - "line": 3354, + "line": 3362, "column": 25 }, "end": { - "line": 3354, + "line": 3362, "column": 26 } } @@ -459343,15 +462605,15 @@ "updateContext": null }, "value": "case", - "start": 134984, - "end": 134988, + "start": 135498, + "end": 135502, "loc": { "start": { - "line": 3355, + "line": 3363, "column": 16 }, "end": { - "line": 3355, + "line": 3363, "column": 20 } } @@ -459370,15 +462632,15 @@ "updateContext": null }, "value": "points", - "start": 134989, - "end": 134997, + "start": 135503, + "end": 135511, "loc": { "start": { - "line": 3355, + "line": 3363, "column": 21 }, "end": { - "line": 3355, + "line": 3363, "column": 29 } } @@ -459396,15 +462658,15 @@ "binop": null, "updateContext": null }, - "start": 134997, - "end": 134998, + "start": 135511, + "end": 135512, "loc": { "start": { - "line": 3355, + "line": 3363, "column": 29 }, "end": { - "line": 3355, + "line": 3363, "column": 30 } } @@ -459412,15 +462674,15 @@ { "type": "CommentLine", "value": " console.info(`[SceneModel ${this.id}]: creating PointsInstancingLayer`);", - "start": 135019, - "end": 135094, + "start": 135533, + "end": 135608, "loc": { "start": { - "line": 3356, + "line": 3364, "column": 20 }, "end": { - "line": 3356, + "line": 3364, "column": 95 } } @@ -459438,15 +462700,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 135115, - "end": 135133, + "start": 135629, + "end": 135647, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 20 }, "end": { - "line": 3357, + "line": 3365, "column": 38 } } @@ -459465,15 +462727,15 @@ "updateContext": null }, "value": "=", - "start": 135134, - "end": 135135, + "start": 135648, + "end": 135649, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 39 }, "end": { - "line": 3357, + "line": 3365, "column": 40 } } @@ -459493,15 +462755,15 @@ "updateContext": null }, "value": "new", - "start": 135136, - "end": 135139, + "start": 135650, + "end": 135653, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 41 }, "end": { - "line": 3357, + "line": 3365, "column": 44 } } @@ -459519,15 +462781,15 @@ "binop": null }, "value": "VBOInstancingPointsLayer", - "start": 135140, - "end": 135164, + "start": 135654, + "end": 135678, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 45 }, "end": { - "line": 3357, + "line": 3365, "column": 69 } } @@ -459544,15 +462806,15 @@ "postfix": false, "binop": null }, - "start": 135164, - "end": 135165, + "start": 135678, + "end": 135679, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 69 }, "end": { - "line": 3357, + "line": 3365, "column": 70 } } @@ -459569,15 +462831,15 @@ "postfix": false, "binop": null }, - "start": 135165, - "end": 135166, + "start": 135679, + "end": 135680, "loc": { "start": { - "line": 3357, + "line": 3365, "column": 70 }, "end": { - "line": 3357, + "line": 3365, "column": 71 } } @@ -459595,15 +462857,15 @@ "binop": null }, "value": "model", - "start": 135191, - "end": 135196, + "start": 135705, + "end": 135710, "loc": { "start": { - "line": 3358, + "line": 3366, "column": 24 }, "end": { - "line": 3358, + "line": 3366, "column": 29 } } @@ -459621,15 +462883,15 @@ "binop": null, "updateContext": null }, - "start": 135196, - "end": 135197, + "start": 135710, + "end": 135711, "loc": { "start": { - "line": 3358, + "line": 3366, "column": 29 }, "end": { - "line": 3358, + "line": 3366, "column": 30 } } @@ -459647,15 +462909,15 @@ "binop": null }, "value": "textureSet", - "start": 135222, - "end": 135232, + "start": 135736, + "end": 135746, "loc": { "start": { - "line": 3359, + "line": 3367, "column": 24 }, "end": { - "line": 3359, + "line": 3367, "column": 34 } } @@ -459673,15 +462935,15 @@ "binop": null, "updateContext": null }, - "start": 135232, - "end": 135233, + "start": 135746, + "end": 135747, "loc": { "start": { - "line": 3359, + "line": 3367, "column": 34 }, "end": { - "line": 3359, + "line": 3367, "column": 35 } } @@ -459699,15 +462961,15 @@ "binop": null }, "value": "geometry", - "start": 135258, - "end": 135266, + "start": 135772, + "end": 135780, "loc": { "start": { - "line": 3360, + "line": 3368, "column": 24 }, "end": { - "line": 3360, + "line": 3368, "column": 32 } } @@ -459725,15 +462987,15 @@ "binop": null, "updateContext": null }, - "start": 135266, - "end": 135267, + "start": 135780, + "end": 135781, "loc": { "start": { - "line": 3360, + "line": 3368, "column": 32 }, "end": { - "line": 3360, + "line": 3368, "column": 33 } } @@ -459751,15 +463013,15 @@ "binop": null }, "value": "origin", - "start": 135292, - "end": 135298, + "start": 135806, + "end": 135812, "loc": { "start": { - "line": 3361, + "line": 3369, "column": 24 }, "end": { - "line": 3361, + "line": 3369, "column": 30 } } @@ -459777,15 +463039,15 @@ "binop": null, "updateContext": null }, - "start": 135298, - "end": 135299, + "start": 135812, + "end": 135813, "loc": { "start": { - "line": 3361, + "line": 3369, "column": 30 }, "end": { - "line": 3361, + "line": 3369, "column": 31 } } @@ -459803,15 +463065,15 @@ "binop": null }, "value": "layerIndex", - "start": 135324, - "end": 135334, + "start": 135838, + "end": 135848, "loc": { "start": { - "line": 3362, + "line": 3370, "column": 24 }, "end": { - "line": 3362, + "line": 3370, "column": 34 } } @@ -459829,15 +463091,15 @@ "binop": null, "updateContext": null }, - "start": 135334, - "end": 135335, + "start": 135848, + "end": 135849, "loc": { "start": { - "line": 3362, + "line": 3370, "column": 34 }, "end": { - "line": 3362, + "line": 3370, "column": 35 } } @@ -459856,15 +463118,15 @@ "updateContext": null }, "value": 0, - "start": 135336, - "end": 135337, + "start": 135850, + "end": 135851, "loc": { "start": { - "line": 3362, + "line": 3370, "column": 36 }, "end": { - "line": 3362, + "line": 3370, "column": 37 } } @@ -459881,15 +463143,15 @@ "postfix": false, "binop": null }, - "start": 135358, - "end": 135359, + "start": 135872, + "end": 135873, "loc": { "start": { - "line": 3363, + "line": 3371, "column": 20 }, "end": { - "line": 3363, + "line": 3371, "column": 21 } } @@ -459906,15 +463168,15 @@ "postfix": false, "binop": null }, - "start": 135359, - "end": 135360, + "start": 135873, + "end": 135874, "loc": { "start": { - "line": 3363, + "line": 3371, "column": 21 }, "end": { - "line": 3363, + "line": 3371, "column": 22 } } @@ -459932,15 +463194,15 @@ "binop": null, "updateContext": null }, - "start": 135360, - "end": 135361, + "start": 135874, + "end": 135875, "loc": { "start": { - "line": 3363, + "line": 3371, "column": 22 }, "end": { - "line": 3363, + "line": 3371, "column": 23 } } @@ -459960,15 +463222,15 @@ "updateContext": null }, "value": "break", - "start": 135382, - "end": 135387, + "start": 135896, + "end": 135901, "loc": { "start": { - "line": 3364, + "line": 3372, "column": 20 }, "end": { - "line": 3364, + "line": 3372, "column": 25 } } @@ -459986,15 +463248,15 @@ "binop": null, "updateContext": null }, - "start": 135387, - "end": 135388, + "start": 135901, + "end": 135902, "loc": { "start": { - "line": 3364, + "line": 3372, "column": 25 }, "end": { - "line": 3364, + "line": 3372, "column": 26 } } @@ -460011,15 +463273,15 @@ "postfix": false, "binop": null }, - "start": 135401, - "end": 135402, + "start": 135915, + "end": 135916, "loc": { "start": { - "line": 3365, + "line": 3373, "column": 12 }, "end": { - "line": 3365, + "line": 3373, "column": 13 } } @@ -460027,15 +463289,15 @@ { "type": "CommentLine", "value": " const lenPositions = geometry.positionsCompressed.length;", - "start": 135415, - "end": 135475, + "start": 135929, + "end": 135989, "loc": { "start": { - "line": 3366, + "line": 3374, "column": 12 }, "end": { - "line": 3366, + "line": 3374, "column": 72 } } @@ -460043,15 +463305,15 @@ { "type": "CommentLine", "value": " if (!vboInstancingLayer.canCreatePortion(lenPositions, geometry.indices.length)) { // FIXME: indices should be optional", - "start": 135488, - "end": 135610, + "start": 136002, + "end": 136124, "loc": { "start": { - "line": 3367, + "line": 3375, "column": 12 }, "end": { - "line": 3367, + "line": 3375, "column": 134 } } @@ -460059,15 +463321,15 @@ { "type": "CommentLine", "value": " vboInstancingLayer.finalize();", - "start": 135623, - "end": 135660, + "start": 136137, + "end": 136174, "loc": { "start": { - "line": 3368, + "line": 3376, "column": 12 }, "end": { - "line": 3368, + "line": 3376, "column": 49 } } @@ -460075,15 +463337,15 @@ { "type": "CommentLine", "value": " delete this._vboInstancingLayers[layerId];", - "start": 135673, - "end": 135722, + "start": 136187, + "end": 136236, "loc": { "start": { - "line": 3369, + "line": 3377, "column": 12 }, "end": { - "line": 3369, + "line": 3377, "column": 61 } } @@ -460091,15 +463353,15 @@ { "type": "CommentLine", "value": " vboInstancingLayer = null;", - "start": 135735, - "end": 135768, + "start": 136249, + "end": 136282, "loc": { "start": { - "line": 3370, + "line": 3378, "column": 12 }, "end": { - "line": 3370, + "line": 3378, "column": 45 } } @@ -460107,15 +463369,15 @@ { "type": "CommentLine", "value": " }", - "start": 135781, - "end": 135785, + "start": 136295, + "end": 136299, "loc": { "start": { - "line": 3371, + "line": 3379, "column": 12 }, "end": { - "line": 3371, + "line": 3379, "column": 16 } } @@ -460132,15 +463394,15 @@ "postfix": false, "binop": null }, - "start": 135794, - "end": 135795, + "start": 136308, + "end": 136309, "loc": { "start": { - "line": 3372, + "line": 3380, "column": 8 }, "end": { - "line": 3372, + "line": 3380, "column": 9 } } @@ -460160,15 +463422,15 @@ "updateContext": null }, "value": "this", - "start": 135804, - "end": 135808, + "start": 136318, + "end": 136322, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 8 }, "end": { - "line": 3373, + "line": 3381, "column": 12 } } @@ -460186,15 +463448,15 @@ "binop": null, "updateContext": null }, - "start": 135808, - "end": 135809, + "start": 136322, + "end": 136323, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 12 }, "end": { - "line": 3373, + "line": 3381, "column": 13 } } @@ -460212,15 +463474,15 @@ "binop": null }, "value": "_vboInstancingLayers", - "start": 135809, - "end": 135829, + "start": 136323, + "end": 136343, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 13 }, "end": { - "line": 3373, + "line": 3381, "column": 33 } } @@ -460238,15 +463500,15 @@ "binop": null, "updateContext": null }, - "start": 135829, - "end": 135830, + "start": 136343, + "end": 136344, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 33 }, "end": { - "line": 3373, + "line": 3381, "column": 34 } } @@ -460264,15 +463526,15 @@ "binop": null }, "value": "layerId", - "start": 135830, - "end": 135837, + "start": 136344, + "end": 136351, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 34 }, "end": { - "line": 3373, + "line": 3381, "column": 41 } } @@ -460290,15 +463552,15 @@ "binop": null, "updateContext": null }, - "start": 135837, - "end": 135838, + "start": 136351, + "end": 136352, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 41 }, "end": { - "line": 3373, + "line": 3381, "column": 42 } } @@ -460317,15 +463579,15 @@ "updateContext": null }, "value": "=", - "start": 135839, - "end": 135840, + "start": 136353, + "end": 136354, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 43 }, "end": { - "line": 3373, + "line": 3381, "column": 44 } } @@ -460343,15 +463605,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 135841, - "end": 135859, + "start": 136355, + "end": 136373, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 45 }, "end": { - "line": 3373, + "line": 3381, "column": 63 } } @@ -460369,15 +463631,15 @@ "binop": null, "updateContext": null }, - "start": 135859, - "end": 135860, + "start": 136373, + "end": 136374, "loc": { "start": { - "line": 3373, + "line": 3381, "column": 63 }, "end": { - "line": 3373, + "line": 3381, "column": 64 } } @@ -460397,15 +463659,15 @@ "updateContext": null }, "value": "this", - "start": 135869, - "end": 135873, + "start": 136383, + "end": 136387, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 8 }, "end": { - "line": 3374, + "line": 3382, "column": 12 } } @@ -460423,15 +463685,15 @@ "binop": null, "updateContext": null }, - "start": 135873, - "end": 135874, + "start": 136387, + "end": 136388, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 12 }, "end": { - "line": 3374, + "line": 3382, "column": 13 } } @@ -460449,15 +463711,15 @@ "binop": null }, "value": "layerList", - "start": 135874, - "end": 135883, + "start": 136388, + "end": 136397, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 13 }, "end": { - "line": 3374, + "line": 3382, "column": 22 } } @@ -460475,15 +463737,15 @@ "binop": null, "updateContext": null }, - "start": 135883, - "end": 135884, + "start": 136397, + "end": 136398, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 22 }, "end": { - "line": 3374, + "line": 3382, "column": 23 } } @@ -460501,15 +463763,15 @@ "binop": null }, "value": "push", - "start": 135884, - "end": 135888, + "start": 136398, + "end": 136402, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 23 }, "end": { - "line": 3374, + "line": 3382, "column": 27 } } @@ -460526,15 +463788,15 @@ "postfix": false, "binop": null }, - "start": 135888, - "end": 135889, + "start": 136402, + "end": 136403, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 27 }, "end": { - "line": 3374, + "line": 3382, "column": 28 } } @@ -460552,15 +463814,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 135889, - "end": 135907, + "start": 136403, + "end": 136421, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 28 }, "end": { - "line": 3374, + "line": 3382, "column": 46 } } @@ -460577,15 +463839,15 @@ "postfix": false, "binop": null }, - "start": 135907, - "end": 135908, + "start": 136421, + "end": 136422, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 46 }, "end": { - "line": 3374, + "line": 3382, "column": 47 } } @@ -460603,15 +463865,15 @@ "binop": null, "updateContext": null }, - "start": 135908, - "end": 135909, + "start": 136422, + "end": 136423, "loc": { "start": { - "line": 3374, + "line": 3382, "column": 47 }, "end": { - "line": 3374, + "line": 3382, "column": 48 } } @@ -460631,15 +463893,15 @@ "updateContext": null }, "value": "return", - "start": 135918, - "end": 135924, + "start": 136432, + "end": 136438, "loc": { "start": { - "line": 3375, + "line": 3383, "column": 8 }, "end": { - "line": 3375, + "line": 3383, "column": 14 } } @@ -460657,15 +463919,15 @@ "binop": null }, "value": "vboInstancingLayer", - "start": 135925, - "end": 135943, + "start": 136439, + "end": 136457, "loc": { "start": { - "line": 3375, + "line": 3383, "column": 15 }, "end": { - "line": 3375, + "line": 3383, "column": 33 } } @@ -460683,15 +463945,15 @@ "binop": null, "updateContext": null }, - "start": 135943, - "end": 135944, + "start": 136457, + "end": 136458, "loc": { "start": { - "line": 3375, + "line": 3383, "column": 33 }, "end": { - "line": 3375, + "line": 3383, "column": 34 } } @@ -460708,15 +463970,15 @@ "postfix": false, "binop": null }, - "start": 135949, - "end": 135950, + "start": 136463, + "end": 136464, "loc": { "start": { - "line": 3376, + "line": 3384, "column": 4 }, "end": { - "line": 3376, + "line": 3384, "column": 5 } } @@ -460724,15 +463986,15 @@ { "type": "CommentBlock", "value": "*\n * Creates a {@link SceneModelEntity} within this SceneModel.\n *\n * * Gives the SceneModelEntity one or more {@link SceneModelMesh}es previously created with\n * {@link SceneModel#createMesh}. A SceneModelMesh can only belong to one SceneModelEntity, so you'll get an\n * error if you try to reuse a mesh among multiple SceneModelEntitys.\n * * The SceneModelEntity can have a {@link SceneModelTextureSet}, previously created with\n * {@link SceneModel#createTextureSet}. A SceneModelTextureSet can belong to multiple SceneModelEntitys.\n * * The SceneModelEntity can have a geometry, previously created with\n * {@link SceneModel#createTextureSet}. A geometry is a \"virtual component\" and can belong to multiple SceneModelEntitys.\n *\n * @param {Object} cfg SceneModelEntity configuration.\n * @param {String} cfg.id Optional ID for the new SceneModelEntity. Must not clash with any existing components within the {@link Scene}.\n * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link SceneModel@createMesh}.\n * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link SceneModelEntity} represents an object, in which case it will be registered by {@link SceneModelEntity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModelEntity is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModelEntity is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModelEntity is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModelEntity is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModelEntity is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the SceneModelEntity initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the SceneModelEntity initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModelEntity is initially xrayed. XRayed appearance is configured by {@link SceneModel#xrayMaterial}.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModelEntity is initially highlighted. Highlighted appearance is configured by {@link SceneModel#highlightMaterial}.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModelEntity is initially selected. Selected appearance is configured by {@link SceneModel#selectedMaterial}.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModelEntity's edges are initially emphasized. Edges appearance is configured by {@link SceneModel#edgeMaterial}.\n * @returns {SceneModelEntity} The new SceneModelEntity.\n ", - "start": 135956, - "end": 138927, + "start": 136470, + "end": 139441, "loc": { "start": { - "line": 3378, + "line": 3386, "column": 4 }, "end": { - "line": 3405, + "line": 3413, "column": 7 } } @@ -460750,15 +464012,15 @@ "binop": null }, "value": "createEntity", - "start": 138932, - "end": 138944, + "start": 139446, + "end": 139458, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 4 }, "end": { - "line": 3406, + "line": 3414, "column": 16 } } @@ -460775,15 +464037,15 @@ "postfix": false, "binop": null }, - "start": 138944, - "end": 138945, + "start": 139458, + "end": 139459, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 16 }, "end": { - "line": 3406, + "line": 3414, "column": 17 } } @@ -460801,15 +464063,15 @@ "binop": null }, "value": "cfg", - "start": 138945, - "end": 138948, + "start": 139459, + "end": 139462, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 17 }, "end": { - "line": 3406, + "line": 3414, "column": 20 } } @@ -460826,15 +464088,15 @@ "postfix": false, "binop": null }, - "start": 138948, - "end": 138949, + "start": 139462, + "end": 139463, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 20 }, "end": { - "line": 3406, + "line": 3414, "column": 21 } } @@ -460851,15 +464113,15 @@ "postfix": false, "binop": null }, - "start": 138950, - "end": 138951, + "start": 139464, + "end": 139465, "loc": { "start": { - "line": 3406, + "line": 3414, "column": 22 }, "end": { - "line": 3406, + "line": 3414, "column": 23 } } @@ -460879,15 +464141,15 @@ "updateContext": null }, "value": "if", - "start": 138960, - "end": 138962, + "start": 139474, + "end": 139476, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 8 }, "end": { - "line": 3407, + "line": 3415, "column": 10 } } @@ -460904,15 +464166,15 @@ "postfix": false, "binop": null }, - "start": 138963, - "end": 138964, + "start": 139477, + "end": 139478, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 11 }, "end": { - "line": 3407, + "line": 3415, "column": 12 } } @@ -460930,15 +464192,15 @@ "binop": null }, "value": "cfg", - "start": 138964, - "end": 138967, + "start": 139478, + "end": 139481, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 12 }, "end": { - "line": 3407, + "line": 3415, "column": 15 } } @@ -460956,15 +464218,15 @@ "binop": null, "updateContext": null }, - "start": 138967, - "end": 138968, + "start": 139481, + "end": 139482, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 15 }, "end": { - "line": 3407, + "line": 3415, "column": 16 } } @@ -460982,15 +464244,15 @@ "binop": null }, "value": "id", - "start": 138968, - "end": 138970, + "start": 139482, + "end": 139484, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 16 }, "end": { - "line": 3407, + "line": 3415, "column": 18 } } @@ -461009,15 +464271,15 @@ "updateContext": null }, "value": "===", - "start": 138971, - "end": 138974, + "start": 139485, + "end": 139488, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 19 }, "end": { - "line": 3407, + "line": 3415, "column": 22 } } @@ -461035,15 +464297,15 @@ "binop": null }, "value": "undefined", - "start": 138975, - "end": 138984, + "start": 139489, + "end": 139498, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 23 }, "end": { - "line": 3407, + "line": 3415, "column": 32 } } @@ -461060,15 +464322,15 @@ "postfix": false, "binop": null }, - "start": 138984, - "end": 138985, + "start": 139498, + "end": 139499, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 32 }, "end": { - "line": 3407, + "line": 3415, "column": 33 } } @@ -461085,15 +464347,15 @@ "postfix": false, "binop": null }, - "start": 138986, - "end": 138987, + "start": 139500, + "end": 139501, "loc": { "start": { - "line": 3407, + "line": 3415, "column": 34 }, "end": { - "line": 3407, + "line": 3415, "column": 35 } } @@ -461111,15 +464373,15 @@ "binop": null }, "value": "cfg", - "start": 139000, - "end": 139003, + "start": 139514, + "end": 139517, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 12 }, "end": { - "line": 3408, + "line": 3416, "column": 15 } } @@ -461137,15 +464399,15 @@ "binop": null, "updateContext": null }, - "start": 139003, - "end": 139004, + "start": 139517, + "end": 139518, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 15 }, "end": { - "line": 3408, + "line": 3416, "column": 16 } } @@ -461163,15 +464425,15 @@ "binop": null }, "value": "id", - "start": 139004, - "end": 139006, + "start": 139518, + "end": 139520, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 16 }, "end": { - "line": 3408, + "line": 3416, "column": 18 } } @@ -461190,15 +464452,15 @@ "updateContext": null }, "value": "=", - "start": 139007, - "end": 139008, + "start": 139521, + "end": 139522, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 19 }, "end": { - "line": 3408, + "line": 3416, "column": 20 } } @@ -461216,15 +464478,15 @@ "binop": null }, "value": "math", - "start": 139009, - "end": 139013, + "start": 139523, + "end": 139527, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 21 }, "end": { - "line": 3408, + "line": 3416, "column": 25 } } @@ -461242,15 +464504,15 @@ "binop": null, "updateContext": null }, - "start": 139013, - "end": 139014, + "start": 139527, + "end": 139528, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 25 }, "end": { - "line": 3408, + "line": 3416, "column": 26 } } @@ -461268,15 +464530,15 @@ "binop": null }, "value": "createUUID", - "start": 139014, - "end": 139024, + "start": 139528, + "end": 139538, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 26 }, "end": { - "line": 3408, + "line": 3416, "column": 36 } } @@ -461293,15 +464555,15 @@ "postfix": false, "binop": null }, - "start": 139024, - "end": 139025, + "start": 139538, + "end": 139539, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 36 }, "end": { - "line": 3408, + "line": 3416, "column": 37 } } @@ -461318,15 +464580,15 @@ "postfix": false, "binop": null }, - "start": 139025, - "end": 139026, + "start": 139539, + "end": 139540, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 37 }, "end": { - "line": 3408, + "line": 3416, "column": 38 } } @@ -461344,15 +464606,15 @@ "binop": null, "updateContext": null }, - "start": 139026, - "end": 139027, + "start": 139540, + "end": 139541, "loc": { "start": { - "line": 3408, + "line": 3416, "column": 38 }, "end": { - "line": 3408, + "line": 3416, "column": 39 } } @@ -461369,15 +464631,15 @@ "postfix": false, "binop": null }, - "start": 139036, - "end": 139037, + "start": 139550, + "end": 139551, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 8 }, "end": { - "line": 3409, + "line": 3417, "column": 9 } } @@ -461397,15 +464659,15 @@ "updateContext": null }, "value": "else", - "start": 139038, - "end": 139042, + "start": 139552, + "end": 139556, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 10 }, "end": { - "line": 3409, + "line": 3417, "column": 14 } } @@ -461425,15 +464687,15 @@ "updateContext": null }, "value": "if", - "start": 139043, - "end": 139045, + "start": 139557, + "end": 139559, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 15 }, "end": { - "line": 3409, + "line": 3417, "column": 17 } } @@ -461450,15 +464712,15 @@ "postfix": false, "binop": null }, - "start": 139046, - "end": 139047, + "start": 139560, + "end": 139561, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 18 }, "end": { - "line": 3409, + "line": 3417, "column": 19 } } @@ -461478,15 +464740,15 @@ "updateContext": null }, "value": "this", - "start": 139047, - "end": 139051, + "start": 139561, + "end": 139565, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 19 }, "end": { - "line": 3409, + "line": 3417, "column": 23 } } @@ -461504,15 +464766,15 @@ "binop": null, "updateContext": null }, - "start": 139051, - "end": 139052, + "start": 139565, + "end": 139566, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 23 }, "end": { - "line": 3409, + "line": 3417, "column": 24 } } @@ -461530,15 +464792,15 @@ "binop": null }, "value": "scene", - "start": 139052, - "end": 139057, + "start": 139566, + "end": 139571, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 24 }, "end": { - "line": 3409, + "line": 3417, "column": 29 } } @@ -461556,15 +464818,15 @@ "binop": null, "updateContext": null }, - "start": 139057, - "end": 139058, + "start": 139571, + "end": 139572, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 29 }, "end": { - "line": 3409, + "line": 3417, "column": 30 } } @@ -461582,15 +464844,15 @@ "binop": null }, "value": "components", - "start": 139058, - "end": 139068, + "start": 139572, + "end": 139582, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 30 }, "end": { - "line": 3409, + "line": 3417, "column": 40 } } @@ -461608,15 +464870,15 @@ "binop": null, "updateContext": null }, - "start": 139068, - "end": 139069, + "start": 139582, + "end": 139583, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 40 }, "end": { - "line": 3409, + "line": 3417, "column": 41 } } @@ -461634,15 +464896,15 @@ "binop": null }, "value": "cfg", - "start": 139069, - "end": 139072, + "start": 139583, + "end": 139586, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 41 }, "end": { - "line": 3409, + "line": 3417, "column": 44 } } @@ -461660,15 +464922,15 @@ "binop": null, "updateContext": null }, - "start": 139072, - "end": 139073, + "start": 139586, + "end": 139587, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 44 }, "end": { - "line": 3409, + "line": 3417, "column": 45 } } @@ -461686,15 +464948,15 @@ "binop": null }, "value": "id", - "start": 139073, - "end": 139075, + "start": 139587, + "end": 139589, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 45 }, "end": { - "line": 3409, + "line": 3417, "column": 47 } } @@ -461712,15 +464974,15 @@ "binop": null, "updateContext": null }, - "start": 139075, - "end": 139076, + "start": 139589, + "end": 139590, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 47 }, "end": { - "line": 3409, + "line": 3417, "column": 48 } } @@ -461737,15 +464999,15 @@ "postfix": false, "binop": null }, - "start": 139076, - "end": 139077, + "start": 139590, + "end": 139591, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 48 }, "end": { - "line": 3409, + "line": 3417, "column": 49 } } @@ -461762,15 +465024,15 @@ "postfix": false, "binop": null }, - "start": 139078, - "end": 139079, + "start": 139592, + "end": 139593, "loc": { "start": { - "line": 3409, + "line": 3417, "column": 50 }, "end": { - "line": 3409, + "line": 3417, "column": 51 } } @@ -461790,15 +465052,15 @@ "updateContext": null }, "value": "this", - "start": 139092, - "end": 139096, + "start": 139606, + "end": 139610, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 12 }, "end": { - "line": 3410, + "line": 3418, "column": 16 } } @@ -461816,15 +465078,15 @@ "binop": null, "updateContext": null }, - "start": 139096, - "end": 139097, + "start": 139610, + "end": 139611, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 16 }, "end": { - "line": 3410, + "line": 3418, "column": 17 } } @@ -461842,15 +465104,15 @@ "binop": null }, "value": "error", - "start": 139097, - "end": 139102, + "start": 139611, + "end": 139616, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 17 }, "end": { - "line": 3410, + "line": 3418, "column": 22 } } @@ -461867,15 +465129,15 @@ "postfix": false, "binop": null }, - "start": 139102, - "end": 139103, + "start": 139616, + "end": 139617, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 22 }, "end": { - "line": 3410, + "line": 3418, "column": 23 } } @@ -461892,15 +465154,15 @@ "postfix": false, "binop": null }, - "start": 139103, - "end": 139104, + "start": 139617, + "end": 139618, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 23 }, "end": { - "line": 3410, + "line": 3418, "column": 24 } } @@ -461919,15 +465181,15 @@ "updateContext": null }, "value": "Scene already has a Component with this ID: ", - "start": 139104, - "end": 139148, + "start": 139618, + "end": 139662, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 24 }, "end": { - "line": 3410, + "line": 3418, "column": 68 } } @@ -461944,15 +465206,15 @@ "postfix": false, "binop": null }, - "start": 139148, - "end": 139150, + "start": 139662, + "end": 139664, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 68 }, "end": { - "line": 3410, + "line": 3418, "column": 70 } } @@ -461970,15 +465232,15 @@ "binop": null }, "value": "cfg", - "start": 139150, - "end": 139153, + "start": 139664, + "end": 139667, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 70 }, "end": { - "line": 3410, + "line": 3418, "column": 73 } } @@ -461996,15 +465258,15 @@ "binop": null, "updateContext": null }, - "start": 139153, - "end": 139154, + "start": 139667, + "end": 139668, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 73 }, "end": { - "line": 3410, + "line": 3418, "column": 74 } } @@ -462022,15 +465284,15 @@ "binop": null }, "value": "id", - "start": 139154, - "end": 139156, + "start": 139668, + "end": 139670, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 74 }, "end": { - "line": 3410, + "line": 3418, "column": 76 } } @@ -462047,15 +465309,15 @@ "postfix": false, "binop": null }, - "start": 139156, - "end": 139157, + "start": 139670, + "end": 139671, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 76 }, "end": { - "line": 3410, + "line": 3418, "column": 77 } } @@ -462074,15 +465336,15 @@ "updateContext": null }, "value": " - will assign random ID", - "start": 139157, - "end": 139181, + "start": 139671, + "end": 139695, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 77 }, "end": { - "line": 3410, + "line": 3418, "column": 101 } } @@ -462099,15 +465361,15 @@ "postfix": false, "binop": null }, - "start": 139181, - "end": 139182, + "start": 139695, + "end": 139696, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 101 }, "end": { - "line": 3410, + "line": 3418, "column": 102 } } @@ -462124,15 +465386,15 @@ "postfix": false, "binop": null }, - "start": 139182, - "end": 139183, + "start": 139696, + "end": 139697, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 102 }, "end": { - "line": 3410, + "line": 3418, "column": 103 } } @@ -462150,15 +465412,15 @@ "binop": null, "updateContext": null }, - "start": 139183, - "end": 139184, + "start": 139697, + "end": 139698, "loc": { "start": { - "line": 3410, + "line": 3418, "column": 103 }, "end": { - "line": 3410, + "line": 3418, "column": 104 } } @@ -462176,15 +465438,15 @@ "binop": null }, "value": "cfg", - "start": 139197, - "end": 139200, + "start": 139711, + "end": 139714, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 12 }, "end": { - "line": 3411, + "line": 3419, "column": 15 } } @@ -462202,15 +465464,15 @@ "binop": null, "updateContext": null }, - "start": 139200, - "end": 139201, + "start": 139714, + "end": 139715, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 15 }, "end": { - "line": 3411, + "line": 3419, "column": 16 } } @@ -462228,15 +465490,15 @@ "binop": null }, "value": "id", - "start": 139201, - "end": 139203, + "start": 139715, + "end": 139717, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 16 }, "end": { - "line": 3411, + "line": 3419, "column": 18 } } @@ -462255,15 +465517,15 @@ "updateContext": null }, "value": "=", - "start": 139204, - "end": 139205, + "start": 139718, + "end": 139719, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 19 }, "end": { - "line": 3411, + "line": 3419, "column": 20 } } @@ -462281,15 +465543,15 @@ "binop": null }, "value": "math", - "start": 139206, - "end": 139210, + "start": 139720, + "end": 139724, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 21 }, "end": { - "line": 3411, + "line": 3419, "column": 25 } } @@ -462307,15 +465569,15 @@ "binop": null, "updateContext": null }, - "start": 139210, - "end": 139211, + "start": 139724, + "end": 139725, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 25 }, "end": { - "line": 3411, + "line": 3419, "column": 26 } } @@ -462333,15 +465595,15 @@ "binop": null }, "value": "createUUID", - "start": 139211, - "end": 139221, + "start": 139725, + "end": 139735, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 26 }, "end": { - "line": 3411, + "line": 3419, "column": 36 } } @@ -462358,15 +465620,15 @@ "postfix": false, "binop": null }, - "start": 139221, - "end": 139222, + "start": 139735, + "end": 139736, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 36 }, "end": { - "line": 3411, + "line": 3419, "column": 37 } } @@ -462383,15 +465645,15 @@ "postfix": false, "binop": null }, - "start": 139222, - "end": 139223, + "start": 139736, + "end": 139737, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 37 }, "end": { - "line": 3411, + "line": 3419, "column": 38 } } @@ -462409,15 +465671,15 @@ "binop": null, "updateContext": null }, - "start": 139223, - "end": 139224, + "start": 139737, + "end": 139738, "loc": { "start": { - "line": 3411, + "line": 3419, "column": 38 }, "end": { - "line": 3411, + "line": 3419, "column": 39 } } @@ -462434,15 +465696,15 @@ "postfix": false, "binop": null }, - "start": 139233, - "end": 139234, + "start": 139747, + "end": 139748, "loc": { "start": { - "line": 3412, + "line": 3420, "column": 8 }, "end": { - "line": 3412, + "line": 3420, "column": 9 } } @@ -462462,15 +465724,15 @@ "updateContext": null }, "value": "if", - "start": 139243, - "end": 139245, + "start": 139757, + "end": 139759, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 8 }, "end": { - "line": 3413, + "line": 3421, "column": 10 } } @@ -462487,15 +465749,15 @@ "postfix": false, "binop": null }, - "start": 139246, - "end": 139247, + "start": 139760, + "end": 139761, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 11 }, "end": { - "line": 3413, + "line": 3421, "column": 12 } } @@ -462513,15 +465775,15 @@ "binop": null }, "value": "cfg", - "start": 139247, - "end": 139250, + "start": 139761, + "end": 139764, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 12 }, "end": { - "line": 3413, + "line": 3421, "column": 15 } } @@ -462539,15 +465801,15 @@ "binop": null, "updateContext": null }, - "start": 139250, - "end": 139251, + "start": 139764, + "end": 139765, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 15 }, "end": { - "line": 3413, + "line": 3421, "column": 16 } } @@ -462565,15 +465827,15 @@ "binop": null }, "value": "meshIds", - "start": 139251, - "end": 139258, + "start": 139765, + "end": 139772, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 16 }, "end": { - "line": 3413, + "line": 3421, "column": 23 } } @@ -462592,15 +465854,15 @@ "updateContext": null }, "value": "===", - "start": 139259, - "end": 139262, + "start": 139773, + "end": 139776, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 24 }, "end": { - "line": 3413, + "line": 3421, "column": 27 } } @@ -462618,15 +465880,15 @@ "binop": null }, "value": "undefined", - "start": 139263, - "end": 139272, + "start": 139777, + "end": 139786, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 28 }, "end": { - "line": 3413, + "line": 3421, "column": 37 } } @@ -462643,15 +465905,15 @@ "postfix": false, "binop": null }, - "start": 139272, - "end": 139273, + "start": 139786, + "end": 139787, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 37 }, "end": { - "line": 3413, + "line": 3421, "column": 38 } } @@ -462668,15 +465930,15 @@ "postfix": false, "binop": null }, - "start": 139274, - "end": 139275, + "start": 139788, + "end": 139789, "loc": { "start": { - "line": 3413, + "line": 3421, "column": 39 }, "end": { - "line": 3413, + "line": 3421, "column": 40 } } @@ -462696,15 +465958,15 @@ "updateContext": null }, "value": "this", - "start": 139288, - "end": 139292, + "start": 139802, + "end": 139806, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 12 }, "end": { - "line": 3414, + "line": 3422, "column": 16 } } @@ -462722,15 +465984,15 @@ "binop": null, "updateContext": null }, - "start": 139292, - "end": 139293, + "start": 139806, + "end": 139807, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 16 }, "end": { - "line": 3414, + "line": 3422, "column": 17 } } @@ -462748,15 +466010,15 @@ "binop": null }, "value": "error", - "start": 139293, - "end": 139298, + "start": 139807, + "end": 139812, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 17 }, "end": { - "line": 3414, + "line": 3422, "column": 22 } } @@ -462773,15 +466035,15 @@ "postfix": false, "binop": null }, - "start": 139298, - "end": 139299, + "start": 139812, + "end": 139813, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 22 }, "end": { - "line": 3414, + "line": 3422, "column": 23 } } @@ -462800,15 +466062,15 @@ "updateContext": null }, "value": "Config missing: meshIds", - "start": 139299, - "end": 139324, + "start": 139813, + "end": 139838, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 23 }, "end": { - "line": 3414, + "line": 3422, "column": 48 } } @@ -462825,15 +466087,15 @@ "postfix": false, "binop": null }, - "start": 139324, - "end": 139325, + "start": 139838, + "end": 139839, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 48 }, "end": { - "line": 3414, + "line": 3422, "column": 49 } } @@ -462851,15 +466113,15 @@ "binop": null, "updateContext": null }, - "start": 139325, - "end": 139326, + "start": 139839, + "end": 139840, "loc": { "start": { - "line": 3414, + "line": 3422, "column": 49 }, "end": { - "line": 3414, + "line": 3422, "column": 50 } } @@ -462879,15 +466141,15 @@ "updateContext": null }, "value": "return", - "start": 139339, - "end": 139345, + "start": 139853, + "end": 139859, "loc": { "start": { - "line": 3415, + "line": 3423, "column": 12 }, "end": { - "line": 3415, + "line": 3423, "column": 18 } } @@ -462905,15 +466167,15 @@ "binop": null, "updateContext": null }, - "start": 139345, - "end": 139346, + "start": 139859, + "end": 139860, "loc": { "start": { - "line": 3415, + "line": 3423, "column": 18 }, "end": { - "line": 3415, + "line": 3423, "column": 19 } } @@ -462930,15 +466192,15 @@ "postfix": false, "binop": null }, - "start": 139355, - "end": 139356, + "start": 139869, + "end": 139870, "loc": { "start": { - "line": 3416, + "line": 3424, "column": 8 }, "end": { - "line": 3416, + "line": 3424, "column": 9 } } @@ -462958,15 +466220,15 @@ "updateContext": null }, "value": "let", - "start": 139365, - "end": 139368, + "start": 139879, + "end": 139882, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 8 }, "end": { - "line": 3417, + "line": 3425, "column": 11 } } @@ -462984,15 +466246,15 @@ "binop": null }, "value": "flags", - "start": 139369, - "end": 139374, + "start": 139883, + "end": 139888, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 12 }, "end": { - "line": 3417, + "line": 3425, "column": 17 } } @@ -463011,15 +466273,15 @@ "updateContext": null }, "value": "=", - "start": 139375, - "end": 139376, + "start": 139889, + "end": 139890, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 18 }, "end": { - "line": 3417, + "line": 3425, "column": 19 } } @@ -463038,15 +466300,15 @@ "updateContext": null }, "value": 0, - "start": 139377, - "end": 139378, + "start": 139891, + "end": 139892, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 20 }, "end": { - "line": 3417, + "line": 3425, "column": 21 } } @@ -463064,15 +466326,15 @@ "binop": null, "updateContext": null }, - "start": 139378, - "end": 139379, + "start": 139892, + "end": 139893, "loc": { "start": { - "line": 3417, + "line": 3425, "column": 21 }, "end": { - "line": 3417, + "line": 3425, "column": 22 } } @@ -463092,15 +466354,15 @@ "updateContext": null }, "value": "if", - "start": 139388, - "end": 139390, + "start": 139902, + "end": 139904, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 8 }, "end": { - "line": 3418, + "line": 3426, "column": 10 } } @@ -463117,15 +466379,15 @@ "postfix": false, "binop": null }, - "start": 139391, - "end": 139392, + "start": 139905, + "end": 139906, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 11 }, "end": { - "line": 3418, + "line": 3426, "column": 12 } } @@ -463145,15 +466407,15 @@ "updateContext": null }, "value": "this", - "start": 139392, - "end": 139396, + "start": 139906, + "end": 139910, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 12 }, "end": { - "line": 3418, + "line": 3426, "column": 16 } } @@ -463171,15 +466433,15 @@ "binop": null, "updateContext": null }, - "start": 139396, - "end": 139397, + "start": 139910, + "end": 139911, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 16 }, "end": { - "line": 3418, + "line": 3426, "column": 17 } } @@ -463197,15 +466459,15 @@ "binop": null }, "value": "_visible", - "start": 139397, - "end": 139405, + "start": 139911, + "end": 139919, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 17 }, "end": { - "line": 3418, + "line": 3426, "column": 25 } } @@ -463224,15 +466486,15 @@ "updateContext": null }, "value": "&&", - "start": 139406, - "end": 139408, + "start": 139920, + "end": 139922, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 26 }, "end": { - "line": 3418, + "line": 3426, "column": 28 } } @@ -463250,15 +466512,15 @@ "binop": null }, "value": "cfg", - "start": 139409, - "end": 139412, + "start": 139923, + "end": 139926, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 29 }, "end": { - "line": 3418, + "line": 3426, "column": 32 } } @@ -463276,15 +466538,15 @@ "binop": null, "updateContext": null }, - "start": 139412, - "end": 139413, + "start": 139926, + "end": 139927, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 32 }, "end": { - "line": 3418, + "line": 3426, "column": 33 } } @@ -463302,15 +466564,15 @@ "binop": null }, "value": "visible", - "start": 139413, - "end": 139420, + "start": 139927, + "end": 139934, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 33 }, "end": { - "line": 3418, + "line": 3426, "column": 40 } } @@ -463329,15 +466591,15 @@ "updateContext": null }, "value": "!==", - "start": 139421, - "end": 139424, + "start": 139935, + "end": 139938, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 41 }, "end": { - "line": 3418, + "line": 3426, "column": 44 } } @@ -463357,15 +466619,15 @@ "updateContext": null }, "value": "false", - "start": 139425, - "end": 139430, + "start": 139939, + "end": 139944, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 45 }, "end": { - "line": 3418, + "line": 3426, "column": 50 } } @@ -463382,15 +466644,15 @@ "postfix": false, "binop": null }, - "start": 139430, - "end": 139431, + "start": 139944, + "end": 139945, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 50 }, "end": { - "line": 3418, + "line": 3426, "column": 51 } } @@ -463407,15 +466669,15 @@ "postfix": false, "binop": null }, - "start": 139432, - "end": 139433, + "start": 139946, + "end": 139947, "loc": { "start": { - "line": 3418, + "line": 3426, "column": 52 }, "end": { - "line": 3418, + "line": 3426, "column": 53 } } @@ -463433,15 +466695,15 @@ "binop": null }, "value": "flags", - "start": 139446, - "end": 139451, + "start": 139960, + "end": 139965, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 12 }, "end": { - "line": 3419, + "line": 3427, "column": 17 } } @@ -463460,15 +466722,15 @@ "updateContext": null }, "value": "=", - "start": 139452, - "end": 139453, + "start": 139966, + "end": 139967, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 18 }, "end": { - "line": 3419, + "line": 3427, "column": 19 } } @@ -463486,15 +466748,15 @@ "binop": null }, "value": "flags", - "start": 139454, - "end": 139459, + "start": 139968, + "end": 139973, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 20 }, "end": { - "line": 3419, + "line": 3427, "column": 25 } } @@ -463513,15 +466775,15 @@ "updateContext": null }, "value": "|", - "start": 139460, - "end": 139461, + "start": 139974, + "end": 139975, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 26 }, "end": { - "line": 3419, + "line": 3427, "column": 27 } } @@ -463539,15 +466801,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 139462, - "end": 139474, + "start": 139976, + "end": 139988, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 28 }, "end": { - "line": 3419, + "line": 3427, "column": 40 } } @@ -463565,15 +466827,15 @@ "binop": null, "updateContext": null }, - "start": 139474, - "end": 139475, + "start": 139988, + "end": 139989, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 40 }, "end": { - "line": 3419, + "line": 3427, "column": 41 } } @@ -463591,15 +466853,15 @@ "binop": null }, "value": "VISIBLE", - "start": 139475, - "end": 139482, + "start": 139989, + "end": 139996, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 41 }, "end": { - "line": 3419, + "line": 3427, "column": 48 } } @@ -463617,15 +466879,15 @@ "binop": null, "updateContext": null }, - "start": 139482, - "end": 139483, + "start": 139996, + "end": 139997, "loc": { "start": { - "line": 3419, + "line": 3427, "column": 48 }, "end": { - "line": 3419, + "line": 3427, "column": 49 } } @@ -463642,15 +466904,15 @@ "postfix": false, "binop": null }, - "start": 139492, - "end": 139493, + "start": 140006, + "end": 140007, "loc": { "start": { - "line": 3420, + "line": 3428, "column": 8 }, "end": { - "line": 3420, + "line": 3428, "column": 9 } } @@ -463670,15 +466932,15 @@ "updateContext": null }, "value": "if", - "start": 139502, - "end": 139504, + "start": 140016, + "end": 140018, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 8 }, "end": { - "line": 3421, + "line": 3429, "column": 10 } } @@ -463695,15 +466957,15 @@ "postfix": false, "binop": null }, - "start": 139505, - "end": 139506, + "start": 140019, + "end": 140020, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 11 }, "end": { - "line": 3421, + "line": 3429, "column": 12 } } @@ -463723,15 +466985,15 @@ "updateContext": null }, "value": "this", - "start": 139506, - "end": 139510, + "start": 140020, + "end": 140024, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 12 }, "end": { - "line": 3421, + "line": 3429, "column": 16 } } @@ -463749,15 +467011,15 @@ "binop": null, "updateContext": null }, - "start": 139510, - "end": 139511, + "start": 140024, + "end": 140025, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 16 }, "end": { - "line": 3421, + "line": 3429, "column": 17 } } @@ -463775,15 +467037,15 @@ "binop": null }, "value": "_pickable", - "start": 139511, - "end": 139520, + "start": 140025, + "end": 140034, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 17 }, "end": { - "line": 3421, + "line": 3429, "column": 26 } } @@ -463802,15 +467064,15 @@ "updateContext": null }, "value": "&&", - "start": 139521, - "end": 139523, + "start": 140035, + "end": 140037, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 27 }, "end": { - "line": 3421, + "line": 3429, "column": 29 } } @@ -463828,15 +467090,15 @@ "binop": null }, "value": "cfg", - "start": 139524, - "end": 139527, + "start": 140038, + "end": 140041, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 30 }, "end": { - "line": 3421, + "line": 3429, "column": 33 } } @@ -463854,15 +467116,15 @@ "binop": null, "updateContext": null }, - "start": 139527, - "end": 139528, + "start": 140041, + "end": 140042, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 33 }, "end": { - "line": 3421, + "line": 3429, "column": 34 } } @@ -463880,15 +467142,15 @@ "binop": null }, "value": "pickable", - "start": 139528, - "end": 139536, + "start": 140042, + "end": 140050, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 34 }, "end": { - "line": 3421, + "line": 3429, "column": 42 } } @@ -463907,15 +467169,15 @@ "updateContext": null }, "value": "!==", - "start": 139537, - "end": 139540, + "start": 140051, + "end": 140054, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 43 }, "end": { - "line": 3421, + "line": 3429, "column": 46 } } @@ -463935,15 +467197,15 @@ "updateContext": null }, "value": "false", - "start": 139541, - "end": 139546, + "start": 140055, + "end": 140060, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 47 }, "end": { - "line": 3421, + "line": 3429, "column": 52 } } @@ -463960,15 +467222,15 @@ "postfix": false, "binop": null }, - "start": 139546, - "end": 139547, + "start": 140060, + "end": 140061, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 52 }, "end": { - "line": 3421, + "line": 3429, "column": 53 } } @@ -463985,15 +467247,15 @@ "postfix": false, "binop": null }, - "start": 139548, - "end": 139549, + "start": 140062, + "end": 140063, "loc": { "start": { - "line": 3421, + "line": 3429, "column": 54 }, "end": { - "line": 3421, + "line": 3429, "column": 55 } } @@ -464011,15 +467273,15 @@ "binop": null }, "value": "flags", - "start": 139562, - "end": 139567, + "start": 140076, + "end": 140081, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 12 }, "end": { - "line": 3422, + "line": 3430, "column": 17 } } @@ -464038,15 +467300,15 @@ "updateContext": null }, "value": "=", - "start": 139568, - "end": 139569, + "start": 140082, + "end": 140083, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 18 }, "end": { - "line": 3422, + "line": 3430, "column": 19 } } @@ -464064,15 +467326,15 @@ "binop": null }, "value": "flags", - "start": 139570, - "end": 139575, + "start": 140084, + "end": 140089, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 20 }, "end": { - "line": 3422, + "line": 3430, "column": 25 } } @@ -464091,15 +467353,15 @@ "updateContext": null }, "value": "|", - "start": 139576, - "end": 139577, + "start": 140090, + "end": 140091, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 26 }, "end": { - "line": 3422, + "line": 3430, "column": 27 } } @@ -464117,15 +467379,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 139578, - "end": 139590, + "start": 140092, + "end": 140104, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 28 }, "end": { - "line": 3422, + "line": 3430, "column": 40 } } @@ -464143,15 +467405,15 @@ "binop": null, "updateContext": null }, - "start": 139590, - "end": 139591, + "start": 140104, + "end": 140105, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 40 }, "end": { - "line": 3422, + "line": 3430, "column": 41 } } @@ -464169,15 +467431,15 @@ "binop": null }, "value": "PICKABLE", - "start": 139591, - "end": 139599, + "start": 140105, + "end": 140113, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 41 }, "end": { - "line": 3422, + "line": 3430, "column": 49 } } @@ -464195,15 +467457,15 @@ "binop": null, "updateContext": null }, - "start": 139599, - "end": 139600, + "start": 140113, + "end": 140114, "loc": { "start": { - "line": 3422, + "line": 3430, "column": 49 }, "end": { - "line": 3422, + "line": 3430, "column": 50 } } @@ -464220,15 +467482,15 @@ "postfix": false, "binop": null }, - "start": 139609, - "end": 139610, + "start": 140123, + "end": 140124, "loc": { "start": { - "line": 3423, + "line": 3431, "column": 8 }, "end": { - "line": 3423, + "line": 3431, "column": 9 } } @@ -464248,15 +467510,15 @@ "updateContext": null }, "value": "if", - "start": 139619, - "end": 139621, + "start": 140133, + "end": 140135, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 8 }, "end": { - "line": 3424, + "line": 3432, "column": 10 } } @@ -464273,15 +467535,15 @@ "postfix": false, "binop": null }, - "start": 139622, - "end": 139623, + "start": 140136, + "end": 140137, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 11 }, "end": { - "line": 3424, + "line": 3432, "column": 12 } } @@ -464301,15 +467563,15 @@ "updateContext": null }, "value": "this", - "start": 139623, - "end": 139627, + "start": 140137, + "end": 140141, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 12 }, "end": { - "line": 3424, + "line": 3432, "column": 16 } } @@ -464327,15 +467589,15 @@ "binop": null, "updateContext": null }, - "start": 139627, - "end": 139628, + "start": 140141, + "end": 140142, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 16 }, "end": { - "line": 3424, + "line": 3432, "column": 17 } } @@ -464353,15 +467615,15 @@ "binop": null }, "value": "_culled", - "start": 139628, - "end": 139635, + "start": 140142, + "end": 140149, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 17 }, "end": { - "line": 3424, + "line": 3432, "column": 24 } } @@ -464380,15 +467642,15 @@ "updateContext": null }, "value": "&&", - "start": 139636, - "end": 139638, + "start": 140150, + "end": 140152, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 25 }, "end": { - "line": 3424, + "line": 3432, "column": 27 } } @@ -464406,15 +467668,15 @@ "binop": null }, "value": "cfg", - "start": 139639, - "end": 139642, + "start": 140153, + "end": 140156, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 28 }, "end": { - "line": 3424, + "line": 3432, "column": 31 } } @@ -464432,15 +467694,15 @@ "binop": null, "updateContext": null }, - "start": 139642, - "end": 139643, + "start": 140156, + "end": 140157, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 31 }, "end": { - "line": 3424, + "line": 3432, "column": 32 } } @@ -464458,15 +467720,15 @@ "binop": null }, "value": "culled", - "start": 139643, - "end": 139649, + "start": 140157, + "end": 140163, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 32 }, "end": { - "line": 3424, + "line": 3432, "column": 38 } } @@ -464485,15 +467747,15 @@ "updateContext": null }, "value": "!==", - "start": 139650, - "end": 139653, + "start": 140164, + "end": 140167, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 39 }, "end": { - "line": 3424, + "line": 3432, "column": 42 } } @@ -464513,15 +467775,15 @@ "updateContext": null }, "value": "false", - "start": 139654, - "end": 139659, + "start": 140168, + "end": 140173, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 43 }, "end": { - "line": 3424, + "line": 3432, "column": 48 } } @@ -464538,15 +467800,15 @@ "postfix": false, "binop": null }, - "start": 139659, - "end": 139660, + "start": 140173, + "end": 140174, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 48 }, "end": { - "line": 3424, + "line": 3432, "column": 49 } } @@ -464563,15 +467825,15 @@ "postfix": false, "binop": null }, - "start": 139661, - "end": 139662, + "start": 140175, + "end": 140176, "loc": { "start": { - "line": 3424, + "line": 3432, "column": 50 }, "end": { - "line": 3424, + "line": 3432, "column": 51 } } @@ -464589,15 +467851,15 @@ "binop": null }, "value": "flags", - "start": 139675, - "end": 139680, + "start": 140189, + "end": 140194, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 12 }, "end": { - "line": 3425, + "line": 3433, "column": 17 } } @@ -464616,15 +467878,15 @@ "updateContext": null }, "value": "=", - "start": 139681, - "end": 139682, + "start": 140195, + "end": 140196, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 18 }, "end": { - "line": 3425, + "line": 3433, "column": 19 } } @@ -464642,15 +467904,15 @@ "binop": null }, "value": "flags", - "start": 139683, - "end": 139688, + "start": 140197, + "end": 140202, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 20 }, "end": { - "line": 3425, + "line": 3433, "column": 25 } } @@ -464669,15 +467931,15 @@ "updateContext": null }, "value": "|", - "start": 139689, - "end": 139690, + "start": 140203, + "end": 140204, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 26 }, "end": { - "line": 3425, + "line": 3433, "column": 27 } } @@ -464695,15 +467957,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 139691, - "end": 139703, + "start": 140205, + "end": 140217, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 28 }, "end": { - "line": 3425, + "line": 3433, "column": 40 } } @@ -464721,15 +467983,15 @@ "binop": null, "updateContext": null }, - "start": 139703, - "end": 139704, + "start": 140217, + "end": 140218, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 40 }, "end": { - "line": 3425, + "line": 3433, "column": 41 } } @@ -464747,15 +468009,15 @@ "binop": null }, "value": "CULLED", - "start": 139704, - "end": 139710, + "start": 140218, + "end": 140224, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 41 }, "end": { - "line": 3425, + "line": 3433, "column": 47 } } @@ -464773,15 +468035,15 @@ "binop": null, "updateContext": null }, - "start": 139710, - "end": 139711, + "start": 140224, + "end": 140225, "loc": { "start": { - "line": 3425, + "line": 3433, "column": 47 }, "end": { - "line": 3425, + "line": 3433, "column": 48 } } @@ -464798,15 +468060,15 @@ "postfix": false, "binop": null }, - "start": 139720, - "end": 139721, + "start": 140234, + "end": 140235, "loc": { "start": { - "line": 3426, + "line": 3434, "column": 8 }, "end": { - "line": 3426, + "line": 3434, "column": 9 } } @@ -464826,15 +468088,15 @@ "updateContext": null }, "value": "if", - "start": 139730, - "end": 139732, + "start": 140244, + "end": 140246, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 8 }, "end": { - "line": 3427, + "line": 3435, "column": 10 } } @@ -464851,15 +468113,15 @@ "postfix": false, "binop": null }, - "start": 139733, - "end": 139734, + "start": 140247, + "end": 140248, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 11 }, "end": { - "line": 3427, + "line": 3435, "column": 12 } } @@ -464879,15 +468141,15 @@ "updateContext": null }, "value": "this", - "start": 139734, - "end": 139738, + "start": 140248, + "end": 140252, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 12 }, "end": { - "line": 3427, + "line": 3435, "column": 16 } } @@ -464905,15 +468167,15 @@ "binop": null, "updateContext": null }, - "start": 139738, - "end": 139739, + "start": 140252, + "end": 140253, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 16 }, "end": { - "line": 3427, + "line": 3435, "column": 17 } } @@ -464931,15 +468193,15 @@ "binop": null }, "value": "_clippable", - "start": 139739, - "end": 139749, + "start": 140253, + "end": 140263, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 17 }, "end": { - "line": 3427, + "line": 3435, "column": 27 } } @@ -464958,15 +468220,15 @@ "updateContext": null }, "value": "&&", - "start": 139750, - "end": 139752, + "start": 140264, + "end": 140266, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 28 }, "end": { - "line": 3427, + "line": 3435, "column": 30 } } @@ -464984,15 +468246,15 @@ "binop": null }, "value": "cfg", - "start": 139753, - "end": 139756, + "start": 140267, + "end": 140270, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 31 }, "end": { - "line": 3427, + "line": 3435, "column": 34 } } @@ -465010,15 +468272,15 @@ "binop": null, "updateContext": null }, - "start": 139756, - "end": 139757, + "start": 140270, + "end": 140271, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 34 }, "end": { - "line": 3427, + "line": 3435, "column": 35 } } @@ -465036,15 +468298,15 @@ "binop": null }, "value": "clippable", - "start": 139757, - "end": 139766, + "start": 140271, + "end": 140280, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 35 }, "end": { - "line": 3427, + "line": 3435, "column": 44 } } @@ -465063,15 +468325,15 @@ "updateContext": null }, "value": "!==", - "start": 139767, - "end": 139770, + "start": 140281, + "end": 140284, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 45 }, "end": { - "line": 3427, + "line": 3435, "column": 48 } } @@ -465091,15 +468353,15 @@ "updateContext": null }, "value": "false", - "start": 139771, - "end": 139776, + "start": 140285, + "end": 140290, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 49 }, "end": { - "line": 3427, + "line": 3435, "column": 54 } } @@ -465116,15 +468378,15 @@ "postfix": false, "binop": null }, - "start": 139776, - "end": 139777, + "start": 140290, + "end": 140291, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 54 }, "end": { - "line": 3427, + "line": 3435, "column": 55 } } @@ -465141,15 +468403,15 @@ "postfix": false, "binop": null }, - "start": 139778, - "end": 139779, + "start": 140292, + "end": 140293, "loc": { "start": { - "line": 3427, + "line": 3435, "column": 56 }, "end": { - "line": 3427, + "line": 3435, "column": 57 } } @@ -465167,15 +468429,15 @@ "binop": null }, "value": "flags", - "start": 139792, - "end": 139797, + "start": 140306, + "end": 140311, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 12 }, "end": { - "line": 3428, + "line": 3436, "column": 17 } } @@ -465194,15 +468456,15 @@ "updateContext": null }, "value": "=", - "start": 139798, - "end": 139799, + "start": 140312, + "end": 140313, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 18 }, "end": { - "line": 3428, + "line": 3436, "column": 19 } } @@ -465220,15 +468482,15 @@ "binop": null }, "value": "flags", - "start": 139800, - "end": 139805, + "start": 140314, + "end": 140319, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 20 }, "end": { - "line": 3428, + "line": 3436, "column": 25 } } @@ -465247,15 +468509,15 @@ "updateContext": null }, "value": "|", - "start": 139806, - "end": 139807, + "start": 140320, + "end": 140321, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 26 }, "end": { - "line": 3428, + "line": 3436, "column": 27 } } @@ -465273,15 +468535,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 139808, - "end": 139820, + "start": 140322, + "end": 140334, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 28 }, "end": { - "line": 3428, + "line": 3436, "column": 40 } } @@ -465299,15 +468561,15 @@ "binop": null, "updateContext": null }, - "start": 139820, - "end": 139821, + "start": 140334, + "end": 140335, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 40 }, "end": { - "line": 3428, + "line": 3436, "column": 41 } } @@ -465325,15 +468587,15 @@ "binop": null }, "value": "CLIPPABLE", - "start": 139821, - "end": 139830, + "start": 140335, + "end": 140344, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 41 }, "end": { - "line": 3428, + "line": 3436, "column": 50 } } @@ -465351,15 +468613,15 @@ "binop": null, "updateContext": null }, - "start": 139830, - "end": 139831, + "start": 140344, + "end": 140345, "loc": { "start": { - "line": 3428, + "line": 3436, "column": 50 }, "end": { - "line": 3428, + "line": 3436, "column": 51 } } @@ -465376,15 +468638,15 @@ "postfix": false, "binop": null }, - "start": 139840, - "end": 139841, + "start": 140354, + "end": 140355, "loc": { "start": { - "line": 3429, + "line": 3437, "column": 8 }, "end": { - "line": 3429, + "line": 3437, "column": 9 } } @@ -465404,15 +468666,15 @@ "updateContext": null }, "value": "if", - "start": 139850, - "end": 139852, + "start": 140364, + "end": 140366, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 8 }, "end": { - "line": 3430, + "line": 3438, "column": 10 } } @@ -465429,15 +468691,15 @@ "postfix": false, "binop": null }, - "start": 139853, - "end": 139854, + "start": 140367, + "end": 140368, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 11 }, "end": { - "line": 3430, + "line": 3438, "column": 12 } } @@ -465457,15 +468719,15 @@ "updateContext": null }, "value": "this", - "start": 139854, - "end": 139858, + "start": 140368, + "end": 140372, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 12 }, "end": { - "line": 3430, + "line": 3438, "column": 16 } } @@ -465483,15 +468745,15 @@ "binop": null, "updateContext": null }, - "start": 139858, - "end": 139859, + "start": 140372, + "end": 140373, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 16 }, "end": { - "line": 3430, + "line": 3438, "column": 17 } } @@ -465509,15 +468771,15 @@ "binop": null }, "value": "_collidable", - "start": 139859, - "end": 139870, + "start": 140373, + "end": 140384, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 17 }, "end": { - "line": 3430, + "line": 3438, "column": 28 } } @@ -465536,15 +468798,15 @@ "updateContext": null }, "value": "&&", - "start": 139871, - "end": 139873, + "start": 140385, + "end": 140387, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 29 }, "end": { - "line": 3430, + "line": 3438, "column": 31 } } @@ -465562,15 +468824,15 @@ "binop": null }, "value": "cfg", - "start": 139874, - "end": 139877, + "start": 140388, + "end": 140391, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 32 }, "end": { - "line": 3430, + "line": 3438, "column": 35 } } @@ -465588,15 +468850,15 @@ "binop": null, "updateContext": null }, - "start": 139877, - "end": 139878, + "start": 140391, + "end": 140392, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 35 }, "end": { - "line": 3430, + "line": 3438, "column": 36 } } @@ -465614,15 +468876,15 @@ "binop": null }, "value": "collidable", - "start": 139878, - "end": 139888, + "start": 140392, + "end": 140402, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 36 }, "end": { - "line": 3430, + "line": 3438, "column": 46 } } @@ -465641,15 +468903,15 @@ "updateContext": null }, "value": "!==", - "start": 139889, - "end": 139892, + "start": 140403, + "end": 140406, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 47 }, "end": { - "line": 3430, + "line": 3438, "column": 50 } } @@ -465669,15 +468931,15 @@ "updateContext": null }, "value": "false", - "start": 139893, - "end": 139898, + "start": 140407, + "end": 140412, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 51 }, "end": { - "line": 3430, + "line": 3438, "column": 56 } } @@ -465694,15 +468956,15 @@ "postfix": false, "binop": null }, - "start": 139898, - "end": 139899, + "start": 140412, + "end": 140413, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 56 }, "end": { - "line": 3430, + "line": 3438, "column": 57 } } @@ -465719,15 +468981,15 @@ "postfix": false, "binop": null }, - "start": 139900, - "end": 139901, + "start": 140414, + "end": 140415, "loc": { "start": { - "line": 3430, + "line": 3438, "column": 58 }, "end": { - "line": 3430, + "line": 3438, "column": 59 } } @@ -465745,15 +469007,15 @@ "binop": null }, "value": "flags", - "start": 139914, - "end": 139919, + "start": 140428, + "end": 140433, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 12 }, "end": { - "line": 3431, + "line": 3439, "column": 17 } } @@ -465772,15 +469034,15 @@ "updateContext": null }, "value": "=", - "start": 139920, - "end": 139921, + "start": 140434, + "end": 140435, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 18 }, "end": { - "line": 3431, + "line": 3439, "column": 19 } } @@ -465798,15 +469060,15 @@ "binop": null }, "value": "flags", - "start": 139922, - "end": 139927, + "start": 140436, + "end": 140441, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 20 }, "end": { - "line": 3431, + "line": 3439, "column": 25 } } @@ -465825,15 +469087,15 @@ "updateContext": null }, "value": "|", - "start": 139928, - "end": 139929, + "start": 140442, + "end": 140443, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 26 }, "end": { - "line": 3431, + "line": 3439, "column": 27 } } @@ -465851,15 +469113,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 139930, - "end": 139942, + "start": 140444, + "end": 140456, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 28 }, "end": { - "line": 3431, + "line": 3439, "column": 40 } } @@ -465877,15 +469139,15 @@ "binop": null, "updateContext": null }, - "start": 139942, - "end": 139943, + "start": 140456, + "end": 140457, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 40 }, "end": { - "line": 3431, + "line": 3439, "column": 41 } } @@ -465903,15 +469165,15 @@ "binop": null }, "value": "COLLIDABLE", - "start": 139943, - "end": 139953, + "start": 140457, + "end": 140467, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 41 }, "end": { - "line": 3431, + "line": 3439, "column": 51 } } @@ -465929,15 +469191,15 @@ "binop": null, "updateContext": null }, - "start": 139953, - "end": 139954, + "start": 140467, + "end": 140468, "loc": { "start": { - "line": 3431, + "line": 3439, "column": 51 }, "end": { - "line": 3431, + "line": 3439, "column": 52 } } @@ -465954,15 +469216,15 @@ "postfix": false, "binop": null }, - "start": 139963, - "end": 139964, + "start": 140477, + "end": 140478, "loc": { "start": { - "line": 3432, + "line": 3440, "column": 8 }, "end": { - "line": 3432, + "line": 3440, "column": 9 } } @@ -465982,15 +469244,15 @@ "updateContext": null }, "value": "if", - "start": 139973, - "end": 139975, + "start": 140487, + "end": 140489, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 8 }, "end": { - "line": 3433, + "line": 3441, "column": 10 } } @@ -466007,15 +469269,15 @@ "postfix": false, "binop": null }, - "start": 139976, - "end": 139977, + "start": 140490, + "end": 140491, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 11 }, "end": { - "line": 3433, + "line": 3441, "column": 12 } } @@ -466035,15 +469297,15 @@ "updateContext": null }, "value": "this", - "start": 139977, - "end": 139981, + "start": 140491, + "end": 140495, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 12 }, "end": { - "line": 3433, + "line": 3441, "column": 16 } } @@ -466061,15 +469323,15 @@ "binop": null, "updateContext": null }, - "start": 139981, - "end": 139982, + "start": 140495, + "end": 140496, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 16 }, "end": { - "line": 3433, + "line": 3441, "column": 17 } } @@ -466087,15 +469349,15 @@ "binop": null }, "value": "_edges", - "start": 139982, - "end": 139988, + "start": 140496, + "end": 140502, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 17 }, "end": { - "line": 3433, + "line": 3441, "column": 23 } } @@ -466114,15 +469376,15 @@ "updateContext": null }, "value": "&&", - "start": 139989, - "end": 139991, + "start": 140503, + "end": 140505, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 24 }, "end": { - "line": 3433, + "line": 3441, "column": 26 } } @@ -466140,15 +469402,15 @@ "binop": null }, "value": "cfg", - "start": 139992, - "end": 139995, + "start": 140506, + "end": 140509, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 27 }, "end": { - "line": 3433, + "line": 3441, "column": 30 } } @@ -466166,15 +469428,15 @@ "binop": null, "updateContext": null }, - "start": 139995, - "end": 139996, + "start": 140509, + "end": 140510, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 30 }, "end": { - "line": 3433, + "line": 3441, "column": 31 } } @@ -466192,15 +469454,15 @@ "binop": null }, "value": "edges", - "start": 139996, - "end": 140001, + "start": 140510, + "end": 140515, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 31 }, "end": { - "line": 3433, + "line": 3441, "column": 36 } } @@ -466219,15 +469481,15 @@ "updateContext": null }, "value": "!==", - "start": 140002, - "end": 140005, + "start": 140516, + "end": 140519, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 37 }, "end": { - "line": 3433, + "line": 3441, "column": 40 } } @@ -466247,15 +469509,15 @@ "updateContext": null }, "value": "false", - "start": 140006, - "end": 140011, + "start": 140520, + "end": 140525, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 41 }, "end": { - "line": 3433, + "line": 3441, "column": 46 } } @@ -466272,15 +469534,15 @@ "postfix": false, "binop": null }, - "start": 140011, - "end": 140012, + "start": 140525, + "end": 140526, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 46 }, "end": { - "line": 3433, + "line": 3441, "column": 47 } } @@ -466297,15 +469559,15 @@ "postfix": false, "binop": null }, - "start": 140013, - "end": 140014, + "start": 140527, + "end": 140528, "loc": { "start": { - "line": 3433, + "line": 3441, "column": 48 }, "end": { - "line": 3433, + "line": 3441, "column": 49 } } @@ -466323,15 +469585,15 @@ "binop": null }, "value": "flags", - "start": 140027, - "end": 140032, + "start": 140541, + "end": 140546, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 12 }, "end": { - "line": 3434, + "line": 3442, "column": 17 } } @@ -466350,15 +469612,15 @@ "updateContext": null }, "value": "=", - "start": 140033, - "end": 140034, + "start": 140547, + "end": 140548, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 18 }, "end": { - "line": 3434, + "line": 3442, "column": 19 } } @@ -466376,15 +469638,15 @@ "binop": null }, "value": "flags", - "start": 140035, - "end": 140040, + "start": 140549, + "end": 140554, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 20 }, "end": { - "line": 3434, + "line": 3442, "column": 25 } } @@ -466403,15 +469665,15 @@ "updateContext": null }, "value": "|", - "start": 140041, - "end": 140042, + "start": 140555, + "end": 140556, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 26 }, "end": { - "line": 3434, + "line": 3442, "column": 27 } } @@ -466429,15 +469691,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 140043, - "end": 140055, + "start": 140557, + "end": 140569, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 28 }, "end": { - "line": 3434, + "line": 3442, "column": 40 } } @@ -466455,15 +469717,15 @@ "binop": null, "updateContext": null }, - "start": 140055, - "end": 140056, + "start": 140569, + "end": 140570, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 40 }, "end": { - "line": 3434, + "line": 3442, "column": 41 } } @@ -466481,15 +469743,15 @@ "binop": null }, "value": "EDGES", - "start": 140056, - "end": 140061, + "start": 140570, + "end": 140575, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 41 }, "end": { - "line": 3434, + "line": 3442, "column": 46 } } @@ -466507,15 +469769,15 @@ "binop": null, "updateContext": null }, - "start": 140061, - "end": 140062, + "start": 140575, + "end": 140576, "loc": { "start": { - "line": 3434, + "line": 3442, "column": 46 }, "end": { - "line": 3434, + "line": 3442, "column": 47 } } @@ -466532,15 +469794,15 @@ "postfix": false, "binop": null }, - "start": 140071, - "end": 140072, + "start": 140585, + "end": 140586, "loc": { "start": { - "line": 3435, + "line": 3443, "column": 8 }, "end": { - "line": 3435, + "line": 3443, "column": 9 } } @@ -466560,15 +469822,15 @@ "updateContext": null }, "value": "if", - "start": 140081, - "end": 140083, + "start": 140595, + "end": 140597, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 8 }, "end": { - "line": 3436, + "line": 3444, "column": 10 } } @@ -466585,15 +469847,15 @@ "postfix": false, "binop": null }, - "start": 140084, - "end": 140085, + "start": 140598, + "end": 140599, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 11 }, "end": { - "line": 3436, + "line": 3444, "column": 12 } } @@ -466613,15 +469875,15 @@ "updateContext": null }, "value": "this", - "start": 140085, - "end": 140089, + "start": 140599, + "end": 140603, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 12 }, "end": { - "line": 3436, + "line": 3444, "column": 16 } } @@ -466639,15 +469901,15 @@ "binop": null, "updateContext": null }, - "start": 140089, - "end": 140090, + "start": 140603, + "end": 140604, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 16 }, "end": { - "line": 3436, + "line": 3444, "column": 17 } } @@ -466665,15 +469927,15 @@ "binop": null }, "value": "_xrayed", - "start": 140090, - "end": 140097, + "start": 140604, + "end": 140611, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 17 }, "end": { - "line": 3436, + "line": 3444, "column": 24 } } @@ -466692,15 +469954,15 @@ "updateContext": null }, "value": "&&", - "start": 140098, - "end": 140100, + "start": 140612, + "end": 140614, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 25 }, "end": { - "line": 3436, + "line": 3444, "column": 27 } } @@ -466718,15 +469980,15 @@ "binop": null }, "value": "cfg", - "start": 140101, - "end": 140104, + "start": 140615, + "end": 140618, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 28 }, "end": { - "line": 3436, + "line": 3444, "column": 31 } } @@ -466744,15 +470006,15 @@ "binop": null, "updateContext": null }, - "start": 140104, - "end": 140105, + "start": 140618, + "end": 140619, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 31 }, "end": { - "line": 3436, + "line": 3444, "column": 32 } } @@ -466770,15 +470032,15 @@ "binop": null }, "value": "xrayed", - "start": 140105, - "end": 140111, + "start": 140619, + "end": 140625, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 32 }, "end": { - "line": 3436, + "line": 3444, "column": 38 } } @@ -466797,15 +470059,15 @@ "updateContext": null }, "value": "!==", - "start": 140112, - "end": 140115, + "start": 140626, + "end": 140629, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 39 }, "end": { - "line": 3436, + "line": 3444, "column": 42 } } @@ -466825,15 +470087,15 @@ "updateContext": null }, "value": "false", - "start": 140116, - "end": 140121, + "start": 140630, + "end": 140635, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 43 }, "end": { - "line": 3436, + "line": 3444, "column": 48 } } @@ -466850,15 +470112,15 @@ "postfix": false, "binop": null }, - "start": 140121, - "end": 140122, + "start": 140635, + "end": 140636, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 48 }, "end": { - "line": 3436, + "line": 3444, "column": 49 } } @@ -466875,15 +470137,15 @@ "postfix": false, "binop": null }, - "start": 140123, - "end": 140124, + "start": 140637, + "end": 140638, "loc": { "start": { - "line": 3436, + "line": 3444, "column": 50 }, "end": { - "line": 3436, + "line": 3444, "column": 51 } } @@ -466901,15 +470163,15 @@ "binop": null }, "value": "flags", - "start": 140137, - "end": 140142, + "start": 140651, + "end": 140656, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 12 }, "end": { - "line": 3437, + "line": 3445, "column": 17 } } @@ -466928,15 +470190,15 @@ "updateContext": null }, "value": "=", - "start": 140143, - "end": 140144, + "start": 140657, + "end": 140658, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 18 }, "end": { - "line": 3437, + "line": 3445, "column": 19 } } @@ -466954,15 +470216,15 @@ "binop": null }, "value": "flags", - "start": 140145, - "end": 140150, + "start": 140659, + "end": 140664, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 20 }, "end": { - "line": 3437, + "line": 3445, "column": 25 } } @@ -466981,15 +470243,15 @@ "updateContext": null }, "value": "|", - "start": 140151, - "end": 140152, + "start": 140665, + "end": 140666, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 26 }, "end": { - "line": 3437, + "line": 3445, "column": 27 } } @@ -467007,15 +470269,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 140153, - "end": 140165, + "start": 140667, + "end": 140679, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 28 }, "end": { - "line": 3437, + "line": 3445, "column": 40 } } @@ -467033,15 +470295,15 @@ "binop": null, "updateContext": null }, - "start": 140165, - "end": 140166, + "start": 140679, + "end": 140680, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 40 }, "end": { - "line": 3437, + "line": 3445, "column": 41 } } @@ -467059,15 +470321,15 @@ "binop": null }, "value": "XRAYED", - "start": 140166, - "end": 140172, + "start": 140680, + "end": 140686, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 41 }, "end": { - "line": 3437, + "line": 3445, "column": 47 } } @@ -467085,15 +470347,15 @@ "binop": null, "updateContext": null }, - "start": 140172, - "end": 140173, + "start": 140686, + "end": 140687, "loc": { "start": { - "line": 3437, + "line": 3445, "column": 47 }, "end": { - "line": 3437, + "line": 3445, "column": 48 } } @@ -467110,15 +470372,15 @@ "postfix": false, "binop": null }, - "start": 140182, - "end": 140183, + "start": 140696, + "end": 140697, "loc": { "start": { - "line": 3438, + "line": 3446, "column": 8 }, "end": { - "line": 3438, + "line": 3446, "column": 9 } } @@ -467138,15 +470400,15 @@ "updateContext": null }, "value": "if", - "start": 140192, - "end": 140194, + "start": 140706, + "end": 140708, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 8 }, "end": { - "line": 3439, + "line": 3447, "column": 10 } } @@ -467163,15 +470425,15 @@ "postfix": false, "binop": null }, - "start": 140195, - "end": 140196, + "start": 140709, + "end": 140710, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 11 }, "end": { - "line": 3439, + "line": 3447, "column": 12 } } @@ -467191,15 +470453,15 @@ "updateContext": null }, "value": "this", - "start": 140196, - "end": 140200, + "start": 140710, + "end": 140714, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 12 }, "end": { - "line": 3439, + "line": 3447, "column": 16 } } @@ -467217,15 +470479,15 @@ "binop": null, "updateContext": null }, - "start": 140200, - "end": 140201, + "start": 140714, + "end": 140715, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 16 }, "end": { - "line": 3439, + "line": 3447, "column": 17 } } @@ -467243,15 +470505,15 @@ "binop": null }, "value": "_highlighted", - "start": 140201, - "end": 140213, + "start": 140715, + "end": 140727, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 17 }, "end": { - "line": 3439, + "line": 3447, "column": 29 } } @@ -467270,15 +470532,15 @@ "updateContext": null }, "value": "&&", - "start": 140214, - "end": 140216, + "start": 140728, + "end": 140730, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 30 }, "end": { - "line": 3439, + "line": 3447, "column": 32 } } @@ -467296,15 +470558,15 @@ "binop": null }, "value": "cfg", - "start": 140217, - "end": 140220, + "start": 140731, + "end": 140734, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 33 }, "end": { - "line": 3439, + "line": 3447, "column": 36 } } @@ -467322,15 +470584,15 @@ "binop": null, "updateContext": null }, - "start": 140220, - "end": 140221, + "start": 140734, + "end": 140735, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 36 }, "end": { - "line": 3439, + "line": 3447, "column": 37 } } @@ -467348,15 +470610,15 @@ "binop": null }, "value": "highlighted", - "start": 140221, - "end": 140232, + "start": 140735, + "end": 140746, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 37 }, "end": { - "line": 3439, + "line": 3447, "column": 48 } } @@ -467375,15 +470637,15 @@ "updateContext": null }, "value": "!==", - "start": 140233, - "end": 140236, + "start": 140747, + "end": 140750, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 49 }, "end": { - "line": 3439, + "line": 3447, "column": 52 } } @@ -467403,15 +470665,15 @@ "updateContext": null }, "value": "false", - "start": 140237, - "end": 140242, + "start": 140751, + "end": 140756, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 53 }, "end": { - "line": 3439, + "line": 3447, "column": 58 } } @@ -467428,15 +470690,15 @@ "postfix": false, "binop": null }, - "start": 140242, - "end": 140243, + "start": 140756, + "end": 140757, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 58 }, "end": { - "line": 3439, + "line": 3447, "column": 59 } } @@ -467453,15 +470715,15 @@ "postfix": false, "binop": null }, - "start": 140244, - "end": 140245, + "start": 140758, + "end": 140759, "loc": { "start": { - "line": 3439, + "line": 3447, "column": 60 }, "end": { - "line": 3439, + "line": 3447, "column": 61 } } @@ -467479,15 +470741,15 @@ "binop": null }, "value": "flags", - "start": 140258, - "end": 140263, + "start": 140772, + "end": 140777, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 12 }, "end": { - "line": 3440, + "line": 3448, "column": 17 } } @@ -467506,15 +470768,15 @@ "updateContext": null }, "value": "=", - "start": 140264, - "end": 140265, + "start": 140778, + "end": 140779, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 18 }, "end": { - "line": 3440, + "line": 3448, "column": 19 } } @@ -467532,15 +470794,15 @@ "binop": null }, "value": "flags", - "start": 140266, - "end": 140271, + "start": 140780, + "end": 140785, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 20 }, "end": { - "line": 3440, + "line": 3448, "column": 25 } } @@ -467559,15 +470821,15 @@ "updateContext": null }, "value": "|", - "start": 140272, - "end": 140273, + "start": 140786, + "end": 140787, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 26 }, "end": { - "line": 3440, + "line": 3448, "column": 27 } } @@ -467585,15 +470847,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 140274, - "end": 140286, + "start": 140788, + "end": 140800, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 28 }, "end": { - "line": 3440, + "line": 3448, "column": 40 } } @@ -467611,15 +470873,15 @@ "binop": null, "updateContext": null }, - "start": 140286, - "end": 140287, + "start": 140800, + "end": 140801, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 40 }, "end": { - "line": 3440, + "line": 3448, "column": 41 } } @@ -467637,15 +470899,15 @@ "binop": null }, "value": "HIGHLIGHTED", - "start": 140287, - "end": 140298, + "start": 140801, + "end": 140812, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 41 }, "end": { - "line": 3440, + "line": 3448, "column": 52 } } @@ -467663,15 +470925,15 @@ "binop": null, "updateContext": null }, - "start": 140298, - "end": 140299, + "start": 140812, + "end": 140813, "loc": { "start": { - "line": 3440, + "line": 3448, "column": 52 }, "end": { - "line": 3440, + "line": 3448, "column": 53 } } @@ -467688,15 +470950,15 @@ "postfix": false, "binop": null }, - "start": 140308, - "end": 140309, + "start": 140822, + "end": 140823, "loc": { "start": { - "line": 3441, + "line": 3449, "column": 8 }, "end": { - "line": 3441, + "line": 3449, "column": 9 } } @@ -467716,15 +470978,15 @@ "updateContext": null }, "value": "if", - "start": 140318, - "end": 140320, + "start": 140832, + "end": 140834, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 8 }, "end": { - "line": 3442, + "line": 3450, "column": 10 } } @@ -467741,15 +471003,15 @@ "postfix": false, "binop": null }, - "start": 140321, - "end": 140322, + "start": 140835, + "end": 140836, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 11 }, "end": { - "line": 3442, + "line": 3450, "column": 12 } } @@ -467769,15 +471031,15 @@ "updateContext": null }, "value": "this", - "start": 140322, - "end": 140326, + "start": 140836, + "end": 140840, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 12 }, "end": { - "line": 3442, + "line": 3450, "column": 16 } } @@ -467795,15 +471057,15 @@ "binop": null, "updateContext": null }, - "start": 140326, - "end": 140327, + "start": 140840, + "end": 140841, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 16 }, "end": { - "line": 3442, + "line": 3450, "column": 17 } } @@ -467821,15 +471083,15 @@ "binop": null }, "value": "_selected", - "start": 140327, - "end": 140336, + "start": 140841, + "end": 140850, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 17 }, "end": { - "line": 3442, + "line": 3450, "column": 26 } } @@ -467848,15 +471110,15 @@ "updateContext": null }, "value": "&&", - "start": 140337, - "end": 140339, + "start": 140851, + "end": 140853, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 27 }, "end": { - "line": 3442, + "line": 3450, "column": 29 } } @@ -467874,15 +471136,15 @@ "binop": null }, "value": "cfg", - "start": 140340, - "end": 140343, + "start": 140854, + "end": 140857, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 30 }, "end": { - "line": 3442, + "line": 3450, "column": 33 } } @@ -467900,15 +471162,15 @@ "binop": null, "updateContext": null }, - "start": 140343, - "end": 140344, + "start": 140857, + "end": 140858, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 33 }, "end": { - "line": 3442, + "line": 3450, "column": 34 } } @@ -467926,15 +471188,15 @@ "binop": null }, "value": "selected", - "start": 140344, - "end": 140352, + "start": 140858, + "end": 140866, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 34 }, "end": { - "line": 3442, + "line": 3450, "column": 42 } } @@ -467953,15 +471215,15 @@ "updateContext": null }, "value": "!==", - "start": 140353, - "end": 140356, + "start": 140867, + "end": 140870, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 43 }, "end": { - "line": 3442, + "line": 3450, "column": 46 } } @@ -467981,15 +471243,15 @@ "updateContext": null }, "value": "false", - "start": 140357, - "end": 140362, + "start": 140871, + "end": 140876, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 47 }, "end": { - "line": 3442, + "line": 3450, "column": 52 } } @@ -468006,15 +471268,15 @@ "postfix": false, "binop": null }, - "start": 140362, - "end": 140363, + "start": 140876, + "end": 140877, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 52 }, "end": { - "line": 3442, + "line": 3450, "column": 53 } } @@ -468031,15 +471293,15 @@ "postfix": false, "binop": null }, - "start": 140364, - "end": 140365, + "start": 140878, + "end": 140879, "loc": { "start": { - "line": 3442, + "line": 3450, "column": 54 }, "end": { - "line": 3442, + "line": 3450, "column": 55 } } @@ -468057,15 +471319,15 @@ "binop": null }, "value": "flags", - "start": 140378, - "end": 140383, + "start": 140892, + "end": 140897, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 12 }, "end": { - "line": 3443, + "line": 3451, "column": 17 } } @@ -468084,15 +471346,15 @@ "updateContext": null }, "value": "=", - "start": 140384, - "end": 140385, + "start": 140898, + "end": 140899, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 18 }, "end": { - "line": 3443, + "line": 3451, "column": 19 } } @@ -468110,15 +471372,15 @@ "binop": null }, "value": "flags", - "start": 140386, - "end": 140391, + "start": 140900, + "end": 140905, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 20 }, "end": { - "line": 3443, + "line": 3451, "column": 25 } } @@ -468137,15 +471399,15 @@ "updateContext": null }, "value": "|", - "start": 140392, - "end": 140393, + "start": 140906, + "end": 140907, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 26 }, "end": { - "line": 3443, + "line": 3451, "column": 27 } } @@ -468163,15 +471425,15 @@ "binop": null }, "value": "ENTITY_FLAGS", - "start": 140394, - "end": 140406, + "start": 140908, + "end": 140920, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 28 }, "end": { - "line": 3443, + "line": 3451, "column": 40 } } @@ -468189,15 +471451,15 @@ "binop": null, "updateContext": null }, - "start": 140406, - "end": 140407, + "start": 140920, + "end": 140921, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 40 }, "end": { - "line": 3443, + "line": 3451, "column": 41 } } @@ -468215,15 +471477,15 @@ "binop": null }, "value": "SELECTED", - "start": 140407, - "end": 140415, + "start": 140921, + "end": 140929, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 41 }, "end": { - "line": 3443, + "line": 3451, "column": 49 } } @@ -468241,15 +471503,15 @@ "binop": null, "updateContext": null }, - "start": 140415, - "end": 140416, + "start": 140929, + "end": 140930, "loc": { "start": { - "line": 3443, + "line": 3451, "column": 49 }, "end": { - "line": 3443, + "line": 3451, "column": 50 } } @@ -468266,15 +471528,15 @@ "postfix": false, "binop": null }, - "start": 140425, - "end": 140426, + "start": 140939, + "end": 140940, "loc": { "start": { - "line": 3444, + "line": 3452, "column": 8 }, "end": { - "line": 3444, + "line": 3452, "column": 9 } } @@ -468292,15 +471554,15 @@ "binop": null }, "value": "cfg", - "start": 140435, - "end": 140438, + "start": 140949, + "end": 140952, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 8 }, "end": { - "line": 3445, + "line": 3453, "column": 11 } } @@ -468318,15 +471580,15 @@ "binop": null, "updateContext": null }, - "start": 140438, - "end": 140439, + "start": 140952, + "end": 140953, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 11 }, "end": { - "line": 3445, + "line": 3453, "column": 12 } } @@ -468344,15 +471606,15 @@ "binop": null }, "value": "flags", - "start": 140439, - "end": 140444, + "start": 140953, + "end": 140958, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 12 }, "end": { - "line": 3445, + "line": 3453, "column": 17 } } @@ -468371,15 +471633,15 @@ "updateContext": null }, "value": "=", - "start": 140445, - "end": 140446, + "start": 140959, + "end": 140960, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 18 }, "end": { - "line": 3445, + "line": 3453, "column": 19 } } @@ -468397,15 +471659,15 @@ "binop": null }, "value": "flags", - "start": 140447, - "end": 140452, + "start": 140961, + "end": 140966, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 20 }, "end": { - "line": 3445, + "line": 3453, "column": 25 } } @@ -468423,15 +471685,15 @@ "binop": null, "updateContext": null }, - "start": 140452, - "end": 140453, + "start": 140966, + "end": 140967, "loc": { "start": { - "line": 3445, + "line": 3453, "column": 25 }, "end": { - "line": 3445, + "line": 3453, "column": 26 } } @@ -468451,15 +471713,15 @@ "updateContext": null }, "value": "this", - "start": 140462, - "end": 140466, + "start": 140976, + "end": 140980, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 8 }, "end": { - "line": 3446, + "line": 3454, "column": 12 } } @@ -468477,15 +471739,15 @@ "binop": null, "updateContext": null }, - "start": 140466, - "end": 140467, + "start": 140980, + "end": 140981, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 12 }, "end": { - "line": 3446, + "line": 3454, "column": 13 } } @@ -468503,15 +471765,15 @@ "binop": null }, "value": "_createEntity", - "start": 140467, - "end": 140480, + "start": 140981, + "end": 140994, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 13 }, "end": { - "line": 3446, + "line": 3454, "column": 26 } } @@ -468528,15 +471790,15 @@ "postfix": false, "binop": null }, - "start": 140480, - "end": 140481, + "start": 140994, + "end": 140995, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 26 }, "end": { - "line": 3446, + "line": 3454, "column": 27 } } @@ -468554,15 +471816,15 @@ "binop": null }, "value": "cfg", - "start": 140481, - "end": 140484, + "start": 140995, + "end": 140998, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 27 }, "end": { - "line": 3446, + "line": 3454, "column": 30 } } @@ -468579,15 +471841,15 @@ "postfix": false, "binop": null }, - "start": 140484, - "end": 140485, + "start": 140998, + "end": 140999, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 30 }, "end": { - "line": 3446, + "line": 3454, "column": 31 } } @@ -468605,15 +471867,15 @@ "binop": null, "updateContext": null }, - "start": 140485, - "end": 140486, + "start": 140999, + "end": 141000, "loc": { "start": { - "line": 3446, + "line": 3454, "column": 31 }, "end": { - "line": 3446, + "line": 3454, "column": 32 } } @@ -468630,15 +471892,15 @@ "postfix": false, "binop": null }, - "start": 140491, - "end": 140492, + "start": 141005, + "end": 141006, "loc": { "start": { - "line": 3447, + "line": 3455, "column": 4 }, "end": { - "line": 3447, + "line": 3455, "column": 5 } } @@ -468656,15 +471918,15 @@ "binop": null }, "value": "_createEntity", - "start": 140498, - "end": 140511, + "start": 141012, + "end": 141025, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 4 }, "end": { - "line": 3449, + "line": 3457, "column": 17 } } @@ -468681,15 +471943,15 @@ "postfix": false, "binop": null }, - "start": 140511, - "end": 140512, + "start": 141025, + "end": 141026, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 17 }, "end": { - "line": 3449, + "line": 3457, "column": 18 } } @@ -468707,15 +471969,15 @@ "binop": null }, "value": "cfg", - "start": 140512, - "end": 140515, + "start": 141026, + "end": 141029, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 18 }, "end": { - "line": 3449, + "line": 3457, "column": 21 } } @@ -468732,15 +471994,15 @@ "postfix": false, "binop": null }, - "start": 140515, - "end": 140516, + "start": 141029, + "end": 141030, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 21 }, "end": { - "line": 3449, + "line": 3457, "column": 22 } } @@ -468757,15 +472019,15 @@ "postfix": false, "binop": null }, - "start": 140517, - "end": 140518, + "start": 141031, + "end": 141032, "loc": { "start": { - "line": 3449, + "line": 3457, "column": 23 }, "end": { - "line": 3449, + "line": 3457, "column": 24 } } @@ -468785,15 +472047,15 @@ "updateContext": null }, "value": "let", - "start": 140527, - "end": 140530, + "start": 141041, + "end": 141044, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 8 }, "end": { - "line": 3450, + "line": 3458, "column": 11 } } @@ -468811,15 +472073,15 @@ "binop": null }, "value": "meshes", - "start": 140531, - "end": 140537, + "start": 141045, + "end": 141051, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 12 }, "end": { - "line": 3450, + "line": 3458, "column": 18 } } @@ -468838,15 +472100,15 @@ "updateContext": null }, "value": "=", - "start": 140538, - "end": 140539, + "start": 141052, + "end": 141053, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 19 }, "end": { - "line": 3450, + "line": 3458, "column": 20 } } @@ -468864,15 +472126,15 @@ "binop": null, "updateContext": null }, - "start": 140540, - "end": 140541, + "start": 141054, + "end": 141055, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 21 }, "end": { - "line": 3450, + "line": 3458, "column": 22 } } @@ -468890,15 +472152,15 @@ "binop": null, "updateContext": null }, - "start": 140541, - "end": 140542, + "start": 141055, + "end": 141056, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 22 }, "end": { - "line": 3450, + "line": 3458, "column": 23 } } @@ -468916,15 +472178,15 @@ "binop": null, "updateContext": null }, - "start": 140542, - "end": 140543, + "start": 141056, + "end": 141057, "loc": { "start": { - "line": 3450, + "line": 3458, "column": 23 }, "end": { - "line": 3450, + "line": 3458, "column": 24 } } @@ -468944,15 +472206,15 @@ "updateContext": null }, "value": "for", - "start": 140552, - "end": 140555, + "start": 141066, + "end": 141069, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 8 }, "end": { - "line": 3451, + "line": 3459, "column": 11 } } @@ -468969,15 +472231,15 @@ "postfix": false, "binop": null }, - "start": 140556, - "end": 140557, + "start": 141070, + "end": 141071, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 12 }, "end": { - "line": 3451, + "line": 3459, "column": 13 } } @@ -468997,15 +472259,15 @@ "updateContext": null }, "value": "let", - "start": 140557, - "end": 140560, + "start": 141071, + "end": 141074, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 13 }, "end": { - "line": 3451, + "line": 3459, "column": 16 } } @@ -469023,15 +472285,15 @@ "binop": null }, "value": "i", - "start": 140561, - "end": 140562, + "start": 141075, + "end": 141076, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 17 }, "end": { - "line": 3451, + "line": 3459, "column": 18 } } @@ -469050,15 +472312,15 @@ "updateContext": null }, "value": "=", - "start": 140563, - "end": 140564, + "start": 141077, + "end": 141078, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 19 }, "end": { - "line": 3451, + "line": 3459, "column": 20 } } @@ -469077,15 +472339,15 @@ "updateContext": null }, "value": 0, - "start": 140565, - "end": 140566, + "start": 141079, + "end": 141080, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 21 }, "end": { - "line": 3451, + "line": 3459, "column": 22 } } @@ -469103,15 +472365,15 @@ "binop": null, "updateContext": null }, - "start": 140566, - "end": 140567, + "start": 141080, + "end": 141081, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 22 }, "end": { - "line": 3451, + "line": 3459, "column": 23 } } @@ -469129,15 +472391,15 @@ "binop": null }, "value": "len", - "start": 140568, - "end": 140571, + "start": 141082, + "end": 141085, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 24 }, "end": { - "line": 3451, + "line": 3459, "column": 27 } } @@ -469156,15 +472418,15 @@ "updateContext": null }, "value": "=", - "start": 140572, - "end": 140573, + "start": 141086, + "end": 141087, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 28 }, "end": { - "line": 3451, + "line": 3459, "column": 29 } } @@ -469182,15 +472444,15 @@ "binop": null }, "value": "cfg", - "start": 140574, - "end": 140577, + "start": 141088, + "end": 141091, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 30 }, "end": { - "line": 3451, + "line": 3459, "column": 33 } } @@ -469208,15 +472470,15 @@ "binop": null, "updateContext": null }, - "start": 140577, - "end": 140578, + "start": 141091, + "end": 141092, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 33 }, "end": { - "line": 3451, + "line": 3459, "column": 34 } } @@ -469234,15 +472496,15 @@ "binop": null }, "value": "meshIds", - "start": 140578, - "end": 140585, + "start": 141092, + "end": 141099, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 34 }, "end": { - "line": 3451, + "line": 3459, "column": 41 } } @@ -469260,15 +472522,15 @@ "binop": null, "updateContext": null }, - "start": 140585, - "end": 140586, + "start": 141099, + "end": 141100, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 41 }, "end": { - "line": 3451, + "line": 3459, "column": 42 } } @@ -469286,15 +472548,15 @@ "binop": null }, "value": "length", - "start": 140586, - "end": 140592, + "start": 141100, + "end": 141106, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 42 }, "end": { - "line": 3451, + "line": 3459, "column": 48 } } @@ -469312,15 +472574,15 @@ "binop": null, "updateContext": null }, - "start": 140592, - "end": 140593, + "start": 141106, + "end": 141107, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 48 }, "end": { - "line": 3451, + "line": 3459, "column": 49 } } @@ -469338,15 +472600,15 @@ "binop": null }, "value": "i", - "start": 140594, - "end": 140595, + "start": 141108, + "end": 141109, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 50 }, "end": { - "line": 3451, + "line": 3459, "column": 51 } } @@ -469365,15 +472627,15 @@ "updateContext": null }, "value": "<", - "start": 140596, - "end": 140597, + "start": 141110, + "end": 141111, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 52 }, "end": { - "line": 3451, + "line": 3459, "column": 53 } } @@ -469391,15 +472653,15 @@ "binop": null }, "value": "len", - "start": 140598, - "end": 140601, + "start": 141112, + "end": 141115, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 54 }, "end": { - "line": 3451, + "line": 3459, "column": 57 } } @@ -469417,15 +472679,15 @@ "binop": null, "updateContext": null }, - "start": 140601, - "end": 140602, + "start": 141115, + "end": 141116, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 57 }, "end": { - "line": 3451, + "line": 3459, "column": 58 } } @@ -469443,15 +472705,15 @@ "binop": null }, "value": "i", - "start": 140603, - "end": 140604, + "start": 141117, + "end": 141118, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 59 }, "end": { - "line": 3451, + "line": 3459, "column": 60 } } @@ -469469,15 +472731,15 @@ "binop": null }, "value": "++", - "start": 140604, - "end": 140606, + "start": 141118, + "end": 141120, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 60 }, "end": { - "line": 3451, + "line": 3459, "column": 62 } } @@ -469494,15 +472756,15 @@ "postfix": false, "binop": null }, - "start": 140606, - "end": 140607, + "start": 141120, + "end": 141121, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 62 }, "end": { - "line": 3451, + "line": 3459, "column": 63 } } @@ -469519,15 +472781,15 @@ "postfix": false, "binop": null }, - "start": 140608, - "end": 140609, + "start": 141122, + "end": 141123, "loc": { "start": { - "line": 3451, + "line": 3459, "column": 64 }, "end": { - "line": 3451, + "line": 3459, "column": 65 } } @@ -469547,15 +472809,15 @@ "updateContext": null }, "value": "const", - "start": 140622, - "end": 140627, + "start": 141136, + "end": 141141, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 12 }, "end": { - "line": 3452, + "line": 3460, "column": 17 } } @@ -469573,15 +472835,15 @@ "binop": null }, "value": "meshId", - "start": 140628, - "end": 140634, + "start": 141142, + "end": 141148, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 18 }, "end": { - "line": 3452, + "line": 3460, "column": 24 } } @@ -469600,15 +472862,15 @@ "updateContext": null }, "value": "=", - "start": 140635, - "end": 140636, + "start": 141149, + "end": 141150, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 25 }, "end": { - "line": 3452, + "line": 3460, "column": 26 } } @@ -469626,15 +472888,15 @@ "binop": null }, "value": "cfg", - "start": 140637, - "end": 140640, + "start": 141151, + "end": 141154, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 27 }, "end": { - "line": 3452, + "line": 3460, "column": 30 } } @@ -469652,15 +472914,15 @@ "binop": null, "updateContext": null }, - "start": 140640, - "end": 140641, + "start": 141154, + "end": 141155, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 30 }, "end": { - "line": 3452, + "line": 3460, "column": 31 } } @@ -469678,15 +472940,15 @@ "binop": null }, "value": "meshIds", - "start": 140641, - "end": 140648, + "start": 141155, + "end": 141162, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 31 }, "end": { - "line": 3452, + "line": 3460, "column": 38 } } @@ -469704,15 +472966,15 @@ "binop": null, "updateContext": null }, - "start": 140648, - "end": 140649, + "start": 141162, + "end": 141163, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 38 }, "end": { - "line": 3452, + "line": 3460, "column": 39 } } @@ -469730,15 +472992,15 @@ "binop": null }, "value": "i", - "start": 140649, - "end": 140650, + "start": 141163, + "end": 141164, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 39 }, "end": { - "line": 3452, + "line": 3460, "column": 40 } } @@ -469756,15 +473018,15 @@ "binop": null, "updateContext": null }, - "start": 140650, - "end": 140651, + "start": 141164, + "end": 141165, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 40 }, "end": { - "line": 3452, + "line": 3460, "column": 41 } } @@ -469782,15 +473044,15 @@ "binop": null, "updateContext": null }, - "start": 140651, - "end": 140652, + "start": 141165, + "end": 141166, "loc": { "start": { - "line": 3452, + "line": 3460, "column": 41 }, "end": { - "line": 3452, + "line": 3460, "column": 42 } } @@ -469810,15 +473072,15 @@ "updateContext": null }, "value": "let", - "start": 140665, - "end": 140668, + "start": 141179, + "end": 141182, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 12 }, "end": { - "line": 3453, + "line": 3461, "column": 15 } } @@ -469836,15 +473098,15 @@ "binop": null }, "value": "mesh", - "start": 140669, - "end": 140673, + "start": 141183, + "end": 141187, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 16 }, "end": { - "line": 3453, + "line": 3461, "column": 20 } } @@ -469863,15 +473125,15 @@ "updateContext": null }, "value": "=", - "start": 140674, - "end": 140675, + "start": 141188, + "end": 141189, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 21 }, "end": { - "line": 3453, + "line": 3461, "column": 22 } } @@ -469891,15 +473153,15 @@ "updateContext": null }, "value": "this", - "start": 140676, - "end": 140680, + "start": 141190, + "end": 141194, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 23 }, "end": { - "line": 3453, + "line": 3461, "column": 27 } } @@ -469917,15 +473179,15 @@ "binop": null, "updateContext": null }, - "start": 140680, - "end": 140681, + "start": 141194, + "end": 141195, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 27 }, "end": { - "line": 3453, + "line": 3461, "column": 28 } } @@ -469943,15 +473205,15 @@ "binop": null }, "value": "_meshes", - "start": 140681, - "end": 140688, + "start": 141195, + "end": 141202, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 28 }, "end": { - "line": 3453, + "line": 3461, "column": 35 } } @@ -469969,15 +473231,15 @@ "binop": null, "updateContext": null }, - "start": 140688, - "end": 140689, + "start": 141202, + "end": 141203, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 35 }, "end": { - "line": 3453, + "line": 3461, "column": 36 } } @@ -469995,15 +473257,15 @@ "binop": null }, "value": "meshId", - "start": 140689, - "end": 140695, + "start": 141203, + "end": 141209, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 36 }, "end": { - "line": 3453, + "line": 3461, "column": 42 } } @@ -470021,15 +473283,15 @@ "binop": null, "updateContext": null }, - "start": 140695, - "end": 140696, + "start": 141209, + "end": 141210, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 42 }, "end": { - "line": 3453, + "line": 3461, "column": 43 } } @@ -470047,15 +473309,15 @@ "binop": null, "updateContext": null }, - "start": 140696, - "end": 140697, + "start": 141210, + "end": 141211, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 43 }, "end": { - "line": 3453, + "line": 3461, "column": 44 } } @@ -470063,15 +473325,15 @@ { "type": "CommentLine", "value": " Trying to get already created mesh", - "start": 140698, - "end": 140735, + "start": 141212, + "end": 141249, "loc": { "start": { - "line": 3453, + "line": 3461, "column": 45 }, "end": { - "line": 3453, + "line": 3461, "column": 82 } } @@ -470091,15 +473353,15 @@ "updateContext": null }, "value": "if", - "start": 140748, - "end": 140750, + "start": 141262, + "end": 141264, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 12 }, "end": { - "line": 3454, + "line": 3462, "column": 14 } } @@ -470116,15 +473378,15 @@ "postfix": false, "binop": null }, - "start": 140751, - "end": 140752, + "start": 141265, + "end": 141266, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 15 }, "end": { - "line": 3454, + "line": 3462, "column": 16 } } @@ -470143,15 +473405,15 @@ "updateContext": null }, "value": "!", - "start": 140752, - "end": 140753, + "start": 141266, + "end": 141267, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 16 }, "end": { - "line": 3454, + "line": 3462, "column": 17 } } @@ -470169,15 +473431,15 @@ "binop": null }, "value": "mesh", - "start": 140753, - "end": 140757, + "start": 141267, + "end": 141271, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 17 }, "end": { - "line": 3454, + "line": 3462, "column": 21 } } @@ -470194,15 +473456,15 @@ "postfix": false, "binop": null }, - "start": 140757, - "end": 140758, + "start": 141271, + "end": 141272, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 21 }, "end": { - "line": 3454, + "line": 3462, "column": 22 } } @@ -470219,15 +473481,15 @@ "postfix": false, "binop": null }, - "start": 140759, - "end": 140760, + "start": 141273, + "end": 141274, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 23 }, "end": { - "line": 3454, + "line": 3462, "column": 24 } } @@ -470235,15 +473497,15 @@ { "type": "CommentLine", "value": " Checks if there is already created mesh for this meshId", - "start": 140761, - "end": 140819, + "start": 141275, + "end": 141333, "loc": { "start": { - "line": 3454, + "line": 3462, "column": 25 }, "end": { - "line": 3454, + "line": 3462, "column": 83 } } @@ -470263,15 +473525,15 @@ "updateContext": null }, "value": "this", - "start": 140836, - "end": 140840, + "start": 141350, + "end": 141354, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 16 }, "end": { - "line": 3455, + "line": 3463, "column": 20 } } @@ -470289,15 +473551,15 @@ "binop": null, "updateContext": null }, - "start": 140840, - "end": 140841, + "start": 141354, + "end": 141355, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 20 }, "end": { - "line": 3455, + "line": 3463, "column": 21 } } @@ -470315,15 +473577,15 @@ "binop": null }, "value": "error", - "start": 140841, - "end": 140846, + "start": 141355, + "end": 141360, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 21 }, "end": { - "line": 3455, + "line": 3463, "column": 26 } } @@ -470340,15 +473602,15 @@ "postfix": false, "binop": null }, - "start": 140846, - "end": 140847, + "start": 141360, + "end": 141361, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 26 }, "end": { - "line": 3455, + "line": 3463, "column": 27 } } @@ -470365,15 +473627,15 @@ "postfix": false, "binop": null }, - "start": 140847, - "end": 140848, + "start": 141361, + "end": 141362, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 27 }, "end": { - "line": 3455, + "line": 3463, "column": 28 } } @@ -470392,15 +473654,15 @@ "updateContext": null }, "value": "Mesh with this ID not found: \"", - "start": 140848, - "end": 140878, + "start": 141362, + "end": 141392, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 28 }, "end": { - "line": 3455, + "line": 3463, "column": 58 } } @@ -470417,15 +473679,15 @@ "postfix": false, "binop": null }, - "start": 140878, - "end": 140880, + "start": 141392, + "end": 141394, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 58 }, "end": { - "line": 3455, + "line": 3463, "column": 60 } } @@ -470443,15 +473705,15 @@ "binop": null }, "value": "meshId", - "start": 140880, - "end": 140886, + "start": 141394, + "end": 141400, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 60 }, "end": { - "line": 3455, + "line": 3463, "column": 66 } } @@ -470468,15 +473730,15 @@ "postfix": false, "binop": null }, - "start": 140886, - "end": 140887, + "start": 141400, + "end": 141401, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 66 }, "end": { - "line": 3455, + "line": 3463, "column": 67 } } @@ -470495,15 +473757,15 @@ "updateContext": null }, "value": "\" - ignoring this mesh", - "start": 140887, - "end": 140909, + "start": 141401, + "end": 141423, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 67 }, "end": { - "line": 3455, + "line": 3463, "column": 89 } } @@ -470520,15 +473782,15 @@ "postfix": false, "binop": null }, - "start": 140909, - "end": 140910, + "start": 141423, + "end": 141424, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 89 }, "end": { - "line": 3455, + "line": 3463, "column": 90 } } @@ -470545,15 +473807,15 @@ "postfix": false, "binop": null }, - "start": 140910, - "end": 140911, + "start": 141424, + "end": 141425, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 90 }, "end": { - "line": 3455, + "line": 3463, "column": 91 } } @@ -470571,15 +473833,15 @@ "binop": null, "updateContext": null }, - "start": 140911, - "end": 140912, + "start": 141425, + "end": 141426, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 91 }, "end": { - "line": 3455, + "line": 3463, "column": 92 } } @@ -470587,15 +473849,15 @@ { "type": "CommentLine", "value": " There is no such cfg", - "start": 140913, - "end": 140936, + "start": 141427, + "end": 141450, "loc": { "start": { - "line": 3455, + "line": 3463, "column": 93 }, "end": { - "line": 3455, + "line": 3463, "column": 116 } } @@ -470615,15 +473877,15 @@ "updateContext": null }, "value": "continue", - "start": 140953, - "end": 140961, + "start": 141467, + "end": 141475, "loc": { "start": { - "line": 3456, + "line": 3464, "column": 16 }, "end": { - "line": 3456, + "line": 3464, "column": 24 } } @@ -470641,15 +473903,15 @@ "binop": null, "updateContext": null }, - "start": 140961, - "end": 140962, + "start": 141475, + "end": 141476, "loc": { "start": { - "line": 3456, + "line": 3464, "column": 24 }, "end": { - "line": 3456, + "line": 3464, "column": 25 } } @@ -470666,15 +473928,15 @@ "postfix": false, "binop": null }, - "start": 140975, - "end": 140976, + "start": 141489, + "end": 141490, "loc": { "start": { - "line": 3457, + "line": 3465, "column": 12 }, "end": { - "line": 3457, + "line": 3465, "column": 13 } } @@ -470694,15 +473956,15 @@ "updateContext": null }, "value": "if", - "start": 140989, - "end": 140991, + "start": 141503, + "end": 141505, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 12 }, "end": { - "line": 3458, + "line": 3466, "column": 14 } } @@ -470719,15 +473981,15 @@ "postfix": false, "binop": null }, - "start": 140992, - "end": 140993, + "start": 141506, + "end": 141507, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 15 }, "end": { - "line": 3458, + "line": 3466, "column": 16 } } @@ -470745,15 +474007,15 @@ "binop": null }, "value": "mesh", - "start": 140993, - "end": 140997, + "start": 141507, + "end": 141511, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 16 }, "end": { - "line": 3458, + "line": 3466, "column": 20 } } @@ -470771,15 +474033,15 @@ "binop": null, "updateContext": null }, - "start": 140997, - "end": 140998, + "start": 141511, + "end": 141512, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 20 }, "end": { - "line": 3458, + "line": 3466, "column": 21 } } @@ -470797,15 +474059,15 @@ "binop": null }, "value": "parent", - "start": 140998, - "end": 141004, + "start": 141512, + "end": 141518, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 21 }, "end": { - "line": 3458, + "line": 3466, "column": 27 } } @@ -470822,15 +474084,15 @@ "postfix": false, "binop": null }, - "start": 141004, - "end": 141005, + "start": 141518, + "end": 141519, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 27 }, "end": { - "line": 3458, + "line": 3466, "column": 28 } } @@ -470847,15 +474109,15 @@ "postfix": false, "binop": null }, - "start": 141006, - "end": 141007, + "start": 141520, + "end": 141521, "loc": { "start": { - "line": 3458, + "line": 3466, "column": 29 }, "end": { - "line": 3458, + "line": 3466, "column": 30 } } @@ -470875,15 +474137,15 @@ "updateContext": null }, "value": "this", - "start": 141024, - "end": 141028, + "start": 141538, + "end": 141542, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 16 }, "end": { - "line": 3459, + "line": 3467, "column": 20 } } @@ -470901,15 +474163,15 @@ "binop": null, "updateContext": null }, - "start": 141028, - "end": 141029, + "start": 141542, + "end": 141543, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 20 }, "end": { - "line": 3459, + "line": 3467, "column": 21 } } @@ -470927,15 +474189,15 @@ "binop": null }, "value": "error", - "start": 141029, - "end": 141034, + "start": 141543, + "end": 141548, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 21 }, "end": { - "line": 3459, + "line": 3467, "column": 26 } } @@ -470952,15 +474214,15 @@ "postfix": false, "binop": null }, - "start": 141034, - "end": 141035, + "start": 141548, + "end": 141549, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 26 }, "end": { - "line": 3459, + "line": 3467, "column": 27 } } @@ -470977,15 +474239,15 @@ "postfix": false, "binop": null }, - "start": 141035, - "end": 141036, + "start": 141549, + "end": 141550, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 27 }, "end": { - "line": 3459, + "line": 3467, "column": 28 } } @@ -471004,15 +474266,15 @@ "updateContext": null }, "value": "Mesh with ID \"", - "start": 141036, - "end": 141050, + "start": 141550, + "end": 141564, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 28 }, "end": { - "line": 3459, + "line": 3467, "column": 42 } } @@ -471029,15 +474291,15 @@ "postfix": false, "binop": null }, - "start": 141050, - "end": 141052, + "start": 141564, + "end": 141566, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 42 }, "end": { - "line": 3459, + "line": 3467, "column": 44 } } @@ -471055,15 +474317,15 @@ "binop": null }, "value": "meshId", - "start": 141052, - "end": 141058, + "start": 141566, + "end": 141572, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 44 }, "end": { - "line": 3459, + "line": 3467, "column": 50 } } @@ -471080,15 +474342,15 @@ "postfix": false, "binop": null }, - "start": 141058, - "end": 141059, + "start": 141572, + "end": 141573, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 50 }, "end": { - "line": 3459, + "line": 3467, "column": 51 } } @@ -471107,15 +474369,15 @@ "updateContext": null }, "value": "\" already belongs to object with ID \"", - "start": 141059, - "end": 141096, + "start": 141573, + "end": 141610, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 51 }, "end": { - "line": 3459, + "line": 3467, "column": 88 } } @@ -471132,15 +474394,15 @@ "postfix": false, "binop": null }, - "start": 141096, - "end": 141098, + "start": 141610, + "end": 141612, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 88 }, "end": { - "line": 3459, + "line": 3467, "column": 90 } } @@ -471158,15 +474420,15 @@ "binop": null }, "value": "mesh", - "start": 141098, - "end": 141102, + "start": 141612, + "end": 141616, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 90 }, "end": { - "line": 3459, + "line": 3467, "column": 94 } } @@ -471184,15 +474446,15 @@ "binop": null, "updateContext": null }, - "start": 141102, - "end": 141103, + "start": 141616, + "end": 141617, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 94 }, "end": { - "line": 3459, + "line": 3467, "column": 95 } } @@ -471210,15 +474472,15 @@ "binop": null }, "value": "parent", - "start": 141103, - "end": 141109, + "start": 141617, + "end": 141623, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 95 }, "end": { - "line": 3459, + "line": 3467, "column": 101 } } @@ -471236,15 +474498,15 @@ "binop": null, "updateContext": null }, - "start": 141109, - "end": 141110, + "start": 141623, + "end": 141624, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 101 }, "end": { - "line": 3459, + "line": 3467, "column": 102 } } @@ -471262,15 +474524,15 @@ "binop": null }, "value": "id", - "start": 141110, - "end": 141112, + "start": 141624, + "end": 141626, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 102 }, "end": { - "line": 3459, + "line": 3467, "column": 104 } } @@ -471287,15 +474549,15 @@ "postfix": false, "binop": null }, - "start": 141112, - "end": 141113, + "start": 141626, + "end": 141627, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 104 }, "end": { - "line": 3459, + "line": 3467, "column": 105 } } @@ -471314,15 +474576,15 @@ "updateContext": null }, "value": "\" - ignoring this mesh", - "start": 141113, - "end": 141135, + "start": 141627, + "end": 141649, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 105 }, "end": { - "line": 3459, + "line": 3467, "column": 127 } } @@ -471339,15 +474601,15 @@ "postfix": false, "binop": null }, - "start": 141135, - "end": 141136, + "start": 141649, + "end": 141650, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 127 }, "end": { - "line": 3459, + "line": 3467, "column": 128 } } @@ -471364,15 +474626,15 @@ "postfix": false, "binop": null }, - "start": 141136, - "end": 141137, + "start": 141650, + "end": 141651, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 128 }, "end": { - "line": 3459, + "line": 3467, "column": 129 } } @@ -471390,15 +474652,15 @@ "binop": null, "updateContext": null }, - "start": 141137, - "end": 141138, + "start": 141651, + "end": 141652, "loc": { "start": { - "line": 3459, + "line": 3467, "column": 129 }, "end": { - "line": 3459, + "line": 3467, "column": 130 } } @@ -471418,15 +474680,15 @@ "updateContext": null }, "value": "continue", - "start": 141155, - "end": 141163, + "start": 141669, + "end": 141677, "loc": { "start": { - "line": 3460, + "line": 3468, "column": 16 }, "end": { - "line": 3460, + "line": 3468, "column": 24 } } @@ -471444,15 +474706,15 @@ "binop": null, "updateContext": null }, - "start": 141163, - "end": 141164, + "start": 141677, + "end": 141678, "loc": { "start": { - "line": 3460, + "line": 3468, "column": 24 }, "end": { - "line": 3460, + "line": 3468, "column": 25 } } @@ -471469,15 +474731,15 @@ "postfix": false, "binop": null }, - "start": 141177, - "end": 141178, + "start": 141691, + "end": 141692, "loc": { "start": { - "line": 3461, + "line": 3469, "column": 12 }, "end": { - "line": 3461, + "line": 3469, "column": 13 } } @@ -471495,15 +474757,15 @@ "binop": null }, "value": "meshes", - "start": 141191, - "end": 141197, + "start": 141705, + "end": 141711, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 12 }, "end": { - "line": 3462, + "line": 3470, "column": 18 } } @@ -471521,15 +474783,15 @@ "binop": null, "updateContext": null }, - "start": 141197, - "end": 141198, + "start": 141711, + "end": 141712, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 18 }, "end": { - "line": 3462, + "line": 3470, "column": 19 } } @@ -471547,15 +474809,15 @@ "binop": null }, "value": "push", - "start": 141198, - "end": 141202, + "start": 141712, + "end": 141716, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 19 }, "end": { - "line": 3462, + "line": 3470, "column": 23 } } @@ -471572,15 +474834,15 @@ "postfix": false, "binop": null }, - "start": 141202, - "end": 141203, + "start": 141716, + "end": 141717, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 23 }, "end": { - "line": 3462, + "line": 3470, "column": 24 } } @@ -471598,15 +474860,15 @@ "binop": null }, "value": "mesh", - "start": 141203, - "end": 141207, + "start": 141717, + "end": 141721, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 24 }, "end": { - "line": 3462, + "line": 3470, "column": 28 } } @@ -471623,15 +474885,15 @@ "postfix": false, "binop": null }, - "start": 141207, - "end": 141208, + "start": 141721, + "end": 141722, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 28 }, "end": { - "line": 3462, + "line": 3470, "column": 29 } } @@ -471649,15 +474911,15 @@ "binop": null, "updateContext": null }, - "start": 141208, - "end": 141209, + "start": 141722, + "end": 141723, "loc": { "start": { - "line": 3462, + "line": 3470, "column": 29 }, "end": { - "line": 3462, + "line": 3470, "column": 30 } } @@ -471677,15 +474939,15 @@ "updateContext": null }, "value": "delete", - "start": 141222, - "end": 141228, + "start": 141736, + "end": 141742, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 12 }, "end": { - "line": 3463, + "line": 3471, "column": 18 } } @@ -471705,15 +474967,15 @@ "updateContext": null }, "value": "this", - "start": 141229, - "end": 141233, + "start": 141743, + "end": 141747, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 19 }, "end": { - "line": 3463, + "line": 3471, "column": 23 } } @@ -471731,15 +474993,15 @@ "binop": null, "updateContext": null }, - "start": 141233, - "end": 141234, + "start": 141747, + "end": 141748, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 23 }, "end": { - "line": 3463, + "line": 3471, "column": 24 } } @@ -471757,15 +475019,15 @@ "binop": null }, "value": "_unusedMeshes", - "start": 141234, - "end": 141247, + "start": 141748, + "end": 141761, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 24 }, "end": { - "line": 3463, + "line": 3471, "column": 37 } } @@ -471783,15 +475045,15 @@ "binop": null, "updateContext": null }, - "start": 141247, - "end": 141248, + "start": 141761, + "end": 141762, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 37 }, "end": { - "line": 3463, + "line": 3471, "column": 38 } } @@ -471809,15 +475071,15 @@ "binop": null }, "value": "meshId", - "start": 141248, - "end": 141254, + "start": 141762, + "end": 141768, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 38 }, "end": { - "line": 3463, + "line": 3471, "column": 44 } } @@ -471835,15 +475097,15 @@ "binop": null, "updateContext": null }, - "start": 141254, - "end": 141255, + "start": 141768, + "end": 141769, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 44 }, "end": { - "line": 3463, + "line": 3471, "column": 45 } } @@ -471861,15 +475123,15 @@ "binop": null, "updateContext": null }, - "start": 141255, - "end": 141256, + "start": 141769, + "end": 141770, "loc": { "start": { - "line": 3463, + "line": 3471, "column": 45 }, "end": { - "line": 3463, + "line": 3471, "column": 46 } } @@ -471886,15 +475148,15 @@ "postfix": false, "binop": null }, - "start": 141265, - "end": 141266, + "start": 141779, + "end": 141780, "loc": { "start": { - "line": 3464, + "line": 3472, "column": 8 }, "end": { - "line": 3464, + "line": 3472, "column": 9 } } @@ -471914,15 +475176,15 @@ "updateContext": null }, "value": "const", - "start": 141275, - "end": 141280, + "start": 141789, + "end": 141794, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 8 }, "end": { - "line": 3465, + "line": 3473, "column": 13 } } @@ -471940,15 +475202,15 @@ "binop": null }, "value": "lodCullable", - "start": 141281, - "end": 141292, + "start": 141795, + "end": 141806, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 14 }, "end": { - "line": 3465, + "line": 3473, "column": 25 } } @@ -471967,15 +475229,15 @@ "updateContext": null }, "value": "=", - "start": 141293, - "end": 141294, + "start": 141807, + "end": 141808, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 26 }, "end": { - "line": 3465, + "line": 3473, "column": 27 } } @@ -471995,15 +475257,15 @@ "updateContext": null }, "value": "true", - "start": 141295, - "end": 141299, + "start": 141809, + "end": 141813, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 28 }, "end": { - "line": 3465, + "line": 3473, "column": 32 } } @@ -472021,15 +475283,15 @@ "binop": null, "updateContext": null }, - "start": 141299, - "end": 141300, + "start": 141813, + "end": 141814, "loc": { "start": { - "line": 3465, + "line": 3473, "column": 32 }, "end": { - "line": 3465, + "line": 3473, "column": 33 } } @@ -472049,15 +475311,15 @@ "updateContext": null }, "value": "const", - "start": 141309, - "end": 141314, + "start": 141823, + "end": 141828, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 8 }, "end": { - "line": 3466, + "line": 3474, "column": 13 } } @@ -472075,15 +475337,15 @@ "binop": null }, "value": "entity", - "start": 141315, - "end": 141321, + "start": 141829, + "end": 141835, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 14 }, "end": { - "line": 3466, + "line": 3474, "column": 20 } } @@ -472102,15 +475364,15 @@ "updateContext": null }, "value": "=", - "start": 141322, - "end": 141323, + "start": 141836, + "end": 141837, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 21 }, "end": { - "line": 3466, + "line": 3474, "column": 22 } } @@ -472130,15 +475392,15 @@ "updateContext": null }, "value": "new", - "start": 141324, - "end": 141327, + "start": 141838, + "end": 141841, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 23 }, "end": { - "line": 3466, + "line": 3474, "column": 26 } } @@ -472156,15 +475418,15 @@ "binop": null }, "value": "SceneModelEntity", - "start": 141328, - "end": 141344, + "start": 141842, + "end": 141858, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 27 }, "end": { - "line": 3466, + "line": 3474, "column": 43 } } @@ -472181,15 +475443,15 @@ "postfix": false, "binop": null }, - "start": 141344, - "end": 141345, + "start": 141858, + "end": 141859, "loc": { "start": { - "line": 3466, + "line": 3474, "column": 43 }, "end": { - "line": 3466, + "line": 3474, "column": 44 } } @@ -472209,15 +475471,15 @@ "updateContext": null }, "value": "this", - "start": 141358, - "end": 141362, + "start": 141872, + "end": 141876, "loc": { "start": { - "line": 3467, + "line": 3475, "column": 12 }, "end": { - "line": 3467, + "line": 3475, "column": 16 } } @@ -472235,15 +475497,15 @@ "binop": null, "updateContext": null }, - "start": 141362, - "end": 141363, + "start": 141876, + "end": 141877, "loc": { "start": { - "line": 3467, + "line": 3475, "column": 16 }, "end": { - "line": 3467, + "line": 3475, "column": 17 } } @@ -472261,15 +475523,15 @@ "binop": null }, "value": "cfg", - "start": 141376, - "end": 141379, + "start": 141890, + "end": 141893, "loc": { "start": { - "line": 3468, + "line": 3476, "column": 12 }, "end": { - "line": 3468, + "line": 3476, "column": 15 } } @@ -472287,15 +475549,15 @@ "binop": null, "updateContext": null }, - "start": 141379, - "end": 141380, + "start": 141893, + "end": 141894, "loc": { "start": { - "line": 3468, + "line": 3476, "column": 15 }, "end": { - "line": 3468, + "line": 3476, "column": 16 } } @@ -472313,15 +475575,15 @@ "binop": null }, "value": "isObject", - "start": 141380, - "end": 141388, + "start": 141894, + "end": 141902, "loc": { "start": { - "line": 3468, + "line": 3476, "column": 16 }, "end": { - "line": 3468, + "line": 3476, "column": 24 } } @@ -472339,15 +475601,15 @@ "binop": null, "updateContext": null }, - "start": 141388, - "end": 141389, + "start": 141902, + "end": 141903, "loc": { "start": { - "line": 3468, + "line": 3476, "column": 24 }, "end": { - "line": 3468, + "line": 3476, "column": 25 } } @@ -472365,15 +475627,15 @@ "binop": null }, "value": "cfg", - "start": 141402, - "end": 141405, + "start": 141916, + "end": 141919, "loc": { "start": { - "line": 3469, + "line": 3477, "column": 12 }, "end": { - "line": 3469, + "line": 3477, "column": 15 } } @@ -472391,15 +475653,15 @@ "binop": null, "updateContext": null }, - "start": 141405, - "end": 141406, + "start": 141919, + "end": 141920, "loc": { "start": { - "line": 3469, + "line": 3477, "column": 15 }, "end": { - "line": 3469, + "line": 3477, "column": 16 } } @@ -472417,15 +475679,15 @@ "binop": null }, "value": "id", - "start": 141406, - "end": 141408, + "start": 141920, + "end": 141922, "loc": { "start": { - "line": 3469, + "line": 3477, "column": 16 }, "end": { - "line": 3469, + "line": 3477, "column": 18 } } @@ -472443,15 +475705,15 @@ "binop": null, "updateContext": null }, - "start": 141408, - "end": 141409, + "start": 141922, + "end": 141923, "loc": { "start": { - "line": 3469, + "line": 3477, "column": 18 }, "end": { - "line": 3469, + "line": 3477, "column": 19 } } @@ -472469,15 +475731,15 @@ "binop": null }, "value": "meshes", - "start": 141422, - "end": 141428, + "start": 141936, + "end": 141942, "loc": { "start": { - "line": 3470, + "line": 3478, "column": 12 }, "end": { - "line": 3470, + "line": 3478, "column": 18 } } @@ -472495,15 +475757,15 @@ "binop": null, "updateContext": null }, - "start": 141428, - "end": 141429, + "start": 141942, + "end": 141943, "loc": { "start": { - "line": 3470, + "line": 3478, "column": 18 }, "end": { - "line": 3470, + "line": 3478, "column": 19 } } @@ -472521,15 +475783,15 @@ "binop": null }, "value": "cfg", - "start": 141442, - "end": 141445, + "start": 141956, + "end": 141959, "loc": { "start": { - "line": 3471, + "line": 3479, "column": 12 }, "end": { - "line": 3471, + "line": 3479, "column": 15 } } @@ -472547,15 +475809,15 @@ "binop": null, "updateContext": null }, - "start": 141445, - "end": 141446, + "start": 141959, + "end": 141960, "loc": { "start": { - "line": 3471, + "line": 3479, "column": 15 }, "end": { - "line": 3471, + "line": 3479, "column": 16 } } @@ -472573,15 +475835,15 @@ "binop": null }, "value": "flags", - "start": 141446, - "end": 141451, + "start": 141960, + "end": 141965, "loc": { "start": { - "line": 3471, + "line": 3479, "column": 16 }, "end": { - "line": 3471, + "line": 3479, "column": 21 } } @@ -472599,15 +475861,15 @@ "binop": null, "updateContext": null }, - "start": 141451, - "end": 141452, + "start": 141965, + "end": 141966, "loc": { "start": { - "line": 3471, + "line": 3479, "column": 21 }, "end": { - "line": 3471, + "line": 3479, "column": 22 } } @@ -472625,15 +475887,15 @@ "binop": null }, "value": "lodCullable", - "start": 141465, - "end": 141476, + "start": 141979, + "end": 141990, "loc": { "start": { - "line": 3472, + "line": 3480, "column": 12 }, "end": { - "line": 3472, + "line": 3480, "column": 23 } } @@ -472650,15 +475912,15 @@ "postfix": false, "binop": null }, - "start": 141476, - "end": 141477, + "start": 141990, + "end": 141991, "loc": { "start": { - "line": 3472, + "line": 3480, "column": 23 }, "end": { - "line": 3472, + "line": 3480, "column": 24 } } @@ -472676,15 +475938,15 @@ "binop": null, "updateContext": null }, - "start": 141477, - "end": 141478, + "start": 141991, + "end": 141992, "loc": { "start": { - "line": 3472, + "line": 3480, "column": 24 }, "end": { - "line": 3472, + "line": 3480, "column": 25 } } @@ -472692,15 +475954,15 @@ { "type": "CommentLine", "value": " Internally sets SceneModelEntity#parent to this SceneModel", - "start": 141479, - "end": 141540, + "start": 141993, + "end": 142054, "loc": { "start": { - "line": 3472, + "line": 3480, "column": 26 }, "end": { - "line": 3472, + "line": 3480, "column": 87 } } @@ -472720,15 +475982,15 @@ "updateContext": null }, "value": "this", - "start": 141549, - "end": 141553, + "start": 142063, + "end": 142067, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 8 }, "end": { - "line": 3473, + "line": 3481, "column": 12 } } @@ -472746,15 +476008,15 @@ "binop": null, "updateContext": null }, - "start": 141553, - "end": 141554, + "start": 142067, + "end": 142068, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 12 }, "end": { - "line": 3473, + "line": 3481, "column": 13 } } @@ -472772,15 +476034,15 @@ "binop": null }, "value": "_entityList", - "start": 141554, - "end": 141565, + "start": 142068, + "end": 142079, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 13 }, "end": { - "line": 3473, + "line": 3481, "column": 24 } } @@ -472798,15 +476060,15 @@ "binop": null, "updateContext": null }, - "start": 141565, - "end": 141566, + "start": 142079, + "end": 142080, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 24 }, "end": { - "line": 3473, + "line": 3481, "column": 25 } } @@ -472824,15 +476086,15 @@ "binop": null }, "value": "push", - "start": 141566, - "end": 141570, + "start": 142080, + "end": 142084, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 25 }, "end": { - "line": 3473, + "line": 3481, "column": 29 } } @@ -472849,15 +476111,15 @@ "postfix": false, "binop": null }, - "start": 141570, - "end": 141571, + "start": 142084, + "end": 142085, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 29 }, "end": { - "line": 3473, + "line": 3481, "column": 30 } } @@ -472875,15 +476137,15 @@ "binop": null }, "value": "entity", - "start": 141571, - "end": 141577, + "start": 142085, + "end": 142091, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 30 }, "end": { - "line": 3473, + "line": 3481, "column": 36 } } @@ -472900,15 +476162,15 @@ "postfix": false, "binop": null }, - "start": 141577, - "end": 141578, + "start": 142091, + "end": 142092, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 36 }, "end": { - "line": 3473, + "line": 3481, "column": 37 } } @@ -472926,15 +476188,15 @@ "binop": null, "updateContext": null }, - "start": 141578, - "end": 141579, + "start": 142092, + "end": 142093, "loc": { "start": { - "line": 3473, + "line": 3481, "column": 37 }, "end": { - "line": 3473, + "line": 3481, "column": 38 } } @@ -472954,15 +476216,15 @@ "updateContext": null }, "value": "this", - "start": 141588, - "end": 141592, + "start": 142102, + "end": 142106, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 8 }, "end": { - "line": 3474, + "line": 3482, "column": 12 } } @@ -472980,15 +476242,15 @@ "binop": null, "updateContext": null }, - "start": 141592, - "end": 141593, + "start": 142106, + "end": 142107, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 12 }, "end": { - "line": 3474, + "line": 3482, "column": 13 } } @@ -473006,15 +476268,15 @@ "binop": null }, "value": "_entities", - "start": 141593, - "end": 141602, + "start": 142107, + "end": 142116, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 13 }, "end": { - "line": 3474, + "line": 3482, "column": 22 } } @@ -473032,15 +476294,15 @@ "binop": null, "updateContext": null }, - "start": 141602, - "end": 141603, + "start": 142116, + "end": 142117, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 22 }, "end": { - "line": 3474, + "line": 3482, "column": 23 } } @@ -473058,15 +476320,15 @@ "binop": null }, "value": "cfg", - "start": 141603, - "end": 141606, + "start": 142117, + "end": 142120, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 23 }, "end": { - "line": 3474, + "line": 3482, "column": 26 } } @@ -473084,15 +476346,15 @@ "binop": null, "updateContext": null }, - "start": 141606, - "end": 141607, + "start": 142120, + "end": 142121, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 26 }, "end": { - "line": 3474, + "line": 3482, "column": 27 } } @@ -473110,15 +476372,15 @@ "binop": null }, "value": "id", - "start": 141607, - "end": 141609, + "start": 142121, + "end": 142123, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 27 }, "end": { - "line": 3474, + "line": 3482, "column": 29 } } @@ -473136,15 +476398,15 @@ "binop": null, "updateContext": null }, - "start": 141609, - "end": 141610, + "start": 142123, + "end": 142124, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 29 }, "end": { - "line": 3474, + "line": 3482, "column": 30 } } @@ -473163,15 +476425,15 @@ "updateContext": null }, "value": "=", - "start": 141611, - "end": 141612, + "start": 142125, + "end": 142126, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 31 }, "end": { - "line": 3474, + "line": 3482, "column": 32 } } @@ -473189,15 +476451,15 @@ "binop": null }, "value": "entity", - "start": 141613, - "end": 141619, + "start": 142127, + "end": 142133, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 33 }, "end": { - "line": 3474, + "line": 3482, "column": 39 } } @@ -473215,15 +476477,15 @@ "binop": null, "updateContext": null }, - "start": 141619, - "end": 141620, + "start": 142133, + "end": 142134, "loc": { "start": { - "line": 3474, + "line": 3482, "column": 39 }, "end": { - "line": 3474, + "line": 3482, "column": 40 } } @@ -473243,15 +476505,15 @@ "updateContext": null }, "value": "this", - "start": 141629, - "end": 141633, + "start": 142143, + "end": 142147, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 8 }, "end": { - "line": 3475, + "line": 3483, "column": 12 } } @@ -473269,15 +476531,15 @@ "binop": null, "updateContext": null }, - "start": 141633, - "end": 141634, + "start": 142147, + "end": 142148, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 12 }, "end": { - "line": 3475, + "line": 3483, "column": 13 } } @@ -473295,15 +476557,15 @@ "binop": null }, "value": "numEntities", - "start": 141634, - "end": 141645, + "start": 142148, + "end": 142159, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 13 }, "end": { - "line": 3475, + "line": 3483, "column": 24 } } @@ -473321,15 +476583,15 @@ "binop": null }, "value": "++", - "start": 141645, - "end": 141647, + "start": 142159, + "end": 142161, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 24 }, "end": { - "line": 3475, + "line": 3483, "column": 26 } } @@ -473347,15 +476609,15 @@ "binop": null, "updateContext": null }, - "start": 141647, - "end": 141648, + "start": 142161, + "end": 142162, "loc": { "start": { - "line": 3475, + "line": 3483, "column": 26 }, "end": { - "line": 3475, + "line": 3483, "column": 27 } } @@ -473372,15 +476634,15 @@ "postfix": false, "binop": null }, - "start": 141653, - "end": 141654, + "start": 142167, + "end": 142168, "loc": { "start": { - "line": 3476, + "line": 3484, "column": 4 }, "end": { - "line": 3476, + "line": 3484, "column": 5 } } @@ -473388,15 +476650,15 @@ { "type": "CommentBlock", "value": "*\n * Finalizes this SceneModel.\n *\n * Once finalized, you can't add anything more to this SceneModel.\n ", - "start": 141660, - "end": 141783, + "start": 142174, + "end": 142297, "loc": { "start": { - "line": 3478, + "line": 3486, "column": 4 }, "end": { - "line": 3482, + "line": 3490, "column": 7 } } @@ -473414,15 +476676,15 @@ "binop": null }, "value": "finalize", - "start": 141788, - "end": 141796, + "start": 142302, + "end": 142310, "loc": { "start": { - "line": 3483, + "line": 3491, "column": 4 }, "end": { - "line": 3483, + "line": 3491, "column": 12 } } @@ -473439,15 +476701,15 @@ "postfix": false, "binop": null }, - "start": 141796, - "end": 141797, + "start": 142310, + "end": 142311, "loc": { "start": { - "line": 3483, + "line": 3491, "column": 12 }, "end": { - "line": 3483, + "line": 3491, "column": 13 } } @@ -473464,15 +476726,15 @@ "postfix": false, "binop": null }, - "start": 141797, - "end": 141798, + "start": 142311, + "end": 142312, "loc": { "start": { - "line": 3483, + "line": 3491, "column": 13 }, "end": { - "line": 3483, + "line": 3491, "column": 14 } } @@ -473489,15 +476751,15 @@ "postfix": false, "binop": null }, - "start": 141799, - "end": 141800, + "start": 142313, + "end": 142314, "loc": { "start": { - "line": 3483, + "line": 3491, "column": 15 }, "end": { - "line": 3483, + "line": 3491, "column": 16 } } @@ -473517,15 +476779,15 @@ "updateContext": null }, "value": "if", - "start": 141809, - "end": 141811, + "start": 142323, + "end": 142325, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 8 }, "end": { - "line": 3484, + "line": 3492, "column": 10 } } @@ -473542,15 +476804,15 @@ "postfix": false, "binop": null }, - "start": 141812, - "end": 141813, + "start": 142326, + "end": 142327, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 11 }, "end": { - "line": 3484, + "line": 3492, "column": 12 } } @@ -473570,15 +476832,15 @@ "updateContext": null }, "value": "this", - "start": 141813, - "end": 141817, + "start": 142327, + "end": 142331, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 12 }, "end": { - "line": 3484, + "line": 3492, "column": 16 } } @@ -473596,15 +476858,15 @@ "binop": null, "updateContext": null }, - "start": 141817, - "end": 141818, + "start": 142331, + "end": 142332, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 16 }, "end": { - "line": 3484, + "line": 3492, "column": 17 } } @@ -473622,15 +476884,15 @@ "binop": null }, "value": "destroyed", - "start": 141818, - "end": 141827, + "start": 142332, + "end": 142341, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 17 }, "end": { - "line": 3484, + "line": 3492, "column": 26 } } @@ -473647,15 +476909,15 @@ "postfix": false, "binop": null }, - "start": 141827, - "end": 141828, + "start": 142341, + "end": 142342, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 26 }, "end": { - "line": 3484, + "line": 3492, "column": 27 } } @@ -473672,15 +476934,15 @@ "postfix": false, "binop": null }, - "start": 141829, - "end": 141830, + "start": 142343, + "end": 142344, "loc": { "start": { - "line": 3484, + "line": 3492, "column": 28 }, "end": { - "line": 3484, + "line": 3492, "column": 29 } } @@ -473700,15 +476962,15 @@ "updateContext": null }, "value": "return", - "start": 141843, - "end": 141849, + "start": 142357, + "end": 142363, "loc": { "start": { - "line": 3485, + "line": 3493, "column": 12 }, "end": { - "line": 3485, + "line": 3493, "column": 18 } } @@ -473726,15 +476988,15 @@ "binop": null, "updateContext": null }, - "start": 141849, - "end": 141850, + "start": 142363, + "end": 142364, "loc": { "start": { - "line": 3485, + "line": 3493, "column": 18 }, "end": { - "line": 3485, + "line": 3493, "column": 19 } } @@ -473751,15 +477013,15 @@ "postfix": false, "binop": null }, - "start": 141859, - "end": 141860, + "start": 142373, + "end": 142374, "loc": { "start": { - "line": 3486, + "line": 3494, "column": 8 }, "end": { - "line": 3486, + "line": 3494, "column": 9 } } @@ -473779,15 +477041,15 @@ "updateContext": null }, "value": "this", - "start": 141869, - "end": 141873, + "start": 142383, + "end": 142387, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 8 }, "end": { - "line": 3487, + "line": 3495, "column": 12 } } @@ -473805,15 +477067,15 @@ "binop": null, "updateContext": null }, - "start": 141873, - "end": 141874, + "start": 142387, + "end": 142388, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 12 }, "end": { - "line": 3487, + "line": 3495, "column": 13 } } @@ -473831,15 +477093,15 @@ "binop": null }, "value": "_createDummyEntityForUnusedMeshes", - "start": 141874, - "end": 141907, + "start": 142388, + "end": 142421, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 13 }, "end": { - "line": 3487, + "line": 3495, "column": 46 } } @@ -473856,15 +477118,15 @@ "postfix": false, "binop": null }, - "start": 141907, - "end": 141908, + "start": 142421, + "end": 142422, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 46 }, "end": { - "line": 3487, + "line": 3495, "column": 47 } } @@ -473881,15 +477143,15 @@ "postfix": false, "binop": null }, - "start": 141908, - "end": 141909, + "start": 142422, + "end": 142423, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 47 }, "end": { - "line": 3487, + "line": 3495, "column": 48 } } @@ -473907,15 +477169,15 @@ "binop": null, "updateContext": null }, - "start": 141909, - "end": 141910, + "start": 142423, + "end": 142424, "loc": { "start": { - "line": 3487, + "line": 3495, "column": 48 }, "end": { - "line": 3487, + "line": 3495, "column": 49 } } @@ -473935,15 +477197,15 @@ "updateContext": null }, "value": "for", - "start": 141919, - "end": 141922, + "start": 142433, + "end": 142436, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 8 }, "end": { - "line": 3488, + "line": 3496, "column": 11 } } @@ -473960,15 +477222,15 @@ "postfix": false, "binop": null }, - "start": 141923, - "end": 141924, + "start": 142437, + "end": 142438, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 12 }, "end": { - "line": 3488, + "line": 3496, "column": 13 } } @@ -473988,15 +477250,15 @@ "updateContext": null }, "value": "let", - "start": 141924, - "end": 141927, + "start": 142438, + "end": 142441, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 13 }, "end": { - "line": 3488, + "line": 3496, "column": 16 } } @@ -474014,15 +477276,15 @@ "binop": null }, "value": "i", - "start": 141928, - "end": 141929, + "start": 142442, + "end": 142443, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 17 }, "end": { - "line": 3488, + "line": 3496, "column": 18 } } @@ -474041,15 +477303,15 @@ "updateContext": null }, "value": "=", - "start": 141930, - "end": 141931, + "start": 142444, + "end": 142445, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 19 }, "end": { - "line": 3488, + "line": 3496, "column": 20 } } @@ -474068,15 +477330,15 @@ "updateContext": null }, "value": 0, - "start": 141932, - "end": 141933, + "start": 142446, + "end": 142447, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 21 }, "end": { - "line": 3488, + "line": 3496, "column": 22 } } @@ -474094,15 +477356,15 @@ "binop": null, "updateContext": null }, - "start": 141933, - "end": 141934, + "start": 142447, + "end": 142448, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 22 }, "end": { - "line": 3488, + "line": 3496, "column": 23 } } @@ -474120,15 +477382,15 @@ "binop": null }, "value": "len", - "start": 141935, - "end": 141938, + "start": 142449, + "end": 142452, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 24 }, "end": { - "line": 3488, + "line": 3496, "column": 27 } } @@ -474147,15 +477409,15 @@ "updateContext": null }, "value": "=", - "start": 141939, - "end": 141940, + "start": 142453, + "end": 142454, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 28 }, "end": { - "line": 3488, + "line": 3496, "column": 29 } } @@ -474175,15 +477437,15 @@ "updateContext": null }, "value": "this", - "start": 141941, - "end": 141945, + "start": 142455, + "end": 142459, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 30 }, "end": { - "line": 3488, + "line": 3496, "column": 34 } } @@ -474201,15 +477463,15 @@ "binop": null, "updateContext": null }, - "start": 141945, - "end": 141946, + "start": 142459, + "end": 142460, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 34 }, "end": { - "line": 3488, + "line": 3496, "column": 35 } } @@ -474227,15 +477489,15 @@ "binop": null }, "value": "layerList", - "start": 141946, - "end": 141955, + "start": 142460, + "end": 142469, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 35 }, "end": { - "line": 3488, + "line": 3496, "column": 44 } } @@ -474253,15 +477515,15 @@ "binop": null, "updateContext": null }, - "start": 141955, - "end": 141956, + "start": 142469, + "end": 142470, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 44 }, "end": { - "line": 3488, + "line": 3496, "column": 45 } } @@ -474279,15 +477541,15 @@ "binop": null }, "value": "length", - "start": 141956, - "end": 141962, + "start": 142470, + "end": 142476, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 45 }, "end": { - "line": 3488, + "line": 3496, "column": 51 } } @@ -474305,15 +477567,15 @@ "binop": null, "updateContext": null }, - "start": 141962, - "end": 141963, + "start": 142476, + "end": 142477, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 51 }, "end": { - "line": 3488, + "line": 3496, "column": 52 } } @@ -474331,15 +477593,15 @@ "binop": null }, "value": "i", - "start": 141964, - "end": 141965, + "start": 142478, + "end": 142479, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 53 }, "end": { - "line": 3488, + "line": 3496, "column": 54 } } @@ -474358,15 +477620,15 @@ "updateContext": null }, "value": "<", - "start": 141966, - "end": 141967, + "start": 142480, + "end": 142481, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 55 }, "end": { - "line": 3488, + "line": 3496, "column": 56 } } @@ -474384,15 +477646,15 @@ "binop": null }, "value": "len", - "start": 141968, - "end": 141971, + "start": 142482, + "end": 142485, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 57 }, "end": { - "line": 3488, + "line": 3496, "column": 60 } } @@ -474410,15 +477672,15 @@ "binop": null, "updateContext": null }, - "start": 141971, - "end": 141972, + "start": 142485, + "end": 142486, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 60 }, "end": { - "line": 3488, + "line": 3496, "column": 61 } } @@ -474436,15 +477698,15 @@ "binop": null }, "value": "i", - "start": 141973, - "end": 141974, + "start": 142487, + "end": 142488, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 62 }, "end": { - "line": 3488, + "line": 3496, "column": 63 } } @@ -474462,15 +477724,15 @@ "binop": null }, "value": "++", - "start": 141974, - "end": 141976, + "start": 142488, + "end": 142490, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 63 }, "end": { - "line": 3488, + "line": 3496, "column": 65 } } @@ -474487,15 +477749,15 @@ "postfix": false, "binop": null }, - "start": 141976, - "end": 141977, + "start": 142490, + "end": 142491, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 65 }, "end": { - "line": 3488, + "line": 3496, "column": 66 } } @@ -474512,15 +477774,15 @@ "postfix": false, "binop": null }, - "start": 141978, - "end": 141979, + "start": 142492, + "end": 142493, "loc": { "start": { - "line": 3488, + "line": 3496, "column": 67 }, "end": { - "line": 3488, + "line": 3496, "column": 68 } } @@ -474540,15 +477802,15 @@ "updateContext": null }, "value": "const", - "start": 141992, - "end": 141997, + "start": 142506, + "end": 142511, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 12 }, "end": { - "line": 3489, + "line": 3497, "column": 17 } } @@ -474566,15 +477828,15 @@ "binop": null }, "value": "layer", - "start": 141998, - "end": 142003, + "start": 142512, + "end": 142517, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 18 }, "end": { - "line": 3489, + "line": 3497, "column": 23 } } @@ -474593,15 +477855,15 @@ "updateContext": null }, "value": "=", - "start": 142004, - "end": 142005, + "start": 142518, + "end": 142519, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 24 }, "end": { - "line": 3489, + "line": 3497, "column": 25 } } @@ -474621,15 +477883,15 @@ "updateContext": null }, "value": "this", - "start": 142006, - "end": 142010, + "start": 142520, + "end": 142524, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 26 }, "end": { - "line": 3489, + "line": 3497, "column": 30 } } @@ -474647,15 +477909,15 @@ "binop": null, "updateContext": null }, - "start": 142010, - "end": 142011, + "start": 142524, + "end": 142525, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 30 }, "end": { - "line": 3489, + "line": 3497, "column": 31 } } @@ -474673,15 +477935,15 @@ "binop": null }, "value": "layerList", - "start": 142011, - "end": 142020, + "start": 142525, + "end": 142534, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 31 }, "end": { - "line": 3489, + "line": 3497, "column": 40 } } @@ -474699,15 +477961,15 @@ "binop": null, "updateContext": null }, - "start": 142020, - "end": 142021, + "start": 142534, + "end": 142535, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 40 }, "end": { - "line": 3489, + "line": 3497, "column": 41 } } @@ -474725,15 +477987,15 @@ "binop": null }, "value": "i", - "start": 142021, - "end": 142022, + "start": 142535, + "end": 142536, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 41 }, "end": { - "line": 3489, + "line": 3497, "column": 42 } } @@ -474751,15 +478013,15 @@ "binop": null, "updateContext": null }, - "start": 142022, - "end": 142023, + "start": 142536, + "end": 142537, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 42 }, "end": { - "line": 3489, + "line": 3497, "column": 43 } } @@ -474777,15 +478039,15 @@ "binop": null, "updateContext": null }, - "start": 142023, - "end": 142024, + "start": 142537, + "end": 142538, "loc": { "start": { - "line": 3489, + "line": 3497, "column": 43 }, "end": { - "line": 3489, + "line": 3497, "column": 44 } } @@ -474803,15 +478065,15 @@ "binop": null }, "value": "layer", - "start": 142037, - "end": 142042, + "start": 142551, + "end": 142556, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 12 }, "end": { - "line": 3490, + "line": 3498, "column": 17 } } @@ -474829,15 +478091,15 @@ "binop": null, "updateContext": null }, - "start": 142042, - "end": 142043, + "start": 142556, + "end": 142557, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 17 }, "end": { - "line": 3490, + "line": 3498, "column": 18 } } @@ -474855,15 +478117,15 @@ "binop": null }, "value": "finalize", - "start": 142043, - "end": 142051, + "start": 142557, + "end": 142565, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 18 }, "end": { - "line": 3490, + "line": 3498, "column": 26 } } @@ -474880,15 +478142,15 @@ "postfix": false, "binop": null }, - "start": 142051, - "end": 142052, + "start": 142565, + "end": 142566, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 26 }, "end": { - "line": 3490, + "line": 3498, "column": 27 } } @@ -474905,15 +478167,15 @@ "postfix": false, "binop": null }, - "start": 142052, - "end": 142053, + "start": 142566, + "end": 142567, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 27 }, "end": { - "line": 3490, + "line": 3498, "column": 28 } } @@ -474931,15 +478193,15 @@ "binop": null, "updateContext": null }, - "start": 142053, - "end": 142054, + "start": 142567, + "end": 142568, "loc": { "start": { - "line": 3490, + "line": 3498, "column": 28 }, "end": { - "line": 3490, + "line": 3498, "column": 29 } } @@ -474956,15 +478218,15 @@ "postfix": false, "binop": null }, - "start": 142063, - "end": 142064, + "start": 142577, + "end": 142578, "loc": { "start": { - "line": 3491, + "line": 3499, "column": 8 }, "end": { - "line": 3491, + "line": 3499, "column": 9 } } @@ -474984,15 +478246,15 @@ "updateContext": null }, "value": "this", - "start": 142073, - "end": 142077, + "start": 142587, + "end": 142591, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 8 }, "end": { - "line": 3492, + "line": 3500, "column": 12 } } @@ -475010,15 +478272,15 @@ "binop": null, "updateContext": null }, - "start": 142077, - "end": 142078, + "start": 142591, + "end": 142592, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 12 }, "end": { - "line": 3492, + "line": 3500, "column": 13 } } @@ -475036,15 +478298,15 @@ "binop": null }, "value": "_geometries", - "start": 142078, - "end": 142089, + "start": 142592, + "end": 142603, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 13 }, "end": { - "line": 3492, + "line": 3500, "column": 24 } } @@ -475063,15 +478325,15 @@ "updateContext": null }, "value": "=", - "start": 142090, - "end": 142091, + "start": 142604, + "end": 142605, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 25 }, "end": { - "line": 3492, + "line": 3500, "column": 26 } } @@ -475088,15 +478350,15 @@ "postfix": false, "binop": null }, - "start": 142092, - "end": 142093, + "start": 142606, + "end": 142607, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 27 }, "end": { - "line": 3492, + "line": 3500, "column": 28 } } @@ -475113,15 +478375,15 @@ "postfix": false, "binop": null }, - "start": 142093, - "end": 142094, + "start": 142607, + "end": 142608, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 28 }, "end": { - "line": 3492, + "line": 3500, "column": 29 } } @@ -475139,15 +478401,15 @@ "binop": null, "updateContext": null }, - "start": 142094, - "end": 142095, + "start": 142608, + "end": 142609, "loc": { "start": { - "line": 3492, + "line": 3500, "column": 29 }, "end": { - "line": 3492, + "line": 3500, "column": 30 } } @@ -475167,15 +478429,15 @@ "updateContext": null }, "value": "this", - "start": 142104, - "end": 142108, + "start": 142618, + "end": 142622, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 8 }, "end": { - "line": 3493, + "line": 3501, "column": 12 } } @@ -475193,15 +478455,15 @@ "binop": null, "updateContext": null }, - "start": 142108, - "end": 142109, + "start": 142622, + "end": 142623, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 12 }, "end": { - "line": 3493, + "line": 3501, "column": 13 } } @@ -475219,15 +478481,15 @@ "binop": null }, "value": "_dtxBuckets", - "start": 142109, - "end": 142120, + "start": 142623, + "end": 142634, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 13 }, "end": { - "line": 3493, + "line": 3501, "column": 24 } } @@ -475246,15 +478508,15 @@ "updateContext": null }, "value": "=", - "start": 142121, - "end": 142122, + "start": 142635, + "end": 142636, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 25 }, "end": { - "line": 3493, + "line": 3501, "column": 26 } } @@ -475271,15 +478533,15 @@ "postfix": false, "binop": null }, - "start": 142123, - "end": 142124, + "start": 142637, + "end": 142638, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 27 }, "end": { - "line": 3493, + "line": 3501, "column": 28 } } @@ -475296,15 +478558,15 @@ "postfix": false, "binop": null }, - "start": 142124, - "end": 142125, + "start": 142638, + "end": 142639, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 28 }, "end": { - "line": 3493, + "line": 3501, "column": 29 } } @@ -475322,15 +478584,15 @@ "binop": null, "updateContext": null }, - "start": 142125, - "end": 142126, + "start": 142639, + "end": 142640, "loc": { "start": { - "line": 3493, + "line": 3501, "column": 29 }, "end": { - "line": 3493, + "line": 3501, "column": 30 } } @@ -475350,15 +478612,15 @@ "updateContext": null }, "value": "this", - "start": 142135, - "end": 142139, + "start": 142649, + "end": 142653, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 8 }, "end": { - "line": 3494, + "line": 3502, "column": 12 } } @@ -475376,15 +478638,15 @@ "binop": null, "updateContext": null }, - "start": 142139, - "end": 142140, + "start": 142653, + "end": 142654, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 12 }, "end": { - "line": 3494, + "line": 3502, "column": 13 } } @@ -475402,15 +478664,15 @@ "binop": null }, "value": "_textures", - "start": 142140, - "end": 142149, + "start": 142654, + "end": 142663, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 13 }, "end": { - "line": 3494, + "line": 3502, "column": 22 } } @@ -475429,15 +478691,15 @@ "updateContext": null }, "value": "=", - "start": 142150, - "end": 142151, + "start": 142664, + "end": 142665, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 23 }, "end": { - "line": 3494, + "line": 3502, "column": 24 } } @@ -475454,15 +478716,15 @@ "postfix": false, "binop": null }, - "start": 142152, - "end": 142153, + "start": 142666, + "end": 142667, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 25 }, "end": { - "line": 3494, + "line": 3502, "column": 26 } } @@ -475479,15 +478741,15 @@ "postfix": false, "binop": null }, - "start": 142153, - "end": 142154, + "start": 142667, + "end": 142668, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 26 }, "end": { - "line": 3494, + "line": 3502, "column": 27 } } @@ -475505,15 +478767,15 @@ "binop": null, "updateContext": null }, - "start": 142154, - "end": 142155, + "start": 142668, + "end": 142669, "loc": { "start": { - "line": 3494, + "line": 3502, "column": 27 }, "end": { - "line": 3494, + "line": 3502, "column": 28 } } @@ -475533,15 +478795,15 @@ "updateContext": null }, "value": "this", - "start": 142164, - "end": 142168, + "start": 142678, + "end": 142682, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 8 }, "end": { - "line": 3495, + "line": 3503, "column": 12 } } @@ -475559,15 +478821,15 @@ "binop": null, "updateContext": null }, - "start": 142168, - "end": 142169, + "start": 142682, + "end": 142683, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 12 }, "end": { - "line": 3495, + "line": 3503, "column": 13 } } @@ -475585,15 +478847,15 @@ "binop": null }, "value": "_textureSets", - "start": 142169, - "end": 142181, + "start": 142683, + "end": 142695, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 13 }, "end": { - "line": 3495, + "line": 3503, "column": 25 } } @@ -475612,15 +478874,15 @@ "updateContext": null }, "value": "=", - "start": 142182, - "end": 142183, + "start": 142696, + "end": 142697, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 26 }, "end": { - "line": 3495, + "line": 3503, "column": 27 } } @@ -475637,15 +478899,15 @@ "postfix": false, "binop": null }, - "start": 142184, - "end": 142185, + "start": 142698, + "end": 142699, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 28 }, "end": { - "line": 3495, + "line": 3503, "column": 29 } } @@ -475662,15 +478924,15 @@ "postfix": false, "binop": null }, - "start": 142185, - "end": 142186, + "start": 142699, + "end": 142700, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 29 }, "end": { - "line": 3495, + "line": 3503, "column": 30 } } @@ -475688,15 +478950,15 @@ "binop": null, "updateContext": null }, - "start": 142186, - "end": 142187, + "start": 142700, + "end": 142701, "loc": { "start": { - "line": 3495, + "line": 3503, "column": 30 }, "end": { - "line": 3495, + "line": 3503, "column": 31 } } @@ -475716,15 +478978,15 @@ "updateContext": null }, "value": "this", - "start": 142196, - "end": 142200, + "start": 142710, + "end": 142714, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 8 }, "end": { - "line": 3496, + "line": 3504, "column": 12 } } @@ -475742,15 +479004,15 @@ "binop": null, "updateContext": null }, - "start": 142200, - "end": 142201, + "start": 142714, + "end": 142715, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 12 }, "end": { - "line": 3496, + "line": 3504, "column": 13 } } @@ -475768,15 +479030,15 @@ "binop": null }, "value": "_dtxLayers", - "start": 142201, - "end": 142211, + "start": 142715, + "end": 142725, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 13 }, "end": { - "line": 3496, + "line": 3504, "column": 23 } } @@ -475795,15 +479057,15 @@ "updateContext": null }, "value": "=", - "start": 142212, - "end": 142213, + "start": 142726, + "end": 142727, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 24 }, "end": { - "line": 3496, + "line": 3504, "column": 25 } } @@ -475820,15 +479082,15 @@ "postfix": false, "binop": null }, - "start": 142214, - "end": 142215, + "start": 142728, + "end": 142729, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 26 }, "end": { - "line": 3496, + "line": 3504, "column": 27 } } @@ -475845,15 +479107,15 @@ "postfix": false, "binop": null }, - "start": 142215, - "end": 142216, + "start": 142729, + "end": 142730, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 27 }, "end": { - "line": 3496, + "line": 3504, "column": 28 } } @@ -475871,15 +479133,15 @@ "binop": null, "updateContext": null }, - "start": 142216, - "end": 142217, + "start": 142730, + "end": 142731, "loc": { "start": { - "line": 3496, + "line": 3504, "column": 28 }, "end": { - "line": 3496, + "line": 3504, "column": 29 } } @@ -475899,15 +479161,15 @@ "updateContext": null }, "value": "this", - "start": 142226, - "end": 142230, + "start": 142740, + "end": 142744, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 8 }, "end": { - "line": 3497, + "line": 3505, "column": 12 } } @@ -475925,15 +479187,15 @@ "binop": null, "updateContext": null }, - "start": 142230, - "end": 142231, + "start": 142744, + "end": 142745, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 12 }, "end": { - "line": 3497, + "line": 3505, "column": 13 } } @@ -475951,15 +479213,15 @@ "binop": null }, "value": "_vboInstancingLayers", - "start": 142231, - "end": 142251, + "start": 142745, + "end": 142765, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 13 }, "end": { - "line": 3497, + "line": 3505, "column": 33 } } @@ -475978,15 +479240,15 @@ "updateContext": null }, "value": "=", - "start": 142252, - "end": 142253, + "start": 142766, + "end": 142767, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 34 }, "end": { - "line": 3497, + "line": 3505, "column": 35 } } @@ -476003,15 +479265,15 @@ "postfix": false, "binop": null }, - "start": 142254, - "end": 142255, + "start": 142768, + "end": 142769, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 36 }, "end": { - "line": 3497, + "line": 3505, "column": 37 } } @@ -476028,15 +479290,15 @@ "postfix": false, "binop": null }, - "start": 142255, - "end": 142256, + "start": 142769, + "end": 142770, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 37 }, "end": { - "line": 3497, + "line": 3505, "column": 38 } } @@ -476054,15 +479316,15 @@ "binop": null, "updateContext": null }, - "start": 142256, - "end": 142257, + "start": 142770, + "end": 142771, "loc": { "start": { - "line": 3497, + "line": 3505, "column": 38 }, "end": { - "line": 3497, + "line": 3505, "column": 39 } } @@ -476082,15 +479344,15 @@ "updateContext": null }, "value": "this", - "start": 142266, - "end": 142270, + "start": 142780, + "end": 142784, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 8 }, "end": { - "line": 3498, + "line": 3506, "column": 12 } } @@ -476108,15 +479370,15 @@ "binop": null, "updateContext": null }, - "start": 142270, - "end": 142271, + "start": 142784, + "end": 142785, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 12 }, "end": { - "line": 3498, + "line": 3506, "column": 13 } } @@ -476134,15 +479396,15 @@ "binop": null }, "value": "_vboBatchingLayers", - "start": 142271, - "end": 142289, + "start": 142785, + "end": 142803, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 13 }, "end": { - "line": 3498, + "line": 3506, "column": 31 } } @@ -476161,15 +479423,15 @@ "updateContext": null }, "value": "=", - "start": 142290, - "end": 142291, + "start": 142804, + "end": 142805, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 32 }, "end": { - "line": 3498, + "line": 3506, "column": 33 } } @@ -476186,15 +479448,15 @@ "postfix": false, "binop": null }, - "start": 142292, - "end": 142293, + "start": 142806, + "end": 142807, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 34 }, "end": { - "line": 3498, + "line": 3506, "column": 35 } } @@ -476211,15 +479473,15 @@ "postfix": false, "binop": null }, - "start": 142293, - "end": 142294, + "start": 142807, + "end": 142808, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 35 }, "end": { - "line": 3498, + "line": 3506, "column": 36 } } @@ -476237,15 +479499,15 @@ "binop": null, "updateContext": null }, - "start": 142294, - "end": 142295, + "start": 142808, + "end": 142809, "loc": { "start": { - "line": 3498, + "line": 3506, "column": 36 }, "end": { - "line": 3498, + "line": 3506, "column": 37 } } @@ -476265,15 +479527,15 @@ "updateContext": null }, "value": "for", - "start": 142304, - "end": 142307, + "start": 142818, + "end": 142821, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 8 }, "end": { - "line": 3499, + "line": 3507, "column": 11 } } @@ -476290,15 +479552,15 @@ "postfix": false, "binop": null }, - "start": 142308, - "end": 142309, + "start": 142822, + "end": 142823, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 12 }, "end": { - "line": 3499, + "line": 3507, "column": 13 } } @@ -476318,15 +479580,15 @@ "updateContext": null }, "value": "let", - "start": 142309, - "end": 142312, + "start": 142823, + "end": 142826, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 13 }, "end": { - "line": 3499, + "line": 3507, "column": 16 } } @@ -476344,15 +479606,15 @@ "binop": null }, "value": "i", - "start": 142313, - "end": 142314, + "start": 142827, + "end": 142828, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 17 }, "end": { - "line": 3499, + "line": 3507, "column": 18 } } @@ -476371,15 +479633,15 @@ "updateContext": null }, "value": "=", - "start": 142315, - "end": 142316, + "start": 142829, + "end": 142830, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 19 }, "end": { - "line": 3499, + "line": 3507, "column": 20 } } @@ -476398,15 +479660,15 @@ "updateContext": null }, "value": 0, - "start": 142317, - "end": 142318, + "start": 142831, + "end": 142832, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 21 }, "end": { - "line": 3499, + "line": 3507, "column": 22 } } @@ -476424,15 +479686,15 @@ "binop": null, "updateContext": null }, - "start": 142318, - "end": 142319, + "start": 142832, + "end": 142833, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 22 }, "end": { - "line": 3499, + "line": 3507, "column": 23 } } @@ -476450,15 +479712,15 @@ "binop": null }, "value": "len", - "start": 142320, - "end": 142323, + "start": 142834, + "end": 142837, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 24 }, "end": { - "line": 3499, + "line": 3507, "column": 27 } } @@ -476477,15 +479739,15 @@ "updateContext": null }, "value": "=", - "start": 142324, - "end": 142325, + "start": 142838, + "end": 142839, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 28 }, "end": { - "line": 3499, + "line": 3507, "column": 29 } } @@ -476505,15 +479767,15 @@ "updateContext": null }, "value": "this", - "start": 142326, - "end": 142330, + "start": 142840, + "end": 142844, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 30 }, "end": { - "line": 3499, + "line": 3507, "column": 34 } } @@ -476531,15 +479793,15 @@ "binop": null, "updateContext": null }, - "start": 142330, - "end": 142331, + "start": 142844, + "end": 142845, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 34 }, "end": { - "line": 3499, + "line": 3507, "column": 35 } } @@ -476557,15 +479819,15 @@ "binop": null }, "value": "_entityList", - "start": 142331, - "end": 142342, + "start": 142845, + "end": 142856, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 35 }, "end": { - "line": 3499, + "line": 3507, "column": 46 } } @@ -476583,15 +479845,15 @@ "binop": null, "updateContext": null }, - "start": 142342, - "end": 142343, + "start": 142856, + "end": 142857, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 46 }, "end": { - "line": 3499, + "line": 3507, "column": 47 } } @@ -476609,15 +479871,15 @@ "binop": null }, "value": "length", - "start": 142343, - "end": 142349, + "start": 142857, + "end": 142863, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 47 }, "end": { - "line": 3499, + "line": 3507, "column": 53 } } @@ -476635,15 +479897,15 @@ "binop": null, "updateContext": null }, - "start": 142349, - "end": 142350, + "start": 142863, + "end": 142864, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 53 }, "end": { - "line": 3499, + "line": 3507, "column": 54 } } @@ -476661,15 +479923,15 @@ "binop": null }, "value": "i", - "start": 142351, - "end": 142352, + "start": 142865, + "end": 142866, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 55 }, "end": { - "line": 3499, + "line": 3507, "column": 56 } } @@ -476688,15 +479950,15 @@ "updateContext": null }, "value": "<", - "start": 142353, - "end": 142354, + "start": 142867, + "end": 142868, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 57 }, "end": { - "line": 3499, + "line": 3507, "column": 58 } } @@ -476714,15 +479976,15 @@ "binop": null }, "value": "len", - "start": 142355, - "end": 142358, + "start": 142869, + "end": 142872, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 59 }, "end": { - "line": 3499, + "line": 3507, "column": 62 } } @@ -476740,15 +480002,15 @@ "binop": null, "updateContext": null }, - "start": 142358, - "end": 142359, + "start": 142872, + "end": 142873, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 62 }, "end": { - "line": 3499, + "line": 3507, "column": 63 } } @@ -476766,15 +480028,15 @@ "binop": null }, "value": "i", - "start": 142360, - "end": 142361, + "start": 142874, + "end": 142875, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 64 }, "end": { - "line": 3499, + "line": 3507, "column": 65 } } @@ -476792,15 +480054,15 @@ "binop": null }, "value": "++", - "start": 142361, - "end": 142363, + "start": 142875, + "end": 142877, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 65 }, "end": { - "line": 3499, + "line": 3507, "column": 67 } } @@ -476817,15 +480079,15 @@ "postfix": false, "binop": null }, - "start": 142363, - "end": 142364, + "start": 142877, + "end": 142878, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 67 }, "end": { - "line": 3499, + "line": 3507, "column": 68 } } @@ -476842,15 +480104,15 @@ "postfix": false, "binop": null }, - "start": 142365, - "end": 142366, + "start": 142879, + "end": 142880, "loc": { "start": { - "line": 3499, + "line": 3507, "column": 69 }, "end": { - "line": 3499, + "line": 3507, "column": 70 } } @@ -476870,15 +480132,15 @@ "updateContext": null }, "value": "const", - "start": 142379, - "end": 142384, + "start": 142893, + "end": 142898, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 12 }, "end": { - "line": 3500, + "line": 3508, "column": 17 } } @@ -476896,15 +480158,15 @@ "binop": null }, "value": "entity", - "start": 142385, - "end": 142391, + "start": 142899, + "end": 142905, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 18 }, "end": { - "line": 3500, + "line": 3508, "column": 24 } } @@ -476923,15 +480185,15 @@ "updateContext": null }, "value": "=", - "start": 142392, - "end": 142393, + "start": 142906, + "end": 142907, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 25 }, "end": { - "line": 3500, + "line": 3508, "column": 26 } } @@ -476951,15 +480213,15 @@ "updateContext": null }, "value": "this", - "start": 142394, - "end": 142398, + "start": 142908, + "end": 142912, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 27 }, "end": { - "line": 3500, + "line": 3508, "column": 31 } } @@ -476977,15 +480239,15 @@ "binop": null, "updateContext": null }, - "start": 142398, - "end": 142399, + "start": 142912, + "end": 142913, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 31 }, "end": { - "line": 3500, + "line": 3508, "column": 32 } } @@ -477003,15 +480265,15 @@ "binop": null }, "value": "_entityList", - "start": 142399, - "end": 142410, + "start": 142913, + "end": 142924, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 32 }, "end": { - "line": 3500, + "line": 3508, "column": 43 } } @@ -477029,15 +480291,15 @@ "binop": null, "updateContext": null }, - "start": 142410, - "end": 142411, + "start": 142924, + "end": 142925, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 43 }, "end": { - "line": 3500, + "line": 3508, "column": 44 } } @@ -477055,15 +480317,15 @@ "binop": null }, "value": "i", - "start": 142411, - "end": 142412, + "start": 142925, + "end": 142926, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 44 }, "end": { - "line": 3500, + "line": 3508, "column": 45 } } @@ -477081,15 +480343,15 @@ "binop": null, "updateContext": null }, - "start": 142412, - "end": 142413, + "start": 142926, + "end": 142927, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 45 }, "end": { - "line": 3500, + "line": 3508, "column": 46 } } @@ -477107,15 +480369,15 @@ "binop": null, "updateContext": null }, - "start": 142413, - "end": 142414, + "start": 142927, + "end": 142928, "loc": { "start": { - "line": 3500, + "line": 3508, "column": 46 }, "end": { - "line": 3500, + "line": 3508, "column": 47 } } @@ -477133,15 +480395,15 @@ "binop": null }, "value": "entity", - "start": 142427, - "end": 142433, + "start": 142941, + "end": 142947, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 12 }, "end": { - "line": 3501, + "line": 3509, "column": 18 } } @@ -477159,15 +480421,15 @@ "binop": null, "updateContext": null }, - "start": 142433, - "end": 142434, + "start": 142947, + "end": 142948, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 18 }, "end": { - "line": 3501, + "line": 3509, "column": 19 } } @@ -477185,15 +480447,15 @@ "binop": null }, "value": "_finalize", - "start": 142434, - "end": 142443, + "start": 142948, + "end": 142957, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 19 }, "end": { - "line": 3501, + "line": 3509, "column": 28 } } @@ -477210,15 +480472,15 @@ "postfix": false, "binop": null }, - "start": 142443, - "end": 142444, + "start": 142957, + "end": 142958, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 28 }, "end": { - "line": 3501, + "line": 3509, "column": 29 } } @@ -477235,15 +480497,15 @@ "postfix": false, "binop": null }, - "start": 142444, - "end": 142445, + "start": 142958, + "end": 142959, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 29 }, "end": { - "line": 3501, + "line": 3509, "column": 30 } } @@ -477261,15 +480523,15 @@ "binop": null, "updateContext": null }, - "start": 142445, - "end": 142446, + "start": 142959, + "end": 142960, "loc": { "start": { - "line": 3501, + "line": 3509, "column": 30 }, "end": { - "line": 3501, + "line": 3509, "column": 31 } } @@ -477286,15 +480548,15 @@ "postfix": false, "binop": null }, - "start": 142455, - "end": 142456, + "start": 142969, + "end": 142970, "loc": { "start": { - "line": 3502, + "line": 3510, "column": 8 }, "end": { - "line": 3502, + "line": 3510, "column": 9 } } @@ -477314,15 +480576,15 @@ "updateContext": null }, "value": "for", - "start": 142465, - "end": 142468, + "start": 142979, + "end": 142982, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 8 }, "end": { - "line": 3503, + "line": 3511, "column": 11 } } @@ -477339,15 +480601,15 @@ "postfix": false, "binop": null }, - "start": 142469, - "end": 142470, + "start": 142983, + "end": 142984, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 12 }, "end": { - "line": 3503, + "line": 3511, "column": 13 } } @@ -477367,15 +480629,15 @@ "updateContext": null }, "value": "let", - "start": 142470, - "end": 142473, + "start": 142984, + "end": 142987, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 13 }, "end": { - "line": 3503, + "line": 3511, "column": 16 } } @@ -477393,15 +480655,15 @@ "binop": null }, "value": "i", - "start": 142474, - "end": 142475, + "start": 142988, + "end": 142989, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 17 }, "end": { - "line": 3503, + "line": 3511, "column": 18 } } @@ -477420,15 +480682,15 @@ "updateContext": null }, "value": "=", - "start": 142476, - "end": 142477, + "start": 142990, + "end": 142991, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 19 }, "end": { - "line": 3503, + "line": 3511, "column": 20 } } @@ -477447,15 +480709,15 @@ "updateContext": null }, "value": 0, - "start": 142478, - "end": 142479, + "start": 142992, + "end": 142993, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 21 }, "end": { - "line": 3503, + "line": 3511, "column": 22 } } @@ -477473,15 +480735,15 @@ "binop": null, "updateContext": null }, - "start": 142479, - "end": 142480, + "start": 142993, + "end": 142994, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 22 }, "end": { - "line": 3503, + "line": 3511, "column": 23 } } @@ -477499,15 +480761,15 @@ "binop": null }, "value": "len", - "start": 142481, - "end": 142484, + "start": 142995, + "end": 142998, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 24 }, "end": { - "line": 3503, + "line": 3511, "column": 27 } } @@ -477526,15 +480788,15 @@ "updateContext": null }, "value": "=", - "start": 142485, - "end": 142486, + "start": 142999, + "end": 143000, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 28 }, "end": { - "line": 3503, + "line": 3511, "column": 29 } } @@ -477554,15 +480816,15 @@ "updateContext": null }, "value": "this", - "start": 142487, - "end": 142491, + "start": 143001, + "end": 143005, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 30 }, "end": { - "line": 3503, + "line": 3511, "column": 34 } } @@ -477580,15 +480842,15 @@ "binop": null, "updateContext": null }, - "start": 142491, - "end": 142492, + "start": 143005, + "end": 143006, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 34 }, "end": { - "line": 3503, + "line": 3511, "column": 35 } } @@ -477606,15 +480868,15 @@ "binop": null }, "value": "_entityList", - "start": 142492, - "end": 142503, + "start": 143006, + "end": 143017, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 35 }, "end": { - "line": 3503, + "line": 3511, "column": 46 } } @@ -477632,15 +480894,15 @@ "binop": null, "updateContext": null }, - "start": 142503, - "end": 142504, + "start": 143017, + "end": 143018, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 46 }, "end": { - "line": 3503, + "line": 3511, "column": 47 } } @@ -477658,15 +480920,15 @@ "binop": null }, "value": "length", - "start": 142504, - "end": 142510, + "start": 143018, + "end": 143024, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 47 }, "end": { - "line": 3503, + "line": 3511, "column": 53 } } @@ -477684,15 +480946,15 @@ "binop": null, "updateContext": null }, - "start": 142510, - "end": 142511, + "start": 143024, + "end": 143025, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 53 }, "end": { - "line": 3503, + "line": 3511, "column": 54 } } @@ -477710,15 +480972,15 @@ "binop": null }, "value": "i", - "start": 142512, - "end": 142513, + "start": 143026, + "end": 143027, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 55 }, "end": { - "line": 3503, + "line": 3511, "column": 56 } } @@ -477737,15 +480999,15 @@ "updateContext": null }, "value": "<", - "start": 142514, - "end": 142515, + "start": 143028, + "end": 143029, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 57 }, "end": { - "line": 3503, + "line": 3511, "column": 58 } } @@ -477763,15 +481025,15 @@ "binop": null }, "value": "len", - "start": 142516, - "end": 142519, + "start": 143030, + "end": 143033, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 59 }, "end": { - "line": 3503, + "line": 3511, "column": 62 } } @@ -477789,15 +481051,15 @@ "binop": null, "updateContext": null }, - "start": 142519, - "end": 142520, + "start": 143033, + "end": 143034, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 62 }, "end": { - "line": 3503, + "line": 3511, "column": 63 } } @@ -477815,15 +481077,15 @@ "binop": null }, "value": "i", - "start": 142521, - "end": 142522, + "start": 143035, + "end": 143036, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 64 }, "end": { - "line": 3503, + "line": 3511, "column": 65 } } @@ -477841,15 +481103,15 @@ "binop": null }, "value": "++", - "start": 142522, - "end": 142524, + "start": 143036, + "end": 143038, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 65 }, "end": { - "line": 3503, + "line": 3511, "column": 67 } } @@ -477866,15 +481128,15 @@ "postfix": false, "binop": null }, - "start": 142524, - "end": 142525, + "start": 143038, + "end": 143039, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 67 }, "end": { - "line": 3503, + "line": 3511, "column": 68 } } @@ -477891,15 +481153,15 @@ "postfix": false, "binop": null }, - "start": 142526, - "end": 142527, + "start": 143040, + "end": 143041, "loc": { "start": { - "line": 3503, + "line": 3511, "column": 69 }, "end": { - "line": 3503, + "line": 3511, "column": 70 } } @@ -477919,15 +481181,15 @@ "updateContext": null }, "value": "const", - "start": 142540, - "end": 142545, + "start": 143054, + "end": 143059, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 12 }, "end": { - "line": 3504, + "line": 3512, "column": 17 } } @@ -477945,15 +481207,15 @@ "binop": null }, "value": "entity", - "start": 142546, - "end": 142552, + "start": 143060, + "end": 143066, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 18 }, "end": { - "line": 3504, + "line": 3512, "column": 24 } } @@ -477972,15 +481234,15 @@ "updateContext": null }, "value": "=", - "start": 142553, - "end": 142554, + "start": 143067, + "end": 143068, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 25 }, "end": { - "line": 3504, + "line": 3512, "column": 26 } } @@ -478000,15 +481262,15 @@ "updateContext": null }, "value": "this", - "start": 142555, - "end": 142559, + "start": 143069, + "end": 143073, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 27 }, "end": { - "line": 3504, + "line": 3512, "column": 31 } } @@ -478026,15 +481288,15 @@ "binop": null, "updateContext": null }, - "start": 142559, - "end": 142560, + "start": 143073, + "end": 143074, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 31 }, "end": { - "line": 3504, + "line": 3512, "column": 32 } } @@ -478052,15 +481314,15 @@ "binop": null }, "value": "_entityList", - "start": 142560, - "end": 142571, + "start": 143074, + "end": 143085, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 32 }, "end": { - "line": 3504, + "line": 3512, "column": 43 } } @@ -478078,15 +481340,15 @@ "binop": null, "updateContext": null }, - "start": 142571, - "end": 142572, + "start": 143085, + "end": 143086, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 43 }, "end": { - "line": 3504, + "line": 3512, "column": 44 } } @@ -478104,15 +481366,15 @@ "binop": null }, "value": "i", - "start": 142572, - "end": 142573, + "start": 143086, + "end": 143087, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 44 }, "end": { - "line": 3504, + "line": 3512, "column": 45 } } @@ -478130,15 +481392,15 @@ "binop": null, "updateContext": null }, - "start": 142573, - "end": 142574, + "start": 143087, + "end": 143088, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 45 }, "end": { - "line": 3504, + "line": 3512, "column": 46 } } @@ -478156,15 +481418,15 @@ "binop": null, "updateContext": null }, - "start": 142574, - "end": 142575, + "start": 143088, + "end": 143089, "loc": { "start": { - "line": 3504, + "line": 3512, "column": 46 }, "end": { - "line": 3504, + "line": 3512, "column": 47 } } @@ -478182,15 +481444,15 @@ "binop": null }, "value": "entity", - "start": 142588, - "end": 142594, + "start": 143102, + "end": 143108, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 12 }, "end": { - "line": 3505, + "line": 3513, "column": 18 } } @@ -478208,15 +481470,15 @@ "binop": null, "updateContext": null }, - "start": 142594, - "end": 142595, + "start": 143108, + "end": 143109, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 18 }, "end": { - "line": 3505, + "line": 3513, "column": 19 } } @@ -478234,15 +481496,15 @@ "binop": null }, "value": "_finalize2", - "start": 142595, - "end": 142605, + "start": 143109, + "end": 143119, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 19 }, "end": { - "line": 3505, + "line": 3513, "column": 29 } } @@ -478259,15 +481521,15 @@ "postfix": false, "binop": null }, - "start": 142605, - "end": 142606, + "start": 143119, + "end": 143120, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 29 }, "end": { - "line": 3505, + "line": 3513, "column": 30 } } @@ -478284,15 +481546,15 @@ "postfix": false, "binop": null }, - "start": 142606, - "end": 142607, + "start": 143120, + "end": 143121, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 30 }, "end": { - "line": 3505, + "line": 3513, "column": 31 } } @@ -478310,15 +481572,15 @@ "binop": null, "updateContext": null }, - "start": 142607, - "end": 142608, + "start": 143121, + "end": 143122, "loc": { "start": { - "line": 3505, + "line": 3513, "column": 31 }, "end": { - "line": 3505, + "line": 3513, "column": 32 } } @@ -478335,15 +481597,15 @@ "postfix": false, "binop": null }, - "start": 142617, - "end": 142618, + "start": 143131, + "end": 143132, "loc": { "start": { - "line": 3506, + "line": 3514, "column": 8 }, "end": { - "line": 3506, + "line": 3514, "column": 9 } } @@ -478351,15 +481613,15 @@ { "type": "CommentLine", "value": " Sort layers to reduce WebGL shader switching when rendering them", - "start": 142627, - "end": 142694, + "start": 143141, + "end": 143208, "loc": { "start": { - "line": 3507, + "line": 3515, "column": 8 }, "end": { - "line": 3507, + "line": 3515, "column": 75 } } @@ -478379,15 +481641,15 @@ "updateContext": null }, "value": "this", - "start": 142703, - "end": 142707, + "start": 143217, + "end": 143221, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 8 }, "end": { - "line": 3508, + "line": 3516, "column": 12 } } @@ -478405,15 +481667,15 @@ "binop": null, "updateContext": null }, - "start": 142707, - "end": 142708, + "start": 143221, + "end": 143222, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 12 }, "end": { - "line": 3508, + "line": 3516, "column": 13 } } @@ -478431,15 +481693,15 @@ "binop": null }, "value": "layerList", - "start": 142708, - "end": 142717, + "start": 143222, + "end": 143231, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 13 }, "end": { - "line": 3508, + "line": 3516, "column": 22 } } @@ -478457,15 +481719,15 @@ "binop": null, "updateContext": null }, - "start": 142717, - "end": 142718, + "start": 143231, + "end": 143232, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 22 }, "end": { - "line": 3508, + "line": 3516, "column": 23 } } @@ -478483,15 +481745,15 @@ "binop": null }, "value": "sort", - "start": 142718, - "end": 142722, + "start": 143232, + "end": 143236, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 23 }, "end": { - "line": 3508, + "line": 3516, "column": 27 } } @@ -478508,15 +481770,15 @@ "postfix": false, "binop": null }, - "start": 142722, - "end": 142723, + "start": 143236, + "end": 143237, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 27 }, "end": { - "line": 3508, + "line": 3516, "column": 28 } } @@ -478533,15 +481795,15 @@ "postfix": false, "binop": null }, - "start": 142723, - "end": 142724, + "start": 143237, + "end": 143238, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 28 }, "end": { - "line": 3508, + "line": 3516, "column": 29 } } @@ -478559,15 +481821,15 @@ "binop": null }, "value": "a", - "start": 142724, - "end": 142725, + "start": 143238, + "end": 143239, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 29 }, "end": { - "line": 3508, + "line": 3516, "column": 30 } } @@ -478585,15 +481847,15 @@ "binop": null, "updateContext": null }, - "start": 142725, - "end": 142726, + "start": 143239, + "end": 143240, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 30 }, "end": { - "line": 3508, + "line": 3516, "column": 31 } } @@ -478611,15 +481873,15 @@ "binop": null }, "value": "b", - "start": 142727, - "end": 142728, + "start": 143241, + "end": 143242, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 32 }, "end": { - "line": 3508, + "line": 3516, "column": 33 } } @@ -478636,15 +481898,15 @@ "postfix": false, "binop": null }, - "start": 142728, - "end": 142729, + "start": 143242, + "end": 143243, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 33 }, "end": { - "line": 3508, + "line": 3516, "column": 34 } } @@ -478662,15 +481924,15 @@ "binop": null, "updateContext": null }, - "start": 142730, - "end": 142732, + "start": 143244, + "end": 143246, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 35 }, "end": { - "line": 3508, + "line": 3516, "column": 37 } } @@ -478687,15 +481949,15 @@ "postfix": false, "binop": null }, - "start": 142733, - "end": 142734, + "start": 143247, + "end": 143248, "loc": { "start": { - "line": 3508, + "line": 3516, "column": 38 }, "end": { - "line": 3508, + "line": 3516, "column": 39 } } @@ -478715,15 +481977,15 @@ "updateContext": null }, "value": "if", - "start": 142747, - "end": 142749, + "start": 143261, + "end": 143263, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 12 }, "end": { - "line": 3509, + "line": 3517, "column": 14 } } @@ -478740,15 +482002,15 @@ "postfix": false, "binop": null }, - "start": 142750, - "end": 142751, + "start": 143264, + "end": 143265, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 15 }, "end": { - "line": 3509, + "line": 3517, "column": 16 } } @@ -478766,15 +482028,15 @@ "binop": null }, "value": "a", - "start": 142751, - "end": 142752, + "start": 143265, + "end": 143266, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 16 }, "end": { - "line": 3509, + "line": 3517, "column": 17 } } @@ -478792,15 +482054,15 @@ "binop": null, "updateContext": null }, - "start": 142752, - "end": 142753, + "start": 143266, + "end": 143267, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 17 }, "end": { - "line": 3509, + "line": 3517, "column": 18 } } @@ -478818,15 +482080,15 @@ "binop": null }, "value": "sortId", - "start": 142753, - "end": 142759, + "start": 143267, + "end": 143273, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 18 }, "end": { - "line": 3509, + "line": 3517, "column": 24 } } @@ -478845,15 +482107,15 @@ "updateContext": null }, "value": "<", - "start": 142760, - "end": 142761, + "start": 143274, + "end": 143275, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 25 }, "end": { - "line": 3509, + "line": 3517, "column": 26 } } @@ -478871,15 +482133,15 @@ "binop": null }, "value": "b", - "start": 142762, - "end": 142763, + "start": 143276, + "end": 143277, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 27 }, "end": { - "line": 3509, + "line": 3517, "column": 28 } } @@ -478897,15 +482159,15 @@ "binop": null, "updateContext": null }, - "start": 142763, - "end": 142764, + "start": 143277, + "end": 143278, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 28 }, "end": { - "line": 3509, + "line": 3517, "column": 29 } } @@ -478923,15 +482185,15 @@ "binop": null }, "value": "sortId", - "start": 142764, - "end": 142770, + "start": 143278, + "end": 143284, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 29 }, "end": { - "line": 3509, + "line": 3517, "column": 35 } } @@ -478948,15 +482210,15 @@ "postfix": false, "binop": null }, - "start": 142770, - "end": 142771, + "start": 143284, + "end": 143285, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 35 }, "end": { - "line": 3509, + "line": 3517, "column": 36 } } @@ -478973,15 +482235,15 @@ "postfix": false, "binop": null }, - "start": 142772, - "end": 142773, + "start": 143286, + "end": 143287, "loc": { "start": { - "line": 3509, + "line": 3517, "column": 37 }, "end": { - "line": 3509, + "line": 3517, "column": 38 } } @@ -479001,15 +482263,15 @@ "updateContext": null }, "value": "return", - "start": 142790, - "end": 142796, + "start": 143304, + "end": 143310, "loc": { "start": { - "line": 3510, + "line": 3518, "column": 16 }, "end": { - "line": 3510, + "line": 3518, "column": 22 } } @@ -479028,15 +482290,15 @@ "updateContext": null }, "value": "-", - "start": 142797, - "end": 142798, + "start": 143311, + "end": 143312, "loc": { "start": { - "line": 3510, + "line": 3518, "column": 23 }, "end": { - "line": 3510, + "line": 3518, "column": 24 } } @@ -479055,15 +482317,15 @@ "updateContext": null }, "value": 1, - "start": 142798, - "end": 142799, + "start": 143312, + "end": 143313, "loc": { "start": { - "line": 3510, + "line": 3518, "column": 24 }, "end": { - "line": 3510, + "line": 3518, "column": 25 } } @@ -479081,15 +482343,15 @@ "binop": null, "updateContext": null }, - "start": 142799, - "end": 142800, + "start": 143313, + "end": 143314, "loc": { "start": { - "line": 3510, + "line": 3518, "column": 25 }, "end": { - "line": 3510, + "line": 3518, "column": 26 } } @@ -479106,15 +482368,15 @@ "postfix": false, "binop": null }, - "start": 142813, - "end": 142814, + "start": 143327, + "end": 143328, "loc": { "start": { - "line": 3511, + "line": 3519, "column": 12 }, "end": { - "line": 3511, + "line": 3519, "column": 13 } } @@ -479134,15 +482396,15 @@ "updateContext": null }, "value": "if", - "start": 142827, - "end": 142829, + "start": 143341, + "end": 143343, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 12 }, "end": { - "line": 3512, + "line": 3520, "column": 14 } } @@ -479159,15 +482421,15 @@ "postfix": false, "binop": null }, - "start": 142830, - "end": 142831, + "start": 143344, + "end": 143345, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 15 }, "end": { - "line": 3512, + "line": 3520, "column": 16 } } @@ -479185,15 +482447,15 @@ "binop": null }, "value": "a", - "start": 142831, - "end": 142832, + "start": 143345, + "end": 143346, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 16 }, "end": { - "line": 3512, + "line": 3520, "column": 17 } } @@ -479211,15 +482473,15 @@ "binop": null, "updateContext": null }, - "start": 142832, - "end": 142833, + "start": 143346, + "end": 143347, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 17 }, "end": { - "line": 3512, + "line": 3520, "column": 18 } } @@ -479237,15 +482499,15 @@ "binop": null }, "value": "sortId", - "start": 142833, - "end": 142839, + "start": 143347, + "end": 143353, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 18 }, "end": { - "line": 3512, + "line": 3520, "column": 24 } } @@ -479264,15 +482526,15 @@ "updateContext": null }, "value": ">", - "start": 142840, - "end": 142841, + "start": 143354, + "end": 143355, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 25 }, "end": { - "line": 3512, + "line": 3520, "column": 26 } } @@ -479290,15 +482552,15 @@ "binop": null }, "value": "b", - "start": 142842, - "end": 142843, + "start": 143356, + "end": 143357, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 27 }, "end": { - "line": 3512, + "line": 3520, "column": 28 } } @@ -479316,15 +482578,15 @@ "binop": null, "updateContext": null }, - "start": 142843, - "end": 142844, + "start": 143357, + "end": 143358, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 28 }, "end": { - "line": 3512, + "line": 3520, "column": 29 } } @@ -479342,15 +482604,15 @@ "binop": null }, "value": "sortId", - "start": 142844, - "end": 142850, + "start": 143358, + "end": 143364, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 29 }, "end": { - "line": 3512, + "line": 3520, "column": 35 } } @@ -479367,15 +482629,15 @@ "postfix": false, "binop": null }, - "start": 142850, - "end": 142851, + "start": 143364, + "end": 143365, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 35 }, "end": { - "line": 3512, + "line": 3520, "column": 36 } } @@ -479392,15 +482654,15 @@ "postfix": false, "binop": null }, - "start": 142852, - "end": 142853, + "start": 143366, + "end": 143367, "loc": { "start": { - "line": 3512, + "line": 3520, "column": 37 }, "end": { - "line": 3512, + "line": 3520, "column": 38 } } @@ -479420,15 +482682,15 @@ "updateContext": null }, "value": "return", - "start": 142870, - "end": 142876, + "start": 143384, + "end": 143390, "loc": { "start": { - "line": 3513, + "line": 3521, "column": 16 }, "end": { - "line": 3513, + "line": 3521, "column": 22 } } @@ -479447,15 +482709,15 @@ "updateContext": null }, "value": 1, - "start": 142877, - "end": 142878, + "start": 143391, + "end": 143392, "loc": { "start": { - "line": 3513, + "line": 3521, "column": 23 }, "end": { - "line": 3513, + "line": 3521, "column": 24 } } @@ -479473,15 +482735,15 @@ "binop": null, "updateContext": null }, - "start": 142878, - "end": 142879, + "start": 143392, + "end": 143393, "loc": { "start": { - "line": 3513, + "line": 3521, "column": 24 }, "end": { - "line": 3513, + "line": 3521, "column": 25 } } @@ -479498,15 +482760,15 @@ "postfix": false, "binop": null }, - "start": 142892, - "end": 142893, + "start": 143406, + "end": 143407, "loc": { "start": { - "line": 3514, + "line": 3522, "column": 12 }, "end": { - "line": 3514, + "line": 3522, "column": 13 } } @@ -479526,15 +482788,15 @@ "updateContext": null }, "value": "return", - "start": 142906, - "end": 142912, + "start": 143420, + "end": 143426, "loc": { "start": { - "line": 3515, + "line": 3523, "column": 12 }, "end": { - "line": 3515, + "line": 3523, "column": 18 } } @@ -479553,15 +482815,15 @@ "updateContext": null }, "value": 0, - "start": 142913, - "end": 142914, + "start": 143427, + "end": 143428, "loc": { "start": { - "line": 3515, + "line": 3523, "column": 19 }, "end": { - "line": 3515, + "line": 3523, "column": 20 } } @@ -479579,15 +482841,15 @@ "binop": null, "updateContext": null }, - "start": 142914, - "end": 142915, + "start": 143428, + "end": 143429, "loc": { "start": { - "line": 3515, + "line": 3523, "column": 20 }, "end": { - "line": 3515, + "line": 3523, "column": 21 } } @@ -479604,15 +482866,15 @@ "postfix": false, "binop": null }, - "start": 142924, - "end": 142925, + "start": 143438, + "end": 143439, "loc": { "start": { - "line": 3516, + "line": 3524, "column": 8 }, "end": { - "line": 3516, + "line": 3524, "column": 9 } } @@ -479629,15 +482891,15 @@ "postfix": false, "binop": null }, - "start": 142925, - "end": 142926, + "start": 143439, + "end": 143440, "loc": { "start": { - "line": 3516, + "line": 3524, "column": 9 }, "end": { - "line": 3516, + "line": 3524, "column": 10 } } @@ -479655,15 +482917,15 @@ "binop": null, "updateContext": null }, - "start": 142926, - "end": 142927, + "start": 143440, + "end": 143441, "loc": { "start": { - "line": 3516, + "line": 3524, "column": 10 }, "end": { - "line": 3516, + "line": 3524, "column": 11 } } @@ -479683,15 +482945,15 @@ "updateContext": null }, "value": "for", - "start": 142936, - "end": 142939, + "start": 143450, + "end": 143453, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 8 }, "end": { - "line": 3517, + "line": 3525, "column": 11 } } @@ -479708,15 +482970,15 @@ "postfix": false, "binop": null }, - "start": 142940, - "end": 142941, + "start": 143454, + "end": 143455, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 12 }, "end": { - "line": 3517, + "line": 3525, "column": 13 } } @@ -479736,15 +482998,15 @@ "updateContext": null }, "value": "let", - "start": 142941, - "end": 142944, + "start": 143455, + "end": 143458, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 13 }, "end": { - "line": 3517, + "line": 3525, "column": 16 } } @@ -479762,15 +483024,15 @@ "binop": null }, "value": "i", - "start": 142945, - "end": 142946, + "start": 143459, + "end": 143460, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 17 }, "end": { - "line": 3517, + "line": 3525, "column": 18 } } @@ -479789,15 +483051,15 @@ "updateContext": null }, "value": "=", - "start": 142947, - "end": 142948, + "start": 143461, + "end": 143462, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 19 }, "end": { - "line": 3517, + "line": 3525, "column": 20 } } @@ -479816,15 +483078,15 @@ "updateContext": null }, "value": 0, - "start": 142949, - "end": 142950, + "start": 143463, + "end": 143464, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 21 }, "end": { - "line": 3517, + "line": 3525, "column": 22 } } @@ -479842,15 +483104,15 @@ "binop": null, "updateContext": null }, - "start": 142950, - "end": 142951, + "start": 143464, + "end": 143465, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 22 }, "end": { - "line": 3517, + "line": 3525, "column": 23 } } @@ -479868,15 +483130,15 @@ "binop": null }, "value": "len", - "start": 142952, - "end": 142955, + "start": 143466, + "end": 143469, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 24 }, "end": { - "line": 3517, + "line": 3525, "column": 27 } } @@ -479895,15 +483157,15 @@ "updateContext": null }, "value": "=", - "start": 142956, - "end": 142957, + "start": 143470, + "end": 143471, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 28 }, "end": { - "line": 3517, + "line": 3525, "column": 29 } } @@ -479923,15 +483185,15 @@ "updateContext": null }, "value": "this", - "start": 142958, - "end": 142962, + "start": 143472, + "end": 143476, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 30 }, "end": { - "line": 3517, + "line": 3525, "column": 34 } } @@ -479949,15 +483211,15 @@ "binop": null, "updateContext": null }, - "start": 142962, - "end": 142963, + "start": 143476, + "end": 143477, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 34 }, "end": { - "line": 3517, + "line": 3525, "column": 35 } } @@ -479975,15 +483237,15 @@ "binop": null }, "value": "layerList", - "start": 142963, - "end": 142972, + "start": 143477, + "end": 143486, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 35 }, "end": { - "line": 3517, + "line": 3525, "column": 44 } } @@ -480001,15 +483263,15 @@ "binop": null, "updateContext": null }, - "start": 142972, - "end": 142973, + "start": 143486, + "end": 143487, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 44 }, "end": { - "line": 3517, + "line": 3525, "column": 45 } } @@ -480027,15 +483289,15 @@ "binop": null }, "value": "length", - "start": 142973, - "end": 142979, + "start": 143487, + "end": 143493, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 45 }, "end": { - "line": 3517, + "line": 3525, "column": 51 } } @@ -480053,15 +483315,15 @@ "binop": null, "updateContext": null }, - "start": 142979, - "end": 142980, + "start": 143493, + "end": 143494, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 51 }, "end": { - "line": 3517, + "line": 3525, "column": 52 } } @@ -480079,15 +483341,15 @@ "binop": null }, "value": "i", - "start": 142981, - "end": 142982, + "start": 143495, + "end": 143496, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 53 }, "end": { - "line": 3517, + "line": 3525, "column": 54 } } @@ -480106,15 +483368,15 @@ "updateContext": null }, "value": "<", - "start": 142983, - "end": 142984, + "start": 143497, + "end": 143498, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 55 }, "end": { - "line": 3517, + "line": 3525, "column": 56 } } @@ -480132,15 +483394,15 @@ "binop": null }, "value": "len", - "start": 142985, - "end": 142988, + "start": 143499, + "end": 143502, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 57 }, "end": { - "line": 3517, + "line": 3525, "column": 60 } } @@ -480158,15 +483420,15 @@ "binop": null, "updateContext": null }, - "start": 142988, - "end": 142989, + "start": 143502, + "end": 143503, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 60 }, "end": { - "line": 3517, + "line": 3525, "column": 61 } } @@ -480184,15 +483446,15 @@ "binop": null }, "value": "i", - "start": 142990, - "end": 142991, + "start": 143504, + "end": 143505, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 62 }, "end": { - "line": 3517, + "line": 3525, "column": 63 } } @@ -480210,15 +483472,15 @@ "binop": null }, "value": "++", - "start": 142991, - "end": 142993, + "start": 143505, + "end": 143507, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 63 }, "end": { - "line": 3517, + "line": 3525, "column": 65 } } @@ -480235,15 +483497,15 @@ "postfix": false, "binop": null }, - "start": 142993, - "end": 142994, + "start": 143507, + "end": 143508, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 65 }, "end": { - "line": 3517, + "line": 3525, "column": 66 } } @@ -480260,15 +483522,15 @@ "postfix": false, "binop": null }, - "start": 142995, - "end": 142996, + "start": 143509, + "end": 143510, "loc": { "start": { - "line": 3517, + "line": 3525, "column": 67 }, "end": { - "line": 3517, + "line": 3525, "column": 68 } } @@ -480288,15 +483550,15 @@ "updateContext": null }, "value": "const", - "start": 143009, - "end": 143014, + "start": 143523, + "end": 143528, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 12 }, "end": { - "line": 3518, + "line": 3526, "column": 17 } } @@ -480314,15 +483576,15 @@ "binop": null }, "value": "layer", - "start": 143015, - "end": 143020, + "start": 143529, + "end": 143534, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 18 }, "end": { - "line": 3518, + "line": 3526, "column": 23 } } @@ -480341,15 +483603,15 @@ "updateContext": null }, "value": "=", - "start": 143021, - "end": 143022, + "start": 143535, + "end": 143536, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 24 }, "end": { - "line": 3518, + "line": 3526, "column": 25 } } @@ -480369,15 +483631,15 @@ "updateContext": null }, "value": "this", - "start": 143023, - "end": 143027, + "start": 143537, + "end": 143541, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 26 }, "end": { - "line": 3518, + "line": 3526, "column": 30 } } @@ -480395,15 +483657,15 @@ "binop": null, "updateContext": null }, - "start": 143027, - "end": 143028, + "start": 143541, + "end": 143542, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 30 }, "end": { - "line": 3518, + "line": 3526, "column": 31 } } @@ -480421,15 +483683,15 @@ "binop": null }, "value": "layerList", - "start": 143028, - "end": 143037, + "start": 143542, + "end": 143551, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 31 }, "end": { - "line": 3518, + "line": 3526, "column": 40 } } @@ -480447,15 +483709,15 @@ "binop": null, "updateContext": null }, - "start": 143037, - "end": 143038, + "start": 143551, + "end": 143552, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 40 }, "end": { - "line": 3518, + "line": 3526, "column": 41 } } @@ -480473,15 +483735,15 @@ "binop": null }, "value": "i", - "start": 143038, - "end": 143039, + "start": 143552, + "end": 143553, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 41 }, "end": { - "line": 3518, + "line": 3526, "column": 42 } } @@ -480499,15 +483761,15 @@ "binop": null, "updateContext": null }, - "start": 143039, - "end": 143040, + "start": 143553, + "end": 143554, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 42 }, "end": { - "line": 3518, + "line": 3526, "column": 43 } } @@ -480525,15 +483787,15 @@ "binop": null, "updateContext": null }, - "start": 143040, - "end": 143041, + "start": 143554, + "end": 143555, "loc": { "start": { - "line": 3518, + "line": 3526, "column": 43 }, "end": { - "line": 3518, + "line": 3526, "column": 44 } } @@ -480551,15 +483813,15 @@ "binop": null }, "value": "layer", - "start": 143054, - "end": 143059, + "start": 143568, + "end": 143573, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 12 }, "end": { - "line": 3519, + "line": 3527, "column": 17 } } @@ -480577,15 +483839,15 @@ "binop": null, "updateContext": null }, - "start": 143059, - "end": 143060, + "start": 143573, + "end": 143574, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 17 }, "end": { - "line": 3519, + "line": 3527, "column": 18 } } @@ -480603,15 +483865,15 @@ "binop": null }, "value": "layerIndex", - "start": 143060, - "end": 143070, + "start": 143574, + "end": 143584, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 18 }, "end": { - "line": 3519, + "line": 3527, "column": 28 } } @@ -480630,15 +483892,15 @@ "updateContext": null }, "value": "=", - "start": 143071, - "end": 143072, + "start": 143585, + "end": 143586, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 29 }, "end": { - "line": 3519, + "line": 3527, "column": 30 } } @@ -480656,15 +483918,15 @@ "binop": null }, "value": "i", - "start": 143073, - "end": 143074, + "start": 143587, + "end": 143588, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 31 }, "end": { - "line": 3519, + "line": 3527, "column": 32 } } @@ -480682,15 +483944,15 @@ "binop": null, "updateContext": null }, - "start": 143074, - "end": 143075, + "start": 143588, + "end": 143589, "loc": { "start": { - "line": 3519, + "line": 3527, "column": 32 }, "end": { - "line": 3519, + "line": 3527, "column": 33 } } @@ -480707,15 +483969,15 @@ "postfix": false, "binop": null }, - "start": 143084, - "end": 143085, + "start": 143598, + "end": 143599, "loc": { "start": { - "line": 3520, + "line": 3528, "column": 8 }, "end": { - "line": 3520, + "line": 3528, "column": 9 } } @@ -480735,15 +483997,15 @@ "updateContext": null }, "value": "this", - "start": 143094, - "end": 143098, + "start": 143608, + "end": 143612, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 8 }, "end": { - "line": 3521, + "line": 3529, "column": 12 } } @@ -480761,15 +484023,15 @@ "binop": null, "updateContext": null }, - "start": 143098, - "end": 143099, + "start": 143612, + "end": 143613, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 12 }, "end": { - "line": 3521, + "line": 3529, "column": 13 } } @@ -480787,15 +484049,15 @@ "binop": null }, "value": "glRedraw", - "start": 143099, - "end": 143107, + "start": 143613, + "end": 143621, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 13 }, "end": { - "line": 3521, + "line": 3529, "column": 21 } } @@ -480812,15 +484074,15 @@ "postfix": false, "binop": null }, - "start": 143107, - "end": 143108, + "start": 143621, + "end": 143622, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 21 }, "end": { - "line": 3521, + "line": 3529, "column": 22 } } @@ -480837,15 +484099,15 @@ "postfix": false, "binop": null }, - "start": 143108, - "end": 143109, + "start": 143622, + "end": 143623, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 22 }, "end": { - "line": 3521, + "line": 3529, "column": 23 } } @@ -480863,15 +484125,15 @@ "binop": null, "updateContext": null }, - "start": 143109, - "end": 143110, + "start": 143623, + "end": 143624, "loc": { "start": { - "line": 3521, + "line": 3529, "column": 23 }, "end": { - "line": 3521, + "line": 3529, "column": 24 } } @@ -480891,15 +484153,15 @@ "updateContext": null }, "value": "this", - "start": 143119, - "end": 143123, + "start": 143633, + "end": 143637, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 8 }, "end": { - "line": 3522, + "line": 3530, "column": 12 } } @@ -480917,15 +484179,15 @@ "binop": null, "updateContext": null }, - "start": 143123, - "end": 143124, + "start": 143637, + "end": 143638, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 12 }, "end": { - "line": 3522, + "line": 3530, "column": 13 } } @@ -480943,15 +484205,15 @@ "binop": null }, "value": "scene", - "start": 143124, - "end": 143129, + "start": 143638, + "end": 143643, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 13 }, "end": { - "line": 3522, + "line": 3530, "column": 18 } } @@ -480969,15 +484231,15 @@ "binop": null, "updateContext": null }, - "start": 143129, - "end": 143130, + "start": 143643, + "end": 143644, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 18 }, "end": { - "line": 3522, + "line": 3530, "column": 19 } } @@ -480995,15 +484257,15 @@ "binop": null }, "value": "_aabbDirty", - "start": 143130, - "end": 143140, + "start": 143644, + "end": 143654, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 19 }, "end": { - "line": 3522, + "line": 3530, "column": 29 } } @@ -481022,15 +484284,15 @@ "updateContext": null }, "value": "=", - "start": 143141, - "end": 143142, + "start": 143655, + "end": 143656, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 30 }, "end": { - "line": 3522, + "line": 3530, "column": 31 } } @@ -481050,15 +484312,15 @@ "updateContext": null }, "value": "true", - "start": 143143, - "end": 143147, + "start": 143657, + "end": 143661, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 32 }, "end": { - "line": 3522, + "line": 3530, "column": 36 } } @@ -481076,15 +484338,15 @@ "binop": null, "updateContext": null }, - "start": 143147, - "end": 143148, + "start": 143661, + "end": 143662, "loc": { "start": { - "line": 3522, + "line": 3530, "column": 36 }, "end": { - "line": 3522, + "line": 3530, "column": 37 } } @@ -481104,15 +484366,15 @@ "updateContext": null }, "value": "this", - "start": 143157, - "end": 143161, + "start": 143671, + "end": 143675, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 8 }, "end": { - "line": 3523, + "line": 3531, "column": 12 } } @@ -481130,15 +484392,15 @@ "binop": null, "updateContext": null }, - "start": 143161, - "end": 143162, + "start": 143675, + "end": 143676, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 12 }, "end": { - "line": 3523, + "line": 3531, "column": 13 } } @@ -481156,15 +484418,15 @@ "binop": null }, "value": "_viewMatrixDirty", - "start": 143162, - "end": 143178, + "start": 143676, + "end": 143692, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 13 }, "end": { - "line": 3523, + "line": 3531, "column": 29 } } @@ -481183,15 +484445,15 @@ "updateContext": null }, "value": "=", - "start": 143179, - "end": 143180, + "start": 143693, + "end": 143694, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 30 }, "end": { - "line": 3523, + "line": 3531, "column": 31 } } @@ -481211,15 +484473,15 @@ "updateContext": null }, "value": "true", - "start": 143181, - "end": 143185, + "start": 143695, + "end": 143699, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 32 }, "end": { - "line": 3523, + "line": 3531, "column": 36 } } @@ -481237,15 +484499,15 @@ "binop": null, "updateContext": null }, - "start": 143185, - "end": 143186, + "start": 143699, + "end": 143700, "loc": { "start": { - "line": 3523, + "line": 3531, "column": 36 }, "end": { - "line": 3523, + "line": 3531, "column": 37 } } @@ -481265,15 +484527,15 @@ "updateContext": null }, "value": "this", - "start": 143195, - "end": 143199, + "start": 143709, + "end": 143713, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 8 }, "end": { - "line": 3524, + "line": 3532, "column": 12 } } @@ -481291,15 +484553,15 @@ "binop": null, "updateContext": null }, - "start": 143199, - "end": 143200, + "start": 143713, + "end": 143714, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 12 }, "end": { - "line": 3524, + "line": 3532, "column": 13 } } @@ -481317,15 +484579,15 @@ "binop": null }, "value": "_matrixDirty", - "start": 143200, - "end": 143212, + "start": 143714, + "end": 143726, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 13 }, "end": { - "line": 3524, + "line": 3532, "column": 25 } } @@ -481344,15 +484606,15 @@ "updateContext": null }, "value": "=", - "start": 143213, - "end": 143214, + "start": 143727, + "end": 143728, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 26 }, "end": { - "line": 3524, + "line": 3532, "column": 27 } } @@ -481372,15 +484634,15 @@ "updateContext": null }, "value": "true", - "start": 143215, - "end": 143219, + "start": 143729, + "end": 143733, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 28 }, "end": { - "line": 3524, + "line": 3532, "column": 32 } } @@ -481398,15 +484660,15 @@ "binop": null, "updateContext": null }, - "start": 143219, - "end": 143220, + "start": 143733, + "end": 143734, "loc": { "start": { - "line": 3524, + "line": 3532, "column": 32 }, "end": { - "line": 3524, + "line": 3532, "column": 33 } } @@ -481426,15 +484688,15 @@ "updateContext": null }, "value": "this", - "start": 143229, - "end": 143233, + "start": 143743, + "end": 143747, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 8 }, "end": { - "line": 3525, + "line": 3533, "column": 12 } } @@ -481452,15 +484714,15 @@ "binop": null, "updateContext": null }, - "start": 143233, - "end": 143234, + "start": 143747, + "end": 143748, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 12 }, "end": { - "line": 3525, + "line": 3533, "column": 13 } } @@ -481478,15 +484740,15 @@ "binop": null }, "value": "_aabbDirty", - "start": 143234, - "end": 143244, + "start": 143748, + "end": 143758, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 13 }, "end": { - "line": 3525, + "line": 3533, "column": 23 } } @@ -481505,15 +484767,15 @@ "updateContext": null }, "value": "=", - "start": 143245, - "end": 143246, + "start": 143759, + "end": 143760, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 24 }, "end": { - "line": 3525, + "line": 3533, "column": 25 } } @@ -481533,15 +484795,15 @@ "updateContext": null }, "value": "true", - "start": 143247, - "end": 143251, + "start": 143761, + "end": 143765, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 26 }, "end": { - "line": 3525, + "line": 3533, "column": 30 } } @@ -481559,15 +484821,15 @@ "binop": null, "updateContext": null }, - "start": 143251, - "end": 143252, + "start": 143765, + "end": 143766, "loc": { "start": { - "line": 3525, + "line": 3533, "column": 30 }, "end": { - "line": 3525, + "line": 3533, "column": 31 } } @@ -481587,15 +484849,15 @@ "updateContext": null }, "value": "this", - "start": 143262, - "end": 143266, + "start": 143776, + "end": 143780, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 8 }, "end": { - "line": 3527, + "line": 3535, "column": 12 } } @@ -481613,15 +484875,15 @@ "binop": null, "updateContext": null }, - "start": 143266, - "end": 143267, + "start": 143780, + "end": 143781, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 12 }, "end": { - "line": 3527, + "line": 3535, "column": 13 } } @@ -481639,15 +484901,15 @@ "binop": null }, "value": "_setWorldMatrixDirty", - "start": 143267, - "end": 143287, + "start": 143781, + "end": 143801, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 13 }, "end": { - "line": 3527, + "line": 3535, "column": 33 } } @@ -481664,15 +484926,15 @@ "postfix": false, "binop": null }, - "start": 143287, - "end": 143288, + "start": 143801, + "end": 143802, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 33 }, "end": { - "line": 3527, + "line": 3535, "column": 34 } } @@ -481689,15 +484951,15 @@ "postfix": false, "binop": null }, - "start": 143288, - "end": 143289, + "start": 143802, + "end": 143803, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 34 }, "end": { - "line": 3527, + "line": 3535, "column": 35 } } @@ -481715,15 +484977,15 @@ "binop": null, "updateContext": null }, - "start": 143289, - "end": 143290, + "start": 143803, + "end": 143804, "loc": { "start": { - "line": 3527, + "line": 3535, "column": 35 }, "end": { - "line": 3527, + "line": 3535, "column": 36 } } @@ -481743,15 +485005,15 @@ "updateContext": null }, "value": "this", - "start": 143299, - "end": 143303, + "start": 143813, + "end": 143817, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 8 }, "end": { - "line": 3528, + "line": 3536, "column": 12 } } @@ -481769,15 +485031,15 @@ "binop": null, "updateContext": null }, - "start": 143303, - "end": 143304, + "start": 143817, + "end": 143818, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 12 }, "end": { - "line": 3528, + "line": 3536, "column": 13 } } @@ -481795,15 +485057,15 @@ "binop": null }, "value": "_sceneModelDirty", - "start": 143304, - "end": 143320, + "start": 143818, + "end": 143834, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 13 }, "end": { - "line": 3528, + "line": 3536, "column": 29 } } @@ -481820,15 +485082,15 @@ "postfix": false, "binop": null }, - "start": 143320, - "end": 143321, + "start": 143834, + "end": 143835, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 29 }, "end": { - "line": 3528, + "line": 3536, "column": 30 } } @@ -481845,15 +485107,15 @@ "postfix": false, "binop": null }, - "start": 143321, - "end": 143322, + "start": 143835, + "end": 143836, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 30 }, "end": { - "line": 3528, + "line": 3536, "column": 31 } } @@ -481871,15 +485133,15 @@ "binop": null, "updateContext": null }, - "start": 143322, - "end": 143323, + "start": 143836, + "end": 143837, "loc": { "start": { - "line": 3528, + "line": 3536, "column": 31 }, "end": { - "line": 3528, + "line": 3536, "column": 32 } } @@ -481899,15 +485161,15 @@ "updateContext": null }, "value": "this", - "start": 143333, - "end": 143337, + "start": 143847, + "end": 143851, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 8 }, "end": { - "line": 3530, + "line": 3538, "column": 12 } } @@ -481925,15 +485187,15 @@ "binop": null, "updateContext": null }, - "start": 143337, - "end": 143338, + "start": 143851, + "end": 143852, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 12 }, "end": { - "line": 3530, + "line": 3538, "column": 13 } } @@ -481951,15 +485213,15 @@ "binop": null }, "value": "position", - "start": 143338, - "end": 143346, + "start": 143852, + "end": 143860, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 13 }, "end": { - "line": 3530, + "line": 3538, "column": 21 } } @@ -481978,15 +485240,15 @@ "updateContext": null }, "value": "=", - "start": 143347, - "end": 143348, + "start": 143861, + "end": 143862, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 22 }, "end": { - "line": 3530, + "line": 3538, "column": 23 } } @@ -482006,15 +485268,15 @@ "updateContext": null }, "value": "this", - "start": 143349, - "end": 143353, + "start": 143863, + "end": 143867, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 24 }, "end": { - "line": 3530, + "line": 3538, "column": 28 } } @@ -482032,15 +485294,15 @@ "binop": null, "updateContext": null }, - "start": 143353, - "end": 143354, + "start": 143867, + "end": 143868, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 28 }, "end": { - "line": 3530, + "line": 3538, "column": 29 } } @@ -482058,15 +485320,15 @@ "binop": null }, "value": "_position", - "start": 143354, - "end": 143363, + "start": 143868, + "end": 143877, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 29 }, "end": { - "line": 3530, + "line": 3538, "column": 38 } } @@ -482084,15 +485346,15 @@ "binop": null, "updateContext": null }, - "start": 143363, - "end": 143364, + "start": 143877, + "end": 143878, "loc": { "start": { - "line": 3530, + "line": 3538, "column": 38 }, "end": { - "line": 3530, + "line": 3538, "column": 39 } } @@ -482109,15 +485371,15 @@ "postfix": false, "binop": null }, - "start": 143369, - "end": 143370, + "start": 143883, + "end": 143884, "loc": { "start": { - "line": 3531, + "line": 3539, "column": 4 }, "end": { - "line": 3531, + "line": 3539, "column": 5 } } @@ -482125,15 +485387,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 143376, - "end": 143391, + "start": 143890, + "end": 143905, "loc": { "start": { - "line": 3533, + "line": 3541, "column": 4 }, "end": { - "line": 3533, + "line": 3541, "column": 19 } } @@ -482151,15 +485413,15 @@ "binop": null }, "value": "stateSortCompare", - "start": 143396, - "end": 143412, + "start": 143910, + "end": 143926, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 4 }, "end": { - "line": 3534, + "line": 3542, "column": 20 } } @@ -482176,15 +485438,15 @@ "postfix": false, "binop": null }, - "start": 143412, - "end": 143413, + "start": 143926, + "end": 143927, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 20 }, "end": { - "line": 3534, + "line": 3542, "column": 21 } } @@ -482202,15 +485464,15 @@ "binop": null }, "value": "drawable1", - "start": 143413, - "end": 143422, + "start": 143927, + "end": 143936, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 21 }, "end": { - "line": 3534, + "line": 3542, "column": 30 } } @@ -482228,15 +485490,15 @@ "binop": null, "updateContext": null }, - "start": 143422, - "end": 143423, + "start": 143936, + "end": 143937, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 30 }, "end": { - "line": 3534, + "line": 3542, "column": 31 } } @@ -482254,15 +485516,15 @@ "binop": null }, "value": "drawable2", - "start": 143424, - "end": 143433, + "start": 143938, + "end": 143947, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 32 }, "end": { - "line": 3534, + "line": 3542, "column": 41 } } @@ -482279,15 +485541,15 @@ "postfix": false, "binop": null }, - "start": 143433, - "end": 143434, + "start": 143947, + "end": 143948, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 41 }, "end": { - "line": 3534, + "line": 3542, "column": 42 } } @@ -482304,15 +485566,15 @@ "postfix": false, "binop": null }, - "start": 143435, - "end": 143436, + "start": 143949, + "end": 143950, "loc": { "start": { - "line": 3534, + "line": 3542, "column": 43 }, "end": { - "line": 3534, + "line": 3542, "column": 44 } } @@ -482329,15 +485591,15 @@ "postfix": false, "binop": null }, - "start": 143441, - "end": 143442, + "start": 143955, + "end": 143956, "loc": { "start": { - "line": 3535, + "line": 3543, "column": 4 }, "end": { - "line": 3535, + "line": 3543, "column": 5 } } @@ -482345,15 +485607,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 143448, - "end": 143463, + "start": 143962, + "end": 143977, "loc": { "start": { - "line": 3537, + "line": 3545, "column": 4 }, "end": { - "line": 3537, + "line": 3545, "column": 19 } } @@ -482371,15 +485633,15 @@ "binop": null }, "value": "rebuildRenderFlags", - "start": 143468, - "end": 143486, + "start": 143982, + "end": 144000, "loc": { "start": { - "line": 3538, + "line": 3546, "column": 4 }, "end": { - "line": 3538, + "line": 3546, "column": 22 } } @@ -482396,15 +485658,15 @@ "postfix": false, "binop": null }, - "start": 143486, - "end": 143487, + "start": 144000, + "end": 144001, "loc": { "start": { - "line": 3538, + "line": 3546, "column": 22 }, "end": { - "line": 3538, + "line": 3546, "column": 23 } } @@ -482421,15 +485683,15 @@ "postfix": false, "binop": null }, - "start": 143487, - "end": 143488, + "start": 144001, + "end": 144002, "loc": { "start": { - "line": 3538, + "line": 3546, "column": 23 }, "end": { - "line": 3538, + "line": 3546, "column": 24 } } @@ -482446,15 +485708,15 @@ "postfix": false, "binop": null }, - "start": 143489, - "end": 143490, + "start": 144003, + "end": 144004, "loc": { "start": { - "line": 3538, + "line": 3546, "column": 25 }, "end": { - "line": 3538, + "line": 3546, "column": 26 } } @@ -482474,15 +485736,15 @@ "updateContext": null }, "value": "this", - "start": 143499, - "end": 143503, + "start": 144013, + "end": 144017, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 8 }, "end": { - "line": 3539, + "line": 3547, "column": 12 } } @@ -482500,15 +485762,15 @@ "binop": null, "updateContext": null }, - "start": 143503, - "end": 143504, + "start": 144017, + "end": 144018, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 12 }, "end": { - "line": 3539, + "line": 3547, "column": 13 } } @@ -482526,15 +485788,15 @@ "binop": null }, "value": "renderFlags", - "start": 143504, - "end": 143515, + "start": 144018, + "end": 144029, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 13 }, "end": { - "line": 3539, + "line": 3547, "column": 24 } } @@ -482552,15 +485814,15 @@ "binop": null, "updateContext": null }, - "start": 143515, - "end": 143516, + "start": 144029, + "end": 144030, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 24 }, "end": { - "line": 3539, + "line": 3547, "column": 25 } } @@ -482578,15 +485840,15 @@ "binop": null }, "value": "reset", - "start": 143516, - "end": 143521, + "start": 144030, + "end": 144035, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 25 }, "end": { - "line": 3539, + "line": 3547, "column": 30 } } @@ -482603,15 +485865,15 @@ "postfix": false, "binop": null }, - "start": 143521, - "end": 143522, + "start": 144035, + "end": 144036, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 30 }, "end": { - "line": 3539, + "line": 3547, "column": 31 } } @@ -482628,15 +485890,15 @@ "postfix": false, "binop": null }, - "start": 143522, - "end": 143523, + "start": 144036, + "end": 144037, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 31 }, "end": { - "line": 3539, + "line": 3547, "column": 32 } } @@ -482654,15 +485916,15 @@ "binop": null, "updateContext": null }, - "start": 143523, - "end": 143524, + "start": 144037, + "end": 144038, "loc": { "start": { - "line": 3539, + "line": 3547, "column": 32 }, "end": { - "line": 3539, + "line": 3547, "column": 33 } } @@ -482682,15 +485944,15 @@ "updateContext": null }, "value": "this", - "start": 143533, - "end": 143537, + "start": 144047, + "end": 144051, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 8 }, "end": { - "line": 3540, + "line": 3548, "column": 12 } } @@ -482708,15 +485970,15 @@ "binop": null, "updateContext": null }, - "start": 143537, - "end": 143538, + "start": 144051, + "end": 144052, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 12 }, "end": { - "line": 3540, + "line": 3548, "column": 13 } } @@ -482734,15 +485996,15 @@ "binop": null }, "value": "_updateRenderFlagsVisibleLayers", - "start": 143538, - "end": 143569, + "start": 144052, + "end": 144083, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 13 }, "end": { - "line": 3540, + "line": 3548, "column": 44 } } @@ -482759,15 +486021,15 @@ "postfix": false, "binop": null }, - "start": 143569, - "end": 143570, + "start": 144083, + "end": 144084, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 44 }, "end": { - "line": 3540, + "line": 3548, "column": 45 } } @@ -482784,15 +486046,15 @@ "postfix": false, "binop": null }, - "start": 143570, - "end": 143571, + "start": 144084, + "end": 144085, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 45 }, "end": { - "line": 3540, + "line": 3548, "column": 46 } } @@ -482810,15 +486072,15 @@ "binop": null, "updateContext": null }, - "start": 143571, - "end": 143572, + "start": 144085, + "end": 144086, "loc": { "start": { - "line": 3540, + "line": 3548, "column": 46 }, "end": { - "line": 3540, + "line": 3548, "column": 47 } } @@ -482838,15 +486100,15 @@ "updateContext": null }, "value": "if", - "start": 143581, - "end": 143583, + "start": 144095, + "end": 144097, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 8 }, "end": { - "line": 3541, + "line": 3549, "column": 10 } } @@ -482863,15 +486125,15 @@ "postfix": false, "binop": null }, - "start": 143584, - "end": 143585, + "start": 144098, + "end": 144099, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 11 }, "end": { - "line": 3541, + "line": 3549, "column": 12 } } @@ -482891,15 +486153,15 @@ "updateContext": null }, "value": "this", - "start": 143585, - "end": 143589, + "start": 144099, + "end": 144103, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 12 }, "end": { - "line": 3541, + "line": 3549, "column": 16 } } @@ -482917,15 +486179,15 @@ "binop": null, "updateContext": null }, - "start": 143589, - "end": 143590, + "start": 144103, + "end": 144104, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 16 }, "end": { - "line": 3541, + "line": 3549, "column": 17 } } @@ -482943,15 +486205,15 @@ "binop": null }, "value": "renderFlags", - "start": 143590, - "end": 143601, + "start": 144104, + "end": 144115, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 17 }, "end": { - "line": 3541, + "line": 3549, "column": 28 } } @@ -482969,15 +486231,15 @@ "binop": null, "updateContext": null }, - "start": 143601, - "end": 143602, + "start": 144115, + "end": 144116, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 28 }, "end": { - "line": 3541, + "line": 3549, "column": 29 } } @@ -482995,15 +486257,15 @@ "binop": null }, "value": "numLayers", - "start": 143602, - "end": 143611, + "start": 144116, + "end": 144125, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 29 }, "end": { - "line": 3541, + "line": 3549, "column": 38 } } @@ -483022,15 +486284,15 @@ "updateContext": null }, "value": ">", - "start": 143612, - "end": 143613, + "start": 144126, + "end": 144127, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 39 }, "end": { - "line": 3541, + "line": 3549, "column": 40 } } @@ -483049,15 +486311,15 @@ "updateContext": null }, "value": 0, - "start": 143614, - "end": 143615, + "start": 144128, + "end": 144129, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 41 }, "end": { - "line": 3541, + "line": 3549, "column": 42 } } @@ -483076,15 +486338,15 @@ "updateContext": null }, "value": "&&", - "start": 143616, - "end": 143618, + "start": 144130, + "end": 144132, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 43 }, "end": { - "line": 3541, + "line": 3549, "column": 45 } } @@ -483104,15 +486366,15 @@ "updateContext": null }, "value": "this", - "start": 143619, - "end": 143623, + "start": 144133, + "end": 144137, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 46 }, "end": { - "line": 3541, + "line": 3549, "column": 50 } } @@ -483130,15 +486392,15 @@ "binop": null, "updateContext": null }, - "start": 143623, - "end": 143624, + "start": 144137, + "end": 144138, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 50 }, "end": { - "line": 3541, + "line": 3549, "column": 51 } } @@ -483156,15 +486418,15 @@ "binop": null }, "value": "renderFlags", - "start": 143624, - "end": 143635, + "start": 144138, + "end": 144149, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 51 }, "end": { - "line": 3541, + "line": 3549, "column": 62 } } @@ -483182,15 +486444,15 @@ "binop": null, "updateContext": null }, - "start": 143635, - "end": 143636, + "start": 144149, + "end": 144150, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 62 }, "end": { - "line": 3541, + "line": 3549, "column": 63 } } @@ -483208,15 +486470,15 @@ "binop": null }, "value": "numVisibleLayers", - "start": 143636, - "end": 143652, + "start": 144150, + "end": 144166, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 63 }, "end": { - "line": 3541, + "line": 3549, "column": 79 } } @@ -483235,15 +486497,15 @@ "updateContext": null }, "value": "===", - "start": 143653, - "end": 143656, + "start": 144167, + "end": 144170, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 80 }, "end": { - "line": 3541, + "line": 3549, "column": 83 } } @@ -483262,15 +486524,15 @@ "updateContext": null }, "value": 0, - "start": 143657, - "end": 143658, + "start": 144171, + "end": 144172, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 84 }, "end": { - "line": 3541, + "line": 3549, "column": 85 } } @@ -483287,15 +486549,15 @@ "postfix": false, "binop": null }, - "start": 143658, - "end": 143659, + "start": 144172, + "end": 144173, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 85 }, "end": { - "line": 3541, + "line": 3549, "column": 86 } } @@ -483312,15 +486574,15 @@ "postfix": false, "binop": null }, - "start": 143660, - "end": 143661, + "start": 144174, + "end": 144175, "loc": { "start": { - "line": 3541, + "line": 3549, "column": 87 }, "end": { - "line": 3541, + "line": 3549, "column": 88 } } @@ -483340,15 +486602,15 @@ "updateContext": null }, "value": "this", - "start": 143674, - "end": 143678, + "start": 144188, + "end": 144192, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 12 }, "end": { - "line": 3542, + "line": 3550, "column": 16 } } @@ -483366,15 +486628,15 @@ "binop": null, "updateContext": null }, - "start": 143678, - "end": 143679, + "start": 144192, + "end": 144193, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 16 }, "end": { - "line": 3542, + "line": 3550, "column": 17 } } @@ -483392,15 +486654,15 @@ "binop": null }, "value": "renderFlags", - "start": 143679, - "end": 143690, + "start": 144193, + "end": 144204, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 17 }, "end": { - "line": 3542, + "line": 3550, "column": 28 } } @@ -483418,15 +486680,15 @@ "binop": null, "updateContext": null }, - "start": 143690, - "end": 143691, + "start": 144204, + "end": 144205, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 28 }, "end": { - "line": 3542, + "line": 3550, "column": 29 } } @@ -483444,15 +486706,15 @@ "binop": null }, "value": "culled", - "start": 143691, - "end": 143697, + "start": 144205, + "end": 144211, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 29 }, "end": { - "line": 3542, + "line": 3550, "column": 35 } } @@ -483471,15 +486733,15 @@ "updateContext": null }, "value": "=", - "start": 143698, - "end": 143699, + "start": 144212, + "end": 144213, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 36 }, "end": { - "line": 3542, + "line": 3550, "column": 37 } } @@ -483499,15 +486761,15 @@ "updateContext": null }, "value": "true", - "start": 143700, - "end": 143704, + "start": 144214, + "end": 144218, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 38 }, "end": { - "line": 3542, + "line": 3550, "column": 42 } } @@ -483525,15 +486787,15 @@ "binop": null, "updateContext": null }, - "start": 143704, - "end": 143705, + "start": 144218, + "end": 144219, "loc": { "start": { - "line": 3542, + "line": 3550, "column": 42 }, "end": { - "line": 3542, + "line": 3550, "column": 43 } } @@ -483553,15 +486815,15 @@ "updateContext": null }, "value": "return", - "start": 143718, - "end": 143724, + "start": 144232, + "end": 144238, "loc": { "start": { - "line": 3543, + "line": 3551, "column": 12 }, "end": { - "line": 3543, + "line": 3551, "column": 18 } } @@ -483579,15 +486841,15 @@ "binop": null, "updateContext": null }, - "start": 143724, - "end": 143725, + "start": 144238, + "end": 144239, "loc": { "start": { - "line": 3543, + "line": 3551, "column": 18 }, "end": { - "line": 3543, + "line": 3551, "column": 19 } } @@ -483604,15 +486866,15 @@ "postfix": false, "binop": null }, - "start": 143734, - "end": 143735, + "start": 144248, + "end": 144249, "loc": { "start": { - "line": 3544, + "line": 3552, "column": 8 }, "end": { - "line": 3544, + "line": 3552, "column": 9 } } @@ -483632,15 +486894,15 @@ "updateContext": null }, "value": "this", - "start": 143744, - "end": 143748, + "start": 144258, + "end": 144262, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 8 }, "end": { - "line": 3545, + "line": 3553, "column": 12 } } @@ -483658,15 +486920,15 @@ "binop": null, "updateContext": null }, - "start": 143748, - "end": 143749, + "start": 144262, + "end": 144263, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 12 }, "end": { - "line": 3545, + "line": 3553, "column": 13 } } @@ -483684,15 +486946,15 @@ "binop": null }, "value": "_updateRenderFlags", - "start": 143749, - "end": 143767, + "start": 144263, + "end": 144281, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 13 }, "end": { - "line": 3545, + "line": 3553, "column": 31 } } @@ -483709,15 +486971,15 @@ "postfix": false, "binop": null }, - "start": 143767, - "end": 143768, + "start": 144281, + "end": 144282, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 31 }, "end": { - "line": 3545, + "line": 3553, "column": 32 } } @@ -483734,15 +486996,15 @@ "postfix": false, "binop": null }, - "start": 143768, - "end": 143769, + "start": 144282, + "end": 144283, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 32 }, "end": { - "line": 3545, + "line": 3553, "column": 33 } } @@ -483760,15 +487022,15 @@ "binop": null, "updateContext": null }, - "start": 143769, - "end": 143770, + "start": 144283, + "end": 144284, "loc": { "start": { - "line": 3545, + "line": 3553, "column": 33 }, "end": { - "line": 3545, + "line": 3553, "column": 34 } } @@ -483785,15 +487047,15 @@ "postfix": false, "binop": null }, - "start": 143775, - "end": 143776, + "start": 144289, + "end": 144290, "loc": { "start": { - "line": 3546, + "line": 3554, "column": 4 }, "end": { - "line": 3546, + "line": 3554, "column": 5 } } @@ -483801,15 +487063,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 143782, - "end": 143809, + "start": 144296, + "end": 144323, "loc": { "start": { - "line": 3548, + "line": 3556, "column": 4 }, "end": { - "line": 3550, + "line": 3558, "column": 7 } } @@ -483827,15 +487089,15 @@ "binop": null }, "value": "_updateRenderFlagsVisibleLayers", - "start": 143814, - "end": 143845, + "start": 144328, + "end": 144359, "loc": { "start": { - "line": 3551, + "line": 3559, "column": 4 }, "end": { - "line": 3551, + "line": 3559, "column": 35 } } @@ -483852,15 +487114,15 @@ "postfix": false, "binop": null }, - "start": 143845, - "end": 143846, + "start": 144359, + "end": 144360, "loc": { "start": { - "line": 3551, + "line": 3559, "column": 35 }, "end": { - "line": 3551, + "line": 3559, "column": 36 } } @@ -483877,15 +487139,15 @@ "postfix": false, "binop": null }, - "start": 143846, - "end": 143847, + "start": 144360, + "end": 144361, "loc": { "start": { - "line": 3551, + "line": 3559, "column": 36 }, "end": { - "line": 3551, + "line": 3559, "column": 37 } } @@ -483902,15 +487164,15 @@ "postfix": false, "binop": null }, - "start": 143848, - "end": 143849, + "start": 144362, + "end": 144363, "loc": { "start": { - "line": 3551, + "line": 3559, "column": 38 }, "end": { - "line": 3551, + "line": 3559, "column": 39 } } @@ -483930,15 +487192,15 @@ "updateContext": null }, "value": "const", - "start": 143858, - "end": 143863, + "start": 144372, + "end": 144377, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 8 }, "end": { - "line": 3552, + "line": 3560, "column": 13 } } @@ -483956,15 +487218,15 @@ "binop": null }, "value": "renderFlags", - "start": 143864, - "end": 143875, + "start": 144378, + "end": 144389, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 14 }, "end": { - "line": 3552, + "line": 3560, "column": 25 } } @@ -483983,15 +487245,15 @@ "updateContext": null }, "value": "=", - "start": 143876, - "end": 143877, + "start": 144390, + "end": 144391, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 26 }, "end": { - "line": 3552, + "line": 3560, "column": 27 } } @@ -484011,15 +487273,15 @@ "updateContext": null }, "value": "this", - "start": 143878, - "end": 143882, + "start": 144392, + "end": 144396, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 28 }, "end": { - "line": 3552, + "line": 3560, "column": 32 } } @@ -484037,15 +487299,15 @@ "binop": null, "updateContext": null }, - "start": 143882, - "end": 143883, + "start": 144396, + "end": 144397, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 32 }, "end": { - "line": 3552, + "line": 3560, "column": 33 } } @@ -484063,15 +487325,15 @@ "binop": null }, "value": "renderFlags", - "start": 143883, - "end": 143894, + "start": 144397, + "end": 144408, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 33 }, "end": { - "line": 3552, + "line": 3560, "column": 44 } } @@ -484089,15 +487351,15 @@ "binop": null, "updateContext": null }, - "start": 143894, - "end": 143895, + "start": 144408, + "end": 144409, "loc": { "start": { - "line": 3552, + "line": 3560, "column": 44 }, "end": { - "line": 3552, + "line": 3560, "column": 45 } } @@ -484115,15 +487377,15 @@ "binop": null }, "value": "renderFlags", - "start": 143904, - "end": 143915, + "start": 144418, + "end": 144429, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 8 }, "end": { - "line": 3553, + "line": 3561, "column": 19 } } @@ -484141,15 +487403,15 @@ "binop": null, "updateContext": null }, - "start": 143915, - "end": 143916, + "start": 144429, + "end": 144430, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 19 }, "end": { - "line": 3553, + "line": 3561, "column": 20 } } @@ -484167,15 +487429,15 @@ "binop": null }, "value": "numLayers", - "start": 143916, - "end": 143925, + "start": 144430, + "end": 144439, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 20 }, "end": { - "line": 3553, + "line": 3561, "column": 29 } } @@ -484194,15 +487456,15 @@ "updateContext": null }, "value": "=", - "start": 143926, - "end": 143927, + "start": 144440, + "end": 144441, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 30 }, "end": { - "line": 3553, + "line": 3561, "column": 31 } } @@ -484222,15 +487484,15 @@ "updateContext": null }, "value": "this", - "start": 143928, - "end": 143932, + "start": 144442, + "end": 144446, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 32 }, "end": { - "line": 3553, + "line": 3561, "column": 36 } } @@ -484248,15 +487510,15 @@ "binop": null, "updateContext": null }, - "start": 143932, - "end": 143933, + "start": 144446, + "end": 144447, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 36 }, "end": { - "line": 3553, + "line": 3561, "column": 37 } } @@ -484274,15 +487536,15 @@ "binop": null }, "value": "layerList", - "start": 143933, - "end": 143942, + "start": 144447, + "end": 144456, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 37 }, "end": { - "line": 3553, + "line": 3561, "column": 46 } } @@ -484300,15 +487562,15 @@ "binop": null, "updateContext": null }, - "start": 143942, - "end": 143943, + "start": 144456, + "end": 144457, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 46 }, "end": { - "line": 3553, + "line": 3561, "column": 47 } } @@ -484326,15 +487588,15 @@ "binop": null }, "value": "length", - "start": 143943, - "end": 143949, + "start": 144457, + "end": 144463, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 47 }, "end": { - "line": 3553, + "line": 3561, "column": 53 } } @@ -484352,15 +487614,15 @@ "binop": null, "updateContext": null }, - "start": 143949, - "end": 143950, + "start": 144463, + "end": 144464, "loc": { "start": { - "line": 3553, + "line": 3561, "column": 53 }, "end": { - "line": 3553, + "line": 3561, "column": 54 } } @@ -484378,15 +487640,15 @@ "binop": null }, "value": "renderFlags", - "start": 143959, - "end": 143970, + "start": 144473, + "end": 144484, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 8 }, "end": { - "line": 3554, + "line": 3562, "column": 19 } } @@ -484404,15 +487666,15 @@ "binop": null, "updateContext": null }, - "start": 143970, - "end": 143971, + "start": 144484, + "end": 144485, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 19 }, "end": { - "line": 3554, + "line": 3562, "column": 20 } } @@ -484430,15 +487692,15 @@ "binop": null }, "value": "numVisibleLayers", - "start": 143971, - "end": 143987, + "start": 144485, + "end": 144501, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 20 }, "end": { - "line": 3554, + "line": 3562, "column": 36 } } @@ -484457,15 +487719,15 @@ "updateContext": null }, "value": "=", - "start": 143988, - "end": 143989, + "start": 144502, + "end": 144503, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 37 }, "end": { - "line": 3554, + "line": 3562, "column": 38 } } @@ -484484,15 +487746,15 @@ "updateContext": null }, "value": 0, - "start": 143990, - "end": 143991, + "start": 144504, + "end": 144505, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 39 }, "end": { - "line": 3554, + "line": 3562, "column": 40 } } @@ -484510,15 +487772,15 @@ "binop": null, "updateContext": null }, - "start": 143991, - "end": 143992, + "start": 144505, + "end": 144506, "loc": { "start": { - "line": 3554, + "line": 3562, "column": 40 }, "end": { - "line": 3554, + "line": 3562, "column": 41 } } @@ -484538,15 +487800,15 @@ "updateContext": null }, "value": "for", - "start": 144001, - "end": 144004, + "start": 144515, + "end": 144518, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 8 }, "end": { - "line": 3555, + "line": 3563, "column": 11 } } @@ -484563,15 +487825,15 @@ "postfix": false, "binop": null }, - "start": 144005, - "end": 144006, + "start": 144519, + "end": 144520, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 12 }, "end": { - "line": 3555, + "line": 3563, "column": 13 } } @@ -484591,15 +487853,15 @@ "updateContext": null }, "value": "let", - "start": 144006, - "end": 144009, + "start": 144520, + "end": 144523, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 13 }, "end": { - "line": 3555, + "line": 3563, "column": 16 } } @@ -484617,15 +487879,15 @@ "binop": null }, "value": "layerIndex", - "start": 144010, - "end": 144020, + "start": 144524, + "end": 144534, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 17 }, "end": { - "line": 3555, + "line": 3563, "column": 27 } } @@ -484644,15 +487906,15 @@ "updateContext": null }, "value": "=", - "start": 144021, - "end": 144022, + "start": 144535, + "end": 144536, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 28 }, "end": { - "line": 3555, + "line": 3563, "column": 29 } } @@ -484671,15 +487933,15 @@ "updateContext": null }, "value": 0, - "start": 144023, - "end": 144024, + "start": 144537, + "end": 144538, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 30 }, "end": { - "line": 3555, + "line": 3563, "column": 31 } } @@ -484697,15 +487959,15 @@ "binop": null, "updateContext": null }, - "start": 144024, - "end": 144025, + "start": 144538, + "end": 144539, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 31 }, "end": { - "line": 3555, + "line": 3563, "column": 32 } } @@ -484723,15 +487985,15 @@ "binop": null }, "value": "len", - "start": 144026, - "end": 144029, + "start": 144540, + "end": 144543, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 33 }, "end": { - "line": 3555, + "line": 3563, "column": 36 } } @@ -484750,15 +488012,15 @@ "updateContext": null }, "value": "=", - "start": 144030, - "end": 144031, + "start": 144544, + "end": 144545, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 37 }, "end": { - "line": 3555, + "line": 3563, "column": 38 } } @@ -484778,15 +488040,15 @@ "updateContext": null }, "value": "this", - "start": 144032, - "end": 144036, + "start": 144546, + "end": 144550, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 39 }, "end": { - "line": 3555, + "line": 3563, "column": 43 } } @@ -484804,15 +488066,15 @@ "binop": null, "updateContext": null }, - "start": 144036, - "end": 144037, + "start": 144550, + "end": 144551, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 43 }, "end": { - "line": 3555, + "line": 3563, "column": 44 } } @@ -484830,15 +488092,15 @@ "binop": null }, "value": "layerList", - "start": 144037, - "end": 144046, + "start": 144551, + "end": 144560, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 44 }, "end": { - "line": 3555, + "line": 3563, "column": 53 } } @@ -484856,15 +488118,15 @@ "binop": null, "updateContext": null }, - "start": 144046, - "end": 144047, + "start": 144560, + "end": 144561, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 53 }, "end": { - "line": 3555, + "line": 3563, "column": 54 } } @@ -484882,15 +488144,15 @@ "binop": null }, "value": "length", - "start": 144047, - "end": 144053, + "start": 144561, + "end": 144567, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 54 }, "end": { - "line": 3555, + "line": 3563, "column": 60 } } @@ -484908,15 +488170,15 @@ "binop": null, "updateContext": null }, - "start": 144053, - "end": 144054, + "start": 144567, + "end": 144568, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 60 }, "end": { - "line": 3555, + "line": 3563, "column": 61 } } @@ -484934,15 +488196,15 @@ "binop": null }, "value": "layerIndex", - "start": 144055, - "end": 144065, + "start": 144569, + "end": 144579, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 62 }, "end": { - "line": 3555, + "line": 3563, "column": 72 } } @@ -484961,15 +488223,15 @@ "updateContext": null }, "value": "<", - "start": 144066, - "end": 144067, + "start": 144580, + "end": 144581, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 73 }, "end": { - "line": 3555, + "line": 3563, "column": 74 } } @@ -484987,15 +488249,15 @@ "binop": null }, "value": "len", - "start": 144068, - "end": 144071, + "start": 144582, + "end": 144585, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 75 }, "end": { - "line": 3555, + "line": 3563, "column": 78 } } @@ -485013,15 +488275,15 @@ "binop": null, "updateContext": null }, - "start": 144071, - "end": 144072, + "start": 144585, + "end": 144586, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 78 }, "end": { - "line": 3555, + "line": 3563, "column": 79 } } @@ -485039,15 +488301,15 @@ "binop": null }, "value": "layerIndex", - "start": 144073, - "end": 144083, + "start": 144587, + "end": 144597, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 80 }, "end": { - "line": 3555, + "line": 3563, "column": 90 } } @@ -485065,15 +488327,15 @@ "binop": null }, "value": "++", - "start": 144083, - "end": 144085, + "start": 144597, + "end": 144599, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 90 }, "end": { - "line": 3555, + "line": 3563, "column": 92 } } @@ -485090,15 +488352,15 @@ "postfix": false, "binop": null }, - "start": 144085, - "end": 144086, + "start": 144599, + "end": 144600, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 92 }, "end": { - "line": 3555, + "line": 3563, "column": 93 } } @@ -485115,15 +488377,15 @@ "postfix": false, "binop": null }, - "start": 144087, - "end": 144088, + "start": 144601, + "end": 144602, "loc": { "start": { - "line": 3555, + "line": 3563, "column": 94 }, "end": { - "line": 3555, + "line": 3563, "column": 95 } } @@ -485143,15 +488405,15 @@ "updateContext": null }, "value": "const", - "start": 144101, - "end": 144106, + "start": 144615, + "end": 144620, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 12 }, "end": { - "line": 3556, + "line": 3564, "column": 17 } } @@ -485169,15 +488431,15 @@ "binop": null }, "value": "layer", - "start": 144107, - "end": 144112, + "start": 144621, + "end": 144626, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 18 }, "end": { - "line": 3556, + "line": 3564, "column": 23 } } @@ -485196,15 +488458,15 @@ "updateContext": null }, "value": "=", - "start": 144113, - "end": 144114, + "start": 144627, + "end": 144628, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 24 }, "end": { - "line": 3556, + "line": 3564, "column": 25 } } @@ -485224,15 +488486,15 @@ "updateContext": null }, "value": "this", - "start": 144115, - "end": 144119, + "start": 144629, + "end": 144633, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 26 }, "end": { - "line": 3556, + "line": 3564, "column": 30 } } @@ -485250,15 +488512,15 @@ "binop": null, "updateContext": null }, - "start": 144119, - "end": 144120, + "start": 144633, + "end": 144634, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 30 }, "end": { - "line": 3556, + "line": 3564, "column": 31 } } @@ -485276,15 +488538,15 @@ "binop": null }, "value": "layerList", - "start": 144120, - "end": 144129, + "start": 144634, + "end": 144643, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 31 }, "end": { - "line": 3556, + "line": 3564, "column": 40 } } @@ -485302,15 +488564,15 @@ "binop": null, "updateContext": null }, - "start": 144129, - "end": 144130, + "start": 144643, + "end": 144644, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 40 }, "end": { - "line": 3556, + "line": 3564, "column": 41 } } @@ -485328,15 +488590,15 @@ "binop": null }, "value": "layerIndex", - "start": 144130, - "end": 144140, + "start": 144644, + "end": 144654, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 41 }, "end": { - "line": 3556, + "line": 3564, "column": 51 } } @@ -485354,15 +488616,15 @@ "binop": null, "updateContext": null }, - "start": 144140, - "end": 144141, + "start": 144654, + "end": 144655, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 51 }, "end": { - "line": 3556, + "line": 3564, "column": 52 } } @@ -485380,15 +488642,15 @@ "binop": null, "updateContext": null }, - "start": 144141, - "end": 144142, + "start": 144655, + "end": 144656, "loc": { "start": { - "line": 3556, + "line": 3564, "column": 52 }, "end": { - "line": 3556, + "line": 3564, "column": 53 } } @@ -485408,15 +488670,15 @@ "updateContext": null }, "value": "const", - "start": 144155, - "end": 144160, + "start": 144669, + "end": 144674, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 12 }, "end": { - "line": 3557, + "line": 3565, "column": 17 } } @@ -485434,15 +488696,15 @@ "binop": null }, "value": "layerVisible", - "start": 144161, - "end": 144173, + "start": 144675, + "end": 144687, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 18 }, "end": { - "line": 3557, + "line": 3565, "column": 30 } } @@ -485461,15 +488723,15 @@ "updateContext": null }, "value": "=", - "start": 144174, - "end": 144175, + "start": 144688, + "end": 144689, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 31 }, "end": { - "line": 3557, + "line": 3565, "column": 32 } } @@ -485489,15 +488751,15 @@ "updateContext": null }, "value": "this", - "start": 144176, - "end": 144180, + "start": 144690, + "end": 144694, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 33 }, "end": { - "line": 3557, + "line": 3565, "column": 37 } } @@ -485515,15 +488777,15 @@ "binop": null, "updateContext": null }, - "start": 144180, - "end": 144181, + "start": 144694, + "end": 144695, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 37 }, "end": { - "line": 3557, + "line": 3565, "column": 38 } } @@ -485541,15 +488803,15 @@ "binop": null }, "value": "_getActiveSectionPlanesForLayer", - "start": 144181, - "end": 144212, + "start": 144695, + "end": 144726, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 38 }, "end": { - "line": 3557, + "line": 3565, "column": 69 } } @@ -485566,15 +488828,15 @@ "postfix": false, "binop": null }, - "start": 144212, - "end": 144213, + "start": 144726, + "end": 144727, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 69 }, "end": { - "line": 3557, + "line": 3565, "column": 70 } } @@ -485592,15 +488854,15 @@ "binop": null }, "value": "layer", - "start": 144213, - "end": 144218, + "start": 144727, + "end": 144732, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 70 }, "end": { - "line": 3557, + "line": 3565, "column": 75 } } @@ -485617,15 +488879,15 @@ "postfix": false, "binop": null }, - "start": 144218, - "end": 144219, + "start": 144732, + "end": 144733, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 75 }, "end": { - "line": 3557, + "line": 3565, "column": 76 } } @@ -485643,15 +488905,15 @@ "binop": null, "updateContext": null }, - "start": 144219, - "end": 144220, + "start": 144733, + "end": 144734, "loc": { "start": { - "line": 3557, + "line": 3565, "column": 76 }, "end": { - "line": 3557, + "line": 3565, "column": 77 } } @@ -485671,15 +488933,15 @@ "updateContext": null }, "value": "if", - "start": 144233, - "end": 144235, + "start": 144747, + "end": 144749, "loc": { "start": { - "line": 3558, + "line": 3566, "column": 12 }, "end": { - "line": 3558, + "line": 3566, "column": 14 } } @@ -485696,15 +488958,15 @@ "postfix": false, "binop": null }, - "start": 144236, - "end": 144237, + "start": 144750, + "end": 144751, "loc": { "start": { - "line": 3558, + "line": 3566, "column": 15 }, "end": { - "line": 3558, + "line": 3566, "column": 16 } } @@ -485722,15 +488984,15 @@ "binop": null }, "value": "layerVisible", - "start": 144237, - "end": 144249, + "start": 144751, + "end": 144763, "loc": { "start": { - "line": 3558, + "line": 3566, "column": 16 }, "end": { - "line": 3558, + "line": 3566, "column": 28 } } @@ -485747,15 +489009,15 @@ "postfix": false, "binop": null }, - "start": 144249, - "end": 144250, + "start": 144763, + "end": 144764, "loc": { "start": { - "line": 3558, + "line": 3566, "column": 28 }, "end": { - "line": 3558, + "line": 3566, "column": 29 } } @@ -485772,15 +489034,15 @@ "postfix": false, "binop": null }, - "start": 144251, - "end": 144252, + "start": 144765, + "end": 144766, "loc": { "start": { - "line": 3558, + "line": 3566, "column": 30 }, "end": { - "line": 3558, + "line": 3566, "column": 31 } } @@ -485798,15 +489060,15 @@ "binop": null }, "value": "renderFlags", - "start": 144269, - "end": 144280, + "start": 144783, + "end": 144794, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 16 }, "end": { - "line": 3559, + "line": 3567, "column": 27 } } @@ -485824,15 +489086,15 @@ "binop": null, "updateContext": null }, - "start": 144280, - "end": 144281, + "start": 144794, + "end": 144795, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 27 }, "end": { - "line": 3559, + "line": 3567, "column": 28 } } @@ -485850,15 +489112,15 @@ "binop": null }, "value": "visibleLayers", - "start": 144281, - "end": 144294, + "start": 144795, + "end": 144808, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 28 }, "end": { - "line": 3559, + "line": 3567, "column": 41 } } @@ -485876,15 +489138,15 @@ "binop": null, "updateContext": null }, - "start": 144294, - "end": 144295, + "start": 144808, + "end": 144809, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 41 }, "end": { - "line": 3559, + "line": 3567, "column": 42 } } @@ -485902,15 +489164,15 @@ "binop": null }, "value": "renderFlags", - "start": 144295, - "end": 144306, + "start": 144809, + "end": 144820, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 42 }, "end": { - "line": 3559, + "line": 3567, "column": 53 } } @@ -485928,15 +489190,15 @@ "binop": null, "updateContext": null }, - "start": 144306, - "end": 144307, + "start": 144820, + "end": 144821, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 53 }, "end": { - "line": 3559, + "line": 3567, "column": 54 } } @@ -485954,15 +489216,15 @@ "binop": null }, "value": "numVisibleLayers", - "start": 144307, - "end": 144323, + "start": 144821, + "end": 144837, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 54 }, "end": { - "line": 3559, + "line": 3567, "column": 70 } } @@ -485980,15 +489242,15 @@ "binop": null }, "value": "++", - "start": 144323, - "end": 144325, + "start": 144837, + "end": 144839, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 70 }, "end": { - "line": 3559, + "line": 3567, "column": 72 } } @@ -486006,15 +489268,15 @@ "binop": null, "updateContext": null }, - "start": 144325, - "end": 144326, + "start": 144839, + "end": 144840, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 72 }, "end": { - "line": 3559, + "line": 3567, "column": 73 } } @@ -486033,15 +489295,15 @@ "updateContext": null }, "value": "=", - "start": 144327, - "end": 144328, + "start": 144841, + "end": 144842, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 74 }, "end": { - "line": 3559, + "line": 3567, "column": 75 } } @@ -486059,15 +489321,15 @@ "binop": null }, "value": "layerIndex", - "start": 144329, - "end": 144339, + "start": 144843, + "end": 144853, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 76 }, "end": { - "line": 3559, + "line": 3567, "column": 86 } } @@ -486085,15 +489347,15 @@ "binop": null, "updateContext": null }, - "start": 144339, - "end": 144340, + "start": 144853, + "end": 144854, "loc": { "start": { - "line": 3559, + "line": 3567, "column": 86 }, "end": { - "line": 3559, + "line": 3567, "column": 87 } } @@ -486110,15 +489372,15 @@ "postfix": false, "binop": null }, - "start": 144353, - "end": 144354, + "start": 144867, + "end": 144868, "loc": { "start": { - "line": 3560, + "line": 3568, "column": 12 }, "end": { - "line": 3560, + "line": 3568, "column": 13 } } @@ -486135,15 +489397,15 @@ "postfix": false, "binop": null }, - "start": 144363, - "end": 144364, + "start": 144877, + "end": 144878, "loc": { "start": { - "line": 3561, + "line": 3569, "column": 8 }, "end": { - "line": 3561, + "line": 3569, "column": 9 } } @@ -486160,15 +489422,15 @@ "postfix": false, "binop": null }, - "start": 144369, - "end": 144370, + "start": 144883, + "end": 144884, "loc": { "start": { - "line": 3562, + "line": 3570, "column": 4 }, "end": { - "line": 3562, + "line": 3570, "column": 5 } } @@ -486176,15 +489438,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 144376, - "end": 144391, + "start": 144890, + "end": 144905, "loc": { "start": { - "line": 3564, + "line": 3572, "column": 4 }, "end": { - "line": 3564, + "line": 3572, "column": 19 } } @@ -486202,15 +489464,15 @@ "binop": null }, "value": "_createDummyEntityForUnusedMeshes", - "start": 144396, - "end": 144429, + "start": 144910, + "end": 144943, "loc": { "start": { - "line": 3565, + "line": 3573, "column": 4 }, "end": { - "line": 3565, + "line": 3573, "column": 37 } } @@ -486227,15 +489489,15 @@ "postfix": false, "binop": null }, - "start": 144429, - "end": 144430, + "start": 144943, + "end": 144944, "loc": { "start": { - "line": 3565, + "line": 3573, "column": 37 }, "end": { - "line": 3565, + "line": 3573, "column": 38 } } @@ -486252,15 +489514,15 @@ "postfix": false, "binop": null }, - "start": 144430, - "end": 144431, + "start": 144944, + "end": 144945, "loc": { "start": { - "line": 3565, + "line": 3573, "column": 38 }, "end": { - "line": 3565, + "line": 3573, "column": 39 } } @@ -486277,15 +489539,15 @@ "postfix": false, "binop": null }, - "start": 144432, - "end": 144433, + "start": 144946, + "end": 144947, "loc": { "start": { - "line": 3565, + "line": 3573, "column": 40 }, "end": { - "line": 3565, + "line": 3573, "column": 41 } } @@ -486305,15 +489567,15 @@ "updateContext": null }, "value": "const", - "start": 144442, - "end": 144447, + "start": 144956, + "end": 144961, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 8 }, "end": { - "line": 3566, + "line": 3574, "column": 13 } } @@ -486331,15 +489593,15 @@ "binop": null }, "value": "unusedMeshIds", - "start": 144448, - "end": 144461, + "start": 144962, + "end": 144975, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 14 }, "end": { - "line": 3566, + "line": 3574, "column": 27 } } @@ -486358,15 +489620,15 @@ "updateContext": null }, "value": "=", - "start": 144462, - "end": 144463, + "start": 144976, + "end": 144977, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 28 }, "end": { - "line": 3566, + "line": 3574, "column": 29 } } @@ -486384,15 +489646,15 @@ "binop": null }, "value": "Object", - "start": 144464, - "end": 144470, + "start": 144978, + "end": 144984, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 30 }, "end": { - "line": 3566, + "line": 3574, "column": 36 } } @@ -486410,15 +489672,15 @@ "binop": null, "updateContext": null }, - "start": 144470, - "end": 144471, + "start": 144984, + "end": 144985, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 36 }, "end": { - "line": 3566, + "line": 3574, "column": 37 } } @@ -486436,15 +489698,15 @@ "binop": null }, "value": "keys", - "start": 144471, - "end": 144475, + "start": 144985, + "end": 144989, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 37 }, "end": { - "line": 3566, + "line": 3574, "column": 41 } } @@ -486461,15 +489723,15 @@ "postfix": false, "binop": null }, - "start": 144475, - "end": 144476, + "start": 144989, + "end": 144990, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 41 }, "end": { - "line": 3566, + "line": 3574, "column": 42 } } @@ -486489,15 +489751,15 @@ "updateContext": null }, "value": "this", - "start": 144476, - "end": 144480, + "start": 144990, + "end": 144994, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 42 }, "end": { - "line": 3566, + "line": 3574, "column": 46 } } @@ -486515,15 +489777,15 @@ "binop": null, "updateContext": null }, - "start": 144480, - "end": 144481, + "start": 144994, + "end": 144995, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 46 }, "end": { - "line": 3566, + "line": 3574, "column": 47 } } @@ -486541,15 +489803,15 @@ "binop": null }, "value": "_unusedMeshes", - "start": 144481, - "end": 144494, + "start": 144995, + "end": 145008, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 47 }, "end": { - "line": 3566, + "line": 3574, "column": 60 } } @@ -486566,15 +489828,15 @@ "postfix": false, "binop": null }, - "start": 144494, - "end": 144495, + "start": 145008, + "end": 145009, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 60 }, "end": { - "line": 3566, + "line": 3574, "column": 61 } } @@ -486592,15 +489854,15 @@ "binop": null, "updateContext": null }, - "start": 144495, - "end": 144496, + "start": 145009, + "end": 145010, "loc": { "start": { - "line": 3566, + "line": 3574, "column": 61 }, "end": { - "line": 3566, + "line": 3574, "column": 62 } } @@ -486620,15 +489882,15 @@ "updateContext": null }, "value": "if", - "start": 144505, - "end": 144507, + "start": 145019, + "end": 145021, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 8 }, "end": { - "line": 3567, + "line": 3575, "column": 10 } } @@ -486645,15 +489907,15 @@ "postfix": false, "binop": null }, - "start": 144508, - "end": 144509, + "start": 145022, + "end": 145023, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 11 }, "end": { - "line": 3567, + "line": 3575, "column": 12 } } @@ -486671,15 +489933,15 @@ "binop": null }, "value": "unusedMeshIds", - "start": 144509, - "end": 144522, + "start": 145023, + "end": 145036, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 12 }, "end": { - "line": 3567, + "line": 3575, "column": 25 } } @@ -486697,15 +489959,15 @@ "binop": null, "updateContext": null }, - "start": 144522, - "end": 144523, + "start": 145036, + "end": 145037, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 25 }, "end": { - "line": 3567, + "line": 3575, "column": 26 } } @@ -486723,15 +489985,15 @@ "binop": null }, "value": "length", - "start": 144523, - "end": 144529, + "start": 145037, + "end": 145043, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 26 }, "end": { - "line": 3567, + "line": 3575, "column": 32 } } @@ -486750,15 +490012,15 @@ "updateContext": null }, "value": ">", - "start": 144530, - "end": 144531, + "start": 145044, + "end": 145045, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 33 }, "end": { - "line": 3567, + "line": 3575, "column": 34 } } @@ -486777,15 +490039,15 @@ "updateContext": null }, "value": 0, - "start": 144532, - "end": 144533, + "start": 145046, + "end": 145047, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 35 }, "end": { - "line": 3567, + "line": 3575, "column": 36 } } @@ -486802,15 +490064,15 @@ "postfix": false, "binop": null }, - "start": 144533, - "end": 144534, + "start": 145047, + "end": 145048, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 36 }, "end": { - "line": 3567, + "line": 3575, "column": 37 } } @@ -486827,15 +490089,15 @@ "postfix": false, "binop": null }, - "start": 144535, - "end": 144536, + "start": 145049, + "end": 145050, "loc": { "start": { - "line": 3567, + "line": 3575, "column": 38 }, "end": { - "line": 3567, + "line": 3575, "column": 39 } } @@ -486855,15 +490117,15 @@ "updateContext": null }, "value": "const", - "start": 144549, - "end": 144554, + "start": 145063, + "end": 145068, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 12 }, "end": { - "line": 3568, + "line": 3576, "column": 17 } } @@ -486881,15 +490143,15 @@ "binop": null }, "value": "entityId", - "start": 144555, - "end": 144563, + "start": 145069, + "end": 145077, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 18 }, "end": { - "line": 3568, + "line": 3576, "column": 26 } } @@ -486908,15 +490170,15 @@ "updateContext": null }, "value": "=", - "start": 144564, - "end": 144565, + "start": 145078, + "end": 145079, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 27 }, "end": { - "line": 3568, + "line": 3576, "column": 28 } } @@ -486933,15 +490195,15 @@ "postfix": false, "binop": null }, - "start": 144566, - "end": 144567, + "start": 145080, + "end": 145081, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 29 }, "end": { - "line": 3568, + "line": 3576, "column": 30 } } @@ -486960,15 +490222,15 @@ "updateContext": null }, "value": "", - "start": 144567, - "end": 144567, + "start": 145081, + "end": 145081, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 30 }, "end": { - "line": 3568, + "line": 3576, "column": 30 } } @@ -486985,15 +490247,15 @@ "postfix": false, "binop": null }, - "start": 144567, - "end": 144569, + "start": 145081, + "end": 145083, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 30 }, "end": { - "line": 3568, + "line": 3576, "column": 32 } } @@ -487013,15 +490275,15 @@ "updateContext": null }, "value": "this", - "start": 144569, - "end": 144573, + "start": 145083, + "end": 145087, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 32 }, "end": { - "line": 3568, + "line": 3576, "column": 36 } } @@ -487039,15 +490301,15 @@ "binop": null, "updateContext": null }, - "start": 144573, - "end": 144574, + "start": 145087, + "end": 145088, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 36 }, "end": { - "line": 3568, + "line": 3576, "column": 37 } } @@ -487065,15 +490327,15 @@ "binop": null }, "value": "id", - "start": 144574, - "end": 144576, + "start": 145088, + "end": 145090, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 37 }, "end": { - "line": 3568, + "line": 3576, "column": 39 } } @@ -487090,15 +490352,15 @@ "postfix": false, "binop": null }, - "start": 144576, - "end": 144577, + "start": 145090, + "end": 145091, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 39 }, "end": { - "line": 3568, + "line": 3576, "column": 40 } } @@ -487117,15 +490379,15 @@ "updateContext": null }, "value": "-dummyEntityForUnusedMeshes", - "start": 144577, - "end": 144604, + "start": 145091, + "end": 145118, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 40 }, "end": { - "line": 3568, + "line": 3576, "column": 67 } } @@ -487142,15 +490404,15 @@ "postfix": false, "binop": null }, - "start": 144604, - "end": 144605, + "start": 145118, + "end": 145119, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 67 }, "end": { - "line": 3568, + "line": 3576, "column": 68 } } @@ -487168,15 +490430,15 @@ "binop": null, "updateContext": null }, - "start": 144605, - "end": 144606, + "start": 145119, + "end": 145120, "loc": { "start": { - "line": 3568, + "line": 3576, "column": 68 }, "end": { - "line": 3568, + "line": 3576, "column": 69 } } @@ -487196,15 +490458,15 @@ "updateContext": null }, "value": "this", - "start": 144619, - "end": 144623, + "start": 145133, + "end": 145137, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 12 }, "end": { - "line": 3569, + "line": 3577, "column": 16 } } @@ -487222,15 +490484,15 @@ "binop": null, "updateContext": null }, - "start": 144623, - "end": 144624, + "start": 145137, + "end": 145138, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 16 }, "end": { - "line": 3569, + "line": 3577, "column": 17 } } @@ -487248,15 +490510,15 @@ "binop": null }, "value": "warn", - "start": 144624, - "end": 144628, + "start": 145138, + "end": 145142, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 17 }, "end": { - "line": 3569, + "line": 3577, "column": 21 } } @@ -487273,15 +490535,15 @@ "postfix": false, "binop": null }, - "start": 144628, - "end": 144629, + "start": 145142, + "end": 145143, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 21 }, "end": { - "line": 3569, + "line": 3577, "column": 22 } } @@ -487298,15 +490560,15 @@ "postfix": false, "binop": null }, - "start": 144629, - "end": 144630, + "start": 145143, + "end": 145144, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 22 }, "end": { - "line": 3569, + "line": 3577, "column": 23 } } @@ -487325,15 +490587,15 @@ "updateContext": null }, "value": "Creating dummy SceneModelEntity \"", - "start": 144630, - "end": 144663, + "start": 145144, + "end": 145177, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 23 }, "end": { - "line": 3569, + "line": 3577, "column": 56 } } @@ -487350,15 +490612,15 @@ "postfix": false, "binop": null }, - "start": 144663, - "end": 144665, + "start": 145177, + "end": 145179, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 56 }, "end": { - "line": 3569, + "line": 3577, "column": 58 } } @@ -487376,15 +490638,15 @@ "binop": null }, "value": "entityId", - "start": 144665, - "end": 144673, + "start": 145179, + "end": 145187, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 58 }, "end": { - "line": 3569, + "line": 3577, "column": 66 } } @@ -487401,15 +490663,15 @@ "postfix": false, "binop": null }, - "start": 144673, - "end": 144674, + "start": 145187, + "end": 145188, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 66 }, "end": { - "line": 3569, + "line": 3577, "column": 67 } } @@ -487428,15 +490690,15 @@ "updateContext": null }, "value": "\" for unused SceneMeshes: [", - "start": 144674, - "end": 144701, + "start": 145188, + "end": 145215, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 67 }, "end": { - "line": 3569, + "line": 3577, "column": 94 } } @@ -487453,15 +490715,15 @@ "postfix": false, "binop": null }, - "start": 144701, - "end": 144703, + "start": 145215, + "end": 145217, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 94 }, "end": { - "line": 3569, + "line": 3577, "column": 96 } } @@ -487479,15 +490741,15 @@ "binop": null }, "value": "unusedMeshIds", - "start": 144703, - "end": 144716, + "start": 145217, + "end": 145230, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 96 }, "end": { - "line": 3569, + "line": 3577, "column": 109 } } @@ -487505,15 +490767,15 @@ "binop": null, "updateContext": null }, - "start": 144716, - "end": 144717, + "start": 145230, + "end": 145231, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 109 }, "end": { - "line": 3569, + "line": 3577, "column": 110 } } @@ -487531,15 +490793,15 @@ "binop": null }, "value": "join", - "start": 144717, - "end": 144721, + "start": 145231, + "end": 145235, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 110 }, "end": { - "line": 3569, + "line": 3577, "column": 114 } } @@ -487556,15 +490818,15 @@ "postfix": false, "binop": null }, - "start": 144721, - "end": 144722, + "start": 145235, + "end": 145236, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 114 }, "end": { - "line": 3569, + "line": 3577, "column": 115 } } @@ -487583,15 +490845,15 @@ "updateContext": null }, "value": ",", - "start": 144722, - "end": 144725, + "start": 145236, + "end": 145239, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 115 }, "end": { - "line": 3569, + "line": 3577, "column": 118 } } @@ -487608,15 +490870,15 @@ "postfix": false, "binop": null }, - "start": 144725, - "end": 144726, + "start": 145239, + "end": 145240, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 118 }, "end": { - "line": 3569, + "line": 3577, "column": 119 } } @@ -487633,15 +490895,15 @@ "postfix": false, "binop": null }, - "start": 144726, - "end": 144727, + "start": 145240, + "end": 145241, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 119 }, "end": { - "line": 3569, + "line": 3577, "column": 120 } } @@ -487660,15 +490922,15 @@ "updateContext": null }, "value": "]", - "start": 144727, - "end": 144728, + "start": 145241, + "end": 145242, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 120 }, "end": { - "line": 3569, + "line": 3577, "column": 121 } } @@ -487685,15 +490947,15 @@ "postfix": false, "binop": null }, - "start": 144728, - "end": 144729, + "start": 145242, + "end": 145243, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 121 }, "end": { - "line": 3569, + "line": 3577, "column": 122 } } @@ -487710,15 +490972,15 @@ "postfix": false, "binop": null }, - "start": 144729, - "end": 144730, + "start": 145243, + "end": 145244, "loc": { "start": { - "line": 3569, + "line": 3577, "column": 122 }, "end": { - "line": 3569, + "line": 3577, "column": 123 } } @@ -487738,15 +491000,15 @@ "updateContext": null }, "value": "this", - "start": 144743, - "end": 144747, + "start": 145257, + "end": 145261, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 12 }, "end": { - "line": 3570, + "line": 3578, "column": 16 } } @@ -487764,15 +491026,15 @@ "binop": null, "updateContext": null }, - "start": 144747, - "end": 144748, + "start": 145261, + "end": 145262, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 16 }, "end": { - "line": 3570, + "line": 3578, "column": 17 } } @@ -487790,15 +491052,15 @@ "binop": null }, "value": "createEntity", - "start": 144748, - "end": 144760, + "start": 145262, + "end": 145274, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 17 }, "end": { - "line": 3570, + "line": 3578, "column": 29 } } @@ -487815,15 +491077,15 @@ "postfix": false, "binop": null }, - "start": 144760, - "end": 144761, + "start": 145274, + "end": 145275, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 29 }, "end": { - "line": 3570, + "line": 3578, "column": 30 } } @@ -487840,15 +491102,15 @@ "postfix": false, "binop": null }, - "start": 144761, - "end": 144762, + "start": 145275, + "end": 145276, "loc": { "start": { - "line": 3570, + "line": 3578, "column": 30 }, "end": { - "line": 3570, + "line": 3578, "column": 31 } } @@ -487866,15 +491128,15 @@ "binop": null }, "value": "id", - "start": 144779, - "end": 144781, + "start": 145293, + "end": 145295, "loc": { "start": { - "line": 3571, + "line": 3579, "column": 16 }, "end": { - "line": 3571, + "line": 3579, "column": 18 } } @@ -487892,15 +491154,15 @@ "binop": null, "updateContext": null }, - "start": 144781, - "end": 144782, + "start": 145295, + "end": 145296, "loc": { "start": { - "line": 3571, + "line": 3579, "column": 18 }, "end": { - "line": 3571, + "line": 3579, "column": 19 } } @@ -487918,15 +491180,15 @@ "binop": null }, "value": "entityId", - "start": 144783, - "end": 144791, + "start": 145297, + "end": 145305, "loc": { "start": { - "line": 3571, + "line": 3579, "column": 20 }, "end": { - "line": 3571, + "line": 3579, "column": 28 } } @@ -487944,15 +491206,15 @@ "binop": null, "updateContext": null }, - "start": 144791, - "end": 144792, + "start": 145305, + "end": 145306, "loc": { "start": { - "line": 3571, + "line": 3579, "column": 28 }, "end": { - "line": 3571, + "line": 3579, "column": 29 } } @@ -487970,15 +491232,15 @@ "binop": null }, "value": "meshIds", - "start": 144809, - "end": 144816, + "start": 145323, + "end": 145330, "loc": { "start": { - "line": 3572, + "line": 3580, "column": 16 }, "end": { - "line": 3572, + "line": 3580, "column": 23 } } @@ -487996,15 +491258,15 @@ "binop": null, "updateContext": null }, - "start": 144816, - "end": 144817, + "start": 145330, + "end": 145331, "loc": { "start": { - "line": 3572, + "line": 3580, "column": 23 }, "end": { - "line": 3572, + "line": 3580, "column": 24 } } @@ -488022,15 +491284,15 @@ "binop": null }, "value": "unusedMeshIds", - "start": 144818, - "end": 144831, + "start": 145332, + "end": 145345, "loc": { "start": { - "line": 3572, + "line": 3580, "column": 25 }, "end": { - "line": 3572, + "line": 3580, "column": 38 } } @@ -488048,15 +491310,15 @@ "binop": null, "updateContext": null }, - "start": 144831, - "end": 144832, + "start": 145345, + "end": 145346, "loc": { "start": { - "line": 3572, + "line": 3580, "column": 38 }, "end": { - "line": 3572, + "line": 3580, "column": 39 } } @@ -488074,15 +491336,15 @@ "binop": null }, "value": "isObject", - "start": 144849, - "end": 144857, + "start": 145363, + "end": 145371, "loc": { "start": { - "line": 3573, + "line": 3581, "column": 16 }, "end": { - "line": 3573, + "line": 3581, "column": 24 } } @@ -488100,15 +491362,15 @@ "binop": null, "updateContext": null }, - "start": 144857, - "end": 144858, + "start": 145371, + "end": 145372, "loc": { "start": { - "line": 3573, + "line": 3581, "column": 24 }, "end": { - "line": 3573, + "line": 3581, "column": 25 } } @@ -488128,15 +491390,15 @@ "updateContext": null }, "value": "true", - "start": 144859, - "end": 144863, + "start": 145373, + "end": 145377, "loc": { "start": { - "line": 3573, + "line": 3581, "column": 26 }, "end": { - "line": 3573, + "line": 3581, "column": 30 } } @@ -488153,15 +491415,15 @@ "postfix": false, "binop": null }, - "start": 144876, - "end": 144877, + "start": 145390, + "end": 145391, "loc": { "start": { - "line": 3574, + "line": 3582, "column": 12 }, "end": { - "line": 3574, + "line": 3582, "column": 13 } } @@ -488178,15 +491440,15 @@ "postfix": false, "binop": null }, - "start": 144877, - "end": 144878, + "start": 145391, + "end": 145392, "loc": { "start": { - "line": 3574, + "line": 3582, "column": 13 }, "end": { - "line": 3574, + "line": 3582, "column": 14 } } @@ -488204,15 +491466,15 @@ "binop": null, "updateContext": null }, - "start": 144878, - "end": 144879, + "start": 145392, + "end": 145393, "loc": { "start": { - "line": 3574, + "line": 3582, "column": 14 }, "end": { - "line": 3574, + "line": 3582, "column": 15 } } @@ -488229,15 +491491,15 @@ "postfix": false, "binop": null }, - "start": 144888, - "end": 144889, + "start": 145402, + "end": 145403, "loc": { "start": { - "line": 3575, + "line": 3583, "column": 8 }, "end": { - "line": 3575, + "line": 3583, "column": 9 } } @@ -488257,15 +491519,15 @@ "updateContext": null }, "value": "this", - "start": 144898, - "end": 144902, + "start": 145412, + "end": 145416, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 8 }, "end": { - "line": 3576, + "line": 3584, "column": 12 } } @@ -488283,15 +491545,15 @@ "binop": null, "updateContext": null }, - "start": 144902, - "end": 144903, + "start": 145416, + "end": 145417, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 12 }, "end": { - "line": 3576, + "line": 3584, "column": 13 } } @@ -488309,15 +491571,15 @@ "binop": null }, "value": "_unusedMeshes", - "start": 144903, - "end": 144916, + "start": 145417, + "end": 145430, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 13 }, "end": { - "line": 3576, + "line": 3584, "column": 26 } } @@ -488336,15 +491598,15 @@ "updateContext": null }, "value": "=", - "start": 144917, - "end": 144918, + "start": 145431, + "end": 145432, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 27 }, "end": { - "line": 3576, + "line": 3584, "column": 28 } } @@ -488361,15 +491623,15 @@ "postfix": false, "binop": null }, - "start": 144919, - "end": 144920, + "start": 145433, + "end": 145434, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 29 }, "end": { - "line": 3576, + "line": 3584, "column": 30 } } @@ -488386,15 +491648,15 @@ "postfix": false, "binop": null }, - "start": 144920, - "end": 144921, + "start": 145434, + "end": 145435, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 30 }, "end": { - "line": 3576, + "line": 3584, "column": 31 } } @@ -488412,15 +491674,15 @@ "binop": null, "updateContext": null }, - "start": 144921, - "end": 144922, + "start": 145435, + "end": 145436, "loc": { "start": { - "line": 3576, + "line": 3584, "column": 31 }, "end": { - "line": 3576, + "line": 3584, "column": 32 } } @@ -488437,15 +491699,15 @@ "postfix": false, "binop": null }, - "start": 144927, - "end": 144928, + "start": 145441, + "end": 145442, "loc": { "start": { - "line": 3577, + "line": 3585, "column": 4 }, "end": { - "line": 3577, + "line": 3585, "column": 5 } } @@ -488463,15 +491725,15 @@ "binop": null }, "value": "_getActiveSectionPlanesForLayer", - "start": 144934, - "end": 144965, + "start": 145448, + "end": 145479, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 4 }, "end": { - "line": 3579, + "line": 3587, "column": 35 } } @@ -488488,15 +491750,15 @@ "postfix": false, "binop": null }, - "start": 144965, - "end": 144966, + "start": 145479, + "end": 145480, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 35 }, "end": { - "line": 3579, + "line": 3587, "column": 36 } } @@ -488514,15 +491776,15 @@ "binop": null }, "value": "layer", - "start": 144966, - "end": 144971, + "start": 145480, + "end": 145485, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 36 }, "end": { - "line": 3579, + "line": 3587, "column": 41 } } @@ -488539,15 +491801,15 @@ "postfix": false, "binop": null }, - "start": 144971, - "end": 144972, + "start": 145485, + "end": 145486, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 41 }, "end": { - "line": 3579, + "line": 3587, "column": 42 } } @@ -488564,15 +491826,15 @@ "postfix": false, "binop": null }, - "start": 144973, - "end": 144974, + "start": 145487, + "end": 145488, "loc": { "start": { - "line": 3579, + "line": 3587, "column": 43 }, "end": { - "line": 3579, + "line": 3587, "column": 44 } } @@ -488592,15 +491854,15 @@ "updateContext": null }, "value": "const", - "start": 144983, - "end": 144988, + "start": 145497, + "end": 145502, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 8 }, "end": { - "line": 3580, + "line": 3588, "column": 13 } } @@ -488618,15 +491880,15 @@ "binop": null }, "value": "renderFlags", - "start": 144989, - "end": 145000, + "start": 145503, + "end": 145514, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 14 }, "end": { - "line": 3580, + "line": 3588, "column": 25 } } @@ -488645,15 +491907,15 @@ "updateContext": null }, "value": "=", - "start": 145001, - "end": 145002, + "start": 145515, + "end": 145516, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 26 }, "end": { - "line": 3580, + "line": 3588, "column": 27 } } @@ -488673,15 +491935,15 @@ "updateContext": null }, "value": "this", - "start": 145003, - "end": 145007, + "start": 145517, + "end": 145521, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 28 }, "end": { - "line": 3580, + "line": 3588, "column": 32 } } @@ -488699,15 +491961,15 @@ "binop": null, "updateContext": null }, - "start": 145007, - "end": 145008, + "start": 145521, + "end": 145522, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 32 }, "end": { - "line": 3580, + "line": 3588, "column": 33 } } @@ -488725,15 +491987,15 @@ "binop": null }, "value": "renderFlags", - "start": 145008, - "end": 145019, + "start": 145522, + "end": 145533, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 33 }, "end": { - "line": 3580, + "line": 3588, "column": 44 } } @@ -488751,15 +492013,15 @@ "binop": null, "updateContext": null }, - "start": 145019, - "end": 145020, + "start": 145533, + "end": 145534, "loc": { "start": { - "line": 3580, + "line": 3588, "column": 44 }, "end": { - "line": 3580, + "line": 3588, "column": 45 } } @@ -488779,15 +492041,15 @@ "updateContext": null }, "value": "const", - "start": 145029, - "end": 145034, + "start": 145543, + "end": 145548, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 8 }, "end": { - "line": 3581, + "line": 3589, "column": 13 } } @@ -488805,15 +492067,15 @@ "binop": null }, "value": "sectionPlanes", - "start": 145035, - "end": 145048, + "start": 145549, + "end": 145562, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 14 }, "end": { - "line": 3581, + "line": 3589, "column": 27 } } @@ -488832,15 +492094,15 @@ "updateContext": null }, "value": "=", - "start": 145049, - "end": 145050, + "start": 145563, + "end": 145564, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 28 }, "end": { - "line": 3581, + "line": 3589, "column": 29 } } @@ -488860,15 +492122,15 @@ "updateContext": null }, "value": "this", - "start": 145051, - "end": 145055, + "start": 145565, + "end": 145569, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 30 }, "end": { - "line": 3581, + "line": 3589, "column": 34 } } @@ -488886,15 +492148,15 @@ "binop": null, "updateContext": null }, - "start": 145055, - "end": 145056, + "start": 145569, + "end": 145570, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 34 }, "end": { - "line": 3581, + "line": 3589, "column": 35 } } @@ -488912,15 +492174,15 @@ "binop": null }, "value": "scene", - "start": 145056, - "end": 145061, + "start": 145570, + "end": 145575, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 35 }, "end": { - "line": 3581, + "line": 3589, "column": 40 } } @@ -488938,15 +492200,15 @@ "binop": null, "updateContext": null }, - "start": 145061, - "end": 145062, + "start": 145575, + "end": 145576, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 40 }, "end": { - "line": 3581, + "line": 3589, "column": 41 } } @@ -488964,15 +492226,15 @@ "binop": null }, "value": "_sectionPlanesState", - "start": 145062, - "end": 145081, + "start": 145576, + "end": 145595, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 41 }, "end": { - "line": 3581, + "line": 3589, "column": 60 } } @@ -488990,15 +492252,15 @@ "binop": null, "updateContext": null }, - "start": 145081, - "end": 145082, + "start": 145595, + "end": 145596, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 60 }, "end": { - "line": 3581, + "line": 3589, "column": 61 } } @@ -489016,15 +492278,15 @@ "binop": null }, "value": "sectionPlanes", - "start": 145082, - "end": 145095, + "start": 145596, + "end": 145609, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 61 }, "end": { - "line": 3581, + "line": 3589, "column": 74 } } @@ -489042,15 +492304,15 @@ "binop": null, "updateContext": null }, - "start": 145095, - "end": 145096, + "start": 145609, + "end": 145610, "loc": { "start": { - "line": 3581, + "line": 3589, "column": 74 }, "end": { - "line": 3581, + "line": 3589, "column": 75 } } @@ -489070,15 +492332,15 @@ "updateContext": null }, "value": "const", - "start": 145105, - "end": 145110, + "start": 145619, + "end": 145624, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 8 }, "end": { - "line": 3582, + "line": 3590, "column": 13 } } @@ -489096,15 +492358,15 @@ "binop": null }, "value": "numSectionPlanes", - "start": 145111, - "end": 145127, + "start": 145625, + "end": 145641, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 14 }, "end": { - "line": 3582, + "line": 3590, "column": 30 } } @@ -489123,15 +492385,15 @@ "updateContext": null }, "value": "=", - "start": 145128, - "end": 145129, + "start": 145642, + "end": 145643, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 31 }, "end": { - "line": 3582, + "line": 3590, "column": 32 } } @@ -489149,15 +492411,15 @@ "binop": null }, "value": "sectionPlanes", - "start": 145130, - "end": 145143, + "start": 145644, + "end": 145657, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 33 }, "end": { - "line": 3582, + "line": 3590, "column": 46 } } @@ -489175,15 +492437,15 @@ "binop": null, "updateContext": null }, - "start": 145143, - "end": 145144, + "start": 145657, + "end": 145658, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 46 }, "end": { - "line": 3582, + "line": 3590, "column": 47 } } @@ -489201,15 +492463,15 @@ "binop": null }, "value": "length", - "start": 145144, - "end": 145150, + "start": 145658, + "end": 145664, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 47 }, "end": { - "line": 3582, + "line": 3590, "column": 53 } } @@ -489227,15 +492489,15 @@ "binop": null, "updateContext": null }, - "start": 145150, - "end": 145151, + "start": 145664, + "end": 145665, "loc": { "start": { - "line": 3582, + "line": 3590, "column": 53 }, "end": { - "line": 3582, + "line": 3590, "column": 54 } } @@ -489255,15 +492517,15 @@ "updateContext": null }, "value": "const", - "start": 145160, - "end": 145165, + "start": 145674, + "end": 145679, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 8 }, "end": { - "line": 3583, + "line": 3591, "column": 13 } } @@ -489281,15 +492543,15 @@ "binop": null }, "value": "baseIndex", - "start": 145166, - "end": 145175, + "start": 145680, + "end": 145689, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 14 }, "end": { - "line": 3583, + "line": 3591, "column": 23 } } @@ -489308,15 +492570,15 @@ "updateContext": null }, "value": "=", - "start": 145176, - "end": 145177, + "start": 145690, + "end": 145691, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 24 }, "end": { - "line": 3583, + "line": 3591, "column": 25 } } @@ -489334,15 +492596,15 @@ "binop": null }, "value": "layer", - "start": 145178, - "end": 145183, + "start": 145692, + "end": 145697, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 26 }, "end": { - "line": 3583, + "line": 3591, "column": 31 } } @@ -489360,15 +492622,15 @@ "binop": null, "updateContext": null }, - "start": 145183, - "end": 145184, + "start": 145697, + "end": 145698, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 31 }, "end": { - "line": 3583, + "line": 3591, "column": 32 } } @@ -489386,15 +492648,15 @@ "binop": null }, "value": "layerIndex", - "start": 145184, - "end": 145194, + "start": 145698, + "end": 145708, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 32 }, "end": { - "line": 3583, + "line": 3591, "column": 42 } } @@ -489413,15 +492675,15 @@ "updateContext": null }, "value": "*", - "start": 145195, - "end": 145196, + "start": 145709, + "end": 145710, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 43 }, "end": { - "line": 3583, + "line": 3591, "column": 44 } } @@ -489439,15 +492701,15 @@ "binop": null }, "value": "numSectionPlanes", - "start": 145197, - "end": 145213, + "start": 145711, + "end": 145727, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 45 }, "end": { - "line": 3583, + "line": 3591, "column": 61 } } @@ -489465,15 +492727,15 @@ "binop": null, "updateContext": null }, - "start": 145213, - "end": 145214, + "start": 145727, + "end": 145728, "loc": { "start": { - "line": 3583, + "line": 3591, "column": 61 }, "end": { - "line": 3583, + "line": 3591, "column": 62 } } @@ -489493,15 +492755,15 @@ "updateContext": null }, "value": "if", - "start": 145223, - "end": 145225, + "start": 145737, + "end": 145739, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 8 }, "end": { - "line": 3584, + "line": 3592, "column": 10 } } @@ -489518,15 +492780,15 @@ "postfix": false, "binop": null }, - "start": 145226, - "end": 145227, + "start": 145740, + "end": 145741, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 11 }, "end": { - "line": 3584, + "line": 3592, "column": 12 } } @@ -489544,15 +492806,15 @@ "binop": null }, "value": "numSectionPlanes", - "start": 145227, - "end": 145243, + "start": 145741, + "end": 145757, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 12 }, "end": { - "line": 3584, + "line": 3592, "column": 28 } } @@ -489571,15 +492833,15 @@ "updateContext": null }, "value": ">", - "start": 145244, - "end": 145245, + "start": 145758, + "end": 145759, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 29 }, "end": { - "line": 3584, + "line": 3592, "column": 30 } } @@ -489598,15 +492860,15 @@ "updateContext": null }, "value": 0, - "start": 145246, - "end": 145247, + "start": 145760, + "end": 145761, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 31 }, "end": { - "line": 3584, + "line": 3592, "column": 32 } } @@ -489623,15 +492885,15 @@ "postfix": false, "binop": null }, - "start": 145247, - "end": 145248, + "start": 145761, + "end": 145762, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 32 }, "end": { - "line": 3584, + "line": 3592, "column": 33 } } @@ -489648,15 +492910,15 @@ "postfix": false, "binop": null }, - "start": 145249, - "end": 145250, + "start": 145763, + "end": 145764, "loc": { "start": { - "line": 3584, + "line": 3592, "column": 34 }, "end": { - "line": 3584, + "line": 3592, "column": 35 } } @@ -489676,15 +492938,15 @@ "updateContext": null }, "value": "for", - "start": 145263, - "end": 145266, + "start": 145777, + "end": 145780, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 12 }, "end": { - "line": 3585, + "line": 3593, "column": 15 } } @@ -489701,15 +492963,15 @@ "postfix": false, "binop": null }, - "start": 145267, - "end": 145268, + "start": 145781, + "end": 145782, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 16 }, "end": { - "line": 3585, + "line": 3593, "column": 17 } } @@ -489729,15 +492991,15 @@ "updateContext": null }, "value": "let", - "start": 145268, - "end": 145271, + "start": 145782, + "end": 145785, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 17 }, "end": { - "line": 3585, + "line": 3593, "column": 20 } } @@ -489755,15 +493017,15 @@ "binop": null }, "value": "i", - "start": 145272, - "end": 145273, + "start": 145786, + "end": 145787, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 21 }, "end": { - "line": 3585, + "line": 3593, "column": 22 } } @@ -489782,15 +493044,15 @@ "updateContext": null }, "value": "=", - "start": 145274, - "end": 145275, + "start": 145788, + "end": 145789, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 23 }, "end": { - "line": 3585, + "line": 3593, "column": 24 } } @@ -489809,15 +493071,15 @@ "updateContext": null }, "value": 0, - "start": 145276, - "end": 145277, + "start": 145790, + "end": 145791, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 25 }, "end": { - "line": 3585, + "line": 3593, "column": 26 } } @@ -489835,15 +493097,15 @@ "binop": null, "updateContext": null }, - "start": 145277, - "end": 145278, + "start": 145791, + "end": 145792, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 26 }, "end": { - "line": 3585, + "line": 3593, "column": 27 } } @@ -489861,15 +493123,15 @@ "binop": null }, "value": "i", - "start": 145279, - "end": 145280, + "start": 145793, + "end": 145794, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 28 }, "end": { - "line": 3585, + "line": 3593, "column": 29 } } @@ -489888,15 +493150,15 @@ "updateContext": null }, "value": "<", - "start": 145281, - "end": 145282, + "start": 145795, + "end": 145796, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 30 }, "end": { - "line": 3585, + "line": 3593, "column": 31 } } @@ -489914,15 +493176,15 @@ "binop": null }, "value": "numSectionPlanes", - "start": 145283, - "end": 145299, + "start": 145797, + "end": 145813, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 32 }, "end": { - "line": 3585, + "line": 3593, "column": 48 } } @@ -489940,15 +493202,15 @@ "binop": null, "updateContext": null }, - "start": 145299, - "end": 145300, + "start": 145813, + "end": 145814, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 48 }, "end": { - "line": 3585, + "line": 3593, "column": 49 } } @@ -489966,15 +493228,15 @@ "binop": null }, "value": "i", - "start": 145301, - "end": 145302, + "start": 145815, + "end": 145816, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 50 }, "end": { - "line": 3585, + "line": 3593, "column": 51 } } @@ -489992,15 +493254,15 @@ "binop": null }, "value": "++", - "start": 145302, - "end": 145304, + "start": 145816, + "end": 145818, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 51 }, "end": { - "line": 3585, + "line": 3593, "column": 53 } } @@ -490017,15 +493279,15 @@ "postfix": false, "binop": null }, - "start": 145304, - "end": 145305, + "start": 145818, + "end": 145819, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 53 }, "end": { - "line": 3585, + "line": 3593, "column": 54 } } @@ -490042,15 +493304,15 @@ "postfix": false, "binop": null }, - "start": 145306, - "end": 145307, + "start": 145820, + "end": 145821, "loc": { "start": { - "line": 3585, + "line": 3593, "column": 55 }, "end": { - "line": 3585, + "line": 3593, "column": 56 } } @@ -490070,15 +493332,15 @@ "updateContext": null }, "value": "const", - "start": 145324, - "end": 145329, + "start": 145838, + "end": 145843, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 16 }, "end": { - "line": 3586, + "line": 3594, "column": 21 } } @@ -490096,15 +493358,15 @@ "binop": null }, "value": "sectionPlane", - "start": 145330, - "end": 145342, + "start": 145844, + "end": 145856, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 22 }, "end": { - "line": 3586, + "line": 3594, "column": 34 } } @@ -490123,15 +493385,15 @@ "updateContext": null }, "value": "=", - "start": 145343, - "end": 145344, + "start": 145857, + "end": 145858, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 35 }, "end": { - "line": 3586, + "line": 3594, "column": 36 } } @@ -490149,15 +493411,15 @@ "binop": null }, "value": "sectionPlanes", - "start": 145345, - "end": 145358, + "start": 145859, + "end": 145872, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 37 }, "end": { - "line": 3586, + "line": 3594, "column": 50 } } @@ -490175,15 +493437,15 @@ "binop": null, "updateContext": null }, - "start": 145358, - "end": 145359, + "start": 145872, + "end": 145873, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 50 }, "end": { - "line": 3586, + "line": 3594, "column": 51 } } @@ -490201,15 +493463,15 @@ "binop": null }, "value": "i", - "start": 145359, - "end": 145360, + "start": 145873, + "end": 145874, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 51 }, "end": { - "line": 3586, + "line": 3594, "column": 52 } } @@ -490227,15 +493489,15 @@ "binop": null, "updateContext": null }, - "start": 145360, - "end": 145361, + "start": 145874, + "end": 145875, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 52 }, "end": { - "line": 3586, + "line": 3594, "column": 53 } } @@ -490253,15 +493515,15 @@ "binop": null, "updateContext": null }, - "start": 145361, - "end": 145362, + "start": 145875, + "end": 145876, "loc": { "start": { - "line": 3586, + "line": 3594, "column": 53 }, "end": { - "line": 3586, + "line": 3594, "column": 54 } } @@ -490281,15 +493543,15 @@ "updateContext": null }, "value": "if", - "start": 145379, - "end": 145381, + "start": 145893, + "end": 145895, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 16 }, "end": { - "line": 3587, + "line": 3595, "column": 18 } } @@ -490306,15 +493568,15 @@ "postfix": false, "binop": null }, - "start": 145382, - "end": 145383, + "start": 145896, + "end": 145897, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 19 }, "end": { - "line": 3587, + "line": 3595, "column": 20 } } @@ -490333,15 +493595,15 @@ "updateContext": null }, "value": "!", - "start": 145383, - "end": 145384, + "start": 145897, + "end": 145898, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 20 }, "end": { - "line": 3587, + "line": 3595, "column": 21 } } @@ -490359,15 +493621,15 @@ "binop": null }, "value": "sectionPlane", - "start": 145384, - "end": 145396, + "start": 145898, + "end": 145910, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 21 }, "end": { - "line": 3587, + "line": 3595, "column": 33 } } @@ -490385,15 +493647,15 @@ "binop": null, "updateContext": null }, - "start": 145396, - "end": 145397, + "start": 145910, + "end": 145911, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 33 }, "end": { - "line": 3587, + "line": 3595, "column": 34 } } @@ -490411,15 +493673,15 @@ "binop": null }, "value": "active", - "start": 145397, - "end": 145403, + "start": 145911, + "end": 145917, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 34 }, "end": { - "line": 3587, + "line": 3595, "column": 40 } } @@ -490436,15 +493698,15 @@ "postfix": false, "binop": null }, - "start": 145403, - "end": 145404, + "start": 145917, + "end": 145918, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 40 }, "end": { - "line": 3587, + "line": 3595, "column": 41 } } @@ -490461,15 +493723,15 @@ "postfix": false, "binop": null }, - "start": 145405, - "end": 145406, + "start": 145919, + "end": 145920, "loc": { "start": { - "line": 3587, + "line": 3595, "column": 42 }, "end": { - "line": 3587, + "line": 3595, "column": 43 } } @@ -490487,15 +493749,15 @@ "binop": null }, "value": "renderFlags", - "start": 145427, - "end": 145438, + "start": 145941, + "end": 145952, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 20 }, "end": { - "line": 3588, + "line": 3596, "column": 31 } } @@ -490513,15 +493775,15 @@ "binop": null, "updateContext": null }, - "start": 145438, - "end": 145439, + "start": 145952, + "end": 145953, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 31 }, "end": { - "line": 3588, + "line": 3596, "column": 32 } } @@ -490539,15 +493801,15 @@ "binop": null }, "value": "sectionPlanesActivePerLayer", - "start": 145439, - "end": 145466, + "start": 145953, + "end": 145980, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 32 }, "end": { - "line": 3588, + "line": 3596, "column": 59 } } @@ -490565,15 +493827,15 @@ "binop": null, "updateContext": null }, - "start": 145466, - "end": 145467, + "start": 145980, + "end": 145981, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 59 }, "end": { - "line": 3588, + "line": 3596, "column": 60 } } @@ -490591,15 +493853,15 @@ "binop": null }, "value": "baseIndex", - "start": 145467, - "end": 145476, + "start": 145981, + "end": 145990, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 60 }, "end": { - "line": 3588, + "line": 3596, "column": 69 } } @@ -490618,15 +493880,15 @@ "updateContext": null }, "value": "+", - "start": 145477, - "end": 145478, + "start": 145991, + "end": 145992, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 70 }, "end": { - "line": 3588, + "line": 3596, "column": 71 } } @@ -490644,15 +493906,15 @@ "binop": null }, "value": "i", - "start": 145479, - "end": 145480, + "start": 145993, + "end": 145994, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 72 }, "end": { - "line": 3588, + "line": 3596, "column": 73 } } @@ -490670,15 +493932,15 @@ "binop": null, "updateContext": null }, - "start": 145480, - "end": 145481, + "start": 145994, + "end": 145995, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 73 }, "end": { - "line": 3588, + "line": 3596, "column": 74 } } @@ -490697,15 +493959,15 @@ "updateContext": null }, "value": "=", - "start": 145482, - "end": 145483, + "start": 145996, + "end": 145997, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 75 }, "end": { - "line": 3588, + "line": 3596, "column": 76 } } @@ -490725,15 +493987,15 @@ "updateContext": null }, "value": "false", - "start": 145484, - "end": 145489, + "start": 145998, + "end": 146003, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 77 }, "end": { - "line": 3588, + "line": 3596, "column": 82 } } @@ -490751,15 +494013,15 @@ "binop": null, "updateContext": null }, - "start": 145489, - "end": 145490, + "start": 146003, + "end": 146004, "loc": { "start": { - "line": 3588, + "line": 3596, "column": 82 }, "end": { - "line": 3588, + "line": 3596, "column": 83 } } @@ -490776,15 +494038,15 @@ "postfix": false, "binop": null }, - "start": 145507, - "end": 145508, + "start": 146021, + "end": 146022, "loc": { "start": { - "line": 3589, + "line": 3597, "column": 16 }, "end": { - "line": 3589, + "line": 3597, "column": 17 } } @@ -490804,15 +494066,15 @@ "updateContext": null }, "value": "else", - "start": 145509, - "end": 145513, + "start": 146023, + "end": 146027, "loc": { "start": { - "line": 3589, + "line": 3597, "column": 18 }, "end": { - "line": 3589, + "line": 3597, "column": 22 } } @@ -490829,15 +494091,15 @@ "postfix": false, "binop": null }, - "start": 145514, - "end": 145515, + "start": 146028, + "end": 146029, "loc": { "start": { - "line": 3589, + "line": 3597, "column": 23 }, "end": { - "line": 3589, + "line": 3597, "column": 24 } } @@ -490855,15 +494117,15 @@ "binop": null }, "value": "renderFlags", - "start": 145536, - "end": 145547, + "start": 146050, + "end": 146061, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 20 }, "end": { - "line": 3590, + "line": 3598, "column": 31 } } @@ -490881,15 +494143,15 @@ "binop": null, "updateContext": null }, - "start": 145547, - "end": 145548, + "start": 146061, + "end": 146062, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 31 }, "end": { - "line": 3590, + "line": 3598, "column": 32 } } @@ -490907,15 +494169,15 @@ "binop": null }, "value": "sectionPlanesActivePerLayer", - "start": 145548, - "end": 145575, + "start": 146062, + "end": 146089, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 32 }, "end": { - "line": 3590, + "line": 3598, "column": 59 } } @@ -490933,15 +494195,15 @@ "binop": null, "updateContext": null }, - "start": 145575, - "end": 145576, + "start": 146089, + "end": 146090, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 59 }, "end": { - "line": 3590, + "line": 3598, "column": 60 } } @@ -490959,15 +494221,15 @@ "binop": null }, "value": "baseIndex", - "start": 145576, - "end": 145585, + "start": 146090, + "end": 146099, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 60 }, "end": { - "line": 3590, + "line": 3598, "column": 69 } } @@ -490986,15 +494248,15 @@ "updateContext": null }, "value": "+", - "start": 145586, - "end": 145587, + "start": 146100, + "end": 146101, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 70 }, "end": { - "line": 3590, + "line": 3598, "column": 71 } } @@ -491012,15 +494274,15 @@ "binop": null }, "value": "i", - "start": 145588, - "end": 145589, + "start": 146102, + "end": 146103, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 72 }, "end": { - "line": 3590, + "line": 3598, "column": 73 } } @@ -491038,15 +494300,15 @@ "binop": null, "updateContext": null }, - "start": 145589, - "end": 145590, + "start": 146103, + "end": 146104, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 73 }, "end": { - "line": 3590, + "line": 3598, "column": 74 } } @@ -491065,15 +494327,15 @@ "updateContext": null }, "value": "=", - "start": 145591, - "end": 145592, + "start": 146105, + "end": 146106, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 75 }, "end": { - "line": 3590, + "line": 3598, "column": 76 } } @@ -491093,15 +494355,15 @@ "updateContext": null }, "value": "true", - "start": 145593, - "end": 145597, + "start": 146107, + "end": 146111, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 77 }, "end": { - "line": 3590, + "line": 3598, "column": 81 } } @@ -491119,15 +494381,15 @@ "binop": null, "updateContext": null }, - "start": 145597, - "end": 145598, + "start": 146111, + "end": 146112, "loc": { "start": { - "line": 3590, + "line": 3598, "column": 81 }, "end": { - "line": 3590, + "line": 3598, "column": 82 } } @@ -491145,15 +494407,15 @@ "binop": null }, "value": "renderFlags", - "start": 145619, - "end": 145630, + "start": 146133, + "end": 146144, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 20 }, "end": { - "line": 3591, + "line": 3599, "column": 31 } } @@ -491171,15 +494433,15 @@ "binop": null, "updateContext": null }, - "start": 145630, - "end": 145631, + "start": 146144, + "end": 146145, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 31 }, "end": { - "line": 3591, + "line": 3599, "column": 32 } } @@ -491197,15 +494459,15 @@ "binop": null }, "value": "sectioned", - "start": 145631, - "end": 145640, + "start": 146145, + "end": 146154, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 32 }, "end": { - "line": 3591, + "line": 3599, "column": 41 } } @@ -491224,15 +494486,15 @@ "updateContext": null }, "value": "=", - "start": 145641, - "end": 145642, + "start": 146155, + "end": 146156, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 42 }, "end": { - "line": 3591, + "line": 3599, "column": 43 } } @@ -491252,15 +494514,15 @@ "updateContext": null }, "value": "true", - "start": 145643, - "end": 145647, + "start": 146157, + "end": 146161, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 44 }, "end": { - "line": 3591, + "line": 3599, "column": 48 } } @@ -491278,15 +494540,15 @@ "binop": null, "updateContext": null }, - "start": 145647, - "end": 145648, + "start": 146161, + "end": 146162, "loc": { "start": { - "line": 3591, + "line": 3599, "column": 48 }, "end": { - "line": 3591, + "line": 3599, "column": 49 } } @@ -491303,15 +494565,15 @@ "postfix": false, "binop": null }, - "start": 145665, - "end": 145666, + "start": 146179, + "end": 146180, "loc": { "start": { - "line": 3592, + "line": 3600, "column": 16 }, "end": { - "line": 3592, + "line": 3600, "column": 17 } } @@ -491328,15 +494590,15 @@ "postfix": false, "binop": null }, - "start": 145679, - "end": 145680, + "start": 146193, + "end": 146194, "loc": { "start": { - "line": 3593, + "line": 3601, "column": 12 }, "end": { - "line": 3593, + "line": 3601, "column": 13 } } @@ -491353,15 +494615,15 @@ "postfix": false, "binop": null }, - "start": 145689, - "end": 145690, + "start": 146203, + "end": 146204, "loc": { "start": { - "line": 3594, + "line": 3602, "column": 8 }, "end": { - "line": 3594, + "line": 3602, "column": 9 } } @@ -491381,15 +494643,15 @@ "updateContext": null }, "value": "return", - "start": 145699, - "end": 145705, + "start": 146213, + "end": 146219, "loc": { "start": { - "line": 3595, + "line": 3603, "column": 8 }, "end": { - "line": 3595, + "line": 3603, "column": 14 } } @@ -491409,15 +494671,15 @@ "updateContext": null }, "value": "true", - "start": 145706, - "end": 145710, + "start": 146220, + "end": 146224, "loc": { "start": { - "line": 3595, + "line": 3603, "column": 15 }, "end": { - "line": 3595, + "line": 3603, "column": 19 } } @@ -491435,15 +494697,15 @@ "binop": null, "updateContext": null }, - "start": 145710, - "end": 145711, + "start": 146224, + "end": 146225, "loc": { "start": { - "line": 3595, + "line": 3603, "column": 19 }, "end": { - "line": 3595, + "line": 3603, "column": 20 } } @@ -491460,15 +494722,15 @@ "postfix": false, "binop": null }, - "start": 145716, - "end": 145717, + "start": 146230, + "end": 146231, "loc": { "start": { - "line": 3596, + "line": 3604, "column": 4 }, "end": { - "line": 3596, + "line": 3604, "column": 5 } } @@ -491486,15 +494748,15 @@ "binop": null }, "value": "_updateRenderFlags", - "start": 145723, - "end": 145741, + "start": 146237, + "end": 146255, "loc": { "start": { - "line": 3598, + "line": 3606, "column": 4 }, "end": { - "line": 3598, + "line": 3606, "column": 22 } } @@ -491511,15 +494773,15 @@ "postfix": false, "binop": null }, - "start": 145741, - "end": 145742, + "start": 146255, + "end": 146256, "loc": { "start": { - "line": 3598, + "line": 3606, "column": 22 }, "end": { - "line": 3598, + "line": 3606, "column": 23 } } @@ -491536,15 +494798,15 @@ "postfix": false, "binop": null }, - "start": 145742, - "end": 145743, + "start": 146256, + "end": 146257, "loc": { "start": { - "line": 3598, + "line": 3606, "column": 23 }, "end": { - "line": 3598, + "line": 3606, "column": 24 } } @@ -491561,15 +494823,15 @@ "postfix": false, "binop": null }, - "start": 145744, - "end": 145745, + "start": 146258, + "end": 146259, "loc": { "start": { - "line": 3598, + "line": 3606, "column": 25 }, "end": { - "line": 3598, + "line": 3606, "column": 26 } } @@ -491589,15 +494851,15 @@ "updateContext": null }, "value": "if", - "start": 145754, - "end": 145756, + "start": 146268, + "end": 146270, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 8 }, "end": { - "line": 3599, + "line": 3607, "column": 10 } } @@ -491614,15 +494876,15 @@ "postfix": false, "binop": null }, - "start": 145757, - "end": 145758, + "start": 146271, + "end": 146272, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 11 }, "end": { - "line": 3599, + "line": 3607, "column": 12 } } @@ -491642,15 +494904,15 @@ "updateContext": null }, "value": "this", - "start": 145758, - "end": 145762, + "start": 146272, + "end": 146276, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 12 }, "end": { - "line": 3599, + "line": 3607, "column": 16 } } @@ -491668,15 +494930,15 @@ "binop": null, "updateContext": null }, - "start": 145762, - "end": 145763, + "start": 146276, + "end": 146277, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 16 }, "end": { - "line": 3599, + "line": 3607, "column": 17 } } @@ -491694,15 +494956,15 @@ "binop": null }, "value": "numVisibleLayerPortions", - "start": 145763, - "end": 145786, + "start": 146277, + "end": 146300, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 17 }, "end": { - "line": 3599, + "line": 3607, "column": 40 } } @@ -491721,15 +494983,15 @@ "updateContext": null }, "value": "===", - "start": 145787, - "end": 145790, + "start": 146301, + "end": 146304, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 41 }, "end": { - "line": 3599, + "line": 3607, "column": 44 } } @@ -491748,15 +495010,15 @@ "updateContext": null }, "value": 0, - "start": 145791, - "end": 145792, + "start": 146305, + "end": 146306, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 45 }, "end": { - "line": 3599, + "line": 3607, "column": 46 } } @@ -491773,15 +495035,15 @@ "postfix": false, "binop": null }, - "start": 145792, - "end": 145793, + "start": 146306, + "end": 146307, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 46 }, "end": { - "line": 3599, + "line": 3607, "column": 47 } } @@ -491798,15 +495060,15 @@ "postfix": false, "binop": null }, - "start": 145794, - "end": 145795, + "start": 146308, + "end": 146309, "loc": { "start": { - "line": 3599, + "line": 3607, "column": 48 }, "end": { - "line": 3599, + "line": 3607, "column": 49 } } @@ -491826,15 +495088,15 @@ "updateContext": null }, "value": "return", - "start": 145808, - "end": 145814, + "start": 146322, + "end": 146328, "loc": { "start": { - "line": 3600, + "line": 3608, "column": 12 }, "end": { - "line": 3600, + "line": 3608, "column": 18 } } @@ -491852,15 +495114,15 @@ "binop": null, "updateContext": null }, - "start": 145814, - "end": 145815, + "start": 146328, + "end": 146329, "loc": { "start": { - "line": 3600, + "line": 3608, "column": 18 }, "end": { - "line": 3600, + "line": 3608, "column": 19 } } @@ -491877,15 +495139,15 @@ "postfix": false, "binop": null }, - "start": 145824, - "end": 145825, + "start": 146338, + "end": 146339, "loc": { "start": { - "line": 3601, + "line": 3609, "column": 8 }, "end": { - "line": 3601, + "line": 3609, "column": 9 } } @@ -491905,15 +495167,15 @@ "updateContext": null }, "value": "if", - "start": 145834, - "end": 145836, + "start": 146348, + "end": 146350, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 8 }, "end": { - "line": 3602, + "line": 3610, "column": 10 } } @@ -491930,15 +495192,15 @@ "postfix": false, "binop": null }, - "start": 145837, - "end": 145838, + "start": 146351, + "end": 146352, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 11 }, "end": { - "line": 3602, + "line": 3610, "column": 12 } } @@ -491958,15 +495220,15 @@ "updateContext": null }, "value": "this", - "start": 145838, - "end": 145842, + "start": 146352, + "end": 146356, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 12 }, "end": { - "line": 3602, + "line": 3610, "column": 16 } } @@ -491984,15 +495246,15 @@ "binop": null, "updateContext": null }, - "start": 145842, - "end": 145843, + "start": 146356, + "end": 146357, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 16 }, "end": { - "line": 3602, + "line": 3610, "column": 17 } } @@ -492010,15 +495272,15 @@ "binop": null }, "value": "numCulledLayerPortions", - "start": 145843, - "end": 145865, + "start": 146357, + "end": 146379, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 17 }, "end": { - "line": 3602, + "line": 3610, "column": 39 } } @@ -492037,15 +495299,15 @@ "updateContext": null }, "value": "===", - "start": 145866, - "end": 145869, + "start": 146380, + "end": 146383, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 40 }, "end": { - "line": 3602, + "line": 3610, "column": 43 } } @@ -492065,15 +495327,15 @@ "updateContext": null }, "value": "this", - "start": 145870, - "end": 145874, + "start": 146384, + "end": 146388, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 44 }, "end": { - "line": 3602, + "line": 3610, "column": 48 } } @@ -492091,15 +495353,15 @@ "binop": null, "updateContext": null }, - "start": 145874, - "end": 145875, + "start": 146388, + "end": 146389, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 48 }, "end": { - "line": 3602, + "line": 3610, "column": 49 } } @@ -492117,15 +495379,15 @@ "binop": null }, "value": "numPortions", - "start": 145875, - "end": 145886, + "start": 146389, + "end": 146400, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 49 }, "end": { - "line": 3602, + "line": 3610, "column": 60 } } @@ -492142,15 +495404,15 @@ "postfix": false, "binop": null }, - "start": 145886, - "end": 145887, + "start": 146400, + "end": 146401, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 60 }, "end": { - "line": 3602, + "line": 3610, "column": 61 } } @@ -492167,15 +495429,15 @@ "postfix": false, "binop": null }, - "start": 145888, - "end": 145889, + "start": 146402, + "end": 146403, "loc": { "start": { - "line": 3602, + "line": 3610, "column": 62 }, "end": { - "line": 3602, + "line": 3610, "column": 63 } } @@ -492195,15 +495457,15 @@ "updateContext": null }, "value": "return", - "start": 145902, - "end": 145908, + "start": 146416, + "end": 146422, "loc": { "start": { - "line": 3603, + "line": 3611, "column": 12 }, "end": { - "line": 3603, + "line": 3611, "column": 18 } } @@ -492221,15 +495483,15 @@ "binop": null, "updateContext": null }, - "start": 145908, - "end": 145909, + "start": 146422, + "end": 146423, "loc": { "start": { - "line": 3603, + "line": 3611, "column": 18 }, "end": { - "line": 3603, + "line": 3611, "column": 19 } } @@ -492246,15 +495508,15 @@ "postfix": false, "binop": null }, - "start": 145918, - "end": 145919, + "start": 146432, + "end": 146433, "loc": { "start": { - "line": 3604, + "line": 3612, "column": 8 }, "end": { - "line": 3604, + "line": 3612, "column": 9 } } @@ -492274,15 +495536,15 @@ "updateContext": null }, "value": "const", - "start": 145928, - "end": 145933, + "start": 146442, + "end": 146447, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 8 }, "end": { - "line": 3605, + "line": 3613, "column": 13 } } @@ -492300,15 +495562,15 @@ "binop": null }, "value": "renderFlags", - "start": 145934, - "end": 145945, + "start": 146448, + "end": 146459, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 14 }, "end": { - "line": 3605, + "line": 3613, "column": 25 } } @@ -492327,15 +495589,15 @@ "updateContext": null }, "value": "=", - "start": 145946, - "end": 145947, + "start": 146460, + "end": 146461, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 26 }, "end": { - "line": 3605, + "line": 3613, "column": 27 } } @@ -492355,15 +495617,15 @@ "updateContext": null }, "value": "this", - "start": 145948, - "end": 145952, + "start": 146462, + "end": 146466, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 28 }, "end": { - "line": 3605, + "line": 3613, "column": 32 } } @@ -492381,15 +495643,15 @@ "binop": null, "updateContext": null }, - "start": 145952, - "end": 145953, + "start": 146466, + "end": 146467, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 32 }, "end": { - "line": 3605, + "line": 3613, "column": 33 } } @@ -492407,15 +495669,15 @@ "binop": null }, "value": "renderFlags", - "start": 145953, - "end": 145964, + "start": 146467, + "end": 146478, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 33 }, "end": { - "line": 3605, + "line": 3613, "column": 44 } } @@ -492433,15 +495695,15 @@ "binop": null, "updateContext": null }, - "start": 145964, - "end": 145965, + "start": 146478, + "end": 146479, "loc": { "start": { - "line": 3605, + "line": 3613, "column": 44 }, "end": { - "line": 3605, + "line": 3613, "column": 45 } } @@ -492459,15 +495721,15 @@ "binop": null }, "value": "renderFlags", - "start": 145974, - "end": 145985, + "start": 146488, + "end": 146499, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 8 }, "end": { - "line": 3606, + "line": 3614, "column": 19 } } @@ -492485,15 +495747,15 @@ "binop": null, "updateContext": null }, - "start": 145985, - "end": 145986, + "start": 146499, + "end": 146500, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 19 }, "end": { - "line": 3606, + "line": 3614, "column": 20 } } @@ -492511,15 +495773,15 @@ "binop": null }, "value": "colorOpaque", - "start": 145986, - "end": 145997, + "start": 146500, + "end": 146511, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 20 }, "end": { - "line": 3606, + "line": 3614, "column": 31 } } @@ -492538,15 +495800,15 @@ "updateContext": null }, "value": "=", - "start": 145998, - "end": 145999, + "start": 146512, + "end": 146513, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 32 }, "end": { - "line": 3606, + "line": 3614, "column": 33 } } @@ -492563,15 +495825,15 @@ "postfix": false, "binop": null }, - "start": 146000, - "end": 146001, + "start": 146514, + "end": 146515, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 34 }, "end": { - "line": 3606, + "line": 3614, "column": 35 } } @@ -492591,15 +495853,15 @@ "updateContext": null }, "value": "this", - "start": 146001, - "end": 146005, + "start": 146515, + "end": 146519, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 35 }, "end": { - "line": 3606, + "line": 3614, "column": 39 } } @@ -492617,15 +495879,15 @@ "binop": null, "updateContext": null }, - "start": 146005, - "end": 146006, + "start": 146519, + "end": 146520, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 39 }, "end": { - "line": 3606, + "line": 3614, "column": 40 } } @@ -492643,15 +495905,15 @@ "binop": null }, "value": "numTransparentLayerPortions", - "start": 146006, - "end": 146033, + "start": 146520, + "end": 146547, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 40 }, "end": { - "line": 3606, + "line": 3614, "column": 67 } } @@ -492670,15 +495932,15 @@ "updateContext": null }, "value": "<", - "start": 146034, - "end": 146035, + "start": 146548, + "end": 146549, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 68 }, "end": { - "line": 3606, + "line": 3614, "column": 69 } } @@ -492698,15 +495960,15 @@ "updateContext": null }, "value": "this", - "start": 146036, - "end": 146040, + "start": 146550, + "end": 146554, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 70 }, "end": { - "line": 3606, + "line": 3614, "column": 74 } } @@ -492724,15 +495986,15 @@ "binop": null, "updateContext": null }, - "start": 146040, - "end": 146041, + "start": 146554, + "end": 146555, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 74 }, "end": { - "line": 3606, + "line": 3614, "column": 75 } } @@ -492750,15 +496012,15 @@ "binop": null }, "value": "numPortions", - "start": 146041, - "end": 146052, + "start": 146555, + "end": 146566, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 75 }, "end": { - "line": 3606, + "line": 3614, "column": 86 } } @@ -492775,15 +496037,15 @@ "postfix": false, "binop": null }, - "start": 146052, - "end": 146053, + "start": 146566, + "end": 146567, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 86 }, "end": { - "line": 3606, + "line": 3614, "column": 87 } } @@ -492801,15 +496063,15 @@ "binop": null, "updateContext": null }, - "start": 146053, - "end": 146054, + "start": 146567, + "end": 146568, "loc": { "start": { - "line": 3606, + "line": 3614, "column": 87 }, "end": { - "line": 3606, + "line": 3614, "column": 88 } } @@ -492829,15 +496091,15 @@ "updateContext": null }, "value": "if", - "start": 146063, - "end": 146065, + "start": 146577, + "end": 146579, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 8 }, "end": { - "line": 3607, + "line": 3615, "column": 10 } } @@ -492854,15 +496116,15 @@ "postfix": false, "binop": null }, - "start": 146066, - "end": 146067, + "start": 146580, + "end": 146581, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 11 }, "end": { - "line": 3607, + "line": 3615, "column": 12 } } @@ -492882,15 +496144,15 @@ "updateContext": null }, "value": "this", - "start": 146067, - "end": 146071, + "start": 146581, + "end": 146585, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 12 }, "end": { - "line": 3607, + "line": 3615, "column": 16 } } @@ -492908,15 +496170,15 @@ "binop": null, "updateContext": null }, - "start": 146071, - "end": 146072, + "start": 146585, + "end": 146586, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 16 }, "end": { - "line": 3607, + "line": 3615, "column": 17 } } @@ -492934,15 +496196,15 @@ "binop": null }, "value": "numTransparentLayerPortions", - "start": 146072, - "end": 146099, + "start": 146586, + "end": 146613, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 17 }, "end": { - "line": 3607, + "line": 3615, "column": 44 } } @@ -492961,15 +496223,15 @@ "updateContext": null }, "value": ">", - "start": 146100, - "end": 146101, + "start": 146614, + "end": 146615, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 45 }, "end": { - "line": 3607, + "line": 3615, "column": 46 } } @@ -492988,15 +496250,15 @@ "updateContext": null }, "value": 0, - "start": 146102, - "end": 146103, + "start": 146616, + "end": 146617, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 47 }, "end": { - "line": 3607, + "line": 3615, "column": 48 } } @@ -493013,15 +496275,15 @@ "postfix": false, "binop": null }, - "start": 146103, - "end": 146104, + "start": 146617, + "end": 146618, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 48 }, "end": { - "line": 3607, + "line": 3615, "column": 49 } } @@ -493038,15 +496300,15 @@ "postfix": false, "binop": null }, - "start": 146105, - "end": 146106, + "start": 146619, + "end": 146620, "loc": { "start": { - "line": 3607, + "line": 3615, "column": 50 }, "end": { - "line": 3607, + "line": 3615, "column": 51 } } @@ -493064,15 +496326,15 @@ "binop": null }, "value": "renderFlags", - "start": 146119, - "end": 146130, + "start": 146633, + "end": 146644, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 12 }, "end": { - "line": 3608, + "line": 3616, "column": 23 } } @@ -493090,15 +496352,15 @@ "binop": null, "updateContext": null }, - "start": 146130, - "end": 146131, + "start": 146644, + "end": 146645, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 23 }, "end": { - "line": 3608, + "line": 3616, "column": 24 } } @@ -493116,15 +496378,15 @@ "binop": null }, "value": "colorTransparent", - "start": 146131, - "end": 146147, + "start": 146645, + "end": 146661, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 24 }, "end": { - "line": 3608, + "line": 3616, "column": 40 } } @@ -493143,15 +496405,15 @@ "updateContext": null }, "value": "=", - "start": 146148, - "end": 146149, + "start": 146662, + "end": 146663, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 41 }, "end": { - "line": 3608, + "line": 3616, "column": 42 } } @@ -493171,15 +496433,15 @@ "updateContext": null }, "value": "true", - "start": 146150, - "end": 146154, + "start": 146664, + "end": 146668, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 43 }, "end": { - "line": 3608, + "line": 3616, "column": 47 } } @@ -493197,15 +496459,15 @@ "binop": null, "updateContext": null }, - "start": 146154, - "end": 146155, + "start": 146668, + "end": 146669, "loc": { "start": { - "line": 3608, + "line": 3616, "column": 47 }, "end": { - "line": 3608, + "line": 3616, "column": 48 } } @@ -493222,15 +496484,15 @@ "postfix": false, "binop": null }, - "start": 146164, - "end": 146165, + "start": 146678, + "end": 146679, "loc": { "start": { - "line": 3609, + "line": 3617, "column": 8 }, "end": { - "line": 3609, + "line": 3617, "column": 9 } } @@ -493250,15 +496512,15 @@ "updateContext": null }, "value": "if", - "start": 146174, - "end": 146176, + "start": 146688, + "end": 146690, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 8 }, "end": { - "line": 3610, + "line": 3618, "column": 10 } } @@ -493275,15 +496537,15 @@ "postfix": false, "binop": null }, - "start": 146177, - "end": 146178, + "start": 146691, + "end": 146692, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 11 }, "end": { - "line": 3610, + "line": 3618, "column": 12 } } @@ -493303,15 +496565,15 @@ "updateContext": null }, "value": "this", - "start": 146178, - "end": 146182, + "start": 146692, + "end": 146696, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 12 }, "end": { - "line": 3610, + "line": 3618, "column": 16 } } @@ -493329,15 +496591,15 @@ "binop": null, "updateContext": null }, - "start": 146182, - "end": 146183, + "start": 146696, + "end": 146697, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 16 }, "end": { - "line": 3610, + "line": 3618, "column": 17 } } @@ -493355,15 +496617,15 @@ "binop": null }, "value": "numXRayedLayerPortions", - "start": 146183, - "end": 146205, + "start": 146697, + "end": 146719, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 17 }, "end": { - "line": 3610, + "line": 3618, "column": 39 } } @@ -493382,15 +496644,15 @@ "updateContext": null }, "value": ">", - "start": 146206, - "end": 146207, + "start": 146720, + "end": 146721, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 40 }, "end": { - "line": 3610, + "line": 3618, "column": 41 } } @@ -493409,15 +496671,15 @@ "updateContext": null }, "value": 0, - "start": 146208, - "end": 146209, + "start": 146722, + "end": 146723, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 42 }, "end": { - "line": 3610, + "line": 3618, "column": 43 } } @@ -493434,15 +496696,15 @@ "postfix": false, "binop": null }, - "start": 146209, - "end": 146210, + "start": 146723, + "end": 146724, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 43 }, "end": { - "line": 3610, + "line": 3618, "column": 44 } } @@ -493459,15 +496721,15 @@ "postfix": false, "binop": null }, - "start": 146211, - "end": 146212, + "start": 146725, + "end": 146726, "loc": { "start": { - "line": 3610, + "line": 3618, "column": 45 }, "end": { - "line": 3610, + "line": 3618, "column": 46 } } @@ -493487,15 +496749,15 @@ "updateContext": null }, "value": "const", - "start": 146225, - "end": 146230, + "start": 146739, + "end": 146744, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 12 }, "end": { - "line": 3611, + "line": 3619, "column": 17 } } @@ -493513,15 +496775,15 @@ "binop": null }, "value": "xrayMaterial", - "start": 146231, - "end": 146243, + "start": 146745, + "end": 146757, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 18 }, "end": { - "line": 3611, + "line": 3619, "column": 30 } } @@ -493540,15 +496802,15 @@ "updateContext": null }, "value": "=", - "start": 146244, - "end": 146245, + "start": 146758, + "end": 146759, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 31 }, "end": { - "line": 3611, + "line": 3619, "column": 32 } } @@ -493568,15 +496830,15 @@ "updateContext": null }, "value": "this", - "start": 146246, - "end": 146250, + "start": 146760, + "end": 146764, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 33 }, "end": { - "line": 3611, + "line": 3619, "column": 37 } } @@ -493594,15 +496856,15 @@ "binop": null, "updateContext": null }, - "start": 146250, - "end": 146251, + "start": 146764, + "end": 146765, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 37 }, "end": { - "line": 3611, + "line": 3619, "column": 38 } } @@ -493620,15 +496882,15 @@ "binop": null }, "value": "scene", - "start": 146251, - "end": 146256, + "start": 146765, + "end": 146770, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 38 }, "end": { - "line": 3611, + "line": 3619, "column": 43 } } @@ -493646,15 +496908,15 @@ "binop": null, "updateContext": null }, - "start": 146256, - "end": 146257, + "start": 146770, + "end": 146771, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 43 }, "end": { - "line": 3611, + "line": 3619, "column": 44 } } @@ -493672,15 +496934,15 @@ "binop": null }, "value": "xrayMaterial", - "start": 146257, - "end": 146269, + "start": 146771, + "end": 146783, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 44 }, "end": { - "line": 3611, + "line": 3619, "column": 56 } } @@ -493698,15 +496960,15 @@ "binop": null, "updateContext": null }, - "start": 146269, - "end": 146270, + "start": 146783, + "end": 146784, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 56 }, "end": { - "line": 3611, + "line": 3619, "column": 57 } } @@ -493724,15 +496986,15 @@ "binop": null }, "value": "_state", - "start": 146270, - "end": 146276, + "start": 146784, + "end": 146790, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 57 }, "end": { - "line": 3611, + "line": 3619, "column": 63 } } @@ -493750,15 +497012,15 @@ "binop": null, "updateContext": null }, - "start": 146276, - "end": 146277, + "start": 146790, + "end": 146791, "loc": { "start": { - "line": 3611, + "line": 3619, "column": 63 }, "end": { - "line": 3611, + "line": 3619, "column": 64 } } @@ -493778,15 +497040,15 @@ "updateContext": null }, "value": "if", - "start": 146290, - "end": 146292, + "start": 146804, + "end": 146806, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 12 }, "end": { - "line": 3612, + "line": 3620, "column": 14 } } @@ -493803,15 +497065,15 @@ "postfix": false, "binop": null }, - "start": 146293, - "end": 146294, + "start": 146807, + "end": 146808, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 15 }, "end": { - "line": 3612, + "line": 3620, "column": 16 } } @@ -493829,15 +497091,15 @@ "binop": null }, "value": "xrayMaterial", - "start": 146294, - "end": 146306, + "start": 146808, + "end": 146820, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 16 }, "end": { - "line": 3612, + "line": 3620, "column": 28 } } @@ -493855,15 +497117,15 @@ "binop": null, "updateContext": null }, - "start": 146306, - "end": 146307, + "start": 146820, + "end": 146821, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 28 }, "end": { - "line": 3612, + "line": 3620, "column": 29 } } @@ -493881,15 +497143,15 @@ "binop": null }, "value": "fill", - "start": 146307, - "end": 146311, + "start": 146821, + "end": 146825, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 29 }, "end": { - "line": 3612, + "line": 3620, "column": 33 } } @@ -493906,15 +497168,15 @@ "postfix": false, "binop": null }, - "start": 146311, - "end": 146312, + "start": 146825, + "end": 146826, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 33 }, "end": { - "line": 3612, + "line": 3620, "column": 34 } } @@ -493931,15 +497193,15 @@ "postfix": false, "binop": null }, - "start": 146313, - "end": 146314, + "start": 146827, + "end": 146828, "loc": { "start": { - "line": 3612, + "line": 3620, "column": 35 }, "end": { - "line": 3612, + "line": 3620, "column": 36 } } @@ -493959,15 +497221,15 @@ "updateContext": null }, "value": "if", - "start": 146331, - "end": 146333, + "start": 146845, + "end": 146847, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 16 }, "end": { - "line": 3613, + "line": 3621, "column": 18 } } @@ -493984,15 +497246,15 @@ "postfix": false, "binop": null }, - "start": 146334, - "end": 146335, + "start": 146848, + "end": 146849, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 19 }, "end": { - "line": 3613, + "line": 3621, "column": 20 } } @@ -494010,15 +497272,15 @@ "binop": null }, "value": "xrayMaterial", - "start": 146335, - "end": 146347, + "start": 146849, + "end": 146861, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 20 }, "end": { - "line": 3613, + "line": 3621, "column": 32 } } @@ -494036,15 +497298,15 @@ "binop": null, "updateContext": null }, - "start": 146347, - "end": 146348, + "start": 146861, + "end": 146862, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 32 }, "end": { - "line": 3613, + "line": 3621, "column": 33 } } @@ -494062,15 +497324,15 @@ "binop": null }, "value": "fillAlpha", - "start": 146348, - "end": 146357, + "start": 146862, + "end": 146871, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 33 }, "end": { - "line": 3613, + "line": 3621, "column": 42 } } @@ -494089,15 +497351,15 @@ "updateContext": null }, "value": "<", - "start": 146358, - "end": 146359, + "start": 146872, + "end": 146873, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 43 }, "end": { - "line": 3613, + "line": 3621, "column": 44 } } @@ -494116,15 +497378,15 @@ "updateContext": null }, "value": 1, - "start": 146360, - "end": 146363, + "start": 146874, + "end": 146877, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 45 }, "end": { - "line": 3613, + "line": 3621, "column": 48 } } @@ -494141,15 +497403,15 @@ "postfix": false, "binop": null }, - "start": 146363, - "end": 146364, + "start": 146877, + "end": 146878, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 48 }, "end": { - "line": 3613, + "line": 3621, "column": 49 } } @@ -494166,15 +497428,15 @@ "postfix": false, "binop": null }, - "start": 146365, - "end": 146366, + "start": 146879, + "end": 146880, "loc": { "start": { - "line": 3613, + "line": 3621, "column": 50 }, "end": { - "line": 3613, + "line": 3621, "column": 51 } } @@ -494192,15 +497454,15 @@ "binop": null }, "value": "renderFlags", - "start": 146387, - "end": 146398, + "start": 146901, + "end": 146912, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 20 }, "end": { - "line": 3614, + "line": 3622, "column": 31 } } @@ -494218,15 +497480,15 @@ "binop": null, "updateContext": null }, - "start": 146398, - "end": 146399, + "start": 146912, + "end": 146913, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 31 }, "end": { - "line": 3614, + "line": 3622, "column": 32 } } @@ -494244,15 +497506,15 @@ "binop": null }, "value": "xrayedSilhouetteTransparent", - "start": 146399, - "end": 146426, + "start": 146913, + "end": 146940, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 32 }, "end": { - "line": 3614, + "line": 3622, "column": 59 } } @@ -494271,15 +497533,15 @@ "updateContext": null }, "value": "=", - "start": 146427, - "end": 146428, + "start": 146941, + "end": 146942, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 60 }, "end": { - "line": 3614, + "line": 3622, "column": 61 } } @@ -494299,15 +497561,15 @@ "updateContext": null }, "value": "true", - "start": 146429, - "end": 146433, + "start": 146943, + "end": 146947, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 62 }, "end": { - "line": 3614, + "line": 3622, "column": 66 } } @@ -494325,15 +497587,15 @@ "binop": null, "updateContext": null }, - "start": 146433, - "end": 146434, + "start": 146947, + "end": 146948, "loc": { "start": { - "line": 3614, + "line": 3622, "column": 66 }, "end": { - "line": 3614, + "line": 3622, "column": 67 } } @@ -494350,15 +497612,15 @@ "postfix": false, "binop": null }, - "start": 146451, - "end": 146452, + "start": 146965, + "end": 146966, "loc": { "start": { - "line": 3615, + "line": 3623, "column": 16 }, "end": { - "line": 3615, + "line": 3623, "column": 17 } } @@ -494378,15 +497640,15 @@ "updateContext": null }, "value": "else", - "start": 146453, - "end": 146457, + "start": 146967, + "end": 146971, "loc": { "start": { - "line": 3615, + "line": 3623, "column": 18 }, "end": { - "line": 3615, + "line": 3623, "column": 22 } } @@ -494403,15 +497665,15 @@ "postfix": false, "binop": null }, - "start": 146458, - "end": 146459, + "start": 146972, + "end": 146973, "loc": { "start": { - "line": 3615, + "line": 3623, "column": 23 }, "end": { - "line": 3615, + "line": 3623, "column": 24 } } @@ -494429,15 +497691,15 @@ "binop": null }, "value": "renderFlags", - "start": 146480, - "end": 146491, + "start": 146994, + "end": 147005, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 20 }, "end": { - "line": 3616, + "line": 3624, "column": 31 } } @@ -494455,15 +497717,15 @@ "binop": null, "updateContext": null }, - "start": 146491, - "end": 146492, + "start": 147005, + "end": 147006, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 31 }, "end": { - "line": 3616, + "line": 3624, "column": 32 } } @@ -494481,15 +497743,15 @@ "binop": null }, "value": "xrayedSilhouetteOpaque", - "start": 146492, - "end": 146514, + "start": 147006, + "end": 147028, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 32 }, "end": { - "line": 3616, + "line": 3624, "column": 54 } } @@ -494508,15 +497770,15 @@ "updateContext": null }, "value": "=", - "start": 146515, - "end": 146516, + "start": 147029, + "end": 147030, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 55 }, "end": { - "line": 3616, + "line": 3624, "column": 56 } } @@ -494536,15 +497798,15 @@ "updateContext": null }, "value": "true", - "start": 146517, - "end": 146521, + "start": 147031, + "end": 147035, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 57 }, "end": { - "line": 3616, + "line": 3624, "column": 61 } } @@ -494562,15 +497824,15 @@ "binop": null, "updateContext": null }, - "start": 146521, - "end": 146522, + "start": 147035, + "end": 147036, "loc": { "start": { - "line": 3616, + "line": 3624, "column": 61 }, "end": { - "line": 3616, + "line": 3624, "column": 62 } } @@ -494587,15 +497849,15 @@ "postfix": false, "binop": null }, - "start": 146539, - "end": 146540, + "start": 147053, + "end": 147054, "loc": { "start": { - "line": 3617, + "line": 3625, "column": 16 }, "end": { - "line": 3617, + "line": 3625, "column": 17 } } @@ -494612,15 +497874,15 @@ "postfix": false, "binop": null }, - "start": 146553, - "end": 146554, + "start": 147067, + "end": 147068, "loc": { "start": { - "line": 3618, + "line": 3626, "column": 12 }, "end": { - "line": 3618, + "line": 3626, "column": 13 } } @@ -494640,15 +497902,15 @@ "updateContext": null }, "value": "if", - "start": 146567, - "end": 146569, + "start": 147081, + "end": 147083, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 12 }, "end": { - "line": 3619, + "line": 3627, "column": 14 } } @@ -494665,15 +497927,15 @@ "postfix": false, "binop": null }, - "start": 146570, - "end": 146571, + "start": 147084, + "end": 147085, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 15 }, "end": { - "line": 3619, + "line": 3627, "column": 16 } } @@ -494691,15 +497953,15 @@ "binop": null }, "value": "xrayMaterial", - "start": 146571, - "end": 146583, + "start": 147085, + "end": 147097, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 16 }, "end": { - "line": 3619, + "line": 3627, "column": 28 } } @@ -494717,15 +497979,15 @@ "binop": null, "updateContext": null }, - "start": 146583, - "end": 146584, + "start": 147097, + "end": 147098, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 28 }, "end": { - "line": 3619, + "line": 3627, "column": 29 } } @@ -494743,15 +498005,15 @@ "binop": null }, "value": "edges", - "start": 146584, - "end": 146589, + "start": 147098, + "end": 147103, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 29 }, "end": { - "line": 3619, + "line": 3627, "column": 34 } } @@ -494768,15 +498030,15 @@ "postfix": false, "binop": null }, - "start": 146589, - "end": 146590, + "start": 147103, + "end": 147104, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 34 }, "end": { - "line": 3619, + "line": 3627, "column": 35 } } @@ -494793,15 +498055,15 @@ "postfix": false, "binop": null }, - "start": 146591, - "end": 146592, + "start": 147105, + "end": 147106, "loc": { "start": { - "line": 3619, + "line": 3627, "column": 36 }, "end": { - "line": 3619, + "line": 3627, "column": 37 } } @@ -494821,15 +498083,15 @@ "updateContext": null }, "value": "if", - "start": 146609, - "end": 146611, + "start": 147123, + "end": 147125, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 16 }, "end": { - "line": 3620, + "line": 3628, "column": 18 } } @@ -494846,15 +498108,15 @@ "postfix": false, "binop": null }, - "start": 146612, - "end": 146613, + "start": 147126, + "end": 147127, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 19 }, "end": { - "line": 3620, + "line": 3628, "column": 20 } } @@ -494872,15 +498134,15 @@ "binop": null }, "value": "xrayMaterial", - "start": 146613, - "end": 146625, + "start": 147127, + "end": 147139, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 20 }, "end": { - "line": 3620, + "line": 3628, "column": 32 } } @@ -494898,15 +498160,15 @@ "binop": null, "updateContext": null }, - "start": 146625, - "end": 146626, + "start": 147139, + "end": 147140, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 32 }, "end": { - "line": 3620, + "line": 3628, "column": 33 } } @@ -494924,15 +498186,15 @@ "binop": null }, "value": "edgeAlpha", - "start": 146626, - "end": 146635, + "start": 147140, + "end": 147149, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 33 }, "end": { - "line": 3620, + "line": 3628, "column": 42 } } @@ -494951,15 +498213,15 @@ "updateContext": null }, "value": "<", - "start": 146636, - "end": 146637, + "start": 147150, + "end": 147151, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 43 }, "end": { - "line": 3620, + "line": 3628, "column": 44 } } @@ -494978,15 +498240,15 @@ "updateContext": null }, "value": 1, - "start": 146638, - "end": 146641, + "start": 147152, + "end": 147155, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 45 }, "end": { - "line": 3620, + "line": 3628, "column": 48 } } @@ -495003,15 +498265,15 @@ "postfix": false, "binop": null }, - "start": 146641, - "end": 146642, + "start": 147155, + "end": 147156, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 48 }, "end": { - "line": 3620, + "line": 3628, "column": 49 } } @@ -495028,15 +498290,15 @@ "postfix": false, "binop": null }, - "start": 146643, - "end": 146644, + "start": 147157, + "end": 147158, "loc": { "start": { - "line": 3620, + "line": 3628, "column": 50 }, "end": { - "line": 3620, + "line": 3628, "column": 51 } } @@ -495054,15 +498316,15 @@ "binop": null }, "value": "renderFlags", - "start": 146665, - "end": 146676, + "start": 147179, + "end": 147190, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 20 }, "end": { - "line": 3621, + "line": 3629, "column": 31 } } @@ -495080,15 +498342,15 @@ "binop": null, "updateContext": null }, - "start": 146676, - "end": 146677, + "start": 147190, + "end": 147191, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 31 }, "end": { - "line": 3621, + "line": 3629, "column": 32 } } @@ -495106,15 +498368,15 @@ "binop": null }, "value": "xrayedEdgesTransparent", - "start": 146677, - "end": 146699, + "start": 147191, + "end": 147213, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 32 }, "end": { - "line": 3621, + "line": 3629, "column": 54 } } @@ -495133,15 +498395,15 @@ "updateContext": null }, "value": "=", - "start": 146700, - "end": 146701, + "start": 147214, + "end": 147215, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 55 }, "end": { - "line": 3621, + "line": 3629, "column": 56 } } @@ -495161,15 +498423,15 @@ "updateContext": null }, "value": "true", - "start": 146702, - "end": 146706, + "start": 147216, + "end": 147220, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 57 }, "end": { - "line": 3621, + "line": 3629, "column": 61 } } @@ -495187,15 +498449,15 @@ "binop": null, "updateContext": null }, - "start": 146706, - "end": 146707, + "start": 147220, + "end": 147221, "loc": { "start": { - "line": 3621, + "line": 3629, "column": 61 }, "end": { - "line": 3621, + "line": 3629, "column": 62 } } @@ -495212,15 +498474,15 @@ "postfix": false, "binop": null }, - "start": 146724, - "end": 146725, + "start": 147238, + "end": 147239, "loc": { "start": { - "line": 3622, + "line": 3630, "column": 16 }, "end": { - "line": 3622, + "line": 3630, "column": 17 } } @@ -495240,15 +498502,15 @@ "updateContext": null }, "value": "else", - "start": 146726, - "end": 146730, + "start": 147240, + "end": 147244, "loc": { "start": { - "line": 3622, + "line": 3630, "column": 18 }, "end": { - "line": 3622, + "line": 3630, "column": 22 } } @@ -495265,15 +498527,15 @@ "postfix": false, "binop": null }, - "start": 146731, - "end": 146732, + "start": 147245, + "end": 147246, "loc": { "start": { - "line": 3622, + "line": 3630, "column": 23 }, "end": { - "line": 3622, + "line": 3630, "column": 24 } } @@ -495291,15 +498553,15 @@ "binop": null }, "value": "renderFlags", - "start": 146753, - "end": 146764, + "start": 147267, + "end": 147278, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 20 }, "end": { - "line": 3623, + "line": 3631, "column": 31 } } @@ -495317,15 +498579,15 @@ "binop": null, "updateContext": null }, - "start": 146764, - "end": 146765, + "start": 147278, + "end": 147279, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 31 }, "end": { - "line": 3623, + "line": 3631, "column": 32 } } @@ -495343,15 +498605,15 @@ "binop": null }, "value": "xrayedEdgesOpaque", - "start": 146765, - "end": 146782, + "start": 147279, + "end": 147296, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 32 }, "end": { - "line": 3623, + "line": 3631, "column": 49 } } @@ -495370,15 +498632,15 @@ "updateContext": null }, "value": "=", - "start": 146783, - "end": 146784, + "start": 147297, + "end": 147298, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 50 }, "end": { - "line": 3623, + "line": 3631, "column": 51 } } @@ -495398,15 +498660,15 @@ "updateContext": null }, "value": "true", - "start": 146785, - "end": 146789, + "start": 147299, + "end": 147303, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 52 }, "end": { - "line": 3623, + "line": 3631, "column": 56 } } @@ -495424,15 +498686,15 @@ "binop": null, "updateContext": null }, - "start": 146789, - "end": 146790, + "start": 147303, + "end": 147304, "loc": { "start": { - "line": 3623, + "line": 3631, "column": 56 }, "end": { - "line": 3623, + "line": 3631, "column": 57 } } @@ -495449,15 +498711,15 @@ "postfix": false, "binop": null }, - "start": 146807, - "end": 146808, + "start": 147321, + "end": 147322, "loc": { "start": { - "line": 3624, + "line": 3632, "column": 16 }, "end": { - "line": 3624, + "line": 3632, "column": 17 } } @@ -495474,15 +498736,15 @@ "postfix": false, "binop": null }, - "start": 146821, - "end": 146822, + "start": 147335, + "end": 147336, "loc": { "start": { - "line": 3625, + "line": 3633, "column": 12 }, "end": { - "line": 3625, + "line": 3633, "column": 13 } } @@ -495499,15 +498761,15 @@ "postfix": false, "binop": null }, - "start": 146831, - "end": 146832, + "start": 147345, + "end": 147346, "loc": { "start": { - "line": 3626, + "line": 3634, "column": 8 }, "end": { - "line": 3626, + "line": 3634, "column": 9 } } @@ -495527,15 +498789,15 @@ "updateContext": null }, "value": "if", - "start": 146841, - "end": 146843, + "start": 147355, + "end": 147357, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 8 }, "end": { - "line": 3627, + "line": 3635, "column": 10 } } @@ -495552,15 +498814,15 @@ "postfix": false, "binop": null }, - "start": 146844, - "end": 146845, + "start": 147358, + "end": 147359, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 11 }, "end": { - "line": 3627, + "line": 3635, "column": 12 } } @@ -495580,15 +498842,15 @@ "updateContext": null }, "value": "this", - "start": 146845, - "end": 146849, + "start": 147359, + "end": 147363, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 12 }, "end": { - "line": 3627, + "line": 3635, "column": 16 } } @@ -495606,15 +498868,15 @@ "binop": null, "updateContext": null }, - "start": 146849, - "end": 146850, + "start": 147363, + "end": 147364, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 16 }, "end": { - "line": 3627, + "line": 3635, "column": 17 } } @@ -495632,15 +498894,15 @@ "binop": null }, "value": "numEdgesLayerPortions", - "start": 146850, - "end": 146871, + "start": 147364, + "end": 147385, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 17 }, "end": { - "line": 3627, + "line": 3635, "column": 38 } } @@ -495659,15 +498921,15 @@ "updateContext": null }, "value": ">", - "start": 146872, - "end": 146873, + "start": 147386, + "end": 147387, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 39 }, "end": { - "line": 3627, + "line": 3635, "column": 40 } } @@ -495686,15 +498948,15 @@ "updateContext": null }, "value": 0, - "start": 146874, - "end": 146875, + "start": 147388, + "end": 147389, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 41 }, "end": { - "line": 3627, + "line": 3635, "column": 42 } } @@ -495711,15 +498973,15 @@ "postfix": false, "binop": null }, - "start": 146875, - "end": 146876, + "start": 147389, + "end": 147390, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 42 }, "end": { - "line": 3627, + "line": 3635, "column": 43 } } @@ -495736,15 +498998,15 @@ "postfix": false, "binop": null }, - "start": 146877, - "end": 146878, + "start": 147391, + "end": 147392, "loc": { "start": { - "line": 3627, + "line": 3635, "column": 44 }, "end": { - "line": 3627, + "line": 3635, "column": 45 } } @@ -495764,15 +499026,15 @@ "updateContext": null }, "value": "const", - "start": 146891, - "end": 146896, + "start": 147405, + "end": 147410, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 12 }, "end": { - "line": 3628, + "line": 3636, "column": 17 } } @@ -495790,15 +499052,15 @@ "binop": null }, "value": "edgeMaterial", - "start": 146897, - "end": 146909, + "start": 147411, + "end": 147423, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 18 }, "end": { - "line": 3628, + "line": 3636, "column": 30 } } @@ -495817,15 +499079,15 @@ "updateContext": null }, "value": "=", - "start": 146910, - "end": 146911, + "start": 147424, + "end": 147425, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 31 }, "end": { - "line": 3628, + "line": 3636, "column": 32 } } @@ -495845,15 +499107,15 @@ "updateContext": null }, "value": "this", - "start": 146912, - "end": 146916, + "start": 147426, + "end": 147430, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 33 }, "end": { - "line": 3628, + "line": 3636, "column": 37 } } @@ -495871,15 +499133,15 @@ "binop": null, "updateContext": null }, - "start": 146916, - "end": 146917, + "start": 147430, + "end": 147431, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 37 }, "end": { - "line": 3628, + "line": 3636, "column": 38 } } @@ -495897,15 +499159,15 @@ "binop": null }, "value": "scene", - "start": 146917, - "end": 146922, + "start": 147431, + "end": 147436, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 38 }, "end": { - "line": 3628, + "line": 3636, "column": 43 } } @@ -495923,15 +499185,15 @@ "binop": null, "updateContext": null }, - "start": 146922, - "end": 146923, + "start": 147436, + "end": 147437, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 43 }, "end": { - "line": 3628, + "line": 3636, "column": 44 } } @@ -495949,15 +499211,15 @@ "binop": null }, "value": "edgeMaterial", - "start": 146923, - "end": 146935, + "start": 147437, + "end": 147449, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 44 }, "end": { - "line": 3628, + "line": 3636, "column": 56 } } @@ -495975,15 +499237,15 @@ "binop": null, "updateContext": null }, - "start": 146935, - "end": 146936, + "start": 147449, + "end": 147450, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 56 }, "end": { - "line": 3628, + "line": 3636, "column": 57 } } @@ -496001,15 +499263,15 @@ "binop": null }, "value": "_state", - "start": 146936, - "end": 146942, + "start": 147450, + "end": 147456, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 57 }, "end": { - "line": 3628, + "line": 3636, "column": 63 } } @@ -496027,15 +499289,15 @@ "binop": null, "updateContext": null }, - "start": 146942, - "end": 146943, + "start": 147456, + "end": 147457, "loc": { "start": { - "line": 3628, + "line": 3636, "column": 63 }, "end": { - "line": 3628, + "line": 3636, "column": 64 } } @@ -496055,15 +499317,15 @@ "updateContext": null }, "value": "if", - "start": 146956, - "end": 146958, + "start": 147470, + "end": 147472, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 12 }, "end": { - "line": 3629, + "line": 3637, "column": 14 } } @@ -496080,15 +499342,15 @@ "postfix": false, "binop": null }, - "start": 146959, - "end": 146960, + "start": 147473, + "end": 147474, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 15 }, "end": { - "line": 3629, + "line": 3637, "column": 16 } } @@ -496106,15 +499368,15 @@ "binop": null }, "value": "edgeMaterial", - "start": 146960, - "end": 146972, + "start": 147474, + "end": 147486, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 16 }, "end": { - "line": 3629, + "line": 3637, "column": 28 } } @@ -496132,15 +499394,15 @@ "binop": null, "updateContext": null }, - "start": 146972, - "end": 146973, + "start": 147486, + "end": 147487, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 28 }, "end": { - "line": 3629, + "line": 3637, "column": 29 } } @@ -496158,15 +499420,15 @@ "binop": null }, "value": "edges", - "start": 146973, - "end": 146978, + "start": 147487, + "end": 147492, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 29 }, "end": { - "line": 3629, + "line": 3637, "column": 34 } } @@ -496183,15 +499445,15 @@ "postfix": false, "binop": null }, - "start": 146978, - "end": 146979, + "start": 147492, + "end": 147493, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 34 }, "end": { - "line": 3629, + "line": 3637, "column": 35 } } @@ -496208,15 +499470,15 @@ "postfix": false, "binop": null }, - "start": 146980, - "end": 146981, + "start": 147494, + "end": 147495, "loc": { "start": { - "line": 3629, + "line": 3637, "column": 36 }, "end": { - "line": 3629, + "line": 3637, "column": 37 } } @@ -496234,15 +499496,15 @@ "binop": null }, "value": "renderFlags", - "start": 146998, - "end": 147009, + "start": 147512, + "end": 147523, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 16 }, "end": { - "line": 3630, + "line": 3638, "column": 27 } } @@ -496260,15 +499522,15 @@ "binop": null, "updateContext": null }, - "start": 147009, - "end": 147010, + "start": 147523, + "end": 147524, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 27 }, "end": { - "line": 3630, + "line": 3638, "column": 28 } } @@ -496286,15 +499548,15 @@ "binop": null }, "value": "edgesOpaque", - "start": 147010, - "end": 147021, + "start": 147524, + "end": 147535, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 28 }, "end": { - "line": 3630, + "line": 3638, "column": 39 } } @@ -496313,15 +499575,15 @@ "updateContext": null }, "value": "=", - "start": 147022, - "end": 147023, + "start": 147536, + "end": 147537, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 40 }, "end": { - "line": 3630, + "line": 3638, "column": 41 } } @@ -496338,15 +499600,15 @@ "postfix": false, "binop": null }, - "start": 147024, - "end": 147025, + "start": 147538, + "end": 147539, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 42 }, "end": { - "line": 3630, + "line": 3638, "column": 43 } } @@ -496366,15 +499628,15 @@ "updateContext": null }, "value": "this", - "start": 147025, - "end": 147029, + "start": 147539, + "end": 147543, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 43 }, "end": { - "line": 3630, + "line": 3638, "column": 47 } } @@ -496392,15 +499654,15 @@ "binop": null, "updateContext": null }, - "start": 147029, - "end": 147030, + "start": 147543, + "end": 147544, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 47 }, "end": { - "line": 3630, + "line": 3638, "column": 48 } } @@ -496418,15 +499680,15 @@ "binop": null }, "value": "numTransparentLayerPortions", - "start": 147030, - "end": 147057, + "start": 147544, + "end": 147571, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 48 }, "end": { - "line": 3630, + "line": 3638, "column": 75 } } @@ -496445,15 +499707,15 @@ "updateContext": null }, "value": "<", - "start": 147058, - "end": 147059, + "start": 147572, + "end": 147573, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 76 }, "end": { - "line": 3630, + "line": 3638, "column": 77 } } @@ -496473,15 +499735,15 @@ "updateContext": null }, "value": "this", - "start": 147060, - "end": 147064, + "start": 147574, + "end": 147578, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 78 }, "end": { - "line": 3630, + "line": 3638, "column": 82 } } @@ -496499,15 +499761,15 @@ "binop": null, "updateContext": null }, - "start": 147064, - "end": 147065, + "start": 147578, + "end": 147579, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 82 }, "end": { - "line": 3630, + "line": 3638, "column": 83 } } @@ -496525,15 +499787,15 @@ "binop": null }, "value": "numPortions", - "start": 147065, - "end": 147076, + "start": 147579, + "end": 147590, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 83 }, "end": { - "line": 3630, + "line": 3638, "column": 94 } } @@ -496550,15 +499812,15 @@ "postfix": false, "binop": null }, - "start": 147076, - "end": 147077, + "start": 147590, + "end": 147591, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 94 }, "end": { - "line": 3630, + "line": 3638, "column": 95 } } @@ -496576,15 +499838,15 @@ "binop": null, "updateContext": null }, - "start": 147077, - "end": 147078, + "start": 147591, + "end": 147592, "loc": { "start": { - "line": 3630, + "line": 3638, "column": 95 }, "end": { - "line": 3630, + "line": 3638, "column": 96 } } @@ -496604,15 +499866,15 @@ "updateContext": null }, "value": "if", - "start": 147095, - "end": 147097, + "start": 147609, + "end": 147611, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 16 }, "end": { - "line": 3631, + "line": 3639, "column": 18 } } @@ -496629,15 +499891,15 @@ "postfix": false, "binop": null }, - "start": 147098, - "end": 147099, + "start": 147612, + "end": 147613, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 19 }, "end": { - "line": 3631, + "line": 3639, "column": 20 } } @@ -496657,15 +499919,15 @@ "updateContext": null }, "value": "this", - "start": 147099, - "end": 147103, + "start": 147613, + "end": 147617, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 20 }, "end": { - "line": 3631, + "line": 3639, "column": 24 } } @@ -496683,15 +499945,15 @@ "binop": null, "updateContext": null }, - "start": 147103, - "end": 147104, + "start": 147617, + "end": 147618, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 24 }, "end": { - "line": 3631, + "line": 3639, "column": 25 } } @@ -496709,15 +499971,15 @@ "binop": null }, "value": "numTransparentLayerPortions", - "start": 147104, - "end": 147131, + "start": 147618, + "end": 147645, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 25 }, "end": { - "line": 3631, + "line": 3639, "column": 52 } } @@ -496736,15 +499998,15 @@ "updateContext": null }, "value": ">", - "start": 147132, - "end": 147133, + "start": 147646, + "end": 147647, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 53 }, "end": { - "line": 3631, + "line": 3639, "column": 54 } } @@ -496763,15 +500025,15 @@ "updateContext": null }, "value": 0, - "start": 147134, - "end": 147135, + "start": 147648, + "end": 147649, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 55 }, "end": { - "line": 3631, + "line": 3639, "column": 56 } } @@ -496788,15 +500050,15 @@ "postfix": false, "binop": null }, - "start": 147135, - "end": 147136, + "start": 147649, + "end": 147650, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 56 }, "end": { - "line": 3631, + "line": 3639, "column": 57 } } @@ -496813,15 +500075,15 @@ "postfix": false, "binop": null }, - "start": 147137, - "end": 147138, + "start": 147651, + "end": 147652, "loc": { "start": { - "line": 3631, + "line": 3639, "column": 58 }, "end": { - "line": 3631, + "line": 3639, "column": 59 } } @@ -496839,15 +500101,15 @@ "binop": null }, "value": "renderFlags", - "start": 147159, - "end": 147170, + "start": 147673, + "end": 147684, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 20 }, "end": { - "line": 3632, + "line": 3640, "column": 31 } } @@ -496865,15 +500127,15 @@ "binop": null, "updateContext": null }, - "start": 147170, - "end": 147171, + "start": 147684, + "end": 147685, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 31 }, "end": { - "line": 3632, + "line": 3640, "column": 32 } } @@ -496891,15 +500153,15 @@ "binop": null }, "value": "edgesTransparent", - "start": 147171, - "end": 147187, + "start": 147685, + "end": 147701, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 32 }, "end": { - "line": 3632, + "line": 3640, "column": 48 } } @@ -496918,15 +500180,15 @@ "updateContext": null }, "value": "=", - "start": 147188, - "end": 147189, + "start": 147702, + "end": 147703, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 49 }, "end": { - "line": 3632, + "line": 3640, "column": 50 } } @@ -496946,15 +500208,15 @@ "updateContext": null }, "value": "true", - "start": 147190, - "end": 147194, + "start": 147704, + "end": 147708, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 51 }, "end": { - "line": 3632, + "line": 3640, "column": 55 } } @@ -496972,15 +500234,15 @@ "binop": null, "updateContext": null }, - "start": 147194, - "end": 147195, + "start": 147708, + "end": 147709, "loc": { "start": { - "line": 3632, + "line": 3640, "column": 55 }, "end": { - "line": 3632, + "line": 3640, "column": 56 } } @@ -496997,15 +500259,15 @@ "postfix": false, "binop": null }, - "start": 147212, - "end": 147213, + "start": 147726, + "end": 147727, "loc": { "start": { - "line": 3633, + "line": 3641, "column": 16 }, "end": { - "line": 3633, + "line": 3641, "column": 17 } } @@ -497022,15 +500284,15 @@ "postfix": false, "binop": null }, - "start": 147226, - "end": 147227, + "start": 147740, + "end": 147741, "loc": { "start": { - "line": 3634, + "line": 3642, "column": 12 }, "end": { - "line": 3634, + "line": 3642, "column": 13 } } @@ -497047,15 +500309,15 @@ "postfix": false, "binop": null }, - "start": 147236, - "end": 147237, + "start": 147750, + "end": 147751, "loc": { "start": { - "line": 3635, + "line": 3643, "column": 8 }, "end": { - "line": 3635, + "line": 3643, "column": 9 } } @@ -497075,15 +500337,15 @@ "updateContext": null }, "value": "if", - "start": 147246, - "end": 147248, + "start": 147760, + "end": 147762, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 8 }, "end": { - "line": 3636, + "line": 3644, "column": 10 } } @@ -497100,15 +500362,15 @@ "postfix": false, "binop": null }, - "start": 147249, - "end": 147250, + "start": 147763, + "end": 147764, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 11 }, "end": { - "line": 3636, + "line": 3644, "column": 12 } } @@ -497128,15 +500390,15 @@ "updateContext": null }, "value": "this", - "start": 147250, - "end": 147254, + "start": 147764, + "end": 147768, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 12 }, "end": { - "line": 3636, + "line": 3644, "column": 16 } } @@ -497154,15 +500416,15 @@ "binop": null, "updateContext": null }, - "start": 147254, - "end": 147255, + "start": 147768, + "end": 147769, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 16 }, "end": { - "line": 3636, + "line": 3644, "column": 17 } } @@ -497180,15 +500442,15 @@ "binop": null }, "value": "numSelectedLayerPortions", - "start": 147255, - "end": 147279, + "start": 147769, + "end": 147793, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 17 }, "end": { - "line": 3636, + "line": 3644, "column": 41 } } @@ -497207,15 +500469,15 @@ "updateContext": null }, "value": ">", - "start": 147280, - "end": 147281, + "start": 147794, + "end": 147795, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 42 }, "end": { - "line": 3636, + "line": 3644, "column": 43 } } @@ -497234,15 +500496,15 @@ "updateContext": null }, "value": 0, - "start": 147282, - "end": 147283, + "start": 147796, + "end": 147797, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 44 }, "end": { - "line": 3636, + "line": 3644, "column": 45 } } @@ -497259,15 +500521,15 @@ "postfix": false, "binop": null }, - "start": 147283, - "end": 147284, + "start": 147797, + "end": 147798, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 45 }, "end": { - "line": 3636, + "line": 3644, "column": 46 } } @@ -497284,15 +500546,15 @@ "postfix": false, "binop": null }, - "start": 147285, - "end": 147286, + "start": 147799, + "end": 147800, "loc": { "start": { - "line": 3636, + "line": 3644, "column": 47 }, "end": { - "line": 3636, + "line": 3644, "column": 48 } } @@ -497312,15 +500574,15 @@ "updateContext": null }, "value": "const", - "start": 147299, - "end": 147304, + "start": 147813, + "end": 147818, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 12 }, "end": { - "line": 3637, + "line": 3645, "column": 17 } } @@ -497338,15 +500600,15 @@ "binop": null }, "value": "selectedMaterial", - "start": 147305, - "end": 147321, + "start": 147819, + "end": 147835, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 18 }, "end": { - "line": 3637, + "line": 3645, "column": 34 } } @@ -497365,15 +500627,15 @@ "updateContext": null }, "value": "=", - "start": 147322, - "end": 147323, + "start": 147836, + "end": 147837, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 35 }, "end": { - "line": 3637, + "line": 3645, "column": 36 } } @@ -497393,15 +500655,15 @@ "updateContext": null }, "value": "this", - "start": 147324, - "end": 147328, + "start": 147838, + "end": 147842, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 37 }, "end": { - "line": 3637, + "line": 3645, "column": 41 } } @@ -497419,15 +500681,15 @@ "binop": null, "updateContext": null }, - "start": 147328, - "end": 147329, + "start": 147842, + "end": 147843, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 41 }, "end": { - "line": 3637, + "line": 3645, "column": 42 } } @@ -497445,15 +500707,15 @@ "binop": null }, "value": "scene", - "start": 147329, - "end": 147334, + "start": 147843, + "end": 147848, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 42 }, "end": { - "line": 3637, + "line": 3645, "column": 47 } } @@ -497471,15 +500733,15 @@ "binop": null, "updateContext": null }, - "start": 147334, - "end": 147335, + "start": 147848, + "end": 147849, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 47 }, "end": { - "line": 3637, + "line": 3645, "column": 48 } } @@ -497497,15 +500759,15 @@ "binop": null }, "value": "selectedMaterial", - "start": 147335, - "end": 147351, + "start": 147849, + "end": 147865, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 48 }, "end": { - "line": 3637, + "line": 3645, "column": 64 } } @@ -497523,15 +500785,15 @@ "binop": null, "updateContext": null }, - "start": 147351, - "end": 147352, + "start": 147865, + "end": 147866, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 64 }, "end": { - "line": 3637, + "line": 3645, "column": 65 } } @@ -497549,15 +500811,15 @@ "binop": null }, "value": "_state", - "start": 147352, - "end": 147358, + "start": 147866, + "end": 147872, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 65 }, "end": { - "line": 3637, + "line": 3645, "column": 71 } } @@ -497575,15 +500837,15 @@ "binop": null, "updateContext": null }, - "start": 147358, - "end": 147359, + "start": 147872, + "end": 147873, "loc": { "start": { - "line": 3637, + "line": 3645, "column": 71 }, "end": { - "line": 3637, + "line": 3645, "column": 72 } } @@ -497603,15 +500865,15 @@ "updateContext": null }, "value": "if", - "start": 147372, - "end": 147374, + "start": 147886, + "end": 147888, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 12 }, "end": { - "line": 3638, + "line": 3646, "column": 14 } } @@ -497628,15 +500890,15 @@ "postfix": false, "binop": null }, - "start": 147375, - "end": 147376, + "start": 147889, + "end": 147890, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 15 }, "end": { - "line": 3638, + "line": 3646, "column": 16 } } @@ -497654,15 +500916,15 @@ "binop": null }, "value": "selectedMaterial", - "start": 147376, - "end": 147392, + "start": 147890, + "end": 147906, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 16 }, "end": { - "line": 3638, + "line": 3646, "column": 32 } } @@ -497680,15 +500942,15 @@ "binop": null, "updateContext": null }, - "start": 147392, - "end": 147393, + "start": 147906, + "end": 147907, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 32 }, "end": { - "line": 3638, + "line": 3646, "column": 33 } } @@ -497706,15 +500968,15 @@ "binop": null }, "value": "fill", - "start": 147393, - "end": 147397, + "start": 147907, + "end": 147911, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 33 }, "end": { - "line": 3638, + "line": 3646, "column": 37 } } @@ -497731,15 +500993,15 @@ "postfix": false, "binop": null }, - "start": 147397, - "end": 147398, + "start": 147911, + "end": 147912, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 37 }, "end": { - "line": 3638, + "line": 3646, "column": 38 } } @@ -497756,15 +501018,15 @@ "postfix": false, "binop": null }, - "start": 147399, - "end": 147400, + "start": 147913, + "end": 147914, "loc": { "start": { - "line": 3638, + "line": 3646, "column": 39 }, "end": { - "line": 3638, + "line": 3646, "column": 40 } } @@ -497784,15 +501046,15 @@ "updateContext": null }, "value": "if", - "start": 147417, - "end": 147419, + "start": 147931, + "end": 147933, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 16 }, "end": { - "line": 3639, + "line": 3647, "column": 18 } } @@ -497809,15 +501071,15 @@ "postfix": false, "binop": null }, - "start": 147420, - "end": 147421, + "start": 147934, + "end": 147935, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 19 }, "end": { - "line": 3639, + "line": 3647, "column": 20 } } @@ -497835,15 +501097,15 @@ "binop": null }, "value": "selectedMaterial", - "start": 147421, - "end": 147437, + "start": 147935, + "end": 147951, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 20 }, "end": { - "line": 3639, + "line": 3647, "column": 36 } } @@ -497861,15 +501123,15 @@ "binop": null, "updateContext": null }, - "start": 147437, - "end": 147438, + "start": 147951, + "end": 147952, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 36 }, "end": { - "line": 3639, + "line": 3647, "column": 37 } } @@ -497887,15 +501149,15 @@ "binop": null }, "value": "fillAlpha", - "start": 147438, - "end": 147447, + "start": 147952, + "end": 147961, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 37 }, "end": { - "line": 3639, + "line": 3647, "column": 46 } } @@ -497914,15 +501176,15 @@ "updateContext": null }, "value": "<", - "start": 147448, - "end": 147449, + "start": 147962, + "end": 147963, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 47 }, "end": { - "line": 3639, + "line": 3647, "column": 48 } } @@ -497941,15 +501203,15 @@ "updateContext": null }, "value": 1, - "start": 147450, - "end": 147453, + "start": 147964, + "end": 147967, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 49 }, "end": { - "line": 3639, + "line": 3647, "column": 52 } } @@ -497966,15 +501228,15 @@ "postfix": false, "binop": null }, - "start": 147453, - "end": 147454, + "start": 147967, + "end": 147968, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 52 }, "end": { - "line": 3639, + "line": 3647, "column": 53 } } @@ -497991,15 +501253,15 @@ "postfix": false, "binop": null }, - "start": 147455, - "end": 147456, + "start": 147969, + "end": 147970, "loc": { "start": { - "line": 3639, + "line": 3647, "column": 54 }, "end": { - "line": 3639, + "line": 3647, "column": 55 } } @@ -498017,15 +501279,15 @@ "binop": null }, "value": "renderFlags", - "start": 147477, - "end": 147488, + "start": 147991, + "end": 148002, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 20 }, "end": { - "line": 3640, + "line": 3648, "column": 31 } } @@ -498043,15 +501305,15 @@ "binop": null, "updateContext": null }, - "start": 147488, - "end": 147489, + "start": 148002, + "end": 148003, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 31 }, "end": { - "line": 3640, + "line": 3648, "column": 32 } } @@ -498069,15 +501331,15 @@ "binop": null }, "value": "selectedSilhouetteTransparent", - "start": 147489, - "end": 147518, + "start": 148003, + "end": 148032, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 32 }, "end": { - "line": 3640, + "line": 3648, "column": 61 } } @@ -498096,15 +501358,15 @@ "updateContext": null }, "value": "=", - "start": 147519, - "end": 147520, + "start": 148033, + "end": 148034, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 62 }, "end": { - "line": 3640, + "line": 3648, "column": 63 } } @@ -498124,15 +501386,15 @@ "updateContext": null }, "value": "true", - "start": 147521, - "end": 147525, + "start": 148035, + "end": 148039, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 64 }, "end": { - "line": 3640, + "line": 3648, "column": 68 } } @@ -498150,15 +501412,15 @@ "binop": null, "updateContext": null }, - "start": 147525, - "end": 147526, + "start": 148039, + "end": 148040, "loc": { "start": { - "line": 3640, + "line": 3648, "column": 68 }, "end": { - "line": 3640, + "line": 3648, "column": 69 } } @@ -498175,15 +501437,15 @@ "postfix": false, "binop": null }, - "start": 147543, - "end": 147544, + "start": 148057, + "end": 148058, "loc": { "start": { - "line": 3641, + "line": 3649, "column": 16 }, "end": { - "line": 3641, + "line": 3649, "column": 17 } } @@ -498203,15 +501465,15 @@ "updateContext": null }, "value": "else", - "start": 147545, - "end": 147549, + "start": 148059, + "end": 148063, "loc": { "start": { - "line": 3641, + "line": 3649, "column": 18 }, "end": { - "line": 3641, + "line": 3649, "column": 22 } } @@ -498228,15 +501490,15 @@ "postfix": false, "binop": null }, - "start": 147550, - "end": 147551, + "start": 148064, + "end": 148065, "loc": { "start": { - "line": 3641, + "line": 3649, "column": 23 }, "end": { - "line": 3641, + "line": 3649, "column": 24 } } @@ -498254,15 +501516,15 @@ "binop": null }, "value": "renderFlags", - "start": 147572, - "end": 147583, + "start": 148086, + "end": 148097, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 20 }, "end": { - "line": 3642, + "line": 3650, "column": 31 } } @@ -498280,15 +501542,15 @@ "binop": null, "updateContext": null }, - "start": 147583, - "end": 147584, + "start": 148097, + "end": 148098, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 31 }, "end": { - "line": 3642, + "line": 3650, "column": 32 } } @@ -498306,15 +501568,15 @@ "binop": null }, "value": "selectedSilhouetteOpaque", - "start": 147584, - "end": 147608, + "start": 148098, + "end": 148122, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 32 }, "end": { - "line": 3642, + "line": 3650, "column": 56 } } @@ -498333,15 +501595,15 @@ "updateContext": null }, "value": "=", - "start": 147609, - "end": 147610, + "start": 148123, + "end": 148124, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 57 }, "end": { - "line": 3642, + "line": 3650, "column": 58 } } @@ -498361,15 +501623,15 @@ "updateContext": null }, "value": "true", - "start": 147611, - "end": 147615, + "start": 148125, + "end": 148129, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 59 }, "end": { - "line": 3642, + "line": 3650, "column": 63 } } @@ -498387,15 +501649,15 @@ "binop": null, "updateContext": null }, - "start": 147615, - "end": 147616, + "start": 148129, + "end": 148130, "loc": { "start": { - "line": 3642, + "line": 3650, "column": 63 }, "end": { - "line": 3642, + "line": 3650, "column": 64 } } @@ -498412,15 +501674,15 @@ "postfix": false, "binop": null }, - "start": 147633, - "end": 147634, + "start": 148147, + "end": 148148, "loc": { "start": { - "line": 3643, + "line": 3651, "column": 16 }, "end": { - "line": 3643, + "line": 3651, "column": 17 } } @@ -498437,15 +501699,15 @@ "postfix": false, "binop": null }, - "start": 147647, - "end": 147648, + "start": 148161, + "end": 148162, "loc": { "start": { - "line": 3644, + "line": 3652, "column": 12 }, "end": { - "line": 3644, + "line": 3652, "column": 13 } } @@ -498465,15 +501727,15 @@ "updateContext": null }, "value": "if", - "start": 147661, - "end": 147663, + "start": 148175, + "end": 148177, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 12 }, "end": { - "line": 3645, + "line": 3653, "column": 14 } } @@ -498490,15 +501752,15 @@ "postfix": false, "binop": null }, - "start": 147664, - "end": 147665, + "start": 148178, + "end": 148179, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 15 }, "end": { - "line": 3645, + "line": 3653, "column": 16 } } @@ -498516,15 +501778,15 @@ "binop": null }, "value": "selectedMaterial", - "start": 147665, - "end": 147681, + "start": 148179, + "end": 148195, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 16 }, "end": { - "line": 3645, + "line": 3653, "column": 32 } } @@ -498542,15 +501804,15 @@ "binop": null, "updateContext": null }, - "start": 147681, - "end": 147682, + "start": 148195, + "end": 148196, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 32 }, "end": { - "line": 3645, + "line": 3653, "column": 33 } } @@ -498568,15 +501830,15 @@ "binop": null }, "value": "edges", - "start": 147682, - "end": 147687, + "start": 148196, + "end": 148201, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 33 }, "end": { - "line": 3645, + "line": 3653, "column": 38 } } @@ -498593,15 +501855,15 @@ "postfix": false, "binop": null }, - "start": 147687, - "end": 147688, + "start": 148201, + "end": 148202, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 38 }, "end": { - "line": 3645, + "line": 3653, "column": 39 } } @@ -498618,15 +501880,15 @@ "postfix": false, "binop": null }, - "start": 147689, - "end": 147690, + "start": 148203, + "end": 148204, "loc": { "start": { - "line": 3645, + "line": 3653, "column": 40 }, "end": { - "line": 3645, + "line": 3653, "column": 41 } } @@ -498646,15 +501908,15 @@ "updateContext": null }, "value": "if", - "start": 147707, - "end": 147709, + "start": 148221, + "end": 148223, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 16 }, "end": { - "line": 3646, + "line": 3654, "column": 18 } } @@ -498671,15 +501933,15 @@ "postfix": false, "binop": null }, - "start": 147710, - "end": 147711, + "start": 148224, + "end": 148225, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 19 }, "end": { - "line": 3646, + "line": 3654, "column": 20 } } @@ -498697,15 +501959,15 @@ "binop": null }, "value": "selectedMaterial", - "start": 147711, - "end": 147727, + "start": 148225, + "end": 148241, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 20 }, "end": { - "line": 3646, + "line": 3654, "column": 36 } } @@ -498723,15 +501985,15 @@ "binop": null, "updateContext": null }, - "start": 147727, - "end": 147728, + "start": 148241, + "end": 148242, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 36 }, "end": { - "line": 3646, + "line": 3654, "column": 37 } } @@ -498749,15 +502011,15 @@ "binop": null }, "value": "edgeAlpha", - "start": 147728, - "end": 147737, + "start": 148242, + "end": 148251, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 37 }, "end": { - "line": 3646, + "line": 3654, "column": 46 } } @@ -498776,15 +502038,15 @@ "updateContext": null }, "value": "<", - "start": 147738, - "end": 147739, + "start": 148252, + "end": 148253, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 47 }, "end": { - "line": 3646, + "line": 3654, "column": 48 } } @@ -498803,15 +502065,15 @@ "updateContext": null }, "value": 1, - "start": 147740, - "end": 147743, + "start": 148254, + "end": 148257, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 49 }, "end": { - "line": 3646, + "line": 3654, "column": 52 } } @@ -498828,15 +502090,15 @@ "postfix": false, "binop": null }, - "start": 147743, - "end": 147744, + "start": 148257, + "end": 148258, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 52 }, "end": { - "line": 3646, + "line": 3654, "column": 53 } } @@ -498853,15 +502115,15 @@ "postfix": false, "binop": null }, - "start": 147745, - "end": 147746, + "start": 148259, + "end": 148260, "loc": { "start": { - "line": 3646, + "line": 3654, "column": 54 }, "end": { - "line": 3646, + "line": 3654, "column": 55 } } @@ -498879,15 +502141,15 @@ "binop": null }, "value": "renderFlags", - "start": 147767, - "end": 147778, + "start": 148281, + "end": 148292, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 20 }, "end": { - "line": 3647, + "line": 3655, "column": 31 } } @@ -498905,15 +502167,15 @@ "binop": null, "updateContext": null }, - "start": 147778, - "end": 147779, + "start": 148292, + "end": 148293, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 31 }, "end": { - "line": 3647, + "line": 3655, "column": 32 } } @@ -498931,15 +502193,15 @@ "binop": null }, "value": "selectedEdgesTransparent", - "start": 147779, - "end": 147803, + "start": 148293, + "end": 148317, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 32 }, "end": { - "line": 3647, + "line": 3655, "column": 56 } } @@ -498958,15 +502220,15 @@ "updateContext": null }, "value": "=", - "start": 147804, - "end": 147805, + "start": 148318, + "end": 148319, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 57 }, "end": { - "line": 3647, + "line": 3655, "column": 58 } } @@ -498986,15 +502248,15 @@ "updateContext": null }, "value": "true", - "start": 147806, - "end": 147810, + "start": 148320, + "end": 148324, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 59 }, "end": { - "line": 3647, + "line": 3655, "column": 63 } } @@ -499012,15 +502274,15 @@ "binop": null, "updateContext": null }, - "start": 147810, - "end": 147811, + "start": 148324, + "end": 148325, "loc": { "start": { - "line": 3647, + "line": 3655, "column": 63 }, "end": { - "line": 3647, + "line": 3655, "column": 64 } } @@ -499037,15 +502299,15 @@ "postfix": false, "binop": null }, - "start": 147828, - "end": 147829, + "start": 148342, + "end": 148343, "loc": { "start": { - "line": 3648, + "line": 3656, "column": 16 }, "end": { - "line": 3648, + "line": 3656, "column": 17 } } @@ -499065,15 +502327,15 @@ "updateContext": null }, "value": "else", - "start": 147830, - "end": 147834, + "start": 148344, + "end": 148348, "loc": { "start": { - "line": 3648, + "line": 3656, "column": 18 }, "end": { - "line": 3648, + "line": 3656, "column": 22 } } @@ -499090,15 +502352,15 @@ "postfix": false, "binop": null }, - "start": 147835, - "end": 147836, + "start": 148349, + "end": 148350, "loc": { "start": { - "line": 3648, + "line": 3656, "column": 23 }, "end": { - "line": 3648, + "line": 3656, "column": 24 } } @@ -499116,15 +502378,15 @@ "binop": null }, "value": "renderFlags", - "start": 147857, - "end": 147868, + "start": 148371, + "end": 148382, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 20 }, "end": { - "line": 3649, + "line": 3657, "column": 31 } } @@ -499142,15 +502404,15 @@ "binop": null, "updateContext": null }, - "start": 147868, - "end": 147869, + "start": 148382, + "end": 148383, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 31 }, "end": { - "line": 3649, + "line": 3657, "column": 32 } } @@ -499168,15 +502430,15 @@ "binop": null }, "value": "selectedEdgesOpaque", - "start": 147869, - "end": 147888, + "start": 148383, + "end": 148402, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 32 }, "end": { - "line": 3649, + "line": 3657, "column": 51 } } @@ -499195,15 +502457,15 @@ "updateContext": null }, "value": "=", - "start": 147889, - "end": 147890, + "start": 148403, + "end": 148404, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 52 }, "end": { - "line": 3649, + "line": 3657, "column": 53 } } @@ -499223,15 +502485,15 @@ "updateContext": null }, "value": "true", - "start": 147891, - "end": 147895, + "start": 148405, + "end": 148409, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 54 }, "end": { - "line": 3649, + "line": 3657, "column": 58 } } @@ -499249,15 +502511,15 @@ "binop": null, "updateContext": null }, - "start": 147895, - "end": 147896, + "start": 148409, + "end": 148410, "loc": { "start": { - "line": 3649, + "line": 3657, "column": 58 }, "end": { - "line": 3649, + "line": 3657, "column": 59 } } @@ -499274,15 +502536,15 @@ "postfix": false, "binop": null }, - "start": 147913, - "end": 147914, + "start": 148427, + "end": 148428, "loc": { "start": { - "line": 3650, + "line": 3658, "column": 16 }, "end": { - "line": 3650, + "line": 3658, "column": 17 } } @@ -499299,15 +502561,15 @@ "postfix": false, "binop": null }, - "start": 147927, - "end": 147928, + "start": 148441, + "end": 148442, "loc": { "start": { - "line": 3651, + "line": 3659, "column": 12 }, "end": { - "line": 3651, + "line": 3659, "column": 13 } } @@ -499324,15 +502586,15 @@ "postfix": false, "binop": null }, - "start": 147937, - "end": 147938, + "start": 148451, + "end": 148452, "loc": { "start": { - "line": 3652, + "line": 3660, "column": 8 }, "end": { - "line": 3652, + "line": 3660, "column": 9 } } @@ -499352,15 +502614,15 @@ "updateContext": null }, "value": "if", - "start": 147947, - "end": 147949, + "start": 148461, + "end": 148463, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 8 }, "end": { - "line": 3653, + "line": 3661, "column": 10 } } @@ -499377,15 +502639,15 @@ "postfix": false, "binop": null }, - "start": 147950, - "end": 147951, + "start": 148464, + "end": 148465, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 11 }, "end": { - "line": 3653, + "line": 3661, "column": 12 } } @@ -499405,15 +502667,15 @@ "updateContext": null }, "value": "this", - "start": 147951, - "end": 147955, + "start": 148465, + "end": 148469, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 12 }, "end": { - "line": 3653, + "line": 3661, "column": 16 } } @@ -499431,15 +502693,15 @@ "binop": null, "updateContext": null }, - "start": 147955, - "end": 147956, + "start": 148469, + "end": 148470, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 16 }, "end": { - "line": 3653, + "line": 3661, "column": 17 } } @@ -499457,15 +502719,15 @@ "binop": null }, "value": "numHighlightedLayerPortions", - "start": 147956, - "end": 147983, + "start": 148470, + "end": 148497, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 17 }, "end": { - "line": 3653, + "line": 3661, "column": 44 } } @@ -499484,15 +502746,15 @@ "updateContext": null }, "value": ">", - "start": 147984, - "end": 147985, + "start": 148498, + "end": 148499, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 45 }, "end": { - "line": 3653, + "line": 3661, "column": 46 } } @@ -499511,15 +502773,15 @@ "updateContext": null }, "value": 0, - "start": 147986, - "end": 147987, + "start": 148500, + "end": 148501, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 47 }, "end": { - "line": 3653, + "line": 3661, "column": 48 } } @@ -499536,15 +502798,15 @@ "postfix": false, "binop": null }, - "start": 147987, - "end": 147988, + "start": 148501, + "end": 148502, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 48 }, "end": { - "line": 3653, + "line": 3661, "column": 49 } } @@ -499561,15 +502823,15 @@ "postfix": false, "binop": null }, - "start": 147989, - "end": 147990, + "start": 148503, + "end": 148504, "loc": { "start": { - "line": 3653, + "line": 3661, "column": 50 }, "end": { - "line": 3653, + "line": 3661, "column": 51 } } @@ -499589,15 +502851,15 @@ "updateContext": null }, "value": "const", - "start": 148003, - "end": 148008, + "start": 148517, + "end": 148522, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 12 }, "end": { - "line": 3654, + "line": 3662, "column": 17 } } @@ -499615,15 +502877,15 @@ "binop": null }, "value": "highlightMaterial", - "start": 148009, - "end": 148026, + "start": 148523, + "end": 148540, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 18 }, "end": { - "line": 3654, + "line": 3662, "column": 35 } } @@ -499642,15 +502904,15 @@ "updateContext": null }, "value": "=", - "start": 148027, - "end": 148028, + "start": 148541, + "end": 148542, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 36 }, "end": { - "line": 3654, + "line": 3662, "column": 37 } } @@ -499670,15 +502932,15 @@ "updateContext": null }, "value": "this", - "start": 148029, - "end": 148033, + "start": 148543, + "end": 148547, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 38 }, "end": { - "line": 3654, + "line": 3662, "column": 42 } } @@ -499696,15 +502958,15 @@ "binop": null, "updateContext": null }, - "start": 148033, - "end": 148034, + "start": 148547, + "end": 148548, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 42 }, "end": { - "line": 3654, + "line": 3662, "column": 43 } } @@ -499722,15 +502984,15 @@ "binop": null }, "value": "scene", - "start": 148034, - "end": 148039, + "start": 148548, + "end": 148553, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 43 }, "end": { - "line": 3654, + "line": 3662, "column": 48 } } @@ -499748,15 +503010,15 @@ "binop": null, "updateContext": null }, - "start": 148039, - "end": 148040, + "start": 148553, + "end": 148554, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 48 }, "end": { - "line": 3654, + "line": 3662, "column": 49 } } @@ -499774,15 +503036,15 @@ "binop": null }, "value": "highlightMaterial", - "start": 148040, - "end": 148057, + "start": 148554, + "end": 148571, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 49 }, "end": { - "line": 3654, + "line": 3662, "column": 66 } } @@ -499800,15 +503062,15 @@ "binop": null, "updateContext": null }, - "start": 148057, - "end": 148058, + "start": 148571, + "end": 148572, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 66 }, "end": { - "line": 3654, + "line": 3662, "column": 67 } } @@ -499826,15 +503088,15 @@ "binop": null }, "value": "_state", - "start": 148058, - "end": 148064, + "start": 148572, + "end": 148578, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 67 }, "end": { - "line": 3654, + "line": 3662, "column": 73 } } @@ -499852,15 +503114,15 @@ "binop": null, "updateContext": null }, - "start": 148064, - "end": 148065, + "start": 148578, + "end": 148579, "loc": { "start": { - "line": 3654, + "line": 3662, "column": 73 }, "end": { - "line": 3654, + "line": 3662, "column": 74 } } @@ -499880,15 +503142,15 @@ "updateContext": null }, "value": "if", - "start": 148078, - "end": 148080, + "start": 148592, + "end": 148594, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 12 }, "end": { - "line": 3655, + "line": 3663, "column": 14 } } @@ -499905,15 +503167,15 @@ "postfix": false, "binop": null }, - "start": 148081, - "end": 148082, + "start": 148595, + "end": 148596, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 15 }, "end": { - "line": 3655, + "line": 3663, "column": 16 } } @@ -499931,15 +503193,15 @@ "binop": null }, "value": "highlightMaterial", - "start": 148082, - "end": 148099, + "start": 148596, + "end": 148613, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 16 }, "end": { - "line": 3655, + "line": 3663, "column": 33 } } @@ -499957,15 +503219,15 @@ "binop": null, "updateContext": null }, - "start": 148099, - "end": 148100, + "start": 148613, + "end": 148614, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 33 }, "end": { - "line": 3655, + "line": 3663, "column": 34 } } @@ -499983,15 +503245,15 @@ "binop": null }, "value": "fill", - "start": 148100, - "end": 148104, + "start": 148614, + "end": 148618, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 34 }, "end": { - "line": 3655, + "line": 3663, "column": 38 } } @@ -500008,15 +503270,15 @@ "postfix": false, "binop": null }, - "start": 148104, - "end": 148105, + "start": 148618, + "end": 148619, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 38 }, "end": { - "line": 3655, + "line": 3663, "column": 39 } } @@ -500033,15 +503295,15 @@ "postfix": false, "binop": null }, - "start": 148106, - "end": 148107, + "start": 148620, + "end": 148621, "loc": { "start": { - "line": 3655, + "line": 3663, "column": 40 }, "end": { - "line": 3655, + "line": 3663, "column": 41 } } @@ -500061,15 +503323,15 @@ "updateContext": null }, "value": "if", - "start": 148124, - "end": 148126, + "start": 148638, + "end": 148640, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 16 }, "end": { - "line": 3656, + "line": 3664, "column": 18 } } @@ -500086,15 +503348,15 @@ "postfix": false, "binop": null }, - "start": 148127, - "end": 148128, + "start": 148641, + "end": 148642, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 19 }, "end": { - "line": 3656, + "line": 3664, "column": 20 } } @@ -500112,15 +503374,15 @@ "binop": null }, "value": "highlightMaterial", - "start": 148128, - "end": 148145, + "start": 148642, + "end": 148659, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 20 }, "end": { - "line": 3656, + "line": 3664, "column": 37 } } @@ -500138,15 +503400,15 @@ "binop": null, "updateContext": null }, - "start": 148145, - "end": 148146, + "start": 148659, + "end": 148660, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 37 }, "end": { - "line": 3656, + "line": 3664, "column": 38 } } @@ -500164,15 +503426,15 @@ "binop": null }, "value": "fillAlpha", - "start": 148146, - "end": 148155, + "start": 148660, + "end": 148669, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 38 }, "end": { - "line": 3656, + "line": 3664, "column": 47 } } @@ -500191,15 +503453,15 @@ "updateContext": null }, "value": "<", - "start": 148156, - "end": 148157, + "start": 148670, + "end": 148671, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 48 }, "end": { - "line": 3656, + "line": 3664, "column": 49 } } @@ -500218,15 +503480,15 @@ "updateContext": null }, "value": 1, - "start": 148158, - "end": 148161, + "start": 148672, + "end": 148675, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 50 }, "end": { - "line": 3656, + "line": 3664, "column": 53 } } @@ -500243,15 +503505,15 @@ "postfix": false, "binop": null }, - "start": 148161, - "end": 148162, + "start": 148675, + "end": 148676, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 53 }, "end": { - "line": 3656, + "line": 3664, "column": 54 } } @@ -500268,15 +503530,15 @@ "postfix": false, "binop": null }, - "start": 148163, - "end": 148164, + "start": 148677, + "end": 148678, "loc": { "start": { - "line": 3656, + "line": 3664, "column": 55 }, "end": { - "line": 3656, + "line": 3664, "column": 56 } } @@ -500294,15 +503556,15 @@ "binop": null }, "value": "renderFlags", - "start": 148185, - "end": 148196, + "start": 148699, + "end": 148710, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 20 }, "end": { - "line": 3657, + "line": 3665, "column": 31 } } @@ -500320,15 +503582,15 @@ "binop": null, "updateContext": null }, - "start": 148196, - "end": 148197, + "start": 148710, + "end": 148711, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 31 }, "end": { - "line": 3657, + "line": 3665, "column": 32 } } @@ -500346,15 +503608,15 @@ "binop": null }, "value": "highlightedSilhouetteTransparent", - "start": 148197, - "end": 148229, + "start": 148711, + "end": 148743, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 32 }, "end": { - "line": 3657, + "line": 3665, "column": 64 } } @@ -500373,15 +503635,15 @@ "updateContext": null }, "value": "=", - "start": 148230, - "end": 148231, + "start": 148744, + "end": 148745, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 65 }, "end": { - "line": 3657, + "line": 3665, "column": 66 } } @@ -500401,15 +503663,15 @@ "updateContext": null }, "value": "true", - "start": 148232, - "end": 148236, + "start": 148746, + "end": 148750, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 67 }, "end": { - "line": 3657, + "line": 3665, "column": 71 } } @@ -500427,15 +503689,15 @@ "binop": null, "updateContext": null }, - "start": 148236, - "end": 148237, + "start": 148750, + "end": 148751, "loc": { "start": { - "line": 3657, + "line": 3665, "column": 71 }, "end": { - "line": 3657, + "line": 3665, "column": 72 } } @@ -500452,15 +503714,15 @@ "postfix": false, "binop": null }, - "start": 148254, - "end": 148255, + "start": 148768, + "end": 148769, "loc": { "start": { - "line": 3658, + "line": 3666, "column": 16 }, "end": { - "line": 3658, + "line": 3666, "column": 17 } } @@ -500480,15 +503742,15 @@ "updateContext": null }, "value": "else", - "start": 148256, - "end": 148260, + "start": 148770, + "end": 148774, "loc": { "start": { - "line": 3658, + "line": 3666, "column": 18 }, "end": { - "line": 3658, + "line": 3666, "column": 22 } } @@ -500505,15 +503767,15 @@ "postfix": false, "binop": null }, - "start": 148261, - "end": 148262, + "start": 148775, + "end": 148776, "loc": { "start": { - "line": 3658, + "line": 3666, "column": 23 }, "end": { - "line": 3658, + "line": 3666, "column": 24 } } @@ -500531,15 +503793,15 @@ "binop": null }, "value": "renderFlags", - "start": 148283, - "end": 148294, + "start": 148797, + "end": 148808, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 20 }, "end": { - "line": 3659, + "line": 3667, "column": 31 } } @@ -500557,15 +503819,15 @@ "binop": null, "updateContext": null }, - "start": 148294, - "end": 148295, + "start": 148808, + "end": 148809, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 31 }, "end": { - "line": 3659, + "line": 3667, "column": 32 } } @@ -500583,15 +503845,15 @@ "binop": null }, "value": "highlightedSilhouetteOpaque", - "start": 148295, - "end": 148322, + "start": 148809, + "end": 148836, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 32 }, "end": { - "line": 3659, + "line": 3667, "column": 59 } } @@ -500610,15 +503872,15 @@ "updateContext": null }, "value": "=", - "start": 148323, - "end": 148324, + "start": 148837, + "end": 148838, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 60 }, "end": { - "line": 3659, + "line": 3667, "column": 61 } } @@ -500638,15 +503900,15 @@ "updateContext": null }, "value": "true", - "start": 148325, - "end": 148329, + "start": 148839, + "end": 148843, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 62 }, "end": { - "line": 3659, + "line": 3667, "column": 66 } } @@ -500664,15 +503926,15 @@ "binop": null, "updateContext": null }, - "start": 148329, - "end": 148330, + "start": 148843, + "end": 148844, "loc": { "start": { - "line": 3659, + "line": 3667, "column": 66 }, "end": { - "line": 3659, + "line": 3667, "column": 67 } } @@ -500689,15 +503951,15 @@ "postfix": false, "binop": null }, - "start": 148347, - "end": 148348, + "start": 148861, + "end": 148862, "loc": { "start": { - "line": 3660, + "line": 3668, "column": 16 }, "end": { - "line": 3660, + "line": 3668, "column": 17 } } @@ -500714,15 +503976,15 @@ "postfix": false, "binop": null }, - "start": 148361, - "end": 148362, + "start": 148875, + "end": 148876, "loc": { "start": { - "line": 3661, + "line": 3669, "column": 12 }, "end": { - "line": 3661, + "line": 3669, "column": 13 } } @@ -500742,15 +504004,15 @@ "updateContext": null }, "value": "if", - "start": 148375, - "end": 148377, + "start": 148889, + "end": 148891, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 12 }, "end": { - "line": 3662, + "line": 3670, "column": 14 } } @@ -500767,15 +504029,15 @@ "postfix": false, "binop": null }, - "start": 148378, - "end": 148379, + "start": 148892, + "end": 148893, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 15 }, "end": { - "line": 3662, + "line": 3670, "column": 16 } } @@ -500793,15 +504055,15 @@ "binop": null }, "value": "highlightMaterial", - "start": 148379, - "end": 148396, + "start": 148893, + "end": 148910, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 16 }, "end": { - "line": 3662, + "line": 3670, "column": 33 } } @@ -500819,15 +504081,15 @@ "binop": null, "updateContext": null }, - "start": 148396, - "end": 148397, + "start": 148910, + "end": 148911, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 33 }, "end": { - "line": 3662, + "line": 3670, "column": 34 } } @@ -500845,15 +504107,15 @@ "binop": null }, "value": "edges", - "start": 148397, - "end": 148402, + "start": 148911, + "end": 148916, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 34 }, "end": { - "line": 3662, + "line": 3670, "column": 39 } } @@ -500870,15 +504132,15 @@ "postfix": false, "binop": null }, - "start": 148402, - "end": 148403, + "start": 148916, + "end": 148917, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 39 }, "end": { - "line": 3662, + "line": 3670, "column": 40 } } @@ -500895,15 +504157,15 @@ "postfix": false, "binop": null }, - "start": 148404, - "end": 148405, + "start": 148918, + "end": 148919, "loc": { "start": { - "line": 3662, + "line": 3670, "column": 41 }, "end": { - "line": 3662, + "line": 3670, "column": 42 } } @@ -500923,15 +504185,15 @@ "updateContext": null }, "value": "if", - "start": 148422, - "end": 148424, + "start": 148936, + "end": 148938, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 16 }, "end": { - "line": 3663, + "line": 3671, "column": 18 } } @@ -500948,15 +504210,15 @@ "postfix": false, "binop": null }, - "start": 148425, - "end": 148426, + "start": 148939, + "end": 148940, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 19 }, "end": { - "line": 3663, + "line": 3671, "column": 20 } } @@ -500974,15 +504236,15 @@ "binop": null }, "value": "highlightMaterial", - "start": 148426, - "end": 148443, + "start": 148940, + "end": 148957, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 20 }, "end": { - "line": 3663, + "line": 3671, "column": 37 } } @@ -501000,15 +504262,15 @@ "binop": null, "updateContext": null }, - "start": 148443, - "end": 148444, + "start": 148957, + "end": 148958, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 37 }, "end": { - "line": 3663, + "line": 3671, "column": 38 } } @@ -501026,15 +504288,15 @@ "binop": null }, "value": "edgeAlpha", - "start": 148444, - "end": 148453, + "start": 148958, + "end": 148967, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 38 }, "end": { - "line": 3663, + "line": 3671, "column": 47 } } @@ -501053,15 +504315,15 @@ "updateContext": null }, "value": "<", - "start": 148454, - "end": 148455, + "start": 148968, + "end": 148969, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 48 }, "end": { - "line": 3663, + "line": 3671, "column": 49 } } @@ -501080,15 +504342,15 @@ "updateContext": null }, "value": 1, - "start": 148456, - "end": 148459, + "start": 148970, + "end": 148973, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 50 }, "end": { - "line": 3663, + "line": 3671, "column": 53 } } @@ -501105,15 +504367,15 @@ "postfix": false, "binop": null }, - "start": 148459, - "end": 148460, + "start": 148973, + "end": 148974, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 53 }, "end": { - "line": 3663, + "line": 3671, "column": 54 } } @@ -501130,15 +504392,15 @@ "postfix": false, "binop": null }, - "start": 148461, - "end": 148462, + "start": 148975, + "end": 148976, "loc": { "start": { - "line": 3663, + "line": 3671, "column": 55 }, "end": { - "line": 3663, + "line": 3671, "column": 56 } } @@ -501156,15 +504418,15 @@ "binop": null }, "value": "renderFlags", - "start": 148483, - "end": 148494, + "start": 148997, + "end": 149008, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 20 }, "end": { - "line": 3664, + "line": 3672, "column": 31 } } @@ -501182,15 +504444,15 @@ "binop": null, "updateContext": null }, - "start": 148494, - "end": 148495, + "start": 149008, + "end": 149009, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 31 }, "end": { - "line": 3664, + "line": 3672, "column": 32 } } @@ -501208,15 +504470,15 @@ "binop": null }, "value": "highlightedEdgesTransparent", - "start": 148495, - "end": 148522, + "start": 149009, + "end": 149036, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 32 }, "end": { - "line": 3664, + "line": 3672, "column": 59 } } @@ -501235,15 +504497,15 @@ "updateContext": null }, "value": "=", - "start": 148523, - "end": 148524, + "start": 149037, + "end": 149038, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 60 }, "end": { - "line": 3664, + "line": 3672, "column": 61 } } @@ -501263,15 +504525,15 @@ "updateContext": null }, "value": "true", - "start": 148525, - "end": 148529, + "start": 149039, + "end": 149043, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 62 }, "end": { - "line": 3664, + "line": 3672, "column": 66 } } @@ -501289,15 +504551,15 @@ "binop": null, "updateContext": null }, - "start": 148529, - "end": 148530, + "start": 149043, + "end": 149044, "loc": { "start": { - "line": 3664, + "line": 3672, "column": 66 }, "end": { - "line": 3664, + "line": 3672, "column": 67 } } @@ -501314,15 +504576,15 @@ "postfix": false, "binop": null }, - "start": 148547, - "end": 148548, + "start": 149061, + "end": 149062, "loc": { "start": { - "line": 3665, + "line": 3673, "column": 16 }, "end": { - "line": 3665, + "line": 3673, "column": 17 } } @@ -501342,15 +504604,15 @@ "updateContext": null }, "value": "else", - "start": 148549, - "end": 148553, + "start": 149063, + "end": 149067, "loc": { "start": { - "line": 3665, + "line": 3673, "column": 18 }, "end": { - "line": 3665, + "line": 3673, "column": 22 } } @@ -501367,15 +504629,15 @@ "postfix": false, "binop": null }, - "start": 148554, - "end": 148555, + "start": 149068, + "end": 149069, "loc": { "start": { - "line": 3665, + "line": 3673, "column": 23 }, "end": { - "line": 3665, + "line": 3673, "column": 24 } } @@ -501393,15 +504655,15 @@ "binop": null }, "value": "renderFlags", - "start": 148576, - "end": 148587, + "start": 149090, + "end": 149101, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 20 }, "end": { - "line": 3666, + "line": 3674, "column": 31 } } @@ -501419,15 +504681,15 @@ "binop": null, "updateContext": null }, - "start": 148587, - "end": 148588, + "start": 149101, + "end": 149102, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 31 }, "end": { - "line": 3666, + "line": 3674, "column": 32 } } @@ -501445,15 +504707,15 @@ "binop": null }, "value": "highlightedEdgesOpaque", - "start": 148588, - "end": 148610, + "start": 149102, + "end": 149124, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 32 }, "end": { - "line": 3666, + "line": 3674, "column": 54 } } @@ -501472,15 +504734,15 @@ "updateContext": null }, "value": "=", - "start": 148611, - "end": 148612, + "start": 149125, + "end": 149126, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 55 }, "end": { - "line": 3666, + "line": 3674, "column": 56 } } @@ -501500,15 +504762,15 @@ "updateContext": null }, "value": "true", - "start": 148613, - "end": 148617, + "start": 149127, + "end": 149131, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 57 }, "end": { - "line": 3666, + "line": 3674, "column": 61 } } @@ -501526,15 +504788,15 @@ "binop": null, "updateContext": null }, - "start": 148617, - "end": 148618, + "start": 149131, + "end": 149132, "loc": { "start": { - "line": 3666, + "line": 3674, "column": 61 }, "end": { - "line": 3666, + "line": 3674, "column": 62 } } @@ -501551,15 +504813,15 @@ "postfix": false, "binop": null }, - "start": 148635, - "end": 148636, + "start": 149149, + "end": 149150, "loc": { "start": { - "line": 3667, + "line": 3675, "column": 16 }, "end": { - "line": 3667, + "line": 3675, "column": 17 } } @@ -501576,15 +504838,15 @@ "postfix": false, "binop": null }, - "start": 148649, - "end": 148650, + "start": 149163, + "end": 149164, "loc": { "start": { - "line": 3668, + "line": 3676, "column": 12 }, "end": { - "line": 3668, + "line": 3676, "column": 13 } } @@ -501601,15 +504863,15 @@ "postfix": false, "binop": null }, - "start": 148659, - "end": 148660, + "start": 149173, + "end": 149174, "loc": { "start": { - "line": 3669, + "line": 3677, "column": 8 }, "end": { - "line": 3669, + "line": 3677, "column": 9 } } @@ -501626,15 +504888,15 @@ "postfix": false, "binop": null }, - "start": 148665, - "end": 148666, + "start": 149179, + "end": 149180, "loc": { "start": { - "line": 3670, + "line": 3678, "column": 4 }, "end": { - "line": 3670, + "line": 3678, "column": 5 } } @@ -501642,15 +504904,15 @@ { "type": "CommentLine", "value": " -------------- RENDERING ---------------------------------------------------------------------------------------", - "start": 148672, - "end": 148787, + "start": 149186, + "end": 149301, "loc": { "start": { - "line": 3672, + "line": 3680, "column": 4 }, "end": { - "line": 3672, + "line": 3680, "column": 119 } } @@ -501658,15 +504920,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 148793, - "end": 148808, + "start": 149307, + "end": 149322, "loc": { "start": { - "line": 3674, + "line": 3682, "column": 4 }, "end": { - "line": 3674, + "line": 3682, "column": 19 } } @@ -501684,15 +504946,15 @@ "binop": null }, "value": "drawColorOpaque", - "start": 148813, - "end": 148828, + "start": 149327, + "end": 149342, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 4 }, "end": { - "line": 3675, + "line": 3683, "column": 19 } } @@ -501709,15 +504971,15 @@ "postfix": false, "binop": null }, - "start": 148828, - "end": 148829, + "start": 149342, + "end": 149343, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 19 }, "end": { - "line": 3675, + "line": 3683, "column": 20 } } @@ -501735,15 +504997,15 @@ "binop": null }, "value": "frameCtx", - "start": 148829, - "end": 148837, + "start": 149343, + "end": 149351, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 20 }, "end": { - "line": 3675, + "line": 3683, "column": 28 } } @@ -501760,15 +505022,15 @@ "postfix": false, "binop": null }, - "start": 148837, - "end": 148838, + "start": 149351, + "end": 149352, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 28 }, "end": { - "line": 3675, + "line": 3683, "column": 29 } } @@ -501785,15 +505047,15 @@ "postfix": false, "binop": null }, - "start": 148839, - "end": 148840, + "start": 149353, + "end": 149354, "loc": { "start": { - "line": 3675, + "line": 3683, "column": 30 }, "end": { - "line": 3675, + "line": 3683, "column": 31 } } @@ -501813,15 +505075,15 @@ "updateContext": null }, "value": "const", - "start": 148849, - "end": 148854, + "start": 149363, + "end": 149368, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 8 }, "end": { - "line": 3676, + "line": 3684, "column": 13 } } @@ -501839,15 +505101,15 @@ "binop": null }, "value": "renderFlags", - "start": 148855, - "end": 148866, + "start": 149369, + "end": 149380, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 14 }, "end": { - "line": 3676, + "line": 3684, "column": 25 } } @@ -501866,15 +505128,15 @@ "updateContext": null }, "value": "=", - "start": 148867, - "end": 148868, + "start": 149381, + "end": 149382, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 26 }, "end": { - "line": 3676, + "line": 3684, "column": 27 } } @@ -501894,15 +505156,15 @@ "updateContext": null }, "value": "this", - "start": 148869, - "end": 148873, + "start": 149383, + "end": 149387, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 28 }, "end": { - "line": 3676, + "line": 3684, "column": 32 } } @@ -501920,15 +505182,15 @@ "binop": null, "updateContext": null }, - "start": 148873, - "end": 148874, + "start": 149387, + "end": 149388, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 32 }, "end": { - "line": 3676, + "line": 3684, "column": 33 } } @@ -501946,15 +505208,15 @@ "binop": null }, "value": "renderFlags", - "start": 148874, - "end": 148885, + "start": 149388, + "end": 149399, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 33 }, "end": { - "line": 3676, + "line": 3684, "column": 44 } } @@ -501972,15 +505234,15 @@ "binop": null, "updateContext": null }, - "start": 148885, - "end": 148886, + "start": 149399, + "end": 149400, "loc": { "start": { - "line": 3676, + "line": 3684, "column": 44 }, "end": { - "line": 3676, + "line": 3684, "column": 45 } } @@ -502000,15 +505262,15 @@ "updateContext": null }, "value": "for", - "start": 148895, - "end": 148898, + "start": 149409, + "end": 149412, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 8 }, "end": { - "line": 3677, + "line": 3685, "column": 11 } } @@ -502025,15 +505287,15 @@ "postfix": false, "binop": null }, - "start": 148899, - "end": 148900, + "start": 149413, + "end": 149414, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 12 }, "end": { - "line": 3677, + "line": 3685, "column": 13 } } @@ -502053,15 +505315,15 @@ "updateContext": null }, "value": "let", - "start": 148900, - "end": 148903, + "start": 149414, + "end": 149417, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 13 }, "end": { - "line": 3677, + "line": 3685, "column": 16 } } @@ -502079,15 +505341,15 @@ "binop": null }, "value": "i", - "start": 148904, - "end": 148905, + "start": 149418, + "end": 149419, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 17 }, "end": { - "line": 3677, + "line": 3685, "column": 18 } } @@ -502106,15 +505368,15 @@ "updateContext": null }, "value": "=", - "start": 148906, - "end": 148907, + "start": 149420, + "end": 149421, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 19 }, "end": { - "line": 3677, + "line": 3685, "column": 20 } } @@ -502133,15 +505395,15 @@ "updateContext": null }, "value": 0, - "start": 148908, - "end": 148909, + "start": 149422, + "end": 149423, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 21 }, "end": { - "line": 3677, + "line": 3685, "column": 22 } } @@ -502159,15 +505421,15 @@ "binop": null, "updateContext": null }, - "start": 148909, - "end": 148910, + "start": 149423, + "end": 149424, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 22 }, "end": { - "line": 3677, + "line": 3685, "column": 23 } } @@ -502185,15 +505447,15 @@ "binop": null }, "value": "len", - "start": 148911, - "end": 148914, + "start": 149425, + "end": 149428, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 24 }, "end": { - "line": 3677, + "line": 3685, "column": 27 } } @@ -502212,15 +505474,15 @@ "updateContext": null }, "value": "=", - "start": 148915, - "end": 148916, + "start": 149429, + "end": 149430, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 28 }, "end": { - "line": 3677, + "line": 3685, "column": 29 } } @@ -502238,15 +505500,15 @@ "binop": null }, "value": "renderFlags", - "start": 148917, - "end": 148928, + "start": 149431, + "end": 149442, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 30 }, "end": { - "line": 3677, + "line": 3685, "column": 41 } } @@ -502264,15 +505526,15 @@ "binop": null, "updateContext": null }, - "start": 148928, - "end": 148929, + "start": 149442, + "end": 149443, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 41 }, "end": { - "line": 3677, + "line": 3685, "column": 42 } } @@ -502290,15 +505552,15 @@ "binop": null }, "value": "visibleLayers", - "start": 148929, - "end": 148942, + "start": 149443, + "end": 149456, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 42 }, "end": { - "line": 3677, + "line": 3685, "column": 55 } } @@ -502316,15 +505578,15 @@ "binop": null, "updateContext": null }, - "start": 148942, - "end": 148943, + "start": 149456, + "end": 149457, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 55 }, "end": { - "line": 3677, + "line": 3685, "column": 56 } } @@ -502342,15 +505604,15 @@ "binop": null }, "value": "length", - "start": 148943, - "end": 148949, + "start": 149457, + "end": 149463, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 56 }, "end": { - "line": 3677, + "line": 3685, "column": 62 } } @@ -502368,15 +505630,15 @@ "binop": null, "updateContext": null }, - "start": 148949, - "end": 148950, + "start": 149463, + "end": 149464, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 62 }, "end": { - "line": 3677, + "line": 3685, "column": 63 } } @@ -502394,15 +505656,15 @@ "binop": null }, "value": "i", - "start": 148951, - "end": 148952, + "start": 149465, + "end": 149466, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 64 }, "end": { - "line": 3677, + "line": 3685, "column": 65 } } @@ -502421,15 +505683,15 @@ "updateContext": null }, "value": "<", - "start": 148953, - "end": 148954, + "start": 149467, + "end": 149468, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 66 }, "end": { - "line": 3677, + "line": 3685, "column": 67 } } @@ -502447,15 +505709,15 @@ "binop": null }, "value": "len", - "start": 148955, - "end": 148958, + "start": 149469, + "end": 149472, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 68 }, "end": { - "line": 3677, + "line": 3685, "column": 71 } } @@ -502473,15 +505735,15 @@ "binop": null, "updateContext": null }, - "start": 148958, - "end": 148959, + "start": 149472, + "end": 149473, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 71 }, "end": { - "line": 3677, + "line": 3685, "column": 72 } } @@ -502499,15 +505761,15 @@ "binop": null }, "value": "i", - "start": 148960, - "end": 148961, + "start": 149474, + "end": 149475, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 73 }, "end": { - "line": 3677, + "line": 3685, "column": 74 } } @@ -502525,15 +505787,15 @@ "binop": null }, "value": "++", - "start": 148961, - "end": 148963, + "start": 149475, + "end": 149477, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 74 }, "end": { - "line": 3677, + "line": 3685, "column": 76 } } @@ -502550,15 +505812,15 @@ "postfix": false, "binop": null }, - "start": 148963, - "end": 148964, + "start": 149477, + "end": 149478, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 76 }, "end": { - "line": 3677, + "line": 3685, "column": 77 } } @@ -502575,15 +505837,15 @@ "postfix": false, "binop": null }, - "start": 148965, - "end": 148966, + "start": 149479, + "end": 149480, "loc": { "start": { - "line": 3677, + "line": 3685, "column": 78 }, "end": { - "line": 3677, + "line": 3685, "column": 79 } } @@ -502603,15 +505865,15 @@ "updateContext": null }, "value": "const", - "start": 148979, - "end": 148984, + "start": 149493, + "end": 149498, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 12 }, "end": { - "line": 3678, + "line": 3686, "column": 17 } } @@ -502629,15 +505891,15 @@ "binop": null }, "value": "layerIndex", - "start": 148985, - "end": 148995, + "start": 149499, + "end": 149509, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 18 }, "end": { - "line": 3678, + "line": 3686, "column": 28 } } @@ -502656,15 +505918,15 @@ "updateContext": null }, "value": "=", - "start": 148996, - "end": 148997, + "start": 149510, + "end": 149511, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 29 }, "end": { - "line": 3678, + "line": 3686, "column": 30 } } @@ -502682,15 +505944,15 @@ "binop": null }, "value": "renderFlags", - "start": 148998, - "end": 149009, + "start": 149512, + "end": 149523, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 31 }, "end": { - "line": 3678, + "line": 3686, "column": 42 } } @@ -502708,15 +505970,15 @@ "binop": null, "updateContext": null }, - "start": 149009, - "end": 149010, + "start": 149523, + "end": 149524, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 42 }, "end": { - "line": 3678, + "line": 3686, "column": 43 } } @@ -502734,15 +505996,15 @@ "binop": null }, "value": "visibleLayers", - "start": 149010, - "end": 149023, + "start": 149524, + "end": 149537, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 43 }, "end": { - "line": 3678, + "line": 3686, "column": 56 } } @@ -502760,15 +506022,15 @@ "binop": null, "updateContext": null }, - "start": 149023, - "end": 149024, + "start": 149537, + "end": 149538, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 56 }, "end": { - "line": 3678, + "line": 3686, "column": 57 } } @@ -502786,15 +506048,15 @@ "binop": null }, "value": "i", - "start": 149024, - "end": 149025, + "start": 149538, + "end": 149539, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 57 }, "end": { - "line": 3678, + "line": 3686, "column": 58 } } @@ -502812,15 +506074,15 @@ "binop": null, "updateContext": null }, - "start": 149025, - "end": 149026, + "start": 149539, + "end": 149540, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 58 }, "end": { - "line": 3678, + "line": 3686, "column": 59 } } @@ -502838,15 +506100,15 @@ "binop": null, "updateContext": null }, - "start": 149026, - "end": 149027, + "start": 149540, + "end": 149541, "loc": { "start": { - "line": 3678, + "line": 3686, "column": 59 }, "end": { - "line": 3678, + "line": 3686, "column": 60 } } @@ -502866,15 +506128,15 @@ "updateContext": null }, "value": "this", - "start": 149040, - "end": 149044, + "start": 149554, + "end": 149558, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 12 }, "end": { - "line": 3679, + "line": 3687, "column": 16 } } @@ -502892,15 +506154,15 @@ "binop": null, "updateContext": null }, - "start": 149044, - "end": 149045, + "start": 149558, + "end": 149559, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 16 }, "end": { - "line": 3679, + "line": 3687, "column": 17 } } @@ -502918,15 +506180,15 @@ "binop": null }, "value": "layerList", - "start": 149045, - "end": 149054, + "start": 149559, + "end": 149568, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 17 }, "end": { - "line": 3679, + "line": 3687, "column": 26 } } @@ -502944,15 +506206,15 @@ "binop": null, "updateContext": null }, - "start": 149054, - "end": 149055, + "start": 149568, + "end": 149569, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 26 }, "end": { - "line": 3679, + "line": 3687, "column": 27 } } @@ -502970,15 +506232,15 @@ "binop": null }, "value": "layerIndex", - "start": 149055, - "end": 149065, + "start": 149569, + "end": 149579, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 27 }, "end": { - "line": 3679, + "line": 3687, "column": 37 } } @@ -502996,15 +506258,15 @@ "binop": null, "updateContext": null }, - "start": 149065, - "end": 149066, + "start": 149579, + "end": 149580, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 37 }, "end": { - "line": 3679, + "line": 3687, "column": 38 } } @@ -503022,15 +506284,15 @@ "binop": null, "updateContext": null }, - "start": 149066, - "end": 149067, + "start": 149580, + "end": 149581, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 38 }, "end": { - "line": 3679, + "line": 3687, "column": 39 } } @@ -503048,15 +506310,15 @@ "binop": null }, "value": "drawColorOpaque", - "start": 149067, - "end": 149082, + "start": 149581, + "end": 149596, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 39 }, "end": { - "line": 3679, + "line": 3687, "column": 54 } } @@ -503073,15 +506335,15 @@ "postfix": false, "binop": null }, - "start": 149082, - "end": 149083, + "start": 149596, + "end": 149597, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 54 }, "end": { - "line": 3679, + "line": 3687, "column": 55 } } @@ -503099,15 +506361,15 @@ "binop": null }, "value": "renderFlags", - "start": 149083, - "end": 149094, + "start": 149597, + "end": 149608, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 55 }, "end": { - "line": 3679, + "line": 3687, "column": 66 } } @@ -503125,15 +506387,15 @@ "binop": null, "updateContext": null }, - "start": 149094, - "end": 149095, + "start": 149608, + "end": 149609, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 66 }, "end": { - "line": 3679, + "line": 3687, "column": 67 } } @@ -503151,15 +506413,15 @@ "binop": null }, "value": "frameCtx", - "start": 149096, - "end": 149104, + "start": 149610, + "end": 149618, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 68 }, "end": { - "line": 3679, + "line": 3687, "column": 76 } } @@ -503176,15 +506438,15 @@ "postfix": false, "binop": null }, - "start": 149104, - "end": 149105, + "start": 149618, + "end": 149619, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 76 }, "end": { - "line": 3679, + "line": 3687, "column": 77 } } @@ -503202,15 +506464,15 @@ "binop": null, "updateContext": null }, - "start": 149105, - "end": 149106, + "start": 149619, + "end": 149620, "loc": { "start": { - "line": 3679, + "line": 3687, "column": 77 }, "end": { - "line": 3679, + "line": 3687, "column": 78 } } @@ -503227,15 +506489,15 @@ "postfix": false, "binop": null }, - "start": 149115, - "end": 149116, + "start": 149629, + "end": 149630, "loc": { "start": { - "line": 3680, + "line": 3688, "column": 8 }, "end": { - "line": 3680, + "line": 3688, "column": 9 } } @@ -503252,15 +506514,15 @@ "postfix": false, "binop": null }, - "start": 149121, - "end": 149122, + "start": 149635, + "end": 149636, "loc": { "start": { - "line": 3681, + "line": 3689, "column": 4 }, "end": { - "line": 3681, + "line": 3689, "column": 5 } } @@ -503268,15 +506530,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149128, - "end": 149143, + "start": 149642, + "end": 149657, "loc": { "start": { - "line": 3683, + "line": 3691, "column": 4 }, "end": { - "line": 3683, + "line": 3691, "column": 19 } } @@ -503294,15 +506556,15 @@ "binop": null }, "value": "drawColorTransparent", - "start": 149148, - "end": 149168, + "start": 149662, + "end": 149682, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 4 }, "end": { - "line": 3684, + "line": 3692, "column": 24 } } @@ -503319,15 +506581,15 @@ "postfix": false, "binop": null }, - "start": 149168, - "end": 149169, + "start": 149682, + "end": 149683, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 24 }, "end": { - "line": 3684, + "line": 3692, "column": 25 } } @@ -503345,15 +506607,15 @@ "binop": null }, "value": "frameCtx", - "start": 149169, - "end": 149177, + "start": 149683, + "end": 149691, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 25 }, "end": { - "line": 3684, + "line": 3692, "column": 33 } } @@ -503370,15 +506632,15 @@ "postfix": false, "binop": null }, - "start": 149177, - "end": 149178, + "start": 149691, + "end": 149692, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 33 }, "end": { - "line": 3684, + "line": 3692, "column": 34 } } @@ -503395,15 +506657,15 @@ "postfix": false, "binop": null }, - "start": 149179, - "end": 149180, + "start": 149693, + "end": 149694, "loc": { "start": { - "line": 3684, + "line": 3692, "column": 35 }, "end": { - "line": 3684, + "line": 3692, "column": 36 } } @@ -503423,15 +506685,15 @@ "updateContext": null }, "value": "const", - "start": 149189, - "end": 149194, + "start": 149703, + "end": 149708, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 8 }, "end": { - "line": 3685, + "line": 3693, "column": 13 } } @@ -503449,15 +506711,15 @@ "binop": null }, "value": "renderFlags", - "start": 149195, - "end": 149206, + "start": 149709, + "end": 149720, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 14 }, "end": { - "line": 3685, + "line": 3693, "column": 25 } } @@ -503476,15 +506738,15 @@ "updateContext": null }, "value": "=", - "start": 149207, - "end": 149208, + "start": 149721, + "end": 149722, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 26 }, "end": { - "line": 3685, + "line": 3693, "column": 27 } } @@ -503504,15 +506766,15 @@ "updateContext": null }, "value": "this", - "start": 149209, - "end": 149213, + "start": 149723, + "end": 149727, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 28 }, "end": { - "line": 3685, + "line": 3693, "column": 32 } } @@ -503530,15 +506792,15 @@ "binop": null, "updateContext": null }, - "start": 149213, - "end": 149214, + "start": 149727, + "end": 149728, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 32 }, "end": { - "line": 3685, + "line": 3693, "column": 33 } } @@ -503556,15 +506818,15 @@ "binop": null }, "value": "renderFlags", - "start": 149214, - "end": 149225, + "start": 149728, + "end": 149739, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 33 }, "end": { - "line": 3685, + "line": 3693, "column": 44 } } @@ -503582,15 +506844,15 @@ "binop": null, "updateContext": null }, - "start": 149225, - "end": 149226, + "start": 149739, + "end": 149740, "loc": { "start": { - "line": 3685, + "line": 3693, "column": 44 }, "end": { - "line": 3685, + "line": 3693, "column": 45 } } @@ -503610,15 +506872,15 @@ "updateContext": null }, "value": "for", - "start": 149235, - "end": 149238, + "start": 149749, + "end": 149752, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 8 }, "end": { - "line": 3686, + "line": 3694, "column": 11 } } @@ -503635,15 +506897,15 @@ "postfix": false, "binop": null }, - "start": 149239, - "end": 149240, + "start": 149753, + "end": 149754, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 12 }, "end": { - "line": 3686, + "line": 3694, "column": 13 } } @@ -503663,15 +506925,15 @@ "updateContext": null }, "value": "let", - "start": 149240, - "end": 149243, + "start": 149754, + "end": 149757, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 13 }, "end": { - "line": 3686, + "line": 3694, "column": 16 } } @@ -503689,15 +506951,15 @@ "binop": null }, "value": "i", - "start": 149244, - "end": 149245, + "start": 149758, + "end": 149759, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 17 }, "end": { - "line": 3686, + "line": 3694, "column": 18 } } @@ -503716,15 +506978,15 @@ "updateContext": null }, "value": "=", - "start": 149246, - "end": 149247, + "start": 149760, + "end": 149761, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 19 }, "end": { - "line": 3686, + "line": 3694, "column": 20 } } @@ -503743,15 +507005,15 @@ "updateContext": null }, "value": 0, - "start": 149248, - "end": 149249, + "start": 149762, + "end": 149763, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 21 }, "end": { - "line": 3686, + "line": 3694, "column": 22 } } @@ -503769,15 +507031,15 @@ "binop": null, "updateContext": null }, - "start": 149249, - "end": 149250, + "start": 149763, + "end": 149764, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 22 }, "end": { - "line": 3686, + "line": 3694, "column": 23 } } @@ -503795,15 +507057,15 @@ "binop": null }, "value": "len", - "start": 149251, - "end": 149254, + "start": 149765, + "end": 149768, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 24 }, "end": { - "line": 3686, + "line": 3694, "column": 27 } } @@ -503822,15 +507084,15 @@ "updateContext": null }, "value": "=", - "start": 149255, - "end": 149256, + "start": 149769, + "end": 149770, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 28 }, "end": { - "line": 3686, + "line": 3694, "column": 29 } } @@ -503848,15 +507110,15 @@ "binop": null }, "value": "renderFlags", - "start": 149257, - "end": 149268, + "start": 149771, + "end": 149782, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 30 }, "end": { - "line": 3686, + "line": 3694, "column": 41 } } @@ -503874,15 +507136,15 @@ "binop": null, "updateContext": null }, - "start": 149268, - "end": 149269, + "start": 149782, + "end": 149783, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 41 }, "end": { - "line": 3686, + "line": 3694, "column": 42 } } @@ -503900,15 +507162,15 @@ "binop": null }, "value": "visibleLayers", - "start": 149269, - "end": 149282, + "start": 149783, + "end": 149796, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 42 }, "end": { - "line": 3686, + "line": 3694, "column": 55 } } @@ -503926,15 +507188,15 @@ "binop": null, "updateContext": null }, - "start": 149282, - "end": 149283, + "start": 149796, + "end": 149797, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 55 }, "end": { - "line": 3686, + "line": 3694, "column": 56 } } @@ -503952,15 +507214,15 @@ "binop": null }, "value": "length", - "start": 149283, - "end": 149289, + "start": 149797, + "end": 149803, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 56 }, "end": { - "line": 3686, + "line": 3694, "column": 62 } } @@ -503978,15 +507240,15 @@ "binop": null, "updateContext": null }, - "start": 149289, - "end": 149290, + "start": 149803, + "end": 149804, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 62 }, "end": { - "line": 3686, + "line": 3694, "column": 63 } } @@ -504004,15 +507266,15 @@ "binop": null }, "value": "i", - "start": 149291, - "end": 149292, + "start": 149805, + "end": 149806, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 64 }, "end": { - "line": 3686, + "line": 3694, "column": 65 } } @@ -504031,15 +507293,15 @@ "updateContext": null }, "value": "<", - "start": 149293, - "end": 149294, + "start": 149807, + "end": 149808, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 66 }, "end": { - "line": 3686, + "line": 3694, "column": 67 } } @@ -504057,15 +507319,15 @@ "binop": null }, "value": "len", - "start": 149295, - "end": 149298, + "start": 149809, + "end": 149812, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 68 }, "end": { - "line": 3686, + "line": 3694, "column": 71 } } @@ -504083,15 +507345,15 @@ "binop": null, "updateContext": null }, - "start": 149298, - "end": 149299, + "start": 149812, + "end": 149813, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 71 }, "end": { - "line": 3686, + "line": 3694, "column": 72 } } @@ -504109,15 +507371,15 @@ "binop": null }, "value": "i", - "start": 149300, - "end": 149301, + "start": 149814, + "end": 149815, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 73 }, "end": { - "line": 3686, + "line": 3694, "column": 74 } } @@ -504135,15 +507397,15 @@ "binop": null }, "value": "++", - "start": 149301, - "end": 149303, + "start": 149815, + "end": 149817, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 74 }, "end": { - "line": 3686, + "line": 3694, "column": 76 } } @@ -504160,15 +507422,15 @@ "postfix": false, "binop": null }, - "start": 149303, - "end": 149304, + "start": 149817, + "end": 149818, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 76 }, "end": { - "line": 3686, + "line": 3694, "column": 77 } } @@ -504185,15 +507447,15 @@ "postfix": false, "binop": null }, - "start": 149305, - "end": 149306, + "start": 149819, + "end": 149820, "loc": { "start": { - "line": 3686, + "line": 3694, "column": 78 }, "end": { - "line": 3686, + "line": 3694, "column": 79 } } @@ -504213,15 +507475,15 @@ "updateContext": null }, "value": "const", - "start": 149319, - "end": 149324, + "start": 149833, + "end": 149838, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 12 }, "end": { - "line": 3687, + "line": 3695, "column": 17 } } @@ -504239,15 +507501,15 @@ "binop": null }, "value": "layerIndex", - "start": 149325, - "end": 149335, + "start": 149839, + "end": 149849, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 18 }, "end": { - "line": 3687, + "line": 3695, "column": 28 } } @@ -504266,15 +507528,15 @@ "updateContext": null }, "value": "=", - "start": 149336, - "end": 149337, + "start": 149850, + "end": 149851, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 29 }, "end": { - "line": 3687, + "line": 3695, "column": 30 } } @@ -504292,15 +507554,15 @@ "binop": null }, "value": "renderFlags", - "start": 149338, - "end": 149349, + "start": 149852, + "end": 149863, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 31 }, "end": { - "line": 3687, + "line": 3695, "column": 42 } } @@ -504318,15 +507580,15 @@ "binop": null, "updateContext": null }, - "start": 149349, - "end": 149350, + "start": 149863, + "end": 149864, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 42 }, "end": { - "line": 3687, + "line": 3695, "column": 43 } } @@ -504344,15 +507606,15 @@ "binop": null }, "value": "visibleLayers", - "start": 149350, - "end": 149363, + "start": 149864, + "end": 149877, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 43 }, "end": { - "line": 3687, + "line": 3695, "column": 56 } } @@ -504370,15 +507632,15 @@ "binop": null, "updateContext": null }, - "start": 149363, - "end": 149364, + "start": 149877, + "end": 149878, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 56 }, "end": { - "line": 3687, + "line": 3695, "column": 57 } } @@ -504396,15 +507658,15 @@ "binop": null }, "value": "i", - "start": 149364, - "end": 149365, + "start": 149878, + "end": 149879, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 57 }, "end": { - "line": 3687, + "line": 3695, "column": 58 } } @@ -504422,15 +507684,15 @@ "binop": null, "updateContext": null }, - "start": 149365, - "end": 149366, + "start": 149879, + "end": 149880, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 58 }, "end": { - "line": 3687, + "line": 3695, "column": 59 } } @@ -504448,15 +507710,15 @@ "binop": null, "updateContext": null }, - "start": 149366, - "end": 149367, + "start": 149880, + "end": 149881, "loc": { "start": { - "line": 3687, + "line": 3695, "column": 59 }, "end": { - "line": 3687, + "line": 3695, "column": 60 } } @@ -504476,15 +507738,15 @@ "updateContext": null }, "value": "this", - "start": 149380, - "end": 149384, + "start": 149894, + "end": 149898, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 12 }, "end": { - "line": 3688, + "line": 3696, "column": 16 } } @@ -504502,15 +507764,15 @@ "binop": null, "updateContext": null }, - "start": 149384, - "end": 149385, + "start": 149898, + "end": 149899, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 16 }, "end": { - "line": 3688, + "line": 3696, "column": 17 } } @@ -504528,15 +507790,15 @@ "binop": null }, "value": "layerList", - "start": 149385, - "end": 149394, + "start": 149899, + "end": 149908, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 17 }, "end": { - "line": 3688, + "line": 3696, "column": 26 } } @@ -504554,15 +507816,15 @@ "binop": null, "updateContext": null }, - "start": 149394, - "end": 149395, + "start": 149908, + "end": 149909, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 26 }, "end": { - "line": 3688, + "line": 3696, "column": 27 } } @@ -504580,15 +507842,15 @@ "binop": null }, "value": "layerIndex", - "start": 149395, - "end": 149405, + "start": 149909, + "end": 149919, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 27 }, "end": { - "line": 3688, + "line": 3696, "column": 37 } } @@ -504606,15 +507868,15 @@ "binop": null, "updateContext": null }, - "start": 149405, - "end": 149406, + "start": 149919, + "end": 149920, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 37 }, "end": { - "line": 3688, + "line": 3696, "column": 38 } } @@ -504632,15 +507894,15 @@ "binop": null, "updateContext": null }, - "start": 149406, - "end": 149407, + "start": 149920, + "end": 149921, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 38 }, "end": { - "line": 3688, + "line": 3696, "column": 39 } } @@ -504658,15 +507920,15 @@ "binop": null }, "value": "drawColorTransparent", - "start": 149407, - "end": 149427, + "start": 149921, + "end": 149941, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 39 }, "end": { - "line": 3688, + "line": 3696, "column": 59 } } @@ -504683,15 +507945,15 @@ "postfix": false, "binop": null }, - "start": 149427, - "end": 149428, + "start": 149941, + "end": 149942, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 59 }, "end": { - "line": 3688, + "line": 3696, "column": 60 } } @@ -504709,15 +507971,15 @@ "binop": null }, "value": "renderFlags", - "start": 149428, - "end": 149439, + "start": 149942, + "end": 149953, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 60 }, "end": { - "line": 3688, + "line": 3696, "column": 71 } } @@ -504735,15 +507997,15 @@ "binop": null, "updateContext": null }, - "start": 149439, - "end": 149440, + "start": 149953, + "end": 149954, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 71 }, "end": { - "line": 3688, + "line": 3696, "column": 72 } } @@ -504761,15 +508023,15 @@ "binop": null }, "value": "frameCtx", - "start": 149441, - "end": 149449, + "start": 149955, + "end": 149963, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 73 }, "end": { - "line": 3688, + "line": 3696, "column": 81 } } @@ -504786,15 +508048,15 @@ "postfix": false, "binop": null }, - "start": 149449, - "end": 149450, + "start": 149963, + "end": 149964, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 81 }, "end": { - "line": 3688, + "line": 3696, "column": 82 } } @@ -504812,15 +508074,15 @@ "binop": null, "updateContext": null }, - "start": 149450, - "end": 149451, + "start": 149964, + "end": 149965, "loc": { "start": { - "line": 3688, + "line": 3696, "column": 82 }, "end": { - "line": 3688, + "line": 3696, "column": 83 } } @@ -504837,15 +508099,15 @@ "postfix": false, "binop": null }, - "start": 149460, - "end": 149461, + "start": 149974, + "end": 149975, "loc": { "start": { - "line": 3689, + "line": 3697, "column": 8 }, "end": { - "line": 3689, + "line": 3697, "column": 9 } } @@ -504862,15 +508124,15 @@ "postfix": false, "binop": null }, - "start": 149466, - "end": 149467, + "start": 149980, + "end": 149981, "loc": { "start": { - "line": 3690, + "line": 3698, "column": 4 }, "end": { - "line": 3690, + "line": 3698, "column": 5 } } @@ -504878,15 +508140,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149473, - "end": 149488, + "start": 149987, + "end": 150002, "loc": { "start": { - "line": 3692, + "line": 3700, "column": 4 }, "end": { - "line": 3692, + "line": 3700, "column": 19 } } @@ -504904,15 +508166,15 @@ "binop": null }, "value": "drawDepth", - "start": 149493, - "end": 149502, + "start": 150007, + "end": 150016, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 4 }, "end": { - "line": 3693, + "line": 3701, "column": 13 } } @@ -504929,15 +508191,15 @@ "postfix": false, "binop": null }, - "start": 149502, - "end": 149503, + "start": 150016, + "end": 150017, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 13 }, "end": { - "line": 3693, + "line": 3701, "column": 14 } } @@ -504955,15 +508217,15 @@ "binop": null }, "value": "frameCtx", - "start": 149503, - "end": 149511, + "start": 150017, + "end": 150025, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 14 }, "end": { - "line": 3693, + "line": 3701, "column": 22 } } @@ -504980,15 +508242,15 @@ "postfix": false, "binop": null }, - "start": 149511, - "end": 149512, + "start": 150025, + "end": 150026, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 22 }, "end": { - "line": 3693, + "line": 3701, "column": 23 } } @@ -505005,15 +508267,15 @@ "postfix": false, "binop": null }, - "start": 149513, - "end": 149514, + "start": 150027, + "end": 150028, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 24 }, "end": { - "line": 3693, + "line": 3701, "column": 25 } } @@ -505021,15 +508283,15 @@ { "type": "CommentLine", "value": " Dedicated to SAO because it skips transparent objects", - "start": 149515, - "end": 149571, + "start": 150029, + "end": 150085, "loc": { "start": { - "line": 3693, + "line": 3701, "column": 26 }, "end": { - "line": 3693, + "line": 3701, "column": 82 } } @@ -505049,15 +508311,15 @@ "updateContext": null }, "value": "const", - "start": 149580, - "end": 149585, + "start": 150094, + "end": 150099, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 8 }, "end": { - "line": 3694, + "line": 3702, "column": 13 } } @@ -505075,15 +508337,15 @@ "binop": null }, "value": "renderFlags", - "start": 149586, - "end": 149597, + "start": 150100, + "end": 150111, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 14 }, "end": { - "line": 3694, + "line": 3702, "column": 25 } } @@ -505102,15 +508364,15 @@ "updateContext": null }, "value": "=", - "start": 149598, - "end": 149599, + "start": 150112, + "end": 150113, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 26 }, "end": { - "line": 3694, + "line": 3702, "column": 27 } } @@ -505130,15 +508392,15 @@ "updateContext": null }, "value": "this", - "start": 149600, - "end": 149604, + "start": 150114, + "end": 150118, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 28 }, "end": { - "line": 3694, + "line": 3702, "column": 32 } } @@ -505156,15 +508418,15 @@ "binop": null, "updateContext": null }, - "start": 149604, - "end": 149605, + "start": 150118, + "end": 150119, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 32 }, "end": { - "line": 3694, + "line": 3702, "column": 33 } } @@ -505182,15 +508444,15 @@ "binop": null }, "value": "renderFlags", - "start": 149605, - "end": 149616, + "start": 150119, + "end": 150130, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 33 }, "end": { - "line": 3694, + "line": 3702, "column": 44 } } @@ -505208,15 +508470,15 @@ "binop": null, "updateContext": null }, - "start": 149616, - "end": 149617, + "start": 150130, + "end": 150131, "loc": { "start": { - "line": 3694, + "line": 3702, "column": 44 }, "end": { - "line": 3694, + "line": 3702, "column": 45 } } @@ -505236,15 +508498,15 @@ "updateContext": null }, "value": "for", - "start": 149626, - "end": 149629, + "start": 150140, + "end": 150143, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 8 }, "end": { - "line": 3695, + "line": 3703, "column": 11 } } @@ -505261,15 +508523,15 @@ "postfix": false, "binop": null }, - "start": 149630, - "end": 149631, + "start": 150144, + "end": 150145, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 12 }, "end": { - "line": 3695, + "line": 3703, "column": 13 } } @@ -505289,15 +508551,15 @@ "updateContext": null }, "value": "let", - "start": 149631, - "end": 149634, + "start": 150145, + "end": 150148, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 13 }, "end": { - "line": 3695, + "line": 3703, "column": 16 } } @@ -505315,15 +508577,15 @@ "binop": null }, "value": "i", - "start": 149635, - "end": 149636, + "start": 150149, + "end": 150150, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 17 }, "end": { - "line": 3695, + "line": 3703, "column": 18 } } @@ -505342,15 +508604,15 @@ "updateContext": null }, "value": "=", - "start": 149637, - "end": 149638, + "start": 150151, + "end": 150152, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 19 }, "end": { - "line": 3695, + "line": 3703, "column": 20 } } @@ -505369,15 +508631,15 @@ "updateContext": null }, "value": 0, - "start": 149639, - "end": 149640, + "start": 150153, + "end": 150154, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 21 }, "end": { - "line": 3695, + "line": 3703, "column": 22 } } @@ -505395,15 +508657,15 @@ "binop": null, "updateContext": null }, - "start": 149640, - "end": 149641, + "start": 150154, + "end": 150155, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 22 }, "end": { - "line": 3695, + "line": 3703, "column": 23 } } @@ -505421,15 +508683,15 @@ "binop": null }, "value": "len", - "start": 149642, - "end": 149645, + "start": 150156, + "end": 150159, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 24 }, "end": { - "line": 3695, + "line": 3703, "column": 27 } } @@ -505448,15 +508710,15 @@ "updateContext": null }, "value": "=", - "start": 149646, - "end": 149647, + "start": 150160, + "end": 150161, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 28 }, "end": { - "line": 3695, + "line": 3703, "column": 29 } } @@ -505474,15 +508736,15 @@ "binop": null }, "value": "renderFlags", - "start": 149648, - "end": 149659, + "start": 150162, + "end": 150173, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 30 }, "end": { - "line": 3695, + "line": 3703, "column": 41 } } @@ -505500,15 +508762,15 @@ "binop": null, "updateContext": null }, - "start": 149659, - "end": 149660, + "start": 150173, + "end": 150174, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 41 }, "end": { - "line": 3695, + "line": 3703, "column": 42 } } @@ -505526,15 +508788,15 @@ "binop": null }, "value": "visibleLayers", - "start": 149660, - "end": 149673, + "start": 150174, + "end": 150187, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 42 }, "end": { - "line": 3695, + "line": 3703, "column": 55 } } @@ -505552,15 +508814,15 @@ "binop": null, "updateContext": null }, - "start": 149673, - "end": 149674, + "start": 150187, + "end": 150188, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 55 }, "end": { - "line": 3695, + "line": 3703, "column": 56 } } @@ -505578,15 +508840,15 @@ "binop": null }, "value": "length", - "start": 149674, - "end": 149680, + "start": 150188, + "end": 150194, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 56 }, "end": { - "line": 3695, + "line": 3703, "column": 62 } } @@ -505604,15 +508866,15 @@ "binop": null, "updateContext": null }, - "start": 149680, - "end": 149681, + "start": 150194, + "end": 150195, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 62 }, "end": { - "line": 3695, + "line": 3703, "column": 63 } } @@ -505630,15 +508892,15 @@ "binop": null }, "value": "i", - "start": 149682, - "end": 149683, + "start": 150196, + "end": 150197, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 64 }, "end": { - "line": 3695, + "line": 3703, "column": 65 } } @@ -505657,15 +508919,15 @@ "updateContext": null }, "value": "<", - "start": 149684, - "end": 149685, + "start": 150198, + "end": 150199, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 66 }, "end": { - "line": 3695, + "line": 3703, "column": 67 } } @@ -505683,15 +508945,15 @@ "binop": null }, "value": "len", - "start": 149686, - "end": 149689, + "start": 150200, + "end": 150203, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 68 }, "end": { - "line": 3695, + "line": 3703, "column": 71 } } @@ -505709,15 +508971,15 @@ "binop": null, "updateContext": null }, - "start": 149689, - "end": 149690, + "start": 150203, + "end": 150204, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 71 }, "end": { - "line": 3695, + "line": 3703, "column": 72 } } @@ -505735,15 +508997,15 @@ "binop": null }, "value": "i", - "start": 149691, - "end": 149692, + "start": 150205, + "end": 150206, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 73 }, "end": { - "line": 3695, + "line": 3703, "column": 74 } } @@ -505761,15 +509023,15 @@ "binop": null }, "value": "++", - "start": 149692, - "end": 149694, + "start": 150206, + "end": 150208, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 74 }, "end": { - "line": 3695, + "line": 3703, "column": 76 } } @@ -505786,15 +509048,15 @@ "postfix": false, "binop": null }, - "start": 149694, - "end": 149695, + "start": 150208, + "end": 150209, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 76 }, "end": { - "line": 3695, + "line": 3703, "column": 77 } } @@ -505811,15 +509073,15 @@ "postfix": false, "binop": null }, - "start": 149696, - "end": 149697, + "start": 150210, + "end": 150211, "loc": { "start": { - "line": 3695, + "line": 3703, "column": 78 }, "end": { - "line": 3695, + "line": 3703, "column": 79 } } @@ -505839,15 +509101,15 @@ "updateContext": null }, "value": "const", - "start": 149710, - "end": 149715, + "start": 150224, + "end": 150229, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 12 }, "end": { - "line": 3696, + "line": 3704, "column": 17 } } @@ -505865,15 +509127,15 @@ "binop": null }, "value": "layerIndex", - "start": 149716, - "end": 149726, + "start": 150230, + "end": 150240, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 18 }, "end": { - "line": 3696, + "line": 3704, "column": 28 } } @@ -505892,15 +509154,15 @@ "updateContext": null }, "value": "=", - "start": 149727, - "end": 149728, + "start": 150241, + "end": 150242, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 29 }, "end": { - "line": 3696, + "line": 3704, "column": 30 } } @@ -505918,15 +509180,15 @@ "binop": null }, "value": "renderFlags", - "start": 149729, - "end": 149740, + "start": 150243, + "end": 150254, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 31 }, "end": { - "line": 3696, + "line": 3704, "column": 42 } } @@ -505944,15 +509206,15 @@ "binop": null, "updateContext": null }, - "start": 149740, - "end": 149741, + "start": 150254, + "end": 150255, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 42 }, "end": { - "line": 3696, + "line": 3704, "column": 43 } } @@ -505970,15 +509232,15 @@ "binop": null }, "value": "visibleLayers", - "start": 149741, - "end": 149754, + "start": 150255, + "end": 150268, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 43 }, "end": { - "line": 3696, + "line": 3704, "column": 56 } } @@ -505996,15 +509258,15 @@ "binop": null, "updateContext": null }, - "start": 149754, - "end": 149755, + "start": 150268, + "end": 150269, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 56 }, "end": { - "line": 3696, + "line": 3704, "column": 57 } } @@ -506022,15 +509284,15 @@ "binop": null }, "value": "i", - "start": 149755, - "end": 149756, + "start": 150269, + "end": 150270, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 57 }, "end": { - "line": 3696, + "line": 3704, "column": 58 } } @@ -506048,15 +509310,15 @@ "binop": null, "updateContext": null }, - "start": 149756, - "end": 149757, + "start": 150270, + "end": 150271, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 58 }, "end": { - "line": 3696, + "line": 3704, "column": 59 } } @@ -506074,15 +509336,15 @@ "binop": null, "updateContext": null }, - "start": 149757, - "end": 149758, + "start": 150271, + "end": 150272, "loc": { "start": { - "line": 3696, + "line": 3704, "column": 59 }, "end": { - "line": 3696, + "line": 3704, "column": 60 } } @@ -506102,15 +509364,15 @@ "updateContext": null }, "value": "this", - "start": 149771, - "end": 149775, + "start": 150285, + "end": 150289, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 12 }, "end": { - "line": 3697, + "line": 3705, "column": 16 } } @@ -506128,15 +509390,15 @@ "binop": null, "updateContext": null }, - "start": 149775, - "end": 149776, + "start": 150289, + "end": 150290, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 16 }, "end": { - "line": 3697, + "line": 3705, "column": 17 } } @@ -506154,15 +509416,15 @@ "binop": null }, "value": "layerList", - "start": 149776, - "end": 149785, + "start": 150290, + "end": 150299, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 17 }, "end": { - "line": 3697, + "line": 3705, "column": 26 } } @@ -506180,15 +509442,15 @@ "binop": null, "updateContext": null }, - "start": 149785, - "end": 149786, + "start": 150299, + "end": 150300, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 26 }, "end": { - "line": 3697, + "line": 3705, "column": 27 } } @@ -506206,15 +509468,15 @@ "binop": null }, "value": "layerIndex", - "start": 149786, - "end": 149796, + "start": 150300, + "end": 150310, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 27 }, "end": { - "line": 3697, + "line": 3705, "column": 37 } } @@ -506232,15 +509494,15 @@ "binop": null, "updateContext": null }, - "start": 149796, - "end": 149797, + "start": 150310, + "end": 150311, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 37 }, "end": { - "line": 3697, + "line": 3705, "column": 38 } } @@ -506258,15 +509520,15 @@ "binop": null, "updateContext": null }, - "start": 149797, - "end": 149798, + "start": 150311, + "end": 150312, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 38 }, "end": { - "line": 3697, + "line": 3705, "column": 39 } } @@ -506284,15 +509546,15 @@ "binop": null }, "value": "drawDepth", - "start": 149798, - "end": 149807, + "start": 150312, + "end": 150321, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 39 }, "end": { - "line": 3697, + "line": 3705, "column": 48 } } @@ -506309,15 +509571,15 @@ "postfix": false, "binop": null }, - "start": 149807, - "end": 149808, + "start": 150321, + "end": 150322, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 48 }, "end": { - "line": 3697, + "line": 3705, "column": 49 } } @@ -506335,15 +509597,15 @@ "binop": null }, "value": "renderFlags", - "start": 149808, - "end": 149819, + "start": 150322, + "end": 150333, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 49 }, "end": { - "line": 3697, + "line": 3705, "column": 60 } } @@ -506361,15 +509623,15 @@ "binop": null, "updateContext": null }, - "start": 149819, - "end": 149820, + "start": 150333, + "end": 150334, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 60 }, "end": { - "line": 3697, + "line": 3705, "column": 61 } } @@ -506387,15 +509649,15 @@ "binop": null }, "value": "frameCtx", - "start": 149821, - "end": 149829, + "start": 150335, + "end": 150343, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 62 }, "end": { - "line": 3697, + "line": 3705, "column": 70 } } @@ -506412,15 +509674,15 @@ "postfix": false, "binop": null }, - "start": 149829, - "end": 149830, + "start": 150343, + "end": 150344, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 70 }, "end": { - "line": 3697, + "line": 3705, "column": 71 } } @@ -506438,15 +509700,15 @@ "binop": null, "updateContext": null }, - "start": 149830, - "end": 149831, + "start": 150344, + "end": 150345, "loc": { "start": { - "line": 3697, + "line": 3705, "column": 71 }, "end": { - "line": 3697, + "line": 3705, "column": 72 } } @@ -506463,15 +509725,15 @@ "postfix": false, "binop": null }, - "start": 149840, - "end": 149841, + "start": 150354, + "end": 150355, "loc": { "start": { - "line": 3698, + "line": 3706, "column": 8 }, "end": { - "line": 3698, + "line": 3706, "column": 9 } } @@ -506488,15 +509750,15 @@ "postfix": false, "binop": null }, - "start": 149846, - "end": 149847, + "start": 150360, + "end": 150361, "loc": { "start": { - "line": 3699, + "line": 3707, "column": 4 }, "end": { - "line": 3699, + "line": 3707, "column": 5 } } @@ -506504,15 +509766,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 149853, - "end": 149868, + "start": 150367, + "end": 150382, "loc": { "start": { - "line": 3701, + "line": 3709, "column": 4 }, "end": { - "line": 3701, + "line": 3709, "column": 19 } } @@ -506530,15 +509792,15 @@ "binop": null }, "value": "drawNormals", - "start": 149873, - "end": 149884, + "start": 150387, + "end": 150398, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 4 }, "end": { - "line": 3702, + "line": 3710, "column": 15 } } @@ -506555,15 +509817,15 @@ "postfix": false, "binop": null }, - "start": 149884, - "end": 149885, + "start": 150398, + "end": 150399, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 15 }, "end": { - "line": 3702, + "line": 3710, "column": 16 } } @@ -506581,15 +509843,15 @@ "binop": null }, "value": "frameCtx", - "start": 149885, - "end": 149893, + "start": 150399, + "end": 150407, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 16 }, "end": { - "line": 3702, + "line": 3710, "column": 24 } } @@ -506606,15 +509868,15 @@ "postfix": false, "binop": null }, - "start": 149893, - "end": 149894, + "start": 150407, + "end": 150408, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 24 }, "end": { - "line": 3702, + "line": 3710, "column": 25 } } @@ -506631,15 +509893,15 @@ "postfix": false, "binop": null }, - "start": 149895, - "end": 149896, + "start": 150409, + "end": 150410, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 26 }, "end": { - "line": 3702, + "line": 3710, "column": 27 } } @@ -506647,15 +509909,15 @@ { "type": "CommentLine", "value": " Dedicated to SAO because it skips transparent objects", - "start": 149897, - "end": 149953, + "start": 150411, + "end": 150467, "loc": { "start": { - "line": 3702, + "line": 3710, "column": 28 }, "end": { - "line": 3702, + "line": 3710, "column": 84 } } @@ -506675,15 +509937,15 @@ "updateContext": null }, "value": "const", - "start": 149962, - "end": 149967, + "start": 150476, + "end": 150481, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 8 }, "end": { - "line": 3703, + "line": 3711, "column": 13 } } @@ -506701,15 +509963,15 @@ "binop": null }, "value": "renderFlags", - "start": 149968, - "end": 149979, + "start": 150482, + "end": 150493, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 14 }, "end": { - "line": 3703, + "line": 3711, "column": 25 } } @@ -506728,15 +509990,15 @@ "updateContext": null }, "value": "=", - "start": 149980, - "end": 149981, + "start": 150494, + "end": 150495, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 26 }, "end": { - "line": 3703, + "line": 3711, "column": 27 } } @@ -506756,15 +510018,15 @@ "updateContext": null }, "value": "this", - "start": 149982, - "end": 149986, + "start": 150496, + "end": 150500, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 28 }, "end": { - "line": 3703, + "line": 3711, "column": 32 } } @@ -506782,15 +510044,15 @@ "binop": null, "updateContext": null }, - "start": 149986, - "end": 149987, + "start": 150500, + "end": 150501, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 32 }, "end": { - "line": 3703, + "line": 3711, "column": 33 } } @@ -506808,15 +510070,15 @@ "binop": null }, "value": "renderFlags", - "start": 149987, - "end": 149998, + "start": 150501, + "end": 150512, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 33 }, "end": { - "line": 3703, + "line": 3711, "column": 44 } } @@ -506834,15 +510096,15 @@ "binop": null, "updateContext": null }, - "start": 149998, - "end": 149999, + "start": 150512, + "end": 150513, "loc": { "start": { - "line": 3703, + "line": 3711, "column": 44 }, "end": { - "line": 3703, + "line": 3711, "column": 45 } } @@ -506862,15 +510124,15 @@ "updateContext": null }, "value": "for", - "start": 150008, - "end": 150011, + "start": 150522, + "end": 150525, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 8 }, "end": { - "line": 3704, + "line": 3712, "column": 11 } } @@ -506887,15 +510149,15 @@ "postfix": false, "binop": null }, - "start": 150012, - "end": 150013, + "start": 150526, + "end": 150527, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 12 }, "end": { - "line": 3704, + "line": 3712, "column": 13 } } @@ -506915,15 +510177,15 @@ "updateContext": null }, "value": "let", - "start": 150013, - "end": 150016, + "start": 150527, + "end": 150530, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 13 }, "end": { - "line": 3704, + "line": 3712, "column": 16 } } @@ -506941,15 +510203,15 @@ "binop": null }, "value": "i", - "start": 150017, - "end": 150018, + "start": 150531, + "end": 150532, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 17 }, "end": { - "line": 3704, + "line": 3712, "column": 18 } } @@ -506968,15 +510230,15 @@ "updateContext": null }, "value": "=", - "start": 150019, - "end": 150020, + "start": 150533, + "end": 150534, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 19 }, "end": { - "line": 3704, + "line": 3712, "column": 20 } } @@ -506995,15 +510257,15 @@ "updateContext": null }, "value": 0, - "start": 150021, - "end": 150022, + "start": 150535, + "end": 150536, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 21 }, "end": { - "line": 3704, + "line": 3712, "column": 22 } } @@ -507021,15 +510283,15 @@ "binop": null, "updateContext": null }, - "start": 150022, - "end": 150023, + "start": 150536, + "end": 150537, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 22 }, "end": { - "line": 3704, + "line": 3712, "column": 23 } } @@ -507047,15 +510309,15 @@ "binop": null }, "value": "len", - "start": 150024, - "end": 150027, + "start": 150538, + "end": 150541, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 24 }, "end": { - "line": 3704, + "line": 3712, "column": 27 } } @@ -507074,15 +510336,15 @@ "updateContext": null }, "value": "=", - "start": 150028, - "end": 150029, + "start": 150542, + "end": 150543, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 28 }, "end": { - "line": 3704, + "line": 3712, "column": 29 } } @@ -507100,15 +510362,15 @@ "binop": null }, "value": "renderFlags", - "start": 150030, - "end": 150041, + "start": 150544, + "end": 150555, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 30 }, "end": { - "line": 3704, + "line": 3712, "column": 41 } } @@ -507126,15 +510388,15 @@ "binop": null, "updateContext": null }, - "start": 150041, - "end": 150042, + "start": 150555, + "end": 150556, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 41 }, "end": { - "line": 3704, + "line": 3712, "column": 42 } } @@ -507152,15 +510414,15 @@ "binop": null }, "value": "visibleLayers", - "start": 150042, - "end": 150055, + "start": 150556, + "end": 150569, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 42 }, "end": { - "line": 3704, + "line": 3712, "column": 55 } } @@ -507178,15 +510440,15 @@ "binop": null, "updateContext": null }, - "start": 150055, - "end": 150056, + "start": 150569, + "end": 150570, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 55 }, "end": { - "line": 3704, + "line": 3712, "column": 56 } } @@ -507204,15 +510466,15 @@ "binop": null }, "value": "length", - "start": 150056, - "end": 150062, + "start": 150570, + "end": 150576, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 56 }, "end": { - "line": 3704, + "line": 3712, "column": 62 } } @@ -507230,15 +510492,15 @@ "binop": null, "updateContext": null }, - "start": 150062, - "end": 150063, + "start": 150576, + "end": 150577, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 62 }, "end": { - "line": 3704, + "line": 3712, "column": 63 } } @@ -507256,15 +510518,15 @@ "binop": null }, "value": "i", - "start": 150064, - "end": 150065, + "start": 150578, + "end": 150579, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 64 }, "end": { - "line": 3704, + "line": 3712, "column": 65 } } @@ -507283,15 +510545,15 @@ "updateContext": null }, "value": "<", - "start": 150066, - "end": 150067, + "start": 150580, + "end": 150581, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 66 }, "end": { - "line": 3704, + "line": 3712, "column": 67 } } @@ -507309,15 +510571,15 @@ "binop": null }, "value": "len", - "start": 150068, - "end": 150071, + "start": 150582, + "end": 150585, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 68 }, "end": { - "line": 3704, + "line": 3712, "column": 71 } } @@ -507335,15 +510597,15 @@ "binop": null, "updateContext": null }, - "start": 150071, - "end": 150072, + "start": 150585, + "end": 150586, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 71 }, "end": { - "line": 3704, + "line": 3712, "column": 72 } } @@ -507361,15 +510623,15 @@ "binop": null }, "value": "i", - "start": 150073, - "end": 150074, + "start": 150587, + "end": 150588, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 73 }, "end": { - "line": 3704, + "line": 3712, "column": 74 } } @@ -507387,15 +510649,15 @@ "binop": null }, "value": "++", - "start": 150074, - "end": 150076, + "start": 150588, + "end": 150590, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 74 }, "end": { - "line": 3704, + "line": 3712, "column": 76 } } @@ -507412,15 +510674,15 @@ "postfix": false, "binop": null }, - "start": 150076, - "end": 150077, + "start": 150590, + "end": 150591, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 76 }, "end": { - "line": 3704, + "line": 3712, "column": 77 } } @@ -507437,15 +510699,15 @@ "postfix": false, "binop": null }, - "start": 150078, - "end": 150079, + "start": 150592, + "end": 150593, "loc": { "start": { - "line": 3704, + "line": 3712, "column": 78 }, "end": { - "line": 3704, + "line": 3712, "column": 79 } } @@ -507465,15 +510727,15 @@ "updateContext": null }, "value": "const", - "start": 150092, - "end": 150097, + "start": 150606, + "end": 150611, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 12 }, "end": { - "line": 3705, + "line": 3713, "column": 17 } } @@ -507491,15 +510753,15 @@ "binop": null }, "value": "layerIndex", - "start": 150098, - "end": 150108, + "start": 150612, + "end": 150622, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 18 }, "end": { - "line": 3705, + "line": 3713, "column": 28 } } @@ -507518,15 +510780,15 @@ "updateContext": null }, "value": "=", - "start": 150109, - "end": 150110, + "start": 150623, + "end": 150624, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 29 }, "end": { - "line": 3705, + "line": 3713, "column": 30 } } @@ -507544,15 +510806,15 @@ "binop": null }, "value": "renderFlags", - "start": 150111, - "end": 150122, + "start": 150625, + "end": 150636, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 31 }, "end": { - "line": 3705, + "line": 3713, "column": 42 } } @@ -507570,15 +510832,15 @@ "binop": null, "updateContext": null }, - "start": 150122, - "end": 150123, + "start": 150636, + "end": 150637, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 42 }, "end": { - "line": 3705, + "line": 3713, "column": 43 } } @@ -507596,15 +510858,15 @@ "binop": null }, "value": "visibleLayers", - "start": 150123, - "end": 150136, + "start": 150637, + "end": 150650, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 43 }, "end": { - "line": 3705, + "line": 3713, "column": 56 } } @@ -507622,15 +510884,15 @@ "binop": null, "updateContext": null }, - "start": 150136, - "end": 150137, + "start": 150650, + "end": 150651, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 56 }, "end": { - "line": 3705, + "line": 3713, "column": 57 } } @@ -507648,15 +510910,15 @@ "binop": null }, "value": "i", - "start": 150137, - "end": 150138, + "start": 150651, + "end": 150652, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 57 }, "end": { - "line": 3705, + "line": 3713, "column": 58 } } @@ -507674,15 +510936,15 @@ "binop": null, "updateContext": null }, - "start": 150138, - "end": 150139, + "start": 150652, + "end": 150653, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 58 }, "end": { - "line": 3705, + "line": 3713, "column": 59 } } @@ -507700,15 +510962,15 @@ "binop": null, "updateContext": null }, - "start": 150139, - "end": 150140, + "start": 150653, + "end": 150654, "loc": { "start": { - "line": 3705, + "line": 3713, "column": 59 }, "end": { - "line": 3705, + "line": 3713, "column": 60 } } @@ -507728,15 +510990,15 @@ "updateContext": null }, "value": "this", - "start": 150153, - "end": 150157, + "start": 150667, + "end": 150671, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 12 }, "end": { - "line": 3706, + "line": 3714, "column": 16 } } @@ -507754,15 +511016,15 @@ "binop": null, "updateContext": null }, - "start": 150157, - "end": 150158, + "start": 150671, + "end": 150672, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 16 }, "end": { - "line": 3706, + "line": 3714, "column": 17 } } @@ -507780,15 +511042,15 @@ "binop": null }, "value": "layerList", - "start": 150158, - "end": 150167, + "start": 150672, + "end": 150681, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 17 }, "end": { - "line": 3706, + "line": 3714, "column": 26 } } @@ -507806,15 +511068,15 @@ "binop": null, "updateContext": null }, - "start": 150167, - "end": 150168, + "start": 150681, + "end": 150682, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 26 }, "end": { - "line": 3706, + "line": 3714, "column": 27 } } @@ -507832,15 +511094,15 @@ "binop": null }, "value": "layerIndex", - "start": 150168, - "end": 150178, + "start": 150682, + "end": 150692, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 27 }, "end": { - "line": 3706, + "line": 3714, "column": 37 } } @@ -507858,15 +511120,15 @@ "binop": null, "updateContext": null }, - "start": 150178, - "end": 150179, + "start": 150692, + "end": 150693, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 37 }, "end": { - "line": 3706, + "line": 3714, "column": 38 } } @@ -507884,15 +511146,15 @@ "binop": null, "updateContext": null }, - "start": 150179, - "end": 150180, + "start": 150693, + "end": 150694, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 38 }, "end": { - "line": 3706, + "line": 3714, "column": 39 } } @@ -507910,15 +511172,15 @@ "binop": null }, "value": "drawNormals", - "start": 150180, - "end": 150191, + "start": 150694, + "end": 150705, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 39 }, "end": { - "line": 3706, + "line": 3714, "column": 50 } } @@ -507935,15 +511197,15 @@ "postfix": false, "binop": null }, - "start": 150191, - "end": 150192, + "start": 150705, + "end": 150706, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 50 }, "end": { - "line": 3706, + "line": 3714, "column": 51 } } @@ -507961,15 +511223,15 @@ "binop": null }, "value": "renderFlags", - "start": 150192, - "end": 150203, + "start": 150706, + "end": 150717, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 51 }, "end": { - "line": 3706, + "line": 3714, "column": 62 } } @@ -507987,15 +511249,15 @@ "binop": null, "updateContext": null }, - "start": 150203, - "end": 150204, + "start": 150717, + "end": 150718, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 62 }, "end": { - "line": 3706, + "line": 3714, "column": 63 } } @@ -508013,15 +511275,15 @@ "binop": null }, "value": "frameCtx", - "start": 150205, - "end": 150213, + "start": 150719, + "end": 150727, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 64 }, "end": { - "line": 3706, + "line": 3714, "column": 72 } } @@ -508038,15 +511300,15 @@ "postfix": false, "binop": null }, - "start": 150213, - "end": 150214, + "start": 150727, + "end": 150728, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 72 }, "end": { - "line": 3706, + "line": 3714, "column": 73 } } @@ -508064,15 +511326,15 @@ "binop": null, "updateContext": null }, - "start": 150214, - "end": 150215, + "start": 150728, + "end": 150729, "loc": { "start": { - "line": 3706, + "line": 3714, "column": 73 }, "end": { - "line": 3706, + "line": 3714, "column": 74 } } @@ -508089,15 +511351,15 @@ "postfix": false, "binop": null }, - "start": 150224, - "end": 150225, + "start": 150738, + "end": 150739, "loc": { "start": { - "line": 3707, + "line": 3715, "column": 8 }, "end": { - "line": 3707, + "line": 3715, "column": 9 } } @@ -508114,15 +511376,15 @@ "postfix": false, "binop": null }, - "start": 150230, - "end": 150231, + "start": 150744, + "end": 150745, "loc": { "start": { - "line": 3708, + "line": 3716, "column": 4 }, "end": { - "line": 3708, + "line": 3716, "column": 5 } } @@ -508130,15 +511392,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150237, - "end": 150252, + "start": 150751, + "end": 150766, "loc": { "start": { - "line": 3710, + "line": 3718, "column": 4 }, "end": { - "line": 3710, + "line": 3718, "column": 19 } } @@ -508156,15 +511418,15 @@ "binop": null }, "value": "drawSilhouetteXRayed", - "start": 150257, - "end": 150277, + "start": 150771, + "end": 150791, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 4 }, "end": { - "line": 3711, + "line": 3719, "column": 24 } } @@ -508181,15 +511443,15 @@ "postfix": false, "binop": null }, - "start": 150277, - "end": 150278, + "start": 150791, + "end": 150792, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 24 }, "end": { - "line": 3711, + "line": 3719, "column": 25 } } @@ -508207,15 +511469,15 @@ "binop": null }, "value": "frameCtx", - "start": 150278, - "end": 150286, + "start": 150792, + "end": 150800, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 25 }, "end": { - "line": 3711, + "line": 3719, "column": 33 } } @@ -508232,15 +511494,15 @@ "postfix": false, "binop": null }, - "start": 150286, - "end": 150287, + "start": 150800, + "end": 150801, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 33 }, "end": { - "line": 3711, + "line": 3719, "column": 34 } } @@ -508257,15 +511519,15 @@ "postfix": false, "binop": null }, - "start": 150288, - "end": 150289, + "start": 150802, + "end": 150803, "loc": { "start": { - "line": 3711, + "line": 3719, "column": 35 }, "end": { - "line": 3711, + "line": 3719, "column": 36 } } @@ -508285,15 +511547,15 @@ "updateContext": null }, "value": "const", - "start": 150298, - "end": 150303, + "start": 150812, + "end": 150817, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 8 }, "end": { - "line": 3712, + "line": 3720, "column": 13 } } @@ -508311,15 +511573,15 @@ "binop": null }, "value": "renderFlags", - "start": 150304, - "end": 150315, + "start": 150818, + "end": 150829, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 14 }, "end": { - "line": 3712, + "line": 3720, "column": 25 } } @@ -508338,15 +511600,15 @@ "updateContext": null }, "value": "=", - "start": 150316, - "end": 150317, + "start": 150830, + "end": 150831, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 26 }, "end": { - "line": 3712, + "line": 3720, "column": 27 } } @@ -508366,15 +511628,15 @@ "updateContext": null }, "value": "this", - "start": 150318, - "end": 150322, + "start": 150832, + "end": 150836, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 28 }, "end": { - "line": 3712, + "line": 3720, "column": 32 } } @@ -508392,15 +511654,15 @@ "binop": null, "updateContext": null }, - "start": 150322, - "end": 150323, + "start": 150836, + "end": 150837, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 32 }, "end": { - "line": 3712, + "line": 3720, "column": 33 } } @@ -508418,15 +511680,15 @@ "binop": null }, "value": "renderFlags", - "start": 150323, - "end": 150334, + "start": 150837, + "end": 150848, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 33 }, "end": { - "line": 3712, + "line": 3720, "column": 44 } } @@ -508444,15 +511706,15 @@ "binop": null, "updateContext": null }, - "start": 150334, - "end": 150335, + "start": 150848, + "end": 150849, "loc": { "start": { - "line": 3712, + "line": 3720, "column": 44 }, "end": { - "line": 3712, + "line": 3720, "column": 45 } } @@ -508472,15 +511734,15 @@ "updateContext": null }, "value": "for", - "start": 150344, - "end": 150347, + "start": 150858, + "end": 150861, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 8 }, "end": { - "line": 3713, + "line": 3721, "column": 11 } } @@ -508497,15 +511759,15 @@ "postfix": false, "binop": null }, - "start": 150348, - "end": 150349, + "start": 150862, + "end": 150863, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 12 }, "end": { - "line": 3713, + "line": 3721, "column": 13 } } @@ -508525,15 +511787,15 @@ "updateContext": null }, "value": "let", - "start": 150349, - "end": 150352, + "start": 150863, + "end": 150866, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 13 }, "end": { - "line": 3713, + "line": 3721, "column": 16 } } @@ -508551,15 +511813,15 @@ "binop": null }, "value": "i", - "start": 150353, - "end": 150354, + "start": 150867, + "end": 150868, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 17 }, "end": { - "line": 3713, + "line": 3721, "column": 18 } } @@ -508578,15 +511840,15 @@ "updateContext": null }, "value": "=", - "start": 150355, - "end": 150356, + "start": 150869, + "end": 150870, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 19 }, "end": { - "line": 3713, + "line": 3721, "column": 20 } } @@ -508605,15 +511867,15 @@ "updateContext": null }, "value": 0, - "start": 150357, - "end": 150358, + "start": 150871, + "end": 150872, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 21 }, "end": { - "line": 3713, + "line": 3721, "column": 22 } } @@ -508631,15 +511893,15 @@ "binop": null, "updateContext": null }, - "start": 150358, - "end": 150359, + "start": 150872, + "end": 150873, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 22 }, "end": { - "line": 3713, + "line": 3721, "column": 23 } } @@ -508657,15 +511919,15 @@ "binop": null }, "value": "len", - "start": 150360, - "end": 150363, + "start": 150874, + "end": 150877, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 24 }, "end": { - "line": 3713, + "line": 3721, "column": 27 } } @@ -508684,15 +511946,15 @@ "updateContext": null }, "value": "=", - "start": 150364, - "end": 150365, + "start": 150878, + "end": 150879, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 28 }, "end": { - "line": 3713, + "line": 3721, "column": 29 } } @@ -508710,15 +511972,15 @@ "binop": null }, "value": "renderFlags", - "start": 150366, - "end": 150377, + "start": 150880, + "end": 150891, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 30 }, "end": { - "line": 3713, + "line": 3721, "column": 41 } } @@ -508736,15 +511998,15 @@ "binop": null, "updateContext": null }, - "start": 150377, - "end": 150378, + "start": 150891, + "end": 150892, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 41 }, "end": { - "line": 3713, + "line": 3721, "column": 42 } } @@ -508762,15 +512024,15 @@ "binop": null }, "value": "visibleLayers", - "start": 150378, - "end": 150391, + "start": 150892, + "end": 150905, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 42 }, "end": { - "line": 3713, + "line": 3721, "column": 55 } } @@ -508788,15 +512050,15 @@ "binop": null, "updateContext": null }, - "start": 150391, - "end": 150392, + "start": 150905, + "end": 150906, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 55 }, "end": { - "line": 3713, + "line": 3721, "column": 56 } } @@ -508814,15 +512076,15 @@ "binop": null }, "value": "length", - "start": 150392, - "end": 150398, + "start": 150906, + "end": 150912, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 56 }, "end": { - "line": 3713, + "line": 3721, "column": 62 } } @@ -508840,15 +512102,15 @@ "binop": null, "updateContext": null }, - "start": 150398, - "end": 150399, + "start": 150912, + "end": 150913, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 62 }, "end": { - "line": 3713, + "line": 3721, "column": 63 } } @@ -508866,15 +512128,15 @@ "binop": null }, "value": "i", - "start": 150400, - "end": 150401, + "start": 150914, + "end": 150915, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 64 }, "end": { - "line": 3713, + "line": 3721, "column": 65 } } @@ -508893,15 +512155,15 @@ "updateContext": null }, "value": "<", - "start": 150402, - "end": 150403, + "start": 150916, + "end": 150917, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 66 }, "end": { - "line": 3713, + "line": 3721, "column": 67 } } @@ -508919,15 +512181,15 @@ "binop": null }, "value": "len", - "start": 150404, - "end": 150407, + "start": 150918, + "end": 150921, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 68 }, "end": { - "line": 3713, + "line": 3721, "column": 71 } } @@ -508945,15 +512207,15 @@ "binop": null, "updateContext": null }, - "start": 150407, - "end": 150408, + "start": 150921, + "end": 150922, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 71 }, "end": { - "line": 3713, + "line": 3721, "column": 72 } } @@ -508971,15 +512233,15 @@ "binop": null }, "value": "i", - "start": 150409, - "end": 150410, + "start": 150923, + "end": 150924, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 73 }, "end": { - "line": 3713, + "line": 3721, "column": 74 } } @@ -508997,15 +512259,15 @@ "binop": null }, "value": "++", - "start": 150410, - "end": 150412, + "start": 150924, + "end": 150926, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 74 }, "end": { - "line": 3713, + "line": 3721, "column": 76 } } @@ -509022,15 +512284,15 @@ "postfix": false, "binop": null }, - "start": 150412, - "end": 150413, + "start": 150926, + "end": 150927, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 76 }, "end": { - "line": 3713, + "line": 3721, "column": 77 } } @@ -509047,15 +512309,15 @@ "postfix": false, "binop": null }, - "start": 150414, - "end": 150415, + "start": 150928, + "end": 150929, "loc": { "start": { - "line": 3713, + "line": 3721, "column": 78 }, "end": { - "line": 3713, + "line": 3721, "column": 79 } } @@ -509075,15 +512337,15 @@ "updateContext": null }, "value": "const", - "start": 150428, - "end": 150433, + "start": 150942, + "end": 150947, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 12 }, "end": { - "line": 3714, + "line": 3722, "column": 17 } } @@ -509101,15 +512363,15 @@ "binop": null }, "value": "layerIndex", - "start": 150434, - "end": 150444, + "start": 150948, + "end": 150958, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 18 }, "end": { - "line": 3714, + "line": 3722, "column": 28 } } @@ -509128,15 +512390,15 @@ "updateContext": null }, "value": "=", - "start": 150445, - "end": 150446, + "start": 150959, + "end": 150960, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 29 }, "end": { - "line": 3714, + "line": 3722, "column": 30 } } @@ -509154,15 +512416,15 @@ "binop": null }, "value": "renderFlags", - "start": 150447, - "end": 150458, + "start": 150961, + "end": 150972, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 31 }, "end": { - "line": 3714, + "line": 3722, "column": 42 } } @@ -509180,15 +512442,15 @@ "binop": null, "updateContext": null }, - "start": 150458, - "end": 150459, + "start": 150972, + "end": 150973, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 42 }, "end": { - "line": 3714, + "line": 3722, "column": 43 } } @@ -509206,15 +512468,15 @@ "binop": null }, "value": "visibleLayers", - "start": 150459, - "end": 150472, + "start": 150973, + "end": 150986, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 43 }, "end": { - "line": 3714, + "line": 3722, "column": 56 } } @@ -509232,15 +512494,15 @@ "binop": null, "updateContext": null }, - "start": 150472, - "end": 150473, + "start": 150986, + "end": 150987, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 56 }, "end": { - "line": 3714, + "line": 3722, "column": 57 } } @@ -509258,15 +512520,15 @@ "binop": null }, "value": "i", - "start": 150473, - "end": 150474, + "start": 150987, + "end": 150988, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 57 }, "end": { - "line": 3714, + "line": 3722, "column": 58 } } @@ -509284,15 +512546,15 @@ "binop": null, "updateContext": null }, - "start": 150474, - "end": 150475, + "start": 150988, + "end": 150989, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 58 }, "end": { - "line": 3714, + "line": 3722, "column": 59 } } @@ -509310,15 +512572,15 @@ "binop": null, "updateContext": null }, - "start": 150475, - "end": 150476, + "start": 150989, + "end": 150990, "loc": { "start": { - "line": 3714, + "line": 3722, "column": 59 }, "end": { - "line": 3714, + "line": 3722, "column": 60 } } @@ -509338,15 +512600,15 @@ "updateContext": null }, "value": "this", - "start": 150489, - "end": 150493, + "start": 151003, + "end": 151007, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 12 }, "end": { - "line": 3715, + "line": 3723, "column": 16 } } @@ -509364,15 +512626,15 @@ "binop": null, "updateContext": null }, - "start": 150493, - "end": 150494, + "start": 151007, + "end": 151008, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 16 }, "end": { - "line": 3715, + "line": 3723, "column": 17 } } @@ -509390,15 +512652,15 @@ "binop": null }, "value": "layerList", - "start": 150494, - "end": 150503, + "start": 151008, + "end": 151017, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 17 }, "end": { - "line": 3715, + "line": 3723, "column": 26 } } @@ -509416,15 +512678,15 @@ "binop": null, "updateContext": null }, - "start": 150503, - "end": 150504, + "start": 151017, + "end": 151018, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 26 }, "end": { - "line": 3715, + "line": 3723, "column": 27 } } @@ -509442,15 +512704,15 @@ "binop": null }, "value": "layerIndex", - "start": 150504, - "end": 150514, + "start": 151018, + "end": 151028, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 27 }, "end": { - "line": 3715, + "line": 3723, "column": 37 } } @@ -509468,15 +512730,15 @@ "binop": null, "updateContext": null }, - "start": 150514, - "end": 150515, + "start": 151028, + "end": 151029, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 37 }, "end": { - "line": 3715, + "line": 3723, "column": 38 } } @@ -509494,15 +512756,15 @@ "binop": null, "updateContext": null }, - "start": 150515, - "end": 150516, + "start": 151029, + "end": 151030, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 38 }, "end": { - "line": 3715, + "line": 3723, "column": 39 } } @@ -509520,15 +512782,15 @@ "binop": null }, "value": "drawSilhouetteXRayed", - "start": 150516, - "end": 150536, + "start": 151030, + "end": 151050, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 39 }, "end": { - "line": 3715, + "line": 3723, "column": 59 } } @@ -509545,15 +512807,15 @@ "postfix": false, "binop": null }, - "start": 150536, - "end": 150537, + "start": 151050, + "end": 151051, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 59 }, "end": { - "line": 3715, + "line": 3723, "column": 60 } } @@ -509571,15 +512833,15 @@ "binop": null }, "value": "renderFlags", - "start": 150537, - "end": 150548, + "start": 151051, + "end": 151062, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 60 }, "end": { - "line": 3715, + "line": 3723, "column": 71 } } @@ -509597,15 +512859,15 @@ "binop": null, "updateContext": null }, - "start": 150548, - "end": 150549, + "start": 151062, + "end": 151063, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 71 }, "end": { - "line": 3715, + "line": 3723, "column": 72 } } @@ -509623,15 +512885,15 @@ "binop": null }, "value": "frameCtx", - "start": 150550, - "end": 150558, + "start": 151064, + "end": 151072, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 73 }, "end": { - "line": 3715, + "line": 3723, "column": 81 } } @@ -509648,15 +512910,15 @@ "postfix": false, "binop": null }, - "start": 150558, - "end": 150559, + "start": 151072, + "end": 151073, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 81 }, "end": { - "line": 3715, + "line": 3723, "column": 82 } } @@ -509674,15 +512936,15 @@ "binop": null, "updateContext": null }, - "start": 150559, - "end": 150560, + "start": 151073, + "end": 151074, "loc": { "start": { - "line": 3715, + "line": 3723, "column": 82 }, "end": { - "line": 3715, + "line": 3723, "column": 83 } } @@ -509699,15 +512961,15 @@ "postfix": false, "binop": null }, - "start": 150569, - "end": 150570, + "start": 151083, + "end": 151084, "loc": { "start": { - "line": 3716, + "line": 3724, "column": 8 }, "end": { - "line": 3716, + "line": 3724, "column": 9 } } @@ -509724,15 +512986,15 @@ "postfix": false, "binop": null }, - "start": 150575, - "end": 150576, + "start": 151089, + "end": 151090, "loc": { "start": { - "line": 3717, + "line": 3725, "column": 4 }, "end": { - "line": 3717, + "line": 3725, "column": 5 } } @@ -509740,15 +513002,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150582, - "end": 150597, + "start": 151096, + "end": 151111, "loc": { "start": { - "line": 3719, + "line": 3727, "column": 4 }, "end": { - "line": 3719, + "line": 3727, "column": 19 } } @@ -509766,15 +513028,15 @@ "binop": null }, "value": "drawSilhouetteHighlighted", - "start": 150602, - "end": 150627, + "start": 151116, + "end": 151141, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 4 }, "end": { - "line": 3720, + "line": 3728, "column": 29 } } @@ -509791,15 +513053,15 @@ "postfix": false, "binop": null }, - "start": 150627, - "end": 150628, + "start": 151141, + "end": 151142, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 29 }, "end": { - "line": 3720, + "line": 3728, "column": 30 } } @@ -509817,15 +513079,15 @@ "binop": null }, "value": "frameCtx", - "start": 150628, - "end": 150636, + "start": 151142, + "end": 151150, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 30 }, "end": { - "line": 3720, + "line": 3728, "column": 38 } } @@ -509842,15 +513104,15 @@ "postfix": false, "binop": null }, - "start": 150636, - "end": 150637, + "start": 151150, + "end": 151151, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 38 }, "end": { - "line": 3720, + "line": 3728, "column": 39 } } @@ -509867,15 +513129,15 @@ "postfix": false, "binop": null }, - "start": 150638, - "end": 150639, + "start": 151152, + "end": 151153, "loc": { "start": { - "line": 3720, + "line": 3728, "column": 40 }, "end": { - "line": 3720, + "line": 3728, "column": 41 } } @@ -509895,15 +513157,15 @@ "updateContext": null }, "value": "const", - "start": 150648, - "end": 150653, + "start": 151162, + "end": 151167, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 8 }, "end": { - "line": 3721, + "line": 3729, "column": 13 } } @@ -509921,15 +513183,15 @@ "binop": null }, "value": "renderFlags", - "start": 150654, - "end": 150665, + "start": 151168, + "end": 151179, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 14 }, "end": { - "line": 3721, + "line": 3729, "column": 25 } } @@ -509948,15 +513210,15 @@ "updateContext": null }, "value": "=", - "start": 150666, - "end": 150667, + "start": 151180, + "end": 151181, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 26 }, "end": { - "line": 3721, + "line": 3729, "column": 27 } } @@ -509976,15 +513238,15 @@ "updateContext": null }, "value": "this", - "start": 150668, - "end": 150672, + "start": 151182, + "end": 151186, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 28 }, "end": { - "line": 3721, + "line": 3729, "column": 32 } } @@ -510002,15 +513264,15 @@ "binop": null, "updateContext": null }, - "start": 150672, - "end": 150673, + "start": 151186, + "end": 151187, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 32 }, "end": { - "line": 3721, + "line": 3729, "column": 33 } } @@ -510028,15 +513290,15 @@ "binop": null }, "value": "renderFlags", - "start": 150673, - "end": 150684, + "start": 151187, + "end": 151198, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 33 }, "end": { - "line": 3721, + "line": 3729, "column": 44 } } @@ -510054,15 +513316,15 @@ "binop": null, "updateContext": null }, - "start": 150684, - "end": 150685, + "start": 151198, + "end": 151199, "loc": { "start": { - "line": 3721, + "line": 3729, "column": 44 }, "end": { - "line": 3721, + "line": 3729, "column": 45 } } @@ -510082,15 +513344,15 @@ "updateContext": null }, "value": "for", - "start": 150694, - "end": 150697, + "start": 151208, + "end": 151211, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 8 }, "end": { - "line": 3722, + "line": 3730, "column": 11 } } @@ -510107,15 +513369,15 @@ "postfix": false, "binop": null }, - "start": 150698, - "end": 150699, + "start": 151212, + "end": 151213, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 12 }, "end": { - "line": 3722, + "line": 3730, "column": 13 } } @@ -510135,15 +513397,15 @@ "updateContext": null }, "value": "let", - "start": 150699, - "end": 150702, + "start": 151213, + "end": 151216, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 13 }, "end": { - "line": 3722, + "line": 3730, "column": 16 } } @@ -510161,15 +513423,15 @@ "binop": null }, "value": "i", - "start": 150703, - "end": 150704, + "start": 151217, + "end": 151218, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 17 }, "end": { - "line": 3722, + "line": 3730, "column": 18 } } @@ -510188,15 +513450,15 @@ "updateContext": null }, "value": "=", - "start": 150705, - "end": 150706, + "start": 151219, + "end": 151220, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 19 }, "end": { - "line": 3722, + "line": 3730, "column": 20 } } @@ -510215,15 +513477,15 @@ "updateContext": null }, "value": 0, - "start": 150707, - "end": 150708, + "start": 151221, + "end": 151222, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 21 }, "end": { - "line": 3722, + "line": 3730, "column": 22 } } @@ -510241,15 +513503,15 @@ "binop": null, "updateContext": null }, - "start": 150708, - "end": 150709, + "start": 151222, + "end": 151223, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 22 }, "end": { - "line": 3722, + "line": 3730, "column": 23 } } @@ -510267,15 +513529,15 @@ "binop": null }, "value": "len", - "start": 150710, - "end": 150713, + "start": 151224, + "end": 151227, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 24 }, "end": { - "line": 3722, + "line": 3730, "column": 27 } } @@ -510294,15 +513556,15 @@ "updateContext": null }, "value": "=", - "start": 150714, - "end": 150715, + "start": 151228, + "end": 151229, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 28 }, "end": { - "line": 3722, + "line": 3730, "column": 29 } } @@ -510320,15 +513582,15 @@ "binop": null }, "value": "renderFlags", - "start": 150716, - "end": 150727, + "start": 151230, + "end": 151241, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 30 }, "end": { - "line": 3722, + "line": 3730, "column": 41 } } @@ -510346,15 +513608,15 @@ "binop": null, "updateContext": null }, - "start": 150727, - "end": 150728, + "start": 151241, + "end": 151242, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 41 }, "end": { - "line": 3722, + "line": 3730, "column": 42 } } @@ -510372,15 +513634,15 @@ "binop": null }, "value": "visibleLayers", - "start": 150728, - "end": 150741, + "start": 151242, + "end": 151255, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 42 }, "end": { - "line": 3722, + "line": 3730, "column": 55 } } @@ -510398,15 +513660,15 @@ "binop": null, "updateContext": null }, - "start": 150741, - "end": 150742, + "start": 151255, + "end": 151256, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 55 }, "end": { - "line": 3722, + "line": 3730, "column": 56 } } @@ -510424,15 +513686,15 @@ "binop": null }, "value": "length", - "start": 150742, - "end": 150748, + "start": 151256, + "end": 151262, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 56 }, "end": { - "line": 3722, + "line": 3730, "column": 62 } } @@ -510450,15 +513712,15 @@ "binop": null, "updateContext": null }, - "start": 150748, - "end": 150749, + "start": 151262, + "end": 151263, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 62 }, "end": { - "line": 3722, + "line": 3730, "column": 63 } } @@ -510476,15 +513738,15 @@ "binop": null }, "value": "i", - "start": 150750, - "end": 150751, + "start": 151264, + "end": 151265, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 64 }, "end": { - "line": 3722, + "line": 3730, "column": 65 } } @@ -510503,15 +513765,15 @@ "updateContext": null }, "value": "<", - "start": 150752, - "end": 150753, + "start": 151266, + "end": 151267, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 66 }, "end": { - "line": 3722, + "line": 3730, "column": 67 } } @@ -510529,15 +513791,15 @@ "binop": null }, "value": "len", - "start": 150754, - "end": 150757, + "start": 151268, + "end": 151271, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 68 }, "end": { - "line": 3722, + "line": 3730, "column": 71 } } @@ -510555,15 +513817,15 @@ "binop": null, "updateContext": null }, - "start": 150757, - "end": 150758, + "start": 151271, + "end": 151272, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 71 }, "end": { - "line": 3722, + "line": 3730, "column": 72 } } @@ -510581,15 +513843,15 @@ "binop": null }, "value": "i", - "start": 150759, - "end": 150760, + "start": 151273, + "end": 151274, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 73 }, "end": { - "line": 3722, + "line": 3730, "column": 74 } } @@ -510607,15 +513869,15 @@ "binop": null }, "value": "++", - "start": 150760, - "end": 150762, + "start": 151274, + "end": 151276, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 74 }, "end": { - "line": 3722, + "line": 3730, "column": 76 } } @@ -510632,15 +513894,15 @@ "postfix": false, "binop": null }, - "start": 150762, - "end": 150763, + "start": 151276, + "end": 151277, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 76 }, "end": { - "line": 3722, + "line": 3730, "column": 77 } } @@ -510657,15 +513919,15 @@ "postfix": false, "binop": null }, - "start": 150764, - "end": 150765, + "start": 151278, + "end": 151279, "loc": { "start": { - "line": 3722, + "line": 3730, "column": 78 }, "end": { - "line": 3722, + "line": 3730, "column": 79 } } @@ -510685,15 +513947,15 @@ "updateContext": null }, "value": "const", - "start": 150778, - "end": 150783, + "start": 151292, + "end": 151297, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 12 }, "end": { - "line": 3723, + "line": 3731, "column": 17 } } @@ -510711,15 +513973,15 @@ "binop": null }, "value": "layerIndex", - "start": 150784, - "end": 150794, + "start": 151298, + "end": 151308, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 18 }, "end": { - "line": 3723, + "line": 3731, "column": 28 } } @@ -510738,15 +514000,15 @@ "updateContext": null }, "value": "=", - "start": 150795, - "end": 150796, + "start": 151309, + "end": 151310, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 29 }, "end": { - "line": 3723, + "line": 3731, "column": 30 } } @@ -510764,15 +514026,15 @@ "binop": null }, "value": "renderFlags", - "start": 150797, - "end": 150808, + "start": 151311, + "end": 151322, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 31 }, "end": { - "line": 3723, + "line": 3731, "column": 42 } } @@ -510790,15 +514052,15 @@ "binop": null, "updateContext": null }, - "start": 150808, - "end": 150809, + "start": 151322, + "end": 151323, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 42 }, "end": { - "line": 3723, + "line": 3731, "column": 43 } } @@ -510816,15 +514078,15 @@ "binop": null }, "value": "visibleLayers", - "start": 150809, - "end": 150822, + "start": 151323, + "end": 151336, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 43 }, "end": { - "line": 3723, + "line": 3731, "column": 56 } } @@ -510842,15 +514104,15 @@ "binop": null, "updateContext": null }, - "start": 150822, - "end": 150823, + "start": 151336, + "end": 151337, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 56 }, "end": { - "line": 3723, + "line": 3731, "column": 57 } } @@ -510868,15 +514130,15 @@ "binop": null }, "value": "i", - "start": 150823, - "end": 150824, + "start": 151337, + "end": 151338, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 57 }, "end": { - "line": 3723, + "line": 3731, "column": 58 } } @@ -510894,15 +514156,15 @@ "binop": null, "updateContext": null }, - "start": 150824, - "end": 150825, + "start": 151338, + "end": 151339, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 58 }, "end": { - "line": 3723, + "line": 3731, "column": 59 } } @@ -510920,15 +514182,15 @@ "binop": null, "updateContext": null }, - "start": 150825, - "end": 150826, + "start": 151339, + "end": 151340, "loc": { "start": { - "line": 3723, + "line": 3731, "column": 59 }, "end": { - "line": 3723, + "line": 3731, "column": 60 } } @@ -510948,15 +514210,15 @@ "updateContext": null }, "value": "this", - "start": 150839, - "end": 150843, + "start": 151353, + "end": 151357, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 12 }, "end": { - "line": 3724, + "line": 3732, "column": 16 } } @@ -510974,15 +514236,15 @@ "binop": null, "updateContext": null }, - "start": 150843, - "end": 150844, + "start": 151357, + "end": 151358, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 16 }, "end": { - "line": 3724, + "line": 3732, "column": 17 } } @@ -511000,15 +514262,15 @@ "binop": null }, "value": "layerList", - "start": 150844, - "end": 150853, + "start": 151358, + "end": 151367, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 17 }, "end": { - "line": 3724, + "line": 3732, "column": 26 } } @@ -511026,15 +514288,15 @@ "binop": null, "updateContext": null }, - "start": 150853, - "end": 150854, + "start": 151367, + "end": 151368, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 26 }, "end": { - "line": 3724, + "line": 3732, "column": 27 } } @@ -511052,15 +514314,15 @@ "binop": null }, "value": "layerIndex", - "start": 150854, - "end": 150864, + "start": 151368, + "end": 151378, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 27 }, "end": { - "line": 3724, + "line": 3732, "column": 37 } } @@ -511078,15 +514340,15 @@ "binop": null, "updateContext": null }, - "start": 150864, - "end": 150865, + "start": 151378, + "end": 151379, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 37 }, "end": { - "line": 3724, + "line": 3732, "column": 38 } } @@ -511104,15 +514366,15 @@ "binop": null, "updateContext": null }, - "start": 150865, - "end": 150866, + "start": 151379, + "end": 151380, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 38 }, "end": { - "line": 3724, + "line": 3732, "column": 39 } } @@ -511130,15 +514392,15 @@ "binop": null }, "value": "drawSilhouetteHighlighted", - "start": 150866, - "end": 150891, + "start": 151380, + "end": 151405, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 39 }, "end": { - "line": 3724, + "line": 3732, "column": 64 } } @@ -511155,15 +514417,15 @@ "postfix": false, "binop": null }, - "start": 150891, - "end": 150892, + "start": 151405, + "end": 151406, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 64 }, "end": { - "line": 3724, + "line": 3732, "column": 65 } } @@ -511181,15 +514443,15 @@ "binop": null }, "value": "renderFlags", - "start": 150892, - "end": 150903, + "start": 151406, + "end": 151417, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 65 }, "end": { - "line": 3724, + "line": 3732, "column": 76 } } @@ -511207,15 +514469,15 @@ "binop": null, "updateContext": null }, - "start": 150903, - "end": 150904, + "start": 151417, + "end": 151418, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 76 }, "end": { - "line": 3724, + "line": 3732, "column": 77 } } @@ -511233,15 +514495,15 @@ "binop": null }, "value": "frameCtx", - "start": 150905, - "end": 150913, + "start": 151419, + "end": 151427, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 78 }, "end": { - "line": 3724, + "line": 3732, "column": 86 } } @@ -511258,15 +514520,15 @@ "postfix": false, "binop": null }, - "start": 150913, - "end": 150914, + "start": 151427, + "end": 151428, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 86 }, "end": { - "line": 3724, + "line": 3732, "column": 87 } } @@ -511284,15 +514546,15 @@ "binop": null, "updateContext": null }, - "start": 150914, - "end": 150915, + "start": 151428, + "end": 151429, "loc": { "start": { - "line": 3724, + "line": 3732, "column": 87 }, "end": { - "line": 3724, + "line": 3732, "column": 88 } } @@ -511309,15 +514571,15 @@ "postfix": false, "binop": null }, - "start": 150924, - "end": 150925, + "start": 151438, + "end": 151439, "loc": { "start": { - "line": 3725, + "line": 3733, "column": 8 }, "end": { - "line": 3725, + "line": 3733, "column": 9 } } @@ -511334,15 +514596,15 @@ "postfix": false, "binop": null }, - "start": 150930, - "end": 150931, + "start": 151444, + "end": 151445, "loc": { "start": { - "line": 3726, + "line": 3734, "column": 4 }, "end": { - "line": 3726, + "line": 3734, "column": 5 } } @@ -511350,15 +514612,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 150937, - "end": 150952, + "start": 151451, + "end": 151466, "loc": { "start": { - "line": 3728, + "line": 3736, "column": 4 }, "end": { - "line": 3728, + "line": 3736, "column": 19 } } @@ -511376,15 +514638,15 @@ "binop": null }, "value": "drawSilhouetteSelected", - "start": 150957, - "end": 150979, + "start": 151471, + "end": 151493, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 4 }, "end": { - "line": 3729, + "line": 3737, "column": 26 } } @@ -511401,15 +514663,15 @@ "postfix": false, "binop": null }, - "start": 150979, - "end": 150980, + "start": 151493, + "end": 151494, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 26 }, "end": { - "line": 3729, + "line": 3737, "column": 27 } } @@ -511427,15 +514689,15 @@ "binop": null }, "value": "frameCtx", - "start": 150980, - "end": 150988, + "start": 151494, + "end": 151502, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 27 }, "end": { - "line": 3729, + "line": 3737, "column": 35 } } @@ -511452,15 +514714,15 @@ "postfix": false, "binop": null }, - "start": 150988, - "end": 150989, + "start": 151502, + "end": 151503, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 35 }, "end": { - "line": 3729, + "line": 3737, "column": 36 } } @@ -511477,15 +514739,15 @@ "postfix": false, "binop": null }, - "start": 150990, - "end": 150991, + "start": 151504, + "end": 151505, "loc": { "start": { - "line": 3729, + "line": 3737, "column": 37 }, "end": { - "line": 3729, + "line": 3737, "column": 38 } } @@ -511505,15 +514767,15 @@ "updateContext": null }, "value": "const", - "start": 151000, - "end": 151005, + "start": 151514, + "end": 151519, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 8 }, "end": { - "line": 3730, + "line": 3738, "column": 13 } } @@ -511531,15 +514793,15 @@ "binop": null }, "value": "renderFlags", - "start": 151006, - "end": 151017, + "start": 151520, + "end": 151531, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 14 }, "end": { - "line": 3730, + "line": 3738, "column": 25 } } @@ -511558,15 +514820,15 @@ "updateContext": null }, "value": "=", - "start": 151018, - "end": 151019, + "start": 151532, + "end": 151533, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 26 }, "end": { - "line": 3730, + "line": 3738, "column": 27 } } @@ -511586,15 +514848,15 @@ "updateContext": null }, "value": "this", - "start": 151020, - "end": 151024, + "start": 151534, + "end": 151538, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 28 }, "end": { - "line": 3730, + "line": 3738, "column": 32 } } @@ -511612,15 +514874,15 @@ "binop": null, "updateContext": null }, - "start": 151024, - "end": 151025, + "start": 151538, + "end": 151539, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 32 }, "end": { - "line": 3730, + "line": 3738, "column": 33 } } @@ -511638,15 +514900,15 @@ "binop": null }, "value": "renderFlags", - "start": 151025, - "end": 151036, + "start": 151539, + "end": 151550, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 33 }, "end": { - "line": 3730, + "line": 3738, "column": 44 } } @@ -511664,15 +514926,15 @@ "binop": null, "updateContext": null }, - "start": 151036, - "end": 151037, + "start": 151550, + "end": 151551, "loc": { "start": { - "line": 3730, + "line": 3738, "column": 44 }, "end": { - "line": 3730, + "line": 3738, "column": 45 } } @@ -511692,15 +514954,15 @@ "updateContext": null }, "value": "for", - "start": 151046, - "end": 151049, + "start": 151560, + "end": 151563, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 8 }, "end": { - "line": 3731, + "line": 3739, "column": 11 } } @@ -511717,15 +514979,15 @@ "postfix": false, "binop": null }, - "start": 151050, - "end": 151051, + "start": 151564, + "end": 151565, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 12 }, "end": { - "line": 3731, + "line": 3739, "column": 13 } } @@ -511745,15 +515007,15 @@ "updateContext": null }, "value": "let", - "start": 151051, - "end": 151054, + "start": 151565, + "end": 151568, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 13 }, "end": { - "line": 3731, + "line": 3739, "column": 16 } } @@ -511771,15 +515033,15 @@ "binop": null }, "value": "i", - "start": 151055, - "end": 151056, + "start": 151569, + "end": 151570, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 17 }, "end": { - "line": 3731, + "line": 3739, "column": 18 } } @@ -511798,15 +515060,15 @@ "updateContext": null }, "value": "=", - "start": 151057, - "end": 151058, + "start": 151571, + "end": 151572, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 19 }, "end": { - "line": 3731, + "line": 3739, "column": 20 } } @@ -511825,15 +515087,15 @@ "updateContext": null }, "value": 0, - "start": 151059, - "end": 151060, + "start": 151573, + "end": 151574, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 21 }, "end": { - "line": 3731, + "line": 3739, "column": 22 } } @@ -511851,15 +515113,15 @@ "binop": null, "updateContext": null }, - "start": 151060, - "end": 151061, + "start": 151574, + "end": 151575, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 22 }, "end": { - "line": 3731, + "line": 3739, "column": 23 } } @@ -511877,15 +515139,15 @@ "binop": null }, "value": "len", - "start": 151062, - "end": 151065, + "start": 151576, + "end": 151579, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 24 }, "end": { - "line": 3731, + "line": 3739, "column": 27 } } @@ -511904,15 +515166,15 @@ "updateContext": null }, "value": "=", - "start": 151066, - "end": 151067, + "start": 151580, + "end": 151581, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 28 }, "end": { - "line": 3731, + "line": 3739, "column": 29 } } @@ -511930,15 +515192,15 @@ "binop": null }, "value": "renderFlags", - "start": 151068, - "end": 151079, + "start": 151582, + "end": 151593, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 30 }, "end": { - "line": 3731, + "line": 3739, "column": 41 } } @@ -511956,15 +515218,15 @@ "binop": null, "updateContext": null }, - "start": 151079, - "end": 151080, + "start": 151593, + "end": 151594, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 41 }, "end": { - "line": 3731, + "line": 3739, "column": 42 } } @@ -511982,15 +515244,15 @@ "binop": null }, "value": "visibleLayers", - "start": 151080, - "end": 151093, + "start": 151594, + "end": 151607, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 42 }, "end": { - "line": 3731, + "line": 3739, "column": 55 } } @@ -512008,15 +515270,15 @@ "binop": null, "updateContext": null }, - "start": 151093, - "end": 151094, + "start": 151607, + "end": 151608, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 55 }, "end": { - "line": 3731, + "line": 3739, "column": 56 } } @@ -512034,15 +515296,15 @@ "binop": null }, "value": "length", - "start": 151094, - "end": 151100, + "start": 151608, + "end": 151614, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 56 }, "end": { - "line": 3731, + "line": 3739, "column": 62 } } @@ -512060,15 +515322,15 @@ "binop": null, "updateContext": null }, - "start": 151100, - "end": 151101, + "start": 151614, + "end": 151615, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 62 }, "end": { - "line": 3731, + "line": 3739, "column": 63 } } @@ -512086,15 +515348,15 @@ "binop": null }, "value": "i", - "start": 151102, - "end": 151103, + "start": 151616, + "end": 151617, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 64 }, "end": { - "line": 3731, + "line": 3739, "column": 65 } } @@ -512113,15 +515375,15 @@ "updateContext": null }, "value": "<", - "start": 151104, - "end": 151105, + "start": 151618, + "end": 151619, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 66 }, "end": { - "line": 3731, + "line": 3739, "column": 67 } } @@ -512139,15 +515401,15 @@ "binop": null }, "value": "len", - "start": 151106, - "end": 151109, + "start": 151620, + "end": 151623, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 68 }, "end": { - "line": 3731, + "line": 3739, "column": 71 } } @@ -512165,15 +515427,15 @@ "binop": null, "updateContext": null }, - "start": 151109, - "end": 151110, + "start": 151623, + "end": 151624, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 71 }, "end": { - "line": 3731, + "line": 3739, "column": 72 } } @@ -512191,15 +515453,15 @@ "binop": null }, "value": "i", - "start": 151111, - "end": 151112, + "start": 151625, + "end": 151626, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 73 }, "end": { - "line": 3731, + "line": 3739, "column": 74 } } @@ -512217,15 +515479,15 @@ "binop": null }, "value": "++", - "start": 151112, - "end": 151114, + "start": 151626, + "end": 151628, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 74 }, "end": { - "line": 3731, + "line": 3739, "column": 76 } } @@ -512242,15 +515504,15 @@ "postfix": false, "binop": null }, - "start": 151114, - "end": 151115, + "start": 151628, + "end": 151629, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 76 }, "end": { - "line": 3731, + "line": 3739, "column": 77 } } @@ -512267,15 +515529,15 @@ "postfix": false, "binop": null }, - "start": 151116, - "end": 151117, + "start": 151630, + "end": 151631, "loc": { "start": { - "line": 3731, + "line": 3739, "column": 78 }, "end": { - "line": 3731, + "line": 3739, "column": 79 } } @@ -512295,15 +515557,15 @@ "updateContext": null }, "value": "const", - "start": 151130, - "end": 151135, + "start": 151644, + "end": 151649, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 12 }, "end": { - "line": 3732, + "line": 3740, "column": 17 } } @@ -512321,15 +515583,15 @@ "binop": null }, "value": "layerIndex", - "start": 151136, - "end": 151146, + "start": 151650, + "end": 151660, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 18 }, "end": { - "line": 3732, + "line": 3740, "column": 28 } } @@ -512348,15 +515610,15 @@ "updateContext": null }, "value": "=", - "start": 151147, - "end": 151148, + "start": 151661, + "end": 151662, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 29 }, "end": { - "line": 3732, + "line": 3740, "column": 30 } } @@ -512374,15 +515636,15 @@ "binop": null }, "value": "renderFlags", - "start": 151149, - "end": 151160, + "start": 151663, + "end": 151674, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 31 }, "end": { - "line": 3732, + "line": 3740, "column": 42 } } @@ -512400,15 +515662,15 @@ "binop": null, "updateContext": null }, - "start": 151160, - "end": 151161, + "start": 151674, + "end": 151675, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 42 }, "end": { - "line": 3732, + "line": 3740, "column": 43 } } @@ -512426,15 +515688,15 @@ "binop": null }, "value": "visibleLayers", - "start": 151161, - "end": 151174, + "start": 151675, + "end": 151688, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 43 }, "end": { - "line": 3732, + "line": 3740, "column": 56 } } @@ -512452,15 +515714,15 @@ "binop": null, "updateContext": null }, - "start": 151174, - "end": 151175, + "start": 151688, + "end": 151689, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 56 }, "end": { - "line": 3732, + "line": 3740, "column": 57 } } @@ -512478,15 +515740,15 @@ "binop": null }, "value": "i", - "start": 151175, - "end": 151176, + "start": 151689, + "end": 151690, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 57 }, "end": { - "line": 3732, + "line": 3740, "column": 58 } } @@ -512504,15 +515766,15 @@ "binop": null, "updateContext": null }, - "start": 151176, - "end": 151177, + "start": 151690, + "end": 151691, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 58 }, "end": { - "line": 3732, + "line": 3740, "column": 59 } } @@ -512530,15 +515792,15 @@ "binop": null, "updateContext": null }, - "start": 151177, - "end": 151178, + "start": 151691, + "end": 151692, "loc": { "start": { - "line": 3732, + "line": 3740, "column": 59 }, "end": { - "line": 3732, + "line": 3740, "column": 60 } } @@ -512558,15 +515820,15 @@ "updateContext": null }, "value": "this", - "start": 151191, - "end": 151195, + "start": 151705, + "end": 151709, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 12 }, "end": { - "line": 3733, + "line": 3741, "column": 16 } } @@ -512584,15 +515846,15 @@ "binop": null, "updateContext": null }, - "start": 151195, - "end": 151196, + "start": 151709, + "end": 151710, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 16 }, "end": { - "line": 3733, + "line": 3741, "column": 17 } } @@ -512610,15 +515872,15 @@ "binop": null }, "value": "layerList", - "start": 151196, - "end": 151205, + "start": 151710, + "end": 151719, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 17 }, "end": { - "line": 3733, + "line": 3741, "column": 26 } } @@ -512636,15 +515898,15 @@ "binop": null, "updateContext": null }, - "start": 151205, - "end": 151206, + "start": 151719, + "end": 151720, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 26 }, "end": { - "line": 3733, + "line": 3741, "column": 27 } } @@ -512662,15 +515924,15 @@ "binop": null }, "value": "layerIndex", - "start": 151206, - "end": 151216, + "start": 151720, + "end": 151730, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 27 }, "end": { - "line": 3733, + "line": 3741, "column": 37 } } @@ -512688,15 +515950,15 @@ "binop": null, "updateContext": null }, - "start": 151216, - "end": 151217, + "start": 151730, + "end": 151731, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 37 }, "end": { - "line": 3733, + "line": 3741, "column": 38 } } @@ -512714,15 +515976,15 @@ "binop": null, "updateContext": null }, - "start": 151217, - "end": 151218, + "start": 151731, + "end": 151732, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 38 }, "end": { - "line": 3733, + "line": 3741, "column": 39 } } @@ -512740,15 +516002,15 @@ "binop": null }, "value": "drawSilhouetteSelected", - "start": 151218, - "end": 151240, + "start": 151732, + "end": 151754, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 39 }, "end": { - "line": 3733, + "line": 3741, "column": 61 } } @@ -512765,15 +516027,15 @@ "postfix": false, "binop": null }, - "start": 151240, - "end": 151241, + "start": 151754, + "end": 151755, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 61 }, "end": { - "line": 3733, + "line": 3741, "column": 62 } } @@ -512791,15 +516053,15 @@ "binop": null }, "value": "renderFlags", - "start": 151241, - "end": 151252, + "start": 151755, + "end": 151766, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 62 }, "end": { - "line": 3733, + "line": 3741, "column": 73 } } @@ -512817,15 +516079,15 @@ "binop": null, "updateContext": null }, - "start": 151252, - "end": 151253, + "start": 151766, + "end": 151767, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 73 }, "end": { - "line": 3733, + "line": 3741, "column": 74 } } @@ -512843,15 +516105,15 @@ "binop": null }, "value": "frameCtx", - "start": 151254, - "end": 151262, + "start": 151768, + "end": 151776, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 75 }, "end": { - "line": 3733, + "line": 3741, "column": 83 } } @@ -512868,15 +516130,15 @@ "postfix": false, "binop": null }, - "start": 151262, - "end": 151263, + "start": 151776, + "end": 151777, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 83 }, "end": { - "line": 3733, + "line": 3741, "column": 84 } } @@ -512894,15 +516156,15 @@ "binop": null, "updateContext": null }, - "start": 151263, - "end": 151264, + "start": 151777, + "end": 151778, "loc": { "start": { - "line": 3733, + "line": 3741, "column": 84 }, "end": { - "line": 3733, + "line": 3741, "column": 85 } } @@ -512919,15 +516181,15 @@ "postfix": false, "binop": null }, - "start": 151273, - "end": 151274, + "start": 151787, + "end": 151788, "loc": { "start": { - "line": 3734, + "line": 3742, "column": 8 }, "end": { - "line": 3734, + "line": 3742, "column": 9 } } @@ -512944,15 +516206,15 @@ "postfix": false, "binop": null }, - "start": 151279, - "end": 151280, + "start": 151793, + "end": 151794, "loc": { "start": { - "line": 3735, + "line": 3743, "column": 4 }, "end": { - "line": 3735, + "line": 3743, "column": 5 } } @@ -512960,15 +516222,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151286, - "end": 151301, + "start": 151800, + "end": 151815, "loc": { "start": { - "line": 3737, + "line": 3745, "column": 4 }, "end": { - "line": 3737, + "line": 3745, "column": 19 } } @@ -512986,15 +516248,15 @@ "binop": null }, "value": "drawEdgesColorOpaque", - "start": 151306, - "end": 151326, + "start": 151820, + "end": 151840, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 4 }, "end": { - "line": 3738, + "line": 3746, "column": 24 } } @@ -513011,15 +516273,15 @@ "postfix": false, "binop": null }, - "start": 151326, - "end": 151327, + "start": 151840, + "end": 151841, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 24 }, "end": { - "line": 3738, + "line": 3746, "column": 25 } } @@ -513037,15 +516299,15 @@ "binop": null }, "value": "frameCtx", - "start": 151327, - "end": 151335, + "start": 151841, + "end": 151849, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 25 }, "end": { - "line": 3738, + "line": 3746, "column": 33 } } @@ -513062,15 +516324,15 @@ "postfix": false, "binop": null }, - "start": 151335, - "end": 151336, + "start": 151849, + "end": 151850, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 33 }, "end": { - "line": 3738, + "line": 3746, "column": 34 } } @@ -513087,15 +516349,15 @@ "postfix": false, "binop": null }, - "start": 151337, - "end": 151338, + "start": 151851, + "end": 151852, "loc": { "start": { - "line": 3738, + "line": 3746, "column": 35 }, "end": { - "line": 3738, + "line": 3746, "column": 36 } } @@ -513115,15 +516377,15 @@ "updateContext": null }, "value": "const", - "start": 151347, - "end": 151352, + "start": 151861, + "end": 151866, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 8 }, "end": { - "line": 3739, + "line": 3747, "column": 13 } } @@ -513141,15 +516403,15 @@ "binop": null }, "value": "renderFlags", - "start": 151353, - "end": 151364, + "start": 151867, + "end": 151878, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 14 }, "end": { - "line": 3739, + "line": 3747, "column": 25 } } @@ -513168,15 +516430,15 @@ "updateContext": null }, "value": "=", - "start": 151365, - "end": 151366, + "start": 151879, + "end": 151880, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 26 }, "end": { - "line": 3739, + "line": 3747, "column": 27 } } @@ -513196,15 +516458,15 @@ "updateContext": null }, "value": "this", - "start": 151367, - "end": 151371, + "start": 151881, + "end": 151885, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 28 }, "end": { - "line": 3739, + "line": 3747, "column": 32 } } @@ -513222,15 +516484,15 @@ "binop": null, "updateContext": null }, - "start": 151371, - "end": 151372, + "start": 151885, + "end": 151886, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 32 }, "end": { - "line": 3739, + "line": 3747, "column": 33 } } @@ -513248,15 +516510,15 @@ "binop": null }, "value": "renderFlags", - "start": 151372, - "end": 151383, + "start": 151886, + "end": 151897, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 33 }, "end": { - "line": 3739, + "line": 3747, "column": 44 } } @@ -513274,15 +516536,15 @@ "binop": null, "updateContext": null }, - "start": 151383, - "end": 151384, + "start": 151897, + "end": 151898, "loc": { "start": { - "line": 3739, + "line": 3747, "column": 44 }, "end": { - "line": 3739, + "line": 3747, "column": 45 } } @@ -513302,15 +516564,15 @@ "updateContext": null }, "value": "for", - "start": 151393, - "end": 151396, + "start": 151907, + "end": 151910, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 8 }, "end": { - "line": 3740, + "line": 3748, "column": 11 } } @@ -513327,15 +516589,15 @@ "postfix": false, "binop": null }, - "start": 151397, - "end": 151398, + "start": 151911, + "end": 151912, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 12 }, "end": { - "line": 3740, + "line": 3748, "column": 13 } } @@ -513355,15 +516617,15 @@ "updateContext": null }, "value": "let", - "start": 151398, - "end": 151401, + "start": 151912, + "end": 151915, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 13 }, "end": { - "line": 3740, + "line": 3748, "column": 16 } } @@ -513381,15 +516643,15 @@ "binop": null }, "value": "i", - "start": 151402, - "end": 151403, + "start": 151916, + "end": 151917, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 17 }, "end": { - "line": 3740, + "line": 3748, "column": 18 } } @@ -513408,15 +516670,15 @@ "updateContext": null }, "value": "=", - "start": 151404, - "end": 151405, + "start": 151918, + "end": 151919, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 19 }, "end": { - "line": 3740, + "line": 3748, "column": 20 } } @@ -513435,15 +516697,15 @@ "updateContext": null }, "value": 0, - "start": 151406, - "end": 151407, + "start": 151920, + "end": 151921, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 21 }, "end": { - "line": 3740, + "line": 3748, "column": 22 } } @@ -513461,15 +516723,15 @@ "binop": null, "updateContext": null }, - "start": 151407, - "end": 151408, + "start": 151921, + "end": 151922, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 22 }, "end": { - "line": 3740, + "line": 3748, "column": 23 } } @@ -513487,15 +516749,15 @@ "binop": null }, "value": "len", - "start": 151409, - "end": 151412, + "start": 151923, + "end": 151926, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 24 }, "end": { - "line": 3740, + "line": 3748, "column": 27 } } @@ -513514,15 +516776,15 @@ "updateContext": null }, "value": "=", - "start": 151413, - "end": 151414, + "start": 151927, + "end": 151928, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 28 }, "end": { - "line": 3740, + "line": 3748, "column": 29 } } @@ -513540,15 +516802,15 @@ "binop": null }, "value": "renderFlags", - "start": 151415, - "end": 151426, + "start": 151929, + "end": 151940, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 30 }, "end": { - "line": 3740, + "line": 3748, "column": 41 } } @@ -513566,15 +516828,15 @@ "binop": null, "updateContext": null }, - "start": 151426, - "end": 151427, + "start": 151940, + "end": 151941, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 41 }, "end": { - "line": 3740, + "line": 3748, "column": 42 } } @@ -513592,15 +516854,15 @@ "binop": null }, "value": "visibleLayers", - "start": 151427, - "end": 151440, + "start": 151941, + "end": 151954, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 42 }, "end": { - "line": 3740, + "line": 3748, "column": 55 } } @@ -513618,15 +516880,15 @@ "binop": null, "updateContext": null }, - "start": 151440, - "end": 151441, + "start": 151954, + "end": 151955, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 55 }, "end": { - "line": 3740, + "line": 3748, "column": 56 } } @@ -513644,15 +516906,15 @@ "binop": null }, "value": "length", - "start": 151441, - "end": 151447, + "start": 151955, + "end": 151961, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 56 }, "end": { - "line": 3740, + "line": 3748, "column": 62 } } @@ -513670,15 +516932,15 @@ "binop": null, "updateContext": null }, - "start": 151447, - "end": 151448, + "start": 151961, + "end": 151962, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 62 }, "end": { - "line": 3740, + "line": 3748, "column": 63 } } @@ -513696,15 +516958,15 @@ "binop": null }, "value": "i", - "start": 151449, - "end": 151450, + "start": 151963, + "end": 151964, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 64 }, "end": { - "line": 3740, + "line": 3748, "column": 65 } } @@ -513723,15 +516985,15 @@ "updateContext": null }, "value": "<", - "start": 151451, - "end": 151452, + "start": 151965, + "end": 151966, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 66 }, "end": { - "line": 3740, + "line": 3748, "column": 67 } } @@ -513749,15 +517011,15 @@ "binop": null }, "value": "len", - "start": 151453, - "end": 151456, + "start": 151967, + "end": 151970, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 68 }, "end": { - "line": 3740, + "line": 3748, "column": 71 } } @@ -513775,15 +517037,15 @@ "binop": null, "updateContext": null }, - "start": 151456, - "end": 151457, + "start": 151970, + "end": 151971, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 71 }, "end": { - "line": 3740, + "line": 3748, "column": 72 } } @@ -513801,15 +517063,15 @@ "binop": null }, "value": "i", - "start": 151458, - "end": 151459, + "start": 151972, + "end": 151973, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 73 }, "end": { - "line": 3740, + "line": 3748, "column": 74 } } @@ -513827,15 +517089,15 @@ "binop": null }, "value": "++", - "start": 151459, - "end": 151461, + "start": 151973, + "end": 151975, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 74 }, "end": { - "line": 3740, + "line": 3748, "column": 76 } } @@ -513852,15 +517114,15 @@ "postfix": false, "binop": null }, - "start": 151461, - "end": 151462, + "start": 151975, + "end": 151976, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 76 }, "end": { - "line": 3740, + "line": 3748, "column": 77 } } @@ -513877,15 +517139,15 @@ "postfix": false, "binop": null }, - "start": 151463, - "end": 151464, + "start": 151977, + "end": 151978, "loc": { "start": { - "line": 3740, + "line": 3748, "column": 78 }, "end": { - "line": 3740, + "line": 3748, "column": 79 } } @@ -513905,15 +517167,15 @@ "updateContext": null }, "value": "const", - "start": 151477, - "end": 151482, + "start": 151991, + "end": 151996, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 12 }, "end": { - "line": 3741, + "line": 3749, "column": 17 } } @@ -513931,15 +517193,15 @@ "binop": null }, "value": "layerIndex", - "start": 151483, - "end": 151493, + "start": 151997, + "end": 152007, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 18 }, "end": { - "line": 3741, + "line": 3749, "column": 28 } } @@ -513958,15 +517220,15 @@ "updateContext": null }, "value": "=", - "start": 151494, - "end": 151495, + "start": 152008, + "end": 152009, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 29 }, "end": { - "line": 3741, + "line": 3749, "column": 30 } } @@ -513984,15 +517246,15 @@ "binop": null }, "value": "renderFlags", - "start": 151496, - "end": 151507, + "start": 152010, + "end": 152021, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 31 }, "end": { - "line": 3741, + "line": 3749, "column": 42 } } @@ -514010,15 +517272,15 @@ "binop": null, "updateContext": null }, - "start": 151507, - "end": 151508, + "start": 152021, + "end": 152022, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 42 }, "end": { - "line": 3741, + "line": 3749, "column": 43 } } @@ -514036,15 +517298,15 @@ "binop": null }, "value": "visibleLayers", - "start": 151508, - "end": 151521, + "start": 152022, + "end": 152035, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 43 }, "end": { - "line": 3741, + "line": 3749, "column": 56 } } @@ -514062,15 +517324,15 @@ "binop": null, "updateContext": null }, - "start": 151521, - "end": 151522, + "start": 152035, + "end": 152036, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 56 }, "end": { - "line": 3741, + "line": 3749, "column": 57 } } @@ -514088,15 +517350,15 @@ "binop": null }, "value": "i", - "start": 151522, - "end": 151523, + "start": 152036, + "end": 152037, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 57 }, "end": { - "line": 3741, + "line": 3749, "column": 58 } } @@ -514114,15 +517376,15 @@ "binop": null, "updateContext": null }, - "start": 151523, - "end": 151524, + "start": 152037, + "end": 152038, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 58 }, "end": { - "line": 3741, + "line": 3749, "column": 59 } } @@ -514140,15 +517402,15 @@ "binop": null, "updateContext": null }, - "start": 151524, - "end": 151525, + "start": 152038, + "end": 152039, "loc": { "start": { - "line": 3741, + "line": 3749, "column": 59 }, "end": { - "line": 3741, + "line": 3749, "column": 60 } } @@ -514168,15 +517430,15 @@ "updateContext": null }, "value": "this", - "start": 151538, - "end": 151542, + "start": 152052, + "end": 152056, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 12 }, "end": { - "line": 3742, + "line": 3750, "column": 16 } } @@ -514194,15 +517456,15 @@ "binop": null, "updateContext": null }, - "start": 151542, - "end": 151543, + "start": 152056, + "end": 152057, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 16 }, "end": { - "line": 3742, + "line": 3750, "column": 17 } } @@ -514220,15 +517482,15 @@ "binop": null }, "value": "layerList", - "start": 151543, - "end": 151552, + "start": 152057, + "end": 152066, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 17 }, "end": { - "line": 3742, + "line": 3750, "column": 26 } } @@ -514246,15 +517508,15 @@ "binop": null, "updateContext": null }, - "start": 151552, - "end": 151553, + "start": 152066, + "end": 152067, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 26 }, "end": { - "line": 3742, + "line": 3750, "column": 27 } } @@ -514272,15 +517534,15 @@ "binop": null }, "value": "layerIndex", - "start": 151553, - "end": 151563, + "start": 152067, + "end": 152077, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 27 }, "end": { - "line": 3742, + "line": 3750, "column": 37 } } @@ -514298,15 +517560,15 @@ "binop": null, "updateContext": null }, - "start": 151563, - "end": 151564, + "start": 152077, + "end": 152078, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 37 }, "end": { - "line": 3742, + "line": 3750, "column": 38 } } @@ -514324,15 +517586,15 @@ "binop": null, "updateContext": null }, - "start": 151564, - "end": 151565, + "start": 152078, + "end": 152079, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 38 }, "end": { - "line": 3742, + "line": 3750, "column": 39 } } @@ -514350,15 +517612,15 @@ "binop": null }, "value": "drawEdgesColorOpaque", - "start": 151565, - "end": 151585, + "start": 152079, + "end": 152099, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 39 }, "end": { - "line": 3742, + "line": 3750, "column": 59 } } @@ -514375,15 +517637,15 @@ "postfix": false, "binop": null }, - "start": 151585, - "end": 151586, + "start": 152099, + "end": 152100, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 59 }, "end": { - "line": 3742, + "line": 3750, "column": 60 } } @@ -514401,15 +517663,15 @@ "binop": null }, "value": "renderFlags", - "start": 151586, - "end": 151597, + "start": 152100, + "end": 152111, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 60 }, "end": { - "line": 3742, + "line": 3750, "column": 71 } } @@ -514427,15 +517689,15 @@ "binop": null, "updateContext": null }, - "start": 151597, - "end": 151598, + "start": 152111, + "end": 152112, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 71 }, "end": { - "line": 3742, + "line": 3750, "column": 72 } } @@ -514453,15 +517715,15 @@ "binop": null }, "value": "frameCtx", - "start": 151599, - "end": 151607, + "start": 152113, + "end": 152121, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 73 }, "end": { - "line": 3742, + "line": 3750, "column": 81 } } @@ -514478,15 +517740,15 @@ "postfix": false, "binop": null }, - "start": 151607, - "end": 151608, + "start": 152121, + "end": 152122, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 81 }, "end": { - "line": 3742, + "line": 3750, "column": 82 } } @@ -514504,15 +517766,15 @@ "binop": null, "updateContext": null }, - "start": 151608, - "end": 151609, + "start": 152122, + "end": 152123, "loc": { "start": { - "line": 3742, + "line": 3750, "column": 82 }, "end": { - "line": 3742, + "line": 3750, "column": 83 } } @@ -514529,15 +517791,15 @@ "postfix": false, "binop": null }, - "start": 151618, - "end": 151619, + "start": 152132, + "end": 152133, "loc": { "start": { - "line": 3743, + "line": 3751, "column": 8 }, "end": { - "line": 3743, + "line": 3751, "column": 9 } } @@ -514554,15 +517816,15 @@ "postfix": false, "binop": null }, - "start": 151624, - "end": 151625, + "start": 152138, + "end": 152139, "loc": { "start": { - "line": 3744, + "line": 3752, "column": 4 }, "end": { - "line": 3744, + "line": 3752, "column": 5 } } @@ -514570,15 +517832,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151631, - "end": 151646, + "start": 152145, + "end": 152160, "loc": { "start": { - "line": 3746, + "line": 3754, "column": 4 }, "end": { - "line": 3746, + "line": 3754, "column": 19 } } @@ -514596,15 +517858,15 @@ "binop": null }, "value": "drawEdgesColorTransparent", - "start": 151651, - "end": 151676, + "start": 152165, + "end": 152190, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 4 }, "end": { - "line": 3747, + "line": 3755, "column": 29 } } @@ -514621,15 +517883,15 @@ "postfix": false, "binop": null }, - "start": 151676, - "end": 151677, + "start": 152190, + "end": 152191, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 29 }, "end": { - "line": 3747, + "line": 3755, "column": 30 } } @@ -514647,15 +517909,15 @@ "binop": null }, "value": "frameCtx", - "start": 151677, - "end": 151685, + "start": 152191, + "end": 152199, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 30 }, "end": { - "line": 3747, + "line": 3755, "column": 38 } } @@ -514672,15 +517934,15 @@ "postfix": false, "binop": null }, - "start": 151685, - "end": 151686, + "start": 152199, + "end": 152200, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 38 }, "end": { - "line": 3747, + "line": 3755, "column": 39 } } @@ -514697,15 +517959,15 @@ "postfix": false, "binop": null }, - "start": 151687, - "end": 151688, + "start": 152201, + "end": 152202, "loc": { "start": { - "line": 3747, + "line": 3755, "column": 40 }, "end": { - "line": 3747, + "line": 3755, "column": 41 } } @@ -514725,15 +517987,15 @@ "updateContext": null }, "value": "const", - "start": 151697, - "end": 151702, + "start": 152211, + "end": 152216, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 8 }, "end": { - "line": 3748, + "line": 3756, "column": 13 } } @@ -514751,15 +518013,15 @@ "binop": null }, "value": "renderFlags", - "start": 151703, - "end": 151714, + "start": 152217, + "end": 152228, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 14 }, "end": { - "line": 3748, + "line": 3756, "column": 25 } } @@ -514778,15 +518040,15 @@ "updateContext": null }, "value": "=", - "start": 151715, - "end": 151716, + "start": 152229, + "end": 152230, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 26 }, "end": { - "line": 3748, + "line": 3756, "column": 27 } } @@ -514806,15 +518068,15 @@ "updateContext": null }, "value": "this", - "start": 151717, - "end": 151721, + "start": 152231, + "end": 152235, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 28 }, "end": { - "line": 3748, + "line": 3756, "column": 32 } } @@ -514832,15 +518094,15 @@ "binop": null, "updateContext": null }, - "start": 151721, - "end": 151722, + "start": 152235, + "end": 152236, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 32 }, "end": { - "line": 3748, + "line": 3756, "column": 33 } } @@ -514858,15 +518120,15 @@ "binop": null }, "value": "renderFlags", - "start": 151722, - "end": 151733, + "start": 152236, + "end": 152247, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 33 }, "end": { - "line": 3748, + "line": 3756, "column": 44 } } @@ -514884,15 +518146,15 @@ "binop": null, "updateContext": null }, - "start": 151733, - "end": 151734, + "start": 152247, + "end": 152248, "loc": { "start": { - "line": 3748, + "line": 3756, "column": 44 }, "end": { - "line": 3748, + "line": 3756, "column": 45 } } @@ -514912,15 +518174,15 @@ "updateContext": null }, "value": "for", - "start": 151743, - "end": 151746, + "start": 152257, + "end": 152260, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 8 }, "end": { - "line": 3749, + "line": 3757, "column": 11 } } @@ -514937,15 +518199,15 @@ "postfix": false, "binop": null }, - "start": 151747, - "end": 151748, + "start": 152261, + "end": 152262, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 12 }, "end": { - "line": 3749, + "line": 3757, "column": 13 } } @@ -514965,15 +518227,15 @@ "updateContext": null }, "value": "let", - "start": 151748, - "end": 151751, + "start": 152262, + "end": 152265, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 13 }, "end": { - "line": 3749, + "line": 3757, "column": 16 } } @@ -514991,15 +518253,15 @@ "binop": null }, "value": "i", - "start": 151752, - "end": 151753, + "start": 152266, + "end": 152267, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 17 }, "end": { - "line": 3749, + "line": 3757, "column": 18 } } @@ -515018,15 +518280,15 @@ "updateContext": null }, "value": "=", - "start": 151754, - "end": 151755, + "start": 152268, + "end": 152269, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 19 }, "end": { - "line": 3749, + "line": 3757, "column": 20 } } @@ -515045,15 +518307,15 @@ "updateContext": null }, "value": 0, - "start": 151756, - "end": 151757, + "start": 152270, + "end": 152271, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 21 }, "end": { - "line": 3749, + "line": 3757, "column": 22 } } @@ -515071,15 +518333,15 @@ "binop": null, "updateContext": null }, - "start": 151757, - "end": 151758, + "start": 152271, + "end": 152272, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 22 }, "end": { - "line": 3749, + "line": 3757, "column": 23 } } @@ -515097,15 +518359,15 @@ "binop": null }, "value": "len", - "start": 151759, - "end": 151762, + "start": 152273, + "end": 152276, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 24 }, "end": { - "line": 3749, + "line": 3757, "column": 27 } } @@ -515124,15 +518386,15 @@ "updateContext": null }, "value": "=", - "start": 151763, - "end": 151764, + "start": 152277, + "end": 152278, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 28 }, "end": { - "line": 3749, + "line": 3757, "column": 29 } } @@ -515150,15 +518412,15 @@ "binop": null }, "value": "renderFlags", - "start": 151765, - "end": 151776, + "start": 152279, + "end": 152290, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 30 }, "end": { - "line": 3749, + "line": 3757, "column": 41 } } @@ -515176,15 +518438,15 @@ "binop": null, "updateContext": null }, - "start": 151776, - "end": 151777, + "start": 152290, + "end": 152291, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 41 }, "end": { - "line": 3749, + "line": 3757, "column": 42 } } @@ -515202,15 +518464,15 @@ "binop": null }, "value": "visibleLayers", - "start": 151777, - "end": 151790, + "start": 152291, + "end": 152304, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 42 }, "end": { - "line": 3749, + "line": 3757, "column": 55 } } @@ -515228,15 +518490,15 @@ "binop": null, "updateContext": null }, - "start": 151790, - "end": 151791, + "start": 152304, + "end": 152305, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 55 }, "end": { - "line": 3749, + "line": 3757, "column": 56 } } @@ -515254,15 +518516,15 @@ "binop": null }, "value": "length", - "start": 151791, - "end": 151797, + "start": 152305, + "end": 152311, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 56 }, "end": { - "line": 3749, + "line": 3757, "column": 62 } } @@ -515280,15 +518542,15 @@ "binop": null, "updateContext": null }, - "start": 151797, - "end": 151798, + "start": 152311, + "end": 152312, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 62 }, "end": { - "line": 3749, + "line": 3757, "column": 63 } } @@ -515306,15 +518568,15 @@ "binop": null }, "value": "i", - "start": 151799, - "end": 151800, + "start": 152313, + "end": 152314, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 64 }, "end": { - "line": 3749, + "line": 3757, "column": 65 } } @@ -515333,15 +518595,15 @@ "updateContext": null }, "value": "<", - "start": 151801, - "end": 151802, + "start": 152315, + "end": 152316, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 66 }, "end": { - "line": 3749, + "line": 3757, "column": 67 } } @@ -515359,15 +518621,15 @@ "binop": null }, "value": "len", - "start": 151803, - "end": 151806, + "start": 152317, + "end": 152320, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 68 }, "end": { - "line": 3749, + "line": 3757, "column": 71 } } @@ -515385,15 +518647,15 @@ "binop": null, "updateContext": null }, - "start": 151806, - "end": 151807, + "start": 152320, + "end": 152321, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 71 }, "end": { - "line": 3749, + "line": 3757, "column": 72 } } @@ -515411,15 +518673,15 @@ "binop": null }, "value": "i", - "start": 151808, - "end": 151809, + "start": 152322, + "end": 152323, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 73 }, "end": { - "line": 3749, + "line": 3757, "column": 74 } } @@ -515437,15 +518699,15 @@ "binop": null }, "value": "++", - "start": 151809, - "end": 151811, + "start": 152323, + "end": 152325, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 74 }, "end": { - "line": 3749, + "line": 3757, "column": 76 } } @@ -515462,15 +518724,15 @@ "postfix": false, "binop": null }, - "start": 151811, - "end": 151812, + "start": 152325, + "end": 152326, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 76 }, "end": { - "line": 3749, + "line": 3757, "column": 77 } } @@ -515487,15 +518749,15 @@ "postfix": false, "binop": null }, - "start": 151813, - "end": 151814, + "start": 152327, + "end": 152328, "loc": { "start": { - "line": 3749, + "line": 3757, "column": 78 }, "end": { - "line": 3749, + "line": 3757, "column": 79 } } @@ -515515,15 +518777,15 @@ "updateContext": null }, "value": "const", - "start": 151827, - "end": 151832, + "start": 152341, + "end": 152346, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 12 }, "end": { - "line": 3750, + "line": 3758, "column": 17 } } @@ -515541,15 +518803,15 @@ "binop": null }, "value": "layerIndex", - "start": 151833, - "end": 151843, + "start": 152347, + "end": 152357, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 18 }, "end": { - "line": 3750, + "line": 3758, "column": 28 } } @@ -515568,15 +518830,15 @@ "updateContext": null }, "value": "=", - "start": 151844, - "end": 151845, + "start": 152358, + "end": 152359, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 29 }, "end": { - "line": 3750, + "line": 3758, "column": 30 } } @@ -515594,15 +518856,15 @@ "binop": null }, "value": "renderFlags", - "start": 151846, - "end": 151857, + "start": 152360, + "end": 152371, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 31 }, "end": { - "line": 3750, + "line": 3758, "column": 42 } } @@ -515620,15 +518882,15 @@ "binop": null, "updateContext": null }, - "start": 151857, - "end": 151858, + "start": 152371, + "end": 152372, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 42 }, "end": { - "line": 3750, + "line": 3758, "column": 43 } } @@ -515646,15 +518908,15 @@ "binop": null }, "value": "visibleLayers", - "start": 151858, - "end": 151871, + "start": 152372, + "end": 152385, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 43 }, "end": { - "line": 3750, + "line": 3758, "column": 56 } } @@ -515672,15 +518934,15 @@ "binop": null, "updateContext": null }, - "start": 151871, - "end": 151872, + "start": 152385, + "end": 152386, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 56 }, "end": { - "line": 3750, + "line": 3758, "column": 57 } } @@ -515698,15 +518960,15 @@ "binop": null }, "value": "i", - "start": 151872, - "end": 151873, + "start": 152386, + "end": 152387, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 57 }, "end": { - "line": 3750, + "line": 3758, "column": 58 } } @@ -515724,15 +518986,15 @@ "binop": null, "updateContext": null }, - "start": 151873, - "end": 151874, + "start": 152387, + "end": 152388, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 58 }, "end": { - "line": 3750, + "line": 3758, "column": 59 } } @@ -515750,15 +519012,15 @@ "binop": null, "updateContext": null }, - "start": 151874, - "end": 151875, + "start": 152388, + "end": 152389, "loc": { "start": { - "line": 3750, + "line": 3758, "column": 59 }, "end": { - "line": 3750, + "line": 3758, "column": 60 } } @@ -515778,15 +519040,15 @@ "updateContext": null }, "value": "this", - "start": 151888, - "end": 151892, + "start": 152402, + "end": 152406, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 12 }, "end": { - "line": 3751, + "line": 3759, "column": 16 } } @@ -515804,15 +519066,15 @@ "binop": null, "updateContext": null }, - "start": 151892, - "end": 151893, + "start": 152406, + "end": 152407, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 16 }, "end": { - "line": 3751, + "line": 3759, "column": 17 } } @@ -515830,15 +519092,15 @@ "binop": null }, "value": "layerList", - "start": 151893, - "end": 151902, + "start": 152407, + "end": 152416, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 17 }, "end": { - "line": 3751, + "line": 3759, "column": 26 } } @@ -515856,15 +519118,15 @@ "binop": null, "updateContext": null }, - "start": 151902, - "end": 151903, + "start": 152416, + "end": 152417, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 26 }, "end": { - "line": 3751, + "line": 3759, "column": 27 } } @@ -515882,15 +519144,15 @@ "binop": null }, "value": "layerIndex", - "start": 151903, - "end": 151913, + "start": 152417, + "end": 152427, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 27 }, "end": { - "line": 3751, + "line": 3759, "column": 37 } } @@ -515908,15 +519170,15 @@ "binop": null, "updateContext": null }, - "start": 151913, - "end": 151914, + "start": 152427, + "end": 152428, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 37 }, "end": { - "line": 3751, + "line": 3759, "column": 38 } } @@ -515934,15 +519196,15 @@ "binop": null, "updateContext": null }, - "start": 151914, - "end": 151915, + "start": 152428, + "end": 152429, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 38 }, "end": { - "line": 3751, + "line": 3759, "column": 39 } } @@ -515960,15 +519222,15 @@ "binop": null }, "value": "drawEdgesColorTransparent", - "start": 151915, - "end": 151940, + "start": 152429, + "end": 152454, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 39 }, "end": { - "line": 3751, + "line": 3759, "column": 64 } } @@ -515985,15 +519247,15 @@ "postfix": false, "binop": null }, - "start": 151940, - "end": 151941, + "start": 152454, + "end": 152455, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 64 }, "end": { - "line": 3751, + "line": 3759, "column": 65 } } @@ -516011,15 +519273,15 @@ "binop": null }, "value": "renderFlags", - "start": 151941, - "end": 151952, + "start": 152455, + "end": 152466, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 65 }, "end": { - "line": 3751, + "line": 3759, "column": 76 } } @@ -516037,15 +519299,15 @@ "binop": null, "updateContext": null }, - "start": 151952, - "end": 151953, + "start": 152466, + "end": 152467, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 76 }, "end": { - "line": 3751, + "line": 3759, "column": 77 } } @@ -516063,15 +519325,15 @@ "binop": null }, "value": "frameCtx", - "start": 151954, - "end": 151962, + "start": 152468, + "end": 152476, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 78 }, "end": { - "line": 3751, + "line": 3759, "column": 86 } } @@ -516088,15 +519350,15 @@ "postfix": false, "binop": null }, - "start": 151962, - "end": 151963, + "start": 152476, + "end": 152477, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 86 }, "end": { - "line": 3751, + "line": 3759, "column": 87 } } @@ -516114,15 +519376,15 @@ "binop": null, "updateContext": null }, - "start": 151963, - "end": 151964, + "start": 152477, + "end": 152478, "loc": { "start": { - "line": 3751, + "line": 3759, "column": 87 }, "end": { - "line": 3751, + "line": 3759, "column": 88 } } @@ -516139,15 +519401,15 @@ "postfix": false, "binop": null }, - "start": 151973, - "end": 151974, + "start": 152487, + "end": 152488, "loc": { "start": { - "line": 3752, + "line": 3760, "column": 8 }, "end": { - "line": 3752, + "line": 3760, "column": 9 } } @@ -516164,15 +519426,15 @@ "postfix": false, "binop": null }, - "start": 151979, - "end": 151980, + "start": 152493, + "end": 152494, "loc": { "start": { - "line": 3753, + "line": 3761, "column": 4 }, "end": { - "line": 3753, + "line": 3761, "column": 5 } } @@ -516180,15 +519442,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 151986, - "end": 152001, + "start": 152500, + "end": 152515, "loc": { "start": { - "line": 3755, + "line": 3763, "column": 4 }, "end": { - "line": 3755, + "line": 3763, "column": 19 } } @@ -516206,15 +519468,15 @@ "binop": null }, "value": "drawEdgesXRayed", - "start": 152006, - "end": 152021, + "start": 152520, + "end": 152535, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 4 }, "end": { - "line": 3756, + "line": 3764, "column": 19 } } @@ -516231,15 +519493,15 @@ "postfix": false, "binop": null }, - "start": 152021, - "end": 152022, + "start": 152535, + "end": 152536, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 19 }, "end": { - "line": 3756, + "line": 3764, "column": 20 } } @@ -516257,15 +519519,15 @@ "binop": null }, "value": "frameCtx", - "start": 152022, - "end": 152030, + "start": 152536, + "end": 152544, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 20 }, "end": { - "line": 3756, + "line": 3764, "column": 28 } } @@ -516282,15 +519544,15 @@ "postfix": false, "binop": null }, - "start": 152030, - "end": 152031, + "start": 152544, + "end": 152545, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 28 }, "end": { - "line": 3756, + "line": 3764, "column": 29 } } @@ -516307,15 +519569,15 @@ "postfix": false, "binop": null }, - "start": 152032, - "end": 152033, + "start": 152546, + "end": 152547, "loc": { "start": { - "line": 3756, + "line": 3764, "column": 30 }, "end": { - "line": 3756, + "line": 3764, "column": 31 } } @@ -516335,15 +519597,15 @@ "updateContext": null }, "value": "const", - "start": 152042, - "end": 152047, + "start": 152556, + "end": 152561, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 8 }, "end": { - "line": 3757, + "line": 3765, "column": 13 } } @@ -516361,15 +519623,15 @@ "binop": null }, "value": "renderFlags", - "start": 152048, - "end": 152059, + "start": 152562, + "end": 152573, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 14 }, "end": { - "line": 3757, + "line": 3765, "column": 25 } } @@ -516388,15 +519650,15 @@ "updateContext": null }, "value": "=", - "start": 152060, - "end": 152061, + "start": 152574, + "end": 152575, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 26 }, "end": { - "line": 3757, + "line": 3765, "column": 27 } } @@ -516416,15 +519678,15 @@ "updateContext": null }, "value": "this", - "start": 152062, - "end": 152066, + "start": 152576, + "end": 152580, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 28 }, "end": { - "line": 3757, + "line": 3765, "column": 32 } } @@ -516442,15 +519704,15 @@ "binop": null, "updateContext": null }, - "start": 152066, - "end": 152067, + "start": 152580, + "end": 152581, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 32 }, "end": { - "line": 3757, + "line": 3765, "column": 33 } } @@ -516468,15 +519730,15 @@ "binop": null }, "value": "renderFlags", - "start": 152067, - "end": 152078, + "start": 152581, + "end": 152592, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 33 }, "end": { - "line": 3757, + "line": 3765, "column": 44 } } @@ -516494,15 +519756,15 @@ "binop": null, "updateContext": null }, - "start": 152078, - "end": 152079, + "start": 152592, + "end": 152593, "loc": { "start": { - "line": 3757, + "line": 3765, "column": 44 }, "end": { - "line": 3757, + "line": 3765, "column": 45 } } @@ -516522,15 +519784,15 @@ "updateContext": null }, "value": "for", - "start": 152088, - "end": 152091, + "start": 152602, + "end": 152605, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 8 }, "end": { - "line": 3758, + "line": 3766, "column": 11 } } @@ -516547,15 +519809,15 @@ "postfix": false, "binop": null }, - "start": 152092, - "end": 152093, + "start": 152606, + "end": 152607, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 12 }, "end": { - "line": 3758, + "line": 3766, "column": 13 } } @@ -516575,15 +519837,15 @@ "updateContext": null }, "value": "let", - "start": 152093, - "end": 152096, + "start": 152607, + "end": 152610, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 13 }, "end": { - "line": 3758, + "line": 3766, "column": 16 } } @@ -516601,15 +519863,15 @@ "binop": null }, "value": "i", - "start": 152097, - "end": 152098, + "start": 152611, + "end": 152612, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 17 }, "end": { - "line": 3758, + "line": 3766, "column": 18 } } @@ -516628,15 +519890,15 @@ "updateContext": null }, "value": "=", - "start": 152099, - "end": 152100, + "start": 152613, + "end": 152614, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 19 }, "end": { - "line": 3758, + "line": 3766, "column": 20 } } @@ -516655,15 +519917,15 @@ "updateContext": null }, "value": 0, - "start": 152101, - "end": 152102, + "start": 152615, + "end": 152616, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 21 }, "end": { - "line": 3758, + "line": 3766, "column": 22 } } @@ -516681,15 +519943,15 @@ "binop": null, "updateContext": null }, - "start": 152102, - "end": 152103, + "start": 152616, + "end": 152617, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 22 }, "end": { - "line": 3758, + "line": 3766, "column": 23 } } @@ -516707,15 +519969,15 @@ "binop": null }, "value": "len", - "start": 152104, - "end": 152107, + "start": 152618, + "end": 152621, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 24 }, "end": { - "line": 3758, + "line": 3766, "column": 27 } } @@ -516734,15 +519996,15 @@ "updateContext": null }, "value": "=", - "start": 152108, - "end": 152109, + "start": 152622, + "end": 152623, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 28 }, "end": { - "line": 3758, + "line": 3766, "column": 29 } } @@ -516760,15 +520022,15 @@ "binop": null }, "value": "renderFlags", - "start": 152110, - "end": 152121, + "start": 152624, + "end": 152635, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 30 }, "end": { - "line": 3758, + "line": 3766, "column": 41 } } @@ -516786,15 +520048,15 @@ "binop": null, "updateContext": null }, - "start": 152121, - "end": 152122, + "start": 152635, + "end": 152636, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 41 }, "end": { - "line": 3758, + "line": 3766, "column": 42 } } @@ -516812,15 +520074,15 @@ "binop": null }, "value": "visibleLayers", - "start": 152122, - "end": 152135, + "start": 152636, + "end": 152649, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 42 }, "end": { - "line": 3758, + "line": 3766, "column": 55 } } @@ -516838,15 +520100,15 @@ "binop": null, "updateContext": null }, - "start": 152135, - "end": 152136, + "start": 152649, + "end": 152650, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 55 }, "end": { - "line": 3758, + "line": 3766, "column": 56 } } @@ -516864,15 +520126,15 @@ "binop": null }, "value": "length", - "start": 152136, - "end": 152142, + "start": 152650, + "end": 152656, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 56 }, "end": { - "line": 3758, + "line": 3766, "column": 62 } } @@ -516890,15 +520152,15 @@ "binop": null, "updateContext": null }, - "start": 152142, - "end": 152143, + "start": 152656, + "end": 152657, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 62 }, "end": { - "line": 3758, + "line": 3766, "column": 63 } } @@ -516916,15 +520178,15 @@ "binop": null }, "value": "i", - "start": 152144, - "end": 152145, + "start": 152658, + "end": 152659, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 64 }, "end": { - "line": 3758, + "line": 3766, "column": 65 } } @@ -516943,15 +520205,15 @@ "updateContext": null }, "value": "<", - "start": 152146, - "end": 152147, + "start": 152660, + "end": 152661, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 66 }, "end": { - "line": 3758, + "line": 3766, "column": 67 } } @@ -516969,15 +520231,15 @@ "binop": null }, "value": "len", - "start": 152148, - "end": 152151, + "start": 152662, + "end": 152665, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 68 }, "end": { - "line": 3758, + "line": 3766, "column": 71 } } @@ -516995,15 +520257,15 @@ "binop": null, "updateContext": null }, - "start": 152151, - "end": 152152, + "start": 152665, + "end": 152666, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 71 }, "end": { - "line": 3758, + "line": 3766, "column": 72 } } @@ -517021,15 +520283,15 @@ "binop": null }, "value": "i", - "start": 152153, - "end": 152154, + "start": 152667, + "end": 152668, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 73 }, "end": { - "line": 3758, + "line": 3766, "column": 74 } } @@ -517047,15 +520309,15 @@ "binop": null }, "value": "++", - "start": 152154, - "end": 152156, + "start": 152668, + "end": 152670, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 74 }, "end": { - "line": 3758, + "line": 3766, "column": 76 } } @@ -517072,15 +520334,15 @@ "postfix": false, "binop": null }, - "start": 152156, - "end": 152157, + "start": 152670, + "end": 152671, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 76 }, "end": { - "line": 3758, + "line": 3766, "column": 77 } } @@ -517097,15 +520359,15 @@ "postfix": false, "binop": null }, - "start": 152158, - "end": 152159, + "start": 152672, + "end": 152673, "loc": { "start": { - "line": 3758, + "line": 3766, "column": 78 }, "end": { - "line": 3758, + "line": 3766, "column": 79 } } @@ -517125,15 +520387,15 @@ "updateContext": null }, "value": "const", - "start": 152172, - "end": 152177, + "start": 152686, + "end": 152691, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 12 }, "end": { - "line": 3759, + "line": 3767, "column": 17 } } @@ -517151,15 +520413,15 @@ "binop": null }, "value": "layerIndex", - "start": 152178, - "end": 152188, + "start": 152692, + "end": 152702, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 18 }, "end": { - "line": 3759, + "line": 3767, "column": 28 } } @@ -517178,15 +520440,15 @@ "updateContext": null }, "value": "=", - "start": 152189, - "end": 152190, + "start": 152703, + "end": 152704, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 29 }, "end": { - "line": 3759, + "line": 3767, "column": 30 } } @@ -517204,15 +520466,15 @@ "binop": null }, "value": "renderFlags", - "start": 152191, - "end": 152202, + "start": 152705, + "end": 152716, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 31 }, "end": { - "line": 3759, + "line": 3767, "column": 42 } } @@ -517230,15 +520492,15 @@ "binop": null, "updateContext": null }, - "start": 152202, - "end": 152203, + "start": 152716, + "end": 152717, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 42 }, "end": { - "line": 3759, + "line": 3767, "column": 43 } } @@ -517256,15 +520518,15 @@ "binop": null }, "value": "visibleLayers", - "start": 152203, - "end": 152216, + "start": 152717, + "end": 152730, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 43 }, "end": { - "line": 3759, + "line": 3767, "column": 56 } } @@ -517282,15 +520544,15 @@ "binop": null, "updateContext": null }, - "start": 152216, - "end": 152217, + "start": 152730, + "end": 152731, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 56 }, "end": { - "line": 3759, + "line": 3767, "column": 57 } } @@ -517308,15 +520570,15 @@ "binop": null }, "value": "i", - "start": 152217, - "end": 152218, + "start": 152731, + "end": 152732, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 57 }, "end": { - "line": 3759, + "line": 3767, "column": 58 } } @@ -517334,15 +520596,15 @@ "binop": null, "updateContext": null }, - "start": 152218, - "end": 152219, + "start": 152732, + "end": 152733, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 58 }, "end": { - "line": 3759, + "line": 3767, "column": 59 } } @@ -517360,15 +520622,15 @@ "binop": null, "updateContext": null }, - "start": 152219, - "end": 152220, + "start": 152733, + "end": 152734, "loc": { "start": { - "line": 3759, + "line": 3767, "column": 59 }, "end": { - "line": 3759, + "line": 3767, "column": 60 } } @@ -517388,15 +520650,15 @@ "updateContext": null }, "value": "this", - "start": 152233, - "end": 152237, + "start": 152747, + "end": 152751, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 12 }, "end": { - "line": 3760, + "line": 3768, "column": 16 } } @@ -517414,15 +520676,15 @@ "binop": null, "updateContext": null }, - "start": 152237, - "end": 152238, + "start": 152751, + "end": 152752, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 16 }, "end": { - "line": 3760, + "line": 3768, "column": 17 } } @@ -517440,15 +520702,15 @@ "binop": null }, "value": "layerList", - "start": 152238, - "end": 152247, + "start": 152752, + "end": 152761, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 17 }, "end": { - "line": 3760, + "line": 3768, "column": 26 } } @@ -517466,15 +520728,15 @@ "binop": null, "updateContext": null }, - "start": 152247, - "end": 152248, + "start": 152761, + "end": 152762, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 26 }, "end": { - "line": 3760, + "line": 3768, "column": 27 } } @@ -517492,15 +520754,15 @@ "binop": null }, "value": "layerIndex", - "start": 152248, - "end": 152258, + "start": 152762, + "end": 152772, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 27 }, "end": { - "line": 3760, + "line": 3768, "column": 37 } } @@ -517518,15 +520780,15 @@ "binop": null, "updateContext": null }, - "start": 152258, - "end": 152259, + "start": 152772, + "end": 152773, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 37 }, "end": { - "line": 3760, + "line": 3768, "column": 38 } } @@ -517544,15 +520806,15 @@ "binop": null, "updateContext": null }, - "start": 152259, - "end": 152260, + "start": 152773, + "end": 152774, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 38 }, "end": { - "line": 3760, + "line": 3768, "column": 39 } } @@ -517570,15 +520832,15 @@ "binop": null }, "value": "drawEdgesXRayed", - "start": 152260, - "end": 152275, + "start": 152774, + "end": 152789, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 39 }, "end": { - "line": 3760, + "line": 3768, "column": 54 } } @@ -517595,15 +520857,15 @@ "postfix": false, "binop": null }, - "start": 152275, - "end": 152276, + "start": 152789, + "end": 152790, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 54 }, "end": { - "line": 3760, + "line": 3768, "column": 55 } } @@ -517621,15 +520883,15 @@ "binop": null }, "value": "renderFlags", - "start": 152276, - "end": 152287, + "start": 152790, + "end": 152801, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 55 }, "end": { - "line": 3760, + "line": 3768, "column": 66 } } @@ -517647,15 +520909,15 @@ "binop": null, "updateContext": null }, - "start": 152287, - "end": 152288, + "start": 152801, + "end": 152802, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 66 }, "end": { - "line": 3760, + "line": 3768, "column": 67 } } @@ -517673,15 +520935,15 @@ "binop": null }, "value": "frameCtx", - "start": 152289, - "end": 152297, + "start": 152803, + "end": 152811, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 68 }, "end": { - "line": 3760, + "line": 3768, "column": 76 } } @@ -517698,15 +520960,15 @@ "postfix": false, "binop": null }, - "start": 152297, - "end": 152298, + "start": 152811, + "end": 152812, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 76 }, "end": { - "line": 3760, + "line": 3768, "column": 77 } } @@ -517724,15 +520986,15 @@ "binop": null, "updateContext": null }, - "start": 152298, - "end": 152299, + "start": 152812, + "end": 152813, "loc": { "start": { - "line": 3760, + "line": 3768, "column": 77 }, "end": { - "line": 3760, + "line": 3768, "column": 78 } } @@ -517749,15 +521011,15 @@ "postfix": false, "binop": null }, - "start": 152308, - "end": 152309, + "start": 152822, + "end": 152823, "loc": { "start": { - "line": 3761, + "line": 3769, "column": 8 }, "end": { - "line": 3761, + "line": 3769, "column": 9 } } @@ -517774,15 +521036,15 @@ "postfix": false, "binop": null }, - "start": 152314, - "end": 152315, + "start": 152828, + "end": 152829, "loc": { "start": { - "line": 3762, + "line": 3770, "column": 4 }, "end": { - "line": 3762, + "line": 3770, "column": 5 } } @@ -517790,15 +521052,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 152321, - "end": 152336, + "start": 152835, + "end": 152850, "loc": { "start": { - "line": 3764, + "line": 3772, "column": 4 }, "end": { - "line": 3764, + "line": 3772, "column": 19 } } @@ -517816,15 +521078,15 @@ "binop": null }, "value": "drawEdgesHighlighted", - "start": 152341, - "end": 152361, + "start": 152855, + "end": 152875, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 4 }, "end": { - "line": 3765, + "line": 3773, "column": 24 } } @@ -517841,15 +521103,15 @@ "postfix": false, "binop": null }, - "start": 152361, - "end": 152362, + "start": 152875, + "end": 152876, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 24 }, "end": { - "line": 3765, + "line": 3773, "column": 25 } } @@ -517867,15 +521129,15 @@ "binop": null }, "value": "frameCtx", - "start": 152362, - "end": 152370, + "start": 152876, + "end": 152884, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 25 }, "end": { - "line": 3765, + "line": 3773, "column": 33 } } @@ -517892,15 +521154,15 @@ "postfix": false, "binop": null }, - "start": 152370, - "end": 152371, + "start": 152884, + "end": 152885, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 33 }, "end": { - "line": 3765, + "line": 3773, "column": 34 } } @@ -517917,15 +521179,15 @@ "postfix": false, "binop": null }, - "start": 152372, - "end": 152373, + "start": 152886, + "end": 152887, "loc": { "start": { - "line": 3765, + "line": 3773, "column": 35 }, "end": { - "line": 3765, + "line": 3773, "column": 36 } } @@ -517945,15 +521207,15 @@ "updateContext": null }, "value": "const", - "start": 152382, - "end": 152387, + "start": 152896, + "end": 152901, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 8 }, "end": { - "line": 3766, + "line": 3774, "column": 13 } } @@ -517971,15 +521233,15 @@ "binop": null }, "value": "renderFlags", - "start": 152388, - "end": 152399, + "start": 152902, + "end": 152913, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 14 }, "end": { - "line": 3766, + "line": 3774, "column": 25 } } @@ -517998,15 +521260,15 @@ "updateContext": null }, "value": "=", - "start": 152400, - "end": 152401, + "start": 152914, + "end": 152915, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 26 }, "end": { - "line": 3766, + "line": 3774, "column": 27 } } @@ -518026,15 +521288,15 @@ "updateContext": null }, "value": "this", - "start": 152402, - "end": 152406, + "start": 152916, + "end": 152920, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 28 }, "end": { - "line": 3766, + "line": 3774, "column": 32 } } @@ -518052,15 +521314,15 @@ "binop": null, "updateContext": null }, - "start": 152406, - "end": 152407, + "start": 152920, + "end": 152921, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 32 }, "end": { - "line": 3766, + "line": 3774, "column": 33 } } @@ -518078,15 +521340,15 @@ "binop": null }, "value": "renderFlags", - "start": 152407, - "end": 152418, + "start": 152921, + "end": 152932, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 33 }, "end": { - "line": 3766, + "line": 3774, "column": 44 } } @@ -518104,15 +521366,15 @@ "binop": null, "updateContext": null }, - "start": 152418, - "end": 152419, + "start": 152932, + "end": 152933, "loc": { "start": { - "line": 3766, + "line": 3774, "column": 44 }, "end": { - "line": 3766, + "line": 3774, "column": 45 } } @@ -518132,15 +521394,15 @@ "updateContext": null }, "value": "for", - "start": 152428, - "end": 152431, + "start": 152942, + "end": 152945, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 8 }, "end": { - "line": 3767, + "line": 3775, "column": 11 } } @@ -518157,15 +521419,15 @@ "postfix": false, "binop": null }, - "start": 152432, - "end": 152433, + "start": 152946, + "end": 152947, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 12 }, "end": { - "line": 3767, + "line": 3775, "column": 13 } } @@ -518185,15 +521447,15 @@ "updateContext": null }, "value": "let", - "start": 152433, - "end": 152436, + "start": 152947, + "end": 152950, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 13 }, "end": { - "line": 3767, + "line": 3775, "column": 16 } } @@ -518211,15 +521473,15 @@ "binop": null }, "value": "i", - "start": 152437, - "end": 152438, + "start": 152951, + "end": 152952, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 17 }, "end": { - "line": 3767, + "line": 3775, "column": 18 } } @@ -518238,15 +521500,15 @@ "updateContext": null }, "value": "=", - "start": 152439, - "end": 152440, + "start": 152953, + "end": 152954, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 19 }, "end": { - "line": 3767, + "line": 3775, "column": 20 } } @@ -518265,15 +521527,15 @@ "updateContext": null }, "value": 0, - "start": 152441, - "end": 152442, + "start": 152955, + "end": 152956, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 21 }, "end": { - "line": 3767, + "line": 3775, "column": 22 } } @@ -518291,15 +521553,15 @@ "binop": null, "updateContext": null }, - "start": 152442, - "end": 152443, + "start": 152956, + "end": 152957, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 22 }, "end": { - "line": 3767, + "line": 3775, "column": 23 } } @@ -518317,15 +521579,15 @@ "binop": null }, "value": "len", - "start": 152444, - "end": 152447, + "start": 152958, + "end": 152961, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 24 }, "end": { - "line": 3767, + "line": 3775, "column": 27 } } @@ -518344,15 +521606,15 @@ "updateContext": null }, "value": "=", - "start": 152448, - "end": 152449, + "start": 152962, + "end": 152963, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 28 }, "end": { - "line": 3767, + "line": 3775, "column": 29 } } @@ -518370,15 +521632,15 @@ "binop": null }, "value": "renderFlags", - "start": 152450, - "end": 152461, + "start": 152964, + "end": 152975, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 30 }, "end": { - "line": 3767, + "line": 3775, "column": 41 } } @@ -518396,15 +521658,15 @@ "binop": null, "updateContext": null }, - "start": 152461, - "end": 152462, + "start": 152975, + "end": 152976, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 41 }, "end": { - "line": 3767, + "line": 3775, "column": 42 } } @@ -518422,15 +521684,15 @@ "binop": null }, "value": "visibleLayers", - "start": 152462, - "end": 152475, + "start": 152976, + "end": 152989, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 42 }, "end": { - "line": 3767, + "line": 3775, "column": 55 } } @@ -518448,15 +521710,15 @@ "binop": null, "updateContext": null }, - "start": 152475, - "end": 152476, + "start": 152989, + "end": 152990, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 55 }, "end": { - "line": 3767, + "line": 3775, "column": 56 } } @@ -518474,15 +521736,15 @@ "binop": null }, "value": "length", - "start": 152476, - "end": 152482, + "start": 152990, + "end": 152996, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 56 }, "end": { - "line": 3767, + "line": 3775, "column": 62 } } @@ -518500,15 +521762,15 @@ "binop": null, "updateContext": null }, - "start": 152482, - "end": 152483, + "start": 152996, + "end": 152997, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 62 }, "end": { - "line": 3767, + "line": 3775, "column": 63 } } @@ -518526,15 +521788,15 @@ "binop": null }, "value": "i", - "start": 152484, - "end": 152485, + "start": 152998, + "end": 152999, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 64 }, "end": { - "line": 3767, + "line": 3775, "column": 65 } } @@ -518553,15 +521815,15 @@ "updateContext": null }, "value": "<", - "start": 152486, - "end": 152487, + "start": 153000, + "end": 153001, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 66 }, "end": { - "line": 3767, + "line": 3775, "column": 67 } } @@ -518579,15 +521841,15 @@ "binop": null }, "value": "len", - "start": 152488, - "end": 152491, + "start": 153002, + "end": 153005, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 68 }, "end": { - "line": 3767, + "line": 3775, "column": 71 } } @@ -518605,15 +521867,15 @@ "binop": null, "updateContext": null }, - "start": 152491, - "end": 152492, + "start": 153005, + "end": 153006, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 71 }, "end": { - "line": 3767, + "line": 3775, "column": 72 } } @@ -518631,15 +521893,15 @@ "binop": null }, "value": "i", - "start": 152493, - "end": 152494, + "start": 153007, + "end": 153008, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 73 }, "end": { - "line": 3767, + "line": 3775, "column": 74 } } @@ -518657,15 +521919,15 @@ "binop": null }, "value": "++", - "start": 152494, - "end": 152496, + "start": 153008, + "end": 153010, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 74 }, "end": { - "line": 3767, + "line": 3775, "column": 76 } } @@ -518682,15 +521944,15 @@ "postfix": false, "binop": null }, - "start": 152496, - "end": 152497, + "start": 153010, + "end": 153011, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 76 }, "end": { - "line": 3767, + "line": 3775, "column": 77 } } @@ -518707,15 +521969,15 @@ "postfix": false, "binop": null }, - "start": 152498, - "end": 152499, + "start": 153012, + "end": 153013, "loc": { "start": { - "line": 3767, + "line": 3775, "column": 78 }, "end": { - "line": 3767, + "line": 3775, "column": 79 } } @@ -518735,15 +521997,15 @@ "updateContext": null }, "value": "const", - "start": 152512, - "end": 152517, + "start": 153026, + "end": 153031, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 12 }, "end": { - "line": 3768, + "line": 3776, "column": 17 } } @@ -518761,15 +522023,15 @@ "binop": null }, "value": "layerIndex", - "start": 152518, - "end": 152528, + "start": 153032, + "end": 153042, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 18 }, "end": { - "line": 3768, + "line": 3776, "column": 28 } } @@ -518788,15 +522050,15 @@ "updateContext": null }, "value": "=", - "start": 152529, - "end": 152530, + "start": 153043, + "end": 153044, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 29 }, "end": { - "line": 3768, + "line": 3776, "column": 30 } } @@ -518814,15 +522076,15 @@ "binop": null }, "value": "renderFlags", - "start": 152531, - "end": 152542, + "start": 153045, + "end": 153056, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 31 }, "end": { - "line": 3768, + "line": 3776, "column": 42 } } @@ -518840,15 +522102,15 @@ "binop": null, "updateContext": null }, - "start": 152542, - "end": 152543, + "start": 153056, + "end": 153057, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 42 }, "end": { - "line": 3768, + "line": 3776, "column": 43 } } @@ -518866,15 +522128,15 @@ "binop": null }, "value": "visibleLayers", - "start": 152543, - "end": 152556, + "start": 153057, + "end": 153070, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 43 }, "end": { - "line": 3768, + "line": 3776, "column": 56 } } @@ -518892,15 +522154,15 @@ "binop": null, "updateContext": null }, - "start": 152556, - "end": 152557, + "start": 153070, + "end": 153071, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 56 }, "end": { - "line": 3768, + "line": 3776, "column": 57 } } @@ -518918,15 +522180,15 @@ "binop": null }, "value": "i", - "start": 152557, - "end": 152558, + "start": 153071, + "end": 153072, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 57 }, "end": { - "line": 3768, + "line": 3776, "column": 58 } } @@ -518944,15 +522206,15 @@ "binop": null, "updateContext": null }, - "start": 152558, - "end": 152559, + "start": 153072, + "end": 153073, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 58 }, "end": { - "line": 3768, + "line": 3776, "column": 59 } } @@ -518970,15 +522232,15 @@ "binop": null, "updateContext": null }, - "start": 152559, - "end": 152560, + "start": 153073, + "end": 153074, "loc": { "start": { - "line": 3768, + "line": 3776, "column": 59 }, "end": { - "line": 3768, + "line": 3776, "column": 60 } } @@ -518998,15 +522260,15 @@ "updateContext": null }, "value": "this", - "start": 152573, - "end": 152577, + "start": 153087, + "end": 153091, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 12 }, "end": { - "line": 3769, + "line": 3777, "column": 16 } } @@ -519024,15 +522286,15 @@ "binop": null, "updateContext": null }, - "start": 152577, - "end": 152578, + "start": 153091, + "end": 153092, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 16 }, "end": { - "line": 3769, + "line": 3777, "column": 17 } } @@ -519050,15 +522312,15 @@ "binop": null }, "value": "layerList", - "start": 152578, - "end": 152587, + "start": 153092, + "end": 153101, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 17 }, "end": { - "line": 3769, + "line": 3777, "column": 26 } } @@ -519076,15 +522338,15 @@ "binop": null, "updateContext": null }, - "start": 152587, - "end": 152588, + "start": 153101, + "end": 153102, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 26 }, "end": { - "line": 3769, + "line": 3777, "column": 27 } } @@ -519102,15 +522364,15 @@ "binop": null }, "value": "layerIndex", - "start": 152588, - "end": 152598, + "start": 153102, + "end": 153112, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 27 }, "end": { - "line": 3769, + "line": 3777, "column": 37 } } @@ -519128,15 +522390,15 @@ "binop": null, "updateContext": null }, - "start": 152598, - "end": 152599, + "start": 153112, + "end": 153113, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 37 }, "end": { - "line": 3769, + "line": 3777, "column": 38 } } @@ -519154,15 +522416,15 @@ "binop": null, "updateContext": null }, - "start": 152599, - "end": 152600, + "start": 153113, + "end": 153114, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 38 }, "end": { - "line": 3769, + "line": 3777, "column": 39 } } @@ -519180,15 +522442,15 @@ "binop": null }, "value": "drawEdgesHighlighted", - "start": 152600, - "end": 152620, + "start": 153114, + "end": 153134, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 39 }, "end": { - "line": 3769, + "line": 3777, "column": 59 } } @@ -519205,15 +522467,15 @@ "postfix": false, "binop": null }, - "start": 152620, - "end": 152621, + "start": 153134, + "end": 153135, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 59 }, "end": { - "line": 3769, + "line": 3777, "column": 60 } } @@ -519231,15 +522493,15 @@ "binop": null }, "value": "renderFlags", - "start": 152621, - "end": 152632, + "start": 153135, + "end": 153146, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 60 }, "end": { - "line": 3769, + "line": 3777, "column": 71 } } @@ -519257,15 +522519,15 @@ "binop": null, "updateContext": null }, - "start": 152632, - "end": 152633, + "start": 153146, + "end": 153147, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 71 }, "end": { - "line": 3769, + "line": 3777, "column": 72 } } @@ -519283,15 +522545,15 @@ "binop": null }, "value": "frameCtx", - "start": 152634, - "end": 152642, + "start": 153148, + "end": 153156, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 73 }, "end": { - "line": 3769, + "line": 3777, "column": 81 } } @@ -519308,15 +522570,15 @@ "postfix": false, "binop": null }, - "start": 152642, - "end": 152643, + "start": 153156, + "end": 153157, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 81 }, "end": { - "line": 3769, + "line": 3777, "column": 82 } } @@ -519334,15 +522596,15 @@ "binop": null, "updateContext": null }, - "start": 152643, - "end": 152644, + "start": 153157, + "end": 153158, "loc": { "start": { - "line": 3769, + "line": 3777, "column": 82 }, "end": { - "line": 3769, + "line": 3777, "column": 83 } } @@ -519359,15 +522621,15 @@ "postfix": false, "binop": null }, - "start": 152653, - "end": 152654, + "start": 153167, + "end": 153168, "loc": { "start": { - "line": 3770, + "line": 3778, "column": 8 }, "end": { - "line": 3770, + "line": 3778, "column": 9 } } @@ -519384,15 +522646,15 @@ "postfix": false, "binop": null }, - "start": 152659, - "end": 152660, + "start": 153173, + "end": 153174, "loc": { "start": { - "line": 3771, + "line": 3779, "column": 4 }, "end": { - "line": 3771, + "line": 3779, "column": 5 } } @@ -519400,15 +522662,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 152666, - "end": 152681, + "start": 153180, + "end": 153195, "loc": { "start": { - "line": 3773, + "line": 3781, "column": 4 }, "end": { - "line": 3773, + "line": 3781, "column": 19 } } @@ -519426,15 +522688,15 @@ "binop": null }, "value": "drawEdgesSelected", - "start": 152686, - "end": 152703, + "start": 153200, + "end": 153217, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 4 }, "end": { - "line": 3774, + "line": 3782, "column": 21 } } @@ -519451,15 +522713,15 @@ "postfix": false, "binop": null }, - "start": 152703, - "end": 152704, + "start": 153217, + "end": 153218, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 21 }, "end": { - "line": 3774, + "line": 3782, "column": 22 } } @@ -519477,15 +522739,15 @@ "binop": null }, "value": "frameCtx", - "start": 152704, - "end": 152712, + "start": 153218, + "end": 153226, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 22 }, "end": { - "line": 3774, + "line": 3782, "column": 30 } } @@ -519502,15 +522764,15 @@ "postfix": false, "binop": null }, - "start": 152712, - "end": 152713, + "start": 153226, + "end": 153227, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 30 }, "end": { - "line": 3774, + "line": 3782, "column": 31 } } @@ -519527,15 +522789,15 @@ "postfix": false, "binop": null }, - "start": 152714, - "end": 152715, + "start": 153228, + "end": 153229, "loc": { "start": { - "line": 3774, + "line": 3782, "column": 32 }, "end": { - "line": 3774, + "line": 3782, "column": 33 } } @@ -519555,15 +522817,15 @@ "updateContext": null }, "value": "const", - "start": 152724, - "end": 152729, + "start": 153238, + "end": 153243, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 8 }, "end": { - "line": 3775, + "line": 3783, "column": 13 } } @@ -519581,15 +522843,15 @@ "binop": null }, "value": "renderFlags", - "start": 152730, - "end": 152741, + "start": 153244, + "end": 153255, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 14 }, "end": { - "line": 3775, + "line": 3783, "column": 25 } } @@ -519608,15 +522870,15 @@ "updateContext": null }, "value": "=", - "start": 152742, - "end": 152743, + "start": 153256, + "end": 153257, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 26 }, "end": { - "line": 3775, + "line": 3783, "column": 27 } } @@ -519636,15 +522898,15 @@ "updateContext": null }, "value": "this", - "start": 152744, - "end": 152748, + "start": 153258, + "end": 153262, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 28 }, "end": { - "line": 3775, + "line": 3783, "column": 32 } } @@ -519662,15 +522924,15 @@ "binop": null, "updateContext": null }, - "start": 152748, - "end": 152749, + "start": 153262, + "end": 153263, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 32 }, "end": { - "line": 3775, + "line": 3783, "column": 33 } } @@ -519688,15 +522950,15 @@ "binop": null }, "value": "renderFlags", - "start": 152749, - "end": 152760, + "start": 153263, + "end": 153274, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 33 }, "end": { - "line": 3775, + "line": 3783, "column": 44 } } @@ -519714,15 +522976,15 @@ "binop": null, "updateContext": null }, - "start": 152760, - "end": 152761, + "start": 153274, + "end": 153275, "loc": { "start": { - "line": 3775, + "line": 3783, "column": 44 }, "end": { - "line": 3775, + "line": 3783, "column": 45 } } @@ -519742,15 +523004,15 @@ "updateContext": null }, "value": "for", - "start": 152770, - "end": 152773, + "start": 153284, + "end": 153287, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 8 }, "end": { - "line": 3776, + "line": 3784, "column": 11 } } @@ -519767,15 +523029,15 @@ "postfix": false, "binop": null }, - "start": 152774, - "end": 152775, + "start": 153288, + "end": 153289, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 12 }, "end": { - "line": 3776, + "line": 3784, "column": 13 } } @@ -519795,15 +523057,15 @@ "updateContext": null }, "value": "let", - "start": 152775, - "end": 152778, + "start": 153289, + "end": 153292, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 13 }, "end": { - "line": 3776, + "line": 3784, "column": 16 } } @@ -519821,15 +523083,15 @@ "binop": null }, "value": "i", - "start": 152779, - "end": 152780, + "start": 153293, + "end": 153294, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 17 }, "end": { - "line": 3776, + "line": 3784, "column": 18 } } @@ -519848,15 +523110,15 @@ "updateContext": null }, "value": "=", - "start": 152781, - "end": 152782, + "start": 153295, + "end": 153296, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 19 }, "end": { - "line": 3776, + "line": 3784, "column": 20 } } @@ -519875,15 +523137,15 @@ "updateContext": null }, "value": 0, - "start": 152783, - "end": 152784, + "start": 153297, + "end": 153298, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 21 }, "end": { - "line": 3776, + "line": 3784, "column": 22 } } @@ -519901,15 +523163,15 @@ "binop": null, "updateContext": null }, - "start": 152784, - "end": 152785, + "start": 153298, + "end": 153299, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 22 }, "end": { - "line": 3776, + "line": 3784, "column": 23 } } @@ -519927,15 +523189,15 @@ "binop": null }, "value": "len", - "start": 152786, - "end": 152789, + "start": 153300, + "end": 153303, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 24 }, "end": { - "line": 3776, + "line": 3784, "column": 27 } } @@ -519954,15 +523216,15 @@ "updateContext": null }, "value": "=", - "start": 152790, - "end": 152791, + "start": 153304, + "end": 153305, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 28 }, "end": { - "line": 3776, + "line": 3784, "column": 29 } } @@ -519980,15 +523242,15 @@ "binop": null }, "value": "renderFlags", - "start": 152792, - "end": 152803, + "start": 153306, + "end": 153317, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 30 }, "end": { - "line": 3776, + "line": 3784, "column": 41 } } @@ -520006,15 +523268,15 @@ "binop": null, "updateContext": null }, - "start": 152803, - "end": 152804, + "start": 153317, + "end": 153318, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 41 }, "end": { - "line": 3776, + "line": 3784, "column": 42 } } @@ -520032,15 +523294,15 @@ "binop": null }, "value": "visibleLayers", - "start": 152804, - "end": 152817, + "start": 153318, + "end": 153331, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 42 }, "end": { - "line": 3776, + "line": 3784, "column": 55 } } @@ -520058,15 +523320,15 @@ "binop": null, "updateContext": null }, - "start": 152817, - "end": 152818, + "start": 153331, + "end": 153332, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 55 }, "end": { - "line": 3776, + "line": 3784, "column": 56 } } @@ -520084,15 +523346,15 @@ "binop": null }, "value": "length", - "start": 152818, - "end": 152824, + "start": 153332, + "end": 153338, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 56 }, "end": { - "line": 3776, + "line": 3784, "column": 62 } } @@ -520110,15 +523372,15 @@ "binop": null, "updateContext": null }, - "start": 152824, - "end": 152825, + "start": 153338, + "end": 153339, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 62 }, "end": { - "line": 3776, + "line": 3784, "column": 63 } } @@ -520136,15 +523398,15 @@ "binop": null }, "value": "i", - "start": 152826, - "end": 152827, + "start": 153340, + "end": 153341, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 64 }, "end": { - "line": 3776, + "line": 3784, "column": 65 } } @@ -520163,15 +523425,15 @@ "updateContext": null }, "value": "<", - "start": 152828, - "end": 152829, + "start": 153342, + "end": 153343, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 66 }, "end": { - "line": 3776, + "line": 3784, "column": 67 } } @@ -520189,15 +523451,15 @@ "binop": null }, "value": "len", - "start": 152830, - "end": 152833, + "start": 153344, + "end": 153347, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 68 }, "end": { - "line": 3776, + "line": 3784, "column": 71 } } @@ -520215,15 +523477,15 @@ "binop": null, "updateContext": null }, - "start": 152833, - "end": 152834, + "start": 153347, + "end": 153348, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 71 }, "end": { - "line": 3776, + "line": 3784, "column": 72 } } @@ -520241,15 +523503,15 @@ "binop": null }, "value": "i", - "start": 152835, - "end": 152836, + "start": 153349, + "end": 153350, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 73 }, "end": { - "line": 3776, + "line": 3784, "column": 74 } } @@ -520267,15 +523529,15 @@ "binop": null }, "value": "++", - "start": 152836, - "end": 152838, + "start": 153350, + "end": 153352, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 74 }, "end": { - "line": 3776, + "line": 3784, "column": 76 } } @@ -520292,15 +523554,15 @@ "postfix": false, "binop": null }, - "start": 152838, - "end": 152839, + "start": 153352, + "end": 153353, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 76 }, "end": { - "line": 3776, + "line": 3784, "column": 77 } } @@ -520317,15 +523579,15 @@ "postfix": false, "binop": null }, - "start": 152840, - "end": 152841, + "start": 153354, + "end": 153355, "loc": { "start": { - "line": 3776, + "line": 3784, "column": 78 }, "end": { - "line": 3776, + "line": 3784, "column": 79 } } @@ -520345,15 +523607,15 @@ "updateContext": null }, "value": "const", - "start": 152854, - "end": 152859, + "start": 153368, + "end": 153373, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 12 }, "end": { - "line": 3777, + "line": 3785, "column": 17 } } @@ -520371,15 +523633,15 @@ "binop": null }, "value": "layerIndex", - "start": 152860, - "end": 152870, + "start": 153374, + "end": 153384, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 18 }, "end": { - "line": 3777, + "line": 3785, "column": 28 } } @@ -520398,15 +523660,15 @@ "updateContext": null }, "value": "=", - "start": 152871, - "end": 152872, + "start": 153385, + "end": 153386, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 29 }, "end": { - "line": 3777, + "line": 3785, "column": 30 } } @@ -520424,15 +523686,15 @@ "binop": null }, "value": "renderFlags", - "start": 152873, - "end": 152884, + "start": 153387, + "end": 153398, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 31 }, "end": { - "line": 3777, + "line": 3785, "column": 42 } } @@ -520450,15 +523712,15 @@ "binop": null, "updateContext": null }, - "start": 152884, - "end": 152885, + "start": 153398, + "end": 153399, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 42 }, "end": { - "line": 3777, + "line": 3785, "column": 43 } } @@ -520476,15 +523738,15 @@ "binop": null }, "value": "visibleLayers", - "start": 152885, - "end": 152898, + "start": 153399, + "end": 153412, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 43 }, "end": { - "line": 3777, + "line": 3785, "column": 56 } } @@ -520502,15 +523764,15 @@ "binop": null, "updateContext": null }, - "start": 152898, - "end": 152899, + "start": 153412, + "end": 153413, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 56 }, "end": { - "line": 3777, + "line": 3785, "column": 57 } } @@ -520528,15 +523790,15 @@ "binop": null }, "value": "i", - "start": 152899, - "end": 152900, + "start": 153413, + "end": 153414, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 57 }, "end": { - "line": 3777, + "line": 3785, "column": 58 } } @@ -520554,15 +523816,15 @@ "binop": null, "updateContext": null }, - "start": 152900, - "end": 152901, + "start": 153414, + "end": 153415, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 58 }, "end": { - "line": 3777, + "line": 3785, "column": 59 } } @@ -520580,15 +523842,15 @@ "binop": null, "updateContext": null }, - "start": 152901, - "end": 152902, + "start": 153415, + "end": 153416, "loc": { "start": { - "line": 3777, + "line": 3785, "column": 59 }, "end": { - "line": 3777, + "line": 3785, "column": 60 } } @@ -520608,15 +523870,15 @@ "updateContext": null }, "value": "this", - "start": 152915, - "end": 152919, + "start": 153429, + "end": 153433, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 12 }, "end": { - "line": 3778, + "line": 3786, "column": 16 } } @@ -520634,15 +523896,15 @@ "binop": null, "updateContext": null }, - "start": 152919, - "end": 152920, + "start": 153433, + "end": 153434, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 16 }, "end": { - "line": 3778, + "line": 3786, "column": 17 } } @@ -520660,15 +523922,15 @@ "binop": null }, "value": "layerList", - "start": 152920, - "end": 152929, + "start": 153434, + "end": 153443, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 17 }, "end": { - "line": 3778, + "line": 3786, "column": 26 } } @@ -520686,15 +523948,15 @@ "binop": null, "updateContext": null }, - "start": 152929, - "end": 152930, + "start": 153443, + "end": 153444, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 26 }, "end": { - "line": 3778, + "line": 3786, "column": 27 } } @@ -520712,15 +523974,15 @@ "binop": null }, "value": "layerIndex", - "start": 152930, - "end": 152940, + "start": 153444, + "end": 153454, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 27 }, "end": { - "line": 3778, + "line": 3786, "column": 37 } } @@ -520738,15 +524000,15 @@ "binop": null, "updateContext": null }, - "start": 152940, - "end": 152941, + "start": 153454, + "end": 153455, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 37 }, "end": { - "line": 3778, + "line": 3786, "column": 38 } } @@ -520764,15 +524026,15 @@ "binop": null, "updateContext": null }, - "start": 152941, - "end": 152942, + "start": 153455, + "end": 153456, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 38 }, "end": { - "line": 3778, + "line": 3786, "column": 39 } } @@ -520790,15 +524052,15 @@ "binop": null }, "value": "drawEdgesSelected", - "start": 152942, - "end": 152959, + "start": 153456, + "end": 153473, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 39 }, "end": { - "line": 3778, + "line": 3786, "column": 56 } } @@ -520815,15 +524077,15 @@ "postfix": false, "binop": null }, - "start": 152959, - "end": 152960, + "start": 153473, + "end": 153474, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 56 }, "end": { - "line": 3778, + "line": 3786, "column": 57 } } @@ -520841,15 +524103,15 @@ "binop": null }, "value": "renderFlags", - "start": 152960, - "end": 152971, + "start": 153474, + "end": 153485, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 57 }, "end": { - "line": 3778, + "line": 3786, "column": 68 } } @@ -520867,15 +524129,15 @@ "binop": null, "updateContext": null }, - "start": 152971, - "end": 152972, + "start": 153485, + "end": 153486, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 68 }, "end": { - "line": 3778, + "line": 3786, "column": 69 } } @@ -520893,15 +524155,15 @@ "binop": null }, "value": "frameCtx", - "start": 152973, - "end": 152981, + "start": 153487, + "end": 153495, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 70 }, "end": { - "line": 3778, + "line": 3786, "column": 78 } } @@ -520918,15 +524180,15 @@ "postfix": false, "binop": null }, - "start": 152981, - "end": 152982, + "start": 153495, + "end": 153496, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 78 }, "end": { - "line": 3778, + "line": 3786, "column": 79 } } @@ -520944,15 +524206,15 @@ "binop": null, "updateContext": null }, - "start": 152982, - "end": 152983, + "start": 153496, + "end": 153497, "loc": { "start": { - "line": 3778, + "line": 3786, "column": 79 }, "end": { - "line": 3778, + "line": 3786, "column": 80 } } @@ -520969,15 +524231,15 @@ "postfix": false, "binop": null }, - "start": 152992, - "end": 152993, + "start": 153506, + "end": 153507, "loc": { "start": { - "line": 3779, + "line": 3787, "column": 8 }, "end": { - "line": 3779, + "line": 3787, "column": 9 } } @@ -520994,15 +524256,15 @@ "postfix": false, "binop": null }, - "start": 152998, - "end": 152999, + "start": 153512, + "end": 153513, "loc": { "start": { - "line": 3780, + "line": 3788, "column": 4 }, "end": { - "line": 3780, + "line": 3788, "column": 5 } } @@ -521010,15 +524272,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 153005, - "end": 153032, + "start": 153519, + "end": 153546, "loc": { "start": { - "line": 3782, + "line": 3790, "column": 4 }, "end": { - "line": 3784, + "line": 3792, "column": 7 } } @@ -521036,15 +524298,15 @@ "binop": null }, "value": "drawOcclusion", - "start": 153037, - "end": 153050, + "start": 153551, + "end": 153564, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 4 }, "end": { - "line": 3785, + "line": 3793, "column": 17 } } @@ -521061,15 +524323,15 @@ "postfix": false, "binop": null }, - "start": 153050, - "end": 153051, + "start": 153564, + "end": 153565, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 17 }, "end": { - "line": 3785, + "line": 3793, "column": 18 } } @@ -521087,15 +524349,15 @@ "binop": null }, "value": "frameCtx", - "start": 153051, - "end": 153059, + "start": 153565, + "end": 153573, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 18 }, "end": { - "line": 3785, + "line": 3793, "column": 26 } } @@ -521112,15 +524374,15 @@ "postfix": false, "binop": null }, - "start": 153059, - "end": 153060, + "start": 153573, + "end": 153574, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 26 }, "end": { - "line": 3785, + "line": 3793, "column": 27 } } @@ -521137,15 +524399,15 @@ "postfix": false, "binop": null }, - "start": 153061, - "end": 153062, + "start": 153575, + "end": 153576, "loc": { "start": { - "line": 3785, + "line": 3793, "column": 28 }, "end": { - "line": 3785, + "line": 3793, "column": 29 } } @@ -521165,15 +524427,15 @@ "updateContext": null }, "value": "if", - "start": 153071, - "end": 153073, + "start": 153585, + "end": 153587, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 8 }, "end": { - "line": 3786, + "line": 3794, "column": 10 } } @@ -521190,15 +524452,15 @@ "postfix": false, "binop": null }, - "start": 153074, - "end": 153075, + "start": 153588, + "end": 153589, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 11 }, "end": { - "line": 3786, + "line": 3794, "column": 12 } } @@ -521218,15 +524480,15 @@ "updateContext": null }, "value": "this", - "start": 153075, - "end": 153079, + "start": 153589, + "end": 153593, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 12 }, "end": { - "line": 3786, + "line": 3794, "column": 16 } } @@ -521244,15 +524506,15 @@ "binop": null, "updateContext": null }, - "start": 153079, - "end": 153080, + "start": 153593, + "end": 153594, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 16 }, "end": { - "line": 3786, + "line": 3794, "column": 17 } } @@ -521270,15 +524532,15 @@ "binop": null }, "value": "numVisibleLayerPortions", - "start": 153080, - "end": 153103, + "start": 153594, + "end": 153617, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 17 }, "end": { - "line": 3786, + "line": 3794, "column": 40 } } @@ -521297,15 +524559,15 @@ "updateContext": null }, "value": "===", - "start": 153104, - "end": 153107, + "start": 153618, + "end": 153621, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 41 }, "end": { - "line": 3786, + "line": 3794, "column": 44 } } @@ -521324,15 +524586,15 @@ "updateContext": null }, "value": 0, - "start": 153108, - "end": 153109, + "start": 153622, + "end": 153623, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 45 }, "end": { - "line": 3786, + "line": 3794, "column": 46 } } @@ -521349,15 +524611,15 @@ "postfix": false, "binop": null }, - "start": 153109, - "end": 153110, + "start": 153623, + "end": 153624, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 46 }, "end": { - "line": 3786, + "line": 3794, "column": 47 } } @@ -521374,15 +524636,15 @@ "postfix": false, "binop": null }, - "start": 153111, - "end": 153112, + "start": 153625, + "end": 153626, "loc": { "start": { - "line": 3786, + "line": 3794, "column": 48 }, "end": { - "line": 3786, + "line": 3794, "column": 49 } } @@ -521402,15 +524664,15 @@ "updateContext": null }, "value": "return", - "start": 153125, - "end": 153131, + "start": 153639, + "end": 153645, "loc": { "start": { - "line": 3787, + "line": 3795, "column": 12 }, "end": { - "line": 3787, + "line": 3795, "column": 18 } } @@ -521428,15 +524690,15 @@ "binop": null, "updateContext": null }, - "start": 153131, - "end": 153132, + "start": 153645, + "end": 153646, "loc": { "start": { - "line": 3787, + "line": 3795, "column": 18 }, "end": { - "line": 3787, + "line": 3795, "column": 19 } } @@ -521453,15 +524715,15 @@ "postfix": false, "binop": null }, - "start": 153141, - "end": 153142, + "start": 153655, + "end": 153656, "loc": { "start": { - "line": 3788, + "line": 3796, "column": 8 }, "end": { - "line": 3788, + "line": 3796, "column": 9 } } @@ -521481,15 +524743,15 @@ "updateContext": null }, "value": "const", - "start": 153151, - "end": 153156, + "start": 153665, + "end": 153670, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 8 }, "end": { - "line": 3789, + "line": 3797, "column": 13 } } @@ -521507,15 +524769,15 @@ "binop": null }, "value": "renderFlags", - "start": 153157, - "end": 153168, + "start": 153671, + "end": 153682, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 14 }, "end": { - "line": 3789, + "line": 3797, "column": 25 } } @@ -521534,15 +524796,15 @@ "updateContext": null }, "value": "=", - "start": 153169, - "end": 153170, + "start": 153683, + "end": 153684, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 26 }, "end": { - "line": 3789, + "line": 3797, "column": 27 } } @@ -521562,15 +524824,15 @@ "updateContext": null }, "value": "this", - "start": 153171, - "end": 153175, + "start": 153685, + "end": 153689, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 28 }, "end": { - "line": 3789, + "line": 3797, "column": 32 } } @@ -521588,15 +524850,15 @@ "binop": null, "updateContext": null }, - "start": 153175, - "end": 153176, + "start": 153689, + "end": 153690, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 32 }, "end": { - "line": 3789, + "line": 3797, "column": 33 } } @@ -521614,15 +524876,15 @@ "binop": null }, "value": "renderFlags", - "start": 153176, - "end": 153187, + "start": 153690, + "end": 153701, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 33 }, "end": { - "line": 3789, + "line": 3797, "column": 44 } } @@ -521640,15 +524902,15 @@ "binop": null, "updateContext": null }, - "start": 153187, - "end": 153188, + "start": 153701, + "end": 153702, "loc": { "start": { - "line": 3789, + "line": 3797, "column": 44 }, "end": { - "line": 3789, + "line": 3797, "column": 45 } } @@ -521668,15 +524930,15 @@ "updateContext": null }, "value": "for", - "start": 153197, - "end": 153200, + "start": 153711, + "end": 153714, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 8 }, "end": { - "line": 3790, + "line": 3798, "column": 11 } } @@ -521693,15 +524955,15 @@ "postfix": false, "binop": null }, - "start": 153201, - "end": 153202, + "start": 153715, + "end": 153716, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 12 }, "end": { - "line": 3790, + "line": 3798, "column": 13 } } @@ -521721,15 +524983,15 @@ "updateContext": null }, "value": "let", - "start": 153202, - "end": 153205, + "start": 153716, + "end": 153719, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 13 }, "end": { - "line": 3790, + "line": 3798, "column": 16 } } @@ -521747,15 +525009,15 @@ "binop": null }, "value": "i", - "start": 153206, - "end": 153207, + "start": 153720, + "end": 153721, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 17 }, "end": { - "line": 3790, + "line": 3798, "column": 18 } } @@ -521774,15 +525036,15 @@ "updateContext": null }, "value": "=", - "start": 153208, - "end": 153209, + "start": 153722, + "end": 153723, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 19 }, "end": { - "line": 3790, + "line": 3798, "column": 20 } } @@ -521801,15 +525063,15 @@ "updateContext": null }, "value": 0, - "start": 153210, - "end": 153211, + "start": 153724, + "end": 153725, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 21 }, "end": { - "line": 3790, + "line": 3798, "column": 22 } } @@ -521827,15 +525089,15 @@ "binop": null, "updateContext": null }, - "start": 153211, - "end": 153212, + "start": 153725, + "end": 153726, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 22 }, "end": { - "line": 3790, + "line": 3798, "column": 23 } } @@ -521853,15 +525115,15 @@ "binop": null }, "value": "len", - "start": 153213, - "end": 153216, + "start": 153727, + "end": 153730, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 24 }, "end": { - "line": 3790, + "line": 3798, "column": 27 } } @@ -521880,15 +525142,15 @@ "updateContext": null }, "value": "=", - "start": 153217, - "end": 153218, + "start": 153731, + "end": 153732, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 28 }, "end": { - "line": 3790, + "line": 3798, "column": 29 } } @@ -521906,15 +525168,15 @@ "binop": null }, "value": "renderFlags", - "start": 153219, - "end": 153230, + "start": 153733, + "end": 153744, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 30 }, "end": { - "line": 3790, + "line": 3798, "column": 41 } } @@ -521932,15 +525194,15 @@ "binop": null, "updateContext": null }, - "start": 153230, - "end": 153231, + "start": 153744, + "end": 153745, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 41 }, "end": { - "line": 3790, + "line": 3798, "column": 42 } } @@ -521958,15 +525220,15 @@ "binop": null }, "value": "visibleLayers", - "start": 153231, - "end": 153244, + "start": 153745, + "end": 153758, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 42 }, "end": { - "line": 3790, + "line": 3798, "column": 55 } } @@ -521984,15 +525246,15 @@ "binop": null, "updateContext": null }, - "start": 153244, - "end": 153245, + "start": 153758, + "end": 153759, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 55 }, "end": { - "line": 3790, + "line": 3798, "column": 56 } } @@ -522010,15 +525272,15 @@ "binop": null }, "value": "length", - "start": 153245, - "end": 153251, + "start": 153759, + "end": 153765, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 56 }, "end": { - "line": 3790, + "line": 3798, "column": 62 } } @@ -522036,15 +525298,15 @@ "binop": null, "updateContext": null }, - "start": 153251, - "end": 153252, + "start": 153765, + "end": 153766, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 62 }, "end": { - "line": 3790, + "line": 3798, "column": 63 } } @@ -522062,15 +525324,15 @@ "binop": null }, "value": "i", - "start": 153253, - "end": 153254, + "start": 153767, + "end": 153768, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 64 }, "end": { - "line": 3790, + "line": 3798, "column": 65 } } @@ -522089,15 +525351,15 @@ "updateContext": null }, "value": "<", - "start": 153255, - "end": 153256, + "start": 153769, + "end": 153770, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 66 }, "end": { - "line": 3790, + "line": 3798, "column": 67 } } @@ -522115,15 +525377,15 @@ "binop": null }, "value": "len", - "start": 153257, - "end": 153260, + "start": 153771, + "end": 153774, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 68 }, "end": { - "line": 3790, + "line": 3798, "column": 71 } } @@ -522141,15 +525403,15 @@ "binop": null, "updateContext": null }, - "start": 153260, - "end": 153261, + "start": 153774, + "end": 153775, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 71 }, "end": { - "line": 3790, + "line": 3798, "column": 72 } } @@ -522167,15 +525429,15 @@ "binop": null }, "value": "i", - "start": 153262, - "end": 153263, + "start": 153776, + "end": 153777, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 73 }, "end": { - "line": 3790, + "line": 3798, "column": 74 } } @@ -522193,15 +525455,15 @@ "binop": null }, "value": "++", - "start": 153263, - "end": 153265, + "start": 153777, + "end": 153779, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 74 }, "end": { - "line": 3790, + "line": 3798, "column": 76 } } @@ -522218,15 +525480,15 @@ "postfix": false, "binop": null }, - "start": 153265, - "end": 153266, + "start": 153779, + "end": 153780, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 76 }, "end": { - "line": 3790, + "line": 3798, "column": 77 } } @@ -522243,15 +525505,15 @@ "postfix": false, "binop": null }, - "start": 153267, - "end": 153268, + "start": 153781, + "end": 153782, "loc": { "start": { - "line": 3790, + "line": 3798, "column": 78 }, "end": { - "line": 3790, + "line": 3798, "column": 79 } } @@ -522271,15 +525533,15 @@ "updateContext": null }, "value": "const", - "start": 153281, - "end": 153286, + "start": 153795, + "end": 153800, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 12 }, "end": { - "line": 3791, + "line": 3799, "column": 17 } } @@ -522297,15 +525559,15 @@ "binop": null }, "value": "layerIndex", - "start": 153287, - "end": 153297, + "start": 153801, + "end": 153811, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 18 }, "end": { - "line": 3791, + "line": 3799, "column": 28 } } @@ -522324,15 +525586,15 @@ "updateContext": null }, "value": "=", - "start": 153298, - "end": 153299, + "start": 153812, + "end": 153813, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 29 }, "end": { - "line": 3791, + "line": 3799, "column": 30 } } @@ -522350,15 +525612,15 @@ "binop": null }, "value": "renderFlags", - "start": 153300, - "end": 153311, + "start": 153814, + "end": 153825, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 31 }, "end": { - "line": 3791, + "line": 3799, "column": 42 } } @@ -522376,15 +525638,15 @@ "binop": null, "updateContext": null }, - "start": 153311, - "end": 153312, + "start": 153825, + "end": 153826, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 42 }, "end": { - "line": 3791, + "line": 3799, "column": 43 } } @@ -522402,15 +525664,15 @@ "binop": null }, "value": "visibleLayers", - "start": 153312, - "end": 153325, + "start": 153826, + "end": 153839, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 43 }, "end": { - "line": 3791, + "line": 3799, "column": 56 } } @@ -522428,15 +525690,15 @@ "binop": null, "updateContext": null }, - "start": 153325, - "end": 153326, + "start": 153839, + "end": 153840, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 56 }, "end": { - "line": 3791, + "line": 3799, "column": 57 } } @@ -522454,15 +525716,15 @@ "binop": null }, "value": "i", - "start": 153326, - "end": 153327, + "start": 153840, + "end": 153841, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 57 }, "end": { - "line": 3791, + "line": 3799, "column": 58 } } @@ -522480,15 +525742,15 @@ "binop": null, "updateContext": null }, - "start": 153327, - "end": 153328, + "start": 153841, + "end": 153842, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 58 }, "end": { - "line": 3791, + "line": 3799, "column": 59 } } @@ -522506,15 +525768,15 @@ "binop": null, "updateContext": null }, - "start": 153328, - "end": 153329, + "start": 153842, + "end": 153843, "loc": { "start": { - "line": 3791, + "line": 3799, "column": 59 }, "end": { - "line": 3791, + "line": 3799, "column": 60 } } @@ -522534,15 +525796,15 @@ "updateContext": null }, "value": "this", - "start": 153342, - "end": 153346, + "start": 153856, + "end": 153860, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 12 }, "end": { - "line": 3792, + "line": 3800, "column": 16 } } @@ -522560,15 +525822,15 @@ "binop": null, "updateContext": null }, - "start": 153346, - "end": 153347, + "start": 153860, + "end": 153861, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 16 }, "end": { - "line": 3792, + "line": 3800, "column": 17 } } @@ -522586,15 +525848,15 @@ "binop": null }, "value": "layerList", - "start": 153347, - "end": 153356, + "start": 153861, + "end": 153870, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 17 }, "end": { - "line": 3792, + "line": 3800, "column": 26 } } @@ -522612,15 +525874,15 @@ "binop": null, "updateContext": null }, - "start": 153356, - "end": 153357, + "start": 153870, + "end": 153871, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 26 }, "end": { - "line": 3792, + "line": 3800, "column": 27 } } @@ -522638,15 +525900,15 @@ "binop": null }, "value": "layerIndex", - "start": 153357, - "end": 153367, + "start": 153871, + "end": 153881, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 27 }, "end": { - "line": 3792, + "line": 3800, "column": 37 } } @@ -522664,15 +525926,15 @@ "binop": null, "updateContext": null }, - "start": 153367, - "end": 153368, + "start": 153881, + "end": 153882, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 37 }, "end": { - "line": 3792, + "line": 3800, "column": 38 } } @@ -522690,15 +525952,15 @@ "binop": null, "updateContext": null }, - "start": 153368, - "end": 153369, + "start": 153882, + "end": 153883, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 38 }, "end": { - "line": 3792, + "line": 3800, "column": 39 } } @@ -522716,15 +525978,15 @@ "binop": null }, "value": "drawOcclusion", - "start": 153369, - "end": 153382, + "start": 153883, + "end": 153896, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 39 }, "end": { - "line": 3792, + "line": 3800, "column": 52 } } @@ -522741,15 +526003,15 @@ "postfix": false, "binop": null }, - "start": 153382, - "end": 153383, + "start": 153896, + "end": 153897, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 52 }, "end": { - "line": 3792, + "line": 3800, "column": 53 } } @@ -522767,15 +526029,15 @@ "binop": null }, "value": "renderFlags", - "start": 153383, - "end": 153394, + "start": 153897, + "end": 153908, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 53 }, "end": { - "line": 3792, + "line": 3800, "column": 64 } } @@ -522793,15 +526055,15 @@ "binop": null, "updateContext": null }, - "start": 153394, - "end": 153395, + "start": 153908, + "end": 153909, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 64 }, "end": { - "line": 3792, + "line": 3800, "column": 65 } } @@ -522819,15 +526081,15 @@ "binop": null }, "value": "frameCtx", - "start": 153396, - "end": 153404, + "start": 153910, + "end": 153918, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 66 }, "end": { - "line": 3792, + "line": 3800, "column": 74 } } @@ -522844,15 +526106,15 @@ "postfix": false, "binop": null }, - "start": 153404, - "end": 153405, + "start": 153918, + "end": 153919, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 74 }, "end": { - "line": 3792, + "line": 3800, "column": 75 } } @@ -522870,15 +526132,15 @@ "binop": null, "updateContext": null }, - "start": 153405, - "end": 153406, + "start": 153919, + "end": 153920, "loc": { "start": { - "line": 3792, + "line": 3800, "column": 75 }, "end": { - "line": 3792, + "line": 3800, "column": 76 } } @@ -522895,15 +526157,15 @@ "postfix": false, "binop": null }, - "start": 153415, - "end": 153416, + "start": 153929, + "end": 153930, "loc": { "start": { - "line": 3793, + "line": 3801, "column": 8 }, "end": { - "line": 3793, + "line": 3801, "column": 9 } } @@ -522920,15 +526182,15 @@ "postfix": false, "binop": null }, - "start": 153421, - "end": 153422, + "start": 153935, + "end": 153936, "loc": { "start": { - "line": 3794, + "line": 3802, "column": 4 }, "end": { - "line": 3794, + "line": 3802, "column": 5 } } @@ -522936,15 +526198,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 153428, - "end": 153455, + "start": 153942, + "end": 153969, "loc": { "start": { - "line": 3796, + "line": 3804, "column": 4 }, "end": { - "line": 3798, + "line": 3806, "column": 7 } } @@ -522962,15 +526224,15 @@ "binop": null }, "value": "drawShadow", - "start": 153460, - "end": 153470, + "start": 153974, + "end": 153984, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 4 }, "end": { - "line": 3799, + "line": 3807, "column": 14 } } @@ -522987,15 +526249,15 @@ "postfix": false, "binop": null }, - "start": 153470, - "end": 153471, + "start": 153984, + "end": 153985, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 14 }, "end": { - "line": 3799, + "line": 3807, "column": 15 } } @@ -523013,15 +526275,15 @@ "binop": null }, "value": "frameCtx", - "start": 153471, - "end": 153479, + "start": 153985, + "end": 153993, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 15 }, "end": { - "line": 3799, + "line": 3807, "column": 23 } } @@ -523038,15 +526300,15 @@ "postfix": false, "binop": null }, - "start": 153479, - "end": 153480, + "start": 153993, + "end": 153994, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 23 }, "end": { - "line": 3799, + "line": 3807, "column": 24 } } @@ -523063,15 +526325,15 @@ "postfix": false, "binop": null }, - "start": 153481, - "end": 153482, + "start": 153995, + "end": 153996, "loc": { "start": { - "line": 3799, + "line": 3807, "column": 25 }, "end": { - "line": 3799, + "line": 3807, "column": 26 } } @@ -523091,15 +526353,15 @@ "updateContext": null }, "value": "if", - "start": 153491, - "end": 153493, + "start": 154005, + "end": 154007, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 8 }, "end": { - "line": 3800, + "line": 3808, "column": 10 } } @@ -523116,15 +526378,15 @@ "postfix": false, "binop": null }, - "start": 153494, - "end": 153495, + "start": 154008, + "end": 154009, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 11 }, "end": { - "line": 3800, + "line": 3808, "column": 12 } } @@ -523144,15 +526406,15 @@ "updateContext": null }, "value": "this", - "start": 153495, - "end": 153499, + "start": 154009, + "end": 154013, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 12 }, "end": { - "line": 3800, + "line": 3808, "column": 16 } } @@ -523170,15 +526432,15 @@ "binop": null, "updateContext": null }, - "start": 153499, - "end": 153500, + "start": 154013, + "end": 154014, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 16 }, "end": { - "line": 3800, + "line": 3808, "column": 17 } } @@ -523196,15 +526458,15 @@ "binop": null }, "value": "numVisibleLayerPortions", - "start": 153500, - "end": 153523, + "start": 154014, + "end": 154037, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 17 }, "end": { - "line": 3800, + "line": 3808, "column": 40 } } @@ -523223,15 +526485,15 @@ "updateContext": null }, "value": "===", - "start": 153524, - "end": 153527, + "start": 154038, + "end": 154041, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 41 }, "end": { - "line": 3800, + "line": 3808, "column": 44 } } @@ -523250,15 +526512,15 @@ "updateContext": null }, "value": 0, - "start": 153528, - "end": 153529, + "start": 154042, + "end": 154043, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 45 }, "end": { - "line": 3800, + "line": 3808, "column": 46 } } @@ -523275,15 +526537,15 @@ "postfix": false, "binop": null }, - "start": 153529, - "end": 153530, + "start": 154043, + "end": 154044, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 46 }, "end": { - "line": 3800, + "line": 3808, "column": 47 } } @@ -523300,15 +526562,15 @@ "postfix": false, "binop": null }, - "start": 153531, - "end": 153532, + "start": 154045, + "end": 154046, "loc": { "start": { - "line": 3800, + "line": 3808, "column": 48 }, "end": { - "line": 3800, + "line": 3808, "column": 49 } } @@ -523328,15 +526590,15 @@ "updateContext": null }, "value": "return", - "start": 153545, - "end": 153551, + "start": 154059, + "end": 154065, "loc": { "start": { - "line": 3801, + "line": 3809, "column": 12 }, "end": { - "line": 3801, + "line": 3809, "column": 18 } } @@ -523354,15 +526616,15 @@ "binop": null, "updateContext": null }, - "start": 153551, - "end": 153552, + "start": 154065, + "end": 154066, "loc": { "start": { - "line": 3801, + "line": 3809, "column": 18 }, "end": { - "line": 3801, + "line": 3809, "column": 19 } } @@ -523379,15 +526641,15 @@ "postfix": false, "binop": null }, - "start": 153561, - "end": 153562, + "start": 154075, + "end": 154076, "loc": { "start": { - "line": 3802, + "line": 3810, "column": 8 }, "end": { - "line": 3802, + "line": 3810, "column": 9 } } @@ -523407,15 +526669,15 @@ "updateContext": null }, "value": "const", - "start": 153571, - "end": 153576, + "start": 154085, + "end": 154090, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 8 }, "end": { - "line": 3803, + "line": 3811, "column": 13 } } @@ -523433,15 +526695,15 @@ "binop": null }, "value": "renderFlags", - "start": 153577, - "end": 153588, + "start": 154091, + "end": 154102, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 14 }, "end": { - "line": 3803, + "line": 3811, "column": 25 } } @@ -523460,15 +526722,15 @@ "updateContext": null }, "value": "=", - "start": 153589, - "end": 153590, + "start": 154103, + "end": 154104, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 26 }, "end": { - "line": 3803, + "line": 3811, "column": 27 } } @@ -523488,15 +526750,15 @@ "updateContext": null }, "value": "this", - "start": 153591, - "end": 153595, + "start": 154105, + "end": 154109, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 28 }, "end": { - "line": 3803, + "line": 3811, "column": 32 } } @@ -523514,15 +526776,15 @@ "binop": null, "updateContext": null }, - "start": 153595, - "end": 153596, + "start": 154109, + "end": 154110, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 32 }, "end": { - "line": 3803, + "line": 3811, "column": 33 } } @@ -523540,15 +526802,15 @@ "binop": null }, "value": "renderFlags", - "start": 153596, - "end": 153607, + "start": 154110, + "end": 154121, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 33 }, "end": { - "line": 3803, + "line": 3811, "column": 44 } } @@ -523566,15 +526828,15 @@ "binop": null, "updateContext": null }, - "start": 153607, - "end": 153608, + "start": 154121, + "end": 154122, "loc": { "start": { - "line": 3803, + "line": 3811, "column": 44 }, "end": { - "line": 3803, + "line": 3811, "column": 45 } } @@ -523594,15 +526856,15 @@ "updateContext": null }, "value": "for", - "start": 153617, - "end": 153620, + "start": 154131, + "end": 154134, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 8 }, "end": { - "line": 3804, + "line": 3812, "column": 11 } } @@ -523619,15 +526881,15 @@ "postfix": false, "binop": null }, - "start": 153621, - "end": 153622, + "start": 154135, + "end": 154136, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 12 }, "end": { - "line": 3804, + "line": 3812, "column": 13 } } @@ -523647,15 +526909,15 @@ "updateContext": null }, "value": "let", - "start": 153622, - "end": 153625, + "start": 154136, + "end": 154139, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 13 }, "end": { - "line": 3804, + "line": 3812, "column": 16 } } @@ -523673,15 +526935,15 @@ "binop": null }, "value": "i", - "start": 153626, - "end": 153627, + "start": 154140, + "end": 154141, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 17 }, "end": { - "line": 3804, + "line": 3812, "column": 18 } } @@ -523700,15 +526962,15 @@ "updateContext": null }, "value": "=", - "start": 153628, - "end": 153629, + "start": 154142, + "end": 154143, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 19 }, "end": { - "line": 3804, + "line": 3812, "column": 20 } } @@ -523727,15 +526989,15 @@ "updateContext": null }, "value": 0, - "start": 153630, - "end": 153631, + "start": 154144, + "end": 154145, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 21 }, "end": { - "line": 3804, + "line": 3812, "column": 22 } } @@ -523753,15 +527015,15 @@ "binop": null, "updateContext": null }, - "start": 153631, - "end": 153632, + "start": 154145, + "end": 154146, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 22 }, "end": { - "line": 3804, + "line": 3812, "column": 23 } } @@ -523779,15 +527041,15 @@ "binop": null }, "value": "len", - "start": 153633, - "end": 153636, + "start": 154147, + "end": 154150, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 24 }, "end": { - "line": 3804, + "line": 3812, "column": 27 } } @@ -523806,15 +527068,15 @@ "updateContext": null }, "value": "=", - "start": 153637, - "end": 153638, + "start": 154151, + "end": 154152, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 28 }, "end": { - "line": 3804, + "line": 3812, "column": 29 } } @@ -523832,15 +527094,15 @@ "binop": null }, "value": "renderFlags", - "start": 153639, - "end": 153650, + "start": 154153, + "end": 154164, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 30 }, "end": { - "line": 3804, + "line": 3812, "column": 41 } } @@ -523858,15 +527120,15 @@ "binop": null, "updateContext": null }, - "start": 153650, - "end": 153651, + "start": 154164, + "end": 154165, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 41 }, "end": { - "line": 3804, + "line": 3812, "column": 42 } } @@ -523884,15 +527146,15 @@ "binop": null }, "value": "visibleLayers", - "start": 153651, - "end": 153664, + "start": 154165, + "end": 154178, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 42 }, "end": { - "line": 3804, + "line": 3812, "column": 55 } } @@ -523910,15 +527172,15 @@ "binop": null, "updateContext": null }, - "start": 153664, - "end": 153665, + "start": 154178, + "end": 154179, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 55 }, "end": { - "line": 3804, + "line": 3812, "column": 56 } } @@ -523936,15 +527198,15 @@ "binop": null }, "value": "length", - "start": 153665, - "end": 153671, + "start": 154179, + "end": 154185, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 56 }, "end": { - "line": 3804, + "line": 3812, "column": 62 } } @@ -523962,15 +527224,15 @@ "binop": null, "updateContext": null }, - "start": 153671, - "end": 153672, + "start": 154185, + "end": 154186, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 62 }, "end": { - "line": 3804, + "line": 3812, "column": 63 } } @@ -523988,15 +527250,15 @@ "binop": null }, "value": "i", - "start": 153673, - "end": 153674, + "start": 154187, + "end": 154188, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 64 }, "end": { - "line": 3804, + "line": 3812, "column": 65 } } @@ -524015,15 +527277,15 @@ "updateContext": null }, "value": "<", - "start": 153675, - "end": 153676, + "start": 154189, + "end": 154190, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 66 }, "end": { - "line": 3804, + "line": 3812, "column": 67 } } @@ -524041,15 +527303,15 @@ "binop": null }, "value": "len", - "start": 153677, - "end": 153680, + "start": 154191, + "end": 154194, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 68 }, "end": { - "line": 3804, + "line": 3812, "column": 71 } } @@ -524067,15 +527329,15 @@ "binop": null, "updateContext": null }, - "start": 153680, - "end": 153681, + "start": 154194, + "end": 154195, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 71 }, "end": { - "line": 3804, + "line": 3812, "column": 72 } } @@ -524093,15 +527355,15 @@ "binop": null }, "value": "i", - "start": 153682, - "end": 153683, + "start": 154196, + "end": 154197, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 73 }, "end": { - "line": 3804, + "line": 3812, "column": 74 } } @@ -524119,15 +527381,15 @@ "binop": null }, "value": "++", - "start": 153683, - "end": 153685, + "start": 154197, + "end": 154199, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 74 }, "end": { - "line": 3804, + "line": 3812, "column": 76 } } @@ -524144,15 +527406,15 @@ "postfix": false, "binop": null }, - "start": 153685, - "end": 153686, + "start": 154199, + "end": 154200, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 76 }, "end": { - "line": 3804, + "line": 3812, "column": 77 } } @@ -524169,15 +527431,15 @@ "postfix": false, "binop": null }, - "start": 153687, - "end": 153688, + "start": 154201, + "end": 154202, "loc": { "start": { - "line": 3804, + "line": 3812, "column": 78 }, "end": { - "line": 3804, + "line": 3812, "column": 79 } } @@ -524197,15 +527459,15 @@ "updateContext": null }, "value": "const", - "start": 153701, - "end": 153706, + "start": 154215, + "end": 154220, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 12 }, "end": { - "line": 3805, + "line": 3813, "column": 17 } } @@ -524223,15 +527485,15 @@ "binop": null }, "value": "layerIndex", - "start": 153707, - "end": 153717, + "start": 154221, + "end": 154231, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 18 }, "end": { - "line": 3805, + "line": 3813, "column": 28 } } @@ -524250,15 +527512,15 @@ "updateContext": null }, "value": "=", - "start": 153718, - "end": 153719, + "start": 154232, + "end": 154233, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 29 }, "end": { - "line": 3805, + "line": 3813, "column": 30 } } @@ -524276,15 +527538,15 @@ "binop": null }, "value": "renderFlags", - "start": 153720, - "end": 153731, + "start": 154234, + "end": 154245, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 31 }, "end": { - "line": 3805, + "line": 3813, "column": 42 } } @@ -524302,15 +527564,15 @@ "binop": null, "updateContext": null }, - "start": 153731, - "end": 153732, + "start": 154245, + "end": 154246, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 42 }, "end": { - "line": 3805, + "line": 3813, "column": 43 } } @@ -524328,15 +527590,15 @@ "binop": null }, "value": "visibleLayers", - "start": 153732, - "end": 153745, + "start": 154246, + "end": 154259, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 43 }, "end": { - "line": 3805, + "line": 3813, "column": 56 } } @@ -524354,15 +527616,15 @@ "binop": null, "updateContext": null }, - "start": 153745, - "end": 153746, + "start": 154259, + "end": 154260, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 56 }, "end": { - "line": 3805, + "line": 3813, "column": 57 } } @@ -524380,15 +527642,15 @@ "binop": null }, "value": "i", - "start": 153746, - "end": 153747, + "start": 154260, + "end": 154261, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 57 }, "end": { - "line": 3805, + "line": 3813, "column": 58 } } @@ -524406,15 +527668,15 @@ "binop": null, "updateContext": null }, - "start": 153747, - "end": 153748, + "start": 154261, + "end": 154262, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 58 }, "end": { - "line": 3805, + "line": 3813, "column": 59 } } @@ -524432,15 +527694,15 @@ "binop": null, "updateContext": null }, - "start": 153748, - "end": 153749, + "start": 154262, + "end": 154263, "loc": { "start": { - "line": 3805, + "line": 3813, "column": 59 }, "end": { - "line": 3805, + "line": 3813, "column": 60 } } @@ -524460,15 +527722,15 @@ "updateContext": null }, "value": "this", - "start": 153762, - "end": 153766, + "start": 154276, + "end": 154280, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 12 }, "end": { - "line": 3806, + "line": 3814, "column": 16 } } @@ -524486,15 +527748,15 @@ "binop": null, "updateContext": null }, - "start": 153766, - "end": 153767, + "start": 154280, + "end": 154281, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 16 }, "end": { - "line": 3806, + "line": 3814, "column": 17 } } @@ -524512,15 +527774,15 @@ "binop": null }, "value": "layerList", - "start": 153767, - "end": 153776, + "start": 154281, + "end": 154290, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 17 }, "end": { - "line": 3806, + "line": 3814, "column": 26 } } @@ -524538,15 +527800,15 @@ "binop": null, "updateContext": null }, - "start": 153776, - "end": 153777, + "start": 154290, + "end": 154291, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 26 }, "end": { - "line": 3806, + "line": 3814, "column": 27 } } @@ -524564,15 +527826,15 @@ "binop": null }, "value": "layerIndex", - "start": 153777, - "end": 153787, + "start": 154291, + "end": 154301, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 27 }, "end": { - "line": 3806, + "line": 3814, "column": 37 } } @@ -524590,15 +527852,15 @@ "binop": null, "updateContext": null }, - "start": 153787, - "end": 153788, + "start": 154301, + "end": 154302, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 37 }, "end": { - "line": 3806, + "line": 3814, "column": 38 } } @@ -524616,15 +527878,15 @@ "binop": null, "updateContext": null }, - "start": 153788, - "end": 153789, + "start": 154302, + "end": 154303, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 38 }, "end": { - "line": 3806, + "line": 3814, "column": 39 } } @@ -524642,15 +527904,15 @@ "binop": null }, "value": "drawShadow", - "start": 153789, - "end": 153799, + "start": 154303, + "end": 154313, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 39 }, "end": { - "line": 3806, + "line": 3814, "column": 49 } } @@ -524667,15 +527929,15 @@ "postfix": false, "binop": null }, - "start": 153799, - "end": 153800, + "start": 154313, + "end": 154314, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 49 }, "end": { - "line": 3806, + "line": 3814, "column": 50 } } @@ -524693,15 +527955,15 @@ "binop": null }, "value": "renderFlags", - "start": 153800, - "end": 153811, + "start": 154314, + "end": 154325, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 50 }, "end": { - "line": 3806, + "line": 3814, "column": 61 } } @@ -524719,15 +527981,15 @@ "binop": null, "updateContext": null }, - "start": 153811, - "end": 153812, + "start": 154325, + "end": 154326, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 61 }, "end": { - "line": 3806, + "line": 3814, "column": 62 } } @@ -524745,15 +528007,15 @@ "binop": null }, "value": "frameCtx", - "start": 153813, - "end": 153821, + "start": 154327, + "end": 154335, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 63 }, "end": { - "line": 3806, + "line": 3814, "column": 71 } } @@ -524770,15 +528032,15 @@ "postfix": false, "binop": null }, - "start": 153821, - "end": 153822, + "start": 154335, + "end": 154336, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 71 }, "end": { - "line": 3806, + "line": 3814, "column": 72 } } @@ -524796,15 +528058,15 @@ "binop": null, "updateContext": null }, - "start": 153822, - "end": 153823, + "start": 154336, + "end": 154337, "loc": { "start": { - "line": 3806, + "line": 3814, "column": 72 }, "end": { - "line": 3806, + "line": 3814, "column": 73 } } @@ -524821,15 +528083,15 @@ "postfix": false, "binop": null }, - "start": 153832, - "end": 153833, + "start": 154346, + "end": 154347, "loc": { "start": { - "line": 3807, + "line": 3815, "column": 8 }, "end": { - "line": 3807, + "line": 3815, "column": 9 } } @@ -524846,15 +528108,15 @@ "postfix": false, "binop": null }, - "start": 153838, - "end": 153839, + "start": 154352, + "end": 154353, "loc": { "start": { - "line": 3808, + "line": 3816, "column": 4 }, "end": { - "line": 3808, + "line": 3816, "column": 5 } } @@ -524862,15 +528124,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 153845, - "end": 153860, + "start": 154359, + "end": 154374, "loc": { "start": { - "line": 3810, + "line": 3818, "column": 4 }, "end": { - "line": 3810, + "line": 3818, "column": 19 } } @@ -524888,15 +528150,15 @@ "binop": null }, "value": "setPickMatrices", - "start": 153865, - "end": 153880, + "start": 154379, + "end": 154394, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 4 }, "end": { - "line": 3811, + "line": 3819, "column": 19 } } @@ -524913,15 +528175,15 @@ "postfix": false, "binop": null }, - "start": 153880, - "end": 153881, + "start": 154394, + "end": 154395, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 19 }, "end": { - "line": 3811, + "line": 3819, "column": 20 } } @@ -524939,15 +528201,15 @@ "binop": null }, "value": "pickViewMatrix", - "start": 153881, - "end": 153895, + "start": 154395, + "end": 154409, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 20 }, "end": { - "line": 3811, + "line": 3819, "column": 34 } } @@ -524965,15 +528227,15 @@ "binop": null, "updateContext": null }, - "start": 153895, - "end": 153896, + "start": 154409, + "end": 154410, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 34 }, "end": { - "line": 3811, + "line": 3819, "column": 35 } } @@ -524991,15 +528253,15 @@ "binop": null }, "value": "pickProjMatrix", - "start": 153897, - "end": 153911, + "start": 154411, + "end": 154425, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 36 }, "end": { - "line": 3811, + "line": 3819, "column": 50 } } @@ -525016,15 +528278,15 @@ "postfix": false, "binop": null }, - "start": 153911, - "end": 153912, + "start": 154425, + "end": 154426, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 50 }, "end": { - "line": 3811, + "line": 3819, "column": 51 } } @@ -525041,15 +528303,15 @@ "postfix": false, "binop": null }, - "start": 153913, - "end": 153914, + "start": 154427, + "end": 154428, "loc": { "start": { - "line": 3811, + "line": 3819, "column": 52 }, "end": { - "line": 3811, + "line": 3819, "column": 53 } } @@ -525069,15 +528331,15 @@ "updateContext": null }, "value": "if", - "start": 153923, - "end": 153925, + "start": 154437, + "end": 154439, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 8 }, "end": { - "line": 3812, + "line": 3820, "column": 10 } } @@ -525094,15 +528356,15 @@ "postfix": false, "binop": null }, - "start": 153926, - "end": 153927, + "start": 154440, + "end": 154441, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 11 }, "end": { - "line": 3812, + "line": 3820, "column": 12 } } @@ -525122,15 +528384,15 @@ "updateContext": null }, "value": "this", - "start": 153927, - "end": 153931, + "start": 154441, + "end": 154445, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 12 }, "end": { - "line": 3812, + "line": 3820, "column": 16 } } @@ -525148,15 +528410,15 @@ "binop": null, "updateContext": null }, - "start": 153931, - "end": 153932, + "start": 154445, + "end": 154446, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 16 }, "end": { - "line": 3812, + "line": 3820, "column": 17 } } @@ -525174,15 +528436,15 @@ "binop": null }, "value": "_numVisibleLayerPortions", - "start": 153932, - "end": 153956, + "start": 154446, + "end": 154470, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 17 }, "end": { - "line": 3812, + "line": 3820, "column": 41 } } @@ -525201,15 +528463,15 @@ "updateContext": null }, "value": "===", - "start": 153957, - "end": 153960, + "start": 154471, + "end": 154474, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 42 }, "end": { - "line": 3812, + "line": 3820, "column": 45 } } @@ -525228,15 +528490,15 @@ "updateContext": null }, "value": 0, - "start": 153961, - "end": 153962, + "start": 154475, + "end": 154476, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 46 }, "end": { - "line": 3812, + "line": 3820, "column": 47 } } @@ -525253,15 +528515,15 @@ "postfix": false, "binop": null }, - "start": 153962, - "end": 153963, + "start": 154476, + "end": 154477, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 47 }, "end": { - "line": 3812, + "line": 3820, "column": 48 } } @@ -525278,15 +528540,15 @@ "postfix": false, "binop": null }, - "start": 153964, - "end": 153965, + "start": 154478, + "end": 154479, "loc": { "start": { - "line": 3812, + "line": 3820, "column": 49 }, "end": { - "line": 3812, + "line": 3820, "column": 50 } } @@ -525306,15 +528568,15 @@ "updateContext": null }, "value": "return", - "start": 153978, - "end": 153984, + "start": 154492, + "end": 154498, "loc": { "start": { - "line": 3813, + "line": 3821, "column": 12 }, "end": { - "line": 3813, + "line": 3821, "column": 18 } } @@ -525332,15 +528594,15 @@ "binop": null, "updateContext": null }, - "start": 153984, - "end": 153985, + "start": 154498, + "end": 154499, "loc": { "start": { - "line": 3813, + "line": 3821, "column": 18 }, "end": { - "line": 3813, + "line": 3821, "column": 19 } } @@ -525357,15 +528619,15 @@ "postfix": false, "binop": null }, - "start": 153994, - "end": 153995, + "start": 154508, + "end": 154509, "loc": { "start": { - "line": 3814, + "line": 3822, "column": 8 }, "end": { - "line": 3814, + "line": 3822, "column": 9 } } @@ -525385,15 +528647,15 @@ "updateContext": null }, "value": "const", - "start": 154004, - "end": 154009, + "start": 154518, + "end": 154523, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 8 }, "end": { - "line": 3815, + "line": 3823, "column": 13 } } @@ -525411,15 +528673,15 @@ "binop": null }, "value": "renderFlags", - "start": 154010, - "end": 154021, + "start": 154524, + "end": 154535, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 14 }, "end": { - "line": 3815, + "line": 3823, "column": 25 } } @@ -525438,15 +528700,15 @@ "updateContext": null }, "value": "=", - "start": 154022, - "end": 154023, + "start": 154536, + "end": 154537, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 26 }, "end": { - "line": 3815, + "line": 3823, "column": 27 } } @@ -525466,15 +528728,15 @@ "updateContext": null }, "value": "this", - "start": 154024, - "end": 154028, + "start": 154538, + "end": 154542, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 28 }, "end": { - "line": 3815, + "line": 3823, "column": 32 } } @@ -525492,15 +528754,15 @@ "binop": null, "updateContext": null }, - "start": 154028, - "end": 154029, + "start": 154542, + "end": 154543, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 32 }, "end": { - "line": 3815, + "line": 3823, "column": 33 } } @@ -525518,15 +528780,15 @@ "binop": null }, "value": "renderFlags", - "start": 154029, - "end": 154040, + "start": 154543, + "end": 154554, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 33 }, "end": { - "line": 3815, + "line": 3823, "column": 44 } } @@ -525544,15 +528806,15 @@ "binop": null, "updateContext": null }, - "start": 154040, - "end": 154041, + "start": 154554, + "end": 154555, "loc": { "start": { - "line": 3815, + "line": 3823, "column": 44 }, "end": { - "line": 3815, + "line": 3823, "column": 45 } } @@ -525572,15 +528834,15 @@ "updateContext": null }, "value": "for", - "start": 154050, - "end": 154053, + "start": 154564, + "end": 154567, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 8 }, "end": { - "line": 3816, + "line": 3824, "column": 11 } } @@ -525597,15 +528859,15 @@ "postfix": false, "binop": null }, - "start": 154054, - "end": 154055, + "start": 154568, + "end": 154569, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 12 }, "end": { - "line": 3816, + "line": 3824, "column": 13 } } @@ -525625,15 +528887,15 @@ "updateContext": null }, "value": "let", - "start": 154055, - "end": 154058, + "start": 154569, + "end": 154572, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 13 }, "end": { - "line": 3816, + "line": 3824, "column": 16 } } @@ -525651,15 +528913,15 @@ "binop": null }, "value": "i", - "start": 154059, - "end": 154060, + "start": 154573, + "end": 154574, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 17 }, "end": { - "line": 3816, + "line": 3824, "column": 18 } } @@ -525678,15 +528940,15 @@ "updateContext": null }, "value": "=", - "start": 154061, - "end": 154062, + "start": 154575, + "end": 154576, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 19 }, "end": { - "line": 3816, + "line": 3824, "column": 20 } } @@ -525705,15 +528967,15 @@ "updateContext": null }, "value": 0, - "start": 154063, - "end": 154064, + "start": 154577, + "end": 154578, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 21 }, "end": { - "line": 3816, + "line": 3824, "column": 22 } } @@ -525731,15 +528993,15 @@ "binop": null, "updateContext": null }, - "start": 154064, - "end": 154065, + "start": 154578, + "end": 154579, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 22 }, "end": { - "line": 3816, + "line": 3824, "column": 23 } } @@ -525757,15 +529019,15 @@ "binop": null }, "value": "len", - "start": 154066, - "end": 154069, + "start": 154580, + "end": 154583, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 24 }, "end": { - "line": 3816, + "line": 3824, "column": 27 } } @@ -525784,15 +529046,15 @@ "updateContext": null }, "value": "=", - "start": 154070, - "end": 154071, + "start": 154584, + "end": 154585, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 28 }, "end": { - "line": 3816, + "line": 3824, "column": 29 } } @@ -525810,15 +529072,15 @@ "binop": null }, "value": "renderFlags", - "start": 154072, - "end": 154083, + "start": 154586, + "end": 154597, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 30 }, "end": { - "line": 3816, + "line": 3824, "column": 41 } } @@ -525836,15 +529098,15 @@ "binop": null, "updateContext": null }, - "start": 154083, - "end": 154084, + "start": 154597, + "end": 154598, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 41 }, "end": { - "line": 3816, + "line": 3824, "column": 42 } } @@ -525862,15 +529124,15 @@ "binop": null }, "value": "visibleLayers", - "start": 154084, - "end": 154097, + "start": 154598, + "end": 154611, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 42 }, "end": { - "line": 3816, + "line": 3824, "column": 55 } } @@ -525888,15 +529150,15 @@ "binop": null, "updateContext": null }, - "start": 154097, - "end": 154098, + "start": 154611, + "end": 154612, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 55 }, "end": { - "line": 3816, + "line": 3824, "column": 56 } } @@ -525914,15 +529176,15 @@ "binop": null }, "value": "length", - "start": 154098, - "end": 154104, + "start": 154612, + "end": 154618, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 56 }, "end": { - "line": 3816, + "line": 3824, "column": 62 } } @@ -525940,15 +529202,15 @@ "binop": null, "updateContext": null }, - "start": 154104, - "end": 154105, + "start": 154618, + "end": 154619, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 62 }, "end": { - "line": 3816, + "line": 3824, "column": 63 } } @@ -525966,15 +529228,15 @@ "binop": null }, "value": "i", - "start": 154106, - "end": 154107, + "start": 154620, + "end": 154621, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 64 }, "end": { - "line": 3816, + "line": 3824, "column": 65 } } @@ -525993,15 +529255,15 @@ "updateContext": null }, "value": "<", - "start": 154108, - "end": 154109, + "start": 154622, + "end": 154623, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 66 }, "end": { - "line": 3816, + "line": 3824, "column": 67 } } @@ -526019,15 +529281,15 @@ "binop": null }, "value": "len", - "start": 154110, - "end": 154113, + "start": 154624, + "end": 154627, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 68 }, "end": { - "line": 3816, + "line": 3824, "column": 71 } } @@ -526045,15 +529307,15 @@ "binop": null, "updateContext": null }, - "start": 154113, - "end": 154114, + "start": 154627, + "end": 154628, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 71 }, "end": { - "line": 3816, + "line": 3824, "column": 72 } } @@ -526071,15 +529333,15 @@ "binop": null }, "value": "i", - "start": 154115, - "end": 154116, + "start": 154629, + "end": 154630, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 73 }, "end": { - "line": 3816, + "line": 3824, "column": 74 } } @@ -526097,15 +529359,15 @@ "binop": null }, "value": "++", - "start": 154116, - "end": 154118, + "start": 154630, + "end": 154632, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 74 }, "end": { - "line": 3816, + "line": 3824, "column": 76 } } @@ -526122,15 +529384,15 @@ "postfix": false, "binop": null }, - "start": 154118, - "end": 154119, + "start": 154632, + "end": 154633, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 76 }, "end": { - "line": 3816, + "line": 3824, "column": 77 } } @@ -526147,15 +529409,15 @@ "postfix": false, "binop": null }, - "start": 154120, - "end": 154121, + "start": 154634, + "end": 154635, "loc": { "start": { - "line": 3816, + "line": 3824, "column": 78 }, "end": { - "line": 3816, + "line": 3824, "column": 79 } } @@ -526175,15 +529437,15 @@ "updateContext": null }, "value": "const", - "start": 154134, - "end": 154139, + "start": 154648, + "end": 154653, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 12 }, "end": { - "line": 3817, + "line": 3825, "column": 17 } } @@ -526201,15 +529463,15 @@ "binop": null }, "value": "layerIndex", - "start": 154140, - "end": 154150, + "start": 154654, + "end": 154664, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 18 }, "end": { - "line": 3817, + "line": 3825, "column": 28 } } @@ -526228,15 +529490,15 @@ "updateContext": null }, "value": "=", - "start": 154151, - "end": 154152, + "start": 154665, + "end": 154666, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 29 }, "end": { - "line": 3817, + "line": 3825, "column": 30 } } @@ -526254,15 +529516,15 @@ "binop": null }, "value": "renderFlags", - "start": 154153, - "end": 154164, + "start": 154667, + "end": 154678, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 31 }, "end": { - "line": 3817, + "line": 3825, "column": 42 } } @@ -526280,15 +529542,15 @@ "binop": null, "updateContext": null }, - "start": 154164, - "end": 154165, + "start": 154678, + "end": 154679, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 42 }, "end": { - "line": 3817, + "line": 3825, "column": 43 } } @@ -526306,15 +529568,15 @@ "binop": null }, "value": "visibleLayers", - "start": 154165, - "end": 154178, + "start": 154679, + "end": 154692, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 43 }, "end": { - "line": 3817, + "line": 3825, "column": 56 } } @@ -526332,15 +529594,15 @@ "binop": null, "updateContext": null }, - "start": 154178, - "end": 154179, + "start": 154692, + "end": 154693, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 56 }, "end": { - "line": 3817, + "line": 3825, "column": 57 } } @@ -526358,15 +529620,15 @@ "binop": null }, "value": "i", - "start": 154179, - "end": 154180, + "start": 154693, + "end": 154694, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 57 }, "end": { - "line": 3817, + "line": 3825, "column": 58 } } @@ -526384,15 +529646,15 @@ "binop": null, "updateContext": null }, - "start": 154180, - "end": 154181, + "start": 154694, + "end": 154695, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 58 }, "end": { - "line": 3817, + "line": 3825, "column": 59 } } @@ -526410,15 +529672,15 @@ "binop": null, "updateContext": null }, - "start": 154181, - "end": 154182, + "start": 154695, + "end": 154696, "loc": { "start": { - "line": 3817, + "line": 3825, "column": 59 }, "end": { - "line": 3817, + "line": 3825, "column": 60 } } @@ -526438,15 +529700,15 @@ "updateContext": null }, "value": "const", - "start": 154195, - "end": 154200, + "start": 154709, + "end": 154714, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 12 }, "end": { - "line": 3818, + "line": 3826, "column": 17 } } @@ -526464,15 +529726,15 @@ "binop": null }, "value": "layer", - "start": 154201, - "end": 154206, + "start": 154715, + "end": 154720, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 18 }, "end": { - "line": 3818, + "line": 3826, "column": 23 } } @@ -526491,15 +529753,15 @@ "updateContext": null }, "value": "=", - "start": 154207, - "end": 154208, + "start": 154721, + "end": 154722, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 24 }, "end": { - "line": 3818, + "line": 3826, "column": 25 } } @@ -526519,15 +529781,15 @@ "updateContext": null }, "value": "this", - "start": 154209, - "end": 154213, + "start": 154723, + "end": 154727, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 26 }, "end": { - "line": 3818, + "line": 3826, "column": 30 } } @@ -526545,15 +529807,15 @@ "binop": null, "updateContext": null }, - "start": 154213, - "end": 154214, + "start": 154727, + "end": 154728, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 30 }, "end": { - "line": 3818, + "line": 3826, "column": 31 } } @@ -526571,15 +529833,15 @@ "binop": null }, "value": "layerList", - "start": 154214, - "end": 154223, + "start": 154728, + "end": 154737, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 31 }, "end": { - "line": 3818, + "line": 3826, "column": 40 } } @@ -526597,15 +529859,15 @@ "binop": null, "updateContext": null }, - "start": 154223, - "end": 154224, + "start": 154737, + "end": 154738, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 40 }, "end": { - "line": 3818, + "line": 3826, "column": 41 } } @@ -526623,15 +529885,15 @@ "binop": null }, "value": "layerIndex", - "start": 154224, - "end": 154234, + "start": 154738, + "end": 154748, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 41 }, "end": { - "line": 3818, + "line": 3826, "column": 51 } } @@ -526649,15 +529911,15 @@ "binop": null, "updateContext": null }, - "start": 154234, - "end": 154235, + "start": 154748, + "end": 154749, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 51 }, "end": { - "line": 3818, + "line": 3826, "column": 52 } } @@ -526675,15 +529937,15 @@ "binop": null, "updateContext": null }, - "start": 154235, - "end": 154236, + "start": 154749, + "end": 154750, "loc": { "start": { - "line": 3818, + "line": 3826, "column": 52 }, "end": { - "line": 3818, + "line": 3826, "column": 53 } } @@ -526703,15 +529965,15 @@ "updateContext": null }, "value": "if", - "start": 154249, - "end": 154251, + "start": 154763, + "end": 154765, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 12 }, "end": { - "line": 3819, + "line": 3827, "column": 14 } } @@ -526728,15 +529990,15 @@ "postfix": false, "binop": null }, - "start": 154252, - "end": 154253, + "start": 154766, + "end": 154767, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 15 }, "end": { - "line": 3819, + "line": 3827, "column": 16 } } @@ -526754,15 +530016,15 @@ "binop": null }, "value": "layer", - "start": 154253, - "end": 154258, + "start": 154767, + "end": 154772, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 16 }, "end": { - "line": 3819, + "line": 3827, "column": 21 } } @@ -526780,15 +530042,15 @@ "binop": null, "updateContext": null }, - "start": 154258, - "end": 154259, + "start": 154772, + "end": 154773, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 21 }, "end": { - "line": 3819, + "line": 3827, "column": 22 } } @@ -526806,15 +530068,15 @@ "binop": null }, "value": "setPickMatrices", - "start": 154259, - "end": 154274, + "start": 154773, + "end": 154788, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 22 }, "end": { - "line": 3819, + "line": 3827, "column": 37 } } @@ -526831,15 +530093,15 @@ "postfix": false, "binop": null }, - "start": 154274, - "end": 154275, + "start": 154788, + "end": 154789, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 37 }, "end": { - "line": 3819, + "line": 3827, "column": 38 } } @@ -526856,15 +530118,15 @@ "postfix": false, "binop": null }, - "start": 154276, - "end": 154277, + "start": 154790, + "end": 154791, "loc": { "start": { - "line": 3819, + "line": 3827, "column": 39 }, "end": { - "line": 3819, + "line": 3827, "column": 40 } } @@ -526882,15 +530144,15 @@ "binop": null }, "value": "layer", - "start": 154294, - "end": 154299, + "start": 154808, + "end": 154813, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 16 }, "end": { - "line": 3820, + "line": 3828, "column": 21 } } @@ -526908,15 +530170,15 @@ "binop": null, "updateContext": null }, - "start": 154299, - "end": 154300, + "start": 154813, + "end": 154814, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 21 }, "end": { - "line": 3820, + "line": 3828, "column": 22 } } @@ -526934,15 +530196,15 @@ "binop": null }, "value": "setPickMatrices", - "start": 154300, - "end": 154315, + "start": 154814, + "end": 154829, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 22 }, "end": { - "line": 3820, + "line": 3828, "column": 37 } } @@ -526959,15 +530221,15 @@ "postfix": false, "binop": null }, - "start": 154315, - "end": 154316, + "start": 154829, + "end": 154830, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 37 }, "end": { - "line": 3820, + "line": 3828, "column": 38 } } @@ -526985,15 +530247,15 @@ "binop": null }, "value": "pickViewMatrix", - "start": 154316, - "end": 154330, + "start": 154830, + "end": 154844, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 38 }, "end": { - "line": 3820, + "line": 3828, "column": 52 } } @@ -527011,15 +530273,15 @@ "binop": null, "updateContext": null }, - "start": 154330, - "end": 154331, + "start": 154844, + "end": 154845, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 52 }, "end": { - "line": 3820, + "line": 3828, "column": 53 } } @@ -527037,15 +530299,15 @@ "binop": null }, "value": "pickProjMatrix", - "start": 154332, - "end": 154346, + "start": 154846, + "end": 154860, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 54 }, "end": { - "line": 3820, + "line": 3828, "column": 68 } } @@ -527062,15 +530324,15 @@ "postfix": false, "binop": null }, - "start": 154346, - "end": 154347, + "start": 154860, + "end": 154861, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 68 }, "end": { - "line": 3820, + "line": 3828, "column": 69 } } @@ -527088,15 +530350,15 @@ "binop": null, "updateContext": null }, - "start": 154347, - "end": 154348, + "start": 154861, + "end": 154862, "loc": { "start": { - "line": 3820, + "line": 3828, "column": 69 }, "end": { - "line": 3820, + "line": 3828, "column": 70 } } @@ -527113,15 +530375,15 @@ "postfix": false, "binop": null }, - "start": 154361, - "end": 154362, + "start": 154875, + "end": 154876, "loc": { "start": { - "line": 3821, + "line": 3829, "column": 12 }, "end": { - "line": 3821, + "line": 3829, "column": 13 } } @@ -527138,15 +530400,15 @@ "postfix": false, "binop": null }, - "start": 154371, - "end": 154372, + "start": 154885, + "end": 154886, "loc": { "start": { - "line": 3822, + "line": 3830, "column": 8 }, "end": { - "line": 3822, + "line": 3830, "column": 9 } } @@ -527163,15 +530425,15 @@ "postfix": false, "binop": null }, - "start": 154377, - "end": 154378, + "start": 154891, + "end": 154892, "loc": { "start": { - "line": 3823, + "line": 3831, "column": 4 }, "end": { - "line": 3823, + "line": 3831, "column": 5 } } @@ -527179,15 +530441,15 @@ { "type": "CommentBlock", "value": "* @private ", - "start": 154384, - "end": 154399, + "start": 154898, + "end": 154913, "loc": { "start": { - "line": 3825, + "line": 3833, "column": 4 }, "end": { - "line": 3825, + "line": 3833, "column": 19 } } @@ -527205,15 +530467,15 @@ "binop": null }, "value": "drawPickMesh", - "start": 154404, - "end": 154416, + "start": 154918, + "end": 154930, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 4 }, "end": { - "line": 3826, + "line": 3834, "column": 16 } } @@ -527230,15 +530492,15 @@ "postfix": false, "binop": null }, - "start": 154416, - "end": 154417, + "start": 154930, + "end": 154931, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 16 }, "end": { - "line": 3826, + "line": 3834, "column": 17 } } @@ -527256,15 +530518,15 @@ "binop": null }, "value": "frameCtx", - "start": 154417, - "end": 154425, + "start": 154931, + "end": 154939, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 17 }, "end": { - "line": 3826, + "line": 3834, "column": 25 } } @@ -527281,15 +530543,15 @@ "postfix": false, "binop": null }, - "start": 154425, - "end": 154426, + "start": 154939, + "end": 154940, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 25 }, "end": { - "line": 3826, + "line": 3834, "column": 26 } } @@ -527306,15 +530568,15 @@ "postfix": false, "binop": null }, - "start": 154427, - "end": 154428, + "start": 154941, + "end": 154942, "loc": { "start": { - "line": 3826, + "line": 3834, "column": 27 }, "end": { - "line": 3826, + "line": 3834, "column": 28 } } @@ -527334,15 +530596,15 @@ "updateContext": null }, "value": "if", - "start": 154437, - "end": 154439, + "start": 154951, + "end": 154953, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 8 }, "end": { - "line": 3827, + "line": 3835, "column": 10 } } @@ -527359,15 +530621,15 @@ "postfix": false, "binop": null }, - "start": 154440, - "end": 154441, + "start": 154954, + "end": 154955, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 11 }, "end": { - "line": 3827, + "line": 3835, "column": 12 } } @@ -527387,15 +530649,15 @@ "updateContext": null }, "value": "this", - "start": 154441, - "end": 154445, + "start": 154955, + "end": 154959, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 12 }, "end": { - "line": 3827, + "line": 3835, "column": 16 } } @@ -527413,15 +530675,15 @@ "binop": null, "updateContext": null }, - "start": 154445, - "end": 154446, + "start": 154959, + "end": 154960, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 16 }, "end": { - "line": 3827, + "line": 3835, "column": 17 } } @@ -527439,15 +530701,15 @@ "binop": null }, "value": "numVisibleLayerPortions", - "start": 154446, - "end": 154469, + "start": 154960, + "end": 154983, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 17 }, "end": { - "line": 3827, + "line": 3835, "column": 40 } } @@ -527466,15 +530728,15 @@ "updateContext": null }, "value": "===", - "start": 154470, - "end": 154473, + "start": 154984, + "end": 154987, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 41 }, "end": { - "line": 3827, + "line": 3835, "column": 44 } } @@ -527493,15 +530755,15 @@ "updateContext": null }, "value": 0, - "start": 154474, - "end": 154475, + "start": 154988, + "end": 154989, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 45 }, "end": { - "line": 3827, + "line": 3835, "column": 46 } } @@ -527518,15 +530780,15 @@ "postfix": false, "binop": null }, - "start": 154475, - "end": 154476, + "start": 154989, + "end": 154990, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 46 }, "end": { - "line": 3827, + "line": 3835, "column": 47 } } @@ -527543,15 +530805,15 @@ "postfix": false, "binop": null }, - "start": 154477, - "end": 154478, + "start": 154991, + "end": 154992, "loc": { "start": { - "line": 3827, + "line": 3835, "column": 48 }, "end": { - "line": 3827, + "line": 3835, "column": 49 } } @@ -527571,15 +530833,15 @@ "updateContext": null }, "value": "return", - "start": 154491, - "end": 154497, + "start": 155005, + "end": 155011, "loc": { "start": { - "line": 3828, + "line": 3836, "column": 12 }, "end": { - "line": 3828, + "line": 3836, "column": 18 } } @@ -527597,15 +530859,15 @@ "binop": null, "updateContext": null }, - "start": 154497, - "end": 154498, + "start": 155011, + "end": 155012, "loc": { "start": { - "line": 3828, + "line": 3836, "column": 18 }, "end": { - "line": 3828, + "line": 3836, "column": 19 } } @@ -527622,15 +530884,15 @@ "postfix": false, "binop": null }, - "start": 154507, - "end": 154508, + "start": 155021, + "end": 155022, "loc": { "start": { - "line": 3829, + "line": 3837, "column": 8 }, "end": { - "line": 3829, + "line": 3837, "column": 9 } } @@ -527650,15 +530912,15 @@ "updateContext": null }, "value": "const", - "start": 154517, - "end": 154522, + "start": 155031, + "end": 155036, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 8 }, "end": { - "line": 3830, + "line": 3838, "column": 13 } } @@ -527676,15 +530938,15 @@ "binop": null }, "value": "renderFlags", - "start": 154523, - "end": 154534, + "start": 155037, + "end": 155048, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 14 }, "end": { - "line": 3830, + "line": 3838, "column": 25 } } @@ -527703,15 +530965,15 @@ "updateContext": null }, "value": "=", - "start": 154535, - "end": 154536, + "start": 155049, + "end": 155050, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 26 }, "end": { - "line": 3830, + "line": 3838, "column": 27 } } @@ -527731,15 +530993,15 @@ "updateContext": null }, "value": "this", - "start": 154537, - "end": 154541, + "start": 155051, + "end": 155055, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 28 }, "end": { - "line": 3830, + "line": 3838, "column": 32 } } @@ -527757,15 +531019,15 @@ "binop": null, "updateContext": null }, - "start": 154541, - "end": 154542, + "start": 155055, + "end": 155056, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 32 }, "end": { - "line": 3830, + "line": 3838, "column": 33 } } @@ -527783,15 +531045,15 @@ "binop": null }, "value": "renderFlags", - "start": 154542, - "end": 154553, + "start": 155056, + "end": 155067, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 33 }, "end": { - "line": 3830, + "line": 3838, "column": 44 } } @@ -527809,15 +531071,15 @@ "binop": null, "updateContext": null }, - "start": 154553, - "end": 154554, + "start": 155067, + "end": 155068, "loc": { "start": { - "line": 3830, + "line": 3838, "column": 44 }, "end": { - "line": 3830, + "line": 3838, "column": 45 } } @@ -527837,15 +531099,15 @@ "updateContext": null }, "value": "for", - "start": 154563, - "end": 154566, + "start": 155077, + "end": 155080, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 8 }, "end": { - "line": 3831, + "line": 3839, "column": 11 } } @@ -527862,15 +531124,15 @@ "postfix": false, "binop": null }, - "start": 154567, - "end": 154568, + "start": 155081, + "end": 155082, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 12 }, "end": { - "line": 3831, + "line": 3839, "column": 13 } } @@ -527890,15 +531152,15 @@ "updateContext": null }, "value": "let", - "start": 154568, - "end": 154571, + "start": 155082, + "end": 155085, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 13 }, "end": { - "line": 3831, + "line": 3839, "column": 16 } } @@ -527916,15 +531178,15 @@ "binop": null }, "value": "i", - "start": 154572, - "end": 154573, + "start": 155086, + "end": 155087, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 17 }, "end": { - "line": 3831, + "line": 3839, "column": 18 } } @@ -527943,15 +531205,15 @@ "updateContext": null }, "value": "=", - "start": 154574, - "end": 154575, + "start": 155088, + "end": 155089, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 19 }, "end": { - "line": 3831, + "line": 3839, "column": 20 } } @@ -527970,15 +531232,15 @@ "updateContext": null }, "value": 0, - "start": 154576, - "end": 154577, + "start": 155090, + "end": 155091, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 21 }, "end": { - "line": 3831, + "line": 3839, "column": 22 } } @@ -527996,15 +531258,15 @@ "binop": null, "updateContext": null }, - "start": 154577, - "end": 154578, + "start": 155091, + "end": 155092, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 22 }, "end": { - "line": 3831, + "line": 3839, "column": 23 } } @@ -528022,15 +531284,15 @@ "binop": null }, "value": "len", - "start": 154579, - "end": 154582, + "start": 155093, + "end": 155096, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 24 }, "end": { - "line": 3831, + "line": 3839, "column": 27 } } @@ -528049,15 +531311,15 @@ "updateContext": null }, "value": "=", - "start": 154583, - "end": 154584, + "start": 155097, + "end": 155098, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 28 }, "end": { - "line": 3831, + "line": 3839, "column": 29 } } @@ -528075,15 +531337,15 @@ "binop": null }, "value": "renderFlags", - "start": 154585, - "end": 154596, + "start": 155099, + "end": 155110, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 30 }, "end": { - "line": 3831, + "line": 3839, "column": 41 } } @@ -528101,15 +531363,15 @@ "binop": null, "updateContext": null }, - "start": 154596, - "end": 154597, + "start": 155110, + "end": 155111, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 41 }, "end": { - "line": 3831, + "line": 3839, "column": 42 } } @@ -528127,15 +531389,15 @@ "binop": null }, "value": "visibleLayers", - "start": 154597, - "end": 154610, + "start": 155111, + "end": 155124, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 42 }, "end": { - "line": 3831, + "line": 3839, "column": 55 } } @@ -528153,15 +531415,15 @@ "binop": null, "updateContext": null }, - "start": 154610, - "end": 154611, + "start": 155124, + "end": 155125, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 55 }, "end": { - "line": 3831, + "line": 3839, "column": 56 } } @@ -528179,15 +531441,15 @@ "binop": null }, "value": "length", - "start": 154611, - "end": 154617, + "start": 155125, + "end": 155131, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 56 }, "end": { - "line": 3831, + "line": 3839, "column": 62 } } @@ -528205,15 +531467,15 @@ "binop": null, "updateContext": null }, - "start": 154617, - "end": 154618, + "start": 155131, + "end": 155132, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 62 }, "end": { - "line": 3831, + "line": 3839, "column": 63 } } @@ -528231,15 +531493,15 @@ "binop": null }, "value": "i", - "start": 154619, - "end": 154620, + "start": 155133, + "end": 155134, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 64 }, "end": { - "line": 3831, + "line": 3839, "column": 65 } } @@ -528258,15 +531520,15 @@ "updateContext": null }, "value": "<", - "start": 154621, - "end": 154622, + "start": 155135, + "end": 155136, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 66 }, "end": { - "line": 3831, + "line": 3839, "column": 67 } } @@ -528284,15 +531546,15 @@ "binop": null }, "value": "len", - "start": 154623, - "end": 154626, + "start": 155137, + "end": 155140, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 68 }, "end": { - "line": 3831, + "line": 3839, "column": 71 } } @@ -528310,15 +531572,15 @@ "binop": null, "updateContext": null }, - "start": 154626, - "end": 154627, + "start": 155140, + "end": 155141, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 71 }, "end": { - "line": 3831, + "line": 3839, "column": 72 } } @@ -528336,15 +531598,15 @@ "binop": null }, "value": "i", - "start": 154628, - "end": 154629, + "start": 155142, + "end": 155143, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 73 }, "end": { - "line": 3831, + "line": 3839, "column": 74 } } @@ -528362,15 +531624,15 @@ "binop": null }, "value": "++", - "start": 154629, - "end": 154631, + "start": 155143, + "end": 155145, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 74 }, "end": { - "line": 3831, + "line": 3839, "column": 76 } } @@ -528387,15 +531649,15 @@ "postfix": false, "binop": null }, - "start": 154631, - "end": 154632, + "start": 155145, + "end": 155146, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 76 }, "end": { - "line": 3831, + "line": 3839, "column": 77 } } @@ -528412,15 +531674,15 @@ "postfix": false, "binop": null }, - "start": 154633, - "end": 154634, + "start": 155147, + "end": 155148, "loc": { "start": { - "line": 3831, + "line": 3839, "column": 78 }, "end": { - "line": 3831, + "line": 3839, "column": 79 } } @@ -528440,15 +531702,15 @@ "updateContext": null }, "value": "const", - "start": 154647, - "end": 154652, + "start": 155161, + "end": 155166, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 12 }, "end": { - "line": 3832, + "line": 3840, "column": 17 } } @@ -528466,15 +531728,15 @@ "binop": null }, "value": "layerIndex", - "start": 154653, - "end": 154663, + "start": 155167, + "end": 155177, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 18 }, "end": { - "line": 3832, + "line": 3840, "column": 28 } } @@ -528493,15 +531755,15 @@ "updateContext": null }, "value": "=", - "start": 154664, - "end": 154665, + "start": 155178, + "end": 155179, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 29 }, "end": { - "line": 3832, + "line": 3840, "column": 30 } } @@ -528519,15 +531781,15 @@ "binop": null }, "value": "renderFlags", - "start": 154666, - "end": 154677, + "start": 155180, + "end": 155191, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 31 }, "end": { - "line": 3832, + "line": 3840, "column": 42 } } @@ -528545,15 +531807,15 @@ "binop": null, "updateContext": null }, - "start": 154677, - "end": 154678, + "start": 155191, + "end": 155192, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 42 }, "end": { - "line": 3832, + "line": 3840, "column": 43 } } @@ -528571,15 +531833,15 @@ "binop": null }, "value": "visibleLayers", - "start": 154678, - "end": 154691, + "start": 155192, + "end": 155205, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 43 }, "end": { - "line": 3832, + "line": 3840, "column": 56 } } @@ -528597,15 +531859,15 @@ "binop": null, "updateContext": null }, - "start": 154691, - "end": 154692, + "start": 155205, + "end": 155206, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 56 }, "end": { - "line": 3832, + "line": 3840, "column": 57 } } @@ -528623,15 +531885,15 @@ "binop": null }, "value": "i", - "start": 154692, - "end": 154693, + "start": 155206, + "end": 155207, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 57 }, "end": { - "line": 3832, + "line": 3840, "column": 58 } } @@ -528649,15 +531911,15 @@ "binop": null, "updateContext": null }, - "start": 154693, - "end": 154694, + "start": 155207, + "end": 155208, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 58 }, "end": { - "line": 3832, + "line": 3840, "column": 59 } } @@ -528675,15 +531937,15 @@ "binop": null, "updateContext": null }, - "start": 154694, - "end": 154695, + "start": 155208, + "end": 155209, "loc": { "start": { - "line": 3832, + "line": 3840, "column": 59 }, "end": { - "line": 3832, + "line": 3840, "column": 60 } } @@ -528703,15 +531965,15 @@ "updateContext": null }, "value": "this", - "start": 154708, - "end": 154712, + "start": 155222, + "end": 155226, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 12 }, "end": { - "line": 3833, + "line": 3841, "column": 16 } } @@ -528729,15 +531991,15 @@ "binop": null, "updateContext": null }, - "start": 154712, - "end": 154713, + "start": 155226, + "end": 155227, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 16 }, "end": { - "line": 3833, + "line": 3841, "column": 17 } } @@ -528755,15 +532017,15 @@ "binop": null }, "value": "layerList", - "start": 154713, - "end": 154722, + "start": 155227, + "end": 155236, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 17 }, "end": { - "line": 3833, + "line": 3841, "column": 26 } } @@ -528781,15 +532043,15 @@ "binop": null, "updateContext": null }, - "start": 154722, - "end": 154723, + "start": 155236, + "end": 155237, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 26 }, "end": { - "line": 3833, + "line": 3841, "column": 27 } } @@ -528807,15 +532069,15 @@ "binop": null }, "value": "layerIndex", - "start": 154723, - "end": 154733, + "start": 155237, + "end": 155247, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 27 }, "end": { - "line": 3833, + "line": 3841, "column": 37 } } @@ -528833,15 +532095,15 @@ "binop": null, "updateContext": null }, - "start": 154733, - "end": 154734, + "start": 155247, + "end": 155248, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 37 }, "end": { - "line": 3833, + "line": 3841, "column": 38 } } @@ -528859,15 +532121,15 @@ "binop": null, "updateContext": null }, - "start": 154734, - "end": 154735, + "start": 155248, + "end": 155249, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 38 }, "end": { - "line": 3833, + "line": 3841, "column": 39 } } @@ -528885,15 +532147,15 @@ "binop": null }, "value": "drawPickMesh", - "start": 154735, - "end": 154747, + "start": 155249, + "end": 155261, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 39 }, "end": { - "line": 3833, + "line": 3841, "column": 51 } } @@ -528910,15 +532172,15 @@ "postfix": false, "binop": null }, - "start": 154747, - "end": 154748, + "start": 155261, + "end": 155262, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 51 }, "end": { - "line": 3833, + "line": 3841, "column": 52 } } @@ -528936,15 +532198,15 @@ "binop": null }, "value": "renderFlags", - "start": 154748, - "end": 154759, + "start": 155262, + "end": 155273, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 52 }, "end": { - "line": 3833, + "line": 3841, "column": 63 } } @@ -528962,15 +532224,15 @@ "binop": null, "updateContext": null }, - "start": 154759, - "end": 154760, + "start": 155273, + "end": 155274, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 63 }, "end": { - "line": 3833, + "line": 3841, "column": 64 } } @@ -528988,15 +532250,15 @@ "binop": null }, "value": "frameCtx", - "start": 154761, - "end": 154769, + "start": 155275, + "end": 155283, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 65 }, "end": { - "line": 3833, + "line": 3841, "column": 73 } } @@ -529013,15 +532275,15 @@ "postfix": false, "binop": null }, - "start": 154769, - "end": 154770, + "start": 155283, + "end": 155284, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 73 }, "end": { - "line": 3833, + "line": 3841, "column": 74 } } @@ -529039,15 +532301,15 @@ "binop": null, "updateContext": null }, - "start": 154770, - "end": 154771, + "start": 155284, + "end": 155285, "loc": { "start": { - "line": 3833, + "line": 3841, "column": 74 }, "end": { - "line": 3833, + "line": 3841, "column": 75 } } @@ -529064,15 +532326,15 @@ "postfix": false, "binop": null }, - "start": 154780, - "end": 154781, + "start": 155294, + "end": 155295, "loc": { "start": { - "line": 3834, + "line": 3842, "column": 8 }, "end": { - "line": 3834, + "line": 3842, "column": 9 } } @@ -529089,15 +532351,15 @@ "postfix": false, "binop": null }, - "start": 154786, - "end": 154787, + "start": 155300, + "end": 155301, "loc": { "start": { - "line": 3835, + "line": 3843, "column": 4 }, "end": { - "line": 3835, + "line": 3843, "column": 5 } } @@ -529105,15 +532367,15 @@ { "type": "CommentBlock", "value": "*\n * Called by SceneModelMesh.drawPickDepths()\n * @private\n ", - "start": 154793, - "end": 154869, + "start": 155307, + "end": 155383, "loc": { "start": { - "line": 3837, + "line": 3845, "column": 4 }, "end": { - "line": 3840, + "line": 3848, "column": 7 } } @@ -529131,15 +532393,15 @@ "binop": null }, "value": "drawPickDepths", - "start": 154874, - "end": 154888, + "start": 155388, + "end": 155402, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 4 }, "end": { - "line": 3841, + "line": 3849, "column": 18 } } @@ -529156,15 +532418,15 @@ "postfix": false, "binop": null }, - "start": 154888, - "end": 154889, + "start": 155402, + "end": 155403, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 18 }, "end": { - "line": 3841, + "line": 3849, "column": 19 } } @@ -529182,15 +532444,15 @@ "binop": null }, "value": "frameCtx", - "start": 154889, - "end": 154897, + "start": 155403, + "end": 155411, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 19 }, "end": { - "line": 3841, + "line": 3849, "column": 27 } } @@ -529207,15 +532469,15 @@ "postfix": false, "binop": null }, - "start": 154897, - "end": 154898, + "start": 155411, + "end": 155412, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 27 }, "end": { - "line": 3841, + "line": 3849, "column": 28 } } @@ -529232,15 +532494,15 @@ "postfix": false, "binop": null }, - "start": 154899, - "end": 154900, + "start": 155413, + "end": 155414, "loc": { "start": { - "line": 3841, + "line": 3849, "column": 29 }, "end": { - "line": 3841, + "line": 3849, "column": 30 } } @@ -529260,15 +532522,15 @@ "updateContext": null }, "value": "if", - "start": 154909, - "end": 154911, + "start": 155423, + "end": 155425, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 8 }, "end": { - "line": 3842, + "line": 3850, "column": 10 } } @@ -529285,15 +532547,15 @@ "postfix": false, "binop": null }, - "start": 154912, - "end": 154913, + "start": 155426, + "end": 155427, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 11 }, "end": { - "line": 3842, + "line": 3850, "column": 12 } } @@ -529313,15 +532575,15 @@ "updateContext": null }, "value": "this", - "start": 154913, - "end": 154917, + "start": 155427, + "end": 155431, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 12 }, "end": { - "line": 3842, + "line": 3850, "column": 16 } } @@ -529339,15 +532601,15 @@ "binop": null, "updateContext": null }, - "start": 154917, - "end": 154918, + "start": 155431, + "end": 155432, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 16 }, "end": { - "line": 3842, + "line": 3850, "column": 17 } } @@ -529365,15 +532627,15 @@ "binop": null }, "value": "numVisibleLayerPortions", - "start": 154918, - "end": 154941, + "start": 155432, + "end": 155455, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 17 }, "end": { - "line": 3842, + "line": 3850, "column": 40 } } @@ -529392,15 +532654,15 @@ "updateContext": null }, "value": "===", - "start": 154942, - "end": 154945, + "start": 155456, + "end": 155459, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 41 }, "end": { - "line": 3842, + "line": 3850, "column": 44 } } @@ -529419,15 +532681,15 @@ "updateContext": null }, "value": 0, - "start": 154946, - "end": 154947, + "start": 155460, + "end": 155461, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 45 }, "end": { - "line": 3842, + "line": 3850, "column": 46 } } @@ -529444,15 +532706,15 @@ "postfix": false, "binop": null }, - "start": 154947, - "end": 154948, + "start": 155461, + "end": 155462, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 46 }, "end": { - "line": 3842, + "line": 3850, "column": 47 } } @@ -529469,15 +532731,15 @@ "postfix": false, "binop": null }, - "start": 154949, - "end": 154950, + "start": 155463, + "end": 155464, "loc": { "start": { - "line": 3842, + "line": 3850, "column": 48 }, "end": { - "line": 3842, + "line": 3850, "column": 49 } } @@ -529497,15 +532759,15 @@ "updateContext": null }, "value": "return", - "start": 154963, - "end": 154969, + "start": 155477, + "end": 155483, "loc": { "start": { - "line": 3843, + "line": 3851, "column": 12 }, "end": { - "line": 3843, + "line": 3851, "column": 18 } } @@ -529523,15 +532785,15 @@ "binop": null, "updateContext": null }, - "start": 154969, - "end": 154970, + "start": 155483, + "end": 155484, "loc": { "start": { - "line": 3843, + "line": 3851, "column": 18 }, "end": { - "line": 3843, + "line": 3851, "column": 19 } } @@ -529548,15 +532810,15 @@ "postfix": false, "binop": null }, - "start": 154979, - "end": 154980, + "start": 155493, + "end": 155494, "loc": { "start": { - "line": 3844, + "line": 3852, "column": 8 }, "end": { - "line": 3844, + "line": 3852, "column": 9 } } @@ -529576,15 +532838,15 @@ "updateContext": null }, "value": "const", - "start": 154989, - "end": 154994, + "start": 155503, + "end": 155508, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 8 }, "end": { - "line": 3845, + "line": 3853, "column": 13 } } @@ -529602,15 +532864,15 @@ "binop": null }, "value": "renderFlags", - "start": 154995, - "end": 155006, + "start": 155509, + "end": 155520, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 14 }, "end": { - "line": 3845, + "line": 3853, "column": 25 } } @@ -529629,15 +532891,15 @@ "updateContext": null }, "value": "=", - "start": 155007, - "end": 155008, + "start": 155521, + "end": 155522, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 26 }, "end": { - "line": 3845, + "line": 3853, "column": 27 } } @@ -529657,15 +532919,15 @@ "updateContext": null }, "value": "this", - "start": 155009, - "end": 155013, + "start": 155523, + "end": 155527, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 28 }, "end": { - "line": 3845, + "line": 3853, "column": 32 } } @@ -529683,15 +532945,15 @@ "binop": null, "updateContext": null }, - "start": 155013, - "end": 155014, + "start": 155527, + "end": 155528, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 32 }, "end": { - "line": 3845, + "line": 3853, "column": 33 } } @@ -529709,15 +532971,15 @@ "binop": null }, "value": "renderFlags", - "start": 155014, - "end": 155025, + "start": 155528, + "end": 155539, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 33 }, "end": { - "line": 3845, + "line": 3853, "column": 44 } } @@ -529735,15 +532997,15 @@ "binop": null, "updateContext": null }, - "start": 155025, - "end": 155026, + "start": 155539, + "end": 155540, "loc": { "start": { - "line": 3845, + "line": 3853, "column": 44 }, "end": { - "line": 3845, + "line": 3853, "column": 45 } } @@ -529763,15 +533025,15 @@ "updateContext": null }, "value": "for", - "start": 155035, - "end": 155038, + "start": 155549, + "end": 155552, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 8 }, "end": { - "line": 3846, + "line": 3854, "column": 11 } } @@ -529788,15 +533050,15 @@ "postfix": false, "binop": null }, - "start": 155039, - "end": 155040, + "start": 155553, + "end": 155554, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 12 }, "end": { - "line": 3846, + "line": 3854, "column": 13 } } @@ -529816,15 +533078,15 @@ "updateContext": null }, "value": "let", - "start": 155040, - "end": 155043, + "start": 155554, + "end": 155557, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 13 }, "end": { - "line": 3846, + "line": 3854, "column": 16 } } @@ -529842,15 +533104,15 @@ "binop": null }, "value": "i", - "start": 155044, - "end": 155045, + "start": 155558, + "end": 155559, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 17 }, "end": { - "line": 3846, + "line": 3854, "column": 18 } } @@ -529869,15 +533131,15 @@ "updateContext": null }, "value": "=", - "start": 155046, - "end": 155047, + "start": 155560, + "end": 155561, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 19 }, "end": { - "line": 3846, + "line": 3854, "column": 20 } } @@ -529896,15 +533158,15 @@ "updateContext": null }, "value": 0, - "start": 155048, - "end": 155049, + "start": 155562, + "end": 155563, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 21 }, "end": { - "line": 3846, + "line": 3854, "column": 22 } } @@ -529922,15 +533184,15 @@ "binop": null, "updateContext": null }, - "start": 155049, - "end": 155050, + "start": 155563, + "end": 155564, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 22 }, "end": { - "line": 3846, + "line": 3854, "column": 23 } } @@ -529948,15 +533210,15 @@ "binop": null }, "value": "len", - "start": 155051, - "end": 155054, + "start": 155565, + "end": 155568, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 24 }, "end": { - "line": 3846, + "line": 3854, "column": 27 } } @@ -529975,15 +533237,15 @@ "updateContext": null }, "value": "=", - "start": 155055, - "end": 155056, + "start": 155569, + "end": 155570, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 28 }, "end": { - "line": 3846, + "line": 3854, "column": 29 } } @@ -530001,15 +533263,15 @@ "binop": null }, "value": "renderFlags", - "start": 155057, - "end": 155068, + "start": 155571, + "end": 155582, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 30 }, "end": { - "line": 3846, + "line": 3854, "column": 41 } } @@ -530027,15 +533289,15 @@ "binop": null, "updateContext": null }, - "start": 155068, - "end": 155069, + "start": 155582, + "end": 155583, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 41 }, "end": { - "line": 3846, + "line": 3854, "column": 42 } } @@ -530053,15 +533315,15 @@ "binop": null }, "value": "visibleLayers", - "start": 155069, - "end": 155082, + "start": 155583, + "end": 155596, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 42 }, "end": { - "line": 3846, + "line": 3854, "column": 55 } } @@ -530079,15 +533341,15 @@ "binop": null, "updateContext": null }, - "start": 155082, - "end": 155083, + "start": 155596, + "end": 155597, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 55 }, "end": { - "line": 3846, + "line": 3854, "column": 56 } } @@ -530105,15 +533367,15 @@ "binop": null }, "value": "length", - "start": 155083, - "end": 155089, + "start": 155597, + "end": 155603, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 56 }, "end": { - "line": 3846, + "line": 3854, "column": 62 } } @@ -530131,15 +533393,15 @@ "binop": null, "updateContext": null }, - "start": 155089, - "end": 155090, + "start": 155603, + "end": 155604, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 62 }, "end": { - "line": 3846, + "line": 3854, "column": 63 } } @@ -530157,15 +533419,15 @@ "binop": null }, "value": "i", - "start": 155091, - "end": 155092, + "start": 155605, + "end": 155606, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 64 }, "end": { - "line": 3846, + "line": 3854, "column": 65 } } @@ -530184,15 +533446,15 @@ "updateContext": null }, "value": "<", - "start": 155093, - "end": 155094, + "start": 155607, + "end": 155608, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 66 }, "end": { - "line": 3846, + "line": 3854, "column": 67 } } @@ -530210,15 +533472,15 @@ "binop": null }, "value": "len", - "start": 155095, - "end": 155098, + "start": 155609, + "end": 155612, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 68 }, "end": { - "line": 3846, + "line": 3854, "column": 71 } } @@ -530236,15 +533498,15 @@ "binop": null, "updateContext": null }, - "start": 155098, - "end": 155099, + "start": 155612, + "end": 155613, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 71 }, "end": { - "line": 3846, + "line": 3854, "column": 72 } } @@ -530262,15 +533524,15 @@ "binop": null }, "value": "i", - "start": 155100, - "end": 155101, + "start": 155614, + "end": 155615, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 73 }, "end": { - "line": 3846, + "line": 3854, "column": 74 } } @@ -530288,15 +533550,15 @@ "binop": null }, "value": "++", - "start": 155101, - "end": 155103, + "start": 155615, + "end": 155617, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 74 }, "end": { - "line": 3846, + "line": 3854, "column": 76 } } @@ -530313,15 +533575,15 @@ "postfix": false, "binop": null }, - "start": 155103, - "end": 155104, + "start": 155617, + "end": 155618, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 76 }, "end": { - "line": 3846, + "line": 3854, "column": 77 } } @@ -530338,15 +533600,15 @@ "postfix": false, "binop": null }, - "start": 155105, - "end": 155106, + "start": 155619, + "end": 155620, "loc": { "start": { - "line": 3846, + "line": 3854, "column": 78 }, "end": { - "line": 3846, + "line": 3854, "column": 79 } } @@ -530366,15 +533628,15 @@ "updateContext": null }, "value": "const", - "start": 155119, - "end": 155124, + "start": 155633, + "end": 155638, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 12 }, "end": { - "line": 3847, + "line": 3855, "column": 17 } } @@ -530392,15 +533654,15 @@ "binop": null }, "value": "layerIndex", - "start": 155125, - "end": 155135, + "start": 155639, + "end": 155649, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 18 }, "end": { - "line": 3847, + "line": 3855, "column": 28 } } @@ -530419,15 +533681,15 @@ "updateContext": null }, "value": "=", - "start": 155136, - "end": 155137, + "start": 155650, + "end": 155651, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 29 }, "end": { - "line": 3847, + "line": 3855, "column": 30 } } @@ -530445,15 +533707,15 @@ "binop": null }, "value": "renderFlags", - "start": 155138, - "end": 155149, + "start": 155652, + "end": 155663, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 31 }, "end": { - "line": 3847, + "line": 3855, "column": 42 } } @@ -530471,15 +533733,15 @@ "binop": null, "updateContext": null }, - "start": 155149, - "end": 155150, + "start": 155663, + "end": 155664, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 42 }, "end": { - "line": 3847, + "line": 3855, "column": 43 } } @@ -530497,15 +533759,15 @@ "binop": null }, "value": "visibleLayers", - "start": 155150, - "end": 155163, + "start": 155664, + "end": 155677, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 43 }, "end": { - "line": 3847, + "line": 3855, "column": 56 } } @@ -530523,15 +533785,15 @@ "binop": null, "updateContext": null }, - "start": 155163, - "end": 155164, + "start": 155677, + "end": 155678, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 56 }, "end": { - "line": 3847, + "line": 3855, "column": 57 } } @@ -530549,15 +533811,15 @@ "binop": null }, "value": "i", - "start": 155164, - "end": 155165, + "start": 155678, + "end": 155679, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 57 }, "end": { - "line": 3847, + "line": 3855, "column": 58 } } @@ -530575,15 +533837,15 @@ "binop": null, "updateContext": null }, - "start": 155165, - "end": 155166, + "start": 155679, + "end": 155680, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 58 }, "end": { - "line": 3847, + "line": 3855, "column": 59 } } @@ -530601,15 +533863,15 @@ "binop": null, "updateContext": null }, - "start": 155166, - "end": 155167, + "start": 155680, + "end": 155681, "loc": { "start": { - "line": 3847, + "line": 3855, "column": 59 }, "end": { - "line": 3847, + "line": 3855, "column": 60 } } @@ -530629,15 +533891,15 @@ "updateContext": null }, "value": "this", - "start": 155180, - "end": 155184, + "start": 155694, + "end": 155698, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 12 }, "end": { - "line": 3848, + "line": 3856, "column": 16 } } @@ -530655,15 +533917,15 @@ "binop": null, "updateContext": null }, - "start": 155184, - "end": 155185, + "start": 155698, + "end": 155699, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 16 }, "end": { - "line": 3848, + "line": 3856, "column": 17 } } @@ -530681,15 +533943,15 @@ "binop": null }, "value": "layerList", - "start": 155185, - "end": 155194, + "start": 155699, + "end": 155708, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 17 }, "end": { - "line": 3848, + "line": 3856, "column": 26 } } @@ -530707,15 +533969,15 @@ "binop": null, "updateContext": null }, - "start": 155194, - "end": 155195, + "start": 155708, + "end": 155709, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 26 }, "end": { - "line": 3848, + "line": 3856, "column": 27 } } @@ -530733,15 +533995,15 @@ "binop": null }, "value": "layerIndex", - "start": 155195, - "end": 155205, + "start": 155709, + "end": 155719, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 27 }, "end": { - "line": 3848, + "line": 3856, "column": 37 } } @@ -530759,15 +534021,15 @@ "binop": null, "updateContext": null }, - "start": 155205, - "end": 155206, + "start": 155719, + "end": 155720, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 37 }, "end": { - "line": 3848, + "line": 3856, "column": 38 } } @@ -530785,15 +534047,15 @@ "binop": null, "updateContext": null }, - "start": 155206, - "end": 155207, + "start": 155720, + "end": 155721, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 38 }, "end": { - "line": 3848, + "line": 3856, "column": 39 } } @@ -530811,15 +534073,15 @@ "binop": null }, "value": "drawPickDepths", - "start": 155207, - "end": 155221, + "start": 155721, + "end": 155735, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 39 }, "end": { - "line": 3848, + "line": 3856, "column": 53 } } @@ -530836,15 +534098,15 @@ "postfix": false, "binop": null }, - "start": 155221, - "end": 155222, + "start": 155735, + "end": 155736, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 53 }, "end": { - "line": 3848, + "line": 3856, "column": 54 } } @@ -530862,15 +534124,15 @@ "binop": null }, "value": "renderFlags", - "start": 155222, - "end": 155233, + "start": 155736, + "end": 155747, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 54 }, "end": { - "line": 3848, + "line": 3856, "column": 65 } } @@ -530888,15 +534150,15 @@ "binop": null, "updateContext": null }, - "start": 155233, - "end": 155234, + "start": 155747, + "end": 155748, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 65 }, "end": { - "line": 3848, + "line": 3856, "column": 66 } } @@ -530914,15 +534176,15 @@ "binop": null }, "value": "frameCtx", - "start": 155235, - "end": 155243, + "start": 155749, + "end": 155757, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 67 }, "end": { - "line": 3848, + "line": 3856, "column": 75 } } @@ -530939,15 +534201,15 @@ "postfix": false, "binop": null }, - "start": 155243, - "end": 155244, + "start": 155757, + "end": 155758, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 75 }, "end": { - "line": 3848, + "line": 3856, "column": 76 } } @@ -530965,15 +534227,15 @@ "binop": null, "updateContext": null }, - "start": 155244, - "end": 155245, + "start": 155758, + "end": 155759, "loc": { "start": { - "line": 3848, + "line": 3856, "column": 76 }, "end": { - "line": 3848, + "line": 3856, "column": 77 } } @@ -530990,15 +534252,15 @@ "postfix": false, "binop": null }, - "start": 155254, - "end": 155255, + "start": 155768, + "end": 155769, "loc": { "start": { - "line": 3849, + "line": 3857, "column": 8 }, "end": { - "line": 3849, + "line": 3857, "column": 9 } } @@ -531015,15 +534277,15 @@ "postfix": false, "binop": null }, - "start": 155260, - "end": 155261, + "start": 155774, + "end": 155775, "loc": { "start": { - "line": 3850, + "line": 3858, "column": 4 }, "end": { - "line": 3850, + "line": 3858, "column": 5 } } @@ -531031,15 +534293,15 @@ { "type": "CommentBlock", "value": "*\n * Called by SceneModelMesh.drawPickNormals()\n * @private\n ", - "start": 155267, - "end": 155344, + "start": 155781, + "end": 155858, "loc": { "start": { - "line": 3852, + "line": 3860, "column": 4 }, "end": { - "line": 3855, + "line": 3863, "column": 7 } } @@ -531057,15 +534319,15 @@ "binop": null }, "value": "drawPickNormals", - "start": 155349, - "end": 155364, + "start": 155863, + "end": 155878, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 4 }, "end": { - "line": 3856, + "line": 3864, "column": 19 } } @@ -531082,15 +534344,15 @@ "postfix": false, "binop": null }, - "start": 155364, - "end": 155365, + "start": 155878, + "end": 155879, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 19 }, "end": { - "line": 3856, + "line": 3864, "column": 20 } } @@ -531108,15 +534370,15 @@ "binop": null }, "value": "frameCtx", - "start": 155365, - "end": 155373, + "start": 155879, + "end": 155887, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 20 }, "end": { - "line": 3856, + "line": 3864, "column": 28 } } @@ -531133,15 +534395,15 @@ "postfix": false, "binop": null }, - "start": 155373, - "end": 155374, + "start": 155887, + "end": 155888, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 28 }, "end": { - "line": 3856, + "line": 3864, "column": 29 } } @@ -531158,15 +534420,15 @@ "postfix": false, "binop": null }, - "start": 155375, - "end": 155376, + "start": 155889, + "end": 155890, "loc": { "start": { - "line": 3856, + "line": 3864, "column": 30 }, "end": { - "line": 3856, + "line": 3864, "column": 31 } } @@ -531186,15 +534448,15 @@ "updateContext": null }, "value": "if", - "start": 155385, - "end": 155387, + "start": 155899, + "end": 155901, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 8 }, "end": { - "line": 3857, + "line": 3865, "column": 10 } } @@ -531211,15 +534473,15 @@ "postfix": false, "binop": null }, - "start": 155388, - "end": 155389, + "start": 155902, + "end": 155903, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 11 }, "end": { - "line": 3857, + "line": 3865, "column": 12 } } @@ -531239,15 +534501,15 @@ "updateContext": null }, "value": "this", - "start": 155389, - "end": 155393, + "start": 155903, + "end": 155907, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 12 }, "end": { - "line": 3857, + "line": 3865, "column": 16 } } @@ -531265,15 +534527,15 @@ "binop": null, "updateContext": null }, - "start": 155393, - "end": 155394, + "start": 155907, + "end": 155908, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 16 }, "end": { - "line": 3857, + "line": 3865, "column": 17 } } @@ -531291,15 +534553,15 @@ "binop": null }, "value": "numVisibleLayerPortions", - "start": 155394, - "end": 155417, + "start": 155908, + "end": 155931, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 17 }, "end": { - "line": 3857, + "line": 3865, "column": 40 } } @@ -531318,15 +534580,15 @@ "updateContext": null }, "value": "===", - "start": 155418, - "end": 155421, + "start": 155932, + "end": 155935, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 41 }, "end": { - "line": 3857, + "line": 3865, "column": 44 } } @@ -531345,15 +534607,15 @@ "updateContext": null }, "value": 0, - "start": 155422, - "end": 155423, + "start": 155936, + "end": 155937, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 45 }, "end": { - "line": 3857, + "line": 3865, "column": 46 } } @@ -531370,15 +534632,15 @@ "postfix": false, "binop": null }, - "start": 155423, - "end": 155424, + "start": 155937, + "end": 155938, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 46 }, "end": { - "line": 3857, + "line": 3865, "column": 47 } } @@ -531395,15 +534657,15 @@ "postfix": false, "binop": null }, - "start": 155425, - "end": 155426, + "start": 155939, + "end": 155940, "loc": { "start": { - "line": 3857, + "line": 3865, "column": 48 }, "end": { - "line": 3857, + "line": 3865, "column": 49 } } @@ -531423,15 +534685,15 @@ "updateContext": null }, "value": "return", - "start": 155439, - "end": 155445, + "start": 155953, + "end": 155959, "loc": { "start": { - "line": 3858, + "line": 3866, "column": 12 }, "end": { - "line": 3858, + "line": 3866, "column": 18 } } @@ -531449,15 +534711,15 @@ "binop": null, "updateContext": null }, - "start": 155445, - "end": 155446, + "start": 155959, + "end": 155960, "loc": { "start": { - "line": 3858, + "line": 3866, "column": 18 }, "end": { - "line": 3858, + "line": 3866, "column": 19 } } @@ -531474,15 +534736,15 @@ "postfix": false, "binop": null }, - "start": 155455, - "end": 155456, + "start": 155969, + "end": 155970, "loc": { "start": { - "line": 3859, + "line": 3867, "column": 8 }, "end": { - "line": 3859, + "line": 3867, "column": 9 } } @@ -531502,15 +534764,15 @@ "updateContext": null }, "value": "const", - "start": 155465, - "end": 155470, + "start": 155979, + "end": 155984, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 8 }, "end": { - "line": 3860, + "line": 3868, "column": 13 } } @@ -531528,15 +534790,15 @@ "binop": null }, "value": "renderFlags", - "start": 155471, - "end": 155482, + "start": 155985, + "end": 155996, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 14 }, "end": { - "line": 3860, + "line": 3868, "column": 25 } } @@ -531555,15 +534817,15 @@ "updateContext": null }, "value": "=", - "start": 155483, - "end": 155484, + "start": 155997, + "end": 155998, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 26 }, "end": { - "line": 3860, + "line": 3868, "column": 27 } } @@ -531583,15 +534845,15 @@ "updateContext": null }, "value": "this", - "start": 155485, - "end": 155489, + "start": 155999, + "end": 156003, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 28 }, "end": { - "line": 3860, + "line": 3868, "column": 32 } } @@ -531609,15 +534871,15 @@ "binop": null, "updateContext": null }, - "start": 155489, - "end": 155490, + "start": 156003, + "end": 156004, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 32 }, "end": { - "line": 3860, + "line": 3868, "column": 33 } } @@ -531635,15 +534897,15 @@ "binop": null }, "value": "renderFlags", - "start": 155490, - "end": 155501, + "start": 156004, + "end": 156015, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 33 }, "end": { - "line": 3860, + "line": 3868, "column": 44 } } @@ -531661,15 +534923,15 @@ "binop": null, "updateContext": null }, - "start": 155501, - "end": 155502, + "start": 156015, + "end": 156016, "loc": { "start": { - "line": 3860, + "line": 3868, "column": 44 }, "end": { - "line": 3860, + "line": 3868, "column": 45 } } @@ -531689,15 +534951,15 @@ "updateContext": null }, "value": "for", - "start": 155511, - "end": 155514, + "start": 156025, + "end": 156028, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 8 }, "end": { - "line": 3861, + "line": 3869, "column": 11 } } @@ -531714,15 +534976,15 @@ "postfix": false, "binop": null }, - "start": 155515, - "end": 155516, + "start": 156029, + "end": 156030, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 12 }, "end": { - "line": 3861, + "line": 3869, "column": 13 } } @@ -531742,15 +535004,15 @@ "updateContext": null }, "value": "let", - "start": 155516, - "end": 155519, + "start": 156030, + "end": 156033, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 13 }, "end": { - "line": 3861, + "line": 3869, "column": 16 } } @@ -531768,15 +535030,15 @@ "binop": null }, "value": "i", - "start": 155520, - "end": 155521, + "start": 156034, + "end": 156035, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 17 }, "end": { - "line": 3861, + "line": 3869, "column": 18 } } @@ -531795,15 +535057,15 @@ "updateContext": null }, "value": "=", - "start": 155522, - "end": 155523, + "start": 156036, + "end": 156037, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 19 }, "end": { - "line": 3861, + "line": 3869, "column": 20 } } @@ -531822,15 +535084,15 @@ "updateContext": null }, "value": 0, - "start": 155524, - "end": 155525, + "start": 156038, + "end": 156039, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 21 }, "end": { - "line": 3861, + "line": 3869, "column": 22 } } @@ -531848,15 +535110,15 @@ "binop": null, "updateContext": null }, - "start": 155525, - "end": 155526, + "start": 156039, + "end": 156040, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 22 }, "end": { - "line": 3861, + "line": 3869, "column": 23 } } @@ -531874,15 +535136,15 @@ "binop": null }, "value": "len", - "start": 155527, - "end": 155530, + "start": 156041, + "end": 156044, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 24 }, "end": { - "line": 3861, + "line": 3869, "column": 27 } } @@ -531901,15 +535163,15 @@ "updateContext": null }, "value": "=", - "start": 155531, - "end": 155532, + "start": 156045, + "end": 156046, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 28 }, "end": { - "line": 3861, + "line": 3869, "column": 29 } } @@ -531927,15 +535189,15 @@ "binop": null }, "value": "renderFlags", - "start": 155533, - "end": 155544, + "start": 156047, + "end": 156058, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 30 }, "end": { - "line": 3861, + "line": 3869, "column": 41 } } @@ -531953,15 +535215,15 @@ "binop": null, "updateContext": null }, - "start": 155544, - "end": 155545, + "start": 156058, + "end": 156059, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 41 }, "end": { - "line": 3861, + "line": 3869, "column": 42 } } @@ -531979,15 +535241,15 @@ "binop": null }, "value": "visibleLayers", - "start": 155545, - "end": 155558, + "start": 156059, + "end": 156072, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 42 }, "end": { - "line": 3861, + "line": 3869, "column": 55 } } @@ -532005,15 +535267,15 @@ "binop": null, "updateContext": null }, - "start": 155558, - "end": 155559, + "start": 156072, + "end": 156073, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 55 }, "end": { - "line": 3861, + "line": 3869, "column": 56 } } @@ -532031,15 +535293,15 @@ "binop": null }, "value": "length", - "start": 155559, - "end": 155565, + "start": 156073, + "end": 156079, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 56 }, "end": { - "line": 3861, + "line": 3869, "column": 62 } } @@ -532057,15 +535319,15 @@ "binop": null, "updateContext": null }, - "start": 155565, - "end": 155566, + "start": 156079, + "end": 156080, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 62 }, "end": { - "line": 3861, + "line": 3869, "column": 63 } } @@ -532083,15 +535345,15 @@ "binop": null }, "value": "i", - "start": 155567, - "end": 155568, + "start": 156081, + "end": 156082, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 64 }, "end": { - "line": 3861, + "line": 3869, "column": 65 } } @@ -532110,15 +535372,15 @@ "updateContext": null }, "value": "<", - "start": 155569, - "end": 155570, + "start": 156083, + "end": 156084, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 66 }, "end": { - "line": 3861, + "line": 3869, "column": 67 } } @@ -532136,15 +535398,15 @@ "binop": null }, "value": "len", - "start": 155571, - "end": 155574, + "start": 156085, + "end": 156088, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 68 }, "end": { - "line": 3861, + "line": 3869, "column": 71 } } @@ -532162,15 +535424,15 @@ "binop": null, "updateContext": null }, - "start": 155574, - "end": 155575, + "start": 156088, + "end": 156089, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 71 }, "end": { - "line": 3861, + "line": 3869, "column": 72 } } @@ -532188,15 +535450,15 @@ "binop": null }, "value": "i", - "start": 155576, - "end": 155577, + "start": 156090, + "end": 156091, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 73 }, "end": { - "line": 3861, + "line": 3869, "column": 74 } } @@ -532214,15 +535476,15 @@ "binop": null }, "value": "++", - "start": 155577, - "end": 155579, + "start": 156091, + "end": 156093, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 74 }, "end": { - "line": 3861, + "line": 3869, "column": 76 } } @@ -532239,15 +535501,15 @@ "postfix": false, "binop": null }, - "start": 155579, - "end": 155580, + "start": 156093, + "end": 156094, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 76 }, "end": { - "line": 3861, + "line": 3869, "column": 77 } } @@ -532264,15 +535526,15 @@ "postfix": false, "binop": null }, - "start": 155581, - "end": 155582, + "start": 156095, + "end": 156096, "loc": { "start": { - "line": 3861, + "line": 3869, "column": 78 }, "end": { - "line": 3861, + "line": 3869, "column": 79 } } @@ -532292,15 +535554,15 @@ "updateContext": null }, "value": "const", - "start": 155595, - "end": 155600, + "start": 156109, + "end": 156114, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 12 }, "end": { - "line": 3862, + "line": 3870, "column": 17 } } @@ -532318,15 +535580,15 @@ "binop": null }, "value": "layerIndex", - "start": 155601, - "end": 155611, + "start": 156115, + "end": 156125, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 18 }, "end": { - "line": 3862, + "line": 3870, "column": 28 } } @@ -532345,15 +535607,15 @@ "updateContext": null }, "value": "=", - "start": 155612, - "end": 155613, + "start": 156126, + "end": 156127, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 29 }, "end": { - "line": 3862, + "line": 3870, "column": 30 } } @@ -532371,15 +535633,15 @@ "binop": null }, "value": "renderFlags", - "start": 155614, - "end": 155625, + "start": 156128, + "end": 156139, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 31 }, "end": { - "line": 3862, + "line": 3870, "column": 42 } } @@ -532397,15 +535659,15 @@ "binop": null, "updateContext": null }, - "start": 155625, - "end": 155626, + "start": 156139, + "end": 156140, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 42 }, "end": { - "line": 3862, + "line": 3870, "column": 43 } } @@ -532423,15 +535685,15 @@ "binop": null }, "value": "visibleLayers", - "start": 155626, - "end": 155639, + "start": 156140, + "end": 156153, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 43 }, "end": { - "line": 3862, + "line": 3870, "column": 56 } } @@ -532449,15 +535711,15 @@ "binop": null, "updateContext": null }, - "start": 155639, - "end": 155640, + "start": 156153, + "end": 156154, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 56 }, "end": { - "line": 3862, + "line": 3870, "column": 57 } } @@ -532475,15 +535737,15 @@ "binop": null }, "value": "i", - "start": 155640, - "end": 155641, + "start": 156154, + "end": 156155, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 57 }, "end": { - "line": 3862, + "line": 3870, "column": 58 } } @@ -532501,15 +535763,15 @@ "binop": null, "updateContext": null }, - "start": 155641, - "end": 155642, + "start": 156155, + "end": 156156, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 58 }, "end": { - "line": 3862, + "line": 3870, "column": 59 } } @@ -532527,15 +535789,15 @@ "binop": null, "updateContext": null }, - "start": 155642, - "end": 155643, + "start": 156156, + "end": 156157, "loc": { "start": { - "line": 3862, + "line": 3870, "column": 59 }, "end": { - "line": 3862, + "line": 3870, "column": 60 } } @@ -532555,15 +535817,15 @@ "updateContext": null }, "value": "this", - "start": 155656, - "end": 155660, + "start": 156170, + "end": 156174, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 12 }, "end": { - "line": 3863, + "line": 3871, "column": 16 } } @@ -532581,15 +535843,15 @@ "binop": null, "updateContext": null }, - "start": 155660, - "end": 155661, + "start": 156174, + "end": 156175, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 16 }, "end": { - "line": 3863, + "line": 3871, "column": 17 } } @@ -532607,15 +535869,15 @@ "binop": null }, "value": "layerList", - "start": 155661, - "end": 155670, + "start": 156175, + "end": 156184, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 17 }, "end": { - "line": 3863, + "line": 3871, "column": 26 } } @@ -532633,15 +535895,15 @@ "binop": null, "updateContext": null }, - "start": 155670, - "end": 155671, + "start": 156184, + "end": 156185, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 26 }, "end": { - "line": 3863, + "line": 3871, "column": 27 } } @@ -532659,15 +535921,15 @@ "binop": null }, "value": "layerIndex", - "start": 155671, - "end": 155681, + "start": 156185, + "end": 156195, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 27 }, "end": { - "line": 3863, + "line": 3871, "column": 37 } } @@ -532685,15 +535947,15 @@ "binop": null, "updateContext": null }, - "start": 155681, - "end": 155682, + "start": 156195, + "end": 156196, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 37 }, "end": { - "line": 3863, + "line": 3871, "column": 38 } } @@ -532711,15 +535973,15 @@ "binop": null, "updateContext": null }, - "start": 155682, - "end": 155683, + "start": 156196, + "end": 156197, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 38 }, "end": { - "line": 3863, + "line": 3871, "column": 39 } } @@ -532737,15 +535999,15 @@ "binop": null }, "value": "drawPickNormals", - "start": 155683, - "end": 155698, + "start": 156197, + "end": 156212, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 39 }, "end": { - "line": 3863, + "line": 3871, "column": 54 } } @@ -532762,15 +536024,15 @@ "postfix": false, "binop": null }, - "start": 155698, - "end": 155699, + "start": 156212, + "end": 156213, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 54 }, "end": { - "line": 3863, + "line": 3871, "column": 55 } } @@ -532788,15 +536050,15 @@ "binop": null }, "value": "renderFlags", - "start": 155699, - "end": 155710, + "start": 156213, + "end": 156224, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 55 }, "end": { - "line": 3863, + "line": 3871, "column": 66 } } @@ -532814,15 +536076,15 @@ "binop": null, "updateContext": null }, - "start": 155710, - "end": 155711, + "start": 156224, + "end": 156225, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 66 }, "end": { - "line": 3863, + "line": 3871, "column": 67 } } @@ -532840,15 +536102,15 @@ "binop": null }, "value": "frameCtx", - "start": 155712, - "end": 155720, + "start": 156226, + "end": 156234, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 68 }, "end": { - "line": 3863, + "line": 3871, "column": 76 } } @@ -532865,15 +536127,15 @@ "postfix": false, "binop": null }, - "start": 155720, - "end": 155721, + "start": 156234, + "end": 156235, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 76 }, "end": { - "line": 3863, + "line": 3871, "column": 77 } } @@ -532891,15 +536153,15 @@ "binop": null, "updateContext": null }, - "start": 155721, - "end": 155722, + "start": 156235, + "end": 156236, "loc": { "start": { - "line": 3863, + "line": 3871, "column": 77 }, "end": { - "line": 3863, + "line": 3871, "column": 78 } } @@ -532916,15 +536178,15 @@ "postfix": false, "binop": null }, - "start": 155731, - "end": 155732, + "start": 156245, + "end": 156246, "loc": { "start": { - "line": 3864, + "line": 3872, "column": 8 }, "end": { - "line": 3864, + "line": 3872, "column": 9 } } @@ -532941,15 +536203,15 @@ "postfix": false, "binop": null }, - "start": 155737, - "end": 155738, + "start": 156251, + "end": 156252, "loc": { "start": { - "line": 3865, + "line": 3873, "column": 4 }, "end": { - "line": 3865, + "line": 3873, "column": 5 } } @@ -532957,15 +536219,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 155744, - "end": 155771, + "start": 156258, + "end": 156285, "loc": { "start": { - "line": 3867, + "line": 3875, "column": 4 }, "end": { - "line": 3869, + "line": 3877, "column": 7 } } @@ -532983,15 +536245,15 @@ "binop": null }, "value": "drawSnapInit", - "start": 155776, - "end": 155788, + "start": 156290, + "end": 156302, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 4 }, "end": { - "line": 3870, + "line": 3878, "column": 16 } } @@ -533008,15 +536270,15 @@ "postfix": false, "binop": null }, - "start": 155788, - "end": 155789, + "start": 156302, + "end": 156303, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 16 }, "end": { - "line": 3870, + "line": 3878, "column": 17 } } @@ -533034,15 +536296,15 @@ "binop": null }, "value": "frameCtx", - "start": 155789, - "end": 155797, + "start": 156303, + "end": 156311, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 17 }, "end": { - "line": 3870, + "line": 3878, "column": 25 } } @@ -533059,15 +536321,15 @@ "postfix": false, "binop": null }, - "start": 155797, - "end": 155798, + "start": 156311, + "end": 156312, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 25 }, "end": { - "line": 3870, + "line": 3878, "column": 26 } } @@ -533084,15 +536346,15 @@ "postfix": false, "binop": null }, - "start": 155799, - "end": 155800, + "start": 156313, + "end": 156314, "loc": { "start": { - "line": 3870, + "line": 3878, "column": 27 }, "end": { - "line": 3870, + "line": 3878, "column": 28 } } @@ -533112,15 +536374,15 @@ "updateContext": null }, "value": "if", - "start": 155809, - "end": 155811, + "start": 156323, + "end": 156325, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 8 }, "end": { - "line": 3871, + "line": 3879, "column": 10 } } @@ -533137,15 +536399,15 @@ "postfix": false, "binop": null }, - "start": 155812, - "end": 155813, + "start": 156326, + "end": 156327, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 11 }, "end": { - "line": 3871, + "line": 3879, "column": 12 } } @@ -533165,15 +536427,15 @@ "updateContext": null }, "value": "this", - "start": 155813, - "end": 155817, + "start": 156327, + "end": 156331, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 12 }, "end": { - "line": 3871, + "line": 3879, "column": 16 } } @@ -533191,15 +536453,15 @@ "binop": null, "updateContext": null }, - "start": 155817, - "end": 155818, + "start": 156331, + "end": 156332, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 16 }, "end": { - "line": 3871, + "line": 3879, "column": 17 } } @@ -533217,15 +536479,15 @@ "binop": null }, "value": "numVisibleLayerPortions", - "start": 155818, - "end": 155841, + "start": 156332, + "end": 156355, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 17 }, "end": { - "line": 3871, + "line": 3879, "column": 40 } } @@ -533244,15 +536506,15 @@ "updateContext": null }, "value": "===", - "start": 155842, - "end": 155845, + "start": 156356, + "end": 156359, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 41 }, "end": { - "line": 3871, + "line": 3879, "column": 44 } } @@ -533271,15 +536533,15 @@ "updateContext": null }, "value": 0, - "start": 155846, - "end": 155847, + "start": 156360, + "end": 156361, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 45 }, "end": { - "line": 3871, + "line": 3879, "column": 46 } } @@ -533296,15 +536558,15 @@ "postfix": false, "binop": null }, - "start": 155847, - "end": 155848, + "start": 156361, + "end": 156362, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 46 }, "end": { - "line": 3871, + "line": 3879, "column": 47 } } @@ -533321,15 +536583,15 @@ "postfix": false, "binop": null }, - "start": 155849, - "end": 155850, + "start": 156363, + "end": 156364, "loc": { "start": { - "line": 3871, + "line": 3879, "column": 48 }, "end": { - "line": 3871, + "line": 3879, "column": 49 } } @@ -533349,15 +536611,15 @@ "updateContext": null }, "value": "return", - "start": 155863, - "end": 155869, + "start": 156377, + "end": 156383, "loc": { "start": { - "line": 3872, + "line": 3880, "column": 12 }, "end": { - "line": 3872, + "line": 3880, "column": 18 } } @@ -533375,15 +536637,15 @@ "binop": null, "updateContext": null }, - "start": 155869, - "end": 155870, + "start": 156383, + "end": 156384, "loc": { "start": { - "line": 3872, + "line": 3880, "column": 18 }, "end": { - "line": 3872, + "line": 3880, "column": 19 } } @@ -533400,15 +536662,15 @@ "postfix": false, "binop": null }, - "start": 155879, - "end": 155880, + "start": 156393, + "end": 156394, "loc": { "start": { - "line": 3873, + "line": 3881, "column": 8 }, "end": { - "line": 3873, + "line": 3881, "column": 9 } } @@ -533428,15 +536690,15 @@ "updateContext": null }, "value": "const", - "start": 155889, - "end": 155894, + "start": 156403, + "end": 156408, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 8 }, "end": { - "line": 3874, + "line": 3882, "column": 13 } } @@ -533454,15 +536716,15 @@ "binop": null }, "value": "renderFlags", - "start": 155895, - "end": 155906, + "start": 156409, + "end": 156420, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 14 }, "end": { - "line": 3874, + "line": 3882, "column": 25 } } @@ -533481,15 +536743,15 @@ "updateContext": null }, "value": "=", - "start": 155907, - "end": 155908, + "start": 156421, + "end": 156422, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 26 }, "end": { - "line": 3874, + "line": 3882, "column": 27 } } @@ -533509,15 +536771,15 @@ "updateContext": null }, "value": "this", - "start": 155909, - "end": 155913, + "start": 156423, + "end": 156427, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 28 }, "end": { - "line": 3874, + "line": 3882, "column": 32 } } @@ -533535,15 +536797,15 @@ "binop": null, "updateContext": null }, - "start": 155913, - "end": 155914, + "start": 156427, + "end": 156428, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 32 }, "end": { - "line": 3874, + "line": 3882, "column": 33 } } @@ -533561,15 +536823,15 @@ "binop": null }, "value": "renderFlags", - "start": 155914, - "end": 155925, + "start": 156428, + "end": 156439, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 33 }, "end": { - "line": 3874, + "line": 3882, "column": 44 } } @@ -533587,15 +536849,15 @@ "binop": null, "updateContext": null }, - "start": 155925, - "end": 155926, + "start": 156439, + "end": 156440, "loc": { "start": { - "line": 3874, + "line": 3882, "column": 44 }, "end": { - "line": 3874, + "line": 3882, "column": 45 } } @@ -533615,15 +536877,15 @@ "updateContext": null }, "value": "for", - "start": 155935, - "end": 155938, + "start": 156449, + "end": 156452, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 8 }, "end": { - "line": 3875, + "line": 3883, "column": 11 } } @@ -533640,15 +536902,15 @@ "postfix": false, "binop": null }, - "start": 155939, - "end": 155940, + "start": 156453, + "end": 156454, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 12 }, "end": { - "line": 3875, + "line": 3883, "column": 13 } } @@ -533668,15 +536930,15 @@ "updateContext": null }, "value": "let", - "start": 155940, - "end": 155943, + "start": 156454, + "end": 156457, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 13 }, "end": { - "line": 3875, + "line": 3883, "column": 16 } } @@ -533694,15 +536956,15 @@ "binop": null }, "value": "i", - "start": 155944, - "end": 155945, + "start": 156458, + "end": 156459, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 17 }, "end": { - "line": 3875, + "line": 3883, "column": 18 } } @@ -533721,15 +536983,15 @@ "updateContext": null }, "value": "=", - "start": 155946, - "end": 155947, + "start": 156460, + "end": 156461, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 19 }, "end": { - "line": 3875, + "line": 3883, "column": 20 } } @@ -533748,15 +537010,15 @@ "updateContext": null }, "value": 0, - "start": 155948, - "end": 155949, + "start": 156462, + "end": 156463, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 21 }, "end": { - "line": 3875, + "line": 3883, "column": 22 } } @@ -533774,15 +537036,15 @@ "binop": null, "updateContext": null }, - "start": 155949, - "end": 155950, + "start": 156463, + "end": 156464, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 22 }, "end": { - "line": 3875, + "line": 3883, "column": 23 } } @@ -533800,15 +537062,15 @@ "binop": null }, "value": "len", - "start": 155951, - "end": 155954, + "start": 156465, + "end": 156468, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 24 }, "end": { - "line": 3875, + "line": 3883, "column": 27 } } @@ -533827,15 +537089,15 @@ "updateContext": null }, "value": "=", - "start": 155955, - "end": 155956, + "start": 156469, + "end": 156470, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 28 }, "end": { - "line": 3875, + "line": 3883, "column": 29 } } @@ -533853,15 +537115,15 @@ "binop": null }, "value": "renderFlags", - "start": 155957, - "end": 155968, + "start": 156471, + "end": 156482, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 30 }, "end": { - "line": 3875, + "line": 3883, "column": 41 } } @@ -533879,15 +537141,15 @@ "binop": null, "updateContext": null }, - "start": 155968, - "end": 155969, + "start": 156482, + "end": 156483, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 41 }, "end": { - "line": 3875, + "line": 3883, "column": 42 } } @@ -533905,15 +537167,15 @@ "binop": null }, "value": "visibleLayers", - "start": 155969, - "end": 155982, + "start": 156483, + "end": 156496, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 42 }, "end": { - "line": 3875, + "line": 3883, "column": 55 } } @@ -533931,15 +537193,15 @@ "binop": null, "updateContext": null }, - "start": 155982, - "end": 155983, + "start": 156496, + "end": 156497, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 55 }, "end": { - "line": 3875, + "line": 3883, "column": 56 } } @@ -533957,15 +537219,15 @@ "binop": null }, "value": "length", - "start": 155983, - "end": 155989, + "start": 156497, + "end": 156503, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 56 }, "end": { - "line": 3875, + "line": 3883, "column": 62 } } @@ -533983,15 +537245,15 @@ "binop": null, "updateContext": null }, - "start": 155989, - "end": 155990, + "start": 156503, + "end": 156504, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 62 }, "end": { - "line": 3875, + "line": 3883, "column": 63 } } @@ -534009,15 +537271,15 @@ "binop": null }, "value": "i", - "start": 155991, - "end": 155992, + "start": 156505, + "end": 156506, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 64 }, "end": { - "line": 3875, + "line": 3883, "column": 65 } } @@ -534036,15 +537298,15 @@ "updateContext": null }, "value": "<", - "start": 155993, - "end": 155994, + "start": 156507, + "end": 156508, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 66 }, "end": { - "line": 3875, + "line": 3883, "column": 67 } } @@ -534062,15 +537324,15 @@ "binop": null }, "value": "len", - "start": 155995, - "end": 155998, + "start": 156509, + "end": 156512, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 68 }, "end": { - "line": 3875, + "line": 3883, "column": 71 } } @@ -534088,15 +537350,15 @@ "binop": null, "updateContext": null }, - "start": 155998, - "end": 155999, + "start": 156512, + "end": 156513, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 71 }, "end": { - "line": 3875, + "line": 3883, "column": 72 } } @@ -534114,15 +537376,15 @@ "binop": null }, "value": "i", - "start": 156000, - "end": 156001, + "start": 156514, + "end": 156515, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 73 }, "end": { - "line": 3875, + "line": 3883, "column": 74 } } @@ -534140,15 +537402,15 @@ "binop": null }, "value": "++", - "start": 156001, - "end": 156003, + "start": 156515, + "end": 156517, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 74 }, "end": { - "line": 3875, + "line": 3883, "column": 76 } } @@ -534165,15 +537427,15 @@ "postfix": false, "binop": null }, - "start": 156003, - "end": 156004, + "start": 156517, + "end": 156518, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 76 }, "end": { - "line": 3875, + "line": 3883, "column": 77 } } @@ -534190,15 +537452,15 @@ "postfix": false, "binop": null }, - "start": 156005, - "end": 156006, + "start": 156519, + "end": 156520, "loc": { "start": { - "line": 3875, + "line": 3883, "column": 78 }, "end": { - "line": 3875, + "line": 3883, "column": 79 } } @@ -534218,15 +537480,15 @@ "updateContext": null }, "value": "const", - "start": 156019, - "end": 156024, + "start": 156533, + "end": 156538, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 12 }, "end": { - "line": 3876, + "line": 3884, "column": 17 } } @@ -534244,15 +537506,15 @@ "binop": null }, "value": "layerIndex", - "start": 156025, - "end": 156035, + "start": 156539, + "end": 156549, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 18 }, "end": { - "line": 3876, + "line": 3884, "column": 28 } } @@ -534271,15 +537533,15 @@ "updateContext": null }, "value": "=", - "start": 156036, - "end": 156037, + "start": 156550, + "end": 156551, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 29 }, "end": { - "line": 3876, + "line": 3884, "column": 30 } } @@ -534297,15 +537559,15 @@ "binop": null }, "value": "renderFlags", - "start": 156038, - "end": 156049, + "start": 156552, + "end": 156563, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 31 }, "end": { - "line": 3876, + "line": 3884, "column": 42 } } @@ -534323,15 +537585,15 @@ "binop": null, "updateContext": null }, - "start": 156049, - "end": 156050, + "start": 156563, + "end": 156564, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 42 }, "end": { - "line": 3876, + "line": 3884, "column": 43 } } @@ -534349,15 +537611,15 @@ "binop": null }, "value": "visibleLayers", - "start": 156050, - "end": 156063, + "start": 156564, + "end": 156577, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 43 }, "end": { - "line": 3876, + "line": 3884, "column": 56 } } @@ -534375,15 +537637,15 @@ "binop": null, "updateContext": null }, - "start": 156063, - "end": 156064, + "start": 156577, + "end": 156578, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 56 }, "end": { - "line": 3876, + "line": 3884, "column": 57 } } @@ -534401,15 +537663,15 @@ "binop": null }, "value": "i", - "start": 156064, - "end": 156065, + "start": 156578, + "end": 156579, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 57 }, "end": { - "line": 3876, + "line": 3884, "column": 58 } } @@ -534427,15 +537689,15 @@ "binop": null, "updateContext": null }, - "start": 156065, - "end": 156066, + "start": 156579, + "end": 156580, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 58 }, "end": { - "line": 3876, + "line": 3884, "column": 59 } } @@ -534453,15 +537715,15 @@ "binop": null, "updateContext": null }, - "start": 156066, - "end": 156067, + "start": 156580, + "end": 156581, "loc": { "start": { - "line": 3876, + "line": 3884, "column": 59 }, "end": { - "line": 3876, + "line": 3884, "column": 60 } } @@ -534481,15 +537743,15 @@ "updateContext": null }, "value": "const", - "start": 156080, - "end": 156085, + "start": 156594, + "end": 156599, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 12 }, "end": { - "line": 3877, + "line": 3885, "column": 17 } } @@ -534507,15 +537769,15 @@ "binop": null }, "value": "layer", - "start": 156086, - "end": 156091, + "start": 156600, + "end": 156605, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 18 }, "end": { - "line": 3877, + "line": 3885, "column": 23 } } @@ -534534,15 +537796,15 @@ "updateContext": null }, "value": "=", - "start": 156092, - "end": 156093, + "start": 156606, + "end": 156607, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 24 }, "end": { - "line": 3877, + "line": 3885, "column": 25 } } @@ -534562,15 +537824,15 @@ "updateContext": null }, "value": "this", - "start": 156094, - "end": 156098, + "start": 156608, + "end": 156612, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 26 }, "end": { - "line": 3877, + "line": 3885, "column": 30 } } @@ -534588,15 +537850,15 @@ "binop": null, "updateContext": null }, - "start": 156098, - "end": 156099, + "start": 156612, + "end": 156613, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 30 }, "end": { - "line": 3877, + "line": 3885, "column": 31 } } @@ -534614,15 +537876,15 @@ "binop": null }, "value": "layerList", - "start": 156099, - "end": 156108, + "start": 156613, + "end": 156622, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 31 }, "end": { - "line": 3877, + "line": 3885, "column": 40 } } @@ -534640,15 +537902,15 @@ "binop": null, "updateContext": null }, - "start": 156108, - "end": 156109, + "start": 156622, + "end": 156623, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 40 }, "end": { - "line": 3877, + "line": 3885, "column": 41 } } @@ -534666,15 +537928,15 @@ "binop": null }, "value": "layerIndex", - "start": 156109, - "end": 156119, + "start": 156623, + "end": 156633, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 41 }, "end": { - "line": 3877, + "line": 3885, "column": 51 } } @@ -534692,15 +537954,15 @@ "binop": null, "updateContext": null }, - "start": 156119, - "end": 156120, + "start": 156633, + "end": 156634, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 51 }, "end": { - "line": 3877, + "line": 3885, "column": 52 } } @@ -534718,15 +537980,15 @@ "binop": null, "updateContext": null }, - "start": 156120, - "end": 156121, + "start": 156634, + "end": 156635, "loc": { "start": { - "line": 3877, + "line": 3885, "column": 52 }, "end": { - "line": 3877, + "line": 3885, "column": 53 } } @@ -534746,15 +538008,15 @@ "updateContext": null }, "value": "if", - "start": 156134, - "end": 156136, + "start": 156648, + "end": 156650, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 12 }, "end": { - "line": 3878, + "line": 3886, "column": 14 } } @@ -534771,15 +538033,15 @@ "postfix": false, "binop": null }, - "start": 156137, - "end": 156138, + "start": 156651, + "end": 156652, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 15 }, "end": { - "line": 3878, + "line": 3886, "column": 16 } } @@ -534797,15 +538059,15 @@ "binop": null }, "value": "layer", - "start": 156138, - "end": 156143, + "start": 156652, + "end": 156657, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 16 }, "end": { - "line": 3878, + "line": 3886, "column": 21 } } @@ -534823,15 +538085,15 @@ "binop": null, "updateContext": null }, - "start": 156143, - "end": 156144, + "start": 156657, + "end": 156658, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 21 }, "end": { - "line": 3878, + "line": 3886, "column": 22 } } @@ -534849,15 +538111,15 @@ "binop": null }, "value": "drawSnapInit", - "start": 156144, - "end": 156156, + "start": 156658, + "end": 156670, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 22 }, "end": { - "line": 3878, + "line": 3886, "column": 34 } } @@ -534874,15 +538136,15 @@ "postfix": false, "binop": null }, - "start": 156156, - "end": 156157, + "start": 156670, + "end": 156671, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 34 }, "end": { - "line": 3878, + "line": 3886, "column": 35 } } @@ -534899,15 +538161,15 @@ "postfix": false, "binop": null }, - "start": 156158, - "end": 156159, + "start": 156672, + "end": 156673, "loc": { "start": { - "line": 3878, + "line": 3886, "column": 36 }, "end": { - "line": 3878, + "line": 3886, "column": 37 } } @@ -534925,15 +538187,15 @@ "binop": null }, "value": "frameCtx", - "start": 156176, - "end": 156184, + "start": 156690, + "end": 156698, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 16 }, "end": { - "line": 3879, + "line": 3887, "column": 24 } } @@ -534951,15 +538213,15 @@ "binop": null, "updateContext": null }, - "start": 156184, - "end": 156185, + "start": 156698, + "end": 156699, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 24 }, "end": { - "line": 3879, + "line": 3887, "column": 25 } } @@ -534977,15 +538239,15 @@ "binop": null }, "value": "snapPickOrigin", - "start": 156185, - "end": 156199, + "start": 156699, + "end": 156713, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 25 }, "end": { - "line": 3879, + "line": 3887, "column": 39 } } @@ -535004,15 +538266,15 @@ "updateContext": null }, "value": "=", - "start": 156200, - "end": 156201, + "start": 156714, + "end": 156715, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 40 }, "end": { - "line": 3879, + "line": 3887, "column": 41 } } @@ -535030,15 +538292,15 @@ "binop": null, "updateContext": null }, - "start": 156202, - "end": 156203, + "start": 156716, + "end": 156717, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 42 }, "end": { - "line": 3879, + "line": 3887, "column": 43 } } @@ -535057,15 +538319,15 @@ "updateContext": null }, "value": 0, - "start": 156203, - "end": 156204, + "start": 156717, + "end": 156718, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 43 }, "end": { - "line": 3879, + "line": 3887, "column": 44 } } @@ -535083,15 +538345,15 @@ "binop": null, "updateContext": null }, - "start": 156204, - "end": 156205, + "start": 156718, + "end": 156719, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 44 }, "end": { - "line": 3879, + "line": 3887, "column": 45 } } @@ -535110,15 +538372,15 @@ "updateContext": null }, "value": 0, - "start": 156206, - "end": 156207, + "start": 156720, + "end": 156721, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 46 }, "end": { - "line": 3879, + "line": 3887, "column": 47 } } @@ -535136,15 +538398,15 @@ "binop": null, "updateContext": null }, - "start": 156207, - "end": 156208, + "start": 156721, + "end": 156722, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 47 }, "end": { - "line": 3879, + "line": 3887, "column": 48 } } @@ -535163,15 +538425,15 @@ "updateContext": null }, "value": 0, - "start": 156209, - "end": 156210, + "start": 156723, + "end": 156724, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 49 }, "end": { - "line": 3879, + "line": 3887, "column": 50 } } @@ -535189,15 +538451,15 @@ "binop": null, "updateContext": null }, - "start": 156210, - "end": 156211, + "start": 156724, + "end": 156725, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 50 }, "end": { - "line": 3879, + "line": 3887, "column": 51 } } @@ -535215,15 +538477,15 @@ "binop": null, "updateContext": null }, - "start": 156211, - "end": 156212, + "start": 156725, + "end": 156726, "loc": { "start": { - "line": 3879, + "line": 3887, "column": 51 }, "end": { - "line": 3879, + "line": 3887, "column": 52 } } @@ -535241,15 +538503,15 @@ "binop": null }, "value": "frameCtx", - "start": 156229, - "end": 156237, + "start": 156743, + "end": 156751, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 16 }, "end": { - "line": 3880, + "line": 3888, "column": 24 } } @@ -535267,15 +538529,15 @@ "binop": null, "updateContext": null }, - "start": 156237, - "end": 156238, + "start": 156751, + "end": 156752, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 24 }, "end": { - "line": 3880, + "line": 3888, "column": 25 } } @@ -535293,15 +538555,15 @@ "binop": null }, "value": "snapPickCoordinateScale", - "start": 156238, - "end": 156261, + "start": 156752, + "end": 156775, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 25 }, "end": { - "line": 3880, + "line": 3888, "column": 48 } } @@ -535320,15 +538582,15 @@ "updateContext": null }, "value": "=", - "start": 156262, - "end": 156263, + "start": 156776, + "end": 156777, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 49 }, "end": { - "line": 3880, + "line": 3888, "column": 50 } } @@ -535346,15 +538608,15 @@ "binop": null, "updateContext": null }, - "start": 156264, - "end": 156265, + "start": 156778, + "end": 156779, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 51 }, "end": { - "line": 3880, + "line": 3888, "column": 52 } } @@ -535373,15 +538635,15 @@ "updateContext": null }, "value": 1, - "start": 156265, - "end": 156266, + "start": 156779, + "end": 156780, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 52 }, "end": { - "line": 3880, + "line": 3888, "column": 53 } } @@ -535399,15 +538661,15 @@ "binop": null, "updateContext": null }, - "start": 156266, - "end": 156267, + "start": 156780, + "end": 156781, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 53 }, "end": { - "line": 3880, + "line": 3888, "column": 54 } } @@ -535426,15 +538688,15 @@ "updateContext": null }, "value": 1, - "start": 156268, - "end": 156269, + "start": 156782, + "end": 156783, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 55 }, "end": { - "line": 3880, + "line": 3888, "column": 56 } } @@ -535452,15 +538714,15 @@ "binop": null, "updateContext": null }, - "start": 156269, - "end": 156270, + "start": 156783, + "end": 156784, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 56 }, "end": { - "line": 3880, + "line": 3888, "column": 57 } } @@ -535479,15 +538741,15 @@ "updateContext": null }, "value": 1, - "start": 156271, - "end": 156272, + "start": 156785, + "end": 156786, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 58 }, "end": { - "line": 3880, + "line": 3888, "column": 59 } } @@ -535505,15 +538767,15 @@ "binop": null, "updateContext": null }, - "start": 156272, - "end": 156273, + "start": 156786, + "end": 156787, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 59 }, "end": { - "line": 3880, + "line": 3888, "column": 60 } } @@ -535531,15 +538793,15 @@ "binop": null, "updateContext": null }, - "start": 156273, - "end": 156274, + "start": 156787, + "end": 156788, "loc": { "start": { - "line": 3880, + "line": 3888, "column": 60 }, "end": { - "line": 3880, + "line": 3888, "column": 61 } } @@ -535557,15 +538819,15 @@ "binop": null }, "value": "frameCtx", - "start": 156291, - "end": 156299, + "start": 156805, + "end": 156813, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 16 }, "end": { - "line": 3881, + "line": 3889, "column": 24 } } @@ -535583,15 +538845,15 @@ "binop": null, "updateContext": null }, - "start": 156299, - "end": 156300, + "start": 156813, + "end": 156814, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 24 }, "end": { - "line": 3881, + "line": 3889, "column": 25 } } @@ -535609,15 +538871,15 @@ "binop": null }, "value": "snapPickLayerNumber", - "start": 156300, - "end": 156319, + "start": 156814, + "end": 156833, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 25 }, "end": { - "line": 3881, + "line": 3889, "column": 44 } } @@ -535635,15 +538897,15 @@ "binop": null }, "value": "++", - "start": 156319, - "end": 156321, + "start": 156833, + "end": 156835, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 44 }, "end": { - "line": 3881, + "line": 3889, "column": 46 } } @@ -535661,15 +538923,15 @@ "binop": null, "updateContext": null }, - "start": 156321, - "end": 156322, + "start": 156835, + "end": 156836, "loc": { "start": { - "line": 3881, + "line": 3889, "column": 46 }, "end": { - "line": 3881, + "line": 3889, "column": 47 } } @@ -535687,15 +538949,15 @@ "binop": null }, "value": "layer", - "start": 156339, - "end": 156344, + "start": 156853, + "end": 156858, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 16 }, "end": { - "line": 3882, + "line": 3890, "column": 21 } } @@ -535713,15 +538975,15 @@ "binop": null, "updateContext": null }, - "start": 156344, - "end": 156345, + "start": 156858, + "end": 156859, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 21 }, "end": { - "line": 3882, + "line": 3890, "column": 22 } } @@ -535739,15 +539001,15 @@ "binop": null }, "value": "drawSnapInit", - "start": 156345, - "end": 156357, + "start": 156859, + "end": 156871, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 22 }, "end": { - "line": 3882, + "line": 3890, "column": 34 } } @@ -535764,15 +539026,15 @@ "postfix": false, "binop": null }, - "start": 156357, - "end": 156358, + "start": 156871, + "end": 156872, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 34 }, "end": { - "line": 3882, + "line": 3890, "column": 35 } } @@ -535790,15 +539052,15 @@ "binop": null }, "value": "renderFlags", - "start": 156358, - "end": 156369, + "start": 156872, + "end": 156883, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 35 }, "end": { - "line": 3882, + "line": 3890, "column": 46 } } @@ -535816,15 +539078,15 @@ "binop": null, "updateContext": null }, - "start": 156369, - "end": 156370, + "start": 156883, + "end": 156884, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 46 }, "end": { - "line": 3882, + "line": 3890, "column": 47 } } @@ -535842,15 +539104,15 @@ "binop": null }, "value": "frameCtx", - "start": 156371, - "end": 156379, + "start": 156885, + "end": 156893, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 48 }, "end": { - "line": 3882, + "line": 3890, "column": 56 } } @@ -535867,15 +539129,15 @@ "postfix": false, "binop": null }, - "start": 156379, - "end": 156380, + "start": 156893, + "end": 156894, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 56 }, "end": { - "line": 3882, + "line": 3890, "column": 57 } } @@ -535893,15 +539155,15 @@ "binop": null, "updateContext": null }, - "start": 156380, - "end": 156381, + "start": 156894, + "end": 156895, "loc": { "start": { - "line": 3882, + "line": 3890, "column": 57 }, "end": { - "line": 3882, + "line": 3890, "column": 58 } } @@ -535919,15 +539181,15 @@ "binop": null }, "value": "frameCtx", - "start": 156398, - "end": 156406, + "start": 156912, + "end": 156920, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 16 }, "end": { - "line": 3883, + "line": 3891, "column": 24 } } @@ -535945,15 +539207,15 @@ "binop": null, "updateContext": null }, - "start": 156406, - "end": 156407, + "start": 156920, + "end": 156921, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 24 }, "end": { - "line": 3883, + "line": 3891, "column": 25 } } @@ -535971,15 +539233,15 @@ "binop": null }, "value": "snapPickLayerParams", - "start": 156407, - "end": 156426, + "start": 156921, + "end": 156940, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 25 }, "end": { - "line": 3883, + "line": 3891, "column": 44 } } @@ -535997,15 +539259,15 @@ "binop": null, "updateContext": null }, - "start": 156426, - "end": 156427, + "start": 156940, + "end": 156941, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 44 }, "end": { - "line": 3883, + "line": 3891, "column": 45 } } @@ -536023,15 +539285,15 @@ "binop": null }, "value": "frameCtx", - "start": 156427, - "end": 156435, + "start": 156941, + "end": 156949, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 45 }, "end": { - "line": 3883, + "line": 3891, "column": 53 } } @@ -536049,15 +539311,15 @@ "binop": null, "updateContext": null }, - "start": 156435, - "end": 156436, + "start": 156949, + "end": 156950, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 53 }, "end": { - "line": 3883, + "line": 3891, "column": 54 } } @@ -536075,15 +539337,15 @@ "binop": null }, "value": "snapPickLayerNumber", - "start": 156436, - "end": 156455, + "start": 156950, + "end": 156969, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 54 }, "end": { - "line": 3883, + "line": 3891, "column": 73 } } @@ -536101,15 +539363,15 @@ "binop": null, "updateContext": null }, - "start": 156455, - "end": 156456, + "start": 156969, + "end": 156970, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 73 }, "end": { - "line": 3883, + "line": 3891, "column": 74 } } @@ -536128,15 +539390,15 @@ "updateContext": null }, "value": "=", - "start": 156457, - "end": 156458, + "start": 156971, + "end": 156972, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 75 }, "end": { - "line": 3883, + "line": 3891, "column": 76 } } @@ -536153,15 +539415,15 @@ "postfix": false, "binop": null }, - "start": 156459, - "end": 156460, + "start": 156973, + "end": 156974, "loc": { "start": { - "line": 3883, + "line": 3891, "column": 77 }, "end": { - "line": 3883, + "line": 3891, "column": 78 } } @@ -536179,15 +539441,15 @@ "binop": null }, "value": "origin", - "start": 156481, - "end": 156487, + "start": 156995, + "end": 157001, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 20 }, "end": { - "line": 3884, + "line": 3892, "column": 26 } } @@ -536205,15 +539467,15 @@ "binop": null, "updateContext": null }, - "start": 156487, - "end": 156488, + "start": 157001, + "end": 157002, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 26 }, "end": { - "line": 3884, + "line": 3892, "column": 27 } } @@ -536231,15 +539493,15 @@ "binop": null }, "value": "frameCtx", - "start": 156489, - "end": 156497, + "start": 157003, + "end": 157011, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 28 }, "end": { - "line": 3884, + "line": 3892, "column": 36 } } @@ -536257,15 +539519,15 @@ "binop": null, "updateContext": null }, - "start": 156497, - "end": 156498, + "start": 157011, + "end": 157012, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 36 }, "end": { - "line": 3884, + "line": 3892, "column": 37 } } @@ -536283,15 +539545,15 @@ "binop": null }, "value": "snapPickOrigin", - "start": 156498, - "end": 156512, + "start": 157012, + "end": 157026, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 37 }, "end": { - "line": 3884, + "line": 3892, "column": 51 } } @@ -536309,15 +539571,15 @@ "binop": null, "updateContext": null }, - "start": 156512, - "end": 156513, + "start": 157026, + "end": 157027, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 51 }, "end": { - "line": 3884, + "line": 3892, "column": 52 } } @@ -536335,15 +539597,15 @@ "binop": null }, "value": "slice", - "start": 156513, - "end": 156518, + "start": 157027, + "end": 157032, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 52 }, "end": { - "line": 3884, + "line": 3892, "column": 57 } } @@ -536360,15 +539622,15 @@ "postfix": false, "binop": null }, - "start": 156518, - "end": 156519, + "start": 157032, + "end": 157033, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 57 }, "end": { - "line": 3884, + "line": 3892, "column": 58 } } @@ -536385,15 +539647,15 @@ "postfix": false, "binop": null }, - "start": 156519, - "end": 156520, + "start": 157033, + "end": 157034, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 58 }, "end": { - "line": 3884, + "line": 3892, "column": 59 } } @@ -536411,15 +539673,15 @@ "binop": null, "updateContext": null }, - "start": 156520, - "end": 156521, + "start": 157034, + "end": 157035, "loc": { "start": { - "line": 3884, + "line": 3892, "column": 59 }, "end": { - "line": 3884, + "line": 3892, "column": 60 } } @@ -536437,15 +539699,15 @@ "binop": null }, "value": "coordinateScale", - "start": 156542, - "end": 156557, + "start": 157056, + "end": 157071, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 20 }, "end": { - "line": 3885, + "line": 3893, "column": 35 } } @@ -536463,15 +539725,15 @@ "binop": null, "updateContext": null }, - "start": 156557, - "end": 156558, + "start": 157071, + "end": 157072, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 35 }, "end": { - "line": 3885, + "line": 3893, "column": 36 } } @@ -536489,15 +539751,15 @@ "binop": null }, "value": "frameCtx", - "start": 156559, - "end": 156567, + "start": 157073, + "end": 157081, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 37 }, "end": { - "line": 3885, + "line": 3893, "column": 45 } } @@ -536515,15 +539777,15 @@ "binop": null, "updateContext": null }, - "start": 156567, - "end": 156568, + "start": 157081, + "end": 157082, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 45 }, "end": { - "line": 3885, + "line": 3893, "column": 46 } } @@ -536541,15 +539803,15 @@ "binop": null }, "value": "snapPickCoordinateScale", - "start": 156568, - "end": 156591, + "start": 157082, + "end": 157105, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 46 }, "end": { - "line": 3885, + "line": 3893, "column": 69 } } @@ -536567,15 +539829,15 @@ "binop": null, "updateContext": null }, - "start": 156591, - "end": 156592, + "start": 157105, + "end": 157106, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 69 }, "end": { - "line": 3885, + "line": 3893, "column": 70 } } @@ -536593,15 +539855,15 @@ "binop": null }, "value": "slice", - "start": 156592, - "end": 156597, + "start": 157106, + "end": 157111, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 70 }, "end": { - "line": 3885, + "line": 3893, "column": 75 } } @@ -536618,15 +539880,15 @@ "postfix": false, "binop": null }, - "start": 156597, - "end": 156598, + "start": 157111, + "end": 157112, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 75 }, "end": { - "line": 3885, + "line": 3893, "column": 76 } } @@ -536643,15 +539905,15 @@ "postfix": false, "binop": null }, - "start": 156598, - "end": 156599, + "start": 157112, + "end": 157113, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 76 }, "end": { - "line": 3885, + "line": 3893, "column": 77 } } @@ -536669,15 +539931,15 @@ "binop": null, "updateContext": null }, - "start": 156599, - "end": 156600, + "start": 157113, + "end": 157114, "loc": { "start": { - "line": 3885, + "line": 3893, "column": 77 }, "end": { - "line": 3885, + "line": 3893, "column": 78 } } @@ -536694,15 +539956,15 @@ "postfix": false, "binop": null }, - "start": 156617, - "end": 156618, + "start": 157131, + "end": 157132, "loc": { "start": { - "line": 3886, + "line": 3894, "column": 16 }, "end": { - "line": 3886, + "line": 3894, "column": 17 } } @@ -536720,15 +539982,15 @@ "binop": null, "updateContext": null }, - "start": 156618, - "end": 156619, + "start": 157132, + "end": 157133, "loc": { "start": { - "line": 3886, + "line": 3894, "column": 17 }, "end": { - "line": 3886, + "line": 3894, "column": 18 } } @@ -536745,15 +540007,15 @@ "postfix": false, "binop": null }, - "start": 156632, - "end": 156633, + "start": 157146, + "end": 157147, "loc": { "start": { - "line": 3887, + "line": 3895, "column": 12 }, "end": { - "line": 3887, + "line": 3895, "column": 13 } } @@ -536770,15 +540032,15 @@ "postfix": false, "binop": null }, - "start": 156642, - "end": 156643, + "start": 157156, + "end": 157157, "loc": { "start": { - "line": 3888, + "line": 3896, "column": 8 }, "end": { - "line": 3888, + "line": 3896, "column": 9 } } @@ -536795,15 +540057,15 @@ "postfix": false, "binop": null }, - "start": 156648, - "end": 156649, + "start": 157162, + "end": 157163, "loc": { "start": { - "line": 3889, + "line": 3897, "column": 4 }, "end": { - "line": 3889, + "line": 3897, "column": 5 } } @@ -536811,15 +540073,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 156655, - "end": 156682, + "start": 157169, + "end": 157196, "loc": { "start": { - "line": 3891, + "line": 3899, "column": 4 }, "end": { - "line": 3893, + "line": 3901, "column": 7 } } @@ -536837,15 +540099,15 @@ "binop": null }, "value": "drawSnap", - "start": 156687, - "end": 156695, + "start": 157201, + "end": 157209, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 4 }, "end": { - "line": 3894, + "line": 3902, "column": 12 } } @@ -536862,15 +540124,15 @@ "postfix": false, "binop": null }, - "start": 156695, - "end": 156696, + "start": 157209, + "end": 157210, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 12 }, "end": { - "line": 3894, + "line": 3902, "column": 13 } } @@ -536888,15 +540150,15 @@ "binop": null }, "value": "frameCtx", - "start": 156696, - "end": 156704, + "start": 157210, + "end": 157218, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 13 }, "end": { - "line": 3894, + "line": 3902, "column": 21 } } @@ -536913,15 +540175,15 @@ "postfix": false, "binop": null }, - "start": 156704, - "end": 156705, + "start": 157218, + "end": 157219, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 21 }, "end": { - "line": 3894, + "line": 3902, "column": 22 } } @@ -536938,15 +540200,15 @@ "postfix": false, "binop": null }, - "start": 156706, - "end": 156707, + "start": 157220, + "end": 157221, "loc": { "start": { - "line": 3894, + "line": 3902, "column": 23 }, "end": { - "line": 3894, + "line": 3902, "column": 24 } } @@ -536966,15 +540228,15 @@ "updateContext": null }, "value": "if", - "start": 156716, - "end": 156718, + "start": 157230, + "end": 157232, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 8 }, "end": { - "line": 3895, + "line": 3903, "column": 10 } } @@ -536991,15 +540253,15 @@ "postfix": false, "binop": null }, - "start": 156719, - "end": 156720, + "start": 157233, + "end": 157234, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 11 }, "end": { - "line": 3895, + "line": 3903, "column": 12 } } @@ -537019,15 +540281,15 @@ "updateContext": null }, "value": "this", - "start": 156720, - "end": 156724, + "start": 157234, + "end": 157238, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 12 }, "end": { - "line": 3895, + "line": 3903, "column": 16 } } @@ -537045,15 +540307,15 @@ "binop": null, "updateContext": null }, - "start": 156724, - "end": 156725, + "start": 157238, + "end": 157239, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 16 }, "end": { - "line": 3895, + "line": 3903, "column": 17 } } @@ -537071,15 +540333,15 @@ "binop": null }, "value": "numVisibleLayerPortions", - "start": 156725, - "end": 156748, + "start": 157239, + "end": 157262, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 17 }, "end": { - "line": 3895, + "line": 3903, "column": 40 } } @@ -537098,15 +540360,15 @@ "updateContext": null }, "value": "===", - "start": 156749, - "end": 156752, + "start": 157263, + "end": 157266, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 41 }, "end": { - "line": 3895, + "line": 3903, "column": 44 } } @@ -537125,15 +540387,15 @@ "updateContext": null }, "value": 0, - "start": 156753, - "end": 156754, + "start": 157267, + "end": 157268, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 45 }, "end": { - "line": 3895, + "line": 3903, "column": 46 } } @@ -537150,15 +540412,15 @@ "postfix": false, "binop": null }, - "start": 156754, - "end": 156755, + "start": 157268, + "end": 157269, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 46 }, "end": { - "line": 3895, + "line": 3903, "column": 47 } } @@ -537175,15 +540437,15 @@ "postfix": false, "binop": null }, - "start": 156756, - "end": 156757, + "start": 157270, + "end": 157271, "loc": { "start": { - "line": 3895, + "line": 3903, "column": 48 }, "end": { - "line": 3895, + "line": 3903, "column": 49 } } @@ -537203,15 +540465,15 @@ "updateContext": null }, "value": "return", - "start": 156770, - "end": 156776, + "start": 157284, + "end": 157290, "loc": { "start": { - "line": 3896, + "line": 3904, "column": 12 }, "end": { - "line": 3896, + "line": 3904, "column": 18 } } @@ -537229,15 +540491,15 @@ "binop": null, "updateContext": null }, - "start": 156776, - "end": 156777, + "start": 157290, + "end": 157291, "loc": { "start": { - "line": 3896, + "line": 3904, "column": 18 }, "end": { - "line": 3896, + "line": 3904, "column": 19 } } @@ -537254,15 +540516,15 @@ "postfix": false, "binop": null }, - "start": 156786, - "end": 156787, + "start": 157300, + "end": 157301, "loc": { "start": { - "line": 3897, + "line": 3905, "column": 8 }, "end": { - "line": 3897, + "line": 3905, "column": 9 } } @@ -537282,15 +540544,15 @@ "updateContext": null }, "value": "const", - "start": 156796, - "end": 156801, + "start": 157310, + "end": 157315, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 8 }, "end": { - "line": 3898, + "line": 3906, "column": 13 } } @@ -537308,15 +540570,15 @@ "binop": null }, "value": "renderFlags", - "start": 156802, - "end": 156813, + "start": 157316, + "end": 157327, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 14 }, "end": { - "line": 3898, + "line": 3906, "column": 25 } } @@ -537335,15 +540597,15 @@ "updateContext": null }, "value": "=", - "start": 156814, - "end": 156815, + "start": 157328, + "end": 157329, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 26 }, "end": { - "line": 3898, + "line": 3906, "column": 27 } } @@ -537363,15 +540625,15 @@ "updateContext": null }, "value": "this", - "start": 156816, - "end": 156820, + "start": 157330, + "end": 157334, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 28 }, "end": { - "line": 3898, + "line": 3906, "column": 32 } } @@ -537389,15 +540651,15 @@ "binop": null, "updateContext": null }, - "start": 156820, - "end": 156821, + "start": 157334, + "end": 157335, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 32 }, "end": { - "line": 3898, + "line": 3906, "column": 33 } } @@ -537415,15 +540677,15 @@ "binop": null }, "value": "renderFlags", - "start": 156821, - "end": 156832, + "start": 157335, + "end": 157346, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 33 }, "end": { - "line": 3898, + "line": 3906, "column": 44 } } @@ -537441,15 +540703,15 @@ "binop": null, "updateContext": null }, - "start": 156832, - "end": 156833, + "start": 157346, + "end": 157347, "loc": { "start": { - "line": 3898, + "line": 3906, "column": 44 }, "end": { - "line": 3898, + "line": 3906, "column": 45 } } @@ -537469,15 +540731,15 @@ "updateContext": null }, "value": "for", - "start": 156842, - "end": 156845, + "start": 157356, + "end": 157359, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 8 }, "end": { - "line": 3899, + "line": 3907, "column": 11 } } @@ -537494,15 +540756,15 @@ "postfix": false, "binop": null }, - "start": 156846, - "end": 156847, + "start": 157360, + "end": 157361, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 12 }, "end": { - "line": 3899, + "line": 3907, "column": 13 } } @@ -537522,15 +540784,15 @@ "updateContext": null }, "value": "let", - "start": 156847, - "end": 156850, + "start": 157361, + "end": 157364, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 13 }, "end": { - "line": 3899, + "line": 3907, "column": 16 } } @@ -537548,15 +540810,15 @@ "binop": null }, "value": "i", - "start": 156851, - "end": 156852, + "start": 157365, + "end": 157366, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 17 }, "end": { - "line": 3899, + "line": 3907, "column": 18 } } @@ -537575,15 +540837,15 @@ "updateContext": null }, "value": "=", - "start": 156853, - "end": 156854, + "start": 157367, + "end": 157368, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 19 }, "end": { - "line": 3899, + "line": 3907, "column": 20 } } @@ -537602,15 +540864,15 @@ "updateContext": null }, "value": 0, - "start": 156855, - "end": 156856, + "start": 157369, + "end": 157370, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 21 }, "end": { - "line": 3899, + "line": 3907, "column": 22 } } @@ -537628,15 +540890,15 @@ "binop": null, "updateContext": null }, - "start": 156856, - "end": 156857, + "start": 157370, + "end": 157371, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 22 }, "end": { - "line": 3899, + "line": 3907, "column": 23 } } @@ -537654,15 +540916,15 @@ "binop": null }, "value": "len", - "start": 156858, - "end": 156861, + "start": 157372, + "end": 157375, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 24 }, "end": { - "line": 3899, + "line": 3907, "column": 27 } } @@ -537681,15 +540943,15 @@ "updateContext": null }, "value": "=", - "start": 156862, - "end": 156863, + "start": 157376, + "end": 157377, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 28 }, "end": { - "line": 3899, + "line": 3907, "column": 29 } } @@ -537707,15 +540969,15 @@ "binop": null }, "value": "renderFlags", - "start": 156864, - "end": 156875, + "start": 157378, + "end": 157389, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 30 }, "end": { - "line": 3899, + "line": 3907, "column": 41 } } @@ -537733,15 +540995,15 @@ "binop": null, "updateContext": null }, - "start": 156875, - "end": 156876, + "start": 157389, + "end": 157390, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 41 }, "end": { - "line": 3899, + "line": 3907, "column": 42 } } @@ -537759,15 +541021,15 @@ "binop": null }, "value": "visibleLayers", - "start": 156876, - "end": 156889, + "start": 157390, + "end": 157403, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 42 }, "end": { - "line": 3899, + "line": 3907, "column": 55 } } @@ -537785,15 +541047,15 @@ "binop": null, "updateContext": null }, - "start": 156889, - "end": 156890, + "start": 157403, + "end": 157404, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 55 }, "end": { - "line": 3899, + "line": 3907, "column": 56 } } @@ -537811,15 +541073,15 @@ "binop": null }, "value": "length", - "start": 156890, - "end": 156896, + "start": 157404, + "end": 157410, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 56 }, "end": { - "line": 3899, + "line": 3907, "column": 62 } } @@ -537837,15 +541099,15 @@ "binop": null, "updateContext": null }, - "start": 156896, - "end": 156897, + "start": 157410, + "end": 157411, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 62 }, "end": { - "line": 3899, + "line": 3907, "column": 63 } } @@ -537863,15 +541125,15 @@ "binop": null }, "value": "i", - "start": 156898, - "end": 156899, + "start": 157412, + "end": 157413, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 64 }, "end": { - "line": 3899, + "line": 3907, "column": 65 } } @@ -537890,15 +541152,15 @@ "updateContext": null }, "value": "<", - "start": 156900, - "end": 156901, + "start": 157414, + "end": 157415, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 66 }, "end": { - "line": 3899, + "line": 3907, "column": 67 } } @@ -537916,15 +541178,15 @@ "binop": null }, "value": "len", - "start": 156902, - "end": 156905, + "start": 157416, + "end": 157419, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 68 }, "end": { - "line": 3899, + "line": 3907, "column": 71 } } @@ -537942,15 +541204,15 @@ "binop": null, "updateContext": null }, - "start": 156905, - "end": 156906, + "start": 157419, + "end": 157420, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 71 }, "end": { - "line": 3899, + "line": 3907, "column": 72 } } @@ -537968,15 +541230,15 @@ "binop": null }, "value": "i", - "start": 156907, - "end": 156908, + "start": 157421, + "end": 157422, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 73 }, "end": { - "line": 3899, + "line": 3907, "column": 74 } } @@ -537994,15 +541256,15 @@ "binop": null }, "value": "++", - "start": 156908, - "end": 156910, + "start": 157422, + "end": 157424, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 74 }, "end": { - "line": 3899, + "line": 3907, "column": 76 } } @@ -538019,15 +541281,15 @@ "postfix": false, "binop": null }, - "start": 156910, - "end": 156911, + "start": 157424, + "end": 157425, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 76 }, "end": { - "line": 3899, + "line": 3907, "column": 77 } } @@ -538044,15 +541306,15 @@ "postfix": false, "binop": null }, - "start": 156912, - "end": 156913, + "start": 157426, + "end": 157427, "loc": { "start": { - "line": 3899, + "line": 3907, "column": 78 }, "end": { - "line": 3899, + "line": 3907, "column": 79 } } @@ -538072,15 +541334,15 @@ "updateContext": null }, "value": "const", - "start": 156926, - "end": 156931, + "start": 157440, + "end": 157445, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 12 }, "end": { - "line": 3900, + "line": 3908, "column": 17 } } @@ -538098,15 +541360,15 @@ "binop": null }, "value": "layerIndex", - "start": 156932, - "end": 156942, + "start": 157446, + "end": 157456, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 18 }, "end": { - "line": 3900, + "line": 3908, "column": 28 } } @@ -538125,15 +541387,15 @@ "updateContext": null }, "value": "=", - "start": 156943, - "end": 156944, + "start": 157457, + "end": 157458, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 29 }, "end": { - "line": 3900, + "line": 3908, "column": 30 } } @@ -538151,15 +541413,15 @@ "binop": null }, "value": "renderFlags", - "start": 156945, - "end": 156956, + "start": 157459, + "end": 157470, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 31 }, "end": { - "line": 3900, + "line": 3908, "column": 42 } } @@ -538177,15 +541439,15 @@ "binop": null, "updateContext": null }, - "start": 156956, - "end": 156957, + "start": 157470, + "end": 157471, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 42 }, "end": { - "line": 3900, + "line": 3908, "column": 43 } } @@ -538203,15 +541465,15 @@ "binop": null }, "value": "visibleLayers", - "start": 156957, - "end": 156970, + "start": 157471, + "end": 157484, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 43 }, "end": { - "line": 3900, + "line": 3908, "column": 56 } } @@ -538229,15 +541491,15 @@ "binop": null, "updateContext": null }, - "start": 156970, - "end": 156971, + "start": 157484, + "end": 157485, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 56 }, "end": { - "line": 3900, + "line": 3908, "column": 57 } } @@ -538255,15 +541517,15 @@ "binop": null }, "value": "i", - "start": 156971, - "end": 156972, + "start": 157485, + "end": 157486, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 57 }, "end": { - "line": 3900, + "line": 3908, "column": 58 } } @@ -538281,15 +541543,15 @@ "binop": null, "updateContext": null }, - "start": 156972, - "end": 156973, + "start": 157486, + "end": 157487, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 58 }, "end": { - "line": 3900, + "line": 3908, "column": 59 } } @@ -538307,15 +541569,15 @@ "binop": null, "updateContext": null }, - "start": 156973, - "end": 156974, + "start": 157487, + "end": 157488, "loc": { "start": { - "line": 3900, + "line": 3908, "column": 59 }, "end": { - "line": 3900, + "line": 3908, "column": 60 } } @@ -538335,15 +541597,15 @@ "updateContext": null }, "value": "const", - "start": 156987, - "end": 156992, + "start": 157501, + "end": 157506, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 12 }, "end": { - "line": 3901, + "line": 3909, "column": 17 } } @@ -538361,15 +541623,15 @@ "binop": null }, "value": "layer", - "start": 156993, - "end": 156998, + "start": 157507, + "end": 157512, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 18 }, "end": { - "line": 3901, + "line": 3909, "column": 23 } } @@ -538388,15 +541650,15 @@ "updateContext": null }, "value": "=", - "start": 156999, - "end": 157000, + "start": 157513, + "end": 157514, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 24 }, "end": { - "line": 3901, + "line": 3909, "column": 25 } } @@ -538416,15 +541678,15 @@ "updateContext": null }, "value": "this", - "start": 157001, - "end": 157005, + "start": 157515, + "end": 157519, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 26 }, "end": { - "line": 3901, + "line": 3909, "column": 30 } } @@ -538442,15 +541704,15 @@ "binop": null, "updateContext": null }, - "start": 157005, - "end": 157006, + "start": 157519, + "end": 157520, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 30 }, "end": { - "line": 3901, + "line": 3909, "column": 31 } } @@ -538468,15 +541730,15 @@ "binop": null }, "value": "layerList", - "start": 157006, - "end": 157015, + "start": 157520, + "end": 157529, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 31 }, "end": { - "line": 3901, + "line": 3909, "column": 40 } } @@ -538494,15 +541756,15 @@ "binop": null, "updateContext": null }, - "start": 157015, - "end": 157016, + "start": 157529, + "end": 157530, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 40 }, "end": { - "line": 3901, + "line": 3909, "column": 41 } } @@ -538520,15 +541782,15 @@ "binop": null }, "value": "layerIndex", - "start": 157016, - "end": 157026, + "start": 157530, + "end": 157540, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 41 }, "end": { - "line": 3901, + "line": 3909, "column": 51 } } @@ -538546,15 +541808,15 @@ "binop": null, "updateContext": null }, - "start": 157026, - "end": 157027, + "start": 157540, + "end": 157541, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 51 }, "end": { - "line": 3901, + "line": 3909, "column": 52 } } @@ -538572,15 +541834,15 @@ "binop": null, "updateContext": null }, - "start": 157027, - "end": 157028, + "start": 157541, + "end": 157542, "loc": { "start": { - "line": 3901, + "line": 3909, "column": 52 }, "end": { - "line": 3901, + "line": 3909, "column": 53 } } @@ -538600,15 +541862,15 @@ "updateContext": null }, "value": "if", - "start": 157041, - "end": 157043, + "start": 157555, + "end": 157557, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 12 }, "end": { - "line": 3902, + "line": 3910, "column": 14 } } @@ -538625,15 +541887,15 @@ "postfix": false, "binop": null }, - "start": 157044, - "end": 157045, + "start": 157558, + "end": 157559, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 15 }, "end": { - "line": 3902, + "line": 3910, "column": 16 } } @@ -538651,15 +541913,15 @@ "binop": null }, "value": "layer", - "start": 157045, - "end": 157050, + "start": 157559, + "end": 157564, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 16 }, "end": { - "line": 3902, + "line": 3910, "column": 21 } } @@ -538677,15 +541939,15 @@ "binop": null, "updateContext": null }, - "start": 157050, - "end": 157051, + "start": 157564, + "end": 157565, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 21 }, "end": { - "line": 3902, + "line": 3910, "column": 22 } } @@ -538703,15 +541965,15 @@ "binop": null }, "value": "drawSnap", - "start": 157051, - "end": 157059, + "start": 157565, + "end": 157573, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 22 }, "end": { - "line": 3902, + "line": 3910, "column": 30 } } @@ -538728,15 +541990,15 @@ "postfix": false, "binop": null }, - "start": 157059, - "end": 157060, + "start": 157573, + "end": 157574, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 30 }, "end": { - "line": 3902, + "line": 3910, "column": 31 } } @@ -538753,15 +542015,15 @@ "postfix": false, "binop": null }, - "start": 157061, - "end": 157062, + "start": 157575, + "end": 157576, "loc": { "start": { - "line": 3902, + "line": 3910, "column": 32 }, "end": { - "line": 3902, + "line": 3910, "column": 33 } } @@ -538779,15 +542041,15 @@ "binop": null }, "value": "frameCtx", - "start": 157079, - "end": 157087, + "start": 157593, + "end": 157601, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 16 }, "end": { - "line": 3903, + "line": 3911, "column": 24 } } @@ -538805,15 +542067,15 @@ "binop": null, "updateContext": null }, - "start": 157087, - "end": 157088, + "start": 157601, + "end": 157602, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 24 }, "end": { - "line": 3903, + "line": 3911, "column": 25 } } @@ -538831,15 +542093,15 @@ "binop": null }, "value": "snapPickOrigin", - "start": 157088, - "end": 157102, + "start": 157602, + "end": 157616, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 25 }, "end": { - "line": 3903, + "line": 3911, "column": 39 } } @@ -538858,15 +542120,15 @@ "updateContext": null }, "value": "=", - "start": 157103, - "end": 157104, + "start": 157617, + "end": 157618, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 40 }, "end": { - "line": 3903, + "line": 3911, "column": 41 } } @@ -538884,15 +542146,15 @@ "binop": null, "updateContext": null }, - "start": 157105, - "end": 157106, + "start": 157619, + "end": 157620, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 42 }, "end": { - "line": 3903, + "line": 3911, "column": 43 } } @@ -538911,15 +542173,15 @@ "updateContext": null }, "value": 0, - "start": 157106, - "end": 157107, + "start": 157620, + "end": 157621, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 43 }, "end": { - "line": 3903, + "line": 3911, "column": 44 } } @@ -538937,15 +542199,15 @@ "binop": null, "updateContext": null }, - "start": 157107, - "end": 157108, + "start": 157621, + "end": 157622, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 44 }, "end": { - "line": 3903, + "line": 3911, "column": 45 } } @@ -538964,15 +542226,15 @@ "updateContext": null }, "value": 0, - "start": 157109, - "end": 157110, + "start": 157623, + "end": 157624, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 46 }, "end": { - "line": 3903, + "line": 3911, "column": 47 } } @@ -538990,15 +542252,15 @@ "binop": null, "updateContext": null }, - "start": 157110, - "end": 157111, + "start": 157624, + "end": 157625, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 47 }, "end": { - "line": 3903, + "line": 3911, "column": 48 } } @@ -539017,15 +542279,15 @@ "updateContext": null }, "value": 0, - "start": 157112, - "end": 157113, + "start": 157626, + "end": 157627, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 49 }, "end": { - "line": 3903, + "line": 3911, "column": 50 } } @@ -539043,15 +542305,15 @@ "binop": null, "updateContext": null }, - "start": 157113, - "end": 157114, + "start": 157627, + "end": 157628, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 50 }, "end": { - "line": 3903, + "line": 3911, "column": 51 } } @@ -539069,15 +542331,15 @@ "binop": null, "updateContext": null }, - "start": 157114, - "end": 157115, + "start": 157628, + "end": 157629, "loc": { "start": { - "line": 3903, + "line": 3911, "column": 51 }, "end": { - "line": 3903, + "line": 3911, "column": 52 } } @@ -539095,15 +542357,15 @@ "binop": null }, "value": "frameCtx", - "start": 157132, - "end": 157140, + "start": 157646, + "end": 157654, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 16 }, "end": { - "line": 3904, + "line": 3912, "column": 24 } } @@ -539121,15 +542383,15 @@ "binop": null, "updateContext": null }, - "start": 157140, - "end": 157141, + "start": 157654, + "end": 157655, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 24 }, "end": { - "line": 3904, + "line": 3912, "column": 25 } } @@ -539147,15 +542409,15 @@ "binop": null }, "value": "snapPickCoordinateScale", - "start": 157141, - "end": 157164, + "start": 157655, + "end": 157678, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 25 }, "end": { - "line": 3904, + "line": 3912, "column": 48 } } @@ -539174,15 +542436,15 @@ "updateContext": null }, "value": "=", - "start": 157165, - "end": 157166, + "start": 157679, + "end": 157680, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 49 }, "end": { - "line": 3904, + "line": 3912, "column": 50 } } @@ -539200,15 +542462,15 @@ "binop": null, "updateContext": null }, - "start": 157167, - "end": 157168, + "start": 157681, + "end": 157682, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 51 }, "end": { - "line": 3904, + "line": 3912, "column": 52 } } @@ -539227,15 +542489,15 @@ "updateContext": null }, "value": 1, - "start": 157168, - "end": 157169, + "start": 157682, + "end": 157683, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 52 }, "end": { - "line": 3904, + "line": 3912, "column": 53 } } @@ -539253,15 +542515,15 @@ "binop": null, "updateContext": null }, - "start": 157169, - "end": 157170, + "start": 157683, + "end": 157684, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 53 }, "end": { - "line": 3904, + "line": 3912, "column": 54 } } @@ -539280,15 +542542,15 @@ "updateContext": null }, "value": 1, - "start": 157171, - "end": 157172, + "start": 157685, + "end": 157686, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 55 }, "end": { - "line": 3904, + "line": 3912, "column": 56 } } @@ -539306,15 +542568,15 @@ "binop": null, "updateContext": null }, - "start": 157172, - "end": 157173, + "start": 157686, + "end": 157687, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 56 }, "end": { - "line": 3904, + "line": 3912, "column": 57 } } @@ -539333,15 +542595,15 @@ "updateContext": null }, "value": 1, - "start": 157174, - "end": 157175, + "start": 157688, + "end": 157689, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 58 }, "end": { - "line": 3904, + "line": 3912, "column": 59 } } @@ -539359,15 +542621,15 @@ "binop": null, "updateContext": null }, - "start": 157175, - "end": 157176, + "start": 157689, + "end": 157690, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 59 }, "end": { - "line": 3904, + "line": 3912, "column": 60 } } @@ -539385,15 +542647,15 @@ "binop": null, "updateContext": null }, - "start": 157176, - "end": 157177, + "start": 157690, + "end": 157691, "loc": { "start": { - "line": 3904, + "line": 3912, "column": 60 }, "end": { - "line": 3904, + "line": 3912, "column": 61 } } @@ -539411,15 +542673,15 @@ "binop": null }, "value": "frameCtx", - "start": 157194, - "end": 157202, + "start": 157708, + "end": 157716, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 16 }, "end": { - "line": 3905, + "line": 3913, "column": 24 } } @@ -539437,15 +542699,15 @@ "binop": null, "updateContext": null }, - "start": 157202, - "end": 157203, + "start": 157716, + "end": 157717, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 24 }, "end": { - "line": 3905, + "line": 3913, "column": 25 } } @@ -539463,15 +542725,15 @@ "binop": null }, "value": "snapPickLayerNumber", - "start": 157203, - "end": 157222, + "start": 157717, + "end": 157736, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 25 }, "end": { - "line": 3905, + "line": 3913, "column": 44 } } @@ -539489,15 +542751,15 @@ "binop": null }, "value": "++", - "start": 157222, - "end": 157224, + "start": 157736, + "end": 157738, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 44 }, "end": { - "line": 3905, + "line": 3913, "column": 46 } } @@ -539515,15 +542777,15 @@ "binop": null, "updateContext": null }, - "start": 157224, - "end": 157225, + "start": 157738, + "end": 157739, "loc": { "start": { - "line": 3905, + "line": 3913, "column": 46 }, "end": { - "line": 3905, + "line": 3913, "column": 47 } } @@ -539541,15 +542803,15 @@ "binop": null }, "value": "layer", - "start": 157242, - "end": 157247, + "start": 157756, + "end": 157761, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 16 }, "end": { - "line": 3906, + "line": 3914, "column": 21 } } @@ -539567,15 +542829,15 @@ "binop": null, "updateContext": null }, - "start": 157247, - "end": 157248, + "start": 157761, + "end": 157762, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 21 }, "end": { - "line": 3906, + "line": 3914, "column": 22 } } @@ -539593,15 +542855,15 @@ "binop": null }, "value": "drawSnap", - "start": 157248, - "end": 157256, + "start": 157762, + "end": 157770, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 22 }, "end": { - "line": 3906, + "line": 3914, "column": 30 } } @@ -539618,15 +542880,15 @@ "postfix": false, "binop": null }, - "start": 157256, - "end": 157257, + "start": 157770, + "end": 157771, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 30 }, "end": { - "line": 3906, + "line": 3914, "column": 31 } } @@ -539644,15 +542906,15 @@ "binop": null }, "value": "renderFlags", - "start": 157257, - "end": 157268, + "start": 157771, + "end": 157782, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 31 }, "end": { - "line": 3906, + "line": 3914, "column": 42 } } @@ -539670,15 +542932,15 @@ "binop": null, "updateContext": null }, - "start": 157268, - "end": 157269, + "start": 157782, + "end": 157783, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 42 }, "end": { - "line": 3906, + "line": 3914, "column": 43 } } @@ -539696,15 +542958,15 @@ "binop": null }, "value": "frameCtx", - "start": 157270, - "end": 157278, + "start": 157784, + "end": 157792, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 44 }, "end": { - "line": 3906, + "line": 3914, "column": 52 } } @@ -539721,15 +542983,15 @@ "postfix": false, "binop": null }, - "start": 157278, - "end": 157279, + "start": 157792, + "end": 157793, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 52 }, "end": { - "line": 3906, + "line": 3914, "column": 53 } } @@ -539747,15 +543009,15 @@ "binop": null, "updateContext": null }, - "start": 157279, - "end": 157280, + "start": 157793, + "end": 157794, "loc": { "start": { - "line": 3906, + "line": 3914, "column": 53 }, "end": { - "line": 3906, + "line": 3914, "column": 54 } } @@ -539773,15 +543035,15 @@ "binop": null }, "value": "frameCtx", - "start": 157297, - "end": 157305, + "start": 157811, + "end": 157819, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 16 }, "end": { - "line": 3907, + "line": 3915, "column": 24 } } @@ -539799,15 +543061,15 @@ "binop": null, "updateContext": null }, - "start": 157305, - "end": 157306, + "start": 157819, + "end": 157820, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 24 }, "end": { - "line": 3907, + "line": 3915, "column": 25 } } @@ -539825,15 +543087,15 @@ "binop": null }, "value": "snapPickLayerParams", - "start": 157306, - "end": 157325, + "start": 157820, + "end": 157839, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 25 }, "end": { - "line": 3907, + "line": 3915, "column": 44 } } @@ -539851,15 +543113,15 @@ "binop": null, "updateContext": null }, - "start": 157325, - "end": 157326, + "start": 157839, + "end": 157840, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 44 }, "end": { - "line": 3907, + "line": 3915, "column": 45 } } @@ -539877,15 +543139,15 @@ "binop": null }, "value": "frameCtx", - "start": 157326, - "end": 157334, + "start": 157840, + "end": 157848, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 45 }, "end": { - "line": 3907, + "line": 3915, "column": 53 } } @@ -539903,15 +543165,15 @@ "binop": null, "updateContext": null }, - "start": 157334, - "end": 157335, + "start": 157848, + "end": 157849, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 53 }, "end": { - "line": 3907, + "line": 3915, "column": 54 } } @@ -539929,15 +543191,15 @@ "binop": null }, "value": "snapPickLayerNumber", - "start": 157335, - "end": 157354, + "start": 157849, + "end": 157868, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 54 }, "end": { - "line": 3907, + "line": 3915, "column": 73 } } @@ -539955,15 +543217,15 @@ "binop": null, "updateContext": null }, - "start": 157354, - "end": 157355, + "start": 157868, + "end": 157869, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 73 }, "end": { - "line": 3907, + "line": 3915, "column": 74 } } @@ -539982,15 +543244,15 @@ "updateContext": null }, "value": "=", - "start": 157356, - "end": 157357, + "start": 157870, + "end": 157871, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 75 }, "end": { - "line": 3907, + "line": 3915, "column": 76 } } @@ -540007,15 +543269,15 @@ "postfix": false, "binop": null }, - "start": 157358, - "end": 157359, + "start": 157872, + "end": 157873, "loc": { "start": { - "line": 3907, + "line": 3915, "column": 77 }, "end": { - "line": 3907, + "line": 3915, "column": 78 } } @@ -540033,15 +543295,15 @@ "binop": null }, "value": "origin", - "start": 157380, - "end": 157386, + "start": 157894, + "end": 157900, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 20 }, "end": { - "line": 3908, + "line": 3916, "column": 26 } } @@ -540059,15 +543321,15 @@ "binop": null, "updateContext": null }, - "start": 157386, - "end": 157387, + "start": 157900, + "end": 157901, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 26 }, "end": { - "line": 3908, + "line": 3916, "column": 27 } } @@ -540085,15 +543347,15 @@ "binop": null }, "value": "frameCtx", - "start": 157388, - "end": 157396, + "start": 157902, + "end": 157910, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 28 }, "end": { - "line": 3908, + "line": 3916, "column": 36 } } @@ -540111,15 +543373,15 @@ "binop": null, "updateContext": null }, - "start": 157396, - "end": 157397, + "start": 157910, + "end": 157911, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 36 }, "end": { - "line": 3908, + "line": 3916, "column": 37 } } @@ -540137,15 +543399,15 @@ "binop": null }, "value": "snapPickOrigin", - "start": 157397, - "end": 157411, + "start": 157911, + "end": 157925, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 37 }, "end": { - "line": 3908, + "line": 3916, "column": 51 } } @@ -540163,15 +543425,15 @@ "binop": null, "updateContext": null }, - "start": 157411, - "end": 157412, + "start": 157925, + "end": 157926, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 51 }, "end": { - "line": 3908, + "line": 3916, "column": 52 } } @@ -540189,15 +543451,15 @@ "binop": null }, "value": "slice", - "start": 157412, - "end": 157417, + "start": 157926, + "end": 157931, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 52 }, "end": { - "line": 3908, + "line": 3916, "column": 57 } } @@ -540214,15 +543476,15 @@ "postfix": false, "binop": null }, - "start": 157417, - "end": 157418, + "start": 157931, + "end": 157932, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 57 }, "end": { - "line": 3908, + "line": 3916, "column": 58 } } @@ -540239,15 +543501,15 @@ "postfix": false, "binop": null }, - "start": 157418, - "end": 157419, + "start": 157932, + "end": 157933, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 58 }, "end": { - "line": 3908, + "line": 3916, "column": 59 } } @@ -540265,15 +543527,15 @@ "binop": null, "updateContext": null }, - "start": 157419, - "end": 157420, + "start": 157933, + "end": 157934, "loc": { "start": { - "line": 3908, + "line": 3916, "column": 59 }, "end": { - "line": 3908, + "line": 3916, "column": 60 } } @@ -540291,15 +543553,15 @@ "binop": null }, "value": "coordinateScale", - "start": 157441, - "end": 157456, + "start": 157955, + "end": 157970, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 20 }, "end": { - "line": 3909, + "line": 3917, "column": 35 } } @@ -540317,15 +543579,15 @@ "binop": null, "updateContext": null }, - "start": 157456, - "end": 157457, + "start": 157970, + "end": 157971, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 35 }, "end": { - "line": 3909, + "line": 3917, "column": 36 } } @@ -540343,15 +543605,15 @@ "binop": null }, "value": "frameCtx", - "start": 157458, - "end": 157466, + "start": 157972, + "end": 157980, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 37 }, "end": { - "line": 3909, + "line": 3917, "column": 45 } } @@ -540369,15 +543631,15 @@ "binop": null, "updateContext": null }, - "start": 157466, - "end": 157467, + "start": 157980, + "end": 157981, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 45 }, "end": { - "line": 3909, + "line": 3917, "column": 46 } } @@ -540395,15 +543657,15 @@ "binop": null }, "value": "snapPickCoordinateScale", - "start": 157467, - "end": 157490, + "start": 157981, + "end": 158004, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 46 }, "end": { - "line": 3909, + "line": 3917, "column": 69 } } @@ -540421,15 +543683,15 @@ "binop": null, "updateContext": null }, - "start": 157490, - "end": 157491, + "start": 158004, + "end": 158005, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 69 }, "end": { - "line": 3909, + "line": 3917, "column": 70 } } @@ -540447,15 +543709,15 @@ "binop": null }, "value": "slice", - "start": 157491, - "end": 157496, + "start": 158005, + "end": 158010, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 70 }, "end": { - "line": 3909, + "line": 3917, "column": 75 } } @@ -540472,15 +543734,15 @@ "postfix": false, "binop": null }, - "start": 157496, - "end": 157497, + "start": 158010, + "end": 158011, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 75 }, "end": { - "line": 3909, + "line": 3917, "column": 76 } } @@ -540497,15 +543759,15 @@ "postfix": false, "binop": null }, - "start": 157497, - "end": 157498, + "start": 158011, + "end": 158012, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 76 }, "end": { - "line": 3909, + "line": 3917, "column": 77 } } @@ -540523,15 +543785,15 @@ "binop": null, "updateContext": null }, - "start": 157498, - "end": 157499, + "start": 158012, + "end": 158013, "loc": { "start": { - "line": 3909, + "line": 3917, "column": 77 }, "end": { - "line": 3909, + "line": 3917, "column": 78 } } @@ -540548,15 +543810,15 @@ "postfix": false, "binop": null }, - "start": 157516, - "end": 157517, + "start": 158030, + "end": 158031, "loc": { "start": { - "line": 3910, + "line": 3918, "column": 16 }, "end": { - "line": 3910, + "line": 3918, "column": 17 } } @@ -540574,15 +543836,15 @@ "binop": null, "updateContext": null }, - "start": 157517, - "end": 157518, + "start": 158031, + "end": 158032, "loc": { "start": { - "line": 3910, + "line": 3918, "column": 17 }, "end": { - "line": 3910, + "line": 3918, "column": 18 } } @@ -540599,15 +543861,15 @@ "postfix": false, "binop": null }, - "start": 157531, - "end": 157532, + "start": 158045, + "end": 158046, "loc": { "start": { - "line": 3911, + "line": 3919, "column": 12 }, "end": { - "line": 3911, + "line": 3919, "column": 13 } } @@ -540624,15 +543886,15 @@ "postfix": false, "binop": null }, - "start": 157541, - "end": 157542, + "start": 158055, + "end": 158056, "loc": { "start": { - "line": 3912, + "line": 3920, "column": 8 }, "end": { - "line": 3912, + "line": 3920, "column": 9 } } @@ -540649,15 +543911,15 @@ "postfix": false, "binop": null }, - "start": 157547, - "end": 157548, + "start": 158061, + "end": 158062, "loc": { "start": { - "line": 3913, + "line": 3921, "column": 4 }, "end": { - "line": 3913, + "line": 3921, "column": 5 } } @@ -540665,15 +543927,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this SceneModel.\n ", - "start": 157554, - "end": 157598, + "start": 158068, + "end": 158112, "loc": { "start": { - "line": 3915, + "line": 3923, "column": 4 }, "end": { - "line": 3917, + "line": 3925, "column": 7 } } @@ -540691,15 +543953,15 @@ "binop": null }, "value": "destroy", - "start": 157603, - "end": 157610, + "start": 158117, + "end": 158124, "loc": { "start": { - "line": 3918, + "line": 3926, "column": 4 }, "end": { - "line": 3918, + "line": 3926, "column": 11 } } @@ -540716,15 +543978,15 @@ "postfix": false, "binop": null }, - "start": 157610, - "end": 157611, + "start": 158124, + "end": 158125, "loc": { "start": { - "line": 3918, + "line": 3926, "column": 11 }, "end": { - "line": 3918, + "line": 3926, "column": 12 } } @@ -540741,15 +544003,15 @@ "postfix": false, "binop": null }, - "start": 157611, - "end": 157612, + "start": 158125, + "end": 158126, "loc": { "start": { - "line": 3918, + "line": 3926, "column": 12 }, "end": { - "line": 3918, + "line": 3926, "column": 13 } } @@ -540766,15 +544028,15 @@ "postfix": false, "binop": null }, - "start": 157613, - "end": 157614, + "start": 158127, + "end": 158128, "loc": { "start": { - "line": 3918, + "line": 3926, "column": 14 }, "end": { - "line": 3918, + "line": 3926, "column": 15 } } @@ -540794,15 +544056,15 @@ "updateContext": null }, "value": "for", - "start": 157623, - "end": 157626, + "start": 158137, + "end": 158140, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 8 }, "end": { - "line": 3919, + "line": 3927, "column": 11 } } @@ -540819,15 +544081,15 @@ "postfix": false, "binop": null }, - "start": 157627, - "end": 157628, + "start": 158141, + "end": 158142, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 12 }, "end": { - "line": 3919, + "line": 3927, "column": 13 } } @@ -540847,15 +544109,15 @@ "updateContext": null }, "value": "let", - "start": 157628, - "end": 157631, + "start": 158142, + "end": 158145, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 13 }, "end": { - "line": 3919, + "line": 3927, "column": 16 } } @@ -540873,15 +544135,15 @@ "binop": null }, "value": "layerId", - "start": 157632, - "end": 157639, + "start": 158146, + "end": 158153, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 17 }, "end": { - "line": 3919, + "line": 3927, "column": 24 } } @@ -540901,15 +544163,15 @@ "updateContext": null }, "value": "in", - "start": 157640, - "end": 157642, + "start": 158154, + "end": 158156, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 25 }, "end": { - "line": 3919, + "line": 3927, "column": 27 } } @@ -540929,15 +544191,15 @@ "updateContext": null }, "value": "this", - "start": 157643, - "end": 157647, + "start": 158157, + "end": 158161, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 28 }, "end": { - "line": 3919, + "line": 3927, "column": 32 } } @@ -540955,15 +544217,15 @@ "binop": null, "updateContext": null }, - "start": 157647, - "end": 157648, + "start": 158161, + "end": 158162, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 32 }, "end": { - "line": 3919, + "line": 3927, "column": 33 } } @@ -540981,15 +544243,15 @@ "binop": null }, "value": "_vboBatchingLayers", - "start": 157648, - "end": 157666, + "start": 158162, + "end": 158180, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 33 }, "end": { - "line": 3919, + "line": 3927, "column": 51 } } @@ -541006,15 +544268,15 @@ "postfix": false, "binop": null }, - "start": 157666, - "end": 157667, + "start": 158180, + "end": 158181, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 51 }, "end": { - "line": 3919, + "line": 3927, "column": 52 } } @@ -541031,15 +544293,15 @@ "postfix": false, "binop": null }, - "start": 157668, - "end": 157669, + "start": 158182, + "end": 158183, "loc": { "start": { - "line": 3919, + "line": 3927, "column": 53 }, "end": { - "line": 3919, + "line": 3927, "column": 54 } } @@ -541059,15 +544321,15 @@ "updateContext": null }, "value": "if", - "start": 157682, - "end": 157684, + "start": 158196, + "end": 158198, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 12 }, "end": { - "line": 3920, + "line": 3928, "column": 14 } } @@ -541084,15 +544346,15 @@ "postfix": false, "binop": null }, - "start": 157685, - "end": 157686, + "start": 158199, + "end": 158200, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 15 }, "end": { - "line": 3920, + "line": 3928, "column": 16 } } @@ -541112,15 +544374,15 @@ "updateContext": null }, "value": "this", - "start": 157686, - "end": 157690, + "start": 158200, + "end": 158204, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 16 }, "end": { - "line": 3920, + "line": 3928, "column": 20 } } @@ -541138,15 +544400,15 @@ "binop": null, "updateContext": null }, - "start": 157690, - "end": 157691, + "start": 158204, + "end": 158205, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 20 }, "end": { - "line": 3920, + "line": 3928, "column": 21 } } @@ -541164,15 +544426,15 @@ "binop": null }, "value": "_vboBatchingLayers", - "start": 157691, - "end": 157709, + "start": 158205, + "end": 158223, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 21 }, "end": { - "line": 3920, + "line": 3928, "column": 39 } } @@ -541190,15 +544452,15 @@ "binop": null, "updateContext": null }, - "start": 157709, - "end": 157710, + "start": 158223, + "end": 158224, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 39 }, "end": { - "line": 3920, + "line": 3928, "column": 40 } } @@ -541216,15 +544478,15 @@ "binop": null }, "value": "hasOwnProperty", - "start": 157710, - "end": 157724, + "start": 158224, + "end": 158238, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 40 }, "end": { - "line": 3920, + "line": 3928, "column": 54 } } @@ -541241,15 +544503,15 @@ "postfix": false, "binop": null }, - "start": 157724, - "end": 157725, + "start": 158238, + "end": 158239, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 54 }, "end": { - "line": 3920, + "line": 3928, "column": 55 } } @@ -541267,15 +544529,15 @@ "binop": null }, "value": "layerId", - "start": 157725, - "end": 157732, + "start": 158239, + "end": 158246, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 55 }, "end": { - "line": 3920, + "line": 3928, "column": 62 } } @@ -541292,15 +544554,15 @@ "postfix": false, "binop": null }, - "start": 157732, - "end": 157733, + "start": 158246, + "end": 158247, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 62 }, "end": { - "line": 3920, + "line": 3928, "column": 63 } } @@ -541317,15 +544579,15 @@ "postfix": false, "binop": null }, - "start": 157733, - "end": 157734, + "start": 158247, + "end": 158248, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 63 }, "end": { - "line": 3920, + "line": 3928, "column": 64 } } @@ -541342,15 +544604,15 @@ "postfix": false, "binop": null }, - "start": 157735, - "end": 157736, + "start": 158249, + "end": 158250, "loc": { "start": { - "line": 3920, + "line": 3928, "column": 65 }, "end": { - "line": 3920, + "line": 3928, "column": 66 } } @@ -541370,15 +544632,15 @@ "updateContext": null }, "value": "this", - "start": 157753, - "end": 157757, + "start": 158267, + "end": 158271, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 16 }, "end": { - "line": 3921, + "line": 3929, "column": 20 } } @@ -541396,15 +544658,15 @@ "binop": null, "updateContext": null }, - "start": 157757, - "end": 157758, + "start": 158271, + "end": 158272, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 20 }, "end": { - "line": 3921, + "line": 3929, "column": 21 } } @@ -541422,15 +544684,15 @@ "binop": null }, "value": "_vboBatchingLayers", - "start": 157758, - "end": 157776, + "start": 158272, + "end": 158290, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 21 }, "end": { - "line": 3921, + "line": 3929, "column": 39 } } @@ -541448,15 +544710,15 @@ "binop": null, "updateContext": null }, - "start": 157776, - "end": 157777, + "start": 158290, + "end": 158291, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 39 }, "end": { - "line": 3921, + "line": 3929, "column": 40 } } @@ -541474,15 +544736,15 @@ "binop": null }, "value": "layerId", - "start": 157777, - "end": 157784, + "start": 158291, + "end": 158298, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 40 }, "end": { - "line": 3921, + "line": 3929, "column": 47 } } @@ -541500,15 +544762,15 @@ "binop": null, "updateContext": null }, - "start": 157784, - "end": 157785, + "start": 158298, + "end": 158299, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 47 }, "end": { - "line": 3921, + "line": 3929, "column": 48 } } @@ -541526,15 +544788,15 @@ "binop": null, "updateContext": null }, - "start": 157785, - "end": 157786, + "start": 158299, + "end": 158300, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 48 }, "end": { - "line": 3921, + "line": 3929, "column": 49 } } @@ -541552,15 +544814,15 @@ "binop": null }, "value": "destroy", - "start": 157786, - "end": 157793, + "start": 158300, + "end": 158307, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 49 }, "end": { - "line": 3921, + "line": 3929, "column": 56 } } @@ -541577,15 +544839,15 @@ "postfix": false, "binop": null }, - "start": 157793, - "end": 157794, + "start": 158307, + "end": 158308, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 56 }, "end": { - "line": 3921, + "line": 3929, "column": 57 } } @@ -541602,15 +544864,15 @@ "postfix": false, "binop": null }, - "start": 157794, - "end": 157795, + "start": 158308, + "end": 158309, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 57 }, "end": { - "line": 3921, + "line": 3929, "column": 58 } } @@ -541628,15 +544890,15 @@ "binop": null, "updateContext": null }, - "start": 157795, - "end": 157796, + "start": 158309, + "end": 158310, "loc": { "start": { - "line": 3921, + "line": 3929, "column": 58 }, "end": { - "line": 3921, + "line": 3929, "column": 59 } } @@ -541653,15 +544915,15 @@ "postfix": false, "binop": null }, - "start": 157809, - "end": 157810, + "start": 158323, + "end": 158324, "loc": { "start": { - "line": 3922, + "line": 3930, "column": 12 }, "end": { - "line": 3922, + "line": 3930, "column": 13 } } @@ -541678,15 +544940,15 @@ "postfix": false, "binop": null }, - "start": 157819, - "end": 157820, + "start": 158333, + "end": 158334, "loc": { "start": { - "line": 3923, + "line": 3931, "column": 8 }, "end": { - "line": 3923, + "line": 3931, "column": 9 } } @@ -541706,15 +544968,15 @@ "updateContext": null }, "value": "this", - "start": 157829, - "end": 157833, + "start": 158343, + "end": 158347, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 8 }, "end": { - "line": 3924, + "line": 3932, "column": 12 } } @@ -541732,15 +544994,15 @@ "binop": null, "updateContext": null }, - "start": 157833, - "end": 157834, + "start": 158347, + "end": 158348, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 12 }, "end": { - "line": 3924, + "line": 3932, "column": 13 } } @@ -541758,15 +545020,15 @@ "binop": null }, "value": "_vboBatchingLayers", - "start": 157834, - "end": 157852, + "start": 158348, + "end": 158366, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 13 }, "end": { - "line": 3924, + "line": 3932, "column": 31 } } @@ -541785,15 +545047,15 @@ "updateContext": null }, "value": "=", - "start": 157853, - "end": 157854, + "start": 158367, + "end": 158368, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 32 }, "end": { - "line": 3924, + "line": 3932, "column": 33 } } @@ -541810,15 +545072,15 @@ "postfix": false, "binop": null }, - "start": 157855, - "end": 157856, + "start": 158369, + "end": 158370, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 34 }, "end": { - "line": 3924, + "line": 3932, "column": 35 } } @@ -541835,15 +545097,15 @@ "postfix": false, "binop": null }, - "start": 157856, - "end": 157857, + "start": 158370, + "end": 158371, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 35 }, "end": { - "line": 3924, + "line": 3932, "column": 36 } } @@ -541861,15 +545123,15 @@ "binop": null, "updateContext": null }, - "start": 157857, - "end": 157858, + "start": 158371, + "end": 158372, "loc": { "start": { - "line": 3924, + "line": 3932, "column": 36 }, "end": { - "line": 3924, + "line": 3932, "column": 37 } } @@ -541889,15 +545151,15 @@ "updateContext": null }, "value": "for", - "start": 157867, - "end": 157870, + "start": 158381, + "end": 158384, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 8 }, "end": { - "line": 3925, + "line": 3933, "column": 11 } } @@ -541914,15 +545176,15 @@ "postfix": false, "binop": null }, - "start": 157871, - "end": 157872, + "start": 158385, + "end": 158386, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 12 }, "end": { - "line": 3925, + "line": 3933, "column": 13 } } @@ -541942,15 +545204,15 @@ "updateContext": null }, "value": "let", - "start": 157872, - "end": 157875, + "start": 158386, + "end": 158389, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 13 }, "end": { - "line": 3925, + "line": 3933, "column": 16 } } @@ -541968,15 +545230,15 @@ "binop": null }, "value": "layerId", - "start": 157876, - "end": 157883, + "start": 158390, + "end": 158397, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 17 }, "end": { - "line": 3925, + "line": 3933, "column": 24 } } @@ -541996,15 +545258,15 @@ "updateContext": null }, "value": "in", - "start": 157884, - "end": 157886, + "start": 158398, + "end": 158400, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 25 }, "end": { - "line": 3925, + "line": 3933, "column": 27 } } @@ -542024,15 +545286,15 @@ "updateContext": null }, "value": "this", - "start": 157887, - "end": 157891, + "start": 158401, + "end": 158405, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 28 }, "end": { - "line": 3925, + "line": 3933, "column": 32 } } @@ -542050,15 +545312,15 @@ "binop": null, "updateContext": null }, - "start": 157891, - "end": 157892, + "start": 158405, + "end": 158406, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 32 }, "end": { - "line": 3925, + "line": 3933, "column": 33 } } @@ -542076,15 +545338,15 @@ "binop": null }, "value": "_vboInstancingLayers", - "start": 157892, - "end": 157912, + "start": 158406, + "end": 158426, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 33 }, "end": { - "line": 3925, + "line": 3933, "column": 53 } } @@ -542101,15 +545363,15 @@ "postfix": false, "binop": null }, - "start": 157912, - "end": 157913, + "start": 158426, + "end": 158427, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 53 }, "end": { - "line": 3925, + "line": 3933, "column": 54 } } @@ -542126,15 +545388,15 @@ "postfix": false, "binop": null }, - "start": 157914, - "end": 157915, + "start": 158428, + "end": 158429, "loc": { "start": { - "line": 3925, + "line": 3933, "column": 55 }, "end": { - "line": 3925, + "line": 3933, "column": 56 } } @@ -542154,15 +545416,15 @@ "updateContext": null }, "value": "if", - "start": 157928, - "end": 157930, + "start": 158442, + "end": 158444, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 12 }, "end": { - "line": 3926, + "line": 3934, "column": 14 } } @@ -542179,15 +545441,15 @@ "postfix": false, "binop": null }, - "start": 157931, - "end": 157932, + "start": 158445, + "end": 158446, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 15 }, "end": { - "line": 3926, + "line": 3934, "column": 16 } } @@ -542207,15 +545469,15 @@ "updateContext": null }, "value": "this", - "start": 157932, - "end": 157936, + "start": 158446, + "end": 158450, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 16 }, "end": { - "line": 3926, + "line": 3934, "column": 20 } } @@ -542233,15 +545495,15 @@ "binop": null, "updateContext": null }, - "start": 157936, - "end": 157937, + "start": 158450, + "end": 158451, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 20 }, "end": { - "line": 3926, + "line": 3934, "column": 21 } } @@ -542259,15 +545521,15 @@ "binop": null }, "value": "_vboInstancingLayers", - "start": 157937, - "end": 157957, + "start": 158451, + "end": 158471, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 21 }, "end": { - "line": 3926, + "line": 3934, "column": 41 } } @@ -542285,15 +545547,15 @@ "binop": null, "updateContext": null }, - "start": 157957, - "end": 157958, + "start": 158471, + "end": 158472, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 41 }, "end": { - "line": 3926, + "line": 3934, "column": 42 } } @@ -542311,15 +545573,15 @@ "binop": null }, "value": "hasOwnProperty", - "start": 157958, - "end": 157972, + "start": 158472, + "end": 158486, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 42 }, "end": { - "line": 3926, + "line": 3934, "column": 56 } } @@ -542336,15 +545598,15 @@ "postfix": false, "binop": null }, - "start": 157972, - "end": 157973, + "start": 158486, + "end": 158487, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 56 }, "end": { - "line": 3926, + "line": 3934, "column": 57 } } @@ -542362,15 +545624,15 @@ "binop": null }, "value": "layerId", - "start": 157973, - "end": 157980, + "start": 158487, + "end": 158494, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 57 }, "end": { - "line": 3926, + "line": 3934, "column": 64 } } @@ -542387,15 +545649,15 @@ "postfix": false, "binop": null }, - "start": 157980, - "end": 157981, + "start": 158494, + "end": 158495, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 64 }, "end": { - "line": 3926, + "line": 3934, "column": 65 } } @@ -542412,15 +545674,15 @@ "postfix": false, "binop": null }, - "start": 157981, - "end": 157982, + "start": 158495, + "end": 158496, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 65 }, "end": { - "line": 3926, + "line": 3934, "column": 66 } } @@ -542437,15 +545699,15 @@ "postfix": false, "binop": null }, - "start": 157983, - "end": 157984, + "start": 158497, + "end": 158498, "loc": { "start": { - "line": 3926, + "line": 3934, "column": 67 }, "end": { - "line": 3926, + "line": 3934, "column": 68 } } @@ -542465,15 +545727,15 @@ "updateContext": null }, "value": "this", - "start": 158001, - "end": 158005, + "start": 158515, + "end": 158519, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 16 }, "end": { - "line": 3927, + "line": 3935, "column": 20 } } @@ -542491,15 +545753,15 @@ "binop": null, "updateContext": null }, - "start": 158005, - "end": 158006, + "start": 158519, + "end": 158520, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 20 }, "end": { - "line": 3927, + "line": 3935, "column": 21 } } @@ -542517,15 +545779,15 @@ "binop": null }, "value": "_vboInstancingLayers", - "start": 158006, - "end": 158026, + "start": 158520, + "end": 158540, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 21 }, "end": { - "line": 3927, + "line": 3935, "column": 41 } } @@ -542543,15 +545805,15 @@ "binop": null, "updateContext": null }, - "start": 158026, - "end": 158027, + "start": 158540, + "end": 158541, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 41 }, "end": { - "line": 3927, + "line": 3935, "column": 42 } } @@ -542569,15 +545831,15 @@ "binop": null }, "value": "layerId", - "start": 158027, - "end": 158034, + "start": 158541, + "end": 158548, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 42 }, "end": { - "line": 3927, + "line": 3935, "column": 49 } } @@ -542595,15 +545857,15 @@ "binop": null, "updateContext": null }, - "start": 158034, - "end": 158035, + "start": 158548, + "end": 158549, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 49 }, "end": { - "line": 3927, + "line": 3935, "column": 50 } } @@ -542621,15 +545883,15 @@ "binop": null, "updateContext": null }, - "start": 158035, - "end": 158036, + "start": 158549, + "end": 158550, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 50 }, "end": { - "line": 3927, + "line": 3935, "column": 51 } } @@ -542647,15 +545909,15 @@ "binop": null }, "value": "destroy", - "start": 158036, - "end": 158043, + "start": 158550, + "end": 158557, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 51 }, "end": { - "line": 3927, + "line": 3935, "column": 58 } } @@ -542672,15 +545934,15 @@ "postfix": false, "binop": null }, - "start": 158043, - "end": 158044, + "start": 158557, + "end": 158558, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 58 }, "end": { - "line": 3927, + "line": 3935, "column": 59 } } @@ -542697,15 +545959,15 @@ "postfix": false, "binop": null }, - "start": 158044, - "end": 158045, + "start": 158558, + "end": 158559, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 59 }, "end": { - "line": 3927, + "line": 3935, "column": 60 } } @@ -542723,15 +545985,15 @@ "binop": null, "updateContext": null }, - "start": 158045, - "end": 158046, + "start": 158559, + "end": 158560, "loc": { "start": { - "line": 3927, + "line": 3935, "column": 60 }, "end": { - "line": 3927, + "line": 3935, "column": 61 } } @@ -542748,15 +546010,15 @@ "postfix": false, "binop": null }, - "start": 158059, - "end": 158060, + "start": 158573, + "end": 158574, "loc": { "start": { - "line": 3928, + "line": 3936, "column": 12 }, "end": { - "line": 3928, + "line": 3936, "column": 13 } } @@ -542773,15 +546035,15 @@ "postfix": false, "binop": null }, - "start": 158069, - "end": 158070, + "start": 158583, + "end": 158584, "loc": { "start": { - "line": 3929, + "line": 3937, "column": 8 }, "end": { - "line": 3929, + "line": 3937, "column": 9 } } @@ -542801,15 +546063,15 @@ "updateContext": null }, "value": "this", - "start": 158079, - "end": 158083, + "start": 158593, + "end": 158597, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 8 }, "end": { - "line": 3930, + "line": 3938, "column": 12 } } @@ -542827,15 +546089,15 @@ "binop": null, "updateContext": null }, - "start": 158083, - "end": 158084, + "start": 158597, + "end": 158598, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 12 }, "end": { - "line": 3930, + "line": 3938, "column": 13 } } @@ -542853,15 +546115,15 @@ "binop": null }, "value": "_vboInstancingLayers", - "start": 158084, - "end": 158104, + "start": 158598, + "end": 158618, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 13 }, "end": { - "line": 3930, + "line": 3938, "column": 33 } } @@ -542880,15 +546142,15 @@ "updateContext": null }, "value": "=", - "start": 158105, - "end": 158106, + "start": 158619, + "end": 158620, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 34 }, "end": { - "line": 3930, + "line": 3938, "column": 35 } } @@ -542905,15 +546167,15 @@ "postfix": false, "binop": null }, - "start": 158107, - "end": 158108, + "start": 158621, + "end": 158622, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 36 }, "end": { - "line": 3930, + "line": 3938, "column": 37 } } @@ -542930,15 +546192,15 @@ "postfix": false, "binop": null }, - "start": 158108, - "end": 158109, + "start": 158622, + "end": 158623, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 37 }, "end": { - "line": 3930, + "line": 3938, "column": 38 } } @@ -542956,15 +546218,15 @@ "binop": null, "updateContext": null }, - "start": 158109, - "end": 158110, + "start": 158623, + "end": 158624, "loc": { "start": { - "line": 3930, + "line": 3938, "column": 38 }, "end": { - "line": 3930, + "line": 3938, "column": 39 } } @@ -542984,15 +546246,15 @@ "updateContext": null }, "value": "this", - "start": 158119, - "end": 158123, + "start": 158633, + "end": 158637, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 8 }, "end": { - "line": 3931, + "line": 3939, "column": 12 } } @@ -543010,15 +546272,15 @@ "binop": null, "updateContext": null }, - "start": 158123, - "end": 158124, + "start": 158637, + "end": 158638, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 12 }, "end": { - "line": 3931, + "line": 3939, "column": 13 } } @@ -543036,15 +546298,15 @@ "binop": null }, "value": "scene", - "start": 158124, - "end": 158129, + "start": 158638, + "end": 158643, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 13 }, "end": { - "line": 3931, + "line": 3939, "column": 18 } } @@ -543062,15 +546324,15 @@ "binop": null, "updateContext": null }, - "start": 158129, - "end": 158130, + "start": 158643, + "end": 158644, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 18 }, "end": { - "line": 3931, + "line": 3939, "column": 19 } } @@ -543088,15 +546350,15 @@ "binop": null }, "value": "camera", - "start": 158130, - "end": 158136, + "start": 158644, + "end": 158650, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 19 }, "end": { - "line": 3931, + "line": 3939, "column": 25 } } @@ -543114,15 +546376,15 @@ "binop": null, "updateContext": null }, - "start": 158136, - "end": 158137, + "start": 158650, + "end": 158651, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 25 }, "end": { - "line": 3931, + "line": 3939, "column": 26 } } @@ -543140,15 +546402,15 @@ "binop": null }, "value": "off", - "start": 158137, - "end": 158140, + "start": 158651, + "end": 158654, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 26 }, "end": { - "line": 3931, + "line": 3939, "column": 29 } } @@ -543165,15 +546427,15 @@ "postfix": false, "binop": null }, - "start": 158140, - "end": 158141, + "start": 158654, + "end": 158655, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 29 }, "end": { - "line": 3931, + "line": 3939, "column": 30 } } @@ -543193,15 +546455,15 @@ "updateContext": null }, "value": "this", - "start": 158141, - "end": 158145, + "start": 158655, + "end": 158659, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 30 }, "end": { - "line": 3931, + "line": 3939, "column": 34 } } @@ -543219,15 +546481,15 @@ "binop": null, "updateContext": null }, - "start": 158145, - "end": 158146, + "start": 158659, + "end": 158660, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 34 }, "end": { - "line": 3931, + "line": 3939, "column": 35 } } @@ -543245,15 +546507,15 @@ "binop": null }, "value": "_onCameraViewMatrix", - "start": 158146, - "end": 158165, + "start": 158660, + "end": 158679, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 35 }, "end": { - "line": 3931, + "line": 3939, "column": 54 } } @@ -543270,15 +546532,15 @@ "postfix": false, "binop": null }, - "start": 158165, - "end": 158166, + "start": 158679, + "end": 158680, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 54 }, "end": { - "line": 3931, + "line": 3939, "column": 55 } } @@ -543296,15 +546558,15 @@ "binop": null, "updateContext": null }, - "start": 158166, - "end": 158167, + "start": 158680, + "end": 158681, "loc": { "start": { - "line": 3931, + "line": 3939, "column": 55 }, "end": { - "line": 3931, + "line": 3939, "column": 56 } } @@ -543324,15 +546586,15 @@ "updateContext": null }, "value": "this", - "start": 158176, - "end": 158180, + "start": 158690, + "end": 158694, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 8 }, "end": { - "line": 3932, + "line": 3940, "column": 12 } } @@ -543350,15 +546612,15 @@ "binop": null, "updateContext": null }, - "start": 158180, - "end": 158181, + "start": 158694, + "end": 158695, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 12 }, "end": { - "line": 3932, + "line": 3940, "column": 13 } } @@ -543376,15 +546638,15 @@ "binop": null }, "value": "scene", - "start": 158181, - "end": 158186, + "start": 158695, + "end": 158700, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 13 }, "end": { - "line": 3932, + "line": 3940, "column": 18 } } @@ -543402,15 +546664,15 @@ "binop": null, "updateContext": null }, - "start": 158186, - "end": 158187, + "start": 158700, + "end": 158701, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 18 }, "end": { - "line": 3932, + "line": 3940, "column": 19 } } @@ -543428,15 +546690,15 @@ "binop": null }, "value": "off", - "start": 158187, - "end": 158190, + "start": 158701, + "end": 158704, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 19 }, "end": { - "line": 3932, + "line": 3940, "column": 22 } } @@ -543453,15 +546715,15 @@ "postfix": false, "binop": null }, - "start": 158190, - "end": 158191, + "start": 158704, + "end": 158705, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 22 }, "end": { - "line": 3932, + "line": 3940, "column": 23 } } @@ -543481,15 +546743,15 @@ "updateContext": null }, "value": "this", - "start": 158191, - "end": 158195, + "start": 158705, + "end": 158709, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 23 }, "end": { - "line": 3932, + "line": 3940, "column": 27 } } @@ -543507,15 +546769,15 @@ "binop": null, "updateContext": null }, - "start": 158195, - "end": 158196, + "start": 158709, + "end": 158710, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 27 }, "end": { - "line": 3932, + "line": 3940, "column": 28 } } @@ -543533,15 +546795,15 @@ "binop": null }, "value": "_onTick", - "start": 158196, - "end": 158203, + "start": 158710, + "end": 158717, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 28 }, "end": { - "line": 3932, + "line": 3940, "column": 35 } } @@ -543558,15 +546820,15 @@ "postfix": false, "binop": null }, - "start": 158203, - "end": 158204, + "start": 158717, + "end": 158718, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 35 }, "end": { - "line": 3932, + "line": 3940, "column": 36 } } @@ -543584,15 +546846,15 @@ "binop": null, "updateContext": null }, - "start": 158204, - "end": 158205, + "start": 158718, + "end": 158719, "loc": { "start": { - "line": 3932, + "line": 3940, "column": 36 }, "end": { - "line": 3932, + "line": 3940, "column": 37 } } @@ -543612,15 +546874,15 @@ "updateContext": null }, "value": "for", - "start": 158214, - "end": 158217, + "start": 158728, + "end": 158731, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 8 }, "end": { - "line": 3933, + "line": 3941, "column": 11 } } @@ -543637,15 +546899,15 @@ "postfix": false, "binop": null }, - "start": 158218, - "end": 158219, + "start": 158732, + "end": 158733, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 12 }, "end": { - "line": 3933, + "line": 3941, "column": 13 } } @@ -543665,15 +546927,15 @@ "updateContext": null }, "value": "let", - "start": 158219, - "end": 158222, + "start": 158733, + "end": 158736, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 13 }, "end": { - "line": 3933, + "line": 3941, "column": 16 } } @@ -543691,15 +546953,15 @@ "binop": null }, "value": "i", - "start": 158223, - "end": 158224, + "start": 158737, + "end": 158738, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 17 }, "end": { - "line": 3933, + "line": 3941, "column": 18 } } @@ -543718,15 +546980,15 @@ "updateContext": null }, "value": "=", - "start": 158225, - "end": 158226, + "start": 158739, + "end": 158740, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 19 }, "end": { - "line": 3933, + "line": 3941, "column": 20 } } @@ -543745,15 +547007,15 @@ "updateContext": null }, "value": 0, - "start": 158227, - "end": 158228, + "start": 158741, + "end": 158742, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 21 }, "end": { - "line": 3933, + "line": 3941, "column": 22 } } @@ -543771,15 +547033,15 @@ "binop": null, "updateContext": null }, - "start": 158228, - "end": 158229, + "start": 158742, + "end": 158743, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 22 }, "end": { - "line": 3933, + "line": 3941, "column": 23 } } @@ -543797,15 +547059,15 @@ "binop": null }, "value": "len", - "start": 158230, - "end": 158233, + "start": 158744, + "end": 158747, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 24 }, "end": { - "line": 3933, + "line": 3941, "column": 27 } } @@ -543824,15 +547086,15 @@ "updateContext": null }, "value": "=", - "start": 158234, - "end": 158235, + "start": 158748, + "end": 158749, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 28 }, "end": { - "line": 3933, + "line": 3941, "column": 29 } } @@ -543852,15 +547114,15 @@ "updateContext": null }, "value": "this", - "start": 158236, - "end": 158240, + "start": 158750, + "end": 158754, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 30 }, "end": { - "line": 3933, + "line": 3941, "column": 34 } } @@ -543878,15 +547140,15 @@ "binop": null, "updateContext": null }, - "start": 158240, - "end": 158241, + "start": 158754, + "end": 158755, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 34 }, "end": { - "line": 3933, + "line": 3941, "column": 35 } } @@ -543904,15 +547166,15 @@ "binop": null }, "value": "layerList", - "start": 158241, - "end": 158250, + "start": 158755, + "end": 158764, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 35 }, "end": { - "line": 3933, + "line": 3941, "column": 44 } } @@ -543930,15 +547192,15 @@ "binop": null, "updateContext": null }, - "start": 158250, - "end": 158251, + "start": 158764, + "end": 158765, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 44 }, "end": { - "line": 3933, + "line": 3941, "column": 45 } } @@ -543956,15 +547218,15 @@ "binop": null }, "value": "length", - "start": 158251, - "end": 158257, + "start": 158765, + "end": 158771, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 45 }, "end": { - "line": 3933, + "line": 3941, "column": 51 } } @@ -543982,15 +547244,15 @@ "binop": null, "updateContext": null }, - "start": 158257, - "end": 158258, + "start": 158771, + "end": 158772, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 51 }, "end": { - "line": 3933, + "line": 3941, "column": 52 } } @@ -544008,15 +547270,15 @@ "binop": null }, "value": "i", - "start": 158259, - "end": 158260, + "start": 158773, + "end": 158774, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 53 }, "end": { - "line": 3933, + "line": 3941, "column": 54 } } @@ -544035,15 +547297,15 @@ "updateContext": null }, "value": "<", - "start": 158261, - "end": 158262, + "start": 158775, + "end": 158776, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 55 }, "end": { - "line": 3933, + "line": 3941, "column": 56 } } @@ -544061,15 +547323,15 @@ "binop": null }, "value": "len", - "start": 158263, - "end": 158266, + "start": 158777, + "end": 158780, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 57 }, "end": { - "line": 3933, + "line": 3941, "column": 60 } } @@ -544087,15 +547349,15 @@ "binop": null, "updateContext": null }, - "start": 158266, - "end": 158267, + "start": 158780, + "end": 158781, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 60 }, "end": { - "line": 3933, + "line": 3941, "column": 61 } } @@ -544113,15 +547375,15 @@ "binop": null }, "value": "i", - "start": 158268, - "end": 158269, + "start": 158782, + "end": 158783, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 62 }, "end": { - "line": 3933, + "line": 3941, "column": 63 } } @@ -544139,15 +547401,15 @@ "binop": null }, "value": "++", - "start": 158269, - "end": 158271, + "start": 158783, + "end": 158785, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 63 }, "end": { - "line": 3933, + "line": 3941, "column": 65 } } @@ -544164,15 +547426,15 @@ "postfix": false, "binop": null }, - "start": 158271, - "end": 158272, + "start": 158785, + "end": 158786, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 65 }, "end": { - "line": 3933, + "line": 3941, "column": 66 } } @@ -544189,15 +547451,15 @@ "postfix": false, "binop": null }, - "start": 158273, - "end": 158274, + "start": 158787, + "end": 158788, "loc": { "start": { - "line": 3933, + "line": 3941, "column": 67 }, "end": { - "line": 3933, + "line": 3941, "column": 68 } } @@ -544217,15 +547479,15 @@ "updateContext": null }, "value": "this", - "start": 158287, - "end": 158291, + "start": 158801, + "end": 158805, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 12 }, "end": { - "line": 3934, + "line": 3942, "column": 16 } } @@ -544243,15 +547505,15 @@ "binop": null, "updateContext": null }, - "start": 158291, - "end": 158292, + "start": 158805, + "end": 158806, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 16 }, "end": { - "line": 3934, + "line": 3942, "column": 17 } } @@ -544269,15 +547531,15 @@ "binop": null }, "value": "layerList", - "start": 158292, - "end": 158301, + "start": 158806, + "end": 158815, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 17 }, "end": { - "line": 3934, + "line": 3942, "column": 26 } } @@ -544295,15 +547557,15 @@ "binop": null, "updateContext": null }, - "start": 158301, - "end": 158302, + "start": 158815, + "end": 158816, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 26 }, "end": { - "line": 3934, + "line": 3942, "column": 27 } } @@ -544321,15 +547583,15 @@ "binop": null }, "value": "i", - "start": 158302, - "end": 158303, + "start": 158816, + "end": 158817, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 27 }, "end": { - "line": 3934, + "line": 3942, "column": 28 } } @@ -544347,15 +547609,15 @@ "binop": null, "updateContext": null }, - "start": 158303, - "end": 158304, + "start": 158817, + "end": 158818, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 28 }, "end": { - "line": 3934, + "line": 3942, "column": 29 } } @@ -544373,15 +547635,15 @@ "binop": null, "updateContext": null }, - "start": 158304, - "end": 158305, + "start": 158818, + "end": 158819, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 29 }, "end": { - "line": 3934, + "line": 3942, "column": 30 } } @@ -544399,15 +547661,15 @@ "binop": null }, "value": "destroy", - "start": 158305, - "end": 158312, + "start": 158819, + "end": 158826, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 30 }, "end": { - "line": 3934, + "line": 3942, "column": 37 } } @@ -544424,15 +547686,15 @@ "postfix": false, "binop": null }, - "start": 158312, - "end": 158313, + "start": 158826, + "end": 158827, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 37 }, "end": { - "line": 3934, + "line": 3942, "column": 38 } } @@ -544449,15 +547711,15 @@ "postfix": false, "binop": null }, - "start": 158313, - "end": 158314, + "start": 158827, + "end": 158828, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 38 }, "end": { - "line": 3934, + "line": 3942, "column": 39 } } @@ -544475,15 +547737,15 @@ "binop": null, "updateContext": null }, - "start": 158314, - "end": 158315, + "start": 158828, + "end": 158829, "loc": { "start": { - "line": 3934, + "line": 3942, "column": 39 }, "end": { - "line": 3934, + "line": 3942, "column": 40 } } @@ -544500,15 +547762,15 @@ "postfix": false, "binop": null }, - "start": 158324, - "end": 158325, + "start": 158838, + "end": 158839, "loc": { "start": { - "line": 3935, + "line": 3943, "column": 8 }, "end": { - "line": 3935, + "line": 3943, "column": 9 } } @@ -544528,15 +547790,15 @@ "updateContext": null }, "value": "this", - "start": 158334, - "end": 158338, + "start": 158848, + "end": 158852, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 8 }, "end": { - "line": 3936, + "line": 3944, "column": 12 } } @@ -544554,15 +547816,15 @@ "binop": null, "updateContext": null }, - "start": 158338, - "end": 158339, + "start": 158852, + "end": 158853, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 12 }, "end": { - "line": 3936, + "line": 3944, "column": 13 } } @@ -544580,15 +547842,15 @@ "binop": null }, "value": "layerList", - "start": 158339, - "end": 158348, + "start": 158853, + "end": 158862, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 13 }, "end": { - "line": 3936, + "line": 3944, "column": 22 } } @@ -544607,15 +547869,15 @@ "updateContext": null }, "value": "=", - "start": 158349, - "end": 158350, + "start": 158863, + "end": 158864, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 23 }, "end": { - "line": 3936, + "line": 3944, "column": 24 } } @@ -544633,15 +547895,15 @@ "binop": null, "updateContext": null }, - "start": 158351, - "end": 158352, + "start": 158865, + "end": 158866, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 25 }, "end": { - "line": 3936, + "line": 3944, "column": 26 } } @@ -544659,15 +547921,15 @@ "binop": null, "updateContext": null }, - "start": 158352, - "end": 158353, + "start": 158866, + "end": 158867, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 26 }, "end": { - "line": 3936, + "line": 3944, "column": 27 } } @@ -544685,15 +547947,15 @@ "binop": null, "updateContext": null }, - "start": 158353, - "end": 158354, + "start": 158867, + "end": 158868, "loc": { "start": { - "line": 3936, + "line": 3944, "column": 27 }, "end": { - "line": 3936, + "line": 3944, "column": 28 } } @@ -544713,15 +547975,15 @@ "updateContext": null }, "value": "for", - "start": 158363, - "end": 158366, + "start": 158877, + "end": 158880, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 8 }, "end": { - "line": 3937, + "line": 3945, "column": 11 } } @@ -544738,15 +548000,15 @@ "postfix": false, "binop": null }, - "start": 158367, - "end": 158368, + "start": 158881, + "end": 158882, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 12 }, "end": { - "line": 3937, + "line": 3945, "column": 13 } } @@ -544766,15 +548028,15 @@ "updateContext": null }, "value": "let", - "start": 158368, - "end": 158371, + "start": 158882, + "end": 158885, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 13 }, "end": { - "line": 3937, + "line": 3945, "column": 16 } } @@ -544792,15 +548054,15 @@ "binop": null }, "value": "i", - "start": 158372, - "end": 158373, + "start": 158886, + "end": 158887, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 17 }, "end": { - "line": 3937, + "line": 3945, "column": 18 } } @@ -544819,15 +548081,15 @@ "updateContext": null }, "value": "=", - "start": 158374, - "end": 158375, + "start": 158888, + "end": 158889, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 19 }, "end": { - "line": 3937, + "line": 3945, "column": 20 } } @@ -544846,15 +548108,15 @@ "updateContext": null }, "value": 0, - "start": 158376, - "end": 158377, + "start": 158890, + "end": 158891, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 21 }, "end": { - "line": 3937, + "line": 3945, "column": 22 } } @@ -544872,15 +548134,15 @@ "binop": null, "updateContext": null }, - "start": 158377, - "end": 158378, + "start": 158891, + "end": 158892, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 22 }, "end": { - "line": 3937, + "line": 3945, "column": 23 } } @@ -544898,15 +548160,15 @@ "binop": null }, "value": "len", - "start": 158379, - "end": 158382, + "start": 158893, + "end": 158896, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 24 }, "end": { - "line": 3937, + "line": 3945, "column": 27 } } @@ -544925,15 +548187,15 @@ "updateContext": null }, "value": "=", - "start": 158383, - "end": 158384, + "start": 158897, + "end": 158898, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 28 }, "end": { - "line": 3937, + "line": 3945, "column": 29 } } @@ -544953,15 +548215,15 @@ "updateContext": null }, "value": "this", - "start": 158385, - "end": 158389, + "start": 158899, + "end": 158903, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 30 }, "end": { - "line": 3937, + "line": 3945, "column": 34 } } @@ -544979,15 +548241,15 @@ "binop": null, "updateContext": null }, - "start": 158389, - "end": 158390, + "start": 158903, + "end": 158904, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 34 }, "end": { - "line": 3937, + "line": 3945, "column": 35 } } @@ -545005,15 +548267,15 @@ "binop": null }, "value": "_entityList", - "start": 158390, - "end": 158401, + "start": 158904, + "end": 158915, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 35 }, "end": { - "line": 3937, + "line": 3945, "column": 46 } } @@ -545031,15 +548293,15 @@ "binop": null, "updateContext": null }, - "start": 158401, - "end": 158402, + "start": 158915, + "end": 158916, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 46 }, "end": { - "line": 3937, + "line": 3945, "column": 47 } } @@ -545057,15 +548319,15 @@ "binop": null }, "value": "length", - "start": 158402, - "end": 158408, + "start": 158916, + "end": 158922, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 47 }, "end": { - "line": 3937, + "line": 3945, "column": 53 } } @@ -545083,15 +548345,15 @@ "binop": null, "updateContext": null }, - "start": 158408, - "end": 158409, + "start": 158922, + "end": 158923, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 53 }, "end": { - "line": 3937, + "line": 3945, "column": 54 } } @@ -545109,15 +548371,15 @@ "binop": null }, "value": "i", - "start": 158410, - "end": 158411, + "start": 158924, + "end": 158925, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 55 }, "end": { - "line": 3937, + "line": 3945, "column": 56 } } @@ -545136,15 +548398,15 @@ "updateContext": null }, "value": "<", - "start": 158412, - "end": 158413, + "start": 158926, + "end": 158927, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 57 }, "end": { - "line": 3937, + "line": 3945, "column": 58 } } @@ -545162,15 +548424,15 @@ "binop": null }, "value": "len", - "start": 158414, - "end": 158417, + "start": 158928, + "end": 158931, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 59 }, "end": { - "line": 3937, + "line": 3945, "column": 62 } } @@ -545188,15 +548450,15 @@ "binop": null, "updateContext": null }, - "start": 158417, - "end": 158418, + "start": 158931, + "end": 158932, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 62 }, "end": { - "line": 3937, + "line": 3945, "column": 63 } } @@ -545214,15 +548476,15 @@ "binop": null }, "value": "i", - "start": 158419, - "end": 158420, + "start": 158933, + "end": 158934, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 64 }, "end": { - "line": 3937, + "line": 3945, "column": 65 } } @@ -545240,15 +548502,15 @@ "binop": null }, "value": "++", - "start": 158420, - "end": 158422, + "start": 158934, + "end": 158936, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 65 }, "end": { - "line": 3937, + "line": 3945, "column": 67 } } @@ -545265,15 +548527,15 @@ "postfix": false, "binop": null }, - "start": 158422, - "end": 158423, + "start": 158936, + "end": 158937, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 67 }, "end": { - "line": 3937, + "line": 3945, "column": 68 } } @@ -545290,15 +548552,15 @@ "postfix": false, "binop": null }, - "start": 158424, - "end": 158425, + "start": 158938, + "end": 158939, "loc": { "start": { - "line": 3937, + "line": 3945, "column": 69 }, "end": { - "line": 3937, + "line": 3945, "column": 70 } } @@ -545318,15 +548580,15 @@ "updateContext": null }, "value": "this", - "start": 158438, - "end": 158442, + "start": 158952, + "end": 158956, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 12 }, "end": { - "line": 3938, + "line": 3946, "column": 16 } } @@ -545344,15 +548606,15 @@ "binop": null, "updateContext": null }, - "start": 158442, - "end": 158443, + "start": 158956, + "end": 158957, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 16 }, "end": { - "line": 3938, + "line": 3946, "column": 17 } } @@ -545370,15 +548632,15 @@ "binop": null }, "value": "_entityList", - "start": 158443, - "end": 158454, + "start": 158957, + "end": 158968, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 17 }, "end": { - "line": 3938, + "line": 3946, "column": 28 } } @@ -545396,15 +548658,15 @@ "binop": null, "updateContext": null }, - "start": 158454, - "end": 158455, + "start": 158968, + "end": 158969, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 28 }, "end": { - "line": 3938, + "line": 3946, "column": 29 } } @@ -545422,15 +548684,15 @@ "binop": null }, "value": "i", - "start": 158455, - "end": 158456, + "start": 158969, + "end": 158970, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 29 }, "end": { - "line": 3938, + "line": 3946, "column": 30 } } @@ -545448,15 +548710,15 @@ "binop": null, "updateContext": null }, - "start": 158456, - "end": 158457, + "start": 158970, + "end": 158971, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 30 }, "end": { - "line": 3938, + "line": 3946, "column": 31 } } @@ -545474,15 +548736,15 @@ "binop": null, "updateContext": null }, - "start": 158457, - "end": 158458, + "start": 158971, + "end": 158972, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 31 }, "end": { - "line": 3938, + "line": 3946, "column": 32 } } @@ -545500,15 +548762,15 @@ "binop": null }, "value": "_destroy", - "start": 158458, - "end": 158466, + "start": 158972, + "end": 158980, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 32 }, "end": { - "line": 3938, + "line": 3946, "column": 40 } } @@ -545525,15 +548787,15 @@ "postfix": false, "binop": null }, - "start": 158466, - "end": 158467, + "start": 158980, + "end": 158981, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 40 }, "end": { - "line": 3938, + "line": 3946, "column": 41 } } @@ -545550,15 +548812,15 @@ "postfix": false, "binop": null }, - "start": 158467, - "end": 158468, + "start": 158981, + "end": 158982, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 41 }, "end": { - "line": 3938, + "line": 3946, "column": 42 } } @@ -545576,15 +548838,15 @@ "binop": null, "updateContext": null }, - "start": 158468, - "end": 158469, + "start": 158982, + "end": 158983, "loc": { "start": { - "line": 3938, + "line": 3946, "column": 42 }, "end": { - "line": 3938, + "line": 3946, "column": 43 } } @@ -545601,15 +548863,15 @@ "postfix": false, "binop": null }, - "start": 158478, - "end": 158479, + "start": 158992, + "end": 158993, "loc": { "start": { - "line": 3939, + "line": 3947, "column": 8 }, "end": { - "line": 3939, + "line": 3947, "column": 9 } } @@ -545617,15 +548879,15 @@ { "type": "CommentLine", "value": " Object.entries(this._geometries).forEach(([id, geometry]) => {", - "start": 158488, - "end": 158553, + "start": 159002, + "end": 159067, "loc": { "start": { - "line": 3940, + "line": 3948, "column": 8 }, "end": { - "line": 3940, + "line": 3948, "column": 73 } } @@ -545633,15 +548895,15 @@ { "type": "CommentLine", "value": " geometry.destroy();", - "start": 158562, - "end": 158588, + "start": 159076, + "end": 159102, "loc": { "start": { - "line": 3941, + "line": 3949, "column": 8 }, "end": { - "line": 3941, + "line": 3949, "column": 34 } } @@ -545649,15 +548911,15 @@ { "type": "CommentLine", "value": " });", - "start": 158597, - "end": 158603, + "start": 159111, + "end": 159117, "loc": { "start": { - "line": 3942, + "line": 3950, "column": 8 }, "end": { - "line": 3942, + "line": 3950, "column": 14 } } @@ -545677,15 +548939,15 @@ "updateContext": null }, "value": "this", - "start": 158612, - "end": 158616, + "start": 159126, + "end": 159130, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 8 }, "end": { - "line": 3943, + "line": 3951, "column": 12 } } @@ -545703,15 +548965,15 @@ "binop": null, "updateContext": null }, - "start": 158616, - "end": 158617, + "start": 159130, + "end": 159131, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 12 }, "end": { - "line": 3943, + "line": 3951, "column": 13 } } @@ -545729,15 +548991,15 @@ "binop": null }, "value": "_geometries", - "start": 158617, - "end": 158628, + "start": 159131, + "end": 159142, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 13 }, "end": { - "line": 3943, + "line": 3951, "column": 24 } } @@ -545756,15 +549018,15 @@ "updateContext": null }, "value": "=", - "start": 158629, - "end": 158630, + "start": 159143, + "end": 159144, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 25 }, "end": { - "line": 3943, + "line": 3951, "column": 26 } } @@ -545781,15 +549043,15 @@ "postfix": false, "binop": null }, - "start": 158631, - "end": 158632, + "start": 159145, + "end": 159146, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 27 }, "end": { - "line": 3943, + "line": 3951, "column": 28 } } @@ -545806,15 +549068,15 @@ "postfix": false, "binop": null }, - "start": 158632, - "end": 158633, + "start": 159146, + "end": 159147, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 28 }, "end": { - "line": 3943, + "line": 3951, "column": 29 } } @@ -545832,15 +549094,15 @@ "binop": null, "updateContext": null }, - "start": 158633, - "end": 158634, + "start": 159147, + "end": 159148, "loc": { "start": { - "line": 3943, + "line": 3951, "column": 29 }, "end": { - "line": 3943, + "line": 3951, "column": 30 } } @@ -545860,15 +549122,15 @@ "updateContext": null }, "value": "this", - "start": 158643, - "end": 158647, + "start": 159157, + "end": 159161, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 8 }, "end": { - "line": 3944, + "line": 3952, "column": 12 } } @@ -545886,15 +549148,15 @@ "binop": null, "updateContext": null }, - "start": 158647, - "end": 158648, + "start": 159161, + "end": 159162, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 12 }, "end": { - "line": 3944, + "line": 3952, "column": 13 } } @@ -545912,15 +549174,15 @@ "binop": null }, "value": "_dtxBuckets", - "start": 158648, - "end": 158659, + "start": 159162, + "end": 159173, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 13 }, "end": { - "line": 3944, + "line": 3952, "column": 24 } } @@ -545939,15 +549201,15 @@ "updateContext": null }, "value": "=", - "start": 158660, - "end": 158661, + "start": 159174, + "end": 159175, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 25 }, "end": { - "line": 3944, + "line": 3952, "column": 26 } } @@ -545964,15 +549226,15 @@ "postfix": false, "binop": null }, - "start": 158662, - "end": 158663, + "start": 159176, + "end": 159177, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 27 }, "end": { - "line": 3944, + "line": 3952, "column": 28 } } @@ -545989,15 +549251,15 @@ "postfix": false, "binop": null }, - "start": 158663, - "end": 158664, + "start": 159177, + "end": 159178, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 28 }, "end": { - "line": 3944, + "line": 3952, "column": 29 } } @@ -546015,15 +549277,15 @@ "binop": null, "updateContext": null }, - "start": 158664, - "end": 158665, + "start": 159178, + "end": 159179, "loc": { "start": { - "line": 3944, + "line": 3952, "column": 29 }, "end": { - "line": 3944, + "line": 3952, "column": 30 } } @@ -546043,15 +549305,15 @@ "updateContext": null }, "value": "this", - "start": 158674, - "end": 158678, + "start": 159188, + "end": 159192, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 8 }, "end": { - "line": 3945, + "line": 3953, "column": 12 } } @@ -546069,15 +549331,15 @@ "binop": null, "updateContext": null }, - "start": 158678, - "end": 158679, + "start": 159192, + "end": 159193, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 12 }, "end": { - "line": 3945, + "line": 3953, "column": 13 } } @@ -546095,15 +549357,15 @@ "binop": null }, "value": "_textures", - "start": 158679, - "end": 158688, + "start": 159193, + "end": 159202, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 13 }, "end": { - "line": 3945, + "line": 3953, "column": 22 } } @@ -546122,15 +549384,15 @@ "updateContext": null }, "value": "=", - "start": 158689, - "end": 158690, + "start": 159203, + "end": 159204, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 23 }, "end": { - "line": 3945, + "line": 3953, "column": 24 } } @@ -546147,15 +549409,15 @@ "postfix": false, "binop": null }, - "start": 158691, - "end": 158692, + "start": 159205, + "end": 159206, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 25 }, "end": { - "line": 3945, + "line": 3953, "column": 26 } } @@ -546172,15 +549434,15 @@ "postfix": false, "binop": null }, - "start": 158692, - "end": 158693, + "start": 159206, + "end": 159207, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 26 }, "end": { - "line": 3945, + "line": 3953, "column": 27 } } @@ -546198,15 +549460,15 @@ "binop": null, "updateContext": null }, - "start": 158693, - "end": 158694, + "start": 159207, + "end": 159208, "loc": { "start": { - "line": 3945, + "line": 3953, "column": 27 }, "end": { - "line": 3945, + "line": 3953, "column": 28 } } @@ -546226,15 +549488,15 @@ "updateContext": null }, "value": "this", - "start": 158703, - "end": 158707, + "start": 159217, + "end": 159221, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 8 }, "end": { - "line": 3946, + "line": 3954, "column": 12 } } @@ -546252,15 +549514,15 @@ "binop": null, "updateContext": null }, - "start": 158707, - "end": 158708, + "start": 159221, + "end": 159222, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 12 }, "end": { - "line": 3946, + "line": 3954, "column": 13 } } @@ -546278,15 +549540,15 @@ "binop": null }, "value": "_textureSets", - "start": 158708, - "end": 158720, + "start": 159222, + "end": 159234, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 13 }, "end": { - "line": 3946, + "line": 3954, "column": 25 } } @@ -546305,15 +549567,15 @@ "updateContext": null }, "value": "=", - "start": 158721, - "end": 158722, + "start": 159235, + "end": 159236, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 26 }, "end": { - "line": 3946, + "line": 3954, "column": 27 } } @@ -546330,15 +549592,15 @@ "postfix": false, "binop": null }, - "start": 158723, - "end": 158724, + "start": 159237, + "end": 159238, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 28 }, "end": { - "line": 3946, + "line": 3954, "column": 29 } } @@ -546355,15 +549617,15 @@ "postfix": false, "binop": null }, - "start": 158724, - "end": 158725, + "start": 159238, + "end": 159239, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 29 }, "end": { - "line": 3946, + "line": 3954, "column": 30 } } @@ -546381,15 +549643,15 @@ "binop": null, "updateContext": null }, - "start": 158725, - "end": 158726, + "start": 159239, + "end": 159240, "loc": { "start": { - "line": 3946, + "line": 3954, "column": 30 }, "end": { - "line": 3946, + "line": 3954, "column": 31 } } @@ -546409,15 +549671,15 @@ "updateContext": null }, "value": "this", - "start": 158735, - "end": 158739, + "start": 159249, + "end": 159253, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 8 }, "end": { - "line": 3947, + "line": 3955, "column": 12 } } @@ -546435,15 +549697,15 @@ "binop": null, "updateContext": null }, - "start": 158739, - "end": 158740, + "start": 159253, + "end": 159254, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 12 }, "end": { - "line": 3947, + "line": 3955, "column": 13 } } @@ -546461,15 +549723,15 @@ "binop": null }, "value": "_meshes", - "start": 158740, - "end": 158747, + "start": 159254, + "end": 159261, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 13 }, "end": { - "line": 3947, + "line": 3955, "column": 20 } } @@ -546488,15 +549750,15 @@ "updateContext": null }, "value": "=", - "start": 158748, - "end": 158749, + "start": 159262, + "end": 159263, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 21 }, "end": { - "line": 3947, + "line": 3955, "column": 22 } } @@ -546513,15 +549775,15 @@ "postfix": false, "binop": null }, - "start": 158750, - "end": 158751, + "start": 159264, + "end": 159265, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 23 }, "end": { - "line": 3947, + "line": 3955, "column": 24 } } @@ -546538,15 +549800,15 @@ "postfix": false, "binop": null }, - "start": 158751, - "end": 158752, + "start": 159265, + "end": 159266, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 24 }, "end": { - "line": 3947, + "line": 3955, "column": 25 } } @@ -546564,15 +549826,15 @@ "binop": null, "updateContext": null }, - "start": 158752, - "end": 158753, + "start": 159266, + "end": 159267, "loc": { "start": { - "line": 3947, + "line": 3955, "column": 25 }, "end": { - "line": 3947, + "line": 3955, "column": 26 } } @@ -546592,15 +549854,15 @@ "updateContext": null }, "value": "this", - "start": 158762, - "end": 158766, + "start": 159276, + "end": 159280, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 8 }, "end": { - "line": 3948, + "line": 3956, "column": 12 } } @@ -546618,15 +549880,15 @@ "binop": null, "updateContext": null }, - "start": 158766, - "end": 158767, + "start": 159280, + "end": 159281, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 12 }, "end": { - "line": 3948, + "line": 3956, "column": 13 } } @@ -546644,15 +549906,15 @@ "binop": null }, "value": "_entities", - "start": 158767, - "end": 158776, + "start": 159281, + "end": 159290, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 13 }, "end": { - "line": 3948, + "line": 3956, "column": 22 } } @@ -546671,15 +549933,15 @@ "updateContext": null }, "value": "=", - "start": 158777, - "end": 158778, + "start": 159291, + "end": 159292, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 23 }, "end": { - "line": 3948, + "line": 3956, "column": 24 } } @@ -546696,15 +549958,15 @@ "postfix": false, "binop": null }, - "start": 158779, - "end": 158780, + "start": 159293, + "end": 159294, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 25 }, "end": { - "line": 3948, + "line": 3956, "column": 26 } } @@ -546721,15 +549983,15 @@ "postfix": false, "binop": null }, - "start": 158780, - "end": 158781, + "start": 159294, + "end": 159295, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 26 }, "end": { - "line": 3948, + "line": 3956, "column": 27 } } @@ -546747,15 +550009,15 @@ "binop": null, "updateContext": null }, - "start": 158781, - "end": 158782, + "start": 159295, + "end": 159296, "loc": { "start": { - "line": 3948, + "line": 3956, "column": 27 }, "end": { - "line": 3948, + "line": 3956, "column": 28 } } @@ -546775,15 +550037,15 @@ "updateContext": null }, "value": "this", - "start": 158791, - "end": 158795, + "start": 159305, + "end": 159309, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 8 }, "end": { - "line": 3949, + "line": 3957, "column": 12 } } @@ -546801,15 +550063,15 @@ "binop": null, "updateContext": null }, - "start": 158795, - "end": 158796, + "start": 159309, + "end": 159310, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 12 }, "end": { - "line": 3949, + "line": 3957, "column": 13 } } @@ -546827,15 +550089,15 @@ "binop": null }, "value": "scene", - "start": 158796, - "end": 158801, + "start": 159310, + "end": 159315, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 13 }, "end": { - "line": 3949, + "line": 3957, "column": 18 } } @@ -546853,15 +550115,15 @@ "binop": null, "updateContext": null }, - "start": 158801, - "end": 158802, + "start": 159315, + "end": 159316, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 18 }, "end": { - "line": 3949, + "line": 3957, "column": 19 } } @@ -546879,15 +550141,15 @@ "binop": null }, "value": "_aabbDirty", - "start": 158802, - "end": 158812, + "start": 159316, + "end": 159326, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 19 }, "end": { - "line": 3949, + "line": 3957, "column": 29 } } @@ -546906,15 +550168,15 @@ "updateContext": null }, "value": "=", - "start": 158813, - "end": 158814, + "start": 159327, + "end": 159328, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 30 }, "end": { - "line": 3949, + "line": 3957, "column": 31 } } @@ -546934,15 +550196,15 @@ "updateContext": null }, "value": "true", - "start": 158815, - "end": 158819, + "start": 159329, + "end": 159333, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 32 }, "end": { - "line": 3949, + "line": 3957, "column": 36 } } @@ -546960,15 +550222,15 @@ "binop": null, "updateContext": null }, - "start": 158819, - "end": 158820, + "start": 159333, + "end": 159334, "loc": { "start": { - "line": 3949, + "line": 3957, "column": 36 }, "end": { - "line": 3949, + "line": 3957, "column": 37 } } @@ -546988,15 +550250,15 @@ "updateContext": null }, "value": "if", - "start": 158829, - "end": 158831, + "start": 159343, + "end": 159345, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 8 }, "end": { - "line": 3950, + "line": 3958, "column": 10 } } @@ -547013,15 +550275,15 @@ "postfix": false, "binop": null }, - "start": 158832, - "end": 158833, + "start": 159346, + "end": 159347, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 11 }, "end": { - "line": 3950, + "line": 3958, "column": 12 } } @@ -547041,15 +550303,15 @@ "updateContext": null }, "value": "this", - "start": 158833, - "end": 158837, + "start": 159347, + "end": 159351, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 12 }, "end": { - "line": 3950, + "line": 3958, "column": 16 } } @@ -547067,15 +550329,15 @@ "binop": null, "updateContext": null }, - "start": 158837, - "end": 158838, + "start": 159351, + "end": 159352, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 16 }, "end": { - "line": 3950, + "line": 3958, "column": 17 } } @@ -547093,15 +550355,15 @@ "binop": null }, "value": "_isModel", - "start": 158838, - "end": 158846, + "start": 159352, + "end": 159360, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 17 }, "end": { - "line": 3950, + "line": 3958, "column": 25 } } @@ -547118,15 +550380,15 @@ "postfix": false, "binop": null }, - "start": 158846, - "end": 158847, + "start": 159360, + "end": 159361, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 25 }, "end": { - "line": 3950, + "line": 3958, "column": 26 } } @@ -547143,15 +550405,15 @@ "postfix": false, "binop": null }, - "start": 158848, - "end": 158849, + "start": 159362, + "end": 159363, "loc": { "start": { - "line": 3950, + "line": 3958, "column": 27 }, "end": { - "line": 3950, + "line": 3958, "column": 28 } } @@ -547171,15 +550433,15 @@ "updateContext": null }, "value": "this", - "start": 158862, - "end": 158866, + "start": 159376, + "end": 159380, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 12 }, "end": { - "line": 3951, + "line": 3959, "column": 16 } } @@ -547197,15 +550459,15 @@ "binop": null, "updateContext": null }, - "start": 158866, - "end": 158867, + "start": 159380, + "end": 159381, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 16 }, "end": { - "line": 3951, + "line": 3959, "column": 17 } } @@ -547223,15 +550485,15 @@ "binop": null }, "value": "scene", - "start": 158867, - "end": 158872, + "start": 159381, + "end": 159386, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 17 }, "end": { - "line": 3951, + "line": 3959, "column": 22 } } @@ -547249,15 +550511,15 @@ "binop": null, "updateContext": null }, - "start": 158872, - "end": 158873, + "start": 159386, + "end": 159387, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 22 }, "end": { - "line": 3951, + "line": 3959, "column": 23 } } @@ -547275,15 +550537,15 @@ "binop": null }, "value": "_deregisterModel", - "start": 158873, - "end": 158889, + "start": 159387, + "end": 159403, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 23 }, "end": { - "line": 3951, + "line": 3959, "column": 39 } } @@ -547300,15 +550562,15 @@ "postfix": false, "binop": null }, - "start": 158889, - "end": 158890, + "start": 159403, + "end": 159404, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 39 }, "end": { - "line": 3951, + "line": 3959, "column": 40 } } @@ -547328,15 +550590,15 @@ "updateContext": null }, "value": "this", - "start": 158890, - "end": 158894, + "start": 159404, + "end": 159408, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 40 }, "end": { - "line": 3951, + "line": 3959, "column": 44 } } @@ -547353,15 +550615,15 @@ "postfix": false, "binop": null }, - "start": 158894, - "end": 158895, + "start": 159408, + "end": 159409, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 44 }, "end": { - "line": 3951, + "line": 3959, "column": 45 } } @@ -547379,15 +550641,15 @@ "binop": null, "updateContext": null }, - "start": 158895, - "end": 158896, + "start": 159409, + "end": 159410, "loc": { "start": { - "line": 3951, + "line": 3959, "column": 45 }, "end": { - "line": 3951, + "line": 3959, "column": 46 } } @@ -547404,15 +550666,15 @@ "postfix": false, "binop": null }, - "start": 158905, - "end": 158906, + "start": 159419, + "end": 159420, "loc": { "start": { - "line": 3952, + "line": 3960, "column": 8 }, "end": { - "line": 3952, + "line": 3960, "column": 9 } } @@ -547430,15 +550692,15 @@ "binop": null }, "value": "putScratchMemory", - "start": 158915, - "end": 158931, + "start": 159429, + "end": 159445, "loc": { "start": { - "line": 3953, + "line": 3961, "column": 8 }, "end": { - "line": 3953, + "line": 3961, "column": 24 } } @@ -547455,15 +550717,15 @@ "postfix": false, "binop": null }, - "start": 158931, - "end": 158932, + "start": 159445, + "end": 159446, "loc": { "start": { - "line": 3953, + "line": 3961, "column": 24 }, "end": { - "line": 3953, + "line": 3961, "column": 25 } } @@ -547480,15 +550742,15 @@ "postfix": false, "binop": null }, - "start": 158932, - "end": 158933, + "start": 159446, + "end": 159447, "loc": { "start": { - "line": 3953, + "line": 3961, "column": 25 }, "end": { - "line": 3953, + "line": 3961, "column": 26 } } @@ -547506,15 +550768,15 @@ "binop": null, "updateContext": null }, - "start": 158933, - "end": 158934, + "start": 159447, + "end": 159448, "loc": { "start": { - "line": 3953, + "line": 3961, "column": 26 }, "end": { - "line": 3953, + "line": 3961, "column": 27 } } @@ -547534,15 +550796,15 @@ "updateContext": null }, "value": "super", - "start": 158943, - "end": 158948, + "start": 159457, + "end": 159462, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 8 }, "end": { - "line": 3954, + "line": 3962, "column": 13 } } @@ -547560,15 +550822,15 @@ "binop": null, "updateContext": null }, - "start": 158948, - "end": 158949, + "start": 159462, + "end": 159463, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 13 }, "end": { - "line": 3954, + "line": 3962, "column": 14 } } @@ -547586,15 +550848,15 @@ "binop": null }, "value": "destroy", - "start": 158949, - "end": 158956, + "start": 159463, + "end": 159470, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 14 }, "end": { - "line": 3954, + "line": 3962, "column": 21 } } @@ -547611,15 +550873,15 @@ "postfix": false, "binop": null }, - "start": 158956, - "end": 158957, + "start": 159470, + "end": 159471, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 21 }, "end": { - "line": 3954, + "line": 3962, "column": 22 } } @@ -547636,15 +550898,15 @@ "postfix": false, "binop": null }, - "start": 158957, - "end": 158958, + "start": 159471, + "end": 159472, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 22 }, "end": { - "line": 3954, + "line": 3962, "column": 23 } } @@ -547662,15 +550924,15 @@ "binop": null, "updateContext": null }, - "start": 158958, - "end": 158959, + "start": 159472, + "end": 159473, "loc": { "start": { - "line": 3954, + "line": 3962, "column": 23 }, "end": { - "line": 3954, + "line": 3962, "column": 24 } } @@ -547687,15 +550949,15 @@ "postfix": false, "binop": null }, - "start": 158964, - "end": 158965, + "start": 159478, + "end": 159479, "loc": { "start": { - "line": 3955, + "line": 3963, "column": 4 }, "end": { - "line": 3955, + "line": 3963, "column": 5 } } @@ -547712,15 +550974,15 @@ "postfix": false, "binop": null }, - "start": 158966, - "end": 158967, + "start": 159480, + "end": 159481, "loc": { "start": { - "line": 3956, + "line": 3964, "column": 0 }, "end": { - "line": 3956, + "line": 3964, "column": 1 } } @@ -547728,15 +550990,15 @@ { "type": "CommentBlock", "value": "*\n * This function applies two steps to the provided mesh geometry data:\n *\n * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`.\n *\n * - 2nd, it tries to do an optimization called `index rebucketting`\n *\n * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._\n *\n * - _for 32 bit indices, will try to demote them to 16 bit indices_\n * - _for 16 bit indices, will try to demote them to 8 bits indices_\n * - _8 bits indices are kept as-is_\n *\n * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry.\n *\n * The function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`.\n *\n * @param {object} geometry The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays.\n *\n * @param enableVertexWelding\n * @param enableIndexBucketing\n * @returns {object} The mesh information enrichened with `.buckets` key.\n ", - "start": 158970, - "end": 160183, + "start": 159484, + "end": 160697, "loc": { "start": { - "line": 3959, + "line": 3967, "column": 0 }, "end": { - "line": 3981, + "line": 3989, "column": 3 } } @@ -547755,15 +551017,15 @@ "binop": null }, "value": "function", - "start": 160184, - "end": 160192, + "start": 160698, + "end": 160706, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 0 }, "end": { - "line": 3982, + "line": 3990, "column": 8 } } @@ -547781,15 +551043,15 @@ "binop": null }, "value": "createDTXBuckets", - "start": 160193, - "end": 160209, + "start": 160707, + "end": 160723, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 9 }, "end": { - "line": 3982, + "line": 3990, "column": 25 } } @@ -547806,15 +551068,15 @@ "postfix": false, "binop": null }, - "start": 160209, - "end": 160210, + "start": 160723, + "end": 160724, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 25 }, "end": { - "line": 3982, + "line": 3990, "column": 26 } } @@ -547832,15 +551094,15 @@ "binop": null }, "value": "geometry", - "start": 160210, - "end": 160218, + "start": 160724, + "end": 160732, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 26 }, "end": { - "line": 3982, + "line": 3990, "column": 34 } } @@ -547858,15 +551120,15 @@ "binop": null, "updateContext": null }, - "start": 160218, - "end": 160219, + "start": 160732, + "end": 160733, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 34 }, "end": { - "line": 3982, + "line": 3990, "column": 35 } } @@ -547884,15 +551146,15 @@ "binop": null }, "value": "enableVertexWelding", - "start": 160220, - "end": 160239, + "start": 160734, + "end": 160753, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 36 }, "end": { - "line": 3982, + "line": 3990, "column": 55 } } @@ -547910,15 +551172,15 @@ "binop": null, "updateContext": null }, - "start": 160239, - "end": 160240, + "start": 160753, + "end": 160754, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 55 }, "end": { - "line": 3982, + "line": 3990, "column": 56 } } @@ -547936,15 +551198,15 @@ "binop": null }, "value": "enableIndexBucketing", - "start": 160241, - "end": 160261, + "start": 160755, + "end": 160775, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 57 }, "end": { - "line": 3982, + "line": 3990, "column": 77 } } @@ -547961,15 +551223,15 @@ "postfix": false, "binop": null }, - "start": 160261, - "end": 160262, + "start": 160775, + "end": 160776, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 77 }, "end": { - "line": 3982, + "line": 3990, "column": 78 } } @@ -547986,15 +551248,15 @@ "postfix": false, "binop": null }, - "start": 160263, - "end": 160264, + "start": 160777, + "end": 160778, "loc": { "start": { - "line": 3982, + "line": 3990, "column": 79 }, "end": { - "line": 3982, + "line": 3990, "column": 80 } } @@ -548014,15 +551276,15 @@ "updateContext": null }, "value": "let", - "start": 160269, - "end": 160272, + "start": 160783, + "end": 160786, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 4 }, "end": { - "line": 3983, + "line": 3991, "column": 7 } } @@ -548040,15 +551302,15 @@ "binop": null }, "value": "uniquePositionsCompressed", - "start": 160273, - "end": 160298, + "start": 160787, + "end": 160812, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 8 }, "end": { - "line": 3983, + "line": 3991, "column": 33 } } @@ -548066,15 +551328,15 @@ "binop": null, "updateContext": null }, - "start": 160298, - "end": 160299, + "start": 160812, + "end": 160813, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 33 }, "end": { - "line": 3983, + "line": 3991, "column": 34 } } @@ -548092,15 +551354,15 @@ "binop": null }, "value": "uniqueIndices", - "start": 160300, - "end": 160313, + "start": 160814, + "end": 160827, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 35 }, "end": { - "line": 3983, + "line": 3991, "column": 48 } } @@ -548118,15 +551380,15 @@ "binop": null, "updateContext": null }, - "start": 160313, - "end": 160314, + "start": 160827, + "end": 160828, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 48 }, "end": { - "line": 3983, + "line": 3991, "column": 49 } } @@ -548144,15 +551406,15 @@ "binop": null }, "value": "uniqueEdgeIndices", - "start": 160315, - "end": 160332, + "start": 160829, + "end": 160846, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 50 }, "end": { - "line": 3983, + "line": 3991, "column": 67 } } @@ -548170,15 +551432,15 @@ "binop": null, "updateContext": null }, - "start": 160332, - "end": 160333, + "start": 160846, + "end": 160847, "loc": { "start": { - "line": 3983, + "line": 3991, "column": 67 }, "end": { - "line": 3983, + "line": 3991, "column": 68 } } @@ -548198,15 +551460,15 @@ "updateContext": null }, "value": "if", - "start": 160338, - "end": 160340, + "start": 160852, + "end": 160854, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 4 }, "end": { - "line": 3984, + "line": 3992, "column": 6 } } @@ -548223,15 +551485,15 @@ "postfix": false, "binop": null }, - "start": 160341, - "end": 160342, + "start": 160855, + "end": 160856, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 7 }, "end": { - "line": 3984, + "line": 3992, "column": 8 } } @@ -548249,15 +551511,15 @@ "binop": null }, "value": "enableVertexWelding", - "start": 160342, - "end": 160361, + "start": 160856, + "end": 160875, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 8 }, "end": { - "line": 3984, + "line": 3992, "column": 27 } } @@ -548276,15 +551538,15 @@ "updateContext": null }, "value": "||", - "start": 160362, - "end": 160364, + "start": 160876, + "end": 160878, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 28 }, "end": { - "line": 3984, + "line": 3992, "column": 30 } } @@ -548302,15 +551564,15 @@ "binop": null }, "value": "enableIndexBucketing", - "start": 160365, - "end": 160385, + "start": 160879, + "end": 160899, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 31 }, "end": { - "line": 3984, + "line": 3992, "column": 51 } } @@ -548327,15 +551589,15 @@ "postfix": false, "binop": null }, - "start": 160385, - "end": 160386, + "start": 160899, + "end": 160900, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 51 }, "end": { - "line": 3984, + "line": 3992, "column": 52 } } @@ -548352,15 +551614,15 @@ "postfix": false, "binop": null }, - "start": 160387, - "end": 160388, + "start": 160901, + "end": 160902, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 53 }, "end": { - "line": 3984, + "line": 3992, "column": 54 } } @@ -548368,15 +551630,15 @@ { "type": "CommentLine", "value": " Expensive - careful!", - "start": 160389, - "end": 160412, + "start": 160903, + "end": 160926, "loc": { "start": { - "line": 3984, + "line": 3992, "column": 55 }, "end": { - "line": 3984, + "line": 3992, "column": 78 } } @@ -548394,15 +551656,15 @@ "binop": null, "updateContext": null }, - "start": 160421, - "end": 160422, + "start": 160935, + "end": 160936, "loc": { "start": { - "line": 3985, + "line": 3993, "column": 8 }, "end": { - "line": 3985, + "line": 3993, "column": 9 } } @@ -548420,15 +551682,15 @@ "binop": null }, "value": "uniquePositionsCompressed", - "start": 160435, - "end": 160460, + "start": 160949, + "end": 160974, "loc": { "start": { - "line": 3986, + "line": 3994, "column": 12 }, "end": { - "line": 3986, + "line": 3994, "column": 37 } } @@ -548446,15 +551708,15 @@ "binop": null, "updateContext": null }, - "start": 160460, - "end": 160461, + "start": 160974, + "end": 160975, "loc": { "start": { - "line": 3986, + "line": 3994, "column": 37 }, "end": { - "line": 3986, + "line": 3994, "column": 38 } } @@ -548472,15 +551734,15 @@ "binop": null }, "value": "uniqueIndices", - "start": 160474, - "end": 160487, + "start": 160988, + "end": 161001, "loc": { "start": { - "line": 3987, + "line": 3995, "column": 12 }, "end": { - "line": 3987, + "line": 3995, "column": 25 } } @@ -548498,15 +551760,15 @@ "binop": null, "updateContext": null }, - "start": 160487, - "end": 160488, + "start": 161001, + "end": 161002, "loc": { "start": { - "line": 3987, + "line": 3995, "column": 25 }, "end": { - "line": 3987, + "line": 3995, "column": 26 } } @@ -548524,15 +551786,15 @@ "binop": null }, "value": "uniqueEdgeIndices", - "start": 160501, - "end": 160518, + "start": 161015, + "end": 161032, "loc": { "start": { - "line": 3988, + "line": 3996, "column": 12 }, "end": { - "line": 3988, + "line": 3996, "column": 29 } } @@ -548550,15 +551812,15 @@ "binop": null, "updateContext": null }, - "start": 160518, - "end": 160519, + "start": 161032, + "end": 161033, "loc": { "start": { - "line": 3988, + "line": 3996, "column": 29 }, "end": { - "line": 3988, + "line": 3996, "column": 30 } } @@ -548576,15 +551838,15 @@ "binop": null, "updateContext": null }, - "start": 160528, - "end": 160529, + "start": 161042, + "end": 161043, "loc": { "start": { - "line": 3989, + "line": 3997, "column": 8 }, "end": { - "line": 3989, + "line": 3997, "column": 9 } } @@ -548603,15 +551865,15 @@ "updateContext": null }, "value": "=", - "start": 160530, - "end": 160531, + "start": 161044, + "end": 161045, "loc": { "start": { - "line": 3989, + "line": 3997, "column": 10 }, "end": { - "line": 3989, + "line": 3997, "column": 11 } } @@ -548629,15 +551891,15 @@ "binop": null }, "value": "uniquifyPositions", - "start": 160532, - "end": 160549, + "start": 161046, + "end": 161063, "loc": { "start": { - "line": 3989, + "line": 3997, "column": 12 }, "end": { - "line": 3989, + "line": 3997, "column": 29 } } @@ -548654,15 +551916,15 @@ "postfix": false, "binop": null }, - "start": 160549, - "end": 160550, + "start": 161063, + "end": 161064, "loc": { "start": { - "line": 3989, + "line": 3997, "column": 29 }, "end": { - "line": 3989, + "line": 3997, "column": 30 } } @@ -548679,15 +551941,15 @@ "postfix": false, "binop": null }, - "start": 160550, - "end": 160551, + "start": 161064, + "end": 161065, "loc": { "start": { - "line": 3989, + "line": 3997, "column": 30 }, "end": { - "line": 3989, + "line": 3997, "column": 31 } } @@ -548705,15 +551967,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 160564, - "end": 160583, + "start": 161078, + "end": 161097, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 12 }, "end": { - "line": 3990, + "line": 3998, "column": 31 } } @@ -548731,15 +551993,15 @@ "binop": null, "updateContext": null }, - "start": 160583, - "end": 160584, + "start": 161097, + "end": 161098, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 31 }, "end": { - "line": 3990, + "line": 3998, "column": 32 } } @@ -548757,15 +552019,15 @@ "binop": null }, "value": "geometry", - "start": 160585, - "end": 160593, + "start": 161099, + "end": 161107, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 33 }, "end": { - "line": 3990, + "line": 3998, "column": 41 } } @@ -548783,15 +552045,15 @@ "binop": null, "updateContext": null }, - "start": 160593, - "end": 160594, + "start": 161107, + "end": 161108, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 41 }, "end": { - "line": 3990, + "line": 3998, "column": 42 } } @@ -548809,15 +552071,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 160594, - "end": 160613, + "start": 161108, + "end": 161127, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 42 }, "end": { - "line": 3990, + "line": 3998, "column": 61 } } @@ -548835,15 +552097,15 @@ "binop": null, "updateContext": null }, - "start": 160613, - "end": 160614, + "start": 161127, + "end": 161128, "loc": { "start": { - "line": 3990, + "line": 3998, "column": 61 }, "end": { - "line": 3990, + "line": 3998, "column": 62 } } @@ -548861,15 +552123,15 @@ "binop": null }, "value": "indices", - "start": 160627, - "end": 160634, + "start": 161141, + "end": 161148, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 12 }, "end": { - "line": 3991, + "line": 3999, "column": 19 } } @@ -548887,15 +552149,15 @@ "binop": null, "updateContext": null }, - "start": 160634, - "end": 160635, + "start": 161148, + "end": 161149, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 19 }, "end": { - "line": 3991, + "line": 3999, "column": 20 } } @@ -548913,15 +552175,15 @@ "binop": null }, "value": "geometry", - "start": 160636, - "end": 160644, + "start": 161150, + "end": 161158, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 21 }, "end": { - "line": 3991, + "line": 3999, "column": 29 } } @@ -548939,15 +552201,15 @@ "binop": null, "updateContext": null }, - "start": 160644, - "end": 160645, + "start": 161158, + "end": 161159, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 29 }, "end": { - "line": 3991, + "line": 3999, "column": 30 } } @@ -548965,15 +552227,15 @@ "binop": null }, "value": "indices", - "start": 160645, - "end": 160652, + "start": 161159, + "end": 161166, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 30 }, "end": { - "line": 3991, + "line": 3999, "column": 37 } } @@ -548991,15 +552253,15 @@ "binop": null, "updateContext": null }, - "start": 160652, - "end": 160653, + "start": 161166, + "end": 161167, "loc": { "start": { - "line": 3991, + "line": 3999, "column": 37 }, "end": { - "line": 3991, + "line": 3999, "column": 38 } } @@ -549017,15 +552279,15 @@ "binop": null }, "value": "edgeIndices", - "start": 160666, - "end": 160677, + "start": 161180, + "end": 161191, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 12 }, "end": { - "line": 3992, + "line": 4000, "column": 23 } } @@ -549043,15 +552305,15 @@ "binop": null, "updateContext": null }, - "start": 160677, - "end": 160678, + "start": 161191, + "end": 161192, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 23 }, "end": { - "line": 3992, + "line": 4000, "column": 24 } } @@ -549069,15 +552331,15 @@ "binop": null }, "value": "geometry", - "start": 160679, - "end": 160687, + "start": 161193, + "end": 161201, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 25 }, "end": { - "line": 3992, + "line": 4000, "column": 33 } } @@ -549095,15 +552357,15 @@ "binop": null, "updateContext": null }, - "start": 160687, - "end": 160688, + "start": 161201, + "end": 161202, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 33 }, "end": { - "line": 3992, + "line": 4000, "column": 34 } } @@ -549121,15 +552383,15 @@ "binop": null }, "value": "edgeIndices", - "start": 160688, - "end": 160699, + "start": 161202, + "end": 161213, "loc": { "start": { - "line": 3992, + "line": 4000, "column": 34 }, "end": { - "line": 3992, + "line": 4000, "column": 45 } } @@ -549146,15 +552408,15 @@ "postfix": false, "binop": null }, - "start": 160708, - "end": 160709, + "start": 161222, + "end": 161223, "loc": { "start": { - "line": 3993, + "line": 4001, "column": 8 }, "end": { - "line": 3993, + "line": 4001, "column": 9 } } @@ -549171,15 +552433,15 @@ "postfix": false, "binop": null }, - "start": 160709, - "end": 160710, + "start": 161223, + "end": 161224, "loc": { "start": { - "line": 3993, + "line": 4001, "column": 9 }, "end": { - "line": 3993, + "line": 4001, "column": 10 } } @@ -549197,15 +552459,15 @@ "binop": null, "updateContext": null }, - "start": 160710, - "end": 160711, + "start": 161224, + "end": 161225, "loc": { "start": { - "line": 3993, + "line": 4001, "column": 10 }, "end": { - "line": 3993, + "line": 4001, "column": 11 } } @@ -549222,15 +552484,15 @@ "postfix": false, "binop": null }, - "start": 160716, - "end": 160717, + "start": 161230, + "end": 161231, "loc": { "start": { - "line": 3994, + "line": 4002, "column": 4 }, "end": { - "line": 3994, + "line": 4002, "column": 5 } } @@ -549250,15 +552512,15 @@ "updateContext": null }, "value": "else", - "start": 160718, - "end": 160722, + "start": 161232, + "end": 161236, "loc": { "start": { - "line": 3994, + "line": 4002, "column": 6 }, "end": { - "line": 3994, + "line": 4002, "column": 10 } } @@ -549275,15 +552537,15 @@ "postfix": false, "binop": null }, - "start": 160723, - "end": 160724, + "start": 161237, + "end": 161238, "loc": { "start": { - "line": 3994, + "line": 4002, "column": 11 }, "end": { - "line": 3994, + "line": 4002, "column": 12 } } @@ -549301,15 +552563,15 @@ "binop": null }, "value": "uniquePositionsCompressed", - "start": 160733, - "end": 160758, + "start": 161247, + "end": 161272, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 8 }, "end": { - "line": 3995, + "line": 4003, "column": 33 } } @@ -549328,15 +552590,15 @@ "updateContext": null }, "value": "=", - "start": 160759, - "end": 160760, + "start": 161273, + "end": 161274, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 34 }, "end": { - "line": 3995, + "line": 4003, "column": 35 } } @@ -549354,15 +552616,15 @@ "binop": null }, "value": "geometry", - "start": 160761, - "end": 160769, + "start": 161275, + "end": 161283, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 36 }, "end": { - "line": 3995, + "line": 4003, "column": 44 } } @@ -549380,15 +552642,15 @@ "binop": null, "updateContext": null }, - "start": 160769, - "end": 160770, + "start": 161283, + "end": 161284, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 44 }, "end": { - "line": 3995, + "line": 4003, "column": 45 } } @@ -549406,15 +552668,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 160770, - "end": 160789, + "start": 161284, + "end": 161303, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 45 }, "end": { - "line": 3995, + "line": 4003, "column": 64 } } @@ -549432,15 +552694,15 @@ "binop": null, "updateContext": null }, - "start": 160789, - "end": 160790, + "start": 161303, + "end": 161304, "loc": { "start": { - "line": 3995, + "line": 4003, "column": 64 }, "end": { - "line": 3995, + "line": 4003, "column": 65 } } @@ -549458,15 +552720,15 @@ "binop": null }, "value": "uniqueIndices", - "start": 160799, - "end": 160812, + "start": 161313, + "end": 161326, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 8 }, "end": { - "line": 3996, + "line": 4004, "column": 21 } } @@ -549485,15 +552747,15 @@ "updateContext": null }, "value": "=", - "start": 160813, - "end": 160814, + "start": 161327, + "end": 161328, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 22 }, "end": { - "line": 3996, + "line": 4004, "column": 23 } } @@ -549511,15 +552773,15 @@ "binop": null }, "value": "geometry", - "start": 160815, - "end": 160823, + "start": 161329, + "end": 161337, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 24 }, "end": { - "line": 3996, + "line": 4004, "column": 32 } } @@ -549537,15 +552799,15 @@ "binop": null, "updateContext": null }, - "start": 160823, - "end": 160824, + "start": 161337, + "end": 161338, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 32 }, "end": { - "line": 3996, + "line": 4004, "column": 33 } } @@ -549563,15 +552825,15 @@ "binop": null }, "value": "indices", - "start": 160824, - "end": 160831, + "start": 161338, + "end": 161345, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 33 }, "end": { - "line": 3996, + "line": 4004, "column": 40 } } @@ -549589,15 +552851,15 @@ "binop": null, "updateContext": null }, - "start": 160831, - "end": 160832, + "start": 161345, + "end": 161346, "loc": { "start": { - "line": 3996, + "line": 4004, "column": 40 }, "end": { - "line": 3996, + "line": 4004, "column": 41 } } @@ -549615,15 +552877,15 @@ "binop": null }, "value": "uniqueEdgeIndices", - "start": 160841, - "end": 160858, + "start": 161355, + "end": 161372, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 8 }, "end": { - "line": 3997, + "line": 4005, "column": 25 } } @@ -549642,15 +552904,15 @@ "updateContext": null }, "value": "=", - "start": 160859, - "end": 160860, + "start": 161373, + "end": 161374, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 26 }, "end": { - "line": 3997, + "line": 4005, "column": 27 } } @@ -549668,15 +552930,15 @@ "binop": null }, "value": "geometry", - "start": 160861, - "end": 160869, + "start": 161375, + "end": 161383, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 28 }, "end": { - "line": 3997, + "line": 4005, "column": 36 } } @@ -549694,15 +552956,15 @@ "binop": null, "updateContext": null }, - "start": 160869, - "end": 160870, + "start": 161383, + "end": 161384, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 36 }, "end": { - "line": 3997, + "line": 4005, "column": 37 } } @@ -549720,15 +552982,15 @@ "binop": null }, "value": "edgeIndices", - "start": 160870, - "end": 160881, + "start": 161384, + "end": 161395, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 37 }, "end": { - "line": 3997, + "line": 4005, "column": 48 } } @@ -549746,15 +553008,15 @@ "binop": null, "updateContext": null }, - "start": 160881, - "end": 160882, + "start": 161395, + "end": 161396, "loc": { "start": { - "line": 3997, + "line": 4005, "column": 48 }, "end": { - "line": 3997, + "line": 4005, "column": 49 } } @@ -549771,15 +553033,15 @@ "postfix": false, "binop": null }, - "start": 160887, - "end": 160888, + "start": 161401, + "end": 161402, "loc": { "start": { - "line": 3998, + "line": 4006, "column": 4 }, "end": { - "line": 3998, + "line": 4006, "column": 5 } } @@ -549799,15 +553061,15 @@ "updateContext": null }, "value": "let", - "start": 160893, - "end": 160896, + "start": 161407, + "end": 161410, "loc": { "start": { - "line": 3999, + "line": 4007, "column": 4 }, "end": { - "line": 3999, + "line": 4007, "column": 7 } } @@ -549825,15 +553087,15 @@ "binop": null }, "value": "buckets", - "start": 160897, - "end": 160904, + "start": 161411, + "end": 161418, "loc": { "start": { - "line": 3999, + "line": 4007, "column": 8 }, "end": { - "line": 3999, + "line": 4007, "column": 15 } } @@ -549851,15 +553113,15 @@ "binop": null, "updateContext": null }, - "start": 160904, - "end": 160905, + "start": 161418, + "end": 161419, "loc": { "start": { - "line": 3999, + "line": 4007, "column": 15 }, "end": { - "line": 3999, + "line": 4007, "column": 16 } } @@ -549879,15 +553141,15 @@ "updateContext": null }, "value": "if", - "start": 160910, - "end": 160912, + "start": 161424, + "end": 161426, "loc": { "start": { - "line": 4000, + "line": 4008, "column": 4 }, "end": { - "line": 4000, + "line": 4008, "column": 6 } } @@ -549904,15 +553166,15 @@ "postfix": false, "binop": null }, - "start": 160913, - "end": 160914, + "start": 161427, + "end": 161428, "loc": { "start": { - "line": 4000, + "line": 4008, "column": 7 }, "end": { - "line": 4000, + "line": 4008, "column": 8 } } @@ -549930,15 +553192,15 @@ "binop": null }, "value": "enableIndexBucketing", - "start": 160914, - "end": 160934, + "start": 161428, + "end": 161448, "loc": { "start": { - "line": 4000, + "line": 4008, "column": 8 }, "end": { - "line": 4000, + "line": 4008, "column": 28 } } @@ -549955,15 +553217,15 @@ "postfix": false, "binop": null }, - "start": 160934, - "end": 160935, + "start": 161448, + "end": 161449, "loc": { "start": { - "line": 4000, + "line": 4008, "column": 28 }, "end": { - "line": 4000, + "line": 4008, "column": 29 } } @@ -549980,15 +553242,15 @@ "postfix": false, "binop": null }, - "start": 160936, - "end": 160937, + "start": 161450, + "end": 161451, "loc": { "start": { - "line": 4000, + "line": 4008, "column": 30 }, "end": { - "line": 4000, + "line": 4008, "column": 31 } } @@ -550008,15 +553270,15 @@ "updateContext": null }, "value": "let", - "start": 160946, - "end": 160949, + "start": 161460, + "end": 161463, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 8 }, "end": { - "line": 4001, + "line": 4009, "column": 11 } } @@ -550034,15 +553296,15 @@ "binop": null }, "value": "numUniquePositions", - "start": 160950, - "end": 160968, + "start": 161464, + "end": 161482, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 12 }, "end": { - "line": 4001, + "line": 4009, "column": 30 } } @@ -550061,15 +553323,15 @@ "updateContext": null }, "value": "=", - "start": 160969, - "end": 160970, + "start": 161483, + "end": 161484, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 31 }, "end": { - "line": 4001, + "line": 4009, "column": 32 } } @@ -550087,15 +553349,15 @@ "binop": null }, "value": "uniquePositionsCompressed", - "start": 160971, - "end": 160996, + "start": 161485, + "end": 161510, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 33 }, "end": { - "line": 4001, + "line": 4009, "column": 58 } } @@ -550113,15 +553375,15 @@ "binop": null, "updateContext": null }, - "start": 160996, - "end": 160997, + "start": 161510, + "end": 161511, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 58 }, "end": { - "line": 4001, + "line": 4009, "column": 59 } } @@ -550139,15 +553401,15 @@ "binop": null }, "value": "length", - "start": 160997, - "end": 161003, + "start": 161511, + "end": 161517, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 59 }, "end": { - "line": 4001, + "line": 4009, "column": 65 } } @@ -550166,15 +553428,15 @@ "updateContext": null }, "value": "/", - "start": 161004, - "end": 161005, + "start": 161518, + "end": 161519, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 66 }, "end": { - "line": 4001, + "line": 4009, "column": 67 } } @@ -550193,15 +553455,15 @@ "updateContext": null }, "value": 3, - "start": 161006, - "end": 161007, + "start": 161520, + "end": 161521, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 68 }, "end": { - "line": 4001, + "line": 4009, "column": 69 } } @@ -550219,15 +553481,15 @@ "binop": null, "updateContext": null }, - "start": 161007, - "end": 161008, + "start": 161521, + "end": 161522, "loc": { "start": { - "line": 4001, + "line": 4009, "column": 69 }, "end": { - "line": 4001, + "line": 4009, "column": 70 } } @@ -550245,15 +553507,15 @@ "binop": null }, "value": "buckets", - "start": 161017, - "end": 161024, + "start": 161531, + "end": 161538, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 8 }, "end": { - "line": 4002, + "line": 4010, "column": 15 } } @@ -550272,15 +553534,15 @@ "updateContext": null }, "value": "=", - "start": 161025, - "end": 161026, + "start": 161539, + "end": 161540, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 16 }, "end": { - "line": 4002, + "line": 4010, "column": 17 } } @@ -550298,15 +553560,15 @@ "binop": null }, "value": "rebucketPositions", - "start": 161027, - "end": 161044, + "start": 161541, + "end": 161558, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 18 }, "end": { - "line": 4002, + "line": 4010, "column": 35 } } @@ -550323,15 +553585,15 @@ "postfix": false, "binop": null }, - "start": 161044, - "end": 161045, + "start": 161558, + "end": 161559, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 35 }, "end": { - "line": 4002, + "line": 4010, "column": 36 } } @@ -550348,15 +553610,15 @@ "postfix": false, "binop": null }, - "start": 161045, - "end": 161046, + "start": 161559, + "end": 161560, "loc": { "start": { - "line": 4002, + "line": 4010, "column": 36 }, "end": { - "line": 4002, + "line": 4010, "column": 37 } } @@ -550374,15 +553636,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 161063, - "end": 161082, + "start": 161577, + "end": 161596, "loc": { "start": { - "line": 4003, + "line": 4011, "column": 16 }, "end": { - "line": 4003, + "line": 4011, "column": 35 } } @@ -550400,15 +553662,15 @@ "binop": null, "updateContext": null }, - "start": 161082, - "end": 161083, + "start": 161596, + "end": 161597, "loc": { "start": { - "line": 4003, + "line": 4011, "column": 35 }, "end": { - "line": 4003, + "line": 4011, "column": 36 } } @@ -550426,15 +553688,15 @@ "binop": null }, "value": "uniquePositionsCompressed", - "start": 161084, - "end": 161109, + "start": 161598, + "end": 161623, "loc": { "start": { - "line": 4003, + "line": 4011, "column": 37 }, "end": { - "line": 4003, + "line": 4011, "column": 62 } } @@ -550452,15 +553714,15 @@ "binop": null, "updateContext": null }, - "start": 161109, - "end": 161110, + "start": 161623, + "end": 161624, "loc": { "start": { - "line": 4003, + "line": 4011, "column": 62 }, "end": { - "line": 4003, + "line": 4011, "column": 63 } } @@ -550478,15 +553740,15 @@ "binop": null }, "value": "indices", - "start": 161127, - "end": 161134, + "start": 161641, + "end": 161648, "loc": { "start": { - "line": 4004, + "line": 4012, "column": 16 }, "end": { - "line": 4004, + "line": 4012, "column": 23 } } @@ -550504,15 +553766,15 @@ "binop": null, "updateContext": null }, - "start": 161134, - "end": 161135, + "start": 161648, + "end": 161649, "loc": { "start": { - "line": 4004, + "line": 4012, "column": 23 }, "end": { - "line": 4004, + "line": 4012, "column": 24 } } @@ -550530,15 +553792,15 @@ "binop": null }, "value": "uniqueIndices", - "start": 161136, - "end": 161149, + "start": 161650, + "end": 161663, "loc": { "start": { - "line": 4004, + "line": 4012, "column": 25 }, "end": { - "line": 4004, + "line": 4012, "column": 38 } } @@ -550556,15 +553818,15 @@ "binop": null, "updateContext": null }, - "start": 161149, - "end": 161150, + "start": 161663, + "end": 161664, "loc": { "start": { - "line": 4004, + "line": 4012, "column": 38 }, "end": { - "line": 4004, + "line": 4012, "column": 39 } } @@ -550582,15 +553844,15 @@ "binop": null }, "value": "edgeIndices", - "start": 161167, - "end": 161178, + "start": 161681, + "end": 161692, "loc": { "start": { - "line": 4005, + "line": 4013, "column": 16 }, "end": { - "line": 4005, + "line": 4013, "column": 27 } } @@ -550608,15 +553870,15 @@ "binop": null, "updateContext": null }, - "start": 161178, - "end": 161179, + "start": 161692, + "end": 161693, "loc": { "start": { - "line": 4005, + "line": 4013, "column": 27 }, "end": { - "line": 4005, + "line": 4013, "column": 28 } } @@ -550634,15 +553896,15 @@ "binop": null }, "value": "uniqueEdgeIndices", - "start": 161180, - "end": 161197, + "start": 161694, + "end": 161711, "loc": { "start": { - "line": 4005, + "line": 4013, "column": 29 }, "end": { - "line": 4005, + "line": 4013, "column": 46 } } @@ -550660,15 +553922,15 @@ "binop": null, "updateContext": null }, - "start": 161197, - "end": 161198, + "start": 161711, + "end": 161712, "loc": { "start": { - "line": 4005, + "line": 4013, "column": 46 }, "end": { - "line": 4005, + "line": 4013, "column": 47 } } @@ -550685,15 +553947,15 @@ "postfix": false, "binop": null }, - "start": 161211, - "end": 161212, + "start": 161725, + "end": 161726, "loc": { "start": { - "line": 4006, + "line": 4014, "column": 12 }, "end": { - "line": 4006, + "line": 4014, "column": 13 } } @@ -550711,15 +553973,15 @@ "binop": null, "updateContext": null }, - "start": 161212, - "end": 161213, + "start": 161726, + "end": 161727, "loc": { "start": { - "line": 4006, + "line": 4014, "column": 13 }, "end": { - "line": 4006, + "line": 4014, "column": 14 } } @@ -550736,15 +553998,15 @@ "postfix": false, "binop": null }, - "start": 161226, - "end": 161227, + "start": 161740, + "end": 161741, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 12 }, "end": { - "line": 4007, + "line": 4015, "column": 13 } } @@ -550762,15 +554024,15 @@ "binop": null }, "value": "numUniquePositions", - "start": 161227, - "end": 161245, + "start": 161741, + "end": 161759, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 13 }, "end": { - "line": 4007, + "line": 4015, "column": 31 } } @@ -550789,15 +554051,15 @@ "updateContext": null }, "value": ">", - "start": 161246, - "end": 161247, + "start": 161760, + "end": 161761, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 32 }, "end": { - "line": 4007, + "line": 4015, "column": 33 } } @@ -550814,15 +554076,15 @@ "postfix": false, "binop": null }, - "start": 161248, - "end": 161249, + "start": 161762, + "end": 161763, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 34 }, "end": { - "line": 4007, + "line": 4015, "column": 35 } } @@ -550841,15 +554103,15 @@ "updateContext": null }, "value": 1, - "start": 161249, - "end": 161250, + "start": 161763, + "end": 161764, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 35 }, "end": { - "line": 4007, + "line": 4015, "column": 36 } } @@ -550868,15 +554130,15 @@ "updateContext": null }, "value": "<<", - "start": 161251, - "end": 161253, + "start": 161765, + "end": 161767, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 37 }, "end": { - "line": 4007, + "line": 4015, "column": 39 } } @@ -550895,15 +554157,15 @@ "updateContext": null }, "value": 16, - "start": 161254, - "end": 161256, + "start": 161768, + "end": 161770, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 40 }, "end": { - "line": 4007, + "line": 4015, "column": 42 } } @@ -550920,15 +554182,15 @@ "postfix": false, "binop": null }, - "start": 161256, - "end": 161257, + "start": 161770, + "end": 161771, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 42 }, "end": { - "line": 4007, + "line": 4015, "column": 43 } } @@ -550945,15 +554207,15 @@ "postfix": false, "binop": null }, - "start": 161257, - "end": 161258, + "start": 161771, + "end": 161772, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 43 }, "end": { - "line": 4007, + "line": 4015, "column": 44 } } @@ -550971,15 +554233,15 @@ "binop": null, "updateContext": null }, - "start": 161259, - "end": 161260, + "start": 161773, + "end": 161774, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 45 }, "end": { - "line": 4007, + "line": 4015, "column": 46 } } @@ -550998,15 +554260,15 @@ "updateContext": null }, "value": 16, - "start": 161261, - "end": 161263, + "start": 161775, + "end": 161777, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 47 }, "end": { - "line": 4007, + "line": 4015, "column": 49 } } @@ -551024,15 +554286,15 @@ "binop": null, "updateContext": null }, - "start": 161264, - "end": 161265, + "start": 161778, + "end": 161779, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 50 }, "end": { - "line": 4007, + "line": 4015, "column": 51 } } @@ -551051,15 +554313,15 @@ "updateContext": null }, "value": 8, - "start": 161266, - "end": 161267, + "start": 161780, + "end": 161781, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 52 }, "end": { - "line": 4007, + "line": 4015, "column": 53 } } @@ -551077,15 +554339,15 @@ "binop": null, "updateContext": null }, - "start": 161267, - "end": 161268, + "start": 161781, + "end": 161782, "loc": { "start": { - "line": 4007, + "line": 4015, "column": 53 }, "end": { - "line": 4007, + "line": 4015, "column": 54 } } @@ -551093,15 +554355,15 @@ { "type": "CommentLine", "value": " true", - "start": 161281, - "end": 161288, + "start": 161795, + "end": 161802, "loc": { "start": { - "line": 4008, + "line": 4016, "column": 12 }, "end": { - "line": 4008, + "line": 4016, "column": 19 } } @@ -551118,15 +554380,15 @@ "postfix": false, "binop": null }, - "start": 161297, - "end": 161298, + "start": 161811, + "end": 161812, "loc": { "start": { - "line": 4009, + "line": 4017, "column": 8 }, "end": { - "line": 4009, + "line": 4017, "column": 9 } } @@ -551144,15 +554406,15 @@ "binop": null, "updateContext": null }, - "start": 161298, - "end": 161299, + "start": 161812, + "end": 161813, "loc": { "start": { - "line": 4009, + "line": 4017, "column": 9 }, "end": { - "line": 4009, + "line": 4017, "column": 10 } } @@ -551169,15 +554431,15 @@ "postfix": false, "binop": null }, - "start": 161304, - "end": 161305, + "start": 161818, + "end": 161819, "loc": { "start": { - "line": 4010, + "line": 4018, "column": 4 }, "end": { - "line": 4010, + "line": 4018, "column": 5 } } @@ -551197,15 +554459,15 @@ "updateContext": null }, "value": "else", - "start": 161306, - "end": 161310, + "start": 161820, + "end": 161824, "loc": { "start": { - "line": 4010, + "line": 4018, "column": 6 }, "end": { - "line": 4010, + "line": 4018, "column": 10 } } @@ -551222,15 +554484,15 @@ "postfix": false, "binop": null }, - "start": 161311, - "end": 161312, + "start": 161825, + "end": 161826, "loc": { "start": { - "line": 4010, + "line": 4018, "column": 11 }, "end": { - "line": 4010, + "line": 4018, "column": 12 } } @@ -551248,15 +554510,15 @@ "binop": null }, "value": "buckets", - "start": 161321, - "end": 161328, + "start": 161835, + "end": 161842, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 8 }, "end": { - "line": 4011, + "line": 4019, "column": 15 } } @@ -551275,15 +554537,15 @@ "updateContext": null }, "value": "=", - "start": 161329, - "end": 161330, + "start": 161843, + "end": 161844, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 16 }, "end": { - "line": 4011, + "line": 4019, "column": 17 } } @@ -551301,15 +554563,15 @@ "binop": null, "updateContext": null }, - "start": 161331, - "end": 161332, + "start": 161845, + "end": 161846, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 18 }, "end": { - "line": 4011, + "line": 4019, "column": 19 } } @@ -551326,15 +554588,15 @@ "postfix": false, "binop": null }, - "start": 161332, - "end": 161333, + "start": 161846, + "end": 161847, "loc": { "start": { - "line": 4011, + "line": 4019, "column": 19 }, "end": { - "line": 4011, + "line": 4019, "column": 20 } } @@ -551352,15 +554614,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 161346, - "end": 161365, + "start": 161860, + "end": 161879, "loc": { "start": { - "line": 4012, + "line": 4020, "column": 12 }, "end": { - "line": 4012, + "line": 4020, "column": 31 } } @@ -551378,15 +554640,15 @@ "binop": null, "updateContext": null }, - "start": 161365, - "end": 161366, + "start": 161879, + "end": 161880, "loc": { "start": { - "line": 4012, + "line": 4020, "column": 31 }, "end": { - "line": 4012, + "line": 4020, "column": 32 } } @@ -551404,15 +554666,15 @@ "binop": null }, "value": "uniquePositionsCompressed", - "start": 161367, - "end": 161392, + "start": 161881, + "end": 161906, "loc": { "start": { - "line": 4012, + "line": 4020, "column": 33 }, "end": { - "line": 4012, + "line": 4020, "column": 58 } } @@ -551430,15 +554692,15 @@ "binop": null, "updateContext": null }, - "start": 161392, - "end": 161393, + "start": 161906, + "end": 161907, "loc": { "start": { - "line": 4012, + "line": 4020, "column": 58 }, "end": { - "line": 4012, + "line": 4020, "column": 59 } } @@ -551456,15 +554718,15 @@ "binop": null }, "value": "indices", - "start": 161406, - "end": 161413, + "start": 161920, + "end": 161927, "loc": { "start": { - "line": 4013, + "line": 4021, "column": 12 }, "end": { - "line": 4013, + "line": 4021, "column": 19 } } @@ -551482,15 +554744,15 @@ "binop": null, "updateContext": null }, - "start": 161413, - "end": 161414, + "start": 161927, + "end": 161928, "loc": { "start": { - "line": 4013, + "line": 4021, "column": 19 }, "end": { - "line": 4013, + "line": 4021, "column": 20 } } @@ -551508,15 +554770,15 @@ "binop": null }, "value": "uniqueIndices", - "start": 161415, - "end": 161428, + "start": 161929, + "end": 161942, "loc": { "start": { - "line": 4013, + "line": 4021, "column": 21 }, "end": { - "line": 4013, + "line": 4021, "column": 34 } } @@ -551534,15 +554796,15 @@ "binop": null, "updateContext": null }, - "start": 161428, - "end": 161429, + "start": 161942, + "end": 161943, "loc": { "start": { - "line": 4013, + "line": 4021, "column": 34 }, "end": { - "line": 4013, + "line": 4021, "column": 35 } } @@ -551560,15 +554822,15 @@ "binop": null }, "value": "edgeIndices", - "start": 161442, - "end": 161453, + "start": 161956, + "end": 161967, "loc": { "start": { - "line": 4014, + "line": 4022, "column": 12 }, "end": { - "line": 4014, + "line": 4022, "column": 23 } } @@ -551586,15 +554848,15 @@ "binop": null, "updateContext": null }, - "start": 161453, - "end": 161454, + "start": 161967, + "end": 161968, "loc": { "start": { - "line": 4014, + "line": 4022, "column": 23 }, "end": { - "line": 4014, + "line": 4022, "column": 24 } } @@ -551612,15 +554874,15 @@ "binop": null }, "value": "uniqueEdgeIndices", - "start": 161455, - "end": 161472, + "start": 161969, + "end": 161986, "loc": { "start": { - "line": 4014, + "line": 4022, "column": 25 }, "end": { - "line": 4014, + "line": 4022, "column": 42 } } @@ -551638,15 +554900,15 @@ "binop": null, "updateContext": null }, - "start": 161472, - "end": 161473, + "start": 161986, + "end": 161987, "loc": { "start": { - "line": 4014, + "line": 4022, "column": 42 }, "end": { - "line": 4014, + "line": 4022, "column": 43 } } @@ -551663,15 +554925,15 @@ "postfix": false, "binop": null }, - "start": 161482, - "end": 161483, + "start": 161996, + "end": 161997, "loc": { "start": { - "line": 4015, + "line": 4023, "column": 8 }, "end": { - "line": 4015, + "line": 4023, "column": 9 } } @@ -551689,15 +554951,15 @@ "binop": null, "updateContext": null }, - "start": 161483, - "end": 161484, + "start": 161997, + "end": 161998, "loc": { "start": { - "line": 4015, + "line": 4023, "column": 9 }, "end": { - "line": 4015, + "line": 4023, "column": 10 } } @@ -551715,15 +554977,15 @@ "binop": null, "updateContext": null }, - "start": 161484, - "end": 161485, + "start": 161998, + "end": 161999, "loc": { "start": { - "line": 4015, + "line": 4023, "column": 10 }, "end": { - "line": 4015, + "line": 4023, "column": 11 } } @@ -551740,15 +555002,15 @@ "postfix": false, "binop": null }, - "start": 161490, - "end": 161491, + "start": 162004, + "end": 162005, "loc": { "start": { - "line": 4016, + "line": 4024, "column": 4 }, "end": { - "line": 4016, + "line": 4024, "column": 5 } } @@ -551768,15 +555030,15 @@ "updateContext": null }, "value": "return", - "start": 161496, - "end": 161502, + "start": 162010, + "end": 162016, "loc": { "start": { - "line": 4017, + "line": 4025, "column": 4 }, "end": { - "line": 4017, + "line": 4025, "column": 10 } } @@ -551794,15 +555056,15 @@ "binop": null }, "value": "buckets", - "start": 161503, - "end": 161510, + "start": 162017, + "end": 162024, "loc": { "start": { - "line": 4017, + "line": 4025, "column": 11 }, "end": { - "line": 4017, + "line": 4025, "column": 18 } } @@ -551820,15 +555082,15 @@ "binop": null, "updateContext": null }, - "start": 161510, - "end": 161511, + "start": 162024, + "end": 162025, "loc": { "start": { - "line": 4017, + "line": 4025, "column": 18 }, "end": { - "line": 4017, + "line": 4025, "column": 19 } } @@ -551845,15 +555107,15 @@ "postfix": false, "binop": null }, - "start": 161512, - "end": 161513, + "start": 162026, + "end": 162027, "loc": { "start": { - "line": 4018, + "line": 4026, "column": 0 }, "end": { - "line": 4018, + "line": 4026, "column": 1 } } @@ -551872,15 +555134,15 @@ "binop": null }, "value": "function", - "start": 161515, - "end": 161523, + "start": 162029, + "end": 162037, "loc": { "start": { - "line": 4020, + "line": 4028, "column": 0 }, "end": { - "line": 4020, + "line": 4028, "column": 8 } } @@ -551898,15 +555160,15 @@ "binop": null }, "value": "createGeometryOBB", - "start": 161525, - "end": 161542, + "start": 162039, + "end": 162056, "loc": { "start": { - "line": 4022, + "line": 4030, "column": 0 }, "end": { - "line": 4022, + "line": 4030, "column": 17 } } @@ -551923,15 +555185,15 @@ "postfix": false, "binop": null }, - "start": 161542, - "end": 161543, + "start": 162056, + "end": 162057, "loc": { "start": { - "line": 4022, + "line": 4030, "column": 17 }, "end": { - "line": 4022, + "line": 4030, "column": 18 } } @@ -551949,15 +555211,15 @@ "binop": null }, "value": "geometry", - "start": 161543, - "end": 161551, + "start": 162057, + "end": 162065, "loc": { "start": { - "line": 4022, + "line": 4030, "column": 18 }, "end": { - "line": 4022, + "line": 4030, "column": 26 } } @@ -551974,15 +555236,15 @@ "postfix": false, "binop": null }, - "start": 161551, - "end": 161552, + "start": 162065, + "end": 162066, "loc": { "start": { - "line": 4022, + "line": 4030, "column": 26 }, "end": { - "line": 4022, + "line": 4030, "column": 27 } } @@ -551999,15 +555261,15 @@ "postfix": false, "binop": null }, - "start": 161553, - "end": 161554, + "start": 162067, + "end": 162068, "loc": { "start": { - "line": 4022, + "line": 4030, "column": 28 }, "end": { - "line": 4022, + "line": 4030, "column": 29 } } @@ -552025,15 +555287,15 @@ "binop": null }, "value": "geometry", - "start": 161559, - "end": 161567, + "start": 162073, + "end": 162081, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 4 }, "end": { - "line": 4023, + "line": 4031, "column": 12 } } @@ -552051,15 +555313,15 @@ "binop": null, "updateContext": null }, - "start": 161567, - "end": 161568, + "start": 162081, + "end": 162082, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 12 }, "end": { - "line": 4023, + "line": 4031, "column": 13 } } @@ -552077,15 +555339,15 @@ "binop": null }, "value": "obb", - "start": 161568, - "end": 161571, + "start": 162082, + "end": 162085, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 13 }, "end": { - "line": 4023, + "line": 4031, "column": 16 } } @@ -552104,15 +555366,15 @@ "updateContext": null }, "value": "=", - "start": 161572, - "end": 161573, + "start": 162086, + "end": 162087, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 17 }, "end": { - "line": 4023, + "line": 4031, "column": 18 } } @@ -552130,15 +555392,15 @@ "binop": null }, "value": "math", - "start": 161574, - "end": 161578, + "start": 162088, + "end": 162092, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 19 }, "end": { - "line": 4023, + "line": 4031, "column": 23 } } @@ -552156,15 +555418,15 @@ "binop": null, "updateContext": null }, - "start": 161578, - "end": 161579, + "start": 162092, + "end": 162093, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 23 }, "end": { - "line": 4023, + "line": 4031, "column": 24 } } @@ -552182,15 +555444,15 @@ "binop": null }, "value": "OBB3", - "start": 161579, - "end": 161583, + "start": 162093, + "end": 162097, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 24 }, "end": { - "line": 4023, + "line": 4031, "column": 28 } } @@ -552207,15 +555469,15 @@ "postfix": false, "binop": null }, - "start": 161583, - "end": 161584, + "start": 162097, + "end": 162098, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 28 }, "end": { - "line": 4023, + "line": 4031, "column": 29 } } @@ -552232,15 +555494,15 @@ "postfix": false, "binop": null }, - "start": 161584, - "end": 161585, + "start": 162098, + "end": 162099, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 29 }, "end": { - "line": 4023, + "line": 4031, "column": 30 } } @@ -552258,15 +555520,15 @@ "binop": null, "updateContext": null }, - "start": 161585, - "end": 161586, + "start": 162099, + "end": 162100, "loc": { "start": { - "line": 4023, + "line": 4031, "column": 30 }, "end": { - "line": 4023, + "line": 4031, "column": 31 } } @@ -552286,15 +555548,15 @@ "updateContext": null }, "value": "if", - "start": 161591, - "end": 161593, + "start": 162105, + "end": 162107, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 4 }, "end": { - "line": 4024, + "line": 4032, "column": 6 } } @@ -552311,15 +555573,15 @@ "postfix": false, "binop": null }, - "start": 161594, - "end": 161595, + "start": 162108, + "end": 162109, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 7 }, "end": { - "line": 4024, + "line": 4032, "column": 8 } } @@ -552337,15 +555599,15 @@ "binop": null }, "value": "geometry", - "start": 161595, - "end": 161603, + "start": 162109, + "end": 162117, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 8 }, "end": { - "line": 4024, + "line": 4032, "column": 16 } } @@ -552363,15 +555625,15 @@ "binop": null, "updateContext": null }, - "start": 161603, - "end": 161604, + "start": 162117, + "end": 162118, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 16 }, "end": { - "line": 4024, + "line": 4032, "column": 17 } } @@ -552389,15 +555651,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 161604, - "end": 161623, + "start": 162118, + "end": 162137, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 17 }, "end": { - "line": 4024, + "line": 4032, "column": 36 } } @@ -552416,15 +555678,15 @@ "updateContext": null }, "value": "&&", - "start": 161624, - "end": 161626, + "start": 162138, + "end": 162140, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 37 }, "end": { - "line": 4024, + "line": 4032, "column": 39 } } @@ -552442,15 +555704,15 @@ "binop": null }, "value": "geometry", - "start": 161627, - "end": 161635, + "start": 162141, + "end": 162149, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 40 }, "end": { - "line": 4024, + "line": 4032, "column": 48 } } @@ -552468,15 +555730,15 @@ "binop": null, "updateContext": null }, - "start": 161635, - "end": 161636, + "start": 162149, + "end": 162150, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 48 }, "end": { - "line": 4024, + "line": 4032, "column": 49 } } @@ -552494,15 +555756,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 161636, - "end": 161655, + "start": 162150, + "end": 162169, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 49 }, "end": { - "line": 4024, + "line": 4032, "column": 68 } } @@ -552520,15 +555782,15 @@ "binop": null, "updateContext": null }, - "start": 161655, - "end": 161656, + "start": 162169, + "end": 162170, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 68 }, "end": { - "line": 4024, + "line": 4032, "column": 69 } } @@ -552546,15 +555808,15 @@ "binop": null }, "value": "length", - "start": 161656, - "end": 161662, + "start": 162170, + "end": 162176, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 69 }, "end": { - "line": 4024, + "line": 4032, "column": 75 } } @@ -552573,15 +555835,15 @@ "updateContext": null }, "value": ">", - "start": 161663, - "end": 161664, + "start": 162177, + "end": 162178, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 76 }, "end": { - "line": 4024, + "line": 4032, "column": 77 } } @@ -552600,15 +555862,15 @@ "updateContext": null }, "value": 0, - "start": 161665, - "end": 161666, + "start": 162179, + "end": 162180, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 78 }, "end": { - "line": 4024, + "line": 4032, "column": 79 } } @@ -552625,15 +555887,15 @@ "postfix": false, "binop": null }, - "start": 161666, - "end": 161667, + "start": 162180, + "end": 162181, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 79 }, "end": { - "line": 4024, + "line": 4032, "column": 80 } } @@ -552650,15 +555912,15 @@ "postfix": false, "binop": null }, - "start": 161668, - "end": 161669, + "start": 162182, + "end": 162183, "loc": { "start": { - "line": 4024, + "line": 4032, "column": 81 }, "end": { - "line": 4024, + "line": 4032, "column": 82 } } @@ -552678,15 +555940,15 @@ "updateContext": null }, "value": "const", - "start": 161678, - "end": 161683, + "start": 162192, + "end": 162197, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 8 }, "end": { - "line": 4025, + "line": 4033, "column": 13 } } @@ -552704,15 +555966,15 @@ "binop": null }, "value": "localAABB", - "start": 161684, - "end": 161693, + "start": 162198, + "end": 162207, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 14 }, "end": { - "line": 4025, + "line": 4033, "column": 23 } } @@ -552731,15 +555993,15 @@ "updateContext": null }, "value": "=", - "start": 161694, - "end": 161695, + "start": 162208, + "end": 162209, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 24 }, "end": { - "line": 4025, + "line": 4033, "column": 25 } } @@ -552757,15 +556019,15 @@ "binop": null }, "value": "math", - "start": 161696, - "end": 161700, + "start": 162210, + "end": 162214, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 26 }, "end": { - "line": 4025, + "line": 4033, "column": 30 } } @@ -552783,15 +556045,15 @@ "binop": null, "updateContext": null }, - "start": 161700, - "end": 161701, + "start": 162214, + "end": 162215, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 30 }, "end": { - "line": 4025, + "line": 4033, "column": 31 } } @@ -552809,15 +556071,15 @@ "binop": null }, "value": "collapseAABB3", - "start": 161701, - "end": 161714, + "start": 162215, + "end": 162228, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 31 }, "end": { - "line": 4025, + "line": 4033, "column": 44 } } @@ -552834,15 +556096,15 @@ "postfix": false, "binop": null }, - "start": 161714, - "end": 161715, + "start": 162228, + "end": 162229, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 44 }, "end": { - "line": 4025, + "line": 4033, "column": 45 } } @@ -552859,15 +556121,15 @@ "postfix": false, "binop": null }, - "start": 161715, - "end": 161716, + "start": 162229, + "end": 162230, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 45 }, "end": { - "line": 4025, + "line": 4033, "column": 46 } } @@ -552885,15 +556147,15 @@ "binop": null, "updateContext": null }, - "start": 161716, - "end": 161717, + "start": 162230, + "end": 162231, "loc": { "start": { - "line": 4025, + "line": 4033, "column": 46 }, "end": { - "line": 4025, + "line": 4033, "column": 47 } } @@ -552911,15 +556173,15 @@ "binop": null }, "value": "math", - "start": 161726, - "end": 161730, + "start": 162240, + "end": 162244, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 8 }, "end": { - "line": 4026, + "line": 4034, "column": 12 } } @@ -552937,15 +556199,15 @@ "binop": null, "updateContext": null }, - "start": 161730, - "end": 161731, + "start": 162244, + "end": 162245, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 12 }, "end": { - "line": 4026, + "line": 4034, "column": 13 } } @@ -552963,15 +556225,15 @@ "binop": null }, "value": "expandAABB3Points3", - "start": 161731, - "end": 161749, + "start": 162245, + "end": 162263, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 13 }, "end": { - "line": 4026, + "line": 4034, "column": 31 } } @@ -552988,15 +556250,15 @@ "postfix": false, "binop": null }, - "start": 161749, - "end": 161750, + "start": 162263, + "end": 162264, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 31 }, "end": { - "line": 4026, + "line": 4034, "column": 32 } } @@ -553014,15 +556276,15 @@ "binop": null }, "value": "localAABB", - "start": 161750, - "end": 161759, + "start": 162264, + "end": 162273, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 32 }, "end": { - "line": 4026, + "line": 4034, "column": 41 } } @@ -553040,15 +556302,15 @@ "binop": null, "updateContext": null }, - "start": 161759, - "end": 161760, + "start": 162273, + "end": 162274, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 41 }, "end": { - "line": 4026, + "line": 4034, "column": 42 } } @@ -553066,15 +556328,15 @@ "binop": null }, "value": "geometry", - "start": 161761, - "end": 161769, + "start": 162275, + "end": 162283, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 43 }, "end": { - "line": 4026, + "line": 4034, "column": 51 } } @@ -553092,15 +556354,15 @@ "binop": null, "updateContext": null }, - "start": 161769, - "end": 161770, + "start": 162283, + "end": 162284, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 51 }, "end": { - "line": 4026, + "line": 4034, "column": 52 } } @@ -553118,15 +556380,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 161770, - "end": 161789, + "start": 162284, + "end": 162303, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 52 }, "end": { - "line": 4026, + "line": 4034, "column": 71 } } @@ -553143,15 +556405,15 @@ "postfix": false, "binop": null }, - "start": 161789, - "end": 161790, + "start": 162303, + "end": 162304, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 71 }, "end": { - "line": 4026, + "line": 4034, "column": 72 } } @@ -553169,15 +556431,15 @@ "binop": null, "updateContext": null }, - "start": 161790, - "end": 161791, + "start": 162304, + "end": 162305, "loc": { "start": { - "line": 4026, + "line": 4034, "column": 72 }, "end": { - "line": 4026, + "line": 4034, "column": 73 } } @@ -553195,15 +556457,15 @@ "binop": null }, "value": "geometryCompressionUtils", - "start": 161800, - "end": 161824, + "start": 162314, + "end": 162338, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 8 }, "end": { - "line": 4027, + "line": 4035, "column": 32 } } @@ -553221,15 +556483,15 @@ "binop": null, "updateContext": null }, - "start": 161824, - "end": 161825, + "start": 162338, + "end": 162339, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 32 }, "end": { - "line": 4027, + "line": 4035, "column": 33 } } @@ -553247,15 +556509,15 @@ "binop": null }, "value": "decompressAABB", - "start": 161825, - "end": 161839, + "start": 162339, + "end": 162353, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 33 }, "end": { - "line": 4027, + "line": 4035, "column": 47 } } @@ -553272,15 +556534,15 @@ "postfix": false, "binop": null }, - "start": 161839, - "end": 161840, + "start": 162353, + "end": 162354, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 47 }, "end": { - "line": 4027, + "line": 4035, "column": 48 } } @@ -553298,15 +556560,15 @@ "binop": null }, "value": "localAABB", - "start": 161840, - "end": 161849, + "start": 162354, + "end": 162363, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 48 }, "end": { - "line": 4027, + "line": 4035, "column": 57 } } @@ -553324,15 +556586,15 @@ "binop": null, "updateContext": null }, - "start": 161849, - "end": 161850, + "start": 162363, + "end": 162364, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 57 }, "end": { - "line": 4027, + "line": 4035, "column": 58 } } @@ -553350,15 +556612,15 @@ "binop": null }, "value": "geometry", - "start": 161851, - "end": 161859, + "start": 162365, + "end": 162373, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 59 }, "end": { - "line": 4027, + "line": 4035, "column": 67 } } @@ -553376,15 +556638,15 @@ "binop": null, "updateContext": null }, - "start": 161859, - "end": 161860, + "start": 162373, + "end": 162374, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 67 }, "end": { - "line": 4027, + "line": 4035, "column": 68 } } @@ -553402,15 +556664,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 161860, - "end": 161881, + "start": 162374, + "end": 162395, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 68 }, "end": { - "line": 4027, + "line": 4035, "column": 89 } } @@ -553427,15 +556689,15 @@ "postfix": false, "binop": null }, - "start": 161881, - "end": 161882, + "start": 162395, + "end": 162396, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 89 }, "end": { - "line": 4027, + "line": 4035, "column": 90 } } @@ -553453,15 +556715,15 @@ "binop": null, "updateContext": null }, - "start": 161882, - "end": 161883, + "start": 162396, + "end": 162397, "loc": { "start": { - "line": 4027, + "line": 4035, "column": 90 }, "end": { - "line": 4027, + "line": 4035, "column": 91 } } @@ -553479,15 +556741,15 @@ "binop": null }, "value": "math", - "start": 161892, - "end": 161896, + "start": 162406, + "end": 162410, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 8 }, "end": { - "line": 4028, + "line": 4036, "column": 12 } } @@ -553505,15 +556767,15 @@ "binop": null, "updateContext": null }, - "start": 161896, - "end": 161897, + "start": 162410, + "end": 162411, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 12 }, "end": { - "line": 4028, + "line": 4036, "column": 13 } } @@ -553531,15 +556793,15 @@ "binop": null }, "value": "AABB3ToOBB3", - "start": 161897, - "end": 161908, + "start": 162411, + "end": 162422, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 13 }, "end": { - "line": 4028, + "line": 4036, "column": 24 } } @@ -553556,15 +556818,15 @@ "postfix": false, "binop": null }, - "start": 161908, - "end": 161909, + "start": 162422, + "end": 162423, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 24 }, "end": { - "line": 4028, + "line": 4036, "column": 25 } } @@ -553582,15 +556844,15 @@ "binop": null }, "value": "localAABB", - "start": 161909, - "end": 161918, + "start": 162423, + "end": 162432, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 25 }, "end": { - "line": 4028, + "line": 4036, "column": 34 } } @@ -553608,15 +556870,15 @@ "binop": null, "updateContext": null }, - "start": 161918, - "end": 161919, + "start": 162432, + "end": 162433, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 34 }, "end": { - "line": 4028, + "line": 4036, "column": 35 } } @@ -553634,15 +556896,15 @@ "binop": null }, "value": "geometry", - "start": 161920, - "end": 161928, + "start": 162434, + "end": 162442, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 36 }, "end": { - "line": 4028, + "line": 4036, "column": 44 } } @@ -553660,15 +556922,15 @@ "binop": null, "updateContext": null }, - "start": 161928, - "end": 161929, + "start": 162442, + "end": 162443, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 44 }, "end": { - "line": 4028, + "line": 4036, "column": 45 } } @@ -553686,15 +556948,15 @@ "binop": null }, "value": "obb", - "start": 161929, - "end": 161932, + "start": 162443, + "end": 162446, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 45 }, "end": { - "line": 4028, + "line": 4036, "column": 48 } } @@ -553711,15 +556973,15 @@ "postfix": false, "binop": null }, - "start": 161932, - "end": 161933, + "start": 162446, + "end": 162447, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 48 }, "end": { - "line": 4028, + "line": 4036, "column": 49 } } @@ -553737,15 +556999,15 @@ "binop": null, "updateContext": null }, - "start": 161933, - "end": 161934, + "start": 162447, + "end": 162448, "loc": { "start": { - "line": 4028, + "line": 4036, "column": 49 }, "end": { - "line": 4028, + "line": 4036, "column": 50 } } @@ -553762,15 +557024,15 @@ "postfix": false, "binop": null }, - "start": 161939, - "end": 161940, + "start": 162453, + "end": 162454, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 4 }, "end": { - "line": 4029, + "line": 4037, "column": 5 } } @@ -553790,15 +557052,15 @@ "updateContext": null }, "value": "else", - "start": 161941, - "end": 161945, + "start": 162455, + "end": 162459, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 6 }, "end": { - "line": 4029, + "line": 4037, "column": 10 } } @@ -553818,15 +557080,15 @@ "updateContext": null }, "value": "if", - "start": 161946, - "end": 161948, + "start": 162460, + "end": 162462, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 11 }, "end": { - "line": 4029, + "line": 4037, "column": 13 } } @@ -553843,15 +557105,15 @@ "postfix": false, "binop": null }, - "start": 161949, - "end": 161950, + "start": 162463, + "end": 162464, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 14 }, "end": { - "line": 4029, + "line": 4037, "column": 15 } } @@ -553869,15 +557131,15 @@ "binop": null }, "value": "geometry", - "start": 161950, - "end": 161958, + "start": 162464, + "end": 162472, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 15 }, "end": { - "line": 4029, + "line": 4037, "column": 23 } } @@ -553895,15 +557157,15 @@ "binop": null, "updateContext": null }, - "start": 161958, - "end": 161959, + "start": 162472, + "end": 162473, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 23 }, "end": { - "line": 4029, + "line": 4037, "column": 24 } } @@ -553921,15 +557183,15 @@ "binop": null }, "value": "positions", - "start": 161959, - "end": 161968, + "start": 162473, + "end": 162482, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 24 }, "end": { - "line": 4029, + "line": 4037, "column": 33 } } @@ -553948,15 +557210,15 @@ "updateContext": null }, "value": "&&", - "start": 161969, - "end": 161971, + "start": 162483, + "end": 162485, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 34 }, "end": { - "line": 4029, + "line": 4037, "column": 36 } } @@ -553974,15 +557236,15 @@ "binop": null }, "value": "geometry", - "start": 161972, - "end": 161980, + "start": 162486, + "end": 162494, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 37 }, "end": { - "line": 4029, + "line": 4037, "column": 45 } } @@ -554000,15 +557262,15 @@ "binop": null, "updateContext": null }, - "start": 161980, - "end": 161981, + "start": 162494, + "end": 162495, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 45 }, "end": { - "line": 4029, + "line": 4037, "column": 46 } } @@ -554026,15 +557288,15 @@ "binop": null }, "value": "positions", - "start": 161981, - "end": 161990, + "start": 162495, + "end": 162504, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 46 }, "end": { - "line": 4029, + "line": 4037, "column": 55 } } @@ -554052,15 +557314,15 @@ "binop": null, "updateContext": null }, - "start": 161990, - "end": 161991, + "start": 162504, + "end": 162505, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 55 }, "end": { - "line": 4029, + "line": 4037, "column": 56 } } @@ -554078,15 +557340,15 @@ "binop": null }, "value": "length", - "start": 161991, - "end": 161997, + "start": 162505, + "end": 162511, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 56 }, "end": { - "line": 4029, + "line": 4037, "column": 62 } } @@ -554105,15 +557367,15 @@ "updateContext": null }, "value": ">", - "start": 161998, - "end": 161999, + "start": 162512, + "end": 162513, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 63 }, "end": { - "line": 4029, + "line": 4037, "column": 64 } } @@ -554132,15 +557394,15 @@ "updateContext": null }, "value": 0, - "start": 162000, - "end": 162001, + "start": 162514, + "end": 162515, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 65 }, "end": { - "line": 4029, + "line": 4037, "column": 66 } } @@ -554157,15 +557419,15 @@ "postfix": false, "binop": null }, - "start": 162001, - "end": 162002, + "start": 162515, + "end": 162516, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 66 }, "end": { - "line": 4029, + "line": 4037, "column": 67 } } @@ -554182,15 +557444,15 @@ "postfix": false, "binop": null }, - "start": 162003, - "end": 162004, + "start": 162517, + "end": 162518, "loc": { "start": { - "line": 4029, + "line": 4037, "column": 68 }, "end": { - "line": 4029, + "line": 4037, "column": 69 } } @@ -554210,15 +557472,15 @@ "updateContext": null }, "value": "const", - "start": 162013, - "end": 162018, + "start": 162527, + "end": 162532, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 8 }, "end": { - "line": 4030, + "line": 4038, "column": 13 } } @@ -554236,15 +557498,15 @@ "binop": null }, "value": "localAABB", - "start": 162019, - "end": 162028, + "start": 162533, + "end": 162542, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 14 }, "end": { - "line": 4030, + "line": 4038, "column": 23 } } @@ -554263,15 +557525,15 @@ "updateContext": null }, "value": "=", - "start": 162029, - "end": 162030, + "start": 162543, + "end": 162544, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 24 }, "end": { - "line": 4030, + "line": 4038, "column": 25 } } @@ -554289,15 +557551,15 @@ "binop": null }, "value": "math", - "start": 162031, - "end": 162035, + "start": 162545, + "end": 162549, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 26 }, "end": { - "line": 4030, + "line": 4038, "column": 30 } } @@ -554315,15 +557577,15 @@ "binop": null, "updateContext": null }, - "start": 162035, - "end": 162036, + "start": 162549, + "end": 162550, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 30 }, "end": { - "line": 4030, + "line": 4038, "column": 31 } } @@ -554341,15 +557603,15 @@ "binop": null }, "value": "collapseAABB3", - "start": 162036, - "end": 162049, + "start": 162550, + "end": 162563, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 31 }, "end": { - "line": 4030, + "line": 4038, "column": 44 } } @@ -554366,15 +557628,15 @@ "postfix": false, "binop": null }, - "start": 162049, - "end": 162050, + "start": 162563, + "end": 162564, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 44 }, "end": { - "line": 4030, + "line": 4038, "column": 45 } } @@ -554391,15 +557653,15 @@ "postfix": false, "binop": null }, - "start": 162050, - "end": 162051, + "start": 162564, + "end": 162565, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 45 }, "end": { - "line": 4030, + "line": 4038, "column": 46 } } @@ -554417,15 +557679,15 @@ "binop": null, "updateContext": null }, - "start": 162051, - "end": 162052, + "start": 162565, + "end": 162566, "loc": { "start": { - "line": 4030, + "line": 4038, "column": 46 }, "end": { - "line": 4030, + "line": 4038, "column": 47 } } @@ -554443,15 +557705,15 @@ "binop": null }, "value": "math", - "start": 162061, - "end": 162065, + "start": 162575, + "end": 162579, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 8 }, "end": { - "line": 4031, + "line": 4039, "column": 12 } } @@ -554469,15 +557731,15 @@ "binop": null, "updateContext": null }, - "start": 162065, - "end": 162066, + "start": 162579, + "end": 162580, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 12 }, "end": { - "line": 4031, + "line": 4039, "column": 13 } } @@ -554495,15 +557757,15 @@ "binop": null }, "value": "expandAABB3Points3", - "start": 162066, - "end": 162084, + "start": 162580, + "end": 162598, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 13 }, "end": { - "line": 4031, + "line": 4039, "column": 31 } } @@ -554520,15 +557782,15 @@ "postfix": false, "binop": null }, - "start": 162084, - "end": 162085, + "start": 162598, + "end": 162599, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 31 }, "end": { - "line": 4031, + "line": 4039, "column": 32 } } @@ -554546,15 +557808,15 @@ "binop": null }, "value": "localAABB", - "start": 162085, - "end": 162094, + "start": 162599, + "end": 162608, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 32 }, "end": { - "line": 4031, + "line": 4039, "column": 41 } } @@ -554572,15 +557834,15 @@ "binop": null, "updateContext": null }, - "start": 162094, - "end": 162095, + "start": 162608, + "end": 162609, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 41 }, "end": { - "line": 4031, + "line": 4039, "column": 42 } } @@ -554598,15 +557860,15 @@ "binop": null }, "value": "geometry", - "start": 162096, - "end": 162104, + "start": 162610, + "end": 162618, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 43 }, "end": { - "line": 4031, + "line": 4039, "column": 51 } } @@ -554624,15 +557886,15 @@ "binop": null, "updateContext": null }, - "start": 162104, - "end": 162105, + "start": 162618, + "end": 162619, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 51 }, "end": { - "line": 4031, + "line": 4039, "column": 52 } } @@ -554650,15 +557912,15 @@ "binop": null }, "value": "positions", - "start": 162105, - "end": 162114, + "start": 162619, + "end": 162628, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 52 }, "end": { - "line": 4031, + "line": 4039, "column": 61 } } @@ -554675,15 +557937,15 @@ "postfix": false, "binop": null }, - "start": 162114, - "end": 162115, + "start": 162628, + "end": 162629, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 61 }, "end": { - "line": 4031, + "line": 4039, "column": 62 } } @@ -554701,15 +557963,15 @@ "binop": null, "updateContext": null }, - "start": 162115, - "end": 162116, + "start": 162629, + "end": 162630, "loc": { "start": { - "line": 4031, + "line": 4039, "column": 62 }, "end": { - "line": 4031, + "line": 4039, "column": 63 } } @@ -554727,15 +557989,15 @@ "binop": null }, "value": "math", - "start": 162125, - "end": 162129, + "start": 162639, + "end": 162643, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 8 }, "end": { - "line": 4032, + "line": 4040, "column": 12 } } @@ -554753,15 +558015,15 @@ "binop": null, "updateContext": null }, - "start": 162129, - "end": 162130, + "start": 162643, + "end": 162644, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 12 }, "end": { - "line": 4032, + "line": 4040, "column": 13 } } @@ -554779,15 +558041,15 @@ "binop": null }, "value": "AABB3ToOBB3", - "start": 162130, - "end": 162141, + "start": 162644, + "end": 162655, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 13 }, "end": { - "line": 4032, + "line": 4040, "column": 24 } } @@ -554804,15 +558066,15 @@ "postfix": false, "binop": null }, - "start": 162141, - "end": 162142, + "start": 162655, + "end": 162656, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 24 }, "end": { - "line": 4032, + "line": 4040, "column": 25 } } @@ -554830,15 +558092,15 @@ "binop": null }, "value": "localAABB", - "start": 162142, - "end": 162151, + "start": 162656, + "end": 162665, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 25 }, "end": { - "line": 4032, + "line": 4040, "column": 34 } } @@ -554856,15 +558118,15 @@ "binop": null, "updateContext": null }, - "start": 162151, - "end": 162152, + "start": 162665, + "end": 162666, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 34 }, "end": { - "line": 4032, + "line": 4040, "column": 35 } } @@ -554882,15 +558144,15 @@ "binop": null }, "value": "geometry", - "start": 162153, - "end": 162161, + "start": 162667, + "end": 162675, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 36 }, "end": { - "line": 4032, + "line": 4040, "column": 44 } } @@ -554908,15 +558170,15 @@ "binop": null, "updateContext": null }, - "start": 162161, - "end": 162162, + "start": 162675, + "end": 162676, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 44 }, "end": { - "line": 4032, + "line": 4040, "column": 45 } } @@ -554934,15 +558196,15 @@ "binop": null }, "value": "obb", - "start": 162162, - "end": 162165, + "start": 162676, + "end": 162679, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 45 }, "end": { - "line": 4032, + "line": 4040, "column": 48 } } @@ -554959,15 +558221,15 @@ "postfix": false, "binop": null }, - "start": 162165, - "end": 162166, + "start": 162679, + "end": 162680, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 48 }, "end": { - "line": 4032, + "line": 4040, "column": 49 } } @@ -554985,15 +558247,15 @@ "binop": null, "updateContext": null }, - "start": 162166, - "end": 162167, + "start": 162680, + "end": 162681, "loc": { "start": { - "line": 4032, + "line": 4040, "column": 49 }, "end": { - "line": 4032, + "line": 4040, "column": 50 } } @@ -555010,15 +558272,15 @@ "postfix": false, "binop": null }, - "start": 162172, - "end": 162173, + "start": 162686, + "end": 162687, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 4 }, "end": { - "line": 4033, + "line": 4041, "column": 5 } } @@ -555038,15 +558300,15 @@ "updateContext": null }, "value": "else", - "start": 162174, - "end": 162178, + "start": 162688, + "end": 162692, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 6 }, "end": { - "line": 4033, + "line": 4041, "column": 10 } } @@ -555066,15 +558328,15 @@ "updateContext": null }, "value": "if", - "start": 162179, - "end": 162181, + "start": 162693, + "end": 162695, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 11 }, "end": { - "line": 4033, + "line": 4041, "column": 13 } } @@ -555091,15 +558353,15 @@ "postfix": false, "binop": null }, - "start": 162182, - "end": 162183, + "start": 162696, + "end": 162697, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 14 }, "end": { - "line": 4033, + "line": 4041, "column": 15 } } @@ -555117,15 +558379,15 @@ "binop": null }, "value": "geometry", - "start": 162183, - "end": 162191, + "start": 162697, + "end": 162705, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 15 }, "end": { - "line": 4033, + "line": 4041, "column": 23 } } @@ -555143,15 +558405,15 @@ "binop": null, "updateContext": null }, - "start": 162191, - "end": 162192, + "start": 162705, + "end": 162706, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 23 }, "end": { - "line": 4033, + "line": 4041, "column": 24 } } @@ -555169,15 +558431,15 @@ "binop": null }, "value": "buckets", - "start": 162192, - "end": 162199, + "start": 162706, + "end": 162713, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 24 }, "end": { - "line": 4033, + "line": 4041, "column": 31 } } @@ -555194,15 +558456,15 @@ "postfix": false, "binop": null }, - "start": 162199, - "end": 162200, + "start": 162713, + "end": 162714, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 31 }, "end": { - "line": 4033, + "line": 4041, "column": 32 } } @@ -555219,15 +558481,15 @@ "postfix": false, "binop": null }, - "start": 162201, - "end": 162202, + "start": 162715, + "end": 162716, "loc": { "start": { - "line": 4033, + "line": 4041, "column": 33 }, "end": { - "line": 4033, + "line": 4041, "column": 34 } } @@ -555247,15 +558509,15 @@ "updateContext": null }, "value": "const", - "start": 162211, - "end": 162216, + "start": 162725, + "end": 162730, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 8 }, "end": { - "line": 4034, + "line": 4042, "column": 13 } } @@ -555273,15 +558535,15 @@ "binop": null }, "value": "localAABB", - "start": 162217, - "end": 162226, + "start": 162731, + "end": 162740, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 14 }, "end": { - "line": 4034, + "line": 4042, "column": 23 } } @@ -555300,15 +558562,15 @@ "updateContext": null }, "value": "=", - "start": 162227, - "end": 162228, + "start": 162741, + "end": 162742, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 24 }, "end": { - "line": 4034, + "line": 4042, "column": 25 } } @@ -555326,15 +558588,15 @@ "binop": null }, "value": "math", - "start": 162229, - "end": 162233, + "start": 162743, + "end": 162747, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 26 }, "end": { - "line": 4034, + "line": 4042, "column": 30 } } @@ -555352,15 +558614,15 @@ "binop": null, "updateContext": null }, - "start": 162233, - "end": 162234, + "start": 162747, + "end": 162748, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 30 }, "end": { - "line": 4034, + "line": 4042, "column": 31 } } @@ -555378,15 +558640,15 @@ "binop": null }, "value": "collapseAABB3", - "start": 162234, - "end": 162247, + "start": 162748, + "end": 162761, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 31 }, "end": { - "line": 4034, + "line": 4042, "column": 44 } } @@ -555403,15 +558665,15 @@ "postfix": false, "binop": null }, - "start": 162247, - "end": 162248, + "start": 162761, + "end": 162762, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 44 }, "end": { - "line": 4034, + "line": 4042, "column": 45 } } @@ -555428,15 +558690,15 @@ "postfix": false, "binop": null }, - "start": 162248, - "end": 162249, + "start": 162762, + "end": 162763, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 45 }, "end": { - "line": 4034, + "line": 4042, "column": 46 } } @@ -555454,15 +558716,15 @@ "binop": null, "updateContext": null }, - "start": 162249, - "end": 162250, + "start": 162763, + "end": 162764, "loc": { "start": { - "line": 4034, + "line": 4042, "column": 46 }, "end": { - "line": 4034, + "line": 4042, "column": 47 } } @@ -555482,15 +558744,15 @@ "updateContext": null }, "value": "for", - "start": 162259, - "end": 162262, + "start": 162773, + "end": 162776, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 8 }, "end": { - "line": 4035, + "line": 4043, "column": 11 } } @@ -555507,15 +558769,15 @@ "postfix": false, "binop": null }, - "start": 162263, - "end": 162264, + "start": 162777, + "end": 162778, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 12 }, "end": { - "line": 4035, + "line": 4043, "column": 13 } } @@ -555535,15 +558797,15 @@ "updateContext": null }, "value": "let", - "start": 162264, - "end": 162267, + "start": 162778, + "end": 162781, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 13 }, "end": { - "line": 4035, + "line": 4043, "column": 16 } } @@ -555561,15 +558823,15 @@ "binop": null }, "value": "i", - "start": 162268, - "end": 162269, + "start": 162782, + "end": 162783, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 17 }, "end": { - "line": 4035, + "line": 4043, "column": 18 } } @@ -555588,15 +558850,15 @@ "updateContext": null }, "value": "=", - "start": 162270, - "end": 162271, + "start": 162784, + "end": 162785, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 19 }, "end": { - "line": 4035, + "line": 4043, "column": 20 } } @@ -555615,15 +558877,15 @@ "updateContext": null }, "value": 0, - "start": 162272, - "end": 162273, + "start": 162786, + "end": 162787, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 21 }, "end": { - "line": 4035, + "line": 4043, "column": 22 } } @@ -555641,15 +558903,15 @@ "binop": null, "updateContext": null }, - "start": 162273, - "end": 162274, + "start": 162787, + "end": 162788, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 22 }, "end": { - "line": 4035, + "line": 4043, "column": 23 } } @@ -555667,15 +558929,15 @@ "binop": null }, "value": "len", - "start": 162275, - "end": 162278, + "start": 162789, + "end": 162792, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 24 }, "end": { - "line": 4035, + "line": 4043, "column": 27 } } @@ -555694,15 +558956,15 @@ "updateContext": null }, "value": "=", - "start": 162279, - "end": 162280, + "start": 162793, + "end": 162794, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 28 }, "end": { - "line": 4035, + "line": 4043, "column": 29 } } @@ -555720,15 +558982,15 @@ "binop": null }, "value": "geometry", - "start": 162281, - "end": 162289, + "start": 162795, + "end": 162803, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 30 }, "end": { - "line": 4035, + "line": 4043, "column": 38 } } @@ -555746,15 +559008,15 @@ "binop": null, "updateContext": null }, - "start": 162289, - "end": 162290, + "start": 162803, + "end": 162804, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 38 }, "end": { - "line": 4035, + "line": 4043, "column": 39 } } @@ -555772,15 +559034,15 @@ "binop": null }, "value": "buckets", - "start": 162290, - "end": 162297, + "start": 162804, + "end": 162811, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 39 }, "end": { - "line": 4035, + "line": 4043, "column": 46 } } @@ -555798,15 +559060,15 @@ "binop": null, "updateContext": null }, - "start": 162297, - "end": 162298, + "start": 162811, + "end": 162812, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 46 }, "end": { - "line": 4035, + "line": 4043, "column": 47 } } @@ -555824,15 +559086,15 @@ "binop": null }, "value": "length", - "start": 162298, - "end": 162304, + "start": 162812, + "end": 162818, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 47 }, "end": { - "line": 4035, + "line": 4043, "column": 53 } } @@ -555850,15 +559112,15 @@ "binop": null, "updateContext": null }, - "start": 162304, - "end": 162305, + "start": 162818, + "end": 162819, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 53 }, "end": { - "line": 4035, + "line": 4043, "column": 54 } } @@ -555876,15 +559138,15 @@ "binop": null }, "value": "i", - "start": 162306, - "end": 162307, + "start": 162820, + "end": 162821, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 55 }, "end": { - "line": 4035, + "line": 4043, "column": 56 } } @@ -555903,15 +559165,15 @@ "updateContext": null }, "value": "<", - "start": 162308, - "end": 162309, + "start": 162822, + "end": 162823, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 57 }, "end": { - "line": 4035, + "line": 4043, "column": 58 } } @@ -555929,15 +559191,15 @@ "binop": null }, "value": "len", - "start": 162310, - "end": 162313, + "start": 162824, + "end": 162827, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 59 }, "end": { - "line": 4035, + "line": 4043, "column": 62 } } @@ -555955,15 +559217,15 @@ "binop": null, "updateContext": null }, - "start": 162313, - "end": 162314, + "start": 162827, + "end": 162828, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 62 }, "end": { - "line": 4035, + "line": 4043, "column": 63 } } @@ -555981,15 +559243,15 @@ "binop": null }, "value": "i", - "start": 162315, - "end": 162316, + "start": 162829, + "end": 162830, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 64 }, "end": { - "line": 4035, + "line": 4043, "column": 65 } } @@ -556007,15 +559269,15 @@ "binop": null }, "value": "++", - "start": 162316, - "end": 162318, + "start": 162830, + "end": 162832, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 65 }, "end": { - "line": 4035, + "line": 4043, "column": 67 } } @@ -556032,15 +559294,15 @@ "postfix": false, "binop": null }, - "start": 162318, - "end": 162319, + "start": 162832, + "end": 162833, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 67 }, "end": { - "line": 4035, + "line": 4043, "column": 68 } } @@ -556057,15 +559319,15 @@ "postfix": false, "binop": null }, - "start": 162320, - "end": 162321, + "start": 162834, + "end": 162835, "loc": { "start": { - "line": 4035, + "line": 4043, "column": 69 }, "end": { - "line": 4035, + "line": 4043, "column": 70 } } @@ -556085,15 +559347,15 @@ "updateContext": null }, "value": "const", - "start": 162334, - "end": 162339, + "start": 162848, + "end": 162853, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 12 }, "end": { - "line": 4036, + "line": 4044, "column": 17 } } @@ -556111,15 +559373,15 @@ "binop": null }, "value": "bucket", - "start": 162340, - "end": 162346, + "start": 162854, + "end": 162860, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 18 }, "end": { - "line": 4036, + "line": 4044, "column": 24 } } @@ -556138,15 +559400,15 @@ "updateContext": null }, "value": "=", - "start": 162347, - "end": 162348, + "start": 162861, + "end": 162862, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 25 }, "end": { - "line": 4036, + "line": 4044, "column": 26 } } @@ -556164,15 +559426,15 @@ "binop": null }, "value": "geometry", - "start": 162349, - "end": 162357, + "start": 162863, + "end": 162871, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 27 }, "end": { - "line": 4036, + "line": 4044, "column": 35 } } @@ -556190,15 +559452,15 @@ "binop": null, "updateContext": null }, - "start": 162357, - "end": 162358, + "start": 162871, + "end": 162872, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 35 }, "end": { - "line": 4036, + "line": 4044, "column": 36 } } @@ -556216,15 +559478,15 @@ "binop": null }, "value": "buckets", - "start": 162358, - "end": 162365, + "start": 162872, + "end": 162879, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 36 }, "end": { - "line": 4036, + "line": 4044, "column": 43 } } @@ -556242,15 +559504,15 @@ "binop": null, "updateContext": null }, - "start": 162365, - "end": 162366, + "start": 162879, + "end": 162880, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 43 }, "end": { - "line": 4036, + "line": 4044, "column": 44 } } @@ -556268,15 +559530,15 @@ "binop": null }, "value": "i", - "start": 162366, - "end": 162367, + "start": 162880, + "end": 162881, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 44 }, "end": { - "line": 4036, + "line": 4044, "column": 45 } } @@ -556294,15 +559556,15 @@ "binop": null, "updateContext": null }, - "start": 162367, - "end": 162368, + "start": 162881, + "end": 162882, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 45 }, "end": { - "line": 4036, + "line": 4044, "column": 46 } } @@ -556320,15 +559582,15 @@ "binop": null, "updateContext": null }, - "start": 162368, - "end": 162369, + "start": 162882, + "end": 162883, "loc": { "start": { - "line": 4036, + "line": 4044, "column": 46 }, "end": { - "line": 4036, + "line": 4044, "column": 47 } } @@ -556346,15 +559608,15 @@ "binop": null }, "value": "math", - "start": 162382, - "end": 162386, + "start": 162896, + "end": 162900, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 12 }, "end": { - "line": 4037, + "line": 4045, "column": 16 } } @@ -556372,15 +559634,15 @@ "binop": null, "updateContext": null }, - "start": 162386, - "end": 162387, + "start": 162900, + "end": 162901, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 16 }, "end": { - "line": 4037, + "line": 4045, "column": 17 } } @@ -556398,15 +559660,15 @@ "binop": null }, "value": "expandAABB3Points3", - "start": 162387, - "end": 162405, + "start": 162901, + "end": 162919, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 17 }, "end": { - "line": 4037, + "line": 4045, "column": 35 } } @@ -556423,15 +559685,15 @@ "postfix": false, "binop": null }, - "start": 162405, - "end": 162406, + "start": 162919, + "end": 162920, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 35 }, "end": { - "line": 4037, + "line": 4045, "column": 36 } } @@ -556449,15 +559711,15 @@ "binop": null }, "value": "localAABB", - "start": 162406, - "end": 162415, + "start": 162920, + "end": 162929, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 36 }, "end": { - "line": 4037, + "line": 4045, "column": 45 } } @@ -556475,15 +559737,15 @@ "binop": null, "updateContext": null }, - "start": 162415, - "end": 162416, + "start": 162929, + "end": 162930, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 45 }, "end": { - "line": 4037, + "line": 4045, "column": 46 } } @@ -556501,15 +559763,15 @@ "binop": null }, "value": "bucket", - "start": 162417, - "end": 162423, + "start": 162931, + "end": 162937, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 47 }, "end": { - "line": 4037, + "line": 4045, "column": 53 } } @@ -556527,15 +559789,15 @@ "binop": null, "updateContext": null }, - "start": 162423, - "end": 162424, + "start": 162937, + "end": 162938, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 53 }, "end": { - "line": 4037, + "line": 4045, "column": 54 } } @@ -556553,15 +559815,15 @@ "binop": null }, "value": "positionsCompressed", - "start": 162424, - "end": 162443, + "start": 162938, + "end": 162957, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 54 }, "end": { - "line": 4037, + "line": 4045, "column": 73 } } @@ -556578,15 +559840,15 @@ "postfix": false, "binop": null }, - "start": 162443, - "end": 162444, + "start": 162957, + "end": 162958, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 73 }, "end": { - "line": 4037, + "line": 4045, "column": 74 } } @@ -556604,15 +559866,15 @@ "binop": null, "updateContext": null }, - "start": 162444, - "end": 162445, + "start": 162958, + "end": 162959, "loc": { "start": { - "line": 4037, + "line": 4045, "column": 74 }, "end": { - "line": 4037, + "line": 4045, "column": 75 } } @@ -556629,15 +559891,15 @@ "postfix": false, "binop": null }, - "start": 162454, - "end": 162455, + "start": 162968, + "end": 162969, "loc": { "start": { - "line": 4038, + "line": 4046, "column": 8 }, "end": { - "line": 4038, + "line": 4046, "column": 9 } } @@ -556655,15 +559917,15 @@ "binop": null }, "value": "geometryCompressionUtils", - "start": 162464, - "end": 162488, + "start": 162978, + "end": 163002, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 8 }, "end": { - "line": 4039, + "line": 4047, "column": 32 } } @@ -556681,15 +559943,15 @@ "binop": null, "updateContext": null }, - "start": 162488, - "end": 162489, + "start": 163002, + "end": 163003, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 32 }, "end": { - "line": 4039, + "line": 4047, "column": 33 } } @@ -556707,15 +559969,15 @@ "binop": null }, "value": "decompressAABB", - "start": 162489, - "end": 162503, + "start": 163003, + "end": 163017, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 33 }, "end": { - "line": 4039, + "line": 4047, "column": 47 } } @@ -556732,15 +559994,15 @@ "postfix": false, "binop": null }, - "start": 162503, - "end": 162504, + "start": 163017, + "end": 163018, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 47 }, "end": { - "line": 4039, + "line": 4047, "column": 48 } } @@ -556758,15 +560020,15 @@ "binop": null }, "value": "localAABB", - "start": 162504, - "end": 162513, + "start": 163018, + "end": 163027, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 48 }, "end": { - "line": 4039, + "line": 4047, "column": 57 } } @@ -556784,15 +560046,15 @@ "binop": null, "updateContext": null }, - "start": 162513, - "end": 162514, + "start": 163027, + "end": 163028, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 57 }, "end": { - "line": 4039, + "line": 4047, "column": 58 } } @@ -556810,15 +560072,15 @@ "binop": null }, "value": "geometry", - "start": 162515, - "end": 162523, + "start": 163029, + "end": 163037, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 59 }, "end": { - "line": 4039, + "line": 4047, "column": 67 } } @@ -556836,15 +560098,15 @@ "binop": null, "updateContext": null }, - "start": 162523, - "end": 162524, + "start": 163037, + "end": 163038, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 67 }, "end": { - "line": 4039, + "line": 4047, "column": 68 } } @@ -556862,15 +560124,15 @@ "binop": null }, "value": "positionsDecodeMatrix", - "start": 162524, - "end": 162545, + "start": 163038, + "end": 163059, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 68 }, "end": { - "line": 4039, + "line": 4047, "column": 89 } } @@ -556887,15 +560149,15 @@ "postfix": false, "binop": null }, - "start": 162545, - "end": 162546, + "start": 163059, + "end": 163060, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 89 }, "end": { - "line": 4039, + "line": 4047, "column": 90 } } @@ -556913,15 +560175,15 @@ "binop": null, "updateContext": null }, - "start": 162546, - "end": 162547, + "start": 163060, + "end": 163061, "loc": { "start": { - "line": 4039, + "line": 4047, "column": 90 }, "end": { - "line": 4039, + "line": 4047, "column": 91 } } @@ -556939,15 +560201,15 @@ "binop": null }, "value": "math", - "start": 162556, - "end": 162560, + "start": 163070, + "end": 163074, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 8 }, "end": { - "line": 4040, + "line": 4048, "column": 12 } } @@ -556965,15 +560227,15 @@ "binop": null, "updateContext": null }, - "start": 162560, - "end": 162561, + "start": 163074, + "end": 163075, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 12 }, "end": { - "line": 4040, + "line": 4048, "column": 13 } } @@ -556991,15 +560253,15 @@ "binop": null }, "value": "AABB3ToOBB3", - "start": 162561, - "end": 162572, + "start": 163075, + "end": 163086, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 13 }, "end": { - "line": 4040, + "line": 4048, "column": 24 } } @@ -557016,15 +560278,15 @@ "postfix": false, "binop": null }, - "start": 162572, - "end": 162573, + "start": 163086, + "end": 163087, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 24 }, "end": { - "line": 4040, + "line": 4048, "column": 25 } } @@ -557042,15 +560304,15 @@ "binop": null }, "value": "localAABB", - "start": 162573, - "end": 162582, + "start": 163087, + "end": 163096, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 25 }, "end": { - "line": 4040, + "line": 4048, "column": 34 } } @@ -557068,15 +560330,15 @@ "binop": null, "updateContext": null }, - "start": 162582, - "end": 162583, + "start": 163096, + "end": 163097, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 34 }, "end": { - "line": 4040, + "line": 4048, "column": 35 } } @@ -557094,15 +560356,15 @@ "binop": null }, "value": "geometry", - "start": 162584, - "end": 162592, + "start": 163098, + "end": 163106, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 36 }, "end": { - "line": 4040, + "line": 4048, "column": 44 } } @@ -557120,15 +560382,15 @@ "binop": null, "updateContext": null }, - "start": 162592, - "end": 162593, + "start": 163106, + "end": 163107, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 44 }, "end": { - "line": 4040, + "line": 4048, "column": 45 } } @@ -557146,15 +560408,15 @@ "binop": null }, "value": "obb", - "start": 162593, - "end": 162596, + "start": 163107, + "end": 163110, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 45 }, "end": { - "line": 4040, + "line": 4048, "column": 48 } } @@ -557171,15 +560433,15 @@ "postfix": false, "binop": null }, - "start": 162596, - "end": 162597, + "start": 163110, + "end": 163111, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 48 }, "end": { - "line": 4040, + "line": 4048, "column": 49 } } @@ -557197,15 +560459,15 @@ "binop": null, "updateContext": null }, - "start": 162597, - "end": 162598, + "start": 163111, + "end": 163112, "loc": { "start": { - "line": 4040, + "line": 4048, "column": 49 }, "end": { - "line": 4040, + "line": 4048, "column": 50 } } @@ -557222,15 +560484,15 @@ "postfix": false, "binop": null }, - "start": 162603, - "end": 162604, + "start": 163117, + "end": 163118, "loc": { "start": { - "line": 4041, + "line": 4049, "column": 4 }, "end": { - "line": 4041, + "line": 4049, "column": 5 } } @@ -557247,15 +560509,15 @@ "postfix": false, "binop": null }, - "start": 162605, - "end": 162606, + "start": 163119, + "end": 163120, "loc": { "start": { - "line": 4042, + "line": 4050, "column": 0 }, "end": { - "line": 4042, + "line": 4050, "column": 1 } } @@ -557273,15 +560535,15 @@ "binop": null, "updateContext": null }, - "start": 162607, - "end": 162607, + "start": 163121, + "end": 163121, "loc": { "start": { - "line": 4043, + "line": 4051, "column": 0 }, "end": { - "line": 4043, + "line": 4051, "column": 0 } } diff --git a/docs/class/src/extras/ContextMenu/ContextMenu.js~ContextMenu.html b/docs/class/src/extras/ContextMenu/ContextMenu.js~ContextMenu.html index 318c833c53..9e36f6923d 100644 --- a/docs/class/src/extras/ContextMenu/ContextMenu.js~ContextMenu.html +++ b/docs/class/src/extras/ContextMenu/ContextMenu.js~ContextMenu.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/extras/MarqueePicker/MarqueePicker.js~MarqueePicker.html b/docs/class/src/extras/MarqueePicker/MarqueePicker.js~MarqueePicker.html index 97d9aa4fbb..640b5765d1 100644 --- a/docs/class/src/extras/MarqueePicker/MarqueePicker.js~MarqueePicker.html +++ b/docs/class/src/extras/MarqueePicker/MarqueePicker.js~MarqueePicker.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/extras/MarqueePicker/MarqueePickerMouseControl.js~MarqueePickerMouseControl.html b/docs/class/src/extras/MarqueePicker/MarqueePickerMouseControl.js~MarqueePickerMouseControl.html index a9bb014584..45f55d2638 100644 --- a/docs/class/src/extras/MarqueePicker/MarqueePickerMouseControl.js~MarqueePickerMouseControl.html +++ b/docs/class/src/extras/MarqueePicker/MarqueePickerMouseControl.js~MarqueePickerMouseControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/extras/PointerCircle/PointerCircle.js~PointerCircle.html b/docs/class/src/extras/PointerCircle/PointerCircle.js~PointerCircle.html index 79dc4d9984..917f03823b 100644 --- a/docs/class/src/extras/PointerCircle/PointerCircle.js~PointerCircle.html +++ b/docs/class/src/extras/PointerCircle/PointerCircle.js~PointerCircle.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/extras/PointerLens/PointerLens.js~PointerLens.html b/docs/class/src/extras/PointerLens/PointerLens.js~PointerLens.html index a6de945fb3..dc0b5b32e0 100644 --- a/docs/class/src/extras/PointerLens/PointerLens.js~PointerLens.html +++ b/docs/class/src/extras/PointerLens/PointerLens.js~PointerLens.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/extras/collision/ObjectsKdTree3.js~ObjectsKdTree3.html b/docs/class/src/extras/collision/ObjectsKdTree3.js~ObjectsKdTree3.html index 029073a4ad..37bfc3c09e 100644 --- a/docs/class/src/extras/collision/ObjectsKdTree3.js~ObjectsKdTree3.html +++ b/docs/class/src/extras/collision/ObjectsKdTree3.js~ObjectsKdTree3.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js~AngleMeasurement.html b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js~AngleMeasurement.html index 9bf0f50be0..7e8ad871c8 100644 --- a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js~AngleMeasurement.html +++ b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js~AngleMeasurement.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js~AngleMeasurementsControl.html b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js~AngleMeasurementsControl.html index 22009bf2f8..7398b6c894 100644 --- a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js~AngleMeasurementsControl.html +++ b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js~AngleMeasurementsControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js~AngleMeasurementsMouseControl.html b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js~AngleMeasurementsMouseControl.html index 3813cbd910..01579e1aef 100644 --- a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js~AngleMeasurementsMouseControl.html +++ b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js~AngleMeasurementsMouseControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js~AngleMeasurementsPlugin.html b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js~AngleMeasurementsPlugin.html index 7e89270629..b9ac4c9410 100644 --- a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js~AngleMeasurementsPlugin.html +++ b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js~AngleMeasurementsPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js~AngleMeasurementsTouchControl.html b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js~AngleMeasurementsTouchControl.html index adbfad14ac..57182750c2 100644 --- a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js~AngleMeasurementsTouchControl.html +++ b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js~AngleMeasurementsTouchControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/AnnotationsPlugin/Annotation.js~Annotation.html b/docs/class/src/plugins/AnnotationsPlugin/Annotation.js~Annotation.html index 1ca0fa1a2e..3746f0aa68 100644 --- a/docs/class/src/plugins/AnnotationsPlugin/Annotation.js~Annotation.html +++ b/docs/class/src/plugins/AnnotationsPlugin/Annotation.js~Annotation.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js~AnnotationsPlugin.html b/docs/class/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js~AnnotationsPlugin.html index 256f2b287c..ce1411cb76 100644 --- a/docs/class/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js~AnnotationsPlugin.html +++ b/docs/class/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js~AnnotationsPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js~AxisGizmoPlugin.html b/docs/class/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js~AxisGizmoPlugin.html index 4b46ac8a9d..3ec6115ad0 100644 --- a/docs/class/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js~AxisGizmoPlugin.html +++ b/docs/class/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js~AxisGizmoPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js~BCFViewpointsPlugin.html b/docs/class/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js~BCFViewpointsPlugin.html index 826896e33e..7c416e424c 100644 --- a/docs/class/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js~BCFViewpointsPlugin.html +++ b/docs/class/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js~BCFViewpointsPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js~CityJSONDefaultDataSource.html b/docs/class/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js~CityJSONDefaultDataSource.html index 793c1c04a4..845510a846 100644 --- a/docs/class/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js~CityJSONDefaultDataSource.html +++ b/docs/class/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js~CityJSONDefaultDataSource.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js~CityJSONLoaderPlugin.html b/docs/class/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js~CityJSONLoaderPlugin.html index df42e3591a..e4a2a1e392 100644 --- a/docs/class/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js~CityJSONLoaderPlugin.html +++ b/docs/class/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js~CityJSONLoaderPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js~DistanceMeasurement.html b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js~DistanceMeasurement.html index 7887541370..56bd917e05 100644 --- a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js~DistanceMeasurement.html +++ b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js~DistanceMeasurement.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js~DistanceMeasurementsControl.html b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js~DistanceMeasurementsControl.html index bbb3427aae..7dc568d898 100644 --- a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js~DistanceMeasurementsControl.html +++ b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js~DistanceMeasurementsControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js~DistanceMeasurementsMouseControl.html b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js~DistanceMeasurementsMouseControl.html index 6ce68d685f..608134a053 100644 --- a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js~DistanceMeasurementsMouseControl.html +++ b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js~DistanceMeasurementsMouseControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js~DistanceMeasurementsPlugin.html b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js~DistanceMeasurementsPlugin.html index 97fc777494..40ff73f698 100644 --- a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js~DistanceMeasurementsPlugin.html +++ b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js~DistanceMeasurementsPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js~DistanceMeasurementsTouchControl.html b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js~DistanceMeasurementsTouchControl.html index 52592bc35f..93565da74d 100644 --- a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js~DistanceMeasurementsTouchControl.html +++ b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js~DistanceMeasurementsTouchControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl.html b/docs/class/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl.html index 75af1c07e9..fd7ad7c1ca 100644 --- a/docs/class/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl.html +++ b/docs/class/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin.html b/docs/class/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin.html index f6843a34c5..9574a1c96f 100644 --- a/docs/class/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin.html +++ b/docs/class/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html b/docs/class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html index 5d325c9594..0a8f7afcb4 100644 --- a/docs/class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html +++ b/docs/class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource.html b/docs/class/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource.html index 3ed0a9b33e..1c92fd7050 100644 --- a/docs/class/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource.html +++ b/docs/class/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin.html b/docs/class/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin.html index ccb4414832..2759184af5 100644 --- a/docs/class/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin.html +++ b/docs/class/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -257,13 +259,13 @@
    @@ -408,6 +410,69 @@

    Including and excluding IFC types

    +

    Showing a glTF model in TreeViewPlugin when metadata is not available

    When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each node in the glTF scene hierarchy that has a +name attribute, giving the Entity an ID that has the value of the name attribute.

    +

    Those name attributes are created by converter tools, such as by IFC2GLTFCxConverter when it generates glTF from IFC files. However, those name attributes are not +ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin +will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any +MetaModels that we create alongside the model.

    +

    For glTF models containing nodes that don't have name attributes, we can use the load() method's elementId parameter +to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID.

    +

    In conjunction with that parameter, we can then use the load() method's metaModelJSON parameter to create a MetaModel that +contains a MetaObject that corresponds to that Entity.

    +

    When we've done that, then xeokit's TreeViewPlugin is able to have a node that represents the glTF model and controls +the visibility of that Entity (ie. to control the visibility of the entire model).

    +

    The snippet below shows how this is done.

    +
    import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js";
    +
    +const viewer = new Viewer({
    +    canvasId: "myCanvas",
    +    transparent: true
    +});
    +
    +new TreeViewPlugin(viewer, {
    +    containerElement: document.getElementById("treeViewContainer"),
    +    hierarchy: "containment"
    +});
    +
    +const gltfLoader = new GLTFLoaderPlugin(viewer);
    +
    +const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID "myScanModel"
    +    id: "myScanModel",
    +    src: "public-use-sample-apartment.glb",
    +
    +    //-------------------------------------------------------------------------
    +    // Specify an `elementId` parameter, which causes the
    +    // entire model to be loaded into a single Entity that gets this ID.
    +    //-------------------------------------------------------------------------
    +
    +    entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID
    +
    +    //-------------------------------------------------------------------------
    +    // Specify a `metaModelJSON` parameter, which creates a
    +    // MetaModel with two MetaObjects, one of which corresponds
    +    // to our Entity. Then the TreeViewPlugin is able to have a node
    +    // that can represent the model and control the visibility of the Entity.
    +    //--------------------------------------------------------------------------
    +
    +   metaModelJSON: { // Creates a MetaModel with ID "myScanModel"
    +        "metaObjects": [
    +            {
    +                "id": "3toKckUfH2jBmd$7uhJHa6", // Creates a MetaObject with this ID
    +                "name": "My Project",
    +                "type": "Default",
    +                "parent": null
    +            },
    +            {
    +                "id": "3toKckUfH2jBmd$7uhJHa4", // Creates a MetaObject with this ID (same ID as our Entity)
    +                "name": "My Scan",
    +                "type": "Default",
    +                "parent": "3toKckUfH2jBmd$7uhJHa6"
    +            }
    +        ]
    +    }
    +});
    +
    @@ -664,7 +729,7 @@

    - source + source

    @@ -756,7 +821,7 @@

    - source + source

    @@ -801,7 +866,7 @@

    - source + source

    @@ -846,7 +911,7 @@

    - source + source

    @@ -891,7 +956,7 @@

    - source + source

    @@ -939,7 +1004,7 @@

    - source + source

    @@ -983,7 +1048,7 @@

    - source + source

    diff --git a/docs/class/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js~LASDefaultDataSource.html b/docs/class/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js~LASDefaultDataSource.html index 1127351fdc..9d13bfe744 100644 --- a/docs/class/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js~LASDefaultDataSource.html +++ b/docs/class/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js~LASDefaultDataSource.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin.html b/docs/class/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin.html index 00db2bfbcc..c600b0b0f4 100644 --- a/docs/class/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin.html +++ b/docs/class/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -257,13 +259,13 @@
    - + public class | since 2.0.17 - | source + | source
    @@ -386,6 +388,52 @@

    Configuring a custom data source

    < src: "../assets/models/las/autzen.laz" }); +

    Showing a LAS/LAZ model in TreeViewPlugin

    We can use the load() method's elementId parameter +to make LASLoaderPlugin load the entire model into a single Entity that gets this ID.

    +

    In conjunction with that parameter, we can then use the load() method's metaModelJSON parameter to create a MetaModel that +contains a MetaObject that corresponds to that Entity.

    +

    When we've done that, then xeokit's TreeViewPlugin is able to have a node that represents the model and controls +the visibility of that Entity (ie. to control the visibility of the entire model).

    +

    The snippet below shows how this is done.

    +
    import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js";
    +
    +const viewer = new Viewer({
    +    canvasId: "myCanvas",
    +    transparent: true
    +});
    +
    +new TreeViewPlugin(viewer, {
    +    containerElement: document.getElementById("treeViewContainer"),
    +    hierarchy: "containment"
    +});
    +
    +const lasLoader = new LASLoaderPlugin(viewer);
    +
    +const sceneModel = lasLoader.load({  // Creates a SceneModel with ID "myScanModel"
    +    id: "myScanModel",
    +    src: "../../assets/models/las/Nalls_Pumpkin_Hill.laz",
    +    rotation: [-90, 0, 0],
    +
    +    entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID
    +
    +    metaModelJSON: { // Creates a MetaModel with ID "myScanModel"
    +        "metaObjects": [
    +            {
    +                "id": "3toKckUfH2jBmd$7uhJHa6", // Creates this MetaObject with this ID
    +                "name": "My Project",
    +                "type": "Default",
    +                "parent": null
    +            },
    +            {
    +                "id": "3toKckUfH2jBmd$7uhJHa4", // Creates this MetaObject with this ID
    +                "name": "My Scan",
    +                "type": "Default",
    +                "parent": "3toKckUfH2jBmd$7uhJHa6"
    +            }
    +        ]
    +    }
    +});
    +
    @@ -1083,7 +1131,7 @@

    - source + source

    @@ -1193,7 +1241,7 @@

    - source + source

    @@ -1252,7 +1300,7 @@

    - source + source

    @@ -1298,7 +1346,7 @@

    - source + source

    @@ -1343,7 +1391,7 @@

    - source + source

    @@ -1388,7 +1436,7 @@

    - source + source

    @@ -1446,7 +1494,7 @@

    - source + source

    @@ -1491,7 +1539,7 @@

    - source + source

    @@ -1549,7 +1597,7 @@

    - source + source

    @@ -1597,7 +1645,7 @@

    - source + source

    diff --git a/docs/class/src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin.html b/docs/class/src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin.html index 82c783693d..f8fee50f99 100644 --- a/docs/class/src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin.html +++ b/docs/class/src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin.html b/docs/class/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin.html index 5aacb6c163..20487eef95 100644 --- a/docs/class/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin.html +++ b/docs/class/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource.html b/docs/class/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource.html index f0f6ca1134..02a0f1ae91 100644 --- a/docs/class/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource.html +++ b/docs/class/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html b/docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html index ad05a04df9..f15d3549de 100644 --- a/docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html +++ b/docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin.html b/docs/class/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin.html index 60ee34c5f7..2063cebd65 100644 --- a/docs/class/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin.html +++ b/docs/class/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin.html b/docs/class/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin.html index f0b62f3b99..b4acf8c150 100644 --- a/docs/class/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin.html +++ b/docs/class/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/StoreyViewsPlugin/Storey.js~Storey.html b/docs/class/src/plugins/StoreyViewsPlugin/Storey.js~Storey.html index 99b90b3964..e46ce5b2d2 100644 --- a/docs/class/src/plugins/StoreyViewsPlugin/Storey.js~Storey.html +++ b/docs/class/src/plugins/StoreyViewsPlugin/Storey.js~Storey.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap.html b/docs/class/src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap.html index 36f6b7c958..8435c266b8 100644 --- a/docs/class/src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap.html +++ b/docs/class/src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin.html b/docs/class/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin.html index 55c45281db..7e01e5e4c3 100644 --- a/docs/class/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin.html +++ b/docs/class/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/TreeViewPlugin/RenderService.js~RenderService.html b/docs/class/src/plugins/TreeViewPlugin/RenderService.js~RenderService.html index 10a6844889..6191658eb5 100644 --- a/docs/class/src/plugins/TreeViewPlugin/RenderService.js~RenderService.html +++ b/docs/class/src/plugins/TreeViewPlugin/RenderService.js~RenderService.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode.html b/docs/class/src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode.html index 5a5cabd839..3f57ba7fc2 100644 --- a/docs/class/src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode.html +++ b/docs/class/src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin.html b/docs/class/src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin.html index 9f00d15251..916f5ca43a 100644 --- a/docs/class/src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin.html +++ b/docs/class/src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin.html b/docs/class/src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin.html index b01cb6b3a8..84178d7d98 100644 --- a/docs/class/src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin.html +++ b/docs/class/src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js~WebIFCDefaultDataSource.html b/docs/class/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js~WebIFCDefaultDataSource.html index 82328fe042..577722524c 100644 --- a/docs/class/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js~WebIFCDefaultDataSource.html +++ b/docs/class/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js~WebIFCDefaultDataSource.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin.html b/docs/class/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin.html index eefe5cc325..e828a09cce 100644 --- a/docs/class/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin.html +++ b/docs/class/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource.html b/docs/class/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource.html index 32f9a2f03b..7b8a164064 100644 --- a/docs/class/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource.html +++ b/docs/class/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html b/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html index 19e74b1a03..3fe34b052a 100644 --- a/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html +++ b/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin.html b/docs/class/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin.html index 62f8b6525e..b5d4ee1e75 100644 --- a/docs/class/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin.html +++ b/docs/class/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/Configs.js~Configs.html b/docs/class/src/viewer/Configs.js~Configs.html index 6b19aa58dc..bc5e2f01f3 100644 --- a/docs/class/src/viewer/Configs.js~Configs.html +++ b/docs/class/src/viewer/Configs.js~Configs.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/Plugin.js~Plugin.html b/docs/class/src/viewer/Plugin.js~Plugin.html index 8053d30852..4590038a7e 100644 --- a/docs/class/src/viewer/Plugin.js~Plugin.html +++ b/docs/class/src/viewer/Plugin.js~Plugin.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/Viewer.js~Viewer.html b/docs/class/src/viewer/Viewer.js~Viewer.html index 848105de67..55bdc57965 100644 --- a/docs/class/src/viewer/Viewer.js~Viewer.html +++ b/docs/class/src/viewer/Viewer.js~Viewer.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/localization/LocaleService.js~LocaleService.html b/docs/class/src/viewer/localization/LocaleService.js~LocaleService.html index f4ab37a0c1..3c3d8ba6dc 100644 --- a/docs/class/src/viewer/localization/LocaleService.js~LocaleService.html +++ b/docs/class/src/viewer/localization/LocaleService.js~LocaleService.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/metadata/MetaModel.js~MetaModel.html b/docs/class/src/viewer/metadata/MetaModel.js~MetaModel.html index f0fe3a1d86..b290b87e40 100644 --- a/docs/class/src/viewer/metadata/MetaModel.js~MetaModel.html +++ b/docs/class/src/viewer/metadata/MetaModel.js~MetaModel.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/metadata/MetaObject.js~MetaObject.html b/docs/class/src/viewer/metadata/MetaObject.js~MetaObject.html index 892b1fbb26..c160a250c3 100644 --- a/docs/class/src/viewer/metadata/MetaObject.js~MetaObject.html +++ b/docs/class/src/viewer/metadata/MetaObject.js~MetaObject.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/metadata/MetaScene.js~MetaScene.html b/docs/class/src/viewer/metadata/MetaScene.js~MetaScene.html index 684b70045e..216a7a8003 100644 --- a/docs/class/src/viewer/metadata/MetaScene.js~MetaScene.html +++ b/docs/class/src/viewer/metadata/MetaScene.js~MetaScene.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/metadata/Property.js~Property.html b/docs/class/src/viewer/metadata/Property.js~Property.html index 66b2fe07c3..0fb0b7a6f4 100644 --- a/docs/class/src/viewer/metadata/Property.js~Property.html +++ b/docs/class/src/viewer/metadata/Property.js~Property.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/metadata/PropertySet.js~PropertySet.html b/docs/class/src/viewer/metadata/PropertySet.js~PropertySet.html index c9a77ce9f3..18e6941cd8 100644 --- a/docs/class/src/viewer/metadata/PropertySet.js~PropertySet.html +++ b/docs/class/src/viewer/metadata/PropertySet.js~PropertySet.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/Bitmap/Bitmap.js~Bitmap.html b/docs/class/src/viewer/scene/Bitmap/Bitmap.js~Bitmap.html index 14b0c0ac5e..c63ad64e04 100644 --- a/docs/class/src/viewer/scene/Bitmap/Bitmap.js~Bitmap.html +++ b/docs/class/src/viewer/scene/Bitmap/Bitmap.js~Bitmap.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/CameraControl/CameraControl.js~CameraControl.html b/docs/class/src/viewer/scene/CameraControl/CameraControl.js~CameraControl.html index d061309a3a..ead735a7c1 100644 --- a/docs/class/src/viewer/scene/CameraControl/CameraControl.js~CameraControl.html +++ b/docs/class/src/viewer/scene/CameraControl/CameraControl.js~CameraControl.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/Component.js~Component.html b/docs/class/src/viewer/scene/Component.js~Component.html index 8c8df1be99..067c5ddbe5 100644 --- a/docs/class/src/viewer/scene/Component.js~Component.html +++ b/docs/class/src/viewer/scene/Component.js~Component.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/Entity.js~Entity.html b/docs/class/src/viewer/scene/Entity.js~Entity.html index 685221f3af..7cdd411dff 100644 --- a/docs/class/src/viewer/scene/Entity.js~Entity.html +++ b/docs/class/src/viewer/scene/Entity.js~Entity.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane.html b/docs/class/src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane.html index 0d22456d1f..6e4d6653b0 100644 --- a/docs/class/src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane.html +++ b/docs/class/src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/LineSet/LineSet.js~LineSet.html b/docs/class/src/viewer/scene/LineSet/LineSet.js~LineSet.html index 7f70700859..cab8b5405a 100644 --- a/docs/class/src/viewer/scene/LineSet/LineSet.js~LineSet.html +++ b/docs/class/src/viewer/scene/LineSet/LineSet.js~LineSet.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/camera/Camera.js~Camera.html b/docs/class/src/viewer/scene/camera/Camera.js~Camera.html index 2271260a18..131f6f6411 100644 --- a/docs/class/src/viewer/scene/camera/Camera.js~Camera.html +++ b/docs/class/src/viewer/scene/camera/Camera.js~Camera.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation.html b/docs/class/src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation.html index da6bb6b19d..07e97859c0 100644 --- a/docs/class/src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation.html +++ b/docs/class/src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/camera/CameraPath.js~CameraPath.html b/docs/class/src/viewer/scene/camera/CameraPath.js~CameraPath.html index c752bdf88b..67743aae29 100644 --- a/docs/class/src/viewer/scene/camera/CameraPath.js~CameraPath.html +++ b/docs/class/src/viewer/scene/camera/CameraPath.js~CameraPath.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation.html b/docs/class/src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation.html index 11091a87db..c732ac902f 100644 --- a/docs/class/src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation.html +++ b/docs/class/src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/camera/CustomProjection.js~CustomProjection.html b/docs/class/src/viewer/scene/camera/CustomProjection.js~CustomProjection.html index e2b9c74094..49d25f264b 100644 --- a/docs/class/src/viewer/scene/camera/CustomProjection.js~CustomProjection.html +++ b/docs/class/src/viewer/scene/camera/CustomProjection.js~CustomProjection.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/camera/Frustum.js~Frustum.html b/docs/class/src/viewer/scene/camera/Frustum.js~Frustum.html index e29005a0dd..5fa9b7f3f0 100644 --- a/docs/class/src/viewer/scene/camera/Frustum.js~Frustum.html +++ b/docs/class/src/viewer/scene/camera/Frustum.js~Frustum.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/camera/Ortho.js~Ortho.html b/docs/class/src/viewer/scene/camera/Ortho.js~Ortho.html index 6c204273ad..abd14ea70c 100644 --- a/docs/class/src/viewer/scene/camera/Ortho.js~Ortho.html +++ b/docs/class/src/viewer/scene/camera/Ortho.js~Ortho.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/camera/Perspective.js~Perspective.html b/docs/class/src/viewer/scene/camera/Perspective.js~Perspective.html index b8309f1411..a05f52a57d 100644 --- a/docs/class/src/viewer/scene/camera/Perspective.js~Perspective.html +++ b/docs/class/src/viewer/scene/camera/Perspective.js~Perspective.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/canvas/Canvas.js~Canvas.html b/docs/class/src/viewer/scene/canvas/Canvas.js~Canvas.html index 689bc8aaa6..20320b8eb6 100644 --- a/docs/class/src/viewer/scene/canvas/Canvas.js~Canvas.html +++ b/docs/class/src/viewer/scene/canvas/Canvas.js~Canvas.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/canvas/Spinner.js~Spinner.html b/docs/class/src/viewer/scene/canvas/Spinner.js~Spinner.html index e2678a88c2..093e285b72 100644 --- a/docs/class/src/viewer/scene/canvas/Spinner.js~Spinner.html +++ b/docs/class/src/viewer/scene/canvas/Spinner.js~Spinner.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/geometry/Geometry.js~Geometry.html b/docs/class/src/viewer/scene/geometry/Geometry.js~Geometry.html index b8f6c489e6..35a8fea994 100644 --- a/docs/class/src/viewer/scene/geometry/Geometry.js~Geometry.html +++ b/docs/class/src/viewer/scene/geometry/Geometry.js~Geometry.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry.html b/docs/class/src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry.html index ad464dd9cd..b6956c47fd 100644 --- a/docs/class/src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry.html +++ b/docs/class/src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry.html b/docs/class/src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry.html index f65d7bc2cd..1b6637fe23 100644 --- a/docs/class/src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry.html +++ b/docs/class/src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/input/Input.js~Input.html b/docs/class/src/viewer/scene/input/Input.js~Input.html index fce4349a13..9e91426f74 100644 --- a/docs/class/src/viewer/scene/input/Input.js~Input.html +++ b/docs/class/src/viewer/scene/input/Input.js~Input.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/lights/AmbientLight.js~AmbientLight.html b/docs/class/src/viewer/scene/lights/AmbientLight.js~AmbientLight.html index e0700f8b59..eb258428fc 100644 --- a/docs/class/src/viewer/scene/lights/AmbientLight.js~AmbientLight.html +++ b/docs/class/src/viewer/scene/lights/AmbientLight.js~AmbientLight.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/lights/CubeTexture.js~CubeTexture.html b/docs/class/src/viewer/scene/lights/CubeTexture.js~CubeTexture.html index ec9d600d07..56177c814e 100644 --- a/docs/class/src/viewer/scene/lights/CubeTexture.js~CubeTexture.html +++ b/docs/class/src/viewer/scene/lights/CubeTexture.js~CubeTexture.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/lights/DirLight.js~DirLight.html b/docs/class/src/viewer/scene/lights/DirLight.js~DirLight.html index 70d7fe61ac..64dc067f70 100644 --- a/docs/class/src/viewer/scene/lights/DirLight.js~DirLight.html +++ b/docs/class/src/viewer/scene/lights/DirLight.js~DirLight.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/lights/Light.js~Light.html b/docs/class/src/viewer/scene/lights/Light.js~Light.html index add0ce9519..7ba8f853d6 100644 --- a/docs/class/src/viewer/scene/lights/Light.js~Light.html +++ b/docs/class/src/viewer/scene/lights/Light.js~Light.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/lights/LightMap.js~LightMap.html b/docs/class/src/viewer/scene/lights/LightMap.js~LightMap.html index e84159abb2..66fe829273 100644 --- a/docs/class/src/viewer/scene/lights/LightMap.js~LightMap.html +++ b/docs/class/src/viewer/scene/lights/LightMap.js~LightMap.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/lights/PointLight.js~PointLight.html b/docs/class/src/viewer/scene/lights/PointLight.js~PointLight.html index 9c66347fd6..4f864549ff 100644 --- a/docs/class/src/viewer/scene/lights/PointLight.js~PointLight.html +++ b/docs/class/src/viewer/scene/lights/PointLight.js~PointLight.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/lights/ReflectionMap.js~ReflectionMap.html b/docs/class/src/viewer/scene/lights/ReflectionMap.js~ReflectionMap.html index 8df5e05932..97a4a452e5 100644 --- a/docs/class/src/viewer/scene/lights/ReflectionMap.js~ReflectionMap.html +++ b/docs/class/src/viewer/scene/lights/ReflectionMap.js~ReflectionMap.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/lights/Shadow.js~Shadow.html b/docs/class/src/viewer/scene/lights/Shadow.js~Shadow.html index 2f066f7922..a3c39c5eb1 100644 --- a/docs/class/src/viewer/scene/lights/Shadow.js~Shadow.html +++ b/docs/class/src/viewer/scene/lights/Shadow.js~Shadow.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/marker/Marker.js~Marker.html b/docs/class/src/viewer/scene/marker/Marker.js~Marker.html index 4af1169537..5765f47869 100644 --- a/docs/class/src/viewer/scene/marker/Marker.js~Marker.html +++ b/docs/class/src/viewer/scene/marker/Marker.js~Marker.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/marker/SpriteMarker.js~SpriteMarker.html b/docs/class/src/viewer/scene/marker/SpriteMarker.js~SpriteMarker.html index e0f20cc45a..0aa84c4167 100644 --- a/docs/class/src/viewer/scene/marker/SpriteMarker.js~SpriteMarker.html +++ b/docs/class/src/viewer/scene/marker/SpriteMarker.js~SpriteMarker.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial.html b/docs/class/src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial.html index 7dc5564a89..f678f6fa79 100644 --- a/docs/class/src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial.html +++ b/docs/class/src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial.html b/docs/class/src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial.html index 2503039924..bfb8848a23 100644 --- a/docs/class/src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial.html +++ b/docs/class/src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/Fresnel.js~Fresnel.html b/docs/class/src/viewer/scene/materials/Fresnel.js~Fresnel.html index 4881b7cc8e..7740eac67b 100644 --- a/docs/class/src/viewer/scene/materials/Fresnel.js~Fresnel.html +++ b/docs/class/src/viewer/scene/materials/Fresnel.js~Fresnel.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/LambertMaterial.js~LambertMaterial.html b/docs/class/src/viewer/scene/materials/LambertMaterial.js~LambertMaterial.html index 0de9baa773..7e57ca9778 100644 --- a/docs/class/src/viewer/scene/materials/LambertMaterial.js~LambertMaterial.html +++ b/docs/class/src/viewer/scene/materials/LambertMaterial.js~LambertMaterial.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/LinesMaterial.js~LinesMaterial.html b/docs/class/src/viewer/scene/materials/LinesMaterial.js~LinesMaterial.html index 47fff68363..34e39230d1 100644 --- a/docs/class/src/viewer/scene/materials/LinesMaterial.js~LinesMaterial.html +++ b/docs/class/src/viewer/scene/materials/LinesMaterial.js~LinesMaterial.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/Material.js~Material.html b/docs/class/src/viewer/scene/materials/Material.js~Material.html index 1a5d85f7b5..7fc2f73f04 100644 --- a/docs/class/src/viewer/scene/materials/Material.js~Material.html +++ b/docs/class/src/viewer/scene/materials/Material.js~Material.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial.html b/docs/class/src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial.html index 9debc54db7..09cd1800a0 100644 --- a/docs/class/src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial.html +++ b/docs/class/src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/PhongMaterial.js~PhongMaterial.html b/docs/class/src/viewer/scene/materials/PhongMaterial.js~PhongMaterial.html index 8ff01bc41a..39c4fc04e2 100644 --- a/docs/class/src/viewer/scene/materials/PhongMaterial.js~PhongMaterial.html +++ b/docs/class/src/viewer/scene/materials/PhongMaterial.js~PhongMaterial.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/PointsMaterial.js~PointsMaterial.html b/docs/class/src/viewer/scene/materials/PointsMaterial.js~PointsMaterial.html index b415b13002..f2863a3ca5 100644 --- a/docs/class/src/viewer/scene/materials/PointsMaterial.js~PointsMaterial.html +++ b/docs/class/src/viewer/scene/materials/PointsMaterial.js~PointsMaterial.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial.html b/docs/class/src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial.html index 177f6e5f81..fa6e4102f8 100644 --- a/docs/class/src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial.html +++ b/docs/class/src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/materials/Texture.js~Texture.html b/docs/class/src/viewer/scene/materials/Texture.js~Texture.html index 7c3ee46652..838c21e260 100644 --- a/docs/class/src/viewer/scene/materials/Texture.js~Texture.html +++ b/docs/class/src/viewer/scene/materials/Texture.js~Texture.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/mementos/CameraMemento.js~CameraMemento.html b/docs/class/src/viewer/scene/mementos/CameraMemento.js~CameraMemento.html index 7da0e1bc34..d1093efe99 100644 --- a/docs/class/src/viewer/scene/mementos/CameraMemento.js~CameraMemento.html +++ b/docs/class/src/viewer/scene/mementos/CameraMemento.js~CameraMemento.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/mementos/ModelMemento.js~ModelMemento.html b/docs/class/src/viewer/scene/mementos/ModelMemento.js~ModelMemento.html index 6c40de429f..e588d4f526 100644 --- a/docs/class/src/viewer/scene/mementos/ModelMemento.js~ModelMemento.html +++ b/docs/class/src/viewer/scene/mementos/ModelMemento.js~ModelMemento.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento.html b/docs/class/src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento.html index 08ba28ffb4..7ddf7852ef 100644 --- a/docs/class/src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento.html +++ b/docs/class/src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/mesh/Mesh.js~Mesh.html b/docs/class/src/viewer/scene/mesh/Mesh.js~Mesh.html index c6231b693f..b5b8e8bd65 100644 --- a/docs/class/src/viewer/scene/mesh/Mesh.js~Mesh.html +++ b/docs/class/src/viewer/scene/mesh/Mesh.js~Mesh.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/metriqs/Metriqs.js~Metrics.html b/docs/class/src/viewer/scene/metriqs/Metriqs.js~Metrics.html index c6d012c766..41c13c26d5 100644 --- a/docs/class/src/viewer/scene/metriqs/Metriqs.js~Metrics.html +++ b/docs/class/src/viewer/scene/metriqs/Metriqs.js~Metrics.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/model/PerformanceModel.js~PerformanceModel.html b/docs/class/src/viewer/scene/model/PerformanceModel.js~PerformanceModel.html index ed02893e62..11029028bd 100644 --- a/docs/class/src/viewer/scene/model/PerformanceModel.js~PerformanceModel.html +++ b/docs/class/src/viewer/scene/model/PerformanceModel.js~PerformanceModel.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/model/SceneModel.js~SceneModel.html b/docs/class/src/viewer/scene/model/SceneModel.js~SceneModel.html index fb0431f2c3..1311f8c387 100644 --- a/docs/class/src/viewer/scene/model/SceneModel.js~SceneModel.html +++ b/docs/class/src/viewer/scene/model/SceneModel.js~SceneModel.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -257,13 +259,13 @@
    - + public class - | source + | source
    @@ -4010,7 +4012,7 @@

    - source + source

    @@ -4296,7 +4298,7 @@

    - source + source

    @@ -4342,7 +4344,7 @@

    - source + source

    @@ -4387,7 +4389,7 @@

    - source + source

    @@ -4440,7 +4442,7 @@

    - source + source

    @@ -4484,7 +4486,7 @@

    - source + source

    @@ -4528,7 +4530,7 @@

    - source + source

    @@ -4573,7 +4575,7 @@

    - source + source

    @@ -4618,7 +4620,7 @@

    - source + source

    @@ -4662,7 +4664,7 @@

    - source + source

    @@ -4706,7 +4708,7 @@

    - source + source

    @@ -4751,7 +4753,7 @@

    - source + source

    @@ -4796,7 +4798,7 @@

    - source + source

    @@ -4842,7 +4844,7 @@

    - source + source

    @@ -4887,7 +4889,7 @@

    - source + source

    @@ -4932,7 +4934,7 @@

    - source + source

    @@ -4977,7 +4979,7 @@

    - source + source

    @@ -5021,7 +5023,7 @@

    - source + source

    @@ -5065,7 +5067,7 @@

    - source + source

    @@ -5121,7 +5123,7 @@

    - source + source

    @@ -5166,7 +5168,7 @@

    - source + source

    @@ -5210,7 +5212,7 @@

    - source + source

    @@ -5254,7 +5256,7 @@

    - source + source

    @@ -5298,7 +5300,7 @@

    - source + source

    @@ -5342,7 +5344,7 @@

    - source + source

    @@ -5388,7 +5390,7 @@

    - source + source

    @@ -5432,7 +5434,7 @@

    - source + source

    @@ -5476,7 +5478,7 @@

    - source + source

    @@ -5519,7 +5521,7 @@

    - source + source

    @@ -5564,7 +5566,7 @@

    - source + source

    @@ -5609,7 +5611,7 @@

    - source + source

    @@ -5666,7 +5668,7 @@

    - source + source

    @@ -5709,7 +5711,7 @@

    - source + source

    @@ -5753,7 +5755,7 @@

    - source + source

    @@ -5797,7 +5799,7 @@

    - source + source

    @@ -5841,7 +5843,7 @@

    - source + source

    @@ -5899,7 +5901,7 @@

    - source + source

    @@ -5944,7 +5946,7 @@

    - source + source

    @@ -5989,7 +5991,7 @@

    - source + source

    @@ -6035,7 +6037,7 @@

    - source + source

    @@ -6080,7 +6082,7 @@

    - source + source

    @@ -6125,7 +6127,7 @@

    - source + source

    @@ -6170,7 +6172,7 @@

    - source + source

    @@ -6215,7 +6217,7 @@

    - source + source

    @@ -6260,7 +6262,7 @@

    - source + source

    @@ -6305,7 +6307,7 @@

    - source + source

    @@ -6350,7 +6352,7 @@

    - source + source

    @@ -6394,7 +6396,7 @@

    - source + source

    @@ -6438,7 +6440,7 @@

    - source + source

    @@ -6483,7 +6485,7 @@

    - source + source

    @@ -6528,7 +6530,7 @@

    - source + source

    @@ -6572,7 +6574,7 @@

    - source + source

    @@ -6617,7 +6619,7 @@

    - source + source

    @@ -6663,7 +6665,7 @@

    - source + source

    @@ -6708,7 +6710,7 @@

    - source + source

    @@ -6753,7 +6755,7 @@

    - source + source

    @@ -6797,7 +6799,7 @@

    - source + source

    @@ -6841,7 +6843,7 @@

    - source + source

    @@ -6886,7 +6888,7 @@

    - source + source

    @@ -6943,7 +6945,7 @@

    - source + source

    @@ -7003,7 +7005,7 @@

    - source + source

    @@ -7060,7 +7062,7 @@

    - source + source

    @@ -7105,7 +7107,7 @@

    - source + source

    @@ -7151,7 +7153,7 @@

    - source + source

    @@ -7211,7 +7213,7 @@

    - source + source

    @@ -7255,7 +7257,7 @@

    - source + source

    @@ -7300,7 +7302,7 @@

    - source + source

    @@ -7344,7 +7346,7 @@

    - source + source

    @@ -7391,7 +7393,7 @@

    - source + source

    @@ -7583,7 +7585,7 @@

    - source + source

    @@ -7756,7 +7758,7 @@

    - source + source

    @@ -7942,6 +7944,13 @@

    Params:

    Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by transformId.

    + + cfg.quaternion + Number[] +
    • optional
    +

    Rotation of the mesh as a quaternion. Overridden by rotation.

    + + cfg.matrix Number[] @@ -8029,7 +8038,7 @@

    - source + source

    @@ -8088,7 +8097,7 @@

    - source + source

    @@ -8249,7 +8258,7 @@

    - source + source

    @@ -8373,7 +8382,7 @@

    - source + source

    @@ -8498,7 +8507,7 @@

    - source + source

    @@ -8542,7 +8551,7 @@

    - source + source

    diff --git a/docs/class/src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity.html b/docs/class/src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity.html index c2230d5dd6..06cc485826 100644 --- a/docs/class/src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity.html +++ b/docs/class/src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh.html b/docs/class/src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh.html index 36050170f9..f8b24866ad 100644 --- a/docs/class/src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh.html +++ b/docs/class/src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/model/SceneModelTexture.js~SceneModelTexture.html b/docs/class/src/viewer/scene/model/SceneModelTexture.js~SceneModelTexture.html index 1ca2364cd5..a6e4259b64 100644 --- a/docs/class/src/viewer/scene/model/SceneModelTexture.js~SceneModelTexture.html +++ b/docs/class/src/viewer/scene/model/SceneModelTexture.js~SceneModelTexture.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet.html b/docs/class/src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet.html index 7fb1a1da61..be6bfaf666 100644 --- a/docs/class/src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet.html +++ b/docs/class/src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform.html b/docs/class/src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform.html index fe00b87277..c355e4037f 100644 --- a/docs/class/src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform.html +++ b/docs/class/src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/model/VBOSceneModel.js~VBOSceneModel.html b/docs/class/src/viewer/scene/model/VBOSceneModel.js~VBOSceneModel.html index a81ff7e1bc..b705846f9b 100644 --- a/docs/class/src/viewer/scene/model/VBOSceneModel.js~VBOSceneModel.html +++ b/docs/class/src/viewer/scene/model/VBOSceneModel.js~VBOSceneModel.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/nodes/Node.js~Node.html b/docs/class/src/viewer/scene/nodes/Node.js~Node.html index a41e1a962d..ea23b6e29f 100644 --- a/docs/class/src/viewer/scene/nodes/Node.js~Node.html +++ b/docs/class/src/viewer/scene/nodes/Node.js~Node.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve.html b/docs/class/src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve.html index 7c128ee28e..2cf3a5a9db 100644 --- a/docs/class/src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve.html +++ b/docs/class/src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/paths/Curve.js~Curve.html b/docs/class/src/viewer/scene/paths/Curve.js~Curve.html index 588f134369..5280a1baff 100644 --- a/docs/class/src/viewer/scene/paths/Curve.js~Curve.html +++ b/docs/class/src/viewer/scene/paths/Curve.js~Curve.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/paths/Path.js~Path.html b/docs/class/src/viewer/scene/paths/Path.js~Path.html index 243114fe6e..9a27cdf185 100644 --- a/docs/class/src/viewer/scene/paths/Path.js~Path.html +++ b/docs/class/src/viewer/scene/paths/Path.js~Path.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve.html b/docs/class/src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve.html index 298c63471e..775561f359 100644 --- a/docs/class/src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve.html +++ b/docs/class/src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/paths/SplineCurve.js~SplineCurve.html b/docs/class/src/viewer/scene/paths/SplineCurve.js~SplineCurve.html index 3a7c300a6f..1f834572ad 100644 --- a/docs/class/src/viewer/scene/paths/SplineCurve.js~SplineCurve.html +++ b/docs/class/src/viewer/scene/paths/SplineCurve.js~SplineCurve.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/postfx/CrossSections.js~CrossSections.html b/docs/class/src/viewer/scene/postfx/CrossSections.js~CrossSections.html index abf713d9fc..67b50928c1 100644 --- a/docs/class/src/viewer/scene/postfx/CrossSections.js~CrossSections.html +++ b/docs/class/src/viewer/scene/postfx/CrossSections.js~CrossSections.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/postfx/SAO.js~SAO.html b/docs/class/src/viewer/scene/postfx/SAO.js~SAO.html index 4afb406846..83259f723e 100644 --- a/docs/class/src/viewer/scene/postfx/SAO.js~SAO.html +++ b/docs/class/src/viewer/scene/postfx/SAO.js~SAO.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/scene/Scene.js~Scene.html b/docs/class/src/viewer/scene/scene/Scene.js~Scene.html index c2a2731c45..8ea2e43871 100644 --- a/docs/class/src/viewer/scene/scene/Scene.js~Scene.html +++ b/docs/class/src/viewer/scene/scene/Scene.js~Scene.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane.html b/docs/class/src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane.html index 5258ea46e7..ddd8ff703a 100644 --- a/docs/class/src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane.html +++ b/docs/class/src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache.html b/docs/class/src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache.html index ccf45812fb..ce73155157 100644 --- a/docs/class/src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache.html +++ b/docs/class/src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/skybox/Skybox.js~Skybox.html b/docs/class/src/viewer/scene/skybox/Skybox.js~Skybox.html index 1d100b6a02..723699f807 100644 --- a/docs/class/src/viewer/scene/skybox/Skybox.js~Skybox.html +++ b/docs/class/src/viewer/scene/skybox/Skybox.js~Skybox.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/utils/FileLoader.js~FileLoader.html b/docs/class/src/viewer/scene/utils/FileLoader.js~FileLoader.html index 5131a395b9..6b212b2d8b 100644 --- a/docs/class/src/viewer/scene/utils/FileLoader.js~FileLoader.html +++ b/docs/class/src/viewer/scene/utils/FileLoader.js~FileLoader.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/utils/Loader.js~Loader.html b/docs/class/src/viewer/scene/utils/Loader.js~Loader.html index ebf9e79ba2..8779c27f39 100644 --- a/docs/class/src/viewer/scene/utils/Loader.js~Loader.html +++ b/docs/class/src/viewer/scene/utils/Loader.js~Loader.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/utils/LoadingManager.js~LoadingManager.html b/docs/class/src/viewer/scene/utils/LoadingManager.js~LoadingManager.html index b7bfd52f08..47d14b9aeb 100644 --- a/docs/class/src/viewer/scene/utils/LoadingManager.js~LoadingManager.html +++ b/docs/class/src/viewer/scene/utils/LoadingManager.js~LoadingManager.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/utils/WorkerPool.js~WorkerPool.html b/docs/class/src/viewer/scene/utils/WorkerPool.js~WorkerPool.html index c267b627bc..d2c9863a3b 100644 --- a/docs/class/src/viewer/scene/utils/WorkerPool.js~WorkerPool.html +++ b/docs/class/src/viewer/scene/utils/WorkerPool.js~WorkerPool.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder.html b/docs/class/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder.html index 880a8208cf..52737a1328 100644 --- a/docs/class/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder.html +++ b/docs/class/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js~TextureTranscoder.html b/docs/class/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js~TextureTranscoder.html index baa39bbc38..62e72edcc2 100644 --- a/docs/class/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js~TextureTranscoder.html +++ b/docs/class/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js~TextureTranscoder.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/viewport/Viewport.js~Viewport.html b/docs/class/src/viewer/scene/viewport/Viewport.js~Viewport.html index daf49174e9..571d4cdb8e 100644 --- a/docs/class/src/viewer/scene/viewport/Viewport.js~Viewport.html +++ b/docs/class/src/viewer/scene/viewport/Viewport.js~Viewport.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/class/src/viewer/scene/webgl/PickResult.js~PickResult.html b/docs/class/src/viewer/scene/webgl/PickResult.js~PickResult.html index b5327e7f5d..41153f8e1a 100644 --- a/docs/class/src/viewer/scene/webgl/PickResult.js~PickResult.html +++ b/docs/class/src/viewer/scene/webgl/PickResult.js~PickResult.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/coverage.json b/docs/coverage.json index b04e8970b0..d15d40c9d2 100644 --- a/docs/coverage.json +++ b/docs/coverage.json @@ -1,7 +1,7 @@ { - "coverage": "40.14%", - "expectCount": 7086, - "actualCount": 2845, + "coverage": "40.21%", + "expectCount": 7100, + "actualCount": 2855, "files": { "src/extras/ContextMenu/ContextMenu.js": { "expectCount": 61, @@ -499,6 +499,21 @@ 756 ] }, + "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js": { + "expectCount": 3, + "actualCount": 2, + "undocumentLines": [ + 10 + ] + }, + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js": { + "expectCount": 10, + "actualCount": 8, + "undocumentLines": [ + 245, + 267 + ] + }, "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js": { "expectCount": 35, "actualCount": 11, @@ -615,9 +630,9 @@ "expectCount": 11, "actualCount": 8, "undocumentLines": [ - 176, - 190, - 212 + 249, + 263, + 285 ] }, "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js": { @@ -656,13 +671,13 @@ "actualCount": 11, "undocumentLines": [ 10, - 555, - 191, - 213, - 235, - 261, - 321, - 340 + 609, + 245, + 267, + 289, + 315, + 375, + 394 ] }, "src/plugins/NavCubePlugin/CubeTextureCanvas.js": { @@ -2726,42 +2741,42 @@ "undocumentLines": [] }, "src/viewer/scene/model/SceneModel.js": { - "expectCount": 215, + "expectCount": 216, "actualCount": 117, "undocumentLines": [ 43, 45, - 47, + 46, 48, 49, 50, 51, - 53, + 52, 54, 55, 56, 57, 58, - 60, - 62, + 59, + 61, 63, 64, - 1130, - 1132, + 65, + 1131, 1133, - 1135, + 1134, 1136, - 1138, - 1140, + 1137, + 1139, 1141, - 1143, - 1145, + 1142, + 1144, 1146, 1147, - 1149, - 1151, + 1148, + 1150, 1152, - 1154, + 1153, 1155, 1156, 1157, @@ -2769,64 +2784,65 @@ 1159, 1160, 1161, - 1224, + 1162, 1225, 1226, 1227, - 1229, - 1233, + 1228, + 1230, 1234, 1235, 1236, 1237, - 1242, - 1244, + 1238, + 1243, 1245, 1246, 1247, - 1251, - 1256, + 1248, + 1252, 1257, 1258, 1259, - 1262, + 1260, 1263, - 1265, + 1264, 1266, 1267, - 1269, - 1274, - 1278, + 1268, + 1270, + 1275, 1279, - 1281, - 1305, - 1309, - 1594, - 1619, - 1624, - 1630, - 1736, - 1852, - 1875, - 1898, - 1921, - 1944, - 1971, - 1998, - 2021, - 2047, - 2122, - 2144, - 3063, - 3098, - 3155, - 3186, - 3286, - 3298, - 3449, - 3579, - 3598, - 4020 + 1280, + 1282, + 1306, + 1310, + 1595, + 1620, + 1625, + 1631, + 1737, + 1853, + 1876, + 1899, + 1922, + 1945, + 1972, + 1999, + 2022, + 2048, + 2123, + 2145, + 3071, + 3106, + 3163, + 3194, + 3294, + 3306, + 3457, + 3587, + 3606, + 4028 ] }, "src/viewer/scene/model/SceneModelEntity.js": { diff --git a/docs/file/src/extras/ContextMenu/ContextMenu.js.html b/docs/file/src/extras/ContextMenu/ContextMenu.js.html index e46f3790c5..97bb95002a 100644 --- a/docs/file/src/extras/ContextMenu/ContextMenu.js.html +++ b/docs/file/src/extras/ContextMenu/ContextMenu.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/ContextMenu/index.js.html b/docs/file/src/extras/ContextMenu/index.js.html index 2f5a2130e9..2847a65479 100644 --- a/docs/file/src/extras/ContextMenu/index.js.html +++ b/docs/file/src/extras/ContextMenu/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/MarqueePicker/MarqueePicker.js.html b/docs/file/src/extras/MarqueePicker/MarqueePicker.js.html index 3a9d2868eb..3714a0bfce 100644 --- a/docs/file/src/extras/MarqueePicker/MarqueePicker.js.html +++ b/docs/file/src/extras/MarqueePicker/MarqueePicker.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/MarqueePicker/MarqueePickerMouseControl.js.html b/docs/file/src/extras/MarqueePicker/MarqueePickerMouseControl.js.html index a94d4478ef..70659c0a51 100644 --- a/docs/file/src/extras/MarqueePicker/MarqueePickerMouseControl.js.html +++ b/docs/file/src/extras/MarqueePicker/MarqueePickerMouseControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/MarqueePicker/index.js.html b/docs/file/src/extras/MarqueePicker/index.js.html index cf8b5cf63b..da6d2bea5d 100644 --- a/docs/file/src/extras/MarqueePicker/index.js.html +++ b/docs/file/src/extras/MarqueePicker/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/PointerCircle/PointerCircle.js.html b/docs/file/src/extras/PointerCircle/PointerCircle.js.html index b01f3c0902..9f4d368487 100644 --- a/docs/file/src/extras/PointerCircle/PointerCircle.js.html +++ b/docs/file/src/extras/PointerCircle/PointerCircle.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/PointerCircle/index.js.html b/docs/file/src/extras/PointerCircle/index.js.html index 02f7b82e40..dc135257a9 100644 --- a/docs/file/src/extras/PointerCircle/index.js.html +++ b/docs/file/src/extras/PointerCircle/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/PointerLens/PointerLens.js.html b/docs/file/src/extras/PointerLens/PointerLens.js.html index e23dbbf9b2..20a0f8038d 100644 --- a/docs/file/src/extras/PointerLens/PointerLens.js.html +++ b/docs/file/src/extras/PointerLens/PointerLens.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/PointerLens/index.js.html b/docs/file/src/extras/PointerLens/index.js.html index ea17394811..69f17fe716 100644 --- a/docs/file/src/extras/PointerLens/index.js.html +++ b/docs/file/src/extras/PointerLens/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/collision/ObjectsKdTree3.js.html b/docs/file/src/extras/collision/ObjectsKdTree3.js.html index a00c818004..fed5c1fcb5 100644 --- a/docs/file/src/extras/collision/ObjectsKdTree3.js.html +++ b/docs/file/src/extras/collision/ObjectsKdTree3.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/collision/index.js.html b/docs/file/src/extras/collision/index.js.html index a7818199bc..0fdc794e23 100644 --- a/docs/file/src/extras/collision/index.js.html +++ b/docs/file/src/extras/collision/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/extras/index.js.html b/docs/file/src/extras/index.js.html index 7f90d32509..ab1877f046 100644 --- a/docs/file/src/extras/index.js.html +++ b/docs/file/src/extras/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/index.js.html b/docs/file/src/index.js.html index 296e23d1e6..b4d9a22f01 100644 --- a/docs/file/src/index.js.html +++ b/docs/file/src/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js.html index 1af55b24c0..ced93a0a82 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js.html index 60f50c98c4..e9543c8d27 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js.html index c9f4e4f459..9d2960e085 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.html index 34a944becb..ec66dfdc64 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js.html index b688169dce..00e7e17db2 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/index.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/index.js.html index 6110331fb1..5d50634152 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/index.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AnnotationsPlugin/Annotation.js.html b/docs/file/src/plugins/AnnotationsPlugin/Annotation.js.html index 71a3acdc41..2228d04866 100644 --- a/docs/file/src/plugins/AnnotationsPlugin/Annotation.js.html +++ b/docs/file/src/plugins/AnnotationsPlugin/Annotation.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js.html b/docs/file/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js.html index 208cfc8f17..f457e87ca5 100644 --- a/docs/file/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js.html +++ b/docs/file/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AnnotationsPlugin/index.js.html b/docs/file/src/plugins/AnnotationsPlugin/index.js.html index a3f0c3b099..56e46a126d 100644 --- a/docs/file/src/plugins/AnnotationsPlugin/index.js.html +++ b/docs/file/src/plugins/AnnotationsPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js.html b/docs/file/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js.html index 601575687a..46832a76c1 100644 --- a/docs/file/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js.html +++ b/docs/file/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/AxisGizmoPlugin/index.js.html b/docs/file/src/plugins/AxisGizmoPlugin/index.js.html index 46cae31c66..bb5af575f6 100644 --- a/docs/file/src/plugins/AxisGizmoPlugin/index.js.html +++ b/docs/file/src/plugins/AxisGizmoPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js.html b/docs/file/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js.html index 8b291c7800..039b557216 100644 --- a/docs/file/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js.html +++ b/docs/file/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/BCFViewpointsPlugin/index.js.html b/docs/file/src/plugins/BCFViewpointsPlugin/index.js.html index f0b32b2069..be70104b4f 100644 --- a/docs/file/src/plugins/BCFViewpointsPlugin/index.js.html +++ b/docs/file/src/plugins/BCFViewpointsPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js.html b/docs/file/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js.html index 98ac29779b..9a05b78f52 100644 --- a/docs/file/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js.html +++ b/docs/file/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js.html b/docs/file/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js.html index 7427b219b6..9b363f955a 100644 --- a/docs/file/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js.html +++ b/docs/file/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/CityJSONLoaderPlugin/index.js.html b/docs/file/src/plugins/CityJSONLoaderPlugin/index.js.html index 7f898ac7db..649ac81353 100644 --- a/docs/file/src/plugins/CityJSONLoaderPlugin/index.js.html +++ b/docs/file/src/plugins/CityJSONLoaderPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js.html index a97b441c20..c94a65c2d3 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js.html index 98cba43a96..1e54c84d53 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js.html index 5c57698487..6ca273ccc8 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js.html index cf69acdbb2..524a2c4358 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js.html index 25f579ca18..a49566ef00 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/index.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/index.js.html index f34654083a..f2e2697a6a 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/index.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js.html b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js.html index 37f8c54e41..abe990e5ac 100644 --- a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js.html +++ b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js.html b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js.html index af426e9a17..c8fcb82a5e 100644 --- a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js.html +++ b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js.html b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js.html index b3bad0e6df..2b1c1ffba6 100644 --- a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js.html +++ b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js.html b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js.html index 7212e82e19..99ab29fd37 100644 --- a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js.html +++ b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/index.js.html b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/index.js.html index 0ecc4adf19..116bddb250 100644 --- a/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/index.js.html +++ b/docs/file/src/plugins/FaceAlignedSectionPlanesPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/FastNavPlugin/FastNavPlugin.js.html b/docs/file/src/plugins/FastNavPlugin/FastNavPlugin.js.html index f984b1f682..3917ce857c 100644 --- a/docs/file/src/plugins/FastNavPlugin/FastNavPlugin.js.html +++ b/docs/file/src/plugins/FastNavPlugin/FastNavPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/FastNavPlugin/index.js.html b/docs/file/src/plugins/FastNavPlugin/index.js.html index 82ed4a3696..a4d9c02ca4 100644 --- a/docs/file/src/plugins/FastNavPlugin/index.js.html +++ b/docs/file/src/plugins/FastNavPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html index fc743ab468..dfa8cfe078 100644 --- a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html +++ b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js.html b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js.html index bf66c227a4..d454f3d2c4 100644 --- a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js.html +++ b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -415,6 +417,79 @@ * excludeTypes: ["IfcSpace"] * }); * ```` + * + * ## Showing a glTF model in TreeViewPlugin when metadata is not available + * + * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a + * `name` attribute, giving the Entity an ID that has the value of the `name` attribute. + * + * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not + * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin + * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any + * MetaModels that we create alongside the model. + * + * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter + * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID. + * + * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that + * contains a MetaObject that corresponds to that Entity. + * + * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls + * the visibility of that Entity (ie. to control the visibility of the entire model). + * + * The snippet below shows how this is done. + * + * ````javascript + * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js"; + * + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * new TreeViewPlugin(viewer, { + * containerElement: document.getElementById("treeViewContainer"), + * hierarchy: "containment" + * }); + * + * const gltfLoader = new GLTFLoaderPlugin(viewer); + * + * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID "myScanModel" + * id: "myScanModel", + * src: "public-use-sample-apartment.glb", + * + * //------------------------------------------------------------------------- + * // Specify an `elementId` parameter, which causes the + * // entire model to be loaded into a single Entity that gets this ID. + * //------------------------------------------------------------------------- + * + * entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID + * + * //------------------------------------------------------------------------- + * // Specify a `metaModelJSON` parameter, which creates a + * // MetaModel with two MetaObjects, one of which corresponds + * // to our Entity. Then the TreeViewPlugin is able to have a node + * // that can represent the model and control the visibility of the Entity. + * //-------------------------------------------------------------------------- + * + * metaModelJSON: { // Creates a MetaModel with ID "myScanModel" + * "metaObjects": [ + * { + * "id": "3toKckUfH2jBmd$7uhJHa6", // Creates a MetaObject with this ID + * "name": "My Project", + * "type": "Default", + * "parent": null + * }, + * { + * "id": "3toKckUfH2jBmd$7uhJHa4", // Creates a MetaObject with this ID (same ID as our Entity) + * "name": "My Scan", + * "type": "Default", + * "parent": "3toKckUfH2jBmd$7uhJHa6" + * } + * ] + * } + * }); + * ```` * @class GLTFLoaderPlugin */ class GLTFLoaderPlugin extends Plugin { diff --git a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js.html b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js.html index 165a0a3fb7..fb67b8ecb6 100644 --- a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js.html +++ b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/GLTFLoaderPlugin/index.js.html b/docs/file/src/plugins/GLTFLoaderPlugin/index.js.html index c9d8afcd22..5cc136f8f1 100644 --- a/docs/file/src/plugins/GLTFLoaderPlugin/index.js.html +++ b/docs/file/src/plugins/GLTFLoaderPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js.html b/docs/file/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js.html index c53aff5d92..7a485e416c 100644 --- a/docs/file/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js.html +++ b/docs/file/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js.html b/docs/file/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js.html index 7660f8e02c..d0198d2370 100644 --- a/docs/file/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js.html +++ b/docs/file/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -402,6 +404,60 @@ * }); * ```` * + * ## Showing a LAS/LAZ model in TreeViewPlugin + * + * We can use the `load()` method's `elementId` parameter + * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID. + * + * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that + * contains a MetaObject that corresponds to that Entity. + * + * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls + * the visibility of that Entity (ie. to control the visibility of the entire model). + * + * The snippet below shows how this is done. + * + * ````javascript + * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from "../../dist/xeokit-sdk.es.js"; + * + * const viewer = new Viewer({ + * canvasId: "myCanvas", + * transparent: true + * }); + * + * new TreeViewPlugin(viewer, { + * containerElement: document.getElementById("treeViewContainer"), + * hierarchy: "containment" + * }); + * + * const lasLoader = new LASLoaderPlugin(viewer); + * + * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID "myScanModel" + * id: "myScanModel", + * src: "../../assets/models/las/Nalls_Pumpkin_Hill.laz", + * rotation: [-90, 0, 0], + * + * entityId: "3toKckUfH2jBmd$7uhJHa4", // Creates an Entity with this ID + * + * metaModelJSON: { // Creates a MetaModel with ID "myScanModel" + * "metaObjects": [ + * { + * "id": "3toKckUfH2jBmd$7uhJHa6", // Creates this MetaObject with this ID + * "name": "My Project", + * "type": "Default", + * "parent": null + * }, + * { + * "id": "3toKckUfH2jBmd$7uhJHa4", // Creates this MetaObject with this ID + * "name": "My Scan", + * "type": "Default", + * "parent": "3toKckUfH2jBmd$7uhJHa6" + * } + * ] + * } + * }); + * ```` + * * @class LASLoaderPlugin * @since 2.0.17 */ diff --git a/docs/file/src/plugins/LASLoaderPlugin/index.js.html b/docs/file/src/plugins/LASLoaderPlugin/index.js.html index e163ccb054..ffb0607523 100644 --- a/docs/file/src/plugins/LASLoaderPlugin/index.js.html +++ b/docs/file/src/plugins/LASLoaderPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html b/docs/file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html index c13ccbad01..9667a0c00a 100644 --- a/docs/file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html +++ b/docs/file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/NavCubePlugin/NavCubePlugin.js.html b/docs/file/src/plugins/NavCubePlugin/NavCubePlugin.js.html index aefcea5b0d..f403f41aa6 100644 --- a/docs/file/src/plugins/NavCubePlugin/NavCubePlugin.js.html +++ b/docs/file/src/plugins/NavCubePlugin/NavCubePlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/NavCubePlugin/index.js.html b/docs/file/src/plugins/NavCubePlugin/index.js.html index 4b2e0a5d33..d0490ab2e1 100644 --- a/docs/file/src/plugins/NavCubePlugin/index.js.html +++ b/docs/file/src/plugins/NavCubePlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js.html b/docs/file/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js.html index be6bd1a7d5..4cc580716a 100644 --- a/docs/file/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js.html +++ b/docs/file/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js.html b/docs/file/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js.html index 84b1e3efcf..c609a15985 100644 --- a/docs/file/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js.html +++ b/docs/file/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/OBJLoaderPlugin/index.js.html b/docs/file/src/plugins/OBJLoaderPlugin/index.js.html index 4c88718a25..9f9c7cc481 100644 --- a/docs/file/src/plugins/OBJLoaderPlugin/index.js.html +++ b/docs/file/src/plugins/OBJLoaderPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js.html b/docs/file/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js.html index da77c886fc..208af2d461 100644 --- a/docs/file/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js.html +++ b/docs/file/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js.html b/docs/file/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js.html index 7de0105513..d5a3c81eed 100644 --- a/docs/file/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js.html +++ b/docs/file/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js.html b/docs/file/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js.html index 6f39df9b0f..0c4db12b39 100644 --- a/docs/file/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js.html +++ b/docs/file/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/STLLoaderPlugin/index.js.html b/docs/file/src/plugins/STLLoaderPlugin/index.js.html index 59dba50642..155dcf94a2 100644 --- a/docs/file/src/plugins/STLLoaderPlugin/index.js.html +++ b/docs/file/src/plugins/STLLoaderPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/Control.js.html b/docs/file/src/plugins/SectionPlanesPlugin/Control.js.html index 6983e68ce3..921484fe43 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/Control.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/Control.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/Overview.js.html b/docs/file/src/plugins/SectionPlanesPlugin/Overview.js.html index 2676f0d869..a1e35078b1 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/Overview.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/Overview.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/Plane.js.html b/docs/file/src/plugins/SectionPlanesPlugin/Plane.js.html index b5d6fbc924..e6c876f6e1 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/Plane.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/Plane.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js.html b/docs/file/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js.html index d1ebac14d6..d048a1843a 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/index.js.html b/docs/file/src/plugins/SectionPlanesPlugin/index.js.html index 37fa6ac76e..0fbbe294e7 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/index.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js.html b/docs/file/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js.html index ce08bf37a4..bd882db0b8 100644 --- a/docs/file/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js.html +++ b/docs/file/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/SkyboxesPlugin/index.js.html b/docs/file/src/plugins/SkyboxesPlugin/index.js.html index 71c609a369..a3ea9eaf8a 100644 --- a/docs/file/src/plugins/SkyboxesPlugin/index.js.html +++ b/docs/file/src/plugins/SkyboxesPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/StoreyViewsPlugin/Storey.js.html b/docs/file/src/plugins/StoreyViewsPlugin/Storey.js.html index c94bff8d26..b6208312f1 100644 --- a/docs/file/src/plugins/StoreyViewsPlugin/Storey.js.html +++ b/docs/file/src/plugins/StoreyViewsPlugin/Storey.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/StoreyViewsPlugin/StoreyMap.js.html b/docs/file/src/plugins/StoreyViewsPlugin/StoreyMap.js.html index 944e6cba1b..5ef1167538 100644 --- a/docs/file/src/plugins/StoreyViewsPlugin/StoreyMap.js.html +++ b/docs/file/src/plugins/StoreyViewsPlugin/StoreyMap.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js.html b/docs/file/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js.html index e073154021..5041f32079 100644 --- a/docs/file/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js.html +++ b/docs/file/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/StoreyViewsPlugin/index.js.html b/docs/file/src/plugins/StoreyViewsPlugin/index.js.html index 81a5c21ea5..130473ed4f 100644 --- a/docs/file/src/plugins/StoreyViewsPlugin/index.js.html +++ b/docs/file/src/plugins/StoreyViewsPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/TreeViewPlugin/RenderService.js.html b/docs/file/src/plugins/TreeViewPlugin/RenderService.js.html index a450ccf2e6..832f642fa8 100644 --- a/docs/file/src/plugins/TreeViewPlugin/RenderService.js.html +++ b/docs/file/src/plugins/TreeViewPlugin/RenderService.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/TreeViewPlugin/TreeViewNode.js.html b/docs/file/src/plugins/TreeViewPlugin/TreeViewNode.js.html index 70cbec431e..0a7cc197cd 100644 --- a/docs/file/src/plugins/TreeViewPlugin/TreeViewNode.js.html +++ b/docs/file/src/plugins/TreeViewPlugin/TreeViewNode.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/TreeViewPlugin/TreeViewPlugin.js.html b/docs/file/src/plugins/TreeViewPlugin/TreeViewPlugin.js.html index bb52e94aa0..1d32203da9 100644 --- a/docs/file/src/plugins/TreeViewPlugin/TreeViewPlugin.js.html +++ b/docs/file/src/plugins/TreeViewPlugin/TreeViewPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/TreeViewPlugin/index.js.html b/docs/file/src/plugins/TreeViewPlugin/index.js.html index 004bd49e3f..7ec79e4de1 100644 --- a/docs/file/src/plugins/TreeViewPlugin/index.js.html +++ b/docs/file/src/plugins/TreeViewPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/ViewCullPlugin/ViewCullPlugin.js.html b/docs/file/src/plugins/ViewCullPlugin/ViewCullPlugin.js.html index 9c0210bf40..1c4aaa47ac 100644 --- a/docs/file/src/plugins/ViewCullPlugin/ViewCullPlugin.js.html +++ b/docs/file/src/plugins/ViewCullPlugin/ViewCullPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/ViewCullPlugin/index.js.html b/docs/file/src/plugins/ViewCullPlugin/index.js.html index 0daee9257d..a81dd7c6d1 100644 --- a/docs/file/src/plugins/ViewCullPlugin/index.js.html +++ b/docs/file/src/plugins/ViewCullPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js.html b/docs/file/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js.html index a17839d923..69d8a2118c 100644 --- a/docs/file/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js.html +++ b/docs/file/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js.html b/docs/file/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js.html index 57807e6f0b..6fedb35600 100644 --- a/docs/file/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js.html +++ b/docs/file/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/WebIFCLoaderPlugin/index.js.html b/docs/file/src/plugins/WebIFCLoaderPlugin/index.js.html index 4ecace9d4f..1a3906a728 100644 --- a/docs/file/src/plugins/WebIFCLoaderPlugin/index.js.html +++ b/docs/file/src/plugins/WebIFCLoaderPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js.html b/docs/file/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js.html index 3185ffe076..e54b890aa9 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js.html b/docs/file/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js.html index 17ce7bbdc1..df9ba8526e 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/index.js.html b/docs/file/src/plugins/XKTLoaderPlugin/index.js.html index 496fd2f910..506165f292 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/index.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js.html index 0ff58bf4af..b6685c1457 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js.html index fc695a2576..37dc8e2d66 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js.html index b2ba95b8f7..0c3c39ecd4 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js.html index 83a73b6572..b611e71c53 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js.html index 6ebb674c71..cb6f105ac5 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js.html index 5a22da1a8e..dff56f5949 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js.html index 2ef4cbda2d..86eb409886 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js.html index a95434b171..ad8f4309f3 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js.html index ea3be402ec..fa0461e26e 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js.html index 5b29daea1d..adb5e7d0ce 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js.html index 05919ca893..45debf0f9e 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js.html b/docs/file/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js.html index 7882568a63..1590afad16 100644 --- a/docs/file/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js.html +++ b/docs/file/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js.html b/docs/file/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js.html index c2ac5623b7..6b47835ca7 100644 --- a/docs/file/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js.html +++ b/docs/file/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/XML3DLoaderPlugin/index.js.html b/docs/file/src/plugins/XML3DLoaderPlugin/index.js.html index cc1a6c9f89..091880c834 100644 --- a/docs/file/src/plugins/XML3DLoaderPlugin/index.js.html +++ b/docs/file/src/plugins/XML3DLoaderPlugin/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/index.js.html b/docs/file/src/plugins/index.js.html index fb78a508d6..ad87b6e922 100644 --- a/docs/file/src/plugins/index.js.html +++ b/docs/file/src/plugins/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -277,7 +279,8 @@ export * from "./XML3DLoaderPlugin/index.js"; export * from "./WebIFCLoaderPlugin/index.js"; export * from "./LASLoaderPlugin/index.js"; -export * from "./CityJSONLoaderPlugin/index.js"; +export * from "./CityJSONLoaderPlugin/index.js"; +export * from "./DotBIMLoaderPlugin/index.js";
    diff --git a/docs/file/src/plugins/lib/culling/ObjectCullStates.js.html b/docs/file/src/plugins/lib/culling/ObjectCullStates.js.html index cc4c339f4f..be926bab17 100644 --- a/docs/file/src/plugins/lib/culling/ObjectCullStates.js.html +++ b/docs/file/src/plugins/lib/culling/ObjectCullStates.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/lib/earcut.js.html b/docs/file/src/plugins/lib/earcut.js.html index a9ede5cc39..dfee8335e2 100644 --- a/docs/file/src/plugins/lib/earcut.js.html +++ b/docs/file/src/plugins/lib/earcut.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/lib/html/Dot.js.html b/docs/file/src/plugins/lib/html/Dot.js.html index 09167e2aae..60c4161a7f 100644 --- a/docs/file/src/plugins/lib/html/Dot.js.html +++ b/docs/file/src/plugins/lib/html/Dot.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/lib/html/Label.js.html b/docs/file/src/plugins/lib/html/Label.js.html index a1655b5c3c..3ab8c1115e 100644 --- a/docs/file/src/plugins/lib/html/Label.js.html +++ b/docs/file/src/plugins/lib/html/Label.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/plugins/lib/html/Wire.js.html b/docs/file/src/plugins/lib/html/Wire.js.html index 21f2cd4dc1..ea589d1007 100644 --- a/docs/file/src/plugins/lib/html/Wire.js.html +++ b/docs/file/src/plugins/lib/html/Wire.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/Configs.js.html b/docs/file/src/viewer/Configs.js.html index 91146b0f02..ccbae33ef8 100644 --- a/docs/file/src/viewer/Configs.js.html +++ b/docs/file/src/viewer/Configs.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/Plugin.js.html b/docs/file/src/viewer/Plugin.js.html index 45d1f57e7b..21c6ce40c5 100644 --- a/docs/file/src/viewer/Plugin.js.html +++ b/docs/file/src/viewer/Plugin.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/Viewer.js.html b/docs/file/src/viewer/Viewer.js.html index 727b848101..f82775c511 100644 --- a/docs/file/src/viewer/Viewer.js.html +++ b/docs/file/src/viewer/Viewer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/index.js.html b/docs/file/src/viewer/index.js.html index 4ddb98e291..e41227b4c3 100644 --- a/docs/file/src/viewer/index.js.html +++ b/docs/file/src/viewer/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/localization/LocaleService.js.html b/docs/file/src/viewer/localization/LocaleService.js.html index c6f5dca23b..f03e56fe69 100644 --- a/docs/file/src/viewer/localization/LocaleService.js.html +++ b/docs/file/src/viewer/localization/LocaleService.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/metadata/IFCObjectDefaultColors.js.html b/docs/file/src/viewer/metadata/IFCObjectDefaultColors.js.html index dd683cfa6d..44b20ba093 100644 --- a/docs/file/src/viewer/metadata/IFCObjectDefaultColors.js.html +++ b/docs/file/src/viewer/metadata/IFCObjectDefaultColors.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/metadata/IFCObjectDefaults.js.html b/docs/file/src/viewer/metadata/IFCObjectDefaults.js.html index 1809b3274a..2aa23661bc 100644 --- a/docs/file/src/viewer/metadata/IFCObjectDefaults.js.html +++ b/docs/file/src/viewer/metadata/IFCObjectDefaults.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/metadata/MetaModel.js.html b/docs/file/src/viewer/metadata/MetaModel.js.html index d16eefd383..b8e6a327e3 100644 --- a/docs/file/src/viewer/metadata/MetaModel.js.html +++ b/docs/file/src/viewer/metadata/MetaModel.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/metadata/MetaObject.js.html b/docs/file/src/viewer/metadata/MetaObject.js.html index 66fc65935c..f261241f95 100644 --- a/docs/file/src/viewer/metadata/MetaObject.js.html +++ b/docs/file/src/viewer/metadata/MetaObject.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/metadata/MetaScene.js.html b/docs/file/src/viewer/metadata/MetaScene.js.html index 4c494aef1e..9511ece6ac 100644 --- a/docs/file/src/viewer/metadata/MetaScene.js.html +++ b/docs/file/src/viewer/metadata/MetaScene.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/metadata/Property.js.html b/docs/file/src/viewer/metadata/Property.js.html index 9ee5fd895a..e768007280 100644 --- a/docs/file/src/viewer/metadata/Property.js.html +++ b/docs/file/src/viewer/metadata/Property.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/metadata/PropertySet.js.html b/docs/file/src/viewer/metadata/PropertySet.js.html index a6f5bf39bb..fe482adf1b 100644 --- a/docs/file/src/viewer/metadata/PropertySet.js.html +++ b/docs/file/src/viewer/metadata/PropertySet.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/Bitmap/Bitmap.js.html b/docs/file/src/viewer/scene/Bitmap/Bitmap.js.html index ddfcfdda8d..8093630821 100644 --- a/docs/file/src/viewer/scene/Bitmap/Bitmap.js.html +++ b/docs/file/src/viewer/scene/Bitmap/Bitmap.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/Bitmap/index.js.html b/docs/file/src/viewer/scene/Bitmap/index.js.html index e529eb408b..77fcf3e344 100644 --- a/docs/file/src/viewer/scene/Bitmap/index.js.html +++ b/docs/file/src/viewer/scene/Bitmap/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/CameraControl.js.html b/docs/file/src/viewer/scene/CameraControl/CameraControl.js.html index 49627eac5d..08bbc0ff81 100644 --- a/docs/file/src/viewer/scene/CameraControl/CameraControl.js.html +++ b/docs/file/src/viewer/scene/CameraControl/CameraControl.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/CameraUpdater.js.html b/docs/file/src/viewer/scene/CameraControl/lib/CameraUpdater.js.html index 613dc61188..152ad19a92 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/CameraUpdater.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/CameraUpdater.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/controllers/PanController.js.html b/docs/file/src/viewer/scene/CameraControl/lib/controllers/PanController.js.html index 5b2f9bae0a..2f86321e2d 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/controllers/PanController.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/controllers/PanController.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/controllers/PickController.js.html b/docs/file/src/viewer/scene/CameraControl/lib/controllers/PickController.js.html index 3b806020a4..fb296529e9 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/controllers/PickController.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/controllers/PickController.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/controllers/PivotController.js.html b/docs/file/src/viewer/scene/CameraControl/lib/controllers/PivotController.js.html index 210aa1cd5a..dc0f5cb432 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/controllers/PivotController.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/controllers/PivotController.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js.html b/docs/file/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js.html index 909dff82f3..bafebcb50a 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js.html b/docs/file/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js.html index a4783b0cc6..0e9ea6dc5d 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js.html b/docs/file/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js.html index ac0ce47a8e..b95cb9f8f0 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js.html b/docs/file/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js.html index 4c5c3182ab..752fea1fdc 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js.html b/docs/file/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js.html index 610170e33f..bd2f2d4494 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js.html b/docs/file/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js.html index ec4c6c1c35..391cc91e68 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js.html b/docs/file/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js.html index ff6d48d558..bb91dfe6ca 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/Component.js.html b/docs/file/src/viewer/scene/Component.js.html index f127b64213..f1665a37f7 100644 --- a/docs/file/src/viewer/scene/Component.js.html +++ b/docs/file/src/viewer/scene/Component.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/Entity.js.html b/docs/file/src/viewer/scene/Entity.js.html index cb445a33c1..5e7cd0e928 100644 --- a/docs/file/src/viewer/scene/Entity.js.html +++ b/docs/file/src/viewer/scene/Entity.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/ImagePlane/ImagePlane.js.html b/docs/file/src/viewer/scene/ImagePlane/ImagePlane.js.html index 6ad7b8cf00..ad7eff0ece 100644 --- a/docs/file/src/viewer/scene/ImagePlane/ImagePlane.js.html +++ b/docs/file/src/viewer/scene/ImagePlane/ImagePlane.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/ImagePlane/index.js.html b/docs/file/src/viewer/scene/ImagePlane/index.js.html index 1eebcc9d97..64b864a282 100644 --- a/docs/file/src/viewer/scene/ImagePlane/index.js.html +++ b/docs/file/src/viewer/scene/ImagePlane/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/LineSet/LineSet.js.html b/docs/file/src/viewer/scene/LineSet/LineSet.js.html index 4916e4b660..fe0aac96df 100644 --- a/docs/file/src/viewer/scene/LineSet/LineSet.js.html +++ b/docs/file/src/viewer/scene/LineSet/LineSet.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/LineSet/index.js.html b/docs/file/src/viewer/scene/LineSet/index.js.html index 60d15a1959..f98f473312 100644 --- a/docs/file/src/viewer/scene/LineSet/index.js.html +++ b/docs/file/src/viewer/scene/LineSet/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/Camera.js.html b/docs/file/src/viewer/scene/camera/Camera.js.html index 176b0a4953..6c3fc3c7f3 100644 --- a/docs/file/src/viewer/scene/camera/Camera.js.html +++ b/docs/file/src/viewer/scene/camera/Camera.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/CameraFlightAnimation.js.html b/docs/file/src/viewer/scene/camera/CameraFlightAnimation.js.html index 52cb930fd6..c01efa1ed3 100644 --- a/docs/file/src/viewer/scene/camera/CameraFlightAnimation.js.html +++ b/docs/file/src/viewer/scene/camera/CameraFlightAnimation.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/CameraPath.js.html b/docs/file/src/viewer/scene/camera/CameraPath.js.html index 630562cb1b..131bd6e297 100644 --- a/docs/file/src/viewer/scene/camera/CameraPath.js.html +++ b/docs/file/src/viewer/scene/camera/CameraPath.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/CameraPathAnimation.js.html b/docs/file/src/viewer/scene/camera/CameraPathAnimation.js.html index a6cdc32d7c..bb7f3b18a4 100644 --- a/docs/file/src/viewer/scene/camera/CameraPathAnimation.js.html +++ b/docs/file/src/viewer/scene/camera/CameraPathAnimation.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/CustomProjection.js.html b/docs/file/src/viewer/scene/camera/CustomProjection.js.html index b084453e80..ff3793b612 100644 --- a/docs/file/src/viewer/scene/camera/CustomProjection.js.html +++ b/docs/file/src/viewer/scene/camera/CustomProjection.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/Frustum.js.html b/docs/file/src/viewer/scene/camera/Frustum.js.html index 1dcf11bb47..66543f1663 100644 --- a/docs/file/src/viewer/scene/camera/Frustum.js.html +++ b/docs/file/src/viewer/scene/camera/Frustum.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/Ortho.js.html b/docs/file/src/viewer/scene/camera/Ortho.js.html index f0af0dd4d1..c01564c666 100644 --- a/docs/file/src/viewer/scene/camera/Ortho.js.html +++ b/docs/file/src/viewer/scene/camera/Ortho.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/Perspective.js.html b/docs/file/src/viewer/scene/camera/Perspective.js.html index f7932ba038..2c077d40f5 100644 --- a/docs/file/src/viewer/scene/camera/Perspective.js.html +++ b/docs/file/src/viewer/scene/camera/Perspective.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/camera/index.js.html b/docs/file/src/viewer/scene/camera/index.js.html index 3f240dc94f..b30e46cd48 100644 --- a/docs/file/src/viewer/scene/camera/index.js.html +++ b/docs/file/src/viewer/scene/camera/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/canvas/Canvas.js.html b/docs/file/src/viewer/scene/canvas/Canvas.js.html index 59c6873f5b..3a5dc4a7c8 100644 --- a/docs/file/src/viewer/scene/canvas/Canvas.js.html +++ b/docs/file/src/viewer/scene/canvas/Canvas.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/canvas/Spinner.js.html b/docs/file/src/viewer/scene/canvas/Spinner.js.html index ba0a40c600..61d17f375e 100644 --- a/docs/file/src/viewer/scene/canvas/Spinner.js.html +++ b/docs/file/src/viewer/scene/canvas/Spinner.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/constants/constants.js.html b/docs/file/src/viewer/scene/constants/constants.js.html index 7ee45b4a5e..dc8695360e 100644 --- a/docs/file/src/viewer/scene/constants/constants.js.html +++ b/docs/file/src/viewer/scene/constants/constants.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/core.js.html b/docs/file/src/viewer/scene/core.js.html index caf3118c3b..6047121916 100644 --- a/docs/file/src/viewer/scene/core.js.html +++ b/docs/file/src/viewer/scene/core.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/Geometry.js.html b/docs/file/src/viewer/scene/geometry/Geometry.js.html index ff0048c373..ad40b34ff6 100644 --- a/docs/file/src/viewer/scene/geometry/Geometry.js.html +++ b/docs/file/src/viewer/scene/geometry/Geometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/ReadableGeometry.js.html b/docs/file/src/viewer/scene/geometry/ReadableGeometry.js.html index d1fa560ebc..b5623666fb 100644 --- a/docs/file/src/viewer/scene/geometry/ReadableGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/ReadableGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/VBOGeometry.js.html b/docs/file/src/viewer/scene/geometry/VBOGeometry.js.html index b585be6c8a..88b78f293a 100644 --- a/docs/file/src/viewer/scene/geometry/VBOGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/VBOGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildBoxGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildBoxGeometry.js.html index 68cd66ffd3..fa1caa366b 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildBoxGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildBoxGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js.html index 89dfbb82dd..cb85d6e2f9 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildCylinderGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildCylinderGeometry.js.html index 1303e65ac8..6cd5098f18 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildCylinderGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildCylinderGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildGridGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildGridGeometry.js.html index 8a3eef333f..c173eec3af 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildGridGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildGridGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildPlaneGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildPlaneGeometry.js.html index 8518c27d58..d12960e0d7 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildPlaneGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildPlaneGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildPolylineGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildPolylineGeometry.js.html index 1210ed6828..a7d8d2e855 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildPolylineGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildPolylineGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildSphereGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildSphereGeometry.js.html index 10c41608b5..a4fa62c292 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildSphereGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildSphereGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildTorusGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildTorusGeometry.js.html index 8f29e2fcfe..8f29198b08 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildTorusGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildTorusGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js.html b/docs/file/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js.html index 633bf00c17..dd8f42022b 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/builders/index.js.html b/docs/file/src/viewer/scene/geometry/builders/index.js.html index 54a26217f0..11f26cf76f 100644 --- a/docs/file/src/viewer/scene/geometry/builders/index.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/index.js.html b/docs/file/src/viewer/scene/geometry/index.js.html index a4797b58e4..7c38bd3b41 100644 --- a/docs/file/src/viewer/scene/geometry/index.js.html +++ b/docs/file/src/viewer/scene/geometry/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/loaders/index.js.html b/docs/file/src/viewer/scene/geometry/loaders/index.js.html index b968452459..42ed8ef4a1 100644 --- a/docs/file/src/viewer/scene/geometry/loaders/index.js.html +++ b/docs/file/src/viewer/scene/geometry/loaders/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/loaders/load3DSGeometry.js.html b/docs/file/src/viewer/scene/geometry/loaders/load3DSGeometry.js.html index 9b4c6cdecf..2aa07dd9ca 100644 --- a/docs/file/src/viewer/scene/geometry/loaders/load3DSGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/loaders/load3DSGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/geometry/loaders/loadOBJGeometry.js.html b/docs/file/src/viewer/scene/geometry/loaders/loadOBJGeometry.js.html index b3a748347e..eba764369d 100644 --- a/docs/file/src/viewer/scene/geometry/loaders/loadOBJGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/loaders/loadOBJGeometry.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/index.js.html b/docs/file/src/viewer/scene/index.js.html index 1c1f6bf37b..3ed358d9e9 100644 --- a/docs/file/src/viewer/scene/index.js.html +++ b/docs/file/src/viewer/scene/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/input/Input.js.html b/docs/file/src/viewer/scene/input/Input.js.html index 25dc1dbaaf..578d38eab1 100644 --- a/docs/file/src/viewer/scene/input/Input.js.html +++ b/docs/file/src/viewer/scene/input/Input.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/libs/k3d.js.html b/docs/file/src/viewer/scene/libs/k3d.js.html index 8e34a3a838..0a46c39088 100644 --- a/docs/file/src/viewer/scene/libs/k3d.js.html +++ b/docs/file/src/viewer/scene/libs/k3d.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/AmbientLight.js.html b/docs/file/src/viewer/scene/lights/AmbientLight.js.html index f864adfdb6..27e567b00e 100644 --- a/docs/file/src/viewer/scene/lights/AmbientLight.js.html +++ b/docs/file/src/viewer/scene/lights/AmbientLight.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/CubeTexture.js.html b/docs/file/src/viewer/scene/lights/CubeTexture.js.html index 5d3298e299..e7319bb758 100644 --- a/docs/file/src/viewer/scene/lights/CubeTexture.js.html +++ b/docs/file/src/viewer/scene/lights/CubeTexture.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/DirLight.js.html b/docs/file/src/viewer/scene/lights/DirLight.js.html index bd86207ced..80ac4aa356 100644 --- a/docs/file/src/viewer/scene/lights/DirLight.js.html +++ b/docs/file/src/viewer/scene/lights/DirLight.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/Light.js.html b/docs/file/src/viewer/scene/lights/Light.js.html index 15dc15875f..b5293d5700 100644 --- a/docs/file/src/viewer/scene/lights/Light.js.html +++ b/docs/file/src/viewer/scene/lights/Light.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/LightMap.js.html b/docs/file/src/viewer/scene/lights/LightMap.js.html index a1b795e3ec..e4f8563502 100644 --- a/docs/file/src/viewer/scene/lights/LightMap.js.html +++ b/docs/file/src/viewer/scene/lights/LightMap.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/PointLight.js.html b/docs/file/src/viewer/scene/lights/PointLight.js.html index 0262fe3089..b15f2f7152 100644 --- a/docs/file/src/viewer/scene/lights/PointLight.js.html +++ b/docs/file/src/viewer/scene/lights/PointLight.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/ReflectionMap.js.html b/docs/file/src/viewer/scene/lights/ReflectionMap.js.html index 952fd4032a..5e753a7cd2 100644 --- a/docs/file/src/viewer/scene/lights/ReflectionMap.js.html +++ b/docs/file/src/viewer/scene/lights/ReflectionMap.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/Shadow.js.html b/docs/file/src/viewer/scene/lights/Shadow.js.html index 12873f3302..1312eb23b7 100644 --- a/docs/file/src/viewer/scene/lights/Shadow.js.html +++ b/docs/file/src/viewer/scene/lights/Shadow.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/lights/index.js.html b/docs/file/src/viewer/scene/lights/index.js.html index 920bec9641..f1dca23a1b 100644 --- a/docs/file/src/viewer/scene/lights/index.js.html +++ b/docs/file/src/viewer/scene/lights/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/marker/Marker.js.html b/docs/file/src/viewer/scene/marker/Marker.js.html index fd87b8cbde..f5ecfe0297 100644 --- a/docs/file/src/viewer/scene/marker/Marker.js.html +++ b/docs/file/src/viewer/scene/marker/Marker.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/marker/SpriteMarker.js.html b/docs/file/src/viewer/scene/marker/SpriteMarker.js.html index 36185b04bc..ca3fa1e511 100644 --- a/docs/file/src/viewer/scene/marker/SpriteMarker.js.html +++ b/docs/file/src/viewer/scene/marker/SpriteMarker.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/marker/index.js.html b/docs/file/src/viewer/scene/marker/index.js.html index 2d223d88fc..0b1348594e 100644 --- a/docs/file/src/viewer/scene/marker/index.js.html +++ b/docs/file/src/viewer/scene/marker/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/EdgeMaterial.js.html b/docs/file/src/viewer/scene/materials/EdgeMaterial.js.html index 4574893dc4..c42cb61b98 100644 --- a/docs/file/src/viewer/scene/materials/EdgeMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/EdgeMaterial.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/EmphasisMaterial.js.html b/docs/file/src/viewer/scene/materials/EmphasisMaterial.js.html index 35588b8166..c9ab35defb 100644 --- a/docs/file/src/viewer/scene/materials/EmphasisMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/EmphasisMaterial.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/Fresnel.js.html b/docs/file/src/viewer/scene/materials/Fresnel.js.html index ce99005fb5..2537f27320 100644 --- a/docs/file/src/viewer/scene/materials/Fresnel.js.html +++ b/docs/file/src/viewer/scene/materials/Fresnel.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/LambertMaterial.js.html b/docs/file/src/viewer/scene/materials/LambertMaterial.js.html index 331ebdf484..2f73739e38 100644 --- a/docs/file/src/viewer/scene/materials/LambertMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/LambertMaterial.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/LinesMaterial.js.html b/docs/file/src/viewer/scene/materials/LinesMaterial.js.html index c497f5866b..047b9d9842 100644 --- a/docs/file/src/viewer/scene/materials/LinesMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/LinesMaterial.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/Material.js.html b/docs/file/src/viewer/scene/materials/Material.js.html index 959e5c8514..31b6d9864a 100644 --- a/docs/file/src/viewer/scene/materials/Material.js.html +++ b/docs/file/src/viewer/scene/materials/Material.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/MetallicMaterial.js.html b/docs/file/src/viewer/scene/materials/MetallicMaterial.js.html index 910993241f..a6bc22e5e1 100644 --- a/docs/file/src/viewer/scene/materials/MetallicMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/MetallicMaterial.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/PhongMaterial.js.html b/docs/file/src/viewer/scene/materials/PhongMaterial.js.html index 2487080890..5463a1cb60 100644 --- a/docs/file/src/viewer/scene/materials/PhongMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/PhongMaterial.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/PointsMaterial.js.html b/docs/file/src/viewer/scene/materials/PointsMaterial.js.html index 7f8de5ed26..1d12e0b5f5 100644 --- a/docs/file/src/viewer/scene/materials/PointsMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/PointsMaterial.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/SpecularMaterial.js.html b/docs/file/src/viewer/scene/materials/SpecularMaterial.js.html index 2b73f40fb8..8a0f1dfc43 100644 --- a/docs/file/src/viewer/scene/materials/SpecularMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/SpecularMaterial.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/Texture.js.html b/docs/file/src/viewer/scene/materials/Texture.js.html index f08608584a..9386d44ff5 100644 --- a/docs/file/src/viewer/scene/materials/Texture.js.html +++ b/docs/file/src/viewer/scene/materials/Texture.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/materials/index.js.html b/docs/file/src/viewer/scene/materials/index.js.html index a5a6dca4d1..fafa2e435c 100644 --- a/docs/file/src/viewer/scene/materials/index.js.html +++ b/docs/file/src/viewer/scene/materials/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/math/Frustum.js.html b/docs/file/src/viewer/scene/math/Frustum.js.html index 59cadb6785..34ae9792fe 100644 --- a/docs/file/src/viewer/scene/math/Frustum.js.html +++ b/docs/file/src/viewer/scene/math/Frustum.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/math/buildEdgeIndices.js.html b/docs/file/src/viewer/scene/math/buildEdgeIndices.js.html index b9d3444122..4fcedf7872 100644 --- a/docs/file/src/viewer/scene/math/buildEdgeIndices.js.html +++ b/docs/file/src/viewer/scene/math/buildEdgeIndices.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/math/geometryCompressionUtils.js.html b/docs/file/src/viewer/scene/math/geometryCompressionUtils.js.html index cd4eabcdf5..1075228bc2 100644 --- a/docs/file/src/viewer/scene/math/geometryCompressionUtils.js.html +++ b/docs/file/src/viewer/scene/math/geometryCompressionUtils.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/math/index.js.html b/docs/file/src/viewer/scene/math/index.js.html index cc7d58d136..3b400cfdd3 100644 --- a/docs/file/src/viewer/scene/math/index.js.html +++ b/docs/file/src/viewer/scene/math/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/math/math.js.html b/docs/file/src/viewer/scene/math/math.js.html index 2bbc9089ce..7744aefe99 100644 --- a/docs/file/src/viewer/scene/math/math.js.html +++ b/docs/file/src/viewer/scene/math/math.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/math/rtcCoords.js.html b/docs/file/src/viewer/scene/math/rtcCoords.js.html index 528ab96a5a..636f9bdb25 100644 --- a/docs/file/src/viewer/scene/math/rtcCoords.js.html +++ b/docs/file/src/viewer/scene/math/rtcCoords.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mementos/CameraMemento.js.html b/docs/file/src/viewer/scene/mementos/CameraMemento.js.html index 63dfc4e349..a1f90e4836 100644 --- a/docs/file/src/viewer/scene/mementos/CameraMemento.js.html +++ b/docs/file/src/viewer/scene/mementos/CameraMemento.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mementos/ModelMemento.js.html b/docs/file/src/viewer/scene/mementos/ModelMemento.js.html index 148b8c7842..98a0076ed6 100644 --- a/docs/file/src/viewer/scene/mementos/ModelMemento.js.html +++ b/docs/file/src/viewer/scene/mementos/ModelMemento.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mementos/ObjectsMemento.js.html b/docs/file/src/viewer/scene/mementos/ObjectsMemento.js.html index 536157e3a9..918dba89e8 100644 --- a/docs/file/src/viewer/scene/mementos/ObjectsMemento.js.html +++ b/docs/file/src/viewer/scene/mementos/ObjectsMemento.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mementos/index.js.html b/docs/file/src/viewer/scene/mementos/index.js.html index 4c9d015829..978b5390b8 100644 --- a/docs/file/src/viewer/scene/mementos/index.js.html +++ b/docs/file/src/viewer/scene/mementos/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/Mesh.js.html b/docs/file/src/viewer/scene/mesh/Mesh.js.html index 3901cd59ea..2ce9d32d78 100644 --- a/docs/file/src/viewer/scene/mesh/Mesh.js.html +++ b/docs/file/src/viewer/scene/mesh/Mesh.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/draw/DrawRenderer.js.html b/docs/file/src/viewer/scene/mesh/draw/DrawRenderer.js.html index a2c6a6507f..3a4e05e251 100644 --- a/docs/file/src/viewer/scene/mesh/draw/DrawRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/draw/DrawRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/draw/DrawShaderSource.js.html b/docs/file/src/viewer/scene/mesh/draw/DrawShaderSource.js.html index 69d89323e2..c8a9c377a9 100644 --- a/docs/file/src/viewer/scene/mesh/draw/DrawShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/draw/DrawShaderSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js.html b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js.html index cca00c399e..4cc4c86fd3 100644 --- a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js.html b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js.html index 95214ba163..a693520798 100644 --- a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js.html b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js.html index 8be449e7c1..d5e6ffa98c 100644 --- a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js.html b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js.html index d01a07045e..808c979a37 100644 --- a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/index.js.html b/docs/file/src/viewer/scene/mesh/index.js.html index b31e84322c..22ffd383db 100644 --- a/docs/file/src/viewer/scene/mesh/index.js.html +++ b/docs/file/src/viewer/scene/mesh/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js.html b/docs/file/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js.html index 07cd4fc53d..270093aea3 100644 --- a/docs/file/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js.html b/docs/file/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js.html index 29e9566cce..72e7381f29 100644 --- a/docs/file/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/pick/PickMeshRenderer.js.html b/docs/file/src/viewer/scene/mesh/pick/PickMeshRenderer.js.html index 92147fb272..5a1d4b854a 100644 --- a/docs/file/src/viewer/scene/mesh/pick/PickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/pick/PickMeshRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/pick/PickMeshShaderSource.js.html b/docs/file/src/viewer/scene/mesh/pick/PickMeshShaderSource.js.html index e60be8c01c..a734b20360 100644 --- a/docs/file/src/viewer/scene/mesh/pick/PickMeshShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/pick/PickMeshShaderSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/pick/PickTriangleRenderer.js.html b/docs/file/src/viewer/scene/mesh/pick/PickTriangleRenderer.js.html index 38a0339ce3..c243e5e0de 100644 --- a/docs/file/src/viewer/scene/mesh/pick/PickTriangleRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/pick/PickTriangleRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js.html b/docs/file/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js.html index dae14b2725..a1e2ff8836 100644 --- a/docs/file/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/shadow/ShadowRenderer.js.html b/docs/file/src/viewer/scene/mesh/shadow/ShadowRenderer.js.html index f77e0f4d74..d296117d46 100644 --- a/docs/file/src/viewer/scene/mesh/shadow/ShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/shadow/ShadowRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/mesh/shadow/ShadowShaderSource.js.html b/docs/file/src/viewer/scene/mesh/shadow/ShadowShaderSource.js.html index 0c3fd7c901..32de195c96 100644 --- a/docs/file/src/viewer/scene/mesh/shadow/ShadowShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/shadow/ShadowShaderSource.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/metriqs/Metriqs.js.html b/docs/file/src/viewer/scene/metriqs/Metriqs.js.html index 1e9aba216f..009f249665 100644 --- a/docs/file/src/viewer/scene/metriqs/Metriqs.js.html +++ b/docs/file/src/viewer/scene/metriqs/Metriqs.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/ENTITY_FLAGS.js.html b/docs/file/src/viewer/scene/model/ENTITY_FLAGS.js.html index 5a1715f3fa..17719f619c 100644 --- a/docs/file/src/viewer/scene/model/ENTITY_FLAGS.js.html +++ b/docs/file/src/viewer/scene/model/ENTITY_FLAGS.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/PerformanceModel.js.html b/docs/file/src/viewer/scene/model/PerformanceModel.js.html index ec15603db8..43585796e8 100644 --- a/docs/file/src/viewer/scene/model/PerformanceModel.js.html +++ b/docs/file/src/viewer/scene/model/PerformanceModel.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/RENDER_PASSES.js.html b/docs/file/src/viewer/scene/model/RENDER_PASSES.js.html index 333ce1951b..9e9729bfd3 100644 --- a/docs/file/src/viewer/scene/model/RENDER_PASSES.js.html +++ b/docs/file/src/viewer/scene/model/RENDER_PASSES.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/SceneModel.js.html b/docs/file/src/viewer/scene/model/SceneModel.js.html index 7f90eeccfc..be18eedd97 100644 --- a/docs/file/src/viewer/scene/model/SceneModel.js.html +++ b/docs/file/src/viewer/scene/model/SceneModel.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -302,6 +304,7 @@ const tempVec3a = math.vec3(); const tempOBB3 = math.OBB3(); +const tempQuaternion = math.vec4(); const DEFAULT_SCALE = math.vec3([1, 1, 1]); const DEFAULT_POSITION = math.vec3([0, 0, 0]); @@ -2982,6 +2985,7 @@ * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````. * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````. * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````. + * @param {Number[]} [cfg.quaternion] Rotation of the mesh as a quaternion. Overridden by ````rotation````. * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````. * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````. * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````. @@ -3056,12 +3060,15 @@ if (cfg.matrix) { cfg.meshMatrix = cfg.matrix; - } else if (cfg.scale || cfg.rotation || cfg.position) { + } else if (cfg.scale || cfg.rotation || cfg.position || cfg.quaternion) { const scale = cfg.scale || DEFAULT_SCALE; const position = cfg.position || DEFAULT_POSITION; - const rotation = cfg.rotation || DEFAULT_ROTATION; - math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); - cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + if (cfg.rotation) { + math.eulerToQuaternion(cfg.rotation, "XYZ", tempQuaternion); + cfg.meshMatrix = math.composeMat4(position, tempQuaternion, scale, math.mat4()); + } else { + cfg.meshMatrix = math.composeMat4(position, cfg.quaternion || DEFAULT_QUATERNION, scale, math.mat4()); + } } if (cfg.positionsDecodeBoundary) { @@ -3249,13 +3256,16 @@ // MATRIX if (cfg.matrix) { - cfg.meshMatrix = cfg.matrix.slice(); - } else { + cfg.meshMatrix = cfg.matrix; + } else if (cfg.scale || cfg.rotation || cfg.position || cfg.quaternion) { const scale = cfg.scale || DEFAULT_SCALE; const position = cfg.position || DEFAULT_POSITION; - const rotation = cfg.rotation || DEFAULT_ROTATION; - math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); - cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + if (cfg.rotation) { + math.eulerToQuaternion(cfg.rotation, "XYZ", tempQuaternion); + cfg.meshMatrix = math.composeMat4(position, tempQuaternion, scale, math.mat4()); + } else { + cfg.meshMatrix = math.composeMat4(position, cfg.quaternion || DEFAULT_QUATERNION, scale, math.mat4()); + } } math.AABB3ToOBB3(cfg.geometry.aabb, tempOBB3); diff --git a/docs/file/src/viewer/scene/model/SceneModelEntity.js.html b/docs/file/src/viewer/scene/model/SceneModelEntity.js.html index f17fc01d19..fb0bd32988 100644 --- a/docs/file/src/viewer/scene/model/SceneModelEntity.js.html +++ b/docs/file/src/viewer/scene/model/SceneModelEntity.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/SceneModelMesh.js.html b/docs/file/src/viewer/scene/model/SceneModelMesh.js.html index 165e872dab..017d70db37 100644 --- a/docs/file/src/viewer/scene/model/SceneModelMesh.js.html +++ b/docs/file/src/viewer/scene/model/SceneModelMesh.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/SceneModelTexture.js.html b/docs/file/src/viewer/scene/model/SceneModelTexture.js.html index e21ef0394e..adbc5da5ca 100644 --- a/docs/file/src/viewer/scene/model/SceneModelTexture.js.html +++ b/docs/file/src/viewer/scene/model/SceneModelTexture.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/SceneModelTextureSet.js.html b/docs/file/src/viewer/scene/model/SceneModelTextureSet.js.html index bd0ac31194..7bdd58c2d8 100644 --- a/docs/file/src/viewer/scene/model/SceneModelTextureSet.js.html +++ b/docs/file/src/viewer/scene/model/SceneModelTextureSet.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/SceneModelTransform.js.html b/docs/file/src/viewer/scene/model/SceneModelTransform.js.html index 04547fe3c6..88f2690751 100644 --- a/docs/file/src/viewer/scene/model/SceneModelTransform.js.html +++ b/docs/file/src/viewer/scene/model/SceneModelTransform.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/VBOSceneModel.js.html b/docs/file/src/viewer/scene/model/VBOSceneModel.js.html index a212efff4a..d1c0818e7c 100644 --- a/docs/file/src/viewer/scene/model/VBOSceneModel.js.html +++ b/docs/file/src/viewer/scene/model/VBOSceneModel.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/calculateUniquePositions.js.html b/docs/file/src/viewer/scene/model/calculateUniquePositions.js.html index 62521a1e5d..35603b85b8 100644 --- a/docs/file/src/viewer/scene/model/calculateUniquePositions.js.html +++ b/docs/file/src/viewer/scene/model/calculateUniquePositions.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/compression.js.html b/docs/file/src/viewer/scene/model/compression.js.html index 8d75b582ed..11e5036e28 100644 --- a/docs/file/src/viewer/scene/model/compression.js.html +++ b/docs/file/src/viewer/scene/model/compression.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/BindableDataTexture.js.html b/docs/file/src/viewer/scene/model/dtx/BindableDataTexture.js.html index a1ff512d6e..91961776eb 100644 --- a/docs/file/src/viewer/scene/model/dtx/BindableDataTexture.js.html +++ b/docs/file/src/viewer/scene/model/dtx/BindableDataTexture.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js.html b/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js.html index 539c9618b7..2e4ab3cbc0 100644 --- a/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesState.js.html b/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesState.js.html index 1606098ca0..61cd776fe7 100644 --- a/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesState.js.html +++ b/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesState.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js.html b/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js.html index 685b29f0af..8f9345e8f9 100644 --- a/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js.html +++ b/docs/file/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js.html b/docs/file/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js.html index a86adeddb9..43ef9c551a 100644 --- a/docs/file/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js.html +++ b/docs/file/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/lines/rebucketPositions.js.html b/docs/file/src/viewer/scene/model/dtx/lines/rebucketPositions.js.html index 80ba864cb6..bf0bbe3fff 100644 --- a/docs/file/src/viewer/scene/model/dtx/lines/rebucketPositions.js.html +++ b/docs/file/src/viewer/scene/model/dtx/lines/rebucketPositions.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js.html index cec9d70cbf..72ab994329 100644 --- a/docs/file/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js.html b/docs/file/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js.html index baf2b91804..8181e2a401 100644 --- a/docs/file/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js.html +++ b/docs/file/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js.html index ab31f3ab2e..f4f5a81796 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js.html index 77a5f9de65..edc5ff599f 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js.html index 3544a111fc..9ab6071848 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js.html index ad3a23c88d..d129ddd714 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js.html index 45dd7882b7..b0329c14b1 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js.html index 40d0017f20..1f5c966d10 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js.html index 9297cd8785..5484483134 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js.html index 0493e30a88..abe0f48394 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js.html index 5540f7757d..b41b49e854 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js.html index bbbd8a31a2..4268a50099 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js.html index 00b51461e1..d2c2f33b8d 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js.html index a653dbd315..acc7c81f2f 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js.html index 36c0d7fa51..21cd2c179e 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js.html index ad09bd4fe1..874dae8361 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js.html index c6357197ac..61e43e216e 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js.html index 71414822c3..7b5d27c935 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js.html index e9e85b7cd9..b9ff7a57ee 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js.html b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js.html index 15d814dbf0..66aba3becb 100644 --- a/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js.html +++ b/docs/file/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/index.js.html b/docs/file/src/viewer/scene/model/index.js.html index deaf98b70b..f82b0dd479 100644 --- a/docs/file/src/viewer/scene/model/index.js.html +++ b/docs/file/src/viewer/scene/model/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/rebucketPositions.js.html b/docs/file/src/viewer/scene/model/rebucketPositions.js.html index 4cd421d8de..461d00cd13 100644 --- a/docs/file/src/viewer/scene/model/rebucketPositions.js.html +++ b/docs/file/src/viewer/scene/model/rebucketPositions.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/ScratchMemory.js.html b/docs/file/src/viewer/scene/model/vbo/ScratchMemory.js.html index 3064376a86..10e9d8952f 100644 --- a/docs/file/src/viewer/scene/model/vbo/ScratchMemory.js.html +++ b/docs/file/src/viewer/scene/model/vbo/ScratchMemory.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/VBORenderer.js.html b/docs/file/src/viewer/scene/model/vbo/VBORenderer.js.html index 7874f9fbc2..b00905746b 100644 --- a/docs/file/src/viewer/scene/model/vbo/VBORenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/VBORenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js.html index 1a4e282e9f..042314fb1a 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js.html index c5256be453..10523dbc5a 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js.html index 8fda655b72..e6fc1daf3f 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js.html index 3ed1cf0a2c..ed86d68f25 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js.html index d92162fbe5..704f73be7d 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js.html index a7a52766fe..5f17ca5d3b 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js.html index b4a0449e7b..5d0edfa68c 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js.html index da1420861e..741d6f8f53 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js.html index 72fdc68869..d582e173f7 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js.html index 8d6ca8b072..43fdec8459 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js.html index 2f235d8bcf..af9234381d 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js.html index 0b0f011480..7cf12946b2 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js.html index bc2b1ead6d..7e6b611540 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js.html index 5d04837154..72cfc5a53b 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js.html index 7944759834..09ce658709 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js.html index 52f57bd63d..d0e4be6e40 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js.html index 58abf80aa3..93c48fa764 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js.html index 46f1fbb4f6..578f58ad0b 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js.html index 28fcdbf392..32b0d753f8 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js.html index 83bf35291f..7895fa2f2a 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js.html index ec85c1e631..26e3a78692 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js.html index 480fd1c2cc..9b95e2ea2a 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js.html index 0d1e3e4896..83d5a26fea 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js.html index 83e0997586..5bd12d88d9 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js.html index ada9645cd7..d83b3dd94c 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js.html index c79c576600..f8ab27cd85 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js.html index 4a37efadcd..7085ccbe4e 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js.html index bcc71e4e7b..fd48b2e51f 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js.html index 8205bffdf6..c9aaf844dc 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js.html index 6fc0a8cab4..e506fa3aad 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js.html index 151d624725..76cb601e2c 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js.html index 66e5f61f1d..cdd5075fb9 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js.html index 5d913a4b83..dd50e8c5bd 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js.html index c626c2fb4f..e11ea9818c 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js.html index 11db642488..73c38f5ac0 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js.html index 2643c8c00b..6671e975c8 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js.html index 01d39fce3a..d944e47c52 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js.html index 19517d03f2..3b74adaa71 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js.html index 0b4e543d6d..231b110157 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js.html index f6e0d22b81..bf9877c71a 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js.html index d39ddc24c2..f873affffc 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js.html index 1c0d6d6ff6..48ae2aae74 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js.html index ce1c135e00..f1363ffa61 100644 --- a/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/float16.js.html b/docs/file/src/viewer/scene/model/vbo/float16.js.html index d99f686559..9c3f10b7f6 100644 --- a/docs/file/src/viewer/scene/model/vbo/float16.js.html +++ b/docs/file/src/viewer/scene/model/vbo/float16.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js.html index ca05a73d38..fbc2d6606e 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js.html index 9ae0e224e2..b41ea2c1c6 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js.html index 6182ec49cc..e8bbb2862c 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js.html index 2a7c76f283..a2898f4c84 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js.html index 97b47e0e89..38b35ac908 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js.html index deaad03b74..554d091cb6 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js.html index b10eb823d4..3c1d15f798 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js.html index bcc13baf1a..b092bdc5b7 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js.html index 0d34261f5a..38a4db0971 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js.html index 2ba71caec4..6db3474dc0 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js.html index cfb77c0e0c..abe5c76f5d 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js.html index 1857861bc3..d37b402898 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js.html index c0120afbe4..a77c0d5154 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js.html index 0eeca45095..f038cff16e 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js.html index 120c6d67c5..7fc40b096f 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js.html index 049b766945..00e518f0df 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js.html index 38c688a60e..981802d5b5 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js.html index f1a61e14a1..5f723a4a9d 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js.html index 514c3280e5..d9c7c4e7ea 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js.html index a851100e2b..1d116951b0 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js.html index 640e010f45..50f4a2c424 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js.html index 9bdc7c0228..4b92f3941b 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js.html index 3346fa868c..4fae7a3492 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js.html index 50059a7b22..6bcf625bb2 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js.html index f7f741dcc9..14ebbc7b8f 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js.html index 2431f655a6..da65a48e55 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js.html index 765dd036aa..3ef44d346b 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js.html index 4e50f190a7..e258c16dcd 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js.html index 5d97b25185..ad84a707b4 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js.html index 8dcaf0a20a..7f897a1295 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js.html index 783bb2c20a..798013ce6c 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js.html index 9c6171604c..b3be58d064 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js.html index d6fdceeea9..d112662bb0 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js.html index 2354c759e5..0c1cd7309e 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js.html index 0472e18826..7b111c2e28 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js.html index 823e3a5363..743dc53324 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js.html index 5b3f2d94a2..acfba0a358 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js.html index 55e5a81d75..3fcc4991c5 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js.html index f60f4a4346..87efcc738a 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js.html index 54241ff7da..965af85029 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js.html index 8907818e27..5366877569 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js.html b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js.html index 8e4c60a8c8..adb9c736f3 100644 --- a/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js.html +++ b/docs/file/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/nodes/Node.js.html b/docs/file/src/viewer/scene/nodes/Node.js.html index a0452025ab..621876d0d1 100644 --- a/docs/file/src/viewer/scene/nodes/Node.js.html +++ b/docs/file/src/viewer/scene/nodes/Node.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/nodes/index.js.html b/docs/file/src/viewer/scene/nodes/index.js.html index 27e5d5c985..ab4907ccfb 100644 --- a/docs/file/src/viewer/scene/nodes/index.js.html +++ b/docs/file/src/viewer/scene/nodes/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/paths/CubicBezierCurve.js.html b/docs/file/src/viewer/scene/paths/CubicBezierCurve.js.html index f2cc64868c..694571e51f 100644 --- a/docs/file/src/viewer/scene/paths/CubicBezierCurve.js.html +++ b/docs/file/src/viewer/scene/paths/CubicBezierCurve.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/paths/Curve.js.html b/docs/file/src/viewer/scene/paths/Curve.js.html index 77fbc93e99..07b9226071 100644 --- a/docs/file/src/viewer/scene/paths/Curve.js.html +++ b/docs/file/src/viewer/scene/paths/Curve.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/paths/Path.js.html b/docs/file/src/viewer/scene/paths/Path.js.html index 75b5e7881c..4357b8366d 100644 --- a/docs/file/src/viewer/scene/paths/Path.js.html +++ b/docs/file/src/viewer/scene/paths/Path.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/paths/QuadraticBezierCurve.js.html b/docs/file/src/viewer/scene/paths/QuadraticBezierCurve.js.html index 494732eea3..f7282f795f 100644 --- a/docs/file/src/viewer/scene/paths/QuadraticBezierCurve.js.html +++ b/docs/file/src/viewer/scene/paths/QuadraticBezierCurve.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/paths/SplineCurve.js.html b/docs/file/src/viewer/scene/paths/SplineCurve.js.html index c61a149da4..6477ef9ed9 100644 --- a/docs/file/src/viewer/scene/paths/SplineCurve.js.html +++ b/docs/file/src/viewer/scene/paths/SplineCurve.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/paths/index.js.html b/docs/file/src/viewer/scene/paths/index.js.html index 4f1b1405b6..96bbbce22a 100644 --- a/docs/file/src/viewer/scene/paths/index.js.html +++ b/docs/file/src/viewer/scene/paths/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/postfx/CrossSections.js.html b/docs/file/src/viewer/scene/postfx/CrossSections.js.html index 1c27dae5a1..40065b6009 100644 --- a/docs/file/src/viewer/scene/postfx/CrossSections.js.html +++ b/docs/file/src/viewer/scene/postfx/CrossSections.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/postfx/SAO.js.html b/docs/file/src/viewer/scene/postfx/SAO.js.html index a0e07e671e..c7520983f2 100644 --- a/docs/file/src/viewer/scene/postfx/SAO.js.html +++ b/docs/file/src/viewer/scene/postfx/SAO.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/scene/Scene.js.html b/docs/file/src/viewer/scene/scene/Scene.js.html index 8abda4926d..35465800a8 100644 --- a/docs/file/src/viewer/scene/scene/Scene.js.html +++ b/docs/file/src/viewer/scene/scene/Scene.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/sectionPlane/SectionPlane.js.html b/docs/file/src/viewer/scene/sectionPlane/SectionPlane.js.html index 7a6ffcedb6..1e0ee73c87 100644 --- a/docs/file/src/viewer/scene/sectionPlane/SectionPlane.js.html +++ b/docs/file/src/viewer/scene/sectionPlane/SectionPlane.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/sectionPlane/SectionPlaneCache.js.html b/docs/file/src/viewer/scene/sectionPlane/SectionPlaneCache.js.html index 6a7b7f2aff..5f1d543889 100644 --- a/docs/file/src/viewer/scene/sectionPlane/SectionPlaneCache.js.html +++ b/docs/file/src/viewer/scene/sectionPlane/SectionPlaneCache.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/sectionPlane/index.js.html b/docs/file/src/viewer/scene/sectionPlane/index.js.html index 1db4547d70..7ea791499c 100644 --- a/docs/file/src/viewer/scene/sectionPlane/index.js.html +++ b/docs/file/src/viewer/scene/sectionPlane/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/skybox/Skybox.js.html b/docs/file/src/viewer/scene/skybox/Skybox.js.html index 267f4f2916..aa3cefaf5d 100644 --- a/docs/file/src/viewer/scene/skybox/Skybox.js.html +++ b/docs/file/src/viewer/scene/skybox/Skybox.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/skybox/index.js.html b/docs/file/src/viewer/scene/skybox/index.js.html index 69afaaedc1..0ff42b9780 100644 --- a/docs/file/src/viewer/scene/skybox/index.js.html +++ b/docs/file/src/viewer/scene/skybox/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/stats.js.html b/docs/file/src/viewer/scene/stats.js.html index eadebcc6b9..59e191ea4e 100644 --- a/docs/file/src/viewer/scene/stats.js.html +++ b/docs/file/src/viewer/scene/stats.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils.js.html b/docs/file/src/viewer/scene/utils.js.html index 1767432895..da6934d424 100644 --- a/docs/file/src/viewer/scene/utils.js.html +++ b/docs/file/src/viewer/scene/utils.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/Cache.js.html b/docs/file/src/viewer/scene/utils/Cache.js.html index 9218de26da..1f98d50e86 100644 --- a/docs/file/src/viewer/scene/utils/Cache.js.html +++ b/docs/file/src/viewer/scene/utils/Cache.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/FileLoader.js.html b/docs/file/src/viewer/scene/utils/FileLoader.js.html index 6c35305422..cb928d30a8 100644 --- a/docs/file/src/viewer/scene/utils/FileLoader.js.html +++ b/docs/file/src/viewer/scene/utils/FileLoader.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/Loader.js.html b/docs/file/src/viewer/scene/utils/Loader.js.html index ee34be8a11..406759cfd4 100644 --- a/docs/file/src/viewer/scene/utils/Loader.js.html +++ b/docs/file/src/viewer/scene/utils/Loader.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/LoadingManager.js.html b/docs/file/src/viewer/scene/utils/LoadingManager.js.html index 81d520ddbe..615e26525e 100644 --- a/docs/file/src/viewer/scene/utils/LoadingManager.js.html +++ b/docs/file/src/viewer/scene/utils/LoadingManager.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/Map.js.html b/docs/file/src/viewer/scene/utils/Map.js.html index 7608649ad1..84a1e808a0 100644 --- a/docs/file/src/viewer/scene/utils/Map.js.html +++ b/docs/file/src/viewer/scene/utils/Map.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/Queue.js.html b/docs/file/src/viewer/scene/utils/Queue.js.html index 219c21264d..a7fe6d681a 100644 --- a/docs/file/src/viewer/scene/utils/Queue.js.html +++ b/docs/file/src/viewer/scene/utils/Queue.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/WorkerPool.js.html b/docs/file/src/viewer/scene/utils/WorkerPool.js.html index 6aa0364341..5dd86e74ea 100644 --- a/docs/file/src/viewer/scene/utils/WorkerPool.js.html +++ b/docs/file/src/viewer/scene/utils/WorkerPool.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/index.js.html b/docs/file/src/viewer/scene/utils/index.js.html index 30d19a30a4..f5db302001 100644 --- a/docs/file/src/viewer/scene/utils/index.js.html +++ b/docs/file/src/viewer/scene/utils/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js.html b/docs/file/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js.html index b65cfc9452..284608e96f 100644 --- a/docs/file/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js.html +++ b/docs/file/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js.html b/docs/file/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js.html index 4a60b29e7f..8669270dfa 100644 --- a/docs/file/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js.html +++ b/docs/file/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js.html b/docs/file/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js.html index 0593b13576..1e71d0f900 100644 --- a/docs/file/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js.html +++ b/docs/file/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/utils/textureTranscoders/index.js.html b/docs/file/src/viewer/scene/utils/textureTranscoders/index.js.html index 8c3064832c..505f1316d1 100644 --- a/docs/file/src/viewer/scene/utils/textureTranscoders/index.js.html +++ b/docs/file/src/viewer/scene/utils/textureTranscoders/index.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/viewport/Viewport.js.html b/docs/file/src/viewer/scene/viewport/Viewport.js.html index 19fd2061d3..9746184f8f 100644 --- a/docs/file/src/viewer/scene/viewport/Viewport.js.html +++ b/docs/file/src/viewer/scene/viewport/Viewport.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/ArrayBuf.js.html b/docs/file/src/viewer/scene/webgl/ArrayBuf.js.html index 0b5041a277..a794f62804 100644 --- a/docs/file/src/viewer/scene/webgl/ArrayBuf.js.html +++ b/docs/file/src/viewer/scene/webgl/ArrayBuf.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/Attribute.js.html b/docs/file/src/viewer/scene/webgl/Attribute.js.html index 40f07779f7..97ba7a8644 100644 --- a/docs/file/src/viewer/scene/webgl/Attribute.js.html +++ b/docs/file/src/viewer/scene/webgl/Attribute.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/Drawable.js.html b/docs/file/src/viewer/scene/webgl/Drawable.js.html index b6d5164197..6b00287ed9 100644 --- a/docs/file/src/viewer/scene/webgl/Drawable.js.html +++ b/docs/file/src/viewer/scene/webgl/Drawable.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/FrameContext.js.html b/docs/file/src/viewer/scene/webgl/FrameContext.js.html index cea1bdb1f7..069e329f10 100644 --- a/docs/file/src/viewer/scene/webgl/FrameContext.js.html +++ b/docs/file/src/viewer/scene/webgl/FrameContext.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/PickResult.js.html b/docs/file/src/viewer/scene/webgl/PickResult.js.html index e9a4f1a663..5be967e6eb 100644 --- a/docs/file/src/viewer/scene/webgl/PickResult.js.html +++ b/docs/file/src/viewer/scene/webgl/PickResult.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/Pickable.js.html b/docs/file/src/viewer/scene/webgl/Pickable.js.html index afe14e6e25..a2e89b7272 100644 --- a/docs/file/src/viewer/scene/webgl/Pickable.js.html +++ b/docs/file/src/viewer/scene/webgl/Pickable.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/Program.js.html b/docs/file/src/viewer/scene/webgl/Program.js.html index 911f630d37..caca990232 100644 --- a/docs/file/src/viewer/scene/webgl/Program.js.html +++ b/docs/file/src/viewer/scene/webgl/Program.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/RenderBuffer.js.html b/docs/file/src/viewer/scene/webgl/RenderBuffer.js.html index d2a68db5be..66430953f2 100644 --- a/docs/file/src/viewer/scene/webgl/RenderBuffer.js.html +++ b/docs/file/src/viewer/scene/webgl/RenderBuffer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/RenderBufferManager.js.html b/docs/file/src/viewer/scene/webgl/RenderBufferManager.js.html index 9cbf7dc3a1..60e51f77db 100644 --- a/docs/file/src/viewer/scene/webgl/RenderBufferManager.js.html +++ b/docs/file/src/viewer/scene/webgl/RenderBufferManager.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/RenderFlags.js.html b/docs/file/src/viewer/scene/webgl/RenderFlags.js.html index ede42d3065..79db731ed6 100644 --- a/docs/file/src/viewer/scene/webgl/RenderFlags.js.html +++ b/docs/file/src/viewer/scene/webgl/RenderFlags.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/RenderState.js.html b/docs/file/src/viewer/scene/webgl/RenderState.js.html index 6fe46c5e97..e6428cf782 100644 --- a/docs/file/src/viewer/scene/webgl/RenderState.js.html +++ b/docs/file/src/viewer/scene/webgl/RenderState.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/Renderer.js.html b/docs/file/src/viewer/scene/webgl/Renderer.js.html index 4c769b831d..d484c8b348 100644 --- a/docs/file/src/viewer/scene/webgl/Renderer.js.html +++ b/docs/file/src/viewer/scene/webgl/Renderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/Sampler.js.html b/docs/file/src/viewer/scene/webgl/Sampler.js.html index 3feecb021b..e4e0570e67 100644 --- a/docs/file/src/viewer/scene/webgl/Sampler.js.html +++ b/docs/file/src/viewer/scene/webgl/Sampler.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/Shader.js.html b/docs/file/src/viewer/scene/webgl/Shader.js.html index 259278377b..ebb2fa0e50 100644 --- a/docs/file/src/viewer/scene/webgl/Shader.js.html +++ b/docs/file/src/viewer/scene/webgl/Shader.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/Texture2D.js.html b/docs/file/src/viewer/scene/webgl/Texture2D.js.html index 7689eca85d..0024e37d26 100644 --- a/docs/file/src/viewer/scene/webgl/Texture2D.js.html +++ b/docs/file/src/viewer/scene/webgl/Texture2D.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/convertConstant.js.html b/docs/file/src/viewer/scene/webgl/convertConstant.js.html index 735e33416d..b4da6ea3ec 100644 --- a/docs/file/src/viewer/scene/webgl/convertConstant.js.html +++ b/docs/file/src/viewer/scene/webgl/convertConstant.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/getExtension.js.html b/docs/file/src/viewer/scene/webgl/getExtension.js.html index 7560e2528b..9d86d5a6eb 100644 --- a/docs/file/src/viewer/scene/webgl/getExtension.js.html +++ b/docs/file/src/viewer/scene/webgl/getExtension.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/occlusion/OcclusionLayer.js.html b/docs/file/src/viewer/scene/webgl/occlusion/OcclusionLayer.js.html index c8b306bcfe..a421c5c88d 100644 --- a/docs/file/src/viewer/scene/webgl/occlusion/OcclusionLayer.js.html +++ b/docs/file/src/viewer/scene/webgl/occlusion/OcclusionLayer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/occlusion/OcclusionTester.js.html b/docs/file/src/viewer/scene/webgl/occlusion/OcclusionTester.js.html index 280ed9e13e..5de447a094 100644 --- a/docs/file/src/viewer/scene/webgl/occlusion/OcclusionTester.js.html +++ b/docs/file/src/viewer/scene/webgl/occlusion/OcclusionTester.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js.html b/docs/file/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js.html index e138b55bdf..dad471e643 100644 --- a/docs/file/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js.html +++ b/docs/file/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js.html b/docs/file/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js.html index 45b7fae93f..995b5a0cd8 100644 --- a/docs/file/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webgl/webglEnums.js.html b/docs/file/src/viewer/scene/webgl/webglEnums.js.html index ee85f66f3d..1709d4a57c 100644 --- a/docs/file/src/viewer/scene/webgl/webglEnums.js.html +++ b/docs/file/src/viewer/scene/webgl/webglEnums.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/file/src/viewer/scene/webglInfo.js.html b/docs/file/src/viewer/scene/webglInfo.js.html index f4322a7747..17c5480d94 100644 --- a/docs/file/src/viewer/scene/webglInfo.js.html +++ b/docs/file/src/viewer/scene/webglInfo.js.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/function/index.html b/docs/function/index.html index c6e2bd1f6f..a6d136c665 100644 --- a/docs/function/index.html +++ b/docs/function/index.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/identifiers.html b/docs/identifiers.html index 2a43db2af0..e3c4f5c48b 100644 --- a/docs/identifiers.html +++ b/docs/identifiers.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -1054,6 +1056,74 @@

    plugins/DistanceM + + + + +

    +
    +
    +

    plugins/DotBIMLoaderPlugin

    +
    + + + + + + + + + + + + @@ -7524,6 +7594,7 @@

    viewer/utils

    + diff --git a/docs/index.html b/docs/index.html index 605eb296f2..a84ac104ca 100644 --- a/docs/index.html +++ b/docs/index.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • diff --git a/docs/index.json b/docs/index.json index d5406ca24f..f74d0dd2ea 100644 --- a/docs/index.json +++ b/docs/index.json @@ -15990,6 +15990,534 @@ { "__docId__": 1007, "kind": "file", + "name": "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js", + "content": "import {utils} from \"../../viewer/scene/utils.js\";\n\n/**\n * Default data access strategy for {@link DotBIMLoaderPlugin}.\n *\n * This just loads assets using XMLHttpRequest.\n */\nexport class DotBIMDefaultDataSource {\n\n constructor() {\n }\n\n /**\n * Gets .BIM JSON.\n *\n * @param {String|Number} dotBIMSrc Identifies the .BIM JSON asset.\n * @param {Function} ok Fired on successful loading of the .BIM JSON asset.\n * @param {Function} error Fired on error while loading the .BIM JSON asset.\n */\n getDotBIM(dotBIMSrc, ok, error) {\n utils.loadJSON(dotBIMSrc,\n (json) => {\n ok(json);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n}", + "static": true, + "longname": "/home/lindsay/xeolabs/xeokit-sdk-feb14/src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 1008, + "kind": "class", + "name": "DotBIMDefaultDataSource", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js", + "static": true, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource", + "access": "public", + "export": true, + "importPath": "@xeokit/xeokit-sdk/src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js", + "importStyle": "{DotBIMDefaultDataSource}", + "description": "Default data access strategy for {@link DotBIMLoaderPlugin}.\n\nThis just loads assets using XMLHttpRequest.", + "lineNumber": 8, + "interface": false + }, + { + "__docId__": 1009, + "kind": "constructor", + "name": "constructor", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource#constructor", + "access": "public", + "description": null, + "lineNumber": 10, + "undocument": true + }, + { + "__docId__": 1010, + "kind": "method", + "name": "getDotBIM", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource#getDotBIM", + "access": "public", + "description": "Gets .BIM JSON.", + "lineNumber": 20, + "params": [ + { + "nullable": null, + "types": [ + "String", + "Number" + ], + "spread": false, + "optional": false, + "name": "dotBIMSrc", + "description": "Identifies the .BIM JSON asset." + }, + { + "nullable": null, + "types": [ + "Function" + ], + "spread": false, + "optional": false, + "name": "ok", + "description": "Fired on successful loading of the .BIM JSON asset." + }, + { + "nullable": null, + "types": [ + "Function" + ], + "spread": false, + "optional": false, + "name": "error", + "description": "Fired on error while loading the .BIM JSON asset." + } + ], + "return": null + }, + { + "__docId__": 1011, + "kind": "file", + "name": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js", + "content": "import {Plugin, SceneModel, utils} from \"../../viewer/index.js\"\nimport {math} from \"../../viewer/scene/math/math.js\";\nimport {DotBIMDefaultDataSource} from \"./DotBIMDefaultDataSource.js\";\nimport {IFCObjectDefaults} from \"../../viewer/metadata/IFCObjectDefaults.js\";\n\n/**\n * {@link Viewer} plugin that loads models from [.bim](https://dotbim.net/) format.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House)]\n *\n * * Creates an {@link Entity} representing each .bim model it loads, which will have {@link Entity#isModel} set ````true````\n * and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the .bim model. Those Entities will have {@link Entity#isObject}\n * set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space,\n * along with initial properties for all the model's {@link Entity}s.\n * * Allows to mask which IFC types we want to load.\n * * Allows to configure initial viewer state for specified IFC types (color, visibility, selection, highlighted, X-rayed, pickable, etc).\n *\n * ## Usage\n *\n * In the example below we'll load a house model from a [.bim file](/assets/models/dotbim/House.bim).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with\n * a {@link MetaModel} and {@link MetaObject}s that hold their metadata.\n *\n * ````javascript\n * import {Viewer, DotBIMLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a .bim loader plugin,\n * // 2. Load a .bim building model, emphasizing the edges to make it look nicer\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const dotBIMLoader = new DotBIMLoaderPlugin(viewer);\n *\n * // 2\n * var model = dotBIMLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"House.bim\",\n * edges: true\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.bim````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll rotate our model 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = dotBIMLoader.load({\n * src: \"House.bim\",\n * rotation: [90,0,0],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = dotBIMLoader.load({\n * id: \"myModel\",\n * src: \"House.bim\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = dotBIMLoader.load({\n * id: \"myModel\",\n * src: \"House.bim\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n * \n * # Configuring initial IFC object appearances\n *\n * We can specify the custom initial appearance of loaded objects according to their IFC types.\n *\n * This is useful for things like:\n *\n * * setting the colors to our objects according to their IFC types,\n * * automatically hiding ````IfcSpace```` objects, and\n * * ensuring that ````IfcWindow```` objects are always transparent.\n *
    \n * In the example below, we'll load a model, while configuring ````IfcSpace```` elements to be always initially invisible,\n * and ````IfcWindow```` types to be always translucent blue.\n *\n * ````javascript\n * const myObjectDefaults = {\n * \n * IfcSpace: {\n * visible: false\n * },\n * IfcWindow: {\n * colorize: [0.337255, 0.303922, 0.870588], // Blue\n * opacity: 0.3\n * },\n * \n * //...\n * \n * DEFAULT: {\n * colorize: [0.5, 0.5, 0.5]\n * }\n * };\n *\n * const model4 = dotBIMLoader.load({\n * id: \"myModel4\",\n * src: \"House.bim\",\n * objectDefaults: myObjectDefaults // Use our custom initial default states for object Entities\n * });\n * ````\n *\n * When we don't customize the appearance of IFC types, as just above, then IfcSpace elements tend to obscure other\n * elements, which can be confusing.\n *\n * It's often helpful to make IfcSpaces transparent and unpickable, like this:\n *\n * ````javascript\n * const dotBIMLoader = new DotBIMLoaderPlugin(viewer, {\n * objectDefaults: {\n * IfcSpace: {\n * pickable: false,\n * opacity: 0.2\n * }\n * }\n * });\n * ````\n *\n * Alternatively, we could just make IfcSpaces invisible, which also makes them unpickable:\n *\n * ````javascript\n * const dotBIMLoader = new DotBIMLoaderPlugin(viewer, {\n * objectDefaults: {\n * IfcSpace: {\n * visible: false\n * }\n * }\n * });\n * ````\n *\n * # Configuring a custom data source\n *\n * By default, DotBIMLoaderPlugin will load *````.bim````* files and metadata JSON over HTTP.\n *\n * In the example below, we'll customize the way DotBIMLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n * \n * constructor() {\n * }\n * \n * // Gets the contents of the given .bim file in a JSON object\n * getDotBIM(src, ok, error) {\n * utils.loadJSON(dotBIMSrc,\n * (json) => {\n * ok(json);\n * },\n * function (errMsg) {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const dotBIMLoader2 = new DotBIMLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const model5 = dotBIMLoader2.load({\n * id: \"myModel5\",\n * src: \"House.bim\"\n * });\n * ````\n * @class DotBIMLoaderPlugin\n */\nexport class DotBIMLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"DotBIMLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the DotBIMLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link DotBIMDefaultDataSource}, which loads over HTTP.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"DotBIMLoader\", viewer, cfg);\n\n this.dataSource = cfg.dataSource;\n this.objectDefaults = cfg.objectDefaults;\n }\n\n /**\n * Sets a custom data source through which the DotBIMLoaderPlugin can .BIM files.\n *\n * Default value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new DotBIMDefaultDataSource();\n }\n\n /**\n * Gets the custom data source through which the DotBIMLoaderPlugin can load .BIM files.\n *\n * Default value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n set objectDefaults(value) {\n this._objectDefaults = value || IFCObjectDefaults;\n }\n\n /**\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n get objectDefaults() {\n return this._objectDefaults;\n }\n\n /**\n * Loads a .BIM model from a file into this DotBIMLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a .BIM file, as an alternative to the ````bim```` parameter.\n * @param {*} [params.bim] .BIM JSON, as an alternative to the ````src```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the .BIM material is single-sided. When false, only show backfaces on geometries whenever the .BIM material is double-sided.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {\n isModel: true,\n backfaces: params.backfaces,\n dtxEnabled: params.dtxEnabled,\n rotation: params.rotation,\n origin: params.origin\n }));\n\n const modelId = sceneModel.id; // In case ID was auto-generated\n\n if (!params.src && !params.dotBIM) {\n this.error(\"load() param expected: src or dotBIM\");\n return sceneModel; // Return new empty model\n }\n\n const objectDefaults = params.objectDefaults || this._objectDefaults || IFCObjectDefaults;\n\n let includeTypes;\n if (params.includeTypes) {\n includeTypes = {};\n for (let i = 0, len = params.includeTypes.length; i < len; i++) {\n includeTypes[params.includeTypes[i]] = true;\n }\n }\n\n let excludeTypes;\n if (params.excludeTypes) {\n excludeTypes = {};\n if (!includeTypes) {\n includeTypes = {};\n }\n for (let i = 0, len = params.excludeTypes.length; i < len; i++) {\n includeTypes[params.excludeTypes[i]] = true;\n }\n }\n\n const parseDotBIM = (ctx) => {\n\n const fileData = ctx.fileData;\n const sceneModel = ctx.sceneModel;\n\n const dbMeshIndices = {};\n const dbMeshLoaded = {};\n\n const ifcProjectId = math.createUUID();\n const ifcSiteId = math.createUUID();\n const ifcBuildingId = math.createUUID();\n const ifcBuildingStoryId = math.createUUID();\n\n const metaModelData = {\n metaObjects: [\n {\n id: ifcProjectId,\n name: \"IfcProject\",\n type: \"IfcProject\",\n parent: null\n },\n {\n id: ifcSiteId,\n name: \"IfcSite\",\n type: \"IfcSite\",\n parent: ifcProjectId\n },\n {\n id: ifcBuildingId,\n name: \"IfcBuilding\",\n type: \"IfcBuilding\",\n parent: ifcSiteId\n },\n {\n id: ifcBuildingStoryId,\n name: \"IfcBuildingStorey\",\n type: \"IfcBuildingStorey\",\n parent: ifcBuildingId\n }\n ],\n propertySets: []\n };\n\n for (let i = 0, len = fileData.meshes.length; i < len; i++) {\n const dbMesh = fileData.meshes[i];\n dbMeshIndices[dbMesh.mesh_id] = i;\n }\n\n const parseDBMesh = (dbMeshId) => {\n if (dbMeshLoaded[dbMeshId]) {\n return;\n }\n const dbMeshIndex = dbMeshIndices[dbMeshId];\n const dbMesh = fileData.meshes[dbMeshIndex];\n sceneModel.createGeometry({\n id: dbMeshId,\n primitive: \"triangles\",\n positions: dbMesh.coordinates,\n indices: dbMesh.indices\n });\n dbMeshLoaded[dbMeshId] = true;\n }\n\n const dbElements = fileData.elements;\n for (let i = 0, len = dbElements.length; i < len; i++) {\n const element = dbElements[i];\n const elementType = element.type;\n if (excludeTypes && excludeTypes[elementType]) {\n continue;\n\n }\n if (includeTypes && (!includeTypes[elementType])) {\n continue;\n }\n const info = element.info;\n const objectId =\n element.guid !== undefined\n ? `${element.guid}`\n : (info !== undefined && info.id !== undefined\n ? info.id\n : i);\n\n const dbMeshId = element.mesh_id;\n\n parseDBMesh(dbMeshId);\n\n const meshId = `${objectId}-mesh`;\n const vector = element.vector;\n const rotation = element.rotation;\n const props = objectDefaults ? objectDefaults[elementType] || objectDefaults[\"DEFAULT\"] : null;\n\n let visible = true;\n let pickable = true;\n let color = element.color ? [element.color.r / 255, element.color.g / 255, element.color.b / 255] : [1, 1, 1];\n let opacity = element.color ? element.color.a / 255 : 1.0;\n\n if (props) {\n if (props.visible === false) {\n visible = false;\n }\n if (props.pickable === false) {\n pickable = false;\n }\n if (props.colorize) {\n color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n opacity = props.opacity;\n }\n }\n\n sceneModel.createMesh({\n id: meshId,\n geometryId: dbMeshId,\n color,\n opacity,\n quaternion: rotation && (rotation.qz !== 0 || rotation.qy !== 0 || rotation.qx !== 0 || rotation.qw !== 1.0) ? [rotation.qx, rotation.qy, rotation.qz, rotation.qw] : undefined,\n position: vector ? [vector.x, vector.y, vector.z] : undefined\n });\n\n sceneModel.createEntity({\n id: objectId,\n meshIds: [meshId],\n visible,\n pickable,\n isObject: true\n });\n\n metaModelData.metaObjects.push({\n id: objectId,\n name: info && info.Name && info.Name !== \"None\" ? info.Name : `${element.type} ${objectId}`,\n type: element.type,\n parent: ifcBuildingStoryId\n });\n }\n\n sceneModel.finalize();\n\n this.viewer.metaScene.createMetaModel(modelId, metaModelData);\n\n sceneModel.scene.once(\"tick\", () => {\n if (sceneModel.destroyed) {\n return;\n }\n sceneModel.scene.fire(\"modelLoaded\", sceneModel.id); // FIXME: Assumes listeners know order of these two events\n sceneModel.fire(\"loaded\", true, false); // Don't forget the event, for late subscribers\n });\n }\n\n if (params.src) {\n const src = params.src;\n this.viewer.scene.canvas.spinner.processes++;\n this._dataSource.getDotBIM(src, (fileData) => { // OK\n const ctx = {\n fileData,\n sceneModel,\n nextId: 0,\n error: function (errMsg) {\n }\n };\n parseDotBIM(ctx);\n this.viewer.scene.canvas.spinner.processes--;\n },\n (err) => {\n this.viewer.scene.canvas.spinner.processes--;\n this.error(err);\n });\n } else if (params.dotBIM) {\n const ctx = {\n fileData: params.dotBIM,\n sceneModel,\n nextId: 0,\n error: function (errMsg) {\n }\n };\n parseDotBIM(ctx);\n }\n\n sceneModel.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(modelId);\n });\n\n return sceneModel;\n }\n\n /**\n * Destroys this DotBIMLoaderPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n", + "static": true, + "longname": "/home/lindsay/xeolabs/xeokit-sdk-feb14/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 1012, + "kind": "class", + "name": "DotBIMLoaderPlugin", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js", + "static": true, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "access": "public", + "export": true, + "importPath": "@xeokit/xeokit-sdk/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js", + "importStyle": "{DotBIMLoaderPlugin}", + "description": "{@link Viewer} plugin that loads models from [.bim](https://dotbim.net/) format.\n\n[](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House)\n\n[[Run this example](https://xeokit.github.io/xeokit-sdk/examples/buildings/#dotbim_House)]\n\n* Creates an {@link Entity} representing each .bim model it loads, which will have {@link Entity#isModel} set ````true````\nand will be registered by {@link Entity#id} in {@link Scene#models}.\n* Creates an {@link Entity} for each object within the .bim model. Those Entities will have {@link Entity#isObject}\nset ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n* When loading, can set the World-space position, scale and rotation of each model within World space,\nalong with initial properties for all the model's {@link Entity}s.\n* Allows to mask which IFC types we want to load.\n* Allows to configure initial viewer state for specified IFC types (color, visibility, selection, highlighted, X-rayed, pickable, etc).\n\n## Usage\n\nIn the example below we'll load a house model from a [.bim file](/assets/models/dotbim/House.bim).\n\nThis will create a bunch of {@link Entity}s that represents the model and its objects, along with\na {@link MetaModel} and {@link MetaObject}s that hold their metadata.\n\n````javascript\nimport {Viewer, DotBIMLoaderPlugin} from \"xeokit-sdk.es.js\";\n\n//------------------------------------------------------------------------------------------------------------------\n// 1. Create a Viewer,\n// 2. Arrange the camera,\n// 3. Tweak the selection material (tone it down a bit)\n//------------------------------------------------------------------------------------------------------------------\n\n// 1\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\n// 2\nviewer.camera.orbitPitch(20);\nviewer.camera.orbitYaw(-45);\n\n// 3\nviewer.scene.selectedMaterial.fillAlpha = 0.1;\n\n//------------------------------------------------------------------------------------------------------------------\n// 1. Create a .bim loader plugin,\n// 2. Load a .bim building model, emphasizing the edges to make it look nicer\n//------------------------------------------------------------------------------------------------------------------\n\n// 1\nconst dotBIMLoader = new DotBIMLoaderPlugin(viewer);\n\n// 2\nvar model = dotBIMLoader.load({ // Returns an Entity that represents the model\n id: \"myModel\",\n src: \"House.bim\",\n edges: true\n});\n\n// Find the model Entity by ID\nmodel = viewer.scene.models[\"myModel\"];\n\n// Destroy the model\nmodel.destroy();\n````\n\n## Transforming\n\nWe have the option to rotate, scale and translate each *````.bim````* model as we load it.\n\nThis lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n\nIn the example below, we'll rotate our model 90 degrees about its local X-axis, then\ntranslate it 100 units along its X axis.\n\n````javascript\nconst model = dotBIMLoader.load({\n src: \"House.bim\",\n rotation: [90,0,0],\n position: [100, 0, 0]\n});\n````\n\n## Including and excluding IFC types\n\nWe can also load only those objects that have the specified IFC types. In the example below, we'll load only the\nobjects that represent walls.\n\n````javascript\nconst model = dotBIMLoader.load({\n id: \"myModel\",\n src: \"House.bim\",\n includeTypes: [\"IfcWallStandardCase\"]\n});\n````\n\nWe can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\nobjects that do not represent empty space.\n\n````javascript\nconst model = dotBIMLoader.load({\n id: \"myModel\",\n src: \"House.bim\",\n excludeTypes: [\"IfcSpace\"]\n});\n````\n\n# Configuring initial IFC object appearances\n\nWe can specify the custom initial appearance of loaded objects according to their IFC types.\n\nThis is useful for things like:\n\n* setting the colors to our objects according to their IFC types,\n* automatically hiding ````IfcSpace```` objects, and\n* ensuring that ````IfcWindow```` objects are always transparent.\n
    \nIn the example below, we'll load a model, while configuring ````IfcSpace```` elements to be always initially invisible,\nand ````IfcWindow```` types to be always translucent blue.\n\n````javascript\nconst myObjectDefaults = {\n\n IfcSpace: {\n visible: false\n },\n IfcWindow: {\n colorize: [0.337255, 0.303922, 0.870588], // Blue\n opacity: 0.3\n },\n\n //...\n\n DEFAULT: {\n colorize: [0.5, 0.5, 0.5]\n }\n};\n\nconst model4 = dotBIMLoader.load({\n id: \"myModel4\",\n src: \"House.bim\",\n objectDefaults: myObjectDefaults // Use our custom initial default states for object Entities\n});\n````\n\nWhen we don't customize the appearance of IFC types, as just above, then IfcSpace elements tend to obscure other\nelements, which can be confusing.\n\nIt's often helpful to make IfcSpaces transparent and unpickable, like this:\n\n````javascript\nconst dotBIMLoader = new DotBIMLoaderPlugin(viewer, {\n objectDefaults: {\n IfcSpace: {\n pickable: false,\n opacity: 0.2\n }\n }\n});\n````\n\nAlternatively, we could just make IfcSpaces invisible, which also makes them unpickable:\n\n````javascript\nconst dotBIMLoader = new DotBIMLoaderPlugin(viewer, {\n objectDefaults: {\n IfcSpace: {\n visible: false\n }\n }\n});\n````\n\n# Configuring a custom data source\n\nBy default, DotBIMLoaderPlugin will load *````.bim````* files and metadata JSON over HTTP.\n\nIn the example below, we'll customize the way DotBIMLoaderPlugin loads the files by configuring it with our own data source\nobject. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n\n````javascript\nimport {utils} from \"xeokit-sdk.es.js\";\n\nclass MyDataSource {\n\n constructor() {\n }\n\n // Gets the contents of the given .bim file in a JSON object\n getDotBIM(src, ok, error) {\n utils.loadJSON(dotBIMSrc,\n (json) => {\n ok(json);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n}\n\nconst dotBIMLoader2 = new DotBIMLoaderPlugin(viewer, {\n dataSource: new MyDataSource()\n});\n\nconst model5 = dotBIMLoader2.load({\n id: \"myModel5\",\n src: \"House.bim\"\n});\n````", + "lineNumber": 218, + "unknown": [ + { + "tagName": "@class", + "tagValue": "DotBIMLoaderPlugin" + } + ], + "interface": false, + "extends": [ + "src/viewer/index.js~Plugin" + ] + }, + { + "__docId__": 1013, + "kind": "constructor", + "name": "constructor", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#constructor", + "access": "public", + "description": "", + "lineNumber": 229, + "unknown": [ + { + "tagName": "@constructor", + "tagValue": "" + } + ], + "params": [ + { + "nullable": null, + "types": [ + "Viewer" + ], + "spread": false, + "optional": false, + "name": "viewer", + "description": "The Viewer." + }, + { + "nullable": null, + "types": [ + "Object" + ], + "spread": false, + "optional": false, + "name": "cfg", + "description": "Plugin configuration." + }, + { + "nullable": null, + "types": [ + "String" + ], + "spread": false, + "optional": true, + "defaultValue": "\"DotBIMLoader\"", + "defaultRaw": "DotBIMLoader", + "name": "cfg.id", + "description": "Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}." + }, + { + "nullable": null, + "types": [ + "Object" + ], + "spread": false, + "optional": true, + "name": "cfg.objectDefaults", + "description": "Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}." + }, + { + "nullable": null, + "types": [ + "Object" + ], + "spread": false, + "optional": true, + "name": "cfg.dataSource", + "description": "A custom data source through which the DotBIMLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link DotBIMDefaultDataSource}, which loads over HTTP." + } + ] + }, + { + "__docId__": 1016, + "kind": "set", + "name": "dataSource", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#dataSource", + "access": "public", + "description": "Sets a custom data source through which the DotBIMLoaderPlugin can .BIM files.\n\nDefault value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest.", + "lineNumber": 244, + "type": { + "nullable": null, + "types": [ + "Object" + ], + "spread": false, + "description": null + } + }, + { + "__docId__": 1017, + "kind": "member", + "name": "_dataSource", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#_dataSource", + "access": "private", + "description": null, + "lineNumber": 245, + "undocument": true, + "ignore": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 1018, + "kind": "get", + "name": "dataSource", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#dataSource", + "access": "public", + "description": "Gets the custom data source through which the DotBIMLoaderPlugin can load .BIM files.\n\nDefault value is {@link DotBIMDefaultDataSource}, which loads via an XMLHttpRequest.", + "lineNumber": 255, + "type": { + "nullable": null, + "types": [ + "Object" + ], + "spread": false, + "description": null + } + }, + { + "__docId__": 1019, + "kind": "set", + "name": "objectDefaults", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#objectDefaults", + "access": "public", + "description": "Sets map of initial default states for each loaded {@link Entity} that represents an object.\n\nDefault value is {@link IFCObjectDefaults}.", + "lineNumber": 266, + "type": { + "nullable": null, + "types": [ + "{String: Object}" + ], + "spread": false, + "description": null + } + }, + { + "__docId__": 1020, + "kind": "member", + "name": "_objectDefaults", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#_objectDefaults", + "access": "private", + "description": null, + "lineNumber": 267, + "undocument": true, + "ignore": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 1021, + "kind": "get", + "name": "objectDefaults", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#objectDefaults", + "access": "public", + "description": "Gets map of initial default states for each loaded {@link Entity} that represents an object.\n\nDefault value is {@link IFCObjectDefaults}.", + "lineNumber": 277, + "type": { + "nullable": null, + "types": [ + "{String: Object}" + ], + "spread": false, + "description": null + } + }, + { + "__docId__": 1022, + "kind": "method", + "name": "load", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#load", + "access": "public", + "description": "Loads a .BIM model from a file into this DotBIMLoaderPlugin's {@link Viewer}.", + "lineNumber": 302, + "unknown": [ + { + "tagName": "@returns", + "tagValue": "{Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}" + } + ], + "params": [ + { + "nullable": null, + "types": [ + "*" + ], + "spread": false, + "optional": false, + "name": "params", + "description": "Loading parameters." + }, + { + "nullable": null, + "types": [ + "String" + ], + "spread": false, + "optional": true, + "name": "params.id", + "description": "ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default." + }, + { + "nullable": null, + "types": [ + "String" + ], + "spread": false, + "optional": true, + "name": "params.src", + "description": "Path to a .BIM file, as an alternative to the ````bim```` parameter." + }, + { + "nullable": null, + "types": [ + "*" + ], + "spread": false, + "optional": true, + "name": "params.bim", + "description": ".BIM JSON, as an alternative to the ````src```` parameter." + }, + { + "nullable": null, + "types": [ + "{String:Object}" + ], + "spread": false, + "optional": true, + "name": "params.objectDefaults", + "description": "Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}." + }, + { + "nullable": null, + "types": [ + "String[]" + ], + "spread": false, + "optional": true, + "name": "params.includeTypes", + "description": "When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list." + }, + { + "nullable": null, + "types": [ + "String[]" + ], + "spread": false, + "optional": true, + "name": "params.excludeTypes", + "description": "When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list." + }, + { + "nullable": null, + "types": [ + "Number[]" + ], + "spread": false, + "optional": true, + "defaultValue": "[0,0,0]", + "defaultRaw": [ + 0, + 0, + 0 + ], + "name": "params.origin", + "description": "The double-precision World-space origin of the model's coordinates." + }, + { + "nullable": null, + "types": [ + "Number[]" + ], + "spread": false, + "optional": true, + "defaultValue": "[0,0,0]", + "defaultRaw": [ + 0, + 0, + 0 + ], + "name": "params.position", + "description": "The single-precision position, relative to ````origin````." + }, + { + "nullable": null, + "types": [ + "Number[]" + ], + "spread": false, + "optional": true, + "defaultValue": "[1,1,1]", + "defaultRaw": [ + 1, + 1, + 1 + ], + "name": "params.scale", + "description": "The model's scale." + }, + { + "nullable": null, + "types": [ + "Number[]" + ], + "spread": false, + "optional": true, + "defaultValue": "[0,0,0]", + "defaultRaw": [ + 0, + 0, + 0 + ], + "name": "params.rotation", + "description": "The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis." + }, + { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "optional": true, + "defaultValue": "true", + "defaultRaw": true, + "name": "params.backfaces", + "description": "When true, always show backfaces, even on objects for which the .BIM material is single-sided. When false, only show backfaces on geometries whenever the .BIM material is double-sided." + }, + { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "optional": true, + "defaultValue": "true", + "defaultRaw": true, + "name": "params.dtxEnabled", + "description": "When ````true```` (default) use data textures (DTX), where appropriate, to\nrepresent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\nto non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\nprimitives. Only works while {@link DTX#enabled} is also ````true````." + } + ], + "return": { + "nullable": null, + "types": [ + "Entity" + ], + "spread": false, + "description": "Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}" + } + }, + { + "__docId__": 1023, + "kind": "method", + "name": "destroy", + "memberof": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#destroy", + "access": "public", + "description": "Destroys this DotBIMLoaderPlugin.", + "lineNumber": 533, + "params": [], + "return": null + }, + { + "__docId__": 1024, + "kind": "file", + "name": "src/plugins/DotBIMLoaderPlugin/index.js", + "content": "export * from \"./DotBIMDefaultDataSource.js\";\nexport * from \"./DotBIMLoaderPlugin.js\";", + "static": true, + "longname": "/home/lindsay/xeolabs/xeokit-sdk-feb14/src/plugins/DotBIMLoaderPlugin/index.js", + "access": "public", + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 1025, + "kind": "file", "name": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\n\nimport {buildCylinderGeometry} from \"../../viewer/scene/geometry/builders/buildCylinderGeometry.js\";\nimport {buildTorusGeometry} from \"../../viewer/scene/geometry/builders/buildTorusGeometry.js\";\n\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {PhongMaterial} from \"../../viewer/scene/materials/PhongMaterial.js\";\nimport {EmphasisMaterial} from \"../../viewer/scene/materials/EmphasisMaterial.js\";\nimport {Node} from \"../../viewer/scene/nodes/Node.js\";\nimport {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {buildSphereGeometry} from \"../../viewer/scene/geometry/builders/buildSphereGeometry.js\";\nimport {worldToRTCPos} from \"../../viewer/scene/math/rtcCoords.js\";\n\nconst zeroVec = new Float64Array([0, 0, 1]);\nconst quat = new Float64Array(4);\n\n/**\n * Controls a {@link SectionPlane} with mouse and touch input.\n */\nexport class FaceAlignedSectionPlanesControl {\n\n /** @private */\n constructor(plugin) {\n\n /**\n * ID of this FaceAlignedSectionPlanesControl.\n *\n * FaceAlignedSectionPlanesControl are mapped by this ID in {@link FaceAlignedSectionPlanesPlugin#controls}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = null;\n\n this._viewer = plugin.viewer;\n this._plugin = plugin;\n this._visible = false;\n this._pos = math.vec3(); // Full-precision position of the center of the FaceAlignedSectionPlanesControl\n this._origin = math.vec3();\n this._rtcPos = math.vec3();\n\n this._baseDir = math.vec3(); // Saves direction of clip plane when we start dragging an arrow or ring.\n this._rootNode = null; // Root of Node graph that represents this control in the 3D scene\n this._displayMeshes = null; // Meshes that are always visible\n this._affordanceMeshes = null; // Meshes displayed momentarily for affordance\n\n this._ignoreNextSectionPlaneDirUpdate = false;\n\n this._createNodes();\n this._bindEvents();\n }\n\n /**\n * Called by FaceAlignedSectionPlanesPlugin to assign this FaceAlignedSectionPlanesControl to a SectionPlane.\n * FaceAlignedSectionPlanesPlugin keeps FaceAlignedSectionPlanesControls in a reuse pool.\n * Call with a null or undefined value to disconnect the FaceAlignedSectionPlanesControl ffrom whatever SectionPlane it was assigned to.\n * @private\n */\n _setSectionPlane(sectionPlane) {\n if (this._sectionPlane) {\n this._sectionPlane.off(this._onSectionPlanePos);\n this._sectionPlane.off(this._onSectionPlaneDir);\n this._onSectionPlanePos = null;\n this._onSectionPlaneDir = null;\n this._sectionPlane = null;\n }\n if (sectionPlane) {\n this.id = sectionPlane.id;\n this._setPos(sectionPlane.pos);\n this._setDir(sectionPlane.dir);\n this._sectionPlane = sectionPlane;\n this._onSectionPlanePos = sectionPlane.on(\"pos\", () => {\n this._setPos(this._sectionPlane.pos);\n });\n this._onSectionPlaneDir = sectionPlane.on(\"dir\", () => {\n if (!this._ignoreNextSectionPlaneDirUpdate) {\n this._setDir(this._sectionPlane.dir);\n } else {\n this._ignoreNextSectionPlaneDirUpdate = false;\n }\n });\n }\n }\n\n /**\n * Gets the {@link SectionPlane} controlled by this FaceAlignedSectionPlanesControl.\n * @returns {SectionPlane} The SectionPlane.\n */\n get sectionPlane() {\n return this._sectionPlane;\n }\n\n /** @private */\n _setPos(xyz) {\n\n this._pos.set(xyz);\n\n worldToRTCPos(this._pos, this._origin, this._rtcPos);\n\n this._rootNode.origin = this._origin;\n this._rootNode.position = this._rtcPos;\n }\n\n /** @private */\n _setDir(xyz) {\n this._baseDir.set(xyz);\n this._rootNode.quaternion = math.vec3PairToQuaternion(zeroVec, xyz, quat);\n }\n\n _setSectionPlaneDir(dir) {\n if (this._sectionPlane) {\n this._ignoreNextSectionPlaneDirUpdate = true;\n this._sectionPlane.dir = dir;\n }\n }\n\n /**\n * Sets if this FaceAlignedSectionPlanesControl is visible.\n *\n * @type {Boolean}\n */\n setVisible(visible = true) {\n if (this._visible === visible) {\n return;\n }\n this._visible = visible;\n var id;\n for (id in this._displayMeshes) {\n if (this._displayMeshes.hasOwnProperty(id)) {\n this._displayMeshes[id].visible = visible;\n }\n }\n if (!visible) {\n for (id in this._affordanceMeshes) {\n if (this._affordanceMeshes.hasOwnProperty(id)) {\n this._affordanceMeshes[id].visible = visible;\n }\n }\n }\n }\n\n /**\n * Gets if this FaceAlignedSectionPlanesControl is visible.\n *\n * @type {Boolean}\n */\n getVisible() {\n return this._visible;\n }\n\n /**\n * Sets if this FaceAlignedSectionPlanesControl is culled. This is called by FaceAlignedSectionPlanesPlugin to\n * temporarily hide the FaceAlignedSectionPlanesControl while a snapshot is being taken by Viewer#getSnapshot().\n * @param culled\n */\n setCulled(culled) {\n var id;\n for (id in this._displayMeshes) {\n if (this._displayMeshes.hasOwnProperty(id)) {\n this._displayMeshes[id].culled = culled;\n }\n }\n if (!culled) {\n for (id in this._affordanceMeshes) {\n if (this._affordanceMeshes.hasOwnProperty(id)) {\n this._affordanceMeshes[id].culled = culled;\n }\n }\n }\n }\n\n /**\n * Builds the Entities that represent this FaceAlignedSectionPlanesControl.\n * @private\n */\n _createNodes() {\n\n const NO_STATE_INHERIT = false;\n const scene = this._viewer.scene;\n const radius = 1.0;\n const handleTubeRadius = 0.06;\n const hoopRadius = radius - 0.2;\n const tubeRadius = 0.01;\n const arrowRadius = 0.07;\n\n this._rootNode = new Node(scene, {\n position: [0, 0, 0],\n scale: [5, 5, 5]\n });\n\n const rootNode = this._rootNode;\n\n const shapes = {// Reusable geometries\n\n arrowHead: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.001,\n radiusBottom: arrowRadius,\n radialSegments: 32,\n heightSegments: 1,\n height: 0.2,\n openEnded: false\n })),\n\n arrowHeadBig: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.001,\n radiusBottom: 0.09,\n radialSegments: 32,\n heightSegments: 1,\n height: 0.25,\n openEnded: false\n })),\n\n axis: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: tubeRadius,\n radiusBottom: tubeRadius,\n radialSegments: 20,\n heightSegments: 1,\n height: radius,\n openEnded: false\n }))\n };\n\n const materials = { // Reusable materials\n\n red: new PhongMaterial(rootNode, {\n diffuse: [1, 0.0, 0.0],\n emissive: [1, 0.0, 0.0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n green: new PhongMaterial(rootNode, {\n diffuse: [0, 1.0, 0.0],\n emissive: [1, 0.0, 0.0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n blue: new PhongMaterial(rootNode, {\n diffuse: [0, 0.0, 1.0],\n emissive: [1, 0.0, 0.0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n highlightRed: new EmphasisMaterial(rootNode, { // Emphasis for red rotation affordance hoop\n edges: false,\n fill: true,\n fillColor: [1, 0, 0],\n fillAlpha: 0.6\n })\n };\n\n this._displayMeshes = {\n\n plane: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, {\n primitive: \"triangles\",\n positions: [\n 0.5, 0.5, 0.0, 0.5, -0.5, 0.0, // 0\n -0.5, -0.5, 0.0, -0.5, 0.5, 0.0, // 1\n 0.5, 0.5, -0.0, 0.5, -0.5, -0.0, // 2\n -0.5, -0.5, -0.0, -0.5, 0.5, -0.0 // 3\n ],\n indices: [0, 1, 2, 2, 3, 0]\n }),\n material: new PhongMaterial(rootNode, {\n emissive: [0, 0.0, 0],\n diffuse: [0, 0, 0],\n backfaces: true\n }),\n opacity: 0.6,\n ghosted: true,\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n scale: [2.4, 2.4, 1]\n }), NO_STATE_INHERIT),\n\n planeFrame: rootNode.addChild(new Mesh(rootNode, { // Visible frame\n geometry: new ReadableGeometry(rootNode, buildTorusGeometry({\n center: [0, 0, 0],\n radius: 1.7,\n tube: tubeRadius * 2,\n radialSegments: 4,\n tubeSegments: 4,\n arc: Math.PI * 2.0\n })),\n material: new PhongMaterial(rootNode, {\n emissive: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n shininess: 0\n }),\n pickable: false,\n collidable: false,\n clippable: false,\n visible: false,\n scale: [1, 1, .1],\n rotation: [0, 0, 45]\n }), NO_STATE_INHERIT),\n\n center: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, buildSphereGeometry({\n radius: 0.05\n })),\n material: materials.center,\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n zAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n zShaft: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axis,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n clippable: false,\n pickable: false,\n collidable: true,\n visible: false\n }), NO_STATE_INHERIT)\n };\n\n this._affordanceMeshes = {\n\n planeFrame: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, buildTorusGeometry({\n center: [0, 0, 0],\n radius: 2,\n tube: tubeRadius,\n radialSegments: 4,\n tubeSegments: 4,\n arc: Math.PI * 2.0\n })),\n material: new PhongMaterial(rootNode, {\n ambient: [1, 1, 1],\n diffuse: [0, 0, 0],\n emissive: [1, 1, 0]\n }),\n highlighted: true,\n highlightMaterial: new EmphasisMaterial(rootNode, {\n edges: false,\n filled: true,\n fillColor: [1, 1, 0],\n fillAlpha: 1.0\n }),\n pickable: false,\n collidable: false,\n clippable: false,\n visible: false,\n scale: [1, 1, 1],\n rotation: [0, 0, 45]\n }), NO_STATE_INHERIT),\n\n zAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadBig,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT)\n };\n }\n\n _bindEvents() {\n\n const rootNode = this._rootNode;\n\n var nextDragAction = null; // As we hover grabbed an arrow or hoop, self is the action we would do if we then dragged it.\n var dragAction = null; // Action we're doing while we drag an arrow or hoop.\n const lastCanvasPos = math.vec2();\n const camera = this._viewer.camera;\n const scene = this._viewer.scene;\n\n let deltaUpdate = 0;\n let waitForTick = false;\n\n { // Keep gizmo screen size constant\n\n const tempVec3a = math.vec3([0, 0, 0]);\n\n let distDirty = true;\n let lastDist = -1;\n\n this._onCameraViewMatrix = scene.camera.on(\"viewMatrix\", () => {\n distDirty = true;\n });\n\n this._onCameraProjMatrix = scene.camera.on(\"projMatrix\", () => {\n distDirty = true;\n });\n\n this._onSceneTick = scene.on(\"tick\", () => {\n\n waitForTick = false;\n const dist = Math.abs(math.lenVec3(math.subVec3(scene.camera.eye, this._pos, tempVec3a)));\n\n if (dist !== lastDist) {\n if (camera.projection === \"perspective\") {\n const worldSize = (Math.tan(camera.perspective.fov * math.DEGTORAD)) * dist;\n const size = 0.07 * worldSize;\n rootNode.scale = [size, size, size];\n lastDist = dist;\n }\n }\n\n if (camera.projection === \"ortho\") {\n const worldSize = camera.ortho.scale / 10;\n const size = worldSize;\n rootNode.scale = [size, size, size];\n lastDist = dist;\n }\n\n if (deltaUpdate !== 0) {\n moveSectionPlane(deltaUpdate);\n deltaUpdate = 0;\n }\n });\n }\n\n const getClickCoordsWithinElement = (function () {\n const canvasPos = new Float64Array(2);\n return function (event) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n var element = event.target;\n var totalOffsetLeft = 0;\n var totalOffsetTop = 0;\n\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX - totalOffsetLeft;\n canvasPos[1] = event.pageY - totalOffsetTop;\n }\n return canvasPos;\n };\n })();\n\n const moveSectionPlane = (delta) => {\n const pos = this._sectionPlane.pos;\n const dir = this._sectionPlane.dir;\n math.addVec3(pos, math.mulVec3Scalar(dir, 0.1 * delta * this._plugin.getDragSensitivity(), math.vec3()));\n this._sectionPlane.pos = pos;\n }\n\n {\n let mouseDownLeft;\n let mouseDownMiddle;\n let mouseDownRight;\n let down = false;\n\n this._plugin._controlElement.addEventListener(\"mousedown\", this._canvasMouseDownListener = (e) => {\n e.preventDefault();\n if (!this._visible) {\n return;\n }\n this._viewer.cameraControl.pointerEnabled = false;\n switch (e.which) {\n case 1: // Left button\n mouseDownLeft = true;\n down = true;\n var canvasPos = getClickCoordsWithinElement(e);\n dragAction = nextDragAction;\n lastCanvasPos[0] = canvasPos[0];\n lastCanvasPos[1] = canvasPos[1];\n break;\n default:\n break;\n }\n });\n\n this._plugin._controlElement.addEventListener(\"mousemove\", this._canvasMouseMoveListener = (e) => {\n if (!this._visible) {\n return;\n }\n if (!down) {\n return;\n }\n if (waitForTick) { // Limit changes detection to one per frame\n return;\n }\n var canvasPos = getClickCoordsWithinElement(e);\n const x = canvasPos[0];\n const y = canvasPos[1];\n moveSectionPlane(y - lastCanvasPos[1]);\n lastCanvasPos[0] = x;\n lastCanvasPos[1] = y;\n });\n\n this._plugin._controlElement.addEventListener(\"mouseup\", this._canvasMouseUpListener = (e) => {\n if (!this._visible) {\n return;\n }\n this._viewer.cameraControl.pointerEnabled = true;\n if (!down) {\n return;\n }\n switch (e.which) {\n case 1: // Left button\n mouseDownLeft = false;\n break;\n case 2: // Middle/both buttons\n mouseDownMiddle = false;\n break;\n case 3: // Right button\n mouseDownRight = false;\n break;\n default:\n break;\n }\n down = false;\n });\n\n this._plugin._controlElement.addEventListener(\"wheel\", this._canvasWheelListener = (e) => {\n if (!this._visible) {\n return;\n }\n deltaUpdate += Math.max(-1, Math.min(1, -e.deltaY * 40));\n });\n }\n\n {\n let touchStartY, touchEndY;\n let lastTouchY = null;\n\n this._plugin._controlElement.addEventListener(\"touchstart\", this._handleTouchStart = (e) => {\n e.stopPropagation();\n e.preventDefault();\n if (!this._visible) {\n return;\n }\n touchStartY = e.touches[0].clientY;\n lastTouchY = touchStartY;\n deltaUpdate = 0;\n });\n\n this._plugin._controlElement.addEventListener(\"touchmove\", this._handleTouchMove = (e) => {\n e.stopPropagation();\n e.preventDefault();\n if (!this._visible) {\n return;\n }\n if (waitForTick) { // Limit changes detection to one per frame\n return;\n }\n waitForTick = true;\n touchEndY = e.touches[0].clientY;\n if (lastTouchY !== null) {\n deltaUpdate += touchEndY - lastTouchY;\n }\n lastTouchY = touchEndY;\n });\n\n this._plugin._controlElement.addEventListener(\"touchend\", this._handleTouchEnd = (e) => {\n e.stopPropagation();\n e.preventDefault();\n if (!this._visible) {\n return;\n }\n touchStartY = null;\n touchEndY = null;\n deltaUpdate = 0;\n });\n }\n }\n\n _destroy() {\n this._unbindEvents();\n this._destroyNodes();\n }\n\n _unbindEvents() {\n\n const viewer = this._viewer;\n const scene = viewer.scene;\n const canvas = scene.canvas.canvas;\n const camera = viewer.camera;\n const controlElement = this._plugin._controlElement;\n\n scene.off(this._onSceneTick);\n\n canvas.removeEventListener(\"mousedown\", this._canvasMouseDownListener);\n canvas.removeEventListener(\"mousemove\", this._canvasMouseMoveListener);\n canvas.removeEventListener(\"mouseup\", this._canvasMouseUpListener);\n canvas.removeEventListener(\"wheel\", this._canvasWheelListener);\n\n controlElement.removeEventListener(\"touchstart\", this._handleTouchStart);\n controlElement.removeEventListener(\"touchmove\", this._handleTouchMove);\n controlElement.removeEventListener(\"touchend\", this._handleTouchEnd);\n\n camera.off(this._onCameraViewMatrix);\n camera.off(this._onCameraProjMatrix);\n }\n\n _destroyNodes() {\n this._setSectionPlane(null);\n this._rootNode.destroy();\n this._displayMeshes = {};\n this._affordanceMeshes = {};\n }\n}\n", "static": true, @@ -15999,7 +16527,7 @@ "lineNumber": 1 }, { - "__docId__": 1008, + "__docId__": 1026, "kind": "variable", "name": "zeroVec", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js", @@ -16020,7 +16548,7 @@ "ignore": true }, { - "__docId__": 1009, + "__docId__": 1027, "kind": "variable", "name": "quat", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js", @@ -16041,7 +16569,7 @@ "ignore": true }, { - "__docId__": 1010, + "__docId__": 1028, "kind": "class", "name": "FaceAlignedSectionPlanesControl", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js", @@ -16056,7 +16584,7 @@ "interface": false }, { - "__docId__": 1011, + "__docId__": 1029, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16070,7 +16598,7 @@ "ignore": true }, { - "__docId__": 1012, + "__docId__": 1030, "kind": "member", "name": "id", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16102,7 +16630,7 @@ } }, { - "__docId__": 1013, + "__docId__": 1031, "kind": "member", "name": "_viewer", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16120,7 +16648,7 @@ } }, { - "__docId__": 1014, + "__docId__": 1032, "kind": "member", "name": "_plugin", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16138,7 +16666,7 @@ } }, { - "__docId__": 1015, + "__docId__": 1033, "kind": "member", "name": "_visible", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16156,7 +16684,7 @@ } }, { - "__docId__": 1016, + "__docId__": 1034, "kind": "member", "name": "_pos", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16174,7 +16702,7 @@ } }, { - "__docId__": 1017, + "__docId__": 1035, "kind": "member", "name": "_origin", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16192,7 +16720,7 @@ } }, { - "__docId__": 1018, + "__docId__": 1036, "kind": "member", "name": "_rtcPos", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16210,7 +16738,7 @@ } }, { - "__docId__": 1019, + "__docId__": 1037, "kind": "member", "name": "_baseDir", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16228,7 +16756,7 @@ } }, { - "__docId__": 1020, + "__docId__": 1038, "kind": "member", "name": "_rootNode", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16246,7 +16774,7 @@ } }, { - "__docId__": 1021, + "__docId__": 1039, "kind": "member", "name": "_displayMeshes", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16264,7 +16792,7 @@ } }, { - "__docId__": 1022, + "__docId__": 1040, "kind": "member", "name": "_affordanceMeshes", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16282,7 +16810,7 @@ } }, { - "__docId__": 1023, + "__docId__": 1041, "kind": "member", "name": "_ignoreNextSectionPlaneDirUpdate", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16300,7 +16828,7 @@ } }, { - "__docId__": 1024, + "__docId__": 1042, "kind": "method", "name": "_setSectionPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16323,7 +16851,7 @@ "return": null }, { - "__docId__": 1025, + "__docId__": 1043, "kind": "member", "name": "_onSectionPlanePos", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16341,7 +16869,7 @@ } }, { - "__docId__": 1026, + "__docId__": 1044, "kind": "member", "name": "_onSectionPlaneDir", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16359,7 +16887,7 @@ } }, { - "__docId__": 1027, + "__docId__": 1045, "kind": "member", "name": "_sectionPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16377,7 +16905,7 @@ } }, { - "__docId__": 1033, + "__docId__": 1051, "kind": "get", "name": "sectionPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16409,7 +16937,7 @@ } }, { - "__docId__": 1034, + "__docId__": 1052, "kind": "method", "name": "_setPos", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16432,7 +16960,7 @@ "return": null }, { - "__docId__": 1035, + "__docId__": 1053, "kind": "method", "name": "_setDir", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16455,7 +16983,7 @@ "return": null }, { - "__docId__": 1036, + "__docId__": 1054, "kind": "method", "name": "_setSectionPlaneDir", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16479,7 +17007,7 @@ "return": null }, { - "__docId__": 1038, + "__docId__": 1056, "kind": "method", "name": "setVisible", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16512,7 +17040,7 @@ "return": null }, { - "__docId__": 1040, + "__docId__": 1058, "kind": "method", "name": "getVisible", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16539,7 +17067,7 @@ } }, { - "__docId__": 1041, + "__docId__": 1059, "kind": "method", "name": "setCulled", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16565,7 +17093,7 @@ "return": null }, { - "__docId__": 1042, + "__docId__": 1060, "kind": "method", "name": "_createNodes", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16581,7 +17109,7 @@ "return": null }, { - "__docId__": 1046, + "__docId__": 1064, "kind": "method", "name": "_bindEvents", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16598,7 +17126,7 @@ "return": null }, { - "__docId__": 1047, + "__docId__": 1065, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16616,7 +17144,7 @@ } }, { - "__docId__": 1048, + "__docId__": 1066, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16634,7 +17162,7 @@ } }, { - "__docId__": 1049, + "__docId__": 1067, "kind": "member", "name": "_onSceneTick", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16652,7 +17180,7 @@ } }, { - "__docId__": 1050, + "__docId__": 1068, "kind": "method", "name": "_destroy", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16669,7 +17197,7 @@ "return": null }, { - "__docId__": 1051, + "__docId__": 1069, "kind": "method", "name": "_unbindEvents", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16686,7 +17214,7 @@ "return": null }, { - "__docId__": 1052, + "__docId__": 1070, "kind": "method", "name": "_destroyNodes", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js~FaceAlignedSectionPlanesControl", @@ -16703,7 +17231,7 @@ "return": null }, { - "__docId__": 1055, + "__docId__": 1073, "kind": "file", "name": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {SectionPlane} from \"../../viewer/scene/sectionPlane/SectionPlane.js\";\nimport {FaceAlignedSectionPlanesControl} from \"./FaceAlignedSectionPlanesControl.js\";\nimport {Overview} from \"./Overview.js\";\n\nconst tempAABB = math.AABB3();\nconst tempVec3 = math.vec3();\n\n/**\n * FaceAlignedSectionPlanesPlugin is a {@link Viewer} plugin that creates and edits face-aligned {@link SectionPlane}s.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/index.html#gizmos_FaceAlignedSectionPlanesPlugin)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/slicing/#FaceAlignedSectionPlanesPlugin)]\n *\n * ## Overview\n *\n * * Use the FaceAlignedSectionPlanesPlugin to\n * create and edit {@link SectionPlane}s to slice portions off your models and reveal internal structures.\n *\n * * As shown in the screen capture above, FaceAlignedSectionPlanesPlugin shows an overview of all your SectionPlanes (on the right, in\n * this example).\n * * Click a plane in the overview to activate a 3D control with which you can interactively\n * reposition its SectionPlane in the main canvas.\n * * Configure the plugin with an HTML element that the user can click-and-drag on to reposition the SectionPlane for which the control is active.\n * * Use {@link BCFViewpointsPlugin} to save and load SectionPlanes in BCF viewpoints.\n *\n * ## Usage\n *\n * In the example below, we'll use a {@link GLTFLoaderPlugin} to load a model, and a FaceAlignedSectionPlanesPlugin\n * to slice it open with two {@link SectionPlane}s. We'll show the overview in the bottom right of the Viewer\n * canvas. Finally, we'll programmatically activate the 3D editing control, so that we can use it to interactively\n * reposition our second SectionPlane.\n *\n * ````JavaScript\n * import {Viewer, GLTFLoaderPlugin, FaceAlignedSectionPlanesPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange its Camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [-5.02, 2.22, 15.09];\n * viewer.camera.look = [4.97, 2.79, 9.89];\n * viewer.camera.up = [-0.05, 0.99, 0.02];\n *\n * // Add a GLTFLoaderPlugin\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // Add a FaceAlignedSectionPlanesPlugin, with overview visible\n *\n * const faceAlignedSectionPlanes = new FaceAlignedSectionPlanesPlugin(viewer, {\n * overviewCanvasID: \"myOverviewCanvas\",\n * overviewVisible: true,\n * controlElementId: \"myControlElement\", // ID of element to capture drag events that move the SectionPlane\n * dragSensitivity: 1 // Sensitivity factor that governs the rate at which dragging moves the SectionPlane\n * });\n *\n * // Load a model\n *\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/schependomlaan/scene.glb\"\n * });\n *\n * // Create a couple of section planes\n * // These will be shown in the overview\n *\n * faceAlignedSectionPlanes.createSectionPlane({\n * id: \"mySectionPlane\",\n * pos: [1.04, 1.95, 9.74],\n * dir: [1.0, 0.0, 0.0]\n * });\n *\n * faceAlignedSectionPlanes.createSectionPlane({\n * id: \"mySectionPlane2\",\n * pos: [2.30, 4.46, 14.93],\n * dir: [0.0, -0.09, -0.79]\n * });\n *\n * // Show the FaceAlignedSectionPlanesPlugin's 3D editing gizmo,\n * // to interactively reposition one of our SectionPlanes\n *\n * faceAlignedSectionPlanes.showControl(\"mySectionPlane2\");\n *\n * const mySectionPlane2 = faceAlignedSectionPlanes.sectionPlanes[\"mySectionPlane2\"];\n *\n * // Programmatically reposition one of our SectionPlanes\n * // This also updates its position as shown in the overview gizmo\n *\n * mySectionPlane2.pos = [11.0, 6.0, -12];\n * mySectionPlane2.dir = [0.4, 0.0, 0.5];\n * ````\n */\nexport class FaceAlignedSectionPlanesPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"SectionPlanes\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} [cfg.overviewCanvasId] ID of a canvas element to display the overview.\n * @param {String} [cfg.overviewVisible=true] Initial visibility of the overview canvas.\n * @param {String} cfg.controlElementId ID of an HTML element that catches drag events to move the active SectionPlane.\n * @param {Number} [cfg.dragSensitivity=1] Sensitivity factor that governs the rate at which dragging on the control element moves SectionPlane.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"FaceAlignedSectionPlanesPlugin\", viewer);\n\n this._freeControls = [];\n this._sectionPlanes = viewer.scene.sectionPlanes;\n this._controls = {};\n this._shownControlId = null;\n this._dragSensitivity = cfg.dragSensitivity || 1;\n\n if (cfg.overviewCanvasId !== null && cfg.overviewCanvasId !== undefined) {\n\n const overviewCanvas = document.getElementById(cfg.overviewCanvasId);\n\n if (!overviewCanvas) {\n this.warn(\"Can't find overview canvas: '\" + cfg.overviewCanvasId + \"' - will create plugin without overview\");\n\n } else {\n\n this._overview = new Overview(this, {\n overviewCanvas: overviewCanvas,\n visible: cfg.overviewVisible,\n\n onHoverEnterPlane: ((id) => {\n this._overview.setPlaneHighlighted(id, true);\n }),\n\n onHoverLeavePlane: ((id) => {\n this._overview.setPlaneHighlighted(id, false);\n }),\n\n onClickedPlane: ((id) => {\n if (this.getShownControl() === id) {\n this.hideControl();\n return;\n }\n this.showControl(id);\n const sectionPlane = this.sectionPlanes[id];\n const sectionPlanePos = sectionPlane.pos;\n tempAABB.set(this.viewer.scene.aabb);\n math.getAABB3Center(tempAABB, tempVec3);\n tempAABB[0] += sectionPlanePos[0] - tempVec3[0];\n tempAABB[1] += sectionPlanePos[1] - tempVec3[1];\n tempAABB[2] += sectionPlanePos[2] - tempVec3[2];\n tempAABB[3] += sectionPlanePos[0] - tempVec3[0];\n tempAABB[4] += sectionPlanePos[1] - tempVec3[1];\n tempAABB[5] += sectionPlanePos[2] - tempVec3[2];\n this.viewer.cameraFlight.flyTo({\n aabb: tempAABB,\n fitFOV: 65\n });\n }),\n\n onClickedNothing: (() => {\n this.hideControl();\n })\n });\n }\n }\n\n if (cfg.controlElementId === null || cfg.controlElementId === undefined) {\n this.error(\"Parameter expected: controlElementId\");\n } else {\n this._controlElement = document.getElementById(cfg.controlElementId);\n if (!this._controlElement) {\n this.warn(\"Can't find control element: '\" + cfg.controlElementId + \"' - will create plugin without control element\");\n\n }\n }\n\n this._onSceneSectionPlaneCreated = viewer.scene.on(\"sectionPlaneCreated\", (sectionPlane) => {\n\n // SectionPlane created, either via FaceAlignedSectionPlanesPlugin#createSectionPlane(), or by directly\n // instantiating a SectionPlane independently of FaceAlignedSectionPlanesPlugin, which can be done\n // by BCFViewpointsPlugin#loadViewpoint().\n\n this._sectionPlaneCreated(sectionPlane);\n });\n }\n\n /**\n * Sets the factor that governs how fast a SectionPlane moves as we drag on the control element.\n *\n * @param {Number} dragSensitivity The dragging sensitivity factor.\n */\n setDragSensitivity(dragSensitivity) {\n this._dragSensitivity = dragSensitivity || 1;\n }\n\n /**\n * Gets the factor that governs how fast a SectionPlane moves as we drag on the control element.\n *\n * @return {Number} The dragging sensitivity factor.\n */\n getDragSensitivity() {\n return this._dragSensitivity;\n }\n\n /**\n * Sets if the overview canvas is visible.\n *\n * @param {Boolean} visible Whether or not the overview canvas is visible.\n */\n setOverviewVisible(visible) {\n if (this._overview) {\n this._overview.setVisible(visible);\n }\n }\n\n /**\n * Gets if the overview canvas is visible.\n *\n * @return {Boolean} True when the overview canvas is visible.\n */\n getOverviewVisible() {\n if (this._overview) {\n return this._overview.getVisible();\n }\n }\n\n /**\n * Returns a map of the {@link SectionPlane}s created by this FaceAlignedSectionPlanesPlugin.\n *\n * @returns {{String:SectionPlane}} A map containing the {@link SectionPlane}s, each mapped to its {@link SectionPlane#id}.\n */\n get sectionPlanes() {\n return this._sectionPlanes;\n }\n\n /**\n * Creates a {@link SectionPlane}.\n *\n * The {@link SectionPlane} will be registered by {@link SectionPlane#id} in {@link FaceAlignedSectionPlanesPlugin#sectionPlanes}.\n *\n * @param {Object} params {@link SectionPlane} configuration.\n * @param {String} [params.id] Unique ID to assign to the {@link SectionPlane}. Must be unique among all components in the {@link Viewer}'s {@link Scene}. Auto-generated when omitted.\n * @param {Number[]} [params.pos=[0,0,0]] World-space position of the {@link SectionPlane}.\n * @param {Number[]} [params.dir=[0,0,-1]] World-space vector indicating the orientation of the {@link SectionPlane}.\n * @param {Boolean} [params.active=true] Whether the {@link SectionPlane} is initially active. Only clips while this is true.\n * @returns {SectionPlane} The new {@link SectionPlane}.\n */\n createSectionPlane(params = {}) {\n\n if (params.id !== undefined && params.id !== null && this.viewer.scene.components[params.id]) {\n this.error(\"Viewer component with this ID already exists: \" + params.id);\n delete params.id;\n }\n\n // Note that SectionPlane constructor fires \"sectionPlaneCreated\" on the Scene,\n // which FaceAlignedSectionPlanesPlugin handles and calls #_sectionPlaneCreated to create gizmo and add to overview canvas.\n\n const sectionPlane = new SectionPlane(this.viewer.scene, {\n id: params.id,\n pos: params.pos,\n dir: params.dir,\n active: true || params.active\n });\n return sectionPlane;\n }\n\n _sectionPlaneCreated(sectionPlane) {\n const control = (this._freeControls.length > 0) ? this._freeControls.pop() : new FaceAlignedSectionPlanesControl(this);\n control._setSectionPlane(sectionPlane);\n control.setVisible(false);\n this._controls[sectionPlane.id] = control;\n if (this._overview) {\n this._overview.addSectionPlane(sectionPlane);\n }\n sectionPlane.once(\"destroyed\", () => {\n this._sectionPlaneDestroyed(sectionPlane);\n });\n }\n\n /**\n * Inverts the direction of {@link SectionPlane#dir} on every existing SectionPlane.\n *\n * Inverts all SectionPlanes, including those that were not created with FaceAlignedSectionPlanesPlugin.\n */\n flipSectionPlanes() {\n const sectionPlanes = this.viewer.scene.sectionPlanes;\n for (let id in sectionPlanes) {\n const sectionPlane = sectionPlanes[id];\n sectionPlane.flipDir();\n }\n }\n\n /**\n * Shows the 3D editing gizmo for a {@link SectionPlane}.\n *\n * @param {String} id ID of the {@link SectionPlane}.\n */\n showControl(id) {\n const control = this._controls[id];\n if (!control) {\n this.error(\"Control not found: \" + id);\n return;\n }\n this.hideControl();\n control.setVisible(true);\n if (this._overview) {\n this._overview.setPlaneSelected(id, true);\n }\n this._shownControlId = id;\n }\n\n /**\n * Gets the ID of the {@link SectionPlane} that the 3D editing gizmo is shown for.\n *\n * Returns ````null```` when the editing gizmo is not shown.\n *\n * @returns {String} ID of the the {@link SectionPlane} that the 3D editing gizmo is shown for, if shown, else ````null````.\n */\n getShownControl() {\n return this._shownControlId;\n }\n\n /**\n * Hides the 3D {@link SectionPlane} editing gizmo if shown.\n */\n hideControl() {\n for (let id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setVisible(false);\n if (this._overview) {\n this._overview.setPlaneSelected(id, false);\n }\n }\n }\n this._shownControlId = null;\n }\n\n /**\n * Destroys a {@link SectionPlane} created by this FaceAlignedSectionPlanesPlugin.\n *\n * @param {String} id ID of the {@link SectionPlane}.\n */\n destroySectionPlane(id) {\n let sectionPlane = this.viewer.scene.sectionPlanes[id];\n if (!sectionPlane) {\n this.error(\"SectionPlane not found: \" + id);\n return;\n }\n this._sectionPlaneDestroyed(sectionPlane);\n sectionPlane.destroy();\n\n if (id === this._shownControlId) {\n this._shownControlId = null;\n }\n }\n\n _sectionPlaneDestroyed(sectionPlane) {\n if (this._overview) {\n this._overview.removeSectionPlane(sectionPlane);\n }\n const control = this._controls[sectionPlane.id];\n if (!control) {\n return;\n }\n control.setVisible(false);\n control._setSectionPlane(null);\n delete this._controls[sectionPlane.id];\n this._freeControls.push(control);\n }\n\n /**\n * Destroys all {@link SectionPlane}s created by this FaceAlignedSectionPlanesPlugin.\n */\n clear() {\n const ids = Object.keys(this._sectionPlanes);\n for (let i = 0, len = ids.length; i < len; i++) {\n this.destroySectionPlane(ids[i]);\n }\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n\n case \"snapshotStarting\": // Viewer#getSnapshot() about to take snapshot - hide controls\n for (let id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setCulled(true);\n }\n }\n break;\n\n case \"snapshotFinished\": // Viewer#getSnapshot() finished taking snapshot - show controls again\n for (let id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setCulled(false);\n }\n }\n break;\n\n case \"clearSectionPlanes\":\n this.clear();\n break;\n }\n }\n\n /**\n * Destroys this FaceAlignedSectionPlanesPlugin.\n *\n * Also destroys each {@link SectionPlane} created by this FaceAlignedSectionPlanesPlugin.\n *\n * Does not destroy the canvas the FaceAlignedSectionPlanesPlugin was configured with.\n */\n destroy() {\n this.clear();\n if (this._overview) {\n this._overview.destroy();\n }\n this._destroyFreeControls();\n super.destroy();\n }\n\n _destroyFreeControls() {\n let control = this._freeControls.pop();\n while (control) {\n control._destroy();\n control = this._freeControls.pop();\n }\n this.viewer.scene.off(this._onSceneSectionPlaneCreated);\n }\n}\n", @@ -16714,7 +17242,7 @@ "lineNumber": 1 }, { - "__docId__": 1056, + "__docId__": 1074, "kind": "variable", "name": "tempAABB", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js", @@ -16735,7 +17263,7 @@ "ignore": true }, { - "__docId__": 1057, + "__docId__": 1075, "kind": "variable", "name": "tempVec3", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js", @@ -16756,7 +17284,7 @@ "ignore": true }, { - "__docId__": 1058, + "__docId__": 1076, "kind": "class", "name": "FaceAlignedSectionPlanesPlugin", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js", @@ -16774,7 +17302,7 @@ ] }, { - "__docId__": 1059, + "__docId__": 1077, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -16871,7 +17399,7 @@ ] }, { - "__docId__": 1060, + "__docId__": 1078, "kind": "member", "name": "_freeControls", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -16889,7 +17417,7 @@ } }, { - "__docId__": 1061, + "__docId__": 1079, "kind": "member", "name": "_sectionPlanes", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -16907,7 +17435,7 @@ } }, { - "__docId__": 1062, + "__docId__": 1080, "kind": "member", "name": "_controls", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -16925,7 +17453,7 @@ } }, { - "__docId__": 1063, + "__docId__": 1081, "kind": "member", "name": "_shownControlId", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -16943,7 +17471,7 @@ } }, { - "__docId__": 1064, + "__docId__": 1082, "kind": "member", "name": "_dragSensitivity", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -16961,7 +17489,7 @@ } }, { - "__docId__": 1065, + "__docId__": 1083, "kind": "member", "name": "_overview", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -16979,7 +17507,7 @@ } }, { - "__docId__": 1066, + "__docId__": 1084, "kind": "member", "name": "_controlElement", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -16997,7 +17525,7 @@ } }, { - "__docId__": 1067, + "__docId__": 1085, "kind": "member", "name": "_onSceneSectionPlaneCreated", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17015,7 +17543,7 @@ } }, { - "__docId__": 1068, + "__docId__": 1086, "kind": "method", "name": "setDragSensitivity", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17041,7 +17569,7 @@ "return": null }, { - "__docId__": 1070, + "__docId__": 1088, "kind": "method", "name": "getDragSensitivity", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17063,7 +17591,7 @@ "params": [] }, { - "__docId__": 1071, + "__docId__": 1089, "kind": "method", "name": "setOverviewVisible", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17089,7 +17617,7 @@ "return": null }, { - "__docId__": 1072, + "__docId__": 1090, "kind": "method", "name": "getOverviewVisible", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17111,7 +17639,7 @@ "params": [] }, { - "__docId__": 1073, + "__docId__": 1091, "kind": "get", "name": "sectionPlanes", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17143,7 +17671,7 @@ } }, { - "__docId__": 1074, + "__docId__": 1092, "kind": "method", "name": "createSectionPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17236,7 +17764,7 @@ } }, { - "__docId__": 1075, + "__docId__": 1093, "kind": "method", "name": "_sectionPlaneCreated", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17260,7 +17788,7 @@ "return": null }, { - "__docId__": 1076, + "__docId__": 1094, "kind": "method", "name": "flipSectionPlanes", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17275,7 +17803,7 @@ "return": null }, { - "__docId__": 1077, + "__docId__": 1095, "kind": "method", "name": "showControl", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17301,7 +17829,7 @@ "return": null }, { - "__docId__": 1079, + "__docId__": 1097, "kind": "method", "name": "getShownControl", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17329,7 +17857,7 @@ "params": [] }, { - "__docId__": 1080, + "__docId__": 1098, "kind": "method", "name": "hideControl", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17344,7 +17872,7 @@ "return": null }, { - "__docId__": 1082, + "__docId__": 1100, "kind": "method", "name": "destroySectionPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17370,7 +17898,7 @@ "return": null }, { - "__docId__": 1084, + "__docId__": 1102, "kind": "method", "name": "_sectionPlaneDestroyed", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17394,7 +17922,7 @@ "return": null }, { - "__docId__": 1085, + "__docId__": 1103, "kind": "method", "name": "clear", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17409,7 +17937,7 @@ "return": null }, { - "__docId__": 1086, + "__docId__": 1104, "kind": "method", "name": "send", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17438,7 +17966,7 @@ "return": null }, { - "__docId__": 1087, + "__docId__": 1105, "kind": "method", "name": "destroy", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17453,7 +17981,7 @@ "return": null }, { - "__docId__": 1088, + "__docId__": 1106, "kind": "method", "name": "_destroyFreeControls", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js~FaceAlignedSectionPlanesPlugin", @@ -17470,7 +17998,7 @@ "return": null }, { - "__docId__": 1089, + "__docId__": 1107, "kind": "file", "name": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\nimport {Scene} from \"../../viewer/scene/scene/Scene.js\";\nimport {DirLight} from \"./../../viewer/scene/lights/DirLight.js\";\nimport {Plane} from \"./Plane.js\";\n\n/**\n * @desc An interactive 3D overview for navigating the {@link SectionPlane}s created by its {@link FaceAlignedSectionPlanesPlugin}.\n *\n * * Located at {@link FaceAlignedSectionPlanesPlugin#overview}.\n * * Renders the overview on a separate canvas at a corner of the {@link Viewer}'s {@link Scene} {@link Canvas}.\n * * The overview shows a 3D plane object for each {@link SectionPlane} in the {@link Scene}.\n * * Click a plane object in the overview to toggle the visibility of a 3D gizmo to edit the position and orientation of its {@link SectionPlane}.\n *\n * @private\n */\nexport class Overview {\n\n /**\n * @private\n */\n constructor(plugin, cfg) {\n\n if (!cfg.onHoverEnterPlane || !cfg.onHoverLeavePlane || !cfg.onClickedNothing || !cfg.onClickedPlane) {\n throw \"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane\";\n }\n\n /**\n * The {@link FaceAlignedSectionPlanesPlugin} that owns this SectionPlanesOverview.\n *\n * @type {FaceAlignedSectionPlanesPlugin}\n */\n this.plugin = plugin;\n\n this._viewer = plugin.viewer;\n\n this._onHoverEnterPlane = cfg.onHoverEnterPlane;\n this._onHoverLeavePlane = cfg.onHoverLeavePlane;\n this._onClickedNothing = cfg.onClickedNothing;\n this._onClickedPlane = cfg.onClickedPlane;\n this._visible = true;\n\n this._planes = {};\n\n //--------------------------------------------------------------------------------------------------------------\n // Init canvas\n //--------------------------------------------------------------------------------------------------------------\n\n this._canvas = cfg.overviewCanvas;\n\n //--------------------------------------------------------------------------------------------------------------\n // Init scene\n //--------------------------------------------------------------------------------------------------------------\n\n this._scene = new Scene(this._viewer, {\n canvasId: this._canvas.id,\n transparent: true\n });\n this._scene.clearLights();\n new DirLight(this._scene, {\n dir: [0.4, -0.4, 0.8],\n color: [0.8, 1.0, 1.0],\n intensity: 1.0,\n space: \"view\"\n });\n new DirLight(this._scene, {\n dir: [-0.8, -0.3, -0.4],\n color: [0.8, 0.8, 0.8],\n intensity: 1.0,\n space: \"view\"\n });\n new DirLight(this._scene, {\n dir: [0.8, -0.6, -0.8],\n color: [1.0, 1.0, 1.0],\n intensity: 1.0,\n space: \"view\"\n });\n\n this._scene.camera;\n this._scene.camera.perspective.fov = 70;\n\n this._zUp = false;\n\n //--------------------------------------------------------------------------------------------------------------\n // Synchronize overview scene camera with viewer camera\n //--------------------------------------------------------------------------------------------------------------\n\n {\n const camera = this._scene.camera;\n const matrix = math.rotationMat4c(-90 * math.DEGTORAD, 1, 0, 0);\n const eyeLookVec = math.vec3();\n const eyeLookVecOverview = math.vec3();\n const upOverview = math.vec3();\n\n this._synchCamera = () => {\n const eye = this._viewer.camera.eye;\n const look = this._viewer.camera.look;\n const up = this._viewer.camera.up;\n math.mulVec3Scalar(math.normalizeVec3(math.subVec3(eye, look, eyeLookVec)), 7);\n if (this._zUp) { // +Z up\n math.transformVec3(matrix, eyeLookVec, eyeLookVecOverview);\n math.transformVec3(matrix, up, upOverview);\n camera.look = [0, 0, 0];\n camera.eye = math.transformVec3(matrix, eyeLookVec, eyeLookVecOverview);\n camera.up = math.transformPoint3(matrix, up, upOverview);\n } else { // +Y up\n camera.look = [0, 0, 0];\n camera.eye = eyeLookVec;\n camera.up = up;\n }\n };\n }\n\n this._onViewerCameraMatrix = this._viewer.camera.on(\"matrix\", this._synchCamera);\n\n this._onViewerCameraWorldAxis = this._viewer.camera.on(\"worldAxis\", this._synchCamera);\n\n this._onViewerCameraFOV = this._viewer.camera.perspective.on(\"fov\", (fov) => {\n this._scene.camera.perspective.fov = fov;\n });\n\n //--------------------------------------------------------------------------------------------------------------\n // Bind overview canvas events\n //--------------------------------------------------------------------------------------------------------------\n\n {\n var hoveredEntity = null;\n\n this._onInputMouseMove = this._scene.input.on(\"mousemove\", (coords) => {\n const hit = this._scene.pick({\n canvasPos: coords\n });\n if (hit) {\n if (!hoveredEntity || hit.entity.id !== hoveredEntity.id) {\n if (hoveredEntity) {\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onHoverLeavePlane(hoveredEntity.id);\n }\n }\n hoveredEntity = hit.entity;\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onHoverEnterPlane(hoveredEntity.id);\n }\n }\n } else {\n if (hoveredEntity) {\n this._onHoverLeavePlane(hoveredEntity.id);\n hoveredEntity = null;\n }\n }\n });\n\n this._scene.canvas.canvas.addEventListener(\"mouseup\", this._onCanvasMouseUp = () => {\n if (hoveredEntity) {\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onClickedPlane(hoveredEntity.id);\n }\n } else {\n this._onClickedNothing();\n }\n });\n\n this._scene.canvas.canvas.addEventListener(\"mouseout\", this._onCanvasMouseOut = () => {\n if (hoveredEntity) {\n this._onHoverLeavePlane(hoveredEntity.id);\n hoveredEntity = null;\n }\n });\n }\n\n //--------------------------------------------------------------------------------------------------------------\n // Configure overview\n //--------------------------------------------------------------------------------------------------------------\n\n this.setVisible(cfg.overviewVisible);\n }\n\n /** Called by SectionPlanesPlugin#createSectionPlane()\n * @private\n */\n addSectionPlane(sectionPlane) {\n this._planes[sectionPlane.id] = new Plane(this, this._scene, sectionPlane);\n }\n\n /** @private\n */\n setPlaneHighlighted(id, highlighted) {\n const plane = this._planes[id];\n if (plane) {\n plane.setHighlighted(highlighted);\n }\n }\n\n /** @private\n */\n setPlaneSelected(id, selected) {\n const plane = this._planes[id];\n if (plane) {\n plane.setSelected(selected);\n }\n }\n\n /** @private\n */\n removeSectionPlane(sectionPlane) {\n const plane = this._planes[sectionPlane.id];\n if (plane) {\n plane.destroy();\n delete this._planes[sectionPlane.id];\n }\n }\n\n /**\n * Sets if this SectionPlanesOverview is visible.\n *\n * @param {Boolean} visible Whether or not this SectionPlanesOverview is visible.\n */\n setVisible(visible = true) {\n this._visible = visible;\n this._canvas.style.visibility = visible ? \"visible\" : \"hidden\";\n }\n\n /**\n * Gets if this SectionPlanesOverview is visible.\n *\n * @return {Boolean} True when this SectionPlanesOverview is visible.\n */\n getVisible() {\n return this._visible;\n }\n\n /** @private\n */\n destroy() {\n this._viewer.camera.off(this._onViewerCameraMatrix);\n this._viewer.camera.off(this._onViewerCameraWorldAxis);\n this._viewer.camera.perspective.off(this._onViewerCameraFOV);\n\n this._scene.input.off(this._onInputMouseMove);\n this._scene.canvas.canvas.removeEventListener(\"mouseup\", this._onCanvasMouseUp);\n this._scene.canvas.canvas.removeEventListener(\"mouseout\", this._onCanvasMouseOut);\n this._scene.destroy();\n }\n}\n\n", @@ -17481,7 +18009,7 @@ "lineNumber": 1 }, { - "__docId__": 1090, + "__docId__": 1108, "kind": "class", "name": "Overview", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js", @@ -17497,7 +18025,7 @@ "ignore": true }, { - "__docId__": 1091, + "__docId__": 1109, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17511,7 +18039,7 @@ "ignore": true }, { - "__docId__": 1092, + "__docId__": 1110, "kind": "member", "name": "plugin", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17530,7 +18058,7 @@ } }, { - "__docId__": 1093, + "__docId__": 1111, "kind": "member", "name": "_viewer", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17548,7 +18076,7 @@ } }, { - "__docId__": 1094, + "__docId__": 1112, "kind": "member", "name": "_onHoverEnterPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17566,7 +18094,7 @@ } }, { - "__docId__": 1095, + "__docId__": 1113, "kind": "member", "name": "_onHoverLeavePlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17584,7 +18112,7 @@ } }, { - "__docId__": 1096, + "__docId__": 1114, "kind": "member", "name": "_onClickedNothing", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17602,7 +18130,7 @@ } }, { - "__docId__": 1097, + "__docId__": 1115, "kind": "member", "name": "_onClickedPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17620,7 +18148,7 @@ } }, { - "__docId__": 1098, + "__docId__": 1116, "kind": "member", "name": "_visible", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17638,7 +18166,7 @@ } }, { - "__docId__": 1099, + "__docId__": 1117, "kind": "member", "name": "_planes", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17656,7 +18184,7 @@ } }, { - "__docId__": 1100, + "__docId__": 1118, "kind": "member", "name": "_canvas", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17674,7 +18202,7 @@ } }, { - "__docId__": 1101, + "__docId__": 1119, "kind": "member", "name": "_scene", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17692,7 +18220,7 @@ } }, { - "__docId__": 1102, + "__docId__": 1120, "kind": "member", "name": "_zUp", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17710,7 +18238,7 @@ } }, { - "__docId__": 1103, + "__docId__": 1121, "kind": "member", "name": "_synchCamera", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17728,7 +18256,7 @@ } }, { - "__docId__": 1104, + "__docId__": 1122, "kind": "member", "name": "_onViewerCameraMatrix", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17746,7 +18274,7 @@ } }, { - "__docId__": 1105, + "__docId__": 1123, "kind": "member", "name": "_onViewerCameraWorldAxis", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17764,7 +18292,7 @@ } }, { - "__docId__": 1106, + "__docId__": 1124, "kind": "member", "name": "_onViewerCameraFOV", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17782,7 +18310,7 @@ } }, { - "__docId__": 1107, + "__docId__": 1125, "kind": "member", "name": "_onInputMouseMove", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17800,7 +18328,7 @@ } }, { - "__docId__": 1108, + "__docId__": 1126, "kind": "method", "name": "addSectionPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17823,7 +18351,7 @@ "return": null }, { - "__docId__": 1109, + "__docId__": 1127, "kind": "method", "name": "setPlaneHighlighted", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17851,7 +18379,7 @@ "return": null }, { - "__docId__": 1110, + "__docId__": 1128, "kind": "method", "name": "setPlaneSelected", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17879,7 +18407,7 @@ "return": null }, { - "__docId__": 1111, + "__docId__": 1129, "kind": "method", "name": "removeSectionPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17902,7 +18430,7 @@ "return": null }, { - "__docId__": 1112, + "__docId__": 1130, "kind": "method", "name": "setVisible", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17928,7 +18456,7 @@ "return": null }, { - "__docId__": 1114, + "__docId__": 1132, "kind": "method", "name": "getVisible", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17950,7 +18478,7 @@ "params": [] }, { - "__docId__": 1115, + "__docId__": 1133, "kind": "method", "name": "destroy", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js~Overview", @@ -17965,7 +18493,7 @@ "return": null }, { - "__docId__": 1116, + "__docId__": 1134, "kind": "file", "name": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\nimport {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {PhongMaterial} from \"../../viewer/scene/materials/PhongMaterial.js\";\nimport {buildBoxGeometry} from \"../../viewer/scene/geometry/builders/buildBoxGeometry.js\";\nimport {EdgeMaterial} from \"../../viewer/scene/materials/EdgeMaterial.js\";\nimport {EmphasisMaterial} from \"../../viewer/scene/materials/EmphasisMaterial.js\";\n\n\n/**\n * Renders a 3D plane within an {@link Overview} to indicate its {@link SectionPlane}'s current position and orientation.\n *\n * @private\n */\nexport class Plane {\n\n /** @private */\n constructor(overview, overviewScene, sectionPlane) {\n\n /**\n * The ID of this SectionPlanesOverviewPlane.\n *\n * @type {String}\n */\n this.id = sectionPlane.id;\n\n /**\n * The {@link SectionPlane} represented by this SectionPlanesOverviewPlane.\n *\n * @type {SectionPlane}\n */\n this._sectionPlane = sectionPlane;\n\n this._mesh = new Mesh(overviewScene, {\n id: sectionPlane.id,\n geometry: new ReadableGeometry(overviewScene, buildBoxGeometry({\n xSize: .5,\n ySize: .5,\n zSize: .001\n })),\n material: new PhongMaterial(overviewScene, {\n emissive: [1, 1, 1],\n diffuse: [0, 0, 0],\n backfaces: false\n }),\n edgeMaterial: new EdgeMaterial(overviewScene, {\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n highlightMaterial: new EmphasisMaterial(overviewScene, {\n fill: true,\n fillColor: [0.5, 1, 0.5],\n fillAlpha: 0.7,\n edges: true,\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n selectedMaterial: new EmphasisMaterial(overviewScene, {\n fill: true,\n fillColor: [0, 0, 1],\n fillAlpha: 0.7,\n edges: true,\n edgeColor: [1.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n highlighted: true,\n scale: [3, 3, 3],\n position: [0, 0, 0],\n rotation: [0, 0, 0],\n opacity: 0.3,\n edges: true\n });\n\n\n {\n const vec = math.vec3([0, 0, 0]);\n const pos2 = math.vec3();\n const zeroVec = math.vec3([0, 0, 1]);\n const quat = math.vec4(4);\n const pos3 = math.vec3();\n\n const update = () => {\n\n const origin = this._sectionPlane.scene.center;\n\n const negDir = [-this._sectionPlane.dir[0], -this._sectionPlane.dir[1], -this._sectionPlane.dir[2]];\n math.subVec3(origin, this._sectionPlane.pos, vec);\n const dist = -math.dotVec3(negDir, vec);\n\n math.normalizeVec3(negDir);\n math.mulVec3Scalar(negDir, dist, pos2);\n const quaternion = math.vec3PairToQuaternion(zeroVec, this._sectionPlane.dir, quat);\n\n pos3[0] = pos2[0] * 0.1;\n pos3[1] = pos2[1] * 0.1;\n pos3[2] = pos2[2] * 0.1;\n\n this._mesh.quaternion = quaternion;\n this._mesh.position = pos3;\n };\n\n this._onSectionPlanePos = this._sectionPlane.on(\"pos\", update);\n this._onSectionPlaneDir = this._sectionPlane.on(\"dir\", update);\n\n // update();\n }\n\n this._highlighted = false;\n this._selected = false;\n }\n\n /**\n * Sets if this SectionPlanesOverviewPlane is highlighted.\n *\n * @type {Boolean}\n * @private\n */\n setHighlighted(highlighted) {\n this._highlighted = !!highlighted;\n this._mesh.highlighted = this._highlighted;\n this._mesh.highlightMaterial.fillColor = highlighted ? [0, 0.7, 0] : [0, 0, 0];\n // this._selectedMesh.highlighted = true;\n }\n\n /**\n * Gets if this SectionPlanesOverviewPlane is highlighted.\n *\n * @type {Boolean}\n * @private\n */\n getHighlighted() {\n return this._highlighted;\n }\n\n /**\n * Sets if this SectionPlanesOverviewPlane is selected.\n *\n * @type {Boolean}\n * @private\n */\n setSelected(selected) {\n this._selected = !!selected;\n this._mesh.edgeMaterial.edgeWidth = selected ? 3 : 1;\n this._mesh.highlightMaterial.edgeWidth = selected ? 3 : 1;\n\n }\n\n /**\n * Gets if this SectionPlanesOverviewPlane is selected.\n *\n * @type {Boolean}\n * @private\n */\n getSelected() {\n return this._selected;\n }\n\n /** @private */\n destroy() {\n this._sectionPlane.off(this._onSectionPlanePos);\n this._sectionPlane.off(this._onSectionPlaneDir);\n this._mesh.destroy();\n }\n}\n", @@ -17976,7 +18504,7 @@ "lineNumber": 1 }, { - "__docId__": 1117, + "__docId__": 1135, "kind": "class", "name": "Plane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js", @@ -17992,7 +18520,7 @@ "ignore": true }, { - "__docId__": 1118, + "__docId__": 1136, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18006,7 +18534,7 @@ "ignore": true }, { - "__docId__": 1119, + "__docId__": 1137, "kind": "member", "name": "id", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18025,7 +18553,7 @@ } }, { - "__docId__": 1120, + "__docId__": 1138, "kind": "member", "name": "_sectionPlane", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18045,7 +18573,7 @@ "ignore": true }, { - "__docId__": 1121, + "__docId__": 1139, "kind": "member", "name": "_mesh", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18063,7 +18591,7 @@ } }, { - "__docId__": 1122, + "__docId__": 1140, "kind": "member", "name": "_onSectionPlanePos", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18081,7 +18609,7 @@ } }, { - "__docId__": 1123, + "__docId__": 1141, "kind": "member", "name": "_onSectionPlaneDir", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18099,7 +18627,7 @@ } }, { - "__docId__": 1124, + "__docId__": 1142, "kind": "member", "name": "_highlighted", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18117,7 +18645,7 @@ } }, { - "__docId__": 1125, + "__docId__": 1143, "kind": "member", "name": "_selected", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18135,7 +18663,7 @@ } }, { - "__docId__": 1126, + "__docId__": 1144, "kind": "method", "name": "setHighlighted", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18166,7 +18694,7 @@ "return": null }, { - "__docId__": 1128, + "__docId__": 1146, "kind": "method", "name": "getHighlighted", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18194,7 +18722,7 @@ } }, { - "__docId__": 1129, + "__docId__": 1147, "kind": "method", "name": "setSelected", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18225,7 +18753,7 @@ "return": null }, { - "__docId__": 1131, + "__docId__": 1149, "kind": "method", "name": "getSelected", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18253,7 +18781,7 @@ } }, { - "__docId__": 1132, + "__docId__": 1150, "kind": "method", "name": "destroy", "memberof": "src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js~Plane", @@ -18269,7 +18797,7 @@ "return": null }, { - "__docId__": 1133, + "__docId__": 1151, "kind": "file", "name": "src/plugins/FaceAlignedSectionPlanesPlugin/index.js", "content": "export * from \"./FaceAlignedSectionPlanesPlugin.js\";\n", @@ -18280,7 +18808,7 @@ "lineNumber": 1 }, { - "__docId__": 1134, + "__docId__": 1152, "kind": "file", "name": "src/plugins/FastNavPlugin/FastNavPlugin.js", "content": "import {Plugin} from \"../../viewer/Plugin.js\";\n\n/**\n * {@link Viewer} plugin that makes interaction smoother with large models, by temporarily switching\n * the Viewer to faster, lower-quality rendering modes whenever we interact.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/index.html#performance_FastNavPlugin)\n *\n * FastNavPlugin works by hiding specified Viewer rendering features, and optionally scaling the Viewer's canvas\n * resolution, whenever we interact with the Viewer. Then, once we've finished interacting, FastNavPlugin restores those\n * rendering features and the original canvas scale, after a configured delay.\n *\n * Depending on how we configure FastNavPlugin, we essentially switch to a smooth-rendering low-quality view while\n * interacting, then return to the normal higher-quality view after we stop, following an optional delay.\n *\n * Down-scaling the canvas resolution gives particularly good results. For example, scaling by ````0.5```` means that\n * we're rendering a quarter of the pixels while interacting, which can make the Viewer noticeably smoother with big models.\n *\n * The screen capture above shows FastNavPlugin in action. In this example, whenever we move the Camera or resize the Canvas,\n * FastNavPlugin switches off enhanced edges and ambient shadows (SAO), and down-scales the canvas, making it slightly\n * blurry. When ````0.5```` seconds passes with no interaction, the plugin shows edges and SAO again, and restores the\n * original canvas scale.\n *\n * # Usage\n *\n * In the example below, we'll create a {@link Viewer}, add a {@link FastNavPlugin}, then use an {@link XKTLoaderPlugin} to load a model.\n *\n * Whenever we interact with the Viewer, our FastNavPlugin will:\n *\n * * hide edges,\n * * hide ambient shadows (SAO),\n * * hide physically-based materials (switching to non-PBR),\n * * hide transparent objects, and\n * * scale the canvas resolution by 0.5, causing the GPU to render 75% less pixels.\n *
    \n *\n * We'll also configure a 0.5 second delay before we transition back to high-quality each time we stop ineracting, so that we're\n * not continually flipping between low and high quality as we interact. Since we're only rendering ambient shadows when not interacting, we'll also treat ourselves\n * to expensive, high-quality SAO settings, that we wouldn't normally configure for an interactive SAO effect.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, FastNavPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer with PBR and SAO enabled\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbr: true, // Enable physically-based rendering for Viewer\n * sao: true // Enable ambient shadows for Viewer\n * });\n *\n * viewer.scene.camera.eye = [-66.26, 105.84, -281.92];\n * viewer.scene.camera.look = [42.45, 49.62, -43.59];\n * viewer.scene.camera.up = [0.05, 0.95, 0.15];\n *\n * // Higher-quality SAO settings\n *\n * viewer.scene.sao.enabled = true;\n * viewer.scene.sao.numSamples = 60;\n * viewer.scene.sao.kernelRadius = 170;\n *\n * // Install a FastNavPlugin\n *\n * new FastNavPlugin(viewer, {\n * hideEdges: true, // Don't show edges while we interact (default is true)\n * hideSAO: true, // Don't show ambient shadows while we interact (default is true)\n * hideColorTexture: true, // No color textures while we interact (default is true)\n * hidePBR: true, // No physically-based rendering while we interact (default is true)\n * hideTransparentObjects: true, // Hide transparent objects while we interact (default is false)\n * scaleCanvasResolution: true, // Scale canvas resolution while we interact (default is false)\n * defaultScaleCanvasResolutionFactor: 1.0, // Factor by which we scale canvas resolution when we stop interacting (default is 1.0)\n * scaleCanvasResolutionFactor: 0.5, // Factor by which we scale canvas resolution when we interact (default is 0.6)\n * delayBeforeRestore: true, // When we stop interacting, delay before restoring normal render (default is true)\n * delayBeforeRestoreSeconds: 0.5 // The delay duration, in seconds (default is 0.5)\n * });\n *\n * // Load a BIM model from XKT\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower.xkt\",\n * sao: true, // Enable ambient shadows for this model\n * pbr: true // Enable physically-based rendering for this model\n * });\n * ````\n *\n * @class FastNavPlugin\n */\nclass FastNavPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg FastNavPlugin configuration.\n * @param {String} [cfg.id=\"FastNav\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Boolean} [cfg.hideColorTexture=true] Whether to temporarily hide color textures whenever we interact with the Viewer.\n * @param {Boolean} [cfg.hidePBR=true] Whether to temporarily hide physically-based rendering (PBR) whenever we interact with the Viewer.\n * @param {Boolean} [cfg.hideSAO=true] Whether to temporarily hide scalable ambient occlusion (SAO) whenever we interact with the Viewer.\n * @param {Boolean} [cfg.hideEdges=true] Whether to temporarily hide edges whenever we interact with the Viewer.\n * @param {Boolean} [cfg.hideTransparentObjects=false] Whether to temporarily hide transparent objects whenever we interact with the Viewer.\n * @param {Number} [cfg.scaleCanvasResolution=false] Whether to temporarily down-scale the canvas resolution whenever we interact with the Viewer.\n * @param {Number} [cfg.defaultScaleCanvasResolutionFactor=0.6] The factor by which we downscale the canvas resolution whenever we stop interacting with the Viewer.\n * @param {Number} [cfg.scaleCanvasResolutionFactor=0.6] The factor by which we downscale the canvas resolution whenever we interact with the Viewer.\n * @param {Boolean} [cfg.delayBeforeRestore=true] Whether to temporarily have a delay before restoring normal rendering after we stop interacting with the Viewer.\n * @param {Number} [cfg.delayBeforeRestoreSeconds=0.5] Delay in seconds before restoring normal rendering after we stop interacting with the Viewer.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"FastNav\", viewer);\n\n this._hideColorTexture = cfg.hideColorTexture !== false;\n this._hidePBR = cfg.hidePBR !== false;\n this._hideSAO = cfg.hideSAO !== false;\n this._hideEdges = cfg.hideEdges !== false;\n this._hideTransparentObjects = !!cfg.hideTransparentObjects;\n this._scaleCanvasResolution = !!cfg.scaleCanvasResolution;\n this._defaultScaleCanvasResolutionFactor = cfg.defaultScaleCanvasResolutionFactor || 1.0;\n this._scaleCanvasResolutionFactor = cfg.scaleCanvasResolutionFactor || 0.6;\n this._delayBeforeRestore = (cfg.delayBeforeRestore !== false);\n this._delayBeforeRestoreSeconds = cfg.delayBeforeRestoreSeconds || 0.5;\n\n let timer = this._delayBeforeRestoreSeconds * 1000;\n let fastMode = false;\n\n const switchToLowQuality = () => {\n timer = (this._delayBeforeRestoreSeconds * 1000);\n if (!fastMode) {\n viewer.scene._renderer.setColorTextureEnabled(!this._hideColorTexture);\n viewer.scene._renderer.setPBREnabled(!this._hidePBR);\n viewer.scene._renderer.setSAOEnabled(!this._hideSAO);\n viewer.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects);\n viewer.scene._renderer.setEdgesEnabled(!this._hideEdges);\n if (this._scaleCanvasResolution) {\n viewer.scene.canvas.resolutionScale = this._scaleCanvasResolutionFactor;\n } else {\n viewer.scene.canvas.resolutionScale = this._defaultScaleCanvasResolutionFactor;\n }\n fastMode = true;\n }\n };\n\n const switchToHighQuality = () => {\n viewer.scene.canvas.resolutionScale = this._defaultScaleCanvasResolutionFactor;\n viewer.scene._renderer.setEdgesEnabled(true);\n viewer.scene._renderer.setColorTextureEnabled(true);\n viewer.scene._renderer.setPBREnabled(true);\n viewer.scene._renderer.setSAOEnabled(true);\n viewer.scene._renderer.setTransparentEnabled(true);\n fastMode = false;\n };\n\n this._onCanvasBoundary = viewer.scene.canvas.on(\"boundary\", switchToLowQuality);\n this._onCameraMatrix = viewer.scene.camera.on(\"matrix\", switchToLowQuality);\n\n this._onSceneTick = viewer.scene.on(\"tick\", (tickEvent) => {\n if (!fastMode) {\n return;\n }\n timer -= tickEvent.deltaTime;\n if ((!this._delayBeforeRestore) || timer <= 0) {\n switchToHighQuality();\n }\n });\n\n let down = false;\n\n this._onSceneMouseDown = viewer.scene.input.on(\"mousedown\", () => {\n down = true;\n });\n\n this._onSceneMouseUp = viewer.scene.input.on(\"mouseup\", () => {\n down = false;\n });\n\n this._onSceneMouseMove = viewer.scene.input.on(\"mousemove\", () => {\n if (!down) {\n return;\n }\n switchToLowQuality();\n });\n }\n\n /**\n * Gets whether to temporarily hide color textures whenever we interact with the Viewer.\n *\n * Default is ````true````.\n *\n * @return {Boolean} ````true```` if hiding color textures.\n */\n get hideColorTexture() {\n return this._hideColorTexture;\n }\n\n /**\n * Sets whether to temporarily hide color textures whenever we interact with the Viewer.\n *\n * Default is ````true````.\n *\n * @param {Boolean} hideColorTexture ````true```` to hide color textures.\n */\n set hideColorTexture(hideColorTexture) {\n this._hideColorTexture = hideColorTexture;\n }\n \n /**\n * Gets whether to temporarily hide physically-based rendering (PBR) whenever we interact with the Viewer.\n *\n * Default is ````true````.\n *\n * @return {Boolean} ````true```` if hiding PBR.\n */\n get hidePBR() {\n return this._hidePBR;\n }\n\n /**\n * Sets whether to temporarily hide physically-based rendering (PBR) whenever we interact with the Viewer.\n *\n * Default is ````true````.\n *\n * @param {Boolean} hidePBR ````true```` to hide PBR.\n */\n set hidePBR(hidePBR) {\n this._hidePBR = hidePBR;\n }\n\n /**\n * Gets whether to temporarily hide scalable ambient shadows (SAO) whenever we interact with the Viewer.\n *\n * Default is ````true````.\n *\n * @return {Boolean} ````true```` if hiding SAO.\n */\n get hideSAO() {\n return this._hideSAO;\n }\n\n /**\n * Sets whether to temporarily hide scalable ambient shadows (SAO) whenever we interact with the Viewer.\n *\n * Default is ````true````.\n *\n * @param {Boolean} hideSAO ````true```` to hide SAO.\n */\n set hideSAO(hideSAO) {\n this._hideSAO = hideSAO;\n }\n\n /**\n * Gets whether to temporarily hide edges whenever we interact with the Viewer.\n *\n * Default is ````true````.\n *\n * @return {Boolean} ````true```` if hiding edges.\n */\n get hideEdges() {\n return this._hideEdges;\n }\n\n /**\n * Sets whether to temporarily hide edges whenever we interact with the Viewer.\n *\n * Default is ````true````.\n *\n * @param {Boolean} hideEdges ````true```` to hide edges.\n */\n set hideEdges(hideEdges) {\n this._hideEdges = hideEdges;\n }\n\n /**\n * Gets whether to temporarily hide transparent objects whenever we interact with the Viewer.\n *\n * Does not hide X-rayed, selected, highlighted objects.\n *\n * Default is ````false````.\n *\n * @return {Boolean} ````true```` if hiding transparent objects.\n */\n get hideTransparentObjects() {\n return this._hideTransparentObjects\n }\n\n /**\n * Sets whether to temporarily hide transparent objects whenever we interact with the Viewer.\n *\n * Does not hide X-rayed, selected, highlighted objects.\n *\n * Default is ````false````.\n *\n * @param {Boolean} hideTransparentObjects ````true```` to hide transparent objects.\n */\n set hideTransparentObjects(hideTransparentObjects) {\n this._hideTransparentObjects = (hideTransparentObjects !== false);\n }\n\n /**\n * Gets whether to temporarily scale the canvas resolution whenever we interact with the Viewer.\n *\n * Default is ````false````.\n *\n * The scaling factor is configured via {@link FastNavPlugin#scaleCanvasResolutionFactor}.\n *\n * @return {Boolean} ````true```` if scaling the canvas resolution.\n */\n get scaleCanvasResolution() {\n return this._scaleCanvasResolution;\n }\n\n /**\n * Sets the factor to which we restore the canvas resolution scale when we stop interacting with the viewer.\n *\n * Default is ````false````.\n *\n * The scaling factor is configured via {@link FastNavPlugin#scaleCanvasResolutionFactor}.\n *\n * @param {Boolean} scaleCanvasResolution ````true```` to scale the canvas resolution.\n */\n set scaleCanvasResolution(scaleCanvasResolution) {\n this._scaleCanvasResolution = scaleCanvasResolution;\n }\n\n /**\n * Gets the factor to which we restore the canvas resolution scale when we stop interacting with the viewer.\n *\n * Default is ````1.0````.\n *\n * Enable canvas resolution scaling by setting {@link FastNavPlugin#scaleCanvasResolution} ````true````.\n *\n * @return {Number} Factor by scale canvas resolution when we stop interacting with the viewer.\n */\n get defaultScaleCanvasResolutionFactor() {\n return this._defaultScaleCanvasResolutionFactor;\n }\n\n /**\n * Sets the factor to which we restore the canvas resolution scale when we stop interacting with the viewer.\n *\n * Accepted range is ````[0.0 .. 1.0]````.\n *\n * Default is ````1.0````.\n *\n * Enable canvas resolution scaling by setting {@link FastNavPlugin#scaleCanvasResolution} ````true````.\n *\n * @param {Number} defaultScaleCanvasResolutionFactor Factor by scale canvas resolution when we stop interacting with the viewer.\n */\n set defaultScaleCanvasResolutionFactor(defaultScaleCanvasResolutionFactor) {\n this._defaultScaleCanvasResolutionFactor = defaultScaleCanvasResolutionFactor || 1.0;\n }\n\n /**\n * Gets the factor by which we temporarily scale the canvas resolution when we interact with the viewer.\n *\n * Default is ````0.6````.\n *\n * Enable canvas resolution scaling by setting {@link FastNavPlugin#scaleCanvasResolution} ````true````.\n *\n * @return {Number} Factor by which we scale the canvas resolution.\n */\n get scaleCanvasResolutionFactor() {\n return this._scaleCanvasResolutionFactor;\n }\n\n /**\n * Sets the factor by which we temporarily scale the canvas resolution when we interact with the viewer.\n *\n * Accepted range is ````[0.0 .. 1.0]````.\n *\n * Default is ````0.6````.\n *\n * Enable canvas resolution scaling by setting {@link FastNavPlugin#scaleCanvasResolution} ````true````.\n *\n * @param {Number} scaleCanvasResolutionFactor Factor by which we scale the canvas resolution.\n */\n set scaleCanvasResolutionFactor(scaleCanvasResolutionFactor) {\n this._scaleCanvasResolutionFactor = scaleCanvasResolutionFactor || 0.6;\n }\n\n /**\n * Gets whether to have a delay before restoring normal rendering after we stop interacting with the Viewer.\n *\n * The delay duration is configured via {@link FastNavPlugin#delayBeforeRestoreSeconds}.\n *\n * Default is ````true````.\n *\n * @return {Boolean} Whether to have a delay.\n */\n get delayBeforeRestore() {\n return this._delayBeforeRestore;\n }\n\n /**\n * Sets whether to have a delay before restoring normal rendering after we stop interacting with the Viewer.\n *\n * The delay duration is configured via {@link FastNavPlugin#delayBeforeRestoreSeconds}.\n *\n * Default is ````true````.\n *\n * @param {Boolean} delayBeforeRestore Whether to have a delay.\n */\n set delayBeforeRestore(delayBeforeRestore) {\n this._delayBeforeRestore = delayBeforeRestore;\n }\n\n /**\n * Gets the delay before restoring normal rendering after we stop interacting with the Viewer.\n *\n * The delay is enabled when {@link FastNavPlugin#delayBeforeRestore} is ````true````.\n *\n * Default is ````0.5```` seconds.\n *\n * @return {Number} Delay in seconds.\n */\n get delayBeforeRestoreSeconds() {\n return this._delayBeforeRestoreSeconds;\n }\n\n /**\n * Sets the delay before restoring normal rendering after we stop interacting with the Viewer.\n *\n * The delay is enabled when {@link FastNavPlugin#delayBeforeRestore} is ````true````.\n *\n * Default is ````0.5```` seconds.\n *\n * @param {Number} delayBeforeRestoreSeconds Delay in seconds.\n */\n set delayBeforeRestoreSeconds(delayBeforeRestoreSeconds) {\n this._delayBeforeRestoreSeconds = delayBeforeRestoreSeconds !== null && delayBeforeRestoreSeconds !== undefined ? delayBeforeRestoreSeconds : 0.5;\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n case \"clear\":\n break;\n }\n }\n\n /**\n * Destroys this plugin.\n */\n destroy() {\n this.viewer.scene.camera.off(this._onCameraMatrix);\n this.viewer.scene.canvas.off(this._onCanvasBoundary);\n this.viewer.scene.input.off(this._onSceneMouseDown);\n this.viewer.scene.input.off(this._onSceneMouseUp);\n this.viewer.scene.input.off(this._onSceneMouseMove);\n this.viewer.scene.off(this._onSceneTick);\n super.destroy();\n }\n}\n\nexport {FastNavPlugin};\n", @@ -18291,7 +18819,7 @@ "lineNumber": 1 }, { - "__docId__": 1135, + "__docId__": 1153, "kind": "class", "name": "FastNavPlugin", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js", @@ -18315,7 +18843,7 @@ ] }, { - "__docId__": 1136, + "__docId__": 1154, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18488,7 +19016,7 @@ ] }, { - "__docId__": 1137, + "__docId__": 1155, "kind": "member", "name": "_hideColorTexture", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18506,7 +19034,7 @@ } }, { - "__docId__": 1138, + "__docId__": 1156, "kind": "member", "name": "_hidePBR", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18524,7 +19052,7 @@ } }, { - "__docId__": 1139, + "__docId__": 1157, "kind": "member", "name": "_hideSAO", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18542,7 +19070,7 @@ } }, { - "__docId__": 1140, + "__docId__": 1158, "kind": "member", "name": "_hideEdges", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18560,7 +19088,7 @@ } }, { - "__docId__": 1141, + "__docId__": 1159, "kind": "member", "name": "_hideTransparentObjects", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18578,7 +19106,7 @@ } }, { - "__docId__": 1142, + "__docId__": 1160, "kind": "member", "name": "_scaleCanvasResolution", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18596,7 +19124,7 @@ } }, { - "__docId__": 1143, + "__docId__": 1161, "kind": "member", "name": "_defaultScaleCanvasResolutionFactor", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18614,7 +19142,7 @@ } }, { - "__docId__": 1144, + "__docId__": 1162, "kind": "member", "name": "_scaleCanvasResolutionFactor", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18632,7 +19160,7 @@ } }, { - "__docId__": 1145, + "__docId__": 1163, "kind": "member", "name": "_delayBeforeRestore", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18650,7 +19178,7 @@ } }, { - "__docId__": 1146, + "__docId__": 1164, "kind": "member", "name": "_delayBeforeRestoreSeconds", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18668,7 +19196,7 @@ } }, { - "__docId__": 1147, + "__docId__": 1165, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18686,7 +19214,7 @@ } }, { - "__docId__": 1148, + "__docId__": 1166, "kind": "member", "name": "_onCameraMatrix", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18704,7 +19232,7 @@ } }, { - "__docId__": 1149, + "__docId__": 1167, "kind": "member", "name": "_onSceneTick", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18722,7 +19250,7 @@ } }, { - "__docId__": 1150, + "__docId__": 1168, "kind": "member", "name": "_onSceneMouseDown", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18740,7 +19268,7 @@ } }, { - "__docId__": 1151, + "__docId__": 1169, "kind": "member", "name": "_onSceneMouseUp", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18758,7 +19286,7 @@ } }, { - "__docId__": 1152, + "__docId__": 1170, "kind": "member", "name": "_onSceneMouseMove", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18776,7 +19304,7 @@ } }, { - "__docId__": 1153, + "__docId__": 1171, "kind": "get", "name": "hideColorTexture", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18802,7 +19330,7 @@ } }, { - "__docId__": 1154, + "__docId__": 1172, "kind": "set", "name": "hideColorTexture", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18827,7 +19355,7 @@ ] }, { - "__docId__": 1156, + "__docId__": 1174, "kind": "get", "name": "hidePBR", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18853,7 +19381,7 @@ } }, { - "__docId__": 1157, + "__docId__": 1175, "kind": "set", "name": "hidePBR", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18878,7 +19406,7 @@ ] }, { - "__docId__": 1159, + "__docId__": 1177, "kind": "get", "name": "hideSAO", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18904,7 +19432,7 @@ } }, { - "__docId__": 1160, + "__docId__": 1178, "kind": "set", "name": "hideSAO", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18929,7 +19457,7 @@ ] }, { - "__docId__": 1162, + "__docId__": 1180, "kind": "get", "name": "hideEdges", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18955,7 +19483,7 @@ } }, { - "__docId__": 1163, + "__docId__": 1181, "kind": "set", "name": "hideEdges", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -18980,7 +19508,7 @@ ] }, { - "__docId__": 1165, + "__docId__": 1183, "kind": "get", "name": "hideTransparentObjects", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19006,7 +19534,7 @@ } }, { - "__docId__": 1166, + "__docId__": 1184, "kind": "set", "name": "hideTransparentObjects", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19031,7 +19559,7 @@ ] }, { - "__docId__": 1168, + "__docId__": 1186, "kind": "get", "name": "scaleCanvasResolution", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19057,7 +19585,7 @@ } }, { - "__docId__": 1169, + "__docId__": 1187, "kind": "set", "name": "scaleCanvasResolution", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19082,7 +19610,7 @@ ] }, { - "__docId__": 1171, + "__docId__": 1189, "kind": "get", "name": "defaultScaleCanvasResolutionFactor", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19108,7 +19636,7 @@ } }, { - "__docId__": 1172, + "__docId__": 1190, "kind": "set", "name": "defaultScaleCanvasResolutionFactor", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19133,7 +19661,7 @@ ] }, { - "__docId__": 1174, + "__docId__": 1192, "kind": "get", "name": "scaleCanvasResolutionFactor", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19159,7 +19687,7 @@ } }, { - "__docId__": 1175, + "__docId__": 1193, "kind": "set", "name": "scaleCanvasResolutionFactor", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19184,7 +19712,7 @@ ] }, { - "__docId__": 1177, + "__docId__": 1195, "kind": "get", "name": "delayBeforeRestore", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19210,7 +19738,7 @@ } }, { - "__docId__": 1178, + "__docId__": 1196, "kind": "set", "name": "delayBeforeRestore", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19235,7 +19763,7 @@ ] }, { - "__docId__": 1180, + "__docId__": 1198, "kind": "get", "name": "delayBeforeRestoreSeconds", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19261,7 +19789,7 @@ } }, { - "__docId__": 1181, + "__docId__": 1199, "kind": "set", "name": "delayBeforeRestoreSeconds", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19286,7 +19814,7 @@ ] }, { - "__docId__": 1183, + "__docId__": 1201, "kind": "method", "name": "send", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19315,7 +19843,7 @@ "return": null }, { - "__docId__": 1184, + "__docId__": 1202, "kind": "method", "name": "destroy", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -19330,7 +19858,7 @@ "return": null }, { - "__docId__": 1185, + "__docId__": 1203, "kind": "file", "name": "src/plugins/FastNavPlugin/index.js", "content": "export * from \"./FastNavPlugin.js\";", @@ -19341,7 +19869,7 @@ "lineNumber": 1 }, { - "__docId__": 1186, + "__docId__": 1204, "kind": "file", "name": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js", "content": "import {utils} from \"../../viewer/scene/utils.js\";\nimport {core} from \"../../viewer/scene/core.js\";\n\n/**\n * Default data access strategy for {@link GLTFLoaderPlugin}.\n *\n * This just loads assets using XMLHttpRequest.\n */\nclass GLTFDefaultDataSource {\n\n constructor() {\n }\n\n /**\n * Gets metamodel JSON.\n *\n * @param {String|Number} metaModelSrc Identifies the metamodel JSON asset.\n * @param {Function} ok Fired on successful loading of the metamodel JSON asset.\n * @param {Function} error Fired on error while loading the metamodel JSON asset.\n */\n getMetaModel(metaModelSrc, ok, error) {\n utils.loadJSON(metaModelSrc,\n (json) => {\n ok(json);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n\n /**\n * Gets glTF JSON.\n *\n * @param {String|Number} glTFSrc Identifies the glTF JSON asset.\n * @param {Function} ok Fired on successful loading of the glTF JSON asset.\n * @param {Function} error Fired on error while loading the glTF JSON asset.\n */\n getGLTF(glTFSrc, ok, error) {\n utils.loadArraybuffer(glTFSrc,\n (gltf) => {\n ok(gltf);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n\n /**\n * Gets binary glTF file.\n *\n * @param {String|Number} glbSrc Identifies the .glb asset.\n * @param {Function} ok Fired on successful loading of the .glb asset.\n * @param {Function} error Fired on error while loading the .glb asset.\n */\n getGLB(glbSrc, ok, error) {\n utils.loadArraybuffer(glbSrc,\n (arraybuffer) => {\n ok(arraybuffer);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n\n /**\n * Gets glTF binary attachment.\n *\n * Note that this method requires the source of the glTF JSON asset. This is because the binary attachment\n * source could be relative to the glTF source, IE. it may not be a global ID.\n *\n * @param {String|Number} glTFSrc Identifies the glTF JSON asset.\n * @param {String|Number} binarySrc Identifies the glTF binary asset.\n * @param {Function} ok Fired on successful loading of the glTF binary asset.\n * @param {Function} error Fired on error while loading the glTF binary asset.\n */\n getArrayBuffer(glTFSrc, binarySrc, ok, error) {\n loadArraybuffer(glTFSrc, binarySrc,\n (arrayBuffer) => {\n ok(arrayBuffer);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n}\n\nfunction loadArraybuffer(glTFSrc, binarySrc, ok, err) {\n // Check for data: URI\n var defaultCallback = () => {\n };\n ok = ok || defaultCallback;\n err = err || defaultCallback;\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n const dataUriRegexResult = binarySrc.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = window.decodeURIComponent(data);\n if (isBase64) {\n data = window.atob(data);\n }\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n core.scheduleTask(function () {\n ok(buffer);\n });\n } catch (error) {\n core.scheduleTask(function () {\n err(error);\n });\n }\n } else {\n const basePath = getBasePath(glTFSrc);\n const url = basePath + binarySrc;\n const request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n err('loadArrayBuffer error : ' + request.response);\n }\n }\n };\n request.send(null);\n }\n}\n\nfunction getBasePath(src) {\n var i = src.lastIndexOf(\"/\");\n return (i !== 0) ? src.substring(0, i + 1) : \"\";\n}\n\nexport {GLTFDefaultDataSource};", @@ -19352,7 +19880,7 @@ "lineNumber": 1 }, { - "__docId__": 1187, + "__docId__": 1205, "kind": "function", "name": "loadArraybuffer", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js", @@ -19397,7 +19925,7 @@ "ignore": true }, { - "__docId__": 1188, + "__docId__": 1206, "kind": "function", "name": "getBasePath", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js", @@ -19428,7 +19956,7 @@ "ignore": true }, { - "__docId__": 1189, + "__docId__": 1207, "kind": "class", "name": "GLTFDefaultDataSource", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js", @@ -19443,7 +19971,7 @@ "interface": false }, { - "__docId__": 1190, + "__docId__": 1208, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -19457,7 +19985,7 @@ "undocument": true }, { - "__docId__": 1191, + "__docId__": 1209, "kind": "method", "name": "getMetaModel", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -19504,7 +20032,7 @@ "return": null }, { - "__docId__": 1192, + "__docId__": 1210, "kind": "method", "name": "getGLTF", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -19551,7 +20079,7 @@ "return": null }, { - "__docId__": 1193, + "__docId__": 1211, "kind": "method", "name": "getGLB", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -19598,7 +20126,7 @@ "return": null }, { - "__docId__": 1194, + "__docId__": 1212, "kind": "method", "name": "getArrayBuffer", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -19656,10 +20184,10 @@ "return": null }, { - "__docId__": 1195, + "__docId__": 1213, "kind": "file", "name": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js", - "content": "import {Plugin, SceneModel, utils} from \"../../viewer/index.js\"\nimport {GLTFSceneModelLoader} from \"./GLTFSceneModelLoader.js\";\n\nimport {GLTFDefaultDataSource} from \"./GLTFDefaultDataSource.js\";\nimport {IFCObjectDefaults} from \"../../viewer/metadata/IFCObjectDefaults.js\";\n\n/**\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n * @class GLTFLoaderPlugin\n */\nclass GLTFLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"GLTFLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link GLTFDefaultDataSource}, which loads over HTTP.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"GLTFLoader\", viewer, cfg);\n\n this._sceneModelLoader = new GLTFSceneModelLoader(this, cfg);\n\n this.dataSource = cfg.dataSource;\n this.objectDefaults = cfg.objectDefaults;\n }\n\n /**\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new GLTFDefaultDataSource();\n }\n\n /**\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n set objectDefaults(value) {\n this._objectDefaults = value || IFCObjectDefaults;\n }\n\n /**\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n get objectDefaults() {\n return this._objectDefaults;\n }\n\n /**\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelJSON```` parameter.\n * @param {*} [params.metaModelJSON] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @param {String} [params.entityId] When supplied, causes the entire model to be loaded into a single {@link Entity} that gets this ID.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {\n isModel: true,\n dtxEnabled: params.dtxEnabled\n }));\n\n const modelId = sceneModel.id; // In case ID was auto-generated\n\n if (!params.src && !params.gltf) {\n this.error(\"load() param expected: src or gltf\");\n return sceneModel; // Return new empty model\n }\n\n if (params.metaModelSrc || params.metaModelJSON) {\n\n const objectDefaults = params.objectDefaults || this._objectDefaults || IFCObjectDefaults;\n\n const processMetaModelJSON = (metaModelJSON) => {\n\n this.viewer.metaScene.createMetaModel(modelId, metaModelJSON, {\n includeTypes: params.includeTypes,\n excludeTypes: params.excludeTypes\n });\n\n this.viewer.scene.canvas.spinner.processes--;\n\n let includeTypes;\n if (params.includeTypes) {\n includeTypes = {};\n for (let i = 0, len = params.includeTypes.length; i < len; i++) {\n includeTypes[params.includeTypes[i]] = true;\n }\n }\n\n let excludeTypes;\n if (params.excludeTypes) {\n excludeTypes = {};\n if (!includeTypes) {\n includeTypes = {};\n }\n for (let i = 0, len = params.excludeTypes.length; i < len; i++) {\n includeTypes[params.excludeTypes[i]] = true;\n }\n }\n\n params.readableGeometry = false;\n\n params.handleGLTFNode = (modelId, glTFNode, actions) => {\n\n const name = glTFNode.name;\n\n if (!name) {\n return true; // Continue descending this node subtree\n }\n\n const nodeId = name;\n const metaObject = this.viewer.metaScene.metaObjects[nodeId];\n const type = (metaObject ? metaObject.type : \"DEFAULT\") || \"DEFAULT\";\n\n actions.createEntity = {\n id: nodeId,\n isObject: true // Registers the Entity in Scene#objects\n };\n\n const props = objectDefaults[type];\n\n if (props) { // Set Entity's initial rendering state for recognized type\n\n if (props.visible === false) {\n actions.createEntity.visible = false;\n }\n\n if (props.colorize) {\n actions.createEntity.colorize = props.colorize;\n }\n\n if (props.pickable === false) {\n actions.createEntity.pickable = false;\n }\n\n if (props.opacity !== undefined && props.opacity !== null) {\n actions.createEntity.opacity = props.opacity;\n }\n }\n\n return true; // Continue descending this glTF node subtree\n };\n\n if (params.src) {\n this._sceneModelLoader.load(this, params.src, metaModelJSON, params, sceneModel);\n } else {\n this._sceneModelLoader.parse(this, params.gltf, metaModelJSON, params, sceneModel);\n }\n };\n\n if (params.metaModelSrc) {\n\n const metaModelSrc = params.metaModelSrc;\n\n this.viewer.scene.canvas.spinner.processes++;\n\n this._dataSource.getMetaModel(metaModelSrc, (metaModelJSON) => {\n\n this.viewer.scene.canvas.spinner.processes--;\n\n processMetaModelJSON(metaModelJSON);\n\n }, (errMsg) => {\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - ${errMsg}`);\n this.viewer.scene.canvas.spinner.processes--;\n });\n\n } else if (params.metaModelJSON) {\n\n processMetaModelJSON(params.metaModelJSON);\n }\n\n } else {\n\n params.handleGLTFNode = (modelId, glTFNode, actions) => {\n\n const name = glTFNode.name;\n\n if (!name) {\n return true; // Continue descending this node subtree\n }\n\n const id = name;\n\n actions.createEntity = { // Create an Entity for this glTF scene node\n id: id,\n isObject: true // Registers the Entity in Scene#objects\n };\n\n return true; // Continue descending this glTF node subtree\n };\n\n\n if (params.src) {\n this._sceneModelLoader.load(this, params.src, null, params, sceneModel);\n } else {\n this._sceneModelLoader.parse(this, params.gltf, null, params, sceneModel);\n }\n }\n\n sceneModel.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(modelId);\n });\n\n return sceneModel;\n }\n\n /**\n * Destroys this GLTFLoaderPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n\nexport {GLTFLoaderPlugin}", + "content": "import {Plugin, SceneModel, utils} from \"../../viewer/index.js\"\nimport {GLTFSceneModelLoader} from \"./GLTFSceneModelLoader.js\";\n\nimport {GLTFDefaultDataSource} from \"./GLTFDefaultDataSource.js\";\nimport {IFCObjectDefaults} from \"../../viewer/metadata/IFCObjectDefaults.js\";\n\n/**\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Loads all glTF formats, including embedded and binary formats.\n * * Loads physically-based materials and textures.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\n * to ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\n * the ````.xkt```` using {@link XKTLoaderPlugin}.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Usage\n *\n * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n *\n * ## Showing a glTF model in TreeViewPlugin when metadata is not available\n *\n * When GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a\n * `name` attribute, giving the Entity an ID that has the value of the `name` attribute.\n *\n * Those name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not\n * ordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin\n * will create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any\n * MetaModels that we create alongside the model.\n *\n * For glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter\n * to make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * const sceneModel = gltfLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"public-use-sample-apartment.glb\",\n *\n * //-------------------------------------------------------------------------\n * // Specify an `elementId` parameter, which causes the\n * // entire model to be loaded into a single Entity that gets this ID.\n * //-------------------------------------------------------------------------\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * //-------------------------------------------------------------------------\n * // Specify a `metaModelJSON` parameter, which creates a\n * // MetaModel with two MetaObjects, one of which corresponds\n * // to our Entity. Then the TreeViewPlugin is able to have a node\n * // that can represent the model and control the visibility of the Entity.\n * //--------------------------------------------------------------------------\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates a MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates a MetaObject with this ID (same ID as our Entity)\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n * @class GLTFLoaderPlugin\n */\nclass GLTFLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"GLTFLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link GLTFDefaultDataSource}, which loads over HTTP.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"GLTFLoader\", viewer, cfg);\n\n this._sceneModelLoader = new GLTFSceneModelLoader(this, cfg);\n\n this.dataSource = cfg.dataSource;\n this.objectDefaults = cfg.objectDefaults;\n }\n\n /**\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new GLTFDefaultDataSource();\n }\n\n /**\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n set objectDefaults(value) {\n this._objectDefaults = value || IFCObjectDefaults;\n }\n\n /**\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n get objectDefaults() {\n return this._objectDefaults;\n }\n\n /**\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelJSON```` parameter.\n * @param {*} [params.metaModelJSON] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The double-precision World-space origin of the model's coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The single-precision position, relative to ````origin````.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @param {String} [params.entityId] When supplied, causes the entire model to be loaded into a single {@link Entity} that gets this ID.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {\n isModel: true,\n dtxEnabled: params.dtxEnabled\n }));\n\n const modelId = sceneModel.id; // In case ID was auto-generated\n\n if (!params.src && !params.gltf) {\n this.error(\"load() param expected: src or gltf\");\n return sceneModel; // Return new empty model\n }\n\n if (params.metaModelSrc || params.metaModelJSON) {\n\n const objectDefaults = params.objectDefaults || this._objectDefaults || IFCObjectDefaults;\n\n const processMetaModelJSON = (metaModelJSON) => {\n\n this.viewer.metaScene.createMetaModel(modelId, metaModelJSON, {\n includeTypes: params.includeTypes,\n excludeTypes: params.excludeTypes\n });\n\n this.viewer.scene.canvas.spinner.processes--;\n\n let includeTypes;\n if (params.includeTypes) {\n includeTypes = {};\n for (let i = 0, len = params.includeTypes.length; i < len; i++) {\n includeTypes[params.includeTypes[i]] = true;\n }\n }\n\n let excludeTypes;\n if (params.excludeTypes) {\n excludeTypes = {};\n if (!includeTypes) {\n includeTypes = {};\n }\n for (let i = 0, len = params.excludeTypes.length; i < len; i++) {\n includeTypes[params.excludeTypes[i]] = true;\n }\n }\n\n params.readableGeometry = false;\n\n params.handleGLTFNode = (modelId, glTFNode, actions) => {\n\n const name = glTFNode.name;\n\n if (!name) {\n return true; // Continue descending this node subtree\n }\n\n const nodeId = name;\n const metaObject = this.viewer.metaScene.metaObjects[nodeId];\n const type = (metaObject ? metaObject.type : \"DEFAULT\") || \"DEFAULT\";\n\n actions.createEntity = {\n id: nodeId,\n isObject: true // Registers the Entity in Scene#objects\n };\n\n const props = objectDefaults[type];\n\n if (props) { // Set Entity's initial rendering state for recognized type\n\n if (props.visible === false) {\n actions.createEntity.visible = false;\n }\n\n if (props.colorize) {\n actions.createEntity.colorize = props.colorize;\n }\n\n if (props.pickable === false) {\n actions.createEntity.pickable = false;\n }\n\n if (props.opacity !== undefined && props.opacity !== null) {\n actions.createEntity.opacity = props.opacity;\n }\n }\n\n return true; // Continue descending this glTF node subtree\n };\n\n if (params.src) {\n this._sceneModelLoader.load(this, params.src, metaModelJSON, params, sceneModel);\n } else {\n this._sceneModelLoader.parse(this, params.gltf, metaModelJSON, params, sceneModel);\n }\n };\n\n if (params.metaModelSrc) {\n\n const metaModelSrc = params.metaModelSrc;\n\n this.viewer.scene.canvas.spinner.processes++;\n\n this._dataSource.getMetaModel(metaModelSrc, (metaModelJSON) => {\n\n this.viewer.scene.canvas.spinner.processes--;\n\n processMetaModelJSON(metaModelJSON);\n\n }, (errMsg) => {\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - ${errMsg}`);\n this.viewer.scene.canvas.spinner.processes--;\n });\n\n } else if (params.metaModelJSON) {\n\n processMetaModelJSON(params.metaModelJSON);\n }\n\n } else {\n\n params.handleGLTFNode = (modelId, glTFNode, actions) => {\n\n const name = glTFNode.name;\n\n if (!name) {\n return true; // Continue descending this node subtree\n }\n\n const id = name;\n\n actions.createEntity = { // Create an Entity for this glTF scene node\n id: id,\n isObject: true // Registers the Entity in Scene#objects\n };\n\n return true; // Continue descending this glTF node subtree\n };\n\n\n if (params.src) {\n this._sceneModelLoader.load(this, params.src, null, params, sceneModel);\n } else {\n this._sceneModelLoader.parse(this, params.gltf, null, params, sceneModel);\n }\n }\n\n sceneModel.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(modelId);\n });\n\n return sceneModel;\n }\n\n /**\n * Destroys this GLTFLoaderPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n\nexport {GLTFLoaderPlugin}", "static": true, "longname": "/home/lindsay/xeolabs/xeokit-sdk-feb14/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js", "access": "public", @@ -19667,7 +20195,7 @@ "lineNumber": 1 }, { - "__docId__": 1196, + "__docId__": 1214, "kind": "class", "name": "GLTFLoaderPlugin", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js", @@ -19677,8 +20205,8 @@ "export": true, "importPath": "@xeokit/xeokit-sdk/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js", "importStyle": "{GLTFLoaderPlugin}", - "description": "{@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n\n* Loads all glTF formats, including embedded and binary formats.\n* Loads physically-based materials and textures.\n* Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n* Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n* When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n* Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\nto ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\nthe ````.xkt```` using {@link XKTLoaderPlugin}.\n\n## Metadata\n\nGLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\nto the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n\nEach {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\nmetadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\nuses its own map of default colors and visibilities for IFC element types.\n\n## Usage\n\nIn the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\nwith an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n\nThis will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\nthat hold their metadata.\n\nSince this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\nto the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n\nRead more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n\n````javascript\nimport {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n\n//------------------------------------------------------------------------------------------------------------------\n// 1. Create a Viewer,\n// 2. Arrange the camera,\n// 3. Tweak the selection material (tone it down a bit)\n//------------------------------------------------------------------------------------------------------------------\n\n// 1\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\n// 2\nviewer.camera.orbitPitch(20);\nviewer.camera.orbitYaw(-45);\n\n// 3\nviewer.scene.selectedMaterial.fillAlpha = 0.1;\n\n//------------------------------------------------------------------------------------------------------------------\n// 1. Create a glTF loader plugin,\n// 2. Load a glTF building model and JSON IFC metadata\n// 3. Emphasis the edges to make it look nice\n//------------------------------------------------------------------------------------------------------------------\n\n// 1\nconst gltfLoader = new GLTFLoaderPlugin(viewer);\n\n// 2\nvar model = gltfLoader.load({ // Returns an Entity that represents the model\n id: \"myModel\",\n src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n edges: true\n});\n\nmodel.on(\"loaded\", () => {\n\n //--------------------------------------------------------------------------------------------------------------\n // 1. Find metadata on the third storey\n // 2. Select all the objects in the building's third storey\n // 3. Fit the camera to all the objects on the third storey\n //--------------------------------------------------------------------------------------------------------------\n\n // 1\n const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n const metaObject\n = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n\n const name = metaObject.name; // \"01 eerste verdieping\"\n const type = metaObject.type; // \"IfcBuildingStorey\"\n const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n const children = metaObject.children; // Array of child MetaObjects\n const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n\n // 2\n viewer.scene.setObjectsSelected(objectIds, true);\n\n // 3\n viewer.cameraFlight.flyTo(aabb);\n});\n\n// Find the model Entity by ID\nmodel = viewer.scene.models[\"myModel\"];\n\n// Destroy the model\nmodel.destroy();\n````\n\n## Transforming\n\nWe have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n\nThis lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n\nIn the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\ntranslate it 100 units along its X axis.\n\n````javascript\nconst model = gltfLoader.load({\n src: \"./models/gltf/Duplex/scene.gltf\",\n metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n rotation: [90,0,0],\n scale: [0.5, 0.5, 0.5],\n position: [100, 0, 0]\n});\n````\n\n## Including and excluding IFC types\n\nWe can also load only those objects that have the specified IFC types. In the example below, we'll load only the\nobjects that represent walls.\n\n````javascript\nconst model = gltfLoader.load({\n id: \"myModel\",\n src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n includeTypes: [\"IfcWallStandardCase\"]\n});\n````\n\nWe can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\nobjects that do not represent empty space.\n\n````javascript\nconst model = gltfLoader.load({\n id: \"myModel\",\n src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n excludeTypes: [\"IfcSpace\"]\n});\n````", - "lineNumber": 161, + "description": "{@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n\n* Loads all glTF formats, including embedded and binary formats.\n* Loads physically-based materials and textures.\n* Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n* Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n* When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n* Not recommended for large models. For best performance with large glTF datasets, we recommend first converting them\nto ````.xkt```` format (eg. using [convert2xkt](https://github.com/xeokit/xeokit-convert)), then loading\nthe ````.xkt```` using {@link XKTLoaderPlugin}.\n\n## Metadata\n\nGLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\nto the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n\nEach {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\nmetadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\nuses its own map of default colors and visibilities for IFC element types.\n\n## Usage\n\nIn the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along\nwith an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/).\n\nThis will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\nthat hold their metadata.\n\nSince this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\nto the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n\nRead more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n\n````javascript\nimport {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n\n//------------------------------------------------------------------------------------------------------------------\n// 1. Create a Viewer,\n// 2. Arrange the camera,\n// 3. Tweak the selection material (tone it down a bit)\n//------------------------------------------------------------------------------------------------------------------\n\n// 1\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\n// 2\nviewer.camera.orbitPitch(20);\nviewer.camera.orbitYaw(-45);\n\n// 3\nviewer.scene.selectedMaterial.fillAlpha = 0.1;\n\n//------------------------------------------------------------------------------------------------------------------\n// 1. Create a glTF loader plugin,\n// 2. Load a glTF building model and JSON IFC metadata\n// 3. Emphasis the edges to make it look nice\n//------------------------------------------------------------------------------------------------------------------\n\n// 1\nconst gltfLoader = new GLTFLoaderPlugin(viewer);\n\n// 2\nvar model = gltfLoader.load({ // Returns an Entity that represents the model\n id: \"myModel\",\n src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n edges: true\n});\n\nmodel.on(\"loaded\", () => {\n\n //--------------------------------------------------------------------------------------------------------------\n // 1. Find metadata on the third storey\n // 2. Select all the objects in the building's third storey\n // 3. Fit the camera to all the objects on the third storey\n //--------------------------------------------------------------------------------------------------------------\n\n // 1\n const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n const metaObject\n = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n\n const name = metaObject.name; // \"01 eerste verdieping\"\n const type = metaObject.type; // \"IfcBuildingStorey\"\n const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n const children = metaObject.children; // Array of child MetaObjects\n const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n\n // 2\n viewer.scene.setObjectsSelected(objectIds, true);\n\n // 3\n viewer.cameraFlight.flyTo(aabb);\n});\n\n// Find the model Entity by ID\nmodel = viewer.scene.models[\"myModel\"];\n\n// Destroy the model\nmodel.destroy();\n````\n\n## Transforming\n\nWe have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n\nThis lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n\nIn the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\ntranslate it 100 units along its X axis.\n\n````javascript\nconst model = gltfLoader.load({\n src: \"./models/gltf/Duplex/scene.gltf\",\n metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n rotation: [90,0,0],\n scale: [0.5, 0.5, 0.5],\n position: [100, 0, 0]\n});\n````\n\n## Including and excluding IFC types\n\nWe can also load only those objects that have the specified IFC types. In the example below, we'll load only the\nobjects that represent walls.\n\n````javascript\nconst model = gltfLoader.load({\n id: \"myModel\",\n src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n includeTypes: [\"IfcWallStandardCase\"]\n});\n````\n\nWe can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\nobjects that do not represent empty space.\n\n````javascript\nconst model = gltfLoader.load({\n id: \"myModel\",\n src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n excludeTypes: [\"IfcSpace\"]\n});\n````\n\n## Showing a glTF model in TreeViewPlugin when metadata is not available\n\nWhen GLTFLoaderPlugin loads a glTF model, it creates an object Entity for each `node` in the glTF `scene` hierarchy that has a\n`name` attribute, giving the Entity an ID that has the value of the `name` attribute.\n\nThose name attributes are created by converter tools, such as by [IFC2GLTFCxConverter](https://github.com/Creoox/creoox-ifc2gltfcxconverter) when it generates glTF from IFC files. However, those name attributes are not\nordinarily present in glTF that comes from other sources, such as LiDAR scanners. For such glTF models, GLTFLoaderPlugin\nwill create Entities, but they will have randomly-generated IDs, and therefore cannot be associated with MetaObjects in any\nMetaModels that we create alongside the model.\n\nFor glTF models containing `nodes` that don't have `name` attributes, we can use the `load()` method's `elementId` parameter\nto make GLTFLoaderPlugin load the entire model into a single Entity that gets this ID.\n\nIn conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\ncontains a MetaObject that corresponds to that Entity.\n\nWhen we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the glTF model and controls\nthe visibility of that Entity (ie. to control the visibility of the entire model).\n\nThe snippet below shows how this is done.\n\n````javascript\nimport {Viewer, GLTFLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nnew TreeViewPlugin(viewer, {\n containerElement: document.getElementById(\"treeViewContainer\"),\n hierarchy: \"containment\"\n});\n\nconst gltfLoader = new GLTFLoaderPlugin(viewer);\n\nconst sceneModel = gltfLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n id: \"myScanModel\",\n src: \"public-use-sample-apartment.glb\",\n\n //-------------------------------------------------------------------------\n // Specify an `elementId` parameter, which causes the\n // entire model to be loaded into a single Entity that gets this ID.\n //-------------------------------------------------------------------------\n\n entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n\n //-------------------------------------------------------------------------\n // Specify a `metaModelJSON` parameter, which creates a\n // MetaModel with two MetaObjects, one of which corresponds\n // to our Entity. Then the TreeViewPlugin is able to have a node\n // that can represent the model and control the visibility of the Entity.\n //--------------------------------------------------------------------------\n\n metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n \"metaObjects\": [\n {\n \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates a MetaObject with this ID\n \"name\": \"My Project\",\n \"type\": \"Default\",\n \"parent\": null\n },\n {\n \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates a MetaObject with this ID (same ID as our Entity)\n \"name\": \"My Scan\",\n \"type\": \"Default\",\n \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n }\n ]\n }\n});\n````", + "lineNumber": 234, "unknown": [ { "tagName": "@class", @@ -19691,7 +20219,7 @@ ] }, { - "__docId__": 1197, + "__docId__": 1215, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19701,7 +20229,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#constructor", "access": "public", "description": "", - "lineNumber": 172, + "lineNumber": 245, "unknown": [ { "tagName": "@constructor", @@ -19764,7 +20292,7 @@ ] }, { - "__docId__": 1198, + "__docId__": 1216, "kind": "member", "name": "_sceneModelLoader", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19772,7 +20300,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#_sceneModelLoader", "access": "private", "description": null, - "lineNumber": 176, + "lineNumber": 249, "undocument": true, "ignore": true, "type": { @@ -19782,7 +20310,7 @@ } }, { - "__docId__": 1201, + "__docId__": 1219, "kind": "set", "name": "dataSource", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19792,7 +20320,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#dataSource", "access": "public", "description": "Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n\nDefault value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.", - "lineNumber": 189, + "lineNumber": 262, "type": { "nullable": null, "types": [ @@ -19803,7 +20331,7 @@ } }, { - "__docId__": 1202, + "__docId__": 1220, "kind": "member", "name": "_dataSource", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19811,7 +20339,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#_dataSource", "access": "private", "description": null, - "lineNumber": 190, + "lineNumber": 263, "undocument": true, "ignore": true, "type": { @@ -19821,7 +20349,7 @@ } }, { - "__docId__": 1203, + "__docId__": 1221, "kind": "get", "name": "dataSource", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19831,7 +20359,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#dataSource", "access": "public", "description": "Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n\nDefault value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.", - "lineNumber": 200, + "lineNumber": 273, "type": { "nullable": null, "types": [ @@ -19842,7 +20370,7 @@ } }, { - "__docId__": 1204, + "__docId__": 1222, "kind": "set", "name": "objectDefaults", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19852,7 +20380,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#objectDefaults", "access": "public", "description": "Sets map of initial default states for each loaded {@link Entity} that represents an object.\n\nDefault value is {@link IFCObjectDefaults}.", - "lineNumber": 211, + "lineNumber": 284, "type": { "nullable": null, "types": [ @@ -19863,7 +20391,7 @@ } }, { - "__docId__": 1205, + "__docId__": 1223, "kind": "member", "name": "_objectDefaults", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19871,7 +20399,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#_objectDefaults", "access": "private", "description": null, - "lineNumber": 212, + "lineNumber": 285, "undocument": true, "ignore": true, "type": { @@ -19881,7 +20409,7 @@ } }, { - "__docId__": 1206, + "__docId__": 1224, "kind": "get", "name": "objectDefaults", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19891,7 +20419,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#objectDefaults", "access": "public", "description": "Gets map of initial default states for each loaded {@link Entity} that represents an object.\n\nDefault value is {@link IFCObjectDefaults}.", - "lineNumber": 222, + "lineNumber": 295, "type": { "nullable": null, "types": [ @@ -19902,7 +20430,7 @@ } }, { - "__docId__": 1207, + "__docId__": 1225, "kind": "method", "name": "load", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -19912,7 +20440,7 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#load", "access": "public", "description": "Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.", - "lineNumber": 256, + "lineNumber": 329, "unknown": [ { "tagName": "@returns", @@ -20208,7 +20736,7 @@ } }, { - "__docId__": 1208, + "__docId__": 1226, "kind": "method", "name": "destroy", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -20218,12 +20746,12 @@ "longname": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin#destroy", "access": "public", "description": "Destroys this GLTFLoaderPlugin.", - "lineNumber": 417, + "lineNumber": 490, "params": [], "return": null }, { - "__docId__": 1209, + "__docId__": 1227, "kind": "file", "name": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\nimport {utils} from \"../../viewer/scene/utils.js\";\nimport {core} from \"../../viewer/scene/core.js\";\nimport {sRGBEncoding} from \"../../viewer/scene/constants/constants.js\";\nimport {worldToRTCPositions} from \"../../viewer/scene/math/rtcCoords.js\";\nimport {parse} from '@loaders.gl/core';\nimport {GLTFLoader} from '@loaders.gl/gltf/dist/esm/gltf-loader.js';\nimport {\n ClampToEdgeWrapping,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearMipMapNearestFilter,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipMapLinearFilter,\n NearestMipMapNearestFilter,\n RepeatWrapping\n} from \"../../viewer/scene/constants/constants.js\";\n\n/**\n * @private\n */\nclass GLTFSceneModelLoader {\n\n constructor(cfg) {\n cfg = cfg || {};\n }\n\n load(plugin, src, metaModelJSON, options, sceneModel, ok, error) {\n options = options || {};\n loadGLTF(plugin, src, metaModelJSON, options, sceneModel, function () {\n core.scheduleTask(function () {\n sceneModel.scene.fire(\"modelLoaded\", sceneModel.id); // FIXME: Assumes listeners know order of these two events\n sceneModel.fire(\"loaded\", true, false);\n });\n if (ok) {\n ok();\n }\n },\n function (msg) {\n plugin.error(msg);\n if (error) {\n error(msg);\n }\n sceneModel.fire(\"error\", msg);\n });\n }\n\n parse(plugin, gltf, metaModelJSON, options, sceneModel, ok, error) {\n options = options || {};\n parseGLTF(plugin, \"\", gltf, metaModelJSON, options, sceneModel, function () {\n sceneModel.scene.fire(\"modelLoaded\", sceneModel.id); // FIXME: Assumes listeners know order of these two events\n sceneModel.fire(\"loaded\", true, false);\n if (ok) {\n ok();\n }\n },\n function (msg) {\n sceneModel.error(msg);\n sceneModel.fire(\"error\", msg);\n if (error) {\n error(msg);\n }\n });\n }\n}\n\nfunction getMetaModelCorrections(metaModelJSON) {\n const eachRootStats = {};\n const eachChildRoot = {};\n const metaObjects = metaModelJSON.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 return {\n metaObjectsMap,\n eachRootStats,\n eachChildRoot\n };\n}\n\nfunction loadGLTF(plugin, src, metaModelJSON, options, sceneModel, ok, error) {\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n const isGLB = (src.split('.').pop() === \"glb\");\n if (isGLB) {\n plugin.dataSource.getGLB(src, (arrayBuffer) => { // OK\n options.basePath = getBasePath(src);\n parseGLTF(plugin, src, arrayBuffer, metaModelJSON, options, sceneModel, ok, error);\n spinner.processes--;\n },\n (err) => {\n spinner.processes--;\n error(err);\n });\n } else {\n plugin.dataSource.getGLTF(src, (gltf) => { // OK\n options.basePath = getBasePath(src);\n parseGLTF(plugin, src, gltf, metaModelJSON, options, sceneModel, ok, error);\n spinner.processes--;\n },\n (err) => {\n spinner.processes--;\n error(err);\n });\n }\n}\n\nfunction getBasePath(src) {\n const i = src.lastIndexOf(\"/\");\n return (i !== 0) ? src.substring(0, i + 1) : \"\";\n}\n\nfunction parseGLTF(plugin, src, gltf, metaModelJSON, options, sceneModel, ok) {\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n parse(gltf, GLTFLoader, {\n baseUri: options.basePath\n }).then((gltfData) => {\n const ctx = {\n src: src,\n entityId: options.entityId,\n metaModelCorrections: metaModelJSON ? getMetaModelCorrections(metaModelJSON) : null,\n loadBuffer: options.loadBuffer,\n basePath: options.basePath,\n handlenode: options.handlenode,\n backfaces: !!options.backfaces,\n gltfData: gltfData,\n scene: sceneModel.scene,\n plugin: plugin,\n sceneModel: sceneModel,\n //geometryCreated: {},\n numObjects: 0,\n nodes: [],\n nextId: 0,\n log: (msg) => {\n plugin.log(msg);\n }\n };\n loadTextures(ctx);\n loadMaterials(ctx);\n loadDefaultScene(ctx);\n sceneModel.finalize();\n spinner.processes--;\n ok();\n });\n}\n\nfunction loadTextures(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 loadTexture(ctx, textures[i]);\n }\n }\n}\n\nfunction loadTexture(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 ctx.sceneModel.createTexture({\n id: textureId,\n image: texture.source.image,\n flipY: !!texture.flipY,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n encoding: sRGBEncoding\n });\n texture._textureId = textureId;\n}\n\nfunction loadMaterials(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 = loadTextureSet(ctx, material);\n material._attributes = loadMaterialAttributes(ctx, material);\n }\n }\n}\n\nfunction loadTextureSet(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 alphaMode = material.alphaMode;\n // switch (alphaMode) {\n // case \"NORMAL_OPAQUE\":\n // materialCfg.alphaMode = \"opaque\";\n // break;\n // case \"MASK\":\n // materialCfg.alphaMode = \"mask\";\n // break;\n // case \"BLEND\":\n // materialCfg.alphaMode = \"blend\";\n // break;\n // default:\n // }\n // const alphaCutoff = material.alphaCutoff;\n // if (alphaCutoff !== undefined) {\n // materialCfg.alphaCutoff = alphaCutoff;\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.id = `textureSet-${ctx.nextId++};`\n ctx.sceneModel.createTextureSet(textureSetCfg);\n return textureSetCfg.id;\n }\n return null;\n}\n\nfunction loadMaterialAttributes(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 doubleSided : true\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 materialAttributes.doubleSided = (material.doubleSided !== false);\n return materialAttributes;\n}\n\nfunction loadDefaultScene(ctx) {\n const gltfData = ctx.gltfData;\n const scene = gltfData.scene || gltfData.scenes[0];\n if (!scene) {\n error(ctx, \"glTF has no default scene\");\n return;\n }\n loadScene(ctx, scene);\n}\n\nfunction loadScene(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; i++) {\n const node = nodes[i];\n loadNode(ctx, node, 0, null);\n }\n}\n\nfunction countMeshUsage(ctx, node) {\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 error(ctx, \"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, childNode);\n }\n }\n}\n\nconst deferredMeshIds = [];\n\nfunction loadNode(ctx, node, depth, matrix) {\n const gltfData = ctx.gltfData;\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\n const sceneModel = ctx.sceneModel;\n if (node.mesh) {\n const mesh = node.mesh;\n let createEntity;\n if (ctx.handlenode) {\n const actions = {};\n if (!ctx.handlenode(ctx.sceneModel.id, node, actions)) {\n return;\n }\n if (actions.createEntity) {\n createEntity = actions.createEntity;\n }\n }\n const worldMatrix = matrix ? matrix.slice() : math.identityMat4();\n const numPrimitives = mesh.primitives.length;\n\n if (numPrimitives > 0) {\n\n for (let i = 0; i < numPrimitives; i++) {\n\n const primitive = mesh.primitives[i];\n if (primitive.mode < 4) {\n continue;\n }\n\n const meshCfg = {\n id: sceneModel.id + \".\" + ctx.numObjects++\n };\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 = new Float32Array([1.0, 1.0, 1.0]);\n meshCfg.opacity = 1.0;\n }\n\n const backfaces = ((ctx.backfaces !== false) || (material && material.doubleSided !== false));\n\n switch (primitive.mode) {\n case 0: // POINTS\n meshCfg.primitive = \"points\";\n break;\n case 1: // LINES\n meshCfg.primitive = \"lines\";\n break;\n case 2: // LINE_LOOP\n meshCfg.primitive = \"lines\";\n break;\n case 3: // LINE_STRIP\n meshCfg.primitive = \"lines\";\n break;\n case 4: // TRIANGLES\n meshCfg.primitive = backfaces ? \"triangles\" : \"solid\";\n break;\n case 5: // TRIANGLE_STRIP\n meshCfg.primitive = backfaces ? \"triangles\" : \"solid\";\n break;\n case 6: // TRIANGLE_FAN\n meshCfg.primitive = backfaces ? \"triangles\" : \"solid\";\n break;\n default:\n meshCfg.primitive = backfaces ? \"triangles\" : \"solid\";\n }\n\n const POSITION = primitive.attributes.POSITION;\n if (!POSITION) {\n continue;\n }\n meshCfg.localPositions = POSITION.value;\n meshCfg.positions = new Float64Array(meshCfg.localPositions.length);\n\n if (primitive.attributes.NORMAL) {\n meshCfg.normals = primitive.attributes.NORMAL.value;\n }\n\n if (primitive.attributes.TEXCOORD_0) {\n meshCfg.uv = primitive.attributes.TEXCOORD_0.value;\n }\n\n if (primitive.indices) {\n meshCfg.indices = primitive.indices.value;\n }\n\n math.transformPositions3(worldMatrix, meshCfg.localPositions, meshCfg.positions);\n const origin = math.vec3();\n const rtcNeeded = worldToRTCPositions(meshCfg.positions, meshCfg.positions, origin); // Small cellsize guarantees better accuracy\n if (rtcNeeded) {\n meshCfg.origin = origin;\n }\n\n sceneModel.createMesh(meshCfg);\n deferredMeshIds.push(meshCfg.id);\n }\n }\n }\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 loadNode(ctx, childNode, depth + 1, matrix);\n }\n }\n\n // Post-order visit scene node\n\n if (ctx.entityId) {\n if (depth ===0) {\n sceneModel.createEntity({\n id: ctx.entityId,\n meshIds: deferredMeshIds,\n isObject: true\n });\n deferredMeshIds.length = 0;\n }\n } else {\n const nodeName = node.name;\n if (((nodeName !== undefined && nodeName !== null) || depth === 0) && deferredMeshIds.length > 0) {\n if (nodeName === undefined || nodeName === null) {\n ctx.log(`Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT`);\n }\n let entityId = nodeName; // Fall back on generated ID when `name` not found on glTF scene node(s)\n // if (!!entityId && sceneModel.entities[entityId]) {\n // ctx.log(`Warning: Two or more glTF nodes found with same 'name' attribute: '${nodeName} - will randomly-generating an object ID in XKT`);\n // }\n // while (!entityId || sceneModel.entities[entityId]) {\n // entityId = \"entity-\" + ctx.nextId++;\n // }\n if (ctx.metaModelCorrections) {\n // Merging meshes into XKTObjects that map to metaobjects\n const rootMetaObject = ctx.metaModelCorrections.eachChildRoot[entityId];\n if (rootMetaObject) {\n const rootMetaObjectStats = ctx.metaModelCorrections.eachRootStats[rootMetaObject.id];\n rootMetaObjectStats.countChildren++;\n if (rootMetaObjectStats.countChildren >= rootMetaObjectStats.numChildren) {\n sceneModel.createEntity({\n id: rootMetaObject.id,\n meshIds: deferredMeshIds,\n isObject: true\n });\n deferredMeshIds.length = 0;\n }\n } else {\n const metaObject = ctx.metaModelCorrections.metaObjectsMap[entityId];\n if (metaObject) {\n sceneModel.createEntity({\n id: entityId,\n meshIds: deferredMeshIds,\n isObject: true\n });\n deferredMeshIds.length = 0;\n }\n }\n } else {\n // Create an XKTObject from the meshes at each named glTF node, don't care about metaobjects\n sceneModel.createEntity({\n id: entityId,\n meshIds: deferredMeshIds,\n isObject: true\n });\n deferredMeshIds.length = 0;\n }\n }\n }\n}\n\nfunction error(ctx, msg) {\n ctx.plugin.error(msg);\n}\n\nexport {GLTFSceneModelLoader};\n", @@ -20234,7 +20762,7 @@ "lineNumber": 1 }, { - "__docId__": 1210, + "__docId__": 1228, "kind": "function", "name": "getMetaModelCorrections", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20265,7 +20793,7 @@ "ignore": true }, { - "__docId__": 1211, + "__docId__": 1229, "kind": "function", "name": "loadGLTF", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20328,7 +20856,7 @@ "ignore": true }, { - "__docId__": 1212, + "__docId__": 1230, "kind": "function", "name": "getBasePath", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20359,7 +20887,7 @@ "ignore": true }, { - "__docId__": 1213, + "__docId__": 1231, "kind": "function", "name": "parseGLTF", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20422,7 +20950,7 @@ "ignore": true }, { - "__docId__": 1214, + "__docId__": 1232, "kind": "function", "name": "loadTextures", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20449,7 +20977,7 @@ "ignore": true }, { - "__docId__": 1215, + "__docId__": 1233, "kind": "function", "name": "loadTexture", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20482,7 +21010,7 @@ "ignore": true }, { - "__docId__": 1216, + "__docId__": 1234, "kind": "function", "name": "loadMaterials", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20509,7 +21037,7 @@ "ignore": true }, { - "__docId__": 1217, + "__docId__": 1235, "kind": "function", "name": "loadTextureSet", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20546,7 +21074,7 @@ "ignore": true }, { - "__docId__": 1218, + "__docId__": 1236, "kind": "function", "name": "loadMaterialAttributes", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20583,7 +21111,7 @@ "ignore": true }, { - "__docId__": 1219, + "__docId__": 1237, "kind": "function", "name": "loadDefaultScene", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20610,7 +21138,7 @@ "ignore": true }, { - "__docId__": 1220, + "__docId__": 1238, "kind": "function", "name": "loadScene", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20643,7 +21171,7 @@ "ignore": true }, { - "__docId__": 1221, + "__docId__": 1239, "kind": "function", "name": "countMeshUsage", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20676,7 +21204,7 @@ "ignore": true }, { - "__docId__": 1222, + "__docId__": 1240, "kind": "variable", "name": "deferredMeshIds", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20697,7 +21225,7 @@ "ignore": true }, { - "__docId__": 1223, + "__docId__": 1241, "kind": "function", "name": "loadNode", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20742,7 +21270,7 @@ "ignore": true }, { - "__docId__": 1224, + "__docId__": 1242, "kind": "function", "name": "error", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20775,7 +21303,7 @@ "ignore": true }, { - "__docId__": 1225, + "__docId__": 1243, "kind": "class", "name": "GLTFSceneModelLoader", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js", @@ -20791,7 +21319,7 @@ "ignore": true }, { - "__docId__": 1226, + "__docId__": 1244, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js~GLTFSceneModelLoader", @@ -20805,7 +21333,7 @@ "undocument": true }, { - "__docId__": 1227, + "__docId__": 1245, "kind": "method", "name": "load", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js~GLTFSceneModelLoader", @@ -20864,7 +21392,7 @@ "return": null }, { - "__docId__": 1228, + "__docId__": 1246, "kind": "method", "name": "parse", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js~GLTFSceneModelLoader", @@ -20923,7 +21451,7 @@ "return": null }, { - "__docId__": 1229, + "__docId__": 1247, "kind": "file", "name": "src/plugins/GLTFLoaderPlugin/index.js", "content": "export * from \"./GLTFDefaultDataSource.js\";\nexport * from \"./GLTFLoaderPlugin.js\";", @@ -20934,7 +21462,7 @@ "lineNumber": 1 }, { - "__docId__": 1230, + "__docId__": 1248, "kind": "file", "name": "src/plugins/LASLoaderPlugin/LASDefaultDataSource.js", "content": "/**\n * Default data access strategy for {@link LASLoaderPlugin}.\n */\nclass LASDefaultDataSource {\n\n constructor() {\n }\n\n /**\n * Gets the contents of the given LAS file in an arraybuffer.\n *\n * @param {String|Number} src Path or ID of an LAS file.\n * @param {Function} ok Callback fired on success, argument is the LAS file in an arraybuffer.\n * @param {Function} error Callback fired on error.\n */\n getLAS(src, ok, error) {\n var defaultCallback = () => {\n };\n ok = ok || defaultCallback;\n error = error || defaultCallback;\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n const dataUriRegexResult = src.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = window.decodeURIComponent(data);\n if (isBase64) {\n data = window.atob(data);\n }\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n ok(buffer);\n } catch (errMsg) {\n error(errMsg);\n }\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', src, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n error('getXKT error : ' + request.response);\n }\n }\n };\n request.send(null);\n }\n }\n}\n\nexport {LASDefaultDataSource};", @@ -20945,7 +21473,7 @@ "lineNumber": 1 }, { - "__docId__": 1231, + "__docId__": 1249, "kind": "class", "name": "LASDefaultDataSource", "memberof": "src/plugins/LASLoaderPlugin/LASDefaultDataSource.js", @@ -20960,7 +21488,7 @@ "interface": false }, { - "__docId__": 1232, + "__docId__": 1250, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/LASLoaderPlugin/LASDefaultDataSource.js~LASDefaultDataSource", @@ -20974,7 +21502,7 @@ "undocument": true }, { - "__docId__": 1233, + "__docId__": 1251, "kind": "method", "name": "getLAS", "memberof": "src/plugins/LASLoaderPlugin/LASDefaultDataSource.js~LASDefaultDataSource", @@ -21021,10 +21549,10 @@ "return": null }, { - "__docId__": 1234, + "__docId__": 1252, "kind": "file", "name": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js", - "content": "import {utils} from \"../../viewer/scene/utils.js\";\nimport {SceneModel} from \"../../viewer/scene/model/index.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {LASDefaultDataSource} from \"./LASDefaultDataSource.js\";\nimport {math} from \"../../viewer/index.js\";\nimport {parse} from '@loaders.gl/core';\nimport {LASLoader} from '@loaders.gl/las/dist/esm/las-loader.js';\nimport {loadLASHeader} from \"./loadLASHeader\";\n\nconst MAX_VERTICES = 500000; // TODO: Rough estimate\n\n/**\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n */\nclass LASLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"lasLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.dataSource] A custom data source through which the LASLoaderPlugin can load model and metadata files. Defaults to an instance of {@link LASDefaultDataSource}, which loads over HTTP.\n * @param {Number} [cfg.skip=1] Configures LASLoaderPlugin to load every **n** points.\n * @param {Number} [cfg.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [cfg.colorDepth=8] Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits. Accepted values are 8, 16 an \"auto\".\n */\n constructor(viewer, cfg = {}) {\n\n super(\"lasLoader\", viewer, cfg);\n\n this.dataSource = cfg.dataSource;\n this.skip = cfg.skip;\n this.fp64 = cfg.fp64;\n this.colorDepth = cfg.colorDepth;\n }\n\n /**\n * Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new LASDefaultDataSource();\n }\n\n /**\n * When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n *\n * Default value is ````1````.\n *\n * @returns {Number} The **n**th point that LASLoaderPlugin will read.\n */\n get skip() {\n return this._skip;\n }\n\n /**\n * Configures LASLoaderPlugin to load every **n** points.\n *\n * Default value is ````1````.\n *\n * @param {Number} value The **n**th point that LASLoaderPlugin will read.\n */\n set skip(value) {\n this._skip = value || 1;\n }\n\n /**\n * Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n */\n get fp64() {\n return this._fp64;\n }\n\n /**\n * Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n */\n set fp64(value) {\n this._fp64 = !!value;\n }\n\n /**\n * Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @returns {Number|String} Possible returned values are 8, 16 and \"auto\".\n */\n get colorDepth() {\n return this._colorDepth;\n }\n\n /**\n * Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @param {Number|String} value Valid values are 8, 16 and \"auto\".\n */\n set colorDepth(value) {\n this._colorDepth = value || \"auto\";\n }\n\n /**\n * Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.\n * @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Object} [params.stats] Collects model statistics.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n if (!params.src && !params.las) {\n this.error(\"load() param expected: src or las\");\n return sceneModel; // Return new empty model\n }\n\n const options = {\n las: {\n skip: this._skip,\n fp64: this._fp64,\n colorDepth: this._colorDepth\n }\n };\n\n if (params.src) {\n this._loadModel(params.src, params, options, sceneModel);\n } else {\n const spinner = this.viewer.scene.canvas.spinner;\n spinner.processes++;\n this._parseModel(params.las, params, options, sceneModel).then(() => {\n spinner.processes--;\n }, (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n sceneModel.fire(\"error\", errMsg);\n });\n }\n\n return sceneModel;\n }\n\n _loadModel(src, params, options, sceneModel) {\n const spinner = this.viewer.scene.canvas.spinner;\n spinner.processes++;\n this._dataSource.getLAS(params.src, (arrayBuffer) => {\n this._parseModel(arrayBuffer, params, options, sceneModel).then(() => {\n spinner.processes--;\n }, (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n sceneModel.fire(\"error\", errMsg);\n });\n },\n (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n sceneModel.fire(\"error\", errMsg);\n });\n }\n\n _parseModel(arrayBuffer, params, options, sceneModel) {\n\n function readPositions(attributesPosition) {\n const positionsValue = attributesPosition.value;\n if (params.rotateX) {\n if (positionsValue) {\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n const temp = positionsValue[i + 1];\n positionsValue[i + 1] = positionsValue[i + 2];\n positionsValue[i + 2] = temp;\n }\n }\n }\n return positionsValue;\n }\n\n function readColorsAndIntensities(attributesColor, attributesIntensity) {\n const colors = attributesColor.value;\n const colorSize = attributesColor.size;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const colorsCompressed = new Uint8Array(colorsCompressedSize);\n for (let i = 0, j = 0, k = 0, len = intensities.length; i < len; i++, k += colorSize, j += 4) {\n colorsCompressed[j + 0] = colors[k + 0];\n colorsCompressed[j + 1] = colors[k + 1];\n colorsCompressed[j + 2] = colors[k + 2];\n colorsCompressed[j + 3] = Math.round((intensities[i] / 65536) * 255);\n }\n return colorsCompressed;\n }\n\n function readIntensities(attributesIntensity) {\n const intensities = attributesIntensity.intensity;\n const colorsCompressedSize = intensities.length * 4;\n const colorsCompressed = new Uint8Array(colorsCompressedSize);\n for (let i = 0, j = 0, k = 0, len = intensities.length; i < len; i++, k += 3, j += 4) {\n colorsCompressed[j + 0] = 0;\n colorsCompressed[j + 1] = 0;\n colorsCompressed[j + 2] = 0;\n colorsCompressed[j + 3] = Math.round((intensities[i] / 65536) * 255);\n }\n return colorsCompressed;\n }\n\n return new Promise((resolve, reject) => {\n\n if (sceneModel.destroyed) {\n reject();\n return;\n }\n\n const stats = params.stats || {};\n stats.sourceFormat = \"LAS\";\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 try {\n\n const lasHeader = loadLASHeader(arrayBuffer);\n\n parse(arrayBuffer, LASLoader, options).then((parsedData) => {\n\n const attributes = parsedData.attributes;\n const loaderData = parsedData.loaderData;\n const pointsFormatId = loaderData.pointsFormatId !== undefined ? loaderData.pointsFormatId : -1;\n\n if (!attributes.POSITION) {\n sceneModel.finalize();\n reject(\"No positions found in file\");\n return;\n }\n\n let positionsValue\n let colorsCompressed;\n\n switch (pointsFormatId) {\n case 0:\n positionsValue = readPositions(attributes.POSITION);\n colorsCompressed = readIntensities(attributes.intensity);\n break;\n case 1:\n if (!attributes.intensity) {\n sceneModel.finalize();\n reject(\"No positions found in file\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION);\n colorsCompressed = readIntensities(attributes.intensity);\n break;\n case 2:\n if (!attributes.intensity) {\n sceneModel.finalize();\n reject(\"No positions found in file\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION);\n colorsCompressed = readColorsAndIntensities(attributes.COLOR_0, attributes.intensity);\n break;\n case 3:\n if (!attributes.intensity) {\n sceneModel.finalize();\n reject(\"No positions found in file\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION);\n colorsCompressed = readColorsAndIntensities(attributes.COLOR_0, attributes.intensity);\n break;\n }\n\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n sceneModel.createMesh({\n id: meshId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n }\n /*\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n\n const geometryId = `geometryMesh${i}`;\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n\n sceneModel.createMesh({\n id: meshId,\n geometryId\n });\n }\n */\n\n const pointsObjectId = params.entityId || math.createUUID();\n\n sceneModel.createEntity({\n id: pointsObjectId,\n meshIds,\n isObject: true\n });\n\n sceneModel.finalize();\n\n if (params.metaModelJSON) {\n const metaModelId = sceneModel.id;\n this.viewer.metaScene.createMetaModel(metaModelId, params.metaModelJSON, options);\n } else if (params.loadMetadata !== false) {\n const rootMetaObjectId = math.createUUID();\n const metadata = {\n projectId: \"\",\n author: \"\",\n createdAt: \"\",\n schema: \"\",\n creatingApplication: \"\",\n metaObjects: [\n {\n id: rootMetaObjectId,\n name: \"Model\",\n type: \"Model\"\n },\n {\n id: pointsObjectId,\n name: \"PointCloud (LAS)\",\n type: \"PointCloud\",\n parent: rootMetaObjectId,\n attributes: lasHeader || {}\n }\n ],\n propertySets: []\n };\n const metaModelId = sceneModel.id;\n this.viewer.metaScene.createMetaModel(metaModelId, metadata, options);\n }\n\n sceneModel.scene.once(\"tick\", () => {\n if (sceneModel.destroyed) {\n return;\n }\n sceneModel.scene.fire(\"modelLoaded\", sceneModel.id); // FIXME: Assumes listeners know order of these two events\n sceneModel.fire(\"loaded\", true, false); // Don't forget the event, for late subscribers\n });\n\n resolve();\n });\n } catch (e) {\n sceneModel.finalize();\n reject(e);\n }\n });\n }\n}\n\nfunction chunkArray(array, chunkSize) {\n if (chunkSize >= array.length) {\n return array;\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\nexport {LASLoaderPlugin};\n", + "content": "import {utils} from \"../../viewer/scene/utils.js\";\nimport {SceneModel} from \"../../viewer/scene/model/index.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {LASDefaultDataSource} from \"./LASDefaultDataSource.js\";\nimport {math} from \"../../viewer/index.js\";\nimport {parse} from '@loaders.gl/core';\nimport {LASLoader} from '@loaders.gl/las/dist/esm/las-loader.js';\nimport {loadLASHeader} from \"./loadLASHeader\";\n\nconst MAX_VERTICES = 500000; // TODO: Rough estimate\n\n/**\n * {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ## Summary\n *\n * * Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n * * Loads lidar point cloud positions, colors and intensities.\n * * Supports 32 and 64-bit positions.\n * * Supports 8 and 16-bit color depths.\n * * Option to load every *n* points.\n * * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n *\n * ## Performance\n *\n * If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\n * with {@link XKTLoaderPlugin}.\n *\n * ## Scene and metadata representation\n *\n * When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n *\n * The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\n * this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n *\n * The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\n * represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\n * by {@link MetaModel#id} in {@link MetaScene#metaModels} .\n *\n * Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\n * by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * ## Usage\n *\n * In the example below we'll load the Autzen model from\n * a [LAS file](/assets/models/las/). Once the model has\n * loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * colorDepth: 8, // Default\n * fp64: false, // Default\n * skip: 1 // Default\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n *\n * modelEntity.on(\"loaded\", () => {\n *\n * const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n * const pointCloudMetaObject = metaModel.rootMetaObject;\n *\n * const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n *\n * //...\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each LAS model as we load it.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * position it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n *\n * ````javascript\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [1842022, 10, -5173301]\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, LASLoaderPlugin will load LAS files over HTTP.\n *\n * In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given LAS file in an arraybuffer\n * getLAS(src, ok, error) {\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * (errMsg) => {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const lasLoader = new LASLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const modelEntity = lasLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/las/autzen.laz\"\n * });\n * ````\n *\n * ## Showing a LAS/LAZ model in TreeViewPlugin\n *\n * We can use the `load()` method's `elementId` parameter\n * to make LASLoaderPlugin load the entire model into a single Entity that gets this ID.\n *\n * In conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\n * contains a MetaObject that corresponds to that Entity.\n *\n * When we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls\n * the visibility of that Entity (ie. to control the visibility of the entire model).\n *\n * The snippet below shows how this is done.\n *\n * ````javascript\n * import {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * hierarchy: \"containment\"\n * });\n *\n * const lasLoader = new LASLoaderPlugin(viewer);\n *\n * const sceneModel = lasLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n * id: \"myScanModel\",\n * src: \"../../assets/models/las/Nalls_Pumpkin_Hill.laz\",\n * rotation: [-90, 0, 0],\n *\n * entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n *\n * metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n * \"metaObjects\": [\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates this MetaObject with this ID\n * \"name\": \"My Project\",\n * \"type\": \"Default\",\n * \"parent\": null\n * },\n * {\n * \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates this MetaObject with this ID\n * \"name\": \"My Scan\",\n * \"type\": \"Default\",\n * \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n * }\n * ]\n * }\n * });\n * ````\n *\n * @class LASLoaderPlugin\n * @since 2.0.17\n */\nclass LASLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"lasLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.dataSource] A custom data source through which the LASLoaderPlugin can load model and metadata files. Defaults to an instance of {@link LASDefaultDataSource}, which loads over HTTP.\n * @param {Number} [cfg.skip=1] Configures LASLoaderPlugin to load every **n** points.\n * @param {Number} [cfg.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [cfg.colorDepth=8] Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits. Accepted values are 8, 16 an \"auto\".\n */\n constructor(viewer, cfg = {}) {\n\n super(\"lasLoader\", viewer, cfg);\n\n this.dataSource = cfg.dataSource;\n this.skip = cfg.skip;\n this.fp64 = cfg.fp64;\n this.colorDepth = cfg.colorDepth;\n }\n\n /**\n * Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n *\n * Default value is {@link LASDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new LASDefaultDataSource();\n }\n\n /**\n * When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n *\n * Default value is ````1````.\n *\n * @returns {Number} The **n**th point that LASLoaderPlugin will read.\n */\n get skip() {\n return this._skip;\n }\n\n /**\n * Configures LASLoaderPlugin to load every **n** points.\n *\n * Default value is ````1````.\n *\n * @param {Number} value The **n**th point that LASLoaderPlugin will read.\n */\n set skip(value) {\n this._skip = value || 1;\n }\n\n /**\n * Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n */\n get fp64() {\n return this._fp64;\n }\n\n /**\n * Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.\n */\n set fp64(value) {\n this._fp64 = !!value;\n }\n\n /**\n * Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @returns {Number|String} Possible returned values are 8, 16 and \"auto\".\n */\n get colorDepth() {\n return this._colorDepth;\n }\n\n /**\n * Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n *\n * Default value is ````8````.\n *\n * Note: LAS specification recommends 16 bits.\n *\n * @param {Number|String} value Valid values are 8, 16 and \"auto\".\n */\n set colorDepth(value) {\n this._colorDepth = value || \"auto\";\n }\n\n /**\n * Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.\n * @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Object} [params.stats] Collects model statistics.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n if (!params.src && !params.las) {\n this.error(\"load() param expected: src or las\");\n return sceneModel; // Return new empty model\n }\n\n const options = {\n las: {\n skip: this._skip,\n fp64: this._fp64,\n colorDepth: this._colorDepth\n }\n };\n\n if (params.src) {\n this._loadModel(params.src, params, options, sceneModel);\n } else {\n const spinner = this.viewer.scene.canvas.spinner;\n spinner.processes++;\n this._parseModel(params.las, params, options, sceneModel).then(() => {\n spinner.processes--;\n }, (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n sceneModel.fire(\"error\", errMsg);\n });\n }\n\n return sceneModel;\n }\n\n _loadModel(src, params, options, sceneModel) {\n const spinner = this.viewer.scene.canvas.spinner;\n spinner.processes++;\n this._dataSource.getLAS(params.src, (arrayBuffer) => {\n this._parseModel(arrayBuffer, params, options, sceneModel).then(() => {\n spinner.processes--;\n }, (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n sceneModel.fire(\"error\", errMsg);\n });\n },\n (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n sceneModel.fire(\"error\", errMsg);\n });\n }\n\n _parseModel(arrayBuffer, params, options, sceneModel) {\n\n function readPositions(attributesPosition) {\n const positionsValue = attributesPosition.value;\n if (params.rotateX) {\n if (positionsValue) {\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n const temp = positionsValue[i + 1];\n positionsValue[i + 1] = positionsValue[i + 2];\n positionsValue[i + 2] = temp;\n }\n }\n }\n return positionsValue;\n }\n\n function readColorsAndIntensities(attributesColor, attributesIntensity) {\n const colors = attributesColor.value;\n const colorSize = attributesColor.size;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const colorsCompressed = new Uint8Array(colorsCompressedSize);\n for (let i = 0, j = 0, k = 0, len = intensities.length; i < len; i++, k += colorSize, j += 4) {\n colorsCompressed[j + 0] = colors[k + 0];\n colorsCompressed[j + 1] = colors[k + 1];\n colorsCompressed[j + 2] = colors[k + 2];\n colorsCompressed[j + 3] = Math.round((intensities[i] / 65536) * 255);\n }\n return colorsCompressed;\n }\n\n function readIntensities(attributesIntensity) {\n const intensities = attributesIntensity.intensity;\n const colorsCompressedSize = intensities.length * 4;\n const colorsCompressed = new Uint8Array(colorsCompressedSize);\n for (let i = 0, j = 0, k = 0, len = intensities.length; i < len; i++, k += 3, j += 4) {\n colorsCompressed[j + 0] = 0;\n colorsCompressed[j + 1] = 0;\n colorsCompressed[j + 2] = 0;\n colorsCompressed[j + 3] = Math.round((intensities[i] / 65536) * 255);\n }\n return colorsCompressed;\n }\n\n return new Promise((resolve, reject) => {\n\n if (sceneModel.destroyed) {\n reject();\n return;\n }\n\n const stats = params.stats || {};\n stats.sourceFormat = \"LAS\";\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 try {\n\n const lasHeader = loadLASHeader(arrayBuffer);\n\n parse(arrayBuffer, LASLoader, options).then((parsedData) => {\n\n const attributes = parsedData.attributes;\n const loaderData = parsedData.loaderData;\n const pointsFormatId = loaderData.pointsFormatId !== undefined ? loaderData.pointsFormatId : -1;\n\n if (!attributes.POSITION) {\n sceneModel.finalize();\n reject(\"No positions found in file\");\n return;\n }\n\n let positionsValue\n let colorsCompressed;\n\n switch (pointsFormatId) {\n case 0:\n positionsValue = readPositions(attributes.POSITION);\n colorsCompressed = readIntensities(attributes.intensity);\n break;\n case 1:\n if (!attributes.intensity) {\n sceneModel.finalize();\n reject(\"No positions found in file\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION);\n colorsCompressed = readIntensities(attributes.intensity);\n break;\n case 2:\n if (!attributes.intensity) {\n sceneModel.finalize();\n reject(\"No positions found in file\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION);\n colorsCompressed = readColorsAndIntensities(attributes.COLOR_0, attributes.intensity);\n break;\n case 3:\n if (!attributes.intensity) {\n sceneModel.finalize();\n reject(\"No positions found in file\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION);\n colorsCompressed = readColorsAndIntensities(attributes.COLOR_0, attributes.intensity);\n break;\n }\n\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n sceneModel.createMesh({\n id: meshId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n }\n /*\n const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);\n const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);\n const meshIds = [];\n\n for (let i = 0, len = pointsChunks.length; i < len; i++) {\n\n const geometryId = `geometryMesh${i}`;\n const meshId = `pointsMesh${i}`;\n meshIds.push(meshId);\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"points\",\n positions: pointsChunks[i],\n colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null\n });\n\n sceneModel.createMesh({\n id: meshId,\n geometryId\n });\n }\n */\n\n const pointsObjectId = params.entityId || math.createUUID();\n\n sceneModel.createEntity({\n id: pointsObjectId,\n meshIds,\n isObject: true\n });\n\n sceneModel.finalize();\n\n if (params.metaModelJSON) {\n const metaModelId = sceneModel.id;\n this.viewer.metaScene.createMetaModel(metaModelId, params.metaModelJSON, options);\n } else if (params.loadMetadata !== false) {\n const rootMetaObjectId = math.createUUID();\n const metadata = {\n projectId: \"\",\n author: \"\",\n createdAt: \"\",\n schema: \"\",\n creatingApplication: \"\",\n metaObjects: [\n {\n id: rootMetaObjectId,\n name: \"Model\",\n type: \"Model\"\n },\n {\n id: pointsObjectId,\n name: \"PointCloud (LAS)\",\n type: \"PointCloud\",\n parent: rootMetaObjectId,\n attributes: lasHeader || {}\n }\n ],\n propertySets: []\n };\n const metaModelId = sceneModel.id;\n this.viewer.metaScene.createMetaModel(metaModelId, metadata, options);\n }\n\n sceneModel.scene.once(\"tick\", () => {\n if (sceneModel.destroyed) {\n return;\n }\n sceneModel.scene.fire(\"modelLoaded\", sceneModel.id); // FIXME: Assumes listeners know order of these two events\n sceneModel.fire(\"loaded\", true, false); // Don't forget the event, for late subscribers\n });\n\n resolve();\n });\n } catch (e) {\n sceneModel.finalize();\n reject(e);\n }\n });\n }\n}\n\nfunction chunkArray(array, chunkSize) {\n if (chunkSize >= array.length) {\n return array;\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\nexport {LASLoaderPlugin};\n", "static": true, "longname": "/home/lindsay/xeolabs/xeokit-sdk-feb14/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js", "access": "public", @@ -21032,7 +21560,7 @@ "lineNumber": 1 }, { - "__docId__": 1235, + "__docId__": 1253, "kind": "variable", "name": "MAX_VERTICES", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js", @@ -21053,7 +21581,7 @@ "ignore": true }, { - "__docId__": 1236, + "__docId__": 1254, "kind": "function", "name": "chunkArray", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js", @@ -21066,7 +21594,7 @@ "importPath": "@xeokit/xeokit-sdk/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js", "importStyle": null, "description": null, - "lineNumber": 555, + "lineNumber": 609, "undocument": true, "params": [ { @@ -21090,7 +21618,7 @@ "ignore": true }, { - "__docId__": 1237, + "__docId__": 1255, "kind": "class", "name": "LASLoaderPlugin", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js", @@ -21100,8 +21628,8 @@ "export": true, "importPath": "@xeokit/xeokit-sdk/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js", "importStyle": "{LASLoaderPlugin}", - "description": "{@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n\n\n\n[[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n\n## Summary\n\n* Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n* Loads lidar point cloud positions, colors and intensities.\n* Supports 32 and 64-bit positions.\n* Supports 8 and 16-bit color depths.\n* Option to load every *n* points.\n* Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n\n## Performance\n\nIf you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\nwith {@link XKTLoaderPlugin}.\n\n## Scene and metadata representation\n\nWhen LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n\nThe first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\nthis Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n\nThe second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\nrepresents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\nby {@link Entity#id} in {@link Scene#objects}.\n\nThe MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\nby {@link MetaModel#id} in {@link MetaScene#metaModels} .\n\nFinally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\nby {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n\n## Usage\n\nIn the example below we'll load the Autzen model from\na [LAS file](/assets/models/las/). Once the model has\nloaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n\n* [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n\n````javascript\nimport {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nviewer.camera.eye = [-2.56, 8.38, 8.27];\nviewer.camera.look = [13.44, 3.31, -14.83];\nviewer.camera.up = [0.10, 0.98, -0.14];\n\nconst lasLoader = new LASLoaderPlugin(viewer, {\n colorDepth: 8, // Default\n fp64: false, // Default\n skip: 1 // Default\n});\n\nconst modelEntity = lasLoader.load({\n id: \"myModel\",\n src: \"../assets/models/las/autzen.laz\"\n});\n\nmodelEntity.on(\"loaded\", () => {\n\n const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n const pointCloudMetaObject = metaModel.rootMetaObject;\n\n const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n\n //...\n});\n````\n\n## Transforming\n\nWe have the option to rotate, scale and translate each LAS model as we load it.\n\nIn the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\nposition it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n\n````javascript\nconst modelEntity = lasLoader.load({\n id: \"myModel\",\n src: \"../assets/models/las/autzen.laz\"\n rotation: [90,0,0],\n scale: [0.5, 0.5, 0.5],\n origin: [1842022, 10, -5173301]\n});\n````\n\n## Configuring a custom data source\n\nBy default, LASLoaderPlugin will load LAS files over HTTP.\n\nIn the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\nobject. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n\n````javascript\nimport {utils} from \"xeokit-sdk.es.js\";\n\nclass MyDataSource {\n\n constructor() {\n }\n\n // Gets the contents of the given LAS file in an arraybuffer\n getLAS(src, ok, error) {\n utils.loadArraybuffer(src,\n (arraybuffer) => {\n ok(arraybuffer);\n },\n (errMsg) => {\n error(errMsg);\n });\n }\n}\n\nconst lasLoader = new LASLoaderPlugin(viewer, {\n dataSource: new MyDataSource()\n});\n\nconst modelEntity = lasLoader.load({\n id: \"myModel\",\n src: \"../assets/models/las/autzen.laz\"\n});\n````", - "lineNumber": 149, + "description": "{@link Viewer} plugin that loads lidar point cloud geometry from LAS files.\n\n\n\n[[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n\n## Summary\n\n* Loads [LAS Formats](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) up to v1.3 from both *.las* and *.laz* files. It does not support LAS v1.4.\n* Loads lidar point cloud positions, colors and intensities.\n* Supports 32 and 64-bit positions.\n* Supports 8 and 16-bit color depths.\n* Option to load every *n* points.\n* Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).\n\n## Performance\n\nIf you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them\nwith {@link XKTLoaderPlugin}.\n\n## Scene and metadata representation\n\nWhen LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.\n\nThe first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,\nthis Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n\nThe second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it\nrepresents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered\nby {@link Entity#id} in {@link Scene#objects}.\n\nThe MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered\nby {@link MetaModel#id} in {@link MetaScene#metaModels} .\n\nFinally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered\nby {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n\n## Usage\n\nIn the example below we'll load the Autzen model from\na [LAS file](/assets/models/las/). Once the model has\nloaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.\n\n* [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_LASLoaderPlugin_Autzen)]\n\n````javascript\nimport {Viewer, LASLoaderPlugin} from \"xeokit-sdk.es.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nviewer.camera.eye = [-2.56, 8.38, 8.27];\nviewer.camera.look = [13.44, 3.31, -14.83];\nviewer.camera.up = [0.10, 0.98, -0.14];\n\nconst lasLoader = new LASLoaderPlugin(viewer, {\n colorDepth: 8, // Default\n fp64: false, // Default\n skip: 1 // Default\n});\n\nconst modelEntity = lasLoader.load({\n id: \"myModel\",\n src: \"../assets/models/las/autzen.laz\"\n});\n\nmodelEntity.on(\"loaded\", () => {\n\n const metaModel = viewer.metaScene.metaModels[modelEntity.id];\n const pointCloudMetaObject = metaModel.rootMetaObject;\n\n const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];\n\n //...\n});\n````\n\n## Transforming\n\nWe have the option to rotate, scale and translate each LAS model as we load it.\n\nIn the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\nposition it at [1842022, 10, -5173301] within xeokit's world coordinate system.\n\n````javascript\nconst modelEntity = lasLoader.load({\n id: \"myModel\",\n src: \"../assets/models/las/autzen.laz\"\n rotation: [90,0,0],\n scale: [0.5, 0.5, 0.5],\n origin: [1842022, 10, -5173301]\n});\n````\n\n## Configuring a custom data source\n\nBy default, LASLoaderPlugin will load LAS files over HTTP.\n\nIn the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source\nobject. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n\n````javascript\nimport {utils} from \"xeokit-sdk.es.js\";\n\nclass MyDataSource {\n\n constructor() {\n }\n\n // Gets the contents of the given LAS file in an arraybuffer\n getLAS(src, ok, error) {\n utils.loadArraybuffer(src,\n (arraybuffer) => {\n ok(arraybuffer);\n },\n (errMsg) => {\n error(errMsg);\n });\n }\n}\n\nconst lasLoader = new LASLoaderPlugin(viewer, {\n dataSource: new MyDataSource()\n});\n\nconst modelEntity = lasLoader.load({\n id: \"myModel\",\n src: \"../assets/models/las/autzen.laz\"\n});\n````\n\n## Showing a LAS/LAZ model in TreeViewPlugin\n\nWe can use the `load()` method's `elementId` parameter\nto make LASLoaderPlugin load the entire model into a single Entity that gets this ID.\n\nIn conjunction with that parameter, we can then use the `load()` method's `metaModelJSON` parameter to create a MetaModel that\ncontains a MetaObject that corresponds to that Entity.\n\nWhen we've done that, then xeokit's {@link TreeViewPlugin} is able to have a node that represents the model and controls\nthe visibility of that Entity (ie. to control the visibility of the entire model).\n\nThe snippet below shows how this is done.\n\n````javascript\nimport {Viewer, LASLoaderPlugin, NavCubePlugin, TreeViewPlugin} from \"../../dist/xeokit-sdk.es.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nnew TreeViewPlugin(viewer, {\n containerElement: document.getElementById(\"treeViewContainer\"),\n hierarchy: \"containment\"\n});\n\nconst lasLoader = new LASLoaderPlugin(viewer);\n\nconst sceneModel = lasLoader.load({ // Creates a SceneModel with ID \"myScanModel\"\n id: \"myScanModel\",\n src: \"../../assets/models/las/Nalls_Pumpkin_Hill.laz\",\n rotation: [-90, 0, 0],\n\n entityId: \"3toKckUfH2jBmd$7uhJHa4\", // Creates an Entity with this ID\n\n metaModelJSON: { // Creates a MetaModel with ID \"myScanModel\"\n \"metaObjects\": [\n {\n \"id\": \"3toKckUfH2jBmd$7uhJHa6\", // Creates this MetaObject with this ID\n \"name\": \"My Project\",\n \"type\": \"Default\",\n \"parent\": null\n },\n {\n \"id\": \"3toKckUfH2jBmd$7uhJHa4\", // Creates this MetaObject with this ID\n \"name\": \"My Scan\",\n \"type\": \"Default\",\n \"parent\": \"3toKckUfH2jBmd$7uhJHa6\"\n }\n ]\n }\n});\n````", + "lineNumber": 203, "since": "2.0.17", "unknown": [ { @@ -21115,7 +21643,7 @@ ] }, { - "__docId__": 1238, + "__docId__": 1256, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21125,7 +21653,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#constructor", "access": "public", "description": "", - "lineNumber": 162, + "lineNumber": 216, "unknown": [ { "tagName": "@constructor", @@ -21214,7 +21742,7 @@ ] }, { - "__docId__": 1243, + "__docId__": 1261, "kind": "get", "name": "dataSource", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21224,7 +21752,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#dataSource", "access": "public", "description": "Gets the custom data source through which the LASLoaderPlugin can load LAS files.\n\nDefault value is {@link LASDefaultDataSource}, which loads via HTTP.", - "lineNumber": 179, + "lineNumber": 233, "type": { "nullable": null, "types": [ @@ -21235,7 +21763,7 @@ } }, { - "__docId__": 1244, + "__docId__": 1262, "kind": "set", "name": "dataSource", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21245,7 +21773,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#dataSource", "access": "public", "description": "Sets a custom data source through which the LASLoaderPlugin can load LAS files.\n\nDefault value is {@link LASDefaultDataSource}, which loads via HTTP.", - "lineNumber": 190, + "lineNumber": 244, "type": { "nullable": null, "types": [ @@ -21256,7 +21784,7 @@ } }, { - "__docId__": 1245, + "__docId__": 1263, "kind": "member", "name": "_dataSource", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21264,7 +21792,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#_dataSource", "access": "private", "description": null, - "lineNumber": 191, + "lineNumber": 245, "undocument": true, "ignore": true, "type": { @@ -21274,7 +21802,7 @@ } }, { - "__docId__": 1246, + "__docId__": 1264, "kind": "get", "name": "skip", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21284,7 +21812,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#skip", "access": "public", "description": "When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.\n\nDefault value is ````1````.", - "lineNumber": 201, + "lineNumber": 255, "unknown": [ { "tagName": "@returns", @@ -21306,7 +21834,7 @@ } }, { - "__docId__": 1247, + "__docId__": 1265, "kind": "set", "name": "skip", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21316,7 +21844,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#skip", "access": "public", "description": "Configures LASLoaderPlugin to load every **n** points.\n\nDefault value is ````1````.", - "lineNumber": 212, + "lineNumber": 266, "params": [ { "nullable": null, @@ -21331,7 +21859,7 @@ ] }, { - "__docId__": 1248, + "__docId__": 1266, "kind": "member", "name": "_skip", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21339,7 +21867,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#_skip", "access": "private", "description": null, - "lineNumber": 213, + "lineNumber": 267, "undocument": true, "ignore": true, "type": { @@ -21349,7 +21877,7 @@ } }, { - "__docId__": 1249, + "__docId__": 1267, "kind": "get", "name": "fp64", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21359,7 +21887,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#fp64", "access": "public", "description": "Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n\nDefault value is ````false````.", - "lineNumber": 223, + "lineNumber": 277, "unknown": [ { "tagName": "@returns", @@ -21381,7 +21909,7 @@ } }, { - "__docId__": 1250, + "__docId__": 1268, "kind": "set", "name": "fp64", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21391,7 +21919,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#fp64", "access": "public", "description": "Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n\nDefault value is ````false````.", - "lineNumber": 234, + "lineNumber": 288, "params": [ { "nullable": null, @@ -21406,7 +21934,7 @@ ] }, { - "__docId__": 1251, + "__docId__": 1269, "kind": "member", "name": "_fp64", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21414,7 +21942,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#_fp64", "access": "private", "description": null, - "lineNumber": 235, + "lineNumber": 289, "undocument": true, "ignore": true, "type": { @@ -21424,7 +21952,7 @@ } }, { - "__docId__": 1252, + "__docId__": 1270, "kind": "get", "name": "colorDepth", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21434,7 +21962,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#colorDepth", "access": "public", "description": "Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n\nDefault value is ````8````.\n\nNote: LAS specification recommends 16 bits.", - "lineNumber": 247, + "lineNumber": 301, "unknown": [ { "tagName": "@returns", @@ -21457,7 +21985,7 @@ } }, { - "__docId__": 1253, + "__docId__": 1271, "kind": "set", "name": "colorDepth", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21467,7 +21995,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#colorDepth", "access": "public", "description": "Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.\n\nDefault value is ````8````.\n\nNote: LAS specification recommends 16 bits.", - "lineNumber": 260, + "lineNumber": 314, "params": [ { "nullable": null, @@ -21483,7 +22011,7 @@ ] }, { - "__docId__": 1254, + "__docId__": 1272, "kind": "member", "name": "_colorDepth", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21491,7 +22019,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#_colorDepth", "access": "private", "description": null, - "lineNumber": 261, + "lineNumber": 315, "undocument": true, "ignore": true, "type": { @@ -21501,7 +22029,7 @@ } }, { - "__docId__": 1255, + "__docId__": 1273, "kind": "method", "name": "load", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21511,7 +22039,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#load", "access": "public", "description": "Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.", - "lineNumber": 280, + "lineNumber": 334, "unknown": [ { "tagName": "@returns", @@ -21685,7 +22213,7 @@ } }, { - "__docId__": 1256, + "__docId__": 1274, "kind": "method", "name": "_loadModel", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21695,7 +22223,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#_loadModel", "access": "private", "description": null, - "lineNumber": 321, + "lineNumber": 375, "undocument": true, "ignore": true, "params": [ @@ -21727,7 +22255,7 @@ "return": null }, { - "__docId__": 1257, + "__docId__": 1275, "kind": "method", "name": "_parseModel", "memberof": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin", @@ -21737,7 +22265,7 @@ "longname": "src/plugins/LASLoaderPlugin/LASLoaderPlugin.js~LASLoaderPlugin#_parseModel", "access": "private", "description": null, - "lineNumber": 340, + "lineNumber": 394, "undocument": true, "ignore": true, "params": [ @@ -21773,7 +22301,7 @@ } }, { - "__docId__": 1258, + "__docId__": 1276, "kind": "file", "name": "src/plugins/LASLoaderPlugin/index.js", "content": "export * from \"./LASLoaderPlugin.js\";", @@ -21784,7 +22312,7 @@ "lineNumber": 1 }, { - "__docId__": 1259, + "__docId__": 1277, "kind": "file", "name": "src/plugins/NavCubePlugin/CubeTextureCanvas.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\n\n/**\n * @private\n */\nfunction CubeTextureCanvas(viewer, navCubeScene, cfg = {}) {\n\n const cubeColor = \"lightgrey\";\n const cubeHighlightColor = cfg.hoverColor || \"rgba(0,0,0,0.4)\";\n const textColor = cfg.textColor || \"black\";\n\n const height = 500;\n const width = height + (height / 3);\n const scale = width / 24;\n\n const facesZUp = [\n {boundary: [6, 6, 6, 6], color: cfg.frontColor || cfg.color || \"#55FF55\"},\n {boundary: [18, 6, 6, 6], color: cfg.backColor || cfg.color || \"#55FF55\"},\n {boundary: [12, 6, 6, 6], color: cfg.rightColor || cfg.color || \"#FF5555\"},\n {boundary: [0, 6, 6, 6], color: cfg.leftColor || cfg.color || \"#FF5555\"},\n {boundary: [6, 0, 6, 6], color: cfg.topColor || cfg.color || \"#7777FF\"},\n {boundary: [6, 12, 6, 6], color: cfg.bottomColor || cfg.color || \"#7777FF\"}\n ];\n\n const areasZUp = [\n {label: \"NavCube.front\", boundaries: [[7, 7, 4, 4]], dir: [0, 1, 0], up: [0, 0, 1]},\n {label: \"NavCube.back\", boundaries: [[19, 7, 4, 4]], dir: [0, -1, 0], up: [0, 0, 1]},\n {label: \"NavCube.right\", boundaries: [[13, 7, 4, 4]], dir: [-1, 0, 0], up: [0, 0, 1]},\n {label: \"NavCube.left\", boundaries: [[1, 7, 4, 4]], dir: [1, 0, 0], up: [0, 0, 1]},\n {label: \"NavCube.top\", boundaries: [[7, 1, 4, 4]], dir: [0, 0, -1], up: [0, 1, 0]},\n {label: \"NavCube.bottom\", boundaries: [[7, 13, 4, 4]], dir: [0, 0, 1], up: [0, -1, 0]},\n {boundaries: [[7, 5, 4, 2]], dir: [0, 1, -1], up: [0, 1, 1]},\n {boundaries: [[1, 6, 4, 1], [6, 1, 1, 4]], dir: [1, 0, -1], up: [1, 0, 1]},\n {boundaries: [[7, 0, 4, 1], [19, 6, 4, 1]], dir: [0, -1, -1], up: [0, -1, 1]},\n {boundaries: [[13, 6, 4, 1], [11, 1, 1, 4]], dir: [-1, 0, -1], up: [-1, 0, 1]},\n {boundaries: [[7, 11, 4, 2]], dir: [0, 1, 1], up: [0, -1, 1]},\n {boundaries: [[1, 11, 4, 1], [6, 13, 1, 4]], dir: [1, 0, 1], up: [-1, 0, 1]},\n {boundaries: [[7, 17, 4, 1], [19, 11, 4, 1]], dir: [0, -1, 1], up: [0, 1, 1]},\n {boundaries: [[13, 11, 4, 1], [11, 13, 1, 4]], dir: [-1, 0, 1], up: [1, 0, 1]},\n {boundaries: [[5, 7, 2, 4]], dir: [1, 1, 0], up: [0, 0, 1]},\n {boundaries: [[11, 7, 2, 4]], dir: [-1, 1, 0], up: [0, 0, 1]},\n {boundaries: [[17, 7, 2, 4]], dir: [-1, -1, 0], up: [0, 0, 1]},\n {boundaries: [[0, 7, 1, 4], [23, 7, 1, 4]], dir: [1, -1, 0], up: [0, 0, 1]},\n {boundaries: [[5, 11, 2, 2]], dir: [1, 1, 1], up: [-1, -1, 1]},\n {boundaries: [[23, 11, 1, 1], [6, 17, 1, 1], [0, 11, 1, 1]], dir: [1, -1, 1], up: [-1, 1, 1]},\n {boundaries: [[5, 5, 2, 2]], dir: [1, 1, -1], up: [1, 1, 1]},\n {boundaries: [[11, 17, 1, 1], [17, 11, 2, 1]], dir: [-1, -1, 1], up: [1, 1, 1]},\n {boundaries: [[17, 6, 2, 1], [11, 0, 1, 1]], dir: [-1, -1, -1], up: [-1, -1, 1]},\n {boundaries: [[11, 11, 2, 2]], dir: [-1, 1, 1], up: [1, -1, 1]},\n {boundaries: [[0, 6, 1, 1], [6, 0, 1, 1], [23, 6, 1, 1]], dir: [1, -1, -1], up: [1, -1, 1]},\n {boundaries: [[11, 5, 2, 2]], dir: [-1, 1, -1], up: [-1, 1, 1]}\n ];\n\n const facesYUp = [\n {boundary: [6, 6, 6, 6], color: cfg.frontColor || cfg.color || \"#55FF55\"},\n {boundary: [18, 6, 6, 6], color: cfg.backColor || cfg.color || \"#55FF55\"},\n {boundary: [12, 6, 6, 6], color: cfg.rightColor || cfg.color || \"#FF5555\"},\n {boundary: [0, 6, 6, 6], color: cfg.leftColor || cfg.color || \"#FF5555\"},\n {boundary: [6, 0, 6, 6], color: cfg.topColor || cfg.color || \"#7777FF\"},\n {boundary: [6, 12, 6, 6], color: cfg.bottomColor || cfg.color || \"#7777FF\"}\n ];\n\n const areasYUp = [\n\n // Faces\n\n {yUp: \"\", label: \"NavCube.front\", boundaries: [[7, 7, 4, 4]], dir: [0, 0, -1], up: [0, 1, 0]},\n {label: \"NavCube.back\", boundaries: [[19, 7, 4, 4]], dir: [0, 0, 1], up: [0, 1, 0]},\n {label: \"NavCube.right\", boundaries: [[13, 7, 4, 4]], dir: [-1, 0, 0], up: [0, 1, 0]},\n {label: \"NavCube.left\", boundaries: [[1, 7, 4, 4]], dir: [1, 0, 0], up: [0, 1, 0]},\n {label: \"NavCube.top\", boundaries: [[7, 1, 4, 4]], dir: [0, -1, 0], up: [0, 0, -1]},\n {label: \"NavCube.bottom\", boundaries: [[7, 13, 4, 4]], dir: [0, 1, 0], up: [0, 0, 1]},\n {boundaries: [[7, 5, 4, 2]], dir: [0, -0.7071, -0.7071], up: [0, 0.7071, -0.7071]}, // Top-front edge\n {boundaries: [[1, 6, 4, 1], [6, 1, 1, 4]], dir: [1, -1, 0], up: [1, 1, 0]}, // Top-left edge\n {boundaries: [[7, 0, 4, 1], [19, 6, 4, 1]], dir: [0, -0.7071, 0.7071], up: [0, 0.7071, 0.7071]}, // Top-back edge\n {boundaries: [[13, 6, 4, 1], [11, 1, 1, 4]], dir: [-1, -1, 0], up: [-1, 1, 0]}, // Top-right edge\n {boundaries: [[7, 11, 4, 2]], dir: [0, 1, -1], up: [0, 1, 1]}, // Bottom-front edge\n {boundaries: [[1, 11, 4, 1], [6, 13, 1, 4]], dir: [1, 1, 0], up: [-1, 1, 0]}, // Bottom-left edge\n {boundaries: [[7, 17, 4, 1], [19, 11, 4, 1]], dir: [0, 1, 1], up: [0, 1, -1]}, // Bottom-back edge\n {boundaries: [[13, 11, 4, 1], [11, 13, 1, 4]], dir: [-1, 1, 0], up: [1, 1, 0]}, // Bottom-right edge\n {boundaries: [[5, 7, 2, 4]], dir: [1, 0, -1], up: [0, 1, 0]},// Front-left edge\n {boundaries: [[11, 7, 2, 4]], dir: [-1, 0, -1], up: [0, 1, 0]}, // Front-right edge\n {boundaries: [[17, 7, 2, 4]], dir: [-1, 0, 1], up: [0, 1, 0]},// Back-right edge\n {boundaries: [[0, 7, 1, 4], [23, 7, 1, 4]], dir: [1, 0, 1], up: [0, 1, 0]},// Back-left edge\n {boundaries: [[5, 11, 2, 2]], \"dir\": [0.5, 0.7071, -0.5], \"up\": [-0.5, 0.7071, 0.5]}, // Bottom-left-front corner\n {boundaries: [[23, 11, 1, 1], [6, 17, 1, 1], [0, 11, 1, 1]],\"dir\": [0.5, 0.7071, 0.5],\"up\": [-0.5, 0.7071, -0.5]},// Bottom-back-left corner\n {boundaries: [[5, 5, 2, 2]], \"dir\": [0.5, -0.7071, -0.5], \"up\": [0.5, 0.7071, -0.5]}, // Left-front-top corner\n {boundaries: [[11, 17, 1, 1], [17, 11, 2, 1]], \"dir\": [-0.5, 0.7071, 0.5], \"up\": [0.5, 0.7071, -0.5]}, // Bottom-back-right corner\n {boundaries: [[17, 6, 2, 1], [11, 0, 1, 1]], \"dir\": [-0.5, -0.7071, 0.5], \"up\": [-0.5, 0.7071, 0.5]}, // Top-back-right corner\n {boundaries: [[11, 11, 2, 2]], \"dir\": [-0.5, 0.7071, -0.5], \"up\": [0.5, 0.7071, 0.5]}, // Bottom-front-right corner\n {boundaries: [[0, 6, 1, 1], [6, 0, 1, 1], [23, 6, 1, 1]], \"dir\": [0.5, -0.7071, 0.5], \"up\": [0.5, 0.7071, 0.5]},// Top-back-left corner\n {boundaries: [[11, 5, 2, 2]], \"dir\": [-0.5, -0.7071, -0.5], \"up\": [-0.5, 0.7071, -0.5]}// Top-front-right corner\n ];\n\n for (let i = 0, len = areasZUp.length; i < len; i++) {\n math.normalizeVec3(areasZUp[i].dir, areasZUp[i].dir);\n math.normalizeVec3(areasZUp[i].up, areasZUp[i].up);\n }\n\n for (let i = 0, len = areasYUp.length; i < len; i++) {\n math.normalizeVec3(areasYUp[i].dir, areasYUp[i].dir);\n math.normalizeVec3(areasYUp[i].up, areasYUp[i].up);\n }\n\n var faces = facesYUp;\n var areas = areasYUp;\n\n this._textureCanvas = document.createElement('canvas');\n this._textureCanvas.width = width;\n this._textureCanvas.height = height;\n this._textureCanvas.style.width = width + \"px\";\n this._textureCanvas.style.height = height + \"px\";\n this._textureCanvas.style.padding = \"0\";\n this._textureCanvas.style.margin = \"0\";\n this._textureCanvas.style.top = \"0\";\n this._textureCanvas.style.background = cubeColor;\n this._textureCanvas.style.position = \"absolute\";\n this._textureCanvas.style.opacity = \"1.0\";\n this._textureCanvas.style.visibility = \"hidden\";\n this._textureCanvas.style[\"z-index\"] = 2000000;\n\n const body = document.getElementsByTagName(\"body\")[0];\n body.appendChild(this._textureCanvas);\n\n const context = this._textureCanvas.getContext(\"2d\");\n\n let zUp = false;\n\n function paint() {\n\n for (let i = 0, len = facesZUp.length; i < len; i++) {\n const face = facesZUp[i];\n const boundary = face.boundary;\n const xmin = Math.round(boundary[0] * scale);\n const ymin = Math.round(boundary[1] * scale);\n const width = Math.round(boundary[2] * scale);\n const height = Math.round(boundary[3] * scale);\n context.fillStyle = face.color;\n context.fillRect(xmin, ymin, width, height);\n }\n\n for (let i = 0, len = areas.length; i < len; i++) {\n let xmin;\n let ymin;\n let width;\n let height;\n const area = areas[i];\n\n const boundaries = area.boundaries;\n for (var j = 0, lenj = boundaries.length; j < lenj; j++) {\n const boundary = boundaries[j];\n xmin = Math.round(boundary[0] * scale);\n ymin = Math.round(boundary[1] * scale);\n width = Math.round(boundary[2] * scale);\n height = Math.round(boundary[3] * scale);\n if (area.highlighted) {\n context.fillStyle = area.highlighted ? cubeHighlightColor : (area.color || cubeColor);\n context.fillRect(xmin, ymin, width, height);\n }\n }\n if (area.label) {\n context.fillStyle = textColor;\n context.font = '60px sans-serif';\n context.textAlign = \"center\";\n var xcenter = xmin + (width * 0.5);\n var ycenter = ymin + (height * 0.7);\n context.fillText(translateLabel(area.label), xcenter, ycenter, 80);\n }\n }\n\n navCubeScene.glRedraw();\n }\n\n const translateLabel = (function () {\n\n const swizzleYUp = {\n \"NavCube.front\": \"NavCube.front\",\n \"NavCube.back\": \"NavCube.back\",\n \"NavCube.right\": \"NavCube.right\",\n \"NavCube.left\": \"NavCube.left\",\n \"NavCube.top\": \"NavCube.top\",\n \"NavCube.bottom\": \"NavCube.bottom\"\n };\n\n const swizzleZUp = {\n \"NavCube.front\": \"NavCube.front\",\n \"NavCube.back\": \"NavCube.back\",\n \"NavCube.right\": \"NavCube.right\",\n \"NavCube.left\": \"NavCube.left\",\n \"NavCube.top\": \"NavCube.top\",\n \"NavCube.bottom\": \"NavCube.bottom\"\n };\n\n const defaultLabels = {\n \"NavCube.front\": \"FRONT\",\n \"NavCube.back\": \"BACK\",\n \"NavCube.right\": \"RIGHT\",\n \"NavCube.left\": \"LEFT\",\n \"NavCube.top\": \"TOP\",\n \"NavCube.bottom\": \"BOTTOM\"\n };\n\n return function (key) {\n const swizzle = zUp ? swizzleZUp : swizzleYUp;\n const swizzledKey = swizzle ? swizzle[key] : null;\n if (swizzledKey) {\n return viewer.localeService.translate(swizzledKey) || defaultLabels[swizzledKey] || swizzledKey;\n }\n return key;\n };\n })();\n\n this.setZUp = function () {\n zUp = true;\n faces = facesZUp;\n areas = areasZUp;\n this.clear();\n };\n\n this.setYUp = function () {\n zUp = false;\n faces = facesYUp;\n areas = areasYUp;\n this.clear();\n };\n\n this.clear = function () {\n context.fillStyle = cubeColor;\n context.fillRect(0, 0, width, height);\n for (var i = 0, len = areas.length; i < len; i++) {\n const area = areas[i];\n area.highlighted = false;\n }\n paint();\n };\n\n this.getArea = function (uv) {\n const s = uv[0] * width;\n const t = height - (uv[1] * height); // Correct for our texture Y-flipping\n for (var i = 0, len = areas.length; i < len; i++) {\n const area = areas[i];\n const boundaries = area.boundaries;\n for (var j = 0, lenj = boundaries.length; j < lenj; j++) {\n const boundary = boundaries[j];\n if (s >= (boundary[0] * scale) && s <= ((boundary[0] + boundary[2]) * scale) && t >= (boundary[1] * scale) && t <= ((boundary[1] + boundary[3]) * scale)) {\n return i;\n }\n }\n }\n return -1;\n };\n\n this.setAreaHighlighted = function (areaId, highlighted) {\n var area = areas[areaId];\n if (!area) {\n throw \"Area not found: \" + areaId;\n }\n area.highlighted = !!highlighted;\n paint();\n };\n\n this.getAreaDir = function (areaId) {\n var area = areas[areaId];\n if (!area) {\n throw \"Unknown area: \" + areaId;\n }\n return area.dir;\n };\n\n this.getAreaUp = function (areaId) {\n var area = areas[areaId];\n if (!area) {\n throw \"Unknown area: \" + areaId;\n }\n return area.up;\n };\n\n this.getImage = function () {\n return this._textureCanvas;\n };\n\n this.destroy = function () {\n if (this._textureCanvas) {\n this._textureCanvas.parentNode.removeChild(this._textureCanvas);\n this._textureCanvas = null;\n }\n };\n}\n\nexport {CubeTextureCanvas};\n", @@ -21795,7 +22323,7 @@ "lineNumber": 1 }, { - "__docId__": 1260, + "__docId__": 1278, "kind": "function", "name": "CubeTextureCanvas", "memberof": "src/plugins/NavCubePlugin/CubeTextureCanvas.js", @@ -21836,7 +22364,7 @@ "return": null }, { - "__docId__": 1261, + "__docId__": 1279, "kind": "file", "name": "src/plugins/NavCubePlugin/NavCubePlugin.js", "content": "import {Plugin} from \"../../viewer/Plugin.js\";\nimport {math} from \"../../viewer/scene/math/math.js\";\nimport {Scene} from \"../../viewer/scene/scene/Scene.js\";\nimport {DirLight} from \"./../../viewer/scene/lights/DirLight.js\";\nimport {Mesh} from \"./../../viewer/scene/mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {PhongMaterial} from \"../../viewer/scene/materials/PhongMaterial.js\";\nimport {Texture} from \"../../viewer/scene/materials/Texture.js\";\nimport {buildCylinderGeometry} from \"../../viewer/scene/geometry/builders/buildCylinderGeometry.js\";\nimport {CubeTextureCanvas} from \"./CubeTextureCanvas.js\";\nimport {ClampToEdgeWrapping} from \"../../viewer/scene/constants/constants.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * {@link Viewer} plugin that lets us look at the entire {@link Scene} from along a chosen axis or diagonal.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/index.html#gizmos_NavCubePlugin)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#gizmos_NavCubePlugin)]\n *\n * ## Overview\n *\n * * Rotating the NavCube causes the Viewer's {@link Camera} to orbit its current\n * point-of-interest. Conversely, orbiting the Camera causes the NavCube to rotate accordingly.\n * * The faces of the NavCube are aligned with the Viewer's {@link Scene}'s World-space coordinate axis. Clicking on a face moves\n * the Camera to look at the entire Scene along the corresponding axis. Clicking on an edge or a corner looks at\n * the entire Scene along a diagonal.\n * * The NavCube can be configured to either jump or fly the Camera to each new position. We can configure how tightly the\n * NavCube fits the Scene to view, and when flying, we can configure how fast it flies. We can also configure whether the\n * NavCube fits all objects to view, or just the currently visible objects. See below for a usage example.\n * * Clicking the NavCube also sets {@link CameraControl#pivotPos} to the center of the fitted objects.\n *\n * ## Usage\n *\n * In the example below, we'll create a Viewer and add a NavCubePlugin, which will create a NavCube gizmo in the canvas\n * with the given ID. Then we'll use the {@link XKTLoaderPlugin} to load a model into the Viewer's Scene. We can then\n * use the NavCube to look at the model along each axis or diagonal.\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin, NavCubePlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [-3.93, 2.85, 27.01];\n * viewer.camera.look = [4.40, 3.72, 8.89];\n * viewer.camera.up = [-0.01, 0.99, 0.03];\n *\n * const navCube = new NavCubePlugin(viewer, {\n *\n * canvasID: \"myNavCubeCanvas\",\n *\n * visible: true, // Initially visible (default)\n *\n * cameraFly: true, // Fly camera to each selected axis/diagonal\n * cameraFitFOV: 45, // How much field-of-view the scene takes once camera has fitted it to view\n * cameraFlyDuration: 0.5,// How long (in seconds) camera takes to fly to each new axis/diagonal\n *\n * fitVisible: false, // Fit whole scene, including invisible objects (default)\n *\n * synchProjection: false // Keep NavCube in perspective projection, even when camera switches to ortho (default)\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Duplex.ifc.xkt\",\n * edges: true\n * });\n * ````\n */\nclass NavCubePlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg NavCubePlugin configuration.\n * @param {String} [cfg.id=\"NavCube\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} [cfg.canvasId] ID of an existing HTML canvas to display the NavCube - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLCanvasElement} [cfg.canvasElement] Reference of an existing HTML canvas to display the NavCube - either this or canvasId is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {Boolean} [cfg.visible=true] Initial visibility.\n * @param {Boolean} [cfg.shadowVisible=true] Whether the shadow of the cube is visible.\n * @param {String} [cfg.cameraFly=true] Whether the {@link Camera} flies or jumps to each selected axis or diagonal.\n * @param {String} [cfg.cameraFitFOV=45] How much of the field-of-view, in degrees, that the 3D scene should fill the {@link Canvas} when the {@link Camera} moves to an axis or diagonal.\n * @param {String} [cfg.cameraFlyDuration=0.5] When flying the {@link Camera} to each new axis or diagonal, how long, in seconds, that the Camera takes to get there.\n * @param {String} [cfg.color=\"lightgrey\"] Custom uniform color for the faces of the NavCube.\n * @param {String} [cfg.frontColor=\"#55FF55\"] Custom color for the front face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.backColor=\"#55FF55\"] Custom color for the back face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.leftColor=\"#FF5555\"] Custom color for the left face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.rightColor=\"#FF5555\"] Custom color for the right face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.topColor=\"#5555FF\"] Custom color for the top face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.bottomColor=\"#5555FF\"] Custom color for the bottom face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.hoverColor=\"rgba(0,0,0,0.4)\"] Custom color for highlighting regions on the NavCube as we hover the pointer over them.\n * @param {String} [cfg.textColor=\"black\"] Custom text color for labels of the NavCube.\n * @param {Boolean} [cfg.fitVisible=false] Sets whether the axis, corner and edge-aligned views will fit the\n * view to the entire {@link Scene} or just to visible object-{@link Entity}s. Entitys are visible objects when {@link Entity#isObject} and {@link Entity#visible} are both ````true````.\n * @param {Boolean} [cfg.synchProjection=false] Sets whether the NavCube switches between perspective and orthographic projections in synchrony with the {@link Camera}. When ````false````, the NavCube will always be rendered with perspective projection.\n * @param {Boolean} [cfg.isProjectNorth] sets whether the NavCube switches between true north and project north - using the project north offset angle.\n * @param {number} [cfg.projectNorthOffsetAngle] sets the NavCube project north offset angle - when the {@link isProjectNorth} is true.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"NavCube\", viewer, cfg);\n\n viewer.navCube = this;\n\n var visible = true;\n\n try {\n this._navCubeScene = new Scene(viewer, {\n canvasId: cfg.canvasId,\n canvasElement: cfg.canvasElement,\n transparent: true\n });\n\n this._navCubeCanvas = this._navCubeScene.canvas.canvas;\n\n this._navCubeScene.input.keyboardEnabled = false; // Don't want keyboard input in the NavCube\n\n } catch (error) {\n this.error(error);\n return;\n }\n\n const navCubeScene = this._navCubeScene;\n\n navCubeScene.clearLights();\n\n new DirLight(navCubeScene, {dir: [0.4, -0.4, 0.8], color: [0.8, 1.0, 1.0], intensity: 1.0, space: \"view\"});\n new DirLight(navCubeScene, {dir: [-0.8, -0.3, -0.4], color: [0.8, 0.8, 0.8], intensity: 1.0, space: \"view\"});\n new DirLight(navCubeScene, {dir: [0.8, -0.6, -0.8], color: [1.0, 1.0, 1.0], intensity: 1.0, space: \"view\"});\n\n this._navCubeCamera = navCubeScene.camera;\n this._navCubeCamera.ortho.scale = 7.0;\n this._navCubeCamera.ortho.near = 0.1;\n this._navCubeCamera.ortho.far = 2000;\n\n navCubeScene.edgeMaterial.edgeColor = [0.2, 0.2, 0.2];\n navCubeScene.edgeMaterial.edgeAlpha = 0.6;\n\n this._zUp = Boolean(viewer.camera.zUp);\n\n var self = this;\n\n this.setIsProjectNorth(cfg.isProjectNorth);\n this.setProjectNorthOffsetAngle(cfg.projectNorthOffsetAngle);\n\n const rotateTrueNorth = (function () {\n const trueNorthMatrix = math.mat4();\n return function (dir, vec, dest) {\n math.identityMat4(trueNorthMatrix);\n math.rotationMat4v(dir * self._projectNorthOffsetAngle * math.DEGTORAD, [0, 1, 0], trueNorthMatrix);\n return math.transformVec3(trueNorthMatrix, vec, dest)\n }\n }())\n\n this._synchCamera = (function () {\n var matrix = math.rotationMat4c(-90 * math.DEGTORAD, 1, 0, 0);\n var eyeLookVec = math.vec3();\n var eyeLookVecCube = math.vec3();\n var upCube = math.vec3();\n return function () {\n var eye = viewer.camera.eye;\n var look = viewer.camera.look;\n var up = viewer.camera.up;\n eyeLookVec = math.mulVec3Scalar(math.normalizeVec3(math.subVec3(eye, look, eyeLookVec)), 5);\n\n if (self._isProjectNorth && self._projectNorthOffsetAngle) {\n eyeLookVec = rotateTrueNorth(-1, eyeLookVec, tempVec3a);\n up = rotateTrueNorth(-1, up, tempVec3b);\n }\n\n if (self._zUp) { // +Z up\n math.transformVec3(matrix, eyeLookVec, eyeLookVecCube);\n math.transformVec3(matrix, up, upCube);\n self._navCubeCamera.look = [0, 0, 0];\n self._navCubeCamera.eye = math.transformVec3(matrix, eyeLookVec, eyeLookVecCube);\n self._navCubeCamera.up = math.transformPoint3(matrix, up, upCube);\n } else { // +Y up\n self._navCubeCamera.look = [0, 0, 0];\n self._navCubeCamera.eye = eyeLookVec;\n self._navCubeCamera.up = up;\n }\n };\n }());\n\n this._cubeTextureCanvas = new CubeTextureCanvas(viewer, navCubeScene, cfg);\n\n this._cubeSampler = new Texture(navCubeScene, {\n image: this._cubeTextureCanvas.getImage(),\n flipY: true,\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping\n });\n\n this._cubeMesh = new Mesh(navCubeScene, {\n geometry: new ReadableGeometry(navCubeScene, {\n primitive: \"triangles\",\n normals: [\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n 0, 1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1,\n 0, 0, -1, 0, 0, -1, 0, 0, -1\n ],\n positions: [\n 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1,\n 1, -1, -1, 1, 1, -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1,\n 1, 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1\n ],\n uv: [\n 0.5, 0.6666, 0.25, 0.6666, 0.25, 0.3333, 0.5, 0.3333, 0.5, 0.6666, 0.5, 0.3333, 0.75, 0.3333, 0.75, 0.6666,\n 0.5, 0.6666, 0.5, 1, 0.25, 1, 0.25, 0.6666, 0.25, 0.6666, 0.0, 0.6666, 0.0, 0.3333, 0.25, 0.3333,\n 0.25, 0, 0.50, 0, 0.50, 0.3333, 0.25, 0.3333, 0.75, 0.3333, 1.0, 0.3333, 1.0, 0.6666, 0.75, 0.6666\n ],\n indices: [\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16,\n 18, 19, 20, 21, 22, 20, 22, 23\n ]\n }),\n material: new PhongMaterial(navCubeScene, {\n diffuse: [0.4, 0.4, 0.4],\n specular: [0.4, 0.4, 0.4],\n emissive: [.6, .6, .6],\n diffuseMap: this._cubeSampler,\n emissiveMap: this._cubeSampler\n }),\n visible: !!visible,\n edges: true\n });\n\n this._shadow = cfg.shadowVisible === false ? null : new Mesh(navCubeScene, {\n geometry: new ReadableGeometry(navCubeScene, buildCylinderGeometry({\n center: [0, 0, 0],\n radiusTop: 0.001,\n radiusBottom: 1.4,\n height: 0.01,\n radialSegments: 20,\n heightSegments: 1,\n openEnded: true\n })),\n material: new PhongMaterial(navCubeScene, {\n diffuse: [0.0, 0.0, 0.0], specular: [0, 0, 0], emissive: [0.0, 0.0, 0.0], alpha: 0.5\n }),\n position: [0, -1.5, 0],\n visible: !!visible,\n pickable: false,\n backfaces: false\n });\n\n this._onCameraMatrix = viewer.camera.on(\"matrix\", this._synchCamera);\n this._onCameraWorldAxis = viewer.camera.on(\"worldAxis\", () => {\n if (viewer.camera.zUp) {\n this._zUp = true;\n this._cubeTextureCanvas.setZUp();\n this._repaint();\n this._synchCamera();\n } else if (viewer.camera.yUp) {\n this._zUp = false;\n this._cubeTextureCanvas.setYUp();\n this._repaint();\n this._synchCamera();\n }\n });\n this._onCameraFOV = viewer.camera.perspective.on(\"fov\", (fov) => {\n if (this._synchProjection) {\n this._navCubeCamera.perspective.fov = fov;\n }\n });\n this._onCameraProjection = viewer.camera.on(\"projection\", (projection) => {\n if (this._synchProjection) {\n this._navCubeCamera.projection = (projection === \"ortho\" || projection === \"perspective\") ? projection : \"perspective\";\n }\n });\n\n var lastAreaId = -1;\n\n function actionMove(posX, posY) {\n var yawInc = (posX - lastX) * -sensitivity;\n var pitchInc = (posY - lastY) * -sensitivity;\n yaw -= yawInc;\n pitch -= pitchInc;\n if (minPitch !== undefined && pitch < minPitch) {\n pitch = minPitch;\n }\n if (maxPitch !== undefined && pitch > maxPitch) {\n pitch = maxPitch;\n }\n viewer.camera.orbitYaw(yawInc);\n viewer.camera.orbitPitch(-pitchInc);\n lastX = posX;\n lastY = posY;\n }\n\n function getCoordsWithinElement(event) {\n var coords = [0, 0];\n if (!event) {\n event = window.event;\n coords[0] = event.x;\n coords[1] = event.y;\n } else {\n var element = event.target;\n var totalOffsetLeft = 0;\n var totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n coords[0] = event.pageX - totalOffsetLeft;\n coords[1] = event.pageY - totalOffsetTop;\n }\n return coords;\n }\n\n {\n var downX = null;\n var downY = null;\n var down = false;\n var over = false;\n\n var yaw = 0;\n var pitch = 0;\n var minPitch = null;\n var maxPitch = null;\n var sensitivity = 0.5;\n\n var lastX;\n var lastY;\n\n\n self._navCubeCanvas.addEventListener(\"mouseenter\", self._onMouseEnter = function (e) {\n over = true;\n });\n\n\n self._navCubeCanvas.addEventListener(\"mouseleave\", self._onMouseLeave = function (e) {\n over = false;\n });\n\n self._navCubeCanvas.addEventListener(\"mousedown\", self._onMouseDown = function (e) {\n if (e.which !== 1) {\n return;\n }\n downX = e.x;\n downY = e.y;\n lastX = e.clientX;\n lastY = e.clientY;\n var canvasPos = getCoordsWithinElement(e);\n var hit = navCubeScene.pick({\n canvasPos: canvasPos\n });\n if (hit) {\n down = true;\n\n } else {\n down = false;\n }\n });\n\n document.addEventListener(\"mouseup\", self._onMouseUp = function (e) {\n if (e.which !== 1) {// Left button\n return;\n }\n down = false;\n if (downX === null) {\n return;\n }\n var canvasPos = getCoordsWithinElement(e);\n var hit = navCubeScene.pick({\n canvasPos: canvasPos,\n pickSurface: true\n });\n if (hit) {\n if (hit.uv) {\n var areaId = self._cubeTextureCanvas.getArea(hit.uv);\n if (areaId >= 0) {\n document.body.style.cursor = \"pointer\";\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n if (areaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(areaId, true);\n lastAreaId = areaId;\n self._repaint();\n if (e.x < (downX - 3) || e.x > (downX + 3) || e.y < (downY - 3) || e.y > (downY + 3)) {\n return;\n }\n var dir = self._cubeTextureCanvas.getAreaDir(areaId);\n if (dir) {\n var up = self._cubeTextureCanvas.getAreaUp(areaId);\n if (self._isProjectNorth && self._projectNorthOffsetAngle) {\n dir = rotateTrueNorth(+1, dir, tempVec3a);\n up = rotateTrueNorth(+1, up, tempVec3b);\n }\n flyTo(dir, up, function () {\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n document.body.style.cursor = \"pointer\";\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n if (areaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(areaId, false);\n lastAreaId = -1;\n self._repaint();\n }\n });\n }\n }\n }\n }\n }\n });\n\n document.addEventListener(\"mousemove\", self._onMouseMove = function (e) {\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n if (e.buttons === 1 && !down) {\n return;\n }\n if (down) {\n var posX = e.clientX;\n var posY = e.clientY;\n document.body.style.cursor = \"move\";\n actionMove(posX, posY);\n return;\n }\n if (!over) {\n return;\n }\n var canvasPos = getCoordsWithinElement(e);\n var hit = navCubeScene.pick({\n canvasPos: canvasPos,\n pickSurface: true\n });\n if (hit) {\n if (hit.uv) {\n document.body.style.cursor = \"pointer\";\n var areaId = self._cubeTextureCanvas.getArea(hit.uv);\n if (areaId === lastAreaId) {\n return;\n }\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n }\n if (areaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(areaId, true);\n self._repaint();\n lastAreaId = areaId;\n }\n }\n } else {\n document.body.style.cursor = \"default\";\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n }\n });\n\n var flyTo = (function () {\n var center = math.vec3();\n return function (dir, up, ok) {\n var aabb = self._fitVisible ? viewer.scene.getAABB(viewer.scene.visibleObjectIds) : viewer.scene.aabb;\n var diag = math.getAABB3Diag(aabb);\n math.getAABB3Center(aabb, center);\n var dist = Math.abs(diag / Math.tan(self._cameraFitFOV * math.DEGTORAD));\n viewer.cameraControl.pivotPos = center;\n if (self._cameraFly) {\n viewer.cameraFlight.flyTo({\n look: center,\n eye: [center[0] - (dist * dir[0]), center[1] - (dist * dir[1]), center[2] - (dist * dir[2])],\n up: up || [0, 1, 0],\n orthoScale: diag * 1.1,\n fitFOV: self._cameraFitFOV,\n duration: self._cameraFlyDuration\n }, ok);\n } else {\n viewer.cameraFlight.jumpTo({\n look: center,\n eye: [center[0] - (dist * dir[0]), center[1] - (dist * dir[1]), center[2] - (dist * dir[2])],\n up: up || [0, 1, 0],\n orthoScale: diag * 1.1,\n fitFOV: self._cameraFitFOV\n }, ok);\n }\n };\n })();\n }\n\n this._onUpdated = viewer.localeService.on(\"updated\", () => {\n this._cubeTextureCanvas.clear();\n this._repaint();\n });\n\n this.setVisible(cfg.visible);\n this.setCameraFitFOV(cfg.cameraFitFOV);\n this.setCameraFly(cfg.cameraFly);\n this.setCameraFlyDuration(cfg.cameraFlyDuration);\n this.setFitVisible(cfg.fitVisible);\n this.setSynchProjection(cfg.synchProjection);\n }\n\n send(name, value) {\n switch (name) {\n case \"language\":\n this._cubeTextureCanvas.clear();\n this._repaint(); // CubeTextureCanvas gets language from Viewer\n break;\n }\n }\n\n _repaint() {\n const image = this._cubeTextureCanvas.getImage();\n this._cubeMesh.material.diffuseMap.image = image;\n this._cubeMesh.material.emissiveMap.image = image;\n }\n\n /**\n * Sets if the NavCube is visible.\n *\n * @param {Boolean} visible Whether or not the NavCube is visible.\n */\n setVisible(visible = true) {\n if (!this._navCubeCanvas) {\n return;\n }\n this._cubeMesh.visible = visible;\n if (this._shadow) {\n this._shadow.visible = visible;\n }\n this._navCubeCanvas.style.visibility = visible ? \"visible\" : \"hidden\";\n }\n\n /**\n * Gets if the NavCube is visible.\n *\n * @return {Boolean} True when the NavCube is visible.\n */\n getVisible() {\n if (!this._navCubeCanvas) {\n return false;\n }\n return this._cubeMesh.visible;\n }\n\n\n /**\n * Sets whether the axis, corner and edge-aligned views will fit the\n * view to the entire {@link Scene} or just to visible object-{@link Entity}s.\n *\n * Entitys are visible objects when {@link Entity#isObject} and {@link Entity#visible} are both ````true````.\n *\n * @param {Boolean} fitVisible Set ````true```` to fit only visible object-Entitys.\n */\n setFitVisible(fitVisible = false) {\n this._fitVisible = fitVisible;\n }\n\n /**\n * Gets whether the axis, corner and edge-aligned views will fit the\n * view to the entire {@link Scene} or just to visible object-{@link Entity}s.\n *\n * Entitys are visible objects when {@link Entity#isObject} and {@link Entity#visible} are both ````true````.\n *\n * @return {Boolean} True when fitting only visible object-Entitys.\n */\n getFitVisible() {\n return this._fitVisible;\n }\n\n /**\n * Sets whether the {@link Camera} flies or jumps to each selected axis or diagonal.\n *\n * Default is ````true````, to fly.\n *\n * @param {Boolean} cameraFly Set ````true```` to fly, else ````false```` to jump.\n */\n setCameraFly(cameraFly = true) {\n this._cameraFly = cameraFly;\n }\n\n /**\n * Gets whether the {@link Camera} flies or jumps to each selected axis or diagonal.\n *\n * Default is ````true````, to fly.\n *\n * @returns {Boolean} Returns ````true```` to fly, else ````false```` to jump.\n */\n getCameraFly() {\n return this._cameraFly;\n }\n\n /**\n * Sets how much of the field-of-view, in degrees, that the {@link Scene} should\n * fill the canvas when flying or jumping the {@link Camera} to each selected axis or diagonal.\n *\n * Default value is ````45````.\n *\n * @param {Number} cameraFitFOV New FOV value.\n */\n setCameraFitFOV(cameraFitFOV = 45) {\n this._cameraFitFOV = cameraFitFOV;\n }\n\n /**\n * Gets how much of the field-of-view, in degrees, that the {@link Scene} should\n * fill the canvas when flying or jumping the {@link Camera} to each selected axis or diagonal.\n *\n * Default value is ````45````.\n *\n * @returns {Number} Current FOV value.\n */\n getCameraFitFOV() {\n return this._cameraFitFOV;\n }\n\n /**\n * When flying the {@link Camera} to each new axis or diagonal, sets how long, in seconds, that the Camera takes to get there.\n *\n * Default is ````0.5````.\n *\n * @param {Boolean} cameraFlyDuration Camera flight duration in seconds.\n */\n setCameraFlyDuration(cameraFlyDuration = 0.5) {\n this._cameraFlyDuration = cameraFlyDuration;\n }\n\n /**\n * When flying the {@link Camera} to each new axis or diagonal, gets how long, in seconds, that the Camera takes to get there.\n *\n * Default is ````0.5````.\n *\n * @returns {Boolean} Camera flight duration in seconds.\n */\n getCameraFlyDuration() {\n return this._cameraFlyDuration;\n }\n\n /**\n * Sets whether the NavCube switches between perspective and orthographic projections in synchrony with\n * the {@link Camera}. When ````false````, the NavCube will always be rendered with perspective projection.\n *\n * @param {Boolean} synchProjection Set ````true```` to keep NavCube projection synchronized with {@link Camera#projection}.\n */\n setSynchProjection(synchProjection = false) {\n this._synchProjection = synchProjection;\n }\n\n /**\n * Gets whether the NavCube switches between perspective and orthographic projections in synchrony with\n * the {@link Camera}. When ````false````, the NavCube will always be rendered with perspective projection.\n *\n * @return {Boolean} True when NavCube projection is synchronized with {@link Camera#projection}.\n */\n getSynchProjection() {\n return this._synchProjection;\n }\n\n /**\n * Sets whether the NavCube switches between project north and true north\n *\n * @param {Boolean} isProjectNorth Set ````true```` to use project north offset\n */\n setIsProjectNorth(isProjectNorth = false) {\n this._isProjectNorth = isProjectNorth;\n }\n\n /**\n * Gets whether the NavCube switches between project north and true north\n *\n * @return {Boolean} isProjectNorth when ````true```` - use project north offset\n */\n getIsProjectNorth() {\n return this._isProjectNorth;\n }\n\n /**\n * Sets the NavCube project north offset angle (used when {@link isProjectNorth} is ````true````\n *\n * @param {number} projectNorthOffsetAngle Set the vector offset for project north\n */\n setProjectNorthOffsetAngle(projectNorthOffsetAngle) {\n this._projectNorthOffsetAngle = projectNorthOffsetAngle;\n }\n\n /**\n * Gets the offset angle between project north and true north\n *\n * @return {number} projectNorthOffsetAngle\n */\n getProjectNorthOffsetAngle() {\n return this._projectNorthOffsetAngle;\n }\n\n /**\n * Destroys this NavCubePlugin.\n *\n * Does not destroy the canvas the NavCubePlugin was configured with.\n */\n destroy() {\n\n if (this._navCubeCanvas) {\n\n this.viewer.localeService.off(this._onUpdated);\n this.viewer.camera.off(this._onCameraMatrix);\n this.viewer.camera.off(this._onCameraWorldAxis);\n this.viewer.camera.perspective.off(this._onCameraFOV);\n this.viewer.camera.off(this._onCameraProjection);\n\n this._navCubeCanvas.removeEventListener(\"mouseenter\", this._onMouseEnter);\n this._navCubeCanvas.removeEventListener(\"mouseleave\", this._onMouseLeave);\n this._navCubeCanvas.removeEventListener(\"mousedown\", this._onMouseDown);\n\n document.removeEventListener(\"mousemove\", this._onMouseMove);\n document.removeEventListener(\"mouseup\", this._onMouseUp);\n\n this._navCubeCanvas = null;\n this._cubeTextureCanvas.destroy();\n this._cubeTextureCanvas = null;\n\n this._onMouseEnter = null;\n this._onMouseLeave = null;\n this._onMouseDown = null;\n this._onMouseMove = null;\n this._onMouseUp = null;\n }\n\n this._navCubeScene.destroy();\n this._navCubeScene = null;\n this._cubeMesh = null;\n this._shadow = null;\n\n super.destroy();\n }\n}\n\nexport {NavCubePlugin};\n", @@ -21847,7 +22375,7 @@ "lineNumber": 1 }, { - "__docId__": 1262, + "__docId__": 1280, "kind": "variable", "name": "tempVec3a", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js", @@ -21868,7 +22396,7 @@ "ignore": true }, { - "__docId__": 1263, + "__docId__": 1281, "kind": "variable", "name": "tempVec3b", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js", @@ -21889,7 +22417,7 @@ "ignore": true }, { - "__docId__": 1264, + "__docId__": 1282, "kind": "variable", "name": "tempMat4a", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js", @@ -21910,7 +22438,7 @@ "ignore": true }, { - "__docId__": 1265, + "__docId__": 1283, "kind": "class", "name": "NavCubePlugin", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js", @@ -21928,7 +22456,7 @@ ] }, { - "__docId__": 1266, + "__docId__": 1284, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22213,7 +22741,7 @@ ] }, { - "__docId__": 1267, + "__docId__": 1285, "kind": "member", "name": "_navCubeScene", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22231,7 +22759,7 @@ } }, { - "__docId__": 1268, + "__docId__": 1286, "kind": "member", "name": "_navCubeCanvas", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22249,7 +22777,7 @@ } }, { - "__docId__": 1269, + "__docId__": 1287, "kind": "member", "name": "_navCubeCamera", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22267,7 +22795,7 @@ } }, { - "__docId__": 1270, + "__docId__": 1288, "kind": "member", "name": "_zUp", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22285,7 +22813,7 @@ } }, { - "__docId__": 1271, + "__docId__": 1289, "kind": "member", "name": "_synchCamera", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22303,7 +22831,7 @@ } }, { - "__docId__": 1272, + "__docId__": 1290, "kind": "member", "name": "_cubeTextureCanvas", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22321,7 +22849,7 @@ } }, { - "__docId__": 1273, + "__docId__": 1291, "kind": "member", "name": "_cubeSampler", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22339,7 +22867,7 @@ } }, { - "__docId__": 1274, + "__docId__": 1292, "kind": "member", "name": "_cubeMesh", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22357,7 +22885,7 @@ } }, { - "__docId__": 1275, + "__docId__": 1293, "kind": "member", "name": "_shadow", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22375,7 +22903,7 @@ } }, { - "__docId__": 1276, + "__docId__": 1294, "kind": "member", "name": "_onCameraMatrix", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22393,7 +22921,7 @@ } }, { - "__docId__": 1277, + "__docId__": 1295, "kind": "member", "name": "_onCameraWorldAxis", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22411,7 +22939,7 @@ } }, { - "__docId__": 1280, + "__docId__": 1298, "kind": "member", "name": "_onCameraFOV", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22429,7 +22957,7 @@ } }, { - "__docId__": 1281, + "__docId__": 1299, "kind": "member", "name": "_onCameraProjection", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22447,7 +22975,7 @@ } }, { - "__docId__": 1282, + "__docId__": 1300, "kind": "member", "name": "_onUpdated", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22465,7 +22993,7 @@ } }, { - "__docId__": 1283, + "__docId__": 1301, "kind": "method", "name": "send", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22494,7 +23022,7 @@ "return": null }, { - "__docId__": 1284, + "__docId__": 1302, "kind": "method", "name": "_repaint", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22511,7 +23039,7 @@ "return": null }, { - "__docId__": 1285, + "__docId__": 1303, "kind": "method", "name": "setVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22537,7 +23065,7 @@ "return": null }, { - "__docId__": 1286, + "__docId__": 1304, "kind": "method", "name": "getVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22559,7 +23087,7 @@ "params": [] }, { - "__docId__": 1287, + "__docId__": 1305, "kind": "method", "name": "setFitVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22585,7 +23113,7 @@ "return": null }, { - "__docId__": 1288, + "__docId__": 1306, "kind": "member", "name": "_fitVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22603,7 +23131,7 @@ } }, { - "__docId__": 1289, + "__docId__": 1307, "kind": "method", "name": "getFitVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22625,7 +23153,7 @@ "params": [] }, { - "__docId__": 1290, + "__docId__": 1308, "kind": "method", "name": "setCameraFly", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22651,7 +23179,7 @@ "return": null }, { - "__docId__": 1291, + "__docId__": 1309, "kind": "member", "name": "_cameraFly", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22669,7 +23197,7 @@ } }, { - "__docId__": 1292, + "__docId__": 1310, "kind": "method", "name": "getCameraFly", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22697,7 +23225,7 @@ "params": [] }, { - "__docId__": 1293, + "__docId__": 1311, "kind": "method", "name": "setCameraFitFOV", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22723,7 +23251,7 @@ "return": null }, { - "__docId__": 1294, + "__docId__": 1312, "kind": "member", "name": "_cameraFitFOV", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22741,7 +23269,7 @@ } }, { - "__docId__": 1295, + "__docId__": 1313, "kind": "method", "name": "getCameraFitFOV", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22769,7 +23297,7 @@ "params": [] }, { - "__docId__": 1296, + "__docId__": 1314, "kind": "method", "name": "setCameraFlyDuration", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22795,7 +23323,7 @@ "return": null }, { - "__docId__": 1297, + "__docId__": 1315, "kind": "member", "name": "_cameraFlyDuration", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22813,7 +23341,7 @@ } }, { - "__docId__": 1298, + "__docId__": 1316, "kind": "method", "name": "getCameraFlyDuration", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22841,7 +23369,7 @@ "params": [] }, { - "__docId__": 1299, + "__docId__": 1317, "kind": "method", "name": "setSynchProjection", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22867,7 +23395,7 @@ "return": null }, { - "__docId__": 1300, + "__docId__": 1318, "kind": "member", "name": "_synchProjection", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22885,7 +23413,7 @@ } }, { - "__docId__": 1301, + "__docId__": 1319, "kind": "method", "name": "getSynchProjection", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22907,7 +23435,7 @@ "params": [] }, { - "__docId__": 1302, + "__docId__": 1320, "kind": "method", "name": "setIsProjectNorth", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22933,7 +23461,7 @@ "return": null }, { - "__docId__": 1303, + "__docId__": 1321, "kind": "member", "name": "_isProjectNorth", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22951,7 +23479,7 @@ } }, { - "__docId__": 1304, + "__docId__": 1322, "kind": "method", "name": "getIsProjectNorth", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22973,7 +23501,7 @@ "params": [] }, { - "__docId__": 1305, + "__docId__": 1323, "kind": "method", "name": "setProjectNorthOffsetAngle", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -22999,7 +23527,7 @@ "return": null }, { - "__docId__": 1306, + "__docId__": 1324, "kind": "member", "name": "_projectNorthOffsetAngle", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -23017,7 +23545,7 @@ } }, { - "__docId__": 1307, + "__docId__": 1325, "kind": "method", "name": "getProjectNorthOffsetAngle", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -23039,7 +23567,7 @@ "params": [] }, { - "__docId__": 1308, + "__docId__": 1326, "kind": "method", "name": "destroy", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -23054,7 +23582,7 @@ "return": null }, { - "__docId__": 1311, + "__docId__": 1329, "kind": "member", "name": "_onMouseEnter", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -23072,7 +23600,7 @@ } }, { - "__docId__": 1312, + "__docId__": 1330, "kind": "member", "name": "_onMouseLeave", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -23090,7 +23618,7 @@ } }, { - "__docId__": 1313, + "__docId__": 1331, "kind": "member", "name": "_onMouseDown", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -23108,7 +23636,7 @@ } }, { - "__docId__": 1314, + "__docId__": 1332, "kind": "member", "name": "_onMouseMove", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -23126,7 +23654,7 @@ } }, { - "__docId__": 1315, + "__docId__": 1333, "kind": "member", "name": "_onMouseUp", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -23144,7 +23672,7 @@ } }, { - "__docId__": 1319, + "__docId__": 1337, "kind": "file", "name": "src/plugins/NavCubePlugin/index.js", "content": "export * from \"./NavCubePlugin.js\";", @@ -23155,7 +23683,7 @@ "lineNumber": 1 }, { - "__docId__": 1320, + "__docId__": 1338, "kind": "file", "name": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js", "content": "import {Plugin} from \"../../viewer/Plugin.js\";\nimport {Node} from \"../../viewer/scene/nodes/Node.js\";\nimport {utils} from \"../../viewer/scene/utils.js\";\nimport {OBJSceneGraphLoader} from \"./OBJSceneGraphLoader.js\";\n\n/**\n * {@link Viewer} plugin that loads models from [OBJ](https://en.wikipedia.org/wiki/Wavefront_.obj_file) files.\n *\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n *\n * ## Metadata\n *\n * OBJLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFModelLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, OBJLoaderPlugin\n * uses its own map of standard default colors, visibilities and opacities for IFC element types.\n\n *\n * ## Usage\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/cad/#OBJ_SportsCar_ExplodeModel)]\n *\n * ````javascript\n * import {Viewer, OBJLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a xeokit Viewer and arrange the camera\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.orbitPitch(20);\n *\n * // Add an OBJLoaderPlugin to the Viewer\n * const objLoader = new OBJLoaderPlugin(viewer);\n *\n * // Load an OBJ model\n * var model = objLoader.load({ // Model is an Entity\n * id: \"myModel\",\n * src: \"./models/obj/sportsCar/sportsCar.obj\",\n * edges: true\n * });\n *\n * // When the model has loaded, fit it to view\n * model.on(\"loaded\", () => {\n * viewer.cameraFlight.flyTo(model);\n * })\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Update properties of the model Entity\n * model.highlight = [1,0,0];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n * @class OBJLoaderPlugin\n */\nclass OBJLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"OBJLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n */\n constructor(viewer, cfg) {\n\n super(\"OBJLoader\", viewer, cfg);\n\n /**\n * @private\n */\n this._sceneGraphLoader = new OBJSceneGraphLoader();\n }\n\n /**\n * Loads an OBJ model from a file into this OBJLoader's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} params.id ID to assign to the model's root {@link Entity}, unique among all components in the Viewer's {@link Scene}.\n * @param {String} params.src Path to an OBJ file.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file.\n * @param {Number[]} [params.position=[0,0,0]] The model World-space 3D position.\n * @param {Number[]} [params.scale=[1,1,1]] The model's World-space scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's World-space rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Number} [params.edgeThreshold=20] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n var modelNode = new Node(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n const modelId = modelNode.id; // In case ID was auto-generated\n const src = params.src;\n\n if (!src) {\n this.error(\"load() param expected: src\");\n return modelNode;\n }\n\n if (params.metaModelSrc) {\n const metaModelSrc = params.metaModelSrc;\n utils.loadJSON(metaModelSrc,\n (modelMetadata) => {\n this.viewer.metaScene.createMetaModel(modelId, modelMetadata);\n this._sceneGraphLoader.load(modelNode, src, params);\n },\n (errMsg) => {\n this.error(`load(): Failed to load model modelMetadata for model '${modelId} from '${metaModelSrc}' - ${errMsg}`);\n });\n } else {\n this._sceneGraphLoader.load(modelNode, src, params);\n }\n\n modelNode.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(modelId);\n });\n\n return modelNode;\n }\n\n /**\n * Destroys this OBJLoaderPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n\nexport {OBJLoaderPlugin}", @@ -23166,7 +23694,7 @@ "lineNumber": 1 }, { - "__docId__": 1321, + "__docId__": 1339, "kind": "class", "name": "OBJLoaderPlugin", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js", @@ -23190,7 +23718,7 @@ ] }, { - "__docId__": 1322, + "__docId__": 1340, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin", @@ -23243,7 +23771,7 @@ ] }, { - "__docId__": 1323, + "__docId__": 1341, "kind": "member", "name": "_sceneGraphLoader", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin", @@ -23260,7 +23788,7 @@ } }, { - "__docId__": 1324, + "__docId__": 1342, "kind": "method", "name": "load", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin", @@ -23418,7 +23946,7 @@ } }, { - "__docId__": 1325, + "__docId__": 1343, "kind": "method", "name": "destroy", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin", @@ -23433,7 +23961,7 @@ "return": null }, { - "__docId__": 1326, + "__docId__": 1344, "kind": "file", "name": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", "content": "import {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {PhongMaterial} from \"../../viewer/scene/materials/PhongMaterial.js\";\nimport {Texture} from \"../../viewer/scene/materials/Texture.js\";\nimport {core} from \"../../viewer/scene/core.js\";\nimport {worldToRTCPositions} from \"../../viewer/scene/math/rtcCoords.js\";\nimport {math} from \"../../viewer/scene/math/math.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass OBJSceneGraphLoader {\n\n /**\n * Loads OBJ and MTL from file(s) into a {@link Node}.\n *\n * @static\n * @param {Node} modelNode Node to load into.\n * @param {String} src Path to OBJ file.\n * @param {Object} params Loading options.\n */\n load(modelNode, src, params = {}) {\n\n var spinner = modelNode.scene.canvas.spinner;\n spinner.processes++;\n\n loadOBJ(modelNode, src, function (state) {\n loadMTLs(modelNode, state, function () {\n\n createMeshes(modelNode, state);\n\n spinner.processes--;\n\n core.scheduleTask(function () {\n modelNode.fire(\"loaded\", true, false);\n });\n });\n });\n }\n\n /**\n * Parses OBJ and MTL text strings into a {@link Node}.\n *\n * @static\n * @param {Node} modelNode Node to load into.\n * @param {String} objText OBJ text string.\n * @param {String} [mtlText] MTL text string.\n * @param {String} [basePath] Base path for external resources.\n */\n parse(modelNode, objText, mtlText, basePath) {\n if (!objText) {\n this.warn(\"load() param expected: objText\");\n return;\n }\n var state = parseOBJ(modelNode, objText, null);\n if (mtlText) {\n parseMTL(modelNode, mtlText, basePath);\n }\n createMeshes(modelNode, state);\n modelNode.src = null;\n modelNode.fire(\"loaded\", true, false);\n }\n}\n\n//--------------------------------------------------------------------------------------------\n// Loads OBJ\n//\n// Parses OBJ into an intermediate state object. The object will contain geometry data\n// and material IDs from which meshes can be created later. The object will also\n// contain a list of filenames of the MTL files referenced by the OBJ, is any.\n//\n// Originally based on the THREE.js OBJ and MTL loaders:\n//\n// https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/OBJLoader.js\n// https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/MTLLoader.js\n//--------------------------------------------------------------------------------------------\n\nvar loadOBJ = function (modelNode, url, ok) {\n loadFile(url, function (text) {\n var state = parseOBJ(modelNode, text, url);\n ok(state);\n },\n function (error) {\n modelNode.error(error);\n });\n};\n\nvar parseOBJ = (function () {\n\n const regexp = {\n // v float float float\n vertex_pattern: /^v\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\n // vn float float float\n normal_pattern: /^vn\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\n // vt float float\n uv_pattern: /^vt\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\n // f vertex vertex vertex\n face_vertex: /^f\\s+(-?\\d+)\\s+(-?\\d+)\\s+(-?\\d+)(?:\\s+(-?\\d+))?/,\n // f vertex/uv vertex/uv vertex/uv\n face_vertex_uv: /^f\\s+(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)(?:\\s+(-?\\d+)\\/(-?\\d+))?/,\n // f vertex/uv/normal vertex/uv/normal vertex/uv/normal\n face_vertex_uv_normal: /^f\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)(?:\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+))?/,\n // f vertex//normal vertex//normal vertex//normal\n face_vertex_normal: /^f\\s+(-?\\d+)\\/\\/(-?\\d+)\\s+(-?\\d+)\\/\\/(-?\\d+)\\s+(-?\\d+)\\/\\/(-?\\d+)(?:\\s+(-?\\d+)\\/\\/(-?\\d+))?/,\n // o object_name | g group_name\n object_pattern: /^[og]\\s*(.+)?/,\n // s boolean\n smoothing_pattern: /^s\\s+(\\d+|on|off)/,\n // mtllib file_reference\n material_library_pattern: /^mtllib /,\n // usemtl material_name\n material_use_pattern: /^usemtl /\n };\n\n return function (modelNode, text, url) {\n\n url = url || \"\";\n\n var state = {\n src: url,\n basePath: getBasePath(url),\n objects: [],\n object: {},\n positions: [],\n normals: [],\n uv: [],\n materialLibraries: {}\n };\n\n startObject(state, \"\", false);\n\n // Parts of this parser logic are derived from the THREE.js OBJ loader:\n // https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/OBJLoader.js\n\n if (text.indexOf('\\r\\n') !== -1) {\n // This is faster than String.split with regex that splits on both\n text = text.replace('\\r\\n', '\\n');\n }\n\n var lines = text.split('\\n');\n var line = '', lineFirstChar = '', lineSecondChar = '';\n var lineLength = 0;\n var result = [];\n\n // Faster to just trim left side of the line. Use if available.\n var trimLeft = (typeof ''.trimLeft === 'function');\n\n for (var i = 0, l = lines.length; i < l; i++) {\n\n line = lines[i];\n\n line = trimLeft ? line.trimLeft() : line.trim();\n\n lineLength = line.length;\n\n if (lineLength === 0) {\n continue;\n }\n\n lineFirstChar = line.charAt(0);\n\n if (lineFirstChar === '#') {\n continue;\n }\n\n if (lineFirstChar === 'v') {\n\n lineSecondChar = line.charAt(1);\n\n if (lineSecondChar === ' ' && (result = regexp.vertex_pattern.exec(line)) !== null) {\n\n // 0 1 2 3\n // ['v 1.0 2.0 3.0', '1.0', '2.0', '3.0']\n\n state.positions.push(\n parseFloat(result[1]),\n parseFloat(result[2]),\n parseFloat(result[3])\n );\n\n } else if (lineSecondChar === 'n' && (result = regexp.normal_pattern.exec(line)) !== null) {\n\n // 0 1 2 3\n // ['vn 1.0 2.0 3.0', '1.0', '2.0', '3.0']\n\n state.normals.push(\n parseFloat(result[1]),\n parseFloat(result[2]),\n parseFloat(result[3])\n );\n\n } else if (lineSecondChar === 't' && (result = regexp.uv_pattern.exec(line)) !== null) {\n\n // 0 1 2\n // ['vt 0.1 0.2', '0.1', '0.2']\n\n state.uv.push(\n parseFloat(result[1]),\n parseFloat(result[2])\n );\n\n } else {\n\n modelNode.error('Unexpected vertex/normal/uv line: \\'' + line + '\\'');\n return;\n }\n\n } else if (lineFirstChar === 'f') {\n\n if ((result = regexp.face_vertex_uv_normal.exec(line)) !== null) {\n\n // f vertex/uv/normal vertex/uv/normal vertex/uv/normal\n // 0 1 2 3 4 5 6 7 8 9 10 11 12\n // ['f 1/1/1 2/2/2 3/3/3', '1', '1', '1', '2', '2', '2', '3', '3', '3', undefined, undefined, undefined]\n\n addFace(state,\n result[1], result[4], result[7], result[10],\n result[2], result[5], result[8], result[11],\n result[3], result[6], result[9], result[12]\n );\n\n } else if ((result = regexp.face_vertex_uv.exec(line)) !== null) {\n\n // f vertex/uv vertex/uv vertex/uv\n // 0 1 2 3 4 5 6 7 8\n // ['f 1/1 2/2 3/3', '1', '1', '2', '2', '3', '3', undefined, undefined]\n\n addFace(state,\n result[1], result[3], result[5], result[7],\n result[2], result[4], result[6], result[8]\n );\n\n } else if ((result = regexp.face_vertex_normal.exec(line)) !== null) {\n\n // f vertex//normal vertex//normal vertex//normal\n // 0 1 2 3 4 5 6 7 8\n // ['f 1//1 2//2 3//3', '1', '1', '2', '2', '3', '3', undefined, undefined]\n\n addFace(state,\n result[1], result[3], result[5], result[7],\n undefined, undefined, undefined, undefined,\n result[2], result[4], result[6], result[8]\n );\n\n } else if ((result = regexp.face_vertex.exec(line)) !== null) {\n\n // f vertex vertex vertex\n // 0 1 2 3 4\n // ['f 1 2 3', '1', '2', '3', undefined]\n\n addFace(state, result[1], result[2], result[3], result[4]);\n } else {\n modelNode.error('Unexpected face line: \\'' + line + '\\'');\n return;\n }\n\n } else if (lineFirstChar === 'l') {\n\n var lineParts = line.substring(1).trim().split(' ');\n var lineVertices = [], lineUVs = [];\n\n if (line.indexOf('/') === -1) {\n\n lineVertices = lineParts;\n\n } else {\n for (var li = 0, llen = lineParts.length; li < llen; li++) {\n var parts = lineParts[li].split('/');\n if (parts[0] !== '') {\n lineVertices.push(parts[0]);\n }\n if (parts[1] !== '') {\n lineUVs.push(parts[1]);\n }\n }\n }\n addLineGeometry(state, lineVertices, lineUVs);\n\n } else if ((result = regexp.object_pattern.exec(line)) !== null) {\n\n // o object_name\n // or\n // g group_name\n\n var id = result[0].substr(1).trim();\n startObject(state, id, true);\n\n } else if (regexp.material_use_pattern.test(line)) {\n\n // material\n\n var id = line.substring(7).trim();\n state.object.material.id = id;\n\n } else if (regexp.material_library_pattern.test(line)) {\n\n // mtl file\n\n state.materialLibraries[line.substring(7).trim()] = true;\n\n } else if ((result = regexp.smoothing_pattern.exec(line)) !== null) {\n\n // smooth shading\n\n var value = result[1].trim().toLowerCase();\n state.object.material.smooth = (value === '1' || value === 'on');\n\n } else {\n\n // Handle null terminated files without exception\n if (line === '\\0') {\n continue;\n }\n\n modelNode.error('Unexpected line: \\'' + line + '\\'');\n return;\n }\n }\n\n return state;\n };\n\n function getBasePath(src) {\n var n = src.lastIndexOf('/');\n return (n === -1) ? src : src.substring(0, n + 1);\n }\n\n function startObject(state, id, fromDeclaration) {\n if (state.object && state.object.fromDeclaration === false) {\n state.object.id = id;\n state.object.fromDeclaration = (fromDeclaration !== false);\n return;\n }\n state.object = {\n id: id || '',\n geometry: {\n positions: [],\n normals: [],\n uv: []\n },\n material: {\n id: '',\n smooth: true\n },\n fromDeclaration: (fromDeclaration !== false)\n };\n state.objects.push(state.object);\n }\n\n function parseVertexIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\n }\n\n function parseNormalIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\n }\n\n function parseUVIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 2) * 2;\n }\n\n function addVertex(state, a, b, c) {\n var src = state.positions;\n var dst = state.object.geometry.positions;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n dst.push(src[a + 2]);\n dst.push(src[b + 0]);\n dst.push(src[b + 1]);\n dst.push(src[b + 2]);\n dst.push(src[c + 0]);\n dst.push(src[c + 1]);\n dst.push(src[c + 2]);\n }\n\n function addVertexLine(state, a) {\n var src = state.positions;\n var dst = state.object.geometry.positions;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n dst.push(src[a + 2]);\n }\n\n function addNormal(state, a, b, c) {\n var src = state.normals;\n var dst = state.object.geometry.normals;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n dst.push(src[a + 2]);\n dst.push(src[b + 0]);\n dst.push(src[b + 1]);\n dst.push(src[b + 2]);\n dst.push(src[c + 0]);\n dst.push(src[c + 1]);\n dst.push(src[c + 2]);\n }\n\n function addUV(state, a, b, c) {\n var src = state.uv;\n var dst = state.object.geometry.uv;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n dst.push(src[b + 0]);\n dst.push(src[b + 1]);\n dst.push(src[c + 0]);\n dst.push(src[c + 1]);\n }\n\n function addUVLine(state, a) {\n var src = state.uv;\n var dst = state.object.geometry.uv;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n }\n\n function addFace(state, a, b, c, d, ua, ub, uc, ud, na, nb, nc, nd) {\n var vLen = state.positions.length;\n var ia = parseVertexIndex(a, vLen);\n var ib = parseVertexIndex(b, vLen);\n var ic = parseVertexIndex(c, vLen);\n var id;\n if (d === undefined) {\n addVertex(state, ia, ib, ic);\n\n } else {\n id = parseVertexIndex(d, vLen);\n addVertex(state, ia, ib, id);\n addVertex(state, ib, ic, id);\n }\n\n if (ua !== undefined) {\n\n var uvLen = state.uv.length;\n\n ia = parseUVIndex(ua, uvLen);\n ib = parseUVIndex(ub, uvLen);\n ic = parseUVIndex(uc, uvLen);\n\n if (d === undefined) {\n addUV(state, ia, ib, ic);\n\n } else {\n id = parseUVIndex(ud, uvLen);\n addUV(state, ia, ib, id);\n addUV(state, ib, ic, id);\n }\n }\n\n if (na !== undefined) {\n\n // Normals are many times the same. If so, skip function call and parseInt.\n\n var nLen = state.normals.length;\n\n ia = parseNormalIndex(na, nLen);\n ib = na === nb ? ia : parseNormalIndex(nb, nLen);\n ic = na === nc ? ia : parseNormalIndex(nc, nLen);\n\n if (d === undefined) {\n addNormal(state, ia, ib, ic);\n\n } else {\n\n id = parseNormalIndex(nd, nLen);\n addNormal(state, ia, ib, id);\n addNormal(state, ib, ic, id);\n }\n }\n }\n\n function addLineGeometry(state, positions, uv) {\n\n state.object.geometry.type = 'Line';\n\n var vLen = state.positions.length;\n var uvLen = state.uv.length;\n\n for (var vi = 0, l = positions.length; vi < l; vi++) {\n addVertexLine(state, parseVertexIndex(positions[vi], vLen));\n }\n\n for (var uvi = 0, uvl = uv.length; uvi < uvl; uvi++) {\n addUVLine(state, parseUVIndex(uv[uvi], uvLen));\n }\n }\n})();\n\n//--------------------------------------------------------------------------------------------\n// Loads MTL files listed in parsed state\n//--------------------------------------------------------------------------------------------\n\nfunction loadMTLs(modelNode, state, ok) {\n var basePath = state.basePath;\n var srcList = Object.keys(state.materialLibraries);\n var numToLoad = srcList.length;\n for (var i = 0, len = numToLoad; i < len; i++) {\n loadMTL(modelNode, basePath, basePath + srcList[i], function () {\n if (--numToLoad === 0) {\n ok();\n }\n });\n }\n}\n\n//--------------------------------------------------------------------------------------------\n// Loads an MTL file\n//--------------------------------------------------------------------------------------------\n\nvar loadMTL = function (modelNode, basePath, src, ok) {\n loadFile(src, function (text) {\n parseMTL(modelNode, text, basePath);\n ok();\n },\n function (error) {\n modelNode.error(error);\n ok();\n });\n};\n\nvar parseMTL = (function () {\n\n var delimiter_pattern = /\\s+/;\n\n return function (modelNode, mtlText, basePath) {\n\n var lines = mtlText.split('\\n');\n var materialCfg = {\n id: \"Default\"\n };\n var needCreate = false;\n var line;\n var pos;\n var key;\n var value;\n var alpha;\n\n basePath = basePath || \"\";\n\n for (var i = 0; i < lines.length; i++) {\n\n line = lines[i].trim();\n\n if (line.length === 0 || line.charAt(0) === '#') { // Blank line or comment ignore\n continue;\n }\n\n pos = line.indexOf(' ');\n\n key = (pos >= 0) ? line.substring(0, pos) : line;\n key = key.toLowerCase();\n\n value = (pos >= 0) ? line.substring(pos + 1) : '';\n value = value.trim();\n\n switch (key.toLowerCase()) {\n\n case \"newmtl\": // New material\n //if (needCreate) {\n createMaterial(modelNode, materialCfg);\n //}\n materialCfg = {\n id: value\n };\n needCreate = true;\n break;\n\n case 'ka':\n materialCfg.ambient = parseRGB(value);\n break;\n\n case 'kd':\n materialCfg.diffuse = parseRGB(value);\n break;\n\n case 'ks':\n materialCfg.specular = parseRGB(value);\n break;\n\n case 'map_kd':\n if (!materialCfg.diffuseMap) {\n materialCfg.diffuseMap = createTexture(modelNode, basePath, value, \"sRGB\");\n }\n break;\n\n case 'map_ks':\n if (!materialCfg.specularMap) {\n materialCfg.specularMap = createTexture(modelNode, basePath, value, \"linear\");\n }\n break;\n\n case 'map_bump':\n case 'bump':\n if (!materialCfg.normalMap) {\n materialCfg.normalMap = createTexture(modelNode, basePath, value);\n }\n break;\n\n case 'ns':\n materialCfg.shininess = parseFloat(value);\n break;\n\n case 'd':\n alpha = parseFloat(value);\n if (alpha < 1) {\n materialCfg.alpha = alpha;\n materialCfg.alphaMode = \"blend\";\n }\n break;\n\n case 'tr':\n alpha = parseFloat(value);\n if (alpha > 0) {\n materialCfg.alpha = 1 - alpha;\n materialCfg.alphaMode = \"blend\";\n }\n break;\n\n default:\n // modelNode.error(\"Unrecognized token: \" + key);\n }\n }\n\n if (needCreate) {\n createMaterial(modelNode, materialCfg);\n }\n };\n\n function createTexture(modelNode, basePath, value, encoding) {\n var textureCfg = {};\n var items = value.split(/\\s+/);\n var pos = items.indexOf('-bm');\n if (pos >= 0) {\n //matParams.bumpScale = parseFloat(items[pos + 1]);\n items.splice(pos, 2);\n }\n pos = items.indexOf('-s');\n if (pos >= 0) {\n textureCfg.scale = [parseFloat(items[pos + 1]), parseFloat(items[pos + 2])];\n items.splice(pos, 4); // we expect 3 parameters here!\n }\n pos = items.indexOf('-o');\n if (pos >= 0) {\n textureCfg.translate = [parseFloat(items[pos + 1]), parseFloat(items[pos + 2])];\n items.splice(pos, 4); // we expect 3 parameters here!\n }\n textureCfg.src = basePath + items.join(' ').trim();\n textureCfg.flipY = true;\n textureCfg.encoding = encoding || \"linear\";\n //textureCfg.wrapS = self.wrap;\n //textureCfg.wrapT = self.wrap;\n var texture = new Texture(modelNode, textureCfg);\n return texture.id;\n }\n\n function createMaterial(modelNode, materialCfg) {\n new PhongMaterial(modelNode, materialCfg);\n }\n\n function parseRGB(value) {\n var ss = value.split(delimiter_pattern, 3);\n return [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])];\n }\n\n})();\n//--------------------------------------------------------------------------------------------\n// Creates meshes from parsed state\n//--------------------------------------------------------------------------------------------\n\n\nfunction createMeshes(modelNode, state) {\n\n for (var j = 0, k = state.objects.length; j < k; j++) {\n\n var object = state.objects[j];\n var geometry = object.geometry;\n var isLine = (geometry.type === 'Line');\n\n if (geometry.positions.length === 0) {\n // Skip o/g line declarations that did not follow with any faces\n continue;\n }\n\n var geometryCfg = {\n primitive: \"triangles\",\n compressGeometry: false\n };\n\n geometryCfg.positions = geometry.positions;\n\n if (geometry.normals.length > 0) {\n geometryCfg.normals = geometry.normals;\n }\n\n if (geometry.uv.length > 0) {\n geometryCfg.uv = geometry.uv;\n }\n\n var indices = new Array(geometryCfg.positions.length / 3); // Triangle soup\n for (var idx = 0; idx < indices.length; idx++) {\n indices[idx] = idx;\n }\n geometryCfg.indices = indices;\n\n const origin = tempVec3a;\n\n worldToRTCPositions(geometry.positions, geometry.positions, origin);\n\n var readableGeometry = new ReadableGeometry(modelNode, geometryCfg);\n\n var materialId = object.material.id;\n var material;\n if (materialId && materialId !== \"\") {\n material = modelNode.scene.components[materialId];\n if (!material) {\n modelNode.error(\"Material not found: \" + materialId);\n }\n } else {\n material = new PhongMaterial(modelNode, {\n //emissive: [0.6, 0.6, 0.0],\n diffuse: [0.6, 0.6, 0.6],\n backfaces: true\n });\n\n }\n\n // material.emissive = [Math.random(), Math.random(), Math.random()];\n\n var mesh = new Mesh(modelNode, {\n id: modelNode.id + \"#\" + object.id,\n origin: (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0) ? origin : null,\n isObject: true,\n geometry: readableGeometry,\n material: material,\n pickable: true\n });\n\n modelNode.addChild(mesh);\n }\n}\n\nfunction loadFile(url, ok, err) {\n var request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.addEventListener('load', function (event) {\n var response = event.target.response;\n if (this.status === 200) {\n if (ok) {\n ok(response);\n }\n } else if (this.status === 0) {\n // Some browsers return HTTP Status 0 when using non-http protocol\n // e.g. 'file://' or 'data://'. Handle as success.\n console.warn('loadFile: HTTP Status 0 received.');\n if (ok) {\n ok(response);\n }\n } else {\n if (err) {\n err(event);\n }\n }\n }, false);\n\n request.addEventListener('error', function (event) {\n if (err) {\n err(event);\n }\n }, false);\n request.send(null);\n}\n\nexport {OBJSceneGraphLoader};", @@ -23444,7 +23972,7 @@ "lineNumber": 1 }, { - "__docId__": 1327, + "__docId__": 1345, "kind": "variable", "name": "tempVec3a", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23465,7 +23993,7 @@ "ignore": true }, { - "__docId__": 1328, + "__docId__": 1346, "kind": "function", "name": "loadOBJ", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23504,7 +24032,7 @@ "ignore": true }, { - "__docId__": 1329, + "__docId__": 1347, "kind": "variable", "name": "parseOBJ", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23525,7 +24053,7 @@ "ignore": true }, { - "__docId__": 1330, + "__docId__": 1348, "kind": "function", "name": "loadMTLs", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23564,7 +24092,7 @@ "ignore": true }, { - "__docId__": 1331, + "__docId__": 1349, "kind": "function", "name": "loadMTL", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23609,7 +24137,7 @@ "ignore": true }, { - "__docId__": 1332, + "__docId__": 1350, "kind": "variable", "name": "parseMTL", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23630,7 +24158,7 @@ "ignore": true }, { - "__docId__": 1333, + "__docId__": 1351, "kind": "function", "name": "createMeshes", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23663,7 +24191,7 @@ "ignore": true }, { - "__docId__": 1334, + "__docId__": 1352, "kind": "function", "name": "loadFile", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23702,7 +24230,7 @@ "ignore": true }, { - "__docId__": 1335, + "__docId__": 1353, "kind": "class", "name": "OBJSceneGraphLoader", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -23718,7 +24246,7 @@ "ignore": true }, { - "__docId__": 1336, + "__docId__": 1354, "kind": "method", "name": "load", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js~OBJSceneGraphLoader", @@ -23764,7 +24292,7 @@ "return": null }, { - "__docId__": 1337, + "__docId__": 1355, "kind": "method", "name": "parse", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js~OBJSceneGraphLoader", @@ -23820,7 +24348,7 @@ "return": null }, { - "__docId__": 1338, + "__docId__": 1356, "kind": "file", "name": "src/plugins/OBJLoaderPlugin/index.js", "content": "export * from \"./OBJLoaderPlugin.js\";", @@ -23831,7 +24359,7 @@ "lineNumber": 1 }, { - "__docId__": 1339, + "__docId__": 1357, "kind": "file", "name": "src/plugins/STLLoaderPlugin/STLDefaultDataSource.js", "content": "/**\n * Default data access strategy for {@link STLLoaderPlugin}.\n *\n * This implementation simply loads STL files using XMLHttpRequest.\n */\nclass STLDefaultDataSource {\n\n /**\n * Gets STL data.\n *\n * @param {String|Number} src Identifies the STL file.\n * @param {Function} ok Fired on successful loading of the STL file.\n * @param {Function} error Fired on error while loading the STL file.\n */\n getSTL(src, ok, error) {\n const request = new XMLHttpRequest();\n request.overrideMimeType(\"application/json\");\n request.open('GET', src, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n error(request.statusText);\n }\n }\n };\n request.send(null);\n }\n}\n\nexport {STLDefaultDataSource};", @@ -23842,7 +24370,7 @@ "lineNumber": 1 }, { - "__docId__": 1340, + "__docId__": 1358, "kind": "class", "name": "STLDefaultDataSource", "memberof": "src/plugins/STLLoaderPlugin/STLDefaultDataSource.js", @@ -23857,7 +24385,7 @@ "interface": false }, { - "__docId__": 1341, + "__docId__": 1359, "kind": "method", "name": "getSTL", "memberof": "src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource", @@ -23904,7 +24432,7 @@ "return": null }, { - "__docId__": 1342, + "__docId__": 1360, "kind": "file", "name": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js", "content": "import {Node} from \"../../viewer/scene/nodes/Node.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {STLSceneGraphLoader} from \"./STLSceneGraphLoader.js\";\nimport {utils} from \"../../viewer/scene/utils.js\";\nimport {STLDefaultDataSource} from \"./STLDefaultDataSource.js\";\n\n/**\n * {@link Viewer} plugin that loads models from STL files.\n *\n * ## Overview\n *\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Supports both binary and ASCII formats.\n * * Supports double-precision vertex positions.\n * * Supports custom data source configuration.\n *\n * ## Smoothing STL Normals\n *\n * STL models are normally flat-shaded, however providing a ````smoothNormals```` parameter when loading gives a smooth\n * appearance. Triangles in STL are disjoint, where each triangle has its own separate vertex positions, normals and\n * (optionally) colors. This means that you can have gaps between triangles in an STL model. Normals for each triangle\n * are perpendicular to the triangle's surface, which gives the model a faceted appearance by default.\n *\n * The ```smoothNormals``` parameter causes the plugin to recalculate the STL normals, so that each normal's direction is\n * the average of the orientations of the triangles adjacent to its vertex. When smoothing, each vertex normal is set to\n * the average of the orientations of all other triangles that have a vertex at the same position, excluding those triangles\n * whose direction deviates from the direction of the vertice's triangle by a threshold given in\n * the ````smoothNormalsAngleThreshold```` loading parameter. This makes smoothing robust for hard edges.\n *\n * ## Creating Entities for Objects\n *\n * An STL model is normally a single mesh, however providing a ````splitMeshes```` parameter when loading\n * will create a separate object {@link Entity} for each group of faces that share the same vertex colors. This option\n * only works with binary STL files.\n *\n * See the {@link STLLoaderPlugin#load} method for more info on loading options.\n *\n * ## Usage\n *\n * In the example below, we'll use an STLLoaderPlugin to load an STL model of a spur gear. When the model has loaded,\n * we'll use the {@link CameraFlightAnimation} to fly the {@link Camera} to look at boundary of the model. We'll\n * then get the model's {@link Entity} from the {@link Scene} and highlight the whole model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_STL_SpurGear)]\n *\n * ````javascript\n * // Create a xeokit Viewer\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Add an STLLoaderPlugin to the Viewer\n * var plugin = new STLLoaderPlugin(viewer);\n *\n * // Load the STL model\n * var model = plugin.load({ // Model is an Entity\n * id: \"myModel\",\n * src: \"./models/stl/binary/spurGear.stl\",\n * scale: [0.1, 0.1, 0.1],\n * rotate: [90, 0, 0],\n * translate: [100,0,0],\n * edges: true,\n * smoothNormals: true, // Default\n * smoothNormalsAngleThreshold: 20, // Default\n * splitMeshes: true // Default\n * });\n *\n * // When the model has loaded, fit it to view\n * model.on(\"loaded\", function() { // Model is an Entity\n * viewer.cameraFlight.flyTo(model);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Update properties of the model Entity\n * model.highlight = [1,0,0];\n *\n * // Destroy the model Entity\n * model.destroy();\n * ````\n *\n * ## Loading from a Pre-Loaded STL File\n *\n * If we already have our STL file in memory (perhaps pre-loaded, or even generated in-client), then we can just pass that\n * file data straight into the {@link STLLoaderPlugin#load} method. In the example below, to show how it's done, we'll pre-load\n * our STL file data, then pass it straight into that method.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_STL_dataAsParam)]\n *\n * ````javascript\n * loadSTL(\"./models/stl/binary/spurGear.stl\", (stlData) =>{\n *\n * const model = stlLoader.load({\n * id: \"myModel\",\n * stl: stlData,\n * smoothNormals: true\n * });\n *\n * model.on(\"loaded\", () => {\n * viewer.cameraFlight.jumpTo(model);\n * viewer.scene.on(\"tick\", () => {\n * viewer.camera.orbitYaw(0.4);\n * })\n * });\n * })\n *\n * function loadSTL(src, ok, error) {\n * const request = new XMLHttpRequest();\n * request.overrideMimeType(\"application/json\");\n * request.open('GET', src, true);\n * request.responseType = 'arraybuffer';\n * request.onreadystatechange = function () {\n * if (request.readyState === 4) {\n * if (request.status === 200) {\n * ok(request.response);\n * } else if (error) {\n * error(request.statusText);\n * }\n * }\n * };\n * request.send(null);\n * }\n *````\n *\n * ## Configuring a Custom Data Source\n *\n * In the example below, we'll create the STLLoaderPlugin again, this time configuring it with a\n * custom data source object, through which it can load STL files. For this example, our data source just loads\n * them via HTTP, for simplicity. Once we've created the STLLoaderPlugin, we'll load our STL file as before.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_STL_dataSource)]\n *\n * ````javascript\n * // Our custom STL data access strategy - implementation happens to be the same as STLDefaultDataSource\n *\n * class MyDataSource {\n * getSTL(src, ok, error) {\n * const request = new XMLHttpRequest();\n * request.overrideMimeType(\"application/json\");\n * request.open('GET', src, true);\n * request.responseType = 'arraybuffer';\n * request.onreadystatechange = function () {\n * if (request.readyState === 4) {\n * if (request.status === 200) {\n * ok(request.response);\n * } else {\n * error(request.statusText);\n * }\n * }\n * };\n * request.send(null);\n * }\n * }\n *\n * const stlLoader = new STLLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * // Load the STL model as before\n * var model = plugin.load({\n * id: \"myModel\",\n * src: \"./models/stl/binary/spurGear.stl\",\n * scale: [0.1, 0.1, 0.1],\n * rotate: [90, 0, 0],\n * translate: [100,0,0],\n * edges: true,\n * smoothNormals: true, // Default\n * smoothNormalsAngleThreshold: 20, // Default\n * splitMeshes: true // Default\n * });\n *\n * //...\n *````\n *\n * @class STLLoaderPlugin\n */\nclass STLLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} [cfg] Plugin configuration.\n * @param {String} [cfg.id=\"STLLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.dataSource] A custom data source through which the STLLoaderPlugin can load STL files. Defaults to an instance of {@link STLDefaultDataSource}, which loads over HTTP.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"STLLoader\", viewer, cfg);\n\n /**\n * @private\n */\n this._sceneGraphLoader = new STLSceneGraphLoader();\n\n this.dataSource = cfg.dataSource;\n }\n\n /**\n * Sets a custom data source through which the STLLoaderPlugin can load STL files.\n *\n * Default value is {@link STLDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new STLDefaultDataSource();\n }\n\n /**\n * Gets the custom data source through which the STLLoaderPlugin can load STL files.\n *\n * Default value is {@link STLDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Loads an STL model from a file into this STLLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} params.id ID to assign to the model's root {@link Entity}, unique among all components in the Viewer's {@link Scene}.\n * @param {String} [params.src] Path to an STL file. Overrides the ````stl```` parameter.\n * @param {String} [params.stl] Contents of an STL file, either binary of ASCII. Overridden by the ````src```` parameter.\n * @param {Boolean} [params.edges=false] Whether or not to renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.backfaces=false] When true, allows visible backfaces, wherever specified in the STL. When false, ignores backfaces.\n * @param {Boolean} [params.smoothNormals=true] When true, automatically converts face-oriented normals to vertex normals for a smooth appearance.\n * @param {Number} [params.smoothNormalsAngleThreshold=20] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [params.edgeThreshold=20] When xraying, highlighting, selecting or edging, 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 Mesh} for each group of faces that share the same vertex colors. Only works with binary STL.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const modelNode = new Node(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n const src = params.src;\n const stl = params.stl;\n\n if (!src && !stl) {\n this.error(\"load() param expected: either 'src' or 'stl'\");\n return modelNode;\n }\n\n if (src) {\n this._sceneGraphLoader.load(this, modelNode, src, params);\n } else {\n this._sceneGraphLoader.parse(this, modelNode, stl, params);\n }\n\n return modelNode;\n }\n}\n\n\nexport {STLLoaderPlugin}", @@ -23915,7 +24443,7 @@ "lineNumber": 1 }, { - "__docId__": 1343, + "__docId__": 1361, "kind": "class", "name": "STLLoaderPlugin", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js", @@ -23939,7 +24467,7 @@ ] }, { - "__docId__": 1344, + "__docId__": 1362, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -24002,7 +24530,7 @@ ] }, { - "__docId__": 1345, + "__docId__": 1363, "kind": "member", "name": "_sceneGraphLoader", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -24019,7 +24547,7 @@ } }, { - "__docId__": 1347, + "__docId__": 1365, "kind": "set", "name": "dataSource", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -24040,7 +24568,7 @@ } }, { - "__docId__": 1348, + "__docId__": 1366, "kind": "member", "name": "_dataSource", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -24058,7 +24586,7 @@ } }, { - "__docId__": 1349, + "__docId__": 1367, "kind": "get", "name": "dataSource", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -24079,7 +24607,7 @@ } }, { - "__docId__": 1350, + "__docId__": 1368, "kind": "method", "name": "load", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -24313,7 +24841,7 @@ } }, { - "__docId__": 1351, + "__docId__": 1369, "kind": "file", "name": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", "content": "import {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {MetallicMaterial} from \"../../viewer/scene/materials/MetallicMaterial.js\";\nimport {math} from \"../../viewer/scene/math/math.js\";\nimport {worldToRTCPositions} from \"../../viewer/scene/math/rtcCoords.js\";\nimport {core} from \"../../viewer/scene/core.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass STLSceneGraphLoader {\n\n load(plugin, modelNode, src, options, ok, error) {\n\n options = options || {};\n\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n\n plugin.dataSource.getSTL(src, function (data) { // OK\n parse(plugin, modelNode, data, options);\n try {\n const binData = ensureBinary(data);\n if (isBinary(binData)) {\n parseBinary(plugin, binData, modelNode, options);\n } else {\n parseASCII(plugin, ensureString(data), modelNode, options);\n }\n spinner.processes--;\n core.scheduleTask(function () {\n modelNode.fire(\"loaded\", true, false);\n });\n if (ok) {\n ok();\n }\n } catch (e) {\n spinner.processes--;\n plugin.error(e);\n if (error) {\n error(e);\n }\n modelNode.fire(\"error\", e);\n }\n },\n function (msg) {\n spinner.processes--;\n plugin.error(msg);\n if (error) {\n error(msg);\n }\n modelNode.fire(\"error\", msg);\n });\n }\n\n parse(plugin, modelNode, data, options) {\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n try {\n const binData = ensureBinary(data);\n if (isBinary(binData)) {\n parseBinary(plugin, binData, modelNode, options);\n } else {\n parseASCII(plugin, ensureString(data), modelNode, options);\n }\n spinner.processes--;\n core.scheduleTask(function () {\n modelNode.fire(\"loaded\", true, false);\n });\n } catch (e) {\n spinner.processes--;\n modelNode.fire(\"error\", e);\n }\n }\n}\n\nfunction parse(plugin, modelNode, data, options) {\n try {\n const binData = ensureBinary(data);\n if (isBinary(binData)) {\n parseBinary(plugin, binData, modelNode, options);\n } else {\n parseASCII(plugin, ensureString(data), modelNode, options);\n }\n } catch (e) {\n modelNode.fire(\"error\", e);\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 (var 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(plugin, data, modelNode, options) {\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 const material = new MetallicMaterial(modelNode, { // Share material with all meshes\n roughness: 0.5\n });\n // var material = new PhongMaterial(modelNode, { // Share material with all meshes\n // diffuse: [0.4, 0.4, 0.4],\n // reflectivity: 1,\n // specular: [0.5, 0.5, 1.0]\n // });\n let dataOffset = 84;\n let faceLength = 12 * 4 + 2;\n let positions = [];\n let normals = [];\n let splitMeshes = options.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 normals.push(normalX, normalY, normalZ);\n if (hasColors) {\n colors.push(r, g, b, 1); // TODO: handle alpha\n }\n }\n if (splitMeshes && newMesh) {\n addMesh(modelNode, positions, normals, colors, material, options);\n positions = [];\n normals = [];\n colors = colors ? [] : null;\n newMesh = false;\n }\n }\n if (positions.length > 0) {\n addMesh(modelNode, positions, normals, colors, material, options);\n }\n}\n\nfunction parseASCII(plugin, data, modelNode, options) {\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 plugin.error(\"Error in normal of face \" + faceCounter);\n }\n if (verticesPerFace !== 3) {\n plugin.error(\"Error in positions of face \" + faceCounter);\n }\n faceCounter++;\n }\n const material = new MetallicMaterial(modelNode, {\n roughness: 0.5\n });\n // var material = new PhongMaterial(modelNode, {\n // diffuse: [0.4, 0.4, 0.4],\n // reflectivity: 1,\n // specular: [0.5, 0.5, 1.0]\n // });\n addMesh(modelNode, positions, normals, colors, material, options);\n}\n\nfunction addMesh(modelNode, positions, normals, colors, material, options) {\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 (options.smoothNormals) {\n math.faceToVertexNormals(positions, normals, options);\n }\n\n const origin = tempVec3a;\n\n worldToRTCPositions(positions, positions, origin);\n\n const geometry = new ReadableGeometry(modelNode, {\n primitive: \"triangles\",\n positions: positions,\n normals: normals,\n colors: colors,\n indices: indices\n });\n\n const mesh = new Mesh(modelNode, {\n origin: (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0) ? origin : null,\n geometry: geometry,\n material: material,\n edges: options.edges\n });\n\n modelNode.addChild(mesh);\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 {STLSceneGraphLoader}", @@ -24324,7 +24852,7 @@ "lineNumber": 1 }, { - "__docId__": 1352, + "__docId__": 1370, "kind": "variable", "name": "tempVec3a", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24345,7 +24873,7 @@ "ignore": true }, { - "__docId__": 1353, + "__docId__": 1371, "kind": "function", "name": "parse", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24390,7 +24918,7 @@ "ignore": true }, { - "__docId__": 1354, + "__docId__": 1372, "kind": "function", "name": "isBinary", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24421,7 +24949,7 @@ "ignore": true }, { - "__docId__": 1355, + "__docId__": 1373, "kind": "function", "name": "parseBinary", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24466,7 +24994,7 @@ "ignore": true }, { - "__docId__": 1356, + "__docId__": 1374, "kind": "function", "name": "parseASCII", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24511,7 +25039,7 @@ "ignore": true }, { - "__docId__": 1357, + "__docId__": 1375, "kind": "function", "name": "addMesh", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24568,7 +25096,7 @@ "ignore": true }, { - "__docId__": 1358, + "__docId__": 1376, "kind": "function", "name": "ensureString", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24599,7 +25127,7 @@ "ignore": true }, { - "__docId__": 1359, + "__docId__": 1377, "kind": "function", "name": "ensureBinary", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24630,7 +25158,7 @@ "ignore": true }, { - "__docId__": 1360, + "__docId__": 1378, "kind": "function", "name": "decodeText", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24661,7 +25189,7 @@ "ignore": true }, { - "__docId__": 1361, + "__docId__": 1379, "kind": "class", "name": "STLSceneGraphLoader", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -24677,7 +25205,7 @@ "ignore": true }, { - "__docId__": 1362, + "__docId__": 1380, "kind": "method", "name": "load", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js~STLSceneGraphLoader", @@ -24730,7 +25258,7 @@ "return": null }, { - "__docId__": 1363, + "__docId__": 1381, "kind": "method", "name": "parse", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js~STLSceneGraphLoader", @@ -24771,7 +25299,7 @@ "return": null }, { - "__docId__": 1364, + "__docId__": 1382, "kind": "file", "name": "src/plugins/STLLoaderPlugin/index.js", "content": "export * from \"./STLDefaultDataSource.js\";\nexport * from \"./STLLoaderPlugin.js\";", @@ -24782,7 +25310,7 @@ "lineNumber": 1 }, { - "__docId__": 1365, + "__docId__": 1383, "kind": "file", "name": "src/plugins/SectionPlanesPlugin/Control.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\n\nimport {buildCylinderGeometry} from \"../../viewer/scene/geometry/builders/buildCylinderGeometry.js\";\nimport {buildTorusGeometry} from \"../../viewer/scene/geometry/builders/buildTorusGeometry.js\";\n\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {PhongMaterial} from \"../../viewer/scene/materials/PhongMaterial.js\";\nimport {EmphasisMaterial} from \"../../viewer/scene/materials/EmphasisMaterial.js\";\nimport {Node} from \"../../viewer/scene/nodes/Node.js\";\nimport {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {buildSphereGeometry} from \"../../viewer/scene/geometry/builders/buildSphereGeometry.js\";\nimport {worldToRTCPos} from \"../../viewer/scene/math/rtcCoords.js\";\n\nconst zeroVec = new Float64Array([0, 0, 1]);\nconst quat = new Float64Array(4);\n\n/**\n * Controls a {@link SectionPlane} with mouse and touch input.\n *\n * @private\n */\nclass Control {\n\n /** @private */\n constructor(plugin) {\n\n /**\n * ID of this Control.\n *\n * SectionPlaneControls are mapped by this ID in {@link SectionPlanesPlugin#sectionPlaneControls}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = null;\n\n this._viewer = plugin.viewer;\n\n this._visible = false;\n this._pos = math.vec3(); // Full-precision position of the center of the Control\n this._origin = math.vec3();\n this._rtcPos = math.vec3();\n\n this._baseDir = math.vec3(); // Saves direction of clip plane when we start dragging an arrow or ring.\n this._rootNode = null; // Root of Node graph that represents this control in the 3D scene\n this._displayMeshes = null; // Meshes that are always visible\n this._affordanceMeshes = null; // Meshes displayed momentarily for affordance\n\n this._ignoreNextSectionPlaneDirUpdate = false;\n\n this._createNodes();\n this._bindEvents();\n }\n\n /**\n * Called by SectionPlanesPlugin to assign this Control to a SectionPlane.\n * SectionPlanesPlugin keeps SectionPlaneControls in a reuse pool.\n * Call with a null or undefined value to disconnect the Control ffrom whatever SectionPlane it was assigned to.\n * @private\n */\n _setSectionPlane(sectionPlane) {\n if (this._sectionPlane) {\n this._sectionPlane.off(this._onSectionPlanePos);\n this._sectionPlane.off(this._onSectionPlaneDir);\n this._onSectionPlanePos = null;\n this._onSectionPlaneDir = null;\n this._sectionPlane = null;\n }\n if (sectionPlane) {\n this.id = sectionPlane.id;\n this._setPos(sectionPlane.pos);\n this._setDir(sectionPlane.dir);\n this._sectionPlane = sectionPlane;\n this._onSectionPlanePos = sectionPlane.on(\"pos\", () => {\n this._setPos(this._sectionPlane.pos);\n });\n this._onSectionPlaneDir = sectionPlane.on(\"dir\", () => {\n if (!this._ignoreNextSectionPlaneDirUpdate) {\n this._setDir(this._sectionPlane.dir);\n } else {\n this._ignoreNextSectionPlaneDirUpdate = false;\n }\n });\n }\n }\n\n /**\n * Gets the {@link SectionPlane} controlled by this Control.\n * @returns {SectionPlane} The SectionPlane.\n */\n get sectionPlane() {\n return this._sectionPlane;\n }\n\n /** @private */\n _setPos(xyz) {\n\n this._pos.set(xyz);\n\n worldToRTCPos(this._pos, this._origin, this._rtcPos);\n\n this._rootNode.origin = this._origin;\n this._rootNode.position = this._rtcPos;\n }\n\n /** @private */\n _setDir(xyz) {\n this._baseDir.set(xyz);\n this._rootNode.quaternion = math.vec3PairToQuaternion(zeroVec, xyz, quat);\n }\n\n _setSectionPlaneDir(dir) {\n if (this._sectionPlane) {\n this._ignoreNextSectionPlaneDirUpdate = true;\n this._sectionPlane.dir = dir;\n }\n }\n\n /**\n * Sets if this Control is visible.\n *\n * @type {Boolean}\n */\n setVisible(visible = true) {\n if (this._visible === visible) {\n return;\n }\n this._visible = visible;\n var id;\n for (id in this._displayMeshes) {\n if (this._displayMeshes.hasOwnProperty(id)) {\n this._displayMeshes[id].visible = visible;\n }\n }\n if (!visible) {\n for (id in this._affordanceMeshes) {\n if (this._affordanceMeshes.hasOwnProperty(id)) {\n this._affordanceMeshes[id].visible = visible;\n }\n }\n }\n }\n\n /**\n * Gets if this Control is visible.\n *\n * @type {Boolean}\n */\n getVisible() {\n return this._visible;\n }\n\n /**\n * Sets if this Control is culled. This is called by SectionPlanesPlugin to\n * temporarily hide the Control while a snapshot is being taken by Viewer#getSnapshot().\n * @param culled\n */\n setCulled(culled) {\n var id;\n for (id in this._displayMeshes) {\n if (this._displayMeshes.hasOwnProperty(id)) {\n this._displayMeshes[id].culled = culled;\n }\n }\n if (!culled) {\n for (id in this._affordanceMeshes) {\n if (this._affordanceMeshes.hasOwnProperty(id)) {\n this._affordanceMeshes[id].culled = culled;\n }\n }\n }\n }\n\n /**\n * Builds the Entities that represent this Control.\n * @private\n */\n _createNodes() {\n\n const NO_STATE_INHERIT = false;\n const scene = this._viewer.scene;\n const radius = 1.0;\n const handleTubeRadius = 0.06;\n const hoopRadius = radius - 0.2;\n const tubeRadius = 0.01;\n const arrowRadius = 0.07;\n\n this._rootNode = new Node(scene, {\n position: [0, 0, 0],\n scale: [5, 5, 5],\n isObject: false\n });\n\n const rootNode = this._rootNode;\n\n const shapes = {// Reusable geometries\n\n arrowHead: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.001,\n radiusBottom: arrowRadius,\n radialSegments: 32,\n heightSegments: 1,\n height: 0.2,\n openEnded: false\n })),\n\n arrowHeadBig: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.001,\n radiusBottom: 0.09,\n radialSegments: 32,\n heightSegments: 1,\n height: 0.25,\n openEnded: false\n })),\n\n arrowHeadHandle: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.09,\n radiusBottom: 0.09,\n radialSegments: 8,\n heightSegments: 1,\n height: 0.37,\n openEnded: false\n })),\n\n curve: new ReadableGeometry(rootNode, buildTorusGeometry({\n radius: hoopRadius,\n tube: tubeRadius,\n radialSegments: 64,\n tubeSegments: 14,\n arc: (Math.PI * 2.0) / 4.0\n })),\n\n curveHandle: new ReadableGeometry(rootNode, buildTorusGeometry({\n radius: hoopRadius,\n tube: handleTubeRadius,\n radialSegments: 64,\n tubeSegments: 14,\n arc: (Math.PI * 2.0) / 4.0\n })),\n\n hoop: new ReadableGeometry(rootNode, buildTorusGeometry({\n radius: hoopRadius,\n tube: tubeRadius,\n radialSegments: 64,\n tubeSegments: 8,\n arc: (Math.PI * 2.0)\n })),\n\n axis: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: tubeRadius,\n radiusBottom: tubeRadius,\n radialSegments: 20,\n heightSegments: 1,\n height: radius,\n openEnded: false\n })),\n\n axisHandle: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.08,\n radiusBottom: 0.08,\n radialSegments: 20,\n heightSegments: 1,\n height: radius,\n openEnded: false\n }))\n };\n\n const materials = { // Reusable materials\n\n pickable: new PhongMaterial(rootNode, { // Invisible material for pickable handles, which define a pickable 3D area\n diffuse: [1, 1, 0],\n alpha: 0, // Invisible\n alphaMode: \"blend\"\n }),\n\n red: new PhongMaterial(rootNode, {\n diffuse: [1, 0.0, 0.0],\n emissive: [1, 0.0, 0.0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n highlightRed: new EmphasisMaterial(rootNode, { // Emphasis for red rotation affordance hoop\n edges: false,\n fill: true,\n fillColor: [1, 0, 0],\n fillAlpha: 0.6\n }),\n\n green: new PhongMaterial(rootNode, {\n diffuse: [0.0, 1, 0.0],\n emissive: [0.0, 1, 0.0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n highlightGreen: new EmphasisMaterial(rootNode, { // Emphasis for green rotation affordance hoop\n edges: false,\n fill: true,\n fillColor: [0, 1, 0],\n fillAlpha: 0.6\n }),\n\n blue: new PhongMaterial(rootNode, {\n diffuse: [0.0, 0.0, 1],\n emissive: [0.0, 0.0, 1],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n highlightBlue: new EmphasisMaterial(rootNode, { // Emphasis for blue rotation affordance hoop\n edges: false,\n fill: true,\n fillColor: [0, 0, 1],\n fillAlpha: 0.2\n }),\n\n center: new PhongMaterial(rootNode, {\n diffuse: [0.0, 0.0, 0.0],\n emissive: [0, 0, 0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80\n }),\n\n highlightBall: new EmphasisMaterial(rootNode, {\n edges: false,\n fill: true,\n fillColor: [0.5, 0.5, 0.5],\n fillAlpha: 0.5,\n vertices: false\n }),\n\n highlightPlane: new EmphasisMaterial(rootNode, {\n edges: true,\n edgeWidth: 3,\n fill: false,\n fillColor: [0.5, 0.5, .5],\n fillAlpha: 0.5,\n vertices: false\n })\n };\n\n this._displayMeshes = {\n\n plane: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, {\n primitive: \"triangles\",\n positions: [\n 0.5, 0.5, 0.0, 0.5, -0.5, 0.0, // 0\n -0.5, -0.5, 0.0, -0.5, 0.5, 0.0, // 1\n 0.5, 0.5, -0.0, 0.5, -0.5, -0.0, // 2\n -0.5, -0.5, -0.0, -0.5, 0.5, -0.0 // 3\n ],\n indices: [0, 1, 2, 2, 3, 0]\n }),\n material: new PhongMaterial(rootNode, {\n emissive: [0, 0.0, 0],\n diffuse: [0, 0, 0],\n backfaces: true\n }),\n opacity: 0.6,\n ghosted: true,\n ghostMaterial: new EmphasisMaterial(rootNode, {\n edges: false,\n filled: true,\n fillColor: [1, 1, 0],\n edgeColor: [0, 0, 0],\n fillAlpha: 0.1,\n backfaces: true\n }),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n scale: [2.4, 2.4, 1],\n isObject: false\n }), NO_STATE_INHERIT),\n\n planeFrame: rootNode.addChild(new Mesh(rootNode, { // Visible frame\n geometry: new ReadableGeometry(rootNode, buildTorusGeometry({\n center: [0, 0, 0],\n radius: 1.7,\n tube: tubeRadius * 2,\n radialSegments: 4,\n tubeSegments: 4,\n arc: Math.PI * 2.0\n })),\n material: new PhongMaterial(rootNode, {\n emissive: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n shininess: 0\n }),\n //highlighted: true,\n highlightMaterial: new EmphasisMaterial(rootNode, {\n edges: false,\n edgeColor: [0.0, 0.0, 0.0],\n filled: true,\n fillColor: [0.8, 0.8, 0.8],\n fillAlpha: 1.0\n }),\n pickable: false,\n collidable: false,\n clippable: false,\n visible: false,\n scale: [1, 1, .1],\n rotation: [0, 0, 45],\n isObject: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n xCurve: rootNode.addChild(new Mesh(rootNode, { // Red hoop about Y-axis\n geometry: shapes.curve,\n material: materials.red,\n matrix: (function () {\n const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());\n const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate1, rotate2, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n xCurveHandle: rootNode.addChild(new Mesh(rootNode, { // Red hoop about Y-axis\n geometry: shapes.curveHandle,\n material: materials.pickable,\n matrix: (function () {\n const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());\n const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate1, rotate2, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n xCurveArrow1: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0., -0.07, -0.8, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(0 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n xCurveArrow2: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0.0, -0.8, -0.07, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n yCurve: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.curve,\n material: materials.green,\n rotation: [-90, 0, 0],\n pickable: false,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n yCurveHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.curveHandle,\n material: materials.pickable,\n rotation: [-90, 0, 0],\n pickable: true,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n yCurveArrow1: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.green,\n matrix: (function () {\n const translate = math.translateMat4c(0.07, 0, -0.8, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n yCurveArrow2: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.green,\n matrix: (function () {\n const translate = math.translateMat4c(0.8, 0.0, -0.07, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n zCurve: rootNode.addChild(new Mesh(rootNode, { // Blue hoop about Z-axis\n geometry: shapes.curve,\n material: materials.blue,\n matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n zCurveHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.curveHandle,\n material: materials.pickable,\n matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n zCurveCurveArrow1: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(.8, -0.07, 0, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n return math.mulMat4(translate, scale, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n zCurveArrow2: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(.05, -0.8, 0, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n center: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, buildSphereGeometry({\n radius: 0.05\n })),\n material: materials.center,\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n xAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n xAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n xAxis: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axis,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n xAxisHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axisHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n yAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.green,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n yAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n opacity: 0.2,\n isObject: false\n }), NO_STATE_INHERIT),\n\n yShaft: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axis,\n material: materials.green,\n position: [0, -radius / 2, 0],\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n yShaftHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axisHandle,\n material: materials.pickable,\n position: [0, -radius / 2, 0],\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n zAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n zAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n\n zShaft: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axis,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n clippable: false,\n pickable: false,\n collidable: true,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n zAxisHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axisHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n clippable: false,\n pickable: true,\n collidable: true,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT)\n };\n\n this._affordanceMeshes = {\n\n planeFrame: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, buildTorusGeometry({\n center: [0, 0, 0],\n radius: 2,\n tube: tubeRadius,\n radialSegments: 4,\n tubeSegments: 4,\n arc: Math.PI * 2.0\n })),\n material: new PhongMaterial(rootNode, {\n ambient: [1, 1, 1],\n diffuse: [0, 0, 0],\n emissive: [1, 1, 0]\n }),\n highlighted: true,\n highlightMaterial: new EmphasisMaterial(rootNode, {\n edges: false,\n filled: true,\n fillColor: [1, 1, 0],\n fillAlpha: 1.0\n }),\n pickable: false,\n collidable: false,\n clippable: false,\n visible: false,\n scale: [1, 1, 1],\n rotation: [0, 0, 45],\n isObject: false\n }), NO_STATE_INHERIT),\n\n xHoop: rootNode.addChild(new Mesh(rootNode, { // Full\n geometry: shapes.hoop,\n material: materials.red,\n highlighted: true,\n highlightMaterial: materials.highlightRed,\n matrix: (function () {\n const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());\n const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate1, rotate2, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n yHoop: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.hoop,\n material: materials.green,\n highlighted: true,\n highlightMaterial: materials.highlightGreen,\n rotation: [-90, 0, 0],\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n zHoop: rootNode.addChild(new Mesh(rootNode, { // Blue hoop about Z-axis\n geometry: shapes.hoop,\n material: materials.blue,\n highlighted: true,\n highlightMaterial: materials.highlightBlue,\n matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),\n pickable: false,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n xAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadBig,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n yAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadBig,\n material: materials.green,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT),\n\n zAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadBig,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n isObject: false\n }), NO_STATE_INHERIT)\n };\n }\n\n _bindEvents() {\n\n const self = this;\n\n var grabbed = false;\n\n const DRAG_ACTIONS = {\n none: -1,\n xTranslate: 0,\n yTranslate: 1,\n zTranslate: 2,\n xRotate: 3,\n yRotate: 4,\n zRotate: 5\n };\n\n const rootNode = this._rootNode;\n\n var nextDragAction = null; // As we hover grabbed an arrow or hoop, self is the action we would do if we then dragged it.\n var dragAction = null; // Action we're doing while we drag an arrow or hoop.\n const lastCanvasPos = math.vec2();\n\n const xBaseAxis = math.vec3([1, 0, 0]);\n const yBaseAxis = math.vec3([0, 1, 0]);\n const zBaseAxis = math.vec3([0, 0, 1]);\n\n const canvas = this._viewer.scene.canvas.canvas;\n const camera = this._viewer.camera;\n const scene = this._viewer.scene;\n\n { // Keep gizmo screen size constant\n\n const tempVec3a = math.vec3([0, 0, 0]);\n\n let distDirty = true;\n let lastDist = -1;\n\n this._onCameraViewMatrix = scene.camera.on(\"viewMatrix\", () => {\n distDirty = true;\n });\n\n this._onCameraProjMatrix = scene.camera.on(\"projMatrix\", () => {\n distDirty = true;\n });\n\n this._onSceneTick = scene.on(\"tick\", () => {\n\n const dist = Math.abs(math.lenVec3(math.subVec3(scene.camera.eye, this._pos, tempVec3a)));\n\n if (dist !== lastDist) {\n if (camera.projection === \"perspective\") {\n const worldSize = (Math.tan(camera.perspective.fov * math.DEGTORAD)) * dist;\n const size = 0.07 * worldSize;\n rootNode.scale = [size, size, size];\n lastDist = dist;\n }\n }\n\n if (camera.projection === \"ortho\") {\n const worldSize = camera.ortho.scale / 10;\n const size = worldSize;\n rootNode.scale = [size, size, size];\n lastDist = dist;\n }\n });\n }\n\n const getClickCoordsWithinElement = (function () {\n const canvasPos = new Float64Array(2);\n return function (event) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n var element = event.target;\n var totalOffsetLeft = 0;\n var totalOffsetTop = 0;\n\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX - totalOffsetLeft;\n canvasPos[1] = event.pageY - totalOffsetTop;\n }\n return canvasPos;\n };\n })();\n\n const localToWorldVec = (function () {\n const mat = math.mat4();\n return function (localVec, worldVec) {\n math.quaternionToMat4(self._rootNode.quaternion, mat);\n math.transformVec3(mat, localVec, worldVec);\n math.normalizeVec3(worldVec);\n return worldVec;\n };\n })();\n\n var getTranslationPlane = (function () {\n const planeNormal = math.vec3();\n return function (worldAxis) {\n const absX = Math.abs(worldAxis[0]);\n if (absX > Math.abs(worldAxis[1]) && absX > Math.abs(worldAxis[2])) {\n math.cross3Vec3(worldAxis, [0, 1, 0], planeNormal);\n } else {\n math.cross3Vec3(worldAxis, [1, 0, 0], planeNormal);\n }\n math.cross3Vec3(planeNormal, worldAxis, planeNormal);\n math.normalizeVec3(planeNormal);\n return planeNormal;\n }\n })();\n\n const dragTranslateSectionPlane = (function () {\n const p1 = math.vec3();\n const p2 = math.vec3();\n const worldAxis = math.vec4();\n return function (baseAxis, fromMouse, toMouse) {\n localToWorldVec(baseAxis, worldAxis);\n const planeNormal = getTranslationPlane(worldAxis, fromMouse, toMouse);\n getPointerPlaneIntersect(fromMouse, planeNormal, p1);\n getPointerPlaneIntersect(toMouse, planeNormal, p2);\n math.subVec3(p2, p1);\n const dot = math.dotVec3(p2, worldAxis);\n self._pos[0] += worldAxis[0] * dot;\n self._pos[1] += worldAxis[1] * dot;\n self._pos[2] += worldAxis[2] * dot;\n self._rootNode.position = self._pos;\n if (self._sectionPlane) {\n self._sectionPlane.pos = self._pos;\n }\n }\n })();\n\n var dragRotateSectionPlane = (function () {\n const p1 = math.vec4();\n const p2 = math.vec4();\n const c = math.vec4();\n const worldAxis = math.vec4();\n return function (baseAxis, fromMouse, toMouse) {\n localToWorldVec(baseAxis, worldAxis);\n const hasData = getPointerPlaneIntersect(fromMouse, worldAxis, p1) && getPointerPlaneIntersect(toMouse, worldAxis, p2);\n if (!hasData) { // Find intersections with view plane and project down to origin\n const planeNormal = getTranslationPlane(worldAxis, fromMouse, toMouse);\n getPointerPlaneIntersect(fromMouse, planeNormal, p1, 1); // Ensure plane moves closer to camera so angles become workable\n getPointerPlaneIntersect(toMouse, planeNormal, p2, 1);\n var dot = math.dotVec3(p1, worldAxis);\n p1[0] -= dot * worldAxis[0];\n p1[1] -= dot * worldAxis[1];\n p1[2] -= dot * worldAxis[2];\n dot = math.dotVec3(p2, worldAxis);\n p2[0] -= dot * worldAxis[0];\n p2[1] -= dot * worldAxis[1];\n p2[2] -= dot * worldAxis[2];\n }\n math.normalizeVec3(p1);\n math.normalizeVec3(p2);\n dot = math.dotVec3(p1, p2);\n dot = math.clamp(dot, -1.0, 1.0); // Rounding errors cause dot to exceed allowed range\n var incDegrees = Math.acos(dot) * math.RADTODEG;\n math.cross3Vec3(p1, p2, c);\n if (math.dotVec3(c, worldAxis) < 0.0) {\n incDegrees = -incDegrees;\n }\n self._rootNode.rotate(baseAxis, incDegrees);\n rotateSectionPlane();\n }\n })();\n\n var getPointerPlaneIntersect = (function () {\n const dir = math.vec4([0, 0, 0, 1]);\n const matrix = math.mat4();\n return function (mouse, axis, dest, offset) {\n offset = offset || 0;\n dir[0] = mouse[0] / canvas.width * 2.0 - 1.0;\n dir[1] = -(mouse[1] / canvas.height * 2.0 - 1.0);\n dir[2] = 0.0;\n dir[3] = 1.0;\n math.mulMat4(camera.projMatrix, camera.viewMatrix, matrix); // Unproject norm device coords to view coords\n math.inverseMat4(matrix);\n math.transformVec4(matrix, dir, dir);\n math.mulVec4Scalar(dir, 1.0 / dir[3]); // This is now point A on the ray in world space\n var rayO = camera.eye; // The direction\n math.subVec4(dir, rayO, dir);\n const origin = self._sectionPlane.pos; // Plane origin:\n var d = -math.dotVec3(origin, axis) - offset;\n var dot = math.dotVec3(axis, dir);\n if (Math.abs(dot) > 0.005) {\n var t = -(math.dotVec3(axis, rayO) + d) / dot;\n math.mulVec3Scalar(dir, t, dest);\n math.addVec3(dest, rayO);\n math.subVec3(dest, origin, dest);\n return true;\n }\n return false;\n }\n })();\n\n const rotateSectionPlane = (function () {\n const dir = math.vec3();\n const mat = math.mat4();\n return function () {\n if (self.sectionPlane) {\n math.quaternionToMat4(rootNode.quaternion, mat); // << ---\n math.transformVec3(mat, [0, 0, 1], dir);\n self._setSectionPlaneDir(dir);\n }\n };\n })();\n\n {\n var mouseDownLeft;\n var mouseDownMiddle;\n var mouseDownRight;\n var down = false;\n var lastAffordanceMesh;\n\n this._onCameraControlHover = this._viewer.cameraControl.on(\"hoverEnter\", (hit) => {\n if (!this._visible) {\n return;\n }\n if (down) {\n return;\n }\n grabbed = false;\n if (lastAffordanceMesh) {\n lastAffordanceMesh.visible = false;\n }\n var affordanceMesh;\n const meshId = hit.entity.id;\n switch (meshId) {\n\n case this._displayMeshes.xAxisArrowHandle.id:\n affordanceMesh = this._affordanceMeshes.xAxisArrow;\n nextDragAction = DRAG_ACTIONS.xTranslate;\n break;\n\n case this._displayMeshes.xAxisHandle.id:\n affordanceMesh = this._affordanceMeshes.xAxisArrow;\n nextDragAction = DRAG_ACTIONS.xTranslate;\n break;\n\n case this._displayMeshes.yAxisArrowHandle.id:\n affordanceMesh = this._affordanceMeshes.yAxisArrow;\n nextDragAction = DRAG_ACTIONS.yTranslate;\n break;\n\n case this._displayMeshes.yShaftHandle.id:\n affordanceMesh = this._affordanceMeshes.yAxisArrow;\n nextDragAction = DRAG_ACTIONS.yTranslate;\n break;\n\n case this._displayMeshes.zAxisArrowHandle.id:\n affordanceMesh = this._affordanceMeshes.zAxisArrow;\n nextDragAction = DRAG_ACTIONS.zTranslate;\n break;\n\n case this._displayMeshes.zAxisHandle.id:\n affordanceMesh = this._affordanceMeshes.zAxisArrow;\n nextDragAction = DRAG_ACTIONS.zTranslate;\n break;\n\n case this._displayMeshes.xCurveHandle.id:\n affordanceMesh = this._affordanceMeshes.xHoop;\n nextDragAction = DRAG_ACTIONS.xRotate;\n break;\n\n case this._displayMeshes.yCurveHandle.id:\n affordanceMesh = this._affordanceMeshes.yHoop;\n nextDragAction = DRAG_ACTIONS.yRotate;\n break;\n\n case this._displayMeshes.zCurveHandle.id:\n affordanceMesh = this._affordanceMeshes.zHoop;\n nextDragAction = DRAG_ACTIONS.zRotate;\n break;\n\n default:\n nextDragAction = DRAG_ACTIONS.none;\n return; // Not clicked an arrow or hoop\n }\n if (affordanceMesh) {\n affordanceMesh.visible = true;\n }\n lastAffordanceMesh = affordanceMesh;\n grabbed = true;\n });\n\n this._onCameraControlHoverLeave = this._viewer.cameraControl.on(\"hoverOutEntity\", (hit) => {\n if (!this._visible) {\n return;\n }\n if (lastAffordanceMesh) {\n lastAffordanceMesh.visible = false;\n }\n lastAffordanceMesh = null;\n nextDragAction = DRAG_ACTIONS.none;\n });\n\n canvas.addEventListener(\"mousedown\", this._canvasMouseDownListener = (e) => {\n e.preventDefault();\n if (!this._visible) {\n return;\n }\n if (!grabbed) {\n return;\n }\n this._viewer.cameraControl.pointerEnabled = false;\n switch (e.which) {\n case 1: // Left button\n mouseDownLeft = true;\n down = true;\n var canvasPos = getClickCoordsWithinElement(e);\n dragAction = nextDragAction;\n lastCanvasPos[0] = canvasPos[0];\n lastCanvasPos[1] = canvasPos[1];\n break;\n\n default:\n break;\n }\n });\n\n canvas.addEventListener(\"mousemove\", this._canvasMouseMoveListener = (e) => {\n if (!this._visible) {\n return;\n }\n if (!down) {\n return;\n }\n var canvasPos = getClickCoordsWithinElement(e);\n const x = canvasPos[0];\n const y = canvasPos[1];\n\n switch (dragAction) {\n case DRAG_ACTIONS.xTranslate:\n dragTranslateSectionPlane(xBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.yTranslate:\n dragTranslateSectionPlane(yBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.zTranslate:\n dragTranslateSectionPlane(zBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.xRotate:\n dragRotateSectionPlane(xBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.yRotate:\n dragRotateSectionPlane(yBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.zRotate:\n dragRotateSectionPlane(zBaseAxis, lastCanvasPos, canvasPos);\n break;\n }\n\n lastCanvasPos[0] = x;\n lastCanvasPos[1] = y;\n });\n\n canvas.addEventListener(\"mouseup\", this._canvasMouseUpListener = (e) => {\n if (!this._visible) {\n return;\n }\n this._viewer.cameraControl.pointerEnabled = true;\n if (!down) {\n return;\n }\n switch (e.which) {\n case 1: // Left button\n mouseDownLeft = false;\n break;\n case 2: // Middle/both buttons\n mouseDownMiddle = false;\n break;\n case 3: // Right button\n mouseDownRight = false;\n break;\n default:\n break;\n }\n down = false;\n grabbed = false;\n });\n\n canvas.addEventListener(\"wheel\", this._canvasWheelListener = (e) => {\n if (!this._visible) {\n return;\n }\n var delta = Math.max(-1, Math.min(1, -e.deltaY * 40));\n if (delta === 0) {\n return;\n }\n });\n }\n }\n\n _destroy() {\n this._unbindEvents();\n this._destroyNodes();\n }\n\n _unbindEvents() {\n\n const viewer = this._viewer;\n const scene = viewer.scene;\n const canvas = scene.canvas.canvas;\n const camera = viewer.camera;\n const cameraControl = viewer.cameraControl;\n\n scene.off(this._onSceneTick);\n\n canvas.removeEventListener(\"mousedown\", this._canvasMouseDownListener);\n canvas.removeEventListener(\"mousemove\", this._canvasMouseMoveListener);\n canvas.removeEventListener(\"mouseup\", this._canvasMouseUpListener);\n canvas.removeEventListener(\"wheel\", this._canvasWheelListener);\n\n camera.off(this._onCameraViewMatrix);\n camera.off(this._onCameraProjMatrix);\n\n cameraControl.off(this._onCameraControlHover);\n cameraControl.off(this._onCameraControlHoverLeave);\n }\n\n _destroyNodes() {\n this._setSectionPlane(null);\n this._rootNode.destroy();\n this._displayMeshes = {};\n this._affordanceMeshes = {};\n }\n}\n\nexport {Control};", @@ -24793,7 +25321,7 @@ "lineNumber": 1 }, { - "__docId__": 1366, + "__docId__": 1384, "kind": "variable", "name": "zeroVec", "memberof": "src/plugins/SectionPlanesPlugin/Control.js", @@ -24814,7 +25342,7 @@ "ignore": true }, { - "__docId__": 1367, + "__docId__": 1385, "kind": "variable", "name": "quat", "memberof": "src/plugins/SectionPlanesPlugin/Control.js", @@ -24835,7 +25363,7 @@ "ignore": true }, { - "__docId__": 1368, + "__docId__": 1386, "kind": "class", "name": "Control", "memberof": "src/plugins/SectionPlanesPlugin/Control.js", @@ -24851,7 +25379,7 @@ "ignore": true }, { - "__docId__": 1369, + "__docId__": 1387, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -24865,7 +25393,7 @@ "ignore": true }, { - "__docId__": 1370, + "__docId__": 1388, "kind": "member", "name": "id", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -24897,7 +25425,7 @@ } }, { - "__docId__": 1371, + "__docId__": 1389, "kind": "member", "name": "_viewer", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -24915,7 +25443,7 @@ } }, { - "__docId__": 1372, + "__docId__": 1390, "kind": "member", "name": "_visible", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -24933,7 +25461,7 @@ } }, { - "__docId__": 1373, + "__docId__": 1391, "kind": "member", "name": "_pos", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -24951,7 +25479,7 @@ } }, { - "__docId__": 1374, + "__docId__": 1392, "kind": "member", "name": "_origin", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -24969,7 +25497,7 @@ } }, { - "__docId__": 1375, + "__docId__": 1393, "kind": "member", "name": "_rtcPos", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -24987,7 +25515,7 @@ } }, { - "__docId__": 1376, + "__docId__": 1394, "kind": "member", "name": "_baseDir", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25005,7 +25533,7 @@ } }, { - "__docId__": 1377, + "__docId__": 1395, "kind": "member", "name": "_rootNode", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25023,7 +25551,7 @@ } }, { - "__docId__": 1378, + "__docId__": 1396, "kind": "member", "name": "_displayMeshes", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25041,7 +25569,7 @@ } }, { - "__docId__": 1379, + "__docId__": 1397, "kind": "member", "name": "_affordanceMeshes", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25059,7 +25587,7 @@ } }, { - "__docId__": 1380, + "__docId__": 1398, "kind": "member", "name": "_ignoreNextSectionPlaneDirUpdate", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25077,7 +25605,7 @@ } }, { - "__docId__": 1381, + "__docId__": 1399, "kind": "method", "name": "_setSectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25100,7 +25628,7 @@ "return": null }, { - "__docId__": 1382, + "__docId__": 1400, "kind": "member", "name": "_onSectionPlanePos", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25118,7 +25646,7 @@ } }, { - "__docId__": 1383, + "__docId__": 1401, "kind": "member", "name": "_onSectionPlaneDir", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25136,7 +25664,7 @@ } }, { - "__docId__": 1384, + "__docId__": 1402, "kind": "member", "name": "_sectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25154,7 +25682,7 @@ } }, { - "__docId__": 1390, + "__docId__": 1408, "kind": "get", "name": "sectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25186,7 +25714,7 @@ } }, { - "__docId__": 1391, + "__docId__": 1409, "kind": "method", "name": "_setPos", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25209,7 +25737,7 @@ "return": null }, { - "__docId__": 1392, + "__docId__": 1410, "kind": "method", "name": "_setDir", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25232,7 +25760,7 @@ "return": null }, { - "__docId__": 1393, + "__docId__": 1411, "kind": "method", "name": "_setSectionPlaneDir", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25256,7 +25784,7 @@ "return": null }, { - "__docId__": 1395, + "__docId__": 1413, "kind": "method", "name": "setVisible", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25289,7 +25817,7 @@ "return": null }, { - "__docId__": 1397, + "__docId__": 1415, "kind": "method", "name": "getVisible", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25316,7 +25844,7 @@ } }, { - "__docId__": 1398, + "__docId__": 1416, "kind": "method", "name": "setCulled", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25342,7 +25870,7 @@ "return": null }, { - "__docId__": 1399, + "__docId__": 1417, "kind": "method", "name": "_createNodes", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25358,7 +25886,7 @@ "return": null }, { - "__docId__": 1403, + "__docId__": 1421, "kind": "method", "name": "_bindEvents", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25375,7 +25903,7 @@ "return": null }, { - "__docId__": 1404, + "__docId__": 1422, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25393,7 +25921,7 @@ } }, { - "__docId__": 1405, + "__docId__": 1423, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25411,7 +25939,7 @@ } }, { - "__docId__": 1406, + "__docId__": 1424, "kind": "member", "name": "_onSceneTick", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25429,7 +25957,7 @@ } }, { - "__docId__": 1407, + "__docId__": 1425, "kind": "member", "name": "_onCameraControlHover", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25447,7 +25975,7 @@ } }, { - "__docId__": 1408, + "__docId__": 1426, "kind": "member", "name": "_onCameraControlHoverLeave", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25465,7 +25993,7 @@ } }, { - "__docId__": 1409, + "__docId__": 1427, "kind": "method", "name": "_destroy", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25482,7 +26010,7 @@ "return": null }, { - "__docId__": 1410, + "__docId__": 1428, "kind": "method", "name": "_unbindEvents", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25499,7 +26027,7 @@ "return": null }, { - "__docId__": 1411, + "__docId__": 1429, "kind": "method", "name": "_destroyNodes", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -25516,7 +26044,7 @@ "return": null }, { - "__docId__": 1414, + "__docId__": 1432, "kind": "file", "name": "src/plugins/SectionPlanesPlugin/Overview.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\nimport {Scene} from \"../../viewer/scene/scene/Scene.js\";\nimport {DirLight} from \"./../../viewer/scene/lights/DirLight.js\";\nimport {Plane} from \"./Plane.js\";\n\n/**\n * @desc An interactive 3D overview for navigating the {@link SectionPlane}s created by its {@link SectionPlanesPlugin}.\n *\n * * Located at {@link SectionPlanesPlugin#overview}.\n * * Renders the overview on a separate canvas at a corner of the {@link Viewer}'s {@link Scene} {@link Canvas}.\n * * The overview shows a 3D plane object for each {@link SectionPlane} in the {@link Scene}.\n * * Click a plane object in the overview to toggle the visibility of a 3D gizmo to edit the position and orientation of its {@link SectionPlane}.\n *\n * @private\n */\nclass Overview {\n\n /**\n * @private\n */\n constructor(plugin, cfg) {\n\n if (!cfg.onHoverEnterPlane || !cfg.onHoverLeavePlane || !cfg.onClickedNothing || !cfg.onClickedPlane) {\n throw \"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane\";\n }\n\n /**\n * The {@link SectionPlanesPlugin} that owns this SectionPlanesOverview.\n *\n * @type {SectionPlanesPlugin}\n */\n this.plugin = plugin;\n\n this._viewer = plugin.viewer;\n\n this._onHoverEnterPlane = cfg.onHoverEnterPlane;\n this._onHoverLeavePlane = cfg.onHoverLeavePlane;\n this._onClickedNothing = cfg.onClickedNothing;\n this._onClickedPlane = cfg.onClickedPlane;\n this._visible = true;\n\n this._planes = {};\n\n //--------------------------------------------------------------------------------------------------------------\n // Init canvas\n //--------------------------------------------------------------------------------------------------------------\n\n this._canvas = cfg.overviewCanvas;\n\n //--------------------------------------------------------------------------------------------------------------\n // Init scene\n //--------------------------------------------------------------------------------------------------------------\n\n this._scene = new Scene(this._viewer, {\n canvasId: this._canvas.id,\n transparent: true\n });\n this._scene.clearLights();\n new DirLight(this._scene, {\n dir: [0.4, -0.4, 0.8],\n color: [0.8, 1.0, 1.0],\n intensity: 1.0,\n space: \"view\"\n });\n new DirLight(this._scene, {\n dir: [-0.8, -0.3, -0.4],\n color: [0.8, 0.8, 0.8],\n intensity: 1.0,\n space: \"view\"\n });\n new DirLight(this._scene, {\n dir: [0.8, -0.6, -0.8],\n color: [1.0, 1.0, 1.0],\n intensity: 1.0,\n space: \"view\"\n });\n\n this._scene.camera;\n this._scene.camera.perspective.fov = 70;\n\n this._zUp = false;\n\n //--------------------------------------------------------------------------------------------------------------\n // Synchronize overview scene camera with viewer camera\n //--------------------------------------------------------------------------------------------------------------\n\n {\n const camera = this._scene.camera;\n const matrix = math.rotationMat4c(-90 * math.DEGTORAD, 1, 0, 0);\n const eyeLookVec = math.vec3();\n const eyeLookVecOverview = math.vec3();\n const upOverview = math.vec3();\n\n this._synchCamera = () => {\n const eye = this._viewer.camera.eye;\n const look = this._viewer.camera.look;\n const up = this._viewer.camera.up;\n math.mulVec3Scalar(math.normalizeVec3(math.subVec3(eye, look, eyeLookVec)), 7);\n if (this._zUp) { // +Z up\n math.transformVec3(matrix, eyeLookVec, eyeLookVecOverview);\n math.transformVec3(matrix, up, upOverview);\n camera.look = [0, 0, 0];\n camera.eye = math.transformVec3(matrix, eyeLookVec, eyeLookVecOverview);\n camera.up = math.transformPoint3(matrix, up, upOverview);\n } else { // +Y up\n camera.look = [0, 0, 0];\n camera.eye = eyeLookVec;\n camera.up = up;\n }\n };\n }\n\n this._onViewerCameraMatrix = this._viewer.camera.on(\"matrix\", this._synchCamera);\n\n this._onViewerCameraWorldAxis = this._viewer.camera.on(\"worldAxis\", this._synchCamera);\n\n this._onViewerCameraFOV = this._viewer.camera.perspective.on(\"fov\", (fov) => {\n this._scene.camera.perspective.fov = fov;\n });\n\n //--------------------------------------------------------------------------------------------------------------\n // Bind overview canvas events\n //--------------------------------------------------------------------------------------------------------------\n\n {\n var hoveredEntity = null;\n\n this._onInputMouseMove = this._scene.input.on(\"mousemove\", (coords) => {\n const hit = this._scene.pick({\n canvasPos: coords\n });\n if (hit) {\n if (!hoveredEntity || hit.entity.id !== hoveredEntity.id) {\n if (hoveredEntity) {\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onHoverLeavePlane(hoveredEntity.id);\n }\n }\n hoveredEntity = hit.entity;\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onHoverEnterPlane(hoveredEntity.id);\n }\n }\n } else {\n if (hoveredEntity) {\n this._onHoverLeavePlane(hoveredEntity.id);\n hoveredEntity = null;\n }\n }\n });\n\n this._scene.canvas.canvas.addEventListener(\"mouseup\", this._onCanvasMouseUp = () => {\n if (hoveredEntity) {\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onClickedPlane(hoveredEntity.id);\n }\n } else {\n this._onClickedNothing();\n }\n });\n\n this._scene.canvas.canvas.addEventListener(\"mouseout\", this._onCanvasMouseOut = () => {\n if (hoveredEntity) {\n this._onHoverLeavePlane(hoveredEntity.id);\n hoveredEntity = null;\n }\n });\n }\n\n //--------------------------------------------------------------------------------------------------------------\n // Configure overview\n //--------------------------------------------------------------------------------------------------------------\n\n this.setVisible(cfg.overviewVisible);\n }\n\n /** Called by SectionPlanesPlugin#createSectionPlane()\n * @private\n */\n addSectionPlane(sectionPlane) {\n this._planes[sectionPlane.id] = new Plane(this, this._scene, sectionPlane);\n }\n\n /** @private\n */\n setPlaneHighlighted(id, highlighted) {\n const plane = this._planes[id];\n if (plane) {\n plane.setHighlighted(highlighted);\n }\n }\n\n /** @private\n */\n setPlaneSelected(id, selected) {\n const plane = this._planes[id];\n if (plane) {\n plane.setSelected(selected);\n }\n }\n\n /** @private\n */\n removeSectionPlane(sectionPlane) {\n const plane = this._planes[sectionPlane.id];\n if (plane) {\n plane.destroy();\n delete this._planes[sectionPlane.id];\n }\n }\n\n /**\n * Sets if this SectionPlanesOverview is visible.\n *\n * @param {Boolean} visible Whether or not this SectionPlanesOverview is visible.\n */\n setVisible(visible = true) {\n this._visible = visible;\n this._canvas.style.visibility = visible ? \"visible\" : \"hidden\";\n }\n\n /**\n * Gets if this SectionPlanesOverview is visible.\n *\n * @return {Boolean} True when this SectionPlanesOverview is visible.\n */\n getVisible() {\n return this._visible;\n }\n\n /** @private\n */\n destroy() {\n this._viewer.camera.off(this._onViewerCameraMatrix);\n this._viewer.camera.off(this._onViewerCameraWorldAxis);\n this._viewer.camera.perspective.off(this._onViewerCameraFOV);\n\n this._scene.input.off(this._onInputMouseMove);\n this._scene.canvas.canvas.removeEventListener(\"mouseup\", this._onCanvasMouseUp);\n this._scene.canvas.canvas.removeEventListener(\"mouseout\", this._onCanvasMouseOut);\n this._scene.destroy();\n }\n}\n\nexport {Overview};\n\n", @@ -25527,7 +26055,7 @@ "lineNumber": 1 }, { - "__docId__": 1415, + "__docId__": 1433, "kind": "class", "name": "Overview", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js", @@ -25543,7 +26071,7 @@ "ignore": true }, { - "__docId__": 1416, + "__docId__": 1434, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25557,7 +26085,7 @@ "ignore": true }, { - "__docId__": 1417, + "__docId__": 1435, "kind": "member", "name": "plugin", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25576,7 +26104,7 @@ } }, { - "__docId__": 1418, + "__docId__": 1436, "kind": "member", "name": "_viewer", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25594,7 +26122,7 @@ } }, { - "__docId__": 1419, + "__docId__": 1437, "kind": "member", "name": "_onHoverEnterPlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25612,7 +26140,7 @@ } }, { - "__docId__": 1420, + "__docId__": 1438, "kind": "member", "name": "_onHoverLeavePlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25630,7 +26158,7 @@ } }, { - "__docId__": 1421, + "__docId__": 1439, "kind": "member", "name": "_onClickedNothing", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25648,7 +26176,7 @@ } }, { - "__docId__": 1422, + "__docId__": 1440, "kind": "member", "name": "_onClickedPlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25666,7 +26194,7 @@ } }, { - "__docId__": 1423, + "__docId__": 1441, "kind": "member", "name": "_visible", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25684,7 +26212,7 @@ } }, { - "__docId__": 1424, + "__docId__": 1442, "kind": "member", "name": "_planes", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25702,7 +26230,7 @@ } }, { - "__docId__": 1425, + "__docId__": 1443, "kind": "member", "name": "_canvas", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25720,7 +26248,7 @@ } }, { - "__docId__": 1426, + "__docId__": 1444, "kind": "member", "name": "_scene", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25738,7 +26266,7 @@ } }, { - "__docId__": 1427, + "__docId__": 1445, "kind": "member", "name": "_zUp", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25756,7 +26284,7 @@ } }, { - "__docId__": 1428, + "__docId__": 1446, "kind": "member", "name": "_synchCamera", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25774,7 +26302,7 @@ } }, { - "__docId__": 1429, + "__docId__": 1447, "kind": "member", "name": "_onViewerCameraMatrix", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25792,7 +26320,7 @@ } }, { - "__docId__": 1430, + "__docId__": 1448, "kind": "member", "name": "_onViewerCameraWorldAxis", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25810,7 +26338,7 @@ } }, { - "__docId__": 1431, + "__docId__": 1449, "kind": "member", "name": "_onViewerCameraFOV", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25828,7 +26356,7 @@ } }, { - "__docId__": 1432, + "__docId__": 1450, "kind": "member", "name": "_onInputMouseMove", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25846,7 +26374,7 @@ } }, { - "__docId__": 1433, + "__docId__": 1451, "kind": "method", "name": "addSectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25869,7 +26397,7 @@ "return": null }, { - "__docId__": 1434, + "__docId__": 1452, "kind": "method", "name": "setPlaneHighlighted", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25897,7 +26425,7 @@ "return": null }, { - "__docId__": 1435, + "__docId__": 1453, "kind": "method", "name": "setPlaneSelected", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25925,7 +26453,7 @@ "return": null }, { - "__docId__": 1436, + "__docId__": 1454, "kind": "method", "name": "removeSectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25948,7 +26476,7 @@ "return": null }, { - "__docId__": 1437, + "__docId__": 1455, "kind": "method", "name": "setVisible", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25974,7 +26502,7 @@ "return": null }, { - "__docId__": 1439, + "__docId__": 1457, "kind": "method", "name": "getVisible", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -25996,7 +26524,7 @@ "params": [] }, { - "__docId__": 1440, + "__docId__": 1458, "kind": "method", "name": "destroy", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -26011,7 +26539,7 @@ "return": null }, { - "__docId__": 1441, + "__docId__": 1459, "kind": "file", "name": "src/plugins/SectionPlanesPlugin/Plane.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\nimport {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {PhongMaterial} from \"../../viewer/scene/materials/PhongMaterial.js\";\nimport {buildBoxGeometry} from \"../../viewer/scene/geometry/builders/buildBoxGeometry.js\";\nimport {EdgeMaterial} from \"../../viewer/scene/materials/EdgeMaterial.js\";\nimport {EmphasisMaterial} from \"../../viewer/scene/materials/EmphasisMaterial.js\";\n\n\n/**\n * Renders a 3D plane within an {@link Overview} to indicate its {@link SectionPlane}'s current position and orientation.\n *\n * @private\n */\nclass Plane {\n\n /** @private */\n constructor(overview, overviewScene, sectionPlane) {\n\n /**\n * The ID of this SectionPlanesOverviewPlane.\n *\n * @type {String}\n */\n this.id = sectionPlane.id;\n\n /**\n * The {@link SectionPlane} represented by this SectionPlanesOverviewPlane.\n *\n * @type {SectionPlane}\n */\n this._sectionPlane = sectionPlane;\n\n this._mesh = new Mesh(overviewScene, {\n id: sectionPlane.id,\n geometry: new ReadableGeometry(overviewScene, buildBoxGeometry({\n xSize: .5,\n ySize: .5,\n zSize: .001\n })),\n material: new PhongMaterial(overviewScene, {\n emissive: [1, 1, 1],\n diffuse: [0, 0, 0],\n backfaces: false\n }),\n edgeMaterial: new EdgeMaterial(overviewScene, {\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n highlightMaterial: new EmphasisMaterial(overviewScene, {\n fill: true,\n fillColor: [0.5, 1, 0.5],\n fillAlpha: 0.7,\n edges: true,\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n selectedMaterial: new EmphasisMaterial(overviewScene, {\n fill: true,\n fillColor: [0, 0, 1],\n fillAlpha: 0.7,\n edges: true,\n edgeColor: [1.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n highlighted: true,\n scale: [3, 3, 3],\n position: [0, 0, 0],\n rotation: [0, 0, 0],\n opacity: 0.3,\n edges: true\n });\n\n\n {\n const vec = math.vec3([0, 0, 0]);\n const pos2 = math.vec3();\n const zeroVec = math.vec3([0, 0, 1]);\n const quat = math.vec4(4);\n const pos3 = math.vec3();\n\n const update = () => {\n\n const origin = this._sectionPlane.scene.center;\n\n const negDir = [-this._sectionPlane.dir[0], -this._sectionPlane.dir[1], -this._sectionPlane.dir[2]];\n math.subVec3(origin, this._sectionPlane.pos, vec);\n const dist = -math.dotVec3(negDir, vec);\n\n math.normalizeVec3(negDir);\n math.mulVec3Scalar(negDir, dist, pos2);\n const quaternion = math.vec3PairToQuaternion(zeroVec, this._sectionPlane.dir, quat);\n\n pos3[0] = pos2[0] * 0.1;\n pos3[1] = pos2[1] * 0.1;\n pos3[2] = pos2[2] * 0.1;\n\n this._mesh.quaternion = quaternion;\n this._mesh.position = pos3;\n };\n\n this._onSectionPlanePos = this._sectionPlane.on(\"pos\", update);\n this._onSectionPlaneDir = this._sectionPlane.on(\"dir\", update);\n\n // update();\n }\n\n this._highlighted = false;\n this._selected = false;\n }\n\n /**\n * Sets if this SectionPlanesOverviewPlane is highlighted.\n *\n * @type {Boolean}\n * @private\n */\n setHighlighted(highlighted) {\n this._highlighted = !!highlighted;\n this._mesh.highlighted = this._highlighted;\n this._mesh.highlightMaterial.fillColor = highlighted ? [0, 0.7, 0] : [0, 0, 0];\n // this._selectedMesh.highlighted = true;\n }\n\n /**\n * Gets if this SectionPlanesOverviewPlane is highlighted.\n *\n * @type {Boolean}\n * @private\n */\n getHighlighted() {\n return this._highlighted;\n }\n\n /**\n * Sets if this SectionPlanesOverviewPlane is selected.\n *\n * @type {Boolean}\n * @private\n */\n setSelected(selected) {\n this._selected = !!selected;\n this._mesh.edgeMaterial.edgeWidth = selected ? 3 : 1;\n this._mesh.highlightMaterial.edgeWidth = selected ? 3 : 1;\n\n }\n\n /**\n * Gets if this SectionPlanesOverviewPlane is selected.\n *\n * @type {Boolean}\n * @private\n */\n getSelected() {\n return this._selected;\n }\n\n /** @private */\n destroy() {\n this._sectionPlane.off(this._onSectionPlanePos);\n this._sectionPlane.off(this._onSectionPlaneDir);\n this._mesh.destroy();\n }\n}\n\nexport {Plane};\n", @@ -26022,7 +26550,7 @@ "lineNumber": 1 }, { - "__docId__": 1442, + "__docId__": 1460, "kind": "class", "name": "Plane", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js", @@ -26038,7 +26566,7 @@ "ignore": true }, { - "__docId__": 1443, + "__docId__": 1461, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26052,7 +26580,7 @@ "ignore": true }, { - "__docId__": 1444, + "__docId__": 1462, "kind": "member", "name": "id", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26071,7 +26599,7 @@ } }, { - "__docId__": 1445, + "__docId__": 1463, "kind": "member", "name": "_sectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26091,7 +26619,7 @@ "ignore": true }, { - "__docId__": 1446, + "__docId__": 1464, "kind": "member", "name": "_mesh", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26109,7 +26637,7 @@ } }, { - "__docId__": 1447, + "__docId__": 1465, "kind": "member", "name": "_onSectionPlanePos", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26127,7 +26655,7 @@ } }, { - "__docId__": 1448, + "__docId__": 1466, "kind": "member", "name": "_onSectionPlaneDir", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26145,7 +26673,7 @@ } }, { - "__docId__": 1449, + "__docId__": 1467, "kind": "member", "name": "_highlighted", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26163,7 +26691,7 @@ } }, { - "__docId__": 1450, + "__docId__": 1468, "kind": "member", "name": "_selected", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26181,7 +26709,7 @@ } }, { - "__docId__": 1451, + "__docId__": 1469, "kind": "method", "name": "setHighlighted", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26212,7 +26740,7 @@ "return": null }, { - "__docId__": 1453, + "__docId__": 1471, "kind": "method", "name": "getHighlighted", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26240,7 +26768,7 @@ } }, { - "__docId__": 1454, + "__docId__": 1472, "kind": "method", "name": "setSelected", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26271,7 +26799,7 @@ "return": null }, { - "__docId__": 1456, + "__docId__": 1474, "kind": "method", "name": "getSelected", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26299,7 +26827,7 @@ } }, { - "__docId__": 1457, + "__docId__": 1475, "kind": "method", "name": "destroy", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -26315,7 +26843,7 @@ "return": null }, { - "__docId__": 1458, + "__docId__": 1476, "kind": "file", "name": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js", "content": "import {math} from \"../../viewer/scene/math/math.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {SectionPlane} from \"../../viewer/scene/sectionPlane/SectionPlane.js\";\nimport {Control} from \"./Control.js\";\nimport {Overview} from \"./Overview.js\";\n\nconst tempAABB = math.AABB3();\nconst tempVec3 = math.vec3();\n\n/**\n * SectionPlanesPlugin is a {@link Viewer} plugin that manages {@link SectionPlane}s.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/index.html#gizmos_SectionPlanesPlugin)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#gizmos_SectionPlanesPlugin)]\n *\n * ## Overview\n *\n * * Use the SectionPlanesPlugin to\n * create and edit {@link SectionPlane}s to slice portions off your models and reveal internal structures.\n * * As shown in the screen capture above, SectionPlanesPlugin shows an overview of all your SectionPlanes (on the right, in\n * this example).\n * * Click a plane in the overview to activate a 3D control with which you can interactively\n * reposition its SectionPlane in the main canvas.\n * * Use {@lin BCFViewpointsPlugin} to save and load SectionPlanes in BCF viewpoints.\n *\n * ## Usage\n *\n * In the example below, we'll use a {@link GLTFLoaderPlugin} to load a model, and a SectionPlanesPlugin\n * to slice it open with two {@link SectionPlane}s. We'll show the overview in the bottom right of the Viewer\n * canvas. Finally, we'll programmatically activate the 3D editing control, so that we can use it to interactively\n * reposition our second SectionPlane.\n *\n * ````JavaScript\n * import {Viewer, GLTFLoaderPlugin, SectionPlanesPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange its Camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [-5.02, 2.22, 15.09];\n * viewer.camera.look = [4.97, 2.79, 9.89];\n * viewer.camera.up = [-0.05, 0.99, 0.02];\n *\n *\n * // Add a GLTFLoaderPlugin\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // Add a SectionPlanesPlugin, with overview visible\n *\n * const sectionPlanes = new SectionPlanesPlugin(viewer, {\n * overviewCanvasID: \"myOverviewCanvas\",\n * overviewVisible: true\n * });\n *\n * // Load a model\n *\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/schependomlaan/scene.gltf\"\n * });\n *\n * // Create a couple of section planes\n * // These will be shown in the overview\n *\n * sectionPlanes.createSectionPlane({\n * id: \"mySectionPlane\",\n * pos: [1.04, 1.95, 9.74],\n * dir: [1.0, 0.0, 0.0]\n * });\n *\n * sectionPlanes.createSectionPlane({\n * id: \"mySectionPlane2\",\n * pos: [2.30, 4.46, 14.93],\n * dir: [0.0, -0.09, -0.79]\n * });\n *\n * // Show the SectionPlanePlugin's 3D editing gizmo,\n * // to interactively reposition one of our SectionPlanes\n *\n * sectionPlanes.showControl(\"mySectionPlane2\");\n *\n * const mySectionPlane2 = sectionPlanes.sectionPlanes[\"mySectionPlane2\"];\n *\n * // Programmatically reposition one of our SectionPlanes\n * // This also updates its position as shown in the overview gizmo\n *\n * mySectionPlane2.pos = [11.0, 6.0, -12];\n * mySectionPlane2.dir = [0.4, 0.0, 0.5];\n * ````\n */\nclass SectionPlanesPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"SectionPlanes\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} [cfg.overviewCanvasId] ID of a canvas element to display the overview.\n * @param {String} [cfg.overviewVisible=true] Initial visibility of the overview canvas.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"SectionPlanes\", viewer);\n\n this._freeControls = [];\n this._sectionPlanes = viewer.scene.sectionPlanes;\n this._controls = {};\n this._shownControlId = null;\n\n if (cfg.overviewCanvasId !== null && cfg.overviewCanvasId !== undefined) {\n\n const overviewCanvas = document.getElementById(cfg.overviewCanvasId);\n\n if (!overviewCanvas) {\n this.warn(\"Can't find overview canvas: '\" + cfg.overviewCanvasId + \"' - will create plugin without overview\");\n\n } else {\n\n this._overview = new Overview(this, {\n overviewCanvas: overviewCanvas,\n visible: cfg.overviewVisible,\n\n onHoverEnterPlane: ((id) => {\n this._overview.setPlaneHighlighted(id, true);\n }),\n\n onHoverLeavePlane: ((id) => {\n this._overview.setPlaneHighlighted(id, false);\n }),\n\n onClickedPlane: ((id) => {\n if (this.getShownControl() === id) {\n this.hideControl();\n return;\n }\n this.showControl(id);\n const sectionPlane = this.sectionPlanes[id];\n const sectionPlanePos = sectionPlane.pos;\n tempAABB.set(this.viewer.scene.aabb);\n math.getAABB3Center(tempAABB, tempVec3);\n tempAABB[0] += sectionPlanePos[0] - tempVec3[0];\n tempAABB[1] += sectionPlanePos[1] - tempVec3[1];\n tempAABB[2] += sectionPlanePos[2] - tempVec3[2];\n tempAABB[3] += sectionPlanePos[0] - tempVec3[0];\n tempAABB[4] += sectionPlanePos[1] - tempVec3[1];\n tempAABB[5] += sectionPlanePos[2] - tempVec3[2];\n this.viewer.cameraFlight.flyTo({\n aabb: tempAABB,\n fitFOV: 65\n });\n }),\n\n onClickedNothing: (() => {\n this.hideControl();\n })\n });\n }\n }\n\n this._onSceneSectionPlaneCreated = viewer.scene.on(\"sectionPlaneCreated\", (sectionPlane) => {\n\n // SectionPlane created, either via SectionPlanesPlugin#createSectionPlane(), or by directly\n // instantiating a SectionPlane independently of SectionPlanesPlugin, which can be done\n // by BCFViewpointsPlugin#loadViewpoint().\n\n this._sectionPlaneCreated(sectionPlane);\n });\n }\n\n /**\n * Sets if the overview canvas is visible.\n *\n * @param {Boolean} visible Whether or not the overview canvas is visible.\n */\n setOverviewVisible(visible) {\n if (this._overview) {\n this._overview.setVisible(visible);\n }\n }\n\n /**\n * Gets if the overview canvas is visible.\n *\n * @return {Boolean} True when the overview canvas is visible.\n */\n getOverviewVisible() {\n if (this._overview) {\n return this._overview.getVisible();\n }\n }\n\n /**\n * Returns a map of the {@link SectionPlane}s created by this SectionPlanesPlugin.\n *\n * @returns {{String:SectionPlane}} A map containing the {@link SectionPlane}s, each mapped to its {@link SectionPlane#id}.\n */\n get sectionPlanes() {\n return this._sectionPlanes;\n }\n\n /**\n * Creates a {@link SectionPlane}.\n *\n * The {@link SectionPlane} will be registered by {@link SectionPlane#id} in {@link SectionPlanesPlugin#sectionPlanes}.\n *\n * @param {Object} params {@link SectionPlane} configuration.\n * @param {String} [params.id] Unique ID to assign to the {@link SectionPlane}. Must be unique among all components in the {@link Viewer}'s {@link Scene}. Auto-generated when omitted.\n * @param {Number[]} [params.pos=[0,0,0]] World-space position of the {@link SectionPlane}.\n * @param {Number[]} [params.dir=[0,0,-1]] World-space vector indicating the orientation of the {@link SectionPlane}.\n * @param {Boolean} [params.active=true] Whether the {@link SectionPlane} is initially active. Only clips while this is true.\n * @returns {SectionPlane} The new {@link SectionPlane}.\n */\n createSectionPlane(params = {}) {\n\n if (params.id !== undefined && params.id !== null && this.viewer.scene.components[params.id]) {\n this.error(\"Viewer component with this ID already exists: \" + params.id);\n delete params.id;\n }\n\n // Note that SectionPlane constructor fires \"sectionPlaneCreated\" on the Scene,\n // which SectionPlanesPlugin handles and calls #_sectionPlaneCreated to create gizmo and add to overview canvas.\n\n const sectionPlane = new SectionPlane(this.viewer.scene, {\n id: params.id,\n pos: params.pos,\n dir: params.dir,\n active: true || params.active\n });\n return sectionPlane;\n }\n\n _sectionPlaneCreated(sectionPlane) {\n const control = (this._freeControls.length > 0) ? this._freeControls.pop() : new Control(this);\n control._setSectionPlane(sectionPlane);\n control.setVisible(false);\n this._controls[sectionPlane.id] = control;\n if (this._overview) {\n this._overview.addSectionPlane(sectionPlane);\n }\n sectionPlane.once(\"destroyed\", () => {\n this._sectionPlaneDestroyed(sectionPlane);\n });\n }\n\n /**\n * Inverts the direction of {@link SectionPlane#dir} on every existing SectionPlane.\n *\n * Inverts all SectionPlanes, including those that were not created with SectionPlanesPlugin.\n */\n flipSectionPlanes() {\n const sectionPlanes = this.viewer.scene.sectionPlanes;\n for (let id in sectionPlanes) {\n const sectionPlane = sectionPlanes[id];\n sectionPlane.flipDir();\n }\n }\n\n /**\n * Shows the 3D editing gizmo for a {@link SectionPlane}.\n *\n * @param {String} id ID of the {@link SectionPlane}.\n */\n showControl(id) {\n const control = this._controls[id];\n if (!control) {\n this.error(\"Control not found: \" + id);\n return;\n }\n this.hideControl();\n control.setVisible(true);\n if (this._overview) {\n this._overview.setPlaneSelected(id, true);\n }\n this._shownControlId = id;\n }\n\n /**\n * Gets the ID of the {@link SectionPlane} that the 3D editing gizmo is shown for.\n *\n * Returns ````null```` when the editing gizmo is not shown.\n *\n * @returns {String} ID of the the {@link SectionPlane} that the 3D editing gizmo is shown for, if shown, else ````null````.\n */\n getShownControl() {\n return this._shownControlId;\n }\n\n /**\n * Hides the 3D {@link SectionPlane} editing gizmo if shown.\n */\n hideControl() {\n for (var id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setVisible(false);\n if (this._overview) {\n this._overview.setPlaneSelected(id, false);\n }\n }\n }\n this._shownControlId = null;\n }\n\n /**\n * Destroys a {@link SectionPlane} created by this SectionPlanesPlugin.\n *\n * @param {String} id ID of the {@link SectionPlane}.\n */\n destroySectionPlane(id) {\n var sectionPlane = this.viewer.scene.sectionPlanes[id];\n if (!sectionPlane) {\n this.error(\"SectionPlane not found: \" + id);\n return;\n }\n this._sectionPlaneDestroyed(sectionPlane);\n sectionPlane.destroy();\n\n if (id === this._shownControlId) {\n this._shownControlId = null;\n }\n }\n\n _sectionPlaneDestroyed(sectionPlane) {\n if (this._overview) {\n this._overview.removeSectionPlane(sectionPlane);\n }\n const control = this._controls[sectionPlane.id];\n if (!control) {\n return;\n }\n control.setVisible(false);\n control._setSectionPlane(null);\n delete this._controls[sectionPlane.id];\n this._freeControls.push(control);\n }\n\n /**\n * Destroys all {@link SectionPlane}s created by this SectionPlanesPlugin.\n */\n clear() {\n const ids = Object.keys(this._sectionPlanes);\n for (var i = 0, len = ids.length; i < len; i++) {\n this.destroySectionPlane(ids[i]);\n }\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n\n case \"snapshotStarting\": // Viewer#getSnapshot() about to take snapshot - hide controls\n for (let id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setCulled(true);\n }\n }\n break;\n\n case \"snapshotFinished\": // Viewer#getSnapshot() finished taking snapshot - show controls again\n for (let id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setCulled(false);\n }\n }\n break;\n\n case \"clearSectionPlanes\":\n this.clear();\n break;\n }\n }\n\n /**\n * Destroys this SectionPlanesPlugin.\n *\n * Also destroys each {@link SectionPlane} created by this SectionPlanesPlugin.\n *\n * Does not destroy the canvas the SectionPlanesPlugin was configured with.\n */\n destroy() {\n this.clear();\n if (this._overview) {\n this._overview.destroy();\n }\n this._destroyFreeControls();\n super.destroy();\n }\n\n _destroyFreeControls() {\n var control = this._freeControls.pop();\n while (control) {\n control._destroy();\n control = this._freeControls.pop();\n }\n this.viewer.scene.off(this._onSceneSectionPlaneCreated);\n }\n}\n\nexport {SectionPlanesPlugin}\n", @@ -26326,7 +26854,7 @@ "lineNumber": 1 }, { - "__docId__": 1459, + "__docId__": 1477, "kind": "variable", "name": "tempAABB", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js", @@ -26347,7 +26875,7 @@ "ignore": true }, { - "__docId__": 1460, + "__docId__": 1478, "kind": "variable", "name": "tempVec3", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js", @@ -26368,7 +26896,7 @@ "ignore": true }, { - "__docId__": 1461, + "__docId__": 1479, "kind": "class", "name": "SectionPlanesPlugin", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js", @@ -26386,7 +26914,7 @@ ] }, { - "__docId__": 1462, + "__docId__": 1480, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26461,7 +26989,7 @@ ] }, { - "__docId__": 1463, + "__docId__": 1481, "kind": "member", "name": "_freeControls", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26479,7 +27007,7 @@ } }, { - "__docId__": 1464, + "__docId__": 1482, "kind": "member", "name": "_sectionPlanes", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26497,7 +27025,7 @@ } }, { - "__docId__": 1465, + "__docId__": 1483, "kind": "member", "name": "_controls", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26515,7 +27043,7 @@ } }, { - "__docId__": 1466, + "__docId__": 1484, "kind": "member", "name": "_shownControlId", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26533,7 +27061,7 @@ } }, { - "__docId__": 1467, + "__docId__": 1485, "kind": "member", "name": "_overview", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26551,7 +27079,7 @@ } }, { - "__docId__": 1468, + "__docId__": 1486, "kind": "member", "name": "_onSceneSectionPlaneCreated", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26569,7 +27097,7 @@ } }, { - "__docId__": 1469, + "__docId__": 1487, "kind": "method", "name": "setOverviewVisible", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26595,7 +27123,7 @@ "return": null }, { - "__docId__": 1470, + "__docId__": 1488, "kind": "method", "name": "getOverviewVisible", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26617,7 +27145,7 @@ "params": [] }, { - "__docId__": 1471, + "__docId__": 1489, "kind": "get", "name": "sectionPlanes", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26649,7 +27177,7 @@ } }, { - "__docId__": 1472, + "__docId__": 1490, "kind": "method", "name": "createSectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26742,7 +27270,7 @@ } }, { - "__docId__": 1473, + "__docId__": 1491, "kind": "method", "name": "_sectionPlaneCreated", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26766,7 +27294,7 @@ "return": null }, { - "__docId__": 1474, + "__docId__": 1492, "kind": "method", "name": "flipSectionPlanes", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26781,7 +27309,7 @@ "return": null }, { - "__docId__": 1475, + "__docId__": 1493, "kind": "method", "name": "showControl", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26807,7 +27335,7 @@ "return": null }, { - "__docId__": 1477, + "__docId__": 1495, "kind": "method", "name": "getShownControl", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26835,7 +27363,7 @@ "params": [] }, { - "__docId__": 1478, + "__docId__": 1496, "kind": "method", "name": "hideControl", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26850,7 +27378,7 @@ "return": null }, { - "__docId__": 1480, + "__docId__": 1498, "kind": "method", "name": "destroySectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26876,7 +27404,7 @@ "return": null }, { - "__docId__": 1482, + "__docId__": 1500, "kind": "method", "name": "_sectionPlaneDestroyed", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26900,7 +27428,7 @@ "return": null }, { - "__docId__": 1483, + "__docId__": 1501, "kind": "method", "name": "clear", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26915,7 +27443,7 @@ "return": null }, { - "__docId__": 1484, + "__docId__": 1502, "kind": "method", "name": "send", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26944,7 +27472,7 @@ "return": null }, { - "__docId__": 1485, + "__docId__": 1503, "kind": "method", "name": "destroy", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26959,7 +27487,7 @@ "return": null }, { - "__docId__": 1486, + "__docId__": 1504, "kind": "method", "name": "_destroyFreeControls", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -26976,7 +27504,7 @@ "return": null }, { - "__docId__": 1487, + "__docId__": 1505, "kind": "file", "name": "src/plugins/SectionPlanesPlugin/index.js", "content": "export * from \"./SectionPlanesPlugin.js\";", @@ -26987,7 +27515,7 @@ "lineNumber": 1 }, { - "__docId__": 1488, + "__docId__": 1506, "kind": "file", "name": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js", "content": "import {Plugin} from \"../../viewer/Plugin.js\";\nimport {Skybox} from \"../../viewer/scene/skybox/Skybox.js\"\n\n/**\n * {@link Viewer} plugin that manages skyboxes\n *\n * @example\n *\n * // Create a Viewer\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Add a GLTFModelsPlugin\n * var gltfLoaderPlugin = new GLTFModelsPlugin(viewer, {\n * id: \"GLTFModels\" // Default value\n * });\n *\n * // Add a SkyboxesPlugin\n * var skyboxesPlugin = new SkyboxesPlugin(viewer, {\n * id: \"Skyboxes\" // Default value\n * });\n *\n * // Load a glTF model\n * const model = gltfLoaderPlugin.load({\n * id: \"myModel\",\n * src: \"./models/gltf/mygltfmodel.gltf\"\n * });\n *\n * // Create three directional World-space lights. \"World\" means that they will appear as if part\n * // of the world, instead of \"View\", where they move with the user's head.\n *\n * skyboxesPlugin.createLight({\n * id: \"keyLight\",\n * dir: [0.8, -0.6, -0.8],\n * color: [1.0, 0.3, 0.3],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * skyboxesPlugin.createLight({\n * id: \"fillLight\",\n * dir: [-0.8, -0.4, -0.4],\n * color: [0.3, 1.0, 0.3],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * skyboxesPlugin.createDirLight({\n * id: \"rimLight\",\n * dir: [0.2, -0.8, 0.8],\n * color: [0.6, 0.6, 0.6],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * @class SkyboxesPlugin\n */\nclass SkyboxesPlugin extends Plugin {\n\n constructor(viewer) {\n super(\"skyboxes\", viewer);\n this.skyboxes = {};\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n case \"clear\":\n this.clear();\n break;\n }\n }\n\n /**\n Creates a skybox.\n\n @param {String} id Unique ID to assign to the skybox.\n @param {Object} params Skybox configuration.\n @param {Boolean} [params.active=true] Whether the skybox plane is initially active. Only skyboxes while this is true.\n @returns {Skybox} The new skybox.\n */\n createSkybox(id, params) {\n if (this.viewer.scene.components[id]) {\n this.error(\"Component with this ID already exists: \" + id);\n return this;\n }\n var skybox = new Skybox(this.viewer.scene, {\n id: id,\n pos: params.pos,\n dir: params.dir,\n active: true || params.active\n });\n this.skyboxes[id] = skybox;\n return skybox;\n }\n\n /**\n Destroys a skybox.\n @param id\n */\n destroySkybox(id) {\n var skybox = this.skyboxes[id];\n if (!skybox) {\n this.error(\"Skybox not found: \" + id);\n return;\n }\n skybox.destroy();\n }\n\n /**\n Destroys all skyboxes.\n */\n clear() {\n var ids = Object.keys(this.viewer.scene.skyboxes);\n for (var i = 0, len = ids.length; i < len; i++) {\n this.destroySkybox(ids[i]);\n }\n }\n\n /**\n * Destroys this plugin.\n *\n * Clears skyboxes from the Viewer first.\n */\n destroy() {\n this.clear();\n super.clear();\n }\n}\n\nexport {SkyboxesPlugin}\n", @@ -26998,7 +27526,7 @@ "lineNumber": 1 }, { - "__docId__": 1489, + "__docId__": 1507, "kind": "class", "name": "SkyboxesPlugin", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js", @@ -27025,7 +27553,7 @@ ] }, { - "__docId__": 1490, + "__docId__": 1508, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -27039,7 +27567,7 @@ "undocument": true }, { - "__docId__": 1491, + "__docId__": 1509, "kind": "member", "name": "skyboxes", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -27056,7 +27584,7 @@ } }, { - "__docId__": 1492, + "__docId__": 1510, "kind": "method", "name": "send", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -27085,7 +27613,7 @@ "return": null }, { - "__docId__": 1493, + "__docId__": 1511, "kind": "method", "name": "createSkybox", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -27146,7 +27674,7 @@ } }, { - "__docId__": 1494, + "__docId__": 1512, "kind": "method", "name": "destroySkybox", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -27172,7 +27700,7 @@ "return": null }, { - "__docId__": 1495, + "__docId__": 1513, "kind": "method", "name": "clear", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -27187,7 +27715,7 @@ "return": null }, { - "__docId__": 1496, + "__docId__": 1514, "kind": "method", "name": "destroy", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -27202,7 +27730,7 @@ "return": null }, { - "__docId__": 1497, + "__docId__": 1515, "kind": "file", "name": "src/plugins/SkyboxesPlugin/index.js", "content": "export * from \"./SkyboxesPlugin.js\";", @@ -27213,7 +27741,7 @@ "lineNumber": 1 }, { - "__docId__": 1498, + "__docId__": 1516, "kind": "file", "name": "src/plugins/StoreyViewsPlugin/Storey.js", "content": "/**\n * @desc Information about an ````IfcBuildingStorey````.\n *\n * These are provided by a {@link StoreyViewsPlugin}.\n */\nclass Storey {\n\n /**\n * @private\n */\n constructor(plugin, modelAABB, storeyAABB, modelId, storeyId, numObjects) {\n\n /**\n * The {@link StoreyViewsPlugin} this Storey belongs to.\n *\n * @property plugin\n * @type {StoreyViewsPlugin}\n */\n this.plugin = plugin;\n\n /**\n * ID of the IfcBuildingStorey.\n *\n * This matches IDs of the IfcBuildingStorey's {@link MetaObject} and {@link Entity}.\n *\n * @property storeyId\n * @type {String}\n */\n this.storeyId = storeyId;\n\n /**\n * ID of the model.\n *\n * This matches the ID of the {@link MetaModel} that contains the IfcBuildingStorey's {@link MetaObject}.\n *\n * @property modelId\n * @type {String|Number}\n */\n this.modelId = modelId;\n\n /**\n * Axis-aligned World-space boundary of the {@link Entity}s that represent the IfcBuildingStorey.\n *\n * The boundary is a six-element Float32Array containing the min/max extents of the\n * axis-aligned boundary, ie. ````[xmin, ymin, zmin, xmax, ymax, zmax]````\n *\n * @property storeyAABB\n * @type {Number[]}\n */\n this.storeyAABB = storeyAABB.slice();\n\n /**\n * Axis-aligned World-space boundary of the {@link Entity}s that represent the IfcBuildingStorey.\n *\n * The boundary is a six-element Float32Array containing the min/max extents of the\n * axis-aligned boundary, ie. ````[xmin, ymin, zmin, xmax, ymax, zmax]````\n *\n * @deprecated\n * @property storeyAABB\n * @type {Number[]}\n */\n this.aabb = this.storeyAABB;\n\n /**\n * Axis-aligned World-space boundary of the {@link Entity}s that represent the model.\n *\n * The boundary is a six-element Float32Array containing the min/max extents of the\n * axis-aligned boundary, ie. ````[xmin, ymin, zmin, xmax, ymax, zmax]````\n *\n * @property modelAABB\n * @type {Number[]}\n */\n this.modelAABB = modelAABB.slice();\n\n /** Number of {@link Entity}s within the IfcBuildingStorey.\n *\n * @property numObjects\n * @type {Number}\n */\n this.numObjects = numObjects;\n }\n}\n\nexport {Storey};", @@ -27224,7 +27752,7 @@ "lineNumber": 1 }, { - "__docId__": 1499, + "__docId__": 1517, "kind": "class", "name": "Storey", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js", @@ -27239,7 +27767,7 @@ "interface": false }, { - "__docId__": 1500, + "__docId__": 1518, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -27253,7 +27781,7 @@ "ignore": true }, { - "__docId__": 1501, + "__docId__": 1519, "kind": "member", "name": "plugin", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -27284,7 +27812,7 @@ } }, { - "__docId__": 1502, + "__docId__": 1520, "kind": "member", "name": "storeyId", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -27315,7 +27843,7 @@ } }, { - "__docId__": 1503, + "__docId__": 1521, "kind": "member", "name": "modelId", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -27347,7 +27875,7 @@ } }, { - "__docId__": 1504, + "__docId__": 1522, "kind": "member", "name": "storeyAABB", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -27378,7 +27906,7 @@ } }, { - "__docId__": 1505, + "__docId__": 1523, "kind": "member", "name": "aabb", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -27410,7 +27938,7 @@ } }, { - "__docId__": 1506, + "__docId__": 1524, "kind": "member", "name": "modelAABB", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -27441,7 +27969,7 @@ } }, { - "__docId__": 1507, + "__docId__": 1525, "kind": "member", "name": "numObjects", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -27472,7 +28000,7 @@ } }, { - "__docId__": 1508, + "__docId__": 1526, "kind": "file", "name": "src/plugins/StoreyViewsPlugin/StoreyMap.js", "content": "/**\n * @desc A 2D plan view image of an ````IfcBuildingStorey````.\n *\n * These are created by a {@link StoreyViewsPlugin}.\n */\nclass StoreyMap {\n\n /**\n * @private\n */\n constructor(storeyId, imageData, format, width, height, padding) {\n\n /**\n * ID of the IfcBuildingStorey.\n *\n * This matches IDs of the IfcBuildingStorey's {@link MetaObject} and {@link Entity}.\n *\n * @property storeyId\n * @type {String}\n */\n this.storeyId = storeyId;\n\n /**\n * Base64-encoded plan view image.\n *\n * @property imageData\n * @type {String}\n */\n this.imageData = imageData;\n\n /**\n * The image format - \"png\" or \"jpeg\".\n *\n * @property format\n * @type {String}\n */\n this.format = format;\n\n /**\n * Width of the image, in pixels.\n *\n * @property width\n * @type {Number}\n */\n this.width = width;\n\n /**\n * Height of the image, in pixels.\n *\n * @property height\n * @type {Number}\n */\n this.height = height;\n }\n}\n\nexport {StoreyMap};", @@ -27483,7 +28011,7 @@ "lineNumber": 1 }, { - "__docId__": 1509, + "__docId__": 1527, "kind": "class", "name": "StoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js", @@ -27498,7 +28026,7 @@ "interface": false }, { - "__docId__": 1510, + "__docId__": 1528, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -27512,7 +28040,7 @@ "ignore": true }, { - "__docId__": 1511, + "__docId__": 1529, "kind": "member", "name": "storeyId", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -27543,7 +28071,7 @@ } }, { - "__docId__": 1512, + "__docId__": 1530, "kind": "member", "name": "imageData", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -27574,7 +28102,7 @@ } }, { - "__docId__": 1513, + "__docId__": 1531, "kind": "member", "name": "format", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -27605,7 +28133,7 @@ } }, { - "__docId__": 1514, + "__docId__": 1532, "kind": "member", "name": "width", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -27636,7 +28164,7 @@ } }, { - "__docId__": 1515, + "__docId__": 1533, "kind": "member", "name": "height", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -27667,7 +28195,7 @@ } }, { - "__docId__": 1516, + "__docId__": 1534, "kind": "file", "name": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", "content": "import {Plugin} from \"../../viewer/Plugin.js\";\nimport {Storey} from \"./Storey.js\";\nimport {math} from \"../../viewer/scene/math/math.js\";\nimport {ObjectsMemento} from \"../../viewer/scene/mementos/ObjectsMemento.js\";\nimport {CameraMemento} from \"../../viewer/scene/mementos/CameraMemento.js\";\nimport {StoreyMap} from \"./StoreyMap.js\";\nimport {utils} from \"../../viewer/scene/utils.js\";\n\nconst tempVec3a = math.vec3();\nconst tempMat4 = math.mat4();\n\nconst EMPTY_IMAGE = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==\";\n\n\n/**\n * @desc A {@link Viewer} plugin that provides methods for visualizing IfcBuildingStoreys.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/navigation/#StoreyViewsPlugin_recipe3)]\n *\n * ## Overview\n *\n * StoreyViewsPlugin provides a flexible set of methods for visualizing building storeys in 3D and 2D.\n *\n * Use the first two methods to set up 3D views of storeys:\n *\n * * [showStoreyObjects](#instance-method-showStoreyObjects) - shows the {@link Entity}s within a storey, and\n * * [gotoStoreyCamera](#instance-method-gotoStoreyCamera) - positions the {@link Camera} for a plan view of the Entitys within a storey.\n *

    \n *\n * Use the second two methods to create 2D plan view mini-map images:\n *\n * * [createStoreyMap](#instance-method-createStoreyMap) - creates a 2D plan view image of a storey, and\n * * [pickStoreyMap](#instance-method-pickStoreyMap) - picks the {@link Entity} at the given 2D pixel coordinates within a plan view image.\n *\n * ## Usage\n *\n * Let's start by creating a {@link Viewer} with a StoreyViewsPlugin and an {@link XKTLoaderPlugin}.\n *\n * Then we'll load a BIM building model from an ```.xkt``` file.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, StoreyViewsPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer, arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * // Add an XKTLoaderPlugin\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * // Add a StoreyViewsPlugin\n *\n * const storeyViewsPlugin = new StoreyViewsPlugin(viewer);\n *\n * // Load a BIM model from .xkt format\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n * ````\n *\n * ## Finding Storeys\n *\n * Getting information on a storey in our model:\n *\n * ````javascript\n * const storey = storeyViewsPlugin.storeys[\"2SWZMQPyD9pfT9q87pgXa1\"]; // ID of the IfcBuildingStorey\n *\n * const modelId = storey.modelId; // \"myModel\"\n * const storeyId = storey.storeyId; // \"2SWZMQPyD9pfT9q87pgXa1\"\n * const aabb = storey.aabb; // Axis-aligned 3D World-space boundary of the IfcBuildingStorey\n * ````\n *\n * We can also get a \"storeys\" event every time the set of storeys changes, ie. every time a storey is created or destroyed:\n *\n * ````javascript\n * storeyViewsPlugin.on(\"storeys\", ()=> {\n * const storey = storeyViewsPlugin.storeys[\"2SWZMQPyD9pfT9q87pgXa1\"];\n * //...\n * });\n * ````\n *\n * ## Showing Entitys within Storeys\n *\n * Showing the {@link Entity}s within a storey:\n *\n * ````javascript\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\");\n * ````\n *\n * Showing **only** the Entitys in a storey, hiding all others:\n *\n * ````javascript\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * hideOthers: true\n * });\n * ````\n * Showing only the storey Entitys:\n *\n * ````javascript\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * hideOthers: true\n * });\n * ````\n *\n * When using this option, at some point later you'll probably want to restore all Entitys to their original visibilities and\n * appearances.\n *\n * To do that, save their visibility and appearance states in an {@link ObjectsMemento} beforehand, from\n * which you can restore them later:\n *\n * ````javascript\n * const objectsMemento = new ObjectsMemento();\n *\n * // Save all Entity visibility and appearance states\n *\n * objectsMemento.saveObjects(viewer.scene);\n *\n * // Show storey view Entitys\n *\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\");\n *\n * //...\n *\n * // Later, restore all Entitys to their saved visibility and appearance states\n * objectsMemento.restoreObjects(viewer.scene);\n * ````\n *\n * ## Arranging the Camera for Storey Plan Views\n *\n * The {@link StoreyViewsPlugin#gotoStoreyCamera} method positions the {@link Camera} for a plan view of\n * the {@link Entity}s within the given storey.\n *\n * Let's fly the {@link Camera} to a downward-looking orthographic view of the Entitys within our storey.\n *\n * ````javascript\n * storeyViewsPlugin.gotoStoreyCamera(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * projection: \"ortho\", // Orthographic projection\n * duration: 2.5, // 2.5 second transition\n * done: () => {\n * viewer.cameraControl.planView = true; // Disable rotation\n * }\n * });\n * ````\n *\n * Note that we also set {@link CameraControl#planView} ````true````, which prevents the CameraControl from rotating\n * or orbiting. In orthographic mode, this effectively makes the {@link Viewer} behave as if it were a 2D viewer, with\n * picking, panning and zooming still enabled.\n *\n * If you need to be able to restore the Camera to its previous state, you can save it to a {@link CameraMemento}\n * beforehand, from which you can restore it later:\n *\n * ````javascript\n * const cameraMemento = new CameraMemento();\n *\n * // Save camera state\n *\n * cameraMemento.saveCamera(viewer.scene);\n *\n * // Position camera for a downward-looking orthographic view of our storey\n *\n * storeyViewsPlugin.gotoStoreyCamera(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * projection: \"ortho\",\n * duration: 2.5,\n * done: () => {\n * viewer.cameraControl.planView = true; // Disable rotation\n * }\n * });\n *\n * //...\n *\n * // Later, restore the Camera to its saved state\n * cameraMemento.restoreCamera(viewer.scene);\n * ````\n *\n * ## Creating StoreyMaps\n *\n * The {@link StoreyViewsPlugin#createStoreyMap} method creates a 2D orthographic plan image of the given storey.\n *\n * This method creates a {@link StoreyMap}, which provides the plan image as a Base64-encoded string.\n *\n * Let's create a 2D plan image of our building storey:\n *\n * ````javascript\n * const storeyMap = storeyViewsPlugin.createStoreyMap(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * width: 300,\n * format: \"png\"\n * });\n *\n * const imageData = storeyMap.imageData; // Base64-encoded image data string\n * const width = storeyMap.width; // 300\n * const height = storeyMap.height; // Automatically derived from width\n * const format = storeyMap.format; // \"png\"\n * ````\n *\n * We can also specify a ````height```` for the plan image, as an alternative to ````width````:\n *\n * ````javascript\n * const storeyMap = storeyViewsPlugin.createStoreyMap(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * height: 200,\n * format: \"png\"\n * });\n * ````\n *\n * ## Picking Entities in StoreyMaps\n *\n * We can use {@link StoreyViewsPlugin#pickStoreyMap} to pick Entities in our building storey, using 2D coordinates from mouse or touch events on our {@link StoreyMap}'s 2D plan image.\n *\n * Let's programmatically pick the Entity at the given 2D pixel coordinates within our image:\n *\n * ````javascript\n * const mouseCoords = [65, 120]; // Mouse coords within the image extents\n *\n * const pickResult = storeyViewsPlugin.pickStoreyMap(storeyMap, mouseCoords);\n *\n * if (pickResult && pickResult.entity) {\n * pickResult.entity.highlighted = true;\n * }\n * ````\n */\nclass StoreyViewsPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"StoreyViews\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Boolean} [cfg.fitStoreyMaps=false] If enabled, the elements of each floor map image will be proportionally resized to encompass the entire image. This leads to varying scales among different floor map images. If disabled, each floor map image will display the model's extents, ensuring a consistent scale across all images.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"StoreyViews\", viewer);\n\n this._objectsMemento = new ObjectsMemento();\n this._cameraMemento = new CameraMemento();\n\n /**\n * A {@link Storey} for each ````IfcBuildingStorey```.\n *\n * There will be a {@link Storey} for every existing {@link MetaObject} whose {@link MetaObject#type} equals \"IfcBuildingStorey\".\n *\n * These are created and destroyed automatically as models are loaded and destroyed.\n *\n * @type {{String:Storey}}\n */\n this.storeys = {};\n\n /**\n * A set of {@link Storey}s for each {@link MetaModel}.\n *\n * These are created and destroyed automatically as models are loaded and destroyed.\n *\n * @type {{String: {String:Storey}}}\n */\n this.modelStoreys = {};\n\n this._fitStoreyMaps = (!!cfg.fitStoreyMaps);\n\n this._onModelLoaded = this.viewer.scene.on(\"modelLoaded\", (modelId) => {\n this._registerModelStoreys(modelId);\n this.fire(\"storeys\", this.storeys);\n });\n }\n\n _registerModelStoreys(modelId) {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const metaScene = viewer.metaScene;\n const metaModel = metaScene.metaModels[modelId];\n const model = scene.models[modelId];\n if (!metaModel || !metaModel.rootMetaObjects) {\n return;\n }\n const rootMetaObjects = metaModel.rootMetaObjects;\n for (let j = 0, lenj = rootMetaObjects.length; j < lenj; j++) {\n const storeyIds = rootMetaObjects[j].getObjectIDsInSubtreeByType([\"IfcBuildingStorey\"]);\n for (let i = 0, len = storeyIds.length; i < len; i++) {\n const storeyId = storeyIds[i];\n const metaObject = metaScene.metaObjects[storeyId];\n const childObjectIds = metaObject.getObjectIDsInSubtree();\n const storeyAABB = scene.getAABB(childObjectIds);\n const numObjects = (Math.random() > 0.5) ? childObjectIds.length : 0;\n const storey = new Storey(this, model.aabb, storeyAABB, modelId, storeyId, numObjects);\n storey._onModelDestroyed = model.once(\"destroyed\", () => {\n this._deregisterModelStoreys(modelId);\n this.fire(\"storeys\", this.storeys);\n });\n this.storeys[storeyId] = storey;\n if (!this.modelStoreys[modelId]) {\n this.modelStoreys[modelId] = {};\n }\n this.modelStoreys[modelId][storeyId] = storey;\n }\n }\n }\n\n _deregisterModelStoreys(modelId) {\n const storeys = this.modelStoreys[modelId];\n if (storeys) {\n const scene = this.viewer.scene;\n for (let storyObjectId in storeys) {\n if (storeys.hasOwnProperty(storyObjectId)) {\n const storey = storeys[storyObjectId];\n const model = scene.models[storey.modelId];\n if (model) {\n model.off(storey._onModelDestroyed);\n }\n delete this.storeys[storyObjectId];\n }\n }\n delete this.modelStoreys[modelId];\n }\n }\n\n /**\n * When true, the elements of each floor map image will be proportionally resized to encompass the entire image. This leads to varying scales among different\n * floor map images. If false, each floor map image will display the model's extents, ensuring a consistent scale across all images.\n * @returns {*|boolean}\n */\n get fitStoreyMaps() {\n return this._fitStoreyMaps;\n }\n\n /**\n * Arranges the {@link Camera} for a 3D orthographic view of the {@link Entity}s within the given storey.\n *\n * See also: {@link CameraMemento}, which saves and restores the state of the {@link Scene}'s {@link Camera}\n *\n * @param {String} storeyId ID of the ````IfcBuildingStorey```` object.\n * @param {*} [options] Options for arranging the Camera.\n * @param {String} [options.projection] Projection type to transition the Camera to. Accepted values are \"perspective\" and \"ortho\".\n * @param {Function} [options.done] Callback to fire when the Camera has arrived. When provided, causes an animated flight to the saved state. Otherwise jumps to the saved state.\n */\n gotoStoreyCamera(storeyId, options = {}) {\n\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n if (options.done) {\n options.done();\n }\n return;\n }\n\n const viewer = this.viewer;\n const scene = viewer.scene;\n const camera = scene.camera;\n const storeyAABB = storey.storeyAABB;\n\n if (storeyAABB[3] < storeyAABB[0] || storeyAABB[4] < storeyAABB[1] || storeyAABB[5] < storeyAABB[2]) { // Don't fly to an inverted boundary\n if (options.done) {\n options.done();\n }\n return;\n }\n if (storeyAABB[3] === storeyAABB[0] && storeyAABB[4] === storeyAABB[1] && storeyAABB[5] === storeyAABB[2]) { // Don't fly to an empty boundary\n if (options.done) {\n options.done();\n }\n return;\n }\n const look2 = math.getAABB3Center(storeyAABB);\n const diag = math.getAABB3Diag(storeyAABB);\n const fitFOV = 45; // fitFOV;\n const sca = Math.abs(diag / Math.tan(fitFOV * math.DEGTORAD));\n\n const orthoScale2 = diag * 1.3;\n\n const eye2 = tempVec3a;\n\n eye2[0] = look2[0] + (camera.worldUp[0] * sca);\n eye2[1] = look2[1] + (camera.worldUp[1] * sca);\n eye2[2] = look2[2] + (camera.worldUp[2] * sca);\n\n const up2 = camera.worldForward;\n\n if (options.done) {\n\n viewer.cameraFlight.flyTo(utils.apply(options, {\n eye: eye2,\n look: look2,\n up: up2,\n orthoScale: orthoScale2\n }), () => {\n options.done();\n });\n\n } else {\n\n viewer.cameraFlight.jumpTo(utils.apply(options, {\n eye: eye2,\n look: look2,\n up: up2,\n orthoScale: orthoScale2\n }));\n\n viewer.camera.ortho.scale = orthoScale2;\n }\n }\n\n /**\n * Shows the {@link Entity}s within the given storey.\n *\n * Optionally hides all other Entitys.\n *\n * See also: {@link ObjectsMemento}, which saves and restores a memento of the visual state\n * of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * @param {String} storeyId ID of the ````IfcBuildingStorey```` object.\n * @param {*} [options] Options for showing the Entitys within the storey.\n * @param {Boolean} [options.hideOthers=false] When ````true````, hide all other {@link Entity}s.\n */\n showStoreyObjects(storeyId, options = {}) {\n\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return;\n }\n\n const viewer = this.viewer;\n const scene = viewer.scene;\n const metaScene = viewer.metaScene;\n const storeyMetaObject = metaScene.metaObjects[storeyId];\n\n if (!storeyMetaObject) {\n return;\n }\n\n if (options.hideOthers) {\n scene.setObjectsVisible(viewer.scene.visibleObjectIds, false);\n }\n\n this.withStoreyObjects(storeyId, (entity, metaObject) => {\n if (entity) {\n entity.visible = true;\n }\n });\n }\n\n /**\n * Executes a callback on each of the objects within the given storey.\n *\n * ## Usage\n *\n * In the example below, we'll show all the {@link Entity}s, within the given ````IfcBuildingStorey````,\n * that have {@link MetaObject}s with type ````IfcSpace````. Note that the callback will only be given\n * an {@link Entity} when one exists for the given {@link MetaObject}.\n *\n * ````JavaScript\n * myStoreyViewsPlugin.withStoreyObjects(storeyId, (entity, metaObject) => {\n * if (entity && metaObject && metaObject.type === \"IfcSpace\") {\n * entity.visible = true;\n * }\n * });\n * ````\n *\n * @param {String} storeyId ID of the ````IfcBuildingStorey```` object.\n * @param {Function} callback The callback.\n */\n withStoreyObjects(storeyId, callback) {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const metaScene = viewer.metaScene;\n const rootMetaObject = metaScene.metaObjects[storeyId];\n if (!rootMetaObject) {\n return;\n }\n const storeySubObjects = rootMetaObject.getObjectIDsInSubtree();\n for (var i = 0, len = storeySubObjects.length; i < len; i++) {\n const objectId = storeySubObjects[i];\n const metaObject = metaScene.metaObjects[objectId];\n const entity = scene.objects[objectId];\n if (entity) {\n callback(entity, metaObject);\n }\n }\n }\n\n /**\n * Creates a 2D map of the given storey.\n *\n * @param {String} storeyId ID of the ````IfcBuildingStorey```` object.\n * @param {*} [options] Options for creating the image.\n * @param {Number} [options.width=300] Image width in pixels. Height will be automatically determined from this, if not given.\n * @param {Number} [options.height=300] Image height in pixels, as an alternative to width. Width will be automatically determined from this, if not given.\n * @param {String} [options.format=\"png\"] Image format. Accepted values are \"png\" and \"jpeg\".\n * @returns {StoreyMap} The StoreyMap.\n */\n createStoreyMap(storeyId, options = {}) {\n\n const storey = this.storeys[storeyId];\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return EMPTY_IMAGE;\n }\n\n const viewer = this.viewer;\n const scene = viewer.scene;\n const format = options.format || \"png\";\n const aabb = (this._fitStoreyMaps) ? storey.storeyAABB : storey.modelAABB;\n const aspect = Math.abs((aabb[5] - aabb[2]) / (aabb[3] - aabb[0]));\n const padding = options.padding || 0;\n\n let width;\n let height;\n\n if (options.width && options.height) {\n width = options.width;\n height = options.height;\n\n } else if (options.height) {\n height = options.height;\n width = Math.round(height / aspect);\n\n } else if (options.width) {\n width = options.width;\n height = Math.round(width * aspect);\n\n } else {\n width = 300;\n height = Math.round(width * aspect);\n }\n\n this._objectsMemento.saveObjects(scene);\n this._cameraMemento.saveCamera(scene);\n\n this.showStoreyObjects(storeyId, utils.apply(options, {\n hideOthers: true\n }));\n\n this._arrangeStoreyMapCamera(storey);\n\n const src = viewer.getSnapshot({\n width: width,\n height: height,\n format: format,\n });\n\n this._objectsMemento.restoreObjects(scene);\n this._cameraMemento.restoreCamera(scene);\n\n return new StoreyMap(storeyId, src, format, width, height, padding);\n }\n\n _arrangeStoreyMapCamera(storey) {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const camera = scene.camera;\n const aabb = (this._fitStoreyMaps) ? storey.storeyAABB : storey.modelAABB;\n const look = math.getAABB3Center(aabb);\n const sca = 0.5;\n const eye = tempVec3a;\n eye[0] = look[0] + (camera.worldUp[0] * sca);\n eye[1] = look[1] + (camera.worldUp[1] * sca);\n eye[2] = look[2] + (camera.worldUp[2] * sca);\n const up = camera.worldForward;\n viewer.cameraFlight.jumpTo({eye: eye, look: look, up: up});\n const xHalfSize = (aabb[3] - aabb[0]) / 2;\n const yHalfSize = (aabb[4] - aabb[1]) / 2;\n const zHalfSize = (aabb[5] - aabb[2]) / 2;\n const xmin = -xHalfSize;\n const xmax = +xHalfSize;\n const ymin = -yHalfSize;\n const ymax = +yHalfSize;\n const zmin = -zHalfSize;\n const zmax = +zHalfSize;\n viewer.camera.customProjection.matrix = math.orthoMat4c(xmin, xmax, zmin, zmax, ymin, ymax, tempMat4);\n viewer.camera.projection = \"customProjection\";\n }\n\n /**\n * Attempts to pick an {@link Entity} at the given pixel coordinates within a StoreyMap image.\n *\n * @param {StoreyMap} storeyMap The StoreyMap.\n * @param {Number[]} imagePos 2D pixel coordinates within the bounds of {@link StoreyMap#imageData}.\n * @param {*} [options] Picking options.\n * @param {Boolean} [options.pickSurface=false] Whether to return the picked position on the surface of the Entity.\n * @returns {PickResult} The pick result, if an Entity was successfully picked, else null.\n */\n pickStoreyMap(storeyMap, imagePos, options = {}) {\n\n const storeyId = storeyMap.storeyId;\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return null\n }\n\n const normX = 1.0 - (imagePos[0] / storeyMap.width);\n const normZ = 1.0 - (imagePos[1] / storeyMap.height);\n\n const aabb = (this._fitStoreyMaps) ? storey.storeyAABB : storey.modelAABB;\n\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xmax = aabb[3];\n const ymax = aabb[4];\n const zmax = aabb[5];\n\n const xWorldSize = xmax - xmin;\n const yWorldSize = ymax - ymin;\n const zWorldSize = zmax - zmin;\n\n const origin = math.vec3([xmin + (xWorldSize * normX), ymin + (yWorldSize * 0.5), zmin + (zWorldSize * normZ)]);\n const direction = math.vec3([0, -1, 0]);\n const look = math.addVec3(origin, direction, tempVec3a);\n const worldForward = this.viewer.camera.worldForward;\n const matrix = math.lookAtMat4v(origin, look, worldForward, tempMat4);\n\n const pickResult = this.viewer.scene.pick({ // Picking with arbitrarily-positioned ray\n pickSurface: options.pickSurface,\n pickInvisible: true,\n matrix\n });\n\n return pickResult;\n }\n\n storeyMapToWorldPos(storeyMap, imagePos, options = {}) {\n\n const storeyId = storeyMap.storeyId;\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return null\n }\n\n const normX = 1.0 - (imagePos[0] / storeyMap.width);\n const normZ = 1.0 - (imagePos[1] / storeyMap.height);\n\n const aabb = (this._fitStoreyMaps) ? storey.storeyAABB : storey.modelAABB;\n\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xmax = aabb[3];\n const ymax = aabb[4];\n const zmax = aabb[5];\n\n const xWorldSize = xmax - xmin;\n const yWorldSize = ymax - ymin;\n const zWorldSize = zmax - zmin;\n\n const origin = math.vec3([xmin + (xWorldSize * normX), ymin + (yWorldSize * 0.5), zmin + (zWorldSize * normZ)]);\n\n return origin;\n }\n\n\n /**\n * Gets the ID of the storey that contains the given 3D World-space position.\n *.\n * @param {Number[]} worldPos 3D World-space position.\n * @returns {String} ID of the storey containing the position, or null if the position falls outside all the storeys.\n */\n getStoreyContainingWorldPos(worldPos) {\n for (var storeyId in this.storeys) {\n const storey = this.storeys[storeyId];\n if (math.point3AABB3Intersect(storey.storeyAABB, worldPos)) {\n return storeyId;\n }\n }\n return null;\n }\n\n /**\n * Converts a 3D World-space position to a 2D position within a StoreyMap image.\n *\n * Use {@link StoreyViewsPlugin#pickStoreyMap} to convert 2D image positions to 3D world-space.\n *\n * @param {StoreyMap} storeyMap The StoreyMap.\n * @param {Number[]} worldPos 3D World-space position within the storey.\n * @param {Number[]} imagePos 2D pixel position within the {@link StoreyMap#imageData}.\n * @returns {Boolean} True if ````imagePos```` is within the bounds of the {@link StoreyMap#imageData}, else ````false```` if it falls outside.\n */\n worldPosToStoreyMap(storeyMap, worldPos, imagePos) {\n\n const storeyId = storeyMap.storeyId;\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return false\n }\n\n const aabb = (this._fitStoreyMaps) ? storey.storeyAABB : storey.modelAABB;\n\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n\n const xmax = aabb[3];\n const ymax = aabb[4];\n const zmax = aabb[5];\n\n const xWorldSize = xmax - xmin;\n const yWorldSize = ymax - ymin;\n const zWorldSize = zmax - zmin;\n\n const camera = this.viewer.camera;\n const worldUp = camera.worldUp;\n\n const xUp = worldUp[0] > worldUp[1] && worldUp[0] > worldUp[2];\n const yUp = !xUp && worldUp[1] > worldUp[0] && worldUp[1] > worldUp[2];\n const zUp = !xUp && !yUp && worldUp[2] > worldUp[0] && worldUp[2] > worldUp[1];\n\n const ratioX = (storeyMap.width / xWorldSize);\n const ratioY = yUp ? (storeyMap.height / zWorldSize) : (storeyMap.height / yWorldSize); // Assuming either Y or Z is \"up\", but never X\n\n imagePos[0] = Math.floor(storeyMap.width - ((worldPos[0] - xmin) * ratioX));\n imagePos[1] = Math.floor(storeyMap.height - ((worldPos[2] - zmin) * ratioY));\n\n return (imagePos[0] >= 0 && imagePos[0] < storeyMap.width && imagePos[1] >= 0 && imagePos[1] <= storeyMap.height);\n }\n\n /**\n * Converts a 3D World-space direction vector to a 2D vector within a StoreyMap image.\n *\n * @param {StoreyMap} storeyMap The StoreyMap.\n * @param {Number[]} worldDir 3D World-space direction vector.\n * @param {Number[]} imageDir Normalized 2D direction vector.\n */\n worldDirToStoreyMap(storeyMap, worldDir, imageDir) {\n const camera = this.viewer.camera;\n const eye = camera.eye;\n const look = camera.look;\n const eyeLookDir = math.subVec3(look, eye, tempVec3a);\n const worldUp = camera.worldUp;\n const xUp = worldUp[0] > worldUp[1] && worldUp[0] > worldUp[2];\n const yUp = !xUp && worldUp[1] > worldUp[0] && worldUp[1] > worldUp[2];\n const zUp = !xUp && !yUp && worldUp[2] > worldUp[0] && worldUp[2] > worldUp[1];\n if (xUp) {\n imageDir[0] = eyeLookDir[1];\n imageDir[1] = eyeLookDir[2];\n } else if (yUp) {\n imageDir[0] = eyeLookDir[0];\n imageDir[1] = eyeLookDir[2];\n } else {\n imageDir[0] = eyeLookDir[0];\n imageDir[1] = eyeLookDir[1];\n }\n math.normalizeVec2(imageDir);\n }\n\n /**\n * Destroys this StoreyViewsPlugin.\n */\n destroy() {\n this.viewer.scene.off(this._onModelLoaded);\n super.destroy();\n }\n}\n\nexport {StoreyViewsPlugin}\n", @@ -27678,7 +28206,7 @@ "lineNumber": 1 }, { - "__docId__": 1517, + "__docId__": 1535, "kind": "variable", "name": "tempVec3a", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", @@ -27699,7 +28227,7 @@ "ignore": true }, { - "__docId__": 1518, + "__docId__": 1536, "kind": "variable", "name": "tempMat4", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", @@ -27720,7 +28248,7 @@ "ignore": true }, { - "__docId__": 1519, + "__docId__": 1537, "kind": "variable", "name": "EMPTY_IMAGE", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", @@ -27741,7 +28269,7 @@ "ignore": true }, { - "__docId__": 1520, + "__docId__": 1538, "kind": "class", "name": "StoreyViewsPlugin", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", @@ -27759,7 +28287,7 @@ ] }, { - "__docId__": 1521, + "__docId__": 1539, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27824,7 +28352,7 @@ ] }, { - "__docId__": 1522, + "__docId__": 1540, "kind": "member", "name": "_objectsMemento", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27842,7 +28370,7 @@ } }, { - "__docId__": 1523, + "__docId__": 1541, "kind": "member", "name": "_cameraMemento", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27860,7 +28388,7 @@ } }, { - "__docId__": 1524, + "__docId__": 1542, "kind": "member", "name": "storeys", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27879,7 +28407,7 @@ } }, { - "__docId__": 1525, + "__docId__": 1543, "kind": "member", "name": "modelStoreys", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27898,7 +28426,7 @@ } }, { - "__docId__": 1526, + "__docId__": 1544, "kind": "member", "name": "_fitStoreyMaps", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27916,7 +28444,7 @@ } }, { - "__docId__": 1527, + "__docId__": 1545, "kind": "member", "name": "_onModelLoaded", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27934,7 +28462,7 @@ } }, { - "__docId__": 1528, + "__docId__": 1546, "kind": "method", "name": "_registerModelStoreys", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27958,7 +28486,7 @@ "return": null }, { - "__docId__": 1529, + "__docId__": 1547, "kind": "method", "name": "_deregisterModelStoreys", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -27982,7 +28510,7 @@ "return": null }, { - "__docId__": 1530, + "__docId__": 1548, "kind": "get", "name": "fitStoreyMaps", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28015,7 +28543,7 @@ } }, { - "__docId__": 1531, + "__docId__": 1549, "kind": "method", "name": "gotoStoreyCamera", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28071,7 +28599,7 @@ "return": null }, { - "__docId__": 1532, + "__docId__": 1550, "kind": "method", "name": "showStoreyObjects", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28119,7 +28647,7 @@ "return": null }, { - "__docId__": 1533, + "__docId__": 1551, "kind": "method", "name": "withStoreyObjects", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28155,7 +28683,7 @@ "return": null }, { - "__docId__": 1534, + "__docId__": 1552, "kind": "method", "name": "createStoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28240,7 +28768,7 @@ } }, { - "__docId__": 1535, + "__docId__": 1553, "kind": "method", "name": "_arrangeStoreyMapCamera", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28264,7 +28792,7 @@ "return": null }, { - "__docId__": 1536, + "__docId__": 1554, "kind": "method", "name": "pickStoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28335,7 +28863,7 @@ } }, { - "__docId__": 1537, + "__docId__": 1555, "kind": "method", "name": "storeyMapToWorldPos", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28377,7 +28905,7 @@ } }, { - "__docId__": 1538, + "__docId__": 1556, "kind": "method", "name": "getStoreyContainingWorldPos", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28416,7 +28944,7 @@ } }, { - "__docId__": 1539, + "__docId__": 1557, "kind": "method", "name": "worldPosToStoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28475,7 +29003,7 @@ } }, { - "__docId__": 1540, + "__docId__": 1558, "kind": "method", "name": "worldDirToStoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28521,7 +29049,7 @@ "return": null }, { - "__docId__": 1541, + "__docId__": 1559, "kind": "method", "name": "destroy", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -28536,7 +29064,7 @@ "return": null }, { - "__docId__": 1542, + "__docId__": 1560, "kind": "file", "name": "src/plugins/StoreyViewsPlugin/index.js", "content": "export * from \"./StoreyViewsPlugin.js\";", @@ -28547,7 +29075,7 @@ "lineNumber": 1 }, { - "__docId__": 1543, + "__docId__": 1561, "kind": "file", "name": "src/plugins/TreeViewPlugin/RenderService.js", "content": "/**\n * @desc A {@link TreeViewPlugin} render class.\n * \n */\nexport class RenderService {\n\n /*\n * Creates the root node of the tree.\n * @return {HTMLElement} The root node of the tree.\n */\n createRootNode() {\n return document.createElement('ul')\n }\n\n /*\n * Creates node of the tree.\n * @param {Object} node The node to create.\n\n * @return {HTMLElement} The html element for the node.\n */\n createNodeElement(node, expandHandler, checkHandler, contextmenuHandler, titleClickHandler) {\n const nodeElement = document.createElement('li');\n nodeElement.id = node.nodeId;\n\n if (node.xrayed) {\n nodeElement.classList.add('xrayed-node');\n }\n \n if (node.children.length > 0) {\n const switchElement = document.createElement('a');\n switchElement.href = '#';\n switchElement.id = `switch-${node.nodeId}`;\n switchElement.textContent = '+';\n switchElement.classList.add('plus');\n if (expandHandler) switchElement.addEventListener('click', expandHandler);\n nodeElement.appendChild(switchElement);\n }\n \n const checkbox = document.createElement('input');\n checkbox.id = `checkbox-${node.nodeId}`;\n checkbox.type = \"checkbox\";\n checkbox.checked = node.checked;\n checkbox.style[\"pointer-events\"] = \"all\";\n if (checkHandler) checkbox.addEventListener(\"change\", checkHandler);\n nodeElement.appendChild(checkbox);\n \n const span = document.createElement('span');\n span.textContent = node.title;\n nodeElement.appendChild(span);\n\n if (contextmenuHandler) {\n span.oncontextmenu = contextmenuHandler;\n }\n\n if (titleClickHandler) {\n span.onclick = titleClickHandler;\n }\n\n return nodeElement;\n }\n\n createDisabledNodeElement(rootName) {\n const li = document.createElement('li');\n\n const switchElement = document.createElement('a');\n switchElement.href = '#';\n switchElement.textContent = '!';\n switchElement.classList.add('warn');\n switchElement.classList.add('warning');\n li.appendChild(switchElement);\n \n const span = document.createElement('span');\n span.textContent = rootName;\n li.appendChild(span);\n\n return li;\n }\n\n addChildren(element, nodes) {\n const ul = document.createElement('ul');\n nodes.forEach((nodeElement) => {\n ul.appendChild(nodeElement);\n });\n\n element.parentElement.appendChild(ul);\n }\n\n expand(element, expandHandler, collapseHandler) {\n element.classList.remove('plus');\n element.classList.add('minus');\n element.textContent = '-';\n element.removeEventListener('click', expandHandler);\n element.addEventListener('click', collapseHandler);\n }\n\n collapse(element, expandHandler, collapseHandler) {\n if (!element) {\n return;\n }\n const parent = element.parentElement;\n if (!parent) {\n return;\n }\n const ul = parent.querySelector('ul');\n if (!ul) {\n return;\n }\n parent.removeChild(ul);\n element.classList.remove('minus');\n element.classList.add('plus');\n element.textContent = '+';\n element.removeEventListener('click', collapseHandler);\n element.addEventListener('click', expandHandler);\n }\n\n isExpanded(element) {\n const parentElement = element.parentElement;\n return parentElement.getElementsByTagName('li')[0] !== undefined;\n }\n\n getId(element) {\n const parentElement = element.parentElement;\n return parentElement.id;\n }\n\n getIdFromCheckbox(element) {\n return element.id.replace('checkbox-', '');\n }\n\n getSwitchElement(nodeId) {\n return document.getElementById(`switch-${nodeId}`);\n }\n\n isChecked(element) {\n return element.checked;\n }\n\n setCheckbox(nodeId, checked) {\n const checkbox = document.getElementById(`checkbox-${nodeId}`);\n if (checkbox) {\n if (checked !== checkbox.checked) {\n checkbox.checked = checked;\n }\n }\n }\n\n setXRayed(nodeId, xrayed) {\n const treeNode = document.getElementById(nodeId);\n if (treeNode) {\n if (xrayed) {\n treeNode.classList.add('xrayed-node');\n } else {\n treeNode.classList.remove('xrayed-node');\n }\n }\n }\n\n setHighlighted(nodeId, highlighted) { \n const treeNode = document.getElementById(nodeId);\n if (treeNode) {\n if (highlighted) {\n treeNode.scrollIntoView({block: \"center\"});\n treeNode.classList.add('highlighted-node');\n } else {\n treeNode.classList.remove('highlighted-node');\n }\n }\n }\n}\n", @@ -28558,7 +29086,7 @@ "lineNumber": 1 }, { - "__docId__": 1544, + "__docId__": 1562, "kind": "class", "name": "RenderService", "memberof": "src/plugins/TreeViewPlugin/RenderService.js", @@ -28573,7 +29101,7 @@ "interface": false }, { - "__docId__": 1545, + "__docId__": 1563, "kind": "method", "name": "createRootNode", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28593,7 +29121,7 @@ } }, { - "__docId__": 1546, + "__docId__": 1564, "kind": "method", "name": "createNodeElement", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28644,7 +29172,7 @@ } }, { - "__docId__": 1547, + "__docId__": 1565, "kind": "method", "name": "createDisabledNodeElement", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28671,7 +29199,7 @@ } }, { - "__docId__": 1548, + "__docId__": 1566, "kind": "method", "name": "addChildren", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28700,7 +29228,7 @@ "return": null }, { - "__docId__": 1549, + "__docId__": 1567, "kind": "method", "name": "expand", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28735,7 +29263,7 @@ "return": null }, { - "__docId__": 1550, + "__docId__": 1568, "kind": "method", "name": "collapse", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28770,7 +29298,7 @@ "return": null }, { - "__docId__": 1551, + "__docId__": 1569, "kind": "method", "name": "isExpanded", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28797,7 +29325,7 @@ } }, { - "__docId__": 1552, + "__docId__": 1570, "kind": "method", "name": "getId", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28824,7 +29352,7 @@ } }, { - "__docId__": 1553, + "__docId__": 1571, "kind": "method", "name": "getIdFromCheckbox", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28851,7 +29379,7 @@ } }, { - "__docId__": 1554, + "__docId__": 1572, "kind": "method", "name": "getSwitchElement", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28878,7 +29406,7 @@ } }, { - "__docId__": 1555, + "__docId__": 1573, "kind": "method", "name": "isChecked", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28905,7 +29433,7 @@ } }, { - "__docId__": 1556, + "__docId__": 1574, "kind": "method", "name": "setCheckbox", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28934,7 +29462,7 @@ "return": null }, { - "__docId__": 1557, + "__docId__": 1575, "kind": "method", "name": "setXRayed", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28963,7 +29491,7 @@ "return": null }, { - "__docId__": 1558, + "__docId__": 1576, "kind": "method", "name": "setHighlighted", "memberof": "src/plugins/TreeViewPlugin/RenderService.js~RenderService", @@ -28992,7 +29520,7 @@ "return": null }, { - "__docId__": 1559, + "__docId__": 1577, "kind": "file", "name": "src/plugins/TreeViewPlugin/TreeViewNode.js", "content": "/**\n * @desc A node within a {@link TreeViewPlugin}.\n *\n * These are provided by {@link TreeViewPlugin#withNodeTree} and the\n * [contextmenu](https://developer.mozilla.org/en-US/docs/Web/API/Element/contextmenu_event) event fired by\n * TreeViewPlugin whenever we right-click on a tree node.\n *\n * @interface\n * @abstract\n */\nclass TreeViewNode {\n\n /**\n * Globally unique node ID.\n *\n * @type {String}\n * @abstract\n */\n get nodeId() {\n }\n\n /**\n * Title of the TreeViewNode.\n *\n * @type {String}\n * @abstract\n */\n get title() {\n }\n\n /** Type of the corresponding {@link MetaObject}.\n *\n * @type {String}\n * @abstract\n */\n get type() {\n }\n\n /**\n * ID of the corresponding {@link MetaObject}.\n *\n * This is only defined if the TreeViewNode represents an object.\n *\n * @type {String}\n * @abstract\n */\n get objectId() {\n }\n\n /**\n * The child TreeViewNodes.\n *\n * @type {Array}\n * @abstract\n */\n get children() {\n }\n\n /** The parent TreeViewNode.\n *\n * @type {TreeViewNode}\n * @abstract\n */\n get parent() {\n }\n\n /** The number of {@link Entity}s within the subtree of this TreeViewNode.\n *\n * @type {Number}\n * @abstract\n */\n get numEntities() {\n\n }\n\n /** The number of {@link Entity}s that are currently visible within the subtree of this TreeViewNode.\n *\n * @type {Number}\n * @abstract\n */\n get numVisibleEntities() {\n }\n\n /** Whether or not the TreeViewNode is currently checked.\n *\n * @type {Boolean}\n * @abstract\n */\n get checked() {\n }\n\n /** Whether or not the TreeViewNode is currently xrayed.\n *\n * @type {Boolean}\n * @abstract\n */\n get xrayed() {\n }\n}\n\nexport {TreeViewNode};\n", @@ -29003,7 +29531,7 @@ "lineNumber": 1 }, { - "__docId__": 1560, + "__docId__": 1578, "kind": "class", "name": "TreeViewNode", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js", @@ -29019,7 +29547,7 @@ "interface": true }, { - "__docId__": 1561, + "__docId__": 1579, "kind": "get", "name": "nodeId", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29041,7 +29569,7 @@ "abstract": true }, { - "__docId__": 1562, + "__docId__": 1580, "kind": "get", "name": "title", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29063,7 +29591,7 @@ "abstract": true }, { - "__docId__": 1563, + "__docId__": 1581, "kind": "get", "name": "type", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29085,7 +29613,7 @@ "abstract": true }, { - "__docId__": 1564, + "__docId__": 1582, "kind": "get", "name": "objectId", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29107,7 +29635,7 @@ "abstract": true }, { - "__docId__": 1565, + "__docId__": 1583, "kind": "get", "name": "children", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29129,7 +29657,7 @@ "abstract": true }, { - "__docId__": 1566, + "__docId__": 1584, "kind": "get", "name": "parent", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29151,7 +29679,7 @@ "abstract": true }, { - "__docId__": 1567, + "__docId__": 1585, "kind": "get", "name": "numEntities", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29173,7 +29701,7 @@ "abstract": true }, { - "__docId__": 1568, + "__docId__": 1586, "kind": "get", "name": "numVisibleEntities", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29195,7 +29723,7 @@ "abstract": true }, { - "__docId__": 1569, + "__docId__": 1587, "kind": "get", "name": "checked", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29217,7 +29745,7 @@ "abstract": true }, { - "__docId__": 1570, + "__docId__": 1588, "kind": "get", "name": "xrayed", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -29239,7 +29767,7 @@ "abstract": true }, { - "__docId__": 1571, + "__docId__": 1589, "kind": "file", "name": "src/plugins/TreeViewPlugin/TreeViewPlugin.js", "content": "import {Plugin} from \"../../viewer/Plugin.js\";\nimport {RenderService} from \"./RenderService.js\";\n\nconst treeViews = [];\n\n/**\n * @desc A {@link Viewer} plugin that provides an HTML tree view to navigate the IFC elements in models.\n *
    \n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_XKT_WestRiverSideHospital)]\n *\n * ## Overview\n *\n * * A fast HTML tree view, with zero external dependencies, that works with huge numbers of objects.\n * * Each tree node has a checkbox to control the visibility of its object.\n * * Has three hierarchy modes: \"containment\", \"types\" and \"storeys\".\n * * Automatically contains all models (that have metadata) that are currently in the {@link Scene}.\n * * Sorts tree nodes by default - spatially, from top-to-bottom for ````IfcBuildingStorey```` nodes, and alphanumerically for other nodes.\n * * Allows custom CSS styling.\n * * Use {@link ContextMenu} to create a context menu for the tree nodes.\n *\n * ## Credits\n *\n * TreeViewPlugin is based on techniques described in [*Super Fast Tree View in JavaScript*](https://chrissmith.xyz/super-fast-tree-view-in-javascript/) by [Chris Smith](https://twitter.com/chris22smith).\n *\n * ## Usage\n *\n * In the example below, we'll add a TreeViewPlugin which, by default, will automatically show the structural\n * hierarchy of the IFC elements in each model we load.\n *\n * Then we'll use an {@link XKTLoaderPlugin} to load the Schependomlaan model from an\n * [.xkt file](https://github.com/xeokit/xeokit-sdk/tree/master/examples/models/xkt/schependomlaan).\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/navigation/#TreeViewPlugin_Containment)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, TreeViewPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\")\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n * ````\n *\n * ## Manually Adding Models\n *\n * Instead of adding models automatically, we can control which models appear in our TreeViewPlugin by adding them manually.\n *\n * In the next example, we'll configure the TreeViewPlugin to not add models automatically. Then, once the model\n * has loaded, we'll add it manually using {@link TreeViewPlugin#addModel}.\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * autoAddModels: false // <<---------------- Don't auto-add models\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n * treeView.addModel(model.id);\n * });\n * ````\n *\n * Adding models manually also allows us to set some options for the model. For example, the ````rootName```` option allows us to provide a custom name for\n * the root node, which is sometimes desirable when the model's \"IfcProject\" element's name is not suitable:\n *\n * ````javascript\n * model.on(\"loaded\", () => {\n * treeView.addModel(model.id, {\n * rootName: \"Schependomlaan Model\"\n * });\n * });\n * ````\n *\n * ## Initially Expanding the Hierarchy\n *\n * We can also configure TreeViewPlugin to initially expand each model's nodes to a given depth.\n *\n * Let's automatically expand the first three nodes from the root, for every model added:\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * autoExpandDepth: 3\n * });\n * ````\n *\n * ## Showing a Node by ID\n *\n * We can show a given node using its ID. This causes the TreeViewPlugin to collapse, then expand and scroll the node into view, then highlight the node.\n *\n * See the documentation for the {@link TreeViewPlugin#showNode} method for more information, including how to define a custom highlighted appearance for the node using CSS.\n *\n * Let's make the TreeViewPlugin show the node corresponding to whatever object {@link Entity} that we pick:\n *\n * ````javascript\n * viewer.cameraControl.on(\"picked\", function (e) {\n * var objectId = e.entity.id;\n * treeView.showNode(objectId);\n * });\n * ````\n *\n * This will de-highlight any node that was previously shown by this method.\n *\n * Note that this method only works if the picked {@link Entity} is an object that belongs to a model that's represented in the TreeViewPlugin.\n *\n * ## Customizing Appearance\n *\n * We can customize the appearance of our TreeViewPlugin by defining custom CSS for its HTML\n * elements. See our example's [source code](https://github.com/xeokit/xeokit-sdk/blob/master/examples/BIMOffline_XKT_Schependomlaan.html)\n * for an example of custom CSS rules.\n *\n * ## Model Hierarchies\n *\n * TreeViewPlugin has three hierarchies for organizing its nodes:\n *\n * * \"containment\" - organizes the tree nodes to indicate the containment hierarchy of the {@link MetaObject}s.\n * * \"types\" - groups nodes by their IFC types.\n * * \"storeys\" - groups nodes within their ````IfcBuildingStoreys````, and sub-groups them by their IFC types.\n *\n *
    \n * The table below shows what the hierarchies look like:\n *
    \n *\n * | 1. Containment Hierarchy | 2. Types Hierarchy | 3. Storeys Hierarchy |\n * |---|---|---|\n * | | | |\n *
    \n *\n * Let's create a TreeViewPlugin that groups nodes by their building stories and IFC types:\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * hierarchy: \"stories\"\n * });\n * ````\n *\n * ## Sorting Nodes\n *\n * TreeViewPlugin sorts its tree nodes by default. For a \"storeys\" hierarchy, it orders ````IfcBuildingStorey```` nodes\n * spatially, with the node for the highest story at the top, down to the lowest at the bottom.\n *\n * For all the hierarchy types (\"containment\", \"classes\" and \"storeys\"), TreeViewPlugin sorts the other node types\n * alphanumerically on their titles.\n *\n * If for some reason you need to prevent sorting, create your TreeViewPlugin with the option disabled, like so:\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * hierarchy: \"stories\",\n * sortNodes: false // <<------ Disable node sorting\n * });\n * ````\n *\n * Note that, for all hierarchy modes, node sorting is only done for each model at the time that it is added to the TreeViewPlugin, and will not\n * update dynamically if we later transform the {@link Entity}s corresponding to the nodes.\n *\n * ## Pruning empty nodes\n *\n * Sometimes a model contains subtrees of objects that don't have any geometry. These are models whose\n * {@link MetaModel} contains trees of {@link MetaObject}s that don't have any {@link Entity}s in the {@link Scene}.\n *\n * For these models, the tree view would contain nodes that don't do anything in the Scene when we interact with them,\n * which is undesirable.\n *\n * By default, TreeViewPlugin will not create nodes for those objects. However, we can override that behaviour if we want\n * to have nodes for those objects (perhaps for debugging the model):\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * hierarchy: \"stories\",\n * pruneEmptyNodes: false // <<------ Create nodes for object subtrees without geometry\n * });\n * ````\n *\n * ## Context Menu\n *\n * TreeViewPlugin fires a \"contextmenu\" event whenever we right-click on a tree node.\n *\n * The event contains:\n *\n * * ````event```` - the original [contextmenu](https://developer.mozilla.org/en-US/docs/Web/API/Element/contextmenu_event) [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent)\n * * ````viewer```` - the {@link Viewer}\n * * ````treeViewPlugin```` - the TreeViewPlugin\n * * ````treeViewNode```` - the {@link TreeViewNode} representing the tree node\n *

    \n *\n * Let's use {@link ContextMenu} to show a simple context menu for the node we clicked.\n *\n * [[Run an example](https://xeokit.github.io/xeokit-sdk/examples/index.html#ContextMenu_Canvas_TreeViewPlugin_Custom)]\n *\n * ````javascript\n * import {ContextMenu} from \"../src/extras/ContextMenu/ContextMenu.js\";\n *\n * const treeViewContextMenu = new ContextMenu({\n * items: [\n * [\n * [\n * {\n * title: \"Hide\",\n * doAction: function (context) {\n * context.treeViewPlugin.withNodeTree(context.treeViewNode, (treeViewNode) => {\n * if (treeViewNode.objectId) {\n * const entity = context.viewer.scene.objects[treeViewNode.objectId];\n * if (entity) {\n * entity.visible = false;\n * }\n * }\n * });\n * }\n * },\n * {\n * title: \"Hide all\",\n * doAction: function (context) {\n * context.viewer.scene.setObjectsVisible(context.viewer.scene.visibleObjectIds, false);\n * }\n * }\n * ],\n * [\n * {\n * title: \"Show\",\n * doAction: function (context) {\n * context.treeViewPlugin.withNodeTree(context.treeViewNode, (treeViewNode) => {\n * if (treeViewNode.objectId) {\n * const entity = context.viewer.scene.objects[treeViewNode.objectId];\n * if (entity) {\n * entity.visible = true;\n * entity.xrayed = false;\n * entity.selected = false;\n * }\n * }\n * });\n * }\n * },\n * {\n * title: \"Show all\",\n * doAction: function (context) {\n * const scene = context.viewer.scene;\n * scene.setObjectsVisible(scene.objectIds, true);\n * scene.setObjectsXRayed(scene.xrayedObjectIds, false);\n * scene.setObjectsSelected(scene.selectedObjectIds, false);\n * }\n * }\n * ]\n * ]\n * ]\n * });\n *\n * treeView.on(\"contextmenu\", (e) => {\n *\n * const event = e.event; // MouseEvent\n * const viewer = e.viewer; // Viewer\n * const treeViewPlugin = e.treeViewPlugin; // TreeViewPlugin\n * const treeViewNode = e.treeViewNode; // TreeViewNode\n *\n * treeViewContextMenu.show(e.event.pageX, e.event.pageY);\n *\n * treeViewContextMenu.context = {\n * viewer: e.viewer,\n * treeViewPlugin: e.treeViewPlugin,\n * treeViewNode: e.treeViewNode\n * };\n * });\n * ````\n *\n * ## Clicking Node Titles\n *\n * TreeViewPlugin fires a \"nodeTitleClicked\" event whenever we left-click on a tree node.\n *\n * Like the \"contextmenu\" event, this event contains:\n *\n * * ````event```` - the original [click](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event) [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent)\n * * ````viewer```` - the {@link Viewer}\n * * ````treeViewPlugin```` - the TreeViewPlugin\n * * ````treeViewNode```` - the {@link TreeViewNode} representing the tree node\n *

    \n *\n * Let's register a callback to isolate and fit-to-view the {@link Entity}(s) represented by the node. This callback is\n * going to X-ray all the other Entitys, fly the camera to fit the Entity(s) for the clicked node, then hide the other Entitys.\n *\n * [[Run an example](https://xeokit.github.io/xeokit-sdk/examples/index.html#ContextMenu_Canvas_TreeViewPlugin_Custom)]\n *\n * ````javascript\n * treeView.on(\"nodeTitleClicked\", (e) => {\n * const scene = viewer.scene;\n * const objectIds = [];\n * e.treeViewPlugin.withNodeTree(e.treeViewNode, (treeViewNode) => {\n * if (treeViewNode.objectId) {\n * objectIds.push(treeViewNode.objectId);\n * }\n * });\n * scene.setObjectsXRayed(scene.objectIds, true);\n * scene.setObjectsVisible(scene.objectIds, true);\n * scene.setObjectsXRayed(objectIds, false);\n * viewer.cameraFlight.flyTo({\n * aabb: scene.getAABB(objectIds),\n * duration: 0.5\n * }, () => {\n * setTimeout(function () {\n * scene.setObjectsVisible(scene.xrayedObjectIds, false);\n * scene.setObjectsXRayed(scene.xrayedObjectIds, false);\n * }, 500);\n * });\n * });\n * ````\n *\n * To make the cursor change to a pointer when we hover over the node titles, and also to make the titles change to blue, we'll also define this CSS for the ```````` elements\n * that represent the titles of our TreeViewPlugin nodes:\n *\n * ````css\n * #treeViewContainer ul li span:hover {\n * color: blue;\n * cursor: pointer;\n * }\n * ````\n *\n * @class TreeViewPlugin\n */\nexport class TreeViewPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {*} cfg Plugin configuration.\n * @param {String} [cfg.containerElementId] ID of an existing HTML element to contain the TreeViewPlugin - either this or containerElement is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLElement} cfg.containerElement DOM element to contain the TreeViewPlugin.\n * @param {Boolean} [cfg.autoAddModels=true] When ````true```` (default), will automatically add each model as it's created. Set this ````false```` if you want to manually add models using {@link TreeViewPlugin#addModel} instead.\n * @param {Number} [cfg.autoExpandDepth] Optional depth to which to initially expand the tree.\n * @param {String} [cfg.hierarchy=\"containment\"] How to organize the tree nodes: \"containment\", \"storeys\" or \"types\". See the class documentation for details.\n * @param {Boolean} [cfg.sortNodes=true] When true, will sort the children of each node. For a \"storeys\" hierarchy, the\n * ````IfcBuildingStorey```` nodes will be ordered spatially, from the highest storey down to the lowest, on the\n * vertical World axis. For all hierarchy types, other node types will be ordered in the ascending alphanumeric order of their titles.\n * @param {Boolean} [cfg.pruneEmptyNodes=true] When true, will not contain nodes that don't have content in the {@link Scene}. These are nodes whose {@link MetaObject}s don't have {@link Entity}s.\n * @param {RenderService} [cfg.renderService] Optional {@link RenderService} to use. Defaults to the {@link TreeViewPlugin}'s default {@link RenderService}.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"TreeViewPlugin\", viewer);\n\n /**\n * Contains messages for any errors found while last rebuilding this TreeView.\n * @type {String[]}\n */\n this.errors = [];\n\n /**\n * True if errors were found generating this TreeView.\n * @type {boolean}\n */\n this.valid = true;\n\n const containerElement = cfg.containerElement || document.getElementById(cfg.containerElementId);\n\n if (!(containerElement instanceof HTMLElement)) {\n this.error(\"Mandatory config expected: valid containerElementId or containerElement\");\n return;\n }\n\n for (let i = 0; ; i++) {\n if (!treeViews[i]) {\n treeViews[i] = this;\n this._index = i;\n this._id = `tree-${i}`;\n break;\n }\n }\n\n\n this._containerElement = containerElement;\n this._metaModels = {};\n this._autoAddModels = (cfg.autoAddModels !== false);\n this._autoExpandDepth = (cfg.autoExpandDepth || 0);\n this._sortNodes = (cfg.sortNodes !== false);\n this._viewer = viewer;\n this._rootElement = null;\n this._muteSceneEvents = false;\n this._muteTreeEvents = false;\n this._rootNodes = [];\n this._objectNodes = {}; // Object ID -> Node\n this._nodeNodes = {}; // Node ID -> Node\n this._rootNames = {}; // Node ID -> Root name\n this._sortNodes = cfg.sortNodes;\n this._pruneEmptyNodes = cfg.pruneEmptyNodes;\n this._showListItemElementId = null;\n this._renderService = cfg.renderService || new RenderService();\n\n if (!this._renderService) {\n throw new Error('TreeViewPlugin: no render service set');\n }\n\n this._containerElement.oncontextmenu = (e) => {\n e.preventDefault();\n };\n\n this._onObjectVisibility = this._viewer.scene.on(\"objectVisibility\", (entity) => {\n if (this._muteSceneEvents) {\n return;\n }\n const objectId = entity.id;\n const node = this._objectNodes[objectId];\n if (!node) {\n return; // Not in this tree\n }\n const visible = entity.visible;\n const updated = (visible !== node.checked);\n if (!updated) {\n return;\n }\n this._muteTreeEvents = true;\n node.checked = visible;\n if (visible) {\n node.numVisibleEntities++;\n } else {\n node.numVisibleEntities--;\n }\n\n this._renderService.setCheckbox(node.nodeId, visible);\n\n let parent = node.parent;\n while (parent) {\n parent.checked = visible;\n if (visible) {\n parent.numVisibleEntities++;\n } else {\n parent.numVisibleEntities--;\n }\n\n this._renderService.setCheckbox(parent.nodeId, (parent.numVisibleEntities > 0));\n\n parent = parent.parent;\n }\n\n this._muteTreeEvents = false;\n });\n\n this._onObjectXrayed = this._viewer.scene.on('objectXRayed', (entity) => {\n if (this._muteSceneEvents) {\n return;\n }\n const objectId = entity.id;\n const node = this._objectNodes[objectId];\n if (!node) {\n return; // Not in this tree\n }\n this._muteTreeEvents = true;\n const xrayed = entity.xrayed;\n const updated = (xrayed !== node.xrayed);\n if (!updated) {\n return;\n }\n node.xrayed = xrayed;\n\n this._renderService.setXRayed(node.nodeId, xrayed);\n this._muteTreeEvents = false;\n });\n\n this._switchExpandHandler = (event) => {\n event.preventDefault();\n event.stopPropagation();\n const switchElement = event.target;\n this._expandSwitchElement(switchElement);\n };\n\n this._switchCollapseHandler = (event) => {\n event.preventDefault();\n event.stopPropagation();\n const switchElement = event.target;\n this._collapseSwitchElement(switchElement);\n };\n\n this._checkboxChangeHandler = (event) => {\n if (this._muteTreeEvents) {\n return;\n }\n this._muteSceneEvents = true;\n const checkbox = event.target;\n const visible = this._renderService.isChecked(checkbox);\n const nodeId = this._renderService.getIdFromCheckbox(checkbox);\n\n const checkedNode = this._nodeNodes[nodeId];\n const objects = this._viewer.scene.objects;\n let numUpdated = 0;\n \n this._withNodeTree(checkedNode, (node) => {\n const objectId = node.objectId;\n const entity = objects[objectId];\n const isLeaf = (node.children.length === 0);\n node.numVisibleEntities = visible ? node.numEntities : 0;\n if (isLeaf && (visible !== node.checked)) {\n numUpdated++;\n }\n node.checked = visible;\n\n this._renderService.setCheckbox(node.nodeId, visible);\n \n if (entity) {\n entity.visible = visible;\n }\n });\n\n let parent = checkedNode.parent;\n while (parent) {\n parent.checked = visible;\n \n if (visible) {\n parent.numVisibleEntities += numUpdated;\n } else {\n parent.numVisibleEntities -= numUpdated;\n }\n\n this._renderService.setCheckbox(parent.nodeId, (parent.numVisibleEntities > 0));\n \n parent = parent.parent;\n }\n this._muteSceneEvents = false;\n };\n\n this._hierarchy = cfg.hierarchy || \"containment\";\n this._autoExpandDepth = cfg.autoExpandDepth || 0;\n\n if (this._autoAddModels) {\n const modelIds = Object.keys(this.viewer.metaScene.metaModels);\n for (let i = 0, len = modelIds.length; i < len; i++) {\n const modelId = modelIds[i];\n const metaModel = this.viewer.metaScene.metaModels[modelId];\n if (metaModel.finalized) {\n this.addModel(modelId);\n }\n }\n this.viewer.scene.on(\"modelLoaded\", (modelId) => {\n if (this.viewer.metaScene.metaModels[modelId]) {\n this.addModel(modelId);\n }\n });\n }\n\n this.hierarchy = cfg.hierarchy;\n }\n\n /**\n * Sets how the nodes are organized within this tree view.\n *\n * Accepted values are:\n *\n * * \"containment\" - organizes the nodes to indicate the containment hierarchy of the IFC objects.\n * * \"types\" - groups the nodes within their IFC types.\n * * \"storeys\" - groups the nodes within ````IfcBuildingStoreys```` and sub-groups them by their IFC types.\n *\n *
    \n * This can be updated dynamically.\n *\n * Default value is \"containment\".\n *\n * @type {String}\n */\n set hierarchy(hierarchy) {\n hierarchy = hierarchy || \"containment\";\n if (hierarchy !== \"containment\" && hierarchy !== \"storeys\" && hierarchy !== \"types\") {\n this.error(\"Unsupported value for `hierarchy' - defaulting to 'containment'\");\n hierarchy = \"containment\";\n }\n if (this._hierarchy === hierarchy) {\n return;\n }\n this._hierarchy = hierarchy;\n this._createNodes();\n }\n\n /**\n * Gets how the nodes are organized within this tree view.\n *\n * @type {String}\n */\n get hierarchy() {\n return this._hierarchy;\n }\n\n /**\n * Adds a model to this tree view.\n *\n * The model will be automatically removed when destroyed.\n *\n * To automatically add each model as it's created, instead of manually calling this method each time,\n * provide a ````autoAddModels: true```` to the TreeViewPlugin constructor.\n *\n * @param {String} modelId ID of a model {@link Entity} in {@link Scene#models}.\n * @param {Object} [options] Options for model in the tree view.\n * @param {String} [options.rootName] Optional display name for the root node. Ordinary, for \"containment\"\n * and \"storeys\" hierarchy types, the tree would derive the root node name from the model's \"IfcProject\" element\n * name. This option allows to override that name when it is not suitable as a display name.\n */\n addModel(modelId, options = {}) {\n if (!this._containerElement) {\n return;\n }\n const model = this.viewer.scene.models[modelId];\n if (!model) {\n throw \"Model not found: \" + modelId;\n }\n const metaModel = this.viewer.metaScene.metaModels[modelId];\n if (!metaModel) {\n this.error(\"MetaModel not found: \" + modelId);\n return;\n }\n if (this._metaModels[modelId]) {\n this.warn(\"Model already added: \" + modelId);\n return;\n }\n this._metaModels[modelId] = metaModel;\n\n if (options && options.rootName) {\n this._rootNames[modelId] = options.rootName;\n }\n \n model.on(\"destroyed\", () => {\n this.removeModel(model.id);\n });\n this._createNodes();\n }\n\n /**\n * Removes a model from this tree view.\n *\n * Does nothing if model not currently in tree view.\n *\n * @param {String} modelId ID of a model {@link Entity} in {@link Scene#models}.\n */\n removeModel(modelId) {\n if (!this._containerElement) {\n return;\n }\n const metaModel = this._metaModels[modelId];\n if (!metaModel) {\n return;\n }\n\n if (this._rootNames[modelId]) {\n delete this._rootNames[modelId];\n }\n\n delete this._metaModels[modelId];\n this._createNodes();\n }\n\n /**\n * Highlights the tree view node that represents the given object {@link Entity}.\n *\n * This causes the tree view to collapse, then expand to reveal the node, then highlight the node.\n *\n * If a node is previously highlighted, de-highlights that node and collapses the tree first.\n *\n * Note that if the TreeViewPlugin was configured with ````pruneEmptyNodes: true```` (default configuration), then the\n * node won't exist in the tree if it has no Entitys in the {@link Scene}. in that case, nothing will happen.\n *\n * Within the DOM, the node is represented by an ````
  • ```` element. This method will add a ````.highlighted-node```` class to\n * the element to make it appear highlighted, removing that class when de-highlighting it again. See the CSS rules\n * in the TreeViewPlugin examples for an example of that class.\n *\n * @param {String} objectId ID of the {@link Entity}.\n */\n showNode(objectId) {\n this.unShowNode();\n\n const node = this._objectNodes[objectId];\n if (!node) {\n return; // Node may not exist for the given object if (this._pruneEmptyNodes == true)\n }\n\n const nodeId = node.nodeId;\n\n const switchElement = this._renderService.getSwitchElement(nodeId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n switchElement.scrollIntoView();\n return true;\n }\n \n const path = [];\n path.unshift(node);\n let parent = node.parent;\n while (parent) {\n path.unshift(parent);\n parent = parent.parent;\n }\n\n for (let i = 0, len = path.length; i < len; i++) {\n const switchElement = this._renderService.getSwitchElement(path[i].nodeId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n }\n }\n\n this._renderService.setHighlighted(nodeId, true);\n\n this._showListItemElementId = nodeId;\n }\n\n /**\n * De-highlights the node previously shown with {@link TreeViewPlugin#showNode}.\n *\n * Does nothing if no node is currently shown.\n *\n * If the node is currently scrolled into view, keeps the node in view.\n */\n unShowNode() {\n if (!this._showListItemElementId) {\n return;\n }\n\n this._renderService.setHighlighted(this._showListItemElementId, false)\n \n this._showListItemElementId = null;\n }\n\n /**\n * Expands the tree to the given depth.\n *\n * Collapses the tree first.\n *\n * @param {Number} depth Depth to expand to.\n */\n expandToDepth(depth) {\n this.collapse();\n const expand = (node, countDepth) => {\n if (countDepth === depth) {\n return;\n }\n\n const switchElement = this._renderService.getSwitchElement(node.nodeId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n const childNodes = node.children;\n for (var i = 0, len = childNodes.length; i < len; i++) {\n const childNode = childNodes[i];\n expand(childNode, countDepth + 1);\n }\n }\n };\n for (let i = 0, len = this._rootNodes.length; i < len; i++) {\n const rootNode = this._rootNodes[i];\n expand(rootNode, 0);\n }\n }\n\n /**\n * Closes all the nodes in the tree.\n */\n collapse() {\n for (let i = 0, len = this._rootNodes.length; i < len; i++) {\n const rootNode = this._rootNodes[i];\n const objectId = rootNode.objectId;\n this._collapseNode(objectId);\n }\n }\n\n /**\n * Iterates over a subtree of the tree view's {@link TreeViewNode}s, calling the given callback for each\n * node in depth-first pre-order.\n *\n * @param {TreeViewNode} node Root of the subtree.\n * @param {Function} callback Callback called at each {@link TreeViewNode}, with the TreeViewNode given as the argument.\n */\n withNodeTree(node, callback) {\n callback(node);\n const children = node.children;\n if (!children) {\n return;\n }\n for (let i = 0, len = children.length; i < len; i++) {\n this.withNodeTree(children[i], callback);\n }\n }\n\n /**\n * Destroys this TreeViewPlugin.\n */\n destroy() {\n if (!this._containerElement) {\n return;\n }\n this._metaModels = {};\n if (this._rootElement && !this._destroyed) {\n this._rootElement.parentNode.removeChild(this._rootElement);\n this._viewer.scene.off(this._onObjectVisibility);\n this._destroyed = true;\n }\n delete treeViews[this._index];\n super.destroy();\n }\n\n _createNodes() {\n if (this._rootElement) {\n this._rootElement.parentNode.removeChild(this._rootElement);\n this._rootElement = null;\n }\n\n this._rootNodes = [];\n this._objectNodes = {};\n this._nodeNodes = {};\n this._validate();\n if (this.valid || (this._hierarchy !== \"storeys\")) {\n this._createEnabledNodes();\n } else {\n this._createDisabledNodes();\n }\n }\n\n _validate() {\n this.errors = [];\n switch (this._hierarchy) {\n case \"storeys\":\n this.valid = this._validateMetaModelForStoreysHierarchy();\n break;\n case \"types\":\n this.valid = (this._rootNodes.length > 0);\n break;\n case \"containment\":\n default:\n this.valid = (this._rootNodes.length > 0);\n break;\n }\n return this.valid;\n }\n\n _validateMetaModelForStoreysHierarchy(level = 0, ctx, buildingNode) {\n // ctx = ctx || {\n // foundIFCBuildingStoreys: false\n // };\n // const metaObjectType = metaObject.type;\n // const children = metaObject.children;\n // if (metaObjectType === \"IfcBuilding\") {\n // buildingNode = true;\n // } else if (metaObjectType === \"IfcBuildingStorey\") {\n // if (!buildingNode) {\n // errors.push(\"Can't build storeys hierarchy: IfcBuildingStorey found without parent IfcBuilding\");\n // return false;\n // }\n // ctx.foundIFCBuildingStoreys = true;\n // }\n // if (children) {\n // for (let i = 0, len = children.length; i < len; i++) {\n // const childMetaObject = children[i];\n // if (!this._validateMetaModelForStoreysHierarchy(childMetaObject, errors, level + 1, ctx, buildingNode)) {\n // return false;\n // }\n // }\n // }\n // if (level === 0) {\n // if (!ctx.foundIFCBuildingStoreys) {\n // // errors.push(\"Can't build storeys hierarchy: no IfcBuildingStoreys found\");\n // }\n // }\n return true;\n }\n\n _createEnabledNodes() {\n if (this._pruneEmptyNodes) {\n this._findEmptyNodes();\n }\n switch (this._hierarchy) {\n case \"storeys\":\n this._createStoreysNodes();\n if (this._rootNodes.length === 0) {\n this.error(\"Failed to build storeys hierarchy\");\n }\n break;\n case \"types\":\n this._createTypesNodes();\n break;\n case \"containment\":\n default:\n this._createContainmentNodes();\n }\n if (this._sortNodes) {\n this._doSortNodes();\n }\n this._synchNodesToEntities();\n this._createTrees();\n this.expandToDepth(this._autoExpandDepth);\n }\n\n _createDisabledNodes() {\n\n const rootNode = this._renderService.createRootNode();\n this._rootElement = rootNode;\n this._containerElement.appendChild(rootNode);\n\n const rootMetaObjects = this._viewer.metaScene.rootMetaObjects;\n\n for (let objectId in rootMetaObjects) {\n const rootMetaObject = rootMetaObjects[objectId];\n const metaObjectType = rootMetaObject.type;\n const metaObjectName = rootMetaObject.name;\n const rootName = ((metaObjectName && metaObjectName !== \"\"\n && metaObjectName !== \"Undefined\"\n && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType);\n\n const childNode = this._renderService.createDisabledNodeElement(rootName);\n rootNode.appendChild(childNode);\n }\n }\n\n\n _findEmptyNodes() {\n const rootMetaObjects = this._viewer.metaScene.rootMetaObjects;\n for (let objectId in rootMetaObjects) {\n this._findEmptyNodes2(rootMetaObjects[objectId]);\n }\n }\n\n _findEmptyNodes2(metaObject, countEntities = 0) {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const children = metaObject.children;\n const objectId = metaObject.id;\n const entity = scene.objects[objectId];\n metaObject._countEntities = 0;\n if (entity) {\n metaObject._countEntities++;\n }\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n childMetaObject._countEntities = this._findEmptyNodes2(childMetaObject);\n metaObject._countEntities += childMetaObject._countEntities;\n }\n }\n return metaObject._countEntities;\n }\n\n _createStoreysNodes() {\n const rootMetaObjects = this._viewer.metaScene.rootMetaObjects;\n for (let id in rootMetaObjects) {\n this._createStoreysNodes2(rootMetaObjects[id], null, null, null);\n }\n }\n\n _createStoreysNodes2(metaObject, buildingNode, storeyNode, typeNodes) {\n if (this._pruneEmptyNodes && (metaObject._countEntities === 0)) {\n return;\n }\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name;\n const children = metaObject.children;\n const objectId = metaObject.id;\n if (metaObjectType === \"IfcBuilding\") {\n buildingNode = {\n nodeId: `${this._id}-${objectId}`,\n objectId: objectId,\n title: (metaObject.metaModels.length === 0) ? \"na\" : this._rootNames[metaObject.metaModels[0].id] || ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType),\n type: metaObjectType,\n parent: null,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n xrayed: false,\n children: []\n };\n this._rootNodes.push(buildingNode);\n this._objectNodes[buildingNode.objectId] = buildingNode;\n this._nodeNodes[buildingNode.nodeId] = buildingNode;\n } else if (metaObjectType === \"IfcBuildingStorey\") {\n if (!buildingNode) {\n this.error(\"Failed to build storeys hierarchy for model '\" + this.metaModel.id + \"' - model does not have an IfcBuilding object, or is not an IFC model\");\n return;\n }\n storeyNode = {\n nodeId: `${this._id}-${objectId}`,\n objectId: objectId,\n title: (metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType,\n type: metaObjectType,\n parent: buildingNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n xrayed: false,\n children: []\n };\n buildingNode.children.push(storeyNode);\n this._objectNodes[storeyNode.objectId] = storeyNode;\n this._nodeNodes[storeyNode.nodeId] = storeyNode;\n typeNodes = {};\n } else {\n if (storeyNode) {\n const objects = this._viewer.scene.objects;\n const object = objects[objectId];\n if (object) {\n typeNodes = typeNodes || {};\n let typeNode = typeNodes[metaObjectType];\n if (!typeNode) {\n typeNode = {\n nodeId: `${this._id}-${storeyNode.objectId}-${metaObjectType}`,\n objectId: `${storeyNode.objectId}-${metaObjectType}`,\n title: metaObjectType,\n type: metaObjectType,\n parent: storeyNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n xrayed: false,\n children: []\n };\n storeyNode.children.push(typeNode);\n this._objectNodes[typeNode.objectId] = typeNode;\n this._nodeNodes[typeNode.nodeId] = typeNode;\n typeNodes[metaObjectType] = typeNode;\n }\n const node = {\n nodeId: `${this._id}-${objectId}`,\n objectId: objectId,\n title: (metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType,\n type: metaObjectType,\n parent: typeNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n xrayed: false,\n children: []\n };\n typeNode.children.push(node);\n this._objectNodes[node.objectId] = node;\n this._nodeNodes[node.nodeId] = node;\n }\n }\n }\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n this._createStoreysNodes2(childMetaObject, buildingNode, storeyNode, typeNodes);\n }\n }\n }\n\n _createTypesNodes() {\n const rootMetaObjects = this._viewer.metaScene.rootMetaObjects;\n for (let id in rootMetaObjects) {\n this._createTypesNodes2(rootMetaObjects[id], null, null);\n }\n }\n\n _createTypesNodes2(metaObject, rootNode, typeNodes) {\n if (this._pruneEmptyNodes && (metaObject._countEntities === 0)) {\n return;\n }\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name;\n const children = metaObject.children;\n const objectId = metaObject.id;\n if (!metaObject.parent) {\n rootNode = {\n nodeId: `${this._id}-${objectId}`,\n objectId: objectId,\n title: metaObject.metaModels.length === 0 ? \"na\" : this._rootNames[metaObject.metaModels[0].id] || ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType),\n type: metaObjectType,\n parent: null,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n xrayed: false,\n children: []\n };\n this._rootNodes.push(rootNode);\n this._objectNodes[rootNode.objectId] = rootNode;\n this._nodeNodes[rootNode.nodeId] = rootNode;\n typeNodes = {};\n } else {\n if (rootNode) {\n const objects = this._viewer.scene.objects;\n const object = objects[objectId];\n if (object) {\n let typeNode = typeNodes[metaObjectType];\n if (!typeNode) {\n typeNode = {\n nodeId: `${this._id}-${rootNode.objectId}-${metaObjectType}`,\n objectId: `${rootNode.objectId}-${metaObjectType}`,\n title: metaObjectType,\n type: metaObjectType,\n parent: rootNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n xrayed: false,\n children: []\n };\n rootNode.children.push(typeNode);\n this._objectNodes[typeNode.objectId] = typeNode;\n this._nodeNodes[typeNode.nodeId] = typeNode;\n typeNodes[metaObjectType] = typeNode;\n }\n const node = {\n nodeId: `${this._id}-${objectId}`,\n objectId: objectId,\n title: (metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType,\n type: metaObjectType,\n parent: typeNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n xrayed: false,\n children: []\n };\n typeNode.children.push(node);\n this._objectNodes[node.objectId] = node;\n this._nodeNodes[node.nodeId] = node;\n }\n }\n }\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n this._createTypesNodes2(childMetaObject, rootNode, typeNodes);\n }\n }\n }\n\n _createContainmentNodes() {\n const rootMetaObjects = this._viewer.metaScene.rootMetaObjects;\n for (let id in rootMetaObjects) {\n this._createContainmentNodes2(rootMetaObjects[id], null);\n }\n }\n\n _createContainmentNodes2(metaObject, parent) {\n if (this._pruneEmptyNodes && (metaObject._countEntities === 0)) {\n return;\n }\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name || metaObjectType;\n const children = metaObject.children;\n const objectId = metaObject.id;\n const node = {\n nodeId: `${this._id}-${objectId}`,\n objectId: objectId,\n title: (!parent) ? metaObject.metaModels.length === 0 ? \"na\" : (this._rootNames[metaObject.metaModels[0].id] || metaObjectName) : (metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType,\n type: metaObjectType,\n parent: parent,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n xrayed: false,\n children: []\n };\n if (parent) {\n parent.children.push(node);\n } else {\n this._rootNodes.push(node);\n }\n this._objectNodes[node.objectId] = node;\n this._nodeNodes[node.nodeId] = node;\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n this._createContainmentNodes2(childMetaObject, node);\n }\n }\n }\n\n _doSortNodes() {\n for (let i = 0, len = this._rootNodes.length; i < len; i++) {\n const rootNode = this._rootNodes[i];\n this._sortChildren(rootNode);\n }\n }\n\n _sortChildren(node) {\n const children = node.children;\n if (!children || children.length === 0) {\n return;\n }\n if (this._hierarchy === \"storeys\" && node.type === \"IfcBuilding\") {\n // Assumes that children of an IfcBuilding will always be IfcBuildingStoreys\n children.sort(this._getSpatialSortFunc());\n } else {\n children.sort(this._alphaSortFunc);\n }\n for (let i = 0, len = children.length; i < len; i++) {\n const node = children[i];\n this._sortChildren(node);\n }\n }\n\n _getSpatialSortFunc() { // Creates cached sort func with Viewer in scope\n const viewer = this.viewer;\n const scene = viewer.scene;\n const camera = scene.camera;\n const metaScene = viewer.metaScene;\n return this._spatialSortFunc || (this._spatialSortFunc = (node1, node2) => {\n if (!node1.aabb || !node2.aabb) {\n // Sorting on lowest point of the AABB is likely more more robust when objects could overlap storeys\n if (!node1.aabb) {\n node1.aabb = scene.getAABB(metaScene.getObjectIDsInSubtree(node1.objectId));\n }\n if (!node2.aabb) {\n node2.aabb = scene.getAABB(metaScene.getObjectIDsInSubtree(node2.objectId));\n }\n }\n let idx = 0;\n if (camera.xUp) {\n idx = 0;\n } else if (camera.yUp) {\n idx = 1;\n } else {\n idx = 2;\n }\n if (node1.aabb[idx] > node2.aabb[idx]) {\n return -1;\n }\n if (node1.aabb[idx] < node2.aabb[idx]) {\n return 1;\n }\n return 0;\n });\n }\n\n _alphaSortFunc(node1, node2) {\n const title1 = node1.title.toUpperCase(); // FIXME: Should be case sensitive?\n const title2 = node2.title.toUpperCase();\n if (title1 < title2) {\n return -1;\n }\n if (title1 > title2) {\n return 1;\n }\n return 0;\n }\n\n _synchNodesToEntities() {\n const objectIds = Object.keys(this.viewer.metaScene.metaObjects);\n const metaObjects = this._viewer.metaScene.metaObjects;\n const objects = this._viewer.scene.objects;\n for (let i = 0, len = objectIds.length; i < len; i++) {\n const objectId = objectIds[i];\n const metaObject = metaObjects[objectId];\n if (metaObject) {\n const node = this._objectNodes[objectId];\n if (node) {\n const entity = objects[objectId];\n if (entity) {\n const visible = entity.visible;\n node.numEntities = 1;\n node.xrayed = entity.xrayed;\n if (visible) {\n node.numVisibleEntities = 1;\n node.checked = true;\n } else {\n node.numVisibleEntities = 0;\n node.checked = false;\n }\n let parent = node.parent; // Synch parents\n while (parent) {\n parent.numEntities++;\n if (visible) {\n parent.numVisibleEntities++;\n parent.checked = true;\n }\n parent = parent.parent;\n }\n }\n }\n }\n }\n }\n\n _withNodeTree(node, callback) {\n callback(node);\n const children = node.children;\n if (!children) {\n return;\n }\n for (let i = 0, len = children.length; i < len; i++) {\n this._withNodeTree(children[i], callback);\n }\n }\n\n _createTrees() {\n if (this._rootNodes.length === 0) {\n return;\n }\n const rootNodeElements = this._rootNodes.map((rootNode) => {\n return this._createNodeElement(rootNode);\n });\n\n const rootNode = this._renderService.createRootNode();\n rootNodeElements.forEach((nodeElement) => {\n rootNode.appendChild(nodeElement);\n });\n\n this._containerElement.appendChild(rootNode);\n this._rootElement = rootNode;\n }\n\n _createNodeElement(node) {\n const contextmenuHandler = (event) =>{\n this.fire(\"contextmenu\", {\n event: event,\n viewer: this._viewer,\n treeViewPlugin: this,\n treeViewNode: node\n });\n event.preventDefault();\n };\n const onclickHandler = (event) => {\n this.fire(\"nodeTitleClicked\", {\n event: event,\n viewer: this._viewer,\n treeViewPlugin: this,\n treeViewNode: node\n });\n event.preventDefault();\n };\n\n return this._renderService.createNodeElement(node, this._switchExpandHandler, this._checkboxChangeHandler, contextmenuHandler, onclickHandler);\n }\n\n _expandSwitchElement(switchElement) {\n const expanded = this._renderService.isExpanded(switchElement); \n if (expanded) {\n return;\n }\n\n const nodeId = this._renderService.getId(switchElement);\n\n const nodeElements = this._nodeNodes[nodeId].children.map((node) => {\n return this._createNodeElement(node);\n });\n\n this._renderService.addChildren(switchElement, nodeElements)\n\n this._renderService.expand(switchElement, this._switchExpandHandler, this._switchCollapseHandler);\n }\n\n _collapseNode(nodeId) {\n const switchElement = this._renderService.getSwitchElement(nodeId);\n this._collapseSwitchElement(switchElement);\n }\n\n _collapseSwitchElement(switchElement) {\n this._renderService.collapse(switchElement, this._switchExpandHandler, this._switchCollapseHandler);\n }\n}\n\n", @@ -29250,7 +29778,7 @@ "lineNumber": 1 }, { - "__docId__": 1572, + "__docId__": 1590, "kind": "variable", "name": "treeViews", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js", @@ -29271,7 +29799,7 @@ "ignore": true }, { - "__docId__": 1573, + "__docId__": 1591, "kind": "class", "name": "TreeViewPlugin", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js", @@ -29295,7 +29823,7 @@ ] }, { - "__docId__": 1574, + "__docId__": 1592, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29424,7 +29952,7 @@ ] }, { - "__docId__": 1575, + "__docId__": 1593, "kind": "member", "name": "errors", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29443,7 +29971,7 @@ } }, { - "__docId__": 1576, + "__docId__": 1594, "kind": "member", "name": "valid", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29462,7 +29990,7 @@ } }, { - "__docId__": 1577, + "__docId__": 1595, "kind": "member", "name": "_index", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29480,7 +30008,7 @@ } }, { - "__docId__": 1578, + "__docId__": 1596, "kind": "member", "name": "_id", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29498,7 +30026,7 @@ } }, { - "__docId__": 1579, + "__docId__": 1597, "kind": "member", "name": "_containerElement", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29516,7 +30044,7 @@ } }, { - "__docId__": 1580, + "__docId__": 1598, "kind": "member", "name": "_metaModels", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29534,7 +30062,7 @@ } }, { - "__docId__": 1581, + "__docId__": 1599, "kind": "member", "name": "_autoAddModels", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29552,7 +30080,7 @@ } }, { - "__docId__": 1582, + "__docId__": 1600, "kind": "member", "name": "_autoExpandDepth", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29570,7 +30098,7 @@ } }, { - "__docId__": 1583, + "__docId__": 1601, "kind": "member", "name": "_sortNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29588,7 +30116,7 @@ } }, { - "__docId__": 1584, + "__docId__": 1602, "kind": "member", "name": "_viewer", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29606,7 +30134,7 @@ } }, { - "__docId__": 1585, + "__docId__": 1603, "kind": "member", "name": "_rootElement", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29624,7 +30152,7 @@ } }, { - "__docId__": 1586, + "__docId__": 1604, "kind": "member", "name": "_muteSceneEvents", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29642,7 +30170,7 @@ } }, { - "__docId__": 1587, + "__docId__": 1605, "kind": "member", "name": "_muteTreeEvents", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29660,7 +30188,7 @@ } }, { - "__docId__": 1588, + "__docId__": 1606, "kind": "member", "name": "_rootNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29678,7 +30206,7 @@ } }, { - "__docId__": 1589, + "__docId__": 1607, "kind": "member", "name": "_objectNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29696,7 +30224,7 @@ } }, { - "__docId__": 1590, + "__docId__": 1608, "kind": "member", "name": "_nodeNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29714,7 +30242,7 @@ } }, { - "__docId__": 1591, + "__docId__": 1609, "kind": "member", "name": "_rootNames", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29732,7 +30260,7 @@ } }, { - "__docId__": 1593, + "__docId__": 1611, "kind": "member", "name": "_pruneEmptyNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29750,7 +30278,7 @@ } }, { - "__docId__": 1594, + "__docId__": 1612, "kind": "member", "name": "_showListItemElementId", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29768,7 +30296,7 @@ } }, { - "__docId__": 1595, + "__docId__": 1613, "kind": "member", "name": "_renderService", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29786,7 +30314,7 @@ } }, { - "__docId__": 1596, + "__docId__": 1614, "kind": "member", "name": "_onObjectVisibility", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29804,7 +30332,7 @@ } }, { - "__docId__": 1599, + "__docId__": 1617, "kind": "member", "name": "_onObjectXrayed", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29822,7 +30350,7 @@ } }, { - "__docId__": 1602, + "__docId__": 1620, "kind": "member", "name": "_switchExpandHandler", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29840,7 +30368,7 @@ } }, { - "__docId__": 1603, + "__docId__": 1621, "kind": "member", "name": "_switchCollapseHandler", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29858,7 +30386,7 @@ } }, { - "__docId__": 1604, + "__docId__": 1622, "kind": "member", "name": "_checkboxChangeHandler", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29876,7 +30404,7 @@ } }, { - "__docId__": 1607, + "__docId__": 1625, "kind": "member", "name": "_hierarchy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29894,7 +30422,7 @@ } }, { - "__docId__": 1610, + "__docId__": 1628, "kind": "set", "name": "hierarchy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29915,7 +30443,7 @@ } }, { - "__docId__": 1612, + "__docId__": 1630, "kind": "get", "name": "hierarchy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29936,7 +30464,7 @@ } }, { - "__docId__": 1613, + "__docId__": 1631, "kind": "method", "name": "addModel", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -29982,7 +30510,7 @@ "return": null }, { - "__docId__": 1614, + "__docId__": 1632, "kind": "method", "name": "removeModel", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30008,7 +30536,7 @@ "return": null }, { - "__docId__": 1615, + "__docId__": 1633, "kind": "method", "name": "showNode", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30038,7 +30566,7 @@ } }, { - "__docId__": 1617, + "__docId__": 1635, "kind": "method", "name": "unShowNode", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30053,7 +30581,7 @@ "return": null }, { - "__docId__": 1619, + "__docId__": 1637, "kind": "method", "name": "expandToDepth", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30079,7 +30607,7 @@ "return": null }, { - "__docId__": 1620, + "__docId__": 1638, "kind": "method", "name": "collapse", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30094,7 +30622,7 @@ "return": null }, { - "__docId__": 1621, + "__docId__": 1639, "kind": "method", "name": "withNodeTree", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30130,7 +30658,7 @@ "return": null }, { - "__docId__": 1622, + "__docId__": 1640, "kind": "method", "name": "destroy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30145,7 +30673,7 @@ "return": null }, { - "__docId__": 1624, + "__docId__": 1642, "kind": "member", "name": "_destroyed", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30163,7 +30691,7 @@ } }, { - "__docId__": 1625, + "__docId__": 1643, "kind": "method", "name": "_createNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30180,7 +30708,7 @@ "return": null }, { - "__docId__": 1630, + "__docId__": 1648, "kind": "method", "name": "_validate", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30201,7 +30729,7 @@ } }, { - "__docId__": 1635, + "__docId__": 1653, "kind": "method", "name": "_validateMetaModelForStoreysHierarchy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30244,7 +30772,7 @@ } }, { - "__docId__": 1636, + "__docId__": 1654, "kind": "method", "name": "_createEnabledNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30261,7 +30789,7 @@ "return": null }, { - "__docId__": 1637, + "__docId__": 1655, "kind": "method", "name": "_createDisabledNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30278,7 +30806,7 @@ "return": null }, { - "__docId__": 1639, + "__docId__": 1657, "kind": "method", "name": "_findEmptyNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30295,7 +30823,7 @@ "return": null }, { - "__docId__": 1640, + "__docId__": 1658, "kind": "method", "name": "_findEmptyNodes2", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30332,7 +30860,7 @@ } }, { - "__docId__": 1641, + "__docId__": 1659, "kind": "method", "name": "_createStoreysNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30349,7 +30877,7 @@ "return": null }, { - "__docId__": 1642, + "__docId__": 1660, "kind": "method", "name": "_createStoreysNodes2", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30391,7 +30919,7 @@ "return": null }, { - "__docId__": 1643, + "__docId__": 1661, "kind": "method", "name": "_createTypesNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30408,7 +30936,7 @@ "return": null }, { - "__docId__": 1644, + "__docId__": 1662, "kind": "method", "name": "_createTypesNodes2", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30444,7 +30972,7 @@ "return": null }, { - "__docId__": 1645, + "__docId__": 1663, "kind": "method", "name": "_createContainmentNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30461,7 +30989,7 @@ "return": null }, { - "__docId__": 1646, + "__docId__": 1664, "kind": "method", "name": "_createContainmentNodes2", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30491,7 +31019,7 @@ "return": null }, { - "__docId__": 1647, + "__docId__": 1665, "kind": "method", "name": "_doSortNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30508,7 +31036,7 @@ "return": null }, { - "__docId__": 1648, + "__docId__": 1666, "kind": "method", "name": "_sortChildren", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30532,7 +31060,7 @@ "return": null }, { - "__docId__": 1649, + "__docId__": 1667, "kind": "method", "name": "_getSpatialSortFunc", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30553,7 +31081,7 @@ } }, { - "__docId__": 1650, + "__docId__": 1668, "kind": "method", "name": "_alphaSortFunc", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30587,7 +31115,7 @@ } }, { - "__docId__": 1651, + "__docId__": 1669, "kind": "method", "name": "_synchNodesToEntities", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30604,7 +31132,7 @@ "return": null }, { - "__docId__": 1652, + "__docId__": 1670, "kind": "method", "name": "_withNodeTree", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30634,7 +31162,7 @@ "return": null }, { - "__docId__": 1653, + "__docId__": 1671, "kind": "method", "name": "_createTrees", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30651,7 +31179,7 @@ "return": null }, { - "__docId__": 1655, + "__docId__": 1673, "kind": "method", "name": "_createNodeElement", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30679,7 +31207,7 @@ } }, { - "__docId__": 1656, + "__docId__": 1674, "kind": "method", "name": "_expandSwitchElement", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30703,7 +31231,7 @@ "return": null }, { - "__docId__": 1657, + "__docId__": 1675, "kind": "method", "name": "_collapseNode", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30727,7 +31255,7 @@ "return": null }, { - "__docId__": 1658, + "__docId__": 1676, "kind": "method", "name": "_collapseSwitchElement", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -30751,7 +31279,7 @@ "return": null }, { - "__docId__": 1659, + "__docId__": 1677, "kind": "file", "name": "src/plugins/TreeViewPlugin/index.js", "content": "export * from \"./TreeViewPlugin.js\";", @@ -30762,7 +31290,7 @@ "lineNumber": 1 }, { - "__docId__": 1660, + "__docId__": 1678, "kind": "file", "name": "src/plugins/ViewCullPlugin/ViewCullPlugin.js", "content": "import {Plugin} from \"../../viewer/Plugin.js\";\nimport {math} from \"../../viewer/scene/math/math.js\";\nimport {Frustum, frustumIntersectsAABB3, setFrustum} from \"../../viewer/scene/math/Frustum.js\";\nimport {getObjectCullStates} from \"../lib/culling/ObjectCullStates.js\";\n\nconst MAX_KD_TREE_DEPTH = 8; // Increase if greater precision needed\n\nconst kdTreeDimLength = new Float32Array(3);\n\n/**\n * {@link Viewer} plugin that performs view frustum culling to accelerate rendering performance.\n *\n * For each {@link Entity} that represents an object, ````ViewCullPlugin```` will automatically\n * set {@link Entity#culled}````false```` whenever it falls outside our field of view.\n *\n * When culled, an ````Entity```` is not processed by xeokit's renderer.\n *\n * Internally, ````ViewCullPlugin```` organizes {@link Entity}s in\n * a [bounding volume hierarchy](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy), implemented as\n * a [kd-tree](https://en.wikipedia.org/wiki/K-d_tree).\n *\n * On each {@link Scene} \"tick\" event, ````ViewCullPlugin```` searches the kd-tree using a frustum generated from\n * the {@link Camera}, marking each ````Entity```` **culled** if it falls outside the frustum.\n *\n * Use ````ViewCullPlugin```` by simply adding it to your ````Viewer````:\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * const viewCullPlugin = new ViewCullPlugin(viewer, {\n * maxTreeDepth: 20\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/OTCConferenceCenter.xkt\"\n * });\n * ````\n */\nclass ViewCullPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"ViewCull\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Number} [cfg.maxTreeDepth=8] Maximum depth of the kd-tree.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"ViewCull\", viewer);\n\n this._objectCullStates = getObjectCullStates(viewer.scene); // Combines updates from multiple culling systems for its Scene's Entities\n\n this._maxTreeDepth = cfg.maxTreeDepth || MAX_KD_TREE_DEPTH;\n this._modelInfos = {};\n this._frustum = new Frustum();\n this._kdRoot = null;\n\n this._frustumDirty = false;\n this._kdTreeDirty = false;\n\n this._onViewMatrix = viewer.scene.camera.on(\"viewMatrix\", () => {\n this._frustumDirty = true;\n });\n\n this._onProjMatrix = viewer.scene.camera.on(\"projMatMatrix\", () => {\n this._frustumDirty = true;\n });\n\n this._onModelLoaded = viewer.scene.on(\"modelLoaded\", (modelId) => {\n const model = this.viewer.scene.models[modelId];\n if (model) {\n this._addModel(model);\n }\n });\n\n this._onSceneTick = viewer.scene.on(\"tick\", () => {\n this._doCull();\n });\n }\n\n /**\n * Sets whether view culling is enabled.\n *\n * @param {Boolean} enabled Whether to enable view culling.\n */\n set enabled(enabled) {\n this._enabled = enabled;\n }\n\n /**\n * Gets whether view culling is enabled.\n *\n * @retutns {Boolean} Whether view culling is enabled.\n */\n get enabled() {\n return this._enabled;\n }\n\n _addModel(model) {\n const modelInfo = {\n model: model,\n onDestroyed: model.on(\"destroyed\", () => {\n this._removeModel(model);\n })\n };\n this._modelInfos[model.id] = modelInfo;\n this._kdTreeDirty = true;\n }\n\n _removeModel(model) {\n const modelInfo = this._modelInfos[model.id];\n if (modelInfo) {\n modelInfo.model.off(modelInfo.onDestroyed);\n delete this._modelInfos[model.id];\n this._kdTreeDirty = true;\n }\n }\n\n _doCull() {\n const cullDirty = (this._frustumDirty || this._kdTreeDirty);\n if (this._frustumDirty) {\n this._buildFrustum();\n }\n if (this._kdTreeDirty) {\n this._buildKDTree();\n }\n if (cullDirty) {\n const kdNode = this._kdRoot;\n if (kdNode) {\n this._visitKDNode(kdNode);\n }\n }\n }\n\n _buildFrustum() {\n const camera = this.viewer.scene.camera;\n setFrustum(this._frustum, camera.viewMatrix, camera.projMatrix);\n this._frustumDirty = false;\n }\n\n _buildKDTree() {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const depth = 0;\n if (this._kdRoot) {\n // TODO: uncull all objects with respect to this frustum culling plugin?\n\n }\n this._kdRoot = {\n aabb: scene.getAABB(),\n intersection: Frustum.INTERSECT\n };\n for (let objectIdx = 0, len = this._objectCullStates.numObjects; objectIdx < len; objectIdx++) {\n const entity = this._objectCullStates.objects[objectIdx];\n this._insertEntityIntoKDTree(this._kdRoot, entity, objectIdx, depth + 1);\n }\n this._kdTreeDirty = false;\n }\n\n _insertEntityIntoKDTree(kdNode, entity, objectIdx, depth) {\n\n const entityAABB = entity.aabb;\n\n if (depth >= this._maxTreeDepth) {\n kdNode.objects = kdNode.objects || [];\n kdNode.objects.push(objectIdx);\n math.expandAABB3(kdNode.aabb, entityAABB);\n return;\n }\n\n if (kdNode.left) {\n if (math.containsAABB3(kdNode.left.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity, objectIdx, depth + 1);\n return;\n }\n }\n\n if (kdNode.right) {\n if (math.containsAABB3(kdNode.right.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity, objectIdx, depth + 1);\n return;\n }\n }\n\n const nodeAABB = kdNode.aabb;\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 = {\n aabb: aabbLeft,\n intersection: Frustum.INTERSECT\n };\n if (math.containsAABB3(aabbLeft, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity, objectIdx, depth + 1);\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 = {\n aabb: aabbRight,\n intersection: Frustum.INTERSECT\n };\n if (math.containsAABB3(aabbRight, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity, objectIdx, depth + 1);\n return;\n }\n }\n\n kdNode.objects = kdNode.objects || [];\n kdNode.objects.push(objectIdx);\n\n math.expandAABB3(kdNode.aabb, entityAABB);\n }\n\n _visitKDNode(kdNode, intersects = Frustum.INTERSECT) {\n if (intersects !== Frustum.INTERSECT && kdNode.intersects === intersects) {\n return;\n }\n if (intersects === Frustum.INTERSECT) {\n intersects = frustumIntersectsAABB3(this._frustum, kdNode.aabb);\n kdNode.intersects = intersects;\n }\n const culled = (intersects === Frustum.OUTSIDE);\n const objects = kdNode.objects;\n if (objects && objects.length > 0) {\n for (let i = 0, len = objects.length; i < len; i++) {\n const objectIdx = objects[i];\n this._objectCullStates.setObjectViewCulled(objectIdx, culled);\n }\n }\n if (kdNode.left) {\n this._visitKDNode(kdNode.left, intersects);\n }\n if (kdNode.right) {\n this._visitKDNode(kdNode.right, intersects);\n }\n }\n\n /**\n * @private\n */\n send(name, value) {\n }\n\n /**\n * Destroys this ViewCullPlugin.\n */\n destroy() {\n super.destroy();\n this._clear();\n const scene = this.viewer.scene;\n const camera = scene.camera;\n scene.off(this._onModelLoaded);\n scene.off(this._onSceneTick);\n camera.off(this._onViewMatrix);\n camera.off(this._onProjMatrix);\n }\n\n _clear() {\n for (let modelId in this._modelInfos) {\n const modelInfo = this._modelInfos[modelId];\n modelInfo.model.off(modelInfo.onDestroyed);\n }\n this._modelInfos = {};\n this._kdRoot = null;\n this._kdTreeDirty = true;\n }\n}\n\nexport {ViewCullPlugin}\n", @@ -30773,7 +31301,7 @@ "lineNumber": 1 }, { - "__docId__": 1661, + "__docId__": 1679, "kind": "variable", "name": "MAX_KD_TREE_DEPTH", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js", @@ -30794,7 +31322,7 @@ "ignore": true }, { - "__docId__": 1662, + "__docId__": 1680, "kind": "variable", "name": "kdTreeDimLength", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js", @@ -30815,7 +31343,7 @@ "ignore": true }, { - "__docId__": 1663, + "__docId__": 1681, "kind": "class", "name": "ViewCullPlugin", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js", @@ -30833,7 +31361,7 @@ ] }, { - "__docId__": 1664, + "__docId__": 1682, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -30898,7 +31426,7 @@ ] }, { - "__docId__": 1665, + "__docId__": 1683, "kind": "member", "name": "_objectCullStates", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -30916,7 +31444,7 @@ } }, { - "__docId__": 1666, + "__docId__": 1684, "kind": "member", "name": "_maxTreeDepth", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -30934,7 +31462,7 @@ } }, { - "__docId__": 1667, + "__docId__": 1685, "kind": "member", "name": "_modelInfos", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -30952,7 +31480,7 @@ } }, { - "__docId__": 1668, + "__docId__": 1686, "kind": "member", "name": "_frustum", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -30970,7 +31498,7 @@ } }, { - "__docId__": 1669, + "__docId__": 1687, "kind": "member", "name": "_kdRoot", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -30988,7 +31516,7 @@ } }, { - "__docId__": 1670, + "__docId__": 1688, "kind": "member", "name": "_frustumDirty", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31006,7 +31534,7 @@ } }, { - "__docId__": 1671, + "__docId__": 1689, "kind": "member", "name": "_kdTreeDirty", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31024,7 +31552,7 @@ } }, { - "__docId__": 1672, + "__docId__": 1690, "kind": "member", "name": "_onViewMatrix", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31042,7 +31570,7 @@ } }, { - "__docId__": 1674, + "__docId__": 1692, "kind": "member", "name": "_onProjMatrix", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31060,7 +31588,7 @@ } }, { - "__docId__": 1676, + "__docId__": 1694, "kind": "member", "name": "_onModelLoaded", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31078,7 +31606,7 @@ } }, { - "__docId__": 1677, + "__docId__": 1695, "kind": "member", "name": "_onSceneTick", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31096,7 +31624,7 @@ } }, { - "__docId__": 1678, + "__docId__": 1696, "kind": "set", "name": "enabled", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31121,7 +31649,7 @@ ] }, { - "__docId__": 1679, + "__docId__": 1697, "kind": "member", "name": "_enabled", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31139,7 +31667,7 @@ } }, { - "__docId__": 1680, + "__docId__": 1698, "kind": "get", "name": "enabled", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31163,7 +31691,7 @@ } }, { - "__docId__": 1681, + "__docId__": 1699, "kind": "method", "name": "_addModel", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31187,7 +31715,7 @@ "return": null }, { - "__docId__": 1683, + "__docId__": 1701, "kind": "method", "name": "_removeModel", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31211,7 +31739,7 @@ "return": null }, { - "__docId__": 1685, + "__docId__": 1703, "kind": "method", "name": "_doCull", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31228,7 +31756,7 @@ "return": null }, { - "__docId__": 1686, + "__docId__": 1704, "kind": "method", "name": "_buildFrustum", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31245,7 +31773,7 @@ "return": null }, { - "__docId__": 1688, + "__docId__": 1706, "kind": "method", "name": "_buildKDTree", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31262,7 +31790,7 @@ "return": null }, { - "__docId__": 1691, + "__docId__": 1709, "kind": "method", "name": "_insertEntityIntoKDTree", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31304,7 +31832,7 @@ "return": null }, { - "__docId__": 1692, + "__docId__": 1710, "kind": "method", "name": "_visitKDNode", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31335,7 +31863,7 @@ "return": null }, { - "__docId__": 1693, + "__docId__": 1711, "kind": "method", "name": "send", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31364,7 +31892,7 @@ "return": null }, { - "__docId__": 1694, + "__docId__": 1712, "kind": "method", "name": "destroy", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31379,7 +31907,7 @@ "return": null }, { - "__docId__": 1695, + "__docId__": 1713, "kind": "method", "name": "_clear", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -31396,7 +31924,7 @@ "return": null }, { - "__docId__": 1699, + "__docId__": 1717, "kind": "file", "name": "src/plugins/ViewCullPlugin/index.js", "content": "export * from \"./ViewCullPlugin.js\";", @@ -31407,7 +31935,7 @@ "lineNumber": 1 }, { - "__docId__": 1700, + "__docId__": 1718, "kind": "file", "name": "src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js", "content": "/**\n * Default data access strategy for {@link WebIFCLoaderPlugin}.\n */\nclass WebIFCDefaultDataSource {\n\n constructor() {\n }\n\n /**\n * Gets the contents of the given IFC file in an arraybuffer.\n *\n * @param {String|Number} src Path or ID of an IFC file.\n * @param {Function} ok Callback fired on success, argument is the IFC file in an arraybuffer.\n * @param {Function} error Callback fired on error.\n */\n getIFC(src, ok, error) {\n var defaultCallback = () => {\n };\n ok = ok || defaultCallback;\n error = error || defaultCallback;\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n const dataUriRegexResult = src.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = window.decodeURIComponent(data);\n if (isBase64) {\n data = window.atob(data);\n }\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n ok(buffer);\n } catch (errMsg) {\n error(errMsg);\n }\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', src, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n error('getXKT error : ' + request.response);\n }\n }\n };\n request.send(null);\n }\n }\n}\n\nexport {WebIFCDefaultDataSource};", @@ -31418,7 +31946,7 @@ "lineNumber": 1 }, { - "__docId__": 1701, + "__docId__": 1719, "kind": "class", "name": "WebIFCDefaultDataSource", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js", @@ -31433,7 +31961,7 @@ "interface": false }, { - "__docId__": 1702, + "__docId__": 1720, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js~WebIFCDefaultDataSource", @@ -31447,7 +31975,7 @@ "undocument": true }, { - "__docId__": 1703, + "__docId__": 1721, "kind": "method", "name": "getIFC", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js~WebIFCDefaultDataSource", @@ -31494,7 +32022,7 @@ "return": null }, { - "__docId__": 1704, + "__docId__": 1722, "kind": "file", "name": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js", "content": "import {utils} from \"../../viewer/scene/utils.js\"\nimport {SceneModel} from \"../../viewer/scene/model/index.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {WebIFCDefaultDataSource} from \"./WebIFCDefaultDataSource.js\";\nimport {IFCObjectDefaults} from \"../../viewer/metadata/IFCObjectDefaults.js\";\nimport {math} from \"../../viewer/index.js\";\nimport {worldToRTCPositions} from \"../../viewer/scene/math/rtcCoords.js\";\n\n/**\n * {@link Viewer} plugin that uses [web-ifc](https://github.com/tomvandig/web-ifc) to load BIM models directly from IFC files.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_WebIFCLoaderPlugin_Duplex)]\n *\n * ## Overview\n *\n * * Loads small-to-medium sized BIM models directly from IFC files.\n * * Uses [web-ifc](https://github.com/tomvandig/web-ifc) to parse IFC files in the browser.\n * * Loads IFC geometry, element structure metadata, and property sets.\n * * Not for large models. For best performance with large models, we recommend using {@link XKTLoaderPlugin}.\n * * Loads double-precision coordinates, enabling models to be viewed at global coordinates without accuracy loss.\n * * Allows to set the position, scale and rotation of each model as you load it.\n * * Filter which IFC types get loaded.\n * * Configure initial appearances of specified IFC types.\n * * Set a custom data source for IFC files.\n * * Load multiple copies of the same model.\n *\n * ## Limitations\n *\n * Loading and parsing huge IFC STEP files can be slow, and can overwhelm the browser, however. To view your\n * largest IFC models, we recommend instead pre-converting those to xeokit's compressed native .XKT format, then\n * loading them with {@link XKTLoaderPlugin} instead.

    \n *\n * ## Scene representation\n *\n * When loading a model, WebIFCLoaderPlugin creates an {@link Entity} that represents the model, which\n * will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id}\n * in {@link Scene#models}. The WebIFCLoaderPlugin also creates an {@link Entity} for each object within the\n * model. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * ## Metadata\n *\n * When loading a model, WebIFCLoaderPlugin also creates a {@link MetaModel} that represents the model, which contains\n * a {@link MetaObject} for each IFC element, plus a {@link PropertySet} for each IFC property set. Loading metadata can be very slow, so we can also optionally disable it if we\n * don't need it.\n *\n * ## Usage\n *\n * In the example below we'll load the Duplex BIM model from\n * an [IFC file](https://github.com/xeokit/xeokit-sdk/tree/master/assets/models/ifc). Within our {@link Viewer}, this will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel}, {@link MetaObject}s and {@link PropertySet}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the WebIFCLoaderPlugin will set the initial appearance of each object\n * {@link Entity} according to its IFC type in {@link WebIFCLoaderPlugin#objectDefaults}.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_WebIFCLoaderPlugin_isolateStorey)]\n *\n * ````javascript\n * import {Viewer, WebIFCLoaderPlugin} from \"xeokit-sdk.es.js\";\n * import * as WebIFC from \"https://cdn.jsdelivr.net/npm/web-ifc@0.0.51/web-ifc-api.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a web-ifc API, which will parse IFC for our WebIFCLoaderPlugin\n * // 2. Connect the API to the web-ifc WASM module, which powers the parsing\n * // 3. Initialize the web-ifc API\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n *\n * const IfcAPI = new this._webIFC.IfcAPI();\n *\n * // 2\n *\n * IfcAPI.SetWasmPath(\"https://cdn.jsdelivr.net/npm/web-ifc@0.0.51/\");\n *\n * // 3\n *\n * IfcAPI.Init().then(() => {\n *\n * //------------------------------------------------------------------------------------------------------------\n * // 1. Create a WebIFCLoaderPlugin, configured with the web-ifc module and a web-ifc API instance\n * // 2. Load a BIM model fom an IFC file, excluding its IfcSpace elements, and highlighting edges\n * //------------------------------------------------------------------------------------------------------------\n *\n * const ifcLoader = new WebIFCLoaderPlugin(viewer, {\n * WebIFC,\n * IfcAPI\n * });\n *\n * // 2\n * const model = ifcLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"../assets/models/ifc/Duplex.ifc\",\n * excludeTypes: [\"IfcSpace\"],\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //----------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the bottom storey\n * // 2. X-ray all the objects except for the bottom storey\n * // 3. Fit the bottom storey in view\n * //----------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"1xS3BCk291UvhgP2dvNsgp\"]; // MetaObject with ID \"1xS3BCk291UvhgP2dvNsgp\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"1xS3BCk291UvhgP2dvNsgp\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsXRayed(viewer.scene.objectIds, true);\n * viewer.scene.setObjectsXRayed(objectIds, false);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * });\n * });\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each IFC model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * ifcLoader.load({\n * src: \"../assets/models/ifc/Duplex.ifc\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * origin: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types.\n *\n * In the example below, we'll load only the objects that represent walls.\n *\n * ````javascript\n * const model2 = ifcLoader.load({\n * id: \"myModel2\",\n * src: \"../assets/models/ifc/Duplex.ifc\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types.\n *\n * In the example below, we'll load only the objects that do not represent empty space.\n *\n * ````javascript\n * const model3 = ifcLoader.load({\n * id: \"myModel3\",\n * src: \"../assets/models/ifc/Duplex.ifc\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n *\n * ## Configuring initial IFC object appearances\n *\n * We can specify the custom initial appearance of loaded objects according to their IFC types.\n *\n * This is useful for things like:\n *\n * * setting the colors to our objects according to their IFC types,\n * * automatically hiding ````IfcSpace```` objects, and\n * * ensuring that ````IfcWindow```` objects are always transparent.\n *
    \n * In the example below, we'll load a model, while configuring ````IfcSpace```` elements to be always initially invisible,\n * and ````IfcWindow```` types to be always translucent blue.\n *\n * ````javascript\n * const myObjectDefaults = {\n *\n * IfcSpace: {\n * visible: false\n * },\n * IfcWindow: {\n * colorize: [0.337255, 0.303922, 0.870588], // Blue\n * opacity: 0.3\n * },\n *\n * //...\n *\n * DEFAULT: {\n * colorize: [0.5, 0.5, 0.5]\n * }\n * };\n *\n * const model4 = ifcLoader.load({\n * id: \"myModel4\",\n * src: \"../assets/models/ifc/Duplex.ifc\",\n * objectDefaults: myObjectDefaults // Use our custom initial default states for object Entities\n * });\n * ````\n *\n * When we don't customize the appearance of IFC types, as just above, then IfcSpace elements tend to obscure other\n * elements, which can be confusing.\n *\n * It's often helpful to make IfcSpaces transparent and unpickable, like this:\n *\n * ````javascript\n * const ifcLoader = new WebIFCLoaderPlugin(viewer, {\n * wasmPath: \"../dist/\",\n * objectDefaults: {\n * IfcSpace: {\n * pickable: false,\n * opacity: 0.2\n * }\n * }\n * });\n * ````\n *\n * Alternatively, we could just make IfcSpaces invisible, which also makes them unpickable:\n *\n * ````javascript\n * const ifcLoader = new WebIFCLoaderPlugin(viewer, {\n * wasmPath: \"../dist/\",\n * objectDefaults: {\n * IfcSpace: {\n * visible: false\n * }\n * }\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, WebIFCLoaderPlugin will load IFC files over HTTP.\n *\n * In the example below, we'll customize the way WebIFCLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets the contents of the given IFC file in an arraybuffer\n * getIFC(src, ok, error) {\n * console.log(\"MyDataSource#getIFC(\" + IFCSrc + \", ... )\");\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * function (errMsg) {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const ifcLoader2 = new WebIFCLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const model5 = ifcLoader2.load({\n * id: \"myModel5\",\n * src: \"../assets/models/ifc/Duplex.ifc\"\n * });\n * ````\n *\n * ## Loading multiple copies of a model, without object ID clashes\n *\n * Sometimes we need to load two or more instances of the same model, without having clashes\n * between the IDs of the equivalent objects in the model instances.\n *\n * As shown in the example below, we do this by setting {@link WebIFCLoaderPlugin#globalizeObjectIds} ````true```` before we load our models.\n *\n * ````javascript\n * ifcLoader.globalizeObjectIds = true;\n *\n * const model = ifcLoader.load({\n * id: \"model1\",\n * src: \"../assets/models/ifc/Duplex.ifc\"\n * });\n *\n * const model2 = ifcLoader.load({\n * id: \"model2\",\n * src: \"../assets/models/ifc/Duplex.ifc\"\n * });\n * ````\n *\n * For each {@link Entity} loaded by these two calls, {@link Entity#id} and {@link MetaObject#id} will get prefixed by\n * the ID of their model, in order to avoid ID clashes between the two models.\n *\n * An Entity belonging to the first model will get an ID like this:\n *\n * ````\n * myModel1#0BTBFw6f90Nfh9rP1dlXrb\n * ````\n *\n * The equivalent Entity in the second model will get an ID like this:\n *\n * ````\n * myModel2#0BTBFw6f90Nfh9rP1dlXrb\n * ````\n *\n * Now, to update the visibility of both of those Entities collectively, using {@link Scene#setObjectsVisible}, we can\n * supply just the IFC product ID part to that method:\n *\n * ````javascript\n * myViewer.scene.setObjectVisibilities(\"0BTBFw6f90Nfh9rP1dlXrb\", true);\n * ````\n *\n * The method, along with {@link Scene#setObjectsXRayed}, {@link Scene#setObjectsHighlighted} etc, will internally expand\n * the given ID to refer to the instances of that Entity in both models.\n *\n * We can also, of course, reference each Entity directly, using its globalized ID:\n *\n * ````javascript\n * myViewer.scene.setObjectVisibilities(\"myModel1#0BTBFw6f90Nfh9rP1dlXrb\", true);\n *````\n *\n * @class WebIFCLoaderPlugin\n * @since 2.0.13\n */\nclass WebIFCLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"ifcLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} cfg.WebIFC The web-ifc module, required by WebIFCLoaderPlugin. WebIFCLoaderPlugin uses various IFC type constants defined on this module.\n * @param {Object} cfg.IfcAPI A pre-initialized instance of the web-ifc API. WebIFCLoaderPlugin uses this to parse IFC. * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the WebIFCLoaderPlugin can load model and metadata files. Defaults to an instance of {@link WebIFCDefaultDataSource}, which loads over HTTP.\n * @param {String[]} [cfg.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [cfg.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [cfg.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"ifcLoader\", viewer, cfg);\n\n this.dataSource = cfg.dataSource;\n this.objectDefaults = cfg.objectDefaults;\n this.includeTypes = cfg.includeTypes;\n this.excludeTypes = cfg.excludeTypes;\n this.excludeUnclassifiedObjects = cfg.excludeUnclassifiedObjects;\n\n if (!cfg.WebIFC) {\n throw \"Parameter expected: WebIFC\";\n }\n \n if (!cfg.IfcAPI) {\n throw \"Parameter expected: IfcAPI\";\n }\n\n this._webIFC = cfg.WebIFC;\n \n this._ifcAPI = cfg.IfcAPI;\n }\n\n /**\n * Gets the ````IFC```` format versions supported by this WebIFCLoaderPlugin.\n * @returns {string[]}\n */\n get supportedVersions() {\n return [\"2x3\", \"4\"];\n }\n\n /**\n * Gets the custom data source through which the WebIFCLoaderPlugin can load IFC files.\n *\n * Default value is {@link WebIFCDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets a custom data source through which the WebIFCLoaderPlugin can load IFC files.\n *\n * Default value is {@link WebIFCDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new WebIFCDefaultDataSource();\n }\n\n /**\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n get objectDefaults() {\n return this._objectDefaults;\n }\n\n /**\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n set objectDefaults(value) {\n this._objectDefaults = value || IFCObjectDefaults;\n }\n\n /**\n * Gets the whitelist of the IFC types loaded by this WebIFCLoaderPlugin.\n *\n * When loading IFC models, causes this WebIFCLoaderPlugin to only load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n get includeTypes() {\n return this._includeTypes;\n }\n\n /**\n * Sets the whitelist of the IFC types loaded by this WebIFCLoaderPlugin.\n *\n * When loading IFC models, causes this WebIFCLoaderPlugin to only load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n set includeTypes(value) {\n this._includeTypes = value;\n }\n\n /**\n * Gets the blacklist of IFC types that are never loaded by this WebIFCLoaderPlugin.\n *\n * When loading IFC models, causes this WebIFCLoaderPlugin to **not** load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n get excludeTypes() {\n return this._excludeTypes;\n }\n\n /**\n * Sets the blacklist of IFC types that are never loaded by this WebIFCLoaderPlugin.\n *\n * When IFC models, causes this WebIFCLoaderPlugin to **not** load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n set excludeTypes(value) {\n this._excludeTypes = value;\n }\n\n /**\n * Gets whether we load objects that don't have IFC types.\n *\n * When loading IFC models and this is ````true````, WebIFCLoaderPlugin will not load objects\n * that don't have IFC types.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get excludeUnclassifiedObjects() {\n return this._excludeUnclassifiedObjects;\n }\n\n /**\n * Sets whether we load objects that don't have IFC types.\n *\n * When loading IFC models and this is ````true````, WebIFCLoaderPlugin will not load objects\n * that don't have IFC types.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set excludeUnclassifiedObjects(value) {\n this._excludeUnclassifiedObjects = !!value;\n }\n\n /**\n * Gets whether WebIFCLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get globalizeObjectIds() {\n return this._globalizeObjectIds;\n }\n\n /**\n * Sets whether WebIFCLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.\n *\n * Set this ````true```` when you need to load multiple instances of the same model, to avoid ID clashes\n * between the objects in the different instances.\n *\n * When we load a model with this set ````true````, then each {@link Entity#id} and {@link MetaObject#id} will be\n * prefixed by the ID of the model, ie. ````#````.\n *\n * {@link Entity#originalSystemId} and {@link MetaObject#originalSystemId} will always hold the original, un-prefixed, ID values.\n *\n * Default value is ````false````.\n *\n * See the main {@link WebIFCLoaderPlugin} class documentation for usage info.\n *\n * @type {Boolean}\n */\n set globalizeObjectIds(value) {\n this._globalizeObjectIds = !!value;\n }\n\n /**\n * Loads an ````IFC```` model into this WebIFCLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a IFC file, as an alternative to the ````ifc```` parameter.\n * @param {ArrayBuffer} [params.ifc] The IFC file data, as an alternative to the ````src```` parameter.\n * @param {Boolean} [params.loadMetadata=true] Whether to load IFC metadata (metaobjects and property sets).\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.edges=false] Indicates if the model's edges are initially emphasized.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=false] Indicates if physically-based rendering (PBR) will apply to the model. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Number} [params.backfaces=false] When we set this ````true````, then we force rendering of backfaces for the model. When we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [params.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.\n * @param {Boolean} [params.globalizeObjectIds=false] Indicates whether to globalize each {@link Entity#id} and {@link MetaObject#id}, in case you need to prevent ID clashes with other models. See {@link WebIFCLoaderPlugin#globalizeObjectIds} for more info.\n * @param {Object} [params.stats] Collects model statistics.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n if (!params.src && !params.ifc) {\n this.error(\"load() param expected: src or IFC\");\n return sceneModel; // Return new empty model\n }\n\n const options = {\n autoNormals: true\n };\n\n if (params.loadMetadata !== false) {\n\n const includeTypes = params.includeTypes || this._includeTypes;\n const excludeTypes = params.excludeTypes || this._excludeTypes;\n const objectDefaults = params.objectDefaults || this._objectDefaults;\n\n if (includeTypes) {\n options.includeTypesMap = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n options.includeTypesMap[includeTypes[i]] = true;\n }\n }\n\n if (excludeTypes) {\n options.excludeTypesMap = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n options.excludeTypesMap[excludeTypes[i]] = true;\n }\n }\n\n if (objectDefaults) {\n options.objectDefaults = objectDefaults;\n }\n\n options.excludeUnclassifiedObjects = (params.excludeUnclassifiedObjects !== undefined) ? (!!params.excludeUnclassifiedObjects) : this._excludeUnclassifiedObjects;\n options.globalizeObjectIds = (params.globalizeObjectIds !== undefined) ? (!!params.globalizeObjectIds) : this._globalizeObjectIds;\n }\n\n try {\n if (params.src) {\n this._loadModel(params.src, params, options, sceneModel);\n } else {\n this._parseModel(params.ifc, params, options, sceneModel);\n }\n } catch (e) {\n this.error(e);\n sceneModel.fire(\"error\", e);\n }\n\n return sceneModel;\n }\n\n _loadModel(src, params, options, sceneModel) {\n const spinner = this.viewer.scene.canvas.spinner;\n spinner.processes++;\n this._dataSource.getIFC(params.src, (arrayBuffer) => {\n this._parseModel(arrayBuffer, params, options, sceneModel);\n spinner.processes--;\n },\n (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n sceneModel.fire(\"error\", errMsg);\n });\n }\n\n _parseModel(arrayBuffer, params, options, sceneModel) {\n if (sceneModel.destroyed) {\n return;\n }\n const stats = params.stats || {};\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 if (!this._ifcAPI) {\n throw \"WebIFCLoaderPlugin has no WebIFC instance configured - please inject via WebIFCLoaderPlugin constructor\";\n }\n\n const dataArray = new Uint8Array(arrayBuffer);\n const modelID = this._ifcAPI.OpenModel(dataArray);\n const modelSchema = this._ifcAPI.GetModelSchema(modelID);\n\n const lines = this._ifcAPI.GetLineIDsWithType(modelID, this._webIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n\n const loadMetadata = (params.loadMetadata !== false);\n\n const metadata = loadMetadata ? {\n id: \"\",\n projectId: \"\" + ifcProjectId,\n author: \"\",\n createdAt: \"\",\n schema: \"\",\n creatingApplication: \"\",\n metaObjects: [],\n propertySets: []\n } : null;\n\n const ctx = {\n modelID,\n modelSchema,\n sceneModel,\n loadMetadata,\n metadata,\n metaObjects: {},\n options,\n log: function (msg) {\n },\n nextId: 0,\n stats\n };\n\n if (loadMetadata) {\n\n if (options.includeTypes) {\n ctx.includeTypes = {};\n for (let i = 0, len = options.includeTypes.length; i < len; i++) {\n ctx.includeTypes[options.includeTypes[i]] = true;\n }\n }\n\n if (options.excludeTypes) {\n ctx.excludeTypes = {};\n for (let i = 0, len = options.excludeTypes.length; i < len; i++) {\n ctx.excludeTypes[options.excludeTypes[i]] = true;\n }\n }\n\n this._parseMetaObjects(ctx);\n this._parsePropertySets(ctx);\n }\n\n this._parseGeometry(ctx);\n\n sceneModel.finalize();\n\n if (loadMetadata) {\n const metaModelId = sceneModel.id;\n this.viewer.metaScene.createMetaModel(metaModelId, ctx.metadata, options);\n }\n\n sceneModel.scene.once(\"tick\", () => {\n if (sceneModel.destroyed) {\n return;\n }\n sceneModel.scene.fire(\"modelLoaded\", sceneModel.id); // FIXME: Assumes listeners know order of these two events\n sceneModel.fire(\"loaded\", true, false); // Don't forget the event, for late subscribers\n });\n }\n\n _parseMetaObjects(ctx) {\n const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, this._webIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = this._ifcAPI.GetLine(ctx.modelID, ifcProjectId);\n this._parseSpatialChildren(ctx, ifcProject);\n }\n\n _parseSpatialChildren(ctx, ifcElement, parentMetaObjectId) {\n const metaObjectType = this._ifcAPI.GetNameFromTypeCode(ifcElement.type);\n if (ctx.includeTypes && (!ctx.includeTypes[metaObjectType])) {\n return;\n }\n if (ctx.excludeTypes && ctx.excludeTypes[metaObjectType]) {\n return;\n }\n this._createMetaObject(ctx, ifcElement, parentMetaObjectId);\n const metaObjectId = ifcElement.GlobalId.value;\n this._parseRelatedItemsOfType(ctx, ifcElement.expressID, 'RelatingObject', 'RelatedObjects', this._webIFC.IFCRELAGGREGATES, metaObjectId);\n this._parseRelatedItemsOfType(ctx, ifcElement.expressID, 'RelatingStructure', 'RelatedElements', this._webIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE, metaObjectId);\n }\n\n _createMetaObject(ctx, ifcElement, parentMetaObjectId) {\n const id = ifcElement.GlobalId.value;\n const metaObjectType = this._ifcAPI.GetNameFromTypeCode(ifcElement.type);\n const metaObjectName = (ifcElement.Name && ifcElement.Name.value !== \"\") ? ifcElement.Name.value : metaObjectType;\n const metaObject = {\n id: id,\n name: metaObjectName,\n type: metaObjectType,\n parent: parentMetaObjectId\n };\n ctx.metadata.metaObjects.push(metaObject);\n ctx.metaObjects[id] = metaObject;\n ctx.stats.numMetaObjects++;\n }\n\n _parseRelatedItemsOfType(ctx, id, relation, related, type, parentMetaObjectId) {\n const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, type);\n for (let i = 0; i < lines.size(); i++) {\n const relID = lines.get(i);\n const rel = this._ifcAPI.GetLine(ctx.modelID, relID);\n const relatedItems = rel[relation];\n let foundElement = false;\n if (Array.isArray(relatedItems)) {\n const values = relatedItems.map((item) => item.value);\n foundElement = values.includes(id);\n } else {\n foundElement = (relatedItems.value === id);\n }\n if (foundElement) {\n const element = rel[related];\n if (!Array.isArray(element)) {\n const ifcElement = this._ifcAPI.GetLine(ctx.modelID, element.value);\n this._parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n } else {\n element.forEach((element2) => {\n const ifcElement = this._ifcAPI.GetLine(ctx.modelID, element2.value);\n this._parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n });\n }\n }\n }\n }\n\n _parsePropertySets(ctx) {\n const lines = this._ifcAPI.GetLineIDsWithType(ctx.modelID, this._webIFC.IFCRELDEFINESBYPROPERTIES);\n for (let i = 0; i < lines.size(); i++) {\n let relID = lines.get(i);\n let rel = this._ifcAPI.GetLine(ctx.modelID, relID, true);\n if (rel) {\n const relatingPropertyDefinition = rel.RelatingPropertyDefinition;\n if (!relatingPropertyDefinition) {\n continue;\n }\n const propertySetId = relatingPropertyDefinition.GlobalId.value;\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 const propertySet = {\n id: propertySetId,\n type: propertySetType,\n name: propertySetName,\n properties: properties\n };\n ctx.metadata.propertySets.push(propertySet);\n ctx.stats.numPropertySets++;\n const relatedObjects = rel.RelatedObjects;\n if (!relatedObjects || relatedObjects.length === 0) {\n return;\n }\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.metaObjects[metaObjectId];\n if (metaObject) {\n if (!metaObject.propertySetIds) {\n metaObject.propertySetIds = [];\n }\n metaObject.propertySetIds.push(propertySetId);\n }\n }\n }\n }\n }\n }\n\n _parseGeometry(ctx) {\n this._ifcAPI.StreamAllMeshes(ctx.modelID, (flatMesh) => {\n // TODO: Can we do geometry reuse with web-ifc?\n const flatMeshExpressID = flatMesh.expressID;\n const placedGeometries = flatMesh.geometries;\n const meshIds = [];\n const properties = this._ifcAPI.GetLine(ctx.modelID, flatMeshExpressID);\n const globalId = properties.GlobalId.value;\n if (ctx.loadMetadata) {\n const metaObjectId = globalId;\n const metaObject = ctx.metaObjects[metaObjectId];\n if (ctx.includeTypes && (!metaObject || (!ctx.includeTypes[metaObject.type]))) {\n return;\n }\n if (ctx.excludeTypes && (!metaObject || ctx.excludeTypes[metaObject.type])) {\n return;\n }\n }\n const matrix = math.mat4();\n const origin = math.vec3();\n for (let j = 0, lenj = placedGeometries.size(); j < lenj; j++) {\n const placedGeometry = placedGeometries.get(j);\n const geometry = this._ifcAPI.GetGeometry(ctx.modelID, placedGeometry.geometryExpressID);\n const vertexData = this._ifcAPI.GetVertexArray(geometry.GetVertexData(), geometry.GetVertexDataSize());\n const indices = this._ifcAPI.GetIndexArray(geometry.GetIndexData(), geometry.GetIndexDataSize());\n // De-interleave vertex arrays\n const positions = new Float64Array(vertexData.length / 2);\n const normals = new Float32Array(vertexData.length / 2);\n for (let k = 0, l = 0, lenk = vertexData.length / 6; k < lenk; k++, l += 3) {\n positions[l + 0] = vertexData[k * 6 + 0];\n positions[l + 1] = vertexData[k * 6 + 1];\n positions[l + 2] = vertexData[k * 6 + 2];\n }\n matrix.set(placedGeometry.flatTransformation);\n math.transformPositions3(matrix, positions);\n const rtcNeeded = worldToRTCPositions(positions, positions, origin);\n if (!ctx.options.autoNormals) {\n for (let k = 0, l = 0, lenk = vertexData.length / 6; k < lenk; k++, l += 3) {\n normals[l + 0] = vertexData[k * 6 + 3];\n normals[l + 1] = vertexData[k * 6 + 4];\n normals[l + 2] = vertexData[k * 6 + 5];\n }\n }\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += (positions.length / 3);\n ctx.stats.numTriangles += (indices.length / 3);\n const meshId = (\"mesh\" + ctx.nextId++);\n ctx.sceneModel.createMesh({\n id: meshId,\n primitive: \"triangles\", // TODO\n origin: rtcNeeded ? origin : null,\n positions: positions,\n normals: ctx.options.autoNormals ? null : normals,\n indices: indices,\n color: [placedGeometry.color.x, placedGeometry.color.y, placedGeometry.color.z],\n opacity: placedGeometry.color.w\n });\n meshIds.push(meshId);\n }\n const entityId = ctx.options.globalizeObjectIds ? math.globalizeObjectId(ctx.sceneModel.id, globalId) : globalId;\n ctx.sceneModel.createEntity({\n id: entityId,\n meshIds: meshIds,\n isObject: true\n });\n ctx.stats.numObjects++;\n });\n }\n}\n\nexport {WebIFCLoaderPlugin};\n", @@ -31505,7 +32033,7 @@ "lineNumber": 1 }, { - "__docId__": 1705, + "__docId__": 1723, "kind": "class", "name": "WebIFCLoaderPlugin", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js", @@ -31530,7 +32058,7 @@ ] }, { - "__docId__": 1706, + "__docId__": 1724, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31645,7 +32173,7 @@ ] }, { - "__docId__": 1712, + "__docId__": 1730, "kind": "member", "name": "_webIFC", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31663,7 +32191,7 @@ } }, { - "__docId__": 1713, + "__docId__": 1731, "kind": "member", "name": "_ifcAPI", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31681,7 +32209,7 @@ } }, { - "__docId__": 1714, + "__docId__": 1732, "kind": "get", "name": "supportedVersions", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31713,7 +32241,7 @@ } }, { - "__docId__": 1715, + "__docId__": 1733, "kind": "get", "name": "dataSource", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31734,7 +32262,7 @@ } }, { - "__docId__": 1716, + "__docId__": 1734, "kind": "set", "name": "dataSource", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31755,7 +32283,7 @@ } }, { - "__docId__": 1717, + "__docId__": 1735, "kind": "member", "name": "_dataSource", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31773,7 +32301,7 @@ } }, { - "__docId__": 1718, + "__docId__": 1736, "kind": "get", "name": "objectDefaults", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31794,7 +32322,7 @@ } }, { - "__docId__": 1719, + "__docId__": 1737, "kind": "set", "name": "objectDefaults", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31815,7 +32343,7 @@ } }, { - "__docId__": 1720, + "__docId__": 1738, "kind": "member", "name": "_objectDefaults", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31833,7 +32361,7 @@ } }, { - "__docId__": 1721, + "__docId__": 1739, "kind": "get", "name": "includeTypes", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31854,7 +32382,7 @@ } }, { - "__docId__": 1722, + "__docId__": 1740, "kind": "set", "name": "includeTypes", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31875,7 +32403,7 @@ } }, { - "__docId__": 1723, + "__docId__": 1741, "kind": "member", "name": "_includeTypes", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31893,7 +32421,7 @@ } }, { - "__docId__": 1724, + "__docId__": 1742, "kind": "get", "name": "excludeTypes", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31914,7 +32442,7 @@ } }, { - "__docId__": 1725, + "__docId__": 1743, "kind": "set", "name": "excludeTypes", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31935,7 +32463,7 @@ } }, { - "__docId__": 1726, + "__docId__": 1744, "kind": "member", "name": "_excludeTypes", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31953,7 +32481,7 @@ } }, { - "__docId__": 1727, + "__docId__": 1745, "kind": "get", "name": "excludeUnclassifiedObjects", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31974,7 +32502,7 @@ } }, { - "__docId__": 1728, + "__docId__": 1746, "kind": "set", "name": "excludeUnclassifiedObjects", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -31995,7 +32523,7 @@ } }, { - "__docId__": 1729, + "__docId__": 1747, "kind": "member", "name": "_excludeUnclassifiedObjects", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32013,7 +32541,7 @@ } }, { - "__docId__": 1730, + "__docId__": 1748, "kind": "get", "name": "globalizeObjectIds", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32034,7 +32562,7 @@ } }, { - "__docId__": 1731, + "__docId__": 1749, "kind": "set", "name": "globalizeObjectIds", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32055,7 +32583,7 @@ } }, { - "__docId__": 1732, + "__docId__": 1750, "kind": "member", "name": "_globalizeObjectIds", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32073,7 +32601,7 @@ } }, { - "__docId__": 1733, + "__docId__": 1751, "kind": "method", "name": "load", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32383,7 +32911,7 @@ } }, { - "__docId__": 1734, + "__docId__": 1752, "kind": "method", "name": "_loadModel", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32425,7 +32953,7 @@ "return": null }, { - "__docId__": 1735, + "__docId__": 1753, "kind": "method", "name": "_parseModel", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32467,7 +32995,7 @@ "return": null }, { - "__docId__": 1736, + "__docId__": 1754, "kind": "method", "name": "_parseMetaObjects", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32491,7 +33019,7 @@ "return": null }, { - "__docId__": 1737, + "__docId__": 1755, "kind": "method", "name": "_parseSpatialChildren", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32527,7 +33055,7 @@ "return": null }, { - "__docId__": 1738, + "__docId__": 1756, "kind": "method", "name": "_createMetaObject", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32563,7 +33091,7 @@ "return": null }, { - "__docId__": 1739, + "__docId__": 1757, "kind": "method", "name": "_parseRelatedItemsOfType", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32617,7 +33145,7 @@ "return": null }, { - "__docId__": 1740, + "__docId__": 1758, "kind": "method", "name": "_parsePropertySets", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32641,7 +33169,7 @@ "return": null }, { - "__docId__": 1741, + "__docId__": 1759, "kind": "method", "name": "_parseGeometry", "memberof": "src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js~WebIFCLoaderPlugin", @@ -32665,7 +33193,7 @@ "return": null }, { - "__docId__": 1742, + "__docId__": 1760, "kind": "file", "name": "src/plugins/WebIFCLoaderPlugin/index.js", "content": "export * from \"./WebIFCLoaderPlugin.js\";", @@ -32676,7 +33204,7 @@ "lineNumber": 1 }, { - "__docId__": 1743, + "__docId__": 1761, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js", "content": "import {utils} from \"../../viewer/scene/utils.js\";\n\n/**\n * Default data access strategy for {@link XKTLoaderPlugin}.\n */\nclass XKTDefaultDataSource {\n\n constructor() {\n }\n\n /**\n * Gets manifest JSON.\n *\n * @param {String|Number} manifestSrc Identifies the manifest JSON asset.\n * @param {Function} ok Fired on successful loading of the manifest JSON asset.\n * @param {Function} error Fired on error while loading the manifest JSON asset.\n */\n getManifest(manifestSrc, ok, error) {\n utils.loadJSON(manifestSrc,\n (json) => {\n ok(json);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n\n /**\n * Gets metamodel JSON.\n *\n * @param {String|Number} metaModelSrc Identifies the metamodel JSON asset.\n * @param {Function} ok Fired on successful loading of the metamodel JSON asset.\n * @param {Function} error Fired on error while loading the metamodel JSON asset.\n */\n getMetaModel(metaModelSrc, ok, error) {\n utils.loadJSON(metaModelSrc,\n (json) => {\n ok(json);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n\n /**\n * Gets the contents of the given ````.xkt```` file in an arraybuffer.\n *\n * @param {String|Number} src Path or ID of an ````.xkt```` file.\n * @param {Function} ok Callback fired on success, argument is the ````.xkt```` file in an arraybuffer.\n * @param {Function} error Callback fired on error.\n */\n getXKT(src, ok, error) {\n var defaultCallback = () => {\n };\n ok = ok || defaultCallback;\n error = error || defaultCallback;\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n const dataUriRegexResult = src.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = window.decodeURIComponent(data);\n if (isBase64) {\n data = window.atob(data);\n }\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n ok(buffer);\n } catch (errMsg) {\n error(errMsg);\n }\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', src, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n error('getXKT error : ' + request.response);\n }\n }\n };\n request.send(null);\n }\n }\n}\n\n\nexport {XKTDefaultDataSource};", @@ -32687,7 +33215,7 @@ "lineNumber": 1 }, { - "__docId__": 1744, + "__docId__": 1762, "kind": "class", "name": "XKTDefaultDataSource", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js", @@ -32702,7 +33230,7 @@ "interface": false }, { - "__docId__": 1745, + "__docId__": 1763, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource", @@ -32716,7 +33244,7 @@ "undocument": true }, { - "__docId__": 1746, + "__docId__": 1764, "kind": "method", "name": "getManifest", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource", @@ -32763,7 +33291,7 @@ "return": null }, { - "__docId__": 1747, + "__docId__": 1765, "kind": "method", "name": "getMetaModel", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource", @@ -32810,7 +33338,7 @@ "return": null }, { - "__docId__": 1748, + "__docId__": 1766, "kind": "method", "name": "getXKT", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource", @@ -32857,7 +33385,7 @@ "return": null }, { - "__docId__": 1749, + "__docId__": 1767, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js", "content": "import {utils} from \"../../viewer/scene/utils.js\"\nimport {SceneModel} from \"../../viewer/scene/model/index.js\";\nimport {MetaModel} from \"../../viewer/metadata/MetaModel.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {XKTDefaultDataSource} from \"./XKTDefaultDataSource.js\";\nimport {IFCObjectDefaults} from \"../../viewer/metadata/IFCObjectDefaults.js\";\n\nimport {ParserV1} from \"./parsers/ParserV1.js\";\nimport {ParserV2} from \"./parsers/ParserV2.js\";\nimport {ParserV3} from \"./parsers/ParserV3.js\";\nimport {ParserV4} from \"./parsers/ParserV4.js\";\nimport {ParserV5} from \"./parsers/ParserV5.js\";\nimport {ParserV6} from \"./parsers/ParserV6.js\";\nimport {ParserV7} from \"./parsers/ParserV7.js\";\nimport {ParserV8} from \"./parsers/ParserV8.js\";\nimport {ParserV9} from \"./parsers/ParserV9.js\";\nimport {ParserV10} from \"./parsers/ParserV10.js\";\n\n\nconst parsers = {};\n\nparsers[ParserV1.version] = ParserV1;\nparsers[ParserV2.version] = ParserV2;\nparsers[ParserV3.version] = ParserV3;\nparsers[ParserV4.version] = ParserV4;\nparsers[ParserV5.version] = ParserV5;\nparsers[ParserV6.version] = ParserV6;\nparsers[ParserV7.version] = ParserV7;\nparsers[ParserV8.version] = ParserV8;\nparsers[ParserV9.version] = ParserV9;\nparsers[ParserV10.version] = ParserV10;\n\n/**\n * {@link Viewer} plugin that loads models from xeokit's optimized *````.XKT````* format.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_XKT_OTCConferenceCenter)]\n *\n * # Overview\n *\n * * XKTLoaderPlugin is the most efficient way to load high-detail models into xeokit.\n * * An *````.XKT````* file is a single BLOB containing a model, compressed using geometry quantization\n * and [pako](https://nodeca.github.io/pako/).\n * * Supports double-precision coordinates.\n * * Supports compressed textures.\n * * Set the position, scale and rotation of each model as you load it.\n * * Filter which IFC types get loaded.\n * * Configure initial default appearances for IFC types.\n * * Set a custom data source for *````.XKT````* and IFC metadata files.\n * * Option to load multiple copies of the same model, without object ID clashes.\n *\n * # Creating *````.XKT````* Files and Metadata\n *\n * We have several sways to convert your files into XKT. See these tutorials for more info:\n *\n * * [Converting Models to XKT with convert2xkt](https://www.notion.so/xeokit/Converting-Models-to-XKT-with-convert2xkt-fa567843313f4db8a7d6535e76da9380) - how to convert various file formats (glTF, IFC, CityJSON, LAS/LAZ...) to XKT using our nodejs-based converter.\n * * [Converting IFC Models to XKT using 3rd-Party Open Source Tools](https://www.notion.so/xeokit/Converting-IFC-Models-to-XKT-using-3rd-Party-Open-Source-Tools-c373e48bc4094ff5b6e5c5700ff580ee) - how to convert IFC files to XKT using 3rd-party open source CLI tools.\n *\n * # Scene representation\n *\n * When loading a model, XKTLoaderPlugin creates an {@link Entity} that represents the model, which\n * will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id}\n * in {@link Scene#models}. The XKTLoaderPlugin also creates an {@link Entity} for each object within the\n * model. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * # Metadata\n *\n * Since XKT V8, model metadata is included in the XKT file. If the XKT file has metadata, then loading it creates\n * model metadata components within the Viewer, namely a {@link MetaModel} corresponding to the model {@link Entity},\n * and a {@link MetaObject} for each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding\n * {@link Entity}. When loading metadata, we can also configure XKTLoaderPlugin with a custom lookup table of initial\n * values to set on the properties of each type of {@link Entity}. By default, XKTLoaderPlugin uses its own map of\n * default colors and visibilities for IFC element types.\n *\n * For XKT versions prior to V8, we provided the metadata to XKTLoaderPlugin as an accompanying JSON file to load. We can\n * still do that for all XKT versions, and for XKT V8+ it will override any metadata provided within the XKT file.\n *\n * # Usage\n *\n * In the example below we'll load the Schependomlaan model from a [.XKT file](https://github.com/xeokit/xeokit-sdk/tree/master/examples/models/xkt/schependomlaan).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the XKTLoaderPlugin will set the initial appearance of each object\n * {@link Entity} according to its IFC type in {@link XKTLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_XKT_metadata_Schependomlaan)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a XKTLoaderPlugin,\n * // 2. Load a building model and JSON IFC metadata\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * // 2\n * const model = xktLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * # Loading XKT files containing textures\n *\n * XKTLoaderPlugin uses a {@link KTX2TextureTranscoder} to load textures in XKT files (XKT v10+). An XKTLoaderPlugin has its own\n * default KTX2TextureTranscoder, configured to load the Basis Codec from the CDN. If we wish, we can override that with our own\n * KTX2TextureTranscoder instance that's configured to load the Codec locally.\n *\n * In the example below, we'll create a {@link Viewer} and add an XKTLoaderPlugin\n * configured with a KTX2TextureTranscoder that finds the Codec in our local file system. Then we'll use the\n * XKTLoaderPlugin to load an XKT file that contains KTX2 textures, which the plugin will transcode using\n * its KTX2TextureTranscoder.\n *\n * We'll configure our KTX2TextureTranscoder to load the Basis Codec from a local directory. If we were happy with loading the\n * Codec from our CDN (ie. our app will always have an Internet connection) then we could just leave out the\n * KTX2TextureTranscoder altogether, and let the XKTLoaderPlugin use its internal default KTX2TextureTranscoder, which is configured to\n * load the Codec from the CDN. We'll stick with loading our own Codec, in case we want to run our app without an Internet connection.\n *\n * \n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/buildings/#xkt_vbo_textures_HousePlan)]\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to Basis Universal transcoder\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer, {\n * textureTranscoder // <<------------- Transcodes KTX2 textures in XKT files\n * });\n *\n * const sceneModel = xktLoader.load({\n * id: \"myModel\",\n * src: \"./HousePlan.xkt\" // <<------ XKT file with KTX2 textures\n * });\n * ````\n *\n * # Transforming\n *\n * We have the option to rotate, scale and translate each *````.XKT````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * ````javascript\n * xktLoader.load({\n * src: \"./models/xkt/Duplex.ifc.xkt\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * # Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types.\n *\n * In the example below, we'll load only the objects that represent walls.\n *\n * ````javascript\n * const model2 = xktLoader.load({\n * id: \"myModel2\",\n * src: \"./models/xkt/OTCConferenceCenter.xkt\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types.\n *\n * In the example below, we'll load only the objects that do not represent empty space.\n *\n * ````javascript\n * const model3 = xktLoader.load({\n * id: \"myModel3\",\n * src: \"./models/xkt/OTCConferenceCenter.xkt\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n *\n * # Configuring initial IFC object appearances\n *\n * We can specify the custom initial appearance of loaded objects according to their IFC types.\n *\n * This is useful for things like:\n *\n * * setting the colors to our objects according to their IFC types,\n * * automatically hiding ````IfcSpace```` objects, and\n * * ensuring that ````IfcWindow```` objects are always transparent.\n *
    \n * In the example below, we'll load a model, while configuring ````IfcSpace```` elements to be always initially invisible,\n * and ````IfcWindow```` types to be always translucent blue.\n *\n * ````javascript\n * const myObjectDefaults = {\n *\n * IfcSpace: {\n * visible: false\n * },\n * IfcWindow: {\n * colorize: [0.337255, 0.303922, 0.870588], // Blue\n * opacity: 0.3\n * },\n *\n * //...\n *\n * DEFAULT: {\n * colorize: [0.5, 0.5, 0.5]\n * }\n * };\n *\n * const model4 = xktLoader.load({\n * id: \"myModel4\",\n * src: \"./models/xkt/Duplex.ifc.xkt\",\n * objectDefaults: myObjectDefaults // Use our custom initial default states for object Entities\n * });\n * ````\n *\n * When we don't customize the appearance of IFC types, as just above, then IfcSpace elements tend to obscure other\n * elements, which can be confusing.\n *\n * It's often helpful to make IfcSpaces transparent and unpickable, like this:\n *\n * ````javascript\n * const xktLoader = new XKTLoaderPlugin(viewer, {\n * objectDefaults: {\n * IfcSpace: {\n * pickable: false,\n * opacity: 0.2\n * }\n * }\n * });\n * ````\n *\n * Alternatively, we could just make IfcSpaces invisible, which also makes them unpickable:\n *\n * ````javascript\n * const xktLoader = new XKTLoaderPlugin(viewer, {\n * objectDefaults: {\n * IfcSpace: {\n * visible: false\n * }\n * }\n * });\n * ````\n *\n * # Configuring a custom data source\n *\n * By default, XKTLoaderPlugin will load *````.XKT````* files and metadata JSON over HTTP.\n *\n * In the example below, we'll customize the way XKTLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets metamodel JSON\n * getMetaModel(metaModelSrc, ok, error) {\n * console.log(\"MyDataSource#getMetaModel(\" + metaModelSrc + \", ... )\");\n * utils.loadJSON(metaModelSrc,\n * (json) => {\n * ok(json);\n * },\n * function (errMsg) {\n * error(errMsg);\n * });\n * }\n *\n * // Gets the contents of the given .XKT file in an arraybuffer\n * getXKT(src, ok, error) {\n * console.log(\"MyDataSource#getXKT(\" + xKTSrc + \", ... )\");\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * function (errMsg) {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const xktLoader2 = new XKTLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const model5 = xktLoader2.load({\n * id: \"myModel5\",\n * src: \"./models/xkt/Duplex.ifc.xkt\"\n * });\n * ````\n *\n * # Loading multiple copies of a model, without object ID clashes\n *\n * Sometimes we need to load two or more instances of the same model, without having clashes\n * between the IDs of the equivalent objects in the model instances.\n *\n * As shown in the example below, we do this by setting {@link XKTLoaderPlugin#globalizeObjectIds} ````true```` before we load our models.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/index.html#TreeViewPlugin_Containment_MultipleModels)]\n *\n * ````javascript\n * xktLoader.globalizeObjectIds = true;\n *\n * const model = xktLoader.load({\n * id: \"model1\",\n * src: \"./models/xkt/Schependomlaan.xkt\"\n * });\n *\n * const model2 = xktLoader.load({\n * id: \"model2\",\n * src: \"./models/xkt/Schependomlaan.xkt\"\n * });\n * ````\n *\n * For each {@link Entity} loaded by these two calls, {@link Entity#id} and {@link MetaObject#id} will get prefixed by\n * the ID of their model, in order to avoid ID clashes between the two models.\n *\n * An Entity belonging to the first model will get an ID like this:\n *\n * ````\n * myModel1#0BTBFw6f90Nfh9rP1dlXrb\n * ````\n *\n * The equivalent Entity in the second model will get an ID like this:\n *\n * ````\n * myModel2#0BTBFw6f90Nfh9rP1dlXrb\n * ````\n *\n * Now, to update the visibility of both of those Entities collectively, using {@link Scene#setObjectsVisible}, we can\n * supply just the IFC product ID part to that method:\n *\n * ````javascript\n * myViewer.scene.setObjectVisibilities(\"0BTBFw6f90Nfh9rP1dlXrb\", true);\n * ````\n *\n * The method, along with {@link Scene#setObjectsXRayed}, {@link Scene#setObjectsHighlighted} etc, will internally expand\n * the given ID to refer to the instances of that Entity in both models.\n *\n * We can also, of course, reference each Entity directly, using its globalized ID:\n *\n * ````javascript\n * myViewer.scene.setObjectVisibilities(\"myModel1#0BTBFw6f90Nfh9rP1dlXrb\", true);\n *````\n *\n * We can also provide an HTTP URL to the XKT file:\n *\n * ````javascript\n * const sceneModel = xktLoader.load({\n * manifestSrc: \"https://xeokit.github.io/xeokit-sdk/assets/models/models/xkt/Schependomlaan.xkt\",\n * id: \"myModel\",\n * });\n * ````\n *\n * # Loading a model from a manifest of XKT files\n *\n * The `ifc2gltf` tool from Creoox, which converts IFC files into glTF geometry and JSON metadata files, has the option to\n * split its output into multiple pairs of glTF and JSON files, accompanied by a JSON manifest that lists the files.\n *\n * To integrate with that option, the `convert2xkt` tool, which converts glTF geometry and JSON metadata files into XKT files,\n * also has the option to batch-convert the glTF+JSON files in the manifest, in one invocation.\n *\n * When we use this option, convert2xkt will output a bunch of XKT files, along with a JSON manifest file that lists those XKT files.\n *\n * Working down the pipeline, the XKTLoaderPlugin has the option batch-load all XKT files listed in that manifest\n * into a xeokit Viewer in one load operation, combining the XKT files into a single SceneModel and MetaModel.\n *\n * You can learn more about this conversion and loading process, with splitting, batch converting and batch loading,\n * in [this tutorial](https://www.notion.so/xeokit/Importing-Huge-IFC-Models-as-Multiple-XKT-Files-165fc022e94742cf966ee50003572259).\n *\n * To show how to use XKTLoaderPlugin to load a manifest of XKT files, let's imagine that we have a set of such XKT files. As\n * described in the tutorial, they were converted by `ifc2gltf` from an IFC file into a set of glTF+JSON files, that were\n * then converted by convert2xkt into this set of XKT files and a manifest, as shown below.\n *\n * ````bash\n * ./\n * ├── model_1.xkt\n * ├── model_2.xkt\n * ├── model_3.xkt\n * ├── model_4..xkt\n * └── model.xkt.manifest.json\n * ````\n *\n * The `model.xkt.manifest.json` XKT manifest would look something like this:\n *\n * ````json\n * {\n * \"inputFile\": null,\n * \"converterApplication\": \"convert2xkt\",\n * \"converterApplicationVersion\": \"v1.1.9\",\n * \"conversionDate\": \"10-08-2023- 02-05-01\",\n * \"outputDir\": null,\n * \"xktFiles\": [\n * \"model_1.xkt\",\n * \"model_2.xkt\",\n * \"model_3.xkt\",\n * \"model_4.xkt\"\n * ]\n * }\n * ````\n *\n * Now, to load all those XKT files into a single SceneModel and MetaModel in one operation, we pass a path to the XKT\n * manifest to `XKTLoaderPlugin.load`, as shown in the example below:\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/buildings/#xkt_manifest_KarhumakiBridge)]\n *\n * ````javascript\n * import {\n * Viewer,\n * XKTLoaderPlugin,\n * TreeViewPlugin,\n * } from \"xeokit-sdk.es.js\";\n *\n * constviewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [26.54, 29.29, 36.20,];\n * viewer.scene.camera.look = [-23.51, -8.26, -21.65,];\n * viewer.scene.camera.up = [-0.2, 0.89, -0.33,];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const sceneModel = xktLoader.load({\n * manifestSrc: \"model.xkt.manifest.json\",\n * id: \"myModel\",\n * });\n *\n * const metaModel = viewer.metaScene.metaModels[sceneModel.id];\n *\n * // Then when we need to, we can destroy the SceneModel\n * // and MetaModel in one shot, like so:\n *\n * sceneModel.destroy();\n * metaModel.destroy();\n * ````\n *\n * The main advantage here, of splitting IFC files like this within the conversion and import pipeline,\n * is to reduce the memory pressure on each of the `ifc2gltf`, `convert2xkt` and XKTLoaderPlugin components.\n * They work much reliably (and faster) when processing smaller files (eg. 20MB) than when processing large files (eg. 500MB), where\n * they have less trouble allocating the system memory they need for conversion and parsing.\n *\n * We can also provide an HTTP URL to the manifest:\n *\n * ````javascript\n * const sceneModel = xktLoader.load({\n * manifestSrc: \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model.xkt.manifest.json\",\n * id: \"myModel\",\n * });\n * ````\n *\n * We can also provide the manifest as parameter object:\n *\n * ````javascript\n * const sceneModel = xktLoader.load({\n * id: \"myModel\",\n * manifest: {\n * inputFile: \"assets/models/gltf/Karhumaki/model.glb.manifest.json\",\n * converterApplication: \"convert2xkt\",\n * converterApplicationVersion: \"v1.1.10\",\n * conversionDate\": \"09-11-2023- 18-29-01\",\n * xktFiles: [\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model.xkt\",\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model_1.xkt\",\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model_2.xkt\",\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model_3.xkt\",\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model_4.xkt\",\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model_5.xkt\",\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model_6.xkt\",\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model_7.xkt\",\n * \"../../assets/models/xkt/v10/split/Karhumaki-Bridge/model_8.xkt\"\n * ]\n * }\n * });\n * ````\n *\n * We can also provide the paths to the XKT files as HTTP URLs:\n *\n * ````javascript\n * const sceneModel = xktLoader.load({\n * id: \"myModel\",\n * manifest: {\n * inputFile: \"assets/models/gltf/Karhumaki/model.glb.manifest.json\",\n * converterApplication: \"convert2xkt\",\n * converterApplicationVersion: \"v1.1.10\",\n * conversionDate\": \"09-11-2023- 18-29-01\",\n * xktFiles: [\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model.xkt\",\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model_1.xkt\",\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model_2.xkt\",\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model_3.xkt\",\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model_4.xkt\",\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model_5.xkt\",\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model_6.xkt\",\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model_7.xkt\",\n * \"https://xeokit.github.io/xeokit-sdk/assets/models/xkt/v10/split/Karhumaki-Bridge/model_8.xkt\"\n * ]\n * }\n * });\n * ````\n *\n * @class XKTLoaderPlugin\n */\nclass XKTLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"XKTLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the XKTLoaderPlugin can load model and metadata files. Defaults to an instance of {@link XKTDefaultDataSource}, which loads uover HTTP.\n * @param {String[]} [cfg.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [cfg.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [cfg.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.\n * @param {Boolean} [cfg.reuseGeometries=true] Indicates whether to enable geometry reuse (````true```` by default) or whether to internally expand\n * all geometry instances into batches (````false````), and not use instancing to render them. Setting this ````false```` can significantly\n * improve Viewer performance for models that have a lot of geometry reuse, but may also increase the amount of\n * browser and GPU memory they require. See [#769](https://github.com/xeokit/xeokit-sdk/issues/769) for more info.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that {@link SceneModel} internally creates for batched geometries.\n * A low value means less heap allocation/de-allocation while loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n * @param {KTX2TextureTranscoder} [cfg.textureTranscoder] Transcoder used internally to transcode KTX2\n * textures within the XKT. Only required when the XKT is version 10 or later, and contains KTX2 textures.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"XKTLoader\", viewer, cfg);\n\n this._maxGeometryBatchSize = cfg.maxGeometryBatchSize;\n\n this.textureTranscoder = cfg.textureTranscoder;\n this.dataSource = cfg.dataSource;\n this.objectDefaults = cfg.objectDefaults;\n this.includeTypes = cfg.includeTypes;\n this.excludeTypes = cfg.excludeTypes;\n this.excludeUnclassifiedObjects = cfg.excludeUnclassifiedObjects;\n this.reuseGeometries = cfg.reuseGeometries;\n }\n\n /**\n * Gets the ````.xkt```` format versions supported by this XKTLoaderPlugin/\n * @returns {string[]}\n */\n get supportedVersions() {\n return Object.keys(parsers);\n }\n\n /**\n * Gets the texture transcoder.\n *\n * @type {TextureTranscoder}\n */\n get textureTranscoder() {\n return this._textureTranscoder;\n }\n\n /**\n * Sets the texture transcoder.\n *\n * @type {TextureTranscoder}\n */\n set textureTranscoder(textureTranscoder) {\n this._textureTranscoder = textureTranscoder;\n }\n\n /**\n * Gets the custom data source through which the XKTLoaderPlugin can load models and metadata.\n *\n * Default value is {@link XKTDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets a custom data source through which the XKTLoaderPlugin can load models and metadata.\n *\n * Default value is {@link XKTDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new XKTDefaultDataSource();\n }\n\n /**\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n get objectDefaults() {\n return this._objectDefaults;\n }\n\n /**\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n set objectDefaults(value) {\n this._objectDefaults = value || IFCObjectDefaults;\n }\n\n /**\n * Gets the whitelist of the IFC types loaded by this XKTLoaderPlugin.\n *\n * When loading models with metadata, causes this XKTLoaderPlugin to only load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n get includeTypes() {\n return this._includeTypes;\n }\n\n /**\n * Sets the whitelist of the IFC types loaded by this XKTLoaderPlugin.\n *\n * When loading models with metadata, causes this XKTLoaderPlugin to only load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n set includeTypes(value) {\n this._includeTypes = value;\n }\n\n /**\n * Gets the blacklist of IFC types that are never loaded by this XKTLoaderPlugin.\n *\n * When loading models with metadata, causes this XKTLoaderPlugin to **not** load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n get excludeTypes() {\n return this._excludeTypes;\n }\n\n /**\n * Sets the blacklist of IFC types that are never loaded by this XKTLoaderPlugin.\n *\n * When loading models with metadata, causes this XKTLoaderPlugin to **not** load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n set excludeTypes(value) {\n this._excludeTypes = value;\n }\n\n /**\n * Gets whether we load objects that don't have IFC types.\n *\n * When loading models with metadata and this is ````true````, XKTLoaderPlugin will not load objects\n * that don't have IFC types.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get excludeUnclassifiedObjects() {\n return this._excludeUnclassifiedObjects;\n }\n\n /**\n * Sets whether we load objects that don't have IFC types.\n *\n * When loading models with metadata and this is ````true````, XKTLoaderPlugin will not load objects\n * that don't have IFC types.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set excludeUnclassifiedObjects(value) {\n this._excludeUnclassifiedObjects = !!value;\n }\n\n /**\n * Gets whether XKTLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get globalizeObjectIds() {\n return this._globalizeObjectIds;\n }\n\n /**\n * Sets whether XKTLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.\n *\n * Set this ````true```` when you need to load multiple instances of the same model, to avoid ID clashes\n * between the objects in the different instances.\n *\n * When we load a model with this set ````true````, then each {@link Entity#id} and {@link MetaObject#id} will be\n * prefixed by the ID of the model, ie. ````#````.\n *\n * {@link Entity#originalSystemId} and {@link MetaObject#originalSystemId} will always hold the original, un-prefixed, ID values.\n *\n * Default value is ````false````.\n *\n * See the main {@link XKTLoaderPlugin} class documentation for usage info.\n *\n * @type {Boolean}\n */\n set globalizeObjectIds(value) {\n this._globalizeObjectIds = !!value;\n }\n\n /**\n * Gets whether XKTLoaderPlugin enables geometry reuse when loading models.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n get reuseGeometries() {\n return this._reuseGeometries;\n }\n\n /**\n * Sets whether XKTLoaderPlugin enables geometry reuse when loading models.\n *\n * Default value is ````true````.\n *\n * Geometry reuse saves memory, but can impact Viewer performance when there are many reused geometries. For\n * this reason, we can set this ````false```` to disable geometry reuse for models loaded by this XKTLoaderPlugin\n * (which will then \"expand\" the geometry instances into batches instead).\n *\n * The result will be be less WebGL draw calls (which are expensive), at the cost of increased memory footprint.\n *\n * See [#769](https://github.com/xeokit/xeokit-sdk/issues/769) for more info.\n *\n * @type {Boolean}\n */\n set reuseGeometries(value) {\n this._reuseGeometries = value !== false;\n }\n\n /**\n * Loads an ````.xkt```` model into this XKTLoaderPlugin's {@link Viewer}.\n *\n * Since xeokit/xeokit-sdk 1.9.0, XKTLoaderPlugin has supported XKT 8, which bundles the metamodel\n * data (eg. an IFC element hierarchy) in the XKT file itself. For XKT 8, we therefore no longer need to\n * load the metamodel data from a separate accompanying JSON file, as we did with previous XKT versions.\n * However, if we do choose to specify a separate metamodel JSON file to load (eg. for backward compatibility\n * in data pipelines), then that metamodel will be loaded and the metamodel in the XKT 8 file will be ignored.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path or URL to an *````.xkt````* file, as an alternative to the ````xkt```` parameter.\n * @param {ArrayBuffer} [params.xkt] The *````.xkt````* file data, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path or URL to an optional metadata file, as an alternative to the ````metaModelData```` parameter.\n * @param {*} [params.metaModelData] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {String} [params.manifestSrc] Path or URL to a JSON manifest file that provides paths to ````.xkt```` files to load as parts of the model. Use this option to load models that have been split into\n * multiple XKT files. See [tutorial](https://www.notion.so/xeokit/Automatically-Splitting-Large-Models-for-Better-Performance-165fc022e94742cf966ee50003572259) for more info.\n * @param {Object} [params.manifest] A JSON manifest object (as an alternative to a path or URL) that provides paths to ````.xkt```` files to load as parts of the model. Use this option to load models that have been split into\n * multiple XKT files. See [tutorial](https://www.notion.so/xeokit/Automatically-Splitting-Large-Models-for-Better-Performance-165fc022e94742cf966ee50003572259) for more info.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.\n * @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] The model's scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.\n * @param {Boolean} [params.edges=false] Indicates if the model's edges are initially emphasized.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.\n * @param {Number} [params.backfaces=false] When we set this ````true````, then we force rendering of backfaces for the model. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [params.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.\n * @param {Boolean} [params.globalizeObjectIds=false] Indicates whether to globalize each {@link Entity#id} and {@link MetaObject#id}, in case you need to prevent ID clashes with other models. See {@link XKTLoaderPlugin#globalizeObjectIds} for more info.\n * @param {Boolean} [params.reuseGeometries=true] Indicates whether to enable geometry reuse (````true```` by default) or whether to expand\n * all geometry instances into batches (````false````), and not use instancing to render them. Setting this ````false```` can significantly\n * improve Viewer performance for models that have excessive geometry reuse, but may also increases the amount of\n * browser and GPU memory used by the model. See [#769](https://github.com/xeokit/xeokit-sdk/issues/769) for more info.\n * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n if (!params.src && !params.xkt && !params.manifestSrc && !params.manifest) {\n this.error(\"load() param expected: src, xkt, manifestSrc or manifestData\");\n return sceneModel; // Return new empty model\n }\n\n const options = {};\n const includeTypes = params.includeTypes || this._includeTypes;\n const excludeTypes = params.excludeTypes || this._excludeTypes;\n const objectDefaults = params.objectDefaults || this._objectDefaults;\n\n options.reuseGeometries = (params.reuseGeometries !== null && params.reuseGeometries !== undefined) ? params.reuseGeometries : (this._reuseGeometries !== false);\n\n if (includeTypes) {\n options.includeTypesMap = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n options.includeTypesMap[includeTypes[i]] = true;\n }\n }\n\n if (excludeTypes) {\n options.excludeTypesMap = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n options.excludeTypesMap[excludeTypes[i]] = true;\n }\n }\n\n if (objectDefaults) {\n options.objectDefaults = objectDefaults;\n }\n\n options.excludeUnclassifiedObjects = (params.excludeUnclassifiedObjects !== undefined) ? (!!params.excludeUnclassifiedObjects) : this._excludeUnclassifiedObjects;\n options.globalizeObjectIds = (params.globalizeObjectIds !== undefined && params.globalizeObjectIds !== null) ? (!!params.globalizeObjectIds) : this._globalizeObjectIds;\n\n const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {\n isModel: true,\n textureTranscoder: this._textureTranscoder,\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n origin: params.origin,\n disableVertexWelding: params.disableVertexWelding || false,\n disableIndexRebucketing: params.disableIndexRebucketing || false,\n dtxEnabled: params.dtxEnabled\n }));\n\n const modelId = sceneModel.id; // In case ID was auto-generated\n\n const metaModel = new MetaModel({\n metaScene: this.viewer.metaScene,\n id: modelId\n });\n\n this.viewer.scene.canvas.spinner.processes++;\n\n const finish = () => {\n // this._createDefaultMetaModelIfNeeded(sceneModel, params, options);\n sceneModel.finalize();\n metaModel.finalize();\n this.viewer.scene.canvas.spinner.processes--;\n sceneModel.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(metaModel.id);\n });\n this.scheduleTask(() => {\n if (sceneModel.destroyed) {\n return;\n }\n sceneModel.scene.fire(\"modelLoaded\", sceneModel.id); // FIXME: Assumes listeners know order of these two events\n sceneModel.fire(\"loaded\", true, false); // Don't forget the event, for late subscribers\n });\n }\n\n const error = (errMsg) => {\n this.viewer.scene.canvas.spinner.processes--;\n this.error(errMsg);\n sceneModel.fire(\"error\", errMsg);\n }\n\n let nextId = 0;\n const manifestCtx = {\n getNextId: () => {\n return `${modelId}.${nextId++}`;\n }\n };\n\n if (params.metaModelSrc || params.metaModelData) {\n\n if (params.metaModelSrc) {\n\n const metaModelSrc = params.metaModelSrc;\n\n this._dataSource.getMetaModel(metaModelSrc, (metaModelData) => {\n if (sceneModel.destroyed) {\n return;\n }\n metaModel.loadData(metaModelData, {\n includeTypes: includeTypes,\n excludeTypes: excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds\n });\n if (params.src) {\n this._loadModel(params.src, params, options, sceneModel, null, manifestCtx, finish, error);\n } else {\n this._parseModel(params.xkt, params, options, sceneModel, null, manifestCtx);\n finish();\n }\n }, (errMsg) => {\n error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - ${errMsg}`);\n });\n\n } else if (params.metaModelData) {\n metaModel.loadData(params.metaModelData, {\n includeTypes: includeTypes,\n excludeTypes: excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds\n });\n if (params.src) {\n this._loadModel(params.src, params, options, sceneModel, null, manifestCtx, finish, error);\n } else {\n this._parseModel(params.xkt, params, options, sceneModel, null, manifestCtx);\n finish();\n }\n }\n\n\n } else {\n\n if (params.src) {\n this._loadModel(params.src, params, options, sceneModel, metaModel, manifestCtx, finish, error);\n } else if (params.xkt) {\n this._parseModel(params.xkt, params, options, sceneModel, metaModel, manifestCtx);\n finish();\n } else if (params.manifestSrc || params.manifest) {\n const baseDir = params.manifestSrc ? getBaseDirectory(params.manifestSrc) : \"\";\n const loadJSONs = (metaDataFiles, done, error) => {\n let i = 0;\n const loadNext = () => {\n if (i >= metaDataFiles.length) {\n done();\n } else {\n this._dataSource.getMetaModel(`${baseDir}${metaDataFiles[i]}`, (metaModelData) => {\n metaModel.loadData(metaModelData, {\n includeTypes: includeTypes,\n excludeTypes: excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds\n });\n i++;\n this.scheduleTask(loadNext, 100);\n }, error);\n }\n }\n loadNext();\n }\n const loadXKTs_excludeTheirMetaModels = (xktFiles, done, error) => { // Load XKTs, ignore metamodels in the XKT\n let i = 0;\n const loadNext = () => {\n if (i >= xktFiles.length) {\n done();\n } else {\n this._dataSource.getXKT(`${baseDir}${xktFiles[i]}`, (arrayBuffer) => {\n this._parseModel(arrayBuffer, params, options, sceneModel, null /* Ignore metamodel in XKT */, manifestCtx);\n i++;\n this.scheduleTask(loadNext, 100);\n }, error);\n }\n }\n loadNext();\n };\n const loadXKTs_includeTheirMetaModels = (xktFiles, done, error) => { // Load XKTs, parse metamodels from the XKT\n let i = 0;\n const loadNext = () => {\n if (i >= xktFiles.length) {\n done();\n } else {\n this._dataSource.getXKT(`${baseDir}${xktFiles[i]}`, (arrayBuffer) => {\n this._parseModel(arrayBuffer, params, options, sceneModel, metaModel, manifestCtx);\n i++;\n this.scheduleTask(loadNext, 100);\n }, error);\n }\n }\n loadNext();\n };\n if (params.manifest) {\n const manifestData = params.manifest;\n const xktFiles = manifestData.xktFiles;\n if (!xktFiles || xktFiles.length === 0) {\n error(`load(): Failed to load model manifest - manifest not valid`);\n return;\n }\n const metaModelFiles = manifestData.metaModelFiles;\n if (metaModelFiles) {\n loadJSONs(metaModelFiles, () => {\n loadXKTs_excludeTheirMetaModels(xktFiles, finish, error);\n }, error);\n } else {\n loadXKTs_includeTheirMetaModels(xktFiles, finish, error);\n }\n } else {\n this._dataSource.getManifest(params.manifestSrc, (manifestData) => {\n if (sceneModel.destroyed) {\n return;\n }\n const xktFiles = manifestData.xktFiles;\n if (!xktFiles || xktFiles.length === 0) {\n error(`load(): Failed to load model manifest - manifest not valid`);\n return;\n }\n const metaModelFiles = manifestData.metaModelFiles;\n if (metaModelFiles) {\n loadJSONs(metaModelFiles, () => {\n loadXKTs_excludeTheirMetaModels(xktFiles, finish, error);\n }, error);\n } else {\n loadXKTs_includeTheirMetaModels(xktFiles, finish, error);\n }\n }, error);\n }\n }\n }\n\n return sceneModel;\n }\n\n _loadModel(src, params, options, sceneModel, metaModel, manifestCtx, done, error) {\n this._dataSource.getXKT(params.src, (arrayBuffer) => {\n this._parseModel(arrayBuffer, params, options, sceneModel, metaModel, manifestCtx);\n done();\n }, error);\n }\n\n _parseModel(arrayBuffer, params, options, sceneModel, metaModel, manifestCtx) {\n if (sceneModel.destroyed) {\n return;\n }\n const dataView = new DataView(arrayBuffer);\n const dataArray = new Uint8Array(arrayBuffer);\n const xktVersion = dataView.getUint32(0, true);\n const parser = parsers[xktVersion];\n if (!parser) {\n this.error(\"Unsupported .XKT file version: \" + xktVersion + \" - this XKTLoaderPlugin supports versions \" + Object.keys(parsers));\n return;\n }\n this.log(\"Loading .xkt V\" + xktVersion);\n const numElements = dataView.getUint32(4, true);\n const elements = [];\n let byteOffset = (numElements + 2) * 4;\n for (let i = 0; i < numElements; i++) {\n const elementSize = dataView.getUint32((i + 2) * 4, true);\n elements.push(dataArray.subarray(byteOffset, byteOffset + elementSize));\n byteOffset += elementSize;\n }\n parser.parse(this.viewer, options, elements, sceneModel, metaModel, manifestCtx);\n }\n}\n\nfunction getBaseDirectory(filePath) {\n const pathArray = filePath.split('/');\n pathArray.pop(); // Remove the file name or the last segment of the path\n return pathArray.join('/') + '/';\n}\n\nexport {XKTLoaderPlugin}\n", @@ -32868,7 +33396,7 @@ "lineNumber": 1 }, { - "__docId__": 1750, + "__docId__": 1768, "kind": "variable", "name": "parsers", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js", @@ -32889,7 +33417,7 @@ "ignore": true }, { - "__docId__": 1751, + "__docId__": 1769, "kind": "function", "name": "getBaseDirectory", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js", @@ -32920,7 +33448,7 @@ "ignore": true }, { - "__docId__": 1752, + "__docId__": 1770, "kind": "class", "name": "XKTLoaderPlugin", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js", @@ -32944,7 +33472,7 @@ ] }, { - "__docId__": 1753, + "__docId__": 1771, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33083,7 +33611,7 @@ ] }, { - "__docId__": 1754, + "__docId__": 1772, "kind": "member", "name": "_maxGeometryBatchSize", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33101,7 +33629,7 @@ } }, { - "__docId__": 1762, + "__docId__": 1780, "kind": "get", "name": "supportedVersions", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33133,7 +33661,7 @@ } }, { - "__docId__": 1763, + "__docId__": 1781, "kind": "get", "name": "textureTranscoder", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33154,7 +33682,7 @@ } }, { - "__docId__": 1764, + "__docId__": 1782, "kind": "set", "name": "textureTranscoder", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33175,7 +33703,7 @@ } }, { - "__docId__": 1765, + "__docId__": 1783, "kind": "member", "name": "_textureTranscoder", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33193,7 +33721,7 @@ } }, { - "__docId__": 1766, + "__docId__": 1784, "kind": "get", "name": "dataSource", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33214,7 +33742,7 @@ } }, { - "__docId__": 1767, + "__docId__": 1785, "kind": "set", "name": "dataSource", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33235,7 +33763,7 @@ } }, { - "__docId__": 1768, + "__docId__": 1786, "kind": "member", "name": "_dataSource", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33253,7 +33781,7 @@ } }, { - "__docId__": 1769, + "__docId__": 1787, "kind": "get", "name": "objectDefaults", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33274,7 +33802,7 @@ } }, { - "__docId__": 1770, + "__docId__": 1788, "kind": "set", "name": "objectDefaults", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33295,7 +33823,7 @@ } }, { - "__docId__": 1771, + "__docId__": 1789, "kind": "member", "name": "_objectDefaults", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33313,7 +33841,7 @@ } }, { - "__docId__": 1772, + "__docId__": 1790, "kind": "get", "name": "includeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33334,7 +33862,7 @@ } }, { - "__docId__": 1773, + "__docId__": 1791, "kind": "set", "name": "includeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33355,7 +33883,7 @@ } }, { - "__docId__": 1774, + "__docId__": 1792, "kind": "member", "name": "_includeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33373,7 +33901,7 @@ } }, { - "__docId__": 1775, + "__docId__": 1793, "kind": "get", "name": "excludeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33394,7 +33922,7 @@ } }, { - "__docId__": 1776, + "__docId__": 1794, "kind": "set", "name": "excludeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33415,7 +33943,7 @@ } }, { - "__docId__": 1777, + "__docId__": 1795, "kind": "member", "name": "_excludeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33433,7 +33961,7 @@ } }, { - "__docId__": 1778, + "__docId__": 1796, "kind": "get", "name": "excludeUnclassifiedObjects", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33454,7 +33982,7 @@ } }, { - "__docId__": 1779, + "__docId__": 1797, "kind": "set", "name": "excludeUnclassifiedObjects", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33475,7 +34003,7 @@ } }, { - "__docId__": 1780, + "__docId__": 1798, "kind": "member", "name": "_excludeUnclassifiedObjects", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33493,7 +34021,7 @@ } }, { - "__docId__": 1781, + "__docId__": 1799, "kind": "get", "name": "globalizeObjectIds", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33514,7 +34042,7 @@ } }, { - "__docId__": 1782, + "__docId__": 1800, "kind": "set", "name": "globalizeObjectIds", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33535,7 +34063,7 @@ } }, { - "__docId__": 1783, + "__docId__": 1801, "kind": "member", "name": "_globalizeObjectIds", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33553,7 +34081,7 @@ } }, { - "__docId__": 1784, + "__docId__": 1802, "kind": "get", "name": "reuseGeometries", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33574,7 +34102,7 @@ } }, { - "__docId__": 1785, + "__docId__": 1803, "kind": "set", "name": "reuseGeometries", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33595,7 +34123,7 @@ } }, { - "__docId__": 1786, + "__docId__": 1804, "kind": "member", "name": "_reuseGeometries", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33613,7 +34141,7 @@ } }, { - "__docId__": 1787, + "__docId__": 1805, "kind": "method", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -33965,7 +34493,7 @@ } }, { - "__docId__": 1788, + "__docId__": 1806, "kind": "method", "name": "_loadModel", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -34031,7 +34559,7 @@ "return": null }, { - "__docId__": 1789, + "__docId__": 1807, "kind": "method", "name": "_parseModel", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -34085,7 +34613,7 @@ "return": null }, { - "__docId__": 1790, + "__docId__": 1808, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/index.js", "content": "export * from \"./XKTDefaultDataSource.js\";\nexport * from \"./XKTLoaderPlugin.js\";", @@ -34096,7 +34624,7 @@ "lineNumber": 1 }, { - "__docId__": 1791, + "__docId__": 1809, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", "content": "/*\n\n Parser for .XKT Format V1\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n DEPRECATED\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\nimport {math} from \"../../../viewer/scene/math/math.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nconst decompressColor = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction extract(elements) {\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n meshPositions: elements[4],\n meshIndices: elements[5],\n meshEdgesIndices: elements[6],\n meshColors: elements[7],\n entityIDs: elements[8],\n entityMeshes: elements[9],\n entityIsObjects: elements[10],\n positionsDecodeMatrix: elements[11]\n };\n}\n\nfunction inflate(deflatedData) {\n return {\n positions: new Uint16Array(pako.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako.inflate(deflatedData.edgeIndices).buffer),\n meshPositions: new Uint32Array(pako.inflate(deflatedData.meshPositions).buffer),\n meshIndices: new Uint32Array(pako.inflate(deflatedData.meshIndices).buffer),\n meshEdgesIndices: new Uint32Array(pako.inflate(deflatedData.meshEdgesIndices).buffer),\n meshColors: new Uint8Array(pako.inflate(deflatedData.meshColors).buffer),\n entityIDs: pako.inflate(deflatedData.entityIDs, {to: 'string'}),\n entityMeshes: new Uint32Array(pako.inflate(deflatedData.entityMeshes).buffer),\n entityIsObjects: new Uint8Array(pako.inflate(deflatedData.entityIsObjects).buffer),\n positionsDecodeMatrix: new Float32Array(pako.inflate(deflatedData.positionsDecodeMatrix).buffer)\n };\n}\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n sceneModel.positionsCompression = \"precompressed\";\n sceneModel.normalsCompression = \"precompressed\";\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const meshPositions = inflatedData.meshPositions;\n const meshIndices = inflatedData.meshIndices;\n const meshEdgesIndices = inflatedData.meshEdgesIndices;\n const meshColors = inflatedData.meshColors;\n const entityIDs = JSON.parse(inflatedData.entityIDs);\n const entityMeshes = inflatedData.entityMeshes;\n const entityIsObjects = inflatedData.entityIsObjects;\n const numMeshes = meshPositions.length;\n const numEntities = entityMeshes.length;\n\n for (let i = 0; i < numEntities; i++) {\n\n const xktEntityId = entityIDs [i];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(sceneModel.id, xktEntityId) : xktEntityId;\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n }\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n const lastEntity = (i === numEntities - 1);\n const meshIds = [];\n\n for (let j = entityMeshes [i], jlen = lastEntity ? entityMeshes.length : entityMeshes [i + 1]; j < jlen; j++) {\n\n const lastMesh = (j === (numMeshes - 1));\n const meshId = entityId + \".mesh.\" + j;\n\n const color = decompressColor(meshColors.subarray((j * 4), (j * 4) + 3));\n const opacity = meshColors[(j * 4) + 3] / 255.0;\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positionsCompressed: positions.subarray(meshPositions [j], lastMesh ? positions.length : meshPositions [j + 1]),\n normalsCompressed: normals.subarray(meshPositions [j], lastMesh ? positions.length : meshPositions [j + 1]),\n indices: indices.subarray(meshIndices [j], lastMesh ? indices.length : meshIndices [j + 1]),\n edgeIndices: edgeIndices.subarray(meshEdgesIndices [j], lastMesh ? edgeIndices.length : meshEdgesIndices [j + 1]),\n positionsDecodeMatrix: inflatedData.positionsDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n }\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: (entityIsObjects [i] === 1),\n meshIds: meshIds\n }));\n }\n}\n\n/** @private */\nconst ParserV1 = {\n version: 1,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV1};", @@ -34107,7 +34635,7 @@ "lineNumber": 1 }, { - "__docId__": 1792, + "__docId__": 1810, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -34128,7 +34656,7 @@ "ignore": true }, { - "__docId__": 1793, + "__docId__": 1811, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -34149,7 +34677,7 @@ "ignore": true }, { - "__docId__": 1794, + "__docId__": 1812, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -34180,7 +34708,7 @@ "ignore": true }, { - "__docId__": 1795, + "__docId__": 1813, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -34211,7 +34739,7 @@ "ignore": true }, { - "__docId__": 1796, + "__docId__": 1814, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -34268,7 +34796,7 @@ "ignore": true }, { - "__docId__": 1797, + "__docId__": 1815, "kind": "variable", "name": "ParserV1", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -34288,7 +34816,7 @@ } }, { - "__docId__": 1798, + "__docId__": 1816, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", "content": "/*\n Parser for .XKT Format V10\n*/\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\nimport {math} from \"../../../viewer/scene/math/math.js\";\nimport {geometryCompressionUtils} from \"../../../viewer/scene/math/geometryCompressionUtils.js\";\nimport {JPEGMediaType, PNGMediaType} from \"../../../viewer/scene/constants/constants.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nconst tempVec4a = math.vec4();\nconst tempVec4b = math.vec4();\n\nconst NUM_TEXTURE_ATTRIBUTES = 9;\n\nfunction extract(elements) {\n\n let i = 0;\n\n return {\n metadata: elements[i++],\n textureData: elements[i++],\n eachTextureDataPortion: elements[i++],\n eachTextureAttributes: elements[i++],\n positions: elements[i++],\n normals: elements[i++],\n colors: elements[i++],\n uvs: elements[i++],\n indices: elements[i++],\n edgeIndices: elements[i++],\n eachTextureSetTextures: elements[i++],\n matrices: elements[i++],\n reusedGeometriesDecodeMatrix: elements[i++],\n eachGeometryPrimitiveType: elements[i++],\n eachGeometryPositionsPortion: elements[i++],\n eachGeometryNormalsPortion: elements[i++],\n eachGeometryColorsPortion: elements[i++],\n eachGeometryUVsPortion: elements[i++],\n eachGeometryIndicesPortion: elements[i++],\n eachGeometryEdgeIndicesPortion: elements[i++],\n eachMeshGeometriesPortion: elements[i++],\n eachMeshMatricesPortion: elements[i++],\n eachMeshTextureSet: elements[i++],\n eachMeshMaterialAttributes: elements[i++],\n eachEntityId: elements[i++],\n eachEntityMeshesPortion: elements[i++],\n eachTileAABB: elements[i++],\n eachTileEntitiesPortion: elements[i++]\n };\n}\n\nfunction inflate(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako.inflate(array, options).buffer;\n }\n\n return {\n metadata: JSON.parse(pako.inflate(deflatedData.metadata, {to: 'string'})),\n textureData: new Uint8Array(inflate(deflatedData.textureData)), // <<----------------------------- ??? ZIPPing to blame?\n eachTextureDataPortion: new Uint32Array(inflate(deflatedData.eachTextureDataPortion)),\n eachTextureAttributes: new Uint16Array(inflate(deflatedData.eachTextureAttributes)),\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n colors: new Uint8Array(inflate(deflatedData.colors)),\n uvs: new Float32Array(inflate(deflatedData.uvs)),\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n eachTextureSetTextures: new Int32Array(inflate(deflatedData.eachTextureSetTextures)),\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n reusedGeometriesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedGeometriesDecodeMatrix)),\n eachGeometryPrimitiveType: new Uint8Array(inflate(deflatedData.eachGeometryPrimitiveType)),\n eachGeometryPositionsPortion: new Uint32Array(inflate(deflatedData.eachGeometryPositionsPortion)),\n eachGeometryNormalsPortion: new Uint32Array(inflate(deflatedData.eachGeometryNormalsPortion)),\n eachGeometryColorsPortion: new Uint32Array(inflate(deflatedData.eachGeometryColorsPortion)),\n eachGeometryUVsPortion: new Uint32Array(inflate(deflatedData.eachGeometryUVsPortion)),\n eachGeometryIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryIndicesPortion)),\n eachGeometryEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryEdgeIndicesPortion)),\n eachMeshGeometriesPortion: new Uint32Array(inflate(deflatedData.eachMeshGeometriesPortion)),\n eachMeshMatricesPortion: new Uint32Array(inflate(deflatedData.eachMeshMatricesPortion)),\n eachMeshTextureSet: new Int32Array(inflate(deflatedData.eachMeshTextureSet)), // Can be -1\n eachMeshMaterialAttributes: new Uint8Array(inflate(deflatedData.eachMeshMaterialAttributes)),\n eachEntityId: JSON.parse(pako.inflate(deflatedData.eachEntityId, {to: 'string'})),\n eachEntityMeshesPortion: new Uint32Array(inflate(deflatedData.eachEntityMeshesPortion)),\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion)),\n };\n}\n\nconst decompressColor = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nconst imagDataToImage = (function () {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n return function (imagedata) {\n canvas.width = imagedata.width;\n canvas.height = imagedata.height;\n context.putImageData(imagedata, 0, 0);\n return canvas.toDataURL();\n };\n})();\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n const metadata = inflatedData.metadata;\n const textureData = inflatedData.textureData;\n const eachTextureDataPortion = inflatedData.eachTextureDataPortion;\n const eachTextureAttributes = inflatedData.eachTextureAttributes;\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const colors = inflatedData.colors;\n const uvs = inflatedData.uvs;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const eachTextureSetTextures = inflatedData.eachTextureSetTextures;\n const matrices = inflatedData.matrices;\n const reusedGeometriesDecodeMatrix = inflatedData.reusedGeometriesDecodeMatrix;\n const eachGeometryPrimitiveType = inflatedData.eachGeometryPrimitiveType;\n const eachGeometryPositionsPortion = inflatedData.eachGeometryPositionsPortion;\n const eachGeometryNormalsPortion = inflatedData.eachGeometryNormalsPortion;\n const eachGeometryColorsPortion = inflatedData.eachGeometryColorsPortion;\n const eachGeometryUVsPortion = inflatedData.eachGeometryUVsPortion;\n const eachGeometryIndicesPortion = inflatedData.eachGeometryIndicesPortion;\n const eachGeometryEdgeIndicesPortion = inflatedData.eachGeometryEdgeIndicesPortion;\n const eachMeshGeometriesPortion = inflatedData.eachMeshGeometriesPortion;\n const eachMeshMatricesPortion = inflatedData.eachMeshMatricesPortion;\n const eachMeshTextureSet = inflatedData.eachMeshTextureSet;\n const eachMeshMaterialAttributes = inflatedData.eachMeshMaterialAttributes;\n const eachEntityId = inflatedData.eachEntityId;\n const eachEntityMeshesPortion = inflatedData.eachEntityMeshesPortion;\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numTextures = eachTextureDataPortion.length;\n const numTextureSets = eachTextureSetTextures.length / 5;\n const numGeometries = eachGeometryPositionsPortion.length;\n const numMeshes = eachMeshGeometriesPortion.length;\n const numEntities = eachEntityMeshesPortion.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n if (metaModel) {\n metaModel.loadData(metadata, {\n includeTypes: options.includeTypes,\n excludeTypes: options.excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds\n }); // Can be empty\n }\n\n // Create textures\n\n for (let textureIndex = 0; textureIndex < numTextures; textureIndex++) {\n const atLastTexture = (textureIndex === (numTextures - 1));\n const textureDataPortionStart = eachTextureDataPortion[textureIndex];\n const textureDataPortionEnd = atLastTexture ? textureData.length : (eachTextureDataPortion[textureIndex + 1]);\n\n const textureDataPortionSize = textureDataPortionEnd - textureDataPortionStart;\n const textureDataPortionExists = (textureDataPortionSize > 0);\n\n const textureAttrBaseIdx = (textureIndex * NUM_TEXTURE_ATTRIBUTES);\n\n const compressed = (eachTextureAttributes[textureAttrBaseIdx + 0] === 1);\n const mediaType = eachTextureAttributes[textureAttrBaseIdx + 1];\n const width = eachTextureAttributes[textureAttrBaseIdx + 2];\n const height = eachTextureAttributes[textureAttrBaseIdx + 3];\n const minFilter = eachTextureAttributes[textureAttrBaseIdx + 4];\n const magFilter = eachTextureAttributes[textureAttrBaseIdx + 5]; // LinearFilter | NearestFilter\n const wrapS = eachTextureAttributes[textureAttrBaseIdx + 6]; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n const wrapT = eachTextureAttributes[textureAttrBaseIdx + 7]; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n const wrapR = eachTextureAttributes[textureAttrBaseIdx + 8]; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n\n if (textureDataPortionExists) {\n\n const imageDataSubarray = new Uint8Array(textureData.subarray(textureDataPortionStart, textureDataPortionEnd));\n const arrayBuffer = imageDataSubarray.buffer;\n const textureId = `${modelPartId}-texture-${textureIndex}`;\n\n if (compressed) {\n\n sceneModel.createTexture({\n id: textureId,\n buffers: [arrayBuffer],\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR\n });\n\n } else {\n\n const mimeType = mediaType === JPEGMediaType ? \"image/jpeg\" : (mediaType === PNGMediaType ? \"image/png\" : \"image/gif\");\n const blob = new Blob([arrayBuffer], {type: mimeType});\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n const img = document.createElement('img');\n img.src = imageUrl;\n\n sceneModel.createTexture({\n id: textureId,\n image: img,\n //mediaType,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR\n });\n }\n }\n }\n\n // Create texture sets\n\n for (let textureSetIndex = 0; textureSetIndex < numTextureSets; textureSetIndex++) {\n const eachTextureSetTexturesIndex = textureSetIndex * 5;\n const textureSetId = `${modelPartId}-textureSet-${textureSetIndex}`;\n const colorTextureIndex = eachTextureSetTextures[eachTextureSetTexturesIndex + 0];\n const metallicRoughnessTextureIndex = eachTextureSetTextures[eachTextureSetTexturesIndex + 1];\n const normalsTextureIndex = eachTextureSetTextures[eachTextureSetTexturesIndex + 2];\n const emissiveTextureIndex = eachTextureSetTextures[eachTextureSetTexturesIndex + 3];\n const occlusionTextureIndex = eachTextureSetTextures[eachTextureSetTexturesIndex + 4];\n sceneModel.createTextureSet({\n id: textureSetId,\n colorTextureId: colorTextureIndex >= 0 ? `${modelPartId}-texture-${colorTextureIndex}` : null,\n normalsTextureId: normalsTextureIndex >= 0 ? `${modelPartId}-texture-${normalsTextureIndex}` : null,\n metallicRoughnessTextureId: metallicRoughnessTextureIndex >= 0 ? `${modelPartId}-texture-${metallicRoughnessTextureIndex}` : null,\n emissiveTextureId: emissiveTextureIndex >= 0 ? `${modelPartId}-texture-${emissiveTextureIndex}` : null,\n occlusionTextureId: occlusionTextureIndex >= 0 ? `${modelPartId}-texture-${occlusionTextureIndex}` : null\n });\n }\n\n // Count instances of each geometry\n\n const geometryReuseCounts = new Uint32Array(numGeometries);\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n if (geometryReuseCounts[geometryIndex] !== undefined) {\n geometryReuseCounts[geometryIndex]++;\n } else {\n geometryReuseCounts[geometryIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n const geometryArraysCache = {};\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? (numEntities - 1) : (eachTileEntitiesPortion[tileIndex + 1] - 1);\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\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 const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreatedInTile = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex <= lastTileEntityIndex; tileEntityIndex++) {\n\n const xktEntityId = eachEntityId[tileEntityIndex];\n\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(sceneModel.id, xktEntityId) : xktEntityId;\n\n const finalTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === finalTileEntityIndex);\n const firstMeshIndex = eachEntityMeshesPortion [tileEntityIndex];\n const lastMeshIndex = atLastTileEntity ? (eachMeshGeometriesPortion.length - 1) : (eachEntityMeshesPortion[tileEntityIndex + 1] - 1);\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n if (props.metallic !== undefined && props.metallic !== null) {\n meshDefaults.metallic = props.metallic;\n }\n if (props.roughness !== undefined && props.roughness !== null) {\n meshDefaults.roughness = props.roughness;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's meshes\n\n for (let meshIndex = firstMeshIndex; meshIndex <= lastMeshIndex; meshIndex++) {\n\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n const geometryReuseCount = geometryReuseCounts[geometryIndex];\n const isReusedGeometry = (geometryReuseCount > 1);\n\n const atLastGeometry = (geometryIndex === (numGeometries - 1));\n\n const textureSetIndex = eachMeshTextureSet[meshIndex];\n\n const textureSetId = (textureSetIndex >= 0) ? `${modelPartId}-textureSet-${textureSetIndex}` : null;\n\n const meshColor = decompressColor(eachMeshMaterialAttributes.subarray((meshIndex * 6), (meshIndex * 6) + 3));\n const meshOpacity = eachMeshMaterialAttributes[(meshIndex * 6) + 3] / 255.0;\n const meshMetallic = eachMeshMaterialAttributes[(meshIndex * 6) + 4] / 255.0;\n const meshRoughness = eachMeshMaterialAttributes[(meshIndex * 6) + 5] / 255.0;\n\n const meshId = manifestCtx.getNextId();\n\n if (isReusedGeometry) {\n\n // Create mesh for multi-use geometry - create (or reuse) geometry, create mesh using that geometry\n\n const meshMatrixIndex = eachMeshMatricesPortion[meshIndex];\n const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16);\n\n const geometryId = `${modelPartId}-geometry.${tileIndex}.${geometryIndex}`; // These IDs are local to the SceneModel\n\n let geometryArrays = geometryArraysCache[geometryId];\n\n if (!geometryArrays) {\n geometryArrays = {\n batchThisMesh: (!options.reuseGeometries)\n };\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n let geometryValid = false;\n switch (primitiveType) {\n case 0:\n geometryArrays.primitiveName = \"solid\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryArrays.geometryUVs = uvs.subarray(eachGeometryUVsPortion [geometryIndex], atLastGeometry ? uvs.length : eachGeometryUVsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryArrays.geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n case 1:\n geometryArrays.primitiveName = \"surface\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryArrays.geometryUVs = uvs.subarray(eachGeometryUVsPortion [geometryIndex], atLastGeometry ? uvs.length : eachGeometryUVsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryArrays.geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n case 2:\n geometryArrays.primitiveName = \"points\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryColors = colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0);\n break;\n case 3:\n geometryArrays.primitiveName = \"lines\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n case 4:\n geometryArrays.primitiveName = \"lines\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = lineStripToLines(\n geometryArrays.geometryPositions,\n indices.subarray(eachGeometryIndicesPortion [geometryIndex],\n atLastGeometry\n ? indices.length\n : eachGeometryIndicesPortion [geometryIndex + 1]));\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (!geometryValid) {\n geometryArrays = null;\n }\n\n if (geometryArrays) {\n if (geometryReuseCount > 1000) { // TODO: Heuristic to force batching of instanced geometry beyond a certain reuse count (or budget)?\n // geometryArrays.batchThisMesh = true;\n }\n if (geometryArrays.geometryPositions.length > 1000) { // TODO: Heuristic to force batching on instanced geometry above certain vertex size?\n // geometryArrays.batchThisMesh = true;\n }\n if (geometryArrays.batchThisMesh) {\n geometryArrays.decompressedPositions = new Float32Array(geometryArrays.geometryPositions.length);\n geometryArrays.transformedAndRecompressedPositions = new Uint16Array(geometryArrays.geometryPositions.length)\n const geometryPositions = geometryArrays.geometryPositions;\n const decompressedPositions = geometryArrays.decompressedPositions;\n for (let i = 0, len = geometryPositions.length; i < len; i += 3) {\n decompressedPositions[i + 0] = geometryPositions[i + 0] * reusedGeometriesDecodeMatrix[0] + reusedGeometriesDecodeMatrix[12];\n decompressedPositions[i + 1] = geometryPositions[i + 1] * reusedGeometriesDecodeMatrix[5] + reusedGeometriesDecodeMatrix[13];\n decompressedPositions[i + 2] = geometryPositions[i + 2] * reusedGeometriesDecodeMatrix[10] + reusedGeometriesDecodeMatrix[14];\n }\n geometryArrays.geometryPositions = null;\n geometryArraysCache[geometryId] = geometryArrays;\n }\n }\n }\n\n if (geometryArrays) {\n\n if (geometryArrays.batchThisMesh) {\n\n const decompressedPositions = geometryArrays.decompressedPositions;\n const transformedAndRecompressedPositions = geometryArrays.transformedAndRecompressedPositions;\n\n for (let i = 0, len = decompressedPositions.length; i < len; i += 3) {\n tempVec4a[0] = decompressedPositions[i + 0];\n tempVec4a[1] = decompressedPositions[i + 1];\n tempVec4a[2] = decompressedPositions[i + 2];\n tempVec4a[3] = 1;\n math.transformVec4(meshMatrix, tempVec4a, tempVec4b);\n geometryCompressionUtils.compressPosition(tempVec4b, rtcAABB, tempVec4a)\n transformedAndRecompressedPositions[i + 0] = tempVec4a[0];\n transformedAndRecompressedPositions[i + 1] = tempVec4a[1];\n transformedAndRecompressedPositions[i + 2] = tempVec4a[2];\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n textureSetId,\n origin: tileCenter,\n primitive: geometryArrays.primitiveName,\n positionsCompressed: transformedAndRecompressedPositions,\n normalsCompressed: geometryArrays.geometryNormals,\n uv: geometryArrays.geometryUVs,\n colorsCompressed: geometryArrays.geometryColors,\n indices: geometryArrays.geometryIndices,\n edgeIndices: geometryArrays.geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n if (!geometryCreatedInTile[geometryId]) {\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: geometryArrays.primitiveName,\n positionsCompressed: geometryArrays.geometryPositions,\n normalsCompressed: geometryArrays.geometryNormals,\n uv: geometryArrays.geometryUVs,\n colorsCompressed: geometryArrays.geometryColors,\n indices: geometryArrays.geometryIndices,\n edgeIndices: geometryArrays.geometryEdgeIndices,\n positionsDecodeMatrix: reusedGeometriesDecodeMatrix\n });\n\n geometryCreatedInTile[geometryId] = true;\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId,\n textureSetId,\n matrix: meshMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity,\n origin: tileCenter\n }));\n\n meshIds.push(meshId);\n }\n }\n\n } else { // Do not reuse geometry\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryUVs;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n let geometryValid = false;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryUVs = uvs.subarray(eachGeometryUVsPortion [geometryIndex], atLastGeometry ? uvs.length : eachGeometryUVsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryUVs = uvs.subarray(eachGeometryUVsPortion [geometryIndex], atLastGeometry ? uvs.length : eachGeometryUVsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0);\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 4:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = lineStripToLines(\n geometryPositions,\n indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry\n ? indices.length\n : eachGeometryIndicesPortion [geometryIndex + 1]));\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (geometryValid) {\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n textureSetId,\n origin: tileCenter,\n primitive: primitiveName,\n positionsCompressed: geometryPositions,\n normalsCompressed: geometryNormals,\n uv: geometryUVs && geometryUVs.length > 0 ? geometryUVs : null,\n colorsCompressed: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n }\n\n if (meshIds.length > 0) {\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\nfunction lineStripToLines(positions, indices) {\n const linesIndices = [];\n if (indices.length > 1) {\n for (let i = 0, len = indices.length - 1; i < len; i++) {\n linesIndices.push(indices[i]);\n linesIndices.push(indices[i + 1]);\n }\n } else if (positions.length > 1) {\n for (let i = 0, len = (positions.length / 3) - 1; i < len; i++) {\n linesIndices.push(i);\n linesIndices.push(i + 1);\n }\n }\n return linesIndices;\n}\n\n/** @private */\nconst ParserV10 = {\n version: 10,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV10};", @@ -34299,7 +34827,7 @@ "lineNumber": 1 }, { - "__docId__": 1799, + "__docId__": 1817, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34320,7 +34848,7 @@ "ignore": true }, { - "__docId__": 1800, + "__docId__": 1818, "kind": "variable", "name": "tempVec4a", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34341,7 +34869,7 @@ "ignore": true }, { - "__docId__": 1801, + "__docId__": 1819, "kind": "variable", "name": "tempVec4b", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34362,7 +34890,7 @@ "ignore": true }, { - "__docId__": 1802, + "__docId__": 1820, "kind": "variable", "name": "NUM_TEXTURE_ATTRIBUTES", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34383,7 +34911,7 @@ "ignore": true }, { - "__docId__": 1803, + "__docId__": 1821, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34414,7 +34942,7 @@ "ignore": true }, { - "__docId__": 1804, + "__docId__": 1822, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34445,7 +34973,7 @@ "ignore": true }, { - "__docId__": 1805, + "__docId__": 1823, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34466,7 +34994,7 @@ "ignore": true }, { - "__docId__": 1806, + "__docId__": 1824, "kind": "variable", "name": "imagDataToImage", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34487,7 +35015,7 @@ "ignore": true }, { - "__docId__": 1807, + "__docId__": 1825, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34544,7 +35072,7 @@ "ignore": true }, { - "__docId__": 1808, + "__docId__": 1826, "kind": "function", "name": "lineStripToLines", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34581,7 +35109,7 @@ "ignore": true }, { - "__docId__": 1809, + "__docId__": 1827, "kind": "variable", "name": "ParserV10", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV10.js", @@ -34601,7 +35129,7 @@ } }, { - "__docId__": 1810, + "__docId__": 1828, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", "content": "/*\n\nParser for .XKT Format V2\n\nDEPRECATED\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\nimport {math} from \"../../../viewer/scene/math/math.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nfunction extract(elements) {\n return {\n\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n\n meshPositions: elements[4],\n meshIndices: elements[5],\n meshEdgesIndices: elements[6],\n meshColors: elements[7],\n\n entityIDs: elements[8],\n entityMeshes: elements[9],\n entityIsObjects: elements[10],\n\n positionsDecodeMatrix: elements[11],\n\n entityMeshIds: elements[12],\n entityMatrices: elements[13],\n entityUsesInstancing: elements[14]\n };\n}\n\nfunction inflate(deflatedData) {\n return {\n positions: new Uint16Array(pako.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako.inflate(deflatedData.edgeIndices).buffer),\n\n meshPositions: new Uint32Array(pako.inflate(deflatedData.meshPositions).buffer),\n meshIndices: new Uint32Array(pako.inflate(deflatedData.meshIndices).buffer),\n meshEdgesIndices: new Uint32Array(pako.inflate(deflatedData.meshEdgesIndices).buffer),\n meshColors: new Uint8Array(pako.inflate(deflatedData.meshColors).buffer),\n\n entityIDs: pako.inflate(deflatedData.entityIDs, {to: 'string'}),\n entityMeshes: new Uint32Array(pako.inflate(deflatedData.entityMeshes).buffer),\n entityIsObjects: new Uint8Array(pako.inflate(deflatedData.entityIsObjects).buffer),\n\n positionsDecodeMatrix: new Float32Array(pako.inflate(deflatedData.positionsDecodeMatrix).buffer),\n\n entityMeshIds: new Uint32Array(pako.inflate(deflatedData.entityMeshIds).buffer),\n entityMatrices: new Float32Array(pako.inflate(deflatedData.entityMatrices).buffer),\n entityUsesInstancing: new Uint8Array(pako.inflate(deflatedData.entityUsesInstancing).buffer)\n };\n}\n\nconst decompressColor = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n sceneModel.positionsCompression = \"precompressed\";\n sceneModel.normalsCompression = \"precompressed\";\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const meshPositions = inflatedData.meshPositions;\n const meshIndices = inflatedData.meshIndices;\n const meshEdgesIndices = inflatedData.meshEdgesIndices;\n const meshColors = inflatedData.meshColors;\n const entityIDs = JSON.parse(inflatedData.entityIDs);\n const entityMeshes = inflatedData.entityMeshes;\n const entityIsObjects = inflatedData.entityIsObjects;\n const entityMeshIds = inflatedData.entityMeshIds;\n const entityMatrices = inflatedData.entityMatrices;\n const entityUsesInstancing = inflatedData.entityUsesInstancing;\n\n const numMeshes = meshPositions.length;\n const numEntities = entityMeshes.length;\n\n const alreadyCreatedGeometries = {};\n\n for (let i = 0; i < numEntities; i++) {\n\n const xktEntityId = entityIDs [i];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(sceneModel.id, xktEntityId) : xktEntityId;\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n const entityMatrix = entityMatrices.subarray((i * 16), (i * 16) + 16);\n\n if (metaObject) {\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n }\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n const lastEntity = (i === numEntities - 1);\n\n const meshIds = [];\n\n for (let j = entityMeshes [i], jlen = lastEntity ? entityMeshIds.length : entityMeshes [i + 1]; j < jlen; j++) {\n\n const jj = entityMeshIds [j];\n\n const lastMesh = (jj === (numMeshes - 1));\n const meshId = manifestCtx.getNextId();\n\n const color = decompressColor(meshColors.subarray((jj * 4), (jj * 4) + 3));\n const opacity = meshColors[(jj * 4) + 3] / 255.0;\n\n const tmpPositions = positions.subarray(meshPositions [jj], lastMesh ? positions.length : meshPositions [jj + 1]);\n const tmpNormals = normals.subarray(meshPositions [jj], lastMesh ? positions.length : meshPositions [jj + 1]);\n const tmpIndices = indices.subarray(meshIndices [jj], lastMesh ? indices.length : meshIndices [jj + 1]);\n const tmpEdgeIndices = edgeIndices.subarray(meshEdgesIndices [jj], lastMesh ? edgeIndices.length : meshEdgesIndices [jj + 1]);\n\n if (entityUsesInstancing [i] === 1) {\n\n const geometryId = `${modelPartId}.geometry.${meshId}.${jj}`;\n\n if (!(geometryId in alreadyCreatedGeometries)) {\n\n sceneModel.createGeometry({\n id: geometryId,\n positionsCompressed: tmpPositions,\n normalsCompressed: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n primitive: \"triangles\",\n positionsDecodeMatrix: inflatedData.positionsDecodeMatrix,\n });\n\n alreadyCreatedGeometries [geometryId] = true;\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n color: color,\n opacity: opacity,\n matrix: entityMatrix,\n geometryId,\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positionsCompressed: tmpPositions,\n normalsCompressed: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n positionsDecodeMatrix: inflatedData.positionsDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n if (meshIds.length) {\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: (entityIsObjects [i] === 1),\n meshIds: meshIds\n }));\n }\n }\n}\n\n/** @private */\nconst ParserV2 = {\n version: 2,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV2};", @@ -34612,7 +35140,7 @@ "lineNumber": 1 }, { - "__docId__": 1811, + "__docId__": 1829, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -34633,7 +35161,7 @@ "ignore": true }, { - "__docId__": 1812, + "__docId__": 1830, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -34664,7 +35192,7 @@ "ignore": true }, { - "__docId__": 1813, + "__docId__": 1831, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -34695,7 +35223,7 @@ "ignore": true }, { - "__docId__": 1814, + "__docId__": 1832, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -34716,7 +35244,7 @@ "ignore": true }, { - "__docId__": 1815, + "__docId__": 1833, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -34773,7 +35301,7 @@ "ignore": true }, { - "__docId__": 1816, + "__docId__": 1834, "kind": "variable", "name": "ParserV2", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -34793,7 +35321,7 @@ } }, { - "__docId__": 1817, + "__docId__": 1835, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", "content": "/*\n\nParser for .XKT Format V3\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\nimport {math} from \"../../../viewer/scene/math/math.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nfunction extract(elements) {\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n meshPositions: elements[4],\n meshIndices: elements[5],\n meshEdgesIndices: elements[6],\n meshColors: elements[7],\n entityIDs: elements[8],\n entityMeshes: elements[9],\n entityIsObjects: elements[10],\n instancedPositionsDecodeMatrix: elements[11],\n batchedPositionsDecodeMatrix: elements[12],\n entityMeshIds: elements[13],\n entityMatrices: elements[14],\n entityUsesInstancing: elements[15]\n };\n}\n\nfunction inflate(deflatedData) {\n return {\n positions: new Uint16Array(pako.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako.inflate(deflatedData.edgeIndices).buffer),\n meshPositions: new Uint32Array(pako.inflate(deflatedData.meshPositions).buffer),\n meshIndices: new Uint32Array(pako.inflate(deflatedData.meshIndices).buffer),\n meshEdgesIndices: new Uint32Array(pako.inflate(deflatedData.meshEdgesIndices).buffer),\n meshColors: new Uint8Array(pako.inflate(deflatedData.meshColors).buffer),\n entityIDs: pako.inflate(deflatedData.entityIDs, {to: 'string'}),\n entityMeshes: new Uint32Array(pako.inflate(deflatedData.entityMeshes).buffer),\n entityIsObjects: new Uint8Array(pako.inflate(deflatedData.entityIsObjects).buffer),\n instancedPositionsDecodeMatrix: new Float32Array(pako.inflate(deflatedData.instancedPositionsDecodeMatrix).buffer),\n batchedPositionsDecodeMatrix: new Float32Array(pako.inflate(deflatedData.batchedPositionsDecodeMatrix).buffer),\n entityMeshIds: new Uint32Array(pako.inflate(deflatedData.entityMeshIds).buffer),\n entityMatrices: new Float32Array(pako.inflate(deflatedData.entityMatrices).buffer),\n entityUsesInstancing: new Uint8Array(pako.inflate(deflatedData.entityUsesInstancing).buffer)\n };\n}\n\nconst decompressColor = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n sceneModel.positionsCompression = \"precompressed\";\n sceneModel.normalsCompression = \"precompressed\";\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const meshPositions = inflatedData.meshPositions;\n const meshIndices = inflatedData.meshIndices;\n const meshEdgesIndices = inflatedData.meshEdgesIndices;\n const meshColors = inflatedData.meshColors;\n const entityIDs = JSON.parse(inflatedData.entityIDs);\n const entityMeshes = inflatedData.entityMeshes;\n const entityIsObjects = inflatedData.entityIsObjects;\n const entityMeshIds = inflatedData.entityMeshIds;\n const entityMatrices = inflatedData.entityMatrices;\n const entityUsesInstancing = inflatedData.entityUsesInstancing;\n\n const numMeshes = meshPositions.length;\n const numEntities = entityMeshes.length;\n\n const _alreadyCreatedGeometries = {};\n\n for (let i = 0; i < numEntities; i++) {\n\n const xktEntityId = entityIDs [i];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(sceneModel.id, xktEntityId) : xktEntityId;\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n const entityMatrix = entityMatrices.subarray((i * 16), (i * 16) + 16);\n\n if (metaObject) {\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n }\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n const lastEntity = (i === numEntities - 1);\n\n const meshIds = [];\n\n for (let j = entityMeshes [i], jlen = lastEntity ? entityMeshIds.length : entityMeshes [i + 1]; j < jlen; j++) {\n var jj = entityMeshIds [j];\n\n const lastMesh = (jj === (numMeshes - 1));\n const meshId = `${modelPartId}.${entityId}.mesh.${jj}`;\n\n const color = decompressColor(meshColors.subarray((jj * 4), (jj * 4) + 3));\n const opacity = meshColors[(jj * 4) + 3] / 255.0;\n\n var tmpPositions = positions.subarray(meshPositions [jj], lastMesh ? positions.length : meshPositions [jj + 1]);\n var tmpNormals = normals.subarray(meshPositions [jj], lastMesh ? positions.length : meshPositions [jj + 1]);\n var tmpIndices = indices.subarray(meshIndices [jj], lastMesh ? indices.length : meshIndices [jj + 1]);\n var tmpEdgeIndices = edgeIndices.subarray(meshEdgesIndices [jj], lastMesh ? edgeIndices.length : meshEdgesIndices [jj + 1]);\n\n if (entityUsesInstancing [i] === 1) {\n\n const geometryId = `${modelPartId}.geometry.${meshId}.${jj}`;\n\n if (!(geometryId in _alreadyCreatedGeometries)) {\n\n sceneModel.createGeometry({\n id: geometryId,\n positionsCompressed: tmpPositions,\n normalsCompressed: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n primitive: \"triangles\",\n positionsDecodeMatrix: inflatedData.instancedPositionsDecodeMatrix\n });\n\n _alreadyCreatedGeometries [geometryId] = true;\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n color: color,\n opacity: opacity,\n matrix: entityMatrix,\n geometryId,\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positionsCompressed: tmpPositions,\n normalsCompressed: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n positionsDecodeMatrix: inflatedData.batchedPositionsDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n if (meshIds.length) {\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: (entityIsObjects [i] === 1),\n meshIds: meshIds\n }));\n }\n }\n}\n\n/** @private */\nconst ParserV3 = {\n version: 3,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV3};", @@ -34804,7 +35332,7 @@ "lineNumber": 1 }, { - "__docId__": 1818, + "__docId__": 1836, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -34825,7 +35353,7 @@ "ignore": true }, { - "__docId__": 1819, + "__docId__": 1837, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -34856,7 +35384,7 @@ "ignore": true }, { - "__docId__": 1820, + "__docId__": 1838, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -34887,7 +35415,7 @@ "ignore": true }, { - "__docId__": 1821, + "__docId__": 1839, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -34908,7 +35436,7 @@ "ignore": true }, { - "__docId__": 1822, + "__docId__": 1840, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -34965,7 +35493,7 @@ "ignore": true }, { - "__docId__": 1823, + "__docId__": 1841, "kind": "variable", "name": "ParserV3", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -34985,7 +35513,7 @@ } }, { - "__docId__": 1824, + "__docId__": 1842, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", "content": "/*\n\nParser for .XKT Format V4\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nfunction extract(elements) {\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n decodeMatrices: elements[4],\n matrices: elements[5],\n eachPrimitivePositionsAndNormalsPortion: elements[6],\n eachPrimitiveIndicesPortion: elements[7],\n eachPrimitiveEdgeIndicesPortion: elements[8],\n eachPrimitiveDecodeMatricesPortion: elements[9],\n eachPrimitiveColor: elements[10],\n primitiveInstances: elements[11],\n eachEntityId: elements[12],\n eachEntityPrimitiveInstancesPortion: elements[13],\n eachEntityMatricesPortion: elements[14],\n eachEntityMatrix: elements[15]\n };\n}\n\nfunction inflate(deflatedData) {\n return {\n positions: new Uint16Array(pako.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako.inflate(deflatedData.edgeIndices).buffer),\n decodeMatrices: new Float32Array(pako.inflate(deflatedData.decodeMatrices).buffer),\n matrices: new Float32Array(pako.inflate(deflatedData.matrices).buffer),\n eachPrimitivePositionsAndNormalsPortion: new Uint32Array(pako.inflate(deflatedData.eachPrimitivePositionsAndNormalsPortion).buffer),\n eachPrimitiveIndicesPortion: new Uint32Array(pako.inflate(deflatedData.eachPrimitiveIndicesPortion).buffer),\n eachPrimitiveEdgeIndicesPortion: new Uint32Array(pako.inflate(deflatedData.eachPrimitiveEdgeIndicesPortion).buffer),\n eachPrimitiveDecodeMatricesPortion: new Uint32Array(pako.inflate(deflatedData.eachPrimitiveDecodeMatricesPortion).buffer),\n eachPrimitiveColor: new Uint8Array(pako.inflate(deflatedData.eachPrimitiveColor).buffer),\n primitiveInstances: new Uint32Array(pako.inflate(deflatedData.primitiveInstances).buffer),\n eachEntityId: pako.inflate(deflatedData.eachEntityId, {to: 'string'}),\n eachEntityPrimitiveInstancesPortion: new Uint32Array(pako.inflate(deflatedData.eachEntityPrimitiveInstancesPortion).buffer),\n eachEntityMatricesPortion: new Uint32Array(pako.inflate(deflatedData.eachEntityMatricesPortion).buffer)\n };\n}\n\nconst decompressColor = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n sceneModel.positionsCompression = \"precompressed\";\n sceneModel.normalsCompression = \"precompressed\";\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const decodeMatrices = inflatedData.decodeMatrices;\n const matrices = inflatedData.matrices;\n\n const eachPrimitivePositionsAndNormalsPortion = inflatedData.eachPrimitivePositionsAndNormalsPortion;\n const eachPrimitiveIndicesPortion = inflatedData.eachPrimitiveIndicesPortion;\n const eachPrimitiveEdgeIndicesPortion = inflatedData.eachPrimitiveEdgeIndicesPortion;\n const eachPrimitiveDecodeMatricesPortion = inflatedData.eachPrimitiveDecodeMatricesPortion;\n const eachPrimitiveColor = inflatedData.eachPrimitiveColor;\n\n const primitiveInstances = inflatedData.primitiveInstances;\n\n const eachEntityId = JSON.parse(inflatedData.eachEntityId);\n const eachEntityPrimitiveInstancesPortion = inflatedData.eachEntityPrimitiveInstancesPortion;\n const eachEntityMatricesPortion = inflatedData.eachEntityMatricesPortion;\n\n const numPrimitives = eachPrimitivePositionsAndNormalsPortion.length;\n const numPrimitiveInstances = primitiveInstances.length;\n const primitiveInstanceCounts = new Uint8Array(numPrimitives); // For each mesh, how many times it is instanced\n const orderedPrimitiveIndexes = new Uint32Array(numPrimitives); // For each mesh, its index sorted into runs that share the same decode matrix\n\n const numEntities = eachEntityId.length;\n\n // Get lookup that orders primitives into runs that share the same decode matrices;\n // this is used to create meshes in batches that use the same decode matrix\n\n for (let primitiveIndex = 0; primitiveIndex < numPrimitives; primitiveIndex++) {\n orderedPrimitiveIndexes[primitiveIndex] = primitiveIndex;\n }\n\n orderedPrimitiveIndexes.sort((i1, i2) => {\n if (eachPrimitiveDecodeMatricesPortion[i1] < eachPrimitiveDecodeMatricesPortion[i2]) {\n return -1;\n }\n if (eachPrimitiveDecodeMatricesPortion[i1] > eachPrimitiveDecodeMatricesPortion[i2]) {\n return 1;\n }\n return 0;\n });\n\n // Count instances of each primitive\n\n for (let primitiveInstanceIndex = 0; primitiveInstanceIndex < numPrimitiveInstances; primitiveInstanceIndex++) {\n const primitiveIndex = primitiveInstances[primitiveInstanceIndex];\n primitiveInstanceCounts[primitiveIndex]++;\n }\n\n // Map batched primitives to the entities that will use them\n\n const batchedPrimitiveEntityIndexes = {};\n\n for (let entityIndex = 0; entityIndex < numEntities; entityIndex++) {\n\n const lastEntityIndex = (numEntities - 1);\n const atLastEntity = (entityIndex === lastEntityIndex);\n const firstEntityPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [entityIndex];\n const lastEntityPrimitiveInstanceIndex = atLastEntity ? eachEntityPrimitiveInstancesPortion[lastEntityIndex] : eachEntityPrimitiveInstancesPortion[entityIndex + 1];\n\n for (let primitiveInstancesIndex = firstEntityPrimitiveInstanceIndex; primitiveInstancesIndex < lastEntityPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n if (!isInstancedPrimitive) {\n batchedPrimitiveEntityIndexes[primitiveIndex] = entityIndex;\n }\n }\n }\n\n var countGeometries = 0;\n\n // Create 1) geometries for instanced primitives, and 2) meshes for batched primitives. We create all the\n // batched meshes now, before we create entities, because we're creating the batched meshes in runs that share\n // the same decode matrices. Each run of meshes with the same decode matrix will end up in the same\n // BatchingLayer; the SceneModel#createMesh() method starts a new BatchingLayer each time the decode\n // matrix has changed since the last invocation of that method, hence why we need to order batched meshes\n // in runs like this.\n\n for (let primitiveIndex = 0; primitiveIndex < numPrimitives; primitiveIndex++) {\n\n const orderedPrimitiveIndex = orderedPrimitiveIndexes[primitiveIndex];\n\n const atLastPrimitive = (orderedPrimitiveIndex === (numPrimitives - 1));\n\n const primitiveInstanceCount = primitiveInstanceCounts[orderedPrimitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n const color = decompressColor(eachPrimitiveColor.subarray((orderedPrimitiveIndex * 4), (orderedPrimitiveIndex * 4) + 3));\n const opacity = eachPrimitiveColor[(orderedPrimitiveIndex * 4) + 3] / 255.0;\n\n const primitivePositions = positions.subarray(eachPrimitivePositionsAndNormalsPortion [orderedPrimitiveIndex], atLastPrimitive ? positions.length : eachPrimitivePositionsAndNormalsPortion [orderedPrimitiveIndex + 1]);\n const primitiveNormals = normals.subarray(eachPrimitivePositionsAndNormalsPortion [orderedPrimitiveIndex], atLastPrimitive ? normals.length : eachPrimitivePositionsAndNormalsPortion [orderedPrimitiveIndex + 1]);\n const primitiveIndices = indices.subarray(eachPrimitiveIndicesPortion [orderedPrimitiveIndex], atLastPrimitive ? indices.length : eachPrimitiveIndicesPortion [orderedPrimitiveIndex + 1]);\n const primitiveEdgeIndices = edgeIndices.subarray(eachPrimitiveEdgeIndicesPortion [orderedPrimitiveIndex], atLastPrimitive ? edgeIndices.length : eachPrimitiveEdgeIndicesPortion [orderedPrimitiveIndex + 1]);\n const primitiveDecodeMatrix = decodeMatrices.subarray(eachPrimitiveDecodeMatricesPortion [orderedPrimitiveIndex], eachPrimitiveDecodeMatricesPortion [orderedPrimitiveIndex] + 16);\n\n if (isInstancedPrimitive) {\n\n // Primitive instanced by more than one entity, and has positions in Model-space\n\n const geometryId = `${modelPartId}-geometry.${orderedPrimitiveIndex}`; // These IDs are local to the SceneModel\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"triangles\",\n positionsCompressed: primitivePositions,\n normalsCompressed: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: primitiveDecodeMatrix\n });\n\n countGeometries++;\n\n } else {\n\n // Primitive is used only by one entity, and has positions pre-transformed into World-space\n\n const meshId = `${modelPartId}-${orderedPrimitiveIndex}`;\n\n const entityIndex = batchedPrimitiveEntityIndexes[orderedPrimitiveIndex];\n const entityId = eachEntityId[entityIndex];\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positionsCompressed: primitivePositions,\n normalsCompressed: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: primitiveDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n }\n }\n\n let countInstances = 0;\n\n for (let entityIndex = 0; entityIndex < numEntities; entityIndex++) {\n\n const lastEntityIndex = (numEntities - 1);\n const atLastEntity = (entityIndex === lastEntityIndex);\n const entityId = eachEntityId[entityIndex];\n const firstEntityPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [entityIndex];\n const lastEntityPrimitiveInstanceIndex = atLastEntity ? eachEntityPrimitiveInstancesPortion[lastEntityIndex] : eachEntityPrimitiveInstancesPortion[entityIndex + 1];\n\n const meshIds = [];\n\n for (let primitiveInstancesIndex = firstEntityPrimitiveInstanceIndex; primitiveInstancesIndex < lastEntityPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n if (isInstancedPrimitive) {\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n const meshId = `${modelPartId}-instance.${countInstances++}`;\n const geometryId = `${modelPartId}-geometry.${primitiveIndex}`; // These IDs are local to the SceneModel\n\n const matricesIndex = (eachEntityMatricesPortion [entityIndex]) * 16;\n const matrix = matrices.subarray(matricesIndex, matricesIndex + 16);\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: matrix\n }));\n\n meshIds.push(meshId);\n\n } else {\n const meshId = `${modelPartId}-${primitiveIndex}`;\n meshIds.push(primitiveIndex);\n }\n }\n\n if (meshIds.length > 0) {\n\n const entityDefaults = {}; // TODO: get from lookup from entity IDs\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true, ///////////////// TODO: If metaobject exists\n meshIds: meshIds\n }));\n }\n }\n}\n\n/** @private */\nconst ParserV4 = {\n version: 4,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV4};", @@ -34996,7 +35524,7 @@ "lineNumber": 1 }, { - "__docId__": 1825, + "__docId__": 1843, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -35017,7 +35545,7 @@ "ignore": true }, { - "__docId__": 1826, + "__docId__": 1844, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -35048,7 +35576,7 @@ "ignore": true }, { - "__docId__": 1827, + "__docId__": 1845, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -35079,7 +35607,7 @@ "ignore": true }, { - "__docId__": 1828, + "__docId__": 1846, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -35100,7 +35628,7 @@ "ignore": true }, { - "__docId__": 1829, + "__docId__": 1847, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -35157,7 +35685,7 @@ "ignore": true }, { - "__docId__": 1830, + "__docId__": 1848, "kind": "variable", "name": "ParserV4", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -35177,7 +35705,7 @@ } }, { - "__docId__": 1831, + "__docId__": 1849, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", "content": "/*\n\n Parser for .XKT Format V5\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nfunction extract(elements) {\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n matrices: elements[4],\n eachPrimitivePositionsAndNormalsPortion: elements[5],\n eachPrimitiveIndicesPortion: elements[6],\n eachPrimitiveEdgeIndicesPortion: elements[7],\n eachPrimitiveColor: elements[8],\n primitiveInstances: elements[9],\n eachEntityId: elements[10],\n eachEntityPrimitiveInstancesPortion: elements[11],\n eachEntityMatricesPortion: elements[12]\n };\n}\n\nfunction inflate(deflatedData) {\n return {\n positions: new Float32Array(pako.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako.inflate(deflatedData.edgeIndices).buffer),\n matrices: new Float32Array(pako.inflate(deflatedData.matrices).buffer),\n eachPrimitivePositionsAndNormalsPortion: new Uint32Array(pako.inflate(deflatedData.eachPrimitivePositionsAndNormalsPortion).buffer),\n eachPrimitiveIndicesPortion: new Uint32Array(pako.inflate(deflatedData.eachPrimitiveIndicesPortion).buffer),\n eachPrimitiveEdgeIndicesPortion: new Uint32Array(pako.inflate(deflatedData.eachPrimitiveEdgeIndicesPortion).buffer),\n eachPrimitiveColor: new Uint8Array(pako.inflate(deflatedData.eachPrimitiveColor).buffer),\n primitiveInstances: new Uint32Array(pako.inflate(deflatedData.primitiveInstances).buffer),\n eachEntityId: pako.inflate(deflatedData.eachEntityId, {to: 'string'}),\n eachEntityPrimitiveInstancesPortion: new Uint32Array(pako.inflate(deflatedData.eachEntityPrimitiveInstancesPortion).buffer),\n eachEntityMatricesPortion: new Uint32Array(pako.inflate(deflatedData.eachEntityMatricesPortion).buffer)\n };\n}\n\nconst decompressColor = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n sceneModel.positionsCompression = \"disabled\"; // Positions in XKT V4 are floats, which we never quantize, for precision with big models\n sceneModel.normalsCompression = \"precompressed\"; // Normals are oct-encoded though\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const matrices = inflatedData.matrices;\n\n const eachPrimitivePositionsAndNormalsPortion = inflatedData.eachPrimitivePositionsAndNormalsPortion;\n const eachPrimitiveIndicesPortion = inflatedData.eachPrimitiveIndicesPortion;\n const eachPrimitiveEdgeIndicesPortion = inflatedData.eachPrimitiveEdgeIndicesPortion;\n const eachPrimitiveColor = inflatedData.eachPrimitiveColor;\n\n const primitiveInstances = inflatedData.primitiveInstances;\n\n const eachEntityId = JSON.parse(inflatedData.eachEntityId);\n const eachEntityPrimitiveInstancesPortion = inflatedData.eachEntityPrimitiveInstancesPortion;\n const eachEntityMatricesPortion = inflatedData.eachEntityMatricesPortion;\n\n const numPrimitives = eachPrimitivePositionsAndNormalsPortion.length;\n const numPrimitiveInstances = primitiveInstances.length;\n const primitiveInstanceCounts = new Uint8Array(numPrimitives); // For each mesh, how many times it is instanced\n\n const numEntities = eachEntityId.length;\n\n // Count instances of each primitive\n\n for (let primitiveInstanceIndex = 0; primitiveInstanceIndex < numPrimitiveInstances; primitiveInstanceIndex++) {\n const primitiveIndex = primitiveInstances[primitiveInstanceIndex];\n primitiveInstanceCounts[primitiveIndex]++;\n }\n\n // Map batched primitives to the entities that will use them\n\n const batchedPrimitiveEntityIndexes = {};\n\n for (let entityIndex = 0; entityIndex < numEntities; entityIndex++) {\n\n const lastEntityIndex = (numEntities - 1);\n const atLastEntity = (entityIndex === lastEntityIndex);\n const firstEntityPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [entityIndex];\n const lastEntityPrimitiveInstanceIndex = atLastEntity ? eachEntityPrimitiveInstancesPortion[lastEntityIndex] : eachEntityPrimitiveInstancesPortion[entityIndex + 1];\n\n for (let primitiveInstancesIndex = firstEntityPrimitiveInstanceIndex; primitiveInstancesIndex < lastEntityPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n if (!isInstancedPrimitive) {\n batchedPrimitiveEntityIndexes[primitiveIndex] = entityIndex;\n }\n }\n }\n\n var countGeometries = 0;\n\n // Create geometries for instanced primitives and meshes for batched primitives.\n\n for (let primitiveIndex = 0; primitiveIndex < numPrimitives; primitiveIndex++) {\n\n const atLastPrimitive = (primitiveIndex === (numPrimitives - 1));\n\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n const color = decompressColor(eachPrimitiveColor.subarray((primitiveIndex * 4), (primitiveIndex * 4) + 3));\n const opacity = eachPrimitiveColor[(primitiveIndex * 4) + 3] / 255.0;\n\n const primitivePositions = positions.subarray(eachPrimitivePositionsAndNormalsPortion [primitiveIndex], atLastPrimitive ? positions.length : eachPrimitivePositionsAndNormalsPortion [primitiveIndex + 1]);\n const primitiveNormals = normals.subarray(eachPrimitivePositionsAndNormalsPortion [primitiveIndex], atLastPrimitive ? normals.length : eachPrimitivePositionsAndNormalsPortion [primitiveIndex + 1]);\n const primitiveIndices = indices.subarray(eachPrimitiveIndicesPortion [primitiveIndex], atLastPrimitive ? indices.length : eachPrimitiveIndicesPortion [primitiveIndex + 1]);\n const primitiveEdgeIndices = edgeIndices.subarray(eachPrimitiveEdgeIndicesPortion [primitiveIndex], atLastPrimitive ? edgeIndices.length : eachPrimitiveEdgeIndicesPortion [primitiveIndex + 1]);\n\n if (isInstancedPrimitive) {\n\n // Primitive instanced by more than one entity, and has positions in Model-space\n\n const geometryId = `${modelPartId}-geometry.${primitiveIndex}`; // These IDs are local to the SceneModel\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"triangles\",\n positionsCompressed: primitivePositions,\n normalsCompressed: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices\n });\n\n countGeometries++;\n\n } else {\n\n // Primitive is used only by one entity, and has positions pre-transformed into World-space\n\n const meshId = primitiveIndex; // These IDs are local to the SceneModel\n\n const entityIndex = batchedPrimitiveEntityIndexes[primitiveIndex];\n const entityId = eachEntityId[entityIndex];\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positionsCompressed: primitivePositions,\n normalsCompressed: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n color: color,\n opacity: opacity\n }));\n }\n }\n\n let countInstances = 0;\n\n for (let entityIndex = 0; entityIndex < numEntities; entityIndex++) {\n\n const lastEntityIndex = (numEntities - 1);\n const atLastEntity = (entityIndex === lastEntityIndex);\n const entityId = eachEntityId[entityIndex];\n const firstEntityPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [entityIndex];\n const lastEntityPrimitiveInstanceIndex = atLastEntity ? eachEntityPrimitiveInstancesPortion[lastEntityIndex] : eachEntityPrimitiveInstancesPortion[entityIndex + 1];\n\n const meshIds = [];\n\n for (let primitiveInstancesIndex = firstEntityPrimitiveInstanceIndex; primitiveInstancesIndex < lastEntityPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n if (isInstancedPrimitive) {\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n const meshId = \"instance.\" + countInstances++;\n const geometryId = \"geometry\" + primitiveIndex;\n const matricesIndex = (eachEntityMatricesPortion [entityIndex]) * 16;\n const matrix = matrices.subarray(matricesIndex, matricesIndex + 16);\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: matrix\n }));\n\n meshIds.push(meshId);\n\n } else {\n meshIds.push(primitiveIndex);\n }\n }\n\n if (meshIds.length > 0) {\n\n const entityDefaults = {}; // TODO: get from lookup from entity IDs\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true, ///////////////// TODO: If metaobject exists\n meshIds: meshIds\n }));\n }\n }\n}\n\n/** @private */\nconst ParserV5 = {\n version: 5,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV5};", @@ -35188,7 +35716,7 @@ "lineNumber": 1 }, { - "__docId__": 1832, + "__docId__": 1850, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -35209,7 +35737,7 @@ "ignore": true }, { - "__docId__": 1833, + "__docId__": 1851, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -35240,7 +35768,7 @@ "ignore": true }, { - "__docId__": 1834, + "__docId__": 1852, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -35271,7 +35799,7 @@ "ignore": true }, { - "__docId__": 1835, + "__docId__": 1853, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -35292,7 +35820,7 @@ "ignore": true }, { - "__docId__": 1836, + "__docId__": 1854, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -35349,7 +35877,7 @@ "ignore": true }, { - "__docId__": 1837, + "__docId__": 1855, "kind": "variable", "name": "ParserV5", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -35369,7 +35897,7 @@ } }, { - "__docId__": 1838, + "__docId__": 1856, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", "content": "/*\n\n Parser for .XKT Format V6\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\nimport {math} from \"../../../viewer/scene/math/math.js\";\nimport {geometryCompressionUtils} from \"../../../viewer/scene/math/geometryCompressionUtils.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nfunction extract(elements) {\n\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n matrices: elements[4],\n reusedPrimitivesDecodeMatrix: elements[5],\n eachPrimitivePositionsAndNormalsPortion: elements[6],\n eachPrimitiveIndicesPortion: elements[7],\n eachPrimitiveEdgeIndicesPortion: elements[8],\n eachPrimitiveColorAndOpacity: elements[9],\n primitiveInstances: elements[10],\n eachEntityId: elements[11],\n eachEntityPrimitiveInstancesPortion: elements[12],\n eachEntityMatricesPortion: elements[13],\n eachTileAABB: elements[14],\n eachTileEntitiesPortion: elements[15]\n };\n}\n\nfunction inflate(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako.inflate(array, options).buffer;\n }\n\n return {\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n reusedPrimitivesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedPrimitivesDecodeMatrix)),\n eachPrimitivePositionsAndNormalsPortion: new Uint32Array(inflate(deflatedData.eachPrimitivePositionsAndNormalsPortion)),\n eachPrimitiveIndicesPortion: new Uint32Array(inflate(deflatedData.eachPrimitiveIndicesPortion)),\n eachPrimitiveEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachPrimitiveEdgeIndicesPortion)),\n eachPrimitiveColorAndOpacity: new Uint8Array(inflate(deflatedData.eachPrimitiveColorAndOpacity)),\n primitiveInstances: new Uint32Array(inflate(deflatedData.primitiveInstances)),\n eachEntityId: pako.inflate(deflatedData.eachEntityId, {to: 'string'}),\n eachEntityPrimitiveInstancesPortion: new Uint32Array(inflate(deflatedData.eachEntityPrimitiveInstancesPortion)),\n eachEntityMatricesPortion: new Uint32Array(inflate(deflatedData.eachEntityMatricesPortion)),\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion))\n };\n}\n\nconst decompressColor = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n\n const matrices = inflatedData.matrices;\n\n const reusedPrimitivesDecodeMatrix = inflatedData.reusedPrimitivesDecodeMatrix;\n\n const eachPrimitivePositionsAndNormalsPortion = inflatedData.eachPrimitivePositionsAndNormalsPortion;\n const eachPrimitiveIndicesPortion = inflatedData.eachPrimitiveIndicesPortion;\n const eachPrimitiveEdgeIndicesPortion = inflatedData.eachPrimitiveEdgeIndicesPortion;\n const eachPrimitiveColorAndOpacity = inflatedData.eachPrimitiveColorAndOpacity;\n\n const primitiveInstances = inflatedData.primitiveInstances;\n\n const eachEntityId = JSON.parse(inflatedData.eachEntityId);\n const eachEntityPrimitiveInstancesPortion = inflatedData.eachEntityPrimitiveInstancesPortion;\n const eachEntityMatricesPortion = inflatedData.eachEntityMatricesPortion;\n\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numPrimitives = eachPrimitivePositionsAndNormalsPortion.length;\n const numPrimitiveInstances = primitiveInstances.length;\n const numEntities = eachEntityId.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n // Count instances of each primitive\n\n const primitiveReuseCounts = new Uint32Array(numPrimitives);\n\n for (let primitiveInstanceIndex = 0; primitiveInstanceIndex < numPrimitiveInstances; primitiveInstanceIndex++) {\n const primitiveIndex = primitiveInstances[primitiveInstanceIndex];\n if (primitiveReuseCounts[primitiveIndex] !== undefined) {\n primitiveReuseCounts[primitiveIndex]++;\n } else {\n primitiveReuseCounts[primitiveIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? numEntities : eachTileEntitiesPortion[tileIndex + 1];\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\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 const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreated = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex < lastTileEntityIndex; tileEntityIndex++) {\n\n const xktEntityId = eachEntityId[tileEntityIndex];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(sceneModel.id, xktEntityId) : xktEntityId;\n\n const entityMatrixIndex = eachEntityMatricesPortion[tileEntityIndex];\n const entityMatrix = matrices.slice(entityMatrixIndex, entityMatrixIndex + 16);\n\n const lastTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === lastTileEntityIndex);\n const firstPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [tileEntityIndex];\n const lastPrimitiveInstanceIndex = atLastTileEntity ? primitiveInstances.length : eachEntityPrimitiveInstancesPortion[tileEntityIndex + 1];\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's primitive instances\n\n for (let primitiveInstancesIndex = firstPrimitiveInstanceIndex; primitiveInstancesIndex < lastPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveReuseCount = primitiveReuseCounts[primitiveIndex];\n const isReusedPrimitive = (primitiveReuseCount > 1);\n\n const atLastPrimitive = (primitiveIndex === (numPrimitives - 1));\n\n const primitivePositions = positions.subarray(eachPrimitivePositionsAndNormalsPortion [primitiveIndex], atLastPrimitive ? positions.length : eachPrimitivePositionsAndNormalsPortion [primitiveIndex + 1]);\n const primitiveNormals = normals.subarray(eachPrimitivePositionsAndNormalsPortion [primitiveIndex], atLastPrimitive ? normals.length : eachPrimitivePositionsAndNormalsPortion [primitiveIndex + 1]);\n const primitiveIndices = indices.subarray(eachPrimitiveIndicesPortion [primitiveIndex], atLastPrimitive ? indices.length : eachPrimitiveIndicesPortion [primitiveIndex + 1]);\n const primitiveEdgeIndices = edgeIndices.subarray(eachPrimitiveEdgeIndicesPortion [primitiveIndex], atLastPrimitive ? edgeIndices.length : eachPrimitiveEdgeIndicesPortion [primitiveIndex + 1]);\n\n const color = decompressColor(eachPrimitiveColorAndOpacity.subarray((primitiveIndex * 4), (primitiveIndex * 4) + 3));\n const opacity = eachPrimitiveColorAndOpacity[(primitiveIndex * 4) + 3] / 255.0;\n\n const meshId = manifestCtx.getNextId();\n\n if (isReusedPrimitive) {\n\n // Create mesh for multi-use primitive - create (or reuse) geometry, create mesh using that geometry\n\n const geometryId = `${modelPartId}-geometry.${tileIndex}.${primitiveIndex}`; // These IDs are local to the SceneModel\n\n if (!geometryCreated[geometryId]) {\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: \"triangles\",\n positionsCompressed: primitivePositions,\n // normalsCompressed: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: reusedPrimitivesDecodeMatrix\n });\n\n geometryCreated[geometryId] = true;\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n origin: tileCenter,\n matrix: entityMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n origin: tileCenter,\n primitive: \"triangles\",\n positionsCompressed: primitivePositions,\n normalsCompressed: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n if (meshIds.length > 0) {\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\n/** @private */\nconst ParserV6 = {\n version: 6,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV6};", @@ -35380,7 +35908,7 @@ "lineNumber": 1 }, { - "__docId__": 1839, + "__docId__": 1857, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -35401,7 +35929,7 @@ "ignore": true }, { - "__docId__": 1840, + "__docId__": 1858, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -35432,7 +35960,7 @@ "ignore": true }, { - "__docId__": 1841, + "__docId__": 1859, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -35463,7 +35991,7 @@ "ignore": true }, { - "__docId__": 1842, + "__docId__": 1860, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -35484,7 +36012,7 @@ "ignore": true }, { - "__docId__": 1843, + "__docId__": 1861, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -35541,7 +36069,7 @@ "ignore": true }, { - "__docId__": 1844, + "__docId__": 1862, "kind": "variable", "name": "ParserV6", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -35561,7 +36089,7 @@ } }, { - "__docId__": 1845, + "__docId__": 1863, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", "content": "/*\n\n Parser for .XKT Format V7\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\nimport {math} from \"../../../viewer/scene/math/math.js\";\nimport {geometryCompressionUtils} from \"../../../viewer/scene/math/geometryCompressionUtils.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nfunction extract(elements) {\n\n return {\n\n // Vertex attributes\n\n positions: elements[0],\n normals: elements[1],\n colors: elements[2],\n\n // Indices\n\n indices: elements[3],\n edgeIndices: elements[4],\n\n // Transform matrices\n\n matrices: elements[5],\n\n reusedGeometriesDecodeMatrix: elements[6],\n\n // Geometries\n\n eachGeometryPrimitiveType: elements[7],\n eachGeometryPositionsPortion: elements[8],\n eachGeometryNormalsPortion: elements[9],\n eachGeometryColorsPortion: elements[10],\n eachGeometryIndicesPortion: elements[11],\n eachGeometryEdgeIndicesPortion: elements[12],\n\n // Meshes are grouped in runs that are shared by the same entities\n\n eachMeshGeometriesPortion: elements[13],\n eachMeshMatricesPortion: elements[14],\n eachMeshMaterial: elements[15],\n\n // Entity elements in the following arrays are grouped in runs that are shared by the same tiles\n\n eachEntityId: elements[16],\n eachEntityMeshesPortion: elements[17],\n\n eachTileAABB: elements[18],\n eachTileEntitiesPortion: elements[19]\n };\n}\n\nfunction inflate(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako.inflate(array, options).buffer;\n }\n\n return {\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n colors: new Uint8Array(inflate(deflatedData.colors)),\n\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n\n reusedGeometriesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedGeometriesDecodeMatrix)),\n\n eachGeometryPrimitiveType: new Uint8Array(inflate(deflatedData.eachGeometryPrimitiveType)),\n eachGeometryPositionsPortion: new Uint32Array(inflate(deflatedData.eachGeometryPositionsPortion)),\n eachGeometryNormalsPortion: new Uint32Array(inflate(deflatedData.eachGeometryNormalsPortion)),\n eachGeometryColorsPortion: new Uint32Array(inflate(deflatedData.eachGeometryColorsPortion)),\n eachGeometryIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryIndicesPortion)),\n eachGeometryEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryEdgeIndicesPortion)),\n\n eachMeshGeometriesPortion: new Uint32Array(inflate(deflatedData.eachMeshGeometriesPortion)),\n eachMeshMatricesPortion: new Uint32Array(inflate(deflatedData.eachMeshMatricesPortion)),\n eachMeshMaterial: new Uint8Array(inflate(deflatedData.eachMeshMaterial)),\n\n eachEntityId: pako.inflate(deflatedData.eachEntityId, {to: 'string'}),\n eachEntityMeshesPortion: new Uint32Array(inflate(deflatedData.eachEntityMeshesPortion)),\n\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion)),\n };\n}\n\nconst decompressColor = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nfunction convertColorsRGBToRGBA(colorsRGB) {\n const colorsRGBA = [];\n for (let i = 0, len = colorsRGB.length; i < len; i+=3) {\n colorsRGBA.push(colorsRGB[i]);\n colorsRGBA.push(colorsRGB[i+1]);\n colorsRGBA.push(colorsRGB[i+2]);\n colorsRGBA.push(1.0);\n }\n return colorsRGBA;\n}\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const colors = inflatedData.colors;\n\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n\n const matrices = inflatedData.matrices;\n\n const reusedGeometriesDecodeMatrix = inflatedData.reusedGeometriesDecodeMatrix;\n\n const eachGeometryPrimitiveType = inflatedData.eachGeometryPrimitiveType;\n const eachGeometryPositionsPortion = inflatedData.eachGeometryPositionsPortion;\n const eachGeometryNormalsPortion = inflatedData.eachGeometryNormalsPortion;\n const eachGeometryColorsPortion = inflatedData.eachGeometryColorsPortion;\n const eachGeometryIndicesPortion = inflatedData.eachGeometryIndicesPortion;\n const eachGeometryEdgeIndicesPortion = inflatedData.eachGeometryEdgeIndicesPortion;\n\n const eachMeshGeometriesPortion = inflatedData.eachMeshGeometriesPortion;\n const eachMeshMatricesPortion = inflatedData.eachMeshMatricesPortion;\n const eachMeshMaterial = inflatedData.eachMeshMaterial;\n\n const eachEntityId = JSON.parse(inflatedData.eachEntityId);\n const eachEntityMeshesPortion = inflatedData.eachEntityMeshesPortion;\n\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numGeometries = eachGeometryPositionsPortion.length;\n const numMeshes = eachMeshGeometriesPortion.length;\n const numEntities = eachEntityId.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n let nextMeshId = 0;\n\n // Count instances of each geometry\n\n const geometryReuseCounts = new Uint32Array(numGeometries);\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n if (geometryReuseCounts[geometryIndex] !== undefined) {\n geometryReuseCounts[geometryIndex]++;\n } else {\n geometryReuseCounts[geometryIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? numEntities : eachTileEntitiesPortion[tileIndex + 1];\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\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 const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreated = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex < lastTileEntityIndex; tileEntityIndex++) {\n\n const xktEntityId = eachEntityId[tileEntityIndex];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(sceneModel.id, xktEntityId) : xktEntityId;\n\n const lastTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === lastTileEntityIndex);\n const firstMeshIndex = eachEntityMeshesPortion [tileEntityIndex];\n const lastMeshIndex = atLastTileEntity ? eachMeshGeometriesPortion.length : eachEntityMeshesPortion[tileEntityIndex + 1];\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n if (props.metallic !== undefined && props.metallic !== null) {\n meshDefaults.metallic = props.metallic;\n }\n if (props.roughness !== undefined && props.roughness !== null) {\n meshDefaults.roughness = props.roughness;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's meshes\n\n for (let meshIndex = firstMeshIndex; meshIndex < lastMeshIndex; meshIndex++) {\n\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n const geometryReuseCount = geometryReuseCounts[geometryIndex];\n const isReusedGeometry = (geometryReuseCount > 1);\n\n const atLastGeometry = (geometryIndex === (numGeometries - 1));\n\n const meshColor = decompressColor(eachMeshMaterial.subarray((meshIndex * 6), (meshIndex * 6) + 3));\n const meshOpacity = eachMeshMaterial[(meshIndex * 6) + 3] / 255.0;\n const meshMetallic = eachMeshMaterial[(meshIndex * 6) + 4] / 255.0;\n const meshRoughness = eachMeshMaterial[(meshIndex * 6) + 5] / 255.0;\n\n const meshId = manifestCtx.getNextId();\n\n if (isReusedGeometry) {\n\n // Create mesh for multi-use geometry - create (or reuse) geometry, create mesh using that geometry\n\n const meshMatrixIndex = eachMeshMatricesPortion[meshIndex];\n const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16);\n\n const geometryId = `${modelPartId}-geometry.${tileIndex}.${geometryIndex}`; // These IDs are local to the SceneModel\n\n if (!geometryCreated[geometryId]) {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = convertColorsRGBToRGBA(colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]));\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n break;\n default:\n continue;\n }\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: primitiveName,\n positionsCompressed: geometryPositions,\n normalsCompressed: geometryNormals,\n colors: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: reusedGeometriesDecodeMatrix\n });\n\n geometryCreated[geometryId] = true;\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n origin: tileCenter,\n matrix: meshMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = convertColorsRGBToRGBA(colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]));\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n break;\n default:\n continue;\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n origin: tileCenter,\n primitive: primitiveName,\n positionsCompressed: geometryPositions,\n normalsCompressed: geometryNormals,\n colors: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n if (meshIds.length > 0) {\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\n/** @private */\nconst ParserV7 = {\n version: 7,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV7};", @@ -35572,7 +36100,7 @@ "lineNumber": 1 }, { - "__docId__": 1846, + "__docId__": 1864, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -35593,7 +36121,7 @@ "ignore": true }, { - "__docId__": 1847, + "__docId__": 1865, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -35624,7 +36152,7 @@ "ignore": true }, { - "__docId__": 1848, + "__docId__": 1866, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -35655,7 +36183,7 @@ "ignore": true }, { - "__docId__": 1849, + "__docId__": 1867, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -35676,7 +36204,7 @@ "ignore": true }, { - "__docId__": 1850, + "__docId__": 1868, "kind": "function", "name": "convertColorsRGBToRGBA", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -35707,7 +36235,7 @@ "ignore": true }, { - "__docId__": 1851, + "__docId__": 1869, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -35764,7 +36292,7 @@ "ignore": true }, { - "__docId__": 1852, + "__docId__": 1870, "kind": "variable", "name": "ParserV7", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -35784,7 +36312,7 @@ } }, { - "__docId__": 1853, + "__docId__": 1871, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", "content": "/*\n\n Parser for .XKT Format V8\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\nimport {math} from \"../../../viewer/scene/math/math.js\";\nimport {geometryCompressionUtils} from \"../../../viewer/scene/math/geometryCompressionUtils.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nconst tempVec4a = math.vec4();\nconst tempVec4b = math.vec4();\n\nfunction extract(elements) {\n\n return {\n\n // Vertex attributes\n\n types: elements[0],\n eachMetaObjectId: elements[1],\n eachMetaObjectType: elements[2],\n eachMetaObjectName: elements[3],\n eachMetaObjectParent: elements[4],\n\n positions: elements[5],\n normals: elements[6],\n colors: elements[7],\n indices: elements[8],\n edgeIndices: elements[9],\n\n // Transform matrices\n\n matrices: elements[10],\n reusedGeometriesDecodeMatrix: elements[11],\n\n // Geometries\n\n eachGeometryPrimitiveType: elements[12],\n eachGeometryPositionsPortion: elements[13],\n eachGeometryNormalsPortion: elements[14],\n eachGeometryColorsPortion: elements[15],\n eachGeometryIndicesPortion: elements[16],\n eachGeometryEdgeIndicesPortion: elements[17],\n\n // Meshes are grouped in runs that are shared by the same entities\n\n eachMeshGeometriesPortion: elements[18],\n eachMeshMatricesPortion: elements[19],\n eachMeshMaterial: elements[20],\n\n // Entity elements in the following arrays are grouped in runs that are shared by the same tiles\n\n eachEntityMetaObject: elements[21],\n eachEntityMeshesPortion: elements[22],\n\n eachTileAABB: elements[23],\n eachTileEntitiesPortion: elements[24]\n };\n}\n\nfunction inflate(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako.inflate(array, options).buffer;\n }\n\n return {\n\n types: pako.inflate(deflatedData.types, {to: 'string'}),\n eachMetaObjectId: pako.inflate(deflatedData.eachMetaObjectId, {to: 'string'}),\n eachMetaObjectType: new Uint32Array(inflate(deflatedData.eachMetaObjectType)),\n eachMetaObjectName: pako.inflate(deflatedData.eachMetaObjectName, {to: 'string'}),\n eachMetaObjectParent: new Uint32Array(inflate(deflatedData.eachMetaObjectParent)),\n\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n colors: new Uint8Array(inflate(deflatedData.colors)),\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n reusedGeometriesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedGeometriesDecodeMatrix)),\n\n eachGeometryPrimitiveType: new Uint8Array(inflate(deflatedData.eachGeometryPrimitiveType)),\n eachGeometryPositionsPortion: new Uint32Array(inflate(deflatedData.eachGeometryPositionsPortion)),\n eachGeometryNormalsPortion: new Uint32Array(inflate(deflatedData.eachGeometryNormalsPortion)),\n eachGeometryColorsPortion: new Uint32Array(inflate(deflatedData.eachGeometryColorsPortion)),\n eachGeometryIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryIndicesPortion)),\n eachGeometryEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryEdgeIndicesPortion)),\n\n eachMeshGeometriesPortion: new Uint32Array(inflate(deflatedData.eachMeshGeometriesPortion)),\n eachMeshMatricesPortion: new Uint32Array(inflate(deflatedData.eachMeshMatricesPortion)),\n eachMeshMaterial: new Uint8Array(inflate(deflatedData.eachMeshMaterial)),\n\n eachEntityMetaObject: new Uint32Array(inflate(deflatedData.eachEntityMetaObject)),\n eachEntityMeshesPortion: new Uint32Array(inflate(deflatedData.eachEntityMeshesPortion)),\n\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion)),\n };\n}\n\nconst decompressColor = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nfunction convertColorsRGBToRGBA(colorsRGB) {\n const colorsRGBA = [];\n for (let i = 0, len = colorsRGB.length; i < len; i += 3) {\n colorsRGBA.push(colorsRGB[i]);\n colorsRGBA.push(colorsRGB[i + 1]);\n colorsRGBA.push(colorsRGB[i + 2]);\n colorsRGBA.push(1.0);\n }\n return colorsRGBA;\n}\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n const types = JSON.parse(inflatedData.types);\n const eachMetaObjectId = JSON.parse(inflatedData.eachMetaObjectId);\n const eachMetaObjectType = inflatedData.eachMetaObjectType;\n const eachMetaObjectName = JSON.parse(inflatedData.eachMetaObjectName);\n const eachMetaObjectParent = inflatedData.eachMetaObjectParent;\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const colors = inflatedData.colors;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n\n const matrices = inflatedData.matrices;\n const reusedGeometriesDecodeMatrix = inflatedData.reusedGeometriesDecodeMatrix;\n\n const eachGeometryPrimitiveType = inflatedData.eachGeometryPrimitiveType;\n const eachGeometryPositionsPortion = inflatedData.eachGeometryPositionsPortion;\n const eachGeometryNormalsPortion = inflatedData.eachGeometryNormalsPortion;\n const eachGeometryColorsPortion = inflatedData.eachGeometryColorsPortion;\n const eachGeometryIndicesPortion = inflatedData.eachGeometryIndicesPortion;\n const eachGeometryEdgeIndicesPortion = inflatedData.eachGeometryEdgeIndicesPortion;\n\n const eachMeshGeometriesPortion = inflatedData.eachMeshGeometriesPortion;\n const eachMeshMatricesPortion = inflatedData.eachMeshMatricesPortion;\n const eachMeshMaterial = inflatedData.eachMeshMaterial;\n\n const eachEntityMetaObject = inflatedData.eachEntityMetaObject;\n const eachEntityMeshesPortion = inflatedData.eachEntityMeshesPortion;\n\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numMetaObjects = eachMetaObjectId.length;\n const numGeometries = eachGeometryPositionsPortion.length;\n const numMeshes = eachMeshGeometriesPortion.length;\n const numEntities = eachEntityMetaObject.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n if (metaModel) {\n const metaModelData = {\n metaObjects: []\n };\n for (let metaObjectIndex = 0; metaObjectIndex < numMetaObjects; metaObjectIndex++) {\n const metaObjectId = eachMetaObjectId[metaObjectIndex];\n const typeIndex = eachMetaObjectType[metaObjectIndex];\n const metaObjectType = types[typeIndex] || \"default\";\n const metaObjectName = eachMetaObjectName[metaObjectIndex];\n const metaObjectParentIndex = eachMetaObjectParent[metaObjectIndex];\n const metaObjectParentId = (metaObjectParentIndex !== metaObjectIndex) ? eachMetaObjectId[metaObjectParentIndex] : null;\n metaModelData.metaObjects.push({\n id: metaObjectId,\n type: metaObjectType,\n name: metaObjectName,\n parent: metaObjectParentId\n });\n }\n metaModel.loadData(metaModelData, {\n includeTypes: options.includeTypes,\n excludeTypes: options.excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds\n });\n }\n\n // Count instances of each geometry\n\n const geometryReuseCounts = new Uint32Array(numGeometries);\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n if (geometryReuseCounts[geometryIndex] !== undefined) {\n geometryReuseCounts[geometryIndex]++;\n } else {\n geometryReuseCounts[geometryIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n const geometryArraysCache = {};\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? numEntities : eachTileEntitiesPortion[tileIndex + 1];\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\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 const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreatedInTile = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex < lastTileEntityIndex; tileEntityIndex++) {\n\n const xktMetaObjectIndex = eachEntityMetaObject[tileEntityIndex];\n const xktMetaObjectId = eachMetaObjectId[xktMetaObjectIndex];\n const xktEntityId = xktMetaObjectId;\n\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(sceneModel.id, xktEntityId) : xktEntityId;\n\n const lastTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === lastTileEntityIndex);\n const firstMeshIndex = eachEntityMeshesPortion [tileEntityIndex];\n const lastMeshIndex = atLastTileEntity ? eachMeshGeometriesPortion.length : eachEntityMeshesPortion[tileEntityIndex + 1];\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n if (props.metallic !== undefined && props.metallic !== null) {\n meshDefaults.metallic = props.metallic;\n }\n if (props.roughness !== undefined && props.roughness !== null) {\n meshDefaults.roughness = props.roughness;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's meshes\n\n for (let meshIndex = firstMeshIndex; meshIndex < lastMeshIndex; meshIndex++) {\n\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n const geometryReuseCount = geometryReuseCounts[geometryIndex];\n const isReusedGeometry = (geometryReuseCount > 1);\n\n const atLastGeometry = (geometryIndex === (numGeometries - 1));\n\n const meshColor = decompressColor(eachMeshMaterial.subarray((meshIndex * 6), (meshIndex * 6) + 3));\n const meshOpacity = eachMeshMaterial[(meshIndex * 6) + 3] / 255.0;\n const meshMetallic = eachMeshMaterial[(meshIndex * 6) + 4] / 255.0;\n const meshRoughness = eachMeshMaterial[(meshIndex * 6) + 5] / 255.0;\n\n const meshId = manifestCtx.getNextId();\n\n if (isReusedGeometry) {\n\n // Create mesh for multi-use geometry - create (or reuse) geometry, create mesh using that geometry\n\n const meshMatrixIndex = eachMeshMatricesPortion[meshIndex];\n const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16);\n\n const geometryId = `${modelPartId}-geometry.${tileIndex}.${geometryIndex}`; // These IDs are local to the SceneModel\n\n let geometryArrays = geometryArraysCache[geometryId];\n\n if (!geometryArrays) {\n\n geometryArrays = {\n batchThisMesh: (!options.reuseGeometries)\n };\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let geometryValid = false;\n\n switch (primitiveType) {\n case 0:\n geometryArrays.primitiveName = \"solid\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryArrays.geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n case 1:\n geometryArrays.primitiveName = \"surface\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryArrays.geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n case 2:\n geometryArrays.primitiveName = \"points\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryColors = convertColorsRGBToRGBA(colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]));\n geometryValid = (geometryArrays.geometryPositions.length > 0);\n break;\n case 3:\n geometryArrays.primitiveName = \"lines\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (!geometryValid) {\n geometryArrays = null;\n }\n\n if (geometryArrays) {\n if (geometryReuseCount > 1000) { // TODO: Heuristic to force batching of instanced geometry beyond a certain reuse count (or budget)?\n // geometryArrays.batchThisMesh = true;\n }\n if (geometryArrays.geometryPositions.length > 1000) { // TODO: Heuristic to force batching on instanced geometry above certain vertex size?\n // geometryArrays.batchThisMesh = true;\n }\n if (geometryArrays.batchThisMesh) {\n geometryArrays.decompressedPositions = new Float32Array(geometryArrays.geometryPositions.length);\n const geometryPositions = geometryArrays.geometryPositions;\n const decompressedPositions = geometryArrays.decompressedPositions;\n for (let i = 0, len = geometryPositions.length; i < len; i += 3) {\n decompressedPositions[i + 0] = geometryPositions[i + 0] * reusedGeometriesDecodeMatrix[0] + reusedGeometriesDecodeMatrix[12];\n decompressedPositions[i + 1] = geometryPositions[i + 1] * reusedGeometriesDecodeMatrix[5] + reusedGeometriesDecodeMatrix[13];\n decompressedPositions[i + 2] = geometryPositions[i + 2] * reusedGeometriesDecodeMatrix[10] + reusedGeometriesDecodeMatrix[14];\n }\n geometryArrays.geometryPositions = null;\n geometryArraysCache[geometryId] = geometryArrays;\n }\n }\n }\n\n if (geometryArrays) {\n\n if (geometryArrays.batchThisMesh) {\n\n const decompressedPositions = geometryArrays.decompressedPositions;\n const positions = new Uint16Array(decompressedPositions.length);\n for (let i = 0, len = decompressedPositions.length; i < len; i += 3) {\n tempVec4a[0] = decompressedPositions[i + 0];\n tempVec4a[1] = decompressedPositions[i + 1];\n tempVec4a[2] = decompressedPositions[i + 2];\n tempVec4a[3] = 1;\n math.transformVec4(meshMatrix, tempVec4a, tempVec4b);\n geometryCompressionUtils.compressPosition(tempVec4b, rtcAABB, tempVec4a)\n positions[i + 0] = tempVec4a[0];\n positions[i + 1] = tempVec4a[1];\n positions[i + 2] = tempVec4a[2];\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n origin: tileCenter,\n primitive: geometryArrays.primitiveName,\n positionsCompressed: positions,\n normalsCompressed: geometryArrays.geometryNormals,\n colorsCompressed: geometryArrays.geometryColors,\n indices: geometryArrays.geometryIndices,\n edgeIndices: geometryArrays.geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n if (!geometryCreatedInTile[geometryId]) {\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: geometryArrays.primitiveName,\n positionsCompressed: geometryArrays.geometryPositions,\n normalsCompressed: geometryArrays.geometryNormals,\n colorsCompressed: geometryArrays.geometryColors,\n indices: geometryArrays.geometryIndices,\n edgeIndices: geometryArrays.geometryEdgeIndices,\n positionsDecodeMatrix: reusedGeometriesDecodeMatrix\n });\n\n geometryCreatedInTile[geometryId] = true;\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n origin: tileCenter,\n matrix: meshMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n } else {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n let geometryValid = false;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = convertColorsRGBToRGBA(colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]));\n geometryValid = (geometryPositions.length > 0);\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (geometryValid) {\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n origin: tileCenter,\n primitive: primitiveName,\n positionsCompressed: geometryPositions,\n normalsCompressed: geometryNormals,\n colorsCompressed: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n }\n\n if (meshIds.length > 0) {\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\n/** @private */\nconst ParserV8 = {\n version: 8,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV8};", @@ -35795,7 +36323,7 @@ "lineNumber": 1 }, { - "__docId__": 1854, + "__docId__": 1872, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -35816,7 +36344,7 @@ "ignore": true }, { - "__docId__": 1855, + "__docId__": 1873, "kind": "variable", "name": "tempVec4a", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -35837,7 +36365,7 @@ "ignore": true }, { - "__docId__": 1856, + "__docId__": 1874, "kind": "variable", "name": "tempVec4b", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -35858,7 +36386,7 @@ "ignore": true }, { - "__docId__": 1857, + "__docId__": 1875, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -35889,7 +36417,7 @@ "ignore": true }, { - "__docId__": 1858, + "__docId__": 1876, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -35920,7 +36448,7 @@ "ignore": true }, { - "__docId__": 1859, + "__docId__": 1877, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -35941,7 +36469,7 @@ "ignore": true }, { - "__docId__": 1860, + "__docId__": 1878, "kind": "function", "name": "convertColorsRGBToRGBA", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -35972,7 +36500,7 @@ "ignore": true }, { - "__docId__": 1861, + "__docId__": 1879, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -36029,7 +36557,7 @@ "ignore": true }, { - "__docId__": 1862, + "__docId__": 1880, "kind": "variable", "name": "ParserV8", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV8.js", @@ -36049,7 +36577,7 @@ } }, { - "__docId__": 1863, + "__docId__": 1881, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", "content": "/*\n\n Parser for .XKT Format V9\n\n */\n\nimport {utils} from \"../../../viewer/scene/utils.js\";\nimport * as p from \"./lib/pako.js\";\nimport {math} from \"../../../viewer/scene/math/math.js\";\nimport {geometryCompressionUtils} from \"../../../viewer/scene/math/geometryCompressionUtils.js\";\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nconst tempVec4a = math.vec4();\nconst tempVec4b = math.vec4();\n\nfunction extract(elements) {\n\n return {\n\n // Metadata\n\n metadata: elements[0],\n\n positions: elements[1],\n normals: elements[2],\n colors: elements[3],\n indices: elements[4],\n edgeIndices: elements[5],\n\n // Transform matrices\n\n matrices: elements[6],\n reusedGeometriesDecodeMatrix: elements[7],\n\n // Geometries\n\n eachGeometryPrimitiveType: elements[8],\n eachGeometryPositionsPortion: elements[9],\n eachGeometryNormalsPortion: elements[10],\n eachGeometryColorsPortion: elements[11],\n eachGeometryIndicesPortion: elements[12],\n eachGeometryEdgeIndicesPortion: elements[13],\n\n // Meshes are grouped in runs that are shared by the same entities\n\n eachMeshGeometriesPortion: elements[14],\n eachMeshMatricesPortion: elements[15],\n eachMeshMaterial: elements[16],\n\n // Entity elements in the following arrays are grouped in runs that are shared by the same tiles\n\n eachEntityId: elements[17],\n eachEntityMeshesPortion: elements[18],\n\n eachTileAABB: elements[19],\n eachTileEntitiesPortion: elements[20]\n };\n}\n\nfunction inflate(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako.inflate(array, options).buffer;\n }\n\n return {\n\n metadata: JSON.parse(pako.inflate(deflatedData.metadata, {to: 'string'})),\n\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n colors: new Uint8Array(inflate(deflatedData.colors)),\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n reusedGeometriesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedGeometriesDecodeMatrix)),\n\n eachGeometryPrimitiveType: new Uint8Array(inflate(deflatedData.eachGeometryPrimitiveType)),\n eachGeometryPositionsPortion: new Uint32Array(inflate(deflatedData.eachGeometryPositionsPortion)),\n eachGeometryNormalsPortion: new Uint32Array(inflate(deflatedData.eachGeometryNormalsPortion)),\n eachGeometryColorsPortion: new Uint32Array(inflate(deflatedData.eachGeometryColorsPortion)),\n eachGeometryIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryIndicesPortion)),\n eachGeometryEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryEdgeIndicesPortion)),\n\n eachMeshGeometriesPortion: new Uint32Array(inflate(deflatedData.eachMeshGeometriesPortion)),\n eachMeshMatricesPortion: new Uint32Array(inflate(deflatedData.eachMeshMatricesPortion)),\n eachMeshMaterial: new Uint8Array(inflate(deflatedData.eachMeshMaterial)),\n\n eachEntityId: JSON.parse(pako.inflate(deflatedData.eachEntityId, {to: 'string'})),\n eachEntityMeshesPortion: new Uint32Array(inflate(deflatedData.eachEntityMeshesPortion)),\n\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion)),\n };\n}\n\nconst decompressColor = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nfunction load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx) {\n\n const modelPartId = manifestCtx.getNextId();\n\n const metadata = inflatedData.metadata;\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const colors = inflatedData.colors;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n\n const matrices = inflatedData.matrices;\n const reusedGeometriesDecodeMatrix = inflatedData.reusedGeometriesDecodeMatrix;\n\n const eachGeometryPrimitiveType = inflatedData.eachGeometryPrimitiveType;\n const eachGeometryPositionsPortion = inflatedData.eachGeometryPositionsPortion;\n const eachGeometryNormalsPortion = inflatedData.eachGeometryNormalsPortion;\n const eachGeometryColorsPortion = inflatedData.eachGeometryColorsPortion;\n const eachGeometryIndicesPortion = inflatedData.eachGeometryIndicesPortion;\n const eachGeometryEdgeIndicesPortion = inflatedData.eachGeometryEdgeIndicesPortion;\n\n const eachMeshGeometriesPortion = inflatedData.eachMeshGeometriesPortion;\n const eachMeshMatricesPortion = inflatedData.eachMeshMatricesPortion;\n const eachMeshMaterial = inflatedData.eachMeshMaterial;\n\n const eachEntityId = inflatedData.eachEntityId;\n const eachEntityMeshesPortion = inflatedData.eachEntityMeshesPortion;\n\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numGeometries = eachGeometryPositionsPortion.length;\n const numMeshes = eachMeshGeometriesPortion.length;\n const numEntities = eachEntityMeshesPortion.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n if (metaModel) {\n metaModel.loadData(metadata, {\n includeTypes: options.includeTypes,\n excludeTypes: options.excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds\n }); // Can be empty\n }\n\n // Count instances of each geometry\n\n const geometryReuseCounts = new Uint32Array(numGeometries);\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n if (geometryReuseCounts[geometryIndex] !== undefined) {\n geometryReuseCounts[geometryIndex]++;\n } else {\n geometryReuseCounts[geometryIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n const geometryArraysCache = {};\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? (numEntities - 1) : (eachTileEntitiesPortion[tileIndex + 1] - 1);\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\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 const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreatedInTile = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex <= lastTileEntityIndex; tileEntityIndex++) {\n\n const xktEntityId = eachEntityId[tileEntityIndex];\n\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(sceneModel.id, xktEntityId) : xktEntityId;\n\n const finalTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === finalTileEntityIndex);\n const firstMeshIndex = eachEntityMeshesPortion [tileEntityIndex];\n const lastMeshIndex = atLastTileEntity ? (eachMeshGeometriesPortion.length - 1) : (eachEntityMeshesPortion[tileEntityIndex + 1] - 1);\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n if (props.metallic !== undefined && props.metallic !== null) {\n meshDefaults.metallic = props.metallic;\n }\n if (props.roughness !== undefined && props.roughness !== null) {\n meshDefaults.roughness = props.roughness;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's meshes\n\n for (let meshIndex = firstMeshIndex; meshIndex <= lastMeshIndex; meshIndex++) {\n\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n const geometryReuseCount = geometryReuseCounts[geometryIndex];\n const isReusedGeometry = (geometryReuseCount > 1);\n\n const atLastGeometry = (geometryIndex === (numGeometries - 1));\n\n const meshColor = decompressColor(eachMeshMaterial.subarray((meshIndex * 6), (meshIndex * 6) + 3));\n const meshOpacity = eachMeshMaterial[(meshIndex * 6) + 3] / 255.0;\n const meshMetallic = eachMeshMaterial[(meshIndex * 6) + 4] / 255.0;\n const meshRoughness = eachMeshMaterial[(meshIndex * 6) + 5] / 255.0;\n\n const meshId = manifestCtx.getNextId();\n\n if (isReusedGeometry) {\n\n // Create mesh for multi-use geometry - create (or reuse) geometry, create mesh using that geometry\n\n const meshMatrixIndex = eachMeshMatricesPortion[meshIndex];\n const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16);\n\n const geometryId = `${modelPartId}-geometry.${tileIndex}.${geometryIndex}`; // These IDs are local to the SceneModel\n\n let geometryArrays = geometryArraysCache[geometryId];\n\n if (!geometryArrays) {\n geometryArrays = {\n batchThisMesh: (!options.reuseGeometries)\n };\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n let geometryValid = false;\n switch (primitiveType) {\n case 0:\n geometryArrays.primitiveName = \"solid\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryArrays.geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n case 1:\n geometryArrays.primitiveName = \"surface\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryArrays.geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n case 2:\n geometryArrays.primitiveName = \"points\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryColors = colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0);\n break;\n case 3:\n geometryArrays.primitiveName = \"lines\";\n geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (!geometryValid) {\n geometryArrays = null;\n }\n\n if (geometryArrays) {\n if (geometryReuseCount > 1000) { // TODO: Heuristic to force batching of instanced geometry beyond a certain reuse count (or budget)?\n // geometryArrays.batchThisMesh = true;\n }\n if (geometryArrays.geometryPositions.length > 1000) { // TODO: Heuristic to force batching on instanced geometry above certain vertex size?\n // geometryArrays.batchThisMesh = true;\n }\n if (geometryArrays.batchThisMesh) {\n geometryArrays.decompressedPositions = new Float32Array(geometryArrays.geometryPositions.length);\n geometryArrays.transformedAndRecompressedPositions = new Uint16Array(geometryArrays.geometryPositions.length)\n const geometryPositions = geometryArrays.geometryPositions;\n const decompressedPositions = geometryArrays.decompressedPositions;\n for (let i = 0, len = geometryPositions.length; i < len; i += 3) {\n decompressedPositions[i + 0] = geometryPositions[i + 0] * reusedGeometriesDecodeMatrix[0] + reusedGeometriesDecodeMatrix[12];\n decompressedPositions[i + 1] = geometryPositions[i + 1] * reusedGeometriesDecodeMatrix[5] + reusedGeometriesDecodeMatrix[13];\n decompressedPositions[i + 2] = geometryPositions[i + 2] * reusedGeometriesDecodeMatrix[10] + reusedGeometriesDecodeMatrix[14];\n }\n geometryArrays.geometryPositions = null;\n geometryArraysCache[geometryId] = geometryArrays;\n }\n }\n }\n\n if (geometryArrays) {\n\n if (geometryArrays.batchThisMesh) {\n\n const decompressedPositions = geometryArrays.decompressedPositions;\n const transformedAndRecompressedPositions = geometryArrays.transformedAndRecompressedPositions;\n\n for (let i = 0, len = decompressedPositions.length; i < len; i += 3) {\n tempVec4a[0] = decompressedPositions[i + 0];\n tempVec4a[1] = decompressedPositions[i + 1];\n tempVec4a[2] = decompressedPositions[i + 2];\n tempVec4a[3] = 1;\n math.transformVec4(meshMatrix, tempVec4a, tempVec4b);\n geometryCompressionUtils.compressPosition(tempVec4b, rtcAABB, tempVec4a)\n transformedAndRecompressedPositions[i + 0] = tempVec4a[0];\n transformedAndRecompressedPositions[i + 1] = tempVec4a[1];\n transformedAndRecompressedPositions[i + 2] = tempVec4a[2];\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n origin: tileCenter,\n primitive: geometryArrays.primitiveName,\n positionsCompressed: transformedAndRecompressedPositions,\n normalsCompressed: geometryArrays.geometryNormals,\n colorsCompressed: geometryArrays.geometryColors,\n indices: geometryArrays.geometryIndices,\n edgeIndices: geometryArrays.geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n if (!geometryCreatedInTile[geometryId]) {\n\n sceneModel.createGeometry({\n id: geometryId,\n primitive: geometryArrays.primitiveName,\n positionsCompressed: geometryArrays.geometryPositions,\n normalsCompressed: geometryArrays.geometryNormals,\n colorsCompressed: geometryArrays.geometryColors,\n indices: geometryArrays.geometryIndices,\n edgeIndices: geometryArrays.geometryEdgeIndices,\n positionsDecodeMatrix: reusedGeometriesDecodeMatrix\n });\n\n geometryCreatedInTile[geometryId] = true;\n }\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n origin: tileCenter,\n matrix: meshMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n } else {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n let geometryValid = false;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0);\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (geometryValid) {\n\n sceneModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n origin: tileCenter,\n primitive: primitiveName,\n positionsCompressed: geometryPositions,\n normalsCompressed: geometryNormals,\n colorsCompressed: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n }\n\n if (meshIds.length > 0) {\n\n sceneModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\n/** @private */\nconst ParserV9 = {\n version: 9,\n parse: function (viewer, options, elements, sceneModel, metaModel, manifestCtx) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, sceneModel, metaModel, manifestCtx);\n }\n};\n\nexport {ParserV9};", @@ -36060,7 +36588,7 @@ "lineNumber": 1 }, { - "__docId__": 1864, + "__docId__": 1882, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", @@ -36081,7 +36609,7 @@ "ignore": true }, { - "__docId__": 1865, + "__docId__": 1883, "kind": "variable", "name": "tempVec4a", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", @@ -36102,7 +36630,7 @@ "ignore": true }, { - "__docId__": 1866, + "__docId__": 1884, "kind": "variable", "name": "tempVec4b", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", @@ -36123,7 +36651,7 @@ "ignore": true }, { - "__docId__": 1867, + "__docId__": 1885, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", @@ -36154,7 +36682,7 @@ "ignore": true }, { - "__docId__": 1868, + "__docId__": 1886, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", @@ -36185,7 +36713,7 @@ "ignore": true }, { - "__docId__": 1869, + "__docId__": 1887, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", @@ -36206,7 +36734,7 @@ "ignore": true }, { - "__docId__": 1870, + "__docId__": 1888, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", @@ -36263,7 +36791,7 @@ "ignore": true }, { - "__docId__": 1871, + "__docId__": 1889, "kind": "variable", "name": "ParserV9", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV9.js", @@ -36283,7 +36811,7 @@ } }, { - "__docId__": 1872, + "__docId__": 1890, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/lib/pako.js", "content": "/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=\"undefined\"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){\"use strict\";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:\"pako deflate (from Nodeca project)\"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if(\"function\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if(\"function\"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a=\"\";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t=\"string\"==typeof e.dictionary?Gt(e.dictionary):\"[object ArrayBuffer]\"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,\"string\"==typeof t?a.input=Gt(t):\"[object ArrayBuffer]\"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg=\"invalid distance too far back\",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg=\"invalid distance too far back\",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg=\"incorrect header check\",a.mode=Le;break}if((15&h)!==Re){t.msg=\"unknown compression method\",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg=\"invalid window size\",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg=\"invalid block type\",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg=\"invalid stored block lengths\",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg=\"too many length or distance symbols\",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg=\"invalid code lengths set\",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg=\"invalid bit length repeat\",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg=\"invalid bit length repeat\",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg=\"invalid code -- missing end-of-block\",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg=\"invalid literal/lengths set\",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg=\"invalid distances set\",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg=\"invalid literal/length code\",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg=\"invalid distance code\",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg=\"invalid distance too far back\",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg=\"invalid distance too far back\",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:\"pako inflate (from Nodeca project)\"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:\"\"},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&(\"string\"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):\"[object ArrayBuffer]\"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,\"[object ArrayBuffer]\"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if(\"string\"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,\"__esModule\",{value:!0})}));", @@ -36294,7 +36822,7 @@ "lineNumber": 1 }, { - "__docId__": 1873, + "__docId__": 1891, "kind": "file", "name": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js", "content": "import {utils} from \"../../viewer/scene/utils.js\"\nimport {Node} from \"../../viewer/scene/nodes/Node.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {XML3DSceneGraphLoader} from \"./XML3DSceneGraphLoader.js\";\n\n/**\n * {@link Viewer} plugin that loads models from [3DXML](https://en.wikipedia.org/wiki/3DXML) files.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_3DXML_TreeView)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_3DXML_TreeView)]\n *\n * ## Overview\n *\n * * Currently supports 3DXML V4.2.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Can optionally load a {@link MetaModel} to classify the objects within the model, from which you can create a tree view using the {@link TreeViewPlugin}.\n *
    \n * Note that the name of this plugin is intentionally munged to \"XML3D\" because a JavaScript class name cannot begin with a numeral.\n *\n * An 3DXML model is a zip archive that bundles multiple XML files and assets. Internally, the XML3DLoaderPlugin uses the\n * [zip.js](https://gildas-lormeau.github.io/zip.js/) library to unzip them before loading. The zip.js library uses\n * [Web workers](https://www.w3.org/TR/workers/) for fast unzipping, so XML3DLoaderPlugin requires that we configure it\n * with a ````workerScriptsPath```` property specifying the directory where zip.js keeps its Web worker script. See\n * the example for how to do that.\n *\n * ## Usage\n *\n * In the example below, we'll use an XML3DLoaderPlugin to load a 3DXML model. When the model has loaded,\n * we'll use the {@link CameraFlightAnimation} to fly the {@link Camera} to look at boundary of the model. We'll\n * then get the model's {@link Entity} from the {@link Scene} and highlight the whole model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_3DXML_Widget)]\n *\n * ````javascript\n * // Create a xeokit Viewer\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Add an XML3DLoaderPlugin to the Viewer\n * var plugin = new XML3DLoaderPlugin(viewer, {\n * id: \"XML3DLoader\", // Default value\n * workerScriptsPath : \"../../src/plugins/XML3DLoader/zipjs/\" // Path to zip.js workers dir\n * });\n *\n * // Load the 3DXML model\n * var model = plugin.load({ // Model is an Entity\n * id: \"myModel\",\n * src: \"./models/xml3d/3dpreview.3dxml\",\n * scale: [0.1, 0.1, 0.1],\n * rotate: [90, 0, 0],\n * translate: [100,0,0],\n * edges: true\n * });\n *\n * // When the model has loaded, fit it to view\n * model.on(\"loaded\", function() {\n * viewer.cameraFlight.flyTo(model);\n * });\n *\n * // Update properties of the model via the entity\n * model.highlighted = true;\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n * ## Loading MetaModels\n *\n * We have the option to load a {@link MetaModel} that contains a hierarchy of {@link MetaObject}s that classifes the objects within\n * our 3DXML model.\n *\n * This is useful for building a tree view to navigate the objects, using {@link TreeViewPlugin}.\n *\n * Let's load the model again, this time creating a MetaModel:\n *\n * ````javascript\n * var model = plugin.load({\n * id: \"myModel\",\n * src: \"./models/xml3d/3dpreview.3dxml\",\n * scale: [0.1, 0.1, 0.1],\n * rotate: [90, 0, 0],\n * translate: [100,0,0],\n * edges: true,\n *\n * createMetaModel: true // <<-------- Create a MetaModel\n * });\n * ````\n *\n * The MetaModel can then be found on the {@link Viewer}'s {@link MetaScene}, using the model's ID:\n *\n * ````javascript\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"];\n * ````\n *\n * Now we can use {@link TreeViewPlugin} to create a tree view to navigate our model's objects:\n *\n * ````javascript\n * import {TreeViewPlugin} from \"xeokit-sdk.es.js\"\"xeokit-sdk.es.js\";\n *\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\")\n * });\n *\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * autoExpandDepth: 3, // Initially expand tree three storeys deep\n * hierarchy: \"containment\",\n * autoAddModels: false\n * });\n *\n * model.on(\"loaded\", () => {\n * treeView.addModel(model.id);\n * });\n * ````\n *\n * Note that only the TreeViewPlugin \"containment\" hierarchy makes sense for an XML3D model. A \"types\" hierarchy\n * does not make sense because XML3DLoaderPlugin will set each {@link MetaObject#type} to \"Default\", and \"storeys\"\n * does not make sense because that requires some of the MetaObject#type values to be \"IfcBuildingStorey\".\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_3DXML_TreeView)]\n *\n * ## Material Type\n *\n * Although 3DXML only supports Phong materials, XML3DLoaderPlugin is able to convert them to physically-based materials.\n *\n * The plugin supports three material types:\n *\n * | Material Type | Material Components Loaded | Description | Example |\n * |:--------:|:----:|:-----:|:-----:|\n * | \"PhongMaterial\" (default) | {@link PhongMaterial} | Non-physically-correct Blinn-Phong shading model | [Run example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_3DXML_materialType_Phong) |\n * | \"MetallicMaterial\" | {@link MetallicMaterial} | Physically-accurate specular-glossiness shading model | [Run example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_3DXML_materialType_Metallic) |\n * | \"SpecularMaterial\" | {@link SpecularMaterial} | Physically-accurate metallic-roughness shading model | [Run example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_3DXML_materialType_Specular) |\n *\n *
    \n * Let's load our model again, this time converting the 3DXML Blinn-Phong materials to {@link SpecularMaterial}s:\n *\n * ````javascript\n * var model = plugin.load({ // Model is an Entity\n * id: \"myModel\",\n * src: \"./models/xml3d/3dpreview.3dxml\",\n * materialtype: \"SpecularMaterial\": true\"\n * });\n * ````\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#loading_3DXML_materialType_Specular)]\n *\n * @class XML3DLoaderPlugin\n */\n\nclass XML3DLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"XML3DLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} cfg.workerScriptsPath Path to the directory that contains the\n * bundled [zip.js](https://gildas-lormeau.github.io/zip.js/) archive, which is a dependency of this plugin. This directory\n * contains the script that is used by zip.js to instantiate Web workers, which assist with unzipping the 3DXML, which is a ZIP archive.\n * @param {String} [cfg.materialType=\"PhongMaterial\"] What type of materials to create while loading: \"MetallicMaterial\" to create {@link MetallicMaterial}s, \"SpecularMaterial\" to create {@link SpecularMaterial}s or \"PhongMaterial\" to create {@link PhongMaterial}s. As it loads XML3D's Phong materials, the XMLLoaderPlugin will do its best approximate conversion of those to the specified workflow.\n * @param {Boolean} [cfg.createMetaModel=false] When true, will create a {@link MetaModel} for the model in {@link MetaScene#metaModels}.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"XML3DLoader\", viewer, cfg);\n\n if (!cfg.workerScriptsPath) {\n this.error(\"Config expected: workerScriptsPath\");\n return\n }\n\n this._workerScriptsPath = cfg.workerScriptsPath;\n\n /**\n * @private\n */\n this._loader = new XML3DSceneGraphLoader(this, cfg);\n\n /**\n * Supported 3DXML schema versions\n * @property supportedSchemas\n * @type {string[]}\n */\n this.supportedSchemas = this._loader.supportedSchemas;\n }\n\n /**\n * Loads a 3DXML model from a file into this XML3DLoaderPlugin's {@link Viewer}.\n *\n * Creates a tree of {@link Entity}s within the Viewer's {@link Scene} that represents the model.\n *\n * @param {*} params Loading parameters.\n * @param {String} params.id ID to assign to the model's root {@link Entity}, unique among all components in the Viewer's {@link Scene}.\n * @param {String} [params.src] Path to a 3DXML file.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the {@link Entity} with edges emphasized.\n * @param {Number[]} [params.position=[0,0,0]] The model's World-space 3D position.\n * @param {Number[]} [params.scale=[1,1,1]] The model's World-space scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's World-space rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [params.backfaces=false] When true, allows visible backfaces, wherever specified in the 3DXML. When false, ignores backfaces.\n * @param {Number} [params.edgeThreshold=20] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {String} [params.materialType=\"PhongMaterial\"] What type of materials to create while loading: \"MetallicMaterial\" to create {@link MetallicMaterial}s, \"SpecularMaterial\" to create {@link SpecularMaterial}s or \"PhongMaterial\" to create {@link PhongMaterial}s. As it loads XML3D's Phong materials, the XMLLoaderPlugin will do its best approximate conversion of those to the specified workflow.\n * @param {Boolean} [params.createMetaModel=false] When true, will create a {@link MetaModel} for the model in {@link MetaScene#metaModels}.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params = {}) {\n\n params.workerScriptsPath = this._workerScriptsPath;\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const modelNode = new Node(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n const src = params.src;\n\n if (!src) {\n this.error(\"load() param expected: src\");\n return modelNode; // Return new empty model\n }\n\n this._loader.load(this, modelNode, src, params);\n\n return modelNode;\n }\n}\n\nexport {XML3DLoaderPlugin}", @@ -36305,7 +36833,7 @@ "lineNumber": 1 }, { - "__docId__": 1874, + "__docId__": 1892, "kind": "class", "name": "XML3DLoaderPlugin", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js", @@ -36329,7 +36857,7 @@ ] }, { - "__docId__": 1875, + "__docId__": 1893, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -36416,7 +36944,7 @@ ] }, { - "__docId__": 1876, + "__docId__": 1894, "kind": "member", "name": "_workerScriptsPath", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -36434,7 +36962,7 @@ } }, { - "__docId__": 1877, + "__docId__": 1895, "kind": "member", "name": "_loader", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -36451,7 +36979,7 @@ } }, { - "__docId__": 1878, + "__docId__": 1896, "kind": "member", "name": "supportedSchemas", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -36482,7 +37010,7 @@ } }, { - "__docId__": 1879, + "__docId__": 1897, "kind": "method", "name": "load", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -36678,7 +37206,7 @@ } }, { - "__docId__": 1880, + "__docId__": 1898, "kind": "file", "name": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", "content": "import {Node} from \"../../viewer/scene/nodes/Node.js\";\nimport {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {PhongMaterial} from \"../../viewer/scene/materials/PhongMaterial.js\";\nimport {MetallicMaterial} from \"../../viewer/scene/materials/MetallicMaterial.js\";\nimport {SpecularMaterial} from \"../../viewer/scene/materials/SpecularMaterial.js\";\nimport {LambertMaterial} from \"../../viewer/scene/materials/LambertMaterial.js\";\nimport {math} from \"../../viewer/scene/math/math.js\";\n\nimport {zipLib} from \"./zipjs/zip.js\";\nimport {zipExt} from \"./zipjs/zip-ext.js\";\n\nconst zip = zipLib.zip;\nzipExt(zip);\n\nconst supportedSchemas = [\"4.2\"];\n\n/**\n * @private\n */\nclass XML3DSceneGraphLoader {\n\n constructor(plugin, cfg = {}) {\n\n /**\n * Supported 3DXML schema versions\n * @property supportedSchemas\n * @type {string[]}\n */\n this.supportedSchemas = supportedSchemas;\n\n this._xrayOpacity = 0.7;\n this._src = null;\n this._options = cfg;\n\n /**\n * Default viewpoint, containing eye, look and up vectors.\n * Only defined if found in the 3DXML file.\n * @property viewpoint\n * @type {Number[]}\n */\n this.viewpoint = null;\n\n if (!cfg.workerScriptsPath) {\n plugin.error(\"Config expected: workerScriptsPath\");\n return\n }\n zip.workerScriptsPath = cfg.workerScriptsPath;\n\n this.src = cfg.src;\n this.xrayOpacity = 0.7;\n this.displayEffect = cfg.displayEffect;\n this.createMetaModel = cfg.createMetaModel;\n }\n\n load(plugin, modelNode, src, options, ok, error) {\n\n switch (options.materialType) {\n case \"MetallicMaterial\":\n modelNode._defaultMaterial = new MetallicMaterial(modelNode, {\n baseColor: [1, 1, 1],\n metallic: 0.6,\n roughness: 0.6\n });\n break;\n\n case \"SpecularMaterial\":\n modelNode._defaultMaterial = new SpecularMaterial(modelNode, {\n diffuse: [1, 1, 1],\n specular: math.vec3([1.0, 1.0, 1.0]),\n glossiness: 0.5\n });\n break;\n\n default:\n modelNode._defaultMaterial = new PhongMaterial(modelNode, {\n reflectivity: 0.75,\n shiness: 100,\n diffuse: [1, 1, 1]\n });\n }\n\n modelNode._wireframeMaterial = new LambertMaterial(modelNode, {\n color: [0, 0, 0],\n lineWidth: 2\n });\n\n var spinner = modelNode.scene.canvas.spinner;\n spinner.processes++;\n\n load3DXML(plugin, modelNode, src, options, function () {\n spinner.processes--;\n if (ok) {\n ok();\n }\n modelNode.fire(\"loaded\", true, false);\n },\n function (msg) {\n spinner.processes--;\n modelNode.error(msg);\n if (error) {\n error(msg);\n }\n /**\n Fired whenever this XML3D fails to load the 3DXML file\n specified by {@link XML3D/src}.\n @event error\n @param msg {String} Description of the error\n */\n modelNode.fire(\"error\", msg);\n },\n function (err) {\n console.log(\"Error, Will Robinson: \" + err);\n });\n }\n}\n\nvar load3DXML = (function () {\n return function (plugin, modelNode, src, options, ok, error) {\n loadZIP(src, function (zip) { // OK\n parse3DXML(plugin, zip, options, modelNode, ok, error);\n },\n error);\n };\n})();\n\nvar parse3DXML = (function () {\n return function (plugin, zip, options, modelNode, ok) {\n var ctx = {\n plugin: plugin,\n zip: zip,\n edgeThreshold: 30, // Guess at degrees of normal deviation between adjacent tris below which we remove edge between them\n materialType: options.materialType,\n scene: modelNode.scene,\n modelNode: modelNode,\n info: {\n references: {}\n },\n materials: {}\n };\n\n if (options.createMetaModel) {\n ctx.metaModelData = {\n modelId: modelNode.id,\n metaObjects: [{\n name: modelNode.id,\n type: \"Default\",\n id: modelNode.id\n }]\n };\n }\n modelNode.scene.loading++; // Disables (re)compilation\n\n parseDocument(ctx, function () {\n if (ctx.metaModelData) {\n plugin.viewer.metaScene.createMetaModel(modelNode.id, ctx.metaModelData);\n }\n modelNode.scene.loading--; // Re-enables (re)compilation\n ok();\n });\n };\n\n function parseDocument(ctx, ok) {\n ctx.zip.getFile(\"Manifest.xml\", function (xmlDoc, json) {\n var node = json;\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Manifest\":\n parseManifest(ctx, child, ok);\n break;\n }\n }\n });\n }\n\n function parseManifest(ctx, manifest, ok) {\n var children = manifest.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Root\":\n var rootFileSrc = child.children[0];\n ctx.zip.getFile(rootFileSrc, function (xmlDoc, json) {\n parseRoot(ctx, json, ok);\n });\n break;\n }\n }\n }\n\n function parseRoot(ctx, node, ok) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Model_3dxml\":\n parseModel(ctx, child, ok);\n break;\n }\n }\n }\n\n function parseModel(ctx, node, ok) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Header\":\n parseHeader(ctx, child);\n break;\n case \"ProductStructure\":\n parseProductStructure(ctx, child, ok);\n break;\n case \"DefaultView\":\n parseDefaultView(ctx, child);\n break;\n }\n }\n }\n\n function parseHeader(ctx, node) {\n var children = node.children;\n var metaData = {};\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"SchemaVersion\":\n metaData.schemaVersion = child.children[0];\n if (!isSchemaVersionSupported(ctx, metaData.schemaVersion)) {\n ctx.plugin.error(\"Schema version not supported: \" + metaData.schemaVersion + \" - supported versions are: \" + supportedSchemas.join(\",\"));\n } else {\n //ctx.plugin.log(\"Parsing schema version: \" + metaData.schemaVersion);\n }\n break;\n case \"Title\":\n metaData.title = child.children[0];\n break;\n case \"Author\":\n metaData.author = child.children[0];\n break;\n case \"Created\":\n metaData.created = child.children[0];\n break;\n }\n }\n ctx.modelNode.meta = metaData;\n }\n\n function isSchemaVersionSupported(ctx, schemaVersion) {\n for (var i = 0, len = supportedSchemas.length; i < len; i++) {\n if (schemaVersion === supportedSchemas[i]) {\n return true;\n }\n }\n return false;\n }\n\n function parseProductStructure(ctx, productStructureNode, ok) {\n\n parseReferenceReps(ctx, productStructureNode, function (referenceReps) {\n\n // Parse out an intermediate scene DAG representation, that we can then\n // recursive descend through to build a xeokit Object hierarchy.\n\n var children = productStructureNode.children;\n\n var reference3Ds = {};\n var instanceReps = {};\n var instance3Ds = {};\n\n var rootNode;\n var nodes = {};\n\n // Map all the elements\n\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n\n case \"Reference3D\":\n reference3Ds[child.id] = {\n type: \"Reference3D\",\n id: child.id,\n name: child.name,\n instance3Ds: {},\n instanceReps: {}\n };\n break;\n\n case \"InstanceRep\":\n var isAggregatedBy;\n var isInstanceOf;\n var relativeMatrix;\n for (var j = 0, lenj = child.children.length; j < lenj; j++) {\n var child2 = child.children[j];\n switch (child2.type) {\n case \"IsAggregatedBy\":\n isAggregatedBy = child2.children[0];\n break;\n case \"IsInstanceOf\":\n isInstanceOf = child2.children[0];\n break;\n }\n }\n instanceReps[child.id] = {\n type: \"InstanceRep\",\n id: child.id,\n name: child.name,\n isAggregatedBy: isAggregatedBy,\n isInstanceOf: isInstanceOf,\n referenceReps: {}\n };\n break;\n\n case \"Instance3D\":\n var isAggregatedBy;\n var isInstanceOf;\n var relativeMatrix;\n for (var j = 0, lenj = child.children.length; j < lenj; j++) {\n var child2 = child.children[j];\n switch (child2.type) {\n case \"IsAggregatedBy\":\n isAggregatedBy = child2.children[0];\n break;\n case \"IsInstanceOf\":\n isInstanceOf = child2.children[0];\n break;\n case \"RelativeMatrix\":\n relativeMatrix = child2.children[0];\n break;\n }\n }\n instance3Ds[child.id] = {\n type: \"Instance3D\",\n id: child.id,\n name: child.name,\n isAggregatedBy: isAggregatedBy,\n isInstanceOf: isInstanceOf,\n relativeMatrix: relativeMatrix,\n reference3Ds: {}\n };\n break;\n }\n }\n\n // Connect Reference3Ds to the Instance3Ds they aggregate\n\n for (var id in instance3Ds) {\n var instance3D = instance3Ds[id];\n var reference3D = reference3Ds[instance3D.isAggregatedBy];\n if (reference3D) {\n reference3D.instance3Ds[instance3D.id] = instance3D;\n } else {\n alert(\"foo\")\n }\n }\n\n // Connect Instance3Ds to the Reference3Ds they instantiate\n\n for (var id in instance3Ds) {\n var instance3D = instance3Ds[id];\n var reference3D = reference3Ds[instance3D.isInstanceOf];\n instance3D.reference3Ds[reference3D.id] = reference3D;\n reference3D.instance3D = instance3D;\n }\n\n // Connect InstanceReps to the ReferenceReps they instantiate\n\n for (var id in instanceReps) {\n var instanceRep = instanceReps[id];\n var referenceRep = referenceReps[instanceRep.isInstanceOf];\n if (referenceRep) {\n instanceRep.referenceReps[referenceRep.id] = referenceRep;\n }\n }\n\n // Connect Reference3Ds to the InstanceReps they aggregate\n\n for (var id in instanceReps) {\n var instanceRep = instanceReps[id];\n var reference3D = reference3Ds[instanceRep.isAggregatedBy];\n if (reference3D) {\n reference3D.instanceReps[instanceRep.id] = instanceRep;\n }\n }\n\n function parseReference3D(ctx, reference3D, group) {\n //ctx.plugin.log(\"parseReference3D( \" + reference3D.id + \" )\");\n for (var id in reference3D.instance3Ds) {\n parseInstance3D(ctx, reference3D.instance3Ds[id], group);\n }\n for (var id in reference3D.instanceReps) {\n parseInstanceRep(ctx, reference3D.instanceReps[id], group);\n }\n }\n\n function parseInstance3D(ctx, instance3D, group) {\n //ctx.plugin.log(\"parseInstance3D( \" + instance3D.id + \" )\");\n\n if (instance3D.relativeMatrix) {\n var matrix = parseFloatArray(instance3D.relativeMatrix, 12);\n var translate = [matrix[9], matrix[10], matrix[11]];\n var mat3 = matrix.slice(0, 9); // Rotation matrix\n var mat4 = math.mat3ToMat4(mat3, math.identityMat4()); // Convert rotation matrix to 4x4\n var childGroup = new Node(ctx.modelNode, {\n position: translate\n });\n if (ctx.metaModelData) {\n ctx.metaModelData.metaObjects.push({\n id: childGroup.id,\n type: \"Default\",\n name: instance3D.name,\n parent: group ? group.id : ctx.modelNode.id\n });\n }\n if (group) {\n group.addChild(childGroup, true);\n } else {\n ctx.modelNode.addChild(childGroup, true);\n }\n group = childGroup;\n childGroup = new Node(ctx.modelNode, {\n matrix: mat4\n });\n if (ctx.metaModelData) {\n ctx.metaModelData.metaObjects.push({\n id: childGroup.id,\n type: \"Default\",\n name: instance3D.name,\n parent: group ? group.id : ctx.modelNode.id\n });\n }\n group.addChild(childGroup, true);\n group = childGroup;\n } else {\n var childGroup = new Node(ctx.modelNode, {});\n if (ctx.metaModelData) {\n ctx.metaModelData.metaObjects.push({\n id: childGroup.id,\n type: \"Default\",\n name: instance3D.name,\n parent: group ? group.id : ctx.modelNode.id\n });\n }\n if (group) {\n group.addChild(childGroup, true);\n } else {\n ctx.modelNode.addChild(childGroup, true);\n }\n group = childGroup;\n }\n for (var id in instance3D.reference3Ds) {\n parseReference3D(ctx, instance3D.reference3Ds[id], group);\n }\n }\n\n function parseInstanceRep(ctx, instanceRep, group) {\n //ctx.plugin.log(\"parseInstanceRep( \" + instanceRep.id + \" )\");\n if (instanceRep.referenceReps) {\n for (var id in instanceRep.referenceReps) {\n var referenceRep = instanceRep.referenceReps[id];\n for (var id2 in referenceRep) {\n if (id2 === \"id\") {\n continue; // HACK\n }\n var meshCfg = referenceRep[id2];\n var lines = meshCfg.geometry.primitive === \"lines\";\n var material = lines ? ctx.modelNode._wireframeMaterial : (meshCfg.materialId ? ctx.materials[meshCfg.materialId] : null);\n var colorize = meshCfg.color;\n var mesh = new Mesh(ctx.modelNode, {\n isObject: true,\n geometry: meshCfg.geometry,\n material: material || ctx.modelNode._defaultMaterial,\n colorize: colorize,\n backfaces: false\n });\n if (ctx.metaModelData) {\n ctx.metaModelData.metaObjects.push({\n id: mesh.id,\n type: \"Default\",\n name: instanceRep.name,\n parent: group ? group.id : ctx.modelNode.id\n });\n }\n if (group) {\n group.addChild(mesh, true);\n } else {\n ctx.modelNode.addChild(mesh, true);\n }\n mesh.colorize = colorize; // HACK: Mesh has inherited modelNode's colorize state, so we need to restore it (we'd better not modify colorize on the modelNode).\n }\n }\n }\n }\n\n // Find the root Reference3D\n\n for (var id in reference3Ds) {\n var reference3D = reference3Ds[id];\n if (!reference3D.instance3D) {\n parseReference3D(ctx, reference3D, null); // HACK: Assuming that root has id == \"1\"\n ok();\n return;\n }\n }\n\n alert(\"No root Reference3D element found in this modelNode - can't load.\");\n\n ok();\n });\n }\n\n function parseIntArray(str) {\n var parts = str.trim().split(\" \");\n var result = new Int32Array(parts.length);\n for (var i = 0; i < parts.length; i++) {\n result[i] = parseInt(parts[i]);\n }\n return result;\n }\n\n function parseReferenceReps(ctx, node, ok) {\n var referenceReps = {};\n var children = node.children;\n var numToLoad = 0;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n if (child.type === \"ReferenceRep\") {\n numToLoad++;\n }\n }\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"ReferenceRep\":\n if (child.associatedFile) {\n var src = stripURN(child.associatedFile);\n (function () {\n var childId = child.id;\n ctx.zip.getFile(src, function (xmlDoc, json) {\n\n var materialIds = xmlDoc.getElementsByTagName(\"MaterialId\");\n\n loadCATMaterialRefDocuments(ctx, materialIds, function () {\n\n // ctx.plugin.log(\"reference loaded: \" + src);\n var referenceRep = {\n id: childId\n };\n parse3DRepDocument(ctx, json, referenceRep);\n referenceReps[childId] = referenceRep;\n if (--numToLoad === 0) {\n ok(referenceReps);\n }\n });\n },\n function (error) {\n // TODO:\n });\n })();\n }\n break;\n }\n }\n }\n\n\n function parseDefaultView(ctx, node) {\n // ctx.plugin.log(\"parseDefaultView\");\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Viewpoint\":\n var children2 = child.children;\n ctx.modelNode.viewpoint = {};\n for (var i2 = 0, len2 = children2.length; i2 < len2; i2++) {\n var child2 = children2[i];\n switch (child2.type) {\n case \"Position\":\n ctx.modelNode.viewpoint.eye = parseFloatArray(child2.children[0], 3);\n break;\n case \"Sight\":\n ctx.modelNode.viewpoint.look = parseFloatArray(child2.children[0], 3);\n break;\n case \"Up\":\n ctx.modelNode.viewpoint.up = parseFloatArray(child2.children[0], 3);\n break;\n }\n }\n break;\n case \"DefaultViewProperty\":\n break;\n }\n }\n }\n\n function parse3DRepDocument(ctx, node, result) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"XMLRepresentation\":\n parseXMLRepresentation(ctx, child, result);\n break;\n }\n }\n }\n\n function parseXMLRepresentation(ctx, node, result) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Root\":\n parse3DRepRoot(ctx, child, result);\n break;\n }\n }\n }\n\n function parse3DRepRoot(ctx, node, result) {\n switch (node[\"xsi:type\"]) {\n case \"BagRepType\":\n break;\n case \"PolygonalRepType\":\n break;\n }\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Rep\":\n parse3DRepRep(ctx, child, result);\n break;\n }\n }\n }\n\n function parse3DRepRep(ctx, node, result) {\n switch (node[\"xsi:type\"]) {\n case \"BagRepType\":\n break;\n case \"PolygonalRepType\":\n break;\n }\n var meshesResult = {\n edgeThreshold: ctx.edgeThreshold || 30,\n compressGeometry: true\n };\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Rep\":\n parse3DRepRep(ctx, child, result);\n break;\n case \"Edges\":\n // Ignoring edges because we auto-generate our own using xeokit\n break;\n case \"Faces\":\n meshesResult.primitive = \"triangles\";\n parseFaces(ctx, child, meshesResult);\n break;\n case \"VertexBuffer\":\n parseVertexBuffer(ctx, child, meshesResult);\n break;\n case \"SurfaceAttributes\":\n parseSurfaceAttributes(ctx, child, meshesResult);\n break;\n }\n }\n if (meshesResult.positions) {\n var geometry = new ReadableGeometry(ctx.modelNode, meshesResult);\n result[geometry.id] = {\n geometry: geometry,\n color: meshesResult.color || [1.0, 1.0, 1.0, 1.0],\n materialId: meshesResult.materialId\n };\n }\n }\n\n function parseEdges(ctx, node, result) {\n result.positions = [];\n result.indices = [];\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Polyline\":\n parsePolyline(ctx, child, result);\n break;\n }\n }\n }\n\n function parsePolyline(ctx, node, result) {\n var vertices = node.vertices;\n if (vertices) {\n var positions = parseFloatArray(vertices, 3);\n if (positions.length > 0) {\n var positionsOffset = result.positions.length / 3;\n for (var i = 0, len = positions.length; i < len; i++) {\n result.positions.push(positions[i]);\n }\n for (var i = 0, len = (positions.length / 3) - 1; i < len; i++) {\n result.indices.push(positionsOffset + i);\n result.indices.push(positionsOffset + i + 1);\n }\n }\n }\n }\n\n function parseFaces(ctx, node, result) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Face\":\n parseFace(ctx, child, result);\n break;\n }\n }\n }\n\n function parseFace(ctx, node, result) {\n var strips = node.strips;\n if (strips) {\n // Triangle strips\n var arrays = parseIntArrays(strips);\n if (arrays.length > 0) {\n result.primitive = \"triangles\";\n var indices = [];\n for (var i = 0, len = arrays.length; i < len; i++) {\n var array = convertTriangleStrip(arrays[i]);\n for (var j = 0, lenj = array.length; j < lenj; j++) {\n indices.push(array[j]);\n }\n }\n result.indices = indices; // TODO\n }\n } else {\n // Triangle meshes\n var triangles = node.triangles;\n if (triangles) {\n result.primitive = \"triangles\";\n result.indices = parseIntArray(triangles);\n }\n }\n // Material\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"SurfaceAttributes\":\n parseSurfaceAttributes(ctx, child, result);\n break;\n }\n }\n }\n\n function convertTriangleStrip(indices) {\n var ccw = false;\n var indices2 = [];\n for (var i = 0, len = indices.length; i < len - 2; i++) {\n if (ccw) {\n if (i & 1) { //\n indices2.push(indices[i]);\n indices2.push(indices[i + 1]);\n indices2.push(indices[i + 2]);\n } else {\n indices2.push(indices[i]);\n indices2.push(indices[i + 2]);\n indices2.push(indices[i + 1]);\n }\n } else {\n if (i & 1) { //\n indices2.push(indices[i]);\n indices2.push(indices[i + 2]);\n indices2.push(indices[i + 1]);\n } else {\n indices2.push(indices[i]);\n indices2.push(indices[i + 1]);\n indices2.push(indices[i + 2]);\n }\n }\n }\n return indices2;\n }\n\n function parseVertexBuffer(ctx, node, result) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Positions\":\n result.positions = parseFloatArray(child.children[0], 3);\n break;\n case \"Normals\":\n result.normals = parseFloatArray(child.children[0], 3);\n break;\n case \"TextureCoordinates\": // TODO: Support dimension and channel?\n result.uv = parseFloatArray(child.children[0], 2);\n break;\n }\n }\n }\n\n function parseIntArrays(str) {\n var coordStrings = str.split(\",\");\n var array = [];\n for (var i = 0, len = coordStrings.length; i < len; i++) {\n var coordStr = coordStrings[i].trim();\n if (coordStr.length > 0) {\n var elemStrings = coordStr.trim().split(\" \");\n var arr = new Int16Array(elemStrings.length);\n var arrIdx = 0;\n for (var j = 0, lenj = elemStrings.length; j < lenj; j++) {\n if (elemStrings[j] !== \"\") {\n arr[arrIdx++] = parseInt(elemStrings[j]);\n }\n }\n array.push(arr);\n }\n }\n return array;\n }\n\n function parseFloatArray(str, numElems) {\n str = str.split(\",\");\n var arr = new Float32Array(str.length * numElems);\n var arrIdx = 0;\n for (var i = 0, len = str.length; i < len; i++) {\n var value = str[i];\n value = value.split(\" \");\n for (var j = 0, lenj = value.length; j < lenj; j++) {\n if (value[j] !== \"\") {\n arr[arrIdx++] = parseFloat(value[j]);\n }\n }\n }\n return arr;\n }\n\n function parseIntArray(str) {\n str = str.trim().split(\" \");\n var arr = new Int32Array(str.length);\n var arrIdx = 0;\n for (var i = 0, len = str.length; i < len; i++) {\n var value = str[i];\n arr[i] = parseInt(value);\n }\n return arr;\n }\n\n function parseSurfaceAttributes(ctx, node, result) {\n result.color = [1, 1, 1, 1];\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Color\":\n result.color[0] = child.red;\n result.color[1] = child.green;\n result.color[2] = child.blue;\n result.color[3] = child.alpha;\n break;\n case \"MaterialApplication\":\n var children2 = child.children;\n for (var j = 0, lenj = children2.length; j < lenj; j++) {\n var child2 = children2[j];\n switch (child2.type) {\n case \"MaterialId\":\n var materialId = getIDFromURI(child2.id);\n var material = ctx.materials[materialId];\n if (!material) {\n ctx.plugin.error(\"material not found: \" + materialId);\n }\n result.materialId = materialId;\n break;\n }\n }\n break;\n }\n }\n }\n})();\n\nfunction loadCATMaterialRefDocuments(ctx, materialIds, ok) {\n var loaded = {};\n\n function load(i, done) {\n if (i >= materialIds.length) {\n ok();\n return;\n }\n var materialId = materialIds[i];\n var src = materialId.id;\n var colonIdx = src.lastIndexOf(\":\");\n if (colonIdx > 0) {\n src = src.substring(colonIdx + 1);\n }\n var hashIdx = src.lastIndexOf(\"#\");\n if (hashIdx > 0) {\n src = src.substring(0, hashIdx);\n }\n if (!loaded[src]) {\n loadCATMaterialRefDocument(ctx, src, function () {\n loaded[src] = true;\n load(i + 1, done);\n });\n } else {\n load(i + 1, done);\n }\n }\n\n load(0, ok);\n}\n\nfunction loadCATMaterialRefDocument(ctx, src, ok) { // Loads CATMaterialRef.3dxml\n ctx.zip.getFile(src, function (xmlDoc, json) {\n parseCATMaterialRefDocument(ctx, json, ok);\n });\n}\n\nfunction parseCATMaterialRefDocument(ctx, node, ok) { // Parse CATMaterialRef.3dxml\n // ctx.plugin.log(\"parseCATMaterialRefDocument\");\n var children = node.children;\n var child;\n for (var i = 0, len = children.length; i < len; i++) {\n child = children[i];\n if (child.type === \"Model_3dxml\") {\n parseModel_3dxml(ctx, child, ok);\n }\n }\n}\n\nfunction parseModel_3dxml(ctx, node, ok) { // Parse CATMaterialRef.3dxml\n // ctx.plugin.log(\"parseModel_3dxml\");\n var children = node.children;\n var child;\n for (var i = 0, len = children.length; i < len; i++) {\n child = children[i];\n if (child.type === \"CATMaterialRef\") {\n parseCATMaterialRef(ctx, child, ok);\n }\n }\n}\n\nfunction parseCATMaterialRef(ctx, node, ok) {\n var domainToReferenceMap = {};\n var materials = {};\n var result = {};\n var children = node.children;\n var child;\n var numToLoad = 0;\n for (var j = 0, lenj = children.length; j < lenj; j++) {\n var child2 = children[j];\n switch (child2.type) {\n case \"MaterialDomainInstance\":\n var isAggregatedBy;\n var isInstanceOf;\n for (var k = 0, lenk = child2.children.length; k < lenk; k++) {\n var child3 = child2.children[k];\n switch (child3.type) {\n case \"IsAggregatedBy\":\n isAggregatedBy = child3.children[0];\n break;\n case \"IsInstanceOf\":\n isInstanceOf = child3.children[0];\n break;\n }\n }\n domainToReferenceMap[isInstanceOf] = isAggregatedBy;\n break;\n }\n }\n for (var j = 0, lenj = children.length; j < lenj; j++) {\n var child2 = children[j];\n switch (child2.type) {\n case \"MaterialDomain\":\n numToLoad++;\n break;\n }\n }\n // Now load them\n for (var j = 0, lenj = children.length; j < lenj; j++) {\n var child2 = children[j];\n switch (child2.type) {\n case \"MaterialDomain\":\n if (child2.associatedFile) {\n (function () {\n var childId = child2.id;\n var src = stripURN(child2.associatedFile);\n ctx.zip.getFile(src, function (xmlDoc, json) {\n // ctx.plugin.log(\"Material def loaded: \" + src);\n ctx.materials[domainToReferenceMap[childId]] = parseMaterialDefDocument(ctx, json);\n\n if (--numToLoad === 0) {\n // console.log(\"All ReferenceReps loaded.\");\n ok();\n }\n },\n function (error) {\n // TODO:\n });\n })();\n }\n break;\n }\n }\n}\n\nfunction parseMaterialDefDocument(ctx, node) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Osm\":\n return parseMaterialDefDocumentOsm(ctx, child);\n break;\n }\n }\n}\n\nfunction parseMaterialDefDocumentOsm(ctx, node) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"RenderingRootFeature\":\n //..\n break;\n case \"Feature\":\n\n if (child.Alias === \"RenderingFeature\") {\n // Parse the coefficients, then parse the colors, scaling those by their coefficients.\n var coeffs = {};\n var materialCfg = {};\n var children2 = child.children;\n var j;\n var lenj;\n var child2;\n for (j = 0, lenj = children2.length; j < lenj; j++) {\n child2 = children2[j];\n switch (child2.Name) {\n case \"AmbientCoef\":\n coeffs.ambient = parseFloat(child2.Value);\n break;\n case \"DiffuseCoef\":\n coeffs.diffuse = parseFloat(child2.Value);\n break;\n case \"EmissiveCoef\":\n coeffs.emissive = parseFloat(child2.Value);\n break;\n case \"SpecularExponent\":\n coeffs.specular = parseFloat(child2.Value);\n break;\n }\n }\n for (j = 0, lenj = children2.length; j < lenj; j++) {\n child2 = children2[j];\n switch (child2.Name) {\n case \"AmbientColor\":\n materialCfg.ambient = parseRGB(child2.Value, coeffs.ambient);\n break;\n case \"DiffuseColor\":\n materialCfg.diffuse = parseRGB(child2.Value, coeffs.diffuse);\n break;\n case \"EmissiveColor\":\n materialCfg.emissive = parseRGB(child2.Value, coeffs.emissive);\n break;\n case \"SpecularColor\":\n materialCfg.specular = parseRGB(child2.Value, coeffs.specular);\n break;\n case \"Transparency\":\n var alpha = 1.0 - parseFloat(child2.Value); // GOTCHA: Degree of transparency, not degree of opacity\n if (alpha < 1.0) {\n materialCfg.alpha = alpha;\n materialCfg.alphaMode = \"blend\";\n }\n break;\n }\n }\n\n var material;\n\n switch (ctx.materialType) {\n case \"MetallicMaterial\":\n material = new MetallicMaterial(ctx.modelNode, {\n baseColor: materialCfg.diffuse,\n metallic: 0.7,\n roughness: 0.5,\n emissive: materialCfg.emissive,\n alpha: materialCfg.alpha,\n alphaMode: materialCfg.alphaMode\n });\n break;\n\n case \"SpecularMaterial\":\n material = new SpecularMaterial(ctx.modelNode, {\n diffuse: materialCfg.diffuse,\n specular: materialCfg.specular,\n glossiness: 0.5,\n emissive: materialCfg.emissive,\n alpha: materialCfg.alpha,\n alphaMode: materialCfg.alphaMode\n });\n break;\n\n default:\n material = new PhongMaterial(ctx.modelNode, {\n reflectivity: 0.5,\n ambient: materialCfg.ambient,\n diffuse: materialCfg.diffuse,\n specular: materialCfg.specular,\n // shininess: node.shine,\n emissive: materialCfg.emissive,\n alphaMode: materialCfg.alphaMode,\n alpha: node.alpha\n });\n }\n return material;\n }\n break;\n }\n }\n}\n\nfunction parseRGB(str, coeff) {\n coeff = (coeff !== undefined) ? coeff : 0.5;\n var openBracketIndex = str.indexOf(\"[\");\n var closeBracketIndex = str.indexOf(\"]\");\n str = str.substring(openBracketIndex + 1, closeBracketIndex - openBracketIndex);\n str = str.split(\",\");\n var arr = new Float32Array(str.length);\n var arrIdx = 0;\n for (var i = 0, len = str.length; i < len; i++) {\n var value = str[i];\n value = value.trim().split(\" \");\n for (var j = 0, lenj = value.length; j < lenj; j++) {\n if (value[j] !== \"\") {\n arr[arrIdx++] = parseFloat(value[j]) * coeff;\n }\n }\n }\n return arr;\n}\n\n\n//----------------------------------------------------------------------------------------------------\n\n/**\n * Wraps zip.js to provide an in-memory ZIP archive representing the 3DXML file bundle.\n *\n * Allows us to pluck each file from it as XML and JSON.\n *\n * @constructor\n */\nvar ZIP = function () {\n\n var reader;\n var files = {};\n\n /**\n Loads this ZIP\n\n @param src\n @param ok\n @param error\n */\n this.load = function (src, ok, error) {\n var self = this;\n zip.createReader(new zip.HttpReader(src), function (reader) {\n reader.getEntries(function (entries) {\n if (entries.length > 0) {\n for (var i = 0, len = entries.length; i < len; i++) {\n var entry = entries[i];\n files[entry.filename] = entry;\n }\n }\n ok();\n });\n }, error);\n };\n\n /**\n Gets a file as XML and JSON from this ZIP\n @param src\n @param ok\n @param error\n */\n this.getFile = function (src, ok, error) {\n var entry = files[src];\n if (!entry) {\n var errMsg = \"ZIP entry not found: \" + src;\n console.error(errMsg);\n if (error) {\n error(errMsg);\n }\n return;\n }\n entry.getData(new zip.TextWriter(), function (text) {\n\n // Parse to XML\n var parser = new DOMParser();\n var xmlDoc = parser.parseFromString(text, \"text/xml\");\n\n // Parse to JSON\n var json = xmlToJSON(xmlDoc, {});\n\n ok(xmlDoc, json);\n });\n };\n\n function xmlToJSON(node, attributeRenamer) {\n if (node.nodeType === node.TEXT_NODE) {\n var v = node.nodeValue;\n if (v.match(/^\\s+$/) === null) {\n return v;\n }\n } else if (node.nodeType === node.ELEMENT_NODE ||\n node.nodeType === node.DOCUMENT_NODE) {\n var json = {type: node.nodeName, children: []};\n if (node.nodeType === node.ELEMENT_NODE) {\n for (var j = 0; j < node.attributes.length; j++) {\n var attribute = node.attributes[j];\n var nm = attributeRenamer[attribute.nodeName] || attribute.nodeName;\n json[nm] = attribute.nodeValue;\n }\n }\n for (var i = 0; i < node.childNodes.length; i++) {\n var item = node.childNodes[i];\n var j = xmlToJSON(item, attributeRenamer);\n if (j) json.children.push(j);\n }\n return json;\n }\n }\n\n /**\n Disposes of this ZIP\n */\n this.destroy = function () {\n reader.close(function () {\n // onclose callback\n });\n };\n};\n\nfunction\n\nloadZIP(src, ok, err) {\n var zip = new ZIP();\n zip.load(src, function () {\n ok(zip);\n }, function (errMsg) {\n err(\"Error loading ZIP archive: \" + errMsg);\n })\n}\n\nfunction\n\nstripURN(str) {\n var subStr = \"urn:3DXML:\";\n return (str.indexOf(subStr) === 0) ? str.substring(subStr.length) : str;\n}\n\n\nfunction\n\ngetIDFromURI(str) {\n var hashIdx = str.lastIndexOf(\"#\");\n return hashIdx !== -1 ? str.substring(hashIdx + 1) : str;\n}\n\nexport {XML3DSceneGraphLoader};\n", @@ -36689,7 +37217,7 @@ "lineNumber": 1 }, { - "__docId__": 1881, + "__docId__": 1899, "kind": "variable", "name": "zip", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36710,7 +37238,7 @@ "ignore": true }, { - "__docId__": 1882, + "__docId__": 1900, "kind": "variable", "name": "supportedSchemas", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36731,7 +37259,7 @@ "ignore": true }, { - "__docId__": 1883, + "__docId__": 1901, "kind": "variable", "name": "load3DXML", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36752,7 +37280,7 @@ "ignore": true }, { - "__docId__": 1884, + "__docId__": 1902, "kind": "variable", "name": "parse3DXML", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36773,7 +37301,7 @@ "ignore": true }, { - "__docId__": 1885, + "__docId__": 1903, "kind": "function", "name": "loadCATMaterialRefDocuments", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36812,7 +37340,7 @@ "ignore": true }, { - "__docId__": 1886, + "__docId__": 1904, "kind": "function", "name": "loadCATMaterialRefDocument", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36851,7 +37379,7 @@ "ignore": true }, { - "__docId__": 1887, + "__docId__": 1905, "kind": "function", "name": "parseCATMaterialRefDocument", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36890,7 +37418,7 @@ "ignore": true }, { - "__docId__": 1888, + "__docId__": 1906, "kind": "function", "name": "parseModel_3dxml", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36929,7 +37457,7 @@ "ignore": true }, { - "__docId__": 1889, + "__docId__": 1907, "kind": "function", "name": "parseCATMaterialRef", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -36968,7 +37496,7 @@ "ignore": true }, { - "__docId__": 1890, + "__docId__": 1908, "kind": "function", "name": "parseMaterialDefDocument", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -37005,7 +37533,7 @@ "ignore": true }, { - "__docId__": 1891, + "__docId__": 1909, "kind": "function", "name": "parseMaterialDefDocumentOsm", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -37042,7 +37570,7 @@ "ignore": true }, { - "__docId__": 1892, + "__docId__": 1910, "kind": "function", "name": "parseRGB", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -37079,7 +37607,7 @@ "ignore": true }, { - "__docId__": 1893, + "__docId__": 1911, "kind": "function", "name": "ZIP", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -37104,7 +37632,7 @@ "ignore": true }, { - "__docId__": 1894, + "__docId__": 1912, "kind": "function", "name": "loadZIP", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -37143,7 +37671,7 @@ "ignore": true }, { - "__docId__": 1895, + "__docId__": 1913, "kind": "function", "name": "stripURN", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -37174,7 +37702,7 @@ "ignore": true }, { - "__docId__": 1896, + "__docId__": 1914, "kind": "function", "name": "getIDFromURI", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -37205,7 +37733,7 @@ "ignore": true }, { - "__docId__": 1897, + "__docId__": 1915, "kind": "class", "name": "XML3DSceneGraphLoader", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -37221,7 +37749,7 @@ "ignore": true }, { - "__docId__": 1898, + "__docId__": 1916, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37235,7 +37763,7 @@ "undocument": true }, { - "__docId__": 1899, + "__docId__": 1917, "kind": "member", "name": "supportedSchemas", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37266,7 +37794,7 @@ } }, { - "__docId__": 1900, + "__docId__": 1918, "kind": "member", "name": "_xrayOpacity", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37284,7 +37812,7 @@ } }, { - "__docId__": 1901, + "__docId__": 1919, "kind": "member", "name": "_src", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37302,7 +37830,7 @@ } }, { - "__docId__": 1902, + "__docId__": 1920, "kind": "member", "name": "_options", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37320,7 +37848,7 @@ } }, { - "__docId__": 1903, + "__docId__": 1921, "kind": "member", "name": "viewpoint", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37351,7 +37879,7 @@ } }, { - "__docId__": 1904, + "__docId__": 1922, "kind": "member", "name": "src", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37368,7 +37896,7 @@ } }, { - "__docId__": 1905, + "__docId__": 1923, "kind": "member", "name": "xrayOpacity", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37385,7 +37913,7 @@ } }, { - "__docId__": 1906, + "__docId__": 1924, "kind": "member", "name": "displayEffect", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37402,7 +37930,7 @@ } }, { - "__docId__": 1907, + "__docId__": 1925, "kind": "member", "name": "createMetaModel", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37419,7 +37947,7 @@ } }, { - "__docId__": 1908, + "__docId__": 1926, "kind": "method", "name": "load", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -37472,7 +38000,7 @@ "return": null }, { - "__docId__": 1909, + "__docId__": 1927, "kind": "file", "name": "src/plugins/XML3DLoaderPlugin/index.js", "content": "export * from \"./XML3DLoaderPlugin.js\";", @@ -37483,10 +38011,10 @@ "lineNumber": 1 }, { - "__docId__": 1910, + "__docId__": 1928, "kind": "file", "name": "src/plugins/index.js", - "content": "export * from \"./AngleMeasurementsPlugin/index.js\";\nexport * from \"./AnnotationsPlugin/index.js\";\nexport * from \"./AxisGizmoPlugin/index.js\";\nexport * from \"./BCFViewpointsPlugin/index.js\";\nexport * from \"./DistanceMeasurementsPlugin/index.js\";\nexport * from \"./FastNavPlugin/index.js\";\nexport * from \"./GLTFLoaderPlugin/index.js\";\nexport * from \"./NavCubePlugin/index.js\";\nexport * from \"./OBJLoaderPlugin/index.js\";\nexport * from \"./SectionPlanesPlugin/index.js\";\nexport * from \"./StoreyViewsPlugin/index.js\";\nexport * from \"./FaceAlignedSectionPlanesPlugin/index.js\";\nexport * from \"./SkyboxesPlugin/index.js\";\nexport * from \"./STLLoaderPlugin/index.js\";\nexport * from \"./TreeViewPlugin/index.js\";\nexport * from \"./ViewCullPlugin/index.js\";\nexport * from \"./XKTLoaderPlugin/index.js\";\nexport * from \"./XML3DLoaderPlugin/index.js\";\nexport * from \"./WebIFCLoaderPlugin/index.js\";\nexport * from \"./LASLoaderPlugin/index.js\";\nexport * from \"./CityJSONLoaderPlugin/index.js\";", + "content": "export * from \"./AngleMeasurementsPlugin/index.js\";\nexport * from \"./AnnotationsPlugin/index.js\";\nexport * from \"./AxisGizmoPlugin/index.js\";\nexport * from \"./BCFViewpointsPlugin/index.js\";\nexport * from \"./DistanceMeasurementsPlugin/index.js\";\nexport * from \"./FastNavPlugin/index.js\";\nexport * from \"./GLTFLoaderPlugin/index.js\";\nexport * from \"./NavCubePlugin/index.js\";\nexport * from \"./OBJLoaderPlugin/index.js\";\nexport * from \"./SectionPlanesPlugin/index.js\";\nexport * from \"./StoreyViewsPlugin/index.js\";\nexport * from \"./FaceAlignedSectionPlanesPlugin/index.js\";\nexport * from \"./SkyboxesPlugin/index.js\";\nexport * from \"./STLLoaderPlugin/index.js\";\nexport * from \"./TreeViewPlugin/index.js\";\nexport * from \"./ViewCullPlugin/index.js\";\nexport * from \"./XKTLoaderPlugin/index.js\";\nexport * from \"./XML3DLoaderPlugin/index.js\";\nexport * from \"./WebIFCLoaderPlugin/index.js\";\nexport * from \"./LASLoaderPlugin/index.js\";\nexport * from \"./CityJSONLoaderPlugin/index.js\";\nexport * from \"./DotBIMLoaderPlugin/index.js\";", "static": true, "longname": "/home/lindsay/xeolabs/xeokit-sdk-feb14/src/plugins/index.js", "access": "public", @@ -37494,7 +38022,7 @@ "lineNumber": 1 }, { - "__docId__": 1911, + "__docId__": 1929, "kind": "file", "name": "src/plugins/lib/culling/ObjectCullStates.js", "content": "/**\n * For each Entity in its Scene, efficiently combines updates from multiple culling systems into a single \"culled\" state.\n *\n * Two culling systems are supported:\n *\n * * View culling - culls Entities when they fall outside the current view frustum, and\n * * Detail culling - momentarily culls less visually-significant Entities while we are moving the camera.\n *\n * @private\n */\nclass ObjectCullStates {\n\n /**\n * @private\n * @param scene\n */\n constructor(scene) {\n\n this._scene = scene;\n\n this._objects = []; // Array of all Entity instances that represent objects\n this._objectsViewCulled = []; // A flag for each object to indicate its view-cull status\n this._objectsDetailCulled = []; // A flag for each object to indicate its detail-cull status\n this._objectsChanged = []; // A flag for each object, set whenever its cull status has changed since last _applyChanges()\n this._objectsChangedList = []; // A list of objects whose cull status has changed, applied and cleared by _applyChanges()\n\n this._modelInfos = {};\n\n this._numObjects = 0;\n this._lenObjectsChangedList = 0;\n\n this._dirty = true;\n\n this._onModelLoaded = scene.on(\"modelLoaded\", (modelId) => {\n const model = scene.models[modelId];\n if (model) {\n this._addModel(model);\n }\n });\n\n this._onTick = scene.on(\"tick\", () => {\n if (this._dirty) {\n this._build();\n }\n this._applyChanges();\n });\n }\n\n _addModel(model) {\n const modelInfo = {\n model: model,\n onDestroyed: model.on(\"destroyed\", () => {\n this._removeModel(model);\n })\n };\n this._modelInfos[model.id] = modelInfo;\n this._dirty = true;\n }\n\n _removeModel(model) {\n const modelInfo = this._modelInfos[model.id];\n if (modelInfo) {\n modelInfo.model.off(modelInfo.onDestroyed);\n delete this._modelInfos[model.id];\n this._dirty = true;\n }\n }\n\n _build() {\n if (!this._dirty) {\n return;\n }\n this._applyChanges();\n const objects = this._scene.objects;\n for (let i = 0; i < this._numObjects; i++) {\n this._objects[i] = null;\n }\n this._numObjects = 0;\n for (let objectId in objects) {\n const entity = objects[objectId];\n this._objects[this._numObjects++] = entity;\n }\n this._lenObjectsChangedList = 0;\n this._dirty = false;\n }\n\n _applyChanges() {\n if (this._lenObjectsChangedList > 0) {\n for (let i = 0; i < this._lenObjectsChangedList; i++) {\n const objectIdx = this._objectsChangedList[i];\n const object = this._objects[objectIdx];\n const viewCulled = this._objectsViewCulled[objectIdx];\n const detailCulled = this._objectsDetailCulled[objectIdx];\n const culled = (viewCulled || detailCulled);\n object.culled = culled;\n this._objectsChanged[objectIdx] = false;\n }\n this._lenObjectsChangedList = 0;\n }\n }\n\n /**\n * Array of {@link Entity} instances that represent objects in the {@link Scene}.\n *\n * ObjectCullStates rebuilds this from {@link Scene#objects} whenever ````Scene```` fires a ````modelLoaded```` event.\n *\n * @returns {Entity[]}\n */\n get objects() {\n if (this._dirty) {\n this._build();\n }\n return this._objects;\n }\n\n /**\n * Number of objects in {@link ObjectCullStates#objects},\n *\n * Updated whenever ````Scene```` fires a ````modelLoaded```` event.\n *\n * @returns {Number}\n */\n get numObjects() {\n if (this._dirty) {\n this._build();\n }\n return this._numObjects;\n }\n\n /**\n * Updates an object's view-cull status.\n *\n * @param {Number} objectIdx Index of the object in {@link ObjectCullStates#objects}\n * @param {boolean} culled Whether to view-cull or not.\n */\n setObjectViewCulled(objectIdx, culled) {\n if (this._dirty) {\n this._build();\n }\n if (this._objectsViewCulled[objectIdx] === culled) {\n return;\n }\n this._objectsViewCulled[objectIdx] = culled;\n if (!this._objectsChanged[objectIdx]) {\n this._objectsChanged[objectIdx] = true;\n this._objectsChangedList[this._lenObjectsChangedList++] = objectIdx;\n }\n }\n\n /**\n * Updates an object's detail-cull status.\n *\n * @param {Number} objectIdx Index of the object in {@link ObjectCullStates#objects}\n * @param {boolean} culled Whether to detail-cull or not.\n */\n setObjectDetailCulled(objectIdx, culled) {\n if (this._dirty) {\n this._build();\n }\n if (this._objectsDetailCulled[objectIdx] === culled) {\n return;\n }\n this._objectsDetailCulled[objectIdx] = culled;\n if (!this._objectsChanged[objectIdx]) {\n this._objectsChanged[objectIdx] = true;\n this._objectsChangedList[this._lenObjectsChangedList++] = objectIdx;\n }\n }\n\n /**\n * Destroys this ObjectCullStAtes.\n */\n _destroy() {\n this._clear();\n this._scene.off(this._onModelLoaded);\n this._scene.off(this._onTick);\n }\n\n _clear() {\n for (let modelId in this._modelInfos) {\n const modelInfo = this._modelInfos[modelId];\n modelInfo.model.off(modelInfo.onDestroyed);\n }\n this._modelInfos = {};\n this._dirty = true;\n }\n}\n\nconst sceneObjectCullStates = {};\n\n/**\n * @private\n */\nfunction getObjectCullStates(scene) {\n const sceneId = scene.id;\n let objectCullStates = sceneObjectCullStates[sceneId];\n if (!objectCullStates) {\n objectCullStates = new ObjectCullStates(scene);\n sceneObjectCullStates[sceneId] = objectCullStates;\n scene.on(\"destroyed\", () => {\n delete sceneObjectCullStates[sceneId];\n objectCullStates._destroy();\n });\n }\n return objectCullStates;\n}\n\nexport {getObjectCullStates};", @@ -37505,7 +38033,7 @@ "lineNumber": 1 }, { - "__docId__": 1912, + "__docId__": 1930, "kind": "class", "name": "ObjectCullStates", "memberof": "src/plugins/lib/culling/ObjectCullStates.js", @@ -37521,7 +38049,7 @@ "ignore": true }, { - "__docId__": 1913, + "__docId__": 1931, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37547,7 +38075,7 @@ "ignore": true }, { - "__docId__": 1914, + "__docId__": 1932, "kind": "member", "name": "_scene", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37565,7 +38093,7 @@ } }, { - "__docId__": 1915, + "__docId__": 1933, "kind": "member", "name": "_objects", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37583,7 +38111,7 @@ } }, { - "__docId__": 1916, + "__docId__": 1934, "kind": "member", "name": "_objectsViewCulled", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37601,7 +38129,7 @@ } }, { - "__docId__": 1917, + "__docId__": 1935, "kind": "member", "name": "_objectsDetailCulled", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37619,7 +38147,7 @@ } }, { - "__docId__": 1918, + "__docId__": 1936, "kind": "member", "name": "_objectsChanged", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37637,7 +38165,7 @@ } }, { - "__docId__": 1919, + "__docId__": 1937, "kind": "member", "name": "_objectsChangedList", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37655,7 +38183,7 @@ } }, { - "__docId__": 1920, + "__docId__": 1938, "kind": "member", "name": "_modelInfos", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37673,7 +38201,7 @@ } }, { - "__docId__": 1921, + "__docId__": 1939, "kind": "member", "name": "_numObjects", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37691,7 +38219,7 @@ } }, { - "__docId__": 1922, + "__docId__": 1940, "kind": "member", "name": "_lenObjectsChangedList", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37709,7 +38237,7 @@ } }, { - "__docId__": 1923, + "__docId__": 1941, "kind": "member", "name": "_dirty", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37727,7 +38255,7 @@ } }, { - "__docId__": 1924, + "__docId__": 1942, "kind": "member", "name": "_onModelLoaded", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37745,7 +38273,7 @@ } }, { - "__docId__": 1925, + "__docId__": 1943, "kind": "member", "name": "_onTick", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37763,7 +38291,7 @@ } }, { - "__docId__": 1926, + "__docId__": 1944, "kind": "method", "name": "_addModel", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37787,7 +38315,7 @@ "return": null }, { - "__docId__": 1928, + "__docId__": 1946, "kind": "method", "name": "_removeModel", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37811,7 +38339,7 @@ "return": null }, { - "__docId__": 1930, + "__docId__": 1948, "kind": "method", "name": "_build", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37828,7 +38356,7 @@ "return": null }, { - "__docId__": 1934, + "__docId__": 1952, "kind": "method", "name": "_applyChanges", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37845,7 +38373,7 @@ "return": null }, { - "__docId__": 1936, + "__docId__": 1954, "kind": "get", "name": "objects", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37877,7 +38405,7 @@ } }, { - "__docId__": 1937, + "__docId__": 1955, "kind": "get", "name": "numObjects", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37909,7 +38437,7 @@ } }, { - "__docId__": 1938, + "__docId__": 1956, "kind": "method", "name": "setObjectViewCulled", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37945,7 +38473,7 @@ "return": null }, { - "__docId__": 1939, + "__docId__": 1957, "kind": "method", "name": "setObjectDetailCulled", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37981,7 +38509,7 @@ "return": null }, { - "__docId__": 1940, + "__docId__": 1958, "kind": "method", "name": "_destroy", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -37997,7 +38525,7 @@ "return": null }, { - "__docId__": 1941, + "__docId__": 1959, "kind": "method", "name": "_clear", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -38014,7 +38542,7 @@ "return": null }, { - "__docId__": 1944, + "__docId__": 1962, "kind": "variable", "name": "sceneObjectCullStates", "memberof": "src/plugins/lib/culling/ObjectCullStates.js", @@ -38035,7 +38563,7 @@ "ignore": true }, { - "__docId__": 1945, + "__docId__": 1963, "kind": "function", "name": "getObjectCullStates", "memberof": "src/plugins/lib/culling/ObjectCullStates.js", @@ -38065,7 +38593,7 @@ } }, { - "__docId__": 1946, + "__docId__": 1964, "kind": "file", "name": "src/plugins/lib/earcut.js", "content": "/** @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};", @@ -38076,7 +38604,7 @@ "lineNumber": 1 }, { - "__docId__": 1947, + "__docId__": 1965, "kind": "function", "name": "linkedList", "memberof": "src/plugins/lib/earcut.js", @@ -38131,7 +38659,7 @@ "ignore": true }, { - "__docId__": 1948, + "__docId__": 1966, "kind": "function", "name": "filterPoints", "memberof": "src/plugins/lib/earcut.js", @@ -38168,7 +38696,7 @@ "ignore": true }, { - "__docId__": 1949, + "__docId__": 1967, "kind": "function", "name": "earcutLinked", "memberof": "src/plugins/lib/earcut.js", @@ -38231,7 +38759,7 @@ "ignore": true }, { - "__docId__": 1950, + "__docId__": 1968, "kind": "function", "name": "isEar", "memberof": "src/plugins/lib/earcut.js", @@ -38262,7 +38790,7 @@ "ignore": true }, { - "__docId__": 1951, + "__docId__": 1969, "kind": "function", "name": "isEarHashed", "memberof": "src/plugins/lib/earcut.js", @@ -38311,7 +38839,7 @@ "ignore": true }, { - "__docId__": 1952, + "__docId__": 1970, "kind": "function", "name": "cureLocalIntersections", "memberof": "src/plugins/lib/earcut.js", @@ -38354,7 +38882,7 @@ "ignore": true }, { - "__docId__": 1953, + "__docId__": 1971, "kind": "function", "name": "splitEarcut", "memberof": "src/plugins/lib/earcut.js", @@ -38411,7 +38939,7 @@ "ignore": true }, { - "__docId__": 1954, + "__docId__": 1972, "kind": "function", "name": "eliminateHoles", "memberof": "src/plugins/lib/earcut.js", @@ -38460,7 +38988,7 @@ "ignore": true }, { - "__docId__": 1955, + "__docId__": 1973, "kind": "function", "name": "compareX", "memberof": "src/plugins/lib/earcut.js", @@ -38497,7 +39025,7 @@ "ignore": true }, { - "__docId__": 1956, + "__docId__": 1974, "kind": "function", "name": "eliminateHole", "memberof": "src/plugins/lib/earcut.js", @@ -38530,7 +39058,7 @@ "ignore": true }, { - "__docId__": 1957, + "__docId__": 1975, "kind": "function", "name": "findHoleBridge", "memberof": "src/plugins/lib/earcut.js", @@ -38567,7 +39095,7 @@ "ignore": true }, { - "__docId__": 1958, + "__docId__": 1976, "kind": "function", "name": "sectorContainsSector", "memberof": "src/plugins/lib/earcut.js", @@ -38604,7 +39132,7 @@ "ignore": true }, { - "__docId__": 1959, + "__docId__": 1977, "kind": "function", "name": "indexCurve", "memberof": "src/plugins/lib/earcut.js", @@ -38649,7 +39177,7 @@ "ignore": true }, { - "__docId__": 1960, + "__docId__": 1978, "kind": "function", "name": "sortLinked", "memberof": "src/plugins/lib/earcut.js", @@ -38680,7 +39208,7 @@ "ignore": true }, { - "__docId__": 1961, + "__docId__": 1979, "kind": "function", "name": "zOrder", "memberof": "src/plugins/lib/earcut.js", @@ -38735,7 +39263,7 @@ "ignore": true }, { - "__docId__": 1962, + "__docId__": 1980, "kind": "function", "name": "getLeftmost", "memberof": "src/plugins/lib/earcut.js", @@ -38766,7 +39294,7 @@ "ignore": true }, { - "__docId__": 1963, + "__docId__": 1981, "kind": "function", "name": "pointInTriangle", "memberof": "src/plugins/lib/earcut.js", @@ -38839,7 +39367,7 @@ "ignore": true }, { - "__docId__": 1964, + "__docId__": 1982, "kind": "function", "name": "isValidDiagonal", "memberof": "src/plugins/lib/earcut.js", @@ -38876,7 +39404,7 @@ "ignore": true }, { - "__docId__": 1965, + "__docId__": 1983, "kind": "function", "name": "area", "memberof": "src/plugins/lib/earcut.js", @@ -38919,7 +39447,7 @@ "ignore": true }, { - "__docId__": 1966, + "__docId__": 1984, "kind": "function", "name": "equals", "memberof": "src/plugins/lib/earcut.js", @@ -38956,7 +39484,7 @@ "ignore": true }, { - "__docId__": 1967, + "__docId__": 1985, "kind": "function", "name": "intersects", "memberof": "src/plugins/lib/earcut.js", @@ -39005,7 +39533,7 @@ "ignore": true }, { - "__docId__": 1968, + "__docId__": 1986, "kind": "function", "name": "onSegment", "memberof": "src/plugins/lib/earcut.js", @@ -39048,7 +39576,7 @@ "ignore": true }, { - "__docId__": 1969, + "__docId__": 1987, "kind": "function", "name": "sign", "memberof": "src/plugins/lib/earcut.js", @@ -39079,7 +39607,7 @@ "ignore": true }, { - "__docId__": 1970, + "__docId__": 1988, "kind": "function", "name": "intersectsPolygon", "memberof": "src/plugins/lib/earcut.js", @@ -39116,7 +39644,7 @@ "ignore": true }, { - "__docId__": 1971, + "__docId__": 1989, "kind": "function", "name": "locallyInside", "memberof": "src/plugins/lib/earcut.js", @@ -39153,7 +39681,7 @@ "ignore": true }, { - "__docId__": 1972, + "__docId__": 1990, "kind": "function", "name": "middleInside", "memberof": "src/plugins/lib/earcut.js", @@ -39190,7 +39718,7 @@ "ignore": true }, { - "__docId__": 1973, + "__docId__": 1991, "kind": "function", "name": "splitPolygon", "memberof": "src/plugins/lib/earcut.js", @@ -39227,7 +39755,7 @@ "ignore": true }, { - "__docId__": 1974, + "__docId__": 1992, "kind": "function", "name": "insertNode", "memberof": "src/plugins/lib/earcut.js", @@ -39276,7 +39804,7 @@ "ignore": true }, { - "__docId__": 1975, + "__docId__": 1993, "kind": "function", "name": "removeNode", "memberof": "src/plugins/lib/earcut.js", @@ -39303,7 +39831,7 @@ "ignore": true }, { - "__docId__": 1976, + "__docId__": 1994, "kind": "function", "name": "Node", "memberof": "src/plugins/lib/earcut.js", @@ -39342,7 +39870,7 @@ "ignore": true }, { - "__docId__": 1977, + "__docId__": 1995, "kind": "function", "name": "deviation", "memberof": "src/plugins/lib/earcut.js", @@ -39391,7 +39919,7 @@ "ignore": true }, { - "__docId__": 1978, + "__docId__": 1996, "kind": "function", "name": "signedArea", "memberof": "src/plugins/lib/earcut.js", @@ -39440,7 +39968,7 @@ "ignore": true }, { - "__docId__": 1979, + "__docId__": 1997, "kind": "function", "name": "flatten", "memberof": "src/plugins/lib/earcut.js", @@ -39471,7 +39999,7 @@ "ignore": true }, { - "__docId__": 1980, + "__docId__": 1998, "kind": "function", "name": "earcut", "memberof": "src/plugins/lib/earcut.js", @@ -39513,7 +40041,7 @@ } }, { - "__docId__": 1981, + "__docId__": 1999, "kind": "file", "name": "src/plugins/lib/html/Dot.js", "content": "import { os } from \"../../../viewer/utils/os.js\";\n/** @private */\nclass Dot {\n\n constructor(parentElement, cfg = {}) {\n\n this._highlightClass = \"viewer-ruler-dot-highlighted\";\n\n this._x = 0;\n this._y = 0;\n\n this._dot = document.createElement('div');\n this._dot.className += this._dot.className ? ' viewer-ruler-dot' : 'viewer-ruler-dot';\n\n this._dotClickable = document.createElement('div');\n this._dotClickable.className += this._dotClickable.className ? ' viewer-ruler-dot-clickable' : 'viewer-ruler-dot-clickable';\n\n this._visible = !!cfg.visible;\n this._culled = false;\n\n var dot = this._dot;\n var dotStyle = dot.style;\n dotStyle[\"border-radius\"] = 25 + \"px\";\n dotStyle.border = \"solid 2px white\";\n dotStyle.background = \"lightgreen\";\n dotStyle.position = \"absolute\";\n dotStyle[\"z-index\"] = cfg.zIndex === undefined ? \"40000005\" : cfg.zIndex ;\n dotStyle.width = 8 + \"px\";\n dotStyle.height = 8 + \"px\";\n dotStyle.visibility = cfg.visible !== false ? \"visible\" : \"hidden\";\n dotStyle.top = 0 + \"px\";\n dotStyle.left = 0 + \"px\";\n dotStyle[\"box-shadow\"] = \"0 2px 5px 0 #182A3D;\";\n dotStyle[\"opacity\"] = 1.0;\n dotStyle[\"pointer-events\"] = \"none\";\n if (cfg.onContextMenu) {\n // dotStyle[\"cursor\"] = \"context-menu\";\n }\n parentElement.appendChild(dot);\n\n var dotClickable = this._dotClickable;\n var dotClickableStyle = dotClickable.style;\n dotClickableStyle[\"border-radius\"] = 35 + \"px\";\n dotClickableStyle.border = \"solid 10px white\";\n dotClickableStyle.position = \"absolute\";\n dotClickableStyle[\"z-index\"] = cfg.zIndex === undefined ? \"40000007\" : (cfg.zIndex + 1);\n dotClickableStyle.width = 8 + \"px\";\n dotClickableStyle.height = 8 + \"px\";\n dotClickableStyle.visibility = \"visible\";\n dotClickableStyle.top = 0 + \"px\";\n dotClickableStyle.left = 0 + \"px\";\n dotClickableStyle[\"opacity\"] = 0.0;\n dotClickableStyle[\"pointer-events\"] = \"none\";\n if (cfg.onContextMenu) {\n // dotClickableStyle[\"cursor\"] = \"context-menu\";\n }\n parentElement.appendChild(dotClickable);\n\n dotClickable.addEventListener('click', (event) => {\n parentElement.dispatchEvent(new MouseEvent('mouseover', event));\n });\n\n if (cfg.onMouseOver) {\n dotClickable.addEventListener('mouseover', (event) => {\n cfg.onMouseOver(event, this);\n parentElement.dispatchEvent(new MouseEvent('mouseover', event));\n });\n }\n\n if (cfg.onMouseLeave) {\n dotClickable.addEventListener('mouseleave', (event) => {\n cfg.onMouseLeave(event, this);\n });\n }\n\n if (cfg.onMouseWheel) {\n dotClickable.addEventListener('wheel', (event) => {\n cfg.onMouseWheel(event, this);\n });\n }\n\n if (cfg.onMouseDown) {\n dotClickable.addEventListener('mousedown', (event) => {\n cfg.onMouseDown(event, this);\n });\n }\n\n if (cfg.onMouseUp) {\n dotClickable.addEventListener('mouseup', (event) => {\n cfg.onMouseUp(event, this);\n });\n }\n\n if (cfg.onMouseMove) {\n dotClickable.addEventListener('mousemove', (event) => {\n cfg.onMouseMove(event, this);\n });\n }\n\n if (cfg.onContextMenu) {\n if(os.isIphoneSafari()){\n dotClickable.addEventListener('touchstart', (event) => {\n event.preventDefault();\n if(this._timeout){\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n this._timeout = setTimeout(() => {\n event.clientX = event.touches[0].clientX;\n event.clientY = event.touches[0].clientY;\n cfg.onContextMenu(event, this);\n clearTimeout(this._timeout);\n this._timeout = null;\n }, 500);\n })\n\n dotClickable.addEventListener('touchend', (event) => {\n event.preventDefault();\n //stops short touches from calling the timeout\n if(this._timeout) {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n } )\n\n }\n else {\n dotClickable.addEventListener('contextmenu', (event) => {\n console.log(event);\n cfg.onContextMenu(event, this);\n event.preventDefault();\n event.stopPropagation();\n console.log(\"Label context menu\")\n });\n }\n \n }\n \n this.setPos(cfg.x || 0, cfg.y || 0);\n this.setFillColor(cfg.fillColor);\n this.setBorderColor(cfg.borderColor);\n }\n\n setPos(x, y) {\n this._x = x;\n this._y = y;\n var dotStyle = this._dot.style;\n dotStyle[\"left\"] = (Math.round(x) - 4) + 'px';\n dotStyle[\"top\"] = (Math.round(y) - 4) + 'px';\n\n var dotClickableStyle = this._dotClickable.style;\n dotClickableStyle[\"left\"] = (Math.round(x) - 9) + 'px';\n dotClickableStyle[\"top\"] = (Math.round(y) - 9) + 'px';\n }\n\n setFillColor(color) {\n this._dot.style.background = color || \"lightgreen\";\n }\n\n setBorderColor(color) {\n this._dot.style.border = \"solid 2px\" + (color || \"black\");\n }\n\n setOpacity(opacity) {\n this._dot.style.opacity = opacity;\n }\n\n setVisible(visible) {\n if (this._visible === visible) {\n return;\n }\n this._visible = !!visible;\n this._dot.style.visibility = this._visible && !this._culled ? \"visible\" : \"hidden\";\n }\n\n setCulled(culled) {\n if (this._culled === culled) {\n return;\n }\n this._culled = !!culled;\n this._dot.style.visibility = this._visible && !this._culled ? \"visible\" : \"hidden\";\n }\n\n setClickable(clickable) {\n this._dotClickable.style[\"pointer-events\"] = (clickable) ? \"all\" : \"none\";\n }\n\n setHighlighted(highlighted) {\n if (this._highlighted === highlighted) {\n return;\n }\n this._highlighted = !!highlighted;\n if (this._highlighted) {\n this._dot.classList.add(this._highlightClass);\n } else {\n this._dot.classList.remove(this._highlightClass);\n }\n }\n \n destroy() {\n this.setVisible(false);\n if (this._dot.parentElement) {\n this._dot.parentElement.removeChild(this._dot);\n }\n if (this._dotClickable.parentElement) {\n this._dotClickable.parentElement.removeChild(this._dotClickable);\n }\n }\n}\n\nexport {Dot};\n", @@ -39524,7 +40052,7 @@ "lineNumber": 1 }, { - "__docId__": 1982, + "__docId__": 2000, "kind": "class", "name": "Dot", "memberof": "src/plugins/lib/html/Dot.js", @@ -39540,7 +40068,7 @@ "ignore": true }, { - "__docId__": 1983, + "__docId__": 2001, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39554,7 +40082,7 @@ "undocument": true }, { - "__docId__": 1984, + "__docId__": 2002, "kind": "member", "name": "_highlightClass", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39572,7 +40100,7 @@ } }, { - "__docId__": 1985, + "__docId__": 2003, "kind": "member", "name": "_x", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39590,7 +40118,7 @@ } }, { - "__docId__": 1986, + "__docId__": 2004, "kind": "member", "name": "_y", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39608,7 +40136,7 @@ } }, { - "__docId__": 1987, + "__docId__": 2005, "kind": "member", "name": "_dot", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39626,7 +40154,7 @@ } }, { - "__docId__": 1988, + "__docId__": 2006, "kind": "member", "name": "_dotClickable", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39644,7 +40172,7 @@ } }, { - "__docId__": 1989, + "__docId__": 2007, "kind": "member", "name": "_visible", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39662,7 +40190,7 @@ } }, { - "__docId__": 1990, + "__docId__": 2008, "kind": "member", "name": "_culled", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39680,7 +40208,7 @@ } }, { - "__docId__": 1991, + "__docId__": 2009, "kind": "member", "name": "_timeout", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39698,7 +40226,7 @@ } }, { - "__docId__": 1995, + "__docId__": 2013, "kind": "method", "name": "setPos", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39727,7 +40255,7 @@ "return": null }, { - "__docId__": 1998, + "__docId__": 2016, "kind": "method", "name": "setFillColor", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39750,7 +40278,7 @@ "return": null }, { - "__docId__": 1999, + "__docId__": 2017, "kind": "method", "name": "setBorderColor", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39773,7 +40301,7 @@ "return": null }, { - "__docId__": 2000, + "__docId__": 2018, "kind": "method", "name": "setOpacity", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39796,7 +40324,7 @@ "return": null }, { - "__docId__": 2001, + "__docId__": 2019, "kind": "method", "name": "setVisible", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39819,7 +40347,7 @@ "return": null }, { - "__docId__": 2003, + "__docId__": 2021, "kind": "method", "name": "setCulled", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39842,7 +40370,7 @@ "return": null }, { - "__docId__": 2005, + "__docId__": 2023, "kind": "method", "name": "setClickable", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39865,7 +40393,7 @@ "return": null }, { - "__docId__": 2006, + "__docId__": 2024, "kind": "method", "name": "setHighlighted", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39888,7 +40416,7 @@ "return": null }, { - "__docId__": 2007, + "__docId__": 2025, "kind": "member", "name": "_highlighted", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39906,7 +40434,7 @@ } }, { - "__docId__": 2008, + "__docId__": 2026, "kind": "method", "name": "destroy", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -39922,7 +40450,7 @@ "return": null }, { - "__docId__": 2009, + "__docId__": 2027, "kind": "file", "name": "src/plugins/lib/html/Label.js", "content": "import { os } from \"../../../viewer/utils/os.js\";\n/** @private */\nclass Label {\n\n constructor(parentElement, cfg = {}) {\n\n this._highlightClass = \"viewer-ruler-label-highlighted\";\n\n this._prefix = cfg.prefix || \"\";\n this._x = 0;\n this._y = 0;\n this._visible = true;\n this._culled = false;\n\n this._label = document.createElement('div');\n this._label.className += this._label.className ? ' viewer-ruler-label' : 'viewer-ruler-label';\n this._timeout = null;\n\n var label = this._label;\n var style = label.style;\n\n style[\"border-radius\"] = 5 + \"px\";\n style.color = \"white\";\n style.padding = \"4px\";\n style.border = \"solid 1px\";\n style.background = \"lightgreen\";\n style.position = \"absolute\";\n style[\"z-index\"] = cfg.zIndex === undefined ? \"5000005\" : cfg.zIndex;\n style.width = \"auto\";\n style.height = \"auto\";\n style.visibility = \"visible\";\n style.top = 0 + \"px\";\n style.left = 0 + \"px\";\n style[\"pointer-events\"] = \"all\";\n style[\"opacity\"] = 1.0;\n if (cfg.onContextMenu) {\n // style[\"cursor\"] = \"context-menu\";\n }\n label.innerText = \"\";\n\n parentElement.appendChild(label);\n\n this.setPos(cfg.x || 0, cfg.y || 0);\n this.setFillColor(cfg.fillColor);\n this.setBorderColor(cfg.fillColor);\n this.setText(cfg.text);\n\n if (cfg.onMouseOver) {\n label.addEventListener('mouseover', (event) => {\n cfg.onMouseOver(event, this);\n event.preventDefault();\n });\n }\n\n if (cfg.onMouseLeave) {\n label.addEventListener('mouseleave', (event) => {\n cfg.onMouseLeave(event, this);\n event.preventDefault();\n });\n }\n\n if (cfg.onMouseWheel) {\n label.addEventListener('wheel', (event) => {\n cfg.onMouseWheel(event, this);\n });\n }\n\n if (cfg.onMouseDown) {\n label.addEventListener('mousedown', (event) => {\n cfg.onMouseDown(event, this);\n event.stopPropagation();\n });\n }\n\n if (cfg.onMouseUp) {\n label.addEventListener('mouseup', (event) => {\n cfg.onMouseUp(event, this);\n event.stopPropagation();\n });\n }\n\n if (cfg.onMouseMove) {\n label.addEventListener('mousemove', (event) => {\n cfg.onMouseMove(event, this);\n });\n }\n\n if (cfg.onContextMenu) {\n if(os.isIphoneSafari()){\n label.addEventListener('touchstart', (event) => {\n event.preventDefault();\n if(this._timeout){\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n this._timeout = setTimeout(() => {\n event.clientX = event.touches[0].clientX;\n event.clientY = event.touches[0].clientY;\n cfg.onContextMenu(event, this);\n clearTimeout(this._timeout);\n this._timeout = null;\n }, 500);\n })\n\n label.addEventListener('touchend', (event) => {\n event.preventDefault();\n //stops short touches from calling the timeout\n if(this._timeout) {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n } )\n\n }\n else {\n label.addEventListener('contextmenu', (event) => {\n console.log(event);\n cfg.onContextMenu(event, this);\n event.preventDefault();\n event.stopPropagation();\n console.log(\"Label context menu\")\n });\n }\n \n }\n }\n\n setPos(x, y) {\n this._x = x;\n this._y = y;\n var style = this._label.style;\n style[\"left\"] = (Math.round(x) - 20) + 'px';\n style[\"top\"] = (Math.round(y) - 12) + 'px';\n }\n\n setPosOnWire(x1, y1, x2, y2) {\n var x = x1 + ((x2 - x1) * 0.5);\n var y = y1 + ((y2 - y1) * 0.5);\n var style = this._label.style;\n style[\"left\"] = (Math.round(x) - 20) + 'px';\n style[\"top\"] = (Math.round(y) - 12) + 'px';\n }\n\n setPosBetweenWires(x1, y1, x2, y2, x3, y3) {\n var x = (x1 + x2 + x3) / 3;\n var y = (y1 + y2 + y3) / 3;\n var style = this._label.style;\n style[\"left\"] = (Math.round(x) - 20) + 'px';\n style[\"top\"] = (Math.round(y) - 12) + 'px';\n }\n\n setText(text) {\n this._label.innerHTML = this._prefix + (text || \"\");\n }\n\n setFillColor(color) {\n this._fillColor = color || \"lightgreen\";\n this._label.style.background =this._fillColor;\n }\n\n setBorderColor(color) {\n this._borderColor = color || \"black\";\n this._label.style.border = \"solid 1px \" + this._borderColor;\n }\n\n setOpacity(opacity) {\n this._label.style.opacity = opacity;\n }\n\n setVisible(visible) {\n if (this._visible === visible) {\n return;\n }\n this._visible = !!visible;\n this._label.style.visibility = this._visible && !this._culled ? \"visible\" : \"hidden\";\n }\n\n setCulled(culled) {\n if (this._culled === culled) {\n return;\n }\n this._culled = !!culled;\n this._label.style.visibility = this._visible && !this._culled ? \"visible\" : \"hidden\";\n }\n\n setHighlighted(highlighted) {\n if (this._highlighted === highlighted) {\n return;\n }\n this._highlighted = !!highlighted;\n if (this._highlighted) {\n this._label.classList.add(this._highlightClass);\n } else {\n this._label.classList.remove(this._highlightClass);\n }\n }\n\n setClickable(clickable) {\n this._label.style[\"pointer-events\"] = (clickable) ? \"all\" : \"none\";\n }\n\n setPrefix(prefix) {\n if(this._prefix === prefix){\n return;\n }\n this._prefix = prefix;\n }\n\n destroy() {\n if (this._label.parentElement) {\n this._label.parentElement.removeChild(this._label);\n }\n }\n\n \n}\n\nexport {Label};\n\n", @@ -39933,7 +40461,7 @@ "lineNumber": 1 }, { - "__docId__": 2010, + "__docId__": 2028, "kind": "class", "name": "Label", "memberof": "src/plugins/lib/html/Label.js", @@ -39949,7 +40477,7 @@ "ignore": true }, { - "__docId__": 2011, + "__docId__": 2029, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -39963,7 +40491,7 @@ "undocument": true }, { - "__docId__": 2012, + "__docId__": 2030, "kind": "member", "name": "_highlightClass", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -39981,7 +40509,7 @@ } }, { - "__docId__": 2013, + "__docId__": 2031, "kind": "member", "name": "_prefix", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -39999,7 +40527,7 @@ } }, { - "__docId__": 2014, + "__docId__": 2032, "kind": "member", "name": "_x", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40017,7 +40545,7 @@ } }, { - "__docId__": 2015, + "__docId__": 2033, "kind": "member", "name": "_y", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40035,7 +40563,7 @@ } }, { - "__docId__": 2016, + "__docId__": 2034, "kind": "member", "name": "_visible", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40053,7 +40581,7 @@ } }, { - "__docId__": 2017, + "__docId__": 2035, "kind": "member", "name": "_culled", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40071,7 +40599,7 @@ } }, { - "__docId__": 2018, + "__docId__": 2036, "kind": "member", "name": "_label", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40089,7 +40617,7 @@ } }, { - "__docId__": 2019, + "__docId__": 2037, "kind": "member", "name": "_timeout", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40107,7 +40635,7 @@ } }, { - "__docId__": 2024, + "__docId__": 2042, "kind": "method", "name": "setPos", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40136,7 +40664,7 @@ "return": null }, { - "__docId__": 2027, + "__docId__": 2045, "kind": "method", "name": "setPosOnWire", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40177,7 +40705,7 @@ "return": null }, { - "__docId__": 2028, + "__docId__": 2046, "kind": "method", "name": "setPosBetweenWires", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40230,7 +40758,7 @@ "return": null }, { - "__docId__": 2029, + "__docId__": 2047, "kind": "method", "name": "setText", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40253,7 +40781,7 @@ "return": null }, { - "__docId__": 2030, + "__docId__": 2048, "kind": "method", "name": "setFillColor", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40276,7 +40804,7 @@ "return": null }, { - "__docId__": 2031, + "__docId__": 2049, "kind": "member", "name": "_fillColor", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40294,7 +40822,7 @@ } }, { - "__docId__": 2032, + "__docId__": 2050, "kind": "method", "name": "setBorderColor", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40317,7 +40845,7 @@ "return": null }, { - "__docId__": 2033, + "__docId__": 2051, "kind": "member", "name": "_borderColor", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40335,7 +40863,7 @@ } }, { - "__docId__": 2034, + "__docId__": 2052, "kind": "method", "name": "setOpacity", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40358,7 +40886,7 @@ "return": null }, { - "__docId__": 2035, + "__docId__": 2053, "kind": "method", "name": "setVisible", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40381,7 +40909,7 @@ "return": null }, { - "__docId__": 2037, + "__docId__": 2055, "kind": "method", "name": "setCulled", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40404,7 +40932,7 @@ "return": null }, { - "__docId__": 2039, + "__docId__": 2057, "kind": "method", "name": "setHighlighted", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40427,7 +40955,7 @@ "return": null }, { - "__docId__": 2040, + "__docId__": 2058, "kind": "member", "name": "_highlighted", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40445,7 +40973,7 @@ } }, { - "__docId__": 2041, + "__docId__": 2059, "kind": "method", "name": "setClickable", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40468,7 +40996,7 @@ "return": null }, { - "__docId__": 2042, + "__docId__": 2060, "kind": "method", "name": "setPrefix", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40491,7 +41019,7 @@ "return": null }, { - "__docId__": 2044, + "__docId__": 2062, "kind": "method", "name": "destroy", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -40507,7 +41035,7 @@ "return": null }, { - "__docId__": 2045, + "__docId__": 2063, "kind": "file", "name": "src/plugins/lib/html/Wire.js", "content": "import { os } from \"../../../viewer/utils/os.js\";\n/** @private */\nclass Wire {\n\n constructor(parentElement, cfg = {}) {\n\n this._color = cfg.color || \"black\";\n this._highlightClass = \"viewer-ruler-wire-highlighted\";\n\n this._wire = document.createElement('div');\n this._wire.className += this._wire.className ? ' viewer-ruler-wire' : 'viewer-ruler-wire';\n\n this._wireClickable = document.createElement('div');\n this._wireClickable.className += this._wireClickable.className ? ' viewer-ruler-wire-clickable' : 'viewer-ruler-wire-clickable';\n\n this._thickness = cfg.thickness || 1.0;\n this._thicknessClickable = cfg.thicknessClickable || 6.0;\n\n this._visible = true;\n this._culled = false;\n\n var wire = this._wire;\n var wireStyle = wire.style;\n\n wireStyle.border = \"solid \" + this._thickness + \"px \" + this._color\n wireStyle.position = \"absolute\";\n wireStyle[\"z-index\"] = cfg.zIndex === undefined ? \"2000001\" : cfg.zIndex;\n wireStyle.width = 0 + \"px\";\n wireStyle.height = 0 + \"px\";\n wireStyle.visibility = \"visible\";\n wireStyle.top = 0 + \"px\";\n wireStyle.left = 0 + \"px\";\n wireStyle['-webkit-transform-origin'] = \"0 0\";\n wireStyle['-moz-transform-origin'] = \"0 0\";\n wireStyle['-ms-transform-origin'] = \"0 0\";\n wireStyle['-o-transform-origin'] = \"0 0\";\n wireStyle['transform-origin'] = \"0 0\";\n wireStyle['-webkit-transform'] = 'rotate(0deg)';\n wireStyle['-moz-transform'] = 'rotate(0deg)';\n wireStyle['-ms-transform'] = 'rotate(0deg)';\n wireStyle['-o-transform'] = 'rotate(0deg)';\n wireStyle['transform'] = 'rotate(0deg)';\n wireStyle[\"opacity\"] = 1.0;\n wireStyle[\"pointer-events\"] = \"none\";\n if (cfg.onContextMenu) {\n // wireStyle[\"cursor\"] = \"context-menu\";\n }\n\n parentElement.appendChild(wire);\n\n var wireClickable = this._wireClickable;\n var wireClickableStyle = wireClickable.style;\n\n wireClickableStyle.border = \"solid \" + this._thicknessClickable + \"px \" + this._color;\n wireClickableStyle.position = \"absolute\";\n wireClickableStyle[\"z-index\"] = cfg.zIndex === undefined ? \"2000002\" : (cfg.zIndex + 1);\n wireClickableStyle.width = 0 + \"px\";\n wireClickableStyle.height = 0 + \"px\";\n wireClickableStyle.visibility = \"visible\";\n wireClickableStyle.top = 0 + \"px\";\n wireClickableStyle.left = 0 + \"px\";\n // wireClickableStyle[\"pointer-events\"] = \"none\";\n wireClickableStyle['-webkit-transform-origin'] = \"0 0\";\n wireClickableStyle['-moz-transform-origin'] = \"0 0\";\n wireClickableStyle['-ms-transform-origin'] = \"0 0\";\n wireClickableStyle['-o-transform-origin'] = \"0 0\";\n wireClickableStyle['transform-origin'] = \"0 0\";\n wireClickableStyle['-webkit-transform'] = 'rotate(0deg)';\n wireClickableStyle['-moz-transform'] = 'rotate(0deg)';\n wireClickableStyle['-ms-transform'] = 'rotate(0deg)';\n wireClickableStyle['-o-transform'] = 'rotate(0deg)';\n wireClickableStyle['transform'] = 'rotate(0deg)';\n wireClickableStyle[\"opacity\"] = 0.0;\n wireClickableStyle[\"pointer-events\"] = \"none\";\n if (cfg.onContextMenu) {\n //wireClickableStyle[\"cursor\"] = \"context-menu\";\n }\n\n parentElement.appendChild(wireClickable);\n\n if (cfg.onMouseOver) {\n wireClickable.addEventListener('mouseover', (event) => {\n cfg.onMouseOver(event, this);\n });\n }\n\n if (cfg.onMouseLeave) {\n wireClickable.addEventListener('mouseleave', (event) => {\n cfg.onMouseLeave(event, this);\n });\n }\n\n if (cfg.onMouseWheel) {\n wireClickable.addEventListener('wheel', (event) => {\n cfg.onMouseWheel(event, this);\n });\n }\n\n if (cfg.onMouseDown) {\n wireClickable.addEventListener('mousedown', (event) => {\n cfg.onMouseDown(event, this);\n });\n }\n\n if (cfg.onMouseUp) {\n wireClickable.addEventListener('mouseup', (event) => {\n cfg.onMouseUp(event, this);\n });\n }\n\n if (cfg.onMouseMove) {\n wireClickable.addEventListener('mousemove', (event) => {\n cfg.onMouseMove(event, this);\n });\n }\n\n if (cfg.onContextMenu) {\n if(os.isIphoneSafari()){\n wireClickable.addEventListener('touchstart', (event) => {\n event.preventDefault();\n if(this._timeout){\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n this._timeout = setTimeout(() => {\n event.clientX = event.touches[0].clientX;\n event.clientY = event.touches[0].clientY;\n cfg.onContextMenu(event, this);\n clearTimeout(this._timeout);\n this._timeout = null;\n }, 500);\n })\n\n wireClickable.addEventListener('touchend', (event) => {\n event.preventDefault();\n //stops short touches from calling the timeout\n if(this._timeout) {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n } )\n\n }\n else {\n wireClickable.addEventListener('contextmenu', (event) => {\n console.log(event);\n cfg.onContextMenu(event, this);\n event.preventDefault();\n event.stopPropagation();\n console.log(\"Label context menu\")\n });\n }\n \n }\n\n this._x1 = 0;\n this._y1 = 0;\n this._x2 = 0;\n this._y2 = 0;\n\n this._update();\n }\n\n get visible() {\n return this._wire.style.visibility === \"visible\";\n }\n\n _update() {\n\n var length = Math.abs(Math.sqrt((this._x1 - this._x2) * (this._x1 - this._x2) + (this._y1 - this._y2) * (this._y1 - this._y2)));\n var angle = Math.atan2(this._y2 - this._y1, this._x2 - this._x1) * 180.0 / Math.PI;\n\n var wireStyle = this._wire.style;\n wireStyle[\"width\"] = Math.round(length) + 'px';\n wireStyle[\"left\"] = Math.round(this._x1) + 'px';\n wireStyle[\"top\"] = Math.round(this._y1) + 'px';\n wireStyle['-webkit-transform'] = 'rotate(' + angle + 'deg)';\n wireStyle['-moz-transform'] = 'rotate(' + angle + 'deg)';\n wireStyle['-ms-transform'] = 'rotate(' + angle + 'deg)';\n wireStyle['-o-transform'] = 'rotate(' + angle + 'deg)';\n wireStyle['transform'] = 'rotate(' + angle + 'deg)';\n\n var wireClickableStyle = this._wireClickable.style;\n wireClickableStyle[\"width\"] = Math.round(length) + 'px';\n wireClickableStyle[\"left\"] = Math.round(this._x1) + 'px';\n wireClickableStyle[\"top\"] = Math.round(this._y1) + 'px';\n wireClickableStyle['-webkit-transform'] = 'rotate(' + angle + 'deg)';\n wireClickableStyle['-moz-transform'] = 'rotate(' + angle + 'deg)';\n wireClickableStyle['-ms-transform'] = 'rotate(' + angle + 'deg)';\n wireClickableStyle['-o-transform'] = 'rotate(' + angle + 'deg)';\n wireClickableStyle['transform'] = 'rotate(' + angle + 'deg)';\n }\n\n setStartAndEnd(x1, y1, x2, y2) {\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n this._update();\n }\n\n setColor(color) {\n this._color = color || \"black\";\n this._wire.style.border = \"solid \" + this._thickness + \"px \" + this._color;\n }\n\n setOpacity(opacity) {\n this._wire.style.opacity = opacity;\n }\n\n setVisible(visible) {\n if (this._visible === visible) {\n return;\n }\n this._visible = !!visible;\n this._wire.style.visibility = this._visible && !this._culled ? \"visible\" : \"hidden\";\n }\n\n setCulled(culled) {\n if (this._culled === culled) {\n return;\n }\n this._culled = !!culled;\n this._wire.style.visibility = this._visible && !this._culled ? \"visible\" : \"hidden\";\n }\n\n setClickable(clickable) {\n this._wireClickable.style[\"pointer-events\"] = (clickable) ? \"all\" : \"none\";\n }\n\n setHighlighted(highlighted) {\n if (this._highlighted === highlighted) {\n return;\n }\n this._highlighted = !!highlighted;\n if (this._highlighted) {\n this._wire.classList.add(this._highlightClass);\n } else {\n this._wire.classList.remove(this._highlightClass);\n }\n }\n\n destroy(visible) {\n if (this._wire.parentElement) {\n this._wire.parentElement.removeChild(this._wire);\n }\n if (this._wireClickable.parentElement) {\n this._wireClickable.parentElement.removeChild(this._wireClickable);\n }\n }\n}\n\nexport {Wire};\n", @@ -40518,7 +41046,7 @@ "lineNumber": 1 }, { - "__docId__": 2046, + "__docId__": 2064, "kind": "class", "name": "Wire", "memberof": "src/plugins/lib/html/Wire.js", @@ -40534,7 +41062,7 @@ "ignore": true }, { - "__docId__": 2047, + "__docId__": 2065, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40548,7 +41076,7 @@ "undocument": true }, { - "__docId__": 2048, + "__docId__": 2066, "kind": "member", "name": "_color", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40566,7 +41094,7 @@ } }, { - "__docId__": 2049, + "__docId__": 2067, "kind": "member", "name": "_highlightClass", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40584,7 +41112,7 @@ } }, { - "__docId__": 2050, + "__docId__": 2068, "kind": "member", "name": "_wire", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40602,7 +41130,7 @@ } }, { - "__docId__": 2051, + "__docId__": 2069, "kind": "member", "name": "_wireClickable", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40620,7 +41148,7 @@ } }, { - "__docId__": 2052, + "__docId__": 2070, "kind": "member", "name": "_thickness", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40638,7 +41166,7 @@ } }, { - "__docId__": 2053, + "__docId__": 2071, "kind": "member", "name": "_thicknessClickable", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40656,7 +41184,7 @@ } }, { - "__docId__": 2054, + "__docId__": 2072, "kind": "member", "name": "_visible", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40674,7 +41202,7 @@ } }, { - "__docId__": 2055, + "__docId__": 2073, "kind": "member", "name": "_culled", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40692,7 +41220,7 @@ } }, { - "__docId__": 2056, + "__docId__": 2074, "kind": "member", "name": "_timeout", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40710,7 +41238,7 @@ } }, { - "__docId__": 2060, + "__docId__": 2078, "kind": "member", "name": "_x1", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40728,7 +41256,7 @@ } }, { - "__docId__": 2061, + "__docId__": 2079, "kind": "member", "name": "_y1", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40746,7 +41274,7 @@ } }, { - "__docId__": 2062, + "__docId__": 2080, "kind": "member", "name": "_x2", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40764,7 +41292,7 @@ } }, { - "__docId__": 2063, + "__docId__": 2081, "kind": "member", "name": "_y2", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40782,7 +41310,7 @@ } }, { - "__docId__": 2064, + "__docId__": 2082, "kind": "get", "name": "visible", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40801,7 +41329,7 @@ } }, { - "__docId__": 2065, + "__docId__": 2083, "kind": "method", "name": "_update", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40818,7 +41346,7 @@ "return": null }, { - "__docId__": 2066, + "__docId__": 2084, "kind": "method", "name": "setStartAndEnd", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40859,7 +41387,7 @@ "return": null }, { - "__docId__": 2071, + "__docId__": 2089, "kind": "method", "name": "setColor", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40882,7 +41410,7 @@ "return": null }, { - "__docId__": 2073, + "__docId__": 2091, "kind": "method", "name": "setOpacity", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40905,7 +41433,7 @@ "return": null }, { - "__docId__": 2074, + "__docId__": 2092, "kind": "method", "name": "setVisible", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40928,7 +41456,7 @@ "return": null }, { - "__docId__": 2076, + "__docId__": 2094, "kind": "method", "name": "setCulled", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40951,7 +41479,7 @@ "return": null }, { - "__docId__": 2078, + "__docId__": 2096, "kind": "method", "name": "setClickable", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40974,7 +41502,7 @@ "return": null }, { - "__docId__": 2079, + "__docId__": 2097, "kind": "method", "name": "setHighlighted", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -40997,7 +41525,7 @@ "return": null }, { - "__docId__": 2080, + "__docId__": 2098, "kind": "member", "name": "_highlighted", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -41015,7 +41543,7 @@ } }, { - "__docId__": 2081, + "__docId__": 2099, "kind": "method", "name": "destroy", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -41038,7 +41566,7 @@ "return": null }, { - "__docId__": 2082, + "__docId__": 2100, "kind": "file", "name": "src/viewer/Configs.js", "content": "import {math} from \"./scene/math/math.js\";\n\nlet maxDataTextureHeight = 1 << 16;\nlet maxGeometryBatchSize = 5000000\n\n/**\n * Manages global configurations for all {@link Viewer}s.\n *\n * ## Example\n *\n * In the example below, we'll disable xeokit's double-precision support, which gives a performance and memory boost\n * on low-power devices, but also means that we can no longer render double-precision models without jittering.\n *\n * That's OK if we know that we're not going to view models that are geographically vast, or offset far from the World coordinate origin.\n *\n * [[Run this example](/examples/index.html#Configs_disableDoublePrecisionAndRAF)]\n *\n * ````javascript\n * import {Configs, Viewer, XKTLoaderPlugin} from \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js\";\n *\n * // Access xeoit-sdk global configs.\n * // We typically set configs only before we create any Viewers.\n * const configs = new Configs();\n *\n * // Disable 64-bit precision for extra speed.\n * // Only set this config once, before you create any Viewers.\n * configs.doublePrecisionEnabled = false;\n *\n * // Create a Viewer, to which our configs apply\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [-3.933, 2.855, 27.018];\n * viewer.camera.look = [4.400, 3.724, 8.899];\n * viewer.camera.up = [-0.018, 0.999, 0.039];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"../assets/models/xkt/v8/ifc/Duplex.ifc.xkt\"\n * });\n * ````\n */\nexport class Configs {\n\n /**\n * Creates a Configs.\n */\n constructor() {\n\n }\n\n /**\n * Sets whether double precision mode is enabled for Viewers.\n *\n * When double precision mode is enabled (default), Viewers will accurately render models that contain\n * double-precision coordinates, without jittering.\n *\n * Internally, double precision incurs extra performance and memory overhead, so if we're certain that\n * we're not going to render models that rely on double-precision coordinates, then it's a good idea to disable\n * it, especially on low-power devices.\n *\n * This should only be set once, before creating any Viewers.\n *\n * @returns {Boolean}\n */\n set doublePrecisionEnabled(doublePrecision) {\n math.setDoublePrecisionEnabled(doublePrecision);\n }\n\n /**\n * Gets whether double precision mode is enabled for all Viewers.\n *\n * @returns {Boolean}\n */\n get doublePrecisionEnabled() {\n return math.getDoublePrecisionEnabled();\n }\n\n /**\n * Sets the maximum data texture height.\n *\n * Should be a multiple of 1024. Default is 4096, which is the maximum allowed value.\n */\n set maxDataTextureHeight(value) {\n value = Math.ceil(value / 1024) * 1024;\n if (value > 4096) {\n value = 4096;\n } else if (value < 1024) {\n value = 1024;\n }\n maxDataTextureHeight = value;\n }\n\n /**\n * Sets maximum data texture height.\n * @returns {*|number}\n */\n get maxDataTextureHeight() {\n return maxDataTextureHeight;\n }\n\n /**\n * Sets the maximum batched geometry VBO size.\n *\n * Default value is 5000000, which is the maximum size.\n *\n * Minimum size is 100000.\n */\n set maxGeometryBatchSize(value) {\n if (value < 100000) {\n value = 100000;\n } else if (value > 5000000) {\n value = 5000000;\n }\n maxGeometryBatchSize = value;\n }\n\n /**\n * Gets the maximum batched geometry VBO size.\n */\n get maxGeometryBatchSize() {\n return maxGeometryBatchSize;\n }\n}\n\n", @@ -41049,7 +41577,7 @@ "lineNumber": 1 }, { - "__docId__": 2083, + "__docId__": 2101, "kind": "variable", "name": "maxDataTextureHeight", "memberof": "src/viewer/Configs.js", @@ -41070,7 +41598,7 @@ "ignore": true }, { - "__docId__": 2084, + "__docId__": 2102, "kind": "variable", "name": "maxGeometryBatchSize", "memberof": "src/viewer/Configs.js", @@ -41091,7 +41619,7 @@ "ignore": true }, { - "__docId__": 2085, + "__docId__": 2103, "kind": "class", "name": "Configs", "memberof": "src/viewer/Configs.js", @@ -41106,7 +41634,7 @@ "interface": false }, { - "__docId__": 2086, + "__docId__": 2104, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/Configs.js~Configs", @@ -41119,7 +41647,7 @@ "lineNumber": 50 }, { - "__docId__": 2087, + "__docId__": 2105, "kind": "set", "name": "doublePrecisionEnabled", "memberof": "src/viewer/Configs.js~Configs", @@ -41146,7 +41674,7 @@ } }, { - "__docId__": 2088, + "__docId__": 2106, "kind": "get", "name": "doublePrecisionEnabled", "memberof": "src/viewer/Configs.js~Configs", @@ -41178,7 +41706,7 @@ } }, { - "__docId__": 2089, + "__docId__": 2107, "kind": "set", "name": "maxDataTextureHeight", "memberof": "src/viewer/Configs.js~Configs", @@ -41191,7 +41719,7 @@ "lineNumber": 86 }, { - "__docId__": 2090, + "__docId__": 2108, "kind": "get", "name": "maxDataTextureHeight", "memberof": "src/viewer/Configs.js~Configs", @@ -41224,7 +41752,7 @@ } }, { - "__docId__": 2091, + "__docId__": 2109, "kind": "set", "name": "maxGeometryBatchSize", "memberof": "src/viewer/Configs.js~Configs", @@ -41237,7 +41765,7 @@ "lineNumber": 111 }, { - "__docId__": 2092, + "__docId__": 2110, "kind": "get", "name": "maxGeometryBatchSize", "memberof": "src/viewer/Configs.js~Configs", @@ -41255,7 +41783,7 @@ } }, { - "__docId__": 2093, + "__docId__": 2111, "kind": "file", "name": "src/viewer/Plugin.js", "content": "import {Map} from \"./scene/utils/Map.js\";\nimport {core} from \"./scene/core.js\";\n\n/**\n @desc Base class for {@link Viewer} plugin classes.\n */\nclass Plugin {\n\n /**\n * Creates this Plugin and installs it into the given {@link Viewer}.\n *\n * @param {string} id ID for this plugin, unique among all plugins in the viewer.\n * @param {Viewer} viewer The viewer.\n * @param {Object} [cfg] Options\n */\n constructor(id, viewer, cfg) {\n\n /**\n * ID for this Plugin, unique within its {@link Viewer}.\n *\n * @type {string}\n */\n this.id = (cfg && cfg.id) ? cfg.id : id;\n\n /**\n * The Viewer that contains this Plugin.\n *\n * @type {Viewer}\n */\n this.viewer = viewer;\n\n this._subIdMap = null; // Subscription subId pool\n this._subIdEvents = null; // Subscription subIds mapped to event names\n this._eventSubs = null; // Event names mapped to subscribers\n this._eventSubsNum = null;\n this._events = null; // Maps names to events\n this._eventCallDepth = 0; // Helps us catch stack overflows from recursive events\n\n viewer.addPlugin(this);\n }\n\n /**\n * Schedule a task to perform on the next browser interval\n * @param task\n */\n scheduleTask(task) {\n core.scheduleTask(task, null);\n }\n\n /**\n * Fires an event on this Plugin.\n *\n * Notifies existing subscribers to the event, optionally retains the event to give to\n * any subsequent notifications on the event as they are made.\n *\n * @param {String} event The event type name\n * @param {Object} value The event parameters\n * @param {Boolean} [forget=false] When true, does not retain for subsequent subscribers\n */\n fire(event, value, forget) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n this._eventSubsNum = {};\n }\n if (forget !== true) {\n this._events[event] = value || true; // Save notification\n }\n const subs = this._eventSubs[event];\n let sub;\n if (subs) { // Notify subscriptions\n for (const subId in subs) {\n if (subs.hasOwnProperty(subId)) {\n sub = subs[subId];\n this._eventCallDepth++;\n if (this._eventCallDepth < 300) {\n sub.callback.call(sub.scope, value);\n } else {\n this.error(\"fire: potential stack overflow from recursive event '\" + event + \"' - dropping this event\");\n }\n this._eventCallDepth--;\n }\n }\n }\n }\n\n /**\n * Subscribes to an event on this Plugin.\n *\n * The callback is be called with this Plugin as scope.\n *\n * @param {String} event The event\n * @param {Function} callback Called fired on the event\n * @param {Object} [scope=this] Scope for the callback\n * @return {String} Handle to the subscription, which may be used to unsubscribe with {@link #off}.\n */\n on(event, callback, scope) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._subIdMap) {\n this._subIdMap = new Map(); // Subscription subId pool\n }\n if (!this._subIdEvents) {\n this._subIdEvents = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n }\n if (!this._eventSubsNum) {\n this._eventSubsNum = {};\n }\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = {};\n this._eventSubs[event] = subs;\n this._eventSubsNum[event] = 1;\n } else {\n this._eventSubsNum[event]++;\n }\n const subId = this._subIdMap.addItem(); // Create unique subId\n subs[subId] = {\n callback: callback,\n scope: scope || this\n };\n this._subIdEvents[subId] = event;\n const value = this._events[event];\n if (value !== undefined) { // A publication exists, notify callback immediately\n callback.call(scope || this, value);\n }\n return subId;\n }\n\n /**\n * Cancels an event subscription that was previously made with {@link Plugin#on} or {@link Plugin#once}.\n *\n * @param {String} subId Subscription ID\n */\n off(subId) {\n if (subId === undefined || subId === null) {\n return;\n }\n if (!this._subIdEvents) {\n return;\n }\n const event = this._subIdEvents[subId];\n if (event) {\n delete this._subIdEvents[subId];\n const subs = this._eventSubs[event];\n if (subs) {\n delete subs[subId];\n this._eventSubsNum[event]--;\n }\n this._subIdMap.removeItem(subId); // Release subId\n }\n }\n\n /**\n * Subscribes to the next occurrence of the given event, then un-subscribes as soon as the event is subIdd.\n *\n * This is equivalent to calling {@link Plugin#on}, and then calling {@link Plugin#off} inside the callback function.\n *\n * @param {String} event Data event to listen to\n * @param {Function} callback Called when fresh data is available at the event\n * @param {Object} [scope=this] Scope for the callback\n */\n once(event, callback, scope) {\n const self = this;\n const subId = this.on(event,\n function (value) {\n self.off(subId);\n callback.call(scope || this, value);\n },\n scope);\n }\n\n /**\n * Returns true if there are any subscribers to the given event on this Plugin.\n *\n * @param {String} event The event\n * @return {Boolean} True if there are any subscribers to the given event on this Plugin.\n */\n hasSubs(event) {\n return (this._eventSubsNum && (this._eventSubsNum[event] > 0));\n }\n\n /**\n * Logs a message to the JavaScript developer console, prefixed with the ID of this Plugin.\n *\n * @param {String} msg The error message\n */\n log(msg) {\n console.log(`[xeokit plugin ${this.id}]: ${msg}`);\n }\n\n /**\n * Logs a warning message to the JavaScript developer console, prefixed with the ID of this Plugin.\n *\n * @param {String} msg The error message\n */\n warn(msg) {\n console.warn(`[xeokit plugin ${this.id}]: ${msg}`);\n }\n\n /**\n * Logs an error message to the JavaScript developer console, prefixed with the ID of this Plugin.\n *\n * @param {String} msg The error message\n */\n error(msg) {\n console.error(`[xeokit plugin ${this.id}]: ${msg}`);\n }\n\n /**\n * Sends a message to this Plugin.\n *\n * @private\n */\n send(name, value) {\n //...\n }\n\n /**\n * Destroys this Plugin and removes it from its {@link Viewer}.\n */\n destroy() {\n this.viewer.removePlugin(this);\n }\n}\n\nexport {Plugin}", @@ -41266,7 +41794,7 @@ "lineNumber": 1 }, { - "__docId__": 2094, + "__docId__": 2112, "kind": "class", "name": "Plugin", "memberof": "src/viewer/Plugin.js", @@ -41281,7 +41809,7 @@ "interface": false }, { - "__docId__": 2095, + "__docId__": 2113, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41326,7 +41854,7 @@ ] }, { - "__docId__": 2096, + "__docId__": 2114, "kind": "member", "name": "id", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41345,7 +41873,7 @@ } }, { - "__docId__": 2097, + "__docId__": 2115, "kind": "member", "name": "viewer", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41364,7 +41892,7 @@ } }, { - "__docId__": 2098, + "__docId__": 2116, "kind": "member", "name": "_subIdMap", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41382,7 +41910,7 @@ } }, { - "__docId__": 2099, + "__docId__": 2117, "kind": "member", "name": "_subIdEvents", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41400,7 +41928,7 @@ } }, { - "__docId__": 2100, + "__docId__": 2118, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41418,7 +41946,7 @@ } }, { - "__docId__": 2101, + "__docId__": 2119, "kind": "member", "name": "_eventSubsNum", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41436,7 +41964,7 @@ } }, { - "__docId__": 2102, + "__docId__": 2120, "kind": "member", "name": "_events", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41454,7 +41982,7 @@ } }, { - "__docId__": 2103, + "__docId__": 2121, "kind": "member", "name": "_eventCallDepth", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41472,7 +42000,7 @@ } }, { - "__docId__": 2104, + "__docId__": 2122, "kind": "method", "name": "scheduleTask", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41498,7 +42026,7 @@ "return": null }, { - "__docId__": 2105, + "__docId__": 2123, "kind": "method", "name": "fire", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41546,7 +42074,7 @@ "return": null }, { - "__docId__": 2109, + "__docId__": 2127, "kind": "method", "name": "on", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41601,7 +42129,7 @@ } }, { - "__docId__": 2115, + "__docId__": 2133, "kind": "method", "name": "off", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41627,7 +42155,7 @@ "return": null }, { - "__docId__": 2116, + "__docId__": 2134, "kind": "method", "name": "once", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41675,7 +42203,7 @@ "return": null }, { - "__docId__": 2117, + "__docId__": 2135, "kind": "method", "name": "hasSubs", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41708,7 +42236,7 @@ } }, { - "__docId__": 2118, + "__docId__": 2136, "kind": "method", "name": "log", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41734,7 +42262,7 @@ "return": null }, { - "__docId__": 2119, + "__docId__": 2137, "kind": "method", "name": "warn", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41760,7 +42288,7 @@ "return": null }, { - "__docId__": 2120, + "__docId__": 2138, "kind": "method", "name": "error", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41786,7 +42314,7 @@ "return": null }, { - "__docId__": 2121, + "__docId__": 2139, "kind": "method", "name": "send", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41815,7 +42343,7 @@ "return": null }, { - "__docId__": 2122, + "__docId__": 2140, "kind": "method", "name": "destroy", "memberof": "src/viewer/Plugin.js~Plugin", @@ -41830,7 +42358,7 @@ "return": null }, { - "__docId__": 2123, + "__docId__": 2141, "kind": "file", "name": "src/viewer/Viewer.js", "content": "import {Scene} from \"./scene/scene/Scene.js\";\nimport {CameraFlightAnimation} from \"./scene/camera/CameraFlightAnimation.js\";\nimport {CameraControl} from \"./scene/CameraControl/CameraControl.js\";\nimport {MetaScene} from \"./metadata/MetaScene.js\";\nimport {LocaleService} from \"./localization/LocaleService.js\";\nimport html2canvas from '../../node_modules/html2canvas/dist/html2canvas.esm.js';\n\n/**\n * The 3D Viewer at the heart of the xeokit SDK.\n *\n * * A Viewer wraps a single {@link Scene}\n * * Add {@link Plugin}s to a Viewer to extend its functionality.\n * * {@link Viewer#metaScene} holds metadata about models in the\n * Viewer's {@link MetaScene}.\n * * Use {@link Viewer#cameraFlight} to fly or jump the {@link Scene}'s\n * {@link Camera} to target positions, boundaries or {@link Entity}s.\n *\n * @public\n */\nclass Viewer {\n\n /**\n * @constructor\n * @param {Object} cfg Viewer configuration.\n * @param {String} [cfg.id] Optional ID for this Viewer, defaults to the ID of {@link Viewer#scene}, which xeokit automatically generates.\n * @param {String} [cfg.canvasId] ID of an existing HTML canvas for the {@link Viewer#scene} - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLCanvasElement} [cfg.canvasElement] Reference of an existing HTML canvas for the {@link Viewer#scene} - either this or canvasId is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLElement} [cfg.keyboardEventsElement] Optional reference to HTML element on which key events should be handled. Defaults to the HTML Document.\n * @param {String} [cfg.spinnerElementId] ID of existing HTML element to show the {@link Spinner} - internally creates a default element automatically if this is omitted.\n * @param {Number} [cfg.passes=1] The number of times the {@link Viewer#scene} renders per frame.\n * @param {Boolean} [cfg.clearEachPass=false] When doing multiple passes per frame, specifies if to clear the canvas before each pass (true) or just before the first pass (false).\n * @param {Boolean} [cfg.preserveDrawingBuffer=true] Whether or not to preserve the WebGL drawing buffer. This needs to be ````true```` for {@link Viewer#getSnapshot} to work.\n * @param {Boolean} [cfg.transparent=true] Whether or not the canvas is transparent.\n * @param {Boolean} [cfg.premultipliedAlpha=false] Whether or not you want alpha composition with premultiplied alpha. Highlighting and selection works best when this is ````false````.\n * @param {Boolean} [cfg.gammaInput=true] When true, expects that all textures and colors are premultiplied gamma.\n * @param {Boolean} [cfg.gammaOutput=false] Whether or not to render with pre-multiplied gama.\n * @param {Number} [cfg.gammaFactor=2.2] The gamma factor to use when rendering with pre-multiplied gamma.\n * @param {Number[]} [cfg.backgroundColor=[1,1,1]] Sets the canvas background color to use when ````transparent```` is false.\n * @param {Boolean} [cfg.backgroundColorFromAmbientLight=true] When ````transparent```` is false, set this ````true````\n * to derive the canvas background color from {@link AmbientLight#color}, or ````false```` to set the canvas background to ````backgroundColor````.\n * @param {String} [cfg.units=\"meters\"] The measurement unit type. Accepted values are ````\"meters\"````, ````\"metres\"````, , ````\"centimeters\"````, ````\"centimetres\"````, ````\"millimeters\"````, ````\"millimetres\"````, ````\"yards\"````, ````\"feet\"```` and ````\"inches\"````.\n * @param {Number} [cfg.scale=1] The number of Real-space units in each World-space coordinate system unit.\n * @param {Number[]} [cfg.origin=[0,0,0]] The Real-space 3D origin, in current measurement units, at which the World-space coordinate origin ````[0,0,0]```` sits.\n * @param {Boolean} [cfg.saoEnabled=false] Whether to enable Scalable Ambient Obscurance (SAO) effect. See {@link SAO} for more info.\n * @param {Boolean} [cfg.antialias=true] Whether to enable anti-aliasing.\n * @throws {String} Throws an exception when both canvasId or canvasElement are missing or they aren't pointing to a valid HTMLCanvasElement.\n * @param {Boolean} [cfg.alphaDepthMask=true] Whether writing into the depth buffer is enabled or disabled when rendering transparent objects.\n * @param {Boolean} [cfg.entityOffsetsEnabled=false] Whether to enable {@link Entity#offset}. For best performance, only set this ````true```` when you need to use {@link Entity#offset}.\n * @param {Boolean} [cfg.pickSurfacePrecisionEnabled=false] Whether to enable full-precision accuracy when surface picking with {@link Scene#pick}. Note that when ````true````, this configuration will increase the amount of browser memory used by the Viewer. The ````pickSurfacePrecision```` option for ````Scene#pick```` only works if this is set ````true````.\n * @param {Boolean} [cfg.logarithmicDepthBufferEnabled=false] Whether to enable logarithmic depth buffer. When this is true,\n * you can set huge values for {@link Perspective#far} and {@link Ortho#far}, to push the far clipping plane back so\n * that it does not clip huge models.\n * @param {Boolean} [cfg.colorTextureEnabled=true] Whether to enable base color texture rendering.\n * @param {Boolean} [cfg.pbrEnabled=false] Whether to enable physically-based rendering.\n * @param {LocaleService} [cfg.localeService=null] Optional locale-based translation service.\n * @param {Boolean} [cfg.dtxEnabled=false] Whether to enable data texture-based (DTX) scene representation within the Viewer. When this is true, the Viewer will use data textures to\n * store geometry on the GPU for triangle meshes that don't have textures. This gives a much lower memory footprint for these types of model element. This mode may not perform well on low-end GPUs that are optimized\n * to use textures to hold geometry data. Works great on most medium/high-end GPUs found in desktop computers, including the nVIDIA and Intel HD chipsets. Set this false to use the default vertex buffer object (VBO)\n * mode for storing geometry, which is the standard technique used in most graphics engines, and will work adequately on most low-end GPUs.\n * @param {number} [cfg.numCachedSectionPlanes=0] Enhances the efficiency of SectionPlane creation by proactively allocating Viewer resources for a specified quantity\n * of SectionPlanes. Introducing this parameter streamlines the initial creation speed of SectionPlanes, particularly up to the designated quantity. This parameter internally\n * configures renderer logic for the specified number of SectionPlanes, eliminating the need for setting up logic with each SectionPlane creation and thereby enhancing\n * responsiveness. It is important to consider that each SectionPlane impacts rendering performance, so it is recommended to set this value to a quantity that aligns with\n * your expected usage.\n */\n constructor(cfg) {\n\n /**\n * The Viewer's current language setting.\n * @property language\n * @deprecated\n * @type {String}\n */\n this.language = \"en\";\n\n /**\n * The viewer's locale service.\n *\n * This is configured via the Viewer's constructor.\n *\n * By default, this service will be an instance of {@link LocaleService}, which will just return\n * null translations for all given strings and phrases.\n *\n * @property localeService\n * @type {LocaleService}\n * @since 2.0\n */\n this.localeService = cfg.localeService || new LocaleService();\n\n /**\n * The Viewer's {@link Scene}.\n * @property scene\n * @type {Scene}\n */\n this.scene = new Scene(this, {\n canvasId: cfg.canvasId,\n canvasElement: cfg.canvasElement,\n keyboardEventsElement: cfg.keyboardEventsElement,\n contextAttr: {\n preserveDrawingBuffer: cfg.preserveDrawingBuffer !== false,\n premultipliedAlpha: (!!cfg.premultipliedAlpha),\n antialias: (cfg.antialias !== false)\n },\n spinnerElementId: cfg.spinnerElementId,\n transparent: (cfg.transparent !== false),\n gammaInput: true,\n gammaOutput: false,\n backgroundColor: cfg.backgroundColor,\n backgroundColorFromAmbientLight: cfg.backgroundColorFromAmbientLight,\n ticksPerRender: 1,\n ticksPerOcclusionTest: 20,\n units: cfg.units,\n scale: cfg.scale,\n origin: cfg.origin,\n saoEnabled: cfg.saoEnabled,\n alphaDepthMask: (cfg.alphaDepthMask !== false),\n entityOffsetsEnabled: (!!cfg.entityOffsetsEnabled),\n pickSurfacePrecisionEnabled: (!!cfg.pickSurfacePrecisionEnabled),\n logarithmicDepthBufferEnabled: (!!cfg.logarithmicDepthBufferEnabled),\n pbrEnabled: (!!cfg.pbrEnabled),\n colorTextureEnabled: (cfg.colorTextureEnabled !== false),\n dtxEnabled: (!!cfg.dtxEnabled),\n numCachedSectionPlanes: cfg.numCachedSectionPlanes\n });\n\n /**\n * Metadata about the {@link Scene} and the models and objects within it.\n * @property metaScene\n * @type {MetaScene}\n * @readonly\n */\n this.metaScene = new MetaScene(this, this.scene);\n\n /**\n * The Viewer's ID.\n * @property id\n *\n * @type {String|Number}\n */\n this.id = cfg.id || this.scene.id;\n\n /**\n * The Viewer's {@link Camera}. This is also found on {@link Scene#camera}.\n * @property camera\n * @type {Camera}\n */\n this.camera = this.scene.camera;\n\n /**\n * The Viewer's {@link CameraFlightAnimation}, which\n * is used to fly the {@link Scene}'s {@link Camera} to given targets.\n * @property cameraFlight\n * @type {CameraFlightAnimation}\n */\n this.cameraFlight = new CameraFlightAnimation(this.scene, {\n duration: 0.5\n });\n\n /**\n * The Viewer's {@link CameraControl}, which\n * controls the {@link Scene}'s {@link Camera} with mouse, touch and keyboard input.\n * @property cameraControl\n * @type {CameraControl}\n */\n this.cameraControl = new CameraControl(this.scene, {\n // panToPointer: true,\n doublePickFlyTo: true\n });\n\n this._plugins = [];\n\n /**\n * Subscriptions to events sent with {@link fire}.\n * @private\n */\n this._eventSubs = {};\n }\n\n /**\n * Returns the capabilities of this Viewer.\n *\n * @returns {{astcSupported: boolean, etc1Supported: boolean, pvrtcSupported: boolean, etc2Supported: boolean, dxtSupported: boolean, bptcSupported: boolean}}\n */\n get capabilities() {\n return this.scene.capabilities;\n }\n\n /**\n * Subscribes to an event fired at this Viewer.\n *\n * @param {String} event The event\n * @param {Function} callback Callback fired on the event\n */\n on(event, callback) {\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = [];\n this._eventSubs[event] = subs;\n }\n subs.push(callback);\n }\n\n /**\n * Fires an event at this Viewer.\n *\n * @param {String} event Event name\n * @param {Object} value Event parameters\n */\n fire(event, value) {\n const subs = this._eventSubs[event];\n if (subs) {\n for (let i = 0, len = subs.length; i < len; i++) {\n subs[i](value);\n }\n }\n }\n\n /**\n * Unsubscribes from an event fired at this Viewer.\n * @param event\n */\n off(event) { // TODO\n\n }\n\n /**\n * Logs a message to the JavaScript developer console, prefixed with the ID of this Viewer.\n *\n * @param {String} msg The message\n */\n log(msg) {\n console.log(`[xeokit viewer ${this.id}]: ${msg}`);\n }\n\n /**\n * Logs an error message to the JavaScript developer console, prefixed with the ID of this Viewer.\n *\n * @param {String} msg The error message\n */\n error(msg) {\n console.error(`[xeokit viewer ${this.id}]: ${msg}`);\n }\n\n /**\n * Installs a Plugin.\n *\n * @private\n */\n addPlugin(plugin) {\n this._plugins.push(plugin);\n }\n\n /**\n * Uninstalls a Plugin, clearing content from it first.\n *\n * @private\n */\n removePlugin(plugin) {\n for (let i = 0, len = this._plugins.length; i < len; i++) {\n const p = this._plugins[i];\n if (p === plugin) {\n if (p.clear) {\n p.clear();\n }\n this._plugins.splice(i, 1);\n return;\n }\n }\n }\n\n /**\n * Sends a message to installed Plugins.\n *\n * The message can optionally be accompanied by a value.\n * @private\n */\n sendToPlugins(name, value) {\n for (let i = 0, len = this._plugins.length; i < len; i++) {\n const p = this._plugins[i];\n if (p.send) {\n p.send(name, value);\n }\n }\n }\n\n /**\n * @private\n * @deprecated\n */\n clear() {\n throw \"Viewer#clear() no longer implemented - use '#sendToPlugins(\\\"clear\\\") instead\";\n }\n\n /**\n * @private\n * @deprecated\n */\n resetView() {\n throw \"Viewer#resetView() no longer implemented - use CameraMemento & ObjectsMemento classes instead\";\n }\n\n /**\n * Enter snapshot mode.\n *\n * Switches rendering to a hidden snapshot canvas.\n *\n * Exit snapshot mode using {@link Viewer#endSnapshot}.\n */\n beginSnapshot() {\n if (this._snapshotBegun) {\n return;\n }\n this.scene._renderer.beginSnapshot();\n this._snapshotBegun = true;\n }\n\n /**\n * Gets a snapshot of this Viewer's {@link Scene} as a Base64-encoded image.\n *\n * #### Usage:\n *\n * ````javascript\n * const imageData = viewer.getSnapshot({\n * width: 500,\n * height: 500,\n * format: \"png\"\n * });\n * ````\n * @param {*} [params] Capture options.\n * @param {Number} [params.width] Desired width of result in pixels - defaults to width of canvas.\n * @param {Number} [params.height] Desired height of result in pixels - defaults to height of canvas.\n * @param {String} [params.format=\"jpeg\"] Desired format; \"jpeg\", \"png\" or \"bmp\".\n * @param {Boolean} [params.includeGizmos=false] When true, will include gizmos like {@link SectionPlane} in the snapshot.\n * @returns {String} String-encoded image data URI.\n */\n getSnapshot(params = {}) {\n\n const needFinishSnapshot = (!this._snapshotBegun);\n const resize = (params.width !== undefined && params.height !== undefined);\n const canvas = this.scene.canvas.canvas;\n const saveWidth = canvas.clientWidth;\n const saveHeight = canvas.clientHeight;\n const width = params.width ? Math.floor(params.width) : canvas.width;\n const height = params.height ? Math.floor(params.height) : canvas.height;\n\n if (resize) {\n canvas.width = width;\n canvas.height = height;\n }\n\n if (!this._snapshotBegun) {\n this.beginSnapshot({\n width,\n height\n });\n }\n\n if (!params.includeGizmos) {\n this.sendToPlugins(\"snapshotStarting\"); // Tells plugins to hide things that shouldn't be in snapshot\n }\n\n const captured = {};\n for (let i = 0, len = this._plugins.length; i < len; i++) {\n const plugin = this._plugins[i];\n if (plugin.getContainerElement) {\n const container = plugin.getContainerElement();\n if (container !== document.body) {\n if (!captured[container.id]) {\n captured[container.id] = true;\n html2canvas(container).then(function (canvas) {\n document.body.appendChild(canvas);\n });\n }\n }\n }\n }\n\n this.scene._renderer.renderSnapshot();\n\n const imageDataURI = this.scene._renderer.readSnapshot(params);\n\n if (resize) {\n canvas.width = saveWidth;\n canvas.height = saveHeight;\n\n this.scene.glRedraw();\n }\n\n if (!params.includeGizmos) {\n this.sendToPlugins(\"snapshotFinished\");\n }\n\n if (needFinishSnapshot) {\n this.endSnapshot();\n }\n\n return imageDataURI;\n }\n\n /**\n * Gets a snapshot of this Viewer's {@link Scene} as a Base64-encoded image which includes\n * the HTML elements created by various plugins.\n *\n * The snapshot image is composed of an image of the viewer canvas, overlaid with an image\n * of the HTML container element belonging to each installed Viewer plugin. Each container\n * element is only rendered once, so it's OK for plugins to share the same container.\n *\n * #### Usage:\n *\n * ````javascript\n * viewer.getSnapshotWithPlugins({\n * width: 500,\n * height: 500,\n * format: \"png\"\n * }).then((imageData)=>{\n *\n * });\n * ````\n * @param {*} [params] Capture options.\n * @param {Number} [params.width] Desired width of result in pixels - defaults to width of canvas.\n * @param {Number} [params.height] Desired height of result in pixels - defaults to height of canvas.\n * @param {String} [params.format=\"jpeg\"] Desired format; \"jpeg\", \"png\" or \"bmp\".\n * @param {Boolean} [params.includeGizmos=false] When true, will include gizmos like {@link SectionPlane} in the snapshot.\n * @returns {Promise} Promise which returns a string-encoded image data URI.\n */\n async getSnapshotWithPlugins(params = {}) {\n\n // We use gl.readPixels to get the WebGL canvas snapshot in a new\n // HTMLCanvas element, scaled to the target snapshot size, then\n // use html2canvas to render each plugin's container element into\n // that HTMLCanvas. Finally, we save the HTMLCanvas to a bitmap.\n\n // We don't rely on html2canvas to up-scale our WebGL canvas\n // when we want a higher-resolution snapshot, which would cause\n // blurring. Instead, we manage the scale and redraw of the WebGL\n // canvas ourselves, in order to allow the Viewer to render the\n // right amount of pixels, for a sharper image.\n\n\n const needFinishSnapshot = (!this._snapshotBegun);\n const resize = (params.width !== undefined && params.height !== undefined);\n const canvas = this.scene.canvas.canvas;\n const saveWidth = canvas.clientWidth;\n const saveHeight = canvas.clientHeight;\n const snapshotWidth = params.width ? Math.floor(params.width) : canvas.width;\n const snapshotHeight = params.height ? Math.floor(params.height) : canvas.height;\n\n if (resize) {\n canvas.width = snapshotWidth;\n canvas.height = snapshotHeight;\n }\n\n if (!this._snapshotBegun) {\n this.beginSnapshot();\n }\n\n if (!params.includeGizmos) {\n this.sendToPlugins(\"snapshotStarting\"); // Tells plugins to hide things that shouldn't be in snapshot\n }\n\n this.scene._renderer.renderSnapshot();\n\n const snapshotCanvas = this.scene._renderer.readSnapshotAsCanvas();\n\n if (resize) {\n canvas.width = saveWidth;\n canvas.height = saveHeight;\n this.scene.glRedraw();\n }\n\n const pluginToCapture = {};\n const pluginContainerElements = [];\n\n for (let i = 0, len = this._plugins.length; i < len; i++) { // Find plugin container elements\n const plugin = this._plugins[i];\n if (plugin.getContainerElement) {\n const containerElement = plugin.getContainerElement();\n if (containerElement !== document.body) {\n if (!pluginToCapture[containerElement.id]) {\n pluginToCapture[containerElement.id] = true;\n pluginContainerElements.push(containerElement);\n }\n }\n }\n }\n\n for (let i = 0, len = pluginContainerElements.length; i < len; i++) {\n const containerElement = pluginContainerElements[i];\n await html2canvas(containerElement, {\n canvas: snapshotCanvas,\n backgroundColor: null,\n scale: snapshotCanvas.width / containerElement.clientWidth\n });\n }\n if (!params.includeGizmos) {\n this.sendToPlugins(\"snapshotFinished\");\n }\n if (needFinishSnapshot) {\n this.endSnapshot();\n }\n let format = params.format || \"png\";\n if (format !== \"jpeg\" && format !== \"png\" && format !== \"bmp\") {\n console.error(\"Unsupported image format: '\" + format + \"' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'\");\n format = \"png\";\n }\n if (!params.includeGizmos) {\n this.sendToPlugins(\"snapshotFinished\");\n }\n if (needFinishSnapshot) {\n this.endSnapshot();\n }\n return snapshotCanvas.toDataURL(`image/${format}`);\n }\n\n /**\n * Exits snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n */\n endSnapshot() {\n if (!this._snapshotBegun) {\n return;\n }\n this.scene._renderer.endSnapshot();\n this.scene._renderer.render({force: true});\n this._snapshotBegun = false;\n }\n\n /** Destroys this Viewer.\n */\n destroy() {\n const plugins = this._plugins.slice(); // Array will modify as we delete plugins\n for (let i = 0, len = plugins.length; i < len; i++) {\n const plugin = plugins[i];\n plugin.destroy();\n }\n this.scene.destroy();\n }\n}\n\nexport {Viewer}\n", @@ -41841,7 +42369,7 @@ "lineNumber": 1 }, { - "__docId__": 2124, + "__docId__": 2142, "kind": "class", "name": "Viewer", "memberof": "src/viewer/Viewer.js", @@ -41856,7 +42384,7 @@ "interface": false }, { - "__docId__": 2125, + "__docId__": 2143, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42241,7 +42769,7 @@ ] }, { - "__docId__": 2126, + "__docId__": 2144, "kind": "member", "name": "language", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42273,7 +42801,7 @@ } }, { - "__docId__": 2127, + "__docId__": 2145, "kind": "member", "name": "localeService", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42305,7 +42833,7 @@ } }, { - "__docId__": 2128, + "__docId__": 2146, "kind": "member", "name": "scene", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42336,7 +42864,7 @@ } }, { - "__docId__": 2129, + "__docId__": 2147, "kind": "member", "name": "metaScene", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42373,7 +42901,7 @@ } }, { - "__docId__": 2130, + "__docId__": 2148, "kind": "member", "name": "id", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42405,7 +42933,7 @@ } }, { - "__docId__": 2131, + "__docId__": 2149, "kind": "member", "name": "camera", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42436,7 +42964,7 @@ } }, { - "__docId__": 2132, + "__docId__": 2150, "kind": "member", "name": "cameraFlight", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42467,7 +42995,7 @@ } }, { - "__docId__": 2133, + "__docId__": 2151, "kind": "member", "name": "cameraControl", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42498,7 +43026,7 @@ } }, { - "__docId__": 2134, + "__docId__": 2152, "kind": "member", "name": "_plugins", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42516,7 +43044,7 @@ } }, { - "__docId__": 2135, + "__docId__": 2153, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42533,7 +43061,7 @@ } }, { - "__docId__": 2136, + "__docId__": 2154, "kind": "get", "name": "capabilities", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42565,7 +43093,7 @@ } }, { - "__docId__": 2137, + "__docId__": 2155, "kind": "method", "name": "on", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42601,7 +43129,7 @@ "return": null }, { - "__docId__": 2138, + "__docId__": 2156, "kind": "method", "name": "fire", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42637,7 +43165,7 @@ "return": null }, { - "__docId__": 2139, + "__docId__": 2157, "kind": "method", "name": "off", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42663,7 +43191,7 @@ "return": null }, { - "__docId__": 2140, + "__docId__": 2158, "kind": "method", "name": "log", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42689,7 +43217,7 @@ "return": null }, { - "__docId__": 2141, + "__docId__": 2159, "kind": "method", "name": "error", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42715,7 +43243,7 @@ "return": null }, { - "__docId__": 2142, + "__docId__": 2160, "kind": "method", "name": "addPlugin", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42738,7 +43266,7 @@ "return": null }, { - "__docId__": 2143, + "__docId__": 2161, "kind": "method", "name": "removePlugin", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42761,7 +43289,7 @@ "return": null }, { - "__docId__": 2144, + "__docId__": 2162, "kind": "method", "name": "sendToPlugins", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42790,7 +43318,7 @@ "return": null }, { - "__docId__": 2145, + "__docId__": 2163, "kind": "method", "name": "clear", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42807,7 +43335,7 @@ "return": null }, { - "__docId__": 2146, + "__docId__": 2164, "kind": "method", "name": "resetView", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42824,7 +43352,7 @@ "return": null }, { - "__docId__": 2147, + "__docId__": 2165, "kind": "method", "name": "beginSnapshot", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42839,7 +43367,7 @@ "return": null }, { - "__docId__": 2148, + "__docId__": 2166, "kind": "member", "name": "_snapshotBegun", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42857,7 +43385,7 @@ } }, { - "__docId__": 2149, + "__docId__": 2167, "kind": "method", "name": "getSnapshot", "memberof": "src/viewer/Viewer.js~Viewer", @@ -42940,7 +43468,7 @@ } }, { - "__docId__": 2150, + "__docId__": 2168, "kind": "method", "name": "getSnapshotWithPlugins", "memberof": "src/viewer/Viewer.js~Viewer", @@ -43023,7 +43551,7 @@ } }, { - "__docId__": 2151, + "__docId__": 2169, "kind": "method", "name": "endSnapshot", "memberof": "src/viewer/Viewer.js~Viewer", @@ -43038,7 +43566,7 @@ "return": null }, { - "__docId__": 2153, + "__docId__": 2171, "kind": "method", "name": "destroy", "memberof": "src/viewer/Viewer.js~Viewer", @@ -43053,7 +43581,7 @@ "return": null }, { - "__docId__": 2154, + "__docId__": 2172, "kind": "file", "name": "src/viewer/index.js", "content": "export * from \"./localization/LocaleService.js\";\nexport * from \"./scene/index.js\";\nexport * from \"./Plugin.js\";\nexport * from \"./Viewer.js\";\nexport * from \"./Configs.js\";", @@ -43064,7 +43592,7 @@ "lineNumber": 1 }, { - "__docId__": 2155, + "__docId__": 2173, "kind": "file", "name": "src/viewer/localization/LocaleService.js", "content": "import {Map} from \"./../scene/utils/Map.js\";\n\n/**\n * @desc Localization service for a {@link Viewer}.\n *\n * * A LocaleService is a container of string translations (\"messages\") for various locales.\n * * A {@link Viewer} has its own default LocaleService at {@link Viewer#localeService}.\n * * We can replace that with our own LocaleService, or a custom subclass, via the Viewer's constructor.\n * * Viewer plugins that need localized translations will attempt to them for the currently active locale from the LocaleService.\n * * Whenever we switch the LocaleService to a different locale, plugins will automatically refresh their translations for that locale.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Viewer} that uses an {@link XKTLoaderPlugin} to load a BIM model, and a\n * {@link NavCubePlugin}, which shows a camera navigation cube in the corner of the canvas.\n *\n * We'll also configure our Viewer with our own LocaleService instance, configured with English, Māori and French\n * translations for our NavCubePlugin.\n *\n * We could instead have just used the Viewer's default LocaleService, but this example demonstrates how we might\n * configure the Viewer our own custom LocaleService subclass.\n *\n * The translations fetched by our NavCubePlugin will be:\n *\n * * \"NavCube.front\"\n * * \"NavCube.back\"\n * * \"NavCube.top\"\n * * \"NavCube.bottom\"\n * * \"NavCube.left\"\n * * \"NavCube.right\"\n *\n *
    \n * These are paths that resolve to our translations for the currently active locale, and are hard-coded within\n * the NavCubePlugin.\n *\n * For example, if the LocaleService's locale is set to \"fr\", then the path \"NavCube.back\" will drill down\n * into ````messages->fr->NavCube->front```` and fetch \"Arrière\".\n *\n * If we didn't provide that particular translation in our LocaleService, or any translations for that locale,\n * then the NavCubePlugin will just fall back on its own default hard-coded translation, which in this case is \"BACK\".\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/index.html#localization_NavCubePlugin)]\n *\n * ````javascript\n * import {Viewer, LocaleService, NavCubePlugin, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n *\n * canvasId: \"myCanvas\",\n *\n * localeService: new LocaleService({\n * messages: {\n * \"en\": { // English\n * \"NavCube\": {\n * \"front\": \"Front\",\n * \"back\": \"Back\",\n * \"top\": \"Top\",\n * \"bottom\": \"Bottom\",\n * \"left\": \"Left\",\n * \"right\": \"Right\"\n * }\n * },\n * \"mi\": { // Māori\n * \"NavCube\": {\n * \"front\": \"Mua\",\n * \"back\": \"Tuarā\",\n * \"top\": \"Runga\",\n * \"bottom\": \"Raro\",\n * \"left\": \"Mauī\",\n * \"right\": \"Tika\"\n * }\n * },\n * \"fr\": { // Francais\n * \"NavCube\": {\n * \"front\": \"Avant\",\n * \"back\": \"Arrière\",\n * \"top\": \"Supérieur\",\n * \"bottom\": \"Inférieur\",\n * \"left\": \"Gauche\",\n * \"right\": \"Droit\"\n * }\n * }\n * },\n * locale: \"en\"\n * })\n * });\n *\n * viewer.camera.eye = [-3.93, 2.85, 27.01];\n * viewer.camera.look = [4.40, 3.72, 8.89];\n * viewer.camera.up = [-0.01, 0.99, 0.03];\n *\n * const navCubePlugin = new NavCubePlugin(viewer, {\n * canvasID: \"myNavCubeCanvas\"\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Duplex.ifc.xkt\",\n * edges: true\n * });\n * ````\n *\n * We can dynamically switch our Viewer to a different locale at any time, which will update the text on the\n * faces of our NavCube:\n *\n * ````javascript\n * viewer.localeService.locale = \"mi\"; // Switch to Māori\n * ````\n *\n * We can load new translations at any time:\n *\n * ````javascript\n * viewer.localeService.loadMessages({\n * \"jp\": { // Japanese\n * \"NavCube\": {\n * \"front\": \"前部\",\n * \"back\": \"裏\",\n * \"top\": \"上\",\n * \"bottom\": \"底\",\n * \"left\": \"左\",\n * \"right\": \"右\"\n * }\n * }\n * });\n * ````\n *\n * And we can clear the translations if needed:\n *\n * ````javascript\n * viewer.localeService.clearMessages();\n * ````\n *\n * We can get an \"updated\" event from the LocaleService whenever we switch locales or load messages, which is useful\n * for triggering UI elements to refresh themselves with updated translations. Internally, our {@link NavCubePlugin}\n * subscribes to this event, fetching new strings for itself via {@link LocaleService#translate} each time the\n * event is fired.\n *\n * ````javascript\n * viewer.localeService.on(\"updated\", () => {\n * console.log( viewer.localeService.translate(\"NavCube.left\") );\n * });\n * ````\n * @since 2.0\n */\nclass LocaleService {\n\n /**\n * Constructs a LocaleService.\n *\n * @param {*} [params={}]\n * @param {JSON} [params.messages]\n * @param {String} [params.locale]\n */\n constructor(params = {}) {\n\n this._eventSubIDMap = null;\n this._eventSubEvents = null;\n this._eventSubs = null;\n this._events = null;\n\n this._locale = \"en\";\n this._messages = {};\n this._locales = [];\n this._locale = \"en\";\n\n this.messages = params.messages;\n this.locale = params.locale;\n }\n\n /**\n * Replaces the current set of locale translations.\n *\n * * Fires an \"updated\" event when done.\n * * Automatically refreshes any plugins that depend on the translations.\n * * Does not change the current locale.\n *\n * ## Usage\n *\n * ````javascript\n * viewer.localeService.setMessages({\n * messages: {\n * \"en\": { // English\n * \"NavCube\": {\n * \"front\": \"Front\",\n * \"back\": \"Back\",\n * \"top\": \"Top\",\n * \"bottom\": \"Bottom\",\n * \"left\": \"Left\",\n * \"right\": \"Right\"\n * }\n * },\n * \"mi\": { // Māori\n * \"NavCube\": {\n * \"front\": \"Mua\",\n * \"back\": \"Tuarā\",\n * \"top\": \"Runga\",\n * \"bottom\": \"Raro\",\n * \"left\": \"Mauī\",\n * \"right\": \"Tika\"\n * }\n * }\n * }\n * });\n * ````\n *\n * @param {*} messages The new translations.\n */\n set messages(messages) {\n this._messages = messages || {};\n this._locales = Object.keys(this._messages);\n this.fire(\"updated\", this);\n }\n\n /**\n * Loads a new set of locale translations, adding them to the existing translations.\n *\n * * Fires an \"updated\" event when done.\n * * Automatically refreshes any plugins that depend on the translations.\n * * Does not change the current locale.\n *\n * ## Usage\n *\n * ````javascript\n * viewer.localeService.loadMessages({\n * \"jp\": { // Japanese\n * \"NavCube\": {\n * \"front\": \"前部\",\n * \"back\": \"裏\",\n * \"top\": \"上\",\n * \"bottom\": \"底\",\n * \"left\": \"左\",\n * \"right\": \"右\"\n * }\n * }\n * });\n * ````\n *\n * @param {*} messages The new translations.\n */\n loadMessages(messages = {}) {\n for (let locale in messages) {\n this._messages[locale] = messages[locale];\n }\n this.messages = this._messages;\n }\n\n /**\n * Clears all locale translations.\n *\n * * Fires an \"updated\" event when done.\n * * Does not change the current locale.\n * * Automatically refreshes any plugins that depend on the translations, which will cause those\n * plugins to fall back on their internal hard-coded text values, since this method removes all\n * our translations.\n */\n clearMessages() {\n this.messages = {};\n }\n\n /**\n * Gets the list of available locales.\n *\n * These are derived from the currently configured set of translations.\n *\n * @returns {String[]} The list of available locales.\n */\n get locales() {\n return this._locales;\n }\n\n /**\n * Sets the current locale.\n *\n * * Fires an \"updated\" event when done.\n * * The given locale does not need to be in the list of available locales returned by {@link LocaleService#locales}, since\n * this method assumes that you may want to load the locales at a later point.\n * * Automatically refreshes any plugins that depend on the translations.\n * * We can then get translations for the locale, if translations have been loaded for it, via {@link LocaleService#translate} and {@link LocaleService#translatePlurals}.\n *\n * @param {String} locale The new current locale.\n */\n set locale(locale) {\n locale = locale || \"de\";\n if (this._locale === locale) {\n return;\n }\n this._locale = locale;\n this.fire(\"updated\", locale);\n }\n\n /**\n * Gets the current locale.\n *\n * @returns {String} The current locale.\n */\n get locale() {\n return this._locale;\n }\n\n /**\n * Translates the given string according to the current locale.\n *\n * Returns null if no translation can be found.\n *\n * @param {String} msg String to translate.\n * @param {*} [args] Extra parameters.\n * @returns {String|null} Translated string if found, else null.\n */\n translate(msg, args) {\n const localeMessages = this._messages[this._locale];\n if (!localeMessages) {\n return null;\n }\n const localeMessage = resolvePath(msg, localeMessages);\n if (localeMessage) {\n if (args) {\n return vsprintf(localeMessage, args);\n }\n return localeMessage;\n }\n return null;\n }\n\n /**\n * Translates the given phrase according to the current locale.\n *\n * Returns null if no translation can be found.\n *\n * @param {String} msg Phrase to translate.\n * @param {Number} count The plural number.\n * @param {*} [args] Extra parameters.\n * @returns {String|null} Translated string if found, else null.\n */\n translatePlurals(msg, count, args) {\n const localeMessages = this._messages[this._locale];\n if (!localeMessages) {\n return null;\n }\n let localeMessage = resolvePath(msg, localeMessages);\n count = parseInt(\"\" + count, 10);\n if (count === 0) {\n localeMessage = localeMessage.zero;\n } else {\n localeMessage = (count > 1) ? localeMessage.other : localeMessage.one;\n }\n if (!localeMessage) {\n return null;\n }\n localeMessage = vsprintf(localeMessage, [count]);\n if (args) {\n localeMessage = vsprintf(localeMessage, args);\n }\n return localeMessage;\n }\n\n /**\n * Fires an event on this LocaleService.\n *\n * Notifies existing subscribers to the event, optionally retains the event to give to\n * any subsequent notifications on the event as they are made.\n *\n * @param {String} event The event type name.\n * @param {Object} value The event parameters.\n * @param {Boolean} [forget=false] When true, does not retain for subsequent subscribers.\n */\n fire(event, value, forget) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n }\n if (forget !== true) {\n this._events[event] = value || true; // Save notification\n }\n const subs = this._eventSubs[event];\n if (subs) {\n for (const subId in subs) {\n if (subs.hasOwnProperty(subId)) {\n const sub = subs[subId];\n sub.callback(value);\n }\n }\n }\n }\n\n /**\n * Subscribes to an event on this LocaleService.\n *\n * @param {String} event The event\n * @param {Function} callback Callback fired on the event\n * @return {String} Handle to the subscription, which may be used to unsubscribe with {@link #off}.\n */\n on(event, callback) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._eventSubIDMap) {\n this._eventSubIDMap = new Map(); // Subscription subId pool\n }\n if (!this._eventSubEvents) {\n this._eventSubEvents = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n }\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = {};\n this._eventSubs[event] = subs;\n }\n const subId = this._eventSubIDMap.addItem(); // Create unique subId\n subs[subId] = {\n callback: callback\n };\n this._eventSubEvents[subId] = event;\n const value = this._events[event];\n if (value !== undefined) {\n callback(value);\n }\n return subId;\n }\n\n /**\n * Cancels an event subscription that was previously made with {@link LocaleService#on}.\n *\n * @param {String} subId Subscription ID\n */\n off(subId) {\n if (subId === undefined || subId === null) {\n return;\n }\n if (!this._eventSubEvents) {\n return;\n }\n const event = this._eventSubEvents[subId];\n if (event) {\n delete this._eventSubEvents[subId];\n const subs = this._eventSubs[event];\n if (subs) {\n delete subs[subId];\n }\n this._eventSubIDMap.removeItem(subId); // Release subId\n }\n }\n}\n\nfunction resolvePath(key, json) {\n if (json[key]) {\n return json[key];\n }\n const parts = key.split(\".\");\n let obj = json;\n for (let i = 0, len = parts.length; obj && (i < len); i++) {\n const part = parts[i];\n obj = obj[part];\n }\n return obj;\n}\n\nfunction vsprintf(msg, args = []) {\n return msg.replace(/\\{\\{|\\}\\}|\\{(\\d+)\\}/g, function (m, n) {\n if (m === \"{{\") {\n return \"{\";\n }\n if (m === \"}}\") {\n return \"}\";\n }\n return args[n];\n });\n}\n\nexport {LocaleService};", @@ -43075,7 +43603,7 @@ "lineNumber": 1 }, { - "__docId__": 2156, + "__docId__": 2174, "kind": "function", "name": "resolvePath", "memberof": "src/viewer/localization/LocaleService.js", @@ -43112,7 +43640,7 @@ "ignore": true }, { - "__docId__": 2157, + "__docId__": 2175, "kind": "function", "name": "vsprintf", "memberof": "src/viewer/localization/LocaleService.js", @@ -43152,7 +43680,7 @@ "ignore": true }, { - "__docId__": 2158, + "__docId__": 2176, "kind": "class", "name": "LocaleService", "memberof": "src/viewer/localization/LocaleService.js", @@ -43168,7 +43696,7 @@ "interface": false }, { - "__docId__": 2159, + "__docId__": 2177, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43215,7 +43743,7 @@ ] }, { - "__docId__": 2160, + "__docId__": 2178, "kind": "member", "name": "_eventSubIDMap", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43233,7 +43761,7 @@ } }, { - "__docId__": 2161, + "__docId__": 2179, "kind": "member", "name": "_eventSubEvents", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43251,7 +43779,7 @@ } }, { - "__docId__": 2162, + "__docId__": 2180, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43269,7 +43797,7 @@ } }, { - "__docId__": 2163, + "__docId__": 2181, "kind": "member", "name": "_events", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43287,7 +43815,7 @@ } }, { - "__docId__": 2164, + "__docId__": 2182, "kind": "member", "name": "_locale", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43305,7 +43833,7 @@ } }, { - "__docId__": 2165, + "__docId__": 2183, "kind": "member", "name": "_messages", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43323,7 +43851,7 @@ } }, { - "__docId__": 2166, + "__docId__": 2184, "kind": "member", "name": "_locales", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43341,7 +43869,7 @@ } }, { - "__docId__": 2170, + "__docId__": 2188, "kind": "set", "name": "messages", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43366,7 +43894,7 @@ ] }, { - "__docId__": 2173, + "__docId__": 2191, "kind": "method", "name": "loadMessages", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43392,7 +43920,7 @@ "return": null }, { - "__docId__": 2175, + "__docId__": 2193, "kind": "method", "name": "clearMessages", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43407,7 +43935,7 @@ "return": null }, { - "__docId__": 2177, + "__docId__": 2195, "kind": "get", "name": "locales", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43439,7 +43967,7 @@ } }, { - "__docId__": 2178, + "__docId__": 2196, "kind": "set", "name": "locale", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43464,7 +43992,7 @@ ] }, { - "__docId__": 2180, + "__docId__": 2198, "kind": "get", "name": "locale", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43496,7 +44024,7 @@ } }, { - "__docId__": 2181, + "__docId__": 2199, "kind": "method", "name": "translate", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43546,7 +44074,7 @@ } }, { - "__docId__": 2182, + "__docId__": 2200, "kind": "method", "name": "translatePlurals", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43606,7 +44134,7 @@ } }, { - "__docId__": 2183, + "__docId__": 2201, "kind": "method", "name": "fire", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43654,7 +44182,7 @@ "return": null }, { - "__docId__": 2186, + "__docId__": 2204, "kind": "method", "name": "on", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43697,7 +44225,7 @@ } }, { - "__docId__": 2191, + "__docId__": 2209, "kind": "method", "name": "off", "memberof": "src/viewer/localization/LocaleService.js~LocaleService", @@ -43723,7 +44251,7 @@ "return": null }, { - "__docId__": 2192, + "__docId__": 2210, "kind": "file", "name": "src/viewer/metadata/IFCObjectDefaultColors.js", "content": "/**\n * @desc Initial properties for {@link Entity}s loaded from IFC models accompanied by metadata.\n *\n * When loading a model, plugins such as {@link XKTLoaderPlugin} create\n * a tree of {@link Entity}s that represent the model. These loaders can optionally load metadata, to create\n * a {@link MetaModel} corresponding to the root {@link Entity}, with a {@link MetaObject} corresponding to each\n * object {@link Entity} within the tree.\n *\n * @type {{String:Object}}\n */\nconst IFCObjectDefaultColors = {\n\n // Priority 0\n\n IfcRoof: {\n colorize: [0.837255, 0.203922, 0.270588]\n },\n IfcSlab: {\n colorize: [0.637255, 0.603922, 0.670588]\n },\n IfcWall: {\n colorize: [0.537255, 0.337255, 0.237255]\n },\n IfcWallStandardCase: {\n colorize: [0.537255, 0.337255, 0.237255]\n },\n IfcCovering: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n\n // Priority 1\n\n IfcDoor: {\n colorize: [0.637255, 0.603922, 0.670588]\n },\n\n // Priority 2\n\n\n IfcStair: {\n colorize: [0.637255, 0.603922, 0.670588]\n },\n IfcStairFlight: {\n colorize: [0.637255, 0.603922, 0.670588]\n },\n IfcProxy: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcRamp: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n\n // Priority 3\n\n IfcColumn: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcBeam: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcCurtainWall: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcPlate: {\n colorize: [0.8470588235, 0.427450980392, 0, 0.5],\n opacity: 0.3\n },\n IfcTransportElement: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n IfcFooting: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n\n // Priority 4\n\n IfcRailing: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcFurnishingElement: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcFurniture: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n IfcSystemFurnitureElement: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n\n // Priority 5\n\n IfcFlowSegment: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcFlowitting: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcFlowTerminal: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n IfcFlowController: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n IfcFlowFitting: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n IfcDuctSegment: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n IfcDistributionFlowElement: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n IfcDuctFitting: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n IfcLightFixture: {\n colorize: [0.8470588235, 0.8470588235, 0.870588]\n },\n\n // Priority 6\n\n IfcAirTerminal: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n\n IfcOpeningElement: {\n colorize: [0.137255, 0.403922, 0.870588],\n pickable: false,\n visible: false\n },\n IfcSpace: {\n colorize: [0.137255, 0.403922, 0.870588],\n pickable: false,\n visible: false,\n opacity: 0.5\n },\n\n IfcWindow: {\n colorize: [0.137255, 0.403922, 0.870588],\n pickable: true,\n opacity: 0.1\n },\n\n //\n\n IfcBuildingElementProxy: {\n colorize: [0.5, 0.5, 0.5]\n },\n\n IfcSite: {\n colorize: [0.137255, 0.403922, 0.870588]\n },\n\n IfcMember: {\n colorize: [0.8470588235, 0.427450980392, 0]\n },\n\n DEFAULT: {\n colorize: [0.5, 0.5, 0.5]\n }\n};\n\nexport {IFCObjectDefaultColors}", @@ -43734,7 +44262,7 @@ "lineNumber": 1 }, { - "__docId__": 2193, + "__docId__": 2211, "kind": "variable", "name": "IFCObjectDefaultColors", "memberof": "src/viewer/metadata/IFCObjectDefaultColors.js", @@ -43756,7 +44284,7 @@ } }, { - "__docId__": 2194, + "__docId__": 2212, "kind": "file", "name": "src/viewer/metadata/IFCObjectDefaults.js", "content": "/**\n * @desc Default initial properties for {@link Entity}s loaded from models accompanied by metadata.\n *\n * When loading a model, plugins such as {@link XKTLoaderPlugin} create\n * a tree of {@link Entity}s that represent the model. These loaders can optionally load metadata, to create\n * a {@link MetaModel} corresponding to the root {@link Entity}, with a {@link MetaObject} corresponding to each\n * object {@link Entity} within the tree.\n *\n * @type {{String:Object}}\n */\nconst IFCObjectDefaults = {\n\n DEFAULT: {\n }\n};\n\nexport {IFCObjectDefaults}", @@ -43767,7 +44295,7 @@ "lineNumber": 1 }, { - "__docId__": 2195, + "__docId__": 2213, "kind": "variable", "name": "IFCObjectDefaults", "memberof": "src/viewer/metadata/IFCObjectDefaults.js", @@ -43789,7 +44317,7 @@ } }, { - "__docId__": 2196, + "__docId__": 2214, "kind": "file", "name": "src/viewer/metadata/MetaModel.js", "content": "import {PropertySet} from \"./PropertySet.js\";\nimport {MetaObject} from \"./MetaObject.js\";\nimport {math} from \"../scene/math/math.js\";\n\n/**\n * @desc Metadata corresponding to an {@link Entity} that represents a model.\n *\n * An {@link Entity} represents a model when {@link Entity#isModel} is ````true````\n *\n * A MetaModel corresponds to an {@link Entity} by having the same {@link MetaModel#id} as the {@link Entity#id}.\n *\n * A MetaModel is created by {@link MetaScene#createMetaModel} and belongs to a {@link MetaScene}.\n *\n * Each MetaModel is registered by {@link MetaModel#id} in {@link MetaScene#metaModels}.\n *\n * A {@link MetaModel} represents its object structure with a tree of {@link MetaObject}s, with {@link MetaModel#rootMetaObject} referencing the root {@link MetaObject}.\n *\n * @class MetaModel\n */\nclass MetaModel {\n\n /**\n * Creates a new, unfinalized MetaModel.\n *\n * * The MetaModel is immediately registered by {@link MetaModel#id} in {@link MetaScene#metaModels}, even though it's not yet populated.\n * * The MetaModel then needs to be populated with one or more calls to {@link metaModel#loadData}.\n * * As we populate it, the MetaModel will create {@link MetaObject}s and {@link PropertySet}s in itself, and in the MetaScene.\n * * When populated, call {@link MetaModel#finalize} to finish it off, which causes MetaScene to fire a \"metaModelCreated\" event.\n */\n constructor(params) {\n\n /**\n * Globally-unique ID.\n *\n * MetaModels are registered by ID in {@link MetaScene#metaModels}.\n *\n * When this MetaModel corresponds to an {@link Entity} then this ID will match the {@link Entity#id}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = params.id;\n\n /**\n * The project ID\n * @property projectId\n * @type {String|Number}\n */\n this.projectId = params.projectId;\n\n /**\n * The revision ID, if available.\n *\n * Will be undefined if not available.\n *\n * @property revisionId\n * @type {String|Number}\n */\n this.revisionId = params.revisionId;\n\n /**\n * The model author, if available.\n *\n * Will be undefined if not available.\n *\n * @property author\n * @type {String}\n */\n this.author = params.author;\n\n /**\n * The date the model was created, if available.\n *\n * Will be undefined if not available.\n *\n * @property createdAt\n * @type {String}\n */\n this.createdAt = params.createdAt;\n\n /**\n * The application that created the model, if available.\n *\n * Will be undefined if not available.\n *\n * @property creatingApplication\n * @type {String}\n */\n this.creatingApplication = params.creatingApplication;\n\n /**\n * The model schema version, if available.\n *\n * Will be undefined if not available.\n *\n * @property schema\n * @type {String}\n */\n this.schema = params.schema;\n\n /**\n * Metadata on the {@link Scene}.\n *\n * @property metaScene\n * @type {MetaScene}\n */\n this.metaScene = params.metaScene;\n\n /**\n * The {@link PropertySet}s in this MetaModel.\n *\n * @property propertySets\n * @type {PropertySet[]}\n */\n this.propertySets = [];\n\n /**\n * The root {@link MetaObject}s in this MetaModel's composition structure hierarchy.\n *\n * @property rootMetaObject\n * @type {MetaObject[]}\n */\n this.rootMetaObjects = [];\n\n /**\n * The {@link MetaObject}s in this MetaModel, each mapped to its ID.\n *\n * @property metaObjects\n * @type {MetaObject[]}\n */\n this.metaObjects = [];\n\n /**\n * Connectivity graph.\n * @type {{}}\n */\n this.graph = params.graph || {};\n\n this.metaScene.metaModels[this.id] = this;\n\n /**\n * True when this MetaModel has been finalized.\n * @type {boolean}\n */\n this.finalized = false;\n }\n\n /**\n * Backwards compatibility with the model having a single root MetaObject.\n *\n * @property rootMetaObject\n * @type {MetaObject|null}\n */\n get rootMetaObject() {\n if (this.rootMetaObjects.length == 1) {\n return this.rootMetaObjects[0];\n }\n return null;\n }\n\n /**\n * Load metamodel data into this MetaModel.\n * @param metaModelData\n */\n loadData(metaModelData, options = {}) {\n\n if (this.finalized) {\n throw \"MetaScene already finalized - can't add more data\";\n }\n\n this._globalizeIDs(metaModelData, options)\n\n const metaScene = this.metaScene;\n const propertyLookup = metaModelData.properties;\n\n // Create global Property Sets\n\n if (metaModelData.propertySets) {\n for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {\n const propertySetData = metaModelData.propertySets[i];\n if (!propertySetData.properties) { // HACK: https://github.com/Creoox/creoox-ifc2gltfcxconverter/issues/8\n propertySetData.properties = [];\n }\n let propertySet = metaScene.propertySets[propertySetData.id];\n if (!propertySet) {\n if (propertyLookup) {\n this._decompressProperties(propertyLookup, propertySetData.properties);\n }\n propertySet = new PropertySet({\n id: propertySetData.id,\n originalSystemId: propertySetData.originalSystemId || propertySetData.id,\n type: propertySetData.type,\n name: propertySetData.name,\n properties: propertySetData.properties\n });\n metaScene.propertySets[propertySet.id] = propertySet;\n }\n propertySet.metaModels.push(this);\n this.propertySets.push(propertySet);\n }\n }\n\n if (metaModelData.metaObjects) {\n for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {\n const metaObjectData = metaModelData.metaObjects[i];\n const id = metaObjectData.id;\n let metaObject = metaScene.metaObjects[id];\n if (!metaObject) {\n const type = metaObjectData.type;\n const originalSystemId = metaObjectData.originalSystemId;\n const propertySetIds = metaObjectData.propertySets || metaObjectData.propertySetIds;\n metaObject = new MetaObject({\n id,\n originalSystemId,\n parentId: metaObjectData.parent,\n type,\n name: metaObjectData.name,\n attributes: metaObjectData.attributes,\n propertySetIds,\n external: metaObjectData.external,\n });\n this.metaScene.metaObjects[id] = metaObject;\n metaObject.metaModels = [];\n }\n this.metaObjects.push(metaObject);\n if (!metaObjectData.parent) {\n this.rootMetaObjects.push(metaObject);\n metaScene.rootMetaObjects[id] = metaObject;\n }\n }\n }\n }\n\n _decompressProperties(propertyLookup, properties) {\n for (let i = 0, len = properties.length; i < len; i++) {\n const property = properties[i];\n if (Number.isInteger(property)) {\n const lookupProperty = propertyLookup[property];\n if (lookupProperty) {\n properties[i] = lookupProperty;\n }\n }\n }\n }\n\n finalize() {\n\n if (this.finalized) {\n throw \"MetaScene already finalized - can't re-finalize\";\n }\n\n // Re-link MetaScene's entire MetaObject parent/child hierarchy\n\n const metaScene = this.metaScene;\n\n for (let objectId in metaScene.metaObjects) {\n const metaObject = metaScene.metaObjects[objectId];\n if (metaObject.children) {\n metaObject.children = [];\n }\n\n // Re-link each MetaObject's property sets\n\n if (metaObject.propertySets) {\n metaObject.propertySets = [];\n }\n if (metaObject.propertySetIds) {\n for (let i = 0, len = metaObject.propertySetIds.length; i < len; i++) {\n const propertySetId = metaObject.propertySetIds[i];\n const propertySet = metaScene.propertySets[propertySetId];\n metaObject.propertySets.push(propertySet);\n }\n }\n }\n\n for (let objectId in metaScene.metaObjects) {\n const metaObject = metaScene.metaObjects[objectId];\n if (metaObject.parentId) {\n const parentMetaObject = metaScene.metaObjects[metaObject.parentId];\n if (parentMetaObject) {\n metaObject.parent = parentMetaObject;\n (parentMetaObject.children || (parentMetaObject.children = [])).push(metaObject);\n }\n }\n }\n\n // Relink MetaObjects to their MetaModels\n\n for (let objectId in metaScene.metaObjects) {\n const metaObject = metaScene.metaObjects[objectId];\n metaObject.metaModels = [];\n }\n\n for (let modelId in metaScene.metaModels) {\n const metaModel = metaScene.metaModels[modelId];\n for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {\n const metaObject = metaModel.metaObjects[i];\n metaObject.metaModels.push(metaModel);\n }\n }\n\n // Rebuild MetaScene's MetaObjects-by-type lookup\n\n metaScene.metaObjectsByType = {};\n for (let objectId in metaScene.metaObjects) {\n const metaObject = metaScene.metaObjects[objectId];\n const type = metaObject.type;\n (metaScene.metaObjectsByType[type] || (metaScene.metaObjectsByType[type] = {}))[objectId] = metaObject;\n }\n\n this.finalized = true;\n\n this.metaScene.fire(\"metaModelCreated\", this.id);\n }\n\n /**\n * Gets this MetaModel as JSON.\n * @returns {{schema: (String|string|*), createdAt: (String|string|*), metaObjects: *[], author: (String|string|*), id: (String|Number|string|number|*), creatingApplication: (String|string|*), projectId: (String|Number|string|number|*), propertySets: *[]}}\n */\n getJSON() {\n const json = {\n id: this.id,\n projectId: this.projectId,\n author: this.author,\n createdAt: this.createdAt,\n schema: this.schema,\n creatingApplication: this.creatingApplication,\n metaObjects: [],\n propertySets: []\n };\n for (let i = 0, len = this.metaObjects.length; i < len; i++) {\n const metaObject = this.metaObjects[i];\n const metaObjectCfg = {\n id: metaObject.id,\n originalSystemId: metaObject.originalSystemId,\n extId: metaObject.extId,\n type: metaObject.type,\n name: metaObject.name\n };\n if (metaObject.parent) {\n metaObjectCfg.parent = metaObject.parent.id;\n }\n if (metaObject.attributes) {\n metaObjectCfg.attributes = metaObject.attributes;\n }\n if (metaObject.propertySetIds) {\n metaObjectCfg.propertySetIds = metaObject.propertySetIds;\n }\n json.metaObjects.push(metaObjectCfg);\n }\n for (let i = 0, len = this.propertySets.length; i < len; i++) {\n const propertySet = this.propertySets[i];\n const propertySetCfg = {\n id: propertySet.id,\n originalSystemId: propertySet.originalSystemId,\n extId: propertySet.extId,\n type: propertySet.type,\n name: propertySet.name,\n propertyies: []\n };\n for (let j = 0, lenj = propertySet.properties.length; j < lenj; j++) {\n const property = propertySet.properties[j];\n const propertyCfg = {\n id: property.id,\n description: property.description,\n type: property.type,\n name: property.name,\n value: property.value,\n valueType: property.valueType\n };\n propertySetCfg.properties.push(propertyCfg);\n }\n json.propertySets.push(propertySetCfg);\n }\n return json;\n }\n\n _globalizeIDs(metaModelData, options) {\n\n const globalize = !!options.globalizeObjectIds;\n\n if (metaModelData.metaObjects) {\n for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {\n const metaObjectData = metaModelData.metaObjects[i];\n\n // Globalize MetaObject IDs and parent IDs\n\n metaObjectData.originalSystemId = metaObjectData.id;\n if (metaObjectData.parent) {\n metaObjectData.originalParentSystemId = metaObjectData.parent;\n }\n if (globalize) {\n metaObjectData.id = math.globalizeObjectId(this.id, metaObjectData.id);\n if (metaObjectData.parent) {\n metaObjectData.parent = math.globalizeObjectId(this.id, metaObjectData.parent);\n }\n }\n\n // Globalize MetaObject property set IDs\n\n if (globalize) {\n const propertySetIds = metaObjectData.propertySetIds;\n if (propertySetIds) {\n const propertySetGlobalIds = [];\n for (let j = 0, lenj = propertySetIds.length; j < lenj; j++) {\n propertySetGlobalIds.push(math.globalizeObjectId(this.id, propertySetIds[j]));\n }\n metaObjectData.propertySetIds = propertySetGlobalIds;\n metaObjectData.originalSystemPropertySetIds = propertySetIds;\n }\n } else {\n metaObjectData.originalSystemPropertySetIds = metaObjectData.propertySetIds;\n }\n }\n }\n\n // Globalize global PropertySet IDs\n\n if (metaModelData.propertySets) {\n for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {\n const propertySet = metaModelData.propertySets[i];\n propertySet.originalSystemId = propertySet.id;\n if (globalize) {\n propertySet.id = math.globalizeObjectId(this.id, propertySet.id);\n }\n }\n }\n }\n}\n\n\nexport {MetaModel};", @@ -43800,7 +44328,7 @@ "lineNumber": 1 }, { - "__docId__": 2197, + "__docId__": 2215, "kind": "class", "name": "MetaModel", "memberof": "src/viewer/metadata/MetaModel.js", @@ -43821,7 +44349,7 @@ "interface": false }, { - "__docId__": 2198, + "__docId__": 2216, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -43834,7 +44362,7 @@ "lineNumber": 30 }, { - "__docId__": 2199, + "__docId__": 2217, "kind": "member", "name": "id", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -43866,7 +44394,7 @@ } }, { - "__docId__": 2200, + "__docId__": 2218, "kind": "member", "name": "projectId", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -43898,7 +44426,7 @@ } }, { - "__docId__": 2201, + "__docId__": 2219, "kind": "member", "name": "revisionId", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -43930,7 +44458,7 @@ } }, { - "__docId__": 2202, + "__docId__": 2220, "kind": "member", "name": "author", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -43961,7 +44489,7 @@ } }, { - "__docId__": 2203, + "__docId__": 2221, "kind": "member", "name": "createdAt", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -43992,7 +44520,7 @@ } }, { - "__docId__": 2204, + "__docId__": 2222, "kind": "member", "name": "creatingApplication", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44023,7 +44551,7 @@ } }, { - "__docId__": 2205, + "__docId__": 2223, "kind": "member", "name": "schema", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44054,7 +44582,7 @@ } }, { - "__docId__": 2206, + "__docId__": 2224, "kind": "member", "name": "metaScene", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44085,7 +44613,7 @@ } }, { - "__docId__": 2207, + "__docId__": 2225, "kind": "member", "name": "propertySets", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44116,7 +44644,7 @@ } }, { - "__docId__": 2208, + "__docId__": 2226, "kind": "member", "name": "rootMetaObjects", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44147,7 +44675,7 @@ } }, { - "__docId__": 2209, + "__docId__": 2227, "kind": "member", "name": "metaObjects", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44178,7 +44706,7 @@ } }, { - "__docId__": 2210, + "__docId__": 2228, "kind": "member", "name": "graph", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44197,7 +44725,7 @@ } }, { - "__docId__": 2211, + "__docId__": 2229, "kind": "member", "name": "finalized", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44216,7 +44744,7 @@ } }, { - "__docId__": 2212, + "__docId__": 2230, "kind": "get", "name": "rootMetaObject", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44250,7 +44778,7 @@ } }, { - "__docId__": 2213, + "__docId__": 2231, "kind": "method", "name": "loadData", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44276,7 +44804,7 @@ "return": null }, { - "__docId__": 2214, + "__docId__": 2232, "kind": "method", "name": "_decompressProperties", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44306,7 +44834,7 @@ "return": null }, { - "__docId__": 2215, + "__docId__": 2233, "kind": "method", "name": "finalize", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44322,7 +44850,7 @@ "return": null }, { - "__docId__": 2217, + "__docId__": 2235, "kind": "method", "name": "getJSON", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44350,7 +44878,7 @@ "params": [] }, { - "__docId__": 2218, + "__docId__": 2236, "kind": "method", "name": "_globalizeIDs", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -44380,7 +44908,7 @@ "return": null }, { - "__docId__": 2219, + "__docId__": 2237, "kind": "file", "name": "src/viewer/metadata/MetaObject.js", "content": "/**\n * @desc Metadata corresponding to an {@link Entity} that represents an object.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````\n *\n * A MetaObject corresponds to an {@link Entity} by having the same {@link MetaObject#id} as the {@link Entity#id}.\n *\n * A MetaObject is created within {@link MetaScene#createMetaModel} and belongs to a {@link MetaModel}.\n *\n * Each MetaObject is registered by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * A {@link MetaModel} represents its object structure with a tree of MetaObjects, with {@link MetaModel#rootMetaObject} referencing\n * the root MetaObject.\n *\n * @class MetaObject\n */\nclass MetaObject {\n\n /**\n * @private\n */\n constructor(params) {\n\n /**\n * The MetaModels that share this MetaObject.\n * @type {MetaModel[]}\n */\n this.metaModels = [];\n\n /**\n * Globally-unique ID.\n *\n * MetaObject instances are registered by this ID in {@link MetaScene#metaObjects}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = params.id;\n\n /**\n * ID of the parent MetaObject.\n * @type {String|Number}\n */\n this.parentId = params.parentId;\n\n /**\n * The parent MetaObject.\n * @type {MetaObject | null}\n */\n this.parent = null;\n\n /**\n * ID of the corresponding object within the originating system, if any.\n *\n * @type {String}\n * @abstract\n */\n this.originalSystemId = params.originalSystemId;\n\n /**\n * Human-readable name.\n *\n * @property name\n * @type {String}\n */\n this.name = params.name;\n\n /**\n * Type - often an IFC product type.\n *\n * @property type\n * @type {String}\n */\n this.type = params.type;\n\n /**\n * IDs of PropertySets associated with this MetaObject.\n * @type {[]|*}\n */\n this.propertySetIds = params.propertySetIds;\n\n /**\n * The {@link PropertySet}s associated with this MetaObject.\n *\n * @property propertySets\n * @type {PropertySet[]}\n */\n this.propertySets = [];\n\n /**\n * The attributes of this MetaObject.\n * @type {{}}\n */\n this.attributes = params.attributes || {};\n\n if (params.external !== undefined && params.external !== null) {\n \n /**\n * External application-specific metadata\n *\n * Undefined when there are is no external application-specific metadata.\n *\n * @property external\n * @type {*}\n */\n this.external = params.external;\n }\n }\n\n /**\n * Backwards compatibility with the object belonging to a single MetaModel.\n * \n * @property metaModel\n * @type {MetaModel|null}\n **/\n get metaModel() {\n if (this.metaModels.length == 1) {\n return this.metaModels[0];\n }\n\n return null;\n }\n\n /**\n * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the subtree.\n *\n * @returns {String[]} Array of {@link MetaObject#id}s.\n */\n getObjectIDsInSubtree() {\n const objectIds = [];\n\n function visit(metaObject) {\n if (!metaObject) {\n return;\n }\n objectIds.push(metaObject.id);\n const children = metaObject.children;\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(this);\n return objectIds;\n }\n\n\n /**\n * Iterates over the {@link MetaObject}s within the subtree.\n *\n * @param {Function} callback Callback fired at each {@link MetaObject}.\n */\n withMetaObjectsInSubtree(callback) {\n\n function visit(metaObject) {\n if (!metaObject) {\n return;\n }\n callback(metaObject);\n const children = metaObject.children;\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(this);\n }\n\n /**\n * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the subtree that have the given {@link MetaObject#type}s.\n *\n * @param {String[]} types {@link MetaObject#type} values.\n * @returns {String[]} Array of {@link MetaObject#id}s.\n */\n getObjectIDsInSubtreeByType(types) {\n const mask = {};\n for (var i = 0, len = types.length; i < len; i++) {\n mask[types[i]] = types[i];\n }\n const objectIds = [];\n\n function visit(metaObject) {\n if (!metaObject) {\n return;\n }\n if (mask[metaObject.type]) {\n objectIds.push(metaObject.id);\n }\n const children = metaObject.children;\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(this);\n return objectIds;\n }\n\n /**\n * Returns properties of this MeteObject as JSON.\n *\n * @returns {{id: (String|Number), type: String, name: String, parent: (String|Number|Undefined)}}\n */\n getJSON() {\n var json = {\n id: this.id,\n type: this.type,\n name: this.name\n };\n if (this.parent) {\n json.parent = this.parent.id\n }\n return json;\n }\n}\n\nexport {MetaObject};", @@ -44391,7 +44919,7 @@ "lineNumber": 1 }, { - "__docId__": 2220, + "__docId__": 2238, "kind": "class", "name": "MetaObject", "memberof": "src/viewer/metadata/MetaObject.js", @@ -44412,7 +44940,7 @@ "interface": false }, { - "__docId__": 2221, + "__docId__": 2239, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44426,7 +44954,7 @@ "ignore": true }, { - "__docId__": 2222, + "__docId__": 2240, "kind": "member", "name": "metaModels", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44445,7 +44973,7 @@ } }, { - "__docId__": 2223, + "__docId__": 2241, "kind": "member", "name": "id", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44477,7 +45005,7 @@ } }, { - "__docId__": 2224, + "__docId__": 2242, "kind": "member", "name": "parentId", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44497,7 +45025,7 @@ } }, { - "__docId__": 2225, + "__docId__": 2243, "kind": "member", "name": "parent", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44517,7 +45045,7 @@ } }, { - "__docId__": 2226, + "__docId__": 2244, "kind": "member", "name": "originalSystemId", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44537,7 +45065,7 @@ "abstract": true }, { - "__docId__": 2227, + "__docId__": 2245, "kind": "member", "name": "name", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44568,7 +45096,7 @@ } }, { - "__docId__": 2228, + "__docId__": 2246, "kind": "member", "name": "type", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44599,7 +45127,7 @@ } }, { - "__docId__": 2229, + "__docId__": 2247, "kind": "member", "name": "propertySetIds", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44619,7 +45147,7 @@ } }, { - "__docId__": 2230, + "__docId__": 2248, "kind": "member", "name": "propertySets", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44650,7 +45178,7 @@ } }, { - "__docId__": 2231, + "__docId__": 2249, "kind": "member", "name": "attributes", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44669,7 +45197,7 @@ } }, { - "__docId__": 2232, + "__docId__": 2250, "kind": "member", "name": "external", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44700,7 +45228,7 @@ } }, { - "__docId__": 2233, + "__docId__": 2251, "kind": "get", "name": "metaModel", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44734,7 +45262,7 @@ } }, { - "__docId__": 2234, + "__docId__": 2252, "kind": "method", "name": "getObjectIDsInSubtree", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44762,7 +45290,7 @@ "params": [] }, { - "__docId__": 2235, + "__docId__": 2253, "kind": "method", "name": "withMetaObjectsInSubtree", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44788,7 +45316,7 @@ "return": null }, { - "__docId__": 2236, + "__docId__": 2254, "kind": "method", "name": "getObjectIDsInSubtreeByType", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44827,7 +45355,7 @@ } }, { - "__docId__": 2237, + "__docId__": 2255, "kind": "method", "name": "getJSON", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -44855,7 +45383,7 @@ "params": [] }, { - "__docId__": 2238, + "__docId__": 2256, "kind": "file", "name": "src/viewer/metadata/MetaScene.js", "content": "import {MetaModel} from \"./MetaModel.js\";\nimport {MetaObject} from \"./MetaObject.js\";\nimport {PropertySet} from \"./PropertySet.js\";\nimport {math} from \"../scene/math/math.js\";\n\n/**\n * @desc Metadata corresponding to a {@link Scene}.\n *\n * * Located in {@link Viewer#metaScene}.\n * * Contains {@link MetaModel}s and {@link MetaObject}s.\n * * [Scene graph example with metadata](http://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneGraph_metadata)\n */\nclass MetaScene {\n\n /**\n * @private\n */\n constructor(viewer, scene) {\n\n /**\n * The {@link Viewer}.\n * @property viewer\n * @type {Viewer}\n */\n this.viewer = viewer;\n\n /**\n * The {@link Scene}.\n * @property scene\n * @type {Scene}\n */\n this.scene = scene;\n\n /**\n * The {@link MetaModel}s belonging to this MetaScene, each mapped to its {@link MetaModel#modelId}.\n *\n * @type {{String:MetaModel}}\n */\n this.metaModels = {};\n\n /**\n * The {@link PropertySet}s belonging to this MetaScene, each mapped to its {@link PropertySet#id}.\n *\n * @type {{String:PropertySet}}\n */\n this.propertySets = {};\n\n /**\n * The {@link MetaObject}s belonging to this MetaScene, each mapped to its {@link MetaObject#id}.\n *\n * @type {{String:MetaObject}}\n */\n this.metaObjects = {};\n\n /**\n * The {@link MetaObject}s belonging to this MetaScene, each mapped to its {@link MetaObject#type}.\n *\n * @type {{String:MetaObject}}\n */\n this.metaObjectsByType = {};\n\n /**\n * The root {@link MetaObject}s belonging to this MetaScene, each mapped to its {@link MetaObject#id}.\n *\n * @type {{String:MetaObject}}\n */\n this.rootMetaObjects = {};\n\n /**\n * Subscriptions to events sent with {@link fire}.\n * @private\n */\n this._eventSubs = {};\n }\n\n /**\n * Subscribes to an event fired at this Viewer.\n *\n * @param {String} event The event\n * @param {Function} callback Callback fired on the event\n */\n on(event, callback) {\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = [];\n this._eventSubs[event] = subs;\n }\n subs.push(callback);\n }\n\n /**\n * Fires an event at this Viewer.\n *\n * @param {String} event Event name\n * @param {Object} value Event parameters\n */\n fire(event, value) {\n const subs = this._eventSubs[event];\n if (subs) {\n for (let i = 0, len = subs.length; i < len; i++) {\n subs[i](value);\n }\n }\n }\n\n /**\n * Unsubscribes from an event fired at this Viewer.\n * @param event\n */\n off(event) { // TODO\n\n }\n\n /**\n * Creates a {@link MetaModel} in this MetaScene.\n *\n * The MetaModel will contain a hierarchy of {@link MetaObject}s, created from the\n * meta objects in ````metaModelData````.\n *\n * The meta object hierarchy in ````metaModelData```` is expected to be non-cyclic, with a single root. If the meta\n * objects are cyclic, then this method will log an error and attempt to recover by creating a dummy root MetaObject\n * of type \"Model\" and connecting all other MetaObjects as its direct children. If the meta objects contain multiple\n * roots, then this method similarly attempts to recover by creating a dummy root MetaObject of type \"Model\" and\n * connecting all the root MetaObjects as its children.\n *\n * @param {String} modelId ID for the new {@link MetaModel}, which will have {@link MetaModel#id} set to this value.\n * @param {Object} metaModelData Data for the {@link MetaModel}.\n * @param {Object} [options] Options for creating the {@link MetaModel}.\n * @param {Object} [options.includeTypes] When provided, only create {@link MetaObject}s with types in this list.\n * @param {Object} [options.excludeTypes] When provided, never create {@link MetaObject}s with types in this list.\n * @param {Boolean} [options.globalizeObjectIds=false] Whether to globalize each {@link MetaObject#id}. Set this ````true```` when you need to load multiple instances of the same meta model, to avoid ID clashes between the meta objects in the different instances.\n * @returns {MetaModel} The new MetaModel.\n */\n createMetaModel(modelId, metaModelData, options = {}) {\n\n const metaModel = new MetaModel({ // Registers MetaModel in #metaModels\n metaScene: this,\n id: modelId,\n projectId: metaModelData.projectId || \"none\",\n revisionId: metaModelData.revisionId || \"none\",\n author: metaModelData.author || \"none\",\n createdAt: metaModelData.createdAt || \"none\",\n creatingApplication: metaModelData.creatingApplication || \"none\",\n schema: metaModelData.schema || \"none\",\n propertySets: []\n });\n\n metaModel.loadData(metaModelData);\n\n metaModel.finalize();\n\n return metaModel;\n }\n\n /**\n * Removes a {@link MetaModel} from this MetaScene.\n *\n * Fires a \"metaModelDestroyed\" event with the value of the {@link MetaModel#id}.\n *\n * @param {String} metaModelId ID of the target {@link MetaModel}.\n */\n destroyMetaModel(metaModelId) {\n\n const metaModel = this.metaModels[metaModelId];\n if (!metaModel) {\n return;\n }\n\n // Remove global PropertySets\n\n if (metaModel.propertySets) {\n for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {\n const propertySet = metaModel.propertySets[i];\n if (propertySet.metaModels.length === 1 && propertySet.metaModels[0].id === metaModelId) { // Property set owned only by this model, delete\n delete this.propertySets[propertySet.id];\n } else {\n const newMetaModels = [];\n for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {\n if (propertySet.metaModels[j].id !== metaModelId) {\n newMetaModels.push(propertySet.metaModels[j]);\n }\n }\n propertySet.metaModels = newMetaModels;\n }\n }\n }\n\n // Remove MetaObjects\n\n if (metaModel.metaObjects) {\n for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {\n const metaObject = metaModel.metaObjects[i];\n const type = metaObject.type;\n const id = metaObject.id;\n if (metaObject.metaModels.length === 1&& metaObject.metaModels[0].id === metaModelId) { // MetaObject owned only by this model, delete\n delete this.metaObjects[id];\n if (!metaObject.parent) {\n delete this.rootMetaObjects[id];\n }\n }\n }\n }\n\n // Re-link entire MetaObject parent/child hierarchy\n\n for (let objectId in this.metaObjects) {\n const metaObject = this.metaObjects[objectId];\n if (metaObject.children) {\n metaObject.children = [];\n }\n\n // Re-link each MetaObject's property sets\n\n if (metaObject.propertySets) {\n metaObject.propertySets = [];\n }\n if (metaObject.propertySetIds) {\n for (let i = 0, len = metaObject.propertySetIds.length; i < len; i++) {\n const propertySetId = metaObject.propertySetIds[i];\n const propertySet = this.propertySets[propertySetId];\n metaObject.propertySets.push(propertySet);\n }\n }\n }\n\n this.metaObjectsByType = {};\n\n for (let objectId in this.metaObjects) {\n const metaObject = this.metaObjects[objectId];\n const type = metaObject.type;\n if (metaObject.children) {\n metaObject.children = null;\n }\n (this.metaObjectsByType[type] || (this.metaObjectsByType[type] = {}))[objectId] = metaObject;\n }\n\n for (let objectId in this.metaObjects) {\n const metaObject = this.metaObjects[objectId];\n if (metaObject.parentId) {\n const parentMetaObject = this.metaObjects[metaObject.parentId];\n if (parentMetaObject) {\n metaObject.parent = parentMetaObject;\n (parentMetaObject.children || (parentMetaObject.children = [])).push(metaObject);\n }\n }\n }\n\n delete this.metaModels[metaModelId];\n\n // Relink MetaObjects to their MetaModels\n\n for (let objectId in this.metaObjects) {\n const metaObject = this.metaObjects[objectId];\n metaObject.metaModels = [];\n }\n\n for (let modelId in this.metaModels) {\n const metaModel = this.metaModels[modelId];\n for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {\n const metaObject = metaModel.metaObjects[i];\n metaObject.metaModels.push(metaModel);\n }\n }\n\n this.fire(\"metaModelDestroyed\", metaModelId);\n }\n\n /**\n * Gets the {@link MetaObject#id}s of the {@link MetaObject}s that have the given {@link MetaObject#type}.\n *\n * @param {String} type The type.\n * @returns {String[]} Array of {@link MetaObject#id}s.\n */\n getObjectIDsByType(type) {\n const metaObjects = this.metaObjectsByType[type];\n return metaObjects ? Object.keys(metaObjects) : [];\n }\n\n /**\n * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the given subtree.\n *\n * @param {String} id ID of the root {@link MetaObject} of the given subtree.\n * @param {String[]} [includeTypes] Optional list of types to include.\n * @param {String[]} [excludeTypes] Optional list of types to exclude.\n * @returns {String[]} Array of {@link MetaObject#id}s.\n */\n getObjectIDsInSubtree(id, includeTypes, excludeTypes) {\n\n const list = [];\n const metaObject = this.metaObjects[id];\n const includeMask = (includeTypes && includeTypes.length > 0) ? arrayToMap(includeTypes) : null;\n const excludeMask = (excludeTypes && excludeTypes.length > 0) ? arrayToMap(excludeTypes) : null;\n\n const visit = (metaObject) => {\n if (!metaObject) {\n return;\n }\n var include = true;\n if (excludeMask && excludeMask[metaObject.type]) {\n include = false;\n } else if (includeMask && (!includeMask[metaObject.type])) {\n include = false;\n }\n if (include) {\n list.push(metaObject.id);\n }\n const children = metaObject.children;\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(metaObject);\n return list;\n }\n\n /**\n * Iterates over the {@link MetaObject}s within the subtree.\n *\n * @param {String} id ID of root {@link MetaObject}.\n * @param {Function} callback Callback fired at each {@link MetaObject}.\n */\n withMetaObjectsInSubtree(id, callback) {\n const metaObject = this.metaObjects[id];\n if (!metaObject) {\n return;\n }\n metaObject.withMetaObjectsInSubtree(callback);\n }\n}\n\nfunction arrayToMap(array) {\n const map = {};\n for (var i = 0, len = array.length; i < len; i++) {\n map[array[i]] = true;\n }\n return map;\n}\n\nexport {MetaScene};", @@ -44866,7 +45394,7 @@ "lineNumber": 1 }, { - "__docId__": 2239, + "__docId__": 2257, "kind": "function", "name": "arrayToMap", "memberof": "src/viewer/metadata/MetaScene.js", @@ -44897,7 +45425,7 @@ "ignore": true }, { - "__docId__": 2240, + "__docId__": 2258, "kind": "class", "name": "MetaScene", "memberof": "src/viewer/metadata/MetaScene.js", @@ -44912,7 +45440,7 @@ "interface": false }, { - "__docId__": 2241, + "__docId__": 2259, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -44926,7 +45454,7 @@ "ignore": true }, { - "__docId__": 2242, + "__docId__": 2260, "kind": "member", "name": "viewer", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -44957,7 +45485,7 @@ } }, { - "__docId__": 2243, + "__docId__": 2261, "kind": "member", "name": "scene", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -44988,7 +45516,7 @@ } }, { - "__docId__": 2244, + "__docId__": 2262, "kind": "member", "name": "metaModels", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45007,7 +45535,7 @@ } }, { - "__docId__": 2245, + "__docId__": 2263, "kind": "member", "name": "propertySets", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45026,7 +45554,7 @@ } }, { - "__docId__": 2246, + "__docId__": 2264, "kind": "member", "name": "metaObjects", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45045,7 +45573,7 @@ } }, { - "__docId__": 2247, + "__docId__": 2265, "kind": "member", "name": "metaObjectsByType", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45064,7 +45592,7 @@ } }, { - "__docId__": 2248, + "__docId__": 2266, "kind": "member", "name": "rootMetaObjects", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45083,7 +45611,7 @@ } }, { - "__docId__": 2249, + "__docId__": 2267, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45100,7 +45628,7 @@ } }, { - "__docId__": 2250, + "__docId__": 2268, "kind": "method", "name": "on", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45136,7 +45664,7 @@ "return": null }, { - "__docId__": 2251, + "__docId__": 2269, "kind": "method", "name": "fire", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45172,7 +45700,7 @@ "return": null }, { - "__docId__": 2252, + "__docId__": 2270, "kind": "method", "name": "off", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45198,7 +45726,7 @@ "return": null }, { - "__docId__": 2253, + "__docId__": 2271, "kind": "method", "name": "createMetaModel", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45289,7 +45817,7 @@ } }, { - "__docId__": 2254, + "__docId__": 2272, "kind": "method", "name": "destroyMetaModel", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45315,7 +45843,7 @@ "return": null }, { - "__docId__": 2256, + "__docId__": 2274, "kind": "method", "name": "getObjectIDsByType", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45354,7 +45882,7 @@ } }, { - "__docId__": 2257, + "__docId__": 2275, "kind": "method", "name": "getObjectIDsInSubtree", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45413,7 +45941,7 @@ } }, { - "__docId__": 2258, + "__docId__": 2276, "kind": "method", "name": "withMetaObjectsInSubtree", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -45449,7 +45977,7 @@ "return": null }, { - "__docId__": 2259, + "__docId__": 2277, "kind": "file", "name": "src/viewer/metadata/Property.js", "content": "/**\n * @desc A property within a {@link PropertySet}.\n *\n * @class Property\n */\nclass Property {\n\n /**\n * @private\n */\n constructor(name, value, type, valueType, description) {\n\n /**\n * The name of this property.\n *\n * @property name\n * @type {String}\n */\n this.name = name;\n\n /**\n * The type of this property.\n *\n * @property type\n * @type {Number|String}\n */\n this.type = type\n\n /**\n * The value of this property.\n *\n * @property value\n * @type {*}\n */\n this.value = value\n\n /**\n * The type of this property's value.\n *\n * @property valueType\n * @type {Number|String}\n */\n this.valueType = valueType;\n\n /**\n * Informative text to explain the property.\n *\n * @property name\n * @type {String}\n */\n this.description = description;\n }\n}\n\nexport {Property};", @@ -45460,7 +45988,7 @@ "lineNumber": 1 }, { - "__docId__": 2260, + "__docId__": 2278, "kind": "class", "name": "Property", "memberof": "src/viewer/metadata/Property.js", @@ -45481,7 +46009,7 @@ "interface": false }, { - "__docId__": 2261, + "__docId__": 2279, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/metadata/Property.js~Property", @@ -45495,7 +46023,7 @@ "ignore": true }, { - "__docId__": 2262, + "__docId__": 2280, "kind": "member", "name": "name", "memberof": "src/viewer/metadata/Property.js~Property", @@ -45526,7 +46054,7 @@ } }, { - "__docId__": 2263, + "__docId__": 2281, "kind": "member", "name": "type", "memberof": "src/viewer/metadata/Property.js~Property", @@ -45558,7 +46086,7 @@ } }, { - "__docId__": 2264, + "__docId__": 2282, "kind": "member", "name": "value", "memberof": "src/viewer/metadata/Property.js~Property", @@ -45589,7 +46117,7 @@ } }, { - "__docId__": 2265, + "__docId__": 2283, "kind": "member", "name": "valueType", "memberof": "src/viewer/metadata/Property.js~Property", @@ -45621,7 +46149,7 @@ } }, { - "__docId__": 2266, + "__docId__": 2284, "kind": "member", "name": "description", "memberof": "src/viewer/metadata/Property.js~Property", @@ -45652,7 +46180,7 @@ } }, { - "__docId__": 2267, + "__docId__": 2285, "kind": "file", "name": "src/viewer/metadata/PropertySet.js", "content": "import {Property} from \"./Property.js\";\n\n/**\n * @desc A set of properties associated with one or more {@link MetaObject}s.\n *\n * A PropertySet is created within {@link MetaScene#createMetaModel} and belongs to a {@link MetaModel}.\n *\n * Each PropertySet is registered by {@link PropertySet#id} in {@link MetaScene#propertySets} and {@link MetaModel#propertySets}.\n *\n * @class PropertySet\n */\nclass PropertySet {\n\n /**\n * @private\n */\n constructor(params) {\n\n /**\n * Globally-unique ID for this PropertySet.\n *\n * PropertySet instances are registered by this ID in {@link MetaScene#propertySets} and {@link MetaModel#propertySets}.\n *\n * @property id\n * @type {String}\n */\n this.id = params.id;\n\n /**\n * ID of the corresponding object within the originating system, if any.\n *\n * @type {String}\n * @abstract\n */\n this.originalSystemId = params.originalSystemId;\n\n /**\n * The MetaModels that share this PropertySet.\n * @type {MetaModel[]}\n */\n this.metaModels = [];\n\n /**\n * Human-readable name of this PropertySet.\n *\n * @property name\n * @type {String}\n */\n this.name = params.name;\n\n /**\n * Type of this PropertySet.\n *\n * @property type\n * @type {String}\n */\n this.type = params.type;\n\n /**\n * Properties within this PropertySet.\n *\n * @property properties\n * @type {Property[]}\n */\n this.properties = [];\n\n if (params.properties) {\n const properties = params.properties;\n for (let i = 0, len = properties.length; i < len; i++) {\n const property = properties[i];\n this.properties.push(new Property(property.name, property.value, property.type, property.valueType, property.description));\n }\n }\n }\n}\n\nexport {PropertySet};", @@ -45663,7 +46191,7 @@ "lineNumber": 1 }, { - "__docId__": 2268, + "__docId__": 2286, "kind": "class", "name": "PropertySet", "memberof": "src/viewer/metadata/PropertySet.js", @@ -45684,7 +46212,7 @@ "interface": false }, { - "__docId__": 2269, + "__docId__": 2287, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/metadata/PropertySet.js~PropertySet", @@ -45698,7 +46226,7 @@ "ignore": true }, { - "__docId__": 2270, + "__docId__": 2288, "kind": "member", "name": "id", "memberof": "src/viewer/metadata/PropertySet.js~PropertySet", @@ -45729,7 +46257,7 @@ } }, { - "__docId__": 2271, + "__docId__": 2289, "kind": "member", "name": "originalSystemId", "memberof": "src/viewer/metadata/PropertySet.js~PropertySet", @@ -45749,7 +46277,7 @@ "abstract": true }, { - "__docId__": 2272, + "__docId__": 2290, "kind": "member", "name": "metaModels", "memberof": "src/viewer/metadata/PropertySet.js~PropertySet", @@ -45768,7 +46296,7 @@ } }, { - "__docId__": 2273, + "__docId__": 2291, "kind": "member", "name": "name", "memberof": "src/viewer/metadata/PropertySet.js~PropertySet", @@ -45799,7 +46327,7 @@ } }, { - "__docId__": 2274, + "__docId__": 2292, "kind": "member", "name": "type", "memberof": "src/viewer/metadata/PropertySet.js~PropertySet", @@ -45830,7 +46358,7 @@ } }, { - "__docId__": 2275, + "__docId__": 2293, "kind": "member", "name": "properties", "memberof": "src/viewer/metadata/PropertySet.js~PropertySet", @@ -45861,7 +46389,7 @@ } }, { - "__docId__": 2276, + "__docId__": 2294, "kind": "file", "name": "src/viewer/scene/Bitmap/Bitmap.js", "content": "import {Component} from '../Component.js';\nimport {Mesh} from \"../mesh/Mesh.js\";\nimport {Node} from \"../nodes/Node.js\";\nimport {PhongMaterial, Texture} from \"../materials/index.js\";\nimport {buildPlaneGeometry, ReadableGeometry} from \"../geometry/index.js\";\nimport {math} from \"../math/math.js\";\n\n/**\n * A plane-shaped 3D object containing a bitmap image.\n *\n * * Creates a 3D quad containing our bitmap, located and oriented using ````pos````, ````normal```` and ````up```` vectors.\n * * Registered by {@link Bitmap#id} in {@link Scene#bitmaps}.\n * * {@link BCFViewpointsPlugin} will save and load Bitmaps in BCF viewpoints.\n *\n * ## Usage\n *\n * In the example below, we'll load the Schependomlaan model, then use\n * an ````Bitmap```` to show a storey plan next to the model.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#ImagePlane_imageInSectionPlane)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#ImagePlane_imageInSectionPlane)]\n *\n * ````javascript\n * import {Viewer, Bitmap, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-24.65, 21.69, 8.16];\n * viewer.camera.look = [-14.62, 2.16, -1.38];\n * viewer.camera.up = [0.59, 0.57, -0.56];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n *\n * new Bitmap(viewer.scene, {\n * src: \"./images/schependomlaanPlanView.png\",\n * visible: true, // Show the Bitmap\n * height: 24.0, // Height of Bitmap\n * pos: [-15, 0, -10], // World-space position of Bitmap's center\n * normal: [0, -1, 0], // Vector perpendicular to Bitmap\n * up: [0, 0, 1], // Direction of Bitmap \"up\"\n * collidable: false, // Bitmap does not contribute to Scene boundary\n * clippable: true, // Bitmap can be clipped by SectionPlanes\n * pickable: true // Allow the ground plane to be picked\n * });\n * ````\n */\nclass Bitmap extends Component {\n\n /**\n * Creates a new Bitmap.\n *\n * Registers the Bitmap in {@link Scene#bitmaps}; causes Scene to fire a \"bitmapCreated\" event.\n *\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this ````Bitmap```` as well.\n * @param {*} [cfg] ````Bitmap```` configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Boolean} [cfg.visible=true] Indicates whether or not this ````Bitmap```` is visible.\n * @param {Number[]} [cfg.pos=[0,0,0]] World-space position of the ````Bitmap````.\n * @param {Number[]} [cfg.normal=[0,0,1]] Normal vector indicating the direction the ````Bitmap```` faces.\n * @param {Number[]} [cfg.up=[0,1,0]] Direction of \"up\" for the ````Bitmap````.\n * @param {Number[]} [cfg.height=1] World-space height of the ````Bitmap````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix for the ````Bitmap````. Overrides the ````position````, ````height```, ````rotation```` and ````normal```` parameters.\n * @param {Boolean} [cfg.collidable=true] Indicates if the ````Bitmap```` is initially included in boundary calculations.\n * @param {Boolean} [cfg.clippable=true] Indicates if the ````Bitmap```` is initially clippable.\n * @param {Boolean} [cfg.pickable=true] Indicates if the ````Bitmap```` is initially pickable.\n * @param {Number} [cfg.opacity=1.0] ````Bitmap````'s initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {String} [cfg.src] URL of image. Accepted file types are PNG and JPEG.\n * @param {HTMLImageElement} [cfg.image] An ````HTMLImageElement```` to source the image from. Overrides ````src````.\n * @param {String} [cfg.imageData] Image data as a base64 encoded string.\n * @param {String} [cfg.type=\"jpg\"] Image MIME type. Accepted values are \"jpg\" and \"png\". Default is \"jpg\". Normally only needed with ````image```` or ````imageData````. Automatically inferred from file extension of ````src````, if the file has a recognized extension.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._type = cfg.type || (cfg.src ? cfg.src.split('.').pop() : null) || \"jpg\";\n this._pos = math.vec3(cfg.pos || [0, 0, 0]);\n this._up = math.vec3(cfg.up || [0, 1, 0]);\n this._normal = math.vec3(cfg.normal || [0, 0, 1]);\n this._height = cfg.height || 1.0;\n\n this._origin = math.vec3();\n this._rtcPos = math.vec3();\n this._imageSize = math.vec2();\n\n this._texture = new Texture(this, {\n flipY: true\n });\n\n this._image = new Image();\n\n if (this._type !== \"jpg\" && this._type !== \"png\") {\n this.error(`Unsupported type - defaulting to \"jpg\"`);\n this._type = \"jpg\";\n }\n\n this._node = new Node(this, {\n matrix: math.inverseMat4(\n math.lookAtMat4v(this._pos, math.subVec3(this._pos, this._normal, math.mat4()),\n this._up,\n math.mat4())),\n children: [\n\n this._bitmapMesh = new Mesh(this, {\n scale: [1, 1, 1],\n rotation: [-90, 0, 0],\n collidable: cfg.collidable,\n pickable: cfg.pickable,\n opacity: cfg.opacity,\n clippable: cfg.clippable,\n\n geometry: new ReadableGeometry(this, buildPlaneGeometry({\n center: [0, 0, 0],\n xSize: 1,\n zSize: 1,\n xSegments: 2,\n zSegments: 2\n })),\n\n material: new PhongMaterial(this, {\n diffuse: [0, 0, 0],\n ambient: [0, 0, 0],\n specular: [0, 0, 0],\n diffuseMap: this._texture,\n emissiveMap: this._texture,\n backfaces: true\n })\n })\n ]\n });\n\n if (cfg.image) {\n this.image = cfg.image;\n } else if (cfg.src) {\n this.src = cfg.src;\n } else if (cfg.imageData) {\n this.imageData = cfg.imageData;\n }\n\n this.scene._bitmapCreated(this);\n }\n\n /**\n * Sets if this ````Bitmap```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} visible Set ````true```` to make this ````Bitmap```` visible.\n */\n set visible(visible) {\n this._bitmapMesh.visible = visible;\n }\n\n /**\n * Gets if this ````Bitmap```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if visible.\n */\n get visible() {\n return this._bitmapMesh.visible;\n }\n\n /**\n * Sets an ````HTMLImageElement```` to source the image from.\n *\n * Sets {@link Texture#src} null.\n *\n * You may also need to set {@link Bitmap#type}, if you want to read the image data with {@link Bitmap#imageData}.\n *\n * @type {HTMLImageElement}\n */\n set image(image) {\n this._image = image;\n if (this._image) {\n this._texture.image = this._image;\n this._imageSize[0] = this._image.width;\n this._imageSize[1] = this._image.height;\n this._updateBitmapMeshScale();\n }\n }\n\n /**\n * Gets the ````HTMLImageElement```` the ````Bitmap````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {HTMLImageElement}\n */\n get image() {\n return this._image;\n }\n\n /**\n * Sets an image file path that the ````Bitmap````'s image is sourced from.\n *\n * If the file extension is a recognized MIME type, also sets {@link Bitmap#type} to that MIME type.\n *\n * Accepted file types are PNG and JPEG.\n *\n * @type {String}\n */\n set src(src) {\n if (src) {\n this._image.onload = () => {\n this._texture.image = this._image;\n this._imageSize[0] = this._image.width;\n this._imageSize[1] = this._image.height;\n this._updateBitmapMeshScale();\n };\n this._image.src = src;\n const ext = src.split('.').pop();\n switch (ext) {\n case \"jpeg\":\n case \"jpg\":\n this._type = \"jpg\";\n break;\n case \"png\":\n this._type = \"png\";\n }\n }\n }\n\n /**\n * Gets the image file path that the ````Bitmap````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {String}\n */\n get src() {\n return this._image.src;\n }\n\n /**\n * Sets an image file path that the ````Bitmap````'s image is sourced from.\n *\n * Accepted file types are PNG and JPEG.\n *\n * Sets {@link Texture#image} null.\n *\n * You may also need to set {@link Bitmap#type}, if you want to read the image data with {@link Bitmap#imageData}.\n *\n * @type {String}\n */\n set imageData(imageData) {\n this._image.onload = () => {\n this._texture.image = image;\n this._imageSize[0] = image.width;\n this._imageSize[1] = image.height;\n this._updateBitmapMeshScale();\n };\n this._image.src = imageData;\n }\n\n /**\n * Gets the image file path that the ````Bitmap````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {String}\n */\n get imageData() {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n canvas.width = this._image.width;\n canvas.height = this._image.height;\n context.drawImage(this._image, 0, 0);\n return canvas.toDataURL(this._type === \"jpg\" ? 'image/jpeg' : 'image/png');\n }\n\n /**\n * Sets the MIME type of this Bitmap.\n *\n * This is used by ````Bitmap```` when getting image data with {@link Bitmap#imageData}.\n *\n * Supported values are \"jpg\" and \"png\",\n *\n * Default is \"jpg\".\n *\n * @type {String}\n */\n set type(type) {\n type = type || \"jpg\";\n if (type !== \"png\" || type !== \"jpg\") {\n this.error(\"Unsupported value for `type` - supported types are `jpg` and `png` - defaulting to `jpg`\");\n type = \"jpg\";\n }\n this._type = type;\n }\n\n /**\n * Gets the MIME type of this Bitmap.\n *\n * @type {String}\n */\n get type() {\n return this._type;\n }\n\n /**\n * Gets the World-space position of this ````Bitmap````.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @returns {Number[]} Current position.\n */\n get pos() {\n return this._pos;\n }\n\n /**\n * Gets the direction of the normal vector that is perpendicular to this ````Bitmap````.\n *\n * @returns {Number[]} value Current normal direction.\n */\n get normal() {\n return this._normal;\n }\n\n /**\n * Gets the \"up\" direction of this ````Bitmap````.\n *\n * @returns {Number[]} value Current \"up\" direction.\n */\n get up() {\n return this._up;\n }\n\n /**\n * Sets the World-space height of the ````Bitmap````.\n *\n * Default value is ````1.0````.\n *\n * @param {Number} height New World-space height of the ````Bitmap````.\n */\n set height(height) {\n this._height = (height === undefined || height === null) ? 1.0 : height;\n if (this._image) {\n this._updateBitmapMeshScale();\n }\n }\n\n /**\n * Gets the World-space height of the ````Bitmap````.\n *\n * Returns {Number} World-space height of the ````Bitmap````.\n */\n get height() {\n return this._height;\n }\n\n /**\n * Sets if this ````Bitmap```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set collidable(value) {\n this._bitmapMesh.collidable = (value !== false);\n }\n\n /**\n * Gets if this ````Bitmap```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._bitmapMesh.collidable;\n }\n\n /**\n * Sets if this ````Bitmap```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set clippable(value) {\n this._bitmapMesh.clippable = (value !== false);\n }\n\n /**\n * Gets if this ````Bitmap```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._bitmapMesh.clippable;\n }\n\n /**\n * Sets if this ````Bitmap```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set pickable(value) {\n this._bitmapMesh.pickable = (value !== false);\n }\n\n /**\n * Gets if this ````Bitmap```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._bitmapMesh.pickable;\n }\n\n /**\n * Sets the opacity factor for this ````Bitmap````.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n this._bitmapMesh.opacity = opacity;\n }\n\n /**\n * Gets this ````Bitmap````'s opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._bitmapMesh.opacity;\n }\n\n /**\n * Destroys this ````Bitmap````.\n *\n * Removes the ```Bitmap```` from {@link Scene#bitmaps}; causes Scene to fire a \"bitmapDestroyed\" event.\n */\n destroy() {\n super.destroy();\n this.scene._bitmapDestroyed(this);\n }\n\n _updateBitmapMeshScale() {\n const aspect = this._imageSize[1] / this._imageSize[0];\n this._bitmapMesh.scale = [this._height / aspect, 1.0, this._height];\n }\n}\n\nexport {Bitmap};\n", @@ -45872,7 +46400,7 @@ "lineNumber": 1 }, { - "__docId__": 2277, + "__docId__": 2295, "kind": "class", "name": "Bitmap", "memberof": "src/viewer/scene/Bitmap/Bitmap.js", @@ -45890,7 +46418,7 @@ ] }, { - "__docId__": 2278, + "__docId__": 2296, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46132,7 +46660,7 @@ ] }, { - "__docId__": 2279, + "__docId__": 2297, "kind": "member", "name": "_type", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46150,7 +46678,7 @@ } }, { - "__docId__": 2280, + "__docId__": 2298, "kind": "member", "name": "_pos", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46168,7 +46696,7 @@ } }, { - "__docId__": 2281, + "__docId__": 2299, "kind": "member", "name": "_up", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46186,7 +46714,7 @@ } }, { - "__docId__": 2282, + "__docId__": 2300, "kind": "member", "name": "_normal", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46204,7 +46732,7 @@ } }, { - "__docId__": 2283, + "__docId__": 2301, "kind": "member", "name": "_height", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46222,7 +46750,7 @@ } }, { - "__docId__": 2284, + "__docId__": 2302, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46240,7 +46768,7 @@ } }, { - "__docId__": 2285, + "__docId__": 2303, "kind": "member", "name": "_rtcPos", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46258,7 +46786,7 @@ } }, { - "__docId__": 2286, + "__docId__": 2304, "kind": "member", "name": "_imageSize", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46276,7 +46804,7 @@ } }, { - "__docId__": 2287, + "__docId__": 2305, "kind": "member", "name": "_texture", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46294,7 +46822,7 @@ } }, { - "__docId__": 2288, + "__docId__": 2306, "kind": "member", "name": "_image", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46312,7 +46840,7 @@ } }, { - "__docId__": 2290, + "__docId__": 2308, "kind": "member", "name": "_node", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46330,7 +46858,7 @@ } }, { - "__docId__": 2294, + "__docId__": 2312, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46355,7 +46883,7 @@ ] }, { - "__docId__": 2295, + "__docId__": 2313, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46387,7 +46915,7 @@ } }, { - "__docId__": 2296, + "__docId__": 2314, "kind": "set", "name": "image", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46408,7 +46936,7 @@ } }, { - "__docId__": 2298, + "__docId__": 2316, "kind": "get", "name": "image", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46429,7 +46957,7 @@ } }, { - "__docId__": 2299, + "__docId__": 2317, "kind": "set", "name": "src", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46450,7 +46978,7 @@ } }, { - "__docId__": 2302, + "__docId__": 2320, "kind": "get", "name": "src", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46471,7 +46999,7 @@ } }, { - "__docId__": 2303, + "__docId__": 2321, "kind": "set", "name": "imageData", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46492,7 +47020,7 @@ } }, { - "__docId__": 2304, + "__docId__": 2322, "kind": "get", "name": "imageData", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46513,7 +47041,7 @@ } }, { - "__docId__": 2305, + "__docId__": 2323, "kind": "set", "name": "type", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46534,7 +47062,7 @@ } }, { - "__docId__": 2307, + "__docId__": 2325, "kind": "get", "name": "type", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46555,7 +47083,7 @@ } }, { - "__docId__": 2308, + "__docId__": 2326, "kind": "get", "name": "pos", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46587,7 +47115,7 @@ } }, { - "__docId__": 2309, + "__docId__": 2327, "kind": "get", "name": "normal", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46619,7 +47147,7 @@ } }, { - "__docId__": 2310, + "__docId__": 2328, "kind": "get", "name": "up", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46651,7 +47179,7 @@ } }, { - "__docId__": 2311, + "__docId__": 2329, "kind": "set", "name": "height", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46676,7 +47204,7 @@ ] }, { - "__docId__": 2313, + "__docId__": 2331, "kind": "get", "name": "height", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46694,7 +47222,7 @@ } }, { - "__docId__": 2314, + "__docId__": 2332, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46715,7 +47243,7 @@ } }, { - "__docId__": 2315, + "__docId__": 2333, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46736,7 +47264,7 @@ } }, { - "__docId__": 2316, + "__docId__": 2334, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46757,7 +47285,7 @@ } }, { - "__docId__": 2317, + "__docId__": 2335, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46778,7 +47306,7 @@ } }, { - "__docId__": 2318, + "__docId__": 2336, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46799,7 +47327,7 @@ } }, { - "__docId__": 2319, + "__docId__": 2337, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46820,7 +47348,7 @@ } }, { - "__docId__": 2320, + "__docId__": 2338, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46841,7 +47369,7 @@ } }, { - "__docId__": 2321, + "__docId__": 2339, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46862,7 +47390,7 @@ } }, { - "__docId__": 2322, + "__docId__": 2340, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46877,7 +47405,7 @@ "return": null }, { - "__docId__": 2323, + "__docId__": 2341, "kind": "method", "name": "_updateBitmapMeshScale", "memberof": "src/viewer/scene/Bitmap/Bitmap.js~Bitmap", @@ -46894,7 +47422,7 @@ "return": null }, { - "__docId__": 2324, + "__docId__": 2342, "kind": "file", "name": "src/viewer/scene/Bitmap/index.js", "content": "export * from \"./Bitmap.js\";", @@ -46905,7 +47433,7 @@ "lineNumber": 1 }, { - "__docId__": 2325, + "__docId__": 2343, "kind": "file", "name": "src/viewer/scene/CameraControl/CameraControl.js", "content": "import {Component} from '../Component.js';\n\nimport {CameraFlightAnimation} from './../camera/CameraFlightAnimation.js';\nimport {PanController} from \"./lib/controllers/PanController.js\";\nimport {PivotController} from \"./lib/controllers/PivotController.js\";\nimport {PickController} from \"./lib/controllers/PickController.js\";\nimport {MousePanRotateDollyHandler} from \"./lib/handlers/MousePanRotateDollyHandler.js\";\nimport {KeyboardAxisViewHandler} from \"./lib/handlers/KeyboardAxisViewHandler.js\";\nimport {MousePickHandler} from \"./lib/handlers/MousePickHandler.js\";\nimport {KeyboardPanRotateDollyHandler} from \"./lib/handlers/KeyboardPanRotateDollyHandler.js\";\nimport {CameraUpdater} from \"./lib/CameraUpdater.js\";\nimport {MouseMiscHandler} from \"./lib/handlers/MouseMiscHandler.js\";\nimport {TouchPanRotateAndDollyHandler} from \"./lib/handlers/TouchPanRotateAndDollyHandler.js\";\nimport {utils} from \"../utils.js\";\nimport {math} from \"../math/math.js\";\nimport {TouchPickHandler} from \"./lib/handlers/TouchPickHandler.js\";\n\nconst DEFAULT_SNAP_PICK_RADIUS = 30;\nconst DEFAULT_SNAP_VERTEX = true;\nconst DEFAULT_SNAP_EDGE = true;\n\n/**\n * @desc Controls the {@link Camera} with user input, and fires events when the user interacts with pickable {@link Entity}s.\n *\n * # Contents\n *\n * * [Overview](#overview)\n * * [Examples](#examples)\n * * [Orbit Mode](#orbit-mode)\n * + [Following the Pointer in Orbit Mode](#--following-the-pointer-in-orbit-mode--)\n * + [Showing the Pivot Position](#--showing-the-pivot-position--)\n * + [Axis-Aligned Views in Orbit Mode](#--axis-aligned-views-in-orbit-mode--)\n * + [View-Fitting Entitys in Orbit Mode](#--view-fitting-entitys-in-orbit-mode--)\n * * [First-Person Mode](#first-person-mode)\n * + [Following the Pointer in First-Person Mode](#--following-the-pointer-in-first-person-mode--)\n * + [Constraining Vertical Position in First-Person Mode](#--constraining-vertical-position-in-first-person-mode--)\n * + [Axis-Aligned Views in First-Person Mode](#--axis-aligned-views-in-first-person-mode--)\n * + [View-Fitting Entitys in First-Person Mode](#--view-fitting-entitys-in-first-person-mode--)\n * * [Plan-View Mode](#plan-view-mode)\n * + [Following the Pointer in Plan-View Mode](#--following-the-pointer-in-plan-view-mode--)\n * + [Axis-Aligned Views in Plan-View Mode](#--axis-aligned-views-in-plan-view-mode--)\n * * [CameraControl Events](#cameracontrol-events)\n * + [\"hover\"](#---hover---)\n * + [\"hoverOff\"](#---hoveroff---)\n * + [\"hoverEnter\"](#---hoverenter---)\n * + [\"hoverOut\"](#---hoverout---)\n * + [\"picked\"](#---picked---)\n * + [\"pickedSurface\"](#---pickedsurface---)\n * + [\"pickedNothing\"](#---pickednothing---)\n * + [\"doublePicked\"](#---doublepicked---)\n * + [\"doublePickedSurface\"](#---doublepickedsurface---)\n * + [\"doublePickedNothing\"](#---doublepickednothing---)\n * + [\"rightClick\"](#---rightclick---)\n * * [Custom Keyboard Mappings](#custom-keyboard-mappings)\n *\n *

    \n *\n * # Overview\n *\n * * Each {@link Viewer} has a ````CameraControl````, located at {@link Viewer#cameraControl}.\n * * {@link CameraControl#navMode} selects the navigation mode:\n * * ````\"orbit\"```` rotates the {@link Camera} position about the target.\n * * ````\"firstPerson\"```` rotates the World about the Camera position.\n * * ````\"planView\"```` never rotates, but still allows to pan and dolly, typically for an axis-aligned view.\n * * {@link CameraControl#followPointer} makes the Camera follow the mouse or touch pointer.\n * * {@link CameraControl#constrainVertical} locks the Camera to its current height when in first-person mode.\n * * ````CameraControl```` fires pick events when we hover, click or tap on an {@link Entity}.\n *

    \n *\n * # Examples\n *\n * * [Orbit Navigation - Duplex Model](https://xeokit.github.io/xeokit-sdk/examples/index.html#CameraControl_orbit_Duplex)\n * * [Orbit Navigation - Holter Tower Model](https://xeokit.github.io/xeokit-sdk/examples/index.html#CameraControl_orbit_HolterTower)\n * * [First-Person Navigation - Duplex Model](https://xeokit.github.io/xeokit-sdk/examples/index.html#CameraControl_firstPerson_Duplex)\n * * [First-Person Navigation - Holter Tower Model](https://xeokit.github.io/xeokit-sdk/examples/index.html#CameraControl_firstPerson_HolterTower)\n * * [Plan-view Navigation - Schependomlaan Model](https://xeokit.github.io/xeokit-sdk/examples/index.html#CameraControl_planView_Schependomlaan)\n * * [Custom Keyboard Mapping](https://xeokit.github.io/xeokit-sdk/examples/index.html#CameraControl_keyMap)\n *

    \n *\n * # Orbit Mode\n *\n * In orbit mode, ````CameraControl```` orbits the {@link Camera} about the target.\n *\n * To enable orbit mode:\n *\n * ````javascript\n * const cameraControl = myViewer.cameraControl;\n * cameraControl.navMode = \"orbit\";\n * ````\n *\n * Then orbit by:\n *\n * * left-dragging the mouse,\n * * tap-dragging the touch pad, and\n * * pressing arrow keys, or ````Q```` and ````E```` on a QWERTY keyboard, or ````A```` and ````E```` on an AZERTY keyboard.\n *

    \n *\n * Dolly forwards and backwards by:\n *\n * * spinning the mouse wheel,\n * * pinching on the touch pad, and\n * * pressing the ````+```` and ````-```` keys, or ````W```` and ````S```` on a QWERTY keyboard, or ````Z```` and ````S```` for AZERTY.\n *

    \n *\n * Pan horizontally and vertically by:\n *\n * * right-dragging the mouse,\n * * left-dragging the mouse with the SHIFT key down,\n * * tap-dragging the touch pad with SHIFT down,\n * * pressing the ````A````, ````D````, ````Z```` and ````X```` keys on a QWERTY keyboard, and\n * * pressing the ````Q````, ````D````, ````W```` and ````X```` keys on an AZERTY keyboard,\n *

    \n *\n * ## Following the Pointer in Orbit Mode\n *\n * When {@link CameraControl#followPointer} is ````true````in orbiting mode, the mouse or touch pointer will dynamically\n * indicate the target that the {@link Camera} will orbit, as well as dolly to and from.\n *\n * Lets ensure that we're in orbit mode, then enable the {@link Camera} to follow the pointer:\n *\n * ````javascript\n * cameraControl.navMode = \"orbit\";\n * cameraControl.followPointer = true;\n * ````\n *\n * ## Smart Pivoting\n *\n * TODO\n *\n * ## Showing the Pivot Position\n *\n * We can configure {@link CameraControl#pivotElement} with an HTML element to indicate the current\n * pivot position. The indicator will appear momentarily each time we move the {@link Camera} while in orbit mode with\n * {@link CameraControl#followPointer} set ````true````.\n *\n * First we'll define some CSS to style our pivot indicator as a black dot with a white border:\n *\n * ````css\n * .camera-pivot-marker {\n * color: #ffffff;\n * position: absolute;\n * width: 25px;\n * height: 25px;\n * border-radius: 15px;\n * border: 2px solid #ebebeb;\n * background: black;\n * visibility: hidden;\n * box-shadow: 5px 5px 15px 1px #000000;\n * z-index: 10000;\n * pointer-events: none;\n * }\n * ````\n *\n * Then we'll attach our pivot indicator's HTML element to the ````CameraControl````:\n *\n * ````javascript\n * const pivotElement = document.createRange().createContextualFragment(\"
    \").firstChild;\n *\n * document.body.appendChild(pivotElement);\n *\n * cameraControl.pivotElement = pivotElement;\n * ````\n *\n * ## Axis-Aligned Views in Orbit Mode\n *\n * In orbit mode, we can use keys 1-6 to position the {@link Camera} to look at the center of the {@link Scene} from along each of the\n * six World-space axis. Pressing one of these keys will fly the {@link Camera} to the corresponding axis-aligned view.\n *\n * ## View-Fitting Entitys in Orbit Mode\n *\n * When {@link CameraControl#doublePickFlyTo} is ````true````, we can left-double-click or\n * double-tap (ie. \"double-pick\") an {@link Entity} to fit it to view. This will cause the {@link Camera}\n * to fly to that Entity. Our target then becomes the center of that Entity. If we are currently pivoting,\n * then our pivot position is then also set to the Entity center.\n *\n * Disable that behaviour by setting {@link CameraControl#doublePickFlyTo} ````false````.\n *\n * # First-Person Mode\n *\n * In first-person mode, ````CameraControl```` rotates the World about the {@link Camera} position.\n *\n * To enable first-person mode:\n *\n * ````javascript\n * cameraControl.navMode = \"firstPerson\";\n * ````\n *\n * Then rotate by:\n *\n * * left-dragging the mouse,\n * * tap-dragging the touch pad,\n * * pressing arrow keys, or ````Q```` and ````E```` on a QWERTY keyboard, or ````A```` and ````E```` on an AZERTY keyboard.\n *

    \n *\n * Dolly forwards and backwards by:\n *\n * * spinning the mouse wheel,\n * * pinching on the touch pad, and\n * * pressing the ````+```` and ````-```` keys, or ````W```` and ````S```` on a QWERTY keyboard, or ````Z```` and ````S```` for AZERTY.\n *

    \n *\n * Pan left, right, up and down by:\n *\n * * left-dragging or right-dragging the mouse, and\n * * tap-dragging the touch pad with SHIFT down.\n *\n * Pan forwards, backwards, left, right, up and down by pressing the ````WSADZX```` keys on a QWERTY keyboard,\n * or ````WSQDWX```` keys on an AZERTY keyboard.\n *

    \n *\n * ## Following the Pointer in First-Person Mode\n *\n * When {@link CameraControl#followPointer} is ````true```` in first-person mode, the mouse or touch pointer will dynamically\n * indicate the target to which the {@link Camera} will dolly to and from. In first-person mode, however, the World will always rotate\n * about the {@link Camera} position.\n *\n * Lets ensure that we're in first-person mode, then enable the {@link Camera} to follow the pointer:\n *\n * ````javascript\n * cameraControl.navMode = \"firstPerson\";\n * cameraControl.followPointer = true;\n * ````\n *\n * When the pointer is over empty space, the target will remain the last object that the pointer was over.\n *\n * ## Constraining Vertical Position in First-Person Mode\n *\n * In first-person mode, we can lock the {@link Camera} to its current position on the vertical World axis, which is useful for walk-through navigation:\n *\n * ````javascript\n * cameraControl.constrainVertical = true;\n * ````\n *\n * ## Axis-Aligned Views in First-Person Mode\n *\n * In first-person mode we can use keys 1-6 to position the {@link Camera} to look at the center of\n * the {@link Scene} from along each of the six World-space axis. Pressing one of these keys will fly the {@link Camera} to the\n * corresponding axis-aligned view.\n *\n * ## View-Fitting Entitys in First-Person Mode\n *\n * As in orbit mode, when in first-person mode and {@link CameraControl#doublePickFlyTo} is ````true````, we can double-click\n * or double-tap an {@link Entity} (ie. \"double-picking\") to fit it in view. This will cause the {@link Camera} to fly to\n * that Entity. Our target then becomes the center of that Entity.\n *\n * Disable that behaviour by setting {@link CameraControl#doublePickFlyTo} ````false````.\n *\n * # Plan-View Mode\n *\n * In plan-view mode, ````CameraControl```` pans and rotates the {@link Camera}, without rotating it.\n *\n * To enable plan-view mode:\n *\n * ````javascript\n * cameraControl.navMode = \"planView\";\n * ````\n *\n * Dolly forwards and backwards by:\n *\n * * spinning the mouse wheel,\n * * pinching on the touch pad, and\n * * pressing the ````+```` and ````-```` keys.\n *\n *
    \n * Pan left, right, up and down by:\n *\n * * left-dragging or right-dragging the mouse, and\n * * tap-dragging the touch pad with SHIFT down.\n *\n * Pan forwards, backwards, left, right, up and down by pressing the ````WSADZX```` keys on a QWERTY keyboard,\n * or ````WSQDWX```` keys on an AZERTY keyboard.\n *

    \n *\n * ## Following the Pointer in Plan-View Mode\n *\n * When {@link CameraControl#followPointer} is ````true```` in plan-view mode, the mouse or touch pointer will dynamically\n * indicate the target to which the {@link Camera} will dolly to and from. In plan-view mode, however, the {@link Camera} cannot rotate.\n *\n * Lets ensure that we're in plan-view mode, then enable the {@link Camera} to follow the pointer:\n *\n * ````javascript\n * cameraControl.navMode = \"planView\";\n * cameraControl.followPointer = true; // Default\n * ````\n *\n * When the pointer is over empty space, the target will remain the last object that the pointer was over.\n *\n * ## Axis-Aligned Views in Plan-View Mode\n *\n * As in orbit and first-person modes, in plan-view mode we can use keys 1-6 to position the {@link Camera} to look at the center of\n * the {@link Scene} from along each of the six World-space axis. Pressing one of these keys will fly the {@link Camera} to the\n * corresponding axis-aligned view.\n *\n * # CameraControl Events\n *\n * ````CameraControl```` fires events as we interact with {@link Entity}s using mouse or touch input.\n *\n * The following examples demonstrate how to subscribe to those events.\n *\n * The first example shows how to save a handle to a subscription, which we can later use to unsubscribe.\n *\n * ## \"hover\"\n *\n * Event fired when the pointer moves while hovering over an Entity.\n *\n * ````javascript\n * const onHover = cameraControl.on(\"hover\", (e) => {\n * const entity = e.entity; // Entity\n * const canvasPos = e.canvasPos; // 2D canvas position\n * });\n * ````\n *\n * To unsubscribe from the event:\n *\n * ````javascript\n * cameraControl.off(onHover);\n * ````\n *\n * ## \"hoverOff\"\n *\n * Event fired when the pointer moves while hovering over empty space.\n *\n * ````javascript\n * cameraControl.on(\"hoverOff\", (e) => {\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"hoverEnter\"\n *\n * Event fired when the pointer moves onto an Entity.\n *\n * ````javascript\n * cameraControl.on(\"hoverEnter\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"hoverOut\"\n *\n * Event fired when the pointer moves off an Entity.\n *\n * ````javascript\n * cameraControl.on(\"hoverOut\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"picked\"\n *\n * Event fired when we left-click or tap on an Entity.\n *\n * ````javascript\n * cameraControl.on(\"picked\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"pickedSurface\"\n *\n * Event fired when we left-click or tap on the surface of an Entity.\n *\n * ````javascript\n * cameraControl.on(\"picked\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * const worldPos = e.worldPos; // 3D World-space position\n * const viewPos = e.viewPos; // 3D View-space position\n * const worldNormal = e.worldNormal; // 3D World-space normal vector\n * });\n * ````\n *\n * ## \"pickedNothing\"\n *\n * Event fired when we left-click or tap on empty space.\n *\n * ````javascript\n * cameraControl.on(\"pickedNothing\", (e) => {\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"doublePicked\"\n *\n * Event fired wwhen we left-double-click or double-tap on an Entity.\n *\n * ````javascript\n * cameraControl.on(\"doublePicked\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"doublePickedSurface\"\n *\n * Event fired when we left-double-click or double-tap on the surface of an Entity.\n *\n * ````javascript\n * cameraControl.on(\"doublePickedSurface\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * const worldPos = e.worldPos;\n * const viewPos = e.viewPos;\n * const worldNormal = e.worldNormal;\n * });\n * ````\n *\n * ## \"doublePickedNothing\"\n *\n * Event fired when we left-double-click or double-tap on empty space.\n *\n * ````javascript\n * cameraControl.on(\"doublePickedNothing\", (e) => {\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"rightClick\"\n *\n * Event fired when we right-click on the canvas.\n *\n * ````javascript\n * cameraControl.on(\"rightClick\", (e) => {\n * const event = e.event; // Mouse event\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## Custom Keyboard Mappings\n *\n * We can customize````CameraControl```` key bindings as shown below.\n *\n * In this example, we'll just set the default bindings for a QWERTY keyboard.\n *\n * ````javascript\n * const input = myViewer.scene.input;\n *\n * cameraControl.navMode = \"orbit\";\n * cameraControl.followPointer = true;\n *\n * const keyMap = {};\n *\n * keyMap[cameraControl.PAN_LEFT] = [input.KEY_A];\n * keyMap[cameraControl.PAN_RIGHT] = [input.KEY_D];\n * keyMap[cameraControl.PAN_UP] = [input.KEY_Z];\n * keyMap[cameraControl.PAN_DOWN] = [input.KEY_X];\n * keyMap[cameraControl.DOLLY_FORWARDS] = [input.KEY_W, input.KEY_ADD];\n * keyMap[cameraControl.DOLLY_BACKWARDS] = [input.KEY_S, input.KEY_SUBTRACT];\n * keyMap[cameraControl.ROTATE_X_POS] = [input.KEY_DOWN_ARROW];\n * keyMap[cameraControl.ROTATE_X_NEG] = [input.KEY_UP_ARROW];\n * keyMap[cameraControl.ROTATE_Y_POS] = [input.KEY_LEFT_ARROW];\n * keyMap[cameraControl.ROTATE_Y_NEG] = [input.KEY_RIGHT_ARROW];\n * keyMap[cameraControl.AXIS_VIEW_RIGHT] = [input.KEY_NUM_1];\n * keyMap[cameraControl.AXIS_VIEW_BACK] = [input.KEY_NUM_2];\n * keyMap[cameraControl.AXIS_VIEW_LEFT] = [input.KEY_NUM_3];\n * keyMap[cameraControl.AXIS_VIEW_FRONT] = [input.KEY_NUM_4];\n * keyMap[cameraControl.AXIS_VIEW_TOP] = [input.KEY_NUM_5];\n * keyMap[cameraControl.AXIS_VIEW_BOTTOM] = [input.KEY_NUM_6];\n *\n * cameraControl.keyMap = keyMap;\n * ````\n *\n * We can also just configure default bindings for a specified keyboard layout, like this:\n *\n * ````javascript\n * cameraControl.keyMap = \"qwerty\";\n * ````\n *\n * Then, ````CameraControl```` will internally set {@link CameraControl#keyMap} to the default key map for the QWERTY\n * layout (which is the same set of mappings we set in the previous example). In other words, if we subsequently\n * read {@link CameraControl#keyMap}, it will now be a key map, instead of the \"qwerty\" string value we set it to.\n *\n * Supported layouts are, so far:\n *\n * * ````\"qwerty\"````\n * * ````\"azerty\"````\n */\nclass CameraControl extends Component {\n\n /**\n * @private\n * @constructor\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_LEFT = 0;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_RIGHT = 1;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_UP = 2;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_DOWN = 3;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_FORWARDS = 4;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_BACKWARDS = 5;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.ROTATE_X_POS = 6;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.ROTATE_X_NEG = 7;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.ROTATE_Y_POS = 8;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.ROTATE_Y_NEG = 9;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.DOLLY_FORWARDS = 10;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.DOLLY_BACKWARDS = 11;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_RIGHT = 12;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_BACK = 13;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_LEFT = 14;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_FRONT = 15;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_TOP = 16;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_BOTTOM = 17;\n\n this._keyMap = {}; // Maps key codes to the above actions\n\n this.scene.canvas.canvas.oncontextmenu = (e) => {\n e.preventDefault();\n };\n\n // User-settable CameraControl configurations\n\n this._configs = {\n\n // Private\n\n longTapTimeout: 600, // Millisecs\n longTapRadius: 5, // Pixels\n\n // General\n\n active: true,\n keyboardLayout: \"qwerty\",\n navMode: \"orbit\",\n planView: false,\n firstPerson: false,\n followPointer: true,\n doublePickFlyTo: true,\n panRightClick: true,\n showPivot: false,\n pointerEnabled: true,\n constrainVertical: false,\n smartPivot: false,\n doubleClickTimeFrame: 250,\n \n snapToVertex: DEFAULT_SNAP_VERTEX,\n snapToEdge: DEFAULT_SNAP_EDGE,\n snapRadius: DEFAULT_SNAP_PICK_RADIUS,\n\n // Rotation\n\n dragRotationRate: 360.0,\n keyboardRotationRate: 90.0,\n rotationInertia: 0.0,\n\n // Panning\n\n keyboardPanRate: 1.0,\n touchPanRate: 1.0,\n panInertia: 0.5,\n\n // Dollying\n\n keyboardDollyRate: 10,\n mouseWheelDollyRate: 100,\n touchDollyRate: 0.2,\n dollyInertia: 0,\n dollyProximityThreshold: 30.0,\n dollyMinSpeed: 0.04\n };\n\n // Current runtime state of the CameraControl\n\n this._states = {\n pointerCanvasPos: math.vec2(),\n mouseover: false,\n followPointerDirty: true,\n mouseDownClientX: 0,\n mouseDownClientY: 0,\n mouseDownCursorX: 0,\n mouseDownCursorY: 0,\n touchStartTime: null,\n activeTouches: [],\n tapStartPos: math.vec2(),\n tapStartTime: -1,\n lastTapTime: -1,\n longTouchTimeout: null\n };\n\n // Updates for CameraUpdater to process on next Scene \"tick\" event\n\n this._updates = {\n rotateDeltaX: 0,\n rotateDeltaY: 0,\n panDeltaX: 0,\n panDeltaY: 0,\n panDeltaZ: 0,\n dollyDelta: 0\n };\n\n // Controllers to assist input event handlers with controlling the Camera\n\n const scene = this.scene;\n\n this._controllers = {\n cameraControl: this,\n pickController: new PickController(this, this._configs),\n pivotController: new PivotController(scene, this._configs),\n panController: new PanController(scene),\n cameraFlight: new CameraFlightAnimation(this, {\n duration: 0.5\n })\n };\n\n // Input event handlers\n\n this._handlers = [\n new MouseMiscHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new TouchPanRotateAndDollyHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new MousePanRotateDollyHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new KeyboardAxisViewHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new MousePickHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new TouchPickHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new KeyboardPanRotateDollyHandler(this.scene, this._controllers, this._configs, this._states, this._updates)\n ];\n\n // Applies scheduled updates to the Camera on each Scene \"tick\" event\n\n this._cameraUpdater = new CameraUpdater(this.scene, this._controllers, this._configs, this._states, this._updates);\n\n // Set initial user configurations\n\n this.navMode = cfg.navMode;\n if (cfg.planView) {\n this.planView = cfg.planView;\n }\n this.constrainVertical = cfg.constrainVertical;\n if (cfg.keyboardLayout) {\n this.keyboardLayout = cfg.keyboardLayout; // Deprecated\n } else {\n this.keyMap = cfg.keyMap;\n }\n this.doublePickFlyTo = cfg.doublePickFlyTo;\n this.panRightClick = cfg.panRightClick;\n this.active = cfg.active;\n this.followPointer = cfg.followPointer;\n this.rotationInertia = cfg.rotationInertia;\n this.keyboardPanRate = cfg.keyboardPanRate;\n this.touchPanRate = cfg.touchPanRate;\n this.keyboardRotationRate = cfg.keyboardRotationRate;\n this.dragRotationRate = cfg.dragRotationRate;\n this.touchDollyRate = cfg.touchDollyRate;\n this.dollyInertia = cfg.dollyInertia;\n this.dollyProximityThreshold = cfg.dollyProximityThreshold;\n this.dollyMinSpeed = cfg.dollyMinSpeed;\n this.panInertia = cfg.panInertia;\n this.pointerEnabled = true;\n this.keyboardDollyRate = cfg.keyboardDollyRate;\n this.mouseWheelDollyRate = cfg.mouseWheelDollyRate;\n }\n\n /**\n * Sets custom mappings of keys to ````CameraControl```` actions.\n *\n * See class docs for usage.\n *\n * @param {{Number:Number}|String} value Either a set of new key mappings, or a string to select a keyboard layout,\n * which causes ````CameraControl```` to use the default key mappings for that layout.\n */\n set keyMap(value) {\n value = value || \"qwerty\";\n if (utils.isString(value)) {\n const input = this.scene.input;\n const keyMap = {};\n\n switch (value) {\n\n default:\n this.error(\"Unsupported value for 'keyMap': \" + value + \" defaulting to 'qwerty'\");\n // Intentional fall-through to \"qwerty\"\n case \"qwerty\":\n keyMap[this.PAN_LEFT] = [input.KEY_A];\n keyMap[this.PAN_RIGHT] = [input.KEY_D];\n keyMap[this.PAN_UP] = [input.KEY_Z];\n keyMap[this.PAN_DOWN] = [input.KEY_X];\n keyMap[this.PAN_BACKWARDS] = [];\n keyMap[this.PAN_FORWARDS] = [];\n keyMap[this.DOLLY_FORWARDS] = [input.KEY_W, input.KEY_ADD];\n keyMap[this.DOLLY_BACKWARDS] = [input.KEY_S, input.KEY_SUBTRACT];\n keyMap[this.ROTATE_X_POS] = [input.KEY_DOWN_ARROW];\n keyMap[this.ROTATE_X_NEG] = [input.KEY_UP_ARROW];\n keyMap[this.ROTATE_Y_POS] = [input.KEY_Q, input.KEY_LEFT_ARROW];\n keyMap[this.ROTATE_Y_NEG] = [input.KEY_E, input.KEY_RIGHT_ARROW];\n keyMap[this.AXIS_VIEW_RIGHT] = [input.KEY_NUM_1];\n keyMap[this.AXIS_VIEW_BACK] = [input.KEY_NUM_2];\n keyMap[this.AXIS_VIEW_LEFT] = [input.KEY_NUM_3];\n keyMap[this.AXIS_VIEW_FRONT] = [input.KEY_NUM_4];\n keyMap[this.AXIS_VIEW_TOP] = [input.KEY_NUM_5];\n keyMap[this.AXIS_VIEW_BOTTOM] = [input.KEY_NUM_6];\n break;\n\n case \"azerty\":\n keyMap[this.PAN_LEFT] = [input.KEY_Q];\n keyMap[this.PAN_RIGHT] = [input.KEY_D];\n keyMap[this.PAN_UP] = [input.KEY_W];\n keyMap[this.PAN_DOWN] = [input.KEY_X];\n keyMap[this.PAN_BACKWARDS] = [];\n keyMap[this.PAN_FORWARDS] = [];\n keyMap[this.DOLLY_FORWARDS] = [input.KEY_Z, input.KEY_ADD];\n keyMap[this.DOLLY_BACKWARDS] = [input.KEY_S, input.KEY_SUBTRACT];\n keyMap[this.ROTATE_X_POS] = [input.KEY_DOWN_ARROW];\n keyMap[this.ROTATE_X_NEG] = [input.KEY_UP_ARROW];\n keyMap[this.ROTATE_Y_POS] = [input.KEY_A, input.KEY_LEFT_ARROW];\n keyMap[this.ROTATE_Y_NEG] = [input.KEY_E, input.KEY_RIGHT_ARROW];\n keyMap[this.AXIS_VIEW_RIGHT] = [input.KEY_NUM_1];\n keyMap[this.AXIS_VIEW_BACK] = [input.KEY_NUM_2];\n keyMap[this.AXIS_VIEW_LEFT] = [input.KEY_NUM_3];\n keyMap[this.AXIS_VIEW_FRONT] = [input.KEY_NUM_4];\n keyMap[this.AXIS_VIEW_TOP] = [input.KEY_NUM_5];\n keyMap[this.AXIS_VIEW_BOTTOM] = [input.KEY_NUM_6];\n break;\n }\n\n this._keyMap = keyMap;\n } else {\n const keyMap = value;\n this._keyMap = keyMap;\n }\n }\n\n /**\n * Gets custom mappings of keys to {@link CameraControl} actions.\n *\n * @returns {{Number:Number}} Current key mappings.\n */\n get keyMap() {\n return this._keyMap;\n }\n\n /**\n * Returns true if any keys configured for the given action are down.\n * @param action\n * @param keyDownMap\n * @private\n */\n _isKeyDownForAction(action, keyDownMap) {\n const keys = this._keyMap[action];\n if (!keys) {\n return false;\n }\n if (!keyDownMap) {\n keyDownMap = this.scene.input.keyDown;\n }\n for (let i = 0, len = keys.length; i < len; i++) {\n const key = keys[i];\n if (keyDownMap[key]) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Sets the HTMl element to represent the pivot point when {@link CameraControl#followPointer} is true.\n *\n * See class comments for an example.\n *\n * @param {HTMLElement} element HTML element representing the pivot point.\n */\n set pivotElement(element) {\n this._controllers.pivotController.setPivotElement(element);\n }\n\n /**\n * Sets if this ````CameraControl```` is active or not.\n *\n * When inactive, the ````CameraControl```` will not react to input.\n *\n * Default is ````true````.\n *\n * @param {Boolean} value Set ````true```` to activate this ````CameraControl````.\n */\n set active(value) {\n value = value !== false;\n this._configs.active = value;\n this._handlers[1]._active = value;\n this._handlers[5]._active = value;\n }\n\n /**\n * Gets if this ````CameraControl```` is active or not.\n *\n * When inactive, the ````CameraControl```` will not react to input.\n *\n * Default is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if this ````CameraControl```` is active.\n */\n get active() {\n return this._configs.active;\n }\n\n /**\n * Sets whether the pointer snap to vertex.\n *\n * @param {boolean} snapToVertex\n */\n set snapToVertex(snapToVertex) {\n this._configs.snapToVertex = !!snapToVertex;\n }\n\n /**\n * Gets whether the pointer snap to vertex.\n *\n * @returns {boolean}\n */\n get snapToVertex() {\n return this._configs.snapToVertex;\n }\n\n /**\n * Sets whether the pointer snap to edge.\n *\n * @param {boolean} snapToEdge\n */\n set snapToEdge(snapToEdge) {\n this._configs.snapToEdge = !!snapToEdge;\n }\n\n /**\n * Gets whether the pointer snap to edge.\n *\n * @returns {boolean}\n */\n get snapToEdge() {\n return this._configs.snapToEdge;\n }\n\n /**\n * Sets the current snap radius for \"hoverSnapOrSurface\" events, to specify whether the radius\n * within which the pointer snaps to the nearest vertex or the nearest edge.\n *\n * Default value is 30 pixels.\n *\n * @param {Number} snapRadius The snap radius.\n */\n set snapRadius(snapRadius) {\n snapRadius = snapRadius || DEFAULT_SNAP_PICK_RADIUS;\n this._configs.snapRadius = snapRadius;\n }\n\n /**\n * Gets the current snap radius.\n *\n * @returns {Number} The snap radius.\n */\n get snapRadius() {\n return this._configs.snapRadius;\n }\n \n /**\n * Sets the current navigation mode.\n *\n * Accepted values are:\n *\n * * \"orbit\" - rotation orbits about the current target or pivot point,\n * * \"firstPerson\" - rotation is about the current eye position,\n * * \"planView\" - rotation is disabled.\n *\n * See class comments for more info.\n *\n * @param {String} navMode The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n */\n set navMode(navMode) {\n navMode = navMode || \"orbit\";\n if (navMode !== \"firstPerson\" && navMode !== \"orbit\" && navMode !== \"planView\") {\n this.error(\"Unsupported value for navMode: \" + navMode + \" - supported values are 'orbit', 'firstPerson' and 'planView' - defaulting to 'orbit'\");\n navMode = \"orbit\";\n }\n this._configs.firstPerson = (navMode === \"firstPerson\");\n this._configs.planView = (navMode === \"planView\");\n if (this._configs.firstPerson || this._configs.planView) {\n this._controllers.pivotController.hidePivot();\n this._controllers.pivotController.endPivot();\n }\n this._configs.navMode = navMode;\n }\n\n /**\n * Gets the current navigation mode.\n *\n * @returns {String} The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n */\n get navMode() {\n return this._configs.navMode;\n }\n\n /**\n * Sets whether mouse and touch input is enabled.\n *\n * Default is ````true````.\n *\n * Disabling mouse and touch input on ````CameraControl```` is useful when we want to temporarily use mouse or\n * touch input to interact with some other 3D control, without disturbing the {@link Camera}.\n *\n * @param {Boolean} value Set ````true```` to enable mouse and touch input.\n */\n set pointerEnabled(value) {\n this._reset();\n this._configs.pointerEnabled = !!value;\n }\n\n _reset() {\n for (let i = 0, len = this._handlers.length; i < len; i++) {\n const handler = this._handlers[i];\n if (handler.reset) {\n handler.reset();\n }\n }\n\n this._updates.panDeltaX = 0;\n this._updates.panDeltaY = 0;\n this._updates.rotateDeltaX = 0;\n this._updates.rotateDeltaY = 0;\n this._updates.dolyDelta = 0;\n }\n\n /**\n * Gets whether mouse and touch input is enabled.\n *\n * Default is ````true````.\n *\n * Disabling mouse and touch input on ````CameraControl```` is desirable when we want to temporarily use mouse or\n * touch input to interact with some other 3D control, without interfering with the {@link Camera}.\n *\n * @returns {Boolean} Returns ````true```` if mouse and touch input is enabled.\n */\n get pointerEnabled() {\n return this._configs.pointerEnabled;\n }\n\n /**\n * Sets whether the {@link Camera} follows the mouse/touch pointer.\n *\n * In orbiting mode, the Camera will orbit about the pointer, and will dolly to and from the pointer.\n *\n * In fly-to mode, the Camera will dolly to and from the pointer, however the World will always rotate about the Camera position.\n *\n * In plan-view mode, the Camera will dolly to and from the pointer, however the Camera will not rotate.\n *\n * Default is ````true````.\n *\n * See class comments for more info.\n *\n * @param {Boolean} value Set ````true```` to enable the Camera to follow the pointer.\n */\n set followPointer(value) {\n this._configs.followPointer = (value !== false);\n }\n\n /**\n * Sets whether the {@link Camera} follows the mouse/touch pointer.\n *\n * In orbiting mode, the Camera will orbit about the pointer, and will dolly to and from the pointer.\n *\n * In fly-to mode, the Camera will dolly to and from the pointer, however the World will always rotate about the Camera position.\n *\n * In plan-view mode, the Camera will dolly to and from the pointer, however the Camera will not rotate.\n *\n * Default is ````true````.\n *\n * See class comments for more info.\n *\n * @returns {Boolean} Returns ````true```` if the Camera follows the pointer.\n */\n get followPointer() {\n return this._configs.followPointer;\n }\n\n /**\n * Sets the current World-space 3D target position.\n *\n * Only applies when {@link CameraControl#followPointer} is ````true````.\n *\n * @param {Number[]} worldPos The new World-space 3D target position.\n */\n set pivotPos(worldPos) {\n this._controllers.pivotController.setPivotPos(worldPos);\n }\n\n /**\n * Gets the current World-space 3D pivot position.\n *\n * Only applies when {@link CameraControl#followPointer} is ````true````.\n *\n * @return {Number[]} worldPos The current World-space 3D pivot position.\n */\n get pivotPos() {\n return this._controllers.pivotController.getPivotPos();\n }\n\n /**\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n */\n set dollyToPointer(value) {\n this.warn(\"dollyToPointer property is deprecated - replaced with followPointer\");\n this.followPointer = value;\n }\n\n /**\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n */\n get dollyToPointer() {\n this.warn(\"dollyToPointer property is deprecated - replaced with followPointer\");\n return this.followPointer;\n }\n\n /**\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n */\n set panToPointer(value) {\n this.warn(\"panToPointer property is deprecated - replaced with followPointer\");\n }\n\n /**\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n */\n get panToPointer() {\n this.warn(\"panToPointer property is deprecated - replaced with followPointer\");\n return false;\n }\n\n /**\n * Sets whether this ````CameraControl```` is in plan-view mode.\n *\n * When in plan-view mode, rotation is disabled.\n *\n * Default is ````false````.\n *\n * Deprecated - use {@link CameraControl#navMode} instead.\n *\n * @param {Boolean} value Set ````true```` to enable plan-view mode.\n * @deprecated\n */\n set planView(value) {\n this._configs.planView = !!value;\n this._configs.firstPerson = false;\n if (this._configs.planView) {\n this._controllers.pivotController.hidePivot();\n this._controllers.pivotController.endPivot();\n }\n this.warn(\"planView property is deprecated - replaced with navMode\");\n }\n\n /**\n * Gets whether this ````CameraControl```` is in plan-view mode.\n *\n * When in plan-view mode, rotation is disabled.\n *\n * Default is ````false````.\n *\n * Deprecated - use {@link CameraControl#navMode} instead.\n *\n * @returns {Boolean} Returns ````true```` if plan-view mode is enabled.\n * @deprecated\n */\n get planView() {\n this.warn(\"planView property is deprecated - replaced with navMode\");\n return this._configs.planView;\n }\n\n /**\n * Sets whether this ````CameraControl```` is in first-person mode.\n *\n * In \"first person\" mode (disabled by default) the look position rotates about the eye position. Otherwise, {@link Camera#eye} rotates about {@link Camera#look}.\n *\n * Default is ````false````.\n *\n * Deprecated - use {@link CameraControl#navMode} instead.\n *\n * @param {Boolean} value Set ````true```` to enable first-person mode.\n * @deprecated\n */\n set firstPerson(value) {\n this.warn(\"firstPerson property is deprecated - replaced with navMode\");\n this._configs.firstPerson = !!value;\n this._configs.planView = false;\n if (this._configs.firstPerson) {\n this._controllers.pivotController.hidePivot();\n this._controllers.pivotController.endPivot();\n }\n }\n\n /**\n * Gets whether this ````CameraControl```` is in first-person mode.\n *\n * In \"first person\" mode (disabled by default) the look position rotates about the eye position. Otherwise, {@link Camera#eye} rotates about {@link Camera#look}.\n *\n * Default is ````false````.\n *\n * Deprecated - use {@link CameraControl#navMode} instead.\n *\n * @returns {Boolean} Returns ````true```` if first-person mode is enabled.\n * @deprecated\n */\n get firstPerson() {\n this.warn(\"firstPerson property is deprecated - replaced with navMode\");\n return this._configs.firstPerson;\n }\n\n /**\n * Sets whether to vertically constrain the {@link Camera} position for first-person navigation.\n *\n * When set ````true````, this constrains {@link Camera#eye} to its current vertical position.\n *\n * Only applies when {@link CameraControl#navMode} is ````\"firstPerson\"````.\n *\n * Default is ````false````.\n *\n * @param {Boolean} value Set ````true```` to vertically constrain the Camera.\n */\n set constrainVertical(value) {\n this._configs.constrainVertical = !!value;\n }\n\n /**\n * Gets whether to vertically constrain the {@link Camera} position for first-person navigation.\n *\n * When set ````true````, this constrains {@link Camera#eye} to its current vertical position.\n *\n * Only applies when {@link CameraControl#navMode} is ````\"firstPerson\"````.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} ````true```` when Camera is vertically constrained.\n */\n get constrainVertical() {\n return this._configs.constrainVertical;\n }\n\n /**\n * Sets whether double-picking an {@link Entity} causes the {@link Camera} to fly to its boundary.\n *\n * Default is ````false````.\n *\n * @param {Boolean} value Set ````true```` to enable double-pick-fly-to mode.\n */\n set doublePickFlyTo(value) {\n this._configs.doublePickFlyTo = value !== false;\n }\n\n /**\n * Gets whether double-picking an {@link Entity} causes the {@link Camera} to fly to its boundary.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} Returns ````true```` when double-pick-fly-to mode is enabled.\n */\n get doublePickFlyTo() {\n return this._configs.doublePickFlyTo;\n }\n\n /**\n * Sets whether either right-clicking (true) or middle-clicking (false) pans the {@link Camera}.\n *\n * Default is ````true````.\n *\n * @param {Boolean} value Set ````false```` to disable pan on right-click.\n */\n set panRightClick(value) {\n this._configs.panRightClick = value !== false;\n }\n\n /**\n * Gets whether right-clicking pans the {@link Camera}.\n *\n * Default is ````true````.\n *\n * @returns {Boolean} Returns ````false```` when pan on right-click is disabled.\n */\n get panRightClick() {\n return this._configs.panRightClick;\n }\n\n /**\n * Sets a factor in range ````[0..1]```` indicating how much the {@link Camera} keeps moving after you finish rotating it.\n *\n * A value of ````0.0```` causes it to immediately stop, ````0.5```` causes its movement to decay 50% on each tick,\n * while ````1.0```` causes no decay, allowing it continue moving, by the current rate of rotation.\n *\n * You may choose an inertia of zero when you want be able to precisely rotate the Camera,\n * without interference from inertia. Zero inertia can also mean that less frames are rendered while\n * you are rotating the Camera.\n *\n * Default is ````0.0````.\n *\n * Does not apply when {@link CameraControl#navMode} is ````\"planView\"````, which disallows rotation.\n *\n * @param {Number} rotationInertia New inertial factor.\n */\n set rotationInertia(rotationInertia) {\n this._configs.rotationInertia = (rotationInertia !== undefined && rotationInertia !== null) ? rotationInertia : 0.0;\n }\n\n /**\n * Gets the rotation inertia factor.\n *\n * Default is ````0.0````.\n *\n * Does not apply when {@link CameraControl#navMode} is ````\"planView\"````, which disallows rotation.\n *\n * @returns {Number} The inertia factor.\n */\n get rotationInertia() {\n return this._configs.rotationInertia;\n }\n\n /**\n * Sets how much the {@link Camera} pans each second with keyboard input.\n *\n * Default is ````5.0````, to pan the Camera ````5.0```` World-space units every second that\n * a panning key is depressed. See the ````CameraControl```` class documentation for which keys control\n * panning.\n *\n * Panning direction is aligned to our Camera's orientation. When we pan horizontally, we pan\n * to our left and right, when we pan vertically, we pan upwards and downwards, and when we pan forwards\n * and backwards, we pan along the direction the Camera is pointing.\n *\n * Unlike dollying when {@link followPointer} is ````true````, panning does not follow the pointer.\n *\n * @param {Number} keyboardPanRate The new keyboard pan rate.\n */\n set keyboardPanRate(keyboardPanRate) {\n this._configs.keyboardPanRate = (keyboardPanRate !== null && keyboardPanRate !== undefined) ? keyboardPanRate : 5.0;\n }\n\n\n /**\n * Sets how fast the camera pans on touch panning\n *\n * @param {Number} touchPanRate The new touch pan rate.\n */\n set touchPanRate(touchPanRate) {\n this._configs.touchPanRate = (touchPanRate !== null && touchPanRate !== undefined) ? touchPanRate : 1.0;\n }\n\n /**\n * Gets how fast the {@link Camera} pans on touch panning\n *\n * Default is ````1.0````.\n *\n * @returns {Number} The current touch pan rate.\n */\n get touchPanRate() {\n return this._configs.touchPanRate;\n }\n\n /**\n * Gets how much the {@link Camera} pans each second with keyboard input.\n *\n * Default is ````5.0````.\n *\n * @returns {Number} The current keyboard pan rate.\n */\n get keyboardPanRate() {\n return this._configs.keyboardPanRate;\n }\n\n /**\n * Sets how many degrees per second the {@link Camera} rotates/orbits with keyboard input.\n *\n * Default is ````90.0````, to rotate/orbit the Camera ````90.0```` degrees every second that\n * a rotation key is depressed. See the ````CameraControl```` class documentation for which keys control\n * rotation/orbit.\n *\n * @param {Number} keyboardRotationRate The new keyboard rotation rate.\n */\n set keyboardRotationRate(keyboardRotationRate) {\n this._configs.keyboardRotationRate = (keyboardRotationRate !== null && keyboardRotationRate !== undefined) ? keyboardRotationRate : 90.0;\n }\n\n /**\n * Sets how many degrees per second the {@link Camera} rotates/orbits with keyboard input.\n *\n * Default is ````90.0````.\n *\n * @returns {Number} The current keyboard rotation rate.\n */\n get keyboardRotationRate() {\n return this._configs.keyboardRotationRate;\n }\n\n /**\n * Sets the current drag rotation rate.\n *\n * This configures how many degrees the {@link Camera} rotates/orbits for a full sweep of the canvas by mouse or touch dragging.\n *\n * For example, a value of ````360.0```` indicates that the ````Camera```` rotates/orbits ````360.0```` degrees horizontally\n * when we sweep the entire width of the canvas.\n *\n * ````CameraControl```` makes vertical rotation half as sensitive as horizontal rotation, so that we don't tend to\n * flip upside-down. Therefore, a value of ````360.0```` rotates/orbits the ````Camera```` through ````180.0```` degrees\n * vertically when we sweep the entire height of the canvas.\n *\n * Default is ````360.0````.\n *\n * @param {Number} dragRotationRate The new drag rotation rate.\n */\n set dragRotationRate(dragRotationRate) {\n this._configs.dragRotationRate = (dragRotationRate !== null && dragRotationRate !== undefined) ? dragRotationRate : 360.0;\n }\n\n /**\n * Gets the current drag rotation rate.\n *\n * Default is ````360.0````.\n *\n * @returns {Number} The current drag rotation rate.\n */\n get dragRotationRate() {\n return this._configs.dragRotationRate;\n }\n\n /**\n * Sets how much the {@link Camera} dollys each second with keyboard input.\n *\n * Default is ````15.0````, to dolly the {@link Camera} ````15.0```` World-space units per second while we hold down\n * the ````+```` and ````-```` keys.\n *\n * @param {Number} keyboardDollyRate The new keyboard dolly rate.\n */\n set keyboardDollyRate(keyboardDollyRate) {\n this._configs.keyboardDollyRate = (keyboardDollyRate !== null && keyboardDollyRate !== undefined) ? keyboardDollyRate : 15.0;\n }\n\n /**\n * Gets how much the {@link Camera} dollys each second with keyboard input.\n *\n * Default is ````15.0````.\n *\n * @returns {Number} The current keyboard dolly rate.\n */\n get keyboardDollyRate() {\n return this._configs.keyboardDollyRate;\n }\n\n /**\n * Sets how much the {@link Camera} dollys with touch input.\n *\n * Default is ````0.2````\n *\n * @param {Number} touchDollyRate The new touch dolly rate.\n */\n set touchDollyRate(touchDollyRate) {\n this._configs.touchDollyRate = (touchDollyRate !== null && touchDollyRate !== undefined) ? touchDollyRate : 0.2;\n }\n\n /**\n * Gets how much the {@link Camera} dollys each second with touch input.\n *\n * Default is ````0.2````.\n *\n * @returns {Number} The current touch dolly rate.\n */\n get touchDollyRate() {\n return this._configs.touchDollyRate;\n }\n\n /**\n * Sets how much the {@link Camera} dollys each second while the mouse wheel is spinning.\n *\n * Default is ````100.0````, to dolly the {@link Camera} ````10.0```` World-space units per second as we spin\n * the mouse wheel.\n *\n * @param {Number} mouseWheelDollyRate The new mouse wheel dolly rate.\n */\n set mouseWheelDollyRate(mouseWheelDollyRate) {\n this._configs.mouseWheelDollyRate = (mouseWheelDollyRate !== null && mouseWheelDollyRate !== undefined) ? mouseWheelDollyRate : 100.0;\n }\n\n /**\n * Gets how much the {@link Camera} dollys each second while the mouse wheel is spinning.\n *\n * Default is ````100.0````.\n *\n * @returns {Number} The current mouseWheel dolly rate.\n */\n get mouseWheelDollyRate() {\n return this._configs.mouseWheelDollyRate;\n }\n\n /**\n * Sets the dolly inertia factor.\n *\n * This factor configures how much the {@link Camera} keeps moving after you finish dollying it.\n *\n * This factor is a value in range ````[0..1]````. A value of ````0.0```` causes dollying to immediately stop,\n * ````0.5```` causes dollying to decay 50% on each animation frame, while ````1.0```` causes no decay, which allows dollying\n * to continue until further input stops it.\n *\n * You might set ````dollyInertia```` to zero when you want be able to precisely position or rotate the Camera,\n * without interference from inertia. This also means that xeokit renders less frames while dollying the Camera,\n * which can improve rendering performance.\n *\n * Default is ````0````.\n *\n * @param {Number} dollyInertia New dolly inertia factor.\n */\n set dollyInertia(dollyInertia) {\n this._configs.dollyInertia = (dollyInertia !== undefined && dollyInertia !== null) ? dollyInertia : 0;\n }\n\n /**\n * Gets the dolly inertia factor.\n *\n * Default is ````0````.\n *\n * @returns {Number} The current dolly inertia factor.\n */\n get dollyInertia() {\n return this._configs.dollyInertia;\n }\n\n /**\n * Sets the proximity to the closest object below which dolly speed decreases, and above which dolly speed increases.\n *\n * Default is ````35.0````.\n *\n * @param {Number} dollyProximityThreshold New dolly proximity threshold.\n */\n set dollyProximityThreshold(dollyProximityThreshold) {\n this._configs.dollyProximityThreshold = (dollyProximityThreshold !== undefined && dollyProximityThreshold !== null) ? dollyProximityThreshold : 35.0;\n }\n\n /**\n * Gets the proximity to the closest object below which dolly speed decreases, and above which dolly speed increases.\n *\n * Default is ````35.0````.\n *\n * @returns {Number} The current dolly proximity threshold.\n */\n get dollyProximityThreshold() {\n return this._configs.dollyProximityThreshold;\n }\n\n /**\n * Sets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @param {Number} dollyMinSpeed New dolly minimum speed.\n */\n set dollyMinSpeed(dollyMinSpeed) {\n this._configs.dollyMinSpeed = (dollyMinSpeed !== undefined && dollyMinSpeed !== null) ? dollyMinSpeed : 0.04;\n }\n\n /**\n * Gets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @returns {Number} The current minimum dolly speed.\n */\n get dollyMinSpeed() {\n return this._configs.dollyMinSpeed;\n }\n\n /**\n * Sets the pan inertia factor.\n *\n * This factor configures how much the {@link Camera} keeps moving after you finish panning it.\n *\n * This factor is a value in range ````[0..1]````. A value of ````0.0```` causes panning to immediately stop,\n * ````0.5```` causes panning to decay 50% on each animation frame, while ````1.0```` causes no decay, which allows panning\n * to continue until further input stops it.\n *\n * You might set ````panInertia```` to zero when you want be able to precisely position or rotate the Camera,\n * without interference from inertia. This also means that xeokit renders less frames while panning the Camera,\n * wich can improve rendering performance.\n *\n * Default is ````0.5````.\n *\n * @param {Number} panInertia New pan inertia factor.\n */\n set panInertia(panInertia) {\n this._configs.panInertia = (panInertia !== undefined && panInertia !== null) ? panInertia : 0.5;\n }\n\n /**\n * Gets the pan inertia factor.\n *\n * Default is ````0.5````.\n *\n * @returns {Number} The current pan inertia factor.\n */\n get panInertia() {\n return this._configs.panInertia;\n }\n\n /**\n * Sets the keyboard layout.\n *\n * Supported layouts are:\n *\n * * ````\"qwerty\"```` (default)\n * * ````\"azerty\"````\n *\n * @deprecated\n * @param {String} value Selects the keyboard layout.\n */\n set keyboardLayout(value) {\n // this.warn(\"keyboardLayout property is deprecated - use keyMap property instead\");\n value = value || \"qwerty\";\n if (value !== \"qwerty\" && value !== \"azerty\") {\n this.error(\"Unsupported value for keyboardLayout - defaulting to 'qwerty'\");\n value = \"qwerty\";\n }\n this._configs.keyboardLayout = value;\n this.keyMap = this._configs.keyboardLayout;\n }\n\n /**\n * Gets the keyboard layout.\n *\n * Supported layouts are:\n *\n * * ````\"qwerty\"```` (default)\n * * ````\"azerty\"````\n *\n * @deprecated\n * @returns {String} The current keyboard layout.\n */\n get keyboardLayout() {\n return this._configs.keyboardLayout;\n }\n\n /**\n * Sets a sphere as the representation of the pivot position.\n *\n * @param {Object} [cfg] Sphere configuration.\n * @param {String} [cfg.size=1] Optional size factor of the sphere. Defaults to 1.\n * @param {String} [cfg.material=PhongMaterial] Optional size factor of the sphere. Defaults to a red opaque material.\n */\n enablePivotSphere(cfg = {}) {\n this._controllers.pivotController.enablePivotSphere(cfg);\n }\n\n /**\n * Remove the sphere as the representation of the pivot position.\n *\n */\n disablePivotSphere() {\n this._controllers.pivotController.disablePivotSphere();\n }\n \n /**\n * Sets whether smart default pivoting is enabled.\n *\n * When ````true````, we'll pivot by default about the 3D position of the mouse/touch pointer on an\n * imaginary sphere that's centered at {@link Camera#eye} and sized to the {@link Scene} boundary.\n *\n * When ````false````, we'll pivot by default about {@link Camera#look}.\n *\n * Default is ````false````.\n *\n * @param {Boolean} enabled Set ````true```` to pivot by default about the selected point on the virtual sphere, or ````false```` to pivot by default about {@link Camera#look}.\n */\n set smartPivot(enabled) {\n this._configs.smartPivot = (enabled !== false);\n }\n\n /**\n * Gets whether smart default pivoting is enabled.\n *\n * When ````true````, we'll pivot by default about the 3D position of the mouse/touch pointer on an\n * imaginary sphere that's centered at {@link Camera#eye} and sized to the {@link Scene} boundary.\n *\n * When ````false````, we'll pivot by default about {@link Camera#look}.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} Returns ````true```` when pivoting by default about the selected point on the virtual sphere, or ````false```` when pivoting by default about {@link Camera#look}.\n */\n get smartPivot() {\n return this._configs.smartPivot;\n }\n\n /**\n * Sets the double click time frame length in milliseconds.\n * \n * If two mouse click events occur within this time frame, it is considered a double click. \n * \n * Default is ````250````\n * \n * @param {Number} value New double click time frame.\n */\n set doubleClickTimeFrame(value) {\n this._configs.doubleClickTimeFrame = (value !== undefined && value !== null) ? value : 250;\n }\n\n /**\n * Gets the double click time frame length in milliseconds.\n * \n * Default is ````250````\n * \n * @param {Number} value Current double click time frame.\n */\n get doubleClickTimeFrame() {\n return this._configs.doubleClickTimeFrame;\n }\n\n /**\n * Destroys this ````CameraControl````.\n * @private\n */\n destroy() {\n this._destroyHandlers();\n this._destroyControllers();\n this._cameraUpdater.destroy();\n super.destroy();\n }\n\n _destroyHandlers() {\n for (let i = 0, len = this._handlers.length; i < len; i++) {\n const handler = this._handlers[i];\n if (handler.destroy) {\n handler.destroy();\n }\n }\n }\n\n _destroyControllers() {\n for (let i = 0, len = this._controllers.length; i < len; i++) {\n const controller = this._controllers[i];\n if (controller.destroy) {\n controller.destroy();\n }\n }\n }\n}\n\nexport {\n CameraControl\n};\n", @@ -46916,7 +47444,7 @@ "lineNumber": 1 }, { - "__docId__": 2326, + "__docId__": 2344, "kind": "variable", "name": "DEFAULT_SNAP_PICK_RADIUS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js", @@ -46937,7 +47465,7 @@ "ignore": true }, { - "__docId__": 2327, + "__docId__": 2345, "kind": "variable", "name": "DEFAULT_SNAP_VERTEX", "memberof": "src/viewer/scene/CameraControl/CameraControl.js", @@ -46958,7 +47486,7 @@ "ignore": true }, { - "__docId__": 2328, + "__docId__": 2346, "kind": "variable", "name": "DEFAULT_SNAP_EDGE", "memberof": "src/viewer/scene/CameraControl/CameraControl.js", @@ -46979,7 +47507,7 @@ "ignore": true }, { - "__docId__": 2329, + "__docId__": 2347, "kind": "class", "name": "CameraControl", "memberof": "src/viewer/scene/CameraControl/CameraControl.js", @@ -46997,7 +47525,7 @@ ] }, { - "__docId__": 2330, + "__docId__": 2348, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47017,7 +47545,7 @@ "ignore": true }, { - "__docId__": 2331, + "__docId__": 2349, "kind": "member", "name": "PAN_LEFT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47042,7 +47570,7 @@ } }, { - "__docId__": 2332, + "__docId__": 2350, "kind": "member", "name": "PAN_RIGHT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47067,7 +47595,7 @@ } }, { - "__docId__": 2333, + "__docId__": 2351, "kind": "member", "name": "PAN_UP", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47092,7 +47620,7 @@ } }, { - "__docId__": 2334, + "__docId__": 2352, "kind": "member", "name": "PAN_DOWN", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47117,7 +47645,7 @@ } }, { - "__docId__": 2335, + "__docId__": 2353, "kind": "member", "name": "PAN_FORWARDS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47142,7 +47670,7 @@ } }, { - "__docId__": 2336, + "__docId__": 2354, "kind": "member", "name": "PAN_BACKWARDS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47167,7 +47695,7 @@ } }, { - "__docId__": 2337, + "__docId__": 2355, "kind": "member", "name": "ROTATE_X_POS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47192,7 +47720,7 @@ } }, { - "__docId__": 2338, + "__docId__": 2356, "kind": "member", "name": "ROTATE_X_NEG", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47217,7 +47745,7 @@ } }, { - "__docId__": 2339, + "__docId__": 2357, "kind": "member", "name": "ROTATE_Y_POS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47242,7 +47770,7 @@ } }, { - "__docId__": 2340, + "__docId__": 2358, "kind": "member", "name": "ROTATE_Y_NEG", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47267,7 +47795,7 @@ } }, { - "__docId__": 2341, + "__docId__": 2359, "kind": "member", "name": "DOLLY_FORWARDS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47292,7 +47820,7 @@ } }, { - "__docId__": 2342, + "__docId__": 2360, "kind": "member", "name": "DOLLY_BACKWARDS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47317,7 +47845,7 @@ } }, { - "__docId__": 2343, + "__docId__": 2361, "kind": "member", "name": "AXIS_VIEW_RIGHT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47342,7 +47870,7 @@ } }, { - "__docId__": 2344, + "__docId__": 2362, "kind": "member", "name": "AXIS_VIEW_BACK", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47367,7 +47895,7 @@ } }, { - "__docId__": 2345, + "__docId__": 2363, "kind": "member", "name": "AXIS_VIEW_LEFT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47392,7 +47920,7 @@ } }, { - "__docId__": 2346, + "__docId__": 2364, "kind": "member", "name": "AXIS_VIEW_FRONT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47417,7 +47945,7 @@ } }, { - "__docId__": 2347, + "__docId__": 2365, "kind": "member", "name": "AXIS_VIEW_TOP", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47442,7 +47970,7 @@ } }, { - "__docId__": 2348, + "__docId__": 2366, "kind": "member", "name": "AXIS_VIEW_BOTTOM", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47467,7 +47995,7 @@ } }, { - "__docId__": 2349, + "__docId__": 2367, "kind": "member", "name": "_keyMap", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47485,7 +48013,7 @@ } }, { - "__docId__": 2350, + "__docId__": 2368, "kind": "member", "name": "_configs", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47503,7 +48031,7 @@ } }, { - "__docId__": 2351, + "__docId__": 2369, "kind": "member", "name": "_states", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47521,7 +48049,7 @@ } }, { - "__docId__": 2352, + "__docId__": 2370, "kind": "member", "name": "_updates", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47539,7 +48067,7 @@ } }, { - "__docId__": 2353, + "__docId__": 2371, "kind": "member", "name": "_controllers", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47557,7 +48085,7 @@ } }, { - "__docId__": 2354, + "__docId__": 2372, "kind": "member", "name": "_handlers", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47575,7 +48103,7 @@ } }, { - "__docId__": 2355, + "__docId__": 2373, "kind": "member", "name": "_cameraUpdater", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47593,7 +48121,7 @@ } }, { - "__docId__": 2378, + "__docId__": 2396, "kind": "set", "name": "keyMap", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47618,7 +48146,7 @@ ] }, { - "__docId__": 2381, + "__docId__": 2399, "kind": "get", "name": "keyMap", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47650,7 +48178,7 @@ } }, { - "__docId__": 2382, + "__docId__": 2400, "kind": "method", "name": "_isKeyDownForAction", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47691,7 +48219,7 @@ } }, { - "__docId__": 2383, + "__docId__": 2401, "kind": "set", "name": "pivotElement", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47716,7 +48244,7 @@ ] }, { - "__docId__": 2384, + "__docId__": 2402, "kind": "set", "name": "active", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47741,7 +48269,7 @@ ] }, { - "__docId__": 2385, + "__docId__": 2403, "kind": "get", "name": "active", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47773,7 +48301,7 @@ } }, { - "__docId__": 2386, + "__docId__": 2404, "kind": "set", "name": "snapToVertex", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47798,7 +48326,7 @@ ] }, { - "__docId__": 2387, + "__docId__": 2405, "kind": "get", "name": "snapToVertex", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47830,7 +48358,7 @@ } }, { - "__docId__": 2388, + "__docId__": 2406, "kind": "set", "name": "snapToEdge", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47855,7 +48383,7 @@ ] }, { - "__docId__": 2389, + "__docId__": 2407, "kind": "get", "name": "snapToEdge", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47887,7 +48415,7 @@ } }, { - "__docId__": 2390, + "__docId__": 2408, "kind": "set", "name": "snapRadius", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47912,7 +48440,7 @@ ] }, { - "__docId__": 2391, + "__docId__": 2409, "kind": "get", "name": "snapRadius", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47944,7 +48472,7 @@ } }, { - "__docId__": 2392, + "__docId__": 2410, "kind": "set", "name": "navMode", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -47969,7 +48497,7 @@ ] }, { - "__docId__": 2393, + "__docId__": 2411, "kind": "get", "name": "navMode", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48001,7 +48529,7 @@ } }, { - "__docId__": 2394, + "__docId__": 2412, "kind": "set", "name": "pointerEnabled", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48026,7 +48554,7 @@ ] }, { - "__docId__": 2395, + "__docId__": 2413, "kind": "method", "name": "_reset", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48043,7 +48571,7 @@ "return": null }, { - "__docId__": 2396, + "__docId__": 2414, "kind": "get", "name": "pointerEnabled", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48075,7 +48603,7 @@ } }, { - "__docId__": 2397, + "__docId__": 2415, "kind": "set", "name": "followPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48100,7 +48628,7 @@ ] }, { - "__docId__": 2398, + "__docId__": 2416, "kind": "get", "name": "followPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48132,7 +48660,7 @@ } }, { - "__docId__": 2399, + "__docId__": 2417, "kind": "set", "name": "pivotPos", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48157,7 +48685,7 @@ ] }, { - "__docId__": 2400, + "__docId__": 2418, "kind": "get", "name": "pivotPos", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48183,7 +48711,7 @@ } }, { - "__docId__": 2401, + "__docId__": 2419, "kind": "set", "name": "dollyToPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48209,7 +48737,7 @@ ] }, { - "__docId__": 2403, + "__docId__": 2421, "kind": "get", "name": "dollyToPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48242,7 +48770,7 @@ } }, { - "__docId__": 2404, + "__docId__": 2422, "kind": "set", "name": "panToPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48268,7 +48796,7 @@ ] }, { - "__docId__": 2405, + "__docId__": 2423, "kind": "get", "name": "panToPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48301,7 +48829,7 @@ } }, { - "__docId__": 2406, + "__docId__": 2424, "kind": "set", "name": "planView", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48327,7 +48855,7 @@ ] }, { - "__docId__": 2407, + "__docId__": 2425, "kind": "get", "name": "planView", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48360,7 +48888,7 @@ } }, { - "__docId__": 2408, + "__docId__": 2426, "kind": "set", "name": "firstPerson", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48386,7 +48914,7 @@ ] }, { - "__docId__": 2409, + "__docId__": 2427, "kind": "get", "name": "firstPerson", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48419,7 +48947,7 @@ } }, { - "__docId__": 2410, + "__docId__": 2428, "kind": "set", "name": "constrainVertical", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48444,7 +48972,7 @@ ] }, { - "__docId__": 2411, + "__docId__": 2429, "kind": "get", "name": "constrainVertical", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48476,7 +49004,7 @@ } }, { - "__docId__": 2412, + "__docId__": 2430, "kind": "set", "name": "doublePickFlyTo", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48501,7 +49029,7 @@ ] }, { - "__docId__": 2413, + "__docId__": 2431, "kind": "get", "name": "doublePickFlyTo", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48533,7 +49061,7 @@ } }, { - "__docId__": 2414, + "__docId__": 2432, "kind": "set", "name": "panRightClick", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48558,7 +49086,7 @@ ] }, { - "__docId__": 2415, + "__docId__": 2433, "kind": "get", "name": "panRightClick", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48590,7 +49118,7 @@ } }, { - "__docId__": 2416, + "__docId__": 2434, "kind": "set", "name": "rotationInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48615,7 +49143,7 @@ ] }, { - "__docId__": 2417, + "__docId__": 2435, "kind": "get", "name": "rotationInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48647,7 +49175,7 @@ } }, { - "__docId__": 2418, + "__docId__": 2436, "kind": "set", "name": "keyboardPanRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48672,7 +49200,7 @@ ] }, { - "__docId__": 2419, + "__docId__": 2437, "kind": "set", "name": "touchPanRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48697,7 +49225,7 @@ ] }, { - "__docId__": 2420, + "__docId__": 2438, "kind": "get", "name": "touchPanRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48729,7 +49257,7 @@ } }, { - "__docId__": 2421, + "__docId__": 2439, "kind": "get", "name": "keyboardPanRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48761,7 +49289,7 @@ } }, { - "__docId__": 2422, + "__docId__": 2440, "kind": "set", "name": "keyboardRotationRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48786,7 +49314,7 @@ ] }, { - "__docId__": 2423, + "__docId__": 2441, "kind": "get", "name": "keyboardRotationRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48818,7 +49346,7 @@ } }, { - "__docId__": 2424, + "__docId__": 2442, "kind": "set", "name": "dragRotationRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48843,7 +49371,7 @@ ] }, { - "__docId__": 2425, + "__docId__": 2443, "kind": "get", "name": "dragRotationRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48875,7 +49403,7 @@ } }, { - "__docId__": 2426, + "__docId__": 2444, "kind": "set", "name": "keyboardDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48900,7 +49428,7 @@ ] }, { - "__docId__": 2427, + "__docId__": 2445, "kind": "get", "name": "keyboardDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48932,7 +49460,7 @@ } }, { - "__docId__": 2428, + "__docId__": 2446, "kind": "set", "name": "touchDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48957,7 +49485,7 @@ ] }, { - "__docId__": 2429, + "__docId__": 2447, "kind": "get", "name": "touchDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -48989,7 +49517,7 @@ } }, { - "__docId__": 2430, + "__docId__": 2448, "kind": "set", "name": "mouseWheelDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49014,7 +49542,7 @@ ] }, { - "__docId__": 2431, + "__docId__": 2449, "kind": "get", "name": "mouseWheelDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49046,7 +49574,7 @@ } }, { - "__docId__": 2432, + "__docId__": 2450, "kind": "set", "name": "dollyInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49071,7 +49599,7 @@ ] }, { - "__docId__": 2433, + "__docId__": 2451, "kind": "get", "name": "dollyInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49103,7 +49631,7 @@ } }, { - "__docId__": 2434, + "__docId__": 2452, "kind": "set", "name": "dollyProximityThreshold", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49128,7 +49656,7 @@ ] }, { - "__docId__": 2435, + "__docId__": 2453, "kind": "get", "name": "dollyProximityThreshold", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49160,7 +49688,7 @@ } }, { - "__docId__": 2436, + "__docId__": 2454, "kind": "set", "name": "dollyMinSpeed", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49185,7 +49713,7 @@ ] }, { - "__docId__": 2437, + "__docId__": 2455, "kind": "get", "name": "dollyMinSpeed", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49217,7 +49745,7 @@ } }, { - "__docId__": 2438, + "__docId__": 2456, "kind": "set", "name": "panInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49242,7 +49770,7 @@ ] }, { - "__docId__": 2439, + "__docId__": 2457, "kind": "get", "name": "panInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49274,7 +49802,7 @@ } }, { - "__docId__": 2440, + "__docId__": 2458, "kind": "set", "name": "keyboardLayout", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49300,7 +49828,7 @@ ] }, { - "__docId__": 2442, + "__docId__": 2460, "kind": "get", "name": "keyboardLayout", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49333,7 +49861,7 @@ } }, { - "__docId__": 2443, + "__docId__": 2461, "kind": "method", "name": "enablePivotSphere", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49383,7 +49911,7 @@ "return": null }, { - "__docId__": 2444, + "__docId__": 2462, "kind": "method", "name": "disablePivotSphere", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49398,7 +49926,7 @@ "return": null }, { - "__docId__": 2445, + "__docId__": 2463, "kind": "set", "name": "smartPivot", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49423,7 +49951,7 @@ ] }, { - "__docId__": 2446, + "__docId__": 2464, "kind": "get", "name": "smartPivot", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49455,7 +49983,7 @@ } }, { - "__docId__": 2447, + "__docId__": 2465, "kind": "set", "name": "doubleClickTimeFrame", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49480,7 +50008,7 @@ ] }, { - "__docId__": 2448, + "__docId__": 2466, "kind": "get", "name": "doubleClickTimeFrame", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49510,7 +50038,7 @@ } }, { - "__docId__": 2449, + "__docId__": 2467, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49526,7 +50054,7 @@ "return": null }, { - "__docId__": 2450, + "__docId__": 2468, "kind": "method", "name": "_destroyHandlers", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49543,7 +50071,7 @@ "return": null }, { - "__docId__": 2451, + "__docId__": 2469, "kind": "method", "name": "_destroyControllers", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -49560,7 +50088,7 @@ "return": null }, { - "__docId__": 2452, + "__docId__": 2470, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", "content": "import {math} from \"../../math/math.js\";\n\nconst SCALE_DOLLY_EACH_FRAME = 1; // Recalculate dolly speed for eye->target distance on each Nth frame\nconst EPSILON = 0.001;\nconst tempVec3 = math.vec3();\n\n/**\n * Handles camera updates on each \"tick\" that were scheduled by the various controllers.\n *\n * @private\n */\nclass CameraUpdater {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n const camera = scene.camera;\n const pickController = controllers.pickController;\n const pivotController = controllers.pivotController;\n const panController = controllers.panController;\n\n let countDown = SCALE_DOLLY_EACH_FRAME; // Decrements on each tick\n let dollyDistFactor = 1.0; // Calculated when countDown is zero\n let followPointerWorldPos = null; // Holds the pointer's World position when configs.followPointer is true\n \n this._onTick = scene.on(\"tick\", () => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n let cursorType = \"default\";\n\n //----------------------------------------------------------------------------------------------------------\n // Dolly decay\n //------------------------------------------------------------------------------------ ----------------------\n\n if (Math.abs(updates.dollyDelta) < EPSILON) {\n updates.dollyDelta = 0;\n }\n\n //----------------------------------------------------------------------------------------------------------\n // Rotation decay\n //----------------------------------------------------------------------------------------------------------\n\n if (Math.abs(updates.rotateDeltaX) < EPSILON) {\n updates.rotateDeltaX = 0;\n }\n\n if (Math.abs(updates.rotateDeltaY) < EPSILON) {\n updates.rotateDeltaY = 0;\n }\n\n if (updates.rotateDeltaX !== 0 || updates.rotateDeltaY !== 0) {\n updates.dollyDelta = 0;\n }\n\n //----------------------------------------------------------------------------------------------------------\n // Dolly speed eye->look scaling\n //\n // If pointer is over an object, then dolly speed is proportional to the distance to that object.\n //\n // If pointer is not over an object, then dolly speed is proportional to the distance to the last\n // object the pointer was over. This is so that we can dolly to structures that may have gaps through\n // which empty background shows, that the pointer may inadvertently be over. In these cases, we don't\n // want dolly speed wildly varying depending on how accurately the user avoids the gaps with the pointer.\n //----------------------------------------------------------------------------------------------------------\n\n if (configs.followPointer) {\n\n if (--countDown <= 0) {\n\n countDown = SCALE_DOLLY_EACH_FRAME;\n\n if (updates.dollyDelta !== 0) {\n if (updates.rotateDeltaY === 0 && updates.rotateDeltaX === 0) {\n\n if (configs.followPointer && states.followPointerDirty) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickSurface = true;\n pickController.update();\n\n if (pickController.pickResult && pickController.pickResult.worldPos) {\n followPointerWorldPos = pickController.pickResult.worldPos;\n \n } else {\n dollyDistFactor = 1.0;\n followPointerWorldPos = null;\n }\n\n states.followPointerDirty = false;\n }\n }\n\n if (followPointerWorldPos) {\n const dist = Math.abs(math.lenVec3(math.subVec3(followPointerWorldPos, scene.camera.eye, tempVec3)));\n dollyDistFactor = dist / configs.dollyProximityThreshold;\n }\n\n if (dollyDistFactor < configs.dollyMinSpeed) {\n dollyDistFactor = configs.dollyMinSpeed;\n }\n }\n }\n } else {\n dollyDistFactor = 1;\n followPointerWorldPos = null;\n }\n\n const dollyDeltaForDist = (updates.dollyDelta * dollyDistFactor);\n\n //----------------------------------------------------------------------------------------------------------\n // Rotation\n //----------------------------------------------------------------------------------------------------------\n\n if (updates.rotateDeltaY !== 0 || updates.rotateDeltaX !== 0) {\n\n if ((!configs.firstPerson) && configs.followPointer && pivotController.getPivoting()) {\n pivotController.continuePivot(updates.rotateDeltaY, updates.rotateDeltaX);\n pivotController.showPivot();\n\n } else {\n\n if (updates.rotateDeltaX !== 0) {\n if (configs.firstPerson) {\n camera.pitch(-updates.rotateDeltaX);\n } else {\n camera.orbitPitch(updates.rotateDeltaX);\n }\n }\n\n if (updates.rotateDeltaY !== 0) {\n if (configs.firstPerson) {\n camera.yaw(updates.rotateDeltaY);\n } else {\n camera.orbitYaw(updates.rotateDeltaY);\n }\n }\n }\n\n updates.rotateDeltaX *= configs.rotationInertia;\n updates.rotateDeltaY *= configs.rotationInertia;\n\n cursorType = \"grabbing\";\n }\n\n //----------------------------------------------------------------------------------------------------------\n // Panning\n //----------------------------------------------------------------------------------------------------------\n\n if (Math.abs(updates.panDeltaX) < EPSILON) {\n updates.panDeltaX = 0;\n }\n\n if (Math.abs(updates.panDeltaY) < EPSILON) {\n updates.panDeltaY = 0;\n }\n\n if (Math.abs(updates.panDeltaZ) < EPSILON) {\n updates.panDeltaZ = 0;\n }\n\n if (updates.panDeltaX !== 0 || updates.panDeltaY !== 0 || updates.panDeltaZ !== 0) {\n\n const vec = math.vec3();\n\n vec[0] = updates.panDeltaX;\n vec[1] = updates.panDeltaY;\n vec[2] = updates.panDeltaZ;\n\n let verticalEye;\n let verticalLook;\n\n if (configs.constrainVertical) {\n\n if (camera.xUp) {\n verticalEye = camera.eye[0];\n verticalLook = camera.look[0];\n } else if (camera.yUp) {\n verticalEye = camera.eye[1];\n verticalLook = camera.look[1];\n } else if (camera.zUp) {\n verticalEye = camera.eye[2];\n verticalLook = camera.look[2];\n }\n\n camera.pan(vec);\n\n const eye = camera.eye;\n const look = camera.look;\n\n if (camera.xUp) {\n eye[0] = verticalEye;\n look[0] = verticalLook;\n } else if (camera.yUp) {\n eye[1] = verticalEye;\n look[1] = verticalLook;\n } else if (camera.zUp) {\n eye[2] = verticalEye;\n look[2] = verticalLook;\n }\n\n camera.eye = eye;\n camera.look = look;\n\n } else {\n camera.pan(vec);\n }\n\n cursorType = \"grabbing\";\n }\n\n updates.panDeltaX *= configs.panInertia;\n updates.panDeltaY *= configs.panInertia;\n updates.panDeltaZ *= configs.panInertia;\n\n //----------------------------------------------------------------------------------------------------------\n // Dollying\n //----------------------------------------------------------------------------------------------------------\n\n if (dollyDeltaForDist !== 0) {\n\n if (dollyDeltaForDist < 0) {\n cursorType = \"zoom-in\";\n } else {\n cursorType = \"zoom-out\";\n }\n\n if (configs.firstPerson) {\n\n let verticalEye;\n let verticalLook;\n\n if (configs.constrainVertical) {\n if (camera.xUp) {\n verticalEye = camera.eye[0];\n verticalLook = camera.look[0];\n } else if (camera.yUp) {\n verticalEye = camera.eye[1];\n verticalLook = camera.look[1];\n } else if (camera.zUp) {\n verticalEye = camera.eye[2];\n verticalLook = camera.look[2];\n }\n }\n\n if (configs.followPointer) {\n const dolliedThroughSurface = panController.dollyToCanvasPos(followPointerWorldPos, states.pointerCanvasPos, -dollyDeltaForDist);\n if (dolliedThroughSurface) {\n states.followPointerDirty = true;\n }\n } else {\n camera.pan([0, 0, dollyDeltaForDist]);\n camera.ortho.scale = camera.ortho.scale - dollyDeltaForDist;\n }\n\n if (configs.constrainVertical) {\n const eye = camera.eye;\n const look = camera.look;\n if (camera.xUp) {\n eye[0] = verticalEye;\n look[0] = verticalLook;\n } else if (camera.yUp) {\n eye[1] = verticalEye;\n look[1] = verticalLook;\n } else if (camera.zUp) {\n eye[2] = verticalEye;\n look[2] = verticalLook;\n }\n camera.eye = eye;\n camera.look = look;\n }\n\n } else if (configs.planView) {\n\n if (configs.followPointer) {\n const dolliedThroughSurface = panController.dollyToCanvasPos(followPointerWorldPos, states.pointerCanvasPos, -dollyDeltaForDist);\n if (dolliedThroughSurface) {\n states.followPointerDirty = true;\n }\n } else {\n camera.ortho.scale = camera.ortho.scale + dollyDeltaForDist;\n camera.zoom(dollyDeltaForDist);\n }\n\n } else { // Orbiting\n\n if (configs.followPointer) {\n const dolliedThroughSurface = panController.dollyToCanvasPos(followPointerWorldPos, states.pointerCanvasPos, -dollyDeltaForDist);\n if (dolliedThroughSurface) {\n states.followPointerDirty = true;\n }\n } else {\n camera.ortho.scale = camera.ortho.scale + dollyDeltaForDist;\n camera.zoom(dollyDeltaForDist);\n }\n }\n\n updates.dollyDelta *= configs.dollyInertia;\n }\n\n pickController.fireEvents();\n\n document.body.style.cursor = cursorType;\n });\n }\n\n\n destroy() {\n this._scene.off(this._onTick);\n }\n}\n\nexport {CameraUpdater};\n", @@ -49571,7 +50099,7 @@ "lineNumber": 1 }, { - "__docId__": 2453, + "__docId__": 2471, "kind": "variable", "name": "SCALE_DOLLY_EACH_FRAME", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", @@ -49592,7 +50120,7 @@ "ignore": true }, { - "__docId__": 2454, + "__docId__": 2472, "kind": "variable", "name": "EPSILON", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", @@ -49613,7 +50141,7 @@ "ignore": true }, { - "__docId__": 2455, + "__docId__": 2473, "kind": "variable", "name": "tempVec3", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", @@ -49634,7 +50162,7 @@ "ignore": true }, { - "__docId__": 2456, + "__docId__": 2474, "kind": "class", "name": "CameraUpdater", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", @@ -49650,7 +50178,7 @@ "ignore": true }, { - "__docId__": 2457, + "__docId__": 2475, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater", @@ -49664,7 +50192,7 @@ "undocument": true }, { - "__docId__": 2458, + "__docId__": 2476, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater", @@ -49682,7 +50210,7 @@ } }, { - "__docId__": 2459, + "__docId__": 2477, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater", @@ -49700,7 +50228,7 @@ } }, { - "__docId__": 2460, + "__docId__": 2478, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater", @@ -49716,7 +50244,7 @@ "return": null }, { - "__docId__": 2461, + "__docId__": 2479, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", "content": "import {math} from \"../../../math/math.js\";\n\nconst screenPos = math.vec4();\nconst viewPos = math.vec4();\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\n\nconst tempVec4a = math.vec4();\nconst tempVec4b = math.vec4();\nconst tempVec4c = math.vec4();\n\n/**\n * @private\n */\nclass PanController {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n /**\n * Dollys the Camera towards the given target 2D canvas position.\n *\n * When the target's corresponding World-space position is also provided, then this function will also test if we've\n * dollied past the target, and will return ````true```` if that's the case.\n *\n * @param [optionalTargetWorldPos] Optional world position of the target\n * @param targetCanvasPos Canvas position of the target\n * @param dollyDelta Amount to dolly\n * @return True if optionalTargetWorldPos was given, and we've dollied past that position.\n */\n dollyToCanvasPos(optionalTargetWorldPos, targetCanvasPos, dollyDelta) {\n\n let dolliedThroughSurface = false;\n\n const camera = this._scene.camera;\n\n if (optionalTargetWorldPos) {\n const eyeToWorldPosVec = math.subVec3(optionalTargetWorldPos, camera.eye, tempVec3a);\n const eyeWorldPosDist = math.lenVec3(eyeToWorldPosVec);\n dolliedThroughSurface = (eyeWorldPosDist < dollyDelta);\n }\n\n if (camera.projection === \"perspective\") {\n\n camera.ortho.scale = camera.ortho.scale - dollyDelta;\n\n const unprojectedWorldPos = this._unproject(targetCanvasPos, tempVec4a);\n const offset = math.subVec3(unprojectedWorldPos, camera.eye, tempVec4c);\n const moveVec = math.mulVec3Scalar(math.normalizeVec3(offset), -dollyDelta, []);\n\n camera.eye = [camera.eye[0] - moveVec[0], camera.eye[1] - moveVec[1], camera.eye[2] - moveVec[2]];\n camera.look = [camera.look[0] - moveVec[0], camera.look[1] - moveVec[1], camera.look[2] - moveVec[2]];\n\n if (optionalTargetWorldPos) {\n\n // Subtle UX tweak - if we have a target World position, then set camera eye->look distance to\n // the same distance as from eye->target. This just gives us a better position for look,\n // if we subsequently orbit eye about look, so that we don't orbit a position that's\n // suddenly a lot closer than the point we pivoted about on the surface of the last object\n // that we click-drag-pivoted on.\n\n const eyeTargetVec = math.subVec3(optionalTargetWorldPos, camera.eye, tempVec3a);\n const lenEyeTargetVec = math.lenVec3(eyeTargetVec);\n const eyeLookVec = math.mulVec3Scalar(math.normalizeVec3(math.subVec3(camera.look, camera.eye, tempVec3b)), lenEyeTargetVec);\n camera.look = [camera.eye[0] + eyeLookVec[0], camera.eye[1] + eyeLookVec[1], camera.eye[2] + eyeLookVec[2]];\n }\n\n } else if (camera.projection === \"ortho\") {\n\n // - set ortho scale, getting the unprojected targetCanvasPos before and after, get that difference in a vector;\n // - get the vector in which we're dollying;\n // - add both vectors to camera eye and look.\n\n const worldPos1 = this._unproject(targetCanvasPos, tempVec4a);\n\n camera.ortho.scale = camera.ortho.scale - dollyDelta;\n camera.ortho._update(); // HACK\n\n const worldPos2 = this._unproject(targetCanvasPos, tempVec4b);\n const offset = math.subVec3(worldPos2, worldPos1, tempVec4c);\n const eyeLookMoveVec = math.mulVec3Scalar(math.normalizeVec3(math.subVec3(camera.look, camera.eye, tempVec3a)), -dollyDelta, tempVec3b);\n const moveVec = math.addVec3(offset, eyeLookMoveVec, tempVec3c);\n\n camera.eye = [camera.eye[0] - moveVec[0], camera.eye[1] - moveVec[1], camera.eye[2] - moveVec[2]];\n camera.look = [camera.look[0] - moveVec[0], camera.look[1] - moveVec[1], camera.look[2] - moveVec[2]];\n }\n\n return dolliedThroughSurface;\n }\n\n _unproject(canvasPos, worldPos) {\n\n const camera = this._scene.camera;\n const transposedProjectMat = camera.project.transposedMatrix;\n const Pt3 = transposedProjectMat.subarray(8, 12);\n const Pt4 = transposedProjectMat.subarray(12);\n const D = [0, 0, -1.0, 1];\n const screenZ = math.dotVec4(D, Pt3) / math.dotVec4(D, Pt4);\n\n camera.project.unproject(canvasPos, screenZ, screenPos, viewPos, worldPos);\n\n return worldPos;\n }\n\n destroy() {\n }\n}\n\nexport {PanController};", @@ -49727,7 +50255,7 @@ "lineNumber": 1 }, { - "__docId__": 2462, + "__docId__": 2480, "kind": "variable", "name": "screenPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49748,7 +50276,7 @@ "ignore": true }, { - "__docId__": 2463, + "__docId__": 2481, "kind": "variable", "name": "viewPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49769,7 +50297,7 @@ "ignore": true }, { - "__docId__": 2464, + "__docId__": 2482, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49790,7 +50318,7 @@ "ignore": true }, { - "__docId__": 2465, + "__docId__": 2483, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49811,7 +50339,7 @@ "ignore": true }, { - "__docId__": 2466, + "__docId__": 2484, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49832,7 +50360,7 @@ "ignore": true }, { - "__docId__": 2467, + "__docId__": 2485, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49853,7 +50381,7 @@ "ignore": true }, { - "__docId__": 2468, + "__docId__": 2486, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49874,7 +50402,7 @@ "ignore": true }, { - "__docId__": 2469, + "__docId__": 2487, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49895,7 +50423,7 @@ "ignore": true }, { - "__docId__": 2470, + "__docId__": 2488, "kind": "class", "name": "PanController", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -49911,7 +50439,7 @@ "ignore": true }, { - "__docId__": 2471, + "__docId__": 2489, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -49925,7 +50453,7 @@ "undocument": true }, { - "__docId__": 2472, + "__docId__": 2490, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -49943,7 +50471,7 @@ } }, { - "__docId__": 2473, + "__docId__": 2491, "kind": "method", "name": "dollyToCanvasPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -49996,7 +50524,7 @@ } }, { - "__docId__": 2474, + "__docId__": 2492, "kind": "method", "name": "_unproject", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -50030,7 +50558,7 @@ } }, { - "__docId__": 2475, + "__docId__": 2493, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -50046,7 +50574,7 @@ "return": null }, { - "__docId__": 2476, + "__docId__": 2494, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/controllers/PickController.js", "content": "import {math} from \"../../../math/math.js\";\nimport {Scene} from \"../../../scene/Scene.js\";\nimport {PickResult} from \"../../../webgl/PickResult.js\";\n\nconst DEFAULT_SNAP_PICK_RADIUS = 45;\nconst DEFAULT_SNAP_MODE = \"vertex\";\n\n/**\n *\n * @private\n */\nclass PickController {\n\n constructor(cameraControl, configs) {\n /**\n * @type {Scene}\n */\n this._scene = cameraControl.scene;\n\n this._cameraControl = cameraControl;\n\n this._scene.canvas.canvas.oncontextmenu = function (e) {\n e.preventDefault();\n };\n\n this._configs = configs;\n\n /**\n * Set true to schedule picking of an Entity.\n * @type {boolean}\n */\n this.schedulePickEntity = false;\n\n /**\n * Set true to schedule picking of a position on teh surface of an Entity.\n * @type {boolean}\n */\n this.schedulePickSurface = false;\n\n /**\n * Set true to schedule snap-picking with surface picking as a fallback - used for measurement.\n * @type {boolean}\n */\n this.scheduleSnapOrPick = false;\n\n /**\n * The canvas position at which to do the next scheduled pick.\n * @type {Number[]}\n */\n this.pickCursorPos = math.vec2();\n\n /**\n * Will be true after picking to indicate that something was picked.\n * @type {boolean}\n */\n this.picked = false;\n\n /**\n * Will be true after picking to indicate that a position on the surface of an Entity was picked.\n * @type {boolean}\n */\n this.pickedSurface = false;\n\n /**\n * Will hold the PickResult after after picking.\n * @type {PickResult}\n */\n this.pickResult = null;\n\n this._lastPickedEntityId = null;\n\n this._lastHash = null;\n\n this._needFireEvents = 0;\n }\n\n /**\n * Immediately attempts a pick, if scheduled.\n */\n update() {\n\n if (!this._configs.pointerEnabled) {\n return;\n }\n\n if (!this.schedulePickEntity && !this.schedulePickSurface) {\n return;\n }\n\n const hash = `${~~this.pickCursorPos[0]}-${~~this.pickCursorPos[1]}-${this.scheduleSnapOrPick}-${this.schedulePickSurface}-${this.schedulePickEntity}`;\n if (this._lastHash === hash) {\n return;\n }\n\n this.picked = false;\n this.pickedSurface = false;\n this.snappedOrPicked = false;\n this.hoveredSnappedOrSurfaceOff = false;\n\n const hasHoverSurfaceSubs = this._cameraControl.hasSubs(\"hoverSurface\");\n\n if (this.scheduleSnapOrPick) {\n const snapPickResult = this._scene.pick({\n canvasPos: this.pickCursorPos,\n snapRadius: this._configs.snapRadius,\n snapToVertex: this._configs.snapToVertex,\n snapToEdge: this._configs.snapToEdge,\n });\n if (snapPickResult && (snapPickResult.snappedToEdge || snapPickResult.snappedToVertex)) {\n this.snapPickResult = snapPickResult;\n this.snappedOrPicked = true;\n this._needFireEvents++;\n } else {\n this.schedulePickSurface = true; // Fallback\n this.snapPickResult = null;\n }\n }\n\n if (this.schedulePickSurface) {\n if (this.pickResult && this.pickResult.worldPos) {\n const pickResultCanvasPos = this.pickResult.canvasPos;\n if (pickResultCanvasPos[0] === this.pickCursorPos[0] && pickResultCanvasPos[1] === this.pickCursorPos[1]) {\n this.picked = true;\n this.pickedSurface = true;\n this._needFireEvents += hasHoverSurfaceSubs ? 1 : 0;\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n if (this.scheduleSnapOrPick) {\n this.snappedOrPicked = true;\n } else {\n this.hoveredSnappedOrSurfaceOff = true;\n }\n this.scheduleSnapOrPick = false;\n return;\n }\n }\n }\n\n if (this.schedulePickEntity) {\n if (this.pickResult && (this.pickResult.canvasPos || this.pickResult.snappedCanvasPos)) {\n const pickResultCanvasPos = this.pickResult.canvasPos || this.pickResult.snappedCanvasPos;\n if (pickResultCanvasPos[0] === this.pickCursorPos[0] && pickResultCanvasPos[1] === this.pickCursorPos[1]) {\n this.picked = true;\n this.pickedSurface = false;\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n return;\n }\n }\n }\n\n if (this.schedulePickSurface || (this.scheduleSnapOrPick && !this.snapPickResult)) {\n this.pickResult = this._scene.pick({\n pickSurface: true,\n pickSurfaceNormal: false,\n canvasPos: this.pickCursorPos\n });\n if (this.pickResult) {\n this.picked = true;\n if (this.scheduleSnapOrPick) {\n this.snappedOrPicked = true;\n } else {\n this.pickedSurface = true;\n }\n this._needFireEvents++;\n } else if (this.scheduleSnapOrPick) {\n this.hoveredSnappedOrSurfaceOff = true;\n this._needFireEvents++;\n }\n\n } else { // schedulePickEntity == true\n\n this.pickResult = this._scene.pick({\n canvasPos: this.pickCursorPos\n });\n\n if (this.pickResult) {\n this.picked = true;\n this.pickedSurface = false;\n this._needFireEvents++;\n }\n }\n\n this.scheduleSnapOrPick = false;\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n }\n\n fireEvents() {\n\n if (this._needFireEvents === 0) {\n return;\n }\n\n if (this.hoveredSnappedOrSurfaceOff) {\n this._cameraControl.fire(\"hoverSnapOrSurfaceOff\", {\n canvasPos: this.pickCursorPos,\n pointerPos : this.pickCursorPos\n }, true);\n }\n\n if (this.snappedOrPicked) {\n if (this.snapPickResult) {\n const pickResult = new PickResult();\n pickResult.entity = this.snapPickResult.entity;\n pickResult.snappedToVertex = this.snapPickResult.snappedToVertex;\n pickResult.snappedToEdge = this.snapPickResult.snappedToEdge;\n pickResult.worldPos = this.snapPickResult.worldPos;\n pickResult.canvasPos = this.pickCursorPos\n pickResult.snappedCanvasPos = this.snapPickResult.snappedCanvasPos;\n this._cameraControl.fire(\"hoverSnapOrSurface\", pickResult, true);\n this.snapPickResult = null;\n } else {\n this._cameraControl.fire(\"hoverSnapOrSurface\", this.pickResult, true);\n }\n } else {\n\n }\n\n if (this.picked && this.pickResult && (this.pickResult.entity || this.pickResult.worldPos)) {\n\n if (this.pickResult.entity) {\n\n const pickedEntityId = this.pickResult.entity.id;\n\n if (this._lastPickedEntityId !== pickedEntityId) {\n\n if (this._lastPickedEntityId !== undefined) {\n this._cameraControl.fire(\"hoverOut\", {\n entity: this._scene.objects[this._lastPickedEntityId]\n }, true);\n }\n\n this._cameraControl.fire(\"hoverEnter\", this.pickResult, true);\n this._lastPickedEntityId = pickedEntityId;\n }\n }\n\n this._cameraControl.fire(\"hover\", this.pickResult, true);\n\n if (this.pickResult.worldPos) {\n this.pickedSurface = true;\n this._cameraControl.fire(\"hoverSurface\", this.pickResult, true);\n }\n\n } else {\n\n if (this._lastPickedEntityId !== undefined) {\n this._cameraControl.fire(\"hoverOut\", {\n entity: this._scene.objects[this._lastPickedEntityId]\n }, true);\n this._lastPickedEntityId = undefined;\n }\n\n this._cameraControl.fire(\"hoverOff\", {\n canvasPos: this.pickCursorPos\n }, true);\n }\n\n this.pickResult = null;\n\n this._needFireEvents = 0;\n }\n}\n\nexport {PickController};\n", @@ -50057,7 +50585,7 @@ "lineNumber": 1 }, { - "__docId__": 2477, + "__docId__": 2495, "kind": "variable", "name": "DEFAULT_SNAP_PICK_RADIUS", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js", @@ -50078,7 +50606,7 @@ "ignore": true }, { - "__docId__": 2478, + "__docId__": 2496, "kind": "variable", "name": "DEFAULT_SNAP_MODE", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js", @@ -50099,7 +50627,7 @@ "ignore": true }, { - "__docId__": 2479, + "__docId__": 2497, "kind": "class", "name": "PickController", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js", @@ -50115,7 +50643,7 @@ "ignore": true }, { - "__docId__": 2480, + "__docId__": 2498, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50129,7 +50657,7 @@ "undocument": true }, { - "__docId__": 2481, + "__docId__": 2499, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50149,7 +50677,7 @@ "ignore": true }, { - "__docId__": 2482, + "__docId__": 2500, "kind": "member", "name": "_cameraControl", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50167,7 +50695,7 @@ } }, { - "__docId__": 2483, + "__docId__": 2501, "kind": "member", "name": "_configs", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50185,7 +50713,7 @@ } }, { - "__docId__": 2484, + "__docId__": 2502, "kind": "member", "name": "schedulePickEntity", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50204,7 +50732,7 @@ } }, { - "__docId__": 2485, + "__docId__": 2503, "kind": "member", "name": "schedulePickSurface", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50223,7 +50751,7 @@ } }, { - "__docId__": 2486, + "__docId__": 2504, "kind": "member", "name": "scheduleSnapOrPick", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50242,7 +50770,7 @@ } }, { - "__docId__": 2487, + "__docId__": 2505, "kind": "member", "name": "pickCursorPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50261,7 +50789,7 @@ } }, { - "__docId__": 2488, + "__docId__": 2506, "kind": "member", "name": "picked", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50280,7 +50808,7 @@ } }, { - "__docId__": 2489, + "__docId__": 2507, "kind": "member", "name": "pickedSurface", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50299,7 +50827,7 @@ } }, { - "__docId__": 2490, + "__docId__": 2508, "kind": "member", "name": "pickResult", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50318,7 +50846,7 @@ } }, { - "__docId__": 2491, + "__docId__": 2509, "kind": "member", "name": "_lastPickedEntityId", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50336,7 +50864,7 @@ } }, { - "__docId__": 2492, + "__docId__": 2510, "kind": "member", "name": "_lastHash", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50354,7 +50882,7 @@ } }, { - "__docId__": 2493, + "__docId__": 2511, "kind": "member", "name": "_needFireEvents", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50372,7 +50900,7 @@ } }, { - "__docId__": 2494, + "__docId__": 2512, "kind": "method", "name": "update", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50387,7 +50915,7 @@ "return": null }, { - "__docId__": 2497, + "__docId__": 2515, "kind": "member", "name": "snappedOrPicked", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50404,7 +50932,7 @@ } }, { - "__docId__": 2498, + "__docId__": 2516, "kind": "member", "name": "hoveredSnappedOrSurfaceOff", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50421,7 +50949,7 @@ } }, { - "__docId__": 2499, + "__docId__": 2517, "kind": "member", "name": "snapPickResult", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50438,7 +50966,7 @@ } }, { - "__docId__": 2526, + "__docId__": 2544, "kind": "method", "name": "fireEvents", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -50454,7 +50982,7 @@ "return": null }, { - "__docId__": 2533, + "__docId__": 2551, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", "content": "import { math } from \"../../../math/math.js\";\nimport { PhongMaterial } from \"../../../materials/PhongMaterial.js\";\nimport { Mesh } from \"../../../mesh/Mesh.js\";\nimport { VBOGeometry } from \"../../../geometry/VBOGeometry.js\";\nimport { buildSphereGeometry } from \"../../../geometry/builders/buildSphereGeometry.js\";\nimport { worldToRTCPos } from \"../../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\n\nconst tempVec4a = math.vec4();\nconst tempVec4b = math.vec4();\nconst tempVec4c = math.vec4();\n\n\n/** @private */\nclass PivotController {\n\n /**\n * @private\n */\n constructor(scene, configs) {\n\n // Pivot math by: http://www.derschmale.com/\n\n this._scene = scene;\n this._configs = configs;\n this._pivotWorldPos = math.vec3();\n this._cameraOffset = math.vec3();\n this._azimuth = 0;\n this._polar = 0;\n this._radius = 0;\n this._pivotPosSet = false; // Initially false, true as soon as _pivotWorldPos has been set to some value\n this._pivoting = false; // True while pivoting\n this._shown = false;\n\n this._pivotSphereEnabled = false;\n this._pivotSphere = null;\n this._pivotSphereSize = 1;\n this._pivotSphereGeometry = null;\n this._pivotSphereMaterial = null;\n this._rtcCenter = math.vec3();\n this._rtcPos = math.vec3();\n\n this._pivotViewPos = math.vec4();\n this._pivotProjPos = math.vec4();\n this._pivotCanvasPos = math.vec2();\n this._cameraDirty = true;\n\n this._onViewMatrix = this._scene.camera.on(\"viewMatrix\", () => {\n this._cameraDirty = true;\n });\n\n this._onProjMatrix = this._scene.camera.on(\"projMatrix\", () => {\n this._cameraDirty = true;\n });\n\n this._onTick = this._scene.on(\"tick\", () => {\n this.updatePivotElement();\n this.updatePivotSphere();\n });\n }\n\n createPivotSphere() {\n const currentPos = this.getPivotPos();\n const cameraPos = math.vec3();\n math.decomposeMat4(math.inverseMat4(this._scene.viewer.camera.viewMatrix, math.mat4()), cameraPos, math.vec4(), math.vec3());\n const length = math.distVec3(cameraPos, currentPos);\n let radius = (Math.tan(Math.PI / 500) * length) * this._pivotSphereSize;\n\n if (this._scene.camera.projection == \"ortho\") {\n radius /= (this._scene.camera.ortho.scale / 2);\n }\n\n worldToRTCPos(currentPos, this._rtcCenter, this._rtcPos);\n this._pivotSphereGeometry = new VBOGeometry(\n this._scene,\n buildSphereGeometry({ radius })\n );\n this._pivotSphere = new Mesh(this._scene, {\n geometry: this._pivotSphereGeometry,\n material: this._pivotSphereMaterial,\n pickable: false,\n position: this._rtcPos,\n rtcCenter: this._rtcCenter\n });\n };\n\n destroyPivotSphere() {\n if (this._pivotSphere) {\n this._pivotSphere.destroy();\n this._pivotSphere = null;\n }\n if (this._pivotSphereGeometry) {\n this._pivotSphereGeometry.destroy();\n this._pivotSphereGeometry = null;\n }\n }\n\n updatePivotElement() {\n\n const camera = this._scene.camera;\n const canvas = this._scene.canvas;\n\n if (this._pivoting && this._cameraDirty) {\n\n math.transformPoint3(camera.viewMatrix, this.getPivotPos(), this._pivotViewPos);\n this._pivotViewPos[3] = 1;\n math.transformPoint4(camera.projMatrix, this._pivotViewPos, this._pivotProjPos);\n\n const canvasAABB = canvas.boundary;\n const canvasWidth = canvasAABB[2];\n const canvasHeight = canvasAABB[3];\n\n this._pivotCanvasPos[0] = Math.floor((1 + this._pivotProjPos[0] / this._pivotProjPos[3]) * canvasWidth / 2);\n this._pivotCanvasPos[1] = Math.floor((1 - this._pivotProjPos[1] / this._pivotProjPos[3]) * canvasHeight / 2);\n\n // data-textures: avoid to do continuous DOM layout calculations \n let canvasBoundingRect = canvas._lastBoundingClientRect;\n\n if (!canvasBoundingRect || canvas._canvasSizeChanged)\n {\n const canvasElem = canvas.canvas;\n\n canvasBoundingRect = canvas._lastBoundingClientRect = canvasElem.getBoundingClientRect ();\n }\n\n if (this._pivotElement) {\n this._pivotElement.style.left = (Math.floor(canvasBoundingRect.left + this._pivotCanvasPos[0]) - (this._pivotElement.clientWidth / 2) + window.scrollX) + \"px\";\n this._pivotElement.style.top = (Math.floor(canvasBoundingRect.top + this._pivotCanvasPos[1]) - (this._pivotElement.clientHeight / 2) + window.scrollY) + \"px\";\n }\n this._cameraDirty = false;\n }\n }\n\n updatePivotSphere() {\n if (this._pivoting && this._pivotSphere) {\n worldToRTCPos(this.getPivotPos(), this._rtcCenter, this._rtcPos);\n if(!math.compareVec3(this._rtcPos, this._pivotSphere.position)) {\n this.destroyPivotSphere();\n this.createPivotSphere();\n }\n }\n }\n /**\n * Sets the HTML DOM element that will represent the pivot position.\n *\n * @param pivotElement\n */\n setPivotElement(pivotElement) {\n this._pivotElement = pivotElement;\n }\n\n /**\n * Sets a sphere as the representation of the pivot position.\n *\n * @param {Object} [cfg] Sphere configuration.\n * @param {String} [cfg.size=1] Optional size factor of the sphere. Defaults to 1.\n * @param {String} [cfg.color=Array] Optional maretial color. Defaults to a red.\n */\n enablePivotSphere(cfg = {}) {\n this.destroyPivotSphere();\n this._pivotSphereEnabled = true;\n if (cfg.size) {\n this._pivotSphereSize = cfg.size;\n }\n const color = cfg.color || [1, 0, 0];\n this._pivotSphereMaterial = new PhongMaterial(this._scene, {\n emissive: color,\n ambient: color,\n specular: [0,0,0],\n diffuse: [0,0,0],\n });\n }\n\n /**\n * Remove the sphere as the representation of the pivot position.\n *\n */\n disablePivotSphere() {\n this.destroyPivotSphere();\n this._pivotSphereEnabled = false;\n }\n\n /**\n * Begins pivoting.\n */\n startPivot() {\n\n if (this._cameraLookingDownwards()) {\n this._pivoting = false;\n return false;\n }\n\n const camera = this._scene.camera;\n\n let lookat = math.lookAtMat4v(camera.eye, camera.look, camera.worldUp);\n math.transformPoint3(lookat, this.getPivotPos(), this._cameraOffset);\n\n const pivotPos = this.getPivotPos();\n this._cameraOffset[2] += math.distVec3(camera.eye, pivotPos);\n\n lookat = math.inverseMat4(lookat);\n\n const offset = math.transformVec3(lookat, this._cameraOffset);\n const diff = math.vec3();\n\n math.subVec3(camera.eye, pivotPos, diff);\n math.addVec3(diff, offset);\n\n if (camera.zUp) {\n const t = diff[1];\n diff[1] = diff[2];\n diff[2] = t;\n }\n\n this._radius = math.lenVec3(diff);\n this._polar = Math.acos(diff[1] / this._radius);\n this._azimuth = Math.atan2(diff[0], diff[2]);\n this._pivoting = true;\n }\n\n _cameraLookingDownwards() { // Returns true if angle between camera viewing direction and World-space \"up\" axis is too small\n const camera = this._scene.camera;\n const forwardAxis = math.normalizeVec3(math.subVec3(camera.look, camera.eye, tempVec3a));\n const rightAxis = math.cross3Vec3(forwardAxis, camera.worldUp, tempVec3b);\n let rightAxisLen = math.sqLenVec3(rightAxis);\n return (rightAxisLen <= 0.0001);\n }\n\n /**\n * Returns true if we are currently pivoting.\n *\n * @returns {Boolean}\n */\n getPivoting() {\n return this._pivoting;\n }\n\n /**\n * Sets a 3D World-space position to pivot about.\n *\n * @param {Number[]} worldPos The new World-space pivot position.\n */\n setPivotPos(worldPos) {\n this._pivotWorldPos.set(worldPos);\n this._pivotPosSet = true;\n }\n\n /**\n * Sets the pivot position to the 3D projection of the given 2D canvas coordinates on a sphere centered\n * at the viewpoint. The radius of the sphere is configured via {@link CameraControl#smartPivot}.\n *\n *\n * @param canvasPos\n */\n setCanvasPivotPos(canvasPos) {\n const camera = this._scene.camera;\n const pivotShereRadius = Math.abs(math.distVec3(this._scene.center, camera.eye));\n const transposedProjectMat = camera.project.transposedMatrix;\n const Pt3 = transposedProjectMat.subarray(8, 12);\n const Pt4 = transposedProjectMat.subarray(12);\n const D = [0, 0, -1.0, 1];\n const screenZ = math.dotVec4(D, Pt3) / math.dotVec4(D, Pt4);\n const worldPos = tempVec4a;\n camera.project.unproject(canvasPos, screenZ, tempVec4b, tempVec4c, worldPos);\n const eyeWorldPosVec = math.normalizeVec3(math.subVec3(worldPos, camera.eye, tempVec3a));\n const posOnSphere = math.addVec3(camera.eye, math.mulVec3Scalar(eyeWorldPosVec, pivotShereRadius, tempVec3b), tempVec3c);\n this.setPivotPos(posOnSphere);\n }\n\n /**\n * Gets the current position we're pivoting about.\n * @returns {Number[]} The current World-space pivot position.\n */\n getPivotPos() {\n return (this._pivotPosSet) ? this._pivotWorldPos : this._scene.camera.look; // Avoid pivoting about [0,0,0] by default\n }\n\n /**\n * Continues to pivot.\n *\n * @param {Number} yawInc Yaw rotation increment.\n * @param {Number} pitchInc Pitch rotation increment.\n */\n continuePivot(yawInc, pitchInc) {\n if (!this._pivoting) {\n return;\n }\n if (yawInc === 0 && pitchInc === 0) {\n return;\n }\n const camera = this._scene.camera;\n var dx = -yawInc;\n const dy = -pitchInc;\n if (camera.worldUp[2] === 1) {\n dx = -dx;\n }\n this._azimuth += -dx * .01;\n this._polar += dy * .01;\n this._polar = math.clamp(this._polar, .001, Math.PI - .001);\n const pos = [\n this._radius * Math.sin(this._polar) * Math.sin(this._azimuth),\n this._radius * Math.cos(this._polar),\n this._radius * Math.sin(this._polar) * Math.cos(this._azimuth)\n ];\n if (camera.worldUp[2] === 1) {\n const t = pos[1];\n pos[1] = pos[2];\n pos[2] = t;\n }\n // Preserve the eye->look distance, since in xeokit \"look\" is the point-of-interest, not the direction vector.\n const eyeLookLen = math.lenVec3(math.subVec3(camera.look, camera.eye, math.vec3()));\n const pivotPos = this.getPivotPos();\n math.addVec3(pos, pivotPos);\n let lookat = math.lookAtMat4v(pos, pivotPos, camera.worldUp);\n lookat = math.inverseMat4(lookat);\n const offset = math.transformVec3(lookat, this._cameraOffset);\n lookat[12] -= offset[0];\n lookat[13] -= offset[1];\n lookat[14] -= offset[2];\n const zAxis = [lookat[8], lookat[9], lookat[10]];\n camera.eye = [lookat[12], lookat[13], lookat[14]];\n math.subVec3(camera.eye, math.mulVec3Scalar(zAxis, eyeLookLen), camera.look);\n camera.up = [lookat[4], lookat[5], lookat[6]];\n this.showPivot();\n }\n\n /**\n * Shows the pivot position.\n *\n * Only works if we set an HTML DOM element to represent the pivot position.\n */\n showPivot() {\n if (this._shown) {\n return;\n }\n if (this._pivotElement) {\n this.updatePivotElement();\n this._pivotElement.style.visibility = \"visible\";\n }\n if (this._pivotSphereEnabled) {\n this.destroyPivotSphere();\n this.createPivotSphere();\n }\n this._shown = true;\n }\n\n /**\n * Hides the pivot position.\n *\n * Only works if we set an HTML DOM element to represent the pivot position.\n */\n hidePivot() {\n if (!this._shown) {\n return;\n }\n if (this._pivotElement) {\n this._pivotElement.style.visibility = \"hidden\";\n }\n if (this._pivotSphereEnabled) {\n this.destroyPivotSphere();\n }\n this._shown = false;\n }\n\n /**\n * Finishes pivoting.\n */\n endPivot() {\n this._pivoting = false;\n }\n\n destroy() {\n this.destroyPivotSphere();\n this._scene.camera.off(this._onViewMatrix);\n this._scene.camera.off(this._onProjMatrix);\n this._scene.off(this._onTick);\n }\n}\n\n\nexport {PivotController};", @@ -50465,7 +50993,7 @@ "lineNumber": 1 }, { - "__docId__": 2534, + "__docId__": 2552, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -50486,7 +51014,7 @@ "ignore": true }, { - "__docId__": 2535, + "__docId__": 2553, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -50507,7 +51035,7 @@ "ignore": true }, { - "__docId__": 2536, + "__docId__": 2554, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -50528,7 +51056,7 @@ "ignore": true }, { - "__docId__": 2537, + "__docId__": 2555, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -50549,7 +51077,7 @@ "ignore": true }, { - "__docId__": 2538, + "__docId__": 2556, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -50570,7 +51098,7 @@ "ignore": true }, { - "__docId__": 2539, + "__docId__": 2557, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -50591,7 +51119,7 @@ "ignore": true }, { - "__docId__": 2540, + "__docId__": 2558, "kind": "class", "name": "PivotController", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -50607,7 +51135,7 @@ "ignore": true }, { - "__docId__": 2541, + "__docId__": 2559, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50621,7 +51149,7 @@ "ignore": true }, { - "__docId__": 2542, + "__docId__": 2560, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50639,7 +51167,7 @@ } }, { - "__docId__": 2543, + "__docId__": 2561, "kind": "member", "name": "_configs", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50657,7 +51185,7 @@ } }, { - "__docId__": 2544, + "__docId__": 2562, "kind": "member", "name": "_pivotWorldPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50675,7 +51203,7 @@ } }, { - "__docId__": 2545, + "__docId__": 2563, "kind": "member", "name": "_cameraOffset", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50693,7 +51221,7 @@ } }, { - "__docId__": 2546, + "__docId__": 2564, "kind": "member", "name": "_azimuth", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50711,7 +51239,7 @@ } }, { - "__docId__": 2547, + "__docId__": 2565, "kind": "member", "name": "_polar", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50729,7 +51257,7 @@ } }, { - "__docId__": 2548, + "__docId__": 2566, "kind": "member", "name": "_radius", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50747,7 +51275,7 @@ } }, { - "__docId__": 2549, + "__docId__": 2567, "kind": "member", "name": "_pivotPosSet", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50765,7 +51293,7 @@ } }, { - "__docId__": 2550, + "__docId__": 2568, "kind": "member", "name": "_pivoting", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50783,7 +51311,7 @@ } }, { - "__docId__": 2551, + "__docId__": 2569, "kind": "member", "name": "_shown", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50801,7 +51329,7 @@ } }, { - "__docId__": 2552, + "__docId__": 2570, "kind": "member", "name": "_pivotSphereEnabled", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50819,7 +51347,7 @@ } }, { - "__docId__": 2553, + "__docId__": 2571, "kind": "member", "name": "_pivotSphere", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50837,7 +51365,7 @@ } }, { - "__docId__": 2554, + "__docId__": 2572, "kind": "member", "name": "_pivotSphereSize", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50855,7 +51383,7 @@ } }, { - "__docId__": 2555, + "__docId__": 2573, "kind": "member", "name": "_pivotSphereGeometry", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50873,7 +51401,7 @@ } }, { - "__docId__": 2556, + "__docId__": 2574, "kind": "member", "name": "_pivotSphereMaterial", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50891,7 +51419,7 @@ } }, { - "__docId__": 2557, + "__docId__": 2575, "kind": "member", "name": "_rtcCenter", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50909,7 +51437,7 @@ } }, { - "__docId__": 2558, + "__docId__": 2576, "kind": "member", "name": "_rtcPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50927,7 +51455,7 @@ } }, { - "__docId__": 2559, + "__docId__": 2577, "kind": "member", "name": "_pivotViewPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50945,7 +51473,7 @@ } }, { - "__docId__": 2560, + "__docId__": 2578, "kind": "member", "name": "_pivotProjPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50963,7 +51491,7 @@ } }, { - "__docId__": 2561, + "__docId__": 2579, "kind": "member", "name": "_pivotCanvasPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50981,7 +51509,7 @@ } }, { - "__docId__": 2562, + "__docId__": 2580, "kind": "member", "name": "_cameraDirty", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -50999,7 +51527,7 @@ } }, { - "__docId__": 2563, + "__docId__": 2581, "kind": "member", "name": "_onViewMatrix", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51017,7 +51545,7 @@ } }, { - "__docId__": 2565, + "__docId__": 2583, "kind": "member", "name": "_onProjMatrix", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51035,7 +51563,7 @@ } }, { - "__docId__": 2567, + "__docId__": 2585, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51053,7 +51581,7 @@ } }, { - "__docId__": 2568, + "__docId__": 2586, "kind": "method", "name": "createPivotSphere", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51069,7 +51597,7 @@ "return": null }, { - "__docId__": 2571, + "__docId__": 2589, "kind": "method", "name": "destroyPivotSphere", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51085,7 +51613,7 @@ "return": null }, { - "__docId__": 2574, + "__docId__": 2592, "kind": "method", "name": "updatePivotElement", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51101,7 +51629,7 @@ "return": null }, { - "__docId__": 2576, + "__docId__": 2594, "kind": "method", "name": "updatePivotSphere", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51117,7 +51645,7 @@ "return": null }, { - "__docId__": 2577, + "__docId__": 2595, "kind": "method", "name": "setPivotElement", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51143,7 +51671,7 @@ "return": null }, { - "__docId__": 2578, + "__docId__": 2596, "kind": "member", "name": "_pivotElement", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51161,7 +51689,7 @@ } }, { - "__docId__": 2579, + "__docId__": 2597, "kind": "method", "name": "enablePivotSphere", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51211,7 +51739,7 @@ "return": null }, { - "__docId__": 2583, + "__docId__": 2601, "kind": "method", "name": "disablePivotSphere", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51226,7 +51754,7 @@ "return": null }, { - "__docId__": 2585, + "__docId__": 2603, "kind": "method", "name": "startPivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51245,7 +51773,7 @@ } }, { - "__docId__": 2591, + "__docId__": 2609, "kind": "method", "name": "_cameraLookingDownwards", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51266,7 +51794,7 @@ } }, { - "__docId__": 2592, + "__docId__": 2610, "kind": "method", "name": "getPivoting", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51294,7 +51822,7 @@ "params": [] }, { - "__docId__": 2593, + "__docId__": 2611, "kind": "method", "name": "setPivotPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51320,7 +51848,7 @@ "return": null }, { - "__docId__": 2595, + "__docId__": 2613, "kind": "method", "name": "setCanvasPivotPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51346,7 +51874,7 @@ "return": null }, { - "__docId__": 2596, + "__docId__": 2614, "kind": "method", "name": "getPivotPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51374,7 +51902,7 @@ "params": [] }, { - "__docId__": 2597, + "__docId__": 2615, "kind": "method", "name": "continuePivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51410,7 +51938,7 @@ "return": null }, { - "__docId__": 2601, + "__docId__": 2619, "kind": "method", "name": "showPivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51425,7 +51953,7 @@ "return": null }, { - "__docId__": 2603, + "__docId__": 2621, "kind": "method", "name": "hidePivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51440,7 +51968,7 @@ "return": null }, { - "__docId__": 2605, + "__docId__": 2623, "kind": "method", "name": "endPivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51455,7 +51983,7 @@ "return": null }, { - "__docId__": 2607, + "__docId__": 2625, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -51471,7 +51999,7 @@ "return": null }, { - "__docId__": 2608, + "__docId__": 2626, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", "content": "import {math} from \"../../../math/math.js\";\n\nconst center = math.vec3();\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\n\nconst tempCameraTarget = {\n eye: math.vec3(),\n look: math.vec3(),\n up: math.vec3()\n};\n\n/**\n * @private\n */\nclass KeyboardAxisViewHandler {\n\n constructor(scene, controllers, configs, states) {\n\n this._scene = scene;\n const cameraControl = controllers.cameraControl;\n const camera = scene.camera;\n\n this._onSceneKeyDown = scene.input.on(\"keydown\", () => {\n\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n\n if (!states.mouseover) {\n return;\n }\n\n const axisViewRight = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_RIGHT);\n const axisViewBack = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_BACK);\n const axisViewLeft = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_LEFT);\n const axisViewFront = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_FRONT);\n const axisViewTop = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_TOP);\n const axisViewBottom = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_BOTTOM);\n\n if ((!axisViewRight) && (!axisViewBack) && (!axisViewLeft) && (!axisViewFront) && (!axisViewTop) && (!axisViewBottom)) {\n return;\n }\n\n const aabb = scene.aabb;\n const diag = math.getAABB3Diag(aabb);\n\n math.getAABB3Center(aabb, center);\n\n const perspectiveDist = Math.abs(diag / Math.tan(controllers.cameraFlight.fitFOV * math.DEGTORAD));\n const orthoScale = diag * 1.1;\n\n tempCameraTarget.orthoScale = orthoScale;\n\n if (axisViewRight) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldRight, perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(camera.worldUp);\n\n } else if (axisViewBack) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldForward, perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(camera.worldUp);\n\n } else if (axisViewLeft) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldRight, -perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(camera.worldUp);\n\n } else if (axisViewFront) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldForward, -perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(camera.worldUp);\n\n } else if (axisViewTop) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldUp, perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(math.normalizeVec3(math.mulVec3Scalar(camera.worldForward, 1, tempVec3b), tempVec3c));\n\n } else if (axisViewBottom) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldUp, -perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(math.normalizeVec3(math.mulVec3Scalar(camera.worldForward, -1, tempVec3b)));\n }\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.setPivotPos(center);\n }\n\n if (controllers.cameraFlight.duration > 0) {\n controllers.cameraFlight.flyTo(tempCameraTarget, () => {\n if (controllers.pivotController.getPivoting() && configs.followPointer) {\n controllers.pivotController.showPivot();\n }\n });\n\n } else {\n controllers.cameraFlight.jumpTo(tempCameraTarget);\n if (controllers.pivotController.getPivoting() && configs.followPointer) {\n controllers.pivotController.showPivot();\n }\n }\n });\n }\n\n reset() {\n }\n\n destroy() {\n this._scene.input.off(this._onSceneKeyDown);\n }\n}\n\nexport {KeyboardAxisViewHandler};\n", @@ -51482,7 +52010,7 @@ "lineNumber": 1 }, { - "__docId__": 2609, + "__docId__": 2627, "kind": "variable", "name": "center", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -51503,7 +52031,7 @@ "ignore": true }, { - "__docId__": 2610, + "__docId__": 2628, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -51524,7 +52052,7 @@ "ignore": true }, { - "__docId__": 2611, + "__docId__": 2629, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -51545,7 +52073,7 @@ "ignore": true }, { - "__docId__": 2612, + "__docId__": 2630, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -51566,7 +52094,7 @@ "ignore": true }, { - "__docId__": 2613, + "__docId__": 2631, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -51587,7 +52115,7 @@ "ignore": true }, { - "__docId__": 2614, + "__docId__": 2632, "kind": "variable", "name": "tempCameraTarget", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -51608,7 +52136,7 @@ "ignore": true }, { - "__docId__": 2615, + "__docId__": 2633, "kind": "class", "name": "KeyboardAxisViewHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -51624,7 +52152,7 @@ "ignore": true }, { - "__docId__": 2616, + "__docId__": 2634, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -51638,7 +52166,7 @@ "undocument": true }, { - "__docId__": 2617, + "__docId__": 2635, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -51656,7 +52184,7 @@ } }, { - "__docId__": 2618, + "__docId__": 2636, "kind": "member", "name": "_onSceneKeyDown", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -51674,7 +52202,7 @@ } }, { - "__docId__": 2619, + "__docId__": 2637, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -51690,7 +52218,7 @@ "return": null }, { - "__docId__": 2620, + "__docId__": 2638, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -51706,7 +52234,7 @@ "return": null }, { - "__docId__": 2621, + "__docId__": 2639, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js", "content": "/**\n * @private\n */\nclass KeyboardPanRotateDollyHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n const input = scene.input;\n\n const keyDownMap = [];\n\n const canvas = scene.canvas.canvas;\n\n let mouseMovedSinceLastKeyboardDolly = true;\n\n this._onSceneMouseMove = input.on(\"mousemove\", () => {\n mouseMovedSinceLastKeyboardDolly = true;\n });\n\n this._onSceneKeyDown = input.on(\"keydown\", (keyCode) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n if (!states.mouseover) {\n return;\n }\n keyDownMap[keyCode] = true;\n\n if (keyCode === input.KEY_SHIFT) {\n canvas.style.cursor = \"move\";\n }\n });\n\n this._onSceneKeyUp = input.on(\"keyup\", (keyCode) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n keyDownMap[keyCode] = false;\n\n if (keyCode === input.KEY_SHIFT) {\n canvas.style.cursor = null;\n }\n\n if (controllers.pivotController.getPivoting()) {\n controllers.pivotController.endPivot()\n }\n });\n\n this._onTick = scene.on(\"tick\", (e) => {\n\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n\n if (!states.mouseover) {\n return;\n }\n\n const cameraControl = controllers.cameraControl;\n const elapsedSecs = (e.deltaTime / 1000.0);\n\n //-------------------------------------------------------------------------------------------------\n // Keyboard rotation\n //-------------------------------------------------------------------------------------------------\n\n if (!configs.planView) {\n\n const rotateYPos = cameraControl._isKeyDownForAction(cameraControl.ROTATE_Y_POS, keyDownMap);\n const rotateYNeg = cameraControl._isKeyDownForAction(cameraControl.ROTATE_Y_NEG, keyDownMap);\n const rotateXPos = cameraControl._isKeyDownForAction(cameraControl.ROTATE_X_POS, keyDownMap);\n const rotateXNeg = cameraControl._isKeyDownForAction(cameraControl.ROTATE_X_NEG, keyDownMap);\n\n const orbitDelta = elapsedSecs * configs.keyboardRotationRate;\n\n if (rotateYPos || rotateYNeg || rotateXPos || rotateXNeg) {\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.startPivot();\n }\n\n if (rotateYPos) {\n updates.rotateDeltaY += orbitDelta;\n\n } else if (rotateYNeg) {\n updates.rotateDeltaY -= orbitDelta;\n }\n\n if (rotateXPos) {\n updates.rotateDeltaX += orbitDelta;\n\n } else if (rotateXNeg) {\n updates.rotateDeltaX -= orbitDelta;\n }\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.startPivot();\n }\n }\n }\n\n //-------------------------------------------------------------------------------------------------\n // Keyboard panning\n //-------------------------------------------------------------------------------------------------\n\n if (!keyDownMap[input.KEY_CTRL] && !keyDownMap[input.KEY_ALT]) {\n\n const dollyBackwards = cameraControl._isKeyDownForAction(cameraControl.DOLLY_BACKWARDS, keyDownMap);\n const dollyForwards = cameraControl._isKeyDownForAction(cameraControl.DOLLY_FORWARDS, keyDownMap);\n\n if (dollyBackwards || dollyForwards) {\n\n const dollyDelta = elapsedSecs * configs.keyboardDollyRate;\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.startPivot();\n }\n if (dollyForwards) {\n updates.dollyDelta -= dollyDelta;\n } else if (dollyBackwards) {\n updates.dollyDelta += dollyDelta;\n }\n\n if (mouseMovedSinceLastKeyboardDolly) {\n states.followPointerDirty = true;\n mouseMovedSinceLastKeyboardDolly = false;\n }\n }\n }\n\n const panForwards = cameraControl._isKeyDownForAction(cameraControl.PAN_FORWARDS, keyDownMap);\n const panBackwards = cameraControl._isKeyDownForAction(cameraControl.PAN_BACKWARDS, keyDownMap);\n const panLeft = cameraControl._isKeyDownForAction(cameraControl.PAN_LEFT, keyDownMap);\n const panRight = cameraControl._isKeyDownForAction(cameraControl.PAN_RIGHT, keyDownMap);\n const panUp = cameraControl._isKeyDownForAction(cameraControl.PAN_UP, keyDownMap);\n const panDown = cameraControl._isKeyDownForAction(cameraControl.PAN_DOWN, keyDownMap);\n\n const panDelta = (keyDownMap[input.KEY_ALT] ? 0.3 : 1.0) * elapsedSecs * configs.keyboardPanRate; // ALT for slower pan rate\n\n if (panForwards || panBackwards || panLeft || panRight || panUp || panDown) {\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.startPivot();\n }\n\n if (panDown) {\n updates.panDeltaY += panDelta;\n\n } else if (panUp) {\n updates.panDeltaY += -panDelta;\n }\n\n if (panRight) {\n updates.panDeltaX += -panDelta;\n\n } else if (panLeft) {\n updates.panDeltaX += panDelta;\n }\n\n if (panBackwards) {\n updates.panDeltaZ += panDelta;\n\n } else if (panForwards) {\n updates.panDeltaZ += -panDelta;\n }\n }\n });\n }\n\n reset() {\n }\n\n destroy() {\n\n this._scene.off(this._onTick);\n\n this._scene.input.off(this._onSceneMouseMove);\n this._scene.input.off(this._onSceneKeyDown);\n this._scene.input.off(this._onSceneKeyUp);\n }\n}\n\nexport {KeyboardPanRotateDollyHandler};\n", @@ -51717,7 +52245,7 @@ "lineNumber": 1 }, { - "__docId__": 2622, + "__docId__": 2640, "kind": "class", "name": "KeyboardPanRotateDollyHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js", @@ -51733,7 +52261,7 @@ "ignore": true }, { - "__docId__": 2623, + "__docId__": 2641, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -51747,7 +52275,7 @@ "undocument": true }, { - "__docId__": 2624, + "__docId__": 2642, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -51765,7 +52293,7 @@ } }, { - "__docId__": 2625, + "__docId__": 2643, "kind": "member", "name": "_onSceneMouseMove", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -51783,7 +52311,7 @@ } }, { - "__docId__": 2626, + "__docId__": 2644, "kind": "member", "name": "_onSceneKeyDown", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -51801,7 +52329,7 @@ } }, { - "__docId__": 2627, + "__docId__": 2645, "kind": "member", "name": "_onSceneKeyUp", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -51819,7 +52347,7 @@ } }, { - "__docId__": 2628, + "__docId__": 2646, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -51837,7 +52365,7 @@ } }, { - "__docId__": 2629, + "__docId__": 2647, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -51853,7 +52381,7 @@ "return": null }, { - "__docId__": 2630, + "__docId__": 2648, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -51869,7 +52397,7 @@ "return": null }, { - "__docId__": 2631, + "__docId__": 2649, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js", "content": "/**\n * @private\n */\nclass MouseMiscHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const canvas = this._scene.canvas.canvas;\n\n canvas.addEventListener(\"mouseenter\", this._mouseEnterHandler = () => {\n states.mouseover = true;\n });\n\n canvas.addEventListener(\"mouseleave\", this._mouseLeaveHandler = () => {\n states.mouseover = false;\n canvas.style.cursor = null;\n });\n\n document.addEventListener(\"mousemove\", this._mouseMoveHandler = (e) => {\n getCanvasPosFromEvent(e, canvas, states.pointerCanvasPos);\n });\n\n canvas.addEventListener(\"mousedown\", this._mouseDownHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n getCanvasPosFromEvent(e, canvas, states.pointerCanvasPos);\n states.mouseover = true;\n });\n\n canvas.addEventListener(\"mouseup\", this._mouseUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n });\n }\n\n reset() {\n }\n\n destroy() {\n\n const canvas = this._scene.canvas.canvas;\n\n document.removeEventListener(\"mousemove\", this._mouseMoveHandler);\n canvas.removeEventListener(\"mouseenter\", this._mouseEnterHandler);\n canvas.removeEventListener(\"mouseleave\", this._mouseLeaveHandler);\n canvas.removeEventListener(\"mousedown\", this._mouseDownHandler);\n canvas.removeEventListener(\"mouseup\", this._mouseUpHandler);\n }\n}\n\nfunction getCanvasPosFromEvent(event, canvas, canvasPos) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n const { left, top } = canvas.getBoundingClientRect();\n canvasPos[0] = event.clientX - left;\n canvasPos[1] = event.clientY - top;\n }\n return canvasPos;\n}\n\nexport {MouseMiscHandler};\n", @@ -51880,7 +52408,7 @@ "lineNumber": 1 }, { - "__docId__": 2632, + "__docId__": 2650, "kind": "function", "name": "getCanvasPosFromEvent", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js", @@ -51923,7 +52451,7 @@ "ignore": true }, { - "__docId__": 2633, + "__docId__": 2651, "kind": "class", "name": "MouseMiscHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js", @@ -51939,7 +52467,7 @@ "ignore": true }, { - "__docId__": 2634, + "__docId__": 2652, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js~MouseMiscHandler", @@ -51953,7 +52481,7 @@ "undocument": true }, { - "__docId__": 2635, + "__docId__": 2653, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js~MouseMiscHandler", @@ -51971,7 +52499,7 @@ } }, { - "__docId__": 2636, + "__docId__": 2654, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js~MouseMiscHandler", @@ -51987,7 +52515,7 @@ "return": null }, { - "__docId__": 2637, + "__docId__": 2655, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js~MouseMiscHandler", @@ -52003,7 +52531,7 @@ "return": null }, { - "__docId__": 2638, + "__docId__": 2656, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js", "content": "/**\n * @private\n */\nimport {math} from \"../../../math/math.js\";\n\nconst canvasPos = math.vec2();\n\nconst getCanvasPosFromEvent = function (event, canvasPos) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n let element = event.target;\n let totalOffsetLeft = 0;\n let totalOffsetTop = 0;\n let totalScrollX = 0;\n let totalScrollY = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n totalScrollX += element.scrollLeft;\n totalScrollY += element.scrollTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX + totalScrollX - totalOffsetLeft;\n canvasPos[1] = event.pageY + totalScrollY - totalOffsetTop;\n }\n return canvasPos;\n};\n\n/**\n * @private\n */\nclass MousePanRotateDollyHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const pickController = controllers.pickController;\n\n let lastX = 0;\n let lastY = 0;\n let lastXDown = 0;\n let lastYDown = 0;\n let xRotateDelta = 0;\n let yRotateDelta = 0;\n\n let mouseDownLeft;\n let mouseDownMiddle;\n let mouseDownRight;\n\n let mouseDownPicked = false;\n const pickedWorldPos = math.vec3();\n\n let mouseMovedOnCanvasSinceLastWheel = true;\n\n const canvas = this._scene.canvas.canvas;\n\n const keyDown = [];\n\n document.addEventListener(\"keydown\", this._documentKeyDownHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n const keyCode = e.keyCode;\n keyDown[keyCode] = true;\n });\n\n document.addEventListener(\"keyup\", this._documentKeyUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n const keyCode = e.keyCode;\n keyDown[keyCode] = false;\n });\n\n function setMousedownState(pick = true) {\n canvas.style.cursor = \"move\";\n setMousedownPositions();\n if (pick) {\n setMousedownPick();\n }\n }\n\n function setMousedownPositions() {\n xRotateDelta = 0;\n yRotateDelta = 0;\n\n lastX = states.pointerCanvasPos[0];\n lastY = states.pointerCanvasPos[1];\n lastXDown = states.pointerCanvasPos[0];\n lastYDown = states.pointerCanvasPos[1];\n }\n\n function setMousedownPick() {\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickSurface = true;\n pickController.update();\n\n if (pickController.picked && pickController.pickedSurface && pickController.pickResult && pickController.pickResult.worldPos) {\n mouseDownPicked = true;\n pickedWorldPos.set(pickController.pickResult.worldPos);\n } else {\n mouseDownPicked = false;\n }\n }\n\n canvas.addEventListener(\"mousedown\", this._mouseDownHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n switch (e.which) {\n\n case 1: // Left button\n\n if (keyDown[scene.input.KEY_SHIFT] || configs.planView) {\n\n mouseDownLeft = true;\n\n setMousedownState();\n\n } else {\n\n mouseDownLeft = true;\n\n setMousedownState(false);\n }\n\n break;\n\n case 2: // Middle/both buttons\n\n mouseDownMiddle = true;\n\n setMousedownState();\n\n break;\n\n case 3: // Right button\n\n mouseDownRight = true;\n\n if (configs.panRightClick) {\n\n setMousedownState();\n }\n\n break;\n\n default:\n break;\n }\n });\n\n document.addEventListener(\"mousemove\", this._documentMouseMoveHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n if (!mouseDownLeft && !mouseDownMiddle && !mouseDownRight) {\n return;\n }\n\n // Scaling drag-rotate to canvas boundary\n\n const canvasBoundary = scene.canvas.boundary;\n\n const canvasWidth = canvasBoundary[2];\n const canvasHeight = canvasBoundary[3];\n const x = states.pointerCanvasPos[0];\n const y = states.pointerCanvasPos[1];\n\n const panning = keyDown[scene.input.KEY_SHIFT] || configs.planView || (!configs.panRightClick && mouseDownMiddle) || (configs.panRightClick && mouseDownRight);\n\n const xDelta = document.pointerLockElement ? e.movementX : (x - lastX);\n const yDelta = document.pointerLockElement ? e.movementY : (y - lastY);\n\n if (panning) {\n\n const camera = scene.camera;\n\n // We use only canvasHeight here so that aspect ratio does not distort speed\n\n if (camera.projection === \"perspective\") {\n\n const depth = Math.abs(mouseDownPicked ? math.lenVec3(math.subVec3(pickedWorldPos, scene.camera.eye, [])) : scene.camera.eyeLookDist);\n const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0);\n\n updates.panDeltaX += (1.5 * xDelta * targetDistance / canvasHeight);\n updates.panDeltaY += (1.5 * yDelta * targetDistance / canvasHeight);\n\n } else {\n\n updates.panDeltaX += 0.5 * camera.ortho.scale * (xDelta / canvasHeight);\n updates.panDeltaY += 0.5 * camera.ortho.scale * (yDelta / canvasHeight);\n }\n\n } else if (mouseDownLeft && !mouseDownMiddle && !mouseDownRight) {\n\n if (!configs.planView) { // No rotating in plan-view mode\n\n if (configs.firstPerson) {\n updates.rotateDeltaY -= (xDelta / canvasWidth) * configs.dragRotationRate / 2;\n updates.rotateDeltaX += (yDelta / canvasHeight) * (configs.dragRotationRate / 4);\n\n } else {\n updates.rotateDeltaY -= (xDelta / canvasWidth) * (configs.dragRotationRate * 1.5);\n updates.rotateDeltaX += (yDelta / canvasHeight) * (configs.dragRotationRate * 1.5);\n }\n }\n }\n\n lastX = x;\n lastY = y;\n });\n\n canvas.addEventListener(\"mousemove\", this._canvasMouseMoveHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n if (!states.mouseover) {\n return;\n }\n\n mouseMovedOnCanvasSinceLastWheel = true;\n });\n\n document.addEventListener(\"mouseup\", this._documentMouseUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n switch (e.which) {\n case 1: // Left button\n mouseDownLeft = false;\n mouseDownMiddle = false;\n mouseDownRight = false;\n break;\n case 2: // Middle/both buttons\n mouseDownLeft = false;\n mouseDownMiddle = false;\n mouseDownRight = false;\n break;\n case 3: // Right button\n mouseDownLeft = false;\n mouseDownMiddle = false;\n mouseDownRight = false;\n break;\n default:\n break;\n }\n xRotateDelta = 0;\n yRotateDelta = 0;\n });\n\n canvas.addEventListener(\"mouseup\", this._mouseUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n switch (e.which) {\n case 3: // Right button\n getCanvasPosFromEvent(e, canvasPos);\n const x = canvasPos[0];\n const y = canvasPos[1];\n if (Math.abs(x - lastXDown) < 3 && Math.abs(y - lastYDown) < 3) {\n controllers.cameraControl.fire(\"rightClick\", { // For context menus\n pagePos: [Math.round(e.pageX), Math.round(e.pageY)],\n canvasPos: canvasPos,\n event: e\n }, true);\n }\n break;\n default:\n break;\n }\n canvas.style.removeProperty(\"cursor\");\n });\n\n canvas.addEventListener(\"mouseenter\", this._mouseEnterHandler = () => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n xRotateDelta = 0;\n yRotateDelta = 0;\n });\n\n const maxElapsed = 1 / 20;\n const minElapsed = 1 / 60;\n\n let secsNowLast = null;\n\n canvas.addEventListener(\"wheel\", this._mouseWheelHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n const secsNow = performance.now() / 1000.0;\n var secsElapsed = (secsNowLast !== null) ? (secsNow - secsNowLast) : 0;\n secsNowLast = secsNow;\n if (secsElapsed > maxElapsed) {\n secsElapsed = maxElapsed;\n }\n if (secsElapsed < minElapsed) {\n secsElapsed = minElapsed;\n }\n const delta = Math.max(-1, Math.min(1, -e.deltaY * 40));\n if (delta === 0) {\n return;\n }\n const normalizedDelta = delta / Math.abs(delta);\n updates.dollyDelta += -normalizedDelta * secsElapsed * configs.mouseWheelDollyRate;\n\n if (mouseMovedOnCanvasSinceLastWheel) {\n states.followPointerDirty = true;\n mouseMovedOnCanvasSinceLastWheel = false;\n }\n\n }, {passive: true});\n }\n\n reset() {\n }\n\n destroy() {\n\n const canvas = this._scene.canvas.canvas;\n\n document.removeEventListener(\"keydown\", this._documentKeyDownHandler);\n document.removeEventListener(\"keyup\", this._documentKeyUpHandler);\n canvas.removeEventListener(\"mousedown\", this._mouseDownHandler);\n document.removeEventListener(\"mousemove\", this._documentMouseMoveHandler);\n canvas.removeEventListener(\"mousemove\", this._canvasMouseMoveHandler);\n document.removeEventListener(\"mouseup\", this._documentMouseUpHandler);\n canvas.removeEventListener(\"mouseup\", this._mouseUpHandler);\n canvas.removeEventListener(\"mouseenter\", this._mouseEnterHandler);\n canvas.removeEventListener(\"wheel\", this._mouseWheelHandler);\n }\n}\n\nexport {MousePanRotateDollyHandler};\n", @@ -52014,7 +52542,7 @@ "lineNumber": 1 }, { - "__docId__": 2639, + "__docId__": 2657, "kind": "variable", "name": "canvasPos", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js", @@ -52035,7 +52563,7 @@ "ignore": true }, { - "__docId__": 2640, + "__docId__": 2658, "kind": "function", "name": "getCanvasPosFromEvent", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js", @@ -52072,7 +52600,7 @@ "ignore": true }, { - "__docId__": 2641, + "__docId__": 2659, "kind": "class", "name": "MousePanRotateDollyHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js", @@ -52088,7 +52616,7 @@ "ignore": true }, { - "__docId__": 2642, + "__docId__": 2660, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", @@ -52102,7 +52630,7 @@ "undocument": true }, { - "__docId__": 2643, + "__docId__": 2661, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", @@ -52120,7 +52648,7 @@ } }, { - "__docId__": 2644, + "__docId__": 2662, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", @@ -52136,7 +52664,7 @@ "return": null }, { - "__docId__": 2645, + "__docId__": 2663, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", @@ -52152,7 +52680,7 @@ "return": null }, { - "__docId__": 2646, + "__docId__": 2664, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js", "content": "import {math} from \"../../../math/math.js\";\n\n/**\n * @private\n */\nclass MousePickHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const pickController = controllers.pickController;\n const pivotController = controllers.pivotController;\n const cameraControl = controllers.cameraControl;\n\n this._clicks = 0;\n this._timeout = null;\n this._lastPickedEntityId = null;\n\n let leftDown = false;\n let rightDown = false;\n\n const canvas = this._scene.canvas.canvas;\n\n const flyCameraTo = (pickResult) => {\n let pos;\n if (pickResult && pickResult.worldPos) {\n pos = pickResult.worldPos\n }\n const aabb = pickResult && pickResult.entity ? pickResult.entity.aabb : scene.aabb;\n if (pos) { // Fly to look at point, don't change eye->look dist\n const camera = scene.camera;\n const diff = math.subVec3(camera.eye, camera.look, []);\n controllers.cameraFlight.flyTo({\n // look: pos,\n // eye: xeokit.math.addVec3(pos, diff, []),\n // up: camera.up,\n aabb: aabb\n });\n // TODO: Option to back off to fit AABB in view\n } else {// Fly to fit target boundary in view\n controllers.cameraFlight.flyTo({\n aabb: aabb\n });\n }\n };\n\n const tickifiedMouseMoveFn = scene.tickify (\n this._canvasMouseMoveHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n if (leftDown || rightDown) {\n return;\n }\n\n const hoverSubs = cameraControl.hasSubs(\"hover\");\n const hoverEnterSubs = cameraControl.hasSubs(\"hoverEnter\");\n const hoverOutSubs = cameraControl.hasSubs(\"hoverOut\");\n const hoverOffSubs = cameraControl.hasSubs(\"hoverOff\");\n const hoverSurfaceSubs = cameraControl.hasSubs(\"hoverSurface\");\n const hoverSnapOrSurfaceSubs = cameraControl.hasSubs(\"hoverSnapOrSurface\");\n\n if (hoverSubs || hoverEnterSubs || hoverOutSubs || hoverOffSubs || hoverSurfaceSubs || hoverSnapOrSurfaceSubs) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = hoverSurfaceSubs;\n pickController.scheduleSnapOrPick = hoverSnapOrSurfaceSubs\n\n pickController.update();\n\n if (pickController.pickResult) {\n\n if (pickController.pickResult.entity) {\n const pickedEntityId = pickController.pickResult.entity.id;\n\n if (this._lastPickedEntityId !== pickedEntityId) {\n\n if (this._lastPickedEntityId !== undefined) {\n\n cameraControl.fire(\"hoverOut\", { // Hovered off an entity\n entity: scene.objects[this._lastPickedEntityId]\n }, true);\n }\n\n cameraControl.fire(\"hoverEnter\", pickController.pickResult, true); // Hovering over a new entity\n\n this._lastPickedEntityId = pickedEntityId;\n }\n }\n\n cameraControl.fire(\"hover\", pickController.pickResult, true);\n\n if (pickController.pickResult.worldPos || pickController.pickResult.snappedWorldPos) { // Hovering the surface of an entity\n cameraControl.fire(\"hoverSurface\", pickController.pickResult, true);\n }\n\n } else {\n\n if (this._lastPickedEntityId !== undefined) {\n\n cameraControl.fire(\"hoverOut\", { // Hovered off an entity\n entity: scene.objects[this._lastPickedEntityId]\n }, true);\n\n this._lastPickedEntityId = undefined;\n }\n\n cameraControl.fire(\"hoverOff\", { // Not hovering on any entity\n canvasPos: pickController.pickCursorPos\n }, true);\n }\n }\n }\n );\n\n canvas.addEventListener(\"mousemove\", tickifiedMouseMoveFn);\n\n canvas.addEventListener('mousedown', this._canvasMouseDownHandler = (e) => {\n\n if (e.which === 1) {\n leftDown = true;\n }\n\n if (e.which === 3) {\n rightDown = true;\n }\n\n const leftButtonDown = (e.which === 1);\n\n if (!leftButtonDown) {\n return;\n }\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n // Left mouse button down to start pivoting\n\n states.mouseDownClientX = e.clientX;\n states.mouseDownClientY = e.clientY;\n states.mouseDownCursorX = states.pointerCanvasPos[0];\n states.mouseDownCursorY = states.pointerCanvasPos[1];\n\n if ((!configs.firstPerson) && configs.followPointer) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickSurface = true;\n\n pickController.update();\n\n if (e.which === 1) {// Left button\n const pickResult = pickController.pickResult;\n if (pickResult && pickResult.worldPos) {\n pivotController.setPivotPos(pickResult.worldPos);\n pivotController.startPivot();\n } else {\n if (configs.smartPivot) {\n pivotController.setCanvasPivotPos(states.pointerCanvasPos);\n } else {\n pivotController.setPivotPos(scene.camera.look);\n }\n pivotController.startPivot();\n }\n }\n }\n });\n\n document.addEventListener('mouseup', this._documentMouseUpHandler = (e) => {\n\n if (e.which === 1) {\n leftDown = false;\n }\n\n if (e.which === 3) {\n rightDown = false;\n }\n\n if (pivotController.getPivoting()) {\n pivotController.endPivot();\n }\n });\n\n canvas.addEventListener('mouseup', this._canvasMouseUpHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n const leftButtonUp = (e.which === 1);\n\n if (!leftButtonUp) {\n return;\n }\n\n // Left mouse button up to possibly pick or double-pick\n\n pivotController.hidePivot();\n\n if (Math.abs(e.clientX - states.mouseDownClientX) > 3 || Math.abs(e.clientY - states.mouseDownClientY) > 3) {\n return;\n }\n\n const pickedSubs = cameraControl.hasSubs(\"picked\");\n const pickedNothingSubs = cameraControl.hasSubs(\"pickedNothing\");\n const pickedSurfaceSubs = cameraControl.hasSubs(\"pickedSurface\");\n const doublePickedSubs = cameraControl.hasSubs(\"doublePicked\");\n const doublePickedSurfaceSubs = cameraControl.hasSubs(\"doublePickedSurface\");\n const doublePickedNothingSubs = cameraControl.hasSubs(\"doublePickedNothing\");\n\n if ((!configs.doublePickFlyTo) &&\n (!doublePickedSubs) &&\n (!doublePickedSurfaceSubs) &&\n (!doublePickedNothingSubs)) {\n\n // Avoid the single/double click differentiation timeout\n\n if (pickedSubs || pickedNothingSubs || pickedSurfaceSubs) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n pickController.update();\n\n if (pickController.pickResult) {\n\n cameraControl.fire(\"picked\", pickController.pickResult, true);\n\n if (pickController.pickedSurface) {\n cameraControl.fire(\"pickedSurface\", pickController.pickResult, true);\n }\n } else {\n cameraControl.fire(\"pickedNothing\", {\n canvasPos: states.pointerCanvasPos\n }, true);\n }\n }\n\n this._clicks = 0;\n\n return;\n }\n\n this._clicks++;\n\n if (this._clicks === 1) { // First click\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = configs.doublePickFlyTo;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n pickController.update();\n\n const firstClickPickResult = pickController.pickResult;\n const firstClickPickSurface = pickController.pickedSurface;\n\n this._timeout = setTimeout(() => {\n\n if (firstClickPickResult) {\n\n cameraControl.fire(\"picked\", firstClickPickResult, true);\n\n if (firstClickPickSurface) {\n\n cameraControl.fire(\"pickedSurface\", firstClickPickResult, true);\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.setPivotPos(firstClickPickResult.worldPos);\n if (controllers.pivotController.startPivot()) {\n controllers.pivotController.showPivot();\n }\n }\n }\n } else {\n cameraControl.fire(\"pickedNothing\", {\n canvasPos: states.pointerCanvasPos\n }, true);\n }\n\n this._clicks = 0;\n\n }, configs.doubleClickTimeFrame);\n\n } else { // Second click\n\n if (this._timeout !== null) {\n window.clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = configs.doublePickFlyTo || doublePickedSubs || doublePickedSurfaceSubs;\n pickController.schedulePickSurface = pickController.schedulePickEntity && doublePickedSurfaceSubs;\n pickController.update();\n\n if (pickController.pickResult) {\n\n cameraControl.fire(\"doublePicked\", pickController.pickResult, true);\n\n if (pickController.pickedSurface) {\n cameraControl.fire(\"doublePickedSurface\", pickController.pickResult, true);\n }\n\n if (configs.doublePickFlyTo) {\n\n flyCameraTo(pickController.pickResult);\n\n if ((!configs.firstPerson) && configs.followPointer) {\n\n const pickedEntityAABB = pickController.pickResult.entity.aabb;\n const pickedEntityCenterPos = math.getAABB3Center(pickedEntityAABB);\n\n controllers.pivotController.setPivotPos(pickedEntityCenterPos);\n\n if (controllers.pivotController.startPivot()) {\n controllers.pivotController.showPivot();\n }\n }\n }\n\n } else {\n\n cameraControl.fire(\"doublePickedNothing\", {\n canvasPos: states.pointerCanvasPos\n }, true);\n\n if (configs.doublePickFlyTo) {\n\n flyCameraTo();\n\n if ((!configs.firstPerson) && configs.followPointer) {\n\n const sceneAABB = scene.aabb;\n const sceneCenterPos = math.getAABB3Center(sceneAABB);\n\n controllers.pivotController.setPivotPos(sceneCenterPos);\n\n if (controllers.pivotController.startPivot()) {\n controllers.pivotController.showPivot();\n }\n }\n }\n }\n\n this._clicks = 0;\n }\n }, false);\n }\n\n reset() {\n this._clicks = 0;\n this._lastPickedEntityId = null;\n if (this._timeout) {\n window.clearTimeout(this._timeout);\n this._timeout = null;\n }\n }\n\n destroy() {\n const canvas = this._scene.canvas.canvas;\n canvas.removeEventListener(\"mousemove\", this._canvasMouseMoveHandler);\n canvas.removeEventListener(\"mousedown\", this._canvasMouseDownHandler);\n document.removeEventListener(\"mouseup\", this._documentMouseUpHandler);\n canvas.removeEventListener(\"mouseup\", this._canvasMouseUpHandler);\n if (this._timeout) {\n window.clearTimeout(this._timeout);\n this._timeout = null;\n }\n }\n}\n\n\n\nexport {MousePickHandler};", @@ -52163,7 +52691,7 @@ "lineNumber": 1 }, { - "__docId__": 2647, + "__docId__": 2665, "kind": "class", "name": "MousePickHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js", @@ -52179,7 +52707,7 @@ "ignore": true }, { - "__docId__": 2648, + "__docId__": 2666, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -52193,7 +52721,7 @@ "undocument": true }, { - "__docId__": 2649, + "__docId__": 2667, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -52211,7 +52739,7 @@ } }, { - "__docId__": 2650, + "__docId__": 2668, "kind": "member", "name": "_clicks", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -52229,7 +52757,7 @@ } }, { - "__docId__": 2651, + "__docId__": 2669, "kind": "member", "name": "_timeout", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -52247,7 +52775,7 @@ } }, { - "__docId__": 2652, + "__docId__": 2670, "kind": "member", "name": "_lastPickedEntityId", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -52265,7 +52793,7 @@ } }, { - "__docId__": 2660, + "__docId__": 2678, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -52281,7 +52809,7 @@ "return": null }, { - "__docId__": 2664, + "__docId__": 2682, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -52297,7 +52825,7 @@ "return": null }, { - "__docId__": 2666, + "__docId__": 2684, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js", "content": "import {math} from \"../../../math/math.js\";\n\nconst getCanvasPosFromEvent = function (event, canvasPos) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n let element = event.target;\n let totalOffsetLeft = 0;\n let totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX - totalOffsetLeft;\n canvasPos[1] = event.pageY - totalOffsetTop;\n }\n return canvasPos;\n};\n\n/**\n * @private\n */\nclass TouchPanRotateAndDollyHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const pickController = controllers.pickController;\n const pivotController = controllers.pivotController;\n\n const tapStartCanvasPos = math.vec2();\n const tapCanvasPos0 = math.vec2();\n const tapCanvasPos1 = math.vec2();\n const touch0Vec = math.vec2();\n\n const lastCanvasTouchPosList = [];\n const canvas = this._scene.canvas.canvas;\n\n let numTouches = 0;\n let tapStartTime = -1;\n let waitForTick = false;\n\n this._onTick = scene.on(\"tick\", () => {\n waitForTick = false;\n });\n\n let firstDragDeltaX = 0;\n let firstDragDeltaY = 1;\n let absorbTinyFirstDrag = false;\n\n canvas.addEventListener(\"touchstart\", this._canvasTouchStartHandler = (event) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n event.preventDefault();\n\n const touches = event.touches;\n const changedTouches = event.changedTouches;\n\n states.touchStartTime = Date.now();\n\n if (touches.length === 1 && changedTouches.length === 1) {\n\n tapStartTime = states.touchStartTime;\n\n getCanvasPosFromEvent(touches[0], tapStartCanvasPos);\n\n if (configs.followPointer) {\n\n pickController.pickCursorPos = tapStartCanvasPos;\n pickController.schedulePickSurface = true;\n pickController.update();\n\n if (!configs.planView) {\n\n if (pickController.picked && pickController.pickedSurface && pickController.pickResult && pickController.pickResult.worldPos) {\n\n pivotController.setPivotPos(pickController.pickResult.worldPos);\n\n if (!configs.firstPerson && pivotController.startPivot()) {\n pivotController.showPivot();\n }\n\n } else {\n\n if (configs.smartPivot) {\n pivotController.setCanvasPivotPos(states.pointerCanvasPos);\n } else {\n pivotController.setPivotPos(scene.camera.look);\n }\n\n if (!configs.firstPerson && pivotController.startPivot()) {\n pivotController.showPivot();\n }\n }\n }\n }\n\n } else {\n tapStartTime = -1;\n }\n\n while (lastCanvasTouchPosList.length < touches.length) {\n lastCanvasTouchPosList.push(math.vec2());\n }\n\n for (let i = 0, len = touches.length; i < len; ++i) {\n getCanvasPosFromEvent(touches[i], lastCanvasTouchPosList[i]);\n }\n\n numTouches = touches.length;\n });\n\n canvas.addEventListener(\"touchend\", this._canvasTouchEndHandler = () => {\n if (pivotController.getPivoting()) {\n pivotController.endPivot()\n }\n firstDragDeltaX = 0;\n firstDragDeltaY = 0;\n absorbTinyFirstDrag = true;\n })\n\n canvas.addEventListener(\"touchmove\", this._canvasTouchMoveHandler = (event) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n if (waitForTick) {\n // Limit changes detection to one per frame\n return;\n }\n\n waitForTick = true;\n\n // Scaling drag-rotate to canvas boundary\n\n const canvasBoundary = scene.canvas.boundary;\n const canvasWidth = canvasBoundary[2];\n const canvasHeight = canvasBoundary[3];\n\n const touches = event.touches;\n\n if (event.touches.length !== numTouches) {\n // Two fingers were pressed, then one of them is removed\n // We don't want to rotate in this case (weird behavior)\n return;\n }\n\n if (numTouches === 1) {\n\n getCanvasPosFromEvent(touches[0], tapCanvasPos0);\n\n //-----------------------------------------------------------------------------------------------\n // Drag rotation\n //-----------------------------------------------------------------------------------------------\n\n math.subVec2(tapCanvasPos0, lastCanvasTouchPosList[0], touch0Vec);\n\n const xPanDelta = touch0Vec[0];\n const yPanDelta = touch0Vec[1];\n\n if (states.longTouchTimeout !== null && (Math.abs(xPanDelta) > configs.longTapRadius || Math.abs(yPanDelta) > configs.longTapRadius)) {\n clearTimeout(states.longTouchTimeout);\n states.longTouchTimeout = null;\n }\n\n if (configs.planView) { // No rotating in plan-view mode\n\n const camera = scene.camera;\n\n // We use only canvasHeight here so that aspect ratio does not distort speed\n\n if (camera.projection === \"perspective\") {\n\n const touchPicked = false;\n const pickedWorldPos = [0, 0, 0];\n\n const depth = Math.abs(touchPicked ? math.lenVec3(math.subVec3(pickedWorldPos, scene.camera.eye, [])) : scene.camera.eyeLookDist);\n const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0);\n\n updates.panDeltaX += (xPanDelta * targetDistance / canvasHeight) * configs.touchPanRate;\n updates.panDeltaY += (yPanDelta * targetDistance / canvasHeight) * configs.touchPanRate;\n\n } else {\n\n updates.panDeltaX += 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight) * configs.touchPanRate;\n updates.panDeltaY += 0.5 * camera.ortho.scale * (yPanDelta / canvasHeight) * configs.touchPanRate;\n }\n\n } else {\n // if (!absorbTinyFirstDrag) {\n updates.rotateDeltaY -= (xPanDelta / canvasWidth) * (configs.dragRotationRate * 1.0); // Full horizontal rotation\n updates.rotateDeltaX += (yPanDelta / canvasHeight) * (configs.dragRotationRate * 1.5); // Half vertical rotation\n // } else {\n // firstDragDeltaY -= (xPanDelta / canvasWidth) * (configs.dragRotationRate * 1.0); // Full horizontal rotation\n // firstDragDeltaX += (yPanDelta / canvasHeight) * (configs.dragRotationRate * 1.5); // Half vertical rotation\n // if (Math.abs(firstDragDeltaX) > 5 || Math.abs(firstDragDeltaY) > 5) {\n // updates.rotateDeltaX += firstDragDeltaX;\n // updates.rotateDeltaY += firstDragDeltaY;\n // firstDragDeltaX = 0;\n // firstDragDeltaY = 0;\n // absorbTinyFirstDrag = false;\n // }\n // }\n }\n\n } else if (numTouches === 2) {\n\n const touch0 = touches[0];\n const touch1 = touches[1];\n\n getCanvasPosFromEvent(touch0, tapCanvasPos0);\n getCanvasPosFromEvent(touch1, tapCanvasPos1);\n\n const lastMiddleTouch = math.geometricMeanVec2(lastCanvasTouchPosList[0], lastCanvasTouchPosList[1]);\n const currentMiddleTouch = math.geometricMeanVec2(tapCanvasPos0, tapCanvasPos1);\n\n const touchDelta = math.vec2();\n\n math.subVec2(lastMiddleTouch, currentMiddleTouch, touchDelta);\n\n const xPanDelta = touchDelta[0];\n const yPanDelta = touchDelta[1];\n\n const camera = scene.camera;\n\n // Dollying\n\n const d1 = math.distVec2([touch0.pageX, touch0.pageY], [touch1.pageX, touch1.pageY]);\n const d2 = math.distVec2(lastCanvasTouchPosList[0], lastCanvasTouchPosList[1]);\n\n const dollyDelta = (d2 - d1) * configs.touchDollyRate;\n\n updates.dollyDelta = dollyDelta;\n\n if (Math.abs(dollyDelta) < 1.0) {\n\n // We use only canvasHeight here so that aspect ratio does not distort speed\n\n if (camera.projection === \"perspective\") {\n const pickedWorldPos = pickController.pickResult ? pickController.pickResult.worldPos : scene.center;\n\n const depth = Math.abs(math.lenVec3(math.subVec3(pickedWorldPos, scene.camera.eye, [])));\n const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0);\n\n updates.panDeltaX -= (xPanDelta * targetDistance / canvasHeight) * configs.touchPanRate;\n updates.panDeltaY -= (yPanDelta * targetDistance / canvasHeight) * configs.touchPanRate;\n\n } else {\n\n updates.panDeltaX -= 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight) * configs.touchPanRate;\n updates.panDeltaY -= 0.5 * camera.ortho.scale * (yPanDelta / canvasHeight) * configs.touchPanRate;\n }\n }\n\n\n states.pointerCanvasPos = currentMiddleTouch;\n }\n\n for (let i = 0; i < numTouches; ++i) {\n getCanvasPosFromEvent(touches[i], lastCanvasTouchPosList[i]);\n }\n });\n }\n\n reset() {\n }\n\n destroy() {\n const canvas = this._scene.canvas.canvas;\n canvas.removeEventListener(\"touchstart\", this._canvasTouchStartHandler);\n canvas.removeEventListener(\"touchend\", this._canvasTouchEndHandler);\n canvas.removeEventListener(\"touchmove\", this._canvasTouchMoveHandler);\n this._scene.off(this._onTick);\n }\n}\n\nexport {TouchPanRotateAndDollyHandler};\n", @@ -52308,7 +52836,7 @@ "lineNumber": 1 }, { - "__docId__": 2667, + "__docId__": 2685, "kind": "function", "name": "getCanvasPosFromEvent", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js", @@ -52345,7 +52873,7 @@ "ignore": true }, { - "__docId__": 2668, + "__docId__": 2686, "kind": "class", "name": "TouchPanRotateAndDollyHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js", @@ -52361,7 +52889,7 @@ "ignore": true }, { - "__docId__": 2669, + "__docId__": 2687, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -52375,7 +52903,7 @@ "undocument": true }, { - "__docId__": 2670, + "__docId__": 2688, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -52393,7 +52921,7 @@ } }, { - "__docId__": 2671, + "__docId__": 2689, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -52411,7 +52939,7 @@ } }, { - "__docId__": 2672, + "__docId__": 2690, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -52427,7 +52955,7 @@ "return": null }, { - "__docId__": 2673, + "__docId__": 2691, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -52443,7 +52971,7 @@ "return": null }, { - "__docId__": 2674, + "__docId__": 2692, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", "content": "import {math} from \"../../../math/math.js\";\n\nconst TAP_INTERVAL = 150;\nconst DBL_TAP_INTERVAL = 325;\nconst TAP_DISTANCE_THRESHOLD = 4;\n\nconst getCanvasPosFromEvent = function (event, canvasPos) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n let element = event.target;\n let totalOffsetLeft = 0;\n let totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX - totalOffsetLeft;\n canvasPos[1] = event.pageY - totalOffsetTop;\n }\n return canvasPos;\n};\n\n/**\n * @private\n */\nclass TouchPickHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const pickController = controllers.pickController;\n const cameraControl = controllers.cameraControl;\n\n let touchStartTime;\n const activeTouches = [];\n const tapStartPos = new Float32Array(2);\n let tapStartTime = -1;\n let lastTapTime = -1;\n\n const canvas = this._scene.canvas.canvas;\n\n const flyCameraTo = (pickResult) => {\n let pos;\n if (pickResult && pickResult.worldPos) {\n pos = pickResult.worldPos\n }\n const aabb = pickResult ? pickResult.entity.aabb : scene.aabb;\n if (pos) { // Fly to look at point, don't change eye->look dist\n const camera = scene.camera;\n const diff = math.subVec3(camera.eye, camera.look, []);\n controllers.cameraFlight.flyTo({\n aabb: aabb\n });\n // TODO: Option to back off to fit AABB in view\n } else {// Fly to fit target boundary in view\n controllers.cameraFlight.flyTo({\n aabb: aabb\n });\n }\n };\n\n canvas.addEventListener(\"touchstart\", this._canvasTouchStartHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n if (states.longTouchTimeout !== null) {\n clearTimeout(states.longTouchTimeout);\n states.longTouchTimeout = null;\n }\n\n const touches = e.touches;\n const changedTouches = e.changedTouches;\n\n touchStartTime = Date.now();\n\n if (touches.length === 1 && changedTouches.length === 1) {\n tapStartTime = touchStartTime;\n\n getCanvasPosFromEvent(touches[0], tapStartPos);\n\n const rightClickClientX = tapStartPos[0];\n const rightClickClientY = tapStartPos[1];\n\n const rightClickPageX = touches[0].pageX;\n const rightClickPageY = touches[0].pageY;\n\n states.longTouchTimeout = setTimeout(() => {\n controllers.cameraControl.fire(\"rightClick\", { // For context menus\n pagePos: [Math.round(rightClickPageX), Math.round(rightClickPageY)],\n canvasPos: [Math.round(rightClickClientX), Math.round(rightClickClientY)],\n event: e\n }, true);\n\n states.longTouchTimeout = null;\n }, configs.longTapTimeout);\n\n } else {\n tapStartTime = -1;\n }\n\n while (activeTouches.length < touches.length) {\n activeTouches.push(new Float32Array(2))\n }\n\n for (let i = 0, len = touches.length; i < len; ++i) {\n getCanvasPosFromEvent(touches[i], activeTouches[i]);\n }\n\n activeTouches.length = touches.length;\n\n }, {passive: true});\n\n\n canvas.addEventListener(\"touchend\", this._canvasTouchEndHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n const currentTime = Date.now();\n const touches = e.touches;\n const changedTouches = e.changedTouches;\n\n const pickedSurfaceSubs = cameraControl.hasSubs(\"pickedSurface\");\n\n if (states.longTouchTimeout !== null) {\n clearTimeout(states.longTouchTimeout);\n states.longTouchTimeout = null;\n }\n\n // process tap\n\n if (touches.length === 0 && changedTouches.length === 1) {\n\n if (tapStartTime > -1 && currentTime - tapStartTime < TAP_INTERVAL) {\n\n if (lastTapTime > -1 && tapStartTime - lastTapTime < DBL_TAP_INTERVAL) {\n\n // Double-tap\n\n getCanvasPosFromEvent(changedTouches[0], pickController.pickCursorPos);\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\n\n pickController.pickResult.touchInput = true;\n\n cameraControl.fire(\"doublePicked\", pickController.pickResult);\n\n if (pickController.pickedSurface) {\n cameraControl.fire(\"doublePickedSurface\", pickController.pickResult);\n }\n\n if (configs.doublePickFlyTo) {\n flyCameraTo(pickController.pickResult);\n }\n } else {\n cameraControl.fire(\"doublePickedNothing\");\n if (configs.doublePickFlyTo) {\n flyCameraTo();\n }\n }\n\n lastTapTime = -1;\n\n } else if (math.distVec2(activeTouches[0], tapStartPos) < TAP_DISTANCE_THRESHOLD) {\n\n // Single-tap\n\n getCanvasPosFromEvent(changedTouches[0], pickController.pickCursorPos);\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\n\n pickController.pickResult.touchInput = true;\n\n cameraControl.fire(\"picked\", pickController.pickResult);\n\n if (pickController.pickedSurface) {\n cameraControl.fire(\"pickedSurface\", pickController.pickResult);\n }\n\n } else {\n cameraControl.fire(\"pickedNothing\");\n }\n\n lastTapTime = currentTime;\n }\n\n tapStartTime = -1\n }\n }\n\n activeTouches.length = touches.length;\n\n for (let i = 0, len = touches.length; i < len; ++i) {\n activeTouches[i][0] = touches[i].pageX;\n activeTouches[i][1] = touches[i].pageY;\n }\n\n // e.stopPropagation();\n\n }, {passive: true});\n\n }\n\n reset() {\n // TODO\n // tapStartTime = -1;\n // lastTapTime = -1;\n\n }\n\n destroy() {\n const canvas = this._scene.canvas.canvas;\n canvas.removeEventListener(\"touchstart\", this._canvasTouchStartHandler);\n canvas.removeEventListener(\"touchend\", this._canvasTouchEndHandler);\n }\n}\n\n\nexport {TouchPickHandler};", @@ -52454,7 +52982,7 @@ "lineNumber": 1 }, { - "__docId__": 2675, + "__docId__": 2693, "kind": "variable", "name": "TAP_INTERVAL", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -52475,7 +53003,7 @@ "ignore": true }, { - "__docId__": 2676, + "__docId__": 2694, "kind": "variable", "name": "DBL_TAP_INTERVAL", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -52496,7 +53024,7 @@ "ignore": true }, { - "__docId__": 2677, + "__docId__": 2695, "kind": "variable", "name": "TAP_DISTANCE_THRESHOLD", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -52517,7 +53045,7 @@ "ignore": true }, { - "__docId__": 2678, + "__docId__": 2696, "kind": "function", "name": "getCanvasPosFromEvent", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -52554,7 +53082,7 @@ "ignore": true }, { - "__docId__": 2679, + "__docId__": 2697, "kind": "class", "name": "TouchPickHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -52570,7 +53098,7 @@ "ignore": true }, { - "__docId__": 2680, + "__docId__": 2698, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js~TouchPickHandler", @@ -52584,7 +53112,7 @@ "undocument": true }, { - "__docId__": 2681, + "__docId__": 2699, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js~TouchPickHandler", @@ -52602,7 +53130,7 @@ } }, { - "__docId__": 2682, + "__docId__": 2700, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js~TouchPickHandler", @@ -52618,7 +53146,7 @@ "return": null }, { - "__docId__": 2683, + "__docId__": 2701, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js~TouchPickHandler", @@ -52634,7 +53162,7 @@ "return": null }, { - "__docId__": 2684, + "__docId__": 2702, "kind": "file", "name": "src/viewer/scene/Component.js", "content": "import {core} from \"./core.js\";\nimport {utils} from './utils.js';\nimport {Map} from \"./utils/Map.js\";\n\n/**\n * @desc Base class for all xeokit components.\n *\n * ## Component IDs\n *\n * Every Component has an ID that's unique within the parent {@link Scene}. xeokit generates\n * the IDs automatically by default, however you can also specify them yourself. In the example below, we're creating a\n * scene comprised of {@link Scene}, {@link Material}, {@link ReadableGeometry} and\n * {@link Mesh} components, while letting xeokit generate its own ID for\n * the {@link ReadableGeometry}:\n *\n *````JavaScript\n * import {Viewer, Mesh, buildTorusGeometry, ReadableGeometry, PhongMaterial, Texture, Fresnel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * id: \"myMaterial\",\n * ambient: [0.9, 0.3, 0.9],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * specularFresnel: new Fresnel(viewer.scene, {\n * leftColor: [1.0, 1.0, 1.0],\n * rightColor: [0.0, 0.0, 0.0],\n * power: 4\n * })\n * })\n * });\n *````\n *\n * We can then find those components like this:\n *\n * ````javascript\n * // Find the Material\n * var material = viewer.scene.components[\"myMaterial\"];\n *\n * // Find all PhongMaterials in the Scene\n * var phongMaterials = viewer.scene.types[\"PhongMaterial\"];\n *\n * // Find our Material within the PhongMaterials\n * var materialAgain = phongMaterials[\"myMaterial\"];\n * ````\n *\n * ## Restriction on IDs\n *\n * Auto-generated IDs are of the form ````\"__0\"````, ````\"__1\"````, ````\"__2\"```` ... and so on.\n *\n * Scene maintains a map of these IDs, along with a counter that it increments each time it generates a new ID.\n *\n * If Scene has created the IDs listed above, and we then destroy the ````Component```` with ID ````\"__1\"````,\n * Scene will mark that ID as available, and will reuse it for the next default ID.\n *\n * Therefore, two restrictions your on IDs:\n *\n * * don't use IDs that begin with two underscores, and\n * * don't reuse auto-generated IDs of destroyed Components.\n *\n * ## Logging\n *\n * Components have methods to log ID-prefixed messages to the JavaScript console:\n *\n * ````javascript\n * material.log(\"Everything is fine, situation normal.\");\n * material.warn(\"Wait, whats that red light?\");\n * material.error(\"Aw, snap!\");\n * ````\n *\n * The logged messages will look like this in the console:\n *\n * ````text\n * [LOG] myMaterial: Everything is fine, situation normal.\n * [WARN] myMaterial: Wait, whats that red light..\n * [ERROR] myMaterial: Aw, snap!\n * ````\n *\n * ## Destruction\n *\n * Get notification of destruction of Components:\n *\n * ````javascript\n * material.once(\"destroyed\", function() {\n * this.log(\"Component was destroyed: \" + this.id);\n * });\n * ````\n *\n * Or get notification of destruction of any Component within its {@link Scene}:\n *\n * ````javascript\n * scene.on(\"componentDestroyed\", function(component) {\n * this.log(\"Component was destroyed: \" + component.id);\n * });\n * ````\n *\n * Then destroy a component like this:\n *\n * ````javascript\n * material.destroy();\n * ````\n */\nclass Component {\n\n /**\n @private\n */\n get type() {\n return \"Component\";\n }\n\n /**\n * @private\n */\n get isComponent() {\n return true;\n }\n\n constructor(owner = null, cfg = {}) {\n\n /**\n * The parent {@link Scene} that contains this Component.\n *\n * @property scene\n * @type {Scene}\n * @final\n */\n this.scene = null;\n\n if (this.type === \"Scene\") {\n this.scene = this;\n /**\n * The viewer that contains this Scene.\n * @property viewer\n * @type {Viewer}\n */\n this.viewer = cfg.viewer;\n } else {\n if (owner.type === \"Scene\") {\n this.scene = owner;\n } else if (owner instanceof Component) {\n this.scene = owner.scene;\n } else {\n throw \"Invalid param: owner must be a Component\"\n }\n this._owner = owner;\n }\n\n this._dontClear = !!cfg.dontClear; // Prevent Scene#clear from destroying this component\n\n this._renderer = this.scene._renderer;\n\n /**\n Arbitrary, user-defined metadata on this component.\n\n @property metadata\n @type Object\n */\n this.meta = cfg.meta || {};\n\n\n /**\n * ID of this Component, unique within the {@link Scene}.\n *\n * Components are mapped by this ID in {@link Scene#components}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = cfg.id; // Auto-generated by Scene by default\n\n /**\n True as soon as this Component has been destroyed\n\n @property destroyed\n @type {Boolean}\n */\n this.destroyed = false;\n\n this._attached = {}; // Attached components with names.\n this._attachments = null; // Attached components keyed to IDs - lazy-instantiated\n this._subIdMap = null; // Subscription subId pool\n this._subIdEvents = null; // Subscription subIds mapped to event names\n this._eventSubs = null; // Event names mapped to subscribers\n this._eventSubsNum = null;\n this._events = null; // Maps names to events\n this._eventCallDepth = 0; // Helps us catch stack overflows from recursive events\n this._ownedComponents = null; // // Components created with #create - lazy-instantiated\n\n if (this !== this.scene) { // Don't add scene to itself\n this.scene._addComponent(this); // Assigns this component an automatic ID if not yet assigned\n }\n\n this._updateScheduled = false; // True when #_update will be called on next tick\n\n if (owner) {\n owner._own(this);\n }\n }\n\n // /**\n // * Unique ID for this Component within its {@link Scene}.\n // *\n // * @property\n // * @type {String}\n // */\n // get id() {\n // return this._id;\n // }\n\n /**\n Indicates that we need to redraw the scene.\n\n This is called by certain subclasses after they have made some sort of state update that requires the\n renderer to perform a redraw.\n\n For example: a {@link Mesh} calls this on itself whenever you update its\n {@link Mesh#layer} property, which manually controls its render order in\n relation to other Meshes.\n\n If this component has a ````castsShadow```` property that's set ````true````, then this will also indicate\n that the renderer needs to redraw shadow map associated with this component. Components like\n {@link DirLight} have that property set when they produce light that creates shadows, while\n components like {@link Mesh\"}}layer{{/crossLink}} have that property set when they cast shadows.\n\n @protected\n */\n glRedraw() {\n if (!this._renderer) { // Called from a constructor\n return;\n }\n this._renderer.imageDirty();\n if (this.castsShadow) { // Light source or object\n this._renderer.shadowsDirty();\n }\n }\n\n /**\n Indicates that we need to re-sort the renderer's state-ordered drawables list.\n\n For efficiency, the renderer keeps its list of drawables ordered so that runs of the same state updates can be\n combined. This method is called by certain subclasses after they have made some sort of state update that would\n require re-ordering of the drawables list.\n\n For example: a {@link DirLight} calls this on itself whenever you update {@link DirLight#dir}.\n\n @protected\n */\n glResort() {\n if (!this._renderer) { // Called from a constructor\n return;\n }\n this._renderer.needStateSort();\n }\n\n /**\n * The {@link Component} that owns the lifecycle of this Component, if any.\n *\n * When that component is destroyed, this component will be automatically destroyed also.\n *\n * Will be null if this Component has no owner.\n *\n * @property owner\n * @type {Component}\n */\n get owner() {\n return this._owner;\n }\n\n /**\n * Tests if this component is of the given type, or is a subclass of the given type.\n * @type {Boolean}\n */\n isType(type) {\n return this.type === type;\n }\n\n /**\n * Fires an event on this component.\n *\n * Notifies existing subscribers to the event, optionally retains the event to give to\n * any subsequent notifications on the event as they are made.\n *\n * @param {String} event The event type name\n * @param {Object} value The event parameters\n * @param {Boolean} [forget=false] When true, does not retain for subsequent subscribers\n */\n fire(event, value, forget) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n this._eventSubsNum = {};\n }\n if (forget !== true) {\n this._events[event] = value || true; // Save notification\n }\n const subs = this._eventSubs[event];\n let sub;\n if (subs) { // Notify subscriptions\n for (const subId in subs) {\n if (subs.hasOwnProperty(subId)) {\n sub = subs[subId];\n this._eventCallDepth++;\n if (this._eventCallDepth < 300) {\n sub.callback.call(sub.scope, value);\n } else {\n this.error(\"fire: potential stack overflow from recursive event '\" + event + \"' - dropping this event\");\n }\n this._eventCallDepth--;\n }\n }\n }\n }\n\n /**\n * Subscribes to an event on this component.\n *\n * The callback is be called with this component as scope.\n *\n * @param {String} event The event\n * @param {Function} callback Called fired on the event\n * @param {Object} [scope=this] Scope for the callback\n * @return {String} Handle to the subscription, which may be used to unsubscribe with {@link #off}.\n */\n on(event, callback, scope) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._subIdMap) {\n this._subIdMap = new Map(); // Subscription subId pool\n }\n if (!this._subIdEvents) {\n this._subIdEvents = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n }\n if (!this._eventSubsNum) {\n this._eventSubsNum = {};\n }\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = {};\n this._eventSubs[event] = subs;\n this._eventSubsNum[event] = 1;\n } else {\n this._eventSubsNum[event]++;\n }\n const subId = this._subIdMap.addItem(); // Create unique subId\n subs[subId] = {\n callback: callback,\n scope: scope || this\n };\n this._subIdEvents[subId] = event;\n const value = this._events[event];\n if (value !== undefined) { // A publication exists, notify callback immediately\n callback.call(scope || this, value);\n }\n return subId;\n }\n\n /**\n * Cancels an event subscription that was previously made with {@link Component#on} or {@link Component#once}.\n *\n * @param {String} subId Subscription ID\n */\n off(subId) {\n if (subId === undefined || subId === null) {\n return;\n }\n if (!this._subIdEvents) {\n return;\n }\n const event = this._subIdEvents[subId];\n if (event) {\n delete this._subIdEvents[subId];\n const subs = this._eventSubs[event];\n if (subs) {\n delete subs[subId];\n this._eventSubsNum[event]--;\n }\n this._subIdMap.removeItem(subId); // Release subId\n }\n }\n\n /**\n * Subscribes to the next occurrence of the given event, then un-subscribes as soon as the event is subIdd.\n *\n * This is equivalent to calling {@link Component#on}, and then calling {@link Component#off} inside the callback function.\n *\n * @param {String} event Data event to listen to\n * @param {Function} callback Called when fresh data is available at the event\n * @param {Object} [scope=this] Scope for the callback\n */\n once(event, callback, scope) {\n const self = this;\n const subId = this.on(event,\n function (value) {\n self.off(subId);\n callback.call(scope || this, value);\n },\n scope);\n }\n\n /**\n * Returns true if there are any subscribers to the given event on this component.\n *\n * @param {String} event The event\n * @return {Boolean} True if there are any subscribers to the given event on this component.\n */\n hasSubs(event) {\n return (this._eventSubsNum && (this._eventSubsNum[event] > 0));\n }\n\n /**\n * Logs a console debugging message for this component.\n *\n * The console message will have this format: *````[LOG] [ : ````*\n *\n * Also fires the message as a \"log\" event on the parent {@link Scene}.\n *\n * @param {String} message The message to log\n */\n log(message) {\n message = \"[LOG]\" + this._message(message);\n window.console.log(message);\n this.scene.fire(\"log\", message);\n }\n\n _message(message) {\n return \" [\" + this.type + \" \" + utils.inQuotes(this.id) + \"]: \" + message;\n }\n\n /**\n * Logs a warning for this component to the JavaScript console.\n *\n * The console message will have this format: *````[WARN] [ =: ````*\n *\n * Also fires the message as a \"warn\" event on the parent {@link Scene}.\n *\n * @param {String} message The message to log\n */\n warn(message) {\n message = \"[WARN]\" + this._message(message);\n window.console.warn(message);\n this.scene.fire(\"warn\", message);\n }\n\n /**\n * Logs an error for this component to the JavaScript console.\n *\n * The console message will have this format: *````[ERROR] [ =: ````*\n *\n * Also fires the message as an \"error\" event on the parent {@link Scene}.\n *\n * @param {String} message The message to log\n */\n error(message) {\n message = \"[ERROR]\" + this._message(message);\n window.console.error(message);\n this.scene.fire(\"error\", message);\n }\n\n /**\n * Adds a child component to this.\n *\n * When component not given, attaches the scene's default instance for the given name (if any).\n * Publishes the new child component on this component, keyed to the given name.\n *\n * @param {*} params\n * @param {String} params.name component name\n * @param {Component} [params.component] The component\n * @param {String} [params.type] Optional expected type of base type of the child; when supplied, will\n * cause an exception if the given child is not the same type or a subtype of this.\n * @param {Boolean} [params.sceneDefault=false]\n * @param {Boolean} [params.sceneSingleton=false]\n * @param {Function} [params.onAttached] Optional callback called when component attached\n * @param {Function} [params.onAttached.callback] Callback function\n * @param {Function} [params.onAttached.scope] Optional scope for callback\n * @param {Function} [params.onDetached] Optional callback called when component is detached\n * @param {Function} [params.onDetached.callback] Callback function\n * @param {Function} [params.onDetached.scope] Optional scope for callback\n * @param {{String:Function}} [params.on] Callbacks to subscribe to properties on component\n * @param {Boolean} [params.recompiles=true] When true, fires \"dirty\" events on this component\n * @private\n */\n _attach(params) {\n\n const name = params.name;\n\n if (!name) {\n this.error(\"Component 'name' expected\");\n return;\n }\n\n let component = params.component;\n const sceneDefault = params.sceneDefault;\n const sceneSingleton = params.sceneSingleton;\n const type = params.type;\n const on = params.on;\n const recompiles = params.recompiles !== false;\n\n // True when child given as config object, where parent manages its instantiation and destruction\n let managingLifecycle = false;\n\n if (component) {\n\n if (utils.isNumeric(component) || utils.isString(component)) {\n\n // Component ID given\n // Both numeric and string IDs are supported\n\n const id = component;\n\n component = this.scene.components[id];\n\n if (!component) {\n\n // Quote string IDs in errors\n\n this.error(\"Component not found: \" + utils.inQuotes(id));\n return;\n }\n }\n }\n\n if (!component) {\n\n if (sceneSingleton === true) {\n\n // Using the first instance of the component type we find\n\n const instances = this.scene.types[type];\n for (const id2 in instances) {\n if (instances.hasOwnProperty) {\n component = instances[id2];\n break;\n }\n }\n\n if (!component) {\n this.error(\"Scene has no default component for '\" + name + \"'\");\n return null;\n }\n\n } else if (sceneDefault === true) {\n\n // Using a default scene component\n\n component = this.scene[name];\n\n if (!component) {\n this.error(\"Scene has no default component for '\" + name + \"'\");\n return null;\n }\n }\n }\n\n if (component) {\n\n if (component.scene.id !== this.scene.id) {\n this.error(\"Not in same scene: \" + component.type + \" \" + utils.inQuotes(component.id));\n return;\n }\n\n if (type) {\n\n if (!component.isType(type)) {\n this.error(\"Expected a \" + type + \" type or subtype: \" + component.type + \" \" + utils.inQuotes(component.id));\n return;\n }\n }\n }\n\n if (!this._attachments) {\n this._attachments = {};\n }\n\n const oldComponent = this._attached[name];\n let subs;\n let i;\n let len;\n\n if (oldComponent) {\n\n if (component && oldComponent.id === component.id) {\n\n // Reject attempt to reattach same component\n return;\n }\n\n const oldAttachment = this._attachments[oldComponent.id];\n\n // Unsubscribe from events on old component\n\n subs = oldAttachment.subs;\n\n for (i = 0, len = subs.length; i < len; i++) {\n oldComponent.off(subs[i]);\n }\n\n delete this._attached[name];\n delete this._attachments[oldComponent.id];\n\n const onDetached = oldAttachment.params.onDetached;\n if (onDetached) {\n if (utils.isFunction(onDetached)) {\n onDetached(oldComponent);\n } else {\n onDetached.scope ? onDetached.callback.call(onDetached.scope, oldComponent) : onDetached.callback(oldComponent);\n }\n }\n\n if (oldAttachment.managingLifecycle) {\n\n // Note that we just unsubscribed from all events fired by the child\n // component, so destroying it won't fire events back at us now.\n\n oldComponent.destroy();\n }\n }\n\n if (component) {\n\n // Set and publish the new component on this component\n\n const attachment = {\n params: params,\n component: component,\n subs: [],\n managingLifecycle: managingLifecycle\n };\n\n attachment.subs.push(\n component.once(\"destroyed\",\n function () {\n attachment.params.component = null;\n this._attach(attachment.params);\n },\n this));\n\n if (recompiles) {\n attachment.subs.push(\n component.on(\"dirty\",\n function () {\n this.fire(\"dirty\", this);\n },\n this));\n }\n\n this._attached[name] = component;\n this._attachments[component.id] = attachment;\n\n // Bind destruct listener to new component to remove it\n // from this component when destroyed\n\n const onAttached = params.onAttached;\n if (onAttached) {\n if (utils.isFunction(onAttached)) {\n onAttached(component);\n } else {\n onAttached.scope ? onAttached.callback.call(onAttached.scope, component) : onAttached.callback(component);\n }\n }\n\n if (on) {\n\n let event;\n let subIdr;\n let callback;\n let scope;\n\n for (event in on) {\n if (on.hasOwnProperty(event)) {\n\n subIdr = on[event];\n\n if (utils.isFunction(subIdr)) {\n callback = subIdr;\n scope = null;\n } else {\n callback = subIdr.callback;\n scope = subIdr.scope;\n }\n\n if (!callback) {\n continue;\n }\n\n attachment.subs.push(component.on(event, callback, scope));\n }\n }\n }\n }\n\n if (recompiles) {\n this.fire(\"dirty\", this); // FIXME: May trigger spurous mesh recompilations unless able to limit with param?\n }\n\n this.fire(name, component); // Component can be null\n\n return component;\n }\n\n _checkComponent(expectedType, component) {\n if (!component.isComponent) {\n if (utils.isID(component)) {\n const id = component;\n component = this.scene.components[id];\n if (!component) {\n this.error(\"Component not found: \" + id);\n return;\n }\n } else {\n this.error(\"Expected a Component or ID\");\n return;\n }\n }\n if (expectedType !== component.type) {\n this.error(\"Expected a \" + expectedType + \" Component\");\n return;\n }\n if (component.scene.id !== this.scene.id) {\n this.error(\"Not in same scene: \" + component.type);\n return;\n }\n return component;\n }\n\n _checkComponent2(expectedTypes, component) {\n if (!component.isComponent) {\n if (utils.isID(component)) {\n const id = component;\n component = this.scene.components[id];\n if (!component) {\n this.error(\"Component not found: \" + id);\n return;\n }\n } else {\n this.error(\"Expected a Component or ID\");\n return;\n }\n }\n if (component.scene.id !== this.scene.id) {\n this.error(\"Not in same scene: \" + component.type);\n return;\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (expectedTypes[i] === component.type) {\n return component;\n }\n }\n this.error(\"Expected component types: \" + expectedTypes);\n return null;\n }\n\n _own(component) {\n if (!this._ownedComponents) {\n this._ownedComponents = {};\n }\n if (!this._ownedComponents[component.id]) {\n this._ownedComponents[component.id] = component;\n }\n component.once(\"destroyed\", () => {\n delete this._ownedComponents[component.id];\n }, this);\n }\n\n /**\n * Protected method, called by sub-classes to queue a call to _update().\n * @protected\n * @param {Number} [priority=1]\n */\n _needUpdate(priority) {\n if (!this._updateScheduled) {\n this._updateScheduled = true;\n if (priority === 0) {\n this._doUpdate();\n } else {\n core.scheduleTask(this._doUpdate, this);\n }\n }\n }\n\n /**\n * @private\n */\n _doUpdate() {\n if (this._updateScheduled) {\n this._updateScheduled = false;\n if (this._update) {\n this._update();\n }\n }\n }\n\n /**\n * Schedule a task to perform on the next browser interval\n * @param task\n */\n scheduleTask(task) {\n core.scheduleTask(task, null);\n }\n\n /**\n * Protected virtual template method, optionally implemented\n * by sub-classes to perform a scheduled task.\n *\n * @protected\n */\n _update() {\n }\n\n /**\n * Destroys all {@link Component}s that are owned by this. These are Components that were instantiated with\n * this Component as their first constructor argument.\n */\n clear() {\n if (this._ownedComponents) {\n for (var id in this._ownedComponents) {\n if (this._ownedComponents.hasOwnProperty(id)) {\n const component = this._ownedComponents[id];\n component.destroy();\n delete this._ownedComponents[id];\n }\n }\n }\n }\n\n /**\n * Destroys this component.\n */\n destroy() {\n\n if (this.destroyed) {\n return;\n }\n\n /**\n * Fired when this Component is destroyed.\n * @event destroyed\n */\n this.fire(\"destroyed\", this.destroyed = true); // Must fire before we blow away subscription maps, below\n\n // Unsubscribe from child components and destroy then\n\n let id;\n let attachment;\n let component;\n let subs;\n let i;\n let len;\n\n if (this._attachments) {\n for (id in this._attachments) {\n if (this._attachments.hasOwnProperty(id)) {\n attachment = this._attachments[id];\n component = attachment.component;\n subs = attachment.subs;\n for (i = 0, len = subs.length; i < len; i++) {\n component.off(subs[i]);\n }\n if (attachment.managingLifecycle) {\n component.destroy();\n }\n }\n }\n }\n\n if (this._ownedComponents) {\n for (id in this._ownedComponents) {\n if (this._ownedComponents.hasOwnProperty(id)) {\n component = this._ownedComponents[id];\n component.destroy();\n delete this._ownedComponents[id];\n }\n }\n }\n\n this.scene._removeComponent(this);\n\n // Memory leak avoidance\n this._attached = {};\n this._attachments = null;\n this._subIdMap = null;\n this._subIdEvents = null;\n this._eventSubs = null;\n this._events = null;\n this._eventCallDepth = 0;\n this._ownedComponents = null;\n this._updateScheduled = false;\n }\n}\n\nexport {Component};\n", @@ -52645,7 +53173,7 @@ "lineNumber": 1 }, { - "__docId__": 2685, + "__docId__": 2703, "kind": "class", "name": "Component", "memberof": "src/viewer/scene/Component.js", @@ -52660,7 +53188,7 @@ "interface": false }, { - "__docId__": 2686, + "__docId__": 2704, "kind": "get", "name": "type", "memberof": "src/viewer/scene/Component.js~Component", @@ -52679,7 +53207,7 @@ } }, { - "__docId__": 2687, + "__docId__": 2705, "kind": "get", "name": "isComponent", "memberof": "src/viewer/scene/Component.js~Component", @@ -52698,7 +53226,7 @@ } }, { - "__docId__": 2688, + "__docId__": 2706, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/Component.js~Component", @@ -52712,7 +53240,7 @@ "undocument": true }, { - "__docId__": 2689, + "__docId__": 2707, "kind": "member", "name": "scene", "memberof": "src/viewer/scene/Component.js~Component", @@ -52749,7 +53277,7 @@ } }, { - "__docId__": 2691, + "__docId__": 2709, "kind": "member", "name": "viewer", "memberof": "src/viewer/scene/Component.js~Component", @@ -52780,7 +53308,7 @@ } }, { - "__docId__": 2694, + "__docId__": 2712, "kind": "member", "name": "_owner", "memberof": "src/viewer/scene/Component.js~Component", @@ -52798,7 +53326,7 @@ } }, { - "__docId__": 2695, + "__docId__": 2713, "kind": "member", "name": "_dontClear", "memberof": "src/viewer/scene/Component.js~Component", @@ -52816,7 +53344,7 @@ } }, { - "__docId__": 2696, + "__docId__": 2714, "kind": "member", "name": "_renderer", "memberof": "src/viewer/scene/Component.js~Component", @@ -52834,7 +53362,7 @@ } }, { - "__docId__": 2697, + "__docId__": 2715, "kind": "member", "name": "meta", "memberof": "src/viewer/scene/Component.js~Component", @@ -52865,7 +53393,7 @@ } }, { - "__docId__": 2698, + "__docId__": 2716, "kind": "member", "name": "id", "memberof": "src/viewer/scene/Component.js~Component", @@ -52897,7 +53425,7 @@ } }, { - "__docId__": 2699, + "__docId__": 2717, "kind": "member", "name": "destroyed", "memberof": "src/viewer/scene/Component.js~Component", @@ -52928,7 +53456,7 @@ } }, { - "__docId__": 2700, + "__docId__": 2718, "kind": "member", "name": "_attached", "memberof": "src/viewer/scene/Component.js~Component", @@ -52946,7 +53474,7 @@ } }, { - "__docId__": 2701, + "__docId__": 2719, "kind": "member", "name": "_attachments", "memberof": "src/viewer/scene/Component.js~Component", @@ -52964,7 +53492,7 @@ } }, { - "__docId__": 2702, + "__docId__": 2720, "kind": "member", "name": "_subIdMap", "memberof": "src/viewer/scene/Component.js~Component", @@ -52982,7 +53510,7 @@ } }, { - "__docId__": 2703, + "__docId__": 2721, "kind": "member", "name": "_subIdEvents", "memberof": "src/viewer/scene/Component.js~Component", @@ -53000,7 +53528,7 @@ } }, { - "__docId__": 2704, + "__docId__": 2722, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/scene/Component.js~Component", @@ -53018,7 +53546,7 @@ } }, { - "__docId__": 2705, + "__docId__": 2723, "kind": "member", "name": "_eventSubsNum", "memberof": "src/viewer/scene/Component.js~Component", @@ -53036,7 +53564,7 @@ } }, { - "__docId__": 2706, + "__docId__": 2724, "kind": "member", "name": "_events", "memberof": "src/viewer/scene/Component.js~Component", @@ -53054,7 +53582,7 @@ } }, { - "__docId__": 2707, + "__docId__": 2725, "kind": "member", "name": "_eventCallDepth", "memberof": "src/viewer/scene/Component.js~Component", @@ -53072,7 +53600,7 @@ } }, { - "__docId__": 2708, + "__docId__": 2726, "kind": "member", "name": "_ownedComponents", "memberof": "src/viewer/scene/Component.js~Component", @@ -53090,7 +53618,7 @@ } }, { - "__docId__": 2709, + "__docId__": 2727, "kind": "member", "name": "_updateScheduled", "memberof": "src/viewer/scene/Component.js~Component", @@ -53108,7 +53636,7 @@ } }, { - "__docId__": 2710, + "__docId__": 2728, "kind": "method", "name": "glRedraw", "memberof": "src/viewer/scene/Component.js~Component", @@ -53124,7 +53652,7 @@ "return": null }, { - "__docId__": 2711, + "__docId__": 2729, "kind": "method", "name": "glResort", "memberof": "src/viewer/scene/Component.js~Component", @@ -53140,7 +53668,7 @@ "return": null }, { - "__docId__": 2712, + "__docId__": 2730, "kind": "get", "name": "owner", "memberof": "src/viewer/scene/Component.js~Component", @@ -53173,7 +53701,7 @@ } }, { - "__docId__": 2713, + "__docId__": 2731, "kind": "method", "name": "isType", "memberof": "src/viewer/scene/Component.js~Component", @@ -53207,7 +53735,7 @@ } }, { - "__docId__": 2714, + "__docId__": 2732, "kind": "method", "name": "fire", "memberof": "src/viewer/scene/Component.js~Component", @@ -53255,7 +53783,7 @@ "return": null }, { - "__docId__": 2718, + "__docId__": 2736, "kind": "method", "name": "on", "memberof": "src/viewer/scene/Component.js~Component", @@ -53310,7 +53838,7 @@ } }, { - "__docId__": 2724, + "__docId__": 2742, "kind": "method", "name": "off", "memberof": "src/viewer/scene/Component.js~Component", @@ -53336,7 +53864,7 @@ "return": null }, { - "__docId__": 2725, + "__docId__": 2743, "kind": "method", "name": "once", "memberof": "src/viewer/scene/Component.js~Component", @@ -53384,7 +53912,7 @@ "return": null }, { - "__docId__": 2726, + "__docId__": 2744, "kind": "method", "name": "hasSubs", "memberof": "src/viewer/scene/Component.js~Component", @@ -53417,7 +53945,7 @@ } }, { - "__docId__": 2727, + "__docId__": 2745, "kind": "method", "name": "log", "memberof": "src/viewer/scene/Component.js~Component", @@ -53443,7 +53971,7 @@ "return": null }, { - "__docId__": 2728, + "__docId__": 2746, "kind": "method", "name": "_message", "memberof": "src/viewer/scene/Component.js~Component", @@ -53471,7 +53999,7 @@ } }, { - "__docId__": 2729, + "__docId__": 2747, "kind": "method", "name": "warn", "memberof": "src/viewer/scene/Component.js~Component", @@ -53497,7 +54025,7 @@ "return": null }, { - "__docId__": 2730, + "__docId__": 2748, "kind": "method", "name": "error", "memberof": "src/viewer/scene/Component.js~Component", @@ -53523,7 +54051,7 @@ "return": null }, { - "__docId__": 2731, + "__docId__": 2749, "kind": "method", "name": "_attach", "memberof": "src/viewer/scene/Component.js~Component", @@ -53690,7 +54218,7 @@ } }, { - "__docId__": 2733, + "__docId__": 2751, "kind": "method", "name": "_checkComponent", "memberof": "src/viewer/scene/Component.js~Component", @@ -53724,7 +54252,7 @@ } }, { - "__docId__": 2734, + "__docId__": 2752, "kind": "method", "name": "_checkComponent2", "memberof": "src/viewer/scene/Component.js~Component", @@ -53758,7 +54286,7 @@ } }, { - "__docId__": 2735, + "__docId__": 2753, "kind": "method", "name": "_own", "memberof": "src/viewer/scene/Component.js~Component", @@ -53782,7 +54310,7 @@ "return": null }, { - "__docId__": 2737, + "__docId__": 2755, "kind": "method", "name": "_needUpdate", "memberof": "src/viewer/scene/Component.js~Component", @@ -53811,7 +54339,7 @@ "return": null }, { - "__docId__": 2739, + "__docId__": 2757, "kind": "method", "name": "_doUpdate", "memberof": "src/viewer/scene/Component.js~Component", @@ -53827,7 +54355,7 @@ "return": null }, { - "__docId__": 2741, + "__docId__": 2759, "kind": "method", "name": "scheduleTask", "memberof": "src/viewer/scene/Component.js~Component", @@ -53853,7 +54381,7 @@ "return": null }, { - "__docId__": 2742, + "__docId__": 2760, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/Component.js~Component", @@ -53869,7 +54397,7 @@ "return": null }, { - "__docId__": 2743, + "__docId__": 2761, "kind": "method", "name": "clear", "memberof": "src/viewer/scene/Component.js~Component", @@ -53884,7 +54412,7 @@ "return": null }, { - "__docId__": 2744, + "__docId__": 2762, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/Component.js~Component", @@ -53899,7 +54427,7 @@ "return": null }, { - "__docId__": 2754, + "__docId__": 2772, "kind": "file", "name": "src/viewer/scene/Entity.js", "content": "/**\n * @desc An abstract 3D scene element that can be individually shown, hidden, selected,\n * highlighted, xrayed, culled, picked, clipped and bounded.\n *\n * Entity provides an abstract interface through which different concrete types\n * of scene element can be accessed and manipulated uniformly.\n *\n * ## Entities Representing Models\n *\n * * An Entity represents a model when {@link Entity#isModel} is ````true````.\n * * Each model-Entity is registered by {@link Entity#id} in {@link Scene#models}.\n * * Each model-Entity can also have a {@link MetaModel} with a matching {@link MetaModel#id}, by which it is registered in {@link MetaScene#metaModels}.\n *\n * ## Entities Representing Objects\n *\n * * An Entity represents an object when {@link Entity#isObject} is ````true````.\n * * Each object-Entity is registered by {@link Entity#id} in {@link Scene#objects}.\n * * Each object-Entity can also have a {@link MetaObject} with a matching {@link MetaObject#id}, by which it is registered {@link MetaScene#metaObjects}.\n *\n * ## Updating Batches of Objects\n *\n * {@link Scene} provides the following methods for updating batches of object-Entities using their {@link Entity#id}s:\n *\n * * {@link Scene#setObjectsVisible}\n * * {@link Scene#setObjectsCulled}\n * * {@link Scene#setObjectsSelected}\n * * {@link Scene#setObjectsHighlighted}\n * * {@link Scene#setObjectsXRayed}\n * * {@link Scene#setObjectsEdges}\n * * {@link Scene#setObjectsColorized}\n * * {@link Scene#setObjectsOpacity}\n *\n * @interface\n * @abstract\n */\nclass Entity {\n\n /**\n * Component ID, unique within the {@link Scene}.\n *\n * @type {Number|String}\n * @abstract\n */\n get id() {\n }\n\n /**\n * ID of the corresponding object within the originating system, if any.\n *\n * By default, this has the same value as {@link Entity#id}. When we load a model using {@link XKTLoaderPlugin#load},\n * with {@link XKTLoaderPlugin#globalizeObjectIds} set ````true````, then that plugin will prefix {@link Entity#id}\n * with the model ID, while leaving this property holding the original value of {@link Entity#id}. When loading an\n * IFC model, this property will hold the IFC product ID of the corresponding IFC element.\n *\n * @type {String}\n * @abstract\n */\n get originalSystemId() {\n }\n\n /**\n * Returns true to indicate that this is an Entity.\n *\n * @returns {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this Entity represents a model.\n *\n * When this is ````true````, the Entity will be registered by {@link Entity#id} in {@link Scene#models} and\n * may also have a corresponding {@link MetaModel}.\n *\n * @type {Boolean}\n * @abstract\n */\n get isModel() {\n }\n\n /**\n * Returns ````true```` if this Entity represents an object.\n *\n * When this is ````true````, the Entity will be registered by {@link Entity#id} in {@link Scene#objects} and\n * may also have a corresponding {@link MetaObject}.\n *\n * @type {Boolean}\n * @abstract\n */\n get isObject() {\n }\n\n /** Returns the parent Entity, if any. */\n get parent() {\n\n }\n\n /**\n * Sets the 3D World-space origin for this Entity.\n *\n * @type {Float64Array}\n * @abstract\n */\n set origin(origin) {\n\n }\n\n /**\n * Gets the 3D World-space origin for this Entity.\n *\n * @type {Float64Array}\n * @abstract\n */\n get origin() {\n }\n\n /**\n * World-space 3D axis-aligned bounding box (AABB) of this Entity.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Float64Array}\n * @abstract\n */\n get aabb() {\n }\n\n /**\n * The approximate number of triangles in this Entity.\n *\n * @type {Number}\n * @abstract\n */\n get numTriangles() {\n }\n\n /**\n * Sets if this Entity is visible.\n *\n * Only rendered when {@link Entity#visible} is ````true```` and {@link Entity#culled} is ````false````.\n *\n * When {@link Entity#isObject} and {@link Entity#visible} are both ````true```` the Entity will be\n * registered by {@link Entity#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n * @abstract\n */\n set visible(visible) {\n }\n\n /**\n * Gets if this Entity is visible.\n *\n * Only rendered when {@link Entity#visible} is ````true```` and {@link Entity#culled} is ````false````.\n *\n * When {@link Entity#isObject} and {@link Entity#visible} are both ````true```` the Entity will be\n * registered by {@link Entity#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n * @abstract\n */\n get visible() {\n }\n\n /**\n * Sets if this Entity is xrayed.\n *\n * When {@link Entity#isObject} and {@link Entity#xrayed} are both ````true``` the Entity will be\n * registered by {@link Entity#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n * @abstract\n */\n set xrayed(xrayed) {\n\n }\n\n /**\n * Gets if this Entity is xrayed.\n *\n * When {@link Entity#isObject} and {@link Entity#xrayed} are both ````true``` the Entity will be\n * registered by {@link Entity#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n * @abstract\n */\n get xrayed() {\n\n }\n\n /**\n * Sets if this Entity is highlighted.\n *\n * When {@link Entity#isObject} and {@link Entity#highlighted} are both ````true```` the Entity will be\n * registered by {@link Entity#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n * @abstract\n */\n set highlighted(highlighted) {\n\n }\n\n /**\n * Gets if this Entity is highlighted.\n *\n * When {@link Entity#isObject} and {@link Entity#highlighted} are both ````true```` the Entity will be\n * registered by {@link Entity#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n * @abstract\n */\n get highlighted() {\n }\n\n /**\n * Sets if this Entity is selected.\n *\n * When {@link Entity#isObject} and {@link Entity#selected} are both ````true``` the Entity will be\n * registered by {@link Entity#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n * @abstract\n */\n set selected(selected) {\n\n }\n\n /**\n * Gets if this Entity is selected.\n *\n * When {@link Entity#isObject} and {@link Entity#selected} are both ````true``` the Entity will be\n * registered by {@link Entity#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n * @abstract\n */\n get selected() {\n\n }\n\n /**\n * Sets if this Entity's edges are enhanced.\n *\n * @type {Boolean}\n * @abstract\n */\n set edges(edges) {\n\n }\n\n /**\n * Gets if this Entity's edges are enhanced.\n *\n * @type {Boolean}\n * @abstract\n */\n get edges() {\n\n }\n\n /**\n * Sets if this Entity is culled.\n *\n * Only rendered when {@link Entity#visible} is ````true```` and {@link Entity#culled} is ````false````.\n *\n * @type {Boolean}\n * @abstract\n */\n set culled(culled) {\n\n }\n\n /**\n * Gets if this Entity is culled.\n *\n * Only rendered when {@link Entity#visible} is ````true```` and {@link Entity#culled} is ````false````.\n *\n * @type {Boolean}\n * @abstract\n */\n get culled() {\n\n }\n\n /**\n * Sets if this Entity is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n * @abstract\n */\n set clippable(clippable) {\n\n }\n\n /**\n * Gets if this Entity is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n * @abstract\n */\n get clippable() {\n\n }\n\n /**\n * Sets if this Entity is included in boundary calculations.\n *\n * @type {Boolean}\n * @abstract\n */\n set collidable(collidable) {\n\n }\n\n /**\n * Gets if this Entity is included in boundary calculations.\n *\n * @type {Boolean}\n * @abstract\n */\n get collidable() {\n\n }\n\n /**\n * Sets if this Entity is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n * @abstract\n */\n set pickable(pickable) {\n\n }\n\n /**\n * Gets if this Entity is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n * @abstract\n */\n get pickable() {\n\n }\n\n /**\n * Sets the Entity's RGB colorize color, multiplies by the Entity's rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n * @abstract\n */\n set colorize(rgb) {\n\n }\n\n /**\n * Gets the Entity's RGB colorize color, multiplies by the Entity's rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n * @abstract\n */\n get colorize() {\n\n }\n\n /**\n * Sets the Entity's opacity factor, multiplies by the Entity's rendered fragment alphas.\n *\n * This is a factor in range ````[0..1]````.\n *\n * @type {Number}\n * @abstract\n */\n set opacity(opacity) {\n\n }\n\n /**\n * Gets the Entity's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n * @abstract\n */\n get opacity() {\n\n }\n\n /**\n * Sets if this Entity casts shadows.\n *\n * @type {Boolean}\n * @abstract\n */\n set castsShadow(pickable) {\n\n }\n\n /**\n * Gets if this Entity casts shadows.\n *\n * @type {Boolean}\n * @abstract\n */\n get castsShadow() {\n\n }\n\n /**\n * Sets if to this Entity can have shadows cast upon it\n *\n * @type {Boolean}\n * @abstract\n */\n set receivesShadow(pickable) {\n\n }\n\n /**\n * Gets if this Entity can have shadows cast upon it\n *\n * @type {Boolean}\n * @abstract\n */\n get receivesShadow() {\n\n }\n\n /**\n * Gets if this Entity can have Scalable Ambient Obscurance (SAO) applied to it.\n *\n * SAO is configured by {@link SAO}.\n *\n * @type {Boolean}\n * @abstract\n */\n get saoEnabled() {\n\n }\n\n /**\n * Sets the Entity's 3D World-space offset.\n *\n * Since offsetting Entities comes with memory and rendering overhead on some systems, this feature\n * only works when {@link Viewer} is configured with ````entityOffsetsEnabled: true````.\n *\n * The offset dynamically translates the Entity in World-space, which is useful for creating\n * effects like exploding parts assemblies etc.\n *\n * Default value is ````[0,0,0]````.\n *\n * Provide a null or undefined value to reset to the default value.\n *\n * @abstract\n * @type {Number[]}\n */\n set offset(offset) {\n }\n\n /**\n * Gets the Entity's 3D World-space offset.\n *\n * Default value is ````[0,0,0]````.\n *\n * @abstract\n * @type {Number[]}\n */\n get offset() {\n }\n\n /**\n * Gets the World, View and Canvas-space positions of each vertex in a callback.\n *\n * @param callback\n */\n getEachVertex(callback) {\n }\n\n /**\n * Destroys this Entity.\n */\n destroy() {\n\n }\n}\n\nexport {Entity};", @@ -53910,7 +54438,7 @@ "lineNumber": 1 }, { - "__docId__": 2755, + "__docId__": 2773, "kind": "class", "name": "Entity", "memberof": "src/viewer/scene/Entity.js", @@ -53926,7 +54454,7 @@ "interface": true }, { - "__docId__": 2756, + "__docId__": 2774, "kind": "get", "name": "id", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -53949,7 +54477,7 @@ "abstract": true }, { - "__docId__": 2757, + "__docId__": 2775, "kind": "get", "name": "originalSystemId", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -53971,7 +54499,7 @@ "abstract": true }, { - "__docId__": 2758, + "__docId__": 2776, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54003,7 +54531,7 @@ } }, { - "__docId__": 2759, + "__docId__": 2777, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54025,7 +54553,7 @@ "abstract": true }, { - "__docId__": 2760, + "__docId__": 2778, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54047,7 +54575,7 @@ "abstract": true }, { - "__docId__": 2761, + "__docId__": 2779, "kind": "get", "name": "parent", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54061,7 +54589,7 @@ "type": null }, { - "__docId__": 2762, + "__docId__": 2780, "kind": "set", "name": "origin", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54083,7 +54611,7 @@ "abstract": true }, { - "__docId__": 2763, + "__docId__": 2781, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54105,7 +54633,7 @@ "abstract": true }, { - "__docId__": 2764, + "__docId__": 2782, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54127,7 +54655,7 @@ "abstract": true }, { - "__docId__": 2765, + "__docId__": 2783, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54149,7 +54677,7 @@ "abstract": true }, { - "__docId__": 2766, + "__docId__": 2784, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54171,7 +54699,7 @@ "abstract": true }, { - "__docId__": 2767, + "__docId__": 2785, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54193,7 +54721,7 @@ "abstract": true }, { - "__docId__": 2768, + "__docId__": 2786, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54215,7 +54743,7 @@ "abstract": true }, { - "__docId__": 2769, + "__docId__": 2787, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54237,7 +54765,7 @@ "abstract": true }, { - "__docId__": 2770, + "__docId__": 2788, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54259,7 +54787,7 @@ "abstract": true }, { - "__docId__": 2771, + "__docId__": 2789, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54281,7 +54809,7 @@ "abstract": true }, { - "__docId__": 2772, + "__docId__": 2790, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54303,7 +54831,7 @@ "abstract": true }, { - "__docId__": 2773, + "__docId__": 2791, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54325,7 +54853,7 @@ "abstract": true }, { - "__docId__": 2774, + "__docId__": 2792, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54347,7 +54875,7 @@ "abstract": true }, { - "__docId__": 2775, + "__docId__": 2793, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54369,7 +54897,7 @@ "abstract": true }, { - "__docId__": 2776, + "__docId__": 2794, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54391,7 +54919,7 @@ "abstract": true }, { - "__docId__": 2777, + "__docId__": 2795, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54413,7 +54941,7 @@ "abstract": true }, { - "__docId__": 2778, + "__docId__": 2796, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54435,7 +54963,7 @@ "abstract": true }, { - "__docId__": 2779, + "__docId__": 2797, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54457,7 +54985,7 @@ "abstract": true }, { - "__docId__": 2780, + "__docId__": 2798, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54479,7 +55007,7 @@ "abstract": true }, { - "__docId__": 2781, + "__docId__": 2799, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54501,7 +55029,7 @@ "abstract": true }, { - "__docId__": 2782, + "__docId__": 2800, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54523,7 +55051,7 @@ "abstract": true }, { - "__docId__": 2783, + "__docId__": 2801, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54545,7 +55073,7 @@ "abstract": true }, { - "__docId__": 2784, + "__docId__": 2802, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54567,7 +55095,7 @@ "abstract": true }, { - "__docId__": 2785, + "__docId__": 2803, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54589,7 +55117,7 @@ "abstract": true }, { - "__docId__": 2786, + "__docId__": 2804, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54611,7 +55139,7 @@ "abstract": true }, { - "__docId__": 2787, + "__docId__": 2805, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54633,7 +55161,7 @@ "abstract": true }, { - "__docId__": 2788, + "__docId__": 2806, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54655,7 +55183,7 @@ "abstract": true }, { - "__docId__": 2789, + "__docId__": 2807, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54677,7 +55205,7 @@ "abstract": true }, { - "__docId__": 2790, + "__docId__": 2808, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54699,7 +55227,7 @@ "abstract": true }, { - "__docId__": 2791, + "__docId__": 2809, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54721,7 +55249,7 @@ "abstract": true }, { - "__docId__": 2792, + "__docId__": 2810, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54743,7 +55271,7 @@ "abstract": true }, { - "__docId__": 2793, + "__docId__": 2811, "kind": "set", "name": "offset", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54765,7 +55293,7 @@ "abstract": true }, { - "__docId__": 2794, + "__docId__": 2812, "kind": "get", "name": "offset", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54787,7 +55315,7 @@ "abstract": true }, { - "__docId__": 2795, + "__docId__": 2813, "kind": "method", "name": "getEachVertex", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54813,7 +55341,7 @@ "return": null }, { - "__docId__": 2796, + "__docId__": 2814, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -54828,7 +55356,7 @@ "return": null }, { - "__docId__": 2797, + "__docId__": 2815, "kind": "file", "name": "src/viewer/scene/ImagePlane/ImagePlane.js", "content": "import {Component} from '../Component.js';\nimport {Node} from \"../nodes/Node.js\";\nimport {Mesh} from \"../mesh/Mesh.js\";\nimport {PhongMaterial} from \"../materials/PhongMaterial.js\";\nimport {buildPlaneGeometry} from \"../geometry/builders/buildPlaneGeometry.js\";\nimport {Texture} from \"../materials/Texture.js\";\nimport {buildGridGeometry} from \"../geometry/builders/buildGridGeometry.js\";\nimport {ReadableGeometry} from \"../geometry/ReadableGeometry.js\";\nimport {math} from \"../math/math.js\";\nimport {worldToRTCPos} from \"../math/rtcCoords.js\";\n\nconst tempVec3 = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst zeroVec = math.vec3([0, -1, 0]);\nconst tempQuat = math.vec4([0, 0, 0, 1]);\n\n/**\n * @desc A plane-shaped 3D object containing a bitmap image.\n *\n * Use ````ImagePlane```` to embed bitmap images in your scenes.\n *\n * As shown in the examples below, ````ImagePlane```` is useful for creating ground planes from satellite maps and embedding 2D plan\n * view images in cross-section slicing planes.\n *\n * # Example 1: Create a ground plane from a satellite image\n *\n * In our first example, we'll load the Schependomlaan model, then use\n * an ````ImagePlane```` to create a ground plane, which will contain\n * a satellite image sourced from Google Maps.\n *\n * \n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#ImagePlane_groundPlane)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#ImagePlane_groundPlane)]\n *\n * ````javascript\n * import {Viewer, ImagePlane, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-8.31, 42.21, 54.30];\n * viewer.camera.look = [-0.86, 15.40, 14.90];\n * viewer.camera.up = [0.10, 0.83, -0.54];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * xktLoader.load({ // Load IFC model\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true,\n *\n * rotation: [0, 22, 0], // Rotate, position and scale the model to align it correctly with the ImagePlane\n * position: [-8, 0, 15],\n * scale: [1.1, 1.1, 1.1]\n * });\n *\n * new ImagePlane(viewer.scene, {\n * src: \"./images/schependomlaanSatMap.png\", // Google satellite image; accepted file types are PNG and JPEG\n * visible: true, // Show the ImagePlane\n * gridVisible: true, // Show the grid - grid is only visible when ImagePlane is also visible\n * size: 190, // Size of ImagePlane's longest edge\n * position: [0, -1, 0], // World-space position of ImagePlane's center\n * rotation: [0, 0, 0], // Euler angles for X, Y and Z\n * opacity: 1.0, // Fully opaque\n * collidable: false, // ImagePlane does not contribute to Scene boundary\n * clippable: true, // ImagePlane can be clipped by SectionPlanes\n * pickable: true // Allow the ground plane to be picked\n * });\n * ````\n *
    \n *\n * # Example 2: Embed an image in a cross-section plane\n *\n * In our second example, we'll load the Schependomlaan model again, then slice it in half with\n * a {@link SectionPlanesPlugin}, then use an ````ImagePlane```` to embed a 2D plan view image in the slicing plane.\n *\n * \n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#ImagePlane_imageInSectionPlane)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#ImagePlane_imageInSectionPlane)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, SectionPlanesPlugin, ImagePlane} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-9.11, 20.01, 5.13];\n * viewer.camera.look = [9.07, 0.77, -9.78];\n * viewer.camera.up = [0.47, 0.76, -0.38];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const sectionPlanes = new SectionPlanesPlugin(viewer, {\n * overviewVisible: false\n * });\n *\n * model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/metaModel.json\",\n * edges: true,\n * });\n *\n * const sectionPlane = sectionPlanes.createSectionPlane({\n * id: \"mySectionPlane\",\n * pos: [10.95, 1.95, -10.35],\n * dir: [0.0, -1.0, 0.0]\n * });\n *\n * const imagePlane = new ImagePlane(viewer.scene, {\n * src: \"./images/schependomlaanPlanView.png\", // Plan view image; accepted file types are PNG and JPEG\n * visible: true,\n * gridVisible: true,\n * size: 23.95,\n * position: sectionPlane.pos,\n * dir: sectionPlane.dir,\n * collidable: false,\n * opacity: 0.75,\n * clippable: false, // Don't allow ImagePlane to be clipped by the SectionPlane\n * pickable: false // Don't allow ImagePlane to be picked\n * });\n * ````\n */\nclass ImagePlane extends Component {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this ````ImagePlane```` as well.\n * @param {*} [cfg] ````ImagePlane```` configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Boolean} [cfg.visible=true] Indicates whether or not this ````ImagePlane```` is visible.\n * @param {Boolean} [cfg.gridVisible=true] Indicates whether or not the grid is visible. Grid is only visible when ````ImagePlane```` is also visible.\n * @param {Number[]} [cfg.position=[0,0,0]] World-space position of the ````ImagePlane````.\n * @param {Number[]} [cfg.size=1] World-space size of the longest edge of the ````ImagePlane````. Note that\n * ````ImagePlane```` sets its aspect ratio to match its image. If we set a value of ````1000````, and the image\n * has size ````400x300````, then the ````ImagePlane```` will then have size ````1000 x 750````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation of the ````ImagePlane````, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix for the ````ImagePlane````. Overrides the ````position````, ````size```, ````rotation```` and ````dir```` parameters.\n * @param {Boolean} [cfg.collidable=true] Indicates if the ````ImagePlane```` is initially included in boundary calculations.\n * @param {Boolean} [cfg.clippable=true] Indicates if the ````ImagePlane```` is initially clippable.\n * @param {Boolean} [cfg.pickable=true] Indicates if the ````ImagePlane```` is initially pickable.\n * @param {Number} [cfg.opacity=1.0] ````ImagePlane````'s initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {String} [cfg.src] URL of image. Accepted file types are PNG and JPEG.\n * @param {HTMLImageElement} [cfg.image] An ````HTMLImageElement```` to source the image from. Overrides ````src````.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._src = null;\n this._image = null;\n this._pos = math.vec3();\n this._origin = math.vec3();\n this._rtcPos = math.vec3();\n this._dir = math.vec3();\n this._size = 1.0;\n this._imageSize = math.vec2();\n\n this._texture = new Texture(this);\n\n this._plane = new Mesh(this, {\n\n geometry: new ReadableGeometry(this, buildPlaneGeometry({\n center: [0, 0, 0],\n xSize: 1,\n zSize: 1,\n xSegments: 10,\n zSegments: 10\n })),\n\n material: new PhongMaterial(this, {\n diffuse: [0, 0, 0],\n ambient: [0, 0, 0],\n specular: [0, 0, 0],\n diffuseMap: this._texture,\n emissiveMap: this._texture,\n backfaces: true\n }),\n clippable: cfg.clippable\n });\n\n this._grid = new Mesh(this, {\n geometry: new ReadableGeometry(this, buildGridGeometry({\n size: 1,\n divisions: 10\n })),\n material: new PhongMaterial(this, {\n diffuse: [0.0, 0.0, 0.0],\n ambient: [0.0, 0.0, 0.0],\n emissive: [0.2, 0.8, 0.2]\n }),\n position: [0, 0.001, 0.0],\n clippable: cfg.clippable\n });\n\n this._node = new Node(this, {\n rotation: [0, 0, 0],\n position: [0, 0, 0],\n scale: [1, 1, 1],\n clippable: false,\n children: [\n this._plane,\n this._grid\n ]\n });\n\n this._gridVisible = false;\n\n this.visible = true;\n this.gridVisible = cfg.gridVisible;\n this.position = cfg.position;\n this.rotation = cfg.rotation;\n this.dir = cfg.dir;\n this.size = cfg.size;\n this.collidable = cfg.collidable;\n this.clippable = cfg.clippable;\n this.pickable = cfg.pickable;\n this.opacity = cfg.opacity;\n\n if (cfg.image) {\n this.image = cfg.image;\n } else {\n this.src = cfg.src;\n }\n }\n\n /**\n * Sets if this ````ImagePlane```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} visible Set ````true```` to make this ````ImagePlane```` visible.\n */\n set visible(visible) {\n this._plane.visible = visible;\n this._grid.visible = (this._gridVisible && visible);\n }\n\n /**\n * Gets if this ````ImagePlane```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if visible.\n */\n get visible() {\n return this._plane.visible;\n }\n\n /**\n * Sets if this ````ImagePlane````'s grid is visible or not.\n *\n * Default value is ````false````.\n *\n * Grid is only visible when ````ImagePlane```` is also visible.\n *\n * @param {Boolean} visible Set ````true```` to make this ````ImagePlane````'s grid visible.\n */\n set gridVisible(visible) {\n visible = (visible !== false);\n this._gridVisible = visible;\n this._grid.visible = (this._gridVisible && this.visible);\n }\n\n /**\n * Gets if this ````ImagePlane````'s grid is visible or not.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} Returns ````true```` if visible.\n */\n get gridVisible() {\n return this._gridVisible;\n }\n\n /**\n * Sets an ````HTMLImageElement```` to source the image from.\n *\n * Sets {@link Texture#src} null.\n *\n * @type {HTMLImageElement}\n */\n set image(image) {\n this._image = image;\n if (this._image) {\n this._imageSize[0] = image.width;\n this._imageSize[1] = image.height;\n this._updatePlaneSizeFromImage();\n this._src = null;\n this._texture.image = this._image;\n }\n }\n\n /**\n * Gets the ````HTMLImageElement```` the ````ImagePlane````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {HTMLImageElement}\n */\n get image() {\n return this._image;\n }\n\n /**\n * Sets an image file path that the ````ImagePlane````'s image is sourced from.\n *\n * Accepted file types are PNG and JPEG.\n *\n * Sets {@link Texture#image} null.\n *\n * @type {String}\n */\n set src(src) {\n this._src = src;\n if (this._src) {\n this._image = null;\n const image = new Image();\n image.onload = () => {\n this._texture.image = image;\n this._imageSize[0] = image.width;\n this._imageSize[1] = image.height;\n this._updatePlaneSizeFromImage();\n };\n image.src = this._src;\n }\n }\n\n /**\n * Gets the image file path that the ````ImagePlane````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {String}\n */\n get src() {\n return this._src;\n }\n\n /**\n * Sets the World-space position of this ````ImagePlane````.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @param {Number[]} value New position.\n */\n set position(value) {\n this._pos.set(value || [0, 0, 0]);\n worldToRTCPos(this._pos, this._origin, this._rtcPos);\n this._node.origin = this._origin;\n this._node.position = this._rtcPos;\n }\n\n /**\n * Gets the World-space position of this ````ImagePlane````.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @returns {Number[]} Current position.\n */\n get position() {\n return this._pos;\n }\n\n /**\n * Sets the direction of this ````ImagePlane```` using Euler angles.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @param {Number[]} value Euler angles for ````X````, ````Y```` and ````Z```` axis rotations.\n */\n set rotation(value) {\n this._node.rotation = value;\n }\n\n /**\n * Gets the direction of this ````ImagePlane```` as Euler angles.\n *\n * @returns {Number[]} Euler angles for ````X````, ````Y```` and ````Z```` axis rotations.\n */\n get rotation() {\n return this._node.rotation;\n }\n\n /**\n * Sets the World-space size of the longest edge of the ````ImagePlane````.\n *\n * Note that ````ImagePlane```` sets its aspect ratio to match its image. If we set a value of ````1000````, and\n * the image has size ````400x300````, then the ````ImagePlane```` will then have size ````1000 x 750````.\n *\n * Default value is ````1.0````.\n *\n * @param {Number} size New World-space size of the ````ImagePlane````.\n */\n set size(size) {\n this._size = (size === undefined || size === null) ? 1.0 : size;\n if (this._image) {\n this._updatePlaneSizeFromImage()\n }\n }\n\n /**\n * Gets the World-space size of the longest edge of the ````ImagePlane````.\n *\n * Returns {Number} World-space size of the ````ImagePlane````.\n */\n get size() {\n return this._size;\n }\n\n /**\n * Sets the direction of this ````ImagePlane```` as a direction vector.\n *\n * Default value is ````[0, 0, -1]````.\n *\n * @param {Number[]} dir New direction vector.\n */\n set dir(dir) {\n\n this._dir.set(dir || [0, 0, -1]);\n\n if (dir) {\n\n const origin = this.scene.center;\n const negDir = [-this._dir[0], -this._dir[1], -this._dir[2]];\n\n math.subVec3(origin, this.position, tempVec3);\n\n const dist = -math.dotVec3(negDir, tempVec3);\n\n math.normalizeVec3(negDir);\n math.mulVec3Scalar(negDir, dist, tempVec3b);\n math.vec3PairToQuaternion(zeroVec, dir, tempQuat);\n\n this._node.quaternion = tempQuat;\n }\n }\n\n /**\n * Gets the direction of this ````ImagePlane```` as a direction vector.\n *\n * @returns {Number[]} value Current direction.\n */\n get dir() {\n return this._dir;\n }\n\n /**\n * Sets if this ````ImagePlane```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set collidable(value) {\n this._node.collidable = (value !== false);\n }\n\n /**\n * Gets if this ````ImagePlane```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._node.collidable;\n }\n\n /**\n * Sets if this ````ImagePlane```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set clippable(value) {\n this._node.clippable = (value !== false);\n }\n\n /**\n * Gets if this ````ImagePlane```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._node.clippable;\n }\n\n /**\n * Sets if this ````ImagePlane```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set pickable(value) {\n this._node.pickable = (value !== false);\n }\n\n /**\n * Gets if this ````ImagePlane```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._node.pickable;\n }\n\n /**\n * Sets the opacity factor for this ````ImagePlane````.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n this._node.opacity = opacity;\n }\n\n /**\n * Gets this ````ImagePlane````'s opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._node.opacity;\n }\n\n /**\n * @destroy\n */\n destroy() {\n super.destroy();\n }\n\n _updatePlaneSizeFromImage() {\n const size = this._size;\n const width = this._imageSize[0];\n const height = this._imageSize[1];\n if (width > height) {\n const aspect = height / width;\n this._node.scale = [size, 1.0, size * aspect];\n } else {\n const aspect = width / height;\n this._node.scale = [size * aspect, 1.0, size];\n }\n }\n}\n\nexport {ImagePlane};\n", @@ -54839,7 +55367,7 @@ "lineNumber": 1 }, { - "__docId__": 2798, + "__docId__": 2816, "kind": "variable", "name": "tempVec3", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -54860,7 +55388,7 @@ "ignore": true }, { - "__docId__": 2799, + "__docId__": 2817, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -54881,7 +55409,7 @@ "ignore": true }, { - "__docId__": 2800, + "__docId__": 2818, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -54902,7 +55430,7 @@ "ignore": true }, { - "__docId__": 2801, + "__docId__": 2819, "kind": "variable", "name": "zeroVec", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -54923,7 +55451,7 @@ "ignore": true }, { - "__docId__": 2802, + "__docId__": 2820, "kind": "variable", "name": "tempQuat", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -54944,7 +55472,7 @@ "ignore": true }, { - "__docId__": 2803, + "__docId__": 2821, "kind": "class", "name": "ImagePlane", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -54962,7 +55490,7 @@ ] }, { - "__docId__": 2804, + "__docId__": 2822, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55178,7 +55706,7 @@ ] }, { - "__docId__": 2805, + "__docId__": 2823, "kind": "member", "name": "_src", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55196,7 +55724,7 @@ } }, { - "__docId__": 2806, + "__docId__": 2824, "kind": "member", "name": "_image", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55214,7 +55742,7 @@ } }, { - "__docId__": 2807, + "__docId__": 2825, "kind": "member", "name": "_pos", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55232,7 +55760,7 @@ } }, { - "__docId__": 2808, + "__docId__": 2826, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55250,7 +55778,7 @@ } }, { - "__docId__": 2809, + "__docId__": 2827, "kind": "member", "name": "_rtcPos", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55268,7 +55796,7 @@ } }, { - "__docId__": 2810, + "__docId__": 2828, "kind": "member", "name": "_dir", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55286,7 +55814,7 @@ } }, { - "__docId__": 2811, + "__docId__": 2829, "kind": "member", "name": "_size", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55304,7 +55832,7 @@ } }, { - "__docId__": 2812, + "__docId__": 2830, "kind": "member", "name": "_imageSize", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55322,7 +55850,7 @@ } }, { - "__docId__": 2813, + "__docId__": 2831, "kind": "member", "name": "_texture", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55340,7 +55868,7 @@ } }, { - "__docId__": 2814, + "__docId__": 2832, "kind": "member", "name": "_plane", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55358,7 +55886,7 @@ } }, { - "__docId__": 2815, + "__docId__": 2833, "kind": "member", "name": "_grid", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55376,7 +55904,7 @@ } }, { - "__docId__": 2816, + "__docId__": 2834, "kind": "member", "name": "_node", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55394,7 +55922,7 @@ } }, { - "__docId__": 2817, + "__docId__": 2835, "kind": "member", "name": "_gridVisible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55412,7 +55940,7 @@ } }, { - "__docId__": 2830, + "__docId__": 2848, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55437,7 +55965,7 @@ ] }, { - "__docId__": 2831, + "__docId__": 2849, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55469,7 +55997,7 @@ } }, { - "__docId__": 2832, + "__docId__": 2850, "kind": "set", "name": "gridVisible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55494,7 +56022,7 @@ ] }, { - "__docId__": 2834, + "__docId__": 2852, "kind": "get", "name": "gridVisible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55526,7 +56054,7 @@ } }, { - "__docId__": 2835, + "__docId__": 2853, "kind": "set", "name": "image", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55547,7 +56075,7 @@ } }, { - "__docId__": 2838, + "__docId__": 2856, "kind": "get", "name": "image", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55568,7 +56096,7 @@ } }, { - "__docId__": 2839, + "__docId__": 2857, "kind": "set", "name": "src", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55589,7 +56117,7 @@ } }, { - "__docId__": 2842, + "__docId__": 2860, "kind": "get", "name": "src", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55610,7 +56138,7 @@ } }, { - "__docId__": 2843, + "__docId__": 2861, "kind": "set", "name": "position", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55635,7 +56163,7 @@ ] }, { - "__docId__": 2844, + "__docId__": 2862, "kind": "get", "name": "position", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55667,7 +56195,7 @@ } }, { - "__docId__": 2845, + "__docId__": 2863, "kind": "set", "name": "rotation", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55692,7 +56220,7 @@ ] }, { - "__docId__": 2846, + "__docId__": 2864, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55724,7 +56252,7 @@ } }, { - "__docId__": 2847, + "__docId__": 2865, "kind": "set", "name": "size", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55749,7 +56277,7 @@ ] }, { - "__docId__": 2849, + "__docId__": 2867, "kind": "get", "name": "size", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55767,7 +56295,7 @@ } }, { - "__docId__": 2850, + "__docId__": 2868, "kind": "set", "name": "dir", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55792,7 +56320,7 @@ ] }, { - "__docId__": 2851, + "__docId__": 2869, "kind": "get", "name": "dir", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55824,7 +56352,7 @@ } }, { - "__docId__": 2852, + "__docId__": 2870, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55845,7 +56373,7 @@ } }, { - "__docId__": 2853, + "__docId__": 2871, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55866,7 +56394,7 @@ } }, { - "__docId__": 2854, + "__docId__": 2872, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55887,7 +56415,7 @@ } }, { - "__docId__": 2855, + "__docId__": 2873, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55908,7 +56436,7 @@ } }, { - "__docId__": 2856, + "__docId__": 2874, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55929,7 +56457,7 @@ } }, { - "__docId__": 2857, + "__docId__": 2875, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55950,7 +56478,7 @@ } }, { - "__docId__": 2858, + "__docId__": 2876, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55971,7 +56499,7 @@ } }, { - "__docId__": 2859, + "__docId__": 2877, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -55992,7 +56520,7 @@ } }, { - "__docId__": 2860, + "__docId__": 2878, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -56013,7 +56541,7 @@ "return": null }, { - "__docId__": 2861, + "__docId__": 2879, "kind": "method", "name": "_updatePlaneSizeFromImage", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -56030,7 +56558,7 @@ "return": null }, { - "__docId__": 2862, + "__docId__": 2880, "kind": "file", "name": "src/viewer/scene/ImagePlane/index.js", "content": "export * from \"./ImagePlane.js\";", @@ -56041,7 +56569,7 @@ "lineNumber": 1 }, { - "__docId__": 2863, + "__docId__": 2881, "kind": "file", "name": "src/viewer/scene/LineSet/LineSet.js", "content": "import {Component} from '../Component.js';\nimport {SceneModel} from \"../model/SceneModel.js\";\n\n/**\n * A set of 3D line segments.\n *\n * * Creates a set of 3D line segments.\n * * Registered by {@link LineSet#id} in {@link Scene#lineSets}.\n * * Configure color using the {@link LinesMaterial} located at {@link Scene#linesMaterial}.\n * * {@link BCFViewpointsPlugin} will save and load Linesets in BCF viewpoints.\n *\n * ## Usage\n *\n * In the example below, we'll load the Schependomlaan model, then use\n * a ````LineSet```` to show a grid underneath the model.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#LineSet_grid)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#LineSet_grid)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, LineSet, buildGridGeometry} from \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * const camera = viewer.camera;\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/xkt/v8/ifc/Schependomlaan.ifc.xkt\",\n * position: [0,1,0],\n * edges: true,\n * saoEnabled: true\n * });\n *\n * const geometryArrays = buildGridGeometry({\n * size: 100,\n * divisions: 30\n * });\n *\n * new LineSet(viewer.scene, {\n * positions: geometryArrays.positions,\n * indices: geometryArrays.indices\n * });\n * ````\n */\nclass LineSet extends Component {\n\n /**\n * Creates a new LineSet.\n *\n * Registers the LineSet in {@link Scene#lineSets}; causes Scene to fire a \"lineSetCreated\" event.\n *\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this ````LineSet```` as well.\n * @param {*} [cfg] ````LineSet```` configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} cfg.positions World-space 3D vertex positions.\n * @param {Number[]} [cfg.indices] Indices to connect ````positions```` into line segments. Note that these are separate line segments, not a polyline.\n * @param {Number[]} [cfg.color=[0,0,0]] The color of this ````LineSet````. This is both emissive and diffuse.\n * @param {Boolean} [cfg.visible=true] Indicates whether or not this ````LineSet```` is visible.\n * @param {Number} [cfg.opacity=1.0] ````LineSet````'s initial opacity factor.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._positions = cfg.positions || [];\n\n if (cfg.indices) {\n this._indices = cfg.indices;\n } else {\n this._indices = [];\n for (let i = 0, len = (this._positions.length / 3) - 1; i < len; i += 2) {\n this._indices.push(i);\n this._indices.push(i + 1);\n }\n }\n\n this._sceneModel = new SceneModel(this, {\n isModel: false // Don't register in Scene.models\n });\n\n this._sceneModel.createMesh({\n id: \"linesMesh\",\n primitive: \"lines\",\n positions: this._positions,\n indices: this._indices\n })\n\n this._sceneModel.createEntity({\n meshIds: [\"linesMesh\"],\n visible: cfg.visible,\n clippable: cfg.clippable,\n collidable: cfg.collidable\n });\n\n this._sceneModel.finalize();\n\n this.scene._lineSetCreated(this);\n }\n\n /**\n * Sets if this ````LineSet```` is visible.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} visible Set ````true```` to make this ````LineSet```` visible.\n */\n set visible(visible) {\n this._sceneModel.visible = visible;\n }\n\n /**\n * Gets if this ````LineSet```` is visible.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if visible.\n */\n get visible() {\n return this._sceneModel.visible;\n }\n\n /**\n * Gets the 3D World-space vertex positions of the lines in this ````LineSet````.\n *\n * @returns {Number[]}\n */\n get positions() {\n return this._positions;\n }\n\n /**\n * Gets the vertex indices of the lines in this ````LineSet````.\n *\n * @returns {Number[]}\n */\n get indices() {\n return this._indices;\n }\n\n /**\n * Destroys this ````LineSet````.\n *\n * Removes the ```LineSet```` from {@link Scene#lineSets}; causes Scene to fire a \"lineSetDestroyed\" event.\n */\n destroy() {\n super.destroy(); // destroyes _sceneModel\n this.scene._lineSetDestroyed(this);\n }\n}\n\nexport {LineSet};\n", @@ -56052,7 +56580,7 @@ "lineNumber": 1 }, { - "__docId__": 2864, + "__docId__": 2882, "kind": "class", "name": "LineSet", "memberof": "src/viewer/scene/LineSet/LineSet.js", @@ -56070,7 +56598,7 @@ ] }, { - "__docId__": 2865, + "__docId__": 2883, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56181,7 +56709,7 @@ ] }, { - "__docId__": 2866, + "__docId__": 2884, "kind": "member", "name": "_positions", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56199,7 +56727,7 @@ } }, { - "__docId__": 2867, + "__docId__": 2885, "kind": "member", "name": "_indices", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56217,7 +56745,7 @@ } }, { - "__docId__": 2869, + "__docId__": 2887, "kind": "member", "name": "_sceneModel", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56235,7 +56763,7 @@ } }, { - "__docId__": 2870, + "__docId__": 2888, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56260,7 +56788,7 @@ ] }, { - "__docId__": 2871, + "__docId__": 2889, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56292,7 +56820,7 @@ } }, { - "__docId__": 2872, + "__docId__": 2890, "kind": "get", "name": "positions", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56324,7 +56852,7 @@ } }, { - "__docId__": 2873, + "__docId__": 2891, "kind": "get", "name": "indices", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56356,7 +56884,7 @@ } }, { - "__docId__": 2874, + "__docId__": 2892, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/LineSet/LineSet.js~LineSet", @@ -56371,7 +56899,7 @@ "return": null }, { - "__docId__": 2875, + "__docId__": 2893, "kind": "file", "name": "src/viewer/scene/LineSet/index.js", "content": "export * from \"./LineSet.js\";", @@ -56382,7 +56910,7 @@ "lineNumber": 1 }, { - "__docId__": 2876, + "__docId__": 2894, "kind": "file", "name": "src/viewer/scene/camera/Camera.js", "content": "import {math} from '../math/math.js';\nimport {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {Perspective} from './Perspective.js';\nimport {Ortho} from './Ortho.js';\nimport {Frustum} from './Frustum.js';\nimport {CustomProjection} from './CustomProjection.js';\n\nconst tempVec3 = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempVec3e = math.vec3();\nconst tempVec3f = math.vec3();\nconst tempVec4a = math.vec4();\nconst tempVec4b = math.vec4();\nconst tempVec4c = math.vec4();\nconst tempMat = math.mat4();\nconst tempMatb = math.mat4();\nconst eyeLookVec = math.vec3();\nconst eyeLookVecNorm = math.vec3();\nconst eyeLookOffset = math.vec3();\nconst offsetEye = math.vec3();\n\n/**\n * @desc Manages viewing and projection transforms for its {@link Scene}.\n *\n * * One Camera per {@link Scene}\n * * Scene is located at {@link Viewer#scene} and Camera is located at {@link Scene#camera}\n * * Controls viewing and projection transforms\n * * Has methods to pan, zoom and orbit (or first-person rotation)\n * * Dynamically configurable World-space axis\n * * Has {@link Perspective}, {@link Ortho} and {@link Frustum} and {@link CustomProjection}, which you can dynamically switch it between\n * * Switchable gimbal lock\n * * Can be \"flown\" to look at targets using a {@link CameraFlightAnimation}\n * * Can be animated along a path using a {@link CameraPathAnimation}\n *\n * ## Getting the Camera\n *\n * There is exactly one Camera per {@link Scene}:\n *\n * ````javascript\n * import {Viewer} from \"xeokit-sdk.es.js\";\n *\n * var camera = viewer.scene.camera;\n *\n * ````\n *\n * ## Setting the Camera Position\n *\n * Get and set the Camera's absolute position via {@link Camera#eye}, {@link Camera#look} and {@link Camera#up}:\n *\n * ````javascript\n * camera.eye = [-10,0,0];\n * camera.look = [-10,0,0];\n * camera.up = [0,1,0];\n * ````\n *\n * ## Camera View and Projection Matrices\n *\n * The Camera's view matrix transforms coordinates from World-space to View-space.\n *\n * Getting the view matrix:\n *\n * ````javascript\n * var viewMatrix = camera.viewMatrix;\n * var viewNormalMatrix = camera.normalMatrix;\n * ````\n *\n * The Camera's view normal matrix transforms normal vectors from World-space to View-space.\n *\n * Getting the view normal matrix:\n *\n * ````javascript\n * var viewNormalMatrix = camera.normalMatrix;\n * ````\n *\n * The Camera fires a ````\"viewMatrix\"```` event whenever the {@link Camera#viewMatrix} and {@link Camera#viewNormalMatrix} updates.\n *\n * Listen for view matrix updates:\n *\n * ````javascript\n * camera.on(\"viewMatrix\", function(matrix) { ... });\n * ````\n *\n * ## Rotating the Camera\n *\n * Orbiting the {@link Camera#look} position:\n *\n * ````javascript\n * camera.orbitYaw(20.0);\n * camera.orbitPitch(10.0);\n * ````\n *\n * First-person rotation, rotates {@link Camera#look} and {@link Camera#up} about {@link Camera#eye}:\n *\n * ````javascript\n * camera.yaw(5.0);\n * camera.pitch(-10.0);\n * ````\n *\n * ## Panning the Camera\n *\n * Panning along the Camera's local axis (ie. left/right, up/down, forward/backward):\n *\n * ````javascript\n * camera.pan([-20, 0, 10]);\n * ````\n *\n * ## Zooming the Camera\n *\n * Zoom to vary distance between {@link Camera#eye} and {@link Camera#look}:\n *\n * ````javascript\n * camera.zoom(-5); // Move five units closer\n * ````\n *\n * Get the current distance between {@link Camera#eye} and {@link Camera#look}:\n *\n * ````javascript\n * var distance = camera.eyeLookDist;\n * ````\n *\n * ## Projection\n *\n * The Camera has a Component to manage each projection type, which are: {@link Perspective}, {@link Ortho}\n * and {@link Frustum} and {@link CustomProjection}.\n *\n * You can configure those components at any time, regardless of which is currently active:\n *\n * The Camera has a {@link Perspective} to manage perspective\n * ````javascript\n *\n * // Set some properties on Perspective\n * camera.perspective.near = 0.4;\n * camera.perspective.fov = 45;\n *\n * // Set some properties on Ortho\n * camera.ortho.near = 0.8;\n * camera.ortho.far = 1000;\n *\n * // Set some properties on Frustum\n * camera.frustum.left = -1.0;\n * camera.frustum.right = 1.0;\n * camera.frustum.far = 1000.0;\n *\n * // Set the matrix property on CustomProjection\n * camera.customProjection.matrix = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n *\n * // Switch between the projection types\n * camera.projection = \"perspective\"; // Switch to perspective\n * camera.projection = \"frustum\"; // Switch to frustum\n * camera.projection = \"ortho\"; // Switch to ortho\n * camera.projection = \"customProjection\"; // Switch to custom\n * ````\n *\n * Camera provides the projection matrix for the currently active projection in {@link Camera#projMatrix}.\n *\n * Get the projection matrix:\n *\n * ````javascript\n * var projMatrix = camera.projMatrix;\n * ````\n *\n * Listen for projection matrix updates:\n *\n * ````javascript\n * camera.on(\"projMatrix\", function(matrix) { ... });\n * ````\n *\n * ## Configuring World up direction\n *\n * We can dynamically configure the directions of the World-space coordinate system.\n *\n * Setting the +Y axis as World \"up\", +X as right and -Z as forwards (convention in some modeling software):\n *\n * ````javascript\n * camera.worldAxis = [\n * 1, 0, 0, // Right\n * 0, 1, 0, // Up\n * 0, 0,-1 // Forward\n * ];\n * ````\n *\n * Setting the +Z axis as World \"up\", +X as right and -Y as \"up\" (convention in most CAD and BIM viewers):\n *\n * ````javascript\n * camera.worldAxis = [\n * 1, 0, 0, // Right\n * 0, 0, 1, // Up\n * 0,-1, 0 // Forward\n * ];\n * ````\n *\n * The Camera has read-only convenience properties that provide each axis individually:\n *\n * ````javascript\n * var worldRight = camera.worldRight;\n * var worldForward = camera.worldForward;\n * var worldUp = camera.worldUp;\n * ````\n *\n * ### Gimbal locking\n *\n * By default, the Camera locks yaw rotation to pivot about the World-space \"up\" axis. We can dynamically lock and unlock that at any time:\n *\n * ````javascript\n * camera.gimbalLock = false; // Yaw rotation now happens about Camera's local Y-axis\n * camera.gimbalLock = true; // Yaw rotation now happens about World's \"up\" axis\n * ````\n *\n * See: https://en.wikipedia.org/wiki/Gimbal_lock\n */\nclass Camera extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Camera\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n deviceMatrix: math.mat4(),\n hasDeviceMatrix: false, // True when deviceMatrix set to other than identity\n matrix: math.mat4(),\n normalMatrix: math.mat4(),\n inverseMatrix: math.mat4()\n });\n\n this._perspective = new Perspective(this);\n this._ortho = new Ortho(this);\n this._frustum = new Frustum(this);\n this._customProjection = new CustomProjection(this);\n this._project = this._perspective;\n\n this._eye = math.vec3([0, 0, 10.0]);\n this._look = math.vec3([0, 0, 0]);\n this._up = math.vec3([0, 1, 0]);\n\n this._worldUp = math.vec3([0, 1, 0]);\n this._worldRight = math.vec3([1, 0, 0]);\n this._worldForward = math.vec3([0, 0, -1]);\n\n this.deviceMatrix = cfg.deviceMatrix;\n this.eye = cfg.eye;\n this.look = cfg.look;\n this.up = cfg.up;\n this.worldAxis = cfg.worldAxis;\n this.gimbalLock = cfg.gimbalLock;\n this.constrainPitch = cfg.constrainPitch;\n\n this.projection = cfg.projection;\n\n this._perspective.on(\"matrix\", () => {\n if (this._projectionType === \"perspective\") {\n this.fire(\"projMatrix\", this._perspective.matrix);\n }\n });\n this._ortho.on(\"matrix\", () => {\n if (this._projectionType === \"ortho\") {\n this.fire(\"projMatrix\", this._ortho.matrix);\n }\n });\n this._frustum.on(\"matrix\", () => {\n if (this._projectionType === \"frustum\") {\n this.fire(\"projMatrix\", this._frustum.matrix);\n }\n });\n this._customProjection.on(\"matrix\", () => {\n if (this._projectionType === \"customProjection\") {\n this.fire(\"projMatrix\", this._customProjection.matrix);\n }\n });\n }\n\n _update() {\n const state = this._state;\n // In ortho mode, build the view matrix with an eye position that's translated\n // well back from look, so that the front sectionPlane plane doesn't unexpectedly cut\n // the front off the view (not a problem with perspective, since objects close enough\n // to be clipped by the front plane are usually too big to see anything of their cross-sections).\n let eye;\n if (this.projection === \"ortho\") {\n math.subVec3(this._eye, this._look, eyeLookVec);\n math.normalizeVec3(eyeLookVec, eyeLookVecNorm);\n math.mulVec3Scalar(eyeLookVecNorm, 1000.0, eyeLookOffset);\n math.addVec3(this._look, eyeLookOffset, offsetEye);\n eye = offsetEye;\n } else {\n eye = this._eye;\n }\n if (state.hasDeviceMatrix) {\n math.lookAtMat4v(eye, this._look, this._up, tempMatb);\n math.mulMat4(state.deviceMatrix, tempMatb, state.matrix);\n //state.matrix.set(state.deviceMatrix);\n } else {\n math.lookAtMat4v(eye, this._look, this._up, state.matrix);\n }\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n math.transposeMat4(this._state.inverseMatrix, this._state.normalMatrix);\n this.glRedraw();\n this.fire(\"matrix\", this._state.matrix);\n this.fire(\"viewMatrix\", this._state.matrix);\n }\n\n /**\n * Rotates {@link Camera#eye} about {@link Camera#look}, around the {@link Camera#up} vector\n *\n * @param {Number} angleInc Angle of rotation in degrees\n */\n orbitYaw(angleInc) {\n let lookEyeVec = math.subVec3(this._eye, this._look, tempVec3);\n math.rotationMat4v(angleInc * 0.0174532925, this._gimbalLock ? this._worldUp : this._up, tempMat);\n lookEyeVec = math.transformPoint3(tempMat, lookEyeVec, tempVec3b);\n this.eye = math.addVec3(this._look, lookEyeVec, tempVec3c); // Set eye position as 'look' plus 'eye' vector\n this.up = math.transformPoint3(tempMat, this._up, tempVec3d); // Rotate 'up' vector\n }\n\n /**\n * Rotates {@link Camera#eye} about {@link Camera#look} around the right axis (orthogonal to {@link Camera#up} and \"look\").\n *\n * @param {Number} angleInc Angle of rotation in degrees\n */\n orbitPitch(angleInc) {\n if (this._constrainPitch) {\n angleInc = math.dotVec3(this._up, this._worldUp) / math.DEGTORAD;\n if (angleInc < 1) {\n return;\n }\n }\n let eye2 = math.subVec3(this._eye, this._look, tempVec3);\n const left = math.cross3Vec3(math.normalizeVec3(eye2, tempVec3b), math.normalizeVec3(this._up, tempVec3c));\n math.rotationMat4v(angleInc * 0.0174532925, left, tempMat);\n eye2 = math.transformPoint3(tempMat, eye2, tempVec3d);\n this.up = math.transformPoint3(tempMat, this._up, tempVec3e);\n this.eye = math.addVec3(eye2, this._look, tempVec3f);\n }\n\n /**\n * Rotates {@link Camera#look} about {@link Camera#eye}, around the {@link Camera#up} vector.\n *\n * @param {Number} angleInc Angle of rotation in degrees\n */\n yaw(angleInc) {\n let look2 = math.subVec3(this._look, this._eye, tempVec3);\n math.rotationMat4v(angleInc * 0.0174532925, this._gimbalLock ? this._worldUp : this._up, tempMat);\n look2 = math.transformPoint3(tempMat, look2, tempVec3b);\n this.look = math.addVec3(look2, this._eye, tempVec3c);\n if (this._gimbalLock) {\n this.up = math.transformPoint3(tempMat, this._up, tempVec3d);\n }\n }\n\n /**\n * Rotates {@link Camera#look} about {@link Camera#eye}, around the right axis (orthogonal to {@link Camera#up} and \"look\").\n\n * @param {Number} angleInc Angle of rotation in degrees\n */\n pitch(angleInc) {\n if (this._constrainPitch) {\n angleInc = math.dotVec3(this._up, this._worldUp) / math.DEGTORAD;\n if (angleInc < 1) {\n return;\n }\n }\n let look2 = math.subVec3(this._look, this._eye, tempVec3);\n const left = math.cross3Vec3(math.normalizeVec3(look2, tempVec3b), math.normalizeVec3(this._up, tempVec3c));\n math.rotationMat4v(angleInc * 0.0174532925, left, tempMat);\n this.up = math.transformPoint3(tempMat, this._up, tempVec3f);\n look2 = math.transformPoint3(tempMat, look2, tempVec3d);\n this.look = math.addVec3(look2, this._eye, tempVec3e);\n }\n\n /**\n * Pans the Camera along its local X, Y and Z axis.\n *\n * @param pan The pan vector\n */\n pan(pan) {\n const eye2 = math.subVec3(this._eye, this._look, tempVec3);\n const vec = [0, 0, 0];\n let v;\n if (pan[0] !== 0) {\n const left = math.cross3Vec3(math.normalizeVec3(eye2, []), math.normalizeVec3(this._up, tempVec3b));\n v = math.mulVec3Scalar(left, pan[0]);\n vec[0] += v[0];\n vec[1] += v[1];\n vec[2] += v[2];\n }\n if (pan[1] !== 0) {\n v = math.mulVec3Scalar(math.normalizeVec3(this._up, tempVec3c), pan[1]);\n vec[0] += v[0];\n vec[1] += v[1];\n vec[2] += v[2];\n }\n if (pan[2] !== 0) {\n v = math.mulVec3Scalar(math.normalizeVec3(eye2, tempVec3d), pan[2]);\n vec[0] += v[0];\n vec[1] += v[1];\n vec[2] += v[2];\n }\n this.eye = math.addVec3(this._eye, vec, tempVec3e);\n this.look = math.addVec3(this._look, vec, tempVec3f);\n }\n\n /**\n * Increments/decrements the Camera's zoom factor, which is the distance between {@link Camera#eye} and {@link Camera#look}.\n *\n * @param {Number} delta Zoom factor increment.\n */\n zoom(delta) {\n const vec = math.subVec3(this._eye, this._look, tempVec3);\n const lenLook = Math.abs(math.lenVec3(vec, tempVec3b));\n const newLenLook = Math.abs(lenLook + delta);\n if (newLenLook < 0.5) {\n return;\n }\n const dir = math.normalizeVec3(vec, tempVec3c);\n this.eye = math.addVec3(this._look, math.mulVec3Scalar(dir, newLenLook), tempVec3d);\n }\n\n /**\n * Sets the position of the Camera's eye.\n *\n * Default value is ````[0,0,10]````.\n *\n * @emits \"eye\" event on change, with the value of this property.\n * @type {Number[]} New eye position.\n */\n set eye(eye) {\n this._eye.set(eye || [0, 0, 10]);\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"eye\", this._eye);\n }\n\n /**\n * Gets the position of the Camera's eye.\n *\n * Default vale is ````[0,0,10]````.\n *\n * @type {Number[]} New eye position.\n */\n get eye() {\n return this._eye;\n }\n\n /**\n * Sets the position of this Camera's point-of-interest.\n *\n * Default value is ````[0,0,0]````.\n *\n * @emits \"look\" event on change, with the value of this property.\n *\n * @param {Number[]} look Camera look position.\n */\n set look(look) {\n this._look.set(look || [0, 0, 0]);\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"look\", this._look);\n }\n\n /**\n * Gets the position of this Camera's point-of-interest.\n *\n * Default value is ````[0,0,0]````.\n *\n * @returns {Number[]} Camera look position.\n */\n get look() {\n return this._look;\n }\n\n /**\n * Sets the direction of this Camera's {@link Camera#up} vector.\n *\n * @emits \"up\" event on change, with the value of this property.\n *\n * @param {Number[]} up Direction of \"up\".\n */\n set up(up) {\n this._up.set(up || [0, 1, 0]);\n this._needUpdate(0);\n this.fire(\"up\", this._up);\n }\n\n /**\n * Gets the direction of this Camera's {@link Camera#up} vector.\n *\n * @returns {Number[]} Direction of \"up\".\n */\n get up() {\n return this._up;\n }\n\n /**\n * Sets an optional matrix to premultiply into {@link Camera#matrix} matrix.\n *\n * This is intended to be used for stereo rendering with WebVR etc.\n *\n * @param {Number[]} matrix The matrix.\n */\n set deviceMatrix(matrix) {\n this._state.deviceMatrix.set(matrix || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n this._state.hasDeviceMatrix = !!matrix;\n this._needUpdate(0);\n this.fire(\"deviceMatrix\", this._state.deviceMatrix);\n }\n\n /**\n * Gets an optional matrix to premultiply into {@link Camera#matrix} matrix.\n *\n * @returns {Number[]} The matrix.\n */\n get deviceMatrix() {\n return this._state.deviceMatrix;\n }\n\n /**\n * Sets the up, right and forward axis of the World coordinate system.\n *\n * Has format: ````[rightX, rightY, rightZ, upX, upY, upZ, forwardX, forwardY, forwardZ]````\n *\n * Default axis is ````[1, 0, 0, 0, 1, 0, 0, 0, 1]````\n *\n * @param {Number[]} axis The new Wworld coordinate axis.\n */\n set worldAxis(axis) {\n axis = axis || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (!this._worldAxis) {\n this._worldAxis = math.vec3(axis);\n } else {\n this._worldAxis.set(axis);\n }\n this._worldRight[0] = this._worldAxis[0];\n this._worldRight[1] = this._worldAxis[1];\n this._worldRight[2] = this._worldAxis[2];\n this._worldUp[0] = this._worldAxis[3];\n this._worldUp[1] = this._worldAxis[4];\n this._worldUp[2] = this._worldAxis[5];\n this._worldForward[0] = this._worldAxis[6];\n this._worldForward[1] = this._worldAxis[7];\n this._worldForward[2] = this._worldAxis[8];\n this.fire(\"worldAxis\", this._worldAxis);\n }\n\n /**\n * Gets the up, right and forward axis of the World coordinate system.\n *\n * Has format: ````[rightX, rightY, rightZ, upX, upY, upZ, forwardX, forwardY, forwardZ]````\n *\n * Default axis is ````[1, 0, 0, 0, 1, 0, 0, 0, 1]````\n *\n * @returns {Number[]} The current World coordinate axis.\n */\n get worldAxis() {\n return this._worldAxis;\n }\n\n /**\n * Gets the direction of World-space \"up\".\n *\n * This is set by {@link Camera#worldAxis}.\n *\n * Default value is ````[0,1,0]````.\n *\n * @returns {Number[]} The \"up\" vector.\n */\n get worldUp() {\n return this._worldUp;\n }\n\n /**\n * Gets if the World-space X-axis is \"up\".\n * @returns {Boolean}\n */\n get xUp() {\n return this._worldUp[0] > this._worldUp[1] && this._worldUp[0] > this._worldUp[2];\n }\n\n /**\n * Gets if the World-space Y-axis is \"up\".\n * @returns {Boolean}\n */\n get yUp() {\n return this._worldUp[1] > this._worldUp[0] && this._worldUp[1] > this._worldUp[2];\n }\n\n /**\n * Gets if the World-space Z-axis is \"up\".\n * @returns {Boolean}\n */\n get zUp() {\n return this._worldUp[2] > this._worldUp[0] && this._worldUp[2] > this._worldUp[1];\n }\n\n /**\n * Gets the direction of World-space \"right\".\n *\n * This is set by {@link Camera#worldAxis}.\n *\n * Default value is ````[1,0,0]````.\n *\n * @returns {Number[]} The \"up\" vector.\n */\n get worldRight() {\n return this._worldRight;\n }\n\n /**\n * Gets the direction of World-space \"forwards\".\n *\n * This is set by {@link Camera#worldAxis}.\n *\n * Default value is ````[0,0,1]````.\n *\n * @returns {Number[]} The \"up\" vector.\n */\n get worldForward() {\n return this._worldForward;\n }\n\n /**\n * Sets whether to lock yaw rotation to pivot about the World-space \"up\" axis.\n *\n * Fires a {@link Camera#gimbalLock:event} event on change.\n *\n * @params {Boolean} gimbalLock Set true to lock gimbal.\n */\n set gimbalLock(value) {\n this._gimbalLock = value !== false;\n this.fire(\"gimbalLock\", this._gimbalLock);\n }\n\n /**\n * Gets whether to lock yaw rotation to pivot about the World-space \"up\" axis.\n *\n * @returns {Boolean} Returns ````true```` if gimbal is locked.\n */\n get gimbalLock() {\n return this._gimbalLock;\n }\n\n /**\n * Sets whether to prevent camera from being pitched upside down.\n *\n * The camera is upside down when the angle between {@link Camera#up} and {@link Camera#worldUp} is less than one degree.\n *\n * Fires a {@link Camera#constrainPitch:event} event on change.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value Set ````true```` to contrain pitch rotation.\n */\n set constrainPitch(value) {\n this._constrainPitch = !!value;\n this.fire(\"constrainPitch\", this._constrainPitch);\n }\n\n /**\n * Gets whether to prevent camera from being pitched upside down.\n *\n * The camera is upside down when the angle between {@link Camera#up} and {@link Camera#worldUp} is less than one degree.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} ````true```` if pitch rotation is currently constrained.\n get constrainPitch() {\n return this._constrainPitch;\n }\n\n /**\n * Gets distance from {@link Camera#look} to {@link Camera#eye}.\n *\n * @returns {Number} The distance.\n */\n get eyeLookDist() {\n return math.lenVec3(math.subVec3(this._look, this._eye, tempVec3));\n }\n\n /**\n * Gets the Camera's viewing transformation matrix.\n *\n * Fires a {@link Camera#matrix:event} event on change.\n *\n * @returns {Number[]} The viewing transform matrix.\n */\n get matrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * Gets the Camera's viewing transformation matrix.\n *\n * Fires a {@link Camera#matrix:event} event on change.\n *\n * @returns {Number[]} The viewing transform matrix.\n */\n get viewMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * The Camera's viewing normal transformation matrix.\n *\n * Fires a {@link Camera#matrix:event} event on change.\n *\n * @returns {Number[]} The viewing normal transform matrix.\n */\n get normalMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.normalMatrix;\n }\n\n /**\n * The Camera's viewing normal transformation matrix.\n *\n * Fires a {@link Camera#matrix:event} event on change.\n *\n * @returns {Number[]} The viewing normal transform matrix.\n */\n get viewNormalMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.normalMatrix;\n }\n\n /**\n * Gets the inverse of the Camera's viewing transform matrix.\n *\n * This has the same value as {@link Camera#normalMatrix}.\n *\n * @returns {Number[]} The inverse viewing transform matrix.\n */\n get inverseViewMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the Camera's projection transformation projMatrix.\n *\n * Fires a {@link Camera#projMatrix:event} event on change.\n *\n * @returns {Number[]} The projection matrix.\n */\n get projMatrix() {\n return this[this.projection].matrix;\n }\n\n /**\n * Gets the Camera's perspective projection.\n *\n * The Camera uses this while {@link Camera#projection} equals ````perspective````.\n *\n * @returns {Perspective} The Perspective component.\n */\n get perspective() {\n return this._perspective;\n }\n\n /**\n * Gets the Camera's orthographic projection.\n *\n * The Camera uses this while {@link Camera#projection} equals ````ortho````.\n *\n * @returns {Ortho} The Ortho component.\n */\n get ortho() {\n return this._ortho;\n }\n\n /**\n * Gets the Camera's frustum projection.\n *\n * The Camera uses this while {@link Camera#projection} equals ````frustum````.\n *\n * @returns {Frustum} The Ortho component.\n */\n get frustum() {\n return this._frustum;\n }\n\n /**\n * Gets the Camera's custom projection.\n *\n * This is used while {@link Camera#projection} equals \"customProjection\".\n *\n * @returns {CustomProjection} The custom projection.\n */\n get customProjection() {\n return this._customProjection;\n }\n\n /**\n * Sets the active projection type.\n *\n * Accepted values are ````\"perspective\"````, ````\"ortho\"````, ````\"frustum\"```` and ````\"customProjection\"````.\n *\n * Default value is ````\"perspective\"````.\n *\n * @param {String} value Identifies the active projection type.\n */\n set projection(value) {\n value = value || \"perspective\";\n if (this._projectionType === value) {\n return;\n }\n if (value === \"perspective\") {\n this._project = this._perspective;\n } else if (value === \"ortho\") {\n this._project = this._ortho;\n } else if (value === \"frustum\") {\n this._project = this._frustum;\n } else if (value === \"customProjection\") {\n this._project = this._customProjection;\n } else {\n this.error(\"Unsupported value for 'projection': \" + value + \" defaulting to 'perspective'\");\n this._project = this._perspective;\n value = \"perspective\";\n }\n this._project._update();\n this._projectionType = value;\n this.glRedraw();\n this._update(); // Need to rebuild lookat matrix with full eye, look & up\n this.fire(\"dirty\");\n this.fire(\"projection\", this._projectionType);\n this.fire(\"projMatrix\", this._project.matrix);\n }\n\n /**\n * Gets the active projection type.\n *\n * Possible values are ````\"perspective\"````, ````\"ortho\"````, ````\"frustum\"```` and ````\"customProjection\"````.\n *\n * Default value is ````\"perspective\"````.\n *\n * @returns {String} Identifies the active projection type.\n */\n get projection() {\n return this._projectionType;\n }\n\n /**\n * Gets the currently active projection for this Camera.\n *\n * The currently active project is selected with {@link Camera#projection}.\n *\n * @returns {Perspective|Ortho|Frustum|CustomProjection} The currently active projection is active.\n */\n get project() {\n return this._project;\n }\n\n /**\n * Get the 2D canvas position of a 3D world position.\n *\n * @param {[number, number, number]} worldPos\n * @returns {[number, number]} the canvas position\n */\n projectWorldPos(worldPos) {\n const _worldPos = tempVec4a;\n const viewPos = tempVec4b;\n const screenPos = tempVec4c;\n _worldPos[0] = worldPos[0];\n _worldPos[1] = worldPos[1];\n _worldPos[2] = worldPos[2];\n _worldPos[3] = 1;\n math.mulMat4v4(this.viewMatrix, _worldPos, viewPos);\n math.mulMat4v4(this.projMatrix, viewPos, screenPos);\n math.mulVec3Scalar(screenPos, 1.0 / screenPos[3]);\n screenPos[3] = 1.0;\n screenPos[1] *= -1;\n const canvas = this.scene.canvas.canvas;\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n const canvasPos = [\n screenPos[0] * halfCanvasWidth + halfCanvasWidth,\n screenPos[1] * halfCanvasHeight + halfCanvasHeight,\n ]\n return canvasPos;\n }\n\n /**\n * Destroys this Camera.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {Camera};\n", @@ -56393,7 +56921,7 @@ "lineNumber": 1 }, { - "__docId__": 2877, + "__docId__": 2895, "kind": "variable", "name": "tempVec3", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56414,7 +56942,7 @@ "ignore": true }, { - "__docId__": 2878, + "__docId__": 2896, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56435,7 +56963,7 @@ "ignore": true }, { - "__docId__": 2879, + "__docId__": 2897, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56456,7 +56984,7 @@ "ignore": true }, { - "__docId__": 2880, + "__docId__": 2898, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56477,7 +57005,7 @@ "ignore": true }, { - "__docId__": 2881, + "__docId__": 2899, "kind": "variable", "name": "tempVec3e", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56498,7 +57026,7 @@ "ignore": true }, { - "__docId__": 2882, + "__docId__": 2900, "kind": "variable", "name": "tempVec3f", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56519,7 +57047,7 @@ "ignore": true }, { - "__docId__": 2883, + "__docId__": 2901, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56540,7 +57068,7 @@ "ignore": true }, { - "__docId__": 2884, + "__docId__": 2902, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56561,7 +57089,7 @@ "ignore": true }, { - "__docId__": 2885, + "__docId__": 2903, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56582,7 +57110,7 @@ "ignore": true }, { - "__docId__": 2886, + "__docId__": 2904, "kind": "variable", "name": "tempMat", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56603,7 +57131,7 @@ "ignore": true }, { - "__docId__": 2887, + "__docId__": 2905, "kind": "variable", "name": "tempMatb", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56624,7 +57152,7 @@ "ignore": true }, { - "__docId__": 2888, + "__docId__": 2906, "kind": "variable", "name": "eyeLookVec", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56645,7 +57173,7 @@ "ignore": true }, { - "__docId__": 2889, + "__docId__": 2907, "kind": "variable", "name": "eyeLookVecNorm", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56666,7 +57194,7 @@ "ignore": true }, { - "__docId__": 2890, + "__docId__": 2908, "kind": "variable", "name": "eyeLookOffset", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56687,7 +57215,7 @@ "ignore": true }, { - "__docId__": 2891, + "__docId__": 2909, "kind": "variable", "name": "offsetEye", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56708,7 +57236,7 @@ "ignore": true }, { - "__docId__": 2892, + "__docId__": 2910, "kind": "class", "name": "Camera", "memberof": "src/viewer/scene/camera/Camera.js", @@ -56726,7 +57254,7 @@ ] }, { - "__docId__": 2893, + "__docId__": 2911, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56745,7 +57273,7 @@ } }, { - "__docId__": 2894, + "__docId__": 2912, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56765,7 +57293,7 @@ "ignore": true }, { - "__docId__": 2895, + "__docId__": 2913, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56783,7 +57311,7 @@ } }, { - "__docId__": 2896, + "__docId__": 2914, "kind": "member", "name": "_perspective", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56801,7 +57329,7 @@ } }, { - "__docId__": 2897, + "__docId__": 2915, "kind": "member", "name": "_ortho", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56819,7 +57347,7 @@ } }, { - "__docId__": 2898, + "__docId__": 2916, "kind": "member", "name": "_frustum", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56837,7 +57365,7 @@ } }, { - "__docId__": 2899, + "__docId__": 2917, "kind": "member", "name": "_customProjection", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56855,7 +57383,7 @@ } }, { - "__docId__": 2900, + "__docId__": 2918, "kind": "member", "name": "_project", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56873,7 +57401,7 @@ } }, { - "__docId__": 2901, + "__docId__": 2919, "kind": "member", "name": "_eye", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56891,7 +57419,7 @@ } }, { - "__docId__": 2902, + "__docId__": 2920, "kind": "member", "name": "_look", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56909,7 +57437,7 @@ } }, { - "__docId__": 2903, + "__docId__": 2921, "kind": "member", "name": "_up", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56927,7 +57455,7 @@ } }, { - "__docId__": 2904, + "__docId__": 2922, "kind": "member", "name": "_worldUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56945,7 +57473,7 @@ } }, { - "__docId__": 2905, + "__docId__": 2923, "kind": "member", "name": "_worldRight", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56963,7 +57491,7 @@ } }, { - "__docId__": 2906, + "__docId__": 2924, "kind": "member", "name": "_worldForward", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56981,7 +57509,7 @@ } }, { - "__docId__": 2915, + "__docId__": 2933, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -56998,7 +57526,7 @@ "return": null }, { - "__docId__": 2916, + "__docId__": 2934, "kind": "method", "name": "orbitYaw", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57024,7 +57552,7 @@ "return": null }, { - "__docId__": 2919, + "__docId__": 2937, "kind": "method", "name": "orbitPitch", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57050,7 +57578,7 @@ "return": null }, { - "__docId__": 2922, + "__docId__": 2940, "kind": "method", "name": "yaw", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57076,7 +57604,7 @@ "return": null }, { - "__docId__": 2925, + "__docId__": 2943, "kind": "method", "name": "pitch", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57102,7 +57630,7 @@ "return": null }, { - "__docId__": 2928, + "__docId__": 2946, "kind": "method", "name": "pan", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57128,7 +57656,7 @@ "return": null }, { - "__docId__": 2931, + "__docId__": 2949, "kind": "method", "name": "zoom", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57154,7 +57682,7 @@ "return": null }, { - "__docId__": 2933, + "__docId__": 2951, "kind": "set", "name": "eye", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57183,7 +57711,7 @@ ] }, { - "__docId__": 2934, + "__docId__": 2952, "kind": "get", "name": "eye", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57204,7 +57732,7 @@ } }, { - "__docId__": 2935, + "__docId__": 2953, "kind": "set", "name": "look", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57237,7 +57765,7 @@ ] }, { - "__docId__": 2936, + "__docId__": 2954, "kind": "get", "name": "look", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57269,7 +57797,7 @@ } }, { - "__docId__": 2937, + "__docId__": 2955, "kind": "set", "name": "up", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57302,7 +57830,7 @@ ] }, { - "__docId__": 2938, + "__docId__": 2956, "kind": "get", "name": "up", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57334,7 +57862,7 @@ } }, { - "__docId__": 2939, + "__docId__": 2957, "kind": "set", "name": "deviceMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57359,7 +57887,7 @@ ] }, { - "__docId__": 2940, + "__docId__": 2958, "kind": "get", "name": "deviceMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57391,7 +57919,7 @@ } }, { - "__docId__": 2941, + "__docId__": 2959, "kind": "set", "name": "worldAxis", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57416,7 +57944,7 @@ ] }, { - "__docId__": 2942, + "__docId__": 2960, "kind": "member", "name": "_worldAxis", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57434,7 +57962,7 @@ } }, { - "__docId__": 2943, + "__docId__": 2961, "kind": "get", "name": "worldAxis", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57466,7 +57994,7 @@ } }, { - "__docId__": 2944, + "__docId__": 2962, "kind": "get", "name": "worldUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57498,7 +58026,7 @@ } }, { - "__docId__": 2945, + "__docId__": 2963, "kind": "get", "name": "xUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57530,7 +58058,7 @@ } }, { - "__docId__": 2946, + "__docId__": 2964, "kind": "get", "name": "yUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57562,7 +58090,7 @@ } }, { - "__docId__": 2947, + "__docId__": 2965, "kind": "get", "name": "zUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57594,7 +58122,7 @@ } }, { - "__docId__": 2948, + "__docId__": 2966, "kind": "get", "name": "worldRight", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57626,7 +58154,7 @@ } }, { - "__docId__": 2949, + "__docId__": 2967, "kind": "get", "name": "worldForward", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57658,7 +58186,7 @@ } }, { - "__docId__": 2950, + "__docId__": 2968, "kind": "set", "name": "gimbalLock", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57677,7 +58205,7 @@ ] }, { - "__docId__": 2951, + "__docId__": 2969, "kind": "member", "name": "_gimbalLock", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57695,7 +58223,7 @@ } }, { - "__docId__": 2952, + "__docId__": 2970, "kind": "get", "name": "gimbalLock", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57727,7 +58255,7 @@ } }, { - "__docId__": 2953, + "__docId__": 2971, "kind": "set", "name": "constrainPitch", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57752,7 +58280,7 @@ ] }, { - "__docId__": 2954, + "__docId__": 2972, "kind": "member", "name": "_constrainPitch", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57770,7 +58298,7 @@ } }, { - "__docId__": 2955, + "__docId__": 2973, "kind": "get", "name": "eyeLookDist", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57806,7 +58334,7 @@ } }, { - "__docId__": 2956, + "__docId__": 2974, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57838,7 +58366,7 @@ } }, { - "__docId__": 2957, + "__docId__": 2975, "kind": "get", "name": "viewMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57870,7 +58398,7 @@ } }, { - "__docId__": 2958, + "__docId__": 2976, "kind": "get", "name": "normalMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57902,7 +58430,7 @@ } }, { - "__docId__": 2959, + "__docId__": 2977, "kind": "get", "name": "viewNormalMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57934,7 +58462,7 @@ } }, { - "__docId__": 2960, + "__docId__": 2978, "kind": "get", "name": "inverseViewMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57966,7 +58494,7 @@ } }, { - "__docId__": 2961, + "__docId__": 2979, "kind": "get", "name": "projMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -57998,7 +58526,7 @@ } }, { - "__docId__": 2962, + "__docId__": 2980, "kind": "get", "name": "perspective", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58030,7 +58558,7 @@ } }, { - "__docId__": 2963, + "__docId__": 2981, "kind": "get", "name": "ortho", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58062,7 +58590,7 @@ } }, { - "__docId__": 2964, + "__docId__": 2982, "kind": "get", "name": "frustum", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58094,7 +58622,7 @@ } }, { - "__docId__": 2965, + "__docId__": 2983, "kind": "get", "name": "customProjection", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58126,7 +58654,7 @@ } }, { - "__docId__": 2966, + "__docId__": 2984, "kind": "set", "name": "projection", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58151,7 +58679,7 @@ ] }, { - "__docId__": 2972, + "__docId__": 2990, "kind": "member", "name": "_projectionType", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58169,7 +58697,7 @@ } }, { - "__docId__": 2973, + "__docId__": 2991, "kind": "get", "name": "projection", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58201,7 +58729,7 @@ } }, { - "__docId__": 2974, + "__docId__": 2992, "kind": "get", "name": "project", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58236,7 +58764,7 @@ } }, { - "__docId__": 2975, + "__docId__": 2993, "kind": "method", "name": "projectWorldPos", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58275,7 +58803,7 @@ } }, { - "__docId__": 2976, + "__docId__": 2994, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -58290,7 +58818,7 @@ "return": null }, { - "__docId__": 2977, + "__docId__": 2995, "kind": "file", "name": "src/viewer/scene/camera/CameraFlightAnimation.js", "content": "import {math} from '../math/math.js';\nimport {utils} from '../utils.js';\nimport {core} from '../core.js';\nimport {Component} from '../Component.js';\n\nconst tempVec3 = math.vec3();\nconst newLook = math.vec3();\nconst newEye = math.vec3();\nconst newUp = math.vec3();\nconst newLookEyeVec = math.vec3();\n\n/**\n * @desc Jumps or flies the {@link Scene}'s {@link Camera} to a given target.\n *\n * * Located at {@link Viewer#cameraFlight}\n * * Can fly or jump to its target.\n * * While flying, can be stopped, or redirected to a different target.\n * * Can also smoothly transition between ortho and perspective projections.\n *\n *\n * A CameraFlightAnimation's target can be:\n *\n * * specific ````eye````, ````look```` and ````up```` positions,\n * * an axis-aligned World-space bounding box (AABB), or\n * * an instance or ID of any {@link Component} subtype that provides a World-space AABB.\n *\n * A target can also contain a ````projection```` type to transition into. For example, if your {@link Camera#projection} is\n * currently ````\"perspective\"```` and you supply {@link CameraFlightAnimation#flyTo} with a ````projection```` property\n * equal to \"ortho\", then CameraFlightAnimation will smoothly transition the Camera into an orthographic projection.\n *\n * Configure {@link CameraFlightAnimation#fit} and {@link CameraFlightAnimation#fitFOV} to make it stop at the point\n * where the target occupies a certain amount of the field-of-view.\n *\n * ## Flying to an Entity\n *\n * Flying to an {@link Entity}:\n *\n * ````Javascript\n * var entity = new Mesh(viewer.scene);\n *\n * // Fly to the Entity's World-space AABB\n * viewer.cameraFlight.flyTo(entity);\n * ````\n * ## Flying to a Position\n *\n * Flying the CameraFlightAnimation from the previous example to specified eye, look and up positions:\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo({\n * eye: [-5,-5,-5],\n * look: [0,0,0]\n * up: [0,1,0],\n * duration: 1 // Default, seconds\n * },() => {\n * // Done\n * });\n * ````\n *\n * ## Flying to an AABB\n *\n * Flying the CameraFlightAnimation from the previous two examples explicitly to the {@link Boundary3D\"}}Boundary3D's{{/crossLink}}\n * axis-aligned bounding box:\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo(entity.aabb);\n * ````\n *\n * ## Transitioning Between Projections\n *\n * CameraFlightAnimation also allows us to smoothly transition between Camera projections. We can do that by itself, or\n * in addition to flying the Camera to a target.\n *\n * Let's transition the Camera to orthographic projection:\n *\n * [[Run example](/examples/index.html#camera_CameraFlightAnimation_projection)]\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo({ projection: \"ortho\", () => {\n * // Done\n * });\n * ````\n *\n * Now let's transition the Camera back to perspective projection:\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo({ projection: \"perspective\"}, () => {\n * // Done\n * });\n * ````\n *\n * Fly Camera to a position, while transitioning to orthographic projection:\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo({\n * eye: [-100,20,2],\n * look: [0,0,-40],\n * up: [0,1,0],\n * projection: \"ortho\", () => {\n * // Done\n * });\n * ````\n */\nclass CameraFlightAnimation extends Component {\n\n /**\n * @private\n */\n get type() {\n return \"CameraFlightAnimation\";\n }\n\n /**\n @constructor\n @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._look1 = math.vec3();\n this._eye1 = math.vec3();\n this._up1 = math.vec3();\n this._look2 = math.vec3();\n this._eye2 = math.vec3();\n this._up2 = math.vec3();\n this._orthoScale1 = 1;\n this._orthoScale2 = 1;\n this._flying = false;\n this._flyEyeLookUp = false;\n this._flyingEye = false;\n this._flyingLook = false;\n this._callback = null;\n this._callbackScope = null;\n this._time1 = null;\n this._time2 = null;\n this.easing = cfg.easing !== false;\n\n this.duration = cfg.duration;\n this.fit = cfg.fit;\n this.fitFOV = cfg.fitFOV;\n this.trail = cfg.trail;\n }\n\n /**\n * Flies the {@link Camera} to a target.\n *\n * * When the target is a boundary, the {@link Camera} will fly towards the target and stop when the target fills most of the canvas.\n * * When the target is an explicit {@link Camera} position, given as ````eye````, ````look```` and ````up````, then CameraFlightAnimation will interpolate the {@link Camera} to that target and stop there.\n *\n * @param {Object|Component} [params=Scene] Either a parameters object or a {@link Component} subtype that has\n * an AABB. Defaults to the {@link Scene}, which causes the {@link Camera} to fit the Scene in view.\n * @param {Number} [params.arc=0] Factor in range ````[0..1]```` indicating how much the {@link Camera#eye} position\n * will swing away from its {@link Camera#look} position as it flies to the target.\n * @param {Number|String|Component} [params.component] ID or instance of a component to fly to. Defaults to the entire {@link Scene}.\n * @param {Number[]} [params.aabb] World-space axis-aligned bounding box (AABB) target to fly to.\n * @param {Number[]} [params.eye] Position to fly the eye position to.\n * @param {Number[]} [params.look] Position to fly the look position to.\n * @param {Number[]} [params.up] Position to fly the up vector to.\n * @param {String} [params.projection] Projection type to transition into as we fly. Can be any of the values of {@link Camera.projection}.\n * @param {Boolean} [params.fit=true] Whether to fit the target to the view volume. Overrides {@link CameraFlightAnimation#fit}.\n * @param {Number} [params.fitFOV] How much of field-of-view, in degrees, that a target {@link Entity} or its AABB should\n * fill the canvas on arrival. Overrides {@link CameraFlightAnimation#fitFOV}.\n * @param {Number} [params.duration] Flight duration in seconds. Overrides {@link CameraFlightAnimation#duration}.\n * @param {Number} [params.orthoScale] Animate the Camera's orthographic scale to this target value. See {@link Ortho#scale}.\n * @param {Function} [callback] Callback fired on arrival.\n * @param {Object} [scope] Optional scope for callback.\n */\n flyTo(params, callback, scope) {\n\n params = params || this.scene;\n\n if (this._flying) {\n this.stop();\n }\n\n this._flying = false;\n this._flyingEye = false;\n this._flyingLook = false;\n this._flyingEyeLookUp = false;\n\n this._callback = callback;\n this._callbackScope = scope;\n\n const camera = this.scene.camera;\n const flyToProjection = (!!params.projection) && (params.projection !== camera.projection);\n\n this._eye1[0] = camera.eye[0];\n this._eye1[1] = camera.eye[1];\n this._eye1[2] = camera.eye[2];\n\n this._look1[0] = camera.look[0];\n this._look1[1] = camera.look[1];\n this._look1[2] = camera.look[2];\n\n this._up1[0] = camera.up[0];\n this._up1[1] = camera.up[1];\n this._up1[2] = camera.up[2];\n\n this._orthoScale1 = camera.ortho.scale;\n this._orthoScale2 = params.orthoScale || this._orthoScale1;\n\n let aabb;\n let eye;\n let look;\n let up;\n let componentId;\n\n if (params.aabb) {\n aabb = params.aabb;\n\n } else if (params.length === 6) {\n aabb = params;\n\n } else if ((params.eye && params.look) || params.up) {\n eye = params.eye;\n look = params.look;\n up = params.up;\n\n } else if (params.eye) {\n eye = params.eye;\n\n } else if (params.look) {\n look = params.look;\n\n } else { // Argument must be an instance or ID of a Component (subtype)\n\n let component = params;\n\n if (utils.isNumeric(component) || utils.isString(component)) {\n\n componentId = component;\n component = this.scene.components[componentId];\n\n if (!component) {\n this.error(\"Component not found: \" + utils.inQuotes(componentId));\n if (callback) {\n if (scope) {\n callback.call(scope);\n } else {\n callback();\n }\n }\n return;\n }\n }\n if (!flyToProjection) {\n aabb = component.aabb || this.scene.aabb;\n }\n }\n\n const poi = params.poi;\n\n if (aabb) {\n\n if (aabb[3] < aabb[0] || aabb[4] < aabb[1] || aabb[5] < aabb[2]) { // Don't fly to an inverted boundary\n return;\n }\n\n if (aabb[3] === aabb[0] && aabb[4] === aabb[1] && aabb[5] === aabb[2]) { // Don't fly to an empty boundary\n return;\n }\n\n aabb = aabb.slice();\n const aabbCenter = math.getAABB3Center(aabb);\n\n this._look2 = poi || aabbCenter;\n\n const eyeLookVec = math.subVec3(this._eye1, this._look1, tempVec3);\n const eyeLookVecNorm = math.normalizeVec3(eyeLookVec);\n const diag = poi ? math.getAABB3DiagPoint(aabb, poi) : math.getAABB3Diag(aabb);\n const fitFOV = params.fitFOV || this._fitFOV;\n const sca = Math.abs(diag / Math.tan(fitFOV * math.DEGTORAD));\n\n this._orthoScale2 = diag * 1.1;\n\n this._eye2[0] = this._look2[0] + (eyeLookVecNorm[0] * sca);\n this._eye2[1] = this._look2[1] + (eyeLookVecNorm[1] * sca);\n this._eye2[2] = this._look2[2] + (eyeLookVecNorm[2] * sca);\n\n this._up2[0] = this._up1[0];\n this._up2[1] = this._up1[1];\n this._up2[2] = this._up1[2];\n\n this._flyingEyeLookUp = true;\n\n } else if (eye || look || up) {\n\n this._flyingEyeLookUp = !!eye && !!look && !!up;\n this._flyingEye = !!eye && !look;\n this._flyingLook = !!look && !eye;\n\n if (eye) {\n this._eye2[0] = eye[0];\n this._eye2[1] = eye[1];\n this._eye2[2] = eye[2];\n }\n\n if (look) {\n this._look2[0] = look[0];\n this._look2[1] = look[1];\n this._look2[2] = look[2];\n }\n\n if (up) {\n this._up2[0] = up[0];\n this._up2[1] = up[1];\n this._up2[2] = up[2];\n }\n }\n\n if (flyToProjection) {\n\n if (params.projection === \"ortho\" && camera.projection !== \"ortho\") {\n this._projection2 = \"ortho\";\n this._projMatrix1 = camera.projMatrix.slice();\n this._projMatrix2 = camera.ortho.matrix.slice();\n camera.projection = \"customProjection\";\n }\n\n if (params.projection === \"perspective\" && camera.projection !== \"perspective\") {\n this._projection2 = \"perspective\";\n this._projMatrix1 = camera.projMatrix.slice();\n this._projMatrix2 = camera.perspective.matrix.slice();\n camera.projection = \"customProjection\";\n }\n } else {\n this._projection2 = null;\n }\n\n this.fire(\"started\", params, true);\n\n this._time1 = Date.now();\n this._time2 = this._time1 + (params.duration ? params.duration * 1000 : this._duration);\n\n this._flying = true; // False as soon as we stop\n\n core.scheduleTask(this._update, this);\n }\n\n /**\n * Jumps the {@link Scene}'s {@link Camera} to the given target.\n *\n * * When the target is a boundary, this CameraFlightAnimation will position the {@link Camera} at where the target fills most of the canvas.\n * * When the target is an explicit {@link Camera} position, given as ````eye````, ````look```` and ````up```` vectors, then this CameraFlightAnimation will jump the {@link Camera} to that target.\n *\n * @param {*|Component} params Either a parameters object or a {@link Component} subtype that has a World-space AABB.\n * @param {Number} [params.arc=0] Factor in range [0..1] indicating how much the {@link Camera#eye} will swing away from its {@link Camera#look} as it flies to the target.\n * @param {Number|String|Component} [params.component] ID or instance of a component to fly to.\n * @param {Number[]} [params.aabb] World-space axis-aligned bounding box (AABB) target to fly to.\n * @param {Number[]} [params.eye] Position to fly the eye position to.\n * @param {Number[]} [params.look] Position to fly the look position to.\n * @param {Number[]} [params.up] Position to fly the up vector to.\n * @param {String} [params.projection] Projection type to transition into. Can be any of the values of {@link Camera.projection}.\n * @param {Number} [params.fitFOV] How much of field-of-view, in degrees, that a target {@link Entity} or its AABB should fill the canvas on arrival. Overrides {@link CameraFlightAnimation#fitFOV}.\n * @param {Boolean} [params.fit] Whether to fit the target to the view volume. Overrides {@link CameraFlightAnimation#fit}.\n */\n jumpTo(params) {\n this._jumpTo(params);\n }\n\n _jumpTo(params) {\n\n if (this._flying) {\n this.stop();\n }\n\n const camera = this.scene.camera;\n\n var aabb;\n var componentId;\n var newEye;\n var newLook;\n var newUp;\n\n if (params.aabb) { // Boundary3D\n aabb = params.aabb;\n\n } else if (params.length === 6) { // AABB\n aabb = params;\n\n } else if (params.eye || params.look || params.up) { // Camera pose\n newEye = params.eye;\n newLook = params.look;\n newUp = params.up;\n\n } else { // Argument must be an instance or ID of a Component (subtype)\n\n let component = params;\n\n if (utils.isNumeric(component) || utils.isString(component)) {\n componentId = component;\n component = this.scene.components[componentId];\n if (!component) {\n this.error(\"Component not found: \" + utils.inQuotes(componentId));\n return;\n }\n }\n aabb = component.aabb || this.scene.aabb;\n }\n\n const poi = params.poi;\n\n if (aabb) {\n\n if (aabb[3] <= aabb[0] || aabb[4] <= aabb[1] || aabb[5] <= aabb[2]) { // Don't fly to an empty boundary\n return;\n }\n\n var diag = poi ? math.getAABB3DiagPoint(aabb, poi) : math.getAABB3Diag(aabb);\n\n newLook = poi || math.getAABB3Center(aabb, newLook);\n\n if (this._trail) {\n math.subVec3(camera.look, newLook, newLookEyeVec);\n } else {\n math.subVec3(camera.eye, camera.look, newLookEyeVec);\n }\n\n math.normalizeVec3(newLookEyeVec);\n let dist;\n const fit = (params.fit !== undefined) ? params.fit : this._fit;\n\n if (fit) {\n dist = Math.abs((diag) / Math.tan((params.fitFOV || this._fitFOV) * math.DEGTORAD));\n\n } else {\n dist = math.lenVec3(math.subVec3(camera.eye, camera.look, tempVec3));\n }\n\n math.mulVec3Scalar(newLookEyeVec, dist);\n\n camera.eye = math.addVec3(newLook, newLookEyeVec, tempVec3);\n camera.look = newLook;\n\n this.scene.camera.ortho.scale = diag * 1.1;\n\n } else if (newEye || newLook || newUp) {\n\n if (newEye) {\n camera.eye = newEye;\n }\n if (newLook) {\n camera.look = newLook;\n }\n if (newUp) {\n camera.up = newUp;\n }\n }\n\n if (params.projection) {\n camera.projection = params.projection;\n }\n }\n\n _update() {\n if (!this._flying) {\n return;\n }\n const time = Date.now();\n let t = (time - this._time1) / (this._time2 - this._time1);\n const stopping = (t >= 1);\n\n if (t > 1) {\n t = 1;\n }\n\n const tFlight = this.easing ? CameraFlightAnimation._ease(t, 0, 1, 1) : t;\n const camera = this.scene.camera;\n\n if (this._flyingEye || this._flyingLook) {\n\n if (this._flyingEye) {\n math.subVec3(camera.eye, camera.look, newLookEyeVec);\n camera.eye = math.lerpVec3(tFlight, 0, 1, this._eye1, this._eye2, newEye);\n camera.look = math.subVec3(newEye, newLookEyeVec, newLook);\n } else if (this._flyingLook) {\n camera.look = math.lerpVec3(tFlight, 0, 1, this._look1, this._look2, newLook);\n camera.up = math.lerpVec3(tFlight, 0, 1, this._up1, this._up2, newUp);\n }\n\n } else if (this._flyingEyeLookUp) {\n\n camera.eye = math.lerpVec3(tFlight, 0, 1, this._eye1, this._eye2, newEye);\n camera.look = math.lerpVec3(tFlight, 0, 1, this._look1, this._look2, newLook);\n camera.up = math.lerpVec3(tFlight, 0, 1, this._up1, this._up2, newUp);\n }\n\n if (this._projection2) {\n const tProj = (this._projection2 === \"ortho\") ? CameraFlightAnimation._easeOutExpo(t, 0, 1, 1) : CameraFlightAnimation._easeInCubic(t, 0, 1, 1);\n camera.customProjection.matrix = math.lerpMat4(tProj, 0, 1, this._projMatrix1, this._projMatrix2);\n\n } else {\n camera.ortho.scale = this._orthoScale1 + (t * (this._orthoScale2 - this._orthoScale1));\n }\n\n if (stopping) {\n camera.ortho.scale = this._orthoScale2;\n this.stop();\n return;\n }\n core.scheduleTask(this._update, this); // Keep flying\n }\n\n static _ease(t, b, c, d) { // Quadratic easing out - decelerating to zero velocity http://gizma.com/easing\n t /= d;\n return -c * t * (t - 2) + b;\n }\n\n static _easeInCubic(t, b, c, d) {\n t /= d;\n return c * t * t * t + b;\n }\n\n static _easeOutExpo(t, b, c, d) {\n return c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n /**\n * Stops an earlier flyTo, fires arrival callback.\n */\n stop() {\n if (!this._flying) {\n return;\n }\n this._flying = false;\n this._time1 = null;\n this._time2 = null;\n if (this._projection2) {\n this.scene.camera.projection = this._projection2;\n }\n const callback = this._callback;\n if (callback) {\n this._callback = null;\n if (this._callbackScope) {\n callback.call(this._callbackScope);\n } else {\n callback();\n }\n }\n this.fire(\"stopped\", true, true);\n }\n\n /**\n * Cancels an earlier flyTo without calling the arrival callback.\n */\n cancel() {\n if (!this._flying) {\n return;\n }\n this._flying = false;\n this._time1 = null;\n this._time2 = null;\n if (this._callback) {\n this._callback = null;\n }\n this.fire(\"canceled\", true, true);\n }\n\n /**\n * Sets the flight duration, in seconds, when calling {@link CameraFlightAnimation#flyTo}.\n *\n * Stops any flight currently in progress.\n *\n * default value is ````0.5````.\n *\n * @param {Number} value New duration value.\n */\n set duration(value) {\n this._duration = value ? (value * 1000.0) : 500;\n this.stop();\n }\n\n /**\n * Gets the flight duration, in seconds, when calling {@link CameraFlightAnimation#flyTo}.\n *\n * default value is ````0.5````.\n *\n * @returns {Number} New duration value.\n */\n get duration() {\n return this._duration / 1000.0;\n }\n\n /**\n * Sets if, when CameraFlightAnimation is flying to a boundary, it will always adjust the distance between the\n * {@link Camera#eye} and {@link Camera#look} so as to ensure that the target boundary is always filling the view volume.\n *\n * When false, the eye will remain at its current distance from the look position.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} value Set ````true```` to activate this behaviour.\n */\n set fit(value) {\n this._fit = value !== false;\n }\n\n /**\n * Gets if, when CameraFlightAnimation is flying to a boundary, it will always adjust the distance between the\n * {@link Camera#eye} and {@link Camera#look} so as to ensure that the target boundary is always filling the view volume.\n *\n * When false, the eye will remain at its current distance from the look position.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} value Set ````true```` to activate this behaviour.\n */\n get fit() {\n return this._fit;\n }\n\n /**\n * Sets how much of the perspective field-of-view, in degrees, that a target {@link Entity#aabb} should\n * fill the canvas when calling {@link CameraFlightAnimation#flyTo} or {@link CameraFlightAnimation#jumpTo}.\n *\n * Default value is ````45````.\n *\n * @param {Number} value New FOV value.\n */\n set fitFOV(value) {\n this._fitFOV = value || 45;\n }\n\n /**\n * Gets how much of the perspective field-of-view, in degrees, that a target {@link Entity#aabb} should\n * fill the canvas when calling {@link CameraFlightAnimation#flyTo} or {@link CameraFlightAnimation#jumpTo}.\n *\n * Default value is ````45````.\n *\n * @returns {Number} Current FOV value.\n */\n get fitFOV() {\n return this._fitFOV;\n }\n\n /**\n * Sets if this CameraFlightAnimation to point the {@link Camera}\n * in the direction that it is travelling when flying to a target after calling {@link CameraFlightAnimation#flyTo}.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} value Set ````true```` to activate trailing behaviour.\n */\n set trail(value) {\n this._trail = !!value;\n }\n\n /**\n * Gets if this CameraFlightAnimation points the {@link Camera}\n * in the direction that it is travelling when flying to a target after calling {@link CameraFlightAnimation#flyTo}.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} True if trailing behaviour is active.\n */\n get trail() {\n return this._trail;\n }\n\n /**\n * @private\n */\n destroy() {\n this.stop();\n super.destroy();\n }\n}\n\nexport {CameraFlightAnimation};\n", @@ -58301,7 +58829,7 @@ "lineNumber": 1 }, { - "__docId__": 2978, + "__docId__": 2996, "kind": "variable", "name": "tempVec3", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -58322,7 +58850,7 @@ "ignore": true }, { - "__docId__": 2979, + "__docId__": 2997, "kind": "variable", "name": "newLook", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -58343,7 +58871,7 @@ "ignore": true }, { - "__docId__": 2980, + "__docId__": 2998, "kind": "variable", "name": "newEye", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -58364,7 +58892,7 @@ "ignore": true }, { - "__docId__": 2981, + "__docId__": 2999, "kind": "variable", "name": "newUp", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -58385,7 +58913,7 @@ "ignore": true }, { - "__docId__": 2982, + "__docId__": 3000, "kind": "variable", "name": "newLookEyeVec", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -58406,7 +58934,7 @@ "ignore": true }, { - "__docId__": 2983, + "__docId__": 3001, "kind": "class", "name": "CameraFlightAnimation", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -58424,7 +58952,7 @@ ] }, { - "__docId__": 2984, + "__docId__": 3002, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58443,7 +58971,7 @@ } }, { - "__docId__": 2985, + "__docId__": 3003, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58463,7 +58991,7 @@ "ignore": true }, { - "__docId__": 2986, + "__docId__": 3004, "kind": "member", "name": "_look1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58481,7 +59009,7 @@ } }, { - "__docId__": 2987, + "__docId__": 3005, "kind": "member", "name": "_eye1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58499,7 +59027,7 @@ } }, { - "__docId__": 2988, + "__docId__": 3006, "kind": "member", "name": "_up1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58517,7 +59045,7 @@ } }, { - "__docId__": 2989, + "__docId__": 3007, "kind": "member", "name": "_look2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58535,7 +59063,7 @@ } }, { - "__docId__": 2990, + "__docId__": 3008, "kind": "member", "name": "_eye2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58553,7 +59081,7 @@ } }, { - "__docId__": 2991, + "__docId__": 3009, "kind": "member", "name": "_up2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58571,7 +59099,7 @@ } }, { - "__docId__": 2992, + "__docId__": 3010, "kind": "member", "name": "_orthoScale1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58589,7 +59117,7 @@ } }, { - "__docId__": 2993, + "__docId__": 3011, "kind": "member", "name": "_orthoScale2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58607,7 +59135,7 @@ } }, { - "__docId__": 2994, + "__docId__": 3012, "kind": "member", "name": "_flying", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58625,7 +59153,7 @@ } }, { - "__docId__": 2995, + "__docId__": 3013, "kind": "member", "name": "_flyEyeLookUp", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58643,7 +59171,7 @@ } }, { - "__docId__": 2996, + "__docId__": 3014, "kind": "member", "name": "_flyingEye", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58661,7 +59189,7 @@ } }, { - "__docId__": 2997, + "__docId__": 3015, "kind": "member", "name": "_flyingLook", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58679,7 +59207,7 @@ } }, { - "__docId__": 2998, + "__docId__": 3016, "kind": "member", "name": "_callback", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58697,7 +59225,7 @@ } }, { - "__docId__": 2999, + "__docId__": 3017, "kind": "member", "name": "_callbackScope", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58715,7 +59243,7 @@ } }, { - "__docId__": 3000, + "__docId__": 3018, "kind": "member", "name": "_time1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58733,7 +59261,7 @@ } }, { - "__docId__": 3001, + "__docId__": 3019, "kind": "member", "name": "_time2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58751,7 +59279,7 @@ } }, { - "__docId__": 3002, + "__docId__": 3020, "kind": "member", "name": "easing", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58768,7 +59296,7 @@ } }, { - "__docId__": 3007, + "__docId__": 3025, "kind": "method", "name": "flyTo", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58933,7 +59461,7 @@ "return": null }, { - "__docId__": 3011, + "__docId__": 3029, "kind": "member", "name": "_flyingEyeLookUp", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58951,7 +59479,7 @@ } }, { - "__docId__": 3022, + "__docId__": 3040, "kind": "member", "name": "_projection2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58969,7 +59497,7 @@ } }, { - "__docId__": 3023, + "__docId__": 3041, "kind": "member", "name": "_projMatrix1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -58987,7 +59515,7 @@ } }, { - "__docId__": 3024, + "__docId__": 3042, "kind": "member", "name": "_projMatrix2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59005,7 +59533,7 @@ } }, { - "__docId__": 3032, + "__docId__": 3050, "kind": "method", "name": "jumpTo", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59126,7 +59654,7 @@ "return": null }, { - "__docId__": 3033, + "__docId__": 3051, "kind": "method", "name": "_jumpTo", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59150,7 +59678,7 @@ "return": null }, { - "__docId__": 3034, + "__docId__": 3052, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59167,7 +59695,7 @@ "return": null }, { - "__docId__": 3035, + "__docId__": 3053, "kind": "method", "name": "_ease", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59213,7 +59741,7 @@ } }, { - "__docId__": 3036, + "__docId__": 3054, "kind": "method", "name": "_easeInCubic", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59259,7 +59787,7 @@ } }, { - "__docId__": 3037, + "__docId__": 3055, "kind": "method", "name": "_easeOutExpo", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59305,7 +59833,7 @@ } }, { - "__docId__": 3038, + "__docId__": 3056, "kind": "method", "name": "stop", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59320,7 +59848,7 @@ "return": null }, { - "__docId__": 3043, + "__docId__": 3061, "kind": "method", "name": "cancel", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59335,7 +59863,7 @@ "return": null }, { - "__docId__": 3048, + "__docId__": 3066, "kind": "set", "name": "duration", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59360,7 +59888,7 @@ ] }, { - "__docId__": 3049, + "__docId__": 3067, "kind": "member", "name": "_duration", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59378,7 +59906,7 @@ } }, { - "__docId__": 3050, + "__docId__": 3068, "kind": "get", "name": "duration", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59410,7 +59938,7 @@ } }, { - "__docId__": 3051, + "__docId__": 3069, "kind": "set", "name": "fit", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59435,7 +59963,7 @@ ] }, { - "__docId__": 3052, + "__docId__": 3070, "kind": "member", "name": "_fit", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59453,7 +59981,7 @@ } }, { - "__docId__": 3053, + "__docId__": 3071, "kind": "get", "name": "fit", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59485,7 +60013,7 @@ } }, { - "__docId__": 3054, + "__docId__": 3072, "kind": "set", "name": "fitFOV", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59510,7 +60038,7 @@ ] }, { - "__docId__": 3055, + "__docId__": 3073, "kind": "member", "name": "_fitFOV", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59528,7 +60056,7 @@ } }, { - "__docId__": 3056, + "__docId__": 3074, "kind": "get", "name": "fitFOV", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59560,7 +60088,7 @@ } }, { - "__docId__": 3057, + "__docId__": 3075, "kind": "set", "name": "trail", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59585,7 +60113,7 @@ ] }, { - "__docId__": 3058, + "__docId__": 3076, "kind": "member", "name": "_trail", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59603,7 +60131,7 @@ } }, { - "__docId__": 3059, + "__docId__": 3077, "kind": "get", "name": "trail", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59635,7 +60163,7 @@ } }, { - "__docId__": 3060, + "__docId__": 3078, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -59651,7 +60179,7 @@ "return": null }, { - "__docId__": 3061, + "__docId__": 3079, "kind": "file", "name": "src/viewer/scene/camera/CameraPath.js", "content": "import {Component} from \"../Component.js\"\nimport {SplineCurve} from \"../paths/SplineCurve.js\"\nimport {math} from \"../math/math.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @desc Defines a sequence of frames along which a {@link CameraPathAnimation} can animate a {@link Camera}.\n *\n * See {@link CameraPathAnimation} for usage.\n */\nclass CameraPath extends Component {\n\n /**\n * Returns \"CameraPath\".\n *\n * @private\n *\n * @returns {string} \"CameraPath\"\n */\n get type() {\n return \"CameraPath\"\n }\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this CameraPath as well.\n * @param [cfg] {*} Configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {{t:Number, eye:Object, look:Object, up: Object}[]} [cfg.frames] Initial sequence of frames.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._frames = [];\n\n this._eyeCurve = new SplineCurve(this);\n this._lookCurve = new SplineCurve(this);\n this._upCurve = new SplineCurve(this);\n\n if (cfg.frames) {\n this.addFrames(cfg.frames);\n this.smoothFrameTimes(1);\n }\n }\n\n /**\n * Gets the camera frames in this CameraPath.\n *\n * @returns {{t:Number, eye:Object, look:Object, up: Object}[]} The frames on this CameraPath.\n */\n get frames() {\n return this._frames;\n }\n\n /**\n * Gets the {@link SplineCurve} along which {@link Camera#eye} travels.\n * @returns {SplineCurve} The SplineCurve for {@link Camera#eye}.\n */\n get eyeCurve() {\n return this._eyeCurve;\n }\n\n /**\n * Gets the {@link SplineCurve} along which {@link Camera#look} travels.\n * @returns {SplineCurve} The SplineCurve for {@link Camera#look}.\n */\n get lookCurve() {\n return this._lookCurve;\n }\n\n /**\n * Gets the {@link SplineCurve} along which {@link Camera#up} travels.\n * @returns {SplineCurve} The SplineCurve for {@link Camera#up}.\n */\n get upCurve() {\n return this._upCurve;\n }\n\n /**\n * Adds a frame to this CameraPath, given as the current position of the {@link Camera}.\n *\n * @param {Number} t Time instant for the new frame.\n */\n saveFrame(t) {\n const camera = this.scene.camera;\n this.addFrame(t, camera.eye, camera.look, camera.up);\n }\n\n /**\n * Adds a frame to this CameraPath, specified as values for eye, look and up vectors at a given time instant.\n *\n * @param {Number} t Time instant for the new frame.\n * @param {Number[]} eye A three-element vector specifying the eye position for the new frame.\n * @param {Number[]} look A three-element vector specifying the look position for the new frame.\n * @param {Number[]} up A three-element vector specifying the up vector for the new frame.\n */\n addFrame(t, eye, look, up) {\n const frame = {\n t: t,\n eye: eye.slice(0),\n look: look.slice(0),\n up: up.slice(0)\n };\n this._frames.push(frame);\n this._eyeCurve.points.push(frame.eye);\n this._lookCurve.points.push(frame.look);\n this._upCurve.points.push(frame.up);\n }\n\n /**\n * Adds multiple frames to this CameraPath, each frame specified as a set of values for eye, look and up vectors at a given time instant.\n *\n * @param {{t:Number, eye:Object, look:Object, up: Object}[]} frames Frames to add to this CameraPath.\n */\n addFrames(frames) {\n let frame;\n for (let i = 0, len = frames.length; i < len; i++) {\n frame = frames[i];\n this.addFrame(frame.t || 0, frame.eye, frame.look, frame.up);\n }\n }\n\n /**\n * Sets the position of the {@link Camera} to a position interpolated within this CameraPath at the given time instant.\n *\n * @param {Number} t Time instant.\n */\n loadFrame(t) {\n\n const camera = this.scene.camera;\n\n t = t / (this._frames[this._frames.length - 1].t - this._frames[0].t);\n t = t < 0.0 ? 0.0 : (t > 1.0 ? 1.0 : t);\n\n camera.eye = this._eyeCurve.getPoint(t, tempVec3a);\n camera.look = this._lookCurve.getPoint(t, tempVec3a);\n camera.up = this._upCurve.getPoint(t, tempVec3a);\n }\n\n /**\n * Gets eye, look and up vectors on this CameraPath at a given instant.\n *\n * @param {Number} t Time instant.\n * @param {Number[]} eye The eye position to update.\n * @param {Number[]} look The look position to update.\n * @param {Number[]} up The up vector to update.\n */\n sampleFrame(t, eye, look, up) {\n t = t < 0.0 ? 0.0 : (t > 1.0 ? 1.0 : t);\n this._eyeCurve.getPoint(t, eye);\n this._lookCurve.getPoint(t, look);\n this._upCurve.getPoint(t, up);\n }\n\n /**\n * Given a total duration (in seconds) for this CameraPath, recomputes the time instant at each frame so that,\n * when animated by {@link CameraPathAnimation}, the {@link Camera} will move along the path at a constant rate.\n *\n * @param {Number} duration The total duration for this CameraPath.\n */\n smoothFrameTimes(duration) {\n const numFrames = this._frames.length;\n if (numFrames === 0) {\n return;\n }\n const vec = math.vec3();\n var totalLen = 0;\n this._frames[0].t = 0;\n const lens = [];\n for (let i = 1, len = this._frames.length; i < len; i++) {\n var lenVec = math.lenVec3(math.subVec3(this._frames[i].eye, this._frames[i - 1].eye, vec));\n lens[i] = lenVec;\n totalLen += lenVec;\n }\n for (let i = 1, len = this._frames.length; i < len; i++) {\n const interFrameRate = (lens[i] / totalLen) * duration;\n this._frames[i].t = this._frames[i-1].t + interFrameRate;\n }\n }\n\n /**\n * Removes all frames from this CameraPath.\n */\n clearFrames() {\n this._frames = [];\n this._eyeCurve.points = [];\n this._lookCurve.points = [];\n this._upCurve.points = [];\n }\n}\n\nexport {CameraPath}", @@ -59662,7 +60190,7 @@ "lineNumber": 1 }, { - "__docId__": 3062, + "__docId__": 3080, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/camera/CameraPath.js", @@ -59683,7 +60211,7 @@ "ignore": true }, { - "__docId__": 3063, + "__docId__": 3081, "kind": "class", "name": "CameraPath", "memberof": "src/viewer/scene/camera/CameraPath.js", @@ -59701,7 +60229,7 @@ ] }, { - "__docId__": 3064, + "__docId__": 3082, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59734,7 +60262,7 @@ } }, { - "__docId__": 3065, + "__docId__": 3083, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59795,7 +60323,7 @@ ] }, { - "__docId__": 3066, + "__docId__": 3084, "kind": "member", "name": "_frames", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59813,7 +60341,7 @@ } }, { - "__docId__": 3067, + "__docId__": 3085, "kind": "member", "name": "_eyeCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59831,7 +60359,7 @@ } }, { - "__docId__": 3068, + "__docId__": 3086, "kind": "member", "name": "_lookCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59849,7 +60377,7 @@ } }, { - "__docId__": 3069, + "__docId__": 3087, "kind": "member", "name": "_upCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59867,7 +60395,7 @@ } }, { - "__docId__": 3070, + "__docId__": 3088, "kind": "get", "name": "frames", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59899,7 +60427,7 @@ } }, { - "__docId__": 3071, + "__docId__": 3089, "kind": "get", "name": "eyeCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59931,7 +60459,7 @@ } }, { - "__docId__": 3072, + "__docId__": 3090, "kind": "get", "name": "lookCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59963,7 +60491,7 @@ } }, { - "__docId__": 3073, + "__docId__": 3091, "kind": "get", "name": "upCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -59995,7 +60523,7 @@ } }, { - "__docId__": 3074, + "__docId__": 3092, "kind": "method", "name": "saveFrame", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -60021,7 +60549,7 @@ "return": null }, { - "__docId__": 3075, + "__docId__": 3093, "kind": "method", "name": "addFrame", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -60077,7 +60605,7 @@ "return": null }, { - "__docId__": 3076, + "__docId__": 3094, "kind": "method", "name": "addFrames", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -60103,7 +60631,7 @@ "return": null }, { - "__docId__": 3077, + "__docId__": 3095, "kind": "method", "name": "loadFrame", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -60129,7 +60657,7 @@ "return": null }, { - "__docId__": 3078, + "__docId__": 3096, "kind": "method", "name": "sampleFrame", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -60185,7 +60713,7 @@ "return": null }, { - "__docId__": 3079, + "__docId__": 3097, "kind": "method", "name": "smoothFrameTimes", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -60211,7 +60739,7 @@ "return": null }, { - "__docId__": 3080, + "__docId__": 3098, "kind": "method", "name": "clearFrames", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -60226,7 +60754,7 @@ "return": null }, { - "__docId__": 3082, + "__docId__": 3100, "kind": "file", "name": "src/viewer/scene/camera/CameraPathAnimation.js", "content": "import {Component} from \"../Component.js\"\nimport {CameraFlightAnimation} from \"./CameraFlightAnimation.js\"\n\n\n/**\n * @desc Animates the {@link Scene}'s's {@link Camera} along a {@link CameraPath}.\n *\n * ## Usage\n *\n * In the example below, we'll load a model using a {@link GLTFLoaderPlugin}, then animate a {@link Camera}\n * through the frames in a {@link CameraPath}.\n *\n * * [[Run this example](/examples/index.html#camera_CameraPathAnimation)]\n *\n * ````Javascript\n * import {Viewer, GLTFLoaderPlugin, CameraPath, CameraPathAnimation} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [124.86756896972656, -93.50288391113281, 173.2632598876953];\n * viewer.camera.look = [102.14186096191406, -90.24193572998047, 173.4224395751953];\n * viewer.camera.up = [0.23516440391540527, 0.9719591736793518, -0.0016466031083837152];\n *\n * // Load model\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/modern_office/scene.gltf\",\n * edges: true,\n * edgeThreshold: 20,\n * xrayed: false\n * });\n *\n * // Create a CameraPath\n *\n * var cameraPath = new CameraPath(viewer.scene, {\n * frames: [\n * {\n * t: 0,\n * eye: [124.86, -93.50, 173.26],\n * look: [102.14, -90.24, 173.42],\n * up: [0.23, 0.97, -0.00]\n * },\n * {\n * t: 1,\n * eye: [79.75, -85.98, 226.57],\n * look: [99.24, -84.11, 238.56],\n * up: [-0.14, 0.98, -0.09]\n * },\n * // Rest of the frames omitted for brevity\n * ]\n * });\n *\n * // Create a CameraPathAnimation to play our CameraPath\n *\n * var cameraPathAnimation = new CameraPathAnimation(viewer.scene, {\n * cameraPath: cameraPath,\n * playingRate: 0.2 // Playing 0.2 time units per second\n * });\n *\n * // Once model loaded, start playing after a couple of seconds delay\n *\n * model.on(\"loaded\", function () {\n * setTimeout(function () {\n * cameraPathAnimation.play(0); // Play from the beginning of the CameraPath\n * }, 2000);\n * });\n * ````\n */\nclass CameraPathAnimation extends Component {\n\n /**\n * Returns \"CameraPathAnimation\".\n *\n * @private\n * @returns {string} \"CameraPathAnimation\"\n */\n get type() {\n return \"CameraPathAnimation\"\n }\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this CameraPathAnimation as well.\n * @param {*} [cfg] Configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {CameraPath} [cfg.eyeCurve] A {@link CameraPath} that defines the path of a {@link Camera}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._cameraFlightAnimation = new CameraFlightAnimation(this);\n this._t = 0;\n this.state = CameraPathAnimation.SCRUBBING;\n this._playingFromT = 0;\n this._playingToT = 0;\n this._playingRate = cfg.playingRate || 1.0;\n this._playingDir = 1.0;\n this._lastTime = null;\n\n this.cameraPath = cfg.cameraPath;\n\n this._tick = this.scene.on(\"tick\", this._updateT, this);\n }\n\n _updateT() {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const f = 0.002;\n let numFrames;\n let t;\n const time = performance.now();\n const elapsedSecs = (this._lastTime) ? (time - this._lastTime) * 0.001 : 0;\n this._lastTime = time;\n if (elapsedSecs === 0) {\n return;\n }\n switch (this.state) {\n case CameraPathAnimation.SCRUBBING:\n return;\n case CameraPathAnimation.PLAYING:\n this._t += this._playingRate * elapsedSecs;\n numFrames = this._cameraPath.frames.length;\n if (numFrames === 0 || (this._playingDir < 0 && this._t <= 0) || (this._playingDir > 0 && this._t >= this._cameraPath.frames[numFrames - 1].t)) {\n this.state = CameraPathAnimation.SCRUBBING;\n this._t = this._cameraPath.frames[numFrames - 1].t;\n this.fire(\"stopped\");\n return;\n }\n cameraPath.loadFrame(this._t);\n break;\n case CameraPathAnimation.PLAYING_TO:\n t = this._t + (this._playingRate * elapsedSecs * this._playingDir);\n if ((this._playingDir < 0 && t <= this._playingToT) || (this._playingDir > 0 && t >= this._playingToT)) {\n t = this._playingToT;\n this.state = CameraPathAnimation.SCRUBBING;\n this.fire(\"stopped\");\n }\n this._t = t;\n cameraPath.loadFrame(this._t);\n break;\n }\n }\n\n /*\n * @private\n */\n _ease(t, b, c, d) {\n t /= d;\n return -c * t * (t - 2) + b;\n }\n\n /**\n * Sets the {@link CameraPath} animated by this CameraPathAnimation.\n *\n @param {CameraPath} value The new CameraPath.\n */\n set cameraPath(value) {\n this._cameraPath = value;\n }\n\n /**\n * Gets the {@link CameraPath} animated by this CameraPathAnimation.\n *\n @returns {CameraPath} The CameraPath.\n */\n get cameraPath() {\n return this._cameraPath;\n }\n\n /**\n * Sets the rate at which the CameraPathAnimation animates the {@link Camera} along the {@link CameraPath}.\n *\n * @param {Number} value The amount of progress per second.\n */\n set rate(value) {\n this._playingRate = value;\n }\n\n /**\n * Gets the rate at which the CameraPathAnimation animates the {@link Camera} along the {@link CameraPath}.\n *\n * @returns {*|number} The current playing rate.\n */\n get rate() {\n return this._playingRate;\n }\n\n /**\n * Begins animating the {@link Camera} along CameraPathAnimation's {@link CameraPath} from the beginning.\n */\n play() {\n if (!this._cameraPath) {\n return;\n }\n this._lastTime = null;\n this.state = CameraPathAnimation.PLAYING;\n }\n\n /**\n * Begins animating the {@link Camera} along CameraPathAnimation's {@link CameraPath} from the given time.\n *\n * @param {Number} t Time instant.\n */\n playToT(t) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n this._playingFromT = this._t;\n this._playingToT = t;\n this._playingDir = (this._playingToT - this._playingFromT) < 0 ? -1 : 1;\n this._lastTime = null;\n this.state = CameraPathAnimation.PLAYING_TO;\n }\n\n /**\n * Animates the {@link Camera} along CameraPathAnimation's {@link CameraPath} to the given frame.\n *\n * @param {Number} frameIdx Index of the frame to play to.\n */\n playToFrame(frameIdx) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const frame = cameraPath.frames[frameIdx];\n if (!frame) {\n this.error(\"playToFrame - frame index out of range: \" + frameIdx);\n return;\n }\n this.playToT(frame.t);\n }\n\n /**\n * Flies the {@link Camera} directly to the given frame on the CameraPathAnimation's {@link CameraPath}.\n *\n * @param {Number} frameIdx Index of the frame to play to.\n * @param {Function} [ok] Callback to fire when playing is complete.\n */\n flyToFrame(frameIdx, ok) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const frame = cameraPath.frames[frameIdx];\n if (!frame) {\n this.error(\"flyToFrame - frame index out of range: \" + frameIdx);\n return;\n }\n this.state = CameraPathAnimation.SCRUBBING;\n this._cameraFlightAnimation.flyTo(frame, ok);\n }\n\n /**\n * Scrubs the {@link Camera} to the given time on the CameraPathAnimation's {@link CameraPath}.\n *\n * @param {Number} t Time instant.\n */\n scrubToT(t) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const camera = this.scene.camera;\n if (!camera) {\n return;\n }\n this._t = t;\n cameraPath.loadFrame(this._t);\n this.state = CameraPathAnimation.SCRUBBING;\n }\n\n /**\n * Scrubs the {@link Camera} to the given frame on the CameraPathAnimation's {@link CameraPath}.\n *\n * @param {Number} frameIdx Index of the frame to scrub to.\n */\n scrubToFrame(frameIdx) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const camera = this.scene.camera;\n if (!camera) {\n return;\n }\n const frame = cameraPath.frames[frameIdx];\n if (!frame) {\n this.error(\"playToFrame - frame index out of range: \" + frameIdx);\n return;\n }\n cameraPath.loadFrame(this._t);\n this.state = CameraPathAnimation.SCRUBBING;\n }\n\n /**\n * Stops playing this CameraPathAnimation.\n */\n stop() {\n this.state = CameraPathAnimation.SCRUBBING;\n this.fire(\"stopped\");\n }\n\n destroy() {\n super.destroy();\n this.scene.off(this._tick);\n }\n}\n\nCameraPathAnimation.STOPPED = 0;\nCameraPathAnimation.SCRUBBING = 1;\nCameraPathAnimation.PLAYING = 2;\nCameraPathAnimation.PLAYING_TO = 3;\n\nexport {CameraPathAnimation}", @@ -60237,7 +60765,7 @@ "lineNumber": 1 }, { - "__docId__": 3083, + "__docId__": 3101, "kind": "class", "name": "CameraPathAnimation", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js", @@ -60255,7 +60783,7 @@ ] }, { - "__docId__": 3084, + "__docId__": 3102, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60288,7 +60816,7 @@ } }, { - "__docId__": 3085, + "__docId__": 3103, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60349,7 +60877,7 @@ ] }, { - "__docId__": 3086, + "__docId__": 3104, "kind": "member", "name": "_cameraFlightAnimation", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60367,7 +60895,7 @@ } }, { - "__docId__": 3087, + "__docId__": 3105, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60385,7 +60913,7 @@ } }, { - "__docId__": 3088, + "__docId__": 3106, "kind": "member", "name": "state", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60402,7 +60930,7 @@ } }, { - "__docId__": 3089, + "__docId__": 3107, "kind": "member", "name": "_playingFromT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60420,7 +60948,7 @@ } }, { - "__docId__": 3090, + "__docId__": 3108, "kind": "member", "name": "_playingToT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60438,7 +60966,7 @@ } }, { - "__docId__": 3091, + "__docId__": 3109, "kind": "member", "name": "_playingRate", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60456,7 +60984,7 @@ } }, { - "__docId__": 3092, + "__docId__": 3110, "kind": "member", "name": "_playingDir", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60474,7 +61002,7 @@ } }, { - "__docId__": 3093, + "__docId__": 3111, "kind": "member", "name": "_lastTime", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60492,7 +61020,7 @@ } }, { - "__docId__": 3095, + "__docId__": 3113, "kind": "member", "name": "_tick", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60510,7 +61038,7 @@ } }, { - "__docId__": 3096, + "__docId__": 3114, "kind": "method", "name": "_updateT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60527,7 +61055,7 @@ "return": null }, { - "__docId__": 3103, + "__docId__": 3121, "kind": "method", "name": "_ease", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60573,7 +61101,7 @@ } }, { - "__docId__": 3104, + "__docId__": 3122, "kind": "set", "name": "cameraPath", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60598,7 +61126,7 @@ ] }, { - "__docId__": 3105, + "__docId__": 3123, "kind": "member", "name": "_cameraPath", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60616,7 +61144,7 @@ } }, { - "__docId__": 3106, + "__docId__": 3124, "kind": "get", "name": "cameraPath", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60648,7 +61176,7 @@ } }, { - "__docId__": 3107, + "__docId__": 3125, "kind": "set", "name": "rate", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60673,7 +61201,7 @@ ] }, { - "__docId__": 3109, + "__docId__": 3127, "kind": "get", "name": "rate", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60706,7 +61234,7 @@ } }, { - "__docId__": 3110, + "__docId__": 3128, "kind": "method", "name": "play", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60721,7 +61249,7 @@ "return": null }, { - "__docId__": 3113, + "__docId__": 3131, "kind": "method", "name": "playToT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60747,7 +61275,7 @@ "return": null }, { - "__docId__": 3119, + "__docId__": 3137, "kind": "method", "name": "playToFrame", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60773,7 +61301,7 @@ "return": null }, { - "__docId__": 3120, + "__docId__": 3138, "kind": "method", "name": "flyToFrame", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60809,7 +61337,7 @@ "return": null }, { - "__docId__": 3122, + "__docId__": 3140, "kind": "method", "name": "scrubToT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60835,7 +61363,7 @@ "return": null }, { - "__docId__": 3125, + "__docId__": 3143, "kind": "method", "name": "scrubToFrame", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60861,7 +61389,7 @@ "return": null }, { - "__docId__": 3127, + "__docId__": 3145, "kind": "method", "name": "stop", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60876,7 +61404,7 @@ "return": null }, { - "__docId__": 3129, + "__docId__": 3147, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -60892,7 +61420,7 @@ "return": null }, { - "__docId__": 3130, + "__docId__": 3148, "kind": "file", "name": "src/viewer/scene/camera/CustomProjection.js", "content": "import {math} from '../math/math.js';\nimport {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\n\n/**\n * @desc Defines a custom projection for a {@link Camera} as a custom 4x4 matrix..\n *\n * Located at {@link Camera#customProjection}.\n */\nclass CustomProjection extends Component {\n\n /**\n * @private\n */\n get type() {\n return \"CustomProjection\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(camera, cfg = {}) {\n\n super(camera, cfg);\n\n /**\n * The Camera this CustomProjection belongs to.\n *\n * @property camera\n * @type {Camera}\n * @final\n */\n this.camera = camera;\n\n this._state = new RenderState({\n matrix: math.mat4(),\n inverseMatrix: math.mat4(),\n transposedMatrix: math.mat4()\n });\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = false;\n\n this.matrix = cfg.matrix;\n }\n\n /**\n * Sets the CustomProjection's projection transform matrix.\n *\n * Fires a \"matrix\" event on change.\n\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @param {Number[]} matrix New value for the CustomProjection's matrix.\n */\n set matrix(matrix) {\n this._state.matrix.set(matrix || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n this.glRedraw();\n this.fire(\"matrix\", this._state.matrix);\n }\n\n /**\n * Gets the CustomProjection's projection transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @return {Number[]} New value for the CustomProjection's matrix.\n */\n get matrix() {\n return this._state.matrix;\n }\n\n /**\n * Gets the inverse of {@link CustomProjection#matrix}.\n *\n * @returns {Number[]} The inverse of {@link CustomProjection#matrix}.\n */\n get inverseMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._inverseMatrixDirty) {\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n this._inverseMatrixDirty = false;\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the transpose of {@link CustomProjection#matrix}.\n *\n * @returns {Number[]} The transpose of {@link CustomProjection#matrix}.\n */\n get transposedMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._transposedMatrixDirty) {\n math.transposeMat4(this._state.matrix, this._state.transposedMatrix);\n this._transposedMatrixDirty = false;\n }\n return this._state.transposedMatrix;\n }\n\n /**\n * Un-projects the given Canvas-space coordinates, using this CustomProjection.\n *\n * @param {Number[]} canvasPos Inputs 2D Canvas-space coordinates.\n * @param {Number} screenZ Inputs Screen-space Z coordinate.\n * @param {Number[]} screenPos Outputs 3D Screen/Clip-space coordinates.\n * @param {Number[]} viewPos Outputs un-projected 3D View-space coordinates.\n * @param {Number[]} worldPos Outputs un-projected 3D World-space coordinates.\n */\n unproject(canvasPos, screenZ, screenPos, viewPos, worldPos) {\n\n const canvas = this.scene.canvas.canvas;\n\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n\n screenPos[0] = (canvasPos[0] - halfCanvasWidth) / halfCanvasWidth;\n screenPos[1] = (canvasPos[1] - halfCanvasHeight) / halfCanvasHeight;\n screenPos[2] = screenZ;\n screenPos[3] = 1.0;\n\n math.mulMat4v4(this.inverseMatrix, screenPos, viewPos);\n math.mulVec3Scalar(viewPos, 1.0 / viewPos[3]);\n\n viewPos[3] = 1.0;\n viewPos[1] *= -1;\n\n math.mulMat4v4(this.camera.inverseViewMatrix, viewPos, worldPos);\n\n return worldPos;\n }\n\n /** @private\n *\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {CustomProjection};", @@ -60903,7 +61431,7 @@ "lineNumber": 1 }, { - "__docId__": 3131, + "__docId__": 3149, "kind": "class", "name": "CustomProjection", "memberof": "src/viewer/scene/camera/CustomProjection.js", @@ -60921,7 +61449,7 @@ ] }, { - "__docId__": 3132, + "__docId__": 3150, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -60940,7 +61468,7 @@ } }, { - "__docId__": 3133, + "__docId__": 3151, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -60960,7 +61488,7 @@ "ignore": true }, { - "__docId__": 3134, + "__docId__": 3152, "kind": "member", "name": "camera", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -60997,7 +61525,7 @@ } }, { - "__docId__": 3135, + "__docId__": 3153, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61015,7 +61543,7 @@ } }, { - "__docId__": 3136, + "__docId__": 3154, "kind": "member", "name": "_inverseMatrixDirty", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61033,7 +61561,7 @@ } }, { - "__docId__": 3137, + "__docId__": 3155, "kind": "member", "name": "_transposedMatrixDirty", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61051,7 +61579,7 @@ } }, { - "__docId__": 3139, + "__docId__": 3157, "kind": "set", "name": "matrix", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61076,7 +61604,7 @@ ] }, { - "__docId__": 3142, + "__docId__": 3160, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61102,7 +61630,7 @@ } }, { - "__docId__": 3143, + "__docId__": 3161, "kind": "get", "name": "inverseMatrix", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61134,7 +61662,7 @@ } }, { - "__docId__": 3145, + "__docId__": 3163, "kind": "get", "name": "transposedMatrix", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61166,7 +61694,7 @@ } }, { - "__docId__": 3147, + "__docId__": 3165, "kind": "method", "name": "unproject", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61236,7 +61764,7 @@ } }, { - "__docId__": 3148, + "__docId__": 3166, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -61252,7 +61780,7 @@ "return": null }, { - "__docId__": 3149, + "__docId__": 3167, "kind": "file", "name": "src/viewer/scene/camera/Frustum.js", "content": "import {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {math} from '../math/math.js';\n\n/**\n * @desc Defines its {@link Camera}'s perspective projection as a frustum-shaped view volume.\n *\n * * Located at {@link Camera#frustum}.\n * * Allows to explicitly set the positions of the left, right, top, bottom, near and far planes, which is useful for asymmetrical view volumes, such as for stereo viewing.\n * * {@link Frustum#near} and {@link Frustum#far} specify the distances to the WebGL clipping planes.\n */\nclass Frustum extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Frustum\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(camera, cfg = {}) {\n\n super(camera, cfg);\n\n /**\n * The Camera this Frustum belongs to.\n *\n * @property camera\n * @type {Camera}\n * @final\n */\n this.camera = camera;\n\n this._state = new RenderState({\n matrix: math.mat4(),\n inverseMatrix: math.mat4(),\n transposedMatrix: math.mat4(),\n near: 0.1,\n far: 10000.0\n });\n\n this._left = -1.0;\n this._right = 1.0;\n this._bottom = -1.0;\n this._top = 1.0;\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n // Set component properties\n\n this.left = cfg.left;\n this.right = cfg.right;\n this.bottom = cfg.bottom;\n this.top = cfg.top;\n this.near = cfg.near;\n this.far = cfg.far;\n }\n\n _update() {\n\n math.frustumMat4(this._left, this._right, this._bottom, this._top, this._state.near, this._state.far, this._state.matrix);\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this.glRedraw();\n\n this.fire(\"matrix\", this._state.matrix);\n }\n\n /**\n * Sets the position of the Frustum's left plane on the View-space X-axis.\n *\n * Fires a {@link Frustum#left:emits} emits on change.\n *\n * @param {Number} value New left frustum plane position.\n */\n set left(value) {\n this._left = (value !== undefined && value !== null) ? value : -1.0;\n this._needUpdate(0);\n this.fire(\"left\", this._left);\n }\n\n /**\n * Gets the position of the Frustum's left plane on the View-space X-axis.\n *\n * @return {Number} Left frustum plane position.\n */\n get left() {\n return this._left;\n }\n\n /**\n * Sets the position of the Frustum's right plane on the View-space X-axis.\n *\n * Fires a {@link Frustum#right:emits} emits on change.\n *\n * @param {Number} value New right frustum plane position.\n */\n set right(value) {\n this._right = (value !== undefined && value !== null) ? value : 1.0;\n this._needUpdate(0);\n this.fire(\"right\", this._right);\n }\n\n /**\n * Gets the position of the Frustum's right plane on the View-space X-axis.\n *\n * Fires a {@link Frustum#right:emits} emits on change.\n *\n * @return {Number} Right frustum plane position.\n */\n get right() {\n return this._right;\n }\n\n /**\n * Sets the position of the Frustum's top plane on the View-space Y-axis.\n *\n * Fires a {@link Frustum#top:emits} emits on change.\n *\n * @param {Number} value New top frustum plane position.\n */\n set top(value) {\n this._top = (value !== undefined && value !== null) ? value : 1.0;\n this._needUpdate(0);\n this.fire(\"top\", this._top);\n }\n\n /**\n * Gets the position of the Frustum's top plane on the View-space Y-axis.\n *\n * Fires a {@link Frustum#top:emits} emits on change.\n *\n * @return {Number} Top frustum plane position.\n */\n get top() {\n return this._top;\n }\n\n /**\n * Sets the position of the Frustum's bottom plane on the View-space Y-axis.\n *\n * Fires a {@link Frustum#bottom:emits} emits on change.\n *\n * @emits {\"bottom\"} event with the value of this property whenever it changes.\n *\n * @param {Number} value New bottom frustum plane position.\n */\n set bottom(value) {\n this._bottom = (value !== undefined && value !== null) ? value : -1.0;\n this._needUpdate(0);\n this.fire(\"bottom\", this._bottom);\n }\n\n /**\n * Gets the position of the Frustum's bottom plane on the View-space Y-axis.\n *\n * Fires a {@link Frustum#bottom:emits} emits on change.\n *\n * @return {Number} Bottom frustum plane position.\n */\n get bottom() {\n return this._bottom;\n }\n\n /**\n * Sets the position of the Frustum's near plane on the positive View-space Z-axis.\n *\n * Fires a {@link Frustum#near:emits} emits on change.\n *\n * Default value is ````0.1````.\n *\n * @param {Number} value New Frustum near plane position.\n */\n set near(value) {\n this._state.near = (value !== undefined && value !== null) ? value : 0.1;\n this._needUpdate(0);\n this.fire(\"near\", this._state.near);\n }\n\n /**\n * Gets the position of the Frustum's near plane on the positive View-space Z-axis.\n *\n * Fires a {@link Frustum#near:emits} emits on change.\n *\n * Default value is ````0.1````.\n *\n * @return {Number} Near frustum plane position.\n */\n get near() {\n return this._state.near;\n }\n\n /**\n * Sets the position of the Frustum's far plane on the positive View-space Z-axis.\n *\n * Fires a {@link Frustum#far:emits} emits on change.\n *\n * Default value is ````10000.0````.\n *\n * @param {Number} value New far frustum plane position.\n */\n set far(value) {\n this._state.far = (value !== undefined && value !== null) ? value : 10000.0;\n this._needUpdate(0);\n this.fire(\"far\", this._state.far);\n }\n\n /**\n * Gets the position of the Frustum's far plane on the positive View-space Z-axis.\n *\n * Default value is ````10000.0````.\n *\n * @return {Number} Far frustum plane position.\n */\n get far() {\n return this._state.far;\n }\n\n /**\n * Gets the Frustum's projection transform matrix.\n *\n * Fires a {@link Frustum#matrix:emits} emits on change.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @returns {Number[]} The Frustum's projection matrix matrix.\n */\n get matrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * Gets the inverse of {@link Frustum#matrix}.\n *\n * @returns {Number[]} The inverse orthographic projection matrix.\n */\n get inverseMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._inverseMatrixDirty) {\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n this._inverseMatrixDirty = false;\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the transpose of {@link Frustum#matrix}.\n *\n * @returns {Number[]} The transpose of {@link Frustum#matrix}.\n */\n get transposedMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._transposedMatrixDirty) {\n math.transposeMat4(this._state.matrix, this._state.transposedMatrix);\n this._transposedMatrixDirty = false;\n }\n return this._state.transposedMatrix;\n }\n\n /**\n * Un-projects the given Canvas-space coordinates, using this Frustum projection.\n *\n * @param {Number[]} canvasPos Inputs 2D Canvas-space coordinates.\n * @param {Number} screenZ Inputs Screen-space Z coordinate.\n * @param {Number[]} screenPos Outputs 3D Screen/Clip-space coordinates.\n * @param {Number[]} viewPos Outputs un-projected 3D View-space coordinates.\n * @param {Number[]} worldPos Outputs un-projected 3D World-space coordinates.\n */\n unproject(canvasPos, screenZ, screenPos, viewPos, worldPos) {\n\n const canvas = this.scene.canvas.canvas;\n\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n\n screenPos[0] = (canvasPos[0] - halfCanvasWidth) / halfCanvasWidth;\n screenPos[1] = (canvasPos[1] - halfCanvasHeight) / halfCanvasHeight;\n screenPos[2] = screenZ;\n screenPos[3] = 1.0;\n\n math.mulMat4v4(this.inverseMatrix, screenPos, viewPos);\n math.mulVec3Scalar(viewPos, 1.0 / viewPos[3]);\n\n viewPos[3] = 1.0;\n viewPos[1] *= -1;\n\n math.mulMat4v4(this.camera.inverseViewMatrix, viewPos, worldPos);\n\n return worldPos;\n }\n\n /** @private\n *\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n super.destroy();\n }\n}\n\nexport {Frustum};", @@ -61263,7 +61791,7 @@ "lineNumber": 1 }, { - "__docId__": 3150, + "__docId__": 3168, "kind": "class", "name": "Frustum", "memberof": "src/viewer/scene/camera/Frustum.js", @@ -61281,7 +61809,7 @@ ] }, { - "__docId__": 3151, + "__docId__": 3169, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61300,7 +61828,7 @@ } }, { - "__docId__": 3152, + "__docId__": 3170, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61320,7 +61848,7 @@ "ignore": true }, { - "__docId__": 3153, + "__docId__": 3171, "kind": "member", "name": "camera", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61357,7 +61885,7 @@ } }, { - "__docId__": 3154, + "__docId__": 3172, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61375,7 +61903,7 @@ } }, { - "__docId__": 3155, + "__docId__": 3173, "kind": "member", "name": "_left", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61393,7 +61921,7 @@ } }, { - "__docId__": 3156, + "__docId__": 3174, "kind": "member", "name": "_right", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61411,7 +61939,7 @@ } }, { - "__docId__": 3157, + "__docId__": 3175, "kind": "member", "name": "_bottom", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61429,7 +61957,7 @@ } }, { - "__docId__": 3158, + "__docId__": 3176, "kind": "member", "name": "_top", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61447,7 +61975,7 @@ } }, { - "__docId__": 3159, + "__docId__": 3177, "kind": "member", "name": "_inverseMatrixDirty", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61465,7 +61993,7 @@ } }, { - "__docId__": 3160, + "__docId__": 3178, "kind": "member", "name": "_transposedMatrixDirty", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61483,7 +62011,7 @@ } }, { - "__docId__": 3167, + "__docId__": 3185, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61500,7 +62028,7 @@ "return": null }, { - "__docId__": 3170, + "__docId__": 3188, "kind": "set", "name": "left", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61525,7 +62053,7 @@ ] }, { - "__docId__": 3172, + "__docId__": 3190, "kind": "get", "name": "left", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61551,7 +62079,7 @@ } }, { - "__docId__": 3173, + "__docId__": 3191, "kind": "set", "name": "right", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61576,7 +62104,7 @@ ] }, { - "__docId__": 3175, + "__docId__": 3193, "kind": "get", "name": "right", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61602,7 +62130,7 @@ } }, { - "__docId__": 3176, + "__docId__": 3194, "kind": "set", "name": "top", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61627,7 +62155,7 @@ ] }, { - "__docId__": 3178, + "__docId__": 3196, "kind": "get", "name": "top", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61653,7 +62181,7 @@ } }, { - "__docId__": 3179, + "__docId__": 3197, "kind": "set", "name": "bottom", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61686,7 +62214,7 @@ ] }, { - "__docId__": 3181, + "__docId__": 3199, "kind": "get", "name": "bottom", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61712,7 +62240,7 @@ } }, { - "__docId__": 3182, + "__docId__": 3200, "kind": "set", "name": "near", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61737,7 +62265,7 @@ ] }, { - "__docId__": 3183, + "__docId__": 3201, "kind": "get", "name": "near", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61763,7 +62291,7 @@ } }, { - "__docId__": 3184, + "__docId__": 3202, "kind": "set", "name": "far", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61788,7 +62316,7 @@ ] }, { - "__docId__": 3185, + "__docId__": 3203, "kind": "get", "name": "far", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61814,7 +62342,7 @@ } }, { - "__docId__": 3186, + "__docId__": 3204, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61846,7 +62374,7 @@ } }, { - "__docId__": 3187, + "__docId__": 3205, "kind": "get", "name": "inverseMatrix", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61878,7 +62406,7 @@ } }, { - "__docId__": 3189, + "__docId__": 3207, "kind": "get", "name": "transposedMatrix", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61910,7 +62438,7 @@ } }, { - "__docId__": 3191, + "__docId__": 3209, "kind": "method", "name": "unproject", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61980,7 +62508,7 @@ } }, { - "__docId__": 3192, + "__docId__": 3210, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -61996,7 +62524,7 @@ "return": null }, { - "__docId__": 3193, + "__docId__": 3211, "kind": "file", "name": "src/viewer/scene/camera/Ortho.js", "content": "import {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {math} from '../math/math.js';\n\n/**\n * @desc Defines its {@link Camera}'s orthographic projection as a box-shaped view volume.\n *\n * * Located at {@link Camera#ortho}.\n * * Works like Blender's orthographic projection, where the positions of the left, right, top and bottom planes are implicitly\n * indicated with a single {@link Ortho#scale} property, which causes the frustum to be symmetrical on X and Y axis, large enough to\n * contain the number of units given by {@link Ortho#scale}.\n * * {@link Ortho#near} and {@link Ortho#far} indicated the distances to the WebGL clipping planes.\n */\nclass Ortho extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Ortho\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(camera, cfg = {}) {\n\n super(camera, cfg);\n\n /**\n * The Camera this Ortho belongs to.\n *\n * @property camera\n * @type {Camera}\n * @final\n */\n this.camera = camera;\n\n this._state = new RenderState({\n matrix: math.mat4(),\n inverseMatrix: math.mat4(),\n transposedMatrix: math.mat4(),\n near: 0.1,\n far: 10000.0\n });\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this.scale = cfg.scale;\n this.near = cfg.near;\n this.far = cfg.far;\n\n this._onCanvasBoundary = this.scene.canvas.on(\"boundary\", this._needUpdate, this);\n }\n\n _update() {\n\n const WIDTH_INDEX = 2;\n const HEIGHT_INDEX = 3;\n\n const scene = this.scene;\n const scale = this._scale;\n const halfSize = 0.5 * scale;\n\n const boundary = scene.canvas.boundary;\n const boundaryWidth = boundary[WIDTH_INDEX];\n const boundaryHeight = boundary[HEIGHT_INDEX];\n const aspect = boundaryWidth / boundaryHeight;\n\n let left;\n let right;\n let top;\n let bottom;\n\n if (boundaryWidth > boundaryHeight) {\n left = -halfSize;\n right = halfSize;\n top = halfSize / aspect;\n bottom = -halfSize / aspect;\n\n } else {\n left = -halfSize * aspect;\n right = halfSize * aspect;\n top = halfSize;\n bottom = -halfSize;\n }\n\n math.orthoMat4c(left, right, bottom, top, this._state.near, this._state.far, this._state.matrix);\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this.glRedraw();\n\n this.fire(\"matrix\", this._state.matrix);\n }\n\n\n /**\n * Sets scale factor for this Ortho's extents on X and Y axis.\n *\n * Clamps to minimum value of ````0.01```.\n *\n * Fires a \"scale\" event on change.\n *\n * Default value is ````1.0````\n * @param {Number} value New scale value.\n */\n set scale(value) {\n if (value === undefined || value === null) {\n value = 1.0;\n }\n if (value <= 0) {\n value = 0.01;\n }\n this._scale = value;\n this._needUpdate(0);\n this.fire(\"scale\", this._scale);\n }\n\n /**\n * Gets scale factor for this Ortho's extents on X and Y axis.\n *\n * Clamps to minimum value of ````0.01```.\n *\n * Default value is ````1.0````\n *\n * @returns {Number} New Ortho scale value.\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the position of the Ortho's near plane on the positive View-space Z-axis.\n *\n * Fires a \"near\" emits on change.\n *\n * Default value is ````0.1````.\n *\n * @param {Number} value New Ortho near plane position.\n */\n set near(value) {\n const near = (value !== undefined && value !== null) ? value : 0.1;\n if (this._state.near === near) {\n return;\n }\n this._state.near = near;\n this._needUpdate(0);\n this.fire(\"near\", this._state.near);\n }\n\n /**\n * Gets the position of the Ortho's near plane on the positive View-space Z-axis.\n *\n * Default value is ````0.1````.\n *\n * @returns {Number} New Ortho near plane position.\n */\n get near() {\n return this._state.near;\n }\n\n /**\n * Sets the position of the Ortho's far plane on the positive View-space Z-axis.\n *\n * Fires a \"far\" event on change.\n *\n * Default value is ````10000.0````.\n *\n * @param {Number} value New far ortho plane position.\n */\n set far(value) {\n const far = (value !== undefined && value !== null) ? value : 10000.0;\n if (this._state.far === far) {\n return;\n }\n this._state.far = far;\n this._needUpdate(0);\n this.fire(\"far\", this._state.far);\n }\n\n /**\n * Gets the position of the Ortho's far plane on the positive View-space Z-axis.\n *\n * Default value is ````10000.0````.\n *\n * @returns {Number} New far ortho plane position.\n */\n get far() {\n return this._state.far;\n }\n\n /**\n * Gets the Ortho's projection transform matrix.\n *\n * Fires a \"matrix\" event on change.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @returns {Number[]} The Ortho's projection matrix.\n */\n get matrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * Gets the inverse of {@link Ortho#matrix}.\n *\n * @returns {Number[]} The inverse of {@link Ortho#matrix}.\n */\n get inverseMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._inverseMatrixDirty) {\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n this._inverseMatrixDirty = false;\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the transpose of {@link Ortho#matrix}.\n *\n * @returns {Number[]} The transpose of {@link Ortho#matrix}.\n */\n get transposedMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._transposedMatrixDirty) {\n math.transposeMat4(this._state.matrix, this._state.transposedMatrix);\n this._transposedMatrixDirty = false;\n }\n return this._state.transposedMatrix;\n }\n\n /**\n * Un-projects the given Canvas-space coordinates, using this Ortho projection.\n *\n * @param {Number[]} canvasPos Inputs 2D Canvas-space coordinates.\n * @param {Number} screenZ Inputs Screen-space Z coordinate.\n * @param {Number[]} screenPos Outputs 3D Screen/Clip-space coordinates.\n * @param {Number[]} viewPos Outputs un-projected 3D View-space coordinates.\n * @param {Number[]} worldPos Outputs un-projected 3D World-space coordinates.\n */\n unproject(canvasPos, screenZ, screenPos, viewPos, worldPos) {\n\n const canvas = this.scene.canvas.canvas;\n\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n\n screenPos[0] = (canvasPos[0] - halfCanvasWidth) / halfCanvasWidth;\n screenPos[1] = (canvasPos[1] - halfCanvasHeight) / halfCanvasHeight;\n screenPos[2] = screenZ;\n screenPos[3] = 1.0;\n\n math.mulMat4v4(this.inverseMatrix, screenPos, viewPos);\n math.mulVec3Scalar(viewPos, 1.0 / viewPos[3]);\n\n viewPos[3] = 1.0;\n viewPos[1] *= -1;\n\n math.mulMat4v4(this.camera.inverseViewMatrix, viewPos, worldPos);\n\n return worldPos;\n }\n\n /** @private\n *\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n this.scene.canvas.off(this._onCanvasBoundary);\n }\n}\n\nexport {Ortho};", @@ -62007,7 +62535,7 @@ "lineNumber": 1 }, { - "__docId__": 3194, + "__docId__": 3212, "kind": "class", "name": "Ortho", "memberof": "src/viewer/scene/camera/Ortho.js", @@ -62025,7 +62553,7 @@ ] }, { - "__docId__": 3195, + "__docId__": 3213, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62044,7 +62572,7 @@ } }, { - "__docId__": 3196, + "__docId__": 3214, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62064,7 +62592,7 @@ "ignore": true }, { - "__docId__": 3197, + "__docId__": 3215, "kind": "member", "name": "camera", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62101,7 +62629,7 @@ } }, { - "__docId__": 3198, + "__docId__": 3216, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62119,7 +62647,7 @@ } }, { - "__docId__": 3199, + "__docId__": 3217, "kind": "member", "name": "_inverseMatrixDirty", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62137,7 +62665,7 @@ } }, { - "__docId__": 3200, + "__docId__": 3218, "kind": "member", "name": "_transposedMatrixDirty", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62155,7 +62683,7 @@ } }, { - "__docId__": 3204, + "__docId__": 3222, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62173,7 +62701,7 @@ } }, { - "__docId__": 3205, + "__docId__": 3223, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62190,7 +62718,7 @@ "return": null }, { - "__docId__": 3208, + "__docId__": 3226, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62215,7 +62743,7 @@ ] }, { - "__docId__": 3209, + "__docId__": 3227, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62233,7 +62761,7 @@ } }, { - "__docId__": 3210, + "__docId__": 3228, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62265,7 +62793,7 @@ } }, { - "__docId__": 3211, + "__docId__": 3229, "kind": "set", "name": "near", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62290,7 +62818,7 @@ ] }, { - "__docId__": 3212, + "__docId__": 3230, "kind": "get", "name": "near", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62322,7 +62850,7 @@ } }, { - "__docId__": 3213, + "__docId__": 3231, "kind": "set", "name": "far", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62347,7 +62875,7 @@ ] }, { - "__docId__": 3214, + "__docId__": 3232, "kind": "get", "name": "far", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62379,7 +62907,7 @@ } }, { - "__docId__": 3215, + "__docId__": 3233, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62411,7 +62939,7 @@ } }, { - "__docId__": 3216, + "__docId__": 3234, "kind": "get", "name": "inverseMatrix", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62443,7 +62971,7 @@ } }, { - "__docId__": 3218, + "__docId__": 3236, "kind": "get", "name": "transposedMatrix", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62475,7 +63003,7 @@ } }, { - "__docId__": 3220, + "__docId__": 3238, "kind": "method", "name": "unproject", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62545,7 +63073,7 @@ } }, { - "__docId__": 3221, + "__docId__": 3239, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -62561,7 +63089,7 @@ "return": null }, { - "__docId__": 3222, + "__docId__": 3240, "kind": "file", "name": "src/viewer/scene/camera/Perspective.js", "content": "import {math} from '../math/math.js';\nimport {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\n\n/**\n * @desc Defines its {@link Camera}'s perspective projection using a field-of-view angle.\n *\n * * Located at {@link Camera#perspective}.\n * * Implicitly sets the left, right, top, bottom frustum planes using {@link Perspective#fov}.\n * * {@link Perspective#near} and {@link Perspective#far} specify the distances to the WebGL clipping planes.\n */\nclass Perspective extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Perspective\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(camera, cfg = {}) {\n\n super(camera, cfg);\n\n /**\n * The Camera this Perspective belongs to.\n *\n * @property camera\n * @type {Camera}\n * @final\n */\n this.camera = camera;\n\n this._state = new RenderState({\n matrix: math.mat4(),\n inverseMatrix: math.mat4(),\n transposedMatrix: math.mat4(),\n near: 0.1,\n far: 10000.0\n });\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this._fov = 60.0;\n\n // Recompute aspect from change in canvas size\n this._canvasResized = this.scene.canvas.on(\"boundary\", this._needUpdate, this);\n\n this.fov = cfg.fov;\n this.fovAxis = cfg.fovAxis;\n this.near = cfg.near;\n this.far = cfg.far;\n }\n\n _update() {\n\n const WIDTH_INDEX = 2;\n const HEIGHT_INDEX = 3;\n const boundary = this.scene.canvas.boundary;\n const aspect = boundary[WIDTH_INDEX] / boundary[HEIGHT_INDEX];\n const fovAxis = this._fovAxis;\n\n let fov = this._fov;\n if (fovAxis === \"x\" || (fovAxis === \"min\" && aspect < 1) || (fovAxis === \"max\" && aspect > 1)) {\n fov = fov / aspect;\n }\n fov = Math.min(fov, 120);\n\n math.perspectiveMat4(fov * (Math.PI / 180.0), aspect, this._state.near, this._state.far, this._state.matrix);\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this.glRedraw();\n\n this.camera._updateScheduled = true;\n\n this.fire(\"matrix\", this._state.matrix);\n }\n\n /**\n * Sets the Perspective's field-of-view angle (FOV).\n *\n * Fires an \"fov\" event on change.\n\n * Default value is ````60.0````.\n *\n * @param {Number} value New field-of-view.\n */\n set fov(value) {\n value = (value !== undefined && value !== null) ? value : 60.0;\n if (value === this._fov) {\n return;\n }\n this._fov = value;\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"fov\", this._fov);\n }\n\n /**\n * Gets the Perspective's field-of-view angle (FOV).\n *\n * Default value is ````60.0````.\n *\n * @returns {Number} Current field-of-view.\n */\n get fov() {\n return this._fov;\n }\n\n /**\n * Sets the Perspective's FOV axis.\n *\n * Options are ````\"x\"````, ````\"y\"```` or ````\"min\"````, to use the minimum axis.\n *\n * Fires an \"fovAxis\" event on change.\n\n * Default value ````\"min\"````.\n *\n * @param {String} value New FOV axis value.\n */\n set fovAxis(value) {\n value = value || \"min\";\n if (this._fovAxis === value) {\n return;\n }\n if (value !== \"x\" && value !== \"y\" && value !== \"min\") {\n this.error(\"Unsupported value for 'fovAxis': \" + value + \" - defaulting to 'min'\");\n value = \"min\";\n }\n this._fovAxis = value;\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"fovAxis\", this._fovAxis);\n }\n\n /**\n * Gets the Perspective's FOV axis.\n *\n * Options are ````\"x\"````, ````\"y\"```` or ````\"min\"````, to use the minimum axis.\n *\n * Fires an \"fovAxis\" event on change.\n\n * Default value is ````\"min\"````.\n *\n * @returns {String} The current FOV axis value.\n */\n get fovAxis() {\n return this._fovAxis;\n }\n\n /**\n * Sets the position of the Perspective's near plane on the positive View-space Z-axis.\n *\n * Fires a \"near\" event on change.\n *\n * Default value is ````0.1````.\n *\n * @param {Number} value New Perspective near plane position.\n */\n set near(value) {\n const near = (value !== undefined && value !== null) ? value : 0.1;\n if (this._state.near === near) {\n return;\n }\n this._state.near = near;\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"near\", this._state.near);\n }\n\n /**\n * Gets the position of the Perspective's near plane on the positive View-space Z-axis.\n *\n * Fires an \"emits\" emits on change.\n *\n * Default value is ````0.1````.\n *\n * @returns The Perspective's near plane position.\n */\n get near() {\n return this._state.near;\n }\n\n /**\n * Sets the position of this Perspective's far plane on the positive View-space Z-axis.\n *\n * Fires a \"far\" event on change.\n *\n * Default value is ````10000.0````.\n *\n * @param {Number} value New Perspective far plane position.\n */\n set far(value) {\n const far = (value !== undefined && value !== null) ? value : 10000.0;\n if (this._state.far === far) {\n return;\n }\n this._state.far = far;\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"far\", this._state.far);\n }\n\n /**\n * Gets the position of this Perspective's far plane on the positive View-space Z-axis.\n *\n * Default value is ````10000.0````.\n *\n * @return {Number} The Perspective's far plane position.\n */\n get far() {\n return this._state.far;\n }\n\n /**\n * Gets the Perspective's projection transform matrix.\n *\n * Fires a \"matrix\" event on change.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @returns {Number[]} The Perspective's projection matrix.\n */\n get matrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * Gets the inverse of {@link Perspective#matrix}.\n *\n * @returns {Number[]} The inverse of {@link Perspective#matrix}.\n */\n get inverseMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._inverseMatrixDirty) {\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n this._inverseMatrixDirty = false;\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the transpose of {@link Perspective#matrix}.\n *\n * @returns {Number[]} The transpose of {@link Perspective#matrix}.\n */\n get transposedMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._transposedMatrixDirty) {\n math.transposeMat4(this._state.matrix, this._state.transposedMatrix);\n this._transposedMatrixDirty = false;\n }\n return this._state.transposedMatrix;\n }\n\n /**\n * Un-projects the given Canvas-space coordinates and Screen-space depth, using this Perspective projection.\n *\n * @param {Number[]} canvasPos Inputs 2D Canvas-space coordinates.\n * @param {Number} screenZ Inputs Screen-space Z coordinate.\n * @param {Number[]} screenPos Outputs 3D Screen/Clip-space coordinates.\n * @param {Number[]} viewPos Outputs un-projected 3D View-space coordinates.\n * @param {Number[]} worldPos Outputs un-projected 3D World-space coordinates.\n */\n unproject(canvasPos, screenZ, screenPos, viewPos, worldPos) {\n\n const canvas = this.scene.canvas.canvas;\n\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n\n screenPos[0] = (canvasPos[0] - halfCanvasWidth) / halfCanvasWidth;\n screenPos[1] = (canvasPos[1] - halfCanvasHeight) / halfCanvasHeight;\n screenPos[2] = screenZ;\n screenPos[3] = 1.0;\n\n math.mulMat4v4(this.inverseMatrix, screenPos, viewPos);\n math.mulVec3Scalar(viewPos, 1.0 / viewPos[3]);\n\n viewPos[3] = 1.0;\n viewPos[1] *= -1;\n\n math.mulMat4v4(this.camera.inverseViewMatrix, viewPos, worldPos);\n\n return worldPos;\n }\n\n /** @private\n *\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n this.scene.canvas.off(this._canvasResized);\n }\n}\n\nexport {Perspective};", @@ -62572,7 +63100,7 @@ "lineNumber": 1 }, { - "__docId__": 3223, + "__docId__": 3241, "kind": "class", "name": "Perspective", "memberof": "src/viewer/scene/camera/Perspective.js", @@ -62590,7 +63118,7 @@ ] }, { - "__docId__": 3224, + "__docId__": 3242, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62609,7 +63137,7 @@ } }, { - "__docId__": 3225, + "__docId__": 3243, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62629,7 +63157,7 @@ "ignore": true }, { - "__docId__": 3226, + "__docId__": 3244, "kind": "member", "name": "camera", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62666,7 +63194,7 @@ } }, { - "__docId__": 3227, + "__docId__": 3245, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62684,7 +63212,7 @@ } }, { - "__docId__": 3228, + "__docId__": 3246, "kind": "member", "name": "_inverseMatrixDirty", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62702,7 +63230,7 @@ } }, { - "__docId__": 3229, + "__docId__": 3247, "kind": "member", "name": "_transposedMatrixDirty", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62720,7 +63248,7 @@ } }, { - "__docId__": 3230, + "__docId__": 3248, "kind": "member", "name": "_fov", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62738,7 +63266,7 @@ } }, { - "__docId__": 3231, + "__docId__": 3249, "kind": "member", "name": "_canvasResized", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62756,7 +63284,7 @@ } }, { - "__docId__": 3236, + "__docId__": 3254, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62773,7 +63301,7 @@ "return": null }, { - "__docId__": 3239, + "__docId__": 3257, "kind": "set", "name": "fov", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62798,7 +63326,7 @@ ] }, { - "__docId__": 3241, + "__docId__": 3259, "kind": "get", "name": "fov", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62830,7 +63358,7 @@ } }, { - "__docId__": 3242, + "__docId__": 3260, "kind": "set", "name": "fovAxis", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62855,7 +63383,7 @@ ] }, { - "__docId__": 3243, + "__docId__": 3261, "kind": "member", "name": "_fovAxis", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62873,7 +63401,7 @@ } }, { - "__docId__": 3244, + "__docId__": 3262, "kind": "get", "name": "fovAxis", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62905,7 +63433,7 @@ } }, { - "__docId__": 3245, + "__docId__": 3263, "kind": "set", "name": "near", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62930,7 +63458,7 @@ ] }, { - "__docId__": 3246, + "__docId__": 3264, "kind": "get", "name": "near", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62962,7 +63490,7 @@ } }, { - "__docId__": 3247, + "__docId__": 3265, "kind": "set", "name": "far", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -62987,7 +63515,7 @@ ] }, { - "__docId__": 3248, + "__docId__": 3266, "kind": "get", "name": "far", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -63013,7 +63541,7 @@ } }, { - "__docId__": 3249, + "__docId__": 3267, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -63045,7 +63573,7 @@ } }, { - "__docId__": 3250, + "__docId__": 3268, "kind": "get", "name": "inverseMatrix", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -63077,7 +63605,7 @@ } }, { - "__docId__": 3252, + "__docId__": 3270, "kind": "get", "name": "transposedMatrix", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -63109,7 +63637,7 @@ } }, { - "__docId__": 3254, + "__docId__": 3272, "kind": "method", "name": "unproject", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -63179,7 +63707,7 @@ } }, { - "__docId__": 3255, + "__docId__": 3273, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -63195,7 +63723,7 @@ "return": null }, { - "__docId__": 3256, + "__docId__": 3274, "kind": "file", "name": "src/viewer/scene/camera/index.js", "content": "export * from \"./CameraPath.js\";\nexport * from \"./CameraPathAnimation.js\";", @@ -63206,7 +63734,7 @@ "lineNumber": 1 }, { - "__docId__": 3257, + "__docId__": 3275, "kind": "file", "name": "src/viewer/scene/canvas/Canvas.js", "content": "\nimport {math} from '../math/math.js';\nimport {Component} from '../Component.js';\nimport {Spinner} from './Spinner.js';\n\nconst WEBGL_CONTEXT_NAMES = [\n \"webgl2\",\n \"experimental-webgl\",\n \"webkit-3d\",\n \"moz-webgl\",\n \"moz-glweb20\"\n];\n\n/**\n * @desc Manages its {@link Scene}'s HTML canvas.\n *\n * * Provides the HTML canvas element in {@link Canvas#canvas}.\n * * Has a {@link Spinner}, provided at {@link Canvas#spinner}, which manages the loading progress indicator.\n */\nclass Canvas extends Component {\n\n /**\n * @constructor\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._backgroundColor = math.vec3([\n cfg.backgroundColor ? cfg.backgroundColor[0] : 1,\n cfg.backgroundColor ? cfg.backgroundColor[1] : 1,\n cfg.backgroundColor ? cfg.backgroundColor[2] : 1]);\n this._backgroundColorFromAmbientLight = !!cfg.backgroundColorFromAmbientLight;\n\n /**\n * The HTML canvas.\n *\n * @property canvas\n * @type {HTMLCanvasElement}\n * @final\n */\n this.canvas = cfg.canvas;\n\n /**\n * The WebGL rendering context.\n *\n * @property gl\n * @type {WebGLRenderingContext}\n * @final\n */\n this.gl = null;\n\n /**\n * True when WebGL 2 support is enabled.\n *\n * @property webgl2\n * @type {Boolean}\n * @final\n */\n this.webgl2 = false; // Will set true in _initWebGL if WebGL is requested and we succeed in getting it.\n\n /**\n * Indicates if this Canvas is transparent.\n *\n * @property transparent\n * @type {Boolean}\n * @default {false}\n * @final\n */\n this.transparent = !!cfg.transparent;\n\n /**\n * Attributes for the WebGL context\n *\n * @type {{}|*}\n */\n this.contextAttr = cfg.contextAttr || {};\n this.contextAttr.alpha = this.transparent;\n\n this.contextAttr.preserveDrawingBuffer = !!this.contextAttr.preserveDrawingBuffer;\n this.contextAttr.stencil = false;\n this.contextAttr.premultipliedAlpha = (!!this.contextAttr.premultipliedAlpha); // False by default: https://github.com/xeokit/xeokit-sdk/issues/251\n this.contextAttr.antialias = (this.contextAttr.antialias !== false);\n\n // If the canvas uses css styles to specify the sizes make sure the basic\n // width and height attributes match or the WebGL context will use 300 x 150\n\n this.resolutionScale = cfg.resolutionScale;\n\n this.canvas.width = Math.round(this.canvas.clientWidth * this._resolutionScale);\n this.canvas.height = Math.round(this.canvas.clientHeight * this._resolutionScale);\n\n /**\n * Boundary of the Canvas in absolute browser window coordinates.\n *\n * ### Usage:\n *\n * ````javascript\n * var boundary = myScene.canvas.boundary;\n *\n * var xmin = boundary[0];\n * var ymin = boundary[1];\n * var width = boundary[2];\n * var height = boundary[3];\n * ````\n *\n * @property boundary\n * @type {Number[]}\n * @final\n */\n this.boundary = [\n this.canvas.offsetLeft, this.canvas.offsetTop,\n this.canvas.clientWidth, this.canvas.clientHeight\n ];\n\n // Get WebGL context\n\n this._initWebGL(cfg);\n\n // Bind context loss and recovery handlers\n\n const self = this;\n\n this.canvas.addEventListener(\"webglcontextlost\", this._webglcontextlostListener = function (event) {\n console.time(\"webglcontextrestored\");\n self.scene._webglContextLost();\n /**\n * Fired whenever the WebGL context has been lost\n * @event webglcontextlost\n */\n self.fire(\"webglcontextlost\");\n event.preventDefault();\n },\n false);\n\n this.canvas.addEventListener(\"webglcontextrestored\", this._webglcontextrestoredListener = function (event) {\n self._initWebGL();\n if (self.gl) {\n self.scene._webglContextRestored(self.gl);\n /**\n * Fired whenever the WebGL context has been restored again after having previously being lost\n * @event webglContextRestored\n * @param value The WebGL context object\n */\n self.fire(\"webglcontextrestored\", self.gl);\n event.preventDefault();\n }\n console.timeEnd(\"webglcontextrestored\");\n },\n false);\n\n // Attach to resize events on the canvas\n let dirtyBoundary = true; // make sure we publish the 1st boundary event\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.contentBoxSize) {\n dirtyBoundary = true;\n }\n }\n });\n\n resizeObserver.observe(this.canvas);\n\n // Publish canvas size and position changes on each scene tick\n this._tick = this.scene.on(\"tick\", () => {\n // Only publish if the canvas bounds changed\n if (!dirtyBoundary) {\n return;\n }\n\n dirtyBoundary = false;\n\n // Set the real size of the canvas (the drawable w*h)\n self.canvas.width = Math.round(self.canvas.clientWidth * self._resolutionScale);\n self.canvas.height = Math.round(self.canvas.clientHeight * self._resolutionScale);\n\n // Publish the boundary change\n self.boundary[0] = self.canvas.offsetLeft;\n self.boundary[1] = self.canvas.offsetTop;\n self.boundary[2] = self.canvas.clientWidth;\n self.boundary[3] = self.canvas.clientHeight;\n\n self.fire(\"boundary\", self.boundary);\n });\n\n this._spinner = new Spinner(this.scene, {\n canvas: this.canvas,\n elementId: cfg.spinnerElementId\n });\n }\n\n /**\n @private\n */\n get type() {\n return \"Canvas\";\n }\n\n /**\n * Gets whether the canvas clear color will be derived from {@link AmbientLight} or {@link Canvas#backgroundColor}\n * when {@link Canvas#transparent} is ```true```.\n *\n * When {@link Canvas#transparent} is ```true``` and this is ````true````, then the canvas clear color will\n * be taken from the {@link Scene}'s ambient light color.\n *\n * When {@link Canvas#transparent} is ```true``` and this is ````false````, then the canvas clear color will\n * be taken from {@link Canvas#backgroundColor}.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n get backgroundColorFromAmbientLight() {\n return this._backgroundColorFromAmbientLight;\n }\n\n /**\n * Sets if the canvas background color is derived from an {@link AmbientLight}.\n *\n * This only has effect when the canvas is not transparent. When not enabled, the background color\n * will be the canvas element's HTML/CSS background color.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n set backgroundColorFromAmbientLight(backgroundColorFromAmbientLight) {\n this._backgroundColorFromAmbientLight = (backgroundColorFromAmbientLight !== false);\n this.glRedraw();\n }\n\n /**\n * Gets the canvas clear color.\n *\n * Default value is ````[1, 1, 1]````.\n *\n * @type {Number[]}\n */\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n /**\n * Sets the canvas clear color.\n *\n * Default value is ````[1, 1, 1]````.\n *\n * @type {Number[]}\n */\n set backgroundColor(value) {\n if (value) {\n this._backgroundColor[0] = value[0];\n this._backgroundColor[1] = value[1];\n this._backgroundColor[2] = value[2];\n } else {\n this._backgroundColor[0] = 1.0;\n this._backgroundColor[1] = 1.0;\n this._backgroundColor[2] = 1.0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the scale of the canvas back buffer relative to the CSS-defined size of the canvas.\n *\n * This is a common way to trade off rendering quality for speed. If the canvas size is defined in CSS, then\n * setting this to a value between ````[0..1]```` (eg ````0.5````) will render into a smaller back buffer, giving\n * a performance boost.\n *\n * @returns {*|number} The resolution scale.\n */\n get resolutionScale() {\n return this._resolutionScale;\n }\n\n /**\n * Sets the scale of the canvas back buffer relative to the CSS-defined size of the canvas.\n *\n * This is a common way to trade off rendering quality for speed. If the canvas size is defined in CSS, then\n * setting this to a value between ````[0..1]```` (eg ````0.5````) will render into a smaller back buffer, giving\n * a performance boost.\n *\n * @param {*|number} resolutionScale The resolution scale.\n */\n set resolutionScale(resolutionScale) {\n resolutionScale = resolutionScale || 1.0;\n if (resolutionScale === this._resolutionScale) {\n return;\n }\n this._resolutionScale = resolutionScale;\n const canvas = this.canvas;\n canvas.width = Math.round(canvas.clientWidth * this._resolutionScale);\n canvas.height = Math.round(canvas.clientHeight * this._resolutionScale);\n this.glRedraw();\n }\n\n /**\n * The busy {@link Spinner} for this Canvas.\n *\n * @property spinner\n * @type Spinner\n * @final\n */\n get spinner() {\n return this._spinner;\n }\n\n /**\n * Creates a default canvas in the DOM.\n * @private\n */\n _createCanvas() {\n\n const canvasId = \"xeokit-canvas-\" + math.createUUID();\n const body = document.getElementsByTagName(\"body\")[0];\n const div = document.createElement('div');\n\n const style = div.style;\n style.height = \"100%\";\n style.width = \"100%\";\n style.padding = \"0\";\n style.margin = \"0\";\n style.background = \"rgba(0,0,0,0);\";\n style.float = \"left\";\n style.left = \"0\";\n style.top = \"0\";\n style.position = \"absolute\";\n style.opacity = \"1.0\";\n style[\"z-index\"] = \"-10000\";\n\n div.innerHTML += '';\n\n body.appendChild(div);\n\n this.canvas = document.getElementById(canvasId);\n }\n\n _getElementXY(e) {\n let x = 0, y = 0;\n while (e) {\n x += (e.offsetLeft - e.scrollLeft);\n y += (e.offsetTop - e.scrollTop);\n e = e.offsetParent;\n }\n return {x: x, y: y};\n }\n\n /**\n * Initialises the WebGL context\n * @private\n */\n _initWebGL() {\n\n // Default context attribute values\n\n if (!this.gl) {\n for (let i = 0; !this.gl && i < WEBGL_CONTEXT_NAMES.length; i++) {\n try {\n this.gl = this.canvas.getContext(WEBGL_CONTEXT_NAMES[i], this.contextAttr);\n } catch (e) { // Try with next context name\n }\n }\n }\n\n if (!this.gl) {\n\n this.error('Failed to get a WebGL context');\n\n /**\n * Fired whenever the canvas failed to get a WebGL context, which probably means that WebGL\n * is either unsupported or has been disabled.\n * @event webglContextFailed\n */\n this.fire(\"webglContextFailed\", true, true);\n }\n\n // data-textures: avoid to re-bind same texture\n {\n const gl = this.gl;\n\n let lastTextureUnit = \"__\";\n\n let originalActiveTexture = gl.activeTexture;\n\n gl.activeTexture = function (arg1) {\n if (lastTextureUnit === arg1) {\n return;\n }\n\n lastTextureUnit = arg1;\n\n originalActiveTexture.call (this, arg1);\n };\n\n let lastBindTexture = {};\n\n let originalBindTexture = gl.bindTexture;\n\n let avoidedRebinds = 0;\n\n gl.bindTexture = function (arg1, arg2) {\n if (lastBindTexture[lastTextureUnit] === arg2)\n {\n avoidedRebinds++;\n return;\n }\n\n lastBindTexture[lastTextureUnit] = arg2;\n\n originalBindTexture.call (this, arg1, arg2);\n }\n\n // setInterval (\n // () => {\n // console.log (`${avoidedRebinds} avoided texture binds/sec`);\n // avoidedRebinds = 0;\n // },\n // 1000\n // );\n }\n\n if (this.gl) {\n // Setup extension (if necessary) and hints for fragment shader derivative functions\n if (this.webgl2) {\n this.gl.hint(this.gl.FRAGMENT_SHADER_DERIVATIVE_HINT, this.gl.FASTEST);\n\n // data-textures: not using standard-derivatives\n if (!(this.gl instanceof WebGL2RenderingContext)) {\n }\n }\n }\n }\n\n /**\n * @private\n * @deprecated\n */\n getSnapshot(params) {\n throw \"Canvas#getSnapshot() has been replaced by Viewer#getSnapshot() - use that method instead.\";\n }\n\n /**\n * Reads colors of pixels from the last rendered frame.\n *\n * Call this method like this:\n *\n * ````JavaScript\n *\n * // Ignore transparent pixels (default is false)\n * var opaqueOnly = true;\n *\n * var colors = new Float32Array(8);\n *\n * viewer.scene.canvas.readPixels([ 100, 22, 12, 33 ], colors, 2, opaqueOnly);\n * ````\n *\n * Then the r,g,b components of the colors will be set to the colors at those pixels.\n *\n * @param {Number[]} pixels\n * @param {Number[]} colors\n * @param {Number} size\n * @param {Boolean} opaqueOnly\n */\n readPixels(pixels, colors, size, opaqueOnly) {\n return this.scene._renderer.readPixels(pixels, colors, size, opaqueOnly);\n }\n\n /**\n * Simulates lost WebGL context.\n */\n loseWebGLContext() {\n if (this.canvas.loseContext) {\n this.canvas.loseContext();\n }\n }\n\n destroy() {\n this.scene.off(this._tick);\n this._spinner._destroy();\n // Memory leak avoidance\n this.canvas.removeEventListener(\"webglcontextlost\", this._webglcontextlostListener);\n this.canvas.removeEventListener(\"webglcontextrestored\", this._webglcontextrestoredListener);\n this.gl = null;\n super.destroy();\n }\n}\n\nexport {Canvas};", @@ -63217,7 +63745,7 @@ "lineNumber": 1 }, { - "__docId__": 3258, + "__docId__": 3276, "kind": "variable", "name": "WEBGL_CONTEXT_NAMES", "memberof": "src/viewer/scene/canvas/Canvas.js", @@ -63238,7 +63766,7 @@ "ignore": true }, { - "__docId__": 3259, + "__docId__": 3277, "kind": "class", "name": "Canvas", "memberof": "src/viewer/scene/canvas/Canvas.js", @@ -63256,7 +63784,7 @@ ] }, { - "__docId__": 3260, + "__docId__": 3278, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63276,7 +63804,7 @@ "ignore": true }, { - "__docId__": 3261, + "__docId__": 3279, "kind": "member", "name": "_backgroundColor", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63294,7 +63822,7 @@ } }, { - "__docId__": 3262, + "__docId__": 3280, "kind": "member", "name": "_backgroundColorFromAmbientLight", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63312,7 +63840,7 @@ } }, { - "__docId__": 3263, + "__docId__": 3281, "kind": "member", "name": "canvas", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63349,7 +63877,7 @@ } }, { - "__docId__": 3264, + "__docId__": 3282, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63386,7 +63914,7 @@ } }, { - "__docId__": 3265, + "__docId__": 3283, "kind": "member", "name": "webgl2", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63423,7 +63951,7 @@ } }, { - "__docId__": 3266, + "__docId__": 3284, "kind": "member", "name": "transparent", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63464,7 +63992,7 @@ } }, { - "__docId__": 3267, + "__docId__": 3285, "kind": "member", "name": "contextAttr", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63483,7 +64011,7 @@ } }, { - "__docId__": 3269, + "__docId__": 3287, "kind": "member", "name": "boundary", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63520,7 +64048,7 @@ } }, { - "__docId__": 3270, + "__docId__": 3288, "kind": "member", "name": "_tick", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63538,7 +64066,7 @@ } }, { - "__docId__": 3271, + "__docId__": 3289, "kind": "member", "name": "_spinner", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63556,7 +64084,7 @@ } }, { - "__docId__": 3272, + "__docId__": 3290, "kind": "get", "name": "type", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63575,7 +64103,7 @@ } }, { - "__docId__": 3273, + "__docId__": 3291, "kind": "get", "name": "backgroundColorFromAmbientLight", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63596,7 +64124,7 @@ } }, { - "__docId__": 3274, + "__docId__": 3292, "kind": "set", "name": "backgroundColorFromAmbientLight", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63617,7 +64145,7 @@ } }, { - "__docId__": 3276, + "__docId__": 3294, "kind": "get", "name": "backgroundColor", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63638,7 +64166,7 @@ } }, { - "__docId__": 3277, + "__docId__": 3295, "kind": "set", "name": "backgroundColor", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63659,7 +64187,7 @@ } }, { - "__docId__": 3278, + "__docId__": 3296, "kind": "get", "name": "resolutionScale", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63692,7 +64220,7 @@ } }, { - "__docId__": 3279, + "__docId__": 3297, "kind": "set", "name": "resolutionScale", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63718,7 +64246,7 @@ ] }, { - "__docId__": 3280, + "__docId__": 3298, "kind": "member", "name": "_resolutionScale", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63736,7 +64264,7 @@ } }, { - "__docId__": 3281, + "__docId__": 3299, "kind": "get", "name": "spinner", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63775,7 +64303,7 @@ } }, { - "__docId__": 3282, + "__docId__": 3300, "kind": "method", "name": "_createCanvas", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63791,7 +64319,7 @@ "return": null }, { - "__docId__": 3284, + "__docId__": 3302, "kind": "method", "name": "_getElementXY", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63819,7 +64347,7 @@ } }, { - "__docId__": 3285, + "__docId__": 3303, "kind": "method", "name": "_initWebGL", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63835,7 +64363,7 @@ "return": null }, { - "__docId__": 3287, + "__docId__": 3305, "kind": "method", "name": "getSnapshot", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63859,7 +64387,7 @@ "return": null }, { - "__docId__": 3288, + "__docId__": 3306, "kind": "method", "name": "readPixels", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63919,7 +64447,7 @@ } }, { - "__docId__": 3289, + "__docId__": 3307, "kind": "method", "name": "loseWebGLContext", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63934,7 +64462,7 @@ "return": null }, { - "__docId__": 3290, + "__docId__": 3308, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -63950,7 +64478,7 @@ "return": null }, { - "__docId__": 3292, + "__docId__": 3310, "kind": "file", "name": "src/viewer/scene/canvas/Spinner.js", "content": "import {Component} from '../Component.js';\n\nconst defaultCSS = \".sk-fading-circle {\\\n background: transparent;\\\n margin: 20px auto;\\\n width: 50px;\\\n height:50px;\\\n position: relative;\\\n }\\\n .sk-fading-circle .sk-circle {\\\n width: 120%;\\\n height: 120%;\\\n position: absolute;\\\n left: 0;\\\n top: 0;\\\n }\\\n .sk-fading-circle .sk-circle:before {\\\n content: '';\\\n display: block;\\\n margin: 0 auto;\\\n width: 15%;\\\n height: 15%;\\\n background-color: #ff8800;\\\n border-radius: 100%;\\\n -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;\\\n animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;\\\n }\\\n .sk-fading-circle .sk-circle2 {\\\n -webkit-transform: rotate(30deg);\\\n -ms-transform: rotate(30deg);\\\n transform: rotate(30deg);\\\n }\\\n .sk-fading-circle .sk-circle3 {\\\n -webkit-transform: rotate(60deg);\\\n -ms-transform: rotate(60deg);\\\n transform: rotate(60deg);\\\n }\\\n .sk-fading-circle .sk-circle4 {\\\n -webkit-transform: rotate(90deg);\\\n -ms-transform: rotate(90deg);\\\n transform: rotate(90deg);\\\n }\\\n .sk-fading-circle .sk-circle5 {\\\n -webkit-transform: rotate(120deg);\\\n -ms-transform: rotate(120deg);\\\n transform: rotate(120deg);\\\n }\\\n .sk-fading-circle .sk-circle6 {\\\n -webkit-transform: rotate(150deg);\\\n -ms-transform: rotate(150deg);\\\n transform: rotate(150deg);\\\n }\\\n .sk-fading-circle .sk-circle7 {\\\n -webkit-transform: rotate(180deg);\\\n -ms-transform: rotate(180deg);\\\n transform: rotate(180deg);\\\n }\\\n .sk-fading-circle .sk-circle8 {\\\n -webkit-transform: rotate(210deg);\\\n -ms-transform: rotate(210deg);\\\n transform: rotate(210deg);\\\n }\\\n .sk-fading-circle .sk-circle9 {\\\n -webkit-transform: rotate(240deg);\\\n -ms-transform: rotate(240deg);\\\n transform: rotate(240deg);\\\n }\\\n .sk-fading-circle .sk-circle10 {\\\n -webkit-transform: rotate(270deg);\\\n -ms-transform: rotate(270deg);\\\n transform: rotate(270deg);\\\n }\\\n .sk-fading-circle .sk-circle11 {\\\n -webkit-transform: rotate(300deg);\\\n -ms-transform: rotate(300deg);\\\n transform: rotate(300deg);\\\n }\\\n .sk-fading-circle .sk-circle12 {\\\n -webkit-transform: rotate(330deg);\\\n -ms-transform: rotate(330deg);\\\n transform: rotate(330deg);\\\n }\\\n .sk-fading-circle .sk-circle2:before {\\\n -webkit-animation-delay: -1.1s;\\\n animation-delay: -1.1s;\\\n }\\\n .sk-fading-circle .sk-circle3:before {\\\n -webkit-animation-delay: -1s;\\\n animation-delay: -1s;\\\n }\\\n .sk-fading-circle .sk-circle4:before {\\\n -webkit-animation-delay: -0.9s;\\\n animation-delay: -0.9s;\\\n }\\\n .sk-fading-circle .sk-circle5:before {\\\n -webkit-animation-delay: -0.8s;\\\n animation-delay: -0.8s;\\\n }\\\n .sk-fading-circle .sk-circle6:before {\\\n -webkit-animation-delay: -0.7s;\\\n animation-delay: -0.7s;\\\n }\\\n .sk-fading-circle .sk-circle7:before {\\\n -webkit-animation-delay: -0.6s;\\\n animation-delay: -0.6s;\\\n }\\\n .sk-fading-circle .sk-circle8:before {\\\n -webkit-animation-delay: -0.5s;\\\n animation-delay: -0.5s;\\\n }\\\n .sk-fading-circle .sk-circle9:before {\\\n -webkit-animation-delay: -0.4s;\\\n animation-delay: -0.4s;\\\n }\\\n .sk-fading-circle .sk-circle10:before {\\\n -webkit-animation-delay: -0.3s;\\\n animation-delay: -0.3s;\\\n }\\\n .sk-fading-circle .sk-circle11:before {\\\n -webkit-animation-delay: -0.2s;\\\n animation-delay: -0.2s;\\\n }\\\n .sk-fading-circle .sk-circle12:before {\\\n -webkit-animation-delay: -0.1s;\\\n animation-delay: -0.1s;\\\n }\\\n @-webkit-keyframes sk-circleFadeDelay {\\\n 0%, 39%, 100% { opacity: 0; }\\\n 40% { opacity: 1; }\\\n }\\\n @keyframes sk-circleFadeDelay {\\\n 0%, 39%, 100% { opacity: 0; }\\\n 40% { opacity: 1; }\\\n }\";\n\n/**\n * @desc Displays a progress animation at the center of its {@link Canvas} while things are loading or otherwise busy.\n *\n *\n * * Located at {@link Canvas#spinner}.\n * * Automatically shown while things are loading, however may also be shown by application code wanting to indicate busyness.\n * * {@link Spinner#processes} holds the count of active processes. As a process starts, it increments {@link Spinner#processes}, then decrements it on completion or failure.\n * * A Spinner is only visible while {@link Spinner#processes} is greater than zero.\n *\n * ````javascript\n * var spinner = viewer.scene.canvas.spinner;\n *\n * // Increment count of busy processes represented by the spinner;\n * // assuming the count was zero, this now shows the spinner\n * spinner.processes++;\n *\n * // Increment the count again, by some other process; spinner already visible, now requires two decrements\n * // before it becomes invisible again\n * spinner.processes++;\n *\n * // Decrement the count; count still greater than zero, so spinner remains visible\n * spinner.process--;\n *\n * // Decrement the count; count now zero, so spinner becomes invisible\n * spinner.process--;\n * ````\n */\nclass Spinner extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Spinner\";\n }\n\n /**\n @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._canvas = cfg.canvas;\n this._element = null;\n this._isCustom = false; // True when the element is custom HTML\n\n if (cfg.elementId) { // Custom spinner element supplied\n this._element = document.getElementById(cfg.elementId);\n if (!this._element) {\n this.error(\"Can't find given Spinner HTML element: '\" + cfg.elementId + \"' - will automatically create default element\");\n } else {\n this._adjustPosition();\n }\n }\n\n if (!this._element) {\n this._createDefaultSpinner();\n }\n\n this.processes = 0;\n }\n\n /** @private */\n _createDefaultSpinner() {\n this._injectDefaultCSS();\n const element = document.createElement('div');\n const style = element.style;\n style[\"z-index\"] = \"9000\";\n style.position = \"absolute\";\n element.innerHTML = '
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    ';\n this._canvas.parentElement.appendChild(element);\n this._element = element;\n this._isCustom = false;\n this._adjustPosition();\n }\n\n /**\n * @private\n */\n _injectDefaultCSS() {\n const elementId = \"xeokit-spinner-css\";\n if (document.getElementById(elementId)) {\n return;\n }\n const defaultCSSNode = document.createElement('style');\n defaultCSSNode.innerHTML = defaultCSS;\n defaultCSSNode.id = elementId;\n document.body.appendChild(defaultCSSNode);\n }\n\n /**\n * @private\n */\n _adjustPosition() { // (Re)positions spinner DIV over the center of the canvas - called by Canvas\n if (this._isCustom) {\n return;\n }\n const canvas = this._canvas;\n const element = this._element;\n const style = element.style;\n style[\"left\"] = (canvas.offsetLeft + (canvas.clientWidth * 0.5) - (element.clientWidth * 0.5)) + \"px\";\n style[\"top\"] = (canvas.offsetTop + (canvas.clientHeight * 0.5) - (element.clientHeight * 0.5)) + \"px\";\n }\n\n /**\n * Sets the number of processes this Spinner represents.\n *\n * The Spinner is visible while this property is greater than zero.\n *\n * Increment this property whenever you commence some process during which you want the Spinner to be visible, then decrement it again when the process is complete.\n *\n * Clamps to zero if you attempt to set to to a negative value.\n *\n * Fires a {@link Spinner#processes:event} event on change.\n\n * Default value is ````0````.\n *\n * @param {Number} value New processes count.\n */\n set processes(value) {\n value = value || 0;\n if (this._processes === value) {\n return;\n }\n if (value < 0) {\n return;\n }\n const prevValue = this._processes;\n this._processes = value;\n const element = this._element;\n if (element) {\n element.style[\"visibility\"] = (this._processes > 0) ? \"visible\" : \"hidden\";\n }\n /**\n Fired whenever this Spinner's {@link Spinner#visible} property changes.\n\n @event processes\n @param value The property's new value\n */\n this.fire(\"processes\", this._processes);\n if (this._processes === 0 && this._processes !== prevValue) {\n /**\n Fired whenever this Spinner's {@link Spinner#visible} property becomes zero.\n\n @event zeroProcesses\n */\n this.fire(\"zeroProcesses\", this._processes);\n }\n }\n\n /**\n * Gets the number of processes this Spinner represents.\n *\n * The Spinner is visible while this property is greater than zero.\n *\n * @returns {Number} Current processes count.\n */\n get processes() {\n return this._processes;\n }\n\n _destroy() {\n if (this._element && (!this._isCustom)) {\n this._element.parentNode.removeChild(this._element);\n this._element = null;\n }\n const styleElement = document.getElementById(\"xeokit-spinner-css\");\n if (styleElement) {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n}\n\nexport {Spinner};\n", @@ -63961,7 +64489,7 @@ "lineNumber": 1 }, { - "__docId__": 3293, + "__docId__": 3311, "kind": "variable", "name": "defaultCSS", "memberof": "src/viewer/scene/canvas/Spinner.js", @@ -63982,7 +64510,7 @@ "ignore": true }, { - "__docId__": 3294, + "__docId__": 3312, "kind": "class", "name": "Spinner", "memberof": "src/viewer/scene/canvas/Spinner.js", @@ -64000,7 +64528,7 @@ ] }, { - "__docId__": 3295, + "__docId__": 3313, "kind": "get", "name": "type", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64019,7 +64547,7 @@ } }, { - "__docId__": 3296, + "__docId__": 3314, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64033,7 +64561,7 @@ "ignore": true }, { - "__docId__": 3297, + "__docId__": 3315, "kind": "member", "name": "_canvas", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64051,7 +64579,7 @@ } }, { - "__docId__": 3298, + "__docId__": 3316, "kind": "member", "name": "_element", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64069,7 +64597,7 @@ } }, { - "__docId__": 3299, + "__docId__": 3317, "kind": "member", "name": "_isCustom", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64087,7 +64615,7 @@ } }, { - "__docId__": 3302, + "__docId__": 3320, "kind": "method", "name": "_createDefaultSpinner", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64103,7 +64631,7 @@ "return": null }, { - "__docId__": 3305, + "__docId__": 3323, "kind": "method", "name": "_injectDefaultCSS", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64119,7 +64647,7 @@ "return": null }, { - "__docId__": 3306, + "__docId__": 3324, "kind": "method", "name": "_adjustPosition", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64135,7 +64663,7 @@ "return": null }, { - "__docId__": 3307, + "__docId__": 3325, "kind": "set", "name": "processes", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64160,7 +64688,7 @@ ] }, { - "__docId__": 3308, + "__docId__": 3326, "kind": "member", "name": "_processes", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64178,7 +64706,7 @@ } }, { - "__docId__": 3309, + "__docId__": 3327, "kind": "get", "name": "processes", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64210,7 +64738,7 @@ } }, { - "__docId__": 3310, + "__docId__": 3328, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -64227,7 +64755,7 @@ "return": null }, { - "__docId__": 3312, + "__docId__": 3330, "kind": "file", "name": "src/viewer/scene/constants/constants.js", "content": "/**\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 * Unsigned 8-bit integer type.\n */\nexport const UnsignedByteType = 1009;\n\n/**\n * Signed 8-bit integer type.\n */\nexport const ByteType = 1010;\n\n/**\n * Signed 16-bit integer type.\n */\nexport const ShortType = 1011;\n\n/**\n * Unsigned 16-bit integer type.\n */\nexport const UnsignedShortType = 1012;\n\n/**\n * Signed 32-bit integer type.\n */\nexport const IntType = 1013;\n\n/**\n * Unsigned 32-bit integer type.\n */\nexport const UnsignedIntType = 1014;\n\n/**\n * Signed 32-bit floating-point type.\n */\nexport const FloatType = 1015;\n\n/**\n * Signed 16-bit half-precision floating-point type.\n */\nexport const HalfFloatType = 1016;\n\n/**\n * Texture packing mode in which each ````RGBA```` channel is packed into 4 bits, for a combined total of 16 bits.\n */\nexport const UnsignedShort4444Type = 1017;\n\n/**\n * Texture packing mode in which the ````RGB```` channels are each packed into 5 bits, and the ````A```` channel is packed into 1 bit, for a combined total of 16 bits.\n */\nexport const UnsignedShort5551Type = 1018;\n\n/**\n * Unsigned integer type for 24-bit depth texture data.\n */\nexport const UnsignedInt248Type = 1020;\n\n/**\n * Texture sampling mode that discards the ````RGBA```` components and just reads the ````A```` component.\n */\nexport const AlphaFormat = 1021;\n\n/**\n * Texture sampling mode that discards the ````A```` component and reads the ````RGB```` components.\n */\nexport const RGBFormat = 1022;\n\n/**\n * Texture sampling mode that reads the ````RGBA```` components.\n */\nexport const RGBAFormat = 1023;\n\n/**\n * Texture sampling mode that reads each ````RGB```` texture component as a luminance value, converted to a float and clamped\n * to ````[0,1]````, while always reading the ````A```` channel as ````1.0````.\n */\nexport const LuminanceFormat = 1024;\n\n/**\n * Texture sampling mode that reads each of the ````RGBA```` texture components as a luminance/alpha value, converted to a float and clamped to ````[0,1]````.\n */\nexport const LuminanceAlphaFormat = 1025;\n\n/**\n * Texture sampling mode that reads each element as a single depth value, converts it to a float and clamps to ````[0,1]````.\n */\nexport const DepthFormat = 1026;\n\n/**\n * Texture sampling mode that\n */\nexport const DepthStencilFormat = 1027;\n\n/**\n * Texture sampling mode that discards the ````GBA```` components and just reads the ````R```` component.\n */\nexport const RedFormat = 1028;\n\n/**\n * Texture sampling mode that discards the ````GBA```` components and just reads the ````R```` component, as an integer instead of as a float.\n */\nexport const RedIntegerFormat = 1029;\n\n/**\n * Texture sampling mode that discards the ````A```` and ````B```` components and just reads the ````R```` and ````G```` components.\n */\nexport const RGFormat = 1030;\n\n/**\n * Texture sampling mode that discards the ````A```` and ````B```` components and just reads the ````R```` and ````G```` components, as integers instead of floats.\n */\nexport const RGIntegerFormat = 1031;\n\n/**\n * Texture sampling mode that reads the ````RGBA```` components as integers instead of floats.\n */\nexport const RGBAIntegerFormat = 1033;\n\n/**\n * Texture format mode in which the texture is formatted as a DXT1 compressed ````RGB```` image.\n */\nexport const RGB_S3TC_DXT1_Format = 33776;\n\n/**\n * Texture format mode in which the texture is formatted as a DXT1 compressed ````RGBA```` image.\n */\nexport const RGBA_S3TC_DXT1_Format = 33777;\n\n/**\n * Texture format mode in which the texture is formatted as a DXT3 compressed ````RGBA```` image.\n */\nexport const RGBA_S3TC_DXT3_Format = 33778;\n\n/**\n * Texture format mode in which the texture is formatted as a DXT5 compressed ````RGBA```` image.\n */\nexport const RGBA_S3TC_DXT5_Format = 33779;\n\n/**\n * Texture format mode in which the texture is formatted as a PVRTC compressed\n * image, with ````RGB```` compression in 4-bit mode and one block for each 4×4 pixels.\n */\nexport const RGB_PVRTC_4BPPV1_Format = 35840;\n\n/**\n * Texture format mode in which the texture is formatted as a PVRTC compressed\n * image, with ````RGB```` compression in 2-bit mode and one block for each 8×4 pixels.\n */\nexport const RGB_PVRTC_2BPPV1_Format = 35841;\n\n/**\n * Texture format mode in which the texture is formatted as a PVRTC compressed\n * image, with ````RGBA```` compression in 4-bit mode and one block for each 4×4 pixels.\n */\nexport const RGBA_PVRTC_4BPPV1_Format = 35842;\n\n/**\n * Texture format mode in which the texture is formatted as a PVRTC compressed\n * image, with ````RGBA```` compression in 2-bit mode and one block for each 8×4 pixels.\n */\nexport const RGBA_PVRTC_2BPPV1_Format = 35843;\n\n/**\n * Texture format mode in which the texture is formatted as an ETC1 compressed\n * ````RGB```` image.\n */\nexport const RGB_ETC1_Format = 36196;\n\n/**\n * Texture format mode in which the texture is formatted as an ETC2 compressed\n * ````RGB```` image.\n */\nexport const RGB_ETC2_Format = 37492;\n\n/**\n * Texture format mode in which the texture is formatted as an ETC2 compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ETC2_EAC_Format = 37496;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_4x4_Format = 37808;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_5x4_Format = 37809;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_5x5_Format = 37810;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_6x5_Format = 37811;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_6x6_Format = 37812;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_8x5_Format = 37813;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_8x6_Format = 37814;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_8x8_Format = 37815;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_10x5_Format = 37816;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_10x6_Format = 37817;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_10x8_Format = 37818;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_10x10_Format = 37819;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_12x10_Format = 37820;\n\n/**\n * Texture format mode in which the texture is formatted as an ATSC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_ASTC_12x12_Format = 37821;\n\n/**\n * Texture format mode in which the texture is formatted as an BPTC compressed\n * ````RGBA```` image.\n */\nexport const RGBA_BPTC_Format = 36492;\n\n/**\n * Texture encoding mode in which the texture image is in linear color space.\n */\nexport const LinearEncoding = 3000;\n\n/**\n * Texture encoding mode in which the texture image is in sRGB color space.\n */\nexport const sRGBEncoding = 3001;\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;\n\n/**\n * Media type for compressed texture data.\n */\nexport const CompressedMediaType = 10003;", @@ -64238,7 +64766,7 @@ "lineNumber": 1 }, { - "__docId__": 3313, + "__docId__": 3331, "kind": "variable", "name": "RepeatWrapping", "memberof": "src/viewer/scene/constants/constants.js", @@ -64257,7 +64785,7 @@ } }, { - "__docId__": 3314, + "__docId__": 3332, "kind": "variable", "name": "ClampToEdgeWrapping", "memberof": "src/viewer/scene/constants/constants.js", @@ -64276,7 +64804,7 @@ } }, { - "__docId__": 3315, + "__docId__": 3333, "kind": "variable", "name": "MirroredRepeatWrapping", "memberof": "src/viewer/scene/constants/constants.js", @@ -64295,7 +64823,7 @@ } }, { - "__docId__": 3316, + "__docId__": 3334, "kind": "variable", "name": "NearestFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64314,7 +64842,7 @@ } }, { - "__docId__": 3317, + "__docId__": 3335, "kind": "variable", "name": "NearestMipMapNearestFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64333,7 +64861,7 @@ } }, { - "__docId__": 3318, + "__docId__": 3336, "kind": "variable", "name": "NearestMipmapNearestFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64352,7 +64880,7 @@ } }, { - "__docId__": 3319, + "__docId__": 3337, "kind": "variable", "name": "NearestMipmapLinearFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64371,7 +64899,7 @@ } }, { - "__docId__": 3320, + "__docId__": 3338, "kind": "variable", "name": "NearestMipMapLinearFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64390,7 +64918,7 @@ } }, { - "__docId__": 3321, + "__docId__": 3339, "kind": "variable", "name": "LinearFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64409,7 +64937,7 @@ } }, { - "__docId__": 3322, + "__docId__": 3340, "kind": "variable", "name": "LinearMipmapNearestFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64428,7 +64956,7 @@ } }, { - "__docId__": 3323, + "__docId__": 3341, "kind": "variable", "name": "LinearMipMapNearestFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64447,7 +64975,7 @@ } }, { - "__docId__": 3324, + "__docId__": 3342, "kind": "variable", "name": "LinearMipmapLinearFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64466,7 +64994,7 @@ } }, { - "__docId__": 3325, + "__docId__": 3343, "kind": "variable", "name": "LinearMipMapLinearFilter", "memberof": "src/viewer/scene/constants/constants.js", @@ -64485,7 +65013,7 @@ } }, { - "__docId__": 3326, + "__docId__": 3344, "kind": "variable", "name": "UnsignedByteType", "memberof": "src/viewer/scene/constants/constants.js", @@ -64504,7 +65032,7 @@ } }, { - "__docId__": 3327, + "__docId__": 3345, "kind": "variable", "name": "ByteType", "memberof": "src/viewer/scene/constants/constants.js", @@ -64523,7 +65051,7 @@ } }, { - "__docId__": 3328, + "__docId__": 3346, "kind": "variable", "name": "ShortType", "memberof": "src/viewer/scene/constants/constants.js", @@ -64542,7 +65070,7 @@ } }, { - "__docId__": 3329, + "__docId__": 3347, "kind": "variable", "name": "UnsignedShortType", "memberof": "src/viewer/scene/constants/constants.js", @@ -64561,7 +65089,7 @@ } }, { - "__docId__": 3330, + "__docId__": 3348, "kind": "variable", "name": "IntType", "memberof": "src/viewer/scene/constants/constants.js", @@ -64580,7 +65108,7 @@ } }, { - "__docId__": 3331, + "__docId__": 3349, "kind": "variable", "name": "UnsignedIntType", "memberof": "src/viewer/scene/constants/constants.js", @@ -64599,7 +65127,7 @@ } }, { - "__docId__": 3332, + "__docId__": 3350, "kind": "variable", "name": "FloatType", "memberof": "src/viewer/scene/constants/constants.js", @@ -64618,7 +65146,7 @@ } }, { - "__docId__": 3333, + "__docId__": 3351, "kind": "variable", "name": "HalfFloatType", "memberof": "src/viewer/scene/constants/constants.js", @@ -64637,7 +65165,7 @@ } }, { - "__docId__": 3334, + "__docId__": 3352, "kind": "variable", "name": "UnsignedShort4444Type", "memberof": "src/viewer/scene/constants/constants.js", @@ -64656,7 +65184,7 @@ } }, { - "__docId__": 3335, + "__docId__": 3353, "kind": "variable", "name": "UnsignedShort5551Type", "memberof": "src/viewer/scene/constants/constants.js", @@ -64675,7 +65203,7 @@ } }, { - "__docId__": 3336, + "__docId__": 3354, "kind": "variable", "name": "UnsignedInt248Type", "memberof": "src/viewer/scene/constants/constants.js", @@ -64694,7 +65222,7 @@ } }, { - "__docId__": 3337, + "__docId__": 3355, "kind": "variable", "name": "AlphaFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64713,7 +65241,7 @@ } }, { - "__docId__": 3338, + "__docId__": 3356, "kind": "variable", "name": "RGBFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64732,7 +65260,7 @@ } }, { - "__docId__": 3339, + "__docId__": 3357, "kind": "variable", "name": "RGBAFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64751,7 +65279,7 @@ } }, { - "__docId__": 3340, + "__docId__": 3358, "kind": "variable", "name": "LuminanceFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64770,7 +65298,7 @@ } }, { - "__docId__": 3341, + "__docId__": 3359, "kind": "variable", "name": "LuminanceAlphaFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64789,7 +65317,7 @@ } }, { - "__docId__": 3342, + "__docId__": 3360, "kind": "variable", "name": "DepthFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64808,7 +65336,7 @@ } }, { - "__docId__": 3343, + "__docId__": 3361, "kind": "variable", "name": "DepthStencilFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64827,7 +65355,7 @@ } }, { - "__docId__": 3344, + "__docId__": 3362, "kind": "variable", "name": "RedFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64846,7 +65374,7 @@ } }, { - "__docId__": 3345, + "__docId__": 3363, "kind": "variable", "name": "RedIntegerFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64865,7 +65393,7 @@ } }, { - "__docId__": 3346, + "__docId__": 3364, "kind": "variable", "name": "RGFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64884,7 +65412,7 @@ } }, { - "__docId__": 3347, + "__docId__": 3365, "kind": "variable", "name": "RGIntegerFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64903,7 +65431,7 @@ } }, { - "__docId__": 3348, + "__docId__": 3366, "kind": "variable", "name": "RGBAIntegerFormat", "memberof": "src/viewer/scene/constants/constants.js", @@ -64922,7 +65450,7 @@ } }, { - "__docId__": 3349, + "__docId__": 3367, "kind": "variable", "name": "RGB_S3TC_DXT1_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -64941,7 +65469,7 @@ } }, { - "__docId__": 3350, + "__docId__": 3368, "kind": "variable", "name": "RGBA_S3TC_DXT1_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -64960,7 +65488,7 @@ } }, { - "__docId__": 3351, + "__docId__": 3369, "kind": "variable", "name": "RGBA_S3TC_DXT3_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -64979,7 +65507,7 @@ } }, { - "__docId__": 3352, + "__docId__": 3370, "kind": "variable", "name": "RGBA_S3TC_DXT5_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -64998,7 +65526,7 @@ } }, { - "__docId__": 3353, + "__docId__": 3371, "kind": "variable", "name": "RGB_PVRTC_4BPPV1_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65017,7 +65545,7 @@ } }, { - "__docId__": 3354, + "__docId__": 3372, "kind": "variable", "name": "RGB_PVRTC_2BPPV1_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65036,7 +65564,7 @@ } }, { - "__docId__": 3355, + "__docId__": 3373, "kind": "variable", "name": "RGBA_PVRTC_4BPPV1_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65055,7 +65583,7 @@ } }, { - "__docId__": 3356, + "__docId__": 3374, "kind": "variable", "name": "RGBA_PVRTC_2BPPV1_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65074,7 +65602,7 @@ } }, { - "__docId__": 3357, + "__docId__": 3375, "kind": "variable", "name": "RGB_ETC1_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65093,7 +65621,7 @@ } }, { - "__docId__": 3358, + "__docId__": 3376, "kind": "variable", "name": "RGB_ETC2_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65112,7 +65640,7 @@ } }, { - "__docId__": 3359, + "__docId__": 3377, "kind": "variable", "name": "RGBA_ETC2_EAC_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65131,7 +65659,7 @@ } }, { - "__docId__": 3360, + "__docId__": 3378, "kind": "variable", "name": "RGBA_ASTC_4x4_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65150,7 +65678,7 @@ } }, { - "__docId__": 3361, + "__docId__": 3379, "kind": "variable", "name": "RGBA_ASTC_5x4_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65169,7 +65697,7 @@ } }, { - "__docId__": 3362, + "__docId__": 3380, "kind": "variable", "name": "RGBA_ASTC_5x5_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65188,7 +65716,7 @@ } }, { - "__docId__": 3363, + "__docId__": 3381, "kind": "variable", "name": "RGBA_ASTC_6x5_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65207,7 +65735,7 @@ } }, { - "__docId__": 3364, + "__docId__": 3382, "kind": "variable", "name": "RGBA_ASTC_6x6_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65226,7 +65754,7 @@ } }, { - "__docId__": 3365, + "__docId__": 3383, "kind": "variable", "name": "RGBA_ASTC_8x5_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65245,7 +65773,7 @@ } }, { - "__docId__": 3366, + "__docId__": 3384, "kind": "variable", "name": "RGBA_ASTC_8x6_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65264,7 +65792,7 @@ } }, { - "__docId__": 3367, + "__docId__": 3385, "kind": "variable", "name": "RGBA_ASTC_8x8_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65283,7 +65811,7 @@ } }, { - "__docId__": 3368, + "__docId__": 3386, "kind": "variable", "name": "RGBA_ASTC_10x5_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65302,7 +65830,7 @@ } }, { - "__docId__": 3369, + "__docId__": 3387, "kind": "variable", "name": "RGBA_ASTC_10x6_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65321,7 +65849,7 @@ } }, { - "__docId__": 3370, + "__docId__": 3388, "kind": "variable", "name": "RGBA_ASTC_10x8_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65340,7 +65868,7 @@ } }, { - "__docId__": 3371, + "__docId__": 3389, "kind": "variable", "name": "RGBA_ASTC_10x10_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65359,7 +65887,7 @@ } }, { - "__docId__": 3372, + "__docId__": 3390, "kind": "variable", "name": "RGBA_ASTC_12x10_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65378,7 +65906,7 @@ } }, { - "__docId__": 3373, + "__docId__": 3391, "kind": "variable", "name": "RGBA_ASTC_12x12_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65397,7 +65925,7 @@ } }, { - "__docId__": 3374, + "__docId__": 3392, "kind": "variable", "name": "RGBA_BPTC_Format", "memberof": "src/viewer/scene/constants/constants.js", @@ -65416,7 +65944,7 @@ } }, { - "__docId__": 3375, + "__docId__": 3393, "kind": "variable", "name": "LinearEncoding", "memberof": "src/viewer/scene/constants/constants.js", @@ -65435,7 +65963,7 @@ } }, { - "__docId__": 3376, + "__docId__": 3394, "kind": "variable", "name": "sRGBEncoding", "memberof": "src/viewer/scene/constants/constants.js", @@ -65454,7 +65982,7 @@ } }, { - "__docId__": 3377, + "__docId__": 3395, "kind": "variable", "name": "GIFMediaType", "memberof": "src/viewer/scene/constants/constants.js", @@ -65473,7 +66001,7 @@ } }, { - "__docId__": 3378, + "__docId__": 3396, "kind": "variable", "name": "JPEGMediaType", "memberof": "src/viewer/scene/constants/constants.js", @@ -65492,7 +66020,7 @@ } }, { - "__docId__": 3379, + "__docId__": 3397, "kind": "variable", "name": "PNGMediaType", "memberof": "src/viewer/scene/constants/constants.js", @@ -65511,7 +66039,7 @@ } }, { - "__docId__": 3380, + "__docId__": 3398, "kind": "variable", "name": "CompressedMediaType", "memberof": "src/viewer/scene/constants/constants.js", @@ -65530,7 +66058,7 @@ } }, { - "__docId__": 3381, + "__docId__": 3399, "kind": "file", "name": "src/viewer/scene/core.js", "content": "import {Queue} from './utils/Queue.js';\nimport {Map} from './utils/Map.js';\nimport {stats} from './stats.js';\nimport {utils} from './utils.js';\n\nconst scenesRenderInfo = {}; // Used for throttling FPS for each Scene\nconst sceneIDMap = new Map(); // Ensures unique scene IDs\nconst taskQueue = new Queue(); // Task queue, which is pumped on each frame; tasks are pushed to it with calls to xeokit.schedule\nconst tickEvent = {sceneId: null, time: null, startTime: null, prevTime: null, deltaTime: null};\nconst taskBudget = 10; // Millisecs we're allowed to spend on tasks in each frame\nconst fpsSamples = [];\nconst numFPSSamples = 30;\n\nlet lastTime = 0;\nlet elapsedTime;\nlet totalFPS = 0;\n\n\n/**\n * @private\n */\nfunction Core() {\n\n /**\n Semantic version number. The value for this is set by an expression that's concatenated to\n the end of the built binary by the xeokit build script.\n @property version\n @namespace xeokit\n @type {String}\n */\n this.version = \"1.0.0\";\n\n /**\n Existing {@link Scene}s , mapped to their IDs\n @property scenes\n @namespace xeokit\n @type {Scene}\n */\n this.scenes = {};\n\n this._superTypes = {}; // For each component type, a list of its supertypes, ordered upwards in the hierarchy.\n\n /**\n * Registers a scene on xeokit.\n * This is called within the xeokit.Scene constructor.\n * @private\n */\n this._addScene = function (scene) {\n if (scene.id) { // User-supplied ID\n if (core.scenes[scene.id]) {\n console.error(`[ERROR] Scene ${utils.inQuotes(scene.id)} already exists`);\n return;\n }\n } else { // Auto-generated ID\n scene.id = sceneIDMap.addItem({});\n }\n core.scenes[scene.id] = scene;\n const ticksPerOcclusionTest = scene.ticksPerOcclusionTest;\n const ticksPerRender = scene.ticksPerRender;\n scenesRenderInfo[scene.id] = {\n ticksPerOcclusionTest: ticksPerOcclusionTest,\n ticksPerRender: ticksPerRender,\n renderCountdown: ticksPerRender\n };\n stats.components.scenes++;\n scene.once(\"destroyed\", () => { // Unregister destroyed scenes\n sceneIDMap.removeItem(scene.id);\n delete core.scenes[scene.id];\n delete scenesRenderInfo[scene.id];\n stats.components.scenes--;\n });\n };\n\n /**\n * @private\n */\n this.clear = function () {\n let scene;\n for (const id in core.scenes) {\n if (core.scenes.hasOwnProperty(id)) {\n scene = core.scenes[id];\n // Only clear the default Scene\n // but destroy all the others\n if (id === \"default.scene\") {\n scene.clear();\n } else {\n scene.destroy();\n delete core.scenes[scene.id];\n }\n }\n }\n };\n\n /**\n * Schedule a task to run at the next frame.\n *\n * Internally, this pushes the task to a FIFO queue. Within each frame interval, xeokit processes the queue\n * for a certain period of time, popping tasks and running them. After each frame interval, tasks that did not\n * get a chance to run during the task are left in the queue to be run next time.\n *\n * @param {Function} callback Callback that runs the task.\n * @param {Object} [scope] Scope for the callback.\n */\n this.scheduleTask = function (callback, scope = null) {\n taskQueue.push(callback);\n taskQueue.push(scope);\n };\n\n this.runTasks = function (until = -1) { // Pops and processes tasks in the queue, until the given number of milliseconds has elapsed.\n let time = (new Date()).getTime();\n let callback;\n let scope;\n let tasksRun = 0;\n while (taskQueue.length > 0 && (until < 0 || time < until)) {\n callback = taskQueue.shift();\n scope = taskQueue.shift();\n if (scope) {\n callback.call(scope);\n } else {\n callback();\n }\n time = (new Date()).getTime();\n tasksRun++;\n }\n return tasksRun;\n };\n\n this.getNumTasks = function () {\n return taskQueue.length;\n };\n}\n\n/**\n * @private\n * @type {Core}\n */\nconst core = new Core();\n\nconst frame = function () {\n let time = Date.now();\n elapsedTime = time - lastTime;\n if (lastTime > 0 && elapsedTime > 0) { // Log FPS stats\n var newFPS = 1000 / elapsedTime; // Moving average of FPS\n totalFPS += newFPS;\n fpsSamples.push(newFPS);\n if (fpsSamples.length >= numFPSSamples) {\n totalFPS -= fpsSamples.shift();\n }\n stats.frame.fps = Math.round(totalFPS / fpsSamples.length);\n }\n for (let id in core.scenes) {\n core.scenes[id].compile();\n }\n runTasks(time);\n lastTime = time;\n};\n\nfunction customSetInterval(callback, interval) {\n let expected = Date.now() + interval;\n function loop() {\n const elapsed = Date.now() - expected;\n callback();\n expected += interval;\n setTimeout(loop, Math.max(0, interval - elapsed));\n }\n loop();\n return {\n cancel: function() {\n // No need to do anything, setTimeout cannot be directly cancelled\n }\n };\n}\n\ncustomSetInterval(() => {\n frame();\n}, 100);\n\nconst renderFrame = function () {\n let time = Date.now();\n elapsedTime = time - lastTime;\n if (lastTime > 0 && elapsedTime > 0) { // Log FPS stats\n var newFPS = 1000 / elapsedTime; // Moving average of FPS\n totalFPS += newFPS;\n fpsSamples.push(newFPS);\n if (fpsSamples.length >= numFPSSamples) {\n totalFPS -= fpsSamples.shift();\n }\n stats.frame.fps = Math.round(totalFPS / fpsSamples.length);\n }\n runTasks(time);\n fireTickEvents(time);\n renderScenes();\n (window.requestPostAnimationFrame !== undefined) ? window.requestPostAnimationFrame(frame) : requestAnimationFrame(renderFrame);\n};\n\nrenderFrame();\n\nfunction runTasks(time) { // Process as many enqueued tasks as we can within the per-frame task budget\n const tasksRun = core.runTasks(time + taskBudget);\n const tasksScheduled = core.getNumTasks();\n stats.frame.tasksRun = tasksRun;\n stats.frame.tasksScheduled = tasksScheduled;\n stats.frame.tasksBudget = taskBudget;\n}\n\nfunction fireTickEvents(time) { // Fire tick event on each Scene\n tickEvent.time = time;\n for (var id in core.scenes) {\n if (core.scenes.hasOwnProperty(id)) {\n var scene = core.scenes[id];\n tickEvent.sceneId = id;\n tickEvent.startTime = scene.startTime;\n tickEvent.deltaTime = tickEvent.prevTime != null ? tickEvent.time - tickEvent.prevTime : 0;\n /**\n * Fired on each game loop iteration.\n *\n * @event tick\n * @param {String} sceneID The ID of this Scene.\n * @param {Number} startTime The time in seconds since 1970 that this Scene was instantiated.\n * @param {Number} time The time in seconds since 1970 of this \"tick\" event.\n * @param {Number} prevTime The time of the previous \"tick\" event from this Scene.\n * @param {Number} deltaTime The time in seconds since the previous \"tick\" event from this Scene.\n */\n scene.fire(\"tick\", tickEvent, true);\n }\n }\n tickEvent.prevTime = time;\n}\n\nfunction renderScenes() {\n const scenes = core.scenes;\n const forceRender = false;\n let scene;\n let renderInfo;\n let ticksPerOcclusionTest;\n let ticksPerRender;\n let id;\n for (id in scenes) {\n if (scenes.hasOwnProperty(id)) {\n\n scene = scenes[id];\n renderInfo = scenesRenderInfo[id];\n\n if (!renderInfo) {\n renderInfo = scenesRenderInfo[id] = {}; // FIXME\n }\n\n ticksPerOcclusionTest = scene.ticksPerOcclusionTest;\n if (renderInfo.ticksPerOcclusionTest !== ticksPerOcclusionTest) {\n renderInfo.ticksPerOcclusionTest = ticksPerOcclusionTest;\n renderInfo.renderCountdown = ticksPerOcclusionTest;\n }\n if (--scene.occlusionTestCountdown <= 0) {\n scene.doOcclusionTest();\n scene.occlusionTestCountdown = ticksPerOcclusionTest;\n }\n\n ticksPerRender = scene.ticksPerRender;\n if (renderInfo.ticksPerRender !== ticksPerRender) {\n renderInfo.ticksPerRender = ticksPerRender;\n renderInfo.renderCountdown = ticksPerRender;\n }\n if (--renderInfo.renderCountdown === 0) {\n scene.render(forceRender);\n renderInfo.renderCountdown = ticksPerRender;\n }\n }\n }\n}\n\nexport {core};", @@ -65541,7 +66069,7 @@ "lineNumber": 1 }, { - "__docId__": 3382, + "__docId__": 3400, "kind": "variable", "name": "scenesRenderInfo", "memberof": "src/viewer/scene/core.js", @@ -65562,7 +66090,7 @@ "ignore": true }, { - "__docId__": 3383, + "__docId__": 3401, "kind": "variable", "name": "sceneIDMap", "memberof": "src/viewer/scene/core.js", @@ -65583,7 +66111,7 @@ "ignore": true }, { - "__docId__": 3384, + "__docId__": 3402, "kind": "variable", "name": "taskQueue", "memberof": "src/viewer/scene/core.js", @@ -65604,7 +66132,7 @@ "ignore": true }, { - "__docId__": 3385, + "__docId__": 3403, "kind": "variable", "name": "tickEvent", "memberof": "src/viewer/scene/core.js", @@ -65625,7 +66153,7 @@ "ignore": true }, { - "__docId__": 3386, + "__docId__": 3404, "kind": "variable", "name": "taskBudget", "memberof": "src/viewer/scene/core.js", @@ -65646,7 +66174,7 @@ "ignore": true }, { - "__docId__": 3387, + "__docId__": 3405, "kind": "variable", "name": "fpsSamples", "memberof": "src/viewer/scene/core.js", @@ -65667,7 +66195,7 @@ "ignore": true }, { - "__docId__": 3388, + "__docId__": 3406, "kind": "variable", "name": "numFPSSamples", "memberof": "src/viewer/scene/core.js", @@ -65688,7 +66216,7 @@ "ignore": true }, { - "__docId__": 3389, + "__docId__": 3407, "kind": "variable", "name": "lastTime", "memberof": "src/viewer/scene/core.js", @@ -65709,7 +66237,7 @@ "ignore": true }, { - "__docId__": 3390, + "__docId__": 3408, "kind": "variable", "name": "totalFPS", "memberof": "src/viewer/scene/core.js", @@ -65730,7 +66258,7 @@ "ignore": true }, { - "__docId__": 3391, + "__docId__": 3409, "kind": "function", "name": "Core", "memberof": "src/viewer/scene/core.js", @@ -65749,7 +66277,7 @@ "return": null }, { - "__docId__": 3392, + "__docId__": 3410, "kind": "function", "name": "frame", "memberof": "src/viewer/scene/core.js", @@ -65769,7 +66297,7 @@ "ignore": true }, { - "__docId__": 3393, + "__docId__": 3411, "kind": "function", "name": "customSetInterval", "memberof": "src/viewer/scene/core.js", @@ -65806,7 +66334,7 @@ "ignore": true }, { - "__docId__": 3394, + "__docId__": 3412, "kind": "function", "name": "renderFrame", "memberof": "src/viewer/scene/core.js", @@ -65826,7 +66354,7 @@ "ignore": true }, { - "__docId__": 3395, + "__docId__": 3413, "kind": "function", "name": "runTasks", "memberof": "src/viewer/scene/core.js", @@ -65853,7 +66381,7 @@ "ignore": true }, { - "__docId__": 3396, + "__docId__": 3414, "kind": "function", "name": "fireTickEvents", "memberof": "src/viewer/scene/core.js", @@ -65880,7 +66408,7 @@ "ignore": true }, { - "__docId__": 3397, + "__docId__": 3415, "kind": "function", "name": "renderScenes", "memberof": "src/viewer/scene/core.js", @@ -65900,7 +66428,7 @@ "ignore": true }, { - "__docId__": 3398, + "__docId__": 3416, "kind": "variable", "name": "core", "memberof": "src/viewer/scene/core.js", @@ -65923,7 +66451,7 @@ "ignore": true }, { - "__docId__": 3399, + "__docId__": 3417, "kind": "file", "name": "src/viewer/scene/geometry/Geometry.js", "content": "import {Component} from '../Component.js';\nimport {stats} from '../stats.js';\n\n/**\n * @desc Defines a shape for one or more {@link Mesh}es.\n *\n * * {@link ReadableGeometry} is a subclass that stores its data in both browser and GPU memory. Use ReadableGeometry when you need to keep the geometry arrays in browser memory.\n * * {@link VBOGeometry} is a subclass that stores its data solely in GPU memory. Use VBOGeometry when you need a lower memory footprint and don't need to keep the geometry data in browser memory.\n */\nclass Geometry extends Component {\n\n /** @private */\n get type() {\n return \"Geometry\";\n }\n\n /** @private */\n get isGeometry() {\n return true;\n }\n\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n stats.memory.meshes++;\n }\n\n destroy() {\n super.destroy();\n stats.memory.meshes--;\n }\n}\n\nexport {Geometry};\n", @@ -65934,7 +66462,7 @@ "lineNumber": 1 }, { - "__docId__": 3400, + "__docId__": 3418, "kind": "class", "name": "Geometry", "memberof": "src/viewer/scene/geometry/Geometry.js", @@ -65952,7 +66480,7 @@ ] }, { - "__docId__": 3401, + "__docId__": 3419, "kind": "get", "name": "type", "memberof": "src/viewer/scene/geometry/Geometry.js~Geometry", @@ -65971,7 +66499,7 @@ } }, { - "__docId__": 3402, + "__docId__": 3420, "kind": "get", "name": "isGeometry", "memberof": "src/viewer/scene/geometry/Geometry.js~Geometry", @@ -65990,7 +66518,7 @@ } }, { - "__docId__": 3403, + "__docId__": 3421, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/geometry/Geometry.js~Geometry", @@ -66004,7 +66532,7 @@ "undocument": true }, { - "__docId__": 3404, + "__docId__": 3422, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/geometry/Geometry.js~Geometry", @@ -66020,7 +66548,7 @@ "return": null }, { - "__docId__": 3405, + "__docId__": 3423, "kind": "file", "name": "src/viewer/scene/geometry/ReadableGeometry.js", "content": "import {Geometry} from './Geometry.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {ArrayBuf} from '../webgl/ArrayBuf.js';\nimport {math} from '../math/math.js';\nimport {stats} from '../stats.js';\nimport {buildEdgeIndices} from '../math/buildEdgeIndices.js';\nimport {geometryCompressionUtils} from '../math/geometryCompressionUtils.js';\n\nconst memoryStats = stats.memory;\nconst tempAABB = math.AABB3();\n\n/**\n * @desc A {@link Geometry} that keeps its geometry data in both browser and GPU memory.\n *\n * ReadableGeometry uses more memory than {@link VBOGeometry}, which only stores its geometry data in GPU memory.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a ReadableGeometry that defines a single triangle, plus a {@link PhongMaterial} with diffuse {@link Texture}:\n *\n * [[Run this example](/examples/index.html#geometry_ReadableGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * const myMesh = new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, {\n * primitive: \"triangles\",\n * positions: [0.0, 3, 0.0, -3, -3, 0.0, 3, -3, 0.0],\n * normals: [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0],\n * uv: [0.0, 0.0, 0.5, 1.0, 1.0, 0.0],\n * indices: [0, 1, 2]\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * })\n * });\n *\n * // Get geometry data from browser memory:\n *\n * const positions = myMesh.geometry.positions; // Flat arrays\n * const normals = myMesh.geometry.normals;\n * const uv = myMesh.geometry.uv;\n * const indices = myMesh.geometry.indices;\n *\n * ````\n */\nclass ReadableGeometry extends Geometry {\n\n /**\n @private\n */\n get type() {\n return \"ReadableGeometry\";\n }\n\n /**\n * @private\n * @returns {Boolean}\n */\n get isReadableGeometry() {\n return true;\n }\n\n /**\n *\n @class ReadableGeometry\n @module xeokit\n @submodule geometry\n @constructor\n @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n @param {*} [cfg] Configs\n @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene},\n generated automatically when omitted.\n @param {String:Object} [cfg.meta] Optional map of user-defined metadata to attach to this Geometry.\n @param [cfg.primitive=\"triangles\"] {String} The primitive type. Accepted values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.\n @param [cfg.positions] {Number[]} Positions array.\n @param [cfg.normals] {Number[]} Vertex normal vectors array.\n @param [cfg.uv] {Number[]} UVs array.\n @param [cfg.colors] {Number[]} Vertex colors.\n @param [cfg.indices] {Number[]} Indices array.\n @param [cfg.autoVertexNormals=false] {Boolean} Set true to automatically generate normal vectors from the positions and\n indices, if those are supplied.\n @param [cfg.compressGeometry=false] {Boolean} Stores positions, colors, normals and UVs in compressGeometry and oct-encoded formats\n for reduced memory footprint and GPU bus usage.\n @param [cfg.edgeThreshold=10] {Number} When a {@link Mesh} renders this Geometry as wireframe,\n this indicates the threshold angle (in degrees) between the face normals of adjacent triangles below which the edge is discarded.\n @extends Component\n * @param owner\n * @param cfg\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({ // Arrays for emphasis effects are got from xeokit.Geometry friend methods\n compressGeometry: !!cfg.compressGeometry,\n primitive: null, // WebGL enum\n primitiveName: null, // String\n positions: null, // Uint16Array when compressGeometry == true, else Float32Array\n normals: null, // Uint8Array when compressGeometry == true, else Float32Array\n colors: null,\n uv: null, // Uint8Array when compressGeometry == true, else Float32Array\n indices: null,\n positionsDecodeMatrix: null, // Set when compressGeometry == true\n uvDecodeMatrix: null, // Set when compressGeometry == true\n positionsBuf: null,\n normalsBuf: null,\n colorsbuf: null,\n uvBuf: null,\n indicesBuf: null,\n hash: \"\"\n });\n\n this._numTriangles = 0;\n\n this._edgeThreshold = cfg.edgeThreshold || 10.0;\n\n // Lazy-generated VBOs\n\n this._edgeIndicesBuf = null;\n this._pickTrianglePositionsBuf = null;\n this._pickTriangleColorsBuf = null;\n\n // Local-space Boundary3D\n\n this._aabbDirty = true;\n\n this._boundingSphere = true;\n this._aabb = null;\n this._aabbDirty = true;\n\n this._obb = null;\n this._obbDirty = true;\n\n const state = this._state;\n const gl = this.scene.canvas.gl;\n\n // Primitive type\n\n cfg.primitive = cfg.primitive || \"triangles\";\n switch (cfg.primitive) {\n case \"points\":\n state.primitive = gl.POINTS;\n state.primitiveName = cfg.primitive;\n break;\n case \"lines\":\n state.primitive = gl.LINES;\n state.primitiveName = cfg.primitive;\n break;\n case \"line-loop\":\n state.primitive = gl.LINE_LOOP;\n state.primitiveName = cfg.primitive;\n break;\n case \"line-strip\":\n state.primitive = gl.LINE_STRIP;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangles\":\n state.primitive = gl.TRIANGLES;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangle-strip\":\n state.primitive = gl.TRIANGLE_STRIP;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangle-fan\":\n state.primitive = gl.TRIANGLE_FAN;\n state.primitiveName = cfg.primitive;\n break;\n default:\n this.error(\"Unsupported value for 'primitive': '\" + cfg.primitive +\n \"' - supported values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', \" +\n \"'triangle-strip' and 'triangle-fan'. Defaulting to 'triangles'.\");\n state.primitive = gl.TRIANGLES;\n state.primitiveName = cfg.primitive;\n }\n\n if (cfg.positions) {\n if (this._state.compressGeometry) {\n const bounds = geometryCompressionUtils.getPositionsBounds(cfg.positions);\n const result = geometryCompressionUtils.compressPositions(cfg.positions, bounds.min, bounds.max);\n state.positions = result.quantized;\n state.positionsDecodeMatrix = result.decodeMatrix;\n } else {\n state.positions = cfg.positions.constructor === Float32Array ? cfg.positions : new Float32Array(cfg.positions);\n }\n }\n if (cfg.colors) {\n state.colors = cfg.colors.constructor === Float32Array ? cfg.colors : new Float32Array(cfg.colors);\n }\n if (cfg.uv) {\n if (this._state.compressGeometry) {\n const bounds = geometryCompressionUtils.getUVBounds(cfg.uv);\n const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max);\n state.uv = result.quantized;\n state.uvDecodeMatrix = result.decodeMatrix;\n } else {\n state.uv = cfg.uv.constructor === Float32Array ? cfg.uv : new Float32Array(cfg.uv);\n }\n }\n if (cfg.normals) {\n if (this._state.compressGeometry) {\n state.normals = geometryCompressionUtils.compressNormals(cfg.normals);\n } else {\n state.normals = cfg.normals.constructor === Float32Array ? cfg.normals : new Float32Array(cfg.normals);\n }\n }\n if (cfg.indices) {\n state.indices = (cfg.indices.constructor === Uint32Array || cfg.indices.constructor === Uint16Array) ? cfg.indices : new Uint32Array(cfg.indices);\n if (this._state.primitiveName === \"triangles\") {\n this._numTriangles = (cfg.indices.length / 3);\n }\n }\n\n this._buildHash();\n\n memoryStats.meshes++;\n\n this._buildVBOs();\n }\n\n _buildVBOs() {\n const state = this._state;\n const gl = this.scene.canvas.gl;\n if (state.indices) {\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, state.indices, state.indices.length, 1, gl.STATIC_DRAW);\n memoryStats.indices += state.indicesBuf.numItems;\n }\n if (state.positions) {\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, state.positions, state.positions.length, 3, gl.STATIC_DRAW);\n memoryStats.positions += state.positionsBuf.numItems;\n }\n if (state.normals) {\n let normalized = state.compressGeometry;\n state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, state.normals, state.normals.length, 3, gl.STATIC_DRAW, normalized);\n memoryStats.normals += state.normalsBuf.numItems;\n }\n if (state.colors) {\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, state.colors, state.colors.length, 4, gl.STATIC_DRAW);\n memoryStats.colors += state.colorsBuf.numItems;\n }\n if (state.uv) {\n state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, state.uv, state.uv.length, 2, gl.STATIC_DRAW);\n memoryStats.uvs += state.uvBuf.numItems;\n }\n }\n\n _buildHash() {\n const state = this._state;\n const hash = [\"/g\"];\n hash.push(\"/\" + state.primitive + \";\");\n if (state.positions) {\n hash.push(\"p\");\n }\n if (state.colors) {\n hash.push(\"c\");\n }\n if (state.normals || state.autoVertexNormals) {\n hash.push(\"n\");\n }\n if (state.uv) {\n hash.push(\"u\");\n }\n if (state.compressGeometry) {\n hash.push(\"cp\");\n }\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n _getEdgeIndices() {\n if (!this._edgeIndicesBuf) {\n this._buildEdgeIndices();\n }\n return this._edgeIndicesBuf;\n }\n\n _getPickTrianglePositions() {\n if (!this._pickTrianglePositionsBuf) {\n this._buildPickTriangleVBOs();\n }\n return this._pickTrianglePositionsBuf;\n }\n\n _getPickTriangleColors() {\n if (!this._pickTriangleColorsBuf) {\n this._buildPickTriangleVBOs();\n }\n return this._pickTriangleColorsBuf;\n }\n\n _buildEdgeIndices() { // FIXME: Does not adjust indices after other objects are deleted from vertex buffer!!\n const state = this._state;\n if (!state.positions || !state.indices) {\n return;\n }\n const gl = this.scene.canvas.gl;\n const edgeIndices = buildEdgeIndices(state.positions, state.indices, state.positionsDecodeMatrix, this._edgeThreshold);\n this._edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, edgeIndices, edgeIndices.length, 1, gl.STATIC_DRAW);\n memoryStats.indices += this._edgeIndicesBuf.numItems;\n }\n\n _buildPickTriangleVBOs() { // Builds positions and indices arrays that allow each triangle to have a unique color\n const state = this._state;\n if (!state.positions || !state.indices) {\n return;\n }\n const gl = this.scene.canvas.gl;\n const arrays = math.buildPickTriangles(state.positions, state.indices, state.compressGeometry);\n const positions = arrays.positions;\n const colors = arrays.colors;\n this._pickTrianglePositionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);\n this._pickTriangleColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, colors.length, 4, gl.STATIC_DRAW, true);\n memoryStats.positions += this._pickTrianglePositionsBuf.numItems;\n memoryStats.colors += this._pickTriangleColorsBuf.numItems;\n }\n\n _buildPickVertexVBOs() {\n // var state = this._state;\n // if (!state.positions || !state.indices) {\n // return;\n // }\n // var gl = this.scene.canvas.gl;\n // var arrays = math.buildPickVertices(state.positions, state.indices, state.compressGeometry);\n // var pickVertexPositions = arrays.positions;\n // var pickColors = arrays.colors;\n // this._pickVertexPositionsBuf = new xeokit.renderer.ArrayBuf(gl, gl.ARRAY_BUFFER, pickVertexPositions, pickVertexPositions.length, 3, gl.STATIC_DRAW);\n // this._pickVertexColorsBuf = new xeokit.renderer.ArrayBuf(gl, gl.ARRAY_BUFFER, pickColors, pickColors.length, 4, gl.STATIC_DRAW, true);\n // memoryStats.positions += this._pickVertexPositionsBuf.numItems;\n // memoryStats.colors += this._pickVertexColorsBuf.numItems;\n }\n\n _webglContextLost() {\n if (this._sceneVertexBufs) {\n this._sceneVertexBufs.webglContextLost();\n }\n }\n\n _webglContextRestored() {\n if (this._sceneVertexBufs) {\n this._sceneVertexBufs.webglContextRestored();\n }\n this._buildVBOs();\n this._edgeIndicesBuf = null;\n this._pickVertexPositionsBuf = null;\n this._pickTrianglePositionsBuf = null;\n this._pickTriangleColorsBuf = null;\n this._pickVertexPositionsBuf = null;\n this._pickVertexColorsBuf = null;\n }\n\n /**\n * Gets the Geometry's primitive type.\n\n Valid types are: 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.\n\n @property primitive\n @default \"triangles\"\n @type {String}\n */\n get primitive() {\n return this._state.primitiveName;\n }\n\n /**\n Indicates if this Geometry is quantized.\n\n Compression is an internally-performed optimization which stores positions, colors, normals and UVs\n in quantized and oct-encoded formats for reduced memory footprint and GPU bus usage.\n\n Quantized geometry may not be updated.\n\n @property compressGeometry\n @default false\n @type {Boolean}\n @final\n */\n get compressGeometry() {\n return this._state.compressGeometry;\n }\n\n /**\n The Geometry's vertex positions.\n\n @property positions\n @default null\n @type {Number[]}\n */\n get positions() {\n if (!this._state.positions) {\n return null;\n }\n if (!this._state.compressGeometry) {\n return this._state.positions;\n }\n if (!this._decompressedPositions) {\n this._decompressedPositions = new Float32Array(this._state.positions.length);\n geometryCompressionUtils.decompressPositions(this._state.positions, this._state.positionsDecodeMatrix, this._decompressedPositions);\n }\n return this._decompressedPositions;\n }\n\n set positions(newPositions) {\n const state = this._state;\n const positions = state.positions;\n if (!positions) {\n this.error(\"can't update geometry positions - geometry has no positions\");\n return;\n }\n if (positions.length !== newPositions.length) {\n this.error(\"can't update geometry positions - new positions are wrong length\");\n return;\n }\n if (this._state.compressGeometry) {\n const bounds = geometryCompressionUtils.getPositionsBounds(newPositions);\n const result = geometryCompressionUtils.compressPositions(newPositions, bounds.min, bounds.max);\n newPositions = result.quantized; // TODO: Copy in-place\n state.positionsDecodeMatrix = result.decodeMatrix;\n }\n positions.set(newPositions);\n if (state.positionsBuf) {\n state.positionsBuf.setData(positions);\n }\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n The Geometry's vertex normals.\n\n @property normals\n @default null\n @type {Number[]}\n */\n get normals() {\n if (!this._state.normals) {\n return;\n }\n if (!this._state.compressGeometry) {\n return this._state.normals;\n }\n if (!this._decompressedNormals) {\n const lenCompressed = this._state.normals.length;\n const lenDecompressed = lenCompressed + (lenCompressed / 2); // 2 -> 3\n this._decompressedNormals = new Float32Array(lenDecompressed);\n geometryCompressionUtils.decompressNormals(this._state.normals, this._decompressedNormals);\n }\n return this._decompressedNormals;\n }\n\n set normals(newNormals) {\n if (this._state.compressGeometry) {\n this.error(\"can't update geometry normals - quantized geometry is immutable\"); // But will be eventually\n return;\n }\n const state = this._state;\n const normals = state.normals;\n if (!normals) {\n this.error(\"can't update geometry normals - geometry has no normals\");\n return;\n }\n if (normals.length !== newNormals.length) {\n this.error(\"can't update geometry normals - new normals are wrong length\");\n return;\n }\n normals.set(newNormals);\n if (state.normalsBuf) {\n state.normalsBuf.setData(normals);\n }\n this.glRedraw();\n }\n\n\n /**\n The Geometry's UV coordinates.\n\n @property uv\n @default null\n @type {Number[]}\n */\n get uv() {\n if (!this._state.uv) {\n return null;\n }\n if (!this._state.compressGeometry) {\n return this._state.uv;\n }\n if (!this._decompressedUV) {\n this._decompressedUV = new Float32Array(this._state.uv.length);\n geometryCompressionUtils.decompressUVs(this._state.uv, this._state.uvDecodeMatrix, this._decompressedUV);\n }\n return this._decompressedUV;\n }\n\n set uv(newUV) {\n if (this._state.compressGeometry) {\n this.error(\"can't update geometry UVs - quantized geometry is immutable\"); // But will be eventually\n return;\n }\n const state = this._state;\n const uv = state.uv;\n if (!uv) {\n this.error(\"can't update geometry UVs - geometry has no UVs\");\n return;\n }\n if (uv.length !== newUV.length) {\n this.error(\"can't update geometry UVs - new UVs are wrong length\");\n return;\n }\n uv.set(newUV);\n if (state.uvBuf) {\n state.uvBuf.setData(uv);\n }\n this.glRedraw();\n }\n\n /**\n The Geometry's vertex colors.\n\n @property colors\n @default null\n @type {Number[]}\n */\n get colors() {\n return this._state.colors;\n }\n\n set colors(newColors) {\n if (this._state.compressGeometry) {\n this.error(\"can't update geometry colors - quantized geometry is immutable\"); // But will be eventually\n return;\n }\n const state = this._state;\n const colors = state.colors;\n if (!colors) {\n this.error(\"can't update geometry colors - geometry has no colors\");\n return;\n }\n if (colors.length !== newColors.length) {\n this.error(\"can't update geometry colors - new colors are wrong length\");\n return;\n }\n colors.set(newColors);\n if (state.colorsBuf) {\n state.colorsBuf.setData(colors);\n }\n this.glRedraw();\n }\n\n /**\n The Geometry's indices.\n\n If ````xeokit.WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"]```` is true, then this can be\n a ````Uint32Array````, otherwise it needs to be a ````Uint16Array````.\n\n @property indices\n @default null\n @type Uint16Array | Uint32Array\n @final\n */\n get indices() {\n return this._state.indices;\n }\n\n /**\n * Local-space axis-aligned 3D boundary (AABB) of this geometry.\n *\n * The AABB is represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @property aabb\n * @final\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n if (!this._aabb) {\n this._aabb = math.AABB3();\n }\n math.positions3ToAABB3(this._state.positions, this._aabb, this._state.positionsDecodeMatrix);\n this._aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * Local-space oriented 3D boundary (OBB) of this geometry.\n *\n * The OBB is represented by a 32-element Float64Array containing the eight vertices of the box,\n * where each vertex is a homogeneous coordinate having [x,y,z,w] elements.\n *\n * @property obb\n * @final\n * @type {Number[]}\n */\n get obb() {\n if (this._obbDirty) {\n if (!this._obb) {\n this._obb = math.OBB3();\n }\n math.positions3ToAABB3(this._state.positions, tempAABB, this._state.positionsDecodeMatrix);\n math.AABB3ToOBB3(tempAABB, this._obb);\n this._obbDirty = false;\n }\n return this._obb;\n }\n\n /**\n * Approximate number of triangles in this ReadableGeometry.\n *\n * Will be zero if {@link ReadableGeometry#primitive} is not 'triangles', 'triangle-strip' or 'triangle-fan'.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n _setAABBDirty() {\n if (this._aabbDirty) {\n return;\n }\n this._aabbDirty = true;\n this._aabbDirty = true;\n this._obbDirty = true;\n }\n\n _getState() {\n return this._state;\n }\n\n /**\n * Destroys this ReadableGeometry\n */\n destroy() {\n super.destroy();\n const state = this._state;\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n }\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n }\n if (state.normalsBuf) {\n state.normalsBuf.destroy();\n }\n if (state.uvBuf) {\n state.uvBuf.destroy();\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n }\n if (this._edgeIndicesBuf) {\n this._edgeIndicesBuf.destroy();\n }\n if (this._pickTrianglePositionsBuf) {\n this._pickTrianglePositionsBuf.destroy();\n }\n if (this._pickTriangleColorsBuf) {\n this._pickTriangleColorsBuf.destroy();\n }\n if (this._pickVertexPositionsBuf) {\n this._pickVertexPositionsBuf.destroy();\n }\n if (this._pickVertexColorsBuf) {\n this._pickVertexColorsBuf.destroy();\n }\n state.destroy();\n memoryStats.meshes--;\n }\n}\n\n\nexport {ReadableGeometry};", @@ -66031,7 +66559,7 @@ "lineNumber": 1 }, { - "__docId__": 3406, + "__docId__": 3424, "kind": "variable", "name": "memoryStats", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js", @@ -66052,7 +66580,7 @@ "ignore": true }, { - "__docId__": 3407, + "__docId__": 3425, "kind": "variable", "name": "tempAABB", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js", @@ -66073,7 +66601,7 @@ "ignore": true }, { - "__docId__": 3408, + "__docId__": 3426, "kind": "class", "name": "ReadableGeometry", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js", @@ -66091,7 +66619,7 @@ ] }, { - "__docId__": 3409, + "__docId__": 3427, "kind": "get", "name": "type", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66110,7 +66638,7 @@ } }, { - "__docId__": 3410, + "__docId__": 3428, "kind": "get", "name": "isReadableGeometry", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66143,7 +66671,7 @@ } }, { - "__docId__": 3411, + "__docId__": 3429, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66338,7 +66866,7 @@ ] }, { - "__docId__": 3412, + "__docId__": 3430, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66356,7 +66884,7 @@ } }, { - "__docId__": 3413, + "__docId__": 3431, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66374,7 +66902,7 @@ } }, { - "__docId__": 3414, + "__docId__": 3432, "kind": "member", "name": "_edgeThreshold", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66392,7 +66920,7 @@ } }, { - "__docId__": 3415, + "__docId__": 3433, "kind": "member", "name": "_edgeIndicesBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66410,7 +66938,7 @@ } }, { - "__docId__": 3416, + "__docId__": 3434, "kind": "member", "name": "_pickTrianglePositionsBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66428,7 +66956,7 @@ } }, { - "__docId__": 3417, + "__docId__": 3435, "kind": "member", "name": "_pickTriangleColorsBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66446,7 +66974,7 @@ } }, { - "__docId__": 3418, + "__docId__": 3436, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66464,7 +66992,7 @@ } }, { - "__docId__": 3419, + "__docId__": 3437, "kind": "member", "name": "_boundingSphere", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66482,7 +67010,7 @@ } }, { - "__docId__": 3420, + "__docId__": 3438, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66500,7 +67028,7 @@ } }, { - "__docId__": 3422, + "__docId__": 3440, "kind": "member", "name": "_obb", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66518,7 +67046,7 @@ } }, { - "__docId__": 3423, + "__docId__": 3441, "kind": "member", "name": "_obbDirty", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66536,7 +67064,7 @@ } }, { - "__docId__": 3425, + "__docId__": 3443, "kind": "method", "name": "_buildVBOs", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66553,7 +67081,7 @@ "return": null }, { - "__docId__": 3426, + "__docId__": 3444, "kind": "method", "name": "_buildHash", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66570,7 +67098,7 @@ "return": null }, { - "__docId__": 3427, + "__docId__": 3445, "kind": "method", "name": "_getEdgeIndices", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66591,7 +67119,7 @@ } }, { - "__docId__": 3428, + "__docId__": 3446, "kind": "method", "name": "_getPickTrianglePositions", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66612,7 +67140,7 @@ } }, { - "__docId__": 3429, + "__docId__": 3447, "kind": "method", "name": "_getPickTriangleColors", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66633,7 +67161,7 @@ } }, { - "__docId__": 3430, + "__docId__": 3448, "kind": "method", "name": "_buildEdgeIndices", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66650,7 +67178,7 @@ "return": null }, { - "__docId__": 3432, + "__docId__": 3450, "kind": "method", "name": "_buildPickTriangleVBOs", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66667,7 +67195,7 @@ "return": null }, { - "__docId__": 3435, + "__docId__": 3453, "kind": "method", "name": "_buildPickVertexVBOs", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66684,7 +67212,7 @@ "return": null }, { - "__docId__": 3436, + "__docId__": 3454, "kind": "method", "name": "_webglContextLost", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66701,7 +67229,7 @@ "return": null }, { - "__docId__": 3437, + "__docId__": 3455, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66718,7 +67246,7 @@ "return": null }, { - "__docId__": 3439, + "__docId__": 3457, "kind": "member", "name": "_pickVertexPositionsBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66736,7 +67264,7 @@ } }, { - "__docId__": 3443, + "__docId__": 3461, "kind": "member", "name": "_pickVertexColorsBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66754,7 +67282,7 @@ } }, { - "__docId__": 3444, + "__docId__": 3462, "kind": "get", "name": "primitive", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66793,7 +67321,7 @@ } }, { - "__docId__": 3445, + "__docId__": 3463, "kind": "get", "name": "compressGeometry", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66836,7 +67364,7 @@ } }, { - "__docId__": 3446, + "__docId__": 3464, "kind": "get", "name": "positions", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66875,7 +67403,7 @@ } }, { - "__docId__": 3447, + "__docId__": 3465, "kind": "member", "name": "_decompressedPositions", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66893,7 +67421,7 @@ } }, { - "__docId__": 3448, + "__docId__": 3466, "kind": "set", "name": "positions", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66907,7 +67435,7 @@ "undocument": true }, { - "__docId__": 3449, + "__docId__": 3467, "kind": "get", "name": "normals", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66946,7 +67474,7 @@ } }, { - "__docId__": 3450, + "__docId__": 3468, "kind": "member", "name": "_decompressedNormals", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66964,7 +67492,7 @@ } }, { - "__docId__": 3451, + "__docId__": 3469, "kind": "set", "name": "normals", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -66978,7 +67506,7 @@ "undocument": true }, { - "__docId__": 3452, + "__docId__": 3470, "kind": "get", "name": "uv", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67017,7 +67545,7 @@ } }, { - "__docId__": 3453, + "__docId__": 3471, "kind": "member", "name": "_decompressedUV", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67035,7 +67563,7 @@ } }, { - "__docId__": 3454, + "__docId__": 3472, "kind": "set", "name": "uv", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67049,7 +67577,7 @@ "undocument": true }, { - "__docId__": 3455, + "__docId__": 3473, "kind": "get", "name": "colors", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67088,7 +67616,7 @@ } }, { - "__docId__": 3456, + "__docId__": 3474, "kind": "set", "name": "colors", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67102,7 +67630,7 @@ "undocument": true }, { - "__docId__": 3457, + "__docId__": 3475, "kind": "get", "name": "indices", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67145,7 +67673,7 @@ } }, { - "__docId__": 3458, + "__docId__": 3476, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67184,7 +67712,7 @@ } }, { - "__docId__": 3461, + "__docId__": 3479, "kind": "get", "name": "obb", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67223,7 +67751,7 @@ } }, { - "__docId__": 3464, + "__docId__": 3482, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67244,7 +67772,7 @@ } }, { - "__docId__": 3465, + "__docId__": 3483, "kind": "method", "name": "_setAABBDirty", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67261,7 +67789,7 @@ "return": null }, { - "__docId__": 3469, + "__docId__": 3487, "kind": "method", "name": "_getState", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67282,7 +67810,7 @@ } }, { - "__docId__": 3470, + "__docId__": 3488, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -67297,7 +67825,7 @@ "return": null }, { - "__docId__": 3471, + "__docId__": 3489, "kind": "file", "name": "src/viewer/scene/geometry/VBOGeometry.js", "content": "import {Geometry} from './Geometry.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {ArrayBuf} from '../webgl/ArrayBuf.js';\nimport {math} from '../math/math.js';\nimport {stats} from '../stats.js';\nimport {buildEdgeIndices} from '../math/buildEdgeIndices.js';\nimport {geometryCompressionUtils} from '../math/geometryCompressionUtils.js';\n\nconst memoryStats = stats.memory;\nconst tempAABB = math.AABB3();\n\n/**\n * @desc A {@link Geometry} that keeps its geometry data solely in GPU memory, without retaining it in browser memory.\n *\n * VBOGeometry uses less memory than {@link ReadableGeometry}, which keeps its geometry data in both browser and GPU memory.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a VBOGeometry that defines a single triangle, plus a {@link PhongMaterial} with diffuse {@link Texture}:\n *\n * [[Run this example](/examples/index.html#geometry_VBOGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, VBOGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * new Mesh(viewer.scene, {\n * geometry: new VBOGeometry(viewer.scene, {\n * primitive: \"triangles\",\n * positions: [0.0, 3, 0.0, -3, -3, 0.0, 3, -3, 0.0],\n * normals: [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0],\n * uv: [0.0, 0.0, 0.5, 1.0, 1.0, 0.0],\n * indices: [0, 1, 2]\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * })\n * });\n * ````\n */\nclass VBOGeometry extends Geometry {\n\n /**\n @private\n */\n get type() {\n return \"VBOGeometry\";\n }\n\n /**\n * @private\n * @returns {Boolean}\n */\n get isVBOGeometry() {\n return true;\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {String} [cfg.primitive=\"triangles\"] The primitive type. Accepted values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.\n * @param {Number[]} [cfg.positions] Positions array.\n * @param {Number[]} [cfg.normals] Vertex normal vectors array.\n * @param {Number[]} [cfg.uv] UVs array.\n * @param {Number[]} [cfg.colors] Vertex colors.\n * @param {Number[]} [cfg.indices] Indices array.\n * @param {Number} [cfg.edgeThreshold=10] When autogenerating edges for supporting {@link Drawable#edges}, this indicates the threshold angle (in degrees) between the face normals of adjacent triangles below which the edge is discarded.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({ // Arrays for emphasis effects are got from xeokit.GeometryLite friend methods\n compressGeometry: true,\n primitive: null, // WebGL enum\n primitiveName: null, // String\n positionsDecodeMatrix: null, // Set when compressGeometry == true\n uvDecodeMatrix: null, // Set when compressGeometry == true\n positionsBuf: null,\n normalsBuf: null,\n colorsbuf: null,\n uvBuf: null,\n indicesBuf: null,\n hash: \"\"\n });\n\n this._numTriangles = 0;\n\n this._edgeThreshold = cfg.edgeThreshold || 10.0;\n this._aabb = null;\n this._obb = math.OBB3();\n\n const state = this._state;\n const gl = this.scene.canvas.gl;\n\n cfg.primitive = cfg.primitive || \"triangles\";\n switch (cfg.primitive) {\n case \"points\":\n state.primitive = gl.POINTS;\n state.primitiveName = cfg.primitive;\n break;\n case \"lines\":\n state.primitive = gl.LINES;\n state.primitiveName = cfg.primitive;\n break;\n case \"line-loop\":\n state.primitive = gl.LINE_LOOP;\n state.primitiveName = cfg.primitive;\n break;\n case \"line-strip\":\n state.primitive = gl.LINE_STRIP;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangles\":\n state.primitive = gl.TRIANGLES;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangle-strip\":\n state.primitive = gl.TRIANGLE_STRIP;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangle-fan\":\n state.primitive = gl.TRIANGLE_FAN;\n state.primitiveName = cfg.primitive;\n break;\n default:\n this.error(\"Unsupported value for 'primitive': '\" + cfg.primitive +\n \"' - supported values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', \" +\n \"'triangle-strip' and 'triangle-fan'. Defaulting to 'triangles'.\");\n state.primitive = gl.TRIANGLES;\n state.primitiveName = cfg.primitive;\n }\n\n if (!cfg.positions) {\n this.error(\"Config expected: positions\");\n return; // TODO: Recover?\n }\n\n if (!cfg.indices) {\n this.error(\"Config expected: indices\");\n return; // TODO: Recover?\n }\n\n var positions;\n\n {\n const positionsDecodeMatrix = cfg.positionsDecodeMatrix;\n\n if (positionsDecodeMatrix) {\n\n // Compressed positions\n\n } else {\n\n // Uncompressed positions\n\n const bounds = geometryCompressionUtils.getPositionsBounds(cfg.positions);\n const result = geometryCompressionUtils.compressPositions(cfg.positions, bounds.min, bounds.max);\n positions = result.quantized;\n state.positionsDecodeMatrix = result.decodeMatrix;\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);\n memoryStats.positions += state.positionsBuf.numItems;\n math.positions3ToAABB3(cfg.positions, this._aabb);\n math.positions3ToAABB3(positions, tempAABB, state.positionsDecodeMatrix);\n math.AABB3ToOBB3(tempAABB, this._obb);\n }\n }\n\n if (cfg.colors) {\n const colors = cfg.colors.constructor === Float32Array ? cfg.colors : new Float32Array(cfg.colors);\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, colors.length, 4, gl.STATIC_DRAW);\n memoryStats.colors += state.colorsBuf.numItems;\n }\n\n if (cfg.uv) {\n const bounds = geometryCompressionUtils.getUVBounds(cfg.uv);\n const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max);\n const uv = result.quantized;\n state.uvDecodeMatrix = result.decodeMatrix;\n state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uv, uv.length, 2, gl.STATIC_DRAW);\n memoryStats.uvs += state.uvBuf.numItems;\n }\n\n if (cfg.normals) {\n const normals = geometryCompressionUtils.compressNormals(cfg.normals);\n let normalized = state.compressGeometry;\n state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, normals, normals.length, 3, gl.STATIC_DRAW, normalized);\n memoryStats.normals += state.normalsBuf.numItems;\n }\n\n {\n const indices = (cfg.indices.constructor === Uint32Array || cfg.indices.constructor === Uint16Array) ? cfg.indices : new Uint32Array(cfg.indices);\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, indices.length, 1, gl.STATIC_DRAW);\n memoryStats.indices += state.indicesBuf.numItems;\n const edgeIndices = buildEdgeIndices(positions, indices, state.positionsDecodeMatrix, this._edgeThreshold);\n this._edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, edgeIndices, edgeIndices.length, 1, gl.STATIC_DRAW);\n\n if (this._state.primitiveName === \"triangles\") {\n this._numTriangles = (cfg.indices.length / 3);\n }\n }\n\n this._buildHash();\n\n memoryStats.meshes++;\n }\n\n _buildHash() {\n const state = this._state;\n const hash = [\"/g\"];\n hash.push(\"/\" + state.primitive + \";\");\n if (state.positionsBuf) {\n hash.push(\"p\");\n }\n if (state.colorsBuf) {\n hash.push(\"c\");\n }\n if (state.normalsBuf || state.autoVertexNormals) {\n hash.push(\"n\");\n }\n if (state.uvBuf) {\n hash.push(\"u\");\n }\n hash.push(\"cp\"); // Always compressed\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n _getEdgeIndices() {\n return this._edgeIndicesBuf;\n }\n\n /**\n * Gets the primitive type.\n *\n * Possible types are: 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.\n *\n * @type {String}\n */\n get primitive() {\n return this._state.primitiveName;\n }\n\n /**\n * Gets the local-space axis-aligned 3D boundary (AABB).\n *\n * The AABB is represented by a six-element Float64Array containing the min/max extents of the axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n return this._aabb;\n }\n\n /**\n * Gets the local-space oriented 3D boundary (OBB).\n *\n * The OBB is represented by a 32-element Float64Array containing the eight vertices of the box, where each vertex is a homogeneous coordinate having [x,y,z,w] elements.\n *\n * @type {Number[]}\n */\n get obb() {\n return this._obb;\n }\n\n /**\n * Approximate number of triangles in this VBOGeometry.\n *\n * Will be zero if {@link VBOGeometry#primitive} is not 'triangles', 'triangle-strip' or 'triangle-fan'.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /** @private */\n _getState() {\n return this._state;\n }\n\n /**\n * Destroys this component.\n */\n destroy() {\n super.destroy();\n const state = this._state;\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n }\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n }\n if (state.normalsBuf) {\n state.normalsBuf.destroy();\n }\n if (state.uvBuf) {\n state.uvBuf.destroy();\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n }\n if (this._edgeIndicesBuf) {\n this._edgeIndicesBuf.destroy();\n }\n state.destroy();\n memoryStats.meshes--;\n }\n}\n\nexport {VBOGeometry};", @@ -67308,7 +67836,7 @@ "lineNumber": 1 }, { - "__docId__": 3472, + "__docId__": 3490, "kind": "variable", "name": "memoryStats", "memberof": "src/viewer/scene/geometry/VBOGeometry.js", @@ -67329,7 +67857,7 @@ "ignore": true }, { - "__docId__": 3473, + "__docId__": 3491, "kind": "variable", "name": "tempAABB", "memberof": "src/viewer/scene/geometry/VBOGeometry.js", @@ -67350,7 +67878,7 @@ "ignore": true }, { - "__docId__": 3474, + "__docId__": 3492, "kind": "class", "name": "VBOGeometry", "memberof": "src/viewer/scene/geometry/VBOGeometry.js", @@ -67368,7 +67896,7 @@ ] }, { - "__docId__": 3475, + "__docId__": 3493, "kind": "get", "name": "type", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67387,7 +67915,7 @@ } }, { - "__docId__": 3476, + "__docId__": 3494, "kind": "get", "name": "isVBOGeometry", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67420,7 +67948,7 @@ } }, { - "__docId__": 3477, + "__docId__": 3495, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67545,7 +68073,7 @@ ] }, { - "__docId__": 3478, + "__docId__": 3496, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67563,7 +68091,7 @@ } }, { - "__docId__": 3479, + "__docId__": 3497, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67581,7 +68109,7 @@ } }, { - "__docId__": 3480, + "__docId__": 3498, "kind": "member", "name": "_edgeThreshold", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67599,7 +68127,7 @@ } }, { - "__docId__": 3481, + "__docId__": 3499, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67617,7 +68145,7 @@ } }, { - "__docId__": 3482, + "__docId__": 3500, "kind": "member", "name": "_obb", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67635,7 +68163,7 @@ } }, { - "__docId__": 3483, + "__docId__": 3501, "kind": "member", "name": "_edgeIndicesBuf", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67653,7 +68181,7 @@ } }, { - "__docId__": 3485, + "__docId__": 3503, "kind": "method", "name": "_buildHash", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67670,7 +68198,7 @@ "return": null }, { - "__docId__": 3486, + "__docId__": 3504, "kind": "method", "name": "_getEdgeIndices", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67691,7 +68219,7 @@ } }, { - "__docId__": 3487, + "__docId__": 3505, "kind": "get", "name": "primitive", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67712,7 +68240,7 @@ } }, { - "__docId__": 3488, + "__docId__": 3506, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67733,7 +68261,7 @@ } }, { - "__docId__": 3489, + "__docId__": 3507, "kind": "get", "name": "obb", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67754,7 +68282,7 @@ } }, { - "__docId__": 3490, + "__docId__": 3508, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67775,7 +68303,7 @@ } }, { - "__docId__": 3491, + "__docId__": 3509, "kind": "method", "name": "_getState", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67795,7 +68323,7 @@ } }, { - "__docId__": 3492, + "__docId__": 3510, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -67810,7 +68338,7 @@ "return": null }, { - "__docId__": 3493, + "__docId__": 3511, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildBoxGeometry.js", "content": "import {utils} from '../../utils.js';\n\n/**\n * @desc Creates box-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry}.\n *\n * [[Run this example](/examples/index.html#geometry_builders_buildBoxGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildBoxGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildBoxGeometry({\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildBoxGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\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} Configuration for a {@link Geometry} subtype.\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 utils.apply(cfg, {\n\n // The vertices - eight for our cube, each\n // one spanning three array elements for X,Y and Z\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", @@ -67821,7 +68349,7 @@ "lineNumber": 1 }, { - "__docId__": 3494, + "__docId__": 3512, "kind": "function", "name": "buildBoxGeometry", "memberof": "src/viewer/scene/geometry/builders/buildBoxGeometry.js", @@ -67923,7 +68451,7 @@ } }, { - "__docId__": 3495, + "__docId__": 3513, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js", "content": "import {utils} from '../../utils.js';\n\n/**\n * @desc Creates a box-shaped lines {@link Geometry}.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry} that has lines primitives.\n *\n * [[Run this example](/examples/index.html#geometry_builders_buildBoxLinesGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildBoxLinesGeometry, ReadableGeometry, PhongMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildBoxLinesGeometry({\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * emissive: [0,1,0]\n * })\n * });\n * ````\n *\n * @function buildBoxLinesGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\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} Configuration for a {@link Geometry} subtype.\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 utils.apply(cfg, {\n primitive: \"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\n/**\n * @desc Creates a box-shaped lines {@link Geometry} from AABB.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry} that has lines primitives.\n * This box will be created from AABB of a model.\n *\n * [[Run this example](/examples/index.html#geometry_builders_buildBoxLinesGeometryFromAABB)]\n *\n * ````javascript\n * import {Viewer, Mesh, Node, buildBoxGeometry, buildBoxLinesGeometryFromAABB, ReadableGeometry, PhongMaterial} from \"../../dist/xeokit-sdk.min.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const boxGeometry = new ReadableGeometry(viewer.scene, buildBoxGeometry({\n * xSize: 1,\n * ySize: 1,\n * zSize: 1\n * }));\n *\n * new Node(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--------------------- Node represents a model\n * rotation: [0, 50, 0],\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n *\n * children: [\n *\n * new Mesh(viewer.scene, { // Red table leg\n * id: \"redLeg\",\n * isObject: true, // <---------- Node represents an object\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * geometry: boxGeometry,\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1, 0.3, 0.3]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Green table leg\n * id: \"greenLeg\",\n * isObject: true, // <---------- Node represents an object\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * geometry: boxGeometry,\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 1.0, 0.3]\n * })\n * }),\n *\n * new Mesh(viewer.scene, {// Blue table leg\n * id: \"blueLeg\",\n * isObject: true, // <---------- Node represents an object\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * geometry: boxGeometry,\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 0.3, 1.0]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Yellow table leg\n * id: \"yellowLeg\",\n * isObject: true, // <---------- Node represents an object\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * geometry: boxGeometry,\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 1.0, 0.0]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Purple table top\n * id: \"tableTop\",\n * isObject: true, // <---------- Node represents an object\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * geometry: boxGeometry,\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 0.3, 1.0]\n * })\n * })\n * ]\n * });\n *\n * let aabb = viewer.scene.aabb;\n * console.log(aabb);\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildBoxLinesGeometryFromAABB({\n * id: \"aabb\",\n * aabb: aabb,\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * emissive: [0, 1,]\n * })\n * });\n * ````\n *\n * @function buildBoxLinesGeometryFromAABB\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.aabb] AABB for which box will be created.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildBoxLinesGeometryFromAABB(cfg = {}){\n return buildBoxLinesGeometry({\n id: cfg.id,\n center: [\n (cfg.aabb[0] + cfg.aabb[3]) / 2.0,\n (cfg.aabb[1] + cfg.aabb[4]) / 2.0,\n (cfg.aabb[2] + cfg.aabb[5]) / 2.0,\n ],\n xSize: (Math.abs(cfg.aabb[3] - cfg.aabb[0])) / 2.0,\n ySize: (Math.abs(cfg.aabb[4] - cfg.aabb[1])) / 2.0,\n zSize: (Math.abs(cfg.aabb[5] - cfg.aabb[2])) / 2.0,\n });\n}\n\nexport {buildBoxLinesGeometry, buildBoxLinesGeometryFromAABB};\n", @@ -67934,7 +68462,7 @@ "lineNumber": 1 }, { - "__docId__": 3496, + "__docId__": 3514, "kind": "function", "name": "buildBoxLinesGeometry", "memberof": "src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js", @@ -68036,7 +68564,7 @@ } }, { - "__docId__": 3497, + "__docId__": 3515, "kind": "function", "name": "buildBoxLinesGeometryFromAABB", "memberof": "src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js", @@ -68102,7 +68630,7 @@ } }, { - "__docId__": 3498, + "__docId__": 3516, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildCylinderGeometry.js", "content": "import {utils} from '../../utils.js';\n\n/**\n * @desc Creates a cylinder-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a cylinder-shaped {@link ReadableGeometry} :\n *\n * [[Run this example](/examples/index.html#geometry_builders_buildCylinderGeometry)]\n *\n * ````javascript\n *\n * import {Viewer, Mesh, buildCylinderGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, 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 * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildCylinderGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\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} Configuration for a {@link Geometry} subtype.\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 utils.apply(cfg, {\n positions: positions,\n normals: normals,\n uv: uvs,\n indices: indices\n });\n}\n\n\nexport {buildCylinderGeometry};\n", @@ -68113,7 +68641,7 @@ "lineNumber": 1 }, { - "__docId__": 3499, + "__docId__": 3517, "kind": "function", "name": "buildCylinderGeometry", "memberof": "src/viewer/scene/geometry/builders/buildCylinderGeometry.js", @@ -68251,7 +68779,7 @@ } }, { - "__docId__": 3500, + "__docId__": 3518, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildGridGeometry.js", "content": "import {utils} from '../../utils.js';\n\n/**\n * @desc Creates a grid-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a GridGeometry and a {@link PhongMaterial}:\n *\n * [[Run this example](/examples/index.html#geometry_builders_buildGridGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildGridGeometry, VBOGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new VBOGeometry(viewer.scene, buildGridGeometry({\n * size: 1000,\n * divisions: 500\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * color: [0.0, 0.0, 0.0],\n * emissive: [0.4, 0.4, 0.4]\n * }),\n * position: [0, -1.6, 0]\n * });\n * ````\n *\n * @function buildGridGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\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} Configuration for a {@link Geometry} subtype.\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 utils.apply(cfg, {\n primitive: \"lines\",\n positions: positions,\n indices: indices\n });\n}\n\n\nexport {buildGridGeometry};\n", @@ -68262,7 +68790,7 @@ "lineNumber": 1 }, { - "__docId__": 3501, + "__docId__": 3519, "kind": "function", "name": "buildGridGeometry", "memberof": "src/viewer/scene/geometry/builders/buildGridGeometry.js", @@ -68342,7 +68870,7 @@ } }, { - "__docId__": 3502, + "__docId__": 3520, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildPlaneGeometry.js", "content": "import {utils} from '../../utils.js';\n\n/**\n * @desc Creates a plane-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a PlaneGeometry and a {@link PhongMaterial} with diffuse {@link Texture}:\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#buildPlaneGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildPlaneGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildPlaneGeometry({\n * center: [0,0,0],\n * xSize: 2,\n * zSize: 2,\n * xSegments: 10,\n * zSegments: 10\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildPlaneGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\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} Configuration for a {@link Geometry} subtype.\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 utils.apply(cfg, {\n positions: positions,\n normals: normals,\n uv: uvs,\n indices: indices\n });\n}\n\nexport {buildPlaneGeometry};\n", @@ -68353,7 +68881,7 @@ "lineNumber": 1 }, { - "__docId__": 3503, + "__docId__": 3521, "kind": "function", "name": "buildPlaneGeometry", "memberof": "src/viewer/scene/geometry/builders/buildPlaneGeometry.js", @@ -68467,7 +68995,7 @@ } }, { - "__docId__": 3504, + "__docId__": 3522, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildPolylineGeometry.js", "content": "import {utils} from '../../utils.js';\n\n/**\n * @desc Creates a 3D polyline {@link Geometry}.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a polyline {@link ReadableGeometry} that has lines primitives.\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#buildPolylineGeometry)]\n *\n * ````javascript\n * //------------------------------------------------------------------------------------------------------------------\n * // Import the modules we need for this example\n * //------------------------------------------------------------------------------------------------------------------\n *\n * import {buildPolylineGeometry, Viewer, Mesh, ReadableGeometry, PhongMaterial} from \"../../dist/xeokit-sdk.min.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Create a Viewer and arrange the camera\n * //------------------------------------------------------------------------------------------------------------------\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 8];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Create a mesh with polyline shape\n * //------------------------------------------------------------------------------------------------------------------\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildPolylineGeometry({\n * points: [\n * 0, 2.83654, 0,\n * -0.665144, 1.152063, 0,\n * -2.456516, 1.41827, 0,\n * -1.330288, 0, 0,\n * -2.456516, -1.41827, 0,\n * -0.665144, -1.152063, 0,\n * 0, -2.83654, 0,\n * 0.665144, -1.152063, 0,\n * 2.456516, -1.41827, 0,\n * 1.330288, 0, 0,\n * 2.456516, 1.41827, 0,\n * 0.665144, 1.152063, 0,\n * 0, 2.83654, 0,\n * ]\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * emissive: [0, 1,]\n * })\n * });\n * ````\n *\n * @function buildPolylineGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.points] 3D points indicating vertices position.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildPolylineGeometry(cfg = {}) {\n\n if (cfg.points.length % 3 !== 0) {\n throw \"Size of points array for given polyline should be divisible by 3\";\n }\n let numberOfPoints = cfg.points.length / 3;\n if (numberOfPoints < 2) {\n throw \"There should be at least 2 points to create a polyline\";\n }\n let indices = [];\n for (let i = 0; i < numberOfPoints - 1; i++) {\n indices.push(i);\n indices.push(i + 1);\n }\n\n return utils.apply(cfg, {\n primitive: \"lines\",\n positions: cfg.points,\n indices: indices,\n });\n}\n\n/**\n * @desc Creates a 3D polyline from curve {@link Geometry}.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a polyline {@link ReadableGeometry} created from curves.\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#buildPolylineGeometryFromCurve)]\n *\n * ````javascript\n * //------------------------------------------------------------------------------------------------------------------\n * // Import the modules we need for this example\n * //------------------------------------------------------------------------------------------------------------------\n *\n * import {buildPolylineGeometryFromCurve, Viewer, Mesh, PhongMaterial, NavCubePlugin, CubicBezierCurve, SplineCurve, QuadraticBezierCurve, ReadableGeometry} from \"../../dist/xeokit-sdk.min.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Create a Viewer and arrange the camera\n * //------------------------------------------------------------------------------------------------------------------\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * new NavCubePlugin(viewer, {\n * canvasId: \"myNavCubeCanvas\",\n * visible: true,\n * size: 250,\n * alignment: \"bottomRight\",\n * bottomMargin: 100,\n * rightMargin: 10\n * });\n *\n * viewer.camera.eye = [0, -250, 1];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Create a mesh with polyline shape from Spline\n * //------------------------------------------------------------------------------------------------------------------\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildPolylineGeometryFromCurve({\n * id: \"SplineCurve\",\n * curve: new SplineCurve(viewer.scene, {\n * points: [\n * [-65.77614, 0, -88.881992],\n * [90.020852, 0, -61.589088],\n * [-67.766247, 0, -22.071238],\n * [93.148164, 0, -13.826507],\n * [-14.033343, 0, 3.231558],\n * [32.592034, 0, 9.20188],\n * [3.309023, 0, 22.848332],\n * [23.210098, 0, 28.818655],\n * ],\n * }),\n * divisions: 100,\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * emissive: [1, 0, 0]\n * })\n * });\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Create a mesh with polyline shape from CubicBezier\n * //------------------------------------------------------------------------------------------------------------------\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildPolylineGeometryFromCurve({\n * id: \"CubicBezierCurve\",\n * curve: new CubicBezierCurve(viewer.scene, {\n * v0: [120, 0, 100],\n * v1: [120, 0, 0],\n * v2: [80, 0, 100],\n * v3: [80, 0, 0],\n * }),\n * divisions: 50,\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * emissive: [0, 1, 0]\n * })\n * });\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Create a mesh with polyline shape from QuadraticBezier\n * //------------------------------------------------------------------------------------------------------------------\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildPolylineGeometryFromCurve({\n * id: \"QuadraticBezierCurve\",\n * curve: new QuadraticBezierCurve(viewer.scene, {\n * v0: [-100, 0, 100],\n * v1: [-50, 0, 150],\n * v2: [-50, 0, 0],\n * }),\n * divisions: 20,\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * emissive: [0, 0, 1]\n * })\n * });\n * ````\n *\n * @function buildPolylineGeometryFromCurve\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Object} [cfg.curve] Curve for which polyline will be created.\n * @param {Number} [cfg.divisions] The number of divisions.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildPolylineGeometryFromCurve(cfg = {}) {\n\n let polylinePoints = cfg.curve.getPoints(cfg.divisions).map(a => [...a]).flat();\n return buildPolylineGeometry({\n id: cfg.id,\n points: polylinePoints\n });\n}\n\nexport {buildPolylineGeometry, buildPolylineGeometryFromCurve};", @@ -68478,7 +69006,7 @@ "lineNumber": 1 }, { - "__docId__": 3505, + "__docId__": 3523, "kind": "function", "name": "buildPolylineGeometry", "memberof": "src/viewer/scene/geometry/builders/buildPolylineGeometry.js", @@ -68544,7 +69072,7 @@ } }, { - "__docId__": 3506, + "__docId__": 3524, "kind": "function", "name": "buildPolylineGeometryFromCurve", "memberof": "src/viewer/scene/geometry/builders/buildPolylineGeometry.js", @@ -68620,7 +69148,7 @@ } }, { - "__docId__": 3507, + "__docId__": 3525, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildSphereGeometry.js", "content": "import {utils} from '../../utils.js';\n\n/**\n * @desc Creates a sphere-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a sphere-shaped {@link ReadableGeometry} :\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#buildSphereGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * center: [0,0,0],\n * radius: 1.5,\n * heightSegments: 60,\n * widthSegments: 60\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildSphereGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\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} Configuration for a {@link Geometry} subtype.\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 utils.apply(cfg, {\n positions: positions,\n normals: normals,\n uv: uvs,\n indices: indices\n });\n}\n\nexport {buildSphereGeometry};\n", @@ -68631,7 +69159,7 @@ "lineNumber": 1 }, { - "__docId__": 3508, + "__docId__": 3526, "kind": "function", "name": "buildSphereGeometry", "memberof": "src/viewer/scene/geometry/builders/buildSphereGeometry.js", @@ -68733,7 +69261,7 @@ } }, { - "__docId__": 3509, + "__docId__": 3527, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildTorusGeometry.js", "content": "import {utils} from \"../../utils.js\";\nimport {math} from '../../math/math.js';\n\n/**\n * @desc Creates a torus-shaped {@link Geometry}.\n *\n * ## Usage\n * Creating a {@link Mesh} with a torus-shaped {@link ReadableGeometry} :\n *\n * [[Run this example](/examples/index.html#geometry_builders_buildTorusGeometry)]\n * \n * ````javascript\n * import {Viewer, Mesh, buildTorusGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, 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 * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildTorusGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\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} Configuration for a {@link Geometry} subtype.\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 utils.apply(cfg, {\n positions: positions,\n normals: normals,\n uv: uvs,\n indices: indices\n });\n}\n\nexport {buildTorusGeometry};\n", @@ -68744,7 +69272,7 @@ "lineNumber": 1 }, { - "__docId__": 3510, + "__docId__": 3528, "kind": "function", "name": "buildTorusGeometry", "memberof": "src/viewer/scene/geometry/builders/buildTorusGeometry.js", @@ -68870,7 +69398,7 @@ } }, { - "__docId__": 3511, + "__docId__": 3529, "kind": "file", "name": "src/viewer/scene/geometry/builders/buildVectorTextGeometry.js", "content": "import {utils} from \"../../utils.js\";\n\nconst 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 vector text {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with vector text {@link ReadableGeometry} :\n *\n * [[Run this example](/examples/index.html#geometry_builders_buildVectorTextGeometry)]\n *\n * ````javascript\n *\n * import {Viewer, Mesh, buildVectorTextGeometry, ReadableGeometry, PhongMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 100];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildVectorTextGeometry({\n * origin: [0,0,0],\n * text: \"On the other side of the screen, it all looked so easy\"\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildVectorTextGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\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} Configuration for a {@link Geometry} subtype.\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;\n if (utils.isNumeric(text)) {\n text = \"\" + text;\n }\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 utils.apply(cfg, {\n primitive: \"lines\",\n positions: positions,\n indices: indices\n });\n}\n\n\nexport {buildVectorTextGeometry}\n", @@ -68881,7 +69409,7 @@ "lineNumber": 1 }, { - "__docId__": 3512, + "__docId__": 3530, "kind": "variable", "name": "letters", "memberof": "src/viewer/scene/geometry/builders/buildVectorTextGeometry.js", @@ -68902,7 +69430,7 @@ "ignore": true }, { - "__docId__": 3513, + "__docId__": 3531, "kind": "function", "name": "buildVectorTextGeometry", "memberof": "src/viewer/scene/geometry/builders/buildVectorTextGeometry.js", @@ -69002,7 +69530,7 @@ } }, { - "__docId__": 3514, + "__docId__": 3532, "kind": "file", "name": "src/viewer/scene/geometry/builders/index.js", "content": "export * from \"./buildBoxGeometry.js\";\nexport * from \"./buildBoxLinesGeometry.js\";\nexport * from \"./buildCylinderGeometry.js\";\nexport * from \"./buildGridGeometry.js\";\nexport * from \"./buildPlaneGeometry.js\";\nexport * from \"./buildSphereGeometry.js\";\nexport * from \"./buildTorusGeometry.js\";\nexport * from \"./buildVectorTextGeometry.js\";\nexport * from \"./buildPolylineGeometry.js\";", @@ -69013,7 +69541,7 @@ "lineNumber": 1 }, { - "__docId__": 3515, + "__docId__": 3533, "kind": "file", "name": "src/viewer/scene/geometry/index.js", "content": "export * from \"./ReadableGeometry.js\";\nexport * from \"./VBOGeometry.js\";\nexport * from \"./loaders/index.js\";\nexport * from \"./builders/index.js\";", @@ -69024,7 +69552,7 @@ "lineNumber": 1 }, { - "__docId__": 3516, + "__docId__": 3534, "kind": "file", "name": "src/viewer/scene/geometry/loaders/index.js", "content": "export * from \"./load3DSGeometry.js\";\nexport * from \"./loadOBJGeometry.js\";", @@ -69035,7 +69563,7 @@ "lineNumber": 1 }, { - "__docId__": 3517, + "__docId__": 3535, "kind": "file", "name": "src/viewer/scene/geometry/loaders/load3DSGeometry.js", "content": "import {utils} from '../../utils.js';\nimport {K3D} from '../../libs/k3d.js';\n\n/**\n * @desc Loads {@link Geometry} from 3DS.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with {@link PhongMaterial}, {@link Texture} and a {@link ReadableGeometry} loaded from 3DS.\n *\n * ````javascript\n * import {Viewer, Mesh, load3DSGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [40.04, 23.46, 79.06];\n * viewer.scene.camera.look = [-6.48, 13.92, -0.56];\n * viewer.scene.camera.up = [-0.04, 0.98, -0.08];\n *\n * load3DSGeometry(viewer.scene, {\n * src: \"models/3ds/lexus.3ds\",\n * compressGeometry: false\n *\n * }).then(function (geometryCfg) {\n *\n * // Success\n *\n * new Mesh(viewer.scene, {\n *\n * geometry: new ReadableGeometry(viewer.scene, geometryCfg),\n *\n * material: new PhongMaterial(viewer.scene, {\n *\n * emissive: [1, 1, 1],\n * emissiveMap: new Texture({ // .3DS has no normals so relies on emissive illumination\n * src: \"models/3ds/lexus.jpg\"\n * })\n * }),\n *\n * rotation: [-90, 0, 0] // +Z is up for this particular 3DS\n * });\n * }, function () {\n * // Error\n * });\n * ````\n *\n * @function load3DSGeometry\n * @param {Scene} scene Scene we're loading the geometry for.\n * @param {*} cfg Configs, also added to the result object.\n * @param {String} [cfg.src] Path to 3DS file.\n * @returns {Object} Configuration to pass into a {@link Geometry} constructor, containing geometry arrays loaded from the OBJ file.\n */\nfunction load3DSGeometry(scene, cfg = {}) {\n\n return new Promise(function (resolve, reject) {\n\n if (!cfg.src) {\n console.error(\"load3DSGeometry: Parameter expected: src\");\n reject();\n }\n\n var spinner = scene.canvas.spinner;\n spinner.processes++;\n\n utils.loadArraybuffer(cfg.src, function (data) {\n\n if (!data.byteLength) {\n console.error(\"load3DSGeometry: no data loaded\");\n spinner.processes--;\n reject();\n }\n\n var m = K3D.parse.from3DS(data);\t// done !\n\n var mesh = m.edit.objects[0].mesh;\n var positions = mesh.vertices;\n var uv = mesh.uvt;\n var indices = mesh.indices;\n\n spinner.processes--;\n\n resolve(utils.apply(cfg, {\n primitive: \"triangles\",\n positions: positions,\n normals: null,\n uv: uv,\n indices: indices\n }));\n },\n\n function (msg) {\n console.error(\"load3DSGeometry: \" + msg);\n spinner.processes--;\n reject();\n });\n });\n}\n\nexport {load3DSGeometry};\n", @@ -69046,7 +69574,7 @@ "lineNumber": 1 }, { - "__docId__": 3518, + "__docId__": 3536, "kind": "function", "name": "load3DSGeometry", "memberof": "src/viewer/scene/geometry/loaders/load3DSGeometry.js", @@ -69112,7 +69640,7 @@ } }, { - "__docId__": 3519, + "__docId__": 3537, "kind": "file", "name": "src/viewer/scene/geometry/loaders/loadOBJGeometry.js", "content": "import {utils} from '../../utils.js';\nimport {K3D} from '../../libs/k3d.js';\n\n/**\n * @desc Loads {@link Geometry} from OBJ.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with {@link MetallicMaterial} and {@link ReadableGeometry} loaded from OBJ.\n *\n * ````javascript\n * import {Viewer, Mesh, loadOBJGeometry, ReadableGeometry,\n * MetallicMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0.57, 1.37, 1.14];\n * viewer.scene.camera.look = [0.04, 0.58, 0.00];\n * viewer.scene.camera.up = [-0.22, 0.84, -0.48];\n *\n * loadOBJGeometry(viewer.scene, {\n *\n * src: \"models/obj/fireHydrant/FireHydrantMesh.obj\",\n * compressGeometry: false\n *\n * }).then(function (geometryCfg) {\n *\n * // Success\n *\n * new Mesh(viewer.scene, {\n *\n * geometry: new ReadableGeometry(viewer.scene, geometryCfg),\n *\n * material: new MetallicMaterial(viewer.scene, {\n *\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0,\n * \n * baseColorMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Base_Color.png\",\n * encoding: \"sRGB\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Normal_OpenGL.png\"\n * }),\n * roughnessMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Roughness.png\"\n * }),\n * metallicMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Metallic.png\"\n * }),\n * occlusionMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Mixed_AO.png\"\n * }),\n * \n * specularF0: 0.7\n * })\n * });\n * }, function () {\n * // Error\n * });\n * ````\n *\n * @function loadOBJGeometry\n * @param {Scene} scene Scene we're loading the geometry for.\n * @param {*} [cfg] Configs, also added to the result object.\n * @param {String} [cfg.src] Path to OBJ file.\n * @returns {Object} Configuration to pass into a {@link Geometry} constructor, containing geometry arrays loaded from the OBJ file.\n */\nfunction loadOBJGeometry(scene, cfg = {}) {\n\n return new Promise(function (resolve, reject) {\n\n if (!cfg.src) {\n console.error(\"loadOBJGeometry: Parameter expected: src\");\n reject();\n }\n\n var spinner = scene.canvas.spinner;\n spinner.processes++;\n\n utils.loadArraybuffer(cfg.src, function (data) {\n\n if (!data.byteLength) {\n console.error(\"loadOBJGeometry: no data loaded\");\n spinner.processes--;\n reject();\n }\n\n var m = K3D.parse.fromOBJ(data);\t// done !\n\n // unwrap simply duplicates some values, so they can be indexed with indices [0,1,2,3 ... ]\n // In some rendering engines, you can have only one index value for vertices, UVs, normals ...,\n // so \"unwrapping\" is a simple solution.\n\n var positions = K3D.edit.unwrap(m.i_verts, m.c_verts, 3);\n var normals = K3D.edit.unwrap(m.i_norms, m.c_norms, 3);\n var uv = K3D.edit.unwrap(m.i_uvt, m.c_uvt, 2);\n var indices = new Int32Array(m.i_verts.length);\n\n for (var i = 0; i < m.i_verts.length; i++) {\n indices[i] = i;\n }\n\n spinner.processes--;\n\n resolve(utils.apply(cfg, {\n primitive: \"triangles\",\n positions: positions,\n normals: normals.length > 0 ? normals : null,\n autoNormals: normals.length === 0,\n uv: uv,\n indices: indices\n }));\n },\n\n function (msg) {\n console.error(\"loadOBJGeometry: \" + msg);\n spinner.processes--;\n reject();\n });\n });\n}\n\nexport {loadOBJGeometry};\n", @@ -69123,7 +69651,7 @@ "lineNumber": 1 }, { - "__docId__": 3520, + "__docId__": 3538, "kind": "function", "name": "loadOBJGeometry", "memberof": "src/viewer/scene/geometry/loaders/loadOBJGeometry.js", @@ -69189,7 +69717,7 @@ } }, { - "__docId__": 3521, + "__docId__": 3539, "kind": "file", "name": "src/viewer/scene/index.js", "content": "export * from \"./camera/index.js\";\nexport * from \"./geometry/index.js\";\nexport * from \"./ImagePlane/index.js\";\nexport * from \"./Bitmap/index.js\";\nexport * from \"./LineSet/index.js\";\nexport * from \"./lights/index.js\";\nexport * from \"./marker/index.js\";\nexport * from \"./materials/index.js\";\nexport * from \"./math/index.js\";\nexport * from \"./mementos/index.js\";\nexport * from \"./mesh/index.js\";\nexport * from \"./nodes/index.js\";\nexport * from \"./paths/index.js\";\nexport * from \"./model/index.js\";\nexport * from \"./sectionPlane/index.js\";\nexport * from \"./skybox/index.js\";\nexport * from \"./utils/index.js\";\nexport * from \"./Component.js\";\nexport * from \"./utils.js\";\nexport * from \"./stats.js\";\nexport * from \"./constants/constants.js\";\nexport * from \"./webgl/PickResult.js\";", @@ -69200,7 +69728,7 @@ "lineNumber": 1 }, { - "__docId__": 3522, + "__docId__": 3540, "kind": "file", "name": "src/viewer/scene/input/Input.js", "content": "import {Component} from '../Component.js';\nimport {math} from '../math/math.js';\n\n/**\n * @desc Meditates mouse, touch and keyboard events for various interaction controls.\n *\n * Ordinarily, you would only use this component as a utility to help manage input events and state for your\n * own custom input handlers.\n *\n * * Located at {@link Scene#input}\n * * Used by (at least) {@link CameraControl}\n *\n * ## Usage\n *\n * Subscribing to mouse events on the canvas:\n *\n * ````javascript\n * import {Viewer} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * const input = viewer.scene.input;\n *\n * const onMouseDown = input.on(\"mousedown\", (canvasCoords) => {\n * console.log(\"Mouse down at: x=\" + canvasCoords[0] + \", y=\" + coords[1]);\n * });\n *\n * const onMouseUp = input.on(\"mouseup\", (canvasCoords) => {\n * console.log(\"Mouse up at: x=\" + canvasCoords[0] + \", y=\" + canvasCoords[1]);\n * });\n *\n * const onMouseClicked = input.on(\"mouseclicked\", (canvasCoords) => {\n * console.log(\"Mouse clicked at: x=\" + canvasCoords[0] + \", y=\" + canvasCoords[1]);\n * });\n *\n * const onDblClick = input.on(\"dblclick\", (canvasCoords) => {\n * console.log(\"Double-click at: x=\" + canvasCoords[0] + \", y=\" + canvasCoords[1]);\n * });\n * ````\n *\n * Subscribing to keyboard events on the canvas:\n *\n * ````javascript\n * const onKeyDown = input.on(\"keydown\", (keyCode) => {\n * switch (keyCode) {\n * case this.KEY_A:\n * console.log(\"The 'A' key is down\");\n * break;\n *\n * case this.KEY_B:\n * console.log(\"The 'B' key is down\");\n * break;\n *\n * case this.KEY_C:\n * console.log(\"The 'C' key is down\");\n * break;\n *\n * default:\n * console.log(\"Some other key is down\");\n * }\n * });\n *\n * const onKeyUp = input.on(\"keyup\", (keyCode) => {\n * switch (keyCode) {\n * case this.KEY_A:\n * console.log(\"The 'A' key is up\");\n * break;\n *\n * case this.KEY_B:\n * console.log(\"The 'B' key is up\");\n * break;\n *\n * case this.KEY_C:\n * console.log(\"The 'C' key is up\");\n * break;\n *\n * default:\n * console.log(\"Some other key is up\");\n * }\n * });\n * ````\n *\n * Checking if keys are down:\n *\n * ````javascript\n * const isCtrlDown = input.ctrlDown;\n * const isAltDown = input.altDown;\n * const shiftDown = input.shiftDown;\n * //...\n *\n * const isAKeyDown = input.keyDown[input.KEY_A];\n * const isBKeyDown = input.keyDown[input.KEY_B];\n * const isShiftKeyDown = input.keyDown[input.KEY_SHIFT];\n * //...\n *\n * ````\n * Unsubscribing from events:\n *\n * ````javascript\n * input.off(onMouseDown);\n * input.off(onMouseUp);\n * //...\n * ````\n *\n * ## Disabling all events\n *\n * Event handling is enabled by default.\n *\n * To disable all events:\n *\n * ````javascript\n * myViewer.scene.input.setEnabled(false);\n * ````\n * To enable all events again:\n *\n * ````javascript\n * myViewer.scene.input.setEnabled(true);\n * ````\n *\n * ## Disabling keyboard input\n *\n * When the mouse is over the canvas, the canvas will consume keyboard events. Therefore, sometimes we need\n * to disable keyboard control, so that other UI elements can get those events.\n *\n * To disable keyboard events:\n *\n * ````javascript\n * myViewer.scene.input.setKeyboardEnabled(false);\n * ````\n *\n * To enable keyboard events again:\n *\n * ````javascript\n * myViewer.scene.input.setKeyboardEnabled(true)\n * ````\n */\nclass Input extends Component {\n\n /**\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n /**\n * Code for the BACKSPACE key.\n * @property KEY_BACKSPACE\n * @final\n * @type {Number}\n */\n this.KEY_BACKSPACE = 8;\n\n /**\n * Code for the TAB key.\n * @property KEY_TAB\n * @final\n * @type {Number}\n */\n this.KEY_TAB = 9;\n\n /**\n * Code for the ENTER key.\n * @property KEY_ENTER\n * @final\n * @type {Number}\n */\n this.KEY_ENTER = 13;\n\n /**\n * Code for the SHIFT key.\n * @property KEY_SHIFT\n * @final\n * @type {Number}\n */\n this.KEY_SHIFT = 16;\n\n /**\n * Code for the CTRL key.\n * @property KEY_CTRL\n * @final\n * @type {Number}\n */\n this.KEY_CTRL = 17;\n\n /**\n * Code for the ALT key.\n * @property KEY_ALT\n * @final\n * @type {Number}\n */\n this.KEY_ALT = 18;\n\n /**\n * Code for the PAUSE_BREAK key.\n * @property KEY_PAUSE_BREAK\n * @final\n * @type {Number}\n */\n this.KEY_PAUSE_BREAK = 19;\n\n /**\n * Code for the CAPS_LOCK key.\n * @property KEY_CAPS_LOCK\n * @final\n * @type {Number}\n */\n this.KEY_CAPS_LOCK = 20;\n\n /**\n * Code for the ESCAPE key.\n * @property KEY_ESCAPE\n * @final\n * @type {Number}\n */\n this.KEY_ESCAPE = 27;\n\n /**\n * Code for the PAGE_UP key.\n * @property KEY_PAGE_UP\n * @final\n * @type {Number}\n */\n this.KEY_PAGE_UP = 33;\n\n /**\n * Code for the PAGE_DOWN key.\n * @property KEY_PAGE_DOWN\n * @final\n * @type {Number}\n */\n this.KEY_PAGE_DOWN = 34;\n\n /**\n * Code for the END key.\n * @property KEY_END\n * @final\n * @type {Number}\n */\n this.KEY_END = 35;\n\n /**\n * Code for the HOME key.\n * @property KEY_HOME\n * @final\n * @type {Number}\n */\n this.KEY_HOME = 36;\n\n /**\n * Code for the LEFT_ARROW key.\n * @property KEY_LEFT_ARROW\n * @final\n * @type {Number}\n */\n this.KEY_LEFT_ARROW = 37;\n\n /**\n * Code for the UP_ARROW key.\n * @property KEY_UP_ARROW\n * @final\n * @type {Number}\n */\n this.KEY_UP_ARROW = 38;\n\n /**\n * Code for the RIGHT_ARROW key.\n * @property KEY_RIGHT_ARROW\n * @final\n * @type {Number}\n */\n this.KEY_RIGHT_ARROW = 39;\n\n /**\n * Code for the DOWN_ARROW key.\n * @property KEY_DOWN_ARROW\n * @final\n * @type {Number}\n */\n this.KEY_DOWN_ARROW = 40;\n\n /**\n * Code for the INSERT key.\n * @property KEY_INSERT\n * @final\n * @type {Number}\n */\n this.KEY_INSERT = 45;\n\n /**\n * Code for the DELETE key.\n * @property KEY_DELETE\n * @final\n * @type {Number}\n */\n this.KEY_DELETE = 46;\n\n /**\n * Code for the 0 key.\n * @property KEY_NUM_0\n * @final\n * @type {Number}\n */\n this.KEY_NUM_0 = 48;\n\n /**\n * Code for the 1 key.\n * @property KEY_NUM_1\n * @final\n * @type {Number}\n */\n this.KEY_NUM_1 = 49;\n\n /**\n * Code for the 2 key.\n * @property KEY_NUM_2\n * @final\n * @type {Number}\n */\n this.KEY_NUM_2 = 50;\n\n /**\n * Code for the 3 key.\n * @property KEY_NUM_3\n * @final\n * @type {Number}\n */\n this.KEY_NUM_3 = 51;\n\n /**\n * Code for the 4 key.\n * @property KEY_NUM_4\n * @final\n * @type {Number}\n */\n this.KEY_NUM_4 = 52;\n\n /**\n * Code for the 5 key.\n * @property KEY_NUM_5\n * @final\n * @type {Number}\n */\n this.KEY_NUM_5 = 53;\n\n /**\n * Code for the 6 key.\n * @property KEY_NUM_6\n * @final\n * @type {Number}\n */\n this.KEY_NUM_6 = 54;\n\n /**\n * Code for the 7 key.\n * @property KEY_NUM_7\n * @final\n * @type {Number}\n */\n this.KEY_NUM_7 = 55;\n\n /**\n * Code for the 8 key.\n * @property KEY_NUM_8\n * @final\n * @type {Number}\n */\n this.KEY_NUM_8 = 56;\n\n /**\n * Code for the 9 key.\n * @property KEY_NUM_9\n * @final\n * @type {Number}\n */\n this.KEY_NUM_9 = 57;\n\n /**\n * Code for the A key.\n * @property KEY_A\n * @final\n * @type {Number}\n */\n this.KEY_A = 65;\n\n /**\n * Code for the B key.\n * @property KEY_B\n * @final\n * @type {Number}\n */\n this.KEY_B = 66;\n\n /**\n * Code for the C key.\n * @property KEY_C\n * @final\n * @type {Number}\n */\n this.KEY_C = 67;\n\n /**\n * Code for the D key.\n * @property KEY_D\n * @final\n * @type {Number}\n */\n this.KEY_D = 68;\n\n /**\n * Code for the E key.\n * @property KEY_E\n * @final\n * @type {Number}\n */\n this.KEY_E = 69;\n\n /**\n * Code for the F key.\n * @property KEY_F\n * @final\n * @type {Number}\n */\n this.KEY_F = 70;\n\n /**\n * Code for the G key.\n * @property KEY_G\n * @final\n * @type {Number}\n */\n this.KEY_G = 71;\n\n /**\n * Code for the H key.\n * @property KEY_H\n * @final\n * @type {Number}\n */\n this.KEY_H = 72;\n\n /**\n * Code for the I key.\n * @property KEY_I\n * @final\n * @type {Number}\n */\n this.KEY_I = 73;\n\n /**\n * Code for the J key.\n * @property KEY_J\n * @final\n * @type {Number}\n */\n this.KEY_J = 74;\n\n /**\n * Code for the K key.\n * @property KEY_K\n * @final\n * @type {Number}\n */\n this.KEY_K = 75;\n\n /**\n * Code for the L key.\n * @property KEY_L\n * @final\n * @type {Number}\n */\n this.KEY_L = 76;\n\n /**\n * Code for the M key.\n * @property KEY_M\n * @final\n * @type {Number}\n */\n this.KEY_M = 77;\n\n /**\n * Code for the N key.\n * @property KEY_N\n * @final\n * @type {Number}\n */\n this.KEY_N = 78;\n\n /**\n * Code for the O key.\n * @property KEY_O\n * @final\n * @type {Number}\n */\n this.KEY_O = 79;\n\n /**\n * Code for the P key.\n * @property KEY_P\n * @final\n * @type {Number}\n */\n this.KEY_P = 80;\n\n /**\n * Code for the Q key.\n * @property KEY_Q\n * @final\n * @type {Number}\n */\n this.KEY_Q = 81;\n\n /**\n * Code for the R key.\n * @property KEY_R\n * @final\n * @type {Number}\n */\n this.KEY_R = 82;\n\n /**\n * Code for the S key.\n * @property KEY_S\n * @final\n * @type {Number}\n */\n this.KEY_S = 83;\n\n /**\n * Code for the T key.\n * @property KEY_T\n * @final\n * @type {Number}\n */\n this.KEY_T = 84;\n\n /**\n * Code for the U key.\n * @property KEY_U\n * @final\n * @type {Number}\n */\n this.KEY_U = 85;\n\n /**\n * Code for the V key.\n * @property KEY_V\n * @final\n * @type {Number}\n */\n this.KEY_V = 86;\n\n /**\n * Code for the W key.\n * @property KEY_W\n * @final\n * @type {Number}\n */\n this.KEY_W = 87;\n\n /**\n * Code for the X key.\n * @property KEY_X\n * @final\n * @type {Number}\n */\n this.KEY_X = 88;\n\n /**\n * Code for the Y key.\n * @property KEY_Y\n * @final\n * @type {Number}\n */\n this.KEY_Y = 89;\n\n /**\n * Code for the Z key.\n * @property KEY_Z\n * @final\n * @type {Number}\n */\n this.KEY_Z = 90;\n\n /**\n * Code for the LEFT_WINDOW key.\n * @property KEY_LEFT_WINDOW\n * @final\n * @type {Number}\n */\n this.KEY_LEFT_WINDOW = 91;\n\n /**\n * Code for the RIGHT_WINDOW key.\n * @property KEY_RIGHT_WINDOW\n * @final\n * @type {Number}\n */\n this.KEY_RIGHT_WINDOW = 92;\n\n /**\n * Code for the SELECT key.\n * @property KEY_SELECT\n * @final\n * @type {Number}\n */\n this.KEY_SELECT_KEY = 93;\n\n /**\n * Code for the number pad 0 key.\n * @property KEY_NUMPAD_0\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_0 = 96;\n\n /**\n * Code for the number pad 1 key.\n * @property KEY_NUMPAD_1\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_1 = 97;\n\n /**\n * Code for the number pad 2 key.\n * @property KEY_NUMPAD 2\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_2 = 98;\n\n /**\n * Code for the number pad 3 key.\n * @property KEY_NUMPAD_3\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_3 = 99;\n\n /**\n * Code for the number pad 4 key.\n * @property KEY_NUMPAD_4\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_4 = 100;\n\n /**\n * Code for the number pad 5 key.\n * @property KEY_NUMPAD_5\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_5 = 101;\n\n /**\n * Code for the number pad 6 key.\n * @property KEY_NUMPAD_6\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_6 = 102;\n\n /**\n * Code for the number pad 7 key.\n * @property KEY_NUMPAD_7\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_7 = 103;\n\n /**\n * Code for the number pad 8 key.\n * @property KEY_NUMPAD_8\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_8 = 104;\n\n /**\n * Code for the number pad 9 key.\n * @property KEY_NUMPAD_9\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_9 = 105;\n\n /**\n * Code for the MULTIPLY key.\n * @property KEY_MULTIPLY\n * @final\n * @type {Number}\n */\n this.KEY_MULTIPLY = 106;\n\n /**\n * Code for the ADD key.\n * @property KEY_ADD\n * @final\n * @type {Number}\n */\n this.KEY_ADD = 107;\n\n /**\n * Code for the SUBTRACT key.\n * @property KEY_SUBTRACT\n * @final\n * @type {Number}\n */\n this.KEY_SUBTRACT = 109;\n\n /**\n * Code for the DECIMAL POINT key.\n * @property KEY_DECIMAL_POINT\n * @final\n * @type {Number}\n */\n this.KEY_DECIMAL_POINT = 110;\n\n /**\n * Code for the DIVIDE key.\n * @property KEY_DIVIDE\n * @final\n * @type {Number}\n */\n this.KEY_DIVIDE = 111;\n\n /**\n * Code for the F1 key.\n * @property KEY_F1\n * @final\n * @type {Number}\n */\n this.KEY_F1 = 112;\n\n /**\n * Code for the F2 key.\n * @property KEY_F2\n * @final\n * @type {Number}\n */\n this.KEY_F2 = 113;\n\n /**\n * Code for the F3 key.\n * @property KEY_F3\n * @final\n * @type {Number}\n */\n this.KEY_F3 = 114;\n\n /**\n * Code for the F4 key.\n * @property KEY_F4\n * @final\n * @type {Number}\n */\n this.KEY_F4 = 115;\n\n /**\n * Code for the F5 key.\n * @property KEY_F5\n * @final\n * @type {Number}\n */\n this.KEY_F5 = 116;\n\n /**\n * Code for the F6 key.\n * @property KEY_F6\n * @final\n * @type {Number}\n */\n this.KEY_F6 = 117;\n\n /**\n * Code for the F7 key.\n * @property KEY_F7\n * @final\n * @type {Number}\n */\n this.KEY_F7 = 118;\n\n /**\n * Code for the F8 key.\n * @property KEY_F8\n * @final\n * @type {Number}\n */\n this.KEY_F8 = 119;\n\n /**\n * Code for the F9 key.\n * @property KEY_F9\n * @final\n * @type {Number}\n */\n this.KEY_F9 = 120;\n\n /**\n * Code for the F10 key.\n * @property KEY_F10\n * @final\n * @type {Number}\n */\n this.KEY_F10 = 121;\n\n /**\n * Code for the F11 key.\n * @property KEY_F11\n * @final\n * @type {Number}\n */\n this.KEY_F11 = 122;\n\n /**\n * Code for the F12 key.\n * @property KEY_F12\n * @final\n * @type {Number}\n */\n this.KEY_F12 = 123;\n\n /**\n * Code for the NUM_LOCK key.\n * @property KEY_NUM_LOCK\n * @final\n * @type {Number}\n */\n this.KEY_NUM_LOCK = 144;\n\n /**\n * Code for the SCROLL_LOCK key.\n * @property KEY_SCROLL_LOCK\n * @final\n * @type {Number}\n */\n this.KEY_SCROLL_LOCK = 145;\n\n /**\n * Code for the SEMI_COLON key.\n * @property KEY_SEMI_COLON\n * @final\n * @type {Number}\n */\n this.KEY_SEMI_COLON = 186;\n\n /**\n * Code for the EQUAL_SIGN key.\n * @property KEY_EQUAL_SIGN\n * @final\n * @type {Number}\n */\n this.KEY_EQUAL_SIGN = 187;\n\n /**\n * Code for the COMMA key.\n * @property KEY_COMMA\n * @final\n * @type {Number}\n */\n this.KEY_COMMA = 188;\n\n /**\n * Code for the DASH key.\n * @property KEY_DASH\n * @final\n * @type {Number}\n */\n this.KEY_DASH = 189;\n\n /**\n * Code for the PERIOD key.\n * @property KEY_PERIOD\n * @final\n * @type {Number}\n */\n this.KEY_PERIOD = 190;\n\n /**\n * Code for the FORWARD_SLASH key.\n * @property KEY_FORWARD_SLASH\n * @final\n * @type {Number}\n */\n this.KEY_FORWARD_SLASH = 191;\n\n /**\n * Code for the GRAVE_ACCENT key.\n * @property KEY_GRAVE_ACCENT\n * @final\n * @type {Number}\n */\n this.KEY_GRAVE_ACCENT = 192;\n\n /**\n * Code for the OPEN_BRACKET key.\n * @property KEY_OPEN_BRACKET\n * @final\n * @type {Number}\n */\n this.KEY_OPEN_BRACKET = 219;\n\n /**\n * Code for the BACK_SLASH key.\n * @property KEY_BACK_SLASH\n * @final\n * @type {Number}\n */\n this.KEY_BACK_SLASH = 220;\n\n /**\n * Code for the CLOSE_BRACKET key.\n * @property KEY_CLOSE_BRACKET\n * @final\n * @type {Number}\n */\n this.KEY_CLOSE_BRACKET = 221;\n\n /**\n * Code for the SINGLE_QUOTE key.\n * @property KEY_SINGLE_QUOTE\n * @final\n * @type {Number}\n */\n this.KEY_SINGLE_QUOTE = 222;\n\n /**\n * Code for the SPACE key.\n * @property KEY_SPACE\n * @final\n * @type {Number}\n */\n this.KEY_SPACE = 32;\n\n /**\n * The canvas element that mouse and keyboards are bound to.\n *\n * @final\n * @type {HTMLCanvasElement}\n */\n this.element = cfg.element;\n\n /** True whenever ALT key is down.\n *\n * @type {boolean}\n */\n this.altDown = false;\n\n /** True whenever CTRL key is down.\n *\n * @type {boolean}\n */\n this.ctrlDown = false;\n\n /** True whenever left mouse button is down.\n *\n * @type {boolean}\n */\n this.mouseDownLeft = false;\n\n /**\n * True whenever middle mouse button is down.\n *\n * @type {boolean}\n */\n this.mouseDownMiddle = false;\n\n /**\n * True whenever the right mouse button is down.\n *\n * @type {boolean}\n */\n this.mouseDownRight = false;\n\n /**\n * Flag for each key that's down.\n *\n * @type {boolean[]}\n */\n this.keyDown = [];\n\n /** True while input enabled\n *\n * @type {boolean}\n */\n this.enabled = true;\n\n /** True while keyboard input is enabled.\n *\n * Default value is ````true````.\n *\n * {@link CameraControl} will not respond to keyboard events while this is ````false````.\n *\n * @type {boolean}\n */\n this.keyboardEnabled = true;\n\n /** True while the mouse is over the canvas.\n *\n * @type {boolean}\n */\n this.mouseover = false;\n\n /**\n * Current mouse position within the canvas.\n * @type {Number[]}\n */\n this.mouseCanvasPos = math.vec2();\n\n this._keyboardEventsElement = cfg.keyboardEventsElement || document;\n\n this._bindEvents();\n }\n\n _bindEvents() {\n\n if (this._eventsBound) {\n return;\n }\n\n this._keyboardEventsElement.addEventListener(\"keydown\", this._keyDownListener = (e) => {\n if (!this.enabled || (!this.keyboardEnabled)) {\n return;\n }\n if (e.target.tagName !== \"INPUT\" && e.target.tagName !== \"TEXTAREA\") {\n if (e.keyCode === this.KEY_CTRL) {\n this.ctrlDown = true;\n } else if (e.keyCode === this.KEY_ALT) {\n this.altDown = true;\n } else if (e.keyCode === this.KEY_SHIFT) {\n this.shiftDown = true;\n }\n this.keyDown[e.keyCode] = true;\n this.fire(\"keydown\", e.keyCode, true);\n }\n }, false);\n\n this._keyboardEventsElement.addEventListener(\"keyup\", this._keyUpListener = (e) => {\n if (!this.enabled || (!this.keyboardEnabled)) {\n return;\n }\n if (e.target.tagName !== \"INPUT\" && e.target.tagName !== \"TEXTAREA\") {\n if (e.keyCode === this.KEY_CTRL) {\n this.ctrlDown = false;\n } else if (e.keyCode === this.KEY_ALT) {\n this.altDown = false;\n } else if (e.keyCode === this.KEY_SHIFT) {\n this.shiftDown = false;\n }\n this.keyDown[e.keyCode] = false;\n this.fire(\"keyup\", e.keyCode, true);\n }\n });\n\n this.element.addEventListener(\"mouseenter\", this._mouseEnterListener = (e) => {\n if (!this.enabled) {\n return;\n }\n this.mouseover = true;\n this._getMouseCanvasPos(e);\n this.fire(\"mouseenter\", this.mouseCanvasPos, true);\n });\n\n this.element.addEventListener(\"mouseleave\", this._mouseLeaveListener = (e) => {\n if (!this.enabled) {\n return;\n }\n this.mouseover = false;\n this._getMouseCanvasPos(e);\n this.fire(\"mouseleave\", this.mouseCanvasPos, true);\n });\n\n this.element.addEventListener(\"mousedown\", this._mouseDownListener = (e) => {\n if (!this.enabled) {\n return;\n }\n switch (e.which) {\n case 1:// Left button\n this.mouseDownLeft = true;\n break;\n case 2:// Middle/both buttons\n this.mouseDownMiddle = true;\n break;\n case 3:// Right button\n this.mouseDownRight = true;\n break;\n default:\n break;\n }\n this._getMouseCanvasPos(e);\n this.element.focus();\n this.fire(\"mousedown\", this.mouseCanvasPos, true);\n if (this.mouseover) {\n e.preventDefault();\n }\n });\n\n document.addEventListener(\"mouseup\", this._mouseUpListener = (e) => {\n if (!this.enabled) {\n return;\n }\n switch (e.which) {\n case 1:// Left button\n this.mouseDownLeft = false;\n break;\n case 2:// Middle/both buttons\n this.mouseDownMiddle = false;\n break;\n case 3:// Right button\n this.mouseDownRight = false;\n break;\n default:\n break;\n }\n this.fire(\"mouseup\", this.mouseCanvasPos, true);\n // if (this.mouseover) {\n // e.preventDefault();\n // }\n }, true);\n\n document.addEventListener(\"click\", this._clickListener = (e) => {\n if (!this.enabled) {\n return;\n }\n switch (e.which) {\n case 1:// Left button\n this.mouseDownLeft = false;\n this.mouseDownRight = false;\n break;\n case 2:// Middle/both buttons\n this.mouseDownMiddle = false;\n break;\n case 3:// Right button\n this.mouseDownLeft = false;\n this.mouseDownRight = false;\n break;\n default:\n break;\n }\n this._getMouseCanvasPos(e);\n this.fire(\"click\", this.mouseCanvasPos, true);\n if (this.mouseover) {\n e.preventDefault();\n }\n });\n\n document.addEventListener(\"dblclick\", this._dblClickListener = (e) => {\n if (!this.enabled) {\n return;\n }\n switch (e.which) {\n case 1:// Left button\n this.mouseDownLeft = false;\n this.mouseDownRight = false;\n break;\n case 2:// Middle/both buttons\n this.mouseDownMiddle = false;\n break;\n case 3:// Right button\n this.mouseDownLeft = false;\n this.mouseDownRight = false;\n break;\n default:\n break;\n }\n this._getMouseCanvasPos(e);\n this.fire(\"dblclick\", this.mouseCanvasPos, true);\n if (this.mouseover) {\n e.preventDefault();\n }\n });\n\n const tickifedMouseMoveFn = this.scene.tickify(\n () => this.fire(\"mousemove\", this.mouseCanvasPos, true)\n );\n\n this.element.addEventListener(\"mousemove\", this._mouseMoveListener = (e) => {\n if (!this.enabled) {\n return;\n }\n this._getMouseCanvasPos(e);\n tickifedMouseMoveFn(); \n if (this.mouseover) {\n e.preventDefault();\n }\n });\n\n const tickifiedMouseWheelFn = this.scene.tickify(\n (delta) => { this.fire(\"mousewheel\", delta, true); }\n );\n\n this.element.addEventListener(\"wheel\", this._mouseWheelListener = (e, d) => {\n if (!this.enabled) {\n return;\n }\n const delta = Math.max(-1, Math.min(1, -e.deltaY * 40));\n tickifiedMouseWheelFn(delta);\n }, {passive: true});\n\n // mouseclicked\n\n {\n let downX;\n let downY;\n // Tolerance between down and up positions for a mouse click\n const tolerance = 2;\n this.on(\"mousedown\", (params) => {\n downX = params[0];\n downY = params[1];\n });\n this.on(\"mouseup\", (params) => {\n if (downX >= (params[0] - tolerance) &&\n downX <= (params[0] + tolerance) &&\n downY >= (params[1] - tolerance) &&\n downY <= (params[1] + tolerance)) {\n this.fire(\"mouseclicked\", params, true);\n }\n });\n }\n\n this._eventsBound = true;\n }\n\n _unbindEvents() {\n if (!this._eventsBound) {\n return;\n }\n this._keyboardEventsElement.removeEventListener(\"keydown\", this._keyDownListener);\n this._keyboardEventsElement.removeEventListener(\"keyup\", this._keyUpListener);\n this.element.removeEventListener(\"mouseenter\", this._mouseEnterListener);\n this.element.removeEventListener(\"mouseleave\", this._mouseLeaveListener);\n this.element.removeEventListener(\"mousedown\", this._mouseDownListener);\n document.removeEventListener(\"mouseup\", this._mouseDownListener);\n document.removeEventListener(\"click\", this._clickListener);\n document.removeEventListener(\"dblclick\", this._dblClickListener);\n this.element.removeEventListener(\"mousemove\", this._mouseMoveListener);\n this.element.removeEventListener(\"wheel\", this._mouseWheelListener);\n if (window.OrientationChangeEvent) {\n window.removeEventListener('orientationchange', this._orientationchangedListener);\n }\n if (window.DeviceMotionEvent) {\n window.removeEventListener('devicemotion', this._deviceMotionListener);\n }\n if (window.DeviceOrientationEvent) {\n window.removeEventListener(\"deviceorientation\", this._deviceOrientListener);\n }\n this._eventsBound = false;\n }\n\n _getMouseCanvasPos(event) {\n if (!event) {\n event = window.event;\n this.mouseCanvasPos[0] = event.x;\n this.mouseCanvasPos[1] = event.y;\n } else {\n let element = event.target;\n let totalOffsetLeft = 0;\n let totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n this.mouseCanvasPos[0] = event.pageX - totalOffsetLeft;\n this.mouseCanvasPos[1] = event.pageY - totalOffsetTop;\n }\n }\n\n /**\n * Sets whether input handlers are enabled.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} enable Indicates if input handlers are enabled.\n */\n setEnabled(enable) {\n if (this.enabled !== enable) {\n this.fire(\"enabled\", this.enabled = enable);\n }\n }\n\n /**\n * Gets whether input handlers are enabled.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Indicates if input handlers are enabled.\n */\n getEnabled() {\n return this.enabled;\n }\n\n /**\n * Sets whether or not keyboard input is enabled.\n *\n * Default value is ````true````.\n *\n * {@link CameraControl} will not respond to keyboard events while this is set ````false````.\n *\n * @param {Boolean} value Indicates whether keyboard input is enabled.\n */\n setKeyboardEnabled(value) {\n this.keyboardEnabled = value;\n }\n\n /**\n * Gets whether keyboard input is enabled.\n *\n * Default value is ````true````.\n *\n * {@link CameraControl} will not respond to keyboard events while this is set ````false````.\n *\n * @returns {Boolean} Returns whether keyboard input is enabled.\n */\n getKeyboardEnabled() {\n return this.keyboardEnabled;\n }\n\n /**\n * @private\n */\n destroy() {\n super.destroy();\n this._unbindEvents();\n }\n}\n\nexport {Input};\n", @@ -69211,7 +69739,7 @@ "lineNumber": 1 }, { - "__docId__": 3523, + "__docId__": 3541, "kind": "class", "name": "Input", "memberof": "src/viewer/scene/input/Input.js", @@ -69229,7 +69757,7 @@ ] }, { - "__docId__": 3524, + "__docId__": 3542, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69243,7 +69771,7 @@ "ignore": true }, { - "__docId__": 3525, + "__docId__": 3543, "kind": "member", "name": "KEY_BACKSPACE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69280,7 +69808,7 @@ } }, { - "__docId__": 3526, + "__docId__": 3544, "kind": "member", "name": "KEY_TAB", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69317,7 +69845,7 @@ } }, { - "__docId__": 3527, + "__docId__": 3545, "kind": "member", "name": "KEY_ENTER", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69354,7 +69882,7 @@ } }, { - "__docId__": 3528, + "__docId__": 3546, "kind": "member", "name": "KEY_SHIFT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69391,7 +69919,7 @@ } }, { - "__docId__": 3529, + "__docId__": 3547, "kind": "member", "name": "KEY_CTRL", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69428,7 +69956,7 @@ } }, { - "__docId__": 3530, + "__docId__": 3548, "kind": "member", "name": "KEY_ALT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69465,7 +69993,7 @@ } }, { - "__docId__": 3531, + "__docId__": 3549, "kind": "member", "name": "KEY_PAUSE_BREAK", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69502,7 +70030,7 @@ } }, { - "__docId__": 3532, + "__docId__": 3550, "kind": "member", "name": "KEY_CAPS_LOCK", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69539,7 +70067,7 @@ } }, { - "__docId__": 3533, + "__docId__": 3551, "kind": "member", "name": "KEY_ESCAPE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69576,7 +70104,7 @@ } }, { - "__docId__": 3534, + "__docId__": 3552, "kind": "member", "name": "KEY_PAGE_UP", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69613,7 +70141,7 @@ } }, { - "__docId__": 3535, + "__docId__": 3553, "kind": "member", "name": "KEY_PAGE_DOWN", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69650,7 +70178,7 @@ } }, { - "__docId__": 3536, + "__docId__": 3554, "kind": "member", "name": "KEY_END", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69687,7 +70215,7 @@ } }, { - "__docId__": 3537, + "__docId__": 3555, "kind": "member", "name": "KEY_HOME", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69724,7 +70252,7 @@ } }, { - "__docId__": 3538, + "__docId__": 3556, "kind": "member", "name": "KEY_LEFT_ARROW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69761,7 +70289,7 @@ } }, { - "__docId__": 3539, + "__docId__": 3557, "kind": "member", "name": "KEY_UP_ARROW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69798,7 +70326,7 @@ } }, { - "__docId__": 3540, + "__docId__": 3558, "kind": "member", "name": "KEY_RIGHT_ARROW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69835,7 +70363,7 @@ } }, { - "__docId__": 3541, + "__docId__": 3559, "kind": "member", "name": "KEY_DOWN_ARROW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69872,7 +70400,7 @@ } }, { - "__docId__": 3542, + "__docId__": 3560, "kind": "member", "name": "KEY_INSERT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69909,7 +70437,7 @@ } }, { - "__docId__": 3543, + "__docId__": 3561, "kind": "member", "name": "KEY_DELETE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69946,7 +70474,7 @@ } }, { - "__docId__": 3544, + "__docId__": 3562, "kind": "member", "name": "KEY_NUM_0", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -69983,7 +70511,7 @@ } }, { - "__docId__": 3545, + "__docId__": 3563, "kind": "member", "name": "KEY_NUM_1", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70020,7 +70548,7 @@ } }, { - "__docId__": 3546, + "__docId__": 3564, "kind": "member", "name": "KEY_NUM_2", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70057,7 +70585,7 @@ } }, { - "__docId__": 3547, + "__docId__": 3565, "kind": "member", "name": "KEY_NUM_3", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70094,7 +70622,7 @@ } }, { - "__docId__": 3548, + "__docId__": 3566, "kind": "member", "name": "KEY_NUM_4", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70131,7 +70659,7 @@ } }, { - "__docId__": 3549, + "__docId__": 3567, "kind": "member", "name": "KEY_NUM_5", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70168,7 +70696,7 @@ } }, { - "__docId__": 3550, + "__docId__": 3568, "kind": "member", "name": "KEY_NUM_6", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70205,7 +70733,7 @@ } }, { - "__docId__": 3551, + "__docId__": 3569, "kind": "member", "name": "KEY_NUM_7", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70242,7 +70770,7 @@ } }, { - "__docId__": 3552, + "__docId__": 3570, "kind": "member", "name": "KEY_NUM_8", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70279,7 +70807,7 @@ } }, { - "__docId__": 3553, + "__docId__": 3571, "kind": "member", "name": "KEY_NUM_9", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70316,7 +70844,7 @@ } }, { - "__docId__": 3554, + "__docId__": 3572, "kind": "member", "name": "KEY_A", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70353,7 +70881,7 @@ } }, { - "__docId__": 3555, + "__docId__": 3573, "kind": "member", "name": "KEY_B", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70390,7 +70918,7 @@ } }, { - "__docId__": 3556, + "__docId__": 3574, "kind": "member", "name": "KEY_C", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70427,7 +70955,7 @@ } }, { - "__docId__": 3557, + "__docId__": 3575, "kind": "member", "name": "KEY_D", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70464,7 +70992,7 @@ } }, { - "__docId__": 3558, + "__docId__": 3576, "kind": "member", "name": "KEY_E", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70501,7 +71029,7 @@ } }, { - "__docId__": 3559, + "__docId__": 3577, "kind": "member", "name": "KEY_F", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70538,7 +71066,7 @@ } }, { - "__docId__": 3560, + "__docId__": 3578, "kind": "member", "name": "KEY_G", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70575,7 +71103,7 @@ } }, { - "__docId__": 3561, + "__docId__": 3579, "kind": "member", "name": "KEY_H", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70612,7 +71140,7 @@ } }, { - "__docId__": 3562, + "__docId__": 3580, "kind": "member", "name": "KEY_I", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70649,7 +71177,7 @@ } }, { - "__docId__": 3563, + "__docId__": 3581, "kind": "member", "name": "KEY_J", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70686,7 +71214,7 @@ } }, { - "__docId__": 3564, + "__docId__": 3582, "kind": "member", "name": "KEY_K", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70723,7 +71251,7 @@ } }, { - "__docId__": 3565, + "__docId__": 3583, "kind": "member", "name": "KEY_L", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70760,7 +71288,7 @@ } }, { - "__docId__": 3566, + "__docId__": 3584, "kind": "member", "name": "KEY_M", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70797,7 +71325,7 @@ } }, { - "__docId__": 3567, + "__docId__": 3585, "kind": "member", "name": "KEY_N", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70834,7 +71362,7 @@ } }, { - "__docId__": 3568, + "__docId__": 3586, "kind": "member", "name": "KEY_O", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70871,7 +71399,7 @@ } }, { - "__docId__": 3569, + "__docId__": 3587, "kind": "member", "name": "KEY_P", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70908,7 +71436,7 @@ } }, { - "__docId__": 3570, + "__docId__": 3588, "kind": "member", "name": "KEY_Q", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70945,7 +71473,7 @@ } }, { - "__docId__": 3571, + "__docId__": 3589, "kind": "member", "name": "KEY_R", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -70982,7 +71510,7 @@ } }, { - "__docId__": 3572, + "__docId__": 3590, "kind": "member", "name": "KEY_S", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71019,7 +71547,7 @@ } }, { - "__docId__": 3573, + "__docId__": 3591, "kind": "member", "name": "KEY_T", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71056,7 +71584,7 @@ } }, { - "__docId__": 3574, + "__docId__": 3592, "kind": "member", "name": "KEY_U", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71093,7 +71621,7 @@ } }, { - "__docId__": 3575, + "__docId__": 3593, "kind": "member", "name": "KEY_V", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71130,7 +71658,7 @@ } }, { - "__docId__": 3576, + "__docId__": 3594, "kind": "member", "name": "KEY_W", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71167,7 +71695,7 @@ } }, { - "__docId__": 3577, + "__docId__": 3595, "kind": "member", "name": "KEY_X", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71204,7 +71732,7 @@ } }, { - "__docId__": 3578, + "__docId__": 3596, "kind": "member", "name": "KEY_Y", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71241,7 +71769,7 @@ } }, { - "__docId__": 3579, + "__docId__": 3597, "kind": "member", "name": "KEY_Z", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71278,7 +71806,7 @@ } }, { - "__docId__": 3580, + "__docId__": 3598, "kind": "member", "name": "KEY_LEFT_WINDOW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71315,7 +71843,7 @@ } }, { - "__docId__": 3581, + "__docId__": 3599, "kind": "member", "name": "KEY_RIGHT_WINDOW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71352,7 +71880,7 @@ } }, { - "__docId__": 3582, + "__docId__": 3600, "kind": "member", "name": "KEY_SELECT_KEY", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71389,7 +71917,7 @@ } }, { - "__docId__": 3583, + "__docId__": 3601, "kind": "member", "name": "KEY_NUMPAD_0", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71426,7 +71954,7 @@ } }, { - "__docId__": 3584, + "__docId__": 3602, "kind": "member", "name": "KEY_NUMPAD_1", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71463,7 +71991,7 @@ } }, { - "__docId__": 3585, + "__docId__": 3603, "kind": "member", "name": "KEY_NUMPAD_2", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71500,7 +72028,7 @@ } }, { - "__docId__": 3586, + "__docId__": 3604, "kind": "member", "name": "KEY_NUMPAD_3", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71537,7 +72065,7 @@ } }, { - "__docId__": 3587, + "__docId__": 3605, "kind": "member", "name": "KEY_NUMPAD_4", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71574,7 +72102,7 @@ } }, { - "__docId__": 3588, + "__docId__": 3606, "kind": "member", "name": "KEY_NUMPAD_5", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71611,7 +72139,7 @@ } }, { - "__docId__": 3589, + "__docId__": 3607, "kind": "member", "name": "KEY_NUMPAD_6", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71648,7 +72176,7 @@ } }, { - "__docId__": 3590, + "__docId__": 3608, "kind": "member", "name": "KEY_NUMPAD_7", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71685,7 +72213,7 @@ } }, { - "__docId__": 3591, + "__docId__": 3609, "kind": "member", "name": "KEY_NUMPAD_8", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71722,7 +72250,7 @@ } }, { - "__docId__": 3592, + "__docId__": 3610, "kind": "member", "name": "KEY_NUMPAD_9", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71759,7 +72287,7 @@ } }, { - "__docId__": 3593, + "__docId__": 3611, "kind": "member", "name": "KEY_MULTIPLY", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71796,7 +72324,7 @@ } }, { - "__docId__": 3594, + "__docId__": 3612, "kind": "member", "name": "KEY_ADD", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71833,7 +72361,7 @@ } }, { - "__docId__": 3595, + "__docId__": 3613, "kind": "member", "name": "KEY_SUBTRACT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71870,7 +72398,7 @@ } }, { - "__docId__": 3596, + "__docId__": 3614, "kind": "member", "name": "KEY_DECIMAL_POINT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71907,7 +72435,7 @@ } }, { - "__docId__": 3597, + "__docId__": 3615, "kind": "member", "name": "KEY_DIVIDE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71944,7 +72472,7 @@ } }, { - "__docId__": 3598, + "__docId__": 3616, "kind": "member", "name": "KEY_F1", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -71981,7 +72509,7 @@ } }, { - "__docId__": 3599, + "__docId__": 3617, "kind": "member", "name": "KEY_F2", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72018,7 +72546,7 @@ } }, { - "__docId__": 3600, + "__docId__": 3618, "kind": "member", "name": "KEY_F3", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72055,7 +72583,7 @@ } }, { - "__docId__": 3601, + "__docId__": 3619, "kind": "member", "name": "KEY_F4", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72092,7 +72620,7 @@ } }, { - "__docId__": 3602, + "__docId__": 3620, "kind": "member", "name": "KEY_F5", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72129,7 +72657,7 @@ } }, { - "__docId__": 3603, + "__docId__": 3621, "kind": "member", "name": "KEY_F6", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72166,7 +72694,7 @@ } }, { - "__docId__": 3604, + "__docId__": 3622, "kind": "member", "name": "KEY_F7", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72203,7 +72731,7 @@ } }, { - "__docId__": 3605, + "__docId__": 3623, "kind": "member", "name": "KEY_F8", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72240,7 +72768,7 @@ } }, { - "__docId__": 3606, + "__docId__": 3624, "kind": "member", "name": "KEY_F9", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72277,7 +72805,7 @@ } }, { - "__docId__": 3607, + "__docId__": 3625, "kind": "member", "name": "KEY_F10", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72314,7 +72842,7 @@ } }, { - "__docId__": 3608, + "__docId__": 3626, "kind": "member", "name": "KEY_F11", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72351,7 +72879,7 @@ } }, { - "__docId__": 3609, + "__docId__": 3627, "kind": "member", "name": "KEY_F12", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72388,7 +72916,7 @@ } }, { - "__docId__": 3610, + "__docId__": 3628, "kind": "member", "name": "KEY_NUM_LOCK", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72425,7 +72953,7 @@ } }, { - "__docId__": 3611, + "__docId__": 3629, "kind": "member", "name": "KEY_SCROLL_LOCK", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72462,7 +72990,7 @@ } }, { - "__docId__": 3612, + "__docId__": 3630, "kind": "member", "name": "KEY_SEMI_COLON", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72499,7 +73027,7 @@ } }, { - "__docId__": 3613, + "__docId__": 3631, "kind": "member", "name": "KEY_EQUAL_SIGN", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72536,7 +73064,7 @@ } }, { - "__docId__": 3614, + "__docId__": 3632, "kind": "member", "name": "KEY_COMMA", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72573,7 +73101,7 @@ } }, { - "__docId__": 3615, + "__docId__": 3633, "kind": "member", "name": "KEY_DASH", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72610,7 +73138,7 @@ } }, { - "__docId__": 3616, + "__docId__": 3634, "kind": "member", "name": "KEY_PERIOD", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72647,7 +73175,7 @@ } }, { - "__docId__": 3617, + "__docId__": 3635, "kind": "member", "name": "KEY_FORWARD_SLASH", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72684,7 +73212,7 @@ } }, { - "__docId__": 3618, + "__docId__": 3636, "kind": "member", "name": "KEY_GRAVE_ACCENT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72721,7 +73249,7 @@ } }, { - "__docId__": 3619, + "__docId__": 3637, "kind": "member", "name": "KEY_OPEN_BRACKET", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72758,7 +73286,7 @@ } }, { - "__docId__": 3620, + "__docId__": 3638, "kind": "member", "name": "KEY_BACK_SLASH", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72795,7 +73323,7 @@ } }, { - "__docId__": 3621, + "__docId__": 3639, "kind": "member", "name": "KEY_CLOSE_BRACKET", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72832,7 +73360,7 @@ } }, { - "__docId__": 3622, + "__docId__": 3640, "kind": "member", "name": "KEY_SINGLE_QUOTE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72869,7 +73397,7 @@ } }, { - "__docId__": 3623, + "__docId__": 3641, "kind": "member", "name": "KEY_SPACE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72906,7 +73434,7 @@ } }, { - "__docId__": 3624, + "__docId__": 3642, "kind": "member", "name": "element", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72931,7 +73459,7 @@ } }, { - "__docId__": 3625, + "__docId__": 3643, "kind": "member", "name": "altDown", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72950,7 +73478,7 @@ } }, { - "__docId__": 3626, + "__docId__": 3644, "kind": "member", "name": "ctrlDown", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72969,7 +73497,7 @@ } }, { - "__docId__": 3627, + "__docId__": 3645, "kind": "member", "name": "mouseDownLeft", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -72988,7 +73516,7 @@ } }, { - "__docId__": 3628, + "__docId__": 3646, "kind": "member", "name": "mouseDownMiddle", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73007,7 +73535,7 @@ } }, { - "__docId__": 3629, + "__docId__": 3647, "kind": "member", "name": "mouseDownRight", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73026,7 +73554,7 @@ } }, { - "__docId__": 3630, + "__docId__": 3648, "kind": "member", "name": "keyDown", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73045,7 +73573,7 @@ } }, { - "__docId__": 3631, + "__docId__": 3649, "kind": "member", "name": "enabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73064,7 +73592,7 @@ } }, { - "__docId__": 3632, + "__docId__": 3650, "kind": "member", "name": "keyboardEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73083,7 +73611,7 @@ } }, { - "__docId__": 3633, + "__docId__": 3651, "kind": "member", "name": "mouseover", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73102,7 +73630,7 @@ } }, { - "__docId__": 3634, + "__docId__": 3652, "kind": "member", "name": "mouseCanvasPos", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73121,7 +73649,7 @@ } }, { - "__docId__": 3635, + "__docId__": 3653, "kind": "member", "name": "_keyboardEventsElement", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73139,7 +73667,7 @@ } }, { - "__docId__": 3636, + "__docId__": 3654, "kind": "method", "name": "_bindEvents", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73156,7 +73684,7 @@ "return": null }, { - "__docId__": 3639, + "__docId__": 3657, "kind": "member", "name": "shiftDown", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73173,7 +73701,7 @@ } }, { - "__docId__": 3661, + "__docId__": 3679, "kind": "member", "name": "_eventsBound", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73191,7 +73719,7 @@ } }, { - "__docId__": 3662, + "__docId__": 3680, "kind": "method", "name": "_unbindEvents", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73208,7 +73736,7 @@ "return": null }, { - "__docId__": 3664, + "__docId__": 3682, "kind": "method", "name": "_getMouseCanvasPos", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73232,7 +73760,7 @@ "return": null }, { - "__docId__": 3665, + "__docId__": 3683, "kind": "method", "name": "setEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73258,7 +73786,7 @@ "return": null }, { - "__docId__": 3666, + "__docId__": 3684, "kind": "method", "name": "getEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73286,7 +73814,7 @@ "params": [] }, { - "__docId__": 3667, + "__docId__": 3685, "kind": "method", "name": "setKeyboardEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73312,7 +73840,7 @@ "return": null }, { - "__docId__": 3669, + "__docId__": 3687, "kind": "method", "name": "getKeyboardEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73340,7 +73868,7 @@ "params": [] }, { - "__docId__": 3670, + "__docId__": 3688, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -73356,7 +73884,7 @@ "return": null }, { - "__docId__": 3671, + "__docId__": 3689, "kind": "file", "name": "src/viewer/scene/libs/k3d.js", "content": "/**\n * @private\n */\nvar K3D = {};\n\nK3D.load = function(path, resp)\n{\n var request = new XMLHttpRequest();\n request.open(\"GET\", path, true);\n request.responseType = \"arraybuffer\";\n request.onload = function(e){resp(e.target.response);};\n request.send();\n}\n\nK3D.save = function(buff, path)\n{\n var dataURI = \"data:application/octet-stream;base64,\" + btoa(K3D.parse._buffToStr(buff));\n window.location.href = dataURI;\n}\n\nK3D.clone = function(o)\n{\n return JSON.parse(JSON.stringify(o));\n}\n\n\n\nK3D.bin = {};\n\nK3D.bin.f = new Float32Array(1);\nK3D.bin.fb = new Uint8Array(K3D.bin.f.buffer);\n\nK3D.bin.rf\t\t= function(buff, off) { var f = K3D.bin.f, fb = K3D.bin.fb; for(var i=0; i<4; i++) fb[i] = buff[off+i]; return f[0]; }\nK3D.bin.rsl\t\t= function(buff, off) { return buff[off] | buff[off+1]<<8; }\nK3D.bin.ril\t\t= function(buff, off) { return buff[off] | buff[off+1]<<8 | buff[off+2]<<16 | buff[off+3]<<24; }\nK3D.bin.rASCII0 = function(buff, off) { var s = \"\"; while(buff[off]!=0) s += String.fromCharCode(buff[off++]); return s; }\n\n\nK3D.bin.wf\t\t= function(buff, off, v) { var f=new Float32Array(buff.buffer, off, 1); f[0]=v; }\nK3D.bin.wsl\t\t= function(buff, off, v) { buff[off]=v; buff[off+1]=v>>8; }\nK3D.bin.wil\t\t= function(buff, off, v) { buff[off]=v; buff[off+1]=v>>8; buff[off+2]=v>>16; buff[off+3]>>24; }\nK3D.parse = {};\n\nK3D.parse._buffToStr = function(buff)\n{\n var a = new Uint8Array(buff);\n var s = \"\";\n for(var i=0; imaxx) maxx = vx;\n if(vymaxy) maxy = vy;\n if(vzmaxz) maxz = vz;\n }\n return {min:{x:minx, y:miny, z:minz}, max:{x:maxx, y:maxy, z:maxz}};\n};\n\nexport {K3D};", @@ -73367,7 +73895,7 @@ "lineNumber": 1 }, { - "__docId__": 3672, + "__docId__": 3690, "kind": "function", "name": "load", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73400,7 +73928,7 @@ "ignore": true }, { - "__docId__": 3673, + "__docId__": 3691, "kind": "function", "name": "save", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73433,7 +73961,7 @@ "ignore": true }, { - "__docId__": 3674, + "__docId__": 3692, "kind": "function", "name": "clone", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73464,7 +73992,7 @@ "ignore": true }, { - "__docId__": 3675, + "__docId__": 3693, "kind": "function", "name": "rf", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73501,7 +74029,7 @@ "ignore": true }, { - "__docId__": 3676, + "__docId__": 3694, "kind": "function", "name": "rsl", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73538,7 +74066,7 @@ "ignore": true }, { - "__docId__": 3677, + "__docId__": 3695, "kind": "function", "name": "ril", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73575,7 +74103,7 @@ "ignore": true }, { - "__docId__": 3678, + "__docId__": 3696, "kind": "function", "name": "rASCII0", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73612,7 +74140,7 @@ "ignore": true }, { - "__docId__": 3679, + "__docId__": 3697, "kind": "function", "name": "wf", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73651,7 +74179,7 @@ "ignore": true }, { - "__docId__": 3680, + "__docId__": 3698, "kind": "function", "name": "wsl", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73690,7 +74218,7 @@ "ignore": true }, { - "__docId__": 3681, + "__docId__": 3699, "kind": "function", "name": "wil", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73729,7 +74257,7 @@ "ignore": true }, { - "__docId__": 3682, + "__docId__": 3700, "kind": "function", "name": "_buffToStr", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73760,7 +74288,7 @@ } }, { - "__docId__": 3683, + "__docId__": 3701, "kind": "function", "name": "_strToBuff", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73791,7 +74319,7 @@ } }, { - "__docId__": 3684, + "__docId__": 3702, "kind": "function", "name": "_readLine", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73828,7 +74356,7 @@ } }, { - "__docId__": 3685, + "__docId__": 3703, "kind": "function", "name": "fromJSON", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73859,7 +74387,7 @@ "ignore": true }, { - "__docId__": 3686, + "__docId__": 3704, "kind": "function", "name": "toJSON", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73890,7 +74418,7 @@ "ignore": true }, { - "__docId__": 3687, + "__docId__": 3705, "kind": "function", "name": "fromOBJ", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73921,7 +74449,7 @@ "ignore": true }, { - "__docId__": 3688, + "__docId__": 3706, "kind": "function", "name": "fromMD2", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73952,7 +74480,7 @@ "ignore": true }, { - "__docId__": 3689, + "__docId__": 3707, "kind": "function", "name": "fromCollada", "memberof": "src/viewer/scene/libs/k3d.js", @@ -73983,7 +74511,7 @@ "ignore": true }, { - "__docId__": 3690, + "__docId__": 3708, "kind": "function", "name": "_asset", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74014,7 +74542,7 @@ } }, { - "__docId__": 3691, + "__docId__": 3709, "kind": "function", "name": "_libGeometries", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74045,7 +74573,7 @@ } }, { - "__docId__": 3692, + "__docId__": 3710, "kind": "function", "name": "_getMesh", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74076,7 +74604,7 @@ } }, { - "__docId__": 3693, + "__docId__": 3711, "kind": "function", "name": "_libImages", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74107,7 +74635,7 @@ } }, { - "__docId__": 3694, + "__docId__": 3712, "kind": "function", "name": "_libMaterials", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74138,7 +74666,7 @@ } }, { - "__docId__": 3695, + "__docId__": 3713, "kind": "function", "name": "_libEffects", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74169,7 +74697,7 @@ } }, { - "__docId__": 3696, + "__docId__": 3714, "kind": "function", "name": "from3DS", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74200,7 +74728,7 @@ "ignore": true }, { - "__docId__": 3697, + "__docId__": 3715, "kind": "function", "name": "_edit3ds", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74243,7 +74771,7 @@ } }, { - "__docId__": 3698, + "__docId__": 3716, "kind": "function", "name": "_keyf3ds", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74286,7 +74814,7 @@ } }, { - "__docId__": 3699, + "__docId__": 3717, "kind": "function", "name": "_keyf_objdes", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74329,7 +74857,7 @@ } }, { - "__docId__": 3700, + "__docId__": 3718, "kind": "function", "name": "_keyf_objhierarch", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74372,7 +74900,7 @@ } }, { - "__docId__": 3701, + "__docId__": 3719, "kind": "function", "name": "_edit_object", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74415,7 +74943,7 @@ } }, { - "__docId__": 3702, + "__docId__": 3720, "kind": "function", "name": "_obj_trimesh", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74458,7 +74986,7 @@ } }, { - "__docId__": 3703, + "__docId__": 3721, "kind": "function", "name": "_tri_vertexl", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74501,7 +75029,7 @@ } }, { - "__docId__": 3704, + "__docId__": 3722, "kind": "function", "name": "_tri_facel1", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74544,7 +75072,7 @@ } }, { - "__docId__": 3705, + "__docId__": 3723, "kind": "function", "name": "_tri_mappingcoors", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74587,7 +75115,7 @@ } }, { - "__docId__": 3706, + "__docId__": 3724, "kind": "function", "name": "_tri_local", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74630,7 +75158,7 @@ } }, { - "__docId__": 3707, + "__docId__": 3725, "kind": "function", "name": "fromBIV", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74661,7 +75189,7 @@ "ignore": true }, { - "__docId__": 3708, + "__docId__": 3726, "kind": "function", "name": "toBIV", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74692,7 +75220,7 @@ "ignore": true }, { - "__docId__": 3709, + "__docId__": 3727, "kind": "function", "name": "_readFloats", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74735,7 +75263,7 @@ } }, { - "__docId__": 3710, + "__docId__": 3728, "kind": "function", "name": "_writeFloats", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74774,7 +75302,7 @@ "return": null }, { - "__docId__": 3711, + "__docId__": 3729, "kind": "function", "name": "_readInts", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74823,7 +75351,7 @@ } }, { - "__docId__": 3712, + "__docId__": 3730, "kind": "function", "name": "_writeInts", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74868,7 +75396,7 @@ "return": null }, { - "__docId__": 3713, + "__docId__": 3731, "kind": "function", "name": "Plane", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74917,7 +75445,7 @@ "ignore": true }, { - "__docId__": 3714, + "__docId__": 3732, "kind": "function", "name": "Cube", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74941,7 +75469,7 @@ "ignore": true }, { - "__docId__": 3715, + "__docId__": 3733, "kind": "function", "name": "Sphere", "memberof": "src/viewer/scene/libs/k3d.js", @@ -74978,7 +75506,7 @@ "ignore": true }, { - "__docId__": 3716, + "__docId__": 3734, "kind": "function", "name": "scale", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75021,7 +75549,7 @@ "ignore": true }, { - "__docId__": 3717, + "__docId__": 3735, "kind": "function", "name": "translate", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75064,7 +75592,7 @@ "ignore": true }, { - "__docId__": 3718, + "__docId__": 3736, "kind": "function", "name": "rotateDeg", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75107,7 +75635,7 @@ "ignore": true }, { - "__docId__": 3719, + "__docId__": 3737, "kind": "function", "name": "rotate", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75150,7 +75678,7 @@ "ignore": true }, { - "__docId__": 3720, + "__docId__": 3738, "kind": "function", "name": "interpolate", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75195,7 +75723,7 @@ "ignore": true }, { - "__docId__": 3721, + "__docId__": 3739, "kind": "function", "name": "transform", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75228,7 +75756,7 @@ "ignore": true }, { - "__docId__": 3722, + "__docId__": 3740, "kind": "function", "name": "unwrap", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75271,7 +75799,7 @@ "ignore": true }, { - "__docId__": 3723, + "__docId__": 3741, "kind": "function", "name": "remap", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75320,7 +75848,7 @@ "ignore": true }, { - "__docId__": 3724, + "__docId__": 3742, "kind": "function", "name": "getAABB", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75351,7 +75879,7 @@ "ignore": true }, { - "__docId__": 3725, + "__docId__": 3743, "kind": "variable", "name": "K3D", "memberof": "src/viewer/scene/libs/k3d.js", @@ -75371,7 +75899,7 @@ } }, { - "__docId__": 3726, + "__docId__": 3744, "kind": "file", "name": "src/viewer/scene/lights/AmbientLight.js", "content": "import {math} from '../math/math.js';\nimport {Light} from './Light.js';\n\n/**\n * @desc An ambient light source of fixed color and intensity that illuminates all {@link Mesh}es equally.\n *\n * * {@link AmbientLight#color} multiplies by {@link PhongMaterial#ambient} at each position of each {@link ReadableGeometry} surface.\n * * {@link AmbientLight#color} multiplies by {@link LambertMaterial#color} uniformly across each triangle of each {@link ReadableGeometry} (ie. flat shaded).\n * * {@link AmbientLight}s, {@link DirLight}s and {@link PointLight}s are registered by their {@link Component#id} on {@link Scene#lights}.\n *\n * ## Usage\n *\n * In the example below we'll destroy the {@link Scene}'s default light sources then create an AmbientLight and a couple of {@link @DirLight}s:\n *\n * [[Run this example](/examples/index.html#lights_AmbientLight)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildTorusGeometry,\n * ReadableGeometry, PhongMaterial, Texture, AmbientLight} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * // Replace the Scene's default lights with a single custom AmbientLight\n *\n * viewer.scene.clearLights();\n *\n * new AmbientLight(viewer.scene, {\n * color: [0.0, 0.3, 0.7],\n * intensity: 1.0\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"keyLight\",\n * dir: [0.8, -0.6, -0.8],\n * color: [1.0, 0.3, 0.3],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"fillLight\",\n * dir: [-0.8, -0.4, -0.4],\n * color: [0.3, 1.0, 0.3],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"rimLight\",\n * dir: [0.2, -0.8, 0.8],\n * color: [0.6, 0.6, 0.6],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * // Create a mesh with torus shape and PhongMaterial\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * ambient: [1.0, 1.0, 1.0],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n *\n * // Adjust the color of our AmbientLight\n *\n * var ambientLight = viewer.scene.lights[\"myAmbientLight\"];\n * ambientLight.color = [1.0, 0.8, 0.8];\n *````\n */\nclass AmbientLight extends Light {\n\n /**\n @private\n */\n get type() {\n return \"AmbientLight\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this AmbientLight as well.\n * @param {*} [cfg] AmbientLight configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.color=[0.7, 0.7, 0.8]] The color of this AmbientLight.\n * @param {Number} [cfg.intensity=[1.0]] The intensity of this AmbientLight, as a factor in range ````[0..1]````.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this._state = {\n type: \"ambient\",\n color: math.vec3([0.7, 0.7, 0.7]),\n intensity: 1.0\n };\n this.color = cfg.color;\n this.intensity = cfg.intensity;\n this.scene._lightCreated(this);\n }\n\n /**\n * Sets the RGB color of this AmbientLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @param {Number[]} color The AmbientLight's RGB color.\n */\n set color(color) {\n this._state.color.set(color || [0.7, 0.7, 0.8]);\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of this AmbientLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @returns {Number[]} The AmbientLight's RGB color.\n */\n get color() {\n return this._state.color;\n }\n\n /**\n * Sets the intensity of this AmbientLight.\n *\n * Default value is ````1.0```` for maximum intensity.\n *\n * @param {Number} intensity The AmbientLight's intensity.\n */\n set intensity(intensity) {\n this._state.intensity = intensity !== undefined ? intensity : 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the intensity of this AmbientLight.\n *\n * Default value is ````1.0```` for maximum intensity.\n *\n * @returns {Number} The AmbientLight's intensity.\n */\n get intensity() {\n return this._state.intensity;\n }\n\n /**\n * Destroys this AmbientLight.\n */\n destroy() {\n\n super.destroy();\n\n this.scene._lightDestroyed(this);\n }\n}\n\nexport {AmbientLight};\n", @@ -75382,7 +75910,7 @@ "lineNumber": 1 }, { - "__docId__": 3727, + "__docId__": 3745, "kind": "class", "name": "AmbientLight", "memberof": "src/viewer/scene/lights/AmbientLight.js", @@ -75400,7 +75928,7 @@ ] }, { - "__docId__": 3728, + "__docId__": 3746, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -75419,7 +75947,7 @@ } }, { - "__docId__": 3729, + "__docId__": 3747, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -75494,7 +76022,7 @@ ] }, { - "__docId__": 3730, + "__docId__": 3748, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -75512,7 +76040,7 @@ } }, { - "__docId__": 3733, + "__docId__": 3751, "kind": "set", "name": "color", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -75537,7 +76065,7 @@ ] }, { - "__docId__": 3734, + "__docId__": 3752, "kind": "get", "name": "color", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -75569,7 +76097,7 @@ } }, { - "__docId__": 3735, + "__docId__": 3753, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -75594,7 +76122,7 @@ ] }, { - "__docId__": 3736, + "__docId__": 3754, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -75626,7 +76154,7 @@ } }, { - "__docId__": 3737, + "__docId__": 3755, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -75641,7 +76169,7 @@ "return": null }, { - "__docId__": 3738, + "__docId__": 3756, "kind": "file", "name": "src/viewer/scene/lights/CubeTexture.js", "content": "import {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {Texture2D} from '../webgl/Texture2D.js';\nimport {stats} from '../stats.js';\nimport {ClampToEdgeWrapping, LinearEncoding, LinearFilter, LinearMipmapLinearFilter, sRGBEncoding} from \"../constants/constants.js\";\n\nfunction ensureImageSizePowerOfTwo(image) {\n if (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height)) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = nextHighestPowerOfTwo(image.width);\n canvas.height = nextHighestPowerOfTwo(image.height);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(image,\n 0, 0, image.width, image.height,\n 0, 0, canvas.width, canvas.height);\n image = canvas;\n }\n return image;\n}\n\nfunction isPowerOfTwo(x) {\n return (x & (x - 1)) === 0;\n}\n\nfunction nextHighestPowerOfTwo(x) {\n --x;\n for (let i = 1; i < 32; i <<= 1) {\n x = x | x >> i;\n }\n return x + 1;\n}\n\n/**\n * @desc A cube texture map.\n */\nclass CubeTexture extends Component {\n\n /**\n @private\n */\n get type() {\n return \"CubeTexture\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this CubeTexture, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String[]} [cfg.src=null] Paths to six image files to load into this CubeTexture.\n * @param {Boolean} [cfg.flipY=false] Flips this CubeTexture's source data along its vertical axis when true.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n const gl = this.scene.canvas.gl;\n\n this._state = new RenderState({\n texture: new Texture2D({gl, target: gl.TEXTURE_CUBE_MAP}),\n flipY: this._checkFlipY(cfg.minFilter),\n encoding: this._checkEncoding(cfg.encoding),\n minFilter: LinearMipmapLinearFilter,\n magFilter: LinearFilter,\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n mipmaps: true\n });\n\n this._src = cfg.src;\n this._images = [];\n\n this._loadSrc(cfg.src);\n\n stats.memory.textures++;\n }\n\n _checkFlipY(value) {\n return !!value;\n }\n\n _checkEncoding(value) {\n value = value || LinearEncoding;\n if (value !== LinearEncoding && value !== sRGBEncoding) {\n this.error(\"Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding.\");\n value = LinearEncoding;\n }\n return value;\n }\n\n _webglContextRestored() {\n const gl = this.scene.canvas.gl;\n this._state.texture = null;\n // if (this._images.length > 0) {\n // this._state.texture = new xeokit.renderer.Texture2D(gl, gl.TEXTURE_CUBE_MAP);\n // this._state.texture.setImage(this._images, this._state);\n // this._state.texture.setProps(this._state);\n // } else\n if (this._src) {\n this._loadSrc(this._src);\n }\n }\n\n _loadSrc(src) {\n const self = this;\n const gl = this.scene.canvas.gl;\n this._images = [];\n let loadFailed = false;\n let numLoaded = 0;\n for (let i = 0; i < src.length; i++) {\n const image = new Image();\n image.onload = (function () {\n let _image = image;\n const index = i;\n return function () {\n if (loadFailed) {\n return;\n }\n _image = ensureImageSizePowerOfTwo(_image);\n self._images[index] = _image;\n numLoaded++;\n if (numLoaded === 6) {\n let texture = self._state.texture;\n if (!texture) {\n texture = new Texture2D({gl, target: gl.TEXTURE_CUBE_MAP});\n self._state.texture = texture;\n }\n texture.setImage(self._images, self._state);\n self.fire(\"loaded\", self._src, false);\n self.glRedraw();\n }\n };\n })();\n image.onerror = function () {\n loadFailed = true;\n };\n image.src = src[i];\n }\n }\n\n /**\n * Destroys this CubeTexture\n *\n */\n destroy() {\n super.destroy();\n if (this._state.texture) {\n this._state.texture.destroy();\n }\n stats.memory.textures--;\n this._state.destroy();\n }\n}\n\nexport {CubeTexture};", @@ -75652,7 +76180,7 @@ "lineNumber": 1 }, { - "__docId__": 3739, + "__docId__": 3757, "kind": "function", "name": "ensureImageSizePowerOfTwo", "memberof": "src/viewer/scene/lights/CubeTexture.js", @@ -75683,7 +76211,7 @@ "ignore": true }, { - "__docId__": 3740, + "__docId__": 3758, "kind": "function", "name": "isPowerOfTwo", "memberof": "src/viewer/scene/lights/CubeTexture.js", @@ -75714,7 +76242,7 @@ "ignore": true }, { - "__docId__": 3741, + "__docId__": 3759, "kind": "function", "name": "nextHighestPowerOfTwo", "memberof": "src/viewer/scene/lights/CubeTexture.js", @@ -75745,7 +76273,7 @@ "ignore": true }, { - "__docId__": 3742, + "__docId__": 3760, "kind": "class", "name": "CubeTexture", "memberof": "src/viewer/scene/lights/CubeTexture.js", @@ -75763,7 +76291,7 @@ ] }, { - "__docId__": 3743, + "__docId__": 3761, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -75782,7 +76310,7 @@ } }, { - "__docId__": 3744, + "__docId__": 3762, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -75869,7 +76397,7 @@ ] }, { - "__docId__": 3745, + "__docId__": 3763, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -75887,7 +76415,7 @@ } }, { - "__docId__": 3746, + "__docId__": 3764, "kind": "member", "name": "_src", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -75905,7 +76433,7 @@ } }, { - "__docId__": 3747, + "__docId__": 3765, "kind": "member", "name": "_images", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -75923,7 +76451,7 @@ } }, { - "__docId__": 3748, + "__docId__": 3766, "kind": "method", "name": "_checkFlipY", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -75951,7 +76479,7 @@ } }, { - "__docId__": 3749, + "__docId__": 3767, "kind": "method", "name": "_checkEncoding", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -75979,7 +76507,7 @@ } }, { - "__docId__": 3750, + "__docId__": 3768, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -75996,7 +76524,7 @@ "return": null }, { - "__docId__": 3751, + "__docId__": 3769, "kind": "method", "name": "_loadSrc", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -76020,7 +76548,7 @@ "return": null }, { - "__docId__": 3753, + "__docId__": 3771, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -76035,7 +76563,7 @@ "return": null }, { - "__docId__": 3754, + "__docId__": 3772, "kind": "file", "name": "src/viewer/scene/lights/DirLight.js", "content": "import {Light} from './Light.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {RenderBuffer} from '../webgl/RenderBuffer.js';\nimport {math} from '../math/math.js';\n\n/**\n * @desc A directional light source that illuminates all {@link Mesh}es equally from a given direction.\n *\n * * Has an emission direction vector in {@link DirLight#dir}, but no position.\n * * Defined in either *World* or *View* coordinate space. When in World-space, {@link DirLight#dir} is relative to the\n * World coordinate system, and will appear to move as the {@link Camera} moves. When in View-space, {@link DirLight#dir} is\n * relative to the View coordinate system, and will behave as if fixed to the viewer's head.\n * * {@link AmbientLight}s, {@link DirLight}s and {@link PointLight}s are registered by their {@link Component#id} on {@link Scene#lights}.\n *\n * ## Usage\n *\n * In the example below we'll replace the {@link Scene}'s default light sources with three View-space DirLights.\n *\n * [[Run this example](/examples/index.html#lights_DirLight_view)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry,\n * buildPlaneGeometry, ReadableGeometry,\n * PhongMaterial, Texture, DirLight} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * // Replace the Scene's default lights with three custom view-space DirLights\n *\n * viewer.scene.clearLights();\n *\n * new DirLight(viewer.scene, {\n * id: \"keyLight\",\n * dir: [0.8, -0.6, -0.8],\n * color: [1.0, 0.3, 0.3],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"fillLight\",\n * dir: [-0.8, -0.4, -0.4],\n * color: [0.3, 1.0, 0.3],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"rimLight\",\n * dir: [0.2, -0.8, 0.8],\n * color: [0.6, 0.6, 0.6],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n *\n * // Create a sphere and ground plane\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.7, 0.7, 0.7],\n * specular: [1.0, 1.0, 1.0],\n * emissive: [0, 0, 0],\n * alpha: 1.0,\n * ambient: [1, 1, 0],\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n *\n * new Mesh(viewer.scene, {\n * geometry: buildPlaneGeometry(ReadableGeometry, viewer.scene, {\n * xSize: 30,\n * zSize: 30\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * }),\n * position: [0, -2.1, 0]\n * });\n * ````\n */\nclass DirLight extends Light {\n\n /**\n @private\n */\n get type() {\n return \"DirLight\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this DirLight as well.\n * @param {*} [cfg] The DirLight configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.dir=[1.0, 1.0, 1.0]] A unit vector indicating the direction that the light is shining, given in either World or View space, depending on the value of the ````space```` parameter.\n * @param {Number[]} [cfg.color=[0.7, 0.7, 0.8 ]] The color of this DirLight.\n * @param {Number} [cfg.intensity=1.0] The intensity of this DirLight, as a factor in range ````[0..1]````.\n * @param {String} [cfg.space=\"view\"] The coordinate system the DirLight is defined in - ````\"view\"```` or ````\"space\"````.\n * @param {Boolean} [cfg.castsShadow=false] Flag which indicates if this DirLight casts a castsShadow.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._shadowRenderBuf = null;\n this._shadowViewMatrix = null;\n this._shadowProjMatrix = null;\n this._shadowViewMatrixDirty = true;\n this._shadowProjMatrixDirty = true;\n\n const camera = this.scene.camera;\n const canvas = this.scene.canvas;\n\n this._onCameraViewMatrix = camera.on(\"viewMatrix\", () => {\n this._shadowViewMatrixDirty = true;\n });\n\n this._onCameraProjMatrix = camera.on(\"projMatrix\", () => {\n this._shadowProjMatrixDirty = true;\n });\n\n this._onCanvasBoundary = canvas.on(\"boundary\", () => {\n this._shadowProjMatrixDirty = true;\n });\n\n this._state = new RenderState({\n\n type: \"dir\",\n dir: math.vec3([1.0, 1.0, 1.0]),\n color: math.vec3([0.7, 0.7, 0.8]),\n intensity: 1.0,\n space: cfg.space || \"view\",\n castsShadow: false,\n\n getShadowViewMatrix: () => {\n if (this._shadowViewMatrixDirty) {\n if (!this._shadowViewMatrix) {\n this._shadowViewMatrix = math.identityMat4();\n }\n const camera = this.scene.camera;\n const dir = this._state.dir;\n const look = camera.look;\n const eye = [look[0] - dir[0], look[1] - dir[1], look[2] - dir[2]];\n const up = [0, 1, 0];\n math.lookAtMat4v(eye, look, up, this._shadowViewMatrix);\n this._shadowViewMatrixDirty = false;\n }\n return this._shadowViewMatrix;\n },\n\n getShadowProjMatrix: () => {\n if (this._shadowProjMatrixDirty) { // TODO: Set when canvas resizes\n if (!this._shadowProjMatrix) {\n this._shadowProjMatrix = math.identityMat4();\n }\n math.orthoMat4c(-40, 40, -40, 40, -40.0, 80, this._shadowProjMatrix); // left, right, bottom, top, near, far, dest\n this._shadowProjMatrixDirty = false;\n }\n return this._shadowProjMatrix;\n },\n\n getShadowRenderBuf: () => {\n if (!this._shadowRenderBuf) {\n this._shadowRenderBuf = new RenderBuffer(this.scene.canvas.canvas, this.scene.canvas.gl, {size: [1024, 1024]}); // Super old mobile devices have a limit of 1024x1024 textures\n }\n return this._shadowRenderBuf;\n }\n });\n\n this.dir = cfg.dir;\n this.color = cfg.color;\n this.intensity = cfg.intensity;\n this.castsShadow = cfg.castsShadow;\n\n this.scene._lightCreated(this);\n }\n\n /**\n * Sets the direction in which the DirLight is shining.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @param {Number[]} value The direction vector.\n */\n set dir(value) {\n this._state.dir.set(value || [1.0, 1.0, 1.0]);\n this._shadowViewMatrixDirty = true;\n this.glRedraw();\n }\n\n /**\n * Gets the direction in which the DirLight is shining.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @returns {Number[]} The direction vector.\n */\n get dir() {\n return this._state.dir;\n }\n\n /**\n * Sets the RGB color of this DirLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @param {Number[]} color The DirLight's RGB color.\n */\n set color(color) {\n this._state.color.set(color || [0.7, 0.7, 0.8]);\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of this DirLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @returns {Number[]} The DirLight's RGB color.\n */\n get color() {\n return this._state.color;\n }\n\n /**\n * Sets the intensity of this DirLight.\n *\n * Default intensity is ````1.0```` for maximum intensity.\n *\n * @param {Number} intensity The DirLight's intensity\n */\n set intensity(intensity) {\n intensity = intensity !== undefined ? intensity : 1.0;\n this._state.intensity = intensity;\n this.glRedraw();\n }\n\n /**\n * Gets the intensity of this DirLight.\n *\n * Default value is ````1.0```` for maximum intensity.\n *\n * @returns {Number} The DirLight's intensity.\n */\n get intensity() {\n return this._state.intensity;\n }\n\n /**\n * Sets if this DirLight casts a shadow.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} castsShadow Set ````true```` to cast shadows.\n */\n set castsShadow(castsShadow) {\n castsShadow = !!castsShadow;\n if (this._state.castsShadow === castsShadow) {\n return;\n }\n this._state.castsShadow = castsShadow;\n this._shadowViewMatrixDirty = true;\n this.glRedraw();\n }\n\n /**\n * Gets if this DirLight casts a shadow.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} ````true```` if this DirLight casts shadows.\n */\n get castsShadow() {\n return this._state.castsShadow;\n }\n\n /**\n * Destroys this DirLight.\n */\n destroy() {\n\n const camera = this.scene.camera;\n const canvas = this.scene.canvas;\n camera.off(this._onCameraViewMatrix);\n camera.off(this._onCameraProjMatrix);\n canvas.off(this._onCanvasBoundary);\n\n super.destroy();\n this._state.destroy();\n if (this._shadowRenderBuf) {\n this._shadowRenderBuf.destroy();\n }\n this.scene._lightDestroyed(this);\n this.glRedraw();\n }\n}\n\nexport {DirLight};\n", @@ -76046,7 +76574,7 @@ "lineNumber": 1 }, { - "__docId__": 3755, + "__docId__": 3773, "kind": "class", "name": "DirLight", "memberof": "src/viewer/scene/lights/DirLight.js", @@ -76064,7 +76592,7 @@ ] }, { - "__docId__": 3756, + "__docId__": 3774, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76083,7 +76611,7 @@ } }, { - "__docId__": 3757, + "__docId__": 3775, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76196,7 +76724,7 @@ ] }, { - "__docId__": 3758, + "__docId__": 3776, "kind": "member", "name": "_shadowRenderBuf", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76214,7 +76742,7 @@ } }, { - "__docId__": 3759, + "__docId__": 3777, "kind": "member", "name": "_shadowViewMatrix", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76232,7 +76760,7 @@ } }, { - "__docId__": 3760, + "__docId__": 3778, "kind": "member", "name": "_shadowProjMatrix", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76250,7 +76778,7 @@ } }, { - "__docId__": 3761, + "__docId__": 3779, "kind": "member", "name": "_shadowViewMatrixDirty", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76268,7 +76796,7 @@ } }, { - "__docId__": 3762, + "__docId__": 3780, "kind": "member", "name": "_shadowProjMatrixDirty", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76286,7 +76814,7 @@ } }, { - "__docId__": 3763, + "__docId__": 3781, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76304,7 +76832,7 @@ } }, { - "__docId__": 3765, + "__docId__": 3783, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76322,7 +76850,7 @@ } }, { - "__docId__": 3767, + "__docId__": 3785, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76340,7 +76868,7 @@ } }, { - "__docId__": 3769, + "__docId__": 3787, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76358,7 +76886,7 @@ } }, { - "__docId__": 3779, + "__docId__": 3797, "kind": "set", "name": "dir", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76383,7 +76911,7 @@ ] }, { - "__docId__": 3781, + "__docId__": 3799, "kind": "get", "name": "dir", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76415,7 +76943,7 @@ } }, { - "__docId__": 3782, + "__docId__": 3800, "kind": "set", "name": "color", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76440,7 +76968,7 @@ ] }, { - "__docId__": 3783, + "__docId__": 3801, "kind": "get", "name": "color", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76472,7 +77000,7 @@ } }, { - "__docId__": 3784, + "__docId__": 3802, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76497,7 +77025,7 @@ ] }, { - "__docId__": 3785, + "__docId__": 3803, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76529,7 +77057,7 @@ } }, { - "__docId__": 3786, + "__docId__": 3804, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76554,7 +77082,7 @@ ] }, { - "__docId__": 3788, + "__docId__": 3806, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76586,7 +77114,7 @@ } }, { - "__docId__": 3789, + "__docId__": 3807, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -76601,7 +77129,7 @@ "return": null }, { - "__docId__": 3790, + "__docId__": 3808, "kind": "file", "name": "src/viewer/scene/lights/Light.js", "content": "import {Component} from '../Component.js';\n\n/**\n * @desc A dynamic light source within a {@link Scene}.\n *\n * These are registered by {@link Light#id} in {@link Scene#lights}.\n */\nclass Light extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Light\";\n }\n\n /**\n * @private\n */\n get isLight() {\n return true;\n }\n\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n }\n}\n\nexport {Light};\n", @@ -76612,7 +77140,7 @@ "lineNumber": 1 }, { - "__docId__": 3791, + "__docId__": 3809, "kind": "class", "name": "Light", "memberof": "src/viewer/scene/lights/Light.js", @@ -76630,7 +77158,7 @@ ] }, { - "__docId__": 3792, + "__docId__": 3810, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/Light.js~Light", @@ -76649,7 +77177,7 @@ } }, { - "__docId__": 3793, + "__docId__": 3811, "kind": "get", "name": "isLight", "memberof": "src/viewer/scene/lights/Light.js~Light", @@ -76668,7 +77196,7 @@ } }, { - "__docId__": 3794, + "__docId__": 3812, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/Light.js~Light", @@ -76682,7 +77210,7 @@ "undocument": true }, { - "__docId__": 3795, + "__docId__": 3813, "kind": "file", "name": "src/viewer/scene/lights/LightMap.js", "content": "import {CubeTexture} from './CubeTexture.js';\n\n/**\n * @desc A **LightMap** specifies a cube texture light map.\n *\n * ## Usage\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry,\n * ReadableGeometry, MetallicMaterial, LightMap} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new LightMap(viewer.scene, {\n * src: [\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_PX.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_NX.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_PY.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_NY.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_PZ.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_NZ.png\"\n * ]\n * });\n *\n * // Create a sphere and ground plane\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 2.0\n * }),\n * new MetallicMaterial(viewer.scene, {\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0\n * })\n * });\n * ````\n */\nclass LightMap extends CubeTexture {\n\n /**\n @private\n */\n get type() {\n return \"LightMap\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this LightMap, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String:Object} [cfg.meta] Optional map of user-defined metadata to attach to this LightMap.\n * @param {String[]} [cfg.src=null] Paths to six image files to load into this LightMap.\n * @param {Boolean} [cfg.flipY=false] Flips this LightMap's source data along its vertical axis when true.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.scene._lightMapCreated(this);\n }\n\n destroy() {\n super.destroy();\n this.scene._lightMapDestroyed(this);\n }\n}\n\nexport {LightMap};\n", @@ -76693,7 +77221,7 @@ "lineNumber": 1 }, { - "__docId__": 3796, + "__docId__": 3814, "kind": "class", "name": "LightMap", "memberof": "src/viewer/scene/lights/LightMap.js", @@ -76711,7 +77239,7 @@ ] }, { - "__docId__": 3797, + "__docId__": 3815, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/LightMap.js~LightMap", @@ -76730,7 +77258,7 @@ } }, { - "__docId__": 3798, + "__docId__": 3816, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/LightMap.js~LightMap", @@ -76827,7 +77355,7 @@ ] }, { - "__docId__": 3799, + "__docId__": 3817, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/LightMap.js~LightMap", @@ -76843,7 +77371,7 @@ "return": null }, { - "__docId__": 3800, + "__docId__": 3818, "kind": "file", "name": "src/viewer/scene/lights/PointLight.js", "content": "import {Light} from './Light.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {RenderBuffer} from '../webgl/RenderBuffer.js';\nimport {math} from '../math/math.js';\n\n/**\n * A positional light source that originates from a single point and spreads outward in all directions, with optional attenuation over distance.\n *\n * * Has a position in {@link PointLight#pos}, but no direction.\n * * Defined in either *World* or *View* coordinate space. When in World-space, {@link PointLight#pos} is relative to\n * the World coordinate system, and will appear to move as the {@link Camera} moves. When in View-space,\n * {@link PointLight#pos} is relative to the View coordinate system, and will behave as if fixed to the viewer's head.\n * * Has {@link PointLight#constantAttenuation}, {@link PointLight#linearAttenuation} and {@link PointLight#quadraticAttenuation}\n * factors, which indicate how intensity attenuates over distance.\n * * {@link AmbientLight}s, {@link PointLight}s and {@link PointLight}s are registered by their {@link Component#id} on {@link Scene#lights}.\n *\n * ## Usage\n *\n * In the example below we'll replace the {@link Scene}'s default light sources with three World-space PointLights.\n *\n * [[Run this example](/examples/index.html#lights_PointLight_world)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry, buildPlaneGeometry,\n * ReadableGeometry, PhongMaterial, Texture, PointLight} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * // Replace the Scene's default lights with three custom world-space PointLights\n *\n * viewer.scene.clearLights();\n *\n * new PointLight(viewer.scene,{\n * id: \"keyLight\",\n * pos: [-80, 60, 80],\n * color: [1.0, 0.3, 0.3],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * new PointLight(viewer.scene,{\n * id: \"fillLight\",\n * pos: [80, 40, 40],\n * color: [0.3, 1.0, 0.3],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * new PointLight(viewer.scene,{\n * id: \"rimLight\",\n * pos: [-20, 80, -80],\n * color: [0.6, 0.6, 0.6],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * // Create a sphere and ground plane\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 1.3\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.7, 0.7, 0.7],\n * specular: [1.0, 1.0, 1.0],\n * emissive: [0, 0, 0],\n * alpha: 1.0,\n * ambient: [1, 1, 0],\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n *\n * new Mesh(viewer.scene, {\n * geometry: buildPlaneGeometry(ReadableGeometry, viewer.scene, {\n * xSize: 30,\n * zSize: 30\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * }),\n * position: [0, -2.1, 0]\n * });\n * ````\n */\nclass PointLight extends Light {\n\n /**\n @private\n */\n get type() {\n return \"PointLight\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this PointLight as well.\n * @param {*} [cfg] The PointLight configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.pos=[ 1.0, 1.0, 1.0 ]] Position, in either World or View space, depending on the value of the **space** parameter.\n * @param {Number[]} [cfg.color=[0.7, 0.7, 0.8 ]] Color of this PointLight.\n * @param {Number} [cfg.intensity=1.0] Intensity of this PointLight, as a factor in range ````[0..1]````.\n * @param {Number} [cfg.constantAttenuation=0] Constant attenuation factor.\n * @param {Number} [cfg.linearAttenuation=0] Linear attenuation factor.\n * @param {Number} [cfg.quadraticAttenuation=0]Quadratic attenuation factor.\n * @param {String} [cfg.space=\"view\"]The coordinate system this PointLight is defined in - \"view\" or \"world\".\n * @param {Boolean} [cfg.castsShadow=false] Flag which indicates if this PointLight casts a castsShadow.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n const self = this;\n\n this._shadowRenderBuf = null;\n this._shadowViewMatrix = null;\n this._shadowProjMatrix = null;\n this._shadowViewMatrixDirty = true;\n this._shadowProjMatrixDirty = true;\n\n const camera = this.scene.camera;\n const canvas = this.scene.canvas;\n\n this._onCameraViewMatrix = camera.on(\"viewMatrix\", () => {\n this._shadowViewMatrixDirty = true;\n });\n\n this._onCameraProjMatrix = camera.on(\"projMatrix\", () => {\n this._shadowProjMatrixDirty = true;\n });\n\n this._onCanvasBoundary = canvas.on(\"boundary\", () => {\n this._shadowProjMatrixDirty = true;\n });\n\n this._state = new RenderState({\n\n type: \"point\",\n pos: math.vec3([1.0, 1.0, 1.0]),\n color: math.vec3([0.7, 0.7, 0.8]),\n intensity: 1.0, attenuation: [0.0, 0.0, 0.0],\n space: cfg.space || \"view\",\n castsShadow: false,\n\n getShadowViewMatrix: () => {\n if (self._shadowViewMatrixDirty) {\n if (!self._shadowViewMatrix) {\n self._shadowViewMatrix = math.identityMat4();\n }\n const eye = self._state.pos;\n const look = camera.look;\n const up = camera.up;\n math.lookAtMat4v(eye, look, up, self._shadowViewMatrix);\n self._shadowViewMatrixDirty = false;\n }\n return self._shadowViewMatrix;\n },\n\n getShadowProjMatrix: () => {\n if (self._shadowProjMatrixDirty) { // TODO: Set when canvas resizes\n if (!self._shadowProjMatrix) {\n self._shadowProjMatrix = math.identityMat4();\n }\n const canvas = self.scene.canvas.canvas;\n math.perspectiveMat4(70 * (Math.PI / 180.0), canvas.clientWidth / canvas.clientHeight, 0.1, 500.0, self._shadowProjMatrix);\n self._shadowProjMatrixDirty = false;\n }\n return self._shadowProjMatrix;\n },\n\n getShadowRenderBuf: () => {\n if (!self._shadowRenderBuf) {\n self._shadowRenderBuf = new RenderBuffer(self.scene.canvas.canvas, self.scene.canvas.gl, {size: [1024, 1024]}); // Super old mobile devices have a limit of 1024x1024 textures\n }\n return self._shadowRenderBuf;\n }\n });\n\n this.pos = cfg.pos;\n this.color = cfg.color;\n this.intensity = cfg.intensity;\n this.constantAttenuation = cfg.constantAttenuation;\n this.linearAttenuation = cfg.linearAttenuation;\n this.quadraticAttenuation = cfg.quadraticAttenuation;\n this.castsShadow = cfg.castsShadow;\n\n this.scene._lightCreated(this);\n }\n\n /**\n * Sets the position of this PointLight.\n *\n * This will be either World- or View-space, depending on the value of {@link PointLight#space}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @param {Number[]} pos The position.\n */\n set pos(pos) {\n this._state.pos.set(pos || [1.0, 1.0, 1.0]);\n this._shadowViewMatrixDirty = true;\n this.glRedraw();\n }\n\n /**\n * Gets the position of this PointLight.\n *\n * This will be either World- or View-space, depending on the value of {@link PointLight#space}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @returns {Number[]} The position.\n */\n get pos() {\n return this._state.pos;\n }\n\n /**\n * Sets the RGB color of this PointLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @param {Number[]} color The PointLight's RGB color.\n */\n set color(color) {\n this._state.color.set(color || [0.7, 0.7, 0.8]);\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of this PointLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @returns {Number[]} The PointLight's RGB color.\n */\n get color() {\n return this._state.color;\n }\n\n /**\n * Sets the intensity of this PointLight.\n *\n * Default intensity is ````1.0```` for maximum intensity.\n *\n * @param {Number} intensity The PointLight's intensity\n */\n set intensity(intensity) {\n intensity = intensity !== undefined ? intensity : 1.0;\n this._state.intensity = intensity;\n this.glRedraw();\n }\n\n /**\n * Gets the intensity of this PointLight.\n *\n * Default value is ````1.0```` for maximum intensity.\n *\n * @returns {Number} The PointLight's intensity.\n */\n get intensity() {\n return this._state.intensity;\n }\n\n /**\n * Sets the constant attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The constant attenuation factor.\n */\n set constantAttenuation(value) {\n this._state.attenuation[0] = value || 0.0;\n this.glRedraw();\n }\n\n /**\n * Gets the constant attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The constant attenuation factor.\n */\n get constantAttenuation() {\n return this._state.attenuation[0];\n }\n\n /**\n * Sets the linear attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The linear attenuation factor.\n */\n set linearAttenuation(value) {\n this._state.attenuation[1] = value || 0.0;\n this.glRedraw();\n }\n\n /**\n * Gets the linear attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The linear attenuation factor.\n */\n get linearAttenuation() {\n return this._state.attenuation[1];\n }\n\n /**\n * Sets the quadratic attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The quadratic attenuation factor.\n */\n set quadraticAttenuation(value) {\n this._state.attenuation[2] = value || 0.0;\n this.glRedraw();\n }\n\n /**\n * Gets the quadratic attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The quadratic attenuation factor.\n */\n get quadraticAttenuation() {\n return this._state.attenuation[2];\n }\n\n /**\n * Sets if this PointLight casts a shadow.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} castsShadow Set ````true```` to cast shadows.\n */\n set castsShadow(castsShadow) {\n castsShadow = !!castsShadow;\n if (this._state.castsShadow === castsShadow) {\n return;\n }\n this._state.castsShadow = castsShadow;\n this._shadowViewMatrixDirty = true;\n this.glRedraw();\n }\n\n /**\n * Gets if this PointLight casts a shadow.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} ````true```` if this PointLight casts shadows.\n */\n get castsShadow() {\n return this._state.castsShadow;\n }\n\n /**\n * Destroys this PointLight.\n */\n destroy() {\n\n const camera = this.scene.camera;\n const canvas = this.scene.canvas;\n camera.off(this._onCameraViewMatrix);\n camera.off(this._onCameraProjMatrix);\n canvas.off(this._onCanvasBoundary);\n\n super.destroy();\n\n this._state.destroy();\n if (this._shadowRenderBuf) {\n this._shadowRenderBuf.destroy();\n }\n this.scene._lightDestroyed(this);\n this.glRedraw();\n }\n}\n\nexport {PointLight};\n", @@ -76854,7 +77382,7 @@ "lineNumber": 1 }, { - "__docId__": 3801, + "__docId__": 3819, "kind": "class", "name": "PointLight", "memberof": "src/viewer/scene/lights/PointLight.js", @@ -76872,7 +77400,7 @@ ] }, { - "__docId__": 3802, + "__docId__": 3820, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -76891,7 +77419,7 @@ } }, { - "__docId__": 3803, + "__docId__": 3821, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77040,7 +77568,7 @@ ] }, { - "__docId__": 3804, + "__docId__": 3822, "kind": "member", "name": "_shadowRenderBuf", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77058,7 +77586,7 @@ } }, { - "__docId__": 3805, + "__docId__": 3823, "kind": "member", "name": "_shadowViewMatrix", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77076,7 +77604,7 @@ } }, { - "__docId__": 3806, + "__docId__": 3824, "kind": "member", "name": "_shadowProjMatrix", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77094,7 +77622,7 @@ } }, { - "__docId__": 3807, + "__docId__": 3825, "kind": "member", "name": "_shadowViewMatrixDirty", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77112,7 +77640,7 @@ } }, { - "__docId__": 3808, + "__docId__": 3826, "kind": "member", "name": "_shadowProjMatrixDirty", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77130,7 +77658,7 @@ } }, { - "__docId__": 3809, + "__docId__": 3827, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77148,7 +77676,7 @@ } }, { - "__docId__": 3811, + "__docId__": 3829, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77166,7 +77694,7 @@ } }, { - "__docId__": 3813, + "__docId__": 3831, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77184,7 +77712,7 @@ } }, { - "__docId__": 3815, + "__docId__": 3833, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77202,7 +77730,7 @@ } }, { - "__docId__": 3823, + "__docId__": 3841, "kind": "set", "name": "pos", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77227,7 +77755,7 @@ ] }, { - "__docId__": 3825, + "__docId__": 3843, "kind": "get", "name": "pos", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77259,7 +77787,7 @@ } }, { - "__docId__": 3826, + "__docId__": 3844, "kind": "set", "name": "color", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77284,7 +77812,7 @@ ] }, { - "__docId__": 3827, + "__docId__": 3845, "kind": "get", "name": "color", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77316,7 +77844,7 @@ } }, { - "__docId__": 3828, + "__docId__": 3846, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77341,7 +77869,7 @@ ] }, { - "__docId__": 3829, + "__docId__": 3847, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77373,7 +77901,7 @@ } }, { - "__docId__": 3830, + "__docId__": 3848, "kind": "set", "name": "constantAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77398,7 +77926,7 @@ ] }, { - "__docId__": 3831, + "__docId__": 3849, "kind": "get", "name": "constantAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77430,7 +77958,7 @@ } }, { - "__docId__": 3832, + "__docId__": 3850, "kind": "set", "name": "linearAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77455,7 +77983,7 @@ ] }, { - "__docId__": 3833, + "__docId__": 3851, "kind": "get", "name": "linearAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77487,7 +78015,7 @@ } }, { - "__docId__": 3834, + "__docId__": 3852, "kind": "set", "name": "quadraticAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77512,7 +78040,7 @@ ] }, { - "__docId__": 3835, + "__docId__": 3853, "kind": "get", "name": "quadraticAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77544,7 +78072,7 @@ } }, { - "__docId__": 3836, + "__docId__": 3854, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77569,7 +78097,7 @@ ] }, { - "__docId__": 3838, + "__docId__": 3856, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77601,7 +78129,7 @@ } }, { - "__docId__": 3839, + "__docId__": 3857, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -77616,7 +78144,7 @@ "return": null }, { - "__docId__": 3840, + "__docId__": 3858, "kind": "file", "name": "src/viewer/scene/lights/ReflectionMap.js", "content": "import {CubeTexture} from './CubeTexture.js';\n\n/**\n * @desc A reflection cube map.\n *\n * ## Usage\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry,\n * ReadableGeometry, MetallicMaterial, ReflectionMap} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new ReflectionMap(viewer.scene, {\n * src: [\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_PX.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_NX.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_PY.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_NY.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_PZ.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_NZ.png\"\n * ]\n * });\n *\n * // Create a sphere and ground plane\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 2.0\n * }),\n * new MetallicMaterial(viewer.scene, {\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0\n * })\n * });\n * ````\n */\nclass ReflectionMap extends CubeTexture {\n\n /**\n @private\n */\n get type() {\n return \"ReflectionMap\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this ReflectionMap, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String[]} [cfg.src=null] Paths to six image files to load into this ReflectionMap.\n * @param {Boolean} [cfg.flipY=false] Flips this ReflectionMap's source data along its vertical axis when true.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.scene._lightsState.addReflectionMap(this._state);\n this.scene._reflectionMapCreated(this);\n }\n\n /**\n * Destroys this ReflectionMap.\n */\n destroy() {\n super.destroy();\n this.scene._reflectionMapDestroyed(this);\n }\n}\n\nexport {ReflectionMap};\n", @@ -77627,7 +78155,7 @@ "lineNumber": 1 }, { - "__docId__": 3841, + "__docId__": 3859, "kind": "class", "name": "ReflectionMap", "memberof": "src/viewer/scene/lights/ReflectionMap.js", @@ -77645,7 +78173,7 @@ ] }, { - "__docId__": 3842, + "__docId__": 3860, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/ReflectionMap.js~ReflectionMap", @@ -77664,7 +78192,7 @@ } }, { - "__docId__": 3843, + "__docId__": 3861, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/ReflectionMap.js~ReflectionMap", @@ -77745,7 +78273,7 @@ ] }, { - "__docId__": 3844, + "__docId__": 3862, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/ReflectionMap.js~ReflectionMap", @@ -77760,7 +78288,7 @@ "return": null }, { - "__docId__": 3845, + "__docId__": 3863, "kind": "file", "name": "src/viewer/scene/lights/Shadow.js", "content": "/**\n A **Shadow** defines a shadow cast by a {@link DirLight} or a {@link SpotLight}.\n\n Work in progress!\n\n ## Overview\n\n * Shadows are attached to {@link DirLight} and {@link SpotLight} components.\n\n TODO\n\n ## Examples\n\n TODO\n\n ## Usage\n\n ```` javascript\n var mesh = new xeokit.Mesh(scene, {\n\n lights: new xeokit.Lights({\n lights: [\n\n new xeokit.SpotLight({\n pos: [0, 100, 100],\n dir: [0, -1, 0],\n color: [0.5, 0.7, 0.5],\n intensity: 1\n constantAttenuation: 0,\n linearAttenuation: 0,\n quadraticAttenuation: 0,\n space: \"view\",\n\n shadow: new xeokit.Shadow({\n resolution: [1000, 1000],\n intensity: 0.7,\n sampling: \"stratified\" // \"stratified\" | \"poisson\" | \"basic\"\n });\n })\n ]\n }),\n ,\n material: new xeokit.PhongMaterial({\n diffuse: [0.5, 0.5, 0.0]\n }),\n\n geometry: new xeokit.BoxGeometry()\n });\n ````\n\n @class Shadow\n @module xeokit\n @submodule lighting\n @constructor\n @private\n @extends Component\n @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n @param {*} [cfg] The Shadow configuration\n @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n @param {String:Object} [cfg.meta] Optional map of user-defined metadata to attach to this Shadow.\n @param [cfg.resolution=[1000,1000]] {Uint16Array} Resolution of the texture map for this Shadow.\n @param [cfg.intensity=1.0] {Number} Intensity of this Shadow.\n */\nimport {Component} from '../Component.js';\nimport {math} from '../math/math.js';\n\nclass Shadow extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Shadow\";\n }\n\n constructor(owner, cfg={}) {\n\n super(owner, cfg);\n\n this._state = {\n resolution: math.vec3([1000, 1000]),\n intensity: 1.0\n };\n\n this.resolution = cfg.resolution;\n this.intensity = cfg.intensity;\n }\n\n /**\n The resolution of the texture map for this Shadow.\n\n This will be either World- or View-space, depending on the value of {@link Shadow/space}.\n\n Fires a {@link Shadow/resolution:event} event on change.\n\n @property resolution\n @default [1000, 1000]\n @type Uint16Array\n */\n set resolution(value) {\n\n this._state.resolution.set(value || [1000.0, 1000.0]);\n\n this.glRedraw();\n }\n\n get resolution() {\n return this._state.resolution;\n }\n\n /**\n The intensity of this Shadow.\n\n Fires a {@link Shadow/intensity:event} event on change.\n\n @property intensity\n @default 1.0\n @type {Number}\n */\n set intensity(value) {\n\n value = value !== undefined ? value : 1.0;\n\n this._state.intensity = value;\n\n this.glRedraw();\n }\n\n get intensity() {\n return this._state.intensity;\n }\n\n destroy() {\n super.destroy();\n //this._state.destroy();\n }\n}\n\nexport {Shadow};\n", @@ -77771,7 +78299,7 @@ "lineNumber": 1 }, { - "__docId__": 3846, + "__docId__": 3864, "kind": "class", "name": "Shadow", "memberof": "src/viewer/scene/lights/Shadow.js", @@ -77790,7 +78318,7 @@ ] }, { - "__docId__": 3847, + "__docId__": 3865, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -77809,7 +78337,7 @@ } }, { - "__docId__": 3848, + "__docId__": 3866, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -77823,7 +78351,7 @@ "undocument": true }, { - "__docId__": 3849, + "__docId__": 3867, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -77841,7 +78369,7 @@ } }, { - "__docId__": 3852, + "__docId__": 3870, "kind": "set", "name": "resolution", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -77880,7 +78408,7 @@ } }, { - "__docId__": 3853, + "__docId__": 3871, "kind": "get", "name": "resolution", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -77899,7 +78427,7 @@ } }, { - "__docId__": 3854, + "__docId__": 3872, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -77938,7 +78466,7 @@ } }, { - "__docId__": 3855, + "__docId__": 3873, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -77957,7 +78485,7 @@ } }, { - "__docId__": 3856, + "__docId__": 3874, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -77973,7 +78501,7 @@ "return": null }, { - "__docId__": 3857, + "__docId__": 3875, "kind": "file", "name": "src/viewer/scene/lights/index.js", "content": "export * from \"./AmbientLight.js\";\nexport * from \"./DirLight.js\";\nexport * from \"./PointLight.js\";\nexport * from \"./ReflectionMap.js\";\nexport * from \"./LightMap.js\";", @@ -77984,7 +78512,7 @@ "lineNumber": 1 }, { - "__docId__": 3858, + "__docId__": 3876, "kind": "file", "name": "src/viewer/scene/marker/Marker.js", "content": "import {math} from '../math/math.js';\nimport {Component} from '../Component.js';\nimport {worldToRTCPos} from \"../math/rtcCoords.js\";\nimport {SceneModelEntity} from \"../model/SceneModelEntity.js\";\n\nconst tempVec4a = math.vec4();\nconst tempVec4b = math.vec4();\n\n\n/**\n * @desc Tracks the World, View and Canvas coordinates, and visibility, of a position within a {@link Scene}.\n *\n * ## Position\n *\n * A Marker holds its position in the World, View and Canvas coordinate systems in three properties:\n *\n * * {@link Marker#worldPos} holds the Marker's 3D World-space coordinates. This property can be dynamically updated. The Marker will fire a \"worldPos\" event whenever this property changes.\n * * {@link Marker#viewPos} holds the Marker's 3D View-space coordinates. This property is read-only, and is automatically updated from {@link Marker#worldPos} and the current {@link Camera} position. The Marker will fire a \"viewPos\" event whenever this property changes.\n * * {@link Marker#canvasPos} holds the Marker's 2D Canvas-space coordinates. This property is read-only, and is automatically updated from {@link Marker#canvasPos} and the current {@link Camera} position and projection. The Marker will fire a \"canvasPos\" event whenever this property changes.\n *\n * ## Visibility\n *\n * {@link Marker#visible} indicates if the Marker is currently visible. The Marker will fire a \"visible\" event whenever {@link Marker#visible} changes.\n *\n * This property will be ````false```` when:\n *\n * * {@link Marker#entity} is set to an {@link Entity}, and {@link Entity#visible} is ````false````,\n * * {@link Marker#occludable} is ````true```` and the Marker is occluded by some {@link Entity} in the 3D view, or\n * * {@link Marker#canvasPos} is outside the boundary of the {@link Canvas}.\n *\n * ## Usage\n *\n * In the example below, we'll create a Marker that's associated with a {@link Mesh} (which a type of {@link Entity}).\n *\n * We'll configure our Marker to\n * become invisible whenever it's occluded by any Entities in the canvas.\n *\n * We'll also demonstrate how to query the Marker's visibility status and position (in the World, View and\n * Canvas coordinate systems), and how to subscribe to change events on those properties.\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, Marker} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Create the torus Mesh\n * // Recall that a Mesh is an Entity\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, 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 * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * })\n * });\n *\n * // Create the Marker, associated with our Mesh Entity\n * const myMarker = new Marker(viewer, {\n * entity: entity,\n * worldPos: [10,0,0],\n * occludable: true\n * });\n *\n * // Get the Marker's current World, View and Canvas coordinates\n * const worldPos = myMarker.worldPos; // 3D World-space position\n * const viewPos = myMarker.viewPos; // 3D View-space position\n * const canvasPos = myMarker.canvasPos; // 2D Canvas-space position\n *\n * const visible = myMarker.visible;\n *\n * // Listen for change of the Marker's 3D World-space position\n * myMarker.on(\"worldPos\", function(worldPos) {\n * //...\n * });\n *\n * // Listen for change of the Marker's 3D View-space position, which happens\n * // when either worldPos was updated or the Camera was moved\n * myMarker.on(\"viewPos\", function(viewPos) {\n * //...\n * });\n *\n * // Listen for change of the Marker's 2D Canvas-space position, which happens\n * // when worldPos or viewPos was updated, or Camera's projection was updated\n * myMarker.on(\"canvasPos\", function(canvasPos) {\n * //...\n * });\n *\n * // Listen for change of Marker visibility. The Marker becomes invisible when it falls outside the canvas,\n * // has an Entity that is also invisible, or when an Entity occludes the Marker's position in the 3D view.\n * myMarker.on(\"visible\", function(visible) { // Marker visibility has changed\n * if (visible) {\n * this.log(\"Marker is visible\");\n * } else {\n * this.log(\"Marker is invisible\");\n * }\n * });\n *\n * // Listen for destruction of Marker\n * myMarker.on(\"destroyed\", () => {\n * //...\n * });\n * ````\n */\nclass Marker extends Component {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this Marker as well.\n * @param {*} [cfg] Marker configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Entity} [cfg.entity] Entity to associate this Marker with. When the Marker has an Entity, then {@link Marker#visible} will always be ````false```` if {@link Entity#visible} is false.\n * @param {Boolean} [cfg.occludable=false] Indicates whether or not this Marker is hidden (ie. {@link Marker#visible} is ````false```` whenever occluded by {@link Entity}s in the {@link Scene}.\n * @param {Number[]} [cfg.worldPos=[0,0,0]] World-space 3D Marker position.\n */\n constructor(owner, cfg) {\n\n super(owner, cfg);\n\n this._entity = null;\n this._visible = null;\n this._worldPos = math.vec3();\n this._origin = math.vec3();\n this._rtcPos = math.vec3();\n this._viewPos = math.vec3();\n this._canvasPos = math.vec2();\n this._occludable = false;\n\n this._onCameraViewMatrix = this.scene.camera.on(\"matrix\", () => {\n this._viewPosDirty = true;\n this._needUpdate();\n });\n\n this._onCameraProjMatrix = this.scene.camera.on(\"projMatrix\", () => {\n this._canvasPosDirty = true;\n this._needUpdate();\n });\n\n this._onEntityDestroyed = null;\n this._onEntityModelDestroyed = null;\n\n this._renderer.addMarker(this);\n\n this.entity = cfg.entity;\n this.worldPos = cfg.worldPos;\n this.occludable = cfg.occludable;\n }\n\n _update() { // this._needUpdate() schedules this for next tick\n if (this._viewPosDirty) {\n math.transformPoint3(this.scene.camera.viewMatrix, this._worldPos, this._viewPos);\n this._viewPosDirty = false;\n this._canvasPosDirty = true;\n this.fire(\"viewPos\", this._viewPos);\n }\n if (this._canvasPosDirty) {\n tempVec4a.set(this._viewPos);\n tempVec4a[3] = 1.0;\n math.transformPoint4(this.scene.camera.projMatrix, tempVec4a, tempVec4b);\n const aabb = this.scene.canvas.boundary;\n this._canvasPos[0] = Math.floor((1 + tempVec4b[0] / tempVec4b[3]) * aabb[2] / 2);\n this._canvasPos[1] = Math.floor((1 - tempVec4b[1] / tempVec4b[3]) * aabb[3] / 2);\n this._canvasPosDirty = false;\n this.fire(\"canvasPos\", this._canvasPos);\n }\n }\n\n _setVisible(visible) { // Called by VisibilityTester and this._entity.on(\"destroyed\"..)\n if (this._visible === visible) {\n // return;\n }\n this._visible = visible;\n this.fire(\"visible\", this._visible);\n }\n\n /**\n * Sets the {@link Entity} this Marker is associated with.\n *\n * An Entity is optional. When the Marker has an Entity, then {@link Marker#visible} will always be ````false````\n * if {@link Entity#visible} is false.\n *\n * @type {Entity}\n */\n set entity(entity) {\n if (this._entity) {\n if (this._entity === entity) {\n return;\n }\n if (this._onEntityDestroyed !== null) {\n this._entity.model.off(this._onEntityDestroyed);\n this._onEntityDestroyed = null;\n }\n if (this._onEntityModelDestroyed !== null) {\n this._entity.model.off(this._onEntityModelDestroyed);\n this._onEntityModelDestroyed = null;\n }\n }\n this._entity = entity;\n if (this._entity) {\n if (this._entity instanceof SceneModelEntity) {\n this._onEntityModelDestroyed = this._entity.model.on(\"destroyed\", () => { // SceneModelEntity does not fire events, and cannot exist beyond its VBOSceneModel\n this._entity = null; // Marker now may become visible, if it was synched to invisible Entity\n this._onEntityModelDestroyed = null;\n });\n } else {\n this._onEntityDestroyed = this._entity.model.on(\"destroyed\", () => {\n this._entity = null;\n this._onEntityDestroyed = null;\n });\n }\n }\n this.fire(\"entity\", this._entity, true /* forget */);\n }\n\n /**\n * Gets the {@link Entity} this Marker is associated with.\n *\n * @type {Entity}\n */\n get entity() {\n return this._entity;\n }\n\n /**\n * Sets whether occlusion testing is performed for this Marker.\n *\n * When this is ````true````, then {@link Marker#visible} will be ````false```` whenever the Marker is occluded by an {@link Entity} in the 3D view.\n *\n * The {@link Scene} periodically occlusion-tests all Markers on every 20th \"tick\" (which represents a rendered frame). We\n * can adjust that frequency via property {@link Scene#ticksPerOcclusionTest}.\n *\n * @type {Boolean}\n */\n set occludable(occludable) {\n occludable = !!occludable;\n if (occludable === this._occludable) {\n return;\n }\n this._occludable = occludable;\n }\n\n /**\n * Gets whether occlusion testing is performed for this Marker.\n *\n * When this is ````true````, then {@link Marker#visible} will be ````false```` whenever the Marker is occluded by an {@link Entity} in the 3D view.\n *\n * @type {Boolean}\n */\n get occludable() {\n return this._occludable;\n }\n\n /**\n * Sets the World-space 3D position of this Marker.\n *\n * Fires a \"worldPos\" event with new World position.\n *\n * @type {Number[]}\n */\n set worldPos(worldPos) {\n this._worldPos.set(worldPos || [0, 0, 0]);\n worldToRTCPos(this._worldPos, this._origin, this._rtcPos);\n if (this._occludable) {\n this._renderer.markerWorldPosUpdated(this);\n }\n this._viewPosDirty = true;\n this.fire(\"worldPos\", this._worldPos);\n this._needUpdate();\n }\n\n /**\n * Gets the World-space 3D position of this Marker.\n *\n * @type {Number[]}\n */\n get worldPos() {\n return this._worldPos;\n }\n\n /**\n * Gets the RTC center of this Marker.\n *\n * This is automatically calculated from {@link Marker#worldPos}.\n *\n * @type {Number[]}\n */\n get origin() {\n return this._origin;\n }\n\n /**\n * Gets the RTC position of this Marker.\n *\n * This is automatically calculated from {@link Marker#worldPos}.\n *\n * @type {Number[]}\n */\n get rtcPos() {\n return this._rtcPos;\n }\n\n /**\n * View-space 3D coordinates of this Marker.\n *\n * This property is read-only and is automatically calculated from {@link Marker#worldPos} and the current {@link Camera} position.\n *\n * The Marker fires a \"viewPos\" event whenever this property changes.\n *\n * @type {Number[]}\n * @final\n */\n get viewPos() {\n this._update();\n return this._viewPos;\n }\n\n /**\n * Canvas-space 2D coordinates of this Marker.\n *\n * This property is read-only and is automatically calculated from {@link Marker#worldPos} and the current {@link Camera} position and projection.\n *\n * The Marker fires a \"canvasPos\" event whenever this property changes.\n *\n * @type {Number[]}\n * @final\n */\n get canvasPos() {\n this._update();\n return this._canvasPos;\n }\n\n /**\n * Indicates if this Marker is currently visible.\n *\n * This is read-only and is automatically calculated.\n *\n * The Marker is **invisible** whenever:\n *\n * * {@link Marker#canvasPos} is currently outside the canvas,\n * * {@link Marker#entity} is set to an {@link Entity} that has {@link Entity#visible} ````false````, or\n * * or {@link Marker#occludable} is ````true```` and the Marker is currently occluded by an Entity in the 3D view.\n *\n * The Marker fires a \"visible\" event whenever this property changes.\n *\n * @type {Boolean}\n * @final\n */\n get visible() {\n return !!this._visible;\n }\n\n /**\n * Destroys this Marker.\n */\n destroy() {\n this.fire(\"destroyed\", true);\n this.scene.camera.off(this._onCameraViewMatrix);\n this.scene.camera.off(this._onCameraProjMatrix);\n if (this._entity) {\n if (this._onEntityDestroyed !== null) {\n this._entity.off(this._onEntityDestroyed);\n }\n if (this._onEntityModelDestroyed !== null) {\n this._entity.model.off(this._onEntityModelDestroyed);\n }\n }\n this._renderer.removeMarker(this);\n super.destroy();\n }\n}\n\nexport {Marker};\n", @@ -77995,7 +78523,7 @@ "lineNumber": 1 }, { - "__docId__": 3859, + "__docId__": 3877, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/marker/Marker.js", @@ -78016,7 +78544,7 @@ "ignore": true }, { - "__docId__": 3860, + "__docId__": 3878, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/marker/Marker.js", @@ -78037,7 +78565,7 @@ "ignore": true }, { - "__docId__": 3861, + "__docId__": 3879, "kind": "class", "name": "Marker", "memberof": "src/viewer/scene/marker/Marker.js", @@ -78055,7 +78583,7 @@ ] }, { - "__docId__": 3862, + "__docId__": 3880, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78144,7 +78672,7 @@ ] }, { - "__docId__": 3863, + "__docId__": 3881, "kind": "member", "name": "_entity", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78162,7 +78690,7 @@ } }, { - "__docId__": 3864, + "__docId__": 3882, "kind": "member", "name": "_visible", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78180,7 +78708,7 @@ } }, { - "__docId__": 3865, + "__docId__": 3883, "kind": "member", "name": "_worldPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78198,7 +78726,7 @@ } }, { - "__docId__": 3866, + "__docId__": 3884, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78216,7 +78744,7 @@ } }, { - "__docId__": 3867, + "__docId__": 3885, "kind": "member", "name": "_rtcPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78234,7 +78762,7 @@ } }, { - "__docId__": 3868, + "__docId__": 3886, "kind": "member", "name": "_viewPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78252,7 +78780,7 @@ } }, { - "__docId__": 3869, + "__docId__": 3887, "kind": "member", "name": "_canvasPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78270,7 +78798,7 @@ } }, { - "__docId__": 3870, + "__docId__": 3888, "kind": "member", "name": "_occludable", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78288,7 +78816,7 @@ } }, { - "__docId__": 3871, + "__docId__": 3889, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78306,7 +78834,7 @@ } }, { - "__docId__": 3872, + "__docId__": 3890, "kind": "member", "name": "_viewPosDirty", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78324,7 +78852,7 @@ } }, { - "__docId__": 3873, + "__docId__": 3891, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78342,7 +78870,7 @@ } }, { - "__docId__": 3874, + "__docId__": 3892, "kind": "member", "name": "_canvasPosDirty", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78360,7 +78888,7 @@ } }, { - "__docId__": 3875, + "__docId__": 3893, "kind": "member", "name": "_onEntityDestroyed", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78378,7 +78906,7 @@ } }, { - "__docId__": 3876, + "__docId__": 3894, "kind": "member", "name": "_onEntityModelDestroyed", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78396,7 +78924,7 @@ } }, { - "__docId__": 3880, + "__docId__": 3898, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78413,7 +78941,7 @@ "return": null }, { - "__docId__": 3884, + "__docId__": 3902, "kind": "method", "name": "_setVisible", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78437,7 +78965,7 @@ "return": null }, { - "__docId__": 3886, + "__docId__": 3904, "kind": "set", "name": "entity", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78458,7 +78986,7 @@ } }, { - "__docId__": 3896, + "__docId__": 3914, "kind": "get", "name": "entity", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78479,7 +79007,7 @@ } }, { - "__docId__": 3897, + "__docId__": 3915, "kind": "set", "name": "occludable", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78500,7 +79028,7 @@ } }, { - "__docId__": 3899, + "__docId__": 3917, "kind": "get", "name": "occludable", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78521,7 +79049,7 @@ } }, { - "__docId__": 3900, + "__docId__": 3918, "kind": "set", "name": "worldPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78542,7 +79070,7 @@ } }, { - "__docId__": 3902, + "__docId__": 3920, "kind": "get", "name": "worldPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78563,7 +79091,7 @@ } }, { - "__docId__": 3903, + "__docId__": 3921, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78584,7 +79112,7 @@ } }, { - "__docId__": 3904, + "__docId__": 3922, "kind": "get", "name": "rtcPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78605,7 +79133,7 @@ } }, { - "__docId__": 3905, + "__docId__": 3923, "kind": "get", "name": "viewPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78632,7 +79160,7 @@ } }, { - "__docId__": 3906, + "__docId__": 3924, "kind": "get", "name": "canvasPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78659,7 +79187,7 @@ } }, { - "__docId__": 3907, + "__docId__": 3925, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78686,7 +79214,7 @@ } }, { - "__docId__": 3908, + "__docId__": 3926, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -78701,7 +79229,7 @@ "return": null }, { - "__docId__": 3909, + "__docId__": 3927, "kind": "file", "name": "src/viewer/scene/marker/SpriteMarker.js", "content": "import {Mesh} from \"../mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../geometry/ReadableGeometry.js\";\nimport {PhongMaterial, Texture} from \"../materials/index.js\";\nimport {math} from \"../math/math.js\";\nimport {Marker} from \"./Marker.js\";\n\n/**\n * A {@link Marker} with a billboarded and textured quad attached to it.\n *\n * * Extends {@link Marker}\n * * Keeps the quad oriented towards the viewpoint\n * * Auto-fits the quad to the texture\n * * Has a world-space position\n * * Can be configured to hide the quad whenever the position is occluded by some other object\n *\n * ## Usage\n *\n * [[Run this example](/examples/index.html#markers_SpriteMarker)]\n *\n * ```` javascript\n * import {Viewer, SpriteMarker } from \"./https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 25];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new SpriteMarker(viewer.scene, {\n * worldPos: [-10, 0, 0],\n * src: \"../assets/textures/diffuse/uvGrid2_512x1024.jpg\",\n * size: 5,\n * occludable: false\n * });\n *\n * new SpriteMarker(viewer.scene, {\n * worldPos: [+10, 0, 0],\n * src: \"../assets/textures/diffuse/uvGrid2_1024x512.jpg\",\n * size: 4,\n * occludable: false\n * });\n *````\n */\nclass SpriteMarker extends Marker {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this SpriteMarker as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this SpriteMarker, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Entity} [cfg.entity] Entity to associate this Marker with. When the SpriteMarker has an Entity, then {@link Marker#visible} will always be ````false```` if {@link Entity#visible} is false.\n * @param {Boolean} [cfg.occludable=false] Indicates whether or not this Marker is hidden (ie. {@link Marker#visible} is ````false```` whenever occluded by {@link Entity}s in the {@link Scene}.\n * @param {Number[]} [cfg.worldPos=[0,0,0]] World-space 3D Marker position.\n * @param {String} [cfg.src=null] Path to image file to load into this SpriteMarker. See the {@link SpriteMarker#src} property for more info.\n * @param {HTMLImageElement} [cfg.image=null] HTML Image object to load into this SpriteMarker. See the {@link SpriteMarker#image} property for more info.\n * @param {Boolean} [cfg.flipY=false] Flips this SpriteMarker's texture image along its vertical axis when true.\n * @param {String} [cfg.encoding=\"linear\"] Texture encoding format. See the {@link Texture#encoding} property for more info.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, {\n entity: cfg.entity,\n occludable: cfg.occludable,\n worldPos: cfg.worldPos\n });\n\n this._occluded = false;\n this._visible = true;\n this._src = null;\n this._image = null;\n this._pos = math.vec3();\n this._origin = math.vec3();\n this._rtcPos = math.vec3();\n this._dir = math.vec3();\n this._size = 1.0;\n this._imageSize = math.vec2();\n\n this._texture = new Texture(this, {\n src: cfg.src\n });\n\n this._geometry = new ReadableGeometry(this, {\n primitive: \"triangles\",\n positions: [3, 3, 0, -3, 3, 0, -3, -3, 0, 3, -3, 0],\n normals: [-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0],\n uv: [1, -1, 0, -1, 0, 0, 1, 0],\n indices: [0, 1, 2, 0, 2, 3] // Ensure these will be front-faces\n });\n\n this._mesh = new Mesh(this, {\n geometry: this._geometry,\n material: new PhongMaterial(this, {\n ambient: [0.9, 0.3, 0.9],\n shininess: 30,\n diffuseMap: this._texture,\n backfaces: true\n }),\n scale: [1, 1, 1], // Note: by design, scale does not work with billboard\n position: cfg.worldPos,\n rotation: [90, 0, 0],\n billboard: \"spherical\",\n occluder: false // Don't occlude SpriteMarkers or Annotations\n });\n\n this.visible = true;\n this.collidable = cfg.collidable;\n this.clippable = cfg.clippable;\n this.pickable = cfg.pickable;\n this.opacity = cfg.opacity;\n this.size = cfg.size;\n\n if (cfg.image) {\n this.image = cfg.image;\n } else {\n this.src = cfg.src;\n }\n }\n\n _setVisible(visible) { // Called by VisibilityTester and this._entity.on(\"destroyed\"..)\n this._occluded = (!visible);\n this._mesh.visible = this._visible && (!this._occluded);\n super._setVisible(visible);\n }\n\n /**\n * Sets if this ````SpriteMarker```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} visible Set ````true```` to make this ````SpriteMarker```` visible.\n */\n set visible(visible) {\n this._visible = (visible === null || visible === undefined) ? true : visible;\n this._mesh.visible = this._visible && (!this._occluded);\n }\n\n /**\n * Gets if this ````SpriteMarker```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if visible.\n */\n get visible() {\n return this._visible;\n }\n\n /**\n * Sets an ````HTMLImageElement```` to source the image from.\n *\n * Sets {@link Texture#src} null.\n *\n * @type {HTMLImageElement}\n */\n set image(image) {\n this._image = image;\n if (this._image) {\n this._imageSize[0] = this._image.width;\n this._imageSize[1] = this._image.height;\n this._updatePlaneSizeFromImage();\n this._src = null;\n this._texture.image = this._image;\n }\n }\n\n /**\n * Gets the ````HTMLImageElement```` the ````SpriteMarker````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {HTMLImageElement}\n */\n get image() {\n return this._image;\n }\n\n /**\n * Sets an image file path that the ````SpriteMarker````'s image is sourced from.\n *\n * Accepted file types are PNG and JPEG.\n *\n * Sets {@link Texture#image} null.\n *\n * @type {String}\n */\n set src(src) {\n this._src = src;\n if (this._src) {\n this._image = null;\n const image = new Image();\n image.onload = () => {\n this._texture.image = image;\n this._imageSize[0] = image.width;\n this._imageSize[1] = image.height;\n this._updatePlaneSizeFromImage();\n };\n image.src = this._src;\n }\n }\n\n /**\n * Gets the image file path that the ````SpriteMarker````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {String}\n */\n get src() {\n return this._src;\n }\n\n /**\n * Sets the World-space size of the longest edge of the ````SpriteMarker````.\n *\n * Note that ````SpriteMarker```` sets its aspect ratio to match its image. If we set a value of ````1000````, and\n * the image has size ````400x300````, then the ````SpriteMarker```` will then have size ````1000 x 750````.\n *\n * Default value is ````1.0````.\n *\n * @param {Number} size New World-space size of the ````SpriteMarker````.\n */\n set size(size) {\n this._size = (size === undefined || size === null) ? 1.0 : size;\n if (this._image) {\n this._updatePlaneSizeFromImage()\n }\n }\n\n /**\n * Gets the World-space size of the longest edge of the ````SpriteMarker````.\n *\n * Returns {Number} World-space size of the ````SpriteMarker````.\n */\n get size() {\n return this._size;\n }\n\n /**\n * Sets if this ````SpriteMarker```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set collidable(value) {\n this._mesh.collidable = (value !== false);\n }\n\n /**\n * Gets if this ````SpriteMarker```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._mesh.collidable;\n }\n\n /**\n * Sets if this ````SpriteMarker```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set clippable(value) {\n this._mesh.clippable = (value !== false);\n }\n\n /**\n * Gets if this ````SpriteMarker```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._mesh.clippable;\n }\n\n /**\n * Sets if this ````SpriteMarker```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set pickable(value) {\n this._mesh.pickable = (value !== false);\n }\n\n /**\n * Gets if this ````SpriteMarker```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._mesh.pickable;\n }\n\n /**\n * Sets the opacity factor for this ````SpriteMarker````.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n this._mesh.opacity = opacity;\n }\n\n /**\n * Gets this ````SpriteMarker````'s opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._mesh.opacity;\n }\n\n _updatePlaneSizeFromImage() {\n const halfSize = this._size * 0.5;\n const width = this._imageSize[0];\n const height = this._imageSize[1];\n const aspect = height / width;\n if (width > height) {\n this._geometry.positions = [\n halfSize, halfSize * aspect, 0,\n -halfSize, halfSize * aspect, 0,\n -halfSize, -halfSize * aspect, 0,\n halfSize, -halfSize * aspect, 0\n ];\n } else {\n this._geometry.positions = [\n halfSize / aspect, halfSize, 0,\n -halfSize / aspect, halfSize, 0,\n -halfSize / aspect, -halfSize, 0,\n halfSize / aspect, -halfSize, 0\n ];\n }\n }\n}\n\nexport {SpriteMarker};", @@ -78712,7 +79240,7 @@ "lineNumber": 1 }, { - "__docId__": 3910, + "__docId__": 3928, "kind": "class", "name": "SpriteMarker", "memberof": "src/viewer/scene/marker/SpriteMarker.js", @@ -78730,7 +79258,7 @@ ] }, { - "__docId__": 3911, + "__docId__": 3929, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -78867,7 +79395,7 @@ ] }, { - "__docId__": 3912, + "__docId__": 3930, "kind": "member", "name": "_occluded", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -78885,7 +79413,7 @@ } }, { - "__docId__": 3913, + "__docId__": 3931, "kind": "member", "name": "_visible", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -78903,7 +79431,7 @@ } }, { - "__docId__": 3914, + "__docId__": 3932, "kind": "member", "name": "_src", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -78921,7 +79449,7 @@ } }, { - "__docId__": 3915, + "__docId__": 3933, "kind": "member", "name": "_image", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -78939,7 +79467,7 @@ } }, { - "__docId__": 3916, + "__docId__": 3934, "kind": "member", "name": "_pos", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -78957,7 +79485,7 @@ } }, { - "__docId__": 3917, + "__docId__": 3935, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -78975,7 +79503,7 @@ } }, { - "__docId__": 3918, + "__docId__": 3936, "kind": "member", "name": "_rtcPos", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -78993,7 +79521,7 @@ } }, { - "__docId__": 3919, + "__docId__": 3937, "kind": "member", "name": "_dir", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79011,7 +79539,7 @@ } }, { - "__docId__": 3920, + "__docId__": 3938, "kind": "member", "name": "_size", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79029,7 +79557,7 @@ } }, { - "__docId__": 3921, + "__docId__": 3939, "kind": "member", "name": "_imageSize", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79047,7 +79575,7 @@ } }, { - "__docId__": 3922, + "__docId__": 3940, "kind": "member", "name": "_texture", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79065,7 +79593,7 @@ } }, { - "__docId__": 3923, + "__docId__": 3941, "kind": "member", "name": "_geometry", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79083,7 +79611,7 @@ } }, { - "__docId__": 3924, + "__docId__": 3942, "kind": "member", "name": "_mesh", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79101,7 +79629,7 @@ } }, { - "__docId__": 3933, + "__docId__": 3951, "kind": "method", "name": "_setVisible", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79125,7 +79653,7 @@ "return": null }, { - "__docId__": 3935, + "__docId__": 3953, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79150,7 +79678,7 @@ ] }, { - "__docId__": 3937, + "__docId__": 3955, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79182,7 +79710,7 @@ } }, { - "__docId__": 3938, + "__docId__": 3956, "kind": "set", "name": "image", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79203,7 +79731,7 @@ } }, { - "__docId__": 3941, + "__docId__": 3959, "kind": "get", "name": "image", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79224,7 +79752,7 @@ } }, { - "__docId__": 3942, + "__docId__": 3960, "kind": "set", "name": "src", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79245,7 +79773,7 @@ } }, { - "__docId__": 3945, + "__docId__": 3963, "kind": "get", "name": "src", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79266,7 +79794,7 @@ } }, { - "__docId__": 3946, + "__docId__": 3964, "kind": "set", "name": "size", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79291,7 +79819,7 @@ ] }, { - "__docId__": 3948, + "__docId__": 3966, "kind": "get", "name": "size", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79309,7 +79837,7 @@ } }, { - "__docId__": 3949, + "__docId__": 3967, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79330,7 +79858,7 @@ } }, { - "__docId__": 3950, + "__docId__": 3968, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79351,7 +79879,7 @@ } }, { - "__docId__": 3951, + "__docId__": 3969, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79372,7 +79900,7 @@ } }, { - "__docId__": 3952, + "__docId__": 3970, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79393,7 +79921,7 @@ } }, { - "__docId__": 3953, + "__docId__": 3971, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79414,7 +79942,7 @@ } }, { - "__docId__": 3954, + "__docId__": 3972, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79435,7 +79963,7 @@ } }, { - "__docId__": 3955, + "__docId__": 3973, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79456,7 +79984,7 @@ } }, { - "__docId__": 3956, + "__docId__": 3974, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79477,7 +80005,7 @@ } }, { - "__docId__": 3957, + "__docId__": 3975, "kind": "method", "name": "_updatePlaneSizeFromImage", "memberof": "src/viewer/scene/marker/SpriteMarker.js~SpriteMarker", @@ -79494,7 +80022,7 @@ "return": null }, { - "__docId__": 3958, + "__docId__": 3976, "kind": "file", "name": "src/viewer/scene/marker/index.js", "content": "export * from \"./Marker.js\";\nexport * from \"./SpriteMarker.js\";", @@ -79505,7 +80033,7 @@ "lineNumber": 1 }, { - "__docId__": 3959, + "__docId__": 3977, "kind": "file", "name": "src/viewer/scene/materials/EdgeMaterial.js", "content": "import {Material} from './Material.js';\nimport {RenderState} from '../webgl/RenderState.js';\n\nconst PRESETS = {\n \"default\": {\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"defaultWhiteBG\": {\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"defaultLightBG\": {\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"defaultDarkBG\": {\n edgeColor: [0.5, 0.5, 0.5],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }\n};\n\n/**\n * @desc Configures the appearance of {@link Entity}s when their edges are emphasised.\n *\n * * Emphasise edges of an {@link Entity} by setting {@link Entity#edges} ````true````.\n * * When {@link Entity}s are within the subtree of a root {@link Entity}, then setting {@link Entity#edges} on the root\n * will collectively set that property on all sub-{@link Entity}s.\n * * EdgeMaterial provides several presets. Select a preset by setting {@link EdgeMaterial#preset} to the ID of a preset in {@link EdgeMaterial#presets}.\n * * By default, a {@link Mesh} uses the default EdgeMaterial in {@link Scene#edgeMaterial}, but you can assign each {@link Mesh#edgeMaterial} to a custom EdgeMaterial if required.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Mesh} with its own EdgeMaterial and set {@link Mesh#edges} ````true```` to emphasise its edges.\n *\n * Recall that {@link Mesh} is a concrete subtype of the abstract {@link Entity} base class.\n *\n * [[Run this example](/examples/index.html#materials_EdgeMaterial)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry,\n * ReadableGeometry, PhongMaterial, EdgeMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n *\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 1.5,\n * heightSegments: 24,\n * widthSegments: 16,\n * edgeThreshold: 2 // Default is 10\n * })),\n *\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.4, 0.4, 1.0],\n * ambient: [0.9, 0.3, 0.9],\n * shininess: 30,\n * alpha: 0.5,\n * alphaMode: \"blend\"\n * }),\n *\n * edgeMaterial: new EdgeMaterial(viewer.scene, {\n * edgeColor: [0.0, 0.0, 1.0]\n * edgeAlpha: 1.0,\n * edgeWidth: 2\n * }),\n *\n * edges: true\n * });\n * ````\n *\n * Note the ````edgeThreshold```` configuration for the {@link ReadableGeometry} on our {@link Mesh}. EdgeMaterial configures\n * a wireframe representation of the {@link ReadableGeometry}, which will have inner edges (those edges between\n * adjacent co-planar triangles) removed for visual clarity. The ````edgeThreshold```` indicates that, for\n * this particular {@link ReadableGeometry}, an inner edge is one where the angle between the surface normals of adjacent triangles\n * is not greater than ````5```` degrees. That's set to ````2```` by default, but we can override it to tweak the effect\n * as needed for particular Geometries.\n *\n * Here's the example again, this time implicitly defaulting to the {@link Scene#edgeMaterial}. We'll also modify that EdgeMaterial\n * to customize the effect.\n *\n * ````javascript\n * new Mesh({\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 1.5,\n * heightSegments: 24,\n * widthSegments: 16,\n * edgeThreshold: 2 // Default is 10\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.2, 0.2, 1.0]\n * }),\n * edges: true\n * });\n *\n * var edgeMaterial = viewer.scene.edgeMaterial;\n *\n * edgeMaterial.edgeColor = [0.2, 1.0, 0.2];\n * edgeMaterial.edgeAlpha = 1.0;\n * edgeMaterial.edgeWidth = 2;\n * ````\n *\n * ## Presets\n *\n * Let's switch the {@link Scene#edgeMaterial} to one of the presets in {@link EdgeMaterial#presets}:\n *\n * ````javascript\n * viewer.edgeMaterial.preset = EdgeMaterial.presets[\"sepia\"];\n * ````\n *\n * We can also create an EdgeMaterial from a preset, while overriding properties of the preset as required:\n *\n * ````javascript\n * var myEdgeMaterial = new EdgeMaterial(viewer.scene, {\n * preset: \"sepia\",\n * edgeColor = [1.0, 0.5, 0.5]\n * });\n * ````\n */\nclass EdgeMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"EdgeMaterial\";\n }\n\n /**\n * Gets available EdgeMaterial presets.\n *\n * @type {Object}\n */\n get presets() {\n return PRESETS;\n };\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The EdgeMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.edgeColor=[0.2,0.2,0.2]] RGB edge color.\n * @param {Number} [cfg.edgeAlpha=1.0] Edge transparency. A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n * @param {Number} [cfg.edgeWidth=1] Edge width in pixels.\n * @param {String} [cfg.preset] Selects a preset EdgeMaterial configuration - see {@link EdgeMaterial#presets}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"EdgeMaterial\",\n edges: null,\n edgeColor: null,\n edgeAlpha: null,\n edgeWidth: null\n });\n\n this._preset = \"default\";\n\n if (cfg.preset) { // Apply preset then override with configs where provided\n this.preset = cfg.preset;\n if (cfg.edgeColor) {\n this.edgeColor = cfg.edgeColor;\n }\n if (cfg.edgeAlpha !== undefined) {\n this.edgeAlpha = cfg.edgeAlpha;\n }\n if (cfg.edgeWidth !== undefined) {\n this.edgeWidth = cfg.edgeWidth;\n }\n } else {\n this.edgeColor = cfg.edgeColor;\n this.edgeAlpha = cfg.edgeAlpha;\n this.edgeWidth = cfg.edgeWidth;\n }\n this.edges = (cfg.edges !== false);\n }\n\n\n /**\n * Sets if edges are visible.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set edges(value) {\n value = value !== false;\n if (this._state.edges === value) {\n return;\n }\n this._state.edges = value;\n this.glRedraw();\n }\n\n /**\n * Gets if edges are visible.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._state.edges;\n }\n\n /**\n * Sets RGB edge color.\n *\n * Default value is ````[0.2, 0.2, 0.2]````.\n *\n * @type {Number[]}\n */\n set edgeColor(value) {\n let edgeColor = this._state.edgeColor;\n if (!edgeColor) {\n edgeColor = this._state.edgeColor = new Float32Array(3);\n } else if (value && edgeColor[0] === value[0] && edgeColor[1] === value[1] && edgeColor[2] === value[2]) {\n return;\n }\n if (value) {\n edgeColor[0] = value[0];\n edgeColor[1] = value[1];\n edgeColor[2] = value[2];\n } else {\n edgeColor[0] = 0.2;\n edgeColor[1] = 0.2;\n edgeColor[2] = 0.2;\n }\n this.glRedraw();\n }\n\n /**\n * Gets RGB edge color.\n *\n * Default value is ````[0.2, 0.2, 0.2]````.\n *\n * @type {Number[]}\n */\n get edgeColor() {\n return this._state.edgeColor;\n }\n\n /**\n * Sets edge transparency.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set edgeAlpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.edgeAlpha === value) {\n return;\n }\n this._state.edgeAlpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets edge transparency.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get edgeAlpha() {\n return this._state.edgeAlpha;\n }\n\n /**\n * Sets edge width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n set edgeWidth(value) {\n this._state.edgeWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets edge width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n get edgeWidth() {\n return this._state.edgeWidth;\n }\n\n /**\n * Selects a preset EdgeMaterial configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n set preset(value) {\n value = value || \"default\";\n if (this._preset === value) {\n return;\n }\n const preset = PRESETS[value];\n if (!preset) {\n this.error(\"unsupported preset: '\" + value + \"' - supported values are \" + Object.keys(PRESETS).join(\", \"));\n return;\n }\n this.edgeColor = preset.edgeColor;\n this.edgeAlpha = preset.edgeAlpha;\n this.edgeWidth = preset.edgeWidth;\n this._preset = value;\n }\n\n /**\n * The current preset EdgeMaterial configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n get preset() {\n return this._preset;\n }\n\n /**\n * Destroys this EdgeMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {EdgeMaterial};", @@ -79516,7 +80044,7 @@ "lineNumber": 1 }, { - "__docId__": 3960, + "__docId__": 3978, "kind": "variable", "name": "PRESETS", "memberof": "src/viewer/scene/materials/EdgeMaterial.js", @@ -79537,7 +80065,7 @@ "ignore": true }, { - "__docId__": 3961, + "__docId__": 3979, "kind": "class", "name": "EdgeMaterial", "memberof": "src/viewer/scene/materials/EdgeMaterial.js", @@ -79555,7 +80083,7 @@ ] }, { - "__docId__": 3962, + "__docId__": 3980, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79574,7 +80102,7 @@ } }, { - "__docId__": 3963, + "__docId__": 3981, "kind": "get", "name": "presets", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79595,7 +80123,7 @@ } }, { - "__docId__": 3964, + "__docId__": 3982, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79696,7 +80224,7 @@ ] }, { - "__docId__": 3965, + "__docId__": 3983, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79714,7 +80242,7 @@ } }, { - "__docId__": 3966, + "__docId__": 3984, "kind": "member", "name": "_preset", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79732,7 +80260,7 @@ } }, { - "__docId__": 3975, + "__docId__": 3993, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79753,7 +80281,7 @@ } }, { - "__docId__": 3976, + "__docId__": 3994, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79774,7 +80302,7 @@ } }, { - "__docId__": 3977, + "__docId__": 3995, "kind": "set", "name": "edgeColor", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79795,7 +80323,7 @@ } }, { - "__docId__": 3978, + "__docId__": 3996, "kind": "get", "name": "edgeColor", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79816,7 +80344,7 @@ } }, { - "__docId__": 3979, + "__docId__": 3997, "kind": "set", "name": "edgeAlpha", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79837,7 +80365,7 @@ } }, { - "__docId__": 3980, + "__docId__": 3998, "kind": "get", "name": "edgeAlpha", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79858,7 +80386,7 @@ } }, { - "__docId__": 3981, + "__docId__": 3999, "kind": "set", "name": "edgeWidth", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79879,7 +80407,7 @@ } }, { - "__docId__": 3982, + "__docId__": 4000, "kind": "get", "name": "edgeWidth", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79900,7 +80428,7 @@ } }, { - "__docId__": 3983, + "__docId__": 4001, "kind": "set", "name": "preset", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79921,7 +80449,7 @@ } }, { - "__docId__": 3988, + "__docId__": 4006, "kind": "get", "name": "preset", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79942,7 +80470,7 @@ } }, { - "__docId__": 3989, + "__docId__": 4007, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -79957,7 +80485,7 @@ "return": null }, { - "__docId__": 3990, + "__docId__": 4008, "kind": "file", "name": "src/viewer/scene/materials/EmphasisMaterial.js", "content": "import {Material} from './Material.js';\nimport {RenderState} from '../webgl/RenderState.js';\n\nconst PRESETS = {\n \"default\": {\n fill: true,\n fillColor: [0.4, 0.4, 0.4],\n fillAlpha: 0.2,\n edges: true,\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 0.5,\n edgeWidth: 1\n },\n \"defaultWhiteBG\": {\n fill: true,\n fillColor: [1, 1, 1],\n fillAlpha: 0.6,\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"defaultLightBG\": {\n fill: true,\n fillColor: [0.4, 0.4, 0.4],\n fillAlpha: 0.2,\n edges: true,\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 0.5,\n edgeWidth: 1\n },\n \"defaultDarkBG\": {\n fill: true,\n fillColor: [0.4, 0.4, 0.4],\n fillAlpha: 0.2,\n edges: true,\n edgeColor: [0.5, 0.5, 0.5],\n edgeAlpha: 0.5,\n edgeWidth: 1\n },\n \"phosphorous\": {\n fill: true,\n fillColor: [0.0, 0.0, 0.0],\n fillAlpha: 0.4,\n edges: true,\n edgeColor: [0.9, 0.9, 0.9],\n edgeAlpha: 0.5,\n edgeWidth: 2\n },\n \"sunset\": {\n fill: true,\n fillColor: [0.9, 0.9, 0.6],\n fillAlpha: 0.2,\n edges: true,\n edgeColor: [0.9, 0.9, 0.9],\n edgeAlpha: 0.5,\n edgeWidth: 1\n },\n \"vectorscope\": {\n fill: true,\n fillColor: [0.0, 0.0, 0.0],\n fillAlpha: 0.7,\n edges: true,\n edgeColor: [0.2, 1.0, 0.2],\n edgeAlpha: 1,\n edgeWidth: 2\n },\n \"battlezone\": {\n fill: true,\n fillColor: [0.0, 0.0, 0.0],\n fillAlpha: 1.0,\n edges: true,\n edgeColor: [0.2, 1.0, 0.2],\n edgeAlpha: 1,\n edgeWidth: 3\n },\n \"sepia\": {\n fill: true,\n fillColor: [0.970588207244873, 0.7965892553329468, 0.6660899519920349],\n fillAlpha: 0.4,\n edges: true,\n edgeColor: [0.529411792755127, 0.4577854573726654, 0.4100345969200134],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"yellowHighlight\": {\n fill: true,\n fillColor: [1.0, 1.0, 0.0],\n fillAlpha: 0.5,\n edges: true,\n edgeColor: [1.0, 1.0, 1.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"greenSelected\": {\n fill: true,\n fillColor: [0.0, 1.0, 0.0],\n fillAlpha: 0.5,\n edges: true,\n edgeColor: [1.0, 1.0, 1.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"gamegrid\": {\n fill: true,\n fillColor: [0.2, 0.2, 0.7],\n fillAlpha: 0.9,\n edges: true,\n edgeColor: [0.4, 0.4, 1.6],\n edgeAlpha: 0.8,\n edgeWidth: 3\n }\n};\n\n/**\n * Configures the appearance of {@link Entity}s when they are xrayed, highlighted or selected.\n *\n * * XRay an {@link Entity} by setting {@link Entity#xrayed} ````true````.\n * * Highlight an {@link Entity} by setting {@link Entity#highlighted} ````true````.\n * * Select an {@link Entity} by setting {@link Entity#selected} ````true````.\n * * When {@link Entity}s are within the subtree of a root {@link Entity}, then setting {@link Entity#xrayed}, {@link Entity#highlighted} or {@link Entity#selected}\n * on the root will collectively set those properties on all sub-{@link Entity}s.\n * * EmphasisMaterial provides several presets. Select a preset by setting {@link EmphasisMaterial#preset} to the ID of a preset in {@link EmphasisMaterial#presets}.\n * * By default, a {@link Mesh} uses the default EmphasisMaterials in {@link Scene#xrayMaterial}, {@link Scene#highlightMaterial} and {@link Scene#selectedMaterial}\n * but you can assign each {@link Mesh#xrayMaterial}, {@link Mesh#highlightMaterial} or {@link Mesh#selectedMaterial} to a custom EmphasisMaterial, if required.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Mesh} with its own XRayMaterial and set {@link Mesh#xrayed} ````true```` to xray it.\n *\n * Recall that {@link Mesh} is a concrete subtype of the abstract {@link Entity} base class.\n *\n * ````javascript\n * new Mesh(viewer.scene, {\n * geometry: new BoxGeometry(viewer.scene, {\n * edgeThreshold: 1\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.2, 0.2, 1.0]\n * }),\n * xrayMaterial: new EmphasisMaterial(viewer.scene, {\n * fill: true,\n * fillColor: [0, 0, 0],\n * fillAlpha: 0.7,\n * edges: true,\n * edgeColor: [0.2, 1.0, 0.2],\n * edgeAlpha: 1.0,\n * edgeWidth: 2\n * }),\n * xrayed: true\n * });\n * ````\n *\n * Note the ````edgeThreshold```` configuration for the {@link ReadableGeometry} on our {@link Mesh}. EmphasisMaterial configures\n * a wireframe representation of the {@link ReadableGeometry} for the selected emphasis mode, which will have inner edges (those edges between\n * adjacent co-planar triangles) removed for visual clarity. The ````edgeThreshold```` indicates that, for\n * this particular {@link ReadableGeometry}, an inner edge is one where the angle between the surface normals of adjacent triangles\n * is not greater than ````5```` degrees. That's set to ````2```` by default, but we can override it to tweak the effect\n * as needed for particular Geometries.\n *\n * Here's the example again, this time implicitly defaulting to the {@link Scene#edgeMaterial}. We'll also modify that EdgeMaterial\n * to customize the effect.\n *\n * ````javascript\n * new Mesh({\n * geometry: new TeapotGeometry(viewer.scene, {\n * edgeThreshold: 5\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.2, 0.2, 1.0]\n * }),\n * xrayed: true\n * });\n *\n * var xrayMaterial = viewer.scene.xrayMaterial;\n *\n * xrayMaterial.fillColor = [0.2, 1.0, 0.2];\n * xrayMaterial.fillAlpha = 1.0;\n * ````\n *\n * ## Presets\n *\n * Let's switch the {@link Scene#xrayMaterial} to one of the presets in {@link EmphasisMaterial#presets}:\n *\n * ````javascript\n * viewer.xrayMaterial.preset = EmphasisMaterial.presets[\"sepia\"];\n * ````\n *\n * We can also create an EmphasisMaterial from a preset, while overriding properties of the preset as required:\n *\n * ````javascript\n * var myEmphasisMaterial = new EMphasisMaterial(viewer.scene, {\n * preset: \"sepia\",\n * fillColor = [1.0, 0.5, 0.5]\n * });\n * ````\n */\nclass EmphasisMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"EmphasisMaterial\";\n }\n\n /**\n * Gets available EmphasisMaterial presets.\n *\n * @type {Object}\n */\n get presets() {\n return PRESETS;\n };\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The EmphasisMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Boolean} [cfg.fill=true] Indicates if xray surfaces are filled with color.\n * @param {Number[]} [cfg.fillColor=[0.4,0.4,0.4]] EmphasisMaterial fill color.\n * @param {Number} [cfg.fillAlpha=0.2] Transparency of filled xray faces. A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n * @param {Boolean} [cfg.edges=true] Indicates if xray edges are visible.\n * @param {Number[]} [cfg.edgeColor=[0.2,0.2,0.2]] RGB color of xray edges.\n * @param {Number} [cfg.edgeAlpha=0.5] Transparency of xray edges. A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n * @param {Number} [cfg.edgeWidth=1] Width of xray edges, in pixels.\n * @param {String} [cfg.preset] Selects a preset EmphasisMaterial configuration - see {@link EmphasisMaterial#presets}.\n * @param {Boolean} [cfg.backfaces=false] Whether to render geometry backfaces when emphasising.\n * @param {Boolean} [cfg.glowThrough=true] Whether to make the emphasized object appear to float on top of other objects, as if it were \"glowing through\" them.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"EmphasisMaterial\",\n fill: null,\n fillColor: null,\n fillAlpha: null,\n edges: null,\n edgeColor: null,\n edgeAlpha: null,\n edgeWidth: null,\n backfaces: true,\n glowThrough: true\n });\n\n this._preset = \"default\";\n\n if (cfg.preset) { // Apply preset then override with configs where provided\n this.preset = cfg.preset;\n if (cfg.fill !== undefined) {\n this.fill = cfg.fill;\n }\n if (cfg.fillColor) {\n this.fillColor = cfg.fillColor;\n }\n if (cfg.fillAlpha !== undefined) {\n this.fillAlpha = cfg.fillAlpha;\n }\n if (cfg.edges !== undefined) {\n this.edges = cfg.edges;\n }\n if (cfg.edgeColor) {\n this.edgeColor = cfg.edgeColor;\n }\n if (cfg.edgeAlpha !== undefined) {\n this.edgeAlpha = cfg.edgeAlpha;\n }\n if (cfg.edgeWidth !== undefined) {\n this.edgeWidth = cfg.edgeWidth;\n }\n if (cfg.backfaces !== undefined) {\n this.backfaces = cfg.backfaces;\n }\n if (cfg.glowThrough !== undefined) {\n this.glowThrough = cfg.glowThrough;\n }\n } else {\n this.fill = cfg.fill;\n this.fillColor = cfg.fillColor;\n this.fillAlpha = cfg.fillAlpha;\n this.edges = cfg.edges;\n this.edgeColor = cfg.edgeColor;\n this.edgeAlpha = cfg.edgeAlpha;\n this.edgeWidth = cfg.edgeWidth;\n this.backfaces = cfg.backfaces;\n this.glowThrough = cfg.glowThrough;\n }\n }\n\n /**\n * Sets if surfaces are filled with color.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set fill(value) {\n value = value !== false;\n if (this._state.fill === value) {\n return;\n }\n this._state.fill = value;\n this.glRedraw();\n }\n\n /**\n * Gets if surfaces are filled with color.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get fill() {\n return this._state.fill;\n }\n\n /**\n * Sets the RGB color of filled faces.\n *\n * Default is ````[0.4, 0.4, 0.4]````.\n *\n * @type {Number[]}\n */\n set fillColor(value) {\n let fillColor = this._state.fillColor;\n if (!fillColor) {\n fillColor = this._state.fillColor = new Float32Array(3);\n } else if (value && fillColor[0] === value[0] && fillColor[1] === value[1] && fillColor[2] === value[2]) {\n return;\n }\n if (value) {\n fillColor[0] = value[0];\n fillColor[1] = value[1];\n fillColor[2] = value[2];\n } else {\n fillColor[0] = 0.4;\n fillColor[1] = 0.4;\n fillColor[2] = 0.4;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of filled faces.\n *\n * Default is ````[0.4, 0.4, 0.4]````.\n *\n * @type {Number[]}\n */\n get fillColor() {\n return this._state.fillColor;\n }\n\n /**\n * Sets the transparency of filled faces.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default is ````0.2````.\n *\n * @type {Number}\n */\n set fillAlpha(value) {\n value = (value !== undefined && value !== null) ? value : 0.2;\n if (this._state.fillAlpha === value) {\n return;\n }\n this._state.fillAlpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets the transparency of filled faces.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default is ````0.2````.\n *\n * @type {Number}\n */\n get fillAlpha() {\n return this._state.fillAlpha;\n }\n\n /**\n * Sets if edges are visible.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set edges(value) {\n value = value !== false;\n if (this._state.edges === value) {\n return;\n }\n this._state.edges = value;\n this.glRedraw();\n }\n\n /**\n * Gets if edges are visible.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._state.edges;\n }\n\n /**\n * Sets the RGB color of edges.\n *\n * Default is ```` [0.2, 0.2, 0.2]````.\n *\n * @type {Number[]}\n */\n set edgeColor(value) {\n let edgeColor = this._state.edgeColor;\n if (!edgeColor) {\n edgeColor = this._state.edgeColor = new Float32Array(3);\n } else if (value && edgeColor[0] === value[0] && edgeColor[1] === value[1] && edgeColor[2] === value[2]) {\n return;\n }\n if (value) {\n edgeColor[0] = value[0];\n edgeColor[1] = value[1];\n edgeColor[2] = value[2];\n } else {\n edgeColor[0] = 0.2;\n edgeColor[1] = 0.2;\n edgeColor[2] = 0.2;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of edges.\n *\n * Default is ```` [0.2, 0.2, 0.2]````.\n *\n * @type {Number[]}\n */\n get edgeColor() {\n return this._state.edgeColor;\n }\n\n /**\n * Sets the transparency of edges.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default is ````0.2````.\n *\n * @type {Number}\n */\n set edgeAlpha(value) {\n value = (value !== undefined && value !== null) ? value : 0.5;\n if (this._state.edgeAlpha === value) {\n return;\n }\n this._state.edgeAlpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets the transparency of edges.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default is ````0.2````.\n *\n * @type {Number}\n */\n get edgeAlpha() {\n return this._state.edgeAlpha;\n }\n\n /**\n * Sets edge width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n set edgeWidth(value) {\n this._state.edgeWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets edge width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n get edgeWidth() {\n return this._state.edgeWidth;\n }\n\n /**\n * Sets whether to render backfaces when {@link EmphasisMaterial#fill} is ````true````.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether to render backfaces when {@link EmphasisMaterial#fill} is ````true````.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets whether to render emphasized objects over the top of other objects, as if they were \"glowing through\".\n *\n * Default is ````true````.\n *\n * Note: updating this property will not affect the appearance of objects that are already emphasized.\n *\n * @type {Boolean}\n */\n set glowThrough(value) {\n value = (value !== false);\n if (this._state.glowThrough === value) {\n return;\n }\n this._state.glowThrough = value;\n this.glRedraw();\n }\n\n /**\n * Sets whether to render emphasized objects over the top of other objects, as if they were \"glowing through\".\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get glowThrough() {\n return this._state.glowThrough;\n }\n\n /**\n * Selects a preset EmphasisMaterial configuration.\n *\n * Default value is \"default\".\n *\n * @type {String}\n */\n set preset(value) {\n value = value || \"default\";\n if (this._preset === value) {\n return;\n }\n const preset = PRESETS[value];\n if (!preset) {\n this.error(\"unsupported preset: '\" + value + \"' - supported values are \" + Object.keys(PRESETS).join(\", \"));\n return;\n }\n this.fill = preset.fill;\n this.fillColor = preset.fillColor;\n this.fillAlpha = preset.fillAlpha;\n this.edges = preset.edges;\n this.edgeColor = preset.edgeColor;\n this.edgeAlpha = preset.edgeAlpha;\n this.edgeWidth = preset.edgeWidth;\n this.glowThrough = preset.glowThrough;\n this._preset = value;\n }\n\n /**\n * Gets the current preset EmphasisMaterial configuration.\n *\n * Default value is \"default\".\n *\n * @type {String}\n */\n get preset() {\n return this._preset;\n }\n\n /**\n * Destroys this EmphasisMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {EmphasisMaterial};\n", @@ -79968,7 +80496,7 @@ "lineNumber": 1 }, { - "__docId__": 3991, + "__docId__": 4009, "kind": "variable", "name": "PRESETS", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js", @@ -79989,7 +80517,7 @@ "ignore": true }, { - "__docId__": 3992, + "__docId__": 4010, "kind": "class", "name": "EmphasisMaterial", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js", @@ -80007,7 +80535,7 @@ ] }, { - "__docId__": 3993, + "__docId__": 4011, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80026,7 +80554,7 @@ } }, { - "__docId__": 3994, + "__docId__": 4012, "kind": "get", "name": "presets", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80047,7 +80575,7 @@ } }, { - "__docId__": 3995, + "__docId__": 4013, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80224,7 +80752,7 @@ ] }, { - "__docId__": 3996, + "__docId__": 4014, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80242,7 +80770,7 @@ } }, { - "__docId__": 3997, + "__docId__": 4015, "kind": "member", "name": "_preset", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80260,7 +80788,7 @@ } }, { - "__docId__": 4017, + "__docId__": 4035, "kind": "set", "name": "fill", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80281,7 +80809,7 @@ } }, { - "__docId__": 4018, + "__docId__": 4036, "kind": "get", "name": "fill", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80302,7 +80830,7 @@ } }, { - "__docId__": 4019, + "__docId__": 4037, "kind": "set", "name": "fillColor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80323,7 +80851,7 @@ } }, { - "__docId__": 4020, + "__docId__": 4038, "kind": "get", "name": "fillColor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80344,7 +80872,7 @@ } }, { - "__docId__": 4021, + "__docId__": 4039, "kind": "set", "name": "fillAlpha", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80365,7 +80893,7 @@ } }, { - "__docId__": 4022, + "__docId__": 4040, "kind": "get", "name": "fillAlpha", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80386,7 +80914,7 @@ } }, { - "__docId__": 4023, + "__docId__": 4041, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80407,7 +80935,7 @@ } }, { - "__docId__": 4024, + "__docId__": 4042, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80428,7 +80956,7 @@ } }, { - "__docId__": 4025, + "__docId__": 4043, "kind": "set", "name": "edgeColor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80449,7 +80977,7 @@ } }, { - "__docId__": 4026, + "__docId__": 4044, "kind": "get", "name": "edgeColor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80470,7 +80998,7 @@ } }, { - "__docId__": 4027, + "__docId__": 4045, "kind": "set", "name": "edgeAlpha", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80491,7 +81019,7 @@ } }, { - "__docId__": 4028, + "__docId__": 4046, "kind": "get", "name": "edgeAlpha", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80512,7 +81040,7 @@ } }, { - "__docId__": 4029, + "__docId__": 4047, "kind": "set", "name": "edgeWidth", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80533,7 +81061,7 @@ } }, { - "__docId__": 4030, + "__docId__": 4048, "kind": "get", "name": "edgeWidth", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80554,7 +81082,7 @@ } }, { - "__docId__": 4031, + "__docId__": 4049, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80575,7 +81103,7 @@ } }, { - "__docId__": 4032, + "__docId__": 4050, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80596,7 +81124,7 @@ } }, { - "__docId__": 4033, + "__docId__": 4051, "kind": "set", "name": "glowThrough", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80617,7 +81145,7 @@ } }, { - "__docId__": 4034, + "__docId__": 4052, "kind": "get", "name": "glowThrough", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80638,7 +81166,7 @@ } }, { - "__docId__": 4035, + "__docId__": 4053, "kind": "set", "name": "preset", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80659,7 +81187,7 @@ } }, { - "__docId__": 4045, + "__docId__": 4063, "kind": "get", "name": "preset", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80680,7 +81208,7 @@ } }, { - "__docId__": 4046, + "__docId__": 4064, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -80695,7 +81223,7 @@ "return": null }, { - "__docId__": 4047, + "__docId__": 4065, "kind": "file", "name": "src/viewer/scene/materials/Fresnel.js", "content": "import {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {math} from '../math/math.js';\n\n/**\n * @desc Configures Fresnel effects for {@link PhongMaterial}s.\n *\n * Fresnels are attached to {@link PhongMaterial}s, which are attached to {@link Mesh}es.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a {@link PhongMaterial} that applies a Fresnel to its alpha channel to give a glasss-like effect.\n *\n * [[Run this example](/examples/index.html#materials_Fresnel)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildTorusGeometry,\n * ReadableGeometry, PhongMaterial, Texture, Fresnel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * alpha: 0.9,\n * alphaMode: \"blend\",\n * ambient: [0.0, 0.0, 0.0],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * alphaFresnel: new Fresnel(viewer.scene, {\nv edgeBias: 0.2,\n * centerBias: 0.8,\n * edgeColor: [1.0, 1.0, 1.0],\n * centerColor: [0.0, 0.0, 0.0],\n * power: 2\n * })\n * })\n * });\n * ````\n */\nclass Fresnel extends Component {\n\n /**\n * JavaScript class name for this Component.\n *\n * @type {String}\n */\n get type() {\n return \"Fresnel\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this Fresnel as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Number[]} [cfg.edgeColor=[ 0.0, 0.0, 0.0 ]] Color used on edges.\n * @param {Number[]} [cfg.centerColor=[ 1.0, 1.0, 1.0 ]] Color used on center.\n * @param {Number} [cfg.edgeBias=0] Bias at the edge.\n * @param {Number} [cfg.centerBias=1] Bias at the center.\n * @param {Number} [cfg.power=0] The power.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n edgeColor: math.vec3([0, 0, 0]),\n centerColor: math.vec3([1, 1, 1]),\n edgeBias: 0,\n centerBias: 1,\n power: 1\n });\n\n this.edgeColor = cfg.edgeColor;\n this.centerColor = cfg.centerColor;\n this.edgeBias = cfg.edgeBias;\n this.centerBias = cfg.centerBias;\n this.power = cfg.power;\n }\n\n /**\n * Sets the Fresnel's edge color.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n set edgeColor(value) {\n this._state.edgeColor.set(value || [0.0, 0.0, 0.0]);\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's edge color.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n get edgeColor() {\n return this._state.edgeColor;\n }\n\n /**\n * Sets the Fresnel's center color.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n set centerColor(value) {\n this._state.centerColor.set(value || [1.0, 1.0, 1.0]);\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's center color.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n get centerColor() {\n return this._state.centerColor;\n }\n\n /**\n * Sets the Fresnel's edge bias.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n set edgeBias(value) {\n this._state.edgeBias = value || 0;\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's edge bias.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n get edgeBias() {\n return this._state.edgeBias;\n }\n\n /**\n * Sets the Fresnel's center bias.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set centerBias(value) {\n this._state.centerBias = (value !== undefined && value !== null) ? value : 1;\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's center bias.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get centerBias() {\n return this._state.centerBias;\n }\n\n /**\n * Sets the Fresnel's power.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set power(value) {\n this._state.power = (value !== undefined && value !== null) ? value : 1;\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's power.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get power() {\n return this._state.power;\n }\n\n /**\n * Destroys this Fresnel.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {Fresnel};", @@ -80706,7 +81234,7 @@ "lineNumber": 1 }, { - "__docId__": 4048, + "__docId__": 4066, "kind": "class", "name": "Fresnel", "memberof": "src/viewer/scene/materials/Fresnel.js", @@ -80724,7 +81252,7 @@ ] }, { - "__docId__": 4049, + "__docId__": 4067, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -80745,7 +81273,7 @@ } }, { - "__docId__": 4050, + "__docId__": 4068, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -80864,7 +81392,7 @@ ] }, { - "__docId__": 4051, + "__docId__": 4069, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -80882,7 +81410,7 @@ } }, { - "__docId__": 4057, + "__docId__": 4075, "kind": "set", "name": "edgeColor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -80903,7 +81431,7 @@ } }, { - "__docId__": 4058, + "__docId__": 4076, "kind": "get", "name": "edgeColor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -80924,7 +81452,7 @@ } }, { - "__docId__": 4059, + "__docId__": 4077, "kind": "set", "name": "centerColor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -80945,7 +81473,7 @@ } }, { - "__docId__": 4060, + "__docId__": 4078, "kind": "get", "name": "centerColor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -80966,7 +81494,7 @@ } }, { - "__docId__": 4061, + "__docId__": 4079, "kind": "set", "name": "edgeBias", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -80987,7 +81515,7 @@ } }, { - "__docId__": 4062, + "__docId__": 4080, "kind": "get", "name": "edgeBias", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -81008,7 +81536,7 @@ } }, { - "__docId__": 4063, + "__docId__": 4081, "kind": "set", "name": "centerBias", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -81029,7 +81557,7 @@ } }, { - "__docId__": 4064, + "__docId__": 4082, "kind": "get", "name": "centerBias", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -81050,7 +81578,7 @@ } }, { - "__docId__": 4065, + "__docId__": 4083, "kind": "set", "name": "power", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -81071,7 +81599,7 @@ } }, { - "__docId__": 4066, + "__docId__": 4084, "kind": "get", "name": "power", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -81092,7 +81620,7 @@ } }, { - "__docId__": 4067, + "__docId__": 4085, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -81107,7 +81635,7 @@ "return": null }, { - "__docId__": 4068, + "__docId__": 4086, "kind": "file", "name": "src/viewer/scene/materials/LambertMaterial.js", "content": "import {Material} from './Material.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {math} from '../math/math.js';\n\n/**\n * @desc Configures the normal rendered appearance of {@link Mesh}es using the non-realistic but GPU-efficient Lambertian flat shading model for calculating reflectance.\n *\n * * Useful for efficiently rendering non-realistic objects for high-detail CAD.\n * * Use {@link PhongMaterial} when you need specular highlights.\n * * Use the physically-based {@link MetallicMaterial} or {@link SpecularMaterial} when you need more realism.\n * * For LambertMaterial, the illumination calculation is performed at each triangle vertex, and the resulting color is interpolated across the face of the triangle. For {@link PhongMaterial}, {@link MetallicMaterial} and\n * {@link SpecularMaterial}, vertex normals are interpolated across the surface of the triangle, and the illumination calculation is performed at each texel.\n *\n * ## Usage\n *\n * [[Run this example](/examples/index.html#materials_LambertMaterial)]\n *\n * In the example below we'll create a {@link Mesh} with a shape defined by a {@link buildTorusGeometry} and normal rendering appearance configured with a LambertMaterial.\n *\n * ```` javascript\n * import {Viewer, Mesh, buildTorusGeometry, ReadableGeometry, LambertMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 12,\n * tubeSegments: 8,\n * arc: Math.PI * 2.0\n * }),\n * material: new LambertMaterial(viewer.scene, {\n * ambient: [0.3, 0.3, 0.3],\n * color: [0.5, 0.5, 0.0],\n * alpha: 1.0, // Default\n * lineWidth: 1,\n * pointSize: 1,\n * backfaces: false,\n * frontFace: \"ccw\"\n * })\n * });\n * ````\n *\n * ## LambertMaterial Properties\n *\n * The following table summarizes LambertMaterial properties:\n *\n * | Property | Type | Range | Default Value | Space | Description |\n * |:--------:|:----:|:-----:|:-------------:|:-----:|:-----------:|\n * | {@link LambertMaterial#ambient} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the ambient light reflected by the material. |\n * | {@link LambertMaterial#color} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the diffuse light reflected by the material. |\n * | {@link LambertMaterial#emissive} | Array | [0, 1] for all components | [0,0,0] | linear | The RGB components of the light emitted by the material. |\n * | {@link LambertMaterial#alpha} | Number | [0, 1] | 1 | linear | The transparency of the material surface (0 fully transparent, 1 fully opaque). |\n * | {@link LambertMaterial#lineWidth} | Number | [0..100] | 1 | | Line width in pixels. |\n * | {@link LambertMaterial#pointSize} | Number | [0..100] | 1 | | Point size in pixels. |\n * | {@link LambertMaterial#backfaces} | Boolean | | false | | Whether to render {@link Geometry} backfaces. |\n * | {@link LambertMaterial#frontface} | String | \"ccw\", \"cw\" | \"ccw\" | | The winding order for {@link Geometry} frontfaces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise. |\n *\n */\nclass LambertMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"LambertMaterial\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The LambertMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {String:Object} [cfg.meta=null] Metadata to attach to this LambertMaterial.\n * @param {Number[]} [cfg.ambient=[1.0, 1.0, 1.0 ]] LambertMaterial ambient color.\n * @param {Number[]} [cfg.color=[ 1.0, 1.0, 1.0 ]] LambertMaterial diffuse color.\n * @param {Number[]} [cfg.emissive=[ 0.0, 0.0, 0.0 ]] LambertMaterial emissive color.\n * @param {Number} [cfg.alpha=1]Scalar in range 0-1 that controls alpha, where 0 is completely transparent and 1 is completely opaque.\n * @param {Number} [cfg.reflectivity=1]Scalar in range 0-1 that controls how much {@link ReflectionMap} is reflected.\n * @param {Number} [cfg.lineWidth=1] Scalar that controls the width of {@link Geometry} lines.\n * @param {Number} [cfg.pointSize=1] Scalar that controls the size of points for {@link Geometry} with {@link Geometry#primitive} set to \"points\".\n * @param {Boolean} [cfg.backfaces=false] Whether to render {@link Geometry} backfaces.\n * @param {Boolean} [cfg.frontface=\"ccw\"] The winding order for {@link Geometry} front faces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"LambertMaterial\",\n ambient: math.vec3([1.0, 1.0, 1.0]),\n color: math.vec3([1.0, 1.0, 1.0]),\n emissive: math.vec3([0.0, 0.0, 0.0]),\n alpha: null,\n alphaMode: 0, // 2 (\"blend\") when transparent, so renderer knows when to add to transparency bin\n lineWidth: null,\n pointSize: null,\n backfaces: null,\n frontface: null, // Boolean for speed; true == \"ccw\", false == \"cw\"\n hash: \"/lam;\"\n });\n\n this.ambient = cfg.ambient;\n this.color = cfg.color;\n this.emissive = cfg.emissive;\n this.alpha = cfg.alpha;\n this.lineWidth = cfg.lineWidth;\n this.pointSize = cfg.pointSize;\n this.backfaces = cfg.backfaces;\n this.frontface = cfg.frontface;\n }\n\n /**\n * Sets the LambertMaterial's ambient color.\n *\n * Default value is ````[0.3, 0.3, 0.3]````.\n *\n * @type {Number[]}\n */\n set ambient(value) {\n let ambient = this._state.ambient;\n if (!ambient) {\n ambient = this._state.ambient = new Float32Array(3);\n } else if (value && ambient[0] === value[0] && ambient[1] === value[1] && ambient[2] === value[2]) {\n return;\n }\n if (value) {\n ambient[0] = value[0];\n ambient[1] = value[1];\n ambient[2] = value[2];\n } else {\n ambient[0] = .2;\n ambient[1] = .2;\n ambient[2] = .2;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's ambient color.\n *\n * Default value is ````[0.3, 0.3, 0.3]````.\n *\n * @type {Number[]}\n */\n get ambient() {\n return this._state.ambient;\n }\n\n /**\n * Sets the LambertMaterial's diffuse color.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n set color(value) {\n let color = this._state.color;\n if (!color) {\n color = this._state.color = new Float32Array(3);\n } else if (value && color[0] === value[0] && color[1] === value[1] && color[2] === value[2]) {\n return;\n }\n if (value) {\n color[0] = value[0];\n color[1] = value[1];\n color[2] = value[2];\n } else {\n color[0] = 1;\n color[1] = 1;\n color[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's diffuse color.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n get color() {\n return this._state.color;\n }\n\n /**\n * Sets the LambertMaterial's emissive color.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n set emissive(value) {\n let emissive = this._state.emissive;\n if (!emissive) {\n emissive = this._state.emissive = new Float32Array(3);\n } else if (value && emissive[0] === value[0] && emissive[1] === value[1] && emissive[2] === value[2]) {\n return;\n }\n if (value) {\n emissive[0] = value[0];\n emissive[1] = value[1];\n emissive[2] = value[2];\n } else {\n emissive[0] = 0;\n emissive[1] = 0;\n emissive[2] = 0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's emissive color.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n get emissive() {\n return this._state.emissive;\n }\n\n /**\n * Sets factor in the range ````[0..1]```` indicating how transparent the LambertMaterial is.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default value is ````1.0````\n *\n * @type {Number}\n */\n set alpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.alpha === value) {\n return;\n }\n this._state.alpha = value;\n this._state.alphaMode = value < 1.0 ? 2 /* blend */ : 0\n /* opaque */\n this.glRedraw();\n }\n\n /**\n * Gets factor in the range ````[0..1]```` indicating how transparent the LambertMaterial is.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default value is ````1.0````\n *\n * @type {Number}\n */\n get alpha() {\n return this._state.alpha;\n }\n\n /**\n * Sets the LambertMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Sets the LambertMaterial's point size.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's point size.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n /**\n * Sets whether backfaces are visible on attached {@link Mesh}es.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether backfaces are visible on attached {@link Mesh}es.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * Default value is ````\"ccw\"````.\n *\n * @type {String}\n */\n set frontface(value) {\n value = value !== \"cw\";\n if (this._state.frontface === value) {\n return;\n }\n this._state.frontface = value;\n this.glRedraw();\n }\n\n /**\n * Gets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * Default value is ````\"ccw\"````.\n *\n * @type {String}\n */\n get frontface() {\n return this._state.frontface ? \"ccw\" : \"cw\";\n }\n\n _getState() {\n return this._state;\n }\n\n /**\n * Destroys this LambertMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {LambertMaterial};", @@ -81118,7 +81646,7 @@ "lineNumber": 1 }, { - "__docId__": 4069, + "__docId__": 4087, "kind": "class", "name": "LambertMaterial", "memberof": "src/viewer/scene/materials/LambertMaterial.js", @@ -81136,7 +81664,7 @@ ] }, { - "__docId__": 4070, + "__docId__": 4088, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81155,7 +81683,7 @@ } }, { - "__docId__": 4071, + "__docId__": 4089, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81338,7 +81866,7 @@ ] }, { - "__docId__": 4072, + "__docId__": 4090, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81356,7 +81884,7 @@ } }, { - "__docId__": 4081, + "__docId__": 4099, "kind": "set", "name": "ambient", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81377,7 +81905,7 @@ } }, { - "__docId__": 4082, + "__docId__": 4100, "kind": "get", "name": "ambient", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81398,7 +81926,7 @@ } }, { - "__docId__": 4083, + "__docId__": 4101, "kind": "set", "name": "color", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81419,7 +81947,7 @@ } }, { - "__docId__": 4084, + "__docId__": 4102, "kind": "get", "name": "color", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81440,7 +81968,7 @@ } }, { - "__docId__": 4085, + "__docId__": 4103, "kind": "set", "name": "emissive", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81461,7 +81989,7 @@ } }, { - "__docId__": 4086, + "__docId__": 4104, "kind": "get", "name": "emissive", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81482,7 +82010,7 @@ } }, { - "__docId__": 4087, + "__docId__": 4105, "kind": "set", "name": "alpha", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81503,7 +82031,7 @@ } }, { - "__docId__": 4088, + "__docId__": 4106, "kind": "get", "name": "alpha", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81524,7 +82052,7 @@ } }, { - "__docId__": 4089, + "__docId__": 4107, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81545,7 +82073,7 @@ } }, { - "__docId__": 4090, + "__docId__": 4108, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81566,7 +82094,7 @@ } }, { - "__docId__": 4091, + "__docId__": 4109, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81587,7 +82115,7 @@ } }, { - "__docId__": 4092, + "__docId__": 4110, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81608,7 +82136,7 @@ } }, { - "__docId__": 4093, + "__docId__": 4111, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81629,7 +82157,7 @@ } }, { - "__docId__": 4094, + "__docId__": 4112, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81650,7 +82178,7 @@ } }, { - "__docId__": 4095, + "__docId__": 4113, "kind": "set", "name": "frontface", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81671,7 +82199,7 @@ } }, { - "__docId__": 4096, + "__docId__": 4114, "kind": "get", "name": "frontface", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81692,7 +82220,7 @@ } }, { - "__docId__": 4097, + "__docId__": 4115, "kind": "method", "name": "_getState", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81713,7 +82241,7 @@ } }, { - "__docId__": 4098, + "__docId__": 4116, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -81728,7 +82256,7 @@ "return": null }, { - "__docId__": 4099, + "__docId__": 4117, "kind": "file", "name": "src/viewer/scene/materials/LinesMaterial.js", "content": "import {Material} from './Material.js';\nimport {RenderState} from '../webgl/RenderState.js';\n\nconst PRESETS = {\n \"default\": {\n lineWidth: 1\n },\n \"thick\": {\n lineWidth: 2\n },\n \"thicker\": {\n lineWidth: 4\n }\n};\n\n/**\n * @desc Configures the shape of \"lines\" geometry primitives.\n *\n * * Located at {@link Scene#linesMaterial}.\n * * Globally configures \"lines\" primitives for all {@link VBOSceneModel}s.\n *\n * ## Usage\n *\n * In the example below, we'll customize the {@link Scene}'s global ````LinesMaterial````, then use\n * an {@link XKTLoaderPlugin} to load a model containing line segments.\n *\n * [[Run this example](/examples/index.html#materials_LinesMaterial)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * viewer.scene.linesMaterial.lineWidth = 3;\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Duplex.ifc.xkt\"\n * });\n * ````\n */\nclass LinesMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"LinesMaterial\";\n }\n\n /**\n * Gets available LinesMaterial presets.\n *\n * @type {Object}\n */\n get presets() {\n return PRESETS;\n };\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The LinesMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number} [cfg.lineWidth=1] Line width in pixels.\n * @param {String} [cfg.preset] Selects a preset LinesMaterial configuration - see {@link LinesMaterial#presets}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"LinesMaterial\",\n lineWidth: null\n });\n\n if (cfg.preset) { // Apply preset then override with configs where provided\n this.preset = cfg.preset;\n if (cfg.lineWidth !== undefined) {\n this.lineWidth = cfg.lineWidth;\n }\n } else {\n this._preset = \"default\";\n this.lineWidth = cfg.lineWidth;\n }\n }\n\n /**\n * Sets line width.\n *\n * Default value is ````1```` pixels.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1;\n this.glRedraw();\n }\n\n /**\n * Gets the line width.\n *\n * Default value is ````1```` pixels.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Selects a preset LinesMaterial configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n set preset(value) {\n value = value || \"default\";\n if (this._preset === value) {\n return;\n }\n const preset = PRESETS[value];\n if (!preset) {\n this.error(\"unsupported preset: '\" + value + \"' - supported values are \" + Object.keys(PRESETS).join(\", \"));\n return;\n }\n this.lineWidth = preset.lineWidth;\n this._preset = value;\n }\n\n /**\n * The current preset LinesMaterial configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n get preset() {\n return this._preset;\n }\n\n /**\n * @private\n * @return {string}\n */\n get hash() {\n return [\"\" + this.lineWidth].join((\";\"));\n }\n\n /**\n * Destroys this LinesMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {LinesMaterial};", @@ -81739,7 +82267,7 @@ "lineNumber": 1 }, { - "__docId__": 4100, + "__docId__": 4118, "kind": "variable", "name": "PRESETS", "memberof": "src/viewer/scene/materials/LinesMaterial.js", @@ -81760,7 +82288,7 @@ "ignore": true }, { - "__docId__": 4101, + "__docId__": 4119, "kind": "class", "name": "LinesMaterial", "memberof": "src/viewer/scene/materials/LinesMaterial.js", @@ -81778,7 +82306,7 @@ ] }, { - "__docId__": 4102, + "__docId__": 4120, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -81797,7 +82325,7 @@ } }, { - "__docId__": 4103, + "__docId__": 4121, "kind": "get", "name": "presets", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -81818,7 +82346,7 @@ } }, { - "__docId__": 4104, + "__docId__": 4122, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -81891,7 +82419,7 @@ ] }, { - "__docId__": 4105, + "__docId__": 4123, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -81909,7 +82437,7 @@ } }, { - "__docId__": 4108, + "__docId__": 4126, "kind": "member", "name": "_preset", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -81927,7 +82455,7 @@ } }, { - "__docId__": 4110, + "__docId__": 4128, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -81948,7 +82476,7 @@ } }, { - "__docId__": 4111, + "__docId__": 4129, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -81969,7 +82497,7 @@ } }, { - "__docId__": 4112, + "__docId__": 4130, "kind": "set", "name": "preset", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -81990,7 +82518,7 @@ } }, { - "__docId__": 4115, + "__docId__": 4133, "kind": "get", "name": "preset", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -82011,7 +82539,7 @@ } }, { - "__docId__": 4116, + "__docId__": 4134, "kind": "get", "name": "hash", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -82038,7 +82566,7 @@ } }, { - "__docId__": 4117, + "__docId__": 4135, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -82053,7 +82581,7 @@ "return": null }, { - "__docId__": 4118, + "__docId__": 4136, "kind": "file", "name": "src/viewer/scene/materials/Material.js", "content": "/**\n * @desc A **Material** defines the surface appearance of attached {@link Mesh}es.\n *\n * Material is the base class for:\n *\n * * {@link MetallicMaterial} - physically-based material for metallic surfaces. Use this one for things made of metal.\n * * {@link SpecularMaterial} - physically-based material for non-metallic (dielectric) surfaces. Use this one for insulators, such as ceramics, plastics, wood etc.\n * * {@link PhongMaterial} - material for classic Blinn-Phong shading. This is less demanding of graphics hardware than the physically-based materials.\n * * {@link LambertMaterial} - material for fast, flat-shaded CAD rendering without textures. Use this for navigating huge CAD or BIM models interactively. This material gives the best rendering performance and uses the least memory.\n * * {@link EmphasisMaterial} - defines the appearance of Meshes when \"xrayed\" or \"highlighted\".\n * * {@link EdgeMaterial} - defines the appearance of Meshes when edges are emphasized.\n *\n * A {@link Scene} is allowed to contain a mixture of these material types.\n *\n */\nimport {Component} from '../Component.js';\nimport {stats} from '../stats.js';\n\nclass Material extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Material\";\n }\n\n constructor(owner, cfg={}) {\n super(owner, cfg);\n stats.memory.materials++;\n }\n\n destroy() {\n super.destroy();\n stats.memory.materials--;\n }\n}\n\nexport {Material};\n", @@ -82064,7 +82592,7 @@ "lineNumber": 1 }, { - "__docId__": 4119, + "__docId__": 4137, "kind": "class", "name": "Material", "memberof": "src/viewer/scene/materials/Material.js", @@ -82083,7 +82611,7 @@ ] }, { - "__docId__": 4120, + "__docId__": 4138, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/Material.js~Material", @@ -82102,7 +82630,7 @@ } }, { - "__docId__": 4121, + "__docId__": 4139, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/Material.js~Material", @@ -82116,7 +82644,7 @@ "undocument": true }, { - "__docId__": 4122, + "__docId__": 4140, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/Material.js~Material", @@ -82132,7 +82660,7 @@ "return": null }, { - "__docId__": 4123, + "__docId__": 4141, "kind": "file", "name": "src/viewer/scene/materials/MetallicMaterial.js", "content": "import {Material} from './Material.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {math} from '../math/math.js';\n\nconst modes = {\"opaque\": 0, \"mask\": 1, \"blend\": 2};\nconst modeNames = [\"opaque\", \"mask\", \"blend\"];\n\n/**\n * @desc Configures the normal rendered appearance of {@link Mesh}es using the physically-accurate *metallic-roughness* shading model.\n *\n * * Useful for conductive materials, such as metal, but also appropriate for insulators.\n * * {@link SpecularMaterial} is best for insulators, such as wood, ceramics and plastic.\n * * {@link PhongMaterial} is appropriate for non-realistic objects.\n * * {@link LambertMaterial} is appropriate for high-detail models that need to render as efficiently as possible.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with {@link MetallicMaterial} and {@link ReadableGeometry} loaded from OBJ.\n *\n * Note that in this example we're providing separate {@link Texture} for the {@link MetallicMaterial#metallic} and {@link MetallicMaterial#roughness}\n * channels, which allows us a little creative flexibility. Then, in the next example further down, we'll combine those channels\n * within the same {@link Texture} for efficiency.\n *\n * [[Run this example](/examples/index.html#materials_MetallicMaterial)]\n *\n * ````javascript\n * import {Viewer, Mesh, loadOBJGeometry, ReadableGeometry, MetallicMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0.57, 1.37, 1.14];\n * viewer.scene.camera.look = [0.04, 0.58, 0.00];\n * viewer.scene.camera.up = [-0.22, 0.84, -0.48];\n *\n * loadOBJGeometry(viewer.scene, {\n * src: \"models/obj/fireHydrant/FireHydrantMesh.obj\"\n * })\n * .then(function (geometry) {\n *\n * // Success\n *\n * new Mesh(viewer.scene, {\n *\n * geometry: new ReadableGeometry(viewer.scene, geometry),\n *\n * material: new MetallicMaterial(viewer.scene, {\n *\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0,\n *\n * baseColorMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Base_Color.png\",\n * encoding: \"sRGB\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Normal_OpenGL.png\"\n * }),\n * roughnessMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Roughness.png\"\n * }),\n * metallicMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Metallic.png\"\n * }),\n * occlusionMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Mixed_AO.png\"\n * }),\n *\n * specularF0: 0.7\n * })\n * });\n * }, function () {\n * // Error\n * });\n * ````\n *\n * ## Background Theory\n *\n * For an introduction to physically-based rendering (PBR) concepts, try these articles:\n *\n * * Joe Wilson's [Basic Theory of Physically-Based Rendering](https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/)\n * * Jeff Russel's [Physically-based Rendering, and you can too!](https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/)\n * * Sebastien Legarde's [Adapting a physically-based shading model](http://seblagarde.wordpress.com/tag/physically-based-rendering/)\n *\n * ## MetallicMaterial Properties\n *\n * The following table summarizes MetallicMaterial properties:\n *\n * | Property | Type | Range | Default Value | Space | Description |\n * |:--------:|:----:|:-----:|:-------------:|:-----:|:-----------:|\n * | {@link MetallicMaterial#baseColor} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the base color of the material. |\n * | {@link MetallicMaterial#metallic} | Number | [0, 1] | 1 | linear | The metallic-ness the material (1 for metals, 0 for non-metals). |\n * | {@link MetallicMaterial#roughness} | Number | [0, 1] | 1 | linear | The roughness of the material surface. |\n * | {@link MetallicMaterial#specularF0} | Number | [0, 1] | 1 | linear | The specular Fresnel of the material surface. |\n * | {@link MetallicMaterial#emissive} | Array | [0, 1] for all components | [0,0,0] | linear | The RGB components of the emissive color of the material. |\n * | {@link MetallicMaterial#alpha} | Number | [0, 1] | 1 | linear | The transparency of the material surface (0 fully transparent, 1 fully opaque). |\n * | {@link MetallicMaterial#baseColorMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link MetallicMaterial#baseColor}. If the fourth component (A) is present, it multiplies by {@link MetallicMaterial#alpha}. |\n * | {@link MetallicMaterial#metallicMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link MetallicMaterial#metallic}. |\n * | {@link MetallicMaterial#roughnessMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link MetallicMaterial#roughness}. |\n * | {@link MetallicMaterial#metallicRoughnessMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link MetallicMaterial#metallic} and second component multiplying by {@link MetallicMaterial#roughness}. |\n * | {@link MetallicMaterial#emissiveMap} | {@link Texture} | | null | linear | Texture with RGB components multiplying by {@link MetallicMaterial#emissive}. |\n * | {@link MetallicMaterial#alphaMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link MetallicMaterial#alpha}. |\n * | {@link MetallicMaterial#occlusionMap} | {@link Texture} | | null | linear | Ambient occlusion texture multiplying by surface's reflected diffuse and specular light. |\n * | {@link MetallicMaterial#normalMap} | {@link Texture} | | null | linear | Tangent-space normal map. |\n * | {@link MetallicMaterial#alphaMode} | String | \"opaque\", \"blend\", \"mask\" | \"blend\" | | Alpha blend mode. |\n * | {@link MetallicMaterial#alphaCutoff} | Number | [0..1] | 0.5 | | Alpha cutoff value. |\n * | {@link MetallicMaterial#backfaces} | Boolean | | false | | Whether to render {@link ReadableGeometry} backfaces. |\n * | {@link MetallicMaterial#frontface} | String | \"ccw\", \"cw\" | \"ccw\" | | The winding order for {@link ReadableGeometry} frontfaces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise. |\n *\n *\n * ## Combining Channels Within the Same Textures\n *\n * In the previous example we provided separate {@link Texture} for the {@link MetallicMaterial#metallic} and\n * {@link MetallicMaterial#roughness} channels, but we can combine those channels into the same {@link Texture} to\n * reduce download time, memory footprint and rendering time (and also for glTF compatibility).\n *\n * Here's the {@link Mesh} again, with our MetallicMaterial with those channels combined in the {@link MetallicMaterial#metallicRoughnessMap}\n * {@link Texture}, where the *R* component multiplies by {@link MetallicMaterial#metallic} and *G* multiplies\n * by {@link MetallicMaterial#roughness}.\n *\n * ````javascript\n * new Mesh(viewer.scene, {\n *\n * geometry: geometry,\n *\n * material: new MetallicMaterial(viewer.scene, {\n *\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0,\n *\n * baseColorMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Base_Color.png\",\n * encoding: \"sRGB\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Normal_OpenGL.png\"\n * }),\n * metallicRoughnessMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_MetallicRoughness.png\"\n * }),\n * metallicRoughnessMap : new Texture(viewer.scene, { // <<----------- Added\n * src: \"models/obj/fireHydrant/fire_hydrant_MetallicRoughness.png\" // R component multiplies by metallic\n * }), // G component multiplies by roughness\n * occlusionMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Mixed_AO.png\"\n * }),\n *\n * specularF0: 0.7\n * })\n * ````\n *\n * Although not shown in this example, we can also texture {@link MetallicMaterial#alpha} with the *A* component of\n * {@link MetallicMaterial#baseColorMap}'s {@link Texture}, if required.\n *\n * ## Alpha Blending\n *\n * Let's make our {@link Mesh} transparent.\n *\n * We'll update the {@link MetallicMaterial#alpha} and {@link MetallicMaterial#alphaMode}, causing it to blend 50%\n * with the background:\n *\n * ````javascript\n * hydrant.material.alpha = 0.5;\n * hydrant.material.alphaMode = \"blend\";\n * ````\n *\n * ## Alpha Masking\n *\n * Let's apply an alpha mask to our {@link Mesh}.\n *\n * We'll configure an {@link MetallicMaterial#alphaMap} to multiply by {@link MetallicMaterial#alpha},\n * with {@link MetallicMaterial#alphaMode} and {@link MetallicMaterial#alphaCutoff} to treat it as an alpha mask:\n *\n * ````javascript\n * new Mesh(viewer.scene, {\n *\n * geometry: geometry,\n *\n * material: new MetallicMaterial(viewer.scene, {\n *\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0,\n * alpha: 1.0,\n * alphaMode : \"mask\", // <<---------------- Added\n * alphaCutoff : 0.2, // <<---------------- Added\n *\n * alphaMap : new Texture(viewer.scene{ // <<---------------- Added\n * src: \"textures/alphaMap.jpg\"\n * }),\n * baseColorMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Base_Color.png\",\n * encoding: \"sRGB\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Normal_OpenGL.png\"\n * }),\n * metallicRoughnessMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_MetallicRoughness.png\"\n * }),\n * metallicRoughnessMap : new Texture(viewer.scene, { // <<----------- Added\n * src: \"models/obj/fireHydrant/fire_hydrant_MetallicRoughness.png\" // R component multiplies by metallic\n * }), // G component multiplies by roughness\n * occlusionMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Mixed_AO.png\"\n * }),\n *\n * specularF0: 0.7\n * })\n * ````\n */\nclass MetallicMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"MetallicMaterial\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this MetallicMaterial as well.\n * @param {*} [cfg] The MetallicMaterial configuration.\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.baseColor=[1,1,1]] RGB diffuse color of this MetallicMaterial. Multiplies by the RGB components of {@link MetallicMaterial#baseColorMap}.\n * @param {Number} [cfg.metallic=1.0] Factor in the range ````[0..1]```` indicating how metallic this MetallicMaterial is. ````1```` is metal, ````0```` is non-metal. Multiplies by the *R* component of {@link MetallicMaterial#metallicMap} and the *A* component of {@link MetallicMaterial#metallicRoughnessMap}.\n * @param {Number} [cfg.roughness=1.0] Factor in the range ````[0..1]```` indicating the roughness of this MetallicMaterial. ````0```` is fully smooth, ````1```` is fully rough. Multiplies by the *R* component of {@link MetallicMaterial#roughnessMap}.\n * @param {Number} [cfg.specularF0=0.0] Factor in the range ````[0..1]```` indicating specular Fresnel.\n * @param {Number[]} [cfg.emissive=[0,0,0]] RGB emissive color of this MetallicMaterial. Multiplies by the RGB components of {@link MetallicMaterial#emissiveMap}.\n * @param {Number} [cfg.alpha=1.0] Factor in the range ````[0..1]```` indicating the alpha of this MetallicMaterial. Multiplies by the *R* component of {@link MetallicMaterial#alphaMap} and the *A* component, if present, of {@link MetallicMaterial#baseColorMap}. The value of {@link MetallicMaterial#alphaMode} indicates how alpha is interpreted when rendering.\n * @param {Texture} [cfg.baseColorMap=undefined] RGBA {@link Texture} containing the diffuse color of this MetallicMaterial, with optional *A* component for alpha. The RGB components multiply by the {@link MetallicMaterial#baseColor} property, while the *A* component, if present, multiplies by the {@link MetallicMaterial#alpha} property.\n * @param {Texture} [cfg.alphaMap=undefined] RGB {@link Texture} containing this MetallicMaterial's alpha in its *R* component. The *R* component multiplies by the {@link MetallicMaterial#alpha} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.metallicMap=undefined] RGB {@link Texture} containing this MetallicMaterial's metallic factor in its *R* component. The *R* component multiplies by the {@link MetallicMaterial#metallic} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.roughnessMap=undefined] RGB {@link Texture} containing this MetallicMaterial's roughness factor in its *R* component. The *R* component multiplies by the {@link MetallicMaterial#roughness} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.metallicRoughnessMap=undefined] RGB {@link Texture} containing this MetallicMaterial's metalness in its *R* component and roughness in its *G* component. Its *R* component multiplies by the {@link MetallicMaterial#metallic} property, while its *G* component multiplies by the {@link MetallicMaterial#roughness} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.emissiveMap=undefined] RGB {@link Texture} containing the emissive color of this MetallicMaterial. Multiplies by the {@link MetallicMaterial#emissive} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.occlusionMap=undefined] RGB ambient occlusion {@link Texture}. Within shaders, multiplies by the specular and diffuse light reflected by surfaces. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.normalMap=undefined] RGB tangent-space normal {@link Texture}. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {String} [cfg.alphaMode=\"opaque\"] The alpha blend mode, which specifies how alpha is to be interpreted. Accepted values are \"opaque\", \"blend\" and \"mask\". See the {@link MetallicMaterial#alphaMode} property for more info.\n * @param {Number} [cfg.alphaCutoff=0.5] The alpha cutoff value. See the {@link MetallicMaterial#alphaCutoff} property for more info.\n * @param {Boolean} [cfg.backfaces=false] Whether to render {@link ReadableGeometry} backfaces.\n * @param {Boolean} [cfg.frontface=\"ccw\"] The winding order for {@link ReadableGeometry} front faces - ````\"cw\"```` for clockwise, or ````\"ccw\"```` for counter-clockwise.\n * @param {Number} [cfg.lineWidth=1] Scalar that controls the width of lines for {@link ReadableGeometry} with {@link ReadableGeometry#primitive} set to \"lines\".\n * @param {Number} [cfg.pointSize=1] Scalar that controls the size of points for {@link ReadableGeometry} with {@link ReadableGeometry#primitive} set to \"points\".\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"MetallicMaterial\",\n baseColor: math.vec4([1.0, 1.0, 1.0]),\n emissive: math.vec4([0.0, 0.0, 0.0]),\n metallic: null,\n roughness: null,\n specularF0: null,\n alpha: null,\n alphaMode: null, // \"opaque\"\n alphaCutoff: null,\n lineWidth: null,\n pointSize: null,\n backfaces: null,\n frontface: null, // Boolean for speed; true == \"ccw\", false == \"cw\"\n hash: null\n });\n\n this.baseColor = cfg.baseColor;\n this.metallic = cfg.metallic;\n this.roughness = cfg.roughness;\n this.specularF0 = cfg.specularF0;\n this.emissive = cfg.emissive;\n this.alpha = cfg.alpha;\n\n if (cfg.baseColorMap) {\n this._baseColorMap = this._checkComponent(\"Texture\", cfg.baseColorMap);\n }\n if (cfg.metallicMap) {\n this._metallicMap = this._checkComponent(\"Texture\", cfg.metallicMap);\n\n }\n if (cfg.roughnessMap) {\n this._roughnessMap = this._checkComponent(\"Texture\", cfg.roughnessMap);\n }\n if (cfg.metallicRoughnessMap) {\n this._metallicRoughnessMap = this._checkComponent(\"Texture\", cfg.metallicRoughnessMap);\n }\n if (cfg.emissiveMap) {\n this._emissiveMap = this._checkComponent(\"Texture\", cfg.emissiveMap);\n }\n if (cfg.occlusionMap) {\n this._occlusionMap = this._checkComponent(\"Texture\", cfg.occlusionMap);\n }\n if (cfg.alphaMap) {\n this._alphaMap = this._checkComponent(\"Texture\", cfg.alphaMap);\n }\n if (cfg.normalMap) {\n this._normalMap = this._checkComponent(\"Texture\", cfg.normalMap);\n }\n\n this.alphaMode = cfg.alphaMode;\n this.alphaCutoff = cfg.alphaCutoff;\n this.backfaces = cfg.backfaces;\n this.frontface = cfg.frontface;\n this.lineWidth = cfg.lineWidth;\n this.pointSize = cfg.pointSize;\n\n this._makeHash();\n }\n\n _makeHash() {\n const state = this._state;\n const hash = [\"/met\"];\n if (this._baseColorMap) {\n hash.push(\"/bm\");\n if (this._baseColorMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._baseColorMap._state.encoding);\n }\n if (this._metallicMap) {\n hash.push(\"/mm\");\n if (this._metallicMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._roughnessMap) {\n hash.push(\"/rm\");\n if (this._roughnessMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._metallicRoughnessMap) {\n hash.push(\"/mrm\");\n if (this._metallicRoughnessMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._emissiveMap) {\n hash.push(\"/em\");\n if (this._emissiveMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._occlusionMap) {\n hash.push(\"/ocm\");\n if (this._occlusionMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._alphaMap) {\n hash.push(\"/am\");\n if (this._alphaMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._normalMap) {\n hash.push(\"/nm\");\n if (this._normalMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n\n /**\n * Sets the RGB diffuse color.\n *\n * Multiplies by the RGB components of {@link MetallicMaterial#baseColorMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n set baseColor(value) {\n let baseColor = this._state.baseColor;\n if (!baseColor) {\n baseColor = this._state.baseColor = new Float32Array(3);\n } else if (value && baseColor[0] === value[0] && baseColor[1] === value[1] && baseColor[2] === value[2]) {\n return;\n }\n if (value) {\n baseColor[0] = value[0];\n baseColor[1] = value[1];\n baseColor[2] = value[2];\n } else {\n baseColor[0] = 1;\n baseColor[1] = 1;\n baseColor[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB diffuse color.\n *\n * Multiplies by the RGB components of {@link MetallicMaterial#baseColorMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n get baseColor() {\n return this._state.baseColor;\n }\n\n\n /**\n * Gets the RGB {@link Texture} containing the diffuse color of this MetallicMaterial, with optional *A* component for alpha.\n *\n * The RGB components multiply by {@link MetallicMaterial#baseColor}, while the *A* component, if present, multiplies by {@link MetallicMaterial#alpha}.\n *\n * @type {Texture}\n */\n get baseColorMap() {\n return this._baseColorMap;\n }\n\n /**\n * Sets the metallic factor.\n *\n * This is in the range ````[0..1]```` and indicates how metallic this MetallicMaterial is.\n *\n * ````1```` is metal, ````0```` is non-metal.\n *\n * Multiplies by the *R* component of {@link MetallicMaterial#metallicMap} and the *A* component of {@link MetallicMaterial#metallicRoughnessMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set metallic(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.metallic === value) {\n return;\n }\n this._state.metallic = value;\n this.glRedraw();\n }\n\n /**\n * Gets the metallic factor.\n *\n * @type {Number}\n */\n get metallic() {\n return this._state.metallic;\n }\n\n /**\n * Gets the RGB {@link Texture} containing this MetallicMaterial's metallic factor in its *R* component.\n *\n * The *R* component multiplies by {@link MetallicMaterial#metallic}.\n *\n * @type {Texture}\n */\n get metallicMap() {\n return this._attached.metallicMap;\n }\n\n /**\n * Sets the roughness factor.\n *\n * This factor is in the range ````[0..1]````, where ````0```` is fully smooth,````1```` is fully rough.\n *\n * Multiplies by the *R* component of {@link MetallicMaterial#roughnessMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set roughness(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.roughness === value) {\n return;\n }\n this._state.roughness = value;\n this.glRedraw();\n }\n\n /**\n * Gets the roughness factor.\n *\n * @type {Number}\n */\n get roughness() {\n return this._state.roughness;\n }\n\n /**\n * Gets the RGB {@link Texture} containing this MetallicMaterial's roughness factor in its *R* component.\n *\n * The *R* component multiplies by {@link MetallicMaterial#roughness}.\n *\n * @type {Texture}\n */\n get roughnessMap() {\n return this._attached.roughnessMap;\n }\n\n /**\n * Gets the RGB {@link Texture} containing this MetallicMaterial's metalness in its *R* component and roughness in its *G* component.\n *\n * Its *B* component multiplies by the {@link MetallicMaterial#metallic} property, while its *G* component multiplies by the {@link MetallicMaterial#roughness} property.\n *\n * @type {Texture}\n */\n get metallicRoughnessMap() {\n return this._attached.metallicRoughnessMap;\n }\n\n /**\n * Sets the factor in the range [0..1] indicating specular Fresnel value.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n set specularF0(value) {\n value = (value !== undefined && value !== null) ? value : 0.0;\n if (this._state.specularF0 === value) {\n return;\n }\n this._state.specularF0 = value;\n this.glRedraw();\n }\n\n /**\n * Gets the factor in the range [0..1] indicating specular Fresnel value.\n *\n * @type {Number}\n */\n get specularF0() {\n return this._state.specularF0;\n }\n\n /**\n * Sets the RGB emissive color.\n *\n * Multiplies by {@link MetallicMaterial#emissiveMap}.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n set emissive(value) {\n let emissive = this._state.emissive;\n if (!emissive) {\n emissive = this._state.emissive = new Float32Array(3);\n } else if (value && emissive[0] === value[0] && emissive[1] === value[1] && emissive[2] === value[2]) {\n return;\n }\n if (value) {\n emissive[0] = value[0];\n emissive[1] = value[1];\n emissive[2] = value[2];\n } else {\n emissive[0] = 0;\n emissive[1] = 0;\n emissive[2] = 0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB emissive color.\n *\n * @type {Number[]}\n */\n get emissive() {\n return this._state.emissive;\n }\n\n /**\n * Gets the RGB emissive map.\n *\n * Multiplies by {@link MetallicMaterial#emissive}.\n *\n * @type {Texture}\n */\n get emissiveMap() {\n return this._attached.emissiveMap;\n }\n\n /**\n * Gets the RGB ambient occlusion map.\n *\n * Multiplies by the specular and diffuse light reflected by surfaces.\n *\n * @type {Texture}\n */\n get occlusionMap() {\n return this._attached.occlusionMap;\n }\n\n /**\n * Sets factor in the range ````[0..1]```` that indicates the alpha value.\n *\n * Multiplies by the *R* component of {@link MetallicMaterial#alphaMap} and the *A* component, if present, of {@link MetallicMaterial#baseColorMap}.\n *\n * The value of {@link MetallicMaterial#alphaMode} indicates how alpha is interpreted when rendering.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set alpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.alpha === value) {\n return;\n }\n this._state.alpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets factor in the range ````[0..1]```` that indicates the alpha value.\n *\n * @type {Number}\n */\n get alpha() {\n return this._state.alpha;\n }\n\n /**\n * Gets the RGB {@link Texture} containing this MetallicMaterial's alpha in its *R* component.\n *\n * The *R* component multiplies by the {@link MetallicMaterial#alpha} property.\n *\n * @type {Texture}\n */\n get alphaMap() {\n return this._attached.alphaMap;\n }\n\n /**\n * Gets the RGB tangent-space normal map {@link Texture}.\n *\n * @type {Texture}\n */\n get normalMap() {\n return this._attached.normalMap;\n }\n\n /**\n * Sets the alpha rendering mode.\n *\n * This specifies how alpha is interpreted. Alpha is the combined result of the {@link MetallicMaterial#alpha} and {@link MetallicMaterial#alphaMap} properties.\n *\n * Accepted values are:\n *\n * * \"opaque\" - The alpha value is ignored and the rendered output is fully opaque (default).\n * * \"mask\" - The rendered output is either fully opaque or fully transparent depending on the alpha and {@link MetallicMaterial#alphaCutoff}.\n * * \"blend\" - The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator).\n *\n * @type {String}\n */\n set alphaMode(alphaMode) {\n alphaMode = alphaMode || \"opaque\";\n let value = modes[alphaMode];\n if (value === undefined) {\n this.error(\"Unsupported value for 'alphaMode': \" + alphaMode + \" defaulting to 'opaque'\");\n value = \"opaque\";\n }\n if (this._state.alphaMode === value) {\n return;\n }\n this._state.alphaMode = value;\n this.glRedraw();\n }\n\n /**\n * Gets the alpha rendering mode.\n *\n * @type {String}\n */\n get alphaMode() {\n return modeNames[this._state.alphaMode];\n }\n\n /**\n * Sets the alpha cutoff value.\n *\n * Specifies the cutoff threshold when {@link MetallicMaterial#alphaMode} equals \"mask\". If the alpha is greater than or equal to this value then it is rendered as fully opaque, otherwise, it is rendered as fully transparent. A value greater than 1.0 will render the entire\n * material as fully transparent. This value is ignored for other modes.\n *\n * Alpha is the combined result of the {@link MetallicMaterial#alpha} and {@link MetallicMaterial#alphaMap} properties.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n set alphaCutoff(alphaCutoff) {\n if (alphaCutoff === null || alphaCutoff === undefined) {\n alphaCutoff = 0.5;\n }\n if (this._state.alphaCutoff === alphaCutoff) {\n return;\n }\n this._state.alphaCutoff = alphaCutoff;\n }\n\n /**\n * Gets the alpha cutoff value.\n *\n * @type {Number}\n */\n get alphaCutoff() {\n return this._state.alphaCutoff;\n }\n\n /**\n * Sets whether backfaces are visible on attached {@link Mesh}es.\n *\n * The backfaces will belong to {@link ReadableGeometry} compoents that are also attached to the {@link Mesh}es.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether backfaces are visible on attached {@link Mesh}es.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * Default value is ````\"ccw\"````.\n *\n * @type {String}\n */\n set frontface(value) {\n value = value !== \"cw\";\n if (this._state.frontface === value) {\n return;\n }\n this._state.frontface = value;\n this.glRedraw();\n }\n\n /**\n * Gets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n*\n * @type {String}\n */\n get frontface() {\n return this._state.frontface ? \"ccw\" : \"cw\";\n }\n\n /**\n * Sets the MetallicMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the MetallicMaterial's line width.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Sets the MetallicMaterial's point size.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the MetallicMaterial's point size.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n /**\n * Destroys this MetallicMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {MetallicMaterial};", @@ -82143,7 +82671,7 @@ "lineNumber": 1 }, { - "__docId__": 4124, + "__docId__": 4142, "kind": "variable", "name": "modes", "memberof": "src/viewer/scene/materials/MetallicMaterial.js", @@ -82164,7 +82692,7 @@ "ignore": true }, { - "__docId__": 4125, + "__docId__": 4143, "kind": "variable", "name": "modeNames", "memberof": "src/viewer/scene/materials/MetallicMaterial.js", @@ -82185,7 +82713,7 @@ "ignore": true }, { - "__docId__": 4126, + "__docId__": 4144, "kind": "class", "name": "MetallicMaterial", "memberof": "src/viewer/scene/materials/MetallicMaterial.js", @@ -82203,7 +82731,7 @@ ] }, { - "__docId__": 4127, + "__docId__": 4145, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82222,7 +82750,7 @@ } }, { - "__docId__": 4128, + "__docId__": 4146, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82521,7 +83049,7 @@ ] }, { - "__docId__": 4129, + "__docId__": 4147, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82539,7 +83067,7 @@ } }, { - "__docId__": 4136, + "__docId__": 4154, "kind": "member", "name": "_baseColorMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82557,7 +83085,7 @@ } }, { - "__docId__": 4137, + "__docId__": 4155, "kind": "member", "name": "_metallicMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82575,7 +83103,7 @@ } }, { - "__docId__": 4138, + "__docId__": 4156, "kind": "member", "name": "_roughnessMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82593,7 +83121,7 @@ } }, { - "__docId__": 4139, + "__docId__": 4157, "kind": "member", "name": "_metallicRoughnessMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82611,7 +83139,7 @@ } }, { - "__docId__": 4140, + "__docId__": 4158, "kind": "member", "name": "_emissiveMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82629,7 +83157,7 @@ } }, { - "__docId__": 4141, + "__docId__": 4159, "kind": "member", "name": "_occlusionMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82647,7 +83175,7 @@ } }, { - "__docId__": 4142, + "__docId__": 4160, "kind": "member", "name": "_alphaMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82665,7 +83193,7 @@ } }, { - "__docId__": 4143, + "__docId__": 4161, "kind": "member", "name": "_normalMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82683,7 +83211,7 @@ } }, { - "__docId__": 4150, + "__docId__": 4168, "kind": "method", "name": "_makeHash", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82700,7 +83228,7 @@ "return": null }, { - "__docId__": 4151, + "__docId__": 4169, "kind": "set", "name": "baseColor", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82721,7 +83249,7 @@ } }, { - "__docId__": 4152, + "__docId__": 4170, "kind": "get", "name": "baseColor", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82742,7 +83270,7 @@ } }, { - "__docId__": 4153, + "__docId__": 4171, "kind": "get", "name": "baseColorMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82763,7 +83291,7 @@ } }, { - "__docId__": 4154, + "__docId__": 4172, "kind": "set", "name": "metallic", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82784,7 +83312,7 @@ } }, { - "__docId__": 4155, + "__docId__": 4173, "kind": "get", "name": "metallic", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82805,7 +83333,7 @@ } }, { - "__docId__": 4156, + "__docId__": 4174, "kind": "get", "name": "metallicMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82826,7 +83354,7 @@ } }, { - "__docId__": 4157, + "__docId__": 4175, "kind": "set", "name": "roughness", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82847,7 +83375,7 @@ } }, { - "__docId__": 4158, + "__docId__": 4176, "kind": "get", "name": "roughness", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82868,7 +83396,7 @@ } }, { - "__docId__": 4159, + "__docId__": 4177, "kind": "get", "name": "roughnessMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82889,7 +83417,7 @@ } }, { - "__docId__": 4160, + "__docId__": 4178, "kind": "get", "name": "metallicRoughnessMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82910,7 +83438,7 @@ } }, { - "__docId__": 4161, + "__docId__": 4179, "kind": "set", "name": "specularF0", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82931,7 +83459,7 @@ } }, { - "__docId__": 4162, + "__docId__": 4180, "kind": "get", "name": "specularF0", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82952,7 +83480,7 @@ } }, { - "__docId__": 4163, + "__docId__": 4181, "kind": "set", "name": "emissive", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82973,7 +83501,7 @@ } }, { - "__docId__": 4164, + "__docId__": 4182, "kind": "get", "name": "emissive", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -82994,7 +83522,7 @@ } }, { - "__docId__": 4165, + "__docId__": 4183, "kind": "get", "name": "emissiveMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83015,7 +83543,7 @@ } }, { - "__docId__": 4166, + "__docId__": 4184, "kind": "get", "name": "occlusionMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83036,7 +83564,7 @@ } }, { - "__docId__": 4167, + "__docId__": 4185, "kind": "set", "name": "alpha", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83057,7 +83585,7 @@ } }, { - "__docId__": 4168, + "__docId__": 4186, "kind": "get", "name": "alpha", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83078,7 +83606,7 @@ } }, { - "__docId__": 4169, + "__docId__": 4187, "kind": "get", "name": "alphaMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83099,7 +83627,7 @@ } }, { - "__docId__": 4170, + "__docId__": 4188, "kind": "get", "name": "normalMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83120,7 +83648,7 @@ } }, { - "__docId__": 4171, + "__docId__": 4189, "kind": "set", "name": "alphaMode", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83141,7 +83669,7 @@ } }, { - "__docId__": 4172, + "__docId__": 4190, "kind": "get", "name": "alphaMode", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83162,7 +83690,7 @@ } }, { - "__docId__": 4173, + "__docId__": 4191, "kind": "set", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83183,7 +83711,7 @@ } }, { - "__docId__": 4174, + "__docId__": 4192, "kind": "get", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83204,7 +83732,7 @@ } }, { - "__docId__": 4175, + "__docId__": 4193, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83225,7 +83753,7 @@ } }, { - "__docId__": 4176, + "__docId__": 4194, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83246,7 +83774,7 @@ } }, { - "__docId__": 4177, + "__docId__": 4195, "kind": "set", "name": "frontface", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83267,7 +83795,7 @@ } }, { - "__docId__": 4178, + "__docId__": 4196, "kind": "get", "name": "frontface", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83288,7 +83816,7 @@ } }, { - "__docId__": 4179, + "__docId__": 4197, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83309,7 +83837,7 @@ } }, { - "__docId__": 4180, + "__docId__": 4198, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83330,7 +83858,7 @@ } }, { - "__docId__": 4181, + "__docId__": 4199, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83351,7 +83879,7 @@ } }, { - "__docId__": 4182, + "__docId__": 4200, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83372,7 +83900,7 @@ } }, { - "__docId__": 4183, + "__docId__": 4201, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -83387,7 +83915,7 @@ "return": null }, { - "__docId__": 4184, + "__docId__": 4202, "kind": "file", "name": "src/viewer/scene/materials/PhongMaterial.js", "content": "import {Material} from './Material.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {math} from '../math/math.js';\n\nconst alphaModes = {\"opaque\": 0, \"mask\": 1, \"blend\": 2};\nconst alphaModeNames = [\"opaque\", \"mask\", \"blend\"];\n\n/**\n * @desc Configures the normal rendered appearance of {@link Mesh}es using the non-physically-correct Blinn-Phong shading model.\n *\n * * Useful for non-realistic objects like gizmos.\n * * {@link SpecularMaterial} is best for insulators, such as wood, ceramics and plastic.\n * * {@link MetallicMaterial} is best for conductive materials, such as metal.\n * * {@link LambertMaterial} is appropriate for high-detail models that need to render as efficiently as possible.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Mesh} with a PhongMaterial with a diffuse {@link Texture} and a specular {@link Fresnel}, using a {@link buildTorusGeometry} to create the {@link Geometry}.\n *\n * [[Run this example](/examples/index.html#materials_PhongMaterial)]\n *\n * ```` javascript\n * import {Viewer, Mesh, buildTorusGeometry,\n * ReadableGeometry, PhongMaterial, Texture, Fresnel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * ambient: [0.9, 0.3, 0.9],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * specularFresnel: new Fresnel(viewer.scene, {\n * leftColor: [1.0, 1.0, 1.0],\n * rightColor: [0.0, 0.0, 0.0],\n * power: 4\n * })\n * })\n * });\n * ````\n *\n * ## PhongMaterial Properties\n *\n * The following table summarizes PhongMaterial properties:\n *\n * | Property | Type | Range | Default Value | Space | Description |\n * |:--------:|:----:|:-----:|:-------------:|:-----:|:-----------:|\n * | {@link PhongMaterial#ambient} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the ambient light reflected by the material. |\n * | {@link PhongMaterial#diffuse} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the diffuse light reflected by the material. |\n * | {@link PhongMaterial#specular} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the specular light reflected by the material. |\n * | {@link PhongMaterial#emissive} | Array | [0, 1] for all components | [0,0,0] | linear | The RGB components of the light emitted by the material. |\n * | {@link PhongMaterial#alpha} | Number | [0, 1] | 1 | linear | The transparency of the material surface (0 fully transparent, 1 fully opaque). |\n * | {@link PhongMaterial#shininess} | Number | [0, 128] | 80 | linear | Determines the size and sharpness of specular highlights. |\n * | {@link PhongMaterial#reflectivity} | Number | [0, 1] | 1 | linear | Determines the amount of reflectivity. |\n * | {@link PhongMaterial#diffuseMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link PhongMaterial#diffuse}. If the fourth component (A) is present, it multiplies by {@link PhongMaterial#alpha}. |\n * | {@link PhongMaterial#specularMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link PhongMaterial#specular}. If the fourth component (A) is present, it multiplies by {@link PhongMaterial#alpha}. |\n * | {@link PhongMaterial#emissiveMap} | {@link Texture} | | null | linear | Texture with RGB components multiplying by {@link PhongMaterial#emissive}. |\n * | {@link PhongMaterial#alphaMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link PhongMaterial#alpha}. |\n * | {@link PhongMaterial#occlusionMap} | {@link Texture} | | null | linear | Ambient occlusion texture multiplying by {@link PhongMaterial#ambient}, {@link PhongMaterial#diffuse} and {@link PhongMaterial#specular}. |\n * | {@link PhongMaterial#normalMap} | {@link Texture} | | null | linear | Tangent-space normal map. |\n * | {@link PhongMaterial#diffuseFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#diffuse}. |\n * | {@link PhongMaterial#specularFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#specular}. |\n * | {@link PhongMaterial#emissiveFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#emissive}. |\n * | {@link PhongMaterial#reflectivityFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#reflectivity}. |\n * | {@link PhongMaterial#alphaFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#alpha}. |\n * | {@link PhongMaterial#lineWidth} | Number | [0..100] | 1 | | Line width in pixels. |\n * | {@link PhongMaterial#pointSize} | Number | [0..100] | 1 | | Point size in pixels. |\n * | {@link PhongMaterial#alphaMode} | String | \"opaque\", \"blend\", \"mask\" | \"blend\" | | Alpha blend mode. |\n * | {@link PhongMaterial#alphaCutoff} | Number | [0..1] | 0.5 | | Alpha cutoff value. |\n * | {@link PhongMaterial#backfaces} | Boolean | | false | | Whether to render geometry backfaces. |\n * | {@link PhongMaterial#frontface} | String | \"ccw\", \"cw\" | \"ccw\" | | The winding order for geometry frontfaces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise. |\n */\nclass PhongMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"PhongMaterial\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The PhongMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.ambient=[1.0, 1.0, 1.0 ]] PhongMaterial ambient color.\n * @param {Number[]} [cfg.diffuse=[ 1.0, 1.0, 1.0 ]] PhongMaterial diffuse color.\n * @param {Number[]} [cfg.specular=[ 1.0, 1.0, 1.0 ]] PhongMaterial specular color.\n * @param {Number[]} [cfg.emissive=[ 0.0, 0.0, 0.0 ]] PhongMaterial emissive color.\n * @param {Number} [cfg.alpha=1] Scalar in range 0-1 that controls alpha, where 0 is completely transparent and 1 is completely opaque.\n * @param {Number} [cfg.shininess=80] Scalar in range 0-128 that determines the size and sharpness of specular highlights.\n * @param {Number} [cfg.reflectivity=1] Scalar in range 0-1 that controls how much {@link ReflectionMap} is reflected.\n * @param {Number} [cfg.lineWidth=1] Scalar that controls the width of lines.\n * @param {Number} [cfg.pointSize=1] Scalar that controls the size of points.\n * @param {Texture} [cfg.ambientMap=null] A ambient map {@link Texture}, which will multiply by the diffuse property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.diffuseMap=null] A diffuse map {@link Texture}, which will override the effect of the diffuse property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.specularMap=null] A specular map {@link Texture}, which will override the effect of the specular property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.emissiveMap=undefined] An emissive map {@link Texture}, which will override the effect of the emissive property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.normalMap=undefined] A normal map {@link Texture}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.alphaMap=undefined] An alpha map {@link Texture}, which will override the effect of the alpha property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.reflectivityMap=undefined] A reflectivity control map {@link Texture}, which will override the effect of the reflectivity property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.occlusionMap=null] An occlusion map {@link Texture}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.diffuseFresnel=undefined] A diffuse {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.specularFresnel=undefined] A specular {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.emissiveFresnel=undefined] An emissive {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.alphaFresnel=undefined] An alpha {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.reflectivityFresnel=undefined] A reflectivity {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {String} [cfg.alphaMode=\"opaque\"] The alpha blend mode - accepted values are \"opaque\", \"blend\" and \"mask\". See the {@link PhongMaterial#alphaMode} property for more info.\n * @param {Number} [cfg.alphaCutoff=0.5] The alpha cutoff value. See the {@link PhongMaterial#alphaCutoff} property for more info.\n * @param {Boolean} [cfg.backfaces=false] Whether to render geometry backfaces.\n * @param {Boolean} [cfg.frontface=\"ccw\"] The winding order for geometry front faces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"PhongMaterial\",\n ambient: math.vec3([1.0, 1.0, 1.0]),\n diffuse: math.vec3([1.0, 1.0, 1.0]),\n specular: math.vec3([1.0, 1.0, 1.0]),\n emissive: math.vec3([0.0, 0.0, 0.0]),\n alpha: null,\n shininess: null,\n reflectivity: null,\n alphaMode: null,\n alphaCutoff: null,\n lineWidth: null,\n pointSize: null,\n backfaces: null,\n frontface: null, // Boolean for speed; true == \"ccw\", false == \"cw\"\n hash: null\n });\n\n this.ambient = cfg.ambient;\n this.diffuse = cfg.diffuse;\n this.specular = cfg.specular;\n this.emissive = cfg.emissive;\n this.alpha = cfg.alpha;\n this.shininess = cfg.shininess;\n this.reflectivity = cfg.reflectivity;\n this.lineWidth = cfg.lineWidth;\n this.pointSize = cfg.pointSize;\n\n if (cfg.ambientMap) {\n this._ambientMap = this._checkComponent(\"Texture\", cfg.ambientMap);\n }\n if (cfg.diffuseMap) {\n this._diffuseMap = this._checkComponent(\"Texture\", cfg.diffuseMap);\n }\n if (cfg.specularMap) {\n this._specularMap = this._checkComponent(\"Texture\", cfg.specularMap);\n }\n if (cfg.emissiveMap) {\n this._emissiveMap = this._checkComponent(\"Texture\", cfg.emissiveMap);\n }\n if (cfg.alphaMap) {\n this._alphaMap = this._checkComponent(\"Texture\", cfg.alphaMap);\n }\n if (cfg.reflectivityMap) {\n this._reflectivityMap = this._checkComponent(\"Texture\", cfg.reflectivityMap);\n }\n if (cfg.normalMap) {\n this._normalMap = this._checkComponent(\"Texture\", cfg.normalMap);\n }\n if (cfg.occlusionMap) {\n this._occlusionMap = this._checkComponent(\"Texture\", cfg.occlusionMap);\n }\n if (cfg.diffuseFresnel) {\n this._diffuseFresnel = this._checkComponent(\"Fresnel\", cfg.diffuseFresnel);\n }\n if (cfg.specularFresnel) {\n this._specularFresnel = this._checkComponent(\"Fresnel\", cfg.specularFresnel);\n }\n if (cfg.emissiveFresnel) {\n this._emissiveFresnel = this._checkComponent(\"Fresnel\", cfg.emissiveFresnel);\n }\n if (cfg.alphaFresnel) {\n this._alphaFresnel = this._checkComponent(\"Fresnel\", cfg.alphaFresnel);\n }\n if (cfg.reflectivityFresnel) {\n this._reflectivityFresnel = this._checkComponent(\"Fresnel\", cfg.reflectivityFresnel);\n }\n\n this.alphaMode = cfg.alphaMode;\n this.alphaCutoff = cfg.alphaCutoff;\n this.backfaces = cfg.backfaces;\n this.frontface = cfg.frontface;\n\n this._makeHash();\n }\n\n _makeHash() {\n const state = this._state;\n const hash = [\"/p\"]; // 'P' for Phong\n if (this._normalMap) {\n hash.push(\"/nm\");\n if (this._normalMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._ambientMap) {\n hash.push(\"/am\");\n if (this._ambientMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._ambientMap.encoding);\n }\n if (this._diffuseMap) {\n hash.push(\"/dm\");\n if (this._diffuseMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._diffuseMap.encoding);\n }\n if (this._specularMap) {\n hash.push(\"/sm\");\n if (this._specularMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._emissiveMap) {\n hash.push(\"/em\");\n if (this._emissiveMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._emissiveMap.encoding);\n }\n if (this._alphaMap) {\n hash.push(\"/opm\");\n if (this._alphaMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._reflectivityMap) {\n hash.push(\"/rm\");\n if (this._reflectivityMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._occlusionMap) {\n hash.push(\"/ocm\");\n if (this._occlusionMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._diffuseFresnel) {\n hash.push(\"/df\");\n }\n if (this._specularFresnel) {\n hash.push(\"/sf\");\n }\n if (this._emissiveFresnel) {\n hash.push(\"/ef\");\n }\n if (this._alphaFresnel) {\n hash.push(\"/of\");\n }\n if (this._reflectivityFresnel) {\n hash.push(\"/rf\");\n }\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n /**\n * Sets the PhongMaterial's ambient color.\n *\n * Default value is ````[0.3, 0.3, 0.3]````.\n *\n * @type {Number[]}\n */\n set ambient(value) {\n let ambient = this._state.ambient;\n if (!ambient) {\n ambient = this._state.ambient = new Float32Array(3);\n } else if (value && ambient[0] === value[0] && ambient[1] === value[1] && ambient[2] === value[2]) {\n return;\n }\n if (value) {\n ambient[0] = value[0];\n ambient[1] = value[1];\n ambient[2] = value[2];\n } else {\n ambient[0] = .2;\n ambient[1] = .2;\n ambient[2] = .2;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's ambient color.\n *\n * Default value is ````[0.3, 0.3, 0.3]````.\n *\n * @type {Number[]}\n */\n get ambient() {\n return this._state.ambient;\n }\n\n /**\n * Sets the PhongMaterial's diffuse color.\n *\n * Multiplies by {@link PhongMaterial#diffuseMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n set diffuse(value) {\n let diffuse = this._state.diffuse;\n if (!diffuse) {\n diffuse = this._state.diffuse = new Float32Array(3);\n } else if (value && diffuse[0] === value[0] && diffuse[1] === value[1] && diffuse[2] === value[2]) {\n return;\n }\n if (value) {\n diffuse[0] = value[0];\n diffuse[1] = value[1];\n diffuse[2] = value[2];\n } else {\n diffuse[0] = 1;\n diffuse[1] = 1;\n diffuse[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Sets the PhongMaterial's diffuse color.\n *\n * Multiplies by {@link PhongMaterial#diffuseMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n get diffuse() {\n return this._state.diffuse;\n }\n\n /**\n * Sets the PhongMaterial's specular color.\n *\n * Multiplies by {@link PhongMaterial#specularMap}.\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n set specular(value) {\n let specular = this._state.specular;\n if (!specular) {\n specular = this._state.specular = new Float32Array(3);\n } else if (value && specular[0] === value[0] && specular[1] === value[1] && specular[2] === value[2]) {\n return;\n }\n if (value) {\n specular[0] = value[0];\n specular[1] = value[1];\n specular[2] = value[2];\n } else {\n specular[0] = 1;\n specular[1] = 1;\n specular[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's specular color.\n *\n * Multiplies by {@link PhongMaterial#specularMap}.\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n get specular() {\n return this._state.specular;\n }\n\n /**\n * Sets the PhongMaterial's emissive color.\n *\n * Multiplies by {@link PhongMaterial#emissiveMap}.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n * @type {Number[]}\n */\n set emissive(value) {\n let emissive = this._state.emissive;\n if (!emissive) {\n emissive = this._state.emissive = new Float32Array(3);\n } else if (value && emissive[0] === value[0] && emissive[1] === value[1] && emissive[2] === value[2]) {\n return;\n }\n if (value) {\n emissive[0] = value[0];\n emissive[1] = value[1];\n emissive[2] = value[2];\n } else {\n emissive[0] = 0;\n emissive[1] = 0;\n emissive[2] = 0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's emissive color.\n *\n * Multiplies by {@link PhongMaterial#emissiveMap}.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n * @type {Number[]}\n */\n get emissive() {\n return this._state.emissive;\n }\n\n /**\n * Sets the PhongMaterial alpha.\n *\n * This is a factor in the range [0..1] indicating how transparent the PhongMaterial is.\n *\n * A value of 0.0 indicates fully transparent, 1.0 is fully opaque.\n *\n * Multiplies by {@link PhongMaterial#alphaMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set alpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.alpha === value) {\n return;\n }\n this._state.alpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial alpha.\n *\n * This is a factor in the range [0..1] indicating how transparent the PhongMaterial is.\n *\n * A value of 0.0 indicates fully transparent, 1.0 is fully opaque.\n *\n * Multiplies by {@link PhongMaterial#alphaMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get alpha() {\n return this._state.alpha;\n }\n\n /**\n * Sets the PhongMaterial shininess.\n *\n * This is a factor in range [0..128] that determines the size and sharpness of the specular highlights create by this PhongMaterial.\n *\n * Larger values produce smaller, sharper highlights. A value of 0.0 gives very large highlights that are almost never\n * desirable. Try values close to 10 for a larger, fuzzier highlight and values of 100 or more for a small, sharp\n * highlight.\n *\n * Default value is ```` 80.0````.\n *\n * @type {Number}\n */\n set shininess(value) {\n this._state.shininess = value !== undefined ? value : 80;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial shininess.\n *\n * This is a factor in range [0..128] that determines the size and sharpness of the specular highlights create by this PhongMaterial.\n *\n * Larger values produce smaller, sharper highlights. A value of 0.0 gives very large highlights that are almost never\n * desirable. Try values close to 10 for a larger, fuzzier highlight and values of 100 or more for a small, sharp\n * highlight.\n *\n * Default value is ```` 80.0````.\n *\n * @type {Number}\n */\n get shininess() {\n return this._state.shininess;\n }\n\n /**\n * Sets the PhongMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Sets the PhongMaterial's point size.\n *\n * Default value is 1.0.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's point size.\n *\n * Default value is 1.0.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n /**\n * Sets how much {@link ReflectionMap} is reflected by this PhongMaterial.\n *\n * This is a scalar in range ````[0-1]````. Default value is ````1.0````.\n *\n * The surface will be non-reflective when this is ````0````, and completely mirror-like when it is ````1.0````.\n *\n * Multiplies by {@link PhongMaterial#reflectivityMap}.\n *\n * @type {Number}\n */\n set reflectivity(value) {\n this._state.reflectivity = value !== undefined ? value : 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets how much {@link ReflectionMap} is reflected by this PhongMaterial.\n *\n * This is a scalar in range ````[0-1]````. Default value is ````1.0````.\n *\n * The surface will be non-reflective when this is ````0````, and completely mirror-like when it is ````1.0````.\n *\n * Multiplies by {@link PhongMaterial#reflectivityMap}.\n *\n * @type {Number}\n */\n get reflectivity() {\n return this._state.reflectivity;\n }\n\n /**\n * Gets the PhongMaterials's normal map {@link Texture}.\n *\n * @type {Texture}\n */\n get normalMap() {\n return this._normalMap;\n }\n\n /**\n * Gets the PhongMaterials's ambient {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#ambient}.\n *\n * @type {Texture}\n */\n get ambientMap() {\n return this._ambientMap;\n }\n\n /**\n * Gets the PhongMaterials's diffuse {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#diffuse}.\n *\n * @type {Texture}\n */\n get diffuseMap() {\n return this._diffuseMap;\n }\n\n /**\n * Gets the PhongMaterials's specular {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#specular}.\n *\n * @type {Texture}\n */\n get specularMap() {\n return this._specularMap;\n }\n\n /**\n * Gets the PhongMaterials's emissive {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#emissive}.\n *\n * @type {Texture}\n */\n get emissiveMap() {\n return this._emissiveMap;\n }\n\n /**\n * Gets the PhongMaterials's alpha {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#alpha}.\n *\n * @type {Texture}\n */\n get alphaMap() {\n return this._alphaMap;\n }\n\n /**\n * Gets the PhongMaterials's reflectivity {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#reflectivity}.\n *\n * @type {Texture}\n */\n get reflectivityMap() {\n return this._reflectivityMap;\n }\n\n /**\n * Gets the PhongMaterials's ambient occlusion {@link Texture}.\n *\n * @type {Texture}\n */\n get occlusionMap() {\n return this._occlusionMap;\n }\n\n /**\n * Gets the PhongMaterials's diffuse {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#diffuse}.\n *\n * @type {Fresnel}\n */\n get diffuseFresnel() {\n return this._diffuseFresnel;\n }\n\n /**\n * Gets the PhongMaterials's specular {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#specular}.\n *\n * @type {Fresnel}\n */\n get specularFresnel() {\n return this._specularFresnel;\n }\n\n /**\n * Gets the PhongMaterials's emissive {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#emissive}.\n *\n * @type {Fresnel}\n */\n get emissiveFresnel() {\n return this._emissiveFresnel;\n }\n\n /**\n * Gets the PhongMaterials's alpha {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#alpha}.\n *\n * @type {Fresnel}\n */\n get alphaFresnel() {\n return this._alphaFresnel;\n }\n\n /**\n * Gets the PhongMaterials's reflectivity {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#reflectivity}.\n *\n * @type {Fresnel}\n */\n get reflectivityFresnel() {\n return this._reflectivityFresnel;\n }\n\n /**\n * Sets the PhongMaterial's alpha rendering mode.\n *\n * This governs how alpha is treated. Alpha is the combined result of {@link PhongMaterial#alpha} and {@link PhongMaterial#alphaMap}.\n *\n * Supported values are:\n *\n * * \"opaque\" - The alpha value is ignored and the rendered output is fully opaque (default).\n * * \"mask\" - The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value.\n * * \"blend\" - The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator).\n *\n *@type {String}\n */\n set alphaMode(alphaMode) {\n alphaMode = alphaMode || \"opaque\";\n let value = alphaModes[alphaMode];\n if (value === undefined) {\n this.error(\"Unsupported value for 'alphaMode': \" + alphaMode + \" - defaulting to 'opaque'\");\n value = \"opaque\";\n }\n if (this._state.alphaMode === value) {\n return;\n }\n this._state.alphaMode = value;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's alpha rendering mode.\n *\n *@type {String}\n */\n get alphaMode() {\n return alphaModeNames[this._state.alphaMode];\n }\n\n /**\n * Sets the PhongMaterial's alpha cutoff value.\n *\n * This specifies the cutoff threshold when {@link PhongMaterial#alphaMode} equals \"mask\". If the alpha is greater than or equal to this value then it is rendered as fully\n * opaque, otherwise, it is rendered as fully transparent. A value greater than 1.0 will render the entire material as fully transparent. This value is ignored for other modes.\n *\n * Alpha is the combined result of {@link PhongMaterial#alpha} and {@link PhongMaterial#alphaMap}.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n set alphaCutoff(alphaCutoff) {\n if (alphaCutoff === null || alphaCutoff === undefined) {\n alphaCutoff = 0.5;\n }\n if (this._state.alphaCutoff === alphaCutoff) {\n return;\n }\n this._state.alphaCutoff = alphaCutoff;\n }\n\n /**\n * Gets the PhongMaterial's alpha cutoff value.\n *\n * @type {Number}\n */\n get alphaCutoff() {\n return this._state.alphaCutoff;\n }\n\n /**\n * Sets whether backfaces are visible on attached {@link Mesh}es.\n *\n * The backfaces will belong to {@link Geometry} compoents that are also attached to the {@link Mesh}es.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether backfaces are visible on attached {@link Mesh}es.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets the winding direction of geometry front faces.\n *\n * Default is ````\"ccw\"````.\n * @type {String}\n */\n set frontface(value) {\n value = value !== \"cw\";\n if (this._state.frontface === value) {\n return;\n }\n this._state.frontface = value;\n this.glRedraw();\n }\n\n /**\n * Gets the winding direction of front faces on attached {@link Mesh}es.\n *\n * Default is ````\"ccw\"````.\n * @type {String}\n */\n get frontface() {\n return this._state.frontface ? \"ccw\" : \"cw\";\n }\n\n /**\n * Destroys this PhongMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {PhongMaterial};", @@ -83398,7 +83926,7 @@ "lineNumber": 1 }, { - "__docId__": 4185, + "__docId__": 4203, "kind": "variable", "name": "alphaModes", "memberof": "src/viewer/scene/materials/PhongMaterial.js", @@ -83419,7 +83947,7 @@ "ignore": true }, { - "__docId__": 4186, + "__docId__": 4204, "kind": "variable", "name": "alphaModeNames", "memberof": "src/viewer/scene/materials/PhongMaterial.js", @@ -83440,7 +83968,7 @@ "ignore": true }, { - "__docId__": 4187, + "__docId__": 4205, "kind": "class", "name": "PhongMaterial", "memberof": "src/viewer/scene/materials/PhongMaterial.js", @@ -83458,7 +83986,7 @@ ] }, { - "__docId__": 4188, + "__docId__": 4206, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83477,7 +84005,7 @@ } }, { - "__docId__": 4189, + "__docId__": 4207, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83850,7 +84378,7 @@ ] }, { - "__docId__": 4190, + "__docId__": 4208, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83868,7 +84396,7 @@ } }, { - "__docId__": 4200, + "__docId__": 4218, "kind": "member", "name": "_ambientMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83886,7 +84414,7 @@ } }, { - "__docId__": 4201, + "__docId__": 4219, "kind": "member", "name": "_diffuseMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83904,7 +84432,7 @@ } }, { - "__docId__": 4202, + "__docId__": 4220, "kind": "member", "name": "_specularMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83922,7 +84450,7 @@ } }, { - "__docId__": 4203, + "__docId__": 4221, "kind": "member", "name": "_emissiveMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83940,7 +84468,7 @@ } }, { - "__docId__": 4204, + "__docId__": 4222, "kind": "member", "name": "_alphaMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83958,7 +84486,7 @@ } }, { - "__docId__": 4205, + "__docId__": 4223, "kind": "member", "name": "_reflectivityMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83976,7 +84504,7 @@ } }, { - "__docId__": 4206, + "__docId__": 4224, "kind": "member", "name": "_normalMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -83994,7 +84522,7 @@ } }, { - "__docId__": 4207, + "__docId__": 4225, "kind": "member", "name": "_occlusionMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84012,7 +84540,7 @@ } }, { - "__docId__": 4208, + "__docId__": 4226, "kind": "member", "name": "_diffuseFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84030,7 +84558,7 @@ } }, { - "__docId__": 4209, + "__docId__": 4227, "kind": "member", "name": "_specularFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84048,7 +84576,7 @@ } }, { - "__docId__": 4210, + "__docId__": 4228, "kind": "member", "name": "_emissiveFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84066,7 +84594,7 @@ } }, { - "__docId__": 4211, + "__docId__": 4229, "kind": "member", "name": "_alphaFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84084,7 +84612,7 @@ } }, { - "__docId__": 4212, + "__docId__": 4230, "kind": "member", "name": "_reflectivityFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84102,7 +84630,7 @@ } }, { - "__docId__": 4217, + "__docId__": 4235, "kind": "method", "name": "_makeHash", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84119,7 +84647,7 @@ "return": null }, { - "__docId__": 4218, + "__docId__": 4236, "kind": "set", "name": "ambient", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84140,7 +84668,7 @@ } }, { - "__docId__": 4219, + "__docId__": 4237, "kind": "get", "name": "ambient", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84161,7 +84689,7 @@ } }, { - "__docId__": 4220, + "__docId__": 4238, "kind": "set", "name": "diffuse", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84182,7 +84710,7 @@ } }, { - "__docId__": 4221, + "__docId__": 4239, "kind": "get", "name": "diffuse", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84203,7 +84731,7 @@ } }, { - "__docId__": 4222, + "__docId__": 4240, "kind": "set", "name": "specular", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84224,7 +84752,7 @@ } }, { - "__docId__": 4223, + "__docId__": 4241, "kind": "get", "name": "specular", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84245,7 +84773,7 @@ } }, { - "__docId__": 4224, + "__docId__": 4242, "kind": "set", "name": "emissive", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84266,7 +84794,7 @@ } }, { - "__docId__": 4225, + "__docId__": 4243, "kind": "get", "name": "emissive", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84287,7 +84815,7 @@ } }, { - "__docId__": 4226, + "__docId__": 4244, "kind": "set", "name": "alpha", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84308,7 +84836,7 @@ } }, { - "__docId__": 4227, + "__docId__": 4245, "kind": "get", "name": "alpha", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84329,7 +84857,7 @@ } }, { - "__docId__": 4228, + "__docId__": 4246, "kind": "set", "name": "shininess", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84350,7 +84878,7 @@ } }, { - "__docId__": 4229, + "__docId__": 4247, "kind": "get", "name": "shininess", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84371,7 +84899,7 @@ } }, { - "__docId__": 4230, + "__docId__": 4248, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84392,7 +84920,7 @@ } }, { - "__docId__": 4231, + "__docId__": 4249, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84413,7 +84941,7 @@ } }, { - "__docId__": 4232, + "__docId__": 4250, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84434,7 +84962,7 @@ } }, { - "__docId__": 4233, + "__docId__": 4251, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84455,7 +84983,7 @@ } }, { - "__docId__": 4234, + "__docId__": 4252, "kind": "set", "name": "reflectivity", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84476,7 +85004,7 @@ } }, { - "__docId__": 4235, + "__docId__": 4253, "kind": "get", "name": "reflectivity", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84497,7 +85025,7 @@ } }, { - "__docId__": 4236, + "__docId__": 4254, "kind": "get", "name": "normalMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84518,7 +85046,7 @@ } }, { - "__docId__": 4237, + "__docId__": 4255, "kind": "get", "name": "ambientMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84539,7 +85067,7 @@ } }, { - "__docId__": 4238, + "__docId__": 4256, "kind": "get", "name": "diffuseMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84560,7 +85088,7 @@ } }, { - "__docId__": 4239, + "__docId__": 4257, "kind": "get", "name": "specularMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84581,7 +85109,7 @@ } }, { - "__docId__": 4240, + "__docId__": 4258, "kind": "get", "name": "emissiveMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84602,7 +85130,7 @@ } }, { - "__docId__": 4241, + "__docId__": 4259, "kind": "get", "name": "alphaMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84623,7 +85151,7 @@ } }, { - "__docId__": 4242, + "__docId__": 4260, "kind": "get", "name": "reflectivityMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84644,7 +85172,7 @@ } }, { - "__docId__": 4243, + "__docId__": 4261, "kind": "get", "name": "occlusionMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84665,7 +85193,7 @@ } }, { - "__docId__": 4244, + "__docId__": 4262, "kind": "get", "name": "diffuseFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84686,7 +85214,7 @@ } }, { - "__docId__": 4245, + "__docId__": 4263, "kind": "get", "name": "specularFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84707,7 +85235,7 @@ } }, { - "__docId__": 4246, + "__docId__": 4264, "kind": "get", "name": "emissiveFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84728,7 +85256,7 @@ } }, { - "__docId__": 4247, + "__docId__": 4265, "kind": "get", "name": "alphaFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84749,7 +85277,7 @@ } }, { - "__docId__": 4248, + "__docId__": 4266, "kind": "get", "name": "reflectivityFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84770,7 +85298,7 @@ } }, { - "__docId__": 4249, + "__docId__": 4267, "kind": "set", "name": "alphaMode", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84791,7 +85319,7 @@ } }, { - "__docId__": 4250, + "__docId__": 4268, "kind": "get", "name": "alphaMode", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84812,7 +85340,7 @@ } }, { - "__docId__": 4251, + "__docId__": 4269, "kind": "set", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84833,7 +85361,7 @@ } }, { - "__docId__": 4252, + "__docId__": 4270, "kind": "get", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84854,7 +85382,7 @@ } }, { - "__docId__": 4253, + "__docId__": 4271, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84875,7 +85403,7 @@ } }, { - "__docId__": 4254, + "__docId__": 4272, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84896,7 +85424,7 @@ } }, { - "__docId__": 4255, + "__docId__": 4273, "kind": "set", "name": "frontface", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84917,7 +85445,7 @@ } }, { - "__docId__": 4256, + "__docId__": 4274, "kind": "get", "name": "frontface", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84938,7 +85466,7 @@ } }, { - "__docId__": 4257, + "__docId__": 4275, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -84953,7 +85481,7 @@ "return": null }, { - "__docId__": 4258, + "__docId__": 4276, "kind": "file", "name": "src/viewer/scene/materials/PointsMaterial.js", "content": "import {Material} from './Material.js';\nimport {RenderState} from '../webgl/RenderState.js';\n\nconst PRESETS = {\n \"default\": {\n pointSize: 4,\n roundPoints: true,\n perspectivePoints: true\n },\n \"square\": {\n pointSize: 4,\n roundPoints: false,\n perspectivePoints: true\n },\n \"round\": {\n pointSize: 4,\n roundPoints: true,\n perspectivePoints: true\n }\n};\n\n/**\n * @desc Configures the size and shape of \"points\" geometry primitives.\n *\n * * Located at {@link Scene#pointsMaterial}.\n * * Supports round and square points.\n * * Optional perspective point scaling.\n * * Globally configures \"points\" primitives for all {@link VBOSceneModel}s.\n *\n * ## Usage\n *\n * In the example below, we'll customize the {@link Scene}'s global ````PointsMaterial````, then use\n * an {@link XKTLoaderPlugin} to load a model containing a point cloud.\n *\n * [[Run this example](/examples/index.html#materials_PointsMaterial)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * viewer.scene.pointsMaterial.pointSize = 2;\n * viewer.scene.pointsMaterial.roundPoints = true;\n * viewer.scene.pointsMaterial.perspectivePoints = true;\n * viewer.scene.pointsMaterial.minPerspectivePointSize = 1;\n * viewer.scene.pointsMaterial.maxPerspectivePointSize = 6;\n * viewer.scene.pointsMaterial.filterIntensity = true;\n * viewer.scene.pointsMaterial.minIntensity = 0.0;\n * viewer.scene.pointsMaterial.maxIntensity = 1.0;\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/xkt/MAP-PointCloud.xkt\"\n * });\n * ````\n */\nclass PointsMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"PointsMaterial\";\n }\n\n /**\n * Gets available PointsMaterial presets.\n *\n * @type {Object}\n */\n get presets() {\n return PRESETS;\n };\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The PointsMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number} [cfg.pointSize=2] Point size in pixels.\n * @param {Boolean} [cfg.roundPoints=true] Whether points are round (````true````) or square (````false````).\n * @param {Boolean} [cfg.perspectivePoints=true] Whether apparent point size reduces with distance when {@link Camera#projection} is set to \"perspective\".\n * @param {Number} [cfg.minPerspectivePointSize=1] When ````perspectivePoints```` is ````true````, this is the minimum rendered size of each point in pixels.\n * @param {Number} [cfg.maxPerspectivePointSize=6] When ````perspectivePoints```` is ````true````, this is the maximum rendered size of each point in pixels.\n * @param {Boolean} [cfg.filterIntensity=false] When this is true, points are only rendered when their intensity value falls within the range given in {@link }\n * @param {Number} [cfg.minIntensity=0] When ````filterIntensity```` is ````true````, points with intensity below this value will not be rendered.\n * @param {Number} [cfg.maxIntensity=1] When ````filterIntensity```` is ````true````, points with intensity above this value will not be rendered.\n * @param {String} [cfg.preset] Selects a preset PointsMaterial configuration - see {@link PointsMaterial#presets}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"PointsMaterial\",\n pointSize: null,\n roundPoints: null,\n perspectivePoints: null,\n minPerspectivePointSize: null,\n maxPerspectivePointSize: null,\n filterIntensity: null,\n minIntensity: null,\n maxIntensity: null\n });\n\n if (cfg.preset) { // Apply preset then override with configs where provided\n this.preset = cfg.preset;\n if (cfg.pointSize !== undefined) {\n this.pointSize = cfg.pointSize;\n }\n if (cfg.roundPoints !== undefined) {\n this.roundPoints = cfg.roundPoints;\n }\n if (cfg.perspectivePoints !== undefined) {\n this.perspectivePoints = cfg.perspectivePoints;\n }\n if (cfg.minPerspectivePointSize !== undefined) {\n this.minPerspectivePointSize = cfg.minPerspectivePointSize;\n }\n if (cfg.maxPerspectivePointSize !== undefined) {\n this.maxPerspectivePointSize = cfg.minPerspectivePointSize;\n }\n } else {\n this._preset = \"default\";\n this.pointSize = cfg.pointSize;\n this.roundPoints = cfg.roundPoints;\n\n this.perspectivePoints = cfg.perspectivePoints;\n this.minPerspectivePointSize = cfg.minPerspectivePointSize;\n this.maxPerspectivePointSize = cfg.maxPerspectivePointSize;\n }\n\n this.filterIntensity = cfg.filterIntensity;\n this.minIntensity = cfg.minIntensity;\n this.maxIntensity = cfg.maxIntensity;\n }\n\n /**\n * Sets point size.\n *\n * Default value is ````2.0```` pixels.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 2.0;\n this.glRedraw();\n }\n\n /**\n * Gets point size.\n *\n * Default value is ````2.0```` pixels.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n\n /**\n * Sets if points are round or square.\n *\n * Default is ````true```` to set points round.\n *\n * @type {Boolean}\n */\n set roundPoints(value) {\n value = (value !== false);\n if (this._state.roundPoints === value) {\n return;\n }\n this._state.roundPoints = value;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets if points are round or square.\n *\n * Default is ````true```` to set points round.\n *\n * @type {Boolean}\n */\n get roundPoints() {\n return this._state.roundPoints;\n }\n\n /**\n * Sets if rendered point size reduces with distance when {@link Camera#projection} is set to ````\"perspective\"````.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set perspectivePoints(value) {\n value = (value !== false);\n if (this._state.perspectivePoints === value) {\n return;\n }\n this._state.perspectivePoints = value;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets if rendered point size reduces with distance when {@link Camera#projection} is set to \"perspective\".\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get perspectivePoints() {\n return this._state.perspectivePoints;\n }\n\n /**\n * Sets the minimum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n set minPerspectivePointSize(value) {\n this._state.minPerspectivePointSize = value || 1.0;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets the minimum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n get minPerspectivePointSize() {\n return this._state.minPerspectivePointSize;\n }\n\n /**\n * Sets the maximum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````6```` pixels.\n *\n * @type {Number}\n */\n set maxPerspectivePointSize(value) {\n this._state.maxPerspectivePointSize = value || 6;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets the maximum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````6```` pixels.\n *\n * @type {Number}\n */\n get maxPerspectivePointSize() {\n return this._state.maxPerspectivePointSize;\n }\n\n /**\n * Sets if rendered point size reduces with distance when {@link Camera#projection} is set to ````\"perspective\"````.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set filterIntensity(value) {\n value = (value !== false);\n if (this._state.filterIntensity === value) {\n return;\n }\n this._state.filterIntensity = value;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets if rendered point size reduces with distance when {@link Camera#projection} is set to \"perspective\".\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get filterIntensity() {\n return this._state.filterIntensity;\n }\n\n /**\n * Sets the minimum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n set minIntensity(value) {\n this._state.minIntensity = (value !== undefined && value !== null) ? value: 0.0;\n this.glRedraw();\n }\n\n /**\n * Gets the minimum rendered size of points when {@link PointsMaterial#filterIntensity} is ````true````.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n get minIntensity() {\n return this._state.minIntensity;\n }\n\n /**\n * Sets the maximum rendered size of points when {@link PointsMaterial#filterIntensity} is ````true````.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set maxIntensity(value) {\n this._state.maxIntensity = (value !== undefined && value !== null) ? value: 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the maximum rendered size of points when {@link PointsMaterial#filterIntensity} is ````true````.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get maxIntensity() {\n return this._state.maxIntensity;\n }\n\n /**\n * Selects a preset ````PointsMaterial```` configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n set preset(value) {\n value = value || \"default\";\n if (this._preset === value) {\n return;\n }\n const preset = PRESETS[value];\n if (!preset) {\n this.error(\"unsupported preset: '\" + value + \"' - supported values are \" + Object.keys(PRESETS).join(\", \"));\n return;\n }\n this.pointSize = preset.pointSize;\n this.roundPoints = preset.roundPoints;\n this.perspectivePoints = preset.perspectivePoints;\n this.minPerspectivePointSize = preset.minPerspectivePointSize;\n this.maxPerspectivePointSize = preset.maxPerspectivePointSize;\n this._preset = value;\n }\n\n /**\n * The current preset ````PointsMaterial```` configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n get preset() {\n return this._preset;\n }\n\n /**\n * @private\n * @return {string}\n */\n get hash() {\n return [\n this.pointSize,\n this.roundPoints,\n this.perspectivePoints,\n this.minPerspectivePointSize,\n this.maxPerspectivePointSize,\n this.filterIntensity\n ].join((\";\"));\n }\n\n /**\n * Destroys this ````PointsMaterial````.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {PointsMaterial};", @@ -84964,7 +85492,7 @@ "lineNumber": 1 }, { - "__docId__": 4259, + "__docId__": 4277, "kind": "variable", "name": "PRESETS", "memberof": "src/viewer/scene/materials/PointsMaterial.js", @@ -84985,7 +85513,7 @@ "ignore": true }, { - "__docId__": 4260, + "__docId__": 4278, "kind": "class", "name": "PointsMaterial", "memberof": "src/viewer/scene/materials/PointsMaterial.js", @@ -85003,7 +85531,7 @@ ] }, { - "__docId__": 4261, + "__docId__": 4279, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85022,7 +85550,7 @@ } }, { - "__docId__": 4262, + "__docId__": 4280, "kind": "get", "name": "presets", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85043,7 +85571,7 @@ } }, { - "__docId__": 4263, + "__docId__": 4281, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85200,7 +85728,7 @@ ] }, { - "__docId__": 4264, + "__docId__": 4282, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85218,7 +85746,7 @@ } }, { - "__docId__": 4271, + "__docId__": 4289, "kind": "member", "name": "_preset", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85236,7 +85764,7 @@ } }, { - "__docId__": 4280, + "__docId__": 4298, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85257,7 +85785,7 @@ } }, { - "__docId__": 4281, + "__docId__": 4299, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85278,7 +85806,7 @@ } }, { - "__docId__": 4282, + "__docId__": 4300, "kind": "set", "name": "roundPoints", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85299,7 +85827,7 @@ } }, { - "__docId__": 4283, + "__docId__": 4301, "kind": "get", "name": "roundPoints", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85320,7 +85848,7 @@ } }, { - "__docId__": 4284, + "__docId__": 4302, "kind": "set", "name": "perspectivePoints", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85341,7 +85869,7 @@ } }, { - "__docId__": 4285, + "__docId__": 4303, "kind": "get", "name": "perspectivePoints", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85362,7 +85890,7 @@ } }, { - "__docId__": 4286, + "__docId__": 4304, "kind": "set", "name": "minPerspectivePointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85383,7 +85911,7 @@ } }, { - "__docId__": 4287, + "__docId__": 4305, "kind": "get", "name": "minPerspectivePointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85404,7 +85932,7 @@ } }, { - "__docId__": 4288, + "__docId__": 4306, "kind": "set", "name": "maxPerspectivePointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85425,7 +85953,7 @@ } }, { - "__docId__": 4289, + "__docId__": 4307, "kind": "get", "name": "maxPerspectivePointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85446,7 +85974,7 @@ } }, { - "__docId__": 4290, + "__docId__": 4308, "kind": "set", "name": "filterIntensity", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85467,7 +85995,7 @@ } }, { - "__docId__": 4291, + "__docId__": 4309, "kind": "get", "name": "filterIntensity", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85488,7 +86016,7 @@ } }, { - "__docId__": 4292, + "__docId__": 4310, "kind": "set", "name": "minIntensity", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85509,7 +86037,7 @@ } }, { - "__docId__": 4293, + "__docId__": 4311, "kind": "get", "name": "minIntensity", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85530,7 +86058,7 @@ } }, { - "__docId__": 4294, + "__docId__": 4312, "kind": "set", "name": "maxIntensity", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85551,7 +86079,7 @@ } }, { - "__docId__": 4295, + "__docId__": 4313, "kind": "get", "name": "maxIntensity", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85572,7 +86100,7 @@ } }, { - "__docId__": 4296, + "__docId__": 4314, "kind": "set", "name": "preset", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85593,7 +86121,7 @@ } }, { - "__docId__": 4303, + "__docId__": 4321, "kind": "get", "name": "preset", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85614,7 +86142,7 @@ } }, { - "__docId__": 4304, + "__docId__": 4322, "kind": "get", "name": "hash", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85641,7 +86169,7 @@ } }, { - "__docId__": 4305, + "__docId__": 4323, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -85656,7 +86184,7 @@ "return": null }, { - "__docId__": 4306, + "__docId__": 4324, "kind": "file", "name": "src/viewer/scene/materials/SpecularMaterial.js", "content": "import {Material} from './Material.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {math} from '../math/math.js';\n\nconst alphaModes = {\"opaque\": 0, \"mask\": 1, \"blend\": 2};\nconst alphaModeNames = [\"opaque\", \"mask\", \"blend\"];\n\n/**\n * @desc Configures the normal rendered appearance of {@link Mesh}es using the physically-accurate *specular-glossiness* shading model.\n *\n * * Useful for insulators, such as wood, ceramics and plastic.\n * * {@link MetallicMaterial} is best for conductive materials, such as metal.\n * * {@link PhongMaterial} is appropriate for non-realistic objects.\n * * {@link LambertMaterial} is appropriate for high-detail models that need to render as efficiently as possible.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a {@link buildTorusGeometry} and a SpecularMaterial.\n *\n * Note that in this example we're providing separate {@link Texture} for the {@link SpecularMaterial#specular} and {@link SpecularMaterial#glossiness}\n * channels, which allows us a little creative flexibility. Then, in the next example further down, we'll combine those channels\n * within the same {@link Texture} for efficiency.\n *\n * ````javascript\n * import {Viewer, Mesh, buildTorusGeometry, SpecularMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({ canvasId: \"myCanvas\" });\n *\n * const myMesh = new Mesh(viewer.scene,{\n *\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry()),\n *\n * material: new SpecularMaterial(viewer.scene,{\n *\n * // Channels with default values, just to show them\n *\n * diffuse: [1.0, 1.0, 1.0],\n * specular: [1.0, 1.0, 1.0],\n * glossiness: 1.0,\n * emissive: [0.0, 0.0, 0.0]\n * alpha: 1.0,\n *\n * // Textures to multiply some of the channels\n *\n * diffuseMap: new Texture(viewer.scene, { // RGB components multiply by diffuse\n * src: \"textures/diffuse.jpg\"\n * }),\n * specularMap: new Texture(viewer.scene, { // RGB component multiplies by specular\n * src: \"textures/specular.jpg\"\n * }),\n * glossinessMap: new Texture(viewer.scene, { // R component multiplies by glossiness\n * src: \"textures/glossiness.jpg\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"textures/normalMap.jpg\"\n * })\n * })\n * });\n * ````\n *\n * ## Combining Channels Within the Same Textures\n *\n * In the previous example we provided separate {@link Texture} for the {@link SpecularMaterial#specular} and\n * {@link SpecularMaterial#glossiness} channels, but we can combine those channels into the same {@link Texture} to reduce\n * download time, memory footprint and rendering time (and also for glTF compatibility).\n *\n * Here's our SpecularMaterial again with those channels combined in the {@link SpecularMaterial#specularGlossinessMap}\n * {@link Texture}, where the *RGB* component multiplies by {@link SpecularMaterial#specular} and *A* multiplies by {@link SpecularMaterial#glossiness}.\n *\n * ````javascript\n * const myMesh = new Mesh(viewer.scene,{\n *\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry()),\n *\n * material: new SpecularMaterial(viewer.scene,{\n *\n * // Channels with default values, just to show them\n *\n * diffuse: [1.0, 1.0, 1.0],\n * specular: [1.0, 1.0, 1.0],\n * glossiness: 1.0,\n * emissive: [0.0, 0.0, 0.0]\n * alpha: 1.0,\n *\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse.jpg\"\n * }),\n * specularGlossinessMap: new Texture(viewer.scene, { // RGB multiplies by specular, A by glossiness\n * src: \"textures/specularGlossiness.jpg\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"textures/normalMap.jpg\"\n * })\n * })\n * });\n * ````\n *\n * Although not shown in this example, we can also texture {@link SpecularMaterial#alpha} with\n * the *A* component of {@link SpecularMaterial#diffuseMap}'s {@link Texture}, if required.\n *\n * ## Alpha Blending\n *\n * Let's make our {@link Mesh} transparent. We'll redefine {@link SpecularMaterial#alpha}\n * and {@link SpecularMaterial#alphaMode}, causing it to blend 50% with the background:\n *\n * ````javascript\n * const myMesh = new Mesh(viewer.scene,{\n *\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry()),\n *\n * material: new SpecularMaterial(viewer.scene,{\n *\n * // Channels with default values, just to show them\n *\n * diffuse: [1.0, 1.0, 1.0],\n * specular: [1.0, 1.0, 1.0],\n * glossiness: 1.0,\n * emissive: [0.0, 0.0, 0.0]\n * alpha: 0.5, // <<----------- Changed\n * alphaMode: \"blend\", // <<----------- Added\n *\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse.jpg\"\n * }),\n * specularGlossinessMap: new Texture(viewer.scene, { // RGB multiplies by specular, A by glossiness\n * src: \"textures/specularGlossiness.jpg\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"textures/normalMap.jpg\"\n * })\n * })\n * });\n * ````\n *\n * ## Alpha Masking\n *\n * Now let's make holes in our {@link Mesh}. We'll give its SpecularMaterial an {@link SpecularMaterial#alphaMap}\n * and configure {@link SpecularMaterial#alpha}, {@link SpecularMaterial#alphaMode},\n * and {@link SpecularMaterial#alphaCutoff} to treat it as an alpha mask:\n *\n * ````javascript\n * const myMesh = new Mesh(viewer.scene,{\n *\n * geometry: buildTorusGeometry(viewer.scene, ReadableGeometry, {}),\n *\n * material: new SpecularMaterial(viewer.scene, {\n *\n * // Channels with default values, just to show them\n *\n * diffuse: [1.0, 1.0, 1.0],\n * specular: [1.0, 1.0, 1.0],\n * glossiness: 1.0,\n * emissive: [0.0, 0.0, 0.0]\n * alpha: 1.0, // <<----------- Changed\n * alphaMode: \"mask\", // <<----------- Changed\n * alphaCutoff: 0.2, // <<----------- Added\n *\n * alphaMap: new Texture(viewer.scene, { // <<---------- Added\n * src: \"textures/diffuse/crossGridColorMap.jpg\"\n * }),\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse.jpg\"\n * }),\n * specularGlossinessMap: new Texture(viewer.scene, { // RGB multiplies by specular, A by glossiness\n * src: \"textures/specularGlossiness.jpg\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"textures/normalMap.jpg\"\n * })\n * })\n * });\n * ````\n *\n * ## Background Theory\n *\n * For an introduction to physically-based rendering (PBR) concepts, try these articles:\n *\n * * Joe Wilson's [Basic Theory of Physically-Based Rendering](https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/)\n * * Jeff Russel's [Physically-based Rendering, and you can too!](https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/)\n * * Sebastien Legarde's [Adapting a physically-based shading model](http://seblagarde.wordpress.com/tag/physically-based-rendering/)\n *\n * ## SpecularMaterial Properties\n *\n * The following table summarizes SpecularMaterial properties:\n *\n * | Property | Type | Range | Default Value | Space | Description |\n * |:--------:|:----:|:-----:|:-------------:|:-----:|:-----------:|\n * | {@link SpecularMaterial#diffuse} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the diffuse color of the material. |\n * | {@link SpecularMaterial#specular} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the specular color of the material. |\n * | {@link SpecularMaterial#glossiness} | Number | [0, 1] | 1 | linear | The glossiness the material. |\n * | {@link SpecularMaterial#specularF0} | Number | [0, 1] | 1 | linear | The specularF0 of the material surface. |\n * | {@link SpecularMaterial#emissive} | Array | [0, 1] for all components | [0,0,0] | linear | The RGB components of the emissive color of the material. |\n * | {@link SpecularMaterial#alpha} | Number | [0, 1] | 1 | linear | The transparency of the material surface (0 fully transparent, 1 fully opaque). |\n * | {@link SpecularMaterial#diffuseMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link SpecularMaterial#diffuse}. If the fourth component (A) is present, it multiplies by {@link SpecularMaterial#alpha}. |\n * | {@link SpecularMaterial#specularMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link SpecularMaterial#specular}. If the fourth component (A) is present, it multiplies by {@link SpecularMaterial#alpha}. |\n * | {@link SpecularMaterial#glossinessMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link SpecularMaterial#glossiness}. |\n * | {@link SpecularMaterial#specularGlossinessMap} | {@link Texture} | | null | linear | Texture with first three components multiplying by {@link SpecularMaterial#specular} and fourth component multiplying by {@link SpecularMaterial#glossiness}. |\n * | {@link SpecularMaterial#emissiveMap} | {@link Texture} | | null | linear | Texture with RGB components multiplying by {@link SpecularMaterial#emissive}. |\n * | {@link SpecularMaterial#alphaMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link SpecularMaterial#alpha}. |\n * | {@link SpecularMaterial#occlusionMap} | {@link Texture} | | null | linear | Ambient occlusion texture multiplying by surface's reflected diffuse and specular light. |\n * | {@link SpecularMaterial#normalMap} | {@link Texture} | | null | linear | Tangent-space normal map. |\n * | {@link SpecularMaterial#alphaMode} | String | \"opaque\", \"blend\", \"mask\" | \"blend\" | | Alpha blend mode. |\n * | {@link SpecularMaterial#alphaCutoff} | Number | [0..1] | 0.5 | | Alpha cutoff value. |\n * | {@link SpecularMaterial#backfaces} | Boolean | | false | | Whether to render {@link Geometry} backfaces. |\n * | {@link SpecularMaterial#frontface} | String | \"ccw\", \"cw\" | \"ccw\" | | The winding order for {@link Geometry} frontfaces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise. |\n *\n */\nclass SpecularMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"SpecularMaterial\";\n }\n\n /**\n *\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The SpecularMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.diffuse=[1,1,1]] RGB diffuse color of this SpecularMaterial. Multiplies by the RGB components of {@link SpecularMaterial#diffuseMap}.\n * @param {Texture} [cfg.diffuseMap=undefined] RGBA {@link Texture} containing the diffuse color of this SpecularMaterial, with optional *A* component for alpha. The RGB components multiply by {@link SpecularMaterial#diffuse}, while the *A* component, if present, multiplies by {@link SpecularMaterial#alpha}.\n * @param {Number} [cfg.specular=[1,1,1]] RGB specular color of this SpecularMaterial. Multiplies by the {@link SpecularMaterial#specularMap} and the *RGB* components of {@link SpecularMaterial#specularGlossinessMap}.\n * @param {Texture} [cfg.specularMap=undefined] RGB texture containing the specular color of this SpecularMaterial. Multiplies by the {@link SpecularMaterial#specular} property. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Number} [cfg.glossiness=1.0] Factor in the range [0..1] indicating how glossy this SpecularMaterial is. 0 is no glossiness, 1 is full glossiness. Multiplies by the *R* component of {@link SpecularMaterial#glossinessMap} and the *A* component of {@link SpecularMaterial#specularGlossinessMap}.\n * @param {Texture} [cfg.specularGlossinessMap=undefined] RGBA {@link Texture} containing this SpecularMaterial's specular color in its *RGB* component and glossiness in its *A* component. Its *RGB* components multiply by {@link SpecularMaterial#specular}, while its *A* component multiplies by {@link SpecularMaterial#glossiness}. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Number} [cfg.specularF0=0.0] Factor in the range 0..1 indicating how reflective this SpecularMaterial is.\n * @param {Number[]} [cfg.emissive=[0,0,0]] RGB emissive color of this SpecularMaterial. Multiplies by the RGB components of {@link SpecularMaterial#emissiveMap}.\n * @param {Texture} [cfg.emissiveMap=undefined] RGB {@link Texture} containing the emissive color of this SpecularMaterial. Multiplies by the {@link SpecularMaterial#emissive} property. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Texture} [cfg.occlusionMap=undefined] RGB ambient occlusion {@link Texture}. Within shaders, multiplies by the specular and diffuse light reflected by surfaces. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Texture} [cfg.normalMap=undefined] {Texture} RGB tangent-space normal {@link Texture}. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Number} [cfg.alpha=1.0] Factor in the range 0..1 indicating how transparent this SpecularMaterial is. A value of 0.0 indicates fully transparent, 1.0 is fully opaque. Multiplies by the *R* component of {@link SpecularMaterial#alphaMap} and the *A* component, if present, of {@link SpecularMaterial#diffuseMap}.\n * @param {Texture} [cfg.alphaMap=undefined] RGB {@link Texture} containing this SpecularMaterial's alpha in its *R* component. The *R* component multiplies by the {@link SpecularMaterial#alpha} property. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {String} [cfg.alphaMode=\"opaque\"] The alpha blend mode - accepted values are \"opaque\", \"blend\" and \"mask\". See the {@link SpecularMaterial#alphaMode} property for more info.\n * @param {Number} [cfg.alphaCutoff=0.5] The alpha cutoff value. See the {@link SpecularMaterial#alphaCutoff} property for more info.\n * @param {Boolean} [cfg.backfaces=false] Whether to render {@link Geometry} backfaces.\n * @param {Boolean} [cfg.frontface=\"ccw\"] The winding order for {@link Geometry} front faces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise.\n * @param {Number} [cfg.lineWidth=1] Scalar that controls the width of {@link Geometry lines.\n * @param {Number} [cfg.pointSize=1] Scalar that controls the size of {@link Geometry} points.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"SpecularMaterial\",\n diffuse: math.vec3([1.0, 1.0, 1.0]),\n emissive: math.vec3([0.0, 0.0, 0.0]),\n specular: math.vec3([1.0, 1.0, 1.0]),\n glossiness: null,\n specularF0: null,\n alpha: null,\n alphaMode: null,\n alphaCutoff: null,\n lineWidth: null,\n pointSize: null,\n backfaces: null,\n frontface: null, // Boolean for speed; true == \"ccw\", false == \"cw\"\n hash: null\n });\n\n this.diffuse = cfg.diffuse;\n this.specular = cfg.specular;\n this.glossiness = cfg.glossiness;\n this.specularF0 = cfg.specularF0;\n this.emissive = cfg.emissive;\n this.alpha = cfg.alpha;\n\n if (cfg.diffuseMap) {\n this._diffuseMap = this._checkComponent(\"Texture\", cfg.diffuseMap);\n }\n if (cfg.emissiveMap) {\n this._emissiveMap = this._checkComponent(\"Texture\", cfg.emissiveMap);\n }\n if (cfg.specularMap) {\n this._specularMap = this._checkComponent(\"Texture\", cfg.specularMap);\n }\n if (cfg.glossinessMap) {\n this._glossinessMap = this._checkComponent(\"Texture\", cfg.glossinessMap);\n }\n if (cfg.specularGlossinessMap) {\n this._specularGlossinessMap = this._checkComponent(\"Texture\", cfg.specularGlossinessMap);\n }\n if (cfg.occlusionMap) {\n this._occlusionMap = this._checkComponent(\"Texture\", cfg.occlusionMap);\n }\n if (cfg.alphaMap) {\n this._alphaMap = this._checkComponent(\"Texture\", cfg.alphaMap);\n }\n if (cfg.normalMap) {\n this._normalMap = this._checkComponent(\"Texture\", cfg.normalMap);\n }\n\n this.alphaMode = cfg.alphaMode;\n this.alphaCutoff = cfg.alphaCutoff;\n this.backfaces = cfg.backfaces;\n this.frontface = cfg.frontface;\n\n this.lineWidth = cfg.lineWidth;\n this.pointSize = cfg.pointSize;\n\n this._makeHash();\n }\n\n _makeHash() {\n const state = this._state;\n const hash = [\"/spe\"];\n if (this._diffuseMap) {\n hash.push(\"/dm\");\n if (this._diffuseMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._diffuseMap.encoding);\n }\n if (this._emissiveMap) {\n hash.push(\"/em\");\n if (this._emissiveMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._glossinessMap) {\n hash.push(\"/gm\");\n if (this._glossinessMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._specularMap) {\n hash.push(\"/sm\");\n if (this._specularMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._specularGlossinessMap) {\n hash.push(\"/sgm\");\n if (this._specularGlossinessMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._occlusionMap) {\n hash.push(\"/ocm\");\n if (this._occlusionMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._normalMap) {\n hash.push(\"/nm\");\n if (this._normalMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._alphaMap) {\n hash.push(\"/opm\");\n if (this._alphaMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n /**\n * Sets the RGB diffuse color of this SpecularMaterial.\n *\n * Multiplies by the *RGB* components of {@link SpecularMaterial#diffuseMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n set diffuse(value) {\n let diffuse = this._state.diffuse;\n if (!diffuse) {\n diffuse = this._state.diffuse = new Float32Array(3);\n } else if (value && diffuse[0] === value[0] && diffuse[1] === value[1] && diffuse[2] === value[2]) {\n return;\n }\n if (value) {\n diffuse[0] = value[0];\n diffuse[1] = value[1];\n diffuse[2] = value[2];\n } else {\n diffuse[0] = 1;\n diffuse[1] = 1;\n diffuse[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB diffuse color of this SpecularMaterial.\n *\n * @type {Number[]}\n */\n get diffuse() {\n return this._state.diffuse;\n }\n\n /**\n * Gets the RGB {@link Texture} containing the diffuse color of this SpecularMaterial, with optional *A* component for alpha.\n *\n * The *RGB* components multipliues by the {@link SpecularMaterial#diffuse} property, while the *A* component, if present, multiplies by the {@link SpecularMaterial#alpha} property.\n *\n * @type {Texture}\n */\n get diffuseMap() {\n return this._diffuseMap;\n }\n\n /**\n * Sets the RGB specular color of this SpecularMaterial.\n *\n * Multiplies by {@link SpecularMaterial#specularMap} and the *A* component of {@link SpecularMaterial#specularGlossinessMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n set specular(value) {\n let specular = this._state.specular;\n if (!specular) {\n specular = this._state.specular = new Float32Array(3);\n } else if (value && specular[0] === value[0] && specular[1] === value[1] && specular[2] === value[2]) {\n return;\n }\n if (value) {\n specular[0] = value[0];\n specular[1] = value[1];\n specular[2] = value[2];\n } else {\n specular[0] = 1;\n specular[1] = 1;\n specular[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB specular color of this SpecularMaterial.\n *\n * @type {Number[]}\n */\n get specular() {\n return this._state.specular;\n }\n\n /**\n * Gets the RGB texture containing the specular color of this SpecularMaterial.\n *\n * Multiplies by {@link SpecularMaterial#specular}.\n *\n * @type {Texture}\n */\n get specularMap() {\n return this._specularMap;\n }\n\n /**\n * Gets the RGBA texture containing this SpecularMaterial's specular color in its *RGB* components and glossiness in its *A* component.\n *\n * The *RGB* components multiplies {@link SpecularMaterial#specular}, while the *A* component multiplies by {@link SpecularMaterial#glossiness}.\n *\n * @type {Texture}\n */\n get specularGlossinessMap() {\n return this._specularGlossinessMap;\n }\n\n /**\n * Sets the Factor in the range [0..1] indicating how glossy this SpecularMaterial is.\n *\n * ````0```` is no glossiness, ````1```` is full glossiness.\n *\n * Multiplies by the *R* component of {@link SpecularMaterial#glossinessMap} and the *A* component of {@link SpecularMaterial#specularGlossinessMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set glossiness(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.glossiness === value) {\n return;\n }\n this._state.glossiness = value;\n this.glRedraw();\n }\n\n /**\n * Gets the Factor in the range ````[0..1]```` indicating how glossy this SpecularMaterial is.\n\n * @type {Number}\n */\n get glossiness() {\n return this._state.glossiness;\n }\n\n /**\n * Gets the RGB texture containing this SpecularMaterial's glossiness in its *R* component.\n *\n * The *R* component multiplies by {@link SpecularMaterial#glossiness}.\n ** @type {Texture}\n */\n get glossinessMap() {\n return this._glossinessMap;\n }\n\n /**\n * Sets the factor in the range ````[0..1]```` indicating amount of specular Fresnel.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n set specularF0(value) {\n value = (value !== undefined && value !== null) ? value : 0.0;\n if (this._state.specularF0 === value) {\n return;\n }\n this._state.specularF0 = value;\n this.glRedraw();\n }\n\n /**\n * Gets the factor in the range ````[0..1]```` indicating amount of specular Fresnel.\n *\n * @type {Number}\n */\n get specularF0() {\n return this._state.specularF0;\n }\n\n /**\n * Sets the RGB emissive color of this SpecularMaterial.\n *\n * Multiplies by {@link SpecularMaterial#emissiveMap}.\n\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n set emissive(value) {\n let emissive = this._state.emissive;\n if (!emissive) {\n emissive = this._state.emissive = new Float32Array(3);\n } else if (value && emissive[0] === value[0] && emissive[1] === value[1] && emissive[2] === value[2]) {\n return;\n }\n if (value) {\n emissive[0] = value[0];\n emissive[1] = value[1];\n emissive[2] = value[2];\n } else {\n emissive[0] = 0;\n emissive[1] = 0;\n emissive[2] = 0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB emissive color of this SpecularMaterial.\n *\n * @type {Number[]}\n */\n get emissive() {\n return this._state.emissive;\n }\n\n /**\n * Gets the RGB texture containing the emissive color of this SpecularMaterial.\n *\n * Multiplies by {@link SpecularMaterial#emissive}.\n *\n * @type {Texture}\n */\n get emissiveMap() {\n return this._emissiveMap;\n }\n\n /**\n * Sets the factor in the range [0..1] indicating how transparent this SpecularMaterial is.\n *\n * A value of ````0.0```` is fully transparent, while ````1.0```` is fully opaque.\n *\n * Multiplies by the *R* component of {@link SpecularMaterial#alphaMap} and the *A* component, if present, of {@link SpecularMaterial#diffuseMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set alpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.alpha === value) {\n return;\n }\n this._state.alpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets the factor in the range [0..1] indicating how transparent this SpecularMaterial is.\n *\n * @type {Number}\n */\n get alpha() {\n return this._state.alpha;\n }\n\n /**\n * Gets the RGB {@link Texture} with alpha in its *R* component.\n *\n * The *R* component multiplies by the {@link SpecularMaterial#alpha} property.\n *\n * @type {Texture}\n */\n get alphaMap() {\n return this._alphaMap;\n }\n\n /**\n * Gets the RGB tangent-space normal {@link Texture} attached to this SpecularMaterial.\n *\n * @type {Texture}\n */\n get normalMap() {\n return this._normalMap;\n }\n\n /**\n * Gets the RGB ambient occlusion {@link Texture} attached to this SpecularMaterial.\n *\n * Multiplies by the specular and diffuse light reflected by surfaces.\n *\n * @type {Texture}\n */\n get occlusionMap() {\n return this._occlusionMap;\n }\n\n /**\n * Sets the alpha rendering mode.\n *\n * This governs how alpha is treated. Alpha is the combined result of the {@link SpecularMaterial#alpha} and {@link SpecularMaterial#alphaMap} properties.\n *\n * Accepted values are:\n *\n * * \"opaque\" - The alpha value is ignored and the rendered output is fully opaque (default).\n * * \"mask\" - The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value.\n * * \"blend\" - The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator)\n *\n * @type {String}\n */\n set alphaMode(alphaMode) {\n alphaMode = alphaMode || \"opaque\";\n let value = alphaModes[alphaMode];\n if (value === undefined) {\n this.error(\"Unsupported value for 'alphaMode': \" + alphaMode + \" defaulting to 'opaque'\");\n value = \"opaque\";\n }\n if (this._state.alphaMode === value) {\n return;\n }\n this._state.alphaMode = value;\n this.glRedraw();\n }\n\n get alphaMode() {\n return alphaModeNames[this._state.alphaMode];\n }\n\n /**\n * Sets the alpha cutoff value.\n *\n * Specifies the cutoff threshold when {@link SpecularMaterial#alphaMode} equals \"mask\". If the alpha is greater than or equal to this value then it is rendered as fully opaque, otherwise, it is rendered as fully transparent. A value greater than 1.0 will render the entire material as fully transparent. This value is ignored for other modes.\n *\n * Alpha is the combined result of the {@link SpecularMaterial#alpha} and {@link SpecularMaterial#alphaMap} properties.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n set alphaCutoff(alphaCutoff) {\n if (alphaCutoff === null || alphaCutoff === undefined) {\n alphaCutoff = 0.5;\n }\n if (this._state.alphaCutoff === alphaCutoff) {\n return;\n }\n this._state.alphaCutoff = alphaCutoff;\n }\n\n /**\n * Gets the alpha cutoff value.\n\n * @type {Number}\n */\n get alphaCutoff() {\n return this._state.alphaCutoff;\n }\n\n /**\n * Sets whether backfaces are visible on attached {@link Mesh}es.\n *\n * The backfaces will belong to {@link ReadableGeometry} compoents that are also attached to the {@link Mesh}es.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether backfaces are visible on attached {@link Mesh}es.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * Default value is ````\"ccw\"````.\n *\n * @type {String}\n */\n set frontface(value) {\n value = value !== \"cw\";\n if (this._state.frontface === value) {\n return;\n }\n this._state.frontface = value;\n this.glRedraw();\n }\n\n /**\n * Gets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * @type {String}\n */\n get frontface() {\n return this._state.frontface ? \"ccw\" : \"cw\";\n }\n\n /**\n * Sets the SpecularMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the SpecularMaterial's line width.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Sets the SpecularMaterial's point size.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 1;\n this.glRedraw();\n }\n\n /**\n * Sets the SpecularMaterial's point size.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n /**\n * Destroys this SpecularMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {SpecularMaterial};", @@ -85667,7 +86195,7 @@ "lineNumber": 1 }, { - "__docId__": 4307, + "__docId__": 4325, "kind": "variable", "name": "alphaModes", "memberof": "src/viewer/scene/materials/SpecularMaterial.js", @@ -85688,7 +86216,7 @@ "ignore": true }, { - "__docId__": 4308, + "__docId__": 4326, "kind": "variable", "name": "alphaModeNames", "memberof": "src/viewer/scene/materials/SpecularMaterial.js", @@ -85709,7 +86237,7 @@ "ignore": true }, { - "__docId__": 4309, + "__docId__": 4327, "kind": "class", "name": "SpecularMaterial", "memberof": "src/viewer/scene/materials/SpecularMaterial.js", @@ -85727,7 +86255,7 @@ ] }, { - "__docId__": 4310, + "__docId__": 4328, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -85746,7 +86274,7 @@ } }, { - "__docId__": 4311, + "__docId__": 4329, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86037,7 +86565,7 @@ ] }, { - "__docId__": 4312, + "__docId__": 4330, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86055,7 +86583,7 @@ } }, { - "__docId__": 4319, + "__docId__": 4337, "kind": "member", "name": "_diffuseMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86073,7 +86601,7 @@ } }, { - "__docId__": 4320, + "__docId__": 4338, "kind": "member", "name": "_emissiveMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86091,7 +86619,7 @@ } }, { - "__docId__": 4321, + "__docId__": 4339, "kind": "member", "name": "_specularMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86109,7 +86637,7 @@ } }, { - "__docId__": 4322, + "__docId__": 4340, "kind": "member", "name": "_glossinessMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86127,7 +86655,7 @@ } }, { - "__docId__": 4323, + "__docId__": 4341, "kind": "member", "name": "_specularGlossinessMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86145,7 +86673,7 @@ } }, { - "__docId__": 4324, + "__docId__": 4342, "kind": "member", "name": "_occlusionMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86163,7 +86691,7 @@ } }, { - "__docId__": 4325, + "__docId__": 4343, "kind": "member", "name": "_alphaMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86181,7 +86709,7 @@ } }, { - "__docId__": 4326, + "__docId__": 4344, "kind": "member", "name": "_normalMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86199,7 +86727,7 @@ } }, { - "__docId__": 4333, + "__docId__": 4351, "kind": "method", "name": "_makeHash", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86216,7 +86744,7 @@ "return": null }, { - "__docId__": 4334, + "__docId__": 4352, "kind": "set", "name": "diffuse", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86237,7 +86765,7 @@ } }, { - "__docId__": 4335, + "__docId__": 4353, "kind": "get", "name": "diffuse", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86258,7 +86786,7 @@ } }, { - "__docId__": 4336, + "__docId__": 4354, "kind": "get", "name": "diffuseMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86279,7 +86807,7 @@ } }, { - "__docId__": 4337, + "__docId__": 4355, "kind": "set", "name": "specular", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86300,7 +86828,7 @@ } }, { - "__docId__": 4338, + "__docId__": 4356, "kind": "get", "name": "specular", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86321,7 +86849,7 @@ } }, { - "__docId__": 4339, + "__docId__": 4357, "kind": "get", "name": "specularMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86342,7 +86870,7 @@ } }, { - "__docId__": 4340, + "__docId__": 4358, "kind": "get", "name": "specularGlossinessMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86363,7 +86891,7 @@ } }, { - "__docId__": 4341, + "__docId__": 4359, "kind": "set", "name": "glossiness", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86384,7 +86912,7 @@ } }, { - "__docId__": 4342, + "__docId__": 4360, "kind": "get", "name": "glossiness", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86405,7 +86933,7 @@ } }, { - "__docId__": 4343, + "__docId__": 4361, "kind": "get", "name": "glossinessMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86423,7 +86951,7 @@ } }, { - "__docId__": 4344, + "__docId__": 4362, "kind": "set", "name": "specularF0", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86444,7 +86972,7 @@ } }, { - "__docId__": 4345, + "__docId__": 4363, "kind": "get", "name": "specularF0", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86465,7 +86993,7 @@ } }, { - "__docId__": 4346, + "__docId__": 4364, "kind": "set", "name": "emissive", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86486,7 +87014,7 @@ } }, { - "__docId__": 4347, + "__docId__": 4365, "kind": "get", "name": "emissive", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86507,7 +87035,7 @@ } }, { - "__docId__": 4348, + "__docId__": 4366, "kind": "get", "name": "emissiveMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86528,7 +87056,7 @@ } }, { - "__docId__": 4349, + "__docId__": 4367, "kind": "set", "name": "alpha", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86549,7 +87077,7 @@ } }, { - "__docId__": 4350, + "__docId__": 4368, "kind": "get", "name": "alpha", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86570,7 +87098,7 @@ } }, { - "__docId__": 4351, + "__docId__": 4369, "kind": "get", "name": "alphaMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86591,7 +87119,7 @@ } }, { - "__docId__": 4352, + "__docId__": 4370, "kind": "get", "name": "normalMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86612,7 +87140,7 @@ } }, { - "__docId__": 4353, + "__docId__": 4371, "kind": "get", "name": "occlusionMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86633,7 +87161,7 @@ } }, { - "__docId__": 4354, + "__docId__": 4372, "kind": "set", "name": "alphaMode", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86654,7 +87182,7 @@ } }, { - "__docId__": 4355, + "__docId__": 4373, "kind": "get", "name": "alphaMode", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86673,7 +87201,7 @@ } }, { - "__docId__": 4356, + "__docId__": 4374, "kind": "set", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86694,7 +87222,7 @@ } }, { - "__docId__": 4357, + "__docId__": 4375, "kind": "get", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86715,7 +87243,7 @@ } }, { - "__docId__": 4358, + "__docId__": 4376, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86736,7 +87264,7 @@ } }, { - "__docId__": 4359, + "__docId__": 4377, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86757,7 +87285,7 @@ } }, { - "__docId__": 4360, + "__docId__": 4378, "kind": "set", "name": "frontface", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86778,7 +87306,7 @@ } }, { - "__docId__": 4361, + "__docId__": 4379, "kind": "get", "name": "frontface", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86799,7 +87327,7 @@ } }, { - "__docId__": 4362, + "__docId__": 4380, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86820,7 +87348,7 @@ } }, { - "__docId__": 4363, + "__docId__": 4381, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86841,7 +87369,7 @@ } }, { - "__docId__": 4364, + "__docId__": 4382, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86862,7 +87390,7 @@ } }, { - "__docId__": 4365, + "__docId__": 4383, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86883,7 +87411,7 @@ } }, { - "__docId__": 4366, + "__docId__": 4384, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -86898,7 +87426,7 @@ "return": null }, { - "__docId__": 4367, + "__docId__": 4385, "kind": "file", "name": "src/viewer/scene/materials/Texture.js", "content": "import {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {Texture2D} from '../webgl/Texture2D.js';\nimport {math} from '../math/math.js';\nimport {stats} from '../stats.js';\nimport {\n ClampToEdgeWrapping, LinearEncoding,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearMipMapNearestFilter, MirroredRepeatWrapping, NearestFilter,\n NearestMipMapLinearFilter, NearestMipMapNearestFilter, RepeatWrapping, sRGBEncoding\n} from \"../constants/constants.js\";\n\nfunction ensureImageSizePowerOfTwo(image) {\n if (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height)) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = nextHighestPowerOfTwo(image.width);\n canvas.height = nextHighestPowerOfTwo(image.height);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(image,\n 0, 0, image.width, image.height,\n 0, 0, canvas.width, canvas.height);\n image = canvas;\n }\n return image;\n}\n\nfunction isPowerOfTwo(x) {\n return (x & (x - 1)) === 0;\n}\n\nfunction nextHighestPowerOfTwo(x) {\n --x;\n for (let i = 1; i < 32; i <<= 1) {\n x = x | x >> i;\n }\n return x + 1;\n}\n\n/**\n * @desc A 2D texture map.\n *\n * * Textures are attached to {@link Material}s, which are attached to {@link Mesh}es.\n * * To create a Texture from an image file, set {@link Texture#src} to the image file path.\n * * To create a Texture from an HTMLImageElement, set the Texture's {@link Texture#image} to the HTMLImageElement.\n *\n * ## Usage\n *\n * In this example we have a Mesh with a {@link PhongMaterial} which applies diffuse {@link Texture}, and a {@link buildTorusGeometry} which builds a {@link ReadableGeometry}.\n *\n * Note that xeokit will ignore {@link PhongMaterial#diffuse} and {@link PhongMaterial#specular}, since we override those\n * with {@link PhongMaterial#diffuseMap} and {@link PhongMaterial#specularMap}. The {@link Texture} pixel colors directly\n * provide the diffuse and specular components for each fragment across the {@link ReadableGeometry} surface.\n *\n * [[Run this example](/examples/index.html#materials_Texture)]\n *\n * ```` javascript\n * import {Viewer, Mesh, buildTorusGeometry,\n * ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * ambient: [0.9, 0.3, 0.9],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n *````\n */\nclass Texture extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Texture\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this Texture as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this Texture, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String} [cfg.src=null] Path to image file to load into this Texture. See the {@link Texture#src} property for more info.\n * @param {HTMLImageElement} [cfg.image=null] HTML Image object to load into this Texture. See the {@link Texture#image} property for more info.\n * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel.\n * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}.\n * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}.\n * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}..\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n * @param {Number[]} [cfg.translate=[0,0]] 2D translation vector that will be added to texture's *S* and *T* coordinates.\n * @param {Number[]} [cfg.scale=[1,1]] 2D scaling vector that will be applied to texture's *S* and *T* coordinates.\n * @param {Number} [cfg.rotate=0] Rotation, in degrees, that will be applied to texture's *S* and *T* coordinates.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n texture: new Texture2D({gl: this.scene.canvas.gl}),\n matrix: math.identityMat4(),\n hasMatrix: (cfg.translate && (cfg.translate[0] !== 0 || cfg.translate[1] !== 0)) || (!!cfg.rotate) || (cfg.scale && (cfg.scale[0] !== 0 || cfg.scale[1] !== 0)),\n minFilter: this._checkMinFilter(cfg.minFilter),\n magFilter: this._checkMagFilter(cfg.magFilter),\n wrapS: this._checkWrapS(cfg.wrapS),\n wrapT: this._checkWrapT(cfg.wrapT),\n flipY: this._checkFlipY(cfg.flipY),\n encoding: this._checkEncoding(cfg.encoding)\n });\n\n // Data source\n\n this._src = null;\n this._image = null;\n\n // Transformation\n\n this._translate = math.vec2([0, 0]);\n this._scale = math.vec2([1, 1]);\n this._rotate = math.vec2([0, 0]);\n\n this._matrixDirty = false;\n\n // Transform\n\n this.translate = cfg.translate;\n this.scale = cfg.scale;\n this.rotate = cfg.rotate;\n\n // Data source\n\n if (cfg.src) {\n this.src = cfg.src; // Image file\n } else if (cfg.image) {\n this.image = cfg.image; // Image object\n }\n\n stats.memory.textures++;\n }\n\n _checkMinFilter(value) {\n value = value || LinearMipMapLinearFilter;\n if (value !== LinearFilter &&\n value !== LinearMipMapNearestFilter &&\n value !== LinearMipMapLinearFilter &&\n value !== NearestMipMapLinearFilter &&\n value !== NearestMipMapNearestFilter) {\n this.error(\"Unsupported value for 'minFilter' - supported values are LinearFilter, LinearMipMapNearestFilter, NearestMipMapNearestFilter, \" +\n \"NearestMipMapLinearFilter and LinearMipMapLinearFilter. Defaulting to LinearMipMapLinearFilter.\");\n value = LinearMipMapLinearFilter;\n }\n return value;\n }\n\n _checkMagFilter(value) {\n value = value || LinearFilter;\n if (value !== LinearFilter && value !== NearestFilter) {\n this.error(\"Unsupported value for 'magFilter' - supported values are LinearFilter and NearestFilter. Defaulting to LinearFilter.\");\n value = LinearFilter;\n }\n return value;\n }\n\n _checkWrapS(value) {\n value = value || RepeatWrapping;\n if (value !== ClampToEdgeWrapping && value !== MirroredRepeatWrapping && value !== RepeatWrapping) {\n this.error(\"Unsupported value for 'wrapS' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.\");\n value = RepeatWrapping;\n }\n return value;\n }\n\n _checkWrapT(value) {\n value = value || RepeatWrapping;\n if (value !== ClampToEdgeWrapping && value !== MirroredRepeatWrapping && value !== RepeatWrapping) {\n this.error(\"Unsupported value for 'wrapT' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.\");\n value = RepeatWrapping;\n }\n return value;\n }\n\n _checkFlipY(value) {\n return !!value;\n }\n\n _checkEncoding(value) {\n value = value || LinearEncoding;\n if (value !== LinearEncoding && value !== sRGBEncoding) {\n this.error(\"Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding.\");\n value = LinearEncoding;\n }\n return value;\n }\n\n _webglContextRestored() {\n this._state.texture = new Texture2D({gl: this.scene.canvas.gl});\n if (this._image) {\n this.image = this._image;\n } else if (this._src) {\n this.src = this._src;\n }\n }\n\n _update() {\n const state = this._state;\n if (this._matrixDirty) {\n let matrix;\n let t;\n if (this._translate[0] !== 0 || this._translate[1] !== 0) {\n matrix = math.translationMat4v([this._translate[0], this._translate[1], 0], this._state.matrix);\n }\n if (this._scale[0] !== 1 || this._scale[1] !== 1) {\n t = math.scalingMat4v([this._scale[0], this._scale[1], 1]);\n matrix = matrix ? math.mulMat4(matrix, t) : t;\n }\n if (this._rotate !== 0) {\n t = math.rotationMat4v(this._rotate * 0.0174532925, [0, 0, 1]);\n matrix = matrix ? math.mulMat4(matrix, t) : t;\n }\n if (matrix) {\n state.matrix = matrix;\n }\n this._matrixDirty = false;\n }\n this.glRedraw();\n }\n\n\n /**\n * Sets an HTML DOM Image object to source this Texture from.\n *\n * Sets {@link Texture#src} null.\n *\n * @type {HTMLImageElement}\n */\n set image(value) {\n this._image = ensureImageSizePowerOfTwo(value);\n this._image.crossOrigin = \"Anonymous\";\n this._state.texture.setImage(this._image, this._state);\n this._src = null;\n this.glRedraw();\n }\n\n /**\n * Gets HTML DOM Image object this Texture is sourced from, if any.\n *\n * Returns null if not set.\n *\n * @type {HTMLImageElement}\n */\n get image() {\n return this._image;\n }\n\n /**\n * Sets path to an image file to source this Texture from.\n *\n * Sets {@link Texture#image} null.\n *\n * @type {String}\n */\n set src(src) {\n this.scene.loading++;\n this.scene.canvas.spinner.processes++;\n const self = this;\n let image = new Image();\n image.onload = function () {\n image = ensureImageSizePowerOfTwo(image);\n self._state.texture.setImage(image, self._state);\n self.scene.loading--;\n self.glRedraw();\n self.scene.canvas.spinner.processes--;\n };\n image.src = src;\n this._src = src;\n this._image = null;\n }\n\n /**\n * Gets path to the image file this Texture from, if any.\n *\n * Returns null if not set.\n *\n * @type {String}\n */\n get src() {\n return this._src;\n }\n\n /**\n * Sets the 2D translation vector added to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````[0, 0]````.\n *\n * @type {Number[]}\n */\n set translate(value) {\n this._translate.set(value || [0, 0]);\n this._matrixDirty = true;\n this._needUpdate();\n }\n\n /**\n * Gets the 2D translation vector added to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````[0, 0]````.\n *\n * @type {Number[]}\n */\n get translate() {\n return this._translate;\n }\n\n /**\n * Sets the 2D scaling vector that will be applied to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````[1, 1]````.\n *\n * @type {Number[]}\n */\n set scale(value) {\n this._scale.set(value || [1, 1]);\n this._matrixDirty = true;\n this._needUpdate();\n }\n\n /**\n * Gets the 2D scaling vector that will be applied to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````[1, 1]````.\n *\n * @type {Number[]}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the rotation angles, in degrees, that will be applied to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n set rotate(value) {\n value = value || 0;\n if (this._rotate === value) {\n return;\n }\n this._rotate = value;\n this._matrixDirty = true;\n this._needUpdate();\n }\n\n /**\n * Gets the rotation angles, in degrees, that will be applied to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n get rotate() {\n return this._rotate;\n }\n\n /**\n * Gets how this Texture is sampled when a texel covers less than one pixel.\n *\n * Options are:\n *\n * * NearestFilter - Uses the value of the texture element that is nearest\n * (in Manhattan distance) to the center of the pixel being textured.\n *\n * * LinearFilter - Uses the weighted average of the four texture elements that are\n * closest to the center of the pixel being textured.\n *\n * * NearestMipMapNearestFilter - Chooses the mipmap that most closely matches the\n * size of the pixel being textured and uses the \"nearest\" criterion (the texture\n * element nearest to the center of the pixel) to produce a texture value.\n *\n * * LinearMipMapNearestFilter - Chooses the mipmap that most closely matches the size of\n * the pixel being textured and uses the \"linear\" criterion (a weighted average of the\n * four texture elements that are closest to the center of the pixel) to produce a\n * texture value.\n *\n * * NearestMipMapLinearFilter - Chooses the two mipmaps that most closely\n * match the size of the pixel being textured and uses the \"nearest\" criterion\n * (the texture element nearest to the center of the pixel) to produce a texture\n * value from each mipmap. The final texture value is a weighted average of those two\n * values.\n *\n * * LinearMipMapLinearFilter - (default) - Chooses the two mipmaps that most closely match the size\n * of the pixel being textured and uses the \"linear\" criterion (a weighted average\n * of the four texture elements that are closest to the center of the pixel) to\n * produce a texture value from each mipmap. The final texture value is a weighted\n * average of those two values.\n *\n * Default value is LinearMipMapLinearFilter.\n *\n * @type {Number}\n */\n get minFilter() {\n return this._state.minFilter;\n }\n\n /**\n * Gets how this Texture is sampled when a texel covers more than one pixel.\n *\n * * NearestFilter - Uses the value of the texture element that is nearest\n * (in Manhattan distance) to the center of the pixel being textured.\n * * LinearFilter - (default) - Uses the weighted average of the four texture elements that are\n * closest to the center of the pixel being textured.\n *\n * Default value is LinearMipMapLinearFilter.\n *\n * @type {Number}\n */\n get magFilter() {\n return this._state.magFilter;\n }\n\n /**\n * Gets the wrap parameter for this Texture's *S* coordinate.\n *\n * Values can be:\n *\n * * ClampToEdgeWrapping - causes *S* coordinates to be clamped to the size of the texture.\n * * MirroredRepeatWrapping - causes the *S* coordinate to be set to the fractional part of the texture coordinate\n * if the integer part of *S* is even; if the integer part of *S* is odd, then the *S* texture coordinate is\n * set to *1 - frac ⁡ S* , where *frac ⁡ S* represents the fractional part of *S*.\n * * RepeatWrapping - (default) - causes the integer part of the *S* coordinate to be ignored; xeokit uses only the\n * fractional part, thereby creating a repeating pattern.\n *\n * Default value is RepeatWrapping.\n *\n * @type {Number}\n */\n get wrapS() {\n return this._state.wrapS;\n }\n\n /**\n * Gets the wrap parameter for this Texture's *T* coordinate.\n *\n * Values can be:\n *\n * * ClampToEdgeWrapping - causes *S* coordinates to be clamped to the size of the texture.\n * * MirroredRepeatWrapping - causes the *S* coordinate to be set to the fractional part of the texture coordinate\n * if the integer part of *S* is even; if the integer part of *S* is odd, then the *S* texture coordinate is\n * set to *1 - frac ⁡ S* , where *frac ⁡ S* represents the fractional part of *S*.\n * * RepeatWrapping - (default) - causes the integer part of the *S* coordinate to be ignored; xeokit uses only the\n * fractional part, thereby creating a repeating pattern.\n *\n * Default value is RepeatWrapping.\n *\n * @type {Number}\n */\n get wrapT() {\n return this._state.wrapT;\n }\n\n /**\n * Gets if this Texture's source data is flipped along its vertical axis.\n *\n * @type {Number}\n */\n get flipY() {\n return this._state.flipY;\n }\n\n /**\n * Gets the Texture's encoding format.\n *\n * @type {Number}\n */\n get encoding() {\n return this._state.encoding;\n }\n\n /**\n * Destroys this Texture\n */\n destroy() {\n super.destroy();\n if (this._state.texture) {\n this._state.texture.destroy();\n }\n this._state.destroy();\n stats.memory.textures--;\n }\n}\n\nexport {Texture};", @@ -86909,7 +87437,7 @@ "lineNumber": 1 }, { - "__docId__": 4368, + "__docId__": 4386, "kind": "function", "name": "ensureImageSizePowerOfTwo", "memberof": "src/viewer/scene/materials/Texture.js", @@ -86940,7 +87468,7 @@ "ignore": true }, { - "__docId__": 4369, + "__docId__": 4387, "kind": "function", "name": "isPowerOfTwo", "memberof": "src/viewer/scene/materials/Texture.js", @@ -86971,7 +87499,7 @@ "ignore": true }, { - "__docId__": 4370, + "__docId__": 4388, "kind": "function", "name": "nextHighestPowerOfTwo", "memberof": "src/viewer/scene/materials/Texture.js", @@ -87002,7 +87530,7 @@ "ignore": true }, { - "__docId__": 4371, + "__docId__": 4389, "kind": "class", "name": "Texture", "memberof": "src/viewer/scene/materials/Texture.js", @@ -87020,7 +87548,7 @@ ] }, { - "__docId__": 4372, + "__docId__": 4390, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87039,7 +87567,7 @@ } }, { - "__docId__": 4373, + "__docId__": 4391, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87228,7 +87756,7 @@ ] }, { - "__docId__": 4374, + "__docId__": 4392, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87246,7 +87774,7 @@ } }, { - "__docId__": 4375, + "__docId__": 4393, "kind": "member", "name": "_src", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87264,7 +87792,7 @@ } }, { - "__docId__": 4376, + "__docId__": 4394, "kind": "member", "name": "_image", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87282,7 +87810,7 @@ } }, { - "__docId__": 4377, + "__docId__": 4395, "kind": "member", "name": "_translate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87300,7 +87828,7 @@ } }, { - "__docId__": 4378, + "__docId__": 4396, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87318,7 +87846,7 @@ } }, { - "__docId__": 4379, + "__docId__": 4397, "kind": "member", "name": "_rotate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87336,7 +87864,7 @@ } }, { - "__docId__": 4380, + "__docId__": 4398, "kind": "member", "name": "_matrixDirty", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87354,7 +87882,7 @@ } }, { - "__docId__": 4386, + "__docId__": 4404, "kind": "method", "name": "_checkMinFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87382,7 +87910,7 @@ } }, { - "__docId__": 4387, + "__docId__": 4405, "kind": "method", "name": "_checkMagFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87410,7 +87938,7 @@ } }, { - "__docId__": 4388, + "__docId__": 4406, "kind": "method", "name": "_checkWrapS", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87438,7 +87966,7 @@ } }, { - "__docId__": 4389, + "__docId__": 4407, "kind": "method", "name": "_checkWrapT", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87466,7 +87994,7 @@ } }, { - "__docId__": 4390, + "__docId__": 4408, "kind": "method", "name": "_checkFlipY", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87494,7 +88022,7 @@ } }, { - "__docId__": 4391, + "__docId__": 4409, "kind": "method", "name": "_checkEncoding", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87522,7 +88050,7 @@ } }, { - "__docId__": 4392, + "__docId__": 4410, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87539,7 +88067,7 @@ "return": null }, { - "__docId__": 4395, + "__docId__": 4413, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87556,7 +88084,7 @@ "return": null }, { - "__docId__": 4397, + "__docId__": 4415, "kind": "set", "name": "image", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87577,7 +88105,7 @@ } }, { - "__docId__": 4400, + "__docId__": 4418, "kind": "get", "name": "image", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87598,7 +88126,7 @@ } }, { - "__docId__": 4401, + "__docId__": 4419, "kind": "set", "name": "src", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87619,7 +88147,7 @@ } }, { - "__docId__": 4404, + "__docId__": 4422, "kind": "get", "name": "src", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87640,7 +88168,7 @@ } }, { - "__docId__": 4405, + "__docId__": 4423, "kind": "set", "name": "translate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87661,7 +88189,7 @@ } }, { - "__docId__": 4407, + "__docId__": 4425, "kind": "get", "name": "translate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87682,7 +88210,7 @@ } }, { - "__docId__": 4408, + "__docId__": 4426, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87703,7 +88231,7 @@ } }, { - "__docId__": 4410, + "__docId__": 4428, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87724,7 +88252,7 @@ } }, { - "__docId__": 4411, + "__docId__": 4429, "kind": "set", "name": "rotate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87745,7 +88273,7 @@ } }, { - "__docId__": 4414, + "__docId__": 4432, "kind": "get", "name": "rotate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87766,7 +88294,7 @@ } }, { - "__docId__": 4415, + "__docId__": 4433, "kind": "get", "name": "minFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87787,7 +88315,7 @@ } }, { - "__docId__": 4416, + "__docId__": 4434, "kind": "get", "name": "magFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87808,7 +88336,7 @@ } }, { - "__docId__": 4417, + "__docId__": 4435, "kind": "get", "name": "wrapS", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87829,7 +88357,7 @@ } }, { - "__docId__": 4418, + "__docId__": 4436, "kind": "get", "name": "wrapT", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87850,7 +88378,7 @@ } }, { - "__docId__": 4419, + "__docId__": 4437, "kind": "get", "name": "flipY", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87871,7 +88399,7 @@ } }, { - "__docId__": 4420, + "__docId__": 4438, "kind": "get", "name": "encoding", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87892,7 +88420,7 @@ } }, { - "__docId__": 4421, + "__docId__": 4439, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -87907,7 +88435,7 @@ "return": null }, { - "__docId__": 4422, + "__docId__": 4440, "kind": "file", "name": "src/viewer/scene/materials/index.js", "content": "export * from \"./LambertMaterial.js\";\nexport * from \"./MetallicMaterial.js\";\nexport * from \"./SpecularMaterial.js\";\nexport * from \"./PhongMaterial.js\";\nexport * from \"./EmphasisMaterial.js\";\nexport * from \"./EdgeMaterial.js\";\nexport * from \"./Texture.js\";\nexport * from \"./Fresnel.js\";", @@ -87918,7 +88446,7 @@ "lineNumber": 1 }, { - "__docId__": 4423, + "__docId__": 4441, "kind": "file", "name": "src/viewer/scene/math/Frustum.js", "content": "import {math} from \"./math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nclass FrustumPlane {\n\n constructor() {\n this.normal = math.vec3();\n this.offset = 0;\n this.testVertex = math.vec3();\n }\n\n set(nx, ny, nz, offset) {\n const s = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);\n this.normal[0] = nx * s;\n this.normal[1] = ny * s;\n this.normal[2] = nz * s;\n this.offset = offset * s;\n this.testVertex[0] = (this.normal[0] >= 0.0) ? 1 : 0;\n this.testVertex[1] = (this.normal[1] >= 0.0) ? 1 : 0;\n this.testVertex[2] = (this.normal[2] >= 0.0) ? 1 : 0;\n }\n}\n\n/**\n * @private\n */\nclass Frustum {\n constructor() {\n this.planes = [\n new FrustumPlane(), new FrustumPlane(), new FrustumPlane(),\n new FrustumPlane(), new FrustumPlane(), new FrustumPlane()\n ];\n }\n}\n\nFrustum.INSIDE = 0;\nFrustum.INTERSECT = 1;\nFrustum.OUTSIDE = 2;\n\n/** @private */\nfunction setFrustum(frustum, viewMat, projMat) {\n\n const m = math.mulMat4(projMat, viewMat, tempMat4a);\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 frustum.planes[0].set(m3 - m0, m7 - m4, m11 - m8, m15 - m12);\n frustum.planes[1].set(m3 + m0, m7 + m4, m11 + m8, m15 + m12);\n frustum.planes[2].set(m3 - m1, m7 - m5, m11 - m9, m15 - m13);\n frustum.planes[3].set(m3 + m1, m7 + m5, m11 + m9, m15 + m13);\n frustum.planes[4].set(m3 - m2, m7 - m6, m11 - m10, m15 - m14);\n frustum.planes[5].set(m3 + m2, m7 + m6, m11 + m10, m15 + m14);\n}\n\n/** @private */\nfunction frustumIntersectsAABB3(frustum, aabb) {\n\n let ret = Frustum.INSIDE;\n\n const min = tempVec3a;\n const max = tempVec3b;\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n const bminmax = [min, max];\n\n for (let i = 0; i < 6; ++i) {\n const plane = frustum.planes[i];\n if (((plane.normal[0] * bminmax[plane.testVertex[0]][0]) +\n (plane.normal[1] * bminmax[plane.testVertex[1]][1]) +\n (plane.normal[2] * bminmax[plane.testVertex[2]][2]) +\n (plane.offset)) < 0.0) {\n return Frustum.OUTSIDE;\n }\n\n if (((plane.normal[0] * bminmax[1 - plane.testVertex[0]][0]) +\n (plane.normal[1] * bminmax[1 - plane.testVertex[1]][1]) +\n (plane.normal[2] * bminmax[1 - plane.testVertex[2]][2]) +\n (plane.offset)) < 0.0) {\n ret = Frustum.INTERSECT;\n }\n }\n\n return ret;\n}\n\nexport {\n Frustum,\n FrustumPlane,\n frustumIntersectsAABB3,\n setFrustum\n};\n", @@ -87929,7 +88457,7 @@ "lineNumber": 1 }, { - "__docId__": 4424, + "__docId__": 4442, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/math/Frustum.js", @@ -87950,7 +88478,7 @@ "ignore": true }, { - "__docId__": 4425, + "__docId__": 4443, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/math/Frustum.js", @@ -87971,7 +88499,7 @@ "ignore": true }, { - "__docId__": 4426, + "__docId__": 4444, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/math/Frustum.js", @@ -87992,7 +88520,7 @@ "ignore": true }, { - "__docId__": 4427, + "__docId__": 4445, "kind": "class", "name": "Frustum", "memberof": "src/viewer/scene/math/Frustum.js", @@ -88008,7 +88536,7 @@ "ignore": true }, { - "__docId__": 4428, + "__docId__": 4446, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/math/Frustum.js~Frustum", @@ -88022,7 +88550,7 @@ "undocument": true }, { - "__docId__": 4429, + "__docId__": 4447, "kind": "member", "name": "planes", "memberof": "src/viewer/scene/math/Frustum.js~Frustum", @@ -88039,7 +88567,7 @@ } }, { - "__docId__": 4430, + "__docId__": 4448, "kind": "class", "name": "FrustumPlane", "memberof": "src/viewer/scene/math/Frustum.js", @@ -88055,7 +88583,7 @@ "ignore": true }, { - "__docId__": 4431, + "__docId__": 4449, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -88069,7 +88597,7 @@ "undocument": true }, { - "__docId__": 4432, + "__docId__": 4450, "kind": "member", "name": "normal", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -88086,7 +88614,7 @@ } }, { - "__docId__": 4433, + "__docId__": 4451, "kind": "member", "name": "offset", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -88103,7 +88631,7 @@ } }, { - "__docId__": 4434, + "__docId__": 4452, "kind": "member", "name": "testVertex", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -88120,7 +88648,7 @@ } }, { - "__docId__": 4435, + "__docId__": 4453, "kind": "method", "name": "set", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -88161,7 +88689,7 @@ "return": null }, { - "__docId__": 4437, + "__docId__": 4455, "kind": "function", "name": "frustumIntersectsAABB3", "memberof": "src/viewer/scene/math/Frustum.js", @@ -88197,7 +88725,7 @@ } }, { - "__docId__": 4438, + "__docId__": 4456, "kind": "function", "name": "setFrustum", "memberof": "src/viewer/scene/math/Frustum.js", @@ -88235,7 +88763,7 @@ "return": null }, { - "__docId__": 4439, + "__docId__": 4457, "kind": "file", "name": "src/viewer/scene/math/buildEdgeIndices.js", "content": "import {math} from './math.js';\n\n/**\n * @private\n */\nvar 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\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 dot = math.dotVec3(normal1, normal2);\n if (dot > 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\nexport {buildEdgeIndices};", @@ -88246,7 +88774,7 @@ "lineNumber": 1 }, { - "__docId__": 4440, + "__docId__": 4458, "kind": "variable", "name": "buildEdgeIndices", "memberof": "src/viewer/scene/math/buildEdgeIndices.js", @@ -88266,7 +88794,7 @@ } }, { - "__docId__": 4441, + "__docId__": 4459, "kind": "file", "name": "src/viewer/scene/math/geometryCompressionUtils.js", "content": "/**\n * Private geometry compression and decompression utilities.\n */\n\nimport {math} from \"./math.js\";\n\n/**\n * @private\n * @param array\n * @returns {{min: Float32Array, max: Float32Array}}\n */\nfunction getPositionsBounds(array) {\n const min = new Float32Array(3);\n const max = new Float32Array(3);\n let i, j;\n for (i = 0; i < 3; i++) {\n min[i] = Number.MAX_VALUE;\n max[i] = -Number.MAX_VALUE;\n }\n for (i = 0; i < array.length; i += 3) {\n for (j = 0; j < 3; j++) {\n min[j] = Math.min(min[j], array[i + j]);\n max[j] = Math.max(max[j], array[i + j]);\n }\n }\n return {\n min: min,\n max: max\n };\n}\n\nconst 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\n/**\n * @private\n */\nvar compressPositions = (function () { // http://cg.postech.ac.kr/research/mesh_comp_mobile/mesh_comp_mobile_conference.pdf\n const translate = math.mat4();\n const scale = math.mat4();\n return function (array, min, max) {\n const quantized = new Uint16Array(array.length);\n const multiplier = new Float32Array([\n max[0] !== min[0] ? 65535 / (max[0] - min[0]) : 0,\n max[1] !== min[1] ? 65535 / (max[1] - min[1]) : 0,\n max[2] !== min[2] ? 65535 / (max[2] - min[2]) : 0\n ]);\n let i;\n for (i = 0; i < array.length; i += 3) {\n quantized[i + 0] = Math.max(0, Math.min(65535, Math.floor((array[i + 0] - min[0]) * multiplier[0])));\n quantized[i + 1] = Math.max(0, Math.min(65535, Math.floor((array[i + 1] - min[1]) * multiplier[1])));\n quantized[i + 2] = Math.max(0, Math.min(65535, Math.floor((array[i + 2] - min[2]) * multiplier[2])));\n }\n math.identityMat4(translate);\n math.translationMat4v(min, translate);\n math.identityMat4(scale);\n math.scalingMat4v([\n (max[0] - min[0]) / 65535,\n (max[1] - min[1]) / 65535,\n (max[2] - min[2]) / 65535\n ], scale);\n const decodeMat = math.mulMat4(translate, scale, math.identityMat4());\n return {\n quantized: quantized,\n decodeMatrix: decodeMat\n };\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\nfunction decompressPosition(position, decodeMatrix, dest) {\n dest[0] = position[0] * decodeMatrix[0] + decodeMatrix[12];\n dest[1] = position[1] * decodeMatrix[5] + decodeMatrix[13];\n dest[2] = position[2] * decodeMatrix[10] + decodeMatrix[14];\n return dest;\n}\n\nfunction decompressAABB(aabb, decodeMatrix, dest = aabb) {\n dest[0] = aabb[0] * decodeMatrix[0] + decodeMatrix[12];\n dest[1] = aabb[1] * decodeMatrix[5] + decodeMatrix[13];\n dest[2] = aabb[2] * decodeMatrix[10] + decodeMatrix[14];\n dest[3] = aabb[3] * decodeMatrix[0] + decodeMatrix[12];\n dest[4] = aabb[4] * decodeMatrix[5] + decodeMatrix[13];\n dest[5] = aabb[5] * decodeMatrix[10] + decodeMatrix[14];\n return dest;\n}\n\n/**\n * @private\n */\nfunction decompressPositions(positions, decodeMatrix, dest = new Float32Array(positions.length)) {\n for (let i = 0, len = positions.length; i < len; i += 3) {\n dest[i + 0] = positions[i + 0] * decodeMatrix[0] + decodeMatrix[12];\n dest[i + 1] = positions[i + 1] * decodeMatrix[5] + decodeMatrix[13];\n dest[i + 2] = positions[i + 2] * decodeMatrix[10] + decodeMatrix[14];\n }\n return dest;\n}\n\n//--------------- UVs --------------------------------------------------------------------------------------------------\n\n/**\n * @private\n * @param array\n * @returns {{min: Float32Array, max: Float32Array}}\n */\nfunction getUVBounds(array) {\n const min = new Float32Array(2);\n const max = new Float32Array(2);\n let i, j;\n for (i = 0; i < 2; i++) {\n min[i] = Number.MAX_VALUE;\n max[i] = -Number.MAX_VALUE;\n }\n for (i = 0; i < array.length; i += 2) {\n for (j = 0; j < 2; j++) {\n min[j] = Math.min(min[j], array[i + j]);\n max[j] = Math.max(max[j], array[i + j]);\n }\n }\n return {\n min: min,\n max: max\n };\n}\n\n/**\n * @private\n */\nvar compressUVs = (function () {\n const translate = math.mat3();\n const scale = math.mat3();\n return function (array, min, max) {\n const quantized = new Uint16Array(array.length);\n const multiplier = new Float32Array([\n 65535 / (max[0] - min[0]),\n 65535 / (max[1] - min[1])\n ]);\n let i;\n for (i = 0; i < array.length; i += 2) {\n quantized[i + 0] = Math.max(0, Math.min(65535, Math.floor((array[i + 0] - min[0]) * multiplier[0])));\n quantized[i + 1] = Math.max(0, Math.min(65535, Math.floor((array[i + 1] - min[1]) * multiplier[1])));\n }\n math.identityMat3(translate);\n math.translationMat3v(min, translate);\n math.identityMat3(scale);\n math.scalingMat3v([\n (max[0] - min[0]) / 65535,\n (max[1] - min[1]) / 65535\n ], scale);\n const decodeMat = math.mulMat3(translate, scale, math.identityMat3());\n return {\n quantized: quantized,\n decodeMatrix: decodeMat\n };\n };\n})();\n\n\n//--------------- Normals ----------------------------------------------------------------------------------------------\n\n/**\n * @private\n */\nfunction compressNormals(array) { // http://jcgt.org/published/0003/02/01/\n\n // Note: three elements for each encoded normal, in which the last element in each triplet is redundant.\n // This is to work around a mysterious WebGL issue where 2-element normals just wouldn't work in the shader :/\n\n const encoded = new Int8Array(array.length);\n let oct, dec, best, currentCos, bestCos;\n for (let i = 0; i < array.length; i += 3) {\n // Test various combinations of ceil and floor\n // to minimize rounding errors\n best = oct = octEncodeVec3(array, i, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(array, i, dec);\n oct = octEncodeVec3(array, i, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(array, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(array, i, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(array, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(array, i, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(array, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n encoded[i] = best[0];\n encoded[i + 1] = best[1];\n }\n return encoded;\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 */\nfunction decompressUV(uv, decodeMatrix, dest) {\n dest[0] = uv[0] * decodeMatrix[0] + decodeMatrix[6];\n dest[1] = uv[1] * decodeMatrix[4] + decodeMatrix[7];\n}\n\n/**\n * @private\n */\nfunction decompressUVs(uvs, decodeMatrix, dest = new Float32Array(uvs.length)) {\n for (let i = 0, len = uvs.length; i < len; i += 3) {\n dest[i + 0] = uvs[i + 0] * decodeMatrix[0] + decodeMatrix[6];\n dest[i + 1] = uvs[i + 1] * decodeMatrix[4] + decodeMatrix[7];\n }\n return dest;\n}\n\n/**\n * @private\n */\nfunction decompressNormal(oct, result) {\n let x = oct[0];\n let y = oct[1];\n x = (2 * x + 1) / 255;\n y = (2 * y + 1) / 255;\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 result[0] = x / length;\n result[1] = y / length;\n result[2] = z / length;\n return result;\n}\n\n/**\n * @private\n */\nfunction decompressNormals(octs, result) {\n for (let i = 0, j = 0, len = octs.length; i < len; i += 2) {\n let x = octs[i + 0];\n let y = octs[i + 1];\n x = (2 * x + 1) / 255;\n y = (2 * y + 1) / 255;\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 result[j + 0] = x / length;\n result[j + 1] = y / length;\n result[j + 2] = z / length;\n j += 3;\n }\n return result;\n}\n\n/**\n * @private\n */\nconst geometryCompressionUtils = {\n\n getPositionsBounds: getPositionsBounds,\n createPositionsDecodeMatrix: createPositionsDecodeMatrix,\n compressPositions: compressPositions,\n compressPosition:compressPosition,\n decompressPositions: decompressPositions,\n decompressPosition: decompressPosition,\n decompressAABB: decompressAABB,\n\n getUVBounds: getUVBounds,\n compressUVs: compressUVs,\n decompressUVs: decompressUVs,\n decompressUV: decompressUV,\n\n compressNormals: compressNormals,\n decompressNormals: decompressNormals,\n decompressNormal: decompressNormal\n};\n\nexport {geometryCompressionUtils};", @@ -88277,7 +88805,7 @@ "lineNumber": 1 }, { - "__docId__": 4442, + "__docId__": 4460, "kind": "function", "name": "getPositionsBounds", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88320,7 +88848,7 @@ "ignore": true }, { - "__docId__": 4443, + "__docId__": 4461, "kind": "variable", "name": "createPositionsDecodeMatrix", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88341,7 +88869,7 @@ "ignore": true }, { - "__docId__": 4444, + "__docId__": 4462, "kind": "variable", "name": "compressPositions", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88361,7 +88889,7 @@ } }, { - "__docId__": 4445, + "__docId__": 4463, "kind": "function", "name": "compressPosition", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88400,7 +88928,7 @@ "ignore": true }, { - "__docId__": 4446, + "__docId__": 4464, "kind": "function", "name": "decompressPosition", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88443,7 +88971,7 @@ "ignore": true }, { - "__docId__": 4447, + "__docId__": 4465, "kind": "function", "name": "decompressAABB", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88489,7 +89017,7 @@ "ignore": true }, { - "__docId__": 4448, + "__docId__": 4466, "kind": "function", "name": "decompressPositions", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88532,7 +89060,7 @@ } }, { - "__docId__": 4449, + "__docId__": 4467, "kind": "function", "name": "getUVBounds", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88575,7 +89103,7 @@ "ignore": true }, { - "__docId__": 4450, + "__docId__": 4468, "kind": "variable", "name": "compressUVs", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88595,7 +89123,7 @@ } }, { - "__docId__": 4451, + "__docId__": 4469, "kind": "function", "name": "compressNormals", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88625,7 +89153,7 @@ } }, { - "__docId__": 4452, + "__docId__": 4470, "kind": "function", "name": "octEncodeVec3", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88673,7 +89201,7 @@ } }, { - "__docId__": 4453, + "__docId__": 4471, "kind": "function", "name": "octDecodeVec2", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88703,7 +89231,7 @@ "ignore": true }, { - "__docId__": 4454, + "__docId__": 4472, "kind": "function", "name": "dot", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88745,7 +89273,7 @@ } }, { - "__docId__": 4455, + "__docId__": 4473, "kind": "function", "name": "decompressUV", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88783,7 +89311,7 @@ "return": null }, { - "__docId__": 4456, + "__docId__": 4474, "kind": "function", "name": "decompressUVs", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88826,7 +89354,7 @@ } }, { - "__docId__": 4457, + "__docId__": 4475, "kind": "function", "name": "decompressNormal", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88862,7 +89390,7 @@ } }, { - "__docId__": 4458, + "__docId__": 4476, "kind": "function", "name": "decompressNormals", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88898,7 +89426,7 @@ } }, { - "__docId__": 4459, + "__docId__": 4477, "kind": "variable", "name": "geometryCompressionUtils", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -88918,7 +89446,7 @@ } }, { - "__docId__": 4460, + "__docId__": 4478, "kind": "file", "name": "src/viewer/scene/math/index.js", "content": "export * from \"./math.js\";\nexport * from \"./Frustum.js\";\nexport * from \"./rtcCoords.js\";\n", @@ -88929,7 +89457,7 @@ "lineNumber": 1 }, { - "__docId__": 4461, + "__docId__": 4479, "kind": "file", "name": "src/viewer/scene/math/math.js", "content": "// Some temporary vars to help avoid garbage collection\n\nlet doublePrecision = true;\nlet FloatArrayType = doublePrecision ? Float64Array : Float32Array;\n\nconst tempVec3a = new FloatArrayType(3);\n\nconst tempMat1 = new FloatArrayType(16);\nconst tempMat2 = new FloatArrayType(16);\nconst tempVec4 = new FloatArrayType(4);\n\n\n/**\n * @private\n */\nconst math = {\n\n setDoublePrecisionEnabled(enable) {\n doublePrecision = enable;\n FloatArrayType = doublePrecision ? Float64Array : Float32Array;\n },\n\n getDoublePrecisionEnabled() {\n return doublePrecision;\n },\n\n MIN_DOUBLE: -Number.MAX_SAFE_INTEGER,\n MAX_DOUBLE: Number.MAX_SAFE_INTEGER,\n\n MAX_INT: 10000000,\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 unglobalizeObjectId(modelId, globalId) {\n const idx = globalId.indexOf(\"#\");\n return (idx === modelId.length && globalId.startsWith(modelId)) ? globalId.substring(idx + 1) : globalId;\n },\n\n globalizeObjectId(modelId, objectId) {\n return (modelId + \"#\" + objectId)\n },\n\n /**\n * Returns:\n * - x != 0 => 1/x,\n * - x == 1 => 1\n *\n * @param {number} x\n */\n safeInv(x) {\n const retVal = 1 / x;\n if (isNaN(retVal) || !isFinite(retVal)) {\n return 1;\n }\n return retVal;\n },\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 * Converts a list of double-precision values to a list of high-part floats and a list of low-part floats.\n * @param doubleVals\n * @param floatValsHigh\n * @param floatValsLow\n */\n doublesToFloats(doubleVals, floatValsHigh, floatValsLow) {\n const floatPair = new FloatArrayType(2);\n for (let i = 0, len = doubleVals.length; i < len; i++) {\n math.splitDouble(doubleVals[i], floatPair);\n floatValsHigh[i] = floatPair[0];\n floatValsLow[i] = floatPair[1];\n }\n },\n\n /**\n * Splits a double value into two floats.\n * @param value\n * @param floatPair\n */\n splitDouble(value, floatPair) {\n const hi = FloatArrayType.from([value])[0];\n const low = value - hi;\n floatPair[0] = hi;\n floatPair[1] = low;\n },\n\n /**\n * Returns a new UUID.\n * @method createUUID\n * @static\n * @return string The new UUID\n */\n createUUID: ((() => {\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 * Returns true if the two 3-element vectors are the same.\n * @param v1\n * @param v2\n * @returns {Boolean}\n */\n compareVec3(v1, v2) {\n return (v1[0] === v2[0] && v1[1] === v2[1] && v1[2] === v2[2]);\n },\n\n /**\n * Negates a three-element vector.\n * @method negateVec3\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 negateVec3(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 return dest;\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 * Get the geometric mean of the vectors.\n * @method geometricMeanVec2\n * @static\n * @param {...Array(Number)} vectors Vec2 to mean\n * @return {Array(Number)} The geometric mean vec2\n */\n geometricMeanVec2(...vectors) {\n const geometricMean = new FloatArrayType(vectors[0]);\n for (let i = 1; i < vectors.length; i++) {\n geometricMean[0] += vectors[i][0];\n geometricMean[1] += vectors[i][1];\n }\n geometricMean[0] /= vectors.length;\n geometricMean[1] /= vectors.length;\n return geometricMean;\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 || math.vec3();\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\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 /**\n * Creates a new matrix that replaces the translation in the rightmost column of the given\n * affine matrix with the given translation.\n * @param m\n * @param translation\n * @param dest\n * @returns {*}\n */\n setMat4Translation(m, translation, dest) {\n\n dest[0] = m[0];\n dest[1] = m[1];\n dest[2] = m[2];\n dest[3] = m[3];\n\n dest[4] = m[4];\n dest[5] = m[5];\n dest[6] = m[6];\n dest[7] = m[7];\n\n dest[8] = m[8];\n dest[9] = m[9];\n dest[10] = m[10];\n dest[11] = m[11];\n\n dest[12] = translation[0];\n dest[13] = translation[1];\n dest[14] = translation[2];\n dest[15] = m[15];\n\n return dest;\n },\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 /** @private */\n getColMat4(mat, c) {\n const i = c * 4;\n return [mat[i], mat[i + 1], mat[i + 2], mat[i + 3]];\n },\n\n /** @private */\n setRowMat4(mat, r, v) {\n mat[r] = v[0];\n mat[r + 4] = v[1];\n mat[r + 8] = v[2];\n mat[r + 12] = v[3];\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 * Returns true if the two 4x4 matrices are the same.\n * @param m1\n * @param m2\n * @returns {Boolean}\n */\n compareMat4(m1, m2) {\n return m1[0] === m2[0] &&\n m1[1] === m2[1] &&\n m1[2] === m2[2] &&\n m1[3] === m2[3] &&\n m1[4] === m2[4] &&\n m1[5] === m2[5] &&\n m1[6] === m2[6] &&\n m1[7] === m2[7] &&\n m1[8] === m2[8] &&\n m1[9] === m2[9] &&\n m1[10] === m2[10] &&\n m1[11] === m2[11] &&\n m1[12] === m2[12] &&\n m1[13] === m2[13] &&\n m1[14] === m2[14] &&\n m1[15] === m2[15];\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 }\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 2D vector around a center point.\n *\n * @param a\n * @param center\n * @param angle\n * @returns {math}\n */\n rotateVec2(a, center, angle, dest = a) {\n const c = Math.cos(angle);\n const s = Math.sin(angle);\n const x = a[0] - center[0];\n const y = a[1] - center[1];\n dest[0] = x * c - y * s + center[0];\n dest[1] = x * s + y * c + center[1];\n return a;\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] = p[0] * f;\n q[1] = p[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 * Linearly interpolates between two 4x4 matrices.\n * @method lerpMat4\n * @static\n */\n lerpMat4(t, t1, t2, m1, m2, dest) {\n const result = dest || math.mat4();\n const f = (t - t1) / (t2 - t1);\n result[0] = m1[0] + (f * (m2[0] - m1[0]));\n result[1] = m1[1] + (f * (m2[1] - m1[1]));\n result[2] = m1[2] + (f * (m2[2] - m1[2]));\n result[3] = m1[3] + (f * (m2[3] - m1[3]));\n result[4] = m1[4] + (f * (m2[4] - m1[4]));\n result[5] = m1[5] + (f * (m2[5] - m1[5]));\n result[6] = m1[6] + (f * (m2[6] - m1[6]));\n result[7] = m1[7] + (f * (m2[7] - m1[7]));\n result[8] = m1[8] + (f * (m2[8] - m1[8]));\n result[9] = m1[9] + (f * (m2[9] - m1[9]));\n result[10] = m1[10] + (f * (m2[10] - m1[10]));\n result[11] = m1[11] + (f * (m2[11] - m1[11]));\n result[12] = m1[12] + (f * (m2[12] - m1[12]));\n result[13] = m1[13] + (f * (m2[13] - m1[13]));\n result[14] = m1[14] + (f * (m2[14] - m1[14]));\n result[15] = m1[15] + (f * (m2[15] - m1[15]));\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 /**\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 area of an AABB.\n *\n * @private\n */\n getAABB3Area(aabb) {\n const width = (aabb[3] - aabb[0]);\n const height = (aabb[4] - aabb[1]);\n const depth = (aabb[5] - aabb[2]);\n return (width * height * depth);\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.MIN_DOUBLE;\n aabb[4] = math.MIN_DOUBLE;\n aabb[5] = math.MIN_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.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_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.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_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.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_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 * Gets the 3D center of the given flat array of 3D positions.\n *\n * @private\n */\n getPositionsCenter(positions, center = math.vec3()) {\n let xCenter = 0;\n let yCenter = 0;\n let zCenter = 0;\n for (var i = 0, len = positions.length; i < len; i += 3) {\n xCenter += positions[i + 0];\n yCenter += positions[i + 1];\n zCenter += positions[i + 2];\n }\n const numPositions = positions.length / 3;\n center[0] = xCenter / numPositions;\n center[1] = yCenter / numPositions;\n center[2] = zCenter / numPositions;\n return center;\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 * Expands an axis-aligned 3D boundary to enclose the given points, if needed.\n *\n * @private\n */\n expandAABB3Points3(aabb, positions) {\n var x;\n var y;\n var z;\n for (var i = 0, len = positions.length; i < len; i += 3) {\n x = positions[i];\n y = positions[i + 1];\n z = positions[i + 2];\n if (aabb[0] > x) {\n aabb[0] = x;\n }\n if (aabb[1] > y) {\n aabb[1] = y;\n }\n if (aabb[2] > z) {\n aabb[2] = z;\n }\n if (aabb[3] < x) {\n aabb[3] = x;\n }\n if (aabb[4] < y) {\n aabb[4] = y;\n }\n if (aabb[5] < z) {\n aabb[5] = z;\n }\n }\n return aabb;\n },\n\n /**\n * Collapses a 2D axis-aligned boundary, ready to expand to fit 2D points.\n * Creates new AABB if none supplied.\n *\n * @private\n */\n collapseAABB2(aabb = math.AABB2()) {\n aabb[0] = math.MAX_DOUBLE;\n aabb[1] = math.MAX_DOUBLE;\n aabb[2] = math.MIN_DOUBLE;\n aabb[3] = math.MIN_DOUBLE;\n\n return aabb;\n },\n\n point3AABB3Intersect(aabb, p) {\n return aabb[0] > p[0] || aabb[3] < p[0] || aabb[1] > p[1] || aabb[4] < p[1] || aabb[2] > p[2] || aabb[5] < p[2];\n },\n\n /**\n *\n * @param dir\n * @param constant\n * @param aabb\n * @returns {number}\n */\n planeAABB3Intersect(dir, constant, aabb) {\n let min, max;\n if (dir[0] > 0) {\n min = dir[0] * aabb[0];\n max = dir[0] * aabb[3];\n } else {\n min = dir[0] * aabb[3];\n max = dir[0] * aabb[0];\n }\n if (dir[1] > 0) {\n min += dir[1] * aabb[1];\n max += dir[1] * aabb[4];\n } else {\n min += dir[1] * aabb[4];\n max += dir[1] * aabb[1];\n }\n if (dir[2] > 0) {\n min += dir[2] * aabb[2];\n max += dir[2] * aabb[5];\n } else {\n min += dir[2] * aabb[5];\n max += dir[2] * aabb[2];\n }\n const outside = (min <= -constant) && (max <= -constant);\n if (outside) {\n return -1;\n }\n\n const inside = (min >= -constant) && (max >= -constant);\n if (inside) {\n return 1;\n }\n\n return 0;\n },\n\n /**\n * Finds the minimum 2D projected axis-aligned boundary enclosing the given 3D points.\n *\n * @private\n */\n OBB3ToAABB2(points, aabb = math.AABB2()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let xmax = math.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n\n let x;\n let y;\n let w;\n let f;\n\n for (let i = 0, len = points.length; i < len; i += 4) {\n\n x = points[i + 0];\n y = points[i + 1];\n w = points[i + 3] || 1.0;\n\n f = 1.0 / w;\n\n x *= f;\n y *= f;\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = xmax;\n aabb[3] = ymax;\n\n return aabb;\n },\n\n /**\n * Expands the first axis-aligned 2D boundary to enclose the second, if required.\n *\n * @private\n */\n expandAABB2(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 return aabb1;\n },\n\n /**\n * Expands an axis-aligned 2D boundary to enclose the given point, if required.\n *\n * @private\n */\n expandAABB2Point2(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[0]) {\n aabb[2] = p[0];\n }\n\n if (aabb[3] < p[1]) {\n aabb[3] = p[1];\n }\n\n return aabb;\n },\n\n AABB2ToCanvas(aabb, canvasWidth, canvasHeight, aabb2 = aabb) {\n const xmin = (aabb[0] + 1.0) * 0.5;\n const ymin = (aabb[1] + 1.0) * 0.5;\n const xmax = (aabb[2] + 1.0) * 0.5;\n const ymax = (aabb[3] + 1.0) * 0.5;\n\n aabb2[0] = Math.floor(xmin * canvasWidth);\n aabb2[1] = canvasHeight - Math.floor(ymax * canvasHeight);\n aabb2[2] = Math.floor(xmax * canvasWidth);\n aabb2[3] = canvasHeight - Math.floor(ymin * canvasHeight);\n\n return aabb2;\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Curves\n //------------------------------------------------------------------------------------------------------------------\n\n tangentQuadraticBezier(t, p0, p1, p2) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n },\n\n tangentQuadraticBezier3(t, p0, p1, p2, p3) {\n return -3 * p0 * (1 - t) * (1 - t) +\n 3 * p1 * (1 - t) * (1 - t) - 6 * t * p1 * (1 - t) +\n 6 * t * p2 * (1 - t) - 3 * t * t * p2 +\n 3 * t * t * p3;\n },\n\n tangentSpline(t) {\n const h00 = 6 * t * t - 6 * t;\n const h10 = 3 * t * t - 4 * t + 1;\n const h01 = -6 * t * t + 6 * t;\n const h11 = 3 * t * t - 2 * t;\n return h00 + h10 + h01 + h11;\n },\n\n catmullRomInterpolate(p0, p1, p2, p3, t) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n },\n\n// Bezier Curve formulii from http://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n// Quad Bezier Functions\n\n b2p0(t, p) {\n const k = 1 - t;\n return k * k * p;\n\n },\n\n b2p1(t, p) {\n return 2 * (1 - t) * t * p;\n },\n\n b2p2(t, p) {\n return t * t * p;\n },\n\n b2(t, p0, p1, p2) {\n return this.b2p0(t, p0) + this.b2p1(t, p1) + this.b2p2(t, p2);\n },\n\n// Cubic Bezier Functions\n\n b3p0(t, p) {\n const k = 1 - t;\n return k * k * k * p;\n },\n\n b3p1(t, p) {\n const k = 1 - t;\n return 3 * k * k * t * p;\n },\n\n b3p2(t, p) {\n const k = 1 - t;\n return 3 * k * t * t * p;\n },\n\n b3p3(t, p) {\n return t * t * t * p;\n },\n\n b3(t, p0, p1, p2, p3) {\n return this.b3p0(t, p0) + this.b3p1(t, p1) + this.b3p2(t, p2) + this.b3p3(t, p3);\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Geometry\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 /**\n * Finds the intersection of a 3D ray with a 3D triangle.\n *\n * @private\n */\n rayTriangleIntersect: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n const tempVec3c = new FloatArrayType(3);\n const tempVec3d = new FloatArrayType(3);\n const tempVec3e = new FloatArrayType(3);\n\n return (origin, dir, a, b, c, isect) => {\n\n isect = isect || math.vec3();\n\n const EPSILON = 0.000001;\n\n const edge1 = math.subVec3(b, a, tempVec3);\n const edge2 = math.subVec3(c, a, tempVec3b);\n\n const pvec = math.cross3Vec3(dir, edge2, tempVec3c);\n const det = math.dotVec3(edge1, pvec);\n if (det < EPSILON) {\n return null;\n }\n\n const tvec = math.subVec3(origin, a, tempVec3d);\n const u = math.dotVec3(tvec, pvec);\n if (u < 0 || u > det) {\n return null;\n }\n\n const qvec = math.cross3Vec3(tvec, edge1, tempVec3e);\n const v = math.dotVec3(dir, qvec);\n if (v < 0 || u + v > det) {\n return null;\n }\n\n const t = math.dotVec3(edge2, qvec) / det;\n isect[0] = origin[0] + t * dir[0];\n isect[1] = origin[1] + t * dir[1];\n isect[2] = origin[2] + t * dir[2];\n\n return isect;\n };\n }))(),\n\n /**\n * Finds the intersection of a 3D ray with a plane defined by 3 points.\n *\n * @private\n */\n rayPlaneIntersect: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n const tempVec3c = new FloatArrayType(3);\n const tempVec3d = new FloatArrayType(3);\n\n return (origin, dir, a, b, c, isect) => {\n\n isect = isect || math.vec3();\n\n dir = math.normalizeVec3(dir, tempVec3);\n\n const edge1 = math.subVec3(b, a, tempVec3b);\n const edge2 = math.subVec3(c, a, tempVec3c);\n\n const n = math.cross3Vec3(edge1, edge2, tempVec3d);\n math.normalizeVec3(n, n);\n\n const d = -math.dotVec3(a, n);\n\n const t = -(math.dotVec3(origin, n) + d) / math.dotVec3(dir, n);\n\n isect[0] = origin[0] + t * dir[0];\n isect[1] = origin[1] + t * dir[1];\n isect[2] = origin[2] + t * dir[2];\n\n return isect;\n };\n }))(),\n\n /**\n * Gets barycentric coordinates from cartesian coordinates within a triangle.\n * Gets barycentric coordinates from cartesian coordinates within a triangle.\n *\n * @private\n */\n cartesianToBarycentric: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n const tempVec3c = new FloatArrayType(3);\n\n return (cartesian, a, b, c, dest) => {\n\n const v0 = math.subVec3(c, a, tempVec3);\n const v1 = math.subVec3(b, a, tempVec3b);\n const v2 = math.subVec3(cartesian, a, tempVec3c);\n\n const dot00 = math.dotVec3(v0, v0);\n const dot01 = math.dotVec3(v0, v1);\n const dot02 = math.dotVec3(v0, v2);\n const dot11 = math.dotVec3(v1, v1);\n const dot12 = math.dotVec3(v1, v2);\n\n const denom = (dot00 * dot11 - dot01 * dot01);\n\n // Colinear or singular triangle\n\n if (denom === 0) {\n\n // Arbitrary location outside of triangle\n\n return null;\n }\n\n const invDenom = 1 / denom;\n\n const u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n const v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n\n dest[0] = 1 - u - v;\n dest[1] = v;\n dest[2] = u;\n\n return dest;\n };\n }))(),\n\n /**\n * Returns true if the given barycentric coordinates are within their triangle.\n *\n * @private\n */\n barycentricInsideTriangle(bary) {\n\n const v = bary[1];\n const u = bary[2];\n\n return (u >= 0) && (v >= 0) && (u + v < 1);\n },\n\n /**\n * Gets cartesian coordinates from barycentric coordinates within a triangle.\n *\n * @private\n */\n barycentricToCartesian(bary, a, b, c, cartesian = math.vec3()) {\n const u = bary[0];\n const v = bary[1];\n const w = bary[2];\n\n cartesian[0] = a[0] * u + b[0] * v + c[0] * w;\n cartesian[1] = a[1] * u + b[1] * v + c[1] * w;\n cartesian[2] = a[2] * u + b[2] * v + c[2] * w;\n\n return cartesian;\n },\n\n\n /**\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 * Note: does not work well when co-incident vertices have same positions but different normals and UVs.\n *\n * @param positions\n * @param normals\n * @param uv\n * @param indices\n * @returns {{positions: Array, indices: Array}}\n * @private\n */\n mergeVertices(positions, normals, uv, indices) {\n const positionsMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n const indicesLookup = [];\n const uniquePositions = [];\n const uniqueNormals = normals ? [] : null;\n const uniqueUV = uv ? [] : null;\n const indices2 = [];\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 i;\n let len;\n let uvi = 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] = uniquePositions.length / 3;\n uniquePositions.push(vx);\n uniquePositions.push(vy);\n uniquePositions.push(vz);\n if (normals) {\n uniqueNormals.push(normals[i]);\n uniqueNormals.push(normals[i + 1]);\n uniqueNormals.push(normals[i + 2]);\n }\n if (uv) {\n uniqueUV.push(uv[uvi]);\n uniqueUV.push(uv[uvi + 1]);\n }\n }\n indicesLookup[i / 3] = positionsMap[key];\n uvi += 2;\n }\n for (i = 0, len = indices.length; i < len; i++) {\n indices2[i] = indicesLookup[indices[i]];\n }\n const result = {\n positions: uniquePositions,\n indices: indices2\n };\n if (uniqueNormals) {\n result.normals = uniqueNormals;\n }\n if (uniqueUV) {\n result.uv = uniqueUV;\n\n }\n return result;\n },\n\n /**\n * Builds normal vectors from positions and indices.\n *\n * @private\n */\n buildNormals: ((() => {\n\n const a = new FloatArrayType(3);\n const b = new FloatArrayType(3);\n const c = new FloatArrayType(3);\n const ab = new FloatArrayType(3);\n const ac = new FloatArrayType(3);\n const crossVec = new FloatArrayType(3);\n\n return (positions, indices, normals) => {\n\n let i;\n let len;\n const nvecs = new Array(positions.length / 3);\n let j0;\n let j1;\n let j2;\n\n for (i = 0, len = indices.length; i < len; i += 3) {\n\n j0 = indices[i];\n j1 = indices[i + 1];\n j2 = indices[i + 2];\n\n a[0] = positions[j0 * 3];\n a[1] = positions[j0 * 3 + 1];\n a[2] = positions[j0 * 3 + 2];\n\n b[0] = positions[j1 * 3];\n b[1] = positions[j1 * 3 + 1];\n b[2] = positions[j1 * 3 + 2];\n\n c[0] = positions[j2 * 3];\n c[1] = positions[j2 * 3 + 1];\n c[2] = positions[j2 * 3 + 2];\n\n math.subVec3(b, a, ab);\n math.subVec3(c, a, ac);\n\n const normVec = math.vec3();\n\n math.normalizeVec3(math.cross3Vec3(ab, ac, crossVec), normVec);\n\n if (!nvecs[j0]) {\n nvecs[j0] = [];\n }\n if (!nvecs[j1]) {\n nvecs[j1] = [];\n }\n if (!nvecs[j2]) {\n nvecs[j2] = [];\n }\n\n nvecs[j0].push(normVec);\n nvecs[j1].push(normVec);\n nvecs[j2].push(normVec);\n }\n\n normals = (normals && normals.length === positions.length) ? normals : new Float32Array(positions.length);\n\n let count;\n let x;\n let y;\n let z;\n\n for (i = 0, len = nvecs.length; i < len; i++) { // Now go through and average out everything\n\n count = nvecs[i].length;\n\n x = 0;\n y = 0;\n z = 0;\n\n for (let j = 0; j < count; j++) {\n x += nvecs[i][j][0];\n y += nvecs[i][j][1];\n z += nvecs[i][j][2];\n }\n\n normals[i * 3] = (x / count);\n normals[i * 3 + 1] = (y / count);\n normals[i * 3 + 2] = (z / count);\n }\n\n return normals;\n };\n }))(),\n\n /**\n * Builds vertex tangent vectors from positions, UVs and indices.\n *\n * @private\n */\n buildTangents: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n const tempVec3c = new FloatArrayType(3);\n const tempVec3d = new FloatArrayType(3);\n const tempVec3e = new FloatArrayType(3);\n const tempVec3f = new FloatArrayType(3);\n const tempVec3g = new FloatArrayType(3);\n\n return (positions, indices, uv) => {\n\n const tangents = new Float32Array(positions.length);\n\n // The vertex arrays needs to be calculated\n // before the calculation of the tangents\n\n for (let location = 0; location < indices.length; location += 3) {\n\n // Recontructing each vertex and UV coordinate into the respective vectors\n\n let index = indices[location];\n\n const v0 = positions.subarray(index * 3, index * 3 + 3);\n const uv0 = uv.subarray(index * 2, index * 2 + 2);\n\n index = indices[location + 1];\n\n const v1 = positions.subarray(index * 3, index * 3 + 3);\n const uv1 = uv.subarray(index * 2, index * 2 + 2);\n\n index = indices[location + 2];\n\n const v2 = positions.subarray(index * 3, index * 3 + 3);\n const uv2 = uv.subarray(index * 2, index * 2 + 2);\n\n const deltaPos1 = math.subVec3(v1, v0, tempVec3);\n const deltaPos2 = math.subVec3(v2, v0, tempVec3b);\n\n const deltaUV1 = math.subVec2(uv1, uv0, tempVec3c);\n const deltaUV2 = math.subVec2(uv2, uv0, tempVec3d);\n\n const r = 1 / ((deltaUV1[0] * deltaUV2[1]) - (deltaUV1[1] * deltaUV2[0]));\n\n const tangent = math.mulVec3Scalar(\n math.subVec3(\n math.mulVec3Scalar(deltaPos1, deltaUV2[1], tempVec3e),\n math.mulVec3Scalar(deltaPos2, deltaUV1[1], tempVec3f),\n tempVec3g\n ),\n r,\n tempVec3f\n );\n\n // Average the value of the vectors\n\n let addTo;\n\n for (let v = 0; v < 3; v++) {\n addTo = indices[location + v] * 3;\n tangents[addTo] += tangent[0];\n tangents[addTo + 1] += tangent[1];\n tangents[addTo + 2] += tangent[2];\n }\n }\n\n return tangents;\n };\n }))(),\n\n /**\n * Builds vertex and index arrays needed by color-indexed triangle picking.\n *\n * @private\n */\n buildPickTriangles(positions, indices, compressGeometry) {\n\n const numIndices = indices.length;\n const pickPositions = compressGeometry ? new Uint16Array(numIndices * 9) : new Float32Array(numIndices * 9);\n const pickColors = new Uint8Array(numIndices * 12);\n let primIndex = 0;\n let vi;// Positions array index\n let pvi = 0;// Picking positions array index\n let pci = 0; // Picking color array index\n\n // Triangle indices\n let i;\n let r;\n let g;\n let b;\n let a;\n\n for (let location = 0; location < numIndices; location += 3) {\n\n // Primitive-indexed triangle pick color\n\n a = (primIndex >> 24 & 0xFF);\n b = (primIndex >> 16 & 0xFF);\n g = (primIndex >> 8 & 0xFF);\n r = (primIndex & 0xFF);\n\n // A\n\n i = indices[location];\n vi = i * 3;\n\n pickPositions[pvi++] = positions[vi];\n pickPositions[pvi++] = positions[vi + 1];\n pickPositions[pvi++] = positions[vi + 2];\n\n pickColors[pci++] = r;\n pickColors[pci++] = g;\n pickColors[pci++] = b;\n pickColors[pci++] = a;\n\n // B\n\n i = indices[location + 1];\n vi = i * 3;\n\n pickPositions[pvi++] = positions[vi];\n pickPositions[pvi++] = positions[vi + 1];\n pickPositions[pvi++] = positions[vi + 2];\n\n pickColors[pci++] = r;\n pickColors[pci++] = g;\n pickColors[pci++] = b;\n pickColors[pci++] = a;\n\n // C\n\n i = indices[location + 2];\n vi = i * 3;\n\n pickPositions[pvi++] = positions[vi];\n pickPositions[pvi++] = positions[vi + 1];\n pickPositions[pvi++] = positions[vi + 2];\n\n pickColors[pci++] = r;\n pickColors[pci++] = g;\n pickColors[pci++] = b;\n pickColors[pci++] = a;\n\n primIndex++;\n }\n\n return {\n positions: pickPositions,\n colors: pickColors\n };\n },\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 */\n 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\n //------------------------------------------------------------------------------------------------------------------\n // Ray casting\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n Transforms a ray by a matrix.\n @method transformRay\n @static\n @param {Number[]} matrix 4x4 matrix\n @param {Number[]} rayOrigin The ray origin\n @param {Number[]} rayDir The ray direction\n @param {Number[]} rayOriginDest The transformed ray origin\n @param {Number[]} rayDirDest The transformed ray direction\n */\n transformRay: ((() => {\n\n const tempVec4a = new FloatArrayType(4);\n const tempVec4b = new FloatArrayType(4);\n\n return (matrix, rayOrigin, rayDir, rayOriginDest, rayDirDest) => {\n\n tempVec4a[0] = rayOrigin[0];\n tempVec4a[1] = rayOrigin[1];\n tempVec4a[2] = rayOrigin[2];\n tempVec4a[3] = 1;\n\n math.transformVec4(matrix, tempVec4a, tempVec4b);\n\n rayOriginDest[0] = tempVec4b[0];\n rayOriginDest[1] = tempVec4b[1];\n rayOriginDest[2] = tempVec4b[2];\n\n tempVec4a[0] = rayDir[0];\n tempVec4a[1] = rayDir[1];\n tempVec4a[2] = rayDir[2];\n\n math.transformVec3(matrix, tempVec4a, tempVec4b);\n\n math.normalizeVec3(tempVec4b);\n\n rayDirDest[0] = tempVec4b[0];\n rayDirDest[1] = tempVec4b[1];\n rayDirDest[2] = tempVec4b[2];\n };\n }))(),\n\n /**\n Transforms a Canvas-space position into a World-space ray, in the context of a Camera.\n @method canvasPosToWorldRay\n @static\n @param {Number[]} viewMatrix View matrix\n @param {Number[]} projMatrix Projection matrix\n @param {Number[]} canvasPos The Canvas-space position.\n @param {Number[]} worldRayOrigin The World-space ray origin.\n @param {Number[]} worldRayDir The World-space ray direction.\n */\n canvasPosToWorldRay: ((() => {\n\n const tempMat4b = new FloatArrayType(16);\n const tempMat4c = new FloatArrayType(16);\n const tempVec4a = new FloatArrayType(4);\n const tempVec4b = new FloatArrayType(4);\n const tempVec4c = new FloatArrayType(4);\n const tempVec4d = new FloatArrayType(4);\n\n return (canvas, viewMatrix, projMatrix, canvasPos, worldRayOrigin, worldRayDir) => {\n\n const pvMat = math.mulMat4(projMatrix, viewMatrix, tempMat4b);\n const pvMatInverse = math.inverseMat4(pvMat, tempMat4c);\n\n // Calculate clip space coordinates, which will be in range\n // of x=[-1..1] and y=[-1..1], with y=(+1) at top\n\n const canvasWidth = canvas.width;\n const canvasHeight = canvas.height;\n\n const clipX = (canvasPos[0] - canvasWidth / 2) / (canvasWidth / 2); // Calculate clip space coordinates\n const clipY = -(canvasPos[1] - canvasHeight / 2) / (canvasHeight / 2);\n\n tempVec4a[0] = clipX;\n tempVec4a[1] = clipY;\n tempVec4a[2] = -1;\n tempVec4a[3] = 1;\n\n math.transformVec4(pvMatInverse, tempVec4a, tempVec4b);\n math.mulVec4Scalar(tempVec4b, 1 / tempVec4b[3]);\n\n tempVec4c[0] = clipX;\n tempVec4c[1] = clipY;\n tempVec4c[2] = 1;\n tempVec4c[3] = 1;\n\n math.transformVec4(pvMatInverse, tempVec4c, tempVec4d);\n math.mulVec4Scalar(tempVec4d, 1 / tempVec4d[3]);\n\n worldRayOrigin[0] = tempVec4d[0];\n worldRayOrigin[1] = tempVec4d[1];\n worldRayOrigin[2] = tempVec4d[2];\n\n math.subVec3(tempVec4d, tempVec4b, worldRayDir);\n\n math.normalizeVec3(worldRayDir);\n };\n }))(),\n\n /**\n Transforms a Canvas-space position to a Mesh's Local-space coordinate system, in the context of a Camera.\n @method canvasPosToLocalRay\n @static\n @param {Camera} camera The Camera.\n @param {Mesh} mesh The Mesh.\n @param {Number[]} viewMatrix View matrix\n @param {Number[]} projMatrix Projection matrix\n @param {Number[]} worldMatrix Modeling matrix\n @param {Number[]} canvasPos The Canvas-space position.\n @param {Number[]} localRayOrigin The Local-space ray origin.\n @param {Number[]} localRayDir The Local-space ray direction.\n */\n canvasPosToLocalRay: ((() => {\n\n const worldRayOrigin = new FloatArrayType(3);\n const worldRayDir = new FloatArrayType(3);\n\n return (canvas, viewMatrix, projMatrix, worldMatrix, canvasPos, localRayOrigin, localRayDir) => {\n math.canvasPosToWorldRay(canvas, viewMatrix, projMatrix, canvasPos, worldRayOrigin, worldRayDir);\n math.worldRayToLocalRay(worldMatrix, worldRayOrigin, worldRayDir, localRayOrigin, localRayDir);\n };\n }))(),\n\n /**\n Transforms a ray from World-space to a Mesh's Local-space coordinate system.\n @method worldRayToLocalRay\n @static\n @param {Number[]} worldMatrix The World transform matrix\n @param {Number[]} worldRayOrigin The World-space ray origin.\n @param {Number[]} worldRayDir The World-space ray direction.\n @param {Number[]} localRayOrigin The Local-space ray origin.\n @param {Number[]} localRayDir The Local-space ray direction.\n */\n worldRayToLocalRay: ((() => {\n\n const tempMat4 = new FloatArrayType(16);\n const tempVec4a = new FloatArrayType(4);\n const tempVec4b = new FloatArrayType(4);\n\n return (worldMatrix, worldRayOrigin, worldRayDir, localRayOrigin, localRayDir) => {\n\n const modelMatInverse = math.inverseMat4(worldMatrix, tempMat4);\n\n tempVec4a[0] = worldRayOrigin[0];\n tempVec4a[1] = worldRayOrigin[1];\n tempVec4a[2] = worldRayOrigin[2];\n tempVec4a[3] = 1;\n\n math.transformVec4(modelMatInverse, tempVec4a, tempVec4b);\n\n localRayOrigin[0] = tempVec4b[0];\n localRayOrigin[1] = tempVec4b[1];\n localRayOrigin[2] = tempVec4b[2];\n\n math.transformVec3(modelMatInverse, worldRayDir, localRayDir);\n };\n }))(),\n\n buildKDTree: ((() => {\n\n const KD_TREE_MAX_DEPTH = 10;\n const KD_TREE_MIN_TRIANGLES = 20;\n\n const dimLength = new Float32Array();\n\n function buildNode(triangles, indices, positions, depth) {\n const aabb = new FloatArrayType(6);\n\n const node = {\n triangles: null,\n left: null,\n right: null,\n leaf: false,\n splitDim: 0,\n aabb\n };\n\n aabb[0] = aabb[1] = aabb[2] = Number.POSITIVE_INFINITY;\n aabb[3] = aabb[4] = aabb[5] = Number.NEGATIVE_INFINITY;\n\n let t;\n let i;\n let len;\n\n for (t = 0, len = triangles.length; t < len; ++t) {\n var ii = triangles[t] * 3;\n for (let j = 0; j < 3; ++j) {\n const pi = indices[ii + j] * 3;\n if (positions[pi] < aabb[0]) {\n aabb[0] = positions[pi]\n }\n if (positions[pi] > aabb[3]) {\n aabb[3] = positions[pi]\n }\n if (positions[pi + 1] < aabb[1]) {\n aabb[1] = positions[pi + 1]\n }\n if (positions[pi + 1] > aabb[4]) {\n aabb[4] = positions[pi + 1]\n }\n if (positions[pi + 2] < aabb[2]) {\n aabb[2] = positions[pi + 2]\n }\n if (positions[pi + 2] > aabb[5]) {\n aabb[5] = positions[pi + 2]\n }\n }\n }\n\n if (triangles.length < KD_TREE_MIN_TRIANGLES || depth > KD_TREE_MAX_DEPTH) {\n node.triangles = triangles;\n node.leaf = true;\n return node;\n }\n\n dimLength[0] = aabb[3] - aabb[0];\n dimLength[1] = aabb[4] - aabb[1];\n dimLength[2] = aabb[5] - aabb[2];\n\n let dim = 0;\n\n if (dimLength[1] > dimLength[dim]) {\n dim = 1;\n }\n\n if (dimLength[2] > dimLength[dim]) {\n dim = 2;\n }\n\n node.splitDim = dim;\n\n const mid = (aabb[dim] + aabb[dim + 3]) / 2;\n const left = new Array(triangles.length);\n let numLeft = 0;\n const right = new Array(triangles.length);\n let numRight = 0;\n\n for (t = 0, len = triangles.length; t < len; ++t) {\n\n var ii = triangles[t] * 3;\n const i0 = indices[ii];\n const i1 = indices[ii + 1];\n const i2 = indices[ii + 2];\n\n const pi0 = i0 * 3;\n const pi1 = i1 * 3;\n const pi2 = i2 * 3;\n\n if (positions[pi0 + dim] <= mid || positions[pi1 + dim] <= mid || positions[pi2 + dim] <= mid) {\n left[numLeft++] = triangles[t];\n } else {\n right[numRight++] = triangles[t];\n }\n }\n\n left.length = numLeft;\n right.length = numRight;\n\n node.left = buildNode(left, indices, positions, depth + 1);\n node.right = buildNode(right, indices, positions, depth + 1);\n\n return node;\n }\n\n return (indices, positions) => {\n const numTris = indices.length / 3;\n const triangles = new Array(numTris);\n for (let i = 0; i < numTris; ++i) {\n triangles[i] = i;\n }\n return buildNode(triangles, indices, positions, 0);\n };\n }))(),\n\n\n decompressPosition(position, decodeMatrix, dest) {\n dest = dest || position;\n dest[0] = position[0] * decodeMatrix[0] + decodeMatrix[12];\n dest[1] = position[1] * decodeMatrix[5] + decodeMatrix[13];\n dest[2] = position[2] * decodeMatrix[10] + decodeMatrix[14];\n },\n\n decompressPositions(positions, decodeMatrix, dest = new Float32Array(positions.length)) {\n for (let i = 0, len = positions.length; i < len; i += 3) {\n dest[i + 0] = positions[i + 0] * decodeMatrix[0] + decodeMatrix[12];\n dest[i + 1] = positions[i + 1] * decodeMatrix[5] + decodeMatrix[13];\n dest[i + 2] = positions[i + 2] * decodeMatrix[10] + decodeMatrix[14];\n }\n return dest;\n },\n\n decompressUV(uv, decodeMatrix, dest) {\n dest[0] = uv[0] * decodeMatrix[0] + decodeMatrix[6];\n dest[1] = uv[1] * decodeMatrix[4] + decodeMatrix[7];\n },\n\n decompressUVs(uvs, decodeMatrix, dest = new Float32Array(uvs.length)) {\n for (let i = 0, len = uvs.length; i < len; i += 3) {\n dest[i + 0] = uvs[i + 0] * decodeMatrix[0] + decodeMatrix[6];\n dest[i + 1] = uvs[i + 1] * decodeMatrix[4] + decodeMatrix[7];\n }\n return dest;\n },\n\n octDecodeVec2(oct, result) {\n let x = oct[0];\n let y = oct[1];\n x = (2 * x + 1) / 255;\n y = (2 * y + 1) / 255;\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 result[0] = x / length;\n result[1] = y / length;\n result[2] = z / length;\n return result;\n },\n\n octDecodeVec2s(octs, result) {\n for (let i = 0, j = 0, len = octs.length; i < len; i += 2) {\n let x = octs[i + 0];\n let y = octs[i + 1];\n x = (2 * x + 1) / 255;\n y = (2 * y + 1) / 255;\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 result[j + 0] = x / length;\n result[j + 1] = y / length;\n result[j + 2] = z / length;\n j += 3;\n }\n return result;\n }\n};\n\nmath.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\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 dot = math.dotVec3(normal1, normal2);\n if (dot > 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\n/**\n * Returns `true` if a plane clips the given 3D positions.\n * @param {Number[]} pos Position in plane\n * @param {Number[]} dir Direction of plane\n * @param {number} positions Flat array of 3D positions.\n * @param {number} numElementsPerPosition Number of elements perposition - usually either 3 or 4.\n * @returns {boolean}\n */\nmath.planeClipsPositions3 = function (pos, dir, positions, numElementsPerPosition = 3) {\n for (let i = 0, len = positions.length; i < len; i += numElementsPerPosition) {\n tempVec3a[0] = positions[i + 0] - pos[0];\n tempVec3a[1] = positions[i + 1] - pos[1];\n tempVec3a[2] = positions[i + 2] - pos[2];\n let dotProduct = tempVec3a[0] * dir[0] + tempVec3a[1] * dir[1] + tempVec3a[2] * dir[2];\n if (dotProduct < 0) {\n return true;\n }\n }\n return false;\n}\n\nexport {math};\n", @@ -88940,7 +89468,7 @@ "lineNumber": 1 }, { - "__docId__": 4462, + "__docId__": 4480, "kind": "variable", "name": "doublePrecision", "memberof": "src/viewer/scene/math/math.js", @@ -88961,7 +89489,7 @@ "ignore": true }, { - "__docId__": 4463, + "__docId__": 4481, "kind": "variable", "name": "FloatArrayType", "memberof": "src/viewer/scene/math/math.js", @@ -88982,7 +89510,7 @@ "ignore": true }, { - "__docId__": 4464, + "__docId__": 4482, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/math/math.js", @@ -89003,7 +89531,7 @@ "ignore": true }, { - "__docId__": 4465, + "__docId__": 4483, "kind": "variable", "name": "tempMat1", "memberof": "src/viewer/scene/math/math.js", @@ -89024,7 +89552,7 @@ "ignore": true }, { - "__docId__": 4466, + "__docId__": 4484, "kind": "variable", "name": "tempMat2", "memberof": "src/viewer/scene/math/math.js", @@ -89045,7 +89573,7 @@ "ignore": true }, { - "__docId__": 4467, + "__docId__": 4485, "kind": "variable", "name": "tempVec4", "memberof": "src/viewer/scene/math/math.js", @@ -89066,7 +89594,7 @@ "ignore": true }, { - "__docId__": 4468, + "__docId__": 4486, "kind": "function", "name": "planeClipsPositions3", "memberof": "src/viewer/scene/math/math.js", @@ -89139,7 +89667,7 @@ "ignore": true }, { - "__docId__": 4469, + "__docId__": 4487, "kind": "variable", "name": "math", "memberof": "src/viewer/scene/math/math.js", @@ -89159,7 +89687,7 @@ } }, { - "__docId__": 4470, + "__docId__": 4488, "kind": "file", "name": "src/viewer/scene/math/rtcCoords.js", "content": "import {math} from './math.js';\n\nconst tempVec3a = math.vec3();\n\n/**\n * Given a view matrix and a relative-to-center (RTC) coordinate origin, returns a view matrix\n * to transform RTC coordinates to View-space.\n *\n * The returned view matrix is\n *\n * @private\n */\nconst createRTCViewMat = (function () {\n\n const tempMat = new Float64Array(16);\n const rtcCenterWorld = new Float64Array(4);\n const rtcCenterView = new Float64Array(4);\n\n return function (viewMat, rtcCenter, rtcViewMat) {\n rtcViewMat = rtcViewMat || tempMat;\n rtcCenterWorld[0] = rtcCenter[0];\n rtcCenterWorld[1] = rtcCenter[1];\n rtcCenterWorld[2] = rtcCenter[2];\n rtcCenterWorld[3] = 1;\n math.transformVec4(viewMat, rtcCenterWorld, rtcCenterView);\n math.setMat4Translation(viewMat, rtcCenterView, rtcViewMat);\n return rtcViewMat.slice ();\n }\n}());\n\n/**\n * Converts a World-space 3D position to RTC.\n *\n * Given a double-precision World-space position, returns a double-precision relative-to-center (RTC) center pos\n * and a single-precision offset fom that center.\n * @private\n * @param {Float64Array} worldPos The World-space position.\n * @param {Float64Array} rtcCenter Double-precision relative-to-center (RTC) center pos.\n * @param {Float32Array} rtcPos Single-precision offset fom that center.\n */\nfunction worldToRTCPos(worldPos, rtcCenter, rtcPos) {\n\n const xHigh = Float32Array.from([worldPos[0]])[0];\n const xLow = worldPos[0] - xHigh;\n\n const yHigh = Float32Array.from([worldPos[1]])[0];\n const yLow = worldPos[1] - yHigh;\n\n const zHigh = Float32Array.from([worldPos[2]])[0];\n const zLow = worldPos[2] - zHigh;\n\n rtcCenter[0] = xHigh;\n rtcCenter[1] = yHigh;\n rtcCenter[2] = zHigh;\n\n rtcPos[0] = xLow;\n rtcPos[1] = yLow;\n rtcPos[2] = zLow;\n}\n\n\n/**\n * Converts a flat array of double-precision positions to RTC positions, if necessary.\n *\n * Conversion is necessary if the coordinates have values larger than can be expressed at single-precision. When\n * that's the case, then this function will compute the RTC coordinates and RTC center and return true. Otherwise\n * this function does nothing and returns false.\n *\n * When computing the RTC position, this function uses a modulus operation to ensure that, whenever possible,\n * identical RTC centers are reused for different positions arrays.\n *\n * @private\n * @param {Float64Array} worldPositions Flat array of World-space 3D positions.\n * @param {Float64Array} rtcPositions Outputs the computed flat array of 3D RTC positions.\n * @param {Float64Array} rtcCenter Outputs the computed double-precision relative-to-center (RTC) center pos.\n * @param {Number} [cellSize=10000000] The size of each coordinate cell within the RTC coordinate system.\n * @returns {Boolean} ````True```` if the positions actually needed conversion to RTC, else ````false````. When\n * ````false````, we can safely ignore the data returned in ````rtcPositions```` and ````rtcCenter````,\n * since ````rtcCenter```` will equal ````[0,0,0]````, and ````rtcPositions```` will contain identical values to ````positions````.\n */\nfunction worldToRTCPositions(worldPositions, rtcPositions, rtcCenter, cellSize = 1000) {\n\n const center = math.getPositionsCenter(worldPositions, tempVec3a);\n\n const rtcCenterX = Math.round(center[0] / cellSize) * cellSize;\n const rtcCenterY = Math.round(center[1] / cellSize) * cellSize;\n const rtcCenterZ = Math.round(center[2] / cellSize) * cellSize;\n\n rtcCenter[0] = rtcCenterX;\n rtcCenter[1] = rtcCenterY;\n rtcCenter[2] = rtcCenterZ;\n\n const rtcNeeded = (rtcCenter[0] !== 0 || rtcCenter[1] !== 0 || rtcCenter[2] !== 0);\n\n if (rtcNeeded) {\n for (let i = 0, len = worldPositions.length; i < len; i += 3) {\n rtcPositions[i + 0] = worldPositions[i + 0] - rtcCenterX;\n rtcPositions[i + 1] = worldPositions[i + 1] - rtcCenterY;\n rtcPositions[i + 2] = worldPositions[i + 2] - rtcCenterZ;\n }\n }\n\n return rtcNeeded;\n}\n\n/**\n * Converts an RTC 3D position to World-space.\n *\n * @private\n * @param {Float64Array} rtcCenter Double-precision relative-to-center (RTC) center pos.\n * @param {Float32Array} rtcPos Single-precision offset fom that center.\n * @param {Float64Array} worldPos The World-space position.\n */\nfunction rtcToWorldPos(rtcCenter, rtcPos, worldPos) {\n worldPos[0] = rtcCenter[0] + rtcPos[0];\n worldPos[1] = rtcCenter[1] + rtcPos[1];\n worldPos[2] = rtcCenter[2] + rtcPos[2];\n return worldPos;\n}\n\n/**\n * Given a 3D plane defined by distance from origin and direction, and an RTC center position,\n * return a plane position that is relative to the RTC center.\n *\n * @private\n * @param dist\n * @param dir\n * @param rtcCenter\n * @param rtcPlanePos\n * @returns {*}\n */\nfunction getPlaneRTCPos(dist, dir, rtcCenter, rtcPlanePos) {\n const rtcCenterToPlaneDist = math.dotVec3(dir, rtcCenter) + dist;\n const dirNormalized = math.normalizeVec3(dir, tempVec3a);\n math.mulVec3Scalar(dirNormalized, -rtcCenterToPlaneDist, rtcPlanePos);\n return rtcPlanePos;\n}\n\nexport {createRTCViewMat, worldToRTCPos, worldToRTCPositions, rtcToWorldPos, getPlaneRTCPos};", @@ -89170,7 +89698,7 @@ "lineNumber": 1 }, { - "__docId__": 4471, + "__docId__": 4489, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -89191,7 +89719,7 @@ "ignore": true }, { - "__docId__": 4472, + "__docId__": 4490, "kind": "variable", "name": "createRTCViewMat", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -89211,7 +89739,7 @@ } }, { - "__docId__": 4473, + "__docId__": 4491, "kind": "function", "name": "worldToRTCPos", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -89261,7 +89789,7 @@ "return": null }, { - "__docId__": 4474, + "__docId__": 4492, "kind": "function", "name": "worldToRTCPositions", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -89336,7 +89864,7 @@ "ignore": true }, { - "__docId__": 4475, + "__docId__": 4493, "kind": "function", "name": "rtcToWorldPos", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -89390,7 +89918,7 @@ } }, { - "__docId__": 4476, + "__docId__": 4494, "kind": "function", "name": "getPlaneRTCPos", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -89463,7 +89991,7 @@ "ignore": true }, { - "__docId__": 4477, + "__docId__": 4495, "kind": "file", "name": "src/viewer/scene/mementos/CameraMemento.js", "content": "import {math} from \"../math/math.js\";\n\n/**\n * @desc Saves and restores the state of a {@link Scene}'s {@link Camera}.\n *\n * ## See Also\n *\n * * {@link ModelMemento} - Saves and restores a snapshot of the visual state of the {@link Entity}'s of a model within a {@link Scene}.\n * * {@link ObjectsMemento} - Saves and restores a snapshot of the visual state of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Viewer} and use an {@link XKTLoaderPlugin} to load an ````.xkt```` model. When the model has loaded, we'll save a snapshot of the {@link Camera} state in an CameraMemento. Then we'll move the Camera, and then we'll restore its original state again from the CameraMemento.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, CameraMemento} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Load a model\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\"\n * });\n *\n * // Set camera\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * model.on(\"loaded\", () => {\n *\n * // Model has loaded\n *\n * // Save memento of camera state\n * const cameraMemento = new CameraMemento();\n *\n * cameraMemento.saveCamera(viewer.scene);\n *\n * // Move the camera\n * viewer.camera.eye = [45.3, 2.00, 5.13];\n * viewer.camera.look = [0.0, 5.5, 10.0];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * // Restore the camera state again\n * objectsMemento.restoreCamera(viewer.scene);\n * });\n * ````\n */\nclass CameraMemento {\n\n /**\n * Creates a CameraState.\n *\n * @param {Scene} [scene] When given, immediately saves the state of the given {@link Scene}'s {@link Camera}.\n */\n constructor(scene) {\n\n /** @private */\n this._eye = math.vec3();\n\n /** @private */\n this._look = math.vec3();\n\n /** @private */\n this._up = math.vec3();\n\n /** @private */\n this._projection = {};\n\n if (scene) {\n this.saveCamera(scene);\n }\n }\n\n /**\n * Saves the state of the given {@link Scene}'s {@link Camera}.\n *\n * @param {Scene} scene The scene that contains the {@link Camera}.\n */\n saveCamera(scene) {\n\n const camera = scene.camera;\n const project = camera.project;\n\n this._eye.set(camera.eye);\n this._look.set(camera.look);\n this._up.set(camera.up);\n\n switch (camera.projection) {\n\n case \"perspective\":\n this._projection = {\n projection: \"perspective\",\n fov: project.fov,\n fovAxis: project.fovAxis,\n near: project.near,\n far: project.far\n };\n break;\n\n case \"ortho\":\n this._projection = {\n projection: \"ortho\",\n scale: project.scale,\n near: project.near,\n far: project.far\n };\n break;\n\n case \"frustum\":\n this._projection = {\n projection: \"frustum\",\n left: project.left,\n right: project.right,\n top: project.top,\n bottom: project.bottom,\n near: project.near,\n far: project.far\n };\n break;\n\n case \"custom\":\n this._projection = {\n projection: \"custom\",\n matrix: project.matrix.slice()\n };\n break;\n }\n }\n\n /**\n * Restores a {@link Scene}'s {@link Camera} to the state previously captured with {@link CameraMemento#saveCamera}.\n *\n * @param {Scene} scene The scene.\n * @param {Function} [done] When this callback is given, will fly the {@link Camera} to the saved state then fire the callback. Otherwise will just jump the Camera to the saved state.\n */\n restoreCamera(scene, done) {\n\n const camera = scene.camera;\n const savedProjection = this._projection;\n\n function restoreProjection() {\n\n switch (savedProjection.type) {\n\n case \"perspective\":\n camera.perspective.fov = savedProjection.fov;\n camera.perspective.fovAxis = savedProjection.fovAxis;\n camera.perspective.near = savedProjection.near;\n camera.perspective.far = savedProjection.far;\n break;\n\n case \"ortho\":\n camera.ortho.scale = savedProjection.scale;\n camera.ortho.near = savedProjection.near;\n camera.ortho.far = savedProjection.far;\n break;\n\n case \"frustum\":\n camera.frustum.left = savedProjection.left;\n camera.frustum.right = savedProjection.right;\n camera.frustum.top = savedProjection.top;\n camera.frustum.bottom = savedProjection.bottom;\n camera.frustum.near = savedProjection.near;\n camera.frustum.far = savedProjection.far;\n break;\n\n case \"custom\":\n camera.customProjection.matrix = savedProjection.matrix;\n break;\n }\n }\n\n if (done) {\n scene.viewer.cameraFlight.flyTo({\n eye: this._eye,\n look: this._look,\n up: this._up,\n orthoScale: savedProjection.scale,\n projection: savedProjection.projection\n }, () => {\n restoreProjection();\n done();\n });\n } else {\n camera.eye = this._eye;\n camera.look = this._look;\n camera.up = this._up;\n restoreProjection();\n camera.projection = savedProjection.projection;\n }\n }\n}\n\nexport {CameraMemento};", @@ -89474,7 +90002,7 @@ "lineNumber": 1 }, { - "__docId__": 4478, + "__docId__": 4496, "kind": "class", "name": "CameraMemento", "memberof": "src/viewer/scene/mementos/CameraMemento.js", @@ -89489,7 +90017,7 @@ "interface": false }, { - "__docId__": 4479, + "__docId__": 4497, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -89514,7 +90042,7 @@ ] }, { - "__docId__": 4480, + "__docId__": 4498, "kind": "member", "name": "_eye", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -89531,7 +90059,7 @@ } }, { - "__docId__": 4481, + "__docId__": 4499, "kind": "member", "name": "_look", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -89548,7 +90076,7 @@ } }, { - "__docId__": 4482, + "__docId__": 4500, "kind": "member", "name": "_up", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -89565,7 +90093,7 @@ } }, { - "__docId__": 4483, + "__docId__": 4501, "kind": "member", "name": "_projection", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -89582,7 +90110,7 @@ } }, { - "__docId__": 4484, + "__docId__": 4502, "kind": "method", "name": "saveCamera", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -89608,7 +90136,7 @@ "return": null }, { - "__docId__": 4489, + "__docId__": 4507, "kind": "method", "name": "restoreCamera", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -89644,7 +90172,7 @@ "return": null }, { - "__docId__": 4490, + "__docId__": 4508, "kind": "file", "name": "src/viewer/scene/mementos/ModelMemento.js", "content": "import {math} from \"../math/math.js\";\nimport {utils} from \"../utils.js\";\n\nconst color = math.vec3();\n\n/**\n * @desc Saves and restores a snapshot of the visual state of the {@link Entity}'s of a model within a {@link Scene}.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Viewer} and use an {@link XKTLoaderPlugin} to load an ````.xkt```` model. When the model has loaded, we'll hide a couple of {@link Entity}s and save a snapshot of the visual states of all its Entitys in an ModelMemento. Then we'll show all the Entitys\n * again, and then we'll restore the visual states of all the Entitys again from the ModelMemento, which will hide those two Entitys again.\n *\n * ## See Also\n *\n * * {@link CameraMemento} - Saves and restores the state of a {@link Scene}'s {@link Camera}.\n * * {@link ObjectsMemento} - Saves and restores a snapshot of the visual state of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, ModelMemento} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Load a model\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * // Model has loaded\n *\n * // Hide a couple of objects\n * viewer.scene.objects[\"0u4wgLe6n0ABVaiXyikbkA\"].visible = false;\n * viewer.scene.objects[\"3u4wgLe3n0AXVaiXyikbYO\"].visible = false;\n *\n * // Save memento of all object states, which includes those two hidden objects\n * const ModelMemento = new ModelMemento();\n *\n * const metaModel = viewer.metaScene.metaModels\n * ModelMemento.saveObjects(viewer.scene);\n *\n * // Show all objects\n * viewer.scene.setObjectsVisible(viewer.scene.objectIds, true);\n *\n * // Restore the objects states again, which involves hiding those two objects again\n * ModelMemento.restoreObjects(viewer.scene);\n * });\n * `````\n *\n * ## Masking Saved State\n *\n * We can optionally supply a mask to focus what state we save and restore.\n *\n * For example, to save and restore only the {@link Entity#visible} and {@link Entity#clippable} states:\n *\n * ````javascript\n * ModelMemento.saveObjects(viewer.scene, {\n * visible: true,\n * clippable: true\n * });\n *\n * //...\n *\n * // Restore the objects states again\n * ModelMemento.restoreObjects(viewer.scene);\n * ````\n */\nclass ModelMemento {\n\n /**\n * Creates a ModelMemento.\n *\n * @param {MetaModel} [metaModel] When given, immediately saves the model's {@link Entity} states to this ModelMemento.\n */\n constructor(metaModel) {\n\n /** @private */\n this.objectsVisible = [];\n\n /** @private */\n this.objectsEdges = [];\n\n /** @private */\n this.objectsXrayed = [];\n\n /** @private */\n this.objectsHighlighted = [];\n\n /** @private */\n this.objectsSelected = [];\n\n /** @private */\n this.objectsClippable = [];\n\n /** @private */\n this.objectsPickable = [];\n\n /** @private */\n this.objectsColorize = [];\n\n /** @private */\n this.objectsOpacity = [];\n\n /** @private */\n this.numObjects = 0;\n\n if (metaModel) {\n const metaScene = metaModel.metaScene;\n const scene = metaScene.scene;\n this.saveObjects(scene, metaModel);\n }\n }\n\n /**\n * Saves a snapshot of the visual state of the {@link Entity}'s that represent objects within a model.\n *\n * @param {Scene} scene The scene.\n * @param {MetaModel} metaModel Represents the model. Corresponds with an {@link Entity} that represents the model in the scene.\n * @param {Object} [mask] Masks what state gets saved. Saves all state when not supplied.\n * @param {boolean} [mask.visible] Saves {@link Entity#visible} values when ````true````.\n * @param {boolean} [mask.visible] Saves {@link Entity#visible} values when ````true````.\n * @param {boolean} [mask.edges] Saves {@link Entity#edges} values when ````true````.\n * @param {boolean} [mask.xrayed] Saves {@link Entity#xrayed} values when ````true````.\n * @param {boolean} [mask.highlighted] Saves {@link Entity#highlighted} values when ````true````.\n * @param {boolean} [mask.selected] Saves {@link Entity#selected} values when ````true````.\n * @param {boolean} [mask.clippable] Saves {@link Entity#clippable} values when ````true````.\n * @param {boolean} [mask.pickable] Saves {@link Entity#pickable} values when ````true````.\n * @param {boolean} [mask.colorize] Saves {@link Entity#colorize} values when ````true````.\n * @param {boolean} [mask.opacity] Saves {@link Entity#opacity} values when ````true````.\n */\n saveObjects(scene, metaModel, mask) {\n\n this.numObjects = 0;\n\n this._mask = mask ? utils.apply(mask, {}) : null;\n\n const visible = (!mask || mask.visible);\n const edges = (!mask || mask.edges);\n const xrayed = (!mask || mask.xrayed);\n const highlighted = (!mask || mask.highlighted);\n const selected = (!mask || mask.selected);\n const clippable = (!mask || mask.clippable);\n const pickable = (!mask || mask.pickable);\n const colorize = (!mask || mask.colorize);\n const opacity = (!mask || mask.opacity);\n\n const metaObjects = metaModel.metaObjects;\n const objects = scene.objects;\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n const objectId = metaObject.id;\n const object = objects[objectId];\n if (!object) {\n continue;\n }\n if (visible) {\n this.objectsVisible[i] = object.visible;\n }\n if (edges) {\n this.objectsEdges[i] = object.edges;\n }\n if (xrayed) {\n this.objectsXrayed[i] = object.xrayed;\n }\n if (highlighted) {\n this.objectsHighlighted[i] = object.highlighted;\n }\n if (selected) {\n this.objectsSelected[i] = object.selected;\n }\n if (clippable) {\n this.objectsClippable[i] = object.clippable;\n }\n if (pickable) {\n this.objectsPickable[i] = object.pickable;\n }\n if (colorize) {\n const objectColor = object.colorize;\n this.objectsColorize[i * 3 + 0] = objectColor[0];\n this.objectsColorize[i * 3 + 1] = objectColor[1];\n this.objectsColorize[i * 3 + 2] = objectColor[2];\n }\n if (opacity) {\n this.objectsOpacity[i] = object.opacity;\n }\n this.numObjects++;\n }\n }\n\n /**\n * Restores a {@link Scene}'s {@link Entity}'s to their state previously captured with {@link ModelMemento#saveObjects}.\n *\n * Assumes that the model has not been destroyed or modified since saving.\n *\n * @param {Scene} scene The scene that was given to {@link ModelMemento#saveObjects}.\n * @param {MetaModel} metaModel The metamodel that was given to {@link ModelMemento#saveObjects}.\n */\n restoreObjects(scene, metaModel) {\n\n const mask = this._mask;\n\n const visible = (!mask || mask.visible);\n const edges = (!mask || mask.edges);\n const xrayed = (!mask || mask.xrayed);\n const highlighted = (!mask || mask.highlighted);\n const selected = (!mask || mask.selected);\n const clippable = (!mask || mask.clippable);\n const pickable = (!mask || mask.pickable);\n const colorize = (!mask || mask.colorize);\n const opacity = (!mask || mask.opacity);\n\n const metaObjects = metaModel.metaObjects;\n const objects = scene.objects;\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n const objectId = metaObject.id;\n const object = objects[objectId];\n if (!object) {\n continue;\n }\n if (visible) {\n object.visible = this.objectsVisible[i];\n }\n if (edges) {\n object.edges = this.objectsEdges[i];\n }\n if (xrayed) {\n object.xrayed = this.objectsXrayed[i];\n }\n if (highlighted) {\n object.highlighted = this.objectsHighlighted[i];\n }\n if (selected) {\n object.selected = this.objectsSelected[i];\n }\n if (clippable) {\n object.clippable = this.objectsClippable[i];\n }\n if (pickable) {\n object.pickable = this.objectsPickable[i];\n }\n if (colorize) {\n color[0] = this.objectsColorize[i * 3 + 0];\n color[1] = this.objectsColorize[i * 3 + 1];\n color[2] = this.objectsColorize[i * 3 + 2];\n object.colorize = color;\n }\n if (opacity) {\n object.opacity = this.objectsOpacity[i];\n }\n }\n }\n}\n\nexport {ModelMemento};", @@ -89655,7 +90183,7 @@ "lineNumber": 1 }, { - "__docId__": 4491, + "__docId__": 4509, "kind": "variable", "name": "color", "memberof": "src/viewer/scene/mementos/ModelMemento.js", @@ -89676,7 +90204,7 @@ "ignore": true }, { - "__docId__": 4492, + "__docId__": 4510, "kind": "class", "name": "ModelMemento", "memberof": "src/viewer/scene/mementos/ModelMemento.js", @@ -89691,7 +90219,7 @@ "interface": false }, { - "__docId__": 4493, + "__docId__": 4511, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89716,7 +90244,7 @@ ] }, { - "__docId__": 4494, + "__docId__": 4512, "kind": "member", "name": "objectsVisible", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89733,7 +90261,7 @@ } }, { - "__docId__": 4495, + "__docId__": 4513, "kind": "member", "name": "objectsEdges", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89750,7 +90278,7 @@ } }, { - "__docId__": 4496, + "__docId__": 4514, "kind": "member", "name": "objectsXrayed", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89767,7 +90295,7 @@ } }, { - "__docId__": 4497, + "__docId__": 4515, "kind": "member", "name": "objectsHighlighted", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89784,7 +90312,7 @@ } }, { - "__docId__": 4498, + "__docId__": 4516, "kind": "member", "name": "objectsSelected", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89801,7 +90329,7 @@ } }, { - "__docId__": 4499, + "__docId__": 4517, "kind": "member", "name": "objectsClippable", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89818,7 +90346,7 @@ } }, { - "__docId__": 4500, + "__docId__": 4518, "kind": "member", "name": "objectsPickable", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89835,7 +90363,7 @@ } }, { - "__docId__": 4501, + "__docId__": 4519, "kind": "member", "name": "objectsColorize", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89852,7 +90380,7 @@ } }, { - "__docId__": 4502, + "__docId__": 4520, "kind": "member", "name": "objectsOpacity", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89869,7 +90397,7 @@ } }, { - "__docId__": 4503, + "__docId__": 4521, "kind": "member", "name": "numObjects", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -89886,7 +90414,7 @@ } }, { - "__docId__": 4504, + "__docId__": 4522, "kind": "method", "name": "saveObjects", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -90032,7 +90560,7 @@ "return": null }, { - "__docId__": 4506, + "__docId__": 4524, "kind": "member", "name": "_mask", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -90050,7 +90578,7 @@ } }, { - "__docId__": 4507, + "__docId__": 4525, "kind": "method", "name": "restoreObjects", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -90086,7 +90614,7 @@ "return": null }, { - "__docId__": 4508, + "__docId__": 4526, "kind": "file", "name": "src/viewer/scene/mementos/ObjectsMemento.js", "content": "import {math} from \"../math/math.js\";\nimport {utils} from \"../utils.js\";\n\nconst color = math.vec3();\n\n/**\n * @desc Saves and restores a snapshot of the visual state of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * * An Entity represents an object when {@link Entity#isObject} is ````true````.\n * * Each object-Entity is registered by {@link Entity#id} in {@link Scene#objects}.\n *\n * ## See Also\n *\n * * {@link CameraMemento} - Saves and restores the state of a {@link Scene}'s {@link Camera}.\n * * {@link ModelMemento} - Saves and restores a snapshot of the visual state of the {@link Entity}'s of a model within a {@link Scene}.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Viewer} and use an {@link XKTLoaderPlugin} to load an ````.xkt```` model. When the model has loaded, we'll hide a couple of {@link Entity}s and save a snapshot of the visual states of all the Entitys in an ObjectsMemento. Then we'll show all the Entitys\n * again, and then we'll restore the visual states of all the Entitys again from the ObjectsMemento, which will hide those two Entitys again.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, ObjectsMemento} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Load a model\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * // Model has loaded\n *\n * // Hide a couple of objects\n * viewer.scene.objects[\"0u4wgLe6n0ABVaiXyikbkA\"].visible = false;\n * viewer.scene.objects[\"3u4wgLe3n0AXVaiXyikbYO\"].visible = false;\n *\n * // Save memento of all object states, which includes those two hidden objects\n * const objectsMemento = new ObjectsMemento();\n *\n * objectsMemento.saveObjects(viewer.scene);\n *\n * // Show all objects\n * viewer.scene.setObjectsVisible(viewer.scene.objectIds, true);\n *\n * // Restore the objects states again, which involves hiding those two objects again\n * objectsMemento.restoreObjects(viewer.scene);\n * });\n * `````\n *\n * ## Masking Saved State\n *\n * We can optionally supply a mask to focus what state we save and restore.\n *\n * For example, to save and restore only the {@link Entity#visible} and {@link Entity#clippable} states:\n *\n * ````javascript\n * objectsMemento.saveObjects(viewer.scene, {\n * visible: true,\n * clippable: true\n * });\n *\n * //...\n *\n * // Restore the objects states again\n * objectsMemento.restoreObjects(viewer.scene);\n * ````\n */\nclass ObjectsMemento {\n\n /**\n * Creates an ObjectsMemento.\n */\n constructor() {\n\n /** @private */\n this.objectsVisible = [];\n\n /** @private */\n this.objectsEdges = [];\n\n /** @private */\n this.objectsXrayed = [];\n\n /** @private */\n this.objectsHighlighted = [];\n\n /** @private */\n this.objectsSelected = [];\n\n /** @private */\n this.objectsClippable = [];\n\n /** @private */\n this.objectsPickable = [];\n\n /** @private */\n this.objectsColorize = [];\n\n /** @private */\n this.objectsHasColorize = [];\n\n /** @private */\n this.objectsOpacity = [];\n\n /** @private */\n this.numObjects = 0;\n }\n\n /**\n * Saves a snapshot of the visual state of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * @param {Scene} scene The scene.\n * @param {Object} [mask] Masks what state gets saved. Saves all state when not supplied.\n * @param {boolean} [mask.visible] Saves {@link Entity#visible} values when ````true````.\n * @param {boolean} [mask.visible] Saves {@link Entity#visible} values when ````true````.\n * @param {boolean} [mask.edges] Saves {@link Entity#edges} values when ````true````.\n * @param {boolean} [mask.xrayed] Saves {@link Entity#xrayed} values when ````true````.\n * @param {boolean} [mask.highlighted] Saves {@link Entity#highlighted} values when ````true````.\n * @param {boolean} [mask.selected] Saves {@link Entity#selected} values when ````true````.\n * @param {boolean} [mask.clippable] Saves {@link Entity#clippable} values when ````true````.\n * @param {boolean} [mask.pickable] Saves {@link Entity#pickable} values when ````true````.\n * @param {boolean} [mask.colorize] Saves {@link Entity#colorize} values when ````true````.\n * @param {boolean} [mask.opacity] Saves {@link Entity#opacity} values when ````true````.\n */\n saveObjects(scene, mask) {\n\n this.numObjects = 0;\n\n this._mask = mask ? utils.apply(mask, {}) : null;\n\n const objects = scene.objects;\n const visible = (!mask || mask.visible);\n const edges = (!mask || mask.edges);\n const xrayed = (!mask || mask.xrayed);\n const highlighted = (!mask || mask.highlighted);\n const selected = (!mask || mask.selected);\n const clippable = (!mask || mask.clippable);\n const pickable = (!mask || mask.pickable);\n const colorize = (!mask || mask.colorize);\n const opacity = (!mask || mask.opacity);\n\n for (let objectId in objects) {\n if (objects.hasOwnProperty(objectId)) {\n const object = objects[objectId];\n const i = this.numObjects;\n if (visible) {\n this.objectsVisible[i] = object.visible;\n }\n if (edges) {\n this.objectsEdges[i] = object.edges;\n }\n if (xrayed) {\n this.objectsXrayed[i] = object.xrayed;\n }\n if (highlighted) {\n this.objectsHighlighted[i] = object.highlighted;\n }\n if (selected) {\n this.objectsSelected[i] = object.selected;\n }\n if (clippable) {\n this.objectsClippable[i] = object.clippable;\n }\n if (pickable) {\n this.objectsPickable[i] = object.pickable;\n }\n if (colorize) {\n const objectColor = object.colorize;\n if (objectColor) {\n this.objectsColorize[i * 3 + 0] = objectColor[0];\n this.objectsColorize[i * 3 + 1] = objectColor[1];\n this.objectsColorize[i * 3 + 2] = objectColor[2];\n this.objectsHasColorize[i] = true;\n } else {\n this.objectsHasColorize[i] = false;\n }\n }\n if (opacity) {\n this.objectsOpacity[i] = object.opacity;\n }\n this.numObjects++;\n }\n }\n }\n\n /**\n * Restores a {@link Scene}'s {@link Entity}'s to their state previously captured with {@link ObjectsMemento#saveObjects}.\n * @param {Scene} scene The scene.\n */\n restoreObjects(scene) {\n\n const mask = this._mask;\n\n const visible = (!mask || mask.visible);\n const edges = (!mask || mask.edges);\n const xrayed = (!mask || mask.xrayed);\n const highlighted = (!mask || mask.highlighted);\n const selected = (!mask || mask.selected);\n const clippable = (!mask || mask.clippable);\n const pickable = (!mask || mask.pickable);\n const colorize = (!mask || mask.colorize);\n const opacity = (!mask || mask.opacity);\n\n var i = 0;\n\n const objects = scene.objects;\n\n for (let objectId in objects) {\n if (objects.hasOwnProperty(objectId)) {\n const object = objects[objectId];\n if (visible) {\n object.visible = this.objectsVisible[i];\n }\n if (edges) {\n object.edges = this.objectsEdges[i];\n }\n if (xrayed) {\n object.xrayed = this.objectsXrayed[i];\n }\n if (highlighted) {\n object.highlighted = this.objectsHighlighted[i];\n }\n if (selected) {\n object.selected = this.objectsSelected[i];\n }\n if (clippable) {\n object.clippable = this.objectsClippable[i];\n }\n if (pickable) {\n object.pickable = this.objectsPickable[i];\n }\n if (colorize ) {\n if (this.objectsHasColorize[i]) {\n color[0] = this.objectsColorize[i * 3 + 0];\n color[1] = this.objectsColorize[i * 3 + 1];\n color[2] = this.objectsColorize[i * 3 + 2];\n object.colorize = color;\n } else {\n object.colorize = null;\n }\n }\n if (opacity) {\n object.opacity = this.objectsOpacity[i];\n }\n i++;\n }\n }\n }\n}\n\nexport {ObjectsMemento};", @@ -90097,7 +90625,7 @@ "lineNumber": 1 }, { - "__docId__": 4509, + "__docId__": 4527, "kind": "variable", "name": "color", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js", @@ -90118,7 +90646,7 @@ "ignore": true }, { - "__docId__": 4510, + "__docId__": 4528, "kind": "class", "name": "ObjectsMemento", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js", @@ -90133,7 +90661,7 @@ "interface": false }, { - "__docId__": 4511, + "__docId__": 4529, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90146,7 +90674,7 @@ "lineNumber": 81 }, { - "__docId__": 4512, + "__docId__": 4530, "kind": "member", "name": "objectsVisible", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90163,7 +90691,7 @@ } }, { - "__docId__": 4513, + "__docId__": 4531, "kind": "member", "name": "objectsEdges", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90180,7 +90708,7 @@ } }, { - "__docId__": 4514, + "__docId__": 4532, "kind": "member", "name": "objectsXrayed", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90197,7 +90725,7 @@ } }, { - "__docId__": 4515, + "__docId__": 4533, "kind": "member", "name": "objectsHighlighted", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90214,7 +90742,7 @@ } }, { - "__docId__": 4516, + "__docId__": 4534, "kind": "member", "name": "objectsSelected", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90231,7 +90759,7 @@ } }, { - "__docId__": 4517, + "__docId__": 4535, "kind": "member", "name": "objectsClippable", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90248,7 +90776,7 @@ } }, { - "__docId__": 4518, + "__docId__": 4536, "kind": "member", "name": "objectsPickable", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90265,7 +90793,7 @@ } }, { - "__docId__": 4519, + "__docId__": 4537, "kind": "member", "name": "objectsColorize", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90282,7 +90810,7 @@ } }, { - "__docId__": 4520, + "__docId__": 4538, "kind": "member", "name": "objectsHasColorize", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90299,7 +90827,7 @@ } }, { - "__docId__": 4521, + "__docId__": 4539, "kind": "member", "name": "objectsOpacity", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90316,7 +90844,7 @@ } }, { - "__docId__": 4522, + "__docId__": 4540, "kind": "member", "name": "numObjects", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90333,7 +90861,7 @@ } }, { - "__docId__": 4523, + "__docId__": 4541, "kind": "method", "name": "saveObjects", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90469,7 +90997,7 @@ "return": null }, { - "__docId__": 4525, + "__docId__": 4543, "kind": "member", "name": "_mask", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90487,7 +91015,7 @@ } }, { - "__docId__": 4526, + "__docId__": 4544, "kind": "method", "name": "restoreObjects", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -90513,7 +91041,7 @@ "return": null }, { - "__docId__": 4527, + "__docId__": 4545, "kind": "file", "name": "src/viewer/scene/mementos/index.js", "content": "export * from \"./CameraMemento.js\";\nexport * from \"./ModelMemento.js\";\nexport * from \"./ObjectsMemento.js\";", @@ -90524,7 +91052,7 @@ "lineNumber": 1 }, { - "__docId__": 4528, + "__docId__": 4546, "kind": "file", "name": "src/viewer/scene/mesh/Mesh.js", "content": "/**\n Fired when this Mesh is picked via a call to {@link Scene/pick:method\"}}Scene#pick(){{/crossLink}}.\n\n The event parameters will be the hit result returned by the {@link Scene/pick:method\"}}Scene#pick(){{/crossLink}} method.\n @event picked\n */\nimport {math} from '../math/math.js';\nimport {createRTCViewMat} from '../math/rtcCoords.js';\nimport {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {DrawRenderer} from \"./draw/DrawRenderer.js\";\nimport {EmphasisFillRenderer} from \"./emphasis/EmphasisFillRenderer.js\";\nimport {EmphasisEdgesRenderer} from \"./emphasis/EmphasisEdgesRenderer.js\";\nimport {PickMeshRenderer} from \"./pick/PickMeshRenderer.js\";\nimport {PickTriangleRenderer} from \"./pick/PickTriangleRenderer.js\";\nimport {OcclusionRenderer} from \"./occlusion/OcclusionRenderer.js\";\nimport {ShadowRenderer} from \"./shadow/ShadowRenderer.js\";\n\nimport {geometryCompressionUtils} from '../math/geometryCompressionUtils.js';\nimport {RenderFlags} from \"../webgl/RenderFlags.js\";\n\nconst obb = math.OBB3();\nconst angleAxis = math.vec4();\nconst q1 = math.vec4();\nconst q2 = math.vec4();\nconst xAxis = math.vec3([1, 0, 0]);\nconst yAxis = math.vec3([0, 1, 0]);\nconst zAxis = math.vec3([0, 0, 1]);\n\nconst veca = math.vec3(3);\nconst vecb = math.vec3(3);\n\nconst identityMat = math.identityMat4();\n\n/**\n * @desc An {@link Entity} that is a drawable element, with a {@link Geometry} and a {@link Material}, that can be\n * connected into a scene graph using {@link Node}s.\n *\n * ## Usage\n *\n * The example below is the same as the one given for {@link Node}, since the two classes work together. In this example,\n * we'll create a scene graph in which a root {@link Node} represents a group and the Meshes are leaves.\n *\n * Since {@link Node} implements {@link Entity}, we can designate the root {@link Node} as a model, causing it to be registered by its\n * ID in {@link Scene#models}.\n *\n * Since Mesh also implements {@link Entity}, we can designate the leaf Meshes as objects, causing them to\n * be registered by their IDs in {@link Scene#objects}.\n *\n * We can then find those {@link Entity} types in {@link Scene#models} and {@link Scene#objects}.\n *\n * We can also update properties of our object-Meshes via calls to {@link Scene#setObjectsHighlighted} etc.\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/scenegraph/#sceneGraph)]\n *\n * ````javascript\n * import {Viewer, Mesh, Node, PhongMaterial, buildBoxGeometry, ReadableGeometry} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const boxGeometry = new ReadableGeometry(viewer.scene, buildBoxGeometry({\n * xSize: 1,\n * ySize: 1,\n * zSize: 1\n * }));\n *\n * new Node(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <---------- Node represents a model, so is registered by ID in viewer.scene.models\n * rotation: [0, 50, 0],\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n *\n * children: [\n *\n * new Mesh(viewer.scene, { // Red table leg\n * id: \"redLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1, 0.3, 0.3]\n * }),\n * geometry: boxGeometry\n * }),\n *\n * new Mesh(viewer.scene, { // Green table leg\n * id: \"greenLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 1.0, 0.3]\n * }),\n * geometry: boxGeometry\n * }),\n *\n * new Mesh(viewer.scene, {// Blue table leg\n * id: \"blueLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 0.3, 1.0]\n * }),\n * geometry: boxGeometry\n * }),\n *\n * new Mesh(viewer.scene, { // Yellow table leg\n * id: \"yellowLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 1.0, 0.0]\n * }),\n * geometry: boxGeometry\n * }),\n *\n * new Mesh(viewer.scene, { // Purple table top\n * id: \"tableTop\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 0.3, 1.0]\n * }),\n * geometry: boxGeometry\n * })\n * ]\n * });\n *\n * // Find Nodes and Meshes by their IDs\n *\n * var table = viewer.scene.models[\"table\"]; // Since table Node has isModel == true\n *\n * var redLeg = viewer.scene.objects[\"redLeg\"]; // Since the Meshes have isObject == true\n * var greenLeg = viewer.scene.objects[\"greenLeg\"];\n * var blueLeg = viewer.scene.objects[\"blueLeg\"];\n *\n * // Highlight one of the table leg Meshes\n *\n * viewer.scene.setObjectsHighlighted([\"redLeg\"], true); // Since the Meshes have isObject == true\n *\n * // Periodically update transforms on our Nodes and Meshes\n *\n * viewer.scene.on(\"tick\", function () {\n *\n * // Rotate legs\n * redLeg.rotateY(0.5);\n * greenLeg.rotateY(0.5);\n * blueLeg.rotateY(0.5);\n *\n * // Rotate table\n * table.rotateY(0.5);\n * table.rotateX(0.3);\n * });\n * ````\n *\n * ## Metadata\n *\n * As mentioned, we can also associate {@link MetaModel}s and {@link MetaObject}s with our {@link Node}s and Meshes,\n * within a {@link MetaScene}. See {@link MetaScene} for an example.\n *\n * @implements {Entity}\n * @implements {Drawable}\n */\nclass Mesh extends Component {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String} [cfg.originalSystemId] ID of the corresponding object within the originating system, if any.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this Mesh represents a model, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Boolean} [cfg.isObject] Specify ````true```` if this Mesh represents an object, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and may also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Node} [cfg.parent] The parent Node.\n * @param {Number[]} [cfg.origin] World-space origin for this Mesh. When this is given, then ````matrix````, ````position```` and ````geometry```` are all assumed to be relative to this center.\n * @param {Number[]} [cfg.rtcCenter] Deprecated - renamed to ````origin````.\n * @param {Number[]} [cfg.position=[0,0,0]] 3D position of this Mesh, relative to ````origin````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Number[]} [cfg.offset=[0,0,0]] World-space 3D translation offset. Translates the Mesh in World space, after modelling transforms.\n * @param {Boolean} [cfg.occluder=true] Indicates if the Mesh is able to occlude {@link Marker}s.\n * @param {Boolean} [cfg.visible=true] Indicates if the Mesh is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the Mesh is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the Mesh is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the Mesh is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the Mesh is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the Mesh initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Mesh initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the Mesh is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the Mesh is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the Mesh is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the Mesh's edges are initially emphasized.\n * @param {Boolean} [cfg.background=false] Indicates if the Mesh should act as background, e.g., it can be used for a skybox.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] Mesh's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] Mesh's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {String} [cfg.billboard=\"none\"] Mesh's billboarding behaviour. Options are \"none\" for no billboarding, \"spherical\" to always directly face {@link Camera.eye}, rotating both vertically and horizontally, or \"cylindrical\" to face the {@link Camera#eye} while rotating only about its vertically axis (use that mode for things like trees on a landscape).\n * @param {Geometry} [cfg.geometry] {@link Geometry} to define the shape of this Mesh. Inherits {@link Scene#geometry} by default.\n * @param {Material} [cfg.material] {@link Material} to define the normal rendered appearance for this Mesh. Inherits {@link Scene#material} by default.\n * @param {EmphasisMaterial} [cfg.xrayMaterial] {@link EmphasisMaterial} to define the xrayed appearance for this Mesh. Inherits {@link Scene#xrayMaterial} by default.\n * @param {EmphasisMaterial} [cfg.highlightMaterial] {@link EmphasisMaterial} to define the xrayed appearance for this Mesh. Inherits {@link Scene#highlightMaterial} by default.\n * @param {EmphasisMaterial} [cfg.selectedMaterial] {@link EmphasisMaterial} to define the selected appearance for this Mesh. Inherits {@link Scene#selectedMaterial} by default.\n * @param {EmphasisMaterial} [cfg.edgeMaterial] {@link EdgeMaterial} to define the appearance of enhanced edges for this Mesh. Inherits {@link Scene#edgeMaterial} by default.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n /**\n * ID of the corresponding object within the originating system, if any.\n *\n * @type {String}\n * @abstract\n */\n this.originalSystemId = (cfg.originalSystemId || this.id);\n\n /** @private **/\n this.renderFlags = new RenderFlags();\n\n this._state = new RenderState({ // NOTE: Renderer gets modeling and normal matrices from Mesh#matrix and Mesh.#normalWorldMatrix\n visible: true,\n culled: false,\n pickable: null,\n clippable: null,\n collidable: null,\n occluder: (cfg.occluder !== false),\n castsShadow: null,\n receivesShadow: null,\n xrayed: false,\n highlighted: false,\n selected: false,\n edges: false,\n stationary: !!cfg.stationary,\n background: !!cfg.background,\n billboard: this._checkBillboard(cfg.billboard),\n layer: null,\n colorize: null,\n pickID: this.scene._renderer.getPickID(this),\n drawHash: \"\",\n pickHash: \"\",\n offset: math.vec3(),\n origin: null,\n originHash: null\n });\n\n this._drawRenderer = null;\n this._shadowRenderer = null;\n this._emphasisFillRenderer = null;\n this._emphasisEdgesRenderer = null;\n this._pickMeshRenderer = null;\n this._pickTriangleRenderer = null;\n this._occlusionRenderer = null;\n\n this._geometry = cfg.geometry ? this._checkComponent2([\"ReadableGeometry\", \"VBOGeometry\"], cfg.geometry) : this.scene.geometry;\n this._material = cfg.material ? this._checkComponent2([\"PhongMaterial\", \"MetallicMaterial\", \"SpecularMaterial\", \"LambertMaterial\"], cfg.material) : this.scene.material;\n this._xrayMaterial = cfg.xrayMaterial ? this._checkComponent(\"EmphasisMaterial\", cfg.xrayMaterial) : this.scene.xrayMaterial;\n this._highlightMaterial = cfg.highlightMaterial ? this._checkComponent(\"EmphasisMaterial\", cfg.highlightMaterial) : this.scene.highlightMaterial;\n this._selectedMaterial = cfg.selectedMaterial ? this._checkComponent(\"EmphasisMaterial\", cfg.selectedMaterial) : this.scene.selectedMaterial;\n this._edgeMaterial = cfg.edgeMaterial ? this._checkComponent(\"EdgeMaterial\", cfg.edgeMaterial) : this.scene.edgeMaterial;\n\n this._parentNode = null;\n\n this._aabb = null;\n this._aabbDirty = true;\n\n this._numTriangles = (this._geometry ? this._geometry.numTriangles : 0);\n\n this.scene._aabbDirty = true;\n\n this._scale = math.vec3();\n this._quaternion = math.identityQuaternion();\n this._rotation = math.vec3();\n this._position = math.vec3();\n\n this._worldMatrix = math.identityMat4();\n this._worldNormalMatrix = math.identityMat4();\n\n this._localMatrixDirty = true;\n this._worldMatrixDirty = true;\n this._worldNormalMatrixDirty = true;\n\n const origin = cfg.origin || cfg.rtcCenter;\n if (origin) {\n this._state.origin = math.vec3(origin);\n this._state.originHash = origin.join();\n }\n\n if (cfg.matrix) {\n this.matrix = cfg.matrix;\n } else {\n this.scale = cfg.scale;\n this.position = cfg.position;\n if (cfg.quaternion) {\n } else {\n this.rotation = cfg.rotation;\n }\n }\n\n this._isObject = cfg.isObject;\n if (this._isObject) {\n this.scene._registerObject(this);\n }\n\n this._isModel = cfg.isModel;\n if (this._isModel) {\n this.scene._registerModel(this);\n }\n\n this.visible = cfg.visible;\n this.culled = cfg.culled;\n this.pickable = cfg.pickable;\n this.clippable = cfg.clippable;\n this.collidable = cfg.collidable;\n this.castsShadow = cfg.castsShadow;\n this.receivesShadow = cfg.receivesShadow;\n this.xrayed = cfg.xrayed;\n this.highlighted = cfg.highlighted;\n this.selected = cfg.selected;\n this.edges = cfg.edges;\n this.layer = cfg.layer;\n this.colorize = cfg.colorize;\n this.opacity = cfg.opacity;\n this.offset = cfg.offset;\n\n if (cfg.parentId) {\n const parentNode = this.scene.components[cfg.parentId];\n if (!parentNode) {\n this.error(\"Parent not found: '\" + cfg.parentId + \"'\");\n } else if (!parentNode.isNode) {\n this.error(\"Parent is not a Node: '\" + cfg.parentId + \"'\");\n } else {\n parentNode.addChild(this);\n }\n this._parentNode = parentNode;\n } else if (cfg.parent) {\n if (!cfg.parent.isNode) {\n this.error(\"Parent is not a Node\");\n }\n cfg.parent.addChild(this);\n this._parentNode = cfg.parent;\n }\n\n this.compile();\n }\n\n /**\n @private\n */\n get type() {\n return \"Mesh\";\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Mesh members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is a Mesh.\n * @final\n * @type {Boolean}\n */\n get isMesh() {\n return true;\n }\n\n /**\n * The parent Node.\n *\n * The parent Node may also be set by passing the Mesh to the parent's {@link Node#addChild} method.\n *\n * @type {Node}\n */\n get parent() {\n return this._parentNode;\n }\n\n /**\n * Defines the shape of this Mesh.\n *\n * Set to {@link Scene#geometry} by default.\n *\n * @type {Geometry}\n */\n get geometry() {\n return this._geometry;\n }\n\n /**\n * Defines the appearance of this Mesh when rendering normally, ie. when not xrayed, highlighted or selected.\n *\n * Set to {@link Scene#material} by default.\n *\n * @type {Material}\n */\n get material() {\n return this._material;\n }\n\n /**\n * Gets the Mesh's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get position() {\n return this._position;\n }\n\n /**\n * Sets the Mesh's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set position(value) {\n this._position.set(value || [0, 0, 0]);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get rotation() {\n return this._rotation;\n }\n\n /**\n * Sets the Mesh's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set rotation(value) {\n this._rotation.set(value || [0, 0, 0]);\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n get quaternion() {\n return this._quaternion;\n }\n\n /**\n * Sets the Mesh's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n set quaternion(value) {\n this._quaternion.set(value || [0, 0, 0, 1]);\n math.quaternionToEuler(this._quaternion, \"XYZ\", this._rotation);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the Mesh's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n set scale(value) {\n this._scale.set(value || [1, 1, 1]);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n get matrix() {\n if (this._localMatrixDirty) {\n if (!this.__localMatrix) {\n this.__localMatrix = math.identityMat4();\n }\n math.composeMat4(this._position, this._quaternion, this._scale, this.__localMatrix);\n this._localMatrixDirty = false;\n }\n return this.__localMatrix;\n }\n\n /**\n * Sets the Mesh's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n set matrix(value) {\n if (!this.__localMatrix) {\n this.__localMatrix = math.identityMat4();\n }\n this.__localMatrix.set(value || identityMat);\n math.decomposeMat4(this.__localMatrix, this._position, this._quaternion, this._scale);\n this._localMatrixDirty = false;\n this._setWorldMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n if (this._worldMatrixDirty) {\n this._buildWorldMatrix();\n }\n return this._worldMatrix;\n }\n\n /**\n * Gets the Mesh's World normal matrix.\n *\n * @type {Number[]}\n */\n get worldNormalMatrix() {\n if (this._worldNormalMatrixDirty) {\n this._buildWorldNormalMatrix();\n }\n return this._worldNormalMatrix;\n }\n\n /**\n * Returns true to indicate that Mesh implements {@link Entity}.\n *\n * @returns {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this Mesh represents a model.\n *\n * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and\n * may also have a corresponding {@link MetaModel}.\n *\n * @type {Boolean}\n */\n get isModel() {\n return this._isModel;\n }\n\n /**\n * Returns ````true```` if this Mesh represents an object.\n *\n * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and\n * may also have a corresponding {@link MetaObject}.\n *\n * @type {Boolean}\n */\n get isObject() {\n return this._isObject;\n }\n\n /**\n * Gets the Mesh's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n this._updateAABB();\n }\n return this._aabb;\n }\n\n /**\n * Gets the 3D origin of the Mesh's {@link Geometry}'s vertex positions.\n *\n * When this is given, then {@link Mesh#matrix}, {@link Mesh#position} and {@link Mesh#geometry} are all assumed to be relative to this center position.\n *\n * @type {Float64Array}\n */\n get origin() {\n return this._state.origin;\n }\n\n /**\n * Sets the 3D origin of the Mesh's {@link Geometry}'s vertex positions.\n *\n * When this is given, then {@link Mesh#matrix}, {@link Mesh#position} and {@link Mesh#geometry} are all assumed to be relative to this center position.\n *\n * @type {Float64Array}\n */\n set origin(origin) {\n if (origin) {\n if (!this._state.origin) {\n this._state.origin = math.vec3();\n }\n this._state.origin.set(origin);\n this._state.originHash = origin.join();\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n } else {\n if (this._state.origin) {\n this._state.origin = null;\n this._state.originHash = null;\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n }\n }\n }\n\n /**\n * Gets the World-space origin for this Mesh.\n *\n * Deprecated and replaced by {@link Mesh#origin}.\n *\n * @deprecated\n * @type {Float64Array}\n */\n get rtcCenter() {\n return this.origin;\n }\n\n /**\n * Sets the World-space origin for this Mesh.\n *\n * Deprecated and replaced by {@link Mesh#origin}.\n *\n * @deprecated\n * @type {Float64Array}\n */\n set rtcCenter(rtcCenter) {\n this.origin = rtcCenter;\n }\n\n /**\n * The approximate number of triangles in this Mesh.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /**\n * Gets if this Mesh is visible.\n *\n * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.\n *\n * When {@link Mesh#isObject} and {@link Mesh#visible} are both ````true```` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n get visible() {\n return this._state.visible;\n }\n\n /**\n * Sets if this Mesh is visible.\n *\n * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.\n *\n * When {@link Mesh#isObject} and {@link Mesh#visible} are both ````true```` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n set visible(visible) {\n visible = visible !== false;\n this._state.visible = visible;\n if (this._isObject) {\n this.scene._objectVisibilityUpdated(this, visible);\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is xrayed.\n *\n * XRayed appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#xrayMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#xrayed} are both ````true``` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return this._state.xrayed;\n }\n\n /**\n * Sets if this Mesh is xrayed.\n *\n * XRayed appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#xrayMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#xrayed} are both ````true``` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n xrayed = !!xrayed;\n if (this._state.xrayed === xrayed) {\n return;\n }\n this._state.xrayed = xrayed;\n if (this._isObject) {\n this.scene._objectXRayedUpdated(this, xrayed);\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is highlighted.\n *\n * Highlighted appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#highlightMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#highlighted} are both ````true```` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return this._state.highlighted;\n }\n\n /**\n * Sets if this Mesh is highlighted.\n *\n * Highlighted appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#highlightMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#highlighted} are both ````true```` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n highlighted = !!highlighted;\n if (highlighted === this._state.highlighted) {\n return;\n }\n this._state.highlighted = highlighted;\n if (this._isObject) {\n this.scene._objectHighlightedUpdated(this, highlighted);\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is selected.\n *\n * Selected appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#selectedMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#selected} are both ````true``` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n get selected() {\n return this._state.selected;\n }\n\n /**\n * Sets if this Mesh is selected.\n *\n * Selected appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#selectedMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#selected} are both ````true``` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n selected = !!selected;\n if (selected === this._state.selected) {\n return;\n }\n this._state.selected = selected;\n if (this._isObject) {\n this.scene._objectSelectedUpdated(this, selected);\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is edge-enhanced.\n *\n * Edge appearance is configured by the {@link EdgeMaterial} referenced by {@link Mesh#edgeMaterial}.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._state.edges;\n }\n\n /**\n * Sets if this Mesh is edge-enhanced.\n *\n * Edge appearance is configured by the {@link EdgeMaterial} referenced by {@link Mesh#edgeMaterial}.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n edges = !!edges;\n if (edges === this._state.edges) {\n return;\n }\n this._state.edges = edges;\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is culled.\n *\n * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._state.culled;\n }\n\n /**\n * Sets if this Mesh is culled.\n *\n * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.\n *\n * @type {Boolean}\n */\n set culled(value) {\n this._state.culled = !!value;\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._state.clippable;\n }\n\n /**\n * Sets if this Mesh is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n set clippable(value) {\n value = value !== false;\n if (this._state.clippable === value) {\n return;\n }\n this._state.clippable = value;\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh included in boundary calculations.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._state.collidable;\n }\n\n /**\n * Sets if this Mesh included in boundary calculations.\n *\n * @type {Boolean}\n */\n set collidable(value) {\n value = value !== false;\n if (value === this._state.collidable) {\n return;\n }\n this._state.collidable = value;\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Gets if this Mesh is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._state.pickable;\n }\n\n /**\n * Sets if this Mesh is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(value) {\n value = value !== false;\n if (this._state.pickable === value) {\n return;\n }\n this._state.pickable = value;\n // No need to trigger a render;\n // state is only used when picking\n }\n\n /**\n * Gets if this Mesh casts shadows.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._state.castsShadow;\n }\n\n /**\n * Sets if this Mesh casts shadows.\n *\n * @type {Boolean}\n */\n set castsShadow(value) {\n value = value !== false;\n if (value === this._state.castsShadow) {\n return;\n }\n this._state.castsShadow = value;\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh can have shadows cast upon it.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._state.receivesShadow;\n }\n\n /**\n * Sets if this Mesh can have shadows cast upon it.\n *\n * @type {Boolean}\n */\n set receivesShadow(value) {\n value = value !== false;\n if (value === this._state.receivesShadow) {\n return;\n }\n this._state.receivesShadow = value;\n this._state.hash = value ? \"/mod/rs;\" : \"/mod;\";\n this.fire(\"dirty\", this); // Now need to (re)compile objectRenderers to include/exclude shadow mapping\n }\n\n /**\n * Gets if this Mesh can have Scalable Ambient Obscurance (SAO) applied to it.\n *\n * SAO is configured by {@link SAO}.\n *\n * @type {Boolean}\n * @abstract\n */\n get saoEnabled() {\n return false; // TODO: Support SAO on Meshes\n }\n\n /**\n * Gets the RGB colorize color for this Mesh.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n get colorize() {\n return this._state.colorize;\n }\n\n /**\n * Sets the RGB colorize color for this Mesh.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(value) {\n let colorize = this._state.colorize;\n if (!colorize) {\n colorize = this._state.colorize = new Float32Array(4);\n colorize[3] = 1;\n }\n if (value) {\n colorize[0] = value[0];\n colorize[1] = value[1];\n colorize[2] = value[2];\n } else {\n colorize[0] = 1;\n colorize[1] = 1;\n colorize[2] = 1;\n }\n const colorized = (!!value);\n this.scene._objectColorizeUpdated(this, colorized);\n this.glRedraw();\n }\n\n /**\n * Gets the opacity factor for this Mesh.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._state.colorize[3];\n }\n\n /**\n * Sets the opacity factor for this Mesh.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n let colorize = this._state.colorize;\n if (!colorize) {\n colorize = this._state.colorize = new Float32Array(4);\n colorize[0] = 1;\n colorize[1] = 1;\n colorize[2] = 1;\n }\n const opacityUpdated = (opacity !== null && opacity !== undefined);\n colorize[3] = opacityUpdated ? opacity : 1.0;\n this.scene._objectOpacityUpdated(this, opacityUpdated);\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is transparent.\n * @returns {Boolean}\n */\n get transparent() {\n return this._material.alphaMode === 2 /* blend */ || this._state.colorize[3] < 1\n }\n\n /**\n * Gets the Mesh's rendering order relative to other Meshes.\n *\n * Default value is ````0````.\n *\n * This can be set on multiple transparent Meshes, to make them render in a specific order for correct alpha blending.\n *\n * @type {Number}\n */\n get layer() {\n return this._state.layer;\n }\n\n /**\n * Sets the Mesh's rendering order relative to other Meshes.\n *\n * Default value is ````0````.\n *\n * This can be set on multiple transparent Meshes, to make them render in a specific order for correct alpha blending.\n *\n * @type {Number}\n */\n set layer(value) {\n // TODO: Only accept rendering layer in range [0...MAX_layer]\n value = value || 0;\n value = Math.round(value);\n if (value === this._state.layer) {\n return;\n }\n this._state.layer = value;\n this._renderer.needStateSort();\n }\n\n /**\n * Gets if the Node's position is stationary.\n *\n * When true, will disable the effect of {@link Camera} translations for this Mesh, while still allowing it to rotate. This is useful for skyboxes.\n *\n * @type {Boolean}\n */\n get stationary() {\n return this._state.stationary;\n }\n\n /**\n * Gets the Node's billboarding behaviour.\n *\n * Options are:\n * * ````\"none\"```` - (default) - No billboarding.\n * * ````\"spherical\"```` - Mesh is billboarded to face the viewpoint, rotating both vertically and horizontally.\n * * ````\"cylindrical\"```` - Mesh is billboarded to face the viewpoint, rotating only about its vertically axis. Use this mode for things like trees on a landscape.\n * @type {String}\n */\n get billboard() {\n return this._state.billboard;\n }\n\n /**\n * Gets the Mesh's 3D World-space offset.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get offset() {\n return this._state.offset;\n }\n\n /**\n * Sets the Mesh's 3D World-space offset.\n *\n * The offset dynamically translates the Mesh in World-space.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * Provide a null or undefined value to reset to the default value.\n *\n * @type {Number[]}\n */\n set offset(value) {\n this._state.offset.set(value || [0, 0, 0]);\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Returns true to indicate that Mesh implements {@link Drawable}.\n * @final\n * @type {Boolean}\n */\n get isDrawable() {\n return true;\n }\n\n /**\n * Property with final value ````true```` to indicate that xeokit should render this Mesh in sorted order, relative to other Meshes.\n *\n * The sort order is determined by {@link Mesh#stateSortCompare}.\n *\n * Sorting is essential for rendering performance, so that xeokit is able to avoid applying runs of the same state changes to the GPU, ie. can collapse them.\n *\n * @type {Boolean}\n */\n get isStateSortable() {\n return true;\n }\n\n /**\n * Defines the appearance of this Mesh when xrayed.\n *\n * Mesh is xrayed when {@link Mesh#xrayed} is ````true````.\n *\n * Set to {@link Scene#xrayMaterial} by default.\n *\n * @type {EmphasisMaterial}\n */\n get xrayMaterial() {\n return this._xrayMaterial;\n }\n\n /**\n * Defines the appearance of this Mesh when highlighted.\n *\n * Mesh is xrayed when {@link Mesh#highlighted} is ````true````.\n *\n * Set to {@link Scene#highlightMaterial} by default.\n *\n * @type {EmphasisMaterial}\n */\n get highlightMaterial() {\n return this._highlightMaterial;\n }\n\n /**\n * Defines the appearance of this Mesh when selected.\n *\n * Mesh is xrayed when {@link Mesh#selected} is ````true````.\n *\n * Set to {@link Scene#selectedMaterial} by default.\n *\n * @type {EmphasisMaterial}\n */\n get selectedMaterial() {\n return this._selectedMaterial;\n }\n\n /**\n * Defines the appearance of this Mesh when edges are enhanced.\n *\n * Mesh is xrayed when {@link Mesh#edges} is ````true````.\n *\n * Set to {@link Scene#edgeMaterial} by default.\n *\n * @type {EdgeMaterial}\n */\n get edgeMaterial() {\n return this._edgeMaterial;\n }\n\n _checkBillboard(value) {\n value = value || \"none\";\n if (value !== \"spherical\" && value !== \"cylindrical\" && value !== \"none\") {\n this.error(\"Unsupported value for 'billboard': \" + value + \" - accepted values are \" +\n \"'spherical', 'cylindrical' and 'none' - defaulting to 'none'.\");\n value = \"none\";\n }\n return value;\n }\n\n /**\n * Called by xeokit to compile shaders for this Mesh.\n * @private\n */\n compile() {\n const drawHash = this._makeDrawHash();\n if (this._state.drawHash !== drawHash) {\n this._state.drawHash = drawHash;\n this._putDrawRenderers();\n this._drawRenderer = DrawRenderer.get(this);\n // this._shadowRenderer = ShadowRenderer.get(this);\n this._emphasisFillRenderer = EmphasisFillRenderer.get(this);\n this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this);\n }\n const pickHash = this._makePickHash();\n if (this._state.pickHash !== pickHash) {\n this._state.pickHash = pickHash;\n this._putPickRenderers();\n this._pickMeshRenderer = PickMeshRenderer.get(this);\n }\n if (this._state.occluder) {\n const occlusionHash = this._makeOcclusionHash();\n if (this._state.occlusionHash !== occlusionHash) {\n this._state.occlusionHash = occlusionHash;\n this._putOcclusionRenderer();\n this._occlusionRenderer = OcclusionRenderer.get(this);\n }\n }\n }\n\n _setLocalMatrixDirty() {\n this._localMatrixDirty = true;\n this._setWorldMatrixDirty();\n }\n\n _setWorldMatrixDirty() {\n this._worldMatrixDirty = true;\n this._worldNormalMatrixDirty = true;\n }\n\n _buildWorldMatrix() {\n const localMatrix = this.matrix;\n if (!this._parentNode) {\n for (let i = 0, len = localMatrix.length; i < len; i++) {\n this._worldMatrix[i] = localMatrix[i];\n }\n } else {\n math.mulMat4(this._parentNode.worldMatrix, localMatrix, this._worldMatrix);\n }\n this._worldMatrixDirty = false;\n }\n\n _buildWorldNormalMatrix() {\n if (this._worldMatrixDirty) {\n this._buildWorldMatrix();\n }\n if (!this._worldNormalMatrix) {\n this._worldNormalMatrix = math.mat4();\n }\n // Note: order of inverse and transpose doesn't matter\n math.transposeMat4(this._worldMatrix, this._worldNormalMatrix);\n math.inverseMat4(this._worldNormalMatrix);\n this._worldNormalMatrixDirty = false;\n }\n\n _setAABBDirty() {\n if (this.collidable) {\n for (let node = this; node; node = node._parentNode) {\n node._aabbDirty = true;\n }\n }\n }\n\n _updateAABB() {\n this.scene._aabbDirty = true;\n if (!this._aabb) {\n this._aabb = math.AABB3();\n }\n this._buildAABB(this.worldMatrix, this._aabb); // Mesh or VBOSceneModel\n this._aabbDirty = false;\n }\n\n _webglContextRestored() {\n if (this._drawRenderer) {\n this._drawRenderer.webglContextRestored();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.webglContextRestored();\n }\n if (this._emphasisFillRenderer) {\n this._emphasisFillRenderer.webglContextRestored();\n }\n if (this._emphasisEdgesRenderer) {\n this._emphasisEdgesRenderer.webglContextRestored();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.webglContextRestored();\n }\n if (this._pickTriangleRenderer) {\n this._pickMeshRenderer.webglContextRestored();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.webglContextRestored();\n }\n }\n\n _makeDrawHash() {\n const scene = this.scene;\n const hash = [\n scene.canvas.canvas.id,\n (scene.gammaInput ? \"gi;\" : \";\") + (scene.gammaOutput ? \"go\" : \"\"),\n scene._lightsState.getHash(),\n scene._sectionPlanesState.getHash()\n ];\n const state = this._state;\n if (state.stationary) {\n hash.push(\"/s\");\n }\n if (state.billboard === \"none\") {\n hash.push(\"/n\");\n } else if (state.billboard === \"spherical\") {\n hash.push(\"/s\");\n } else if (state.billboard === \"cylindrical\") {\n hash.push(\"/c\");\n }\n if (state.receivesShadow) {\n hash.push(\"/rs\");\n }\n hash.push(\";\");\n return hash.join(\"\");\n }\n\n _makePickHash() {\n const scene = this.scene;\n const hash = [\n scene.canvas.canvas.id,\n scene._sectionPlanesState.getHash()\n ];\n const state = this._state;\n if (state.stationary) {\n hash.push(\"/s\");\n }\n if (state.billboard === \"none\") {\n hash.push(\"/n\");\n } else if (state.billboard === \"spherical\") {\n hash.push(\"/s\");\n } else if (state.billboard === \"cylindrical\") {\n hash.push(\"/c\");\n }\n hash.push(\";\");\n return hash.join(\"\");\n }\n\n _makeOcclusionHash() {\n const scene = this.scene;\n const hash = [\n scene.canvas.canvas.id,\n scene._sectionPlanesState.getHash()\n ];\n const state = this._state;\n if (state.stationary) {\n hash.push(\"/s\");\n }\n if (state.billboard === \"none\") {\n hash.push(\"/n\");\n } else if (state.billboard === \"spherical\") {\n hash.push(\"/s\");\n } else if (state.billboard === \"cylindrical\") {\n hash.push(\"/c\");\n }\n hash.push(\";\");\n return hash.join(\"\");\n }\n\n _buildAABB(worldMatrix, aabb) {\n\n math.transformOBB3(worldMatrix, this._geometry.obb, obb);\n math.OBB3ToAABB3(obb, aabb);\n\n const offset = this._state.offset;\n\n aabb[0] += offset[0];\n aabb[1] += offset[1];\n aabb[2] += offset[2];\n aabb[3] += offset[0];\n aabb[4] += offset[1];\n aabb[5] += offset[2];\n\n if (this._state.origin) {\n const origin = this._state.origin;\n aabb[0] += origin[0];\n aabb[1] += origin[1];\n aabb[2] += origin[2];\n aabb[3] += origin[0];\n aabb[4] += origin[1];\n aabb[5] += origin[2];\n }\n }\n\n /**\n * Rotates the Mesh about the given local axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotate(axis, angle) {\n angleAxis[0] = axis[0];\n angleAxis[1] = axis[1];\n angleAxis[2] = axis[2];\n angleAxis[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis, q1);\n math.mulQuaternions(this.quaternion, q1, q2);\n this.quaternion = q2;\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n return this;\n }\n\n /**\n * Rotates the Mesh about the given World-space axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotateOnWorldAxis(axis, angle) {\n angleAxis[0] = axis[0];\n angleAxis[1] = axis[1];\n angleAxis[2] = axis[2];\n angleAxis[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis, q1);\n math.mulQuaternions(q1, this.quaternion, q1);\n //this.quaternion.premultiply(q1);\n return this;\n }\n\n /**\n * Rotates the Mesh about the local X-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateX(angle) {\n return this.rotate(xAxis, angle);\n }\n\n /**\n * Rotates the Mesh about the local Y-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateY(angle) {\n return this.rotate(yAxis, angle);\n }\n\n /**\n * Rotates the Mesh about the local Z-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateZ(angle) {\n return this.rotate(zAxis, angle);\n }\n\n /**\n * Translates the Mesh along local space vector by the given increment.\n *\n * @param {Number[]} axis Normalized local space 3D vector along which to translate.\n * @param {Number} distance Distance to translate along the vector.\n */\n translate(axis, distance) {\n math.vec3ApplyQuaternion(this.quaternion, axis, veca);\n math.mulVec3Scalar(veca, distance, vecb);\n math.addVec3(this.position, vecb, this.position);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n return this;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Drawable members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Translates the Mesh along the local X-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the X-axis.\n */\n translateX(distance) {\n return this.translate(xAxis, distance);\n }\n\n /**\n * Translates the Mesh along the local Y-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Y-axis.\n */\n translateY(distance) {\n return this.translate(yAxis, distance);\n }\n\n /**\n * Translates the Mesh along the local Z-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Z-axis.\n */\n translateZ(distance) {\n return this.translate(zAxis, distance);\n }\n\n _putDrawRenderers() {\n if (this._drawRenderer) {\n this._drawRenderer.put();\n this._drawRenderer = null;\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.put();\n this._shadowRenderer = null;\n }\n if (this._emphasisFillRenderer) {\n this._emphasisFillRenderer.put();\n this._emphasisFillRenderer = null;\n }\n if (this._emphasisEdgesRenderer) {\n this._emphasisEdgesRenderer.put();\n this._emphasisEdgesRenderer = null;\n }\n }\n\n _putPickRenderers() {\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.put();\n this._pickMeshRenderer = null;\n }\n if (this._pickTriangleRenderer) {\n this._pickTriangleRenderer.put();\n this._pickTriangleRenderer = null;\n }\n }\n\n _putOcclusionRenderer() {\n if (this._occlusionRenderer) {\n this._occlusionRenderer.put();\n this._occlusionRenderer = null;\n }\n }\n\n /**\n * Comparison function used by the renderer to determine the order in which xeokit should render the Mesh, relative to to other Meshes.\n *\n * xeokit requires this method because Mesh implements {@link Drawable}.\n *\n * Sorting is essential for rendering performance, so that xeokit is able to avoid needlessly applying runs of the same rendering state changes to the GPU, ie. can collapse them.\n *\n * @param {Mesh} mesh1\n * @param {Mesh} mesh2\n * @returns {number}\n */\n stateSortCompare(mesh1, mesh2) {\n return (mesh1._state.layer - mesh2._state.layer)\n || (mesh1._drawRenderer.id - mesh2._drawRenderer.id) // Program state\n || (mesh1._material._state.id - mesh2._material._state.id) // Material state\n || (mesh1._geometry._state.id - mesh2._geometry._state.id); // Geometry state\n }\n\n /** @private */\n rebuildRenderFlags() {\n this.renderFlags.reset();\n if (!this._getActiveSectionPlanes()) {\n this.renderFlags.culled = true;\n return;\n }\n this.renderFlags.numLayers = 1;\n this.renderFlags.numVisibleLayers = 1;\n this.renderFlags.visibleLayers[0] = 0;\n this._updateRenderFlags();\n }\n\n /**\n * @private\n */\n _updateRenderFlags() {\n\n const renderFlags = this.renderFlags;\n const state = this._state;\n\n if (state.xrayed) {\n const xrayMaterial = this._xrayMaterial._state;\n if (xrayMaterial.fill) {\n if (xrayMaterial.fillAlpha < 1.0) {\n renderFlags.xrayedSilhouetteTransparent = true;\n } else {\n renderFlags.xrayedSilhouetteOpaque = true;\n }\n }\n if (xrayMaterial.edges) {\n if (xrayMaterial.edgeAlpha < 1.0) {\n renderFlags.xrayedEdgesTransparent = true;\n } else {\n renderFlags.xrayedEdgesOpaque = true;\n }\n }\n } else {\n const normalMaterial = this._material._state;\n if (normalMaterial.alpha < 1.0 || state.colorize[3] < 1.0) {\n renderFlags.colorTransparent = true;\n } else {\n renderFlags.colorOpaque = true;\n }\n if (state.edges) {\n const edgeMaterial = this._edgeMaterial._state;\n if (edgeMaterial.alpha < 1.0) {\n renderFlags.edgesTransparent = true;\n } else {\n renderFlags.edgesOpaque = true;\n }\n }\n if (state.selected) {\n const selectedMaterial = this._selectedMaterial._state;\n if (selectedMaterial.fill) {\n if (selectedMaterial.fillAlpha < 1.0) {\n renderFlags.selectedSilhouetteTransparent = true;\n } else {\n renderFlags.selectedSilhouetteOpaque = true;\n }\n }\n if (selectedMaterial.edges) {\n if (selectedMaterial.edgeAlpha < 1.0) {\n renderFlags.selectedEdgesTransparent = true;\n } else {\n renderFlags.selectedEdgesOpaque = true;\n }\n }\n } else if (state.highlighted) {\n const highlightMaterial = this._highlightMaterial._state;\n if (highlightMaterial.fill) {\n if (highlightMaterial.fillAlpha < 1.0) {\n renderFlags.highlightedSilhouetteTransparent = true;\n } else {\n renderFlags.highlightedSilhouetteOpaque = true;\n }\n }\n if (highlightMaterial.edges) {\n if (highlightMaterial.edgeAlpha < 1.0) {\n renderFlags.highlightedEdgesTransparent = true;\n } else {\n renderFlags.highlightedEdgesOpaque = true;\n }\n }\n }\n }\n }\n\n _getActiveSectionPlanes() {\n\n if (this._state.clippable) {\n\n const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;\n const numSectionPlanes = sectionPlanes.length;\n\n if (numSectionPlanes > 0) {\n for (let i = 0; i < numSectionPlanes; i++) {\n\n const sectionPlane = sectionPlanes[i];\n const renderFlags = this.renderFlags;\n\n if (!sectionPlane.active) {\n renderFlags.sectionPlanesActivePerLayer[i] = false;\n\n } else {\n\n if (this._state.origin) {\n\n const intersect = math.planeAABB3Intersect(sectionPlane.dir, sectionPlane.dist, this.aabb);\n const outside = (intersect === -1);\n\n if (outside) {\n return false;\n }\n\n const intersecting = (intersect === 0);\n renderFlags.sectionPlanesActivePerLayer[i] = intersecting;\n\n } else {\n renderFlags.sectionPlanesActivePerLayer[i] = true;\n }\n }\n }\n }\n }\n\n return true;\n }\n\n // ---------------------- NORMAL RENDERING -----------------------------------\n\n /** @private */\n drawColorOpaque(frameCtx) {\n if (this._drawRenderer || (this._drawRenderer = DrawRenderer.get(this))) {\n this._drawRenderer.drawMesh(frameCtx, this);\n }\n }\n\n /** @private */\n drawColorTransparent(frameCtx) {\n if (this._drawRenderer || (this._drawRenderer = DrawRenderer.get(this))) {\n this._drawRenderer.drawMesh(frameCtx, this);\n }\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n // TODO\n\n // ---------------------- EMPHASIS RENDERING -----------------------------------\n\n /** @private */\n drawSilhouetteXRayed(frameCtx) {\n if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {\n this._emphasisFillRenderer.drawMesh(frameCtx, this, 0); // 0 == xray\n }\n }\n\n /** @private */\n drawSilhouetteHighlighted(frameCtx) {\n if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {\n this._emphasisFillRenderer.drawMesh(frameCtx, this, 1); // 1 == highlight\n }\n }\n\n /** @private */\n drawSilhouetteSelected(frameCtx) {\n if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {\n this._emphasisFillRenderer.drawMesh(frameCtx, this, 2); // 2 == selected\n }\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n /** @private */\n drawEdgesColorOpaque(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 3); // 3 == edges\n }\n }\n\n /** @private */\n drawEdgesColorTransparent(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 3); // 3 == edges\n }\n }\n\n /** @private */\n drawEdgesXRayed(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 0); // 0 == xray\n }\n }\n\n /** @private */\n drawEdgesHighlighted(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 1); // 1 == highlight\n }\n }\n\n /** @private */\n drawEdgesSelected(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 2); // 2 == selected\n }\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n /** @private */\n drawOcclusion(frameCtx) {\n if (this._state.occluder && this._occlusionRenderer || (this._occlusionRenderer = OcclusionRenderer.get(this))) {\n this._occlusionRenderer.drawMesh(frameCtx, this);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n /** @private */\n drawShadow(frameCtx) {\n if (this._shadowRenderer || (this._shadowRenderer = ShadowRenderer.get(this))) {\n this._shadowRenderer.drawMesh(frameCtx, this);\n }\n }\n\n // ---------------------- PICKING RENDERING ----------------------------------\n\n /** @private */\n drawPickMesh(frameCtx) {\n if (this._pickMeshRenderer || (this._pickMeshRenderer = PickMeshRenderer.get(this))) {\n this._pickMeshRenderer.drawMesh(frameCtx, this);\n }\n }\n\n /** @private\n */\n canPickTriangle() {\n return this._geometry.isReadableGeometry; // VBOGeometry does not support surface picking because it has no geometry data in browser memory\n }\n\n /** @private */\n drawPickTriangles(frameCtx) {\n if (this._pickTriangleRenderer || (this._pickTriangleRenderer = PickTriangleRenderer.get(this))) {\n this._pickTriangleRenderer.drawMesh(frameCtx, this);\n }\n }\n\n /** @private */\n pickTriangleSurface(pickViewMatrix, pickProjMatrix, pickResult) {\n pickTriangleSurface(this, pickViewMatrix, pickProjMatrix, pickResult);\n }\n\n /** @private */\n drawPickVertices(frameCtx) {\n\n }\n\n /**\n * @private\n * @returns {PerformanceNode}\n */\n delegatePickedEntity() {\n return this;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Component members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Destroys this Mesh.\n */\n destroy() {\n super.destroy(); // xeokit.Object\n this._putDrawRenderers();\n this._putPickRenderers();\n this._putOcclusionRenderer();\n this.scene._renderer.putPickID(this._state.pickID); // TODO: somehow puch this down into xeokit framework?\n if (this._isObject) {\n this.scene._deregisterObject(this);\n if (this._visible) {\n this.scene._objectVisibilityUpdated(this, false, false);\n }\n if (this._xrayed) {\n this.scene._objectXRayedUpdated(this, false, false);\n }\n if (this._selected) {\n this.scene._objectSelectedUpdated(this, false, false);\n }\n if (this._highlighted) {\n this.scene._objectHighlightedUpdated(this, false, false);\n }\n this.scene._objectColorizeUpdated(this, false);\n this.scene._objectOpacityUpdated(this, false);\n if (this.offset.some((v) => v !== 0))\n this.scene._objectOffsetUpdated(this, false);\n }\n if (this._isModel) {\n this.scene._deregisterModel(this);\n }\n this.glRedraw();\n }\n\n}\n\n\nconst pickTriangleSurface = (function () {\n\n // Cached vars to avoid garbage collection\n\n const localRayOrigin = math.vec3();\n const localRayDir = math.vec3();\n const positionA = math.vec3();\n const positionB = math.vec3();\n const positionC = math.vec3();\n const triangleVertices = math.vec3();\n const position = math.vec4();\n const worldPos = math.vec3();\n const viewPos = math.vec3();\n const bary = math.vec3();\n const normalA = math.vec3();\n const normalB = math.vec3();\n const normalC = math.vec3();\n const uva = math.vec3();\n const uvb = math.vec3();\n const uvc = math.vec3();\n const tempVec4a = math.vec4();\n const tempVec4b = math.vec4();\n const tempVec4c = math.vec4();\n const tempVec3 = math.vec3();\n const tempVec3b = math.vec3();\n const tempVec3c = math.vec3();\n const tempVec3d = math.vec3();\n const tempVec3e = math.vec3();\n const tempVec3f = math.vec3();\n const tempVec3g = math.vec3();\n const tempVec3h = math.vec3();\n const tempVec3i = math.vec3();\n const tempVec3j = math.vec3();\n const tempVec3k = math.vec3();\n\n return function (mesh, pickViewMatrix, pickProjMatrix, pickResult) {\n\n var primIndex = pickResult.primIndex;\n\n if (primIndex !== undefined && primIndex !== null && primIndex > -1) {\n\n const geometry = mesh.geometry._state;\n const scene = mesh.scene;\n const camera = scene.camera;\n const canvas = scene.canvas;\n\n if (geometry.primitiveName === \"triangles\") {\n\n // Triangle picked; this only happens when the\n // Mesh has a Geometry that has primitives of type \"triangle\"\n\n pickResult.primitive = \"triangle\";\n\n // Get the World-space positions of the triangle's vertices\n\n const i = primIndex; // Indicates the first triangle index in the indices array\n\n const indices = geometry.indices; // Indices into geometry arrays, not into shared VertexBufs\n const positions = geometry.positions;\n\n let ia3;\n let ib3;\n let ic3;\n\n if (indices) {\n\n var ia = indices[i + 0];\n var ib = indices[i + 1];\n var ic = indices[i + 2];\n\n triangleVertices[0] = ia;\n triangleVertices[1] = ib;\n triangleVertices[2] = ic;\n\n pickResult.indices = triangleVertices;\n\n ia3 = ia * 3;\n ib3 = ib * 3;\n ic3 = ic * 3;\n\n } else {\n\n ia3 = i * 3;\n ib3 = ia3 + 3;\n ic3 = ib3 + 3;\n }\n\n positionA[0] = positions[ia3 + 0];\n positionA[1] = positions[ia3 + 1];\n positionA[2] = positions[ia3 + 2];\n\n positionB[0] = positions[ib3 + 0];\n positionB[1] = positions[ib3 + 1];\n positionB[2] = positions[ib3 + 2];\n\n positionC[0] = positions[ic3 + 0];\n positionC[1] = positions[ic3 + 1];\n positionC[2] = positions[ic3 + 2];\n\n if (geometry.compressGeometry) {\n\n // Decompress vertex positions\n\n const positionsDecodeMatrix = geometry.positionsDecodeMatrix;\n if (positionsDecodeMatrix) {\n geometryCompressionUtils.decompressPosition(positionA, positionsDecodeMatrix, positionA);\n geometryCompressionUtils.decompressPosition(positionB, positionsDecodeMatrix, positionB);\n geometryCompressionUtils.decompressPosition(positionC, positionsDecodeMatrix, positionC);\n }\n }\n\n // Attempt to ray-pick the triangle in local space\n\n if (pickResult.canvasPos) {\n math.canvasPosToLocalRay(canvas.canvas, mesh.origin ? createRTCViewMat(pickViewMatrix, mesh.origin) : pickViewMatrix, pickProjMatrix, mesh.worldMatrix, pickResult.canvasPos, localRayOrigin, localRayDir);\n\n } else if (pickResult.origin && pickResult.direction) {\n math.worldRayToLocalRay(mesh.worldMatrix, pickResult.origin, pickResult.direction, localRayOrigin, localRayDir);\n }\n\n math.normalizeVec3(localRayDir);\n math.rayPlaneIntersect(localRayOrigin, localRayDir, positionA, positionB, positionC, position);\n\n // Get Local-space cartesian coordinates of the ray-triangle intersection\n\n pickResult.localPos = position;\n pickResult.position = position;\n\n // Get interpolated World-space coordinates\n\n // Need to transform homogeneous coords\n\n tempVec4a[0] = position[0];\n tempVec4a[1] = position[1];\n tempVec4a[2] = position[2];\n tempVec4a[3] = 1;\n\n // Get World-space cartesian coordinates of the ray-triangle intersection\n\n math.transformVec4(mesh.worldMatrix, tempVec4a, tempVec4b);\n\n worldPos[0] = tempVec4b[0];\n worldPos[1] = tempVec4b[1];\n worldPos[2] = tempVec4b[2];\n\n if (pickResult.canvasPos && mesh.origin) {\n worldPos[0] += mesh.origin[0];\n worldPos[1] += mesh.origin[1];\n worldPos[2] += mesh.origin[2];\n }\n\n pickResult.worldPos = worldPos;\n\n // Get View-space cartesian coordinates of the ray-triangle intersection\n\n math.transformVec4(camera.matrix, tempVec4b, tempVec4c);\n\n viewPos[0] = tempVec4c[0];\n viewPos[1] = tempVec4c[1];\n viewPos[2] = tempVec4c[2];\n\n pickResult.viewPos = viewPos;\n\n // Get barycentric coordinates of the ray-triangle intersection\n\n math.cartesianToBarycentric(position, positionA, positionB, positionC, bary);\n\n pickResult.bary = bary;\n\n // Get interpolated normal vector\n\n const normals = geometry.normals;\n\n if (normals) {\n\n if (geometry.compressGeometry) {\n\n // Decompress vertex normals\n\n const ia2 = ia * 3;\n const ib2 = ib * 3;\n const ic2 = ic * 3;\n\n geometryCompressionUtils.decompressNormal(normals.subarray(ia2, ia2 + 2), normalA);\n geometryCompressionUtils.decompressNormal(normals.subarray(ib2, ib2 + 2), normalB);\n geometryCompressionUtils.decompressNormal(normals.subarray(ic2, ic2 + 2), normalC);\n\n } else {\n\n normalA[0] = normals[ia3];\n normalA[1] = normals[ia3 + 1];\n normalA[2] = normals[ia3 + 2];\n\n normalB[0] = normals[ib3];\n normalB[1] = normals[ib3 + 1];\n normalB[2] = normals[ib3 + 2];\n\n normalC[0] = normals[ic3];\n normalC[1] = normals[ic3 + 1];\n normalC[2] = normals[ic3 + 2];\n }\n\n const normal = math.addVec3(math.addVec3(\n math.mulVec3Scalar(normalA, bary[0], tempVec3),\n math.mulVec3Scalar(normalB, bary[1], tempVec3b), tempVec3c),\n math.mulVec3Scalar(normalC, bary[2], tempVec3d), tempVec3e);\n\n pickResult.worldNormal = math.normalizeVec3(math.transformVec3(mesh.worldNormalMatrix, normal, tempVec3f));\n }\n\n // Get interpolated UV coordinates\n\n const uvs = geometry.uv;\n\n if (uvs) {\n\n uva[0] = uvs[(ia * 2)];\n uva[1] = uvs[(ia * 2) + 1];\n\n uvb[0] = uvs[(ib * 2)];\n uvb[1] = uvs[(ib * 2) + 1];\n\n uvc[0] = uvs[(ic * 2)];\n uvc[1] = uvs[(ic * 2) + 1];\n\n if (geometry.compressGeometry) {\n\n // Decompress vertex UVs\n\n const uvDecodeMatrix = geometry.uvDecodeMatrix;\n if (uvDecodeMatrix) {\n geometryCompressionUtils.decompressUV(uva, uvDecodeMatrix, uva);\n geometryCompressionUtils.decompressUV(uvb, uvDecodeMatrix, uvb);\n geometryCompressionUtils.decompressUV(uvc, uvDecodeMatrix, uvc);\n }\n }\n\n pickResult.uv = math.addVec3(\n math.addVec3(\n math.mulVec2Scalar(uva, bary[0], tempVec3g),\n math.mulVec2Scalar(uvb, bary[1], tempVec3h), tempVec3i),\n math.mulVec2Scalar(uvc, bary[2], tempVec3j), tempVec3k);\n }\n }\n }\n }\n})();\n\nexport {Mesh};\n", @@ -90535,7 +91063,7 @@ "lineNumber": 1 }, { - "__docId__": 4529, + "__docId__": 4547, "kind": "variable", "name": "obb", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90556,7 +91084,7 @@ "ignore": true }, { - "__docId__": 4530, + "__docId__": 4548, "kind": "variable", "name": "angleAxis", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90577,7 +91105,7 @@ "ignore": true }, { - "__docId__": 4531, + "__docId__": 4549, "kind": "variable", "name": "q1", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90598,7 +91126,7 @@ "ignore": true }, { - "__docId__": 4532, + "__docId__": 4550, "kind": "variable", "name": "q2", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90619,7 +91147,7 @@ "ignore": true }, { - "__docId__": 4533, + "__docId__": 4551, "kind": "variable", "name": "xAxis", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90640,7 +91168,7 @@ "ignore": true }, { - "__docId__": 4534, + "__docId__": 4552, "kind": "variable", "name": "yAxis", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90661,7 +91189,7 @@ "ignore": true }, { - "__docId__": 4535, + "__docId__": 4553, "kind": "variable", "name": "zAxis", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90682,7 +91210,7 @@ "ignore": true }, { - "__docId__": 4536, + "__docId__": 4554, "kind": "variable", "name": "veca", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90703,7 +91231,7 @@ "ignore": true }, { - "__docId__": 4537, + "__docId__": 4555, "kind": "variable", "name": "vecb", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90724,7 +91252,7 @@ "ignore": true }, { - "__docId__": 4538, + "__docId__": 4556, "kind": "variable", "name": "identityMat", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90745,7 +91273,7 @@ "ignore": true }, { - "__docId__": 4539, + "__docId__": 4557, "kind": "variable", "name": "pickTriangleSurface", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90766,7 +91294,7 @@ "ignore": true }, { - "__docId__": 4540, + "__docId__": 4558, "kind": "class", "name": "Mesh", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -90788,7 +91316,7 @@ ] }, { - "__docId__": 4541, + "__docId__": 4559, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91248,7 +91776,7 @@ ] }, { - "__docId__": 4542, + "__docId__": 4560, "kind": "member", "name": "originalSystemId", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91268,7 +91796,7 @@ "abstract": true }, { - "__docId__": 4543, + "__docId__": 4561, "kind": "member", "name": "renderFlags", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91285,7 +91813,7 @@ } }, { - "__docId__": 4544, + "__docId__": 4562, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91303,7 +91831,7 @@ } }, { - "__docId__": 4545, + "__docId__": 4563, "kind": "member", "name": "_drawRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91321,7 +91849,7 @@ } }, { - "__docId__": 4546, + "__docId__": 4564, "kind": "member", "name": "_shadowRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91339,7 +91867,7 @@ } }, { - "__docId__": 4547, + "__docId__": 4565, "kind": "member", "name": "_emphasisFillRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91357,7 +91885,7 @@ } }, { - "__docId__": 4548, + "__docId__": 4566, "kind": "member", "name": "_emphasisEdgesRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91375,7 +91903,7 @@ } }, { - "__docId__": 4549, + "__docId__": 4567, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91393,7 +91921,7 @@ } }, { - "__docId__": 4550, + "__docId__": 4568, "kind": "member", "name": "_pickTriangleRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91411,7 +91939,7 @@ } }, { - "__docId__": 4551, + "__docId__": 4569, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91429,7 +91957,7 @@ } }, { - "__docId__": 4552, + "__docId__": 4570, "kind": "member", "name": "_geometry", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91447,7 +91975,7 @@ } }, { - "__docId__": 4553, + "__docId__": 4571, "kind": "member", "name": "_material", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91465,7 +91993,7 @@ } }, { - "__docId__": 4554, + "__docId__": 4572, "kind": "member", "name": "_xrayMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91483,7 +92011,7 @@ } }, { - "__docId__": 4555, + "__docId__": 4573, "kind": "member", "name": "_highlightMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91501,7 +92029,7 @@ } }, { - "__docId__": 4556, + "__docId__": 4574, "kind": "member", "name": "_selectedMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91519,7 +92047,7 @@ } }, { - "__docId__": 4557, + "__docId__": 4575, "kind": "member", "name": "_edgeMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91537,7 +92065,7 @@ } }, { - "__docId__": 4558, + "__docId__": 4576, "kind": "member", "name": "_parentNode", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91555,7 +92083,7 @@ } }, { - "__docId__": 4559, + "__docId__": 4577, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91573,7 +92101,7 @@ } }, { - "__docId__": 4560, + "__docId__": 4578, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91591,7 +92119,7 @@ } }, { - "__docId__": 4561, + "__docId__": 4579, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91609,7 +92137,7 @@ } }, { - "__docId__": 4562, + "__docId__": 4580, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91627,7 +92155,7 @@ } }, { - "__docId__": 4563, + "__docId__": 4581, "kind": "member", "name": "_quaternion", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91645,7 +92173,7 @@ } }, { - "__docId__": 4564, + "__docId__": 4582, "kind": "member", "name": "_rotation", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91663,7 +92191,7 @@ } }, { - "__docId__": 4565, + "__docId__": 4583, "kind": "member", "name": "_position", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91681,7 +92209,7 @@ } }, { - "__docId__": 4566, + "__docId__": 4584, "kind": "member", "name": "_worldMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91699,7 +92227,7 @@ } }, { - "__docId__": 4567, + "__docId__": 4585, "kind": "member", "name": "_worldNormalMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91717,7 +92245,7 @@ } }, { - "__docId__": 4568, + "__docId__": 4586, "kind": "member", "name": "_localMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91735,7 +92263,7 @@ } }, { - "__docId__": 4569, + "__docId__": 4587, "kind": "member", "name": "_worldMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91753,7 +92281,7 @@ } }, { - "__docId__": 4570, + "__docId__": 4588, "kind": "member", "name": "_worldNormalMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91771,7 +92299,7 @@ } }, { - "__docId__": 4575, + "__docId__": 4593, "kind": "member", "name": "_isObject", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91789,7 +92317,7 @@ } }, { - "__docId__": 4576, + "__docId__": 4594, "kind": "member", "name": "_isModel", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91807,7 +92335,7 @@ } }, { - "__docId__": 4594, + "__docId__": 4612, "kind": "get", "name": "type", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91826,7 +92354,7 @@ } }, { - "__docId__": 4595, + "__docId__": 4613, "kind": "get", "name": "isMesh", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91853,7 +92381,7 @@ } }, { - "__docId__": 4596, + "__docId__": 4614, "kind": "get", "name": "parent", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91874,7 +92402,7 @@ } }, { - "__docId__": 4597, + "__docId__": 4615, "kind": "get", "name": "geometry", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91895,7 +92423,7 @@ } }, { - "__docId__": 4598, + "__docId__": 4616, "kind": "get", "name": "material", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91916,7 +92444,7 @@ } }, { - "__docId__": 4599, + "__docId__": 4617, "kind": "get", "name": "position", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91937,7 +92465,7 @@ } }, { - "__docId__": 4600, + "__docId__": 4618, "kind": "set", "name": "position", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91958,7 +92486,7 @@ } }, { - "__docId__": 4601, + "__docId__": 4619, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -91979,7 +92507,7 @@ } }, { - "__docId__": 4602, + "__docId__": 4620, "kind": "set", "name": "rotation", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92000,7 +92528,7 @@ } }, { - "__docId__": 4603, + "__docId__": 4621, "kind": "get", "name": "quaternion", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92021,7 +92549,7 @@ } }, { - "__docId__": 4604, + "__docId__": 4622, "kind": "set", "name": "quaternion", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92042,7 +92570,7 @@ } }, { - "__docId__": 4605, + "__docId__": 4623, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92063,7 +92591,7 @@ } }, { - "__docId__": 4606, + "__docId__": 4624, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92084,7 +92612,7 @@ } }, { - "__docId__": 4607, + "__docId__": 4625, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92105,7 +92633,7 @@ } }, { - "__docId__": 4608, + "__docId__": 4626, "kind": "member", "name": "__localMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92123,7 +92651,7 @@ } }, { - "__docId__": 4610, + "__docId__": 4628, "kind": "set", "name": "matrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92144,7 +92672,7 @@ } }, { - "__docId__": 4613, + "__docId__": 4631, "kind": "get", "name": "worldMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92177,7 +92705,7 @@ } }, { - "__docId__": 4614, + "__docId__": 4632, "kind": "get", "name": "worldNormalMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92198,7 +92726,7 @@ } }, { - "__docId__": 4615, + "__docId__": 4633, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92230,7 +92758,7 @@ } }, { - "__docId__": 4616, + "__docId__": 4634, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92251,7 +92779,7 @@ } }, { - "__docId__": 4617, + "__docId__": 4635, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92272,7 +92800,7 @@ } }, { - "__docId__": 4618, + "__docId__": 4636, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92293,7 +92821,7 @@ } }, { - "__docId__": 4619, + "__docId__": 4637, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92314,7 +92842,7 @@ } }, { - "__docId__": 4620, + "__docId__": 4638, "kind": "set", "name": "origin", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92335,7 +92863,7 @@ } }, { - "__docId__": 4621, + "__docId__": 4639, "kind": "get", "name": "rtcCenter", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92357,7 +92885,7 @@ } }, { - "__docId__": 4622, + "__docId__": 4640, "kind": "set", "name": "rtcCenter", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92379,7 +92907,7 @@ } }, { - "__docId__": 4624, + "__docId__": 4642, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92400,7 +92928,7 @@ } }, { - "__docId__": 4625, + "__docId__": 4643, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92421,7 +92949,7 @@ } }, { - "__docId__": 4626, + "__docId__": 4644, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92442,7 +92970,7 @@ } }, { - "__docId__": 4627, + "__docId__": 4645, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92463,7 +92991,7 @@ } }, { - "__docId__": 4628, + "__docId__": 4646, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92484,7 +93012,7 @@ } }, { - "__docId__": 4629, + "__docId__": 4647, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92505,7 +93033,7 @@ } }, { - "__docId__": 4630, + "__docId__": 4648, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92526,7 +93054,7 @@ } }, { - "__docId__": 4631, + "__docId__": 4649, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92547,7 +93075,7 @@ } }, { - "__docId__": 4632, + "__docId__": 4650, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92568,7 +93096,7 @@ } }, { - "__docId__": 4633, + "__docId__": 4651, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92589,7 +93117,7 @@ } }, { - "__docId__": 4634, + "__docId__": 4652, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92610,7 +93138,7 @@ } }, { - "__docId__": 4635, + "__docId__": 4653, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92631,7 +93159,7 @@ } }, { - "__docId__": 4636, + "__docId__": 4654, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92652,7 +93180,7 @@ } }, { - "__docId__": 4637, + "__docId__": 4655, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92673,7 +93201,7 @@ } }, { - "__docId__": 4638, + "__docId__": 4656, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92694,7 +93222,7 @@ } }, { - "__docId__": 4639, + "__docId__": 4657, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92715,7 +93243,7 @@ } }, { - "__docId__": 4640, + "__docId__": 4658, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92736,7 +93264,7 @@ } }, { - "__docId__": 4641, + "__docId__": 4659, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92757,7 +93285,7 @@ } }, { - "__docId__": 4642, + "__docId__": 4660, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92778,7 +93306,7 @@ } }, { - "__docId__": 4643, + "__docId__": 4661, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92799,7 +93327,7 @@ } }, { - "__docId__": 4644, + "__docId__": 4662, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92820,7 +93348,7 @@ } }, { - "__docId__": 4645, + "__docId__": 4663, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92841,7 +93369,7 @@ } }, { - "__docId__": 4646, + "__docId__": 4664, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92862,7 +93390,7 @@ } }, { - "__docId__": 4647, + "__docId__": 4665, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92884,7 +93412,7 @@ "abstract": true }, { - "__docId__": 4648, + "__docId__": 4666, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92905,7 +93433,7 @@ } }, { - "__docId__": 4649, + "__docId__": 4667, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92926,7 +93454,7 @@ } }, { - "__docId__": 4650, + "__docId__": 4668, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92947,7 +93475,7 @@ } }, { - "__docId__": 4651, + "__docId__": 4669, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -92968,7 +93496,7 @@ } }, { - "__docId__": 4652, + "__docId__": 4670, "kind": "get", "name": "transparent", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93000,7 +93528,7 @@ } }, { - "__docId__": 4653, + "__docId__": 4671, "kind": "get", "name": "layer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93021,7 +93549,7 @@ } }, { - "__docId__": 4654, + "__docId__": 4672, "kind": "set", "name": "layer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93042,7 +93570,7 @@ } }, { - "__docId__": 4655, + "__docId__": 4673, "kind": "get", "name": "stationary", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93063,7 +93591,7 @@ } }, { - "__docId__": 4656, + "__docId__": 4674, "kind": "get", "name": "billboard", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93084,7 +93612,7 @@ } }, { - "__docId__": 4657, + "__docId__": 4675, "kind": "get", "name": "offset", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93105,7 +93633,7 @@ } }, { - "__docId__": 4658, + "__docId__": 4676, "kind": "set", "name": "offset", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93126,7 +93654,7 @@ } }, { - "__docId__": 4659, + "__docId__": 4677, "kind": "get", "name": "isDrawable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93153,7 +93681,7 @@ } }, { - "__docId__": 4660, + "__docId__": 4678, "kind": "get", "name": "isStateSortable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93174,7 +93702,7 @@ } }, { - "__docId__": 4661, + "__docId__": 4679, "kind": "get", "name": "xrayMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93195,7 +93723,7 @@ } }, { - "__docId__": 4662, + "__docId__": 4680, "kind": "get", "name": "highlightMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93216,7 +93744,7 @@ } }, { - "__docId__": 4663, + "__docId__": 4681, "kind": "get", "name": "selectedMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93237,7 +93765,7 @@ } }, { - "__docId__": 4664, + "__docId__": 4682, "kind": "get", "name": "edgeMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93258,7 +93786,7 @@ } }, { - "__docId__": 4665, + "__docId__": 4683, "kind": "method", "name": "_checkBillboard", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93286,7 +93814,7 @@ } }, { - "__docId__": 4666, + "__docId__": 4684, "kind": "method", "name": "compile", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93302,7 +93830,7 @@ "return": null }, { - "__docId__": 4672, + "__docId__": 4690, "kind": "method", "name": "_setLocalMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93319,7 +93847,7 @@ "return": null }, { - "__docId__": 4674, + "__docId__": 4692, "kind": "method", "name": "_setWorldMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93336,7 +93864,7 @@ "return": null }, { - "__docId__": 4677, + "__docId__": 4695, "kind": "method", "name": "_buildWorldMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93353,7 +93881,7 @@ "return": null }, { - "__docId__": 4679, + "__docId__": 4697, "kind": "method", "name": "_buildWorldNormalMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93370,7 +93898,7 @@ "return": null }, { - "__docId__": 4682, + "__docId__": 4700, "kind": "method", "name": "_setAABBDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93387,7 +93915,7 @@ "return": null }, { - "__docId__": 4683, + "__docId__": 4701, "kind": "method", "name": "_updateAABB", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93404,7 +93932,7 @@ "return": null }, { - "__docId__": 4686, + "__docId__": 4704, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93421,7 +93949,7 @@ "return": null }, { - "__docId__": 4687, + "__docId__": 4705, "kind": "method", "name": "_makeDrawHash", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93442,7 +93970,7 @@ } }, { - "__docId__": 4688, + "__docId__": 4706, "kind": "method", "name": "_makePickHash", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93463,7 +93991,7 @@ } }, { - "__docId__": 4689, + "__docId__": 4707, "kind": "method", "name": "_makeOcclusionHash", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93484,7 +94012,7 @@ } }, { - "__docId__": 4690, + "__docId__": 4708, "kind": "method", "name": "_buildAABB", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93514,7 +94042,7 @@ "return": null }, { - "__docId__": 4691, + "__docId__": 4709, "kind": "method", "name": "rotate", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93554,7 +94082,7 @@ } }, { - "__docId__": 4693, + "__docId__": 4711, "kind": "method", "name": "rotateOnWorldAxis", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93594,7 +94122,7 @@ } }, { - "__docId__": 4694, + "__docId__": 4712, "kind": "method", "name": "rotateX", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93624,7 +94152,7 @@ } }, { - "__docId__": 4695, + "__docId__": 4713, "kind": "method", "name": "rotateY", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93654,7 +94182,7 @@ } }, { - "__docId__": 4696, + "__docId__": 4714, "kind": "method", "name": "rotateZ", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93684,7 +94212,7 @@ } }, { - "__docId__": 4697, + "__docId__": 4715, "kind": "method", "name": "translate", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93724,7 +94252,7 @@ } }, { - "__docId__": 4698, + "__docId__": 4716, "kind": "method", "name": "translateX", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93754,7 +94282,7 @@ } }, { - "__docId__": 4699, + "__docId__": 4717, "kind": "method", "name": "translateY", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93784,7 +94312,7 @@ } }, { - "__docId__": 4700, + "__docId__": 4718, "kind": "method", "name": "translateZ", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93814,7 +94342,7 @@ } }, { - "__docId__": 4701, + "__docId__": 4719, "kind": "method", "name": "_putDrawRenderers", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93831,7 +94359,7 @@ "return": null }, { - "__docId__": 4706, + "__docId__": 4724, "kind": "method", "name": "_putPickRenderers", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93848,7 +94376,7 @@ "return": null }, { - "__docId__": 4709, + "__docId__": 4727, "kind": "method", "name": "_putOcclusionRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93865,7 +94393,7 @@ "return": null }, { - "__docId__": 4711, + "__docId__": 4729, "kind": "method", "name": "stateSortCompare", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93914,7 +94442,7 @@ } }, { - "__docId__": 4712, + "__docId__": 4730, "kind": "method", "name": "rebuildRenderFlags", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93930,7 +94458,7 @@ "return": null }, { - "__docId__": 4713, + "__docId__": 4731, "kind": "method", "name": "_updateRenderFlags", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93946,7 +94474,7 @@ "return": null }, { - "__docId__": 4714, + "__docId__": 4732, "kind": "method", "name": "_getActiveSectionPlanes", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93967,7 +94495,7 @@ } }, { - "__docId__": 4715, + "__docId__": 4733, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -93990,7 +94518,7 @@ "return": null }, { - "__docId__": 4716, + "__docId__": 4734, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94013,7 +94541,7 @@ "return": null }, { - "__docId__": 4717, + "__docId__": 4735, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94036,7 +94564,7 @@ "return": null }, { - "__docId__": 4718, + "__docId__": 4736, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94059,7 +94587,7 @@ "return": null }, { - "__docId__": 4719, + "__docId__": 4737, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94082,7 +94610,7 @@ "return": null }, { - "__docId__": 4720, + "__docId__": 4738, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94105,7 +94633,7 @@ "return": null }, { - "__docId__": 4721, + "__docId__": 4739, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94128,7 +94656,7 @@ "return": null }, { - "__docId__": 4722, + "__docId__": 4740, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94151,7 +94679,7 @@ "return": null }, { - "__docId__": 4723, + "__docId__": 4741, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94174,7 +94702,7 @@ "return": null }, { - "__docId__": 4724, + "__docId__": 4742, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94197,7 +94725,7 @@ "return": null }, { - "__docId__": 4725, + "__docId__": 4743, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94220,7 +94748,7 @@ "return": null }, { - "__docId__": 4726, + "__docId__": 4744, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94243,7 +94771,7 @@ "return": null }, { - "__docId__": 4727, + "__docId__": 4745, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94266,7 +94794,7 @@ "return": null }, { - "__docId__": 4728, + "__docId__": 4746, "kind": "method", "name": "canPickTriangle", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94286,7 +94814,7 @@ } }, { - "__docId__": 4729, + "__docId__": 4747, "kind": "method", "name": "drawPickTriangles", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94309,7 +94837,7 @@ "return": null }, { - "__docId__": 4730, + "__docId__": 4748, "kind": "method", "name": "pickTriangleSurface", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94344,7 +94872,7 @@ "return": null }, { - "__docId__": 4731, + "__docId__": 4749, "kind": "method", "name": "drawPickVertices", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94367,7 +94895,7 @@ "return": null }, { - "__docId__": 4732, + "__docId__": 4750, "kind": "method", "name": "delegatePickedEntity", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94396,7 +94924,7 @@ "params": [] }, { - "__docId__": 4733, + "__docId__": 4751, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -94411,7 +94939,7 @@ "return": null }, { - "__docId__": 4734, + "__docId__": 4752, "kind": "file", "name": "src/viewer/scene/mesh/draw/DrawRenderer.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nimport {Map} from \"../../utils/Map.js\";\nimport {DrawShaderSource} from \"./DrawShaderSource.js\";\nimport {Program} from \"../../webgl/Program.js\";\nimport {stats} from '../../stats.js';\nimport {WEBGL_INFO} from '../../webglInfo.js';\nimport {math} from \"../../math/math.js\";\nimport {getPlaneRTCPos} from \"../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\n\nconst ids = new Map({});\n\n/**\n * @private\n */\nconst DrawRenderer = function (hash, mesh) {\n this.id = ids.addItem({});\n this._hash = hash;\n this._scene = mesh.scene;\n this._useCount = 0;\n this._shaderSource = new DrawShaderSource(mesh);\n this._allocate(mesh);\n};\n\nconst drawRenderers = {};\n\nDrawRenderer.get = function (mesh) {\n const scene = mesh.scene;\n const hash = [\n scene.canvas.canvas.id,\n (scene.gammaInput ? \"gi;\" : \";\") + (scene.gammaOutput ? \"go\" : \"\"),\n scene._lightsState.getHash(),\n scene._sectionPlanesState.getHash(),\n mesh._geometry._state.hash,\n mesh._material._state.hash,\n mesh._state.drawHash\n ].join(\";\");\n let renderer = drawRenderers[hash];\n if (!renderer) {\n renderer = new DrawRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n drawRenderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nDrawRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n ids.removeItem(this.id);\n if (this._program) {\n this._program.destroy();\n }\n delete drawRenderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nDrawRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nDrawRenderer.prototype.drawMesh = function (frameCtx, mesh) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const maxTextureUnits = WEBGL_INFO.MAX_TEXTURE_UNITS;\n const scene = mesh.scene;\n const material = mesh._material;\n const gl = scene.canvas.gl;\n const program = this._program;\n const meshState = mesh._state;\n const materialState = mesh._material._state;\n const geometryState = mesh._geometry._state;\n const camera = scene.camera;\n const origin = mesh.origin;\n const background = meshState.background;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n if (background) {\n gl.depthFunc(gl.LEQUAL);\n }\n this._bindProgram(frameCtx);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, origin ? frameCtx.getRTCViewMatrix(meshState.originHash, origin) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n if (meshState.clippable) {\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n }\n\n if (materialState.id !== this._lastMaterialId) {\n\n frameCtx.textureUnit = this._baseTextureUnit;\n\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n\n const frontface = materialState.frontface;\n if (frameCtx.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frameCtx.frontface = frontface;\n }\n\n if (frameCtx.lineWidth !== materialState.lineWidth) {\n gl.lineWidth(materialState.lineWidth);\n frameCtx.lineWidth = materialState.lineWidth;\n }\n\n if (this._uPointSize) {\n gl.uniform1f(this._uPointSize, materialState.pointSize);\n }\n\n switch (materialState.type) {\n case \"LambertMaterial\":\n if (this._uMaterialAmbient) {\n gl.uniform3fv(this._uMaterialAmbient, materialState.ambient);\n }\n if (this._uMaterialColor) {\n gl.uniform4f(this._uMaterialColor, materialState.color[0], materialState.color[1], materialState.color[2], materialState.alpha);\n }\n if (this._uMaterialEmissive) {\n gl.uniform3fv(this._uMaterialEmissive, materialState.emissive);\n }\n break;\n\n case \"PhongMaterial\":\n if (this._uMaterialShininess) {\n gl.uniform1f(this._uMaterialShininess, materialState.shininess);\n }\n if (this._uMaterialAmbient) {\n gl.uniform3fv(this._uMaterialAmbient, materialState.ambient);\n }\n if (this._uMaterialDiffuse) {\n gl.uniform3fv(this._uMaterialDiffuse, materialState.diffuse);\n }\n if (this._uMaterialSpecular) {\n gl.uniform3fv(this._uMaterialSpecular, materialState.specular);\n }\n if (this._uMaterialEmissive) {\n gl.uniform3fv(this._uMaterialEmissive, materialState.emissive);\n }\n if (this._uAlphaModeCutoff) {\n gl.uniform4f(\n this._uAlphaModeCutoff,\n 1.0 * materialState.alpha,\n materialState.alphaMode === 1 ? 1.0 : 0.0,\n materialState.alphaCutoff,\n 0);\n }\n if (material._ambientMap && material._ambientMap._state.texture && this._uMaterialAmbientMap) {\n program.bindTexture(this._uMaterialAmbientMap, material._ambientMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uMaterialAmbientMapMatrix) {\n gl.uniformMatrix4fv(this._uMaterialAmbientMapMatrix, false, material._ambientMap._state.matrix);\n }\n }\n if (material._diffuseMap && material._diffuseMap._state.texture && this._uDiffuseMap) {\n program.bindTexture(this._uDiffuseMap, material._diffuseMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uDiffuseMapMatrix) {\n gl.uniformMatrix4fv(this._uDiffuseMapMatrix, false, material._diffuseMap._state.matrix);\n }\n }\n if (material._specularMap && material._specularMap._state.texture && this._uSpecularMap) {\n program.bindTexture(this._uSpecularMap, material._specularMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uSpecularMapMatrix) {\n gl.uniformMatrix4fv(this._uSpecularMapMatrix, false, material._specularMap._state.matrix);\n }\n }\n if (material._emissiveMap && material._emissiveMap._state.texture && this._uEmissiveMap) {\n program.bindTexture(this._uEmissiveMap, material._emissiveMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uEmissiveMapMatrix) {\n gl.uniformMatrix4fv(this._uEmissiveMapMatrix, false, material._emissiveMap._state.matrix);\n }\n }\n if (material._alphaMap && material._alphaMap._state.texture && this._uAlphaMap) {\n program.bindTexture(this._uAlphaMap, material._alphaMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uAlphaMapMatrix) {\n gl.uniformMatrix4fv(this._uAlphaMapMatrix, false, material._alphaMap._state.matrix);\n }\n }\n if (material._reflectivityMap && material._reflectivityMap._state.texture && this._uReflectivityMap) {\n program.bindTexture(this._uReflectivityMap, material._reflectivityMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n if (this._uReflectivityMapMatrix) {\n gl.uniformMatrix4fv(this._uReflectivityMapMatrix, false, material._reflectivityMap._state.matrix);\n }\n }\n if (material._normalMap && material._normalMap._state.texture && this._uNormalMap) {\n program.bindTexture(this._uNormalMap, material._normalMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uNormalMapMatrix) {\n gl.uniformMatrix4fv(this._uNormalMapMatrix, false, material._normalMap._state.matrix);\n }\n }\n if (material._occlusionMap && material._occlusionMap._state.texture && this._uOcclusionMap) {\n program.bindTexture(this._uOcclusionMap, material._occlusionMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uOcclusionMapMatrix) {\n gl.uniformMatrix4fv(this._uOcclusionMapMatrix, false, material._occlusionMap._state.matrix);\n }\n }\n if (material._diffuseFresnel) {\n if (this._uDiffuseFresnelEdgeBias) {\n gl.uniform1f(this._uDiffuseFresnelEdgeBias, material._diffuseFresnel.edgeBias);\n }\n if (this._uDiffuseFresnelCenterBias) {\n gl.uniform1f(this._uDiffuseFresnelCenterBias, material._diffuseFresnel.centerBias);\n }\n if (this._uDiffuseFresnelEdgeColor) {\n gl.uniform3fv(this._uDiffuseFresnelEdgeColor, material._diffuseFresnel.edgeColor);\n }\n if (this._uDiffuseFresnelCenterColor) {\n gl.uniform3fv(this._uDiffuseFresnelCenterColor, material._diffuseFresnel.centerColor);\n }\n if (this._uDiffuseFresnelPower) {\n gl.uniform1f(this._uDiffuseFresnelPower, material._diffuseFresnel.power);\n }\n }\n if (material._specularFresnel) {\n if (this._uSpecularFresnelEdgeBias) {\n gl.uniform1f(this._uSpecularFresnelEdgeBias, material._specularFresnel.edgeBias);\n }\n if (this._uSpecularFresnelCenterBias) {\n gl.uniform1f(this._uSpecularFresnelCenterBias, material._specularFresnel.centerBias);\n }\n if (this._uSpecularFresnelEdgeColor) {\n gl.uniform3fv(this._uSpecularFresnelEdgeColor, material._specularFresnel.edgeColor);\n }\n if (this._uSpecularFresnelCenterColor) {\n gl.uniform3fv(this._uSpecularFresnelCenterColor, material._specularFresnel.centerColor);\n }\n if (this._uSpecularFresnelPower) {\n gl.uniform1f(this._uSpecularFresnelPower, material._specularFresnel.power);\n }\n }\n if (material._alphaFresnel) {\n if (this._uAlphaFresnelEdgeBias) {\n gl.uniform1f(this._uAlphaFresnelEdgeBias, material._alphaFresnel.edgeBias);\n }\n if (this._uAlphaFresnelCenterBias) {\n gl.uniform1f(this._uAlphaFresnelCenterBias, material._alphaFresnel.centerBias);\n }\n if (this._uAlphaFresnelEdgeColor) {\n gl.uniform3fv(this._uAlphaFresnelEdgeColor, material._alphaFresnel.edgeColor);\n }\n if (this._uAlphaFresnelCenterColor) {\n gl.uniform3fv(this._uAlphaFresnelCenterColor, material._alphaFresnel.centerColor);\n }\n if (this._uAlphaFresnelPower) {\n gl.uniform1f(this._uAlphaFresnelPower, material._alphaFresnel.power);\n }\n }\n if (material._reflectivityFresnel) {\n if (this._uReflectivityFresnelEdgeBias) {\n gl.uniform1f(this._uReflectivityFresnelEdgeBias, material._reflectivityFresnel.edgeBias);\n }\n if (this._uReflectivityFresnelCenterBias) {\n gl.uniform1f(this._uReflectivityFresnelCenterBias, material._reflectivityFresnel.centerBias);\n }\n if (this._uReflectivityFresnelEdgeColor) {\n gl.uniform3fv(this._uReflectivityFresnelEdgeColor, material._reflectivityFresnel.edgeColor);\n }\n if (this._uReflectivityFresnelCenterColor) {\n gl.uniform3fv(this._uReflectivityFresnelCenterColor, material._reflectivityFresnel.centerColor);\n }\n if (this._uReflectivityFresnelPower) {\n gl.uniform1f(this._uReflectivityFresnelPower, material._reflectivityFresnel.power);\n }\n }\n if (material._emissiveFresnel) {\n if (this._uEmissiveFresnelEdgeBias) {\n gl.uniform1f(this._uEmissiveFresnelEdgeBias, material._emissiveFresnel.edgeBias);\n }\n if (this._uEmissiveFresnelCenterBias) {\n gl.uniform1f(this._uEmissiveFresnelCenterBias, material._emissiveFresnel.centerBias);\n }\n if (this._uEmissiveFresnelEdgeColor) {\n gl.uniform3fv(this._uEmissiveFresnelEdgeColor, material._emissiveFresnel.edgeColor);\n }\n if (this._uEmissiveFresnelCenterColor) {\n gl.uniform3fv(this._uEmissiveFresnelCenterColor, material._emissiveFresnel.centerColor);\n }\n if (this._uEmissiveFresnelPower) {\n gl.uniform1f(this._uEmissiveFresnelPower, material._emissiveFresnel.power);\n }\n }\n break;\n\n case \"MetallicMaterial\":\n if (this._uBaseColor) {\n gl.uniform3fv(this._uBaseColor, materialState.baseColor);\n }\n if (this._uMaterialMetallic) {\n gl.uniform1f(this._uMaterialMetallic, materialState.metallic);\n }\n if (this._uMaterialRoughness) {\n gl.uniform1f(this._uMaterialRoughness, materialState.roughness);\n }\n if (this._uMaterialSpecularF0) {\n gl.uniform1f(this._uMaterialSpecularF0, materialState.specularF0);\n }\n if (this._uMaterialEmissive) {\n gl.uniform3fv(this._uMaterialEmissive, materialState.emissive);\n }\n if (this._uAlphaModeCutoff) {\n gl.uniform4f(\n this._uAlphaModeCutoff,\n 1.0 * materialState.alpha,\n materialState.alphaMode === 1 ? 1.0 : 0.0,\n materialState.alphaCutoff,\n 0.0);\n }\n const baseColorMap = material._baseColorMap;\n if (baseColorMap && baseColorMap._state.texture && this._uBaseColorMap) {\n program.bindTexture(this._uBaseColorMap, baseColorMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uBaseColorMapMatrix) {\n gl.uniformMatrix4fv(this._uBaseColorMapMatrix, false, baseColorMap._state.matrix);\n }\n }\n const metallicMap = material._metallicMap;\n if (metallicMap && metallicMap._state.texture && this._uMetallicMap) {\n program.bindTexture(this._uMetallicMap, metallicMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uMetallicMapMatrix) {\n gl.uniformMatrix4fv(this._uMetallicMapMatrix, false, metallicMap._state.matrix);\n }\n }\n const roughnessMap = material._roughnessMap;\n if (roughnessMap && roughnessMap._state.texture && this._uRoughnessMap) {\n program.bindTexture(this._uRoughnessMap, roughnessMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uRoughnessMapMatrix) {\n gl.uniformMatrix4fv(this._uRoughnessMapMatrix, false, roughnessMap._state.matrix);\n }\n }\n const metallicRoughnessMap = material._metallicRoughnessMap;\n if (metallicRoughnessMap && metallicRoughnessMap._state.texture && this._uMetallicRoughnessMap) {\n program.bindTexture(this._uMetallicRoughnessMap, metallicRoughnessMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uMetallicRoughnessMapMatrix) {\n gl.uniformMatrix4fv(this._uMetallicRoughnessMapMatrix, false, metallicRoughnessMap._state.matrix);\n }\n }\n var emissiveMap = material._emissiveMap;\n if (emissiveMap && emissiveMap._state.texture && this._uEmissiveMap) {\n program.bindTexture(this._uEmissiveMap, emissiveMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uEmissiveMapMatrix) {\n gl.uniformMatrix4fv(this._uEmissiveMapMatrix, false, emissiveMap._state.matrix);\n }\n }\n var occlusionMap = material._occlusionMap;\n if (occlusionMap && material._occlusionMap._state.texture && this._uOcclusionMap) {\n program.bindTexture(this._uOcclusionMap, occlusionMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uOcclusionMapMatrix) {\n gl.uniformMatrix4fv(this._uOcclusionMapMatrix, false, occlusionMap._state.matrix);\n }\n }\n var alphaMap = material._alphaMap;\n if (alphaMap && alphaMap._state.texture && this._uAlphaMap) {\n program.bindTexture(this._uAlphaMap, alphaMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uAlphaMapMatrix) {\n gl.uniformMatrix4fv(this._uAlphaMapMatrix, false, alphaMap._state.matrix);\n }\n }\n var normalMap = material._normalMap;\n if (normalMap && normalMap._state.texture && this._uNormalMap) {\n program.bindTexture(this._uNormalMap, normalMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uNormalMapMatrix) {\n gl.uniformMatrix4fv(this._uNormalMapMatrix, false, normalMap._state.matrix);\n }\n }\n break;\n\n case \"SpecularMaterial\":\n if (this._uMaterialDiffuse) {\n gl.uniform3fv(this._uMaterialDiffuse, materialState.diffuse);\n }\n if (this._uMaterialSpecular) {\n gl.uniform3fv(this._uMaterialSpecular, materialState.specular);\n }\n if (this._uMaterialGlossiness) {\n gl.uniform1f(this._uMaterialGlossiness, materialState.glossiness);\n }\n if (this._uMaterialReflectivity) {\n gl.uniform1f(this._uMaterialReflectivity, materialState.reflectivity);\n }\n if (this._uMaterialEmissive) {\n gl.uniform3fv(this._uMaterialEmissive, materialState.emissive);\n }\n if (this._uAlphaModeCutoff) {\n gl.uniform4f(\n this._uAlphaModeCutoff,\n 1.0 * materialState.alpha,\n materialState.alphaMode === 1 ? 1.0 : 0.0,\n materialState.alphaCutoff,\n 0.0);\n }\n const diffuseMap = material._diffuseMap;\n if (diffuseMap && diffuseMap._state.texture && this._uDiffuseMap) {\n program.bindTexture(this._uDiffuseMap, diffuseMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uDiffuseMapMatrix) {\n gl.uniformMatrix4fv(this._uDiffuseMapMatrix, false, diffuseMap._state.matrix);\n }\n }\n const specularMap = material._specularMap;\n if (specularMap && specularMap._state.texture && this._uSpecularMap) {\n program.bindTexture(this._uSpecularMap, specularMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uSpecularMapMatrix) {\n gl.uniformMatrix4fv(this._uSpecularMapMatrix, false, specularMap._state.matrix);\n }\n }\n const glossinessMap = material._glossinessMap;\n if (glossinessMap && glossinessMap._state.texture && this._uGlossinessMap) {\n program.bindTexture(this._uGlossinessMap, glossinessMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uGlossinessMapMatrix) {\n gl.uniformMatrix4fv(this._uGlossinessMapMatrix, false, glossinessMap._state.matrix);\n }\n }\n const specularGlossinessMap = material._specularGlossinessMap;\n if (specularGlossinessMap && specularGlossinessMap._state.texture && this._uSpecularGlossinessMap) {\n program.bindTexture(this._uSpecularGlossinessMap, specularGlossinessMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uSpecularGlossinessMapMatrix) {\n gl.uniformMatrix4fv(this._uSpecularGlossinessMapMatrix, false, specularGlossinessMap._state.matrix);\n }\n }\n var emissiveMap = material._emissiveMap;\n if (emissiveMap && emissiveMap._state.texture && this._uEmissiveMap) {\n program.bindTexture(this._uEmissiveMap, emissiveMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uEmissiveMapMatrix) {\n gl.uniformMatrix4fv(this._uEmissiveMapMatrix, false, emissiveMap._state.matrix);\n }\n }\n var occlusionMap = material._occlusionMap;\n if (occlusionMap && occlusionMap._state.texture && this._uOcclusionMap) {\n program.bindTexture(this._uOcclusionMap, occlusionMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uOcclusionMapMatrix) {\n gl.uniformMatrix4fv(this._uOcclusionMapMatrix, false, occlusionMap._state.matrix);\n }\n }\n var alphaMap = material._alphaMap;\n if (alphaMap && alphaMap._state.texture && this._uAlphaMap) {\n program.bindTexture(this._uAlphaMap, alphaMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uAlphaMapMatrix) {\n gl.uniformMatrix4fv(this._uAlphaMapMatrix, false, alphaMap._state.matrix);\n }\n }\n var normalMap = material._normalMap;\n if (normalMap && normalMap._state.texture && this._uNormalMap) {\n program.bindTexture(this._uNormalMap, normalMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uNormalMapMatrix) {\n gl.uniformMatrix4fv(this._uNormalMapMatrix, false, normalMap._state.matrix);\n }\n }\n break;\n }\n this._lastMaterialId = materialState.id;\n }\n\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n if (this._uModelNormalMatrix) {\n gl.uniformMatrix4fv(this._uModelNormalMatrix, gl.FALSE, mesh.worldNormalMatrix);\n }\n\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, meshState.clippable);\n }\n\n if (this._uColorize) {\n const colorize = meshState.colorize;\n const lastColorize = this._lastColorize;\n if (lastColorize[0] !== colorize[0] ||\n lastColorize[1] !== colorize[1] ||\n lastColorize[2] !== colorize[2] ||\n lastColorize[3] !== colorize[3]) {\n gl.uniform4fv(this._uColorize, colorize);\n lastColorize[0] = colorize[0];\n lastColorize[1] = colorize[1];\n lastColorize[2] = colorize[2];\n lastColorize[3] = colorize[3];\n }\n }\n\n gl.uniform3fv(this._uOffset, meshState.offset);\n\n // Bind VBOs\n\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._uUVDecodeMatrix) {\n gl.uniformMatrix3fv(this._uUVDecodeMatrix, false, geometryState.uvDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf);\n frameCtx.bindArray++;\n }\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(geometryState.normalsBuf);\n frameCtx.bindArray++;\n }\n if (this._aUV) {\n this._aUV.bindArrayBuffer(geometryState.uvBuf);\n frameCtx.bindArray++;\n }\n if (this._aColor) {\n this._aColor.bindArrayBuffer(geometryState.colorsBuf);\n frameCtx.bindArray++;\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(geometryState.flagsBuf);\n frameCtx.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frameCtx.bindArray++;\n }\n this._lastGeometryId = geometryState.id;\n }\n\n // Draw (indices bound in prev step)\n\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frameCtx.drawElements++;\n } else if (geometryState.positions) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n frameCtx.drawArrays++;\n }\n\n if (background) {\n gl.depthFunc(gl.LESS);\n }\n};\n\nDrawRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n const material = mesh._material;\n const lightsState = scene._lightsState;\n const sectionPlanesState = scene._sectionPlanesState;\n const materialState = mesh._material._state;\n\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uUVDecodeMatrix = program.getLocation(\"uvDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uModelNormalMatrix = program.getLocation(\"modelNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n this._uLightAmbient = [];\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n this._uShadowViewMatrix = [];\n this._uShadowProjMatrix = [];\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n const lights = lightsState.lights;\n let light;\n\n for (var i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n\n case \"ambient\":\n this._uLightAmbient[i] = program.getLocation(\"lightAmbient\");\n break;\n\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n\n if (light.castsShadow) {\n this._uShadowViewMatrix[i] = program.getLocation(\"shadowViewMatrix\" + i);\n this._uShadowProjMatrix[i] = program.getLocation(\"shadowProjMatrix\" + i);\n }\n }\n\n if (lightsState.lightMaps.length > 0) {\n this._uLightMap = \"lightMap\";\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n this._uReflectionMap = \"reflectionMap\";\n }\n\n this._uSectionPlanes = [];\n const sectionPlanes = sectionPlanesState.sectionPlanes;\n for (var i = 0, len = sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._uPointSize = program.getLocation(\"pointSize\");\n\n switch (materialState.type) {\n case \"LambertMaterial\":\n this._uMaterialColor = program.getLocation(\"materialColor\");\n this._uMaterialEmissive = program.getLocation(\"materialEmissive\");\n this._uAlphaModeCutoff = program.getLocation(\"materialAlphaModeCutoff\");\n break;\n\n case \"PhongMaterial\":\n this._uMaterialAmbient = program.getLocation(\"materialAmbient\");\n this._uMaterialDiffuse = program.getLocation(\"materialDiffuse\");\n this._uMaterialSpecular = program.getLocation(\"materialSpecular\");\n this._uMaterialEmissive = program.getLocation(\"materialEmissive\");\n this._uAlphaModeCutoff = program.getLocation(\"materialAlphaModeCutoff\");\n this._uMaterialShininess = program.getLocation(\"materialShininess\");\n if (material._ambientMap) {\n this._uMaterialAmbientMap = \"ambientMap\";\n this._uMaterialAmbientMapMatrix = program.getLocation(\"ambientMapMatrix\");\n }\n if (material._diffuseMap) {\n this._uDiffuseMap = \"diffuseMap\";\n this._uDiffuseMapMatrix = program.getLocation(\"diffuseMapMatrix\");\n }\n if (material._specularMap) {\n this._uSpecularMap = \"specularMap\";\n this._uSpecularMapMatrix = program.getLocation(\"specularMapMatrix\");\n }\n if (material._emissiveMap) {\n this._uEmissiveMap = \"emissiveMap\";\n this._uEmissiveMapMatrix = program.getLocation(\"emissiveMapMatrix\");\n }\n if (material._alphaMap) {\n this._uAlphaMap = \"alphaMap\";\n this._uAlphaMapMatrix = program.getLocation(\"alphaMapMatrix\");\n }\n if (material._reflectivityMap) {\n this._uReflectivityMap = \"reflectivityMap\";\n this._uReflectivityMapMatrix = program.getLocation(\"reflectivityMapMatrix\");\n }\n if (material._normalMap) {\n this._uNormalMap = \"normalMap\";\n this._uNormalMapMatrix = program.getLocation(\"normalMapMatrix\");\n }\n if (material._occlusionMap) {\n this._uOcclusionMap = \"occlusionMap\";\n this._uOcclusionMapMatrix = program.getLocation(\"occlusionMapMatrix\");\n }\n if (material._diffuseFresnel) {\n this._uDiffuseFresnelEdgeBias = program.getLocation(\"diffuseFresnelEdgeBias\");\n this._uDiffuseFresnelCenterBias = program.getLocation(\"diffuseFresnelCenterBias\");\n this._uDiffuseFresnelEdgeColor = program.getLocation(\"diffuseFresnelEdgeColor\");\n this._uDiffuseFresnelCenterColor = program.getLocation(\"diffuseFresnelCenterColor\");\n this._uDiffuseFresnelPower = program.getLocation(\"diffuseFresnelPower\");\n }\n if (material._specularFresnel) {\n this._uSpecularFresnelEdgeBias = program.getLocation(\"specularFresnelEdgeBias\");\n this._uSpecularFresnelCenterBias = program.getLocation(\"specularFresnelCenterBias\");\n this._uSpecularFresnelEdgeColor = program.getLocation(\"specularFresnelEdgeColor\");\n this._uSpecularFresnelCenterColor = program.getLocation(\"specularFresnelCenterColor\");\n this._uSpecularFresnelPower = program.getLocation(\"specularFresnelPower\");\n }\n if (material._alphaFresnel) {\n this._uAlphaFresnelEdgeBias = program.getLocation(\"alphaFresnelEdgeBias\");\n this._uAlphaFresnelCenterBias = program.getLocation(\"alphaFresnelCenterBias\");\n this._uAlphaFresnelEdgeColor = program.getLocation(\"alphaFresnelEdgeColor\");\n this._uAlphaFresnelCenterColor = program.getLocation(\"alphaFresnelCenterColor\");\n this._uAlphaFresnelPower = program.getLocation(\"alphaFresnelPower\");\n }\n if (material._reflectivityFresnel) {\n this._uReflectivityFresnelEdgeBias = program.getLocation(\"reflectivityFresnelEdgeBias\");\n this._uReflectivityFresnelCenterBias = program.getLocation(\"reflectivityFresnelCenterBias\");\n this._uReflectivityFresnelEdgeColor = program.getLocation(\"reflectivityFresnelEdgeColor\");\n this._uReflectivityFresnelCenterColor = program.getLocation(\"reflectivityFresnelCenterColor\");\n this._uReflectivityFresnelPower = program.getLocation(\"reflectivityFresnelPower\");\n }\n if (material._emissiveFresnel) {\n this._uEmissiveFresnelEdgeBias = program.getLocation(\"emissiveFresnelEdgeBias\");\n this._uEmissiveFresnelCenterBias = program.getLocation(\"emissiveFresnelCenterBias\");\n this._uEmissiveFresnelEdgeColor = program.getLocation(\"emissiveFresnelEdgeColor\");\n this._uEmissiveFresnelCenterColor = program.getLocation(\"emissiveFresnelCenterColor\");\n this._uEmissiveFresnelPower = program.getLocation(\"emissiveFresnelPower\");\n }\n break;\n\n case \"MetallicMaterial\":\n this._uBaseColor = program.getLocation(\"materialBaseColor\");\n this._uMaterialMetallic = program.getLocation(\"materialMetallic\");\n this._uMaterialRoughness = program.getLocation(\"materialRoughness\");\n this._uMaterialSpecularF0 = program.getLocation(\"materialSpecularF0\");\n this._uMaterialEmissive = program.getLocation(\"materialEmissive\");\n this._uAlphaModeCutoff = program.getLocation(\"materialAlphaModeCutoff\");\n if (material._baseColorMap) {\n this._uBaseColorMap = \"baseColorMap\";\n this._uBaseColorMapMatrix = program.getLocation(\"baseColorMapMatrix\");\n }\n if (material._metallicMap) {\n this._uMetallicMap = \"metallicMap\";\n this._uMetallicMapMatrix = program.getLocation(\"metallicMapMatrix\");\n }\n if (material._roughnessMap) {\n this._uRoughnessMap = \"roughnessMap\";\n this._uRoughnessMapMatrix = program.getLocation(\"roughnessMapMatrix\");\n }\n if (material._metallicRoughnessMap) {\n this._uMetallicRoughnessMap = \"metallicRoughnessMap\";\n this._uMetallicRoughnessMapMatrix = program.getLocation(\"metallicRoughnessMapMatrix\");\n }\n if (material._emissiveMap) {\n this._uEmissiveMap = \"emissiveMap\";\n this._uEmissiveMapMatrix = program.getLocation(\"emissiveMapMatrix\");\n }\n if (material._occlusionMap) {\n this._uOcclusionMap = \"occlusionMap\";\n this._uOcclusionMapMatrix = program.getLocation(\"occlusionMapMatrix\");\n }\n if (material._alphaMap) {\n this._uAlphaMap = \"alphaMap\";\n this._uAlphaMapMatrix = program.getLocation(\"alphaMapMatrix\");\n }\n if (material._normalMap) {\n this._uNormalMap = \"normalMap\";\n this._uNormalMapMatrix = program.getLocation(\"normalMapMatrix\");\n }\n break;\n\n case \"SpecularMaterial\":\n this._uMaterialDiffuse = program.getLocation(\"materialDiffuse\");\n this._uMaterialSpecular = program.getLocation(\"materialSpecular\");\n this._uMaterialGlossiness = program.getLocation(\"materialGlossiness\");\n this._uMaterialReflectivity = program.getLocation(\"reflectivityFresnel\");\n this._uMaterialEmissive = program.getLocation(\"materialEmissive\");\n this._uAlphaModeCutoff = program.getLocation(\"materialAlphaModeCutoff\");\n if (material._diffuseMap) {\n this._uDiffuseMap = \"diffuseMap\";\n this._uDiffuseMapMatrix = program.getLocation(\"diffuseMapMatrix\");\n }\n if (material._specularMap) {\n this._uSpecularMap = \"specularMap\";\n this._uSpecularMapMatrix = program.getLocation(\"specularMapMatrix\");\n }\n if (material._glossinessMap) {\n this._uGlossinessMap = \"glossinessMap\";\n this._uGlossinessMapMatrix = program.getLocation(\"glossinessMapMatrix\");\n }\n if (material._specularGlossinessMap) {\n this._uSpecularGlossinessMap = \"materialSpecularGlossinessMap\";\n this._uSpecularGlossinessMapMatrix = program.getLocation(\"materialSpecularGlossinessMapMatrix\");\n }\n if (material._emissiveMap) {\n this._uEmissiveMap = \"emissiveMap\";\n this._uEmissiveMapMatrix = program.getLocation(\"emissiveMapMatrix\");\n }\n if (material._occlusionMap) {\n this._uOcclusionMap = \"occlusionMap\";\n this._uOcclusionMapMatrix = program.getLocation(\"occlusionMapMatrix\");\n }\n if (material._alphaMap) {\n this._uAlphaMap = \"alphaMap\";\n this._uAlphaMapMatrix = program.getLocation(\"alphaMapMatrix\");\n }\n if (material._normalMap) {\n this._uNormalMap = \"normalMap\";\n this._uNormalMapMatrix = program.getLocation(\"normalMapMatrix\");\n }\n break;\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aUV = program.getAttribute(\"uv\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n\n this._uClippable = program.getLocation(\"clippable\");\n this._uColorize = program.getLocation(\"colorize\");\n this._uOffset = program.getLocation(\"offset\");\n\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n\n this._lastColorize = new Float32Array(4);\n\n this._baseTextureUnit = 0;\n\n};\n\nDrawRenderer.prototype._bindProgram = function (frameCtx) {\n\n const maxTextureUnits = WEBGL_INFO.MAX_TEXTURE_UNITS;\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n const project = scene.camera.project;\n let light;\n\n const program = this._program;\n\n program.bind();\n\n frameCtx.useProgram++;\n frameCtx.textureUnit = 0;\n\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n\n this._lastColorize[0] = -1;\n this._lastColorize[1] = -1;\n this._lastColorize[2] = -1;\n this._lastColorize[3] = -1;\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n for (var i = 0, len = lightsState.lights.length; i < len; i++) {\n\n light = lightsState.lights[i];\n\n if (this._uLightAmbient[i]) {\n gl.uniform4f(this._uLightAmbient[i], light.color[0], light.color[1], light.color[2], light.intensity);\n\n } else {\n\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n\n if (light.castsShadow) {\n if (this._uShadowViewMatrix[i]) {\n gl.uniformMatrix4fv(this._uShadowViewMatrix[i], false, light.getShadowViewMatrix());\n }\n if (this._uShadowProjMatrix[i]) {\n gl.uniformMatrix4fv(this._uShadowProjMatrix[i], false, light.getShadowProjMatrix());\n }\n const shadowRenderBuf = light.getShadowRenderBuf();\n if (shadowRenderBuf) {\n program.bindTexture(\"shadowMap\" + i, shadowRenderBuf.getTexture(), frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n }\n }\n }\n\n if (lightsState.lightMaps.length > 0 && lightsState.lightMaps[0].texture && this._uLightMap) {\n program.bindTexture(this._uLightMap, lightsState.lightMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (lightsState.reflectionMaps.length > 0 && lightsState.reflectionMaps[0].texture && this._uReflectionMap) {\n program.bindTexture(this._uReflectionMap, lightsState.reflectionMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n\n this._baseTextureUnit = frameCtx.textureUnit;\n};\n\nexport {DrawRenderer};", @@ -94422,7 +94950,7 @@ "lineNumber": 1 }, { - "__docId__": 4735, + "__docId__": 4753, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94443,7 +94971,7 @@ "ignore": true }, { - "__docId__": 4736, + "__docId__": 4754, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94464,7 +94992,7 @@ "ignore": true }, { - "__docId__": 4737, + "__docId__": 4755, "kind": "variable", "name": "drawRenderers", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94485,7 +95013,7 @@ "ignore": true }, { - "__docId__": 4738, + "__docId__": 4756, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94516,7 +95044,7 @@ "ignore": true }, { - "__docId__": 4739, + "__docId__": 4757, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94536,7 +95064,7 @@ "ignore": true }, { - "__docId__": 4740, + "__docId__": 4758, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94556,7 +95084,7 @@ "ignore": true }, { - "__docId__": 4741, + "__docId__": 4759, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94589,7 +95117,7 @@ "ignore": true }, { - "__docId__": 4742, + "__docId__": 4760, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94616,7 +95144,7 @@ "return": null }, { - "__docId__": 4743, + "__docId__": 4761, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94643,7 +95171,7 @@ "return": null }, { - "__docId__": 4744, + "__docId__": 4762, "kind": "function", "name": "DrawRenderer", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -94675,7 +95203,7 @@ "return": null }, { - "__docId__": 4745, + "__docId__": 4763, "kind": "file", "name": "src/viewer/scene/mesh/draw/DrawShaderSource.js", "content": "/**\n * @private\n */\n\nimport {LinearEncoding, sRGBEncoding} from \"../../constants/constants.js\";\n\nconst DrawShaderSource = function (mesh) {\n if (mesh._material._state.type === \"LambertMaterial\") {\n this.vertex = buildVertexLambert(mesh);\n this.fragment = buildFragmentLambert(mesh);\n } else {\n this.vertex = buildVertexDraw(mesh);\n this.fragment = buildFragmentDraw(mesh);\n }\n};\n\nconst TEXTURE_DECODE_FUNCS = {};\nTEXTURE_DECODE_FUNCS[LinearEncoding] = \"linearToLinear\";\nTEXTURE_DECODE_FUNCS[sRGBEncoding] = \"sRGBToLinear\";\n\nfunction getReceivesShadow(mesh) {\n if (!mesh.receivesShadow) {\n return false;\n }\n const lights = mesh.scene._lightsState.lights;\n if (!lights || lights.length === 0) {\n return false;\n }\n for (let i = 0, len = lights.length; i < len; i++) {\n if (lights[i].castsShadow) {\n return true;\n }\n }\n return false;\n}\n\nfunction hasTextures(mesh) {\n if (!mesh._geometry._state.uvBuf) {\n return false;\n }\n const material = mesh._material;\n return !!(material._ambientMap ||\n material._occlusionMap ||\n material._baseColorMap ||\n material._diffuseMap ||\n material._alphaMap ||\n material._specularMap ||\n material._glossinessMap ||\n material._specularGlossinessMap ||\n material._emissiveMap ||\n material._metallicMap ||\n material._roughnessMap ||\n material._metallicRoughnessMap ||\n material._reflectivityMap ||\n material._normalMap);\n}\n\nfunction hasNormals(mesh) {\n const primitive = mesh._geometry._state.primitiveName;\n if ((mesh._geometry._state.autoVertexNormals || mesh._geometry._state.normalsBuf) && (primitive === \"triangles\" || primitive === \"triangle-strip\" || primitive === \"triangle-fan\")) {\n return true;\n }\n return false;\n}\n\nfunction buildVertexLambert(mesh) {\n\n const scene = mesh.scene;\n const sectionPlanesState = mesh.scene._sectionPlanesState;\n const lightsState = mesh.scene._lightsState;\n const geometryState = mesh._geometry._state;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const quantizedGeometry = !!geometryState.compressGeometry;\n\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Lambertian drawing vertex shader\");\n src.push(\"in vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec4 colorize;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n }\n src.push(\"uniform vec4 lightAmbient;\");\n src.push(\"uniform vec4 materialColor;\");\n src.push(\"uniform vec3 materialEmissive;\");\n if (geometryState.normalsBuf) {\n src.push(\"in vec3 normal;\");\n src.push(\"uniform mat4 modelNormalMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n if (quantizedGeometry) {\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n }\n }\n src.push(\"out vec4 vColor;\");\n if (geometryState.primitiveName === \"points\") {\n src.push(\"uniform float pointSize;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n if (geometryState.normalsBuf) {\n if (quantizedGeometry) {\n src.push(\"vec4 localNormal = vec4(octDecode(normal.xy), 0.0); \");\n } else {\n src.push(\"vec4 localNormal = vec4(normal, 0.0); \");\n }\n src.push(\"mat4 modelNormalMatrix2 = modelNormalMatrix;\");\n src.push(\"mat4 viewNormalMatrix2 = viewNormalMatrix;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\")\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n if (geometryState.normalsBuf) {\n src.push(\"mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;\");\n src.push(\"billboard(modelNormalMatrix2);\");\n src.push(\"billboard(viewNormalMatrix2);\");\n src.push(\"billboard(modelViewNormalMatrix);\");\n }\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n if (geometryState.normalsBuf) {\n src.push(\"vec3 viewNormal = normalize((viewNormalMatrix2 * modelNormalMatrix2 * localNormal).xyz);\");\n }\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n src.push(\"float lambertian = 1.0;\");\n if (geometryState.normalsBuf) {\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix2 * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix2 * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix2 * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n }\n src.push(\"vColor = vec4((lightAmbient.rgb * lightAmbient.a * materialColor.rgb) + materialEmissive.rgb + (reflectedColor * materialColor.rgb), materialColor.a) * colorize;\"); // TODO: How to have ambient bright enough for canvas BG but not too bright for scene?\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n if (geometryState.primitiveName === \"points\") {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragmentLambert(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const materialState = mesh._material._state;\n const geometryState = mesh._geometry._state;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const solid = false && materialState.backfaces;\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Lambertian drawing fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n if (gammaOutput) {\n src.push(\"uniform float gammaFactor;\");\n src.push(\" vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n if (solid) {\n src.push(\" if (gl_FrontFacing == false) {\");\n src.push(\" outColor = vec4(1.0, 0.0, 0.0, 1.0);\");\n src.push(\" return;\");\n src.push(\" }\");\n }\n src.push(\"}\");\n }\n if (geometryState.primitiveName === \"points\") {\n src.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\"float r = dot(cxy, cxy);\");\n src.push(\"if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\"}\");\n\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"outColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"outColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n}\n\nfunction buildVertexDraw(mesh) {\n const scene = mesh.scene;\n const material = mesh._material;\n const meshState = mesh._state;\n const sectionPlanesState = scene._sectionPlanesState;\n const geometryState = mesh._geometry._state;\n const lightsState = scene._lightsState;\n let i;\n let len;\n let light;\n const billboard = meshState.billboard;\n const background = meshState.background;\n const stationary = meshState.stationary;\n const texturing = hasTextures(mesh);\n const normals = hasNormals(mesh);\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const receivesShadow = getReceivesShadow(mesh);\n const quantizedGeometry = !!geometryState.compressGeometry;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Drawing vertex shader\");\n src.push(\"in vec3 position;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"out vec3 vViewPosition;\");\n src.push(\"uniform vec3 offset;\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (lightsState.lightMaps.length > 0) {\n src.push(\"out vec3 vWorldNormal;\");\n }\n if (normals) {\n src.push(\"in vec3 normal;\");\n src.push(\"uniform mat4 modelNormalMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"out vec3 vViewNormal;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (!(light.type === \"dir\" && light.space === \"view\")) {\n src.push(\"out vec4 vViewLightReverseDirAndDist\" + i + \";\");\n }\n }\n if (quantizedGeometry) {\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n }\n }\n if (texturing) {\n src.push(\"in vec2 uv;\");\n src.push(\"out vec2 vUV;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat3 uvDecodeMatrix;\")\n }\n }\n if (geometryState.colors) {\n src.push(\"in vec4 color;\");\n src.push(\"out vec4 vColor;\");\n }\n if (geometryState.primitiveName === \"points\") {\n src.push(\"uniform float pointSize;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n if (receivesShadow) {\n src.push(\"const mat4 texUnitConverter = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources\n if (lightsState.lights[i].castsShadow) {\n src.push(\"uniform mat4 shadowViewMatrix\" + i + \";\");\n src.push(\"uniform mat4 shadowProjMatrix\" + i + \";\");\n src.push(\"out vec4 vShadowPosFromLight\" + i + \";\");\n }\n }\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n if (normals) {\n if (quantizedGeometry) {\n src.push(\"vec4 localNormal = vec4(octDecode(normal.xy), 0.0); \");\n } else {\n src.push(\"vec4 localNormal = vec4(normal, 0.0); \");\n }\n src.push(\"mat4 modelNormalMatrix2 = modelNormalMatrix;\");\n src.push(\"mat4 viewNormalMatrix2 = viewNormalMatrix;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\")\n } else if (background) {\n src.push(\"viewMatrix2[3] = vec4(0.0, 0.0, 0.0 ,1.0);\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n if (normals) {\n src.push(\"mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;\");\n src.push(\"billboard(modelNormalMatrix2);\");\n src.push(\"billboard(viewNormalMatrix2);\");\n src.push(\"billboard(modelViewNormalMatrix);\");\n }\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n if (normals) {\n src.push(\"vec3 worldNormal = (modelNormalMatrix2 * localNormal).xyz; \");\n if (lightsState.lightMaps.length > 0) {\n src.push(\"vWorldNormal = worldNormal;\");\n }\n src.push(\"vViewNormal = normalize((viewNormalMatrix2 * vec4(worldNormal, 1.0)).xyz);\");\n src.push(\"vec3 tmpVec3;\");\n src.push(\"float lightDist;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Lights\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"world\") {\n src.push(\"tmpVec3 = vec3(viewMatrix2 * vec4(lightDir\" + i + \", 0.0) ).xyz;\");\n src.push(\"vViewLightReverseDirAndDist\" + i + \" = vec4(-tmpVec3, 0.0);\");\n }\n }\n if (light.type === \"point\") {\n if (light.space === \"world\") {\n src.push(\"tmpVec3 = (viewMatrix2 * vec4(lightPos\" + i + \", 1.0)).xyz - viewPosition.xyz;\");\n src.push(\"lightDist = abs(length(tmpVec3));\");\n } else {\n src.push(\"tmpVec3 = lightPos\" + i + \".xyz - viewPosition.xyz;\");\n src.push(\"lightDist = abs(length(tmpVec3));\");\n }\n src.push(\"vViewLightReverseDirAndDist\" + i + \" = vec4(tmpVec3, lightDist);\");\n }\n }\n }\n if (texturing) {\n if (quantizedGeometry) {\n src.push(\"vUV = (uvDecodeMatrix * vec3(uv, 1.0)).xy;\");\n } else {\n src.push(\"vUV = uv;\");\n }\n }\n if (geometryState.colors) {\n src.push(\"vColor = color;\");\n }\n if (geometryState.primitiveName === \"points\") {\n src.push(\"gl_PointSize = pointSize;\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n src.push(\" vViewPosition = viewPosition.xyz;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (background) {\n src.push(\"clipPos.z = clipPos.w;\");\n }\n src.push(\"gl_Position = clipPos;\");\n if (receivesShadow) {\n src.push(\"const mat4 texUnitConverter = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);\");\n src.push(\"vec4 tempx; \");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources\n if (lightsState.lights[i].castsShadow) {\n src.push(\"vShadowPosFromLight\" + i + \" = texUnitConverter * shadowProjMatrix\" + i + \" * (shadowViewMatrix\" + i + \" * worldPosition); \");\n }\n }\n }\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragmentDraw(mesh) {\n\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n const material = mesh._material;\n const geometryState = mesh._geometry._state;\n const sectionPlanesState = mesh.scene._sectionPlanesState;\n const lightsState = mesh.scene._lightsState;\n const materialState = mesh._material._state;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const normals = hasNormals(mesh);\n const uvs = geometryState.uvBuf;\n const solid = false && materialState.backfaces;\n const phongMaterial = (materialState.type === \"PhongMaterial\");\n const metallicMaterial = (materialState.type === \"MetallicMaterial\");\n const specularMaterial = (materialState.type === \"SpecularMaterial\");\n const receivesShadow = getReceivesShadow(mesh);\n const gammaInput = scene.gammaInput; // If set, then it expects that all textures and colors are premultiplied gamma. Default is false.\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n\n let light;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Drawing fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (receivesShadow) {\n src.push(\"float unpackDepth (vec4 color) {\");\n src.push(\" const vec4 bitShift = vec4(1.0, 1.0/256.0, 1.0/(256.0 * 256.0), 1.0/(256.0*256.0*256.0));\");\n src.push(\" return dot(color, bitShift);\");\n src.push(\"}\");\n }\n\n //--------------------------------------------------------------------------------\n // GAMMA CORRECTION\n //--------------------------------------------------------------------------------\n\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToLinear( in vec4 value ) {\");\n src.push(\" return value;\");\n src.push(\"}\");\n src.push(\"vec4 sRGBToLinear( in vec4 value ) {\");\n src.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\");\n src.push(\"}\");\n src.push(\"vec4 gammaToLinear( in vec4 value) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\");\n src.push(\"}\");\n if (gammaOutput) {\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n\n //--------------------------------------------------------------------------------\n // USER CLIP PLANES\n //--------------------------------------------------------------------------------\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n if (normals) {\n\n //--------------------------------------------------------------------------------\n // LIGHT AND REFLECTION MAP INPUTS\n // Define here so available globally to shader functions\n //--------------------------------------------------------------------------------\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"uniform samplerCube lightMap;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n }\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"uniform samplerCube reflectionMap;\");\n }\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n src.push(\"uniform mat4 viewMatrix;\");\n }\n\n //--------------------------------------------------------------------------------\n // SHADING FUNCTIONS\n //--------------------------------------------------------------------------------\n\n // CONSTANT DEFINITIONS\n\n src.push(\"#define PI 3.14159265359\");\n src.push(\"#define RECIPROCAL_PI 0.31830988618\");\n src.push(\"#define RECIPROCAL_PI2 0.15915494\");\n src.push(\"#define EPSILON 1e-6\");\n\n src.push(\"#define saturate(a) clamp( a, 0.0, 1.0 )\");\n\n // UTILITY DEFINITIONS\n\n src.push(\"vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {\");\n src.push(\" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\");\n src.push(\"}\");\n\n // STRUCTURES\n\n src.push(\"struct IncidentLight {\");\n src.push(\" vec3 color;\");\n src.push(\" vec3 direction;\");\n src.push(\"};\");\n\n src.push(\"struct ReflectedLight {\");\n src.push(\" vec3 diffuse;\");\n src.push(\" vec3 specular;\");\n src.push(\"};\");\n\n src.push(\"struct Geometry {\");\n src.push(\" vec3 position;\");\n src.push(\" vec3 viewNormal;\");\n src.push(\" vec3 worldNormal;\");\n src.push(\" vec3 viewEyeDir;\");\n src.push(\"};\");\n\n src.push(\"struct Material {\");\n src.push(\" vec3 diffuseColor;\");\n src.push(\" float specularRoughness;\");\n src.push(\" vec3 specularColor;\");\n src.push(\" float shine;\"); // Only used for Phong\n src.push(\"};\");\n\n // COMMON UTILS\n\n if (phongMaterial) {\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n\n src.push(\"void computePhongLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\" vec3 irradiance = \" + TEXTURE_DECODE_FUNCS[lightsState.lightMaps[0].encoding] + \"(texture(lightMap, geometry.worldNormal)).rgb;\");\n src.push(\" irradiance *= PI;\");\n src.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\");\n }\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\");\n src.push(\" vec3 radiance = texture(reflectionMap, reflectVec).rgb * 0.2;\");\n src.push(\" radiance *= PI;\");\n src.push(\" reflectedLight.specular += radiance;\");\n }\n src.push(\"}\");\n }\n\n src.push(\"void computePhongLighting(const in IncidentLight directLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n src.push(\" float dotNL = saturate(dot(geometry.viewNormal, directLight.direction));\");\n src.push(\" vec3 irradiance = dotNL * directLight.color * PI;\");\n src.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.specular += directLight.color * material.specularColor * pow(max(dot(reflect(-directLight.direction, -geometry.viewNormal), geometry.viewEyeDir), 0.0), material.shine);\");\n src.push(\"}\");\n }\n\n if (metallicMaterial || specularMaterial) {\n\n // IRRADIANCE EVALUATION\n\n src.push(\"float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {\");\n src.push(\" float r = ggxRoughness + 0.0001;\");\n src.push(\" return (2.0 / (r * r) - 2.0);\");\n src.push(\"}\");\n\n src.push(\"float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float maxMIPLevelScalar = float( maxMIPLevel );\");\n src.push(\" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );\");\n src.push(\" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\");\n src.push(\"}\");\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"); //TODO: a random factor - fix this\n src.push(\" vec3 envMapColor = \" + TEXTURE_DECODE_FUNCS[lightsState.reflectionMaps[0].encoding] + \"(texture(reflectionMap, reflectVec, mipLevel)).rgb;\");\n src.push(\" return envMapColor;\");\n src.push(\"}\");\n }\n\n // SPECULAR BRDF EVALUATION\n\n src.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\");\n src.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\");\n src.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" return 1.0 / ( gl * gv );\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" return 0.5 / max( gv + gl, EPSILON );\");\n src.push(\"}\");\n\n src.push(\"float D_GGX(const in float alpha, const in float dotNH) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\");\n src.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float alpha = ( roughness * roughness );\");\n src.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\");\n src.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\");\n src.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\");\n src.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\");\n src.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\");\n src.push(\" vec3 F = F_Schlick( specularColor, dotLH );\");\n src.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\");\n src.push(\" float D = D_GGX( alpha, dotNH );\");\n src.push(\" return F * (G * D);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\");\n src.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\");\n src.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\");\n src.push(\" vec4 r = roughness * c0 + c1;\");\n src.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\");\n src.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\");\n src.push(\" return specularColor * AB.x + AB.y;\");\n src.push(\"}\");\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n\n src.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n if (lightsState.lightMaps.length > 0) {\n src.push(\" vec3 irradiance = sRGBToLinear(texture(lightMap, geometry.worldNormal)).rgb;\");\n src.push(\" irradiance *= PI;\");\n src.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\");\n // src.push(\" reflectedLight.diffuse = vec3(1.0, 0.0, 0.0);\");\n }\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\");\n src.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\");\n src.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\");\n src.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\");\n src.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\");\n src.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\");\n }\n src.push(\"}\");\n }\n\n // MAIN LIGHTING COMPUTATION FUNCTION\n\n src.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n src.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\");\n src.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\");\n src.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\");\n src.push(\"}\");\n\n } // (metallicMaterial || specularMaterial)\n\n } // geometry.normals\n\n //--------------------------------------------------------------------------------\n // GEOMETRY INPUTS\n //--------------------------------------------------------------------------------\n\n src.push(\"in vec3 vViewPosition;\");\n\n if (geometryState.colors) {\n src.push(\"in vec4 vColor;\");\n }\n\n if (uvs &&\n ((normals && material._normalMap)\n || material._ambientMap\n || material._baseColorMap\n || material._diffuseMap\n || material._emissiveMap\n || material._metallicMap\n || material._roughnessMap\n || material._metallicRoughnessMap\n || material._specularMap\n || material._glossinessMap\n || material._specularGlossinessMap\n || material._occlusionMap\n || material._alphaMap)) {\n src.push(\"in vec2 vUV;\");\n }\n\n if (normals) {\n if (lightsState.lightMaps.length > 0) {\n src.push(\"in vec3 vWorldNormal;\");\n }\n src.push(\"in vec3 vViewNormal;\");\n }\n\n //--------------------------------------------------------------------------------\n // MATERIAL CHANNEL INPUTS\n //--------------------------------------------------------------------------------\n\n if (materialState.ambient) {\n src.push(\"uniform vec3 materialAmbient;\");\n }\n if (materialState.baseColor) {\n src.push(\"uniform vec3 materialBaseColor;\");\n }\n if (materialState.alpha !== undefined && materialState.alpha !== null) {\n src.push(\"uniform vec4 materialAlphaModeCutoff;\"); // [alpha, alphaMode, alphaCutoff]\n }\n if (materialState.emissive) {\n src.push(\"uniform vec3 materialEmissive;\");\n }\n if (materialState.diffuse) {\n src.push(\"uniform vec3 materialDiffuse;\");\n }\n if (materialState.glossiness !== undefined && materialState.glossiness !== null) {\n src.push(\"uniform float materialGlossiness;\");\n }\n if (materialState.shininess !== undefined && materialState.shininess !== null) {\n src.push(\"uniform float materialShininess;\"); // Phong channel\n }\n if (materialState.specular) {\n src.push(\"uniform vec3 materialSpecular;\");\n }\n if (materialState.metallic !== undefined && materialState.metallic !== null) {\n src.push(\"uniform float materialMetallic;\");\n }\n if (materialState.roughness !== undefined && materialState.roughness !== null) {\n src.push(\"uniform float materialRoughness;\");\n }\n if (materialState.specularF0 !== undefined && materialState.specularF0 !== null) {\n src.push(\"uniform float materialSpecularF0;\");\n }\n\n //--------------------------------------------------------------------------------\n // MATERIAL TEXTURE INPUTS\n //--------------------------------------------------------------------------------\n\n if (uvs && material._ambientMap) {\n src.push(\"uniform sampler2D ambientMap;\");\n if (material._ambientMap._state.matrix) {\n src.push(\"uniform mat4 ambientMapMatrix;\");\n }\n }\n if (uvs && material._baseColorMap) {\n src.push(\"uniform sampler2D baseColorMap;\");\n if (material._baseColorMap._state.matrix) {\n src.push(\"uniform mat4 baseColorMapMatrix;\");\n }\n }\n if (uvs && material._diffuseMap) {\n src.push(\"uniform sampler2D diffuseMap;\");\n if (material._diffuseMap._state.matrix) {\n src.push(\"uniform mat4 diffuseMapMatrix;\");\n }\n }\n if (uvs && material._emissiveMap) {\n src.push(\"uniform sampler2D emissiveMap;\");\n if (material._emissiveMap._state.matrix) {\n src.push(\"uniform mat4 emissiveMapMatrix;\");\n }\n }\n if (normals && uvs && material._metallicMap) {\n src.push(\"uniform sampler2D metallicMap;\");\n if (material._metallicMap._state.matrix) {\n src.push(\"uniform mat4 metallicMapMatrix;\");\n }\n }\n if (normals && uvs && material._roughnessMap) {\n src.push(\"uniform sampler2D roughnessMap;\");\n if (material._roughnessMap._state.matrix) {\n src.push(\"uniform mat4 roughnessMapMatrix;\");\n }\n }\n if (normals && uvs && material._metallicRoughnessMap) {\n src.push(\"uniform sampler2D metallicRoughnessMap;\");\n if (material._metallicRoughnessMap._state.matrix) {\n src.push(\"uniform mat4 metallicRoughnessMapMatrix;\");\n }\n }\n if (normals && material._normalMap) {\n src.push(\"uniform sampler2D normalMap;\");\n if (material._normalMap._state.matrix) {\n src.push(\"uniform mat4 normalMapMatrix;\");\n }\n src.push(\"vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\");\n src.push(\" vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\");\n src.push(\" vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\");\n src.push(\" vec2 st0 = dFdx( uv.st );\");\n src.push(\" vec2 st1 = dFdy( uv.st );\");\n src.push(\" vec3 S = normalize( q0 * st1.t - q1 * st0.t );\");\n src.push(\" vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\");\n src.push(\" vec3 N = normalize( surf_norm );\");\n src.push(\" vec3 mapN = texture( normalMap, uv ).xyz * 2.0 - 1.0;\");\n src.push(\" mat3 tsn = mat3( S, T, N );\");\n // src.push(\" mapN *= 3.0;\");\n src.push(\" return normalize( tsn * mapN );\");\n src.push(\"}\");\n }\n if (uvs && material._occlusionMap) {\n src.push(\"uniform sampler2D occlusionMap;\");\n if (material._occlusionMap._state.matrix) {\n src.push(\"uniform mat4 occlusionMapMatrix;\");\n }\n }\n if (uvs && material._alphaMap) {\n src.push(\"uniform sampler2D alphaMap;\");\n if (material._alphaMap._state.matrix) {\n src.push(\"uniform mat4 alphaMapMatrix;\");\n }\n }\n if (normals && uvs && material._specularMap) {\n src.push(\"uniform sampler2D specularMap;\");\n if (material._specularMap._state.matrix) {\n src.push(\"uniform mat4 specularMapMatrix;\");\n }\n }\n if (normals && uvs && material._glossinessMap) {\n src.push(\"uniform sampler2D glossinessMap;\");\n if (material._glossinessMap._state.matrix) {\n src.push(\"uniform mat4 glossinessMapMatrix;\");\n }\n }\n if (normals && uvs && material._specularGlossinessMap) {\n src.push(\"uniform sampler2D materialSpecularGlossinessMap;\");\n if (material._specularGlossinessMap._state.matrix) {\n src.push(\"uniform mat4 materialSpecularGlossinessMapMatrix;\");\n }\n }\n\n //--------------------------------------------------------------------------------\n // MATERIAL FRESNEL INPUTS\n //--------------------------------------------------------------------------------\n\n if (normals && (material._diffuseFresnel ||\n material._specularFresnel ||\n material._alphaFresnel ||\n material._emissiveFresnel ||\n material._reflectivityFresnel)) {\n src.push(\"float fresnel(vec3 eyeDir, vec3 normal, float edgeBias, float centerBias, float power) {\");\n src.push(\" float fr = abs(dot(eyeDir, normal));\");\n src.push(\" float finalFr = clamp((fr - edgeBias) / (centerBias - edgeBias), 0.0, 1.0);\");\n src.push(\" return pow(finalFr, power);\");\n src.push(\"}\");\n if (material._diffuseFresnel) {\n src.push(\"uniform float diffuseFresnelCenterBias;\");\n src.push(\"uniform float diffuseFresnelEdgeBias;\");\n src.push(\"uniform float diffuseFresnelPower;\");\n src.push(\"uniform vec3 diffuseFresnelCenterColor;\");\n src.push(\"uniform vec3 diffuseFresnelEdgeColor;\");\n }\n if (material._specularFresnel) {\n src.push(\"uniform float specularFresnelCenterBias;\");\n src.push(\"uniform float specularFresnelEdgeBias;\");\n src.push(\"uniform float specularFresnelPower;\");\n src.push(\"uniform vec3 specularFresnelCenterColor;\");\n src.push(\"uniform vec3 specularFresnelEdgeColor;\");\n }\n if (material._alphaFresnel) {\n src.push(\"uniform float alphaFresnelCenterBias;\");\n src.push(\"uniform float alphaFresnelEdgeBias;\");\n src.push(\"uniform float alphaFresnelPower;\");\n src.push(\"uniform vec3 alphaFresnelCenterColor;\");\n src.push(\"uniform vec3 alphaFresnelEdgeColor;\");\n }\n if (material._reflectivityFresnel) {\n src.push(\"uniform float materialSpecularF0FresnelCenterBias;\");\n src.push(\"uniform float materialSpecularF0FresnelEdgeBias;\");\n src.push(\"uniform float materialSpecularF0FresnelPower;\");\n src.push(\"uniform vec3 materialSpecularF0FresnelCenterColor;\");\n src.push(\"uniform vec3 materialSpecularF0FresnelEdgeColor;\");\n }\n if (material._emissiveFresnel) {\n src.push(\"uniform float emissiveFresnelCenterBias;\");\n src.push(\"uniform float emissiveFresnelEdgeBias;\");\n src.push(\"uniform float emissiveFresnelPower;\");\n src.push(\"uniform vec3 emissiveFresnelCenterColor;\");\n src.push(\"uniform vec3 emissiveFresnelEdgeColor;\");\n }\n }\n\n //--------------------------------------------------------------------------------\n // LIGHT SOURCES\n //--------------------------------------------------------------------------------\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n if (normals) {\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightAttenuation\" + i + \";\");\n }\n if (light.type === \"dir\" && light.space === \"view\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\" && light.space === \"view\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n } else {\n src.push(\"in vec4 vViewLightReverseDirAndDist\" + i + \";\");\n }\n }\n }\n\n if (receivesShadow) {\n\n // Variance castsShadow mapping filter\n\n // src.push(\"float linstep(float low, float high, float v){\");\n // src.push(\" return clamp((v-low)/(high-low), 0.0, 1.0);\");\n // src.push(\"}\");\n //\n // src.push(\"float VSM(sampler2D depths, vec2 uv, float compare){\");\n // src.push(\" vec2 moments = texture(depths, uv).xy;\");\n // src.push(\" float p = smoothstep(compare-0.02, compare, moments.x);\");\n // src.push(\" float variance = max(moments.y - moments.x*moments.x, -0.001);\");\n // src.push(\" float d = compare - moments.x;\");\n // src.push(\" float p_max = linstep(0.2, 1.0, variance / (variance + d*d));\");\n // src.push(\" return clamp(max(p, p_max), 0.0, 1.0);\");\n // src.push(\"}\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources\n if (lightsState.lights[i].castsShadow) {\n src.push(\"in vec4 vShadowPosFromLight\" + i + \";\");\n src.push(\"uniform sampler2D shadowMap\" + i + \";\");\n }\n }\n }\n\n src.push(\"uniform vec4 colorize;\");\n\n //================================================================================\n // MAIN\n //================================================================================\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n if (solid) {\n src.push(\" if (gl_FrontFacing == false) {\");\n src.push(\" outColor = vec4(1.0, 0.0, 0.0, 1.0);\");\n src.push(\" return;\");\n src.push(\" }\");\n }\n src.push(\"}\");\n }\n\n if (geometryState.primitiveName === \"points\") {\n src.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\"float r = dot(cxy, cxy);\");\n src.push(\"if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\"}\");\n }\n\n src.push(\"float occlusion = 1.0;\");\n\n if (materialState.ambient) {\n src.push(\"vec3 ambientColor = materialAmbient;\");\n } else {\n src.push(\"vec3 ambientColor = vec3(1.0, 1.0, 1.0);\");\n }\n\n if (materialState.diffuse) {\n src.push(\"vec3 diffuseColor = materialDiffuse;\");\n } else if (materialState.baseColor) {\n src.push(\"vec3 diffuseColor = materialBaseColor;\");\n } else {\n src.push(\"vec3 diffuseColor = vec3(1.0, 1.0, 1.0);\");\n }\n\n if (geometryState.colors) {\n src.push(\"diffuseColor *= vColor.rgb;\");\n }\n\n if (materialState.emissive) {\n src.push(\"vec3 emissiveColor = materialEmissive;\"); // Emissive default is (0,0,0), so initializing here\n } else {\n src.push(\"vec3 emissiveColor = vec3(0.0, 0.0, 0.0);\");\n }\n\n if (materialState.specular) {\n src.push(\"vec3 specular = materialSpecular;\");\n } else {\n src.push(\"vec3 specular = vec3(1.0, 1.0, 1.0);\");\n }\n\n if (materialState.alpha !== undefined) {\n src.push(\"float alpha = materialAlphaModeCutoff[0];\");\n } else {\n src.push(\"float alpha = 1.0;\");\n }\n\n if (geometryState.colors) {\n src.push(\"alpha *= vColor.a;\");\n }\n\n if (materialState.glossiness !== undefined) {\n src.push(\"float glossiness = materialGlossiness;\");\n } else {\n src.push(\"float glossiness = 1.0;\");\n }\n\n if (materialState.metallic !== undefined) {\n src.push(\"float metallic = materialMetallic;\");\n } else {\n src.push(\"float metallic = 1.0;\");\n }\n\n if (materialState.roughness !== undefined) {\n src.push(\"float roughness = materialRoughness;\");\n } else {\n src.push(\"float roughness = 1.0;\");\n }\n\n if (materialState.specularF0 !== undefined) {\n src.push(\"float specularF0 = materialSpecularF0;\");\n } else {\n src.push(\"float specularF0 = 1.0;\");\n }\n\n //--------------------------------------------------------------------------------\n // TEXTURING\n //--------------------------------------------------------------------------------\n\n if (uvs && ((normals && material._normalMap)\n || material._ambientMap\n || material._baseColorMap\n || material._diffuseMap\n || material._occlusionMap\n || material._emissiveMap\n || material._metallicMap\n || material._roughnessMap\n || material._metallicRoughnessMap\n || material._specularMap\n || material._glossinessMap\n || material._specularGlossinessMap\n || material._alphaMap)) {\n src.push(\"vec4 texturePos = vec4(vUV.s, vUV.t, 1.0, 1.0);\");\n src.push(\"vec2 textureCoord;\");\n }\n\n if (uvs && material._ambientMap) {\n if (material._ambientMap._state.matrix) {\n src.push(\"textureCoord = (ambientMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 ambientTexel = texture(ambientMap, textureCoord).rgb;\");\n src.push(\"ambientTexel = \" + TEXTURE_DECODE_FUNCS[material._ambientMap._state.encoding] + \"(ambientTexel);\");\n src.push(\"ambientColor *= ambientTexel.rgb;\");\n }\n\n if (uvs && material._diffuseMap) {\n if (material._diffuseMap._state.matrix) {\n src.push(\"textureCoord = (diffuseMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 diffuseTexel = texture(diffuseMap, textureCoord);\");\n src.push(\"diffuseTexel = \" + TEXTURE_DECODE_FUNCS[material._diffuseMap._state.encoding] + \"(diffuseTexel);\");\n src.push(\"diffuseColor *= diffuseTexel.rgb;\");\n src.push(\"alpha *= diffuseTexel.a;\");\n }\n\n if (uvs && material._baseColorMap) {\n if (material._baseColorMap._state.matrix) {\n src.push(\"textureCoord = (baseColorMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 baseColorTexel = texture(baseColorMap, textureCoord);\");\n src.push(\"baseColorTexel = \" + TEXTURE_DECODE_FUNCS[material._baseColorMap._state.encoding] + \"(baseColorTexel);\");\n src.push(\"diffuseColor *= baseColorTexel.rgb;\");\n src.push(\"alpha *= baseColorTexel.a;\");\n }\n\n if (uvs && material._emissiveMap) {\n if (material._emissiveMap._state.matrix) {\n src.push(\"textureCoord = (emissiveMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 emissiveTexel = texture(emissiveMap, textureCoord);\");\n src.push(\"emissiveTexel = \" + TEXTURE_DECODE_FUNCS[material._emissiveMap._state.encoding] + \"(emissiveTexel);\");\n src.push(\"emissiveColor = emissiveTexel.rgb;\");\n }\n\n if (uvs && material._alphaMap) {\n if (material._alphaMap._state.matrix) {\n src.push(\"textureCoord = (alphaMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"alpha *= texture(alphaMap, textureCoord).r;\");\n }\n\n if (uvs && material._occlusionMap) {\n if (material._occlusionMap._state.matrix) {\n src.push(\"textureCoord = (occlusionMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"occlusion *= texture(occlusionMap, textureCoord).r;\");\n }\n\n if (normals && ((lightsState.lights.length > 0) || lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {\n\n //--------------------------------------------------------------------------------\n // SHADING\n //--------------------------------------------------------------------------------\n\n if (uvs && material._normalMap) {\n if (material._normalMap._state.matrix) {\n src.push(\"textureCoord = (normalMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec3 viewNormal = perturbNormal2Arb( vViewPosition, normalize(vViewNormal), textureCoord );\");\n } else {\n src.push(\"vec3 viewNormal = normalize(vViewNormal);\");\n }\n\n if (uvs && material._specularMap) {\n if (material._specularMap._state.matrix) {\n src.push(\"textureCoord = (specularMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"specular *= texture(specularMap, textureCoord).rgb;\");\n }\n\n if (uvs && material._glossinessMap) {\n if (material._glossinessMap._state.matrix) {\n src.push(\"textureCoord = (glossinessMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"glossiness *= texture(glossinessMap, textureCoord).r;\");\n }\n\n if (uvs && material._specularGlossinessMap) {\n if (material._specularGlossinessMap._state.matrix) {\n src.push(\"textureCoord = (materialSpecularGlossinessMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 specGlossRGB = texture(materialSpecularGlossinessMap, textureCoord).rgba;\"); // TODO: what if only RGB texture?\n src.push(\"specular *= specGlossRGB.rgb;\");\n src.push(\"glossiness *= specGlossRGB.a;\");\n }\n\n if (uvs && material._metallicMap) {\n if (material._metallicMap._state.matrix) {\n src.push(\"textureCoord = (metallicMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"metallic *= texture(metallicMap, textureCoord).r;\");\n }\n\n if (uvs && material._roughnessMap) {\n if (material._roughnessMap._state.matrix) {\n src.push(\"textureCoord = (roughnessMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"roughness *= texture(roughnessMap, textureCoord).r;\");\n }\n\n if (uvs && material._metallicRoughnessMap) {\n if (material._metallicRoughnessMap._state.matrix) {\n src.push(\"textureCoord = (metallicRoughnessMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec3 metalRoughRGB = texture(metallicRoughnessMap, textureCoord).rgb;\");\n src.push(\"metallic *= metalRoughRGB.b;\");\n src.push(\"roughness *= metalRoughRGB.g;\");\n }\n\n src.push(\"vec3 viewEyeDir = normalize(-vViewPosition);\");\n\n if (material._diffuseFresnel) {\n src.push(\"float diffuseFresnel = fresnel(viewEyeDir, viewNormal, diffuseFresnelEdgeBias, diffuseFresnelCenterBias, diffuseFresnelPower);\");\n src.push(\"diffuseColor *= mix(diffuseFresnelEdgeColor, diffuseFresnelCenterColor, diffuseFresnel);\");\n }\n if (material._specularFresnel) {\n src.push(\"float specularFresnel = fresnel(viewEyeDir, viewNormal, specularFresnelEdgeBias, specularFresnelCenterBias, specularFresnelPower);\");\n src.push(\"specular *= mix(specularFresnelEdgeColor, specularFresnelCenterColor, specularFresnel);\");\n }\n if (material._alphaFresnel) {\n src.push(\"float alphaFresnel = fresnel(viewEyeDir, viewNormal, alphaFresnelEdgeBias, alphaFresnelCenterBias, alphaFresnelPower);\");\n src.push(\"alpha *= mix(alphaFresnelEdgeColor.r, alphaFresnelCenterColor.r, alphaFresnel);\");\n }\n if (material._emissiveFresnel) {\n src.push(\"float emissiveFresnel = fresnel(viewEyeDir, viewNormal, emissiveFresnelEdgeBias, emissiveFresnelCenterBias, emissiveFresnelPower);\");\n src.push(\"emissiveColor *= mix(emissiveFresnelEdgeColor, emissiveFresnelCenterColor, emissiveFresnel);\");\n }\n\n src.push(\"if (materialAlphaModeCutoff[1] == 1.0 && alpha < materialAlphaModeCutoff[2]) {\"); // ie. (alphaMode == \"mask\" && alpha < alphaCutoff)\n src.push(\" discard;\"); // TODO: Discard earlier within this shader?\n src.push(\"}\");\n\n // PREPARE INPUTS FOR SHADER FUNCTIONS\n\n src.push(\"IncidentLight light;\");\n src.push(\"Material material;\");\n src.push(\"Geometry geometry;\");\n src.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\");\n src.push(\"vec3 viewLightDir;\");\n\n if (phongMaterial) {\n src.push(\"material.diffuseColor = diffuseColor;\");\n src.push(\"material.specularColor = specular;\");\n src.push(\"material.shine = materialShininess;\");\n }\n\n if (specularMaterial) {\n src.push(\"float oneMinusSpecularStrength = 1.0 - max(max(specular.r, specular.g ),specular.b);\"); // Energy conservation\n src.push(\"material.diffuseColor = diffuseColor * oneMinusSpecularStrength;\");\n src.push(\"material.specularRoughness = clamp( 1.0 - glossiness, 0.04, 1.0 );\");\n src.push(\"material.specularColor = specular;\");\n }\n\n if (metallicMaterial) {\n src.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\");\n src.push(\"material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\");\n src.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\");\n src.push(\"material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);\");\n }\n\n src.push(\"geometry.position = vViewPosition;\");\n if (lightsState.lightMaps.length > 0) {\n src.push(\"geometry.worldNormal = normalize(vWorldNormal);\");\n }\n src.push(\"geometry.viewNormal = viewNormal;\");\n src.push(\"geometry.viewEyeDir = viewEyeDir;\");\n\n // ENVIRONMENT AND REFLECTION MAP SHADING\n\n if ((phongMaterial) && (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {\n src.push(\"computePhongLightMapping(geometry, material, reflectedLight);\");\n }\n\n if ((specularMaterial || metallicMaterial) && (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {\n src.push(\"computePBRLightMapping(geometry, material, reflectedLight);\");\n }\n\n // LIGHT SOURCE SHADING\n\n src.push(\"float shadow = 1.0;\");\n\n // if (receivesShadow) {\n //\n // src.push(\"float lightDepth2 = clamp(length(lightPos)/40.0, 0.0, 1.0);\");\n // src.push(\"float illuminated = VSM(sLightDepth, lightUV, lightDepth2);\");\n //\n src.push(\"float shadowAcneRemover = 0.007;\");\n src.push(\"vec3 fragmentDepth;\");\n src.push(\"float texelSize = 1.0 / 1024.0;\");\n src.push(\"float amountInLight = 0.0;\");\n src.push(\"vec3 shadowCoord;\");\n src.push('vec4 rgbaDepth;');\n src.push(\"float depth;\");\n // }\n\n const numShadows = 0;\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n\n const light = lightsState.lights[i];\n\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\" && light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightDir\" + i + \");\");\n } else if (light.type === \"point\" && light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightPos\" + i + \" - vViewPosition);\");\n //src.push(\"tmpVec3 = lightPos\" + i + \".xyz - viewPosition.xyz;\");\n //src.push(\"lightDist = abs(length(tmpVec3));\");\n } else {\n src.push(\"viewLightDir = normalize(vViewLightReverseDirAndDist\" + i + \".xyz);\"); // If normal mapping, the fragment->light vector will be in tangent space\n }\n\n if (receivesShadow && light.castsShadow) {\n\n // if (true) {\n // src.push('shadowCoord = (vShadowPosFromLight' + i + '.xyz/vShadowPosFromLight' + i + '.w)/2.0 + 0.5;');\n // src.push(\"lightDepth2 = clamp(length(vec3[0.0, 20.0, 20.0])/40.0, 0.0, 1.0);\");\n // src.push(\"castsShadow *= VSM(shadowMap' + i + ', shadowCoord, lightDepth2);\");\n // }\n //\n // if (false) {\n //\n // PCF\n\n src.push(\"shadow = 0.0;\");\n\n src.push(\"fragmentDepth = vShadowPosFromLight\" + i + \".xyz;\");\n src.push(\"fragmentDepth.z -= shadowAcneRemover;\");\n src.push(\"for (int x = -3; x <= 3; x++) {\");\n src.push(\" for (int y = -3; y <= 3; y++) {\");\n src.push(\" float texelDepth = unpackDepth(texture(shadowMap\" + i + \", fragmentDepth.xy + vec2(x, y) * texelSize));\");\n src.push(\" if (fragmentDepth.z < texelDepth) {\");\n src.push(\" shadow += 1.0;\");\n src.push(\" }\");\n src.push(\" }\");\n src.push(\"}\");\n\n src.push(\"shadow = shadow / 9.0;\");\n\n src.push(\"light.color = lightColor\" + i + \".rgb * (lightColor\" + i + \".a * shadow);\"); // a is intensity\n //\n // }\n //\n // if (false){\n //\n // src.push(\"shadow = 1.0;\");\n //\n // src.push('shadowCoord = (vShadowPosFromLight' + i + '.xyz/vShadowPosFromLight' + i + '.w)/2.0 + 0.5;');\n //\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture(shadowMap' + i + ', shadowCoord.xy + vec2( -0.94201624, -0.39906216 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture(shadowMap' + i + ', shadowCoord.xy + vec2( 0.94558609, -0.76890725 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture(shadowMap' + i + ', shadowCoord.xy + vec2( -0.094184101, -0.92938870 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture(shadowMap' + i + ', shadowCoord.xy + vec2( 0.34495938, 0.29387760 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n //\n // src.push(\"light.color = lightColor\" + i + \".rgb * (lightColor\" + i + \".a * shadow);\");\n // }\n } else {\n src.push(\"light.color = lightColor\" + i + \".rgb * (lightColor\" + i + \".a );\"); // a is intensity\n }\n\n src.push(\"light.direction = viewLightDir;\");\n\n if (phongMaterial) {\n src.push(\"computePhongLighting(light, geometry, material, reflectedLight);\");\n }\n\n if (specularMaterial || metallicMaterial) {\n src.push(\"computePBRLighting(light, geometry, material, reflectedLight);\");\n }\n }\n\n if (numShadows > 0) {\n //src.push(\"shadow /= \" + (9 * numShadows) + \".0;\");\n }\n\n //src.push(\"reflectedLight.diffuse *= shadow;\");\n\n // COMBINE TERMS\n\n if (phongMaterial) {\n src.push(\"vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * diffuseColor) + ((occlusion * (( reflectedLight.diffuse + reflectedLight.specular)))) + emissiveColor;\");\n\n } else {\n src.push(\"vec3 outgoingLight = (occlusion * (reflectedLight.diffuse)) + (occlusion * reflectedLight.specular) + emissiveColor;\");\n }\n\n } else {\n\n //--------------------------------------------------------------------------------\n // NO SHADING - EMISSIVE and AMBIENT ONLY\n //--------------------------------------------------------------------------------\n\n src.push(\"ambientColor *= (lightAmbient.rgb * lightAmbient.a);\");\n\n src.push(\"vec3 outgoingLight = emissiveColor + ambientColor;\");\n }\n\n src.push(\"vec4 fragColor = vec4(outgoingLight, alpha) * colorize;\");\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"outColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n\n return src;\n}\n\nexport {DrawShaderSource};", @@ -94686,7 +95214,7 @@ "lineNumber": 1 }, { - "__docId__": 4746, + "__docId__": 4764, "kind": "variable", "name": "TEXTURE_DECODE_FUNCS", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94707,7 +95235,7 @@ "ignore": true }, { - "__docId__": 4747, + "__docId__": 4765, "kind": "function", "name": "getReceivesShadow", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94738,7 +95266,7 @@ "ignore": true }, { - "__docId__": 4748, + "__docId__": 4766, "kind": "function", "name": "hasTextures", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94769,7 +95297,7 @@ "ignore": true }, { - "__docId__": 4749, + "__docId__": 4767, "kind": "function", "name": "hasNormals", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94800,7 +95328,7 @@ "ignore": true }, { - "__docId__": 4750, + "__docId__": 4768, "kind": "function", "name": "buildVertexLambert", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94831,7 +95359,7 @@ "ignore": true }, { - "__docId__": 4751, + "__docId__": 4769, "kind": "function", "name": "buildFragmentLambert", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94862,7 +95390,7 @@ "ignore": true }, { - "__docId__": 4752, + "__docId__": 4770, "kind": "function", "name": "buildVertexDraw", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94893,7 +95421,7 @@ "ignore": true }, { - "__docId__": 4753, + "__docId__": 4771, "kind": "function", "name": "buildFragmentDraw", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94924,7 +95452,7 @@ "ignore": true }, { - "__docId__": 4754, + "__docId__": 4772, "kind": "function", "name": "DrawShaderSource", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -94950,7 +95478,7 @@ "return": null }, { - "__docId__": 4755, + "__docId__": 4773, "kind": "file", "name": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nimport {Map} from \"../../utils/Map.js\";\nimport {EmphasisEdgesShaderSource} from \"./EmphasisEdgesShaderSource.js\";\nimport {Program} from \"../../webgl/Program.js\";\nimport {stats} from '../../stats.js';\nimport {math} from \"../../math/math.js\";\nimport {getPlaneRTCPos} from \"../../math/rtcCoords.js\";\n\nconst ids = new Map({});\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nconst EmphasisEdgesRenderer = function (hash, mesh) {\n this.id = ids.addItem({});\n this._hash = hash;\n this._scene = mesh.scene;\n this._useCount = 0;\n this._shaderSource = new EmphasisEdgesShaderSource(mesh);\n this._allocate(mesh);\n};\n\nconst renderers = {};\n\nEmphasisEdgesRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.id,\n mesh.scene.gammaOutput ? \"go\" : \"\", // Gamma input not needed\n mesh.scene._sectionPlanesState.getHash(),\n mesh._geometry._state.compressGeometry ? \"cp\" : \"\",\n mesh._state.hash\n ].join(\";\");\n let renderer = renderers[hash];\n if (!renderer) {\n renderer = new EmphasisEdgesRenderer(hash, mesh);\n renderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nEmphasisEdgesRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n ids.removeItem(this.id);\n if (this._program) {\n this._program.destroy();\n }\n delete renderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nEmphasisEdgesRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nEmphasisEdgesRenderer.prototype.drawMesh = function (frameCtx, mesh, mode) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n let materialState;\n const meshState = mesh._state;\n const geometry = mesh._geometry;\n const geometryState = geometry._state;\n const origin = mesh.origin;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, origin ? frameCtx.getRTCViewMatrix(meshState.originHash, origin) : camera.viewMatrix);\n\n if (meshState.clippable) {\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n }\n\n switch (mode) {\n case 0:\n materialState = mesh._xrayMaterial._state;\n break;\n case 1:\n materialState = mesh._highlightMaterial._state;\n break;\n case 2:\n materialState = mesh._selectedMaterial._state;\n break;\n case 3:\n default:\n materialState = mesh._edgeMaterial._state;\n break;\n }\n\n if (materialState.id !== this._lastMaterialId) {\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n if (frameCtx.lineWidth !== materialState.edgeWidth) {\n gl.lineWidth(materialState.edgeWidth);\n frameCtx.lineWidth = materialState.edgeWidth;\n }\n if (this._uEdgeColor) {\n const edgeColor = materialState.edgeColor;\n const edgeAlpha = materialState.edgeAlpha;\n gl.uniform4f(this._uEdgeColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n }\n this._lastMaterialId = materialState.id;\n }\n\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, meshState.clippable);\n }\n\n gl.uniform3fv(this._uOffset, meshState.offset);\n\n // Bind VBOs\n let indicesBuf;\n if (geometryState.primitive === gl.TRIANGLES) {\n indicesBuf = geometry._getEdgeIndices();\n } else if (geometryState.primitive === gl.LINES) {\n indicesBuf = geometryState.indicesBuf;\n }\n\n if (indicesBuf) {\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frameCtx.bindArray++;\n }\n indicesBuf.bind();\n frameCtx.bindArray++;\n this._lastGeometryId = geometryState.id;\n }\n\n gl.drawElements(gl.LINES, indicesBuf.numItems, indicesBuf.itemType, 0);\n\n frameCtx.drawElements++;\n }\n};\n\nEmphasisEdgesRenderer.prototype._allocate = function (mesh) {\n\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._shaderSource);\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._uEdgeColor = program.getLocation(\"edgeColor\");\n this._aPosition = program.getAttribute(\"position\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n this._uOffset = program.getLocation(\"offset\");\n\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nEmphasisEdgesRenderer.prototype._bindProgram = function (frameCtx) {\n\n const program = this._program;\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const camera = scene.camera;\n const project = camera.project;\n\n program.bind();\n\n frameCtx.useProgram++;\n\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n};\n\nexport {EmphasisEdgesRenderer};\n", @@ -94961,7 +95489,7 @@ "lineNumber": 1 }, { - "__docId__": 4756, + "__docId__": 4774, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -94982,7 +95510,7 @@ "ignore": true }, { - "__docId__": 4757, + "__docId__": 4775, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95003,7 +95531,7 @@ "ignore": true }, { - "__docId__": 4758, + "__docId__": 4776, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95024,7 +95552,7 @@ "ignore": true }, { - "__docId__": 4759, + "__docId__": 4777, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95055,7 +95583,7 @@ "ignore": true }, { - "__docId__": 4760, + "__docId__": 4778, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95075,7 +95603,7 @@ "ignore": true }, { - "__docId__": 4761, + "__docId__": 4779, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95095,7 +95623,7 @@ "ignore": true }, { - "__docId__": 4762, + "__docId__": 4780, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95134,7 +95662,7 @@ "ignore": true }, { - "__docId__": 4763, + "__docId__": 4781, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95161,7 +95689,7 @@ "return": null }, { - "__docId__": 4764, + "__docId__": 4782, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95188,7 +95716,7 @@ "return": null }, { - "__docId__": 4765, + "__docId__": 4783, "kind": "function", "name": "EmphasisEdgesRenderer", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -95220,7 +95748,7 @@ "return": null }, { - "__docId__": 4766, + "__docId__": 4784, "kind": "file", "name": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js", "content": "\n\n/**\n * @private\n */\nclass EmphasisEdgesShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex(mesh);\n this.fragment = buildFragment(mesh);\n }\n}\n\nfunction buildVertex(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Edges drawing vertex shader\");\n src.push(\"in vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec4 edgeColor;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n }\n src.push(\"out vec4 vColor;\");\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\")\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n src.push(\"vColor = edgeColor;\");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment(mesh) {\n\n const scene = mesh.scene;\n const sectionPlanesState = mesh.scene._sectionPlanesState;\n const gammaOutput = mesh.scene.gammaOutput;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Edges drawing fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (gammaOutput) {\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"outColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"outColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n}\n\nexport {EmphasisEdgesShaderSource};", @@ -95231,7 +95759,7 @@ "lineNumber": 1 }, { - "__docId__": 4767, + "__docId__": 4785, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js", @@ -95262,7 +95790,7 @@ "ignore": true }, { - "__docId__": 4768, + "__docId__": 4786, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js", @@ -95293,7 +95821,7 @@ "ignore": true }, { - "__docId__": 4769, + "__docId__": 4787, "kind": "class", "name": "EmphasisEdgesShaderSource", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js", @@ -95309,7 +95837,7 @@ "ignore": true }, { - "__docId__": 4770, + "__docId__": 4788, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js~EmphasisEdgesShaderSource", @@ -95323,7 +95851,7 @@ "undocument": true }, { - "__docId__": 4771, + "__docId__": 4789, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js~EmphasisEdgesShaderSource", @@ -95340,7 +95868,7 @@ } }, { - "__docId__": 4772, + "__docId__": 4790, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js~EmphasisEdgesShaderSource", @@ -95357,7 +95885,7 @@ } }, { - "__docId__": 4773, + "__docId__": 4791, "kind": "file", "name": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nimport {Map} from \"../../utils/Map.js\";\nimport {EmphasisFillShaderSource} from \"./EmphasisFillShaderSource.js\";\nimport {Program} from \"../../webgl/Program.js\";\nimport {stats} from '../../stats.js';\nimport {math} from \"../../math/math.js\";\nimport {getPlaneRTCPos} from \"../../math/rtcCoords.js\";\n\nconst ids = new Map({});\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nconst EmphasisFillRenderer = function (hash, mesh) {\n this.id = ids.addItem({});\n this._hash = hash;\n this._scene = mesh.scene;\n this._useCount = 0;\n this._shaderSource = new EmphasisFillShaderSource(mesh);\n this._allocate(mesh);\n};\n\nconst xrayFillRenderers = {};\n\nEmphasisFillRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.id,\n mesh.scene.gammaOutput ? \"go\" : \"\", // Gamma input not needed\n mesh.scene._sectionPlanesState.getHash(),\n !!mesh._geometry._state.normalsBuf ? \"n\" : \"\",\n mesh._geometry._state.compressGeometry ? \"cp\" : \"\",\n mesh._state.hash\n ].join(\";\");\n let renderer = xrayFillRenderers[hash];\n if (!renderer) {\n renderer = new EmphasisFillRenderer(hash, mesh);\n xrayFillRenderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nEmphasisFillRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n ids.removeItem(this.id);\n if (this._program) {\n this._program.destroy();\n }\n delete xrayFillRenderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nEmphasisFillRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nEmphasisFillRenderer.prototype.drawMesh = function (frameCtx, mesh, mode) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const materialState = mode === 0 ? mesh._xrayMaterial._state : (mode === 1 ? mesh._highlightMaterial._state : mesh._selectedMaterial._state);\n const meshState = mesh._state;\n const geometryState = mesh._geometry._state;\n const origin = mesh.origin;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, origin ? frameCtx.getRTCViewMatrix(meshState.originHash, origin) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n if (meshState.clippable) {\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n }\n\n if (materialState.id !== this._lastMaterialId) {\n const fillColor = materialState.fillColor;\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n gl.uniform4f(this._uFillColor, fillColor[0], fillColor[1], fillColor[2], materialState.fillAlpha);\n this._lastMaterialId = materialState.id;\n }\n\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n if (this._uModelNormalMatrix) {\n gl.uniformMatrix4fv(this._uModelNormalMatrix, gl.FALSE, mesh.worldNormalMatrix);\n }\n\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, meshState.clippable);\n }\n\n gl.uniform3fv(this._uOffset, meshState.offset);\n\n // Bind VBOs\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._uUVDecodeMatrix) {\n gl.uniformMatrix3fv(this._uUVDecodeMatrix, false, geometryState.uvDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf);\n frameCtx.bindArray++;\n }\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(geometryState.normalsBuf);\n frameCtx.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frameCtx.bindArray++;\n // gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n // frameCtx.drawElements++;\n } else if (geometryState.positionsBuf) {\n // gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n // frameCtx.drawArrays++;\n }\n this._lastGeometryId = geometryState.id;\n }\n\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frameCtx.drawElements++;\n } else if (geometryState.positionsBuf) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positionsBuf.numItems);\n frameCtx.drawArrays++;\n }\n};\n\nEmphasisFillRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const lightsState = scene._lightsState;\n const sectionPlanesState = scene._sectionPlanesState;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uModelNormalMatrix = program.getLocation(\"modelNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uLightAmbient = [];\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n switch (light.type) {\n case \"ambient\":\n this._uLightAmbient[i] = program.getLocation(\"lightAmbient\");\n break;\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n this._uSectionPlanes = [];\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._uFillColor = program.getLocation(\"fillColor\");\n this._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n this._uOffset = program.getLocation(\"offset\");\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nEmphasisFillRenderer.prototype._bindProgram = function (frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n const camera = scene.camera;\n const project = camera.project;\n const program = this._program;\n program.bind();\n frameCtx.useProgram++;\n frameCtx.textureUnit = 0;\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n this._lastIndicesBufId = null;\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.normalMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (this._uLightAmbient[i]) {\n gl.uniform4f(this._uLightAmbient[i], light.color[0], light.color[1], light.color[2], light.intensity);\n } else {\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n }\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n};\n\nexport {EmphasisFillRenderer};\n", @@ -95368,7 +95896,7 @@ "lineNumber": 1 }, { - "__docId__": 4774, + "__docId__": 4792, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95389,7 +95917,7 @@ "ignore": true }, { - "__docId__": 4775, + "__docId__": 4793, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95410,7 +95938,7 @@ "ignore": true }, { - "__docId__": 4776, + "__docId__": 4794, "kind": "variable", "name": "xrayFillRenderers", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95431,7 +95959,7 @@ "ignore": true }, { - "__docId__": 4777, + "__docId__": 4795, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95462,7 +95990,7 @@ "ignore": true }, { - "__docId__": 4778, + "__docId__": 4796, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95482,7 +96010,7 @@ "ignore": true }, { - "__docId__": 4779, + "__docId__": 4797, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95502,7 +96030,7 @@ "ignore": true }, { - "__docId__": 4780, + "__docId__": 4798, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95541,7 +96069,7 @@ "ignore": true }, { - "__docId__": 4781, + "__docId__": 4799, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95568,7 +96096,7 @@ "return": null }, { - "__docId__": 4782, + "__docId__": 4800, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95595,7 +96123,7 @@ "return": null }, { - "__docId__": 4783, + "__docId__": 4801, "kind": "function", "name": "EmphasisFillRenderer", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -95627,7 +96155,7 @@ "return": null }, { - "__docId__": 4784, + "__docId__": 4802, "kind": "file", "name": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", "content": "import {WEBGL_INFO} from \"../../webglInfo.js\";\n\n/**\n * @private\n */\nclass EmphasisFillShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex(mesh);\n this.fragment = buildFragment(mesh);\n }\n}\n\nfunction buildVertex(mesh) {\n\n const scene = mesh.scene;\n const lightsState = scene._lightsState;\n const normals = hasNormals(mesh);\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// EmphasisFillShaderSource vertex shader\");\n src.push(\"in vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec4 colorize;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n }\n src.push(\"uniform vec4 lightAmbient;\");\n src.push(\"uniform vec4 fillColor;\");\n if (normals) {\n src.push(\"in vec3 normal;\");\n src.push(\"uniform mat4 modelNormalMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n }\n if (quantizedGeometry) {\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n }\n }\n src.push(\"out vec4 vColor;\");\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n if (normals) {\n if (quantizedGeometry) {\n src.push(\"vec4 localNormal = vec4(octDecode(normal.xy), 0.0); \");\n } else {\n src.push(\"vec4 localNormal = vec4(normal, 0.0); \");\n }\n src.push(\"mat4 modelNormalMatrix2 = modelNormalMatrix;\");\n src.push(\"mat4 viewNormalMatrix2 = viewNormalMatrix;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\")\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n if (normals) {\n src.push(\"mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;\");\n src.push(\"billboard(modelNormalMatrix2);\");\n src.push(\"billboard(viewNormalMatrix2);\");\n src.push(\"billboard(modelViewNormalMatrix);\");\n }\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n if (normals) {\n src.push(\"vec3 viewNormal = normalize((viewNormalMatrix2 * modelNormalMatrix2 * localNormal).xyz);\");\n }\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n src.push(\"float lambertian = 1.0;\");\n if (normals) {\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix2 * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix2 * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n }\n // TODO: A blending mode for emphasis materials, to select add/multiply/mix\n //src.push(\"vColor = vec4((mix(reflectedColor, fillColor.rgb, 0.7)), fillColor.a);\");\n src.push(\"vColor = vec4(reflectedColor * fillColor.rgb, fillColor.a);\");\n //src.push(\"vColor = vec4(reflectedColor + fillColor.rgb, fillColor.a);\");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n if (mesh._geometry._state.primitiveName === \"points\") {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction hasNormals(mesh) {\n const primitive = mesh._geometry._state.primitiveName;\n if ((mesh._geometry._state.autoVertexNormals || mesh._geometry._state.normalsBuf) && (primitive === \"triangles\" || primitive === \"triangle-strip\" || primitive === \"triangle-fan\")) {\n return true;\n }\n return false;\n}\n\nfunction buildFragment(mesh) {\n\n const scene = mesh.scene;\n const sectionPlanesState = mesh.scene._sectionPlanesState;\n const gammaOutput = mesh.scene.gammaOutput;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Lambertian drawing fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (gammaOutput) {\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (mesh._geometry._state.primitiveName === \"points\") {\n src.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\"float r = dot(cxy, cxy);\");\n src.push(\"if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"outColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"outColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n}\n\nexport {EmphasisFillShaderSource};", @@ -95638,7 +96166,7 @@ "lineNumber": 1 }, { - "__docId__": 4785, + "__docId__": 4803, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", @@ -95669,7 +96197,7 @@ "ignore": true }, { - "__docId__": 4786, + "__docId__": 4804, "kind": "function", "name": "hasNormals", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", @@ -95700,7 +96228,7 @@ "ignore": true }, { - "__docId__": 4787, + "__docId__": 4805, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", @@ -95731,7 +96259,7 @@ "ignore": true }, { - "__docId__": 4788, + "__docId__": 4806, "kind": "class", "name": "EmphasisFillShaderSource", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", @@ -95747,7 +96275,7 @@ "ignore": true }, { - "__docId__": 4789, + "__docId__": 4807, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js~EmphasisFillShaderSource", @@ -95761,7 +96289,7 @@ "undocument": true }, { - "__docId__": 4790, + "__docId__": 4808, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js~EmphasisFillShaderSource", @@ -95778,7 +96306,7 @@ } }, { - "__docId__": 4791, + "__docId__": 4809, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js~EmphasisFillShaderSource", @@ -95795,7 +96323,7 @@ } }, { - "__docId__": 4792, + "__docId__": 4810, "kind": "file", "name": "src/viewer/scene/mesh/index.js", "content": "export * from \"./Mesh.js\";\n", @@ -95806,7 +96334,7 @@ "lineNumber": 1 }, { - "__docId__": 4793, + "__docId__": 4811, "kind": "file", "name": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nimport {OcclusionShaderSource} from \"./OcclusionShaderSource.js\";\nimport {Program} from \"../../webgl/Program.js\";\nimport {stats} from \"../../stats.js\";\nimport {math} from \"../../math/math.js\";\nimport {getPlaneRTCPos} from \"../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\n\n// No ID, because there is exactly one PickMeshRenderer per scene\n\n/**\n * @private\n */\nconst OcclusionRenderer = function (hash, mesh) {\n this._hash = hash;\n this._shaderSource = new OcclusionShaderSource(mesh);\n this._scene = mesh.scene;\n this._useCount = 0;\n this._allocate(mesh);\n};\n\nconst renderers = {};\n\nOcclusionRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.canvas.canvas.id,\n mesh.scene._sectionPlanesState.getHash(),\n mesh._geometry._state.hash,\n mesh._state.occlusionHash\n ].join(\";\");\n let renderer = renderers[hash];\n if (!renderer) {\n renderer = new OcclusionRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n renderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nOcclusionRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n if (this._program) {\n this._program.destroy();\n }\n delete renderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nOcclusionRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nOcclusionRenderer.prototype.drawMesh = function (frameCtx, mesh) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const materialState = mesh._material._state;\n const meshState = mesh._state;\n const geometryState = mesh._geometry._state;\n const origin = mesh.origin;\n\n if (materialState.alpha < 1.0) {\n return;\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n if (materialState.id !== this._lastMaterialId) {\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n const frontface = materialState.frontface;\n if (frameCtx.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frameCtx.frontface = frontface;\n }\n this._lastMaterialId = materialState.id;\n }\n\n const camera = scene.camera;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, origin ? frameCtx.getRTCViewMatrix(meshState.originHash, origin) : camera.viewMatrix);\n\n if (meshState.clippable) {\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera._project._state.matrix);\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, mesh._state.clippable);\n }\n\n gl.uniform3fv(this._uOffset, mesh._state.offset);\n\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frameCtx.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frameCtx.bindArray++;\n }\n this._lastGeometryId = geometryState.id;\n }\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frameCtx.drawElements++;\n } else if (geometryState.positions) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n }\n};\n\nOcclusionRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n const clips = scene._sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uOffset = program.getLocation(\"offset\");\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nOcclusionRenderer.prototype._bindProgram = function (frameCtx) {\n const scene = this._scene;\n const project = scene.camera.project;\n const gl = scene.canvas.gl;\n this._program.bind();\n frameCtx.useProgram++;\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nexport {OcclusionRenderer};\n", @@ -95817,7 +96345,7 @@ "lineNumber": 1 }, { - "__docId__": 4794, + "__docId__": 4812, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -95838,7 +96366,7 @@ "ignore": true }, { - "__docId__": 4795, + "__docId__": 4813, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -95859,7 +96387,7 @@ "ignore": true }, { - "__docId__": 4796, + "__docId__": 4814, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -95890,7 +96418,7 @@ "ignore": true }, { - "__docId__": 4797, + "__docId__": 4815, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -95910,7 +96438,7 @@ "ignore": true }, { - "__docId__": 4798, + "__docId__": 4816, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -95930,7 +96458,7 @@ "ignore": true }, { - "__docId__": 4799, + "__docId__": 4817, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -95963,7 +96491,7 @@ "ignore": true }, { - "__docId__": 4800, + "__docId__": 4818, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -95990,7 +96518,7 @@ "return": null }, { - "__docId__": 4801, + "__docId__": 4819, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -96017,7 +96545,7 @@ "return": null }, { - "__docId__": 4802, + "__docId__": 4820, "kind": "function", "name": "OcclusionRenderer", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -96049,7 +96577,7 @@ "return": null }, { - "__docId__": 4803, + "__docId__": 4821, "kind": "file", "name": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nimport {WEBGL_INFO} from \"../../webglInfo.js\";\n\n/**\n * @private\n */\nclass OcclusionShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex(mesh);\n this.fragment = buildFragment(mesh);\n }\n}\n\nfunction buildVertex(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Mesh occlusion vertex shader\");\n src.push(\"in vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\")\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment(mesh) {\n\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Mesh occlusion fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"in vec4 vWorldPosition;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n\n src.push(\" outColor = vec4(0.0, 0.0, 1.0, 1.0); \");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n\n return src;\n}\n\nexport {OcclusionShaderSource};", @@ -96060,7 +96588,7 @@ "lineNumber": 1 }, { - "__docId__": 4804, + "__docId__": 4822, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js", @@ -96091,7 +96619,7 @@ "ignore": true }, { - "__docId__": 4805, + "__docId__": 4823, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js", @@ -96122,7 +96650,7 @@ "ignore": true }, { - "__docId__": 4806, + "__docId__": 4824, "kind": "class", "name": "OcclusionShaderSource", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js", @@ -96138,7 +96666,7 @@ "ignore": true }, { - "__docId__": 4807, + "__docId__": 4825, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js~OcclusionShaderSource", @@ -96152,7 +96680,7 @@ "undocument": true }, { - "__docId__": 4808, + "__docId__": 4826, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js~OcclusionShaderSource", @@ -96169,7 +96697,7 @@ } }, { - "__docId__": 4809, + "__docId__": 4827, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js~OcclusionShaderSource", @@ -96186,7 +96714,7 @@ } }, { - "__docId__": 4810, + "__docId__": 4828, "kind": "file", "name": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nimport {PickMeshShaderSource} from \"./PickMeshShaderSource.js\";\nimport {Program} from \"../../webgl/Program.js\";\nimport {stats} from \"../../stats.js\";\nimport {math} from \"../../math/math.js\";\nimport {getPlaneRTCPos} from \"../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\n\n// No ID, because there is exactly one PickMeshRenderer per scene\n\n/**\n * @private\n */\nconst PickMeshRenderer = function (hash, mesh) {\n this._hash = hash;\n this._shaderSource = new PickMeshShaderSource(mesh);\n this._scene = mesh.scene;\n this._useCount = 0;\n this._allocate(mesh);\n};\n\nconst renderers = {};\n\nPickMeshRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.canvas.canvas.id,\n mesh.scene._sectionPlanesState.getHash(),\n mesh._geometry._state.hash,\n mesh._state.hash\n ].join(\";\");\n let renderer = renderers[hash];\n if (!renderer) {\n renderer = new PickMeshRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n renderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nPickMeshRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n if (this._program) {\n this._program.destroy();\n }\n delete renderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nPickMeshRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nPickMeshRenderer.prototype.drawMesh = function (frameCtx, mesh) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const meshState = mesh._state;\n const materialState = mesh._material._state;\n const geometryState = mesh._geometry._state;\n const origin = mesh.origin;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, origin ? frameCtx.getRTCPickViewMatrix(meshState.originHash, origin) : frameCtx.pickViewMatrix);\n\n if (meshState.clippable) {\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n }\n\n if (materialState.id !== this._lastMaterialId) {\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n const frontface = materialState.frontface;\n if (frameCtx.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frameCtx.frontface = frontface;\n }\n this._lastMaterialId = materialState.id;\n }\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n gl.uniformMatrix4fv(this._uModelMatrix, false, mesh.worldMatrix);\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, mesh._state.clippable);\n }\n gl.uniform3fv(this._uOffset, mesh._state.offset);\n\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frameCtx.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frameCtx.bindArray++;\n }\n this._lastGeometryId = geometryState.id;\n }\n\n // Mesh-indexed color\n var pickID = mesh._state.pickID;\n const a = pickID >> 24 & 0xFF;\n const b = pickID >> 16 & 0xFF;\n const g = pickID >> 8 & 0xFF;\n const r = pickID & 0xFF;\n gl.uniform4f(this._uPickColor, r / 255, g / 255, b / 255, a / 255);\n\n gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);\n\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frameCtx.drawElements++;\n } else if (geometryState.positions) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n }\n};\n\nPickMeshRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n const clips = scene._sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uPickColor = program.getLocation(\"pickColor\");\n this._uPickClipPos = program.getLocation(\"pickClipPos\");\n this._uOffset = program.getLocation(\"offset\");\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._lastMaterialId = null;\n this._lastGeometryId = null;\n};\n\nPickMeshRenderer.prototype._bindProgram = function (frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n this._program.bind();\n frameCtx.useProgram++;\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n this._lastMaterialId = null;\n this._lastGeometryId = null;\n};\n\nexport {PickMeshRenderer};\n", @@ -96197,7 +96725,7 @@ "lineNumber": 1 }, { - "__docId__": 4811, + "__docId__": 4829, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96218,7 +96746,7 @@ "ignore": true }, { - "__docId__": 4812, + "__docId__": 4830, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96239,7 +96767,7 @@ "ignore": true }, { - "__docId__": 4813, + "__docId__": 4831, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96270,7 +96798,7 @@ "ignore": true }, { - "__docId__": 4814, + "__docId__": 4832, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96290,7 +96818,7 @@ "ignore": true }, { - "__docId__": 4815, + "__docId__": 4833, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96310,7 +96838,7 @@ "ignore": true }, { - "__docId__": 4816, + "__docId__": 4834, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96343,7 +96871,7 @@ "ignore": true }, { - "__docId__": 4817, + "__docId__": 4835, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96370,7 +96898,7 @@ "return": null }, { - "__docId__": 4818, + "__docId__": 4836, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96397,7 +96925,7 @@ "return": null }, { - "__docId__": 4819, + "__docId__": 4837, "kind": "function", "name": "PickMeshRenderer", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -96429,7 +96957,7 @@ "return": null }, { - "__docId__": 4820, + "__docId__": 4838, "kind": "file", "name": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\n/**\n * @private\n */\nclass PickMeshShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex(mesh);\n this.fragment = buildFragment(mesh);\n }\n}\n\nfunction buildVertex(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Mesh picking vertex shader\");\n src.push(\"in vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n\n src.push(\"uniform vec2 pickClipPos;\");\n\n src.push(\"vec4 remapClipPos(vec4 clipPos) {\");\n src.push(\" clipPos.xy /= clipPos.w;\")\n src.push(\" clipPos.xy -= pickClipPos;\");\n src.push(\" clipPos.xy *= clipPos.w;\")\n src.push(\" return clipPos;\")\n src.push(\"}\");\n\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\")\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n }\n src.push(\" vec4 worldPosition = modelMatrix2 * localPosition;\");\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\" vec4 viewPosition = viewMatrix2 * worldPosition;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Mesh picking fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform vec4 pickColor;\");\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"in vec4 vWorldPosition;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = pickColor; \");\n src.push(\"}\");\n return src;\n}\n\nexport {PickMeshShaderSource};", @@ -96440,7 +96968,7 @@ "lineNumber": 1 }, { - "__docId__": 4821, + "__docId__": 4839, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js", @@ -96471,7 +96999,7 @@ "ignore": true }, { - "__docId__": 4822, + "__docId__": 4840, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js", @@ -96502,7 +97030,7 @@ "ignore": true }, { - "__docId__": 4823, + "__docId__": 4841, "kind": "class", "name": "PickMeshShaderSource", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js", @@ -96518,7 +97046,7 @@ "ignore": true }, { - "__docId__": 4824, + "__docId__": 4842, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js~PickMeshShaderSource", @@ -96532,7 +97060,7 @@ "undocument": true }, { - "__docId__": 4825, + "__docId__": 4843, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js~PickMeshShaderSource", @@ -96549,7 +97077,7 @@ } }, { - "__docId__": 4826, + "__docId__": 4844, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js~PickMeshShaderSource", @@ -96566,7 +97094,7 @@ } }, { - "__docId__": 4827, + "__docId__": 4845, "kind": "file", "name": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nimport {PickTriangleShaderSource} from \"./PickTriangleShaderSource.js\";\nimport {Program} from \"../../webgl/Program.js\";\nimport {stats} from \"../../stats.js\";\nimport {getPlaneRTCPos} from \"../../math/rtcCoords.js\";\nimport {math} from \"../../math/math.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nconst PickTriangleRenderer = function (hash, mesh) {\n this._hash = hash;\n this._scene = mesh.scene;\n this._useCount = 0;\n this._shaderSource = new PickTriangleShaderSource(mesh);\n this._allocate(mesh);\n};\n\nconst renderers = {};\n\nPickTriangleRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.canvas.canvas.id,\n mesh.scene._sectionPlanesState.getHash(),\n mesh._geometry._state.compressGeometry ? \"cp\" : \"\",\n mesh._state.hash\n ].join(\";\");\n let renderer = renderers[hash];\n if (!renderer) {\n renderer = new PickTriangleRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n renderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nPickTriangleRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n if (this._program) {\n this._program.destroy();\n }\n delete renderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nPickTriangleRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nPickTriangleRenderer.prototype.drawMesh = function (frameCtx, mesh) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const meshState = mesh._state;\n const materialState = mesh._material._state;\n const geometry = mesh._geometry;\n const geometryState = mesh._geometry._state;\n const origin = mesh.origin;\n const backfaces = materialState.backfaces;\n const frontface = materialState.frontface;\n const project = scene.camera.project;\n const positionsBuf = geometry._getPickTrianglePositions();\n const pickColorsBuf = geometry._getPickTriangleColors();\n\n this._program.bind();\n\n frameCtx.useProgram++;\n\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, origin ? frameCtx.getRTCPickViewMatrix(meshState.originHash, origin) : frameCtx.pickViewMatrix);\n\n if (meshState.clippable) {\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n gl.uniform1f(this._uZFar, scene.camera.project.far);\n }\n\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n if (frameCtx.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frameCtx.frontface = frontface;\n }\n\n gl.uniformMatrix4fv(this._uModelMatrix, false, mesh.worldMatrix);\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, mesh._state.clippable);\n }\n gl.uniform3fv(this._uOffset, mesh._state.offset);\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n this._aPosition.bindArrayBuffer(positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n } else {\n this._aPosition.bindArrayBuffer(positionsBuf);\n }\n\n gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);\n\n pickColorsBuf.bind();\n gl.enableVertexAttribArray(this._aColor.location);\n gl.vertexAttribPointer(this._aColor.location, pickColorsBuf.itemSize, pickColorsBuf.itemType, true, 0, 0); // Normalize\n gl.drawArrays(geometryState.primitive, 0, positionsBuf.numItems / 3);\n};\n\nPickTriangleRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n this._useCount = 0;\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n for (let i = 0, len = sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._uPickClipPos = program.getLocation(\"pickClipPos\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uOffset = program.getLocation(\"offset\");\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n};\n\nexport {PickTriangleRenderer};\n\n\n\n", @@ -96577,7 +97105,7 @@ "lineNumber": 1 }, { - "__docId__": 4828, + "__docId__": 4846, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -96598,7 +97126,7 @@ "ignore": true }, { - "__docId__": 4829, + "__docId__": 4847, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -96619,7 +97147,7 @@ "ignore": true }, { - "__docId__": 4830, + "__docId__": 4848, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -96650,7 +97178,7 @@ "ignore": true }, { - "__docId__": 4831, + "__docId__": 4849, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -96670,7 +97198,7 @@ "ignore": true }, { - "__docId__": 4832, + "__docId__": 4850, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -96690,7 +97218,7 @@ "ignore": true }, { - "__docId__": 4833, + "__docId__": 4851, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -96723,7 +97251,7 @@ "ignore": true }, { - "__docId__": 4834, + "__docId__": 4852, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -96750,7 +97278,7 @@ "return": null }, { - "__docId__": 4835, + "__docId__": 4853, "kind": "function", "name": "PickTriangleRenderer", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -96782,7 +97310,7 @@ "return": null }, { - "__docId__": 4836, + "__docId__": 4854, "kind": "file", "name": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js", "content": "/**\n * @private\n */\n\nclass PickTriangleShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex(mesh);\n this.fragment = buildFragment(mesh);\n }\n}\n\nfunction buildVertex(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Surface picking vertex shader\");\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec3 offset;\");\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"out vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"uniform vec2 pickClipPos;\");\n\n src.push(\"vec4 remapClipPos(vec4 clipPos) {\");\n src.push(\" clipPos.xy /= clipPos.w;\")\n src.push(\" clipPos.xy -= pickClipPos;\");\n src.push(\" clipPos.xy *= clipPos.w;\")\n src.push(\" return clipPos;\")\n src.push(\"}\");\n\n src.push(\"out vec4 vColor;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\" vec4 worldPosition = modelMatrix * localPosition; \");\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\" vColor = color;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Surface picking fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n src.push(\"in vec4 vColor;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"in vec4 vWorldPosition;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vColor;\");\n src.push(\"}\");\n return src;\n}\n\nexport {PickTriangleShaderSource};", @@ -96793,7 +97321,7 @@ "lineNumber": 1 }, { - "__docId__": 4837, + "__docId__": 4855, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js", @@ -96824,7 +97352,7 @@ "ignore": true }, { - "__docId__": 4838, + "__docId__": 4856, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js", @@ -96855,7 +97383,7 @@ "ignore": true }, { - "__docId__": 4839, + "__docId__": 4857, "kind": "class", "name": "PickTriangleShaderSource", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js", @@ -96871,7 +97399,7 @@ "ignore": true }, { - "__docId__": 4840, + "__docId__": 4858, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource", @@ -96885,7 +97413,7 @@ "undocument": true }, { - "__docId__": 4841, + "__docId__": 4859, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource", @@ -96902,7 +97430,7 @@ } }, { - "__docId__": 4842, + "__docId__": 4860, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource", @@ -96919,7 +97447,7 @@ } }, { - "__docId__": 4843, + "__docId__": 4861, "kind": "file", "name": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", "content": "import {ShadowShaderSource} from \"./ShadowShaderSource.js\";\nimport {Program} from \"../../webgl/Program.js\";\nimport {stats} from \"../../stats.js\";\n\n/**\n * @private\n */\nconst ShadowRenderer = function (hash, mesh) {\n this._hash = hash;\n this._shaderSource = new ShadowShaderSource(mesh);\n this._scene = mesh.scene;\n this._useCount = 0;\n this._allocate(mesh);\n};\n\nconst renderers = {};\n\nShadowRenderer.get = function (mesh) {\n const scene = mesh.scene;\n const hash = [scene.canvas.canvas.id, scene._sectionPlanesState.getHash(), mesh._geometry._state.hash, mesh._state.hash].join(\";\");\n let renderer = renderers[hash];\n if (!renderer) {\n renderer = new ShadowRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n renderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nShadowRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n if (this._program) {\n this._program.destroy();\n }\n delete renderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nShadowRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nShadowRenderer.prototype.drawMesh = function (frame, mesh) {\n if (!this._program) {\n this._allocate(mesh);\n }\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const materialState = mesh._material._state;\n const geometryState = mesh._geometry._state;\n if (frame.lastProgramId !== this._program.id) {\n frame.lastProgramId = this._program.id;\n this._bindProgram(frame);\n }\n if (materialState.id !== this._lastMaterialId) {\n const backfaces = materialState.backfaces;\n if (frame.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frame.backfaces = backfaces;\n }\n const frontface = materialState.frontface;\n if (frame.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frame.frontface = frontface;\n }\n if (frame.lineWidth !== materialState.lineWidth) {\n gl.lineWidth(materialState.lineWidth);\n frame.lineWidth = materialState.lineWidth;\n }\n if (this._uPointSize) {\n gl.uniform1i(this._uPointSize, materialState.pointSize);\n }\n this._lastMaterialId = materialState.id;\n }\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n if (geometryState.combineGeometry) {\n const vertexBufs = mesh.vertexBufs;\n if (vertexBufs.id !== this._lastVertexBufsId) {\n if (vertexBufs.positionsBuf && this._aPosition) {\n this._aPosition.bindArrayBuffer(vertexBufs.positionsBuf, vertexBufs.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frame.bindArray++;\n }\n this._lastVertexBufsId = vertexBufs.id;\n }\n }\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, mesh._state.clippable);\n }\n gl.uniform3fv(this._uOffset, mesh._state.offset);\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (geometryState.combineGeometry) { // VBOs were bound by the preceding VertexBufs chunk\n if (geometryState.indicesBufCombined) {\n geometryState.indicesBufCombined.bind();\n frame.bindArray++;\n }\n } else {\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frame.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frame.bindArray++;\n }\n }\n this._lastGeometryId = geometryState.id;\n }\n if (geometryState.combineGeometry) {\n if (geometryState.indicesBufCombined) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBufCombined.numItems, geometryState.indicesBufCombined.itemType, 0);\n frame.drawElements++;\n } else {\n // TODO: drawArrays() with VertexBufs positions\n }\n } else {\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frame.drawElements++;\n } else if (geometryState.positions) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n frame.drawArrays++;\n }\n }\n};\n\nShadowRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n this._scene = scene;\n this._useCount = 0;\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n this._uSectionPlanes = {};\n const clips = scene._sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uOffset = program.getLocation(\"offset\");\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nShadowRenderer.prototype._bindProgram = function (frame) {\n if (!this._program) {\n this._allocate(mesh);\n }\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program.bind();\n frame.useProgram++;\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frame.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frame.shadowProjMatrix);\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n if (sectionPlanesState.getNumAllocatedSectionPlanes() > 0) {\n let sectionPlaneUniforms;\n let uSectionPlaneActive;\n let sectionPlane;\n let uSectionPlanePos;\n let uSectionPlaneDir;\n for (let i = 0, len = this._uSectionPlanes.length; i < len; i++) {\n sectionPlaneUniforms = this._uSectionPlanes[i];\n uSectionPlaneActive = sectionPlaneUniforms.active;\n sectionPlane = sectionPlanesState.sectionPlanes[i];\n if (uSectionPlaneActive) {\n gl.uniform1i(uSectionPlaneActive, sectionPlane.active);\n }\n uSectionPlanePos = sectionPlaneUniforms.pos;\n if (uSectionPlanePos) {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n uSectionPlaneDir = sectionPlaneUniforms.dir;\n if (uSectionPlaneDir) {\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n};\n\nexport {ShadowRenderer};\n", @@ -96930,7 +97458,7 @@ "lineNumber": 1 }, { - "__docId__": 4844, + "__docId__": 4862, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -96951,7 +97479,7 @@ "ignore": true }, { - "__docId__": 4845, + "__docId__": 4863, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -96982,7 +97510,7 @@ "ignore": true }, { - "__docId__": 4846, + "__docId__": 4864, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -97002,7 +97530,7 @@ "ignore": true }, { - "__docId__": 4847, + "__docId__": 4865, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -97022,7 +97550,7 @@ "ignore": true }, { - "__docId__": 4848, + "__docId__": 4866, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -97055,7 +97583,7 @@ "ignore": true }, { - "__docId__": 4849, + "__docId__": 4867, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -97082,7 +97610,7 @@ "return": null }, { - "__docId__": 4850, + "__docId__": 4868, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -97109,7 +97637,7 @@ "return": null }, { - "__docId__": 4851, + "__docId__": 4869, "kind": "function", "name": "ShadowRenderer", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -97141,7 +97669,7 @@ "return": null }, { - "__docId__": 4852, + "__docId__": 4870, "kind": "file", "name": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js", "content": "/**\n * @private\n */\nclass ShadowShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex(mesh);\n this.fragment = buildFragment(mesh);\n }\n}\n\nfunction buildVertex(mesh) {\n const scene = mesh.scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const src = [];\n src.push(\"// Mesh shadow vertex shader\");\n src.push(\"in vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\"worldPosition = modelMatrix * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment(mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"// Mesh shadow fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"in vec4 vWorldPosition;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"vec4 encodeFloat( const in float depth ) {\");\n src.push(\" const vec4 bitShift = vec4(256 * 256 * 256, 256 * 256, 256, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\");\n src.push(\" vec4 comp = fract(depth * bitShift);\");\n src.push(\" comp -= comp.xxyz * bitMask;\");\n src.push(\" return comp;\");\n src.push(\"}\");\n\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\"outColor = encodeFloat(gl_FragCoord.z);\");\n src.push(\"}\");\n return src;\n}\n\nexport {ShadowShaderSource};", @@ -97152,7 +97680,7 @@ "lineNumber": 1 }, { - "__docId__": 4853, + "__docId__": 4871, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js", @@ -97183,7 +97711,7 @@ "ignore": true }, { - "__docId__": 4854, + "__docId__": 4872, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js", @@ -97214,7 +97742,7 @@ "ignore": true }, { - "__docId__": 4855, + "__docId__": 4873, "kind": "class", "name": "ShadowShaderSource", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js", @@ -97230,7 +97758,7 @@ "ignore": true }, { - "__docId__": 4856, + "__docId__": 4874, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js~ShadowShaderSource", @@ -97244,7 +97772,7 @@ "undocument": true }, { - "__docId__": 4857, + "__docId__": 4875, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js~ShadowShaderSource", @@ -97261,7 +97789,7 @@ } }, { - "__docId__": 4858, + "__docId__": 4876, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js~ShadowShaderSource", @@ -97278,7 +97806,7 @@ } }, { - "__docId__": 4859, + "__docId__": 4877, "kind": "file", "name": "src/viewer/scene/metriqs/Metriqs.js", "content": "//----------------------------------------------------------------------------------------------------------------------\n// This file is named \"Metriqs.js\" because \"Metrics.js\" is blocked by uBlock Origin (https://en.wikipedia.org/wiki/UBlock_Origin)\n//----------------------------------------------------------------------------------------------------------------------\n\nimport {Component} from \"../Component.js\";\nimport {math} from \"../math/math.js\";\n\nconst unitsInfo = {\n meters: {\n abbrev: \"m\"\n },\n metres: {\n abbrev: \"m\"\n },\n centimeters: {\n abbrev: \"cm\"\n },\n centimetres: {\n abbrev: \"cm\"\n },\n millimeters: {\n abbrev: \"mm\"\n },\n millimetres: {\n abbrev: \"mm\"\n },\n yards: {\n abbrev: \"yd\"\n },\n feet: {\n abbrev: \"ft\"\n },\n inches: {\n abbrev: \"in\"\n }\n};\n\n/**\n * @desc Configures its {@link Scene}'s measurement unit and mapping between the Real-space and World-space 3D Cartesian coordinate systems.\n *\n *\n * ## Overview\n *\n * * Located at {@link Scene#metrics}.\n * * {@link Metrics#units} configures the Real-space unit type, which is ````\"meters\"```` by default.\n * * {@link Metrics#scale} configures the number of Real-space units represented by each unit within the World-space 3D coordinate system. This is ````1.0```` by default.\n * * {@link Metrics#origin} configures the 3D Real-space origin, in current Real-space units, at which this {@link Scene}'s World-space coordinate origin sits, This is ````[0,0,0]```` by default.\n *\n * ## Usage\n *\n * Let's load a model using an {@link XKTLoaderPlugin}, then configure the Real-space unit type and the coordinate\n * mapping between the Real-space and World-space 3D coordinate systems.\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [-2.37, 18.97, -26.12];\n * viewer.scene.camera.look = [10.97, 5.82, -11.22];\n * viewer.scene.camera.up = [0.36, 0.83, 0.40];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * const metrics = viewer.scene.metrics;\n *\n * metrics.units = \"meters\";\n * metrics.scale = 10.0;\n * metrics.origin = [100.0, 0.0, 200.0];\n * ````\n */\nclass Metrics extends Component {\n\n /**\n * @constructor\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._units = \"meters\";\n this._scale = 1.0;\n this._origin = math.vec3([0, 0, 0]);\n\n this.units = cfg.units;\n this.scale = cfg.scale;\n this.origin = cfg.origin;\n }\n\n /**\n * Gets info about the supported Real-space unit types.\n *\n * This will be:\n *\n * ````javascript\n * {\n * {\n * meters: {\n * abbrev: \"m\"\n * },\n * metres: {\n * abbrev: \"m\"\n * },\n * centimeters: {\n * abbrev: \"cm\"\n * },\n * centimetres: {\n * abbrev: \"cm\"\n * },\n * millimeters: {\n * abbrev: \"mm\"\n * },\n * millimetres: {\n * abbrev: \"mm\"\n * },\n * yards: {\n * abbrev: \"yd\"\n * },\n * feet: {\n * abbrev: \"ft\"\n * },\n * inches: {\n * abbrev: \"in\"\n * }\n * }\n * }\n * ````\n *\n * @type {*}\n */\n get unitsInfo() {\n return unitsInfo;\n }\n\n /**\n * Sets the {@link Scene}'s Real-space unit type.\n *\n * Accepted values are ````\"meters\"````, ````\"centimeters\"````, ````\"millimeters\"````, ````\"metres\"````, ````\"centimetres\"````, ````\"millimetres\"````, ````\"yards\"````, ````\"feet\"```` and ````\"inches\"````.\n *\n * @emits ````\"units\"```` event on change, with the value of this property.\n * @type {String}\n */\n set units(value) {\n if (!value) {\n value = \"meters\";\n }\n const info = unitsInfo[value];\n if (!info) {\n this.error(\"Unsupported value for 'units': \" + value + \" defaulting to 'meters'\");\n value = \"meters\";\n }\n this._units = value;\n this.fire(\"units\", this._units);\n }\n\n /**\n * Gets the {@link Scene}'s Real-space unit type.\n *\n * @type {String}\n */\n get units() {\n return this._units;\n }\n\n /**\n * Sets the number of Real-space units represented by each unit of the {@link Scene}'s World-space coordinate system.\n *\n * For example, if {@link Metrics#units} is ````\"meters\"````, and there are ten meters per World-space coordinate system unit, then ````scale```` would have a value of ````10.0````.\n *\n * @emits ````\"scale\"```` event on change, with the value of this property.\n * @type {Number}\n */\n set scale(value) {\n value = value || 1;\n if (value <= 0) {\n this.error(\"scale value should be larger than zero\");\n return;\n }\n this._scale = value;\n this.fire(\"scale\", this._scale);\n }\n\n /**\n * Gets the number of Real-space units represented by each unit of the {@link Scene}'s World-space coordinate system.\n *\n * @type {Number}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the Real-space 3D origin, in Real-space units, at which this {@link Scene}'s World-space coordinate origin ````[0,0,0]```` sits.\n *\n * @emits \"origin\" event on change, with the value of this property.\n * @type {Number[]}\n */\n set origin(value) {\n if (!value) {\n this._origin[0] = 0;\n this._origin[1] = 0;\n this._origin[2] = 0;\n return;\n }\n this._origin[0] = value[0];\n this._origin[1] = value[1];\n this._origin[2] = value[2];\n this.fire(\"origin\", this._origin);\n }\n\n /**\n * Gets the 3D Real-space origin, in Real-space units, at which this {@link Scene}'s World-space coordinate origin ````[0,0,0]```` sits.\n *\n * @type {Number[]}\n */\n get origin() {\n return this._origin;\n }\n\n /**\n * Converts a 3D position from World-space to Real-space.\n *\n * This is equivalent to ````realPos = #origin + (worldPos * #scale)````.\n *\n * @param {Number[]} worldPos World-space 3D position, in World coordinate system units.\n * @param {Number[]} [realPos] Destination for Real-space 3D position.\n * @returns {Number[]} Real-space 3D position, in units indicated by {@link Metrics#units}.\n */\n worldToRealPos(worldPos, realPos = math.vec3(3)) {\n realPos[0] = this._origin[0] + (this._scale * worldPos[0]);\n realPos[1] = this._origin[1] + (this._scale * worldPos[1]);\n realPos[2] = this._origin[2] + (this._scale * worldPos[2]);\n }\n\n /**\n * Converts a 3D position from Real-space to World-space.\n *\n * This is equivalent to ````worldPos = (worldPos - #origin) / #scale````.\n *\n * @param {Number[]} realPos Real-space 3D position.\n * @param {Number[]} [worldPos] Destination for World-space 3D position.\n * @returns {Number[]} World-space 3D position.\n */\n realToWorldPos(realPos, worldPos = math.vec3(3)) {\n worldPos[0] = (realPos[0] - this._origin[0]) / this._scale;\n worldPos[1] = (realPos[1] - this._origin[1]) / this._scale;\n worldPos[2] = (realPos[2] - this._origin[2]) / this._scale;\n return worldPos;\n }\n}\n\nexport {Metrics};", @@ -97289,7 +97817,7 @@ "lineNumber": 1 }, { - "__docId__": 4860, + "__docId__": 4878, "kind": "variable", "name": "unitsInfo", "memberof": "src/viewer/scene/metriqs/Metriqs.js", @@ -97310,7 +97838,7 @@ "ignore": true }, { - "__docId__": 4861, + "__docId__": 4879, "kind": "class", "name": "Metrics", "memberof": "src/viewer/scene/metriqs/Metriqs.js", @@ -97328,7 +97856,7 @@ ] }, { - "__docId__": 4862, + "__docId__": 4880, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97348,7 +97876,7 @@ "ignore": true }, { - "__docId__": 4863, + "__docId__": 4881, "kind": "member", "name": "_units", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97366,7 +97894,7 @@ } }, { - "__docId__": 4864, + "__docId__": 4882, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97384,7 +97912,7 @@ } }, { - "__docId__": 4865, + "__docId__": 4883, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97402,7 +97930,7 @@ } }, { - "__docId__": 4869, + "__docId__": 4887, "kind": "get", "name": "unitsInfo", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97423,7 +97951,7 @@ } }, { - "__docId__": 4870, + "__docId__": 4888, "kind": "set", "name": "units", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97452,7 +97980,7 @@ ] }, { - "__docId__": 4872, + "__docId__": 4890, "kind": "get", "name": "units", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97473,7 +98001,7 @@ } }, { - "__docId__": 4873, + "__docId__": 4891, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97502,7 +98030,7 @@ ] }, { - "__docId__": 4875, + "__docId__": 4893, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97523,7 +98051,7 @@ } }, { - "__docId__": 4876, + "__docId__": 4894, "kind": "set", "name": "origin", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97552,7 +98080,7 @@ ] }, { - "__docId__": 4877, + "__docId__": 4895, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97573,7 +98101,7 @@ } }, { - "__docId__": 4878, + "__docId__": 4896, "kind": "method", "name": "worldToRealPos", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97622,7 +98150,7 @@ } }, { - "__docId__": 4879, + "__docId__": 4897, "kind": "method", "name": "realToWorldPos", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -97671,7 +98199,7 @@ } }, { - "__docId__": 4880, + "__docId__": 4898, "kind": "file", "name": "src/viewer/scene/model/ENTITY_FLAGS.js", "content": "/**\n * @private\n * @type {{PICKABLE: number, CLIPPABLE: number, BACKFACES: number, VISIBLE: number, SELECTED: number, OUTLINED: number, CULLED: number, RECEIVE_SHADOW: number, COLLIDABLE: number, XRAYED: number, CAST_SHADOW: number, EDGES: number, HIGHLIGHTED: number}}\n */\nconst ENTITY_FLAGS = {\n VISIBLE: 1,\n CULLED: 1 << 2,\n PICKABLE: 1 << 3,\n CLIPPABLE: 1 << 4,\n COLLIDABLE: 1 << 5,\n CAST_SHADOW: 1 << 6,\n RECEIVE_SHADOW: 1 << 7,\n XRAYED: 1 << 8,\n HIGHLIGHTED: 1 << 9,\n SELECTED: 1 << 10,\n EDGES: 1 << 11,\n BACKFACES: 1 << 12,\n TRANSPARENT: 1 << 13\n};\n\nexport {ENTITY_FLAGS};", @@ -97682,7 +98210,7 @@ "lineNumber": 1 }, { - "__docId__": 4881, + "__docId__": 4899, "kind": "variable", "name": "ENTITY_FLAGS", "memberof": "src/viewer/scene/model/ENTITY_FLAGS.js", @@ -97705,7 +98233,7 @@ "ignore": true }, { - "__docId__": 4882, + "__docId__": 4900, "kind": "file", "name": "src/viewer/scene/model/PerformanceModel.js", "content": "import {SceneModel} from \"./SceneModel.js\";\n\n/**\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * * PerformanceModel was replaced with {@link SceneModel} in ````xeokit-sdk v2.4````.\n * * PerformanceModel currently extends {@link SceneModel}, in order to maintain backward-compatibility until we remove PerformanceModel.\n * * See {@link SceneModel} for API details.\n *\n * @deprecated\n * @implements {Drawable}\n * @implements {Entity}\n * @extends {SceneModel}\n */\nexport class PerformanceModel extends SceneModel {\n\n /**\n * See {@link VBOSceneModel} for details.\n *\n * @param owner\n * @param cfg\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n }\n}\n", @@ -97716,7 +98244,7 @@ "lineNumber": 1 }, { - "__docId__": 4883, + "__docId__": 4901, "kind": "class", "name": "PerformanceModel", "memberof": "src/viewer/scene/model/PerformanceModel.js", @@ -97739,7 +98267,7 @@ ] }, { - "__docId__": 4884, + "__docId__": 4902, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/PerformanceModel.js~PerformanceModel", @@ -97774,7 +98302,7 @@ ] }, { - "__docId__": 4885, + "__docId__": 4903, "kind": "file", "name": "src/viewer/scene/model/RENDER_PASSES.js", "content": "/**\n * @private\n */\nconst RENDER_PASSES = {\n\n // Skipped - suppress rendering\n\n NOT_RENDERED: 0,\n\n // Normal rendering - mutually exclusive modes\n\n COLOR_OPAQUE: 1,\n COLOR_TRANSPARENT: 2,\n\n // Emphasis silhouette rendering - mutually exclusive modes\n\n SILHOUETTE_HIGHLIGHTED: 3,\n SILHOUETTE_SELECTED: 4,\n SILHOUETTE_XRAYED: 5,\n\n // Edges rendering - mutually exclusive modes\n\n EDGES_COLOR_OPAQUE: 6,\n EDGES_COLOR_TRANSPARENT: 7,\n EDGES_HIGHLIGHTED: 8,\n EDGES_SELECTED: 9,\n EDGES_XRAYED: 10,\n\n // Picking\n\n PICK: 11\n};\n\nexport {RENDER_PASSES};", @@ -97785,7 +98313,7 @@ "lineNumber": 1 }, { - "__docId__": 4886, + "__docId__": 4904, "kind": "variable", "name": "RENDER_PASSES", "memberof": "src/viewer/scene/model/RENDER_PASSES.js", @@ -97805,10 +98333,10 @@ } }, { - "__docId__": 4887, + "__docId__": 4905, "kind": "file", "name": "src/viewer/scene/model/SceneModel.js", - "content": "import {Component} from \"../Component.js\";\nimport {math} from \"../math/math.js\";\nimport {buildEdgeIndices} from '../math/buildEdgeIndices.js';\nimport {SceneModelMesh} from './SceneModelMesh.js';\nimport {getScratchMemory, putScratchMemory} from \"./vbo/ScratchMemory.js\";\nimport {VBOBatchingTrianglesLayer} from './vbo/batching/triangles/VBOBatchingTrianglesLayer.js';\nimport {VBOInstancingTrianglesLayer} from './vbo/instancing/triangles/VBOInstancingTrianglesLayer.js';\nimport {VBOBatchingLinesLayer} from './vbo/batching/lines/VBOBatchingLinesLayer.js';\nimport {VBOInstancingLinesLayer} from './vbo/instancing/lines/VBOInstancingLinesLayer.js';\nimport {VBOBatchingPointsLayer} from './vbo/batching/points/VBOBatchingPointsLayer.js';\nimport {VBOInstancingPointsLayer} from './vbo/instancing/points/VBOInstancingPointsLayer.js';\nimport {DTXLinesLayer} from \"./dtx/lines/DTXLinesLayer.js\";\nimport {DTXTrianglesLayer} from \"./dtx/triangles/DTXTrianglesLayer.js\";\nimport {ENTITY_FLAGS} from './ENTITY_FLAGS.js';\nimport {RenderFlags} from \"../webgl/RenderFlags.js\";\nimport {worldToRTCPositions} from \"../math/rtcCoords.js\";\nimport {SceneModelTextureSet} from \"./SceneModelTextureSet.js\";\nimport {SceneModelTexture} from \"./SceneModelTexture.js\";\nimport {Texture2D} from \"../webgl/Texture2D.js\";\nimport {utils} from \"../utils.js\";\nimport {getKTX2TextureTranscoder} from \"../utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js\";\nimport {\n ClampToEdgeWrapping,\n LinearEncoding,\n LinearFilter,\n LinearMipmapLinearFilter,\n LinearMipMapNearestFilter,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipMapLinearFilter,\n NearestMipMapNearestFilter,\n RepeatWrapping,\n sRGBEncoding\n} from \"../constants/constants.js\";\nimport {createPositionsDecodeMatrix, quantizePositions} from \"./compression.js\";\nimport {uniquifyPositions} from \"./calculateUniquePositions.js\";\nimport {rebucketPositions} from \"./rebucketPositions.js\";\nimport {SceneModelEntity} from \"./SceneModelEntity.js\";\nimport {geometryCompressionUtils} from \"../math/geometryCompressionUtils.js\";\nimport {SceneModelTransform} from \"./SceneModelTransform.js\";\n\n\nconst tempVec3a = math.vec3();\n\nconst tempOBB3 = math.OBB3();\n\nconst DEFAULT_SCALE = math.vec3([1, 1, 1]);\nconst DEFAULT_POSITION = math.vec3([0, 0, 0]);\nconst DEFAULT_ROTATION = math.vec3([0, 0, 0]);\nconst DEFAULT_QUATERNION = math.identityQuaternion();\nconst DEFAULT_MATRIX = math.identityMat4();\n\nconst DEFAULT_COLOR_TEXTURE_ID = \"defaultColorTexture\";\nconst DEFAULT_METAL_ROUGH_TEXTURE_ID = \"defaultMetalRoughTexture\";\nconst DEFAULT_NORMALS_TEXTURE_ID = \"defaultNormalsTexture\";\nconst DEFAULT_EMISSIVE_TEXTURE_ID = \"defaultEmissiveTexture\";\nconst DEFAULT_OCCLUSION_TEXTURE_ID = \"defaultOcclusionTexture\";\nconst DEFAULT_TEXTURE_SET_ID = \"defaultTextureSet\";\n\nconst defaultCompressedColor = new Uint8Array([255, 255, 255]);\n\nconst VBO_INSTANCED = 0;\nconst VBO_BATCHED = 1;\nconst DTX = 2;\n\n/**\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * Internally, SceneModel uses a combination of several different techniques to render and represent\n * the different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\n * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\n * serve to demonstrate how to use the capabilities of SceneModel programmatically.\n *\n * * [Loading building models into SceneModels](/examples/buildings)\n * * [Loading city models into SceneModels](/examples/cities)\n * * [Loading LiDAR scans into SceneModels](/examples/lidar)\n * * [Loading CAD models into SceneModels](/examples/cad)\n * * [SceneModel feature tests](/examples/scenemodel)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [SceneModel](#DataTextureSceneModel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates-for-double-precision)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## SceneModel\n *\n * ````SceneModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
    \n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````SceneModel```` is an {@link Entity} that represents a model.\n * * A ````SceneModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````SceneModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a SceneModel representing a table\n * // with four legs, using geometry instancing\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the SceneModel\n * // We'll instance this geometry by five meshes\n *\n * sceneModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a SceneModel\n *\n * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````SceneModel````.\n *\n * Once finalized, we can't add anything more to our ````SceneModel````.\n *\n * ```` javascript\n * SceneModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````SceneModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````SceneModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a SceneModel representing a table with four legs, using geometry batching\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the SceneModel.\n *\n * SceneModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````SceneModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````SceneModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for Double Precision\n *\n * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## Positioning at World-space coordinates\n *\n * To position a SceneModel at given double-precision World coordinates, we can\n * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n * 3D World-space position at which the SceneModel will be located.\n *\n * Note that ````position```` is a single-precision offset relative to ````origin````.\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true,\n * origin: origin, // Everything in this SceneModel is relative to this RTC center\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * # Textures\n *\n * ## Loading KTX2 Texture Files into a SceneModel\n *\n * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\n * allow us to load textures into it from KTX2 buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\n * transcoder WASM module.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n *\n * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * });\n * ````\n *\n * @implements {Entity}\n */\nexport class SceneModel extends Component {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this SceneModel represents a model, in which case the SceneModel will be registered by {@link SceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Number[]} [cfg.origin=[0,0,0]] World-space double-precision 3D origin.\n * @param {Number[]} [cfg.position=[0,0,0]] Local, single-precision 3D position, relative to the origin parameter.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModel is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModel is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModel is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModel is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModel is initially included in boundary calculations.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModel is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModel is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModel is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModel's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] SceneModel's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] SceneModel's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this SceneModel. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. SAO is configured by the Scene's {@link SAO} component.\n * @param {Boolean} [cfg.pbrEnabled=true] Indicates if physically-based rendering (PBR) will apply to the SceneModel when {@link Scene#pbrEnabled} is ````true````.\n * @param {Boolean} [cfg.colorTextureEnabled=true] Indicates if base color textures will be rendered for the SceneModel when {@link Scene#colorTextureEnabled} is ````true````.\n * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that SceneModel internally creates for batched geometries.\n * A lower value means less heap allocation/de-allocation while creating/loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while creating/loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n * @param {TextureTranscoder} [cfg.textureTranscoder] Transcoder that will be used internally by {@link SceneModel#createTexture}\n * to convert transcoded texture data. Only required when we'll be providing transcoded data\n * to {@link SceneModel#createTexture}. We assume that all transcoded texture data added to a ````SceneModel````\n * will then in a format supported by this transcoder.\n * @param {Boolean} [cfg.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._dtxEnabled = this.scene.dtxEnabled && (cfg.dtxEnabled !== false);\n\n this._enableVertexWelding = false; // Not needed for most objects, and very expensive, so disabled\n this._enableIndexBucketing = false; // Until fixed: https://github.com/xeokit/xeokit-sdk/issues/1204\n\n this._vboBatchingLayerScratchMemory = getScratchMemory();\n this._textureTranscoder = cfg.textureTranscoder || getKTX2TextureTranscoder(this.scene.viewer);\n\n this._maxGeometryBatchSize = cfg.maxGeometryBatchSize;\n\n this._aabb = math.collapseAABB3();\n this._aabbDirty = true;\n\n this._quantizationRanges = {};\n\n this._vboInstancingLayers = {};\n this._vboBatchingLayers = {};\n this._dtxLayers = {};\n\n this._meshList = [];\n\n this.layerList = []; // For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second\n this._entityList = [];\n\n this._geometries = {};\n this._dtxBuckets = {}; // Geometries with optimizations used for data texture representation\n this._textures = {};\n this._textureSets = {};\n this._transforms = {};\n this._meshes = {};\n this._unusedMeshes = {};\n this._entities = {};\n\n /** @private **/\n this.renderFlags = new RenderFlags();\n\n /**\n * @private\n */\n this.numGeometries = 0; // Number of geometries created with createGeometry()\n\n // These counts are used to avoid unnecessary render passes\n // They are incremented or decremented exclusively by BatchingLayer and InstancingLayer\n\n /**\n * @private\n */\n this.numPortions = 0;\n\n /**\n * @private\n */\n this.numVisibleLayerPortions = 0;\n\n /**\n * @private\n */\n this.numTransparentLayerPortions = 0;\n\n /**\n * @private\n */\n this.numXRayedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numHighlightedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numSelectedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numEdgesLayerPortions = 0;\n\n /**\n * @private\n */\n this.numPickableLayerPortions = 0;\n\n /**\n * @private\n */\n this.numClippableLayerPortions = 0;\n\n /**\n * @private\n */\n this.numCulledLayerPortions = 0;\n\n this.numEntities = 0;\n this._numTriangles = 0;\n this._numLines = 0;\n this._numPoints = 0;\n\n this._edgeThreshold = cfg.edgeThreshold || 10;\n\n // Build static matrix\n\n this._origin = math.vec3(cfg.origin || [0, 0, 0]);\n this._position = math.vec3(cfg.position || [0, 0, 0]);\n this._rotation = math.vec3(cfg.rotation || [0, 0, 0]);\n this._quaternion = math.vec4(cfg.quaternion || [0, 0, 0, 1]);\n this._conjugateQuaternion = math.vec4(cfg.quaternion || [0, 0, 0, 1]);\n\n if (cfg.rotation) {\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n }\n this._scale = math.vec3(cfg.scale || [1, 1, 1]);\n\n this._worldRotationMatrix = math.mat4();\n this._worldRotationMatrixConjugate = math.mat4();\n this._matrix = math.mat4();\n this._matrixDirty = true;\n\n this._rebuildMatrices();\n\n this._worldNormalMatrix = math.mat4();\n math.inverseMat4(this._matrix, this._worldNormalMatrix);\n math.transposeMat4(this._worldNormalMatrix);\n\n if (cfg.matrix || cfg.position || cfg.rotation || cfg.scale || cfg.quaternion) {\n this._viewMatrix = math.mat4();\n this._viewNormalMatrix = math.mat4();\n this._viewMatrixDirty = true;\n this._matrixNonIdentity = true;\n }\n\n this._opacity = 1.0;\n this._colorize = [1, 1, 1];\n\n this._saoEnabled = (cfg.saoEnabled !== false);\n this._pbrEnabled = (cfg.pbrEnabled !== false);\n this._colorTextureEnabled = (cfg.colorTextureEnabled !== false);\n\n this._isModel = cfg.isModel;\n if (this._isModel) {\n this.scene._registerModel(this);\n }\n\n this._onCameraViewMatrix = this.scene.camera.on(\"matrix\", () => {\n this._viewMatrixDirty = true;\n });\n\n this._meshesWithDirtyMatrices = [];\n this._numMeshesWithDirtyMatrices = 0;\n\n this._onTick = this.scene.on(\"tick\", () => {\n while (this._numMeshesWithDirtyMatrices > 0) {\n this._meshesWithDirtyMatrices[--this._numMeshesWithDirtyMatrices]._updateMatrix();\n }\n });\n\n this._createDefaultTextureSet();\n\n this.visible = cfg.visible;\n this.culled = cfg.culled;\n this.pickable = cfg.pickable;\n this.clippable = cfg.clippable;\n this.collidable = cfg.collidable;\n this.castsShadow = cfg.castsShadow;\n this.receivesShadow = cfg.receivesShadow;\n this.xrayed = cfg.xrayed;\n this.highlighted = cfg.highlighted;\n this.selected = cfg.selected;\n this.edges = cfg.edges;\n this.colorize = cfg.colorize;\n this.opacity = cfg.opacity;\n this.backfaces = cfg.backfaces;\n }\n\n _meshMatrixDirty(mesh) {\n this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++] = mesh;\n }\n\n _createDefaultTextureSet() {\n // Every SceneModelMesh gets at least the default TextureSet,\n // which contains empty default textures filled with color\n const defaultColorTexture = new SceneModelTexture({\n id: DEFAULT_COLOR_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [1, 1, 1, 1] // [r, g, b, a]})\n })\n });\n const defaultMetalRoughTexture = new SceneModelTexture({\n id: DEFAULT_METAL_ROUGH_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [0, 1, 1, 1] // [unused, roughness, metalness, unused]\n })\n });\n const defaultNormalsTexture = new SceneModelTexture({\n id: DEFAULT_NORMALS_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [0, 0, 0, 0] // [x, y, z, unused] - these must be zeros\n })\n });\n const defaultEmissiveTexture = new SceneModelTexture({\n id: DEFAULT_EMISSIVE_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [0, 0, 0, 1] // [x, y, z, unused]\n })\n });\n const defaultOcclusionTexture = new SceneModelTexture({\n id: DEFAULT_OCCLUSION_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [1, 1, 1, 1] // [x, y, z, unused]\n })\n });\n this._textures[DEFAULT_COLOR_TEXTURE_ID] = defaultColorTexture;\n this._textures[DEFAULT_METAL_ROUGH_TEXTURE_ID] = defaultMetalRoughTexture;\n this._textures[DEFAULT_NORMALS_TEXTURE_ID] = defaultNormalsTexture;\n this._textures[DEFAULT_EMISSIVE_TEXTURE_ID] = defaultEmissiveTexture;\n this._textures[DEFAULT_OCCLUSION_TEXTURE_ID] = defaultOcclusionTexture;\n this._textureSets[DEFAULT_TEXTURE_SET_ID] = new SceneModelTextureSet({\n id: DEFAULT_TEXTURE_SET_ID,\n model: this,\n colorTexture: defaultColorTexture,\n metallicRoughnessTexture: defaultMetalRoughTexture,\n normalsTexture: defaultNormalsTexture,\n emissiveTexture: defaultEmissiveTexture,\n occlusionTexture: defaultOcclusionTexture\n });\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // SceneModel members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is a SceneModel.\n * @type {Boolean}\n */\n get isPerformanceModel() {\n return true;\n }\n\n /**\n * The {@link SceneModelTransform}s in this SceneModel.\n *\n * Each {#link SceneModelTransform} is stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n */\n get transforms() {\n return this._transforms;\n }\n\n /**\n * The {@link SceneModelTexture}s in this SceneModel.\n *\n * * Each {@link SceneModelTexture} is created with {@link SceneModel.createTexture}.\n * * Each {@link SceneModelTexture} is stored here against its {@link SceneModelTexture.id}.\n *\n * @returns {*|{}}\n */\n get textures() {\n return this._textures;\n }\n\n /**\n * The {@link SceneModelTextureSet}s in this SceneModel.\n *\n * Each {@link SceneModelTextureSet} is stored here against its {@link SceneModelTextureSet.id}.\n *\n * @returns {*|{}}\n */\n get textureSets() {\n return this._textureSets;\n }\n\n /**\n * The {@link SceneModelMesh}es in this SceneModel.\n *\n * Each {@SceneModelMesh} is stored here against its {@link SceneModelMesh.id}.\n *\n * @returns {*|{}}\n */\n get meshes() {\n return this._meshes;\n }\n\n /**\n * The {@link SceneModelEntity}s in this SceneModel.\n *\n * Each {#link SceneModelEntity} in this SceneModel that represents an object is\n * stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n */\n get objects() {\n return this._entities;\n }\n\n /**\n * Gets the 3D World-space origin for this SceneModel.\n *\n * Each {@link SceneModelMesh.origin}, if supplied, is relative to this origin.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Float64Array}\n */\n get origin() {\n return this._origin;\n }\n\n /**\n * Sets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set position(value) {\n this._position.set(value || [0, 0, 0]);\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get position() {\n return this._position;\n }\n\n /**\n * Sets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set rotation(value) {\n this._rotation.set(value || [0, 0, 0]);\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get rotation() {\n return this._rotation;\n }\n\n /**\n * Sets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n set quaternion(value) {\n this._quaternion.set(value || [0, 0, 0, 1]);\n math.quaternionToEuler(this._quaternion, \"XYZ\", this._rotation);\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n get quaternion() {\n return this._quaternion;\n }\n\n /**\n * Sets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n */\n set scale(value) {\n // NOP - deprecated\n }\n\n /**\n * Gets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n set matrix(value) {\n this._matrix.set(value || DEFAULT_MATRIX);\n\n math.quaternionToRotationMat4(this._quaternion, this._worldRotationMatrix);\n math.conjugateQuaternion(this._quaternion, this._conjugateQuaternion);\n math.quaternionToRotationMat4(this._quaternion, this._worldRotationMatrixConjugate);\n this._matrix.set(this._worldRotationMatrix);\n math.translateMat4v(this._position, this._matrix);\n\n this._matrixDirty = false;\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n get matrix() {\n if (this._matrixDirty) {\n this._rebuildMatrices();\n }\n return this._matrix;\n }\n\n /**\n * Gets the SceneModel's local modeling rotation transform matrix.\n *\n * @type {Number[]}\n */\n get rotationMatrix() {\n if (this._matrixDirty) {\n this._rebuildMatrices();\n }\n return this._worldRotationMatrix;\n }\n\n _rebuildMatrices() {\n if (this._matrixDirty) {\n math.quaternionToRotationMat4(this._quaternion, this._worldRotationMatrix);\n math.conjugateQuaternion(this._quaternion, this._conjugateQuaternion);\n math.quaternionToRotationMat4(this._quaternion, this._worldRotationMatrixConjugate);\n this._matrix.set(this._worldRotationMatrix);\n math.translateMat4v(this._position, this._matrix);\n this._matrixDirty = false;\n }\n }\n\n /**\n * Gets the conjugate of the SceneModel's local modeling rotation transform matrix.\n *\n * This is used for RTC view matrix management in renderers.\n *\n * @type {Number[]}\n */\n get rotationMatrixConjugate() {\n if (this._matrixDirty) {\n this._rebuildMatrices();\n }\n return this._worldRotationMatrixConjugate;\n }\n\n _setWorldMatrixDirty() {\n this._matrixDirty = true;\n this._aabbDirty = true;\n }\n\n _transformDirty() {\n this._matrixDirty = true;\n this._aabbDirty = true;\n this.scene._aabbDirty = true;\n }\n\n _sceneModelDirty() {\n this.scene._aabbDirty = true;\n this._aabbDirty = true;\n this.scene._aabbDirty = true;\n this._matrixDirty = true;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i]._sceneModelDirty(); // Entities need to retransform their World AABBs by SceneModel's worldMatrix\n }\n }\n\n /**\n * Gets the SceneModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n return this.matrix;\n }\n\n /**\n * Gets the SceneModel's World normal matrix.\n *\n * @type {Number[]}\n */\n get worldNormalMatrix() {\n return this._worldNormalMatrix;\n }\n\n /**\n * Called by private renderers in ./lib, returns the view matrix with which to\n * render this SceneModel. The view matrix is the concatenation of the\n * Camera view matrix with the Performance model's world (modeling) matrix.\n *\n * @private\n */\n get viewMatrix() {\n if (!this._viewMatrix) {\n return this.scene.camera.viewMatrix;\n }\n if (this._matrixDirty) {\n this._rebuildMatrices();\n this._viewMatrixDirty = true;\n }\n if (this._viewMatrixDirty) {\n math.mulMat4(this.scene.camera.viewMatrix, this._matrix, this._viewMatrix);\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n this._viewMatrixDirty = false;\n }\n return this._viewMatrix;\n }\n\n /**\n * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel.\n *\n * @private\n */\n get viewNormalMatrix() {\n if (!this._viewNormalMatrix) {\n return this.scene.camera.viewNormalMatrix;\n }\n if (this._matrixDirty) {\n this._rebuildMatrices();\n this._viewMatrixDirty = true;\n }\n if (this._viewMatrixDirty) {\n math.mulMat4(this.scene.camera.viewMatrix, this._matrix, this._viewMatrix);\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n this._viewMatrixDirty = false;\n }\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n return this._viewNormalMatrix;\n }\n\n /**\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._backfaces;\n }\n\n /**\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this SceneModel.\n *\n * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\n * the Viewer will:\n *\n * * hide backfaces on watertight meshes,\n * * show backfaces on open meshes, and\n * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n *\n * @type {Boolean}\n */\n set backfaces(backfaces) {\n backfaces = !!backfaces;\n this._backfaces = backfaces;\n this.glRedraw();\n }\n\n /**\n * Gets the list of {@link SceneModelEntity}s within this SceneModel.\n *\n * @returns {SceneModelEntity[]}\n */\n get entityList() {\n return this._entityList;\n }\n\n /**\n * Returns true to indicate that SceneModel is an {@link Entity}.\n * @type {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this SceneModel represents a model.\n *\n * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in\n * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n */\n get isModel() {\n return this._isModel;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // SceneModel members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns ````false```` to indicate that SceneModel never represents an object.\n *\n * @type {Boolean}\n */\n get isObject() {\n return false;\n }\n\n /**\n * Gets the SceneModel's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n math.expandAABB3(this._aabb, this._entityList[i].aabb);\n }\n this._aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * The approximate number of triangle primitives in this SceneModel.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * The approximate number of line primitives in this SceneModel.\n *\n * @type {Number}\n */\n get numLines() {\n return this._numLines;\n }\n\n /**\n * The approximate number of point primitives in this SceneModel.\n *\n * @type {Number}\n */\n get numPoints() {\n return this._numPoints;\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel are visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get visible() {\n return (this.numVisibleLayerPortions > 0);\n }\n\n /**\n * Sets if this SceneModel is visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n **\n * @type {Boolean}\n */\n set visible(visible) {\n visible = visible !== false;\n this._visible = visible;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].visible = visible;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return (this.numXRayedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n xrayed = !!xrayed;\n this._xrayed = xrayed;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].xrayed = xrayed;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return (this.numHighlightedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n highlighted = !!highlighted;\n this._highlighted = highlighted;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].highlighted = highlighted;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n */\n get selected() {\n return (this.numSelectedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n selected = !!selected;\n this._selected = selected;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].selected = selected;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n */\n get edges() {\n return (this.numEdgesLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n edges = !!edges;\n this._edges = edges;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].edges = edges;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._culled;\n }\n\n /**\n * Sets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n */\n set culled(culled) {\n culled = !!culled;\n this._culled = culled;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].culled = culled;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._clippable;\n }\n\n /**\n * Sets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n set clippable(clippable) {\n clippable = clippable !== false;\n this._clippable = clippable;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].clippable = clippable;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this SceneModel is collidable.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._collidable;\n }\n\n /**\n * Sets if {@link SceneModelEntity}s in this SceneModel are collidable.\n *\n * @type {Boolean}\n */\n set collidable(collidable) {\n collidable = collidable !== false;\n this._collidable = collidable;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].collidable = collidable;\n }\n }\n\n /**\n * Gets if this SceneModel is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n get pickable() {\n return (this.numPickableLayerPortions > 0);\n }\n\n /**\n * Sets if {@link SceneModelEntity}s in this SceneModel are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(pickable) {\n pickable = pickable !== false;\n this._pickable = pickable;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].pickable = pickable;\n }\n }\n\n /**\n * Gets the RGB colorize color for this SceneModel.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n get colorize() {\n return this._colorize;\n }\n\n /**\n * Sets the RGB colorize color for this SceneModel.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(colorize) {\n this._colorize = colorize;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].colorize = colorize;\n }\n }\n\n /**\n * Gets this SceneModel's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._opacity;\n }\n\n /**\n * Sets the opacity factor for this SceneModel.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n this._opacity = opacity;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].opacity = opacity;\n }\n }\n\n /**\n * Gets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._castsShadow;\n }\n\n /**\n * Sets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n */\n set castsShadow(castsShadow) {\n castsShadow = (castsShadow !== false);\n if (castsShadow !== this._castsShadow) {\n this._castsShadow = castsShadow;\n this.glRedraw();\n }\n }\n\n /**\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._receivesShadow;\n }\n\n /**\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n */\n set receivesShadow(receivesShadow) {\n receivesShadow = (receivesShadow !== false);\n if (receivesShadow !== this._receivesShadow) {\n this._receivesShadow = receivesShadow;\n this.glRedraw();\n }\n }\n\n /**\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * Only works when {@link SAO#enabled} is also true.\n *\n * @type {Boolean}\n */\n get saoEnabled() {\n return this._saoEnabled;\n }\n\n /**\n * Gets if physically-based rendering (PBR) is enabled for this SceneModel.\n *\n * Only works when {@link Scene#pbrEnabled} is also true.\n *\n * @type {Boolean}\n */\n get pbrEnabled() {\n return this._pbrEnabled;\n }\n\n /**\n * Gets if color textures are enabled for this SceneModel.\n *\n * Only works when {@link Scene#colorTextureEnabled} is also true.\n *\n * @type {Boolean}\n */\n get colorTextureEnabled() {\n return this._colorTextureEnabled;\n }\n\n /**\n * Returns true to indicate that SceneModel is implements {@link Drawable}.\n *\n * @type {Boolean}\n */\n get isDrawable() {\n return true;\n }\n\n /** @private */\n get isStateSortable() {\n return false\n }\n\n /**\n * Configures the appearance of xrayed {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#xrayMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get xrayMaterial() {\n return this.scene.xrayMaterial;\n }\n\n /**\n * Configures the appearance of highlighted {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#highlightMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get highlightMaterial() {\n return this.scene.highlightMaterial;\n }\n\n /**\n * Configures the appearance of selected {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#selectedMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get selectedMaterial() {\n return this.scene.selectedMaterial;\n }\n\n /**\n * Configures the appearance of edges of {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n */\n get edgeMaterial() {\n return this.scene.edgeMaterial;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Drawable members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Called by private renderers in ./lib, returns the picking view matrix with which to\n * ray-pick on this SceneModel.\n *\n * @private\n */\n getPickViewMatrix(pickViewMatrix) {\n if (!this._viewMatrix) {\n return pickViewMatrix;\n }\n return this._viewMatrix;\n }\n\n /**\n *\n * @param cfg\n */\n createQuantizationRange(cfg) {\n if (cfg.id === undefined || cfg.id === null) {\n this.error(\"[createQuantizationRange] Config missing: id\");\n return;\n }\n if (cfg.aabb) {\n this.error(\"[createQuantizationRange] Config missing: aabb\");\n return;\n }\n if (this._quantizationRanges[cfg.id]) {\n this.error(\"[createQuantizationRange] QuantizationRange already created: \" + cfg.id);\n return;\n }\n this._quantizationRanges[cfg.id] = {\n id: cfg.id,\n aabb: cfg.aabb,\n matrix: createPositionsDecodeMatrix(cfg.aabb, math.mat4())\n }\n }\n\n /**\n * Creates a reusable geometry within this SceneModel.\n *\n * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that\n * instance the geometry.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n */\n createGeometry(cfg) {\n if (cfg.id === undefined || cfg.id === null) {\n this.error(\"[createGeometry] Config missing: id\");\n return;\n }\n if (this._geometries[cfg.id]) {\n this.error(\"[createGeometry] Geometry already created: \" + cfg.id);\n return;\n }\n if (cfg.primitive === undefined || cfg.primitive === null) {\n cfg.primitive = \"triangles\";\n }\n if (cfg.primitive !== \"points\" && cfg.primitive !== \"lines\" && cfg.primitive !== \"triangles\" && cfg.primitive !== \"solid\" && cfg.primitive !== \"surface\") {\n this.error(`[createGeometry] Unsupported value for 'primitive': '${cfg.primitive}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`);\n return;\n }\n if (!cfg.positions && !cfg.positionsCompressed && !cfg.buckets) {\n this.error(\"[createGeometry] Param expected: `positions`, `positionsCompressed' or 'buckets\");\n return null;\n }\n if (cfg.positionsCompressed && !cfg.positionsDecodeMatrix && !cfg.positionsDecodeBoundary) {\n this.error(\"[createGeometry] Param expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')\");\n return null;\n }\n if (cfg.positionsDecodeMatrix && cfg.positionsDecodeBoundary) {\n this.error(\"[createGeometry] Only one of these params expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')\");\n return null;\n }\n if (cfg.uvCompressed && !cfg.uvDecodeMatrix) {\n this.error(\"[createGeometry] Param expected: `uvDecodeMatrix` (required for `uvCompressed')\");\n return null;\n }\n if (!cfg.buckets && !cfg.indices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n const numPositions = (cfg.positions || cfg.positionsCompressed).length / 3;\n cfg.indices = this._createDefaultIndices(numPositions);\n }\n if (!cfg.buckets && !cfg.indices && cfg.primitive !== \"points\") {\n this.error(`[createGeometry] Param expected: indices (required for '${cfg.primitive}' primitive type)`);\n return null;\n }\n if (cfg.positionsDecodeBoundary) {\n cfg.positionsDecodeMatrix = createPositionsDecodeMatrix(cfg.positionsDecodeBoundary, math.mat4());\n }\n if (cfg.positions) {\n const aabb = math.collapseAABB3();\n cfg.positionsDecodeMatrix = math.mat4();\n math.expandAABB3Points3(aabb, cfg.positions);\n cfg.positionsCompressed = quantizePositions(cfg.positions, aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n } else if (cfg.positionsCompressed) {\n const aabb = math.collapseAABB3();\n cfg.positionsDecodeMatrix = new Float64Array(cfg.positionsDecodeMatrix);\n cfg.positionsCompressed = new Uint16Array(cfg.positionsCompressed);\n math.expandAABB3Points3(aabb, cfg.positionsCompressed);\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n } else if (cfg.buckets) {\n const aabb = math.collapseAABB3();\n this._dtxBuckets[cfg.id] = cfg.buckets;\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n const bucket = cfg.buckets[i];\n if (bucket.positions) {\n math.expandAABB3Points3(aabb, bucket.positions);\n } else if (bucket.positionsCompressed) {\n math.expandAABB3Points3(aabb, bucket.positionsCompressed);\n }\n }\n if (cfg.positionsDecodeMatrix) {\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n }\n cfg.aabb = aabb;\n }\n if (cfg.colorsCompressed && cfg.colorsCompressed.length > 0) {\n cfg.colorsCompressed = new Uint8Array(cfg.colorsCompressed);\n } else if (cfg.colors && cfg.colors.length > 0) {\n const colors = cfg.colors;\n const colorsCompressed = new Uint8Array(colors.length);\n for (let i = 0, len = colors.length; i < len; i++) {\n colorsCompressed[i] = colors[i] * 255;\n }\n cfg.colorsCompressed = colorsCompressed;\n }\n if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n if (cfg.positions) {\n cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 5.0);\n } else {\n cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0);\n }\n }\n if (cfg.uv) {\n const bounds = geometryCompressionUtils.getUVBounds(cfg.uv);\n const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max);\n cfg.uvCompressed = result.quantized;\n cfg.uvDecodeMatrix = result.decodeMatrix;\n } else if (cfg.uvCompressed) {\n cfg.uvCompressed = new Uint16Array(cfg.uvCompressed);\n cfg.uvDecodeMatrix = new Float64Array(cfg.uvDecodeMatrix);\n }\n if (cfg.normals) { // HACK\n cfg.normals = null;\n }\n this._geometries [cfg.id] = cfg;\n this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0);\n this.numGeometries++;\n }\n\n /**\n * Creates a texture within this SceneModel.\n *\n * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture.\n *\n * @param {*} cfg Texture properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link SceneModel#createTextureSet}.\n * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file\n * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````SceneModel```` is configured with a {@link TextureTranscoder}.\n * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````SceneModel```` is\n * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps.\n * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded.\n * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel.\n * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}.\n * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}.\n * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}..\n * @param {Number} [cfg.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n */\n createTexture(cfg) {\n const textureId = cfg.id;\n if (textureId === undefined || textureId === null) {\n this.error(\"[createTexture] Config missing: id\");\n return;\n }\n if (this._textures[textureId]) {\n this.error(\"[createTexture] Texture already created: \" + textureId);\n return;\n }\n if (!cfg.src && !cfg.image && !cfg.buffers) {\n this.error(\"[createTexture] Param expected: `src`, `image' or 'buffers'\");\n return null;\n }\n let minFilter = cfg.minFilter || LinearMipmapLinearFilter;\n if (minFilter !== LinearFilter &&\n minFilter !== LinearMipMapNearestFilter &&\n minFilter !== LinearMipmapLinearFilter &&\n minFilter !== NearestMipMapLinearFilter &&\n minFilter !== NearestMipMapNearestFilter) {\n this.error(`[createTexture] Unsupported value for 'minFilter' - \n supported values are LinearFilter, LinearMipMapNearestFilter, NearestMipMapNearestFilter, \n NearestMipMapLinearFilter and LinearMipmapLinearFilter. Defaulting to LinearMipmapLinearFilter.`);\n minFilter = LinearMipmapLinearFilter;\n }\n let magFilter = cfg.magFilter || LinearFilter;\n if (magFilter !== LinearFilter && magFilter !== NearestFilter) {\n this.error(`[createTexture] Unsupported value for 'magFilter' - supported values are LinearFilter and NearestFilter. Defaulting to LinearFilter.`);\n magFilter = LinearFilter;\n }\n let wrapS = cfg.wrapS || RepeatWrapping;\n if (wrapS !== ClampToEdgeWrapping && wrapS !== MirroredRepeatWrapping && wrapS !== RepeatWrapping) {\n this.error(`[createTexture] Unsupported value for 'wrapS' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.`);\n wrapS = RepeatWrapping;\n }\n let wrapT = cfg.wrapT || RepeatWrapping;\n if (wrapT !== ClampToEdgeWrapping && wrapT !== MirroredRepeatWrapping && wrapT !== RepeatWrapping) {\n this.error(`[createTexture] Unsupported value for 'wrapT' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.`);\n wrapT = RepeatWrapping;\n }\n let wrapR = cfg.wrapR || RepeatWrapping;\n if (wrapR !== ClampToEdgeWrapping && wrapR !== MirroredRepeatWrapping && wrapR !== RepeatWrapping) {\n this.error(`[createTexture] Unsupported value for 'wrapR' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.`);\n wrapR = RepeatWrapping;\n }\n let encoding = cfg.encoding || LinearEncoding;\n if (encoding !== LinearEncoding && encoding !== sRGBEncoding) {\n this.error(\"[createTexture] Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding.\");\n encoding = LinearEncoding;\n }\n const texture = new Texture2D({\n gl: this.scene.canvas.gl,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n // flipY: cfg.flipY,\n encoding\n });\n if (cfg.preloadColor) {\n texture.setPreloadColor(cfg.preloadColor);\n }\n if (cfg.image) { // Ignore transcoder for Images\n const image = cfg.image;\n image.crossOrigin = \"Anonymous\";\n texture.setImage(image, {minFilter, magFilter, wrapS, wrapT, wrapR, flipY: cfg.flipY, encoding});\n } else if (cfg.src) {\n const ext = cfg.src.split('.').pop();\n switch (ext) { // Don't transcode recognized image file types\n case \"jpeg\":\n case \"jpg\":\n case \"png\":\n case \"gif\":\n const image = new Image();\n image.onload = () => {\n texture.setImage(image, {\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n flipY: cfg.flipY,\n encoding\n });\n this.glRedraw();\n };\n image.src = cfg.src; // URL or Base64 string\n break;\n default: // Assume other file types need transcoding\n if (!this._textureTranscoder) {\n this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${ext}')`);\n } else {\n utils.loadArraybuffer(cfg.src, (arrayBuffer) => {\n if (!arrayBuffer.byteLength) {\n this.error(`[createTexture] Can't create texture from 'src': file data is zero length`);\n return;\n }\n this._textureTranscoder.transcode([arrayBuffer], texture).then(() => {\n this.glRedraw();\n });\n },\n function (errMsg) {\n this.error(`[createTexture] Can't create texture from 'src': ${errMsg}`);\n });\n }\n break;\n }\n } else if (cfg.buffers) { // Buffers implicitly require transcoding\n if (!this._textureTranscoder) {\n this.error(`[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option`);\n } else {\n this._textureTranscoder.transcode(cfg.buffers, texture).then(() => {\n this.glRedraw();\n });\n }\n }\n this._textures[textureId] = new SceneModelTexture({id: textureId, texture});\n }\n\n /**\n * Creates a texture set within this SceneModel.\n *\n * * Stores the new {@link SceneModelTextureSet} in {@link SceneModel#textureSets}.\n *\n * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set\n * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set.\n *\n * The textures can work as a texture atlas, where each mesh can have geometry UVs that index\n * a different part of the textures. This allows us to minimize the number of textures in our models, which\n * means faster rendering.\n *\n * @param {*} cfg Texture set properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}.\n * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*.\n * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*.\n * @param {*} [cfg.emissiveTextureId] ID of *RGBA* emissive map texture, with emissive color in *RGB*.\n * @param {*} [cfg.occlusionTextureId] ID of *RGBA* occlusion map texture, with occlusion factor in *R*.\n * @returns {SceneModelTransform} The new texture set.\n */\n createTextureSet(cfg) {\n const textureSetId = cfg.id;\n if (textureSetId === undefined || textureSetId === null) {\n this.error(\"[createTextureSet] Config missing: id\");\n return;\n }\n if (this._textureSets[textureSetId]) {\n this.error(`[createTextureSet] Texture set already created: ${textureSetId}`);\n return;\n }\n let colorTexture;\n if (cfg.colorTextureId !== undefined && cfg.colorTextureId !== null) {\n colorTexture = this._textures[cfg.colorTextureId];\n if (!colorTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.colorTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n colorTexture = this._textures[DEFAULT_COLOR_TEXTURE_ID];\n }\n let metallicRoughnessTexture;\n if (cfg.metallicRoughnessTextureId !== undefined && cfg.metallicRoughnessTextureId !== null) {\n metallicRoughnessTexture = this._textures[cfg.metallicRoughnessTextureId];\n if (!metallicRoughnessTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n metallicRoughnessTexture = this._textures[DEFAULT_METAL_ROUGH_TEXTURE_ID];\n }\n let normalsTexture;\n if (cfg.normalsTextureId !== undefined && cfg.normalsTextureId !== null) {\n normalsTexture = this._textures[cfg.normalsTextureId];\n if (!normalsTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.normalsTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n normalsTexture = this._textures[DEFAULT_NORMALS_TEXTURE_ID];\n }\n let emissiveTexture;\n if (cfg.emissiveTextureId !== undefined && cfg.emissiveTextureId !== null) {\n emissiveTexture = this._textures[cfg.emissiveTextureId];\n if (!emissiveTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.emissiveTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n emissiveTexture = this._textures[DEFAULT_EMISSIVE_TEXTURE_ID];\n }\n let occlusionTexture;\n if (cfg.occlusionTextureId !== undefined && cfg.occlusionTextureId !== null) {\n occlusionTexture = this._textures[cfg.occlusionTextureId];\n if (!occlusionTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.occlusionTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n occlusionTexture = this._textures[DEFAULT_OCCLUSION_TEXTURE_ID];\n }\n const textureSet = new SceneModelTextureSet({\n id: textureSetId,\n model: this,\n colorTexture,\n metallicRoughnessTexture,\n normalsTexture,\n emissiveTexture,\n occlusionTexture\n });\n this._textureSets[textureSetId] = textureSet;\n return textureSet;\n }\n\n /**\n * Creates a new {@link SceneModelTransform} within this SceneModel.\n *\n * * Stores the new {@link SceneModelTransform} in {@link SceneModel#transforms}.\n * * Can be connected into hierarchies\n * * Each {@link SceneModelTransform} can be used by unlimited {@link SceneModelMesh}es\n *\n * @param {*} cfg Transform creation parameters.\n * @param {String} cfg.id Mandatory ID for the new transform. Must not clash with any existing components within the {@link Scene}.\n * @param {String} [cfg.parentTransformId] ID of a parent transform, previously created with {@link SceneModel#createTextureSet}.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the transform.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the transform as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters.\n * @returns {SceneModelTransform} The new transform.\n */\n createTransform(cfg) {\n if (cfg.id === undefined || cfg.id === null) {\n this.error(\"[createTransform] SceneModel.createTransform() config missing: id\");\n return;\n }\n if (this._transforms[cfg.id]) {\n this.error(`[createTransform] SceneModel already has a transform with this ID: ${cfg.id}`);\n return;\n }\n let parentTransform;\n if (cfg.parentTransformId) {\n parentTransform = this._transforms[cfg.parentTransformId];\n if (!parentTransform) {\n this.error(\"[createTransform] SceneModel.createTransform() config missing: id\");\n return;\n }\n }\n const transform = new SceneModelTransform({\n id: cfg.id,\n model: this,\n parent: parentTransform,\n matrix: cfg.matrix,\n position: cfg.position,\n scale: cfg.scale,\n rotation: cfg.rotation,\n quaternion: cfg.quaternion\n });\n this._transforms[transform.id] = transform;\n return transform;\n }\n\n /**\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n */\n createMesh(cfg) {\n\n if (cfg.id === undefined || cfg.id === null) {\n this.error(\"[createMesh] SceneModel.createMesh() config missing: id\");\n return false;\n }\n\n if (this._meshes[cfg.id]) {\n this.error(`[createMesh] SceneModel already has a mesh with this ID: ${cfg.id}`);\n return false;\n }\n\n const instancing = (cfg.geometryId !== undefined);\n const batching = !instancing;\n\n if (batching) {\n\n // Batched geometry\n\n if (cfg.primitive === undefined || cfg.primitive === null) {\n cfg.primitive = \"triangles\";\n }\n if (cfg.primitive !== \"points\" && cfg.primitive !== \"lines\" && cfg.primitive !== \"triangles\" && cfg.primitive !== \"solid\" && cfg.primitive !== \"surface\") {\n this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`);\n return false;\n }\n if (!cfg.positions && !cfg.positionsCompressed && !cfg.buckets) {\n this.error(\"Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)\");\n return false;\n }\n if (cfg.positions && (cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary)) {\n this.error(\"Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)\");\n return false;\n }\n if (cfg.positionsCompressed && !cfg.positionsDecodeMatrix && !cfg.positionsDecodeBoundary) {\n this.error(\"Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)\");\n return false;\n }\n if (cfg.uvCompressed && !cfg.uvDecodeMatrix) {\n this.error(\"Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)\");\n return false;\n }\n if (!cfg.buckets && !cfg.indices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n const numPositions = (cfg.positions || cfg.positionsCompressed).length / 3;\n cfg.indices = this._createDefaultIndices(numPositions);\n }\n if (!cfg.buckets && !cfg.indices && cfg.primitive !== \"points\") {\n cfg.indices = this._createDefaultIndices(numIndices)\n this.error(`Param expected: indices (required for '${cfg.primitive}' primitive type)`);\n return false;\n }\n if ((cfg.matrix || cfg.position || cfg.rotation || cfg.scale) && (cfg.positionsCompressed || cfg.positionsDecodeBoundary)) {\n this.error(\"Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'\");\n return false;\n }\n\n const useDTX = (!!this._dtxEnabled && (cfg.primitive === \"triangles\"\n || cfg.primitive === \"solid\"\n || cfg.primitive === \"surface\"))\n && (!cfg.textureSetId);\n\n cfg.origin = cfg.origin ? math.addVec3(this._origin, cfg.origin, math.vec3()) : this._origin;\n\n // MATRIX - optional for batching\n\n if (cfg.matrix) {\n cfg.meshMatrix = cfg.matrix;\n } else if (cfg.scale || cfg.rotation || cfg.position) {\n const scale = cfg.scale || DEFAULT_SCALE;\n const position = cfg.position || DEFAULT_POSITION;\n const rotation = cfg.rotation || DEFAULT_ROTATION;\n math.eulerToQuaternion(rotation, \"XYZ\", DEFAULT_QUATERNION);\n cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4());\n }\n\n if (cfg.positionsDecodeBoundary) {\n cfg.positionsDecodeMatrix = createPositionsDecodeMatrix(cfg.positionsDecodeBoundary, math.mat4());\n }\n\n if (useDTX) {\n\n // DTX\n\n cfg.type = DTX;\n\n // NPR\n\n cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : defaultCompressedColor;\n cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n\n // RTC\n\n if (cfg.positions) {\n const rtcCenter = math.vec3();\n const rtcPositions = [];\n const rtcNeeded = worldToRTCPositions(cfg.positions, rtcPositions, rtcCenter);\n if (rtcNeeded) {\n cfg.positions = rtcPositions;\n cfg.origin = math.addVec3(cfg.origin, rtcCenter, rtcCenter);\n }\n }\n\n // COMPRESSION\n\n if (cfg.positions) {\n const aabb = math.collapseAABB3();\n cfg.positionsDecodeMatrix = math.mat4();\n math.expandAABB3Points3(aabb, cfg.positions);\n cfg.positionsCompressed = quantizePositions(cfg.positions, aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n\n } else if (cfg.positionsCompressed) {\n const aabb = math.collapseAABB3();\n math.expandAABB3Points3(aabb, cfg.positionsCompressed);\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n\n }\n if (cfg.buckets) {\n const aabb = math.collapseAABB3();\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n const bucket = cfg.buckets[i];\n if (bucket.positions) {\n math.expandAABB3Points3(aabb, bucket.positions);\n } else if (bucket.positionsCompressed) {\n math.expandAABB3Points3(aabb, bucket.positionsCompressed);\n }\n }\n if (cfg.positionsDecodeMatrix) {\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n }\n cfg.aabb = aabb;\n }\n\n if (cfg.meshMatrix) {\n math.AABB3ToOBB3(cfg.aabb, tempOBB3);\n math.transformOBB3(cfg.meshMatrix, tempOBB3);\n math.OBB3ToAABB3(tempOBB3, cfg.aabb);\n }\n\n // EDGES\n\n if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n if (cfg.positions) { // Faster\n cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 2.0);\n } else {\n cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0);\n }\n }\n\n // BUCKETING\n\n if (!cfg.buckets) {\n cfg.buckets = createDTXBuckets(cfg, this._enableVertexWelding && this._enableIndexBucketing);\n }\n\n } else {\n\n // VBO\n\n cfg.type = VBO_BATCHED;\n\n // PBR\n\n cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : [255, 255, 255];\n cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n cfg.metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0;\n cfg.roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255;\n\n // RTC\n\n if (cfg.positions) {\n const rtcPositions = [];\n const rtcNeeded = worldToRTCPositions(cfg.positions, rtcPositions, tempVec3a);\n if (rtcNeeded) {\n cfg.positions = rtcPositions;\n cfg.origin = math.addVec3(cfg.origin, tempVec3a, math.vec3());\n }\n }\n\n if (cfg.positions) {\n const aabb = math.collapseAABB3();\n if (cfg.meshMatrix) {\n math.transformPositions3(cfg.meshMatrix, cfg.positions, cfg.positions);\n cfg.meshMatrix = null; // Positions now baked, don't need any more\n }\n math.expandAABB3Points3(aabb, cfg.positions);\n cfg.aabb = aabb;\n\n } else {\n const aabb = math.collapseAABB3();\n math.expandAABB3Points3(aabb, cfg.positionsCompressed);\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n }\n\n if (cfg.meshMatrix) {\n math.AABB3ToOBB3(cfg.aabb, tempOBB3);\n math.transformOBB3(cfg.meshMatrix, tempOBB3);\n math.OBB3ToAABB3(tempOBB3, cfg.aabb);\n }\n\n // EDGES\n\n if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n if (cfg.positions) {\n cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 2.0);\n } else {\n cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0);\n }\n }\n\n // TEXTURE\n\n // cfg.textureSetId = cfg.textureSetId || DEFAULT_TEXTURE_SET_ID;\n if (cfg.textureSetId) {\n cfg.textureSet = this._textureSets[cfg.textureSetId];\n if (!cfg.textureSet) {\n this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`);\n return false;\n }\n }\n }\n\n } else {\n\n // INSTANCING\n\n if (cfg.positions || cfg.positionsCompressed || cfg.indices || cfg.edgeIndices || cfg.normals || cfg.normalsCompressed || cfg.uv || cfg.uvCompressed || cfg.positionsDecodeMatrix) {\n this.error(`Mesh geometry parameters not expected when instancing a geometry (not expected: positions, positionsCompressed, indices, edgeIndices, normals, normalsCompressed, uv, uvCompressed, positionsDecodeMatrix)`);\n return false;\n }\n\n cfg.geometry = this._geometries[cfg.geometryId];\n if (!cfg.geometry) {\n this.error(`[createMesh] Geometry not found: ${cfg.geometryId} - ensure that you create it first with createGeometry()`);\n return false;\n }\n\n cfg.origin = cfg.origin ? math.addVec3(this._origin, cfg.origin, math.vec3()) : this._origin;\n cfg.positionsDecodeMatrix = cfg.geometry.positionsDecodeMatrix;\n\n if (cfg.transformId) {\n\n // TRANSFORM\n\n cfg.transform = this._transforms[cfg.transformId];\n\n if (!cfg.transform) {\n this.error(`[createMesh] Transform not found: ${cfg.transformId} - ensure that you create it first with createTransform()`);\n return false;\n }\n\n cfg.aabb = cfg.geometry.aabb;\n\n } else {\n\n // MATRIX\n\n if (cfg.matrix) {\n cfg.meshMatrix = cfg.matrix.slice();\n } else {\n const scale = cfg.scale || DEFAULT_SCALE;\n const position = cfg.position || DEFAULT_POSITION;\n const rotation = cfg.rotation || DEFAULT_ROTATION;\n math.eulerToQuaternion(rotation, \"XYZ\", DEFAULT_QUATERNION);\n cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4());\n }\n\n math.AABB3ToOBB3(cfg.geometry.aabb, tempOBB3);\n math.transformOBB3(cfg.meshMatrix, tempOBB3);\n cfg.aabb = math.OBB3ToAABB3(tempOBB3, math.AABB3());\n }\n\n const useDTX = (!!this._dtxEnabled\n && (cfg.geometry.primitive === \"triangles\"\n || cfg.geometry.primitive === \"solid\"\n || cfg.geometry.primitive === \"surface\"))\n && (!cfg.textureSetId);\n\n if (useDTX) {\n\n // DTX\n\n cfg.type = DTX;\n\n // NPR\n\n cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : defaultCompressedColor;\n cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n\n // BUCKETING - lazy generated, reused\n\n let buckets = this._dtxBuckets[cfg.geometryId];\n if (!buckets) {\n buckets = createDTXBuckets(cfg.geometry, this._enableVertexWelding, this._enableIndexBucketing);\n this._dtxBuckets[cfg.geometryId] = buckets;\n }\n cfg.buckets = buckets;\n\n } else {\n\n // VBO\n\n cfg.type = VBO_INSTANCED;\n\n // PBR\n\n cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : defaultCompressedColor;\n cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n cfg.metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0;\n cfg.roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255;\n\n // TEXTURE\n\n if (cfg.textureSetId) {\n cfg.textureSet = this._textureSets[cfg.textureSetId];\n // if (!cfg.textureSet) {\n // this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`);\n // return false;\n // }\n }\n }\n }\n\n cfg.numPrimitives = this._getNumPrimitives(cfg);\n\n return this._createMesh(cfg);\n }\n\n _createMesh(cfg) {\n const mesh = new SceneModelMesh(this, cfg.id, cfg.color, cfg.opacity, cfg.transform, cfg.textureSet);\n mesh.pickId = this.scene._renderer.getPickID(mesh);\n const pickId = mesh.pickId;\n const a = pickId >> 24 & 0xFF;\n const b = pickId >> 16 & 0xFF;\n const g = pickId >> 8 & 0xFF;\n const r = pickId & 0xFF;\n cfg.pickColor = new Uint8Array([r, g, b, a]); // Quantized pick color\n cfg.solid = (cfg.primitive === \"solid\");\n mesh.origin = math.vec3(cfg.origin);\n switch (cfg.type) {\n case DTX:\n mesh.layer = this._getDTXLayer(cfg);\n mesh.aabb = cfg.aabb;\n break;\n case VBO_BATCHED:\n mesh.layer = this._getVBOBatchingLayer(cfg);\n mesh.aabb = cfg.aabb;\n break;\n case VBO_INSTANCED:\n mesh.layer = this._getVBOInstancingLayer(cfg);\n mesh.aabb = cfg.aabb;\n break;\n }\n if (cfg.transform) {\n cfg.meshMatrix = cfg.transform.worldMatrix;\n }\n mesh.portionId = mesh.layer.createPortion(mesh, cfg);\n this._meshes[cfg.id] = mesh;\n this._unusedMeshes[cfg.id] = mesh;\n this._meshList.push(mesh);\n return mesh;\n }\n\n _getNumPrimitives(cfg) {\n let countIndices = 0;\n const primitive = cfg.geometry ? cfg.geometry.primitive : cfg.primitive;\n switch (primitive) {\n case \"triangles\":\n case \"solid\":\n case \"surface\":\n switch (cfg.type) {\n case DTX:\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n countIndices += cfg.buckets[i].indices.length;\n }\n break;\n case VBO_BATCHED:\n countIndices += cfg.indices.length;\n break;\n case VBO_INSTANCED:\n countIndices += cfg.geometry.indices.length;\n break;\n }\n return Math.round(countIndices / 3);\n case \"points\":\n switch (cfg.type) {\n case DTX:\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n countIndices += cfg.buckets[i].positionsCompressed.length;\n }\n break;\n case VBO_BATCHED:\n countIndices += cfg.positions ? cfg.positions.length : cfg.positionsCompressed.length;\n break;\n case VBO_INSTANCED:\n const geometry = cfg.geometry;\n countIndices += geometry.positions ? geometry.positions.length : geometry.positionsCompressed.length;\n break;\n }\n return Math.round(countIndices);\n case \"lines\":\n case \"line-strip\":\n switch (cfg.type) {\n case DTX:\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n countIndices += cfg.buckets[i].indices.length;\n }\n break;\n case VBO_BATCHED:\n countIndices += cfg.indices.length;\n break;\n case VBO_INSTANCED:\n countIndices += cfg.geometry.indices.length;\n break;\n }\n return Math.round(countIndices / 2);\n }\n return 0;\n }\n\n _getDTXLayer(cfg) {\n const origin = cfg.origin;\n const primitive = cfg.geometry ? cfg.geometry.primitive : cfg.primitive;\n const layerId = `.${primitive}.${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}`;\n let dtxLayer = this._dtxLayers[layerId];\n if (dtxLayer) {\n if (!dtxLayer.canCreatePortion(cfg)) {\n dtxLayer.finalize();\n delete this._dtxLayers[layerId];\n dtxLayer = null;\n } else {\n return dtxLayer;\n }\n }\n switch (primitive) {\n case \"triangles\":\n case \"solid\":\n case \"surface\":\n dtxLayer = new DTXTrianglesLayer(this, {layerIndex: 0, origin}); // layerIndex is set in #finalize()\n break;\n case \"lines\":\n dtxLayer = new DTXLinesLayer(this, {layerIndex: 0, origin}); // layerIndex is set in #finalize()\n break;\n default:\n return;\n }\n this._dtxLayers[layerId] = dtxLayer;\n this.layerList.push(dtxLayer);\n return dtxLayer;\n }\n\n _getVBOBatchingLayer(cfg) {\n const model = this;\n const origin = cfg.origin;\n const positionsDecodeHash = cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary ?\n this._createHashStringFromMatrix(cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary)\n : \"-\";\n const textureSetId = cfg.textureSetId || \"-\";\n const layerId = `${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}.${cfg.primitive}.${positionsDecodeHash}.${textureSetId}`;\n let vboBatchingLayer = this._vboBatchingLayers[layerId];\n if (vboBatchingLayer) {\n return vboBatchingLayer;\n }\n let textureSet = cfg.textureSet;\n while (!vboBatchingLayer) {\n switch (cfg.primitive) {\n case \"triangles\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);\n vboBatchingLayer = new VBOBatchingTrianglesLayer({\n model,\n textureSet,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n solid: (cfg.primitive === \"solid\"),\n autoNormals: true\n });\n break;\n case \"solid\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);\n vboBatchingLayer = new VBOBatchingTrianglesLayer({\n model,\n textureSet,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n solid: (cfg.primitive === \"solid\"),\n autoNormals: true\n });\n break;\n case \"surface\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);\n vboBatchingLayer = new VBOBatchingTrianglesLayer({\n model,\n textureSet,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n solid: (cfg.primitive === \"solid\"),\n autoNormals: true\n });\n break;\n case \"lines\":\n // console.info(`[SceneModel ${this.id}]: creating VBOBatchingLinesLayer`);\n vboBatchingLayer = new VBOBatchingLinesLayer({\n model,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize\n });\n break;\n case \"points\":\n // console.info(`[SceneModel ${this.id}]: creating VBOBatchingPointsLayer`);\n vboBatchingLayer = new VBOBatchingPointsLayer({\n model,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize\n });\n break;\n }\n const lenPositions = cfg.positionsCompressed ? cfg.positionsCompressed.length : cfg.positions.length;\n const canCreatePortion = (cfg.primitive === \"points\")\n ? vboBatchingLayer.canCreatePortion(lenPositions)\n : vboBatchingLayer.canCreatePortion(lenPositions, cfg.indices.length);\n if (!canCreatePortion) {\n vboBatchingLayer.finalize();\n delete this._vboBatchingLayers[layerId];\n vboBatchingLayer = null;\n }\n }\n this._vboBatchingLayers[layerId] = vboBatchingLayer;\n this.layerList.push(vboBatchingLayer);\n return vboBatchingLayer;\n }\n\n _createHashStringFromMatrix(matrix) {\n const matrixString = matrix.join('');\n let hash = 0;\n for (let i = 0; i < matrixString.length; i++) {\n const char = matrixString.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash |= 0; // Convert to 32-bit integer\n }\n const hashString = (hash >>> 0).toString(16);\n return hashString;\n }\n\n _getVBOInstancingLayer(cfg) {\n const model = this;\n const origin = cfg.origin;\n const textureSetId = cfg.textureSetId || \"-\";\n const geometryId = cfg.geometryId;\n const layerId = `${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}.${textureSetId}.${geometryId}`;\n let vboInstancingLayer = this._vboInstancingLayers[layerId];\n if (vboInstancingLayer) {\n return vboInstancingLayer;\n }\n let textureSet = cfg.textureSet;\n const geometry = cfg.geometry;\n while (!vboInstancingLayer) {\n switch (geometry.primitive) {\n case \"triangles\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);\n vboInstancingLayer = new VBOInstancingTrianglesLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0,\n solid: false\n });\n break;\n case \"solid\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);\n vboInstancingLayer = new VBOInstancingTrianglesLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0,\n solid: true\n });\n break;\n case \"surface\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);\n vboInstancingLayer = new VBOInstancingTrianglesLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0,\n solid: false\n });\n break;\n case \"lines\":\n // console.info(`[SceneModel ${this.id}]: creating VBOInstancingLinesLayer`);\n vboInstancingLayer = new VBOInstancingLinesLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0\n });\n break;\n case \"points\":\n // console.info(`[SceneModel ${this.id}]: creating PointsInstancingLayer`);\n vboInstancingLayer = new VBOInstancingPointsLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0\n });\n break;\n }\n // const lenPositions = geometry.positionsCompressed.length;\n // if (!vboInstancingLayer.canCreatePortion(lenPositions, geometry.indices.length)) { // FIXME: indices should be optional\n // vboInstancingLayer.finalize();\n // delete this._vboInstancingLayers[layerId];\n // vboInstancingLayer = null;\n // }\n }\n this._vboInstancingLayers[layerId] = vboInstancingLayer;\n this.layerList.push(vboInstancingLayer);\n return vboInstancingLayer;\n }\n\n /**\n * Creates a {@link SceneModelEntity} within this SceneModel.\n *\n * * Gives the SceneModelEntity one or more {@link SceneModelMesh}es previously created with\n * {@link SceneModel#createMesh}. A SceneModelMesh can only belong to one SceneModelEntity, so you'll get an\n * error if you try to reuse a mesh among multiple SceneModelEntitys.\n * * The SceneModelEntity can have a {@link SceneModelTextureSet}, previously created with\n * {@link SceneModel#createTextureSet}. A SceneModelTextureSet can belong to multiple SceneModelEntitys.\n * * The SceneModelEntity can have a geometry, previously created with\n * {@link SceneModel#createTextureSet}. A geometry is a \"virtual component\" and can belong to multiple SceneModelEntitys.\n *\n * @param {Object} cfg SceneModelEntity configuration.\n * @param {String} cfg.id Optional ID for the new SceneModelEntity. Must not clash with any existing components within the {@link Scene}.\n * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link SceneModel@createMesh}.\n * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link SceneModelEntity} represents an object, in which case it will be registered by {@link SceneModelEntity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModelEntity is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModelEntity is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModelEntity is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModelEntity is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModelEntity is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the SceneModelEntity initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the SceneModelEntity initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModelEntity is initially xrayed. XRayed appearance is configured by {@link SceneModel#xrayMaterial}.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModelEntity is initially highlighted. Highlighted appearance is configured by {@link SceneModel#highlightMaterial}.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModelEntity is initially selected. Selected appearance is configured by {@link SceneModel#selectedMaterial}.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModelEntity's edges are initially emphasized. Edges appearance is configured by {@link SceneModel#edgeMaterial}.\n * @returns {SceneModelEntity} The new SceneModelEntity.\n */\n createEntity(cfg) {\n if (cfg.id === undefined) {\n cfg.id = math.createUUID();\n } else if (this.scene.components[cfg.id]) {\n this.error(`Scene already has a Component with this ID: ${cfg.id} - will assign random ID`);\n cfg.id = math.createUUID();\n }\n if (cfg.meshIds === undefined) {\n this.error(\"Config missing: meshIds\");\n return;\n }\n let flags = 0;\n if (this._visible && cfg.visible !== false) {\n flags = flags | ENTITY_FLAGS.VISIBLE;\n }\n if (this._pickable && cfg.pickable !== false) {\n flags = flags | ENTITY_FLAGS.PICKABLE;\n }\n if (this._culled && cfg.culled !== false) {\n flags = flags | ENTITY_FLAGS.CULLED;\n }\n if (this._clippable && cfg.clippable !== false) {\n flags = flags | ENTITY_FLAGS.CLIPPABLE;\n }\n if (this._collidable && cfg.collidable !== false) {\n flags = flags | ENTITY_FLAGS.COLLIDABLE;\n }\n if (this._edges && cfg.edges !== false) {\n flags = flags | ENTITY_FLAGS.EDGES;\n }\n if (this._xrayed && cfg.xrayed !== false) {\n flags = flags | ENTITY_FLAGS.XRAYED;\n }\n if (this._highlighted && cfg.highlighted !== false) {\n flags = flags | ENTITY_FLAGS.HIGHLIGHTED;\n }\n if (this._selected && cfg.selected !== false) {\n flags = flags | ENTITY_FLAGS.SELECTED;\n }\n cfg.flags = flags;\n this._createEntity(cfg);\n }\n\n _createEntity(cfg) {\n let meshes = [];\n for (let i = 0, len = cfg.meshIds.length; i < len; i++) {\n const meshId = cfg.meshIds[i];\n let mesh = this._meshes[meshId]; // Trying to get already created mesh\n if (!mesh) { // Checks if there is already created mesh for this meshId\n this.error(`Mesh with this ID not found: \"${meshId}\" - ignoring this mesh`); // There is no such cfg\n continue;\n }\n if (mesh.parent) {\n this.error(`Mesh with ID \"${meshId}\" already belongs to object with ID \"${mesh.parent.id}\" - ignoring this mesh`);\n continue;\n }\n meshes.push(mesh);\n delete this._unusedMeshes[meshId];\n }\n const lodCullable = true;\n const entity = new SceneModelEntity(\n this,\n cfg.isObject,\n cfg.id,\n meshes,\n cfg.flags,\n lodCullable); // Internally sets SceneModelEntity#parent to this SceneModel\n this._entityList.push(entity);\n this._entities[cfg.id] = entity;\n this.numEntities++;\n }\n\n /**\n * Finalizes this SceneModel.\n *\n * Once finalized, you can't add anything more to this SceneModel.\n */\n finalize() {\n if (this.destroyed) {\n return;\n }\n this._createDummyEntityForUnusedMeshes();\n for (let i = 0, len = this.layerList.length; i < len; i++) {\n const layer = this.layerList[i];\n layer.finalize();\n }\n this._geometries = {};\n this._dtxBuckets = {};\n this._textures = {};\n this._textureSets = {};\n this._dtxLayers = {};\n this._vboInstancingLayers = {};\n this._vboBatchingLayers = {};\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n const entity = this._entityList[i];\n entity._finalize();\n }\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n const entity = this._entityList[i];\n entity._finalize2();\n }\n // Sort layers to reduce WebGL shader switching when rendering them\n this.layerList.sort((a, b) => {\n if (a.sortId < b.sortId) {\n return -1;\n }\n if (a.sortId > b.sortId) {\n return 1;\n }\n return 0;\n });\n for (let i = 0, len = this.layerList.length; i < len; i++) {\n const layer = this.layerList[i];\n layer.layerIndex = i;\n }\n this.glRedraw();\n this.scene._aabbDirty = true;\n this._viewMatrixDirty = true;\n this._matrixDirty = true;\n this._aabbDirty = true;\n\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n\n this.position = this._position;\n }\n\n /** @private */\n stateSortCompare(drawable1, drawable2) {\n }\n\n /** @private */\n rebuildRenderFlags() {\n this.renderFlags.reset();\n this._updateRenderFlagsVisibleLayers();\n if (this.renderFlags.numLayers > 0 && this.renderFlags.numVisibleLayers === 0) {\n this.renderFlags.culled = true;\n return;\n }\n this._updateRenderFlags();\n }\n\n /**\n * @private\n */\n _updateRenderFlagsVisibleLayers() {\n const renderFlags = this.renderFlags;\n renderFlags.numLayers = this.layerList.length;\n renderFlags.numVisibleLayers = 0;\n for (let layerIndex = 0, len = this.layerList.length; layerIndex < len; layerIndex++) {\n const layer = this.layerList[layerIndex];\n const layerVisible = this._getActiveSectionPlanesForLayer(layer);\n if (layerVisible) {\n renderFlags.visibleLayers[renderFlags.numVisibleLayers++] = layerIndex;\n }\n }\n }\n\n /** @private */\n _createDummyEntityForUnusedMeshes() {\n const unusedMeshIds = Object.keys(this._unusedMeshes);\n if (unusedMeshIds.length > 0) {\n const entityId = `${this.id}-dummyEntityForUnusedMeshes`;\n this.warn(`Creating dummy SceneModelEntity \"${entityId}\" for unused SceneMeshes: [${unusedMeshIds.join(\",\")}]`)\n this.createEntity({\n id: entityId,\n meshIds: unusedMeshIds,\n isObject: true\n });\n }\n this._unusedMeshes = {};\n }\n\n _getActiveSectionPlanesForLayer(layer) {\n const renderFlags = this.renderFlags;\n const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;\n const numSectionPlanes = sectionPlanes.length;\n const baseIndex = layer.layerIndex * numSectionPlanes;\n if (numSectionPlanes > 0) {\n for (let i = 0; i < numSectionPlanes; i++) {\n const sectionPlane = sectionPlanes[i];\n if (!sectionPlane.active) {\n renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = false;\n } else {\n renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = true;\n renderFlags.sectioned = true;\n }\n }\n }\n return true;\n }\n\n _updateRenderFlags() {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n if (this.numCulledLayerPortions === this.numPortions) {\n return;\n }\n const renderFlags = this.renderFlags;\n renderFlags.colorOpaque = (this.numTransparentLayerPortions < this.numPortions);\n if (this.numTransparentLayerPortions > 0) {\n renderFlags.colorTransparent = true;\n }\n if (this.numXRayedLayerPortions > 0) {\n const xrayMaterial = this.scene.xrayMaterial._state;\n if (xrayMaterial.fill) {\n if (xrayMaterial.fillAlpha < 1.0) {\n renderFlags.xrayedSilhouetteTransparent = true;\n } else {\n renderFlags.xrayedSilhouetteOpaque = true;\n }\n }\n if (xrayMaterial.edges) {\n if (xrayMaterial.edgeAlpha < 1.0) {\n renderFlags.xrayedEdgesTransparent = true;\n } else {\n renderFlags.xrayedEdgesOpaque = true;\n }\n }\n }\n if (this.numEdgesLayerPortions > 0) {\n const edgeMaterial = this.scene.edgeMaterial._state;\n if (edgeMaterial.edges) {\n renderFlags.edgesOpaque = (this.numTransparentLayerPortions < this.numPortions);\n if (this.numTransparentLayerPortions > 0) {\n renderFlags.edgesTransparent = true;\n }\n }\n }\n if (this.numSelectedLayerPortions > 0) {\n const selectedMaterial = this.scene.selectedMaterial._state;\n if (selectedMaterial.fill) {\n if (selectedMaterial.fillAlpha < 1.0) {\n renderFlags.selectedSilhouetteTransparent = true;\n } else {\n renderFlags.selectedSilhouetteOpaque = true;\n }\n }\n if (selectedMaterial.edges) {\n if (selectedMaterial.edgeAlpha < 1.0) {\n renderFlags.selectedEdgesTransparent = true;\n } else {\n renderFlags.selectedEdgesOpaque = true;\n }\n }\n }\n if (this.numHighlightedLayerPortions > 0) {\n const highlightMaterial = this.scene.highlightMaterial._state;\n if (highlightMaterial.fill) {\n if (highlightMaterial.fillAlpha < 1.0) {\n renderFlags.highlightedSilhouetteTransparent = true;\n } else {\n renderFlags.highlightedSilhouetteOpaque = true;\n }\n }\n if (highlightMaterial.edges) {\n if (highlightMaterial.edgeAlpha < 1.0) {\n renderFlags.highlightedEdgesTransparent = true;\n } else {\n renderFlags.highlightedEdgesOpaque = true;\n }\n }\n }\n }\n\n // -------------- RENDERING ---------------------------------------------------------------------------------------\n\n /** @private */\n drawColorOpaque(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawColorOpaque(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawColorTransparent(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawColorTransparent(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawDepth(frameCtx) { // Dedicated to SAO because it skips transparent objects\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawDepth(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawNormals(frameCtx) { // Dedicated to SAO because it skips transparent objects\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawNormals(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteXRayed(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawSilhouetteXRayed(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteHighlighted(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawSilhouetteHighlighted(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteSelected(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawSilhouetteSelected(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesColorOpaque(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesColorOpaque(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesColorTransparent(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesColorTransparent(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesXRayed(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesXRayed(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesHighlighted(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesHighlighted(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesSelected(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesSelected(renderFlags, frameCtx);\n }\n }\n\n /**\n * @private\n */\n drawOcclusion(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawOcclusion(renderFlags, frameCtx);\n }\n }\n\n /**\n * @private\n */\n drawShadow(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawShadow(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n setPickMatrices(pickViewMatrix, pickProjMatrix) {\n if (this._numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n const layer = this.layerList[layerIndex];\n if (layer.setPickMatrices) {\n layer.setPickMatrices(pickViewMatrix, pickProjMatrix);\n }\n }\n }\n\n /** @private */\n drawPickMesh(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawPickMesh(renderFlags, frameCtx);\n }\n }\n\n /**\n * Called by SceneModelMesh.drawPickDepths()\n * @private\n */\n drawPickDepths(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawPickDepths(renderFlags, frameCtx);\n }\n }\n\n /**\n * Called by SceneModelMesh.drawPickNormals()\n * @private\n */\n drawPickNormals(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawPickNormals(renderFlags, frameCtx);\n }\n }\n\n /**\n * @private\n */\n drawSnapInit(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n const layer = this.layerList[layerIndex];\n if (layer.drawSnapInit) {\n frameCtx.snapPickOrigin = [0, 0, 0];\n frameCtx.snapPickCoordinateScale = [1, 1, 1];\n frameCtx.snapPickLayerNumber++;\n layer.drawSnapInit(renderFlags, frameCtx);\n frameCtx.snapPickLayerParams[frameCtx.snapPickLayerNumber] = {\n origin: frameCtx.snapPickOrigin.slice(),\n coordinateScale: frameCtx.snapPickCoordinateScale.slice(),\n };\n }\n }\n }\n\n /**\n * @private\n */\n drawSnap(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n const layer = this.layerList[layerIndex];\n if (layer.drawSnap) {\n frameCtx.snapPickOrigin = [0, 0, 0];\n frameCtx.snapPickCoordinateScale = [1, 1, 1];\n frameCtx.snapPickLayerNumber++;\n layer.drawSnap(renderFlags, frameCtx);\n frameCtx.snapPickLayerParams[frameCtx.snapPickLayerNumber] = {\n origin: frameCtx.snapPickOrigin.slice(),\n coordinateScale: frameCtx.snapPickCoordinateScale.slice(),\n };\n }\n }\n }\n\n /**\n * Destroys this SceneModel.\n */\n destroy() {\n for (let layerId in this._vboBatchingLayers) {\n if (this._vboBatchingLayers.hasOwnProperty(layerId)) {\n this._vboBatchingLayers[layerId].destroy();\n }\n }\n this._vboBatchingLayers = {};\n for (let layerId in this._vboInstancingLayers) {\n if (this._vboInstancingLayers.hasOwnProperty(layerId)) {\n this._vboInstancingLayers[layerId].destroy();\n }\n }\n this._vboInstancingLayers = {};\n this.scene.camera.off(this._onCameraViewMatrix);\n this.scene.off(this._onTick);\n for (let i = 0, len = this.layerList.length; i < len; i++) {\n this.layerList[i].destroy();\n }\n this.layerList = [];\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i]._destroy();\n }\n // Object.entries(this._geometries).forEach(([id, geometry]) => {\n // geometry.destroy();\n // });\n this._geometries = {};\n this._dtxBuckets = {};\n this._textures = {};\n this._textureSets = {};\n this._meshes = {};\n this._entities = {};\n this.scene._aabbDirty = true;\n if (this._isModel) {\n this.scene._deregisterModel(this);\n }\n putScratchMemory();\n super.destroy();\n }\n}\n\n\n/**\n * This function applies two steps to the provided mesh geometry data:\n *\n * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`.\n *\n * - 2nd, it tries to do an optimization called `index rebucketting`\n *\n * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._\n *\n * - _for 32 bit indices, will try to demote them to 16 bit indices_\n * - _for 16 bit indices, will try to demote them to 8 bits indices_\n * - _8 bits indices are kept as-is_\n *\n * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry.\n *\n * The function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`.\n *\n * @param {object} geometry The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays.\n *\n * @param enableVertexWelding\n * @param enableIndexBucketing\n * @returns {object} The mesh information enrichened with `.buckets` key.\n */\nfunction createDTXBuckets(geometry, enableVertexWelding, enableIndexBucketing) {\n let uniquePositionsCompressed, uniqueIndices, uniqueEdgeIndices;\n if (enableVertexWelding || enableIndexBucketing) { // Expensive - careful!\n [\n uniquePositionsCompressed,\n uniqueIndices,\n uniqueEdgeIndices,\n ] = uniquifyPositions({\n positionsCompressed: geometry.positionsCompressed,\n indices: geometry.indices,\n edgeIndices: geometry.edgeIndices\n });\n } else {\n uniquePositionsCompressed = geometry.positionsCompressed;\n uniqueIndices = geometry.indices;\n uniqueEdgeIndices = geometry.edgeIndices;\n }\n let buckets;\n if (enableIndexBucketing) {\n let numUniquePositions = uniquePositionsCompressed.length / 3;\n buckets = rebucketPositions({\n positionsCompressed: uniquePositionsCompressed,\n indices: uniqueIndices,\n edgeIndices: uniqueEdgeIndices,\n },\n (numUniquePositions > (1 << 16)) ? 16 : 8,\n // true\n );\n } else {\n buckets = [{\n positionsCompressed: uniquePositionsCompressed,\n indices: uniqueIndices,\n edgeIndices: uniqueEdgeIndices,\n }];\n }\n return buckets;\n}\n\nfunction\n\ncreateGeometryOBB(geometry) {\n geometry.obb = math.OBB3();\n if (geometry.positionsCompressed && geometry.positionsCompressed.length > 0) {\n const localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, geometry.positionsCompressed);\n geometryCompressionUtils.decompressAABB(localAABB, geometry.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, geometry.obb);\n } else if (geometry.positions && geometry.positions.length > 0) {\n const localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, geometry.positions);\n math.AABB3ToOBB3(localAABB, geometry.obb);\n } else if (geometry.buckets) {\n const localAABB = math.collapseAABB3();\n for (let i = 0, len = geometry.buckets.length; i < len; i++) {\n const bucket = geometry.buckets[i];\n math.expandAABB3Points3(localAABB, bucket.positionsCompressed);\n }\n geometryCompressionUtils.decompressAABB(localAABB, geometry.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, geometry.obb);\n }\n}\n", + "content": "import {Component} from \"../Component.js\";\nimport {math} from \"../math/math.js\";\nimport {buildEdgeIndices} from '../math/buildEdgeIndices.js';\nimport {SceneModelMesh} from './SceneModelMesh.js';\nimport {getScratchMemory, putScratchMemory} from \"./vbo/ScratchMemory.js\";\nimport {VBOBatchingTrianglesLayer} from './vbo/batching/triangles/VBOBatchingTrianglesLayer.js';\nimport {VBOInstancingTrianglesLayer} from './vbo/instancing/triangles/VBOInstancingTrianglesLayer.js';\nimport {VBOBatchingLinesLayer} from './vbo/batching/lines/VBOBatchingLinesLayer.js';\nimport {VBOInstancingLinesLayer} from './vbo/instancing/lines/VBOInstancingLinesLayer.js';\nimport {VBOBatchingPointsLayer} from './vbo/batching/points/VBOBatchingPointsLayer.js';\nimport {VBOInstancingPointsLayer} from './vbo/instancing/points/VBOInstancingPointsLayer.js';\nimport {DTXLinesLayer} from \"./dtx/lines/DTXLinesLayer.js\";\nimport {DTXTrianglesLayer} from \"./dtx/triangles/DTXTrianglesLayer.js\";\nimport {ENTITY_FLAGS} from './ENTITY_FLAGS.js';\nimport {RenderFlags} from \"../webgl/RenderFlags.js\";\nimport {worldToRTCPositions} from \"../math/rtcCoords.js\";\nimport {SceneModelTextureSet} from \"./SceneModelTextureSet.js\";\nimport {SceneModelTexture} from \"./SceneModelTexture.js\";\nimport {Texture2D} from \"../webgl/Texture2D.js\";\nimport {utils} from \"../utils.js\";\nimport {getKTX2TextureTranscoder} from \"../utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js\";\nimport {\n ClampToEdgeWrapping,\n LinearEncoding,\n LinearFilter,\n LinearMipmapLinearFilter,\n LinearMipMapNearestFilter,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipMapLinearFilter,\n NearestMipMapNearestFilter,\n RepeatWrapping,\n sRGBEncoding\n} from \"../constants/constants.js\";\nimport {createPositionsDecodeMatrix, quantizePositions} from \"./compression.js\";\nimport {uniquifyPositions} from \"./calculateUniquePositions.js\";\nimport {rebucketPositions} from \"./rebucketPositions.js\";\nimport {SceneModelEntity} from \"./SceneModelEntity.js\";\nimport {geometryCompressionUtils} from \"../math/geometryCompressionUtils.js\";\nimport {SceneModelTransform} from \"./SceneModelTransform.js\";\n\n\nconst tempVec3a = math.vec3();\n\nconst tempOBB3 = math.OBB3();\nconst tempQuaternion = math.vec4();\n\nconst DEFAULT_SCALE = math.vec3([1, 1, 1]);\nconst DEFAULT_POSITION = math.vec3([0, 0, 0]);\nconst DEFAULT_ROTATION = math.vec3([0, 0, 0]);\nconst DEFAULT_QUATERNION = math.identityQuaternion();\nconst DEFAULT_MATRIX = math.identityMat4();\n\nconst DEFAULT_COLOR_TEXTURE_ID = \"defaultColorTexture\";\nconst DEFAULT_METAL_ROUGH_TEXTURE_ID = \"defaultMetalRoughTexture\";\nconst DEFAULT_NORMALS_TEXTURE_ID = \"defaultNormalsTexture\";\nconst DEFAULT_EMISSIVE_TEXTURE_ID = \"defaultEmissiveTexture\";\nconst DEFAULT_OCCLUSION_TEXTURE_ID = \"defaultOcclusionTexture\";\nconst DEFAULT_TEXTURE_SET_ID = \"defaultTextureSet\";\n\nconst defaultCompressedColor = new Uint8Array([255, 255, 255]);\n\nconst VBO_INSTANCED = 0;\nconst VBO_BATCHED = 1;\nconst DTX = 2;\n\n/**\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * Internally, SceneModel uses a combination of several different techniques to render and represent\n * the different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\n * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\n * serve to demonstrate how to use the capabilities of SceneModel programmatically.\n *\n * * [Loading building models into SceneModels](/examples/buildings)\n * * [Loading city models into SceneModels](/examples/cities)\n * * [Loading LiDAR scans into SceneModels](/examples/lidar)\n * * [Loading CAD models into SceneModels](/examples/cad)\n * * [SceneModel feature tests](/examples/scenemodel)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [SceneModel](#DataTextureSceneModel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates-for-double-precision)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## SceneModel\n *\n * ````SceneModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
    \n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````SceneModel```` is an {@link Entity} that represents a model.\n * * A ````SceneModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````SceneModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a SceneModel representing a table\n * // with four legs, using geometry instancing\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the SceneModel\n * // We'll instance this geometry by five meshes\n *\n * sceneModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a SceneModel\n *\n * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````SceneModel````.\n *\n * Once finalized, we can't add anything more to our ````SceneModel````.\n *\n * ```` javascript\n * SceneModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````SceneModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````SceneModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * import {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a SceneModel representing a table with four legs, using geometry batching\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers SceneModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * sceneModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * sceneModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * sceneModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * sceneModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * sceneModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the SceneModel.\n *\n * SceneModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````SceneModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````SceneModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for Double Precision\n *\n * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0],\n * origin: origin\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * origin: origin, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## Positioning at World-space coordinates\n *\n * To position a SceneModel at given double-precision World coordinates, we can\n * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n * 3D World-space position at which the SceneModel will be located.\n *\n * Note that ````position```` is a single-precision offset relative to ````origin````.\n *\n * ````javascript\n * const origin = [100000000, 0, 100000000];\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"table\",\n * isModel: true,\n * origin: origin, // Everything in this SceneModel is relative to this RTC center\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * sceneModel.createGeometry({\n * id: \"box\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * sceneModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * sceneModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * # Textures\n *\n * ## Loading KTX2 Texture Files into a SceneModel\n *\n * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\n * allow us to load textures into it from KTX2 buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\n * transcoder WASM module.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n *\n * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\n * its {@link KTX2TextureTranscoder}.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const sceneModel = new SceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * sceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * sceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * sceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * sceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * sceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * sceneModel.finalize();\n * });\n * ````\n *\n * @implements {Entity}\n */\nexport class SceneModel extends Component {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this SceneModel represents a model, in which case the SceneModel will be registered by {@link SceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Number[]} [cfg.origin=[0,0,0]] World-space double-precision 3D origin.\n * @param {Number[]} [cfg.position=[0,0,0]] Local, single-precision 3D position, relative to the origin parameter.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModel is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModel is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModel is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModel is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModel is initially included in boundary calculations.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModel is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModel is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModel is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModel's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] SceneModel's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] SceneModel's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this SceneModel. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. SAO is configured by the Scene's {@link SAO} component.\n * @param {Boolean} [cfg.pbrEnabled=true] Indicates if physically-based rendering (PBR) will apply to the SceneModel when {@link Scene#pbrEnabled} is ````true````.\n * @param {Boolean} [cfg.colorTextureEnabled=true] Indicates if base color textures will be rendered for the SceneModel when {@link Scene#colorTextureEnabled} is ````true````.\n * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that SceneModel internally creates for batched geometries.\n * A lower value means less heap allocation/de-allocation while creating/loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while creating/loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n * @param {TextureTranscoder} [cfg.textureTranscoder] Transcoder that will be used internally by {@link SceneModel#createTexture}\n * to convert transcoded texture data. Only required when we'll be providing transcoded data\n * to {@link SceneModel#createTexture}. We assume that all transcoded texture data added to a ````SceneModel````\n * will then in a format supported by this transcoder.\n * @param {Boolean} [cfg.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to\n * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable\n * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point\n * primitives. Only works while {@link DTX#enabled} is also ````true````.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._dtxEnabled = this.scene.dtxEnabled && (cfg.dtxEnabled !== false);\n\n this._enableVertexWelding = false; // Not needed for most objects, and very expensive, so disabled\n this._enableIndexBucketing = false; // Until fixed: https://github.com/xeokit/xeokit-sdk/issues/1204\n\n this._vboBatchingLayerScratchMemory = getScratchMemory();\n this._textureTranscoder = cfg.textureTranscoder || getKTX2TextureTranscoder(this.scene.viewer);\n\n this._maxGeometryBatchSize = cfg.maxGeometryBatchSize;\n\n this._aabb = math.collapseAABB3();\n this._aabbDirty = true;\n\n this._quantizationRanges = {};\n\n this._vboInstancingLayers = {};\n this._vboBatchingLayers = {};\n this._dtxLayers = {};\n\n this._meshList = [];\n\n this.layerList = []; // For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second\n this._entityList = [];\n\n this._geometries = {};\n this._dtxBuckets = {}; // Geometries with optimizations used for data texture representation\n this._textures = {};\n this._textureSets = {};\n this._transforms = {};\n this._meshes = {};\n this._unusedMeshes = {};\n this._entities = {};\n\n /** @private **/\n this.renderFlags = new RenderFlags();\n\n /**\n * @private\n */\n this.numGeometries = 0; // Number of geometries created with createGeometry()\n\n // These counts are used to avoid unnecessary render passes\n // They are incremented or decremented exclusively by BatchingLayer and InstancingLayer\n\n /**\n * @private\n */\n this.numPortions = 0;\n\n /**\n * @private\n */\n this.numVisibleLayerPortions = 0;\n\n /**\n * @private\n */\n this.numTransparentLayerPortions = 0;\n\n /**\n * @private\n */\n this.numXRayedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numHighlightedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numSelectedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numEdgesLayerPortions = 0;\n\n /**\n * @private\n */\n this.numPickableLayerPortions = 0;\n\n /**\n * @private\n */\n this.numClippableLayerPortions = 0;\n\n /**\n * @private\n */\n this.numCulledLayerPortions = 0;\n\n this.numEntities = 0;\n this._numTriangles = 0;\n this._numLines = 0;\n this._numPoints = 0;\n\n this._edgeThreshold = cfg.edgeThreshold || 10;\n\n // Build static matrix\n\n this._origin = math.vec3(cfg.origin || [0, 0, 0]);\n this._position = math.vec3(cfg.position || [0, 0, 0]);\n this._rotation = math.vec3(cfg.rotation || [0, 0, 0]);\n this._quaternion = math.vec4(cfg.quaternion || [0, 0, 0, 1]);\n this._conjugateQuaternion = math.vec4(cfg.quaternion || [0, 0, 0, 1]);\n\n if (cfg.rotation) {\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n }\n this._scale = math.vec3(cfg.scale || [1, 1, 1]);\n\n this._worldRotationMatrix = math.mat4();\n this._worldRotationMatrixConjugate = math.mat4();\n this._matrix = math.mat4();\n this._matrixDirty = true;\n\n this._rebuildMatrices();\n\n this._worldNormalMatrix = math.mat4();\n math.inverseMat4(this._matrix, this._worldNormalMatrix);\n math.transposeMat4(this._worldNormalMatrix);\n\n if (cfg.matrix || cfg.position || cfg.rotation || cfg.scale || cfg.quaternion) {\n this._viewMatrix = math.mat4();\n this._viewNormalMatrix = math.mat4();\n this._viewMatrixDirty = true;\n this._matrixNonIdentity = true;\n }\n\n this._opacity = 1.0;\n this._colorize = [1, 1, 1];\n\n this._saoEnabled = (cfg.saoEnabled !== false);\n this._pbrEnabled = (cfg.pbrEnabled !== false);\n this._colorTextureEnabled = (cfg.colorTextureEnabled !== false);\n\n this._isModel = cfg.isModel;\n if (this._isModel) {\n this.scene._registerModel(this);\n }\n\n this._onCameraViewMatrix = this.scene.camera.on(\"matrix\", () => {\n this._viewMatrixDirty = true;\n });\n\n this._meshesWithDirtyMatrices = [];\n this._numMeshesWithDirtyMatrices = 0;\n\n this._onTick = this.scene.on(\"tick\", () => {\n while (this._numMeshesWithDirtyMatrices > 0) {\n this._meshesWithDirtyMatrices[--this._numMeshesWithDirtyMatrices]._updateMatrix();\n }\n });\n\n this._createDefaultTextureSet();\n\n this.visible = cfg.visible;\n this.culled = cfg.culled;\n this.pickable = cfg.pickable;\n this.clippable = cfg.clippable;\n this.collidable = cfg.collidable;\n this.castsShadow = cfg.castsShadow;\n this.receivesShadow = cfg.receivesShadow;\n this.xrayed = cfg.xrayed;\n this.highlighted = cfg.highlighted;\n this.selected = cfg.selected;\n this.edges = cfg.edges;\n this.colorize = cfg.colorize;\n this.opacity = cfg.opacity;\n this.backfaces = cfg.backfaces;\n }\n\n _meshMatrixDirty(mesh) {\n this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++] = mesh;\n }\n\n _createDefaultTextureSet() {\n // Every SceneModelMesh gets at least the default TextureSet,\n // which contains empty default textures filled with color\n const defaultColorTexture = new SceneModelTexture({\n id: DEFAULT_COLOR_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [1, 1, 1, 1] // [r, g, b, a]})\n })\n });\n const defaultMetalRoughTexture = new SceneModelTexture({\n id: DEFAULT_METAL_ROUGH_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [0, 1, 1, 1] // [unused, roughness, metalness, unused]\n })\n });\n const defaultNormalsTexture = new SceneModelTexture({\n id: DEFAULT_NORMALS_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [0, 0, 0, 0] // [x, y, z, unused] - these must be zeros\n })\n });\n const defaultEmissiveTexture = new SceneModelTexture({\n id: DEFAULT_EMISSIVE_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [0, 0, 0, 1] // [x, y, z, unused]\n })\n });\n const defaultOcclusionTexture = new SceneModelTexture({\n id: DEFAULT_OCCLUSION_TEXTURE_ID,\n texture: new Texture2D({\n gl: this.scene.canvas.gl,\n preloadColor: [1, 1, 1, 1] // [x, y, z, unused]\n })\n });\n this._textures[DEFAULT_COLOR_TEXTURE_ID] = defaultColorTexture;\n this._textures[DEFAULT_METAL_ROUGH_TEXTURE_ID] = defaultMetalRoughTexture;\n this._textures[DEFAULT_NORMALS_TEXTURE_ID] = defaultNormalsTexture;\n this._textures[DEFAULT_EMISSIVE_TEXTURE_ID] = defaultEmissiveTexture;\n this._textures[DEFAULT_OCCLUSION_TEXTURE_ID] = defaultOcclusionTexture;\n this._textureSets[DEFAULT_TEXTURE_SET_ID] = new SceneModelTextureSet({\n id: DEFAULT_TEXTURE_SET_ID,\n model: this,\n colorTexture: defaultColorTexture,\n metallicRoughnessTexture: defaultMetalRoughTexture,\n normalsTexture: defaultNormalsTexture,\n emissiveTexture: defaultEmissiveTexture,\n occlusionTexture: defaultOcclusionTexture\n });\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // SceneModel members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is a SceneModel.\n * @type {Boolean}\n */\n get isPerformanceModel() {\n return true;\n }\n\n /**\n * The {@link SceneModelTransform}s in this SceneModel.\n *\n * Each {#link SceneModelTransform} is stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n */\n get transforms() {\n return this._transforms;\n }\n\n /**\n * The {@link SceneModelTexture}s in this SceneModel.\n *\n * * Each {@link SceneModelTexture} is created with {@link SceneModel.createTexture}.\n * * Each {@link SceneModelTexture} is stored here against its {@link SceneModelTexture.id}.\n *\n * @returns {*|{}}\n */\n get textures() {\n return this._textures;\n }\n\n /**\n * The {@link SceneModelTextureSet}s in this SceneModel.\n *\n * Each {@link SceneModelTextureSet} is stored here against its {@link SceneModelTextureSet.id}.\n *\n * @returns {*|{}}\n */\n get textureSets() {\n return this._textureSets;\n }\n\n /**\n * The {@link SceneModelMesh}es in this SceneModel.\n *\n * Each {@SceneModelMesh} is stored here against its {@link SceneModelMesh.id}.\n *\n * @returns {*|{}}\n */\n get meshes() {\n return this._meshes;\n }\n\n /**\n * The {@link SceneModelEntity}s in this SceneModel.\n *\n * Each {#link SceneModelEntity} in this SceneModel that represents an object is\n * stored here against its {@link SceneModelTransform.id}.\n *\n * @returns {*|{}}\n */\n get objects() {\n return this._entities;\n }\n\n /**\n * Gets the 3D World-space origin for this SceneModel.\n *\n * Each {@link SceneModelMesh.origin}, if supplied, is relative to this origin.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Float64Array}\n */\n get origin() {\n return this._origin;\n }\n\n /**\n * Sets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set position(value) {\n this._position.set(value || [0, 0, 0]);\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the SceneModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get position() {\n return this._position;\n }\n\n /**\n * Sets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set rotation(value) {\n this._rotation.set(value || [0, 0, 0]);\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get rotation() {\n return this._rotation;\n }\n\n /**\n * Sets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n set quaternion(value) {\n this._quaternion.set(value || [0, 0, 0, 1]);\n math.quaternionToEuler(this._quaternion, \"XYZ\", this._rotation);\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the SceneModel's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n get quaternion() {\n return this._quaternion;\n }\n\n /**\n * Sets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n */\n set scale(value) {\n // NOP - deprecated\n }\n\n /**\n * Gets the SceneModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n * @deprecated\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n set matrix(value) {\n this._matrix.set(value || DEFAULT_MATRIX);\n\n math.quaternionToRotationMat4(this._quaternion, this._worldRotationMatrix);\n math.conjugateQuaternion(this._quaternion, this._conjugateQuaternion);\n math.quaternionToRotationMat4(this._quaternion, this._worldRotationMatrixConjugate);\n this._matrix.set(this._worldRotationMatrix);\n math.translateMat4v(this._position, this._matrix);\n\n this._matrixDirty = false;\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the SceneModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n get matrix() {\n if (this._matrixDirty) {\n this._rebuildMatrices();\n }\n return this._matrix;\n }\n\n /**\n * Gets the SceneModel's local modeling rotation transform matrix.\n *\n * @type {Number[]}\n */\n get rotationMatrix() {\n if (this._matrixDirty) {\n this._rebuildMatrices();\n }\n return this._worldRotationMatrix;\n }\n\n _rebuildMatrices() {\n if (this._matrixDirty) {\n math.quaternionToRotationMat4(this._quaternion, this._worldRotationMatrix);\n math.conjugateQuaternion(this._quaternion, this._conjugateQuaternion);\n math.quaternionToRotationMat4(this._quaternion, this._worldRotationMatrixConjugate);\n this._matrix.set(this._worldRotationMatrix);\n math.translateMat4v(this._position, this._matrix);\n this._matrixDirty = false;\n }\n }\n\n /**\n * Gets the conjugate of the SceneModel's local modeling rotation transform matrix.\n *\n * This is used for RTC view matrix management in renderers.\n *\n * @type {Number[]}\n */\n get rotationMatrixConjugate() {\n if (this._matrixDirty) {\n this._rebuildMatrices();\n }\n return this._worldRotationMatrixConjugate;\n }\n\n _setWorldMatrixDirty() {\n this._matrixDirty = true;\n this._aabbDirty = true;\n }\n\n _transformDirty() {\n this._matrixDirty = true;\n this._aabbDirty = true;\n this.scene._aabbDirty = true;\n }\n\n _sceneModelDirty() {\n this.scene._aabbDirty = true;\n this._aabbDirty = true;\n this.scene._aabbDirty = true;\n this._matrixDirty = true;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i]._sceneModelDirty(); // Entities need to retransform their World AABBs by SceneModel's worldMatrix\n }\n }\n\n /**\n * Gets the SceneModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n return this.matrix;\n }\n\n /**\n * Gets the SceneModel's World normal matrix.\n *\n * @type {Number[]}\n */\n get worldNormalMatrix() {\n return this._worldNormalMatrix;\n }\n\n /**\n * Called by private renderers in ./lib, returns the view matrix with which to\n * render this SceneModel. The view matrix is the concatenation of the\n * Camera view matrix with the Performance model's world (modeling) matrix.\n *\n * @private\n */\n get viewMatrix() {\n if (!this._viewMatrix) {\n return this.scene.camera.viewMatrix;\n }\n if (this._matrixDirty) {\n this._rebuildMatrices();\n this._viewMatrixDirty = true;\n }\n if (this._viewMatrixDirty) {\n math.mulMat4(this.scene.camera.viewMatrix, this._matrix, this._viewMatrix);\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n this._viewMatrixDirty = false;\n }\n return this._viewMatrix;\n }\n\n /**\n * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel.\n *\n * @private\n */\n get viewNormalMatrix() {\n if (!this._viewNormalMatrix) {\n return this.scene.camera.viewNormalMatrix;\n }\n if (this._matrixDirty) {\n this._rebuildMatrices();\n this._viewMatrixDirty = true;\n }\n if (this._viewMatrixDirty) {\n math.mulMat4(this.scene.camera.viewMatrix, this._matrix, this._viewMatrix);\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n this._viewMatrixDirty = false;\n }\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n return this._viewNormalMatrix;\n }\n\n /**\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._backfaces;\n }\n\n /**\n * Sets if backfaces are rendered for this SceneModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this SceneModel.\n *\n * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\n * the Viewer will:\n *\n * * hide backfaces on watertight meshes,\n * * show backfaces on open meshes, and\n * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n *\n * @type {Boolean}\n */\n set backfaces(backfaces) {\n backfaces = !!backfaces;\n this._backfaces = backfaces;\n this.glRedraw();\n }\n\n /**\n * Gets the list of {@link SceneModelEntity}s within this SceneModel.\n *\n * @returns {SceneModelEntity[]}\n */\n get entityList() {\n return this._entityList;\n }\n\n /**\n * Returns true to indicate that SceneModel is an {@link Entity}.\n * @type {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this SceneModel represents a model.\n *\n * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in\n * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n */\n get isModel() {\n return this._isModel;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // SceneModel members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns ````false```` to indicate that SceneModel never represents an object.\n *\n * @type {Boolean}\n */\n get isObject() {\n return false;\n }\n\n /**\n * Gets the SceneModel's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n math.expandAABB3(this._aabb, this._entityList[i].aabb);\n }\n this._aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * The approximate number of triangle primitives in this SceneModel.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * The approximate number of line primitives in this SceneModel.\n *\n * @type {Number}\n */\n get numLines() {\n return this._numLines;\n }\n\n /**\n * The approximate number of point primitives in this SceneModel.\n *\n * @type {Number}\n */\n get numPoints() {\n return this._numPoints;\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel are visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get visible() {\n return (this.numVisibleLayerPortions > 0);\n }\n\n /**\n * Sets if this SceneModel is visible.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n **\n * @type {Boolean}\n */\n set visible(visible) {\n visible = visible !== false;\n this._visible = visible;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].visible = visible;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return (this.numXRayedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link SceneModelEntity}s in this SceneModel are xrayed.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n xrayed = !!xrayed;\n this._xrayed = xrayed;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].xrayed = xrayed;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return (this.numHighlightedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link SceneModelEntity}s in this SceneModel are highlighted.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n highlighted = !!highlighted;\n this._highlighted = highlighted;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].highlighted = highlighted;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n */\n get selected() {\n return (this.numSelectedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link SceneModelEntity}s in this SceneModel are selected.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n selected = !!selected;\n this._selected = selected;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].selected = selected;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n */\n get edges() {\n return (this.numEdgesLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link SceneModelEntity}s in this SceneModel have edges emphasised.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n edges = !!edges;\n this._edges = edges;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].edges = edges;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._culled;\n }\n\n /**\n * Sets if this SceneModel is culled from view.\n *\n * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.\n *\n * @type {Boolean}\n */\n set culled(culled) {\n culled = !!culled;\n this._culled = culled;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].culled = culled;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._clippable;\n }\n\n /**\n * Sets if {@link SceneModelEntity}s in this SceneModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n set clippable(clippable) {\n clippable = clippable !== false;\n this._clippable = clippable;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].clippable = clippable;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this SceneModel is collidable.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._collidable;\n }\n\n /**\n * Sets if {@link SceneModelEntity}s in this SceneModel are collidable.\n *\n * @type {Boolean}\n */\n set collidable(collidable) {\n collidable = collidable !== false;\n this._collidable = collidable;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].collidable = collidable;\n }\n }\n\n /**\n * Gets if this SceneModel is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n get pickable() {\n return (this.numPickableLayerPortions > 0);\n }\n\n /**\n * Sets if {@link SceneModelEntity}s in this SceneModel are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(pickable) {\n pickable = pickable !== false;\n this._pickable = pickable;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].pickable = pickable;\n }\n }\n\n /**\n * Gets the RGB colorize color for this SceneModel.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n get colorize() {\n return this._colorize;\n }\n\n /**\n * Sets the RGB colorize color for this SceneModel.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(colorize) {\n this._colorize = colorize;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].colorize = colorize;\n }\n }\n\n /**\n * Gets this SceneModel's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._opacity;\n }\n\n /**\n * Sets the opacity factor for this SceneModel.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n this._opacity = opacity;\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i].opacity = opacity;\n }\n }\n\n /**\n * Gets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._castsShadow;\n }\n\n /**\n * Sets if this SceneModel casts a shadow.\n *\n * @type {Boolean}\n */\n set castsShadow(castsShadow) {\n castsShadow = (castsShadow !== false);\n if (castsShadow !== this._castsShadow) {\n this._castsShadow = castsShadow;\n this.glRedraw();\n }\n }\n\n /**\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._receivesShadow;\n }\n\n /**\n * Sets if this SceneModel can have shadow cast upon it.\n *\n * @type {Boolean}\n */\n set receivesShadow(receivesShadow) {\n receivesShadow = (receivesShadow !== false);\n if (receivesShadow !== this._receivesShadow) {\n this._receivesShadow = receivesShadow;\n this.glRedraw();\n }\n }\n\n /**\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * Only works when {@link SAO#enabled} is also true.\n *\n * @type {Boolean}\n */\n get saoEnabled() {\n return this._saoEnabled;\n }\n\n /**\n * Gets if physically-based rendering (PBR) is enabled for this SceneModel.\n *\n * Only works when {@link Scene#pbrEnabled} is also true.\n *\n * @type {Boolean}\n */\n get pbrEnabled() {\n return this._pbrEnabled;\n }\n\n /**\n * Gets if color textures are enabled for this SceneModel.\n *\n * Only works when {@link Scene#colorTextureEnabled} is also true.\n *\n * @type {Boolean}\n */\n get colorTextureEnabled() {\n return this._colorTextureEnabled;\n }\n\n /**\n * Returns true to indicate that SceneModel is implements {@link Drawable}.\n *\n * @type {Boolean}\n */\n get isDrawable() {\n return true;\n }\n\n /** @private */\n get isStateSortable() {\n return false\n }\n\n /**\n * Configures the appearance of xrayed {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#xrayMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get xrayMaterial() {\n return this.scene.xrayMaterial;\n }\n\n /**\n * Configures the appearance of highlighted {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#highlightMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get highlightMaterial() {\n return this.scene.highlightMaterial;\n }\n\n /**\n * Configures the appearance of selected {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#selectedMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get selectedMaterial() {\n return this.scene.selectedMaterial;\n }\n\n /**\n * Configures the appearance of edges of {@link SceneModelEntity}s within this SceneModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n */\n get edgeMaterial() {\n return this.scene.edgeMaterial;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Drawable members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Called by private renderers in ./lib, returns the picking view matrix with which to\n * ray-pick on this SceneModel.\n *\n * @private\n */\n getPickViewMatrix(pickViewMatrix) {\n if (!this._viewMatrix) {\n return pickViewMatrix;\n }\n return this._viewMatrix;\n }\n\n /**\n *\n * @param cfg\n */\n createQuantizationRange(cfg) {\n if (cfg.id === undefined || cfg.id === null) {\n this.error(\"[createQuantizationRange] Config missing: id\");\n return;\n }\n if (cfg.aabb) {\n this.error(\"[createQuantizationRange] Config missing: aabb\");\n return;\n }\n if (this._quantizationRanges[cfg.id]) {\n this.error(\"[createQuantizationRange] QuantizationRange already created: \" + cfg.id);\n return;\n }\n this._quantizationRanges[cfg.id] = {\n id: cfg.id,\n aabb: cfg.aabb,\n matrix: createPositionsDecodeMatrix(cfg.aabb, math.mat4())\n }\n }\n\n /**\n * Creates a reusable geometry within this SceneModel.\n *\n * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that\n * instance the geometry.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n */\n createGeometry(cfg) {\n if (cfg.id === undefined || cfg.id === null) {\n this.error(\"[createGeometry] Config missing: id\");\n return;\n }\n if (this._geometries[cfg.id]) {\n this.error(\"[createGeometry] Geometry already created: \" + cfg.id);\n return;\n }\n if (cfg.primitive === undefined || cfg.primitive === null) {\n cfg.primitive = \"triangles\";\n }\n if (cfg.primitive !== \"points\" && cfg.primitive !== \"lines\" && cfg.primitive !== \"triangles\" && cfg.primitive !== \"solid\" && cfg.primitive !== \"surface\") {\n this.error(`[createGeometry] Unsupported value for 'primitive': '${cfg.primitive}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`);\n return;\n }\n if (!cfg.positions && !cfg.positionsCompressed && !cfg.buckets) {\n this.error(\"[createGeometry] Param expected: `positions`, `positionsCompressed' or 'buckets\");\n return null;\n }\n if (cfg.positionsCompressed && !cfg.positionsDecodeMatrix && !cfg.positionsDecodeBoundary) {\n this.error(\"[createGeometry] Param expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')\");\n return null;\n }\n if (cfg.positionsDecodeMatrix && cfg.positionsDecodeBoundary) {\n this.error(\"[createGeometry] Only one of these params expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')\");\n return null;\n }\n if (cfg.uvCompressed && !cfg.uvDecodeMatrix) {\n this.error(\"[createGeometry] Param expected: `uvDecodeMatrix` (required for `uvCompressed')\");\n return null;\n }\n if (!cfg.buckets && !cfg.indices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n const numPositions = (cfg.positions || cfg.positionsCompressed).length / 3;\n cfg.indices = this._createDefaultIndices(numPositions);\n }\n if (!cfg.buckets && !cfg.indices && cfg.primitive !== \"points\") {\n this.error(`[createGeometry] Param expected: indices (required for '${cfg.primitive}' primitive type)`);\n return null;\n }\n if (cfg.positionsDecodeBoundary) {\n cfg.positionsDecodeMatrix = createPositionsDecodeMatrix(cfg.positionsDecodeBoundary, math.mat4());\n }\n if (cfg.positions) {\n const aabb = math.collapseAABB3();\n cfg.positionsDecodeMatrix = math.mat4();\n math.expandAABB3Points3(aabb, cfg.positions);\n cfg.positionsCompressed = quantizePositions(cfg.positions, aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n } else if (cfg.positionsCompressed) {\n const aabb = math.collapseAABB3();\n cfg.positionsDecodeMatrix = new Float64Array(cfg.positionsDecodeMatrix);\n cfg.positionsCompressed = new Uint16Array(cfg.positionsCompressed);\n math.expandAABB3Points3(aabb, cfg.positionsCompressed);\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n } else if (cfg.buckets) {\n const aabb = math.collapseAABB3();\n this._dtxBuckets[cfg.id] = cfg.buckets;\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n const bucket = cfg.buckets[i];\n if (bucket.positions) {\n math.expandAABB3Points3(aabb, bucket.positions);\n } else if (bucket.positionsCompressed) {\n math.expandAABB3Points3(aabb, bucket.positionsCompressed);\n }\n }\n if (cfg.positionsDecodeMatrix) {\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n }\n cfg.aabb = aabb;\n }\n if (cfg.colorsCompressed && cfg.colorsCompressed.length > 0) {\n cfg.colorsCompressed = new Uint8Array(cfg.colorsCompressed);\n } else if (cfg.colors && cfg.colors.length > 0) {\n const colors = cfg.colors;\n const colorsCompressed = new Uint8Array(colors.length);\n for (let i = 0, len = colors.length; i < len; i++) {\n colorsCompressed[i] = colors[i] * 255;\n }\n cfg.colorsCompressed = colorsCompressed;\n }\n if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n if (cfg.positions) {\n cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 5.0);\n } else {\n cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0);\n }\n }\n if (cfg.uv) {\n const bounds = geometryCompressionUtils.getUVBounds(cfg.uv);\n const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max);\n cfg.uvCompressed = result.quantized;\n cfg.uvDecodeMatrix = result.decodeMatrix;\n } else if (cfg.uvCompressed) {\n cfg.uvCompressed = new Uint16Array(cfg.uvCompressed);\n cfg.uvDecodeMatrix = new Float64Array(cfg.uvDecodeMatrix);\n }\n if (cfg.normals) { // HACK\n cfg.normals = null;\n }\n this._geometries [cfg.id] = cfg;\n this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0);\n this.numGeometries++;\n }\n\n /**\n * Creates a texture within this SceneModel.\n *\n * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture.\n *\n * @param {*} cfg Texture properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link SceneModel#createTextureSet}.\n * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file\n * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````SceneModel```` is configured with a {@link TextureTranscoder}.\n * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````SceneModel```` is\n * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps.\n * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded.\n * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel.\n * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}.\n * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}.\n * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}..\n * @param {Number} [cfg.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````.\n * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.\n */\n createTexture(cfg) {\n const textureId = cfg.id;\n if (textureId === undefined || textureId === null) {\n this.error(\"[createTexture] Config missing: id\");\n return;\n }\n if (this._textures[textureId]) {\n this.error(\"[createTexture] Texture already created: \" + textureId);\n return;\n }\n if (!cfg.src && !cfg.image && !cfg.buffers) {\n this.error(\"[createTexture] Param expected: `src`, `image' or 'buffers'\");\n return null;\n }\n let minFilter = cfg.minFilter || LinearMipmapLinearFilter;\n if (minFilter !== LinearFilter &&\n minFilter !== LinearMipMapNearestFilter &&\n minFilter !== LinearMipmapLinearFilter &&\n minFilter !== NearestMipMapLinearFilter &&\n minFilter !== NearestMipMapNearestFilter) {\n this.error(`[createTexture] Unsupported value for 'minFilter' - \n supported values are LinearFilter, LinearMipMapNearestFilter, NearestMipMapNearestFilter, \n NearestMipMapLinearFilter and LinearMipmapLinearFilter. Defaulting to LinearMipmapLinearFilter.`);\n minFilter = LinearMipmapLinearFilter;\n }\n let magFilter = cfg.magFilter || LinearFilter;\n if (magFilter !== LinearFilter && magFilter !== NearestFilter) {\n this.error(`[createTexture] Unsupported value for 'magFilter' - supported values are LinearFilter and NearestFilter. Defaulting to LinearFilter.`);\n magFilter = LinearFilter;\n }\n let wrapS = cfg.wrapS || RepeatWrapping;\n if (wrapS !== ClampToEdgeWrapping && wrapS !== MirroredRepeatWrapping && wrapS !== RepeatWrapping) {\n this.error(`[createTexture] Unsupported value for 'wrapS' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.`);\n wrapS = RepeatWrapping;\n }\n let wrapT = cfg.wrapT || RepeatWrapping;\n if (wrapT !== ClampToEdgeWrapping && wrapT !== MirroredRepeatWrapping && wrapT !== RepeatWrapping) {\n this.error(`[createTexture] Unsupported value for 'wrapT' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.`);\n wrapT = RepeatWrapping;\n }\n let wrapR = cfg.wrapR || RepeatWrapping;\n if (wrapR !== ClampToEdgeWrapping && wrapR !== MirroredRepeatWrapping && wrapR !== RepeatWrapping) {\n this.error(`[createTexture] Unsupported value for 'wrapR' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping.`);\n wrapR = RepeatWrapping;\n }\n let encoding = cfg.encoding || LinearEncoding;\n if (encoding !== LinearEncoding && encoding !== sRGBEncoding) {\n this.error(\"[createTexture] Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding.\");\n encoding = LinearEncoding;\n }\n const texture = new Texture2D({\n gl: this.scene.canvas.gl,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n // flipY: cfg.flipY,\n encoding\n });\n if (cfg.preloadColor) {\n texture.setPreloadColor(cfg.preloadColor);\n }\n if (cfg.image) { // Ignore transcoder for Images\n const image = cfg.image;\n image.crossOrigin = \"Anonymous\";\n texture.setImage(image, {minFilter, magFilter, wrapS, wrapT, wrapR, flipY: cfg.flipY, encoding});\n } else if (cfg.src) {\n const ext = cfg.src.split('.').pop();\n switch (ext) { // Don't transcode recognized image file types\n case \"jpeg\":\n case \"jpg\":\n case \"png\":\n case \"gif\":\n const image = new Image();\n image.onload = () => {\n texture.setImage(image, {\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n flipY: cfg.flipY,\n encoding\n });\n this.glRedraw();\n };\n image.src = cfg.src; // URL or Base64 string\n break;\n default: // Assume other file types need transcoding\n if (!this._textureTranscoder) {\n this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${ext}')`);\n } else {\n utils.loadArraybuffer(cfg.src, (arrayBuffer) => {\n if (!arrayBuffer.byteLength) {\n this.error(`[createTexture] Can't create texture from 'src': file data is zero length`);\n return;\n }\n this._textureTranscoder.transcode([arrayBuffer], texture).then(() => {\n this.glRedraw();\n });\n },\n function (errMsg) {\n this.error(`[createTexture] Can't create texture from 'src': ${errMsg}`);\n });\n }\n break;\n }\n } else if (cfg.buffers) { // Buffers implicitly require transcoding\n if (!this._textureTranscoder) {\n this.error(`[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option`);\n } else {\n this._textureTranscoder.transcode(cfg.buffers, texture).then(() => {\n this.glRedraw();\n });\n }\n }\n this._textures[textureId] = new SceneModelTexture({id: textureId, texture});\n }\n\n /**\n * Creates a texture set within this SceneModel.\n *\n * * Stores the new {@link SceneModelTextureSet} in {@link SceneModel#textureSets}.\n *\n * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set\n * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set.\n *\n * The textures can work as a texture atlas, where each mesh can have geometry UVs that index\n * a different part of the textures. This allows us to minimize the number of textures in our models, which\n * means faster rendering.\n *\n * @param {*} cfg Texture set properties.\n * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}.\n * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*.\n * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*.\n * @param {*} [cfg.emissiveTextureId] ID of *RGBA* emissive map texture, with emissive color in *RGB*.\n * @param {*} [cfg.occlusionTextureId] ID of *RGBA* occlusion map texture, with occlusion factor in *R*.\n * @returns {SceneModelTransform} The new texture set.\n */\n createTextureSet(cfg) {\n const textureSetId = cfg.id;\n if (textureSetId === undefined || textureSetId === null) {\n this.error(\"[createTextureSet] Config missing: id\");\n return;\n }\n if (this._textureSets[textureSetId]) {\n this.error(`[createTextureSet] Texture set already created: ${textureSetId}`);\n return;\n }\n let colorTexture;\n if (cfg.colorTextureId !== undefined && cfg.colorTextureId !== null) {\n colorTexture = this._textures[cfg.colorTextureId];\n if (!colorTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.colorTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n colorTexture = this._textures[DEFAULT_COLOR_TEXTURE_ID];\n }\n let metallicRoughnessTexture;\n if (cfg.metallicRoughnessTextureId !== undefined && cfg.metallicRoughnessTextureId !== null) {\n metallicRoughnessTexture = this._textures[cfg.metallicRoughnessTextureId];\n if (!metallicRoughnessTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n metallicRoughnessTexture = this._textures[DEFAULT_METAL_ROUGH_TEXTURE_ID];\n }\n let normalsTexture;\n if (cfg.normalsTextureId !== undefined && cfg.normalsTextureId !== null) {\n normalsTexture = this._textures[cfg.normalsTextureId];\n if (!normalsTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.normalsTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n normalsTexture = this._textures[DEFAULT_NORMALS_TEXTURE_ID];\n }\n let emissiveTexture;\n if (cfg.emissiveTextureId !== undefined && cfg.emissiveTextureId !== null) {\n emissiveTexture = this._textures[cfg.emissiveTextureId];\n if (!emissiveTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.emissiveTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n emissiveTexture = this._textures[DEFAULT_EMISSIVE_TEXTURE_ID];\n }\n let occlusionTexture;\n if (cfg.occlusionTextureId !== undefined && cfg.occlusionTextureId !== null) {\n occlusionTexture = this._textures[cfg.occlusionTextureId];\n if (!occlusionTexture) {\n this.error(`[createTextureSet] Texture not found: ${cfg.occlusionTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n } else {\n occlusionTexture = this._textures[DEFAULT_OCCLUSION_TEXTURE_ID];\n }\n const textureSet = new SceneModelTextureSet({\n id: textureSetId,\n model: this,\n colorTexture,\n metallicRoughnessTexture,\n normalsTexture,\n emissiveTexture,\n occlusionTexture\n });\n this._textureSets[textureSetId] = textureSet;\n return textureSet;\n }\n\n /**\n * Creates a new {@link SceneModelTransform} within this SceneModel.\n *\n * * Stores the new {@link SceneModelTransform} in {@link SceneModel#transforms}.\n * * Can be connected into hierarchies\n * * Each {@link SceneModelTransform} can be used by unlimited {@link SceneModelMesh}es\n *\n * @param {*} cfg Transform creation parameters.\n * @param {String} cfg.id Mandatory ID for the new transform. Must not clash with any existing components within the {@link Scene}.\n * @param {String} [cfg.parentTransformId] ID of a parent transform, previously created with {@link SceneModel#createTextureSet}.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the transform.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the transform as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters.\n * @returns {SceneModelTransform} The new transform.\n */\n createTransform(cfg) {\n if (cfg.id === undefined || cfg.id === null) {\n this.error(\"[createTransform] SceneModel.createTransform() config missing: id\");\n return;\n }\n if (this._transforms[cfg.id]) {\n this.error(`[createTransform] SceneModel already has a transform with this ID: ${cfg.id}`);\n return;\n }\n let parentTransform;\n if (cfg.parentTransformId) {\n parentTransform = this._transforms[cfg.parentTransformId];\n if (!parentTransform) {\n this.error(\"[createTransform] SceneModel.createTransform() config missing: id\");\n return;\n }\n }\n const transform = new SceneModelTransform({\n id: cfg.id,\n model: this,\n parent: parentTransform,\n matrix: cfg.matrix,\n position: cfg.position,\n scale: cfg.scale,\n rotation: cfg.rotation,\n quaternion: cfg.quaternion\n });\n this._transforms[transform.id] = transform;\n return transform;\n }\n\n /**\n * Creates a new {@link SceneModelMesh} within this SceneModel.\n *\n * * It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n * * The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\n * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\n * with {@link SceneModel#createGeometry}.\n * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\n * that the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\n * origin of their RTC coordinate system.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.textureSetId] ID of a {@link SceneModelTextureSet} previously created with {@link SceneModel#createTextureSet}.\n * @param {String|Number} [cfg.transformId] ID of a {@link SceneModelTransform} to instance, previously created with {@link SceneModel#createTransform}. Overrides all other transform parameters given to this method.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry}. Overrides all other geometry parameters given to this method.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````.\n * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````.\n * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with \"triangles\", \"solid\" and \"surface\" primitives. Required for textured rendering.\n * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````.\n * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor.\n * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. Overridden by ````transformId````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````.\n * @param {Number[]} [cfg.quaternion] Rotation of the mesh as a quaternion. Overridden by ````rotation````.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. Also overridden by ````transformId````.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.\n * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.\n * @returns {SceneModelMesh} The new mesh.\n */\n createMesh(cfg) {\n\n if (cfg.id === undefined || cfg.id === null) {\n this.error(\"[createMesh] SceneModel.createMesh() config missing: id\");\n return false;\n }\n\n if (this._meshes[cfg.id]) {\n this.error(`[createMesh] SceneModel already has a mesh with this ID: ${cfg.id}`);\n return false;\n }\n\n const instancing = (cfg.geometryId !== undefined);\n const batching = !instancing;\n\n if (batching) {\n\n // Batched geometry\n\n if (cfg.primitive === undefined || cfg.primitive === null) {\n cfg.primitive = \"triangles\";\n }\n if (cfg.primitive !== \"points\" && cfg.primitive !== \"lines\" && cfg.primitive !== \"triangles\" && cfg.primitive !== \"solid\" && cfg.primitive !== \"surface\") {\n this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`);\n return false;\n }\n if (!cfg.positions && !cfg.positionsCompressed && !cfg.buckets) {\n this.error(\"Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)\");\n return false;\n }\n if (cfg.positions && (cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary)) {\n this.error(\"Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)\");\n return false;\n }\n if (cfg.positionsCompressed && !cfg.positionsDecodeMatrix && !cfg.positionsDecodeBoundary) {\n this.error(\"Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)\");\n return false;\n }\n if (cfg.uvCompressed && !cfg.uvDecodeMatrix) {\n this.error(\"Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)\");\n return false;\n }\n if (!cfg.buckets && !cfg.indices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n const numPositions = (cfg.positions || cfg.positionsCompressed).length / 3;\n cfg.indices = this._createDefaultIndices(numPositions);\n }\n if (!cfg.buckets && !cfg.indices && cfg.primitive !== \"points\") {\n cfg.indices = this._createDefaultIndices(numIndices)\n this.error(`Param expected: indices (required for '${cfg.primitive}' primitive type)`);\n return false;\n }\n if ((cfg.matrix || cfg.position || cfg.rotation || cfg.scale) && (cfg.positionsCompressed || cfg.positionsDecodeBoundary)) {\n this.error(\"Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'\");\n return false;\n }\n\n const useDTX = (!!this._dtxEnabled && (cfg.primitive === \"triangles\"\n || cfg.primitive === \"solid\"\n || cfg.primitive === \"surface\"))\n && (!cfg.textureSetId);\n\n cfg.origin = cfg.origin ? math.addVec3(this._origin, cfg.origin, math.vec3()) : this._origin;\n\n // MATRIX - optional for batching\n\n if (cfg.matrix) {\n cfg.meshMatrix = cfg.matrix;\n } else if (cfg.scale || cfg.rotation || cfg.position || cfg.quaternion) {\n const scale = cfg.scale || DEFAULT_SCALE;\n const position = cfg.position || DEFAULT_POSITION;\n if (cfg.rotation) {\n math.eulerToQuaternion(cfg.rotation, \"XYZ\", tempQuaternion);\n cfg.meshMatrix = math.composeMat4(position, tempQuaternion, scale, math.mat4());\n } else {\n cfg.meshMatrix = math.composeMat4(position, cfg.quaternion || DEFAULT_QUATERNION, scale, math.mat4());\n }\n }\n\n if (cfg.positionsDecodeBoundary) {\n cfg.positionsDecodeMatrix = createPositionsDecodeMatrix(cfg.positionsDecodeBoundary, math.mat4());\n }\n\n if (useDTX) {\n\n // DTX\n\n cfg.type = DTX;\n\n // NPR\n\n cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : defaultCompressedColor;\n cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n\n // RTC\n\n if (cfg.positions) {\n const rtcCenter = math.vec3();\n const rtcPositions = [];\n const rtcNeeded = worldToRTCPositions(cfg.positions, rtcPositions, rtcCenter);\n if (rtcNeeded) {\n cfg.positions = rtcPositions;\n cfg.origin = math.addVec3(cfg.origin, rtcCenter, rtcCenter);\n }\n }\n\n // COMPRESSION\n\n if (cfg.positions) {\n const aabb = math.collapseAABB3();\n cfg.positionsDecodeMatrix = math.mat4();\n math.expandAABB3Points3(aabb, cfg.positions);\n cfg.positionsCompressed = quantizePositions(cfg.positions, aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n\n } else if (cfg.positionsCompressed) {\n const aabb = math.collapseAABB3();\n math.expandAABB3Points3(aabb, cfg.positionsCompressed);\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n\n }\n if (cfg.buckets) {\n const aabb = math.collapseAABB3();\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n const bucket = cfg.buckets[i];\n if (bucket.positions) {\n math.expandAABB3Points3(aabb, bucket.positions);\n } else if (bucket.positionsCompressed) {\n math.expandAABB3Points3(aabb, bucket.positionsCompressed);\n }\n }\n if (cfg.positionsDecodeMatrix) {\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n }\n cfg.aabb = aabb;\n }\n\n if (cfg.meshMatrix) {\n math.AABB3ToOBB3(cfg.aabb, tempOBB3);\n math.transformOBB3(cfg.meshMatrix, tempOBB3);\n math.OBB3ToAABB3(tempOBB3, cfg.aabb);\n }\n\n // EDGES\n\n if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n if (cfg.positions) { // Faster\n cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 2.0);\n } else {\n cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0);\n }\n }\n\n // BUCKETING\n\n if (!cfg.buckets) {\n cfg.buckets = createDTXBuckets(cfg, this._enableVertexWelding && this._enableIndexBucketing);\n }\n\n } else {\n\n // VBO\n\n cfg.type = VBO_BATCHED;\n\n // PBR\n\n cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : [255, 255, 255];\n cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n cfg.metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0;\n cfg.roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255;\n\n // RTC\n\n if (cfg.positions) {\n const rtcPositions = [];\n const rtcNeeded = worldToRTCPositions(cfg.positions, rtcPositions, tempVec3a);\n if (rtcNeeded) {\n cfg.positions = rtcPositions;\n cfg.origin = math.addVec3(cfg.origin, tempVec3a, math.vec3());\n }\n }\n\n if (cfg.positions) {\n const aabb = math.collapseAABB3();\n if (cfg.meshMatrix) {\n math.transformPositions3(cfg.meshMatrix, cfg.positions, cfg.positions);\n cfg.meshMatrix = null; // Positions now baked, don't need any more\n }\n math.expandAABB3Points3(aabb, cfg.positions);\n cfg.aabb = aabb;\n\n } else {\n const aabb = math.collapseAABB3();\n math.expandAABB3Points3(aabb, cfg.positionsCompressed);\n geometryCompressionUtils.decompressAABB(aabb, cfg.positionsDecodeMatrix);\n cfg.aabb = aabb;\n }\n\n if (cfg.meshMatrix) {\n math.AABB3ToOBB3(cfg.aabb, tempOBB3);\n math.transformOBB3(cfg.meshMatrix, tempOBB3);\n math.OBB3ToAABB3(tempOBB3, cfg.aabb);\n }\n\n // EDGES\n\n if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === \"triangles\" || cfg.primitive === \"solid\" || cfg.primitive === \"surface\")) {\n if (cfg.positions) {\n cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 2.0);\n } else {\n cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0);\n }\n }\n\n // TEXTURE\n\n // cfg.textureSetId = cfg.textureSetId || DEFAULT_TEXTURE_SET_ID;\n if (cfg.textureSetId) {\n cfg.textureSet = this._textureSets[cfg.textureSetId];\n if (!cfg.textureSet) {\n this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`);\n return false;\n }\n }\n }\n\n } else {\n\n // INSTANCING\n\n if (cfg.positions || cfg.positionsCompressed || cfg.indices || cfg.edgeIndices || cfg.normals || cfg.normalsCompressed || cfg.uv || cfg.uvCompressed || cfg.positionsDecodeMatrix) {\n this.error(`Mesh geometry parameters not expected when instancing a geometry (not expected: positions, positionsCompressed, indices, edgeIndices, normals, normalsCompressed, uv, uvCompressed, positionsDecodeMatrix)`);\n return false;\n }\n\n cfg.geometry = this._geometries[cfg.geometryId];\n if (!cfg.geometry) {\n this.error(`[createMesh] Geometry not found: ${cfg.geometryId} - ensure that you create it first with createGeometry()`);\n return false;\n }\n\n cfg.origin = cfg.origin ? math.addVec3(this._origin, cfg.origin, math.vec3()) : this._origin;\n cfg.positionsDecodeMatrix = cfg.geometry.positionsDecodeMatrix;\n\n if (cfg.transformId) {\n\n // TRANSFORM\n\n cfg.transform = this._transforms[cfg.transformId];\n\n if (!cfg.transform) {\n this.error(`[createMesh] Transform not found: ${cfg.transformId} - ensure that you create it first with createTransform()`);\n return false;\n }\n\n cfg.aabb = cfg.geometry.aabb;\n\n } else {\n\n // MATRIX\n\n if (cfg.matrix) {\n cfg.meshMatrix = cfg.matrix;\n } else if (cfg.scale || cfg.rotation || cfg.position || cfg.quaternion) {\n const scale = cfg.scale || DEFAULT_SCALE;\n const position = cfg.position || DEFAULT_POSITION;\n if (cfg.rotation) {\n math.eulerToQuaternion(cfg.rotation, \"XYZ\", tempQuaternion);\n cfg.meshMatrix = math.composeMat4(position, tempQuaternion, scale, math.mat4());\n } else {\n cfg.meshMatrix = math.composeMat4(position, cfg.quaternion || DEFAULT_QUATERNION, scale, math.mat4());\n }\n }\n\n math.AABB3ToOBB3(cfg.geometry.aabb, tempOBB3);\n math.transformOBB3(cfg.meshMatrix, tempOBB3);\n cfg.aabb = math.OBB3ToAABB3(tempOBB3, math.AABB3());\n }\n\n const useDTX = (!!this._dtxEnabled\n && (cfg.geometry.primitive === \"triangles\"\n || cfg.geometry.primitive === \"solid\"\n || cfg.geometry.primitive === \"surface\"))\n && (!cfg.textureSetId);\n\n if (useDTX) {\n\n // DTX\n\n cfg.type = DTX;\n\n // NPR\n\n cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : defaultCompressedColor;\n cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n\n // BUCKETING - lazy generated, reused\n\n let buckets = this._dtxBuckets[cfg.geometryId];\n if (!buckets) {\n buckets = createDTXBuckets(cfg.geometry, this._enableVertexWelding, this._enableIndexBucketing);\n this._dtxBuckets[cfg.geometryId] = buckets;\n }\n cfg.buckets = buckets;\n\n } else {\n\n // VBO\n\n cfg.type = VBO_INSTANCED;\n\n // PBR\n\n cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : defaultCompressedColor;\n cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n cfg.metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0;\n cfg.roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255;\n\n // TEXTURE\n\n if (cfg.textureSetId) {\n cfg.textureSet = this._textureSets[cfg.textureSetId];\n // if (!cfg.textureSet) {\n // this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`);\n // return false;\n // }\n }\n }\n }\n\n cfg.numPrimitives = this._getNumPrimitives(cfg);\n\n return this._createMesh(cfg);\n }\n\n _createMesh(cfg) {\n const mesh = new SceneModelMesh(this, cfg.id, cfg.color, cfg.opacity, cfg.transform, cfg.textureSet);\n mesh.pickId = this.scene._renderer.getPickID(mesh);\n const pickId = mesh.pickId;\n const a = pickId >> 24 & 0xFF;\n const b = pickId >> 16 & 0xFF;\n const g = pickId >> 8 & 0xFF;\n const r = pickId & 0xFF;\n cfg.pickColor = new Uint8Array([r, g, b, a]); // Quantized pick color\n cfg.solid = (cfg.primitive === \"solid\");\n mesh.origin = math.vec3(cfg.origin);\n switch (cfg.type) {\n case DTX:\n mesh.layer = this._getDTXLayer(cfg);\n mesh.aabb = cfg.aabb;\n break;\n case VBO_BATCHED:\n mesh.layer = this._getVBOBatchingLayer(cfg);\n mesh.aabb = cfg.aabb;\n break;\n case VBO_INSTANCED:\n mesh.layer = this._getVBOInstancingLayer(cfg);\n mesh.aabb = cfg.aabb;\n break;\n }\n if (cfg.transform) {\n cfg.meshMatrix = cfg.transform.worldMatrix;\n }\n mesh.portionId = mesh.layer.createPortion(mesh, cfg);\n this._meshes[cfg.id] = mesh;\n this._unusedMeshes[cfg.id] = mesh;\n this._meshList.push(mesh);\n return mesh;\n }\n\n _getNumPrimitives(cfg) {\n let countIndices = 0;\n const primitive = cfg.geometry ? cfg.geometry.primitive : cfg.primitive;\n switch (primitive) {\n case \"triangles\":\n case \"solid\":\n case \"surface\":\n switch (cfg.type) {\n case DTX:\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n countIndices += cfg.buckets[i].indices.length;\n }\n break;\n case VBO_BATCHED:\n countIndices += cfg.indices.length;\n break;\n case VBO_INSTANCED:\n countIndices += cfg.geometry.indices.length;\n break;\n }\n return Math.round(countIndices / 3);\n case \"points\":\n switch (cfg.type) {\n case DTX:\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n countIndices += cfg.buckets[i].positionsCompressed.length;\n }\n break;\n case VBO_BATCHED:\n countIndices += cfg.positions ? cfg.positions.length : cfg.positionsCompressed.length;\n break;\n case VBO_INSTANCED:\n const geometry = cfg.geometry;\n countIndices += geometry.positions ? geometry.positions.length : geometry.positionsCompressed.length;\n break;\n }\n return Math.round(countIndices);\n case \"lines\":\n case \"line-strip\":\n switch (cfg.type) {\n case DTX:\n for (let i = 0, len = cfg.buckets.length; i < len; i++) {\n countIndices += cfg.buckets[i].indices.length;\n }\n break;\n case VBO_BATCHED:\n countIndices += cfg.indices.length;\n break;\n case VBO_INSTANCED:\n countIndices += cfg.geometry.indices.length;\n break;\n }\n return Math.round(countIndices / 2);\n }\n return 0;\n }\n\n _getDTXLayer(cfg) {\n const origin = cfg.origin;\n const primitive = cfg.geometry ? cfg.geometry.primitive : cfg.primitive;\n const layerId = `.${primitive}.${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}`;\n let dtxLayer = this._dtxLayers[layerId];\n if (dtxLayer) {\n if (!dtxLayer.canCreatePortion(cfg)) {\n dtxLayer.finalize();\n delete this._dtxLayers[layerId];\n dtxLayer = null;\n } else {\n return dtxLayer;\n }\n }\n switch (primitive) {\n case \"triangles\":\n case \"solid\":\n case \"surface\":\n dtxLayer = new DTXTrianglesLayer(this, {layerIndex: 0, origin}); // layerIndex is set in #finalize()\n break;\n case \"lines\":\n dtxLayer = new DTXLinesLayer(this, {layerIndex: 0, origin}); // layerIndex is set in #finalize()\n break;\n default:\n return;\n }\n this._dtxLayers[layerId] = dtxLayer;\n this.layerList.push(dtxLayer);\n return dtxLayer;\n }\n\n _getVBOBatchingLayer(cfg) {\n const model = this;\n const origin = cfg.origin;\n const positionsDecodeHash = cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary ?\n this._createHashStringFromMatrix(cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary)\n : \"-\";\n const textureSetId = cfg.textureSetId || \"-\";\n const layerId = `${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}.${cfg.primitive}.${positionsDecodeHash}.${textureSetId}`;\n let vboBatchingLayer = this._vboBatchingLayers[layerId];\n if (vboBatchingLayer) {\n return vboBatchingLayer;\n }\n let textureSet = cfg.textureSet;\n while (!vboBatchingLayer) {\n switch (cfg.primitive) {\n case \"triangles\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);\n vboBatchingLayer = new VBOBatchingTrianglesLayer({\n model,\n textureSet,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n solid: (cfg.primitive === \"solid\"),\n autoNormals: true\n });\n break;\n case \"solid\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);\n vboBatchingLayer = new VBOBatchingTrianglesLayer({\n model,\n textureSet,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n solid: (cfg.primitive === \"solid\"),\n autoNormals: true\n });\n break;\n case \"surface\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesBatchingLayer`);\n vboBatchingLayer = new VBOBatchingTrianglesLayer({\n model,\n textureSet,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n solid: (cfg.primitive === \"solid\"),\n autoNormals: true\n });\n break;\n case \"lines\":\n // console.info(`[SceneModel ${this.id}]: creating VBOBatchingLinesLayer`);\n vboBatchingLayer = new VBOBatchingLinesLayer({\n model,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize\n });\n break;\n case \"points\":\n // console.info(`[SceneModel ${this.id}]: creating VBOBatchingPointsLayer`);\n vboBatchingLayer = new VBOBatchingPointsLayer({\n model,\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._vboBatchingLayerScratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined\n origin,\n maxGeometryBatchSize: this._maxGeometryBatchSize\n });\n break;\n }\n const lenPositions = cfg.positionsCompressed ? cfg.positionsCompressed.length : cfg.positions.length;\n const canCreatePortion = (cfg.primitive === \"points\")\n ? vboBatchingLayer.canCreatePortion(lenPositions)\n : vboBatchingLayer.canCreatePortion(lenPositions, cfg.indices.length);\n if (!canCreatePortion) {\n vboBatchingLayer.finalize();\n delete this._vboBatchingLayers[layerId];\n vboBatchingLayer = null;\n }\n }\n this._vboBatchingLayers[layerId] = vboBatchingLayer;\n this.layerList.push(vboBatchingLayer);\n return vboBatchingLayer;\n }\n\n _createHashStringFromMatrix(matrix) {\n const matrixString = matrix.join('');\n let hash = 0;\n for (let i = 0; i < matrixString.length; i++) {\n const char = matrixString.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash |= 0; // Convert to 32-bit integer\n }\n const hashString = (hash >>> 0).toString(16);\n return hashString;\n }\n\n _getVBOInstancingLayer(cfg) {\n const model = this;\n const origin = cfg.origin;\n const textureSetId = cfg.textureSetId || \"-\";\n const geometryId = cfg.geometryId;\n const layerId = `${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}.${textureSetId}.${geometryId}`;\n let vboInstancingLayer = this._vboInstancingLayers[layerId];\n if (vboInstancingLayer) {\n return vboInstancingLayer;\n }\n let textureSet = cfg.textureSet;\n const geometry = cfg.geometry;\n while (!vboInstancingLayer) {\n switch (geometry.primitive) {\n case \"triangles\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);\n vboInstancingLayer = new VBOInstancingTrianglesLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0,\n solid: false\n });\n break;\n case \"solid\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);\n vboInstancingLayer = new VBOInstancingTrianglesLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0,\n solid: true\n });\n break;\n case \"surface\":\n // console.info(`[SceneModel ${this.id}]: creating TrianglesInstancingLayer`);\n vboInstancingLayer = new VBOInstancingTrianglesLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0,\n solid: false\n });\n break;\n case \"lines\":\n // console.info(`[SceneModel ${this.id}]: creating VBOInstancingLinesLayer`);\n vboInstancingLayer = new VBOInstancingLinesLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0\n });\n break;\n case \"points\":\n // console.info(`[SceneModel ${this.id}]: creating PointsInstancingLayer`);\n vboInstancingLayer = new VBOInstancingPointsLayer({\n model,\n textureSet,\n geometry,\n origin,\n layerIndex: 0\n });\n break;\n }\n // const lenPositions = geometry.positionsCompressed.length;\n // if (!vboInstancingLayer.canCreatePortion(lenPositions, geometry.indices.length)) { // FIXME: indices should be optional\n // vboInstancingLayer.finalize();\n // delete this._vboInstancingLayers[layerId];\n // vboInstancingLayer = null;\n // }\n }\n this._vboInstancingLayers[layerId] = vboInstancingLayer;\n this.layerList.push(vboInstancingLayer);\n return vboInstancingLayer;\n }\n\n /**\n * Creates a {@link SceneModelEntity} within this SceneModel.\n *\n * * Gives the SceneModelEntity one or more {@link SceneModelMesh}es previously created with\n * {@link SceneModel#createMesh}. A SceneModelMesh can only belong to one SceneModelEntity, so you'll get an\n * error if you try to reuse a mesh among multiple SceneModelEntitys.\n * * The SceneModelEntity can have a {@link SceneModelTextureSet}, previously created with\n * {@link SceneModel#createTextureSet}. A SceneModelTextureSet can belong to multiple SceneModelEntitys.\n * * The SceneModelEntity can have a geometry, previously created with\n * {@link SceneModel#createTextureSet}. A geometry is a \"virtual component\" and can belong to multiple SceneModelEntitys.\n *\n * @param {Object} cfg SceneModelEntity configuration.\n * @param {String} cfg.id Optional ID for the new SceneModelEntity. Must not clash with any existing components within the {@link Scene}.\n * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link SceneModel@createMesh}.\n * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link SceneModelEntity} represents an object, in which case it will be registered by {@link SceneModelEntity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Boolean} [cfg.visible=true] Indicates if the SceneModelEntity is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the SceneModelEntity is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModelEntity is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModelEntity is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModelEntity is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the SceneModelEntity initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the SceneModelEntity initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModelEntity is initially xrayed. XRayed appearance is configured by {@link SceneModel#xrayMaterial}.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModelEntity is initially highlighted. Highlighted appearance is configured by {@link SceneModel#highlightMaterial}.\n * @param {Boolean} [cfg.selected=false] Indicates if the SceneModelEntity is initially selected. Selected appearance is configured by {@link SceneModel#selectedMaterial}.\n * @param {Boolean} [cfg.edges=false] Indicates if the SceneModelEntity's edges are initially emphasized. Edges appearance is configured by {@link SceneModel#edgeMaterial}.\n * @returns {SceneModelEntity} The new SceneModelEntity.\n */\n createEntity(cfg) {\n if (cfg.id === undefined) {\n cfg.id = math.createUUID();\n } else if (this.scene.components[cfg.id]) {\n this.error(`Scene already has a Component with this ID: ${cfg.id} - will assign random ID`);\n cfg.id = math.createUUID();\n }\n if (cfg.meshIds === undefined) {\n this.error(\"Config missing: meshIds\");\n return;\n }\n let flags = 0;\n if (this._visible && cfg.visible !== false) {\n flags = flags | ENTITY_FLAGS.VISIBLE;\n }\n if (this._pickable && cfg.pickable !== false) {\n flags = flags | ENTITY_FLAGS.PICKABLE;\n }\n if (this._culled && cfg.culled !== false) {\n flags = flags | ENTITY_FLAGS.CULLED;\n }\n if (this._clippable && cfg.clippable !== false) {\n flags = flags | ENTITY_FLAGS.CLIPPABLE;\n }\n if (this._collidable && cfg.collidable !== false) {\n flags = flags | ENTITY_FLAGS.COLLIDABLE;\n }\n if (this._edges && cfg.edges !== false) {\n flags = flags | ENTITY_FLAGS.EDGES;\n }\n if (this._xrayed && cfg.xrayed !== false) {\n flags = flags | ENTITY_FLAGS.XRAYED;\n }\n if (this._highlighted && cfg.highlighted !== false) {\n flags = flags | ENTITY_FLAGS.HIGHLIGHTED;\n }\n if (this._selected && cfg.selected !== false) {\n flags = flags | ENTITY_FLAGS.SELECTED;\n }\n cfg.flags = flags;\n this._createEntity(cfg);\n }\n\n _createEntity(cfg) {\n let meshes = [];\n for (let i = 0, len = cfg.meshIds.length; i < len; i++) {\n const meshId = cfg.meshIds[i];\n let mesh = this._meshes[meshId]; // Trying to get already created mesh\n if (!mesh) { // Checks if there is already created mesh for this meshId\n this.error(`Mesh with this ID not found: \"${meshId}\" - ignoring this mesh`); // There is no such cfg\n continue;\n }\n if (mesh.parent) {\n this.error(`Mesh with ID \"${meshId}\" already belongs to object with ID \"${mesh.parent.id}\" - ignoring this mesh`);\n continue;\n }\n meshes.push(mesh);\n delete this._unusedMeshes[meshId];\n }\n const lodCullable = true;\n const entity = new SceneModelEntity(\n this,\n cfg.isObject,\n cfg.id,\n meshes,\n cfg.flags,\n lodCullable); // Internally sets SceneModelEntity#parent to this SceneModel\n this._entityList.push(entity);\n this._entities[cfg.id] = entity;\n this.numEntities++;\n }\n\n /**\n * Finalizes this SceneModel.\n *\n * Once finalized, you can't add anything more to this SceneModel.\n */\n finalize() {\n if (this.destroyed) {\n return;\n }\n this._createDummyEntityForUnusedMeshes();\n for (let i = 0, len = this.layerList.length; i < len; i++) {\n const layer = this.layerList[i];\n layer.finalize();\n }\n this._geometries = {};\n this._dtxBuckets = {};\n this._textures = {};\n this._textureSets = {};\n this._dtxLayers = {};\n this._vboInstancingLayers = {};\n this._vboBatchingLayers = {};\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n const entity = this._entityList[i];\n entity._finalize();\n }\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n const entity = this._entityList[i];\n entity._finalize2();\n }\n // Sort layers to reduce WebGL shader switching when rendering them\n this.layerList.sort((a, b) => {\n if (a.sortId < b.sortId) {\n return -1;\n }\n if (a.sortId > b.sortId) {\n return 1;\n }\n return 0;\n });\n for (let i = 0, len = this.layerList.length; i < len; i++) {\n const layer = this.layerList[i];\n layer.layerIndex = i;\n }\n this.glRedraw();\n this.scene._aabbDirty = true;\n this._viewMatrixDirty = true;\n this._matrixDirty = true;\n this._aabbDirty = true;\n\n this._setWorldMatrixDirty();\n this._sceneModelDirty();\n\n this.position = this._position;\n }\n\n /** @private */\n stateSortCompare(drawable1, drawable2) {\n }\n\n /** @private */\n rebuildRenderFlags() {\n this.renderFlags.reset();\n this._updateRenderFlagsVisibleLayers();\n if (this.renderFlags.numLayers > 0 && this.renderFlags.numVisibleLayers === 0) {\n this.renderFlags.culled = true;\n return;\n }\n this._updateRenderFlags();\n }\n\n /**\n * @private\n */\n _updateRenderFlagsVisibleLayers() {\n const renderFlags = this.renderFlags;\n renderFlags.numLayers = this.layerList.length;\n renderFlags.numVisibleLayers = 0;\n for (let layerIndex = 0, len = this.layerList.length; layerIndex < len; layerIndex++) {\n const layer = this.layerList[layerIndex];\n const layerVisible = this._getActiveSectionPlanesForLayer(layer);\n if (layerVisible) {\n renderFlags.visibleLayers[renderFlags.numVisibleLayers++] = layerIndex;\n }\n }\n }\n\n /** @private */\n _createDummyEntityForUnusedMeshes() {\n const unusedMeshIds = Object.keys(this._unusedMeshes);\n if (unusedMeshIds.length > 0) {\n const entityId = `${this.id}-dummyEntityForUnusedMeshes`;\n this.warn(`Creating dummy SceneModelEntity \"${entityId}\" for unused SceneMeshes: [${unusedMeshIds.join(\",\")}]`)\n this.createEntity({\n id: entityId,\n meshIds: unusedMeshIds,\n isObject: true\n });\n }\n this._unusedMeshes = {};\n }\n\n _getActiveSectionPlanesForLayer(layer) {\n const renderFlags = this.renderFlags;\n const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;\n const numSectionPlanes = sectionPlanes.length;\n const baseIndex = layer.layerIndex * numSectionPlanes;\n if (numSectionPlanes > 0) {\n for (let i = 0; i < numSectionPlanes; i++) {\n const sectionPlane = sectionPlanes[i];\n if (!sectionPlane.active) {\n renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = false;\n } else {\n renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = true;\n renderFlags.sectioned = true;\n }\n }\n }\n return true;\n }\n\n _updateRenderFlags() {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n if (this.numCulledLayerPortions === this.numPortions) {\n return;\n }\n const renderFlags = this.renderFlags;\n renderFlags.colorOpaque = (this.numTransparentLayerPortions < this.numPortions);\n if (this.numTransparentLayerPortions > 0) {\n renderFlags.colorTransparent = true;\n }\n if (this.numXRayedLayerPortions > 0) {\n const xrayMaterial = this.scene.xrayMaterial._state;\n if (xrayMaterial.fill) {\n if (xrayMaterial.fillAlpha < 1.0) {\n renderFlags.xrayedSilhouetteTransparent = true;\n } else {\n renderFlags.xrayedSilhouetteOpaque = true;\n }\n }\n if (xrayMaterial.edges) {\n if (xrayMaterial.edgeAlpha < 1.0) {\n renderFlags.xrayedEdgesTransparent = true;\n } else {\n renderFlags.xrayedEdgesOpaque = true;\n }\n }\n }\n if (this.numEdgesLayerPortions > 0) {\n const edgeMaterial = this.scene.edgeMaterial._state;\n if (edgeMaterial.edges) {\n renderFlags.edgesOpaque = (this.numTransparentLayerPortions < this.numPortions);\n if (this.numTransparentLayerPortions > 0) {\n renderFlags.edgesTransparent = true;\n }\n }\n }\n if (this.numSelectedLayerPortions > 0) {\n const selectedMaterial = this.scene.selectedMaterial._state;\n if (selectedMaterial.fill) {\n if (selectedMaterial.fillAlpha < 1.0) {\n renderFlags.selectedSilhouetteTransparent = true;\n } else {\n renderFlags.selectedSilhouetteOpaque = true;\n }\n }\n if (selectedMaterial.edges) {\n if (selectedMaterial.edgeAlpha < 1.0) {\n renderFlags.selectedEdgesTransparent = true;\n } else {\n renderFlags.selectedEdgesOpaque = true;\n }\n }\n }\n if (this.numHighlightedLayerPortions > 0) {\n const highlightMaterial = this.scene.highlightMaterial._state;\n if (highlightMaterial.fill) {\n if (highlightMaterial.fillAlpha < 1.0) {\n renderFlags.highlightedSilhouetteTransparent = true;\n } else {\n renderFlags.highlightedSilhouetteOpaque = true;\n }\n }\n if (highlightMaterial.edges) {\n if (highlightMaterial.edgeAlpha < 1.0) {\n renderFlags.highlightedEdgesTransparent = true;\n } else {\n renderFlags.highlightedEdgesOpaque = true;\n }\n }\n }\n }\n\n // -------------- RENDERING ---------------------------------------------------------------------------------------\n\n /** @private */\n drawColorOpaque(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawColorOpaque(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawColorTransparent(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawColorTransparent(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawDepth(frameCtx) { // Dedicated to SAO because it skips transparent objects\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawDepth(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawNormals(frameCtx) { // Dedicated to SAO because it skips transparent objects\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawNormals(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteXRayed(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawSilhouetteXRayed(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteHighlighted(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawSilhouetteHighlighted(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteSelected(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawSilhouetteSelected(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesColorOpaque(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesColorOpaque(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesColorTransparent(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesColorTransparent(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesXRayed(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesXRayed(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesHighlighted(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesHighlighted(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesSelected(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawEdgesSelected(renderFlags, frameCtx);\n }\n }\n\n /**\n * @private\n */\n drawOcclusion(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawOcclusion(renderFlags, frameCtx);\n }\n }\n\n /**\n * @private\n */\n drawShadow(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawShadow(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n setPickMatrices(pickViewMatrix, pickProjMatrix) {\n if (this._numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n const layer = this.layerList[layerIndex];\n if (layer.setPickMatrices) {\n layer.setPickMatrices(pickViewMatrix, pickProjMatrix);\n }\n }\n }\n\n /** @private */\n drawPickMesh(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawPickMesh(renderFlags, frameCtx);\n }\n }\n\n /**\n * Called by SceneModelMesh.drawPickDepths()\n * @private\n */\n drawPickDepths(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawPickDepths(renderFlags, frameCtx);\n }\n }\n\n /**\n * Called by SceneModelMesh.drawPickNormals()\n * @private\n */\n drawPickNormals(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this.layerList[layerIndex].drawPickNormals(renderFlags, frameCtx);\n }\n }\n\n /**\n * @private\n */\n drawSnapInit(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n const layer = this.layerList[layerIndex];\n if (layer.drawSnapInit) {\n frameCtx.snapPickOrigin = [0, 0, 0];\n frameCtx.snapPickCoordinateScale = [1, 1, 1];\n frameCtx.snapPickLayerNumber++;\n layer.drawSnapInit(renderFlags, frameCtx);\n frameCtx.snapPickLayerParams[frameCtx.snapPickLayerNumber] = {\n origin: frameCtx.snapPickOrigin.slice(),\n coordinateScale: frameCtx.snapPickCoordinateScale.slice(),\n };\n }\n }\n }\n\n /**\n * @private\n */\n drawSnap(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n const layer = this.layerList[layerIndex];\n if (layer.drawSnap) {\n frameCtx.snapPickOrigin = [0, 0, 0];\n frameCtx.snapPickCoordinateScale = [1, 1, 1];\n frameCtx.snapPickLayerNumber++;\n layer.drawSnap(renderFlags, frameCtx);\n frameCtx.snapPickLayerParams[frameCtx.snapPickLayerNumber] = {\n origin: frameCtx.snapPickOrigin.slice(),\n coordinateScale: frameCtx.snapPickCoordinateScale.slice(),\n };\n }\n }\n }\n\n /**\n * Destroys this SceneModel.\n */\n destroy() {\n for (let layerId in this._vboBatchingLayers) {\n if (this._vboBatchingLayers.hasOwnProperty(layerId)) {\n this._vboBatchingLayers[layerId].destroy();\n }\n }\n this._vboBatchingLayers = {};\n for (let layerId in this._vboInstancingLayers) {\n if (this._vboInstancingLayers.hasOwnProperty(layerId)) {\n this._vboInstancingLayers[layerId].destroy();\n }\n }\n this._vboInstancingLayers = {};\n this.scene.camera.off(this._onCameraViewMatrix);\n this.scene.off(this._onTick);\n for (let i = 0, len = this.layerList.length; i < len; i++) {\n this.layerList[i].destroy();\n }\n this.layerList = [];\n for (let i = 0, len = this._entityList.length; i < len; i++) {\n this._entityList[i]._destroy();\n }\n // Object.entries(this._geometries).forEach(([id, geometry]) => {\n // geometry.destroy();\n // });\n this._geometries = {};\n this._dtxBuckets = {};\n this._textures = {};\n this._textureSets = {};\n this._meshes = {};\n this._entities = {};\n this.scene._aabbDirty = true;\n if (this._isModel) {\n this.scene._deregisterModel(this);\n }\n putScratchMemory();\n super.destroy();\n }\n}\n\n\n/**\n * This function applies two steps to the provided mesh geometry data:\n *\n * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`.\n *\n * - 2nd, it tries to do an optimization called `index rebucketting`\n *\n * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._\n *\n * - _for 32 bit indices, will try to demote them to 16 bit indices_\n * - _for 16 bit indices, will try to demote them to 8 bits indices_\n * - _8 bits indices are kept as-is_\n *\n * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry.\n *\n * The function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`.\n *\n * @param {object} geometry The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays.\n *\n * @param enableVertexWelding\n * @param enableIndexBucketing\n * @returns {object} The mesh information enrichened with `.buckets` key.\n */\nfunction createDTXBuckets(geometry, enableVertexWelding, enableIndexBucketing) {\n let uniquePositionsCompressed, uniqueIndices, uniqueEdgeIndices;\n if (enableVertexWelding || enableIndexBucketing) { // Expensive - careful!\n [\n uniquePositionsCompressed,\n uniqueIndices,\n uniqueEdgeIndices,\n ] = uniquifyPositions({\n positionsCompressed: geometry.positionsCompressed,\n indices: geometry.indices,\n edgeIndices: geometry.edgeIndices\n });\n } else {\n uniquePositionsCompressed = geometry.positionsCompressed;\n uniqueIndices = geometry.indices;\n uniqueEdgeIndices = geometry.edgeIndices;\n }\n let buckets;\n if (enableIndexBucketing) {\n let numUniquePositions = uniquePositionsCompressed.length / 3;\n buckets = rebucketPositions({\n positionsCompressed: uniquePositionsCompressed,\n indices: uniqueIndices,\n edgeIndices: uniqueEdgeIndices,\n },\n (numUniquePositions > (1 << 16)) ? 16 : 8,\n // true\n );\n } else {\n buckets = [{\n positionsCompressed: uniquePositionsCompressed,\n indices: uniqueIndices,\n edgeIndices: uniqueEdgeIndices,\n }];\n }\n return buckets;\n}\n\nfunction\n\ncreateGeometryOBB(geometry) {\n geometry.obb = math.OBB3();\n if (geometry.positionsCompressed && geometry.positionsCompressed.length > 0) {\n const localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, geometry.positionsCompressed);\n geometryCompressionUtils.decompressAABB(localAABB, geometry.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, geometry.obb);\n } else if (geometry.positions && geometry.positions.length > 0) {\n const localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, geometry.positions);\n math.AABB3ToOBB3(localAABB, geometry.obb);\n } else if (geometry.buckets) {\n const localAABB = math.collapseAABB3();\n for (let i = 0, len = geometry.buckets.length; i < len; i++) {\n const bucket = geometry.buckets[i];\n math.expandAABB3Points3(localAABB, bucket.positionsCompressed);\n }\n geometryCompressionUtils.decompressAABB(localAABB, geometry.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, geometry.obb);\n }\n}\n", "static": true, "longname": "/home/lindsay/xeolabs/xeokit-sdk-feb14/src/viewer/scene/model/SceneModel.js", "access": "public", @@ -97816,7 +98344,7 @@ "lineNumber": 1 }, { - "__docId__": 4888, + "__docId__": 4906, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97837,7 +98365,7 @@ "ignore": true }, { - "__docId__": 4889, + "__docId__": 4907, "kind": "variable", "name": "tempOBB3", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97858,7 +98386,28 @@ "ignore": true }, { - "__docId__": 4890, + "__docId__": 4908, + "kind": "variable", + "name": "tempQuaternion", + "memberof": "src/viewer/scene/model/SceneModel.js", + "static": true, + "longname": "src/viewer/scene/model/SceneModel.js~tempQuaternion", + "access": "public", + "export": false, + "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", + "importStyle": null, + "description": null, + "lineNumber": 46, + "undocument": true, + "type": { + "types": [ + "*" + ] + }, + "ignore": true + }, + { + "__docId__": 4909, "kind": "variable", "name": "DEFAULT_SCALE", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97869,7 +98418,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 47, + "lineNumber": 48, "undocument": true, "type": { "types": [ @@ -97879,7 +98428,7 @@ "ignore": true }, { - "__docId__": 4891, + "__docId__": 4910, "kind": "variable", "name": "DEFAULT_POSITION", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97890,7 +98439,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 48, + "lineNumber": 49, "undocument": true, "type": { "types": [ @@ -97900,7 +98449,7 @@ "ignore": true }, { - "__docId__": 4892, + "__docId__": 4911, "kind": "variable", "name": "DEFAULT_ROTATION", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97911,7 +98460,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 49, + "lineNumber": 50, "undocument": true, "type": { "types": [ @@ -97921,7 +98470,7 @@ "ignore": true }, { - "__docId__": 4893, + "__docId__": 4912, "kind": "variable", "name": "DEFAULT_QUATERNION", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97932,7 +98481,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 50, + "lineNumber": 51, "undocument": true, "type": { "types": [ @@ -97942,7 +98491,7 @@ "ignore": true }, { - "__docId__": 4894, + "__docId__": 4913, "kind": "variable", "name": "DEFAULT_MATRIX", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97953,7 +98502,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 51, + "lineNumber": 52, "undocument": true, "type": { "types": [ @@ -97963,7 +98512,7 @@ "ignore": true }, { - "__docId__": 4895, + "__docId__": 4914, "kind": "variable", "name": "DEFAULT_COLOR_TEXTURE_ID", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97974,7 +98523,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 53, + "lineNumber": 54, "undocument": true, "type": { "types": [ @@ -97984,7 +98533,7 @@ "ignore": true }, { - "__docId__": 4896, + "__docId__": 4915, "kind": "variable", "name": "DEFAULT_METAL_ROUGH_TEXTURE_ID", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -97995,7 +98544,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 54, + "lineNumber": 55, "undocument": true, "type": { "types": [ @@ -98005,7 +98554,7 @@ "ignore": true }, { - "__docId__": 4897, + "__docId__": 4916, "kind": "variable", "name": "DEFAULT_NORMALS_TEXTURE_ID", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98016,7 +98565,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 55, + "lineNumber": 56, "undocument": true, "type": { "types": [ @@ -98026,7 +98575,7 @@ "ignore": true }, { - "__docId__": 4898, + "__docId__": 4917, "kind": "variable", "name": "DEFAULT_EMISSIVE_TEXTURE_ID", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98037,7 +98586,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 56, + "lineNumber": 57, "undocument": true, "type": { "types": [ @@ -98047,7 +98596,7 @@ "ignore": true }, { - "__docId__": 4899, + "__docId__": 4918, "kind": "variable", "name": "DEFAULT_OCCLUSION_TEXTURE_ID", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98058,7 +98607,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 57, + "lineNumber": 58, "undocument": true, "type": { "types": [ @@ -98068,7 +98617,7 @@ "ignore": true }, { - "__docId__": 4900, + "__docId__": 4919, "kind": "variable", "name": "DEFAULT_TEXTURE_SET_ID", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98079,7 +98628,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 58, + "lineNumber": 59, "undocument": true, "type": { "types": [ @@ -98089,7 +98638,7 @@ "ignore": true }, { - "__docId__": 4901, + "__docId__": 4920, "kind": "variable", "name": "defaultCompressedColor", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98100,7 +98649,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 60, + "lineNumber": 61, "undocument": true, "type": { "types": [ @@ -98110,7 +98659,7 @@ "ignore": true }, { - "__docId__": 4902, + "__docId__": 4921, "kind": "variable", "name": "VBO_INSTANCED", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98121,7 +98670,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 62, + "lineNumber": 63, "undocument": true, "type": { "types": [ @@ -98131,7 +98680,7 @@ "ignore": true }, { - "__docId__": 4903, + "__docId__": 4922, "kind": "variable", "name": "VBO_BATCHED", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98142,7 +98691,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 63, + "lineNumber": 64, "undocument": true, "type": { "types": [ @@ -98152,7 +98701,7 @@ "ignore": true }, { - "__docId__": 4904, + "__docId__": 4923, "kind": "variable", "name": "DTX", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98163,7 +98712,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 64, + "lineNumber": 65, "undocument": true, "type": { "types": [ @@ -98173,7 +98722,7 @@ "ignore": true }, { - "__docId__": 4905, + "__docId__": 4924, "kind": "class", "name": "SceneModel", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -98184,7 +98733,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": "{SceneModel}", "description": "A high-performance model representation for efficient rendering and low memory usage.\n\n# Examples\n\nInternally, SceneModel uses a combination of several different techniques to render and represent\nthe different parts of a typical model. Each of the live examples at these links is designed to \"unit test\" one of these\ntechniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also\nserve to demonstrate how to use the capabilities of SceneModel programmatically.\n\n* [Loading building models into SceneModels](/examples/buildings)\n* [Loading city models into SceneModels](/examples/cities)\n* [Loading LiDAR scans into SceneModels](/examples/lidar)\n* [Loading CAD models into SceneModels](/examples/cad)\n* [SceneModel feature tests](/examples/scenemodel)\n\n# Overview\n\nWhile xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n\nFor huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n\n````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}.\n\nIn this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins.\n\n# Contents\n\n- [SceneModel](#DataTextureSceneModel)\n- [GPU-Resident Geometry](#gpu-resident-geometry)\n- [Picking](#picking)\n- [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n- [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel)\n- [Finding Entities](#finding-entities)\n- [Example 2: Geometry Batching](#example-2--geometry-batching)\n- [Classifying with Metadata](#classifying-with-metadata)\n- [Querying Metadata](#querying-metadata)\n- [Metadata Structure](#metadata-structure)\n- [RTC Coordinates](#rtc-coordinates-for-double-precision)\n - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n\n## SceneModel\n\n````SceneModel```` uses two rendering techniques internally:\n\n1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n\n
    \nThese techniques come with certain limitations:\n\n* Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures.\n* Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n* Immutable model representation - while scene graph {@link Node}s and\n{@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable,\nsince it packs its geometries into buffers and instanced arrays.\n\n````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as\nabstract {@link Entity} types.\n\n{@link Entity} is the abstract base class for\nthe various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\nindividually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n\n* A ````SceneModel```` is an {@link Entity} that represents a model.\n* A ````SceneModel```` represents each of its objects with an {@link Entity}.\n* Each {@link Entity} has one or more meshes that define its shape.\n* Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n\n## GPU-Resident Geometry\n\nFor a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\nnot readable by JavaScript.\n\n\n## Example 1: Geometry Instancing\n\nIn the example below, we'll use a ````SceneModel````\nto build a simple table model using geometry instancing.\n\nWe'll start by adding a reusable box-shaped geometry to our ````SceneModel````.\n\nThen, for each object in our model we'll add an {@link Entity}\nthat has a mesh that instances our box geometry, transforming and coloring the instance.\n\n[![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_instancing)\n\n````javascript\nimport {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nviewer.scene.camera.eye = [-21.80, 4.01, 6.56];\nviewer.scene.camera.look = [0, -5.75, 0];\nviewer.scene.camera.up = [0.37, 0.91, -0.11];\n\n// Build a SceneModel representing a table\n// with four legs, using geometry instancing\n\nconst sceneModel = new SceneModel(viewer.scene, {\n id: \"table\",\n isModel: true, // <--- Registers SceneModel in viewer.scene.models\n position: [0, 0, 0],\n scale: [1, 1, 1],\n rotation: [0, 0, 0]\n});\n\n// Create a reusable geometry within the SceneModel\n// We'll instance this geometry by five meshes\n\nsceneModel.createGeometry({\n\n id: \"myBoxGeometry\",\n\n // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n // See the OpenGL/WebGL specification docs\n // for how the coordinate arrays are supposed to be laid out.\n primitive: \"triangles\",\n\n // The vertices - eight for our cube, each\n // one spanning three array elements for X,Y and Z\n positions: [\n 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n ],\n\n // Normal vectors, one for each vertex\n normals: [\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n ],\n\n // Indices - these organise the positions and and normals\n // into geometric primitives in accordance with the \"primitive\" parameter,\n // in this case a set of three indices for each triangle.\n //\n // Note that each triangle is specified in counter-clockwise winding order.\n //\n indices: [\n 0, 1, 2, 0, 2, 3, // front\n 4, 5, 6, 4, 6, 7, // right\n 8, 9, 10, 8, 10, 11, // top\n 12, 13, 14, 12, 14, 15, // left\n 16, 17, 18, 16, 18, 19, // bottom\n 20, 21, 22, 20, 22, 23\n ]\n});\n\n// Red table leg\n\nsceneModel.createMesh({\n id: \"redLegMesh\",\n geometryId: \"myBoxGeometry\",\n position: [-4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 0.3, 0.3]\n});\n\nsceneModel.createEntity({\n id: \"redLeg\",\n meshIds: [\"redLegMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Green table leg\n\nsceneModel.createMesh({\n id: \"greenLegMesh\",\n geometryId: \"myBoxGeometry\",\n position: [4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 1.0, 0.3]\n});\n\nsceneModel.createEntity({\n id: \"greenLeg\",\n meshIds: [\"greenLegMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Blue table leg\n\nsceneModel.createMesh({\n id: \"blueLegMesh\",\n geometryId: \"myBoxGeometry\",\n position: [4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 0.3, 1.0]\n});\n\nsceneModel.createEntity({\n id: \"blueLeg\",\n meshIds: [\"blueLegMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Yellow table leg\n\nsceneModel.createMesh({\n id: \"yellowLegMesh\",\n geometryId: \"myBoxGeometry\",\n position: [-4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1.0, 1.0, 0.0]\n});\n\nsceneModel.createEntity({\n id: \"yellowLeg\",\n meshIds: [\"yellowLegMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Purple table top\n\nsceneModel.createMesh({\n id: \"purpleTableTopMesh\",\n geometryId: \"myBoxGeometry\",\n position: [0, -3, 0],\n scale: [6, 0.5, 6],\n rotation: [0, 0, 0],\n color: [1.0, 0.3, 1.0]\n});\n\nsceneModel.createEntity({\n id: \"purpleTableTop\",\n meshIds: [\"purpleTableTopMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n ````\n\n## Finalizing a SceneModel\n\nBefore we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the\nvertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\nthis causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\nbatching within the same ````SceneModel````.\n\nOnce finalized, we can't add anything more to our ````SceneModel````.\n\n```` javascript\nSceneModel.finalize();\n````\n\n## Finding Entities\n\nAs mentioned earlier, {@link Entity} is\nthe abstract base class for components that represent models, objects, or just\nanonymous visible elements.\n\nSince we created configured our ````SceneModel```` with ````isModel: true````,\nwe're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\nwe configured each of its Entities with ````isObject: true````, we're able to\nfind them in ````viewer.scene.objects````.\n\n\n````javascript\n// Get the whole table model Entity\nconst table = viewer.scene.models[\"table\"];\n\n // Get some leg object Entities\nconst redLeg = viewer.scene.objects[\"redLeg\"];\nconst greenLeg = viewer.scene.objects[\"greenLeg\"];\nconst blueLeg = viewer.scene.objects[\"blueLeg\"];\n````\n\n## Example 2: Geometry Batching\n\nLet's once more use a ````SceneModel````\nto build the simple table model, this time exploiting geometry batching.\n\n [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n\n````javascript\nimport {Viewer, SceneModel} from \"xeokit-sdk.es.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nviewer.scene.camera.eye = [-21.80, 4.01, 6.56];\nviewer.scene.camera.look = [0, -5.75, 0];\nviewer.scene.camera.up = [0.37, 0.91, -0.11];\n\n// Create a SceneModel representing a table with four legs, using geometry batching\nconst sceneModel = new SceneModel(viewer.scene, {\n id: \"table\",\n isModel: true, // <--- Registers SceneModel in viewer.scene.models\n position: [0, 0, 0],\n scale: [1, 1, 1],\n rotation: [0, 0, 0]\n});\n\n// Red table leg\n\nsceneModel.createMesh({\n id: \"redLegMesh\",\n\n // Geometry arrays are same as for the earlier batching example\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [-4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 0.3, 0.3]\n});\n\nsceneModel.createEntity({\n id: \"redLeg\",\n meshIds: [\"redLegMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Green table leg\n\nsceneModel.createMesh({\n id: \"greenLegMesh\",\n primitive: \"triangles\",\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 1.0, 0.3]\n});\n\nsceneModel.createEntity({\n id: \"greenLeg\",\n meshIds: [\"greenLegMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Blue table leg\n\nsceneModel.createMesh({\n id: \"blueLegMesh\",\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 0.3, 1.0]\n});\n\nsceneModel.createEntity({\n id: \"blueLeg\",\n meshIds: [\"blueLegMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Yellow table leg object\n\nsceneModel.createMesh({\n id: \"yellowLegMesh\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [-4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1.0, 1.0, 0.0]\n});\n\nsceneModel.createEntity({\n id: \"yellowLeg\",\n meshIds: [\"yellowLegMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Purple table top\n\nsceneModel.createMesh({\n id: \"purpleTableTopMesh\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [0, -3, 0],\n scale: [6, 0.5, 6],\n rotation: [0, 0, 0],\n color: [1.0, 0.3, 1.0]\n});\n\nsceneModel.createEntity({\n id: \"purpleTableTop\",\n meshIds: [\"purpleTableTopMesh\"],\n isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n});\n\n// Finalize the SceneModel.\n\nSceneModel.finalize();\n\n// Find BigModelNodes by their model and object IDs\n\n// Get the whole table model\nconst table = viewer.scene.models[\"table\"];\n\n// Get some leg objects\nconst redLeg = viewer.scene.objects[\"redLeg\"];\nconst greenLeg = viewer.scene.objects[\"greenLeg\"];\nconst blueLeg = viewer.scene.objects[\"blueLeg\"];\n````\n\n## Classifying with Metadata\n\nIn the previous examples, we used ````SceneModel```` to build\ntwo versions of the same table model, to demonstrate geometry batching and geometry instancing.\n\nWe'll now classify our {@link Entity}s with metadata. This metadata\nwill work the same for both our examples, since they create the exact same structure of {@link Entity}s\nto represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n\nTo create the metadata, we'll create a {@link MetaModel} for our model,\nwith a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\nget the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n\n```` javascript\nconst furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n\n \"projectId\": \"myTableProject\",\n \"revisionId\": \"V1.0\",\n\n \"metaObjects\": [\n { // Creates a MetaObject in the MetaModel\n \"id\": \"table\",\n \"name\": \"Table\", // Same ID as an object Entity\n \"type\": \"furniture\", // Arbitrary type, could be IFC type\n \"properties\": { // Arbitrary properties, could be IfcPropertySet\n \"cost\": \"200\"\n }\n },\n {\n \"id\": \"redLeg\",\n \"name\": \"Red table Leg\",\n \"type\": \"leg\",\n \"parent\": \"table\", // References first MetaObject as parent\n \"properties\": {\n \"material\": \"wood\"\n }\n },\n {\n \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n \"type\": \"leg\",\n \"parent\": \"table\",\n \"properties\": {\n \"material\": \"wood\"\n }\n },\n {\n \"id\": \"blueLeg\",\n \"name\": \"Blue table leg\",\n \"type\": \"leg\",\n \"parent\": \"table\",\n \"properties\": {\n \"material\": \"wood\"\n }\n },\n {\n \"id\": \"yellowLeg\",\n \"name\": \"Yellow table leg\",\n \"type\": \"leg\",\n \"parent\": \"table\",\n \"properties\": {\n \"material\": \"wood\"\n }\n },\n {\n \"id\": \"tableTop\",\n \"name\": \"Purple table top\",\n \"type\": \"surface\",\n \"parent\": \"table\",\n \"properties\": {\n \"material\": \"formica\",\n \"width\": \"60\",\n \"depth\": \"60\",\n \"thickness\": \"5\"\n }\n }\n ]\n });\n````\n\n## Querying Metadata\n\nHaving created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\nand {@link MetaObject}s using the IDs of their\ncorresponding {@link Entity}s.\n\n````JavaScript\nconst furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n\nconst redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n````\n\nIn the snippet below, we'll log metadata on each {@link Entity} we click on:\n\n````JavaScript\nviewer.scene.input.on(\"mouseclicked\", function (coords) {\n\n const hit = viewer.scene.pick({\n canvasPos: coords\n });\n\n if (hit) {\n const entity = hit.entity;\n const metaObject = viewer.metaScene.metaObjects[entity.id];\n if (metaObject) {\n console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n }\n }\n });\n````\n\n## Metadata Structure\n\nThe {@link MetaModel}\norganizes its {@link MetaObject}s in\na tree that describes their structural composition:\n\n````JavaScript\n// Get metadata on the root object\nconst tableMetaObject = furnitureMetaModel.rootMetaObject;\n\n// Get metadata on the leg objects\nconst redLegMetaObject = tableMetaObject.children[0];\nconst greenLegMetaObject = tableMetaObject.children[1];\nconst blueLegMetaObject = tableMetaObject.children[2];\nconst yellowLegMetaObject = tableMetaObject.children[3];\n````\n\nGiven an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\ncomponents from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/index.html#BIMOffline_glTF_OTCConferenceCenter).\n\nThis hierarchy allows us to express the hierarchical structure of a model while representing it in\nvarious ways in the 3D scene (such as with ````SceneModel````, which\nhas a non-hierarchical scene representation).\n\nNote also that a {@link MetaObject} does not need to have a corresponding\n{@link Entity} and vice-versa.\n\n# RTC Coordinates for Double Precision\n\n````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n\nConsider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n\nTo prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n\nWhile the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n\nInternally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n\nThen xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n\nWe see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n\n## RTC Coordinates with Geometry Instancing\n\nTo use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````.\n\nFor simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n\nNote that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n\n[![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n\n````javascript\nconst origin = [100000000, 0, 100000000];\n\nsceneModel.createGeometry({\n id: \"box\",\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n});\n\nsceneModel.createMesh({\n id: \"leg1\",\n geometryId: \"box\",\n position: [-4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 0.3, 0.3],\n origin: origin\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg1\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg2\",\n geometryId: \"box\",\n position: [4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 1.0, 0.3],\n origin: origin\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg2\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg3\",\n geometryId: \"box\",\n position: [4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 0.3, 1.0],\n origin: origin\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg3\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg4\",\n geometryId: \"box\",\n position: [-4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1.0, 1.0, 0.0],\n origin: origin\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg4\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"top\",\n geometryId: \"box\",\n position: [0, -3, 0],\n scale: [6, 0.5, 6],\n rotation: [0, 0, 0],\n color: [1.0, 0.3, 1.0],\n origin: origin\n});\n\nsceneModel.createEntity({\n meshIds: [\"top\"],\n isObject: true\n});\n````\n\n## RTC Coordinates with Geometry Batching\n\nTo use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````.\n\nFor simplicity, the meshes in our example all share the same RTC center.\n\nThe axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n\n[![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/index.html#sceneRepresentation_SceneModel_batching)\n\n````javascript\nconst origin = [100000000, 0, 100000000];\n\nsceneModel.createMesh({\n id: \"leg1\",\n origin: origin, // This mesh's positions and transforms are relative to the RTC center\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [-4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 0.3, 0.3]\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg1\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg2\",\n origin: origin, // This mesh's positions and transforms are relative to the RTC center\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 1.0, 0.3]\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg2\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg3\",\n origin: origin, // This mesh's positions and transforms are relative to the RTC center\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 0.3, 1.0]\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg3\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg4\",\n origin: origin, // This mesh's positions and transforms are relative to the RTC center\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [-4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1.0, 1.0, 0.0]\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg4\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"top\",\n origin: origin, // This mesh's positions and transforms are relative to the RTC center\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n position: [0, -3, 0],\n scale: [6, 0.5, 6],\n rotation: [0, 0, 0],\n color: [1.0, 0.3, 1.0]\n});\n\nsceneModel.createEntity({\n meshIds: [\"top\"],\n isObject: true\n});\n````\n\n## Positioning at World-space coordinates\n\nTo position a SceneModel at given double-precision World coordinates, we can\nconfigure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision\n3D World-space position at which the SceneModel will be located.\n\nNote that ````position```` is a single-precision offset relative to ````origin````.\n\n````javascript\nconst origin = [100000000, 0, 100000000];\n\nconst sceneModel = new SceneModel(viewer.scene, {\n id: \"table\",\n isModel: true,\n origin: origin, // Everything in this SceneModel is relative to this RTC center\n position: [0, 0, 0],\n scale: [1, 1, 1],\n rotation: [0, 0, 0]\n});\n\nsceneModel.createGeometry({\n id: \"box\",\n primitive: \"triangles\",\n positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n});\n\nsceneModel.createMesh({\n id: \"leg1\",\n geometryId: \"box\",\n position: [-4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 0.3, 0.3]\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg1\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg2\",\n geometryId: \"box\",\n position: [4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 1.0, 0.3]\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg2\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg3\",\n geometryId: \"box\",\n position: [4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0.3, 0.3, 1.0]\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg3\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"leg4\",\n geometryId: \"box\",\n position: [-4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1.0, 1.0, 0.0]\n});\n\nsceneModel.createEntity({\n meshIds: [\"leg4\"],\n isObject: true\n});\n\nsceneModel.createMesh({\n id: \"top\",\n geometryId: \"box\",\n position: [0, -3, 0],\n scale: [6, 0.5, 6],\n rotation: [0, 0, 0],\n color: [1.0, 0.3, 1.0]\n});\n\nsceneModel.createEntity({\n meshIds: [\"top\"],\n isObject: true\n});\n````\n\n# Textures\n\n## Loading KTX2 Texture Files into a SceneModel\n\nA {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will\nallow us to load textures into it from KTX2 buffers or files.\n\nIn the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n{@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\na single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using\nits {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal\ntranscoder WASM module.\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nviewer.scene.camera.eye = [-21.80, 4.01, 6.56];\nviewer.scene.camera.look = [0, -5.75, 0];\nviewer.scene.camera.up = [0.37, 0.91, -0.11];\n\nconst textureTranscoder = new KTX2TextureTranscoder({\n viewer,\n transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n});\n\nconst sceneModel = new SceneModel(viewer.scene, {\n id: \"myModel\",\n textureTranscoder // <<-------------------- Configure model with our transcoder\n });\n\nsceneModel.createTexture({\n id: \"myColorTexture\",\n src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n});\n\nsceneModel.createTexture({\n id: \"myMetallicRoughnessTexture\",\n src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n});\n\nsceneModel.createTextureSet({\n id: \"myTextureSet\",\n colorTextureId: \"myColorTexture\",\n metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n });\n\nsceneModel.createMesh({\n id: \"myMesh\",\n textureSetId: \"myTextureSet\",\n primitive: \"triangles\",\n positions: [1, 1, 1, ...],\n normals: [0, 0, 1, 0, ...],\n uv: [1, 0, 0, ...],\n indices: [0, 1, 2, ...],\n });\n\nsceneModel.createEntity({\n id: \"myEntity\",\n meshIds: [\"myMesh\"]\n });\n\nsceneModel.finalize();\n````\n\n## Loading KTX2 Textures from ArrayBuffers into a SceneModel\n\nA SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into\nit from KTX2 ArrayBuffers.\n\nIn the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a\n{@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of\na single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using\nits {@link KTX2TextureTranscoder}.\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nviewer.scene.camera.eye = [-21.80, 4.01, 6.56];\nviewer.scene.camera.look = [0, -5.75, 0];\nviewer.scene.camera.up = [0.37, 0.91, -0.11];\n\nconst textureTranscoder = new KTX2TextureTranscoder({\n viewer,\n transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n});\n\nconst sceneModel = new SceneModel(viewer.scene, {\n id: \"myModel\",\n textureTranscoder // <<-------------------- Configure model with our transcoder\n});\n\nutils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n\n sceneModel.createTexture({\n id: \"myColorTexture\",\n buffers: [arrayBuffer] // <<----- KTX2 texture asset\n });\n\n sceneModel.createTexture({\n id: \"myMetallicRoughnessTexture\",\n src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n });\n\n sceneModel.createTextureSet({\n id: \"myTextureSet\",\n colorTextureId: \"myColorTexture\",\n metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n });\n\n sceneModel.createMesh({\n id: \"myMesh\",\n textureSetId: \"myTextureSet\",\n primitive: \"triangles\",\n positions: [1, 1, 1, ...],\n normals: [0, 0, 1, 0, ...],\n uv: [1, 0, 0, ...],\n indices: [0, 1, 2, ...],\n });\n\n sceneModel.createEntity({\n id: \"myEntity\",\n meshIds: [\"myMesh\"]\n });\n\n sceneModel.finalize();\n});\n````", - "lineNumber": 1081, + "lineNumber": 1082, "interface": false, "extends": [ "src/viewer/scene/Component.js~Component" @@ -98194,7 +98743,7 @@ ] }, { - "__docId__": 4906, + "__docId__": 4925, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98204,7 +98753,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#constructor", "access": "public", "description": "", - "lineNumber": 1126, + "lineNumber": 1127, "unknown": [ { "tagName": "@constructor", @@ -98561,7 +99110,7 @@ ] }, { - "__docId__": 4907, + "__docId__": 4926, "kind": "member", "name": "_dtxEnabled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98569,7 +99118,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_dtxEnabled", "access": "private", "description": null, - "lineNumber": 1130, + "lineNumber": 1131, "undocument": true, "ignore": true, "type": { @@ -98579,7 +99128,7 @@ } }, { - "__docId__": 4908, + "__docId__": 4927, "kind": "member", "name": "_enableVertexWelding", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98587,7 +99136,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_enableVertexWelding", "access": "private", "description": null, - "lineNumber": 1132, + "lineNumber": 1133, "undocument": true, "ignore": true, "type": { @@ -98597,7 +99146,7 @@ } }, { - "__docId__": 4909, + "__docId__": 4928, "kind": "member", "name": "_enableIndexBucketing", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98605,7 +99154,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_enableIndexBucketing", "access": "private", "description": null, - "lineNumber": 1133, + "lineNumber": 1134, "undocument": true, "ignore": true, "type": { @@ -98615,7 +99164,7 @@ } }, { - "__docId__": 4910, + "__docId__": 4929, "kind": "member", "name": "_vboBatchingLayerScratchMemory", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98623,7 +99172,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_vboBatchingLayerScratchMemory", "access": "private", "description": null, - "lineNumber": 1135, + "lineNumber": 1136, "undocument": true, "ignore": true, "type": { @@ -98633,7 +99182,7 @@ } }, { - "__docId__": 4911, + "__docId__": 4930, "kind": "member", "name": "_textureTranscoder", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98641,7 +99190,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_textureTranscoder", "access": "private", "description": null, - "lineNumber": 1136, + "lineNumber": 1137, "undocument": true, "ignore": true, "type": { @@ -98651,7 +99200,7 @@ } }, { - "__docId__": 4912, + "__docId__": 4931, "kind": "member", "name": "_maxGeometryBatchSize", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98659,7 +99208,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_maxGeometryBatchSize", "access": "private", "description": null, - "lineNumber": 1138, + "lineNumber": 1139, "undocument": true, "ignore": true, "type": { @@ -98669,7 +99218,7 @@ } }, { - "__docId__": 4913, + "__docId__": 4932, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98677,7 +99226,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_aabb", "access": "private", "description": null, - "lineNumber": 1140, + "lineNumber": 1141, "undocument": true, "ignore": true, "type": { @@ -98687,7 +99236,7 @@ } }, { - "__docId__": 4914, + "__docId__": 4933, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98695,7 +99244,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_aabbDirty", "access": "private", "description": null, - "lineNumber": 1141, + "lineNumber": 1142, "undocument": true, "ignore": true, "type": { @@ -98705,7 +99254,7 @@ } }, { - "__docId__": 4915, + "__docId__": 4934, "kind": "member", "name": "_quantizationRanges", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98713,7 +99262,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_quantizationRanges", "access": "private", "description": null, - "lineNumber": 1143, + "lineNumber": 1144, "undocument": true, "ignore": true, "type": { @@ -98723,7 +99272,7 @@ } }, { - "__docId__": 4916, + "__docId__": 4935, "kind": "member", "name": "_vboInstancingLayers", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98731,7 +99280,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_vboInstancingLayers", "access": "private", "description": null, - "lineNumber": 1145, + "lineNumber": 1146, "undocument": true, "ignore": true, "type": { @@ -98741,7 +99290,7 @@ } }, { - "__docId__": 4917, + "__docId__": 4936, "kind": "member", "name": "_vboBatchingLayers", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98749,7 +99298,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_vboBatchingLayers", "access": "private", "description": null, - "lineNumber": 1146, + "lineNumber": 1147, "undocument": true, "ignore": true, "type": { @@ -98759,7 +99308,7 @@ } }, { - "__docId__": 4918, + "__docId__": 4937, "kind": "member", "name": "_dtxLayers", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98767,7 +99316,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_dtxLayers", "access": "private", "description": null, - "lineNumber": 1147, + "lineNumber": 1148, "undocument": true, "ignore": true, "type": { @@ -98777,7 +99326,7 @@ } }, { - "__docId__": 4919, + "__docId__": 4938, "kind": "member", "name": "_meshList", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98785,7 +99334,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_meshList", "access": "private", "description": null, - "lineNumber": 1149, + "lineNumber": 1150, "undocument": true, "ignore": true, "type": { @@ -98795,7 +99344,7 @@ } }, { - "__docId__": 4920, + "__docId__": 4939, "kind": "member", "name": "layerList", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98803,7 +99352,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#layerList", "access": "public", "description": null, - "lineNumber": 1151, + "lineNumber": 1152, "undocument": true, "type": { "types": [ @@ -98812,7 +99361,7 @@ } }, { - "__docId__": 4921, + "__docId__": 4940, "kind": "member", "name": "_entityList", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98820,7 +99369,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_entityList", "access": "private", "description": null, - "lineNumber": 1152, + "lineNumber": 1153, "undocument": true, "ignore": true, "type": { @@ -98830,7 +99379,7 @@ } }, { - "__docId__": 4922, + "__docId__": 4941, "kind": "member", "name": "_geometries", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98838,7 +99387,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_geometries", "access": "private", "description": null, - "lineNumber": 1154, + "lineNumber": 1155, "undocument": true, "ignore": true, "type": { @@ -98848,7 +99397,7 @@ } }, { - "__docId__": 4923, + "__docId__": 4942, "kind": "member", "name": "_dtxBuckets", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98856,7 +99405,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_dtxBuckets", "access": "private", "description": null, - "lineNumber": 1155, + "lineNumber": 1156, "undocument": true, "ignore": true, "type": { @@ -98866,7 +99415,7 @@ } }, { - "__docId__": 4924, + "__docId__": 4943, "kind": "member", "name": "_textures", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98874,7 +99423,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_textures", "access": "private", "description": null, - "lineNumber": 1156, + "lineNumber": 1157, "undocument": true, "ignore": true, "type": { @@ -98884,7 +99433,7 @@ } }, { - "__docId__": 4925, + "__docId__": 4944, "kind": "member", "name": "_textureSets", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98892,7 +99441,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_textureSets", "access": "private", "description": null, - "lineNumber": 1157, + "lineNumber": 1158, "undocument": true, "ignore": true, "type": { @@ -98902,7 +99451,7 @@ } }, { - "__docId__": 4926, + "__docId__": 4945, "kind": "member", "name": "_transforms", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98910,7 +99459,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_transforms", "access": "private", "description": null, - "lineNumber": 1158, + "lineNumber": 1159, "undocument": true, "ignore": true, "type": { @@ -98920,7 +99469,7 @@ } }, { - "__docId__": 4927, + "__docId__": 4946, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98928,7 +99477,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_meshes", "access": "private", "description": null, - "lineNumber": 1159, + "lineNumber": 1160, "undocument": true, "ignore": true, "type": { @@ -98938,7 +99487,7 @@ } }, { - "__docId__": 4928, + "__docId__": 4947, "kind": "member", "name": "_unusedMeshes", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98946,7 +99495,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_unusedMeshes", "access": "private", "description": null, - "lineNumber": 1160, + "lineNumber": 1161, "undocument": true, "ignore": true, "type": { @@ -98956,7 +99505,7 @@ } }, { - "__docId__": 4929, + "__docId__": 4948, "kind": "member", "name": "_entities", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98964,7 +99513,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_entities", "access": "private", "description": null, - "lineNumber": 1161, + "lineNumber": 1162, "undocument": true, "ignore": true, "type": { @@ -98974,7 +99523,7 @@ } }, { - "__docId__": 4930, + "__docId__": 4949, "kind": "member", "name": "renderFlags", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98982,7 +99531,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#renderFlags", "access": "private", "description": null, - "lineNumber": 1164, + "lineNumber": 1165, "ignore": true, "type": { "types": [ @@ -98991,7 +99540,7 @@ } }, { - "__docId__": 4931, + "__docId__": 4950, "kind": "member", "name": "numGeometries", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -98999,7 +99548,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numGeometries", "access": "private", "description": "", - "lineNumber": 1169, + "lineNumber": 1170, "ignore": true, "type": { "types": [ @@ -99008,7 +99557,7 @@ } }, { - "__docId__": 4932, + "__docId__": 4951, "kind": "member", "name": "numPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99016,7 +99565,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numPortions", "access": "private", "description": "", - "lineNumber": 1177, + "lineNumber": 1178, "ignore": true, "type": { "types": [ @@ -99025,7 +99574,7 @@ } }, { - "__docId__": 4933, + "__docId__": 4952, "kind": "member", "name": "numVisibleLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99033,7 +99582,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numVisibleLayerPortions", "access": "private", "description": "", - "lineNumber": 1182, + "lineNumber": 1183, "ignore": true, "type": { "types": [ @@ -99042,7 +99591,7 @@ } }, { - "__docId__": 4934, + "__docId__": 4953, "kind": "member", "name": "numTransparentLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99050,7 +99599,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numTransparentLayerPortions", "access": "private", "description": "", - "lineNumber": 1187, + "lineNumber": 1188, "ignore": true, "type": { "types": [ @@ -99059,7 +99608,7 @@ } }, { - "__docId__": 4935, + "__docId__": 4954, "kind": "member", "name": "numXRayedLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99067,7 +99616,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numXRayedLayerPortions", "access": "private", "description": "", - "lineNumber": 1192, + "lineNumber": 1193, "ignore": true, "type": { "types": [ @@ -99076,7 +99625,7 @@ } }, { - "__docId__": 4936, + "__docId__": 4955, "kind": "member", "name": "numHighlightedLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99084,7 +99633,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numHighlightedLayerPortions", "access": "private", "description": "", - "lineNumber": 1197, + "lineNumber": 1198, "ignore": true, "type": { "types": [ @@ -99093,7 +99642,7 @@ } }, { - "__docId__": 4937, + "__docId__": 4956, "kind": "member", "name": "numSelectedLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99101,7 +99650,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numSelectedLayerPortions", "access": "private", "description": "", - "lineNumber": 1202, + "lineNumber": 1203, "ignore": true, "type": { "types": [ @@ -99110,7 +99659,7 @@ } }, { - "__docId__": 4938, + "__docId__": 4957, "kind": "member", "name": "numEdgesLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99118,7 +99667,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numEdgesLayerPortions", "access": "private", "description": "", - "lineNumber": 1207, + "lineNumber": 1208, "ignore": true, "type": { "types": [ @@ -99127,7 +99676,7 @@ } }, { - "__docId__": 4939, + "__docId__": 4958, "kind": "member", "name": "numPickableLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99135,7 +99684,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numPickableLayerPortions", "access": "private", "description": "", - "lineNumber": 1212, + "lineNumber": 1213, "ignore": true, "type": { "types": [ @@ -99144,7 +99693,7 @@ } }, { - "__docId__": 4940, + "__docId__": 4959, "kind": "member", "name": "numClippableLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99152,7 +99701,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numClippableLayerPortions", "access": "private", "description": "", - "lineNumber": 1217, + "lineNumber": 1218, "ignore": true, "type": { "types": [ @@ -99161,7 +99710,7 @@ } }, { - "__docId__": 4941, + "__docId__": 4960, "kind": "member", "name": "numCulledLayerPortions", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99169,7 +99718,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numCulledLayerPortions", "access": "private", "description": "", - "lineNumber": 1222, + "lineNumber": 1223, "ignore": true, "type": { "types": [ @@ -99178,7 +99727,7 @@ } }, { - "__docId__": 4942, + "__docId__": 4961, "kind": "member", "name": "numEntities", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99186,7 +99735,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numEntities", "access": "public", "description": null, - "lineNumber": 1224, + "lineNumber": 1225, "undocument": true, "type": { "types": [ @@ -99195,7 +99744,7 @@ } }, { - "__docId__": 4943, + "__docId__": 4962, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99203,7 +99752,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_numTriangles", "access": "private", "description": null, - "lineNumber": 1225, + "lineNumber": 1226, "undocument": true, "ignore": true, "type": { @@ -99213,7 +99762,7 @@ } }, { - "__docId__": 4944, + "__docId__": 4963, "kind": "member", "name": "_numLines", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99221,7 +99770,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_numLines", "access": "private", "description": null, - "lineNumber": 1226, + "lineNumber": 1227, "undocument": true, "ignore": true, "type": { @@ -99231,7 +99780,7 @@ } }, { - "__docId__": 4945, + "__docId__": 4964, "kind": "member", "name": "_numPoints", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99239,7 +99788,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_numPoints", "access": "private", "description": null, - "lineNumber": 1227, + "lineNumber": 1228, "undocument": true, "ignore": true, "type": { @@ -99249,7 +99798,7 @@ } }, { - "__docId__": 4946, + "__docId__": 4965, "kind": "member", "name": "_edgeThreshold", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99257,7 +99806,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_edgeThreshold", "access": "private", "description": null, - "lineNumber": 1229, + "lineNumber": 1230, "undocument": true, "ignore": true, "type": { @@ -99267,7 +99816,7 @@ } }, { - "__docId__": 4947, + "__docId__": 4966, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99275,7 +99824,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_origin", "access": "private", "description": null, - "lineNumber": 1233, + "lineNumber": 1234, "undocument": true, "ignore": true, "type": { @@ -99285,7 +99834,7 @@ } }, { - "__docId__": 4948, + "__docId__": 4967, "kind": "member", "name": "_position", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99293,7 +99842,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_position", "access": "private", "description": null, - "lineNumber": 1234, + "lineNumber": 1235, "undocument": true, "ignore": true, "type": { @@ -99303,7 +99852,7 @@ } }, { - "__docId__": 4949, + "__docId__": 4968, "kind": "member", "name": "_rotation", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99311,7 +99860,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_rotation", "access": "private", "description": null, - "lineNumber": 1235, + "lineNumber": 1236, "undocument": true, "ignore": true, "type": { @@ -99321,7 +99870,7 @@ } }, { - "__docId__": 4950, + "__docId__": 4969, "kind": "member", "name": "_quaternion", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99329,7 +99878,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_quaternion", "access": "private", "description": null, - "lineNumber": 1236, + "lineNumber": 1237, "undocument": true, "ignore": true, "type": { @@ -99339,7 +99888,7 @@ } }, { - "__docId__": 4951, + "__docId__": 4970, "kind": "member", "name": "_conjugateQuaternion", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99347,7 +99896,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_conjugateQuaternion", "access": "private", "description": null, - "lineNumber": 1237, + "lineNumber": 1238, "undocument": true, "ignore": true, "type": { @@ -99357,7 +99906,7 @@ } }, { - "__docId__": 4952, + "__docId__": 4971, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99365,7 +99914,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_scale", "access": "private", "description": null, - "lineNumber": 1242, + "lineNumber": 1243, "undocument": true, "ignore": true, "type": { @@ -99375,7 +99924,7 @@ } }, { - "__docId__": 4953, + "__docId__": 4972, "kind": "member", "name": "_worldRotationMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99383,7 +99932,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_worldRotationMatrix", "access": "private", "description": null, - "lineNumber": 1244, + "lineNumber": 1245, "undocument": true, "ignore": true, "type": { @@ -99393,7 +99942,7 @@ } }, { - "__docId__": 4954, + "__docId__": 4973, "kind": "member", "name": "_worldRotationMatrixConjugate", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99401,7 +99950,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_worldRotationMatrixConjugate", "access": "private", "description": null, - "lineNumber": 1245, + "lineNumber": 1246, "undocument": true, "ignore": true, "type": { @@ -99411,7 +99960,7 @@ } }, { - "__docId__": 4955, + "__docId__": 4974, "kind": "member", "name": "_matrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99419,7 +99968,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_matrix", "access": "private", "description": null, - "lineNumber": 1246, + "lineNumber": 1247, "undocument": true, "ignore": true, "type": { @@ -99429,7 +99978,7 @@ } }, { - "__docId__": 4956, + "__docId__": 4975, "kind": "member", "name": "_matrixDirty", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99437,7 +99986,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_matrixDirty", "access": "private", "description": null, - "lineNumber": 1247, + "lineNumber": 1248, "undocument": true, "ignore": true, "type": { @@ -99447,7 +99996,7 @@ } }, { - "__docId__": 4957, + "__docId__": 4976, "kind": "member", "name": "_worldNormalMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99455,7 +100004,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_worldNormalMatrix", "access": "private", "description": null, - "lineNumber": 1251, + "lineNumber": 1252, "undocument": true, "ignore": true, "type": { @@ -99465,7 +100014,7 @@ } }, { - "__docId__": 4958, + "__docId__": 4977, "kind": "member", "name": "_viewMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99473,7 +100022,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_viewMatrix", "access": "private", "description": null, - "lineNumber": 1256, + "lineNumber": 1257, "undocument": true, "ignore": true, "type": { @@ -99483,7 +100032,7 @@ } }, { - "__docId__": 4959, + "__docId__": 4978, "kind": "member", "name": "_viewNormalMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99491,7 +100040,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_viewNormalMatrix", "access": "private", "description": null, - "lineNumber": 1257, + "lineNumber": 1258, "undocument": true, "ignore": true, "type": { @@ -99501,7 +100050,7 @@ } }, { - "__docId__": 4960, + "__docId__": 4979, "kind": "member", "name": "_viewMatrixDirty", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99509,7 +100058,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_viewMatrixDirty", "access": "private", "description": null, - "lineNumber": 1258, + "lineNumber": 1259, "undocument": true, "ignore": true, "type": { @@ -99519,7 +100068,7 @@ } }, { - "__docId__": 4961, + "__docId__": 4980, "kind": "member", "name": "_matrixNonIdentity", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99527,7 +100076,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_matrixNonIdentity", "access": "private", "description": null, - "lineNumber": 1259, + "lineNumber": 1260, "undocument": true, "ignore": true, "type": { @@ -99537,7 +100086,7 @@ } }, { - "__docId__": 4962, + "__docId__": 4981, "kind": "member", "name": "_opacity", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99545,7 +100094,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_opacity", "access": "private", "description": null, - "lineNumber": 1262, + "lineNumber": 1263, "undocument": true, "ignore": true, "type": { @@ -99555,7 +100104,7 @@ } }, { - "__docId__": 4963, + "__docId__": 4982, "kind": "member", "name": "_colorize", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99563,7 +100112,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_colorize", "access": "private", "description": null, - "lineNumber": 1263, + "lineNumber": 1264, "undocument": true, "ignore": true, "type": { @@ -99573,7 +100122,7 @@ } }, { - "__docId__": 4964, + "__docId__": 4983, "kind": "member", "name": "_saoEnabled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99581,7 +100130,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_saoEnabled", "access": "private", "description": null, - "lineNumber": 1265, + "lineNumber": 1266, "undocument": true, "ignore": true, "type": { @@ -99591,7 +100140,7 @@ } }, { - "__docId__": 4965, + "__docId__": 4984, "kind": "member", "name": "_pbrEnabled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99599,7 +100148,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_pbrEnabled", "access": "private", "description": null, - "lineNumber": 1266, + "lineNumber": 1267, "undocument": true, "ignore": true, "type": { @@ -99609,7 +100158,7 @@ } }, { - "__docId__": 4966, + "__docId__": 4985, "kind": "member", "name": "_colorTextureEnabled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99617,7 +100166,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_colorTextureEnabled", "access": "private", "description": null, - "lineNumber": 1267, + "lineNumber": 1268, "undocument": true, "ignore": true, "type": { @@ -99627,7 +100176,7 @@ } }, { - "__docId__": 4967, + "__docId__": 4986, "kind": "member", "name": "_isModel", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99635,7 +100184,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_isModel", "access": "private", "description": null, - "lineNumber": 1269, + "lineNumber": 1270, "undocument": true, "ignore": true, "type": { @@ -99645,7 +100194,7 @@ } }, { - "__docId__": 4968, + "__docId__": 4987, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99653,7 +100202,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_onCameraViewMatrix", "access": "private", "description": null, - "lineNumber": 1274, + "lineNumber": 1275, "undocument": true, "ignore": true, "type": { @@ -99663,7 +100212,7 @@ } }, { - "__docId__": 4970, + "__docId__": 4989, "kind": "member", "name": "_meshesWithDirtyMatrices", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99671,7 +100220,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_meshesWithDirtyMatrices", "access": "private", "description": null, - "lineNumber": 1278, + "lineNumber": 1279, "undocument": true, "ignore": true, "type": { @@ -99681,7 +100230,7 @@ } }, { - "__docId__": 4971, + "__docId__": 4990, "kind": "member", "name": "_numMeshesWithDirtyMatrices", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99689,7 +100238,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_numMeshesWithDirtyMatrices", "access": "private", "description": null, - "lineNumber": 1279, + "lineNumber": 1280, "undocument": true, "ignore": true, "type": { @@ -99699,7 +100248,7 @@ } }, { - "__docId__": 4972, + "__docId__": 4991, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99707,7 +100256,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_onTick", "access": "private", "description": null, - "lineNumber": 1281, + "lineNumber": 1282, "undocument": true, "ignore": true, "type": { @@ -99717,7 +100266,7 @@ } }, { - "__docId__": 4987, + "__docId__": 5006, "kind": "method", "name": "_meshMatrixDirty", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99727,7 +100276,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_meshMatrixDirty", "access": "private", "description": null, - "lineNumber": 1305, + "lineNumber": 1306, "undocument": true, "ignore": true, "params": [ @@ -99741,7 +100290,7 @@ "return": null }, { - "__docId__": 4988, + "__docId__": 5007, "kind": "method", "name": "_createDefaultTextureSet", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99751,14 +100300,14 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_createDefaultTextureSet", "access": "private", "description": null, - "lineNumber": 1309, + "lineNumber": 1310, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 4989, + "__docId__": 5008, "kind": "get", "name": "isPerformanceModel", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99768,7 +100317,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#isPerformanceModel", "access": "public", "description": "Returns true to indicate that this Component is a SceneModel.", - "lineNumber": 1371, + "lineNumber": 1372, "type": { "nullable": null, "types": [ @@ -99779,7 +100328,7 @@ } }, { - "__docId__": 4990, + "__docId__": 5009, "kind": "get", "name": "transforms", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99789,7 +100338,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#transforms", "access": "public", "description": "The {@link SceneModelTransform}s in this SceneModel.\n\nEach {#link SceneModelTransform} is stored here against its {@link SceneModelTransform.id}.", - "lineNumber": 1382, + "lineNumber": 1383, "unknown": [ { "tagName": "@returns", @@ -99812,7 +100361,7 @@ } }, { - "__docId__": 4991, + "__docId__": 5010, "kind": "get", "name": "textures", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99822,7 +100371,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#textures", "access": "public", "description": "The {@link SceneModelTexture}s in this SceneModel.\n\n* Each {@link SceneModelTexture} is created with {@link SceneModel.createTexture}.\n* Each {@link SceneModelTexture} is stored here against its {@link SceneModelTexture.id}.", - "lineNumber": 1394, + "lineNumber": 1395, "unknown": [ { "tagName": "@returns", @@ -99845,7 +100394,7 @@ } }, { - "__docId__": 4992, + "__docId__": 5011, "kind": "get", "name": "textureSets", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99855,7 +100404,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#textureSets", "access": "public", "description": "The {@link SceneModelTextureSet}s in this SceneModel.\n\nEach {@link SceneModelTextureSet} is stored here against its {@link SceneModelTextureSet.id}.", - "lineNumber": 1405, + "lineNumber": 1406, "unknown": [ { "tagName": "@returns", @@ -99878,7 +100427,7 @@ } }, { - "__docId__": 4993, + "__docId__": 5012, "kind": "get", "name": "meshes", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99888,7 +100437,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#meshes", "access": "public", "description": "The {@link SceneModelMesh}es in this SceneModel.\n\nEach {@SceneModelMesh} is stored here against its {@link SceneModelMesh.id}.", - "lineNumber": 1416, + "lineNumber": 1417, "unknown": [ { "tagName": "@returns", @@ -99911,7 +100460,7 @@ } }, { - "__docId__": 4994, + "__docId__": 5013, "kind": "get", "name": "objects", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99921,7 +100470,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#objects", "access": "public", "description": "The {@link SceneModelEntity}s in this SceneModel.\n\nEach {#link SceneModelEntity} in this SceneModel that represents an object is\nstored here against its {@link SceneModelTransform.id}.", - "lineNumber": 1428, + "lineNumber": 1429, "unknown": [ { "tagName": "@returns", @@ -99944,7 +100493,7 @@ } }, { - "__docId__": 4995, + "__docId__": 5014, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99954,7 +100503,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#origin", "access": "public", "description": "Gets the 3D World-space origin for this SceneModel.\n\nEach {@link SceneModelMesh.origin}, if supplied, is relative to this origin.\n\nDefault value is ````[0,0,0]````.", - "lineNumber": 1441, + "lineNumber": 1442, "type": { "nullable": null, "types": [ @@ -99965,7 +100514,7 @@ } }, { - "__docId__": 4996, + "__docId__": 5015, "kind": "set", "name": "position", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99975,7 +100524,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#position", "access": "public", "description": "Sets the SceneModel's local translation.\n\nDefault value is ````[0,0,0]````.", - "lineNumber": 1452, + "lineNumber": 1453, "type": { "nullable": null, "types": [ @@ -99986,7 +100535,7 @@ } }, { - "__docId__": 4997, + "__docId__": 5016, "kind": "get", "name": "position", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -99996,7 +100545,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#position", "access": "public", "description": "Gets the SceneModel's local translation.\n\nDefault value is ````[0,0,0]````.", - "lineNumber": 1466, + "lineNumber": 1467, "type": { "nullable": null, "types": [ @@ -100007,7 +100556,7 @@ } }, { - "__docId__": 4998, + "__docId__": 5017, "kind": "set", "name": "rotation", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100017,7 +100566,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#rotation", "access": "public", "description": "Sets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n\nDefault value is ````[0,0,0]````.", - "lineNumber": 1477, + "lineNumber": 1478, "type": { "nullable": null, "types": [ @@ -100028,7 +100577,7 @@ } }, { - "__docId__": 4999, + "__docId__": 5018, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100038,7 +100587,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#rotation", "access": "public", "description": "Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n\nDefault value is ````[0,0,0]````.", - "lineNumber": 1492, + "lineNumber": 1493, "type": { "nullable": null, "types": [ @@ -100049,7 +100598,7 @@ } }, { - "__docId__": 5000, + "__docId__": 5019, "kind": "set", "name": "quaternion", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100059,7 +100608,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#quaternion", "access": "public", "description": "Sets the SceneModel's local rotation quaternion.\n\nDefault value is ````[0,0,0,1]````.", - "lineNumber": 1503, + "lineNumber": 1504, "type": { "nullable": null, "types": [ @@ -100070,7 +100619,7 @@ } }, { - "__docId__": 5001, + "__docId__": 5020, "kind": "get", "name": "quaternion", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100080,7 +100629,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#quaternion", "access": "public", "description": "Gets the SceneModel's local rotation quaternion.\n\nDefault value is ````[0,0,0,1]````.", - "lineNumber": 1518, + "lineNumber": 1519, "type": { "nullable": null, "types": [ @@ -100091,7 +100640,7 @@ } }, { - "__docId__": 5002, + "__docId__": 5021, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100101,7 +100650,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#scale", "access": "public", "description": "Sets the SceneModel's local scale.\n\nDefault value is ````[1,1,1]````.", - "lineNumber": 1530, + "lineNumber": 1531, "deprecated": true, "type": { "nullable": null, @@ -100113,7 +100662,7 @@ } }, { - "__docId__": 5003, + "__docId__": 5022, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100123,7 +100672,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#scale", "access": "public", "description": "Gets the SceneModel's local scale.\n\nDefault value is ````[1,1,1]````.", - "lineNumber": 1542, + "lineNumber": 1543, "deprecated": true, "type": { "nullable": null, @@ -100135,7 +100684,7 @@ } }, { - "__docId__": 5004, + "__docId__": 5023, "kind": "set", "name": "matrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100145,7 +100694,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#matrix", "access": "public", "description": "Sets the SceneModel's local modeling transform matrix.\n\nDefault value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.", - "lineNumber": 1553, + "lineNumber": 1554, "type": { "nullable": null, "types": [ @@ -100156,7 +100705,7 @@ } }, { - "__docId__": 5006, + "__docId__": 5025, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100166,7 +100715,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#matrix", "access": "public", "description": "Gets the SceneModel's local modeling transform matrix.\n\nDefault value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.", - "lineNumber": 1575, + "lineNumber": 1576, "type": { "nullable": null, "types": [ @@ -100177,7 +100726,7 @@ } }, { - "__docId__": 5007, + "__docId__": 5026, "kind": "get", "name": "rotationMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100187,7 +100736,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#rotationMatrix", "access": "public", "description": "Gets the SceneModel's local modeling rotation transform matrix.", - "lineNumber": 1587, + "lineNumber": 1588, "type": { "nullable": null, "types": [ @@ -100198,7 +100747,7 @@ } }, { - "__docId__": 5008, + "__docId__": 5027, "kind": "method", "name": "_rebuildMatrices", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100208,14 +100757,14 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_rebuildMatrices", "access": "private", "description": null, - "lineNumber": 1594, + "lineNumber": 1595, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 5010, + "__docId__": 5029, "kind": "get", "name": "rotationMatrixConjugate", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100225,7 +100774,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#rotationMatrixConjugate", "access": "public", "description": "Gets the conjugate of the SceneModel's local modeling rotation transform matrix.\n\nThis is used for RTC view matrix management in renderers.", - "lineNumber": 1612, + "lineNumber": 1613, "type": { "nullable": null, "types": [ @@ -100236,7 +100785,7 @@ } }, { - "__docId__": 5011, + "__docId__": 5030, "kind": "method", "name": "_setWorldMatrixDirty", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100246,14 +100795,14 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_setWorldMatrixDirty", "access": "private", "description": null, - "lineNumber": 1619, + "lineNumber": 1620, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 5014, + "__docId__": 5033, "kind": "method", "name": "_transformDirty", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100263,14 +100812,14 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_transformDirty", "access": "private", "description": null, - "lineNumber": 1624, + "lineNumber": 1625, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 5017, + "__docId__": 5036, "kind": "method", "name": "_sceneModelDirty", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100280,14 +100829,14 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_sceneModelDirty", "access": "private", "description": null, - "lineNumber": 1630, + "lineNumber": 1631, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 5020, + "__docId__": 5039, "kind": "get", "name": "worldMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100297,7 +100846,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#worldMatrix", "access": "public", "description": "Gets the SceneModel's World matrix.", - "lineNumber": 1646, + "lineNumber": 1647, "properties": [ { "nullable": null, @@ -100320,7 +100869,7 @@ } }, { - "__docId__": 5021, + "__docId__": 5040, "kind": "get", "name": "worldNormalMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100330,7 +100879,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#worldNormalMatrix", "access": "public", "description": "Gets the SceneModel's World normal matrix.", - "lineNumber": 1655, + "lineNumber": 1656, "type": { "nullable": null, "types": [ @@ -100341,7 +100890,7 @@ } }, { - "__docId__": 5022, + "__docId__": 5041, "kind": "get", "name": "viewMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100351,7 +100900,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#viewMatrix", "access": "private", "description": "Called by private renderers in ./lib, returns the view matrix with which to\nrender this SceneModel. The view matrix is the concatenation of the\nCamera view matrix with the Performance model's world (modeling) matrix.", - "lineNumber": 1666, + "lineNumber": 1667, "ignore": true, "type": { "types": [ @@ -100360,7 +100909,7 @@ } }, { - "__docId__": 5025, + "__docId__": 5044, "kind": "get", "name": "viewNormalMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100370,7 +100919,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#viewNormalMatrix", "access": "private", "description": "Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel.", - "lineNumber": 1688, + "lineNumber": 1689, "ignore": true, "type": { "types": [ @@ -100379,7 +100928,7 @@ } }, { - "__docId__": 5028, + "__docId__": 5047, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100389,7 +100938,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#backfaces", "access": "public", "description": "Sets if backfaces are rendered for this SceneModel.\n\nDefault is ````false````.", - "lineNumber": 1714, + "lineNumber": 1715, "type": { "nullable": null, "types": [ @@ -100400,7 +100949,7 @@ } }, { - "__docId__": 5029, + "__docId__": 5048, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100410,7 +100959,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#backfaces", "access": "public", "description": "Sets if backfaces are rendered for this SceneModel.\n\nDefault is ````false````.\n\nWhen we set this ````true````, then backfaces are always rendered for this SceneModel.\n\nWhen we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\nthe Viewer will:\n\n * hide backfaces on watertight meshes,\n * show backfaces on open meshes, and\n * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.", - "lineNumber": 1734, + "lineNumber": 1735, "type": { "nullable": null, "types": [ @@ -100421,7 +100970,7 @@ } }, { - "__docId__": 5030, + "__docId__": 5049, "kind": "member", "name": "_backfaces", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100429,7 +100978,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_backfaces", "access": "private", "description": null, - "lineNumber": 1736, + "lineNumber": 1737, "undocument": true, "ignore": true, "type": { @@ -100439,7 +100988,7 @@ } }, { - "__docId__": 5031, + "__docId__": 5050, "kind": "get", "name": "entityList", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100449,7 +100998,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#entityList", "access": "public", "description": "Gets the list of {@link SceneModelEntity}s within this SceneModel.", - "lineNumber": 1745, + "lineNumber": 1746, "unknown": [ { "tagName": "@returns", @@ -100471,7 +101020,7 @@ } }, { - "__docId__": 5032, + "__docId__": 5051, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100481,7 +101030,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#isEntity", "access": "public", "description": "Returns true to indicate that SceneModel is an {@link Entity}.", - "lineNumber": 1753, + "lineNumber": 1754, "type": { "nullable": null, "types": [ @@ -100492,7 +101041,7 @@ } }, { - "__docId__": 5033, + "__docId__": 5052, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100502,7 +101051,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#isModel", "access": "public", "description": "Returns ````true```` if this SceneModel represents a model.\n\nWhen ````true```` the SceneModel will be registered by {@link SceneModel#id} in\n{@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.", - "lineNumber": 1765, + "lineNumber": 1766, "type": { "nullable": null, "types": [ @@ -100513,7 +101062,7 @@ } }, { - "__docId__": 5034, + "__docId__": 5053, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100523,7 +101072,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#isObject", "access": "public", "description": "Returns ````false```` to indicate that SceneModel never represents an object.", - "lineNumber": 1778, + "lineNumber": 1779, "type": { "nullable": null, "types": [ @@ -100534,7 +101083,7 @@ } }, { - "__docId__": 5035, + "__docId__": 5054, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100544,7 +101093,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#aabb", "access": "public", "description": "Gets the SceneModel's World-space 3D axis-aligned bounding box.\n\nRepresented by a six-element Float64Array containing the min/max extents of the\naxis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.", - "lineNumber": 1790, + "lineNumber": 1791, "type": { "nullable": null, "types": [ @@ -100555,7 +101104,7 @@ } }, { - "__docId__": 5037, + "__docId__": 5056, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100565,7 +101114,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numTriangles", "access": "public", "description": "The approximate number of triangle primitives in this SceneModel.", - "lineNumber": 1806, + "lineNumber": 1807, "type": { "nullable": null, "types": [ @@ -100576,7 +101125,7 @@ } }, { - "__docId__": 5038, + "__docId__": 5057, "kind": "get", "name": "numLines", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100586,7 +101135,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numLines", "access": "public", "description": "The approximate number of line primitives in this SceneModel.", - "lineNumber": 1819, + "lineNumber": 1820, "type": { "nullable": null, "types": [ @@ -100597,7 +101146,7 @@ } }, { - "__docId__": 5039, + "__docId__": 5058, "kind": "get", "name": "numPoints", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100607,7 +101156,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#numPoints", "access": "public", "description": "The approximate number of point primitives in this SceneModel.", - "lineNumber": 1828, + "lineNumber": 1829, "type": { "nullable": null, "types": [ @@ -100618,7 +101167,7 @@ } }, { - "__docId__": 5040, + "__docId__": 5059, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100628,7 +101177,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#visible", "access": "public", "description": "Gets if any {@link SceneModelEntity}s in this SceneModel are visible.\n\nThe SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.", - "lineNumber": 1839, + "lineNumber": 1840, "type": { "nullable": null, "types": [ @@ -100639,7 +101188,7 @@ } }, { - "__docId__": 5041, + "__docId__": 5060, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100649,7 +101198,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#visible", "access": "public", "description": "Sets if this SceneModel is visible.\n\nThe SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````.\n*", - "lineNumber": 1850, + "lineNumber": 1851, "type": { "nullable": null, "types": [ @@ -100660,7 +101209,7 @@ } }, { - "__docId__": 5042, + "__docId__": 5061, "kind": "member", "name": "_visible", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100668,7 +101217,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_visible", "access": "private", "description": null, - "lineNumber": 1852, + "lineNumber": 1853, "undocument": true, "ignore": true, "type": { @@ -100678,7 +101227,7 @@ } }, { - "__docId__": 5043, + "__docId__": 5062, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100688,7 +101237,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#xrayed", "access": "public", "description": "Gets if any {@link SceneModelEntity}s in this SceneModel are xrayed.", - "lineNumber": 1864, + "lineNumber": 1865, "type": { "nullable": null, "types": [ @@ -100699,7 +101248,7 @@ } }, { - "__docId__": 5044, + "__docId__": 5063, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100709,7 +101258,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#xrayed", "access": "public", "description": "Sets if all {@link SceneModelEntity}s in this SceneModel are xrayed.", - "lineNumber": 1873, + "lineNumber": 1874, "type": { "nullable": null, "types": [ @@ -100720,7 +101269,7 @@ } }, { - "__docId__": 5045, + "__docId__": 5064, "kind": "member", "name": "_xrayed", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100728,7 +101277,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_xrayed", "access": "private", "description": null, - "lineNumber": 1875, + "lineNumber": 1876, "undocument": true, "ignore": true, "type": { @@ -100738,7 +101287,7 @@ } }, { - "__docId__": 5046, + "__docId__": 5065, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100748,7 +101297,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#highlighted", "access": "public", "description": "Gets if any {@link SceneModelEntity}s in this SceneModel are highlighted.", - "lineNumber": 1887, + "lineNumber": 1888, "type": { "nullable": null, "types": [ @@ -100759,7 +101308,7 @@ } }, { - "__docId__": 5047, + "__docId__": 5066, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100769,7 +101318,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#highlighted", "access": "public", "description": "Sets if all {@link SceneModelEntity}s in this SceneModel are highlighted.", - "lineNumber": 1896, + "lineNumber": 1897, "type": { "nullable": null, "types": [ @@ -100780,7 +101329,7 @@ } }, { - "__docId__": 5048, + "__docId__": 5067, "kind": "member", "name": "_highlighted", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100788,7 +101337,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_highlighted", "access": "private", "description": null, - "lineNumber": 1898, + "lineNumber": 1899, "undocument": true, "ignore": true, "type": { @@ -100798,7 +101347,7 @@ } }, { - "__docId__": 5049, + "__docId__": 5068, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100808,7 +101357,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#selected", "access": "public", "description": "Gets if any {@link SceneModelEntity}s in this SceneModel are selected.", - "lineNumber": 1910, + "lineNumber": 1911, "type": { "nullable": null, "types": [ @@ -100819,7 +101368,7 @@ } }, { - "__docId__": 5050, + "__docId__": 5069, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100829,7 +101378,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#selected", "access": "public", "description": "Sets if all {@link SceneModelEntity}s in this SceneModel are selected.", - "lineNumber": 1919, + "lineNumber": 1920, "type": { "nullable": null, "types": [ @@ -100840,7 +101389,7 @@ } }, { - "__docId__": 5051, + "__docId__": 5070, "kind": "member", "name": "_selected", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100848,7 +101397,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_selected", "access": "private", "description": null, - "lineNumber": 1921, + "lineNumber": 1922, "undocument": true, "ignore": true, "type": { @@ -100858,7 +101407,7 @@ } }, { - "__docId__": 5052, + "__docId__": 5071, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100868,7 +101417,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#edges", "access": "public", "description": "Gets if any {@link SceneModelEntity}s in this SceneModel have edges emphasised.", - "lineNumber": 1933, + "lineNumber": 1934, "type": { "nullable": null, "types": [ @@ -100879,7 +101428,7 @@ } }, { - "__docId__": 5053, + "__docId__": 5072, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100889,7 +101438,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#edges", "access": "public", "description": "Sets if all {@link SceneModelEntity}s in this SceneModel have edges emphasised.", - "lineNumber": 1942, + "lineNumber": 1943, "type": { "nullable": null, "types": [ @@ -100900,7 +101449,7 @@ } }, { - "__docId__": 5054, + "__docId__": 5073, "kind": "member", "name": "_edges", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100908,7 +101457,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_edges", "access": "private", "description": null, - "lineNumber": 1944, + "lineNumber": 1945, "undocument": true, "ignore": true, "type": { @@ -100918,7 +101467,7 @@ } }, { - "__docId__": 5055, + "__docId__": 5074, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100928,7 +101477,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#culled", "access": "public", "description": "Gets if this SceneModel is culled from view.\n\nThe SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.", - "lineNumber": 1958, + "lineNumber": 1959, "type": { "nullable": null, "types": [ @@ -100939,7 +101488,7 @@ } }, { - "__docId__": 5056, + "__docId__": 5075, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100949,7 +101498,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#culled", "access": "public", "description": "Sets if this SceneModel is culled from view.\n\nThe SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false.", - "lineNumber": 1969, + "lineNumber": 1970, "type": { "nullable": null, "types": [ @@ -100960,7 +101509,7 @@ } }, { - "__docId__": 5057, + "__docId__": 5076, "kind": "member", "name": "_culled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100968,7 +101517,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_culled", "access": "private", "description": null, - "lineNumber": 1971, + "lineNumber": 1972, "undocument": true, "ignore": true, "type": { @@ -100978,7 +101527,7 @@ } }, { - "__docId__": 5058, + "__docId__": 5077, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -100988,7 +101537,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#clippable", "access": "public", "description": "Gets if {@link SceneModelEntity}s in this SceneModel are clippable.\n\nClipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.", - "lineNumber": 1985, + "lineNumber": 1986, "type": { "nullable": null, "types": [ @@ -100999,7 +101548,7 @@ } }, { - "__docId__": 5059, + "__docId__": 5078, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101009,7 +101558,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#clippable", "access": "public", "description": "Sets if {@link SceneModelEntity}s in this SceneModel are clippable.\n\nClipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.", - "lineNumber": 1996, + "lineNumber": 1997, "type": { "nullable": null, "types": [ @@ -101020,7 +101569,7 @@ } }, { - "__docId__": 5060, + "__docId__": 5079, "kind": "member", "name": "_clippable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101028,7 +101577,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_clippable", "access": "private", "description": null, - "lineNumber": 1998, + "lineNumber": 1999, "undocument": true, "ignore": true, "type": { @@ -101038,7 +101587,7 @@ } }, { - "__docId__": 5061, + "__docId__": 5080, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101048,7 +101597,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#collidable", "access": "public", "description": "Gets if this SceneModel is collidable.", - "lineNumber": 2010, + "lineNumber": 2011, "type": { "nullable": null, "types": [ @@ -101059,7 +101608,7 @@ } }, { - "__docId__": 5062, + "__docId__": 5081, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101069,7 +101618,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#collidable", "access": "public", "description": "Sets if {@link SceneModelEntity}s in this SceneModel are collidable.", - "lineNumber": 2019, + "lineNumber": 2020, "type": { "nullable": null, "types": [ @@ -101080,7 +101629,7 @@ } }, { - "__docId__": 5063, + "__docId__": 5082, "kind": "member", "name": "_collidable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101088,7 +101637,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_collidable", "access": "private", "description": null, - "lineNumber": 2021, + "lineNumber": 2022, "undocument": true, "ignore": true, "type": { @@ -101098,7 +101647,7 @@ } }, { - "__docId__": 5064, + "__docId__": 5083, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101108,7 +101657,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#pickable", "access": "public", "description": "Gets if this SceneModel is pickable.\n\nPicking is done via calls to {@link Scene#pick}.", - "lineNumber": 2034, + "lineNumber": 2035, "type": { "nullable": null, "types": [ @@ -101119,7 +101668,7 @@ } }, { - "__docId__": 5065, + "__docId__": 5084, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101129,7 +101678,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#pickable", "access": "public", "description": "Sets if {@link SceneModelEntity}s in this SceneModel are pickable.\n\nPicking is done via calls to {@link Scene#pick}.", - "lineNumber": 2045, + "lineNumber": 2046, "type": { "nullable": null, "types": [ @@ -101140,7 +101689,7 @@ } }, { - "__docId__": 5066, + "__docId__": 5085, "kind": "member", "name": "_pickable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101148,7 +101697,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_pickable", "access": "private", "description": null, - "lineNumber": 2047, + "lineNumber": 2048, "undocument": true, "ignore": true, "type": { @@ -101158,7 +101707,7 @@ } }, { - "__docId__": 5067, + "__docId__": 5086, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101168,7 +101717,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#colorize", "access": "public", "description": "Gets the RGB colorize color for this SceneModel.\n\nEach element of the color is in range ````[0..1]````.", - "lineNumber": 2060, + "lineNumber": 2061, "type": { "nullable": null, "types": [ @@ -101179,7 +101728,7 @@ } }, { - "__docId__": 5068, + "__docId__": 5087, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101189,7 +101738,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#colorize", "access": "public", "description": "Sets the RGB colorize color for this SceneModel.\n\nMultiplies by rendered fragment colors.\n\nEach element of the color is in range ````[0..1]````.", - "lineNumber": 2073, + "lineNumber": 2074, "type": { "nullable": null, "types": [ @@ -101200,7 +101749,7 @@ } }, { - "__docId__": 5070, + "__docId__": 5089, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101210,7 +101759,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#opacity", "access": "public", "description": "Gets this SceneModel's opacity factor.\n\nThis is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.", - "lineNumber": 2087, + "lineNumber": 2088, "type": { "nullable": null, "types": [ @@ -101221,7 +101770,7 @@ } }, { - "__docId__": 5071, + "__docId__": 5090, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101231,7 +101780,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#opacity", "access": "public", "description": "Sets the opacity factor for this SceneModel.\n\nThis is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.", - "lineNumber": 2098, + "lineNumber": 2099, "type": { "nullable": null, "types": [ @@ -101242,7 +101791,7 @@ } }, { - "__docId__": 5073, + "__docId__": 5092, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101252,7 +101801,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#castsShadow", "access": "public", "description": "Gets if this SceneModel casts a shadow.", - "lineNumber": 2110, + "lineNumber": 2111, "type": { "nullable": null, "types": [ @@ -101263,7 +101812,7 @@ } }, { - "__docId__": 5074, + "__docId__": 5093, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101273,7 +101822,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#castsShadow", "access": "public", "description": "Sets if this SceneModel casts a shadow.", - "lineNumber": 2119, + "lineNumber": 2120, "type": { "nullable": null, "types": [ @@ -101284,7 +101833,7 @@ } }, { - "__docId__": 5075, + "__docId__": 5094, "kind": "member", "name": "_castsShadow", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101292,7 +101841,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_castsShadow", "access": "private", "description": null, - "lineNumber": 2122, + "lineNumber": 2123, "undocument": true, "ignore": true, "type": { @@ -101302,7 +101851,7 @@ } }, { - "__docId__": 5076, + "__docId__": 5095, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101312,7 +101861,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#receivesShadow", "access": "public", "description": "Sets if this SceneModel can have shadow cast upon it.", - "lineNumber": 2132, + "lineNumber": 2133, "type": { "nullable": null, "types": [ @@ -101323,7 +101872,7 @@ } }, { - "__docId__": 5077, + "__docId__": 5096, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101333,7 +101882,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#receivesShadow", "access": "public", "description": "Sets if this SceneModel can have shadow cast upon it.", - "lineNumber": 2141, + "lineNumber": 2142, "type": { "nullable": null, "types": [ @@ -101344,7 +101893,7 @@ } }, { - "__docId__": 5078, + "__docId__": 5097, "kind": "member", "name": "_receivesShadow", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101352,7 +101901,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_receivesShadow", "access": "private", "description": null, - "lineNumber": 2144, + "lineNumber": 2145, "undocument": true, "ignore": true, "type": { @@ -101362,7 +101911,7 @@ } }, { - "__docId__": 5079, + "__docId__": 5098, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101372,7 +101921,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#saoEnabled", "access": "public", "description": "Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel.\n\nSAO is configured by the Scene's {@link SAO} component.\n\n Only works when {@link SAO#enabled} is also true.", - "lineNumber": 2158, + "lineNumber": 2159, "type": { "nullable": null, "types": [ @@ -101383,7 +101932,7 @@ } }, { - "__docId__": 5080, + "__docId__": 5099, "kind": "get", "name": "pbrEnabled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101393,7 +101942,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#pbrEnabled", "access": "public", "description": "Gets if physically-based rendering (PBR) is enabled for this SceneModel.\n\nOnly works when {@link Scene#pbrEnabled} is also true.", - "lineNumber": 2169, + "lineNumber": 2170, "type": { "nullable": null, "types": [ @@ -101404,7 +101953,7 @@ } }, { - "__docId__": 5081, + "__docId__": 5100, "kind": "get", "name": "colorTextureEnabled", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101414,7 +101963,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#colorTextureEnabled", "access": "public", "description": "Gets if color textures are enabled for this SceneModel.\n\nOnly works when {@link Scene#colorTextureEnabled} is also true.", - "lineNumber": 2180, + "lineNumber": 2181, "type": { "nullable": null, "types": [ @@ -101425,7 +101974,7 @@ } }, { - "__docId__": 5082, + "__docId__": 5101, "kind": "get", "name": "isDrawable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101435,7 +101984,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#isDrawable", "access": "public", "description": "Returns true to indicate that SceneModel is implements {@link Drawable}.", - "lineNumber": 2189, + "lineNumber": 2190, "type": { "nullable": null, "types": [ @@ -101446,7 +101995,7 @@ } }, { - "__docId__": 5083, + "__docId__": 5102, "kind": "get", "name": "isStateSortable", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101456,7 +102005,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#isStateSortable", "access": "private", "description": null, - "lineNumber": 2194, + "lineNumber": 2195, "ignore": true, "type": { "types": [ @@ -101465,7 +102014,7 @@ } }, { - "__docId__": 5084, + "__docId__": 5103, "kind": "get", "name": "xrayMaterial", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101475,7 +102024,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#xrayMaterial", "access": "public", "description": "Configures the appearance of xrayed {@link SceneModelEntity}s within this SceneModel.\n\nThis is the {@link Scene#xrayMaterial}.", - "lineNumber": 2205, + "lineNumber": 2206, "type": { "nullable": null, "types": [ @@ -101486,7 +102035,7 @@ } }, { - "__docId__": 5085, + "__docId__": 5104, "kind": "get", "name": "highlightMaterial", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101496,7 +102045,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#highlightMaterial", "access": "public", "description": "Configures the appearance of highlighted {@link SceneModelEntity}s within this SceneModel.\n\nThis is the {@link Scene#highlightMaterial}.", - "lineNumber": 2216, + "lineNumber": 2217, "type": { "nullable": null, "types": [ @@ -101507,7 +102056,7 @@ } }, { - "__docId__": 5086, + "__docId__": 5105, "kind": "get", "name": "selectedMaterial", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101517,7 +102066,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#selectedMaterial", "access": "public", "description": "Configures the appearance of selected {@link SceneModelEntity}s within this SceneModel.\n\nThis is the {@link Scene#selectedMaterial}.", - "lineNumber": 2227, + "lineNumber": 2228, "type": { "nullable": null, "types": [ @@ -101528,7 +102077,7 @@ } }, { - "__docId__": 5087, + "__docId__": 5106, "kind": "get", "name": "edgeMaterial", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101538,7 +102087,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#edgeMaterial", "access": "public", "description": "Configures the appearance of edges of {@link SceneModelEntity}s within this SceneModel.\n\nThis is the {@link Scene#edgeMaterial}.", - "lineNumber": 2238, + "lineNumber": 2239, "type": { "nullable": null, "types": [ @@ -101549,7 +102098,7 @@ } }, { - "__docId__": 5088, + "__docId__": 5107, "kind": "method", "name": "getPickViewMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101559,7 +102108,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#getPickViewMatrix", "access": "private", "description": "Called by private renderers in ./lib, returns the picking view matrix with which to\nray-pick on this SceneModel.", - "lineNumber": 2252, + "lineNumber": 2253, "ignore": true, "params": [ { @@ -101576,7 +102125,7 @@ } }, { - "__docId__": 5089, + "__docId__": 5108, "kind": "method", "name": "createQuantizationRange", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101586,7 +102135,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#createQuantizationRange", "access": "public", "description": "", - "lineNumber": 2263, + "lineNumber": 2264, "params": [ { "nullable": null, @@ -101602,7 +102151,7 @@ "return": null }, { - "__docId__": 5090, + "__docId__": 5109, "kind": "method", "name": "createGeometry", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101612,7 +102161,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#createGeometry", "access": "public", "description": "Creates a reusable geometry within this SceneModel.\n\nWe can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that\ninstance the geometry.", - "lineNumber": 2305, + "lineNumber": 2306, "params": [ { "nullable": null, @@ -101773,7 +102322,7 @@ } }, { - "__docId__": 5092, + "__docId__": 5111, "kind": "method", "name": "createTexture", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101783,7 +102332,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#createTexture", "access": "public", "description": "Creates a texture within this SceneModel.\n\nWe can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture.", - "lineNumber": 2432, + "lineNumber": 2433, "params": [ { "nullable": null, @@ -101928,7 +102477,7 @@ } }, { - "__docId__": 5093, + "__docId__": 5112, "kind": "method", "name": "createTextureSet", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -101938,7 +102487,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#createTextureSet", "access": "public", "description": "Creates a texture set within this SceneModel.\n\n* Stores the new {@link SceneModelTextureSet} in {@link SceneModel#textureSets}.\n\nA texture set is a collection of textures that can be shared among meshes. We can then supply the texture set\nID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set.\n\nThe textures can work as a texture atlas, where each mesh can have geometry UVs that index\na different part of the textures. This allows us to minimize the number of textures in our models, which\nmeans faster rendering.", - "lineNumber": 2573, + "lineNumber": 2574, "unknown": [ { "tagName": "@returns", @@ -102028,7 +102577,7 @@ } }, { - "__docId__": 5094, + "__docId__": 5113, "kind": "method", "name": "createTransform", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102038,7 +102587,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#createTransform", "access": "public", "description": "Creates a new {@link SceneModelTransform} within this SceneModel.\n\n* Stores the new {@link SceneModelTransform} in {@link SceneModel#transforms}.\n* Can be connected into hierarchies\n* Each {@link SceneModelTransform} can be used by unlimited {@link SceneModelMesh}es", - "lineNumber": 2662, + "lineNumber": 2663, "unknown": [ { "tagName": "@returns", @@ -102164,7 +102713,7 @@ } }, { - "__docId__": 5095, + "__docId__": 5114, "kind": "method", "name": "createMesh", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102174,7 +102723,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#createMesh", "access": "public", "description": "Creates a new {@link SceneModelMesh} within this SceneModel.\n\n* It prepares and saves data for a SceneModelMesh {@link SceneModel#meshes} creation. SceneModelMesh will be created only once the SceneModelEntity (which references this particular SceneModelMesh) will be created.\n* The SceneModelMesh can either define its own geometry or share it with other SceneModelMeshes. To define own geometry, provide the\nvarious geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier\nwith {@link SceneModel#createGeometry}.\n* If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume\nthat the geometry ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the\norigin of their RTC coordinate system.", - "lineNumber": 2733, + "lineNumber": 2735, "unknown": [ { "tagName": "@returns", @@ -102423,6 +102972,16 @@ "name": "cfg.rotation", "description": "Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by ````transformId````." }, + { + "nullable": null, + "types": [ + "Number[]" + ], + "spread": false, + "optional": true, + "name": "cfg.quaternion", + "description": "Rotation of the mesh as a quaternion. Overridden by ````rotation````." + }, { "nullable": null, "types": [ @@ -102515,7 +103074,7 @@ } }, { - "__docId__": 5096, + "__docId__": 5115, "kind": "method", "name": "_createMesh", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102525,7 +103084,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_createMesh", "access": "private", "description": null, - "lineNumber": 3063, + "lineNumber": 3071, "undocument": true, "ignore": true, "params": [ @@ -102543,7 +103102,7 @@ } }, { - "__docId__": 5097, + "__docId__": 5116, "kind": "method", "name": "_getNumPrimitives", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102553,7 +103112,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_getNumPrimitives", "access": "private", "description": null, - "lineNumber": 3098, + "lineNumber": 3106, "undocument": true, "ignore": true, "params": [ @@ -102571,7 +103130,7 @@ } }, { - "__docId__": 5098, + "__docId__": 5117, "kind": "method", "name": "_getDTXLayer", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102581,7 +103140,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_getDTXLayer", "access": "private", "description": null, - "lineNumber": 3155, + "lineNumber": 3163, "undocument": true, "ignore": true, "params": [ @@ -102599,7 +103158,7 @@ } }, { - "__docId__": 5099, + "__docId__": 5118, "kind": "method", "name": "_getVBOBatchingLayer", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102609,7 +103168,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_getVBOBatchingLayer", "access": "private", "description": null, - "lineNumber": 3186, + "lineNumber": 3194, "undocument": true, "ignore": true, "params": [ @@ -102627,7 +103186,7 @@ } }, { - "__docId__": 5100, + "__docId__": 5119, "kind": "method", "name": "_createHashStringFromMatrix", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102637,7 +103196,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_createHashStringFromMatrix", "access": "private", "description": null, - "lineNumber": 3286, + "lineNumber": 3294, "undocument": true, "ignore": true, "params": [ @@ -102655,7 +103214,7 @@ } }, { - "__docId__": 5101, + "__docId__": 5120, "kind": "method", "name": "_getVBOInstancingLayer", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102665,7 +103224,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_getVBOInstancingLayer", "access": "private", "description": null, - "lineNumber": 3298, + "lineNumber": 3306, "undocument": true, "ignore": true, "params": [ @@ -102683,7 +103242,7 @@ } }, { - "__docId__": 5102, + "__docId__": 5121, "kind": "method", "name": "createEntity", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102693,7 +103252,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#createEntity", "access": "public", "description": "Creates a {@link SceneModelEntity} within this SceneModel.\n\n* Gives the SceneModelEntity one or more {@link SceneModelMesh}es previously created with\n{@link SceneModel#createMesh}. A SceneModelMesh can only belong to one SceneModelEntity, so you'll get an\nerror if you try to reuse a mesh among multiple SceneModelEntitys.\n* The SceneModelEntity can have a {@link SceneModelTextureSet}, previously created with\n{@link SceneModel#createTextureSet}. A SceneModelTextureSet can belong to multiple SceneModelEntitys.\n* The SceneModelEntity can have a geometry, previously created with\n{@link SceneModel#createTextureSet}. A geometry is a \"virtual component\" and can belong to multiple SceneModelEntitys.", - "lineNumber": 3406, + "lineNumber": 3414, "unknown": [ { "tagName": "@returns", @@ -102884,7 +103443,7 @@ } }, { - "__docId__": 5103, + "__docId__": 5122, "kind": "method", "name": "_createEntity", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102894,7 +103453,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_createEntity", "access": "private", "description": null, - "lineNumber": 3449, + "lineNumber": 3457, "undocument": true, "ignore": true, "params": [ @@ -102908,7 +103467,7 @@ "return": null }, { - "__docId__": 5104, + "__docId__": 5123, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102918,12 +103477,12 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#finalize", "access": "public", "description": "Finalizes this SceneModel.\n\nOnce finalized, you can't add anything more to this SceneModel.", - "lineNumber": 3483, + "lineNumber": 3491, "params": [], "return": null }, { - "__docId__": 5116, + "__docId__": 5135, "kind": "method", "name": "stateSortCompare", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102933,7 +103492,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#stateSortCompare", "access": "private", "description": null, - "lineNumber": 3534, + "lineNumber": 3542, "ignore": true, "params": [ { @@ -102952,7 +103511,7 @@ "return": null }, { - "__docId__": 5117, + "__docId__": 5136, "kind": "method", "name": "rebuildRenderFlags", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102962,13 +103521,13 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#rebuildRenderFlags", "access": "private", "description": null, - "lineNumber": 3538, + "lineNumber": 3546, "ignore": true, "params": [], "return": null }, { - "__docId__": 5118, + "__docId__": 5137, "kind": "method", "name": "_updateRenderFlagsVisibleLayers", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102978,13 +103537,13 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_updateRenderFlagsVisibleLayers", "access": "private", "description": "", - "lineNumber": 3551, + "lineNumber": 3559, "ignore": true, "params": [], "return": null }, { - "__docId__": 5119, + "__docId__": 5138, "kind": "method", "name": "_createDummyEntityForUnusedMeshes", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -102994,13 +103553,13 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_createDummyEntityForUnusedMeshes", "access": "private", "description": null, - "lineNumber": 3565, + "lineNumber": 3573, "ignore": true, "params": [], "return": null }, { - "__docId__": 5121, + "__docId__": 5140, "kind": "method", "name": "_getActiveSectionPlanesForLayer", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103010,7 +103569,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_getActiveSectionPlanesForLayer", "access": "private", "description": null, - "lineNumber": 3579, + "lineNumber": 3587, "undocument": true, "ignore": true, "params": [ @@ -103028,7 +103587,7 @@ } }, { - "__docId__": 5122, + "__docId__": 5141, "kind": "method", "name": "_updateRenderFlags", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103038,14 +103597,14 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#_updateRenderFlags", "access": "private", "description": null, - "lineNumber": 3598, + "lineNumber": 3606, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 5123, + "__docId__": 5142, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103055,7 +103614,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawColorOpaque", "access": "private", "description": null, - "lineNumber": 3675, + "lineNumber": 3683, "ignore": true, "params": [ { @@ -103068,7 +103627,7 @@ "return": null }, { - "__docId__": 5124, + "__docId__": 5143, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103078,7 +103637,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawColorTransparent", "access": "private", "description": null, - "lineNumber": 3684, + "lineNumber": 3692, "ignore": true, "params": [ { @@ -103091,7 +103650,7 @@ "return": null }, { - "__docId__": 5125, + "__docId__": 5144, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103101,7 +103660,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawDepth", "access": "private", "description": null, - "lineNumber": 3693, + "lineNumber": 3701, "ignore": true, "params": [ { @@ -103114,7 +103673,7 @@ "return": null }, { - "__docId__": 5126, + "__docId__": 5145, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103124,7 +103683,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawNormals", "access": "private", "description": null, - "lineNumber": 3702, + "lineNumber": 3710, "ignore": true, "params": [ { @@ -103137,7 +103696,7 @@ "return": null }, { - "__docId__": 5127, + "__docId__": 5146, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103147,7 +103706,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawSilhouetteXRayed", "access": "private", "description": null, - "lineNumber": 3711, + "lineNumber": 3719, "ignore": true, "params": [ { @@ -103160,7 +103719,7 @@ "return": null }, { - "__docId__": 5128, + "__docId__": 5147, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103170,7 +103729,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawSilhouetteHighlighted", "access": "private", "description": null, - "lineNumber": 3720, + "lineNumber": 3728, "ignore": true, "params": [ { @@ -103183,7 +103742,7 @@ "return": null }, { - "__docId__": 5129, + "__docId__": 5148, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103193,7 +103752,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawSilhouetteSelected", "access": "private", "description": null, - "lineNumber": 3729, + "lineNumber": 3737, "ignore": true, "params": [ { @@ -103206,7 +103765,7 @@ "return": null }, { - "__docId__": 5130, + "__docId__": 5149, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103216,7 +103775,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawEdgesColorOpaque", "access": "private", "description": null, - "lineNumber": 3738, + "lineNumber": 3746, "ignore": true, "params": [ { @@ -103229,7 +103788,7 @@ "return": null }, { - "__docId__": 5131, + "__docId__": 5150, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103239,7 +103798,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawEdgesColorTransparent", "access": "private", "description": null, - "lineNumber": 3747, + "lineNumber": 3755, "ignore": true, "params": [ { @@ -103252,7 +103811,7 @@ "return": null }, { - "__docId__": 5132, + "__docId__": 5151, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103262,7 +103821,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawEdgesXRayed", "access": "private", "description": null, - "lineNumber": 3756, + "lineNumber": 3764, "ignore": true, "params": [ { @@ -103275,7 +103834,7 @@ "return": null }, { - "__docId__": 5133, + "__docId__": 5152, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103285,7 +103844,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawEdgesHighlighted", "access": "private", "description": null, - "lineNumber": 3765, + "lineNumber": 3773, "ignore": true, "params": [ { @@ -103298,7 +103857,7 @@ "return": null }, { - "__docId__": 5134, + "__docId__": 5153, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103308,7 +103867,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawEdgesSelected", "access": "private", "description": null, - "lineNumber": 3774, + "lineNumber": 3782, "ignore": true, "params": [ { @@ -103321,7 +103880,7 @@ "return": null }, { - "__docId__": 5135, + "__docId__": 5154, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103331,7 +103890,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawOcclusion", "access": "private", "description": "", - "lineNumber": 3785, + "lineNumber": 3793, "ignore": true, "params": [ { @@ -103344,7 +103903,7 @@ "return": null }, { - "__docId__": 5136, + "__docId__": 5155, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103354,7 +103913,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawShadow", "access": "private", "description": "", - "lineNumber": 3799, + "lineNumber": 3807, "ignore": true, "params": [ { @@ -103367,7 +103926,7 @@ "return": null }, { - "__docId__": 5137, + "__docId__": 5156, "kind": "method", "name": "setPickMatrices", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103377,7 +103936,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#setPickMatrices", "access": "private", "description": null, - "lineNumber": 3811, + "lineNumber": 3819, "ignore": true, "params": [ { @@ -103396,7 +103955,7 @@ "return": null }, { - "__docId__": 5138, + "__docId__": 5157, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103406,7 +103965,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawPickMesh", "access": "private", "description": null, - "lineNumber": 3826, + "lineNumber": 3834, "ignore": true, "params": [ { @@ -103419,7 +103978,7 @@ "return": null }, { - "__docId__": 5139, + "__docId__": 5158, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103429,7 +103988,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawPickDepths", "access": "private", "description": "Called by SceneModelMesh.drawPickDepths()", - "lineNumber": 3841, + "lineNumber": 3849, "ignore": true, "params": [ { @@ -103442,7 +104001,7 @@ "return": null }, { - "__docId__": 5140, + "__docId__": 5159, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103452,7 +104011,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawPickNormals", "access": "private", "description": "Called by SceneModelMesh.drawPickNormals()", - "lineNumber": 3856, + "lineNumber": 3864, "ignore": true, "params": [ { @@ -103465,7 +104024,7 @@ "return": null }, { - "__docId__": 5141, + "__docId__": 5160, "kind": "method", "name": "drawSnapInit", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103475,7 +104034,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawSnapInit", "access": "private", "description": "", - "lineNumber": 3870, + "lineNumber": 3878, "ignore": true, "params": [ { @@ -103488,7 +104047,7 @@ "return": null }, { - "__docId__": 5142, + "__docId__": 5161, "kind": "method", "name": "drawSnap", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103498,7 +104057,7 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#drawSnap", "access": "private", "description": "", - "lineNumber": 3894, + "lineNumber": 3902, "ignore": true, "params": [ { @@ -103511,7 +104070,7 @@ "return": null }, { - "__docId__": 5143, + "__docId__": 5162, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/SceneModel.js~SceneModel", @@ -103521,12 +104080,12 @@ "longname": "src/viewer/scene/model/SceneModel.js~SceneModel#destroy", "access": "public", "description": "Destroys this SceneModel.", - "lineNumber": 3918, + "lineNumber": 3926, "params": [], "return": null }, { - "__docId__": 5153, + "__docId__": 5172, "kind": "function", "name": "createDTXBuckets", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -103539,7 +104098,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": "This function applies two steps to the provided mesh geometry data:\n\n- 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`.\n\n- 2nd, it tries to do an optimization called `index rebucketting`\n\n _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._\n\n - _for 32 bit indices, will try to demote them to 16 bit indices_\n - _for 16 bit indices, will try to demote them to 8 bits indices_\n - _8 bits indices are kept as-is_\n\n The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry.\n\nThe function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`.", - "lineNumber": 3982, + "lineNumber": 3990, "unknown": [ { "tagName": "@returns", @@ -103589,7 +104148,7 @@ "ignore": true }, { - "__docId__": 5154, + "__docId__": 5173, "kind": "function", "name": "createGeometryOBB", "memberof": "src/viewer/scene/model/SceneModel.js", @@ -103602,7 +104161,7 @@ "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/model/SceneModel.js", "importStyle": null, "description": null, - "lineNumber": 4020, + "lineNumber": 4028, "undocument": true, "params": [ { @@ -103616,7 +104175,7 @@ "ignore": true }, { - "__docId__": 5155, + "__docId__": 5174, "kind": "file", "name": "src/viewer/scene/model/SceneModelEntity.js", "content": "import {ENTITY_FLAGS} from './ENTITY_FLAGS.js';\nimport {math} from \"../math/math.js\";\n\nconst tempFloatRGB = new Float32Array([0, 0, 0]);\nconst tempIntRGB = new Uint16Array([0, 0, 0]);\n\nconst tempOBB3a = math.OBB3();\n\n/**\n * An entity within a {@link SceneModel}\n *\n * * Created with {@link SceneModel#createEntity}\n * * Stored by ID in {@link SceneModel#entities}\n * * Has one or more {@link SceneModelMesh}es\n *\n * @implements {Entity}\n */\nexport class SceneModelEntity {\n\n /**\n * @private\n */\n constructor(model, isObject, id, meshes, flags, lodCullable) {\n\n this._isObject = isObject;\n\n /**\n * The {@link Scene} to which this SceneModelEntity belongs.\n */\n this.scene = model.scene;\n\n /**\n * The {@link SceneModel} to which this SceneModelEntity belongs.\n */\n this.model = model;\n\n /**\n * The {@link SceneModelMesh}es belonging to this SceneModelEntity.\n *\n * * These are created with {@link SceneModel#createMesh} and registered in {@ilnk SceneModel#meshes}\n * * Each SceneModelMesh belongs to one SceneModelEntity\n */\n this.meshes = meshes;\n\n this._numPrimitives = 0;\n\n for (let i = 0, len = this.meshes.length; i < len; i++) { // TODO: tidier way? Refactor?\n const mesh = this.meshes[i];\n mesh.parent = this;\n mesh.entity = this;\n this._numPrimitives += mesh.numPrimitives;\n }\n\n /**\n * The unique ID of this SceneModelEntity.\n */\n this.id = id;\n\n /**\n * The original system ID of this SceneModelEntity.\n */\n this.originalSystemId = math.unglobalizeObjectId(model.id, id);\n\n this._flags = flags;\n this._aabb = math.AABB3();\n this._aabbDirty = true;\n\n this._offset = math.vec3();\n this._colorizeUpdated = false;\n this._opacityUpdated = false;\n\n this._lodCullable = (!!lodCullable);\n this._culled = false;\n this._culledVFC = false;\n this._culledLOD = false;\n\n if (this._isObject) {\n model.scene._registerObject(this);\n }\n }\n\n _transformDirty() {\n this._aabbDirty = true;\n this.model._transformDirty();\n\n }\n\n _sceneModelDirty() { // Called by SceneModel when SceneModel's matrix is updated\n this._aabbDirty = true;\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._sceneModelDirty();\n }\n }\n\n /**\n * World-space 3D axis-aligned bounding box (AABB) of this SceneModelEntity.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin, zmin, xmax, ymax, zmax]````.\n *\n * @type {Float64Array}\n */\n get aabb() {\n if (this._aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n math.expandAABB3(this._aabb, this.meshes[i].aabb);\n }\n this._aabbDirty = false;\n }\n // if (this._aabbDirty) {\n // math.AABB3ToOBB3(this._aabb, tempOBB3a);\n // math.transformOBB3(this.model.matrix, tempOBB3a);\n // math.OBB3ToAABB3(tempOBB3a, this._worldAABB);\n // this._worldAABB[0] += this._offset[0];\n // this._worldAABB[1] += this._offset[1];\n // this._worldAABB[2] += this._offset[2];\n // this._worldAABB[3] += this._offset[0];\n // this._worldAABB[4] += this._offset[1];\n // this._worldAABB[5] += this._offset[2];\n // this._aabbDirty = false;\n // }\n return this._aabb;\n }\n\n get isEntity() {\n return true;\n }\n\n /**\n * Returns false to indicate that this Entity subtype is not a model.\n * @returns {boolean}\n */\n get isModel() {\n return false;\n }\n\n /**\n * Returns ````true```` if this SceneModelEntity represents an object.\n *\n * When this is ````true````, the SceneModelEntity will be registered by {@link SceneModelEntity#id}\n * in {@link Scene#objects} and may also have a corresponding {@link MetaObject}.\n *\n * @type {Boolean}\n */\n get isObject() {\n return this._isObject;\n }\n\n get numPrimitives() {\n return this._numPrimitives;\n }\n\n /**\n * The approximate number of triangles in this SceneModelEntity.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numPrimitives;\n }\n\n /**\n * Gets if this SceneModelEntity is visible.\n *\n * Only rendered when {@link SceneModelEntity#visible} is ````true````\n * and {@link SceneModelEntity#culled} is ````false````.\n *\n * When {@link SceneModelEntity#isObject} and {@link SceneModelEntity#visible} are\n * both ````true```` the SceneModelEntity will be registered\n * by {@link SceneModelEntity#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n get visible() {\n return this._getFlag(ENTITY_FLAGS.VISIBLE);\n }\n\n /**\n * Sets if this SceneModelEntity is visible.\n *\n * Only rendered when {@link SceneModelEntity#visible} is ````true```` and {@link SceneModelEntity#culled} is ````false````.\n *\n * When {@link SceneModelEntity#isObject} and {@link SceneModelEntity#visible} are\n * both ````true```` the SceneModelEntity will be\n * registered by {@link SceneModelEntity#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n set visible(visible) {\n if (!!(this._flags & ENTITY_FLAGS.VISIBLE) === visible) {\n return; // Redundant update\n }\n if (visible) {\n this._flags = this._flags | ENTITY_FLAGS.VISIBLE;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.VISIBLE;\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setVisible(this._flags);\n }\n if (this._isObject) {\n this.model.scene._objectVisibilityUpdated(this);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this SceneModelEntity is highlighted.\n *\n * When {@link SceneModelEntity#isObject} and {@link SceneModelEntity#highlighted} are both ````true```` the SceneModelEntity will be\n * registered by {@link SceneModelEntity#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return this._getFlag(ENTITY_FLAGS.HIGHLIGHTED);\n }\n\n /**\n * Sets if this SceneModelEntity is highlighted.\n *\n * When {@link SceneModelEntity#isObject} and {@link SceneModelEntity#highlighted} are both ````true```` the SceneModelEntity will be\n * registered by {@link SceneModelEntity#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n if (!!(this._flags & ENTITY_FLAGS.HIGHLIGHTED) === highlighted) {\n return; // Redundant update\n }\n\n if (highlighted) {\n this._flags = this._flags | ENTITY_FLAGS.HIGHLIGHTED;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.HIGHLIGHTED;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setHighlighted(this._flags);\n }\n if (this._isObject) {\n this.model.scene._objectHighlightedUpdated(this);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this SceneModelEntity is xrayed.\n *\n * When {@link SceneModelEntity#isObject} and {@link SceneModelEntity#xrayed} are both ````true``` the SceneModelEntity will be\n * registered by {@link SceneModelEntity#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return this._getFlag(ENTITY_FLAGS.XRAYED);\n }\n\n /**\n * Sets if this SceneModelEntity is xrayed.\n *\n * When {@link SceneModelEntity#isObject} and {@link SceneModelEntity#xrayed} are both ````true``` the SceneModelEntity will be\n * registered by {@link SceneModelEntity#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n if (!!(this._flags & ENTITY_FLAGS.XRAYED) === xrayed) {\n return; // Redundant update\n }\n if (xrayed) {\n this._flags = this._flags | ENTITY_FLAGS.XRAYED;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.XRAYED;\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setXRayed(this._flags);\n }\n if (this._isObject) {\n this.model.scene._objectXRayedUpdated(this);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this SceneModelEntity is selected.\n *\n * When {@link SceneModelEntity#isObject} and {@link SceneModelEntity#selected} are both ````true``` the SceneModelEntity will be\n * registered by {@link SceneModelEntity#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n get selected() {\n return this._getFlag(ENTITY_FLAGS.SELECTED);\n }\n\n /**\n * Gets if this SceneModelEntity is selected.\n *\n * When {@link SceneModelEntity#isObject} and {@link SceneModelEntity#selected} are both ````true``` the SceneModelEntity will be\n * registered by {@link SceneModelEntity#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n if (!!(this._flags & ENTITY_FLAGS.SELECTED) === selected) {\n return; // Redundant update\n }\n if (selected) {\n this._flags = this._flags | ENTITY_FLAGS.SELECTED;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.SELECTED;\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setSelected(this._flags);\n }\n if (this._isObject) {\n this.model.scene._objectSelectedUpdated(this);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this SceneModelEntity's edges are enhanced.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._getFlag(ENTITY_FLAGS.EDGES);\n }\n\n /**\n * Sets if this SceneModelEntity's edges are enhanced.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n if (!!(this._flags & ENTITY_FLAGS.EDGES) === edges) {\n return; // Redundant update\n }\n if (edges) {\n this._flags = this._flags | ENTITY_FLAGS.EDGES;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.EDGES;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setEdges(this._flags);\n }\n this.model.glRedraw();\n }\n\n\n get culledVFC() {\n return !!(this._culledVFC);\n }\n\n set culledVFC(culled) {\n this._culledVFC = culled;\n this._setCulled();\n }\n\n get culledLOD() {\n return !!(this._culledLOD);\n }\n\n set culledLOD(culled) {\n this._culledLOD = culled;\n this._setCulled();\n }\n\n /**\n * Gets if this SceneModelEntity is culled.\n *\n * Only rendered when {@link SceneModelEntity#visible} is ````true```` and {@link SceneModelEntity#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get culled() {\n return !!(this._culled);\n // return this._getFlag(ENTITY_FLAGS.CULLED);\n }\n\n /**\n * Sets if this SceneModelEntity is culled.\n *\n * Only rendered when {@link SceneModelEntity#visible} is ````true```` and {@link SceneModelEntity#culled} is ````false````.\n *\n * @type {Boolean}\n */\n set culled(culled) {\n this._culled = culled;\n this._setCulled();\n }\n\n _setCulled() {\n let culled = !!(this._culled) || !!(this._culledLOD && this._lodCullable) || !!(this._culledVFC);\n if (!!(this._flags & ENTITY_FLAGS.CULLED) === culled) {\n return; // Redundant update\n }\n if (culled) {\n this._flags = this._flags | ENTITY_FLAGS.CULLED;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.CULLED;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setCulled(this._flags);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this SceneModelEntity is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._getFlag(ENTITY_FLAGS.CLIPPABLE);\n }\n\n /**\n * Sets if this SceneModelEntity is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n set clippable(clippable) {\n if ((!!(this._flags & ENTITY_FLAGS.CLIPPABLE)) === clippable) {\n return; // Redundant update\n }\n if (clippable) {\n this._flags = this._flags | ENTITY_FLAGS.CLIPPABLE;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.CLIPPABLE;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setClippable(this._flags);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this SceneModelEntity is included in boundary calculations.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._getFlag(ENTITY_FLAGS.COLLIDABLE);\n }\n\n /**\n * Sets if this SceneModelEntity is included in boundary calculations.\n *\n * @type {Boolean}\n */\n set collidable(collidable) {\n if (!!(this._flags & ENTITY_FLAGS.COLLIDABLE) === collidable) {\n return; // Redundant update\n }\n if (collidable) {\n this._flags = this._flags | ENTITY_FLAGS.COLLIDABLE;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.COLLIDABLE;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setCollidable(this._flags);\n }\n }\n\n /**\n * Gets if this SceneModelEntity is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._getFlag(ENTITY_FLAGS.PICKABLE);\n }\n\n /**\n * Sets if this SceneModelEntity is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(pickable) {\n if (!!(this._flags & ENTITY_FLAGS.PICKABLE) === pickable) {\n return; // Redundant update\n }\n if (pickable) {\n this._flags = this._flags | ENTITY_FLAGS.PICKABLE;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.PICKABLE;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setPickable(this._flags);\n }\n }\n\n /**\n * Gets the SceneModelEntity's RGB colorize color, multiplies by the SceneModelEntity's rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n get colorize() { // [0..1, 0..1, 0..1]\n if (this.meshes.length === 0) {\n return null;\n }\n const colorize = this.meshes[0]._colorize;\n tempFloatRGB[0] = colorize[0] / 255.0; // Unquantize\n tempFloatRGB[1] = colorize[1] / 255.0;\n tempFloatRGB[2] = colorize[2] / 255.0;\n return tempFloatRGB;\n }\n\n /**\n * Sets the SceneModelEntity's RGB colorize color, multiplies by the SceneModelEntity's rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(color) { // [0..1, 0..1, 0..1]\n if (color) {\n tempIntRGB[0] = Math.floor(color[0] * 255.0); // Quantize\n tempIntRGB[1] = Math.floor(color[1] * 255.0);\n tempIntRGB[2] = Math.floor(color[2] * 255.0);\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setColorize(tempIntRGB);\n }\n } else {\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setColorize(null);\n }\n }\n if (this._isObject) {\n const colorized = (!!color);\n this.scene._objectColorizeUpdated(this, colorized);\n this._colorizeUpdated = colorized;\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets the SceneModelEntity's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n if (this.meshes.length > 0) {\n return (this.meshes[0]._colorize[3] / 255.0);\n } else {\n return 1.0;\n }\n }\n\n /**\n * Sets the SceneModelEntity's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n if (this.meshes.length === 0) {\n return;\n }\n const opacityUpdated = (opacity !== null && opacity !== undefined);\n const lastOpacityQuantized = this.meshes[0]._colorize[3];\n let opacityQuantized = 255;\n if (opacityUpdated) {\n if (opacity < 0) {\n opacity = 0;\n } else if (opacity > 1) {\n opacity = 1;\n }\n opacityQuantized = Math.floor(opacity * 255.0); // Quantize\n if (lastOpacityQuantized === opacityQuantized) {\n return;\n }\n } else {\n opacityQuantized = 255.0;\n if (lastOpacityQuantized === opacityQuantized) {\n return;\n }\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setOpacity(opacityQuantized, this._flags);\n }\n if (this._isObject) {\n this.scene._objectOpacityUpdated(this, opacityUpdated);\n this._opacityUpdated = opacityUpdated;\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets the SceneModelEntity's 3D World-space offset.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get offset() {\n return this._offset;\n }\n\n /**\n * Sets the SceneModelEntity's 3D World-space offset.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set offset(offset) {\n if (offset) {\n this._offset[0] = offset[0];\n this._offset[1] = offset[1];\n this._offset[2] = offset[2];\n } else {\n this._offset[0] = 0;\n this._offset[1] = 0;\n this._offset[2] = 0;\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setOffset(this._offset);\n }\n this._aabbDirty = true;\n this.model._aabbDirty = true;\n this.scene._aabbDirty = true;\n this.scene._objectOffsetUpdated(this, offset);\n this.model.glRedraw();\n }\n\n get saoEnabled() {\n return this.model.saoEnabled;\n }\n\n getEachVertex(callback) {\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i].getEachVertex(callback)\n }\n }\n\n _getFlag(flag) {\n return !!(this._flags & flag);\n }\n\n _finalize() {\n const scene = this.model.scene;\n if (this._isObject) {\n if (this.visible) {\n scene._objectVisibilityUpdated(this);\n }\n if (this.highlighted) {\n scene._objectHighlightedUpdated(this);\n }\n if (this.xrayed) {\n scene._objectXRayedUpdated(this);\n }\n if (this.selected) {\n scene._objectSelectedUpdated(this);\n }\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._finalize(this._flags);\n }\n }\n\n _finalize2() {\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._finalize2();\n }\n }\n\n _destroy() {\n const scene = this.model.scene;\n if (this._isObject) {\n scene._deregisterObject(this);\n if (this.visible) {\n scene._deRegisterVisibleObject(this);\n }\n if (this.xrayed) {\n scene._deRegisterXRayedObject(this);\n }\n if (this.selected) {\n scene._deRegisterSelectedObject(this);\n }\n if (this.highlighted) {\n scene._deRegisterHighlightedObject(this);\n }\n if (this._colorizeUpdated) {\n this.scene._deRegisterColorizedObject(this);\n }\n if (this._opacityUpdated) {\n this.scene._deRegisterOpacityObject(this);\n }\n if (this._offset && (this._offset[0] !== 0 || this._offset[1] !== 0 || this._offset[2] !== 0)) {\n this.scene._deRegisterOffsetObject(this);\n }\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._destroy();\n }\n scene._aabbDirty = true;\n }\n}\n", @@ -103627,7 +104186,7 @@ "lineNumber": 1 }, { - "__docId__": 5156, + "__docId__": 5175, "kind": "variable", "name": "tempFloatRGB", "memberof": "src/viewer/scene/model/SceneModelEntity.js", @@ -103648,7 +104207,7 @@ "ignore": true }, { - "__docId__": 5157, + "__docId__": 5176, "kind": "variable", "name": "tempIntRGB", "memberof": "src/viewer/scene/model/SceneModelEntity.js", @@ -103669,7 +104228,7 @@ "ignore": true }, { - "__docId__": 5158, + "__docId__": 5177, "kind": "variable", "name": "tempOBB3a", "memberof": "src/viewer/scene/model/SceneModelEntity.js", @@ -103690,7 +104249,7 @@ "ignore": true }, { - "__docId__": 5159, + "__docId__": 5178, "kind": "class", "name": "SceneModelEntity", "memberof": "src/viewer/scene/model/SceneModelEntity.js", @@ -103708,7 +104267,7 @@ ] }, { - "__docId__": 5160, + "__docId__": 5179, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103722,7 +104281,7 @@ "ignore": true }, { - "__docId__": 5161, + "__docId__": 5180, "kind": "member", "name": "_isObject", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103740,7 +104299,7 @@ } }, { - "__docId__": 5162, + "__docId__": 5181, "kind": "member", "name": "scene", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103756,7 +104315,7 @@ } }, { - "__docId__": 5163, + "__docId__": 5182, "kind": "member", "name": "model", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103772,7 +104331,7 @@ } }, { - "__docId__": 5164, + "__docId__": 5183, "kind": "member", "name": "meshes", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103788,7 +104347,7 @@ } }, { - "__docId__": 5165, + "__docId__": 5184, "kind": "member", "name": "_numPrimitives", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103806,7 +104365,7 @@ } }, { - "__docId__": 5167, + "__docId__": 5186, "kind": "member", "name": "id", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103822,7 +104381,7 @@ } }, { - "__docId__": 5168, + "__docId__": 5187, "kind": "member", "name": "originalSystemId", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103838,7 +104397,7 @@ } }, { - "__docId__": 5169, + "__docId__": 5188, "kind": "member", "name": "_flags", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103856,7 +104415,7 @@ } }, { - "__docId__": 5170, + "__docId__": 5189, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103874,7 +104433,7 @@ } }, { - "__docId__": 5171, + "__docId__": 5190, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103892,7 +104451,7 @@ } }, { - "__docId__": 5172, + "__docId__": 5191, "kind": "member", "name": "_offset", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103910,7 +104469,7 @@ } }, { - "__docId__": 5173, + "__docId__": 5192, "kind": "member", "name": "_colorizeUpdated", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103928,7 +104487,7 @@ } }, { - "__docId__": 5174, + "__docId__": 5193, "kind": "member", "name": "_opacityUpdated", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103946,7 +104505,7 @@ } }, { - "__docId__": 5175, + "__docId__": 5194, "kind": "member", "name": "_lodCullable", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103964,7 +104523,7 @@ } }, { - "__docId__": 5176, + "__docId__": 5195, "kind": "member", "name": "_culled", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -103982,7 +104541,7 @@ } }, { - "__docId__": 5177, + "__docId__": 5196, "kind": "member", "name": "_culledVFC", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104000,7 +104559,7 @@ } }, { - "__docId__": 5178, + "__docId__": 5197, "kind": "member", "name": "_culledLOD", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104018,7 +104577,7 @@ } }, { - "__docId__": 5179, + "__docId__": 5198, "kind": "method", "name": "_transformDirty", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104035,7 +104594,7 @@ "return": null }, { - "__docId__": 5181, + "__docId__": 5200, "kind": "method", "name": "_sceneModelDirty", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104052,7 +104611,7 @@ "return": null }, { - "__docId__": 5183, + "__docId__": 5202, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104073,7 +104632,7 @@ } }, { - "__docId__": 5185, + "__docId__": 5204, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104092,7 +104651,7 @@ } }, { - "__docId__": 5186, + "__docId__": 5205, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104124,7 +104683,7 @@ } }, { - "__docId__": 5187, + "__docId__": 5206, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104145,7 +104704,7 @@ } }, { - "__docId__": 5188, + "__docId__": 5207, "kind": "get", "name": "numPrimitives", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104164,7 +104723,7 @@ } }, { - "__docId__": 5189, + "__docId__": 5208, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104185,7 +104744,7 @@ } }, { - "__docId__": 5190, + "__docId__": 5209, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104206,7 +104765,7 @@ } }, { - "__docId__": 5191, + "__docId__": 5210, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104227,7 +104786,7 @@ } }, { - "__docId__": 5194, + "__docId__": 5213, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104248,7 +104807,7 @@ } }, { - "__docId__": 5195, + "__docId__": 5214, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104269,7 +104828,7 @@ } }, { - "__docId__": 5198, + "__docId__": 5217, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104290,7 +104849,7 @@ } }, { - "__docId__": 5199, + "__docId__": 5218, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104311,7 +104870,7 @@ } }, { - "__docId__": 5202, + "__docId__": 5221, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104332,7 +104891,7 @@ } }, { - "__docId__": 5203, + "__docId__": 5222, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104353,7 +104912,7 @@ } }, { - "__docId__": 5206, + "__docId__": 5225, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104374,7 +104933,7 @@ } }, { - "__docId__": 5207, + "__docId__": 5226, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104395,7 +104954,7 @@ } }, { - "__docId__": 5210, + "__docId__": 5229, "kind": "get", "name": "culledVFC", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104414,7 +104973,7 @@ } }, { - "__docId__": 5211, + "__docId__": 5230, "kind": "set", "name": "culledVFC", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104428,7 +104987,7 @@ "undocument": true }, { - "__docId__": 5213, + "__docId__": 5232, "kind": "get", "name": "culledLOD", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104447,7 +105006,7 @@ } }, { - "__docId__": 5214, + "__docId__": 5233, "kind": "set", "name": "culledLOD", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104461,7 +105020,7 @@ "undocument": true }, { - "__docId__": 5216, + "__docId__": 5235, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104482,7 +105041,7 @@ } }, { - "__docId__": 5217, + "__docId__": 5236, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104503,7 +105062,7 @@ } }, { - "__docId__": 5219, + "__docId__": 5238, "kind": "method", "name": "_setCulled", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104520,7 +105079,7 @@ "return": null }, { - "__docId__": 5222, + "__docId__": 5241, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104541,7 +105100,7 @@ } }, { - "__docId__": 5223, + "__docId__": 5242, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104562,7 +105121,7 @@ } }, { - "__docId__": 5226, + "__docId__": 5245, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104583,7 +105142,7 @@ } }, { - "__docId__": 5227, + "__docId__": 5246, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104604,7 +105163,7 @@ } }, { - "__docId__": 5230, + "__docId__": 5249, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104625,7 +105184,7 @@ } }, { - "__docId__": 5231, + "__docId__": 5250, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104646,7 +105205,7 @@ } }, { - "__docId__": 5234, + "__docId__": 5253, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104667,7 +105226,7 @@ } }, { - "__docId__": 5235, + "__docId__": 5254, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104688,7 +105247,7 @@ } }, { - "__docId__": 5237, + "__docId__": 5256, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104709,7 +105268,7 @@ } }, { - "__docId__": 5238, + "__docId__": 5257, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104730,7 +105289,7 @@ } }, { - "__docId__": 5240, + "__docId__": 5259, "kind": "get", "name": "offset", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104751,7 +105310,7 @@ } }, { - "__docId__": 5241, + "__docId__": 5260, "kind": "set", "name": "offset", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104772,7 +105331,7 @@ } }, { - "__docId__": 5243, + "__docId__": 5262, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104791,7 +105350,7 @@ } }, { - "__docId__": 5244, + "__docId__": 5263, "kind": "method", "name": "getEachVertex", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104814,7 +105373,7 @@ "return": null }, { - "__docId__": 5245, + "__docId__": 5264, "kind": "method", "name": "_getFlag", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104842,7 +105401,7 @@ } }, { - "__docId__": 5246, + "__docId__": 5265, "kind": "method", "name": "_finalize", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104859,7 +105418,7 @@ "return": null }, { - "__docId__": 5247, + "__docId__": 5266, "kind": "method", "name": "_finalize2", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104876,7 +105435,7 @@ "return": null }, { - "__docId__": 5248, + "__docId__": 5267, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/SceneModelEntity.js~SceneModelEntity", @@ -104893,7 +105452,7 @@ "return": null }, { - "__docId__": 5249, + "__docId__": 5268, "kind": "file", "name": "src/viewer/scene/model/SceneModelMesh.js", "content": "import {math} from \"../math/math.js\";\n\nconst tempOBB3 = math.OBB3();\nconst tempOBB3b = math.OBB3();\nconst tempOBB3c = math.OBB3();\n\n/**\n * A mesh within a {@link SceneModel}.\n *\n * * Created with {@link SceneModel#createMesh}\n * * Belongs to exactly one {@link SceneModelEntity}\n * * Stored by ID in {@link SceneModel#meshes}\n * * Referenced by {@link SceneModelEntity#meshes}\n * * Can have a {@link SceneModelTransform} to dynamically scale, rotate and translate it.\n */\nexport class SceneModelMesh {\n\n /**\n * @private\n */\n constructor(model, id, color, opacity, transform, textureSet, layer = null, portionId = 0) {\n\n /**\n * The {@link SceneModel} that owns this SceneModelMesh.\n *\n * @type {SceneModel}\n */\n this.model = model;\n\n /**\n * The {@link SceneModelEntity} that owns this SceneModelMesh.\n *\n * @type {SceneModelEntity}\n */\n this.object = null;\n\n /**\n * @private\n */\n this.parent = null;\n\n /**\n * The {@link SceneModelTransform} that transforms this SceneModelMesh.\n *\n * * This only exists when the SceneModelMesh is instancing its geometry.\n * * These are created with {@link SceneModel#createTransform}\n * * Each of these is also registered in {@link SceneModel#transforms}.\n *\n * @type {SceneModelTransform}\n */\n this.transform = transform;\n\n /**\n * The {@link SceneModelTextureSet} that optionally textures this SceneModelMesh.\n *\n * * This only exists when the SceneModelMesh has texture.\n * * These are created with {@link SceneModel#createTextureSet}\n * * Each of these is also registered in {@link SceneModel#textureSets}.\n *\n * @type {SceneModelTextureSet}\n */\n this.textureSet = textureSet;\n\n this._matrixDirty = false;\n this._matrixUpdateScheduled = false;\n\n /**\n * Unique ID of this SceneModelMesh.\n *\n * The SceneModelMesh is registered against this ID in {@link SceneModel#meshes}.\n */\n this.id = id;\n\n /**\n * @private\n */\n this.obb = null;\n\n this._aabbLocal = null;\n this._aabbWorld = math.AABB3();\n this._aabbWorldDirty = false;\n\n /**\n * @private\n */\n this.layer = layer;\n\n /**\n * @private\n */\n this.portionId = portionId;\n\n this._color = new Uint8Array([color[0], color[1], color[2], opacity]); // [0..255]\n this._colorize = new Uint8Array([color[0], color[1], color[2], opacity]); // [0..255]\n this._colorizing = false;\n this._transparent = (opacity < 255);\n\n /**\n * @private\n */\n this.numTriangles = 0;\n\n /**\n * @private\n * @type {null}\n */\n this.origin = null; // Set By SceneModel\n\n /**\n * The {@link SceneModelEntity} that owns this SceneModelMesh.\n *\n * @type {SceneModelEntity}\n */\n this.entity = null;\n\n if (transform) {\n transform._addMesh(this);\n }\n }\n\n _sceneModelDirty() {\n this._aabbWorldDirty = true;\n this.layer.aabbDirty = true;\n }\n\n _transformDirty() {\n if (!this._matrixDirty && !this._matrixUpdateScheduled) {\n this.model._meshMatrixDirty(this);\n this._matrixDirty = true;\n this._matrixUpdateScheduled = true;\n }\n this._aabbWorldDirty = true;\n this.layer.aabbDirty = true;\n if (this.entity) {\n this.entity._transformDirty();\n }\n }\n\n _updateMatrix() {\n if (this.transform && this._matrixDirty) {\n this.layer.setMatrix(this.portionId, this.transform.worldMatrix);\n }\n this._matrixDirty = false;\n this._matrixUpdateScheduled = false;\n }\n\n _finalize(entityFlags) {\n this.layer.initFlags(this.portionId, entityFlags, this._transparent);\n }\n\n _finalize2() {\n if (this.layer.flushInitFlags) {\n this.layer.flushInitFlags();\n }\n }\n\n _setVisible(entityFlags) {\n this.layer.setVisible(this.portionId, entityFlags, this._transparent);\n }\n\n _setColor(color) {\n this._color[0] = color[0];\n this._color[1] = color[1];\n this._color[2] = color[2];\n if (!this._colorizing) {\n this.layer.setColor(this.portionId, this._color, false);\n }\n }\n\n _setColorize(colorize) {\n const setOpacity = false;\n if (colorize) {\n this._colorize[0] = colorize[0];\n this._colorize[1] = colorize[1];\n this._colorize[2] = colorize[2];\n this.layer.setColor(this.portionId, this._colorize, setOpacity);\n this._colorizing = true;\n } else {\n this.layer.setColor(this.portionId, this._color, setOpacity);\n this._colorizing = false;\n }\n }\n\n _setOpacity(opacity, entityFlags) {\n const newTransparent = (opacity < 255);\n const lastTransparent = this._transparent;\n const changingTransparency = (lastTransparent !== newTransparent);\n this._color[3] = opacity;\n this._colorize[3] = opacity;\n this._transparent = newTransparent;\n if (this._colorizing) {\n this.layer.setColor(this.portionId, this._colorize);\n } else {\n this.layer.setColor(this.portionId, this._color);\n }\n if (changingTransparency) {\n this.layer.setTransparent(this.portionId, entityFlags, newTransparent);\n }\n }\n\n _setOffset(offset) {\n this.layer.setOffset(this.portionId, offset);\n }\n\n _setHighlighted(entityFlags) {\n this.layer.setHighlighted(this.portionId, entityFlags, this._transparent);\n }\n\n _setXRayed(entityFlags) {\n this.layer.setXRayed(this.portionId, entityFlags, this._transparent);\n }\n\n _setSelected(entityFlags) {\n this.layer.setSelected(this.portionId, entityFlags, this._transparent);\n }\n\n _setEdges(entityFlags) {\n this.layer.setEdges(this.portionId, entityFlags, this._transparent);\n }\n\n _setClippable(entityFlags) {\n this.layer.setClippable(this.portionId, entityFlags, this._transparent);\n }\n\n _setCollidable(entityFlags) {\n this.layer.setCollidable(this.portionId, entityFlags);\n }\n\n _setPickable(flags) {\n this.layer.setPickable(this.portionId, flags, this._transparent);\n }\n\n _setCulled(flags) {\n this.layer.setCulled(this.portionId, flags, this._transparent);\n }\n\n /**\n * @private\n */\n canPickTriangle() {\n return false;\n }\n\n /**\n * @private\n */\n drawPickTriangles(renderFlags, frameCtx) {\n // NOP\n }\n\n /**\n * @private\n */\n pickTriangleSurface(pickResult) {\n // NOP\n }\n\n /**\n * @private\n */\n precisionRayPickSurface(worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) {\n return this.layer.precisionRayPickSurface ? this.layer.precisionRayPickSurface(this.portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) : false;\n }\n\n /**\n * @private\n */\n canPickWorldPos() {\n return true;\n }\n\n /**\n * @private\n */\n drawPickDepths(frameCtx) {\n this.model.drawPickDepths(frameCtx);\n }\n\n /**\n * @private\n */\n drawPickNormals(frameCtx) {\n this.model.drawPickNormals(frameCtx);\n }\n\n /**\n * @private\n */\n delegatePickedEntity() {\n return this.parent;\n }\n\n /**\n * @private\n */\n getEachVertex(callback) {\n this.layer.getEachVertex(this.portionId, callback);\n }\n\n /**\n * @private\n */\n set aabb(aabb) { // Called by SceneModel\n this._aabbLocal = aabb;\n }\n\n /**\n * @private\n */\n get aabb() { // called by SceneModelEntity\n if (this._aabbWorldDirty) {\n math.AABB3ToOBB3(this._aabbLocal, tempOBB3);\n if (this.transform) {\n math.transformOBB3(this.transform.worldMatrix, tempOBB3, tempOBB3b);\n math.transformOBB3(this.model.worldMatrix, tempOBB3b, tempOBB3c);\n math.OBB3ToAABB3(tempOBB3c, this._aabbWorld);\n } else {\n math.transformOBB3(this.model.worldMatrix, tempOBB3, tempOBB3b);\n math.OBB3ToAABB3(tempOBB3b, this._aabbWorld);\n }\n if (this.origin) {\n const origin = this.origin;\n this._aabbWorld[0] += origin[0];\n this._aabbWorld[1] += origin[1];\n this._aabbWorld[2] += origin[2];\n this._aabbWorld[3] += origin[0];\n this._aabbWorld[4] += origin[1];\n this._aabbWorld[5] += origin[2];\n }\n this._aabbWorldDirty = false;\n }\n return this._aabbWorld;\n }\n\n /**\n * @private\n */\n _destroy() {\n this.model.scene._renderer.putPickID(this.pickId);\n }\n}\n", @@ -104904,7 +105463,7 @@ "lineNumber": 1 }, { - "__docId__": 5250, + "__docId__": 5269, "kind": "variable", "name": "tempOBB3", "memberof": "src/viewer/scene/model/SceneModelMesh.js", @@ -104925,7 +105484,7 @@ "ignore": true }, { - "__docId__": 5251, + "__docId__": 5270, "kind": "variable", "name": "tempOBB3b", "memberof": "src/viewer/scene/model/SceneModelMesh.js", @@ -104946,7 +105505,7 @@ "ignore": true }, { - "__docId__": 5252, + "__docId__": 5271, "kind": "variable", "name": "tempOBB3c", "memberof": "src/viewer/scene/model/SceneModelMesh.js", @@ -104967,7 +105526,7 @@ "ignore": true }, { - "__docId__": 5253, + "__docId__": 5272, "kind": "class", "name": "SceneModelMesh", "memberof": "src/viewer/scene/model/SceneModelMesh.js", @@ -104982,7 +105541,7 @@ "interface": false }, { - "__docId__": 5254, + "__docId__": 5273, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -104996,7 +105555,7 @@ "ignore": true }, { - "__docId__": 5255, + "__docId__": 5274, "kind": "member", "name": "model", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105015,7 +105574,7 @@ } }, { - "__docId__": 5256, + "__docId__": 5275, "kind": "member", "name": "object", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105034,7 +105593,7 @@ } }, { - "__docId__": 5257, + "__docId__": 5276, "kind": "member", "name": "parent", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105051,7 +105610,7 @@ } }, { - "__docId__": 5258, + "__docId__": 5277, "kind": "member", "name": "transform", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105070,7 +105629,7 @@ } }, { - "__docId__": 5259, + "__docId__": 5278, "kind": "member", "name": "textureSet", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105089,7 +105648,7 @@ } }, { - "__docId__": 5260, + "__docId__": 5279, "kind": "member", "name": "_matrixDirty", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105107,7 +105666,7 @@ } }, { - "__docId__": 5261, + "__docId__": 5280, "kind": "member", "name": "_matrixUpdateScheduled", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105125,7 +105684,7 @@ } }, { - "__docId__": 5262, + "__docId__": 5281, "kind": "member", "name": "id", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105141,7 +105700,7 @@ } }, { - "__docId__": 5263, + "__docId__": 5282, "kind": "member", "name": "obb", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105158,7 +105717,7 @@ } }, { - "__docId__": 5264, + "__docId__": 5283, "kind": "member", "name": "_aabbLocal", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105176,7 +105735,7 @@ } }, { - "__docId__": 5265, + "__docId__": 5284, "kind": "member", "name": "_aabbWorld", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105194,7 +105753,7 @@ } }, { - "__docId__": 5266, + "__docId__": 5285, "kind": "member", "name": "_aabbWorldDirty", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105212,7 +105771,7 @@ } }, { - "__docId__": 5267, + "__docId__": 5286, "kind": "member", "name": "layer", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105229,7 +105788,7 @@ } }, { - "__docId__": 5268, + "__docId__": 5287, "kind": "member", "name": "portionId", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105246,7 +105805,7 @@ } }, { - "__docId__": 5269, + "__docId__": 5288, "kind": "member", "name": "_color", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105264,7 +105823,7 @@ } }, { - "__docId__": 5270, + "__docId__": 5289, "kind": "member", "name": "_colorize", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105282,7 +105841,7 @@ } }, { - "__docId__": 5271, + "__docId__": 5290, "kind": "member", "name": "_colorizing", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105300,7 +105859,7 @@ } }, { - "__docId__": 5272, + "__docId__": 5291, "kind": "member", "name": "_transparent", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105318,7 +105877,7 @@ } }, { - "__docId__": 5273, + "__docId__": 5292, "kind": "member", "name": "numTriangles", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105335,7 +105894,7 @@ } }, { - "__docId__": 5274, + "__docId__": 5293, "kind": "member", "name": "origin", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105355,7 +105914,7 @@ "ignore": true }, { - "__docId__": 5275, + "__docId__": 5294, "kind": "member", "name": "entity", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105374,7 +105933,7 @@ } }, { - "__docId__": 5276, + "__docId__": 5295, "kind": "method", "name": "_sceneModelDirty", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105391,7 +105950,7 @@ "return": null }, { - "__docId__": 5278, + "__docId__": 5297, "kind": "method", "name": "_transformDirty", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105408,7 +105967,7 @@ "return": null }, { - "__docId__": 5282, + "__docId__": 5301, "kind": "method", "name": "_updateMatrix", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105425,7 +105984,7 @@ "return": null }, { - "__docId__": 5285, + "__docId__": 5304, "kind": "method", "name": "_finalize", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105449,7 +106008,7 @@ "return": null }, { - "__docId__": 5286, + "__docId__": 5305, "kind": "method", "name": "_finalize2", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105466,7 +106025,7 @@ "return": null }, { - "__docId__": 5287, + "__docId__": 5306, "kind": "method", "name": "_setVisible", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105490,7 +106049,7 @@ "return": null }, { - "__docId__": 5288, + "__docId__": 5307, "kind": "method", "name": "_setColor", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105514,7 +106073,7 @@ "return": null }, { - "__docId__": 5289, + "__docId__": 5308, "kind": "method", "name": "_setColorize", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105538,7 +106097,7 @@ "return": null }, { - "__docId__": 5292, + "__docId__": 5311, "kind": "method", "name": "_setOpacity", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105568,7 +106127,7 @@ "return": null }, { - "__docId__": 5294, + "__docId__": 5313, "kind": "method", "name": "_setOffset", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105592,7 +106151,7 @@ "return": null }, { - "__docId__": 5295, + "__docId__": 5314, "kind": "method", "name": "_setHighlighted", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105616,7 +106175,7 @@ "return": null }, { - "__docId__": 5296, + "__docId__": 5315, "kind": "method", "name": "_setXRayed", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105640,7 +106199,7 @@ "return": null }, { - "__docId__": 5297, + "__docId__": 5316, "kind": "method", "name": "_setSelected", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105664,7 +106223,7 @@ "return": null }, { - "__docId__": 5298, + "__docId__": 5317, "kind": "method", "name": "_setEdges", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105688,7 +106247,7 @@ "return": null }, { - "__docId__": 5299, + "__docId__": 5318, "kind": "method", "name": "_setClippable", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105712,7 +106271,7 @@ "return": null }, { - "__docId__": 5300, + "__docId__": 5319, "kind": "method", "name": "_setCollidable", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105736,7 +106295,7 @@ "return": null }, { - "__docId__": 5301, + "__docId__": 5320, "kind": "method", "name": "_setPickable", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105760,7 +106319,7 @@ "return": null }, { - "__docId__": 5302, + "__docId__": 5321, "kind": "method", "name": "_setCulled", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105784,7 +106343,7 @@ "return": null }, { - "__docId__": 5303, + "__docId__": 5322, "kind": "method", "name": "canPickTriangle", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105804,7 +106363,7 @@ } }, { - "__docId__": 5304, + "__docId__": 5323, "kind": "method", "name": "drawPickTriangles", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105833,7 +106392,7 @@ "return": null }, { - "__docId__": 5305, + "__docId__": 5324, "kind": "method", "name": "pickTriangleSurface", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105856,7 +106415,7 @@ "return": null }, { - "__docId__": 5306, + "__docId__": 5325, "kind": "method", "name": "precisionRayPickSurface", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105901,7 +106460,7 @@ } }, { - "__docId__": 5307, + "__docId__": 5326, "kind": "method", "name": "canPickWorldPos", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105921,7 +106480,7 @@ } }, { - "__docId__": 5308, + "__docId__": 5327, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105944,7 +106503,7 @@ "return": null }, { - "__docId__": 5309, + "__docId__": 5328, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105967,7 +106526,7 @@ "return": null }, { - "__docId__": 5310, + "__docId__": 5329, "kind": "method", "name": "delegatePickedEntity", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -105987,7 +106546,7 @@ } }, { - "__docId__": 5311, + "__docId__": 5330, "kind": "method", "name": "getEachVertex", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -106010,7 +106569,7 @@ "return": null }, { - "__docId__": 5312, + "__docId__": 5331, "kind": "set", "name": "aabb", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -106024,7 +106583,7 @@ "ignore": true }, { - "__docId__": 5314, + "__docId__": 5333, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -106043,7 +106602,7 @@ } }, { - "__docId__": 5316, + "__docId__": 5335, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/SceneModelMesh.js~SceneModelMesh", @@ -106059,7 +106618,7 @@ "return": null }, { - "__docId__": 5317, + "__docId__": 5336, "kind": "file", "name": "src/viewer/scene/model/SceneModelTexture.js", "content": "/**\n * A texture within a {@link SceneModelTextureSet}.\n *\n * * Created with {@link SceneModel#createTexture}\n * * Belongs to many {@link SceneModelTextureSet}s\n * * Stored by ID in {@link SceneModel#textures}}\n */\nexport class SceneModelTexture {\n\n /**\n * @private\n * @param cfg\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this SceneModelTexture.\n *\n * The SceneModelTexture is registered against this ID in {@link SceneModel#textures}.\n */\n this.id = cfg.id;\n\n /**\n * @private\n */\n this.texture = cfg.texture;\n }\n\n /**\n * @private\n */\n destroy() {\n if (this.texture) {\n this.texture.destroy();\n this.texture = null;\n }\n }\n}\n", @@ -106070,7 +106629,7 @@ "lineNumber": 1 }, { - "__docId__": 5318, + "__docId__": 5337, "kind": "class", "name": "SceneModelTexture", "memberof": "src/viewer/scene/model/SceneModelTexture.js", @@ -106085,7 +106644,7 @@ "interface": false }, { - "__docId__": 5319, + "__docId__": 5338, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/SceneModelTexture.js~SceneModelTexture", @@ -106111,7 +106670,7 @@ "ignore": true }, { - "__docId__": 5320, + "__docId__": 5339, "kind": "member", "name": "id", "memberof": "src/viewer/scene/model/SceneModelTexture.js~SceneModelTexture", @@ -106127,7 +106686,7 @@ } }, { - "__docId__": 5321, + "__docId__": 5340, "kind": "member", "name": "texture", "memberof": "src/viewer/scene/model/SceneModelTexture.js~SceneModelTexture", @@ -106144,7 +106703,7 @@ } }, { - "__docId__": 5322, + "__docId__": 5341, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/SceneModelTexture.js~SceneModelTexture", @@ -106160,7 +106719,7 @@ "return": null }, { - "__docId__": 5324, + "__docId__": 5343, "kind": "file", "name": "src/viewer/scene/model/SceneModelTextureSet.js", "content": "/**\n * A texture set within a {@link SceneModel}.\n *\n * * Created with {@link SceneModel#createTextureSet}\n * * Belongs to many {@link SceneModelMesh}es\n * * Stored by ID in {@link SceneModel#textureSets}\n * * Referenced by {@link SceneModelMesh#textureSet}\n */\nexport class SceneModelTextureSet {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this SceneModelTextureSet.\n *\n * The SceneModelTextureSet is registered against this ID in {@link SceneModel#textureSets}.\n */\n this.id = cfg.id;\n\n /**\n * The color texture.\n * @type {SceneModelTexture|*}\n */\n this.colorTexture = cfg.colorTexture;\n\n /**\n * The metallic-roughness texture.\n * @type {SceneModelTexture|*}\n */\n this.metallicRoughnessTexture = cfg.metallicRoughnessTexture;\n\n /**\n * The normal map texture.\n * @type {SceneModelTexture|*}\n */\n this.normalsTexture = cfg.normalsTexture;\n\n /**\n * The emissive color texture.\n * @type {SceneModelTexture|*}\n */\n this.emissiveTexture = cfg.emissiveTexture;\n\n /**\n * The ambient occlusion texture.\n * @type {SceneModelTexture|*}\n */\n this.occlusionTexture = cfg.occlusionTexture;\n }\n\n /**\n * @private\n */\n destroy() {\n }\n}\n", @@ -106171,7 +106730,7 @@ "lineNumber": 1 }, { - "__docId__": 5325, + "__docId__": 5344, "kind": "class", "name": "SceneModelTextureSet", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js", @@ -106186,7 +106745,7 @@ "interface": false }, { - "__docId__": 5326, + "__docId__": 5345, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet", @@ -106200,7 +106759,7 @@ "ignore": true }, { - "__docId__": 5327, + "__docId__": 5346, "kind": "member", "name": "id", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet", @@ -106216,7 +106775,7 @@ } }, { - "__docId__": 5328, + "__docId__": 5347, "kind": "member", "name": "colorTexture", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet", @@ -106236,7 +106795,7 @@ } }, { - "__docId__": 5329, + "__docId__": 5348, "kind": "member", "name": "metallicRoughnessTexture", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet", @@ -106256,7 +106815,7 @@ } }, { - "__docId__": 5330, + "__docId__": 5349, "kind": "member", "name": "normalsTexture", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet", @@ -106276,7 +106835,7 @@ } }, { - "__docId__": 5331, + "__docId__": 5350, "kind": "member", "name": "emissiveTexture", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet", @@ -106296,7 +106855,7 @@ } }, { - "__docId__": 5332, + "__docId__": 5351, "kind": "member", "name": "occlusionTexture", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet", @@ -106316,7 +106875,7 @@ } }, { - "__docId__": 5333, + "__docId__": 5352, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/SceneModelTextureSet.js~SceneModelTextureSet", @@ -106332,7 +106891,7 @@ "return": null }, { - "__docId__": 5334, + "__docId__": 5353, "kind": "file", "name": "src/viewer/scene/model/SceneModelTransform.js", "content": "import {math} from \"../math/index.js\";\n\nconst angleAxis = math.vec4(4);\nconst q1 = math.vec4();\nconst q2 = math.vec4();\nconst xAxis = math.vec3([1, 0, 0]);\nconst yAxis = math.vec3([0, 1, 0]);\nconst zAxis = math.vec3([0, 0, 1]);\n\nconst veca = math.vec3(3);\nconst vecb = math.vec3(3);\n\nconst identityMat = math.identityMat4();\n\n/**\n * A dynamically-updatable transform within a {@link SceneModel}.\n *\n * * Can be composed into hierarchies\n * * Shared by multiple {@link SceneModelMesh}es\n * * Created with {@link SceneModel#createTransform}\n * * Stored by ID in {@link SceneModel#transforms}\n * * Referenced by {@link SceneModelMesh#transform}\n */\nexport class SceneModelTransform {\n\n /**\n * @private\n */\n constructor(cfg) {\n this._model = cfg.model;\n\n /**\n * Unique ID of this SceneModelTransform.\n *\n * The SceneModelTransform is registered against this ID in {@link SceneModel#transforms}.\n */\n this.id = cfg.id;\n\n this._parentTransform = cfg.parent;\n this._childTransforms = [];\n this._meshes = [];\n this._scale = new Float32Array([1,1,1]);\n this._quaternion = math.identityQuaternion(new Float32Array(4));\n this._rotation = new Float32Array(3);\n this._position = new Float32Array(3);\n this._localMatrix = math.identityMat4(new Float32Array(16));\n this._worldMatrix = math.identityMat4(new Float32Array(16));\n this._localMatrixDirty = true;\n this._worldMatrixDirty = true;\n\n if (cfg.matrix) {\n this.matrix = cfg.matrix;\n } else {\n this.scale = cfg.scale;\n this.position = cfg.position;\n if (cfg.quaternion) {\n } else {\n this.rotation = cfg.rotation;\n }\n }\n if (cfg.parent) {\n cfg.parent._addChildTransform(this);\n }\n }\n\n _addChildTransform(childTransform) {\n this._childTransforms.push(childTransform);\n childTransform._parentTransform = this;\n childTransform._transformDirty();\n childTransform._setSubtreeAABBsDirty(this);\n }\n\n _addMesh(mesh) {\n this._meshes.push(mesh);\n mesh.transform = this;\n // childTransform._setWorldMatrixDirty();\n // childTransform._setAABBDirty();\n }\n\n /**\n * The optional parent SceneModelTransform.\n *\n * @type {SceneModelTransform}\n */\n get parentTransform() {\n return this._parentTransform;\n }\n\n /**\n * The {@link SceneModelMesh}es transformed by this SceneModelTransform.\n *\n * @returns {[]}\n */\n get meshes() {\n return this._meshes;\n }\n\n /**\n * Sets the SceneModelTransform's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set position(value) {\n this._position.set(value || [0, 0, 0]);\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n }\n\n /**\n * Gets the SceneModelTransform's translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get position() {\n return this._position;\n }\n\n /**\n * Sets the SceneModelTransform's rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set rotation(value) {\n this._rotation.set(value || [0, 0, 0]);\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n }\n\n /**\n * Gets the SceneModelTransform's rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get rotation() {\n return this._rotation;\n }\n\n /**\n * Sets the SceneModelTransform's rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n set quaternion(value) {\n this._quaternion.set(value || [0, 0, 0, 1]);\n math.quaternionToEuler(this._quaternion, \"XYZ\", this._rotation);\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n }\n\n /**\n * Gets the SceneModelTransform's rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n get quaternion() {\n return this._quaternion;\n }\n\n /**\n * Sets the SceneModelTransform's scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n set scale(value) {\n this._scale.set(value || [1, 1, 1]);\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n }\n\n /**\n * Gets the SceneModelTransform's scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the SceneModelTransform's transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n set matrix(value) {\n if (!this._localMatrix) {\n this._localMatrix = math.identityMat4();\n }\n this._localMatrix.set(value || identityMat);\n math.decomposeMat4(this._localMatrix, this._position, this._quaternion, this._scale);\n this._localMatrixDirty = false;\n this._transformDirty();\n this._model.glRedraw();\n }\n\n /**\n * Gets the SceneModelTransform's transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n get matrix() {\n if (this._localMatrixDirty) {\n if (!this._localMatrix) {\n this._localMatrix = math.identityMat4();\n }\n math.composeMat4(this._position, this._quaternion, this._scale, this._localMatrix);\n this._localMatrixDirty = false;\n }\n return this._localMatrix;\n }\n\n /**\n * Gets the SceneModelTransform's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n if (this._worldMatrixDirty) {\n this._buildWorldMatrix();\n }\n return this._worldMatrix;\n }\n\n /**\n * Rotates the SceneModelTransform about the given axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotate(axis, angle) {\n angleAxis[0] = axis[0];\n angleAxis[1] = axis[1];\n angleAxis[2] = axis[2];\n angleAxis[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis, q1);\n math.mulQuaternions(this.quaternion, q1, q2);\n this.quaternion = q2;\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n return this;\n }\n\n /**\n * Rotates the SceneModelTransform about the given World-space axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotateOnWorldAxis(axis, angle) {\n angleAxis[0] = axis[0];\n angleAxis[1] = axis[1];\n angleAxis[2] = axis[2];\n angleAxis[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis, q1);\n math.mulQuaternions(q1, this.quaternion, q1);\n //this.quaternion.premultiply(q1);\n return this;\n }\n\n /**\n * Rotates the SceneModelTransform about the local X-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateX(angle) {\n return this.rotate(xAxis, angle);\n }\n\n /**\n * Rotates the SceneModelTransform about the local Y-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateY(angle) {\n return this.rotate(yAxis, angle);\n }\n\n /**\n * Rotates the SceneModelTransform about the local Z-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateZ(angle) {\n return this.rotate(zAxis, angle);\n }\n\n /**\n * Translates the SceneModelTransform along the local axis by the given increment.\n *\n * @param {Number[]} axis Normalized local space 3D vector along which to translate.\n * @param {Number} distance Distance to translate along the vector.\n */\n translate(axis) {\n this._position[0] += axis[0];\n this._position[1] += axis[1];\n this._position[2] += axis[2];\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n return this;\n }\n\n /**\n * Translates the SceneModelTransform along the local X-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the X-axis.\n */\n translateX(distance) {\n this._position[0] += distance;\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n return this;\n }\n\n /**\n * Translates the SceneModelTransform along the local Y-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Y-axis.\n */\n translateY(distance) {\n this._position[1] += distance;\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n return this;\n }\n\n /**\n * Translates the SceneModelTransform along the local Z-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Z-axis.\n */\n translateZ(distance) {\n this._position[2] += distance;\n this._setLocalMatrixDirty();\n this._model.glRedraw();\n return this;\n }\n\n _setLocalMatrixDirty() {\n this._localMatrixDirty = true;\n this._transformDirty();\n }\n\n _transformDirty() {\n this._worldMatrixDirty = true;\n for (let i = 0, len = this._childTransforms.length; i < len; i++) {\n const childTransform = this._childTransforms[i];\n childTransform._transformDirty();\n if (childTransform._meshes && childTransform._meshes.length > 0) {\n const meshes = childTransform._meshes;\n for (let j =0, lenj = meshes.length; j < lenj; j++) {\n meshes[j]._transformDirty();\n }\n }\n }\n if (this._meshes && this._meshes.length > 0) {\n const meshes = this._meshes;\n for (let j =0, lenj = meshes.length; j < lenj; j++) {\n meshes[j]._transformDirty();\n }\n }\n }\n\n _buildWorldMatrix() {\n const localMatrix = this.matrix;\n if (!this._parentTransform) {\n for (let i = 0, len = localMatrix.length; i < len; i++) {\n this._worldMatrix[i] = localMatrix[i];\n }\n } else {\n math.mulMat4(this._parentTransform.worldMatrix, localMatrix, this._worldMatrix);\n }\n this._worldMatrixDirty = false;\n }\n\n _setSubtreeAABBsDirty(sceneTransform) {\n sceneTransform._aabbDirty = true;\n if (sceneTransform._childTransforms) {\n for (let i = 0, len = sceneTransform._childTransforms.length; i < len; i++) {\n this._setSubtreeAABBsDirty(sceneTransform._childTransforms[i]);\n }\n }\n }\n}\n", @@ -106343,7 +106902,7 @@ "lineNumber": 1 }, { - "__docId__": 5335, + "__docId__": 5354, "kind": "variable", "name": "angleAxis", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106364,7 +106923,7 @@ "ignore": true }, { - "__docId__": 5336, + "__docId__": 5355, "kind": "variable", "name": "q1", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106385,7 +106944,7 @@ "ignore": true }, { - "__docId__": 5337, + "__docId__": 5356, "kind": "variable", "name": "q2", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106406,7 +106965,7 @@ "ignore": true }, { - "__docId__": 5338, + "__docId__": 5357, "kind": "variable", "name": "xAxis", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106427,7 +106986,7 @@ "ignore": true }, { - "__docId__": 5339, + "__docId__": 5358, "kind": "variable", "name": "yAxis", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106448,7 +107007,7 @@ "ignore": true }, { - "__docId__": 5340, + "__docId__": 5359, "kind": "variable", "name": "zAxis", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106469,7 +107028,7 @@ "ignore": true }, { - "__docId__": 5341, + "__docId__": 5360, "kind": "variable", "name": "veca", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106490,7 +107049,7 @@ "ignore": true }, { - "__docId__": 5342, + "__docId__": 5361, "kind": "variable", "name": "vecb", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106511,7 +107070,7 @@ "ignore": true }, { - "__docId__": 5343, + "__docId__": 5362, "kind": "variable", "name": "identityMat", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106532,7 +107091,7 @@ "ignore": true }, { - "__docId__": 5344, + "__docId__": 5363, "kind": "class", "name": "SceneModelTransform", "memberof": "src/viewer/scene/model/SceneModelTransform.js", @@ -106547,7 +107106,7 @@ "interface": false }, { - "__docId__": 5345, + "__docId__": 5364, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106561,7 +107120,7 @@ "ignore": true }, { - "__docId__": 5346, + "__docId__": 5365, "kind": "member", "name": "_model", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106579,7 +107138,7 @@ } }, { - "__docId__": 5347, + "__docId__": 5366, "kind": "member", "name": "id", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106595,7 +107154,7 @@ } }, { - "__docId__": 5348, + "__docId__": 5367, "kind": "member", "name": "_parentTransform", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106613,7 +107172,7 @@ } }, { - "__docId__": 5349, + "__docId__": 5368, "kind": "member", "name": "_childTransforms", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106631,7 +107190,7 @@ } }, { - "__docId__": 5350, + "__docId__": 5369, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106649,7 +107208,7 @@ } }, { - "__docId__": 5351, + "__docId__": 5370, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106667,7 +107226,7 @@ } }, { - "__docId__": 5352, + "__docId__": 5371, "kind": "member", "name": "_quaternion", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106685,7 +107244,7 @@ } }, { - "__docId__": 5353, + "__docId__": 5372, "kind": "member", "name": "_rotation", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106703,7 +107262,7 @@ } }, { - "__docId__": 5354, + "__docId__": 5373, "kind": "member", "name": "_position", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106721,7 +107280,7 @@ } }, { - "__docId__": 5355, + "__docId__": 5374, "kind": "member", "name": "_localMatrix", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106739,7 +107298,7 @@ } }, { - "__docId__": 5356, + "__docId__": 5375, "kind": "member", "name": "_worldMatrix", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106757,7 +107316,7 @@ } }, { - "__docId__": 5357, + "__docId__": 5376, "kind": "member", "name": "_localMatrixDirty", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106775,7 +107334,7 @@ } }, { - "__docId__": 5358, + "__docId__": 5377, "kind": "member", "name": "_worldMatrixDirty", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106793,7 +107352,7 @@ } }, { - "__docId__": 5363, + "__docId__": 5382, "kind": "method", "name": "_addChildTransform", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106817,7 +107376,7 @@ "return": null }, { - "__docId__": 5364, + "__docId__": 5383, "kind": "method", "name": "_addMesh", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106841,7 +107400,7 @@ "return": null }, { - "__docId__": 5365, + "__docId__": 5384, "kind": "get", "name": "parentTransform", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106862,7 +107421,7 @@ } }, { - "__docId__": 5366, + "__docId__": 5385, "kind": "get", "name": "meshes", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106894,7 +107453,7 @@ } }, { - "__docId__": 5367, + "__docId__": 5386, "kind": "set", "name": "position", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106915,7 +107474,7 @@ } }, { - "__docId__": 5368, + "__docId__": 5387, "kind": "get", "name": "position", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106936,7 +107495,7 @@ } }, { - "__docId__": 5369, + "__docId__": 5388, "kind": "set", "name": "rotation", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106957,7 +107516,7 @@ } }, { - "__docId__": 5370, + "__docId__": 5389, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106978,7 +107537,7 @@ } }, { - "__docId__": 5371, + "__docId__": 5390, "kind": "set", "name": "quaternion", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -106999,7 +107558,7 @@ } }, { - "__docId__": 5372, + "__docId__": 5391, "kind": "get", "name": "quaternion", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107020,7 +107579,7 @@ } }, { - "__docId__": 5373, + "__docId__": 5392, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107041,7 +107600,7 @@ } }, { - "__docId__": 5374, + "__docId__": 5393, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107062,7 +107621,7 @@ } }, { - "__docId__": 5375, + "__docId__": 5394, "kind": "set", "name": "matrix", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107083,7 +107642,7 @@ } }, { - "__docId__": 5378, + "__docId__": 5397, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107104,7 +107663,7 @@ } }, { - "__docId__": 5381, + "__docId__": 5400, "kind": "get", "name": "worldMatrix", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107137,7 +107696,7 @@ } }, { - "__docId__": 5382, + "__docId__": 5401, "kind": "method", "name": "rotate", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107177,7 +107736,7 @@ } }, { - "__docId__": 5384, + "__docId__": 5403, "kind": "method", "name": "rotateOnWorldAxis", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107217,7 +107776,7 @@ } }, { - "__docId__": 5385, + "__docId__": 5404, "kind": "method", "name": "rotateX", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107247,7 +107806,7 @@ } }, { - "__docId__": 5386, + "__docId__": 5405, "kind": "method", "name": "rotateY", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107277,7 +107836,7 @@ } }, { - "__docId__": 5387, + "__docId__": 5406, "kind": "method", "name": "rotateZ", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107307,7 +107866,7 @@ } }, { - "__docId__": 5388, + "__docId__": 5407, "kind": "method", "name": "translate", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107347,7 +107906,7 @@ } }, { - "__docId__": 5389, + "__docId__": 5408, "kind": "method", "name": "translateX", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107377,7 +107936,7 @@ } }, { - "__docId__": 5390, + "__docId__": 5409, "kind": "method", "name": "translateY", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107407,7 +107966,7 @@ } }, { - "__docId__": 5391, + "__docId__": 5410, "kind": "method", "name": "translateZ", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107437,7 +107996,7 @@ } }, { - "__docId__": 5392, + "__docId__": 5411, "kind": "method", "name": "_setLocalMatrixDirty", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107454,7 +108013,7 @@ "return": null }, { - "__docId__": 5394, + "__docId__": 5413, "kind": "method", "name": "_transformDirty", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107471,7 +108030,7 @@ "return": null }, { - "__docId__": 5396, + "__docId__": 5415, "kind": "method", "name": "_buildWorldMatrix", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107488,7 +108047,7 @@ "return": null }, { - "__docId__": 5398, + "__docId__": 5417, "kind": "method", "name": "_setSubtreeAABBsDirty", "memberof": "src/viewer/scene/model/SceneModelTransform.js~SceneModelTransform", @@ -107512,7 +108071,7 @@ "return": null }, { - "__docId__": 5399, + "__docId__": 5418, "kind": "file", "name": "src/viewer/scene/model/VBOSceneModel.js", "content": "import {SceneModel} from \"./SceneModel.js\";\n\n/**\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * * VBOSceneModel was replaced with {@link SceneModel} in ````xeokit-sdk v2.4````.\n * * VBOSceneModel currently extends {@link SceneModel}, in order to maintain backward-compatibility until we remove VBOSceneModel.\n * * See {@link SceneModel} for API details.\n *\n * @deprecated\n * @implements {Drawable}\n * @implements {Entity}\n * @extends {SceneModel}\n */\nexport class VBOSceneModel extends SceneModel {\n\n /**\n * See {@link VBOSceneModel} for details.\n *\n * @param owner\n * @param cfg\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n }\n}\n", @@ -107523,7 +108082,7 @@ "lineNumber": 1 }, { - "__docId__": 5400, + "__docId__": 5419, "kind": "class", "name": "VBOSceneModel", "memberof": "src/viewer/scene/model/VBOSceneModel.js", @@ -107546,7 +108105,7 @@ ] }, { - "__docId__": 5401, + "__docId__": 5420, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/VBOSceneModel.js~VBOSceneModel", @@ -107581,7 +108140,7 @@ ] }, { - "__docId__": 5402, + "__docId__": 5421, "kind": "file", "name": "src/viewer/scene/model/calculateUniquePositions.js", "content": "/**\n * @author https://github.com/tmarti, with support from https://tribia.com/\n * @license MIT\n *\n * This file takes a geometry given by { positionsCompressed, indices }, and returns\n * equivalent { positionsCompressed, indices } arrays but which only contain unique\n * positionsCompressed.\n *\n * The time is O(N logN) with the number of positionsCompressed due to a pre-sorting\n * step, but is much more GC-friendly and actually faster than the classic O(N)\n * approach based in keeping a hash-based LUT to identify unique positionsCompressed.\n */\nlet comparePositions = null;\n\nfunction compareVertex(a, b) {\n let res;\n for (let i = 0; i < 3; i++) {\n if (0 !== (res = comparePositions[a * 3 + i] - comparePositions[b * 3 + i])) {\n return res;\n }\n }\n return 0;\n}\n\nlet seqInit = null;\n\nfunction setMaxNumberOfPositions(maxPositions) {\n if (seqInit !== null && seqInit.length >= maxPositions) {\n return;\n }\n seqInit = new Uint32Array(maxPositions);\n for (let i = 0; i < maxPositions; i++) {\n seqInit[i] = i;\n }\n}\n\n/**\n * This function obtains unique positionsCompressed in the provided object\n * .positionsCompressed array and calculates an index mapping, which is then\n * applied to the provided object .indices and .edgeindices.\n *\n * The input object items are not modified, and instead new set\n * of positionsCompressed, indices and edgeIndices with the applied optimization\n * are returned.\n *\n * The algorithm, instead of being based in a hash-like LUT for\n * identifying unique positionsCompressed, is based in pre-sorting the input\n * positionsCompressed...\n *\n * (it's possible to define a _\"consistent ordering\"_ for the positionsCompressed\n * as positionsCompressed are quantized and thus not suffer from float number\n * comparison artifacts)\n *\n * ... so same positionsCompressed are adjacent in the sorted array, and then\n * it's easy to scan linearly the sorted array. During the linear run,\n * we will know that we found a different position because the comparison\n * function will return != 0 between current and previous element.\n *\n * During this linear traversal of the array, a `unique counter` is used\n * in order to calculate the mapping between original indices and unique\n * indices.\n *\n * @param {{positionsCompressed: number[],indices: number[], edgeIndices: number[]}} mesh The input mesh to process, with `positionsCompressed`, `indices` and `edgeIndices` keys.\n *\n * @returns {[Uint16Array, Uint32Array, Uint32Array]} An array with 3 elements: 0 => the uniquified positionsCompressed; 1 and 2 => the remapped edges and edgeIndices arrays\n */\nexport function uniquifyPositions(mesh) {\n const _positions = mesh.positionsCompressed;\n const _indices = mesh.indices;\n const _edgeIndices = mesh.edgeIndices;\n\n setMaxNumberOfPositions(_positions.length / 3);\n\n const seq = seqInit.slice(0, _positions.length / 3);\n const remappings = seqInit.slice(0, _positions.length / 3);\n\n comparePositions = _positions;\n\n seq.sort(compareVertex);\n\n let uniqueIdx = 0\n\n remappings[seq[0]] = 0;\n\n for (let i = 1, len = seq.length; i < len; i++) {\n if (0 !== compareVertex(seq[i], seq[i - 1])) {\n uniqueIdx++;\n }\n remappings[seq[i]] = uniqueIdx;\n }\n\n const numUniquePositions = uniqueIdx + 1;\n const newPositions = new Uint16Array(numUniquePositions * 3);\n\n uniqueIdx = 0\n\n newPositions [uniqueIdx * 3 + 0] = _positions [seq[0] * 3 + 0];\n newPositions [uniqueIdx * 3 + 1] = _positions [seq[0] * 3 + 1];\n newPositions [uniqueIdx * 3 + 2] = _positions [seq[0] * 3 + 2];\n\n for (let i = 1, len = seq.length; i < len; i++) {\n if (0 !== compareVertex(seq[i], seq[i - 1])) {\n uniqueIdx++;\n newPositions [uniqueIdx * 3 + 0] = _positions [seq[i] * 3 + 0];\n newPositions [uniqueIdx * 3 + 1] = _positions [seq[i] * 3 + 1];\n newPositions [uniqueIdx * 3 + 2] = _positions [seq[i] * 3 + 2];\n }\n remappings[seq[i]] = uniqueIdx;\n }\n\n comparePositions = null;\n\n const newIndices = new Uint32Array(_indices.length);\n\n for (let i = 0, len = _indices.length; i < len; i++) {\n newIndices[i] = remappings [_indices[i]];\n }\n\n const newEdgeIndices = new Uint32Array(_edgeIndices.length);\n\n for (let i = 0, len = _edgeIndices.length; i < len; i++) {\n newEdgeIndices[i] = remappings [_edgeIndices[i]];\n }\n\n return [newPositions, newIndices, newEdgeIndices];\n}", @@ -107592,7 +108151,7 @@ "lineNumber": 1 }, { - "__docId__": 5403, + "__docId__": 5422, "kind": "variable", "name": "comparePositions", "memberof": "src/viewer/scene/model/calculateUniquePositions.js", @@ -107622,7 +108181,7 @@ "ignore": true }, { - "__docId__": 5404, + "__docId__": 5423, "kind": "function", "name": "compareVertex", "memberof": "src/viewer/scene/model/calculateUniquePositions.js", @@ -107659,7 +108218,7 @@ "ignore": true }, { - "__docId__": 5405, + "__docId__": 5424, "kind": "variable", "name": "seqInit", "memberof": "src/viewer/scene/model/calculateUniquePositions.js", @@ -107680,7 +108239,7 @@ "ignore": true }, { - "__docId__": 5406, + "__docId__": 5425, "kind": "function", "name": "setMaxNumberOfPositions", "memberof": "src/viewer/scene/model/calculateUniquePositions.js", @@ -107707,7 +108266,7 @@ "ignore": true }, { - "__docId__": 5407, + "__docId__": 5426, "kind": "function", "name": "uniquifyPositions", "memberof": "src/viewer/scene/model/calculateUniquePositions.js", @@ -107749,7 +108308,7 @@ } }, { - "__docId__": 5408, + "__docId__": 5427, "kind": "file", "name": "src/viewer/scene/model/compression.js", "content": "import {math} from \"../math/math.js\";\n\nconst translate = math.mat4();\nconst scale = math.mat4();\n\n/**\n * @private\n */\nfunction quantizePositions(positions, aabb, positionsDecodeMatrix) { // http://cg.postech.ac.kr/research/mesh_comp_mobile/mesh_comp_mobile_conference.pdf\n const lenPositions = positions.length;\n const quantizedPositions = new Uint16Array(lenPositions);\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 = 65525;\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.floor(verify(positions[i + 0] - xmin) * xMultiplier);\n quantizedPositions[i + 1] = Math.floor(verify(positions[i + 1] - ymin) * yMultiplier);\n quantizedPositions[i + 2] = Math.floor(verify(positions[i + 2] - zmin) * zMultiplier);\n }\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 quantizedPositions;\n}\n\n/**\n * @private\n * @param aabb\n * @param positionsDecodeMatrix\n * @returns {*}\n */\nfunction createPositionsDecodeMatrix(aabb, positionsDecodeMatrix) { // http://cg.postech.ac.kr/research/mesh_comp_mobile/mesh_comp_mobile_conference.pdf\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 = 65525;\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/**\n * @private\n */\nfunction transformAndOctEncodeNormals(worldNormalMatrix, normals, lenNormals, compressedNormals, lenCompressedNormals) {\n // http://jcgt.org/published/0003/02/01/\n\n function dot(array, vec3) {\n return array[0] * vec3[0] + array[1] * vec3[1] + array[2] * vec3[2];\n }\n\n let oct, dec, best, currentCos, bestCos;\n let i, ei;\n let localNormal = new Float32Array([0, 0, 0, 0]);\n let worldNormal = new Float32Array([0, 0, 0, 0]);\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(worldNormalMatrix, 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, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(worldNormal, dec);\n oct = octEncodeVec3(worldNormal, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 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 octEncodeNormals(normals) { // http://jcgt.org/published/0003/02/01/\n const lenNormals = normals.length;\n const compressedNormals = new Int8Array(lenNormals)\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 = octEncodeNormal(normals, i, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(normals, i, dec);\n oct = octEncodeNormal(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 = octEncodeNormal(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 = octEncodeNormal(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[i + 0] = best[0];\n compressedNormals[i + 1] = best[1];\n compressedNormals[i + 2] = 0.0; // Unused\n }\n return compressedNormals;\n}\n\n/**\n * @private\n */\nfunction octEncodeVec3(p, xfunc, yfunc) { // Oct-encode single normal vector in 2 bytes\n let x = p[0] / (Math.abs(p[0]) + Math.abs(p[1]) + Math.abs(p[2]));\n let y = p[1] / (Math.abs(p[0]) + Math.abs(p[1]) + Math.abs(p[2]));\n if (p[2] < 0) {\n let tempx = x;\n let tempy = y;\n tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n 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 * @private\n */\nfunction octEncodeNormal(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 * @private\n */\nfunction octDecodeVec2(oct) { // Decode an oct-encoded normal\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 * @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\nexport {\n quantizePositions,\n createPositionsDecodeMatrix,\n octEncodeNormals,\n transformAndOctEncodeNormals,\n octEncodeVec3,\n octDecodeVec2\n\n};", @@ -107760,7 +108319,7 @@ "lineNumber": 1 }, { - "__docId__": 5409, + "__docId__": 5428, "kind": "variable", "name": "translate", "memberof": "src/viewer/scene/model/compression.js", @@ -107781,7 +108340,7 @@ "ignore": true }, { - "__docId__": 5410, + "__docId__": 5429, "kind": "variable", "name": "scale", "memberof": "src/viewer/scene/model/compression.js", @@ -107802,7 +108361,7 @@ "ignore": true }, { - "__docId__": 5411, + "__docId__": 5430, "kind": "function", "name": "octEncodeNormal", "memberof": "src/viewer/scene/model/compression.js", @@ -107850,7 +108409,7 @@ } }, { - "__docId__": 5412, + "__docId__": 5431, "kind": "function", "name": "dot", "memberof": "src/viewer/scene/model/compression.js", @@ -107892,7 +108451,7 @@ } }, { - "__docId__": 5413, + "__docId__": 5432, "kind": "function", "name": "quantizePositions", "memberof": "src/viewer/scene/model/compression.js", @@ -107934,7 +108493,7 @@ } }, { - "__docId__": 5414, + "__docId__": 5433, "kind": "function", "name": "createPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/compression.js", @@ -107987,7 +108546,7 @@ "ignore": true }, { - "__docId__": 5415, + "__docId__": 5434, "kind": "function", "name": "octEncodeNormals", "memberof": "src/viewer/scene/model/compression.js", @@ -108017,7 +108576,7 @@ } }, { - "__docId__": 5416, + "__docId__": 5435, "kind": "function", "name": "transformAndOctEncodeNormals", "memberof": "src/viewer/scene/model/compression.js", @@ -108071,7 +108630,7 @@ } }, { - "__docId__": 5417, + "__docId__": 5436, "kind": "function", "name": "octEncodeVec3", "memberof": "src/viewer/scene/model/compression.js", @@ -108113,7 +108672,7 @@ } }, { - "__docId__": 5418, + "__docId__": 5437, "kind": "function", "name": "octDecodeVec2", "memberof": "src/viewer/scene/model/compression.js", @@ -108143,7 +108702,7 @@ } }, { - "__docId__": 5419, + "__docId__": 5438, "kind": "file", "name": "src/viewer/scene/model/dtx/BindableDataTexture.js", "content": "/**\n * @private\n */\nexport class BindableDataTexture {\n\n constructor(gl, texture, textureWidth, textureHeight, textureData = null) {\n this._gl = gl;\n this._texture = texture;\n this._textureWidth = textureWidth;\n this._textureHeight = textureHeight;\n this._textureData = textureData;\n }\n\n bindTexture(glProgram, shaderName, glTextureUnit) {\n return glProgram.bindTexture(shaderName, this, glTextureUnit);\n }\n\n bind(unit) {\n this._gl.activeTexture(this._gl[\"TEXTURE\" + unit]);\n this._gl.bindTexture(this._gl.TEXTURE_2D, this._texture);\n return true;\n }\n\n unbind(unit) {\n // This `unbind` method is ignored at the moment to allow avoiding\n // to rebind same texture already bound to a texture unit.\n\n // this._gl.activeTexture(this.state.gl[\"TEXTURE\" + unit]);\n // this._gl.bindTexture(this.state.gl.TEXTURE_2D, null);\n }\n}", @@ -108154,7 +108713,7 @@ "lineNumber": 1 }, { - "__docId__": 5420, + "__docId__": 5439, "kind": "class", "name": "BindableDataTexture", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js", @@ -108170,7 +108729,7 @@ "ignore": true }, { - "__docId__": 5421, + "__docId__": 5440, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108184,7 +108743,7 @@ "undocument": true }, { - "__docId__": 5422, + "__docId__": 5441, "kind": "member", "name": "_gl", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108202,7 +108761,7 @@ } }, { - "__docId__": 5423, + "__docId__": 5442, "kind": "member", "name": "_texture", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108220,7 +108779,7 @@ } }, { - "__docId__": 5424, + "__docId__": 5443, "kind": "member", "name": "_textureWidth", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108238,7 +108797,7 @@ } }, { - "__docId__": 5425, + "__docId__": 5444, "kind": "member", "name": "_textureHeight", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108256,7 +108815,7 @@ } }, { - "__docId__": 5426, + "__docId__": 5445, "kind": "member", "name": "_textureData", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108274,7 +108833,7 @@ } }, { - "__docId__": 5427, + "__docId__": 5446, "kind": "method", "name": "bindTexture", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108313,7 +108872,7 @@ } }, { - "__docId__": 5428, + "__docId__": 5447, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108340,7 +108899,7 @@ } }, { - "__docId__": 5429, + "__docId__": 5448, "kind": "method", "name": "unbind", "memberof": "src/viewer/scene/model/dtx/BindableDataTexture.js~BindableDataTexture", @@ -108363,7 +108922,7 @@ "return": null }, { - "__docId__": 5430, + "__docId__": 5449, "kind": "file", "name": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js", "content": "/**\n * @private\n */\nexport class DTXLinesBuffer {\n\n constructor() {\n this.positionsCompressed = [];\n this.lenPositionsCompressed = 0;\n this.indices8Bits = [];\n this.lenIndices8Bits = 0;\n this.indices16Bits = [];\n this.lenIndices16Bits = 0;\n this.indices32Bits = [];\n this.lenIndices32Bits = 0;\n this.perObjectColors = [];\n this.perObjectPickColors = [];\n this.perObjectSolid = [];\n this.perObjectOffsets = [];\n this.perObjectPositionsDecodeMatrices = [];\n this.perObjectInstancePositioningMatrices = [];\n this.perObjectVertexBases = [];\n this.perObjectIndexBaseOffsets = [];\n this.perLineNumberPortionId8Bits = [];\n this.perLineNumberPortionId16Bits = [];\n this.perLineNumberPortionId32Bits = [];\n }\n}\n", @@ -108374,7 +108933,7 @@ "lineNumber": 1 }, { - "__docId__": 5431, + "__docId__": 5450, "kind": "class", "name": "DTXLinesBuffer", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js", @@ -108390,7 +108949,7 @@ "ignore": true }, { - "__docId__": 5432, + "__docId__": 5451, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108404,7 +108963,7 @@ "undocument": true }, { - "__docId__": 5433, + "__docId__": 5452, "kind": "member", "name": "positionsCompressed", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108421,7 +108980,7 @@ } }, { - "__docId__": 5434, + "__docId__": 5453, "kind": "member", "name": "lenPositionsCompressed", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108438,7 +108997,7 @@ } }, { - "__docId__": 5435, + "__docId__": 5454, "kind": "member", "name": "indices8Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108455,7 +109014,7 @@ } }, { - "__docId__": 5436, + "__docId__": 5455, "kind": "member", "name": "lenIndices8Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108472,7 +109031,7 @@ } }, { - "__docId__": 5437, + "__docId__": 5456, "kind": "member", "name": "indices16Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108489,7 +109048,7 @@ } }, { - "__docId__": 5438, + "__docId__": 5457, "kind": "member", "name": "lenIndices16Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108506,7 +109065,7 @@ } }, { - "__docId__": 5439, + "__docId__": 5458, "kind": "member", "name": "indices32Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108523,7 +109082,7 @@ } }, { - "__docId__": 5440, + "__docId__": 5459, "kind": "member", "name": "lenIndices32Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108540,7 +109099,7 @@ } }, { - "__docId__": 5441, + "__docId__": 5460, "kind": "member", "name": "perObjectColors", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108557,7 +109116,7 @@ } }, { - "__docId__": 5442, + "__docId__": 5461, "kind": "member", "name": "perObjectPickColors", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108574,7 +109133,7 @@ } }, { - "__docId__": 5443, + "__docId__": 5462, "kind": "member", "name": "perObjectSolid", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108591,7 +109150,7 @@ } }, { - "__docId__": 5444, + "__docId__": 5463, "kind": "member", "name": "perObjectOffsets", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108608,7 +109167,7 @@ } }, { - "__docId__": 5445, + "__docId__": 5464, "kind": "member", "name": "perObjectPositionsDecodeMatrices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108625,7 +109184,7 @@ } }, { - "__docId__": 5446, + "__docId__": 5465, "kind": "member", "name": "perObjectInstancePositioningMatrices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108642,7 +109201,7 @@ } }, { - "__docId__": 5447, + "__docId__": 5466, "kind": "member", "name": "perObjectVertexBases", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108659,7 +109218,7 @@ } }, { - "__docId__": 5448, + "__docId__": 5467, "kind": "member", "name": "perObjectIndexBaseOffsets", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108676,7 +109235,7 @@ } }, { - "__docId__": 5449, + "__docId__": 5468, "kind": "member", "name": "perLineNumberPortionId8Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108693,7 +109252,7 @@ } }, { - "__docId__": 5450, + "__docId__": 5469, "kind": "member", "name": "perLineNumberPortionId16Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108710,7 +109269,7 @@ } }, { - "__docId__": 5451, + "__docId__": 5470, "kind": "member", "name": "perLineNumberPortionId32Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js~DTXLinesBuffer", @@ -108727,7 +109286,7 @@ } }, { - "__docId__": 5452, + "__docId__": 5471, "kind": "file", "name": "src/viewer/scene/model/dtx/lines/DTXLinesState.js", "content": "/**\n * @private\n */\nexport class DTXLinesState {\n\n constructor() {\n this.texturePerObjectColorsAndFlags = null;\n this.texturePerObjectOffsets = null;\n this.texturePerObjectInstanceMatrices = null;\n this.texturePerObjectPositionsDecodeMatrix = null;\n this.texturePerVertexIdCoordinates = null;\n this.texturePerLineIdPortionIds8Bits = null;\n this.texturePerLineIdPortionIds16Bits = null;\n this.texturePerLineIdPortionIds32Bits = null;\n this.texturePerLineIdIndices8Bits = null;\n this.texturePerLineIdIndices16Bits = null;\n this.texturePerLineIdIndices32Bits = null;\n this.textureModelMatrices = null;\n }\n\n finalize() {\n this.indicesPerBitnessTextures = {\n 8: this.texturePerLineIdIndices8Bits,\n 16: this.texturePerLineIdIndices16Bits,\n 32: this.texturePerLineIdIndices32Bits,\n };\n this.indicesPortionIdsPerBitnessTextures = {\n 8: this.texturePerLineIdPortionIds8Bits,\n 16: this.texturePerLineIdPortionIds16Bits,\n 32: this.texturePerLineIdPortionIds32Bits,\n };\n }\n\n bindCommonTextures(glProgram, objectDecodeMatricesShaderName, vertexTextureShaderName, objectAttributesTextureShaderName, objectMatricesShaderName) {\n this.texturePerObjectPositionsDecodeMatrix.bindTexture(glProgram, objectDecodeMatricesShaderName, 1);\n this.texturePerVertexIdCoordinates.bindTexture(glProgram, vertexTextureShaderName, 2);\n this.texturePerObjectColorsAndFlags.bindTexture(glProgram, objectAttributesTextureShaderName, 3);\n this.texturePerObjectInstanceMatrices.bindTexture(glProgram, objectMatricesShaderName, 4);\n }\n\n bindLineIndicesTextures(glProgram, portionIdsShaderName, lineIndicesShaderName, textureBitness) {\n this.indicesPortionIdsPerBitnessTextures[textureBitness].bindTexture(glProgram, portionIdsShaderName, 5);\n this.indicesPerBitnessTextures[textureBitness].bindTexture(glProgram, lineIndicesShaderName, 6);\n }\n}\n\n", @@ -108738,7 +109297,7 @@ "lineNumber": 1 }, { - "__docId__": 5453, + "__docId__": 5472, "kind": "class", "name": "DTXLinesState", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js", @@ -108754,7 +109313,7 @@ "ignore": true }, { - "__docId__": 5454, + "__docId__": 5473, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108768,7 +109327,7 @@ "undocument": true }, { - "__docId__": 5455, + "__docId__": 5474, "kind": "member", "name": "texturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108785,7 +109344,7 @@ } }, { - "__docId__": 5456, + "__docId__": 5475, "kind": "member", "name": "texturePerObjectOffsets", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108802,7 +109361,7 @@ } }, { - "__docId__": 5457, + "__docId__": 5476, "kind": "member", "name": "texturePerObjectInstanceMatrices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108819,7 +109378,7 @@ } }, { - "__docId__": 5458, + "__docId__": 5477, "kind": "member", "name": "texturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108836,7 +109395,7 @@ } }, { - "__docId__": 5459, + "__docId__": 5478, "kind": "member", "name": "texturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108853,7 +109412,7 @@ } }, { - "__docId__": 5460, + "__docId__": 5479, "kind": "member", "name": "texturePerLineIdPortionIds8Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108870,7 +109429,7 @@ } }, { - "__docId__": 5461, + "__docId__": 5480, "kind": "member", "name": "texturePerLineIdPortionIds16Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108887,7 +109446,7 @@ } }, { - "__docId__": 5462, + "__docId__": 5481, "kind": "member", "name": "texturePerLineIdPortionIds32Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108904,7 +109463,7 @@ } }, { - "__docId__": 5463, + "__docId__": 5482, "kind": "member", "name": "texturePerLineIdIndices8Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108921,7 +109480,7 @@ } }, { - "__docId__": 5464, + "__docId__": 5483, "kind": "member", "name": "texturePerLineIdIndices16Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108938,7 +109497,7 @@ } }, { - "__docId__": 5465, + "__docId__": 5484, "kind": "member", "name": "texturePerLineIdIndices32Bits", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108955,7 +109514,7 @@ } }, { - "__docId__": 5466, + "__docId__": 5485, "kind": "member", "name": "textureModelMatrices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108972,7 +109531,7 @@ } }, { - "__docId__": 5467, + "__docId__": 5486, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -108988,7 +109547,7 @@ "return": null }, { - "__docId__": 5468, + "__docId__": 5487, "kind": "member", "name": "indicesPerBitnessTextures", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -109005,7 +109564,7 @@ } }, { - "__docId__": 5469, + "__docId__": 5488, "kind": "member", "name": "indicesPortionIdsPerBitnessTextures", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -109022,7 +109581,7 @@ } }, { - "__docId__": 5470, + "__docId__": 5489, "kind": "method", "name": "bindCommonTextures", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -109069,7 +109628,7 @@ "return": null }, { - "__docId__": 5471, + "__docId__": 5490, "kind": "method", "name": "bindLineIndicesTextures", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesState.js~DTXLinesState", @@ -109110,7 +109669,7 @@ "return": null }, { - "__docId__": 5472, + "__docId__": 5491, "kind": "file", "name": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js", "content": "import {BindableDataTexture} from \"./../BindableDataTexture.js\";\nimport {dataTextureRamStats} from \"./dataTextureRamStats.js\";\n\n/**\n * @private\n */\nexport class DTXLinesTextureFactory {\n /**\n * Enables the currently binded ````WebGLTexture```` to be used as a data texture.\n *\n * @param {WebGL2RenderingContext} gl\n *\n * @private\n */\n disableBindedTextureFiltering(gl) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n }\n\n /**\n * This will generate an RGBA texture for:\n * - colors\n * - pickColors\n * - flags\n * - flags2\n * - vertex bases\n * - vertex base offsets\n *\n * The texture will have:\n * - 4 RGBA columns per row: for each object (pick) color and flags(2)\n * - N rows where N is the number of objects\n *\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike>} colors Array of colors for all objects in the layer\n * @param {ArrayLike>} pickColors Array of pickColors for all objects in the layer\n * @param {ArrayLike} vertexBases Array of position-index-bases foteh all objects in the layer\n * @param {ArrayLike} indexBaseOffsets For lines: array of offests between the (gl_VertexID / 2) and the position where the indices start in the texture layer\n *\n * @returns {BindableDataTexture}\n */\n generateTextureForColorsAndFlags(gl, colors, pickColors, vertexBases, indexBaseOffsets) {\n const numPortions = colors.length;\n\n // The number of rows in the texture is the number of\n // objects in the layer.\n\n this.numPortions = numPortions;\n\n const textureWidth = 512 * 8;\n const textureHeight = Math.ceil(numPortions / (textureWidth / 8));\n\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n\n // 8 columns per texture row:\n // - col0: (RGBA) object color RGBA\n // - col1: (packed Uint32 as RGBA) object pick color\n // - col2: (packed 4 bytes as RGBA) object flags\n // - col3: (packed 4 bytes as RGBA) object flags2\n // - col4: (packed Uint32 bytes as RGBA) vertex base\n // - col5: (packed Uint32 bytes as RGBA) index base offset\n\n\n // // - col6: (packed Uint32 bytes as RGBA) edge index base offset\n // // - col7: (packed 4 bytes as RGBA) is-solid flag for objects\n\n const texArray = new Uint8Array(4 * textureWidth * textureHeight);\n\n dataTextureRamStats.sizeDataColorsAndFlags += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n\n for (let i = 0; i < numPortions; i++) {\n // object color\n texArray.set(colors [i], i * 32 + 0);\n texArray.set(pickColors [i], i * 32 + 4); // object pick color\n texArray.set([0, 0, 0, 0], i * 32 + 8); // object flags\n texArray.set([0, 0, 0, 0], i * 32 + 12); // object flags2\n\n // vertex base\n texArray.set([\n (vertexBases[i] >> 24) & 255,\n (vertexBases[i] >> 16) & 255,\n (vertexBases[i] >> 8) & 255,\n (vertexBases[i]) & 255,\n ],\n i * 32 + 16\n );\n\n // lines index base offset\n texArray.set(\n [\n (indexBaseOffsets[i] >> 24) & 255,\n (indexBaseOffsets[i] >> 16) & 255,\n (indexBaseOffsets[i] >> 8) & 255,\n (indexBaseOffsets[i]) & 255,\n ],\n i * 32 + 20\n );\n\n // // edge index base offset\n // texArray.set(\n // [\n // (edgeIndexBaseOffsets[i] >> 24) & 255,\n // (edgeIndexBaseOffsets[i] >> 16) & 255,\n // (edgeIndexBaseOffsets[i] >> 8) & 255,\n // (edgeIndexBaseOffsets[i]) & 255,\n // ],\n // i * 32 + 24\n // );\n //\n // // is-solid flag\n // texArray.set([solid[i] ? 1 : 0, 0, 0, 0], i * 32 + 28);\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA8UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA_INTEGER, gl.UNSIGNED_BYTE, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);\n }\n\n /**\n * This will generate a texture for all object offsets.\n *\n * @param {WebGL2RenderingContext} gl\n * @param {int[]} offsets Array of int[3], one XYZ offset array for each object\n *\n * @returns {BindableDataTexture}\n */\n generateTextureForObjectOffsets(gl, numOffsets) {\n const textureWidth = 512;\n const textureHeight = Math.ceil(numOffsets / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArray = new Float32Array(3 * textureWidth * textureHeight).fill(0);\n dataTextureRamStats.sizeDataTextureOffsets += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32F, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB, gl.FLOAT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);\n }\n\n /**\n * This will generate a texture for all positions decode matrices in the layer.\n *\n * The texture will have:\n * - 4 RGBA columns per row (each column will contain 4 packed half-float (16 bits) components).\n * Thus, each row will contain 16 packed half-floats corresponding to a complete positions decode matrix)\n * - N rows where N is the number of objects\n *\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike} instanceMatrices Array of geometry instancing matrices for all objects in the layer. Null if the objects are not instanced.\n *\n * @returns {BindableDataTexture}\n */\n generateTextureForInstancingMatrices(gl, instanceMatrices) {\n const numMatrices = instanceMatrices.length;\n if (numMatrices === 0) {\n throw \"num instance matrices===0\";\n }\n // in one row we can fit 512 matrices\n const textureWidth = 512 * 4;\n const textureHeight = Math.ceil(numMatrices / (textureWidth / 4));\n const texArray = new Float32Array(4 * textureWidth * textureHeight);\n // dataTextureRamStats.sizeDataPositionDecodeMatrices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0; i < instanceMatrices.length; i++) { // 4x4 values\n texArray.set(instanceMatrices[i], i * 16);\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA, gl.FLOAT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);\n }\n\n /**\n * This will generate a texture for all positions decode matrices in the layer.\n *\n * The texture will have:\n * - 4 RGBA columns per row (each column will contain 4 packed half-float (16 bits) components).\n * Thus, each row will contain 16 packed half-floats corresponding to a complete positions decode matrix)\n * - N rows where N is the number of objects\n *\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike} positionDecodeMatrices Array of positions decode matrices for all objects in the layer\n *\n * @returns {BindableDataTexture}\n */\n generateTextureForPositionsDecodeMatrices(gl, positionDecodeMatrices) {\n const numMatrices = positionDecodeMatrices.length;\n if (numMatrices === 0) {\n throw \"num decode+entity matrices===0\";\n }\n // in one row we can fit 512 matrices\n const textureWidth = 512 * 4;\n const textureHeight = Math.ceil(numMatrices / (textureWidth / 4));\n const texArray = new Float32Array(4 * textureWidth * textureHeight);\n dataTextureRamStats.sizeDataPositionDecodeMatrices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0; i < positionDecodeMatrices.length; i++) { // 4x4 values\n texArray.set(positionDecodeMatrices[i], i * 16);\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA, gl.FLOAT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n generateTextureFor8BitIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 3;\n const texArray = new Uint8Array(texArraySize);\n dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB8UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_BYTE, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n generateTextureFor16BitIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 3;\n const texArray = new Uint16Array(texArraySize);\n dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n generateTextureFor32BitIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 3;\n const texArray = new Uint32Array(texArraySize);\n dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_INT, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike} positionsArrays Arrays of quantized positions in the layer\n * @param lenPositions\n *\n * This will generate a texture for positions in the layer.\n *\n * The texture will have:\n * - 1024 columns, where each pixel will be a 16-bit-per-component RGB texture, corresponding to the XYZ of the position\n * - a number of rows R where R*1024 is just >= than the number of vertices (positions / 3)\n *\n * @returns {BindableDataTexture}\n */\n generateTextureForPositions(gl, positionsArrays, lenPositions) {\n const numVertices = lenPositions / 3;\n const textureWidth = 4096;\n const textureHeight = Math.ceil(numVertices / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 3;\n const texArray = new Uint16Array(texArraySize);\n dataTextureRamStats.sizeDataTexturePositions += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = positionsArrays.length; i < len; i++) {\n const pc = positionsArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike} portionIdsArray\n *\n * @returns {BindableDataTexture}\n */\n generateTextureForPackedPortionIds(gl, portionIdsArray) {\n if (portionIdsArray.length === 0) {\n return {texture: null, textureHeight: 0};\n }\n const lenArray = portionIdsArray.length;\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenArray / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight;\n const texArray = new Uint16Array(texArraySize);\n texArray.set(portionIdsArray, 0);\n dataTextureRamStats.sizeDataTexturePortionIds += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.R16UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RED_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n}", @@ -109121,7 +109680,7 @@ "lineNumber": 1 }, { - "__docId__": 5473, + "__docId__": 5492, "kind": "class", "name": "DTXLinesTextureFactory", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js", @@ -109137,7 +109696,7 @@ "ignore": true }, { - "__docId__": 5474, + "__docId__": 5493, "kind": "method", "name": "disableBindedTextureFiltering", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109164,7 +109723,7 @@ "return": null }, { - "__docId__": 5475, + "__docId__": 5494, "kind": "method", "name": "generateTextureForColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109243,7 +109802,7 @@ } }, { - "__docId__": 5476, + "__docId__": 5495, "kind": "member", "name": "numPortions", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109260,7 +109819,7 @@ } }, { - "__docId__": 5477, + "__docId__": 5496, "kind": "method", "name": "generateTextureForObjectOffsets", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109309,7 +109868,7 @@ } }, { - "__docId__": 5478, + "__docId__": 5497, "kind": "method", "name": "generateTextureForInstancingMatrices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109358,7 +109917,7 @@ } }, { - "__docId__": 5479, + "__docId__": 5498, "kind": "method", "name": "generateTextureForPositionsDecodeMatrices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109407,7 +109966,7 @@ } }, { - "__docId__": 5480, + "__docId__": 5499, "kind": "method", "name": "generateTextureFor8BitIndices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109466,7 +110025,7 @@ } }, { - "__docId__": 5481, + "__docId__": 5500, "kind": "method", "name": "generateTextureFor16BitIndices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109525,7 +110084,7 @@ } }, { - "__docId__": 5482, + "__docId__": 5501, "kind": "method", "name": "generateTextureFor32BitIndices", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109584,7 +110143,7 @@ } }, { - "__docId__": 5483, + "__docId__": 5502, "kind": "method", "name": "generateTextureForPositions", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109643,7 +110202,7 @@ } }, { - "__docId__": 5484, + "__docId__": 5503, "kind": "method", "name": "generateTextureForPackedPortionIds", "memberof": "src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js~DTXLinesTextureFactory", @@ -109692,7 +110251,7 @@ } }, { - "__docId__": 5485, + "__docId__": 5504, "kind": "file", "name": "src/viewer/scene/model/dtx/lines/dataTextureRamStats.js", "content": "export const dataTextureRamStats = {\n sizeDataColorsAndFlags: 0,\n sizeDataPositionDecodeMatrices: 0,\n sizeDataTextureOffsets: 0,\n sizeDataTexturePositions: 0,\n sizeDataTextureIndices: 0,\n sizeDataTexturePortionIds: 0,\n numberOfGeometries: 0,\n numberOfPortions: 0,\n numberOfLayers: 0,\n numberOfTextures: 0,\n totalLines: 0,\n totalLines8Bits: 0,\n totalLines16Bits: 0,\n totalLines32Bits: 0,\n cannotCreatePortion: {\n because10BitsObjectId: 0,\n becauseTextureSize: 0,\n },\n overheadSizeAlignementIndices: 0,\n overheadSizeAlignementEdgeIndices: 0,\n};\n\nwindow.printDataTextureRamStats = function () {\n\n console.log(JSON.stringify(dataTextureRamStats, null, 4));\n\n let totalRamSize = 0;\n\n Object.keys(dataTextureRamStats).forEach(key => {\n if (key.startsWith(\"size\")) {\n totalRamSize += dataTextureRamStats[key];\n }\n });\n\n console.log(`Total size ${totalRamSize} bytes (${(totalRamSize / 1000 / 1000).toFixed(2)} MB)`);\n console.log(`Avg bytes / triangle: ${(totalRamSize / dataTextureRamStats.totalLines).toFixed(2)}`);\n\n let percentualRamStats = {};\n\n Object.keys(dataTextureRamStats).forEach(key => {\n if (key.startsWith(\"size\")) {\n percentualRamStats[key] =\n `${(dataTextureRamStats[key] / totalRamSize * 100).toFixed(2)} % of total`;\n }\n });\n\n console.log(JSON.stringify({percentualRamUsage: percentualRamStats}, null, 4));\n};\n", @@ -109703,7 +110262,7 @@ "lineNumber": 1 }, { - "__docId__": 5486, + "__docId__": 5505, "kind": "variable", "name": "dataTextureRamStats", "memberof": "src/viewer/scene/model/dtx/lines/dataTextureRamStats.js", @@ -109723,7 +110282,7 @@ } }, { - "__docId__": 5487, + "__docId__": 5506, "kind": "function", "name": "printDataTextureRamStats", "memberof": "src/viewer/scene/model/dtx/lines/dataTextureRamStats.js", @@ -109743,7 +110302,7 @@ "ignore": true }, { - "__docId__": 5488, + "__docId__": 5507, "kind": "file", "name": "src/viewer/scene/model/dtx/lines/rebucketPositions.js", "content": "/**\n * @author https://github.com/tmarti, with support from https://tribia.com/\n * @license MIT\n **/\n\nconst MAX_RE_BUCKET_FAN_OUT = 8;\n\nlet compareEdgeIndices = null;\n\nfunction compareIndices(a, b) {\n let retVal = compareEdgeIndices[a * 2] - compareEdgeIndices[b * 2];\n if (retVal !== 0) {\n return retVal;\n }\n return compareEdgeIndices[a * 2 + 1] - compareEdgeIndices[b * 2 + 1];\n}\n\nfunction preSortEdgeIndices(edgeIndices) {\n if ((edgeIndices || []).length === 0) {\n return [];\n }\n let seq = new Int32Array(edgeIndices.length / 2);\n for (let i = 0, len = seq.length; i < len; i++) {\n seq[i] = i;\n }\n for (let i = 0, j = 0, len = edgeIndices.length; i < len; i += 2) {\n if (edgeIndices[i] > edgeIndices[i + 1]) {\n let tmp = edgeIndices[i];\n edgeIndices[i] = edgeIndices[i + 1];\n edgeIndices[i + 1] = tmp;\n }\n }\n compareEdgeIndices = new Int32Array(edgeIndices);\n seq.sort(compareIndices);\n const sortedEdgeIndices = new Int32Array(edgeIndices.length);\n for (let i = 0, len = seq.length; i < len; i++) {\n sortedEdgeIndices[i * 2 + 0] = edgeIndices[seq[i] * 2 + 0];\n sortedEdgeIndices[i * 2 + 1] = edgeIndices[seq[i] * 2 + 1];\n }\n return sortedEdgeIndices;\n}\n\n/**\n * @param {{positionsCompressed: number[], indices: number[], edgeIndices: number[]}} mesh\n * @param {number} bitsPerBucket\n * @param {boolean} checkResult\n *\n * @returns {{positionsCompressed: number[], indices: number[], edgeIndices: number[]}[]}\n */\nfunction rebucketPositions(mesh, bitsPerBucket, checkResult = false) {\n const positionsCompressed = (mesh.positionsCompressed || []);\n const edgeIndices = preSortEdgeIndices(mesh.edgeIndices || []);\n\n function edgeSearch(el0, el1) { // Code adapted from https://stackoverflow.com/questions/22697936/binary-search-in-javascript\n if (el0 > el1) {\n let tmp = el0;\n el0 = el1;\n el1 = tmp;\n }\n\n function compare_fn(a, b) {\n if (a !== el0) {\n return el0 - a;\n }\n if (b !== el1) {\n return el1 - b;\n }\n return 0;\n }\n\n let m = 0;\n let n = (edgeIndices.length >> 1) - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = compare_fn(edgeIndices[k * 2], edgeIndices[k * 2 + 1]);\n if (cmp > 0) {\n m = k + 1;\n } else if (cmp < 0) {\n n = k - 1;\n } else {\n return k;\n }\n }\n return -m - 1;\n }\n\n const alreadyOutputEdgeIndices = new Int32Array(edgeIndices.length / 2);\n alreadyOutputEdgeIndices.fill(0);\n\n const numPositions = positionsCompressed.length / 3;\n\n if (numPositions > ((1 << bitsPerBucket) * MAX_RE_BUCKET_FAN_OUT)) {\n return [mesh];\n }\n\n const bucketIndicesRemap = new Int32Array(numPositions);\n bucketIndicesRemap.fill(-1);\n\n const buckets = [];\n\n function addEmptyBucket() {\n bucketIndicesRemap.fill(-1);\n\n const newBucket = {\n positionsCompressed: [],\n indices: [],\n edgeIndices: [],\n maxNumPositions: (1 << bitsPerBucket) - bitsPerBucket,\n numPositions: 0,\n bucketNumber: buckets.length,\n };\n\n buckets.push(newBucket);\n\n return newBucket;\n }\n\n let currentBucket = addEmptyBucket();\n\n // let currentBucket = 0;\n\n let retVal = 0;\n\n for (let i = 0, len = indices.length; i < len; i += 3) {\n let additonalPositionsInBucket = 0;\n const ii0 = indices[i];\n const ii1 = indices[i + 1];\n const ii2 = indices[i + 2];\n if (bucketIndicesRemap[ii0] === -1) {\n additonalPositionsInBucket++;\n }\n if (bucketIndicesRemap[ii1] === -1) {\n additonalPositionsInBucket++;\n }\n if (bucketIndicesRemap[ii2] === -1) {\n additonalPositionsInBucket++;\n }\n if ((additonalPositionsInBucket + currentBucket.numPositions) > currentBucket.maxNumPositions) {\n currentBucket = addEmptyBucket();\n }\n if (currentBucket.bucketNumber > MAX_RE_BUCKET_FAN_OUT) {\n return [mesh];\n }\n if (bucketIndicesRemap[ii0] === -1) {\n bucketIndicesRemap[ii0] = currentBucket.numPositions++;\n currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3 + 1]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3 + 2]);\n }\n if (bucketIndicesRemap[ii1] === -1) {\n bucketIndicesRemap[ii1] = currentBucket.numPositions++;\n currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3 + 1]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3 + 2]);\n }\n if (bucketIndicesRemap[ii2] === -1) {\n bucketIndicesRemap[ii2] = currentBucket.numPositions++;\n currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3 + 1]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3 + 2]);\n }\n // Check possible edge1\n let edgeIndex;\n if ((edgeIndex = edgeSearch(ii0, ii1)) >= 0) {\n if (alreadyOutputEdgeIndices[edgeIndex] === 0) {\n alreadyOutputEdgeIndices[edgeIndex] = 1;\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]);\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]);\n }\n }\n if ((edgeIndex = edgeSearch(ii0, ii2)) >= 0) {\n if (alreadyOutputEdgeIndices[edgeIndex] === 0) {\n alreadyOutputEdgeIndices[edgeIndex] = 1;\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]);\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]);\n }\n }\n if ((edgeIndex = edgeSearch(ii1, ii2)) >= 0) {\n if (alreadyOutputEdgeIndices[edgeIndex] === 0) {\n alreadyOutputEdgeIndices[edgeIndex] = 1;\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]);\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]);\n }\n }\n }\n\n const prevBytesPerIndex = bitsPerBucket / 8 * 2;\n const newBytesPerIndex = bitsPerBucket / 8;\n\n const originalSize = positionsCompressed.length * 2 + (indices.length + edgeIndices.length) * prevBytesPerIndex;\n\n let newSize = 0;\n let newPositions = -positionsCompressed.length / 3;\n\n buckets.forEach(bucket => {\n newSize += bucket.positionsCompressed.length * 2 + (bucket.indices.length + bucket.edgeIndices.length) * newBytesPerIndex;\n newPositions += bucket.positionsCompressed.length / 3;\n });\n if (newSize > originalSize) {\n return [mesh];\n }\n if (checkResult) {\n doCheckResult(buckets, mesh);\n }\n return buckets;\n}\n\nexport {rebucketPositions}", @@ -109754,7 +110313,7 @@ "lineNumber": 1 }, { - "__docId__": 5489, + "__docId__": 5508, "kind": "variable", "name": "MAX_RE_BUCKET_FAN_OUT", "memberof": "src/viewer/scene/model/dtx/lines/rebucketPositions.js", @@ -109784,7 +110343,7 @@ "ignore": true }, { - "__docId__": 5490, + "__docId__": 5509, "kind": "variable", "name": "compareEdgeIndices", "memberof": "src/viewer/scene/model/dtx/lines/rebucketPositions.js", @@ -109805,7 +110364,7 @@ "ignore": true }, { - "__docId__": 5491, + "__docId__": 5510, "kind": "function", "name": "compareIndices", "memberof": "src/viewer/scene/model/dtx/lines/rebucketPositions.js", @@ -109842,7 +110401,7 @@ "ignore": true }, { - "__docId__": 5492, + "__docId__": 5511, "kind": "function", "name": "preSortEdgeIndices", "memberof": "src/viewer/scene/model/dtx/lines/rebucketPositions.js", @@ -109873,7 +110432,7 @@ "ignore": true }, { - "__docId__": 5493, + "__docId__": 5512, "kind": "function", "name": "rebucketPositions", "memberof": "src/viewer/scene/model/dtx/lines/rebucketPositions.js", @@ -109935,7 +110494,7 @@ } }, { - "__docId__": 5494, + "__docId__": 5513, "kind": "file", "name": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {math} from \"../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXLinesColorRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = dataTextureLayer.model;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const viewMatrix = camera.viewMatrix;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx, state);\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uPerObjectDecodeMatrix,\n this._uPerVertexPosition,\n this.uPerObjectColorAndFlags,\n this._uPerObjectMatrix\n );\n\n let rtcViewMatrix;\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3b);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n } else {\n rtcViewMatrix = viewMatrix;\n }\n\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numIndices8Bits > 0) {\n textureState.bindLineIndicesTextures(\n this._program,\n this._uPerLineObject,\n this._uPerLineIndices,\n 8 // 8 bits indices\n );\n gl.drawArrays(gl.LINES, 0, state.numIndices8Bits);\n }\n\n if (state.numIndices16Bits > 0) {\n textureState.bindLineIndicesTextures(\n this._program,\n this._uPerLineObject,\n this._uPerLineIndices,\n 16 // 16 bits indices\n );\n gl.drawArrays(gl.LINES, 0, state.numIndices16Bits);\n }\n\n if (state.numIndices32Bits > 0) {\n textureState.bindLineIndicesTextures(\n this._program,\n this._uPerLineObject,\n this._uPerLineIndices,\n 32 // 32 bits indices\n );\n gl.drawArrays(gl.LINES, 0, state.numIndices32Bits);\n }\n\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n console.error(this.errors);\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uPerObjectDecodeMatrix = \"uPerObjectDecodeMatrix\";\n this.uPerObjectColorAndFlags = \"uPerObjectColorAndFlags\";\n this._uPerVertexPosition = \"uPerVertexPosition\";\n this._uPerLineIndices = \"uPerLineIndices\";\n this._uPerLineObject = \"uPerLineObject\";\n this._uPerObjectMatrix= \"uPerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram(frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n program.bind();\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// LinesDataTextureColorRenderer\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n // src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uPerObjectDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uPerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uPerObjectColorAndFlags;\");\n src.push(\"uniform mediump usampler2D uPerVertexPosition;\");\n src.push(\"uniform highp usampler2D uPerLineIndices;\");\n src.push(\"uniform mediump usampler2D uPerLineObject;\");\n\n // src.push(\"uniform vec4 color;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n src.push(\"out vec4 vColor;\");\n src.push(\"void main(void) {\");\n\n src.push(\" int lineIndex = gl_VertexID / 2;\")\n\n src.push(\" int h_packed_object_id_index = (lineIndex >> 3) & 4095;\")\n src.push(\" int v_packed_object_id_index = (lineIndex >> 3) >> 12;\")\n\n src.push(\" int objectIndex = int(texelFetch(uPerLineObject, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n\n src.push(\" ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n src.push(\" uvec4 flags = texelFetch (uPerObjectColorAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\" uvec4 flags2 = texelFetch (uPerObjectColorAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(` if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\" } else {\");\n\n src.push(\" ivec4 packedVertexBase = ivec4(texelFetch (uPerObjectColorAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n src.push(\" ivec4 packedLineIndexBaseOffset = ivec4(texelFetch (uPerObjectColorAndFlags, ivec2(objectIndexCoords.x*8+6, objectIndexCoords.y), 0));\");\n src.push(\" int lineIndexBaseOffset = (packedLineIndexBaseOffset.r << 24) + (packedLineIndexBaseOffset.g << 16) + (packedLineIndexBaseOffset.b << 8) + packedLineIndexBaseOffset.a;\");\n src.push(\" int h_index = (lineIndex - lineIndexBaseOffset) & 4095;\")\n src.push(\" int v_index = (lineIndex - lineIndexBaseOffset) >> 12;\")\n src.push(\" ivec3 vertexIndices = ivec3(texelFetch(uPerLineIndices, ivec2(h_index, v_index), 0));\");\n src.push(\" ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\" int indexPositionH = uniqueVertexIndexes[gl_VertexID % 2] & 4095;\")\n src.push(\" int indexPositionV = uniqueVertexIndexes[gl_VertexID % 2] >> 12;\")\n\n src.push(\" mat4 objectInstanceMatrix = mat4 (texelFetch (uPerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uPerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uPerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uPerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n src.push(\" mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uPerObjectDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uPerObjectDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uPerObjectDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uPerObjectDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\" uvec4 flags = texelFetch (uPerObjectColorAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\" uvec4 flags2 = texelFetch (uPerObjectColorAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n src.push(\" vec3 position = vec3(texelFetch(uPerVertexPosition, ivec2(indexPositionH, indexPositionV), 0));\")\n\n src.push(\" uvec4 color = texelFetch (uPerObjectColorAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n src.push(` if (color.a == 0u) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\");\n src.push(\" };\");\n src.push(\" vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2.r;\");\n }\n src.push(\" vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" vFragDepth = 1.0 + clipPos.w;\");\n src.push(\" isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\" gl_Position = clipPos;\");\n src.push(\" vec4 rgb = vec4(color.rgba);\");\n src.push(\" vColor = vec4(float(rgb.r*0.5) / 255.0, float(rgb.g*0.5) / 255.0, float(rgb.b*0.5) / 255.0, float(rgb.a) / 255.0);\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// LinesDataTextureColorRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -109946,7 +110505,7 @@ "lineNumber": 1 }, { - "__docId__": 5495, + "__docId__": 5514, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js", @@ -109967,7 +110526,7 @@ "ignore": true }, { - "__docId__": 5496, + "__docId__": 5515, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js", @@ -109988,7 +110547,7 @@ "ignore": true }, { - "__docId__": 5497, + "__docId__": 5516, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js", @@ -110009,7 +110568,7 @@ "ignore": true }, { - "__docId__": 5498, + "__docId__": 5517, "kind": "class", "name": "DTXLinesColorRenderer", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js", @@ -110025,7 +110584,7 @@ "ignore": true }, { - "__docId__": 5499, + "__docId__": 5518, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110039,7 +110598,7 @@ "undocument": true }, { - "__docId__": 5500, + "__docId__": 5519, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110057,7 +110616,7 @@ } }, { - "__docId__": 5501, + "__docId__": 5520, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110075,7 +110634,7 @@ } }, { - "__docId__": 5502, + "__docId__": 5521, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110095,7 +110654,7 @@ } }, { - "__docId__": 5503, + "__docId__": 5522, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110116,7 +110675,7 @@ } }, { - "__docId__": 5504, + "__docId__": 5523, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110151,7 +110710,7 @@ "return": null }, { - "__docId__": 5505, + "__docId__": 5524, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110168,7 +110727,7 @@ "return": null }, { - "__docId__": 5506, + "__docId__": 5525, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110186,7 +110745,7 @@ } }, { - "__docId__": 5507, + "__docId__": 5526, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110203,7 +110762,7 @@ } }, { - "__docId__": 5508, + "__docId__": 5527, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110221,7 +110780,7 @@ } }, { - "__docId__": 5509, + "__docId__": 5528, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110239,7 +110798,7 @@ } }, { - "__docId__": 5510, + "__docId__": 5529, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110257,7 +110816,7 @@ } }, { - "__docId__": 5511, + "__docId__": 5530, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110275,7 +110834,7 @@ } }, { - "__docId__": 5512, + "__docId__": 5531, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110293,7 +110852,7 @@ } }, { - "__docId__": 5513, + "__docId__": 5532, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110311,7 +110870,7 @@ } }, { - "__docId__": 5514, + "__docId__": 5533, "kind": "member", "name": "uPerObjectDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110328,7 +110887,7 @@ } }, { - "__docId__": 5515, + "__docId__": 5534, "kind": "member", "name": "uPerObjectColorAndFlags", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110345,7 +110904,7 @@ } }, { - "__docId__": 5516, + "__docId__": 5535, "kind": "member", "name": "_uPerVertexPosition", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110363,7 +110922,7 @@ } }, { - "__docId__": 5517, + "__docId__": 5536, "kind": "member", "name": "_uPerLineIndices", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110381,7 +110940,7 @@ } }, { - "__docId__": 5518, + "__docId__": 5537, "kind": "member", "name": "_uPerLineObject", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110399,7 +110958,7 @@ } }, { - "__docId__": 5519, + "__docId__": 5538, "kind": "member", "name": "_uPerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110417,7 +110976,7 @@ } }, { - "__docId__": 5520, + "__docId__": 5539, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110435,7 +110994,7 @@ } }, { - "__docId__": 5521, + "__docId__": 5540, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110459,7 +111018,7 @@ "return": null }, { - "__docId__": 5522, + "__docId__": 5541, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110480,7 +111039,7 @@ } }, { - "__docId__": 5523, + "__docId__": 5542, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110501,7 +111060,7 @@ } }, { - "__docId__": 5524, + "__docId__": 5543, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110522,7 +111081,7 @@ } }, { - "__docId__": 5525, + "__docId__": 5544, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110538,7 +111097,7 @@ "return": null }, { - "__docId__": 5527, + "__docId__": 5546, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js~DTXLinesColorRenderer", @@ -110554,7 +111113,7 @@ "return": null }, { - "__docId__": 5529, + "__docId__": 5548, "kind": "file", "name": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js", "content": "import {DTXLinesColorRenderer} from \"./DTXLinesColorRenderer.js\";\n\n/**\n * @private\n */\nclass DTXLinesRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n \n }\n\n eagerCreateRenders() {\n\n // Pre-initialize certain renderers that would otherwise be lazy-initialised\n // on user interaction, such as picking or emphasis, so that there is no delay\n // when user first begins interacting with the viewer.\n \n }\n \n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new DTXLinesColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n \n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\n/**\n * @private\n */\nexport function getRenderers(scene) {\n const sceneId = scene.id;\n let dataTextureRenderers = cachedRenderers[sceneId];\n if (!dataTextureRenderers) {\n dataTextureRenderers = new DTXLinesRenderers(scene);\n cachedRenderers[sceneId] = dataTextureRenderers;\n dataTextureRenderers._compile();\n dataTextureRenderers.eagerCreateRenders();\n scene.on(\"compile\", () => {\n dataTextureRenderers._compile();\n dataTextureRenderers.eagerCreateRenders();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers[sceneId];\n dataTextureRenderers._destroy();\n });\n }\n return dataTextureRenderers;\n}\n", @@ -110565,7 +111124,7 @@ "lineNumber": 1 }, { - "__docId__": 5530, + "__docId__": 5549, "kind": "class", "name": "DTXLinesRenderers", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js", @@ -110581,7 +111140,7 @@ "ignore": true }, { - "__docId__": 5531, + "__docId__": 5550, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js~DTXLinesRenderers", @@ -110595,7 +111154,7 @@ "undocument": true }, { - "__docId__": 5532, + "__docId__": 5551, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js~DTXLinesRenderers", @@ -110613,7 +111172,7 @@ } }, { - "__docId__": 5533, + "__docId__": 5552, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js~DTXLinesRenderers", @@ -110630,7 +111189,7 @@ "return": null }, { - "__docId__": 5534, + "__docId__": 5553, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js~DTXLinesRenderers", @@ -110648,7 +111207,7 @@ } }, { - "__docId__": 5535, + "__docId__": 5554, "kind": "method", "name": "eagerCreateRenders", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js~DTXLinesRenderers", @@ -110664,7 +111223,7 @@ "return": null }, { - "__docId__": 5536, + "__docId__": 5555, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js~DTXLinesRenderers", @@ -110683,7 +111242,7 @@ } }, { - "__docId__": 5538, + "__docId__": 5557, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js~DTXLinesRenderers", @@ -110700,7 +111259,7 @@ "return": null }, { - "__docId__": 5539, + "__docId__": 5558, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js", @@ -110721,7 +111280,7 @@ "ignore": true }, { - "__docId__": 5540, + "__docId__": 5559, "kind": "function", "name": "getRenderers", "memberof": "src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js", @@ -110751,7 +111310,7 @@ } }, { - "__docId__": 5541, + "__docId__": 5560, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js", "content": "/**\n * @private\n */\nexport class DTXTrianglesBuffer {\n\n constructor() {\n this.positionsCompressed = [];\n this.lenPositionsCompressed = 0;\n\n this.metallicRoughness = [];\n\n this.indices8Bits = [];\n this.lenIndices8Bits = 0;\n\n this.indices16Bits = [];\n this.lenIndices16Bits = 0;\n\n this.indices32Bits = [];\n this.lenIndices32Bits = 0;\n\n this.edgeIndices8Bits = [];\n this.lenEdgeIndices8Bits = 0;\n\n this.edgeIndices16Bits = [];\n this.lenEdgeIndices16Bits = 0;\n\n this.edgeIndices32Bits = [];\n this.lenEdgeIndices32Bits = 0;\n\n this.perObjectColors = [];\n this.perObjectPickColors = [];\n this.perObjectSolid = [];\n this.perObjectOffsets = [];\n this.perObjectPositionsDecodeMatrices = [];\n this.perObjectInstancePositioningMatrices = [];\n this.perObjectVertexBases = [];\n this.perObjectIndexBaseOffsets = [];\n this.perObjectEdgeIndexBaseOffsets = [];\n this.perTriangleNumberPortionId8Bits = [];\n this.perTriangleNumberPortionId16Bits = [];\n this.perTriangleNumberPortionId32Bits = [];\n this.perEdgeNumberPortionId8Bits = [];\n this.perEdgeNumberPortionId16Bits = [];\n this.perEdgeNumberPortionId32Bits = [];\n }\n}\n", @@ -110762,7 +111321,7 @@ "lineNumber": 1 }, { - "__docId__": 5542, + "__docId__": 5561, "kind": "class", "name": "DTXTrianglesBuffer", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js", @@ -110778,7 +111337,7 @@ "ignore": true }, { - "__docId__": 5543, + "__docId__": 5562, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110792,7 +111351,7 @@ "undocument": true }, { - "__docId__": 5544, + "__docId__": 5563, "kind": "member", "name": "positionsCompressed", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110809,7 +111368,7 @@ } }, { - "__docId__": 5545, + "__docId__": 5564, "kind": "member", "name": "lenPositionsCompressed", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110826,7 +111385,7 @@ } }, { - "__docId__": 5546, + "__docId__": 5565, "kind": "member", "name": "metallicRoughness", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110843,7 +111402,7 @@ } }, { - "__docId__": 5547, + "__docId__": 5566, "kind": "member", "name": "indices8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110860,7 +111419,7 @@ } }, { - "__docId__": 5548, + "__docId__": 5567, "kind": "member", "name": "lenIndices8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110877,7 +111436,7 @@ } }, { - "__docId__": 5549, + "__docId__": 5568, "kind": "member", "name": "indices16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110894,7 +111453,7 @@ } }, { - "__docId__": 5550, + "__docId__": 5569, "kind": "member", "name": "lenIndices16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110911,7 +111470,7 @@ } }, { - "__docId__": 5551, + "__docId__": 5570, "kind": "member", "name": "indices32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110928,7 +111487,7 @@ } }, { - "__docId__": 5552, + "__docId__": 5571, "kind": "member", "name": "lenIndices32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110945,7 +111504,7 @@ } }, { - "__docId__": 5553, + "__docId__": 5572, "kind": "member", "name": "edgeIndices8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110962,7 +111521,7 @@ } }, { - "__docId__": 5554, + "__docId__": 5573, "kind": "member", "name": "lenEdgeIndices8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110979,7 +111538,7 @@ } }, { - "__docId__": 5555, + "__docId__": 5574, "kind": "member", "name": "edgeIndices16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -110996,7 +111555,7 @@ } }, { - "__docId__": 5556, + "__docId__": 5575, "kind": "member", "name": "lenEdgeIndices16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111013,7 +111572,7 @@ } }, { - "__docId__": 5557, + "__docId__": 5576, "kind": "member", "name": "edgeIndices32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111030,7 +111589,7 @@ } }, { - "__docId__": 5558, + "__docId__": 5577, "kind": "member", "name": "lenEdgeIndices32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111047,7 +111606,7 @@ } }, { - "__docId__": 5559, + "__docId__": 5578, "kind": "member", "name": "perObjectColors", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111064,7 +111623,7 @@ } }, { - "__docId__": 5560, + "__docId__": 5579, "kind": "member", "name": "perObjectPickColors", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111081,7 +111640,7 @@ } }, { - "__docId__": 5561, + "__docId__": 5580, "kind": "member", "name": "perObjectSolid", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111098,7 +111657,7 @@ } }, { - "__docId__": 5562, + "__docId__": 5581, "kind": "member", "name": "perObjectOffsets", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111115,7 +111674,7 @@ } }, { - "__docId__": 5563, + "__docId__": 5582, "kind": "member", "name": "perObjectPositionsDecodeMatrices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111132,7 +111691,7 @@ } }, { - "__docId__": 5564, + "__docId__": 5583, "kind": "member", "name": "perObjectInstancePositioningMatrices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111149,7 +111708,7 @@ } }, { - "__docId__": 5565, + "__docId__": 5584, "kind": "member", "name": "perObjectVertexBases", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111166,7 +111725,7 @@ } }, { - "__docId__": 5566, + "__docId__": 5585, "kind": "member", "name": "perObjectIndexBaseOffsets", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111183,7 +111742,7 @@ } }, { - "__docId__": 5567, + "__docId__": 5586, "kind": "member", "name": "perObjectEdgeIndexBaseOffsets", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111200,7 +111759,7 @@ } }, { - "__docId__": 5568, + "__docId__": 5587, "kind": "member", "name": "perTriangleNumberPortionId8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111217,7 +111776,7 @@ } }, { - "__docId__": 5569, + "__docId__": 5588, "kind": "member", "name": "perTriangleNumberPortionId16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111234,7 +111793,7 @@ } }, { - "__docId__": 5570, + "__docId__": 5589, "kind": "member", "name": "perTriangleNumberPortionId32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111251,7 +111810,7 @@ } }, { - "__docId__": 5571, + "__docId__": 5590, "kind": "member", "name": "perEdgeNumberPortionId8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111268,7 +111827,7 @@ } }, { - "__docId__": 5572, + "__docId__": 5591, "kind": "member", "name": "perEdgeNumberPortionId16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111285,7 +111844,7 @@ } }, { - "__docId__": 5573, + "__docId__": 5592, "kind": "member", "name": "perEdgeNumberPortionId32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js~DTXTrianglesBuffer", @@ -111302,7 +111861,7 @@ } }, { - "__docId__": 5574, + "__docId__": 5593, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js", "content": "// Imports used to complete the JSDocs arguments to methods\nimport {Program} from \"../../../../webgl/Program.js\"\n\n/**\n * @private\n */\nexport class DTXTrianglesState {\n constructor() {\n /**\n * Texture that holds colors/pickColors/flags/flags2 per-object:\n * - columns: one concept per column => color / pick-color / ...\n * - row: the object Id\n *\n * @type BindableDataTexture\n */\n this.texturePerObjectColorsAndFlags = null;\n\n /**\n * Texture that holds the XYZ offsets per-object:\n * - columns: just 1 column with the XYZ-offset\n * - row: the object Id\n *\n * @type BindableDataTexture\n */\n this.texturePerObjectOffsets = null;\n\n this.texturePerObjectInstanceMatrices = null;\n\n /**\n * Texture that holds the objectDecodeAndInstanceMatrix per-object:\n * - columns: each column is one column of the matrix\n * - row: the object Id\n *\n * @type BindableDataTexture\n */\n this.texturePerObjectPositionsDecodeMatrix = null;\n\n /**\n * Texture that holds all the `different-vertices` used by the layer.\n *\n * @type BindableDataTexture\n */\n this.texturePerVertexIdCoordinates = null;\n\n /**\n * Texture that holds the PortionId that corresponds to a given polygon-id.\n *\n * Variant of the texture for 8-bit based polygon-ids.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdPortionIds8Bits = null;\n\n /**\n * Texture that holds the PortionId that corresponds to a given polygon-id.\n *\n * Variant of the texture for 16-bit based polygon-ids.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdPortionIds16Bits = null;\n\n /**\n * Texture that holds the PortionId that corresponds to a given polygon-id.\n *\n * Variant of the texture for 32-bit based polygon-ids.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdPortionIds32Bits = null;\n\n /**\n * Texture that holds the PortionId that corresponds to a given edge-id.\n *\n * Variant of the texture for 8-bit based polygon-ids.\n *\n * @type BindableDataTexture\n */\n this.texturePerEdgeIdPortionIds8Bits = null;\n\n /**\n * Texture that holds the PortionId that corresponds to a given edge-id.\n *\n * Variant of the texture for 16-bit based polygon-ids.\n *\n * @type BindableDataTexture\n */\n this.texturePerEdgeIdPortionIds16Bits = null;\n\n /**\n * Texture that holds the PortionId that corresponds to a given edge-id.\n *\n * Variant of the texture for 32-bit based polygon-ids.\n *\n * @type BindableDataTexture\n */\n this.texturePerEdgeIdPortionIds32Bits = null;\n\n /**\n * Texture that holds the unique-vertex-indices for 8-bit based indices.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdIndices8Bits = null;\n\n /**\n * Texture that holds the unique-vertex-indices for 16-bit based indices.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdIndices16Bits = null;\n\n /**\n * Texture that holds the unique-vertex-indices for 32-bit based indices.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdIndices32Bits = null;\n\n /**\n * Texture that holds the unique-vertex-indices for 8-bit based edge indices.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdEdgeIndices8Bits = null;\n\n /**\n * Texture that holds the unique-vertex-indices for 16-bit based edge indices.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdEdgeIndices16Bits = null;\n\n /**\n * Texture that holds the unique-vertex-indices for 32-bit based edge indices.\n *\n * @type BindableDataTexture\n */\n this.texturePerPolygonIdEdgeIndices32Bits = null;\n\n /**\n * Texture that holds the model matrices\n * - columns: each column in the texture is a model matrix column.\n * - row: each row is a different model matrix.\n *\n * @type BindableDataTexture\n */\n this.textureModelMatrices = null;\n }\n\n finalize() {\n this.indicesPerBitnessTextures = {\n 8: this.texturePerPolygonIdIndices8Bits,\n 16: this.texturePerPolygonIdIndices16Bits,\n 32: this.texturePerPolygonIdIndices32Bits,\n };\n\n this.indicesPortionIdsPerBitnessTextures = {\n 8: this.texturePerPolygonIdPortionIds8Bits,\n 16: this.texturePerPolygonIdPortionIds16Bits,\n 32: this.texturePerPolygonIdPortionIds32Bits,\n };\n\n this.edgeIndicesPerBitnessTextures = {\n 8: this.texturePerPolygonIdEdgeIndices8Bits,\n 16: this.texturePerPolygonIdEdgeIndices16Bits,\n 32: this.texturePerPolygonIdEdgeIndices32Bits,\n };\n\n this.edgeIndicesPortionIdsPerBitnessTextures = {\n 8: this.texturePerEdgeIdPortionIds8Bits,\n 16: this.texturePerEdgeIdPortionIds16Bits,\n 32: this.texturePerEdgeIdPortionIds32Bits,\n };\n }\n\n /**\n *\n * @param {Program} glProgram\n * @param {string} objectDecodeMatricesShaderName\n * @param {string} vertexTextureShaderName\n * @param {string} objectAttributesTextureShaderName\n * @param {string} objectMatricesShaderName\n */\n bindCommonTextures(\n glProgram,\n objectDecodeMatricesShaderName,\n vertexTextureShaderName,\n objectAttributesTextureShaderName,\n objectMatricesShaderName\n ) {\n this.texturePerObjectPositionsDecodeMatrix.bindTexture(glProgram, objectDecodeMatricesShaderName, 1);\n this.texturePerVertexIdCoordinates.bindTexture(glProgram, vertexTextureShaderName, 2);\n this.texturePerObjectColorsAndFlags.bindTexture(glProgram, objectAttributesTextureShaderName, 3);\n this.texturePerObjectInstanceMatrices.bindTexture(glProgram, objectMatricesShaderName, 4);\n }\n\n /**\n *\n * @param {Program} glProgram\n * @param {string} portionIdsShaderName\n * @param {string} polygonIndicesShaderName\n * @param {8|16|32} textureBitness\n */\n bindTriangleIndicesTextures(\n glProgram,\n portionIdsShaderName,\n polygonIndicesShaderName,\n textureBitness,\n ) {\n this.indicesPortionIdsPerBitnessTextures[textureBitness].bindTexture(\n glProgram,\n portionIdsShaderName,\n 5 // webgl texture unit\n );\n\n this.indicesPerBitnessTextures[textureBitness].bindTexture(\n glProgram,\n polygonIndicesShaderName,\n 6 // webgl texture unit\n );\n }\n\n /**\n *\n * @param {Program} glProgram\n * @param {string} edgePortionIdsShaderName\n * @param {string} edgeIndicesShaderName\n * @param {8|16|32} textureBitness\n */\n bindEdgeIndicesTextures(\n glProgram,\n edgePortionIdsShaderName,\n edgeIndicesShaderName,\n textureBitness,\n ) {\n this.edgeIndicesPortionIdsPerBitnessTextures[textureBitness].bindTexture(\n glProgram,\n edgePortionIdsShaderName,\n 5 // webgl texture unit\n );\n\n this.edgeIndicesPerBitnessTextures[textureBitness].bindTexture(\n glProgram,\n edgeIndicesShaderName,\n 6 // webgl texture unit\n );\n }\n}\n\n", @@ -111313,7 +111872,7 @@ "lineNumber": 1 }, { - "__docId__": 5575, + "__docId__": 5594, "kind": "class", "name": "DTXTrianglesState", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js", @@ -111329,7 +111888,7 @@ "ignore": true }, { - "__docId__": 5576, + "__docId__": 5595, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111343,7 +111902,7 @@ "undocument": true }, { - "__docId__": 5577, + "__docId__": 5596, "kind": "member", "name": "texturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111362,7 +111921,7 @@ } }, { - "__docId__": 5578, + "__docId__": 5597, "kind": "member", "name": "texturePerObjectOffsets", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111381,7 +111940,7 @@ } }, { - "__docId__": 5579, + "__docId__": 5598, "kind": "member", "name": "texturePerObjectInstanceMatrices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111398,7 +111957,7 @@ } }, { - "__docId__": 5580, + "__docId__": 5599, "kind": "member", "name": "texturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111417,7 +111976,7 @@ } }, { - "__docId__": 5581, + "__docId__": 5600, "kind": "member", "name": "texturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111436,7 +111995,7 @@ } }, { - "__docId__": 5582, + "__docId__": 5601, "kind": "member", "name": "texturePerPolygonIdPortionIds8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111455,7 +112014,7 @@ } }, { - "__docId__": 5583, + "__docId__": 5602, "kind": "member", "name": "texturePerPolygonIdPortionIds16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111474,7 +112033,7 @@ } }, { - "__docId__": 5584, + "__docId__": 5603, "kind": "member", "name": "texturePerPolygonIdPortionIds32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111493,7 +112052,7 @@ } }, { - "__docId__": 5585, + "__docId__": 5604, "kind": "member", "name": "texturePerEdgeIdPortionIds8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111512,7 +112071,7 @@ } }, { - "__docId__": 5586, + "__docId__": 5605, "kind": "member", "name": "texturePerEdgeIdPortionIds16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111531,7 +112090,7 @@ } }, { - "__docId__": 5587, + "__docId__": 5606, "kind": "member", "name": "texturePerEdgeIdPortionIds32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111550,7 +112109,7 @@ } }, { - "__docId__": 5588, + "__docId__": 5607, "kind": "member", "name": "texturePerPolygonIdIndices8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111569,7 +112128,7 @@ } }, { - "__docId__": 5589, + "__docId__": 5608, "kind": "member", "name": "texturePerPolygonIdIndices16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111588,7 +112147,7 @@ } }, { - "__docId__": 5590, + "__docId__": 5609, "kind": "member", "name": "texturePerPolygonIdIndices32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111607,7 +112166,7 @@ } }, { - "__docId__": 5591, + "__docId__": 5610, "kind": "member", "name": "texturePerPolygonIdEdgeIndices8Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111626,7 +112185,7 @@ } }, { - "__docId__": 5592, + "__docId__": 5611, "kind": "member", "name": "texturePerPolygonIdEdgeIndices16Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111645,7 +112204,7 @@ } }, { - "__docId__": 5593, + "__docId__": 5612, "kind": "member", "name": "texturePerPolygonIdEdgeIndices32Bits", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111664,7 +112223,7 @@ } }, { - "__docId__": 5594, + "__docId__": 5613, "kind": "member", "name": "textureModelMatrices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111683,7 +112242,7 @@ } }, { - "__docId__": 5595, + "__docId__": 5614, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111699,7 +112258,7 @@ "return": null }, { - "__docId__": 5596, + "__docId__": 5615, "kind": "member", "name": "indicesPerBitnessTextures", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111716,7 +112275,7 @@ } }, { - "__docId__": 5597, + "__docId__": 5616, "kind": "member", "name": "indicesPortionIdsPerBitnessTextures", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111733,7 +112292,7 @@ } }, { - "__docId__": 5598, + "__docId__": 5617, "kind": "member", "name": "edgeIndicesPerBitnessTextures", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111750,7 +112309,7 @@ } }, { - "__docId__": 5599, + "__docId__": 5618, "kind": "member", "name": "edgeIndicesPortionIdsPerBitnessTextures", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111767,7 +112326,7 @@ } }, { - "__docId__": 5600, + "__docId__": 5619, "kind": "method", "name": "bindCommonTextures", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111833,7 +112392,7 @@ "return": null }, { - "__docId__": 5601, + "__docId__": 5620, "kind": "method", "name": "bindTriangleIndicesTextures", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111891,7 +112450,7 @@ "return": null }, { - "__docId__": 5602, + "__docId__": 5621, "kind": "method", "name": "bindEdgeIndicesTextures", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js~DTXTrianglesState", @@ -111949,7 +112508,7 @@ "return": null }, { - "__docId__": 5603, + "__docId__": 5622, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js", "content": "import {BindableDataTexture} from \"./../../BindableDataTexture.js\";\nimport {dataTextureRamStats} from \"./dataTextureRamStats.js\";\n\n/**\n * @private\n */\nexport class DTXTrianglesTextureFactory {\n\n constructor() {\n\n }\n\n /**\n * Enables the currently binded ````WebGLTexture```` to be used as a data texture.\n *\n * @param {WebGL2RenderingContext} gl\n *\n * @private\n */\n disableBindedTextureFiltering(gl) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n }\n\n /**\n * This will generate an RGBA texture for:\n * - colors\n * - pickColors\n * - flags\n * - flags2\n * - vertex bases\n * - vertex base offsets\n *\n * The texture will have:\n * - 4 RGBA columns per row: for each object (pick) color and flags(2)\n * - N rows where N is the number of objects\n *\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike>} colors Array of colors for all objects in the layer\n * @param {ArrayLike>} pickColors Array of pickColors for all objects in the layer\n * @param {ArrayLike} vertexBases Array of position-index-bases foteh all objects in the layer\n * @param {ArrayLike} indexBaseOffsets For triangles: array of offests between the (gl_VertexID / 3) and the position where the indices start in the texture layer\n * @param {ArrayLike} edgeIndexBaseOffsets For edges: Array of offests between the (gl_VertexID / 2) and the position where the edge indices start in the texture layer\n * @param {ArrayLike} solid Array is-solid flag for all objects in the layer\n *\n * @returns {BindableDataTexture}\n */\n createTextureForColorsAndFlags(gl, colors, pickColors, vertexBases, indexBaseOffsets, edgeIndexBaseOffsets, solid) {\n const numPortions = colors.length;\n\n // The number of rows in the texture is the number of\n // objects in the layer.\n\n this.numPortions = numPortions;\n\n const textureWidth = 512 * 8;\n const textureHeight = Math.ceil(numPortions / (textureWidth / 8));\n\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n\n // 8 columns per texture row:\n // - col0: (RGBA) object color RGBA\n // - col1: (packed Uint32 as RGBA) object pick color\n // - col2: (packed 4 bytes as RGBA) object flags\n // - col3: (packed 4 bytes as RGBA) object flags2\n // - col4: (packed Uint32 bytes as RGBA) vertex base\n // - col5: (packed Uint32 bytes as RGBA) index base offset\n // - col6: (packed Uint32 bytes as RGBA) edge index base offset\n // - col7: (packed 4 bytes as RGBA) is-solid flag for objects\n\n const texArray = new Uint8Array(4 * textureWidth * textureHeight);\n\n dataTextureRamStats.sizeDataColorsAndFlags += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n\n for (let i = 0; i < numPortions; i++) {\n // object color\n texArray.set(colors [i], i * 32 + 0);\n texArray.set(pickColors [i], i * 32 + 4); // object pick color\n texArray.set([0, 0, 0, 0], i * 32 + 8); // object flags\n texArray.set([0, 0, 0, 0], i * 32 + 12); // object flags2\n\n // vertex base\n texArray.set([\n (vertexBases[i] >> 24) & 255,\n (vertexBases[i] >> 16) & 255,\n (vertexBases[i] >> 8) & 255,\n (vertexBases[i]) & 255,\n ],\n i * 32 + 16\n );\n\n // triangles index base offset\n texArray.set(\n [\n (indexBaseOffsets[i] >> 24) & 255,\n (indexBaseOffsets[i] >> 16) & 255,\n (indexBaseOffsets[i] >> 8) & 255,\n (indexBaseOffsets[i]) & 255,\n ],\n i * 32 + 20\n );\n\n // edge index base offset\n texArray.set(\n [\n (edgeIndexBaseOffsets[i] >> 24) & 255,\n (edgeIndexBaseOffsets[i] >> 16) & 255,\n (edgeIndexBaseOffsets[i] >> 8) & 255,\n (edgeIndexBaseOffsets[i]) & 255,\n ],\n i * 32 + 24\n );\n\n // is-solid flag\n texArray.set([solid[i] ? 1 : 0, 0, 0, 0], i * 32 + 28);\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA8UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA_INTEGER, gl.UNSIGNED_BYTE, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);\n }\n\n /**\n * This will generate a texture for all object offsets.\n *\n * @param {WebGL2RenderingContext} gl\n * @param {int[]} offsets Array of int[3], one XYZ offset array for each object\n *\n * @returns {BindableDataTexture}\n */\n createTextureForObjectOffsets(gl, numOffsets) {\n const textureWidth = 512;\n const textureHeight = Math.ceil(numOffsets / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArray = new Float32Array(3 * textureWidth * textureHeight).fill(0);\n dataTextureRamStats.sizeDataTextureOffsets += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32F, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB, gl.FLOAT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);\n }\n\n /**\n * This will generate a texture for all positions decode matrices in the layer.\n *\n * The texture will have:\n * - 4 RGBA columns per row (each column will contain 4 packed half-float (16 bits) components).\n * Thus, each row will contain 16 packed half-floats corresponding to a complete positions decode matrix)\n * - N rows where N is the number of objects\n *\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike} instanceMatrices Array of geometry instancing matrices for all objects in the layer. Null if the objects are not instanced.\n *\n * @returns {BindableDataTexture}\n */\n createTextureForInstancingMatrices(gl, instanceMatrices) {\n const numMatrices = instanceMatrices.length;\n if (numMatrices === 0) {\n throw \"num instance matrices===0\";\n }\n // in one row we can fit 512 matrices\n const textureWidth = 512 * 4;\n const textureHeight = Math.ceil(numMatrices / (textureWidth / 4));\n const texArray = new Float32Array(4 * textureWidth * textureHeight);\n // dataTextureRamStats.sizeDataPositionDecodeMatrices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0; i < instanceMatrices.length; i++) { // 4x4 values\n texArray.set(instanceMatrices[i], i * 16);\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA, gl.FLOAT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);\n }\n\n /**\n * This will generate a texture for all positions decode matrices in the layer.\n *\n * The texture will have:\n * - 4 RGBA columns per row (each column will contain 4 packed half-float (16 bits) components).\n * Thus, each row will contain 16 packed half-floats corresponding to a complete positions decode matrix)\n * - N rows where N is the number of objects\n *\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike} positionDecodeMatrices Array of positions decode matrices for all objects in the layer\n *\n * @returns {BindableDataTexture}\n */\n createTextureForPositionsDecodeMatrices(gl, positionDecodeMatrices) {\n const numMatrices = positionDecodeMatrices.length;\n if (numMatrices === 0) {\n throw \"num decode+entity matrices===0\";\n }\n // in one row we can fit 512 matrices\n const textureWidth = 512 * 4;\n const textureHeight = Math.ceil(numMatrices / (textureWidth / 4));\n const texArray = new Float32Array(4 * textureWidth * textureHeight);\n dataTextureRamStats.sizeDataPositionDecodeMatrices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0; i < positionDecodeMatrices.length; i++) { // 4x4 values\n texArray.set(positionDecodeMatrices[i], i * 16);\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA, gl.FLOAT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n createTextureFor8BitIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 3;\n const texArray = new Uint8Array(texArraySize);\n dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB8UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_BYTE, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n createTextureFor16BitIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 3;\n const texArray = new Uint16Array(texArraySize);\n dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n createTextureFor32BitIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 3;\n const texArray = new Uint32Array(texArraySize);\n dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_INT, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n createTextureFor8BitsEdgeIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 2 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 2;\n const texArray = new Uint8Array(texArraySize);\n dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG8UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_BYTE, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n createTextureFor16BitsEdgeIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 2 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 2;\n const texArray = new Uint16Array(texArraySize);\n dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG16UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param indicesArrays\n * @param lenIndices\n *\n * @returns {BindableDataTexture}\n */\n createTextureFor32BitsEdgeIndices(gl, indicesArrays, lenIndices) {\n if (lenIndices === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenIndices / 2 / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 2;\n const texArray = new Uint32Array(texArraySize);\n dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {\n const pc = indicesArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG32UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_INT, texArray, 0);\n this.disableBindedTextureFiltering(gl);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike} positionsArrays Arrays of quantized positions in the layer\n * @param lenPositions\n *\n * This will generate a texture for positions in the layer.\n *\n * The texture will have:\n * - 1024 columns, where each pixel will be a 16-bit-per-component RGB texture, corresponding to the XYZ of the position\n * - a number of rows R where R*1024 is just >= than the number of vertices (positions / 3)\n *\n * @returns {BindableDataTexture}\n */\n createTextureForPositions(gl, positionsArrays, lenPositions) {\n const numVertices = lenPositions / 3;\n const textureWidth = 4096;\n const textureHeight = Math.ceil(numVertices / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight * 3;\n const texArray = new Uint16Array(texArraySize);\n dataTextureRamStats.sizeDataTexturePositions += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n for (let i = 0, j = 0, len = positionsArrays.length; i < len; i++) {\n const pc = positionsArrays[i];\n texArray.set(pc, j);\n j += pc.length;\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n\n /**\n * @param {WebGL2RenderingContext} gl\n * @param {ArrayLike} portionIdsArray\n *\n * @returns {BindableDataTexture}\n */\n createTextureForPackedPortionIds(gl, portionIdsArray) {\n if (portionIdsArray.length === 0) {\n return {texture: null, textureHeight: 0,};\n }\n const lenArray = portionIdsArray.length;\n const textureWidth = 4096;\n const textureHeight = Math.ceil(lenArray / textureWidth);\n if (textureHeight === 0) {\n throw \"texture height===0\";\n }\n const texArraySize = textureWidth * textureHeight;\n const texArray = new Uint16Array(texArraySize);\n texArray.set(portionIdsArray, 0);\n dataTextureRamStats.sizeDataTexturePortionIds += texArray.byteLength;\n dataTextureRamStats.numberOfTextures++;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texStorage2D(gl.TEXTURE_2D, 1, gl.R16UI, textureWidth, textureHeight);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RED_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return new BindableDataTexture(gl, texture, textureWidth, textureHeight);\n }\n}", @@ -111960,7 +112519,7 @@ "lineNumber": 1 }, { - "__docId__": 5604, + "__docId__": 5623, "kind": "class", "name": "DTXTrianglesTextureFactory", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js", @@ -111976,7 +112535,7 @@ "ignore": true }, { - "__docId__": 5605, + "__docId__": 5624, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -111990,7 +112549,7 @@ "undocument": true }, { - "__docId__": 5606, + "__docId__": 5625, "kind": "method", "name": "disableBindedTextureFiltering", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112017,7 +112576,7 @@ "return": null }, { - "__docId__": 5607, + "__docId__": 5626, "kind": "method", "name": "createTextureForColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112116,7 +112675,7 @@ } }, { - "__docId__": 5608, + "__docId__": 5627, "kind": "member", "name": "numPortions", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112133,7 +112692,7 @@ } }, { - "__docId__": 5609, + "__docId__": 5628, "kind": "method", "name": "createTextureForObjectOffsets", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112182,7 +112741,7 @@ } }, { - "__docId__": 5610, + "__docId__": 5629, "kind": "method", "name": "createTextureForInstancingMatrices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112231,7 +112790,7 @@ } }, { - "__docId__": 5611, + "__docId__": 5630, "kind": "method", "name": "createTextureForPositionsDecodeMatrices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112280,7 +112839,7 @@ } }, { - "__docId__": 5612, + "__docId__": 5631, "kind": "method", "name": "createTextureFor8BitIndices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112339,7 +112898,7 @@ } }, { - "__docId__": 5613, + "__docId__": 5632, "kind": "method", "name": "createTextureFor16BitIndices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112398,7 +112957,7 @@ } }, { - "__docId__": 5614, + "__docId__": 5633, "kind": "method", "name": "createTextureFor32BitIndices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112457,7 +113016,7 @@ } }, { - "__docId__": 5615, + "__docId__": 5634, "kind": "method", "name": "createTextureFor8BitsEdgeIndices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112516,7 +113075,7 @@ } }, { - "__docId__": 5616, + "__docId__": 5635, "kind": "method", "name": "createTextureFor16BitsEdgeIndices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112575,7 +113134,7 @@ } }, { - "__docId__": 5617, + "__docId__": 5636, "kind": "method", "name": "createTextureFor32BitsEdgeIndices", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112634,7 +113193,7 @@ } }, { - "__docId__": 5618, + "__docId__": 5637, "kind": "method", "name": "createTextureForPositions", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112693,7 +113252,7 @@ } }, { - "__docId__": 5619, + "__docId__": 5638, "kind": "method", "name": "createTextureForPackedPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js~DTXTrianglesTextureFactory", @@ -112742,7 +113301,7 @@ } }, { - "__docId__": 5620, + "__docId__": 5639, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js", "content": "export const dataTextureRamStats = {\n sizeDataColorsAndFlags: 0,\n sizeDataPositionDecodeMatrices: 0,\n sizeDataTextureOffsets: 0,\n sizeDataTexturePositions: 0,\n sizeDataTextureIndices: 0,\n sizeDataTextureEdgeIndices: 0,\n sizeDataTexturePortionIds: 0,\n numberOfGeometries: 0,\n numberOfPortions: 0,\n numberOfLayers: 0,\n numberOfTextures: 0,\n totalPolygons: 0,\n totalPolygons8Bits: 0,\n totalPolygons16Bits: 0,\n totalPolygons32Bits: 0,\n totalEdges: 0,\n totalEdges8Bits: 0,\n totalEdges16Bits: 0,\n totalEdges32Bits: 0,\n cannotCreatePortion: {\n because10BitsObjectId: 0,\n becauseTextureSize: 0,\n },\n overheadSizeAlignementIndices: 0,\n overheadSizeAlignementEdgeIndices: 0,\n};\n\nwindow.printDataTextureRamStats = function () {\n\n console.log(JSON.stringify(dataTextureRamStats, null, 4));\n\n let totalRamSize = 0;\n\n Object.keys(dataTextureRamStats).forEach(key => {\n if (key.startsWith(\"size\")) {\n totalRamSize += dataTextureRamStats[key];\n }\n });\n\n console.log(`Total size ${totalRamSize} bytes (${(totalRamSize / 1000 / 1000).toFixed(2)} MB)`);\n console.log(`Avg bytes / triangle: ${(totalRamSize / dataTextureRamStats.totalPolygons).toFixed(2)}`);\n\n let percentualRamStats = {};\n\n Object.keys(dataTextureRamStats).forEach(key => {\n if (key.startsWith(\"size\")) {\n percentualRamStats[key] =\n `${(dataTextureRamStats[key] / totalRamSize * 100).toFixed(2)} % of total`;\n }\n });\n\n console.log(JSON.stringify({percentualRamUsage: percentualRamStats}, null, 4));\n};\n", @@ -112753,7 +113312,7 @@ "lineNumber": 1 }, { - "__docId__": 5621, + "__docId__": 5640, "kind": "variable", "name": "dataTextureRamStats", "memberof": "src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js", @@ -112773,7 +113332,7 @@ } }, { - "__docId__": 5622, + "__docId__": 5641, "kind": "function", "name": "printDataTextureRamStats", "memberof": "src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js", @@ -112793,7 +113352,7 @@ "ignore": true }, { - "__docId__": 5623, + "__docId__": 5642, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {math} from \"../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\n\nconst tempVec4a = math.vec4();\n\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesColorRenderer {\n\n constructor(scene, withSAO) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = dataTextureLayer.model;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx, state);\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3b);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(camera.viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3c;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n } else {\n rtcViewMatrix = camera.viewMatrix;\n rtcCameraEye = camera.eye;\n }\n\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n\n frameCtx.drawElements++;\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n console.error(this.errors);\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uLightAmbient = program.getLocation(\"lightAmbient\");\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n\n const lights = lightsState.lights;\n let light;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n if (this._withSAO) {\n this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdNormals = \"uTexturePerPolygonIdNormals\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const lights = scene._lightsState.lights;\n const project = scene.camera.project;\n\n program.bind();\n\n if (this._uLightAmbient) {\n gl.uniform4fv(this._uLightAmbient, scene._lightsState.getAmbientColorAndIntensity());\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\n\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n\n if (this._withSAO) {\n const sao = scene.sao;\n const saoEnabled = sao.possible;\n if (saoEnabled) {\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n tempVec4a[0] = viewportWidth;\n tempVec4a[1] = viewportHeight;\n tempVec4a[2] = sao.blendCutoff;\n tempVec4a[3] = sao.blendFactor;\n gl.uniform4fv(this._uSAOParams, tempVec4a);\n this._program.bindTexture(this._uOcclusionTexture, frameCtx.occlusionTexture, 10);\n }\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n let light;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// TrianglesDataTextureColorRenderer vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n src.push(\"uvec4 color = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n src.push(`if (color.a == 0u) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\");\n src.push(\"};\");\n\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n // when the geometry is not solid, if needed, flip the triangle winding\n\n src.push(\"if (solid != 1u) {\");\n src.push(\"if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\"vec3 uCameraEyeRtcInQuantizedSpace = (inverse(sceneModelMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n // src.push(\"vColor = vec4(vec3(1, -1, 0)*dot(normalize(position.xyz - uCameraEyeRtcInQuantizedSpace), normal), 1);\")\n src.push(\"if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"viewNormal = -viewNormal;\");\n src.push(\"}\");\n src.push(\"} else {\");\n // src.push(\"vColor = vec4(vec3(1, -1, 0)*viewNormal.z, 1);\")\n\n src.push(\"if (viewNormal.z < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"viewNormal = -viewNormal;\");\n src.push(\"}\");\n src.push(\"}\");\n src.push(\"}\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * ((objectDecodeAndInstanceMatrix * vec4(position, 1.0))); \");\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec3 rgb = vec3(color.rgb) / 255.0;\");\n src.push(\"vColor = vec4((lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedColor * rgb), float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2.r;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n\n src.push(\"}\");\n\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// TrianglesDataTextureColorRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\"}\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n //src.push(\" gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" outColor = vec4(vColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" outColor = vColor;\");\n }\n\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -112804,7 +113363,7 @@ "lineNumber": 1 }, { - "__docId__": 5624, + "__docId__": 5643, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js", @@ -112825,7 +113384,7 @@ "ignore": true }, { - "__docId__": 5625, + "__docId__": 5644, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js", @@ -112846,7 +113405,7 @@ "ignore": true }, { - "__docId__": 5626, + "__docId__": 5645, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js", @@ -112867,7 +113426,7 @@ "ignore": true }, { - "__docId__": 5627, + "__docId__": 5646, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js", @@ -112888,7 +113447,7 @@ "ignore": true }, { - "__docId__": 5628, + "__docId__": 5647, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js", @@ -112909,7 +113468,7 @@ "ignore": true }, { - "__docId__": 5629, + "__docId__": 5648, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js", @@ -112930,7 +113489,7 @@ "ignore": true }, { - "__docId__": 5630, + "__docId__": 5649, "kind": "class", "name": "DTXTrianglesColorRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js", @@ -112946,7 +113505,7 @@ "ignore": true }, { - "__docId__": 5631, + "__docId__": 5650, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -112960,7 +113519,7 @@ "undocument": true }, { - "__docId__": 5632, + "__docId__": 5651, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -112978,7 +113537,7 @@ } }, { - "__docId__": 5633, + "__docId__": 5652, "kind": "member", "name": "_withSAO", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -112996,7 +113555,7 @@ } }, { - "__docId__": 5634, + "__docId__": 5653, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113014,7 +113573,7 @@ } }, { - "__docId__": 5635, + "__docId__": 5654, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113034,7 +113593,7 @@ } }, { - "__docId__": 5636, + "__docId__": 5655, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113055,7 +113614,7 @@ } }, { - "__docId__": 5637, + "__docId__": 5656, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113090,7 +113649,7 @@ "return": null }, { - "__docId__": 5638, + "__docId__": 5657, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113107,7 +113666,7 @@ "return": null }, { - "__docId__": 5639, + "__docId__": 5658, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113125,7 +113684,7 @@ } }, { - "__docId__": 5640, + "__docId__": 5659, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113142,7 +113701,7 @@ } }, { - "__docId__": 5641, + "__docId__": 5660, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113160,7 +113719,7 @@ } }, { - "__docId__": 5642, + "__docId__": 5661, "kind": "member", "name": "_uLightAmbient", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113178,7 +113737,7 @@ } }, { - "__docId__": 5643, + "__docId__": 5662, "kind": "member", "name": "_uLightColor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113196,7 +113755,7 @@ } }, { - "__docId__": 5644, + "__docId__": 5663, "kind": "member", "name": "_uLightDir", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113214,7 +113773,7 @@ } }, { - "__docId__": 5645, + "__docId__": 5664, "kind": "member", "name": "_uLightPos", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113232,7 +113791,7 @@ } }, { - "__docId__": 5646, + "__docId__": 5665, "kind": "member", "name": "_uLightAttenuation", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113250,7 +113809,7 @@ } }, { - "__docId__": 5647, + "__docId__": 5666, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113268,7 +113827,7 @@ } }, { - "__docId__": 5648, + "__docId__": 5667, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113286,7 +113845,7 @@ } }, { - "__docId__": 5649, + "__docId__": 5668, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113304,7 +113863,7 @@ } }, { - "__docId__": 5650, + "__docId__": 5669, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113322,7 +113881,7 @@ } }, { - "__docId__": 5651, + "__docId__": 5670, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113340,7 +113899,7 @@ } }, { - "__docId__": 5652, + "__docId__": 5671, "kind": "member", "name": "_uSAOParams", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113358,7 +113917,7 @@ } }, { - "__docId__": 5653, + "__docId__": 5672, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113376,7 +113935,7 @@ } }, { - "__docId__": 5654, + "__docId__": 5673, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113393,7 +113952,7 @@ } }, { - "__docId__": 5655, + "__docId__": 5674, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113410,7 +113969,7 @@ } }, { - "__docId__": 5656, + "__docId__": 5675, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113428,7 +113987,7 @@ } }, { - "__docId__": 5657, + "__docId__": 5676, "kind": "member", "name": "_uTexturePerPolygonIdNormals", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113446,7 +114005,7 @@ } }, { - "__docId__": 5658, + "__docId__": 5677, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113464,7 +114023,7 @@ } }, { - "__docId__": 5659, + "__docId__": 5678, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113482,7 +114041,7 @@ } }, { - "__docId__": 5660, + "__docId__": 5679, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113500,7 +114059,7 @@ } }, { - "__docId__": 5661, + "__docId__": 5680, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113518,7 +114077,7 @@ } }, { - "__docId__": 5662, + "__docId__": 5681, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113542,7 +114101,7 @@ "return": null }, { - "__docId__": 5663, + "__docId__": 5682, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113563,7 +114122,7 @@ } }, { - "__docId__": 5664, + "__docId__": 5683, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113584,7 +114143,7 @@ } }, { - "__docId__": 5665, + "__docId__": 5684, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113605,7 +114164,7 @@ } }, { - "__docId__": 5666, + "__docId__": 5685, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113621,7 +114180,7 @@ "return": null }, { - "__docId__": 5668, + "__docId__": 5687, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js~DTXTrianglesColorRenderer", @@ -113637,7 +114196,7 @@ "return": null }, { - "__docId__": 5670, + "__docId__": 5689, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {math} from \"../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._allocate();\n this._hash = this._getHash();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = dataTextureLayer.model;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx, state);\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3b);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(camera.viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3c;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n } else {\n rtcViewMatrix = camera.viewMatrix;\n rtcCameraEye = camera.eye;\n }\n\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n\n frameCtx.drawElements++;\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"objectDecodeAndInstanceMatrix\");\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdNormals = \"uTexturePerPolygonIdNormals\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles dataTexture draw vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n\n src.push(\"out highp vec2 vHighPrecisionZW;\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n\n // get position\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n // get color\n src.push(\"uvec4 color = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n\n src.push(`if (color.a == 0u) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\");\n src.push(\"};\");\n\n // get normal\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n\n // when the geometry is not solid, if needed, flip the triangle winding\n src.push(\"if (solid != 1u) {\");\n src.push(\"if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\"vec3 uCameraEyeRtcInQuantizedSpace = (inverse(sceneModelMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n src.push(\"if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"viewNormal = -viewNormal;\");\n src.push(\"}\");\n src.push(\"} else {\");\n src.push(\"if (viewNormal.z < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"viewNormal = -viewNormal;\");\n src.push(\"}\");\n src.push(\"}\");\n src.push(\"}\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2.r;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vHighPrecisionZW = gl_Position.zw;\");\n src.push(\"}\");\n\n src.push(\"}\");\n\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Triangles dataTexture draw fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n src.push(\"in highp vec2 vHighPrecisionZW;\");\n src.push(\"out vec4 outColor;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\"}\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n //src.push(\" gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\");\n src.push(\" outColor = vec4(vec3(1.0 - fragCoordZ), 1.0); \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n", @@ -113648,7 +114207,7 @@ "lineNumber": 1 }, { - "__docId__": 5671, + "__docId__": 5690, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js", @@ -113669,7 +114228,7 @@ "ignore": true }, { - "__docId__": 5672, + "__docId__": 5691, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js", @@ -113690,7 +114249,7 @@ "ignore": true }, { - "__docId__": 5673, + "__docId__": 5692, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js", @@ -113711,7 +114270,7 @@ "ignore": true }, { - "__docId__": 5674, + "__docId__": 5693, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js", @@ -113732,7 +114291,7 @@ "ignore": true }, { - "__docId__": 5675, + "__docId__": 5694, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js", @@ -113753,7 +114312,7 @@ "ignore": true }, { - "__docId__": 5676, + "__docId__": 5695, "kind": "class", "name": "DTXTrianglesDepthRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js", @@ -113769,7 +114328,7 @@ "ignore": true }, { - "__docId__": 5677, + "__docId__": 5696, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113783,7 +114342,7 @@ "undocument": true }, { - "__docId__": 5678, + "__docId__": 5697, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113801,7 +114360,7 @@ } }, { - "__docId__": 5679, + "__docId__": 5698, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113819,7 +114378,7 @@ } }, { - "__docId__": 5680, + "__docId__": 5699, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113839,7 +114398,7 @@ } }, { - "__docId__": 5681, + "__docId__": 5700, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113860,7 +114419,7 @@ } }, { - "__docId__": 5682, + "__docId__": 5701, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113895,7 +114454,7 @@ "return": null }, { - "__docId__": 5683, + "__docId__": 5702, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113912,7 +114471,7 @@ "return": null }, { - "__docId__": 5684, + "__docId__": 5703, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113930,7 +114489,7 @@ } }, { - "__docId__": 5685, + "__docId__": 5704, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113947,7 +114506,7 @@ } }, { - "__docId__": 5686, + "__docId__": 5705, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113965,7 +114524,7 @@ } }, { - "__docId__": 5687, + "__docId__": 5706, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -113983,7 +114542,7 @@ } }, { - "__docId__": 5688, + "__docId__": 5707, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114001,7 +114560,7 @@ } }, { - "__docId__": 5689, + "__docId__": 5708, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114019,7 +114578,7 @@ } }, { - "__docId__": 5690, + "__docId__": 5709, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114037,7 +114596,7 @@ } }, { - "__docId__": 5691, + "__docId__": 5710, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114055,7 +114614,7 @@ } }, { - "__docId__": 5692, + "__docId__": 5711, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114073,7 +114632,7 @@ } }, { - "__docId__": 5693, + "__docId__": 5712, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114090,7 +114649,7 @@ } }, { - "__docId__": 5694, + "__docId__": 5713, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114107,7 +114666,7 @@ } }, { - "__docId__": 5695, + "__docId__": 5714, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114125,7 +114684,7 @@ } }, { - "__docId__": 5696, + "__docId__": 5715, "kind": "member", "name": "_uTexturePerPolygonIdNormals", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114143,7 +114702,7 @@ } }, { - "__docId__": 5697, + "__docId__": 5716, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114161,7 +114720,7 @@ } }, { - "__docId__": 5698, + "__docId__": 5717, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114179,7 +114738,7 @@ } }, { - "__docId__": 5699, + "__docId__": 5718, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114197,7 +114756,7 @@ } }, { - "__docId__": 5700, + "__docId__": 5719, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114215,7 +114774,7 @@ } }, { - "__docId__": 5701, + "__docId__": 5720, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114239,7 +114798,7 @@ "return": null }, { - "__docId__": 5702, + "__docId__": 5721, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114260,7 +114819,7 @@ } }, { - "__docId__": 5703, + "__docId__": 5722, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114281,7 +114840,7 @@ } }, { - "__docId__": 5704, + "__docId__": 5723, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114302,7 +114861,7 @@ } }, { - "__docId__": 5705, + "__docId__": 5724, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114318,7 +114877,7 @@ "return": null }, { - "__docId__": 5707, + "__docId__": 5726, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js~DTXTrianglesDepthRenderer", @@ -114334,7 +114893,7 @@ "return": null }, { - "__docId__": 5709, + "__docId__": 5728, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesEdgesColorRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const viewMatrix = camera.viewMatrix;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3b);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n } else {\n rtcViewMatrix = viewMatrix;\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numEdgeIndices8Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 8 // 8 bits edge indices\n );\n\n gl.drawArrays(gl.LINES, 0, state.numEdgeIndices8Bits);\n }\n\n if (state.numEdgeIndices16Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 16 // 16 bits edge indices\n );\n\n gl.drawArrays(gl.LINES, 0, state.numEdgeIndices16Bits);\n }\n\n if (state.numEdgeIndices32Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 32 // 32 bits edge indices\n );\n\n gl.drawArrays(gl.LINES, 0, state.numEdgeIndices32Bits);\n }\n\n frameCtx.drawElements++;\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n //this._aOffset = program.getAttribute(\"offset\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdEdgeIndices = \"uTexturePerPolygonIdEdgeIndices\";\n this._uTexturePerEdgeIdPortionIds = \"uTexturePerEdgeIdPortionIds\";\n this._uTexturePerObjectMatrix = \"uTexturePerObjectMatrix\";\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n\n program.bind();\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// TrianglesDataTextureEdgesColorRenderer\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n // src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform highp sampler2D uObjectPerObjectOffsets;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerEdgeIdPortionIds;\");\n\n // src.push(\"uniform vec4 color;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int edgeIndex = gl_VertexID / 2;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (edgeIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (edgeIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerEdgeIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT\n\n src.push(`if (int(flags.z) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedEdgeIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+6, objectIndexCoords.y), 0));\");\n\n src.push(\"int edgeIndexBaseOffset = (packedEdgeIndexBaseOffset.r << 24) + (packedEdgeIndexBaseOffset.g << 16) + (packedEdgeIndexBaseOffset.b << 8) + packedEdgeIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (edgeIndex - edgeIndexBaseOffset) & 4095;\")\n src.push(\"int v_index = (edgeIndex - edgeIndexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdEdgeIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"int indexPositionH = uniqueVertexIndexes[gl_VertexID % 2] & 4095;\")\n src.push(\"int indexPositionV = uniqueVertexIndexes[gl_VertexID % 2] >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // get position\n src.push(\"vec3 position = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH, indexPositionV), 0));\")\n\n // get color\n src.push(\"uvec4 color = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n\n src.push(`if (color.a == 0u) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\");\n src.push(\"};\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2.r;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vec4 rgb = vec4(color.rgba);\");\n //src.push(\"vColor = vec4(float(color.r-100.0) / 255.0, float(color.g-100.0) / 255.0, float(color.b-100.0) / 255.0, float(color.a) / 255.0);\");\n src.push(\"vColor = vec4(float(rgb.r*0.5) / 255.0, float(rgb.g*0.5) / 255.0, float(rgb.b*0.5) / 255.0, float(rgb.a) / 255.0);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// TrianglesDataTextureEdgesColorRenderer\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -114345,7 +114904,7 @@ "lineNumber": 1 }, { - "__docId__": 5710, + "__docId__": 5729, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js", @@ -114366,7 +114925,7 @@ "ignore": true }, { - "__docId__": 5711, + "__docId__": 5730, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js", @@ -114387,7 +114946,7 @@ "ignore": true }, { - "__docId__": 5712, + "__docId__": 5731, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js", @@ -114408,7 +114967,7 @@ "ignore": true }, { - "__docId__": 5713, + "__docId__": 5732, "kind": "class", "name": "DTXTrianglesEdgesColorRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js", @@ -114424,7 +114983,7 @@ "ignore": true }, { - "__docId__": 5714, + "__docId__": 5733, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114438,7 +114997,7 @@ "undocument": true }, { - "__docId__": 5715, + "__docId__": 5734, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114456,7 +115015,7 @@ } }, { - "__docId__": 5716, + "__docId__": 5735, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114474,7 +115033,7 @@ } }, { - "__docId__": 5717, + "__docId__": 5736, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114494,7 +115053,7 @@ } }, { - "__docId__": 5718, + "__docId__": 5737, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114515,7 +115074,7 @@ } }, { - "__docId__": 5719, + "__docId__": 5738, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114550,7 +115109,7 @@ "return": null }, { - "__docId__": 5720, + "__docId__": 5739, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114567,7 +115126,7 @@ "return": null }, { - "__docId__": 5721, + "__docId__": 5740, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114585,7 +115144,7 @@ } }, { - "__docId__": 5722, + "__docId__": 5741, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114602,7 +115161,7 @@ } }, { - "__docId__": 5723, + "__docId__": 5742, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114620,7 +115179,7 @@ } }, { - "__docId__": 5724, + "__docId__": 5743, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114638,7 +115197,7 @@ } }, { - "__docId__": 5725, + "__docId__": 5744, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114656,7 +115215,7 @@ } }, { - "__docId__": 5726, + "__docId__": 5745, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114674,7 +115233,7 @@ } }, { - "__docId__": 5727, + "__docId__": 5746, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114692,7 +115251,7 @@ } }, { - "__docId__": 5728, + "__docId__": 5747, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114710,7 +115269,7 @@ } }, { - "__docId__": 5729, + "__docId__": 5748, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114727,7 +115286,7 @@ } }, { - "__docId__": 5730, + "__docId__": 5749, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114744,7 +115303,7 @@ } }, { - "__docId__": 5731, + "__docId__": 5750, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114762,7 +115321,7 @@ } }, { - "__docId__": 5732, + "__docId__": 5751, "kind": "member", "name": "_uTexturePerPolygonIdEdgeIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114780,7 +115339,7 @@ } }, { - "__docId__": 5733, + "__docId__": 5752, "kind": "member", "name": "_uTexturePerEdgeIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114798,7 +115357,7 @@ } }, { - "__docId__": 5734, + "__docId__": 5753, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114816,7 +115375,7 @@ } }, { - "__docId__": 5735, + "__docId__": 5754, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114833,7 +115392,7 @@ "return": null }, { - "__docId__": 5736, + "__docId__": 5755, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114854,7 +115413,7 @@ } }, { - "__docId__": 5737, + "__docId__": 5756, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114875,7 +115434,7 @@ } }, { - "__docId__": 5738, + "__docId__": 5757, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114896,7 +115455,7 @@ } }, { - "__docId__": 5739, + "__docId__": 5758, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114912,7 +115471,7 @@ "return": null }, { - "__docId__": 5741, + "__docId__": 5760, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js~DTXTrianglesEdgesColorRenderer", @@ -114928,7 +115487,7 @@ "return": null }, { - "__docId__": 5743, + "__docId__": 5762, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\nimport {RENDER_PASSES} from \"../../../RENDER_PASSES.js\";\n\nconst defaultColor = new Float32Array([0, 0, 0, 1]);\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesEdgesRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const viewMatrix = camera.viewMatrix;\n\n if (!this._program) {\n this._allocate(dataTextureLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3b);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n } else {\n rtcViewMatrix = viewMatrix;\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n\n if (renderPass === RENDER_PASSES.EDGES_XRAYED) {\n const material = scene.xrayMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else if (renderPass === RENDER_PASSES.EDGES_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else if (renderPass === RENDER_PASSES.EDGES_SELECTED) {\n const material = scene.selectedMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, defaultColor);\n }\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numEdgeIndices8Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 8 // 8 bits edge indices\n );\n\n gl.drawArrays(gl.LINES, 0, state.numEdgeIndices8Bits);\n }\n\n if (state.numEdgeIndices16Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 16 // 16 bits edge indices\n );\n\n gl.drawArrays(gl.LINES, 0, state.numEdgeIndices16Bits);\n }\n\n if (state.numEdgeIndices32Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 32 // 32 bits edge indices\n );\n\n gl.drawArrays(gl.LINES, 0, state.numEdgeIndices32Bits);\n }\n\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uColor = program.getLocation(\"color\");\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdEdgeIndices = \"uTexturePerPolygonIdEdgeIndices\";\n this._uTexturePerEdgeIdPortionIds = \"uTexturePerEdgeIdPortionIds\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n }\n\n _bindProgram() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n program.bind();\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// DTXTrianglesEdgesRenderer vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n // if (scene.entityOffsetsEnabled) {\n // src.push(\"in vec3 offset;\");\n // }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerEdgeIdPortionIds;\");\n\n src.push(\"uniform vec4 color;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int edgeIndex = gl_VertexID / 2;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (edgeIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (edgeIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerEdgeIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`if (int(flags.z) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedEdgeIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+6, objectIndexCoords.y), 0));\");\n\n src.push(\"int edgeIndexBaseOffset = (packedEdgeIndexBaseOffset.r << 24) + (packedEdgeIndexBaseOffset.g << 16) + (packedEdgeIndexBaseOffset.b << 8) + packedEdgeIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (edgeIndex - edgeIndexBaseOffset) & 4095;\")\n src.push(\"int v_index = (edgeIndex - edgeIndexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdEdgeIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"int indexPositionH = uniqueVertexIndexes[gl_VertexID % 2] & 4095;\")\n src.push(\"int indexPositionV = uniqueVertexIndexes[gl_VertexID % 2] >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // get position\n src.push(\"vec3 position = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH, indexPositionV), 0));\")\n\n src.push(\"mat4 matrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2.r;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vColor = vec4(color.r, color.g, color.b, color.a);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// DTXTrianglesEdgesRenderer fragment shader\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -114939,7 +115498,7 @@ "lineNumber": 1 }, { - "__docId__": 5744, + "__docId__": 5763, "kind": "variable", "name": "defaultColor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js", @@ -114960,7 +115519,7 @@ "ignore": true }, { - "__docId__": 5745, + "__docId__": 5764, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js", @@ -114981,7 +115540,7 @@ "ignore": true }, { - "__docId__": 5746, + "__docId__": 5765, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js", @@ -115002,7 +115561,7 @@ "ignore": true }, { - "__docId__": 5747, + "__docId__": 5766, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js", @@ -115023,7 +115582,7 @@ "ignore": true }, { - "__docId__": 5748, + "__docId__": 5767, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js", @@ -115044,7 +115603,7 @@ "ignore": true }, { - "__docId__": 5749, + "__docId__": 5768, "kind": "class", "name": "DTXTrianglesEdgesRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js", @@ -115060,7 +115619,7 @@ "ignore": true }, { - "__docId__": 5750, + "__docId__": 5769, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115074,7 +115633,7 @@ "undocument": true }, { - "__docId__": 5751, + "__docId__": 5770, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115092,7 +115651,7 @@ } }, { - "__docId__": 5752, + "__docId__": 5771, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115110,7 +115669,7 @@ } }, { - "__docId__": 5753, + "__docId__": 5772, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115130,7 +115689,7 @@ } }, { - "__docId__": 5754, + "__docId__": 5773, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115151,7 +115710,7 @@ } }, { - "__docId__": 5755, + "__docId__": 5774, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115186,7 +115745,7 @@ "return": null }, { - "__docId__": 5756, + "__docId__": 5775, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115203,7 +115762,7 @@ "return": null }, { - "__docId__": 5757, + "__docId__": 5776, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115221,7 +115780,7 @@ } }, { - "__docId__": 5758, + "__docId__": 5777, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115238,7 +115797,7 @@ } }, { - "__docId__": 5759, + "__docId__": 5778, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115256,7 +115815,7 @@ } }, { - "__docId__": 5760, + "__docId__": 5779, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115274,7 +115833,7 @@ } }, { - "__docId__": 5761, + "__docId__": 5780, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115292,7 +115851,7 @@ } }, { - "__docId__": 5762, + "__docId__": 5781, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115310,7 +115869,7 @@ } }, { - "__docId__": 5763, + "__docId__": 5782, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115328,7 +115887,7 @@ } }, { - "__docId__": 5764, + "__docId__": 5783, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115346,7 +115905,7 @@ } }, { - "__docId__": 5765, + "__docId__": 5784, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115364,7 +115923,7 @@ } }, { - "__docId__": 5766, + "__docId__": 5785, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115382,7 +115941,7 @@ } }, { - "__docId__": 5767, + "__docId__": 5786, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115399,7 +115958,7 @@ } }, { - "__docId__": 5768, + "__docId__": 5787, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115416,7 +115975,7 @@ } }, { - "__docId__": 5769, + "__docId__": 5788, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115434,7 +115993,7 @@ } }, { - "__docId__": 5770, + "__docId__": 5789, "kind": "member", "name": "_uTexturePerPolygonIdEdgeIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115452,7 +116011,7 @@ } }, { - "__docId__": 5771, + "__docId__": 5790, "kind": "member", "name": "_uTexturePerEdgeIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115470,7 +116029,7 @@ } }, { - "__docId__": 5772, + "__docId__": 5791, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115488,7 +116047,7 @@ } }, { - "__docId__": 5773, + "__docId__": 5792, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115505,7 +116064,7 @@ "return": null }, { - "__docId__": 5774, + "__docId__": 5793, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115526,7 +116085,7 @@ } }, { - "__docId__": 5775, + "__docId__": 5794, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115547,7 +116106,7 @@ } }, { - "__docId__": 5776, + "__docId__": 5795, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115568,7 +116127,7 @@ } }, { - "__docId__": 5777, + "__docId__": 5796, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115584,7 +116143,7 @@ "return": null }, { - "__docId__": 5779, + "__docId__": 5798, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js~DTXTrianglesEdgesRenderer", @@ -115600,7 +116159,7 @@ "return": null }, { - "__docId__": 5781, + "__docId__": 5800, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\nimport {WEBGL_INFO} from \"../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesNormalsRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const viewMatrix = camera.viewMatrix;\n\n if (!this._program) {\n this._allocate(dataTextureLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(dataTextureLayer);\n }\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = tempVec3b;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3c;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, dataTextureLayer._state.objectDecodeAndInstanceMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n this._aColor.bindArrayBuffer(state.colorsBuf);// Needed for masking out transparent entities using alpha channel\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"objectDecodeAndInstanceMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n if (this._aFlags2) { // Won't be in shader when not clipping\n this._aFlags2 = program.getAttribute(\"flags2\");\n }\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n this._program.bind();\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"// Batched geometry normals vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec3 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 objectDecodeAndInstanceMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"out float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out vec4 vFlags2;\");\n }\n src.push(\"out vec3 vViewNormal;\");\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n src.push(\" vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\" vViewNormal = viewNormal;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = (scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0);\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry normals fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in vec4 vFlags2;\");\n for (let i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -115611,7 +116170,7 @@ "lineNumber": 1 }, { - "__docId__": 5782, + "__docId__": 5801, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js", @@ -115632,7 +116191,7 @@ "ignore": true }, { - "__docId__": 5783, + "__docId__": 5802, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js", @@ -115653,7 +116212,7 @@ "ignore": true }, { - "__docId__": 5784, + "__docId__": 5803, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js", @@ -115674,7 +116233,7 @@ "ignore": true }, { - "__docId__": 5785, + "__docId__": 5804, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js", @@ -115695,7 +116254,7 @@ "ignore": true }, { - "__docId__": 5786, + "__docId__": 5805, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js", @@ -115716,7 +116275,7 @@ "ignore": true }, { - "__docId__": 5787, + "__docId__": 5806, "kind": "class", "name": "DTXTrianglesNormalsRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js", @@ -115732,7 +116291,7 @@ "ignore": true }, { - "__docId__": 5788, + "__docId__": 5807, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115746,7 +116305,7 @@ "undocument": true }, { - "__docId__": 5789, + "__docId__": 5808, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115764,7 +116323,7 @@ } }, { - "__docId__": 5790, + "__docId__": 5809, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115782,7 +116341,7 @@ } }, { - "__docId__": 5791, + "__docId__": 5810, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115802,7 +116361,7 @@ } }, { - "__docId__": 5792, + "__docId__": 5811, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115823,7 +116382,7 @@ } }, { - "__docId__": 5793, + "__docId__": 5812, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115858,7 +116417,7 @@ "return": null }, { - "__docId__": 5794, + "__docId__": 5813, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115875,7 +116434,7 @@ "return": null }, { - "__docId__": 5795, + "__docId__": 5814, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115893,7 +116452,7 @@ } }, { - "__docId__": 5796, + "__docId__": 5815, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115910,7 +116469,7 @@ } }, { - "__docId__": 5797, + "__docId__": 5816, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115928,7 +116487,7 @@ } }, { - "__docId__": 5798, + "__docId__": 5817, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115946,7 +116505,7 @@ } }, { - "__docId__": 5799, + "__docId__": 5818, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115964,7 +116523,7 @@ } }, { - "__docId__": 5800, + "__docId__": 5819, "kind": "member", "name": "_uWorldNormalMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -115982,7 +116541,7 @@ } }, { - "__docId__": 5801, + "__docId__": 5820, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116000,7 +116559,7 @@ } }, { - "__docId__": 5802, + "__docId__": 5821, "kind": "member", "name": "_uViewNormalMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116018,7 +116577,7 @@ } }, { - "__docId__": 5803, + "__docId__": 5822, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116036,7 +116595,7 @@ } }, { - "__docId__": 5804, + "__docId__": 5823, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116054,7 +116613,7 @@ } }, { - "__docId__": 5805, + "__docId__": 5824, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116072,7 +116631,7 @@ } }, { - "__docId__": 5806, + "__docId__": 5825, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116090,7 +116649,7 @@ } }, { - "__docId__": 5807, + "__docId__": 5826, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116108,7 +116667,7 @@ } }, { - "__docId__": 5808, + "__docId__": 5827, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116126,7 +116685,7 @@ } }, { - "__docId__": 5809, + "__docId__": 5828, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116144,7 +116703,7 @@ } }, { - "__docId__": 5810, + "__docId__": 5829, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116162,7 +116721,7 @@ } }, { - "__docId__": 5811, + "__docId__": 5830, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116180,7 +116739,7 @@ } }, { - "__docId__": 5812, + "__docId__": 5831, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116197,7 +116756,7 @@ "return": null }, { - "__docId__": 5813, + "__docId__": 5832, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116218,7 +116777,7 @@ } }, { - "__docId__": 5814, + "__docId__": 5833, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116239,7 +116798,7 @@ } }, { - "__docId__": 5815, + "__docId__": 5834, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116260,7 +116819,7 @@ } }, { - "__docId__": 5816, + "__docId__": 5835, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116276,7 +116835,7 @@ "return": null }, { - "__docId__": 5818, + "__docId__": 5837, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js~DTXTrianglesNormalsRenderer", @@ -116292,7 +116851,7 @@ "return": null }, { - "__docId__": 5820, + "__docId__": 5839, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\n// Logarithmic depth buffer involves an accuracy tradeoff, sacrificing\n// accuracy at close range to improve accuracy at long range. This can\n// mess up accuracy for occlusion tests, so we'll disable for now.\n\nconst ENABLE_LOG_DEPTH_BUF = false;\n\n/**\n * @private\n */\nexport class DTXTrianglesOcclusionRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (!this._program) {\n this._allocate(dataTextureLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3a;\n if (origin) {\n const rotatedOrigin = tempVec3b;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3c;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project objectInstanceMatrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uWorldMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdNormals = \"uTexturePerPolygonIdNormals\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// TrianglesDataTextureOcclusionRenderer vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (ENABLE_LOG_DEPTH_BUF &&scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n // Only opaque objects can be occluders\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n\n // get position\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n // get color\n src.push(\"uvec4 color = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n\n src.push(`if (color.a == 0u) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\");\n src.push(\"};\");\n\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n\n // when the geometry is not solid, if needed, flip the triangle winding\n src.push(\"if (solid != 1u) {\");\n src.push(\" if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\" vec3 uCameraEyeRtcInQuantizedSpace = (inverse(sceneModelMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n src.push(\" if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\" position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\" }\");\n src.push(\" } else {\");\n src.push(\" vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n src.push(\" if (viewNormal.z < 0.0) {\");\n src.push(\" position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\" }\");\n src.push(\" }\");\n src.push(\"}\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2.r;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// TrianglesDataTextureColorRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -116303,7 +116862,7 @@ "lineNumber": 1 }, { - "__docId__": 5821, + "__docId__": 5840, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js", @@ -116324,7 +116883,7 @@ "ignore": true }, { - "__docId__": 5822, + "__docId__": 5841, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js", @@ -116345,7 +116904,7 @@ "ignore": true }, { - "__docId__": 5823, + "__docId__": 5842, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js", @@ -116366,7 +116925,7 @@ "ignore": true }, { - "__docId__": 5824, + "__docId__": 5843, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js", @@ -116387,7 +116946,7 @@ "ignore": true }, { - "__docId__": 5825, + "__docId__": 5844, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js", @@ -116408,7 +116967,7 @@ "ignore": true }, { - "__docId__": 5826, + "__docId__": 5845, "kind": "variable", "name": "ENABLE_LOG_DEPTH_BUF", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js", @@ -116429,7 +116988,7 @@ "ignore": true }, { - "__docId__": 5827, + "__docId__": 5846, "kind": "class", "name": "DTXTrianglesOcclusionRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js", @@ -116445,7 +117004,7 @@ "ignore": true }, { - "__docId__": 5828, + "__docId__": 5847, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116459,7 +117018,7 @@ "undocument": true }, { - "__docId__": 5829, + "__docId__": 5848, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116477,7 +117036,7 @@ } }, { - "__docId__": 5830, + "__docId__": 5849, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116495,7 +117054,7 @@ } }, { - "__docId__": 5831, + "__docId__": 5850, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116515,7 +117074,7 @@ } }, { - "__docId__": 5832, + "__docId__": 5851, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116536,7 +117095,7 @@ } }, { - "__docId__": 5833, + "__docId__": 5852, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116571,7 +117130,7 @@ "return": null }, { - "__docId__": 5834, + "__docId__": 5853, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116588,7 +117147,7 @@ "return": null }, { - "__docId__": 5835, + "__docId__": 5854, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116606,7 +117165,7 @@ } }, { - "__docId__": 5836, + "__docId__": 5855, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116623,7 +117182,7 @@ } }, { - "__docId__": 5837, + "__docId__": 5856, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116641,7 +117200,7 @@ } }, { - "__docId__": 5838, + "__docId__": 5857, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116659,7 +117218,7 @@ } }, { - "__docId__": 5839, + "__docId__": 5858, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116677,7 +117236,7 @@ } }, { - "__docId__": 5840, + "__docId__": 5859, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116695,7 +117254,7 @@ } }, { - "__docId__": 5841, + "__docId__": 5860, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116713,7 +117272,7 @@ } }, { - "__docId__": 5842, + "__docId__": 5861, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116731,7 +117290,7 @@ } }, { - "__docId__": 5843, + "__docId__": 5862, "kind": "member", "name": "_uPickZNear", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116749,7 +117308,7 @@ } }, { - "__docId__": 5844, + "__docId__": 5863, "kind": "member", "name": "_uPickZFar", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116767,7 +117326,7 @@ } }, { - "__docId__": 5845, + "__docId__": 5864, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116785,7 +117344,7 @@ } }, { - "__docId__": 5846, + "__docId__": 5865, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116802,7 +117361,7 @@ } }, { - "__docId__": 5847, + "__docId__": 5866, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116819,7 +117378,7 @@ } }, { - "__docId__": 5848, + "__docId__": 5867, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116837,7 +117396,7 @@ } }, { - "__docId__": 5849, + "__docId__": 5868, "kind": "member", "name": "_uTexturePerPolygonIdNormals", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116855,7 +117414,7 @@ } }, { - "__docId__": 5850, + "__docId__": 5869, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116873,7 +117432,7 @@ } }, { - "__docId__": 5851, + "__docId__": 5870, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116891,7 +117450,7 @@ } }, { - "__docId__": 5852, + "__docId__": 5871, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116909,7 +117468,7 @@ } }, { - "__docId__": 5853, + "__docId__": 5872, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116927,7 +117486,7 @@ } }, { - "__docId__": 5854, + "__docId__": 5873, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116944,7 +117503,7 @@ "return": null }, { - "__docId__": 5855, + "__docId__": 5874, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116965,7 +117524,7 @@ } }, { - "__docId__": 5856, + "__docId__": 5875, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -116986,7 +117545,7 @@ } }, { - "__docId__": 5857, + "__docId__": 5876, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -117007,7 +117566,7 @@ } }, { - "__docId__": 5858, + "__docId__": 5877, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -117023,7 +117582,7 @@ "return": null }, { - "__docId__": 5860, + "__docId__": 5879, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js~DTXTrianglesOcclusionRenderer", @@ -117039,7 +117598,7 @@ "return": null }, { - "__docId__": 5862, + "__docId__": 5881, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesPickDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n }\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (!this._program) {\n this._allocate();\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3a;\n if (origin) {\n const rotatedOrigin = tempVec3b;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3c;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);\n gl.uniform2f(this._uDrawingBufferSize, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPickClipPos = program.getLocation(\"pickClipPos\");\n this._uDrawingBufferSize = program.getLocation(\"drawingBufferSize\");\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdNormals = \"uTexturePerPolygonIdNormals\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles dataTexture pick depth vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform bool pickInvisible;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"uniform vec2 pickClipPos;\");\n src.push(\"uniform vec2 drawingBufferSize;\");\n\n src.push(\"vec4 remapClipPos(vec4 clipPos) {\");\n src.push(\" clipPos.xy /= clipPos.w;\")\n src.push(` clipPos.xy = (clipPos.xy - pickClipPos) * drawingBufferSize;`);\n src.push(\" clipPos.xy *= clipPos.w;\")\n src.push(\" return clipPos;\")\n src.push(\"}\");\n\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n\n // get position\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n // get color\n src.push(\"uvec4 color = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n\n src.push(`if (color.a == 0u) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\");\n src.push(\"};\");\n\n // get normal\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n\n // when the geometry is not solid, if needed, flip the triangle winding\n src.push(\"if (solid != 1u) {\");\n src.push(\"if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\"vec3 uCameraEyeRtcInQuantizedSpace = (inverse(sceneModelMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n src.push(\"if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"}\");\n src.push(\"} else {\");\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n src.push(\"if (viewNormal.z < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"}\");\n src.push(\"}\");\n src.push(\"}\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2.r;\");\n }\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Triangles dataTexture pick depth fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n\n src.push(\"out vec4 outPackedDepth;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" outPackedDepth = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n", @@ -117050,7 +117609,7 @@ "lineNumber": 1 }, { - "__docId__": 5863, + "__docId__": 5882, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js", @@ -117071,7 +117630,7 @@ "ignore": true }, { - "__docId__": 5864, + "__docId__": 5883, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js", @@ -117092,7 +117651,7 @@ "ignore": true }, { - "__docId__": 5865, + "__docId__": 5884, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js", @@ -117113,7 +117672,7 @@ "ignore": true }, { - "__docId__": 5866, + "__docId__": 5885, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js", @@ -117134,7 +117693,7 @@ "ignore": true }, { - "__docId__": 5867, + "__docId__": 5886, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js", @@ -117155,7 +117714,7 @@ "ignore": true }, { - "__docId__": 5868, + "__docId__": 5887, "kind": "class", "name": "DTXTrianglesPickDepthRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js", @@ -117171,7 +117730,7 @@ "ignore": true }, { - "__docId__": 5869, + "__docId__": 5888, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117185,7 +117744,7 @@ "undocument": true }, { - "__docId__": 5870, + "__docId__": 5889, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117203,7 +117762,7 @@ } }, { - "__docId__": 5871, + "__docId__": 5890, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117221,7 +117780,7 @@ } }, { - "__docId__": 5872, + "__docId__": 5891, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117241,7 +117800,7 @@ } }, { - "__docId__": 5873, + "__docId__": 5892, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117262,7 +117821,7 @@ } }, { - "__docId__": 5874, + "__docId__": 5893, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117297,7 +117856,7 @@ "return": null }, { - "__docId__": 5875, + "__docId__": 5894, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117314,7 +117873,7 @@ "return": null }, { - "__docId__": 5876, + "__docId__": 5895, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117332,7 +117891,7 @@ } }, { - "__docId__": 5877, + "__docId__": 5896, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117349,7 +117908,7 @@ } }, { - "__docId__": 5878, + "__docId__": 5897, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117367,7 +117926,7 @@ } }, { - "__docId__": 5879, + "__docId__": 5898, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117385,7 +117944,7 @@ } }, { - "__docId__": 5880, + "__docId__": 5899, "kind": "member", "name": "_uPickClipPos", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117403,7 +117962,7 @@ } }, { - "__docId__": 5881, + "__docId__": 5900, "kind": "member", "name": "_uDrawingBufferSize", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117421,7 +117980,7 @@ } }, { - "__docId__": 5882, + "__docId__": 5901, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117439,7 +117998,7 @@ } }, { - "__docId__": 5883, + "__docId__": 5902, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117457,7 +118016,7 @@ } }, { - "__docId__": 5884, + "__docId__": 5903, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117475,7 +118034,7 @@ } }, { - "__docId__": 5885, + "__docId__": 5904, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117493,7 +118052,7 @@ } }, { - "__docId__": 5886, + "__docId__": 5905, "kind": "member", "name": "_uPickZNear", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117511,7 +118070,7 @@ } }, { - "__docId__": 5887, + "__docId__": 5906, "kind": "member", "name": "_uPickZFar", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117529,7 +118088,7 @@ } }, { - "__docId__": 5888, + "__docId__": 5907, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117547,7 +118106,7 @@ } }, { - "__docId__": 5889, + "__docId__": 5908, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117564,7 +118123,7 @@ } }, { - "__docId__": 5890, + "__docId__": 5909, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117581,7 +118140,7 @@ } }, { - "__docId__": 5891, + "__docId__": 5910, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117599,7 +118158,7 @@ } }, { - "__docId__": 5892, + "__docId__": 5911, "kind": "member", "name": "_uTexturePerPolygonIdNormals", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117617,7 +118176,7 @@ } }, { - "__docId__": 5893, + "__docId__": 5912, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117635,7 +118194,7 @@ } }, { - "__docId__": 5894, + "__docId__": 5913, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117653,7 +118212,7 @@ } }, { - "__docId__": 5895, + "__docId__": 5914, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117671,7 +118230,7 @@ } }, { - "__docId__": 5896, + "__docId__": 5915, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117689,7 +118248,7 @@ } }, { - "__docId__": 5897, + "__docId__": 5916, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117706,7 +118265,7 @@ "return": null }, { - "__docId__": 5898, + "__docId__": 5917, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117727,7 +118286,7 @@ } }, { - "__docId__": 5899, + "__docId__": 5918, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117748,7 +118307,7 @@ } }, { - "__docId__": 5900, + "__docId__": 5919, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117769,7 +118328,7 @@ } }, { - "__docId__": 5901, + "__docId__": 5920, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117785,7 +118344,7 @@ "return": null }, { - "__docId__": 5903, + "__docId__": 5922, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js~DTXTrianglesPickDepthRenderer", @@ -117801,7 +118360,7 @@ "return": null }, { - "__docId__": 5905, + "__docId__": 5924, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesPickMeshRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n }\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n if (!this._program) {\n this._allocate(dataTextureLayer);\n if (this.errors) {\n return;\n }\n }\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n let rtcViewMatrix;\n let rtcCameraEye;\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3b);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(camera.viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3c;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n } else {\n rtcViewMatrix = camera.viewMatrix;\n rtcCameraEye = camera.eye;\n }\n gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);\n gl.uniform2f(this._uDrawingBufferSize, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform1i(this._uRenderPass, renderPass);\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPickClipPos = program.getLocation(\"pickClipPos\");\n this._uDrawingBufferSize = program.getLocation(\"drawingBufferSize\");\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdNormals = \"uTexturePerPolygonIdNormals\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix = \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram(frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program.bind();\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry picking vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform bool pickInvisible;\");\n // src.push(\"uniform sampler2D uOcclusionTexture;\"); \n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"uniform vec2 pickClipPos;\");\n src.push(\"uniform vec2 drawingBufferSize;\");\n\n src.push(\"vec4 remapClipPos(vec4 clipPos) {\");\n src.push(\" clipPos.xy /= clipPos.w;\")\n src.push(` clipPos.xy = (clipPos.xy - pickClipPos) * drawingBufferSize;`);\n src.push(\" clipPos.xy *= clipPos.w;\")\n src.push(\" return clipPos;\")\n src.push(\"}\");\n\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"smooth out vec4 vWorldPosition;\");\n src.push(\"flat out uvec4 vFlags2;\");\n }\n\n src.push(\"out vec4 vPickColor;\");\n\n src.push(\"void main(void) {\");\n\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n\n // get position\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n // get color\n src.push(\"uvec4 color = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n\n // get pick-color\n src.push(\"vPickColor = vec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+1, objectIndexCoords.y), 0)) / 255.0;\");\n\n // get normal\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n\n // when the geometry is not solid, if needed, flip the triangle winding\n src.push(\"if (solid != 1u) {\");\n src.push(\"if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\"vec3 uCameraEyeRtcInQuantizedSpace = (inverse(sceneModelMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n src.push(\"if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"}\");\n src.push(\"} else {\");\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n src.push(\"if (viewNormal.z < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"}\");\n src.push(\"}\");\n src.push(\"}\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Batched geometry picking fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uvec4 vFlags2;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vPickColor;\");\n src.push(\"out vec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n //src.push(\" gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outPickColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -117812,7 +118371,7 @@ "lineNumber": 1 }, { - "__docId__": 5906, + "__docId__": 5925, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js", @@ -117833,7 +118392,7 @@ "ignore": true }, { - "__docId__": 5907, + "__docId__": 5926, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js", @@ -117854,7 +118413,7 @@ "ignore": true }, { - "__docId__": 5908, + "__docId__": 5927, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js", @@ -117875,7 +118434,7 @@ "ignore": true }, { - "__docId__": 5909, + "__docId__": 5928, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js", @@ -117896,7 +118455,7 @@ "ignore": true }, { - "__docId__": 5910, + "__docId__": 5929, "kind": "class", "name": "DTXTrianglesPickMeshRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js", @@ -117912,7 +118471,7 @@ "ignore": true }, { - "__docId__": 5911, + "__docId__": 5930, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -117926,7 +118485,7 @@ "undocument": true }, { - "__docId__": 5912, + "__docId__": 5931, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -117944,7 +118503,7 @@ } }, { - "__docId__": 5913, + "__docId__": 5932, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -117962,7 +118521,7 @@ } }, { - "__docId__": 5914, + "__docId__": 5933, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -117982,7 +118541,7 @@ } }, { - "__docId__": 5915, + "__docId__": 5934, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118003,7 +118562,7 @@ } }, { - "__docId__": 5916, + "__docId__": 5935, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118038,7 +118597,7 @@ "return": null }, { - "__docId__": 5917, + "__docId__": 5936, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118055,7 +118614,7 @@ "return": null }, { - "__docId__": 5918, + "__docId__": 5937, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118073,7 +118632,7 @@ } }, { - "__docId__": 5919, + "__docId__": 5938, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118090,7 +118649,7 @@ } }, { - "__docId__": 5920, + "__docId__": 5939, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118108,7 +118667,7 @@ } }, { - "__docId__": 5921, + "__docId__": 5940, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118126,7 +118685,7 @@ } }, { - "__docId__": 5922, + "__docId__": 5941, "kind": "member", "name": "_uPickClipPos", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118144,7 +118703,7 @@ } }, { - "__docId__": 5923, + "__docId__": 5942, "kind": "member", "name": "_uDrawingBufferSize", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118162,7 +118721,7 @@ } }, { - "__docId__": 5924, + "__docId__": 5943, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118180,7 +118739,7 @@ } }, { - "__docId__": 5925, + "__docId__": 5944, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118198,7 +118757,7 @@ } }, { - "__docId__": 5926, + "__docId__": 5945, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118216,7 +118775,7 @@ } }, { - "__docId__": 5927, + "__docId__": 5946, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118234,7 +118793,7 @@ } }, { - "__docId__": 5928, + "__docId__": 5947, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118252,7 +118811,7 @@ } }, { - "__docId__": 5929, + "__docId__": 5948, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118269,7 +118828,7 @@ } }, { - "__docId__": 5930, + "__docId__": 5949, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118286,7 +118845,7 @@ } }, { - "__docId__": 5931, + "__docId__": 5950, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118304,7 +118863,7 @@ } }, { - "__docId__": 5932, + "__docId__": 5951, "kind": "member", "name": "_uTexturePerPolygonIdNormals", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118322,7 +118881,7 @@ } }, { - "__docId__": 5933, + "__docId__": 5952, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118340,7 +118899,7 @@ } }, { - "__docId__": 5934, + "__docId__": 5953, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118358,7 +118917,7 @@ } }, { - "__docId__": 5935, + "__docId__": 5954, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118376,7 +118935,7 @@ } }, { - "__docId__": 5936, + "__docId__": 5955, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118394,7 +118953,7 @@ } }, { - "__docId__": 5937, + "__docId__": 5956, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118418,7 +118977,7 @@ "return": null }, { - "__docId__": 5938, + "__docId__": 5957, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118439,7 +118998,7 @@ } }, { - "__docId__": 5939, + "__docId__": 5958, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118460,7 +119019,7 @@ } }, { - "__docId__": 5940, + "__docId__": 5959, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118481,7 +119040,7 @@ } }, { - "__docId__": 5941, + "__docId__": 5960, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118497,7 +119056,7 @@ "return": null }, { - "__docId__": 5943, + "__docId__": 5962, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js~DTXTrianglesPickMeshRenderer", @@ -118513,7 +119072,7 @@ "return": null }, { - "__docId__": 5945, + "__docId__": 5964, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {math} from \"../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\n\nconst tempVec4a = math.vec4();\n\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesPickNormalsFlatRenderer {\n\n constructor(scene, withSAO) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = dataTextureLayer.model;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx, state);\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3b);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(camera.viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3c;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n } else {\n rtcViewMatrix = camera.viewMatrix; // TODO: make pickMatrix\n rtcCameraEye = camera.eye;\n }\n gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);\n gl.uniform2f(this._uDrawingBufferSize, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix); // TODO: pickProjMatrix\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform1i(this._uRenderPass, renderPass);\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPickClipPos = program.getLocation(\"pickClipPos\");\n this._uDrawingBufferSize = program.getLocation(\"drawingBufferSize\");\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdNormals = \"uTexturePerPolygonIdNormals\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix = \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram(frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n program.bind();\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n let light;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// trianglesDatatextureNormalsRenderer vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"uniform vec2 pickClipPos;\");\n src.push(\"uniform vec2 drawingBufferSize;\");\n\n src.push(\"vec4 remapClipPos(vec4 clipPos) {\");\n src.push(\" clipPos.xy /= clipPos.w;\")\n src.push(` clipPos.xy = (clipPos.xy - pickClipPos) * drawingBufferSize;`);\n src.push(\" clipPos.xy *= clipPos.w;\")\n src.push(\" return clipPos;\")\n src.push(\"}\");\n\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n\n src.push(\"out vec4 vWorldPosition;\");\n\n if (clipping) {\n src.push(\"flat out uint vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\"); // pickFlag = NOT_RENDERED | PICK\n\n // renderPass = PICK\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n // get position\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n // get color\n src.push(\"uvec4 color = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n\n src.push(`if (color.a == 0u) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\");\n src.push(\"};\");\n\n // get normal\n\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n\n // when the geometry is not solid, if needed, flip the triangle winding\n src.push(\"if (solid != 1u) {\");\n src.push(\"if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\"vec3 uCameraEyeRtcInQuantizedSpace = (inverse(sceneModelMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n // src.push(\"vColor = vec4(vec3(1, -1, 0)*dot(normalize(position.xyz - uCameraEyeRtcInQuantizedSpace), normal), 1);\")\n src.push(\"if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"viewNormal = -viewNormal;\");\n src.push(\"}\");\n src.push(\"} else {\");\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n src.push(\"if (viewNormal.z < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"}\");\n src.push(\"}\");\n src.push(\"}\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n src.push(\"vWorldPosition = worldPosition;\");\n\n if (clipping) {\n src.push(\"vFlags2 = flags2.r;\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// TrianglesDataTexturePickNormalsRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"in vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out highp ivec4 outNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\" vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\" vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(` outNormal = ivec4(worldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -118524,7 +119083,7 @@ "lineNumber": 1 }, { - "__docId__": 5946, + "__docId__": 5965, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js", @@ -118545,7 +119104,7 @@ "ignore": true }, { - "__docId__": 5947, + "__docId__": 5966, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js", @@ -118566,7 +119125,7 @@ "ignore": true }, { - "__docId__": 5948, + "__docId__": 5967, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js", @@ -118587,7 +119146,7 @@ "ignore": true }, { - "__docId__": 5949, + "__docId__": 5968, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js", @@ -118608,7 +119167,7 @@ "ignore": true }, { - "__docId__": 5950, + "__docId__": 5969, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js", @@ -118629,7 +119188,7 @@ "ignore": true }, { - "__docId__": 5951, + "__docId__": 5970, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js", @@ -118650,7 +119209,7 @@ "ignore": true }, { - "__docId__": 5952, + "__docId__": 5971, "kind": "class", "name": "DTXTrianglesPickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js", @@ -118666,7 +119225,7 @@ "ignore": true }, { - "__docId__": 5953, + "__docId__": 5972, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118680,7 +119239,7 @@ "undocument": true }, { - "__docId__": 5954, + "__docId__": 5973, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118698,7 +119257,7 @@ } }, { - "__docId__": 5955, + "__docId__": 5974, "kind": "member", "name": "_withSAO", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118716,7 +119275,7 @@ } }, { - "__docId__": 5956, + "__docId__": 5975, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118734,7 +119293,7 @@ } }, { - "__docId__": 5957, + "__docId__": 5976, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118754,7 +119313,7 @@ } }, { - "__docId__": 5958, + "__docId__": 5977, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118775,7 +119334,7 @@ } }, { - "__docId__": 5959, + "__docId__": 5978, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118810,7 +119369,7 @@ "return": null }, { - "__docId__": 5960, + "__docId__": 5979, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118827,7 +119386,7 @@ "return": null }, { - "__docId__": 5961, + "__docId__": 5980, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118845,7 +119404,7 @@ } }, { - "__docId__": 5962, + "__docId__": 5981, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118862,7 +119421,7 @@ } }, { - "__docId__": 5963, + "__docId__": 5982, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118880,7 +119439,7 @@ } }, { - "__docId__": 5964, + "__docId__": 5983, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118898,7 +119457,7 @@ } }, { - "__docId__": 5965, + "__docId__": 5984, "kind": "member", "name": "_uPickClipPos", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118916,7 +119475,7 @@ } }, { - "__docId__": 5966, + "__docId__": 5985, "kind": "member", "name": "_uDrawingBufferSize", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118934,7 +119493,7 @@ } }, { - "__docId__": 5967, + "__docId__": 5986, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118952,7 +119511,7 @@ } }, { - "__docId__": 5968, + "__docId__": 5987, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118970,7 +119529,7 @@ } }, { - "__docId__": 5969, + "__docId__": 5988, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -118988,7 +119547,7 @@ } }, { - "__docId__": 5970, + "__docId__": 5989, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119006,7 +119565,7 @@ } }, { - "__docId__": 5971, + "__docId__": 5990, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119024,7 +119583,7 @@ } }, { - "__docId__": 5972, + "__docId__": 5991, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119041,7 +119600,7 @@ } }, { - "__docId__": 5973, + "__docId__": 5992, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119058,7 +119617,7 @@ } }, { - "__docId__": 5974, + "__docId__": 5993, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119076,7 +119635,7 @@ } }, { - "__docId__": 5975, + "__docId__": 5994, "kind": "member", "name": "_uTexturePerPolygonIdNormals", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119094,7 +119653,7 @@ } }, { - "__docId__": 5976, + "__docId__": 5995, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119112,7 +119671,7 @@ } }, { - "__docId__": 5977, + "__docId__": 5996, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119130,7 +119689,7 @@ } }, { - "__docId__": 5978, + "__docId__": 5997, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119148,7 +119707,7 @@ } }, { - "__docId__": 5979, + "__docId__": 5998, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119166,7 +119725,7 @@ } }, { - "__docId__": 5980, + "__docId__": 5999, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119190,7 +119749,7 @@ "return": null }, { - "__docId__": 5981, + "__docId__": 6000, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119211,7 +119770,7 @@ } }, { - "__docId__": 5982, + "__docId__": 6001, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119232,7 +119791,7 @@ } }, { - "__docId__": 5983, + "__docId__": 6002, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119253,7 +119812,7 @@ } }, { - "__docId__": 5984, + "__docId__": 6003, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119269,7 +119828,7 @@ "return": null }, { - "__docId__": 5986, + "__docId__": 6005, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js~DTXTrianglesPickNormalsFlatRenderer", @@ -119285,7 +119844,7 @@ "return": null }, { - "__docId__": 5988, + "__docId__": 6007, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nexport class DTXTrianglesPickNormalsRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n }\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n\n if (!this._program) {\n this._allocate(dataTextureLayer);\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let cameraEye = camera.eye;\n\n // if (frameCtx.pickViewMatrix) {\n // textureState.bindPickCameraTexture(\n // this._program,\n // this._uTextureCameraMatrices\n // );\n // cameraEye = frameCtx.pickOrigin || cameraEye;\n // }\n\n const originCameraEye = [\n cameraEye[0] - origin[0],\n cameraEye[1] - origin[1],\n cameraEye[2] - origin[2],\n ];\n\n gl.uniform3fv(this._uCameraEyeRtc, originCameraEye);\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform3fv(this._uCameraEyeRtc, originCameraEye);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);\n gl.uniform2f(this._uDrawingBufferSize, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far should be from projection objectInstanceMatrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n\n frameCtx.drawElements++;\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPickClipPos = program.getLocation(\"pickClipPos\");\n this._uDrawingBufferSize = program.getLocation(\"drawingBufferSize\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdNormals = \"uTexturePerPolygonIdNormals\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles dataTexture pick normals vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform highp sampler2D uObjectPerObjectOffsets;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n src.push(\"uniform highp sampler2D uTextureCameraMatrices;\");\n src.push(\"uniform highp sampler2D uTextureModelMatrices;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"uniform vec2 drawingBufferSize;\");\n src.push(\"uniform vec2 pickClipPos;\");\n\n src.push(\"vec4 remapClipPos(vec4 clipPos) {\");\n src.push(\" clipPos.xy /= clipPos.w;\");\n src.push(` clipPos.xy = (clipPos.xy - pickClipPos) * (drawingBufferSize / 3.0);`);\n src.push(\" clipPos.xy *= clipPos.w;\")\n src.push(\" return clipPos;\")\n src.push(\"}\");\n\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n\n src.push(\"out vec3 vWorldNormal;\");\n\n src.push(\"void main(void) {\");\n\n // camera matrices\n src.push(\"mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));\");\n src.push(\"mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));\");\n\n // model matrices\n src.push(\"mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));\");\n\n // constants\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\");\n \n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n\n // get position\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n // get normal\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n\n\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n\n // when the geometry is not solid, if needed, flip the triangle winding\n src.push(\"if (solid != 1u) {\");\n src.push(\"if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\"vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n src.push(\"if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"normal = -normal;\");\n src.push(\"}\");\n src.push(\"} else {\");\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n src.push(\"if (viewNormal.z < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"normal = -normal;\");\n src.push(\"}\");\n src.push(\"}\");\n src.push(\"}\");\n\n src.push(\"normal = -normal;\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vWorldNormal = normal.xyz;\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2.w;\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\"}\");\n\n src.push(\"}\");\n\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Triangles dataTexture pick normals fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vWorldNormal;\");\n src.push(\"out highp ivec4 outNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n // src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n src.push(\" gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(` outNormal = ivec4(vWorldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -119296,7 +119855,7 @@ "lineNumber": 1 }, { - "__docId__": 5989, + "__docId__": 6008, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js", @@ -119317,7 +119876,7 @@ "ignore": true }, { - "__docId__": 5990, + "__docId__": 6009, "kind": "class", "name": "DTXTrianglesPickNormalsRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js", @@ -119333,7 +119892,7 @@ "ignore": true }, { - "__docId__": 5991, + "__docId__": 6010, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119347,7 +119906,7 @@ "undocument": true }, { - "__docId__": 5992, + "__docId__": 6011, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119365,7 +119924,7 @@ } }, { - "__docId__": 5993, + "__docId__": 6012, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119383,7 +119942,7 @@ } }, { - "__docId__": 5994, + "__docId__": 6013, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119403,7 +119962,7 @@ } }, { - "__docId__": 5995, + "__docId__": 6014, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119424,7 +119983,7 @@ } }, { - "__docId__": 5996, + "__docId__": 6015, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119459,7 +120018,7 @@ "return": null }, { - "__docId__": 5997, + "__docId__": 6016, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119476,7 +120035,7 @@ "return": null }, { - "__docId__": 5998, + "__docId__": 6017, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119494,7 +120053,7 @@ } }, { - "__docId__": 5999, + "__docId__": 6018, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119511,7 +120070,7 @@ } }, { - "__docId__": 6000, + "__docId__": 6019, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119529,7 +120088,7 @@ } }, { - "__docId__": 6001, + "__docId__": 6020, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119547,7 +120106,7 @@ } }, { - "__docId__": 6002, + "__docId__": 6021, "kind": "member", "name": "_uPickClipPos", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119565,7 +120124,7 @@ } }, { - "__docId__": 6003, + "__docId__": 6022, "kind": "member", "name": "_uDrawingBufferSize", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119583,7 +120142,7 @@ } }, { - "__docId__": 6004, + "__docId__": 6023, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119601,7 +120160,7 @@ } }, { - "__docId__": 6005, + "__docId__": 6024, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119619,7 +120178,7 @@ } }, { - "__docId__": 6006, + "__docId__": 6025, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119636,7 +120195,7 @@ } }, { - "__docId__": 6007, + "__docId__": 6026, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119653,7 +120212,7 @@ } }, { - "__docId__": 6008, + "__docId__": 6027, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119671,7 +120230,7 @@ } }, { - "__docId__": 6009, + "__docId__": 6028, "kind": "member", "name": "_uTexturePerPolygonIdNormals", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119689,7 +120248,7 @@ } }, { - "__docId__": 6010, + "__docId__": 6029, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119707,7 +120266,7 @@ } }, { - "__docId__": 6011, + "__docId__": 6030, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119725,7 +120284,7 @@ } }, { - "__docId__": 6012, + "__docId__": 6031, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119743,7 +120302,7 @@ } }, { - "__docId__": 6013, + "__docId__": 6032, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119761,7 +120320,7 @@ } }, { - "__docId__": 6014, + "__docId__": 6033, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119778,7 +120337,7 @@ "return": null }, { - "__docId__": 6015, + "__docId__": 6034, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119799,7 +120358,7 @@ } }, { - "__docId__": 6016, + "__docId__": 6035, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119820,7 +120379,7 @@ } }, { - "__docId__": 6017, + "__docId__": 6036, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119841,7 +120400,7 @@ } }, { - "__docId__": 6018, + "__docId__": 6037, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119857,7 +120416,7 @@ "return": null }, { - "__docId__": 6020, + "__docId__": 6039, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js~DTXTrianglesPickNormalsRenderer", @@ -119873,7 +120432,7 @@ "return": null }, { - "__docId__": 6022, + "__docId__": 6041, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js", "content": "import {DTXTrianglesColorRenderer} from \"./DTXTrianglesColorRenderer.js\";\nimport {DTXTrianglesSilhouetteRenderer} from \"./DTXTrianglesSilhouetteRenderer.js\";\nimport {DTXTrianglesEdgesRenderer} from \"./DTXTrianglesEdgesRenderer.js\";\nimport {DTXTrianglesEdgesColorRenderer} from \"./DTXTrianglesEdgesColorRenderer.js\";\nimport {DTXTrianglesPickMeshRenderer} from \"./DTXTrianglesPickMeshRenderer.js\";\nimport {DTXTrianglesPickDepthRenderer} from \"./DTXTrianglesPickDepthRenderer.js\";\nimport {DTXTrianglesSnapRenderer} from \"./DTXTrianglesSnapRenderer.js\";\nimport {DTXTrianglesSnapInitRenderer} from \"./DTXTrianglesSnapInitRenderer.js\";\nimport {DTXTrianglesOcclusionRenderer} from \"./DTXTrianglesOcclusionRenderer.js\";\nimport {DTXTrianglesDepthRenderer} from \"./DTXTrianglesDepthRenderer.js\";\nimport {DTXTrianglesNormalsRenderer} from \"./DTXTrianglesNormalsRenderer.js\";\nimport {DTXTrianglesPickNormalsFlatRenderer} from \"./DTXTrianglesPickNormalsFlatRenderer.js\";\n\n/**\n * @private\n */\nclass DTXTrianglesRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._colorRendererWithSAO && (!this._colorRendererWithSAO.getValid())) {\n this._colorRendererWithSAO.destroy();\n this._colorRendererWithSAO = null;\n }\n if (this._flatColorRenderer && (!this._flatColorRenderer.getValid())) {\n this._flatColorRenderer.destroy();\n this._flatColorRenderer = null;\n }\n if (this._flatColorRendererWithSAO && (!this._flatColorRendererWithSAO.getValid())) {\n this._flatColorRendererWithSAO.destroy();\n this._flatColorRendererWithSAO = null;\n }\n if (this._colorQualityRendererWithSAO && (!this._colorQualityRendererWithSAO.getValid())) {\n this._colorQualityRendererWithSAO.destroy();\n this._colorQualityRendererWithSAO = null;\n }\n if (this._depthRenderer && (!this._depthRenderer.getValid())) {\n this._depthRenderer.destroy();\n this._depthRenderer = null;\n }\n if (this._normalsRenderer && (!this._normalsRenderer.getValid())) {\n this._normalsRenderer.destroy();\n this._normalsRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._edgesRenderer && (!this._edgesRenderer.getValid())) {\n this._edgesRenderer.destroy();\n this._edgesRenderer = null;\n }\n if (this._edgesColorRenderer && (!this._edgesColorRenderer.getValid())) {\n this._edgesColorRenderer.destroy();\n this._edgesColorRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._snapRenderer && (!this._snapRenderer.getValid())) {\n this._snapRenderer.destroy();\n this._snapRenderer = null;\n }\n if (this._snapInitRenderer && (!this._snapInitRenderer.getValid())) {\n this._snapInitRenderer.destroy();\n this._snapInitRenderer = null;\n }\n if (this._pickNormalsRenderer && this._pickNormalsRenderer.getValid() === false) {\n this._pickNormalsRenderer.destroy();\n this._pickNormalsRenderer = null;\n }\n if (this._pickNormalsFlatRenderer && this._pickNormalsFlatRenderer.getValid() === false) {\n this._pickNormalsFlatRenderer.destroy();\n this._pickNormalsFlatRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n }\n\n eagerCreateRenders() {\n\n // Pre-initialize certain renderers that would otherwise be lazy-initialised\n // on user interaction, such as picking or emphasis, so that there is no delay\n // when user first begins interacting with the viewer.\n\n if (!this._silhouetteRenderer) { // Used for highlighting and selection\n this._silhouetteRenderer = new DTXTrianglesSilhouetteRenderer(this._scene);\n }\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new DTXTrianglesPickMeshRenderer(this._scene);\n }\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new DTXTrianglesPickDepthRenderer(this._scene);\n }\n if (!this._pickNormalsRenderer) {\n this._pickNormalsRenderer = new DTXTrianglesPickNormalsFlatRenderer(this._scene);\n }\n if (!this._snapRenderer) {\n this._snapRenderer = new DTXTrianglesSnapRenderer(this._scene);\n }\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new DTXTrianglesSnapInitRenderer(this._scene);\n }\n if (!this._snapRenderer) {\n this._snapRenderer = new DTXTrianglesSnapRenderer(this._scene);\n }\n }\n\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new DTXTrianglesColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get colorRendererWithSAO() {\n if (!this._colorRendererWithSAO) {\n this._colorRendererWithSAO = new DTXTrianglesColorRenderer(this._scene, true);\n }\n return this._colorRendererWithSAO;\n }\n\n get colorQualityRendererWithSAO() {\n // if (!this._colorQualityRendererWithSAO) {\n // this._colorQualityRendererWithSAO = new TrianglesDataTextureColorQualityRenderer(this._scene, true);\n // }\n return this._colorQualityRendererWithSAO;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new DTXTrianglesSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new DTXTrianglesDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get normalsRenderer() {\n if (!this._normalsRenderer) {\n this._normalsRenderer = new DTXTrianglesNormalsRenderer(this._scene);\n }\n return this._normalsRenderer;\n }\n\n get edgesRenderer() {\n if (!this._edgesRenderer) {\n this._edgesRenderer = new DTXTrianglesEdgesRenderer(this._scene);\n }\n return this._edgesRenderer;\n }\n\n get edgesColorRenderer() {\n if (!this._edgesColorRenderer) {\n this._edgesColorRenderer = new DTXTrianglesEdgesColorRenderer(this._scene);\n }\n return this._edgesColorRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new DTXTrianglesPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickNormalsRenderer() {\n if (!this._pickNormalsRenderer) {\n this._pickNormalsRenderer = new DTXTrianglesPickNormalsFlatRenderer(this._scene);\n }\n return this._pickNormalsRenderer;\n }\n\n get pickNormalsFlatRenderer() {\n if (!this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer = new DTXTrianglesPickNormalsFlatRenderer(this._scene);\n }\n return this._pickNormalsFlatRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new DTXTrianglesPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get snapRenderer() {\n if (!this._snapRenderer) {\n this._snapRenderer = new DTXTrianglesSnapRenderer(this._scene);\n }\n return this._snapRenderer;\n }\n\n get snapInitRenderer() {\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new DTXTrianglesSnapInitRenderer(this._scene);\n }\n return this._snapInitRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new DTXTrianglesOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._colorRendererWithSAO) {\n this._colorRendererWithSAO.destroy();\n }\n if (this._flatColorRenderer) {\n this._flatColorRenderer.destroy();\n }\n if (this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO.destroy();\n }\n if (this._colorQualityRendererWithSAO) {\n this._colorQualityRendererWithSAO.destroy();\n }\n if (this._depthRenderer) {\n this._depthRenderer.destroy();\n }\n if (this._normalsRenderer) {\n this._normalsRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._edgesRenderer) {\n this._edgesRenderer.destroy();\n }\n if (this._edgesColorRenderer) {\n this._edgesColorRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._snapRenderer) {\n this._snapRenderer.destroy();\n }\n if (this._snapInitRenderer) {\n this._snapInitRenderer.destroy();\n }\n if (this._pickNormalsRenderer) {\n this._pickNormalsRenderer.destroy();\n }\n if (this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n }\n}\n\nconst cachdRenderers = {};\n\n/**\n * @private\n */\nexport function getRenderers(scene) {\n const sceneId = scene.id;\n let dataTextureRenderers = cachdRenderers[sceneId];\n if (!dataTextureRenderers) {\n dataTextureRenderers = new DTXTrianglesRenderers(scene);\n cachdRenderers[sceneId] = dataTextureRenderers;\n dataTextureRenderers._compile();\n dataTextureRenderers.eagerCreateRenders();\n scene.on(\"compile\", () => {\n dataTextureRenderers._compile();\n dataTextureRenderers.eagerCreateRenders();\n });\n scene.on(\"destroyed\", () => {\n delete cachdRenderers[sceneId];\n dataTextureRenderers._destroy();\n });\n }\n return dataTextureRenderers;\n}\n", @@ -119884,7 +120443,7 @@ "lineNumber": 1 }, { - "__docId__": 6023, + "__docId__": 6042, "kind": "class", "name": "DTXTrianglesRenderers", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js", @@ -119900,7 +120459,7 @@ "ignore": true }, { - "__docId__": 6024, + "__docId__": 6043, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -119914,7 +120473,7 @@ "undocument": true }, { - "__docId__": 6025, + "__docId__": 6044, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -119932,7 +120491,7 @@ } }, { - "__docId__": 6026, + "__docId__": 6045, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -119949,7 +120508,7 @@ "return": null }, { - "__docId__": 6027, + "__docId__": 6046, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -119967,7 +120526,7 @@ } }, { - "__docId__": 6028, + "__docId__": 6047, "kind": "member", "name": "_colorRendererWithSAO", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -119985,7 +120544,7 @@ } }, { - "__docId__": 6029, + "__docId__": 6048, "kind": "member", "name": "_flatColorRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120003,7 +120562,7 @@ } }, { - "__docId__": 6030, + "__docId__": 6049, "kind": "member", "name": "_flatColorRendererWithSAO", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120021,7 +120580,7 @@ } }, { - "__docId__": 6031, + "__docId__": 6050, "kind": "member", "name": "_colorQualityRendererWithSAO", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120039,7 +120598,7 @@ } }, { - "__docId__": 6032, + "__docId__": 6051, "kind": "member", "name": "_depthRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120057,7 +120616,7 @@ } }, { - "__docId__": 6033, + "__docId__": 6052, "kind": "member", "name": "_normalsRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120075,7 +120634,7 @@ } }, { - "__docId__": 6034, + "__docId__": 6053, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120093,7 +120652,7 @@ } }, { - "__docId__": 6035, + "__docId__": 6054, "kind": "member", "name": "_edgesRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120111,7 +120670,7 @@ } }, { - "__docId__": 6036, + "__docId__": 6055, "kind": "member", "name": "_edgesColorRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120129,7 +120688,7 @@ } }, { - "__docId__": 6037, + "__docId__": 6056, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120147,7 +120706,7 @@ } }, { - "__docId__": 6038, + "__docId__": 6057, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120165,7 +120724,7 @@ } }, { - "__docId__": 6039, + "__docId__": 6058, "kind": "member", "name": "_snapRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120183,7 +120742,7 @@ } }, { - "__docId__": 6040, + "__docId__": 6059, "kind": "member", "name": "_snapInitRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120201,7 +120760,7 @@ } }, { - "__docId__": 6041, + "__docId__": 6060, "kind": "member", "name": "_pickNormalsRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120219,7 +120778,7 @@ } }, { - "__docId__": 6042, + "__docId__": 6061, "kind": "member", "name": "_pickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120237,7 +120796,7 @@ } }, { - "__docId__": 6043, + "__docId__": 6062, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120255,7 +120814,7 @@ } }, { - "__docId__": 6044, + "__docId__": 6063, "kind": "method", "name": "eagerCreateRenders", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120271,7 +120830,7 @@ "return": null }, { - "__docId__": 6052, + "__docId__": 6071, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120290,7 +120849,7 @@ } }, { - "__docId__": 6054, + "__docId__": 6073, "kind": "get", "name": "colorRendererWithSAO", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120309,7 +120868,7 @@ } }, { - "__docId__": 6056, + "__docId__": 6075, "kind": "get", "name": "colorQualityRendererWithSAO", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120328,7 +120887,7 @@ } }, { - "__docId__": 6057, + "__docId__": 6076, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120347,7 +120906,7 @@ } }, { - "__docId__": 6059, + "__docId__": 6078, "kind": "get", "name": "depthRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120366,7 +120925,7 @@ } }, { - "__docId__": 6061, + "__docId__": 6080, "kind": "get", "name": "normalsRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120385,7 +120944,7 @@ } }, { - "__docId__": 6063, + "__docId__": 6082, "kind": "get", "name": "edgesRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120404,7 +120963,7 @@ } }, { - "__docId__": 6065, + "__docId__": 6084, "kind": "get", "name": "edgesColorRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120423,7 +120982,7 @@ } }, { - "__docId__": 6067, + "__docId__": 6086, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120442,7 +121001,7 @@ } }, { - "__docId__": 6069, + "__docId__": 6088, "kind": "get", "name": "pickNormalsRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120461,7 +121020,7 @@ } }, { - "__docId__": 6071, + "__docId__": 6090, "kind": "get", "name": "pickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120480,7 +121039,7 @@ } }, { - "__docId__": 6073, + "__docId__": 6092, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120499,7 +121058,7 @@ } }, { - "__docId__": 6075, + "__docId__": 6094, "kind": "get", "name": "snapRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120518,7 +121077,7 @@ } }, { - "__docId__": 6077, + "__docId__": 6096, "kind": "get", "name": "snapInitRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120537,7 +121096,7 @@ } }, { - "__docId__": 6079, + "__docId__": 6098, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120556,7 +121115,7 @@ } }, { - "__docId__": 6081, + "__docId__": 6100, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js~DTXTrianglesRenderers", @@ -120573,7 +121132,7 @@ "return": null }, { - "__docId__": 6082, + "__docId__": 6101, "kind": "variable", "name": "cachdRenderers", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js", @@ -120594,7 +121153,7 @@ "ignore": true }, { - "__docId__": 6083, + "__docId__": 6102, "kind": "function", "name": "getRenderers", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js", @@ -120624,7 +121183,7 @@ } }, { - "__docId__": 6084, + "__docId__": 6103, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {RENDER_PASSES} from \"../../../RENDER_PASSES.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\n\nconst defaultColor = new Float32Array([1, 1, 1]);\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class DTXTrianglesSilhouetteRenderer {\n\n constructor(scene, primitiveType) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = dataTextureLayer.model;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const viewMatrix = camera.viewMatrix;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx, state);\n }\n\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3a;\n if (origin) {\n const rotatedOrigin = tempVec3b;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3c;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n\n if (renderPass === RENDER_PASSES.SILHOUETTE_XRAYED) {\n const material = scene.xrayMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_SELECTED) {\n const material = scene.selectedMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, defaultColor);\n }\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uColor = program.getLocation(\"color\");\n this._uWorldMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdNormals = \"uTexturePerPolygonIdNormals\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles dataTexture silhouette vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n // src.push(\"uniform sampler2D uOcclusionTexture;\"); \n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n // flags.y = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`if (int(flags.y) != renderPass) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\"); // Cull vertex\n src.push(\"} else {\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n\n // get position\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n // get normal\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n\n // when the geometry is not solid, if needed, flip the triangle winding\n src.push(\"if (solid != 1u) {\");\n src.push(\"if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\"vec3 uCameraEyeRtcInQuantizedSpace = (inverse(sceneModelMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n src.push(\"if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"viewNormal = -viewNormal;\");\n src.push(\"}\");\n src.push(\"} else {\");\n src.push(\"if (viewNormal.z < 0.0) {\");\n src.push(\"position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\"viewNormal = -viewNormal;\");\n src.push(\"}\");\n src.push(\"}\");\n src.push(\"}\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2.r;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n\n src.push(\"}\");\n\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Triangles dataTexture draw fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = color;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -120635,7 +121194,7 @@ "lineNumber": 1 }, { - "__docId__": 6085, + "__docId__": 6104, "kind": "variable", "name": "defaultColor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js", @@ -120656,7 +121215,7 @@ "ignore": true }, { - "__docId__": 6086, + "__docId__": 6105, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js", @@ -120677,7 +121236,7 @@ "ignore": true }, { - "__docId__": 6087, + "__docId__": 6106, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js", @@ -120698,7 +121257,7 @@ "ignore": true }, { - "__docId__": 6088, + "__docId__": 6107, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js", @@ -120719,7 +121278,7 @@ "ignore": true }, { - "__docId__": 6089, + "__docId__": 6108, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js", @@ -120740,7 +121299,7 @@ "ignore": true }, { - "__docId__": 6090, + "__docId__": 6109, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js", @@ -120761,7 +121320,7 @@ "ignore": true }, { - "__docId__": 6091, + "__docId__": 6110, "kind": "class", "name": "DTXTrianglesSilhouetteRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js", @@ -120777,7 +121336,7 @@ "ignore": true }, { - "__docId__": 6092, + "__docId__": 6111, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120791,7 +121350,7 @@ "undocument": true }, { - "__docId__": 6093, + "__docId__": 6112, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120809,7 +121368,7 @@ } }, { - "__docId__": 6094, + "__docId__": 6113, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120827,7 +121386,7 @@ } }, { - "__docId__": 6095, + "__docId__": 6114, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120847,7 +121406,7 @@ } }, { - "__docId__": 6096, + "__docId__": 6115, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120868,7 +121427,7 @@ } }, { - "__docId__": 6097, + "__docId__": 6116, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120903,7 +121462,7 @@ "return": null }, { - "__docId__": 6098, + "__docId__": 6117, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120920,7 +121479,7 @@ "return": null }, { - "__docId__": 6099, + "__docId__": 6118, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120938,7 +121497,7 @@ } }, { - "__docId__": 6100, + "__docId__": 6119, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120955,7 +121514,7 @@ } }, { - "__docId__": 6101, + "__docId__": 6120, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120973,7 +121532,7 @@ } }, { - "__docId__": 6102, + "__docId__": 6121, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -120991,7 +121550,7 @@ } }, { - "__docId__": 6103, + "__docId__": 6122, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121009,7 +121568,7 @@ } }, { - "__docId__": 6104, + "__docId__": 6123, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121027,7 +121586,7 @@ } }, { - "__docId__": 6105, + "__docId__": 6124, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121045,7 +121604,7 @@ } }, { - "__docId__": 6106, + "__docId__": 6125, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121063,7 +121622,7 @@ } }, { - "__docId__": 6107, + "__docId__": 6126, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121081,7 +121640,7 @@ } }, { - "__docId__": 6108, + "__docId__": 6127, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121098,7 +121657,7 @@ } }, { - "__docId__": 6109, + "__docId__": 6128, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121115,7 +121674,7 @@ } }, { - "__docId__": 6110, + "__docId__": 6129, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121133,7 +121692,7 @@ } }, { - "__docId__": 6111, + "__docId__": 6130, "kind": "member", "name": "_uTexturePerPolygonIdNormals", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121151,7 +121710,7 @@ } }, { - "__docId__": 6112, + "__docId__": 6131, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121169,7 +121728,7 @@ } }, { - "__docId__": 6113, + "__docId__": 6132, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121187,7 +121746,7 @@ } }, { - "__docId__": 6114, + "__docId__": 6133, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121205,7 +121764,7 @@ } }, { - "__docId__": 6115, + "__docId__": 6134, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121223,7 +121782,7 @@ } }, { - "__docId__": 6116, + "__docId__": 6135, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121247,7 +121806,7 @@ "return": null }, { - "__docId__": 6117, + "__docId__": 6136, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121268,7 +121827,7 @@ } }, { - "__docId__": 6118, + "__docId__": 6137, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121289,7 +121848,7 @@ } }, { - "__docId__": 6119, + "__docId__": 6138, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121310,7 +121869,7 @@ } }, { - "__docId__": 6120, + "__docId__": 6139, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121326,7 +121885,7 @@ "return": null }, { - "__docId__": 6122, + "__docId__": 6141, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js~DTXTrianglesSilhouetteRenderer", @@ -121342,7 +121901,7 @@ "return": null }, { - "__docId__": 6124, + "__docId__": 6143, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {math} from \"../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/index.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempVec3e = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n/**\n * @private\n */\nexport class DTXTrianglesSnapInitRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = dataTextureLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n let rtcViewMatrix;\n let rtcCameraEye;\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3b;\n if (gotOrigin) {\n const rotatedOrigin = tempVec3c;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this._uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this._uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n gl.uniformMatrix4fv(this._uSceneWorldModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n if (state.numIndices8Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 8 // 8 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits);\n }\n if (state.numIndices16Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 16 // 16 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits);\n }\n if (state.numIndices32Bits > 0) {\n textureState.bindTriangleIndicesTextures(\n this._program,\n this._uTexturePerPolygonIdPortionIds,\n this._uTexturePerPolygonIdIndices,\n 32 // 32 bits indices\n );\n gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits);\n }\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uSceneWorldModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdIndices = \"uTexturePerPolygonIdIndices\";\n this._uTexturePerPolygonIdPortionIds = \"uTexturePerPolygonIdPortionIds\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n this._uVectorA = program.getLocation(\"uVectorAB\");\n this._uInverseVectorAB = program.getLocation(\"uInverseVectorAB\");\n this._uLayerNumber = program.getLocation(\"uLayerNumber\");\n this._uCoordinateScaler = program.getLocation(\"uCoordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// DTXTrianglesSnapInitRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerPolygonIdPortionIds;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n src.push(\"uniform vec2 uVectorAB;\");\n src.push(\"uniform vec2 uInverseVectorAB;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - uVectorAB.x) * uInverseVectorAB.x;\");\n src.push(\" float y = (clipPos.y - uVectorAB.y) * uInverseVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n\n src.push(\"flat out vec4 vPickColor;\");\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"flat out uint vFlags2;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int polygonIndex = gl_VertexID / 3;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (polygonIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (polygonIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerPolygonIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n src.push(\"{\");\n\n // get color\n src.push(\"uvec4 color = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);\");\n\n src.push(`if (color.a == 0u) {`);\n src.push(\" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);\"); // Cull vertex\n src.push(\" return;\");\n src.push(\"};\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n\n src.push(\"ivec4 packedIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));\");\n\n src.push(\"int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;\");\n\n src.push(\"int h_index = (polygonIndex - indexBaseOffset) & 4095;\")\n src.push(\"int v_index = (polygonIndex - indexBaseOffset) >> 12;\")\n\n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));\");\n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n\n src.push(\"ivec3 indexPositionH = uniqueVertexIndexes & 4095;\")\n src.push(\"ivec3 indexPositionV = uniqueVertexIndexes >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\");\n\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n src.push(\"uint solid = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;\");\n\n // get position\n src.push(\"positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));\")\n src.push(\"positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));\")\n src.push(\"positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));\")\n\n // get normal\n src.push(\"vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));\");\n src.push(\"vec3 position;\");\n src.push(\"position = positions[gl_VertexID % 3];\");\n src.push(\"vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*objectDecodeAndInstanceMatrix)) * vec4(normal,1)).xyz);\");\n\n // when the geometry is not solid, if needed, flip the triangle winding\n src.push(\"if (solid != 1u) {\");\n src.push(\" if (isPerspectiveMatrix(projMatrix)) {\");\n src.push(\" vec3 uCameraEyeRtcInQuantizedSpace = (inverse(sceneModelMatrix * objectDecodeAndInstanceMatrix) * vec4(uCameraEyeRtc, 1)).xyz;\")\n src.push(\" if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {\");\n src.push(\" position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\" viewNormal = -viewNormal;\");\n src.push(\" }\");\n src.push(\" } else {\");\n src.push(\" if (viewNormal.z < 0.0) {\");\n src.push(\" position = positions[2 - (gl_VertexID % 3)];\");\n src.push(\" viewNormal = -viewNormal;\");\n src.push(\" }\");\n src.push(\" }\");\n src.push(\"}\");\n\n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\"vFlags2 = flags2.r;\");\n }\n src.push(\"vPickColor = vec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+1, objectIndexCoords.y), 0));\");\n\n // TODO: Normalized color? See here:\n //src.push(\"vPickColor = vec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+1, objectIndexCoords.y), 0)) /255.0;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// DTXTrianglesSnapInitRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int uLayerNumber;\");\n src.push(\"uniform vec3 uCoordinateScaler;\");\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in vec4 vPickColor;\");\n if (clipping) {\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"layout(location = 0) out highp ivec4 outCoords;\");\n src.push(\"layout(location = 1) out highp ivec4 outNormal;\");\n src.push(\"layout(location = 2) out lowp uvec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" float dx = dFdx(vFragDepth);\")\n src.push(\" float dy = dFdy(vFragDepth);\")\n src.push(\" float diff = sqrt(dx*dx+dy*dy);\");\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth + diff ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz * uCoordinateScaler.xyz, - uLayerNumber);\")\n\n src.push(\"vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\"vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(`outNormal = ivec4(worldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"outPickColor = uvec4(vPickColor);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -121353,7 +121912,7 @@ "lineNumber": 1 }, { - "__docId__": 6125, + "__docId__": 6144, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", @@ -121374,7 +121933,7 @@ "ignore": true }, { - "__docId__": 6126, + "__docId__": 6145, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", @@ -121395,7 +121954,7 @@ "ignore": true }, { - "__docId__": 6127, + "__docId__": 6146, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", @@ -121416,7 +121975,7 @@ "ignore": true }, { - "__docId__": 6128, + "__docId__": 6147, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", @@ -121437,7 +121996,7 @@ "ignore": true }, { - "__docId__": 6129, + "__docId__": 6148, "kind": "variable", "name": "tempVec3e", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", @@ -121458,7 +122017,7 @@ "ignore": true }, { - "__docId__": 6130, + "__docId__": 6149, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", @@ -121479,7 +122038,7 @@ "ignore": true }, { - "__docId__": 6131, + "__docId__": 6150, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", @@ -121500,7 +122059,7 @@ "ignore": true }, { - "__docId__": 6132, + "__docId__": 6151, "kind": "class", "name": "DTXTrianglesSnapInitRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js", @@ -121516,7 +122075,7 @@ "ignore": true }, { - "__docId__": 6133, + "__docId__": 6152, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121530,7 +122089,7 @@ "undocument": true }, { - "__docId__": 6134, + "__docId__": 6153, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121548,7 +122107,7 @@ } }, { - "__docId__": 6135, + "__docId__": 6154, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121566,7 +122125,7 @@ } }, { - "__docId__": 6136, + "__docId__": 6155, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121586,7 +122145,7 @@ } }, { - "__docId__": 6137, + "__docId__": 6156, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121607,7 +122166,7 @@ } }, { - "__docId__": 6138, + "__docId__": 6157, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121642,7 +122201,7 @@ "return": null }, { - "__docId__": 6139, + "__docId__": 6158, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121659,7 +122218,7 @@ "return": null }, { - "__docId__": 6140, + "__docId__": 6159, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121677,7 +122236,7 @@ } }, { - "__docId__": 6141, + "__docId__": 6160, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121694,7 +122253,7 @@ } }, { - "__docId__": 6142, + "__docId__": 6161, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121712,7 +122271,7 @@ } }, { - "__docId__": 6143, + "__docId__": 6162, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121730,7 +122289,7 @@ } }, { - "__docId__": 6144, + "__docId__": 6163, "kind": "member", "name": "_uSceneWorldModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121748,7 +122307,7 @@ } }, { - "__docId__": 6145, + "__docId__": 6164, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121766,7 +122325,7 @@ } }, { - "__docId__": 6146, + "__docId__": 6165, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121784,7 +122343,7 @@ } }, { - "__docId__": 6147, + "__docId__": 6166, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121802,7 +122361,7 @@ } }, { - "__docId__": 6148, + "__docId__": 6167, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121820,7 +122379,7 @@ } }, { - "__docId__": 6149, + "__docId__": 6168, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121837,7 +122396,7 @@ } }, { - "__docId__": 6150, + "__docId__": 6169, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121854,7 +122413,7 @@ } }, { - "__docId__": 6151, + "__docId__": 6170, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121872,7 +122431,7 @@ } }, { - "__docId__": 6152, + "__docId__": 6171, "kind": "member", "name": "_uTexturePerPolygonIdIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121890,7 +122449,7 @@ } }, { - "__docId__": 6153, + "__docId__": 6172, "kind": "member", "name": "_uTexturePerPolygonIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121908,7 +122467,7 @@ } }, { - "__docId__": 6154, + "__docId__": 6173, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121926,7 +122485,7 @@ } }, { - "__docId__": 6155, + "__docId__": 6174, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121944,7 +122503,7 @@ } }, { - "__docId__": 6156, + "__docId__": 6175, "kind": "member", "name": "_uVectorA", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121962,7 +122521,7 @@ } }, { - "__docId__": 6157, + "__docId__": 6176, "kind": "member", "name": "_uInverseVectorAB", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121980,7 +122539,7 @@ } }, { - "__docId__": 6158, + "__docId__": 6177, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -121998,7 +122557,7 @@ } }, { - "__docId__": 6159, + "__docId__": 6178, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -122016,7 +122575,7 @@ } }, { - "__docId__": 6160, + "__docId__": 6179, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -122033,7 +122592,7 @@ "return": null }, { - "__docId__": 6161, + "__docId__": 6180, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -122054,7 +122613,7 @@ } }, { - "__docId__": 6162, + "__docId__": 6181, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -122075,7 +122634,7 @@ } }, { - "__docId__": 6163, + "__docId__": 6182, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -122096,7 +122655,7 @@ } }, { - "__docId__": 6164, + "__docId__": 6183, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -122112,7 +122671,7 @@ "return": null }, { - "__docId__": 6166, + "__docId__": 6185, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js~DTXTrianglesSnapInitRenderer", @@ -122128,7 +122687,7 @@ "return": null }, { - "__docId__": 6168, + "__docId__": 6187, "kind": "file", "name": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", "content": "import {Program} from \"../../../../webgl/Program.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempVec3e = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class DTXTrianglesSnapRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, dataTextureLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = dataTextureLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = dataTextureLayer._state;\n const textureState = state.textureState;\n const origin = dataTextureLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = dataTextureLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n \n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n textureState.bindCommonTextures(\n this._program,\n this.uTexturePerObjectPositionsDecodeMatrix,\n this._uTexturePerVertexIdCoordinates,\n this.uTexturePerObjectColorsAndFlags,\n this._uTexturePerObjectMatrix\n );\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3b;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrixConjugate);\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n const glMode = (frameCtx.snapMode === \"edge\") ? gl.LINES : gl.POINTS;\n if (state.numEdgeIndices8Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 8 // 8 bits edge indices\n );\n gl.drawArrays(glMode, 0, state.numEdgeIndices8Bits);\n }\n if (state.numEdgeIndices16Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 16 // 16 bits edge indices\n );\n gl.drawArrays(glMode, 0, state.numEdgeIndices16Bits);\n }\n if (state.numEdgeIndices32Bits > 0) {\n textureState.bindEdgeIndicesTextures(\n this._program,\n this._uTexturePerEdgeIdPortionIds,\n this._uTexturePerPolygonIdEdgeIndices,\n 32 // 32 bits edge indices\n );\n gl.drawArrays(glMode, 0, state.numEdgeIndices32Bits);\n }\n frameCtx.drawElements++;\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uSceneModelMatrix = program.getLocation(\"sceneModelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uTexturePerObjectPositionsDecodeMatrix = \"uObjectPerObjectPositionsDecodeMatrix\";\n this.uTexturePerObjectColorsAndFlags = \"uObjectPerObjectColorsAndFlags\";\n this._uTexturePerVertexIdCoordinates = \"uTexturePerVertexIdCoordinates\";\n this._uTexturePerPolygonIdEdgeIndices = \"uTexturePerPolygonIdEdgeIndices\";\n this._uTexturePerEdgeIdPortionIds = \"uTexturePerEdgeIdPortionIds\";\n this._uTextureModelMatrices = \"uTextureModelMatrices\";\n this._uTexturePerObjectMatrix= \"uTexturePerObjectMatrix\";\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n this.uVectorA = program.getLocation(\"uSnapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"uSnapInvVectorAB\");\n this._uLayerNumber = program.getLocation(\"uLayerNumber\");\n this._uCoordinateScaler = program.getLocation(\"uCoordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry edges drawing vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"uniform mat4 sceneModelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n\n src.push(\"uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;\");\n src.push(\"uniform lowp usampler2D uObjectPerObjectColorsAndFlags;\");\n src.push(\"uniform highp sampler2D uTexturePerObjectMatrix;\");\n src.push(\"uniform mediump usampler2D uTexturePerVertexIdCoordinates;\");\n src.push(\"uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;\");\n src.push(\"uniform mediump usampler2D uTexturePerEdgeIdPortionIds;\");\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n src.push(\"uniform vec2 uSnapVectorA;\");\n src.push(\"uniform vec2 uSnapInvVectorAB;\");\n\n src.push(\"vec3 positions[3];\")\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - uSnapVectorA.x) * uSnapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - uSnapVectorA.y) * uSnapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"flat out uint vFlags2;\");\n }\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n\n // constants\n src.push(\"int edgeIndex = gl_VertexID / 2;\")\n\n // get packed object-id\n src.push(\"int h_packed_object_id_index = (edgeIndex >> 3) & 4095;\")\n src.push(\"int v_packed_object_id_index = (edgeIndex >> 3) >> 12;\")\n\n src.push(\"int objectIndex = int(texelFetch(uTexturePerEdgeIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);\");\n src.push(\"ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);\");\n\n // get flags & flags2\n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n\n src.push(\"{\");\n\n // get vertex base\n src.push(\"ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));\");\n src.push(\"ivec4 packedEdgeIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+6, objectIndexCoords.y), 0));\");\n src.push(\"int edgeIndexBaseOffset = (packedEdgeIndexBaseOffset.r << 24) + (packedEdgeIndexBaseOffset.g << 16) + (packedEdgeIndexBaseOffset.b << 8) + packedEdgeIndexBaseOffset.a;\");\n \n src.push(\"int h_index = (edgeIndex - edgeIndexBaseOffset) & 4095;\")\n src.push(\"int v_index = (edgeIndex - edgeIndexBaseOffset) >> 12;\")\n \n src.push(\"ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdEdgeIndices, ivec2(h_index, v_index), 0));\");\n \n src.push(\"ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;\")\n \n src.push(\"int indexPositionH = uniqueVertexIndexes[gl_VertexID % 2] & 4095;\")\n src.push(\"int indexPositionV = uniqueVertexIndexes[gl_VertexID % 2] >> 12;\")\n\n src.push(\"mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n src.push(\"mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));\")\n \n src.push(\"uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);\");\n src.push(\"uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);\");\n \n src.push(\"vec3 position = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH, indexPositionV), 0));\")\n \n src.push(\"vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); \");\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2.r;\");\n }\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n src.push(\"vViewPosition = clipPos;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"gl_PointSize = 1.0;\"); // Windows needs this?\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Triangles dataTexture pick depth fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int uLayerNumber;\");\n src.push(\"uniform vec3 uCoordinateScaler;\");\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in uint vFlags2;\");\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"out highp ivec4 outCoords;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = vFlags2 > 0u;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz * uCoordinateScaler.xyz, uLayerNumber);\")\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -122139,7 +122698,7 @@ "lineNumber": 1 }, { - "__docId__": 6169, + "__docId__": 6188, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", @@ -122160,7 +122719,7 @@ "ignore": true }, { - "__docId__": 6170, + "__docId__": 6189, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", @@ -122181,7 +122740,7 @@ "ignore": true }, { - "__docId__": 6171, + "__docId__": 6190, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", @@ -122202,7 +122761,7 @@ "ignore": true }, { - "__docId__": 6172, + "__docId__": 6191, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", @@ -122223,7 +122782,7 @@ "ignore": true }, { - "__docId__": 6173, + "__docId__": 6192, "kind": "variable", "name": "tempVec3e", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", @@ -122244,7 +122803,7 @@ "ignore": true }, { - "__docId__": 6174, + "__docId__": 6193, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", @@ -122265,7 +122824,7 @@ "ignore": true }, { - "__docId__": 6175, + "__docId__": 6194, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", @@ -122286,7 +122845,7 @@ "ignore": true }, { - "__docId__": 6176, + "__docId__": 6195, "kind": "class", "name": "DTXTrianglesSnapRenderer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js", @@ -122302,7 +122861,7 @@ "ignore": true }, { - "__docId__": 6177, + "__docId__": 6196, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122316,7 +122875,7 @@ "undocument": true }, { - "__docId__": 6178, + "__docId__": 6197, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122334,7 +122893,7 @@ } }, { - "__docId__": 6179, + "__docId__": 6198, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122352,7 +122911,7 @@ } }, { - "__docId__": 6180, + "__docId__": 6199, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122372,7 +122931,7 @@ } }, { - "__docId__": 6181, + "__docId__": 6200, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122393,7 +122952,7 @@ } }, { - "__docId__": 6182, + "__docId__": 6201, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122428,7 +122987,7 @@ "return": null }, { - "__docId__": 6183, + "__docId__": 6202, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122445,7 +123004,7 @@ "return": null }, { - "__docId__": 6184, + "__docId__": 6203, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122463,7 +123022,7 @@ } }, { - "__docId__": 6185, + "__docId__": 6204, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122480,7 +123039,7 @@ } }, { - "__docId__": 6186, + "__docId__": 6205, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122498,7 +123057,7 @@ } }, { - "__docId__": 6187, + "__docId__": 6206, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122516,7 +123075,7 @@ } }, { - "__docId__": 6188, + "__docId__": 6207, "kind": "member", "name": "_uSceneModelMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122534,7 +123093,7 @@ } }, { - "__docId__": 6189, + "__docId__": 6208, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122552,7 +123111,7 @@ } }, { - "__docId__": 6190, + "__docId__": 6209, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122570,7 +123129,7 @@ } }, { - "__docId__": 6191, + "__docId__": 6210, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122588,7 +123147,7 @@ } }, { - "__docId__": 6192, + "__docId__": 6211, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122606,7 +123165,7 @@ } }, { - "__docId__": 6193, + "__docId__": 6212, "kind": "member", "name": "uTexturePerObjectPositionsDecodeMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122623,7 +123182,7 @@ } }, { - "__docId__": 6194, + "__docId__": 6213, "kind": "member", "name": "uTexturePerObjectColorsAndFlags", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122640,7 +123199,7 @@ } }, { - "__docId__": 6195, + "__docId__": 6214, "kind": "member", "name": "_uTexturePerVertexIdCoordinates", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122658,7 +123217,7 @@ } }, { - "__docId__": 6196, + "__docId__": 6215, "kind": "member", "name": "_uTexturePerPolygonIdEdgeIndices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122676,7 +123235,7 @@ } }, { - "__docId__": 6197, + "__docId__": 6216, "kind": "member", "name": "_uTexturePerEdgeIdPortionIds", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122694,7 +123253,7 @@ } }, { - "__docId__": 6198, + "__docId__": 6217, "kind": "member", "name": "_uTextureModelMatrices", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122712,7 +123271,7 @@ } }, { - "__docId__": 6199, + "__docId__": 6218, "kind": "member", "name": "_uTexturePerObjectMatrix", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122730,7 +123289,7 @@ } }, { - "__docId__": 6200, + "__docId__": 6219, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122748,7 +123307,7 @@ } }, { - "__docId__": 6201, + "__docId__": 6220, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122765,7 +123324,7 @@ } }, { - "__docId__": 6202, + "__docId__": 6221, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122782,7 +123341,7 @@ } }, { - "__docId__": 6203, + "__docId__": 6222, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122800,7 +123359,7 @@ } }, { - "__docId__": 6204, + "__docId__": 6223, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122818,7 +123377,7 @@ } }, { - "__docId__": 6205, + "__docId__": 6224, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122835,7 +123394,7 @@ "return": null }, { - "__docId__": 6206, + "__docId__": 6225, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122856,7 +123415,7 @@ } }, { - "__docId__": 6207, + "__docId__": 6226, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122877,7 +123436,7 @@ } }, { - "__docId__": 6208, + "__docId__": 6227, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122898,7 +123457,7 @@ } }, { - "__docId__": 6209, + "__docId__": 6228, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122914,7 +123473,7 @@ "return": null }, { - "__docId__": 6211, + "__docId__": 6230, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js~DTXTrianglesSnapRenderer", @@ -122930,7 +123489,7 @@ "return": null }, { - "__docId__": 6213, + "__docId__": 6232, "kind": "file", "name": "src/viewer/scene/model/index.js", "content": "\nexport * from \"./PerformanceModel.js\";\nexport * from \"./SceneModelTransform.js\";\nexport * from \"./SceneModelMesh.js\";\nexport * from \"./SceneModel.js\";", @@ -122941,7 +123500,7 @@ "lineNumber": 1 }, { - "__docId__": 6214, + "__docId__": 6233, "kind": "file", "name": "src/viewer/scene/model/rebucketPositions.js", "content": "/**\n * @author https://github.com/tmarti, with support from https://tribia.com/\n * @license MIT\n **/\n\nconst MAX_RE_BUCKET_FAN_OUT = 8;\n\nlet bucketsForIndices = null;\n\nfunction compareBuckets(a, b) {\n const aa = a * 3;\n const bb = b * 3;\n let aa1, aa2, aa3, bb1, bb2, bb3;\n const minBucketA = Math.min(\n aa1 = bucketsForIndices[aa],\n aa2 = bucketsForIndices[aa + 1],\n aa3 = bucketsForIndices[aa + 2]\n );\n const minBucketB = Math.min(\n bb1 = bucketsForIndices[bb],\n bb2 = bucketsForIndices[bb + 1],\n bb3 = bucketsForIndices[bb + 2]\n );\n if (minBucketA !== minBucketB) {\n return minBucketA - minBucketB;\n }\n const maxBucketA = Math.max(aa1, aa2, aa3);\n const maxBucketB = Math.max(bb1, bb2, bb3,);\n if (maxBucketA !== maxBucketB) {\n return maxBucketA - maxBucketB;\n }\n return 0;\n}\n\nfunction preSortIndices(indices, bitsPerBucket) {\n const seq = new Int32Array(indices.length / 3);\n for (let i = 0, len = seq.length; i < len; i++) {\n seq[i] = i;\n }\n bucketsForIndices = new Int32Array(indices.length);\n for (let i = 0, len = indices.length; i < len; i++) {\n bucketsForIndices[i] = indices[i] >> bitsPerBucket;\n }\n seq.sort(compareBuckets);\n const sortedIndices = new Int32Array(indices.length);\n for (let i = 0, len = seq.length; i < len; i++) {\n sortedIndices[i * 3 + 0] = indices[seq[i] * 3 + 0];\n sortedIndices[i * 3 + 1] = indices[seq[i] * 3 + 1];\n sortedIndices[i * 3 + 2] = indices[seq[i] * 3 + 2];\n }\n return sortedIndices;\n}\n\nlet compareEdgeIndices = null;\n\nfunction compareIndices(a, b) {\n let retVal = compareEdgeIndices[a * 2] - compareEdgeIndices[b * 2];\n if (retVal !== 0) {\n return retVal;\n }\n return compareEdgeIndices[a * 2 + 1] - compareEdgeIndices[b * 2 + 1];\n}\n\nfunction preSortEdgeIndices(edgeIndices) {\n if ((edgeIndices || []).length === 0) {\n return [];\n }\n let seq = new Int32Array(edgeIndices.length / 2);\n for (let i = 0, len = seq.length; i < len; i++) {\n seq[i] = i;\n }\n for (let i = 0, j = 0, len = edgeIndices.length; i < len; i += 2) {\n if (edgeIndices[i] > edgeIndices[i + 1]) {\n let tmp = edgeIndices[i];\n edgeIndices[i] = edgeIndices[i + 1];\n edgeIndices[i + 1] = tmp;\n }\n }\n compareEdgeIndices = new Int32Array(edgeIndices);\n seq.sort(compareIndices);\n const sortedEdgeIndices = new Int32Array(edgeIndices.length);\n for (let i = 0, len = seq.length; i < len; i++) {\n sortedEdgeIndices[i * 2 + 0] = edgeIndices[seq[i] * 2 + 0];\n sortedEdgeIndices[i * 2 + 1] = edgeIndices[seq[i] * 2 + 1];\n }\n return sortedEdgeIndices;\n}\n\n/**\n * @param {{positionsCompressed: number[], indices: number[], edgeIndices: number[]}} mesh \n * @param {number} bitsPerBucket \n * @param {boolean} checkResult \n * \n * @returns {{positionsCompressed: number[], indices: number[], edgeIndices: number[]}[]}\n */\nfunction rebucketPositions(mesh, bitsPerBucket, checkResult = false) {\n const positionsCompressed = (mesh.positionsCompressed || []);\n const indices = preSortIndices(mesh.indices || [], bitsPerBucket);\n const edgeIndices = preSortEdgeIndices(mesh.edgeIndices || []);\n\n function edgeSearch(el0, el1) { // Code adapted from https://stackoverflow.com/questions/22697936/binary-search-in-javascript\n if (el0 > el1) {\n let tmp = el0;\n el0 = el1;\n el1 = tmp;\n }\n\n function compare_fn(a, b) {\n if (a !== el0) {\n return el0 - a;\n }\n if (b !== el1) {\n return el1 - b;\n }\n return 0;\n }\n\n let m = 0;\n let n = (edgeIndices.length >> 1) - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = compare_fn(edgeIndices[k * 2], edgeIndices[k * 2 + 1]);\n if (cmp > 0) {\n m = k + 1;\n } else if (cmp < 0) {\n n = k - 1;\n } else {\n return k;\n }\n }\n return -m - 1;\n }\n\n const alreadyOutputEdgeIndices = new Int32Array(edgeIndices.length / 2);\n alreadyOutputEdgeIndices.fill(0);\n\n const numPositions = positionsCompressed.length / 3;\n\n if (numPositions > ((1 << bitsPerBucket) * MAX_RE_BUCKET_FAN_OUT)) {\n return [mesh];\n }\n\n const bucketIndicesRemap = new Int32Array(numPositions);\n bucketIndicesRemap.fill(-1);\n\n const buckets = [];\n\n function addEmptyBucket() {\n bucketIndicesRemap.fill(-1);\n\n const newBucket = {\n positionsCompressed: [],\n indices: [],\n edgeIndices: [],\n maxNumPositions: (1 << bitsPerBucket) - bitsPerBucket,\n numPositions: 0,\n bucketNumber: buckets.length,\n };\n\n buckets.push(newBucket);\n\n return newBucket;\n }\n\n let currentBucket = addEmptyBucket();\n\n // let currentBucket = 0;\n\n let retVal = 0;\n\n for (let i = 0, len = indices.length; i < len; i += 3) {\n let additonalPositionsInBucket = 0;\n\n const ii0 = indices[i];\n const ii1 = indices[i + 1];\n const ii2 = indices[i + 2];\n\n if (bucketIndicesRemap[ii0] === -1) {\n additonalPositionsInBucket++;\n }\n\n if (bucketIndicesRemap[ii1] === -1) {\n additonalPositionsInBucket++;\n }\n\n if (bucketIndicesRemap[ii2] === -1) {\n additonalPositionsInBucket++;\n }\n\n if ((additonalPositionsInBucket + currentBucket.numPositions) > currentBucket.maxNumPositions) {\n currentBucket = addEmptyBucket();\n }\n\n if (currentBucket.bucketNumber > MAX_RE_BUCKET_FAN_OUT) {\n return [mesh];\n }\n\n if (bucketIndicesRemap[ii0] === -1) {\n bucketIndicesRemap[ii0] = currentBucket.numPositions++;\n currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3 + 1]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3 + 2]);\n }\n\n if (bucketIndicesRemap[ii1] === -1) {\n bucketIndicesRemap[ii1] = currentBucket.numPositions++;\n currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3 + 1]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3 + 2]);\n }\n\n if (bucketIndicesRemap[ii2] === -1) {\n bucketIndicesRemap[ii2] = currentBucket.numPositions++;\n currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3 + 1]);\n currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3 + 2]);\n }\n\n currentBucket.indices.push(bucketIndicesRemap[ii0]);\n currentBucket.indices.push(bucketIndicesRemap[ii1]);\n currentBucket.indices.push(bucketIndicesRemap[ii2]);\n\n // Check possible edge1\n let edgeIndex;\n\n if ((edgeIndex = edgeSearch(ii0, ii1)) >= 0) {\n if (alreadyOutputEdgeIndices[edgeIndex] === 0) {\n alreadyOutputEdgeIndices[edgeIndex] = 1;\n\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]);\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]);\n }\n }\n\n if ((edgeIndex = edgeSearch(ii0, ii2)) >= 0) {\n if (alreadyOutputEdgeIndices[edgeIndex] === 0) {\n alreadyOutputEdgeIndices[edgeIndex] = 1;\n\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]);\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]);\n }\n }\n\n if ((edgeIndex = edgeSearch(ii1, ii2)) >= 0) {\n if (alreadyOutputEdgeIndices[edgeIndex] === 0) {\n alreadyOutputEdgeIndices[edgeIndex] = 1;\n\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]);\n currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]);\n }\n }\n }\n\n const prevBytesPerIndex = bitsPerBucket / 8 * 2;\n const newBytesPerIndex = bitsPerBucket / 8;\n\n const originalSize = positionsCompressed.length * 2 + (indices.length + edgeIndices.length) * prevBytesPerIndex;\n\n let newSize = 0;\n let newPositions = -positionsCompressed.length / 3;\n\n buckets.forEach(bucket => {\n newSize += bucket.positionsCompressed.length * 2 + (bucket.indices.length + bucket.edgeIndices.length) * newBytesPerIndex;\n newPositions += bucket.positionsCompressed.length / 3;\n });\n if (newSize > originalSize) {\n return [mesh];\n }\n if (checkResult) {\n doCheckResult(buckets, mesh);\n }\n return buckets;\n}\n\nfunction unbucket(buckets) {\n const positionsCompressed = [];\n const indices = [];\n const edgeIndices = [];\n let positionsBase = 0;\n buckets.forEach(bucket => {\n bucket.positionsCompressed.forEach(coord => {\n positionsCompressed.push(coord);\n });\n bucket.indices.forEach(index => {\n indices.push(index + positionsBase);\n });\n bucket.edgeIndices.forEach(edgeIndex => {\n edgeIndices.push(edgeIndex + positionsBase);\n });\n positionsBase += positionsCompressed.length / 3;\n });\n return {positionsCompressed, indices, edgeIndices};\n}\n\nfunction doCheckResult(buckets, mesh) {\n const meshDict = {};\n const edgesDict = {};\n\n let edgeIndicesCount = 0;\n\n buckets.forEach(bucket => {\n const indices = bucket.indices;\n const edgeIndices = bucket.edgeIndices;\n const positionsCompressed = bucket.positionsCompressed;\n\n for (let i = 0, len = indices.length; i < len; i += 3) {\n const key = positionsCompressed[indices[i] * 3] + \"_\" + positionsCompressed[indices[i] * 3 + 1] + \"_\" + positionsCompressed[indices[i] * 3 + 2] + \"/\" +\n positionsCompressed[indices[i + 1] * 3] + \"_\" + positionsCompressed[indices[i + 1] * 3 + 1] + \"_\" + positionsCompressed[indices[i + 1] * 3 + 2] + \"/\" +\n positionsCompressed[indices[i + 2] * 3] + \"_\" + positionsCompressed[indices[i + 2] * 3 + 1] + \"_\" + positionsCompressed[indices[i + 2] * 3 + 2];\n meshDict[key] = true;\n }\n\n edgeIndicesCount += bucket.edgeIndices.length / 2;\n\n for (let i = 0, len = edgeIndices.length; i < len; i += 2) {\n const key = positionsCompressed[edgeIndices[i] * 3] + \"_\" + positionsCompressed[edgeIndices[i] * 3 + 1] + \"_\" + positionsCompressed[edgeIndices[i] * 3 + 2] + \"/\" +\n positionsCompressed[edgeIndices[i + 1] * 3] + \"_\" + positionsCompressed[edgeIndices[i + 1] * 3 + 1] + \"_\" + positionsCompressed[edgeIndices[i + 1] * 3 + 2] + \"/\";\n edgesDict[key] = true;\n }\n });\n\n {\n const indices = mesh.indices;\n const edgeIndices = mesh.edgeIndices;\n const positionsCompressed = mesh.positionsCompressed;\n\n for (let i = 0, len = indices.length; i < len; i += 3) {\n const key = positionsCompressed[indices[i] * 3] + \"_\" + positionsCompressed[indices[i] * 3 + 1] + \"_\" + positionsCompressed[indices[i] * 3 + 2] + \"/\" +\n positionsCompressed[indices[i + 1] * 3] + \"_\" + positionsCompressed[indices[i + 1] * 3 + 1] + \"_\" + positionsCompressed[indices[i + 1] * 3 + 2] + \"/\" +\n positionsCompressed[indices[i + 2] * 3] + \"_\" + positionsCompressed[indices[i + 2] * 3 + 1] + \"_\" + positionsCompressed[indices[i + 2] * 3 + 2];\n\n if (!(key in meshDict)) {\n console.log(\"Not found \" + key);\n throw \"Ohhhh!\";\n }\n }\n\n // for (var i = 0, len = edgeIndices.length; i < len; i+=2)\n // {\n // var key = positionsCompressed[edgeIndices[i]*3] + \"_\" + positionsCompressed[edgeIndices[i]*3+1] + \"_\" + positionsCompressed[edgeIndices[i]*3+2] + \"/\" +\n // positionsCompressed[edgeIndices[i+1]*3] + \"_\" + positionsCompressed[edgeIndices[i+1]*3+1] + \"_\" + positionsCompressed[edgeIndices[i+1]*3+2] + \"/\";\n\n // if (!(key in edgesDict)) {\n // var key2 = edgeIndices[i] + \"_\" + edgeIndices[i+1];\n\n // console.log (\" - Not found \" + key);\n // console.log (\" - Not found \" + key2);\n // // throw \"Ohhhh2!\";\n // }\n // }\n }\n}\n\nexport {rebucketPositions}", @@ -122952,7 +123511,7 @@ "lineNumber": 1 }, { - "__docId__": 6215, + "__docId__": 6234, "kind": "variable", "name": "MAX_RE_BUCKET_FAN_OUT", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -122982,7 +123541,7 @@ "ignore": true }, { - "__docId__": 6216, + "__docId__": 6235, "kind": "variable", "name": "bucketsForIndices", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123003,7 +123562,7 @@ "ignore": true }, { - "__docId__": 6217, + "__docId__": 6236, "kind": "function", "name": "compareBuckets", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123040,7 +123599,7 @@ "ignore": true }, { - "__docId__": 6218, + "__docId__": 6237, "kind": "function", "name": "preSortIndices", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123077,7 +123636,7 @@ "ignore": true }, { - "__docId__": 6219, + "__docId__": 6238, "kind": "variable", "name": "compareEdgeIndices", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123098,7 +123657,7 @@ "ignore": true }, { - "__docId__": 6220, + "__docId__": 6239, "kind": "function", "name": "compareIndices", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123135,7 +123694,7 @@ "ignore": true }, { - "__docId__": 6221, + "__docId__": 6240, "kind": "function", "name": "preSortEdgeIndices", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123166,7 +123725,7 @@ "ignore": true }, { - "__docId__": 6222, + "__docId__": 6241, "kind": "function", "name": "unbucket", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123197,7 +123756,7 @@ "ignore": true }, { - "__docId__": 6223, + "__docId__": 6242, "kind": "function", "name": "doCheckResult", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123230,7 +123789,7 @@ "ignore": true }, { - "__docId__": 6224, + "__docId__": 6243, "kind": "function", "name": "rebucketPositions", "memberof": "src/viewer/scene/model/rebucketPositions.js", @@ -123292,7 +123851,7 @@ } }, { - "__docId__": 6225, + "__docId__": 6244, "kind": "file", "name": "src/viewer/scene/model/vbo/ScratchMemory.js", "content": "/**\n * Provides scratch memory for methods like TrianglesBatchingLayer setFlags() and setColors(),\n * so they don't need to allocate temporary arrays that need garbage collection.\n *\n * @private\n */\nclass ScratchMemory {\n\n constructor() {\n this._uint8Arrays = {};\n this._float32Arrays = {};\n }\n\n _clear() {\n this._uint8Arrays = {};\n this._float32Arrays = {};\n }\n\n getUInt8Array(len) {\n let uint8Array = this._uint8Arrays[len];\n if (!uint8Array) {\n uint8Array = new Uint8Array(len);\n this._uint8Arrays[len] = uint8Array;\n }\n return uint8Array;\n }\n\n getFloat32Array(len) {\n let float32Array = this._float32Arrays[len];\n if (!float32Array) {\n float32Array = new Float32Array(len);\n this._float32Arrays[len] = float32Array;\n }\n return float32Array;\n }\n}\n\nconst batchingLayerScratchMemory = new ScratchMemory();\n\nlet countUsers = 0;\n\n/**\n * @private\n */\nfunction getScratchMemory() {\n countUsers++;\n return batchingLayerScratchMemory;\n}\n\n/**\n * @private\n */\nfunction putScratchMemory() {\n if (countUsers === 0) {\n return;\n }\n countUsers--;\n if (countUsers === 0) {\n batchingLayerScratchMemory._clear();\n }\n}\n\nexport {getScratchMemory, putScratchMemory};", @@ -123303,7 +123862,7 @@ "lineNumber": 1 }, { - "__docId__": 6226, + "__docId__": 6245, "kind": "class", "name": "ScratchMemory", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js", @@ -123319,7 +123878,7 @@ "ignore": true }, { - "__docId__": 6227, + "__docId__": 6246, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js~ScratchMemory", @@ -123333,7 +123892,7 @@ "undocument": true }, { - "__docId__": 6228, + "__docId__": 6247, "kind": "member", "name": "_uint8Arrays", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js~ScratchMemory", @@ -123351,7 +123910,7 @@ } }, { - "__docId__": 6229, + "__docId__": 6248, "kind": "member", "name": "_float32Arrays", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js~ScratchMemory", @@ -123369,7 +123928,7 @@ } }, { - "__docId__": 6230, + "__docId__": 6249, "kind": "method", "name": "_clear", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js~ScratchMemory", @@ -123386,7 +123945,7 @@ "return": null }, { - "__docId__": 6233, + "__docId__": 6252, "kind": "method", "name": "getUInt8Array", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js~ScratchMemory", @@ -123413,7 +123972,7 @@ } }, { - "__docId__": 6234, + "__docId__": 6253, "kind": "method", "name": "getFloat32Array", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js~ScratchMemory", @@ -123440,7 +123999,7 @@ } }, { - "__docId__": 6235, + "__docId__": 6254, "kind": "variable", "name": "batchingLayerScratchMemory", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js", @@ -123461,7 +124020,7 @@ "ignore": true }, { - "__docId__": 6236, + "__docId__": 6255, "kind": "variable", "name": "countUsers", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js", @@ -123482,7 +124041,7 @@ "ignore": true }, { - "__docId__": 6237, + "__docId__": 6256, "kind": "function", "name": "getScratchMemory", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js", @@ -123505,7 +124064,7 @@ } }, { - "__docId__": 6238, + "__docId__": 6257, "kind": "function", "name": "putScratchMemory", "memberof": "src/viewer/scene/model/vbo/ScratchMemory.js", @@ -123524,7 +124083,7 @@ "return": null }, { - "__docId__": 6239, + "__docId__": 6258, "kind": "file", "name": "src/viewer/scene/model/vbo/VBORenderer.js", "content": "import {createRTCViewMat, getPlaneRTCPos} from \"../../math/rtcCoords.js\";\nimport {math} from \"../../math/math.js\";\nimport {Program} from \"../../webgl/Program.js\";\nimport {stats} from \"../../stats.js\"\nimport {WEBGL_INFO} from \"../../webglInfo.js\";\nimport {RENDER_PASSES} from \"./../RENDER_PASSES.js\";\n\nconst defaultColor = new Float32Array([1, 1, 1, 1]);\nconst edgesDefaultColor = new Float32Array([0, 0, 0, 1]);\n\nconst tempVec4 = math.vec4();\nconst tempVec3a = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nexport class VBORenderer {\n constructor(scene, withSAO = false, {instancing = false, edges = false} = {}) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._instancing = instancing;\n this._edges = edges;\n this._hash = this._getHash();\n\n /**\n * Matrices Uniform Block Buffer\n *\n * In shaders, matrices in the Matrices Uniform Block MUST be set in this order:\n * - worldMatrix\n * - viewMatrix\n * - projMatrix\n * - positionsDecodeMatrix\n * - worldNormalMatrix\n * - viewNormalMatrix\n */\n this._matricesUniformBlockBufferBindingPoint = 0;\n\n this._matricesUniformBlockBuffer = this._scene.canvas.gl.createBuffer();\n this._matricesUniformBlockBufferData = new Float32Array(4 * 4 * 6); // there is 6 mat4\n\n /**\n * A Vertex Array Object by Layer\n */\n this._vaoCache = new WeakMap();\n\n this._allocate();\n }\n\n /**\n * Should be overrided by subclasses if it does not only \"depend\" on section planes state.\n * @returns { string }\n */\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n return [\"\"];\n }\n\n _buildFragmentShader() {\n return [\"\"];\n }\n\n _addMatricesUniformBlockLines(src, normals = false) {\n src.push(\"uniform Matrices {\");\n src.push(\" mat4 worldMatrix;\");\n src.push(\" mat4 viewMatrix;\");\n src.push(\" mat4 projMatrix;\");\n src.push(\" mat4 positionsDecodeMatrix;\");\n if (normals) {\n src.push(\" mat4 worldNormalMatrix;\");\n src.push(\" mat4 viewNormalMatrix;\");\n }\n src.push(\"};\");\n return src;\n }\n\n _addRemapClipPosLines(src, viewportSize = 1) {\n src.push(\"uniform vec2 drawingBufferSize;\");\n src.push(\"uniform vec2 pickClipPos;\");\n\n src.push(\"vec4 remapClipPos(vec4 clipPos) {\");\n src.push(\" clipPos.xy /= clipPos.w;\");\n if (viewportSize === 1) {\n src.push(\" clipPos.xy = (clipPos.xy - pickClipPos) * drawingBufferSize;\");\n } else {\n src.push(` clipPos.xy = (clipPos.xy - pickClipPos) * (drawingBufferSize / float(${viewportSize}));`);\n }\n src.push(\" clipPos.xy *= clipPos.w;\")\n src.push(\" return clipPos;\")\n src.push(\"}\");\n return src;\n }\n\n getValid() {\n return this._hash === this._getHash();\n }\n\n setSectionPlanesStateUniforms(layer) {\n const scene = this._scene;\n const {gl} = scene.canvas;\n const {model, layerIndex} = layer;\n\n const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numAllocatedSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n if (scene.crossSections) {\n gl.uniform4fv(this._uSliceColor, scene.crossSections.sliceColor);\n gl.uniform1f(this._uSliceThickness, scene.crossSections.sliceThickness);\n }\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n if (sectionPlaneIndex < numSectionPlanes) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n const origin = layer._state.origin;\n if (origin) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n } else {\n gl.uniform1i(sectionPlaneUniforms.active, 0);\n }\n }\n }\n }\n }\n\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uColor = program.getLocation(\"color\");\n if (!this._uColor) {\n // some shader may have color as attribute, in this case the uniform must be renamed silhouetteColor\n this._uColor = program.getLocation(\"silhouetteColor\");\n }\n this._uUVDecodeMatrix = program.getLocation(\"uvDecodeMatrix\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n\n gl.uniformBlockBinding(\n program.handle,\n gl.getUniformBlockIndex(program.handle, \"Matrices\"),\n this._matricesUniformBlockBufferBindingPoint\n );\n\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n if (scene.logarithmicDepthBufferEnabled) {\n this._uZFar = program.getLocation(\"zFar\");\n }\n\n this._uLightAmbient = program.getLocation(\"lightAmbient\");\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n\n // TODO add a gard to prevent light params if not affected by light ?\n const lights = lightsState.lights;\n let light;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n this._uReflectionMap = \"reflectionMap\";\n }\n\n if (lightsState.lightMaps.length > 0) {\n this._uLightMap = \"lightMap\";\n }\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aUV = program.getAttribute(\"uv\");\n this._aColor = program.getAttribute(\"color\");\n this._aMetallicRoughness = program.getAttribute(\"metallicRoughness\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n this._uPickClipPos = program.getLocation(\"pickClipPos\");\n this._uDrawingBufferSize = program.getLocation(\"drawingBufferSize\");\n\n this._uColorMap = \"uColorMap\";\n this._uMetallicRoughMap = \"uMetallicRoughMap\";\n this._uEmissiveMap = \"uEmissiveMap\";\n this._uNormalMap = \"uNormalMap\";\n this._uAOMap = \"uAOMap\";\n\n if (this._instancing) {\n\n this._aModelMatrix = program.getAttribute(\"modelMatrix\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._aModelNormalMatrixCol0 = program.getAttribute(\"modelNormalMatrixCol0\");\n this._aModelNormalMatrixCol1 = program.getAttribute(\"modelNormalMatrixCol1\");\n this._aModelNormalMatrixCol2 = program.getAttribute(\"modelNormalMatrixCol2\");\n }\n\n if (this._withSAO) {\n this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n if (scene.pointsMaterial._state.filterIntensity) {\n this._uIntensityRange = program.getLocation(\"intensityRange\");\n }\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.crossSections) {\n this._uSliceColor = program.getLocation(\"sliceColor\");\n this._uSliceThickness = program.getLocation(\"sliceThickness\");\n }\n }\n\n _bindProgram(frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const lightsState = scene._lightsState;\n const lights = lightsState.lights;\n\n program.bind();\n\n frameCtx.textureUnit = 0;\n\n if (this._uLightAmbient) {\n gl.uniform4fv(this._uLightAmbient, lightsState.getAmbientColorAndIntensity());\n }\n\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n\n const light = lights[i];\n\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n }\n\n _makeVAO(state) {\n const gl = this._scene.canvas.gl;\n const vao = gl.createVertexArray();\n gl.bindVertexArray(vao);\n\n if (this._instancing) {\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1);\n\n if (this._aModelNormalMatrixCol0) {\n this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf);\n gl.vertexAttribDivisor(this._aModelNormalMatrixCol0.location, 1);\n }\n if (this._aModelNormalMatrixCol1) {\n this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf);\n gl.vertexAttribDivisor(this._aModelNormalMatrixCol1.location, 1);\n }\n if (this._aModelNormalMatrixCol2) {\n this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf);\n gl.vertexAttribDivisor(this._aModelNormalMatrixCol2.location, 1);\n }\n\n }\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aUV) {\n this._aUV.bindArrayBuffer(state.uvBuf);\n }\n\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n }\n\n if (this._aMetallicRoughness) {\n this._aMetallicRoughness.bindArrayBuffer(state.metallicRoughnessBuf);\n if (this._instancing) {\n gl.vertexAttribDivisor(this._aMetallicRoughness.location, 1);\n }\n }\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n if (this._instancing && state.colorsBuf) {\n gl.vertexAttribDivisor(this._aColor.location, 1);\n }\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n if (this._instancing) {\n gl.vertexAttribDivisor(this._aFlags.location, 1);\n }\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n if (this._instancing) {\n gl.vertexAttribDivisor(this._aOffset.location, 1);\n }\n }\n\n if (this._aPickColor) {\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n if (this._instancing) {\n gl.vertexAttribDivisor(this._aPickColor.location, 1);\n }\n }\n\n if (this._instancing) {\n if (this._edges) {\n state.edgeIndicesBuf.bind();\n } else {\n if (state.indicesBuf) {\n state.indicesBuf.bind();\n }\n }\n } else {\n if (this._edges) {\n state.edgeIndicesBuf.bind();\n } else {\n if (state.indicesBuf) {\n state.indicesBuf.bind();\n }\n }\n }\n\n return vao;\n }\n\n drawLayer(frameCtx, layer, renderPass, {colorUniform = false, incrementDrawState = false} = {}) {\n const maxTextureUnits = WEBGL_INFO.MAX_TEXTURE_IMAGE_UNITS;\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const {_state: state, model} = layer;\n const {textureSet, origin, positionsDecodeMatrix} = state;\n const lightsState = scene._lightsState;\n const pointsMaterial = scene.pointsMaterial;\n const {camera} = model.scene;\n const {viewNormalMatrix, project} = camera;\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix\n const {position, rotationMatrix, rotationMatrixConjugate, worldNormalMatrix} = model;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n if (this._vaoCache.has(layer)) {\n gl.bindVertexArray(this._vaoCache.get(layer));\n } else {\n this._vaoCache.set(layer, this._makeVAO(state))\n }\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n\n const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);\n const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);\n if (gotOrigin || gotPosition) {\n const rtcOrigin = tempVec3a;\n if (gotOrigin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n this._matricesUniformBlockBufferData.set(createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a), offset += mat4Size);\n } else {\n this._matricesUniformBlockBufferData.set(viewMatrix, offset += mat4Size);\n }\n\n this._matricesUniformBlockBufferData.set(frameCtx.pickProjMatrix || project.matrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(positionsDecodeMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(worldNormalMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(viewNormalMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n this.setSectionPlanesStateUniforms(layer);\n\n if (scene.logarithmicDepthBufferEnabled) {\n if (this._uLogDepthBufFC) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n if (this._uZFar) {\n gl.uniform1f(this._uZFar, scene.camera.project.far)\n }\n }\n\n if (this._uPickInvisible) {\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n }\n\n if (this._uPickZNear) {\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n }\n\n if (this._uPickZFar) {\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n }\n\n if (this._uPickClipPos) {\n gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);\n }\n\n if (this._uDrawingBufferSize) {\n gl.uniform2f(this._uDrawingBufferSize, gl.drawingBufferWidth, gl.drawingBufferHeight);\n }\n\n if (this._uUVDecodeMatrix) {\n gl.uniformMatrix3fv(this._uUVDecodeMatrix, false, state.uvDecodeMatrix);\n }\n\n if (this._uIntensityRange && pointsMaterial.filterIntensity) {\n gl.uniform2f(this._uIntensityRange, pointsMaterial.minIntensity, pointsMaterial.maxIntensity);\n }\n\n if (this._uPointSize) {\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n }\n\n if (this._uNearPlaneHeight) {\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ?\n 1.0\n : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n }\n\n if (textureSet) {\n const {\n colorTexture,\n metallicRoughnessTexture,\n emissiveTexture,\n normalsTexture,\n occlusionTexture,\n } = textureSet;\n\n if (this._uColorMap && colorTexture) {\n this._program.bindTexture(this._uColorMap, colorTexture.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n }\n if (this._uMetallicRoughMap && metallicRoughnessTexture) {\n this._program.bindTexture(this._uMetallicRoughMap, metallicRoughnessTexture.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n }\n if (this._uEmissiveMap && emissiveTexture) {\n this._program.bindTexture(this._uEmissiveMap, emissiveTexture.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n }\n if (this._uNormalMap && normalsTexture) {\n this._program.bindTexture(this._uNormalMap, normalsTexture.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n }\n if (this._uAOMap && occlusionTexture) {\n this._program.bindTexture(this._uAOMap, occlusionTexture.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n }\n\n }\n\n if (lightsState.reflectionMaps.length > 0 && lightsState.reflectionMaps[0].texture && this._uReflectionMap) {\n this._program.bindTexture(this._uReflectionMap, lightsState.reflectionMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (lightsState.lightMaps.length > 0 && lightsState.lightMaps[0].texture && this._uLightMap) {\n this._program.bindTexture(this._uLightMap, lightsState.lightMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (this._withSAO) {\n const sao = scene.sao;\n const saoEnabled = sao.possible;\n if (saoEnabled) {\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n tempVec4[0] = viewportWidth;\n tempVec4[1] = viewportHeight;\n tempVec4[2] = sao.blendCutoff;\n tempVec4[3] = sao.blendFactor;\n gl.uniform4fv(this._uSAOParams, tempVec4);\n this._program.bindTexture(this._uOcclusionTexture, frameCtx.occlusionTexture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n }\n\n if (colorUniform) {\n const colorKey = this._edges ? \"edgeColor\" : \"fillColor\";\n const alphaKey = this._edges ? \"edgeAlpha\" : \"fillAlpha\";\n\n if (renderPass === RENDER_PASSES[`${this._edges ? \"EDGES\" : \"SILHOUETTE\"}_XRAYED`]) {\n const material = scene.xrayMaterial._state;\n const color = material[colorKey];\n const alpha = material[alphaKey];\n gl.uniform4f(this._uColor, color[0], color[1], color[2], alpha);\n\n } else if (renderPass === RENDER_PASSES[`${this._edges ? \"EDGES\" : \"SILHOUETTE\"}_HIGHLIGHTED`]) {\n const material = scene.highlightMaterial._state;\n const color = material[colorKey];\n const alpha = material[alphaKey];\n gl.uniform4f(this._uColor, color[0], color[1], color[2], alpha);\n\n } else if (renderPass === RENDER_PASSES[`${this._edges ? \"EDGES\" : \"SILHOUETTE\"}_SELECTED`]) {\n const material = scene.selectedMaterial._state;\n const color = material[colorKey];\n const alpha = material[alphaKey];\n gl.uniform4f(this._uColor, color[0], color[1], color[2], alpha);\n\n } else {\n gl.uniform4fv(this._uColor, this._edges ? edgesDefaultColor : defaultColor);\n }\n }\n\n this._draw({state, frameCtx, incrementDrawState});\n\n gl.bindVertexArray(null);\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n stats.memory.programs--;\n }\n}", @@ -123535,7 +124094,7 @@ "lineNumber": 1 }, { - "__docId__": 6240, + "__docId__": 6259, "kind": "variable", "name": "defaultColor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js", @@ -123556,7 +124115,7 @@ "ignore": true }, { - "__docId__": 6241, + "__docId__": 6260, "kind": "variable", "name": "edgesDefaultColor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js", @@ -123577,7 +124136,7 @@ "ignore": true }, { - "__docId__": 6242, + "__docId__": 6261, "kind": "variable", "name": "tempVec4", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js", @@ -123598,7 +124157,7 @@ "ignore": true }, { - "__docId__": 6243, + "__docId__": 6262, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js", @@ -123619,7 +124178,7 @@ "ignore": true }, { - "__docId__": 6244, + "__docId__": 6263, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js", @@ -123640,7 +124199,7 @@ "ignore": true }, { - "__docId__": 6245, + "__docId__": 6264, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js", @@ -123661,7 +124220,7 @@ "ignore": true }, { - "__docId__": 6246, + "__docId__": 6265, "kind": "class", "name": "VBORenderer", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js", @@ -123677,7 +124236,7 @@ "ignore": true }, { - "__docId__": 6247, + "__docId__": 6266, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123691,7 +124250,7 @@ "undocument": true }, { - "__docId__": 6248, + "__docId__": 6267, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123709,7 +124268,7 @@ } }, { - "__docId__": 6249, + "__docId__": 6268, "kind": "member", "name": "_withSAO", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123727,7 +124286,7 @@ } }, { - "__docId__": 6250, + "__docId__": 6269, "kind": "member", "name": "_instancing", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123745,7 +124304,7 @@ } }, { - "__docId__": 6251, + "__docId__": 6270, "kind": "member", "name": "_edges", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123763,7 +124322,7 @@ } }, { - "__docId__": 6252, + "__docId__": 6271, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123781,7 +124340,7 @@ } }, { - "__docId__": 6253, + "__docId__": 6272, "kind": "member", "name": "_matricesUniformBlockBufferBindingPoint", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123798,7 +124357,7 @@ } }, { - "__docId__": 6254, + "__docId__": 6273, "kind": "member", "name": "_matricesUniformBlockBuffer", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123816,7 +124375,7 @@ } }, { - "__docId__": 6255, + "__docId__": 6274, "kind": "member", "name": "_matricesUniformBlockBufferData", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123834,7 +124393,7 @@ } }, { - "__docId__": 6256, + "__docId__": 6275, "kind": "member", "name": "_vaoCache", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123851,7 +124410,7 @@ } }, { - "__docId__": 6257, + "__docId__": 6276, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123880,7 +124439,7 @@ "params": [] }, { - "__docId__": 6258, + "__docId__": 6277, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123901,7 +124460,7 @@ } }, { - "__docId__": 6259, + "__docId__": 6278, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123922,7 +124481,7 @@ } }, { - "__docId__": 6260, + "__docId__": 6279, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123943,7 +124502,7 @@ } }, { - "__docId__": 6261, + "__docId__": 6280, "kind": "method", "name": "_addMatricesUniformBlockLines", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -123980,7 +124539,7 @@ } }, { - "__docId__": 6262, + "__docId__": 6281, "kind": "method", "name": "_addRemapClipPosLines", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124017,7 +124576,7 @@ } }, { - "__docId__": 6263, + "__docId__": 6282, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124037,7 +124596,7 @@ } }, { - "__docId__": 6264, + "__docId__": 6283, "kind": "method", "name": "setSectionPlanesStateUniforms", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124060,7 +124619,7 @@ "return": null }, { - "__docId__": 6265, + "__docId__": 6284, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124077,7 +124636,7 @@ "return": null }, { - "__docId__": 6266, + "__docId__": 6285, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124095,7 +124654,7 @@ } }, { - "__docId__": 6267, + "__docId__": 6286, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124112,7 +124671,7 @@ } }, { - "__docId__": 6268, + "__docId__": 6287, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124130,7 +124689,7 @@ } }, { - "__docId__": 6269, + "__docId__": 6288, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124148,7 +124707,7 @@ } }, { - "__docId__": 6271, + "__docId__": 6290, "kind": "member", "name": "_uUVDecodeMatrix", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124166,7 +124725,7 @@ } }, { - "__docId__": 6272, + "__docId__": 6291, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124184,7 +124743,7 @@ } }, { - "__docId__": 6273, + "__docId__": 6292, "kind": "member", "name": "_uGammaFactor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124202,7 +124761,7 @@ } }, { - "__docId__": 6274, + "__docId__": 6293, "kind": "member", "name": "_uShadowViewMatrix", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124220,7 +124779,7 @@ } }, { - "__docId__": 6275, + "__docId__": 6294, "kind": "member", "name": "_uShadowProjMatrix", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124238,7 +124797,7 @@ } }, { - "__docId__": 6276, + "__docId__": 6295, "kind": "member", "name": "_uZFar", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124256,7 +124815,7 @@ } }, { - "__docId__": 6277, + "__docId__": 6296, "kind": "member", "name": "_uLightAmbient", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124274,7 +124833,7 @@ } }, { - "__docId__": 6278, + "__docId__": 6297, "kind": "member", "name": "_uLightColor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124292,7 +124851,7 @@ } }, { - "__docId__": 6279, + "__docId__": 6298, "kind": "member", "name": "_uLightDir", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124310,7 +124869,7 @@ } }, { - "__docId__": 6280, + "__docId__": 6299, "kind": "member", "name": "_uLightPos", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124328,7 +124887,7 @@ } }, { - "__docId__": 6281, + "__docId__": 6300, "kind": "member", "name": "_uLightAttenuation", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124346,7 +124905,7 @@ } }, { - "__docId__": 6282, + "__docId__": 6301, "kind": "member", "name": "_uReflectionMap", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124364,7 +124923,7 @@ } }, { - "__docId__": 6283, + "__docId__": 6302, "kind": "member", "name": "_uLightMap", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124382,7 +124941,7 @@ } }, { - "__docId__": 6284, + "__docId__": 6303, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124400,7 +124959,7 @@ } }, { - "__docId__": 6285, + "__docId__": 6304, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124418,7 +124977,7 @@ } }, { - "__docId__": 6286, + "__docId__": 6305, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124436,7 +124995,7 @@ } }, { - "__docId__": 6287, + "__docId__": 6306, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124454,7 +125013,7 @@ } }, { - "__docId__": 6288, + "__docId__": 6307, "kind": "member", "name": "_aUV", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124472,7 +125031,7 @@ } }, { - "__docId__": 6289, + "__docId__": 6308, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124490,7 +125049,7 @@ } }, { - "__docId__": 6290, + "__docId__": 6309, "kind": "member", "name": "_aMetallicRoughness", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124508,7 +125067,7 @@ } }, { - "__docId__": 6291, + "__docId__": 6310, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124526,7 +125085,7 @@ } }, { - "__docId__": 6292, + "__docId__": 6311, "kind": "member", "name": "_aPickColor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124544,7 +125103,7 @@ } }, { - "__docId__": 6293, + "__docId__": 6312, "kind": "member", "name": "_uPickZNear", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124562,7 +125121,7 @@ } }, { - "__docId__": 6294, + "__docId__": 6313, "kind": "member", "name": "_uPickZFar", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124580,7 +125139,7 @@ } }, { - "__docId__": 6295, + "__docId__": 6314, "kind": "member", "name": "_uPickClipPos", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124598,7 +125157,7 @@ } }, { - "__docId__": 6296, + "__docId__": 6315, "kind": "member", "name": "_uDrawingBufferSize", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124616,7 +125175,7 @@ } }, { - "__docId__": 6297, + "__docId__": 6316, "kind": "member", "name": "_uColorMap", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124634,7 +125193,7 @@ } }, { - "__docId__": 6298, + "__docId__": 6317, "kind": "member", "name": "_uMetallicRoughMap", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124652,7 +125211,7 @@ } }, { - "__docId__": 6299, + "__docId__": 6318, "kind": "member", "name": "_uEmissiveMap", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124670,7 +125229,7 @@ } }, { - "__docId__": 6300, + "__docId__": 6319, "kind": "member", "name": "_uNormalMap", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124688,7 +125247,7 @@ } }, { - "__docId__": 6301, + "__docId__": 6320, "kind": "member", "name": "_uAOMap", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124706,7 +125265,7 @@ } }, { - "__docId__": 6302, + "__docId__": 6321, "kind": "member", "name": "_aModelMatrix", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124724,7 +125283,7 @@ } }, { - "__docId__": 6303, + "__docId__": 6322, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124742,7 +125301,7 @@ } }, { - "__docId__": 6304, + "__docId__": 6323, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124760,7 +125319,7 @@ } }, { - "__docId__": 6305, + "__docId__": 6324, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124778,7 +125337,7 @@ } }, { - "__docId__": 6306, + "__docId__": 6325, "kind": "member", "name": "_aModelNormalMatrixCol0", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124796,7 +125355,7 @@ } }, { - "__docId__": 6307, + "__docId__": 6326, "kind": "member", "name": "_aModelNormalMatrixCol1", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124814,7 +125373,7 @@ } }, { - "__docId__": 6308, + "__docId__": 6327, "kind": "member", "name": "_aModelNormalMatrixCol2", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124832,7 +125391,7 @@ } }, { - "__docId__": 6309, + "__docId__": 6328, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124850,7 +125409,7 @@ } }, { - "__docId__": 6310, + "__docId__": 6329, "kind": "member", "name": "_uSAOParams", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124868,7 +125427,7 @@ } }, { - "__docId__": 6311, + "__docId__": 6330, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124886,7 +125445,7 @@ } }, { - "__docId__": 6312, + "__docId__": 6331, "kind": "member", "name": "_uIntensityRange", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124904,7 +125463,7 @@ } }, { - "__docId__": 6313, + "__docId__": 6332, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124922,7 +125481,7 @@ } }, { - "__docId__": 6314, + "__docId__": 6333, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124940,7 +125499,7 @@ } }, { - "__docId__": 6315, + "__docId__": 6334, "kind": "member", "name": "_uSliceColor", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124958,7 +125517,7 @@ } }, { - "__docId__": 6316, + "__docId__": 6335, "kind": "member", "name": "_uSliceThickness", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -124976,7 +125535,7 @@ } }, { - "__docId__": 6317, + "__docId__": 6336, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -125000,7 +125559,7 @@ "return": null }, { - "__docId__": 6318, + "__docId__": 6337, "kind": "method", "name": "_makeVAO", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -125028,7 +125587,7 @@ } }, { - "__docId__": 6319, + "__docId__": 6338, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -125072,7 +125631,7 @@ "return": null }, { - "__docId__": 6320, + "__docId__": 6339, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -125088,7 +125647,7 @@ "return": null }, { - "__docId__": 6322, + "__docId__": 6341, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/VBORenderer.js~VBORenderer", @@ -125104,7 +125663,7 @@ "return": null }, { - "__docId__": 6324, + "__docId__": 6343, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js", "content": "import {ENTITY_FLAGS} from '../../../ENTITY_FLAGS.js';\nimport {RENDER_PASSES} from '../../../RENDER_PASSES.js';\n\nimport {math} from \"../../../../math/math.js\";\nimport {RenderState} from \"../../../../webgl/RenderState.js\";\nimport {ArrayBuf} from \"../../../../webgl/ArrayBuf.js\";\nimport {getRenderers} from \"./renderers/VBOBatchingLinesRenderers.js\";\nimport {VBOBatchingLinesBuffer} from \"./lib/VBOBatchingLinesBuffer.js\";\nimport {quantizePositions} from \"../../../compression.js\";\n\n/**\n * @private\n */\nexport class VBOBatchingLinesLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.origin\n * @param cfg.scratchMemory\n */\n constructor(cfg) {\n\n console.info(\"Creating VBOBatchingLinesLayer\");\n\n /**\n * Index of this LinesBatchingLayer in {@link VBOSceneModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._renderers = getRenderers(cfg.model.scene);\n this.model = cfg.model;\n this._buffer = new VBOBatchingLinesBuffer(cfg.maxGeometryBatchSize);\n this._scratchMemory = cfg.scratchMemory;\n\n this._state = new RenderState({\n positionsBuf: null,\n offsetsBuf: null,\n colorsBuf: null,\n flagsBuf: null,\n indicesBuf: null,\n positionsDecodeMatrix: math.mat4(),\n origin: null\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n this._modelAABB = math.collapseAABB3(); // Model-space AABB\n this._portions = [];\n this._meshes = [];\n this._numVerts = 0;\n\n this._aabb = math.collapseAABB3();\n this.aabbDirty = true;\n\n this._finalized = false;\n\n if (cfg.positionsDecodeMatrix) {\n this._state.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n this._preCompressedPositionsExpected = true;\n } else {\n this._preCompressedPositionsExpected = false;\n }\n\n if (cfg.origin) {\n this._state.origin = math.vec3(cfg.origin);\n }\n }\n\n get aabb() {\n if (this.aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._meshes.length; i < len; i++) {\n math.expandAABB3(this._aabb, this._meshes[i].aabb);\n }\n this.aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * Tests if there is room for another portion in this LinesBatchingLayer.\n *\n * @param lenPositions Number of positions we'd like to create in the portion.\n * @param lenIndices Number of indices we'd like to create in this portion.\n * @returns {Boolean} True if OK to create another portion.\n */\n canCreatePortion(lenPositions, lenIndices) {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n return ((this._buffer.positions.length + lenPositions) < (this._buffer.maxVerts * 3) && (this._buffer.indices.length + lenIndices) < (this._buffer.maxIndices));\n }\n\n /**\n * Creates a new portion within this LinesBatchingLayer, returns the new portion ID.\n *\n * Gives the portion the specified geometry, color and matrix.\n *\n * @param mesh The SceneModelMesh that owns the portion\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.positionsCompressed Flat quantized positions array - decompressed with TrianglesBatchingLayer positionsDecodeMatrix\n * @param cfg.indices Flat int indices array.\n * @param cfg.color Quantized RGB color [0..255,0..255,0..255,0..255]\n * @param cfg.opacity Opacity [0..255]\n * @param [cfg.meshMatrix] Flat float 4x4 matrix\n * @param cfg.aabb Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(mesh, cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const positionsCompressed = cfg.positionsCompressed;\n const indices = cfg.indices;\n const color = cfg.color;\n const opacity = cfg.opacity;\n\n const buffer = this._buffer;\n const positionsIndex = buffer.positions.length;\n const vertsIndex = positionsIndex / 3;\n\n let numVerts;\n\n math.expandAABB3(this._modelAABB, cfg.aabb);\n\n if (this._preCompressedPositionsExpected) {\n if (!positionsCompressed) {\n throw \"positionsCompressed expected\";\n }\n numVerts = positionsCompressed.length / 3;\n for (let i = 0, len = positionsCompressed.length; i < len; i++) {\n buffer.positions.push(positionsCompressed[i]);\n }\n } else {\n if (!positions) {\n throw \"positions expected\";\n }\n numVerts = positions.length / 3;\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n }\n\n if (color) {\n\n const r = color[0]; // Color is pre-quantized by VBOSceneModel\n const g = color[1];\n const b = color[2];\n const a = opacity;\n\n for (let i = 0; i < numVerts; i++) {\n buffer.colors.push(r);\n buffer.colors.push(g);\n buffer.colors.push(b);\n buffer.colors.push(a);\n }\n }\n\n if (indices) {\n for (let i = 0, len = indices.length; i < len; i++) {\n buffer.indices.push(indices[i] + vertsIndex);\n }\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n for (let i = 0; i < numVerts; i++) {\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n }\n }\n\n const portionId = this._portions.length / 2;\n\n this._portions.push(vertsIndex);\n this._portions.push(numVerts);\n\n this._numPortions++;\n this.model.numPortions++;\n\n this._numVerts += numVerts;\n\n this._meshes.push(mesh);\n\n return portionId;\n }\n\n /**\n * Builds batch VBOs from appended geometries.\n * No more portions can then be created.\n */\n finalize() {\n\n if (this._finalized) {\n return;\n }\n\n const state = this._state;\n const gl = this.model.scene.canvas.gl;\n const buffer = this._buffer;\n\n if (buffer.positions.length > 0) {\n if (this._preCompressedPositionsExpected) {\n const positions = new Uint16Array(buffer.positions);\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, buffer.positions.length, 3, gl.STATIC_DRAW);\n } else {\n const positions = new Float32Array(buffer.positions);\n const quantizedPositions = quantizePositions(positions, this._modelAABB, state.positionsDecodeMatrix);\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, buffer.positions.length, 3, gl.STATIC_DRAW);\n }\n }\n\n if (buffer.colors.length > 0) {\n const colors = new Uint8Array(buffer.colors);\n let normalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, buffer.colors.length, 4, gl.DYNAMIC_DRAW, normalized);\n }\n\n if (buffer.colors.length > 0) { // Because we build flags arrays here, get their length from the colors array\n const flagsLength = buffer.colors.length / 4;\n const flags = new Float32Array(flagsLength);\n let notNormalized = false;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 1, gl.DYNAMIC_DRAW, notNormalized);\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n if (buffer.offsets.length > 0) {\n const offsets = new Float32Array(buffer.offsets);\n state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, offsets, buffer.offsets.length, 3, gl.DYNAMIC_DRAW);\n }\n }\n\n if (buffer.indices.length > 0) {\n const indices = new Uint32Array(buffer.indices);\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, buffer.indices.length, 1, gl.STATIC_DRAW);\n }\n\n this._buffer = null;\n this._finalized = true;\n }\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n const deferred = true;\n this._setFlags(portionId, flags, meshTransparent, deferred);\n }\n\n flushInitFlags() {\n this._setDeferredFlags();\n }\n\n setVisible(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setHighlighted(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setXRayed(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setSelected(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setEdges(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags(portionId, flags);\n }\n\n setCulled(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setColor(portionId, color) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstColor = vertexBase * 4;\n const lenColor = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenColor);\n const r = color[0];\n const g = color[1];\n const b = color[2];\n const a = color[3];\n for (let i = 0; i < lenColor; i += 4) {\n tempArray[i + 0] = r;\n tempArray[i + 1] = g;\n tempArray[i + 2] = b;\n tempArray[i + 3] = a;\n }\n this._state.colorsBuf.setData(tempArray, firstColor, lenColor);\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n /**\n * flags are 4bits values encoded on a 32bit base. color flag on the first 4 bits, silhouette flag on the next 4 bits and so on for edge, pick and clippable.\n */\n _setFlags(portionId, flags, transparent, deferred = false) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstFlag = vertexBase;\n const lenFlags = numVerts;\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n // no edges\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n let colorFlag;\n if (!visible || culled || xrayed\n || (highlighted && !this.model.scene.highlightMaterial.glowThrough)\n || (selected && !this.model.scene.selectedMaterial.glowThrough)) {\n colorFlag = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n colorFlag = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n colorFlag = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n let silhouetteFlag;\n if (!visible || culled) {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let pickFlag = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n const clippableFlag = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 1 : 0;\n\n if (deferred) {\n // Avoid zillions of individual WebGL bufferSubData calls - buffer them to apply in one shot\n if (!this._deferredFlagValues) {\n this._deferredFlagValues = new Float32Array(this._numVerts);\n }\n for (let i = firstFlag, len = (firstFlag + lenFlags); i < len; i++) {\n let vertFlag = 0;\n vertFlag |= colorFlag;\n vertFlag |= silhouetteFlag << 4;\n // no edges\n vertFlag |= pickFlag << 12;\n vertFlag |= clippableFlag << 16;\n\n this._deferredFlagValues[i] = vertFlag;\n }\n } else if (this._state.flagsBuf) {\n const tempArray = this._scratchMemory.getFloat32Array(lenFlags);\n for (let i = 0; i < lenFlags; i++) {\n let vertFlag = 0;\n vertFlag |= colorFlag;\n vertFlag |= silhouetteFlag << 4;\n // no edges\n vertFlag |= pickFlag << 12;\n vertFlag |= clippableFlag << 16;\n\n tempArray[i] = vertFlag;\n }\n this._state.flagsBuf.setData(tempArray, firstFlag, lenFlags);\n }\n }\n\n _setDeferredFlags() {\n if (this._deferredFlagValues) {\n this._state.flagsBuf.setData(this._deferredFlagValues);\n this._deferredFlagValues = null;\n }\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstOffset = vertexBase * 3;\n const lenOffsets = numVerts * 3;\n const tempArray = this._scratchMemory.getFloat32Array(lenOffsets);\n const x = offset[0];\n const y = offset[1];\n const z = offset[2];\n for (let i = 0; i < lenOffsets; i += 3) {\n tempArray[i + 0] = x;\n tempArray[i + 1] = y;\n tempArray[i + 2] = z;\n }\n this._state.offsetsBuf.setData(tempArray, firstOffset, lenOffsets);\n }\n\n //-- RENDERING ----------------------------------------------------------------------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n\n drawDepth(renderFlags, frameCtx) {\n }\n\n drawNormals(renderFlags, frameCtx) {\n }\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n drawPickMesh(frameCtx) {\n }\n\n drawPickDepths(frameCtx) {\n }\n\n drawPickNormals(frameCtx) {\n }\n\n drawSnapInit(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.snapInitRenderer) {\n this._renderers.snapInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawSnap(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.snapRenderer) {\n this._renderers.snapRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawOcclusion(frameCtx) {\n }\n\n drawShadow(frameCtx) {\n }\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicesBuf = null;\n }\n state.destroy();\n }\n}\n", @@ -125115,7 +125674,7 @@ "lineNumber": 1 }, { - "__docId__": 6325, + "__docId__": 6344, "kind": "class", "name": "VBOBatchingLinesLayer", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js", @@ -125131,7 +125690,7 @@ "ignore": true }, { - "__docId__": 6326, + "__docId__": 6345, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125216,7 +125775,7 @@ ] }, { - "__docId__": 6327, + "__docId__": 6346, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125235,7 +125794,7 @@ } }, { - "__docId__": 6328, + "__docId__": 6347, "kind": "member", "name": "_renderers", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125253,7 +125812,7 @@ } }, { - "__docId__": 6329, + "__docId__": 6348, "kind": "member", "name": "model", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125270,7 +125829,7 @@ } }, { - "__docId__": 6330, + "__docId__": 6349, "kind": "member", "name": "_buffer", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125288,7 +125847,7 @@ } }, { - "__docId__": 6331, + "__docId__": 6350, "kind": "member", "name": "_scratchMemory", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125306,7 +125865,7 @@ } }, { - "__docId__": 6332, + "__docId__": 6351, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125324,7 +125883,7 @@ } }, { - "__docId__": 6333, + "__docId__": 6352, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125342,7 +125901,7 @@ } }, { - "__docId__": 6334, + "__docId__": 6353, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125360,7 +125919,7 @@ } }, { - "__docId__": 6335, + "__docId__": 6354, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125378,7 +125937,7 @@ } }, { - "__docId__": 6336, + "__docId__": 6355, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125396,7 +125955,7 @@ } }, { - "__docId__": 6337, + "__docId__": 6356, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125414,7 +125973,7 @@ } }, { - "__docId__": 6338, + "__docId__": 6357, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125432,7 +125991,7 @@ } }, { - "__docId__": 6339, + "__docId__": 6358, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125450,7 +126009,7 @@ } }, { - "__docId__": 6340, + "__docId__": 6359, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125468,7 +126027,7 @@ } }, { - "__docId__": 6341, + "__docId__": 6360, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125486,7 +126045,7 @@ } }, { - "__docId__": 6342, + "__docId__": 6361, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125504,7 +126063,7 @@ } }, { - "__docId__": 6343, + "__docId__": 6362, "kind": "member", "name": "_modelAABB", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125522,7 +126081,7 @@ } }, { - "__docId__": 6344, + "__docId__": 6363, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125540,7 +126099,7 @@ } }, { - "__docId__": 6345, + "__docId__": 6364, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125558,7 +126117,7 @@ } }, { - "__docId__": 6346, + "__docId__": 6365, "kind": "member", "name": "_numVerts", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125576,7 +126135,7 @@ } }, { - "__docId__": 6347, + "__docId__": 6366, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125594,7 +126153,7 @@ } }, { - "__docId__": 6348, + "__docId__": 6367, "kind": "member", "name": "aabbDirty", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125611,7 +126170,7 @@ } }, { - "__docId__": 6349, + "__docId__": 6368, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125629,7 +126188,7 @@ } }, { - "__docId__": 6350, + "__docId__": 6369, "kind": "member", "name": "_preCompressedPositionsExpected", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125647,7 +126206,7 @@ } }, { - "__docId__": 6352, + "__docId__": 6371, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125666,7 +126225,7 @@ } }, { - "__docId__": 6354, + "__docId__": 6373, "kind": "method", "name": "canCreatePortion", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125715,7 +126274,7 @@ } }, { - "__docId__": 6355, + "__docId__": 6374, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125834,7 +126393,7 @@ } }, { - "__docId__": 6357, + "__docId__": 6376, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125849,7 +126408,7 @@ "return": null }, { - "__docId__": 6360, + "__docId__": 6379, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125884,7 +126443,7 @@ "return": null }, { - "__docId__": 6361, + "__docId__": 6380, "kind": "method", "name": "flushInitFlags", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125900,7 +126459,7 @@ "return": null }, { - "__docId__": 6362, + "__docId__": 6381, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125935,7 +126494,7 @@ "return": null }, { - "__docId__": 6363, + "__docId__": 6382, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -125970,7 +126529,7 @@ "return": null }, { - "__docId__": 6364, + "__docId__": 6383, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126005,7 +126564,7 @@ "return": null }, { - "__docId__": 6365, + "__docId__": 6384, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126040,7 +126599,7 @@ "return": null }, { - "__docId__": 6366, + "__docId__": 6385, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126075,7 +126634,7 @@ "return": null }, { - "__docId__": 6367, + "__docId__": 6386, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126104,7 +126663,7 @@ "return": null }, { - "__docId__": 6368, + "__docId__": 6387, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126139,7 +126698,7 @@ "return": null }, { - "__docId__": 6369, + "__docId__": 6388, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126168,7 +126727,7 @@ "return": null }, { - "__docId__": 6370, + "__docId__": 6389, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126203,7 +126762,7 @@ "return": null }, { - "__docId__": 6371, + "__docId__": 6390, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126232,7 +126791,7 @@ "return": null }, { - "__docId__": 6372, + "__docId__": 6391, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126267,7 +126826,7 @@ "return": null }, { - "__docId__": 6373, + "__docId__": 6392, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126311,7 +126870,7 @@ "return": null }, { - "__docId__": 6374, + "__docId__": 6393, "kind": "member", "name": "_deferredFlagValues", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126329,7 +126888,7 @@ } }, { - "__docId__": 6375, + "__docId__": 6394, "kind": "method", "name": "_setDeferredFlags", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126346,7 +126905,7 @@ "return": null }, { - "__docId__": 6377, + "__docId__": 6396, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126375,7 +126934,7 @@ "return": null }, { - "__docId__": 6378, + "__docId__": 6397, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126404,7 +126963,7 @@ "return": null }, { - "__docId__": 6379, + "__docId__": 6398, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126433,7 +126992,7 @@ "return": null }, { - "__docId__": 6380, + "__docId__": 6399, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126462,7 +127021,7 @@ "return": null }, { - "__docId__": 6381, + "__docId__": 6400, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126491,7 +127050,7 @@ "return": null }, { - "__docId__": 6382, + "__docId__": 6401, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126520,7 +127079,7 @@ "return": null }, { - "__docId__": 6383, + "__docId__": 6402, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126549,7 +127108,7 @@ "return": null }, { - "__docId__": 6384, + "__docId__": 6403, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126578,7 +127137,7 @@ "return": null }, { - "__docId__": 6385, + "__docId__": 6404, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126607,7 +127166,7 @@ "return": null }, { - "__docId__": 6386, + "__docId__": 6405, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126636,7 +127195,7 @@ "return": null }, { - "__docId__": 6387, + "__docId__": 6406, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126665,7 +127224,7 @@ "return": null }, { - "__docId__": 6388, + "__docId__": 6407, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126694,7 +127253,7 @@ "return": null }, { - "__docId__": 6389, + "__docId__": 6408, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126723,7 +127282,7 @@ "return": null }, { - "__docId__": 6390, + "__docId__": 6409, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126746,7 +127305,7 @@ "return": null }, { - "__docId__": 6391, + "__docId__": 6410, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126769,7 +127328,7 @@ "return": null }, { - "__docId__": 6392, + "__docId__": 6411, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126792,7 +127351,7 @@ "return": null }, { - "__docId__": 6393, + "__docId__": 6412, "kind": "method", "name": "drawSnapInit", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126821,7 +127380,7 @@ "return": null }, { - "__docId__": 6394, + "__docId__": 6413, "kind": "method", "name": "drawSnap", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126850,7 +127409,7 @@ "return": null }, { - "__docId__": 6395, + "__docId__": 6414, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126873,7 +127432,7 @@ "return": null }, { - "__docId__": 6396, + "__docId__": 6415, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126896,7 +127455,7 @@ "return": null }, { - "__docId__": 6397, + "__docId__": 6416, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js~VBOBatchingLinesLayer", @@ -126912,7 +127471,7 @@ "return": null }, { - "__docId__": 6398, + "__docId__": 6417, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js", "content": "/**\n * @private\n */\nexport class VBOBatchingLinesBuffer {\n\n constructor(maxGeometryBatchSize = 5000000) {\n\n if (maxGeometryBatchSize > 5000000) {\n maxGeometryBatchSize = 5000000;\n }\n\n this.maxVerts = maxGeometryBatchSize;\n this.maxIndices = maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.offsets = [];\n this.indices = [];\n }\n}\n", @@ -126923,7 +127482,7 @@ "lineNumber": 1 }, { - "__docId__": 6399, + "__docId__": 6418, "kind": "class", "name": "VBOBatchingLinesBuffer", "memberof": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js", @@ -126939,7 +127498,7 @@ "ignore": true }, { - "__docId__": 6400, + "__docId__": 6419, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js~VBOBatchingLinesBuffer", @@ -126953,7 +127512,7 @@ "undocument": true }, { - "__docId__": 6401, + "__docId__": 6420, "kind": "member", "name": "maxVerts", "memberof": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js~VBOBatchingLinesBuffer", @@ -126970,7 +127529,7 @@ } }, { - "__docId__": 6402, + "__docId__": 6421, "kind": "member", "name": "maxIndices", "memberof": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js~VBOBatchingLinesBuffer", @@ -126987,7 +127546,7 @@ } }, { - "__docId__": 6403, + "__docId__": 6422, "kind": "member", "name": "positions", "memberof": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js~VBOBatchingLinesBuffer", @@ -127004,7 +127563,7 @@ } }, { - "__docId__": 6404, + "__docId__": 6423, "kind": "member", "name": "colors", "memberof": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js~VBOBatchingLinesBuffer", @@ -127021,7 +127580,7 @@ } }, { - "__docId__": 6405, + "__docId__": 6424, "kind": "member", "name": "offsets", "memberof": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js~VBOBatchingLinesBuffer", @@ -127038,7 +127597,7 @@ } }, { - "__docId__": 6406, + "__docId__": 6425, "kind": "member", "name": "indices", "memberof": "src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js~VBOBatchingLinesBuffer", @@ -127055,7 +127614,7 @@ } }, { - "__docId__": 6407, + "__docId__": 6426, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js", "content": "\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {VBORenderer} from \"../../../VBORenderer.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOBatchingLineSnapInitRenderer extends VBORenderer {\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const origin = batchingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = batchingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(batchingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(batchingLayer));\n } else {\n this._vaoCache.set(batchingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = tempVec3c;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(batchingLayer);\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n state.indicesBuf.bind();\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n state.indicesBuf.unbind();\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\");\n this._uLayerNumber = program.getLocation(\"layerNumber\");\n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBO SnapBatchingDepthBufInitRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec4 pickColor;\");\n src.push(\"in vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n src.push(\"uniform vec2 snapVectorA;\");\n src.push(\"uniform vec2 snapInvVectorAB;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n src.push(\"flat out vec4 vPickColor;\");\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" relativeToOriginPosition = worldPosition.xyz;\");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vPickColor = pickColor;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBO SnapBatchingDepthBufInitRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\");\n src.push(\"uniform vec3 coordinateScaler;\");\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in vec4 vPickColor;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"layout(location = 0) out highp ivec4 outCoords;\");\n src.push(\"layout(location = 1) out highp ivec4 outNormal;\");\n ///////////////////////////////////////////\n // TODO: normal placeholder?\n // Primitive type?\n ///////////////////////////////////////////\n src.push(\"layout(location = 2) out lowp uvec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" float dx = dFdx(vFragDepth);\")\n src.push(\" float dy = dFdy(vFragDepth);\")\n src.push(\" float diff = sqrt(dx*dx+dy*dy);\");\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth + diff ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, -layerNumber);\");\n\n src.push(\"vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\"vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(`outNormal = ivec4(worldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"outPickColor = uvec4(vPickColor);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -127066,7 +127625,7 @@ "lineNumber": 1 }, { - "__docId__": 6408, + "__docId__": 6427, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js", @@ -127087,7 +127646,7 @@ "ignore": true }, { - "__docId__": 6409, + "__docId__": 6428, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js", @@ -127108,7 +127667,7 @@ "ignore": true }, { - "__docId__": 6410, + "__docId__": 6429, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js", @@ -127129,7 +127688,7 @@ "ignore": true }, { - "__docId__": 6411, + "__docId__": 6430, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js", @@ -127150,7 +127709,7 @@ "ignore": true }, { - "__docId__": 6412, + "__docId__": 6431, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js", @@ -127171,7 +127730,7 @@ "ignore": true }, { - "__docId__": 6413, + "__docId__": 6432, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js", @@ -127192,7 +127751,7 @@ "ignore": true }, { - "__docId__": 6414, + "__docId__": 6433, "kind": "class", "name": "VBOBatchingLineSnapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js", @@ -127211,7 +127770,7 @@ "ignore": true }, { - "__docId__": 6415, + "__docId__": 6434, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127246,7 +127805,7 @@ "return": null }, { - "__docId__": 6416, + "__docId__": 6435, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127263,7 +127822,7 @@ "return": null }, { - "__docId__": 6417, + "__docId__": 6436, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127281,7 +127840,7 @@ } }, { - "__docId__": 6418, + "__docId__": 6437, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127299,7 +127858,7 @@ } }, { - "__docId__": 6419, + "__docId__": 6438, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127316,7 +127875,7 @@ } }, { - "__docId__": 6420, + "__docId__": 6439, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127333,7 +127892,7 @@ } }, { - "__docId__": 6421, + "__docId__": 6440, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127351,7 +127910,7 @@ } }, { - "__docId__": 6422, + "__docId__": 6441, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127369,7 +127928,7 @@ } }, { - "__docId__": 6423, + "__docId__": 6442, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127386,7 +127945,7 @@ "return": null }, { - "__docId__": 6424, + "__docId__": 6443, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127407,7 +127966,7 @@ } }, { - "__docId__": 6425, + "__docId__": 6444, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127428,7 +127987,7 @@ } }, { - "__docId__": 6426, + "__docId__": 6445, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127444,7 +128003,7 @@ "return": null }, { - "__docId__": 6427, + "__docId__": 6446, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127462,7 +128021,7 @@ } }, { - "__docId__": 6428, + "__docId__": 6447, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js~VBOBatchingLineSnapInitRenderer", @@ -127478,7 +128037,7 @@ "return": null }, { - "__docId__": 6430, + "__docId__": 6449, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js", "content": "import {VBOSceneModelLineBatchingRenderer} from \"./VBOSceneModelLineBatchingRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOBatchingLinesColorRenderer extends VBOSceneModelLineBatchingRenderer {\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, { incrementDrawState: true });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Lines batching color vertex shader\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vColor;\");\n src.push(\"void main(void) {\");\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Lines batching color fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" outColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n", @@ -127489,7 +128048,7 @@ "lineNumber": 1 }, { - "__docId__": 6431, + "__docId__": 6450, "kind": "class", "name": "VBOBatchingLinesColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js", @@ -127508,7 +128067,7 @@ "ignore": true }, { - "__docId__": 6432, + "__docId__": 6451, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js~VBOBatchingLinesColorRenderer", @@ -127543,7 +128102,7 @@ "return": null }, { - "__docId__": 6433, + "__docId__": 6452, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js~VBOBatchingLinesColorRenderer", @@ -127564,7 +128123,7 @@ } }, { - "__docId__": 6434, + "__docId__": 6453, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js~VBOBatchingLinesColorRenderer", @@ -127585,7 +128144,7 @@ } }, { - "__docId__": 6435, + "__docId__": 6454, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js", "content": "import {VBOBatchingLinesColorRenderer} from \"./VBOBatchingLinesColorRenderer.js\";\nimport {VBOBatchingLinesSilhouetteRenderer} from \"./VBOBatchingLinesSilhouetteRenderer.js\";\nimport {VBOBatchingLinesSnapInitRenderer} from \"./VBOBatchingLinesSnapInitRenderer.js\";\nimport {VBOBatchingLinesSnapRenderer} from \"./VBOBatchingLinesSnapRenderer.js\";\n\n/**\n * @private\n */\nclass VBOBatchingLinesRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._snapInitRenderer && (!this._snapInitRenderer.getValid())) {\n this._snapInitRenderer.destroy();\n this._snapInitRenderer = null;\n }\n if (this._snapRenderer && (!this._snapRenderer.getValid())) {\n this._snapRenderer.destroy();\n this._snapRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new VBOBatchingLinesColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new VBOBatchingLinesSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get snapInitRenderer() {\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new VBOBatchingLinesSnapInitRenderer(this._scene, false);\n }\n return this._snapInitRenderer;\n }\n\n get snapRenderer() {\n if (!this._snapRenderer) {\n this._snapRenderer = new VBOBatchingLinesSnapRenderer(this._scene);\n }\n return this._snapRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._snapInitRenderer) {\n this._snapInitRenderer.destroy();\n }\n if (this._snapRenderer) {\n this._snapRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\n/**\n * @private\n */\nexport function getRenderers(scene) {\n const sceneId = scene.id;\n let batchingRenderers = cachedRenderers[sceneId];\n if (!batchingRenderers) {\n batchingRenderers = new VBOBatchingLinesRenderers(scene);\n cachedRenderers[sceneId] = batchingRenderers;\n batchingRenderers._compile();\n scene.on(\"compile\", () => {\n batchingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers[sceneId];\n batchingRenderers._destroy();\n });\n }\n return batchingRenderers;\n}\n", @@ -127596,7 +128155,7 @@ "lineNumber": 1 }, { - "__docId__": 6436, + "__docId__": 6455, "kind": "class", "name": "VBOBatchingLinesRenderers", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js", @@ -127612,7 +128171,7 @@ "ignore": true }, { - "__docId__": 6437, + "__docId__": 6456, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127626,7 +128185,7 @@ "undocument": true }, { - "__docId__": 6438, + "__docId__": 6457, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127644,7 +128203,7 @@ } }, { - "__docId__": 6439, + "__docId__": 6458, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127661,7 +128220,7 @@ "return": null }, { - "__docId__": 6440, + "__docId__": 6459, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127679,7 +128238,7 @@ } }, { - "__docId__": 6441, + "__docId__": 6460, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127697,7 +128256,7 @@ } }, { - "__docId__": 6442, + "__docId__": 6461, "kind": "member", "name": "_snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127715,7 +128274,7 @@ } }, { - "__docId__": 6443, + "__docId__": 6462, "kind": "member", "name": "_snapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127733,7 +128292,7 @@ } }, { - "__docId__": 6444, + "__docId__": 6463, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127752,7 +128311,7 @@ } }, { - "__docId__": 6446, + "__docId__": 6465, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127771,7 +128330,7 @@ } }, { - "__docId__": 6448, + "__docId__": 6467, "kind": "get", "name": "snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127790,7 +128349,7 @@ } }, { - "__docId__": 6450, + "__docId__": 6469, "kind": "get", "name": "snapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127809,7 +128368,7 @@ } }, { - "__docId__": 6452, + "__docId__": 6471, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js~VBOBatchingLinesRenderers", @@ -127826,7 +128385,7 @@ "return": null }, { - "__docId__": 6453, + "__docId__": 6472, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js", @@ -127847,7 +128406,7 @@ "ignore": true }, { - "__docId__": 6454, + "__docId__": 6473, "kind": "function", "name": "getRenderers", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js", @@ -127877,7 +128436,7 @@ } }, { - "__docId__": 6455, + "__docId__": 6474, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js", "content": "import {VBOSceneModelLineBatchingRenderer} from \"./VBOSceneModelLineBatchingRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOBatchingLinesSilhouetteRenderer extends VBOSceneModelLineBatchingRenderer {\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n super.drawLayer(frameCtx, batchingLayer, renderPass, { colorUniform: true });\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Lines batching silhouette vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec4 color;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"void main(void) {\");\n\n // silhouetteFlag = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`int silhouetteFlag = int(flags) >> 4 & 0xF;`);\n src.push(`if (silhouetteFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Lines batching silhouette fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = color;\");\n src.push(\"}\");\n return src;\n }\n}\n", @@ -127888,7 +128447,7 @@ "lineNumber": 1 }, { - "__docId__": 6456, + "__docId__": 6475, "kind": "class", "name": "VBOBatchingLinesSilhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js", @@ -127907,7 +128466,7 @@ "ignore": true }, { - "__docId__": 6457, + "__docId__": 6476, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js~VBOBatchingLinesSilhouetteRenderer", @@ -127942,7 +128501,7 @@ "return": null }, { - "__docId__": 6458, + "__docId__": 6477, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js~VBOBatchingLinesSilhouetteRenderer", @@ -127963,7 +128522,7 @@ } }, { - "__docId__": 6459, + "__docId__": 6478, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js~VBOBatchingLinesSilhouetteRenderer", @@ -127984,7 +128543,7 @@ } }, { - "__docId__": 6460, + "__docId__": 6479, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js", "content": "\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {VBORenderer} from \"../../../VBORenderer.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOBatchingLinesSnapInitRenderer extends VBORenderer {\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const origin = batchingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = batchingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(batchingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(batchingLayer));\n } else {\n this._vaoCache.set(batchingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = tempVec3c;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(batchingLayer);\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n state.indicesBuf.bind();\n gl.drawElements(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n state.indicesBuf.unbind();\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\");\n this._uLayerNumber = program.getLocation(\"layerNumber\");\n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBO SnapBatchingDepthBufInitRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec4 pickColor;\");\n src.push(\"in vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n src.push(\"uniform vec2 snapVectorA;\");\n src.push(\"uniform vec2 snapInvVectorAB;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n src.push(\"flat out vec4 vPickColor;\");\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" relativeToOriginPosition = worldPosition.xyz;\");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vPickColor = pickColor;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBO SnapBatchingDepthBufInitRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\");\n src.push(\"uniform vec3 coordinateScaler;\");\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in vec4 vPickColor;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"layout(location = 0) out highp ivec4 outCoords;\");\n src.push(\"layout(location = 1) out highp ivec4 outNormal;\");\n src.push(\"layout(location = 2) out lowp uvec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" float dx = dFdx(vFragDepth);\")\n src.push(\" float dy = dFdy(vFragDepth);\")\n src.push(\" float diff = sqrt(dx*dx+dy*dy);\");\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth + diff ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, -layerNumber);\");\n\n src.push(\"vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\"vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(`outNormal = ivec4(worldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"outPickColor = uvec4(vPickColor);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -127995,7 +128554,7 @@ "lineNumber": 1 }, { - "__docId__": 6461, + "__docId__": 6480, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js", @@ -128016,7 +128575,7 @@ "ignore": true }, { - "__docId__": 6462, + "__docId__": 6481, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js", @@ -128037,7 +128596,7 @@ "ignore": true }, { - "__docId__": 6463, + "__docId__": 6482, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js", @@ -128058,7 +128617,7 @@ "ignore": true }, { - "__docId__": 6464, + "__docId__": 6483, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js", @@ -128079,7 +128638,7 @@ "ignore": true }, { - "__docId__": 6465, + "__docId__": 6484, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js", @@ -128100,7 +128659,7 @@ "ignore": true }, { - "__docId__": 6466, + "__docId__": 6485, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js", @@ -128121,7 +128680,7 @@ "ignore": true }, { - "__docId__": 6467, + "__docId__": 6486, "kind": "class", "name": "VBOBatchingLinesSnapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js", @@ -128140,7 +128699,7 @@ "ignore": true }, { - "__docId__": 6468, + "__docId__": 6487, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128175,7 +128734,7 @@ "return": null }, { - "__docId__": 6469, + "__docId__": 6488, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128192,7 +128751,7 @@ "return": null }, { - "__docId__": 6470, + "__docId__": 6489, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128210,7 +128769,7 @@ } }, { - "__docId__": 6471, + "__docId__": 6490, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128228,7 +128787,7 @@ } }, { - "__docId__": 6472, + "__docId__": 6491, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128245,7 +128804,7 @@ } }, { - "__docId__": 6473, + "__docId__": 6492, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128262,7 +128821,7 @@ } }, { - "__docId__": 6474, + "__docId__": 6493, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128280,7 +128839,7 @@ } }, { - "__docId__": 6475, + "__docId__": 6494, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128298,7 +128857,7 @@ } }, { - "__docId__": 6476, + "__docId__": 6495, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128315,7 +128874,7 @@ "return": null }, { - "__docId__": 6477, + "__docId__": 6496, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128336,7 +128895,7 @@ } }, { - "__docId__": 6478, + "__docId__": 6497, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128357,7 +128916,7 @@ } }, { - "__docId__": 6479, + "__docId__": 6498, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128373,7 +128932,7 @@ "return": null }, { - "__docId__": 6480, + "__docId__": 6499, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128391,7 +128950,7 @@ } }, { - "__docId__": 6481, + "__docId__": 6500, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js~VBOBatchingLinesSnapInitRenderer", @@ -128407,7 +128966,7 @@ "return": null }, { - "__docId__": 6483, + "__docId__": 6502, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js", "content": "\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {VBORenderer} from \"../../../VBORenderer.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOBatchingLinesSnapRenderer extends VBORenderer{\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const origin = batchingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = batchingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(batchingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(batchingLayer));\n } else {\n this._vaoCache.set(batchingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = tempVec3c;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(batchingLayer);\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n if (frameCtx.snapMode === \"edge\") {\n state.indicesBuf.bind();\n gl.drawElements(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n state.indicesBuf.unbind(); // needed?\n } else {\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\"); \n this.uVectorA = program.getLocation(\"snapVectorA\"); \n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\"); \n this._uLayerNumber = program.getLocation(\"layerNumber\"); \n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\"); \n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapBatchingDepthRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\"); \n src.push(\"uniform vec2 snapVectorA;\"); \n src.push(\"uniform vec2 snapInvVectorAB;\"); \n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"gl_PointSize = 1.0;\"); // Windows needs this?\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapBatchingDepthRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\"); \n src.push(\"uniform vec3 coordinateScaler;\"); \n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"out highp ivec4 outCoords;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);\")\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -128418,7 +128977,7 @@ "lineNumber": 1 }, { - "__docId__": 6484, + "__docId__": 6503, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js", @@ -128439,7 +128998,7 @@ "ignore": true }, { - "__docId__": 6485, + "__docId__": 6504, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js", @@ -128460,7 +129019,7 @@ "ignore": true }, { - "__docId__": 6486, + "__docId__": 6505, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js", @@ -128481,7 +129040,7 @@ "ignore": true }, { - "__docId__": 6487, + "__docId__": 6506, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js", @@ -128502,7 +129061,7 @@ "ignore": true }, { - "__docId__": 6488, + "__docId__": 6507, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js", @@ -128523,7 +129082,7 @@ "ignore": true }, { - "__docId__": 6489, + "__docId__": 6508, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js", @@ -128544,7 +129103,7 @@ "ignore": true }, { - "__docId__": 6490, + "__docId__": 6509, "kind": "class", "name": "VBOBatchingLinesSnapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js", @@ -128563,7 +129122,7 @@ "ignore": true }, { - "__docId__": 6491, + "__docId__": 6510, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128584,7 +129143,7 @@ } }, { - "__docId__": 6492, + "__docId__": 6511, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128619,7 +129178,7 @@ "return": null }, { - "__docId__": 6493, + "__docId__": 6512, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128636,7 +129195,7 @@ "return": null }, { - "__docId__": 6494, + "__docId__": 6513, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128654,7 +129213,7 @@ } }, { - "__docId__": 6495, + "__docId__": 6514, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128672,7 +129231,7 @@ } }, { - "__docId__": 6496, + "__docId__": 6515, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128689,7 +129248,7 @@ } }, { - "__docId__": 6497, + "__docId__": 6516, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128706,7 +129265,7 @@ } }, { - "__docId__": 6498, + "__docId__": 6517, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128724,7 +129283,7 @@ } }, { - "__docId__": 6499, + "__docId__": 6518, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128742,7 +129301,7 @@ } }, { - "__docId__": 6500, + "__docId__": 6519, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128759,7 +129318,7 @@ "return": null }, { - "__docId__": 6501, + "__docId__": 6520, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128780,7 +129339,7 @@ } }, { - "__docId__": 6502, + "__docId__": 6521, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128801,7 +129360,7 @@ } }, { - "__docId__": 6503, + "__docId__": 6522, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128817,7 +129376,7 @@ "return": null }, { - "__docId__": 6504, + "__docId__": 6523, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128835,7 +129394,7 @@ } }, { - "__docId__": 6505, + "__docId__": 6524, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js~VBOBatchingLinesSnapRenderer", @@ -128851,7 +129410,7 @@ "return": null }, { - "__docId__": 6507, + "__docId__": 6526, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js", "content": "import {VBORenderer} from \"../../../VBORenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class VBOSceneModelLineBatchingRenderer extends VBORenderer {\n _draw(drawCfg) {\n const {gl} = this._scene.canvas;\n\n const {\n state,\n frameCtx,\n incrementDrawState\n } = drawCfg;\n\n gl.drawElements(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n\n if (incrementDrawState) {\n frameCtx.drawElements++;\n }\n }\n}", @@ -128862,7 +129421,7 @@ "lineNumber": 1 }, { - "__docId__": 6508, + "__docId__": 6527, "kind": "class", "name": "VBOSceneModelLineBatchingRenderer", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js", @@ -128881,7 +129440,7 @@ "ignore": true }, { - "__docId__": 6509, + "__docId__": 6528, "kind": "method", "name": "_draw", "memberof": "src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js~VBOSceneModelLineBatchingRenderer", @@ -128905,7 +129464,7 @@ "return": null }, { - "__docId__": 6510, + "__docId__": 6529, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js", "content": "/**\n * @private\n */\nexport class VBOBatchingPointsBuffer {\n\n constructor(maxGeometryBatchSize = 5000000) {\n\n if (maxGeometryBatchSize > 5000000) {\n maxGeometryBatchSize = 5000000;\n }\n\n this.maxVerts = maxGeometryBatchSize;\n this.maxIndices = maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.intensities = [];\n this.pickColors = [];\n this.offsets = [];\n }\n}\n", @@ -128916,7 +129475,7 @@ "lineNumber": 1 }, { - "__docId__": 6511, + "__docId__": 6530, "kind": "class", "name": "VBOBatchingPointsBuffer", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js", @@ -128932,7 +129491,7 @@ "ignore": true }, { - "__docId__": 6512, + "__docId__": 6531, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js~VBOBatchingPointsBuffer", @@ -128946,7 +129505,7 @@ "undocument": true }, { - "__docId__": 6513, + "__docId__": 6532, "kind": "member", "name": "maxVerts", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js~VBOBatchingPointsBuffer", @@ -128963,7 +129522,7 @@ } }, { - "__docId__": 6514, + "__docId__": 6533, "kind": "member", "name": "maxIndices", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js~VBOBatchingPointsBuffer", @@ -128980,7 +129539,7 @@ } }, { - "__docId__": 6515, + "__docId__": 6534, "kind": "member", "name": "positions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js~VBOBatchingPointsBuffer", @@ -128997,7 +129556,7 @@ } }, { - "__docId__": 6516, + "__docId__": 6535, "kind": "member", "name": "colors", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js~VBOBatchingPointsBuffer", @@ -129014,7 +129573,7 @@ } }, { - "__docId__": 6517, + "__docId__": 6536, "kind": "member", "name": "intensities", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js~VBOBatchingPointsBuffer", @@ -129031,7 +129590,7 @@ } }, { - "__docId__": 6518, + "__docId__": 6537, "kind": "member", "name": "pickColors", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js~VBOBatchingPointsBuffer", @@ -129048,7 +129607,7 @@ } }, { - "__docId__": 6519, + "__docId__": 6538, "kind": "member", "name": "offsets", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js~VBOBatchingPointsBuffer", @@ -129065,7 +129624,7 @@ } }, { - "__docId__": 6520, + "__docId__": 6539, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js", "content": "import {ENTITY_FLAGS} from '../../../ENTITY_FLAGS.js';\nimport {RENDER_PASSES} from '../../../RENDER_PASSES.js';\n\nimport {math} from \"../../../../math/math.js\";\nimport {RenderState} from \"../../../../webgl/RenderState.js\";\nimport {ArrayBuf} from \"../../../../webgl/ArrayBuf.js\";\nimport {getRenderers} from \"./renderers/VBOBatchingPointsRenderers.js\";\nimport {VBOBatchingPointsBuffer} from \"./VBOBatchingPointsBuffer.js\";\nimport {quantizePositions} from \"../../../compression.js\";\n\n/**\n * @private\n */\nexport class VBOBatchingPointsLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.origin\n * @param cfg.scratchMemory\n */\n constructor(cfg) {\n\n console.info(\"Creating VBOBatchingPointsLayer\");\n\n /**\n * Owner model\n * @type {VBOSceneModel}\n */\n this.model = cfg.model;\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"PointsBatchingLayer\";\n\n /**\n * Index of this PointsBatchingLayer in {@link VBOSceneModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._renderers = getRenderers(cfg.model.scene);\n\n this._buffer = new VBOBatchingPointsBuffer(cfg.maxGeometryBatchSize);\n this._scratchMemory = cfg.scratchMemory;\n\n this._state = new RenderState({\n positionsBuf: null,\n offsetsBuf: null,\n colorsBuf: null,\n flagsBuf: null,\n positionsDecodeMatrix: math.mat4(),\n origin: null\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n this._modelAABB = math.collapseAABB3(); // Model-space AABB\n this._portions = [];\n this._meshes = [];\n\n this._aabb = math.collapseAABB3();\n this.aabbDirty = true;\n\n this._finalized = false;\n\n if (cfg.positionsDecodeMatrix) {\n this._state.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n this._preCompressedPositionsExpected = true;\n } else {\n this._preCompressedPositionsExpected = false;\n }\n\n if (cfg.origin) {\n this._state.origin = math.vec3(cfg.origin);\n }\n }\n\n get aabb() {\n if (this.aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._meshes.length; i < len; i++) {\n math.expandAABB3(this._aabb, this._meshes[i].aabb);\n }\n this.aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * Tests if there is room for another portion in this PointsBatchingLayer.\n *\n * @param lenPositions Number of positions we'd like to create in the portion.\n * @returns {Boolean} True if OK to create another portion.\n */\n canCreatePortion(lenPositions) {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n return ((this._buffer.positions.length + lenPositions) < (this._buffer.maxVerts * 3));\n }\n\n /**\n * Creates a new portion within this PointsBatchingLayer, returns the new portion ID.\n *\n * Gives the portion the specified geometry, color and matrix.\n *\n * @param mesh The SceneModelMesh that owns the portion\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.positionsCompressed Flat quantized positions array - decompressed with PointsBatchingLayer positionsDecodeMatrix\n * @param [cfg.colorsCompressed] Quantized RGB colors [0..255,0..255,0..255,0..255]\n * @param [cfg.colors] Flat float colors array.\n * @param cfg.color Float RGB color [0..1,0..1,0..1]\n * @param [cfg.meshMatrix] Flat float 4x4 matrix\n * @param cfg.aabb Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(mesh, cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const positionsCompressed = cfg.positionsCompressed;\n const color = cfg.color;\n const colorsCompressed = cfg.colorsCompressed;\n const colors = cfg.colors;\n const pickColor = cfg.pickColor;\n\n const buffer = this._buffer;\n const positionsIndex = buffer.positions.length;\n const vertsIndex = positionsIndex / 3;\n\n let numVerts;\n\n math.expandAABB3(this._modelAABB, cfg.aabb);\n\n if (this._preCompressedPositionsExpected) {\n\n if (!positionsCompressed) {\n throw \"positionsCompressed expected\";\n }\n\n for (let i = 0, len = positionsCompressed.length; i < len; i++) {\n buffer.positions.push(positionsCompressed[i]);\n }\n\n numVerts = positionsCompressed.length / 3;\n\n } else {\n\n if (!positions) {\n throw \"positions expected\";\n }\n\n numVerts = positions.length / 3;\n\n const lenPositions = positions.length;\n const positionsBase = buffer.positions.length;\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n }\n\n if (colorsCompressed) {\n for (let i = 0, len = colorsCompressed.length; i < len; i++) {\n buffer.colors.push(colorsCompressed[i]);\n }\n\n } else if (colors) {\n for (let i = 0, len = colors.length; i < len; i++) {\n buffer.colors.push(colors[i] * 255);\n }\n\n } else if (color) {\n\n const r = color[0]; // Color is pre-quantized by VBOSceneModel\n const g = color[1];\n const b = color[2];\n const a = 1.0;\n\n for (let i = 0; i < numVerts; i++) {\n buffer.colors.push(r);\n buffer.colors.push(g);\n buffer.colors.push(b);\n buffer.colors.push(a);\n }\n }\n\n {\n const pickColorsBase = buffer.pickColors.length;\n const lenPickColors = numVerts * 4;\n for (let i = pickColorsBase, len = pickColorsBase + lenPickColors; i < len; i += 4) {\n buffer.pickColors.push(pickColor[0]);\n buffer.pickColors.push(pickColor[1]);\n buffer.pickColors.push(pickColor[2]);\n buffer.pickColors.push(pickColor[3]);\n }\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n for (let i = 0; i < numVerts; i++) {\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n }\n }\n\n const portionId = this._portions.length / 2;\n\n this._portions.push(vertsIndex);\n this._portions.push(numVerts);\n\n this._numPortions++;\n this.model.numPortions++;\n this._meshes.push(mesh);\n return portionId;\n }\n\n /**\n * Builds batch VBOs from appended geometries.\n * No more portions can then be created.\n */\n finalize() {\n\n if (this._finalized) {\n return;\n }\n\n const state = this._state;\n const gl = this.model.scene.canvas.gl;\n const buffer = this._buffer;\n\n if (buffer.positions.length > 0) {\n if (this._preCompressedPositionsExpected) {\n const positions = new Uint16Array(buffer.positions);\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, buffer.positions.length, 3, gl.STATIC_DRAW);\n } else {\n const positions = new Float32Array(buffer.positions);\n const quantizedPositions = quantizePositions(positions, this._modelAABB, state.positionsDecodeMatrix);\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, buffer.positions.length, 3, gl.STATIC_DRAW);\n }\n }\n\n if (buffer.colors.length > 0) {\n const colors = new Uint8Array(buffer.colors);\n let normalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, buffer.colors.length, 4, gl.STATIC_DRAW, normalized);\n }\n\n if (buffer.positions.length > 0) { // Because we build flags arrays here, get their length from the positions array\n const flagsLength = buffer.positions.length / 3;\n const flags = new Float32Array(flagsLength);\n let notNormalized = false;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 1, gl.DYNAMIC_DRAW, notNormalized);\n }\n\n if (buffer.pickColors.length > 0) {\n const pickColors = new Uint8Array(buffer.pickColors);\n let normalized = false;\n state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, pickColors, buffer.pickColors.length, 4, gl.STATIC_DRAW, normalized);\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n if (buffer.offsets.length > 0) {\n const offsets = new Float32Array(buffer.offsets);\n state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, offsets, buffer.offsets.length, 3, gl.DYNAMIC_DRAW);\n }\n }\n\n this._buffer = null;\n this._finalized = true;\n }\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setVisible(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setHighlighted(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setXRayed(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setSelected(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setEdges(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n // Not applicable to point clouds\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags(portionId, flags);\n }\n\n setCulled(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setColor(portionId, color) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstColor = vertexBase * 4;\n const lenColor = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenColor);\n const r = color[0];\n const g = color[1];\n const b = color[2];\n for (let i = 0; i < lenColor; i += 4) {\n tempArray[i + 0] = r;\n tempArray[i + 1] = g;\n tempArray[i + 2] = b;\n }\n this._state.colorsBuf.setData(tempArray, firstColor, lenColor);\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n /**\n * flags are 4bits values encoded on a 32bit base. color flag on the first 4 bits, silhouette flag on the next 4 bits and so on for edge, pick and clippable.\n */\n _setFlags(portionId, flags, transparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstFlag = vertexBase;\n const lenFlags = numVerts;\n const tempArray = this._scratchMemory.getFloat32Array(lenFlags);\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n let colorFlag;\n if (!visible || culled || xrayed\n || (highlighted && !this.model.scene.highlightMaterial.glowThrough)\n || (selected && !this.model.scene.selectedMaterial.glowThrough)) {\n colorFlag = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n colorFlag = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n colorFlag = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n let silhouetteFlag;\n if (!visible || culled) {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let pickFlag = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n const clippableFlag = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 1 : 0;\n\n for (let i = 0; i < lenFlags; i++) {\n let vertFlag = 0;\n vertFlag |= colorFlag;\n vertFlag |= silhouetteFlag << 4;\n // no edges\n vertFlag |= pickFlag << 12;\n vertFlag |= clippableFlag << 16;\n\n tempArray[i] = vertFlag;\n }\n\n this._state.flagsBuf.setData(tempArray, firstFlag);\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstOffset = vertexBase * 3;\n const lenOffsets = numVerts * 3;\n const tempArray = this._scratchMemory.getFloat32Array(lenOffsets);\n const x = offset[0];\n const y = offset[1];\n const z = offset[2];\n for (let i = 0; i < lenOffsets; i += 3) {\n tempArray[i + 0] = x;\n tempArray[i + 1] = y;\n tempArray[i + 2] = z;\n }\n this._state.offsetsBuf.setData(tempArray, firstOffset, lenOffsets);\n }\n\n //-- NORMAL RENDERING ----------------------------------------------------------------------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n\n // -- RENDERING SAO POST EFFECT TARGETS ----------------------------------------------------------------------------\n\n drawDepth(renderFlags, frameCtx) {\n }\n\n drawNormals(renderFlags, frameCtx) {\n }\n\n // -- EMPHASIS RENDERING -------------------------------------------------------------------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n //-- EDGES RENDERING -----------------------------------------------------------------------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.pickMeshRenderer) {\n this._renderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.pickDepthRenderer) {\n this._renderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n }\n\n drawSnapInit(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.snapInitRenderer) {\n this._renderers.snapInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawSnap(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.snapRenderer) {\n this._renderers.snapRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n //---- OCCLUSION TESTING -------------------------------------------------------------------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.occlusionRenderer) {\n this._renderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n //---- SHADOWS -----------------------------------------------------------------------------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n }\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n state.destroy();\n }\n}\n", @@ -129076,7 +129635,7 @@ "lineNumber": 1 }, { - "__docId__": 6521, + "__docId__": 6540, "kind": "class", "name": "VBOBatchingPointsLayer", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js", @@ -129092,7 +129651,7 @@ "ignore": true }, { - "__docId__": 6522, + "__docId__": 6541, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129177,7 +129736,7 @@ ] }, { - "__docId__": 6523, + "__docId__": 6542, "kind": "member", "name": "model", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129196,7 +129755,7 @@ } }, { - "__docId__": 6524, + "__docId__": 6543, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129215,7 +129774,7 @@ } }, { - "__docId__": 6525, + "__docId__": 6544, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129234,7 +129793,7 @@ } }, { - "__docId__": 6526, + "__docId__": 6545, "kind": "member", "name": "_renderers", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129252,7 +129811,7 @@ } }, { - "__docId__": 6527, + "__docId__": 6546, "kind": "member", "name": "_buffer", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129270,7 +129829,7 @@ } }, { - "__docId__": 6528, + "__docId__": 6547, "kind": "member", "name": "_scratchMemory", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129288,7 +129847,7 @@ } }, { - "__docId__": 6529, + "__docId__": 6548, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129306,7 +129865,7 @@ } }, { - "__docId__": 6530, + "__docId__": 6549, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129324,7 +129883,7 @@ } }, { - "__docId__": 6531, + "__docId__": 6550, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129342,7 +129901,7 @@ } }, { - "__docId__": 6532, + "__docId__": 6551, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129360,7 +129919,7 @@ } }, { - "__docId__": 6533, + "__docId__": 6552, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129378,7 +129937,7 @@ } }, { - "__docId__": 6534, + "__docId__": 6553, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129396,7 +129955,7 @@ } }, { - "__docId__": 6535, + "__docId__": 6554, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129414,7 +129973,7 @@ } }, { - "__docId__": 6536, + "__docId__": 6555, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129432,7 +129991,7 @@ } }, { - "__docId__": 6537, + "__docId__": 6556, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129450,7 +130009,7 @@ } }, { - "__docId__": 6538, + "__docId__": 6557, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129468,7 +130027,7 @@ } }, { - "__docId__": 6539, + "__docId__": 6558, "kind": "member", "name": "_modelAABB", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129486,7 +130045,7 @@ } }, { - "__docId__": 6540, + "__docId__": 6559, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129504,7 +130063,7 @@ } }, { - "__docId__": 6541, + "__docId__": 6560, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129522,7 +130081,7 @@ } }, { - "__docId__": 6542, + "__docId__": 6561, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129540,7 +130099,7 @@ } }, { - "__docId__": 6543, + "__docId__": 6562, "kind": "member", "name": "aabbDirty", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129557,7 +130116,7 @@ } }, { - "__docId__": 6544, + "__docId__": 6563, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129575,7 +130134,7 @@ } }, { - "__docId__": 6545, + "__docId__": 6564, "kind": "member", "name": "_preCompressedPositionsExpected", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129593,7 +130152,7 @@ } }, { - "__docId__": 6547, + "__docId__": 6566, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129612,7 +130171,7 @@ } }, { - "__docId__": 6549, + "__docId__": 6568, "kind": "method", "name": "canCreatePortion", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129651,7 +130210,7 @@ } }, { - "__docId__": 6550, + "__docId__": 6569, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129770,7 +130329,7 @@ } }, { - "__docId__": 6551, + "__docId__": 6570, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129785,7 +130344,7 @@ "return": null }, { - "__docId__": 6554, + "__docId__": 6573, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129820,7 +130379,7 @@ "return": null }, { - "__docId__": 6555, + "__docId__": 6574, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129855,7 +130414,7 @@ "return": null }, { - "__docId__": 6556, + "__docId__": 6575, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129890,7 +130449,7 @@ "return": null }, { - "__docId__": 6557, + "__docId__": 6576, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129925,7 +130484,7 @@ "return": null }, { - "__docId__": 6558, + "__docId__": 6577, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129960,7 +130519,7 @@ "return": null }, { - "__docId__": 6559, + "__docId__": 6578, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -129995,7 +130554,7 @@ "return": null }, { - "__docId__": 6560, + "__docId__": 6579, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130024,7 +130583,7 @@ "return": null }, { - "__docId__": 6561, + "__docId__": 6580, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130059,7 +130618,7 @@ "return": null }, { - "__docId__": 6562, + "__docId__": 6581, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130088,7 +130647,7 @@ "return": null }, { - "__docId__": 6563, + "__docId__": 6582, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130123,7 +130682,7 @@ "return": null }, { - "__docId__": 6564, + "__docId__": 6583, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130152,7 +130711,7 @@ "return": null }, { - "__docId__": 6565, + "__docId__": 6584, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130187,7 +130746,7 @@ "return": null }, { - "__docId__": 6566, + "__docId__": 6585, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130222,7 +130781,7 @@ "return": null }, { - "__docId__": 6567, + "__docId__": 6586, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130251,7 +130810,7 @@ "return": null }, { - "__docId__": 6568, + "__docId__": 6587, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130280,7 +130839,7 @@ "return": null }, { - "__docId__": 6569, + "__docId__": 6588, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130309,7 +130868,7 @@ "return": null }, { - "__docId__": 6570, + "__docId__": 6589, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130338,7 +130897,7 @@ "return": null }, { - "__docId__": 6571, + "__docId__": 6590, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130367,7 +130926,7 @@ "return": null }, { - "__docId__": 6572, + "__docId__": 6591, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130396,7 +130955,7 @@ "return": null }, { - "__docId__": 6573, + "__docId__": 6592, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130425,7 +130984,7 @@ "return": null }, { - "__docId__": 6574, + "__docId__": 6593, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130454,7 +131013,7 @@ "return": null }, { - "__docId__": 6575, + "__docId__": 6594, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130483,7 +131042,7 @@ "return": null }, { - "__docId__": 6576, + "__docId__": 6595, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130512,7 +131071,7 @@ "return": null }, { - "__docId__": 6577, + "__docId__": 6596, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130541,7 +131100,7 @@ "return": null }, { - "__docId__": 6578, + "__docId__": 6597, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130570,7 +131129,7 @@ "return": null }, { - "__docId__": 6579, + "__docId__": 6598, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130599,7 +131158,7 @@ "return": null }, { - "__docId__": 6580, + "__docId__": 6599, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130628,7 +131187,7 @@ "return": null }, { - "__docId__": 6581, + "__docId__": 6600, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130657,7 +131216,7 @@ "return": null }, { - "__docId__": 6582, + "__docId__": 6601, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130686,7 +131245,7 @@ "return": null }, { - "__docId__": 6583, + "__docId__": 6602, "kind": "method", "name": "drawSnapInit", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130715,7 +131274,7 @@ "return": null }, { - "__docId__": 6584, + "__docId__": 6603, "kind": "method", "name": "drawSnap", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130744,7 +131303,7 @@ "return": null }, { - "__docId__": 6585, + "__docId__": 6604, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130773,7 +131332,7 @@ "return": null }, { - "__docId__": 6586, + "__docId__": 6605, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130802,7 +131361,7 @@ "return": null }, { - "__docId__": 6587, + "__docId__": 6606, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js~VBOBatchingPointsLayer", @@ -130818,7 +131377,7 @@ "return": null }, { - "__docId__": 6588, + "__docId__": 6607, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js", "content": "import {VBORenderer} from \"../../VBORenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class VBOBatchingPointsRenderer extends VBORenderer {\n _draw(drawCfg) {\n const {gl} = this._scene.canvas;\n\n const {\n state,\n frameCtx,\n incrementDrawState,\n } = drawCfg;\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n\n if (incrementDrawState) {\n frameCtx.drawArrays++;\n }\n }\n}\n", @@ -130829,7 +131388,7 @@ "lineNumber": 1 }, { - "__docId__": 6589, + "__docId__": 6608, "kind": "class", "name": "VBOBatchingPointsRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js", @@ -130848,7 +131407,7 @@ "ignore": true }, { - "__docId__": 6590, + "__docId__": 6609, "kind": "method", "name": "_draw", "memberof": "src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js~VBOBatchingPointsRenderer", @@ -130872,7 +131431,7 @@ "return": null }, { - "__docId__": 6591, + "__docId__": 6610, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js", "content": "import {VBOBatchingPointsRenderer} from \"../VBOBatchingPointsRenderer.js\";\n\n/**\n * @private\n */\nclass VBOBatchingPointsColorRenderer extends VBOBatchingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, { incrementDrawState: true });\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points batching color vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (pointsMaterial.filterIntensity) {\n src.push(\"uniform vec2 intensityRange;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n if (pointsMaterial.filterIntensity) {\n src.push(\"float intensity = float(color.a) / 255.0;\")\n src.push(\"if (intensity < intensityRange[0] || intensity > intensityRange[1]) {\");\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n }\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, 1.0);\");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n if (pointsMaterial.filterIntensity) {\n src.push(\"}\");\n }\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points batching color fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" outColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n\nexport {VBOBatchingPointsColorRenderer};", @@ -130883,7 +131442,7 @@ "lineNumber": 1 }, { - "__docId__": 6592, + "__docId__": 6611, "kind": "class", "name": "VBOBatchingPointsColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js", @@ -130902,7 +131461,7 @@ "ignore": true }, { - "__docId__": 6593, + "__docId__": 6612, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js~VBOBatchingPointsColorRenderer", @@ -130923,7 +131482,7 @@ } }, { - "__docId__": 6594, + "__docId__": 6613, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js~VBOBatchingPointsColorRenderer", @@ -130958,7 +131517,7 @@ "return": null }, { - "__docId__": 6595, + "__docId__": 6614, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js~VBOBatchingPointsColorRenderer", @@ -130979,7 +131538,7 @@ } }, { - "__docId__": 6596, + "__docId__": 6615, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js~VBOBatchingPointsColorRenderer", @@ -131000,7 +131559,7 @@ } }, { - "__docId__": 6597, + "__docId__": 6616, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js", "content": "import {VBOBatchingPointsRenderer} from \"../VBOBatchingPointsRenderer.js\";\n\n\n/**\n * @private\n */\nclass VBOBatchingPointsOcclusionRenderer extends VBOBatchingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points batching occlusion vertex shader\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n // Only opaque objects can be occluders\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\" gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points batching occlusion fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n src.push(\"}\");\n return src;\n }\n}\n\nexport {VBOBatchingPointsOcclusionRenderer};\n", @@ -131011,7 +131570,7 @@ "lineNumber": 1 }, { - "__docId__": 6598, + "__docId__": 6617, "kind": "class", "name": "VBOBatchingPointsOcclusionRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js", @@ -131030,7 +131589,7 @@ "ignore": true }, { - "__docId__": 6599, + "__docId__": 6618, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js~VBOBatchingPointsOcclusionRenderer", @@ -131051,7 +131610,7 @@ } }, { - "__docId__": 6600, + "__docId__": 6619, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js~VBOBatchingPointsOcclusionRenderer", @@ -131072,7 +131631,7 @@ } }, { - "__docId__": 6601, + "__docId__": 6620, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js~VBOBatchingPointsOcclusionRenderer", @@ -131093,7 +131652,7 @@ } }, { - "__docId__": 6602, + "__docId__": 6621, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js", "content": "import {VBOBatchingPointsRenderer} from \"../VBOBatchingPointsRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class VBOBatchingPointsPickDepthRenderer extends VBOBatchingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points batched pick depth vertex shader\");\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"gl_PointSize += 10.0;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points batched pick depth fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" outColor = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n}\n", @@ -131104,7 +131663,7 @@ "lineNumber": 1 }, { - "__docId__": 6603, + "__docId__": 6622, "kind": "class", "name": "VBOBatchingPointsPickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js", @@ -131123,7 +131682,7 @@ "ignore": true }, { - "__docId__": 6604, + "__docId__": 6623, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js~VBOBatchingPointsPickDepthRenderer", @@ -131144,7 +131703,7 @@ } }, { - "__docId__": 6605, + "__docId__": 6624, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js~VBOBatchingPointsPickDepthRenderer", @@ -131165,7 +131724,7 @@ } }, { - "__docId__": 6606, + "__docId__": 6625, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js~VBOBatchingPointsPickDepthRenderer", @@ -131186,7 +131745,7 @@ } }, { - "__docId__": 6607, + "__docId__": 6626, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js", "content": "import {VBOBatchingPointsRenderer} from \"../VBOBatchingPointsRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class VBOBatchingPointsPickMeshRenderer extends VBOBatchingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points batching pick mesh vertex shader\");\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n src.push(\"in vec4 pickColor;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vPickColor;\");\n\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"gl_PointSize += 10.0;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points batching pick mesh vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vPickColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n}", @@ -131197,7 +131756,7 @@ "lineNumber": 1 }, { - "__docId__": 6608, + "__docId__": 6627, "kind": "class", "name": "VBOBatchingPointsPickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js", @@ -131216,7 +131775,7 @@ "ignore": true }, { - "__docId__": 6609, + "__docId__": 6628, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js~VBOBatchingPointsPickMeshRenderer", @@ -131237,7 +131796,7 @@ } }, { - "__docId__": 6610, + "__docId__": 6629, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js~VBOBatchingPointsPickMeshRenderer", @@ -131258,7 +131817,7 @@ } }, { - "__docId__": 6611, + "__docId__": 6630, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js~VBOBatchingPointsPickMeshRenderer", @@ -131279,7 +131838,7 @@ } }, { - "__docId__": 6612, + "__docId__": 6631, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js", "content": "import {VBOBatchingPointsColorRenderer} from \"./VBOBatchingPointsColorRenderer.js\";\nimport {VBOBatchingPointsSilhouetteRenderer} from \"./VBOBatchingPointsSilhouetteRenderer.js\";\nimport {VBOBatchingPointsPickMeshRenderer} from \"./VBOBatchingPointsPickMeshRenderer.js\";\nimport {VBOBatchingPointsPickDepthRenderer} from \"./VBOBatchingPointsPickDepthRenderer.js\";\nimport {VBOBatchingPointsOcclusionRenderer} from \"./VBOBatchingPointsOcclusionRenderer.js\";\nimport {VBOBatchingPointsSnapInitRenderer} from \"./VBOBatchingPointsSnapInitRenderer.js\";\nimport {VBOBatchingPointsSnapRenderer} from \"./VBOBatchingPointsSnapRenderer.js\";\n\n/**\n * @private\n */\nclass VBOBatchingPointsRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n if (this._snapInitRenderer && (!this._snapInitRenderer.getValid())) {\n this._snapInitRenderer.destroy();\n this._snapInitRenderer = null;\n }\n if (this._snapRenderer && (!this._snapRenderer.getValid())) {\n this._snapRenderer.destroy();\n this._snapRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new VBOBatchingPointsColorRenderer(this._scene);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new VBOBatchingPointsSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new VBOBatchingPointsPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new VBOBatchingPointsPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new VBOBatchingPointsOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get snapInitRenderer() {\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new VBOBatchingPointsSnapInitRenderer(this._scene, false);\n }\n return this._snapInitRenderer;\n }\n\n get snapRenderer() {\n if (!this._snapRenderer) {\n this._snapRenderer = new VBOBatchingPointsSnapRenderer(this._scene);\n }\n return this._snapRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._snapInitRenderer) {\n this._snapInitRenderer.destroy();\n }\n if (this._snapRenderer) {\n this._snapRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\n/**\n * @private\n */\nexport function getRenderers(scene) {\n const sceneId = scene.id;\n let renderers = cachedRenderers[sceneId];\n if (!renderers) {\n renderers = new VBOBatchingPointsRenderers(scene);\n cachedRenderers[sceneId] = renderers;\n renderers._compile();\n scene.on(\"compile\", () => {\n renderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers[sceneId];\n renderers._destroy();\n });\n }\n return renderers;\n}\n", @@ -131290,7 +131849,7 @@ "lineNumber": 1 }, { - "__docId__": 6613, + "__docId__": 6632, "kind": "class", "name": "VBOBatchingPointsRenderers", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js", @@ -131306,7 +131865,7 @@ "ignore": true }, { - "__docId__": 6614, + "__docId__": 6633, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131320,7 +131879,7 @@ "undocument": true }, { - "__docId__": 6615, + "__docId__": 6634, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131338,7 +131897,7 @@ } }, { - "__docId__": 6616, + "__docId__": 6635, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131355,7 +131914,7 @@ "return": null }, { - "__docId__": 6617, + "__docId__": 6636, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131373,7 +131932,7 @@ } }, { - "__docId__": 6618, + "__docId__": 6637, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131391,7 +131950,7 @@ } }, { - "__docId__": 6619, + "__docId__": 6638, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131409,7 +131968,7 @@ } }, { - "__docId__": 6620, + "__docId__": 6639, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131427,7 +131986,7 @@ } }, { - "__docId__": 6621, + "__docId__": 6640, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131445,7 +132004,7 @@ } }, { - "__docId__": 6622, + "__docId__": 6641, "kind": "member", "name": "_snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131463,7 +132022,7 @@ } }, { - "__docId__": 6623, + "__docId__": 6642, "kind": "member", "name": "_snapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131481,7 +132040,7 @@ } }, { - "__docId__": 6624, + "__docId__": 6643, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131500,7 +132059,7 @@ } }, { - "__docId__": 6626, + "__docId__": 6645, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131519,7 +132078,7 @@ } }, { - "__docId__": 6628, + "__docId__": 6647, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131538,7 +132097,7 @@ } }, { - "__docId__": 6630, + "__docId__": 6649, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131557,7 +132116,7 @@ } }, { - "__docId__": 6632, + "__docId__": 6651, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131576,7 +132135,7 @@ } }, { - "__docId__": 6634, + "__docId__": 6653, "kind": "get", "name": "snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131595,7 +132154,7 @@ } }, { - "__docId__": 6636, + "__docId__": 6655, "kind": "get", "name": "snapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131614,7 +132173,7 @@ } }, { - "__docId__": 6638, + "__docId__": 6657, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js~VBOBatchingPointsRenderers", @@ -131631,7 +132190,7 @@ "return": null }, { - "__docId__": 6639, + "__docId__": 6658, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js", @@ -131652,7 +132211,7 @@ "ignore": true }, { - "__docId__": 6640, + "__docId__": 6659, "kind": "function", "name": "getRenderers", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js", @@ -131682,7 +132241,7 @@ } }, { - "__docId__": 6641, + "__docId__": 6660, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js", "content": "import {VBOBatchingPointsRenderer} from \"../VBOBatchingPointsRenderer.js\";\n\n/**\n * Renders pointsBatchingLayer fragment depths to a shadow map.\n *\n * @private\n */\nexport class VBOBatchingPointsShadowRenderer extends VBOBatchingPointsRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Batched geometry shadow vertex shader\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src);\n\n\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n src.push(\" int colorFlag = int(flags) & 0xF;\");\n src.push(\" bool visible = (colorFlag > 0);\");\n src.push(\" bool transparent = ((float(color.a) / 255.0) < 1.0);\");\n src.push(\" if (!visible || transparent) {\");\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = (sectionPlanesState.getNumAllocatedSectionPlanes() > 0);\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Batched geometry shadow fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vViewPosition;\");\n\n src.push(\"vec4 encodeFloat( const in float v ) {\");\n src.push(\" const vec4 bitShift = vec4(256 * 256 * 256, 256 * 256, 256, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\");\n src.push(\" vec4 comp = fract(v * bitShift);\");\n src.push(\" comp -= comp.xxyz * bitMask;\");\n src.push(\" return comp;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n src.push(\" outColor = encodeFloat( gl_FragCoord.z); \");\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -131693,7 +132252,7 @@ "lineNumber": 1 }, { - "__docId__": 6642, + "__docId__": 6661, "kind": "class", "name": "VBOBatchingPointsShadowRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js", @@ -131712,7 +132271,7 @@ "ignore": true }, { - "__docId__": 6643, + "__docId__": 6662, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js~VBOBatchingPointsShadowRenderer", @@ -131733,7 +132292,7 @@ } }, { - "__docId__": 6644, + "__docId__": 6663, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js~VBOBatchingPointsShadowRenderer", @@ -131754,7 +132313,7 @@ } }, { - "__docId__": 6645, + "__docId__": 6664, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js", "content": "import {VBOBatchingPointsRenderer} from \"../VBOBatchingPointsRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOBatchingPointsSilhouetteRenderer extends VBOBatchingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n super.drawLayer(frameCtx, pointsBatchingLayer, renderPass, { colorUniform: true });\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points batching silhouette vertex shader\");\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec4 color;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"void main(void) {\");\n\n // silhouetteFlag = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`int silhouetteFlag = int(flags) >> 4 & 0xF;`);\n src.push(`if (silhouetteFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points batching silhouette vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = color;\");\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -131765,7 +132324,7 @@ "lineNumber": 1 }, { - "__docId__": 6646, + "__docId__": 6665, "kind": "class", "name": "VBOBatchingPointsSilhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js", @@ -131784,7 +132343,7 @@ "ignore": true }, { - "__docId__": 6647, + "__docId__": 6666, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js~VBOBatchingPointsSilhouetteRenderer", @@ -131805,7 +132364,7 @@ } }, { - "__docId__": 6648, + "__docId__": 6667, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js~VBOBatchingPointsSilhouetteRenderer", @@ -131840,7 +132399,7 @@ "return": null }, { - "__docId__": 6649, + "__docId__": 6668, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js~VBOBatchingPointsSilhouetteRenderer", @@ -131861,7 +132420,7 @@ } }, { - "__docId__": 6650, + "__docId__": 6669, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js~VBOBatchingPointsSilhouetteRenderer", @@ -131882,7 +132441,7 @@ } }, { - "__docId__": 6651, + "__docId__": 6670, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js", "content": "\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {VBORenderer} from \"../../../VBORenderer.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOBatchingPointsSnapInitRenderer extends VBORenderer {\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const origin = batchingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = batchingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(batchingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(batchingLayer));\n } else {\n this._vaoCache.set(batchingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = tempVec3c;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(batchingLayer);\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\");\n this._uLayerNumber = program.getLocation(\"layerNumber\");\n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBOBatchingPointsSnapInitRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec4 pickColor;\");\n src.push(\"in vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n src.push(\"uniform vec2 snapVectorA;\");\n src.push(\"uniform vec2 snapInvVectorAB;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n src.push(\"flat out vec4 vPickColor;\");\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" relativeToOriginPosition = worldPosition.xyz;\");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vPickColor = pickColor;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBOBatchingPointsSnapInitRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\");\n src.push(\"uniform vec3 coordinateScaler;\");\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in vec4 vPickColor;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"layout(location = 0) out highp ivec4 outCoords;\");\n src.push(\"layout(location = 1) out highp ivec4 outNormal;\");\n src.push(\"layout(location = 2) out lowp uvec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" float dx = dFdx(vFragDepth);\")\n src.push(\" float dy = dFdy(vFragDepth);\")\n src.push(\" float diff = sqrt(dx*dx+dy*dy);\");\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth + diff ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, -layerNumber);\");\n\n // src.push(\"vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n // src.push(\"vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n // src.push(\"vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(`outNormal = ivec4(1.0, 1.0, 1.0, 1.0);`);\n src.push(\"outPickColor = uvec4(vPickColor);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -131893,7 +132452,7 @@ "lineNumber": 1 }, { - "__docId__": 6652, + "__docId__": 6671, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js", @@ -131914,7 +132473,7 @@ "ignore": true }, { - "__docId__": 6653, + "__docId__": 6672, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js", @@ -131935,7 +132494,7 @@ "ignore": true }, { - "__docId__": 6654, + "__docId__": 6673, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js", @@ -131956,7 +132515,7 @@ "ignore": true }, { - "__docId__": 6655, + "__docId__": 6674, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js", @@ -131977,7 +132536,7 @@ "ignore": true }, { - "__docId__": 6656, + "__docId__": 6675, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js", @@ -131998,7 +132557,7 @@ "ignore": true }, { - "__docId__": 6657, + "__docId__": 6676, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js", @@ -132019,7 +132578,7 @@ "ignore": true }, { - "__docId__": 6658, + "__docId__": 6677, "kind": "class", "name": "VBOBatchingPointsSnapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js", @@ -132038,7 +132597,7 @@ "ignore": true }, { - "__docId__": 6659, + "__docId__": 6678, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132073,7 +132632,7 @@ "return": null }, { - "__docId__": 6660, + "__docId__": 6679, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132090,7 +132649,7 @@ "return": null }, { - "__docId__": 6661, + "__docId__": 6680, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132108,7 +132667,7 @@ } }, { - "__docId__": 6662, + "__docId__": 6681, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132126,7 +132685,7 @@ } }, { - "__docId__": 6663, + "__docId__": 6682, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132143,7 +132702,7 @@ } }, { - "__docId__": 6664, + "__docId__": 6683, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132160,7 +132719,7 @@ } }, { - "__docId__": 6665, + "__docId__": 6684, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132178,7 +132737,7 @@ } }, { - "__docId__": 6666, + "__docId__": 6685, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132196,7 +132755,7 @@ } }, { - "__docId__": 6667, + "__docId__": 6686, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132213,7 +132772,7 @@ "return": null }, { - "__docId__": 6668, + "__docId__": 6687, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132234,7 +132793,7 @@ } }, { - "__docId__": 6669, + "__docId__": 6688, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132255,7 +132814,7 @@ } }, { - "__docId__": 6670, + "__docId__": 6689, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132271,7 +132830,7 @@ "return": null }, { - "__docId__": 6671, + "__docId__": 6690, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132289,7 +132848,7 @@ } }, { - "__docId__": 6672, + "__docId__": 6691, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js~VBOBatchingPointsSnapInitRenderer", @@ -132305,7 +132864,7 @@ "return": null }, { - "__docId__": 6674, + "__docId__": 6693, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js", "content": "\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {VBORenderer} from \"../../../VBORenderer.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOBatchingPointsSnapRenderer extends VBORenderer{\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const origin = batchingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = batchingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(batchingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(batchingLayer));\n } else {\n this._vaoCache.set(batchingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = tempVec3c;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(batchingLayer);\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\"); \n this.uVectorA = program.getLocation(\"snapVectorA\"); \n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\"); \n this._uLayerNumber = program.getLocation(\"layerNumber\"); \n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\"); \n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBOBatchingPointsSnapRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\"); \n src.push(\"uniform vec2 snapVectorA;\"); \n src.push(\"uniform vec2 snapInvVectorAB;\"); \n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"gl_PointSize = 1.0;\"); // Windows needs this?\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBOBatchingPointsSnapRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\"); \n src.push(\"uniform vec3 coordinateScaler;\"); \n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"out highp ivec4 outCoords;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);\")\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -132316,7 +132875,7 @@ "lineNumber": 1 }, { - "__docId__": 6675, + "__docId__": 6694, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js", @@ -132337,7 +132896,7 @@ "ignore": true }, { - "__docId__": 6676, + "__docId__": 6695, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js", @@ -132358,7 +132917,7 @@ "ignore": true }, { - "__docId__": 6677, + "__docId__": 6696, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js", @@ -132379,7 +132938,7 @@ "ignore": true }, { - "__docId__": 6678, + "__docId__": 6697, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js", @@ -132400,7 +132959,7 @@ "ignore": true }, { - "__docId__": 6679, + "__docId__": 6698, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js", @@ -132421,7 +132980,7 @@ "ignore": true }, { - "__docId__": 6680, + "__docId__": 6699, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js", @@ -132442,7 +133001,7 @@ "ignore": true }, { - "__docId__": 6681, + "__docId__": 6700, "kind": "class", "name": "VBOBatchingPointsSnapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js", @@ -132461,7 +133020,7 @@ "ignore": true }, { - "__docId__": 6682, + "__docId__": 6701, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132482,7 +133041,7 @@ } }, { - "__docId__": 6683, + "__docId__": 6702, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132517,7 +133076,7 @@ "return": null }, { - "__docId__": 6684, + "__docId__": 6703, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132534,7 +133093,7 @@ "return": null }, { - "__docId__": 6685, + "__docId__": 6704, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132552,7 +133111,7 @@ } }, { - "__docId__": 6686, + "__docId__": 6705, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132570,7 +133129,7 @@ } }, { - "__docId__": 6687, + "__docId__": 6706, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132587,7 +133146,7 @@ } }, { - "__docId__": 6688, + "__docId__": 6707, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132604,7 +133163,7 @@ } }, { - "__docId__": 6689, + "__docId__": 6708, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132622,7 +133181,7 @@ } }, { - "__docId__": 6690, + "__docId__": 6709, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132640,7 +133199,7 @@ } }, { - "__docId__": 6691, + "__docId__": 6710, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132657,7 +133216,7 @@ "return": null }, { - "__docId__": 6692, + "__docId__": 6711, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132678,7 +133237,7 @@ } }, { - "__docId__": 6693, + "__docId__": 6712, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132699,7 +133258,7 @@ } }, { - "__docId__": 6694, + "__docId__": 6713, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132715,7 +133274,7 @@ "return": null }, { - "__docId__": 6695, + "__docId__": 6714, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132733,7 +133292,7 @@ } }, { - "__docId__": 6696, + "__docId__": 6715, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js~VBOBatchingPointsSnapRenderer", @@ -132749,7 +133308,7 @@ "return": null }, { - "__docId__": 6698, + "__docId__": 6717, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js", "content": "import {Configs} from \"../../../../../Configs.js\";\n\nconst configs = new Configs();\n\n/**\n * @private\n */\nexport class VBOBatchingTrianglesBuffer {\n\n constructor() {\n this.maxVerts = configs.maxGeometryBatchSize;\n this.maxIndices = configs.maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.uv = [];\n this.metallicRoughness = [];\n this.normals = [];\n this.pickColors = [];\n this.offsets = [];\n this.indices = [];\n this.edgeIndices = [];\n }\n}\n\n", @@ -132760,7 +133319,7 @@ "lineNumber": 1 }, { - "__docId__": 6699, + "__docId__": 6718, "kind": "variable", "name": "configs", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js", @@ -132781,7 +133340,7 @@ "ignore": true }, { - "__docId__": 6700, + "__docId__": 6719, "kind": "class", "name": "VBOBatchingTrianglesBuffer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js", @@ -132797,7 +133356,7 @@ "ignore": true }, { - "__docId__": 6701, + "__docId__": 6720, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132811,7 +133370,7 @@ "undocument": true }, { - "__docId__": 6702, + "__docId__": 6721, "kind": "member", "name": "maxVerts", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132828,7 +133387,7 @@ } }, { - "__docId__": 6703, + "__docId__": 6722, "kind": "member", "name": "maxIndices", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132845,7 +133404,7 @@ } }, { - "__docId__": 6704, + "__docId__": 6723, "kind": "member", "name": "positions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132862,7 +133421,7 @@ } }, { - "__docId__": 6705, + "__docId__": 6724, "kind": "member", "name": "colors", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132879,7 +133438,7 @@ } }, { - "__docId__": 6706, + "__docId__": 6725, "kind": "member", "name": "uv", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132896,7 +133455,7 @@ } }, { - "__docId__": 6707, + "__docId__": 6726, "kind": "member", "name": "metallicRoughness", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132913,7 +133472,7 @@ } }, { - "__docId__": 6708, + "__docId__": 6727, "kind": "member", "name": "normals", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132930,7 +133489,7 @@ } }, { - "__docId__": 6709, + "__docId__": 6728, "kind": "member", "name": "pickColors", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132947,7 +133506,7 @@ } }, { - "__docId__": 6710, + "__docId__": 6729, "kind": "member", "name": "offsets", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132964,7 +133523,7 @@ } }, { - "__docId__": 6711, + "__docId__": 6730, "kind": "member", "name": "indices", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132981,7 +133540,7 @@ } }, { - "__docId__": 6712, + "__docId__": 6731, "kind": "member", "name": "edgeIndices", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js~VBOBatchingTrianglesBuffer", @@ -132998,7 +133557,7 @@ } }, { - "__docId__": 6713, + "__docId__": 6732, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", "content": "import {ENTITY_FLAGS} from '../../../ENTITY_FLAGS.js';\nimport {RENDER_PASSES} from '../../../RENDER_PASSES.js';\n\nimport {math} from \"../../../../math/math.js\";\nimport {RenderState} from \"../../../../webgl/RenderState.js\";\nimport {ArrayBuf} from \"../../../../webgl/ArrayBuf.js\";\nimport {geometryCompressionUtils} from \"../../../../math/geometryCompressionUtils.js\";\nimport {getRenderers} from \"./renderers/Renderers.js\";\nimport {VBOBatchingTrianglesBuffer} from \"./VBOBatchingTrianglesBuffer.js\";\nimport {quantizePositions, transformAndOctEncodeNormals} from \"../../../compression.js\";\n\nconst tempMat4 = math.mat4();\nconst tempMat4b = math.mat4();\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempVec3e = math.vec3();\nconst tempVec3f = math.vec3();\nconst tempVec3g = math.vec3();\n\n/**\n * @private\n */\nexport class VBOBatchingTrianglesLayer {\n\n /**\n * @param model\n * @param cfg.model\n * @param cfg.autoNormals\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.uvDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.origin\n * @param cfg.scratchMemory\n * @param cfg.textureSet\n * @param cfg.solid\n */\n constructor(cfg) {\n\n console.info(\"Creating VBOBatchingTrianglesLayer\");\n\n /**\n * Owner model\n * @type {VBOSceneModel}\n */\n this.model = cfg.model;\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"TrianglesBatchingLayer\"\n + (cfg.solid ? \"-solid\" : \"-surface\")\n + (cfg.autoNormals ? \"-autonormals\" : \"-normals\")\n\n // TODO: These two parts need to be IDs (ie. unique):\n\n + (cfg.textureSet && cfg.textureSet.colorTexture ? \"-colorTexture\" : \"\")\n + (cfg.textureSet && cfg.textureSet.metallicRoughnessTexture ? \"-metallicRoughnessTexture\" : \"\");\n\n /**\n * Index of this TrianglesBatchingLayer in {@link VBOSceneModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._renderers = getRenderers(cfg.model.scene);\n this._buffer = new VBOBatchingTrianglesBuffer(cfg.maxGeometryBatchSize);\n this._scratchMemory = cfg.scratchMemory;\n\n this._state = new RenderState({\n origin: math.vec3(),\n positionsBuf: null,\n offsetsBuf: null,\n normalsBuf: null,\n colorsBuf: null,\n uvBuf: null,\n metallicRoughnessBuf: null,\n flagsBuf: null,\n indicesBuf: null,\n edgeIndicesBuf: null,\n positionsDecodeMatrix: null,\n uvDecodeMatrix: null,\n textureSet: cfg.textureSet,\n pbrSupported: false // Set in #finalize if we have enough to support quality rendering\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n this._modelAABB = math.collapseAABB3(); // Model-space AABB\n this._portions = [];\n this._meshes = [];\n this._numVerts = 0;\n\n this._aabb = math.collapseAABB3();\n this.aabbDirty = true;\n\n this._finalized = false;\n\n if (cfg.positionsDecodeMatrix) {\n this._state.positionsDecodeMatrix = math.mat4(cfg.positionsDecodeMatrix);\n }\n\n if (cfg.uvDecodeMatrix) {\n this._state.uvDecodeMatrix = math.mat3(cfg.uvDecodeMatrix);\n this._preCompressedUVsExpected = true;\n } else {\n this._preCompressedUVsExpected = false;\n }\n\n if (cfg.origin) {\n this._state.origin.set(cfg.origin);\n }\n\n /**\n * When true, this layer contains solid triangle meshes, otherwise this layer contains surface triangle meshes\n * @type {boolean}\n */\n this.solid = !!cfg.solid;\n }\n\n get aabb() {\n if (this.aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._meshes.length; i < len; i++) {\n math.expandAABB3(this._aabb, this._meshes[i].aabb);\n }\n this.aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * Tests if there is room for another portion in this TrianglesBatchingLayer.\n *\n * @param lenPositions Number of positions we'd like to create in the portion.\n * @param lenIndices Number of indices we'd like to create in this portion.\n * @returns {Boolean} True if OK to create another portion.\n */\n canCreatePortion(lenPositions, lenIndices) {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n return ((this._buffer.positions.length + lenPositions) < (this._buffer.maxVerts * 3) && (this._buffer.indices.length + lenIndices) < (this._buffer.maxIndices));\n }\n\n /**\n * Creates a new portion within this TrianglesBatchingLayer, returns the new portion ID.\n *\n * Gives the portion the specified geometry, color and matrix.\n *\n * @param mesh The SceneModelMesh that owns the portion\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.positionsCompressed Flat quantized positions array - decompressed with TrianglesBatchingLayer positionsDecodeMatrix\n * @param [cfg.normals] Flat float normals array.\n * @param [cfg.uv] Flat UVs array.\n * @param [cfg.uvCompressed]\n * @param [cfg.colors] Flat float colors array.\n * @param [cfg.colorsCompressed]\n * @param cfg.indices Flat int indices array.\n * @param [cfg.edgeIndices] Flat int edges indices array.\n * @param cfg.color Quantized RGB color [0..255,0..255,0..255,0..255]\n * @param cfg.metallic Metalness factor [0..255]\n * @param cfg.roughness Roughness factor [0..255]\n * @param cfg.opacity Opacity [0..255]\n * @param [cfg.meshMatrix] Flat float 4x4 matrix\n * @param cfg.aabb Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(mesh, cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const positionsCompressed = cfg.positionsCompressed;\n const normals = cfg.normals;\n const normalsCompressed = cfg.normalsCompressed;\n const uv = cfg.uv;\n const uvCompressed = cfg.uvCompressed;\n const colors = cfg.colors;\n const colorsCompressed = cfg.colorsCompressed;\n const indices = cfg.indices;\n const edgeIndices = cfg.edgeIndices;\n const color = cfg.color;\n const metallic = cfg.metallic;\n const roughness = cfg.roughness;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const pickColor = cfg.pickColor;\n\n const scene = this.model.scene;\n const buffer = this._buffer;\n const vertsBaseIndex = buffer.positions.length / 3;\n\n let numVerts;\n\n math.expandAABB3(this._modelAABB, cfg.aabb);\n\n if (this._state.positionsDecodeMatrix) {\n if (!positionsCompressed) {\n throw \"positionsCompressed expected\";\n }\n numVerts = positionsCompressed.length / 3;\n for (let i = 0, len = positionsCompressed.length; i < len; i++) {\n buffer.positions.push(positionsCompressed[i]);\n }\n } else {\n if (!positions) {\n throw \"positions expected\";\n }\n numVerts = positions.length / 3;\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n }\n\n if (normalsCompressed && normalsCompressed.length > 0) {\n for (let i = 0, len = normalsCompressed.length; i < len; i++) {\n buffer.normals.push(normalsCompressed[i]);\n }\n } else if (normals && normals.length > 0) {\n const worldNormalMatrix = tempMat4;\n if (meshMatrix) {\n math.inverseMat4(math.transposeMat4(meshMatrix, tempMat4b), worldNormalMatrix); // Note: order of inverse and transpose doesn't matter\n } else {\n math.identityMat4(worldNormalMatrix, worldNormalMatrix);\n }\n transformAndOctEncodeNormals(worldNormalMatrix, normals, normals.length, buffer.normals, buffer.normals.length);\n }\n\n if (colors) {\n for (let i = 0, len = colors.length; i < len; i += 3) {\n buffer.colors.push(colors[i] * 255);\n buffer.colors.push(colors[i + 1] * 255);\n buffer.colors.push(colors[i + 2] * 255);\n buffer.colors.push(255);\n }\n } else if (colorsCompressed) {\n for (let i = 0, len = colors.length; i < len; i += 3) {\n buffer.colors.push(colors[i]);\n buffer.colors.push(colors[i + 1]);\n buffer.colors.push(colors[i + 2]);\n buffer.colors.push(255);\n }\n } else if (color) {\n const r = color[0]; // Color is pre-quantized by VBOSceneModel\n const g = color[1];\n const b = color[2];\n const a = opacity;\n for (let i = 0; i < numVerts; i++) {\n buffer.colors.push(r);\n buffer.colors.push(g);\n buffer.colors.push(b);\n buffer.colors.push(a);\n }\n }\n const metallicValue = (metallic !== null && metallic !== undefined) ? metallic : 0;\n const roughnessValue = (roughness !== null && roughness !== undefined) ? roughness : 255;\n for (let i = 0; i < numVerts; i++) {\n buffer.metallicRoughness.push(metallicValue);\n buffer.metallicRoughness.push(roughnessValue);\n }\n\n if (uv && uv.length > 0) {\n for (let i = 0, len = uv.length; i < len; i++) {\n buffer.uv.push(uv[i]);\n }\n } else if (uvCompressed && uvCompressed.length > 0) {\n for (let i = 0, len = uvCompressed.length; i < len; i++) {\n buffer.uv.push(uvCompressed[i]);\n }\n }\n\n for (let i = 0, len = indices.length; i < len; i++) {\n buffer.indices.push(vertsBaseIndex + indices[i]);\n }\n\n\n if (edgeIndices) {\n for (let i = 0, len = edgeIndices.length; i < len; i++) {\n buffer.edgeIndices.push(vertsBaseIndex + edgeIndices[i]);\n }\n }\n\n {\n const pickColorsBase = buffer.pickColors.length;\n const lenPickColors = numVerts * 4;\n for (let i = pickColorsBase, len = pickColorsBase + lenPickColors; i < len; i += 4) {\n buffer.pickColors.push(pickColor[0]);\n buffer.pickColors.push(pickColor[1]);\n buffer.pickColors.push(pickColor[2]);\n buffer.pickColors.push(pickColor[3]);\n }\n }\n\n if (scene.entityOffsetsEnabled) {\n for (let i = 0; i < numVerts; i++) {\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n }\n }\n\n const portionId = this._portions.length;\n\n const portion = {\n vertsBaseIndex: vertsBaseIndex,\n numVerts: numVerts,\n indicesBaseIndex: buffer.indices.length - indices.length,\n numIndices: indices.length,\n };\n\n if (scene.pickSurfacePrecisionEnabled) {\n // Quantized in-memory positions are initialized in finalize()\n\n portion.indices = indices;\n\n if (scene.entityOffsetsEnabled) {\n portion.offset = new Float32Array(3);\n }\n }\n\n this._portions.push(portion);\n this._numPortions++;\n this.model.numPortions++;\n this._numVerts += portion.numVerts;\n this._meshes.push(mesh);\n return portionId;\n }\n\n /**\n * Builds batch VBOs from appended geometries.\n * No more portions can then be created.\n */\n finalize() {\n\n if (this._finalized) {\n return;\n }\n\n const state = this._state;\n const gl = this.model.scene.canvas.gl;\n const buffer = this._buffer;\n\n if (buffer.positions.length > 0) {\n const quantizedPositions = (this._state.positionsDecodeMatrix)\n ? new Uint16Array(buffer.positions)\n : quantizePositions(buffer.positions, this._modelAABB, this._state.positionsDecodeMatrix = math.mat4()); // BOTTLENECK\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, quantizedPositions.length, 3, gl.STATIC_DRAW);\n if (this.model.scene.pickSurfacePrecisionEnabled) {\n for (let i = 0, numPortions = this._portions.length; i < numPortions; i++) {\n const portion = this._portions[i];\n const start = portion.vertsBaseIndex * 3;\n const end = start + (portion.numVerts * 3);\n portion.quantizedPositions = quantizedPositions.slice(start, end);\n }\n }\n }\n\n if (buffer.normals.length > 0) { // Normals are already oct-encoded\n const normals = new Int8Array(buffer.normals);\n let normalized = true; // For oct encoded UInts\n state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, normals, buffer.normals.length, 3, gl.STATIC_DRAW, normalized);\n }\n\n if (buffer.colors.length > 0) { // Colors are already compressed\n const colors = new Uint8Array(buffer.colors);\n let normalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, buffer.colors.length, 4, gl.DYNAMIC_DRAW, normalized);\n }\n\n if (buffer.uv.length > 0) {\n if (!state.uvDecodeMatrix) {\n const bounds = geometryCompressionUtils.getUVBounds(buffer.uv);\n const result = geometryCompressionUtils.compressUVs(buffer.uv, bounds.min, bounds.max);\n const uv = result.quantized;\n let notNormalized = false;\n state.uvDecodeMatrix = math.mat3(result.decodeMatrix);\n state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uv, uv.length, 2, gl.STATIC_DRAW, notNormalized);\n } else {\n let notNormalized = false;\n state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, buffer.uv, buffer.uv.length, 2, gl.STATIC_DRAW, notNormalized);\n }\n }\n\n if (buffer.metallicRoughness.length > 0) {\n const metallicRoughness = new Uint8Array(buffer.metallicRoughness);\n let normalized = false;\n state.metallicRoughnessBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, metallicRoughness, buffer.metallicRoughness.length, 2, gl.STATIC_DRAW, normalized);\n }\n\n if (buffer.positions.length > 0) { // Because we build flags arrays here, get their length from the positions array\n const flagsLength = (buffer.positions.length / 3);\n const flags = new Float32Array(flagsLength);\n const notNormalized = false;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 1, gl.DYNAMIC_DRAW, notNormalized);\n }\n\n if (buffer.pickColors.length > 0) {\n const pickColors = new Uint8Array(buffer.pickColors);\n let normalized = false;\n state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, pickColors, buffer.pickColors.length, 4, gl.STATIC_DRAW, normalized);\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n if (buffer.offsets.length > 0) {\n const offsets = new Float32Array(buffer.offsets);\n state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, offsets, buffer.offsets.length, 3, gl.DYNAMIC_DRAW);\n }\n }\n\n if (buffer.indices.length > 0) {\n const indices = new Uint32Array(buffer.indices);\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, buffer.indices.length, 1, gl.STATIC_DRAW);\n }\n if (buffer.edgeIndices.length > 0) {\n const edgeIndices = new Uint32Array(buffer.edgeIndices);\n state.edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, edgeIndices, buffer.edgeIndices.length, 1, gl.STATIC_DRAW);\n }\n\n this._state.pbrSupported\n = !!state.metallicRoughnessBuf\n && !!state.uvBuf\n && !!state.normalsBuf\n && !!state.textureSet\n && !!state.textureSet.colorTexture\n && !!state.textureSet.metallicRoughnessTexture;\n\n this._state.colorTextureSupported\n = !!state.uvBuf\n && !!state.textureSet\n && !!state.textureSet.colorTexture;\n\n this._buffer = null;\n this._finalized = true;\n }\n\n isEmpty() {\n return (!this._state.indicesBuf);\n }\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n const deferred = true;\n this._setFlags(portionId, flags, meshTransparent, deferred);\n }\n\n flushInitFlags() {\n this._setDeferredFlags();\n }\n\n setVisible(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setHighlighted(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setXRayed(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setSelected(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setEdges(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags(portionId, flags);\n }\n\n setCulled(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setColor(portionId, color) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const portionsIdx = portionId;\n const portion = this._portions[portionsIdx];\n const vertsBaseIndex = portion.vertsBaseIndex;\n const numVerts = portion.numVerts;\n const firstColor = vertsBaseIndex * 4;\n const lenColor = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenColor);\n const r = color[0];\n const g = color[1];\n const b = color[2];\n const a = color[3];\n for (let i = 0; i < lenColor; i += 4) {\n tempArray[i + 0] = r;\n tempArray[i + 1] = g;\n tempArray[i + 2] = b;\n tempArray[i + 3] = a;\n }\n if (this._state.colorsBuf) {\n this._state.colorsBuf.setData(tempArray, firstColor, lenColor);\n }\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n /**\n * flags are 4bits values encoded on a 32bit base. color flag on the first 4 bits, silhouette flag on the next 4 bits and so on for edge, pick and clippable.\n */\n _setFlags(portionId, flags, transparent, deferred = false) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const portionsIdx = portionId;\n const portion = this._portions[portionsIdx];\n const vertsBaseIndex = portion.vertsBaseIndex;\n const numVerts = portion.numVerts;\n const firstFlag = vertsBaseIndex;\n const lenFlags = numVerts;\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n let colorFlag;\n if (!visible || culled || xrayed\n || (highlighted && !this.model.scene.highlightMaterial.glowThrough)\n || (selected && !this.model.scene.selectedMaterial.glowThrough)) {\n colorFlag = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n colorFlag = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n colorFlag = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n let silhouetteFlag;\n if (!visible || culled) {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let edgeFlag = 0;\n if (!visible || culled) {\n edgeFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n edgeFlag = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n edgeFlag = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n edgeFlag = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (transparent) {\n edgeFlag = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n edgeFlag = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n edgeFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let pickFlag = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n const clippableFlag = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 1 : 0;\n\n if (deferred) {\n // Avoid zillions of individual WebGL bufferSubData calls - buffer them to apply in one shot\n if (!this._deferredFlagValues) {\n this._deferredFlagValues = new Float32Array(this._numVerts);\n }\n for (let i = firstFlag, len = (firstFlag + lenFlags); i < len; i++) {\n let vertFlag = 0;\n vertFlag |= colorFlag;\n vertFlag |= silhouetteFlag << 4;\n vertFlag |= edgeFlag << 8;\n vertFlag |= pickFlag << 12;\n vertFlag |= clippableFlag << 16;\n\n this._deferredFlagValues[i] = vertFlag;\n }\n } else if (this._state.flagsBuf) {\n const tempArray = this._scratchMemory.getFloat32Array(lenFlags);\n for (let i = 0; i < lenFlags; i++) {\n let vertFlag = 0;\n vertFlag |= colorFlag;\n vertFlag |= silhouetteFlag << 4;\n vertFlag |= edgeFlag << 8;\n vertFlag |= pickFlag << 12;\n vertFlag |= clippableFlag << 16;\n\n tempArray[i] = vertFlag;\n }\n this._state.flagsBuf.setData(tempArray, firstFlag, lenFlags);\n }\n }\n\n _setDeferredFlags() {\n if (this._deferredFlagValues) {\n this._state.flagsBuf.setData(this._deferredFlagValues);\n this._deferredFlagValues = null;\n }\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n const portionsIdx = portionId;\n const portion = this._portions[portionsIdx];\n const vertsBaseIndex = portion.vertsBaseIndex;\n const numVerts = portion.numVerts;\n const firstOffset = vertsBaseIndex * 3;\n const lenOffsets = numVerts * 3;\n const tempArray = this._scratchMemory.getFloat32Array(lenOffsets);\n const x = offset[0];\n const y = offset[1];\n const z = offset[2];\n for (let i = 0; i < lenOffsets; i += 3) {\n tempArray[i + 0] = x;\n tempArray[i + 1] = y;\n tempArray[i + 2] = z;\n }\n if (this._state.offsetsBuf) {\n this._state.offsetsBuf.setData(tempArray, firstOffset, lenOffsets);\n }\n if (this.model.scene.pickSurfacePrecisionEnabled) {\n portion.offset[0] = offset[0];\n portion.offset[1] = offset[1];\n portion.offset[2] = offset[2];\n }\n }\n\n getEachVertex(portionId, callback) {\n if (!this.model.scene.pickSurfacePrecisionEnabled) {\n return;\n }\n const state = this._state;\n const portion = this._portions[portionId];\n if (!portion) {\n this.model.error(\"portion not found: \" + portionId);\n return;\n }\n const positions = portion.quantizedPositions;\n const origin = state.origin;\n const offset = portion.offset;\n const offsetX = origin[0] + offset[0];\n const offsetY = origin[1] + offset[1];\n const offsetZ = origin[2] + offset[2];\n const worldPos = tempVec4a;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n worldPos[0] = positions[i];\n worldPos[1] = positions[i + 1];\n worldPos[2] = positions[i + 2];\n worldPos[3] = 1.0;\n math.decompressPosition(worldPos, state.positionsDecodeMatrix);\n math.transformPoint4(this.model.worldMatrix, worldPos);\n worldPos[0] += offsetX;\n worldPos[1] += offsetY;\n worldPos[2] += offsetZ;\n callback(worldPos);\n }\n }\n\n getElementsCountAndOffset(portionId) {\n let count = null;\n let offset = null;\n const portion = this._portions[portionId];\n\n if (portion) {\n count = portion.numIndices;\n offset = portion.indicesBaseIndex;\n }\n\n return {count, offset}\n }\n\n // ---------------------- COLOR RENDERING -----------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (frameCtx.withSAO && this.model.saoEnabled) {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.pbrSupported) {\n if (this._renderers.pbrRendererWithSAO) {\n this._renderers.pbrRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else if (frameCtx.colorTextureEnabled && this.model.colorTextureEnabled && this._state.colorTextureSupported) {\n if (this._renderers.colorTextureRendererWithSAO) {\n this._renderers.colorTextureRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else if (this._state.normalsBuf) {\n if (this._renderers.colorRendererWithSAO) {\n this._renderers.colorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._renderers.flatColorRendererWithSAO) {\n this._renderers.flatColorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n } else {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.pbrSupported) {\n if (this._renderers.pbrRenderer) {\n this._renderers.pbrRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else if (frameCtx.colorTextureEnabled && this.model.colorTextureEnabled && this._state.colorTextureSupported) {\n if (this._renderers.colorTextureRenderer) {\n this._renderers.colorTextureRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else if (this._state.normalsBuf) {\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._renderers.flatColorRenderer) {\n this._renderers.flatColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n }\n }\n\n _updateBackfaceCull(renderFlags, frameCtx) {\n const backfaces = this.model.backfaces || (!this.solid) || renderFlags.sectioned;\n if (frameCtx.backfaces !== backfaces) {\n const gl = frameCtx.gl;\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.pbrSupported) {\n if (this._renderers.pbrRenderer) {\n this._renderers.pbrRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else if (frameCtx.colorTextureEnabled && this.model.colorTextureEnabled && this._state.colorTextureSupported) {\n if (this._renderers.colorTextureRenderer) {\n this._renderers.colorTextureRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else if (this._state.normalsBuf) {\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else {\n if (this._renderers.flatColorRenderer) {\n this._renderers.flatColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n drawDepth(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.depthRenderer) {\n this._renderers.depthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses depth (eg SAO) does not apply to transparent objects\n }\n }\n\n drawNormals(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.normalsRenderer) {\n this._renderers.normalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses normals (eg SAO) does not apply to transparent objects\n }\n }\n\n // ---------------------- SILHOUETTE RENDERING -----------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesColorRenderer) {\n this._renderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_OPAQUE);\n }\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0 || this._numTransparentLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesColorRenderer) {\n this._renderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_TRANSPARENT);\n }\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesRenderer) {\n this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_HIGHLIGHTED);\n }\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesRenderer) {\n this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_SELECTED);\n }\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesRenderer) {\n this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_XRAYED);\n }\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.occlusionRenderer) {\n this._renderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.shadowRenderer) {\n this._renderers.shadowRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.pickMeshRenderer) {\n this._renderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.pickDepthRenderer) {\n this._renderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////\n // TODO\n // if (this._state.normalsBuf) {\n // if (this._renderers.pickNormalsRenderer) {\n // this._renderers.pickNormalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n // }\n ////////////////////////////////////////////////////////////////////////////////////////////////////\n // } else {\n if (this._renderers.pickNormalsFlatRenderer) {\n this._renderers.pickNormalsFlatRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n // }\n }\n\n drawSnapInit(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.snapInitRenderer) {\n this._renderers.snapInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawSnap(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.snapRenderer) {\n this._renderers.snapRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n //------------------------------------------------------------------------------------------------\n\n precisionRayPickSurface(portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldNormal) {\n\n if (!this.model.scene.pickSurfacePrecisionEnabled) {\n return false;\n }\n\n const state = this._state;\n const portion = this._portions[portionId];\n\n if (!portion) {\n this.model.error(\"portion not found: \" + portionId);\n return false;\n }\n\n const positions = portion.quantizedPositions;\n const indices = portion.indices;\n const origin = state.origin;\n const offset = portion.offset;\n\n const rtcRayOrigin = tempVec3a;\n const rtcRayDir = tempVec3b;\n\n rtcRayOrigin.set(origin ? math.subVec3(worldRayOrigin, origin, tempVec3c) : worldRayOrigin); // World -> RTC\n rtcRayDir.set(worldRayDir);\n\n if (offset) {\n math.subVec3(rtcRayOrigin, offset);\n }\n\n math.transformRay(this.model.worldNormalMatrix, rtcRayOrigin, rtcRayDir, rtcRayOrigin, rtcRayDir); // RTC -> local\n\n const a = tempVec3d;\n const b = tempVec3e;\n const c = tempVec3f;\n\n let gotIntersect = false;\n let closestDist = 0;\n const closestIntersectPos = tempVec3g;\n\n for (let i = 0, len = indices.length; i < len; i += 3) {\n\n const ia = indices[i] * 3;\n const ib = indices[i + 1] * 3;\n const ic = indices[i + 2] * 3;\n\n a[0] = positions[ia];\n a[1] = positions[ia + 1];\n a[2] = positions[ia + 2];\n\n b[0] = positions[ib];\n b[1] = positions[ib + 1];\n b[2] = positions[ib + 2];\n\n c[0] = positions[ic];\n c[1] = positions[ic + 1];\n c[2] = positions[ic + 2];\n\n math.decompressPosition(a, state.positionsDecodeMatrix);\n math.decompressPosition(b, state.positionsDecodeMatrix);\n math.decompressPosition(c, state.positionsDecodeMatrix);\n\n if (math.rayTriangleIntersect(rtcRayOrigin, rtcRayDir, a, b, c, closestIntersectPos)) {\n\n math.transformPoint3(this.model.worldMatrix, closestIntersectPos, closestIntersectPos);\n\n if (offset) {\n math.addVec3(closestIntersectPos, offset);\n }\n\n if (origin) {\n math.addVec3(closestIntersectPos, origin);\n }\n\n const dist = Math.abs(math.lenVec3(math.subVec3(closestIntersectPos, worldRayOrigin, [])));\n\n if (!gotIntersect || dist > closestDist) {\n closestDist = dist;\n worldSurfacePos.set(closestIntersectPos);\n if (worldNormal) { // Not that wasteful to eagerly compute - unlikely to hit >2 surfaces on most geometry\n math.triangleNormal(a, b, c, worldNormal);\n }\n gotIntersect = true;\n }\n }\n }\n\n if (gotIntersect && worldNormal) {\n math.transformVec3(this.model.worldNormalMatrix, worldNormal, worldNormal);\n math.normalizeVec3(worldNormal);\n }\n\n return gotIntersect;\n }\n\n // ---------\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.normalsBuf) {\n state.normalsBuf.destroy();\n state.normalsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.metallicRoughnessBuf) {\n state.metallicRoughnessBuf.destroy();\n state.metallicRoughnessBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicessBuf = null;\n }\n if (state.edgeIndicesBuf) {\n state.edgeIndicesBuf.destroy();\n state.edgeIndicessBuf = null;\n }\n state.destroy();\n }\n}\n\n\n", @@ -133009,7 +133568,7 @@ "lineNumber": 1 }, { - "__docId__": 6714, + "__docId__": 6733, "kind": "variable", "name": "tempMat4", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133030,7 +133589,7 @@ "ignore": true }, { - "__docId__": 6715, + "__docId__": 6734, "kind": "variable", "name": "tempMat4b", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133051,7 +133610,7 @@ "ignore": true }, { - "__docId__": 6716, + "__docId__": 6735, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133072,7 +133631,7 @@ "ignore": true }, { - "__docId__": 6717, + "__docId__": 6736, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133093,7 +133652,7 @@ "ignore": true }, { - "__docId__": 6718, + "__docId__": 6737, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133114,7 +133673,7 @@ "ignore": true }, { - "__docId__": 6719, + "__docId__": 6738, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133135,7 +133694,7 @@ "ignore": true }, { - "__docId__": 6720, + "__docId__": 6739, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133156,7 +133715,7 @@ "ignore": true }, { - "__docId__": 6721, + "__docId__": 6740, "kind": "variable", "name": "tempVec3e", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133177,7 +133736,7 @@ "ignore": true }, { - "__docId__": 6722, + "__docId__": 6741, "kind": "variable", "name": "tempVec3f", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133198,7 +133757,7 @@ "ignore": true }, { - "__docId__": 6723, + "__docId__": 6742, "kind": "variable", "name": "tempVec3g", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133219,7 +133778,7 @@ "ignore": true }, { - "__docId__": 6724, + "__docId__": 6743, "kind": "class", "name": "VBOBatchingTrianglesLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js", @@ -133235,7 +133794,7 @@ "ignore": true }, { - "__docId__": 6725, + "__docId__": 6744, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133360,7 +133919,7 @@ ] }, { - "__docId__": 6726, + "__docId__": 6745, "kind": "member", "name": "model", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133379,7 +133938,7 @@ } }, { - "__docId__": 6727, + "__docId__": 6746, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133398,7 +133957,7 @@ } }, { - "__docId__": 6728, + "__docId__": 6747, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133417,7 +133976,7 @@ } }, { - "__docId__": 6729, + "__docId__": 6748, "kind": "member", "name": "_renderers", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133435,7 +133994,7 @@ } }, { - "__docId__": 6730, + "__docId__": 6749, "kind": "member", "name": "_buffer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133453,7 +134012,7 @@ } }, { - "__docId__": 6731, + "__docId__": 6750, "kind": "member", "name": "_scratchMemory", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133471,7 +134030,7 @@ } }, { - "__docId__": 6732, + "__docId__": 6751, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133489,7 +134048,7 @@ } }, { - "__docId__": 6733, + "__docId__": 6752, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133507,7 +134066,7 @@ } }, { - "__docId__": 6734, + "__docId__": 6753, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133525,7 +134084,7 @@ } }, { - "__docId__": 6735, + "__docId__": 6754, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133543,7 +134102,7 @@ } }, { - "__docId__": 6736, + "__docId__": 6755, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133561,7 +134120,7 @@ } }, { - "__docId__": 6737, + "__docId__": 6756, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133579,7 +134138,7 @@ } }, { - "__docId__": 6738, + "__docId__": 6757, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133597,7 +134156,7 @@ } }, { - "__docId__": 6739, + "__docId__": 6758, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133615,7 +134174,7 @@ } }, { - "__docId__": 6740, + "__docId__": 6759, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133633,7 +134192,7 @@ } }, { - "__docId__": 6741, + "__docId__": 6760, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133651,7 +134210,7 @@ } }, { - "__docId__": 6742, + "__docId__": 6761, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133669,7 +134228,7 @@ } }, { - "__docId__": 6743, + "__docId__": 6762, "kind": "member", "name": "_modelAABB", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133687,7 +134246,7 @@ } }, { - "__docId__": 6744, + "__docId__": 6763, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133705,7 +134264,7 @@ } }, { - "__docId__": 6745, + "__docId__": 6764, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133723,7 +134282,7 @@ } }, { - "__docId__": 6746, + "__docId__": 6765, "kind": "member", "name": "_numVerts", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133741,7 +134300,7 @@ } }, { - "__docId__": 6747, + "__docId__": 6766, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133759,7 +134318,7 @@ } }, { - "__docId__": 6748, + "__docId__": 6767, "kind": "member", "name": "aabbDirty", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133776,7 +134335,7 @@ } }, { - "__docId__": 6749, + "__docId__": 6768, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133794,7 +134353,7 @@ } }, { - "__docId__": 6750, + "__docId__": 6769, "kind": "member", "name": "_preCompressedUVsExpected", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133812,7 +134371,7 @@ } }, { - "__docId__": 6752, + "__docId__": 6771, "kind": "member", "name": "solid", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133831,7 +134390,7 @@ } }, { - "__docId__": 6753, + "__docId__": 6772, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133850,7 +134409,7 @@ } }, { - "__docId__": 6755, + "__docId__": 6774, "kind": "method", "name": "canCreatePortion", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -133899,7 +134458,7 @@ } }, { - "__docId__": 6756, + "__docId__": 6775, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134098,7 +134657,7 @@ } }, { - "__docId__": 6758, + "__docId__": 6777, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134113,7 +134672,7 @@ "return": null }, { - "__docId__": 6761, + "__docId__": 6780, "kind": "method", "name": "isEmpty", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134133,7 +134692,7 @@ } }, { - "__docId__": 6762, + "__docId__": 6781, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134168,7 +134727,7 @@ "return": null }, { - "__docId__": 6763, + "__docId__": 6782, "kind": "method", "name": "flushInitFlags", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134184,7 +134743,7 @@ "return": null }, { - "__docId__": 6764, + "__docId__": 6783, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134219,7 +134778,7 @@ "return": null }, { - "__docId__": 6765, + "__docId__": 6784, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134254,7 +134813,7 @@ "return": null }, { - "__docId__": 6766, + "__docId__": 6785, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134289,7 +134848,7 @@ "return": null }, { - "__docId__": 6767, + "__docId__": 6786, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134324,7 +134883,7 @@ "return": null }, { - "__docId__": 6768, + "__docId__": 6787, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134359,7 +134918,7 @@ "return": null }, { - "__docId__": 6769, + "__docId__": 6788, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134388,7 +134947,7 @@ "return": null }, { - "__docId__": 6770, + "__docId__": 6789, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134423,7 +134982,7 @@ "return": null }, { - "__docId__": 6771, + "__docId__": 6790, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134452,7 +135011,7 @@ "return": null }, { - "__docId__": 6772, + "__docId__": 6791, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134487,7 +135046,7 @@ "return": null }, { - "__docId__": 6773, + "__docId__": 6792, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134516,7 +135075,7 @@ "return": null }, { - "__docId__": 6774, + "__docId__": 6793, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134551,7 +135110,7 @@ "return": null }, { - "__docId__": 6775, + "__docId__": 6794, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134595,7 +135154,7 @@ "return": null }, { - "__docId__": 6776, + "__docId__": 6795, "kind": "member", "name": "_deferredFlagValues", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134613,7 +135172,7 @@ } }, { - "__docId__": 6777, + "__docId__": 6796, "kind": "method", "name": "_setDeferredFlags", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134630,7 +135189,7 @@ "return": null }, { - "__docId__": 6779, + "__docId__": 6798, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134659,7 +135218,7 @@ "return": null }, { - "__docId__": 6780, + "__docId__": 6799, "kind": "method", "name": "getEachVertex", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134688,7 +135247,7 @@ "return": null }, { - "__docId__": 6781, + "__docId__": 6800, "kind": "method", "name": "getElementsCountAndOffset", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134715,7 +135274,7 @@ } }, { - "__docId__": 6782, + "__docId__": 6801, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134744,7 +135303,7 @@ "return": null }, { - "__docId__": 6783, + "__docId__": 6802, "kind": "method", "name": "_updateBackfaceCull", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134774,7 +135333,7 @@ "return": null }, { - "__docId__": 6784, + "__docId__": 6803, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134803,7 +135362,7 @@ "return": null }, { - "__docId__": 6785, + "__docId__": 6804, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134832,7 +135391,7 @@ "return": null }, { - "__docId__": 6786, + "__docId__": 6805, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134861,7 +135420,7 @@ "return": null }, { - "__docId__": 6787, + "__docId__": 6806, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134890,7 +135449,7 @@ "return": null }, { - "__docId__": 6788, + "__docId__": 6807, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134919,7 +135478,7 @@ "return": null }, { - "__docId__": 6789, + "__docId__": 6808, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134948,7 +135507,7 @@ "return": null }, { - "__docId__": 6790, + "__docId__": 6809, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -134977,7 +135536,7 @@ "return": null }, { - "__docId__": 6791, + "__docId__": 6810, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135006,7 +135565,7 @@ "return": null }, { - "__docId__": 6792, + "__docId__": 6811, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135035,7 +135594,7 @@ "return": null }, { - "__docId__": 6793, + "__docId__": 6812, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135064,7 +135623,7 @@ "return": null }, { - "__docId__": 6794, + "__docId__": 6813, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135093,7 +135652,7 @@ "return": null }, { - "__docId__": 6795, + "__docId__": 6814, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135122,7 +135681,7 @@ "return": null }, { - "__docId__": 6796, + "__docId__": 6815, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135151,7 +135710,7 @@ "return": null }, { - "__docId__": 6797, + "__docId__": 6816, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135180,7 +135739,7 @@ "return": null }, { - "__docId__": 6798, + "__docId__": 6817, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135209,7 +135768,7 @@ "return": null }, { - "__docId__": 6799, + "__docId__": 6818, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135238,7 +135797,7 @@ "return": null }, { - "__docId__": 6800, + "__docId__": 6819, "kind": "method", "name": "drawSnapInit", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135267,7 +135826,7 @@ "return": null }, { - "__docId__": 6801, + "__docId__": 6820, "kind": "method", "name": "drawSnap", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135296,7 +135855,7 @@ "return": null }, { - "__docId__": 6802, + "__docId__": 6821, "kind": "method", "name": "precisionRayPickSurface", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135347,7 +135906,7 @@ } }, { - "__docId__": 6803, + "__docId__": 6822, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js~VBOBatchingTrianglesLayer", @@ -135363,7 +135922,7 @@ "return": null }, { - "__docId__": 6804, + "__docId__": 6823, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js", "content": "import {EdgesRenderer} from \"./EdgesRenderer.js\";\n\n/**\n * @private\n */\nexport class EdgesColorRenderer extends EdgesRenderer {\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n super.drawLayer(frameCtx, batchingLayer, renderPass, { colorUniform: false });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry edges drawing vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vColor;\");\n src.push(\"void main(void) {\");\n\n // edgeFlag = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT\n\n src.push(`int edgeFlag = int(flags) >> 8 & 0xF;`);\n src.push(`if (edgeFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n //src.push(\"vColor = vec4(float(color.r-100.0) / 255.0, float(color.g-100.0) / 255.0, float(color.b-100.0) / 255.0, float(color.a) / 255.0);\");\n src.push(\"vColor = vec4(float(color.r*0.5) / 255.0, float(color.g*0.5) / 255.0, float(color.b*0.5) / 255.0, float(color.a) / 255.0);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry edges drawing fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n}", @@ -135374,7 +135933,7 @@ "lineNumber": 1 }, { - "__docId__": 6805, + "__docId__": 6824, "kind": "class", "name": "EdgesColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js", @@ -135393,7 +135952,7 @@ "ignore": true }, { - "__docId__": 6806, + "__docId__": 6825, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js~EdgesColorRenderer", @@ -135428,7 +135987,7 @@ "return": null }, { - "__docId__": 6807, + "__docId__": 6826, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js~EdgesColorRenderer", @@ -135449,7 +136008,7 @@ } }, { - "__docId__": 6808, + "__docId__": 6827, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js~EdgesColorRenderer", @@ -135470,7 +136029,7 @@ } }, { - "__docId__": 6809, + "__docId__": 6828, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\nimport {EdgesRenderer} from \"./EdgesRenderer.js\";\n\n\n/**\n * @private\n */\nexport class EdgesEmphasisRenderer extends EdgesRenderer {\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n super.drawLayer(frameCtx, batchingLayer, renderPass, { colorUniform: true });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n\n src.push(\"#version 300 es\");\n src.push(\"// EdgesEmphasisRenderer vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"uniform vec4 color;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // edgeFlag = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`int edgeFlag = int(flags) >> 8 & 0xF;`);\n src.push(`if (edgeFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vColor = vec4(color.r, color.g, color.b, color.a);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// EdgesEmphasisRenderer fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n}", @@ -135481,7 +136040,7 @@ "lineNumber": 1 }, { - "__docId__": 6810, + "__docId__": 6829, "kind": "class", "name": "EdgesEmphasisRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js", @@ -135500,7 +136059,7 @@ "ignore": true }, { - "__docId__": 6811, + "__docId__": 6830, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js~EdgesEmphasisRenderer", @@ -135535,7 +136094,7 @@ "return": null }, { - "__docId__": 6812, + "__docId__": 6831, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js~EdgesEmphasisRenderer", @@ -135556,7 +136115,7 @@ } }, { - "__docId__": 6813, + "__docId__": 6832, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js~EdgesEmphasisRenderer", @@ -135577,7 +136136,7 @@ } }, { - "__docId__": 6814, + "__docId__": 6833, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class EdgesRenderer extends TrianglesBatchingRenderer {\n constructor(scene) {\n super(scene, false, {instancing: false, edges: true});\n }\n}\n", @@ -135588,7 +136147,7 @@ "lineNumber": 1 }, { - "__docId__": 6815, + "__docId__": 6834, "kind": "class", "name": "EdgesRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js", @@ -135607,7 +136166,7 @@ "ignore": true }, { - "__docId__": 6816, + "__docId__": 6835, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js~EdgesRenderer", @@ -135621,7 +136180,7 @@ "undocument": true }, { - "__docId__": 6817, + "__docId__": 6836, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js", "content": "import {TrianglesColorRenderer} from \"./TrianglesColorRenderer.js\";\nimport {TrianglesFlatColorRenderer} from \"./TrianglesFlatColorRenderer.js\";\nimport {TrianglesSilhouetteRenderer} from \"./TrianglesSilhouetteRenderer.js\";\nimport {EdgesEmphasisRenderer} from \"./EdgesEmphasisRenderer.js\";\nimport {EdgesColorRenderer} from \"./EdgesColorRenderer.js\";\nimport {TrianglesPickMeshRenderer} from \"./TrianglesPickMeshRenderer.js\";\nimport {TrianglesPickDepthRenderer} from \"./TrianglesPickDepthRenderer.js\";\nimport {TrianglesPickNormalsRenderer} from \"./TrianglesPickNormalsRenderer.js\";\nimport {TrianglesOcclusionRenderer} from \"./TrianglesOcclusionRenderer.js\";\nimport {TrianglesDepthRenderer} from \"./TrianglesDepthRenderer.js\";\nimport {TrianglesNormalsRenderer} from \"./TrianglesNormalsRenderer.js\";\nimport {TrianglesShadowRenderer} from \"./TrianglesShadowRenderer.js\";\nimport {TrianglesPBRRenderer} from \"./TrianglesPBRRenderer.js\";\nimport {TrianglesPickNormalsFlatRenderer} from \"./TrianglesPickNormalsFlatRenderer.js\";\nimport {TrianglesColorTextureRenderer} from \"./TrianglesColorTextureRenderer.js\";\nimport {TrianglesSnapInitRenderer} from \"./TrianglesSnapInitRenderer.js\";\nimport {TrianglesSnapRenderer} from \"./TrianglesSnapRenderer.js\";\n\n/**\n * @private\n */\nclass Renderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._colorRendererWithSAO && (!this._colorRendererWithSAO.getValid())) {\n this._colorRendererWithSAO.destroy();\n this._colorRendererWithSAO = null;\n }\n if (this._flatColorRenderer && (!this._flatColorRenderer.getValid())) {\n this._flatColorRenderer.destroy();\n this._flatColorRenderer = null;\n }\n if (this._flatColorRendererWithSAO && (!this._flatColorRendererWithSAO.getValid())) {\n this._flatColorRendererWithSAO.destroy();\n this._flatColorRendererWithSAO = null;\n }\n if (this._colorTextureRenderer && (!this._colorTextureRenderer.getValid())) {\n this._colorTextureRenderer.destroy();\n this._colorTextureRenderer = null;\n }\n if (this._colorTextureRendererWithSAO && (!this._colorTextureRendererWithSAO.getValid())) {\n this._colorTextureRendererWithSAO.destroy();\n this._colorTextureRendererWithSAO = null;\n }\n if (this._pbrRenderer && (!this._pbrRenderer.getValid())) {\n this._pbrRenderer.destroy();\n this._pbrRenderer = null;\n }\n if (this._pbrRendererWithSAO && (!this._pbrRendererWithSAO.getValid())) {\n this._pbrRendererWithSAO.destroy();\n this._pbrRendererWithSAO = null;\n }\n if (this._depthRenderer && (!this._depthRenderer.getValid())) {\n this._depthRenderer.destroy();\n this._depthRenderer = null;\n }\n if (this._normalsRenderer && (!this._normalsRenderer.getValid())) {\n this._normalsRenderer.destroy();\n this._normalsRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._edgesRenderer && (!this._edgesRenderer.getValid())) {\n this._edgesRenderer.destroy();\n this._edgesRenderer = null;\n }\n if (this._edgesColorRenderer && (!this._edgesColorRenderer.getValid())) {\n this._edgesColorRenderer.destroy();\n this._edgesColorRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._pickNormalsRenderer && this._pickNormalsRenderer.getValid() === false) {\n this._pickNormalsRenderer.destroy();\n this._pickNormalsRenderer = null;\n }\n if (this._pickNormalsFlatRenderer && this._pickNormalsFlatRenderer.getValid() === false) {\n this._pickNormalsFlatRenderer.destroy();\n this._pickNormalsFlatRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n if (this._shadowRenderer && (!this._shadowRenderer.getValid())) {\n this._shadowRenderer.destroy();\n this._shadowRenderer = null;\n }\n if (this._snapInitRenderer && (!this._snapInitRenderer.getValid())) {\n this._snapInitRenderer.destroy();\n this._snapInitRenderer = null;\n }\n if (this._snapRenderer && (!this._snapRenderer.getValid())) {\n this._snapRenderer.destroy();\n this._snapRenderer = null;\n }\n }\n\n eagerCreateRenders() {\n\n // Pre-initialize certain renderers that would otherwise be lazy-initialised\n // on user interaction, such as picking or emphasis, so that there is no delay\n // when user first begins interacting with the viewer.\n\n if (!this._silhouetteRenderer) { // Used for highlighting and selection\n this._silhouetteRenderer = new TrianglesSilhouetteRenderer(this._scene);\n }\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new TrianglesPickMeshRenderer(this._scene);\n }\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new TrianglesPickDepthRenderer(this._scene);\n }\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new TrianglesSnapInitRenderer(this._scene, false);\n }\n if (!this._snapRenderer) {\n this._snapRenderer = new TrianglesSnapRenderer(this._scene);\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new TrianglesColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get colorRendererWithSAO() {\n if (!this._colorRendererWithSAO) {\n this._colorRendererWithSAO = new TrianglesColorRenderer(this._scene, true);\n }\n return this._colorRendererWithSAO;\n }\n\n get flatColorRenderer() {\n if (!this._flatColorRenderer) {\n this._flatColorRenderer = new TrianglesFlatColorRenderer(this._scene, false);\n }\n return this._flatColorRenderer;\n }\n\n get flatColorRendererWithSAO() {\n if (!this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO = new TrianglesFlatColorRenderer(this._scene, true);\n }\n return this._flatColorRendererWithSAO;\n }\n\n get colorTextureRenderer() {\n if (!this._colorTextureRenderer) {\n this._colorTextureRenderer = new TrianglesColorTextureRenderer(this._scene, false);\n }\n return this._colorTextureRenderer;\n }\n\n get colorTextureRendererWithSAO() {\n if (!this._colorTextureRendererWithSAO) {\n this._colorTextureRendererWithSAO = new TrianglesColorTextureRenderer(this._scene, true);\n }\n return this._colorTextureRendererWithSAO;\n }\n\n get pbrRenderer() {\n if (!this._pbrRenderer) {\n this._pbrRenderer = new TrianglesPBRRenderer(this._scene, false);\n }\n return this._pbrRenderer;\n }\n\n get pbrRendererWithSAO() {\n if (!this._pbrRendererWithSAO) {\n this._pbrRendererWithSAO = new TrianglesPBRRenderer(this._scene, true);\n }\n return this._pbrRendererWithSAO;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new TrianglesSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new TrianglesDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get normalsRenderer() {\n if (!this._normalsRenderer) {\n this._normalsRenderer = new TrianglesNormalsRenderer(this._scene);\n }\n return this._normalsRenderer;\n }\n\n get edgesRenderer() {\n if (!this._edgesRenderer) {\n this._edgesRenderer = new EdgesEmphasisRenderer(this._scene);\n }\n return this._edgesRenderer;\n }\n\n get edgesColorRenderer() {\n if (!this._edgesColorRenderer) {\n this._edgesColorRenderer = new EdgesColorRenderer(this._scene);\n }\n return this._edgesColorRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new TrianglesPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickNormalsRenderer() {\n if (!this._pickNormalsRenderer) {\n this._pickNormalsRenderer = new TrianglesPickNormalsRenderer(this._scene);\n }\n return this._pickNormalsRenderer;\n }\n\n get pickNormalsFlatRenderer() {\n if (!this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer = new TrianglesPickNormalsFlatRenderer(this._scene);\n }\n return this._pickNormalsFlatRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new TrianglesPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new TrianglesOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new TrianglesShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\n }\n\n get snapRenderer() {\n if (!this._snapRenderer) {\n this._snapRenderer = new TrianglesSnapRenderer(this._scene);\n }\n return this._snapRenderer;\n }\n\n get snapInitRenderer() {\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new TrianglesSnapInitRenderer(this._scene);\n }\n return this._snapInitRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._colorRendererWithSAO) {\n this._colorRendererWithSAO.destroy();\n }\n if (this._flatColorRenderer) {\n this._flatColorRenderer.destroy();\n }\n if (this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO.destroy();\n }\n if (this._colorTextureRenderer) {\n this._colorTextureRenderer.destroy();\n }\n if (this._colorTextureRendererWithSAO) {\n this._colorTextureRendererWithSAO.destroy();\n }\n if (this._pbrRenderer) {\n this._pbrRenderer.destroy();\n }\n if (this._pbrRendererWithSAO) {\n this._pbrRendererWithSAO.destroy();\n }\n if (this._depthRenderer) {\n this._depthRenderer.destroy();\n }\n if (this._normalsRenderer) {\n this._normalsRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._edgesRenderer) {\n this._edgesRenderer.destroy();\n }\n if (this._edgesColorRenderer) {\n this._edgesColorRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._pickNormalsRenderer) {\n this._pickNormalsRenderer.destroy();\n }\n if (this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.destroy();\n }\n if (this._snapInitRenderer) {\n this._snapInitRenderer.destroy();\n }\n if (this._snapRenderer) {\n this._snapRenderer.destroy();\n }\n }\n}\n\nconst cachdRenderers = {};\n\n/**\n * @private\n */\nexport function getRenderers(scene) {\n const sceneId = scene.id;\n let batchingRenderers = cachdRenderers[sceneId];\n if (!batchingRenderers) {\n batchingRenderers = new Renderers(scene);\n cachdRenderers[sceneId] = batchingRenderers;\n batchingRenderers._compile();\n batchingRenderers.eagerCreateRenders();\n scene.on(\"compile\", () => {\n batchingRenderers._compile();\n batchingRenderers.eagerCreateRenders();\n });\n scene.on(\"destroyed\", () => {\n delete cachdRenderers[sceneId];\n batchingRenderers._destroy();\n });\n }\n return batchingRenderers;\n}\n", @@ -135632,7 +136191,7 @@ "lineNumber": 1 }, { - "__docId__": 6818, + "__docId__": 6837, "kind": "class", "name": "Renderers", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js", @@ -135648,7 +136207,7 @@ "ignore": true }, { - "__docId__": 6819, + "__docId__": 6838, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135662,7 +136221,7 @@ "undocument": true }, { - "__docId__": 6820, + "__docId__": 6839, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135680,7 +136239,7 @@ } }, { - "__docId__": 6821, + "__docId__": 6840, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135697,7 +136256,7 @@ "return": null }, { - "__docId__": 6822, + "__docId__": 6841, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135715,7 +136274,7 @@ } }, { - "__docId__": 6823, + "__docId__": 6842, "kind": "member", "name": "_colorRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135733,7 +136292,7 @@ } }, { - "__docId__": 6824, + "__docId__": 6843, "kind": "member", "name": "_flatColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135751,7 +136310,7 @@ } }, { - "__docId__": 6825, + "__docId__": 6844, "kind": "member", "name": "_flatColorRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135769,7 +136328,7 @@ } }, { - "__docId__": 6826, + "__docId__": 6845, "kind": "member", "name": "_colorTextureRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135787,7 +136346,7 @@ } }, { - "__docId__": 6827, + "__docId__": 6846, "kind": "member", "name": "_colorTextureRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135805,7 +136364,7 @@ } }, { - "__docId__": 6828, + "__docId__": 6847, "kind": "member", "name": "_pbrRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135823,7 +136382,7 @@ } }, { - "__docId__": 6829, + "__docId__": 6848, "kind": "member", "name": "_pbrRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135841,7 +136400,7 @@ } }, { - "__docId__": 6830, + "__docId__": 6849, "kind": "member", "name": "_depthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135859,7 +136418,7 @@ } }, { - "__docId__": 6831, + "__docId__": 6850, "kind": "member", "name": "_normalsRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135877,7 +136436,7 @@ } }, { - "__docId__": 6832, + "__docId__": 6851, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135895,7 +136454,7 @@ } }, { - "__docId__": 6833, + "__docId__": 6852, "kind": "member", "name": "_edgesRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135913,7 +136472,7 @@ } }, { - "__docId__": 6834, + "__docId__": 6853, "kind": "member", "name": "_edgesColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135931,7 +136490,7 @@ } }, { - "__docId__": 6835, + "__docId__": 6854, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135949,7 +136508,7 @@ } }, { - "__docId__": 6836, + "__docId__": 6855, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135967,7 +136526,7 @@ } }, { - "__docId__": 6837, + "__docId__": 6856, "kind": "member", "name": "_pickNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -135985,7 +136544,7 @@ } }, { - "__docId__": 6838, + "__docId__": 6857, "kind": "member", "name": "_pickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136003,7 +136562,7 @@ } }, { - "__docId__": 6839, + "__docId__": 6858, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136021,7 +136580,7 @@ } }, { - "__docId__": 6840, + "__docId__": 6859, "kind": "member", "name": "_shadowRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136039,7 +136598,7 @@ } }, { - "__docId__": 6841, + "__docId__": 6860, "kind": "member", "name": "_snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136057,7 +136616,7 @@ } }, { - "__docId__": 6842, + "__docId__": 6861, "kind": "member", "name": "_snapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136075,7 +136634,7 @@ } }, { - "__docId__": 6843, + "__docId__": 6862, "kind": "method", "name": "eagerCreateRenders", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136091,7 +136650,7 @@ "return": null }, { - "__docId__": 6849, + "__docId__": 6868, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136110,7 +136669,7 @@ } }, { - "__docId__": 6851, + "__docId__": 6870, "kind": "get", "name": "colorRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136129,7 +136688,7 @@ } }, { - "__docId__": 6853, + "__docId__": 6872, "kind": "get", "name": "flatColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136148,7 +136707,7 @@ } }, { - "__docId__": 6855, + "__docId__": 6874, "kind": "get", "name": "flatColorRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136167,7 +136726,7 @@ } }, { - "__docId__": 6857, + "__docId__": 6876, "kind": "get", "name": "colorTextureRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136186,7 +136745,7 @@ } }, { - "__docId__": 6859, + "__docId__": 6878, "kind": "get", "name": "colorTextureRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136205,7 +136764,7 @@ } }, { - "__docId__": 6861, + "__docId__": 6880, "kind": "get", "name": "pbrRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136224,7 +136783,7 @@ } }, { - "__docId__": 6863, + "__docId__": 6882, "kind": "get", "name": "pbrRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136243,7 +136802,7 @@ } }, { - "__docId__": 6865, + "__docId__": 6884, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136262,7 +136821,7 @@ } }, { - "__docId__": 6867, + "__docId__": 6886, "kind": "get", "name": "depthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136281,7 +136840,7 @@ } }, { - "__docId__": 6869, + "__docId__": 6888, "kind": "get", "name": "normalsRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136300,7 +136859,7 @@ } }, { - "__docId__": 6871, + "__docId__": 6890, "kind": "get", "name": "edgesRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136319,7 +136878,7 @@ } }, { - "__docId__": 6873, + "__docId__": 6892, "kind": "get", "name": "edgesColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136338,7 +136897,7 @@ } }, { - "__docId__": 6875, + "__docId__": 6894, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136357,7 +136916,7 @@ } }, { - "__docId__": 6877, + "__docId__": 6896, "kind": "get", "name": "pickNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136376,7 +136935,7 @@ } }, { - "__docId__": 6879, + "__docId__": 6898, "kind": "get", "name": "pickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136395,7 +136954,7 @@ } }, { - "__docId__": 6881, + "__docId__": 6900, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136414,7 +136973,7 @@ } }, { - "__docId__": 6883, + "__docId__": 6902, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136433,7 +136992,7 @@ } }, { - "__docId__": 6885, + "__docId__": 6904, "kind": "get", "name": "shadowRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136452,7 +137011,7 @@ } }, { - "__docId__": 6887, + "__docId__": 6906, "kind": "get", "name": "snapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136471,7 +137030,7 @@ } }, { - "__docId__": 6889, + "__docId__": 6908, "kind": "get", "name": "snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136490,7 +137049,7 @@ } }, { - "__docId__": 6891, + "__docId__": 6910, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js~Renderers", @@ -136507,7 +137066,7 @@ "return": null }, { - "__docId__": 6892, + "__docId__": 6911, "kind": "variable", "name": "cachdRenderers", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js", @@ -136528,7 +137087,7 @@ "ignore": true }, { - "__docId__": 6893, + "__docId__": 6912, "kind": "function", "name": "getRenderers", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js", @@ -136558,7 +137117,7 @@ } }, { - "__docId__": 6894, + "__docId__": 6913, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js", "content": "import {VBORenderer} from \"./../../../VBORenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesBatchingRenderer extends VBORenderer {\n\n constructor(scene, withSAO, {edges = false} = {}) {\n super(scene, withSAO, {instancing: false, edges});\n }\n\n _draw(drawCfg) {\n const {gl} = this._scene.canvas;\n\n const {\n state,\n frameCtx,\n incrementDrawState\n } = drawCfg;\n\n if (this._edges) {\n gl.drawElements(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0);\n } else {\n const count = frameCtx.pickElementsCount || state.indicesBuf.numItems;\n const offset = frameCtx.pickElementsOffset ? frameCtx.pickElementsOffset * state.indicesBuf.itemByteSize : 0;\n\n gl.drawElements(gl.TRIANGLES, count, state.indicesBuf.itemType, offset);\n\n if (incrementDrawState) {\n frameCtx.drawElements++;\n }\n }\n }\n}\n", @@ -136569,7 +137128,7 @@ "lineNumber": 1 }, { - "__docId__": 6895, + "__docId__": 6914, "kind": "class", "name": "TrianglesBatchingRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js", @@ -136588,7 +137147,7 @@ "ignore": true }, { - "__docId__": 6896, + "__docId__": 6915, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js~TrianglesBatchingRenderer", @@ -136602,7 +137161,7 @@ "undocument": true }, { - "__docId__": 6897, + "__docId__": 6916, "kind": "method", "name": "_draw", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js~TrianglesBatchingRenderer", @@ -136626,7 +137185,7 @@ "return": null }, { - "__docId__": 6898, + "__docId__": 6917, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesColorRenderer extends TrianglesBatchingRenderer {\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, { incrementDrawState: true });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n let light;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching draw vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec3 normal;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n this._addMatricesUniformBlockLines(src, true);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n\n src.push(\"vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec3 rgb = (vec3(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0));\");\n src.push(\"vColor = vec4((lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedColor * rgb), float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching draw fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n src.push(\"uniform float sliceThickness;\");\n src.push(\"uniform vec4 sliceColor;\");\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n src.push(\" vec4 newColor;\");\n src.push(\" newColor = vColor;\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > sliceThickness) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" newColor = sliceColor;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" outColor = vec4(newColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" outColor = newColor;\");\n }\n\n src.push(\"}\");\n return src;\n }\n}", @@ -136637,7 +137196,7 @@ "lineNumber": 1 }, { - "__docId__": 6899, + "__docId__": 6918, "kind": "class", "name": "TrianglesColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js", @@ -136656,7 +137215,7 @@ "ignore": true }, { - "__docId__": 6900, + "__docId__": 6919, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js~TrianglesColorRenderer", @@ -136677,7 +137236,7 @@ } }, { - "__docId__": 6901, + "__docId__": 6920, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js~TrianglesColorRenderer", @@ -136712,7 +137271,7 @@ "return": null }, { - "__docId__": 6902, + "__docId__": 6921, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js~TrianglesColorRenderer", @@ -136733,7 +137292,7 @@ } }, { - "__docId__": 6903, + "__docId__": 6922, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js~TrianglesColorRenderer", @@ -136754,7 +137313,7 @@ } }, { - "__docId__": 6904, + "__docId__": 6923, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n\n/**\n * @private\n */\nexport class TrianglesColorTextureRenderer extends TrianglesBatchingRenderer {\n _getHash() {\n const scene = this._scene;\n return [scene.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, {incrementDrawState: true});\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching color texture vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"in vec2 uv;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform mat3 uvDecodeMatrix;\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"out vec4 vColor;\");\n src.push(\"out vec2 vUV;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n src.push(\"vUV = (uvDecodeMatrix * vec3(uv, 1.0)).xy;\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const lightsState = scene._lightsState;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching color texture fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform sampler2D uColorMap;\");\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToLinear( in vec4 value ) {\");\n src.push(\" return value;\");\n src.push(\"}\");\n src.push(\"vec4 sRGBToLinear( in vec4 value ) {\");\n src.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\");\n src.push(\"}\");\n src.push(\"vec4 gammaToLinear( in vec4 value) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\");\n src.push(\"}\");\n if (gammaOutput) {\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n src.push(\"uniform float sliceThickness;\");\n src.push(\"uniform vec4 sliceColor;\");\n }\n this._addMatricesUniformBlockLines(src);\n src.push(\"uniform vec4 lightAmbient;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"in vec4 vColor;\");\n src.push(\"in vec2 vUV;\");\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n src.push(\" vec4 newColor;\");\n src.push(\" newColor = vColor;\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > sliceThickness) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" newColor = sliceColor;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n\n src.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\");\n src.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec4 color = vec4((lightAmbient.rgb * lightAmbient.a * newColor.rgb) + (reflectedColor * newColor.rgb), newColor.a);\");\n if (gammaOutput) {\n src.push(\"vec4 colorTexel = color * sRGBToLinear(texture(uColorMap, vUV));\");\n } else {\n src.push(\"vec4 colorTexel = color * texture(uColorMap, vUV);\");\n }\n src.push(\"float opacity = color.a;\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n\n src.push(\" outColor = vec4(colorTexel.rgb * ambient, opacity);\");\n } else {\n src.push(\" outColor = vec4(colorTexel.rgb, opacity);\");\n }\n\n if (gammaOutput) {\n src.push(\"outColor = linearToGamma(outColor, gammaFactor);\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n}", @@ -136765,7 +137324,7 @@ "lineNumber": 1 }, { - "__docId__": 6905, + "__docId__": 6924, "kind": "class", "name": "TrianglesColorTextureRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js", @@ -136784,7 +137343,7 @@ "ignore": true }, { - "__docId__": 6906, + "__docId__": 6925, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js~TrianglesColorTextureRenderer", @@ -136805,7 +137364,7 @@ } }, { - "__docId__": 6907, + "__docId__": 6926, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js~TrianglesColorTextureRenderer", @@ -136840,7 +137399,7 @@ "return": null }, { - "__docId__": 6908, + "__docId__": 6927, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js~TrianglesColorTextureRenderer", @@ -136861,7 +137420,7 @@ } }, { - "__docId__": 6909, + "__docId__": 6928, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js~TrianglesColorTextureRenderer", @@ -136882,7 +137441,7 @@ } }, { - "__docId__": 6910, + "__docId__": 6929, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n\n/**\n * @private\n */\nexport class TrianglesDepthRenderer extends TrianglesBatchingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching depth vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec2 vHighPrecisionZW;\");\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vHighPrecisionZW = gl_Position.zw;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = (sectionPlanesState.getNumAllocatedSectionPlanes() > 0);\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching depth fragment shader\");\n\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"const float packUpScale = 256. / 255.;\");\n src.push(\"const float unpackDownscale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unpackFactors = unpackDownscale / vec4( packFactors, 1. );\");\n src.push(\"const float shiftRight8 = 1.0 / 256.;\");\n\n src.push(\"vec4 packDepthToRGBA( const in float v ) {\");\n src.push(\" vec4 r = vec4( fract( v * packFactors ), v );\");\n src.push(\" r.yzw -= r.xyz * shiftRight8;\");\n src.push(\" return r * packUpScale;\");\n src.push(\"}\");\n src.push(\"in vec2 vHighPrecisionZW;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\");\n src.push(\" outColor = vec4(vec3(1.0 - fragCoordZ), 1.0); \");\n src.push(\"}\");\n return src;\n }\n}\n", @@ -136893,7 +137452,7 @@ "lineNumber": 1 }, { - "__docId__": 6911, + "__docId__": 6930, "kind": "class", "name": "TrianglesDepthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js", @@ -136912,7 +137471,7 @@ "ignore": true }, { - "__docId__": 6912, + "__docId__": 6931, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js~TrianglesDepthRenderer", @@ -136933,7 +137492,7 @@ } }, { - "__docId__": 6913, + "__docId__": 6932, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js~TrianglesDepthRenderer", @@ -136954,7 +137513,7 @@ } }, { - "__docId__": 6914, + "__docId__": 6933, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesFlatColorRenderer extends TrianglesBatchingRenderer {\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching flat-shading draw vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const lightsState = scene._lightsState;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching flat-shading draw fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n src.push(\"uniform float sliceThickness;\");\n src.push(\"uniform vec4 sliceColor;\");\n }\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec4 lightAmbient;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n src.push(\" vec4 newColor;\");\n src.push(\" newColor = vColor;\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > sliceThickness) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" newColor = sliceColor;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n\n src.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\");\n src.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec4 fragColor = vec4((lightAmbient.rgb * lightAmbient.a * newColor.rgb) + (reflectedColor * newColor.rgb), newColor.a);\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" outColor = vec4(fragColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" outColor = fragColor;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n}", @@ -136965,7 +137524,7 @@ "lineNumber": 1 }, { - "__docId__": 6915, + "__docId__": 6934, "kind": "class", "name": "TrianglesFlatColorRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js", @@ -136984,7 +137543,7 @@ "ignore": true }, { - "__docId__": 6916, + "__docId__": 6935, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js~TrianglesFlatColorRenderer", @@ -137005,7 +137564,7 @@ } }, { - "__docId__": 6917, + "__docId__": 6936, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js~TrianglesFlatColorRenderer", @@ -137026,7 +137585,7 @@ } }, { - "__docId__": 6918, + "__docId__": 6937, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js~TrianglesFlatColorRenderer", @@ -137047,7 +137606,7 @@ } }, { - "__docId__": 6919, + "__docId__": 6938, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n\n/**\n * @private\n */\n\n\nexport class TrianglesNormalsRenderer extends TrianglesBatchingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry normals vertex shader\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec3 normal;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src, true);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec3 vViewNormal;\");\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n src.push(\" vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\" vViewNormal = viewNormal;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = (sectionPlanesState.getNumAllocatedSectionPlanes() > 0);\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry normals fragment shader\");\n\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n}\n", @@ -137058,7 +137617,7 @@ "lineNumber": 1 }, { - "__docId__": 6920, + "__docId__": 6939, "kind": "class", "name": "TrianglesNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js", @@ -137077,7 +137636,7 @@ "ignore": true }, { - "__docId__": 6921, + "__docId__": 6940, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js~TrianglesNormalsRenderer", @@ -137098,7 +137657,7 @@ } }, { - "__docId__": 6922, + "__docId__": 6941, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js~TrianglesNormalsRenderer", @@ -137119,7 +137678,7 @@ } }, { - "__docId__": 6923, + "__docId__": 6942, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n// Logarithmic depth buffer involves an accuracy tradeoff, sacrificing\n// accuracy at close range to improve accuracy at long range. This can\n// mess up accuracy for occlusion tests, so we'll disable for now.\n\nconst ENABLE_LOG_DEPTH_BUF = false;\n\n/**\n * @private\n */\nexport class TrianglesOcclusionRenderer extends TrianglesBatchingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching occlusion vertex shader\");\n \n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n // Only opaque objects can be occluders\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching occlusion fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n src.push(\"}\");\n return src;\n }\n}\n", @@ -137130,7 +137689,7 @@ "lineNumber": 1 }, { - "__docId__": 6924, + "__docId__": 6943, "kind": "variable", "name": "ENABLE_LOG_DEPTH_BUF", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js", @@ -137151,7 +137710,7 @@ "ignore": true }, { - "__docId__": 6925, + "__docId__": 6944, "kind": "class", "name": "TrianglesOcclusionRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js", @@ -137170,7 +137729,7 @@ "ignore": true }, { - "__docId__": 6926, + "__docId__": 6945, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js~TrianglesOcclusionRenderer", @@ -137191,7 +137750,7 @@ } }, { - "__docId__": 6927, + "__docId__": 6946, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js~TrianglesOcclusionRenderer", @@ -137212,7 +137771,7 @@ } }, { - "__docId__": 6928, + "__docId__": 6947, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n// const TEXTURE_DECODE_FUNCS = {};\n// TEXTURE_DECODE_FUNCS[LinearEncoding] = \"linearToLinear\";\n// TEXTURE_DECODE_FUNCS[sRGBEncoding] = \"sRGBToLinear\";\n\n/**\n * @private\n */\nexport class TrianglesPBRRenderer extends TrianglesBatchingRenderer {\n _getHash() {\n const scene = this._scene;\n return [scene.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, { incrementDrawState: true });\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n\n const src = [];\n\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching quality draw vertex shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec3 normal;\");\n src.push(\"in vec4 color;\");\n src.push(\"in vec2 uv;\");\n src.push(\"in vec2 metallicRoughness;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n this._addMatricesUniformBlockLines(src, true);\n\n src.push(\"uniform mat3 uvDecodeMatrix;\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"out vec3 vViewNormal;\");\n src.push(\"out vec4 vColor;\");\n src.push(\"out vec2 vUV;\");\n src.push(\"out vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"out vec3 vWorldNormal;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n if (clippingCaps) {\n src.push(\"out vec4 vClipPosition;\");\n }\n }\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n src.push(\"vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n if (clippingCaps) {\n src.push(\"vClipPosition = clipPos;\");\n }\n }\n\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vViewNormal = viewNormal;\");\n src.push(\"vColor = color;\");\n src.push(\"vUV = (uvDecodeMatrix * vec3(uv, 1.0)).xy;\");\n src.push(\"vMetallicRoughness = metallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"vWorldNormal = worldNormal.xyz;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push('#version 300 es');\n src.push(\"// Triangles batching quality draw fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n src.push(\"uniform sampler2D uColorMap;\");\n src.push(\"uniform sampler2D uMetallicRoughMap;\");\n src.push(\"uniform sampler2D uEmissiveMap;\");\n src.push(\"uniform sampler2D uNormalMap;\");\n src.push(\"uniform sampler2D uAOMap;\");\n\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"in vec3 vViewNormal;\");\n src.push(\"in vec4 vColor;\");\n src.push(\"in vec2 vUV;\");\n src.push(\"in vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"in vec3 vWorldNormal;\");\n }\n\n this._addMatricesUniformBlockLines(src, true);\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"uniform samplerCube reflectionMap;\");\n }\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"uniform samplerCube lightMap;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToLinear( in vec4 value ) {\");\n src.push(\" return value;\");\n src.push(\"}\");\n src.push(\"vec4 sRGBToLinear( in vec4 value ) {\");\n src.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\");\n src.push(\"}\");\n src.push(\"vec4 gammaToLinear( in vec4 value) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\");\n src.push(\"}\");\n\n if (gammaOutput) {\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n if (clippingCaps) {\n src.push(\"in vec4 vClipPosition;\");\n }\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n // CONSTANT DEFINITIONS\n\n src.push(\"#define PI 3.14159265359\");\n src.push(\"#define RECIPROCAL_PI 0.31830988618\");\n src.push(\"#define RECIPROCAL_PI2 0.15915494\");\n src.push(\"#define EPSILON 1e-6\");\n\n src.push(\"#define saturate(a) clamp( a, 0.0, 1.0 )\");\n\n // UTILITY DEFINITIONS\n\n src.push(\"vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\");\n src.push(\" vec3 texel = texture( uNormalMap, uv ).xyz;\");\n src.push(\" if (texel.x == 0.0 && texel.y == 0.0 && texel.z == 0.0) {\");\n src.push(\" return surf_norm;\");\n src.push(\" }\");\n src.push(\" vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\");\n src.push(\" vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\");\n src.push(\" vec2 st0 = dFdx( uv.st );\");\n src.push(\" vec2 st1 = dFdy( uv.st );\");\n src.push(\" vec3 S = normalize( q0 * st1.t - q1 * st0.t );\");\n src.push(\" vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\");\n src.push(\" vec3 N = normalize( surf_norm );\");\n src.push(\" vec3 mapN = texel.xyz * 2.0 - 1.0;\");\n src.push(\" mat3 tsn = mat3( S, T, N );\");\n //src.push(\" mapN *= 3.0;\");\n src.push(\" return normalize( tsn * mapN );\");\n src.push(\"}\");\n\n src.push(\"vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {\");\n src.push(\" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\");\n src.push(\"}\");\n\n // STRUCTURES\n\n src.push(\"struct IncidentLight {\");\n src.push(\" vec3 color;\");\n src.push(\" vec3 direction;\");\n src.push(\"};\");\n\n src.push(\"struct ReflectedLight {\");\n src.push(\" vec3 diffuse;\");\n src.push(\" vec3 specular;\");\n src.push(\"};\");\n\n src.push(\"struct Geometry {\");\n src.push(\" vec3 position;\");\n src.push(\" vec3 viewNormal;\");\n src.push(\" vec3 worldNormal;\");\n src.push(\" vec3 viewEyeDir;\");\n src.push(\"};\");\n\n src.push(\"struct Material {\");\n src.push(\" vec3 diffuseColor;\");\n src.push(\" float specularRoughness;\");\n src.push(\" vec3 specularColor;\");\n src.push(\" float shine;\"); // Only used for Phong\n src.push(\"};\");\n\n // IRRADIANCE EVALUATION\n\n src.push(\"float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {\");\n src.push(\" float r = ggxRoughness + 0.0001;\");\n src.push(\" return (2.0 / (r * r) - 2.0);\");\n src.push(\"}\");\n\n src.push(\"float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float maxMIPLevelScalar = float( maxMIPLevel );\");\n src.push(\" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );\");\n src.push(\" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\");\n src.push(\"}\");\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"); //TODO: a random factor - fix this\n src.push(\" vec3 envMapColor = sRGBToLinear(texture(reflectionMap, reflectVec, mipLevel)).rgb;\");\n src.push(\" return envMapColor;\");\n src.push(\"}\");\n }\n\n // SPECULAR BRDF EVALUATION\n\n src.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\");\n src.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\");\n src.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" return 1.0 / ( gl * gv );\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" return 0.5 / max( gv + gl, EPSILON );\");\n src.push(\"}\");\n\n src.push(\"float D_GGX(const in float alpha, const in float dotNH) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\");\n src.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float alpha = ( roughness * roughness );\");\n src.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\");\n src.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\");\n src.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\");\n src.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\");\n src.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\");\n src.push(\" vec3 F = F_Schlick( specularColor, dotLH );\");\n src.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\");\n src.push(\" float D = D_GGX( alpha, dotNH );\");\n src.push(\" return F * (G * D);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\");\n src.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\");\n src.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\");\n src.push(\" vec4 r = roughness * c0 + c1;\");\n src.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\");\n src.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\");\n src.push(\" return specularColor * AB.x + AB.y;\");\n src.push(\"}\");\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n src.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n if (lightsState.lightMaps.length > 0) {\n src.push(\" vec3 irradiance = sRGBToLinear(texture(lightMap, geometry.worldNormal)).rgb;\");\n src.push(\" irradiance *= PI;\");\n src.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\");\n }\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\");\n src.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\");\n src.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\");\n src.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\");\n src.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\");\n src.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\");\n }\n src.push(\"}\");\n }\n\n // MAIN LIGHTING COMPUTATION FUNCTION\n\n src.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n src.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\");\n src.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\");\n src.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\");\n src.push(\"}\");\n\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n if (clippingCaps) {\n src.push(\" if (dist > (0.002 * vClipPosition.w)) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" outColor=vec4(1.0, 0.0, 0.0, 1.0);\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" return;\");\n src.push(\"}\");\n } else {\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n }\n src.push(\"}\");\n }\n\n src.push(\"IncidentLight light;\");\n src.push(\"Material material;\");\n src.push(\"Geometry geometry;\");\n src.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\");\n\n src.push(\"vec3 rgb = (vec3(float(vColor.r) / 255.0, float(vColor.g) / 255.0, float(vColor.b) / 255.0));\");\n src.push(\"float opacity = float(vColor.a) / 255.0;\");\n\n src.push(\"vec3 baseColor = rgb;\");\n src.push(\"float specularF0 = 1.0;\");\n src.push(\"float metallic = float(vMetallicRoughness.r) / 255.0;\");\n src.push(\"float roughness = float(vMetallicRoughness.g) / 255.0;\");\n src.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\");\n\n src.push(\"vec4 colorTexel = sRGBToLinear(texture(uColorMap, vUV));\");\n src.push(\"baseColor *= colorTexel.rgb;\");\n // src.push(\"opacity *= colorTexel.a;\");\n\n src.push(\"vec3 metalRoughTexel = texture(uMetallicRoughMap, vUV).rgb;\");\n src.push(\"metallic *= metalRoughTexel.b;\");\n src.push(\"roughness *= metalRoughTexel.g;\");\n\n src.push(\"vec3 viewNormal = perturbNormal2Arb(vViewPosition.xyz, normalize(vViewNormal), vUV );\");\n\n src.push(\"material.diffuseColor = baseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\");\n src.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\");\n src.push(\"material.specularColor = mix(vec3(dielectricSpecular), baseColor, metallic);\");\n\n src.push(\"geometry.position = vViewPosition.xyz;\");\n src.push(\"geometry.viewNormal = -normalize(viewNormal);\");\n src.push(\"geometry.viewEyeDir = normalize(vViewPosition.xyz);\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"geometry.worldNormal = normalize(vWorldNormal);\");\n }\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n src.push(\"computePBRLightMapping(geometry, material, reflectedLight);\");\n }\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightPos\" + i + \" - vViewPosition.xyz);\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n\n src.push(\"light.color = lightColor\" + i + \".rgb * lightColor\" + i + \".a;\"); // a is intensity\n\n src.push(\"computePBRLighting(light, geometry, material, reflectedLight);\");\n }\n\n src.push(\"vec3 emissiveColor = sRGBToLinear(texture(uEmissiveMap, vUV)).rgb;\"); // TODO: correct gamma function\n src.push(\"float aoFactor = texture(uAOMap, vUV).r;\");\n\n src.push(\"vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * baseColor * opacity * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular) + emissiveColor;\");\n src.push(\"vec4 fragColor;\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" fragColor = vec4(outgoingLight.rgb * ambient * aoFactor, opacity);\");\n } else {\n src.push(\" fragColor = vec4(outgoingLight.rgb * aoFactor, opacity);\");\n }\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"outColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n}\n", @@ -137223,7 +137782,7 @@ "lineNumber": 1 }, { - "__docId__": 6929, + "__docId__": 6948, "kind": "class", "name": "TrianglesPBRRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js", @@ -137242,7 +137801,7 @@ "ignore": true }, { - "__docId__": 6930, + "__docId__": 6949, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js~TrianglesPBRRenderer", @@ -137263,7 +137822,7 @@ } }, { - "__docId__": 6931, + "__docId__": 6950, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js~TrianglesPBRRenderer", @@ -137298,7 +137857,7 @@ "return": null }, { - "__docId__": 6932, + "__docId__": 6951, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js~TrianglesPBRRenderer", @@ -137319,7 +137878,7 @@ } }, { - "__docId__": 6933, + "__docId__": 6952, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js~TrianglesPBRRenderer", @@ -137340,7 +137899,7 @@ } }, { - "__docId__": 6934, + "__docId__": 6953, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesPickDepthRenderer extends TrianglesBatchingRenderer {\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching pick depth vertex shader\");\n\n \n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n this._addRemapClipPosLines(src);\n\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching pick depth fragment shader\");\n\n \n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" outColor = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n}\n", @@ -137351,7 +137910,7 @@ "lineNumber": 1 }, { - "__docId__": 6935, + "__docId__": 6954, "kind": "class", "name": "TrianglesPickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js", @@ -137370,7 +137929,7 @@ "ignore": true }, { - "__docId__": 6936, + "__docId__": 6955, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js~TrianglesPickDepthRenderer", @@ -137391,7 +137950,7 @@ } }, { - "__docId__": 6937, + "__docId__": 6956, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js~TrianglesPickDepthRenderer", @@ -137412,7 +137971,7 @@ } }, { - "__docId__": 6938, + "__docId__": 6957, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesPickMeshRenderer extends TrianglesBatchingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry picking vertex shader\");\n \n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n src.push(\"in vec4 pickColor;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n this._addRemapClipPosLines(src);\n\n src.push(\"out vec4 vPickColor;\");\n\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry picking fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vPickColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n}\n", @@ -137423,7 +137982,7 @@ "lineNumber": 1 }, { - "__docId__": 6939, + "__docId__": 6958, "kind": "class", "name": "TrianglesPickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js", @@ -137442,7 +138001,7 @@ "ignore": true }, { - "__docId__": 6940, + "__docId__": 6959, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js~TrianglesPickMeshRenderer", @@ -137463,7 +138022,7 @@ } }, { - "__docId__": 6941, + "__docId__": 6960, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js~TrianglesPickMeshRenderer", @@ -137484,7 +138043,7 @@ } }, { - "__docId__": 6942, + "__docId__": 6961, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js", "content": "import { math } from \"../../../../../math/math.js\";\nimport {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n\n/**\n * @private\n */\nexport class TrianglesPickNormalsFlatRenderer extends TrianglesBatchingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching pick flat normals vertex shader\");\n \n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src, 3);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching pick flat normals fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"in vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out highp ivec4 outNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\" vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\" vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(` outNormal = ivec4(worldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"}\");\n return src;\n }\n}\n", @@ -137495,7 +138054,7 @@ "lineNumber": 1 }, { - "__docId__": 6943, + "__docId__": 6962, "kind": "class", "name": "TrianglesPickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js", @@ -137514,7 +138073,7 @@ "ignore": true }, { - "__docId__": 6944, + "__docId__": 6963, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js~TrianglesPickNormalsFlatRenderer", @@ -137535,7 +138094,7 @@ } }, { - "__docId__": 6945, + "__docId__": 6964, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js~TrianglesPickNormalsFlatRenderer", @@ -137556,7 +138115,7 @@ } }, { - "__docId__": 6946, + "__docId__": 6965, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js", "content": "import { math } from \"../../../../../math/math.js\";\nimport {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n\n/**\n * @private\n */\nexport class TrianglesPickNormalsRenderer extends TrianglesBatchingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching pick normals vertex shader\");\n \n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec3 normal;\");\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src, 3);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec3 vWorldNormal;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec3 worldNormal = octDecode(normal.xy); \");\n src.push(\" vWorldNormal = worldNormal;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching pick normals fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vWorldNormal;\");\n src.push(\"out highp ivec4 outNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(` outNormal = ivec4(vWorldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"}\");\n return src;\n }\n}\n", @@ -137567,7 +138126,7 @@ "lineNumber": 1 }, { - "__docId__": 6947, + "__docId__": 6966, "kind": "class", "name": "TrianglesPickNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js", @@ -137586,7 +138145,7 @@ "ignore": true }, { - "__docId__": 6948, + "__docId__": 6967, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js~TrianglesPickNormalsRenderer", @@ -137607,7 +138166,7 @@ } }, { - "__docId__": 6949, + "__docId__": 6968, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js~TrianglesPickNormalsRenderer", @@ -137628,7 +138187,7 @@ } }, { - "__docId__": 6950, + "__docId__": 6969, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n/**\n * Renders BatchingLayer fragment depths to a shadow map.\n *\n * @private\n */\nexport class TrianglesShadowRenderer extends TrianglesBatchingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry shadow vertex shader\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n src.push(` int colorFlag = int(flags) & 0xF;`);\n src.push(\" bool visible = (colorFlag > 0);\");\n src.push(\" bool transparent = ((float(color.a) / 255.0) < 1.0);\");\n src.push(\" if (!visible || transparent) {\");\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = (sectionPlanesState.getNumAllocatedSectionPlanes() > 0);\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry shadow fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vViewPosition;\");\n\n src.push(\"vec4 encodeFloat( const in float v ) {\");\n src.push(\" const vec4 bitShift = vec4(256 * 256 * 256, 256 * 256, 256, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\");\n src.push(\" vec4 comp = fract(v * bitShift);\");\n src.push(\" comp -= comp.xxyz * bitMask;\");\n src.push(\" return comp;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n src.push(\" outColor = encodeFloat( gl_FragCoord.z); \");\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -137639,7 +138198,7 @@ "lineNumber": 1 }, { - "__docId__": 6951, + "__docId__": 6970, "kind": "class", "name": "TrianglesShadowRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js", @@ -137658,7 +138217,7 @@ "ignore": true }, { - "__docId__": 6952, + "__docId__": 6971, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js~TrianglesShadowRenderer", @@ -137679,7 +138238,7 @@ } }, { - "__docId__": 6953, + "__docId__": 6972, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js~TrianglesShadowRenderer", @@ -137700,7 +138259,7 @@ } }, { - "__docId__": 6954, + "__docId__": 6973, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js", "content": "import {TrianglesBatchingRenderer} from \"./TrianglesBatchingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesSilhouetteRenderer extends TrianglesBatchingRenderer {\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n super.drawLayer(frameCtx, batchingLayer, renderPass, { colorUniform: true });\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching silhouette vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 color;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec4 silhouetteColor;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // silhouetteFlag = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`int silhouetteFlag = int(flags) >> 4 & 0xF;`);\n src.push(`if (silhouetteFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vColor = vec4(silhouetteColor.r, silhouetteColor.g, silhouetteColor.b, min(silhouetteColor.a, color.a ));\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Triangles batching silhouette fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n src.push(\"uniform float sliceThickness;\");\n src.push(\"uniform vec4 sliceColor;\");\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n src.push(\" vec4 newColor;\");\n src.push(\" newColor = vColor;\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > sliceThickness) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" newColor = sliceColor;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = newColor;\");\n src.push(\"}\");\n return src;\n }\n}", @@ -137711,7 +138270,7 @@ "lineNumber": 1 }, { - "__docId__": 6955, + "__docId__": 6974, "kind": "class", "name": "TrianglesSilhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js", @@ -137730,7 +138289,7 @@ "ignore": true }, { - "__docId__": 6956, + "__docId__": 6975, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js~TrianglesSilhouetteRenderer", @@ -137765,7 +138324,7 @@ "return": null }, { - "__docId__": 6957, + "__docId__": 6976, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js~TrianglesSilhouetteRenderer", @@ -137786,7 +138345,7 @@ } }, { - "__docId__": 6958, + "__docId__": 6977, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js~TrianglesSilhouetteRenderer", @@ -137807,7 +138366,7 @@ } }, { - "__docId__": 6959, + "__docId__": 6978, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js", "content": "import {VBORenderer} from \"../../../VBORenderer.js\";\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class TrianglesSnapInitRenderer extends VBORenderer {\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const origin = batchingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = batchingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(batchingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(batchingLayer));\n } else {\n this._vaoCache.set(batchingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = tempVec3c;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(batchingLayer);\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n state.indicesBuf.bind();\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n state.indicesBuf.unbind();\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\");\n this._uLayerNumber = program.getLocation(\"layerNumber\");\n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBO SnapBatchingDepthBufInitRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec4 pickColor;\");\n src.push(\"in vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n src.push(\"uniform vec2 snapVectorA;\");\n src.push(\"uniform vec2 snapInvVectorAB;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n src.push(\"flat out vec4 vPickColor;\");\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" relativeToOriginPosition = worldPosition.xyz;\");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vPickColor = pickColor;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// VBO SnapBatchingDepthBufInitRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\");\n src.push(\"uniform vec3 coordinateScaler;\");\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in vec4 vPickColor;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"layout(location = 0) out highp ivec4 outCoords;\");\n src.push(\"layout(location = 1) out highp ivec4 outNormal;\");\n src.push(\"layout(location = 2) out lowp uvec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" float dx = dFdx(vFragDepth);\")\n src.push(\" float dy = dFdy(vFragDepth);\")\n src.push(\" float diff = sqrt(dx*dx+dy*dy);\");\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth + diff ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, -layerNumber);\");\n\n src.push(\"vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\"vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(`outNormal = ivec4(worldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"outPickColor = uvec4(vPickColor);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -137818,7 +138377,7 @@ "lineNumber": 1 }, { - "__docId__": 6960, + "__docId__": 6979, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -137839,7 +138398,7 @@ "ignore": true }, { - "__docId__": 6961, + "__docId__": 6980, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -137860,7 +138419,7 @@ "ignore": true }, { - "__docId__": 6962, + "__docId__": 6981, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -137881,7 +138440,7 @@ "ignore": true }, { - "__docId__": 6963, + "__docId__": 6982, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -137902,7 +138461,7 @@ "ignore": true }, { - "__docId__": 6964, + "__docId__": 6983, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -137923,7 +138482,7 @@ "ignore": true }, { - "__docId__": 6965, + "__docId__": 6984, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -137944,7 +138503,7 @@ "ignore": true }, { - "__docId__": 6966, + "__docId__": 6985, "kind": "class", "name": "TrianglesSnapInitRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -137963,7 +138522,7 @@ "ignore": true }, { - "__docId__": 6967, + "__docId__": 6986, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -137998,7 +138557,7 @@ "return": null }, { - "__docId__": 6968, + "__docId__": 6987, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138015,7 +138574,7 @@ "return": null }, { - "__docId__": 6969, + "__docId__": 6988, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138033,7 +138592,7 @@ } }, { - "__docId__": 6970, + "__docId__": 6989, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138051,7 +138610,7 @@ } }, { - "__docId__": 6971, + "__docId__": 6990, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138068,7 +138627,7 @@ } }, { - "__docId__": 6972, + "__docId__": 6991, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138085,7 +138644,7 @@ } }, { - "__docId__": 6973, + "__docId__": 6992, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138103,7 +138662,7 @@ } }, { - "__docId__": 6974, + "__docId__": 6993, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138121,7 +138680,7 @@ } }, { - "__docId__": 6975, + "__docId__": 6994, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138138,7 +138697,7 @@ "return": null }, { - "__docId__": 6976, + "__docId__": 6995, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138159,7 +138718,7 @@ } }, { - "__docId__": 6977, + "__docId__": 6996, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138180,7 +138739,7 @@ } }, { - "__docId__": 6978, + "__docId__": 6997, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138196,7 +138755,7 @@ "return": null }, { - "__docId__": 6979, + "__docId__": 6998, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138214,7 +138773,7 @@ } }, { - "__docId__": 6980, + "__docId__": 6999, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -138230,7 +138789,7 @@ "return": null }, { - "__docId__": 6982, + "__docId__": 7001, "kind": "file", "name": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js", "content": "import {VBORenderer} from \"../../../VBORenderer.js\";\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class TrianglesSnapRenderer extends VBORenderer{\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const origin = batchingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = batchingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(batchingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(batchingLayer));\n } else {\n this._vaoCache.set(batchingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = tempVec3c;\n math.transformPoint3(rotationMatrix, origin, rotatedOrigin);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(batchingLayer);\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n if (frameCtx.snapMode === \"edge\") {\n state.edgeIndicesBuf.bind();\n gl.drawElements(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0);\n state.edgeIndicesBuf.unbind(); // needed?\n } else {\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\"); \n this.uVectorA = program.getLocation(\"snapVectorA\"); \n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\"); \n this._uLayerNumber = program.getLocation(\"layerNumber\"); \n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\"); \n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapBatchingDepthRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\"); \n src.push(\"uniform vec2 snapVectorA;\"); \n src.push(\"uniform vec2 snapInvVectorAB;\"); \n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"gl_PointSize = 1.0;\"); // Windows needs this?\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapBatchingDepthRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\"); \n src.push(\"uniform vec3 coordinateScaler;\"); \n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"out highp ivec4 outCoords;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);\")\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -138241,7 +138800,7 @@ "lineNumber": 1 }, { - "__docId__": 6983, + "__docId__": 7002, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js", @@ -138262,7 +138821,7 @@ "ignore": true }, { - "__docId__": 6984, + "__docId__": 7003, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js", @@ -138283,7 +138842,7 @@ "ignore": true }, { - "__docId__": 6985, + "__docId__": 7004, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js", @@ -138304,7 +138863,7 @@ "ignore": true }, { - "__docId__": 6986, + "__docId__": 7005, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js", @@ -138325,7 +138884,7 @@ "ignore": true }, { - "__docId__": 6987, + "__docId__": 7006, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js", @@ -138346,7 +138905,7 @@ "ignore": true }, { - "__docId__": 6988, + "__docId__": 7007, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js", @@ -138367,7 +138926,7 @@ "ignore": true }, { - "__docId__": 6989, + "__docId__": 7008, "kind": "class", "name": "TrianglesSnapRenderer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js", @@ -138386,7 +138945,7 @@ "ignore": true }, { - "__docId__": 6990, + "__docId__": 7009, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138407,7 +138966,7 @@ } }, { - "__docId__": 6991, + "__docId__": 7010, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138442,7 +139001,7 @@ "return": null }, { - "__docId__": 6992, + "__docId__": 7011, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138459,7 +139018,7 @@ "return": null }, { - "__docId__": 6993, + "__docId__": 7012, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138477,7 +139036,7 @@ } }, { - "__docId__": 6994, + "__docId__": 7013, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138495,7 +139054,7 @@ } }, { - "__docId__": 6995, + "__docId__": 7014, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138512,7 +139071,7 @@ } }, { - "__docId__": 6996, + "__docId__": 7015, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138529,7 +139088,7 @@ } }, { - "__docId__": 6997, + "__docId__": 7016, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138547,7 +139106,7 @@ } }, { - "__docId__": 6998, + "__docId__": 7017, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138565,7 +139124,7 @@ } }, { - "__docId__": 6999, + "__docId__": 7018, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138582,7 +139141,7 @@ "return": null }, { - "__docId__": 7000, + "__docId__": 7019, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138603,7 +139162,7 @@ } }, { - "__docId__": 7001, + "__docId__": 7020, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138624,7 +139183,7 @@ } }, { - "__docId__": 7002, + "__docId__": 7021, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138640,7 +139199,7 @@ "return": null }, { - "__docId__": 7003, + "__docId__": 7022, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138658,7 +139217,7 @@ } }, { - "__docId__": 7004, + "__docId__": 7023, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -138674,7 +139233,7 @@ "return": null }, { - "__docId__": 7006, + "__docId__": 7025, "kind": "file", "name": "src/viewer/scene/model/vbo/float16.js", "content": "/**\n * Bundled by jsDelivr using Rollup v2.59.0 and Terser v5.9.0.\n * Original file: /npm/@petamoriken/float16@3.5.11/src/index.mjs\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\nfunction t(t)\n{\n return (r, ...e) => n(t, r, e)\n}\n\nfunction r(r, n)\n{\n return t(s(r, n).get)\n}\nconst\n{\n apply: n,\n construct: e,\n defineProperty: o,\n get: i,\n getOwnPropertyDescriptor: s,\n getPrototypeOf: c,\n has: u,\n ownKeys: f,\n set: h,\n setPrototypeOf: l\n} = Reflect, a = Proxy, y = Number,\n{\n isFinite: p,\n isNaN: w\n} = y,\n{\n iterator: g,\n species: d,\n toStringTag: v,\n for: b\n} = Symbol, A = Object,\n{\n create: m,\n defineProperty: B,\n freeze: x,\n is: E\n} = A, T = A.prototype, O = t(T.isPrototypeOf), j = A.hasOwn || t(T.hasOwnProperty), I = Array, P = I.isArray, S = I.prototype, _ = t(S.join), F = t(S.push), L = t(S.toLocaleString), R = S[g], C = t(R), N = Math.trunc, U = ArrayBuffer, M = U.isView, D = t(U.prototype.slice), k = r(U.prototype, \"byteLength\"), W = \"undefined\" != typeof SharedArrayBuffer ? SharedArrayBuffer : null, V = W && r(W.prototype, \"byteLength\"), Y = c(Uint8Array), z = Y.from, G = Y.prototype, K = G[g], X = t(G.keys), q = t(G.values), H = t(G.entries), J = t(G.set), Q = t(G.reverse), Z = t(G.fill), $ = t(G.copyWithin), tt = t(G.sort), rt = t(G.slice), nt = t(G.subarray), et = r(G, \"buffer\"), ot = r(G, \"byteOffset\"), it = r(G, \"length\"), st = r(G, v), ct = Uint16Array, ut = (...t) => n(z, ct, t), ft = Uint32Array, ht = Float32Array, lt = c([][g]()), at = t(lt.next), yt = t(function*() {}().next), pt = c(lt), wt = DataView.prototype, gt = t(wt.getUint16), dt = t(wt.setUint16), vt = TypeError, bt = RangeError, At = Set, mt = At.prototype, Bt = t(mt.add), xt = t(mt.has), Et = WeakMap, Tt = Et.prototype, Ot = t(Tt.get), jt = t(Tt.has), It = t(Tt.set), Pt = new U(4), St = new ht(Pt), _t = new ft(Pt), Ft = new ft(512), Lt = new ft(512);\nfor (let t = 0; t < 256; ++t)\n{\n const r = t - 127;\n r < -27 ? (Ft[t] = 0, Ft[256 | t] = 32768, Lt[t] = 24, Lt[256 | t] = 24) : r < -14 ? (Ft[t] = 1024 >> -r - 14, Ft[256 | t] = 1024 >> -r - 14 | 32768, Lt[t] = -r - 1, Lt[256 | t] = -r - 1) : r <= 15 ? (Ft[t] = r + 15 << 10, Ft[256 | t] = r + 15 << 10 | 32768, Lt[t] = 13, Lt[256 | t] = 13) : r < 128 ? (Ft[t] = 31744, Ft[256 | t] = 64512, Lt[t] = 24, Lt[256 | t] = 24) : (Ft[t] = 31744, Ft[256 | t] = 64512, Lt[t] = 13, Lt[256 | t] = 13)\n}\n\nfunction Rt(t)\n{\n St[0] = t;\n const r = _t[0],\n n = r >> 23 & 511;\n return Ft[n] + ((8388607 & r) >> Lt[n])\n}\nconst Ct = new ft(2048),\n Nt = new ft(64),\n Ut = new ft(64);\nCt[0] = 0;\nfor (let t = 1; t < 1024; ++t)\n{\n let r = t << 13,\n n = 0;\n for (; 0 == (8388608 & r);) n -= 8388608, r <<= 1;\n r &= -8388609, n += 947912704, Ct[t] = r | n\n}\nfor (let t = 1024; t < 2048; ++t) Ct[t] = 939524096 + (t - 1024 << 13);\nNt[0] = 0;\nfor (let t = 1; t < 31; ++t) Nt[t] = t << 23;\nNt[31] = 1199570944, Nt[32] = 2147483648;\nfor (let t = 33; t < 63; ++t) Nt[t] = 2147483648 + (t - 32 << 23);\nNt[63] = 3347054592, Ut[0] = 0;\nfor (let t = 1; t < 64; ++t) Ut[t] = 32 === t ? 0 : 1024;\n\nfunction Mt(t)\n{\n const r = t >> 10;\n return _t[0] = Ct[Ut[r] + (1023 & t)] + Nt[r], St[0]\n}\n\nfunction Dt(t)\n{\n if (\"bigint\" == typeof t) throw vt(\"Cannot convert a BigInt value to a number\");\n if (t = y(t), !p(t) || 0 === t) return t;\n return Mt(Rt(t))\n}\n\nfunction kt(t)\n{\n if (t[g] === R) return t;\n const r = C(t);\n return m(null,\n {\n next:\n {\n value: function()\n {\n return at(r)\n }\n },\n [g]:\n {\n value: function()\n {\n return this\n }\n }\n })\n}\nconst Wt = new Et,\n Vt = m(pt,\n {\n next:\n {\n value: function()\n {\n const t = Ot(Wt, this);\n return yt(t)\n },\n writable: !0,\n configurable: !0\n },\n [v]:\n {\n value: \"Array Iterator\",\n configurable: !0\n }\n });\n\nfunction Yt(t)\n{\n const r = m(Vt);\n return It(Wt, r, t), r\n}\n\nfunction zt(t)\n{\n return null !== t && \"object\" == typeof t || \"function\" == typeof t\n}\n\nfunction Gt(t)\n{\n return null !== t && \"object\" == typeof t\n}\n\nfunction Kt(t)\n{\n return void 0 !== st(t)\n}\n\nfunction Xt(t)\n{\n const r = st(t);\n return \"BigInt64Array\" === r || \"BigUint64Array\" === r\n}\n\nfunction qt(t)\n{\n if (null === W) return !1;\n try\n {\n return V(t), !0\n }\n catch (t)\n {\n return !1\n }\n}\n\nfunction Ht(t)\n{\n if (!P(t)) return !1;\n if (t[g] === R) return !0;\n return \"Array Iterator\" === t[g]()[v]\n}\n\nfunction Jt(t)\n{\n if (\"string\" != typeof t) return !1;\n const r = y(t);\n return t === r + \"\" && (!!p(r) && r === N(r))\n}\nconst Qt = y.MAX_SAFE_INTEGER;\n\nfunction Zt(t)\n{\n if (\"bigint\" == typeof t) throw vt(\"Cannot convert a BigInt value to a number\");\n const r = y(t);\n return w(r) || 0 === r ? 0 : N(r)\n}\n\nfunction $t(t)\n{\n const r = Zt(t);\n return r < 0 ? 0 : r < Qt ? r : Qt\n}\n\nfunction tr(t, r)\n{\n if (!zt(t)) throw vt(\"This is not an object\");\n const n = t.constructor;\n if (void 0 === n) return r;\n if (!zt(n)) throw vt(\"The constructor property value is not an object\");\n const e = n[d];\n return null == e ? r : e\n}\n\nfunction rr(t)\n{\n if (qt(t)) return !1;\n try\n {\n return D(t, 0, 0), !1\n }\n catch (t)\n {}\n return !0\n}\n\nfunction nr(t, r)\n{\n const n = w(t),\n e = w(r);\n if (n && e) return 0;\n if (n) return 1;\n if (e) return -1;\n if (t < r) return -1;\n if (t > r) return 1;\n if (0 === t && 0 === r)\n {\n const n = E(t, 0),\n e = E(r, 0);\n if (!n && e) return -1;\n if (n && !e) return 1\n }\n return 0\n}\nconst er = b(\"__Float16Array__\"),\n or = new Et;\n\nfunction ir(t)\n{\n return jt(or, t) || !M(t) && function(t)\n {\n if (!Gt(t)) return !1;\n const r = c(t);\n if (!Gt(r)) return !1;\n const n = r.constructor;\n if (void 0 === n) return !1;\n if (!zt(n)) throw vt(\"The constructor property value is not an object\");\n return u(n, er)\n }(t)\n}\n\nfunction sr(t)\n{\n if (!ir(t)) throw vt(\"This is not a Float16Array object\")\n}\n\nfunction cr(t, r)\n{\n const n = ir(t),\n e = Kt(t);\n if (!n && !e) throw vt(\"Species constructor didn't return TypedArray object\");\n if (\"number\" == typeof r)\n {\n let e;\n if (n)\n {\n const r = ur(t);\n e = it(r)\n }\n else e = it(t);\n if (e < r) throw vt(\"Derived constructor created TypedArray object which was too small length\")\n }\n if (Xt(t)) throw vt(\"Cannot mix BigInt and other types, use explicit conversions\")\n}\n\nfunction ur(t)\n{\n const r = Ot(or, t);\n if (void 0 !== r)\n {\n if (rr(et(r))) throw vt(\"Attempting to access detached ArrayBuffer\");\n return r\n }\n const n = t.buffer;\n if (rr(n)) throw vt(\"Attempting to access detached ArrayBuffer\");\n const o = e(ar, [n, t.byteOffset, t.length], t.constructor);\n return Ot(or, o)\n}\n\nfunction fr(t)\n{\n const r = it(t),\n n = [];\n for (let e = 0; e < r; ++e) n[e] = Mt(t[e]);\n return n\n}\nconst hr = new At;\nfor (const t of f(G))\n{\n if (t === v) continue;\n const r = s(G, t);\n j(r, \"get\") && Bt(hr, t)\n}\nconst lr = x(\n{\n get: (t, r, n) => Jt(r) && j(t, r) ? Mt(i(t, r)) : xt(hr, r) && O(G, t) ? i(t, r) : i(t, r, n),\n set: (t, r, n, e) => Jt(r) && j(t, r) ? h(t, r, Rt(n)) : h(t, r, n, e),\n getOwnPropertyDescriptor(t, r)\n {\n if (Jt(r) && j(t, r))\n {\n const n = s(t, r);\n return n.value = Mt(n.value), n\n }\n return s(t, r)\n },\n defineProperty: (t, r, n) => Jt(r) && j(t, r) && j(n, \"value\") ? (n.value = Rt(n.value), o(t, r, n)) : o(t, r, n)\n});\nclass ar\n{\n constructor(t, r, n)\n {\n let o;\n if (ir(t)) o = e(ct, [ur(t)], new.target);\n else if (zt(t) && ! function(t)\n {\n try\n {\n return k(t), !0\n }\n catch (t)\n {\n return !1\n }\n }(t))\n {\n let r, n;\n if (Kt(t))\n {\n r = t, n = it(t);\n const i = et(t),\n s = qt(i) ? U : tr(i, U);\n if (rr(i)) throw vt(\"Attempting to access detached ArrayBuffer\");\n if (Xt(t)) throw vt(\"Cannot mix BigInt and other types, use explicit conversions\");\n const c = new s(2 * n);\n o = e(ct, [c], new.target)\n }\n else\n {\n const i = t[g];\n if (null != i && \"function\" != typeof i) throw vt(\"@@iterator property is not callable\");\n null != i ? Ht(t) ? (r = t, n = t.length) : (r = [...t], n = r.length) : (r = t, n = $t(r.length)), o = e(ct, [n], new.target)\n }\n for (let t = 0; t < n; ++t) o[t] = Rt(r[t])\n }\n else o = e(ct, arguments, new.target);\n const i = new a(o, lr);\n return It(or, i, o), i\n }\n static from(t, ...r)\n {\n const e = this;\n if (!u(e, er)) throw vt(\"This constructor is not a subclass of Float16Array\");\n if (e === ar)\n {\n if (ir(t) && 0 === r.length)\n {\n const r = ur(t),\n n = new ct(et(r), ot(r), it(r));\n return new ar(et(rt(n)))\n }\n if (0 === r.length) return new ar(et(ut(t, Rt)));\n const e = r[0],\n o = r[1];\n return new ar(et(ut(t, (function(t, ...r)\n {\n return Rt(n(e, this, [t, ...kt(r)]))\n }), o)))\n }\n let o, i;\n const s = t[g];\n if (null != s && \"function\" != typeof s) throw vt(\"@@iterator property is not callable\");\n if (null != s) Ht(t) ? (o = t, i = t.length) : !Kt(c = t) || c[g] !== K && \"Array Iterator\" !== c[g]()[v] ? (o = [...t], i = o.length) : (o = t, i = it(t));\n else\n {\n if (null == t) throw vt(\"Cannot convert undefined or null to object\");\n o = A(t), i = $t(o.length)\n }\n var c;\n const f = new e(i);\n if (0 === r.length)\n for (let t = 0; t < i; ++t) f[t] = o[t];\n else\n {\n const t = r[0],\n e = r[1];\n for (let r = 0; r < i; ++r) f[r] = n(t, e, [o[r], r])\n }\n return f\n }\n static of(...t)\n {\n const r = this;\n if (!u(r, er)) throw vt(\"This constructor is not a subclass of Float16Array\");\n const n = t.length;\n if (r === ar)\n {\n const r = new ar(n),\n e = ur(r);\n for (let r = 0; r < n; ++r) e[r] = Rt(t[r]);\n return r\n }\n const e = new r(n);\n for (let r = 0; r < n; ++r) e[r] = t[r];\n return e\n }\n keys()\n {\n sr(this);\n const t = ur(this);\n return X(t)\n }\n values()\n {\n sr(this);\n const t = ur(this);\n return Yt(function*()\n {\n for (const r of q(t)) yield Mt(r)\n }())\n }\n entries()\n {\n sr(this);\n const t = ur(this);\n return Yt(function*()\n {\n for (const [r, n] of H(t)) yield [r, Mt(n)]\n }())\n }\n at(t)\n {\n sr(this);\n const r = ur(this),\n n = it(r),\n e = Zt(t),\n o = e >= 0 ? e : n + e;\n if (!(o < 0 || o >= n)) return Mt(r[o])\n }\n map(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0],\n s = tr(e, ar);\n if (s === ar)\n {\n const r = new ar(o),\n s = ur(r);\n for (let r = 0; r < o; ++r)\n {\n const o = Mt(e[r]);\n s[r] = Rt(n(t, i, [o, r, this]))\n }\n return r\n }\n const c = new s(o);\n cr(c, o);\n for (let r = 0; r < o; ++r)\n {\n const o = Mt(e[r]);\n c[r] = n(t, i, [o, r, this])\n }\n return c\n }\n filter(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0],\n s = [];\n for (let r = 0; r < o; ++r)\n {\n const o = Mt(e[r]);\n n(t, i, [o, r, this]) && F(s, o)\n }\n const c = new(tr(e, ar))(s);\n return cr(c), c\n }\n reduce(t, ...r)\n {\n sr(this);\n const n = ur(this),\n e = it(n);\n if (0 === e && 0 === r.length) throw vt(\"Reduce of empty array with no initial value\");\n let o, i;\n 0 === r.length ? (o = Mt(n[0]), i = 1) : (o = r[0], i = 0);\n for (let r = i; r < e; ++r) o = t(o, Mt(n[r]), r, this);\n return o\n }\n reduceRight(t, ...r)\n {\n sr(this);\n const n = ur(this),\n e = it(n);\n if (0 === e && 0 === r.length) throw vt(\"Reduce of empty array with no initial value\");\n let o, i;\n 0 === r.length ? (o = Mt(n[e - 1]), i = e - 2) : (o = r[0], i = e - 1);\n for (let r = i; r >= 0; --r) o = t(o, Mt(n[r]), r, this);\n return o\n }\n forEach(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0];\n for (let r = 0; r < o; ++r) n(t, i, [Mt(e[r]), r, this])\n }\n find(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0];\n for (let r = 0; r < o; ++r)\n {\n const o = Mt(e[r]);\n if (n(t, i, [o, r, this])) return o\n }\n }\n findIndex(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0];\n for (let r = 0; r < o; ++r)\n {\n const o = Mt(e[r]);\n if (n(t, i, [o, r, this])) return r\n }\n return -1\n }\n findLast(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0];\n for (let r = o - 1; r >= 0; --r)\n {\n const o = Mt(e[r]);\n if (n(t, i, [o, r, this])) return o\n }\n }\n findLastIndex(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0];\n for (let r = o - 1; r >= 0; --r)\n {\n const o = Mt(e[r]);\n if (n(t, i, [o, r, this])) return r\n }\n return -1\n }\n every(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0];\n for (let r = 0; r < o; ++r)\n if (!n(t, i, [Mt(e[r]), r, this])) return !1;\n return !0\n }\n some(t, ...r)\n {\n sr(this);\n const e = ur(this),\n o = it(e),\n i = r[0];\n for (let r = 0; r < o; ++r)\n if (n(t, i, [Mt(e[r]), r, this])) return !0;\n return !1\n }\n set(t, ...r)\n {\n sr(this);\n const n = ur(this),\n e = Zt(r[0]);\n if (e < 0) throw bt(\"Offset is out of bounds\");\n if (null == t) throw vt(\"Cannot convert undefined or null to object\");\n if (Xt(t)) throw vt(\"Cannot mix BigInt and other types, use explicit conversions\");\n if (ir(t)) return J(ur(this), ur(t), e);\n if (Kt(t))\n {\n if (rr(et(t))) throw vt(\"Attempting to access detached ArrayBuffer\")\n }\n const o = it(n),\n i = A(t),\n s = $t(i.length);\n if (e === 1 / 0 || s + e > o) throw bt(\"Offset is out of bounds\");\n for (let t = 0; t < s; ++t) n[t + e] = Rt(i[t])\n }\n reverse()\n {\n sr(this);\n const t = ur(this);\n return Q(t), this\n }\n fill(t, ...r)\n {\n sr(this);\n const n = ur(this);\n return Z(n, Rt(t), ...kt(r)), this\n }\n copyWithin(t, r, ...n)\n {\n sr(this);\n const e = ur(this);\n return $(e, t, r, ...kt(n)), this\n }\n sort(...t)\n {\n sr(this);\n const r = ur(this),\n n = void 0 !== t[0] ? t[0] : nr;\n return tt(r, ((t, r) => n(Mt(t), Mt(r)))), this\n }\n slice(...t)\n {\n sr(this);\n const r = ur(this),\n n = tr(r, ar);\n if (n === ar)\n {\n const n = new ct(et(r), ot(r), it(r));\n return new ar(et(rt(n, ...kt(t))))\n }\n const e = it(r),\n o = Zt(t[0]),\n i = void 0 === t[1] ? e : Zt(t[1]);\n let s, c;\n s = o === -1 / 0 ? 0 : o < 0 ? e + o > 0 ? e + o : 0 : e < o ? e : o, c = i === -1 / 0 ? 0 : i < 0 ? e + i > 0 ? e + i : 0 : e < i ? e : i;\n const u = c - s > 0 ? c - s : 0,\n f = new n(u);\n if (cr(f, u), 0 === u) return f;\n if (rr(et(r))) throw vt(\"Attempting to access detached ArrayBuffer\");\n let h = 0;\n for (; s < c;) f[h] = Mt(r[s]), ++s, ++h;\n return f\n }\n subarray(...t)\n {\n sr(this);\n const r = ur(this),\n n = tr(r, ar),\n e = new ct(et(r), ot(r), it(r)),\n o = nt(e, ...kt(t)),\n i = new n(et(o), ot(o), it(o));\n return cr(i), i\n }\n indexOf(t, ...r)\n {\n sr(this);\n const n = ur(this),\n e = it(n);\n let o = Zt(r[0]);\n if (o === 1 / 0) return -1;\n o < 0 && (o += e, o < 0 && (o = 0));\n for (let r = o; r < e; ++r)\n if (j(n, r) && Mt(n[r]) === t) return r;\n return -1\n }\n lastIndexOf(t, ...r)\n {\n sr(this);\n const n = ur(this),\n e = it(n);\n let o = r.length >= 1 ? Zt(r[0]) : e - 1;\n if (o === -1 / 0) return -1;\n o >= 0 ? o = o < e - 1 ? o : e - 1 : o += e;\n for (let r = o; r >= 0; --r)\n if (j(n, r) && Mt(n[r]) === t) return r;\n return -1\n }\n includes(t, ...r)\n {\n sr(this);\n const n = ur(this),\n e = it(n);\n let o = Zt(r[0]);\n if (o === 1 / 0) return !1;\n o < 0 && (o += e, o < 0 && (o = 0));\n const i = w(t);\n for (let r = o; r < e; ++r)\n {\n const e = Mt(n[r]);\n if (i && w(e)) return !0;\n if (e === t) return !0\n }\n return !1\n }\n join(...t)\n {\n sr(this);\n const r = fr(ur(this));\n return _(r, ...kt(t))\n }\n toLocaleString(...t)\n {\n sr(this);\n const r = fr(ur(this));\n return L(r, ...kt(t))\n }\n get[v]()\n {\n if (ir(this)) return \"Float16Array\"\n }\n}\nB(ar, \"BYTES_PER_ELEMENT\",\n{\n value: 2\n}), B(ar, er,\n{}), l(ar, Y);\nconst yr = ar.prototype;\n\nfunction pr(t, r, ...n)\n{\n return Mt(gt(t, r, ...kt(n)))\n}\n\nfunction wr(t, r, n, ...e)\n{\n return dt(t, r, Rt(n), ...kt(e))\n}\nB(yr, \"BYTES_PER_ELEMENT\",\n{\n value: 2\n}), B(yr, g,\n{\n value: yr.values,\n writable: !0,\n configurable: !0\n}), l(yr, G);\nexport\n{\n ar as Float16Array, pr as getFloat16, Dt as hfround, ir as isFloat16Array, wr as setFloat16\n};", @@ -138685,7 +139244,7 @@ "lineNumber": 1 }, { - "__docId__": 7007, + "__docId__": 7026, "kind": "function", "name": "t", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138715,7 +139274,7 @@ "ignore": true }, { - "__docId__": 7008, + "__docId__": 7027, "kind": "function", "name": "r", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138752,7 +139311,7 @@ "ignore": true }, { - "__docId__": 7009, + "__docId__": 7028, "kind": "variable", "name": "apply", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138773,7 +139332,7 @@ "ignore": true }, { - "__docId__": 7010, + "__docId__": 7029, "kind": "function", "name": "Rt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138804,7 +139363,7 @@ "ignore": true }, { - "__docId__": 7011, + "__docId__": 7030, "kind": "variable", "name": "Ct", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138825,7 +139384,7 @@ "ignore": true }, { - "__docId__": 7012, + "__docId__": 7031, "kind": "function", "name": "Mt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138856,7 +139415,7 @@ "ignore": true }, { - "__docId__": 7013, + "__docId__": 7032, "kind": "function", "name": "Dt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138887,7 +139446,7 @@ "ignore": true }, { - "__docId__": 7014, + "__docId__": 7033, "kind": "function", "name": "kt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138918,7 +139477,7 @@ "ignore": true }, { - "__docId__": 7015, + "__docId__": 7034, "kind": "variable", "name": "Wt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138939,7 +139498,7 @@ "ignore": true }, { - "__docId__": 7016, + "__docId__": 7035, "kind": "function", "name": "Yt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -138970,7 +139529,7 @@ "ignore": true }, { - "__docId__": 7017, + "__docId__": 7036, "kind": "function", "name": "zt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139001,7 +139560,7 @@ "ignore": true }, { - "__docId__": 7018, + "__docId__": 7037, "kind": "function", "name": "Gt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139032,7 +139591,7 @@ "ignore": true }, { - "__docId__": 7019, + "__docId__": 7038, "kind": "function", "name": "Kt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139063,7 +139622,7 @@ "ignore": true }, { - "__docId__": 7020, + "__docId__": 7039, "kind": "function", "name": "Xt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139094,7 +139653,7 @@ "ignore": true }, { - "__docId__": 7021, + "__docId__": 7040, "kind": "function", "name": "qt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139125,7 +139684,7 @@ "ignore": true }, { - "__docId__": 7022, + "__docId__": 7041, "kind": "function", "name": "Ht", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139156,7 +139715,7 @@ "ignore": true }, { - "__docId__": 7023, + "__docId__": 7042, "kind": "function", "name": "Jt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139187,7 +139746,7 @@ "ignore": true }, { - "__docId__": 7024, + "__docId__": 7043, "kind": "variable", "name": "Qt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139208,7 +139767,7 @@ "ignore": true }, { - "__docId__": 7025, + "__docId__": 7044, "kind": "function", "name": "Zt", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139239,7 +139798,7 @@ "ignore": true }, { - "__docId__": 7026, + "__docId__": 7045, "kind": "function", "name": "$t", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139270,7 +139829,7 @@ "ignore": true }, { - "__docId__": 7027, + "__docId__": 7046, "kind": "function", "name": "tr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139307,7 +139866,7 @@ "ignore": true }, { - "__docId__": 7028, + "__docId__": 7047, "kind": "function", "name": "rr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139338,7 +139897,7 @@ "ignore": true }, { - "__docId__": 7029, + "__docId__": 7048, "kind": "function", "name": "nr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139375,7 +139934,7 @@ "ignore": true }, { - "__docId__": 7030, + "__docId__": 7049, "kind": "variable", "name": "er", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139396,7 +139955,7 @@ "ignore": true }, { - "__docId__": 7031, + "__docId__": 7050, "kind": "function", "name": "ir", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139427,7 +139986,7 @@ "ignore": true }, { - "__docId__": 7032, + "__docId__": 7051, "kind": "function", "name": "sr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139454,7 +140013,7 @@ "ignore": true }, { - "__docId__": 7033, + "__docId__": 7052, "kind": "function", "name": "cr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139487,7 +140046,7 @@ "ignore": true }, { - "__docId__": 7034, + "__docId__": 7053, "kind": "function", "name": "ur", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139518,7 +140077,7 @@ "ignore": true }, { - "__docId__": 7035, + "__docId__": 7054, "kind": "function", "name": "fr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139549,7 +140108,7 @@ "ignore": true }, { - "__docId__": 7036, + "__docId__": 7055, "kind": "variable", "name": "hr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139570,7 +140129,7 @@ "ignore": true }, { - "__docId__": 7037, + "__docId__": 7056, "kind": "variable", "name": "lr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139591,7 +140150,7 @@ "ignore": true }, { - "__docId__": 7038, + "__docId__": 7057, "kind": "class", "name": "ar", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -139608,7 +140167,7 @@ "ignore": true }, { - "__docId__": 7039, + "__docId__": 7058, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139622,7 +140181,7 @@ "undocument": true }, { - "__docId__": 7040, + "__docId__": 7059, "kind": "method", "name": "from", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139656,7 +140215,7 @@ } }, { - "__docId__": 7041, + "__docId__": 7060, "kind": "method", "name": "of", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139684,7 +140243,7 @@ } }, { - "__docId__": 7042, + "__docId__": 7061, "kind": "method", "name": "keys", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139704,7 +140263,7 @@ } }, { - "__docId__": 7043, + "__docId__": 7062, "kind": "method", "name": "values", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139724,7 +140283,7 @@ } }, { - "__docId__": 7044, + "__docId__": 7063, "kind": "method", "name": "entries", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139744,7 +140303,7 @@ } }, { - "__docId__": 7045, + "__docId__": 7064, "kind": "method", "name": "at", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139771,7 +140330,7 @@ } }, { - "__docId__": 7046, + "__docId__": 7065, "kind": "method", "name": "map", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139805,7 +140364,7 @@ } }, { - "__docId__": 7047, + "__docId__": 7066, "kind": "method", "name": "filter", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139839,7 +140398,7 @@ } }, { - "__docId__": 7048, + "__docId__": 7067, "kind": "method", "name": "reduce", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139873,7 +140432,7 @@ } }, { - "__docId__": 7049, + "__docId__": 7068, "kind": "method", "name": "reduceRight", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139907,7 +140466,7 @@ } }, { - "__docId__": 7050, + "__docId__": 7069, "kind": "method", "name": "forEach", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139937,7 +140496,7 @@ "return": null }, { - "__docId__": 7051, + "__docId__": 7070, "kind": "method", "name": "find", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -139971,7 +140530,7 @@ } }, { - "__docId__": 7052, + "__docId__": 7071, "kind": "method", "name": "findIndex", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140005,7 +140564,7 @@ } }, { - "__docId__": 7053, + "__docId__": 7072, "kind": "method", "name": "findLast", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140039,7 +140598,7 @@ } }, { - "__docId__": 7054, + "__docId__": 7073, "kind": "method", "name": "findLastIndex", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140073,7 +140632,7 @@ } }, { - "__docId__": 7055, + "__docId__": 7074, "kind": "method", "name": "every", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140107,7 +140666,7 @@ } }, { - "__docId__": 7056, + "__docId__": 7075, "kind": "method", "name": "some", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140141,7 +140700,7 @@ } }, { - "__docId__": 7057, + "__docId__": 7076, "kind": "method", "name": "set", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140175,7 +140734,7 @@ } }, { - "__docId__": 7058, + "__docId__": 7077, "kind": "method", "name": "reverse", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140195,7 +140754,7 @@ } }, { - "__docId__": 7059, + "__docId__": 7078, "kind": "method", "name": "fill", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140229,7 +140788,7 @@ } }, { - "__docId__": 7060, + "__docId__": 7079, "kind": "method", "name": "copyWithin", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140269,7 +140828,7 @@ } }, { - "__docId__": 7061, + "__docId__": 7080, "kind": "method", "name": "sort", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140297,7 +140856,7 @@ } }, { - "__docId__": 7062, + "__docId__": 7081, "kind": "method", "name": "slice", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140325,7 +140884,7 @@ } }, { - "__docId__": 7063, + "__docId__": 7082, "kind": "method", "name": "subarray", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140353,7 +140912,7 @@ } }, { - "__docId__": 7064, + "__docId__": 7083, "kind": "method", "name": "indexOf", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140387,7 +140946,7 @@ } }, { - "__docId__": 7065, + "__docId__": 7084, "kind": "method", "name": "lastIndexOf", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140421,7 +140980,7 @@ } }, { - "__docId__": 7066, + "__docId__": 7085, "kind": "method", "name": "includes", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140455,7 +141014,7 @@ } }, { - "__docId__": 7067, + "__docId__": 7086, "kind": "method", "name": "join", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140483,7 +141042,7 @@ } }, { - "__docId__": 7068, + "__docId__": 7087, "kind": "method", "name": "toLocaleString", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140511,7 +141070,7 @@ } }, { - "__docId__": 7069, + "__docId__": 7088, "kind": "get", "name": "[v]", "memberof": "src/viewer/scene/model/vbo/float16.js~ar", @@ -140530,7 +141089,7 @@ } }, { - "__docId__": 7070, + "__docId__": 7089, "kind": "variable", "name": "yr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -140551,7 +141110,7 @@ "ignore": true }, { - "__docId__": 7071, + "__docId__": 7090, "kind": "function", "name": "pr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -140595,7 +141154,7 @@ "ignore": true }, { - "__docId__": 7072, + "__docId__": 7091, "kind": "function", "name": "wr", "memberof": "src/viewer/scene/model/vbo/float16.js", @@ -140645,7 +141204,7 @@ "ignore": true }, { - "__docId__": 7073, + "__docId__": 7092, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js", "content": "import {ENTITY_FLAGS} from '../../../ENTITY_FLAGS.js';\nimport {RENDER_PASSES} from '../../../RENDER_PASSES.js';\n\nimport {math} from \"../../../../math/math.js\";\nimport {RenderState} from \"../../../../webgl/RenderState.js\";\nimport {ArrayBuf} from \"../../../../webgl/ArrayBuf.js\";\nimport {getRenderers} from \"./renderers/VBOInstancingLinesRenderers.js\";\n\nconst tempUint8Vec4 = new Uint8Array(4);\nconst tempFloat32 = new Float32Array(1);\n\nconst tempVec3fa = new Float32Array(3);\n\nconst tempFloat32Vec4 = new Float32Array(4);\n\n/**\n * @private\n */\nclass VBOInstancingLinesLayer {\n\n /**\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.model\n * @param cfg.geometry\n * @param cfg.material\n * @param cfg.origin\n */\n constructor(cfg) {\n\n console.info(\"VBOInstancingLinesLayer\");\n\n /**\n * Owner model\n * @type {VBOSceneModel}\n */\n this.model = cfg.model;\n\n /**\n * Shared material\n * @type {VBOSceneModelGeometry}\n */\n this.material = cfg.material;\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"LinesInstancingLayer\";\n\n /**\n * Index of this InstancingLayer in VBOSceneModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._renderers = getRenderers(cfg.model.scene);\n\n this._aabb = math.collapseAABB3();\n\n this._state = new RenderState({\n obb: math.OBB3(),\n numInstances: 0,\n origin: null,\n geometry: cfg.geometry,\n positionsDecodeMatrix: cfg.geometry.positionsDecodeMatrix, // So we can null the geometry for GC\n positionsBuf: null,\n colorsBuf: null,\n flagsBuf: null,\n offsetsBuf: null,\n modelMatrixCol0Buf: null,\n modelMatrixCol1Buf: null,\n modelMatrixCol2Buf: null\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n /** @private */\n this.numIndices = cfg.geometry.numIndices;\n\n // Vertex arrays\n this._colors = [];\n this._offsets = [];\n\n // Modeling matrix per instance, array for each column\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n\n this._portions = [];\n this._meshes = [];\n\n this._aabb = math.collapseAABB3();\n this.aabbDirty = true;\n\n if (cfg.origin) {\n this._state.origin = math.vec3(cfg.origin);\n }\n\n this._finalized = false;\n }\n\n get aabb() {\n if (this.aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._meshes.length; i < len; i++) {\n math.expandAABB3(this._aabb, this._meshes[i].aabb);\n }\n this.aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * Creates a new portion within this InstancingLayer, returns the new portion ID.\n *\n * The portion will instance this InstancingLayer's geometry.\n *\n * Gives the portion the specified color and matrix.\n *\n * @param mesh The SceneModelMesh that owns the portion\n * @param cfg Portion params\n * @param cfg.color Color [0..255,0..255,0..255]\n * @param cfg.opacity Opacity [0..255].\n * @param cfg.meshMatrix Flat float 4x4 matrix.\n * @returns {number} Portion ID.\n */\n createPortion(mesh, cfg) {\n\n const color = cfg.color;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const r = color[0]; // Color is pre-quantized by VBOSceneModel\n const g = color[1];\n const b = color[2];\n const a = color[3];\n\n this._colors.push(r);\n this._colors.push(g);\n this._colors.push(b);\n this._colors.push(opacity);\n\n if (this.model.scene.entityOffsetsEnabled) {\n this._offsets.push(0);\n this._offsets.push(0);\n this._offsets.push(0);\n }\n\n this._modelMatrixCol0.push(meshMatrix[0]);\n this._modelMatrixCol0.push(meshMatrix[4]);\n this._modelMatrixCol0.push(meshMatrix[8]);\n this._modelMatrixCol0.push(meshMatrix[12]);\n\n this._modelMatrixCol1.push(meshMatrix[1]);\n this._modelMatrixCol1.push(meshMatrix[5]);\n this._modelMatrixCol1.push(meshMatrix[9]);\n this._modelMatrixCol1.push(meshMatrix[13]);\n\n this._modelMatrixCol2.push(meshMatrix[2]);\n this._modelMatrixCol2.push(meshMatrix[6]);\n this._modelMatrixCol2.push(meshMatrix[10]);\n this._modelMatrixCol2.push(meshMatrix[14]);\n\n this._state.numInstances++;\n\n const portionId = this._portions.length;\n this._portions.push({});\n\n this._numPortions++;\n this.model.numPortions++;\n\n this._meshes.push(mesh);\n\n return portionId;\n }\n\n finalize() {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n const gl = this.model.scene.canvas.gl;\n const state = this._state;\n const geometry = state.geometry;\n const colorsLength = this._colors.length;\n const flagsLength = colorsLength / 4;\n if (colorsLength > 0) {\n let notNormalized = false;\n this._state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._colors), this._colors.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._colors = []; // Release memory\n }\n if (flagsLength > 0) {\n // Because we only build flags arrays here, \n // get their length from the colors array\n let notNormalized = false;\n this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(flagsLength), flagsLength, 1, gl.DYNAMIC_DRAW, notNormalized);\n }\n if (this.model.scene.entityOffsetsEnabled) {\n if (this._offsets.length > 0) {\n const notNormalized = false;\n this._state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._offsets), this._offsets.length, 3, gl.DYNAMIC_DRAW, notNormalized);\n this._offsets = []; // Release memory\n }\n }\n if (geometry.colorsCompressed && geometry.colorsCompressed.length > 0) {\n const colorsCompressed = new Uint8Array(geometry.colorsCompressed);\n const notNormalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized);\n }\n if (geometry.positionsCompressed && geometry.positionsCompressed.length > 0) {\n const normalized = false;\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, geometry.positionsCompressed, geometry.positionsCompressed.length, 3, gl.STATIC_DRAW, normalized);\n state.positionsDecodeMatrix = math.mat4(geometry.positionsDecodeMatrix);\n }\n if (geometry.indices && geometry.indices.length > 0) {\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(geometry.indices), geometry.indices.length, 1, gl.STATIC_DRAW);\n state.numIndices = geometry.indices.length;\n }\n if (this._modelMatrixCol0.length > 0) {\n const normalized = false;\n this._state.modelMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol0), this._modelMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol1), this._modelMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol2), this._modelMatrixCol2.length, 4, gl.STATIC_DRAW, normalized);\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n }\n this._state.geometry = null;\n this._finalized = true;\n }\n\n // The following setters are called by VBOSceneModelMesh, in turn called by VBOSceneModelNode, only after the layer is finalized.\n // It's important that these are called after finalize() in order to maintain integrity of counts like _numVisibleLayerPortions etc.\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setVisible(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setHighlighted(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setXRayed(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setSelected(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setEdges(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags(portionId, flags);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setCulled(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setColor(portionId, color) { // RGBA color is normalized as ints\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n tempUint8Vec4[0] = color[0];\n tempUint8Vec4[1] = color[1];\n tempUint8Vec4[2] = color[2];\n tempUint8Vec4[3] = color[3];\n this._state.colorsBuf.setData(tempUint8Vec4, portionId * 4, 4);\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n /**\n * flags are 4bits values encoded on a 32bit base. color flag on the first 4 bits, silhouette flag on the next 4 bits and so on for edge, pick and clippable.\n */\n _setFlags(portionId, flags, meshTransparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n let colorFlag;\n if (!visible || culled || xrayed\n || (highlighted && !this.model.scene.highlightMaterial.glowThrough)\n || (selected && !this.model.scene.selectedMaterial.glowThrough)) {\n colorFlag = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n colorFlag = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n colorFlag = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n let silhouetteFlag;\n if (!visible || culled) {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let edgeFlag = 0;\n if (!visible || culled) {\n edgeFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n edgeFlag = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n edgeFlag = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n edgeFlag = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n edgeFlag = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n edgeFlag = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n edgeFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let pickFlag = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n const clippableFlag = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n\n let vertFlag = 0;\n vertFlag |= colorFlag;\n vertFlag |= silhouetteFlag << 4;\n vertFlag |= edgeFlag << 8;\n vertFlag |= pickFlag << 12;\n vertFlag |= clippableFlag << 16;\n\n tempFloat32[0] = vertFlag;\n\n this._state.flagsBuf.setData(tempFloat32, portionId);\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n tempVec3fa[0] = offset[0];\n tempVec3fa[1] = offset[1];\n tempVec3fa[2] = offset[2];\n this._state.offsetsBuf.setData(tempVec3fa, portionId * 3, 3);\n }\n\n setMatrix(portionId, matrix) {\n\n ////////////////////////////////////////\n // TODO: Update portion matrix\n ////////////////////////////////////////\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const offset = portionId * 4;\n\n tempFloat32Vec4[0] = matrix[0];\n tempFloat32Vec4[1] = matrix[4];\n tempFloat32Vec4[2] = matrix[8];\n tempFloat32Vec4[3] = matrix[12];\n\n this._state.modelMatrixCol0Buf.setData(tempFloat32Vec4, offset);\n\n tempFloat32Vec4[0] = matrix[1];\n tempFloat32Vec4[1] = matrix[5];\n tempFloat32Vec4[2] = matrix[9];\n tempFloat32Vec4[3] = matrix[13];\n\n this._state.modelMatrixCol1Buf.setData(tempFloat32Vec4, offset);\n\n tempFloat32Vec4[0] = matrix[2];\n tempFloat32Vec4[1] = matrix[6];\n tempFloat32Vec4[2] = matrix[10];\n tempFloat32Vec4[3] = matrix[14];\n\n this._state.modelMatrixCol2Buf.setData(tempFloat32Vec4, offset);\n }\n\n // ---------------------- NORMAL RENDERING -----------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n drawDepth(renderFlags, frameCtx) {\n }\n\n drawNormals(renderFlags, frameCtx) {\n }\n\n // ---------------------- EMPHASIS RENDERING -----------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n\n drawSnapInit(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.snapInitRenderer) {\n this._renderers.snapInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawSnap(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.snapRenderer) {\n this._renderers.snapRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n }\n\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.modelMatrixCol0Buf) {\n state.modelMatrixCol0Buf.destroy();\n state.modelMatrixCol0Buf = null;\n }\n if (state.modelMatrixCol1Buf) {\n state.modelMatrixCol1Buf.destroy();\n state.modelMatrixCol1Buf = null;\n }\n if (state.modelMatrixCol2Buf) {\n state.modelMatrixCol2Buf.destroy();\n state.modelMatrixCol2Buf = null;\n }\n state.destroy();\n }\n}\n\nexport {VBOInstancingLinesLayer};", @@ -140656,7 +141215,7 @@ "lineNumber": 1 }, { - "__docId__": 7074, + "__docId__": 7093, "kind": "variable", "name": "tempUint8Vec4", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js", @@ -140677,7 +141236,7 @@ "ignore": true }, { - "__docId__": 7075, + "__docId__": 7094, "kind": "variable", "name": "tempFloat32", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js", @@ -140698,7 +141257,7 @@ "ignore": true }, { - "__docId__": 7076, + "__docId__": 7095, "kind": "variable", "name": "tempVec3fa", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js", @@ -140719,7 +141278,7 @@ "ignore": true }, { - "__docId__": 7077, + "__docId__": 7096, "kind": "variable", "name": "tempFloat32Vec4", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js", @@ -140740,7 +141299,7 @@ "ignore": true }, { - "__docId__": 7078, + "__docId__": 7097, "kind": "class", "name": "VBOInstancingLinesLayer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js", @@ -140756,7 +141315,7 @@ "ignore": true }, { - "__docId__": 7079, + "__docId__": 7098, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140831,7 +141390,7 @@ ] }, { - "__docId__": 7080, + "__docId__": 7099, "kind": "member", "name": "model", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140850,7 +141409,7 @@ } }, { - "__docId__": 7081, + "__docId__": 7100, "kind": "member", "name": "material", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140869,7 +141428,7 @@ } }, { - "__docId__": 7082, + "__docId__": 7101, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140888,7 +141447,7 @@ } }, { - "__docId__": 7083, + "__docId__": 7102, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140907,7 +141466,7 @@ } }, { - "__docId__": 7084, + "__docId__": 7103, "kind": "member", "name": "_renderers", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140925,7 +141484,7 @@ } }, { - "__docId__": 7085, + "__docId__": 7104, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140943,7 +141502,7 @@ } }, { - "__docId__": 7086, + "__docId__": 7105, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140961,7 +141520,7 @@ } }, { - "__docId__": 7087, + "__docId__": 7106, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140979,7 +141538,7 @@ } }, { - "__docId__": 7088, + "__docId__": 7107, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -140997,7 +141556,7 @@ } }, { - "__docId__": 7089, + "__docId__": 7108, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141015,7 +141574,7 @@ } }, { - "__docId__": 7090, + "__docId__": 7109, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141033,7 +141592,7 @@ } }, { - "__docId__": 7091, + "__docId__": 7110, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141051,7 +141610,7 @@ } }, { - "__docId__": 7092, + "__docId__": 7111, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141069,7 +141628,7 @@ } }, { - "__docId__": 7093, + "__docId__": 7112, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141087,7 +141646,7 @@ } }, { - "__docId__": 7094, + "__docId__": 7113, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141105,7 +141664,7 @@ } }, { - "__docId__": 7095, + "__docId__": 7114, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141123,7 +141682,7 @@ } }, { - "__docId__": 7096, + "__docId__": 7115, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141141,7 +141700,7 @@ } }, { - "__docId__": 7097, + "__docId__": 7116, "kind": "member", "name": "numIndices", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141158,7 +141717,7 @@ } }, { - "__docId__": 7098, + "__docId__": 7117, "kind": "member", "name": "_colors", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141176,7 +141735,7 @@ } }, { - "__docId__": 7099, + "__docId__": 7118, "kind": "member", "name": "_offsets", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141194,7 +141753,7 @@ } }, { - "__docId__": 7100, + "__docId__": 7119, "kind": "member", "name": "_modelMatrixCol0", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141212,7 +141771,7 @@ } }, { - "__docId__": 7101, + "__docId__": 7120, "kind": "member", "name": "_modelMatrixCol1", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141230,7 +141789,7 @@ } }, { - "__docId__": 7102, + "__docId__": 7121, "kind": "member", "name": "_modelMatrixCol2", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141248,7 +141807,7 @@ } }, { - "__docId__": 7103, + "__docId__": 7122, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141266,7 +141825,7 @@ } }, { - "__docId__": 7104, + "__docId__": 7123, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141284,7 +141843,7 @@ } }, { - "__docId__": 7106, + "__docId__": 7125, "kind": "member", "name": "aabbDirty", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141301,7 +141860,7 @@ } }, { - "__docId__": 7107, + "__docId__": 7126, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141319,7 +141878,7 @@ } }, { - "__docId__": 7108, + "__docId__": 7127, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141338,7 +141897,7 @@ } }, { - "__docId__": 7110, + "__docId__": 7129, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141417,7 +141976,7 @@ } }, { - "__docId__": 7111, + "__docId__": 7130, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141433,7 +141992,7 @@ "return": null }, { - "__docId__": 7118, + "__docId__": 7137, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141468,7 +142027,7 @@ "return": null }, { - "__docId__": 7119, + "__docId__": 7138, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141503,7 +142062,7 @@ "return": null }, { - "__docId__": 7120, + "__docId__": 7139, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141538,7 +142097,7 @@ "return": null }, { - "__docId__": 7121, + "__docId__": 7140, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141573,7 +142132,7 @@ "return": null }, { - "__docId__": 7122, + "__docId__": 7141, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141608,7 +142167,7 @@ "return": null }, { - "__docId__": 7123, + "__docId__": 7142, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141643,7 +142202,7 @@ "return": null }, { - "__docId__": 7124, + "__docId__": 7143, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141672,7 +142231,7 @@ "return": null }, { - "__docId__": 7125, + "__docId__": 7144, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141701,7 +142260,7 @@ "return": null }, { - "__docId__": 7126, + "__docId__": 7145, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141736,7 +142295,7 @@ "return": null }, { - "__docId__": 7127, + "__docId__": 7146, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141771,7 +142330,7 @@ "return": null }, { - "__docId__": 7128, + "__docId__": 7147, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141800,7 +142359,7 @@ "return": null }, { - "__docId__": 7129, + "__docId__": 7148, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141835,7 +142394,7 @@ "return": null }, { - "__docId__": 7130, + "__docId__": 7149, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141870,7 +142429,7 @@ "return": null }, { - "__docId__": 7131, + "__docId__": 7150, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141899,7 +142458,7 @@ "return": null }, { - "__docId__": 7132, + "__docId__": 7151, "kind": "method", "name": "setMatrix", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141928,7 +142487,7 @@ "return": null }, { - "__docId__": 7133, + "__docId__": 7152, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141957,7 +142516,7 @@ "return": null }, { - "__docId__": 7134, + "__docId__": 7153, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -141986,7 +142545,7 @@ "return": null }, { - "__docId__": 7135, + "__docId__": 7154, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142015,7 +142574,7 @@ "return": null }, { - "__docId__": 7136, + "__docId__": 7155, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142044,7 +142603,7 @@ "return": null }, { - "__docId__": 7137, + "__docId__": 7156, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142073,7 +142632,7 @@ "return": null }, { - "__docId__": 7138, + "__docId__": 7157, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142102,7 +142661,7 @@ "return": null }, { - "__docId__": 7139, + "__docId__": 7158, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142131,7 +142690,7 @@ "return": null }, { - "__docId__": 7140, + "__docId__": 7159, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142160,7 +142719,7 @@ "return": null }, { - "__docId__": 7141, + "__docId__": 7160, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142189,7 +142748,7 @@ "return": null }, { - "__docId__": 7142, + "__docId__": 7161, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142218,7 +142777,7 @@ "return": null }, { - "__docId__": 7143, + "__docId__": 7162, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142247,7 +142806,7 @@ "return": null }, { - "__docId__": 7144, + "__docId__": 7163, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142276,7 +142835,7 @@ "return": null }, { - "__docId__": 7145, + "__docId__": 7164, "kind": "method", "name": "drawSnapInit", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142305,7 +142864,7 @@ "return": null }, { - "__docId__": 7146, + "__docId__": 7165, "kind": "method", "name": "drawSnap", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142334,7 +142893,7 @@ "return": null }, { - "__docId__": 7147, + "__docId__": 7166, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142363,7 +142922,7 @@ "return": null }, { - "__docId__": 7148, + "__docId__": 7167, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142392,7 +142951,7 @@ "return": null }, { - "__docId__": 7149, + "__docId__": 7168, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142421,7 +142980,7 @@ "return": null }, { - "__docId__": 7150, + "__docId__": 7169, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142450,7 +143009,7 @@ "return": null }, { - "__docId__": 7151, + "__docId__": 7170, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142479,7 +143038,7 @@ "return": null }, { - "__docId__": 7152, + "__docId__": 7171, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js~VBOInstancingLinesLayer", @@ -142495,7 +143054,7 @@ "return": null }, { - "__docId__": 7153, + "__docId__": 7172, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js", "content": "import {VBOInstancingLinesRenderer} from \"./VBOInstancingLinesRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOInstancingLinesColorRenderer extends VBOInstancingLinesRenderer {\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, {incrementDrawState: true});\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Lines instancing color vertex shader\");\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Lines instancing color fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n\n if (this._withSAO) {\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBAToDepth(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" outColor = vec4(vColor.rgb * ambient, vColor.a);\");\n } else {\n src.push(\" outColor = vColor;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n", @@ -142506,7 +143065,7 @@ "lineNumber": 1 }, { - "__docId__": 7154, + "__docId__": 7173, "kind": "class", "name": "VBOInstancingLinesColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js", @@ -142525,7 +143084,7 @@ "ignore": true }, { - "__docId__": 7155, + "__docId__": 7174, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js~VBOInstancingLinesColorRenderer", @@ -142560,7 +143119,7 @@ "return": null }, { - "__docId__": 7156, + "__docId__": 7175, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js~VBOInstancingLinesColorRenderer", @@ -142581,7 +143140,7 @@ } }, { - "__docId__": 7157, + "__docId__": 7176, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js~VBOInstancingLinesColorRenderer", @@ -142602,7 +143161,7 @@ } }, { - "__docId__": 7158, + "__docId__": 7177, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js", "content": "import {VBORenderer} from \"./../../../VBORenderer.js\";\n\n/**\n * @private\n */\nexport class VBOInstancingLinesRenderer extends VBORenderer {\n constructor(scene, withSAO) {\n super(scene, withSAO, {instancing: true});\n }\n\n _draw(drawCfg) {\n const {gl} = this._scene.canvas;\n\n const {\n state,\n frameCtx,\n incrementDrawState,\n } = drawCfg;\n\n gl.drawElementsInstanced(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n if (incrementDrawState) {\n frameCtx.drawElements++;\n }\n }\n}", @@ -142613,7 +143172,7 @@ "lineNumber": 1 }, { - "__docId__": 7159, + "__docId__": 7178, "kind": "class", "name": "VBOInstancingLinesRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js", @@ -142632,7 +143191,7 @@ "ignore": true }, { - "__docId__": 7160, + "__docId__": 7179, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js~VBOInstancingLinesRenderer", @@ -142646,7 +143205,7 @@ "undocument": true }, { - "__docId__": 7161, + "__docId__": 7180, "kind": "method", "name": "_draw", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js~VBOInstancingLinesRenderer", @@ -142670,7 +143229,7 @@ "return": null }, { - "__docId__": 7162, + "__docId__": 7181, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js", "content": "import {VBOInstancingLinesColorRenderer} from \"./VBOInstancingLinesColorRenderer.js\";\nimport {VBOInstancingLinesSilhouetteRenderer} from \"./VBOInstancingLinesSilhouetteRenderer.js\";\nimport {VBOInstancingLinesSnapInitRenderer} from \"./VBOInstancingLinesSnapInitRenderer.js\";\nimport {VBOInstancingLinesSnapRenderer} from \"./VBOInstancingLinesSnapRenderer.js\";\n\n/**\n * @private\n */\nclass VBOInstancingLinesRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._snapInitRenderer && (!this._snapInitRenderer.getValid())) {\n this._snapInitRenderer.destroy();\n this._snapInitRenderer = null;\n }\n if (this._snapRenderer && (!this._snapRenderer.getValid())) {\n this._snapRenderer.destroy();\n this._snapRenderer = null;\n }\n }\n\n eagerCreateRenders() {\n\n // Pre-initialize renderers that would otherwise be lazy-initialised\n // on user interaction, such as picking or emphasis, so that there is no delay\n // when user first begins interacting with the viewer.\n\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new VBOInstancingLinesSnapInitRenderer(this._scene, false);\n }\n if (!this._snapRenderer) {\n this._snapRenderer = new VBOInstancingLinesSnapRenderer(this._scene);\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new VBOInstancingLinesColorRenderer(this._scene);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new VBOInstancingLinesSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get snapInitRenderer() {\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new VBOInstancingLinesSnapInitRenderer(this._scene, false);\n }\n return this._snapInitRenderer;\n }\n\n get snapRenderer() {\n if (!this._snapRenderer) {\n this._snapRenderer = new VBOInstancingLinesSnapRenderer(this._scene);\n }\n return this._snapRenderer;\n }\n\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._snapInitRenderer) {\n this._snapInitRenderer.destroy();\n }\n if (this._snapRenderer) {\n this._snapRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\n/**\n * @private\n */\nexport function getRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new VBOInstancingLinesRenderers(scene);\n cachedRenderers[sceneId] = instancingRenderers;\n instancingRenderers._compile();\n scene.on(\"compile\", () => {\n instancingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers[sceneId];\n instancingRenderers._destroy();\n });\n }\n return instancingRenderers;\n}\n\n/*\n\nfunction getSnapInstancingRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new VBOInstancingLineSnapRenderers(scene);\n cachedRenderers[sceneId] = instancingRenderers;\n instancingRenderers._compile();\n instancingRenderers.eagerCreateRenders();\n scene.on(\"compile\", () => {\n instancingRenderers._compile();\n instancingRenderers.eagerCreateRenders();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers[sceneId];\n instancingRenderers._destroy();\n });\n }\n return instancingRenderers;\n}\n\n */\n\n", @@ -142681,7 +143240,7 @@ "lineNumber": 1 }, { - "__docId__": 7163, + "__docId__": 7182, "kind": "class", "name": "VBOInstancingLinesRenderers", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js", @@ -142697,7 +143256,7 @@ "ignore": true }, { - "__docId__": 7164, + "__docId__": 7183, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142711,7 +143270,7 @@ "undocument": true }, { - "__docId__": 7165, + "__docId__": 7184, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142729,7 +143288,7 @@ } }, { - "__docId__": 7166, + "__docId__": 7185, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142746,7 +143305,7 @@ "return": null }, { - "__docId__": 7167, + "__docId__": 7186, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142764,7 +143323,7 @@ } }, { - "__docId__": 7168, + "__docId__": 7187, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142782,7 +143341,7 @@ } }, { - "__docId__": 7169, + "__docId__": 7188, "kind": "member", "name": "_snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142800,7 +143359,7 @@ } }, { - "__docId__": 7170, + "__docId__": 7189, "kind": "member", "name": "_snapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142818,7 +143377,7 @@ } }, { - "__docId__": 7171, + "__docId__": 7190, "kind": "method", "name": "eagerCreateRenders", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142834,7 +143393,7 @@ "return": null }, { - "__docId__": 7174, + "__docId__": 7193, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142853,7 +143412,7 @@ } }, { - "__docId__": 7176, + "__docId__": 7195, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142872,7 +143431,7 @@ } }, { - "__docId__": 7178, + "__docId__": 7197, "kind": "get", "name": "snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142891,7 +143450,7 @@ } }, { - "__docId__": 7180, + "__docId__": 7199, "kind": "get", "name": "snapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142910,7 +143469,7 @@ } }, { - "__docId__": 7182, + "__docId__": 7201, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js~VBOInstancingLinesRenderers", @@ -142927,7 +143486,7 @@ "return": null }, { - "__docId__": 7183, + "__docId__": 7202, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js", @@ -142948,7 +143507,7 @@ "ignore": true }, { - "__docId__": 7184, + "__docId__": 7203, "kind": "function", "name": "getRenderers", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js", @@ -142978,7 +143537,7 @@ } }, { - "__docId__": 7185, + "__docId__": 7204, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js", "content": "import {VBOInstancingLinesRenderer} from \"./VBOInstancingLinesRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOInstancingLinesSilhouetteRenderer extends VBOInstancingLinesRenderer {\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n super.drawLayer(frameCtx, instancingLayer, renderPass, { colorUniform: true });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Lines instancing silhouette vertex shader\");\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n src.push(\"uniform vec4 color;\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"void main(void) {\");\n\n // silhouetteFlag = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`int silhouetteFlag = int(flags) >> 4 & 0xF;`);\n src.push(`if (silhouetteFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Lines instancing silhouette fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = color;\");\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -142989,7 +143548,7 @@ "lineNumber": 1 }, { - "__docId__": 7186, + "__docId__": 7205, "kind": "class", "name": "VBOInstancingLinesSilhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js", @@ -143008,7 +143567,7 @@ "ignore": true }, { - "__docId__": 7187, + "__docId__": 7206, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js~VBOInstancingLinesSilhouetteRenderer", @@ -143043,7 +143602,7 @@ "return": null }, { - "__docId__": 7188, + "__docId__": 7207, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js~VBOInstancingLinesSilhouetteRenderer", @@ -143064,7 +143623,7 @@ } }, { - "__docId__": 7189, + "__docId__": 7208, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js~VBOInstancingLinesSilhouetteRenderer", @@ -143085,7 +143644,7 @@ } }, { - "__docId__": 7190, + "__docId__": 7209, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js", "content": "import {VBORenderer} from \"../../../VBORenderer.js\";\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOInstancingLinesSnapInitRenderer extends VBORenderer {\n\n constructor(scene) {\n super(scene, false, { instancing: true });\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const camera = scene.camera;\n const state = instancingLayer._state;\n const origin = instancingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = instancingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(instancingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(instancingLayer));\n } else {\n this._vaoCache.set(instancingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(instancingLayer);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1);\n\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n gl.vertexAttribDivisor(this._aFlags.location, 1);\n }\n\n state.indicesBuf.bind();\n gl.drawElementsInstanced(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n state.indicesBuf.unbind();\n\n // Cleanup\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 0);\n if (this._aFlags) {\n gl.vertexAttribDivisor(this._aFlags.location, 0);\n }\n if (this._aOffset) {\n gl.vertexAttribDivisor(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\");\n this._uLayerNumber = program.getLocation(\"layerNumber\");\n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthBufInitRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec4 pickColor;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec2 snapVectorA;\");\n src.push(\"uniform vec2 snapInvVectorAB;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n src.push(\"flat out vec4 vPickColor;\");\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vPickColor = pickColor;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points instancing pick depth fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\");\n src.push(\"uniform vec3 coordinateScaler;\");\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in vec4 vPickColor;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"layout(location = 0) out highp ivec4 outCoords;\");\n ///////////////////////////////////////////\n // TODO: normal placeholder?\n // Primitive type?\n ///////////////////////////////////////////\n src.push(\"layout(location = 2) out lowp uvec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" float dx = dFdx(vFragDepth);\")\n src.push(\" float dy = dFdy(vFragDepth);\")\n src.push(\" float diff = sqrt(dx*dx+dy*dy);\");\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth + diff ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, -layerNumber);\")\n src.push(\"outPickColor = uvec4(vPickColor);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -143096,7 +143655,7 @@ "lineNumber": 1 }, { - "__docId__": 7191, + "__docId__": 7210, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js", @@ -143117,7 +143676,7 @@ "ignore": true }, { - "__docId__": 7192, + "__docId__": 7211, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js", @@ -143138,7 +143697,7 @@ "ignore": true }, { - "__docId__": 7193, + "__docId__": 7212, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js", @@ -143159,7 +143718,7 @@ "ignore": true }, { - "__docId__": 7194, + "__docId__": 7213, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js", @@ -143180,7 +143739,7 @@ "ignore": true }, { - "__docId__": 7195, + "__docId__": 7214, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js", @@ -143201,7 +143760,7 @@ "ignore": true }, { - "__docId__": 7196, + "__docId__": 7215, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js", @@ -143222,7 +143781,7 @@ "ignore": true }, { - "__docId__": 7197, + "__docId__": 7216, "kind": "class", "name": "VBOInstancingLinesSnapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js", @@ -143241,7 +143800,7 @@ "ignore": true }, { - "__docId__": 7198, + "__docId__": 7217, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143255,7 +143814,7 @@ "undocument": true }, { - "__docId__": 7199, + "__docId__": 7218, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143290,7 +143849,7 @@ "return": null }, { - "__docId__": 7200, + "__docId__": 7219, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143307,7 +143866,7 @@ "return": null }, { - "__docId__": 7201, + "__docId__": 7220, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143325,7 +143884,7 @@ } }, { - "__docId__": 7202, + "__docId__": 7221, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143342,7 +143901,7 @@ } }, { - "__docId__": 7203, + "__docId__": 7222, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143359,7 +143918,7 @@ } }, { - "__docId__": 7204, + "__docId__": 7223, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143377,7 +143936,7 @@ } }, { - "__docId__": 7205, + "__docId__": 7224, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143395,7 +143954,7 @@ } }, { - "__docId__": 7206, + "__docId__": 7225, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143412,7 +143971,7 @@ "return": null }, { - "__docId__": 7207, + "__docId__": 7226, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143433,7 +143992,7 @@ } }, { - "__docId__": 7208, + "__docId__": 7227, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143454,7 +144013,7 @@ } }, { - "__docId__": 7209, + "__docId__": 7228, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143470,7 +144029,7 @@ "return": null }, { - "__docId__": 7210, + "__docId__": 7229, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143488,7 +144047,7 @@ } }, { - "__docId__": 7211, + "__docId__": 7230, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js~VBOInstancingLinesSnapInitRenderer", @@ -143504,7 +144063,7 @@ "return": null }, { - "__docId__": 7213, + "__docId__": 7232, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js", "content": "import {VBORenderer} from \"../../../VBORenderer.js\";\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOInstancingLinesSnapRenderer extends VBORenderer {\n\n constructor(scene) {\n super(scene, false, { instancing: true });\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const origin = instancingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = instancingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(instancingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(instancingLayer));\n } else {\n this._vaoCache.set(instancingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(instancingLayer);\n\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n gl.vertexAttribDivisor(this._aFlags.location, 1);\n\n if (frameCtx.snapMode === \"edge\") {\n state.indicesBuf.bind();\n gl.drawElementsInstanced(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n state.indicesBuf.unbind(); // needed?\n } else {\n gl.drawArraysInstanced(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n }\n // Cleanup\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 0);\n gl.vertexAttribDivisor(this._aFlags.location, 0);\n if (this._aOffset) {\n gl.vertexAttribDivisor(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\"); \n this._uLayerNumber = program.getLocation(\"layerNumber\"); \n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\"); \n }\n\n _bindProgram() {\n this._program.bind();\n\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec2 snapVectorA;\"); \n src.push(\"uniform vec2 snapInvVectorAB;\"); \n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"gl_PointSize = 1.0;\"); // Windows needs this?\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\"); \n src.push(\"uniform vec3 coordinateScaler;\"); \n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"out highp ivec4 outCoords;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);\")\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -143515,7 +144074,7 @@ "lineNumber": 1 }, { - "__docId__": 7214, + "__docId__": 7233, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js", @@ -143536,7 +144095,7 @@ "ignore": true }, { - "__docId__": 7215, + "__docId__": 7234, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js", @@ -143557,7 +144116,7 @@ "ignore": true }, { - "__docId__": 7216, + "__docId__": 7235, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js", @@ -143578,7 +144137,7 @@ "ignore": true }, { - "__docId__": 7217, + "__docId__": 7236, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js", @@ -143599,7 +144158,7 @@ "ignore": true }, { - "__docId__": 7218, + "__docId__": 7237, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js", @@ -143620,7 +144179,7 @@ "ignore": true }, { - "__docId__": 7219, + "__docId__": 7238, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js", @@ -143641,7 +144200,7 @@ "ignore": true }, { - "__docId__": 7220, + "__docId__": 7239, "kind": "class", "name": "VBOInstancingLinesSnapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js", @@ -143660,7 +144219,7 @@ "ignore": true }, { - "__docId__": 7221, + "__docId__": 7240, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143674,7 +144233,7 @@ "undocument": true }, { - "__docId__": 7222, + "__docId__": 7241, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143709,7 +144268,7 @@ "return": null }, { - "__docId__": 7223, + "__docId__": 7242, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143726,7 +144285,7 @@ "return": null }, { - "__docId__": 7224, + "__docId__": 7243, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143744,7 +144303,7 @@ } }, { - "__docId__": 7225, + "__docId__": 7244, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143761,7 +144320,7 @@ } }, { - "__docId__": 7226, + "__docId__": 7245, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143778,7 +144337,7 @@ } }, { - "__docId__": 7227, + "__docId__": 7246, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143796,7 +144355,7 @@ } }, { - "__docId__": 7228, + "__docId__": 7247, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143814,7 +144373,7 @@ } }, { - "__docId__": 7229, + "__docId__": 7248, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143831,7 +144390,7 @@ "return": null }, { - "__docId__": 7230, + "__docId__": 7249, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143852,7 +144411,7 @@ } }, { - "__docId__": 7231, + "__docId__": 7250, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143873,7 +144432,7 @@ } }, { - "__docId__": 7232, + "__docId__": 7251, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143889,7 +144448,7 @@ "return": null }, { - "__docId__": 7233, + "__docId__": 7252, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143907,7 +144466,7 @@ } }, { - "__docId__": 7234, + "__docId__": 7253, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js~VBOInstancingLinesSnapRenderer", @@ -143923,7 +144482,7 @@ "return": null }, { - "__docId__": 7236, + "__docId__": 7255, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js", "content": "import {ENTITY_FLAGS} from '../../../ENTITY_FLAGS.js';\nimport {RENDER_PASSES} from '../../../RENDER_PASSES.js';\n\nimport {math} from \"../../../../math/math.js\";\nimport {RenderState} from \"../../../../webgl/RenderState.js\";\nimport {ArrayBuf} from \"../../../../webgl/ArrayBuf.js\";\nimport {getRenderers} from \"./renderers/VBOInstancingPointsRenderers.js\";\n\nconst tempUint8Vec4 = new Uint8Array(4);\nconst tempFloat32 = new Float32Array(1);\nconst tempVec3fa = new Float32Array(3);\n\nconst tempFloat32Vec4 = new Float32Array(4);\n\n/**\n * @private\n */\nexport class VBOInstancingPointsLayer {\n\n /**\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.model\n * @param cfg.geometry\n * @param cfg.material\n * @param cfg.origin\n */\n constructor(cfg) {\n\n console.info(\"VBOInstancingPointsLayer\");\n\n /**\n * Owner model\n * @type {VBOSceneModel}\n */\n this.model = cfg.model;\n\n /**\n * Shared material\n * @type {VBOSceneModelGeometry}\n */\n this.material = cfg.material;\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"PointsInstancingLayer\";\n\n /**\n * Index of this InstancingLayer in VBOSceneModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._renderers = getRenderers(cfg.model.scene);\n this._aabb = math.collapseAABB3();\n\n this._state = new RenderState({\n obb: math.OBB3(),\n numInstances: 0,\n origin: cfg.origin ? math.vec3(cfg.origin) : null,\n geometry: cfg.geometry,\n positionsDecodeMatrix: cfg.geometry.positionsDecodeMatrix, // So we can null the geometry for GC\n colorsBuf: null,\n flagsBuf: null,\n offsetsBuf: null,\n modelMatrixCol0Buf: null,\n modelMatrixCol1Buf: null,\n modelMatrixCol2Buf: null,\n pickColorsBuf: null\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n /** @private */\n this.numIndices = cfg.geometry.numIndices;\n\n // Per-instance arrays\n this._pickColors = [];\n this._offsets = [];\n\n // Modeling matrix per instance, array for each column\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n\n this._portions = [];\n this._meshes = [];\n this._aabb = math.collapseAABB3();\n this.aabbDirty = true;\n\n this._finalized = false;\n }\n\n get aabb() {\n if (this.aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._meshes.length; i < len; i++) {\n math.expandAABB3(this._aabb, this._meshes[i].aabb);\n }\n this.aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * Creates a new portion within this InstancingLayer, returns the new portion ID.\n *\n * The portion will instance this InstancingLayer's geometry.\n *\n * Gives the portion the specified color and matrix.\n *\n * @param mesh The SceneModelMesh that owns the portion\n * @param cfg Portion params\n * @param cfg.meshMatrix Flat float 4x4 matrix.\n * @param [cfg.worldMatrix] Flat float 4x4 matrix.\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID.\n */\n createPortion(mesh, cfg) {\n\n const meshMatrix = cfg.meshMatrix;\n const pickColor = cfg.pickColor;\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n this._offsets.push(0);\n this._offsets.push(0);\n this._offsets.push(0);\n }\n\n this._modelMatrixCol0.push(meshMatrix[0]);\n this._modelMatrixCol0.push(meshMatrix[4]);\n this._modelMatrixCol0.push(meshMatrix[8]);\n this._modelMatrixCol0.push(meshMatrix[12]);\n\n this._modelMatrixCol1.push(meshMatrix[1]);\n this._modelMatrixCol1.push(meshMatrix[5]);\n this._modelMatrixCol1.push(meshMatrix[9]);\n this._modelMatrixCol1.push(meshMatrix[13]);\n\n this._modelMatrixCol2.push(meshMatrix[2]);\n this._modelMatrixCol2.push(meshMatrix[6]);\n this._modelMatrixCol2.push(meshMatrix[10]);\n this._modelMatrixCol2.push(meshMatrix[14]);\n\n // Per-instance pick colors\n\n this._pickColors.push(pickColor[0]);\n this._pickColors.push(pickColor[1]);\n this._pickColors.push(pickColor[2]);\n this._pickColors.push(pickColor[3]);\n\n this._state.numInstances++;\n\n const portionId = this._portions.length;\n this._portions.push({});\n\n this._numPortions++;\n this.model.numPortions++;\n this._meshes.push(mesh);\n return portionId;\n }\n\n finalize() {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n const gl = this.model.scene.canvas.gl;\n const flagsLength = this._pickColors.length / 4;\n const state = this._state;\n const geometry = state.geometry;\n if (flagsLength > 0) {\n // Because we only build flags arrays here, \n // get their length from the colors array\n let notNormalized = false;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(flagsLength), flagsLength, 1, gl.DYNAMIC_DRAW, notNormalized);\n }\n if (this.model.scene.entityOffsetsEnabled) {\n if (this._offsets.length > 0) {\n const notNormalized = false;\n state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._offsets), this._offsets.length, 3, gl.DYNAMIC_DRAW, notNormalized);\n this._offsets = []; // Release memory\n }\n }\n if (geometry.positionsCompressed && geometry.positionsCompressed.length > 0) {\n const normalized = false;\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, geometry.positionsCompressed, geometry.positionsCompressed.length, 3, gl.STATIC_DRAW, normalized);\n state.positionsDecodeMatrix = math.mat4(geometry.positionsDecodeMatrix);\n }\n if (geometry.colorsCompressed && geometry.colorsCompressed.length > 0) {\n const colorsCompressed = new Uint8Array(geometry.colorsCompressed);\n const notNormalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized);\n }\n if (this._modelMatrixCol0.length > 0) {\n const normalized = false;\n state.modelMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol0), this._modelMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n state.modelMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol1), this._modelMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n state.modelMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol2), this._modelMatrixCol2.length, 4, gl.STATIC_DRAW, normalized);\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n }\n if (this._pickColors.length > 0) {\n const normalized = false;\n state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._pickColors), this._pickColors.length, 4, gl.STATIC_DRAW, normalized);\n this._pickColors = []; // Release memory\n }\n state.geometry = null;\n this._finalized = true;\n }\n\n // The following setters are called by VBOSceneModelMesh, in turn called by VBOSceneModelNode, only after the layer is finalized.\n // It's important that these are called after finalize() in order to maintain integrity of counts like _numVisibleLayerPortions etc.\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setVisible(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setHighlighted(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setXRayed(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setSelected(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setEdges(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags(portionId, flags);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setCulled(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setColor(portionId, color) { // RGBA color is normalized as ints\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n tempUint8Vec4[0] = color[0];\n tempUint8Vec4[1] = color[1];\n tempUint8Vec4[2] = color[2];\n this._state.colorsBuf.setData(tempUint8Vec4, portionId * 3);\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n // setMatrix(portionId, matrix) {\n\n ////////////////////////////////////////\n // TODO: Update portion matrix\n ////////////////////////////////////////\n //\n // if (!this._finalized) {\n // throw \"Not finalized\";\n // }\n //\n // var offset = portionId * 4;\n //\n // tempFloat32Vec4[0] = matrix[0];\n // tempFloat32Vec4[1] = matrix[4];\n // tempFloat32Vec4[2] = matrix[8];\n // tempFloat32Vec4[3] = matrix[12];\n //\n // this._state.modelMatrixCol0Buf.setData(tempFloat32Vec4, offset);\n //\n // tempFloat32Vec4[0] = matrix[1];\n // tempFloat32Vec4[1] = matrix[5];\n // tempFloat32Vec4[2] = matrix[9];\n // tempFloat32Vec4[3] = matrix[13];\n //\n // this._state.modelMatrixCol1Buf.setData(tempFloat32Vec4, offset);\n //\n // tempFloat32Vec4[0] = matrix[2];\n // tempFloat32Vec4[1] = matrix[6];\n // tempFloat32Vec4[2] = matrix[10];\n // tempFloat32Vec4[3] = matrix[14];\n //\n // this._state.modelMatrixCol2Buf.setData(tempFloat32Vec4, offset);\n // }\n\n /**\n * flags are 4bits values encoded on a 32bit base. color flag on the first 4 bits, silhouette flag on the next 4 bits and so on for edge, pick and clippable.\n */\n _setFlags(portionId, flags, meshTransparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n let colorFlag;\n if (!visible || culled || xrayed\n || (highlighted && !this.model.scene.highlightMaterial.glowThrough)\n || (selected && !this.model.scene.selectedMaterial.glowThrough)) {\n colorFlag = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n colorFlag = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n colorFlag = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n let silhouetteFlag;\n if (!visible || culled) {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let edgeFlag = 0;\n if (!visible || culled) {\n edgeFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n edgeFlag = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n edgeFlag = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n edgeFlag = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n edgeFlag = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n edgeFlag = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n edgeFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let pickFlag = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n const clippableFlag = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n\n let vertFlag = 0;\n vertFlag |= colorFlag;\n vertFlag |= silhouetteFlag << 4;\n vertFlag |= edgeFlag << 8;\n vertFlag |= pickFlag << 12;\n vertFlag |= clippableFlag << 16;\n\n tempFloat32[0] = vertFlag;\n\n this._state.flagsBuf.setData(tempFloat32, portionId);\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n tempVec3fa[0] = offset[0];\n tempVec3fa[1] = offset[1];\n tempVec3fa[2] = offset[2];\n this._state.offsetsBuf.setData(tempVec3fa, portionId * 3);\n }\n\n setMatrix(portionId, matrix) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const offset = portionId * 4;\n\n tempFloat32Vec4[0] = matrix[0];\n tempFloat32Vec4[1] = matrix[4];\n tempFloat32Vec4[2] = matrix[8];\n tempFloat32Vec4[3] = matrix[12];\n\n this._state.modelMatrixCol0Buf.setData(tempFloat32Vec4, offset);\n\n tempFloat32Vec4[0] = matrix[1];\n tempFloat32Vec4[1] = matrix[5];\n tempFloat32Vec4[2] = matrix[9];\n tempFloat32Vec4[3] = matrix[13];\n\n this._state.modelMatrixCol1Buf.setData(tempFloat32Vec4, offset);\n\n tempFloat32Vec4[0] = matrix[2];\n tempFloat32Vec4[1] = matrix[6];\n tempFloat32Vec4[2] = matrix[10];\n tempFloat32Vec4[3] = matrix[14];\n\n this._state.modelMatrixCol2Buf.setData(tempFloat32Vec4, offset);\n }\n\n // ---------------------- NORMAL RENDERING -----------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n\n // -- RENDERING SAO POST EFFECT TARGETS ----------------------------------------------------------------------------\n\n drawDepth(renderFlags, frameCtx) {\n }\n\n drawNormals(renderFlags, frameCtx) {\n }\n\n // ---------------------- EMPHASIS RENDERING -----------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n //-- EDGES RENDERING -----------------------------------------------------------------------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.occlusionRenderer) {\n // Only opaque, filled objects can be occluders\n this._renderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.pickMeshRenderer) {\n this._renderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.pickDepthRenderer) {\n this._renderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n }\n\n drawSnapInit(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.snapInitRenderer) {\n this._renderers.snapInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawSnap(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._renderers.snapRenderer) {\n this._renderers.snapRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n destroy() {\n const state = this._state;\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.modelMatrixCol0Buf) {\n state.modelMatrixCol0Buf.destroy();\n state.modelMatrixCol0Buf = null;\n }\n if (state.modelMatrixCol1Buf) {\n state.modelMatrixCol1Buf.destroy();\n state.modelMatrixCol1Buf = null;\n }\n if (state.modelMatrixCol2Buf) {\n state.modelMatrixCol2Buf.destroy();\n state.modelMatrixCol2Buf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n state.destroy();\n }\n}\n", @@ -143934,7 +144493,7 @@ "lineNumber": 1 }, { - "__docId__": 7237, + "__docId__": 7256, "kind": "variable", "name": "tempUint8Vec4", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js", @@ -143955,7 +144514,7 @@ "ignore": true }, { - "__docId__": 7238, + "__docId__": 7257, "kind": "variable", "name": "tempFloat32", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js", @@ -143976,7 +144535,7 @@ "ignore": true }, { - "__docId__": 7239, + "__docId__": 7258, "kind": "variable", "name": "tempVec3fa", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js", @@ -143997,7 +144556,7 @@ "ignore": true }, { - "__docId__": 7240, + "__docId__": 7259, "kind": "variable", "name": "tempFloat32Vec4", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js", @@ -144018,7 +144577,7 @@ "ignore": true }, { - "__docId__": 7241, + "__docId__": 7260, "kind": "class", "name": "VBOInstancingPointsLayer", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js", @@ -144034,7 +144593,7 @@ "ignore": true }, { - "__docId__": 7242, + "__docId__": 7261, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144109,7 +144668,7 @@ ] }, { - "__docId__": 7243, + "__docId__": 7262, "kind": "member", "name": "model", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144128,7 +144687,7 @@ } }, { - "__docId__": 7244, + "__docId__": 7263, "kind": "member", "name": "material", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144147,7 +144706,7 @@ } }, { - "__docId__": 7245, + "__docId__": 7264, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144166,7 +144725,7 @@ } }, { - "__docId__": 7246, + "__docId__": 7265, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144185,7 +144744,7 @@ } }, { - "__docId__": 7247, + "__docId__": 7266, "kind": "member", "name": "_renderers", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144203,7 +144762,7 @@ } }, { - "__docId__": 7248, + "__docId__": 7267, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144221,7 +144780,7 @@ } }, { - "__docId__": 7249, + "__docId__": 7268, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144239,7 +144798,7 @@ } }, { - "__docId__": 7250, + "__docId__": 7269, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144257,7 +144816,7 @@ } }, { - "__docId__": 7251, + "__docId__": 7270, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144275,7 +144834,7 @@ } }, { - "__docId__": 7252, + "__docId__": 7271, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144293,7 +144852,7 @@ } }, { - "__docId__": 7253, + "__docId__": 7272, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144311,7 +144870,7 @@ } }, { - "__docId__": 7254, + "__docId__": 7273, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144329,7 +144888,7 @@ } }, { - "__docId__": 7255, + "__docId__": 7274, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144347,7 +144906,7 @@ } }, { - "__docId__": 7256, + "__docId__": 7275, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144365,7 +144924,7 @@ } }, { - "__docId__": 7257, + "__docId__": 7276, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144383,7 +144942,7 @@ } }, { - "__docId__": 7258, + "__docId__": 7277, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144401,7 +144960,7 @@ } }, { - "__docId__": 7259, + "__docId__": 7278, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144419,7 +144978,7 @@ } }, { - "__docId__": 7260, + "__docId__": 7279, "kind": "member", "name": "numIndices", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144436,7 +144995,7 @@ } }, { - "__docId__": 7261, + "__docId__": 7280, "kind": "member", "name": "_pickColors", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144454,7 +145013,7 @@ } }, { - "__docId__": 7262, + "__docId__": 7281, "kind": "member", "name": "_offsets", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144472,7 +145031,7 @@ } }, { - "__docId__": 7263, + "__docId__": 7282, "kind": "member", "name": "_modelMatrixCol0", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144490,7 +145049,7 @@ } }, { - "__docId__": 7264, + "__docId__": 7283, "kind": "member", "name": "_modelMatrixCol1", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144508,7 +145067,7 @@ } }, { - "__docId__": 7265, + "__docId__": 7284, "kind": "member", "name": "_modelMatrixCol2", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144526,7 +145085,7 @@ } }, { - "__docId__": 7266, + "__docId__": 7285, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144544,7 +145103,7 @@ } }, { - "__docId__": 7267, + "__docId__": 7286, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144562,7 +145121,7 @@ } }, { - "__docId__": 7269, + "__docId__": 7288, "kind": "member", "name": "aabbDirty", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144579,7 +145138,7 @@ } }, { - "__docId__": 7270, + "__docId__": 7289, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144597,7 +145156,7 @@ } }, { - "__docId__": 7271, + "__docId__": 7290, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144616,7 +145175,7 @@ } }, { - "__docId__": 7273, + "__docId__": 7292, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144695,7 +145254,7 @@ } }, { - "__docId__": 7274, + "__docId__": 7293, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144711,7 +145270,7 @@ "return": null }, { - "__docId__": 7281, + "__docId__": 7300, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144746,7 +145305,7 @@ "return": null }, { - "__docId__": 7282, + "__docId__": 7301, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144781,7 +145340,7 @@ "return": null }, { - "__docId__": 7283, + "__docId__": 7302, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144816,7 +145375,7 @@ "return": null }, { - "__docId__": 7284, + "__docId__": 7303, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144851,7 +145410,7 @@ "return": null }, { - "__docId__": 7285, + "__docId__": 7304, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144886,7 +145445,7 @@ "return": null }, { - "__docId__": 7286, + "__docId__": 7305, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144921,7 +145480,7 @@ "return": null }, { - "__docId__": 7287, + "__docId__": 7306, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144950,7 +145509,7 @@ "return": null }, { - "__docId__": 7288, + "__docId__": 7307, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -144979,7 +145538,7 @@ "return": null }, { - "__docId__": 7289, + "__docId__": 7308, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145014,7 +145573,7 @@ "return": null }, { - "__docId__": 7290, + "__docId__": 7309, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145049,7 +145608,7 @@ "return": null }, { - "__docId__": 7291, + "__docId__": 7310, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145078,7 +145637,7 @@ "return": null }, { - "__docId__": 7292, + "__docId__": 7311, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145113,7 +145672,7 @@ "return": null }, { - "__docId__": 7293, + "__docId__": 7312, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145148,7 +145707,7 @@ "return": null }, { - "__docId__": 7294, + "__docId__": 7313, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145177,7 +145736,7 @@ "return": null }, { - "__docId__": 7295, + "__docId__": 7314, "kind": "method", "name": "setMatrix", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145206,7 +145765,7 @@ "return": null }, { - "__docId__": 7296, + "__docId__": 7315, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145235,7 +145794,7 @@ "return": null }, { - "__docId__": 7297, + "__docId__": 7316, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145264,7 +145823,7 @@ "return": null }, { - "__docId__": 7298, + "__docId__": 7317, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145293,7 +145852,7 @@ "return": null }, { - "__docId__": 7299, + "__docId__": 7318, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145322,7 +145881,7 @@ "return": null }, { - "__docId__": 7300, + "__docId__": 7319, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145351,7 +145910,7 @@ "return": null }, { - "__docId__": 7301, + "__docId__": 7320, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145380,7 +145939,7 @@ "return": null }, { - "__docId__": 7302, + "__docId__": 7321, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145409,7 +145968,7 @@ "return": null }, { - "__docId__": 7303, + "__docId__": 7322, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145438,7 +145997,7 @@ "return": null }, { - "__docId__": 7304, + "__docId__": 7323, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145467,7 +146026,7 @@ "return": null }, { - "__docId__": 7305, + "__docId__": 7324, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145496,7 +146055,7 @@ "return": null }, { - "__docId__": 7306, + "__docId__": 7325, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145525,7 +146084,7 @@ "return": null }, { - "__docId__": 7307, + "__docId__": 7326, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145554,7 +146113,7 @@ "return": null }, { - "__docId__": 7308, + "__docId__": 7327, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145583,7 +146142,7 @@ "return": null }, { - "__docId__": 7309, + "__docId__": 7328, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145612,7 +146171,7 @@ "return": null }, { - "__docId__": 7310, + "__docId__": 7329, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145641,7 +146200,7 @@ "return": null }, { - "__docId__": 7311, + "__docId__": 7330, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145670,7 +146229,7 @@ "return": null }, { - "__docId__": 7312, + "__docId__": 7331, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145699,7 +146258,7 @@ "return": null }, { - "__docId__": 7313, + "__docId__": 7332, "kind": "method", "name": "drawSnapInit", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145728,7 +146287,7 @@ "return": null }, { - "__docId__": 7314, + "__docId__": 7333, "kind": "method", "name": "drawSnap", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145757,7 +146316,7 @@ "return": null }, { - "__docId__": 7315, + "__docId__": 7334, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js~VBOInstancingPointsLayer", @@ -145773,7 +146332,7 @@ "return": null }, { - "__docId__": 7316, + "__docId__": 7335, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js", "content": "import {VBOInstancingPointsRenderer} from \"./VBOInstancingPointsRenderer.js\";\n\n/**\n * @private\n */\nclass VBOInstancingPointsColorRenderer extends VBOInstancingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, { incrementDrawState: true });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points instancing color vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (pointsMaterial.filterIntensity) {\n src.push(\"uniform vec2 intensityRange;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n if (pointsMaterial.filterIntensity) {\n src.push(\"float intensity = float(color.a) / 255.0;\")\n src.push(\"if (intensity < intensityRange[0] || intensity > intensityRange[1]) {\");\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n }\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, 1.0);\");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n if (pointsMaterial.filterIntensity) {\n src.push(\"}\");\n }\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points instancing color fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" outColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n\nexport {VBOInstancingPointsColorRenderer};", @@ -145784,7 +146343,7 @@ "lineNumber": 1 }, { - "__docId__": 7317, + "__docId__": 7336, "kind": "class", "name": "VBOInstancingPointsColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js", @@ -145803,7 +146362,7 @@ "ignore": true }, { - "__docId__": 7318, + "__docId__": 7337, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js~VBOInstancingPointsColorRenderer", @@ -145824,7 +146383,7 @@ } }, { - "__docId__": 7319, + "__docId__": 7338, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js~VBOInstancingPointsColorRenderer", @@ -145859,7 +146418,7 @@ "return": null }, { - "__docId__": 7320, + "__docId__": 7339, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js~VBOInstancingPointsColorRenderer", @@ -145880,7 +146439,7 @@ } }, { - "__docId__": 7321, + "__docId__": 7340, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js~VBOInstancingPointsColorRenderer", @@ -145901,7 +146460,7 @@ } }, { - "__docId__": 7322, + "__docId__": 7341, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js", "content": "import {VBOInstancingPointsRenderer} from \"./VBOInstancingPointsRenderer.js\";\n\n/**\n * @private\n */\nclass VBOInstancingPointsDepthRenderer extends VBOInstancingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points instancing depth vertex shader\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\");\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points instancing depth vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"const float packUpScale = 256. / 255.;\");\n src.push(\"const float unpackDownscale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unpackFactors = unpackDownscale / vec4( packFactors, 1. );\");\n src.push(\"const float shiftRight8 = 1.0 / 256.;\");\n\n src.push(\"vec4 packDepthToRGBA( const in float v ) {\");\n src.push(\" vec4 r = vec4( fract( v * packFactors ), v );\");\n src.push(\" r.yzw -= r.xyz * shiftRight8;\");\n src.push(\" return r * packUpScale;\");\n src.push(\"}\");\n\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" outColor = packDepthToRGBA( gl_FragCoord.z); \"); // Must be linear depth\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n\nexport {VBOInstancingPointsDepthRenderer};", @@ -145912,7 +146471,7 @@ "lineNumber": 1 }, { - "__docId__": 7323, + "__docId__": 7342, "kind": "class", "name": "VBOInstancingPointsDepthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js", @@ -145931,7 +146490,7 @@ "ignore": true }, { - "__docId__": 7324, + "__docId__": 7343, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js~VBOInstancingPointsDepthRenderer", @@ -145952,7 +146511,7 @@ } }, { - "__docId__": 7325, + "__docId__": 7344, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js~VBOInstancingPointsDepthRenderer", @@ -145973,7 +146532,7 @@ } }, { - "__docId__": 7326, + "__docId__": 7345, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js~VBOInstancingPointsDepthRenderer", @@ -145994,7 +146553,7 @@ } }, { - "__docId__": 7327, + "__docId__": 7346, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js", "content": "import {VBOInstancingPointsRenderer} from \"./VBOInstancingPointsRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOInstancingPointsOcclusionRenderer extends VBOInstancingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push ('#version 300 es');\n src.push(\"// Points instancing occlusion vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points instancing occlusion vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" outColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n", @@ -146005,7 +146564,7 @@ "lineNumber": 1 }, { - "__docId__": 7328, + "__docId__": 7347, "kind": "class", "name": "VBOInstancingPointsOcclusionRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js", @@ -146024,7 +146583,7 @@ "ignore": true }, { - "__docId__": 7329, + "__docId__": 7348, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js~VBOInstancingPointsOcclusionRenderer", @@ -146045,7 +146604,7 @@ } }, { - "__docId__": 7330, + "__docId__": 7349, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js~VBOInstancingPointsOcclusionRenderer", @@ -146066,7 +146625,7 @@ } }, { - "__docId__": 7331, + "__docId__": 7350, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js~VBOInstancingPointsOcclusionRenderer", @@ -146087,7 +146646,7 @@ } }, { - "__docId__": 7332, + "__docId__": 7351, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js", "content": "import {VBOInstancingPointsRenderer} from \"./VBOInstancingPointsRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class VBOInstancingPointsPickDepthRenderer extends VBOInstancingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push('#version 300 es');\n src.push(\"// Points instancing pick depth vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points instancing pick depth fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" outColor = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n}\n", @@ -146098,7 +146657,7 @@ "lineNumber": 1 }, { - "__docId__": 7333, + "__docId__": 7352, "kind": "class", "name": "VBOInstancingPointsPickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js", @@ -146117,7 +146676,7 @@ "ignore": true }, { - "__docId__": 7334, + "__docId__": 7353, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js~VBOInstancingPointsPickDepthRenderer", @@ -146138,7 +146697,7 @@ } }, { - "__docId__": 7335, + "__docId__": 7354, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js~VBOInstancingPointsPickDepthRenderer", @@ -146159,7 +146718,7 @@ } }, { - "__docId__": 7336, + "__docId__": 7355, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js~VBOInstancingPointsPickDepthRenderer", @@ -146180,7 +146739,7 @@ } }, { - "__docId__": 7337, + "__docId__": 7356, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js", "content": "import {VBOInstancingPointsRenderer} from \"./VBOInstancingPointsRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOInstancingPointsPickMeshRenderer extends VBOInstancingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points instancing pick mesh vertex shader\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 pickColor;\");\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vPickColor;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points instancing pick mesh fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vPickColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n}\n", @@ -146191,7 +146750,7 @@ "lineNumber": 1 }, { - "__docId__": 7338, + "__docId__": 7357, "kind": "class", "name": "VBOInstancingPointsPickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js", @@ -146210,7 +146769,7 @@ "ignore": true }, { - "__docId__": 7339, + "__docId__": 7358, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js~VBOInstancingPointsPickMeshRenderer", @@ -146231,7 +146790,7 @@ } }, { - "__docId__": 7340, + "__docId__": 7359, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js~VBOInstancingPointsPickMeshRenderer", @@ -146252,7 +146811,7 @@ } }, { - "__docId__": 7341, + "__docId__": 7360, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js~VBOInstancingPointsPickMeshRenderer", @@ -146273,7 +146832,7 @@ } }, { - "__docId__": 7342, + "__docId__": 7361, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js", "content": "import {VBORenderer} from \"./../../../VBORenderer.js\";\n\n/**\n * @private\n */\nexport class VBOInstancingPointsRenderer extends VBORenderer {\n constructor(scene, withSAO) {\n super(scene, withSAO, {instancing: true});\n }\n\n _draw(drawCfg) {\n const {gl} = this._scene.canvas;\n\n const {\n state,\n frameCtx,\n incrementDrawState,\n } = drawCfg;\n\n gl.drawArraysInstanced(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n if (incrementDrawState) {\n frameCtx.drawArrays++;\n }\n }\n}\n", @@ -146284,7 +146843,7 @@ "lineNumber": 1 }, { - "__docId__": 7343, + "__docId__": 7362, "kind": "class", "name": "VBOInstancingPointsRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js", @@ -146303,7 +146862,7 @@ "ignore": true }, { - "__docId__": 7344, + "__docId__": 7363, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js~VBOInstancingPointsRenderer", @@ -146317,7 +146876,7 @@ "undocument": true }, { - "__docId__": 7345, + "__docId__": 7364, "kind": "method", "name": "_draw", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js~VBOInstancingPointsRenderer", @@ -146341,7 +146900,7 @@ "return": null }, { - "__docId__": 7346, + "__docId__": 7365, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js", "content": "import {VBOInstancingPointsColorRenderer} from \"./VBOInstancingPointsColorRenderer.js\";\nimport {VBOInstancingPointsSilhouetteRenderer} from \"./VBOInstancingPointsSilhouetteRenderer.js\";\nimport {VBOInstancingPointsPickMeshRenderer} from \"./VBOInstancingPointsPickMeshRenderer.js\";\nimport {VBOInstancingPointsPickDepthRenderer} from \"./VBOInstancingPointsPickDepthRenderer.js\";\nimport {VBOInstancingPointsOcclusionRenderer} from \"./VBOInstancingPointsOcclusionRenderer.js\";\nimport {VBOInstancingPointsDepthRenderer} from \"./VBOInstancingPointsDepthRenderer.js\";\nimport {VBOInstancingPointsShadowRenderer} from \"./VBOInstancingPointsShadowRenderer.js\";\nimport {VBOInstancingPointsSnapInitRenderer} from \"./VBOInstancingPointsSnapInitRenderer.js\";\nimport {VBOInstancingPointsSnapRenderer} from \"./VBOInstancingPointsSnapRenderer.js\";\n\n/**\n * @private\n */\n class VBOInstancingPointsRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._depthRenderer && (!this._depthRenderer.getValid())) {\n this._depthRenderer.destroy();\n this._depthRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n if (this._shadowRenderer && (!this._shadowRenderer.getValid())) {\n this._shadowRenderer.destroy();\n this._shadowRenderer = null;\n }\n if (this._snapInitRenderer && (!this._snapInitRenderer.getValid())) {\n this._snapInitRenderer.destroy();\n this._snapInitRenderer = null;\n }\n if (this._snapRenderer && (!this._snapRenderer.getValid())) {\n this._snapRenderer.destroy();\n this._snapRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new VBOInstancingPointsColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new VBOInstancingPointsSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new VBOInstancingPointsDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new VBOInstancingPointsPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new VBOInstancingPointsPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new VBOInstancingPointsOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new VBOInstancingPointsShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\n }\n\n get snapInitRenderer() {\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new VBOInstancingPointsSnapInitRenderer(this._scene, false);\n }\n return this._snapInitRenderer;\n }\n\n get snapRenderer() {\n if (!this._snapRenderer) {\n this._snapRenderer = new VBOInstancingPointsSnapRenderer(this._scene);\n }\n return this._snapRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._depthRenderer) {\n this._depthRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.destroy();\n }\n if (this._snapInitRenderer) {\n this._snapInitRenderer.destroy();\n }\n if (this._snapRenderer) {\n this._snapRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\n/**\n * @private\n */\nexport function getRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new VBOInstancingPointsRenderers(scene);\n cachedRenderers[sceneId] = instancingRenderers;\n instancingRenderers._compile();\n scene.on(\"compile\", () => {\n instancingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers[sceneId];\n instancingRenderers._destroy();\n });\n }\n return instancingRenderers;\n}\n", @@ -146352,7 +146911,7 @@ "lineNumber": 1 }, { - "__docId__": 7347, + "__docId__": 7366, "kind": "class", "name": "VBOInstancingPointsRenderers", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js", @@ -146368,7 +146927,7 @@ "ignore": true }, { - "__docId__": 7348, + "__docId__": 7367, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146382,7 +146941,7 @@ "undocument": true }, { - "__docId__": 7349, + "__docId__": 7368, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146400,7 +146959,7 @@ } }, { - "__docId__": 7350, + "__docId__": 7369, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146417,7 +146976,7 @@ "return": null }, { - "__docId__": 7351, + "__docId__": 7370, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146435,7 +146994,7 @@ } }, { - "__docId__": 7352, + "__docId__": 7371, "kind": "member", "name": "_depthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146453,7 +147012,7 @@ } }, { - "__docId__": 7353, + "__docId__": 7372, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146471,7 +147030,7 @@ } }, { - "__docId__": 7354, + "__docId__": 7373, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146489,7 +147048,7 @@ } }, { - "__docId__": 7355, + "__docId__": 7374, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146507,7 +147066,7 @@ } }, { - "__docId__": 7356, + "__docId__": 7375, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146525,7 +147084,7 @@ } }, { - "__docId__": 7357, + "__docId__": 7376, "kind": "member", "name": "_shadowRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146543,7 +147102,7 @@ } }, { - "__docId__": 7358, + "__docId__": 7377, "kind": "member", "name": "_snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146561,7 +147120,7 @@ } }, { - "__docId__": 7359, + "__docId__": 7378, "kind": "member", "name": "_snapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146579,7 +147138,7 @@ } }, { - "__docId__": 7360, + "__docId__": 7379, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146598,7 +147157,7 @@ } }, { - "__docId__": 7362, + "__docId__": 7381, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146617,7 +147176,7 @@ } }, { - "__docId__": 7364, + "__docId__": 7383, "kind": "get", "name": "depthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146636,7 +147195,7 @@ } }, { - "__docId__": 7366, + "__docId__": 7385, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146655,7 +147214,7 @@ } }, { - "__docId__": 7368, + "__docId__": 7387, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146674,7 +147233,7 @@ } }, { - "__docId__": 7370, + "__docId__": 7389, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146693,7 +147252,7 @@ } }, { - "__docId__": 7372, + "__docId__": 7391, "kind": "get", "name": "shadowRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146712,7 +147271,7 @@ } }, { - "__docId__": 7374, + "__docId__": 7393, "kind": "get", "name": "snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146731,7 +147290,7 @@ } }, { - "__docId__": 7376, + "__docId__": 7395, "kind": "get", "name": "snapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146750,7 +147309,7 @@ } }, { - "__docId__": 7378, + "__docId__": 7397, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js~VBOInstancingPointsRenderers", @@ -146767,7 +147326,7 @@ "return": null }, { - "__docId__": 7379, + "__docId__": 7398, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js", @@ -146788,7 +147347,7 @@ "ignore": true }, { - "__docId__": 7380, + "__docId__": 7399, "kind": "function", "name": "getRenderers", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js", @@ -146818,7 +147377,7 @@ } }, { - "__docId__": 7381, + "__docId__": 7400, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js", "content": "import {VBOInstancingPointsRenderer} from \"./VBOInstancingPointsRenderer.js\";\n\n/**\n * Renders InstancingLayer fragment depths to a shadow map.\n *\n * @private\n */\nexport class VBOInstancingPointsShadowRenderer extends VBOInstancingPointsRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Instancing geometry shadow drawing vertex shader\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\");\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"int colorFlag = int(flags) & 0xF;\");\n src.push(\"bool visible = (colorFlag > 0);\");\n src.push(\"bool transparent = ((float(color.a) / 255.0) < 1.0);\");\n src.push(`if (!visible || transparent) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\"}\");\n src.push(\"gl_PointSize = pointSize;\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Instancing geometry depth drawing fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n}", @@ -146829,7 +147388,7 @@ "lineNumber": 1 }, { - "__docId__": 7382, + "__docId__": 7401, "kind": "class", "name": "VBOInstancingPointsShadowRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js", @@ -146848,7 +147407,7 @@ "ignore": true }, { - "__docId__": 7383, + "__docId__": 7402, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js~VBOInstancingPointsShadowRenderer", @@ -146869,7 +147428,7 @@ } }, { - "__docId__": 7384, + "__docId__": 7403, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js~VBOInstancingPointsShadowRenderer", @@ -146890,7 +147449,7 @@ } }, { - "__docId__": 7385, + "__docId__": 7404, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js", "content": "import {VBOInstancingPointsRenderer} from \"./VBOInstancingPointsRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOInstancingPointsSilhouetteRenderer extends VBOInstancingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n super.drawLayer(frameCtx, instancingLayer, renderPass, {colorUniform: true});\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points instancing silhouette vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 color;\");\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n src.push(\"uniform vec4 silhouetteColor;\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // silhouetteFlag = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`int silhouetteFlag = int(flags) >> 4 & 0xF;`);\n src.push(`if (silhouetteFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n src.push(\"vColor = vec4(float(silhouetteColor.r) / 255.0, float(silhouetteColor.g) / 255.0, float(silhouetteColor.b) / 255.0, float(color.a) / 255.0);\");\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points instancing silhouette fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n}\n", @@ -146901,7 +147460,7 @@ "lineNumber": 1 }, { - "__docId__": 7386, + "__docId__": 7405, "kind": "class", "name": "VBOInstancingPointsSilhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js", @@ -146920,7 +147479,7 @@ "ignore": true }, { - "__docId__": 7387, + "__docId__": 7406, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js~VBOInstancingPointsSilhouetteRenderer", @@ -146941,7 +147500,7 @@ } }, { - "__docId__": 7388, + "__docId__": 7407, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js~VBOInstancingPointsSilhouetteRenderer", @@ -146976,7 +147535,7 @@ "return": null }, { - "__docId__": 7389, + "__docId__": 7408, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js~VBOInstancingPointsSilhouetteRenderer", @@ -146997,7 +147556,7 @@ } }, { - "__docId__": 7390, + "__docId__": 7409, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js~VBOInstancingPointsSilhouetteRenderer", @@ -147018,7 +147577,7 @@ } }, { - "__docId__": 7391, + "__docId__": 7410, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js", "content": "import {VBORenderer} from \"../../../VBORenderer.js\";\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOInstancingPointsSnapInitRenderer extends VBORenderer {\n\n constructor(scene) {\n super(scene, false, { instancing: true });\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const camera = scene.camera;\n const state = instancingLayer._state;\n const origin = instancingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = instancingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(instancingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(instancingLayer));\n } else {\n this._vaoCache.set(instancingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(instancingLayer);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1);\n\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n gl.vertexAttribDivisor(this._aFlags.location, 1);\n }\n\n gl.drawArraysInstanced(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n // Cleanup\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 0);\n if (this._aFlags) {\n gl.vertexAttribDivisor(this._aFlags.location, 0);\n }\n if (this._aOffset) {\n gl.vertexAttribDivisor(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\");\n this._uLayerNumber = program.getLocation(\"layerNumber\");\n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthBufInitRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec4 pickColor;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec2 snapVectorA;\");\n src.push(\"uniform vec2 snapInvVectorAB;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n src.push(\"flat out vec4 vPickColor;\");\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vPickColor = pickColor;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points instancing pick depth fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\");\n src.push(\"uniform vec3 coordinateScaler;\");\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in vec4 vPickColor;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"layout(location = 0) out highp ivec4 outCoords;\");\n src.push(\"layout(location = 1) out highp ivec4 outNormal;\");\n src.push(\"layout(location = 2) out lowp uvec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" float dx = dFdx(vFragDepth);\")\n src.push(\" float dy = dFdy(vFragDepth);\")\n src.push(\" float diff = sqrt(dx*dx+dy*dy);\");\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth + diff ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, -layerNumber);\")\n // src.push(\"vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n // src.push(\"vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n // src.push(\"vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(`outNormal = ivec4(1.0, 1.0, 1.0, 1.0);`);\n src.push(\"outPickColor = uvec4(vPickColor);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -147029,7 +147588,7 @@ "lineNumber": 1 }, { - "__docId__": 7392, + "__docId__": 7411, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js", @@ -147050,7 +147609,7 @@ "ignore": true }, { - "__docId__": 7393, + "__docId__": 7412, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js", @@ -147071,7 +147630,7 @@ "ignore": true }, { - "__docId__": 7394, + "__docId__": 7413, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js", @@ -147092,7 +147651,7 @@ "ignore": true }, { - "__docId__": 7395, + "__docId__": 7414, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js", @@ -147113,7 +147672,7 @@ "ignore": true }, { - "__docId__": 7396, + "__docId__": 7415, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js", @@ -147134,7 +147693,7 @@ "ignore": true }, { - "__docId__": 7397, + "__docId__": 7416, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js", @@ -147155,7 +147714,7 @@ "ignore": true }, { - "__docId__": 7398, + "__docId__": 7417, "kind": "class", "name": "VBOInstancingPointsSnapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js", @@ -147174,7 +147733,7 @@ "ignore": true }, { - "__docId__": 7399, + "__docId__": 7418, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147188,7 +147747,7 @@ "undocument": true }, { - "__docId__": 7400, + "__docId__": 7419, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147223,7 +147782,7 @@ "return": null }, { - "__docId__": 7401, + "__docId__": 7420, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147240,7 +147799,7 @@ "return": null }, { - "__docId__": 7402, + "__docId__": 7421, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147258,7 +147817,7 @@ } }, { - "__docId__": 7403, + "__docId__": 7422, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147275,7 +147834,7 @@ } }, { - "__docId__": 7404, + "__docId__": 7423, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147292,7 +147851,7 @@ } }, { - "__docId__": 7405, + "__docId__": 7424, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147310,7 +147869,7 @@ } }, { - "__docId__": 7406, + "__docId__": 7425, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147328,7 +147887,7 @@ } }, { - "__docId__": 7407, + "__docId__": 7426, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147345,7 +147904,7 @@ "return": null }, { - "__docId__": 7408, + "__docId__": 7427, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147366,7 +147925,7 @@ } }, { - "__docId__": 7409, + "__docId__": 7428, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147387,7 +147946,7 @@ } }, { - "__docId__": 7410, + "__docId__": 7429, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147403,7 +147962,7 @@ "return": null }, { - "__docId__": 7411, + "__docId__": 7430, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147421,7 +147980,7 @@ } }, { - "__docId__": 7412, + "__docId__": 7431, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js~VBOInstancingPointsSnapInitRenderer", @@ -147437,7 +147996,7 @@ "return": null }, { - "__docId__": 7414, + "__docId__": 7433, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js", "content": "import {VBORenderer} from \"../../../VBORenderer.js\";\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class VBOInstancingPointsSnapRenderer extends VBORenderer {\n\n constructor(scene) {\n super(scene, false, { instancing: true });\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const origin = instancingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = instancingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(instancingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(instancingLayer));\n } else {\n this._vaoCache.set(instancingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(instancingLayer);\n\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n gl.vertexAttribDivisor(this._aFlags.location, 1);\n\n gl.drawArraysInstanced(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n // Cleanup\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 0);\n gl.vertexAttribDivisor(this._aFlags.location, 0);\n if (this._aOffset) {\n gl.vertexAttribDivisor(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\"); \n this._uLayerNumber = program.getLocation(\"layerNumber\"); \n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\"); \n }\n\n _bindProgram() {\n this._program.bind();\n\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec2 snapVectorA;\"); \n src.push(\"uniform vec2 snapInvVectorAB;\"); \n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"gl_PointSize = 1.0;\"); // Windows needs this?\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\"); \n src.push(\"uniform vec3 coordinateScaler;\"); \n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"out highp ivec4 outCoords;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);\")\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -147448,7 +148007,7 @@ "lineNumber": 1 }, { - "__docId__": 7415, + "__docId__": 7434, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js", @@ -147469,7 +148028,7 @@ "ignore": true }, { - "__docId__": 7416, + "__docId__": 7435, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js", @@ -147490,7 +148049,7 @@ "ignore": true }, { - "__docId__": 7417, + "__docId__": 7436, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js", @@ -147511,7 +148070,7 @@ "ignore": true }, { - "__docId__": 7418, + "__docId__": 7437, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js", @@ -147532,7 +148091,7 @@ "ignore": true }, { - "__docId__": 7419, + "__docId__": 7438, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js", @@ -147553,7 +148112,7 @@ "ignore": true }, { - "__docId__": 7420, + "__docId__": 7439, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js", @@ -147574,7 +148133,7 @@ "ignore": true }, { - "__docId__": 7421, + "__docId__": 7440, "kind": "class", "name": "VBOInstancingPointsSnapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js", @@ -147593,7 +148152,7 @@ "ignore": true }, { - "__docId__": 7422, + "__docId__": 7441, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147607,7 +148166,7 @@ "undocument": true }, { - "__docId__": 7423, + "__docId__": 7442, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147642,7 +148201,7 @@ "return": null }, { - "__docId__": 7424, + "__docId__": 7443, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147659,7 +148218,7 @@ "return": null }, { - "__docId__": 7425, + "__docId__": 7444, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147677,7 +148236,7 @@ } }, { - "__docId__": 7426, + "__docId__": 7445, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147694,7 +148253,7 @@ } }, { - "__docId__": 7427, + "__docId__": 7446, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147711,7 +148270,7 @@ } }, { - "__docId__": 7428, + "__docId__": 7447, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147729,7 +148288,7 @@ } }, { - "__docId__": 7429, + "__docId__": 7448, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147747,7 +148306,7 @@ } }, { - "__docId__": 7430, + "__docId__": 7449, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147764,7 +148323,7 @@ "return": null }, { - "__docId__": 7431, + "__docId__": 7450, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147785,7 +148344,7 @@ } }, { - "__docId__": 7432, + "__docId__": 7451, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147806,7 +148365,7 @@ } }, { - "__docId__": 7433, + "__docId__": 7452, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147822,7 +148381,7 @@ "return": null }, { - "__docId__": 7434, + "__docId__": 7453, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147840,7 +148399,7 @@ } }, { - "__docId__": 7435, + "__docId__": 7454, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js~VBOInstancingPointsSnapRenderer", @@ -147856,7 +148415,7 @@ "return": null }, { - "__docId__": 7437, + "__docId__": 7456, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js", "content": "import {VBOInstancingPointsRenderer} from \"./VBOInstancingPointsRenderer.js\";\n\n/**\n * @private\n */\nexport class VBOInstancingTrianglesRenderer extends VBOInstancingPointsRenderer {\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push('#version 300 es');\n src.push(\"// Points instancing occlusion vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push('#version 300 es');\n src.push(\"// Points instancing occlusion vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" outColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -147867,7 +148426,7 @@ "lineNumber": 1 }, { - "__docId__": 7438, + "__docId__": 7457, "kind": "class", "name": "VBOInstancingTrianglesRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js", @@ -147886,7 +148445,7 @@ "ignore": true }, { - "__docId__": 7439, + "__docId__": 7458, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js~VBOInstancingTrianglesRenderer", @@ -147907,7 +148466,7 @@ } }, { - "__docId__": 7440, + "__docId__": 7459, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js~VBOInstancingTrianglesRenderer", @@ -147928,7 +148487,7 @@ } }, { - "__docId__": 7441, + "__docId__": 7460, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js~VBOInstancingTrianglesRenderer", @@ -147949,7 +148508,7 @@ } }, { - "__docId__": 7442, + "__docId__": 7461, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", "content": "import {ENTITY_FLAGS} from '../../../ENTITY_FLAGS.js';\nimport {RENDER_PASSES} from '../../../RENDER_PASSES.js';\n\nimport {math} from \"../../../../math/math.js\";\nimport {RenderState} from \"../../../../webgl/RenderState.js\";\nimport {ArrayBuf} from \"../../../../webgl/ArrayBuf.js\";\nimport {getRenderers} from \"./renderers/Renderers.js\";\n\nconst tempUint8Vec4 = new Uint8Array(4);\nconst tempFloat32 = new Float32Array(1);\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec3fa = new Float32Array(3);\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempVec3e = math.vec3();\nconst tempVec3f = math.vec3();\nconst tempVec3g = math.vec3();\n\nconst tempFloat32Vec4 = new Float32Array(4);\n\n/**\n * @private\n */\nexport class VBOInstancingTrianglesLayer {\n\n /**\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.model\n * @param cfg.geometry\n * @param cfg.textureSet\n * @param cfg.origin\n */\n constructor(cfg) {\n\n console.info(\"Creating VBOInstancingTrianglesLayer\");\n\n /**\n * Owner model\n * @type {VBOSceneModel}\n */\n this.model = cfg.model;\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"TrianglesInstancingLayer\" + (cfg.solid ? \"-solid\" : \"-surface\") + (cfg.normals ? \"-normals\" : \"-autoNormals\");\n\n /**\n * Index of this InstancingLayer in VBOSceneModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._renderers = getRenderers(cfg.model.scene);\n\n this._aabb = math.collapseAABB3();\n\n this._state = new RenderState({\n numInstances: 0,\n obb: math.OBB3(),\n origin: math.vec3(),\n geometry: cfg.geometry,\n textureSet: cfg.textureSet,\n pbrSupported: false, // Set in #finalize if we have enough to support quality rendering\n positionsDecodeMatrix: cfg.geometry.positionsDecodeMatrix, // So we can null the geometry for GC\n colorsBuf: null,\n metallicRoughnessBuf: null,\n flagsBuf: null,\n offsetsBuf: null,\n modelMatrixBuf: null,\n modelMatrixCol0Buf: null,\n modelMatrixCol1Buf: null,\n modelMatrixCol2Buf: null,\n modelNormalMatrixCol0Buf: null,\n modelNormalMatrixCol1Buf: null,\n modelNormalMatrixCol2Buf: null,\n pickColorsBuf: null\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n /** @private */\n this.numIndices = cfg.geometry.numIndices;\n\n // Vertex arrays\n this._colors = [];\n this._metallicRoughness = [];\n this._pickColors = [];\n this._offsets = [];\n\n // Modeling matrix per instance, array for each column\n\n this._modelMatrix = [];\n\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n\n // Modeling normal matrix per instance, array for each column\n this._modelNormalMatrixCol0 = [];\n this._modelNormalMatrixCol1 = [];\n this._modelNormalMatrixCol2 = [];\n\n this._portions = [];\n this._meshes = [];\n\n this._aabb = math.collapseAABB3();\n this.aabbDirty = true;\n\n if (cfg.origin) {\n this._state.origin.set(cfg.origin);\n }\n\n this._finalized = false;\n\n /**\n * When true, this layer contains solid triangle meshes, otherwise this layer contains surface triangle meshes\n * @type {boolean}\n */\n this.solid = !!cfg.solid;\n\n /**\n * The number of indices in this layer.\n * @type {number|*}\n */\n this.numIndices = cfg.geometry.numIndices;\n }\n\n get aabb() {\n if (this.aabbDirty) {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._meshes.length; i < len; i++) {\n math.expandAABB3(this._aabb, this._meshes[i].aabb);\n }\n this.aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * Creates a new portion within this InstancingLayer, returns the new portion ID.\n *\n * The portion will instance this InstancingLayer's geometry.\n *\n * Gives the portion the specified color and matrix.\n *\n * @param mesh The SceneModelMesh that owns the portion\n * @param cfg Portion params\n * @param cfg.color Color [0..255,0..255,0..255]\n * @param cfg.metallic Metalness factor [0..255]\n * @param cfg.roughness Roughness factor [0..255]\n * @param cfg.opacity Opacity [0..255].\n * @param cfg.meshMatrix Flat float 4x4 matrix.\n * @param [cfg.worldMatrix] Flat float 4x4 matrix.\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID.\n */\n createPortion(mesh, cfg) {\n\n const color = cfg.color;\n const metallic = cfg.metallic;\n const roughness = cfg.roughness;\n const opacity = cfg.opacity !== null && cfg.opacity !== undefined ? cfg.opacity : 255;\n const meshMatrix = cfg.meshMatrix;\n const pickColor = cfg.pickColor;\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const r = color[0]; // Color is pre-quantized by SceneModel\n const g = color[1];\n const b = color[2];\n\n this._colors.push(r);\n this._colors.push(g);\n this._colors.push(b);\n this._colors.push(opacity);\n\n this._metallicRoughness.push((metallic !== null && metallic !== undefined) ? metallic : 0);\n this._metallicRoughness.push((roughness !== null && roughness !== undefined) ? roughness : 255);\n\n if (this.model.scene.entityOffsetsEnabled) {\n this._offsets.push(0);\n this._offsets.push(0);\n this._offsets.push(0);\n }\n\n this._modelMatrixCol0.push(meshMatrix[0]);\n this._modelMatrixCol0.push(meshMatrix[4]);\n this._modelMatrixCol0.push(meshMatrix[8]);\n this._modelMatrixCol0.push(meshMatrix[12]);\n\n this._modelMatrixCol1.push(meshMatrix[1]);\n this._modelMatrixCol1.push(meshMatrix[5]);\n this._modelMatrixCol1.push(meshMatrix[9]);\n this._modelMatrixCol1.push(meshMatrix[13]);\n\n this._modelMatrixCol2.push(meshMatrix[2]);\n this._modelMatrixCol2.push(meshMatrix[6]);\n this._modelMatrixCol2.push(meshMatrix[10]);\n this._modelMatrixCol2.push(meshMatrix[14]);\n\n if (this._state.geometry.normals) {\n\n // Note: order of inverse and transpose doesn't matter\n\n let transposedMat = math.transposeMat4(meshMatrix, math.mat4()); // TODO: Use cached matrix\n let normalMatrix = math.inverseMat4(transposedMat);\n\n this._modelNormalMatrixCol0.push(normalMatrix[0]);\n this._modelNormalMatrixCol0.push(normalMatrix[4]);\n this._modelNormalMatrixCol0.push(normalMatrix[8]);\n this._modelNormalMatrixCol0.push(normalMatrix[12]);\n\n this._modelNormalMatrixCol1.push(normalMatrix[1]);\n this._modelNormalMatrixCol1.push(normalMatrix[5]);\n this._modelNormalMatrixCol1.push(normalMatrix[9]);\n this._modelNormalMatrixCol1.push(normalMatrix[13]);\n\n this._modelNormalMatrixCol2.push(normalMatrix[2]);\n this._modelNormalMatrixCol2.push(normalMatrix[6]);\n this._modelNormalMatrixCol2.push(normalMatrix[10]);\n this._modelNormalMatrixCol2.push(normalMatrix[14]);\n }\n\n // Per-vertex pick colors\n\n this._pickColors.push(pickColor[0]);\n this._pickColors.push(pickColor[1]);\n this._pickColors.push(pickColor[2]);\n this._pickColors.push(pickColor[3]);\n\n this._state.numInstances++;\n\n const portionId = this._portions.length;\n\n const portion = {};\n\n if (this.model.scene.pickSurfacePrecisionEnabled) {\n portion.matrix = meshMatrix.slice();\n portion.inverseMatrix = null; // Lazy-computed in precisionRayPickSurface\n portion.normalMatrix = null; // Lazy-computed in precisionRayPickSurface\n }\n\n this._portions.push(portion);\n\n this._numPortions++;\n this.model.numPortions++;\n this._meshes.push(mesh);\n return portionId;\n }\n\n finalize() {\n\n if (this._finalized) {\n return;\n }\n\n const state = this._state;\n const geometry = state.geometry;\n const textureSet = state.textureSet;\n const gl = this.model.scene.canvas.gl;\n const colorsLength = this._colors.length;\n const flagsLength = colorsLength / 4;\n\n if (colorsLength > 0) {\n let notNormalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._colors), this._colors.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._colors = []; // Release memory\n }\n\n if (this._metallicRoughness.length > 0) {\n const metallicRoughness = new Uint8Array(this._metallicRoughness);\n let normalized = false;\n state.metallicRoughnessBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, metallicRoughness, this._metallicRoughness.length, 2, gl.STATIC_DRAW, normalized);\n }\n\n if (flagsLength > 0) {\n // Because we only build flags arrays here,\n // get their length from the colors array\n let notNormalized = false;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(flagsLength), flagsLength, 1, gl.DYNAMIC_DRAW, notNormalized);\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n if (this._offsets.length > 0) {\n const notNormalized = false;\n state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._offsets), this._offsets.length, 3, gl.DYNAMIC_DRAW, notNormalized);\n this._offsets = []; // Release memory\n }\n }\n\n if (geometry.positionsCompressed && geometry.positionsCompressed.length > 0) {\n const normalized = false;\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, geometry.positionsCompressed, geometry.positionsCompressed.length, 3, gl.STATIC_DRAW, normalized);\n state.positionsDecodeMatrix = math.mat4(geometry.positionsDecodeMatrix);\n }\n // if (geometry.normalsCompressed && geometry.normalsCompressed.length > 0) {\n // const normalized = true; // For oct-encoded UInt8\n // state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, geometry.normalsCompressed, geometry.normalsCompressed.length, 3, gl.STATIC_DRAW, normalized);\n // }\n if (geometry.colorsCompressed && geometry.colorsCompressed.length > 0) {\n const colorsCompressed = new Uint8Array(geometry.colorsCompressed);\n const notNormalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized);\n }\n if (geometry.uvCompressed && geometry.uvCompressed.length > 0) {\n const uvCompressed = geometry.uvCompressed;\n state.uvDecodeMatrix = geometry.uvDecodeMatrix;\n state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uvCompressed, uvCompressed.length, 2, gl.STATIC_DRAW, false);\n }\n if (geometry.indices && geometry.indices.length > 0) {\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(geometry.indices), geometry.indices.length, 1, gl.STATIC_DRAW);\n state.numIndices = geometry.indices.length;\n }\n if (geometry.primitive === \"triangles\" || geometry.primitive === \"solid\" || geometry.primitive === \"surface\") {\n state.edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(geometry.edgeIndices), geometry.edgeIndices.length, 1, gl.STATIC_DRAW);\n }\n\n if (this._modelMatrixCol0.length > 0) {\n\n const normalized = false;\n\n state.modelMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol0), this._modelMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n state.modelMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol1), this._modelMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n state.modelMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol2), this._modelMatrixCol2.length, 4, gl.STATIC_DRAW, normalized);\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n\n if (state.normalsBuf) {\n state.modelNormalMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol0), this._modelNormalMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n state.modelNormalMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol1), this._modelNormalMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n state.modelNormalMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol2), this._modelNormalMatrixCol2.length, 4, gl.STATIC_DRAW, normalized);\n this._modelNormalMatrixCol0 = [];\n this._modelNormalMatrixCol1 = [];\n this._modelNormalMatrixCol2 = [];\n }\n }\n\n if (this._pickColors.length > 0) {\n const normalized = false;\n state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._pickColors), this._pickColors.length, 4, gl.STATIC_DRAW, normalized);\n this._pickColors = []; // Release memory\n }\n\n state.pbrSupported\n = !!state.metallicRoughnessBuf\n && !!state.uvBuf\n && !!state.normalsBuf\n && !!textureSet\n && !!textureSet.colorTexture\n && !!textureSet.metallicRoughnessTexture;\n\n state.colorTextureSupported\n = !!state.uvBuf\n && !!textureSet\n && !!textureSet.colorTexture;\n\n this._state.geometry = null;\n\n this._finalized = true;\n }\n\n // The following setters are called by VBOSceneModelMesh, in turn called by VBOSceneModelNode, only after the layer is finalized.\n // It's important that these are called after finalize() in order to maintain integrity of counts like _numVisibleLayerPortions etc.\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setVisible(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setHighlighted(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setXRayed(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setSelected(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setEdges(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags(portionId, flags);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setCulled(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setColor(portionId, color) { // RGBA color is normalized as ints\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n tempUint8Vec4[0] = color[0];\n tempUint8Vec4[1] = color[1];\n tempUint8Vec4[2] = color[2];\n tempUint8Vec4[3] = color[3];\n if (this._state.colorsBuf) {\n this._state.colorsBuf.setData(tempUint8Vec4, portionId * 4);\n }\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n // setMatrix(portionId, matrix) {\n //\n // if (!this._finalized) {\n // throw \"Not finalized\";\n // }\n //\n // var offset = portionId * 4;\n //\n // tempFloat32Vec4[0] = matrix[0];\n // tempFloat32Vec4[1] = matrix[4];\n // tempFloat32Vec4[2] = matrix[8];\n // tempFloat32Vec4[3] = matrix[12];\n //\n // this._state.modelMatrixCol0Buf.setData(tempFloat32Vec4, offset);\n //\n // tempFloat32Vec4[0] = matrix[1];\n // tempFloat32Vec4[1] = matrix[5];\n // tempFloat32Vec4[2] = matrix[9];\n // tempFloat32Vec4[3] = matrix[13];\n //\n // this._state.modelMatrixCol1Buf.setData(tempFloat32Vec4, offset);\n //\n // tempFloat32Vec4[0] = matrix[2];\n // tempFloat32Vec4[1] = matrix[6];\n // tempFloat32Vec4[2] = matrix[10];\n // tempFloat32Vec4[3] = matrix[14];\n //\n // this._state.modelMatrixCol2Buf.setData(tempFloat32Vec4, offset);\n // }\n\n /**\n * flags are 4bits values encoded on a 32bit base. color flag on the first 4 bits, silhouette flag on the next 4 bits and so on for edge, pick and clippable.\n */\n _setFlags(portionId, flags, meshTransparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n let colorFlag;\n if (!visible || culled || xrayed\n || (highlighted && !this.model.scene.highlightMaterial.glowThrough)\n || (selected && !this.model.scene.selectedMaterial.glowThrough)) {\n colorFlag = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n colorFlag = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n colorFlag = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n let silhouetteFlag;\n if (!visible || culled) {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n silhouetteFlag = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n silhouetteFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n let edgeFlag = 0;\n if (!visible || culled) {\n edgeFlag = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n edgeFlag = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n edgeFlag = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n edgeFlag = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n edgeFlag = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n edgeFlag = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n edgeFlag = RENDER_PASSES.NOT_RENDERED;\n }\n\n const pickFlag = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n const clippableFlag = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 1 : 0;\n\n let vertFlag = 0;\n vertFlag |= colorFlag;\n vertFlag |= silhouetteFlag << 4;\n vertFlag |= edgeFlag << 8;\n vertFlag |= pickFlag << 12;\n vertFlag |= clippableFlag << 16;\n\n tempFloat32[0] = vertFlag;\n\n if (this._state.flagsBuf) {\n this._state.flagsBuf.setData(tempFloat32, portionId);\n }\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n tempVec3fa[0] = offset[0];\n tempVec3fa[1] = offset[1];\n tempVec3fa[2] = offset[2];\n if (this._state.offsetsBuf) {\n this._state.offsetsBuf.setData(tempVec3fa, portionId * 3);\n }\n }\n\n getEachVertex(portionId, callback) {\n if (!this.model.scene.pickSurfacePrecisionEnabled) {\n return false;\n }\n const state = this._state;\n const geometry = state.geometry;\n const portion = this._portions[portionId];\n if (!portion) {\n this.model.error(\"portion not found: \" + portionId);\n return;\n }\n const positions = geometry.quantizedPositions;\n const origin = state.origin;\n const offset = portion.offset;\n const offsetX = origin[0] + offset[0];\n const offsetY = origin[1] + offset[1];\n const offsetZ = origin[2] + offset[2];\n const worldPos = tempVec4a;\n const portionMatrix = portion.matrix;\n const sceneModelPatrix = this.model.sceneModelMatrix;\n const positionsDecodeMatrix = state.positionsDecodeMatrix;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n worldPos[0] = positions[i];\n worldPos[1] = positions[i + 1];\n worldPos[2] = positions[i + 2];\n math.decompressPosition(worldPos, positionsDecodeMatrix);\n math.transformPoint3(portionMatrix, worldPos);\n math.transformPoint3(sceneModelPatrix, worldPos);\n worldPos[0] += offsetX;\n worldPos[1] += offsetY;\n worldPos[2] += offsetZ;\n callback(worldPos);\n }\n }\n\n setMatrix(portionId, matrix) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n ////////////////////////////////////////\n // TODO: Update portion matrix\n ////////////////////////////////////////\n\n var offset = portionId * 4;\n\n tempFloat32Vec4[0] = matrix[0];\n tempFloat32Vec4[1] = matrix[4];\n tempFloat32Vec4[2] = matrix[8];\n tempFloat32Vec4[3] = matrix[12];\n\n this._state.modelMatrixCol0Buf.setData(tempFloat32Vec4, offset);\n\n tempFloat32Vec4[0] = matrix[1];\n tempFloat32Vec4[1] = matrix[5];\n tempFloat32Vec4[2] = matrix[9];\n tempFloat32Vec4[3] = matrix[13];\n\n this._state.modelMatrixCol1Buf.setData(tempFloat32Vec4, offset);\n\n tempFloat32Vec4[0] = matrix[2];\n tempFloat32Vec4[1] = matrix[6];\n tempFloat32Vec4[2] = matrix[10];\n tempFloat32Vec4[3] = matrix[14];\n\n this._state.modelMatrixCol2Buf.setData(tempFloat32Vec4, offset);\n }\n\n // ---------------------- COLOR RENDERING -----------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (frameCtx.withSAO && this.model.saoEnabled) {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.pbrSupported) {\n if (this._renderers.pbrRendererWithSAO) {\n this._renderers.pbrRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else if (frameCtx.colorTextureEnabled && this.model.colorTextureEnabled && this._state.colorTextureSupported) {\n if (this._renderers.colorTextureRendererWithSAO) {\n this._renderers.colorTextureRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else if (this._state.normalsBuf) {\n if (this._renderers.colorRendererWithSAO) {\n this._renderers.colorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._renderers.flatColorRendererWithSAO) {\n this._renderers.flatColorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n } else if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.pbrSupported) {\n if (this._renderers.pbrRenderer) {\n this._renderers.pbrRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else if (frameCtx.colorTextureEnabled && this.model.colorTextureEnabled && this._state.colorTextureSupported) {\n if (this._renderers.colorTextureRenderer) {\n this._renderers.colorTextureRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else if (this._state.normalsBuf) {\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._renderers.flatColorRenderer) {\n this._renderers.flatColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n }\n\n _updateBackfaceCull(renderFlags, frameCtx) {\n const backfaces = this.model.backfaces || (!this.solid) || renderFlags.sectioned;\n if (frameCtx.backfaces !== backfaces) {\n const gl = frameCtx.gl;\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.pbrSupported) {\n if (this._renderers.pbrRenderer) {\n this._renderers.pbrRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else if (frameCtx.colorTextureEnabled && this.model.colorTextureEnabled && this._state.colorTextureSupported) {\n if (this._renderers.colorTextureRenderer) {\n this._renderers.colorTextureRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else if (this._state.normalsBuf) {\n if (this._renderers.colorRenderer) {\n this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else {\n if (this._renderers.flatColorRenderer) {\n this._renderers.flatColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n drawDepth(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.depthRenderer) {\n this._renderers.depthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses depth (eg SAO) does not apply to transparent objects\n }\n }\n\n drawNormals(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.normalsRenderer) {\n this._renderers.normalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses normals (eg SAO) does not apply to transparent objects\n }\n }\n\n // ---------------------- SILHOUETTE RENDERING -----------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.silhouetteRenderer) {\n this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesColorRenderer) {\n this._renderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_OPAQUE);\n }\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesColorRenderer) {\n this._renderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_TRANSPARENT);\n }\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesRenderer) {\n this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_XRAYED);\n }\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesRenderer) {\n this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_HIGHLIGHTED);\n }\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._renderers.edgesRenderer) {\n this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_SELECTED);\n }\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.occlusionRenderer) {\n // Only opaque, filled objects can be occluders\n this._renderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.shadowRenderer) {\n this._renderers.shadowRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.pickMeshRenderer) {\n this._renderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.pickDepthRenderer) {\n this._renderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////\n // TODO\n // if (this._state.normalsBuf) {\n // if (this._renderers.pickNormalsRenderer) {\n // this._renderers.pickNormalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n // }\n ////////////////////////////////////////////////////////////////////////////////////////////////////\n // } else {\n if (this._renderers.pickNormalsFlatRenderer) {\n this._renderers.pickNormalsFlatRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n // }\n }\n\n drawSnapInit(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.snapInitRenderer) {\n this._renderers.snapInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawSnap(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._renderers.snapRenderer) {\n this._renderers.snapRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n //-----------------------------------------------------------------------------------------\n\n precisionRayPickSurface(portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldNormal) {\n\n if (!this.model.scene.pickSurfacePrecisionEnabled) {\n return false;\n }\n\n const geometry = this._state.geometry;\n const state = this._state;\n const portion = this._portions[portionId];\n\n if (!portion) {\n this.model.error(\"portion not found: \" + portionId);\n return false;\n }\n\n if (!portion.inverseMatrix) {\n portion.inverseMatrix = math.inverseMat4(portion.matrix, math.mat4());\n }\n\n if (worldNormal && !portion.normalMatrix) {\n portion.normalMatrix = math.transposeMat4(portion.inverseMatrix, math.mat4());\n }\n\n const quantizedPositions = geometry.quantizedPositions;\n const indices = geometry.indices;\n const origin = state.origin;\n const offset = portion.offset;\n\n const rtcRayOrigin = tempVec3a;\n const rtcRayDir = tempVec3b;\n\n rtcRayOrigin.set(origin ? math.subVec3(worldRayOrigin, origin, tempVec3c) : worldRayOrigin); // World -> RTC\n rtcRayDir.set(worldRayDir);\n\n if (offset) {\n math.subVec3(rtcRayOrigin, offset);\n }\n\n math.transformRay(this.model.worldNormalMatrix, rtcRayOrigin, rtcRayDir, rtcRayOrigin, rtcRayDir);\n\n math.transformRay(portion.inverseMatrix, rtcRayOrigin, rtcRayDir, rtcRayOrigin, rtcRayDir);\n\n const a = tempVec3d;\n const b = tempVec3e;\n const c = tempVec3f;\n\n let gotIntersect = false;\n let closestDist = 0;\n const closestIntersectPos = tempVec3g;\n\n for (let i = 0, len = indices.length; i < len; i += 3) {\n\n const ia = indices[i + 0] * 3;\n const ib = indices[i + 1] * 3;\n const ic = indices[i + 2] * 3;\n\n a[0] = quantizedPositions[ia];\n a[1] = quantizedPositions[ia + 1];\n a[2] = quantizedPositions[ia + 2];\n\n b[0] = quantizedPositions[ib];\n b[1] = quantizedPositions[ib + 1];\n b[2] = quantizedPositions[ib + 2];\n\n c[0] = quantizedPositions[ic];\n c[1] = quantizedPositions[ic + 1];\n c[2] = quantizedPositions[ic + 2];\n\n const {positionsDecodeMatrix} = state.geometry;\n\n math.decompressPosition(a, positionsDecodeMatrix);\n math.decompressPosition(b, positionsDecodeMatrix);\n math.decompressPosition(c, positionsDecodeMatrix);\n\n if (math.rayTriangleIntersect(rtcRayOrigin, rtcRayDir, a, b, c, closestIntersectPos)) {\n\n math.transformPoint3(portion.matrix, closestIntersectPos, closestIntersectPos);\n\n math.transformPoint3(this.model.worldMatrix, closestIntersectPos, closestIntersectPos);\n\n if (offset) {\n math.addVec3(closestIntersectPos, offset);\n }\n\n if (origin) {\n math.addVec3(closestIntersectPos, origin);\n }\n\n const dist = Math.abs(math.lenVec3(math.subVec3(closestIntersectPos, worldRayOrigin, [])));\n\n if (!gotIntersect || dist > closestDist) {\n closestDist = dist;\n worldSurfacePos.set(closestIntersectPos);\n if (worldNormal) { // Not that wasteful to eagerly compute - unlikely to hit >2 surfaces on most geometry\n math.triangleNormal(a, b, c, worldNormal);\n }\n gotIntersect = true;\n }\n }\n }\n\n if (gotIntersect && worldNormal) {\n math.transformVec3(portion.normalMatrix, worldNormal, worldNormal);\n math.transformVec3(this.model.worldNormalMatrix, worldNormal, worldNormal);\n math.normalizeVec3(worldNormal);\n }\n\n return gotIntersect;\n }\n\n destroy() {\n const state = this._state;\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.metallicRoughnessBuf) {\n state.metallicRoughnessBuf.destroy();\n state.metallicRoughnessBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.modelMatrixCol0Buf) {\n state.modelMatrixCol0Buf.destroy();\n state.modelMatrixCol0Buf = null;\n }\n if (state.modelMatrixCol1Buf) {\n state.modelMatrixCol1Buf.destroy();\n state.modelMatrixCol1Buf = null;\n }\n if (state.modelMatrixCol2Buf) {\n state.modelMatrixCol2Buf.destroy();\n state.modelMatrixCol2Buf = null;\n }\n if (state.modelNormalMatrixCol0Buf) {\n state.modelNormalMatrixCol0Buf.destroy();\n state.modelNormalMatrixCol0Buf = null;\n }\n if (state.modelNormalMatrixCol1Buf) {\n state.modelNormalMatrixCol1Buf.destroy();\n state.modelNormalMatrixCol1Buf = null;\n }\n if (state.modelNormalMatrixCol2Buf) {\n state.modelNormalMatrixCol2Buf.destroy();\n state.modelNormalMatrixCol2Buf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n state.destroy();\n this._state = null;\n }\n}\n", @@ -147960,7 +148519,7 @@ "lineNumber": 1 }, { - "__docId__": 7443, + "__docId__": 7462, "kind": "variable", "name": "tempUint8Vec4", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -147981,7 +148540,7 @@ "ignore": true }, { - "__docId__": 7444, + "__docId__": 7463, "kind": "variable", "name": "tempFloat32", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148002,7 +148561,7 @@ "ignore": true }, { - "__docId__": 7445, + "__docId__": 7464, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148023,7 +148582,7 @@ "ignore": true }, { - "__docId__": 7446, + "__docId__": 7465, "kind": "variable", "name": "tempVec3fa", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148044,7 +148603,7 @@ "ignore": true }, { - "__docId__": 7447, + "__docId__": 7466, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148065,7 +148624,7 @@ "ignore": true }, { - "__docId__": 7448, + "__docId__": 7467, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148086,7 +148645,7 @@ "ignore": true }, { - "__docId__": 7449, + "__docId__": 7468, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148107,7 +148666,7 @@ "ignore": true }, { - "__docId__": 7450, + "__docId__": 7469, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148128,7 +148687,7 @@ "ignore": true }, { - "__docId__": 7451, + "__docId__": 7470, "kind": "variable", "name": "tempVec3e", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148149,7 +148708,7 @@ "ignore": true }, { - "__docId__": 7452, + "__docId__": 7471, "kind": "variable", "name": "tempVec3f", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148170,7 +148729,7 @@ "ignore": true }, { - "__docId__": 7453, + "__docId__": 7472, "kind": "variable", "name": "tempVec3g", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148191,7 +148750,7 @@ "ignore": true }, { - "__docId__": 7454, + "__docId__": 7473, "kind": "variable", "name": "tempFloat32Vec4", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148212,7 +148771,7 @@ "ignore": true }, { - "__docId__": 7455, + "__docId__": 7474, "kind": "class", "name": "VBOInstancingTrianglesLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js", @@ -148228,7 +148787,7 @@ "ignore": true }, { - "__docId__": 7456, + "__docId__": 7475, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148303,7 +148862,7 @@ ] }, { - "__docId__": 7457, + "__docId__": 7476, "kind": "member", "name": "model", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148322,7 +148881,7 @@ } }, { - "__docId__": 7458, + "__docId__": 7477, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148341,7 +148900,7 @@ } }, { - "__docId__": 7459, + "__docId__": 7478, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148360,7 +148919,7 @@ } }, { - "__docId__": 7460, + "__docId__": 7479, "kind": "member", "name": "_renderers", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148378,7 +148937,7 @@ } }, { - "__docId__": 7461, + "__docId__": 7480, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148396,7 +148955,7 @@ } }, { - "__docId__": 7462, + "__docId__": 7481, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148414,7 +148973,7 @@ } }, { - "__docId__": 7463, + "__docId__": 7482, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148432,7 +148991,7 @@ } }, { - "__docId__": 7464, + "__docId__": 7483, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148450,7 +149009,7 @@ } }, { - "__docId__": 7465, + "__docId__": 7484, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148468,7 +149027,7 @@ } }, { - "__docId__": 7466, + "__docId__": 7485, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148486,7 +149045,7 @@ } }, { - "__docId__": 7467, + "__docId__": 7486, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148504,7 +149063,7 @@ } }, { - "__docId__": 7468, + "__docId__": 7487, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148522,7 +149081,7 @@ } }, { - "__docId__": 7469, + "__docId__": 7488, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148540,7 +149099,7 @@ } }, { - "__docId__": 7470, + "__docId__": 7489, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148558,7 +149117,7 @@ } }, { - "__docId__": 7471, + "__docId__": 7490, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148576,7 +149135,7 @@ } }, { - "__docId__": 7472, + "__docId__": 7491, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148594,7 +149153,7 @@ } }, { - "__docId__": 7473, + "__docId__": 7492, "kind": "member", "name": "numIndices", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148611,7 +149170,7 @@ } }, { - "__docId__": 7474, + "__docId__": 7493, "kind": "member", "name": "_colors", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148629,7 +149188,7 @@ } }, { - "__docId__": 7475, + "__docId__": 7494, "kind": "member", "name": "_metallicRoughness", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148647,7 +149206,7 @@ } }, { - "__docId__": 7476, + "__docId__": 7495, "kind": "member", "name": "_pickColors", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148665,7 +149224,7 @@ } }, { - "__docId__": 7477, + "__docId__": 7496, "kind": "member", "name": "_offsets", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148683,7 +149242,7 @@ } }, { - "__docId__": 7478, + "__docId__": 7497, "kind": "member", "name": "_modelMatrix", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148701,7 +149260,7 @@ } }, { - "__docId__": 7479, + "__docId__": 7498, "kind": "member", "name": "_modelMatrixCol0", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148719,7 +149278,7 @@ } }, { - "__docId__": 7480, + "__docId__": 7499, "kind": "member", "name": "_modelMatrixCol1", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148737,7 +149296,7 @@ } }, { - "__docId__": 7481, + "__docId__": 7500, "kind": "member", "name": "_modelMatrixCol2", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148755,7 +149314,7 @@ } }, { - "__docId__": 7482, + "__docId__": 7501, "kind": "member", "name": "_modelNormalMatrixCol0", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148773,7 +149332,7 @@ } }, { - "__docId__": 7483, + "__docId__": 7502, "kind": "member", "name": "_modelNormalMatrixCol1", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148791,7 +149350,7 @@ } }, { - "__docId__": 7484, + "__docId__": 7503, "kind": "member", "name": "_modelNormalMatrixCol2", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148809,7 +149368,7 @@ } }, { - "__docId__": 7485, + "__docId__": 7504, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148827,7 +149386,7 @@ } }, { - "__docId__": 7486, + "__docId__": 7505, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148845,7 +149404,7 @@ } }, { - "__docId__": 7488, + "__docId__": 7507, "kind": "member", "name": "aabbDirty", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148862,7 +149421,7 @@ } }, { - "__docId__": 7489, + "__docId__": 7508, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148880,7 +149439,7 @@ } }, { - "__docId__": 7490, + "__docId__": 7509, "kind": "member", "name": "solid", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148899,7 +149458,7 @@ } }, { - "__docId__": 7492, + "__docId__": 7511, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -148918,7 +149477,7 @@ } }, { - "__docId__": 7494, + "__docId__": 7513, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149037,7 +149596,7 @@ } }, { - "__docId__": 7495, + "__docId__": 7514, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149053,7 +149612,7 @@ "return": null }, { - "__docId__": 7506, + "__docId__": 7525, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149088,7 +149647,7 @@ "return": null }, { - "__docId__": 7507, + "__docId__": 7526, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149123,7 +149682,7 @@ "return": null }, { - "__docId__": 7508, + "__docId__": 7527, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149158,7 +149717,7 @@ "return": null }, { - "__docId__": 7509, + "__docId__": 7528, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149193,7 +149752,7 @@ "return": null }, { - "__docId__": 7510, + "__docId__": 7529, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149228,7 +149787,7 @@ "return": null }, { - "__docId__": 7511, + "__docId__": 7530, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149263,7 +149822,7 @@ "return": null }, { - "__docId__": 7512, + "__docId__": 7531, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149292,7 +149851,7 @@ "return": null }, { - "__docId__": 7513, + "__docId__": 7532, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149321,7 +149880,7 @@ "return": null }, { - "__docId__": 7514, + "__docId__": 7533, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149356,7 +149915,7 @@ "return": null }, { - "__docId__": 7515, + "__docId__": 7534, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149391,7 +149950,7 @@ "return": null }, { - "__docId__": 7516, + "__docId__": 7535, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149420,7 +149979,7 @@ "return": null }, { - "__docId__": 7517, + "__docId__": 7536, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149455,7 +150014,7 @@ "return": null }, { - "__docId__": 7518, + "__docId__": 7537, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149490,7 +150049,7 @@ "return": null }, { - "__docId__": 7519, + "__docId__": 7538, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149519,7 +150078,7 @@ "return": null }, { - "__docId__": 7520, + "__docId__": 7539, "kind": "method", "name": "getEachVertex", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149552,7 +150111,7 @@ } }, { - "__docId__": 7521, + "__docId__": 7540, "kind": "method", "name": "setMatrix", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149581,7 +150140,7 @@ "return": null }, { - "__docId__": 7522, + "__docId__": 7541, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149610,7 +150169,7 @@ "return": null }, { - "__docId__": 7523, + "__docId__": 7542, "kind": "method", "name": "_updateBackfaceCull", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149640,7 +150199,7 @@ "return": null }, { - "__docId__": 7524, + "__docId__": 7543, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149669,7 +150228,7 @@ "return": null }, { - "__docId__": 7525, + "__docId__": 7544, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149698,7 +150257,7 @@ "return": null }, { - "__docId__": 7526, + "__docId__": 7545, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149727,7 +150286,7 @@ "return": null }, { - "__docId__": 7527, + "__docId__": 7546, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149756,7 +150315,7 @@ "return": null }, { - "__docId__": 7528, + "__docId__": 7547, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149785,7 +150344,7 @@ "return": null }, { - "__docId__": 7529, + "__docId__": 7548, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149814,7 +150373,7 @@ "return": null }, { - "__docId__": 7530, + "__docId__": 7549, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149843,7 +150402,7 @@ "return": null }, { - "__docId__": 7531, + "__docId__": 7550, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149872,7 +150431,7 @@ "return": null }, { - "__docId__": 7532, + "__docId__": 7551, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149901,7 +150460,7 @@ "return": null }, { - "__docId__": 7533, + "__docId__": 7552, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149930,7 +150489,7 @@ "return": null }, { - "__docId__": 7534, + "__docId__": 7553, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149959,7 +150518,7 @@ "return": null }, { - "__docId__": 7535, + "__docId__": 7554, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -149988,7 +150547,7 @@ "return": null }, { - "__docId__": 7536, + "__docId__": 7555, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -150017,7 +150576,7 @@ "return": null }, { - "__docId__": 7537, + "__docId__": 7556, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -150046,7 +150605,7 @@ "return": null }, { - "__docId__": 7538, + "__docId__": 7557, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -150075,7 +150634,7 @@ "return": null }, { - "__docId__": 7539, + "__docId__": 7558, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -150104,7 +150663,7 @@ "return": null }, { - "__docId__": 7540, + "__docId__": 7559, "kind": "method", "name": "drawSnapInit", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -150133,7 +150692,7 @@ "return": null }, { - "__docId__": 7541, + "__docId__": 7560, "kind": "method", "name": "drawSnap", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -150162,7 +150721,7 @@ "return": null }, { - "__docId__": 7542, + "__docId__": 7561, "kind": "method", "name": "precisionRayPickSurface", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -150213,7 +150772,7 @@ } }, { - "__docId__": 7543, + "__docId__": 7562, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js~VBOInstancingTrianglesLayer", @@ -150229,7 +150788,7 @@ "return": null }, { - "__docId__": 7545, + "__docId__": 7564, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js", "content": "import {EdgesRenderer} from \"./EdgesRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class EdgesColorRenderer extends EdgesRenderer {\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n super.drawLayer(frameCtx, batchingLayer, renderPass, { colorUniform: false });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// EdgesColorRenderer vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // edgeFlag = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`int edgeFlag = int(flags) >> 8 & 0xF;`);\n src.push(`if (edgeFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n // src.push(\"vColor = vec4(float(color.r-100.0) / 255.0, float(color.g-100.0) / 255.0, float(color.b-100.0) / 255.0, float(color.a) / 255.0);\");\n src.push(\"vColor = vec4(float(color.r*0.5) / 255.0, float(color.g*0.5) / 255.0, float(color.b*0.5) / 255.0, float(color.a) / 255.0);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// EdgesColorRenderer fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n}", @@ -150240,7 +150799,7 @@ "lineNumber": 1 }, { - "__docId__": 7546, + "__docId__": 7565, "kind": "class", "name": "EdgesColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js", @@ -150259,7 +150818,7 @@ "ignore": true }, { - "__docId__": 7547, + "__docId__": 7566, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js~EdgesColorRenderer", @@ -150294,7 +150853,7 @@ "return": null }, { - "__docId__": 7548, + "__docId__": 7567, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js~EdgesColorRenderer", @@ -150315,7 +150874,7 @@ } }, { - "__docId__": 7549, + "__docId__": 7568, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js~EdgesColorRenderer", @@ -150336,7 +150895,7 @@ } }, { - "__docId__": 7550, + "__docId__": 7569, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js", "content": "import {EdgesRenderer} from \"./EdgesRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class EdgesEmphasisRenderer extends EdgesRenderer {\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n super.drawLayer(frameCtx, instancingLayer, renderPass, {colorUniform: true});\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// EdgesEmphasisRenderer vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"uniform vec4 color;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // edgeFlag = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`int edgeFlag = int(flags) >> 8 & 0xF;`);\n src.push(`if (edgeFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = worldMatrix * positionsDecodeMatrix * vec4(position, 1.0); \");\n\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vColor = vec4(color.r, color.g, color.b, color.a);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// EdgesEmphasisRenderer fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n}", @@ -150347,7 +150906,7 @@ "lineNumber": 1 }, { - "__docId__": 7551, + "__docId__": 7570, "kind": "class", "name": "EdgesEmphasisRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js", @@ -150366,7 +150925,7 @@ "ignore": true }, { - "__docId__": 7552, + "__docId__": 7571, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js~EdgesEmphasisRenderer", @@ -150401,7 +150960,7 @@ "return": null }, { - "__docId__": 7553, + "__docId__": 7572, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js~EdgesEmphasisRenderer", @@ -150422,7 +150981,7 @@ } }, { - "__docId__": 7554, + "__docId__": 7573, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js~EdgesEmphasisRenderer", @@ -150443,7 +151002,7 @@ } }, { - "__docId__": 7555, + "__docId__": 7574, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class EdgesRenderer extends TrianglesInstancingRenderer {\n constructor(scene, withSAO) {\n super(scene, withSAO, {instancing: true, edges: true});\n }\n}\n", @@ -150454,7 +151013,7 @@ "lineNumber": 1 }, { - "__docId__": 7556, + "__docId__": 7575, "kind": "class", "name": "EdgesRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js", @@ -150473,7 +151032,7 @@ "ignore": true }, { - "__docId__": 7557, + "__docId__": 7576, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js~EdgesRenderer", @@ -150487,7 +151046,7 @@ "undocument": true }, { - "__docId__": 7558, + "__docId__": 7577, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js", "content": "import {TrianglesColorRenderer} from \"./TrianglesColorRenderer.js\";\nimport {TrianglesFlatColorRenderer} from \"./TrianglesFlatColorRenderer.js\";\nimport {TrianglesSilhouetteRenderer} from \"./TrianglesSilhouetteRenderer.js\";\nimport {EdgesEmphasisRenderer} from \"./EdgesEmphasisRenderer.js\";\nimport {EdgesColorRenderer} from \"./EdgesColorRenderer.js\";\nimport {TrianglesPickMeshRenderer} from \"./TrianglesPickMeshRenderer.js\";\nimport {TrianglesPickDepthRenderer} from \"./TrianglesPickDepthRenderer.js\";\nimport {TrianglesPickNormalsRenderer} from \"./TrianglesPickNormalsRenderer.js\";\nimport {TrianglesOcclusionRenderer} from \"./TrianglesOcclusionRenderer.js\";\nimport {TrianglesDepthRenderer} from \"./TrianglesDepthRenderer.js\";\nimport {TrianglesNormalsRenderer} from \"./TrianglesNormalsRenderer.js\";\nimport {TrianglesShadowRenderer} from \"./TrianglesShadowRenderer.js\";\nimport {TrianglesPBRRenderer} from \"./TrianglesPBRRenderer.js\";\nimport {TrianglesPickNormalsFlatRenderer} from \"./TrianglesPickNormalsFlatRenderer.js\";\nimport {TrianglesColorTextureRenderer} from \"./TrianglesColorTextureRenderer.js\";\nimport {TrianglesSnapInitRenderer} from \"./TrianglesSnapInitRenderer.js\";\nimport {TrianglesSnapRenderer} from \"./TrianglesSnapRenderer.js\";\n\n/**\n * @private\n */\nclass Renderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._colorRendererWithSAO && (!this._colorRendererWithSAO.getValid())) {\n this._colorRendererWithSAO.destroy();\n this._colorRendererWithSAO = null;\n }\n if (this._flatColorRenderer && (!this._flatColorRenderer.getValid())) {\n this._flatColorRenderer.destroy();\n this._flatColorRenderer = null;\n }\n if (this._flatColorRendererWithSAO && (!this._flatColorRendererWithSAO.getValid())) {\n this._flatColorRendererWithSAO.destroy();\n this._flatColorRendererWithSAO = null;\n }\n if (this._pbrRenderer && (!this._pbrRenderer.getValid())) {\n this._pbrRenderer.destroy();\n this._pbrRenderer = null;\n }\n if (this._pbrRendererWithSAO && (!this._pbrRendererWithSAO.getValid())) {\n this._pbrRendererWithSAO.destroy();\n this._pbrRendererWithSAO = null;\n }\n if (this._colorTextureRenderer && (!this._colorTextureRenderer.getValid())) {\n this._colorTextureRenderer.destroy();\n this._colorTextureRenderer = null;\n }\n if (this._colorTextureRendererWithSAO && (!this._colorTextureRendererWithSAO.getValid())) {\n this._colorTextureRendererWithSAO.destroy();\n this._colorTextureRendererWithSAO = null;\n }\n if (this._depthRenderer && (!this._depthRenderer.getValid())) {\n this._depthRenderer.destroy();\n this._depthRenderer = null;\n }\n if (this._normalsRenderer && (!this._normalsRenderer.getValid())) {\n this._normalsRenderer.destroy();\n this._normalsRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._edgesRenderer && (!this._edgesRenderer.getValid())) {\n this._edgesRenderer.destroy();\n this._edgesRenderer = null;\n }\n if (this._edgesColorRenderer && (!this._edgesColorRenderer.getValid())) {\n this._edgesColorRenderer.destroy();\n this._edgesColorRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._pickNormalsRenderer && this._pickNormalsRenderer.getValid() === false) {\n this._pickNormalsRenderer.destroy();\n this._pickNormalsRenderer = null;\n }\n if (this._pickNormalsFlatRenderer && (!this._pickNormalsFlatRenderer.getValid())) {\n this._pickNormalsFlatRenderer.destroy();\n this._pickNormalsFlatRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n if (this._shadowRenderer && (!this._shadowRenderer.getValid())) {\n this._shadowRenderer.destroy();\n this._shadowRenderer = null;\n }\n if (this._snapInitRenderer && (!this._snapInitRenderer.getValid())) {\n this._snapInitRenderer.destroy();\n this._snapInitRenderer = null;\n }\n if (this._snapRenderer && (!this._snapRenderer.getValid())) {\n this._snapRenderer.destroy();\n this._snapRenderer = null;\n }\n }\n\n eagerCreateRenders() {\n\n // Pre-initialize certain renderers that would otherwise be lazy-initialised\n // on user interaction, such as picking or emphasis, so that there is no delay\n // when user first begins interacting with the viewer.\n\n if (!this._silhouetteRenderer) { // Used for highlighting and selection\n this._silhouetteRenderer = new TrianglesSilhouetteRenderer(this._scene);\n }\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new TrianglesPickMeshRenderer(this._scene);\n }\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new TrianglesPickDepthRenderer(this._scene);\n }\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new TrianglesSnapInitRenderer(this._scene, false);\n }\n if (!this._snapRenderer) {\n this._snapRenderer = new TrianglesSnapRenderer(this._scene);\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new TrianglesColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get colorRendererWithSAO() {\n if (!this._colorRendererWithSAO) {\n this._colorRendererWithSAO = new TrianglesColorRenderer(this._scene, true);\n }\n return this._colorRendererWithSAO;\n }\n\n get flatColorRenderer() {\n if (!this._flatColorRenderer) {\n this._flatColorRenderer = new TrianglesFlatColorRenderer(this._scene, false);\n }\n return this._flatColorRenderer;\n }\n\n get flatColorRendererWithSAO() {\n if (!this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO = new TrianglesFlatColorRenderer(this._scene, true);\n }\n return this._flatColorRendererWithSAO;\n }\n\n get pbrRenderer() {\n if (!this._pbrRenderer) {\n this._pbrRenderer = new TrianglesPBRRenderer(this._scene, false);\n }\n return this._pbrRenderer;\n }\n\n get pbrRendererWithSAO() {\n if (!this._pbrRendererWithSAO) {\n this._pbrRendererWithSAO = new TrianglesPBRRenderer(this._scene, true);\n }\n return this._pbrRendererWithSAO;\n }\n\n get colorTextureRenderer() {\n if (!this._colorTextureRenderer) {\n this._colorTextureRenderer = new TrianglesColorTextureRenderer(this._scene, false);\n }\n return this._colorTextureRenderer;\n }\n\n get colorTextureRendererWithSAO() {\n if (!this._colorTextureRendererWithSAO) {\n this._colorTextureRendererWithSAO = new TrianglesColorTextureRenderer(this._scene, true);\n }\n return this._colorTextureRendererWithSAO;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new TrianglesSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new TrianglesDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get normalsRenderer() {\n if (!this._normalsRenderer) {\n this._normalsRenderer = new TrianglesNormalsRenderer(this._scene);\n }\n return this._normalsRenderer;\n }\n\n get edgesRenderer() {\n if (!this._edgesRenderer) {\n this._edgesRenderer = new EdgesEmphasisRenderer(this._scene);\n }\n return this._edgesRenderer;\n }\n\n get edgesColorRenderer() {\n if (!this._edgesColorRenderer) {\n this._edgesColorRenderer = new EdgesColorRenderer(this._scene);\n }\n return this._edgesColorRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new TrianglesPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickNormalsRenderer() {\n if (!this._pickNormalsRenderer) {\n this._pickNormalsRenderer = new TrianglesPickNormalsRenderer(this._scene);\n }\n return this._pickNormalsRenderer;\n }\n\n get pickNormalsFlatRenderer() {\n if (!this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer = new TrianglesPickNormalsFlatRenderer(this._scene);\n }\n return this._pickNormalsFlatRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new TrianglesPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new TrianglesOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new TrianglesShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\n }\n\n get snapInitRenderer() {\n if (!this._snapInitRenderer) {\n this._snapInitRenderer = new TrianglesSnapInitRenderer(this._scene, false);\n }\n return this._snapInitRenderer;\n }\n\n get snapRenderer() {\n if (!this._snapRenderer) {\n this._snapRenderer = new TrianglesSnapRenderer(this._scene);\n }\n return this._snapRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._colorRendererWithSAO) {\n this._colorRendererWithSAO.destroy();\n }\n if (this._flatColorRenderer) {\n this._flatColorRenderer.destroy();\n }\n if (this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO.destroy();\n }\n if (this._pbrRenderer) {\n this._pbrRenderer.destroy();\n }\n if (this._pbrRendererWithSAO) {\n this._pbrRendererWithSAO.destroy();\n }\n if (this._colorTextureRenderer) {\n this._colorTextureRenderer.destroy();\n }\n if (this._colorTextureRendererWithSAO) {\n this._colorTextureRendererWithSAO.destroy();\n }\n if (this._depthRenderer) {\n this._depthRenderer.destroy();\n }\n if (this._normalsRenderer) {\n this._normalsRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._edgesRenderer) {\n this._edgesRenderer.destroy();\n }\n if (this._edgesColorRenderer) {\n this._edgesColorRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._pickNormalsRenderer) {\n this._pickNormalsRenderer.destroy();\n }\n if (this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.destroy();\n }\n if (this._snapInitRenderer) {\n this._snapInitRenderer.destroy();\n }\n if (this._snapRenderer) {\n this._snapRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\n/**\n * @private\n */\nexport function getRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new Renderers(scene);\n cachedRenderers[sceneId] = instancingRenderers;\n instancingRenderers._compile();\n instancingRenderers.eagerCreateRenders();\n scene.on(\"compile\", () => {\n instancingRenderers._compile();\n instancingRenderers.eagerCreateRenders();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers[sceneId];\n instancingRenderers._destroy();\n });\n }\n return instancingRenderers;\n}\n\n", @@ -150498,7 +151057,7 @@ "lineNumber": 1 }, { - "__docId__": 7559, + "__docId__": 7578, "kind": "class", "name": "Renderers", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js", @@ -150514,7 +151073,7 @@ "ignore": true }, { - "__docId__": 7560, + "__docId__": 7579, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150528,7 +151087,7 @@ "undocument": true }, { - "__docId__": 7561, + "__docId__": 7580, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150546,7 +151105,7 @@ } }, { - "__docId__": 7562, + "__docId__": 7581, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150563,7 +151122,7 @@ "return": null }, { - "__docId__": 7563, + "__docId__": 7582, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150581,7 +151140,7 @@ } }, { - "__docId__": 7564, + "__docId__": 7583, "kind": "member", "name": "_colorRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150599,7 +151158,7 @@ } }, { - "__docId__": 7565, + "__docId__": 7584, "kind": "member", "name": "_flatColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150617,7 +151176,7 @@ } }, { - "__docId__": 7566, + "__docId__": 7585, "kind": "member", "name": "_flatColorRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150635,7 +151194,7 @@ } }, { - "__docId__": 7567, + "__docId__": 7586, "kind": "member", "name": "_pbrRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150653,7 +151212,7 @@ } }, { - "__docId__": 7568, + "__docId__": 7587, "kind": "member", "name": "_pbrRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150671,7 +151230,7 @@ } }, { - "__docId__": 7569, + "__docId__": 7588, "kind": "member", "name": "_colorTextureRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150689,7 +151248,7 @@ } }, { - "__docId__": 7570, + "__docId__": 7589, "kind": "member", "name": "_colorTextureRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150707,7 +151266,7 @@ } }, { - "__docId__": 7571, + "__docId__": 7590, "kind": "member", "name": "_depthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150725,7 +151284,7 @@ } }, { - "__docId__": 7572, + "__docId__": 7591, "kind": "member", "name": "_normalsRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150743,7 +151302,7 @@ } }, { - "__docId__": 7573, + "__docId__": 7592, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150761,7 +151320,7 @@ } }, { - "__docId__": 7574, + "__docId__": 7593, "kind": "member", "name": "_edgesRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150779,7 +151338,7 @@ } }, { - "__docId__": 7575, + "__docId__": 7594, "kind": "member", "name": "_edgesColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150797,7 +151356,7 @@ } }, { - "__docId__": 7576, + "__docId__": 7595, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150815,7 +151374,7 @@ } }, { - "__docId__": 7577, + "__docId__": 7596, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150833,7 +151392,7 @@ } }, { - "__docId__": 7578, + "__docId__": 7597, "kind": "member", "name": "_pickNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150851,7 +151410,7 @@ } }, { - "__docId__": 7579, + "__docId__": 7598, "kind": "member", "name": "_pickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150869,7 +151428,7 @@ } }, { - "__docId__": 7580, + "__docId__": 7599, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150887,7 +151446,7 @@ } }, { - "__docId__": 7581, + "__docId__": 7600, "kind": "member", "name": "_shadowRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150905,7 +151464,7 @@ } }, { - "__docId__": 7582, + "__docId__": 7601, "kind": "member", "name": "_snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150923,7 +151482,7 @@ } }, { - "__docId__": 7583, + "__docId__": 7602, "kind": "member", "name": "_snapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150941,7 +151500,7 @@ } }, { - "__docId__": 7584, + "__docId__": 7603, "kind": "method", "name": "eagerCreateRenders", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150957,7 +151516,7 @@ "return": null }, { - "__docId__": 7590, + "__docId__": 7609, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150976,7 +151535,7 @@ } }, { - "__docId__": 7592, + "__docId__": 7611, "kind": "get", "name": "colorRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -150995,7 +151554,7 @@ } }, { - "__docId__": 7594, + "__docId__": 7613, "kind": "get", "name": "flatColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151014,7 +151573,7 @@ } }, { - "__docId__": 7596, + "__docId__": 7615, "kind": "get", "name": "flatColorRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151033,7 +151592,7 @@ } }, { - "__docId__": 7598, + "__docId__": 7617, "kind": "get", "name": "pbrRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151052,7 +151611,7 @@ } }, { - "__docId__": 7600, + "__docId__": 7619, "kind": "get", "name": "pbrRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151071,7 +151630,7 @@ } }, { - "__docId__": 7602, + "__docId__": 7621, "kind": "get", "name": "colorTextureRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151090,7 +151649,7 @@ } }, { - "__docId__": 7604, + "__docId__": 7623, "kind": "get", "name": "colorTextureRendererWithSAO", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151109,7 +151668,7 @@ } }, { - "__docId__": 7606, + "__docId__": 7625, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151128,7 +151687,7 @@ } }, { - "__docId__": 7608, + "__docId__": 7627, "kind": "get", "name": "depthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151147,7 +151706,7 @@ } }, { - "__docId__": 7610, + "__docId__": 7629, "kind": "get", "name": "normalsRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151166,7 +151725,7 @@ } }, { - "__docId__": 7612, + "__docId__": 7631, "kind": "get", "name": "edgesRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151185,7 +151744,7 @@ } }, { - "__docId__": 7614, + "__docId__": 7633, "kind": "get", "name": "edgesColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151204,7 +151763,7 @@ } }, { - "__docId__": 7616, + "__docId__": 7635, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151223,7 +151782,7 @@ } }, { - "__docId__": 7618, + "__docId__": 7637, "kind": "get", "name": "pickNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151242,7 +151801,7 @@ } }, { - "__docId__": 7620, + "__docId__": 7639, "kind": "get", "name": "pickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151261,7 +151820,7 @@ } }, { - "__docId__": 7622, + "__docId__": 7641, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151280,7 +151839,7 @@ } }, { - "__docId__": 7624, + "__docId__": 7643, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151299,7 +151858,7 @@ } }, { - "__docId__": 7626, + "__docId__": 7645, "kind": "get", "name": "shadowRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151318,7 +151877,7 @@ } }, { - "__docId__": 7628, + "__docId__": 7647, "kind": "get", "name": "snapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151337,7 +151896,7 @@ } }, { - "__docId__": 7630, + "__docId__": 7649, "kind": "get", "name": "snapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151356,7 +151915,7 @@ } }, { - "__docId__": 7632, + "__docId__": 7651, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js~Renderers", @@ -151373,7 +151932,7 @@ "return": null }, { - "__docId__": 7633, + "__docId__": 7652, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js", @@ -151394,7 +151953,7 @@ "ignore": true }, { - "__docId__": 7634, + "__docId__": 7653, "kind": "function", "name": "getRenderers", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js", @@ -151424,7 +151983,7 @@ } }, { - "__docId__": 7635, + "__docId__": 7654, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\nclass TrianglesColorRenderer extends TrianglesInstancingRenderer {\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, { incrementDrawState: true });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n let i;\n let len;\n let light;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry drawing vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec2 normal;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n src.push(\"in vec4 modelNormalMatrixCol0;\");\n src.push(\"in vec4 modelNormalMatrixCol1;\");\n src.push(\"in vec4 modelNormalMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src, true);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \");\n src.push(\"vec4 worldNormal = worldNormalMatrix * vec4(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2), 0.0);\");\n src.push(\"vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);\");\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec3 rgb = (vec3(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0));\");\n src.push(\"vColor = vec4((lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedColor * rgb), float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry drawing fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n src.push(\"uniform float sliceThickness;\");\n src.push(\"uniform vec4 sliceColor;\");\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n src.push(\" vec4 newColor;\");\n src.push(\" newColor = vColor;\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > sliceThickness) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" newColor = sliceColor;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n\n if (this._withSAO) {\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" outColor = vec4(newColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" outColor = newColor;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n\nexport {TrianglesColorRenderer};", @@ -151435,7 +151994,7 @@ "lineNumber": 1 }, { - "__docId__": 7636, + "__docId__": 7655, "kind": "class", "name": "TrianglesColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js", @@ -151454,7 +152013,7 @@ "ignore": true }, { - "__docId__": 7637, + "__docId__": 7656, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js~TrianglesColorRenderer", @@ -151475,7 +152034,7 @@ } }, { - "__docId__": 7638, + "__docId__": 7657, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js~TrianglesColorRenderer", @@ -151510,7 +152069,7 @@ "return": null }, { - "__docId__": 7639, + "__docId__": 7658, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js~TrianglesColorRenderer", @@ -151531,7 +152090,7 @@ } }, { - "__docId__": 7640, + "__docId__": 7659, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js~TrianglesColorRenderer", @@ -151552,7 +152111,7 @@ } }, { - "__docId__": 7641, + "__docId__": 7660, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {\n _getHash() {\n const scene = this._scene;\n return [scene.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, { incrementDrawState: true });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry drawing vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"in vec2 uv;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform mat3 uvDecodeMatrix;\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"out vec4 vColor;\");\n src.push(\"out vec2 vUV;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n src.push(\"vUV = (uvDecodeMatrix * vec3(uv, 1.0)).xy;\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n let i;\n let len;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry drawing fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform sampler2D uColorMap;\");\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToLinear( in vec4 value ) {\");\n src.push(\" return value;\");\n src.push(\"}\");\n src.push(\"vec4 sRGBToLinear( in vec4 value ) {\");\n src.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\");\n src.push(\"}\");\n src.push(\"vec4 gammaToLinear( in vec4 value) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\");\n src.push(\"}\");\n if (gammaOutput) {\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n src.push(\"uniform float sliceThickness;\");\n src.push(\"uniform vec4 sliceColor;\");\n }\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec4 lightAmbient;\");\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"in vec4 vColor;\");\n src.push(\"in vec2 vUV;\");\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n src.push(\" vec4 newColor;\");\n src.push(\" newColor = vColor;\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > sliceThickness) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" newColor = sliceColor;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n\n src.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\");\n src.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\");\n\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec4 color = vec4((lightAmbient.rgb * lightAmbient.a * newColor.rgb) + (reflectedColor * newColor.rgb), newColor.a);\");\n if (gammaOutput) {\n src.push(\"vec4 colorTexel = color * sRGBToLinear(texture(uColorMap, vUV));\");\n } else {\n src.push(\"vec4 colorTexel = color * texture(uColorMap, vUV);\");\n }\n src.push(\"float opacity = color.a;\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" outColor = vec4(newColor.rgb * colorTexel.rgb * ambient, opacity);\");\n } else {\n src.push(\" outColor = vec4(newColor.rgb * colorTexel.rgb, opacity);\");\n }\n\n if (gammaOutput) {\n src.push(\"outColor = linearToGamma(outColor, gammaFactor);\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n}", @@ -151563,7 +152122,7 @@ "lineNumber": 1 }, { - "__docId__": 7642, + "__docId__": 7661, "kind": "class", "name": "TrianglesColorTextureRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js", @@ -151582,7 +152141,7 @@ "ignore": true }, { - "__docId__": 7643, + "__docId__": 7662, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js~TrianglesColorTextureRenderer", @@ -151603,7 +152162,7 @@ } }, { - "__docId__": 7644, + "__docId__": 7663, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js~TrianglesColorTextureRenderer", @@ -151638,7 +152197,7 @@ "return": null }, { - "__docId__": 7645, + "__docId__": 7664, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js~TrianglesColorTextureRenderer", @@ -151659,7 +152218,7 @@ } }, { - "__docId__": 7646, + "__docId__": 7665, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js~TrianglesColorTextureRenderer", @@ -151680,7 +152239,7 @@ } }, { - "__docId__": 7647, + "__docId__": 7666, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class TrianglesDepthRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry depth drawing vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\");\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec2 vHighPrecisionZW;\");\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vHighPrecisionZW = gl_Position.zw;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry depth drawing fragment shader\");\n\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec2 vHighPrecisionZW;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\");\n src.push(\" outColor = vec4(vec3(1.0 - fragCoordZ), 1.0); \");\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -151691,7 +152250,7 @@ "lineNumber": 1 }, { - "__docId__": 7648, + "__docId__": 7667, "kind": "class", "name": "TrianglesDepthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js", @@ -151710,7 +152269,7 @@ "ignore": true }, { - "__docId__": 7649, + "__docId__": 7668, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js~TrianglesDepthRenderer", @@ -151731,7 +152290,7 @@ } }, { - "__docId__": 7650, + "__docId__": 7669, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js~TrianglesDepthRenderer", @@ -151752,7 +152311,7 @@ } }, { - "__docId__": 7651, + "__docId__": 7670, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\n\n\nexport class TrianglesFlatColorRenderer extends TrianglesInstancingRenderer {\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry flat-shading drawing vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n let i;\n let len;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry flat-shading drawing fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n src.push(\"uniform float sliceThickness;\");\n src.push(\"uniform vec4 sliceColor;\");\n }\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n src.push(\" vec4 newColor;\");\n src.push(\" newColor = vColor;\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > sliceThickness) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" newColor = sliceColor;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n\n src.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\");\n src.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\");\n\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec4 fragColor = vec4((lightAmbient.rgb * lightAmbient.a * newColor.rgb) + (reflectedColor * newColor.rgb), newColor.a);\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" outColor = vec4(fragColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" outColor = fragColor;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n}", @@ -151763,7 +152322,7 @@ "lineNumber": 1 }, { - "__docId__": 7652, + "__docId__": 7671, "kind": "class", "name": "TrianglesFlatColorRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js", @@ -151782,7 +152341,7 @@ "ignore": true }, { - "__docId__": 7653, + "__docId__": 7672, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js~TrianglesFlatColorRenderer", @@ -151803,7 +152362,7 @@ } }, { - "__docId__": 7654, + "__docId__": 7673, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js~TrianglesFlatColorRenderer", @@ -151824,7 +152383,7 @@ } }, { - "__docId__": 7655, + "__docId__": 7674, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js~TrianglesFlatColorRenderer", @@ -151845,7 +152404,7 @@ } }, { - "__docId__": 7656, + "__docId__": 7675, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n\n/**\n * @private\n */\n\nexport class TrianglesFlatNormalsRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry flat normals drawing vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\");\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry flat nornals drawing fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vViewPosition;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\");\n src.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(\" outColor = vec4(packNormalToRGB(viewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n}\n", @@ -151856,7 +152415,7 @@ "lineNumber": 1 }, { - "__docId__": 7657, + "__docId__": 7676, "kind": "class", "name": "TrianglesFlatNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js", @@ -151875,7 +152434,7 @@ "ignore": true }, { - "__docId__": 7658, + "__docId__": 7677, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js~TrianglesFlatNormalsRenderer", @@ -151896,7 +152455,7 @@ } }, { - "__docId__": 7659, + "__docId__": 7678, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js~TrianglesFlatNormalsRenderer", @@ -151917,7 +152476,7 @@ } }, { - "__docId__": 7660, + "__docId__": 7679, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js", "content": "import {VBORenderer} from \"./../../../VBORenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesInstancingRenderer extends VBORenderer {\n constructor(scene, withSAO, {edges = false} = {}) {\n super(scene, withSAO, {instancing: true, edges});\n }\n\n _draw(drawCfg) {\n const {gl} = this._scene.canvas;\n\n const {\n state,\n frameCtx,\n incrementDrawState,\n } = drawCfg;\n\n if (this._edges) {\n gl.drawElementsInstanced(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);\n } else {\n gl.drawElementsInstanced(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n if (incrementDrawState) {\n frameCtx.drawElements++;\n }\n }\n }\n}", @@ -151928,7 +152487,7 @@ "lineNumber": 1 }, { - "__docId__": 7661, + "__docId__": 7680, "kind": "class", "name": "TrianglesInstancingRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js", @@ -151947,7 +152506,7 @@ "ignore": true }, { - "__docId__": 7662, + "__docId__": 7681, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js~TrianglesInstancingRenderer", @@ -151961,7 +152520,7 @@ "undocument": true }, { - "__docId__": 7663, + "__docId__": 7682, "kind": "method", "name": "_draw", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js~TrianglesInstancingRenderer", @@ -151985,7 +152544,7 @@ "return": null }, { - "__docId__": 7664, + "__docId__": 7683, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesNormalsRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry normals drawing vertex shader\");\n \n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec3 normal;\");\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\");\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src, true);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec3 vViewNormal;\");\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n src.push(\" vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\" vViewNormal = viewNormal;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry depth drawing fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n}\n", @@ -151996,7 +152555,7 @@ "lineNumber": 1 }, { - "__docId__": 7665, + "__docId__": 7684, "kind": "class", "name": "TrianglesNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js", @@ -152015,7 +152574,7 @@ "ignore": true }, { - "__docId__": 7666, + "__docId__": 7685, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js~TrianglesNormalsRenderer", @@ -152036,7 +152595,7 @@ } }, { - "__docId__": 7667, + "__docId__": 7686, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js~TrianglesNormalsRenderer", @@ -152057,7 +152616,7 @@ } }, { - "__docId__": 7668, + "__docId__": 7687, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n// Logarithmic depth buffer involves an accuracy tradeoff, sacrificing\n// accuracy at close range to improve accuracy at long range. This can\n// mess up accuracy for occlusion tests, so we'll disable for now.\n\nconst ENABLE_LOG_DEPTH_BUF = false;\n\n/**\n * @private\n */\nexport class TrianglesOcclusionRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// TrianglesInstancingOcclusionRenderer vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// TrianglesInstancingOcclusionRenderer fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" outColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n if (ENABLE_LOG_DEPTH_BUF && scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n}\n", @@ -152068,7 +152627,7 @@ "lineNumber": 1 }, { - "__docId__": 7669, + "__docId__": 7688, "kind": "variable", "name": "ENABLE_LOG_DEPTH_BUF", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js", @@ -152089,7 +152648,7 @@ "ignore": true }, { - "__docId__": 7670, + "__docId__": 7689, "kind": "class", "name": "TrianglesOcclusionRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js", @@ -152108,7 +152667,7 @@ "ignore": true }, { - "__docId__": 7671, + "__docId__": 7690, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js~TrianglesOcclusionRenderer", @@ -152129,7 +152688,7 @@ } }, { - "__docId__": 7672, + "__docId__": 7691, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js~TrianglesOcclusionRenderer", @@ -152150,7 +152709,7 @@ } }, { - "__docId__": 7673, + "__docId__": 7692, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js", "content": "import {LinearEncoding, sRGBEncoding} from \"../../../../../constants/constants.js\";\nimport {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\nconst TEXTURE_DECODE_FUNCS = {};\nTEXTURE_DECODE_FUNCS[LinearEncoding] = \"linearToLinear\";\nTEXTURE_DECODE_FUNCS[sRGBEncoding] = \"sRGBToLinear\";\n\n/**\n * @private\n */\nexport class TrianglesPBRRenderer extends TrianglesInstancingRenderer {\n _getHash() {\n const scene = this._scene;\n return [scene.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, layer, renderPass) {\n super.drawLayer(frameCtx, layer, renderPass, { incrementDrawState: true });\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry quality drawing vertex shader\");\n\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n src.push(\"in vec3 normal;\");\n src.push(\"in vec4 color;\");\n src.push(\"in vec2 uv;\");\n src.push(\"in vec2 metallicRoughness;\");\n src.push(\"in float flags;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n src.push(\"in vec4 modelNormalMatrixCol0;\");\n src.push(\"in vec4 modelNormalMatrixCol1;\");\n src.push(\"in vec4 modelNormalMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src, true);\n\n src.push(\"uniform mat3 uvDecodeMatrix;\")\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"out vec3 vViewNormal;\");\n src.push(\"out vec4 vColor;\");\n src.push(\"out vec2 vUV;\");\n src.push(\"out vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"out vec3 vWorldNormal;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n if (clippingCaps) {\n src.push(\"out vec4 vClipPosition;\");\n }\n }\n\n src.push(\"void main(void) {\");\n\n // colorFlag = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(`if (colorFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \");\n src.push(\"vec4 worldNormal = worldNormalMatrix * vec4(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2), 1.0);\");\n src.push(\"vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n if (clippingCaps) {\n src.push(\"vClipPosition = clipPos;\");\n }\n }\n\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vViewNormal = viewNormal;\");\n src.push(\"vColor = color;\");\n src.push(\"vUV = (uvDecodeMatrix * vec3(uv, 1.0)).xy;\");\n src.push(\"vMetallicRoughness = metallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"vWorldNormal = worldNormal.xyz;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry quality drawing fragment shader\");\n\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n src.push(\"uniform sampler2D uColorMap;\");\n src.push(\"uniform sampler2D uMetallicRoughMap;\");\n src.push(\"uniform sampler2D uEmissiveMap;\");\n src.push(\"uniform sampler2D uNormalMap;\");\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"uniform samplerCube reflectionMap;\");\n }\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"uniform samplerCube lightMap;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToLinear( in vec4 value ) {\");\n src.push(\" return value;\");\n src.push(\"}\");\n src.push(\"vec4 sRGBToLinear( in vec4 value ) {\");\n src.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\");\n src.push(\"}\");\n src.push(\"vec4 gammaToLinear( in vec4 value) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\");\n src.push(\"}\");\n if (gammaOutput) {\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n if (clippingCaps) {\n src.push(\"in vec4 vClipPosition;\");\n }\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"in vec3 vViewNormal;\");\n src.push(\"in vec4 vColor;\");\n src.push(\"in vec2 vUV;\");\n src.push(\"in vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"in vec3 vWorldNormal;\");\n }\n\n this._addMatricesUniformBlockLines(src, true);\n\n // CONSTANT DEFINITIONS\n\n src.push(\"#define PI 3.14159265359\");\n src.push(\"#define RECIPROCAL_PI 0.31830988618\");\n src.push(\"#define RECIPROCAL_PI2 0.15915494\");\n src.push(\"#define EPSILON 1e-6\");\n\n src.push(\"#define saturate(a) clamp( a, 0.0, 1.0 )\");\n\n // UTILITY DEFINITIONS\n\n src.push(\"vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\");\n src.push(\" vec3 texel = texture( uNormalMap, uv ).xyz;\");\n src.push(\" if (texel.r == 0.0 && texel.g == 0.0 && texel.b == 0.0) {\");\n src.push(\" return normalize(surf_norm );\");\n src.push(\" }\");\n src.push(\" vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\");\n src.push(\" vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\");\n src.push(\" vec2 st0 = dFdx( uv.st );\");\n src.push(\" vec2 st1 = dFdy( uv.st );\");\n src.push(\" vec3 S = normalize( q0 * st1.t - q1 * st0.t );\");\n src.push(\" vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\");\n src.push(\" vec3 N = normalize( surf_norm );\");\n src.push(\" vec3 mapN = texel.xyz * 2.0 - 1.0;\");\n src.push(\" mat3 tsn = mat3( S, T, N );\");\n // src.push(\" mapN *= 3.0;\");\n src.push(\" return normalize( tsn * mapN );\");\n src.push(\"}\");\n\n src.push(\"vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {\");\n src.push(\" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\");\n src.push(\"}\");\n\n // STRUCTURES\n\n src.push(\"struct IncidentLight {\");\n src.push(\" vec3 color;\");\n src.push(\" vec3 direction;\");\n src.push(\"};\");\n\n src.push(\"struct ReflectedLight {\");\n src.push(\" vec3 diffuse;\");\n src.push(\" vec3 specular;\");\n src.push(\"};\");\n\n src.push(\"struct Geometry {\");\n src.push(\" vec3 position;\");\n src.push(\" vec3 viewNormal;\");\n src.push(\" vec3 worldNormal;\");\n src.push(\" vec3 viewEyeDir;\");\n src.push(\"};\");\n\n src.push(\"struct Material {\");\n src.push(\" vec3 diffuseColor;\");\n src.push(\" float specularRoughness;\");\n src.push(\" vec3 specularColor;\");\n src.push(\" float shine;\"); // Only used for Phong\n src.push(\"};\");\n\n // IRRADIANCE EVALUATION\n\n src.push(\"float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {\");\n src.push(\" float r = ggxRoughness + 0.0001;\");\n src.push(\" return (2.0 / (r * r) - 2.0);\");\n src.push(\"}\");\n\n src.push(\"float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float maxMIPLevelScalar = float( maxMIPLevel );\");\n src.push(\" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );\");\n src.push(\" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\");\n src.push(\"}\");\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"); //TODO: a random factor - fix this\n src.push(\" vec3 envMapColor = \" + TEXTURE_DECODE_FUNCS[lightsState.reflectionMaps[0].encoding] + \"(texture(reflectionMap, reflectVec, mipLevel)).rgb;\");\n src.push(\" return envMapColor;\");\n src.push(\"}\");\n }\n\n // SPECULAR BRDF EVALUATION\n\n src.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\");\n src.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\");\n src.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" return 1.0 / ( gl * gv );\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" return 0.5 / max( gv + gl, EPSILON );\");\n src.push(\"}\");\n\n src.push(\"float D_GGX(const in float alpha, const in float dotNH) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\");\n src.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float alpha = ( roughness * roughness );\");\n src.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\");\n src.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\");\n src.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\");\n src.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\");\n src.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\");\n src.push(\" vec3 F = F_Schlick( specularColor, dotLH );\");\n src.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\");\n src.push(\" float D = D_GGX( alpha, dotNH );\");\n src.push(\" return F * (G * D);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\");\n src.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\");\n src.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\");\n src.push(\" vec4 r = roughness * c0 + c1;\");\n src.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\");\n src.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\");\n src.push(\" return specularColor * AB.x + AB.y;\");\n src.push(\"}\");\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n\n src.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\" vec3 irradiance = \" + TEXTURE_DECODE_FUNCS[lightsState.lightMaps[0].encoding] + \"(texture(lightMap, geometry.worldNormal)).rgb;\");\n src.push(\" irradiance *= PI;\");\n src.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\");\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\");\n src.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\");\n src.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\");\n src.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\");\n src.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\");\n src.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\");\n }\n\n src.push(\"}\");\n }\n\n // MAIN LIGHTING COMPUTATION FUNCTION\n\n src.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n src.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\");\n src.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\");\n src.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\");\n src.push(\"}\");\n\n src.push(\"out vec4 outColor;\");\n\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n if (clippingCaps) {\n src.push(\" if (dist > (0.002 * vClipPosition.w)) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" outColor=vec4(1.0, 0.0, 0.0, 1.0);\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" return;\");\n src.push(\"}\");\n } else {\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n }\n src.push(\"}\");\n }\n\n src.push(\"IncidentLight light;\");\n src.push(\"Material material;\");\n src.push(\"Geometry geometry;\");\n src.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\");\n\n src.push(\"vec3 rgb = (vec3(float(vColor.r) / 255.0, float(vColor.g) / 255.0, float(vColor.b) / 255.0));\");\n src.push(\"float opacity = float(vColor.a) / 255.0;\");\n\n src.push(\"vec3 baseColor = rgb;\");\n src.push(\"float specularF0 = 1.0;\");\n src.push(\"float metallic = float(vMetallicRoughness.r) / 255.0;\");\n src.push(\"float roughness = float(vMetallicRoughness.g) / 255.0;\");\n src.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\");\n\n src.push(\"vec4 colorTexel = sRGBToLinear(texture(uColorMap, vUV));\");\n src.push(\"baseColor *= colorTexel.rgb;\");\n // src.push(\"opacity = colorTexel.a;\");\n\n src.push(\"vec3 metalRoughTexel = texture(uMetallicRoughMap, vUV).rgb;\");\n src.push(\"metallic *= metalRoughTexel.b;\");\n src.push(\"roughness *= metalRoughTexel.g;\");\n\n src.push(\"vec3 viewNormal = perturbNormal2Arb( vViewPosition.xyz, normalize(vViewNormal), vUV );\");\n\n src.push(\"material.diffuseColor = baseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\");\n src.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\");\n src.push(\"material.specularColor = mix(vec3(dielectricSpecular), baseColor, metallic);\");\n\n src.push(\"geometry.position = vViewPosition.xyz;\");\n src.push(\"geometry.viewNormal = -normalize(viewNormal);\");\n src.push(\"geometry.viewEyeDir = normalize(vViewPosition.xyz);\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"geometry.worldNormal = normalize(vWorldNormal);\");\n }\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n src.push(\"computePBRLightMapping(geometry, material, reflectedLight);\");\n }\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n\n const light = lightsState.lights[i];\n\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightPos\" + i + \" - vViewPosition.xyz);\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n\n src.push(\"light.color = lightColor\" + i + \".rgb * lightColor\" + i + \".a;\"); // a is intensity\n\n src.push(\"computePBRLighting(light, geometry, material, reflectedLight);\");\n }\n\n src.push(\"vec3 emissiveColor = sRGBToLinear(texture(uEmissiveMap, vUV)).rgb;\"); // TODO: correct gamma function\n\n src.push(\"vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * baseColor * opacity * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular) + emissiveColor;\");\n src.push(\"vec4 fragColor;\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" fragColor = vec4(outgoingLight.rgb * ambient, opacity);\");\n } else {\n src.push(\" fragColor = vec4(outgoingLight.rgb, opacity);\");\n }\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"outColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n}\n", @@ -152161,7 +152720,7 @@ "lineNumber": 1 }, { - "__docId__": 7674, + "__docId__": 7693, "kind": "variable", "name": "TEXTURE_DECODE_FUNCS", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js", @@ -152182,7 +152741,7 @@ "ignore": true }, { - "__docId__": 7675, + "__docId__": 7694, "kind": "class", "name": "TrianglesPBRRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js", @@ -152201,7 +152760,7 @@ "ignore": true }, { - "__docId__": 7676, + "__docId__": 7695, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js~TrianglesPBRRenderer", @@ -152222,7 +152781,7 @@ } }, { - "__docId__": 7677, + "__docId__": 7696, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js~TrianglesPBRRenderer", @@ -152257,7 +152816,7 @@ "return": null }, { - "__docId__": 7678, + "__docId__": 7697, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js~TrianglesPBRRenderer", @@ -152278,7 +152837,7 @@ } }, { - "__docId__": 7679, + "__docId__": 7698, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js~TrianglesPBRRenderer", @@ -152299,7 +152858,7 @@ } }, { - "__docId__": 7680, + "__docId__": 7699, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n/**\n * @private\n */\nexport class TrianglesPickDepthRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry depth vertex shader\");\n\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry depth fragment shader\");\n\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" outColor = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -152310,7 +152869,7 @@ "lineNumber": 1 }, { - "__docId__": 7681, + "__docId__": 7700, "kind": "class", "name": "TrianglesPickDepthRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js", @@ -152329,7 +152888,7 @@ "ignore": true }, { - "__docId__": 7682, + "__docId__": 7701, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js~TrianglesPickDepthRenderer", @@ -152350,7 +152909,7 @@ } }, { - "__docId__": 7683, + "__docId__": 7702, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js~TrianglesPickDepthRenderer", @@ -152371,7 +152930,7 @@ } }, { - "__docId__": 7684, + "__docId__": 7703, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesPickMeshRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry picking vertex shader\");\n \n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 pickColor;\");\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vPickColor;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry picking fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec4 vPickColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -152382,7 +152941,7 @@ "lineNumber": 1 }, { - "__docId__": 7685, + "__docId__": 7704, "kind": "class", "name": "TrianglesPickMeshRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js", @@ -152401,7 +152960,7 @@ "ignore": true }, { - "__docId__": 7686, + "__docId__": 7705, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js~TrianglesPickMeshRenderer", @@ -152422,7 +152981,7 @@ } }, { - "__docId__": 7687, + "__docId__": 7706, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js~TrianglesPickMeshRenderer", @@ -152443,7 +153002,7 @@ } }, { - "__docId__": 7688, + "__docId__": 7707, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js", "content": "import { math } from \"../../../../../math/math.js\";\nimport {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesPickNormalsFlatRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry normals vertex shader\");\n \n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src, 3);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n if (clipping) {\n src.push(\"vFlags = flags;\");\n }\n\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry normals fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"in vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out highp ivec4 outNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\" vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\" vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(` outNormal = ivec4(worldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"}\");\n return src;\n }\n}\n", @@ -152454,7 +153013,7 @@ "lineNumber": 1 }, { - "__docId__": 7689, + "__docId__": 7708, "kind": "class", "name": "TrianglesPickNormalsFlatRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js", @@ -152473,7 +153032,7 @@ "ignore": true }, { - "__docId__": 7690, + "__docId__": 7709, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js~TrianglesPickNormalsFlatRenderer", @@ -152494,7 +153053,7 @@ } }, { - "__docId__": 7691, + "__docId__": 7710, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js~TrianglesPickNormalsFlatRenderer", @@ -152515,7 +153074,7 @@ } }, { - "__docId__": 7692, + "__docId__": 7711, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js", "content": "import { math } from \"../../../../../math/math.js\";\nimport {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesPickNormalsRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry normals vertex shader\");\n \n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec2 normal;\");\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"in vec4 modelNormalMatrixCol0;\");\n src.push(\"in vec4 modelNormalMatrixCol1;\");\n src.push(\"in vec4 modelNormalMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n this._addRemapClipPosLines(src, 3);\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out vec3 vWorldNormal;\");\n src.push(\"void main(void) {\");\n\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \");\n src.push(\" vec3 worldNormal = vec3(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2));\");\n src.push(\" vWorldNormal = worldNormal;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = remapClipPos(clipPos);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Batched geometry normals fragment shader\");\n\n \n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vWorldNormal;\");\n src.push(\"out highp ivec4 outNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(` outNormal = ivec4(vWorldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"}\");\n return src;\n }\n}\n", @@ -152526,7 +153085,7 @@ "lineNumber": 1 }, { - "__docId__": 7693, + "__docId__": 7712, "kind": "class", "name": "TrianglesPickNormalsRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js", @@ -152545,7 +153104,7 @@ "ignore": true }, { - "__docId__": 7694, + "__docId__": 7713, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js~TrianglesPickNormalsRenderer", @@ -152566,7 +153125,7 @@ } }, { - "__docId__": 7695, + "__docId__": 7714, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js~TrianglesPickNormalsRenderer", @@ -152587,7 +153146,7 @@ } }, { - "__docId__": 7696, + "__docId__": 7715, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * Renders InstancingLayer fragment depths to a shadow map.\n *\n * @private\n */\nexport class TrianglesShadowRenderer extends TrianglesInstancingRenderer {\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry shadow drawing vertex shader\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in vec4 color;\");\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\");\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n\n this._addMatricesUniformBlockLines(src);\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"void main(void) {\");\n src.push(`int colorFlag = int(flags) & 0xF;`);\n src.push(\"bool visible = (colorFlag > 0);\");\n src.push(\"bool transparent = ((float(color.a) / 255.0) < 1.0);\");\n src.push(`if (!visible || transparent) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing geometry depth drawing fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n}\n\n", @@ -152598,7 +153157,7 @@ "lineNumber": 1 }, { - "__docId__": 7697, + "__docId__": 7716, "kind": "class", "name": "TrianglesShadowRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js", @@ -152617,7 +153176,7 @@ "ignore": true }, { - "__docId__": 7698, + "__docId__": 7717, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js~TrianglesShadowRenderer", @@ -152638,7 +153197,7 @@ } }, { - "__docId__": 7699, + "__docId__": 7718, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js~TrianglesShadowRenderer", @@ -152659,7 +153218,7 @@ } }, { - "__docId__": 7700, + "__docId__": 7719, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js", "content": "import {TrianglesInstancingRenderer} from \"./TrianglesInstancingRenderer.js\";\n\n/**\n * @private\n */\nexport class TrianglesSilhouetteRenderer extends TrianglesInstancingRenderer {\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n // TODO color uniform true ???\n super.drawLayer(frameCtx, instancingLayer, renderPass, { colorUniform: true });\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing silhouette vertex shader\");\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 color;\");\n\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec4 silhouetteColor;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n\n src.push(\"out vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // silhouetteFlag = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`int silhouetteFlag = int(flags) >> 4 & 0xF;`);\n src.push(`if (silhouetteFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags = flags;\");\n }\n src.push(\"vColor = vec4(silhouetteColor.r, silhouetteColor.g, silhouetteColor.b, min(silhouetteColor.a, float(color.a) / 255.0));\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// Instancing fill fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n src.push(\"uniform float sliceThickness;\");\n src.push(\"uniform vec4 sliceColor;\");\n }\n src.push(\"in vec4 vColor;\");\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n src.push(\" vec4 newColor;\");\n src.push(\" newColor = vColor;\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > sliceThickness) { \");\n src.push(\" discard;\")\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" newColor = sliceColor;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outColor = newColor;\");\n src.push(\"}\");\n return src;\n }\n}", @@ -152670,7 +153229,7 @@ "lineNumber": 1 }, { - "__docId__": 7701, + "__docId__": 7720, "kind": "class", "name": "TrianglesSilhouetteRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js", @@ -152689,7 +153248,7 @@ "ignore": true }, { - "__docId__": 7702, + "__docId__": 7721, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js~TrianglesSilhouetteRenderer", @@ -152724,7 +153283,7 @@ "return": null }, { - "__docId__": 7703, + "__docId__": 7722, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js~TrianglesSilhouetteRenderer", @@ -152745,7 +153304,7 @@ } }, { - "__docId__": 7704, + "__docId__": 7723, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js~TrianglesSilhouetteRenderer", @@ -152766,7 +153325,7 @@ } }, { - "__docId__": 7705, + "__docId__": 7724, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js", "content": "import {VBORenderer} from \"../../../VBORenderer.js\";\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class TrianglesSnapInitRenderer extends VBORenderer {\n\n constructor(scene) {\n super(scene, false, { instancing: true });\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const camera = scene.camera;\n const state = instancingLayer._state;\n const origin = instancingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = instancingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(instancingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(instancingLayer));\n } else {\n this._vaoCache.set(instancingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(instancingLayer);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1);\n\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n gl.vertexAttribDivisor(this._aFlags.location, 1);\n }\n\n state.indicesBuf.bind();\n gl.drawElementsInstanced(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n state.indicesBuf.unbind();\n\n // Cleanup\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 0);\n if (this._aFlags) {\n gl.vertexAttribDivisor(this._aFlags.location, 0);\n }\n if (this._aOffset) {\n gl.vertexAttribDivisor(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\");\n this.uVectorA = program.getLocation(\"snapVectorA\");\n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\");\n this._uLayerNumber = program.getLocation(\"layerNumber\");\n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\");\n }\n\n _bindProgram() {\n this._program.bind();\n\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthBufInitRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec4 pickColor;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\");\n src.push(\"uniform vec2 snapVectorA;\");\n src.push(\"uniform vec2 snapInvVectorAB;\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n src.push(\"flat out vec4 vPickColor;\");\n src.push(\"out vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vPickColor = pickColor;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// Points instancing pick depth fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\");\n src.push(\"uniform vec3 coordinateScaler;\");\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"flat in vec4 vPickColor;\");\n if (clipping) {\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"layout(location = 0) out highp ivec4 outCoords;\");\n src.push(\"layout(location = 1) out highp ivec4 outNormal;\");\n src.push(\"layout(location = 2) out lowp uvec4 outPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" float dx = dFdx(vFragDepth);\")\n src.push(\" float dy = dFdy(vFragDepth);\")\n src.push(\" float diff = sqrt(dx*dx+dy*dy);\");\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth + diff ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, -layerNumber);\")\n\n src.push(\"vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\"vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(`outNormal = ivec4(worldNormal * float(${math.MAX_INT}), 1.0);`);\n src.push(\"outPickColor = uvec4(vPickColor);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n", @@ -152777,7 +153336,7 @@ "lineNumber": 1 }, { - "__docId__": 7706, + "__docId__": 7725, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -152798,7 +153357,7 @@ "ignore": true }, { - "__docId__": 7707, + "__docId__": 7726, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -152819,7 +153378,7 @@ "ignore": true }, { - "__docId__": 7708, + "__docId__": 7727, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -152840,7 +153399,7 @@ "ignore": true }, { - "__docId__": 7709, + "__docId__": 7728, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -152861,7 +153420,7 @@ "ignore": true }, { - "__docId__": 7710, + "__docId__": 7729, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -152882,7 +153441,7 @@ "ignore": true }, { - "__docId__": 7711, + "__docId__": 7730, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -152903,7 +153462,7 @@ "ignore": true }, { - "__docId__": 7712, + "__docId__": 7731, "kind": "class", "name": "TrianglesSnapInitRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js", @@ -152922,7 +153481,7 @@ "ignore": true }, { - "__docId__": 7713, + "__docId__": 7732, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -152936,7 +153495,7 @@ "undocument": true }, { - "__docId__": 7714, + "__docId__": 7733, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -152971,7 +153530,7 @@ "return": null }, { - "__docId__": 7715, + "__docId__": 7734, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -152988,7 +153547,7 @@ "return": null }, { - "__docId__": 7716, + "__docId__": 7735, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153006,7 +153565,7 @@ } }, { - "__docId__": 7717, + "__docId__": 7736, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153024,7 +153583,7 @@ } }, { - "__docId__": 7718, + "__docId__": 7737, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153041,7 +153600,7 @@ } }, { - "__docId__": 7719, + "__docId__": 7738, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153058,7 +153617,7 @@ } }, { - "__docId__": 7720, + "__docId__": 7739, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153076,7 +153635,7 @@ } }, { - "__docId__": 7721, + "__docId__": 7740, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153094,7 +153653,7 @@ } }, { - "__docId__": 7722, + "__docId__": 7741, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153111,7 +153670,7 @@ "return": null }, { - "__docId__": 7723, + "__docId__": 7742, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153132,7 +153691,7 @@ } }, { - "__docId__": 7724, + "__docId__": 7743, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153153,7 +153712,7 @@ } }, { - "__docId__": 7725, + "__docId__": 7744, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153169,7 +153728,7 @@ "return": null }, { - "__docId__": 7726, + "__docId__": 7745, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153187,7 +153746,7 @@ } }, { - "__docId__": 7727, + "__docId__": 7746, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js~TrianglesSnapInitRenderer", @@ -153203,7 +153762,7 @@ "return": null }, { - "__docId__": 7729, + "__docId__": 7748, "kind": "file", "name": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js", "content": "import {VBORenderer} from \"./../../../VBORenderer.js\";\nimport {createRTCViewMat} from \"../../../../../math/rtcCoords.js\";\nimport {math} from \"../../../../../math/math.js\";\n\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\nconst tempMat4a = math.mat4();\n\nconst SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance\n\n/**\n * @private\n */\nexport class TrianglesSnapRenderer extends VBORenderer {\n\n constructor(scene) {\n super(scene, false, { instancing: true });\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const origin = instancingLayer._state.origin;\n const {position, rotationMatrix, rotationMatrixConjugate} = model;\n const aabb = instancingLayer.aabb; // Per-layer AABB for best RTC accuracy\n const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n\n if (this._vaoCache.has(instancingLayer)) {\n gl.bindVertexArray(this._vaoCache.get(instancingLayer));\n } else {\n this._vaoCache.set(instancingLayer, this._makeVAO(state))\n }\n\n const coordinateScaler = tempVec3a;\n coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;\n coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;\n coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;\n\n frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);\n frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);\n frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);\n\n let rtcViewMatrix;\n let rtcCameraEye;\n\n if (origin || position[0] !== 0 || position[1] !== 0 || position[2] !== 0) {\n const rtcOrigin = tempVec3b;\n if (origin) {\n const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);\n rtcOrigin[0] = rotatedOrigin[0];\n rtcOrigin[1] = rotatedOrigin[1];\n rtcOrigin[2] = rotatedOrigin[2];\n } else {\n rtcOrigin[0] = 0;\n rtcOrigin[1] = 0;\n rtcOrigin[2] = 0;\n }\n rtcOrigin[0] += position[0];\n rtcOrigin[1] += position[1];\n rtcOrigin[2] += position[2];\n rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);\n rtcCameraEye = tempVec3d;\n rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];\n rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];\n rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];\n frameCtx.snapPickOrigin[0] = rtcOrigin[0];\n frameCtx.snapPickOrigin[1] = rtcOrigin[1];\n frameCtx.snapPickOrigin[2] = rtcOrigin[2];\n } else {\n rtcViewMatrix = viewMatrix;\n rtcCameraEye = camera.eye;\n frameCtx.snapPickOrigin[0] = 0;\n frameCtx.snapPickOrigin[1] = 0;\n frameCtx.snapPickOrigin[2] = 0;\n }\n\n gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);\n gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);\n gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);\n gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);\n gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n let offset = 0;\n const mat4Size = 4 * 4;\n\n this._matricesUniformBlockBufferData.set(rotationMatrixConjugate, 0);\n this._matricesUniformBlockBufferData.set(rtcViewMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(camera.projMatrix, offset += mat4Size);\n this._matricesUniformBlockBufferData.set(state.positionsDecodeMatrix, offset += mat4Size);\n\n gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer);\n gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW);\n\n gl.bindBufferBase(\n gl.UNIFORM_BUFFER,\n this._matricesUniformBlockBufferBindingPoint,\n this._matricesUniformBlockBuffer);\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n this.setSectionPlanesStateUniforms(instancingLayer);\n\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n gl.vertexAttribDivisor(this._aFlags.location, 1);\n\n if (frameCtx.snapMode === \"edge\") {\n state.edgeIndicesBuf.bind();\n gl.drawElementsInstanced(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);\n state.edgeIndicesBuf.unbind(); // needed?\n } else {\n gl.drawArraysInstanced(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n }\n // Cleanup\n gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 0);\n gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 0);\n gl.vertexAttribDivisor(this._aFlags.location, 0);\n if (this._aOffset) {\n gl.vertexAttribDivisor(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n super._allocate();\n\n const program = this._program;\n\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._uCameraEyeRtc = program.getLocation(\"uCameraEyeRtc\"); \n this.uVectorA = program.getLocation(\"snapVectorA\"); \n this.uInverseVectorAB = program.getLocation(\"snapInvVectorAB\"); \n this._uLayerNumber = program.getLocation(\"layerNumber\"); \n this._uCoordinateScaler = program.getLocation(\"coordinateScaler\"); \n }\n\n _bindProgram() {\n this._program.bind();\n\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthRenderer vertex shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"precision highp usampler2D;\");\n src.push(\"precision highp isampler2D;\");\n src.push(\"precision highp sampler2D;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"precision mediump usampler2D;\");\n src.push(\"precision mediump isampler2D;\");\n src.push(\"precision mediump sampler2D;\");\n src.push(\"#endif\");\n src.push(\"uniform int renderPass;\");\n src.push(\"in vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"in vec3 offset;\");\n }\n src.push(\"in float flags;\");\n src.push(\"in vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"in vec4 modelMatrixCol1;\");\n src.push(\"in vec4 modelMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n\n this._addMatricesUniformBlockLines(src);\n\n src.push(\"uniform vec3 uCameraEyeRtc;\"); \n src.push(\"uniform vec2 snapVectorA;\"); \n src.push(\"uniform vec2 snapInvVectorAB;\"); \n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"out float isPerspective;\");\n }\n src.push(\"vec2 remapClipPos(vec2 clipPos) {\");\n src.push(\" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;\");\n src.push(\" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;\");\n src.push(\" return vec2(x, y);\")\n src.push(\"}\");\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n src.push(\"out float vFlags;\");\n }\n src.push(\"out highp vec3 relativeToOriginPosition;\");\n src.push(\"void main(void) {\");\n // pickFlag = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);\n src.push(`if (pickFlag != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"relativeToOriginPosition = worldPosition.xyz;\")\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags = flags;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\"float tmp = clipPos.w;\")\n src.push(\"clipPos.xyzw /= tmp;\")\n src.push(\"clipPos.xy = remapClipPos(clipPos.xy);\");\n src.push(\"clipPos.xyzw *= tmp;\")\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"gl_PointSize = 1.0;\"); // Windows needs this?\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;\n const src = [];\n src.push ('#version 300 es');\n src.push(\"// SnapInstancingDepthRenderer fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\"in float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n src.push(\"uniform int layerNumber;\"); \n src.push(\"uniform vec3 coordinateScaler;\"); \n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n src.push(\"in float vFlags;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"in highp vec3 relativeToOriginPosition;\");\n src.push(\"out highp ivec4 outCoords;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {\n src.push(\" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);\")\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n", @@ -153214,7 +153773,7 @@ "lineNumber": 1 }, { - "__docId__": 7730, + "__docId__": 7749, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js", @@ -153235,7 +153794,7 @@ "ignore": true }, { - "__docId__": 7731, + "__docId__": 7750, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js", @@ -153256,7 +153815,7 @@ "ignore": true }, { - "__docId__": 7732, + "__docId__": 7751, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js", @@ -153277,7 +153836,7 @@ "ignore": true }, { - "__docId__": 7733, + "__docId__": 7752, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js", @@ -153298,7 +153857,7 @@ "ignore": true }, { - "__docId__": 7734, + "__docId__": 7753, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js", @@ -153319,7 +153878,7 @@ "ignore": true }, { - "__docId__": 7735, + "__docId__": 7754, "kind": "variable", "name": "SNAPPING_LOG_DEPTH_BUF_ENABLED", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js", @@ -153340,7 +153899,7 @@ "ignore": true }, { - "__docId__": 7736, + "__docId__": 7755, "kind": "class", "name": "TrianglesSnapRenderer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js", @@ -153359,7 +153918,7 @@ "ignore": true }, { - "__docId__": 7737, + "__docId__": 7756, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153373,7 +153932,7 @@ "undocument": true }, { - "__docId__": 7738, + "__docId__": 7757, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153408,7 +153967,7 @@ "return": null }, { - "__docId__": 7739, + "__docId__": 7758, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153425,7 +153984,7 @@ "return": null }, { - "__docId__": 7740, + "__docId__": 7759, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153443,7 +154002,7 @@ } }, { - "__docId__": 7741, + "__docId__": 7760, "kind": "member", "name": "_uCameraEyeRtc", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153461,7 +154020,7 @@ } }, { - "__docId__": 7742, + "__docId__": 7761, "kind": "member", "name": "uVectorA", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153478,7 +154037,7 @@ } }, { - "__docId__": 7743, + "__docId__": 7762, "kind": "member", "name": "uInverseVectorAB", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153495,7 +154054,7 @@ } }, { - "__docId__": 7744, + "__docId__": 7763, "kind": "member", "name": "_uLayerNumber", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153513,7 +154072,7 @@ } }, { - "__docId__": 7745, + "__docId__": 7764, "kind": "member", "name": "_uCoordinateScaler", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153531,7 +154090,7 @@ } }, { - "__docId__": 7746, + "__docId__": 7765, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153548,7 +154107,7 @@ "return": null }, { - "__docId__": 7747, + "__docId__": 7766, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153569,7 +154128,7 @@ } }, { - "__docId__": 7748, + "__docId__": 7767, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153590,7 +154149,7 @@ } }, { - "__docId__": 7749, + "__docId__": 7768, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153606,7 +154165,7 @@ "return": null }, { - "__docId__": 7750, + "__docId__": 7769, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153624,7 +154183,7 @@ } }, { - "__docId__": 7751, + "__docId__": 7770, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js~TrianglesSnapRenderer", @@ -153640,7 +154199,7 @@ "return": null }, { - "__docId__": 7753, + "__docId__": 7772, "kind": "file", "name": "src/viewer/scene/nodes/Node.js", "content": "import {utils} from '../utils.js';\nimport {Component} from '../Component.js';\nimport {math} from '../math/math.js';\n\nconst angleAxis = math.vec4(4);\nconst q1 = math.vec4();\nconst q2 = math.vec4();\nconst xAxis = math.vec3([1, 0, 0]);\nconst yAxis = math.vec3([0, 1, 0]);\nconst zAxis = math.vec3([0, 0, 1]);\n\nconst veca = math.vec3(3);\nconst vecb = math.vec3(3);\n\nconst identityMat = math.identityMat4();\n\n/**\n * @desc An {@link Entity} that is a scene graph node that can have child Nodes and {@link Mesh}es.\n *\n * ## Usage\n *\n * The example below is the same as the one given for {@link Mesh}, since the two classes work together. In this example,\n * we'll create a scene graph in which a root Node represents a group and the {@link Mesh}s are leaves. Since Node\n * implements {@link Entity}, we can designate the root Node as a model, causing it to be registered by its ID in {@link Scene#models}.\n *\n * Since {@link Mesh} also implements {@link Entity}, we can designate the leaf {@link Mesh}es as objects, causing them to\n * be registered by their IDs in {@link Scene#objects}.\n *\n * We can then find those {@link Entity} types in {@link Scene#models} and {@link Scene#objects}.\n *\n * We can also update properties of our object-Meshes via calls to {@link Scene#setObjectsHighlighted} etc.\n *\n * [[Run this example](/examples/index.html#sceneRepresentation_SceneGraph)]\n *\n * ````javascript\n * import {Viewer, Mesh, Node, PhongMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * new Node(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <---------- Node represents a model, so is registered by ID in viewer.scene.models\n * rotation: [0, 50, 0],\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n *\n * children: [\n *\n * new Mesh(viewer.scene, { // Red table leg\n * id: \"redLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1, 0.3, 0.3]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Green table leg\n * id: \"greenLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 1.0, 0.3]\n * })\n * }),\n *\n * new Mesh(viewer.scene, {// Blue table leg\n * id: \"blueLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 0.3, 1.0]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Yellow table leg\n * id: \"yellowLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 1.0, 0.0]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Purple table top\n * id: \"tableTop\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 0.3, 1.0]\n * })\n * })\n * ]\n * });\n *\n * // Find Nodes and Meshes by their IDs\n *\n * var table = viewer.scene.models[\"table\"]; // Since table Node has isModel == true\n *\n * var redLeg = viewer.scene.objects[\"redLeg\"]; // Since the Meshes have isObject == true\n * var greenLeg = viewer.scene.objects[\"greenLeg\"];\n * var blueLeg = viewer.scene.objects[\"blueLeg\"];\n *\n * // Highlight one of the table leg Meshes\n *\n * viewer.scene.setObjectsHighlighted([\"redLeg\"], true); // Since the Meshes have isObject == true\n *\n * // Periodically update transforms on our Nodes and Meshes\n *\n * viewer.scene.on(\"tick\", function () {\n *\n * // Rotate legs\n * redLeg.rotateY(0.5);\n * greenLeg.rotateY(0.5);\n * blueLeg.rotateY(0.5);\n *\n * // Rotate table\n * table.rotateY(0.5);\n * table.rotateX(0.3);\n * });\n * ````\n *\n * ## Metadata\n *\n * As mentioned, we can also associate {@link MetaModel}s and {@link MetaObject}s with our Nodes and {@link Mesh}es,\n * within a {@link MetaScene}. See {@link MetaScene} for an example.\n *\n * @implements {Entity}\n */\nclass Node extends Component {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this Mesh represents a model, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Boolean} [cfg.isObject] Specify ````true```` if this Mesh represents an object, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and may also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Node} [cfg.parent] The parent Node.\n * @param {Number[]} [cfg.origin] World-space origin for this Node.\n * @param {Number[]} [cfg.rtcCenter] Deprecated - renamed to ````origin````.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Number[]} [cfg.offset=[0,0,0]] World-space 3D translation offset. Translates the Node in World space, after modelling transforms.\n * @param {Boolean} [cfg.visible=true] Indicates if the Node is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the Node is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the Node is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the Node is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the Node is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the Node initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Node initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the Node is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the Node is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the Mesh is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the Node's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] Node's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] Node's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Array} [cfg.children] Child Nodes or {@link Mesh}es to add initially. Children must be in the same {@link Scene} and will be removed first from whatever parents they may already have.\n * @param {Boolean} [cfg.inheritStates=true] Indicates if children given to this constructor should inherit rendering state from this parent as they are added. Rendering state includes {@link Node#visible}, {@link Node#culled}, {@link Node#pickable}, {@link Node#clippable}, {@link Node#castsShadow}, {@link Node#receivesShadow}, {@link Node#selected}, {@link Node#highlighted}, {@link Node#colorize} and {@link Node#opacity}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._parentNode = null;\n this._children = [];\n\n this._aabb = null;\n this._aabbDirty = true;\n\n this.scene._aabbDirty = true;\n\n this._numTriangles = 0;\n\n this._scale = math.vec3();\n this._quaternion = math.identityQuaternion();\n this._rotation = math.vec3();\n this._position = math.vec3();\n this._offset = math.vec3();\n\n this._localMatrix = math.identityMat4();\n this._worldMatrix = math.identityMat4();\n\n this._localMatrixDirty = true;\n this._worldMatrixDirty = true;\n\n if (cfg.matrix) {\n this.matrix = cfg.matrix;\n } else {\n this.scale = cfg.scale;\n this.position = cfg.position;\n if (cfg.quaternion) {\n } else {\n this.rotation = cfg.rotation;\n }\n }\n\n this._isModel = cfg.isModel;\n if (this._isModel) {\n this.scene._registerModel(this);\n }\n\n this._isObject = cfg.isObject;\n if (this._isObject) {\n this.scene._registerObject(this);\n }\n\n this.origin = cfg.origin;\n this.visible = cfg.visible;\n this.culled = cfg.culled;\n this.pickable = cfg.pickable;\n this.clippable = cfg.clippable;\n this.collidable = cfg.collidable;\n this.castsShadow = cfg.castsShadow;\n this.receivesShadow = cfg.receivesShadow;\n this.xrayed = cfg.xrayed;\n this.highlighted = cfg.highlighted;\n this.selected = cfg.selected;\n this.edges = cfg.edges;\n this.colorize = cfg.colorize;\n this.opacity = cfg.opacity;\n this.offset = cfg.offset;\n\n // Add children, which inherit state from this Node\n\n if (cfg.children) {\n const children = cfg.children;\n for (let i = 0, len = children.length; i < len; i++) {\n this.addChild(children[i], cfg.inheritStates);\n }\n }\n\n if (cfg.parentId) {\n const parentNode = this.scene.components[cfg.parentId];\n if (!parentNode) {\n this.error(\"Parent not found: '\" + cfg.parentId + \"'\");\n } else if (!parentNode.isNode) {\n this.error(\"Parent is not a Node: '\" + cfg.parentId + \"'\");\n } else {\n parentNode.addChild(this);\n }\n } else if (cfg.parent) {\n if (!cfg.parent.isNode) {\n this.error(\"Parent is not a Node\");\n }\n cfg.parent.addChild(this);\n }\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is an Entity.\n * @type {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this Mesh represents a model.\n *\n * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and\n * may also have a corresponding {@link MetaModel}.\n *\n * @type {Boolean}\n */\n get isModel() {\n return this._isModel;\n }\n\n /**\n * Returns ````true```` if this Node represents an object.\n *\n * When ````true```` the Node will be registered by {@link Node#id} in\n * {@link Scene#objects} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n * @abstract\n */\n get isObject() {\n return this._isObject;\n }\n\n /**\n * Gets the Node's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n this._updateAABB();\n }\n return this._aabb;\n }\n\n /**\n * Sets the World-space origin for this Node.\n *\n * @type {Float64Array}\n */\n set origin(origin) {\n if (origin) {\n if (!this._origin) {\n this._origin = math.vec3();\n }\n this._origin.set(origin);\n } else {\n if (this._origin) {\n this._origin = null;\n }\n }\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].origin = origin;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the World-space origin for this Node.\n *\n * @type {Float64Array}\n */\n get origin() {\n return this._origin;\n }\n\n /**\n * Sets the World-space origin for this Node.\n *\n * Deprecated and replaced by {@link Node#origin}.\n *\n * @deprecated\n * @type {Float64Array}\n */\n set rtcCenter(rtcCenter) {\n this.origin = rtcCenter;\n }\n\n /**\n * Gets the World-space origin for this Node.\n *\n * Deprecated and replaced by {@link Node#origin}.\n *\n * @deprecated\n * @type {Float64Array}\n */\n get rtcCenter() {\n return this.origin;\n }\n\n /**\n * The number of triangles in this Node.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are visible.\n *\n * Only rendered both {@link Node#visible} is ````true```` and {@link Node#culled} is ````false````.\n *\n * When {@link Node#isObject} and {@link Node#visible} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n set visible(visible) {\n visible = visible !== false;\n this._visible = visible;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].visible = visible;\n }\n if (this._isObject) {\n this.scene._objectVisibilityUpdated(this, visible);\n }\n }\n\n /**\n * Gets if this Node is visible.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * When {@link Node#isObject} and {@link Node#visible} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n get visible() {\n return this._visible;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are xrayed.\n *\n * When {@link Node#isObject} and {@link Node#xrayed} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n xrayed = !!xrayed;\n this._xrayed = xrayed;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].xrayed = xrayed;\n }\n if (this._isObject) {\n this.scene._objectXRayedUpdated(this, xrayed);\n }\n }\n\n /**\n * Gets if this Node is xrayed.\n *\n * When {@link Node#isObject} and {@link Node#xrayed} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#xrayedObjects}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return this._xrayed;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are highlighted.\n *\n * When {@link Node#isObject} and {@link Node#highlighted} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n highlighted = !!highlighted;\n this._highlighted = highlighted;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].highlighted = highlighted;\n }\n if (this._isObject) {\n this.scene._objectHighlightedUpdated(this, highlighted);\n }\n }\n\n /**\n * Gets if this Node is highlighted.\n *\n * When {@link Node#isObject} and {@link Node#highlighted} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#highlightedObjects}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return this._highlighted;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are selected.\n *\n * When {@link Node#isObject} and {@link Node#selected} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n selected = !!selected;\n this._selected = selected;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].selected = selected;\n }\n if (this._isObject) {\n this.scene._objectSelectedUpdated(this, selected);\n }\n }\n\n /**\n * Gets if this Node is selected.\n *\n * When {@link Node#isObject} and {@link Node#selected} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#selectedObjects}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get selected() {\n return this._selected;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are edge-enhanced.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n edges = !!edges;\n this._edges = edges;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].edges = edges;\n }\n }\n\n /**\n * Gets if this Node's edges are enhanced.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._edges;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are culled.\n *\n * @type {Boolean}\n */\n set culled(culled) {\n culled = !!culled;\n this._culled = culled;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].culled = culled;\n }\n }\n\n /**\n * Gets if this Node is culled.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._culled;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#clips}.\n *\n * @type {Boolean}\n */\n set clippable(clippable) {\n clippable = clippable !== false;\n this._clippable = clippable;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].clippable = clippable;\n }\n }\n\n /**\n * Gets if this Node is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#clips}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._clippable;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are included in boundary calculations.\n *\n * @type {Boolean}\n */\n set collidable(collidable) {\n collidable = collidable !== false;\n this._collidable = collidable;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].collidable = collidable;\n }\n }\n\n /**\n * Gets if this Node is included in boundary calculations.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._collidable;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(pickable) {\n pickable = pickable !== false;\n this._pickable = pickable;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].pickable = pickable;\n }\n }\n\n /**\n * Gets if to this Node is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._pickable;\n }\n\n /**\n * Sets the RGB colorize color for this Node and all child Nodes and {@link Mesh}es}.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(rgb) {\n let colorize = this._colorize;\n if (!colorize) {\n colorize = this._colorize = new Float32Array(4);\n colorize[3] = 1.0;\n }\n if (rgb) {\n colorize[0] = rgb[0];\n colorize[1] = rgb[1];\n colorize[2] = rgb[2];\n } else {\n colorize[0] = 1;\n colorize[1] = 1;\n colorize[2] = 1;\n }\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].colorize = colorize;\n }\n if (this._isObject) {\n const colorized = (!!rgb);\n this.scene._objectColorizeUpdated(this, colorized);\n }\n }\n\n /**\n * Gets the RGB colorize color for this Node.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Number[]}\n */\n get colorize() {\n return this._colorize.slice(0, 3);\n }\n\n /**\n * Sets the opacity factor for this Node and all child Nodes and {@link Mesh}es.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n let colorize = this._colorize;\n if (!colorize) {\n colorize = this._colorize = new Float32Array(4);\n colorize[0] = 1;\n colorize[1] = 1;\n colorize[2] = 1;\n }\n colorize[3] = opacity !== null && opacity !== undefined ? opacity : 1.0;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].opacity = opacity;\n }\n if (this._isObject) {\n const opacityUpdated = (opacity !== null && opacity !== undefined);\n this.scene._objectOpacityUpdated(this, opacityUpdated);\n }\n }\n\n /**\n * Gets this Node's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Number}\n */\n get opacity() {\n return this._colorize[3];\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es cast shadows.\n *\n * @type {Boolean}\n */\n set castsShadow(castsShadow) {\n castsShadow = !!castsShadow;\n this._castsShadow = castsShadow;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].castsShadow = castsShadow;\n }\n }\n\n /**\n * Gets if this Node casts shadows.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._castsShadow;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es can have shadows cast upon them.\n *\n * @type {Boolean}\n */\n set receivesShadow(receivesShadow) {\n receivesShadow = !!receivesShadow;\n this._receivesShadow = receivesShadow;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].receivesShadow = receivesShadow;\n }\n }\n\n /**\n * Whether or not to this Node can have shadows cast upon it.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._receivesShadow;\n }\n\n /**\n * Gets if this Node can have Scalable Ambient Obscurance (SAO) applied to it.\n *\n * SAO is configured by {@link SAO}.\n *\n * @type {Boolean}\n * @abstract\n */\n get saoEnabled() {\n return false; // TODO: Support SAO on Nodes\n }\n\n\n /**\n * Sets the 3D World-space offset for this Node and all child Nodes and {@link Mesh}es}.\n *\n * The offset dynamically translates those components in World-space.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * Note that child Nodes and {@link Mesh}es may subsequently be given different values for this property.\n *\n * @type {Number[]}\n */\n set offset(offset) {\n if (offset) {\n this._offset[0] = offset[0];\n this._offset[1] = offset[1];\n this._offset[2] = offset[2];\n } else {\n this._offset[0] = 0;\n this._offset[1] = 0;\n this._offset[2] = 0;\n }\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].offset = this._offset;\n }\n if (this._isObject) {\n this.scene._objectOffsetUpdated(this, offset);\n }\n }\n\n /**\n * Gets the Node's 3D World-space offset.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Number[]}\n */\n get offset() {\n return this._offset;\n }\n\n\n //------------------------------------------------------------------------------------------------------------------\n // Node members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is a Node.\n * @type {Boolean}\n */\n get isNode() {\n return true;\n }\n\n _setLocalMatrixDirty() {\n this._localMatrixDirty = true;\n this._setWorldMatrixDirty();\n }\n\n _setWorldMatrixDirty() {\n this._worldMatrixDirty = true;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i]._setWorldMatrixDirty();\n }\n }\n\n _buildWorldMatrix() {\n const localMatrix = this.matrix;\n if (!this._parentNode) {\n for (let i = 0, len = localMatrix.length; i < len; i++) {\n this._worldMatrix[i] = localMatrix[i];\n }\n } else {\n math.mulMat4(this._parentNode.worldMatrix, localMatrix, this._worldMatrix);\n }\n this._worldMatrixDirty = false;\n }\n\n _setSubtreeAABBsDirty(node) {\n node._aabbDirty = true;\n if (node._children) {\n for (let i = 0, len = node._children.length; i < len; i++) {\n this._setSubtreeAABBsDirty(node._children[i]);\n }\n }\n }\n\n _setAABBDirty() {\n this._setSubtreeAABBsDirty(this);\n if (this.collidable) {\n for (let node = this; node; node = node._parentNode) {\n node._aabbDirty = true;\n }\n }\n }\n\n _updateAABB() {\n this.scene._aabbDirty = true;\n if (!this._aabb) {\n this._aabb = math.AABB3();\n }\n if (this._buildAABB) {\n this._buildAABB(this.worldMatrix, this._aabb); // Mesh or VBOSceneModel\n } else { // Node | Node | Model\n math.collapseAABB3(this._aabb);\n let node;\n for (let i = 0, len = this._children.length; i < len; i++) {\n node = this._children[i];\n if (!node.collidable) {\n continue;\n }\n math.expandAABB3(this._aabb, node.aabb);\n }\n }\n this._aabbDirty = false;\n }\n\n /**\n * Adds a child Node or {@link Mesh}.\n *\n * The child must be a Node or {@link Mesh} in the same {@link Scene}.\n *\n * If the child already has a parent, will be removed from that parent first.\n *\n * Does nothing if already a child.\n *\n * @param {Node|Mesh|String} child Instance or ID of the child to add.\n * @param [inheritStates=false] Indicates if the child should inherit rendering states from this parent as it is added. Rendering state includes {@link Node#visible}, {@link Node#culled}, {@link Node#pickable}, {@link Node#clippable}, {@link Node#castsShadow}, {@link Node#receivesShadow}, {@link Node#selected}, {@link Node#highlighted}, {@link Node#colorize} and {@link Node#opacity}.\n * @returns {Node|Mesh} The child.\n */\n addChild(child, inheritStates) {\n if (utils.isNumeric(child) || utils.isString(child)) {\n const nodeId = child;\n child = this.scene.component[nodeId];\n if (!child) {\n this.warn(\"Component not found: \" + utils.inQuotes(nodeId));\n return;\n }\n if (!child.isNode && !child.isMesh) {\n this.error(\"Not a Node or Mesh: \" + nodeId);\n return;\n }\n } else {\n if (!child.isNode && !child.isMesh) {\n this.error(\"Not a Node or Mesh: \" + child.id);\n return;\n }\n if (child._parentNode) {\n if (child._parentNode.id === this.id) {\n this.warn(\"Already a child: \" + child.id);\n return;\n }\n child._parentNode.removeChild(child);\n }\n }\n const id = child.id;\n if (child.scene.id !== this.scene.id) {\n this.error(\"Child not in same Scene: \" + child.id);\n return;\n }\n this._children.push(child);\n child._parentNode = this;\n if (!!inheritStates) {\n child.visible = this.visible;\n child.culled = this.culled;\n child.xrayed = this.xrayed;\n child.highlited = this.highlighted;\n child.selected = this.selected;\n child.edges = this.edges;\n child.clippable = this.clippable;\n child.pickable = this.pickable;\n child.collidable = this.collidable;\n child.castsShadow = this.castsShadow;\n child.receivesShadow = this.receivesShadow;\n child.colorize = this.colorize;\n child.opacity = this.opacity;\n child.offset = this.offset;\n }\n child._setWorldMatrixDirty();\n child._setAABBDirty();\n this._numTriangles += child.numTriangles;\n return child;\n }\n\n /**\n * Removes the given child Node or {@link Mesh}.\n *\n * @param {Node|Mesh} child Child to remove.\n */\n removeChild(child) {\n for (let i = 0, len = this._children.length; i < len; i++) {\n if (this._children[i].id === child.id) {\n child._parentNode = null;\n this._children = this._children.splice(i, 1);\n child._setWorldMatrixDirty();\n child._setAABBDirty();\n this._setAABBDirty();\n this._numTriangles -= child.numTriangles;\n return;\n }\n }\n }\n\n /**\n * Removes all child Nodes and {@link Mesh}es.\n */\n removeChildren() {\n let child;\n for (let i = 0, len = this._children.length; i < len; i++) {\n child = this._children[i];\n child._parentNode = null;\n child._setWorldMatrixDirty();\n child._setAABBDirty();\n this._numTriangles -= child.numTriangles;\n }\n this._children = [];\n this._setAABBDirty();\n }\n\n /**\n * Number of child Nodes or {@link Mesh}es.\n *\n * @type {Number}\n */\n get numChildren() {\n return this._children.length;\n }\n\n /**\n * Array of child Nodes or {@link Mesh}es.\n *\n * @type {Array}\n */\n get children() {\n return this._children;\n }\n\n /**\n * The parent Node.\n *\n * The parent Node may also be set by passing the Node to the parent's {@link Node#addChild} method.\n *\n * @type {Node}\n */\n set parent(node) {\n if (utils.isNumeric(node) || utils.isString(node)) {\n const nodeId = node;\n node = this.scene.components[nodeId];\n if (!node) {\n this.warn(\"Node not found: \" + utils.inQuotes(nodeId));\n return;\n }\n if (!node.isNode) {\n this.error(\"Not a Node: \" + node.id);\n return;\n }\n }\n if (node.scene.id !== this.scene.id) {\n this.error(\"Node not in same Scene: \" + node.id);\n return;\n }\n if (this._parentNode && this._parentNode.id === node.id) {\n this.warn(\"Already a child of Node: \" + node.id);\n return;\n }\n node.addChild(this);\n }\n\n /**\n * The parent Node.\n *\n * @type {Node}\n */\n get parent() {\n return this._parentNode;\n }\n\n /**\n * Sets the Node's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set position(value) {\n this._position.set(value || [0, 0, 0]);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get position() {\n return this._position;\n }\n\n /**\n * Sets the Node's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set rotation(value) {\n this._rotation.set(value || [0, 0, 0]);\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get rotation() {\n return this._rotation;\n }\n\n /**\n * Sets the Node's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n set quaternion(value) {\n this._quaternion.set(value || [0, 0, 0, 1]);\n math.quaternionToEuler(this._quaternion, \"XYZ\", this._rotation);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n get quaternion() {\n return this._quaternion;\n }\n\n /**\n * Sets the Node's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n set scale(value) {\n this._scale.set(value || [1, 1, 1]);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the Node's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n set matrix(value) {\n if (!this._localMatrix) {\n this._localMatrix = math.identityMat4();\n }\n this._localMatrix.set(value || identityMat);\n math.decomposeMat4(this._localMatrix, this._position, this._quaternion, this._scale);\n this._localMatrixDirty = false;\n this._setWorldMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n get matrix() {\n if (this._localMatrixDirty) {\n if (!this._localMatrix) {\n this._localMatrix = math.identityMat4();\n }\n math.composeMat4(this._position, this._quaternion, this._scale, this._localMatrix);\n this._localMatrixDirty = false;\n }\n return this._localMatrix;\n }\n\n /**\n * Gets the Node's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n if (this._worldMatrixDirty) {\n this._buildWorldMatrix();\n }\n return this._worldMatrix;\n }\n\n /**\n * Rotates the Node about the given local axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotate(axis, angle) {\n angleAxis[0] = axis[0];\n angleAxis[1] = axis[1];\n angleAxis[2] = axis[2];\n angleAxis[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis, q1);\n math.mulQuaternions(this.quaternion, q1, q2);\n this.quaternion = q2;\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n return this;\n }\n\n /**\n * Rotates the Node about the given World-space axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotateOnWorldAxis(axis, angle) {\n angleAxis[0] = axis[0];\n angleAxis[1] = axis[1];\n angleAxis[2] = axis[2];\n angleAxis[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis, q1);\n math.mulQuaternions(q1, this.quaternion, q1);\n //this.quaternion.premultiply(q1);\n return this;\n }\n\n /**\n * Rotates the Node about the local X-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateX(angle) {\n return this.rotate(xAxis, angle);\n }\n\n /**\n * Rotates the Node about the local Y-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateY(angle) {\n return this.rotate(yAxis, angle);\n }\n\n /**\n * Rotates the Node about the local Z-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateZ(angle) {\n return this.rotate(zAxis, angle);\n }\n\n /**\n * Translates the Node along local space vector by the given increment.\n *\n * @param {Number[]} axis Normalized local space 3D vector along which to translate.\n * @param {Number} distance Distance to translate along the vector.\n */\n translate(axis, distance) {\n math.vec3ApplyQuaternion(this.quaternion, axis, veca);\n math.mulVec3Scalar(veca, distance, vecb);\n math.addVec3(this.position, vecb, this.position);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n return this;\n }\n\n /**\n * Translates the Node along the local X-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the X-axis.\n */\n translateX(distance) {\n return this.translate(xAxis, distance);\n }\n\n /**\n * Translates the Node along the local Y-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Y-axis.\n */\n translateY(distance) {\n return this.translate(yAxis, distance);\n }\n\n /**\n * Translates the Node along the local Z-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Z-axis.\n */\n translateZ(distance) {\n return this.translate(zAxis, distance);\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Component members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n @private\n */\n get type() {\n return \"Node\";\n }\n\n /**\n * Destroys this Node.\n */\n destroy() {\n super.destroy();\n if (this._parentNode) {\n this._parentNode.removeChild(this);\n }\n if (this._isObject) {\n this.scene._deregisterObject(this);\n if (this._visible) {\n this.scene._objectVisibilityUpdated(this, false, false);\n }\n if (this._xrayed) {\n this.scene._objectXRayedUpdated(this, false, false);\n }\n if (this._selected) {\n this.scene._objectSelectedUpdated(this, false, false);\n }\n if (this._highlighted) {\n this.scene._objectHighlightedUpdated(this, false, false);\n }\n this.scene._objectColorizeUpdated(this, false);\n this.scene._objectOpacityUpdated(this, false);\n if (this.offset.some((v) => v !== 0))\n this.scene._objectOffsetUpdated(this, false);\n }\n if (this._isModel) {\n this.scene._deregisterModel(this);\n }\n if (this._children.length) {\n // Clone the _children before iterating, so our children don't mess us up when calling removeChild().\n const tempChildList = this._children.splice();\n let child;\n for (let i = 0, len = tempChildList.length; i < len; i++) {\n child = tempChildList[i];\n child.destroy();\n }\n }\n this._children = [];\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n }\n\n}\n\nexport {Node};\n", @@ -153651,7 +154210,7 @@ "lineNumber": 1 }, { - "__docId__": 7754, + "__docId__": 7773, "kind": "variable", "name": "angleAxis", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153672,7 +154231,7 @@ "ignore": true }, { - "__docId__": 7755, + "__docId__": 7774, "kind": "variable", "name": "q1", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153693,7 +154252,7 @@ "ignore": true }, { - "__docId__": 7756, + "__docId__": 7775, "kind": "variable", "name": "q2", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153714,7 +154273,7 @@ "ignore": true }, { - "__docId__": 7757, + "__docId__": 7776, "kind": "variable", "name": "xAxis", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153735,7 +154294,7 @@ "ignore": true }, { - "__docId__": 7758, + "__docId__": 7777, "kind": "variable", "name": "yAxis", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153756,7 +154315,7 @@ "ignore": true }, { - "__docId__": 7759, + "__docId__": 7778, "kind": "variable", "name": "zAxis", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153777,7 +154336,7 @@ "ignore": true }, { - "__docId__": 7760, + "__docId__": 7779, "kind": "variable", "name": "veca", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153798,7 +154357,7 @@ "ignore": true }, { - "__docId__": 7761, + "__docId__": 7780, "kind": "variable", "name": "vecb", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153819,7 +154378,7 @@ "ignore": true }, { - "__docId__": 7762, + "__docId__": 7781, "kind": "variable", "name": "identityMat", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153840,7 +154399,7 @@ "ignore": true }, { - "__docId__": 7763, + "__docId__": 7782, "kind": "class", "name": "Node", "memberof": "src/viewer/scene/nodes/Node.js", @@ -153861,7 +154420,7 @@ ] }, { - "__docId__": 7764, + "__docId__": 7783, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154220,7 +154779,7 @@ ] }, { - "__docId__": 7765, + "__docId__": 7784, "kind": "member", "name": "_parentNode", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154238,7 +154797,7 @@ } }, { - "__docId__": 7766, + "__docId__": 7785, "kind": "member", "name": "_children", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154256,7 +154815,7 @@ } }, { - "__docId__": 7767, + "__docId__": 7786, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154274,7 +154833,7 @@ } }, { - "__docId__": 7768, + "__docId__": 7787, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154292,7 +154851,7 @@ } }, { - "__docId__": 7769, + "__docId__": 7788, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154310,7 +154869,7 @@ } }, { - "__docId__": 7770, + "__docId__": 7789, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154328,7 +154887,7 @@ } }, { - "__docId__": 7771, + "__docId__": 7790, "kind": "member", "name": "_quaternion", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154346,7 +154905,7 @@ } }, { - "__docId__": 7772, + "__docId__": 7791, "kind": "member", "name": "_rotation", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154364,7 +154923,7 @@ } }, { - "__docId__": 7773, + "__docId__": 7792, "kind": "member", "name": "_position", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154382,7 +154941,7 @@ } }, { - "__docId__": 7774, + "__docId__": 7793, "kind": "member", "name": "_offset", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154400,7 +154959,7 @@ } }, { - "__docId__": 7775, + "__docId__": 7794, "kind": "member", "name": "_localMatrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154418,7 +154977,7 @@ } }, { - "__docId__": 7776, + "__docId__": 7795, "kind": "member", "name": "_worldMatrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154436,7 +154995,7 @@ } }, { - "__docId__": 7777, + "__docId__": 7796, "kind": "member", "name": "_localMatrixDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154454,7 +155013,7 @@ } }, { - "__docId__": 7778, + "__docId__": 7797, "kind": "member", "name": "_worldMatrixDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154472,7 +155031,7 @@ } }, { - "__docId__": 7783, + "__docId__": 7802, "kind": "member", "name": "_isModel", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154490,7 +155049,7 @@ } }, { - "__docId__": 7784, + "__docId__": 7803, "kind": "member", "name": "_isObject", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154508,7 +155067,7 @@ } }, { - "__docId__": 7800, + "__docId__": 7819, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154529,7 +155088,7 @@ } }, { - "__docId__": 7801, + "__docId__": 7820, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154550,7 +155109,7 @@ } }, { - "__docId__": 7802, + "__docId__": 7821, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154572,7 +155131,7 @@ "abstract": true }, { - "__docId__": 7803, + "__docId__": 7822, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154593,7 +155152,7 @@ } }, { - "__docId__": 7804, + "__docId__": 7823, "kind": "set", "name": "origin", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154614,7 +155173,7 @@ } }, { - "__docId__": 7805, + "__docId__": 7824, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154632,7 +155191,7 @@ } }, { - "__docId__": 7807, + "__docId__": 7826, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154653,7 +155212,7 @@ } }, { - "__docId__": 7808, + "__docId__": 7827, "kind": "set", "name": "rtcCenter", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154675,7 +155234,7 @@ } }, { - "__docId__": 7810, + "__docId__": 7829, "kind": "get", "name": "rtcCenter", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154697,7 +155256,7 @@ } }, { - "__docId__": 7811, + "__docId__": 7830, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154718,7 +155277,7 @@ } }, { - "__docId__": 7812, + "__docId__": 7831, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154739,7 +155298,7 @@ } }, { - "__docId__": 7813, + "__docId__": 7832, "kind": "member", "name": "_visible", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154757,7 +155316,7 @@ } }, { - "__docId__": 7814, + "__docId__": 7833, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154778,7 +155337,7 @@ } }, { - "__docId__": 7815, + "__docId__": 7834, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154799,7 +155358,7 @@ } }, { - "__docId__": 7816, + "__docId__": 7835, "kind": "member", "name": "_xrayed", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154817,7 +155376,7 @@ } }, { - "__docId__": 7817, + "__docId__": 7836, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154838,7 +155397,7 @@ } }, { - "__docId__": 7818, + "__docId__": 7837, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154859,7 +155418,7 @@ } }, { - "__docId__": 7819, + "__docId__": 7838, "kind": "member", "name": "_highlighted", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154877,7 +155436,7 @@ } }, { - "__docId__": 7820, + "__docId__": 7839, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154898,7 +155457,7 @@ } }, { - "__docId__": 7821, + "__docId__": 7840, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154919,7 +155478,7 @@ } }, { - "__docId__": 7822, + "__docId__": 7841, "kind": "member", "name": "_selected", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154937,7 +155496,7 @@ } }, { - "__docId__": 7823, + "__docId__": 7842, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154958,7 +155517,7 @@ } }, { - "__docId__": 7824, + "__docId__": 7843, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154979,7 +155538,7 @@ } }, { - "__docId__": 7825, + "__docId__": 7844, "kind": "member", "name": "_edges", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -154997,7 +155556,7 @@ } }, { - "__docId__": 7826, + "__docId__": 7845, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155018,7 +155577,7 @@ } }, { - "__docId__": 7827, + "__docId__": 7846, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155039,7 +155598,7 @@ } }, { - "__docId__": 7828, + "__docId__": 7847, "kind": "member", "name": "_culled", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155057,7 +155616,7 @@ } }, { - "__docId__": 7829, + "__docId__": 7848, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155078,7 +155637,7 @@ } }, { - "__docId__": 7830, + "__docId__": 7849, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155099,7 +155658,7 @@ } }, { - "__docId__": 7831, + "__docId__": 7850, "kind": "member", "name": "_clippable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155117,7 +155676,7 @@ } }, { - "__docId__": 7832, + "__docId__": 7851, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155138,7 +155697,7 @@ } }, { - "__docId__": 7833, + "__docId__": 7852, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155159,7 +155718,7 @@ } }, { - "__docId__": 7834, + "__docId__": 7853, "kind": "member", "name": "_collidable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155177,7 +155736,7 @@ } }, { - "__docId__": 7835, + "__docId__": 7854, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155198,7 +155757,7 @@ } }, { - "__docId__": 7836, + "__docId__": 7855, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155219,7 +155778,7 @@ } }, { - "__docId__": 7837, + "__docId__": 7856, "kind": "member", "name": "_pickable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155237,7 +155796,7 @@ } }, { - "__docId__": 7838, + "__docId__": 7857, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155258,7 +155817,7 @@ } }, { - "__docId__": 7839, + "__docId__": 7858, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155279,7 +155838,7 @@ } }, { - "__docId__": 7840, + "__docId__": 7859, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155300,7 +155859,7 @@ } }, { - "__docId__": 7841, + "__docId__": 7860, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155321,7 +155880,7 @@ } }, { - "__docId__": 7842, + "__docId__": 7861, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155342,7 +155901,7 @@ } }, { - "__docId__": 7843, + "__docId__": 7862, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155363,7 +155922,7 @@ } }, { - "__docId__": 7844, + "__docId__": 7863, "kind": "member", "name": "_castsShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155381,7 +155940,7 @@ } }, { - "__docId__": 7845, + "__docId__": 7864, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155402,7 +155961,7 @@ } }, { - "__docId__": 7846, + "__docId__": 7865, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155423,7 +155982,7 @@ } }, { - "__docId__": 7847, + "__docId__": 7866, "kind": "member", "name": "_receivesShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155441,7 +156000,7 @@ } }, { - "__docId__": 7848, + "__docId__": 7867, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155462,7 +156021,7 @@ } }, { - "__docId__": 7849, + "__docId__": 7868, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155484,7 +156043,7 @@ "abstract": true }, { - "__docId__": 7850, + "__docId__": 7869, "kind": "set", "name": "offset", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155505,7 +156064,7 @@ } }, { - "__docId__": 7851, + "__docId__": 7870, "kind": "get", "name": "offset", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155526,7 +156085,7 @@ } }, { - "__docId__": 7852, + "__docId__": 7871, "kind": "get", "name": "isNode", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155547,7 +156106,7 @@ } }, { - "__docId__": 7853, + "__docId__": 7872, "kind": "method", "name": "_setLocalMatrixDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155564,7 +156123,7 @@ "return": null }, { - "__docId__": 7855, + "__docId__": 7874, "kind": "method", "name": "_setWorldMatrixDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155581,7 +156140,7 @@ "return": null }, { - "__docId__": 7857, + "__docId__": 7876, "kind": "method", "name": "_buildWorldMatrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155598,7 +156157,7 @@ "return": null }, { - "__docId__": 7859, + "__docId__": 7878, "kind": "method", "name": "_setSubtreeAABBsDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155622,7 +156181,7 @@ "return": null }, { - "__docId__": 7860, + "__docId__": 7879, "kind": "method", "name": "_setAABBDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155639,7 +156198,7 @@ "return": null }, { - "__docId__": 7861, + "__docId__": 7880, "kind": "method", "name": "_updateAABB", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155656,7 +156215,7 @@ "return": null }, { - "__docId__": 7864, + "__docId__": 7883, "kind": "method", "name": "addChild", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155710,7 +156269,7 @@ } }, { - "__docId__": 7866, + "__docId__": 7885, "kind": "method", "name": "removeChild", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155737,7 +156296,7 @@ "return": null }, { - "__docId__": 7869, + "__docId__": 7888, "kind": "method", "name": "removeChildren", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155752,7 +156311,7 @@ "return": null }, { - "__docId__": 7872, + "__docId__": 7891, "kind": "get", "name": "numChildren", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155773,7 +156332,7 @@ } }, { - "__docId__": 7873, + "__docId__": 7892, "kind": "get", "name": "children", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155794,7 +156353,7 @@ } }, { - "__docId__": 7874, + "__docId__": 7893, "kind": "set", "name": "parent", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155815,7 +156374,7 @@ } }, { - "__docId__": 7875, + "__docId__": 7894, "kind": "get", "name": "parent", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155836,7 +156395,7 @@ } }, { - "__docId__": 7876, + "__docId__": 7895, "kind": "set", "name": "position", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155857,7 +156416,7 @@ } }, { - "__docId__": 7877, + "__docId__": 7896, "kind": "get", "name": "position", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155878,7 +156437,7 @@ } }, { - "__docId__": 7878, + "__docId__": 7897, "kind": "set", "name": "rotation", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155899,7 +156458,7 @@ } }, { - "__docId__": 7879, + "__docId__": 7898, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155920,7 +156479,7 @@ } }, { - "__docId__": 7880, + "__docId__": 7899, "kind": "set", "name": "quaternion", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155941,7 +156500,7 @@ } }, { - "__docId__": 7881, + "__docId__": 7900, "kind": "get", "name": "quaternion", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155962,7 +156521,7 @@ } }, { - "__docId__": 7882, + "__docId__": 7901, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -155983,7 +156542,7 @@ } }, { - "__docId__": 7883, + "__docId__": 7902, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156004,7 +156563,7 @@ } }, { - "__docId__": 7884, + "__docId__": 7903, "kind": "set", "name": "matrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156025,7 +156584,7 @@ } }, { - "__docId__": 7887, + "__docId__": 7906, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156046,7 +156605,7 @@ } }, { - "__docId__": 7890, + "__docId__": 7909, "kind": "get", "name": "worldMatrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156079,7 +156638,7 @@ } }, { - "__docId__": 7891, + "__docId__": 7910, "kind": "method", "name": "rotate", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156119,7 +156678,7 @@ } }, { - "__docId__": 7893, + "__docId__": 7912, "kind": "method", "name": "rotateOnWorldAxis", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156159,7 +156718,7 @@ } }, { - "__docId__": 7894, + "__docId__": 7913, "kind": "method", "name": "rotateX", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156189,7 +156748,7 @@ } }, { - "__docId__": 7895, + "__docId__": 7914, "kind": "method", "name": "rotateY", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156219,7 +156778,7 @@ } }, { - "__docId__": 7896, + "__docId__": 7915, "kind": "method", "name": "rotateZ", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156249,7 +156808,7 @@ } }, { - "__docId__": 7897, + "__docId__": 7916, "kind": "method", "name": "translate", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156289,7 +156848,7 @@ } }, { - "__docId__": 7898, + "__docId__": 7917, "kind": "method", "name": "translateX", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156319,7 +156878,7 @@ } }, { - "__docId__": 7899, + "__docId__": 7918, "kind": "method", "name": "translateY", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156349,7 +156908,7 @@ } }, { - "__docId__": 7900, + "__docId__": 7919, "kind": "method", "name": "translateZ", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156379,7 +156938,7 @@ } }, { - "__docId__": 7901, + "__docId__": 7920, "kind": "get", "name": "type", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156398,7 +156957,7 @@ } }, { - "__docId__": 7902, + "__docId__": 7921, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -156413,7 +156972,7 @@ "return": null }, { - "__docId__": 7904, + "__docId__": 7923, "kind": "file", "name": "src/viewer/scene/nodes/index.js", "content": "export * from \"./Node.js\";\n", @@ -156424,7 +156983,7 @@ "lineNumber": 1 }, { - "__docId__": 7905, + "__docId__": 7924, "kind": "file", "name": "src/viewer/scene/paths/CubicBezierCurve.js", "content": "import {Curve} from \"./Curve.js\"\nimport {math} from \"../math/math.js\";\n\n/**\n * @desc A {@link Curve} along which a 3D position can be animated.\n *\n * * As shown in the diagram below, a CubicBezierCurve is defined by four control points.\n * * You can sample a {@link CubicBezierCurve#point} and a {@link CubicBezierCurve#tangent} vector on a CubicBezierCurve for any given value of {@link CubicBezierCurve#t} in the range [0..1].\n * * When you set {@link CubicBezierCurve#t} on a CubicBezierCurve, its {@link CubicBezierCurve#point} and {@link CubicBezierCurve#tangent} properties will update accordingly.\n * * To build a complex path, you can combine an unlimited combination of CubicBezierCurves, {@link QuadraticBezierCurve}s and {@link SplineCurve}s into a {@link Path}.\n *\n *
    \n * \n *
    \n * [Cubic Bezier Curve from WikiPedia](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)\n */\nclass CubicBezierCurve extends Curve {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this CubicBezierCurve as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.v0=[0,0,0]] The starting point.\n * @param {Number[]} [cfg.v1=[0,0,0]] The first control point.\n * @param {Number[]} [cfg.v2=[0,0,0]] The middle control point.\n * @param {Number[]} [cfg.v3=[0,0,0]] The ending point.\n * @param {Number} [cfg.t=0] Current position on this CubicBezierCurve, in range between 0..1.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.v0 = cfg.v0;\n this.v1 = cfg.v1;\n this.v2 = cfg.v2;\n this.v3 = cfg.v3;\n this.t = cfg.t;\n }\n\n /**\n * Sets the starting point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @param {Number[]} value The starting point.\n */\n set v0(value) {\n this._v0 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the starting point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @returns {Number[]} The starting point.\n */\n get v0() {\n return this._v0;\n }\n\n /**\n * Sets the first control point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @param {Number[]} value The first control point.\n */\n set v1(value) {\n this._v1 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the first control point on this CubicBezierCurve.\n *\n * Fires a {@link CubicBezierCurve#v1:event} event on change.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @returns {Number[]} The first control point.\n */\n get v1() {\n return this._v1;\n }\n\n /**\n * Sets the second control point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @param {Number[]} value The second control point.\n */\n set v2(value) {\n this._v2 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the second control point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @returns {Number[]} The second control point.\n */\n get v2() {\n return this._v2;\n }\n\n /**\n * Sets the end point on this CubicBezierCurve.\n *\n * Fires a {@link CubicBezierCurve#v3:event} event on change.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @param {Number[]} value The end point.\n */\n set v3(value) {\n this.fire(\"v3\", this._v3 = value || math.vec3([0, 0, 0]));\n }\n\n /**\n * Gets the end point on this CubicBezierCurve.\n *\n * Fires a {@link CubicBezierCurve#v3:event} event on change.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @returns {Number[]} The end point.\n */\n get v3() {\n return this._v3;\n }\n\n /**\n * Sets the current position of progress along this CubicBezierCurve.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * @param {Number} value New progress time value.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the current position of progress along this CubicBezierCurve.\n *\n * @returns {Number} Current progress time value.\n */\n get t() {\n return this._t;\n }\n\n /**\n * Returns point on this CubicBezierCurve at the given position.\n *\n * @param {Number} t Position to get point at.\n *\n * @returns {Number[]} The point at the given position.\n */\n get point() {\n return this.getPoint(this._t);\n }\n\n /**\n * Returns point on this CubicBezierCurve at the given position.\n *\n * @param {Number} t Position to get point at.\n *\n * @returns {Number[]} The point at the given position.\n */\n getPoint(t) {\n\n var vector = math.vec3();\n\n vector[0] = math.b3(t, this._v0[0], this._v1[0], this._v2[0], this._v3[0]);\n vector[1] = math.b3(t, this._v0[1], this._v1[1], this._v2[1], this._v3[1]);\n vector[2] = math.b3(t, this._v0[2], this._v1[2], this._v2[2], this._v3[2]);\n\n return vector;\n }\n\n getJSON() {\n return {\n v0: this._v0,\n v1: this._v1,\n v2: this._v2,\n v3: this._v3,\n t: this._t\n };\n }\n}\n\nexport {CubicBezierCurve}\n", @@ -156435,7 +156994,7 @@ "lineNumber": 1 }, { - "__docId__": 7906, + "__docId__": 7925, "kind": "class", "name": "CubicBezierCurve", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js", @@ -156453,7 +157012,7 @@ ] }, { - "__docId__": 7907, + "__docId__": 7926, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156580,7 +157139,7 @@ ] }, { - "__docId__": 7913, + "__docId__": 7932, "kind": "set", "name": "v0", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156605,7 +157164,7 @@ ] }, { - "__docId__": 7914, + "__docId__": 7933, "kind": "member", "name": "_v0", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156623,7 +157182,7 @@ } }, { - "__docId__": 7915, + "__docId__": 7934, "kind": "get", "name": "v0", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156655,7 +157214,7 @@ } }, { - "__docId__": 7916, + "__docId__": 7935, "kind": "set", "name": "v1", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156680,7 +157239,7 @@ ] }, { - "__docId__": 7917, + "__docId__": 7936, "kind": "member", "name": "_v1", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156698,7 +157257,7 @@ } }, { - "__docId__": 7918, + "__docId__": 7937, "kind": "get", "name": "v1", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156730,7 +157289,7 @@ } }, { - "__docId__": 7919, + "__docId__": 7938, "kind": "set", "name": "v2", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156755,7 +157314,7 @@ ] }, { - "__docId__": 7920, + "__docId__": 7939, "kind": "member", "name": "_v2", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156773,7 +157332,7 @@ } }, { - "__docId__": 7921, + "__docId__": 7940, "kind": "get", "name": "v2", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156805,7 +157364,7 @@ } }, { - "__docId__": 7922, + "__docId__": 7941, "kind": "set", "name": "v3", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156830,7 +157389,7 @@ ] }, { - "__docId__": 7923, + "__docId__": 7942, "kind": "get", "name": "v3", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156862,7 +157421,7 @@ } }, { - "__docId__": 7924, + "__docId__": 7943, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156887,7 +157446,7 @@ ] }, { - "__docId__": 7925, + "__docId__": 7944, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156905,7 +157464,7 @@ } }, { - "__docId__": 7926, + "__docId__": 7945, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156937,7 +157496,7 @@ } }, { - "__docId__": 7927, + "__docId__": 7946, "kind": "get", "name": "point", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -156981,7 +157540,7 @@ } }, { - "__docId__": 7928, + "__docId__": 7947, "kind": "method", "name": "getPoint", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -157020,7 +157579,7 @@ } }, { - "__docId__": 7929, + "__docId__": 7948, "kind": "method", "name": "getJSON", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -157040,7 +157599,7 @@ } }, { - "__docId__": 7930, + "__docId__": 7949, "kind": "file", "name": "src/viewer/scene/paths/Curve.js", "content": "import {Component} from \"../Component.js\"\nimport {math} from \"../math/math.js\";\n\n/**\n * @desc Abstract base class for curve classes.\n */\nclass Curve extends Component {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this Curve as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Curve}, generated automatically when omitted.\n * @param {Object} [cfg] Configs for this Curve.\n * @param {Number} [cfg.t=0] Current position on this Curve, in range between ````0..1````.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.t = cfg.t;\n }\n\n /**\n * Sets the progress along this Curve.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The progress value.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the progress along this Curve.\n *\n * @returns {Number} The progress value.\n */\n get t() {\n return this._t;\n }\n\n /**\n * Gets the tangent on this Curve at position {@link Curve#t}.\n *\n * @returns {Number[]} The tangent.\n */\n get tangent() {\n return this.getTangent(this._t);\n }\n\n /**\n * Gets the length of this Curve.\n *\n * @returns {Number} The Curve length.\n */\n get length() {\n var lengths = this._getLengths();\n return lengths[lengths.length - 1];\n }\n\n /**\n * Returns a normalized tangent vector on this Curve at the given position.\n *\n * @param {Number} t Position to get tangent at.\n * @returns {Number[]} Normalized tangent vector\n */\n getTangent(t) {\n var delta = 0.0001;\n if (t === undefined) {\n t = this._t;\n }\n var t1 = t - delta;\n var t2 = t + delta;\n if (t1 < 0) {\n t1 = 0;\n }\n if (t2 > 1) {\n t2 = 1;\n }\n var pt1 = this.getPoint(t1);\n var pt2 = this.getPoint(t2);\n var vec = math.subVec3(pt2, pt1, []);\n return math.normalizeVec3(vec, []);\n }\n\n getPointAt(u) {\n var t = this.getUToTMapping(u);\n return this.getPoint(t);\n }\n\n /**\n * Samples points on this Curve, at the given number of equally-spaced divisions.\n *\n * @param {Number} divisions The number of divisions.\n * @returns {{Array of Array}} Array of sampled 3D points.\n */\n getPoints(divisions) {\n if (!divisions) {\n divisions = 5;\n }\n var d, pts = [];\n for (d = 0; d <= divisions; d++) {\n pts.push(this.getPoint(d / divisions));\n }\n return pts;\n }\n\n _getLengths(divisions) {\n if (!divisions) {\n divisions = (this.__arcLengthDivisions) ? (this.__arcLengthDivisions) : 200;\n }\n if (this.cacheArcLengths && (this.cacheArcLengths.length === divisions + 1) && !this.needsUpdate) {\n return this.cacheArcLengths;\n\n }\n this.needsUpdate = false;\n var cache = [];\n var current;\n var last = this.getPoint(0);\n var p;\n var sum = 0;\n cache.push(0);\n for (p = 1; p <= divisions; p++) {\n current = this.getPoint(p / divisions);\n sum += math.lenVec3(math.subVec3(current, last, []));\n cache.push(sum);\n last = current;\n }\n this.cacheArcLengths = cache;\n return cache; // { sums: cache, sum:sum }, Sum is in the last element.\n }\n\n _updateArcLengths() {\n this.needsUpdate = true;\n this._getLengths();\n }\n\n // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equi distance\n\n getUToTMapping(u, distance) {\n var arcLengths = this._getLengths();\n var i = 0;\n var il = arcLengths.length;\n var t;\n var targetArcLength; // The targeted u distance value to get\n if (distance) {\n targetArcLength = distance;\n } else {\n targetArcLength = u * arcLengths[il - 1];\n }\n //var time = Date.now();\n var low = 0, high = il - 1, comparison;\n while (low <= high) {\n i = Math.floor(low + (high - low) / 2); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n comparison = arcLengths[i] - targetArcLength;\n if (comparison < 0) {\n low = i + 1;\n } else if (comparison > 0) {\n high = i - 1;\n } else {\n high = i;\n break;\n // DONE\n }\n }\n i = high;\n if (arcLengths[i] === targetArcLength) {\n t = i / (il - 1);\n return t;\n }\n var lengthBefore = arcLengths[i];\n var lengthAfter = arcLengths[i + 1];\n var segmentLength = lengthAfter - lengthBefore;\n var segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n t = (i + segmentFraction) / (il - 1);\n return t;\n }\n}\n\nexport {Curve}", @@ -157051,7 +157610,7 @@ "lineNumber": 1 }, { - "__docId__": 7931, + "__docId__": 7950, "kind": "class", "name": "Curve", "memberof": "src/viewer/scene/paths/Curve.js", @@ -157069,7 +157628,7 @@ ] }, { - "__docId__": 7932, + "__docId__": 7951, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157142,7 +157701,7 @@ ] }, { - "__docId__": 7934, + "__docId__": 7953, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157167,7 +157726,7 @@ ] }, { - "__docId__": 7935, + "__docId__": 7954, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157185,7 +157744,7 @@ } }, { - "__docId__": 7936, + "__docId__": 7955, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157217,7 +157776,7 @@ } }, { - "__docId__": 7937, + "__docId__": 7956, "kind": "get", "name": "tangent", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157249,7 +157808,7 @@ } }, { - "__docId__": 7938, + "__docId__": 7957, "kind": "get", "name": "length", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157281,7 +157840,7 @@ } }, { - "__docId__": 7939, + "__docId__": 7958, "kind": "method", "name": "getTangent", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157320,7 +157879,7 @@ } }, { - "__docId__": 7940, + "__docId__": 7959, "kind": "method", "name": "getPointAt", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157347,7 +157906,7 @@ } }, { - "__docId__": 7941, + "__docId__": 7960, "kind": "method", "name": "getPoints", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157386,7 +157945,7 @@ } }, { - "__docId__": 7942, + "__docId__": 7961, "kind": "method", "name": "_getLengths", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157414,7 +157973,7 @@ } }, { - "__docId__": 7943, + "__docId__": 7962, "kind": "member", "name": "needsUpdate", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157431,7 +157990,7 @@ } }, { - "__docId__": 7944, + "__docId__": 7963, "kind": "member", "name": "cacheArcLengths", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157448,7 +158007,7 @@ } }, { - "__docId__": 7945, + "__docId__": 7964, "kind": "method", "name": "_updateArcLengths", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157465,7 +158024,7 @@ "return": null }, { - "__docId__": 7947, + "__docId__": 7966, "kind": "method", "name": "getUToTMapping", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -157498,7 +158057,7 @@ } }, { - "__docId__": 7948, + "__docId__": 7967, "kind": "file", "name": "src/viewer/scene/paths/Path.js", "content": "import {utils} from \"../utils.js\";\nimport {Curve} from \"./Curve.js\"\n\n/**\n * @desc A complex curved path constructed from various {@link Curve} subtypes.\n *\n * * A Path can be constructed from these {@link Curve} subtypes: {@link SplineCurve}, {@link CubicBezierCurve} and {@link QuadraticBezierCurve}.\n * * You can sample a {@link Path#point} and a {@link Curve#tangent} vector on a Path for any given value of {@link Path#t} in the range ````[0..1]````.\n * * When you set {@link Path#t} on a Path, its {@link Path#point} and {@link Curve#tangent} properties will update accordingly.\n */\nclass Path extends Curve {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this SectionPlane as well.\n * @param {*} [cfg] Path configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {String []} [cfg.paths=[]] IDs or instances of {{#crossLink \"path\"}}{{/crossLink}} subtypes to add to this Path.\n * @param {Number} [cfg.t=0] Current position on this Path, in range between 0..1.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this._cachedLengths = [];\n this._dirty = true;\n this._curves = []; // Array of child Curve components\n this._t = 0;\n this._dirtySubs = []; // Subscriptions to \"dirty\" events from child Curve components\n this._destroyedSubs = []; // Subscriptions to \"destroyed\" events from child Curve components\n this.curves = cfg.curves || []; // Add initial curves\n this.t = cfg.t; // Set initial progress\n }\n\n /**\n * Adds a {@link Curve} to this Path.\n *\n * @param {Curve} curve The {@link Curve} to add.\n */\n addCurve(curve) {\n this._curves.push(curve);\n this._dirty = true;\n }\n\n /**\n * Sets the {@link Curve}s in this Path.\n *\n * Default value is ````[]````.\n *\n * @param {{Array of Spline, Path, QuadraticBezierCurve or CubicBezierCurve}} value.\n */\n set curves(value) {\n\n value = value || [];\n\n var curve;\n // Unsubscribe from events on old curves\n var i;\n var len;\n for (i = 0, len = this._curves.length; i < len; i++) {\n curve = this._curves[i];\n curve.off(this._dirtySubs[i]);\n curve.off(this._destroyedSubs[i]);\n }\n\n this._curves = [];\n this._dirtySubs = [];\n this._destroyedSubs = [];\n\n var self = this;\n\n function curveDirty() {\n self._dirty = true;\n }\n\n function curveDestroyed() {\n var id = this.id;\n for (i = 0, len = self._curves.length; i < len; i++) {\n if (self._curves[i].id === id) {\n self._curves = self._curves.slice(i, i + 1);\n self._dirtySubs = self._dirtySubs.slice(i, i + 1);\n self._destroyedSubs = self._destroyedSubs.slice(i, i + 1);\n self._dirty = true;\n return;\n }\n }\n }\n\n for (i = 0, len = value.length; i < len; i++) {\n curve = value[i];\n if (utils.isNumeric(curve) || utils.isString(curve)) {\n // ID given for curve - find the curve component\n var id = curve;\n curve = this.scene.components[id];\n if (!curve) {\n this.error(\"Component not found: \" + _inQuotes(id));\n continue;\n }\n }\n\n var type = curve.type;\n\n if (type !== \"xeokit.SplineCurve\" &&\n type !== \"xeokit.Path\" &&\n type !== \"xeokit.CubicBezierCurve\" &&\n type !== \"xeokit.QuadraticBezierCurve\") {\n\n this.error(\"Component \" + _inQuotes(curve.id)\n + \" is not a xeokit.SplineCurve, xeokit.Path or xeokit.QuadraticBezierCurve\");\n\n continue;\n }\n\n this._curves.push(curve);\n this._dirtySubs.push(curve.on(\"dirty\", curveDirty));\n this._destroyedSubs.push(curve.once(\"destroyed\", curveDestroyed));\n }\n\n this._dirty = true;\n }\n\n /**\n * Gets the {@link Curve}s in this Path.\n *\n * @returns {{Array of Spline, Path, QuadraticBezierCurve or CubicBezierCurve}} the {@link Curve}s in this path.\n */\n get curves() {\n return this._curves;\n }\n\n /**\n * Sets the current point of progress along this Path.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The current point of progress.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the current point of progress along this Path.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The current point of progress.\n */\n get t() {\n return this._t;\n }\n\n /**\n * Gets point on this Path corresponding to the current value of {@link Path#t}.\n *\n * @returns {Number[]} The point.\n */\n get point() {\n return this.getPoint(this._t);\n }\n\n /**\n * Length of this Path, which is the cumulative length of all {@link Curve}s currently in {@link Path#curves}.\n *\n * @return {Number} Length of this path.\n */\n get length() {\n var lens = this._getCurveLengths();\n return lens[lens.length - 1];\n }\n\n /**\n * Gets a point on this Path corresponding to the given progress position.\n *\n * @param {Number} t Indicates point of progress along this curve, in the range [0..1].\n * @returns {Number[]}\n */\n getPoint(t) {\n var d = t * this.length;\n var curveLengths = this._getCurveLengths();\n var i = 0, diff, curve;\n while (i < curveLengths.length) {\n if (curveLengths[i] >= d) {\n diff = curveLengths[i] - d;\n curve = this._curves[i];\n var u = 1 - diff / curve.length;\n return curve.getPointAt(u);\n }\n i++;\n }\n return null;\n }\n\n _getCurveLengths() {\n if (!this._dirty) {\n return this._cachedLengths;\n }\n var lengths = [];\n var sums = 0;\n var i, il = this._curves.length;\n for (i = 0; i < il; i++) {\n sums += this._curves[i].length;\n lengths.push(sums);\n\n }\n this._cachedLengths = lengths;\n this._dirty = false;\n return lengths;\n }\n\n _getJSON() {\n var curveIds = [];\n for (var i = 0, len = this._curves.length; i < len; i++) {\n curveIds.push(this._curves[i].id);\n }\n return {\n curves: curveIds,\n t: this._t\n };\n }\n\n /**\n * Destroys this Path.\n */\n destroy() {\n super.destroy();\n var i;\n var len;\n var curve;\n for (i = 0, len = this._curves.length; i < len; i++) {\n curve = this._curves[i];\n curve.off(this._dirtySubs[i]);\n curve.off(this._destroyedSubs[i]);\n }\n }\n}\n\nexport {Path}", @@ -157509,7 +158068,7 @@ "lineNumber": 1 }, { - "__docId__": 7949, + "__docId__": 7968, "kind": "class", "name": "Path", "memberof": "src/viewer/scene/paths/Path.js", @@ -157527,7 +158086,7 @@ ] }, { - "__docId__": 7950, + "__docId__": 7969, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157602,7 +158161,7 @@ ] }, { - "__docId__": 7951, + "__docId__": 7970, "kind": "member", "name": "_cachedLengths", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157620,7 +158179,7 @@ } }, { - "__docId__": 7952, + "__docId__": 7971, "kind": "member", "name": "_dirty", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157638,7 +158197,7 @@ } }, { - "__docId__": 7953, + "__docId__": 7972, "kind": "member", "name": "_curves", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157656,7 +158215,7 @@ } }, { - "__docId__": 7954, + "__docId__": 7973, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157674,7 +158233,7 @@ } }, { - "__docId__": 7955, + "__docId__": 7974, "kind": "member", "name": "_dirtySubs", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157692,7 +158251,7 @@ } }, { - "__docId__": 7956, + "__docId__": 7975, "kind": "member", "name": "_destroyedSubs", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157710,7 +158269,7 @@ } }, { - "__docId__": 7959, + "__docId__": 7978, "kind": "method", "name": "addCurve", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157736,7 +158295,7 @@ "return": null }, { - "__docId__": 7961, + "__docId__": 7980, "kind": "set", "name": "curves", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157761,7 +158320,7 @@ ] }, { - "__docId__": 7966, + "__docId__": 7985, "kind": "get", "name": "curves", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157793,7 +158352,7 @@ } }, { - "__docId__": 7967, + "__docId__": 7986, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157818,7 +158377,7 @@ ] }, { - "__docId__": 7969, + "__docId__": 7988, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157850,7 +158409,7 @@ } }, { - "__docId__": 7970, + "__docId__": 7989, "kind": "get", "name": "point", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157882,7 +158441,7 @@ } }, { - "__docId__": 7971, + "__docId__": 7990, "kind": "get", "name": "length", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157908,7 +158467,7 @@ } }, { - "__docId__": 7972, + "__docId__": 7991, "kind": "method", "name": "getPoint", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157947,7 +158506,7 @@ } }, { - "__docId__": 7973, + "__docId__": 7992, "kind": "method", "name": "_getCurveLengths", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157968,7 +158527,7 @@ } }, { - "__docId__": 7976, + "__docId__": 7995, "kind": "method", "name": "_getJSON", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -157989,7 +158548,7 @@ } }, { - "__docId__": 7977, + "__docId__": 7996, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -158004,7 +158563,7 @@ "return": null }, { - "__docId__": 7978, + "__docId__": 7997, "kind": "file", "name": "src/viewer/scene/paths/QuadraticBezierCurve.js", "content": "import {Curve} from \"./Curve.js\"\nimport {math} from \"../math/math.js\";\n\n/**\n * A **QuadraticBezierCurve** is a {@link Curve} along which a 3D position can be animated.\n *\n * * As shown in the diagram below, a QuadraticBezierCurve is defined by three control points\n * * You can sample a {@link QuadraticBezierCurve#point} and a {@link Curve#tangent} vector on a QuadraticBezierCurve for any given value of {@link QuadraticBezierCurve#t} in the range ````[0..1]````\n * * When you set {@link QuadraticBezierCurve#t} on a QuadraticBezierCurve, its {@link QuadraticBezierCurve#point} and {@link Curve#tangent} will update accordingly.\n * * To build a complex path, you can combine an unlimited combination of QuadraticBezierCurves, {@link CubicBezierCurve}s and {@link SplineCurve}s into a {@link Path}.
  • \n *
    \n * \n *
    \n * *[Quadratic Bezier Curve from WikiPedia](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)*\n */\nclass QuadraticBezierCurve extends Curve {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this MetallicMaterial as well.\n * @param {*} [cfg] Configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {{#crossLink \"Scene\"}}Scene{{/crossLink}}, generated automatically when omitted.\n * @param {Number[]} [cfg.v0=[0,0,0]] The starting point.\n * @param {Number[]} [cfg.v1=[0,0,0]] The middle control point.\n * @param {Number[]} [cfg.v2=[0,0,0]] The end point.\n * @param {Number[]} [cfg.t=0] Current position on this QuadraticBezierCurve, in range between ````0..1````.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.v0 = cfg.v0;\n this.v1 = cfg.v1;\n this.v2 = cfg.v2;\n this.t = cfg.t;\n }\n\n /**\n * Sets the starting point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @param {Number[]} value New starting point.\n */\n set v0(value) {\n this._v0 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the starting point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @returns {Number[]} The starting point.\n */\n get v0() {\n return this._v0;\n }\n\n /**\n * Sets the middle control point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @param {Number[]} value New middle control point.\n */\n set v1(value) {\n this._v1 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the middle control point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @returns {Number[]} The middle control point.\n */\n get v1() {\n return this._v1;\n }\n\n /**\n * Sets the end point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @param {Number[]} value The new end point.\n */\n set v2(value) {\n this._v2 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the end point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @returns {Number[]} The end point.\n */\n get v2() {\n return this._v2;\n }\n\n /**\n * Sets the progress along this QuadraticBezierCurve.\n *\n * Automatically clamps to range [0..1].\n *\n * Default value is ````0````.\n *\n * @param {Number} value The new progress location.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the progress along this QuadraticBezierCurve.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The current progress location.\n */\n get t() {\n return this._t;\n }\n\n /**\n Point on this QuadraticBezierCurve at position {@link QuadraticBezierCurve/t}.\n\n @property point\n @type {Number[]}\n */\n get point() {\n return this.getPoint(this._t);\n }\n\n /**\n * Returns the point on this QuadraticBezierCurve at the given position.\n *\n * @param {Number} t Position to get point at.\n * @returns {Number[]} The point.\n */\n getPoint(t) {\n var vector = math.vec3();\n vector[0] = math.b2(t, this._v0[0], this._v1[0], this._v2[0]);\n vector[1] = math.b2(t, this._v0[1], this._v1[1], this._v2[1]);\n vector[2] = math.b2(t, this._v0[2], this._v1[2], this._v2[2]);\n return vector;\n }\n\n getJSON() {\n return {\n v0: this._v0,\n v1: this._v1,\n v2: this._v2,\n t: this._t\n };\n }\n}\n\nexport {QuadraticBezierCurve}", @@ -158015,7 +158574,7 @@ "lineNumber": 1 }, { - "__docId__": 7979, + "__docId__": 7998, "kind": "class", "name": "QuadraticBezierCurve", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js", @@ -158033,7 +158592,7 @@ ] }, { - "__docId__": 7980, + "__docId__": 7999, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158144,7 +158703,7 @@ ] }, { - "__docId__": 7985, + "__docId__": 8004, "kind": "set", "name": "v0", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158169,7 +158728,7 @@ ] }, { - "__docId__": 7986, + "__docId__": 8005, "kind": "member", "name": "_v0", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158187,7 +158746,7 @@ } }, { - "__docId__": 7987, + "__docId__": 8006, "kind": "get", "name": "v0", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158219,7 +158778,7 @@ } }, { - "__docId__": 7988, + "__docId__": 8007, "kind": "set", "name": "v1", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158244,7 +158803,7 @@ ] }, { - "__docId__": 7989, + "__docId__": 8008, "kind": "member", "name": "_v1", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158262,7 +158821,7 @@ } }, { - "__docId__": 7990, + "__docId__": 8009, "kind": "get", "name": "v1", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158294,7 +158853,7 @@ } }, { - "__docId__": 7991, + "__docId__": 8010, "kind": "set", "name": "v2", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158319,7 +158878,7 @@ ] }, { - "__docId__": 7992, + "__docId__": 8011, "kind": "member", "name": "_v2", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158337,7 +158896,7 @@ } }, { - "__docId__": 7993, + "__docId__": 8012, "kind": "get", "name": "v2", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158369,7 +158928,7 @@ } }, { - "__docId__": 7994, + "__docId__": 8013, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158394,7 +158953,7 @@ ] }, { - "__docId__": 7995, + "__docId__": 8014, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158412,7 +158971,7 @@ } }, { - "__docId__": 7996, + "__docId__": 8015, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158444,7 +159003,7 @@ } }, { - "__docId__": 7997, + "__docId__": 8016, "kind": "get", "name": "point", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158477,7 +159036,7 @@ } }, { - "__docId__": 7998, + "__docId__": 8017, "kind": "method", "name": "getPoint", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158516,7 +159075,7 @@ } }, { - "__docId__": 7999, + "__docId__": 8018, "kind": "method", "name": "getJSON", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -158536,7 +159095,7 @@ } }, { - "__docId__": 8000, + "__docId__": 8019, "kind": "file", "name": "src/viewer/scene/paths/SplineCurve.js", "content": "import {Curve} from \"./Curve.js\"\nimport {math} from \"../math/math.js\";\n\n/**\n * @desc A {@link Curve} along which a 3D position can be animated.\n *\n * * As shown in the diagram below, a SplineCurve is defined by three or more control points.\n * * You can sample a {@link SplineCurve#point} and a {@link Curve#tangent} vector on a SplineCurve for any given value of {@link SplineCurve#t} in the range ````[0..1]````.\n * * When you set {@link SplineCurve#t} on a SplineCurve, its {@link SplineCurve#point} and {@link Curve#tangent} will update accordingly.\n * * To build a complex path, you can combine an unlimited combination of SplineCurves, {@link CubicBezierCurve} and {@link QuadraticBezierCurve} into a {@link Path}.\n *
    \n *
    \n *\n * * Spline Curve from Wikipedia*\n */\nclass SplineCurve extends Curve {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this SplineCurve as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Array} [cfg.points=[]] Control points on this SplineCurve.\n * @param {Number} [cfg.t=0] Current position on this SplineCurve, in range between 0..1.\n * @param {Number} [cfg.t=0] Current position on this CubicBezierCurve, in range between 0..1.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.points = cfg.points;\n this.t = cfg.t;\n }\n\n /**\n * Sets the control points on this SplineCurve.\n *\n * Default value is ````[]````.\n *\n * @param {Number[]} value New control points.\n */\n set points(value) {\n this._points = value || [];\n }\n\n /**\n * Gets the control points on this SplineCurve.\n *\n * Default value is ````[]````.\n *\n * @returns {Number[]} The control points.\n */\n get points() {\n return this._points;\n }\n\n /**\n * Sets the progress along this SplineCurve.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The new progress.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the progress along this SplineCurve.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The new progress.\n */\n get t() {\n return this._t;\n }\n\n /**\n * Gets the point on this SplineCurve at position {@link SplineCurve#t}.\n *\n * @returns {Number[]} The point at {@link SplineCurve#t}.\n */\n get point() {\n return this.getPoint(this._t);\n }\n\n /**\n * Returns point on this SplineCurve at the given position.\n *\n * @param {Number} t Position to get point at.\n * @returns {Number[]} Point at the given position.\n */\n getPoint(t) {\n\n var points = this.points;\n\n if (points.length < 3) {\n this.error(\"Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].\");\n return;\n }\n\n var point = (points.length - 1) * t;\n\n var intPoint = Math.floor(point);\n var weight = point - intPoint;\n\n var point0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n var point1 = points[intPoint];\n var point2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n var point3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n\n var vector = math.vec3();\n\n vector[0] = math.catmullRomInterpolate(point0[0], point1[0], point2[0], point3[0], weight);\n vector[1] = math.catmullRomInterpolate(point0[1], point1[1], point2[1], point3[1], weight);\n vector[2] = math.catmullRomInterpolate(point0[2], point1[2], point2[2], point3[2], weight);\n\n return vector;\n }\n\n getJSON() {\n return {\n points: points,\n t: this._t\n };\n }\n}\n\nexport {SplineCurve}", @@ -158547,7 +159106,7 @@ "lineNumber": 1 }, { - "__docId__": 8001, + "__docId__": 8020, "kind": "class", "name": "SplineCurve", "memberof": "src/viewer/scene/paths/SplineCurve.js", @@ -158565,7 +159124,7 @@ ] }, { - "__docId__": 8002, + "__docId__": 8021, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158652,7 +159211,7 @@ ] }, { - "__docId__": 8005, + "__docId__": 8024, "kind": "set", "name": "points", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158677,7 +159236,7 @@ ] }, { - "__docId__": 8006, + "__docId__": 8025, "kind": "member", "name": "_points", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158695,7 +159254,7 @@ } }, { - "__docId__": 8007, + "__docId__": 8026, "kind": "get", "name": "points", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158727,7 +159286,7 @@ } }, { - "__docId__": 8008, + "__docId__": 8027, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158752,7 +159311,7 @@ ] }, { - "__docId__": 8009, + "__docId__": 8028, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158770,7 +159329,7 @@ } }, { - "__docId__": 8010, + "__docId__": 8029, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158802,7 +159361,7 @@ } }, { - "__docId__": 8011, + "__docId__": 8030, "kind": "get", "name": "point", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158834,7 +159393,7 @@ } }, { - "__docId__": 8012, + "__docId__": 8031, "kind": "method", "name": "getPoint", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158873,7 +159432,7 @@ } }, { - "__docId__": 8013, + "__docId__": 8032, "kind": "method", "name": "getJSON", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -158893,7 +159452,7 @@ } }, { - "__docId__": 8014, + "__docId__": 8033, "kind": "file", "name": "src/viewer/scene/paths/index.js", "content": "export * from \"./CubicBezierCurve.js\";\nexport * from \"./Curve.js\";\nexport * from \"./Path.js\";\nexport * from \"./QuadraticBezierCurve.js\";\nexport * from \"./SplineCurve.js\";", @@ -158904,7 +159463,7 @@ "lineNumber": 1 }, { - "__docId__": 8015, + "__docId__": 8034, "kind": "file", "name": "src/viewer/scene/postfx/CrossSections.js", "content": "import {Component} from '../Component.js';\n\n/**\n * @desc Configures cross-section slices for a {@link Scene}.\n *\n * ## Overview\n *\n * Cross-sections allow to create an additional colored slice for used clipping planes. It is only a visual effect\n * calculated by shaders. It makes it easier to see the intersection between the model and the clipping plane this way.\n *\n * ## Usage\n *\n * In the example below, we'll configure CrossSections to manipulate the slice representation.\n *\n * ````javascript\n * //------------------------------------------------------------------------------------------------------------------\n * // Import the modules we need for this example\n * //------------------------------------------------------------------------------------------------------------------\n *\n * import {PhongMaterial, Viewer, math, SectionPlanesPlugin, XKTLoaderPlugin, Mesh, ReadableGeometry, buildPolylineGeometryFromCurve, SplineCurve} from \"../../dist/xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Create a Viewer and arrange the camera\n * //------------------------------------------------------------------------------------------------------------------\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.341298674548419, 22.43987089731119, 7.236688436028655];\n * viewer.camera.look = [4.399999999999963, 3.7240000000000606, 8.899000000000006];\n * viewer.camera.up = [0.9102954845584759, 0.34781746407929504, 0.22446635042673466];\n *\n * const cameraControl = viewer.cameraControl;\n * cameraControl.navMode = \"orbit\";\n * cameraControl.followPointer = true;\n *\n * //----------------------------------------------------------------------------------------------------------------------\n * // Create a xeokit loader plugin, load a model, fit to view\n * //----------------------------------------------------------------------------------------------------------------------\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * var t0 = performance.now();\n *\n * document.getElementById(\"time\").innerHTML = \"Loading model...\";\n *\n * const sceneModel = xktLoader.load({\n * id: \"myModel\",\n * src: \"../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt\",\n * edges: true\n * });\n *\n * sceneModel.on(\"loaded\", () => {\n * var t1 = performance.now();\n * document.getElementById(\"time\").innerHTML = \"Model loaded in \" + Math.floor(t1 - t0) / 1000.0 + \" seconds
    Objects: \" + sceneModel.numEntities;\n *\n * let path = new SplineCurve(viewer.scene, {\n * points: [\n * [0, 0, -10],\n * [0, 0, -3],\n * [10, 0, 10],\n * [10, 0, 30],\n * ],\n * });\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildPolylineGeometryFromCurve({\n * id: \"SplineCurve\",\n * curve: path,\n * divisions: 50,\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * emissive: [1, 0, 0]\n * })\n * });\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Create a moving SectionPlane, that moves through the table models\n * //------------------------------------------------------------------------------------------------------------------\n *\n * const sectionPlanes = new SectionPlanesPlugin(viewer, {\n * overviewCanvasId: \"mySectionPlanesOverviewCanvas\",\n * overviewVisible: true\n * });\n *\n * let currentPoint = path.getPoint(0);\n * let currentDirection = path.getTangent(0);\n *\n * const sectionPlane = sectionPlanes.createSectionPlane({\n * id: \"mySectionPlane\",\n * pos: currentPoint,\n * dir: currentDirection\n * });\n *\n * sectionPlanes.showControl(sectionPlane.id);\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Controlling SectionPlane position and direction\n * //------------------------------------------------------------------------------------------------------------------\n *\n * let currentT = 0.0;\n * document.getElementById(\"section_path\").oninput = function() {\n * currentT = Number(document.getElementById(\"section_path\").value);\n * currentPoint = path.getPoint(currentT);\n * currentDirection = path.getTangent(currentT);\n * sectionPlane.pos = currentPoint;\n * sectionPlane.dir = currentDirection;\n * };\n *\n * window.viewer = viewer;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // Controlling CrossSections settings\n * //------------------------------------------------------------------------------------------------------------------\n *\n * viewer.scene.crossSections.sliceThickness = 0.05;\n * viewer.scene.crossSections.sliceColor = [0.0, 0.0, 0.0, 1.0];\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/slicing/#SectionPlanesPlugin_Duplex_SectionPath_CrossSections)]\n *\n */\nclass CrossSections extends Component {\n\n /** @private */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this.sliceColor = cfg.sliceColor;\n this.sliceThickness = cfg.sliceThickness;\n }\n\n /**\n * Sets the thickness of a slice created by a section.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n set sliceThickness(value) {\n if (value === undefined || value === null) {\n value = 0.0;\n }\n if (this._sliceThickness === value) {\n return;\n }\n this._sliceThickness = value;\n this.glRedraw();\n }\n\n /**\n * Gets the thickness of a slice created by a section.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n get sliceThickness() {\n return this._sliceThickness;\n }\n\n /**\n * Sets the color of a slice created by a section.\n *\n * Default value is ````[0.0, 0.0, 0.0, 1.0]````.\n *\n * @type {Number}\n */\n set sliceColor(value) {\n if (value === undefined || value === null) {\n value = [0.0, 0.0, 0.0, 1.0];\n }\n if (this._sliceColor === value) {\n return;\n }\n this._sliceColor = value;\n this.glRedraw();\n }\n\n /**\n * Gets the color of a slice created by a section.\n *\n * Default value is ````[0.0, 0.0, 0.0, 1.0]````.\n *\n * @type {Number}\n */\n get sliceColor() {\n return this._sliceColor;\n }\n\n /**\n * Destroys this component.\n */\n destroy() {\n super.destroy();\n }\n}\n\nexport {CrossSections};", @@ -158915,7 +159474,7 @@ "lineNumber": 1 }, { - "__docId__": 8016, + "__docId__": 8035, "kind": "class", "name": "CrossSections", "memberof": "src/viewer/scene/postfx/CrossSections.js", @@ -158933,7 +159492,7 @@ ] }, { - "__docId__": 8017, + "__docId__": 8036, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/postfx/CrossSections.js~CrossSections", @@ -158947,7 +159506,7 @@ "ignore": true }, { - "__docId__": 8020, + "__docId__": 8039, "kind": "set", "name": "sliceThickness", "memberof": "src/viewer/scene/postfx/CrossSections.js~CrossSections", @@ -158968,7 +159527,7 @@ } }, { - "__docId__": 8021, + "__docId__": 8040, "kind": "member", "name": "_sliceThickness", "memberof": "src/viewer/scene/postfx/CrossSections.js~CrossSections", @@ -158986,7 +159545,7 @@ } }, { - "__docId__": 8022, + "__docId__": 8041, "kind": "get", "name": "sliceThickness", "memberof": "src/viewer/scene/postfx/CrossSections.js~CrossSections", @@ -159007,7 +159566,7 @@ } }, { - "__docId__": 8023, + "__docId__": 8042, "kind": "set", "name": "sliceColor", "memberof": "src/viewer/scene/postfx/CrossSections.js~CrossSections", @@ -159028,7 +159587,7 @@ } }, { - "__docId__": 8024, + "__docId__": 8043, "kind": "member", "name": "_sliceColor", "memberof": "src/viewer/scene/postfx/CrossSections.js~CrossSections", @@ -159046,7 +159605,7 @@ } }, { - "__docId__": 8025, + "__docId__": 8044, "kind": "get", "name": "sliceColor", "memberof": "src/viewer/scene/postfx/CrossSections.js~CrossSections", @@ -159067,7 +159626,7 @@ } }, { - "__docId__": 8026, + "__docId__": 8045, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/postfx/CrossSections.js~CrossSections", @@ -159082,7 +159641,7 @@ "return": null }, { - "__docId__": 8027, + "__docId__": 8046, "kind": "file", "name": "src/viewer/scene/postfx/SAO.js", "content": "import {Component} from '../Component.js';\nimport {WEBGL_INFO} from \"../webglInfo.js\";\n\n/**\n * @desc Configures Scalable Ambient Obscurance (SAO) for a {@link Scene}.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/viewer/#sao_ConferenceCenter)]\n *\n * ## Overview\n *\n * SAO approximates [Ambient Occlusion](https://en.wikipedia.org/wiki/Ambient_occlusion) in realtime. It darkens creases, cavities and surfaces\n * that are close to each other, which tend to be occluded from ambient light and appear darker.\n *\n * The animated GIF above shows the effect as we repeatedly enable and disable SAO. When SAO is enabled, we can see darkening\n * in regions such as the corners, and the crevices between stairs. This increases the amount of detail we can see when ambient\n * light is high, or when objects have uniform colors across their surfaces. Run the example to experiment with the various\n * SAO configurations.\n *\n * xeokit's implementation of SAO is based on the paper [Scalable Ambient Obscurance](https://research.nvidia.com/sites/default/files/pubs/2012-06_Scalable-Ambient-Obscurance/McGuire12SAO.pdf).\n *\n * ## Caveats\n *\n * Currently, SAO only works with perspective and orthographic projections. Therefore, to use SAO, make sure {@link Camera#projection} is\n * either \"perspective\" or \"ortho\".\n *\n * {@link SAO#scale} and {@link SAO#intensity} must be tuned to the distance\n * between {@link Perspective#near} and {@link Perspective#far}, or the distance\n * between {@link Ortho#near} and {@link Ortho#far}, depending on which of those two projections the {@link Camera} is currently\n * using. Use the [live example](https://xeokit.github.io/xeokit-sdk/examples/viewer/#sao_ConferenceCenter) to get a\n * feel for that.\n *\n * ## Usage\n *\n * In the example below, we'll start by logging a warning message to the console if SAO is not supported by the\n * system.\n *\n *Then we'll enable and configure SAO, position the camera, and configure the near and far perspective and orthographic\n * clipping planes. Finally, we'll use {@link XKTLoaderPlugin} to load the OTC Conference Center model.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * const sao = viewer.scene.sao;\n *\n * if (!sao.supported) {\n * sao.warn(\"SAO is not supported on this system - ignoring SAO configs\")\n * }\n *\n * sao.enabled = true; // Enable SAO - only works if supported (see above)\n * sao.intensity = 0.15;\n * sao.bias = 0.5;\n * sao.scale = 1.0;\n * sao.minResolution = 0.0;\n * sao.numSamples = 10;\n * sao.kernelRadius = 100;\n * sao.blendCutoff = 0.1;\n *\n * const camera = viewer.scene.camera;\n *\n * camera.eye = [3.69, 5.83, -23.98];\n * camera.look = [84.31, -29.88, -116.21];\n * camera.up = [0.18, 0.96, -0.21];\n *\n * camera.perspective.near = 0.1;\n * camera.perspective.far = 2000.0;\n *\n * camera.ortho.near = 0.1;\n * camera.ortho.far = 2000.0;\n * camera.projection = \"perspective\";\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/OTCConferenceCenter.xkt\"\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/viewer/#sao_ConferenceCenter)]\n *\n * ## Efficiency\n *\n * SAO can incur some rendering overhead, especially on objects that are viewed close to the camera. For this reason,\n * it's recommended to use a low value for {@link SAO#kernelRadius}. A low radius will sample pixels that are close\n * to the source pixel, which will allow the GPU to efficiently cache those pixels. When {@link Camera#projection} is \"perspective\",\n * objects near to the viewpoint will use larger radii than farther pixels. Therefore, computing SAO for close objects\n * is more expensive than for objects far away, that occupy fewer pixels on the canvas.\n *\n * ## Selectively enabling SAO for models\n *\n * When loading multiple models into a Scene, we sometimes only want SAO on the models that are actually going to\n * show it, such as the architecture or structure, and not show SAO on models that won't show it well, such as the\n * electrical wiring, or plumbing.\n *\n * To illustrate, lets load some of the models for the West Riverside Hospital. We'll enable SAO on the structure model,\n * but disable it on the electrical and plumbing.\n *\n * This will only apply SAO to those models if {@link SAO#supported} and {@link SAO#enabled} are both true.\n *\n * Note, by the way, how we load the models in sequence. Since XKTLoaderPlugin uses scratch memory as part of its loading\n * process, this allows the plugin to reuse that same memory across multiple loads, instead of having to create multiple\n * pools of scratch memory.\n *\n * ````javascript\n * const structure = xktLoader.load({\n * id: \"structure\",\n * src: \"./models/xkt/WestRiverSideHospital/structure.xkt\"\n * edges: true,\n * saoEnabled: true\n * });\n *\n * structure.on(\"loaded\", () => {\n *\n * const electrical = xktLoader.load({\n * id: \"electrical\",\n * src: \"./models/xkt/WestRiverSideHospital/electrical.xkt\",\n * edges: true\n * });\n *\n * electrical.on(\"loaded\", () => {\n *\n * const plumbing = xktLoader.load({\n * id: \"plumbing\",\n * src: \"./models/xkt/WestRiverSideHospital/plumbing.xkt\",\n * edges: true\n * });\n * });\n * });\n * ````\n *\n * ## Disabling SAO while camera is moving\n *\n * For smoother interaction with large models on low-power hardware, we can disable SAO while the {@link Camera} is moving:\n *\n * ````javascript\n * const timeoutDuration = 150; // Milliseconds\n * var timer = timeoutDuration;\n * var saoDisabled = false;\n *\n * const onCameraMatrix = scene.camera.on(\"matrix\", () => {\n * timer = timeoutDuration;\n * if (!saoDisabled) {\n * scene.sao.enabled = false;\n * saoDisabled = true;\n * }\n * });\n *\n * const onSceneTick = scene.on(\"tick\", (tickEvent) => {\n * if (!saoDisabled) {\n * return;\n * }\n * timer -= tickEvent.deltaTime; // Milliseconds\n * if (timer <= 0) {\n * if (saoDisabled) {\n * scene.sao.enabled = true;\n * saoDisabled = false;\n * }\n * }\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/index.html#techniques_nonInteractiveQuality)]\n */\nclass SAO extends Component {\n\n /** @private */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._supported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_standard_derivatives\"]; // For computing normals in SAO fragment shader\n\n this.enabled = cfg.enabled;\n this.kernelRadius = cfg.kernelRadius;\n this.intensity = cfg.intensity;\n this.bias = cfg.bias;\n this.scale = cfg.scale;\n this.minResolution = cfg.minResolution;\n this.numSamples = cfg.numSamples;\n this.blur = cfg.blur;\n this.blendCutoff = cfg.blendCutoff;\n this.blendFactor = cfg.blendFactor;\n }\n\n /**\n * Gets whether or not SAO is supported by this browser and GPU.\n *\n * Even when enabled, SAO will only work if supported.\n *\n * @type {Boolean}\n */\n get supported() {\n return this._supported;\n }\n\n /**\n * Sets whether SAO is enabled for the {@link Scene}.\n *\n * Even when enabled, SAO will only work if supported.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set enabled(value) {\n value = !!value;\n if (this._enabled === value) {\n return;\n }\n this._enabled = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether SAO is enabled for the {@link Scene}.\n *\n * Even when enabled, SAO will only apply if supported.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get enabled() {\n return this._enabled;\n }\n\n /**\n * Returns true if SAO is currently possible, where it is supported, enabled, and the current scene state is compatible.\n * Called internally by renderer logic.\n * @private\n * @returns {Boolean}\n */\n get possible() {\n if (!this._supported) {\n return false;\n }\n if (!this._enabled) {\n return false;\n }\n const projection = this.scene.camera.projection;\n if (projection === \"customProjection\") {\n return false;\n }\n if (projection === \"frustum\") {\n return false;\n }\n return true;\n }\n\n /**\n * @private\n * @returns {boolean|*}\n */\n get active() {\n return this._active;\n }\n\n /**\n * Sets the maximum area that SAO takes into account when checking for possible occlusion for each fragment.\n *\n * Default value is ````100.0````.\n *\n * @type {Number}\n */\n set kernelRadius(value) {\n if (value === undefined || value === null) {\n value = 100.0;\n }\n if (this._kernelRadius === value) {\n return;\n }\n this._kernelRadius = value;\n this.glRedraw();\n }\n\n /**\n * Gets the maximum area that SAO takes into account when checking for possible occlusion for each fragment.\n *\n * Default value is ````100.0````.\n *\n * @type {Number}\n */\n get kernelRadius() {\n return this._kernelRadius;\n }\n\n /**\n * Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.15````.\n *\n * @type {Number}\n */\n set intensity(value) {\n if (value === undefined || value === null) {\n value = 0.15;\n }\n if (this._intensity === value) {\n return;\n }\n this._intensity = value;\n this.glRedraw();\n }\n\n /**\n * Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.15````.\n *\n * @type {Number}\n */\n get intensity() {\n return this._intensity;\n }\n\n /**\n * Sets the SAO bias.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n set bias(value) {\n if (value === undefined || value === null) {\n value = 0.5;\n }\n if (this._bias === value) {\n return;\n }\n this._bias = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO bias.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n get bias() {\n return this._bias;\n }\n\n /**\n * Sets the SAO occlusion scale.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set scale(value) {\n if (value === undefined || value === null) {\n value = 1.0;\n }\n if (this._scale === value) {\n return;\n }\n this._scale = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO occlusion scale.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the SAO minimum resolution.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n set minResolution(value) {\n if (value === undefined || value === null) {\n value = 0.0;\n }\n if (this._minResolution === value) {\n return;\n }\n this._minResolution = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO minimum resolution.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n get minResolution() {\n return this._minResolution;\n }\n\n /**\n * Sets the number of SAO samples.\n *\n * Default value is ````10````.\n *\n * Update this sparingly, since it causes a shader recompile.\n *\n * @type {Number}\n */\n set numSamples(value) {\n if (value === undefined || value === null) {\n value = 10;\n }\n if (this._numSamples === value) {\n return;\n }\n this._numSamples = value;\n this.glRedraw();\n }\n\n /**\n * Gets the number of SAO samples.\n *\n * Default value is ````10````.\n *\n * @type {Number}\n */\n get numSamples() {\n return this._numSamples;\n }\n\n /**\n * Sets whether Guassian blur is enabled.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n set blur(value) {\n value = (value !== false);\n if (this._blur === value) {\n return;\n }\n this._blur = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether Guassian blur is enabled.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n get blur() {\n return this._blur;\n }\n\n /**\n * Sets the SAO blend cutoff.\n *\n * Default value is ````0.3````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n */\n set blendCutoff(value) {\n if (value === undefined || value === null) {\n value = 0.3;\n }\n if (this._blendCutoff === value) {\n return;\n }\n this._blendCutoff = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO blend cutoff.\n *\n * Default value is ````0.3````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n */\n get blendCutoff() {\n return this._blendCutoff;\n }\n\n /**\n * Sets the SAO blend factor.\n *\n * Default value is ````1.0````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n */\n set blendFactor(value) {\n if (value === undefined || value === null) {\n value = 1.0;\n }\n if (this._blendFactor === value) {\n return;\n }\n this._blendFactor = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO blend scale.\n *\n * Default value is ````1.0````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n */\n get blendFactor() {\n return this._blendFactor;\n }\n\n /**\n * Destroys this component.\n */\n destroy() {\n super.destroy();\n }\n}\n\nexport {SAO};\n", @@ -159093,7 +159652,7 @@ "lineNumber": 1 }, { - "__docId__": 8028, + "__docId__": 8047, "kind": "class", "name": "SAO", "memberof": "src/viewer/scene/postfx/SAO.js", @@ -159111,7 +159670,7 @@ ] }, { - "__docId__": 8029, + "__docId__": 8048, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159125,7 +159684,7 @@ "ignore": true }, { - "__docId__": 8030, + "__docId__": 8049, "kind": "member", "name": "_supported", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159143,7 +159702,7 @@ } }, { - "__docId__": 8041, + "__docId__": 8060, "kind": "get", "name": "supported", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159164,7 +159723,7 @@ } }, { - "__docId__": 8042, + "__docId__": 8061, "kind": "set", "name": "enabled", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159185,7 +159744,7 @@ } }, { - "__docId__": 8043, + "__docId__": 8062, "kind": "member", "name": "_enabled", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159203,7 +159762,7 @@ } }, { - "__docId__": 8044, + "__docId__": 8063, "kind": "get", "name": "enabled", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159224,7 +159783,7 @@ } }, { - "__docId__": 8045, + "__docId__": 8064, "kind": "get", "name": "possible", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159257,7 +159816,7 @@ } }, { - "__docId__": 8046, + "__docId__": 8065, "kind": "get", "name": "active", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159291,7 +159850,7 @@ } }, { - "__docId__": 8047, + "__docId__": 8066, "kind": "set", "name": "kernelRadius", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159312,7 +159871,7 @@ } }, { - "__docId__": 8048, + "__docId__": 8067, "kind": "member", "name": "_kernelRadius", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159330,7 +159889,7 @@ } }, { - "__docId__": 8049, + "__docId__": 8068, "kind": "get", "name": "kernelRadius", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159351,7 +159910,7 @@ } }, { - "__docId__": 8050, + "__docId__": 8069, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159372,7 +159931,7 @@ } }, { - "__docId__": 8051, + "__docId__": 8070, "kind": "member", "name": "_intensity", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159390,7 +159949,7 @@ } }, { - "__docId__": 8052, + "__docId__": 8071, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159411,7 +159970,7 @@ } }, { - "__docId__": 8053, + "__docId__": 8072, "kind": "set", "name": "bias", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159432,7 +159991,7 @@ } }, { - "__docId__": 8054, + "__docId__": 8073, "kind": "member", "name": "_bias", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159450,7 +160009,7 @@ } }, { - "__docId__": 8055, + "__docId__": 8074, "kind": "get", "name": "bias", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159471,7 +160030,7 @@ } }, { - "__docId__": 8056, + "__docId__": 8075, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159492,7 +160051,7 @@ } }, { - "__docId__": 8057, + "__docId__": 8076, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159510,7 +160069,7 @@ } }, { - "__docId__": 8058, + "__docId__": 8077, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159531,7 +160090,7 @@ } }, { - "__docId__": 8059, + "__docId__": 8078, "kind": "set", "name": "minResolution", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159552,7 +160111,7 @@ } }, { - "__docId__": 8060, + "__docId__": 8079, "kind": "member", "name": "_minResolution", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159570,7 +160129,7 @@ } }, { - "__docId__": 8061, + "__docId__": 8080, "kind": "get", "name": "minResolution", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159591,7 +160150,7 @@ } }, { - "__docId__": 8062, + "__docId__": 8081, "kind": "set", "name": "numSamples", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159612,7 +160171,7 @@ } }, { - "__docId__": 8063, + "__docId__": 8082, "kind": "member", "name": "_numSamples", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159630,7 +160189,7 @@ } }, { - "__docId__": 8064, + "__docId__": 8083, "kind": "get", "name": "numSamples", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159651,7 +160210,7 @@ } }, { - "__docId__": 8065, + "__docId__": 8084, "kind": "set", "name": "blur", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159672,7 +160231,7 @@ } }, { - "__docId__": 8066, + "__docId__": 8085, "kind": "member", "name": "_blur", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159690,7 +160249,7 @@ } }, { - "__docId__": 8067, + "__docId__": 8086, "kind": "get", "name": "blur", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159711,7 +160270,7 @@ } }, { - "__docId__": 8068, + "__docId__": 8087, "kind": "set", "name": "blendCutoff", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159732,7 +160291,7 @@ } }, { - "__docId__": 8069, + "__docId__": 8088, "kind": "member", "name": "_blendCutoff", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159750,7 +160309,7 @@ } }, { - "__docId__": 8070, + "__docId__": 8089, "kind": "get", "name": "blendCutoff", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159771,7 +160330,7 @@ } }, { - "__docId__": 8071, + "__docId__": 8090, "kind": "set", "name": "blendFactor", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159792,7 +160351,7 @@ } }, { - "__docId__": 8072, + "__docId__": 8091, "kind": "member", "name": "_blendFactor", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159810,7 +160369,7 @@ } }, { - "__docId__": 8073, + "__docId__": 8092, "kind": "get", "name": "blendFactor", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159831,7 +160390,7 @@ } }, { - "__docId__": 8074, + "__docId__": 8093, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -159846,7 +160405,7 @@ "return": null }, { - "__docId__": 8075, + "__docId__": 8094, "kind": "file", "name": "src/viewer/scene/scene/Scene.js", "content": "import {core} from '../core.js';\nimport {utils} from '../utils.js';\nimport {math} from '../math/math.js';\nimport {Component} from '../Component.js';\nimport {Canvas} from '../canvas/Canvas.js';\nimport {Renderer} from '../webgl/Renderer.js';\nimport {Input} from '../input/Input.js';\nimport {Viewport} from '../viewport/Viewport.js';\nimport {Camera} from '../camera/Camera.js';\nimport {DirLight} from '../lights/DirLight.js';\nimport {AmbientLight} from '../lights/AmbientLight.js';\nimport {ReadableGeometry} from \"../geometry/ReadableGeometry.js\";\nimport {buildBoxGeometry} from '../geometry/builders/buildBoxGeometry.js';\nimport {PhongMaterial} from '../materials/PhongMaterial.js';\nimport {EmphasisMaterial} from '../materials/EmphasisMaterial.js';\nimport {EdgeMaterial} from '../materials/EdgeMaterial.js';\nimport {Metrics} from \"../metriqs/Metriqs.js\";\nimport {SAO} from \"../postfx/SAO.js\";\nimport {CrossSections} from \"../postfx/CrossSections.js\";\nimport {PointsMaterial} from \"../materials/PointsMaterial.js\";\nimport {LinesMaterial} from \"../materials/LinesMaterial.js\";\n\n// Enables runtime check for redundant calls to object state update methods, eg. Scene#_objectVisibilityUpdated\nconst ASSERT_OBJECT_STATE_UPDATE = false;\n\n// Cached vars to avoid garbage collection\n\nfunction getEntityIDMap(scene, entityIds) {\n const map = {};\n let entityId;\n let entity;\n for (let i = 0, len = entityIds.length; i < len; i++) {\n entityId = entityIds[i];\n entity = scene.components[entityId];\n if (!entity) {\n scene.warn(\"pick(): Component not found: \" + entityId);\n continue;\n }\n if (!entity.isEntity) {\n scene.warn(\"pick(): Component is not an Entity: \" + entityId);\n continue;\n }\n map[entityId] = true;\n }\n return map;\n}\n\n/**\n * Fired whenever a debug message is logged on a component within this Scene.\n * @event log\n * @param {String} value The debug message\n */\n\n/**\n * Fired whenever an error is logged on a component within this Scene.\n * @event error\n * @param {String} value The error message\n */\n\n/**\n * Fired whenever a warning is logged on a component within this Scene.\n * @event warn\n * @param {String} value The warning message\n */\n\n/**\n * @desc Contains the components that comprise a 3D scene.\n *\n * * A {@link Viewer} has a single Scene, which it provides in {@link Viewer#scene}.\n * * Plugins like {@link AxisGizmoPlugin} also have their own private Scenes.\n * * Each Scene has a corresponding {@link MetaScene}, which the Viewer provides in {@link Viewer#metaScene}.\n *\n * ## Getting a Viewer's Scene\n *\n * ````javascript\n * var scene = viewer.scene;\n * ````\n *\n * ## Creating and accessing Scene components\n *\n * As a brief introduction to creating Scene components, we'll create a {@link Mesh} that has a\n * {@link buildTorusGeometry} and a {@link PhongMaterial}:\n *\n * ````javascript\n * var teapotMesh = new Mesh(scene, {\n * id: \"myMesh\", // <<---------- ID automatically generated if not provided\n * geometry: new TorusGeometry(scene),\n * material: new PhongMaterial(scene, {\n * id: \"myMaterial\",\n * diffuse: [0.2, 0.2, 1.0]\n * })\n * });\n *\n * teapotMesh.scene.camera.eye = [45, 45, 45];\n * ````\n *\n * Find components by ID in their Scene's {@link Scene#components} map:\n *\n * ````javascript\n * var teapotMesh = scene.components[\"myMesh\"];\n * teapotMesh.visible = false;\n *\n * var teapotMaterial = scene.components[\"myMaterial\"];\n * teapotMaterial.diffuse = [1,0,0]; // Change to red\n * ````\n *\n * A Scene also has a map of component instances for each {@link Component} subtype:\n *\n * ````javascript\n * var meshes = scene.types[\"Mesh\"];\n * var teapotMesh = meshes[\"myMesh\"];\n * teapotMesh.xrayed = true;\n *\n * var phongMaterials = scene.types[\"PhongMaterial\"];\n * var teapotMaterial = phongMaterials[\"myMaterial\"];\n * teapotMaterial.diffuse = [0,1,0]; // Change to green\n * ````\n *\n * See {@link Node}, {@link Node} and {@link Model} for how to create and access more sophisticated content.\n *\n * ## Controlling the camera\n *\n * Use the Scene's {@link Camera} to control the current viewpoint and projection:\n *\n * ````javascript\n * var camera = myScene.camera;\n *\n * camera.eye = [-10,0,0];\n * camera.look = [-10,0,0];\n * camera.up = [0,1,0];\n *\n * camera.projection = \"perspective\";\n * camera.perspective.fov = 45;\n * //...\n * ````\n *\n * ## Managing the canvas\n *\n * The Scene's {@link Canvas} component provides various conveniences relevant to the WebGL canvas, such\n * as firing resize events etc:\n *\n * ````javascript\n * var canvas = scene.canvas;\n *\n * canvas.on(\"boundary\", function(boundary) {\n * //...\n * });\n * ````\n *\n * ## Picking\n *\n * Use {@link Scene#pick} to pick and raycast entites.\n *\n * For example, to pick a point on the surface of the closest entity at the given canvas coordinates:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * pickSurface: true,\n * canvasPos: [23, 131]\n * });\n *\n * if (pickResult) { // Picked an entity\n *\n * var entity = pickResult.entity;\n *\n * var primitive = pickResult.primitive; // Type of primitive that was picked, usually \"triangles\"\n * var primIndex = pickResult.primIndex; // Position of triangle's first index in the picked Mesh's Geometry's indices array\n * var indices = pickResult.indices; // UInt32Array containing the triangle's vertex indices\n * var localPos = pickResult.localPos; // Float64Array containing the picked Local-space position on the triangle\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the triangle\n * var viewPos = pickResult.viewPos; // Float64Array containing the picked View-space position on the triangle\n * var bary = pickResult.bary; // Float64Array containing the picked barycentric position within the triangle\n * var normal = pickResult.normal; // Float64Array containing the interpolated normal vector at the picked position on the triangle\n * var uv = pickResult.uv; // Float64Array containing the interpolated UV coordinates at the picked position on the triangle\n * }\n * ````\n *\n * ## Pick masking\n *\n * We can use {@link Scene#pick}'s ````includeEntities```` and ````excludeEntities```` options to mask which {@link Mesh}es we attempt to pick.\n *\n * This is useful for picking through things, to pick only the Entities of interest.\n *\n * To pick only Entities ````\"gearbox#77.0\"```` and ````\"gearbox#79.0\"````, picking through any other Entities that are\n * in the way, as if they weren't there:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * canvasPos: [23, 131],\n * includeEntities: [\"gearbox#77.0\", \"gearbox#79.0\"]\n * });\n *\n * if (pickResult) {\n * // Entity will always be either \"gearbox#77.0\" or \"gearbox#79.0\"\n * var entity = pickResult.entity;\n * }\n * ````\n *\n * To pick any pickable Entity, except for ````\"gearbox#77.0\"```` and ````\"gearbox#79.0\"````, picking through those\n * Entities if they happen to be in the way:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * canvasPos: [23, 131],\n * excludeEntities: [\"gearbox#77.0\", \"gearbox#79.0\"]\n * });\n *\n * if (pickResult) {\n * // Entity will never be \"gearbox#77.0\" or \"gearbox#79.0\"\n * var entity = pickResult.entity;\n * }\n * ````\n *\n * See {@link Scene#pick} for more info on picking.\n *\n * ## Querying and tracking boundaries\n *\n * Getting a Scene's World-space axis-aligned boundary (AABB):\n *\n * ````javascript\n * var aabb = scene.aabb; // [xmin, ymin, zmin, xmax, ymax, zmax]\n * ````\n *\n * Subscribing to updates to the AABB, which occur whenever {@link Entity}s are transformed, their\n * {@link ReadableGeometry}s have been updated, or the {@link Camera} has moved:\n *\n * ````javascript\n * scene.on(\"boundary\", function() {\n * var aabb = scene.aabb;\n * });\n * ````\n *\n * Getting the AABB of the {@link Entity}s with the given IDs:\n *\n * ````JavaScript\n * scene.getAABB(); // Gets collective boundary of all Entities in the scene\n * scene.getAABB(\"saw\"); // Gets boundary of an Object\n * scene.getAABB([\"saw\", \"gearbox\"]); // Gets collective boundary of two Objects\n * ````\n *\n * See {@link Scene#getAABB} and {@link Entity} for more info on querying and tracking boundaries.\n *\n * ## Managing the viewport\n *\n * The Scene's {@link Viewport} component manages the WebGL viewport:\n *\n * ````javascript\n * var viewport = scene.viewport\n * viewport.boundary = [0, 0, 500, 400];;\n * ````\n *\n * ## Controlling rendering\n *\n * You can configure a Scene to perform multiple \"passes\" (renders) per frame. This is useful when we want to render the\n * scene to multiple viewports, such as for stereo effects.\n *\n * In the example, below, we'll configure the Scene to render twice on each frame, each time to different viewport. We'll do this\n * with a callback that intercepts the Scene before each render and sets its {@link Viewport} to a\n * different portion of the canvas. By default, the Scene will clear the canvas only before the first render, allowing the\n * two views to be shown on the canvas at the same time.\n *\n * ````Javascript\n * var viewport = scene.viewport;\n *\n * // Configure Scene to render twice for each frame\n * scene.passes = 2; // Default is 1\n * scene.clearEachPass = false; // Default is false\n *\n * // Render to a separate viewport on each render\n *\n * var viewport = scene.viewport;\n * viewport.autoBoundary = false;\n *\n * scene.on(\"rendering\", function (e) {\n * switch (e.pass) {\n * case 0:\n * viewport.boundary = [0, 0, 200, 200]; // xmin, ymin, width, height\n * break;\n *\n * case 1:\n * viewport.boundary = [200, 0, 200, 200];\n * break;\n * }\n * });\n *\n * // We can also intercept the Scene after each render,\n * // (though we're not using this for anything here)\n * scene.on(\"rendered\", function (e) {\n * switch (e.pass) {\n * case 0:\n * break;\n *\n * case 1:\n * break;\n * }\n * });\n * ````\n *\n * ## Gamma correction\n *\n * Within its shaders, xeokit performs shading calculations in linear space.\n *\n * By default, the Scene expects color textures (eg. {@link PhongMaterial#diffuseMap},\n * {@link MetallicMaterial#baseColorMap} and {@link SpecularMaterial#diffuseMap}) to\n * be in pre-multipled gamma space, so will convert those to linear space before they are used in shaders. Other textures are\n * always expected to be in linear space.\n *\n * By default, the Scene will also gamma-correct its rendered output.\n *\n * You can configure the Scene to expect all those color textures to be linear space, so that it does not gamma-correct them:\n *\n * ````javascript\n * scene.gammaInput = false;\n * ````\n *\n * You would still need to gamma-correct the output, though, if it's going straight to the canvas, so normally we would\n * leave that enabled:\n *\n * ````javascript\n * scene.gammaOutput = true;\n * ````\n *\n * See {@link Texture} for more information on texture encoding and gamma.\n *\n * @class Scene\n */\nclass Scene extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Scene\";\n }\n\n /**\n * @private\n * @constructor\n * @param {Viewer} viewer The Viewer this Scene belongs to.\n * @param {Object} cfg Scene configuration.\n * @param {String} [cfg.canvasId] ID of an existing HTML canvas for the {@link Scene#canvas} - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLCanvasElement} [cfg.canvasElement] Reference of an existing HTML canvas for the {@link Scene#canvas} - either this or canvasId is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLElement} [cfg.keyboardEventsElement] Optional reference to HTML element on which key events should be handled. Defaults to the HTML Document.\n * @param {number} [cfg.numCachedSectionPlanes=0] Enhances the efficiency of SectionPlane creation by proactively allocating Viewer resources for a specified quantity\n * of SectionPlanes. Introducing this parameter streamlines the initial creation speed of SectionPlanes, particularly up to the designated quantity. This parameter internally\n * configures renderer logic for the specified number of SectionPlanes, eliminating the need for setting up logic with each SectionPlane creation and thereby enhancing\n * responsiveness. It is important to consider that each SectionPlane imposes rendering performance, so it is recommended to set this value to a quantity that aligns with\n * your expected usage.\n * @throws {String} Throws an exception when both canvasId or canvasElement are missing or they aren't pointing to a valid HTMLCanvasElement.\n */\n constructor(viewer, cfg = {}) {\n\n super(null, cfg);\n\n const canvas = cfg.canvasElement || document.getElementById(cfg.canvasId);\n\n if (!(canvas instanceof HTMLCanvasElement)) {\n throw \"Mandatory config expected: valid canvasId or canvasElement\";\n }\n\n /**\n * @type {{[key: string]: {wrapperFunc: Function, tickSubId: string}}}\n */\n this._tickifiedFunctions = {};\n\n const transparent = (!!cfg.transparent);\n const alphaDepthMask = (!!cfg.alphaDepthMask);\n\n this._aabbDirty = true;\n\n /**\n * The {@link Viewer} this Scene belongs to.\n * @type {Viewer}\n */\n this.viewer = viewer;\n\n /** Decremented each frame, triggers occlusion test for occludable {@link Marker}s when zero.\n * @private\n * @type {number}\n */\n this.occlusionTestCountdown = 0;\n\n /**\n The number of models currently loading.\n\n @property loading\n @final\n @type {Number}\n */\n this.loading = 0;\n\n /**\n The epoch time (in milliseconds since 1970) when this Scene was instantiated.\n\n @property timeCreated\n @final\n @type {Number}\n */\n this.startTime = (new Date()).getTime();\n\n /**\n * Map of {@link Entity}s that represent models.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id} when {@link Entity#isModel} is ````true````.\n *\n * @property models\n * @final\n * @type {{String:Entity}}\n */\n this.models = {};\n\n /**\n * Map of {@link Entity}s that represents objects.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id} when {@link Entity#isObject} is ````true````.\n *\n * @property objects\n * @final\n * @type {{String:Entity}}\n */\n this.objects = {};\n this._numObjects = 0;\n\n /**\n * Map of currently visible {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````, and is visible when {@link Entity#visible} is true.\n *\n * @property visibleObjects\n * @final\n * @type {{String:Object}}\n */\n this.visibleObjects = {};\n this._numVisibleObjects = 0;\n\n /**\n * Map of currently xrayed {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````, and is xrayed when {@link Entity#xrayed} is true.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property xrayedObjects\n * @final\n * @type {{String:Object}}\n */\n this.xrayedObjects = {};\n this._numXRayedObjects = 0;\n\n /**\n * Map of currently highlighted {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true```` is true, and is highlighted when {@link Entity#highlighted} is true.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property highlightedObjects\n * @final\n * @type {{String:Object}}\n */\n this.highlightedObjects = {};\n this._numHighlightedObjects = 0;\n\n /**\n * Map of currently selected {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is true, and is selected while {@link Entity#selected} is true.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property selectedObjects\n * @final\n * @type {{String:Object}}\n */\n this.selectedObjects = {};\n this._numSelectedObjects = 0;\n\n /**\n * Map of currently colorized {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property colorizedObjects\n * @final\n * @type {{String:Object}}\n */\n this.colorizedObjects = {};\n this._numColorizedObjects = 0;\n\n /**\n * Map of {@link Entity}s that represent objects whose opacity was updated.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property opacityObjects\n * @final\n * @type {{String:Object}}\n */\n this.opacityObjects = {};\n this._numOpacityObjects = 0;\n\n /**\n * Map of {@link Entity}s that represent objects whose {@link Entity#offset}s were updated.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property offsetObjects\n * @final\n * @type {{String:Object}}\n */\n this.offsetObjects = {};\n this._numOffsetObjects = 0;\n\n // Cached ID arrays, lazy-rebuilt as needed when stale after map updates\n\n /**\n Lazy-regenerated ID lists.\n */\n this._modelIds = null;\n this._objectIds = null;\n this._visibleObjectIds = null;\n this._xrayedObjectIds = null;\n this._highlightedObjectIds = null;\n this._selectedObjectIds = null;\n this._colorizedObjectIds = null;\n this._opacityObjectIds = null;\n this._offsetObjectIds = null;\n\n this._collidables = {}; // Components that contribute to the Scene AABB\n this._compilables = {}; // Components that require shader compilation\n\n this._needRecompile = false;\n\n /**\n * For each {@link Component} type, a map of IDs to {@link Component} instances of that type.\n *\n * @type {{String:{String:Component}}}\n */\n this.types = {};\n\n /**\n * The {@link Component}s within this Scene, each mapped to its {@link Component#id}.\n *\n * *@type {{String:Component}}\n */\n this.components = {};\n\n /**\n * The {@link SectionPlane}s in this Scene, each mapped to its {@link SectionPlane#id}.\n *\n * @type {{String:SectionPlane}}\n */\n this.sectionPlanes = {};\n\n /**\n * The {@link Light}s in this Scene, each mapped to its {@link Light#id}.\n *\n * @type {{String:Light}}\n */\n this.lights = {};\n\n /**\n * The {@link LightMap}s in this Scene, each mapped to its {@link LightMap#id}.\n *\n * @type {{String:LightMap}}\n */\n this.lightMaps = {};\n\n /**\n * The {@link ReflectionMap}s in this Scene, each mapped to its {@link ReflectionMap#id}.\n *\n * @type {{String:ReflectionMap}}\n */\n this.reflectionMaps = {};\n\n /**\n * The {@link Bitmap}s in this Scene, each mapped to its {@link Bitmap#id}.\n *\n * @type {{String:Bitmap}}\n */\n this.bitmaps = {};\n\n /**\n * The {@link LineSet}s in this Scene, each mapped to its {@link LineSet#id}.\n *\n * @type {{String:LineSet}}\n */\n this.lineSets = {};\n\n /**\n * The real world offset for this Scene\n *\n * @type {Number[]}\n */\n this.realWorldOffset = cfg.realWorldOffset || new Float64Array([0, 0, 0]);\n\n /**\n * Manages the HTML5 canvas for this Scene.\n *\n * @type {Canvas}\n */\n this.canvas = new Canvas(this, {\n dontClear: true, // Never destroy this component with Scene#clear();\n canvas: canvas,\n spinnerElementId: cfg.spinnerElementId,\n transparent: transparent,\n webgl2: cfg.webgl2 !== false,\n contextAttr: cfg.contextAttr || {},\n backgroundColor: cfg.backgroundColor,\n backgroundColorFromAmbientLight: cfg.backgroundColorFromAmbientLight,\n premultipliedAlpha: cfg.premultipliedAlpha\n });\n\n this.canvas.on(\"boundary\", () => {\n this.glRedraw();\n });\n\n this.canvas.on(\"webglContextFailed\", () => {\n alert(\"xeokit failed to find WebGL!\");\n });\n\n this._renderer = new Renderer(this, {\n transparent: transparent,\n alphaDepthMask: alphaDepthMask\n });\n\n this._sectionPlanesState = new (function () {\n\n this.sectionPlanes = [];\n\n this.clippingCaps = false;\n\n this._numCachedSectionPlanes = 0;\n\n let hash = null;\n\n this.getHash = function () {\n if (hash) {\n return hash;\n }\n const numAllocatedSectionPlanes = this.getNumAllocatedSectionPlanes();\n const sectionPlanes = this.sectionPlanes;\n if (numAllocatedSectionPlanes === 0) {\n return this.hash = \";\";\n }\n let sectionPlane;\n\n const hashParts = [];\n for (let i = 0, len = numAllocatedSectionPlanes; i < len; i++) {\n sectionPlane = sectionPlanes[i];\n hashParts.push(\"cp\");\n }\n hashParts.push(\";\");\n hash = hashParts.join(\"\");\n return hash;\n };\n\n this.addSectionPlane = function (sectionPlane) {\n this.sectionPlanes.push(sectionPlane);\n hash = null;\n };\n\n this.removeSectionPlane = function (sectionPlane) {\n for (let i = 0, len = this.sectionPlanes.length; i < len; i++) {\n if (this.sectionPlanes[i].id === sectionPlane.id) {\n this.sectionPlanes.splice(i, 1);\n hash = null;\n return;\n }\n }\n };\n\n this.setNumCachedSectionPlanes = function (numCachedSectionPlanes) {\n this._numCachedSectionPlanes = numCachedSectionPlanes;\n hash = null;\n }\n\n this.getNumCachedSectionPlanes = function () {\n return this._numCachedSectionPlanes;\n }\n\n this.getNumAllocatedSectionPlanes = function () {\n const num = this.sectionPlanes.length;\n return (num > this._numCachedSectionPlanes) ? num : this._numCachedSectionPlanes;\n };\n })();\n\n this._sectionPlanesState.setNumCachedSectionPlanes(cfg.numCachedSectionPlanes || 0);\n\n this._lightsState = new (function () {\n\n const DEFAULT_AMBIENT = math.vec4([0, 0, 0, 0]);\n const ambientColorIntensity = math.vec4();\n\n this.lights = [];\n this.reflectionMaps = [];\n this.lightMaps = [];\n\n let hash = null;\n let ambientLight = null;\n\n this.getHash = function () {\n if (hash) {\n return hash;\n }\n const hashParts = [];\n const lights = this.lights;\n let light;\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n hashParts.push(\"/\");\n hashParts.push(light.type);\n hashParts.push((light.space === \"world\") ? \"w\" : \"v\");\n if (light.castsShadow) {\n hashParts.push(\"sh\");\n }\n }\n if (this.lightMaps.length > 0) {\n hashParts.push(\"/lm\");\n }\n if (this.reflectionMaps.length > 0) {\n hashParts.push(\"/rm\");\n }\n hashParts.push(\";\");\n hash = hashParts.join(\"\");\n return hash;\n };\n\n this.addLight = function (state) {\n this.lights.push(state);\n ambientLight = null;\n hash = null;\n };\n\n this.removeLight = function (state) {\n for (let i = 0, len = this.lights.length; i < len; i++) {\n const light = this.lights[i];\n if (light.id === state.id) {\n this.lights.splice(i, 1);\n if (ambientLight && ambientLight.id === state.id) {\n ambientLight = null;\n }\n hash = null;\n return;\n }\n }\n };\n\n this.addReflectionMap = function (state) {\n this.reflectionMaps.push(state);\n hash = null;\n };\n\n this.removeReflectionMap = function (state) {\n for (let i = 0, len = this.reflectionMaps.length; i < len; i++) {\n if (this.reflectionMaps[i].id === state.id) {\n this.reflectionMaps.splice(i, 1);\n hash = null;\n return;\n }\n }\n };\n\n this.addLightMap = function (state) {\n this.lightMaps.push(state);\n hash = null;\n };\n\n this.removeLightMap = function (state) {\n for (let i = 0, len = this.lightMaps.length; i < len; i++) {\n if (this.lightMaps[i].id === state.id) {\n this.lightMaps.splice(i, 1);\n hash = null;\n return;\n }\n }\n };\n\n this.getAmbientColorAndIntensity = function () {\n if (!ambientLight) {\n for (let i = 0, len = this.lights.length; i < len; i++) {\n const light = this.lights[i];\n if (light.type === \"ambient\") {\n ambientLight = light;\n break;\n }\n }\n }\n if (ambientLight) {\n const color = ambientLight.color;\n const intensity = ambientLight.intensity;\n ambientColorIntensity[0] = color[0];\n ambientColorIntensity[1] = color[1];\n ambientColorIntensity[2] = color[2];\n ambientColorIntensity[3] = intensity\n return ambientColorIntensity;\n } else {\n return DEFAULT_AMBIENT;\n }\n };\n\n })();\n\n /**\n * Publishes input events that occur on this Scene's canvas.\n *\n * @property input\n * @type {Input}\n * @final\n */\n this.input = new Input(this, {\n dontClear: true, // Never destroy this component with Scene#clear();\n element: this.canvas.canvas,\n keyboardEventsElement: cfg.keyboardEventsElement\n });\n\n /**\n * Configures this Scene's units of measurement and coordinate mapping between Real-space and World-space 3D coordinate systems.\n *\n * @property metrics\n * @type {Metrics}\n * @final\n */\n this.metrics = new Metrics(this, {\n units: cfg.units,\n scale: cfg.scale,\n origin: cfg.origin\n });\n\n /** Configures Scalable Ambient Obscurance (SAO) for this Scene.\n * @type {SAO}\n * @final\n */\n this.sao = new SAO(this, {\n enabled: cfg.saoEnabled\n });\n\n /** Configures Cross Sections for this Scene.\n * @type {CrossSections}\n * @final\n */\n this.crossSections = new CrossSections(this, {\n\n });\n\n this.ticksPerRender = cfg.ticksPerRender;\n this.ticksPerOcclusionTest = cfg.ticksPerOcclusionTest;\n this.passes = cfg.passes;\n this.clearEachPass = cfg.clearEachPass;\n this.gammaInput = cfg.gammaInput;\n this.gammaOutput = cfg.gammaOutput;\n this.gammaFactor = cfg.gammaFactor;\n\n this._entityOffsetsEnabled = !!cfg.entityOffsetsEnabled;\n this._logarithmicDepthBufferEnabled = !!cfg.logarithmicDepthBufferEnabled;\n\n this._dtxEnabled = (cfg.dtxEnabled !== false);\n this._pbrEnabled = !!cfg.pbrEnabled;\n this._colorTextureEnabled = (cfg.colorTextureEnabled !== false);\n this._dtxEnabled = !!cfg.dtxEnabled;\n\n // Register Scene on xeokit\n // Do this BEFORE we add components below\n core._addScene(this);\n\n this._initDefaults();\n\n // Global components\n\n this._viewport = new Viewport(this, {\n id: \"default.viewport\",\n autoBoundary: true,\n dontClear: true // Never destroy this component with Scene#clear();\n });\n\n this._camera = new Camera(this, {\n id: \"default.camera\",\n dontClear: true // Never destroy this component with Scene#clear();\n });\n\n // Default lights\n\n new AmbientLight(this, {\n color: [1.0, 1.0, 1.0],\n intensity: 0.7\n });\n\n new DirLight(this, {\n dir: [0.8, -.5, -0.5],\n color: [0.67, 0.67, 1.0],\n intensity: 0.7,\n space: \"world\"\n });\n\n new DirLight(this, {\n dir: [-0.8, -1.0, 0.5],\n color: [1, 1, .9],\n intensity: 0.9,\n space: \"world\"\n });\n\n this._camera.on(\"dirty\", () => {\n this._renderer.imageDirty();\n });\n }\n\n _initDefaults() {\n\n // Call this Scene's property accessors to lazy-init their properties\n\n let dummy; // Keeps Codacy happy\n\n dummy = this.geometry;\n dummy = this.material;\n dummy = this.xrayMaterial;\n dummy = this.edgeMaterial;\n dummy = this.selectedMaterial;\n dummy = this.highlightMaterial;\n }\n\n _addComponent(component) {\n if (component.id) { // Manual ID\n if (this.components[component.id]) {\n this.error(\"Component \" + utils.inQuotes(component.id) + \" already exists in Scene - ignoring ID, will randomly-generate instead\");\n component.id = null;\n }\n }\n if (!component.id) { // Auto ID\n if (window.nextID === undefined) {\n window.nextID = 0;\n }\n //component.id = math.createUUID();\n component.id = \"__\" + window.nextID++;\n while (this.components[component.id]) {\n component.id = math.createUUID();\n }\n }\n this.components[component.id] = component;\n\n // Register for class type\n const type = component.type;\n let types = this.types[component.type];\n if (!types) {\n types = this.types[type] = {};\n }\n types[component.id] = component;\n\n if (component.compile) {\n this._compilables[component.id] = component;\n }\n if (component.isDrawable) {\n this._renderer.addDrawable(component.id, component);\n this._collidables[component.id] = component;\n }\n }\n\n _removeComponent(component) {\n var id = component.id;\n var type = component.type;\n delete this.components[id];\n // Unregister for types\n const types = this.types[type];\n if (types) {\n delete types[id];\n if (utils.isEmptyObject(types)) {\n delete this.types[type];\n }\n }\n if (component.compile) {\n delete this._compilables[component.id];\n }\n if (component.isDrawable) {\n this._renderer.removeDrawable(component.id);\n delete this._collidables[component.id];\n }\n }\n\n // Methods below are called by various component types to register themselves on their\n // Scene. Violates Hollywood Principle, where we could just filter on type in _addComponent,\n // but this is faster than checking the type of each component in such a filter.\n\n _sectionPlaneCreated(sectionPlane) {\n this.sectionPlanes[sectionPlane.id] = sectionPlane;\n this.scene._sectionPlanesState.addSectionPlane(sectionPlane._state);\n this.scene.fire(\"sectionPlaneCreated\", sectionPlane, true /* Don't retain event */);\n this._needRecompile = true;\n }\n\n _bitmapCreated(bitmap) {\n this.bitmaps[bitmap.id] = bitmap;\n this.scene.fire(\"bitmapCreated\", bitmap, true /* Don't retain event */);\n }\n\n _lineSetCreated(lineSet) {\n this.lineSets[lineSet.id] = lineSet;\n this.scene.fire(\"lineSetCreated\", lineSet, true /* Don't retain event */);\n }\n\n _lightCreated(light) {\n this.lights[light.id] = light;\n this.scene._lightsState.addLight(light._state);\n this._needRecompile = true;\n }\n\n _lightMapCreated(lightMap) {\n this.lightMaps[lightMap.id] = lightMap;\n this.scene._lightsState.addLightMap(lightMap._state);\n this._needRecompile = true;\n }\n\n _reflectionMapCreated(reflectionMap) {\n this.reflectionMaps[reflectionMap.id] = reflectionMap;\n this.scene._lightsState.addReflectionMap(reflectionMap._state);\n this._needRecompile = true;\n }\n\n _sectionPlaneDestroyed(sectionPlane) {\n delete this.sectionPlanes[sectionPlane.id];\n this.scene._sectionPlanesState.removeSectionPlane(sectionPlane._state);\n this.scene.fire(\"sectionPlaneDestroyed\", sectionPlane, true /* Don't retain event */);\n this._needRecompile = true;\n }\n\n _bitmapDestroyed(bitmap) {\n delete this.bitmaps[bitmap.id];\n this.scene.fire(\"bitmapDestroyed\", bitmap, true /* Don't retain event */);\n }\n\n _lineSetDestroyed(lineSet) {\n delete this.lineSets[lineSet.id];\n this.scene.fire(\"lineSetDestroyed\", lineSet, true /* Don't retain event */);\n }\n\n _lightDestroyed(light) {\n delete this.lights[light.id];\n this.scene._lightsState.removeLight(light._state);\n this._needRecompile = true;\n }\n\n _lightMapDestroyed(lightMap) {\n delete this.lightMaps[lightMap.id];\n this.scene._lightsState.removeLightMap(lightMap._state);\n this._needRecompile = true;\n }\n\n _reflectionMapDestroyed(reflectionMap) {\n delete this.reflectionMaps[reflectionMap.id];\n this.scene._lightsState.removeReflectionMap(reflectionMap._state);\n this._needRecompile = true;\n }\n\n _registerModel(entity) {\n this.models[entity.id] = entity;\n this._modelIds = null; // Lazy regenerate\n }\n\n _deregisterModel(entity) {\n const modelId = entity.id;\n delete this.models[modelId];\n this._modelIds = null; // Lazy regenerate\n this.fire(\"modelUnloaded\", modelId);\n }\n\n _registerObject(entity) {\n this.objects[entity.id] = entity;\n this._numObjects++;\n this._objectIds = null; // Lazy regenerate\n }\n\n _deregisterObject(entity) {\n delete this.objects[entity.id];\n this._numObjects--;\n this._objectIds = null; // Lazy regenerate\n }\n\n _objectVisibilityUpdated(entity, notify = true) {\n if (entity.visible) {\n if (ASSERT_OBJECT_STATE_UPDATE && this.visibleObjects[entity.id]) {\n console.error(\"Redundant object visibility update (visible=true)\");\n return;\n }\n this.visibleObjects[entity.id] = entity;\n this._numVisibleObjects++;\n } else {\n if (ASSERT_OBJECT_STATE_UPDATE && (!this.visibleObjects[entity.id])) {\n console.error(\"Redundant object visibility update (visible=false)\");\n return;\n }\n delete this.visibleObjects[entity.id];\n this._numVisibleObjects--;\n }\n this._visibleObjectIds = null; // Lazy regenerate\n if (notify) {\n this.fire(\"objectVisibility\", entity, true);\n }\n }\n\n _deRegisterVisibleObject(entity) {\n delete this.visibleObjects[entity.id];\n this._numVisibleObjects--;\n this._visibleObjectIds = null; // Lazy regenerate\n }\n\n _objectXRayedUpdated(entity, notify = true) {\n if (entity.xrayed) {\n if (ASSERT_OBJECT_STATE_UPDATE && this.xrayedObjects[entity.id]) {\n console.error(\"Redundant object xray update (xrayed=true)\");\n return;\n }\n this.xrayedObjects[entity.id] = entity;\n this._numXRayedObjects++;\n } else {\n if (ASSERT_OBJECT_STATE_UPDATE && (!this.xrayedObjects[entity.id])) {\n console.error(\"Redundant object xray update (xrayed=false)\");\n return;\n }\n delete this.xrayedObjects[entity.id];\n this._numXRayedObjects--;\n }\n this._xrayedObjectIds = null; // Lazy regenerate\n if (notify) {\n this.fire(\"objectXRayed\", entity, true);\n }\n }\n\n _deRegisterXRayedObject(entity) {\n delete this.xrayedObjects[entity.id];\n this._numXRayedObjects--;\n this._xrayedObjectIds = null; // Lazy regenerate\n }\n\n _objectHighlightedUpdated(entity) {\n if (entity.highlighted) {\n if (ASSERT_OBJECT_STATE_UPDATE && this.highlightedObjects[entity.id]) {\n console.error(\"Redundant object highlight update (highlighted=true)\");\n return;\n }\n this.highlightedObjects[entity.id] = entity;\n this._numHighlightedObjects++;\n } else {\n if (ASSERT_OBJECT_STATE_UPDATE && (!this.highlightedObjects[entity.id])) {\n console.error(\"Redundant object highlight update (highlighted=false)\");\n return;\n }\n delete this.highlightedObjects[entity.id];\n this._numHighlightedObjects--;\n }\n this._highlightedObjectIds = null; // Lazy regenerate\n }\n\n _deRegisterHighlightedObject(entity) {\n delete this.highlightedObjects[entity.id];\n this._numHighlightedObjects--;\n this._highlightedObjectIds = null; // Lazy regenerate\n }\n\n _objectSelectedUpdated(entity, notify = true) {\n if (entity.selected) {\n if (ASSERT_OBJECT_STATE_UPDATE && this.selectedObjects[entity.id]) {\n console.error(\"Redundant object select update (selected=true)\");\n return;\n }\n this.selectedObjects[entity.id] = entity;\n this._numSelectedObjects++;\n } else {\n if (ASSERT_OBJECT_STATE_UPDATE && (!this.selectedObjects[entity.id])) {\n console.error(\"Redundant object select update (selected=false)\");\n return;\n }\n delete this.selectedObjects[entity.id];\n this._numSelectedObjects--;\n }\n this._selectedObjectIds = null; // Lazy regenerate\n if (notify) {\n this.fire(\"objectSelected\", entity, true);\n }\n }\n\n _deRegisterSelectedObject(entity) {\n delete this.selectedObjects[entity.id];\n this._numSelectedObjects--;\n this._selectedObjectIds = null; // Lazy regenerate\n }\n\n\n _objectColorizeUpdated(entity, colorized) {\n if (colorized) {\n this.colorizedObjects[entity.id] = entity;\n this._numColorizedObjects++;\n } else {\n delete this.colorizedObjects[entity.id];\n this._numColorizedObjects--;\n }\n this._colorizedObjectIds = null; // Lazy regenerate\n }\n\n _deRegisterColorizedObject(entity) {\n delete this.colorizedObjects[entity.id];\n this._numColorizedObjects--;\n this._colorizedObjectIds = null; // Lazy regenerate\n }\n\n _objectOpacityUpdated(entity, opacityUpdated) {\n if (opacityUpdated) {\n this.opacityObjects[entity.id] = entity;\n this._numOpacityObjects++;\n } else {\n delete this.opacityObjects[entity.id];\n this._numOpacityObjects--;\n }\n this._opacityObjectIds = null; // Lazy regenerate\n }\n\n _deRegisterOpacityObject(entity) {\n delete this.opacityObjects[entity.id];\n this._numOpacityObjects--;\n this._opacityObjectIds = null; // Lazy regenerate\n }\n\n _objectOffsetUpdated(entity, offset) {\n if (!offset || offset[0] === 0 && offset[1] === 0 && offset[2] === 0) {\n this.offsetObjects[entity.id] = entity;\n this._numOffsetObjects++;\n } else {\n delete this.offsetObjects[entity.id];\n this._numOffsetObjects--;\n }\n this._offsetObjectIds = null; // Lazy regenerate\n }\n\n _deRegisterOffsetObject(entity) {\n delete this.offsetObjects[entity.id];\n this._numOffsetObjects--;\n this._offsetObjectIds = null; // Lazy regenerate\n }\n\n _webglContextLost() {\n // this.loading++;\n this.canvas.spinner.processes++;\n for (const id in this.components) {\n if (this.components.hasOwnProperty(id)) {\n const component = this.components[id];\n if (component._webglContextLost) {\n component._webglContextLost();\n }\n }\n }\n this._renderer.webglContextLost();\n }\n\n _webglContextRestored() {\n const gl = this.canvas.gl;\n for (const id in this.components) {\n if (this.components.hasOwnProperty(id)) {\n const component = this.components[id];\n if (component._webglContextRestored) {\n component._webglContextRestored(gl);\n }\n }\n }\n this._renderer.webglContextRestored(gl);\n //this.loading--;\n this.canvas.spinner.processes--;\n }\n\n /**\n * Returns the capabilities of this Scene.\n *\n * @private\n * @returns {{astcSupported: boolean, etc1Supported: boolean, pvrtcSupported: boolean, etc2Supported: boolean, dxtSupported: boolean, bptcSupported: boolean}}\n */\n get capabilities() {\n return this._renderer.capabilities;\n }\n\n /**\n * Whether {@link Entity#offset} is enabled.\n *\n * This is set via the {@link Viewer} constructor and is ````false```` by default.\n *\n * @returns {Boolean} True if {@link Entity#offset} is enabled.\n */\n get entityOffsetsEnabled() {\n return this._entityOffsetsEnabled;\n }\n\n /**\n * Whether precision surface picking is enabled.\n *\n * This is set via the {@link Viewer} constructor and is ````false```` by default.\n *\n * The ````pickSurfacePrecision```` option for ````Scene#pick```` only works if this is set ````true````.\n *\n * Note that when ````true````, this configuration will increase the amount of browser memory used by the Viewer.\n *\n * @returns {Boolean} True if precision picking is enabled.\n */\n get pickSurfacePrecisionEnabled() {\n return false; // Removed\n }\n\n /**\n * Whether logarithmic depth buffer is enabled.\n *\n * This is set via the {@link Viewer} constructor and is ````false```` by default.\n *\n * @returns {Boolean} True if logarithmic depth buffer is enabled.\n */\n get logarithmicDepthBufferEnabled() {\n return this._logarithmicDepthBufferEnabled;\n }\n\n /**\n * Sets the number of {@link SectionPlane}s for which this Scene pre-caches resources.\n *\n * This property enhances the efficiency of SectionPlane creation by proactively allocating and caching Viewer resources for a specified quantity\n * of SectionPlanes. Introducing this parameter streamlines the initial creation speed of SectionPlanes, particularly up to the designated quantity. This parameter internally\n * configures renderer logic for the specified number of SectionPlanes, eliminating the need for setting up logic with each SectionPlane creation and thereby enhancing\n * responsiveness. It is important to consider that each SectionPlane impacts rendering performance, so it is recommended to set this value to a quantity that aligns with\n * your expected usage.\n *\n * Default is ````0````.\n */\n set numCachedSectionPlanes(numCachedSectionPlanes) {\n numCachedSectionPlanes = numCachedSectionPlanes || 0;\n if (this._sectionPlanesState.getNumCachedSectionPlanes() !== numCachedSectionPlanes) {\n this._sectionPlanesState.setNumCachedSectionPlanes(numCachedSectionPlanes);\n this._needRecompile = true;\n this.glRedraw();\n }\n }\n\n /**\n * Gets the number of {@link SectionPlane}s for which this Scene pre-caches resources.\n *\n * This property enhances the efficiency of SectionPlane creation by proactively allocating and caching Viewer resources for a specified quantity\n * of SectionPlanes. Introducing this parameter streamlines the initial creation speed of SectionPlanes, particularly up to the designated quantity. This parameter internally\n * configures renderer logic for the specified number of SectionPlanes, eliminating the need for setting up logic with each SectionPlane creation and thereby enhancing\n * responsiveness. It is important to consider that each SectionPlane impacts rendering performance, so it is recommended to set this value to a quantity that aligns with\n * your expected usage.\n *\n * Default is ````0````.\n *\n * @returns {number} The number of {@link SectionPlane}s for which this Scene pre-caches resources.\n */\n get numCachedSectionPlanes() {\n return this._sectionPlanesState.getNumCachedSectionPlanes();\n }\n\n /**\n * Sets whether physically-based rendering is enabled.\n *\n * Default is ````false````.\n */\n set pbrEnabled(pbrEnabled) {\n this._pbrEnabled = !!pbrEnabled;\n this.glRedraw();\n }\n\n /**\n * Gets whether physically-based rendering is enabled.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} True if quality rendering is enabled.\n */\n get pbrEnabled() {\n return this._pbrEnabled;\n }\n\n /**\n * Sets whether data texture scene representation (DTX) is enabled for the {@link Scene}.\n *\n * Even when enabled, DTX will only work if supported.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set dtxEnabled(value) {\n value = !!value;\n if (this._dtxEnabled === value) {\n return;\n }\n this._dtxEnabled = value;\n }\n\n /**\n * Gets whether data texture-based scene representation (DTX) is enabled for the {@link Scene}.\n *\n * Even when enabled, DTX will only apply if supported.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get dtxEnabled() {\n return this._dtxEnabled;\n }\n\n /**\n * Sets whether basic color texture rendering is enabled.\n *\n * Default is ````true````.\n *\n * @returns {Boolean} True if basic color texture rendering is enabled.\n */\n set colorTextureEnabled(colorTextureEnabled) {\n this._colorTextureEnabled = !!colorTextureEnabled;\n this.glRedraw();\n }\n\n /**\n * Gets whether basic color texture rendering is enabled.\n *\n * Default is ````true````.\n *\n * @returns {Boolean} True if basic color texture rendering is enabled.\n */\n get colorTextureEnabled() {\n return this._colorTextureEnabled;\n }\n\n /**\n * Performs an occlusion test on all {@link Marker}s in this {@link Scene}.\n *\n * Sets each {@link Marker#visible} ````true```` if the Marker is currently not occluded by any opaque {@link Entity}s\n * in the Scene, or ````false```` if an Entity is occluding it.\n */\n doOcclusionTest() {\n if (this._needRecompile) {\n this._recompile();\n this._needRecompile = false;\n }\n this._renderer.doOcclusionTest();\n }\n\n /**\n * Renders a single frame of this Scene.\n *\n * The Scene will periodically render itself after any updates, but you can call this method to force a render\n * if required.\n *\n * @param {Boolean} [forceRender=false] Forces a render when true, otherwise only renders if something has changed in this Scene\n * since the last render.\n */\n render(forceRender) {\n\n if (forceRender) {\n core.runTasks();\n }\n\n const renderEvent = {\n sceneId: null,\n pass: 0\n };\n\n if (this._needRecompile) {\n this._recompile();\n this._renderer.imageDirty();\n this._needRecompile = false;\n }\n\n if (!forceRender && !this._renderer.needsRender()) {\n return;\n }\n\n renderEvent.sceneId = this.id;\n\n const passes = this._passes;\n const clearEachPass = this._clearEachPass;\n let pass;\n let clear;\n\n for (pass = 0; pass < passes; pass++) {\n\n renderEvent.pass = pass;\n\n /**\n * Fired when about to render a frame for a Scene.\n *\n * @event rendering\n * @param {String} sceneID The ID of this Scene.\n * @param {Number} pass Index of the pass we are about to render (see {@link Scene#passes}).\n */\n this.fire(\"rendering\", renderEvent, true);\n\n clear = clearEachPass || (pass === 0);\n\n this._renderer.render({pass: pass, clear: clear, force: forceRender});\n\n /**\n * Fired when we have just rendered a frame for a Scene.\n *\n * @event rendering\n * @param {String} sceneID The ID of this Scene.\n * @param {Number} pass Index of the pass we rendered (see {@link Scene#passes}).\n */\n this.fire(\"rendered\", renderEvent, true);\n }\n\n this._saveAmbientColor();\n }\n\n\n /**\n * @private\n */\n compile() {\n if (this._needRecompile) {\n this._recompile();\n this._renderer.imageDirty();\n this._needRecompile = false;\n }\n }\n\n _recompile() {\n for (const id in this._compilables) {\n if (this._compilables.hasOwnProperty(id)) {\n this._compilables[id].compile();\n }\n }\n this._renderer.shadowsDirty();\n this.fire(\"compile\", this, true);\n }\n\n _saveAmbientColor() {\n const canvas = this.canvas;\n if (!canvas.transparent && !canvas.backgroundImage && !canvas.backgroundColor) {\n const ambientColorIntensity = this._lightsState.getAmbientColorAndIntensity();\n if (!this._lastAmbientColor ||\n this._lastAmbientColor[0] !== ambientColorIntensity[0] ||\n this._lastAmbientColor[1] !== ambientColorIntensity[1] ||\n this._lastAmbientColor[2] !== ambientColorIntensity[2] ||\n this._lastAmbientColor[3] !== ambientColorIntensity[3]) {\n canvas.backgroundColor = ambientColorIntensity;\n if (!this._lastAmbientColor) {\n this._lastAmbientColor = math.vec4([0, 0, 0, 1]);\n }\n this._lastAmbientColor.set(ambientColorIntensity);\n }\n } else {\n this._lastAmbientColor = null;\n }\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#models}.\n *\n * @type {String[]}\n */\n get modelIds() {\n if (!this._modelIds) {\n this._modelIds = Object.keys(this.models);\n }\n return this._modelIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#objects}.\n *\n * @type {Number}\n */\n get numObjects() {\n return this._numObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#objects}.\n *\n * @type {String[]}\n */\n get objectIds() {\n if (!this._objectIds) {\n this._objectIds = Object.keys(this.objects);\n }\n return this._objectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#visibleObjects}.\n *\n * @type {Number}\n */\n get numVisibleObjects() {\n return this._numVisibleObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#visibleObjects}.\n *\n * @type {String[]}\n */\n get visibleObjectIds() {\n if (!this._visibleObjectIds) {\n this._visibleObjectIds = Object.keys(this.visibleObjects);\n }\n return this._visibleObjectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#xrayedObjects}.\n *\n * @type {Number}\n */\n get numXRayedObjects() {\n return this._numXRayedObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#xrayedObjects}.\n *\n * @type {String[]}\n */\n get xrayedObjectIds() {\n if (!this._xrayedObjectIds) {\n this._xrayedObjectIds = Object.keys(this.xrayedObjects);\n }\n return this._xrayedObjectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#highlightedObjects}.\n *\n * @type {Number}\n */\n get numHighlightedObjects() {\n return this._numHighlightedObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#highlightedObjects}.\n *\n * @type {String[]}\n */\n get highlightedObjectIds() {\n if (!this._highlightedObjectIds) {\n this._highlightedObjectIds = Object.keys(this.highlightedObjects);\n }\n return this._highlightedObjectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#selectedObjects}.\n *\n * @type {Number}\n */\n get numSelectedObjects() {\n return this._numSelectedObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#selectedObjects}.\n *\n * @type {String[]}\n */\n get selectedObjectIds() {\n if (!this._selectedObjectIds) {\n this._selectedObjectIds = Object.keys(this.selectedObjects);\n }\n return this._selectedObjectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#colorizedObjects}.\n *\n * @type {Number}\n */\n get numColorizedObjects() {\n return this._numColorizedObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#colorizedObjects}.\n *\n * @type {String[]}\n */\n get colorizedObjectIds() {\n if (!this._colorizedObjectIds) {\n this._colorizedObjectIds = Object.keys(this.colorizedObjects);\n }\n return this._colorizedObjectIds;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#opacityObjects}.\n *\n * @type {String[]}\n */\n get opacityObjectIds() {\n if (!this._opacityObjectIds) {\n this._opacityObjectIds = Object.keys(this.opacityObjects);\n }\n return this._opacityObjectIds;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#offsetObjects}.\n *\n * @type {String[]}\n */\n get offsetObjectIds() {\n if (!this._offsetObjectIds) {\n this._offsetObjectIds = Object.keys(this.offsetObjects);\n }\n return this._offsetObjectIds;\n }\n\n /**\n * Sets the number of \"ticks\" that happen between each render or this Scene.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set ticksPerRender(value) {\n if (value === undefined || value === null) {\n value = 1;\n } else if (!utils.isNumeric(value) || value <= 0) {\n this.error(\"Unsupported value for 'ticksPerRender': '\" + value +\n \"' - should be an integer greater than zero.\");\n value = 1;\n }\n if (value === this._ticksPerRender) {\n return;\n }\n this._ticksPerRender = value;\n }\n\n /**\n * Gets the number of \"ticks\" that happen between each render or this Scene.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get ticksPerRender() {\n return this._ticksPerRender;\n }\n\n /**\n * Sets the number of \"ticks\" that happen between occlusion testing for {@link Marker}s.\n *\n * Default value is ````20````.\n *\n * @type {Number}\n */\n set ticksPerOcclusionTest(value) {\n if (value === undefined || value === null) {\n value = 20;\n } else if (!utils.isNumeric(value) || value <= 0) {\n this.error(\"Unsupported value for 'ticksPerOcclusionTest': '\" + value +\n \"' - should be an integer greater than zero.\");\n value = 20;\n }\n if (value === this._ticksPerOcclusionTest) {\n return;\n }\n this._ticksPerOcclusionTest = value;\n }\n\n /**\n * Gets the number of \"ticks\" that happen between each render of this Scene.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get ticksPerOcclusionTest() {\n return this._ticksPerOcclusionTest;\n }\n\n /**\n * Sets the number of times this Scene renders per frame.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set passes(value) {\n if (value === undefined || value === null) {\n value = 1;\n } else if (!utils.isNumeric(value) || value <= 0) {\n this.error(\"Unsupported value for 'passes': '\" + value +\n \"' - should be an integer greater than zero.\");\n value = 1;\n }\n if (value === this._passes) {\n return;\n }\n this._passes = value;\n this.glRedraw();\n }\n\n /**\n * Gets the number of times this Scene renders per frame.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get passes() {\n return this._passes;\n }\n\n /**\n * When {@link Scene#passes} is greater than ````1````, indicates whether or not to clear the canvas before each pass (````true````) or just before the first pass (````false````).\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set clearEachPass(value) {\n value = !!value;\n if (value === this._clearEachPass) {\n return;\n }\n this._clearEachPass = value;\n this.glRedraw();\n }\n\n /**\n * When {@link Scene#passes} is greater than ````1````, indicates whether or not to clear the canvas before each pass (````true````) or just before the first pass (````false````).\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get clearEachPass() {\n return this._clearEachPass;\n }\n\n /**\n * Sets whether or not {@link Scene} should expect all {@link Texture}s and colors to have pre-multiplied gamma.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set gammaInput(value) {\n value = value !== false;\n if (value === this._renderer.gammaInput) {\n return;\n }\n this._renderer.gammaInput = value;\n this._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets whether or not {@link Scene} should expect all {@link Texture}s and colors to have pre-multiplied gamma.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get gammaInput() {\n return this._renderer.gammaInput;\n }\n\n /**\n * Sets whether or not to render pixels with pre-multiplied gama.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set gammaOutput(value) {\n value = !!value;\n if (value === this._renderer.gammaOutput) {\n return;\n }\n this._renderer.gammaOutput = value;\n this._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets whether or not to render pixels with pre-multiplied gama.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n get gammaOutput() {\n return this._renderer.gammaOutput;\n }\n\n /**\n * Sets the gamma factor to use when {@link Scene#gammaOutput} is set true.\n *\n * Default value is ````2.2````.\n *\n * @type {Number}\n */\n set gammaFactor(value) {\n value = (value === undefined || value === null) ? 2.2 : value;\n if (value === this._renderer.gammaFactor) {\n return;\n }\n this._renderer.gammaFactor = value;\n this.glRedraw();\n }\n\n /**\n * Gets the gamma factor to use when {@link Scene#gammaOutput} is set true.\n *\n * Default value is ````2.2````.\n *\n * @type {Number}\n */\n get gammaFactor() {\n return this._renderer.gammaFactor;\n }\n\n /**\n * Gets the default {@link Geometry} for this Scene, which is a {@link ReadableGeometry} with a unit-sized box shape.\n *\n * Has {@link ReadableGeometry#id} set to \"default.geometry\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#geometry} set to this {@link ReadableGeometry} by default.\n *\n * @type {ReadableGeometry}\n */\n get geometry() {\n return this.components[\"default.geometry\"] || buildBoxGeometry(ReadableGeometry, this, {\n id: \"default.geometry\",\n dontClear: true\n });\n }\n\n /**\n * Gets the default {@link Material} for this Scene, which is a {@link PhongMaterial}.\n *\n * Has {@link PhongMaterial#id} set to \"default.material\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#material} set to this {@link PhongMaterial} by default.\n *\n * @type {PhongMaterial}\n */\n get material() {\n return this.components[\"default.material\"] || new PhongMaterial(this, {\n id: \"default.material\",\n emissive: [0.4, 0.4, 0.4], // Visible by default on geometry without normals\n dontClear: true\n });\n }\n\n /**\n * Gets the default xraying {@link EmphasisMaterial} for this Scene.\n *\n * Has {@link EmphasisMaterial#id} set to \"default.xrayMaterial\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#xrayMaterial} set to this {@link EmphasisMaterial} by default.\n *\n * {@link Mesh}s are xrayed while {@link Mesh#xrayed} is ````true````.\n *\n * @type {EmphasisMaterial}\n */\n get xrayMaterial() {\n return this.components[\"default.xrayMaterial\"] || new EmphasisMaterial(this, {\n id: \"default.xrayMaterial\",\n preset: \"sepia\",\n dontClear: true\n });\n }\n\n /**\n * Gets the default highlight {@link EmphasisMaterial} for this Scene.\n *\n * Has {@link EmphasisMaterial#id} set to \"default.highlightMaterial\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#highlightMaterial} set to this {@link EmphasisMaterial} by default.\n *\n * {@link Mesh}s are highlighted while {@link Mesh#highlighted} is ````true````.\n *\n * @type {EmphasisMaterial}\n */\n get highlightMaterial() {\n return this.components[\"default.highlightMaterial\"] || new EmphasisMaterial(this, {\n id: \"default.highlightMaterial\",\n preset: \"yellowHighlight\",\n dontClear: true\n });\n }\n\n /**\n * Gets the default selection {@link EmphasisMaterial} for this Scene.\n *\n * Has {@link EmphasisMaterial#id} set to \"default.selectedMaterial\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#highlightMaterial} set to this {@link EmphasisMaterial} by default.\n *\n * {@link Mesh}s are highlighted while {@link Mesh#highlighted} is ````true````.\n *\n * @type {EmphasisMaterial}\n */\n get selectedMaterial() {\n return this.components[\"default.selectedMaterial\"] || new EmphasisMaterial(this, {\n id: \"default.selectedMaterial\",\n preset: \"greenSelected\",\n dontClear: true\n });\n }\n\n /**\n * Gets the default {@link EdgeMaterial} for this Scene.\n *\n * Has {@link EdgeMaterial#id} set to \"default.edgeMaterial\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#edgeMaterial} set to this {@link EdgeMaterial} by default.\n *\n * {@link Mesh}s have their edges emphasized while {@link Mesh#edges} is ````true````.\n *\n * @type {EdgeMaterial}\n */\n get edgeMaterial() {\n return this.components[\"default.edgeMaterial\"] || new EdgeMaterial(this, {\n id: \"default.edgeMaterial\",\n preset: \"default\",\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1,\n dontClear: true\n });\n }\n\n /**\n * Gets the {@link PointsMaterial} for this Scene.\n *\n * @type {PointsMaterial}\n */\n get pointsMaterial() {\n return this.components[\"default.pointsMaterial\"] || new PointsMaterial(this, {\n id: \"default.pointsMaterial\",\n preset: \"default\",\n dontClear: true\n });\n }\n\n /**\n * Gets the {@link LinesMaterial} for this Scene.\n *\n * @type {LinesMaterial}\n */\n get linesMaterial() {\n return this.components[\"default.linesMaterial\"] || new LinesMaterial(this, {\n id: \"default.linesMaterial\",\n preset: \"default\",\n dontClear: true\n });\n }\n\n /**\n * Gets the {@link Viewport} for this Scene.\n *\n * @type Viewport\n */\n get viewport() {\n return this._viewport;\n }\n\n /**\n * Gets the {@link Camera} for this Scene.\n *\n * @type {Camera}\n */\n get camera() {\n return this._camera;\n }\n\n /**\n * Gets the World-space 3D center of this Scene.\n *\n *@type {Number[]}\n */\n get center() {\n if (this._aabbDirty || !this._center) {\n if (!this._center || !this._center) {\n this._center = math.vec3();\n }\n const aabb = this.aabb;\n this._center[0] = (aabb[0] + aabb[3]) / 2;\n this._center[1] = (aabb[1] + aabb[4]) / 2;\n this._center[2] = (aabb[2] + aabb[5]) / 2;\n }\n return this._center;\n }\n\n /**\n * Gets the World-space axis-aligned 3D boundary (AABB) of this Scene.\n *\n * The AABB is represented by a six-element Float64Array containing the min/max extents of the axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * When the Scene has no content, will be ````[-100,-100,-100,100,100,100]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n if (!this._aabb) {\n this._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.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_DOUBLE;\n let aabb;\n const collidables = this._collidables;\n let collidable;\n let valid = false;\n for (const collidableId in collidables) {\n if (collidables.hasOwnProperty(collidableId)) {\n collidable = collidables[collidableId];\n if (collidable.collidable === false) {\n continue;\n }\n aabb = collidable.aabb;\n if (aabb[0] < xmin) {\n xmin = aabb[0];\n }\n if (aabb[1] < ymin) {\n ymin = aabb[1];\n }\n if (aabb[2] < zmin) {\n zmin = aabb[2];\n }\n if (aabb[3] > xmax) {\n xmax = aabb[3];\n }\n if (aabb[4] > ymax) {\n ymax = aabb[4];\n }\n if (aabb[5] > zmax) {\n zmax = aabb[5];\n }\n valid = true;\n }\n }\n if (!valid) {\n xmin = -100;\n ymin = -100;\n zmin = -100;\n xmax = 100;\n ymax = 100;\n zmax = 100;\n }\n this._aabb[0] = xmin;\n this._aabb[1] = ymin;\n this._aabb[2] = zmin;\n this._aabb[3] = xmax;\n this._aabb[4] = ymax;\n this._aabb[5] = zmax;\n this._aabbDirty = false;\n }\n return this._aabb;\n }\n\n _setAABBDirty() {\n //if (!this._aabbDirty) {\n this._aabbDirty = true;\n this.fire(\"boundary\");\n // }\n }\n\n /**\n * Attempts to pick an {@link Entity} in this Scene.\n *\n * Ignores {@link Entity}s with {@link Entity#pickable} set ````false````.\n *\n * When an {@link Entity} is picked, fires a \"pick\" event on the {@link Entity} with the pick result as parameters.\n *\n * Picking the {@link Entity} at the given canvas coordinates:\n\n * ````javascript\n * var pickResult = scene.pick({\n * canvasPos: [23, 131]\n * });\n *\n * if (pickResult) { // Picked an Entity\n * var entity = pickResult.entity;\n * }\n * ````\n *\n * Picking, with a ray cast through the canvas, hits an {@link Entity}:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * pickSurface: true,\n * canvasPos: [23, 131]\n * });\n *\n * if (pickResult) { // Picked an Entity\n *\n * var entity = pickResult.entity;\n *\n * if (pickResult.primitive === \"triangle\") {\n *\n * // Picked a triangle on the entity surface\n *\n * var primIndex = pickResult.primIndex; // Position of triangle's first index in the picked Entity's Geometry's indices array\n * var indices = pickResult.indices; // UInt32Array containing the triangle's vertex indices\n * var localPos = pickResult.localPos; // Float64Array containing the picked Local-space position on the triangle\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the triangle\n * var viewPos = pickResult.viewPos; // Float64Array containing the picked View-space position on the triangle\n * var bary = pickResult.bary; // Float64Array containing the picked barycentric position within the triangle\n * var worldNormal = pickResult.worldNormal; // Float64Array containing the interpolated World-space normal vector at the picked position on the triangle\n * var uv = pickResult.uv; // Float64Array containing the interpolated UV coordinates at the picked position on the triangle\n *\n * } else if (pickResult.worldPos && pickResult.worldNormal) {\n *\n * // Picked a point and normal on the entity surface\n *\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the Entity surface\n * var worldNormal = pickResult.worldNormal; // Float64Array containing the picked World-space normal vector on the Entity Surface\n * }\n * }\n * ````\n *\n * Picking the {@link Entity} that intersects an arbitrarily-aligned World-space ray:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * pickSurface: true, // Picking with arbitrarily-positioned ray\n * origin: [0,0,-5], // Ray origin\n * direction: [0,0,1] // Ray direction\n * });\n *\n * if (pickResult) { // Picked an Entity with the ray\n *\n * var entity = pickResult.entity;\n *\n * if (pickResult.primitive == \"triangle\") {\n *\n * // Picked a triangle on the entity surface\n *\n * var primitive = pickResult.primitive; // Type of primitive that was picked, usually \"triangles\"\n * var primIndex = pickResult.primIndex; // Position of triangle's first index in the picked Entity's Geometry's indices array\n * var indices = pickResult.indices; // UInt32Array containing the triangle's vertex indices\n * var localPos = pickResult.localPos; // Float64Array containing the picked Local-space position on the triangle\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the triangle\n * var viewPos = pickResult.viewPos; // Float64Array containing the picked View-space position on the triangle\n * var bary = pickResult.bary; // Float64Array containing the picked barycentric position within the triangle\n * var worldNormal = pickResult.worldNormal; // Float64Array containing the interpolated World-space normal vector at the picked position on the triangle\n * var uv = pickResult.uv; // Float64Array containing the interpolated UV coordinates at the picked position on the triangle\n * var origin = pickResult.origin; // Float64Array containing the World-space ray origin\n * var direction = pickResult.direction; // Float64Array containing the World-space ray direction\n *\n * } else if (pickResult.worldPos && pickResult.worldNormal) {\n *\n * // Picked a point and normal on the entity surface\n *\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the Entity surface\n * var worldNormal = pickResult.worldNormal; // Float64Array containing the picked World-space normal vector on the Entity Surface\n * }\n * }\n * ````\n *\n * @param {*} params Picking parameters.\n * @param {Boolean} [params.pickSurface=false] Whether to find the picked position on the surface of the Entity.\n * @param {Boolean} [params.pickSurfacePrecision=false] When picking an Entity surface position, indicates whether or not we want full-precision {@link PickResult#worldPos}. Only works when {@link Scene#pickSurfacePrecisionEnabled} is ````true````. If pick succeeds, the returned {@link PickResult} will have {@link PickResult#precision} set ````true````, to indicate that it contains full-precision surface pick results.\n * @param {Boolean} [params.pickSurfaceNormal=false] Whether to find the picked normal on the surface of the Entity. Only works if ````pickSurface```` is given.\n * @param {Number[]} [params.canvasPos] Canvas-space coordinates. When ray-picking, this will override the **origin** and ** direction** parameters and will cause the ray to be fired through the canvas at this position, directly along the negative View-space Z-axis.\n * @param {Number[]} [params.origin] World-space ray origin when ray-picking. Ignored when canvasPos given.\n * @param {Number[]} [params.direction] World-space ray direction when ray-picking. Also indicates the length of the ray. Ignored when canvasPos given.\n * @param {Number[]} [params.matrix] 4x4 transformation matrix to define the World-space ray origin and direction, as an alternative to ````origin```` and ````direction````.\n * @param {String[]} [params.includeEntities] IDs of {@link Entity}s to restrict picking to. When given, ignores {@link Entity}s whose IDs are not in this list.\n * @param {String[]} [params.excludeEntities] IDs of {@link Entity}s to ignore. When given, will pick *through* these {@link Entity}s, as if they were not there.\n * @param {Number} [params.snapRadius=30] The snap radius, in canvas pixels\n * @param {boolean} [params.snapToVertex=true] Whether to snap to vertex.\n * @param {boolean} [params.snapToEdge=true] Whether to snap to edge.\n * @param {PickResult} [pickResult] Holds the results of the pick attempt. Will use the Scene's singleton PickResult if you don't supply your own.\n * @returns {PickResult} Holds results of the pick attempt, returned when an {@link Entity} is picked, else null. See method comments for description.\n */\n pick(params, pickResult) {\n\n if (this.canvas.boundary[2] === 0 || this.canvas.boundary[3] === 0) {\n this.error(\"Picking not allowed while canvas has zero width or height\");\n return null;\n }\n\n params = params || {};\n\n params.pickSurface = params.pickSurface || params.rayPick; // Backwards compatibility\n\n if (!params.canvasPos && !params.matrix && (!params.origin || !params.direction)) {\n this.warn(\"picking without canvasPos, matrix, or ray origin and direction\");\n }\n\n const includeEntities = params.includeEntities || params.include; // Backwards compat\n if (includeEntities) {\n params.includeEntityIds = getEntityIDMap(this, includeEntities);\n }\n\n const excludeEntities = params.excludeEntities || params.exclude; // Backwards compat\n if (excludeEntities) {\n params.excludeEntityIds = getEntityIDMap(this, excludeEntities);\n }\n\n if (this._needRecompile) {\n this._recompile();\n this._renderer.imageDirty();\n this._needRecompile = false;\n }\n\n if (params.snapToEdge || params.snapToVertex) {\n pickResult = this._renderer.snapPick(\n params.canvasPos,\n params.snapRadius || 30,\n params.snapToVertex,\n params.snapToEdge,\n pickResult\n );\n } else {\n pickResult = this._renderer.pick(params, pickResult);\n }\n\n if (pickResult) {\n if (pickResult.entity && pickResult.entity.fire) {\n pickResult.entity.fire(\"picked\", pickResult); // TODO: SceneModelEntity doesn't fire events\n }\n }\n\n return pickResult;\n }\n\n /**\n * @param {Object} params Picking parameters.\n * @param {Number[]} [params.canvasPos] Canvas-space coordinates. When ray-picking, this will override the **origin** and ** direction** parameters and will cause the ray to be fired through the canvas at this position, directly along the negative View-space Z-axis.\n * @param {Number} [params.snapRadius=30] The snap radius, in canvas pixels\n * @param {boolean} [params.snapToVertex=true] Whether to snap to vertex.\n * @param {boolean} [params.snapToEdge=true] Whether to snap to edge.\n * @deprecated\n */\n snapPick(params) {\n if (undefined === this._warnSnapPickDeprecated) {\n this._warnSnapPickDeprecated = true;\n this.warn(\"Scene.snapPick() is deprecated since v2.4.2 - use Scene.pick() instead\")\n }\n return this._renderer.snapPick(\n params.canvasPos,\n params.snapRadius || 30,\n params.snapToVertex,\n params.snapToEdge,\n );\n }\n\n /**\n * Destroys all non-default {@link Component}s in this Scene.\n */\n clear() {\n var component;\n for (const id in this.components) {\n if (this.components.hasOwnProperty(id)) {\n component = this.components[id];\n if (!component._dontClear) { // Don't destroy components like Camera, Input, Viewport etc.\n component.destroy();\n }\n }\n }\n }\n\n /**\n * Destroys all {@link Light}s in this Scene..\n */\n clearLights() {\n const ids = Object.keys(this.lights);\n for (let i = 0, len = ids.length; i < len; i++) {\n this.lights[ids[i]].destroy();\n }\n }\n\n /**\n * Destroys all {@link SectionPlane}s in this Scene.\n */\n clearSectionPlanes() {\n const ids = Object.keys(this.sectionPlanes);\n for (let i = 0, len = ids.length; i < len; i++) {\n this.sectionPlanes[ids[i]].destroy();\n }\n }\n\n /**\n * Destroys all {@link Line}s in this Scene.\n */\n clearBitmaps() {\n const ids = Object.keys(this.bitmaps);\n for (let i = 0, len = ids.length; i < len; i++) {\n this.bitmaps[ids[i]].destroy();\n }\n }\n\n\n /**\n * Destroys all {@link Line}s in this Scene.\n */\n clearLines() {\n const ids = Object.keys(this.lineSets);\n for (let i = 0, len = ids.length; i < len; i++) {\n this.lineSets[ids[i]].destroy();\n }\n }\n\n /**\n * Gets the collective axis-aligned boundary (AABB) of a batch of {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which {@link Entity#isObject} is registered by {@link Entity#id} in {@link Scene#visibleObjects}.\n *\n * Each {@link Entity} is only included in the AABB when {@link Entity#collidable} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @returns {[Number, Number, Number, Number, Number, Number]} An axis-aligned World-space bounding box, given as elements ````[xmin, ymin, zmin, xmax, ymax, zmax]````.\n */\n getAABB(ids) {\n if (ids === undefined) {\n return this.aabb;\n }\n if (utils.isString(ids)) {\n const entity = this.objects[ids];\n if (entity && entity.aabb) { // A Component subclass with an AABB\n return entity.aabb;\n }\n ids = [ids]; // Must be an entity type\n }\n if (ids.length === 0) {\n return this.aabb;\n }\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = math.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_DOUBLE;\n let valid;\n this.withObjects(ids, entity => {\n if (entity.collidable) {\n const aabb = entity.aabb;\n if (aabb[0] < xmin) {\n xmin = aabb[0];\n }\n if (aabb[1] < ymin) {\n ymin = aabb[1];\n }\n if (aabb[2] < zmin) {\n zmin = aabb[2];\n }\n if (aabb[3] > xmax) {\n xmax = aabb[3];\n }\n if (aabb[4] > ymax) {\n ymax = aabb[4];\n }\n if (aabb[5] > zmax) {\n zmax = aabb[5];\n }\n valid = true;\n }\n }\n );\n if (valid) {\n const aabb2 = math.AABB3();\n aabb2[0] = xmin;\n aabb2[1] = ymin;\n aabb2[2] = zmin;\n aabb2[3] = xmax;\n aabb2[4] = ymax;\n aabb2[5] = zmax;\n return aabb2;\n } else {\n return this.aabb; // Scene AABB\n }\n }\n\n /**\n * Batch-updates {@link Entity#visible} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#visible} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#visibleObjects}.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} visible Whether or not to set visible.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsVisible(ids, visible) {\n return this.withObjects(ids, entity => {\n const changed = (entity.visible !== visible);\n entity.visible = visible;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#collidable} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} collidable Whether or not to set collidable.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsCollidable(ids, collidable) {\n return this.withObjects(ids, entity => {\n const changed = (entity.collidable !== collidable);\n entity.collidable = collidable;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#culled} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} culled Whether or not to cull.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsCulled(ids, culled) {\n return this.withObjects(ids, entity => {\n const changed = (entity.culled !== culled);\n entity.culled = culled;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#selected} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#selected} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#selectedObjects}.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} selected Whether or not to select.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsSelected(ids, selected) {\n return this.withObjects(ids, entity => {\n const changed = (entity.selected !== selected);\n entity.selected = selected;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#highlighted} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#highlighted} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#highlightedObjects}.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} highlighted Whether or not to highlight.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsHighlighted(ids, highlighted) {\n return this.withObjects(ids, entity => {\n const changed = (entity.highlighted !== highlighted);\n entity.highlighted = highlighted;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#xrayed} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} xrayed Whether or not to xray.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsXRayed(ids, xrayed) {\n return this.withObjects(ids, entity => {\n const changed = (entity.xrayed !== xrayed);\n entity.xrayed = xrayed;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#edges} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} edges Whether or not to show edges.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsEdges(ids, edges) {\n return this.withObjects(ids, entity => {\n const changed = (entity.edges !== edges);\n entity.edges = edges;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#colorize} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Number[]} [colorize=(1,1,1)] RGB colorize factors, multiplied by the rendered pixel colors.\n * @returns {Boolean} True if any {@link Entity}s changed opacity, else false if all updates were redundant and not applied.\n */\n setObjectsColorized(ids, colorize) {\n return this.withObjects(ids, entity => {\n entity.colorize = colorize;\n });\n }\n\n /**\n * Batch-updates {@link Entity#opacity} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Number} [opacity=1.0] Opacity factor, multiplied by the rendered pixel alphas.\n * @returns {Boolean} True if any {@link Entity}s changed opacity, else false if all updates were redundant and not applied.\n */\n setObjectsOpacity(ids, opacity) {\n return this.withObjects(ids, entity => {\n const changed = (entity.opacity !== opacity);\n entity.opacity = opacity;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#pickable} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} pickable Whether or not to set pickable.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsPickable(ids, pickable) {\n return this.withObjects(ids, entity => {\n const changed = (entity.pickable !== pickable);\n entity.pickable = pickable;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#offset} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Number[]} [offset] 3D offset vector.\n */\n setObjectsOffset(ids, offset) {\n this.withObjects(ids, entity => {\n entity.offset = offset;\n });\n }\n\n /**\n * Iterates with a callback over {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Function} callback Callback to execute on eacn {@link Entity}.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n withObjects(ids, callback) {\n if (utils.isString(ids)) {\n ids = [ids];\n }\n let changed = false;\n for (let i = 0, len = ids.length; i < len; i++) {\n const id = ids[i];\n let entity = this.objects[id];\n if (entity) {\n changed = callback(entity) || changed;\n } else {\n const modelIds = this.modelIds;\n for (let i = 0, len = modelIds.length; i < len; i++) {\n const modelId = modelIds[i];\n const globalObjectId = math.globalizeObjectId(modelId, id);\n entity = this.objects[globalObjectId];\n if (entity) {\n changed = callback(entity) || changed;\n }\n }\n }\n }\n return changed;\n }\n\n /**\n * This method will \"tickify\" the provided `cb` function.\n *\n * This means, the function will be wrapped so:\n *\n * - it runs time-aligned to scene ticks\n * - it runs maximum once per scene-tick\n *\n * @param {Function} cb The function to tickify\n * @returns {Function}\n */\n tickify(cb) {\n const cbString = cb.toString();\n\n /**\n * Check if the function is already tickified, and if so return the cached one.\n */\n if (cbString in this._tickifiedFunctions) {\n return this._tickifiedFunctions[cbString].wrapperFunc;\n }\n\n let alreadyRun = 0;\n let needToRun = 0;\n\n let lastArgs;\n\n /**\n * The provided `cb` function is replaced with a \"set-dirty\" function\n *\n * @type {Function}\n */\n const wrapperFunc = function (...args) {\n lastArgs = args;\n needToRun++;\n };\n\n /**\n * An each scene tick, if the \"dirty-flag\" is set, run the `cb` function.\n *\n * This will make it run time-aligned to the scene tick.\n */\n const tickSubId = this.on(\"tick\", () => {\n const tmp = needToRun;\n if (tmp > alreadyRun) {\n alreadyRun = tmp;\n cb(...lastArgs);\n }\n });\n\n /**\n * And, store the list of subscribers.\n */\n this._tickifiedFunctions[cbString] = {tickSubId, wrapperFunc};\n\n return wrapperFunc;\n }\n\n /**\n * Destroys this Scene.\n */\n destroy() {\n\n super.destroy();\n\n for (const id in this.components) {\n if (this.components.hasOwnProperty(id)) {\n this.components[id].destroy();\n }\n }\n\n this.canvas.gl = null;\n\n // Memory leak prevention\n this.components = null;\n this.models = null;\n this.objects = null;\n this.visibleObjects = null;\n this.xrayedObjects = null;\n this.highlightedObjects = null;\n this.selectedObjects = null;\n this.colorizedObjects = null;\n this.opacityObjects = null;\n this.sectionPlanes = null;\n this.lights = null;\n this.lightMaps = null;\n this.reflectionMaps = null;\n this._objectIds = null;\n this._visibleObjectIds = null;\n this._xrayedObjectIds = null;\n this._highlightedObjectIds = null;\n this._selectedObjectIds = null;\n this._colorizedObjectIds = null;\n this.types = null;\n this.components = null;\n this.canvas = null;\n this._renderer = null;\n this.input = null;\n this._viewport = null;\n this._camera = null;\n }\n}\n\nexport {Scene};", @@ -159857,7 +160416,7 @@ "lineNumber": 1 }, { - "__docId__": 8076, + "__docId__": 8095, "kind": "variable", "name": "ASSERT_OBJECT_STATE_UPDATE", "memberof": "src/viewer/scene/scene/Scene.js", @@ -159878,7 +160437,7 @@ "ignore": true }, { - "__docId__": 8077, + "__docId__": 8096, "kind": "function", "name": "getEntityIDMap", "memberof": "src/viewer/scene/scene/Scene.js", @@ -159915,7 +160474,7 @@ "ignore": true }, { - "__docId__": 8078, + "__docId__": 8097, "kind": "class", "name": "Scene", "memberof": "src/viewer/scene/scene/Scene.js", @@ -159939,7 +160498,7 @@ ] }, { - "__docId__": 8079, + "__docId__": 8098, "kind": "get", "name": "type", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -159958,7 +160517,7 @@ } }, { - "__docId__": 8080, + "__docId__": 8099, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160050,7 +160609,7 @@ "ignore": true }, { - "__docId__": 8081, + "__docId__": 8100, "kind": "member", "name": "_tickifiedFunctions", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160070,7 +160629,7 @@ "ignore": true }, { - "__docId__": 8082, + "__docId__": 8101, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160088,7 +160647,7 @@ } }, { - "__docId__": 8083, + "__docId__": 8102, "kind": "member", "name": "viewer", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160107,7 +160666,7 @@ } }, { - "__docId__": 8084, + "__docId__": 8103, "kind": "member", "name": "occlusionTestCountdown", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160127,7 +160686,7 @@ "ignore": true }, { - "__docId__": 8085, + "__docId__": 8104, "kind": "member", "name": "loading", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160164,7 +160723,7 @@ } }, { - "__docId__": 8086, + "__docId__": 8105, "kind": "member", "name": "startTime", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160201,7 +160760,7 @@ } }, { - "__docId__": 8087, + "__docId__": 8106, "kind": "member", "name": "models", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160238,7 +160797,7 @@ } }, { - "__docId__": 8088, + "__docId__": 8107, "kind": "member", "name": "objects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160275,7 +160834,7 @@ } }, { - "__docId__": 8089, + "__docId__": 8108, "kind": "member", "name": "_numObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160293,7 +160852,7 @@ } }, { - "__docId__": 8090, + "__docId__": 8109, "kind": "member", "name": "visibleObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160330,7 +160889,7 @@ } }, { - "__docId__": 8091, + "__docId__": 8110, "kind": "member", "name": "_numVisibleObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160348,7 +160907,7 @@ } }, { - "__docId__": 8092, + "__docId__": 8111, "kind": "member", "name": "xrayedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160385,7 +160944,7 @@ } }, { - "__docId__": 8093, + "__docId__": 8112, "kind": "member", "name": "_numXRayedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160403,7 +160962,7 @@ } }, { - "__docId__": 8094, + "__docId__": 8113, "kind": "member", "name": "highlightedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160440,7 +160999,7 @@ } }, { - "__docId__": 8095, + "__docId__": 8114, "kind": "member", "name": "_numHighlightedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160458,7 +161017,7 @@ } }, { - "__docId__": 8096, + "__docId__": 8115, "kind": "member", "name": "selectedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160495,7 +161054,7 @@ } }, { - "__docId__": 8097, + "__docId__": 8116, "kind": "member", "name": "_numSelectedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160513,7 +161072,7 @@ } }, { - "__docId__": 8098, + "__docId__": 8117, "kind": "member", "name": "colorizedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160550,7 +161109,7 @@ } }, { - "__docId__": 8099, + "__docId__": 8118, "kind": "member", "name": "_numColorizedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160568,7 +161127,7 @@ } }, { - "__docId__": 8100, + "__docId__": 8119, "kind": "member", "name": "opacityObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160605,7 +161164,7 @@ } }, { - "__docId__": 8101, + "__docId__": 8120, "kind": "member", "name": "_numOpacityObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160623,7 +161182,7 @@ } }, { - "__docId__": 8102, + "__docId__": 8121, "kind": "member", "name": "offsetObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160660,7 +161219,7 @@ } }, { - "__docId__": 8103, + "__docId__": 8122, "kind": "member", "name": "_numOffsetObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160678,7 +161237,7 @@ } }, { - "__docId__": 8104, + "__docId__": 8123, "kind": "member", "name": "_modelIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160695,7 +161254,7 @@ } }, { - "__docId__": 8105, + "__docId__": 8124, "kind": "member", "name": "_objectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160713,7 +161272,7 @@ } }, { - "__docId__": 8106, + "__docId__": 8125, "kind": "member", "name": "_visibleObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160731,7 +161290,7 @@ } }, { - "__docId__": 8107, + "__docId__": 8126, "kind": "member", "name": "_xrayedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160749,7 +161308,7 @@ } }, { - "__docId__": 8108, + "__docId__": 8127, "kind": "member", "name": "_highlightedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160767,7 +161326,7 @@ } }, { - "__docId__": 8109, + "__docId__": 8128, "kind": "member", "name": "_selectedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160785,7 +161344,7 @@ } }, { - "__docId__": 8110, + "__docId__": 8129, "kind": "member", "name": "_colorizedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160803,7 +161362,7 @@ } }, { - "__docId__": 8111, + "__docId__": 8130, "kind": "member", "name": "_opacityObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160821,7 +161380,7 @@ } }, { - "__docId__": 8112, + "__docId__": 8131, "kind": "member", "name": "_offsetObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160839,7 +161398,7 @@ } }, { - "__docId__": 8113, + "__docId__": 8132, "kind": "member", "name": "_collidables", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160857,7 +161416,7 @@ } }, { - "__docId__": 8114, + "__docId__": 8133, "kind": "member", "name": "_compilables", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160875,7 +161434,7 @@ } }, { - "__docId__": 8115, + "__docId__": 8134, "kind": "member", "name": "_needRecompile", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160893,7 +161452,7 @@ } }, { - "__docId__": 8116, + "__docId__": 8135, "kind": "member", "name": "types", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160912,7 +161471,7 @@ } }, { - "__docId__": 8117, + "__docId__": 8136, "kind": "member", "name": "components", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160928,7 +161487,7 @@ } }, { - "__docId__": 8118, + "__docId__": 8137, "kind": "member", "name": "sectionPlanes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160947,7 +161506,7 @@ } }, { - "__docId__": 8119, + "__docId__": 8138, "kind": "member", "name": "lights", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160966,7 +161525,7 @@ } }, { - "__docId__": 8120, + "__docId__": 8139, "kind": "member", "name": "lightMaps", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -160985,7 +161544,7 @@ } }, { - "__docId__": 8121, + "__docId__": 8140, "kind": "member", "name": "reflectionMaps", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161004,7 +161563,7 @@ } }, { - "__docId__": 8122, + "__docId__": 8141, "kind": "member", "name": "bitmaps", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161023,7 +161582,7 @@ } }, { - "__docId__": 8123, + "__docId__": 8142, "kind": "member", "name": "lineSets", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161042,7 +161601,7 @@ } }, { - "__docId__": 8124, + "__docId__": 8143, "kind": "member", "name": "realWorldOffset", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161061,7 +161620,7 @@ } }, { - "__docId__": 8125, + "__docId__": 8144, "kind": "member", "name": "canvas", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161080,7 +161639,7 @@ } }, { - "__docId__": 8126, + "__docId__": 8145, "kind": "member", "name": "_renderer", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161098,7 +161657,7 @@ } }, { - "__docId__": 8127, + "__docId__": 8146, "kind": "member", "name": "_sectionPlanesState", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161116,7 +161675,7 @@ } }, { - "__docId__": 8129, + "__docId__": 8148, "kind": "member", "name": "clippingCaps", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161133,7 +161692,7 @@ } }, { - "__docId__": 8130, + "__docId__": 8149, "kind": "member", "name": "_numCachedSectionPlanes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161151,7 +161710,7 @@ } }, { - "__docId__": 8132, + "__docId__": 8151, "kind": "member", "name": "_lightsState", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161169,7 +161728,7 @@ } }, { - "__docId__": 8136, + "__docId__": 8155, "kind": "member", "name": "input", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161206,7 +161765,7 @@ } }, { - "__docId__": 8137, + "__docId__": 8156, "kind": "member", "name": "metrics", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161243,7 +161802,7 @@ } }, { - "__docId__": 8138, + "__docId__": 8157, "kind": "member", "name": "sao", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161268,7 +161827,7 @@ } }, { - "__docId__": 8139, + "__docId__": 8158, "kind": "member", "name": "crossSections", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161293,7 +161852,7 @@ } }, { - "__docId__": 8147, + "__docId__": 8166, "kind": "member", "name": "_entityOffsetsEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161311,7 +161870,7 @@ } }, { - "__docId__": 8148, + "__docId__": 8167, "kind": "member", "name": "_logarithmicDepthBufferEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161329,7 +161888,7 @@ } }, { - "__docId__": 8149, + "__docId__": 8168, "kind": "member", "name": "_dtxEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161347,7 +161906,7 @@ } }, { - "__docId__": 8150, + "__docId__": 8169, "kind": "member", "name": "_pbrEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161365,7 +161924,7 @@ } }, { - "__docId__": 8151, + "__docId__": 8170, "kind": "member", "name": "_colorTextureEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161383,7 +161942,7 @@ } }, { - "__docId__": 8153, + "__docId__": 8172, "kind": "member", "name": "_viewport", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161401,7 +161960,7 @@ } }, { - "__docId__": 8154, + "__docId__": 8173, "kind": "member", "name": "_camera", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161419,7 +161978,7 @@ } }, { - "__docId__": 8155, + "__docId__": 8174, "kind": "method", "name": "_initDefaults", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161436,7 +161995,7 @@ "return": null }, { - "__docId__": 8156, + "__docId__": 8175, "kind": "method", "name": "_addComponent", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161460,7 +162019,7 @@ "return": null }, { - "__docId__": 8157, + "__docId__": 8176, "kind": "method", "name": "_removeComponent", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161484,7 +162043,7 @@ "return": null }, { - "__docId__": 8158, + "__docId__": 8177, "kind": "method", "name": "_sectionPlaneCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161508,7 +162067,7 @@ "return": null }, { - "__docId__": 8160, + "__docId__": 8179, "kind": "method", "name": "_bitmapCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161532,7 +162091,7 @@ "return": null }, { - "__docId__": 8161, + "__docId__": 8180, "kind": "method", "name": "_lineSetCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161556,7 +162115,7 @@ "return": null }, { - "__docId__": 8162, + "__docId__": 8181, "kind": "method", "name": "_lightCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161580,7 +162139,7 @@ "return": null }, { - "__docId__": 8164, + "__docId__": 8183, "kind": "method", "name": "_lightMapCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161604,7 +162163,7 @@ "return": null }, { - "__docId__": 8166, + "__docId__": 8185, "kind": "method", "name": "_reflectionMapCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161628,7 +162187,7 @@ "return": null }, { - "__docId__": 8168, + "__docId__": 8187, "kind": "method", "name": "_sectionPlaneDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161652,7 +162211,7 @@ "return": null }, { - "__docId__": 8170, + "__docId__": 8189, "kind": "method", "name": "_bitmapDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161676,7 +162235,7 @@ "return": null }, { - "__docId__": 8171, + "__docId__": 8190, "kind": "method", "name": "_lineSetDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161700,7 +162259,7 @@ "return": null }, { - "__docId__": 8172, + "__docId__": 8191, "kind": "method", "name": "_lightDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161724,7 +162283,7 @@ "return": null }, { - "__docId__": 8174, + "__docId__": 8193, "kind": "method", "name": "_lightMapDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161748,7 +162307,7 @@ "return": null }, { - "__docId__": 8176, + "__docId__": 8195, "kind": "method", "name": "_reflectionMapDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161772,7 +162331,7 @@ "return": null }, { - "__docId__": 8178, + "__docId__": 8197, "kind": "method", "name": "_registerModel", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161796,7 +162355,7 @@ "return": null }, { - "__docId__": 8180, + "__docId__": 8199, "kind": "method", "name": "_deregisterModel", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161820,7 +162379,7 @@ "return": null }, { - "__docId__": 8182, + "__docId__": 8201, "kind": "method", "name": "_registerObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161844,7 +162403,7 @@ "return": null }, { - "__docId__": 8184, + "__docId__": 8203, "kind": "method", "name": "_deregisterObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161868,7 +162427,7 @@ "return": null }, { - "__docId__": 8186, + "__docId__": 8205, "kind": "method", "name": "_objectVisibilityUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161901,7 +162460,7 @@ "return": null }, { - "__docId__": 8188, + "__docId__": 8207, "kind": "method", "name": "_deRegisterVisibleObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161925,7 +162484,7 @@ "return": null }, { - "__docId__": 8190, + "__docId__": 8209, "kind": "method", "name": "_objectXRayedUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161958,7 +162517,7 @@ "return": null }, { - "__docId__": 8192, + "__docId__": 8211, "kind": "method", "name": "_deRegisterXRayedObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -161982,7 +162541,7 @@ "return": null }, { - "__docId__": 8194, + "__docId__": 8213, "kind": "method", "name": "_objectHighlightedUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162006,7 +162565,7 @@ "return": null }, { - "__docId__": 8196, + "__docId__": 8215, "kind": "method", "name": "_deRegisterHighlightedObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162030,7 +162589,7 @@ "return": null }, { - "__docId__": 8198, + "__docId__": 8217, "kind": "method", "name": "_objectSelectedUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162063,7 +162622,7 @@ "return": null }, { - "__docId__": 8200, + "__docId__": 8219, "kind": "method", "name": "_deRegisterSelectedObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162087,7 +162646,7 @@ "return": null }, { - "__docId__": 8202, + "__docId__": 8221, "kind": "method", "name": "_objectColorizeUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162117,7 +162676,7 @@ "return": null }, { - "__docId__": 8204, + "__docId__": 8223, "kind": "method", "name": "_deRegisterColorizedObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162141,7 +162700,7 @@ "return": null }, { - "__docId__": 8206, + "__docId__": 8225, "kind": "method", "name": "_objectOpacityUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162171,7 +162730,7 @@ "return": null }, { - "__docId__": 8208, + "__docId__": 8227, "kind": "method", "name": "_deRegisterOpacityObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162195,7 +162754,7 @@ "return": null }, { - "__docId__": 8210, + "__docId__": 8229, "kind": "method", "name": "_objectOffsetUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162225,7 +162784,7 @@ "return": null }, { - "__docId__": 8212, + "__docId__": 8231, "kind": "method", "name": "_deRegisterOffsetObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162249,7 +162808,7 @@ "return": null }, { - "__docId__": 8214, + "__docId__": 8233, "kind": "method", "name": "_webglContextLost", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162266,7 +162825,7 @@ "return": null }, { - "__docId__": 8215, + "__docId__": 8234, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162283,7 +162842,7 @@ "return": null }, { - "__docId__": 8216, + "__docId__": 8235, "kind": "get", "name": "capabilities", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162316,7 +162875,7 @@ } }, { - "__docId__": 8217, + "__docId__": 8236, "kind": "get", "name": "entityOffsetsEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162348,7 +162907,7 @@ } }, { - "__docId__": 8218, + "__docId__": 8237, "kind": "get", "name": "pickSurfacePrecisionEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162380,7 +162939,7 @@ } }, { - "__docId__": 8219, + "__docId__": 8238, "kind": "get", "name": "logarithmicDepthBufferEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162412,7 +162971,7 @@ } }, { - "__docId__": 8220, + "__docId__": 8239, "kind": "set", "name": "numCachedSectionPlanes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162425,7 +162984,7 @@ "lineNumber": 1330 }, { - "__docId__": 8222, + "__docId__": 8241, "kind": "get", "name": "numCachedSectionPlanes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162457,7 +163016,7 @@ } }, { - "__docId__": 8223, + "__docId__": 8242, "kind": "set", "name": "pbrEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162470,7 +163029,7 @@ "lineNumber": 1361 }, { - "__docId__": 8225, + "__docId__": 8244, "kind": "get", "name": "pbrEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162502,7 +163061,7 @@ } }, { - "__docId__": 8226, + "__docId__": 8245, "kind": "set", "name": "dtxEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162523,7 +163082,7 @@ } }, { - "__docId__": 8228, + "__docId__": 8247, "kind": "get", "name": "dtxEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162544,7 +163103,7 @@ } }, { - "__docId__": 8229, + "__docId__": 8248, "kind": "set", "name": "colorTextureEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162571,7 +163130,7 @@ } }, { - "__docId__": 8231, + "__docId__": 8250, "kind": "get", "name": "colorTextureEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162603,7 +163162,7 @@ } }, { - "__docId__": 8232, + "__docId__": 8251, "kind": "method", "name": "doOcclusionTest", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162618,7 +163177,7 @@ "return": null }, { - "__docId__": 8234, + "__docId__": 8253, "kind": "method", "name": "render", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162646,7 +163205,7 @@ "return": null }, { - "__docId__": 8236, + "__docId__": 8255, "kind": "method", "name": "compile", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162662,7 +163221,7 @@ "return": null }, { - "__docId__": 8238, + "__docId__": 8257, "kind": "method", "name": "_recompile", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162679,7 +163238,7 @@ "return": null }, { - "__docId__": 8239, + "__docId__": 8258, "kind": "method", "name": "_saveAmbientColor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162696,7 +163255,7 @@ "return": null }, { - "__docId__": 8240, + "__docId__": 8259, "kind": "member", "name": "_lastAmbientColor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162714,7 +163273,7 @@ } }, { - "__docId__": 8242, + "__docId__": 8261, "kind": "get", "name": "modelIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162735,7 +163294,7 @@ } }, { - "__docId__": 8244, + "__docId__": 8263, "kind": "get", "name": "numObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162756,7 +163315,7 @@ } }, { - "__docId__": 8245, + "__docId__": 8264, "kind": "get", "name": "objectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162777,7 +163336,7 @@ } }, { - "__docId__": 8247, + "__docId__": 8266, "kind": "get", "name": "numVisibleObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162798,7 +163357,7 @@ } }, { - "__docId__": 8248, + "__docId__": 8267, "kind": "get", "name": "visibleObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162819,7 +163378,7 @@ } }, { - "__docId__": 8250, + "__docId__": 8269, "kind": "get", "name": "numXRayedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162840,7 +163399,7 @@ } }, { - "__docId__": 8251, + "__docId__": 8270, "kind": "get", "name": "xrayedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162861,7 +163420,7 @@ } }, { - "__docId__": 8253, + "__docId__": 8272, "kind": "get", "name": "numHighlightedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162882,7 +163441,7 @@ } }, { - "__docId__": 8254, + "__docId__": 8273, "kind": "get", "name": "highlightedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162903,7 +163462,7 @@ } }, { - "__docId__": 8256, + "__docId__": 8275, "kind": "get", "name": "numSelectedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162924,7 +163483,7 @@ } }, { - "__docId__": 8257, + "__docId__": 8276, "kind": "get", "name": "selectedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162945,7 +163504,7 @@ } }, { - "__docId__": 8259, + "__docId__": 8278, "kind": "get", "name": "numColorizedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162966,7 +163525,7 @@ } }, { - "__docId__": 8260, + "__docId__": 8279, "kind": "get", "name": "colorizedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -162987,7 +163546,7 @@ } }, { - "__docId__": 8262, + "__docId__": 8281, "kind": "get", "name": "opacityObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163008,7 +163567,7 @@ } }, { - "__docId__": 8264, + "__docId__": 8283, "kind": "get", "name": "offsetObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163029,7 +163588,7 @@ } }, { - "__docId__": 8266, + "__docId__": 8285, "kind": "set", "name": "ticksPerRender", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163050,7 +163609,7 @@ } }, { - "__docId__": 8267, + "__docId__": 8286, "kind": "member", "name": "_ticksPerRender", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163068,7 +163627,7 @@ } }, { - "__docId__": 8268, + "__docId__": 8287, "kind": "get", "name": "ticksPerRender", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163089,7 +163648,7 @@ } }, { - "__docId__": 8269, + "__docId__": 8288, "kind": "set", "name": "ticksPerOcclusionTest", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163110,7 +163669,7 @@ } }, { - "__docId__": 8270, + "__docId__": 8289, "kind": "member", "name": "_ticksPerOcclusionTest", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163128,7 +163687,7 @@ } }, { - "__docId__": 8271, + "__docId__": 8290, "kind": "get", "name": "ticksPerOcclusionTest", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163149,7 +163708,7 @@ } }, { - "__docId__": 8272, + "__docId__": 8291, "kind": "set", "name": "passes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163170,7 +163729,7 @@ } }, { - "__docId__": 8273, + "__docId__": 8292, "kind": "member", "name": "_passes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163188,7 +163747,7 @@ } }, { - "__docId__": 8274, + "__docId__": 8293, "kind": "get", "name": "passes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163209,7 +163768,7 @@ } }, { - "__docId__": 8275, + "__docId__": 8294, "kind": "set", "name": "clearEachPass", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163230,7 +163789,7 @@ } }, { - "__docId__": 8276, + "__docId__": 8295, "kind": "member", "name": "_clearEachPass", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163248,7 +163807,7 @@ } }, { - "__docId__": 8277, + "__docId__": 8296, "kind": "get", "name": "clearEachPass", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163269,7 +163828,7 @@ } }, { - "__docId__": 8278, + "__docId__": 8297, "kind": "set", "name": "gammaInput", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163290,7 +163849,7 @@ } }, { - "__docId__": 8280, + "__docId__": 8299, "kind": "get", "name": "gammaInput", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163311,7 +163870,7 @@ } }, { - "__docId__": 8281, + "__docId__": 8300, "kind": "set", "name": "gammaOutput", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163332,7 +163891,7 @@ } }, { - "__docId__": 8283, + "__docId__": 8302, "kind": "get", "name": "gammaOutput", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163353,7 +163912,7 @@ } }, { - "__docId__": 8284, + "__docId__": 8303, "kind": "set", "name": "gammaFactor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163374,7 +163933,7 @@ } }, { - "__docId__": 8285, + "__docId__": 8304, "kind": "get", "name": "gammaFactor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163395,7 +163954,7 @@ } }, { - "__docId__": 8286, + "__docId__": 8305, "kind": "get", "name": "geometry", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163416,7 +163975,7 @@ } }, { - "__docId__": 8287, + "__docId__": 8306, "kind": "get", "name": "material", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163437,7 +163996,7 @@ } }, { - "__docId__": 8288, + "__docId__": 8307, "kind": "get", "name": "xrayMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163458,7 +164017,7 @@ } }, { - "__docId__": 8289, + "__docId__": 8308, "kind": "get", "name": "highlightMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163479,7 +164038,7 @@ } }, { - "__docId__": 8290, + "__docId__": 8309, "kind": "get", "name": "selectedMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163500,7 +164059,7 @@ } }, { - "__docId__": 8291, + "__docId__": 8310, "kind": "get", "name": "edgeMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163521,7 +164080,7 @@ } }, { - "__docId__": 8292, + "__docId__": 8311, "kind": "get", "name": "pointsMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163542,7 +164101,7 @@ } }, { - "__docId__": 8293, + "__docId__": 8312, "kind": "get", "name": "linesMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163563,7 +164122,7 @@ } }, { - "__docId__": 8294, + "__docId__": 8313, "kind": "get", "name": "viewport", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163584,7 +164143,7 @@ } }, { - "__docId__": 8295, + "__docId__": 8314, "kind": "get", "name": "camera", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163605,7 +164164,7 @@ } }, { - "__docId__": 8296, + "__docId__": 8315, "kind": "get", "name": "center", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163626,7 +164185,7 @@ } }, { - "__docId__": 8297, + "__docId__": 8316, "kind": "member", "name": "_center", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163644,7 +164203,7 @@ } }, { - "__docId__": 8298, + "__docId__": 8317, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163665,7 +164224,7 @@ } }, { - "__docId__": 8299, + "__docId__": 8318, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163683,7 +164242,7 @@ } }, { - "__docId__": 8301, + "__docId__": 8320, "kind": "method", "name": "_setAABBDirty", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163700,7 +164259,7 @@ "return": null }, { - "__docId__": 8303, + "__docId__": 8322, "kind": "method", "name": "pick", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163881,7 +164440,7 @@ } }, { - "__docId__": 8305, + "__docId__": 8324, "kind": "method", "name": "snapPick", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163958,7 +164517,7 @@ } }, { - "__docId__": 8306, + "__docId__": 8325, "kind": "member", "name": "_warnSnapPickDeprecated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163976,7 +164535,7 @@ } }, { - "__docId__": 8307, + "__docId__": 8326, "kind": "method", "name": "clear", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -163991,7 +164550,7 @@ "return": null }, { - "__docId__": 8308, + "__docId__": 8327, "kind": "method", "name": "clearLights", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164006,7 +164565,7 @@ "return": null }, { - "__docId__": 8309, + "__docId__": 8328, "kind": "method", "name": "clearSectionPlanes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164021,7 +164580,7 @@ "return": null }, { - "__docId__": 8310, + "__docId__": 8329, "kind": "method", "name": "clearBitmaps", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164036,7 +164595,7 @@ "return": null }, { - "__docId__": 8311, + "__docId__": 8330, "kind": "method", "name": "clearLines", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164051,7 +164610,7 @@ "return": null }, { - "__docId__": 8312, + "__docId__": 8331, "kind": "method", "name": "getAABB", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164090,7 +164649,7 @@ } }, { - "__docId__": 8313, + "__docId__": 8332, "kind": "method", "name": "setObjectsVisible", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164139,7 +164698,7 @@ } }, { - "__docId__": 8314, + "__docId__": 8333, "kind": "method", "name": "setObjectsCollidable", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164188,7 +164747,7 @@ } }, { - "__docId__": 8315, + "__docId__": 8334, "kind": "method", "name": "setObjectsCulled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164237,7 +164796,7 @@ } }, { - "__docId__": 8316, + "__docId__": 8335, "kind": "method", "name": "setObjectsSelected", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164286,7 +164845,7 @@ } }, { - "__docId__": 8317, + "__docId__": 8336, "kind": "method", "name": "setObjectsHighlighted", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164335,7 +164894,7 @@ } }, { - "__docId__": 8318, + "__docId__": 8337, "kind": "method", "name": "setObjectsXRayed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164384,7 +164943,7 @@ } }, { - "__docId__": 8319, + "__docId__": 8338, "kind": "method", "name": "setObjectsEdges", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164433,7 +164992,7 @@ } }, { - "__docId__": 8320, + "__docId__": 8339, "kind": "method", "name": "setObjectsColorized", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164484,7 +165043,7 @@ } }, { - "__docId__": 8321, + "__docId__": 8340, "kind": "method", "name": "setObjectsOpacity", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164535,7 +165094,7 @@ } }, { - "__docId__": 8322, + "__docId__": 8341, "kind": "method", "name": "setObjectsPickable", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164584,7 +165143,7 @@ } }, { - "__docId__": 8323, + "__docId__": 8342, "kind": "method", "name": "setObjectsOffset", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164620,7 +165179,7 @@ "return": null }, { - "__docId__": 8324, + "__docId__": 8343, "kind": "method", "name": "withObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164669,7 +165228,7 @@ } }, { - "__docId__": 8325, + "__docId__": 8344, "kind": "method", "name": "tickify", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164708,7 +165267,7 @@ } }, { - "__docId__": 8326, + "__docId__": 8345, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -164723,7 +165282,7 @@ "return": null }, { - "__docId__": 8353, + "__docId__": 8372, "kind": "file", "name": "src/viewer/scene/sectionPlane/SectionPlane.js", "content": "import {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\nimport {math} from \"../math/math.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @desc An arbitrarily-aligned World-space clipping plane.\n *\n * * Slices portions off objects to create cross-section views or reveal interiors.\n * * Registered by {@link SectionPlane#id} in {@link Scene#sectionPlanes}.\n * * Indicates World-space position in {@link SectionPlane#pos} and orientation in {@link SectionPlane#dir}.\n * * Discards elements from the half-space in the direction of {@link SectionPlane#dir}.\n * * Can be be enabled or disabled via {@link SectionPlane#active}.\n *\n * ## Usage\n *\n * In the example below, we'll create two SectionPlanes to slice a model loaded from glTF. Note that we could also create them\n * using a {@link SectionPlanesPlugin}.\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, SectionPlane} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * const gltfLoaderPlugin = new GLTFModelsPlugin(viewer, {\n * id: \"GLTFModels\"\n * });\n *\n * const model = gltfLoaderPlugin.load({\n * id: \"myModel\",\n * src: \"./models/gltf/mygltfmodel.gltf\"\n * });\n *\n * // Create a SectionPlane on negative diagonal\n * const sectionPlane1 = new SectionPlane(viewer.scene, {\n * pos: [1.0, 1.0, 1.0],\n * dir: [-1.0, -1.0, -1.0],\n * active: true\n * }),\n *\n * // Create a SectionPlane on positive diagonal\n * const sectionPlane2 = new SectionPlane(viewer.scene, {\n * pos: [-1.0, -1.0, -1.0],\n * dir: [1.0, 1.0, 1.0],\n * active: true\n * });\n * ````\n */\nclass SectionPlane extends Component {\n\n /**\n @private\n */\n get type() {\n return \"SectionPlane\";\n }\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this SectionPlane as well.\n * @param {*} [cfg] SectionPlane configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Boolean} [cfg.active=true] Indicates whether or not this SectionPlane is active.\n * @param {Number[]} [cfg.pos=[0,0,0]] World-space position of the SectionPlane.\n * @param {Number[]} [cfg.dir=[0,0,-1]] Vector perpendicular to the plane surface, indicating the SectionPlane plane orientation.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n active: true,\n pos: math.vec3(),\n dir: math.vec3(),\n dist: 0\n });\n\n this.active = cfg.active;\n this.pos = cfg.pos;\n this.dir = cfg.dir;\n\n this.scene._sectionPlaneCreated(this);\n }\n\n /**\n * Sets if this SectionPlane is active or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} value Set ````true```` to activate else ````false```` to deactivate.\n */\n set active(value) {\n this._state.active = value !== false;\n this.glRedraw();\n this.fire(\"active\", this._state.active);\n }\n\n /**\n * Gets if this SectionPlane is active or not.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if active.\n */\n get active() {\n return this._state.active;\n }\n\n /**\n * Sets the World-space position of this SectionPlane's plane.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @param {Number[]} value New position.\n */\n set pos(value) {\n this._state.pos.set(value || [0, 0, 0]);\n this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));\n this.fire(\"pos\", this._state.pos);\n this.scene.fire(\"sectionPlaneUpdated\", this);\n }\n\n /**\n * Gets the World-space position of this SectionPlane's plane.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @returns {Number[]} Current position.\n */\n get pos() {\n return this._state.pos;\n }\n\n /**\n * Sets the direction of this SectionPlane's plane.\n *\n * Default value is ````[0, 0, -1]````.\n *\n * @param {Number[]} value New direction.\n */\n set dir(value) {\n this._state.dir.set(value || [0, 0, -1]);\n this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));\n this.glRedraw();\n this.fire(\"dir\", this._state.dir);\n this.scene.fire(\"sectionPlaneUpdated\", this);\n }\n\n /**\n * Gets the direction of this SectionPlane's plane.\n *\n * Default value is ````[0, 0, -1]````.\n *\n * @returns {Number[]} value Current direction.\n */\n get dir() {\n return this._state.dir;\n }\n\n /**\n * Gets this SectionPlane's distance to the origin of the World-space coordinate system.\n *\n * This is the dot product of {@link SectionPlane#pos} and {@link SectionPlane#dir} and is automatically re-calculated\n * each time either of two properties are updated.\n *\n * @returns {Number}\n */\n get dist() {\n return this._state.dist;\n }\n\n /**\n * Inverts the direction of {@link SectionPlane#dir}.\n */\n flipDir() {\n const dir = this._state.dir;\n dir[0] *= -1.0;\n dir[1] *= -1.0;\n dir[2] *= -1.0;\n this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));\n this.fire(\"dir\", this._state.dir);\n this.glRedraw();\n }\n\n /**\n * @destroy\n */\n destroy() {\n this._state.destroy();\n this.scene._sectionPlaneDestroyed(this);\n super.destroy();\n }\n}\n\nexport {SectionPlane};\n", @@ -164734,7 +165293,7 @@ "lineNumber": 1 }, { - "__docId__": 8354, + "__docId__": 8373, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js", @@ -164755,7 +165314,7 @@ "ignore": true }, { - "__docId__": 8355, + "__docId__": 8374, "kind": "class", "name": "SectionPlane", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js", @@ -164773,7 +165332,7 @@ ] }, { - "__docId__": 8356, + "__docId__": 8375, "kind": "get", "name": "type", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -164792,7 +165351,7 @@ } }, { - "__docId__": 8357, + "__docId__": 8376, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -164887,7 +165446,7 @@ ] }, { - "__docId__": 8358, + "__docId__": 8377, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -164905,7 +165464,7 @@ } }, { - "__docId__": 8362, + "__docId__": 8381, "kind": "set", "name": "active", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -164930,7 +165489,7 @@ ] }, { - "__docId__": 8363, + "__docId__": 8382, "kind": "get", "name": "active", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -164962,7 +165521,7 @@ } }, { - "__docId__": 8364, + "__docId__": 8383, "kind": "set", "name": "pos", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -164987,7 +165546,7 @@ ] }, { - "__docId__": 8365, + "__docId__": 8384, "kind": "get", "name": "pos", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -165019,7 +165578,7 @@ } }, { - "__docId__": 8366, + "__docId__": 8385, "kind": "set", "name": "dir", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -165044,7 +165603,7 @@ ] }, { - "__docId__": 8367, + "__docId__": 8386, "kind": "get", "name": "dir", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -165076,7 +165635,7 @@ } }, { - "__docId__": 8368, + "__docId__": 8387, "kind": "get", "name": "dist", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -165108,7 +165667,7 @@ } }, { - "__docId__": 8369, + "__docId__": 8388, "kind": "method", "name": "flipDir", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -165123,7 +165682,7 @@ "return": null }, { - "__docId__": 8370, + "__docId__": 8389, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -165144,7 +165703,7 @@ "return": null }, { - "__docId__": 8371, + "__docId__": 8390, "kind": "file", "name": "src/viewer/scene/sectionPlane/SectionPlaneCache.js", "content": "import {Component} from '../Component.js';\nimport {math} from \"../math/math.js\";\nimport {SectionPlane} from \"./SectionPlane\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @desc A set of arbitrarily-aligned World-space clipping planes.\n\n */\nexport class SectionPlaneCache extends Component {\n\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n\n this._sectionPlanesMap = {};\n this._sectionPlanesState = {};\n\n if (cfg.size) {\n for (let i = 0, len = cfg.size; i < len; i++) {\n const sectionPlane = new SectionPlane(this.viewer.scene, {\n id: math.createUUID(),\n pos: [0, 0, 0],\n dir: [0, -1, 0],\n active: false\n });\n this._sectionPlanesMap[sectionPlane.id] = sectionPlane;\n this._sectionPlanesState[sectionPlane.id] = {\n sectionPlane: sectionPlane,\n used: false\n };\n }\n }\n }\n\n getSectionPlane(params = {}) {\n for (let id in this._sectionPlanesState) {\n const state = this._sectionPlanesState[id];\n if (!state.used) {\n state.used = true;\n const sectionPlane = state.sectionPlane;\n sectionPlane.active = true;\n sectionPlane.pos = params.pos;\n sectionPlane.dir = params.dir;\n return sectionPlane;\n }\n }\n const sectionPlane = new SectionPlane(this.viewer.scene, {\n id: params.id, // Optional\n pos: params.pos,\n dir: params.dir,\n active: true\n });\n this._sectionPlanesState[sectionPlane.id] = {\n sectionPlane: sectionPlane,\n used: true\n };\n return sectionPlane;\n }\n\n putSectionPlane(sectionPlane) {\n let state = this._sectionPlanesState[sectionPlane.id];\n sectionPlane.active = false;\n if (state) {\n state.used = false;\n return;\n }\n this._sectionPlanesState[sectionPlane.id] = {\n sectionPlane: sectionPlane,\n used: false\n };\n }\n\n putAllSectionPlanes() {\n for (let id in this._sectionPlanesState) {\n const state = this._sectionPlanesState[id];\n state.used = false;\n state.sectionPlane.active = false;\n }\n }\n\n getSectionPlanesInUse() {\n const sectionPlanes = [];\n for (let id in this._sectionPlanesState) {\n const state = this._sectionPlanesState[id];\n if (state.used) {\n sectionPlanes.push(state.sectionPlane);\n }\n }\n return sectionPlanes;\n }\n\n /**\n * @destroy\n */\n destroy() {\n this.scene._sectionPlaneDestroyed(this);\n super.destroy();\n }\n}\n\n", @@ -165155,7 +165714,7 @@ "lineNumber": 1 }, { - "__docId__": 8372, + "__docId__": 8391, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js", @@ -165176,7 +165735,7 @@ "ignore": true }, { - "__docId__": 8373, + "__docId__": 8392, "kind": "class", "name": "SectionPlaneCache", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js", @@ -165194,7 +165753,7 @@ ] }, { - "__docId__": 8374, + "__docId__": 8393, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache", @@ -165208,7 +165767,7 @@ "undocument": true }, { - "__docId__": 8375, + "__docId__": 8394, "kind": "member", "name": "_sectionPlanesMap", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache", @@ -165226,7 +165785,7 @@ } }, { - "__docId__": 8376, + "__docId__": 8395, "kind": "member", "name": "_sectionPlanesState", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache", @@ -165244,7 +165803,7 @@ } }, { - "__docId__": 8377, + "__docId__": 8396, "kind": "method", "name": "getSectionPlane", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache", @@ -165274,7 +165833,7 @@ } }, { - "__docId__": 8378, + "__docId__": 8397, "kind": "method", "name": "putSectionPlane", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache", @@ -165297,7 +165856,7 @@ "return": null }, { - "__docId__": 8379, + "__docId__": 8398, "kind": "method", "name": "putAllSectionPlanes", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache", @@ -165313,7 +165872,7 @@ "return": null }, { - "__docId__": 8380, + "__docId__": 8399, "kind": "method", "name": "getSectionPlanesInUse", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache", @@ -165333,7 +165892,7 @@ } }, { - "__docId__": 8381, + "__docId__": 8400, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/sectionPlane/SectionPlaneCache.js~SectionPlaneCache", @@ -165354,7 +165913,7 @@ "return": null }, { - "__docId__": 8382, + "__docId__": 8401, "kind": "file", "name": "src/viewer/scene/sectionPlane/index.js", "content": "export * from \"./SectionPlane.js\";", @@ -165365,7 +165924,7 @@ "lineNumber": 1 }, { - "__docId__": 8383, + "__docId__": 8402, "kind": "file", "name": "src/viewer/scene/skybox/Skybox.js", "content": "import {Component} from \"../Component.js\";\nimport {Mesh} from \"../mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../geometry/ReadableGeometry.js\";\nimport {PhongMaterial} from \"../materials/PhongMaterial.js\";\nimport {Texture} from \"../materials/Texture.js\";\n\n/**\n * @desc A Skybox.\n */\nclass Skybox extends Component {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this PointLight as well.\n * @param {*} [cfg] Skybox configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {Scene}, generated automatically when omitted.\n * @param {String} [cfg.src=null] Path to skybox texture\n * @param {String} [cfg.encoding=\"linear\"] Texture encoding format. See the {@link Texture#encoding} property for more info.\n * @param {Number} [cfg.size=1000] Size of this Skybox, given as the distance from the center at ````[0,0,0]```` to each face.\n * @param {Boolean} [cfg.active=true] True when this Skybox is visible.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._skyboxMesh = new Mesh(this, {\n\n geometry: new ReadableGeometry(this, { // Box-shaped geometry\n primitive: \"triangles\",\n positions: [\n 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v5 right\n 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v5-v6-v1 top\n -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v5 back\n ],\n uv: [\n 0.5, 0.6666, 0.25, 0.6666, 0.25, 0.3333, 0.5, 0.3333, 0.5, 0.6666, 0.5, 0.3333, 0.75, 0.3333, 0.75, 0.6666,\n 0.5, 0.6666, 0.5, 1, 0.25, 1, 0.25, 0.6666, 0.25, 0.6666, 0.0, 0.6666, 0.0, 0.3333, 0.25, 0.3333,\n 0.25, 0, 0.50, 0, 0.50, 0.3333, 0.25, 0.3333, 0.75, 0.3333, 1.0, 0.3333, 1.0, 0.6666, 0.75, 0.6666\n ],\n indices: [\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11,\n 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23\n ]\n }),\n background: true,\n scale: [2000, 2000, 2000], // Overridden when we initialize the 'size' property, below\n rotation: [0, -90, 0],\n material: new PhongMaterial(this, {\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n emissive: [1, 1, 1],\n emissiveMap: new Texture(this, {\n src: cfg.src,\n flipY: true,\n wrapS: \"clampToEdge\",\n wrapT: \"clampToEdge\",\n encoding: cfg.encoding || \"sRGB\"\n }),\n backfaces: true // Show interior faces of our skybox geometry\n }),\n // stationary: true,\n visible: false,\n pickable: false,\n clippable: false,\n collidable: false\n });\n\n this.size = cfg.size; // Sets 'xyz' property on the Mesh's Scale transform\n this.active = cfg.active;\n }\n\n\n /**\n * Sets the size of this Skybox, given as the distance from the center at [0,0,0] to each face.\n *\n * Default value is ````1000````.\n *\n * @param {Number} value The size.\n */\n set size(value) {\n this._size = value || 1000;\n this._skyboxMesh.scale = [this._size, this._size, this._size];\n }\n\n /**\n * Gets the size of this Skybox, given as the distance from the center at [0,0,0] to each face.\n *\n * Default value is ````1000````.\n *\n * @returns {Number} The size.\n */\n get size() {\n return this._size;\n }\n\n /**\n * Sets whether this Skybox is visible or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} active Whether to make active or not.\n */\n set active(active) {\n this._skyboxMesh.visible = active;\n }\n\n /**\n * Gets if this Skybox is visible or not.\n *\n * Default active is ````true````.\n *\n * @returns {Boolean} ````true```` if the Skybox is active.\n */\n get active() {\n return this._skyboxMesh.visible;\n }\n}\n\nexport {Skybox}\n", @@ -165376,7 +165935,7 @@ "lineNumber": 1 }, { - "__docId__": 8384, + "__docId__": 8403, "kind": "class", "name": "Skybox", "memberof": "src/viewer/scene/skybox/Skybox.js", @@ -165394,7 +165953,7 @@ ] }, { - "__docId__": 8385, + "__docId__": 8404, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -165493,7 +166052,7 @@ ] }, { - "__docId__": 8386, + "__docId__": 8405, "kind": "member", "name": "_skyboxMesh", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -165511,7 +166070,7 @@ } }, { - "__docId__": 8389, + "__docId__": 8408, "kind": "set", "name": "size", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -165536,7 +166095,7 @@ ] }, { - "__docId__": 8390, + "__docId__": 8409, "kind": "member", "name": "_size", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -165554,7 +166113,7 @@ } }, { - "__docId__": 8391, + "__docId__": 8410, "kind": "get", "name": "size", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -165586,7 +166145,7 @@ } }, { - "__docId__": 8392, + "__docId__": 8411, "kind": "set", "name": "active", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -165611,7 +166170,7 @@ ] }, { - "__docId__": 8393, + "__docId__": 8412, "kind": "get", "name": "active", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -165643,7 +166202,7 @@ } }, { - "__docId__": 8394, + "__docId__": 8413, "kind": "file", "name": "src/viewer/scene/skybox/index.js", "content": "export * from \"./Skybox.js\";", @@ -165654,7 +166213,7 @@ "lineNumber": 1 }, { - "__docId__": 8395, + "__docId__": 8414, "kind": "file", "name": "src/viewer/scene/stats.js", "content": "/**\n * xeokit runtime statistics.\n * @type {{components: {models: number, objects: number, scenes: number, meshes: number}, memory: {indices: number, uvs: number, textures: number, materials: number, transforms: number, positions: number, programs: number, normals: number, meshes: number, colors: number}, build: {version: string}, client: {browser: string}, frame: {frameCount: number, useProgram: number, bindTexture: number, drawElements: number, bindArray: number, tasksRun: number, fps: number, drawArrays: number, tasksScheduled: number}}}\n */\nconst stats = {\n build: {\n version: \"0.8\"\n },\n client: {\n browser: (navigator && navigator.userAgent) ? navigator.userAgent : \"n/a\"\n },\n\n components: {\n scenes: 0,\n models: 0,\n meshes: 0,\n objects: 0\n },\n memory: {\n meshes: 0,\n positions: 0,\n colors: 0,\n normals: 0,\n uvs: 0,\n indices: 0,\n textures: 0,\n transforms: 0,\n materials: 0,\n programs: 0\n },\n frame: {\n frameCount: 0,\n fps: 0,\n useProgram: 0,\n bindTexture: 0,\n bindArray: 0,\n drawElements: 0,\n drawArrays: 0,\n tasksRun: 0,\n tasksScheduled: 0\n }\n};\n\nexport {stats};", @@ -165665,7 +166224,7 @@ "lineNumber": 1 }, { - "__docId__": 8396, + "__docId__": 8415, "kind": "variable", "name": "stats", "memberof": "src/viewer/scene/stats.js", @@ -165687,7 +166246,7 @@ } }, { - "__docId__": 8397, + "__docId__": 8416, "kind": "file", "name": "src/viewer/scene/utils/Cache.js", "content": "const Cache = {\n\n enabled: false,\n files: {},\n\n add: function (key, file) {\n if (this.enabled === false) {\n return;\n }\n this.files[key] = file;\n },\n\n get: function (key) {\n if (this.enabled === false) {\n return;\n }\n return this.files[key];\n },\n\n remove: function (key) {\n delete this.files[key];\n },\n\n clear: function () {\n this.files = {};\n }\n};\n\nexport {Cache};\n", @@ -165698,7 +166257,7 @@ "lineNumber": 1 }, { - "__docId__": 8398, + "__docId__": 8417, "kind": "variable", "name": "Cache", "memberof": "src/viewer/scene/utils/Cache.js", @@ -165718,7 +166277,7 @@ } }, { - "__docId__": 8399, + "__docId__": 8418, "kind": "file", "name": "src/viewer/scene/utils/FileLoader.js", "content": "import {Cache} from './Cache.js';\nimport {Loader} from './Loader.js';\nimport {core} from \"../core.js\";\n\nconst loading = {};\n\nclass FileLoader extends Loader {\n\n constructor(manager) {\n super(manager);\n }\n\n load(url, onLoad, onProgress, onError) {\n if (url === undefined) {\n url = '';\n }\n if (this.path !== undefined) {\n url = this.path + url;\n }\n url = this.manager.resolveURL(url);\n const cached = Cache.get(url);\n if (cached !== undefined) {\n this.manager.itemStart(url);\n core.scheduleTask(() => {\n if (onLoad) {\n onLoad(cached);\n }\n this.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n if (loading[url] !== undefined) {\n loading[url].push({onLoad, onProgress, onError});\n return;\n }\n loading[url] = [];\n loading[url].push({onLoad, onProgress, onError});\n const req = new Request(url, {\n headers: new Headers(this.requestHeader),\n credentials: this.withCredentials ? 'include' : 'same-origin'\n });\n const mimeType = this.mimeType;\n const responseType = this.responseType;\n fetch(req).then(response => {\n if (response.status === 200 || response.status === 0) {\n // Some browsers return HTTP Status 0 when using non-http protocol\n // e.g. 'file://' or 'data://'. Handle as success.\n if (response.status === 0) {\n console.warn('FileLoader: HTTP Status 0 received.');\n }\n if (typeof ReadableStream === 'undefined' || response.body.getReader === undefined) {\n return response;\n }\n const callbacks = loading[url];\n const reader = response.body.getReader();\n const contentLength = response.headers.get('Content-Length');\n const total = contentLength ? parseInt(contentLength) : 0;\n const lengthComputable = total !== 0;\n let loaded = 0;\n const stream = new ReadableStream({\n start(controller) {\n readData();\n\n function readData() {\n reader.read().then(({done, value}) => {\n if (done) {\n controller.close();\n } else {\n loaded += value.byteLength;\n const event = new ProgressEvent('progress', {lengthComputable, loaded, total});\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onProgress) {\n callback.onProgress(event);\n }\n }\n controller.enqueue(value);\n readData();\n }\n });\n }\n }\n });\n return new Response(stream);\n } else {\n throw Error(`fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`);\n }\n }).then(response => {\n switch (responseType) {\n case 'arraybuffer':\n return response.arrayBuffer();\n case 'blob':\n return response.blob();\n case 'document':\n return response.text()\n .then(text => {\n const parser = new DOMParser();\n return parser.parseFromString(text, mimeType);\n });\n case 'json':\n return response.json();\n default:\n if (mimeType === undefined) {\n return response.text();\n } else {\n // sniff encoding\n const re = /charset=\"?([^;\"\\s]*)\"?/i;\n const exec = re.exec(mimeType);\n const label = exec && exec[1] ? exec[1].toLowerCase() : undefined;\n const decoder = new TextDecoder(label);\n return response.arrayBuffer().then(ab => decoder.decode(ab));\n }\n }\n }).then(data => {\n // Add to cache only on HTTP success, so that we do not cache\n // error response bodies as proper responses to requests.\n Cache.add(url, data);\n const callbacks = loading[url];\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onLoad) {\n callback.onLoad(data);\n }\n }\n }).catch(err => {\n // Abort errors and other errors are handled the same\n const callbacks = loading[url];\n if (callbacks === undefined) {\n // When onLoad was called and url was deleted in `loading`\n this.manager.itemError(url);\n throw err;\n\n }\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onError) {\n callback.onError(err);\n }\n }\n this.manager.itemError(url);\n }).finally(() => {\n this.manager.itemEnd(url);\n });\n this.manager.itemStart(url);\n }\n\n setResponseType(value) {\n this.responseType = value;\n return this;\n }\n\n setMimeType(value) {\n this.mimeType = value;\n return this;\n }\n}\n\n\nexport {FileLoader};\n", @@ -165729,7 +166288,7 @@ "lineNumber": 1 }, { - "__docId__": 8400, + "__docId__": 8419, "kind": "variable", "name": "loading", "memberof": "src/viewer/scene/utils/FileLoader.js", @@ -165750,7 +166309,7 @@ "ignore": true }, { - "__docId__": 8401, + "__docId__": 8420, "kind": "class", "name": "FileLoader", "memberof": "src/viewer/scene/utils/FileLoader.js", @@ -165769,7 +166328,7 @@ ] }, { - "__docId__": 8402, + "__docId__": 8421, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/FileLoader.js~FileLoader", @@ -165783,7 +166342,7 @@ "undocument": true }, { - "__docId__": 8403, + "__docId__": 8422, "kind": "method", "name": "load", "memberof": "src/viewer/scene/utils/FileLoader.js~FileLoader", @@ -165828,7 +166387,7 @@ } }, { - "__docId__": 8404, + "__docId__": 8423, "kind": "method", "name": "setResponseType", "memberof": "src/viewer/scene/utils/FileLoader.js~FileLoader", @@ -165855,7 +166414,7 @@ } }, { - "__docId__": 8405, + "__docId__": 8424, "kind": "member", "name": "responseType", "memberof": "src/viewer/scene/utils/FileLoader.js~FileLoader", @@ -165872,7 +166431,7 @@ } }, { - "__docId__": 8406, + "__docId__": 8425, "kind": "method", "name": "setMimeType", "memberof": "src/viewer/scene/utils/FileLoader.js~FileLoader", @@ -165899,7 +166458,7 @@ } }, { - "__docId__": 8407, + "__docId__": 8426, "kind": "member", "name": "mimeType", "memberof": "src/viewer/scene/utils/FileLoader.js~FileLoader", @@ -165916,7 +166475,7 @@ } }, { - "__docId__": 8408, + "__docId__": 8427, "kind": "file", "name": "src/viewer/scene/utils/Loader.js", "content": "import {DefaultLoadingManager} from './LoadingManager.js';\n\nclass Loader {\n\n constructor(manager) {\n\n this.manager = (manager !== undefined) ? manager : DefaultLoadingManager;\n\n this.crossOrigin = 'anonymous';\n this.withCredentials = false;\n this.path = '';\n this.resourcePath = '';\n this.requestHeader = {};\n }\n\n load( /* url, onLoad, onProgress, onError */) {\n }\n\n loadAsync(url, onProgress) {\n const scope = this;\n return new Promise(function (resolve, reject) {\n scope.load(url, resolve, onProgress, reject);\n });\n }\n\n parse( /* data */) {\n }\n\n setCrossOrigin(crossOrigin) {\n this.crossOrigin = crossOrigin;\n return this;\n }\n\n setWithCredentials(value) {\n this.withCredentials = value;\n return this;\n }\n\n setPath(path) {\n this.path = path;\n return this;\n }\n\n setResourcePath(resourcePath) {\n this.resourcePath = resourcePath;\n return this;\n }\n\n setRequestHeader(requestHeader) {\n this.requestHeader = requestHeader;\n return this;\n }\n}\n\nexport {Loader};\n", @@ -165927,7 +166486,7 @@ "lineNumber": 1 }, { - "__docId__": 8409, + "__docId__": 8428, "kind": "class", "name": "Loader", "memberof": "src/viewer/scene/utils/Loader.js", @@ -165943,7 +166502,7 @@ "interface": false }, { - "__docId__": 8410, + "__docId__": 8429, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -165957,7 +166516,7 @@ "undocument": true }, { - "__docId__": 8411, + "__docId__": 8430, "kind": "member", "name": "manager", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -165974,7 +166533,7 @@ } }, { - "__docId__": 8412, + "__docId__": 8431, "kind": "member", "name": "crossOrigin", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -165991,7 +166550,7 @@ } }, { - "__docId__": 8413, + "__docId__": 8432, "kind": "member", "name": "withCredentials", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166008,7 +166567,7 @@ } }, { - "__docId__": 8414, + "__docId__": 8433, "kind": "member", "name": "path", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166025,7 +166584,7 @@ } }, { - "__docId__": 8415, + "__docId__": 8434, "kind": "member", "name": "resourcePath", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166042,7 +166601,7 @@ } }, { - "__docId__": 8416, + "__docId__": 8435, "kind": "member", "name": "requestHeader", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166059,7 +166618,7 @@ } }, { - "__docId__": 8417, + "__docId__": 8436, "kind": "method", "name": "load", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166075,7 +166634,7 @@ "return": null }, { - "__docId__": 8418, + "__docId__": 8437, "kind": "method", "name": "loadAsync", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166108,7 +166667,7 @@ } }, { - "__docId__": 8419, + "__docId__": 8438, "kind": "method", "name": "parse", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166124,7 +166683,7 @@ "return": null }, { - "__docId__": 8420, + "__docId__": 8439, "kind": "method", "name": "setCrossOrigin", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166151,7 +166710,7 @@ } }, { - "__docId__": 8422, + "__docId__": 8441, "kind": "method", "name": "setWithCredentials", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166178,7 +166737,7 @@ } }, { - "__docId__": 8424, + "__docId__": 8443, "kind": "method", "name": "setPath", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166205,7 +166764,7 @@ } }, { - "__docId__": 8426, + "__docId__": 8445, "kind": "method", "name": "setResourcePath", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166232,7 +166791,7 @@ } }, { - "__docId__": 8428, + "__docId__": 8447, "kind": "method", "name": "setRequestHeader", "memberof": "src/viewer/scene/utils/Loader.js~Loader", @@ -166259,7 +166818,7 @@ } }, { - "__docId__": 8430, + "__docId__": 8449, "kind": "file", "name": "src/viewer/scene/utils/LoadingManager.js", "content": "class LoadingManager {\n\n constructor(onLoad, onProgress, onError) {\n\n this.isLoading = false;\n this.itemsLoaded = 0;\n this.itemsTotal = 0;\n this.urlModifier = undefined;\n this.handlers = [];\n\n this.onStart = undefined;\n this.onLoad = onLoad;\n this.onProgress = onProgress;\n this.onError = onError;\n }\n\n itemStart(url) {\n this.itemsTotal++;\n if (this.isLoading === false) {\n if (this.onStart !== undefined) {\n this.onStart(url, this.itemsLoaded, this.itemsTotal);\n }\n }\n this.isLoading = true;\n }\n\n itemEnd(url) {\n this.itemsLoaded++;\n if (this.onProgress !== undefined) {\n this.onProgress(url, this.itemsLoaded, this.itemsTotal);\n }\n if (this.itemsLoaded === this.itemsTotal) {\n this.isLoading = false;\n if (this.onLoad !== undefined) {\n this.onLoad();\n }\n }\n }\n\n itemError(url) {\n if (this.onError !== undefined) {\n this.onError(url);\n }\n }\n\n resolveURL(url) {\n if (this.urlModifier) {\n return this.urlModifier(url);\n }\n return url;\n }\n\n setURLModifier(transform) {\n this.urlModifier = transform;\n return this;\n }\n\n addHandler(regex, loader) {\n this.handlers.push(regex, loader);\n return this;\n }\n\n removeHandler(regex) {\n const index = this.handlers.indexOf(regex);\n if (index !== -1) {\n this.handlers.splice(index, 2);\n }\n return this;\n }\n\n getHandler(file) {\n for (let i = 0, l = this.handlers.length; i < l; i += 2) {\n const regex = this.handlers[i];\n const loader = this.handlers[i + 1];\n if (regex.global) regex.lastIndex = 0; // see #17920\n if (regex.test(file)) {\n return loader;\n }\n }\n return null;\n }\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nexport {DefaultLoadingManager, LoadingManager};\n", @@ -166270,7 +166829,7 @@ "lineNumber": 1 }, { - "__docId__": 8431, + "__docId__": 8450, "kind": "variable", "name": "DefaultLoadingManager", "memberof": "src/viewer/scene/utils/LoadingManager.js", @@ -166290,7 +166849,7 @@ } }, { - "__docId__": 8432, + "__docId__": 8451, "kind": "class", "name": "LoadingManager", "memberof": "src/viewer/scene/utils/LoadingManager.js", @@ -166307,7 +166866,7 @@ "interface": false }, { - "__docId__": 8433, + "__docId__": 8452, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166321,7 +166880,7 @@ "undocument": true }, { - "__docId__": 8434, + "__docId__": 8453, "kind": "member", "name": "isLoading", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166338,7 +166897,7 @@ } }, { - "__docId__": 8435, + "__docId__": 8454, "kind": "member", "name": "itemsLoaded", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166355,7 +166914,7 @@ } }, { - "__docId__": 8436, + "__docId__": 8455, "kind": "member", "name": "itemsTotal", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166372,7 +166931,7 @@ } }, { - "__docId__": 8437, + "__docId__": 8456, "kind": "member", "name": "urlModifier", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166389,7 +166948,7 @@ } }, { - "__docId__": 8438, + "__docId__": 8457, "kind": "member", "name": "handlers", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166406,7 +166965,7 @@ } }, { - "__docId__": 8439, + "__docId__": 8458, "kind": "member", "name": "onStart", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166423,7 +166982,7 @@ } }, { - "__docId__": 8440, + "__docId__": 8459, "kind": "member", "name": "onLoad", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166440,7 +166999,7 @@ } }, { - "__docId__": 8441, + "__docId__": 8460, "kind": "member", "name": "onProgress", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166457,7 +167016,7 @@ } }, { - "__docId__": 8442, + "__docId__": 8461, "kind": "member", "name": "onError", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166474,7 +167033,7 @@ } }, { - "__docId__": 8443, + "__docId__": 8462, "kind": "method", "name": "itemStart", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166497,7 +167056,7 @@ "return": null }, { - "__docId__": 8445, + "__docId__": 8464, "kind": "method", "name": "itemEnd", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166520,7 +167079,7 @@ "return": null }, { - "__docId__": 8447, + "__docId__": 8466, "kind": "method", "name": "itemError", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166543,7 +167102,7 @@ "return": null }, { - "__docId__": 8448, + "__docId__": 8467, "kind": "method", "name": "resolveURL", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166570,7 +167129,7 @@ } }, { - "__docId__": 8449, + "__docId__": 8468, "kind": "method", "name": "setURLModifier", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166597,7 +167156,7 @@ } }, { - "__docId__": 8451, + "__docId__": 8470, "kind": "method", "name": "addHandler", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166630,7 +167189,7 @@ } }, { - "__docId__": 8452, + "__docId__": 8471, "kind": "method", "name": "removeHandler", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166657,7 +167216,7 @@ } }, { - "__docId__": 8453, + "__docId__": 8472, "kind": "method", "name": "getHandler", "memberof": "src/viewer/scene/utils/LoadingManager.js~LoadingManager", @@ -166684,7 +167243,7 @@ } }, { - "__docId__": 8454, + "__docId__": 8473, "kind": "file", "name": "src/viewer/scene/utils/Map.js", "content": "/** @private */\nclass Map {\n\n constructor(items, baseId) {\n this.items = items || [];\n this._lastUniqueId = (baseId || 0) + 1;\n }\n\n /**\n * Usage:\n *\n * id = myMap.addItem(\"foo\") // ID internally generated\n * id = myMap.addItem(\"foo\", \"bar\") // ID is \"foo\"\n */\n addItem() {\n let item;\n if (arguments.length === 2) {\n const id = arguments[0];\n item = arguments[1];\n if (this.items[id]) { // Won't happen if given ID is string\n throw \"ID clash: '\" + id + \"'\";\n }\n this.items[id] = item;\n return id;\n\n } else {\n item = arguments[0] || {};\n while (true) {\n const findId = this._lastUniqueId++;\n if (!this.items[findId]) {\n this.items[findId] = item;\n return findId;\n }\n }\n }\n }\n\n removeItem(id) {\n const item = this.items[id];\n delete this.items[id];\n return item;\n }\n}\n\nexport {Map};\n", @@ -166695,7 +167254,7 @@ "lineNumber": 1 }, { - "__docId__": 8455, + "__docId__": 8474, "kind": "class", "name": "Map", "memberof": "src/viewer/scene/utils/Map.js", @@ -166711,7 +167270,7 @@ "ignore": true }, { - "__docId__": 8456, + "__docId__": 8475, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -166725,7 +167284,7 @@ "undocument": true }, { - "__docId__": 8457, + "__docId__": 8476, "kind": "member", "name": "items", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -166742,7 +167301,7 @@ } }, { - "__docId__": 8458, + "__docId__": 8477, "kind": "member", "name": "_lastUniqueId", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -166760,7 +167319,7 @@ } }, { - "__docId__": 8459, + "__docId__": 8478, "kind": "method", "name": "addItem", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -166779,7 +167338,7 @@ } }, { - "__docId__": 8460, + "__docId__": 8479, "kind": "method", "name": "removeItem", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -166806,7 +167365,7 @@ } }, { - "__docId__": 8461, + "__docId__": 8480, "kind": "file", "name": "src/viewer/scene/utils/Queue.js", "content": "// Fast queue that avoids using potentially inefficient array .shift() calls\n// Based on https://github.com/creationix/fastqueue\n\n/** @private */\nclass Queue {\n\n constructor() {\n\n this._head = [];\n this._headLength = 0;\n this._tail = [];\n this._index = 0;\n this._length = 0;\n }\n\n get length() {\n return this._length;\n }\n\n shift() {\n if (this._index >= this._headLength) {\n const t = this._head;\n t.length = 0;\n this._head = this._tail;\n this._tail = t;\n this._index = 0;\n this._headLength = this._head.length;\n if (!this._headLength) {\n return;\n }\n }\n const value = this._head[this._index];\n if (this._index < 0) {\n delete this._head[this._index++];\n }\n else {\n this._head[this._index++] = undefined;\n }\n this._length--;\n return value;\n }\n\n push(item) {\n this._length++;\n this._tail.push(item);\n return this;\n };\n\n unshift(item) {\n this._head[--this._index] = item;\n this._length++;\n return this;\n }\n}\n\nexport {Queue};", @@ -166817,7 +167376,7 @@ "lineNumber": 1 }, { - "__docId__": 8462, + "__docId__": 8481, "kind": "class", "name": "Queue", "memberof": "src/viewer/scene/utils/Queue.js", @@ -166833,7 +167392,7 @@ "ignore": true }, { - "__docId__": 8463, + "__docId__": 8482, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -166847,7 +167406,7 @@ "undocument": true }, { - "__docId__": 8464, + "__docId__": 8483, "kind": "member", "name": "_head", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -166865,7 +167424,7 @@ } }, { - "__docId__": 8465, + "__docId__": 8484, "kind": "member", "name": "_headLength", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -166883,7 +167442,7 @@ } }, { - "__docId__": 8466, + "__docId__": 8485, "kind": "member", "name": "_tail", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -166901,7 +167460,7 @@ } }, { - "__docId__": 8467, + "__docId__": 8486, "kind": "member", "name": "_index", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -166919,7 +167478,7 @@ } }, { - "__docId__": 8468, + "__docId__": 8487, "kind": "member", "name": "_length", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -166937,7 +167496,7 @@ } }, { - "__docId__": 8469, + "__docId__": 8488, "kind": "get", "name": "length", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -166956,7 +167515,7 @@ } }, { - "__docId__": 8470, + "__docId__": 8489, "kind": "method", "name": "shift", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -166976,7 +167535,7 @@ } }, { - "__docId__": 8475, + "__docId__": 8494, "kind": "method", "name": "push", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -167003,7 +167562,7 @@ } }, { - "__docId__": 8476, + "__docId__": 8495, "kind": "method", "name": "unshift", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -167030,7 +167589,7 @@ } }, { - "__docId__": 8477, + "__docId__": 8496, "kind": "file", "name": "src/viewer/scene/utils/WorkerPool.js", "content": "/**\n * @author Deepkolos / https://github.com/deepkolos\n */\n\nexport class WorkerPool {\n\n constructor(pool = 4) {\n this.pool = pool;\n this.queue = [];\n this.workers = [];\n this.workersResolve = [];\n this.workerStatus = 0;\n }\n\n _initWorker(workerId) {\n if (!this.workers[workerId]) {\n const worker = this.workerCreator();\n worker.addEventListener('message', this._onMessage.bind(this, workerId));\n this.workers[workerId] = worker;\n }\n }\n\n _getIdleWorker() {\n for (let i = 0; i < this.pool; i++)\n if (!(this.workerStatus & (1 << i))) return i;\n return -1;\n }\n\n _onMessage(workerId, msg) {\n const resolve = this.workersResolve[workerId];\n resolve && resolve(msg);\n if (this.queue.length) {\n const {resolve, msg, transfer} = this.queue.shift();\n this.workersResolve[workerId] = resolve;\n this.workers[workerId].postMessage(msg, transfer);\n } else {\n this.workerStatus ^= 1 << workerId;\n }\n }\n\n setWorkerCreator(workerCreator) {\n this.workerCreator = workerCreator;\n }\n\n setWorkerLimit(pool) {\n this.pool = pool;\n }\n\n postMessage(msg, transfer) {\n return new Promise((resolve) => {\n const workerId = this._getIdleWorker();\n if (workerId !== -1) {\n this._initWorker(workerId);\n this.workerStatus |= 1 << workerId;\n this.workersResolve[workerId] = resolve;\n this.workers[workerId].postMessage(msg, transfer);\n } else {\n this.queue.push({resolve, msg, transfer});\n }\n });\n }\n\n destroy() {\n\n this.workers.forEach((worker) => worker.terminate());\n this.workersResolve.length = 0;\n this.workers.length = 0;\n this.queue.length = 0;\n this.workerStatus = 0;\n\n }\n\n}\n", @@ -167041,7 +167600,7 @@ "lineNumber": 1 }, { - "__docId__": 8478, + "__docId__": 8497, "kind": "class", "name": "WorkerPool", "memberof": "src/viewer/scene/utils/WorkerPool.js", @@ -167062,7 +167621,7 @@ "interface": false }, { - "__docId__": 8479, + "__docId__": 8498, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167076,7 +167635,7 @@ "undocument": true }, { - "__docId__": 8480, + "__docId__": 8499, "kind": "member", "name": "pool", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167093,7 +167652,7 @@ } }, { - "__docId__": 8481, + "__docId__": 8500, "kind": "member", "name": "queue", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167110,7 +167669,7 @@ } }, { - "__docId__": 8482, + "__docId__": 8501, "kind": "member", "name": "workers", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167127,7 +167686,7 @@ } }, { - "__docId__": 8483, + "__docId__": 8502, "kind": "member", "name": "workersResolve", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167144,7 +167703,7 @@ } }, { - "__docId__": 8484, + "__docId__": 8503, "kind": "member", "name": "workerStatus", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167161,7 +167720,7 @@ } }, { - "__docId__": 8485, + "__docId__": 8504, "kind": "method", "name": "_initWorker", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167185,7 +167744,7 @@ "return": null }, { - "__docId__": 8486, + "__docId__": 8505, "kind": "method", "name": "_getIdleWorker", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167206,7 +167765,7 @@ } }, { - "__docId__": 8487, + "__docId__": 8506, "kind": "method", "name": "_onMessage", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167236,7 +167795,7 @@ "return": null }, { - "__docId__": 8489, + "__docId__": 8508, "kind": "method", "name": "setWorkerCreator", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167259,7 +167818,7 @@ "return": null }, { - "__docId__": 8490, + "__docId__": 8509, "kind": "member", "name": "workerCreator", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167276,7 +167835,7 @@ } }, { - "__docId__": 8491, + "__docId__": 8510, "kind": "method", "name": "setWorkerLimit", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167299,7 +167858,7 @@ "return": null }, { - "__docId__": 8493, + "__docId__": 8512, "kind": "method", "name": "postMessage", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167332,7 +167891,7 @@ } }, { - "__docId__": 8495, + "__docId__": 8514, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/utils/WorkerPool.js~WorkerPool", @@ -167348,7 +167907,7 @@ "return": null }, { - "__docId__": 8497, + "__docId__": 8516, "kind": "file", "name": "src/viewer/scene/utils/index.js", "content": "export * from \"./Map.js\";\nexport * from \"./Queue.js\";\nexport * from \"./Loader.js\";\nexport * from \"./LoadingManager.js\";\nexport * from \"./WorkerPool.js\";\nexport * from \"./textureTranscoders/index.js\";", @@ -167359,7 +167918,7 @@ "lineNumber": 1 }, { - "__docId__": 8498, + "__docId__": 8517, "kind": "file", "name": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", "content": "import {FileLoader} from \"../../FileLoader.js\";\nimport {WorkerPool} from \"../../WorkerPool.js\";\nimport {\n LinearEncoding,\n LinearFilter,\n LinearMipmapLinearFilter,\n RGB_ETC1_Format,\n RGB_ETC2_Format,\n RGB_PVRTC_4BPPV1_Format,\n RGB_S3TC_DXT1_Format,\n RGBA_ASTC_4x4_Format,\n RGBA_BPTC_Format,\n RGBA_ETC2_EAC_Format,\n RGBA_PVRTC_4BPPV1_Format,\n RGBA_S3TC_DXT5_Format,\n RGBAFormat,\n sRGBEncoding\n} from \"../../../constants/constants.js\";\n\nconst KTX2TransferSRGB = 2;\nconst KTX2_ALPHA_PREMULTIPLIED = 1;\n\nlet activeTranscoders = 0;\n\n/**\n * Transcodes texture data from KTX2.\n *\n * ## Overview\n *\n * * Uses the [Basis Universal GPU Texture Codec](https://github.com/BinomialLLC/basis_universal) to\n * transcode [KTX2](https://github.khronos.org/KTX-Specification/) textures.\n * * {@link XKTLoaderPlugin} uses a KTX2TextureTranscoder to load textures in XKT files.\n * * {@link VBOSceneModel} uses a KTX2TextureTranscoder to enable us to add KTX2-encoded textures.\n * * Loads the Basis Codec from [CDN](https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/) by default, but can\n * also be configured to load the Codec from local files.\n * * We also bundle the Basis Codec with the xeokit-sdk npm package, and in the [repository](https://github.com/xeokit/xeokit-sdk/tree/master/dist/basis).\n *\n * ## What is KTX2?\n *\n * A [KTX2](https://github.khronos.org/KTX-Specification/) file stores GPU texture data in the Khronos Texture 2.0 (KTX2) container format. It contains image data for\n * a texture asset compressed with Basis Universal (BasisU) supercompression that can be transcoded to different formats\n * depending on the support provided by the target devices. KTX2 provides a lightweight format for distributing texture\n * assets to GPUs. Due to BasisU compression, KTX2 files can store any image format supported by GPUs.\n *\n * ## Loading XKT files containing KTX2 textures\n *\n * {@link XKTLoaderPlugin} uses a KTX2TextureTranscoder to load textures in XKT files. An XKTLoaderPlugin has its own\n * default KTX2TextureTranscoder, configured to load the Basis Codec from the [CDN](https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/). If we wish, we can override that with our own\n * KTX2TextureTranscoder, configured to load the Codec locally.\n *\n * In the example below, we'll create a {@link Viewer} and add an {@link XKTLoaderPlugin}\n * configured with a KTX2TextureTranscoder. Then we'll use the XKTLoaderPlugin to load an\n * XKT file that contains KTX2 textures, which the plugin will transcode using\n * its KTX2TextureTranscoder.\n *\n * We'll configure our KTX2TextureTranscoder to load the Basis Codec from a local directory. If we were happy with loading the\n * Codec from our [CDN](https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/) (ie. our app will always have an Internet connection) then we could just leave out the\n * KTX2TextureTranscoder altogether, and let the XKTLoaderPlugin use its internal default KTX2TextureTranscoder, which is configured to\n * load the Codec from the CDN. We'll stick with loading our own Codec, in case we want to run our app without an Internet connection.\n *\n * \n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/buildings/#xkt_vbo_textures_HousePlan)]\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to Basis Universal transcoder\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer, {\n * textureTranscoder // <<------------- Transcodes KTX2 textures in XKT files\n * });\n *\n * const sceneModel = xktLoader.load({\n * id: \"myModel\",\n * src: \"./HousePlan.xkt\" // <<------ XKT file with KTX2 textures\n * });\n * ````\n *\n * ## Loading KTX2 files into a VBOSceneModel\n *\n * A {@link SceneModel} that is configured with a KTX2TextureTranscoder will\n * allow us to load textures into it from KTX2-transcoded buffers or files.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link VBOSceneModel} configured with a\n * KTX2TextureTranscoder.\n *\n * We'll then programmatically create a simple object within the VBOSceneModel, consisting of\n * a single box mesh with a texture loaded from a KTX2 file, which our VBOSceneModel internally transcodes, using\n * its KTX2TextureTranscoder.\n *\n * As in the previous example, we'll configure our KTX2TextureTranscoder to load the Basis Codec from a local directory.\n *\n * * [Run a similar example](https://xeokit.github.io/xeokit-sdk/examples/scenemodel/#vbo_batching_autocompressed_triangles_textures_ktx2)\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const vboSceneModel = new VBOSceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * vboSceneModel.createTexture({\n * id: \"myColorTexture\",\n * src: \"../assets/textures/compressed/sample_uastc_zstd.ktx2\" // <<----- KTX2 texture asset\n * });\n *\n * vboSceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * vboSceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * vboSceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * vboSceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * vboSceneModel.finalize();\n * ````\n *\n * ## Loading KTX2 ArrayBuffers into a VBOSceneModel\n *\n * A {@link SceneModel} that is configured with a KTX2TextureTranscoder will also allow us to load textures into\n * it from KTX2 ArrayBuffers.\n *\n * In the example below, we'll create a {@link Viewer}, containing a {@link VBOSceneModel} configured with a\n * KTX2TextureTranscoder.\n *\n * We'll then programmatically create a simple object within the VBOSceneModel, consisting of\n * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our VBOSceneModel internally transcodes, using\n * its KTX2TextureTranscoder.\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const textureTranscoder = new KTX2TextureTranscoder({\n * viewer,\n * transcoderPath: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\" // <------ Path to BasisU transcoder module\n * });\n *\n * const vboSceneModel = new VBOSceneModel(viewer.scene, {\n * id: \"myModel\",\n * textureTranscoder // <<-------------------- Configure model with our transcoder\n * });\n *\n * utils.loadArraybuffer(\"../assets/textures/compressed/sample_uastc_zstd.ktx2\",(arrayBuffer) => {\n *\n * vboSceneModel.createTexture({\n * id: \"myColorTexture\",\n * buffers: [arrayBuffer] // <<----- KTX2 texture asset\n * });\n *\n * vboSceneModel.createTexture({\n * id: \"myMetallicRoughnessTexture\",\n * src: \"../assets/textures/alpha/crosshatchAlphaMap.jpg\" // <<----- JPEG texture asset\n * });\n *\n * vboSceneModel.createTextureSet({\n * id: \"myTextureSet\",\n * colorTextureId: \"myColorTexture\",\n * metallicRoughnessTextureId: \"myMetallicRoughnessTexture\"\n * });\n *\n * vboSceneModel.createMesh({\n * id: \"myMesh\",\n * textureSetId: \"myTextureSet\",\n * primitive: \"triangles\",\n * positions: [1, 1, 1, ...],\n * normals: [0, 0, 1, 0, ...],\n * uv: [1, 0, 0, ...],\n * indices: [0, 1, 2, ...],\n * });\n *\n * vboSceneModel.createEntity({\n * id: \"myEntity\",\n * meshIds: [\"myMesh\"]\n * });\n *\n * vboSceneModel.finalize();\n * });\n * ````\n *\n * @implements {TextureTranscoder}\n */\nclass KTX2TextureTranscoder {\n\n /**\n * Creates a new KTX2TextureTranscoder.\n *\n * @param {Viewer} viewer The Viewer that our KTX2TextureTranscoder will be used with. This KTX2TextureTranscoder\n * must only be used to transcode textures for this Viewer. This is because the Viewer's capabilities will decide\n * what target GPU formats this KTX2TextureTranscoder will transcode to.\n * @param {String} [transcoderPath=\"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\"] Path to the Basis\n * transcoder module that internally does the heavy lifting for our KTX2TextureTranscoder. If we omit this configuration,\n * then our KTX2TextureTranscoder will load it from ````https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/```` by\n * default. Therefore, make sure your application is connected to the internet if you wish to use the default transcoder path.\n * @param {Number} [workerLimit] The maximum number of Workers to use for transcoding.\n */\n constructor({viewer, transcoderPath, workerLimit}) {\n\n this._transcoderPath = transcoderPath || \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\";\n this._transcoderBinary = null;\n this._transcoderPending = null;\n this._workerPool = new WorkerPool();\n this._workerSourceURL = '';\n\n if (workerLimit) {\n this._workerPool.setWorkerLimit(workerLimit);\n }\n\n const viewerCapabilities = viewer.capabilities;\n\n this._workerConfig = {\n astcSupported: viewerCapabilities.astcSupported,\n etc1Supported: viewerCapabilities.etc1Supported,\n etc2Supported: viewerCapabilities.etc2Supported,\n dxtSupported: viewerCapabilities.dxtSupported,\n bptcSupported: viewerCapabilities.bptcSupported,\n pvrtcSupported: viewerCapabilities.pvrtcSupported\n };\n\n this._supportedFileTypes = [\"xkt2\"];\n }\n\n _init() {\n if (!this._transcoderPending) {\n const jsLoader = new FileLoader();\n jsLoader.setPath(this._transcoderPath);\n jsLoader.setWithCredentials(this.withCredentials);\n const jsContent = jsLoader.loadAsync('basis_transcoder.js');\n const binaryLoader = new FileLoader();\n binaryLoader.setPath(this._transcoderPath);\n binaryLoader.setResponseType('arraybuffer');\n binaryLoader.setWithCredentials(this.withCredentials);\n const binaryContent = binaryLoader.loadAsync('basis_transcoder.wasm');\n this._transcoderPending = Promise.all([jsContent, binaryContent])\n .then(([jsContent, binaryContent]) => {\n const fn = KTX2TextureTranscoder.BasisWorker.toString();\n const body = [\n '/* constants */',\n 'let _EngineFormat = ' + JSON.stringify(KTX2TextureTranscoder.EngineFormat),\n 'let _TranscoderFormat = ' + JSON.stringify(KTX2TextureTranscoder.TranscoderFormat),\n 'let _BasisFormat = ' + JSON.stringify(KTX2TextureTranscoder.BasisFormat),\n '/* basis_transcoder.js */',\n jsContent,\n '/* worker */',\n fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}'))\n ].join('\\n');\n this._workerSourceURL = URL.createObjectURL(new Blob([body]));\n this._transcoderBinary = binaryContent;\n this._workerPool.setWorkerCreator(() => {\n const worker = new Worker(this._workerSourceURL);\n const transcoderBinary = this._transcoderBinary.slice(0);\n worker.postMessage({\n type: 'init',\n config: this._workerConfig,\n transcoderBinary\n }, [transcoderBinary]);\n return worker;\n });\n });\n if (activeTranscoders > 0) {\n console.warn('KTX2TextureTranscoder: Multiple active KTX2TextureTranscoder may cause performance issues.' + ' Use a single KTX2TextureTranscoder instance, or call .dispose() on old instances.');\n }\n activeTranscoders++;\n }\n return this._transcoderPending;\n }\n\n /**\n * Transcodes texture data from transcoded buffers into a {@link Texture2D}.\n *\n * @param {ArrayBuffer[]} buffers Transcoded texture data. Given as an array of buffers so that we can support multi-image textures, such as cube maps.\n * @param {*} config Transcoding options.\n * @param {Texture2D} texture The texture to load.\n * @returns {Promise} Resolves when the texture has loaded.\n */\n transcode(buffers, texture, config = {}) {\n return new Promise((resolve, reject) => {\n const taskConfig = config;\n this._init().then(() => {\n return this._workerPool.postMessage({\n type: 'transcode',\n buffers,\n taskConfig: taskConfig\n }, buffers);\n }).then((e) => {\n const transcodeResult = e.data;\n const {mipmaps, width, height, format, type, error, dfdTransferFn, dfdFlags} = transcodeResult;\n if (type === 'error') {\n return reject(error);\n }\n texture.setCompressedData({\n mipmaps,\n props: {\n format: format,\n minFilter: mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter,\n magFilter: mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter,\n encoding: dfdTransferFn === KTX2TransferSRGB ? sRGBEncoding : LinearEncoding,\n premultiplyAlpha: !!(dfdFlags & KTX2_ALPHA_PREMULTIPLIED)\n }\n });\n resolve()\n });\n });\n }\n\n /**\n * Destroys this KTX2TextureTranscoder\n */\n destroy() {\n URL.revokeObjectURL(this._workerSourceURL);\n this._workerPool.destroy();\n activeTranscoders--;\n }\n}\n\n/**\n * @private\n */\nKTX2TextureTranscoder.BasisFormat = {\n ETC1S: 0,\n UASTC_4x4: 1\n};\n\n/**\n * @private\n */\nKTX2TextureTranscoder.TranscoderFormat = {\n ETC1: 0,\n ETC2: 1,\n BC1: 2,\n BC3: 3,\n BC4: 4,\n BC5: 5,\n BC7_M6_OPAQUE_ONLY: 6,\n BC7_M5: 7,\n PVRTC1_4_RGB: 8,\n PVRTC1_4_RGBA: 9,\n ASTC_4x4: 10,\n ATC_RGB: 11,\n ATC_RGBA_INTERPOLATED_ALPHA: 12,\n RGBA32: 13,\n RGB565: 14,\n BGR565: 15,\n RGBA4444: 16\n};\n\n/**\n * @private\n */\nKTX2TextureTranscoder.EngineFormat = {\n RGBAFormat: RGBAFormat,\n RGBA_ASTC_4x4_Format: RGBA_ASTC_4x4_Format,\n RGBA_BPTC_Format: RGBA_BPTC_Format,\n RGBA_ETC2_EAC_Format: RGBA_ETC2_EAC_Format,\n RGBA_PVRTC_4BPPV1_Format: RGBA_PVRTC_4BPPV1_Format,\n RGBA_S3TC_DXT5_Format: RGBA_S3TC_DXT5_Format,\n RGB_ETC1_Format: RGB_ETC1_Format,\n RGB_ETC2_Format: RGB_ETC2_Format,\n RGB_PVRTC_4BPPV1_Format: RGB_PVRTC_4BPPV1_Format,\n RGB_S3TC_DXT1_Format: RGB_S3TC_DXT1_Format\n};\n\n/* WEB WORKER */\n\n/**\n * @private\n * @constructor\n */\nKTX2TextureTranscoder.BasisWorker = function () {\n\n let config;\n let transcoderPending;\n let BasisModule;\n\n const EngineFormat = _EngineFormat; // eslint-disable-line no-undef\n const TranscoderFormat = _TranscoderFormat; // eslint-disable-line no-undef\n const BasisFormat = _BasisFormat; // eslint-disable-line no-undef\n\n self.addEventListener('message', function (e) {\n const message = e.data;\n switch (message.type) {\n case 'init':\n config = message.config;\n init(message.transcoderBinary);\n break;\n case 'transcode':\n transcoderPending.then(() => {\n try {\n const {\n width,\n height,\n hasAlpha,\n mipmaps,\n format,\n dfdTransferFn,\n dfdFlags\n } = transcode(message.buffers[0]);\n const buffers = [];\n for (let i = 0; i < mipmaps.length; ++i) {\n buffers.push(mipmaps[i].data.buffer);\n }\n self.postMessage({\n type: 'transcode',\n id: message.id,\n width,\n height,\n hasAlpha,\n mipmaps,\n format,\n dfdTransferFn,\n dfdFlags\n }, buffers);\n } catch (error) {\n console.error(`[KTX2TextureTranscoder.BasisWorker]: ${error}`);\n self.postMessage({type: 'error', id: message.id, error: error.message});\n }\n });\n break;\n }\n });\n\n function init(wasmBinary) {\n transcoderPending = new Promise(resolve => {\n BasisModule = {\n wasmBinary,\n onRuntimeInitialized: resolve\n };\n BASIS(BasisModule); // eslint-disable-line no-undef\n }).then(() => {\n BasisModule.initializeBasis();\n if (BasisModule.KTX2File === undefined) {\n console.warn('KTX2TextureTranscoder: Please update Basis Universal transcoder.');\n }\n });\n }\n\n function transcode(buffer) {\n const ktx2File = new BasisModule.KTX2File(new Uint8Array(buffer));\n\n function cleanup() {\n ktx2File.close();\n ktx2File.delete();\n }\n\n if (!ktx2File.isValid()) {\n cleanup();\n throw new Error('KTX2TextureTranscoder: Invalid or unsupported .ktx2 file');\n }\n const basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S;\n const width = ktx2File.getWidth();\n const height = ktx2File.getHeight();\n const levels = ktx2File.getLevels();\n const hasAlpha = ktx2File.getHasAlpha();\n const dfdTransferFn = ktx2File.getDFDTransferFunc();\n const dfdFlags = ktx2File.getDFDFlags();\n const {transcoderFormat, engineFormat} = getTranscoderFormat(basisFormat, width, height, hasAlpha);\n if (!width || !height || !levels) {\n cleanup();\n throw new Error('KTX2TextureTranscoder: Invalid texture');\n }\n if (!ktx2File.startTranscoding()) {\n cleanup();\n throw new Error('KTX2TextureTranscoder: .startTranscoding failed');\n }\n const mipmaps = [];\n for (let mip = 0; mip < levels; mip++) {\n const levelInfo = ktx2File.getImageLevelInfo(mip, 0, 0);\n const mipWidth = levelInfo.origWidth;\n const mipHeight = levelInfo.origHeight;\n const dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, 0, 0, transcoderFormat));\n const status = ktx2File.transcodeImage(dst, mip, 0, 0, transcoderFormat, 0, -1, -1);\n if (!status) {\n cleanup();\n throw new Error('KTX2TextureTranscoder: .transcodeImage failed.');\n }\n mipmaps.push({data: dst, width: mipWidth, height: mipHeight});\n }\n cleanup();\n return {width, height, hasAlpha, mipmaps, format: engineFormat, dfdTransferFn, dfdFlags};\n }\n\n // Optimal choice of a transcoder target format depends on the Basis format (ETC1S or UASTC),\n // device capabilities, and texture dimensions. The list below ranks the formats separately\n // for ETC1S and UASTC.\n //\n // In some cases, transcoding UASTC to RGBA32 might be preferred for higher quality (at\n // significant memory cost) compared to ETC1/2, BC1/3, and PVRTC. The transcoder currently\n // chooses RGBA32 only as a last resort and does not expose that option to the caller.\n\n const FORMAT_OPTIONS = [{\n if: 'astcSupported',\n basisFormat: [BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4],\n engineFormat: [EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format],\n priorityETC1S: Infinity,\n priorityUASTC: 1,\n needsPowerOfTwo: false\n }, {\n if: 'bptcSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5],\n engineFormat: [EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format],\n priorityETC1S: 3,\n priorityUASTC: 2,\n needsPowerOfTwo: false\n }, {\n if: 'dxtSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.BC1, TranscoderFormat.BC3],\n engineFormat: [EngineFormat.RGB_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format],\n priorityETC1S: 4,\n priorityUASTC: 5,\n needsPowerOfTwo: false\n }, {\n if: 'etc2Supported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ETC1, TranscoderFormat.ETC2],\n engineFormat: [EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format],\n priorityETC1S: 1,\n priorityUASTC: 3,\n needsPowerOfTwo: false\n }, {\n if: 'etc1Supported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ETC1],\n engineFormat: [EngineFormat.RGB_ETC1_Format],\n priorityETC1S: 2,\n priorityUASTC: 4,\n needsPowerOfTwo: false\n }, {\n if: 'pvrtcSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA],\n engineFormat: [EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format],\n priorityETC1S: 5,\n priorityUASTC: 6,\n needsPowerOfTwo: true\n }];\n const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function (a, b) {\n return a.priorityETC1S - b.priorityETC1S;\n });\n const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function (a, b) {\n return a.priorityUASTC - b.priorityUASTC;\n });\n\n function getTranscoderFormat(basisFormat, width, height, hasAlpha) {\n let transcoderFormat;\n let engineFormat;\n const options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS;\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n if (!config[opt.if]) continue;\n if (!opt.basisFormat.includes(basisFormat)) continue;\n if (hasAlpha && opt.transcoderFormat.length < 2) continue;\n if (opt.needsPowerOfTwo && !(isPowerOfTwo(width) && isPowerOfTwo(height))) continue;\n transcoderFormat = opt.transcoderFormat[hasAlpha ? 1 : 0];\n engineFormat = opt.engineFormat[hasAlpha ? 1 : 0];\n return {\n transcoderFormat,\n engineFormat\n };\n }\n console.warn('KTX2TextureTranscoder: No suitable compressed texture format found. Decoding to RGBA32.');\n transcoderFormat = TranscoderFormat.RGBA32;\n engineFormat = EngineFormat.RGBAFormat;\n return {\n transcoderFormat,\n engineFormat\n };\n }\n\n function isPowerOfTwo(value) {\n if (value <= 2) return true;\n return (value & value - 1) === 0 && value !== 0;\n }\n};\n\nconst cachedTranscoders = {};\n\n/**\n * Returns a new {@link KTX2TextureTranscoder}.\n *\n * The ````transcoderPath```` config will be set to: \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/\"\n *\n * @private\n */\nfunction getKTX2TextureTranscoder(viewer) {\n const sceneId = viewer.scene.id;\n let transcoder = cachedTranscoders[sceneId];\n if (!transcoder) {\n transcoder = new KTX2TextureTranscoder({viewer});\n cachedTranscoders[sceneId] = transcoder;\n viewer.scene.on(\"destroyed\", () => {\n delete cachedTranscoders[sceneId];\n transcoder.destroy();\n });\n }\n return transcoder;\n}\n\nexport {getKTX2TextureTranscoder, KTX2TextureTranscoder};\n\n", @@ -167370,7 +167929,7 @@ "lineNumber": 1 }, { - "__docId__": 8499, + "__docId__": 8518, "kind": "variable", "name": "KTX2TransferSRGB", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", @@ -167391,7 +167950,7 @@ "ignore": true }, { - "__docId__": 8500, + "__docId__": 8519, "kind": "variable", "name": "KTX2_ALPHA_PREMULTIPLIED", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", @@ -167412,7 +167971,7 @@ "ignore": true }, { - "__docId__": 8501, + "__docId__": 8520, "kind": "variable", "name": "activeTranscoders", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", @@ -167433,7 +167992,7 @@ "ignore": true }, { - "__docId__": 8502, + "__docId__": 8521, "kind": "function", "name": "BasisWorker", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", @@ -167458,7 +168017,7 @@ "return": null }, { - "__docId__": 8503, + "__docId__": 8522, "kind": "variable", "name": "cachedTranscoders", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", @@ -167479,7 +168038,7 @@ "ignore": true }, { - "__docId__": 8504, + "__docId__": 8523, "kind": "function", "name": "getKTX2TextureTranscoder", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", @@ -167509,7 +168068,7 @@ } }, { - "__docId__": 8505, + "__docId__": 8524, "kind": "class", "name": "KTX2TextureTranscoder", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js", @@ -167527,7 +168086,7 @@ ] }, { - "__docId__": 8506, + "__docId__": 8525, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167574,7 +168133,7 @@ ] }, { - "__docId__": 8507, + "__docId__": 8526, "kind": "member", "name": "_transcoderPath", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167592,7 +168151,7 @@ } }, { - "__docId__": 8508, + "__docId__": 8527, "kind": "member", "name": "_transcoderBinary", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167610,7 +168169,7 @@ } }, { - "__docId__": 8509, + "__docId__": 8528, "kind": "member", "name": "_transcoderPending", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167628,7 +168187,7 @@ } }, { - "__docId__": 8510, + "__docId__": 8529, "kind": "member", "name": "_workerPool", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167646,7 +168205,7 @@ } }, { - "__docId__": 8511, + "__docId__": 8530, "kind": "member", "name": "_workerSourceURL", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167664,7 +168223,7 @@ } }, { - "__docId__": 8512, + "__docId__": 8531, "kind": "member", "name": "_workerConfig", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167682,7 +168241,7 @@ } }, { - "__docId__": 8513, + "__docId__": 8532, "kind": "member", "name": "_supportedFileTypes", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167700,7 +168259,7 @@ } }, { - "__docId__": 8514, + "__docId__": 8533, "kind": "method", "name": "_init", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167721,7 +168280,7 @@ } }, { - "__docId__": 8518, + "__docId__": 8537, "kind": "method", "name": "transcode", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167780,7 +168339,7 @@ } }, { - "__docId__": 8519, + "__docId__": 8538, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js~KTX2TextureTranscoder", @@ -167795,7 +168354,7 @@ "return": null }, { - "__docId__": 8520, + "__docId__": 8539, "kind": "file", "name": "src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js", "content": "export * from \"./KTX2TextureTranscoder.js\";", @@ -167806,7 +168365,7 @@ "lineNumber": 1 }, { - "__docId__": 8521, + "__docId__": 8540, "kind": "file", "name": "src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js", "content": "/**\n * Transcodes texture data.\n *\n * A {@link SceneModel} configured with an appropriate TextureTranscoder will allow us to add textures from\n * transcoded buffers or files. For a concrete example, see {@link VBOSceneModel}, which can be configured with\n * a {@link KTX2TextureTranscoder}, which allows us to add textures from KTX2 buffers and files.\n *\n * @interface\n */\nclass TextureTranscoder {\n\n /**\n * Transcodes texture data from transcoded buffers into a {@link Texture2D}.\n *\n * @param {ArrayBuffer[]} buffers Transcoded texture data. Given as an array of buffers so that we can support\n * multi-image textures, such as cube maps.\n * @param {*} config Transcoding options.\n * @param {Texture2D} texture The texture to load.\n * @returns {Promise} Resolves when the texture has loaded.\n */\n transcode(buffers, texture, config = {}) {\n }\n\n /**\n * Destroys this transcoder.\n */\n destroy() {\n }\n}\n\nexport {TextureTranscoder};", @@ -167817,7 +168376,7 @@ "lineNumber": 1 }, { - "__docId__": 8522, + "__docId__": 8541, "kind": "class", "name": "TextureTranscoder", "memberof": "src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js", @@ -167832,7 +168391,7 @@ "interface": true }, { - "__docId__": 8523, + "__docId__": 8542, "kind": "method", "name": "transcode", "memberof": "src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js~TextureTranscoder", @@ -167891,7 +168450,7 @@ } }, { - "__docId__": 8524, + "__docId__": 8543, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js~TextureTranscoder", @@ -167906,7 +168465,7 @@ "return": null }, { - "__docId__": 8525, + "__docId__": 8544, "kind": "file", "name": "src/viewer/scene/utils/textureTranscoders/index.js", "content": "export * from \"./TextureTranscoder.js\";\nexport * from \"./KTX2TextureTranscoder/index.js\";\n", @@ -167917,7 +168476,7 @@ "lineNumber": 1 }, { - "__docId__": 8526, + "__docId__": 8545, "kind": "file", "name": "src/viewer/scene/utils.js", "content": "/**\n * @private\n */\nimport {core} from \"./core.js\";\n\nfunction xmlToJson(node, attributeRenamer) {\n if (node.nodeType === node.TEXT_NODE) {\n var v = node.nodeValue;\n if (v.match(/^\\s+$/) === null) {\n return v;\n }\n } else if (node.nodeType === node.ELEMENT_NODE ||\n node.nodeType === node.DOCUMENT_NODE) {\n var json = {type: node.nodeName, children: []};\n\n if (node.nodeType === node.ELEMENT_NODE) {\n for (var j = 0; j < node.attributes.length; j++) {\n var attribute = node.attributes[j];\n var nm = attributeRenamer[attribute.nodeName] || attribute.nodeName;\n json[nm] = attribute.nodeValue;\n }\n }\n\n for (var i = 0; i < node.childNodes.length; i++) {\n var item = node.childNodes[i];\n var j = xmlToJson(item, attributeRenamer);\n if (j) json.children.push(j);\n }\n\n return json;\n }\n}\n\n/**\n * @private\n */\nfunction clone(ob) {\n return JSON.parse(JSON.stringify(ob));\n}\n\n/**\n * @private\n */\nvar guidChars = [[\"0\", 10], [\"A\", 26], [\"a\", 26], [\"_\", 1], [\"$\", 1]].map(function (a) {\n var li = [];\n var st = a[0].charCodeAt(0);\n var en = st + a[1];\n for (var i = st; i < en; ++i) {\n li.push(i);\n }\n return String.fromCharCode.apply(null, li);\n}).join(\"\");\n\n/**\n * @private\n */\nfunction b64(v, len) {\n var r = (!len || len === 4) ? [0, 6, 12, 18] : [0, 6];\n return r.map(function (i) {\n return guidChars.substr(parseInt(v / (1 << i)) % 64, 1)\n }).reverse().join(\"\");\n}\n\n/**\n * @private\n */\nfunction compressGuid(g) {\n var bs = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30].map(function (i) {\n return parseInt(g.substr(i, 2), 16);\n });\n return b64(bs[0], 2) + [1, 4, 7, 10, 13].map(function (i) {\n return b64((bs[i] << 16) + (bs[i + 1] << 8) + bs[i + 2]);\n }).join(\"\");\n}\n\n/**\n * @private\n */\nfunction findNodeOfType(m, t) {\n var li = [];\n var _ = function (n) {\n if (n.type === t) li.push(n);\n (n.children || []).forEach(function (c) {\n _(c);\n });\n };\n _(m);\n return li;\n}\n\n/**\n * @private\n */\nfunction timeout(dt) {\n return new Promise(function (resolve, reject) {\n setTimeout(resolve, dt);\n });\n}\n\n/**\n * @private\n */\nfunction httpRequest(args) {\n return new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open(args.method || \"GET\", args.url, true);\n xhr.onload = function (e) {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n resolve(xhr.responseXML);\n } else {\n reject(xhr.statusText);\n }\n }\n };\n xhr.send(null);\n });\n}\n\n/**\n * @private\n */\nconst queryString = function () {\n // This function is anonymous, is executed immediately and\n // the return value is assigned to QueryString!\n var query_string = {};\n var query = window.location.search.substring(1);\n var vars = query.split(\"&\");\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split(\"=\");\n // If first entry with this name\n if (typeof query_string[pair[0]] === \"undefined\") {\n query_string[pair[0]] = decodeURIComponent(pair[1]);\n // If second entry with this name\n } else if (typeof query_string[pair[0]] === \"string\") {\n var arr = [query_string[pair[0]], decodeURIComponent(pair[1])];\n query_string[pair[0]] = arr;\n // If third or later entry with this name\n } else {\n query_string[pair[0]].push(decodeURIComponent(pair[1]));\n }\n }\n return query_string;\n}();\n\n/**\n * @private\n */\nfunction loadJSON(url, ok, err) {\n // Avoid checking ok and err on each use.\n var defaultCallback = (_value) => undefined;\n ok = ok || defaultCallback;\n err = err || defaultCallback;\n\n var request = new XMLHttpRequest();\n request.overrideMimeType(\"application/json\");\n request.open('GET', url, true);\n request.addEventListener('load', function (event) {\n var response = event.target.response;\n if (this.status === 200) {\n var json;\n try {\n json = JSON.parse(response);\n } catch (e) {\n err(`utils.loadJSON(): Failed to parse JSON response - ${e}`);\n }\n ok(json);\n } else if (this.status === 0) {\n // Some browsers return HTTP Status 0 when using non-http protocol\n // e.g. 'file://' or 'data://'. Handle as success.\n console.warn('loadFile: HTTP Status 0 received.');\n try {\n ok(JSON.parse(response));\n } catch (e) {\n err(`utils.loadJSON(): Failed to parse JSON response - ${e}`);\n }\n } else {\n err(event);\n }\n }, false);\n\n request.addEventListener('error', function (event) {\n err(event);\n }, false);\n request.send(null);\n}\n\n/**\n * @private\n */\nfunction loadArraybuffer(url, ok, err) {\n // Check for data: URI\n var defaultCallback = (_value) => undefined;\n ok = ok || defaultCallback;\n err = err || defaultCallback;\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n const dataUriRegexResult = url.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = window.decodeURIComponent(data);\n if (isBase64) {\n data = window.atob(data);\n }\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n core.scheduleTask(() => {\n ok(buffer);\n });\n } catch (error) {\n core.scheduleTask(() => {\n err(error);\n });\n }\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n err('loadArrayBuffer error : ' + request.response);\n }\n }\n };\n request.send(null);\n }\n}\n\n/**\n Tests if the given object is an array\n @private\n */\nfunction isArray(value) {\n return value && !(value.propertyIsEnumerable('length')) && typeof value === 'object' && typeof value.length === 'number';\n}\n\n/**\n Tests if the given value is a string\n @param value\n @returns {Boolean}\n @private\n */\nfunction isString(value) {\n return (typeof value === 'string' || value instanceof String);\n}\n\n/**\n Tests if the given value is a number\n @param value\n @returns {Boolean}\n @private\n */\nfunction isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n}\n\n/**\n Tests if the given value is an ID\n @param value\n @returns {Boolean}\n @private\n */\nfunction isID(value) {\n return utils.isString(value) || utils.isNumeric(value);\n}\n\n/**\n Tests if the given components are the same, where the components can be either IDs or instances.\n @param c1\n @param c2\n @returns {Boolean}\n @private\n */\nfunction isSameComponent(c1, c2) {\n if (!c1 || !c2) {\n return false;\n }\n const id1 = (utils.isNumeric(c1) || utils.isString(c1)) ? `${c1}` : c1.id;\n const id2 = (utils.isNumeric(c2) || utils.isString(c2)) ? `${c2}` : c2.id;\n return id1 === id2;\n}\n\n/**\n Tests if the given value is a function\n @param value\n @returns {Boolean}\n @private\n */\nfunction isFunction(value) {\n return (typeof value === \"function\");\n}\n\n/**\n Tests if the given value is a JavaScript JSON object, eg, ````{ foo: \"bar\" }````.\n @param value\n @returns {Boolean}\n @private\n */\nfunction isObject(value) {\n const objectConstructor = {}.constructor;\n return (!!value && value.constructor === objectConstructor);\n}\n\n/** Returns a shallow copy\n */\nfunction copy(o) {\n return utils.apply(o, {});\n}\n\n/** Add properties of o to o2, overwriting them on o2 if already there\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 Add non-null/defined properties of o to o2\n @private\n */\nfunction apply2(o, o2) {\n for (const name in o) {\n if (o.hasOwnProperty(name)) {\n if (o[name] !== undefined && o[name] !== null) {\n o2[name] = o[name];\n }\n }\n }\n return o2;\n}\n\n/**\n Add properties of o to o2 where undefined or null on o2\n @private\n */\nfunction applyIf(o, o2) {\n for (const name in o) {\n if (o.hasOwnProperty(name)) {\n if (o2[name] === undefined || o2[name] === null) {\n o2[name] = o[name];\n }\n }\n }\n return o2;\n}\n\n/**\n Returns true if the given map is empty.\n @param obj\n @returns {Boolean}\n @private\n */\nfunction isEmptyObject(obj) {\n for (const name in obj) {\n if (obj.hasOwnProperty(name)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n Returns the given ID as a string, in quotes if the ID was a string to begin with.\n\n This is useful for logging IDs.\n\n @param {Number| String} id The ID\n @returns {String}\n @private\n */\nfunction inQuotes(id) {\n return utils.isNumeric(id) ? (`${id}`) : (`'${id}'`);\n}\n\n/**\n Returns the concatenation of two typed arrays.\n @param a\n @param b\n @returns {*|a}\n @private\n */\nfunction concat(a, b) {\n const c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n\nfunction flattenParentChildHierarchy(root) {\n var list = [];\n\n function visit(node) {\n node.id = node.uuid;\n delete node.oid;\n list.push(node);\n var children = node.children;\n\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n const child = children[i];\n child.parent = node.id;\n visit(children[i]);\n }\n }\n node.children = [];\n }\n\n visit(root);\n return list;\n}\n\n/**\n * @private\n */\nconst utils = {\n xmlToJson: xmlToJson,\n clone: clone,\n compressGuid: compressGuid,\n findNodeOfType: findNodeOfType,\n timeout: timeout,\n httpRequest: httpRequest,\n loadJSON: loadJSON,\n loadArraybuffer: loadArraybuffer,\n queryString: queryString,\n isArray: isArray,\n isString: isString,\n isNumeric: isNumeric,\n isID: isID,\n isSameComponent: isSameComponent,\n isFunction: isFunction,\n isObject: isObject,\n copy: copy,\n apply: apply,\n apply2: apply2,\n applyIf: applyIf,\n isEmptyObject: isEmptyObject,\n inQuotes: inQuotes,\n concat: concat,\n flattenParentChildHierarchy: flattenParentChildHierarchy\n};\n\nexport {utils};\n", @@ -167928,7 +168487,7 @@ "lineNumber": 1 }, { - "__docId__": 8527, + "__docId__": 8546, "kind": "function", "name": "xmlToJson", "memberof": "src/viewer/scene/utils.js", @@ -167965,7 +168524,7 @@ "ignore": true }, { - "__docId__": 8528, + "__docId__": 8547, "kind": "function", "name": "clone", "memberof": "src/viewer/scene/utils.js", @@ -167995,7 +168554,7 @@ } }, { - "__docId__": 8529, + "__docId__": 8548, "kind": "variable", "name": "guidChars", "memberof": "src/viewer/scene/utils.js", @@ -168015,7 +168574,7 @@ } }, { - "__docId__": 8530, + "__docId__": 8549, "kind": "function", "name": "b64", "memberof": "src/viewer/scene/utils.js", @@ -168051,7 +168610,7 @@ } }, { - "__docId__": 8531, + "__docId__": 8550, "kind": "function", "name": "compressGuid", "memberof": "src/viewer/scene/utils.js", @@ -168081,7 +168640,7 @@ } }, { - "__docId__": 8532, + "__docId__": 8551, "kind": "function", "name": "findNodeOfType", "memberof": "src/viewer/scene/utils.js", @@ -168117,7 +168676,7 @@ } }, { - "__docId__": 8533, + "__docId__": 8552, "kind": "function", "name": "timeout", "memberof": "src/viewer/scene/utils.js", @@ -168147,7 +168706,7 @@ } }, { - "__docId__": 8534, + "__docId__": 8553, "kind": "function", "name": "httpRequest", "memberof": "src/viewer/scene/utils.js", @@ -168177,7 +168736,7 @@ } }, { - "__docId__": 8535, + "__docId__": 8554, "kind": "variable", "name": "queryString", "memberof": "src/viewer/scene/utils.js", @@ -168197,7 +168756,7 @@ } }, { - "__docId__": 8536, + "__docId__": 8555, "kind": "function", "name": "loadJSON", "memberof": "src/viewer/scene/utils.js", @@ -168235,7 +168794,7 @@ "return": null }, { - "__docId__": 8537, + "__docId__": 8556, "kind": "function", "name": "loadArraybuffer", "memberof": "src/viewer/scene/utils.js", @@ -168273,7 +168832,7 @@ "return": null }, { - "__docId__": 8538, + "__docId__": 8557, "kind": "function", "name": "isArray", "memberof": "src/viewer/scene/utils.js", @@ -168303,7 +168862,7 @@ } }, { - "__docId__": 8539, + "__docId__": 8558, "kind": "function", "name": "isString", "memberof": "src/viewer/scene/utils.js", @@ -168346,7 +168905,7 @@ "ignore": true }, { - "__docId__": 8540, + "__docId__": 8559, "kind": "function", "name": "isNumeric", "memberof": "src/viewer/scene/utils.js", @@ -168389,7 +168948,7 @@ "ignore": true }, { - "__docId__": 8541, + "__docId__": 8560, "kind": "function", "name": "isID", "memberof": "src/viewer/scene/utils.js", @@ -168432,7 +168991,7 @@ "ignore": true }, { - "__docId__": 8542, + "__docId__": 8561, "kind": "function", "name": "isSameComponent", "memberof": "src/viewer/scene/utils.js", @@ -168485,7 +169044,7 @@ "ignore": true }, { - "__docId__": 8543, + "__docId__": 8562, "kind": "function", "name": "isFunction", "memberof": "src/viewer/scene/utils.js", @@ -168528,7 +169087,7 @@ "ignore": true }, { - "__docId__": 8544, + "__docId__": 8563, "kind": "function", "name": "isObject", "memberof": "src/viewer/scene/utils.js", @@ -168571,7 +169130,7 @@ "ignore": true }, { - "__docId__": 8545, + "__docId__": 8564, "kind": "function", "name": "copy", "memberof": "src/viewer/scene/utils.js", @@ -168601,7 +169160,7 @@ "ignore": true }, { - "__docId__": 8546, + "__docId__": 8565, "kind": "function", "name": "apply", "memberof": "src/viewer/scene/utils.js", @@ -168637,7 +169196,7 @@ "ignore": true }, { - "__docId__": 8547, + "__docId__": 8566, "kind": "function", "name": "apply2", "memberof": "src/viewer/scene/utils.js", @@ -168673,7 +169232,7 @@ } }, { - "__docId__": 8548, + "__docId__": 8567, "kind": "function", "name": "applyIf", "memberof": "src/viewer/scene/utils.js", @@ -168709,7 +169268,7 @@ } }, { - "__docId__": 8549, + "__docId__": 8568, "kind": "function", "name": "isEmptyObject", "memberof": "src/viewer/scene/utils.js", @@ -168752,7 +169311,7 @@ "ignore": true }, { - "__docId__": 8550, + "__docId__": 8569, "kind": "function", "name": "inQuotes", "memberof": "src/viewer/scene/utils.js", @@ -168796,7 +169355,7 @@ "ignore": true }, { - "__docId__": 8551, + "__docId__": 8570, "kind": "function", "name": "concat", "memberof": "src/viewer/scene/utils.js", @@ -168850,7 +169409,7 @@ "ignore": true }, { - "__docId__": 8552, + "__docId__": 8571, "kind": "function", "name": "flattenParentChildHierarchy", "memberof": "src/viewer/scene/utils.js", @@ -168881,7 +169440,7 @@ "ignore": true }, { - "__docId__": 8553, + "__docId__": 8572, "kind": "variable", "name": "utils", "memberof": "src/viewer/scene/utils.js", @@ -168901,7 +169460,7 @@ } }, { - "__docId__": 8554, + "__docId__": 8573, "kind": "file", "name": "src/viewer/scene/viewport/Viewport.js", "content": "/**\n * @desc controls the canvas viewport for a {@link Scene}.\n *\n * * One Viewport per scene.\n * * You can configure a Scene to render multiple times per frame, while setting the Viewport to different extents on each render.\n * * Make a Viewport automatically size to its {@link Scene} {@link Canvas} by setting its {@link Viewport#autoBoundary} ````true````.\n *\n *\n * Configuring the Scene to render twice on each frame, each time to a separate viewport:\n *\n * ````Javascript\n * // Load glTF model\n * var model = new xeokit.GLTFModel({\n src: \"models/gltf/GearboxAssy/glTF-MaterialsCommon/GearboxAssy.gltf\"\n });\n\n var scene = model.scene;\n var viewport = scene.viewport;\n\n // Configure Scene to render twice for each frame\n scene.passes = 2; // Default is 1\n scene.clearEachPass = false; // Default is false\n\n // Render to a separate viewport on each render\n\n var viewport = scene.viewport;\n viewport.autoBoundary = false;\n\n scene.on(\"rendering\", function (e) {\n switch (e.pass) {\n case 0:\n viewport.boundary = [0, 0, 200, 200]; // xmin, ymin, width, height\n break;\n\n case 1:\n viewport.boundary = [200, 0, 200, 200];\n break;\n }\n });\n ````\n\n @class Viewport\n @module xeokit\n @submodule rendering\n @constructor\n @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n @param {*} [cfg] Viewport configuration\n @param {String} [cfg.id] Optional ID, unique among all components in the parent\n {@link Scene}, generated automatically when omitted.\n @param {String:Object} [cfg.meta] Optional map of user-defined metadata to attach to this Viewport.\n @param [cfg.boundary] {Number[]} Canvas-space Viewport boundary, given as\n (min, max, width, height). Defaults to the size of the parent\n {@link Scene} {@link Canvas}.\n @param [cfg.autoBoundary=false] {Boolean} Indicates if this Viewport's {@link Viewport#boundary}\n automatically synchronizes with the size of the parent {@link Scene} {@link Canvas}.\n\n @extends Component\n */\nimport {Component} from '../Component.js';\nimport {RenderState} from '../webgl/RenderState.js';\n\nclass Viewport extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Viewport\";\n }\n\n /**\n @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n boundary: [0, 0, 100, 100]\n });\n\n this.boundary = cfg.boundary;\n this.autoBoundary = cfg.autoBoundary;\n }\n\n\n /**\n * Sets the canvas-space boundary of this Viewport, indicated as ````[min, max, width, height]````.\n *\n * When {@link Viewport#autoBoundary} is ````true````, ignores calls to this method and automatically synchronizes with {@link Canvas#boundary}.\n *\n * Fires a \"boundary\"\" event on change.\n *\n * Defaults to the {@link Canvas} extents.\n *\n * @param {Number[]} value New Viewport extents.\n */\n set boundary(value) {\n\n if (this._autoBoundary) {\n return;\n }\n\n if (!value) {\n\n const canvasBoundary = this.scene.canvas.boundary;\n\n const width = canvasBoundary[2];\n const height = canvasBoundary[3];\n\n value = [0, 0, width, height];\n }\n\n this._state.boundary = value;\n\n this.glRedraw();\n\n /**\n Fired whenever this Viewport's {@link Viewport#boundary} property changes.\n\n @event boundary\n @param value {Boolean} The property's new value\n */\n this.fire(\"boundary\", this._state.boundary);\n }\n\n /**\n * Gets the canvas-space boundary of this Viewport, indicated as ````[min, max, width, height]````.\n *\n * @returns {Number[]} The Viewport extents.\n */\n get boundary() {\n return this._state.boundary;\n }\n\n /**\n * Sets if {@link Viewport#boundary} automatically synchronizes with {@link Canvas#boundary}.\n *\n * Default is ````false````.\n *\n * @param {Boolean} value Set true to automatically sycnhronize.\n */\n set autoBoundary(value) {\n\n value = !!value;\n\n if (value === this._autoBoundary) {\n return;\n }\n\n this._autoBoundary = value;\n\n if (this._autoBoundary) {\n this._onCanvasSize = this.scene.canvas.on(\"boundary\",\n function (boundary) {\n\n const width = boundary[2];\n const height = boundary[3];\n\n this._state.boundary = [0, 0, width, height];\n\n this.glRedraw();\n\n /**\n Fired whenever this Viewport's {@link Viewport#boundary} property changes.\n\n @event boundary\n @param value {Boolean} The property's new value\n */\n this.fire(\"boundary\", this._state.boundary);\n\n }, this);\n\n } else if (this._onCanvasSize) {\n this.scene.canvas.off(this._onCanvasSize);\n this._onCanvasSize = null;\n }\n\n /**\n Fired whenever this Viewport's {@link autoBoundary/autoBoundary} property changes.\n\n @event autoBoundary\n @param value The property's new value\n */\n this.fire(\"autoBoundary\", this._autoBoundary);\n }\n\n /**\n * Gets if {@link Viewport#boundary} automatically synchronizes with {@link Canvas#boundary}.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} Returns ````true```` when automatically sycnhronizing.\n */\n get autoBoundary() {\n return this._autoBoundary;\n }\n\n _getState() {\n return this._state;\n }\n\n /**\n * @private\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {Viewport};", @@ -168912,7 +169471,7 @@ "lineNumber": 1 }, { - "__docId__": 8555, + "__docId__": 8574, "kind": "class", "name": "Viewport", "memberof": "src/viewer/scene/viewport/Viewport.js", @@ -168931,7 +169490,7 @@ ] }, { - "__docId__": 8556, + "__docId__": 8575, "kind": "get", "name": "type", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -168950,7 +169509,7 @@ } }, { - "__docId__": 8557, + "__docId__": 8576, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -168964,7 +169523,7 @@ "ignore": true }, { - "__docId__": 8558, + "__docId__": 8577, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -168982,7 +169541,7 @@ } }, { - "__docId__": 8561, + "__docId__": 8580, "kind": "set", "name": "boundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -169007,7 +169566,7 @@ ] }, { - "__docId__": 8562, + "__docId__": 8581, "kind": "get", "name": "boundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -169039,7 +169598,7 @@ } }, { - "__docId__": 8563, + "__docId__": 8582, "kind": "set", "name": "autoBoundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -169064,7 +169623,7 @@ ] }, { - "__docId__": 8564, + "__docId__": 8583, "kind": "member", "name": "_autoBoundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -169082,7 +169641,7 @@ } }, { - "__docId__": 8565, + "__docId__": 8584, "kind": "member", "name": "_onCanvasSize", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -169100,7 +169659,7 @@ } }, { - "__docId__": 8567, + "__docId__": 8586, "kind": "get", "name": "autoBoundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -169132,7 +169691,7 @@ } }, { - "__docId__": 8568, + "__docId__": 8587, "kind": "method", "name": "_getState", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -169153,7 +169712,7 @@ } }, { - "__docId__": 8569, + "__docId__": 8588, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -169169,7 +169728,7 @@ "return": null }, { - "__docId__": 8570, + "__docId__": 8589, "kind": "file", "name": "src/viewer/scene/webgl/ArrayBuf.js", "content": "/**\n * @desc Represents a WebGL ArrayBuffer.\n *\n * @private\n */\nclass ArrayBuf {\n\n constructor(gl, type, data, numItems, itemSize, usage, normalized, stride, offset) {\n\n this._gl = gl;\n this.type = type;\n this.allocated = false;\n\n switch (data.constructor) {\n\n case Uint8Array:\n this.itemType = gl.UNSIGNED_BYTE;\n this.itemByteSize = 1;\n break;\n\n case Int8Array:\n this.itemType = gl.BYTE;\n this.itemByteSize = 1;\n break;\n\n case Uint16Array:\n this.itemType = gl.UNSIGNED_SHORT;\n this.itemByteSize = 2;\n break;\n\n case Int16Array:\n this.itemType = gl.SHORT;\n this.itemByteSize = 2;\n break;\n\n case Uint32Array:\n this.itemType = gl.UNSIGNED_INT;\n this.itemByteSize = 4;\n break;\n\n case Int32Array:\n this.itemType = gl.INT;\n this.itemByteSize = 4;\n break;\n\n default:\n this.itemType = gl.FLOAT;\n this.itemByteSize = 4;\n }\n\n this.usage = usage;\n this.length = 0;\n this.dataLength = numItems;\n this.numItems = 0;\n this.itemSize = itemSize;\n this.normalized = !!normalized;\n this.stride = stride || 0;\n this.offset = offset || 0;\n\n this._allocate(data);\n }\n\n _allocate(data) {\n this.allocated = false;\n this._handle = this._gl.createBuffer();\n if (!this._handle) {\n throw \"Failed to allocate WebGL ArrayBuffer\";\n }\n if (this._handle) {\n this._gl.bindBuffer(this.type, this._handle);\n this._gl.bufferData(this.type, data.length > this.dataLength ? data.slice(0, this.dataLength) : data, this.usage);\n this._gl.bindBuffer(this.type, null);\n this.length = data.length;\n this.numItems = this.length / this.itemSize;\n this.allocated = true;\n }\n }\n\n setData(data, offset) {\n if (!this.allocated) {\n return;\n }\n if (data.length + (offset || 0) > this.length) { // Needs reallocation\n this.destroy();\n this._allocate(data);\n } else { // No reallocation needed\n this._gl.bindBuffer(this.type, this._handle);\n if (offset || offset === 0) {\n this._gl.bufferSubData(this.type, offset * this.itemByteSize, data);\n } else {\n this._gl.bufferData(this.type, data, this.usage);\n }\n this._gl.bindBuffer(this.type, null);\n }\n }\n\n bind() {\n if (!this.allocated) {\n return;\n }\n this._gl.bindBuffer(this.type, this._handle);\n }\n\n unbind() {\n if (!this.allocated) {\n return;\n }\n this._gl.bindBuffer(this.type, null);\n }\n\n destroy() {\n if (!this.allocated) {\n return;\n }\n this._gl.deleteBuffer(this._handle);\n this._handle = null;\n this.allocated = false;\n }\n}\n\nexport {ArrayBuf};\n", @@ -169180,7 +169739,7 @@ "lineNumber": 1 }, { - "__docId__": 8571, + "__docId__": 8590, "kind": "class", "name": "ArrayBuf", "memberof": "src/viewer/scene/webgl/ArrayBuf.js", @@ -169196,7 +169755,7 @@ "ignore": true }, { - "__docId__": 8572, + "__docId__": 8591, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169210,7 +169769,7 @@ "undocument": true }, { - "__docId__": 8573, + "__docId__": 8592, "kind": "member", "name": "_gl", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169228,7 +169787,7 @@ } }, { - "__docId__": 8574, + "__docId__": 8593, "kind": "member", "name": "type", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169245,7 +169804,7 @@ } }, { - "__docId__": 8575, + "__docId__": 8594, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169262,7 +169821,7 @@ } }, { - "__docId__": 8576, + "__docId__": 8595, "kind": "member", "name": "itemType", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169279,7 +169838,7 @@ } }, { - "__docId__": 8577, + "__docId__": 8596, "kind": "member", "name": "itemByteSize", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169296,7 +169855,7 @@ } }, { - "__docId__": 8590, + "__docId__": 8609, "kind": "member", "name": "usage", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169313,7 +169872,7 @@ } }, { - "__docId__": 8591, + "__docId__": 8610, "kind": "member", "name": "length", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169330,7 +169889,7 @@ } }, { - "__docId__": 8592, + "__docId__": 8611, "kind": "member", "name": "dataLength", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169347,7 +169906,7 @@ } }, { - "__docId__": 8593, + "__docId__": 8612, "kind": "member", "name": "numItems", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169364,7 +169923,7 @@ } }, { - "__docId__": 8594, + "__docId__": 8613, "kind": "member", "name": "itemSize", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169381,7 +169940,7 @@ } }, { - "__docId__": 8595, + "__docId__": 8614, "kind": "member", "name": "normalized", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169398,7 +169957,7 @@ } }, { - "__docId__": 8596, + "__docId__": 8615, "kind": "member", "name": "stride", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169415,7 +169974,7 @@ } }, { - "__docId__": 8597, + "__docId__": 8616, "kind": "member", "name": "offset", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169432,7 +169991,7 @@ } }, { - "__docId__": 8598, + "__docId__": 8617, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169456,7 +170015,7 @@ "return": null }, { - "__docId__": 8600, + "__docId__": 8619, "kind": "member", "name": "_handle", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169474,7 +170033,7 @@ } }, { - "__docId__": 8604, + "__docId__": 8623, "kind": "method", "name": "setData", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169503,7 +170062,7 @@ "return": null }, { - "__docId__": 8605, + "__docId__": 8624, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169519,7 +170078,7 @@ "return": null }, { - "__docId__": 8606, + "__docId__": 8625, "kind": "method", "name": "unbind", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169535,7 +170094,7 @@ "return": null }, { - "__docId__": 8607, + "__docId__": 8626, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -169551,7 +170110,7 @@ "return": null }, { - "__docId__": 8610, + "__docId__": 8629, "kind": "file", "name": "src/viewer/scene/webgl/Attribute.js", "content": "/**\n * @desc Represents a WebGL vertex attribute buffer (VBO).\n * @private\n * @param gl {WebGLRenderingContext} The WebGL rendering context.\n */\nclass Attribute {\n\n constructor(gl, location) {\n this._gl = gl;\n this.location = location;\n }\n\n bindArrayBuffer(arrayBuf) {\n if (!arrayBuf) {\n return;\n }\n arrayBuf.bind();\n this._gl.enableVertexAttribArray(this.location);\n this._gl.vertexAttribPointer(this.location, arrayBuf.itemSize, arrayBuf.itemType, arrayBuf.normalized, arrayBuf.stride, arrayBuf.offset);\n }\n}\n\nexport {Attribute};\n", @@ -169562,7 +170121,7 @@ "lineNumber": 1 }, { - "__docId__": 8611, + "__docId__": 8630, "kind": "class", "name": "Attribute", "memberof": "src/viewer/scene/webgl/Attribute.js", @@ -169590,7 +170149,7 @@ "ignore": true }, { - "__docId__": 8612, + "__docId__": 8631, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Attribute.js~Attribute", @@ -169604,7 +170163,7 @@ "undocument": true }, { - "__docId__": 8613, + "__docId__": 8632, "kind": "member", "name": "_gl", "memberof": "src/viewer/scene/webgl/Attribute.js~Attribute", @@ -169622,7 +170181,7 @@ } }, { - "__docId__": 8614, + "__docId__": 8633, "kind": "member", "name": "location", "memberof": "src/viewer/scene/webgl/Attribute.js~Attribute", @@ -169639,7 +170198,7 @@ } }, { - "__docId__": 8615, + "__docId__": 8634, "kind": "method", "name": "bindArrayBuffer", "memberof": "src/viewer/scene/webgl/Attribute.js~Attribute", @@ -169662,7 +170221,7 @@ "return": null }, { - "__docId__": 8616, + "__docId__": 8635, "kind": "file", "name": "src/viewer/scene/webgl/Drawable.js", "content": "/**\n * @desc A drawable {@link Scene} element.\n *\n * @interface\n * @abstract\n * @private\n */\nclass Drawable {\n\n /**\n * Returns true to indicate that this is a Drawable.\n * @type {Boolean}\n * @abstract\n */\n get isDrawable() {\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Emphasis materials\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Configures the appearance of this Drawable when x-rayed.\n *\n * Set to {@link Scene#xrayMaterial} by default.\n *\n * @type {EmphasisMaterial}\n * @abstract\n */\n get xrayMaterial() {\n }\n\n /**\n * Configures the appearance of this Drawable when highlighted.\n *\n * Set to {@link Scene#highlightMaterial} by default.\n *\n * @type {EmphasisMaterial}\n * @abstract\n */\n get highlightMaterial() {\n }\n\n /**\n * Configures the appearance of this Drawable when selected.\n *\n * Set to {@link Scene#selectedMaterial} by default.\n *\n * @type {EmphasisMaterial}\n * @abstract\n */\n get selectedMaterial() {\n }\n\n /**\n * Configures the appearance of this Drawable when edges are enhanced.\n *\n * @type {EdgeMaterial}\n * @abstract\n */\n get edgeMaterial() {\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Rendering\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Property with final value ````true```` to indicate that xeokit should render this Drawable in sorted order, relative to other Drawable of the same class.\n *\n * The sort order is determined by {@link Drawable#stateSortCompare}.\n *\n * Sorting is essential for rendering performance, so that xeokit is able to avoid applying runs of the same state changes to the GPU, ie. can collapse them.\n *\n * @type {boolean}\n * @abstract\n */\n get isStateSortable() {\n }\n\n /**\n * Comparison function used by the renderer to determine the order in which xeokit should render the Drawable, relative to to other Drawablees.\n *\n * Sorting is essential for rendering performance, so that xeokit is able to avoid needlessly applying runs of the same rendering state changes to the GPU, ie. can collapse them.\n *\n * @param {Drawable} drawable1\n * @param {Drawable} drawable2\n * @returns {number}\n * @abstract\n */\n stateSortCompare(drawable1, drawable2) {\n }\n\n /**\n * Called by xeokit when about to render this Drawable, to generate {@link Drawable#renderFlags}.\n *\n * @abstract\n */\n rebuildRenderFlags(renderFlags) {\n }\n\n /**\n * Called by xeokit when about to render this Drawable, to get flags indicating what rendering effects to apply for it.\n * @type {RenderFlags}\n * @abstract\n */\n get renderFlags() {\n\n }\n\n // ---------------------- NORMAL RENDERING -----------------------------------\n\n /**\n * Renders opaque edges using {@link Drawable#edgeMaterial}.\n *\n * See {@link RenderFlags#colorOpaque}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawColorOpaque(renderFlags, frameCtx) {\n }\n\n /**\n * Renders transparent filled surfaces using normal appearance attributes.\n *\n * See {@link RenderFlags#colorTransparent}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawColorTransparent(renderFlags, frameCtx) {\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n /**\n * Renders pixel depths to an internally-managed depth target, for use in post-effects (eg. SAO).\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawDepth(renderFlags, frameCtx) {\n }\n\n /**\n * Renders pixel normals to an internally-managed target, for use in post-effects (eg. SAO).\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawNormals(renderFlags, frameCtx) {\n }\n\n // ---------------------- EMPHASIS RENDERING -----------------------------------\n\n /**\n * Renders x-ray fill using {@link Drawable#xrayMaterial}.\n *\n * See {@link RenderFlags#xrayedSilhouetteOpaque} and {@link RenderFlags#xrayedSilhouetteTransparent}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n }\n\n /**\n * Renders highlighted transparent fill using {@link Drawable#highlightMaterial}.\n *\n * See {@link RenderFlags#highlightedSilhouetteOpaque} and {@link RenderFlags#highlightedSilhouetteTransparent}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n }\n\n /**\n * Renders selected fill using {@link Drawable#selectedMaterial}.\n *\n * See {@link RenderFlags#selectedSilhouetteOpaque} and {@link RenderFlags#selectedSilhouetteTransparent}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawSilhouetteSelected(renderFlags, frameCtx) {\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n /**\n * Renders opaque normal edges using {@link Drawable#edgeMaterial}.\n *\n * See {@link RenderFlags#edgesOpaque}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n /**\n * Renders transparent normal edges using {@link Drawable#edgeMaterial}.\n *\n * See {@link RenderFlags#edgesTransparent}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n /**\n * Renders x-rayed edges using {@link Drawable#xrayMaterial}.\n *\n * See {@link RenderFlags#xrayedEdgesOpaque}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n /**\n * Renders highlighted edges using {@link Drawable#highlightMaterial}.\n *\n * See {@link RenderFlags#highlightedEdgesOpaque}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n /**\n * Renders selected edges using {@link Drawable#selectedMaterial}.\n *\n * See {@link RenderFlags#selectedEdgesOpaque}.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n /**\n * Renders occludable elements to a frame buffer where they will be tested to see if they occlude any occlusion probe markers.\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawOcclusion(renderFlags, frameCtx) {\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n /**\n * Renders depths to a shadow map buffer..\n *\n * @param {FrameContext} frameCtx Renderer frame context.\n * @abstract\n */\n drawShadow(renderFlags, frameCtx) {\n }\n}\n\nexport {Drawable};", @@ -169673,7 +170232,7 @@ "lineNumber": 1 }, { - "__docId__": 8617, + "__docId__": 8636, "kind": "class", "name": "Drawable", "memberof": "src/viewer/scene/webgl/Drawable.js", @@ -169690,7 +170249,7 @@ "ignore": true }, { - "__docId__": 8618, + "__docId__": 8637, "kind": "get", "name": "isDrawable", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169712,7 +170271,7 @@ "abstract": true }, { - "__docId__": 8619, + "__docId__": 8638, "kind": "get", "name": "xrayMaterial", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169734,7 +170293,7 @@ "abstract": true }, { - "__docId__": 8620, + "__docId__": 8639, "kind": "get", "name": "highlightMaterial", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169756,7 +170315,7 @@ "abstract": true }, { - "__docId__": 8621, + "__docId__": 8640, "kind": "get", "name": "selectedMaterial", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169778,7 +170337,7 @@ "abstract": true }, { - "__docId__": 8622, + "__docId__": 8641, "kind": "get", "name": "edgeMaterial", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169800,7 +170359,7 @@ "abstract": true }, { - "__docId__": 8623, + "__docId__": 8642, "kind": "get", "name": "isStateSortable", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169822,7 +170381,7 @@ "abstract": true }, { - "__docId__": 8624, + "__docId__": 8643, "kind": "method", "name": "stateSortCompare", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169872,7 +170431,7 @@ "abstract": true }, { - "__docId__": 8625, + "__docId__": 8644, "kind": "method", "name": "rebuildRenderFlags", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169895,7 +170454,7 @@ "return": null }, { - "__docId__": 8626, + "__docId__": 8645, "kind": "get", "name": "renderFlags", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169917,7 +170476,7 @@ "abstract": true }, { - "__docId__": 8627, + "__docId__": 8646, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169944,7 +170503,7 @@ "return": null }, { - "__docId__": 8628, + "__docId__": 8647, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169971,7 +170530,7 @@ "return": null }, { - "__docId__": 8629, + "__docId__": 8648, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -169998,7 +170557,7 @@ "return": null }, { - "__docId__": 8630, + "__docId__": 8649, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170025,7 +170584,7 @@ "return": null }, { - "__docId__": 8631, + "__docId__": 8650, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170052,7 +170611,7 @@ "return": null }, { - "__docId__": 8632, + "__docId__": 8651, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170079,7 +170638,7 @@ "return": null }, { - "__docId__": 8633, + "__docId__": 8652, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170106,7 +170665,7 @@ "return": null }, { - "__docId__": 8634, + "__docId__": 8653, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170133,7 +170692,7 @@ "return": null }, { - "__docId__": 8635, + "__docId__": 8654, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170160,7 +170719,7 @@ "return": null }, { - "__docId__": 8636, + "__docId__": 8655, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170187,7 +170746,7 @@ "return": null }, { - "__docId__": 8637, + "__docId__": 8656, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170214,7 +170773,7 @@ "return": null }, { - "__docId__": 8638, + "__docId__": 8657, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170241,7 +170800,7 @@ "return": null }, { - "__docId__": 8639, + "__docId__": 8658, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170268,7 +170827,7 @@ "return": null }, { - "__docId__": 8640, + "__docId__": 8659, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -170295,7 +170854,7 @@ "return": null }, { - "__docId__": 8641, + "__docId__": 8660, "kind": "file", "name": "src/viewer/scene/webgl/FrameContext.js", "content": "import {math} from \"../math/math.js\";\nimport {createRTCViewMat} from \"../math/rtcCoords.js\";\n\n/**\n * @desc Provides rendering context to {@link Drawable\"}s as xeokit renders them for a frame.\n *\n * Also creates RTC viewing and picking matrices, caching and reusing matrices within each frame.\n *\n * @private\n */\nclass FrameContext {\n\n constructor(scene) {\n\n this._scene = scene;\n\n this._matPool = [];\n this._matPoolNextFreeIndex = 0;\n\n this._rtcViewMats = {};\n this._rtcPickViewMats = {};\n\n this.reset();\n }\n\n /**\n * Called by the renderer before each frame.\n * @private\n */\n reset() {\n\n this._matPoolNextFreeIndex = 0;\n this._rtcViewMats = {};\n this._rtcPickViewMats = {};\n\n /**\n * The WebGL rendering context.\n * @type {WebGLRenderingContext}\n */\n this.gl = this._scene.canvas.gl;\n\n /**\n * ID of the last {@link WebGLProgram} that was bound during the current frame.\n * @property lastProgramId\n * @type {Number}\n */\n this.lastProgramId = null;\n\n /**\n * Whether to render a physically-based representation for triangle surfaces.\n *\n * When ````false````, we'll render them with a fast vertex-shaded Gouraud-shaded representation, which\n * is great for zillions of objects.\n *\n * When ````true````, we'll render them at a better visual quality, using smooth, per-fragment shading\n * and a more realistic lighting model.\n *\n * @property quality\n * @default false\n * @type {Boolean}\n */\n this.pbrEnabled = false;\n\n /**\n * Whether to render color textures for triangle surfaces.\n *\n * @property quality\n * @default false\n * @type {Boolean}\n */\n this.colorTextureEnabled = false;\n\n /**\n * Whether SAO is currently enabled during the current frame.\n * @property withSAO\n * @default false\n * @type {Boolean}\n */\n this.withSAO = false;\n\n /**\n * Whether backfaces are currently enabled during the current frame.\n * @property backfaces\n * @default false\n * @type {Boolean}\n */\n this.backfaces = false;\n\n /**\n * The vertex winding order for what we currently consider to be a backface during current\n * frame: true == \"cw\", false == \"ccw\".\n * @property frontFace\n * @default true\n * @type {Boolean}\n */\n this.frontface = true;\n\n /**\n * The next available texture unit to bind a {@link Texture} to.\n * @defauilt 0\n * @property textureUnit\n * @type {number}\n */\n this.textureUnit = 0;\n\n /**\n * Performance statistic that counts how many times the renderer has called ````gl.drawElements()```` has been\n * called so far within the current frame.\n * @default 0\n * @property drawElements\n * @type {number}\n */\n this.drawElements = 0;\n\n /**\n * Performance statistic that counts how many times ````gl.drawArrays()```` has been called so far within\n * the current frame.\n * @default 0\n * @property drawArrays\n * @type {number}\n */\n this.drawArrays = 0;\n\n /**\n * Performance statistic that counts how many times ````gl.useProgram()```` has been called so far within\n * the current frame.\n * @default 0\n * @property useProgram\n * @type {number}\n */\n this.useProgram = 0;\n\n /**\n * Statistic that counts how many times ````gl.bindTexture()```` has been called so far within the current frame.\n * @default 0\n * @property bindTexture\n * @type {number}\n */\n this.bindTexture = 0;\n\n /**\n * Counts how many times the renderer has called ````gl.bindArray()```` so far within the current frame.\n * @defaulr 0\n * @property bindArray\n * @type {number}\n */\n this.bindArray = 0;\n\n /**\n * Indicates which pass the renderer is currently rendering.\n *\n * See {@link Scene/passes:property\"}}Scene#passes{{/crossLink}}, which configures how many passes we render\n * per frame, which typically set to ````2```` when rendering a stereo view.\n *\n * @property pass\n * @type {number}\n */\n this.pass = 0;\n\n /**\n * The 4x4 viewing transform matrix the renderer is currently using when rendering castsShadows.\n *\n * This sets the viewpoint to look from the point of view of each {@link DirLight}\n * or {@link PointLight} that casts a shadow.\n *\n * @property shadowViewMatrix\n * @type {Number[]}\n */\n this.shadowViewMatrix = null;\n\n /**\n * The 4x4 viewing projection matrix the renderer is currently using when rendering shadows.\n *\n * @property shadowProjMatrix\n * @type {Number[]}\n */\n this.shadowProjMatrix = null;\n\n /**\n * The 4x4 viewing transform matrix the renderer is currently using when rendering a ray-pick.\n *\n * This sets the viewpoint to look along the ray given to {@link Scene/pick:method\"}}Scene#pick(){{/crossLink}}\n * when picking with a ray.\n *\n * @property pickViewMatrix\n * @type {Number[]}\n */\n this.pickViewMatrix = null;\n\n /**\n * The 4x4 orthographic projection transform matrix the renderer is currently using when rendering a ray-pick.\n *\n * @property pickProjMatrix\n * @type {Number[]}\n */\n this.pickProjMatrix = null;\n\n /**\n * Distance to the near clipping plane when rendering depth fragments for GPU-accelerated 3D picking.\n *\n * @property pickZNear\n * @type {Number|*}\n */\n this.pickZNear = 0.01;\n\n /**\n * Distance to the far clipping plane when rendering depth fragments for GPU-accelerated 3D picking.\n *\n * @property pickZFar\n * @type {Number|*}\n */\n this.pickZFar = 5000;\n\n /**\n * Whether or not the renderer is currently picking invisible objects.\n *\n * @property pickInvisible\n * @type {Number}\n */\n this.pickInvisible = false;\n\n /**\n * Used to draw only requested elements / indices.\n *\n * @property pickElementsCount\n * @type {Number}\n */\n this.pickElementsCount = null;\n\n /**\n * Used to draw only requested elements / indices.\n *\n * @property pickElementsOffset\n * @type {Number}\n */\n this.pickElementsOffset = null;\n\n /** The current line width.\n *\n * @property lineWidth\n * @type Number\n */\n this.lineWidth = 1;\n\n /**\n * Collects info from SceneModel.drawSnapInit and SceneModel.drawSnap,\n * which is then used in Renderer to determine snap-picking results.\n *\n * @type {{}}\n */\n this.snapPickLayerParams = {};\n\n /**\n * Collects info from SceneModel.drawSnapInit and SceneModel.drawSnap,\n * which is then used in Renderer to determine snap-picking results.\n * @type {number}\n */\n this.snapPickLayerNumber = 0;\n\n /**\n * Collects info from SceneModel.drawSnapInit and SceneModel.drawSnap,\n * which is then used in Renderer to determine snap-picking results.\n * @type {Number[]}\n */\n this.snapPickCoordinateScale = math.vec3();\n\n /**\n * Collects info from SceneModel.drawSnapInit and SceneModel.drawSnap,\n * which is then used in Renderer to determine snap-picking results.\n * @type {Number[]}\n */\n this.snapPickOrigin = math.vec3();\n }\n\n /**\n * Get View matrix for the given RTC center.\n */\n getRTCViewMatrix(originHash, origin) {\n let rtcViewMat = this._rtcViewMats[originHash];\n if (!rtcViewMat) {\n rtcViewMat = this._getNewMat();\n createRTCViewMat(this._scene.camera.viewMatrix, origin, rtcViewMat);\n this._rtcViewMats[originHash] = rtcViewMat;\n }\n return rtcViewMat;\n }\n\n /**\n * Get picking View RTC matrix for the given RTC center.\n */\n getRTCPickViewMatrix(originHash, origin) {\n let rtcPickViewMat = this._rtcPickViewMats[originHash];\n if (!rtcPickViewMat) {\n rtcPickViewMat = this._getNewMat();\n const pickViewMat = this.pickViewMatrix || this._scene.camera.viewMatrix;\n createRTCViewMat(pickViewMat, origin, rtcPickViewMat);\n this._rtcPickViewMats[originHash] = rtcPickViewMat;\n }\n return rtcPickViewMat;\n }\n\n _getNewMat() {\n let mat = this._matPool[this._matPoolNextFreeIndex];\n if (!mat) {\n mat = math.mat4();\n this._matPool[this._matPoolNextFreeIndex] = mat;\n }\n this._matPoolNextFreeIndex++;\n return mat;\n }\n}\n\nexport {FrameContext};", @@ -170306,7 +170865,7 @@ "lineNumber": 1 }, { - "__docId__": 8642, + "__docId__": 8661, "kind": "class", "name": "FrameContext", "memberof": "src/viewer/scene/webgl/FrameContext.js", @@ -170322,7 +170881,7 @@ "ignore": true }, { - "__docId__": 8643, + "__docId__": 8662, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170336,7 +170895,7 @@ "undocument": true }, { - "__docId__": 8644, + "__docId__": 8663, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170354,7 +170913,7 @@ } }, { - "__docId__": 8645, + "__docId__": 8664, "kind": "member", "name": "_matPool", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170372,7 +170931,7 @@ } }, { - "__docId__": 8646, + "__docId__": 8665, "kind": "member", "name": "_matPoolNextFreeIndex", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170390,7 +170949,7 @@ } }, { - "__docId__": 8647, + "__docId__": 8666, "kind": "member", "name": "_rtcViewMats", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170408,7 +170967,7 @@ } }, { - "__docId__": 8648, + "__docId__": 8667, "kind": "member", "name": "_rtcPickViewMats", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170426,7 +170985,7 @@ } }, { - "__docId__": 8649, + "__docId__": 8668, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170442,7 +171001,7 @@ "return": null }, { - "__docId__": 8653, + "__docId__": 8672, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170461,7 +171020,7 @@ } }, { - "__docId__": 8654, + "__docId__": 8673, "kind": "member", "name": "lastProgramId", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170492,7 +171051,7 @@ } }, { - "__docId__": 8655, + "__docId__": 8674, "kind": "member", "name": "pbrEnabled", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170529,7 +171088,7 @@ } }, { - "__docId__": 8656, + "__docId__": 8675, "kind": "member", "name": "colorTextureEnabled", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170566,7 +171125,7 @@ } }, { - "__docId__": 8657, + "__docId__": 8676, "kind": "member", "name": "withSAO", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170603,7 +171162,7 @@ } }, { - "__docId__": 8658, + "__docId__": 8677, "kind": "member", "name": "backfaces", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170640,7 +171199,7 @@ } }, { - "__docId__": 8659, + "__docId__": 8678, "kind": "member", "name": "frontface", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170677,7 +171236,7 @@ } }, { - "__docId__": 8660, + "__docId__": 8679, "kind": "member", "name": "textureUnit", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170714,7 +171273,7 @@ } }, { - "__docId__": 8661, + "__docId__": 8680, "kind": "member", "name": "drawElements", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170751,7 +171310,7 @@ } }, { - "__docId__": 8662, + "__docId__": 8681, "kind": "member", "name": "drawArrays", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170788,7 +171347,7 @@ } }, { - "__docId__": 8663, + "__docId__": 8682, "kind": "member", "name": "useProgram", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170825,7 +171384,7 @@ } }, { - "__docId__": 8664, + "__docId__": 8683, "kind": "member", "name": "bindTexture", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170862,7 +171421,7 @@ } }, { - "__docId__": 8665, + "__docId__": 8684, "kind": "member", "name": "bindArray", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170899,7 +171458,7 @@ } }, { - "__docId__": 8666, + "__docId__": 8685, "kind": "member", "name": "pass", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170930,7 +171489,7 @@ } }, { - "__docId__": 8667, + "__docId__": 8686, "kind": "member", "name": "shadowViewMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170961,7 +171520,7 @@ } }, { - "__docId__": 8668, + "__docId__": 8687, "kind": "member", "name": "shadowProjMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -170992,7 +171551,7 @@ } }, { - "__docId__": 8669, + "__docId__": 8688, "kind": "member", "name": "pickViewMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171023,7 +171582,7 @@ } }, { - "__docId__": 8670, + "__docId__": 8689, "kind": "member", "name": "pickProjMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171054,7 +171613,7 @@ } }, { - "__docId__": 8671, + "__docId__": 8690, "kind": "member", "name": "pickZNear", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171086,7 +171645,7 @@ } }, { - "__docId__": 8672, + "__docId__": 8691, "kind": "member", "name": "pickZFar", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171118,7 +171677,7 @@ } }, { - "__docId__": 8673, + "__docId__": 8692, "kind": "member", "name": "pickInvisible", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171149,7 +171708,7 @@ } }, { - "__docId__": 8674, + "__docId__": 8693, "kind": "member", "name": "pickElementsCount", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171180,7 +171739,7 @@ } }, { - "__docId__": 8675, + "__docId__": 8694, "kind": "member", "name": "pickElementsOffset", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171211,7 +171770,7 @@ } }, { - "__docId__": 8676, + "__docId__": 8695, "kind": "member", "name": "lineWidth", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171242,7 +171801,7 @@ } }, { - "__docId__": 8677, + "__docId__": 8696, "kind": "member", "name": "snapPickLayerParams", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171261,7 +171820,7 @@ } }, { - "__docId__": 8678, + "__docId__": 8697, "kind": "member", "name": "snapPickLayerNumber", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171280,7 +171839,7 @@ } }, { - "__docId__": 8679, + "__docId__": 8698, "kind": "member", "name": "snapPickCoordinateScale", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171299,7 +171858,7 @@ } }, { - "__docId__": 8680, + "__docId__": 8699, "kind": "member", "name": "snapPickOrigin", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171318,7 +171877,7 @@ } }, { - "__docId__": 8681, + "__docId__": 8700, "kind": "method", "name": "getRTCViewMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171350,7 +171909,7 @@ } }, { - "__docId__": 8682, + "__docId__": 8701, "kind": "method", "name": "getRTCPickViewMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171382,7 +171941,7 @@ } }, { - "__docId__": 8683, + "__docId__": 8702, "kind": "method", "name": "_getNewMat", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -171403,7 +171962,7 @@ } }, { - "__docId__": 8684, + "__docId__": 8703, "kind": "file", "name": "src/viewer/scene/webgl/PickResult.js", "content": "/**\n * @desc Pick result returned by {@link Scene#pick}.\n *\n */\nclass PickResult {\n\n /**\n * @private\n */\n constructor() {\n\n /**\n * Picked entity.\n * Null when no entity was picked.\n * @property entity\n * @type {Entity|*}\n */\n this.entity = null;\n\n /**\n * Type of primitive that was picked - usually \"triangle\".\n * Null when no primitive was picked.\n * @property primitive\n * @type {String}\n */\n this.primitive = null;\n\n /**\n * Index of primitive that was picked.\n * -1 when no entity was picked.\n * @property primIndex\n * @type {number}\n */\n this.primIndex = -1;\n\n /**\n * True when the picked surface position is full precision.\n * When false, the picked surface position should be regarded as approximate.\n * Full-precision surface picking is performed with the {@link Scene#pick} method's ````pickSurfacePrecision```` option.\n * @property pickSurfacePrecision\n * @type {Boolean}\n */\n this.pickSurfacePrecision = false;\n\n /**\n * True when picked from touch input, else false when from mouse input.\n * @type {boolean}\n */\n this.touchInput = false;\n\n /**\n * True when snapped to nearest edge.\n * @type {boolean}\n */\n this.snappedToEdge = false;\n\n /**\n * True when snapped to nearest vertex.\n * @type {boolean}\n */\n this.snappedToVertex = false;\n\n this._origin = new Float64Array([0, 0, 0]);\n this._direction = new Float64Array([0, 0, 0]);\n this._indices = new Int32Array(3);\n this._localPos = new Float64Array([0, 0, 0]);\n this._worldPos = new Float64Array([0, 0, 0]);\n this._viewPos = new Float64Array([0, 0, 0]);\n this._canvasPos = new Int16Array([0, 0]);\n this._snappedCanvasPos = new Int16Array([0, 0]);\n this._bary = new Float64Array([0, 0, 0]);\n this._worldNormal = new Float64Array([0, 0, 0]);\n this._uv = new Float64Array([0, 0]);\n\n this.reset();\n }\n\n /**\n * Canvas pick coordinates.\n * @property canvasPos\n * @type {Number[]}\n */\n get canvasPos() {\n return this._gotCanvasPos ? this._canvasPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set canvasPos(value) {\n if (value) {\n this._canvasPos[0] = value[0];\n this._canvasPos[1] = value[1];\n this._gotCanvasPos = true;\n } else {\n this._gotCanvasPos = false;\n }\n }\n\n /**\n * World-space 3D ray origin when raypicked.\n * @property origin\n * @type {Number[]}\n */\n get origin() {\n return this._gotOrigin ? this._origin : null;\n }\n\n /**\n * @private\n * @param value\n */\n set origin(value) {\n if (value) {\n this._origin[0] = value[0];\n this._origin[1] = value[1];\n this._origin[2] = value[2];\n this._gotOrigin = true;\n } else {\n this._gotOrigin = false;\n }\n }\n\n /**\n * World-space 3D ray direction when raypicked.\n * @property direction\n * @type {Number[]}\n */\n get direction() {\n return this._gotDirection ? this._direction : null;\n }\n\n /**\n * @private\n * @param value\n */\n set direction(value) {\n if (value) {\n this._direction[0] = value[0];\n this._direction[1] = value[1];\n this._direction[2] = value[2];\n this._gotDirection = true;\n } else {\n this._gotDirection = false;\n }\n }\n \n /**\n * Picked triangle's vertex indices.\n * @property indices\n * @type {Int32Array}\n */\n get indices() {\n return this.entity && this._gotIndices ? this._indices : null;\n }\n\n /**\n * @private\n * @param value\n */\n set indices(value) {\n if (value) {\n this._indices[0] = value[0];\n this._indices[1] = value[1];\n this._indices[2] = value[2];\n this._gotIndices = true;\n } else {\n this._gotIndices = false;\n }\n }\n\n /**\n * Picked Local-space point.\n * @property localPos\n * @type {Number[]}\n */\n get localPos() {\n return this.entity && this._gotLocalPos ? this._localPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set localPos(value) {\n if (value) {\n this._localPos[0] = value[0];\n this._localPos[1] = value[1];\n this._localPos[2] = value[2];\n this._gotLocalPos = true;\n } else {\n this._gotLocalPos = false;\n }\n }\n\n /**\n * Canvas cursor coordinates, snapped when snap picking, otherwise same as {@link PickResult#pointerPos}.\n * @property snappedCanvasPos\n * @type {Number[]}\n */\n get snappedCanvasPos() {\n return this._gotSnappedCanvasPos ? this._snappedCanvasPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set snappedCanvasPos(value) {\n if (value) {\n this._snappedCanvasPos[0] = value[0];\n this._snappedCanvasPos[1] = value[1];\n this._gotSnappedCanvasPos = true;\n } else {\n this._gotSnappedCanvasPos = false;\n }\n }\n\n /**\n * Picked World-space point.\n * @property worldPos\n * @type {Number[]}\n */\n get worldPos() {\n return this._gotWorldPos ? this._worldPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set worldPos(value) {\n if (value) {\n this._worldPos[0] = value[0];\n this._worldPos[1] = value[1];\n this._worldPos[2] = value[2];\n this._gotWorldPos = true;\n } else {\n this._gotWorldPos = false;\n }\n }\n\n /**\n * Picked View-space point.\n * @property viewPos\n * @type {Number[]}\n */\n get viewPos() {\n return this.entity && this._gotViewPos ? this._viewPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set viewPos(value) {\n if (value) {\n this._viewPos[0] = value[0];\n this._viewPos[1] = value[1];\n this._viewPos[2] = value[2];\n this._gotViewPos = true;\n } else {\n this._gotViewPos = false;\n }\n }\n\n /**\n * Barycentric coordinate within picked triangle.\n * @property bary\n * @type {Number[]}\n */\n get bary() {\n return this.entity && this._gotBary ? this._bary : null;\n }\n\n /**\n * @private\n * @param value\n */\n set bary(value) {\n if (value) {\n this._bary[0] = value[0];\n this._bary[1] = value[1];\n this._bary[2] = value[2];\n this._gotBary = true;\n } else {\n this._gotBary = false;\n }\n }\n\n /**\n * Normal vector at picked position on surface.\n * @property worldNormal\n * @type {Number[]}\n */\n get worldNormal() {\n return this.entity && this._gotWorldNormal ? this._worldNormal : null;\n }\n\n /**\n * @private\n * @param value\n */\n set worldNormal(value) {\n if (value) {\n this._worldNormal[0] = value[0];\n this._worldNormal[1] = value[1];\n this._worldNormal[2] = value[2];\n this._gotWorldNormal = true;\n } else {\n this._gotWorldNormal = false;\n }\n }\n\n /**\n * UV coordinates at picked position on surface.\n * @property uv\n * @type {Number[]}\n */\n get uv() {\n return this.entity && this._gotUV ? this._uv : null;\n }\n\n /**\n * @private\n * @param value\n */\n set uv(value) {\n if (value) {\n this._uv[0] = value[0];\n this._uv[1] = value[1];\n this._gotUV = true;\n } else {\n this._gotUV = false;\n }\n }\n\n /**\n * True if snapped to edge or vertex.\n * @returns {boolean}\n */\n get snapped() {\n return this.snappedToEdge || this.snappedToVertex;\n }\n\n /**\n * @private\n */\n reset() {\n this.entity = null;\n this.primIndex = -1;\n this.primitive = null;\n this.pickSurfacePrecision = false;\n this._gotCanvasPos = false;\n this._gotSnappedCanvasPos = false;\n this._gotOrigin = false;\n this._gotDirection = false;\n this._gotIndices = false;\n this._gotLocalPos = false;\n this._gotWorldPos = false;\n this._gotViewPos = false;\n this._gotBary = false;\n this._gotWorldNormal = false;\n this._gotUV = false;\n this.touchInput = false;\n this.snappedToEdge = false;\n this.snappedToVertex = false;\n }\n}\n\nexport {PickResult};", @@ -171414,7 +171973,7 @@ "lineNumber": 1 }, { - "__docId__": 8685, + "__docId__": 8704, "kind": "class", "name": "PickResult", "memberof": "src/viewer/scene/webgl/PickResult.js", @@ -171429,7 +171988,7 @@ "interface": false }, { - "__docId__": 8686, + "__docId__": 8705, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171443,7 +172002,7 @@ "ignore": true }, { - "__docId__": 8687, + "__docId__": 8706, "kind": "member", "name": "entity", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171475,7 +172034,7 @@ } }, { - "__docId__": 8688, + "__docId__": 8707, "kind": "member", "name": "primitive", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171506,7 +172065,7 @@ } }, { - "__docId__": 8689, + "__docId__": 8708, "kind": "member", "name": "primIndex", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171537,7 +172096,7 @@ } }, { - "__docId__": 8690, + "__docId__": 8709, "kind": "member", "name": "pickSurfacePrecision", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171568,7 +172127,7 @@ } }, { - "__docId__": 8691, + "__docId__": 8710, "kind": "member", "name": "touchInput", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171587,7 +172146,7 @@ } }, { - "__docId__": 8692, + "__docId__": 8711, "kind": "member", "name": "snappedToEdge", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171606,7 +172165,7 @@ } }, { - "__docId__": 8693, + "__docId__": 8712, "kind": "member", "name": "snappedToVertex", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171625,7 +172184,7 @@ } }, { - "__docId__": 8694, + "__docId__": 8713, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171643,7 +172202,7 @@ } }, { - "__docId__": 8695, + "__docId__": 8714, "kind": "member", "name": "_direction", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171661,7 +172220,7 @@ } }, { - "__docId__": 8696, + "__docId__": 8715, "kind": "member", "name": "_indices", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171679,7 +172238,7 @@ } }, { - "__docId__": 8697, + "__docId__": 8716, "kind": "member", "name": "_localPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171697,7 +172256,7 @@ } }, { - "__docId__": 8698, + "__docId__": 8717, "kind": "member", "name": "_worldPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171715,7 +172274,7 @@ } }, { - "__docId__": 8699, + "__docId__": 8718, "kind": "member", "name": "_viewPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171733,7 +172292,7 @@ } }, { - "__docId__": 8700, + "__docId__": 8719, "kind": "member", "name": "_canvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171751,7 +172310,7 @@ } }, { - "__docId__": 8701, + "__docId__": 8720, "kind": "member", "name": "_snappedCanvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171769,7 +172328,7 @@ } }, { - "__docId__": 8702, + "__docId__": 8721, "kind": "member", "name": "_bary", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171787,7 +172346,7 @@ } }, { - "__docId__": 8703, + "__docId__": 8722, "kind": "member", "name": "_worldNormal", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171805,7 +172364,7 @@ } }, { - "__docId__": 8704, + "__docId__": 8723, "kind": "member", "name": "_uv", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171823,7 +172382,7 @@ } }, { - "__docId__": 8705, + "__docId__": 8724, "kind": "get", "name": "canvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171856,7 +172415,7 @@ } }, { - "__docId__": 8706, + "__docId__": 8725, "kind": "set", "name": "canvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171882,7 +172441,7 @@ "ignore": true }, { - "__docId__": 8707, + "__docId__": 8726, "kind": "member", "name": "_gotCanvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171900,7 +172459,7 @@ } }, { - "__docId__": 8709, + "__docId__": 8728, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171933,7 +172492,7 @@ } }, { - "__docId__": 8710, + "__docId__": 8729, "kind": "set", "name": "origin", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171959,7 +172518,7 @@ "ignore": true }, { - "__docId__": 8711, + "__docId__": 8730, "kind": "member", "name": "_gotOrigin", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -171977,7 +172536,7 @@ } }, { - "__docId__": 8713, + "__docId__": 8732, "kind": "get", "name": "direction", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172010,7 +172569,7 @@ } }, { - "__docId__": 8714, + "__docId__": 8733, "kind": "set", "name": "direction", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172036,7 +172595,7 @@ "ignore": true }, { - "__docId__": 8715, + "__docId__": 8734, "kind": "member", "name": "_gotDirection", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172054,7 +172613,7 @@ } }, { - "__docId__": 8717, + "__docId__": 8736, "kind": "get", "name": "indices", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172087,7 +172646,7 @@ } }, { - "__docId__": 8718, + "__docId__": 8737, "kind": "set", "name": "indices", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172113,7 +172672,7 @@ "ignore": true }, { - "__docId__": 8719, + "__docId__": 8738, "kind": "member", "name": "_gotIndices", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172131,7 +172690,7 @@ } }, { - "__docId__": 8721, + "__docId__": 8740, "kind": "get", "name": "localPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172164,7 +172723,7 @@ } }, { - "__docId__": 8722, + "__docId__": 8741, "kind": "set", "name": "localPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172190,7 +172749,7 @@ "ignore": true }, { - "__docId__": 8723, + "__docId__": 8742, "kind": "member", "name": "_gotLocalPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172208,7 +172767,7 @@ } }, { - "__docId__": 8725, + "__docId__": 8744, "kind": "get", "name": "snappedCanvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172241,7 +172800,7 @@ } }, { - "__docId__": 8726, + "__docId__": 8745, "kind": "set", "name": "snappedCanvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172267,7 +172826,7 @@ "ignore": true }, { - "__docId__": 8727, + "__docId__": 8746, "kind": "member", "name": "_gotSnappedCanvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172285,7 +172844,7 @@ } }, { - "__docId__": 8729, + "__docId__": 8748, "kind": "get", "name": "worldPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172318,7 +172877,7 @@ } }, { - "__docId__": 8730, + "__docId__": 8749, "kind": "set", "name": "worldPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172344,7 +172903,7 @@ "ignore": true }, { - "__docId__": 8731, + "__docId__": 8750, "kind": "member", "name": "_gotWorldPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172362,7 +172921,7 @@ } }, { - "__docId__": 8733, + "__docId__": 8752, "kind": "get", "name": "viewPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172395,7 +172954,7 @@ } }, { - "__docId__": 8734, + "__docId__": 8753, "kind": "set", "name": "viewPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172421,7 +172980,7 @@ "ignore": true }, { - "__docId__": 8735, + "__docId__": 8754, "kind": "member", "name": "_gotViewPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172439,7 +172998,7 @@ } }, { - "__docId__": 8737, + "__docId__": 8756, "kind": "get", "name": "bary", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172472,7 +173031,7 @@ } }, { - "__docId__": 8738, + "__docId__": 8757, "kind": "set", "name": "bary", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172498,7 +173057,7 @@ "ignore": true }, { - "__docId__": 8739, + "__docId__": 8758, "kind": "member", "name": "_gotBary", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172516,7 +173075,7 @@ } }, { - "__docId__": 8741, + "__docId__": 8760, "kind": "get", "name": "worldNormal", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172549,7 +173108,7 @@ } }, { - "__docId__": 8742, + "__docId__": 8761, "kind": "set", "name": "worldNormal", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172575,7 +173134,7 @@ "ignore": true }, { - "__docId__": 8743, + "__docId__": 8762, "kind": "member", "name": "_gotWorldNormal", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172593,7 +173152,7 @@ } }, { - "__docId__": 8745, + "__docId__": 8764, "kind": "get", "name": "uv", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172626,7 +173185,7 @@ } }, { - "__docId__": 8746, + "__docId__": 8765, "kind": "set", "name": "uv", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172652,7 +173211,7 @@ "ignore": true }, { - "__docId__": 8747, + "__docId__": 8766, "kind": "member", "name": "_gotUV", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172670,7 +173229,7 @@ } }, { - "__docId__": 8749, + "__docId__": 8768, "kind": "get", "name": "snapped", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172702,7 +173261,7 @@ } }, { - "__docId__": 8750, + "__docId__": 8769, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -172718,7 +173277,7 @@ "return": null }, { - "__docId__": 8769, + "__docId__": 8788, "kind": "file", "name": "src/viewer/scene/webgl/Pickable.js", "content": "/**\n * @desc A pickable {@link Scene} element.\n *\n * @interface\n * @abstract\n * @private\n */\nclass Pickable {\n\n /**\n * Called by xeokit to get if it's possible to pick a triangle on the surface of this Drawable.\n */\n canPickTriangle() {\n }\n\n /**\n * Picks a triangle on this Pickable.\n */\n drawPickTriangles(renderFlags, frameCtx) {\n }\n\n /**\n * Given a {@link PickResult} that contains a {@link PickResult#primIndex}, which indicates that a primitive was picked on the Pickable, then add more information to the PickResult about the picked position on the surface of the Pickable.\n *\n * Architecturally, this delegates collection of that Pickable-specific info to the Pickable, allowing it to provide whatever info it's able to.\n *\n * @param {PickResult} pickResult The PickResult to augment with pick intersection information specific to this Mesh.\n * @param [pickResult.primIndex] Index of the primitive that was picked on this Mesh.\n * @param [pickResult.canvasPos] Canvas coordinates, provided when picking through the Canvas.\n * @param [pickResult.origin] World-space 3D ray origin, when ray picking.\n * @param [pickResult.direction] World-space 3D ray direction, provided when ray picking.\n */\n pickTriangleSurface(pickResult) {\n }\n\n /**\n * Called by xeokit to get if it's possible to pick a 3D point on the surface of this Pickable.\n * Returns false if canPickTriangle returns true, and vice-versa.\n */\n canPickWorldPos() {\n }\n\n /**\n * Renders color-encoded fragment depths of this Pickable.\n * @param frameCtx\n */\n drawPickDepths(renderFlags, frameCtx) {\n }\n\n /**\n * Delegates an {@link Entity} as representing what was actually picked in place of this Pickable.\n * @returns {PerformanceNode}\n */\n delegatePickedEntity() {\n return this.parent;\n }\n\n /**\n * 3D origin of the Pickable's vertex positions, if they are in relative-to-center (RTC) coordinates.\n *\n * When this is defined, then the positions are RTC, which means that they are relative to this position.\n *\n * @type {Float64Array}\n */\n get origin() {\n }\n}\n\nexport {Pickable};", @@ -172729,7 +173288,7 @@ "lineNumber": 1 }, { - "__docId__": 8770, + "__docId__": 8789, "kind": "class", "name": "Pickable", "memberof": "src/viewer/scene/webgl/Pickable.js", @@ -172746,7 +173305,7 @@ "ignore": true }, { - "__docId__": 8771, + "__docId__": 8790, "kind": "method", "name": "canPickTriangle", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -172761,7 +173320,7 @@ "return": null }, { - "__docId__": 8772, + "__docId__": 8791, "kind": "method", "name": "drawPickTriangles", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -172789,7 +173348,7 @@ "return": null }, { - "__docId__": 8773, + "__docId__": 8792, "kind": "method", "name": "pickTriangleSurface", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -172855,7 +173414,7 @@ "return": null }, { - "__docId__": 8774, + "__docId__": 8793, "kind": "method", "name": "canPickWorldPos", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -172870,7 +173429,7 @@ "return": null }, { - "__docId__": 8775, + "__docId__": 8794, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -172896,7 +173455,7 @@ "return": null }, { - "__docId__": 8776, + "__docId__": 8795, "kind": "method", "name": "delegatePickedEntity", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -172924,7 +173483,7 @@ "params": [] }, { - "__docId__": 8777, + "__docId__": 8796, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -172945,7 +173504,7 @@ } }, { - "__docId__": 8778, + "__docId__": 8797, "kind": "file", "name": "src/viewer/scene/webgl/Program.js", "content": "import {Map} from \"../utils/Map.js\";\nimport {Shader} from \"./Shader.js\";\nimport {Sampler} from \"./Sampler.js\";\nimport {Attribute} from \"./Attribute.js\";\n\nconst ids = new Map({});\n\nfunction joinSansComments(srcLines) {\n const src = [];\n let line;\n let n;\n for (let i = 0, len = srcLines.length; i < len; i++) {\n line = srcLines[i];\n n = line.indexOf(\"/\");\n if (n > 0) {\n if (line.charAt(n + 1) === \"/\") {\n line = line.substring(0, n);\n }\n }\n src.push(line);\n }\n return src.join(\"\\n\");\n}\n\nfunction logErrors(errors) {\n console.error(errors.join(\"\\n\"));\n}\n\n/**\n * @desc Represents a WebGL program.\n * @private\n */\nclass Program {\n\n constructor(gl, shaderSource) {\n this.id = ids.addItem({});\n this.source = shaderSource;\n this.init(gl);\n }\n\n init(gl) {\n this.gl = gl;\n this.allocated = false;\n this.compiled = false;\n this.linked = false;\n this.validated = false;\n this.errors = null;\n this.uniforms = {};\n this.samplers = {};\n this.attributes = {};\n this._vertexShader = new Shader(gl, gl.VERTEX_SHADER, joinSansComments(this.source.vertex));\n this._fragmentShader = new Shader(gl, gl.FRAGMENT_SHADER, joinSansComments(this.source.fragment));\n if (!this._vertexShader.allocated) {\n this.errors = [\"Vertex shader failed to allocate\"].concat(this._vertexShader.errors);\n logErrors(this.errors);\n return;\n }\n if (!this._fragmentShader.allocated) {\n this.errors = [\"Fragment shader failed to allocate\"].concat(this._fragmentShader.errors);\n logErrors(this.errors);\n return;\n }\n this.allocated = true;\n if (!this._vertexShader.compiled) {\n this.errors = [\"Vertex shader failed to compile\"].concat(this._vertexShader.errors);\n logErrors(this.errors);\n return;\n }\n if (!this._fragmentShader.compiled) {\n this.errors = [\"Fragment shader failed to compile\"].concat(this._fragmentShader.errors);\n logErrors(this.errors);\n return;\n }\n this.compiled = true;\n let a;\n let i;\n let u;\n let uName;\n let location;\n this.handle = gl.createProgram();\n if (!this.handle) {\n this.errors = [\"Failed to allocate program\"];\n return;\n }\n gl.attachShader(this.handle, this._vertexShader.handle);\n gl.attachShader(this.handle, this._fragmentShader.handle);\n gl.linkProgram(this.handle);\n this.linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n // HACK: Disable validation temporarily\n // Perhaps we should defer validation until render-time, when the program has values set for all inputs?\n this.validated = true;\n if (!this.linked || !this.validated) {\n this.errors = [];\n this.errors.push(\"\");\n this.errors.push(gl.getProgramInfoLog(this.handle));\n this.errors.push(\"\\nVertex shader:\\n\");\n this.errors = this.errors.concat(this.source.vertex);\n this.errors.push(\"\\nFragment shader:\\n\");\n this.errors = this.errors.concat(this.source.fragment);\n logErrors(this.errors);\n return;\n }\n const numUniforms = gl.getProgramParameter(this.handle, gl.ACTIVE_UNIFORMS);\n for (i = 0; i < numUniforms; ++i) {\n u = gl.getActiveUniform(this.handle, i);\n if (u) {\n uName = u.name;\n if (uName[uName.length - 1] === \"\\u0000\") {\n uName = uName.substr(0, uName.length - 1);\n }\n location = gl.getUniformLocation(this.handle, uName);\n if ((u.type === gl.SAMPLER_2D) || (u.type === gl.SAMPLER_CUBE) || (u.type === 35682)) {\n this.samplers[uName] = new Sampler(gl, location);\n } else if (gl instanceof WebGL2RenderingContext && (u.type === gl.UNSIGNED_INT_SAMPLER_2D || u.type === gl.INT_SAMPLER_2D)) {\n this.samplers[uName] = new Sampler(gl, location);\n } else {\n this.uniforms[uName] = location;\n }\n }\n }\n const numAttribs = gl.getProgramParameter(this.handle, gl.ACTIVE_ATTRIBUTES);\n for (i = 0; i < numAttribs; i++) {\n a = gl.getActiveAttrib(this.handle, i);\n if (a) {\n location = gl.getAttribLocation(this.handle, a.name);\n this.attributes[a.name] = new Attribute(gl, location);\n }\n }\n this.allocated = true;\n }\n\n bind() {\n if (!this.allocated) {\n return;\n }\n this.gl.useProgram(this.handle);\n }\n\n getLocation(name) {\n if (!this.allocated) {\n return;\n }\n return this.uniforms[name];\n }\n\n getAttribute(name) {\n if (!this.allocated) {\n return;\n }\n return this.attributes[name];\n }\n\n bindTexture(name, texture, unit) {\n if (!this.allocated) {\n return false;\n }\n const sampler = this.samplers[name];\n if (sampler) {\n return sampler.bindTexture(texture, unit);\n } else {\n return false;\n }\n }\n\n destroy() {\n if (!this.allocated) {\n return;\n }\n ids.removeItem(this.id);\n this.gl.deleteProgram(this.handle);\n this.gl.deleteShader(this._vertexShader.handle);\n this.gl.deleteShader(this._fragmentShader.handle);\n this.handle = null;\n this.attributes = null;\n this.uniforms = null;\n this.samplers = null;\n this.allocated = false;\n }\n}\n\nexport {Program};", @@ -172956,7 +173515,7 @@ "lineNumber": 1 }, { - "__docId__": 8779, + "__docId__": 8798, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/webgl/Program.js", @@ -172977,7 +173536,7 @@ "ignore": true }, { - "__docId__": 8780, + "__docId__": 8799, "kind": "function", "name": "joinSansComments", "memberof": "src/viewer/scene/webgl/Program.js", @@ -173008,7 +173567,7 @@ "ignore": true }, { - "__docId__": 8781, + "__docId__": 8800, "kind": "function", "name": "logErrors", "memberof": "src/viewer/scene/webgl/Program.js", @@ -173035,7 +173594,7 @@ "ignore": true }, { - "__docId__": 8782, + "__docId__": 8801, "kind": "class", "name": "Program", "memberof": "src/viewer/scene/webgl/Program.js", @@ -173051,7 +173610,7 @@ "ignore": true }, { - "__docId__": 8783, + "__docId__": 8802, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173065,7 +173624,7 @@ "undocument": true }, { - "__docId__": 8784, + "__docId__": 8803, "kind": "member", "name": "id", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173082,7 +173641,7 @@ } }, { - "__docId__": 8785, + "__docId__": 8804, "kind": "member", "name": "source", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173099,7 +173658,7 @@ } }, { - "__docId__": 8786, + "__docId__": 8805, "kind": "method", "name": "init", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173122,7 +173681,7 @@ "return": null }, { - "__docId__": 8787, + "__docId__": 8806, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173139,7 +173698,7 @@ } }, { - "__docId__": 8788, + "__docId__": 8807, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173156,7 +173715,7 @@ } }, { - "__docId__": 8789, + "__docId__": 8808, "kind": "member", "name": "compiled", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173173,7 +173732,7 @@ } }, { - "__docId__": 8790, + "__docId__": 8809, "kind": "member", "name": "linked", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173190,7 +173749,7 @@ } }, { - "__docId__": 8791, + "__docId__": 8810, "kind": "member", "name": "validated", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173207,7 +173766,7 @@ } }, { - "__docId__": 8792, + "__docId__": 8811, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173224,7 +173783,7 @@ } }, { - "__docId__": 8793, + "__docId__": 8812, "kind": "member", "name": "uniforms", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173241,7 +173800,7 @@ } }, { - "__docId__": 8794, + "__docId__": 8813, "kind": "member", "name": "samplers", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173258,7 +173817,7 @@ } }, { - "__docId__": 8795, + "__docId__": 8814, "kind": "member", "name": "attributes", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173275,7 +173834,7 @@ } }, { - "__docId__": 8796, + "__docId__": 8815, "kind": "member", "name": "_vertexShader", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173293,7 +173852,7 @@ } }, { - "__docId__": 8797, + "__docId__": 8816, "kind": "member", "name": "_fragmentShader", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173311,7 +173870,7 @@ } }, { - "__docId__": 8804, + "__docId__": 8823, "kind": "member", "name": "handle", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173328,7 +173887,7 @@ } }, { - "__docId__": 8812, + "__docId__": 8831, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173344,7 +173903,7 @@ "return": null }, { - "__docId__": 8813, + "__docId__": 8832, "kind": "method", "name": "getLocation", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173371,7 +173930,7 @@ } }, { - "__docId__": 8814, + "__docId__": 8833, "kind": "method", "name": "getAttribute", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173398,7 +173957,7 @@ } }, { - "__docId__": 8815, + "__docId__": 8834, "kind": "method", "name": "bindTexture", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173437,7 +173996,7 @@ } }, { - "__docId__": 8816, + "__docId__": 8835, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -173453,7 +174012,7 @@ "return": null }, { - "__docId__": 8822, + "__docId__": 8841, "kind": "file", "name": "src/viewer/scene/webgl/RenderBuffer.js", "content": "/**\n * @desc Represents a WebGL render buffer.\n * @private\n */\nclass RenderBuffer {\n\n constructor(canvas, gl, options) {\n options = options || {};\n /** @type {WebGL2RenderingContext} */\n this.gl = gl;\n this.allocated = false;\n this.canvas = canvas;\n this.buffer = null;\n this.bound = false;\n this.size = options.size;\n this._hasDepthTexture = !!options.depthTexture;\n }\n\n setSize(size) {\n this.size = size;\n }\n\n webglContextRestored(gl) {\n this.gl = gl;\n this.buffer = null;\n this.allocated = false;\n this.bound = false;\n }\n\n bind(...internalformats) {\n this._touch(...internalformats);\n if (this.bound) {\n return;\n }\n const gl = this.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.buffer.framebuf);\n this.bound = true;\n }\n\n /**\n * Create and specify a WebGL texture image.\n *\n * @param { number } width \n * @param { number } height \n * @param { GLenum } [internalformat=null] \n *\n * @returns { WebGLTexture }\n */\n createTexture(width, height, internalformat = null) {\n const gl = this.gl;\n\n const colorTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, colorTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n if (internalformat) {\n gl.texStorage2D(gl.TEXTURE_2D, 1, internalformat, width, height);\n } else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n\n return colorTexture;\n }\n\n /**\n *\n * @param {number[]} [internalformats=[]]\n * @returns\n */\n _touch(...internalformats) {\n\n let width;\n let height;\n const gl = this.gl;\n\n if (this.size) {\n width = this.size[0];\n height = this.size[1];\n\n } else {\n width = gl.drawingBufferWidth;\n height = gl.drawingBufferHeight;\n }\n\n if (this.buffer) {\n\n if (this.buffer.width === width && this.buffer.height === height) {\n return;\n\n } else {\n this.buffer.textures.forEach(texture => gl.deleteTexture(texture));\n gl.deleteFramebuffer(this.buffer.framebuf);\n gl.deleteRenderbuffer(this.buffer.renderbuf);\n }\n }\n\n const colorTextures = [];\n if (internalformats.length > 0) {\n colorTextures.push(...internalformats.map(internalformat => this.createTexture(width, height, internalformat)));\n } else {\n colorTextures.push(this.createTexture(width, height));\n }\n\n let depthTexture;\n\n if (this._hasDepthTexture) {\n depthTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, depthTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT32F, width, height, 0, gl.DEPTH_COMPONENT, gl.FLOAT, null);\n }\n\n const renderbuf = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuf);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT32F, width, height);\n\n const framebuf = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuf);\n for (let i = 0; i < colorTextures.length; i++) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.TEXTURE_2D, colorTextures[i], 0);\n }\n if (internalformats.length > 0) {\n gl.drawBuffers(colorTextures.map((_, i) => gl.COLOR_ATTACHMENT0 + i));\n }\n\n if (this._hasDepthTexture) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture, 0);\n } else {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuf);\n }\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n // Verify framebuffer is OK\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuf);\n if (!gl.isFramebuffer(framebuf)) {\n throw \"Invalid framebuffer\";\n }\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\n switch (status) {\n\n case gl.FRAMEBUFFER_COMPLETE:\n break;\n\n case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n throw \"Incomplete framebuffer: FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";\n\n case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n throw \"Incomplete framebuffer: FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";\n\n case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n throw \"Incomplete framebuffer: FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";\n\n case gl.FRAMEBUFFER_UNSUPPORTED:\n throw \"Incomplete framebuffer: FRAMEBUFFER_UNSUPPORTED\";\n\n default:\n throw \"Incomplete framebuffer: \" + status;\n }\n\n this.buffer = {\n framebuf: framebuf,\n renderbuf: renderbuf,\n texture: colorTextures[0],\n textures: colorTextures,\n depthTexture: depthTexture,\n width: width,\n height: height\n };\n\n this.bound = false;\n }\n\n clear() {\n if (!this.bound) {\n throw \"Render buffer not bound\";\n }\n const gl = this.gl;\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n }\n\n read(pickX, pickY, glFormat = null, glType = null, arrayType = Uint8Array, arrayMultiplier = 4, colorBufferIndex = 0) {\n const x = pickX;\n const y = this.buffer.height ? (this.buffer.height - pickY - 1) : (this.gl.drawingBufferHeight - pickY);\n const pix = new arrayType(arrayMultiplier);\n const gl = this.gl;\n gl.readBuffer(gl.COLOR_ATTACHMENT0 + colorBufferIndex);\n gl.readPixels(x, y, 1, 1, glFormat || gl.RGBA, glType || gl.UNSIGNED_BYTE, pix, 0);\n return pix;\n }\n\n readArray(glFormat = null, glType = null, arrayType = Uint8Array, arrayMultiplier = 4, colorBufferIndex = 0) {\n const pix = new arrayType(this.buffer.width*this.buffer.height * arrayMultiplier);\n const gl = this.gl;\n gl.readBuffer(gl.COLOR_ATTACHMENT0 + colorBufferIndex);\n gl.readPixels(0, 0, this.buffer.width, this.buffer.height, glFormat || gl.RGBA, glType || gl.UNSIGNED_BYTE, pix, 0);\n return pix;\n }\n\n /**\n * Returns an HTMLCanvas containing the contents of the RenderBuffer as an image.\n *\n * - The HTMLCanvas has a CanvasRenderingContext2D.\n * - Expects the caller to draw more things on the HTMLCanvas (annotations etc).\n *\n * @returns {HTMLCanvasElement}\n */\n readImageAsCanvas() {\n const gl = this.gl;\n const imageDataCache = this._getImageDataCache();\n const pixelData = imageDataCache.pixelData;\n const canvas = imageDataCache.canvas;\n const imageData = imageDataCache.imageData;\n const context = imageDataCache.context;\n gl.readPixels(0, 0, this.buffer.width, this.buffer.height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);\n const width = this.buffer.width;\n const height = this.buffer.height;\n const halfHeight = height / 2 | 0; // the | 0 keeps the result an int\n const bytesPerRow = width * 4;\n const temp = new Uint8Array(width * 4);\n for (let y = 0; y < halfHeight; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n temp.set(pixelData.subarray(topOffset, topOffset + bytesPerRow));\n pixelData.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n pixelData.set(temp, bottomOffset);\n }\n imageData.data.set(pixelData);\n context.putImageData(imageData, 0, 0);\n return canvas;\n }\n\n readImage(params) {\n const gl = this.gl;\n const imageDataCache = this._getImageDataCache();\n const pixelData = imageDataCache.pixelData;\n const canvas = imageDataCache.canvas;\n const imageData = imageDataCache.imageData;\n const context = imageDataCache.context;\n const { width, height } = this.buffer;\n gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);\n imageData.data.set(pixelData);\n context.putImageData(imageData, 0, 0);\n\n // flip Y\n context.save();\n context.globalCompositeOperation = 'copy';\n context.scale(1, -1);\n context.drawImage(canvas, 0, -height, width, height);\n context.restore();\n\n let format = params.format || \"png\";\n if (format !== \"jpeg\" && format !== \"png\" && format !== \"bmp\") {\n console.error(\"Unsupported image format: '\" + format + \"' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'\");\n format = \"png\";\n }\n return canvas.toDataURL(`image/${format}`);\n }\n\n _getImageDataCache(type = Uint8Array, multiplier = 4) {\n\n const bufferWidth = this.buffer.width;\n const bufferHeight = this.buffer.height;\n\n let imageDataCache = this._imageDataCache;\n\n if (imageDataCache) {\n if (imageDataCache.width !== bufferWidth || imageDataCache.height !== bufferHeight) {\n this._imageDataCache = null;\n imageDataCache = null;\n }\n }\n\n if (!imageDataCache) {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n canvas.width = bufferWidth;\n canvas.height = bufferHeight;\n imageDataCache = {\n pixelData: new type(bufferWidth * bufferHeight * multiplier),\n canvas: canvas,\n context: context,\n imageData: context.createImageData(bufferWidth, bufferHeight),\n width: bufferWidth,\n height: bufferHeight\n };\n\n this._imageDataCache = imageDataCache;\n }\n imageDataCache.context.resetTransform(); // Prevents strange scale-accumulation effect with html2canvas\n return imageDataCache;\n }\n\n unbind() {\n const gl = this.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n this.bound = false;\n }\n\n getTexture(index = 0) {\n const self = this;\n return this._texture || (this._texture = {\n renderBuffer: this,\n bind: function (unit) {\n if (self.buffer && self.buffer.textures[index]) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, self.buffer.textures[index]);\n return true;\n }\n return false;\n },\n unbind: function (unit) {\n if (self.buffer && self.buffer.textures[index]) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, null);\n }\n }\n });\n }\n\n hasDepthTexture() {\n return this._hasDepthTexture;\n }\n\n getDepthTexture() {\n if (!this._hasDepthTexture) {\n return null;\n }\n const self = this;\n return this._depthTexture || (this._dethTexture = {\n renderBuffer: this,\n bind: function (unit) {\n if (self.buffer && self.buffer.depthTexture) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, self.buffer.depthTexture);\n return true;\n }\n return false;\n },\n unbind: function (unit) {\n if (self.buffer && self.buffer.depthTexture) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, null);\n }\n }\n });\n }\n\n destroy() {\n if (this.allocated) {\n const gl = this.gl;\n this.buffer.textures.forEach(texture => gl.deleteTexture(texture));\n gl.deleteTexture(this.buffer.depthTexture);\n gl.deleteFramebuffer(this.buffer.framebuf);\n gl.deleteRenderbuffer(this.buffer.renderbuf);\n this.allocated = false;\n this.buffer = null;\n this.bound = false;\n }\n this._imageDataCache = null;\n this._texture = null;\n this._depthTexture = null;\n }\n}\n\nexport {RenderBuffer};\n", @@ -173464,7 +174023,7 @@ "lineNumber": 1 }, { - "__docId__": 8823, + "__docId__": 8842, "kind": "class", "name": "RenderBuffer", "memberof": "src/viewer/scene/webgl/RenderBuffer.js", @@ -173480,7 +174039,7 @@ "ignore": true }, { - "__docId__": 8824, + "__docId__": 8843, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173494,7 +174053,7 @@ "undocument": true }, { - "__docId__": 8825, + "__docId__": 8844, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173513,7 +174072,7 @@ } }, { - "__docId__": 8826, + "__docId__": 8845, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173530,7 +174089,7 @@ } }, { - "__docId__": 8827, + "__docId__": 8846, "kind": "member", "name": "canvas", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173547,7 +174106,7 @@ } }, { - "__docId__": 8828, + "__docId__": 8847, "kind": "member", "name": "buffer", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173564,7 +174123,7 @@ } }, { - "__docId__": 8829, + "__docId__": 8848, "kind": "member", "name": "bound", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173581,7 +174140,7 @@ } }, { - "__docId__": 8830, + "__docId__": 8849, "kind": "member", "name": "size", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173598,7 +174157,7 @@ } }, { - "__docId__": 8831, + "__docId__": 8850, "kind": "member", "name": "_hasDepthTexture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173616,7 +174175,7 @@ } }, { - "__docId__": 8832, + "__docId__": 8851, "kind": "method", "name": "setSize", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173639,7 +174198,7 @@ "return": null }, { - "__docId__": 8834, + "__docId__": 8853, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173662,7 +174221,7 @@ "return": null }, { - "__docId__": 8839, + "__docId__": 8858, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173686,7 +174245,7 @@ "return": null }, { - "__docId__": 8841, + "__docId__": 8860, "kind": "method", "name": "createTexture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173747,7 +174306,7 @@ } }, { - "__docId__": 8842, + "__docId__": 8861, "kind": "method", "name": "_touch", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173782,7 +174341,7 @@ "return": null }, { - "__docId__": 8845, + "__docId__": 8864, "kind": "method", "name": "clear", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173798,7 +174357,7 @@ "return": null }, { - "__docId__": 8846, + "__docId__": 8865, "kind": "method", "name": "read", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173874,7 +174433,7 @@ } }, { - "__docId__": 8847, + "__docId__": 8866, "kind": "method", "name": "readArray", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173938,7 +174497,7 @@ } }, { - "__docId__": 8848, + "__docId__": 8867, "kind": "method", "name": "readImageAsCanvas", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173966,7 +174525,7 @@ "params": [] }, { - "__docId__": 8849, + "__docId__": 8868, "kind": "method", "name": "readImage", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -173993,7 +174552,7 @@ } }, { - "__docId__": 8850, + "__docId__": 8869, "kind": "method", "name": "_getImageDataCache", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174033,7 +174592,7 @@ } }, { - "__docId__": 8851, + "__docId__": 8870, "kind": "member", "name": "_imageDataCache", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174051,7 +174610,7 @@ } }, { - "__docId__": 8853, + "__docId__": 8872, "kind": "method", "name": "unbind", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174067,7 +174626,7 @@ "return": null }, { - "__docId__": 8855, + "__docId__": 8874, "kind": "method", "name": "getTexture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174097,7 +174656,7 @@ } }, { - "__docId__": 8856, + "__docId__": 8875, "kind": "method", "name": "hasDepthTexture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174117,7 +174676,7 @@ } }, { - "__docId__": 8857, + "__docId__": 8876, "kind": "method", "name": "getDepthTexture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174137,7 +174696,7 @@ } }, { - "__docId__": 8858, + "__docId__": 8877, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174153,7 +174712,7 @@ "return": null }, { - "__docId__": 8863, + "__docId__": 8882, "kind": "member", "name": "_texture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174171,7 +174730,7 @@ } }, { - "__docId__": 8864, + "__docId__": 8883, "kind": "member", "name": "_depthTexture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -174189,7 +174748,7 @@ } }, { - "__docId__": 8865, + "__docId__": 8884, "kind": "file", "name": "src/viewer/scene/webgl/RenderBufferManager.js", "content": "import {RenderBuffer} from \"./RenderBuffer.js\";\n\n/**\n * @private\n */\nclass RenderBufferManager {\n\n constructor(scene) {\n this.scene = scene;\n this._renderBuffersBasic = {};\n this._renderBuffersScaled = {};\n }\n\n getRenderBuffer(id, options) {\n const renderBuffers = (this.scene.canvas.resolutionScale === 1.0) ? this._renderBuffersBasic : this._renderBuffersScaled;\n let renderBuffer = renderBuffers[id];\n if (!renderBuffer) {\n renderBuffer = new RenderBuffer(this.scene.canvas.canvas, this.scene.canvas.gl, options);\n renderBuffers[id] = renderBuffer;\n }\n return renderBuffer;\n }\n\n destroy() {\n for (let id in this._renderBuffersBasic) {\n this._renderBuffersBasic[id].destroy();\n }\n for (let id in this._renderBuffersScaled) {\n this._renderBuffersScaled[id].destroy();\n }\n }\n}\n\nexport {RenderBufferManager};", @@ -174200,7 +174759,7 @@ "lineNumber": 1 }, { - "__docId__": 8866, + "__docId__": 8885, "kind": "class", "name": "RenderBufferManager", "memberof": "src/viewer/scene/webgl/RenderBufferManager.js", @@ -174216,7 +174775,7 @@ "ignore": true }, { - "__docId__": 8867, + "__docId__": 8886, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/RenderBufferManager.js~RenderBufferManager", @@ -174230,7 +174789,7 @@ "undocument": true }, { - "__docId__": 8868, + "__docId__": 8887, "kind": "member", "name": "scene", "memberof": "src/viewer/scene/webgl/RenderBufferManager.js~RenderBufferManager", @@ -174247,7 +174806,7 @@ } }, { - "__docId__": 8869, + "__docId__": 8888, "kind": "member", "name": "_renderBuffersBasic", "memberof": "src/viewer/scene/webgl/RenderBufferManager.js~RenderBufferManager", @@ -174265,7 +174824,7 @@ } }, { - "__docId__": 8870, + "__docId__": 8889, "kind": "member", "name": "_renderBuffersScaled", "memberof": "src/viewer/scene/webgl/RenderBufferManager.js~RenderBufferManager", @@ -174283,7 +174842,7 @@ } }, { - "__docId__": 8871, + "__docId__": 8890, "kind": "method", "name": "getRenderBuffer", "memberof": "src/viewer/scene/webgl/RenderBufferManager.js~RenderBufferManager", @@ -174316,7 +174875,7 @@ } }, { - "__docId__": 8872, + "__docId__": 8891, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/RenderBufferManager.js~RenderBufferManager", @@ -174332,7 +174891,7 @@ "return": null }, { - "__docId__": 8873, + "__docId__": 8892, "kind": "file", "name": "src/viewer/scene/webgl/RenderFlags.js", "content": "/**\n * Indicates what rendering needs to be done for the layers within a {@link Drawable}.\n *\n * Each Drawable has a RenderFlags in {@link Drawable#renderFlags}.\n *\n * Before rendering each frame, {@link Renderer} will call {@link Drawable#rebuildRenderFlags} on each {@link Drawable}.\n *\n * Then, when rendering a frame, Renderer will apply rendering passes to each Drawable according on what flags are set in {@link Drawable#renderFlags}.\n *\n * @private\n */\nclass RenderFlags {\n\n /**\n * @private\n */\n constructor() {\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate which layers are visible within the {@link Drawable}.\n *\n * This is a list of IDs of visible layers within the {@link Drawable}. The IDs will be whatever the\n * {@link Drawable} uses to identify its layers, usually integers.\n *\n * @property visibleLayers\n * @type {Number[]}\n */\n this.visibleLayers = [];\n\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate which {@link SectionPlane}s are active within each layer of the {@link Drawable}.\n *\n * Layout is as follows:\n *\n * ````[\n * false, false, true, // Layer 0, SectionPlanes 0, 1, 2\n * false, true, true, // Layer 1, SectionPlanes 0, 1, 2\n * true, false, true // Layer 2, SectionPlanes 0, 1, 2\n * ]````\n *\n * @property sectionPlanesActivePerLayer\n * @type {Boolean[]}\n */\n this.sectionPlanesActivePerLayer = [];\n\n this.reset();\n }\n\n /**\n * @private\n */\n reset() {\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate whether the {@link Drawable} is culled.\n * \n * When this is ````false````, then all of the other properties on ````RenderFlags```` will remain at their default values.\n * \n * @property culled\n * @type {Boolean}\n */\n this.culled = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate whether the {@link Drawable} is sliced by any {@link SectionPlane}s.\n *\n * @property sectioned\n * @type {Boolean}\n */\n this.sectioned = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the number of layers within the {@link Drawable}.\n *\n * @property numLayers\n * @type {Number}\n */\n this.numLayers = 0;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the number of visible layers within the {@link Drawable}.\n *\n * @property numVisibleLayers\n * @type {Number}\n */\n this.numVisibleLayers = 0;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs {@link Drawable#drawColorOpaque}.\n * @property colorOpaque\n * @type {boolean}\n */\n this.colorOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs {@link Drawable#drawColorTransparent}.\n * @property colorTransparent\n * @type {boolean}\n */\n this.colorTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs {@link Drawable#drawEdgesColorOpaque}.\n * @property edgesOpaque\n * @type {boolean}\n */\n this.edgesOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs {@link Drawable#drawEdgesColorTransparent}.\n * @property edgesTransparent\n * @type {boolean}\n */\n this.edgesTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawSilhouetteXRayed}.\n * @property xrayedSilhouetteOpaque\n * @type {boolean}\n */\n this.xrayedSilhouetteOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawEdgesXRayed}.\n * @property xrayedEdgesOpaque\n * @type {boolean}\n */\n this.xrayedEdgesOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawSilhouetteXRayed}.\n * @property xrayedSilhouetteTransparent\n * @type {boolean}\n */\n this.xrayedSilhouetteTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawEdgesXRayed}.\n * @property xrayedEdgesTransparent\n * @type {boolean}\n */\n this.xrayedEdgesTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawSilhouetteHighlighted}.\n * @property highlightedSilhouetteOpaque\n * @type {boolean}\n */\n this.highlightedSilhouetteOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawEdgesHighlighted}.\n * @property highlightedEdgesOpaque\n * @type {boolean}\n */\n this.highlightedEdgesOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawSilhouetteHighlighted}.\n * @property highlightedSilhouetteTransparent\n * @type {boolean}\n */\n this.highlightedSilhouetteTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawEdgesHighlighted}.\n * @property highlightedEdgesTransparent\n * @type {boolean}\n */\n this.highlightedEdgesTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawSilhouetteSelected}.\n * @property selectedSilhouetteOpaque\n * @type {boolean}\n */\n this.selectedSilhouetteOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawEdgesSelected}.\n * @property selectedEdgesOpaque\n * @type {boolean}\n */\n this.selectedEdgesOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawSilhouetteSelected}.\n * @property selectedSilhouetteTransparent\n * @type {boolean}\n */\n this.selectedSilhouetteTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawEdgesSelected}.\n * @property selectedEdgesTransparent\n * @type {boolean}\n */\n this.selectedEdgesTransparent = false;\n }\n}\n\nexport {RenderFlags};", @@ -174343,7 +174902,7 @@ "lineNumber": 1 }, { - "__docId__": 8874, + "__docId__": 8893, "kind": "class", "name": "RenderFlags", "memberof": "src/viewer/scene/webgl/RenderFlags.js", @@ -174359,7 +174918,7 @@ "ignore": true }, { - "__docId__": 8875, + "__docId__": 8894, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174373,7 +174932,7 @@ "ignore": true }, { - "__docId__": 8876, + "__docId__": 8895, "kind": "member", "name": "visibleLayers", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174404,7 +174963,7 @@ } }, { - "__docId__": 8877, + "__docId__": 8896, "kind": "member", "name": "sectionPlanesActivePerLayer", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174435,7 +174994,7 @@ } }, { - "__docId__": 8878, + "__docId__": 8897, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174451,7 +175010,7 @@ "return": null }, { - "__docId__": 8879, + "__docId__": 8898, "kind": "member", "name": "culled", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174482,7 +175041,7 @@ } }, { - "__docId__": 8880, + "__docId__": 8899, "kind": "member", "name": "sectioned", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174513,7 +175072,7 @@ } }, { - "__docId__": 8881, + "__docId__": 8900, "kind": "member", "name": "numLayers", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174544,7 +175103,7 @@ } }, { - "__docId__": 8882, + "__docId__": 8901, "kind": "member", "name": "numVisibleLayers", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174575,7 +175134,7 @@ } }, { - "__docId__": 8883, + "__docId__": 8902, "kind": "member", "name": "colorOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174606,7 +175165,7 @@ } }, { - "__docId__": 8884, + "__docId__": 8903, "kind": "member", "name": "colorTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174637,7 +175196,7 @@ } }, { - "__docId__": 8885, + "__docId__": 8904, "kind": "member", "name": "edgesOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174668,7 +175227,7 @@ } }, { - "__docId__": 8886, + "__docId__": 8905, "kind": "member", "name": "edgesTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174699,7 +175258,7 @@ } }, { - "__docId__": 8887, + "__docId__": 8906, "kind": "member", "name": "xrayedSilhouetteOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174730,7 +175289,7 @@ } }, { - "__docId__": 8888, + "__docId__": 8907, "kind": "member", "name": "xrayedEdgesOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174761,7 +175320,7 @@ } }, { - "__docId__": 8889, + "__docId__": 8908, "kind": "member", "name": "xrayedSilhouetteTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174792,7 +175351,7 @@ } }, { - "__docId__": 8890, + "__docId__": 8909, "kind": "member", "name": "xrayedEdgesTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174823,7 +175382,7 @@ } }, { - "__docId__": 8891, + "__docId__": 8910, "kind": "member", "name": "highlightedSilhouetteOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174854,7 +175413,7 @@ } }, { - "__docId__": 8892, + "__docId__": 8911, "kind": "member", "name": "highlightedEdgesOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174885,7 +175444,7 @@ } }, { - "__docId__": 8893, + "__docId__": 8912, "kind": "member", "name": "highlightedSilhouetteTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174916,7 +175475,7 @@ } }, { - "__docId__": 8894, + "__docId__": 8913, "kind": "member", "name": "highlightedEdgesTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174947,7 +175506,7 @@ } }, { - "__docId__": 8895, + "__docId__": 8914, "kind": "member", "name": "selectedSilhouetteOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -174978,7 +175537,7 @@ } }, { - "__docId__": 8896, + "__docId__": 8915, "kind": "member", "name": "selectedEdgesOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -175009,7 +175568,7 @@ } }, { - "__docId__": 8897, + "__docId__": 8916, "kind": "member", "name": "selectedSilhouetteTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -175040,7 +175599,7 @@ } }, { - "__docId__": 8898, + "__docId__": 8917, "kind": "member", "name": "selectedEdgesTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -175071,7 +175630,7 @@ } }, { - "__docId__": 8899, + "__docId__": 8918, "kind": "file", "name": "src/viewer/scene/webgl/RenderState.js", "content": "import {Map} from \"../utils/Map.js\";\n\nconst ids = new Map({});\n\n/**\n * @desc Represents a chunk of state changes applied by the {@link Scene}'s renderer while it renders a frame.\n *\n * * Contains properties that represent the state changes.\n * * Has a unique automatically-generated numeric ID, which the renderer can use to sort these, in order to avoid applying redundant state changes for each frame.\n * * Initialize your own properties on a RenderState via its constructor.\n *\n * @private\n */\nclass RenderState {\n\n constructor(cfg) {\n\n /**\n The RenderState's ID, unique within the renderer.\n @property id\n @type {Number}\n @final\n */\n this.id = ids.addItem({});\n for (const key in cfg) {\n if (cfg.hasOwnProperty(key)) {\n this[key] = cfg[key];\n }\n }\n }\n\n /**\n Destroys this RenderState.\n */\n destroy() {\n ids.removeItem(this.id);\n }\n}\n\nexport {RenderState};", @@ -175082,7 +175641,7 @@ "lineNumber": 1 }, { - "__docId__": 8900, + "__docId__": 8919, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/webgl/RenderState.js", @@ -175103,7 +175662,7 @@ "ignore": true }, { - "__docId__": 8901, + "__docId__": 8920, "kind": "class", "name": "RenderState", "memberof": "src/viewer/scene/webgl/RenderState.js", @@ -175119,7 +175678,7 @@ "ignore": true }, { - "__docId__": 8902, + "__docId__": 8921, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/RenderState.js~RenderState", @@ -175133,7 +175692,7 @@ "undocument": true }, { - "__docId__": 8903, + "__docId__": 8922, "kind": "member", "name": "id", "memberof": "src/viewer/scene/webgl/RenderState.js~RenderState", @@ -175170,7 +175729,7 @@ } }, { - "__docId__": 8904, + "__docId__": 8923, "kind": "member", "name": "[key]", "memberof": "src/viewer/scene/webgl/RenderState.js~RenderState", @@ -175187,7 +175746,7 @@ } }, { - "__docId__": 8905, + "__docId__": 8924, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/RenderState.js~RenderState", @@ -175202,7 +175761,7 @@ "return": null }, { - "__docId__": 8906, + "__docId__": 8925, "kind": "file", "name": "src/viewer/scene/webgl/Renderer.js", "content": "import {FrameContext} from './FrameContext.js';\nimport {math} from '../math/math.js';\nimport {stats} from '../stats.js';\nimport {WEBGL_INFO} from '../webglInfo.js';\nimport {Map} from \"../utils/Map.js\";\nimport {PickResult} from \"./PickResult.js\";\nimport {OcclusionTester} from \"./occlusion/OcclusionTester.js\";\nimport {SAOOcclusionRenderer} from \"./sao/SAOOcclusionRenderer.js\";\nimport {createRTCViewMat} from \"../math/rtcCoords.js\";\nimport {SAODepthLimitedBlurRenderer} from \"./sao/SAODepthLimitedBlurRenderer.js\";\nimport {RenderBufferManager} from \"./RenderBufferManager.js\";\nimport {getExtension} from \"./getExtension.js\";\n\n/**\n * @private\n */\nconst Renderer = function (scene, options) {\n\n options = options || {};\n\n const frameCtx = new FrameContext(scene);\n const canvas = scene.canvas.canvas;\n /**\n * @type {WebGL2RenderingContext}\n */\n const gl = scene.canvas.gl;\n const canvasTransparent = (!!options.transparent);\n const alphaDepthMask = options.alphaDepthMask;\n\n const pickIDs = new Map({});\n\n let drawableTypeInfo = {};\n let drawables = {};\n\n let drawableListDirty = true;\n let stateSortDirty = true;\n let imageDirty = true;\n let shadowsDirty = true;\n\n let transparentEnabled = true;\n let edgesEnabled = true;\n let saoEnabled = true;\n let pbrEnabled = true;\n let colorTextureEnabled = true;\n\n const renderBufferManager = new RenderBufferManager(scene);\n\n let snapshotBound = false;\n\n const bindOutputFrameBuffer = null;\n const unbindOutputFrameBuffer = null;\n\n const saoOcclusionRenderer = new SAOOcclusionRenderer(scene);\n const saoDepthLimitedBlurRenderer = new SAODepthLimitedBlurRenderer(scene);\n\n this.scene = scene;\n\n this._occlusionTester = null; // Lazy-created in #addMarker()\n\n this.capabilities = {\n astcSupported: !!getExtension(gl, 'WEBGL_compressed_texture_astc'),\n etc1Supported: true, // WebGL2\n etc2Supported: !!getExtension(gl, 'WEBGL_compressed_texture_etc'),\n dxtSupported: !!getExtension(gl, 'WEBGL_compressed_texture_s3tc'),\n bptcSupported: !!getExtension(gl, 'EXT_texture_compression_bptc'),\n pvrtcSupported: !!(getExtension(gl, 'WEBGL_compressed_texture_pvrtc') || getExtension(gl, 'WEBKIT_WEBGL_compressed_texture_pvrtc'))\n };\n\n this.setTransparentEnabled = function (enabled) {\n transparentEnabled = enabled;\n imageDirty = true;\n };\n\n this.setEdgesEnabled = function (enabled) {\n edgesEnabled = enabled;\n imageDirty = true;\n };\n\n this.setSAOEnabled = function (enabled) {\n saoEnabled = enabled;\n imageDirty = true;\n };\n\n this.setPBREnabled = function (enabled) {\n pbrEnabled = enabled;\n imageDirty = true;\n };\n\n this.setColorTextureEnabled = function (enabled) {\n colorTextureEnabled = enabled;\n imageDirty = true;\n };\n\n this.needStateSort = function () {\n stateSortDirty = true;\n };\n\n this.shadowsDirty = function () {\n shadowsDirty = true;\n };\n\n this.imageDirty = function () {\n imageDirty = true;\n };\n\n this.webglContextLost = function () {\n };\n\n this.webglContextRestored = function (gl) {\n\n // renderBufferManager.webglContextRestored(gl);\n\n saoOcclusionRenderer.init();\n saoDepthLimitedBlurRenderer.init();\n\n imageDirty = true;\n };\n\n /**\n * Inserts a drawable into this renderer.\n * @private\n */\n this.addDrawable = function (id, drawable) {\n const type = drawable.type;\n if (!type) {\n console.error(\"Renderer#addDrawable() : drawable with ID \" + id + \" has no 'type' - ignoring\");\n return;\n }\n let drawableInfo = drawableTypeInfo[type];\n if (!drawableInfo) {\n drawableInfo = {\n type: drawable.type,\n count: 0,\n isStateSortable: drawable.isStateSortable,\n stateSortCompare: drawable.stateSortCompare,\n drawableMap: {},\n drawableListPreCull: [],\n drawableList: []\n };\n drawableTypeInfo[type] = drawableInfo;\n }\n drawableInfo.count++;\n drawableInfo.drawableMap[id] = drawable;\n drawables[id] = drawable;\n drawableListDirty = true;\n };\n\n /**\n * Removes a drawable from this renderer.\n * @private\n */\n this.removeDrawable = function (id) {\n const drawable = drawables[id];\n if (!drawable) {\n console.error(\"Renderer#removeDrawable() : drawable not found with ID \" + id + \" - ignoring\");\n return;\n }\n const type = drawable.type;\n const drawableInfo = drawableTypeInfo[type];\n if (--drawableInfo.count <= 0) {\n delete drawableTypeInfo[type];\n } else {\n delete drawableInfo.drawableMap[id];\n }\n delete drawables[id];\n drawableListDirty = true;\n };\n\n /**\n * Gets a unique pick ID for the given Pickable. A Pickable can be a {@link Mesh} or a {@link PerformanceMesh}.\n * @returns {Number} New pick ID.\n */\n this.getPickID = function (entity) {\n return pickIDs.addItem(entity);\n };\n\n /**\n * Released a pick ID for reuse.\n * @param {Number} pickID Pick ID to release.\n */\n this.putPickID = function (pickID) {\n pickIDs.removeItem(pickID);\n };\n\n /**\n * Clears the canvas.\n * @private\n */\n this.clear = function (params) {\n params = params || {};\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n if (canvasTransparent) {\n gl.clearColor(1, 1, 1, 1);\n } else {\n const backgroundColor = scene.canvas.backgroundColorFromAmbientLight ? this.lights.getAmbientColorAndIntensity() : scene.canvas.backgroundColor;\n gl.clearColor(backgroundColor[0], backgroundColor[1], backgroundColor[2], 1.0);\n }\n if (bindOutputFrameBuffer) {\n bindOutputFrameBuffer(params.pass);\n }\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n if (unbindOutputFrameBuffer) {\n unbindOutputFrameBuffer(params.pass);\n }\n };\n\n /**\n * Returns true if the next call to render() will draw something\n * @returns {Boolean}\n */\n this.needsRender = function () {\n const needsRender = (imageDirty || drawableListDirty || stateSortDirty);\n return needsRender;\n }\n\n /**\n * Renders inserted drawables.\n * @private\n */\n this.render = function (params) {\n params = params || {};\n if (params.force) {\n imageDirty = true;\n }\n updateDrawlist();\n if (imageDirty) {\n draw(params);\n stats.frame.frameCount++;\n imageDirty = false;\n }\n };\n\n function updateDrawlist() { // Prepares state-sorted array of drawables from maps of inserted drawables\n if (drawableListDirty) {\n buildDrawableList();\n drawableListDirty = false;\n stateSortDirty = true;\n }\n if (stateSortDirty) {\n sortDrawableList();\n stateSortDirty = false;\n imageDirty = true;\n }\n if (imageDirty) { // Image is usually dirty because the camera moved\n cullDrawableList();\n }\n }\n\n function buildDrawableList() {\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableInfo = drawableTypeInfo[type];\n const drawableMap = drawableInfo.drawableMap;\n const drawableListPreCull = drawableInfo.drawableListPreCull;\n let lenDrawableList = 0;\n for (let id in drawableMap) {\n if (drawableMap.hasOwnProperty(id)) {\n drawableListPreCull[lenDrawableList++] = drawableMap[id];\n }\n }\n drawableListPreCull.length = lenDrawableList;\n }\n }\n }\n\n function sortDrawableList() {\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableInfo = drawableTypeInfo[type];\n if (drawableInfo.isStateSortable) {\n drawableInfo.drawableListPreCull.sort(drawableInfo.stateSortCompare);\n }\n }\n }\n }\n\n function cullDrawableList() {\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableInfo = drawableTypeInfo[type];\n const drawableListPreCull = drawableInfo.drawableListPreCull;\n const drawableList = drawableInfo.drawableList;\n let lenDrawableList = 0;\n for (let i = 0, len = drawableListPreCull.length; i < len; i++) {\n const drawable = drawableListPreCull[i];\n drawable.rebuildRenderFlags();\n if (!drawable.renderFlags.culled) {\n drawableList[lenDrawableList++] = drawable;\n }\n }\n drawableList.length = lenDrawableList;\n }\n }\n }\n\n function draw(params) {\n\n const sao = scene.sao;\n\n if (saoEnabled && sao.possible) {\n drawSAOBuffers(params);\n }\n\n drawShadowMaps();\n\n drawColor(params);\n }\n\n function drawSAOBuffers(params) {\n\n const sao = scene.sao;\n\n // Render depth buffer\n\n const saoDepthRenderBuffer = renderBufferManager.getRenderBuffer(\"saoDepth\", {\n depthTexture: true\n });\n\n saoDepthRenderBuffer.bind();\n saoDepthRenderBuffer.clear();\n drawDepth(params);\n saoDepthRenderBuffer.unbind();\n\n // Render occlusion buffer\n\n const occlusionRenderBuffer1 = renderBufferManager.getRenderBuffer(\"saoOcclusion\");\n\n occlusionRenderBuffer1.bind();\n occlusionRenderBuffer1.clear();\n saoOcclusionRenderer.render(saoDepthRenderBuffer);\n occlusionRenderBuffer1.unbind();\n\n if (sao.blur) {\n\n // Horizontally blur occlusion buffer 1 into occlusion buffer 2\n\n const occlusionRenderBuffer2 = renderBufferManager.getRenderBuffer(\"saoOcclusion2\");\n\n occlusionRenderBuffer2.bind();\n occlusionRenderBuffer2.clear();\n saoDepthLimitedBlurRenderer.render(saoDepthRenderBuffer, occlusionRenderBuffer1, 0);\n occlusionRenderBuffer2.unbind();\n\n // Vertically blur occlusion buffer 2 back into occlusion buffer 1\n\n occlusionRenderBuffer1.bind();\n occlusionRenderBuffer1.clear();\n saoDepthLimitedBlurRenderer.render(saoDepthRenderBuffer, occlusionRenderBuffer2, 1);\n occlusionRenderBuffer1.unbind();\n }\n }\n\n function drawDepth(params) {\n\n frameCtx.reset();\n frameCtx.pass = params.pass;\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.frontFace(gl.CCW);\n gl.enable(gl.CULL_FACE);\n gl.depthMask(true);\n\n if (params.clear !== false) {\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n }\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n\n for (let i = 0, len = drawableList.length; i < len; i++) {\n\n const drawable = drawableList[i];\n\n if (drawable.culled === true || drawable.visible === false || !drawable.drawDepth || !drawable.saoEnabled) {\n continue;\n }\n\n if (drawable.renderFlags.colorOpaque) {\n drawable.drawDepth(frameCtx);\n }\n }\n }\n }\n\n // const numVertexAttribs = WEBGL_INFO.MAX_VERTEX_ATTRIBS; // Fixes https://github.com/xeokit/xeokit-sdk/issues/174\n // for (let ii = 0; ii < numVertexAttribs; ii++) {\n // gl.disableVertexAttribArray(ii);\n // }\n\n }\n\n function drawShadowMaps() {\n\n let lights = scene._lightsState.lights;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\n if (!light.castsShadow) {\n continue;\n }\n drawShadowMap(light);\n }\n\n // const numVertexAttribs = WEBGL_INFO.MAX_VERTEX_ATTRIBS; // Fixes https://github.com/xeokit/xeokit-sdk/issues/174\n // for (let ii = 0; ii < numVertexAttribs; ii++) {\n // gl.disableVertexAttribArray(ii);\n // }\n //\n shadowsDirty = false;\n }\n\n function drawShadowMap(light) {\n\n const castsShadow = light.castsShadow;\n\n if (!castsShadow) {\n return;\n }\n\n const shadowRenderBuf = light.getShadowRenderBuf();\n\n if (!shadowRenderBuf) {\n return;\n }\n\n shadowRenderBuf.bind();\n\n frameCtx.reset();\n\n frameCtx.backfaces = true;\n frameCtx.frontface = true;\n frameCtx.shadowViewMatrix = light.getShadowViewMatrix();\n frameCtx.shadowProjMatrix = light.getShadowProjMatrix();\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n gl.clearColor(0, 0, 0, 1);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.BLEND);\n\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n for (let type in drawableTypeInfo) {\n\n if (drawableTypeInfo.hasOwnProperty(type)) {\n\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n\n for (let i = 0, len = drawableList.length; i < len; i++) {\n\n const drawable = drawableList[i];\n\n if (drawable.visible === false || !drawable.castsShadow || !drawable.drawShadow) {\n continue;\n }\n\n if (drawable.renderFlags.colorOpaque) { // Transparent objects don't cast shadows (yet)\n drawable.drawShadow(frameCtx);\n }\n }\n }\n }\n\n shadowRenderBuf.unbind();\n }\n\n function drawColor(params) {\n\n const normalDrawSAOBin = [];\n const normalEdgesOpaqueBin = [];\n const normalFillTransparentBin = [];\n const normalEdgesTransparentBin = [];\n\n const xrayedFillOpaqueBin = [];\n const xrayEdgesOpaqueBin = [];\n const xrayedFillTransparentBin = [];\n const xrayEdgesTransparentBin = [];\n\n const highlightedFillOpaqueBin = [];\n const highlightedEdgesOpaqueBin = [];\n const highlightedFillTransparentBin = [];\n const highlightedEdgesTransparentBin = [];\n\n const selectedFillOpaqueBin = [];\n const selectedEdgesOpaqueBin = [];\n const selectedFillTransparentBin = [];\n const selectedEdgesTransparentBin = [];\n\n\n const ambientColorAndIntensity = scene._lightsState.getAmbientColorAndIntensity();\n\n frameCtx.reset();\n frameCtx.pass = params.pass;\n frameCtx.withSAO = false;\n frameCtx.pbrEnabled = pbrEnabled && !!scene.pbrEnabled;\n frameCtx.colorTextureEnabled = colorTextureEnabled && !!scene.colorTextureEnabled;\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n if (canvasTransparent) {\n gl.clearColor(0, 0, 0, 0);\n } else {\n const backgroundColor = scene.canvas.backgroundColorFromAmbientLight ? ambientColorAndIntensity : scene.canvas.backgroundColor;\n gl.clearColor(backgroundColor[0], backgroundColor[1], backgroundColor[2], 1.0);\n }\n\n gl.enable(gl.DEPTH_TEST);\n gl.frontFace(gl.CCW);\n gl.enable(gl.CULL_FACE);\n gl.depthMask(true);\n gl.lineWidth(1);\n\n frameCtx.lineWidth = 1;\n\n const saoPossible = scene.sao.possible;\n\n if (saoEnabled && saoPossible) {\n const occlusionRenderBuffer1 = renderBufferManager.getRenderBuffer(\"saoOcclusion\");\n frameCtx.occlusionTexture = occlusionRenderBuffer1 ? occlusionRenderBuffer1.getTexture() : null;\n } else {\n frameCtx.occlusionTexture = null;\n\n }\n\n let i;\n let len;\n let drawable;\n\n const startTime = Date.now();\n\n if (bindOutputFrameBuffer) {\n bindOutputFrameBuffer(params.pass);\n }\n\n if (params.clear !== false) {\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n }\n\n let normalDrawSAOBinLen = 0;\n let normalEdgesOpaqueBinLen = 0;\n let normalFillTransparentBinLen = 0;\n let normalEdgesTransparentBinLen = 0;\n\n let xrayedFillOpaqueBinLen = 0;\n let xrayEdgesOpaqueBinLen = 0;\n let xrayedFillTransparentBinLen = 0;\n let xrayEdgesTransparentBinLen = 0;\n\n let highlightedFillOpaqueBinLen = 0;\n let highlightedEdgesOpaqueBinLen = 0;\n let highlightedFillTransparentBinLen = 0;\n let highlightedEdgesTransparentBinLen = 0;\n\n let selectedFillOpaqueBinLen = 0;\n let selectedEdgesOpaqueBinLen = 0;\n let selectedFillTransparentBinLen = 0;\n let selectedEdgesTransparentBinLen = 0;\n\n //------------------------------------------------------------------------------------------------------\n // Render normal opaque solids, defer others to bins to render after\n //------------------------------------------------------------------------------------------------------\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n\n for (i = 0, len = drawableList.length; i < len; i++) {\n\n drawable = drawableList[i];\n\n if (drawable.culled === true || drawable.visible === false) {\n continue;\n }\n\n const renderFlags = drawable.renderFlags;\n\n if (renderFlags.colorOpaque) {\n if (saoEnabled && saoPossible && drawable.saoEnabled) {\n normalDrawSAOBin[normalDrawSAOBinLen++] = drawable;\n } else {\n drawable.drawColorOpaque(frameCtx);\n }\n }\n\n if (transparentEnabled) {\n if (renderFlags.colorTransparent) {\n normalFillTransparentBin[normalFillTransparentBinLen++] = drawable;\n }\n }\n\n if (renderFlags.xrayedSilhouetteTransparent) {\n xrayedFillTransparentBin[xrayedFillTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.xrayedSilhouetteOpaque) {\n xrayedFillOpaqueBin[xrayedFillOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.highlightedSilhouetteTransparent) {\n highlightedFillTransparentBin[highlightedFillTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.highlightedSilhouetteOpaque) {\n highlightedFillOpaqueBin[highlightedFillOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.selectedSilhouetteTransparent) {\n selectedFillTransparentBin[selectedFillTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.selectedSilhouetteOpaque) {\n selectedFillOpaqueBin[selectedFillOpaqueBinLen++] = drawable;\n }\n\n if (drawable.edges && edgesEnabled) {\n if (renderFlags.edgesOpaque) {\n normalEdgesOpaqueBin[normalEdgesOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.edgesTransparent) {\n normalEdgesTransparentBin[normalEdgesTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.selectedEdgesTransparent) {\n selectedEdgesTransparentBin[selectedEdgesTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.selectedEdgesOpaque) {\n selectedEdgesOpaqueBin[selectedEdgesOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.xrayedEdgesTransparent) {\n xrayEdgesTransparentBin[xrayEdgesTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.xrayedEdgesOpaque) {\n xrayEdgesOpaqueBin[xrayEdgesOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.highlightedEdgesTransparent) {\n highlightedEdgesTransparentBin[highlightedEdgesTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.highlightedEdgesOpaque) {\n highlightedEdgesOpaqueBin[highlightedEdgesOpaqueBinLen++] = drawable;\n }\n }\n }\n }\n }\n\n //------------------------------------------------------------------------------------------------------\n // Render deferred bins\n //------------------------------------------------------------------------------------------------------\n\n // Opaque color with SAO\n\n if (normalDrawSAOBinLen > 0) {\n frameCtx.withSAO = true;\n for (i = 0; i < normalDrawSAOBinLen; i++) {\n normalDrawSAOBin[i].drawColorOpaque(frameCtx);\n }\n }\n\n // Opaque edges\n\n if (normalEdgesOpaqueBinLen > 0) {\n for (i = 0; i < normalEdgesOpaqueBinLen; i++) {\n normalEdgesOpaqueBin[i].drawEdgesColorOpaque(frameCtx);\n }\n }\n\n // Opaque X-ray fill\n\n if (xrayedFillOpaqueBinLen > 0) {\n for (i = 0; i < xrayedFillOpaqueBinLen; i++) {\n xrayedFillOpaqueBin[i].drawSilhouetteXRayed(frameCtx);\n }\n }\n\n // Opaque X-ray edges\n\n if (xrayEdgesOpaqueBinLen > 0) {\n for (i = 0; i < xrayEdgesOpaqueBinLen; i++) {\n xrayEdgesOpaqueBin[i].drawEdgesXRayed(frameCtx);\n }\n }\n\n // Transparent\n\n if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.BLEND);\n if (canvasTransparent) {\n gl.blendEquation(gl.FUNC_ADD);\n gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n } else {\n gl.blendEquation(gl.FUNC_ADD);\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n }\n frameCtx.backfaces = false;\n if (!alphaDepthMask) {\n gl.depthMask(false);\n }\n\n // Transparent color edges\n\n if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n }\n if (normalEdgesTransparentBinLen > 0) {\n for (i = 0; i < normalEdgesTransparentBinLen; i++) {\n drawable = normalEdgesTransparentBin[i];\n drawable.drawEdgesColorTransparent(frameCtx);\n }\n }\n\n // Transparent color fill\n\n if (normalFillTransparentBinLen > 0) {\n for (i = 0; i < normalFillTransparentBinLen; i++) {\n drawable = normalFillTransparentBin[i];\n drawable.drawColorTransparent(frameCtx);\n }\n }\n\n // Transparent X-ray edges\n\n if (xrayEdgesTransparentBinLen > 0) {\n for (i = 0; i < xrayEdgesTransparentBinLen; i++) {\n xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);\n }\n }\n\n // Transparent X-ray fill\n\n if (xrayedFillTransparentBinLen > 0) {\n for (i = 0; i < xrayedFillTransparentBinLen; i++) {\n xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);\n }\n }\n\n gl.disable(gl.BLEND);\n if (!alphaDepthMask) {\n gl.depthMask(true);\n }\n }\n\n // Opaque highlight\n\n if (highlightedFillOpaqueBinLen > 0 || highlightedEdgesOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n if (scene.highlightMaterial.glowThrough) {\n gl.clear(gl.DEPTH_BUFFER_BIT);\n }\n\n // Opaque highlighted edges\n\n if (highlightedEdgesOpaqueBinLen > 0) {\n for (i = 0; i < highlightedEdgesOpaqueBinLen; i++) {\n highlightedEdgesOpaqueBin[i].drawEdgesHighlighted(frameCtx);\n }\n }\n\n // Opaque highlighted fill\n\n if (highlightedFillOpaqueBinLen > 0) {\n for (i = 0; i < highlightedFillOpaqueBinLen; i++) {\n highlightedFillOpaqueBin[i].drawSilhouetteHighlighted(frameCtx);\n }\n }\n }\n\n // Highlighted transparent\n\n if (highlightedFillTransparentBinLen > 0 || highlightedEdgesTransparentBinLen > 0 || highlightedFillOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n if (scene.selectedMaterial.glowThrough) {\n gl.clear(gl.DEPTH_BUFFER_BIT);\n }\n gl.enable(gl.BLEND);\n if (canvasTransparent) {\n gl.blendEquation(gl.FUNC_ADD);\n gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n } else {\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n }\n gl.enable(gl.CULL_FACE);\n\n // Highlighted transparent edges\n\n if (highlightedEdgesTransparentBinLen > 0) {\n for (i = 0; i < highlightedEdgesTransparentBinLen; i++) {\n highlightedEdgesTransparentBin[i].drawEdgesHighlighted(frameCtx);\n }\n }\n\n // Highlighted transparent fill\n\n if (highlightedFillTransparentBinLen > 0) {\n for (i = 0; i < highlightedFillTransparentBinLen; i++) {\n highlightedFillTransparentBin[i].drawSilhouetteHighlighted(frameCtx);\n }\n }\n gl.disable(gl.BLEND);\n }\n\n // Selected opaque\n\n if (selectedFillOpaqueBinLen > 0 || selectedEdgesOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n if (scene.selectedMaterial.glowThrough) {\n gl.clear(gl.DEPTH_BUFFER_BIT);\n }\n\n // Selected opaque fill\n\n if (selectedEdgesOpaqueBinLen > 0) {\n for (i = 0; i < selectedEdgesOpaqueBinLen; i++) {\n selectedEdgesOpaqueBin[i].drawEdgesSelected(frameCtx);\n }\n }\n\n // Selected opaque edges\n\n if (selectedFillOpaqueBinLen > 0) {\n for (i = 0; i < selectedFillOpaqueBinLen; i++) {\n selectedFillOpaqueBin[i].drawSilhouetteSelected(frameCtx);\n }\n }\n }\n\n // Selected transparent\n\n if (selectedFillTransparentBinLen > 0 || selectedEdgesTransparentBinLen > 0) {\n frameCtx.lastProgramId = null;\n if (scene.selectedMaterial.glowThrough) {\n gl.clear(gl.DEPTH_BUFFER_BIT);\n }\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.BLEND);\n if (canvasTransparent) {\n gl.blendEquation(gl.FUNC_ADD);\n gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n } else {\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n }\n\n // Selected transparent edges\n\n if (selectedEdgesTransparentBinLen > 0) {\n for (i = 0; i < selectedEdgesTransparentBinLen; i++) {\n selectedEdgesTransparentBin[i].drawEdgesSelected(frameCtx);\n }\n }\n\n // Selected transparent fill\n\n if (selectedFillTransparentBinLen > 0) {\n for (i = 0; i < selectedFillTransparentBinLen; i++) {\n selectedFillTransparentBin[i].drawSilhouetteSelected(frameCtx);\n }\n }\n gl.disable(gl.BLEND);\n }\n\n const endTime = Date.now();\n const frameStats = stats.frame;\n\n frameStats.renderTime = (endTime - startTime) / 1000.0;\n frameStats.drawElements = frameCtx.drawElements;\n frameStats.drawArrays = frameCtx.drawArrays;\n frameStats.useProgram = frameCtx.useProgram;\n frameStats.bindTexture = frameCtx.bindTexture;\n frameStats.bindArray = frameCtx.bindArray;\n\n const numTextureUnits = WEBGL_INFO.MAX_TEXTURE_IMAGE_UNITS;\n for (let ii = 0; ii < numTextureUnits; ii++) {\n gl.activeTexture(gl.TEXTURE0 + ii);\n }\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, null);\n gl.bindTexture(gl.TEXTURE_2D, null);\n\n const numVertexAttribs = WEBGL_INFO.MAX_VERTEX_ATTRIBS; // Fixes https://github.com/xeokit/xeokit-sdk/issues/174\n for (let ii = 0; ii < numVertexAttribs; ii++) {\n gl.disableVertexAttribArray(ii);\n }\n\n if (unbindOutputFrameBuffer) {\n unbindOutputFrameBuffer(params.pass);\n }\n }\n\n /**\n * Picks an Entity.\n * @private\n */\n this.pick = (function () {\n\n const tempVec3a = math.vec3();\n const tempMat4a = math.mat4();\n const tempMat4b = math.mat4();\n\n const randomVec3 = math.vec3();\n const up = math.vec3([0, 1, 0]);\n const _pickResult = new PickResult();\n\n const nearAndFar = math.vec2();\n\n const canvasPos = math.vec3();\n\n const worldRayOrigin = math.vec3();\n const worldRayDir = math.vec3();\n const worldSurfacePos = math.vec3();\n const worldSurfaceNormal = math.vec3();\n\n return function (params, pickResult = _pickResult) {\n\n pickResult.reset();\n\n updateDrawlist();\n\n let look;\n let pickViewMatrix = null;\n let pickProjMatrix = null;\n\n pickResult.pickSurface = params.pickSurface;\n\n if (params.canvasPos) {\n\n canvasPos[0] = params.canvasPos[0];\n canvasPos[1] = params.canvasPos[1];\n\n pickViewMatrix = scene.camera.viewMatrix;\n pickProjMatrix = scene.camera.projMatrix;\n\n pickResult.canvasPos = params.canvasPos;\n\n } else {\n\n // Picking with arbitrary World-space ray\n // Align camera along ray and fire ray through center of canvas\n\n if (params.matrix) {\n\n pickViewMatrix = params.matrix;\n pickProjMatrix = scene.camera.projMatrix;\n\n } else {\n\n worldRayOrigin.set(params.origin || [0, 0, 0]);\n worldRayDir.set(params.direction || [0, 0, 1]);\n\n look = math.addVec3(worldRayOrigin, worldRayDir, tempVec3a);\n\n randomVec3[0] = Math.random();\n randomVec3[1] = Math.random();\n randomVec3[2] = Math.random();\n\n math.normalizeVec3(randomVec3);\n math.cross3Vec3(worldRayDir, randomVec3, up);\n\n pickViewMatrix = math.lookAtMat4v(worldRayOrigin, look, up, tempMat4b);\n // pickProjMatrix = scene.camera.projMatrix;\n pickProjMatrix = scene.camera.ortho.matrix;\n\n pickResult.origin = worldRayOrigin;\n pickResult.direction = worldRayDir;\n }\n\n canvasPos[0] = canvas.clientWidth * 0.5;\n canvasPos[1] = canvas.clientHeight * 0.5;\n }\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableList = drawableTypeInfo[type].drawableList;\n for (let i = 0, len = drawableList.length; i < len; i++) {\n const drawable = drawableList[i];\n if (drawable.setPickMatrices) { // Eg. SceneModel, which needs pre-loading into texture\n drawable.setPickMatrices(pickViewMatrix, pickProjMatrix);\n }\n }\n }\n }\n\n const pickBuffer = renderBufferManager.getRenderBuffer(\"pick\", {size: [1, 1]});\n\n pickBuffer.bind();\n\n const pickable = gpuPickPickable(pickBuffer, canvasPos, pickViewMatrix, pickProjMatrix, params, pickResult);\n\n if (!pickable) {\n pickBuffer.unbind();\n return null;\n }\n\n const pickedEntity = (pickable.delegatePickedEntity) ? pickable.delegatePickedEntity() : pickable;\n\n if (!pickedEntity) {\n pickBuffer.unbind();\n return null;\n }\n\n if (params.pickSurface) {\n\n // GPU-based ray-picking\n\n if (pickable.canPickTriangle && pickable.canPickTriangle()) {\n\n gpuPickTriangle(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult);\n\n pickable.pickTriangleSurface(pickViewMatrix, pickProjMatrix, pickResult);\n\n pickResult.pickSurfacePrecision = false;\n\n } else {\n\n if (pickable.canPickWorldPos && pickable.canPickWorldPos()) {\n\n nearAndFar[0] = scene.camera.project.near;\n nearAndFar[1] = scene.camera.project.far;\n\n gpuPickWorldPos(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult);\n\n if (params.pickSurfaceNormal !== false) {\n gpuPickWorldNormal(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult);\n }\n\n pickResult.pickSurfacePrecision = false;\n }\n }\n }\n pickBuffer.unbind();\n pickResult.entity = pickedEntity;\n return pickResult;\n };\n })();\n\n function gpuPickPickable(pickBuffer, canvasPos, pickViewMatrix, pickProjMatrix, params, pickResult) {\n\n const resolutionScale = scene.canvas.resolutionScale;\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickOrigin = pickResult.origin;\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n frameCtx.pickInvisible = !!params.pickInvisible;\n frameCtx.pickClipPos = [\n getClipPosX(canvasPos[0] * resolutionScale, gl.drawingBufferWidth),\n getClipPosY(canvasPos[1] * resolutionScale, gl.drawingBufferHeight),\n ];\n\n gl.viewport(0, 0, 1, 1);\n gl.depthMask(true);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n const includeEntityIds = params.includeEntityIds;\n const excludeEntityIds = params.excludeEntityIds;\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n\n for (let i = 0, len = drawableList.length; i < len; i++) {\n\n const drawable = drawableList[i];\n\n if (!drawable.drawPickMesh || (params.pickInvisible !== true && drawable.visible === false) || drawable.pickable === false) {\n continue;\n }\n if (includeEntityIds && !includeEntityIds[drawable.id]) { // TODO: push this logic into drawable\n continue;\n }\n if (excludeEntityIds && excludeEntityIds[drawable.id]) {\n continue;\n }\n\n drawable.drawPickMesh(frameCtx);\n }\n }\n }\n const pix = pickBuffer.read(0, 0);\n const pickID = pix[0] + (pix[1] << 8) + (pix[2] << 16) + (pix[3] << 24);\n\n if (pickID < 0) {\n return;\n }\n\n const pickable = pickIDs.items[pickID];\n\n return pickable;\n }\n\n function gpuPickTriangle(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult) {\n\n if (!pickable.drawPickTriangles) {\n return;\n }\n\n const resolutionScale = scene.canvas.resolutionScale;\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickOrigin = pickResult.origin;\n frameCtx.pickViewMatrix = pickViewMatrix; // Can be null\n frameCtx.pickProjMatrix = pickProjMatrix; // Can be null\n // frameCtx.pickInvisible = !!params.pickInvisible;\n frameCtx.pickClipPos = [\n getClipPosX(canvasPos[0] * resolutionScale, gl.drawingBufferWidth),\n getClipPosY(canvasPos[1] * resolutionScale, gl.drawingBufferHeight),\n ];\n\n gl.viewport(0, 0, 1, 1);\n\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n pickable.drawPickTriangles(frameCtx);\n\n const pix = pickBuffer.read(0, 0);\n\n let primIndex = pix[0] + (pix[1] * 256) + (pix[2] * 256 * 256) + (pix[3] * 256 * 256 * 256);\n\n primIndex *= 3; // Convert from triangle number to first vertex in indices\n\n pickResult.primIndex = primIndex;\n }\n\n const gpuPickWorldPos = (function () {\n\n const tempVec4a = math.vec4();\n const tempVec4b = math.vec4();\n const tempVec4c = math.vec4();\n const tempVec4d = math.vec4();\n const tempVec4e = math.vec4();\n const tempMat4a = math.mat4();\n const tempMat4b = math.mat4();\n const tempMat4c = math.mat4();\n\n return function (pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult) {\n\n const resolutionScale = scene.canvas.resolutionScale;\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickOrigin = pickResult.origin;\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n frameCtx.pickZNear = nearAndFar[0];\n frameCtx.pickZFar = nearAndFar[1];\n frameCtx.pickElementsCount = pickable.pickElementsCount;\n frameCtx.pickElementsOffset = pickable.pickElementsOffset;\n frameCtx.pickClipPos = [\n getClipPosX(canvasPos[0] * resolutionScale, gl.drawingBufferWidth),\n getClipPosY(canvasPos[1] * resolutionScale, gl.drawingBufferHeight),\n ];\n\n gl.viewport(0, 0, 1, 1);\n\n gl.clearColor(0, 0, 0, 0);\n gl.depthMask(true);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n pickable.drawPickDepths(frameCtx); // Draw color-encoded fragment screen-space depths\n\n const pix = pickBuffer.read(0, 0);\n\n const screenZ = unpackDepth(pix); // Get screen-space Z at the given canvas coords\n\n // Calculate clip space coordinates, which will be in range of x=[-1..1] and y=[-1..1], with y=(+1) at top\n const x = (canvasPos[0] - canvas.clientWidth / 2) / (canvas.clientWidth / 2);\n const y = -(canvasPos[1] - canvas.clientHeight / 2) / (canvas.clientHeight / 2);\n\n const origin = pickable.origin;\n let pvMat;\n\n if (origin) {\n const rtcPickViewMat = createRTCViewMat(pickViewMatrix, origin, tempMat4a);\n pvMat = math.mulMat4(pickProjMatrix, rtcPickViewMat, tempMat4b);\n\n } else {\n pvMat = math.mulMat4(pickProjMatrix, pickViewMatrix, tempMat4b);\n }\n\n const pvMatInverse = math.inverseMat4(pvMat, tempMat4c);\n\n tempVec4a[0] = x;\n tempVec4a[1] = y;\n tempVec4a[2] = -1;\n tempVec4a[3] = 1;\n\n let world1 = math.transformVec4(pvMatInverse, tempVec4a);\n world1 = math.mulVec4Scalar(world1, 1 / world1[3]);\n\n tempVec4b[0] = x;\n tempVec4b[1] = y;\n tempVec4b[2] = 1;\n tempVec4b[3] = 1;\n\n let world2 = math.transformVec4(pvMatInverse, tempVec4b);\n world2 = math.mulVec4Scalar(world2, 1 / world2[3]);\n\n const dir = math.subVec3(world2, world1, tempVec4c);\n const worldPos = math.addVec3(world1, math.mulVec4Scalar(dir, screenZ, tempVec4d), tempVec4e);\n\n if (origin) {\n math.addVec3(worldPos, origin);\n }\n\n pickResult.worldPos = worldPos;\n }\n })();\n\n function drawSnapInit(frameCtx) {\n frameCtx.snapPickLayerParams = [];\n frameCtx.snapPickLayerNumber = 0;\n for (let type in drawableTypeInfo) {\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n for (let i = 0, len = drawableList.length; i < len; i++) {\n const drawable = drawableList[i];\n if (drawable.drawSnapInit) {\n if (!drawable.culled && drawable.visible && drawable.pickable) {\n drawable.drawSnapInit(frameCtx);\n }\n }\n }\n }\n return frameCtx.snapPickLayerParams;\n }\n\n function drawSnap(frameCtx) {\n frameCtx.snapPickLayerParams = frameCtx.snapPickLayerParams || [];\n frameCtx.snapPickLayerNumber = frameCtx.snapPickLayerParams.length;\n for (let type in drawableTypeInfo) {\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n for (let i = 0, len = drawableList.length; i < len; i++) {\n const drawable = drawableList[i];\n if (drawable.drawSnap) {\n if (!drawable.culled && drawable.visible && drawable.pickable) {\n drawable.drawSnap(frameCtx);\n }\n }\n }\n }\n return frameCtx.snapPickLayerParams;\n }\n\n function getClipPosX(pos, size) {\n return 2 * (pos / size) - 1;\n }\n\n function getClipPosY(pos, size) {\n return 1 - 2 * (pos / size);\n }\n\n /**\n * @param {[number, number]} canvasPos\n * @param {number} [snapRadiusInPixels=30]\n * @param {boolean} [snapToVertex=true]\n * @param {boolean} [snapToEdge=true]\n * @param pickResult\n * @returns {PickResult}\n */\n this.snapPick = (function () {\n\n const _pickResult = new PickResult();\n\n return function (canvasPos, snapRadiusInPixels, snapToVertex, snapToEdge, pickResult = _pickResult) {\n\n if (!snapToVertex && !snapToEdge) {\n return this.pick({canvasPos, pickSurface: true});\n }\n\n const resolutionScale = scene.canvas.resolutionScale;\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickZNear = scene.camera.project.near;\n frameCtx.pickZFar = scene.camera.project.far;\n\n snapRadiusInPixels = snapRadiusInPixels || 30;\n\n const vertexPickBuffer = renderBufferManager.getRenderBuffer(\"uniquePickColors-aabs\", {\n depthTexture: true,\n size: [\n 2 * snapRadiusInPixels + 1,\n 2 * snapRadiusInPixels + 1,\n ]\n });\n\n frameCtx.snapVectorA = [\n getClipPosX(canvasPos[0] * resolutionScale, gl.drawingBufferWidth),\n getClipPosY(canvasPos[1] * resolutionScale, gl.drawingBufferHeight),\n ];\n\n frameCtx.snapInvVectorAB = [\n gl.drawingBufferWidth / (2 * snapRadiusInPixels),\n gl.drawingBufferHeight / (2 * snapRadiusInPixels),\n ];\n\n // Bind and clear the snap render target\n\n vertexPickBuffer.bind(gl.RGBA32I, gl.RGBA32I, gl.RGBA8UI);\n gl.viewport(0, 0, vertexPickBuffer.size[0], vertexPickBuffer.size[1]);\n gl.enable(gl.DEPTH_TEST);\n gl.frontFace(gl.CCW);\n gl.disable(gl.CULL_FACE);\n gl.depthMask(true);\n gl.disable(gl.BLEND);\n gl.depthFunc(gl.LEQUAL);\n gl.clear(gl.DEPTH_BUFFER_BIT);\n gl.clearBufferiv(gl.COLOR, 0, new Int32Array([0, 0, 0, 0]));\n gl.clearBufferiv(gl.COLOR, 1, new Int32Array([0, 0, 0, 0]));\n gl.clearBufferuiv(gl.COLOR, 2, new Uint32Array([0, 0, 0, 0]));\n\n //////////////////////////////////\n // Set view and proj mats for VBO renderers\n ///////////////////////////////////////\n\n const pickViewMatrix = scene.camera.viewMatrix;\n const pickProjMatrix = scene.camera.projMatrix;\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableList = drawableTypeInfo[type].drawableList;\n for (let i = 0, len = drawableList.length; i < len; i++) {\n const drawable = drawableList[i];\n if (drawable.setPickMatrices) { // Eg. SceneModel, which needs pre-loading into texture\n drawable.setPickMatrices(pickViewMatrix, pickProjMatrix);\n }\n }\n }\n }\n\n // a) init z-buffer\n gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2]);\n const layerParamsSurface = drawSnapInit(frameCtx);\n\n // b) snap-pick\n const layerParamsSnap = []\n frameCtx.snapPickLayerParams = layerParamsSnap;\n\n gl.depthMask(false);\n gl.drawBuffers([gl.COLOR_ATTACHMENT0]);\n\n if (snapToVertex && snapToEdge) {\n frameCtx.snapMode = \"edge\";\n drawSnap(frameCtx);\n\n frameCtx.snapMode = \"vertex\";\n frameCtx.snapPickLayerNumber++;\n\n drawSnap(frameCtx);\n } else {\n frameCtx.snapMode = snapToVertex ? \"vertex\" : \"edge\";\n\n drawSnap(frameCtx);\n }\n\n gl.depthMask(true);\n\n // Read and decode the snapped coordinates\n\n const snapPickResultArray = vertexPickBuffer.readArray(gl.RGBA_INTEGER, gl.INT, Int32Array, 4);\n const snapPickNormalResultArray = vertexPickBuffer.readArray(gl.RGBA_INTEGER, gl.INT, Int32Array, 4, 1);\n const snapPickIdResultArray = vertexPickBuffer.readArray(gl.RGBA_INTEGER, gl.UNSIGNED_INT, Uint32Array, 4, 2);\n\n vertexPickBuffer.unbind();\n\n // result 1) regular hi-precision world position\n\n let worldPos = null;\n let worldNormal = null;\n let pickable = null;\n\n const middleX = snapRadiusInPixels;\n const middleY = snapRadiusInPixels;\n const middleIndex = (middleX * 4) + (middleY * vertexPickBuffer.size[0] * 4);\n const pickResultMiddleXY = snapPickResultArray.slice(middleIndex, middleIndex + 4);\n const pickNormalResultMiddleXY = snapPickNormalResultArray.slice(middleIndex, middleIndex + 4);\n const pickPickableResultMiddleXY = snapPickIdResultArray.slice(middleIndex, middleIndex + 4);\n\n if (pickResultMiddleXY[3] !== 0) {\n const pickedLayerParmasSurface = layerParamsSurface[Math.abs(pickResultMiddleXY[3]) % layerParamsSurface.length];\n const origin = pickedLayerParmasSurface.origin;\n const scale = pickedLayerParmasSurface.coordinateScale;\n worldPos = [\n pickResultMiddleXY[0] * scale[0] + origin[0],\n pickResultMiddleXY[1] * scale[1] + origin[1],\n pickResultMiddleXY[2] * scale[2] + origin[2],\n ];\n worldNormal = math.normalizeVec3([\n pickNormalResultMiddleXY[0] / math.MAX_INT,\n pickNormalResultMiddleXY[1] / math.MAX_INT,\n pickNormalResultMiddleXY[2] / math.MAX_INT,\n ]);\n\n const pickID =\n pickPickableResultMiddleXY[0]\n + (pickPickableResultMiddleXY[1] << 8)\n + (pickPickableResultMiddleXY[2] << 16)\n + (pickPickableResultMiddleXY[3] << 24);\n\n pickable = pickIDs.items[pickID];\n }\n\n // result 2) hi-precision snapped (to vertex/edge) world position\n\n let snapPickResult = [];\n\n for (let i = 0; i < snapPickResultArray.length; i += 4) {\n if (snapPickResultArray[i + 3] > 0) {\n const pixelNumber = Math.floor(i / 4);\n const w = vertexPickBuffer.size[0];\n const x = pixelNumber % w - Math.floor(w / 2);\n const y = Math.floor(pixelNumber / w) - Math.floor(w / 2);\n const dist = (Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));\n snapPickResult.push({\n x,\n y,\n dist,\n isVertex: snapToVertex && snapToEdge ? snapPickResultArray[i + 3] > layerParamsSnap.length / 2 : snapToVertex,\n result: [\n snapPickResultArray[i + 0],\n snapPickResultArray[i + 1],\n snapPickResultArray[i + 2],\n snapPickResultArray[i + 3],\n ],\n normal: [\n snapPickNormalResultArray[i + 0],\n snapPickNormalResultArray[i + 1],\n snapPickNormalResultArray[i + 2],\n snapPickNormalResultArray[i + 3],\n ],\n id: [\n snapPickIdResultArray[i + 0],\n snapPickIdResultArray[i + 1],\n snapPickIdResultArray[i + 2],\n snapPickIdResultArray[i + 3],\n ]\n });\n }\n }\n\n let snappedWorldPos = null;\n let snappedWorldNormal = null;\n let snappedPickable = null;\n let snapType = null;\n\n if (snapPickResult.length > 0) {\n // vertex snap first, then edge snap\n snapPickResult.sort((a, b) => {\n if (a.isVertex !== b.isVertex) {\n return a.isVertex ? -1 : 1;\n } else {\n return a.dist - b.dist;\n }\n });\n\n snapType = snapPickResult[0].isVertex ? \"vertex\" : \"edge\";\n const snapPick = snapPickResult[0].result;\n const snapPickNormal = snapPickResult[0].normal;\n const snapPickId = snapPickResult[0].id;\n\n const pickedLayerParmas = layerParamsSnap[snapPick[3]];\n\n const origin = pickedLayerParmas.origin;\n const scale = pickedLayerParmas.coordinateScale;\n\n snappedWorldNormal = math.normalizeVec3([\n snapPickNormal[0] / math.MAX_INT,\n snapPickNormal[1] / math.MAX_INT,\n snapPickNormal[2] / math.MAX_INT,\n ]);\n\n snappedWorldPos = [\n snapPick[0] * scale[0] + origin[0],\n snapPick[1] * scale[1] + origin[1],\n snapPick[2] * scale[2] + origin[2],\n ];\n\n snappedPickable = pickIDs.items[\n snapPickId[0]\n + (snapPickId[1] << 8)\n + (snapPickId[2] << 16)\n + (snapPickId[3] << 24)\n ];\n }\n\n if (null === worldPos && null == snappedWorldPos) { // If neither regular pick or snap pick, return null\n return null;\n }\n\n let snappedCanvasPos = null;\n\n if (null !== snappedWorldPos) {\n snappedCanvasPos = scene.camera.projectWorldPos(snappedWorldPos);\n }\n\n const snappedEntity = (snappedPickable && snappedPickable.delegatePickedEntity) ? snappedPickable.delegatePickedEntity() : snappedPickable;\n\n pickResult.reset();\n pickResult.snappedToEdge = (snapType === \"edge\");\n pickResult.snappedToVertex = (snapType === \"vertex\");\n pickResult.worldPos = snappedWorldPos;\n pickResult.worldNormal = snappedWorldNormal;\n pickResult.entity = snappedEntity;\n pickResult.canvasPos = canvasPos;\n pickResult.snappedCanvasPos = snappedCanvasPos || canvasPos;\n\n return pickResult;\n };\n })();\n\n function unpackDepth(depthZ) {\n const vec = [depthZ[0] / 256.0, depthZ[1] / 256.0, depthZ[2] / 256.0, depthZ[3] / 256.0];\n const bitShift = [1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0];\n return math.dotVec4(vec, bitShift);\n }\n\n function gpuPickWorldNormal(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult) {\n\n const resolutionScale = scene.canvas.resolutionScale;\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickOrigin = pickResult.origin;\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n frameCtx.pickClipPos = [\n getClipPosX(canvasPos[0] * resolutionScale, gl.drawingBufferWidth),\n getClipPosY(canvasPos[1] * resolutionScale, gl.drawingBufferHeight),\n ];\n\n const pickNormalBuffer = renderBufferManager.getRenderBuffer(\"pick-normal\", {size: [3, 3]});\n\n pickNormalBuffer.bind(gl.RGBA32I);\n\n gl.viewport(0, 0, pickNormalBuffer.size[0], pickNormalBuffer.size[1]);\n\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.DEPTH_BUFFER_BIT);\n gl.clearBufferiv(gl.COLOR, 0, new Int32Array([0, 0, 0, 0]));\n\n pickable.drawPickNormals(frameCtx); // Draw color-encoded fragment World-space normals\n\n const pix = pickNormalBuffer.read(1, 1, gl.RGBA_INTEGER, gl.INT, Int32Array, 4);\n\n pickNormalBuffer.unbind();\n\n const worldNormal = [\n pix[0] / math.MAX_INT,\n pix[1] / math.MAX_INT,\n pix[2] / math.MAX_INT,\n ];\n\n math.normalizeVec3(worldNormal);\n\n pickResult.worldNormal = worldNormal;\n }\n\n /**\n * Adds a {@link Marker} for occlusion testing.\n * @param marker\n */\n this.addMarker = function (marker) {\n this._occlusionTester = this._occlusionTester || new OcclusionTester(scene, renderBufferManager);\n this._occlusionTester.addMarker(marker);\n scene.occlusionTestCountdown = 0;\n };\n\n /**\n * Notifies that a {@link Marker#worldPos} has updated.\n * @param marker\n */\n this.markerWorldPosUpdated = function (marker) {\n this._occlusionTester.markerWorldPosUpdated(marker);\n };\n\n /**\n * Removes a {@link Marker} from occlusion testing.\n * @param marker\n */\n this.removeMarker = function (marker) {\n this._occlusionTester.removeMarker(marker);\n };\n\n /**\n * Performs an occlusion test for all added {@link Marker}s, updating\n * their {@link Marker#visible} properties accordingly.\n */\n this.doOcclusionTest = function () {\n\n if (this._occlusionTester && this._occlusionTester.needOcclusionTest) {\n\n updateDrawlist();\n\n this._occlusionTester.bindRenderBuf();\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n for (let i = 0, len = drawableList.length; i < len; i++) {\n const drawable = drawableList[i];\n if (!drawable.drawOcclusion || drawable.culled === true || drawable.visible === false || drawable.pickable === false) { // TODO: Option to exclude transparent?\n continue;\n }\n\n drawable.drawOcclusion(frameCtx);\n }\n }\n }\n\n this._occlusionTester.drawMarkers(frameCtx);\n this._occlusionTester.doOcclusionTest(); // Updates Marker \"visible\" properties\n this._occlusionTester.unbindRenderBuf();\n }\n };\n\n /**\n * Read pixels from the renderer's current output. Performs a force-render first.\n * @param pixels\n * @param colors\n * @param len\n * @param opaqueOnly\n * @private\n */\n this.readPixels = function (pixels, colors, len, opaqueOnly) {\n const snapshotBuffer = renderBufferManager.getRenderBuffer(\"snapshot\");\n snapshotBuffer.bind();\n snapshotBuffer.clear();\n this.render({force: true, opaqueOnly: opaqueOnly});\n let color;\n let i;\n let j;\n let k;\n for (i = 0; i < len; i++) {\n j = i * 2;\n k = i * 4;\n color = snapshotBuffer.read(pixels[j], pixels[j + 1]);\n colors[k] = color[0];\n colors[k + 1] = color[1];\n colors[k + 2] = color[2];\n colors[k + 3] = color[3];\n }\n snapshotBuffer.unbind();\n imageDirty = true;\n };\n\n /**\n * Enter snapshot mode.\n *\n * Switches rendering to a hidden snapshot canvas.\n *\n * Exit snapshot mode using endSnapshot().\n */\n this.beginSnapshot = function (params = {}) {\n const snapshotBuffer = renderBufferManager.getRenderBuffer(\"snapshot\");\n if (params.width && params.height) {\n snapshotBuffer.setSize([params.width, params.height]);\n }\n snapshotBuffer.bind();\n snapshotBuffer.clear();\n snapshotBound = true;\n };\n\n /**\n * When in snapshot mode, renders a frame of the current Scene state to the snapshot canvas.\n */\n this.renderSnapshot = function () {\n if (!snapshotBound) {\n return;\n }\n const snapshotBuffer = renderBufferManager.getRenderBuffer(\"snapshot\");\n snapshotBuffer.clear();\n this.render({force: true, opaqueOnly: false});\n imageDirty = true;\n };\n\n /**\n * When in snapshot mode, gets an image of the snapshot canvas.\n *\n * @private\n * @returns {String} The image data URI.\n */\n this.readSnapshot = function (params) {\n const snapshotBuffer = renderBufferManager.getRenderBuffer(\"snapshot\");\n return snapshotBuffer.readImage(params);\n };\n\n /**\n * Returns an HTMLCanvas containing an image of the snapshot canvas.\n *\n * - The HTMLCanvas has a CanvasRenderingContext2D.\n * - Expects the caller to draw more things on the HTMLCanvas (annotations etc).\n *\n * @returns {HTMLCanvasElement}\n */\n this.readSnapshotAsCanvas = function () {\n const snapshotBuffer = renderBufferManager.getRenderBuffer(\"snapshot\");\n return snapshotBuffer.readImageAsCanvas();\n };\n\n /**\n * Exists snapshot mode.\n *\n * Switches rendering back to the main canvas.\n */\n this.endSnapshot = function () {\n if (!snapshotBound) {\n return;\n }\n const snapshotBuffer = renderBufferManager.getRenderBuffer(\"snapshot\");\n snapshotBuffer.unbind();\n snapshotBound = false;\n };\n\n /**\n * Destroys this renderer.\n * @private\n */\n this.destroy = function () {\n\n drawableTypeInfo = {};\n drawables = {};\n\n renderBufferManager.destroy();\n\n saoOcclusionRenderer.destroy();\n saoDepthLimitedBlurRenderer.destroy();\n\n if (this._occlusionTester) {\n this._occlusionTester.destroy();\n }\n };\n};\n\nexport {Renderer};\n", @@ -175213,7 +175772,7 @@ "lineNumber": 1 }, { - "__docId__": 8907, + "__docId__": 8926, "kind": "function", "name": "Renderer", "memberof": "src/viewer/scene/webgl/Renderer.js", @@ -175245,7 +175804,7 @@ "return": null }, { - "__docId__": 8908, + "__docId__": 8927, "kind": "file", "name": "src/viewer/scene/webgl/Sampler.js", "content": "/**\n * @desc A low-level component that represents a WebGL Sampler.\n * @private\n */\nclass Sampler {\n\n constructor(gl, location) {\n this.bindTexture = function (texture, unit) {\n if (texture.bind(unit)) {\n gl.uniform1i(location, unit);\n return true;\n }\n return false;\n };\n }\n}\n\nexport {Sampler};", @@ -175256,7 +175815,7 @@ "lineNumber": 1 }, { - "__docId__": 8909, + "__docId__": 8928, "kind": "class", "name": "Sampler", "memberof": "src/viewer/scene/webgl/Sampler.js", @@ -175272,7 +175831,7 @@ "ignore": true }, { - "__docId__": 8910, + "__docId__": 8929, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Sampler.js~Sampler", @@ -175286,7 +175845,7 @@ "undocument": true }, { - "__docId__": 8911, + "__docId__": 8930, "kind": "file", "name": "src/viewer/scene/webgl/Shader.js", "content": "/**\n * @desc Represents a vertex or fragment stage within a {@link Program}.\n * @private\n */\nclass Shader {\n\n constructor(gl, type, source) {\n\n this.allocated = false;\n this.compiled = false;\n this.handle = gl.createShader(type);\n\n if (!this.handle) {\n this.errors = [\n \"Failed to allocate\"\n ];\n return;\n }\n\n this.allocated = true;\n\n gl.shaderSource(this.handle, source);\n gl.compileShader(this.handle);\n\n this.compiled = gl.getShaderParameter(this.handle, gl.COMPILE_STATUS);\n\n if (!this.compiled) {\n\n if (!gl.isContextLost()) { // Handled explicitly elsewhere, so won't re-handle here\n\n const lines = source.split(\"\\n\");\n const numberedLines = [];\n for (let i = 0; i < lines.length; i++) {\n numberedLines.push((i + 1) + \": \" + lines[i] + \"\\n\");\n }\n this.errors = [];\n this.errors.push(\"\");\n this.errors.push(gl.getShaderInfoLog(this.handle));\n this.errors = this.errors.concat(numberedLines.join(\"\"));\n }\n }\n }\n\n destroy() {\n\n }\n}\n\nexport {Shader};", @@ -175297,7 +175856,7 @@ "lineNumber": 1 }, { - "__docId__": 8912, + "__docId__": 8931, "kind": "class", "name": "Shader", "memberof": "src/viewer/scene/webgl/Shader.js", @@ -175313,7 +175872,7 @@ "ignore": true }, { - "__docId__": 8913, + "__docId__": 8932, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -175327,7 +175886,7 @@ "undocument": true }, { - "__docId__": 8914, + "__docId__": 8933, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -175344,7 +175903,7 @@ } }, { - "__docId__": 8915, + "__docId__": 8934, "kind": "member", "name": "compiled", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -175361,7 +175920,7 @@ } }, { - "__docId__": 8916, + "__docId__": 8935, "kind": "member", "name": "handle", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -175378,7 +175937,7 @@ } }, { - "__docId__": 8917, + "__docId__": 8936, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -175395,7 +175954,7 @@ } }, { - "__docId__": 8922, + "__docId__": 8941, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -175411,7 +175970,7 @@ "return": null }, { - "__docId__": 8923, + "__docId__": 8942, "kind": "file", "name": "src/viewer/scene/webgl/Texture2D.js", "content": "import {utils} from '../utils.js';\nimport {convertConstant} from \"./convertConstant.js\";\nimport {\n NearestFilter,\n NearestMipmapLinearFilter,\n NearestMipMapNearestFilter,\n RGBAFormat,\n sRGBEncoding,\n UnsignedByteType,\n RepeatWrapping,\n ClampToEdgeWrapping,\n LinearFilter,\n NearestMipmapNearestFilter\n} from \"../constants/constants.js\";\nimport {getExtension} from \"./getExtension.js\";\n\nconst color = new Uint8Array([0, 0, 0, 1]);\n\n/**\n * @desc A low-level component that represents a 2D WebGL texture.\n *\n * @private\n */\nclass Texture2D {\n\n constructor({gl, target, format, type, wrapS, wrapT, wrapR, encoding, preloadColor, premultiplyAlpha, flipY}) {\n\n this.gl = gl;\n\n this.target = target || gl.TEXTURE_2D;\n this.format = format || RGBAFormat;\n this.type = type || UnsignedByteType;\n this.internalFormat = null;\n this.premultiplyAlpha = !!premultiplyAlpha;\n this.flipY = !!flipY;\n this.unpackAlignment = 4;\n this.wrapS = wrapS || RepeatWrapping;\n this.wrapT = wrapT || RepeatWrapping;\n this.wrapR = wrapR || RepeatWrapping;\n this.encoding = encoding || sRGBEncoding;\n this.texture = gl.createTexture();\n\n if (preloadColor) {\n this.setPreloadColor(preloadColor); // Prevents \"there is no texture bound to the unit 0\" error\n }\n\n this.allocated = true;\n }\n\n setPreloadColor(value) {\n if (!value) {\n color[0] = 0;\n color[1] = 0;\n color[2] = 0;\n color[3] = 255;\n } else {\n color[0] = Math.floor(value[0] * 255);\n color[1] = Math.floor(value[1] * 255);\n color[2] = Math.floor(value[2] * 255);\n color[3] = Math.floor((value[3] !== undefined ? value[3] : 1) * 255);\n }\n const gl = this.gl;\n gl.bindTexture(this.target, this.texture);\n if (this.target === gl.TEXTURE_CUBE_MAP) {\n const faces = [\n gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_X,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Y,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Z,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Z\n ];\n for (let i = 0, len = faces.length; i < len; i++) {\n gl.texImage2D(faces[i], 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, color);\n }\n } else {\n gl.texImage2D(this.target, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, color);\n }\n gl.bindTexture(this.target, null);\n }\n\n setTarget(target) {\n this.target = target || this.gl.TEXTURE_2D;\n }\n\n setImage(image, props = {}) {\n\n const gl = this.gl;\n\n if (props.format !== undefined) {\n this.format = props.format;\n }\n if (props.internalFormat !== undefined) {\n this.internalFormat = props.internalFormat;\n }\n if (props.encoding !== undefined) {\n this.encoding = props.encoding;\n }\n if (props.type !== undefined) {\n this.type = props.type;\n }\n if (props.flipY !== undefined) {\n this.flipY = props.flipY;\n }\n if (props.premultiplyAlpha !== undefined) {\n this.premultiplyAlpha = props.premultiplyAlpha;\n }\n if (props.unpackAlignment !== undefined) {\n this.unpackAlignment = props.unpackAlignment;\n }\n if (props.minFilter !== undefined) {\n this.minFilter = props.minFilter;\n }\n if (props.magFilter !== undefined) {\n this.magFilter = props.magFilter;\n }\n if (props.wrapS !== undefined) {\n this.wrapS = props.wrapS;\n }\n if (props.wrapT !== undefined) {\n this.wrapT = props.wrapT;\n }\n if (props.wrapR !== undefined) {\n this.wrapR = props.wrapR;\n }\n\n let generateMipMap = false;\n\n gl.bindTexture(this.target, this.texture);\n\n const bak1 = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);\n\n const bak2 = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);\n\n const bak3 = gl.getParameter(gl.UNPACK_ALIGNMENT);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, this.unpackAlignment);\n\n const bak4 = gl.getParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL);;\n gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);\n\n const minFilter = convertConstant(gl, this.minFilter);\n gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, minFilter);\n\n if (minFilter === gl.NEAREST_MIPMAP_NEAREST\n || minFilter === gl.LINEAR_MIPMAP_NEAREST\n || minFilter === gl.NEAREST_MIPMAP_LINEAR\n || minFilter === gl.LINEAR_MIPMAP_LINEAR) {\n generateMipMap = true;\n }\n\n const magFilter = convertConstant(gl, this.magFilter);\n if (magFilter) {\n gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, magFilter);\n }\n\n const wrapS = convertConstant(gl, this.wrapS);\n if (wrapS) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, wrapS);\n }\n\n const wrapT = convertConstant(gl, this.wrapT);\n if (wrapT) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, wrapT);\n }\n\n const glFormat = convertConstant(gl, this.format, this.encoding);\n const glType = convertConstant(gl, this.type);\n const glInternalFormat = getInternalFormat(gl, this.internalFormat, glFormat, glType, this.encoding, false);\n\n if (this.target === gl.TEXTURE_CUBE_MAP) {\n if (utils.isArray(image)) {\n const images = image;\n const faces = [\n gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_X,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Y,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Z,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Z\n ];\n for (let i = 0, len = faces.length; i < len; i++) {\n gl.texImage2D(faces[i], 0, glInternalFormat, glFormat, glType, images[i]);\n }\n }\n } else {\n gl.texImage2D(gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image);\n }\n\n if (generateMipMap) {\n gl.generateMipmap(this.target);\n }\n\n gl.bindTexture(this.target, null);\n\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, bak1);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, bak2);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, bak3);\n gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, bak4);\n }\n\n setCompressedData({mipmaps, props = {}}) {\n\n const gl = this.gl;\n const levels = mipmaps.length;\n\n // Cache props\n\n if (props.format !== undefined) {\n this.format = props.format;\n }\n if (props.internalFormat !== undefined) {\n this.internalFormat = props.internalFormat;\n }\n if (props.encoding !== undefined) {\n this.encoding = props.encoding;\n }\n if (props.type !== undefined) {\n this.type = props.type;\n }\n if (props.flipY !== undefined) {\n this.flipY = props.flipY;\n }\n if (props.premultiplyAlpha !== undefined) {\n this.premultiplyAlpha = props.premultiplyAlpha;\n }\n if (props.unpackAlignment !== undefined) {\n this.unpackAlignment = props.unpackAlignment;\n }\n if (props.minFilter !== undefined) {\n this.minFilter = props.minFilter;\n }\n if (props.magFilter !== undefined) {\n this.magFilter = props.magFilter;\n }\n if (props.wrapS !== undefined) {\n this.wrapS = props.wrapS;\n }\n if (props.wrapT !== undefined) {\n this.wrapT = props.wrapT;\n }\n if (props.wrapR !== undefined) {\n this.wrapR = props.wrapR;\n }\n\n gl.activeTexture(gl.TEXTURE0 + 0);\n gl.bindTexture(this.target, this.texture);\n\n let supportsMips = mipmaps.length > 1;\n\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, this.unpackAlignment);\n gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);\n\n const wrapS = convertConstant(gl, this.wrapS);\n if (wrapS) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, wrapS);\n }\n\n const wrapT = convertConstant(gl, this.wrapT);\n if (wrapT) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, wrapT);\n }\n\n if (this.type === gl.TEXTURE_3D || this.type === gl.TEXTURE_2D_ARRAY) {\n const wrapR = convertConstant(gl, this.wrapR);\n if (wrapR) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_R, wrapR);\n }\n gl.texParameteri(this.type, gl.TEXTURE_WRAP_R, wrapR);\n }\n\n if (supportsMips) {\n gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, filterFallback(gl, this.minFilter));\n gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, filterFallback(gl, this.magFilter));\n\n } else {\n gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, convertConstant(gl, this.minFilter));\n gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, convertConstant(gl, this.magFilter));\n }\n\n const glFormat = convertConstant(gl, this.format, this.encoding);\n const glType = convertConstant(gl, this.type);\n const glInternalFormat = getInternalFormat(gl, this.internalFormat, glFormat, glType, this.encoding, false);\n\n gl.texStorage2D(gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n\n for (let i = 0, len = mipmaps.length; i < len; i++) {\n\n const mipmap = mipmaps[i];\n\n if (this.format !== RGBAFormat) {\n if (glFormat !== null) {\n gl.compressedTexSubImage2D(gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n } else {\n console.warn('Attempt to load unsupported compressed texture format in .setCompressedData()');\n }\n } else {\n gl.texSubImage2D(gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n }\n }\n\n // if (generateMipMap) {\n // // gl.generateMipmap(this.target); // Only for roughness textures?\n // }\n\n gl.bindTexture(this.target, null);\n }\n\n setProps(props) {\n const gl = this.gl;\n gl.bindTexture(this.target, this.texture);\n this._uploadProps(props);\n gl.bindTexture(this.target, null);\n }\n\n _uploadProps(props) {\n const gl = this.gl;\n if (props.format !== undefined) {\n this.format = props.format;\n }\n if (props.internalFormat !== undefined) {\n this.internalFormat = props.internalFormat;\n }\n if (props.encoding !== undefined) {\n this.encoding = props.encoding;\n }\n if (props.type !== undefined) {\n this.type = props.type;\n }\n if (props.minFilter !== undefined) {\n const minFilter = convertConstant(gl, props.minFilter);\n if (minFilter) {\n this.minFilter = props.minFilter;\n gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, minFilter);\n if (minFilter === gl.NEAREST_MIPMAP_NEAREST || minFilter === gl.LINEAR_MIPMAP_NEAREST || minFilter === gl.NEAREST_MIPMAP_LINEAR || minFilter === gl.LINEAR_MIPMAP_LINEAR) {\n gl.generateMipmap(this.target);\n }\n }\n }\n if (props.magFilter !== undefined) {\n const magFilter = convertConstant(gl, props.magFilter);\n if (magFilter) {\n this.magFilter = props.magFilter;\n gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, magFilter);\n }\n }\n if (props.wrapS !== undefined) {\n const wrapS = convertConstant(gl, props.wrapS);\n if (wrapS) {\n this.wrapS = props.wrapS;\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, wrapS);\n }\n }\n if (props.wrapT !== undefined) {\n const wrapT = convertConstant(gl, props.wrapT);\n if (wrapT) {\n this.wrapT = props.wrapT;\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, wrapT);\n }\n }\n }\n\n bind(unit) {\n if (!this.allocated) {\n return;\n }\n if (this.texture) {\n const gl = this.gl;\n gl.activeTexture(gl[\"TEXTURE\" + unit]);\n gl.bindTexture(this.target, this.texture);\n return true;\n }\n return false;\n }\n\n unbind(unit) {\n if (!this.allocated) {\n return;\n }\n if (this.texture) {\n const gl = this.gl;\n gl.activeTexture(gl[\"TEXTURE\" + unit]);\n gl.bindTexture(this.target, null);\n }\n }\n\n destroy() {\n if (!this.allocated) {\n return;\n }\n if (this.texture) {\n this.gl.deleteTexture(this.texture);\n this.texture = null;\n }\n }\n}\n\nfunction getInternalFormat(gl, internalFormatName, glFormat, glType, encoding, isVideoTexture = false) {\n if (internalFormatName !== null) {\n if (gl[internalFormatName] !== undefined) {\n return gl[internalFormatName];\n }\n console.warn('Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'');\n }\n let internalFormat = glFormat;\n if (glFormat === gl.RED) {\n if (glType === gl.FLOAT) internalFormat = gl.R32F;\n if (glType === gl.HALF_FLOAT) internalFormat = gl.R16F;\n if (glType === gl.UNSIGNED_BYTE) internalFormat = gl.R8;\n }\n if (glFormat === gl.RG) {\n if (glType === gl.FLOAT) internalFormat = gl.RG32F;\n if (glType === gl.HALF_FLOAT) internalFormat = gl.RG16F;\n if (glType === gl.UNSIGNED_BYTE) internalFormat = gl.RG8;\n }\n if (glFormat === gl.RGBA) {\n if (glType === gl.FLOAT) internalFormat = gl.RGBA32F;\n if (glType === gl.HALF_FLOAT) internalFormat = gl.RGBA16F;\n if (glType === gl.UNSIGNED_BYTE) internalFormat = (encoding === sRGBEncoding && isVideoTexture === false) ? gl.SRGB8_ALPHA8 : gl.RGBA8;\n if (glType === gl.UNSIGNED_SHORT_4_4_4_4) internalFormat = gl.RGBA4;\n if (glType === gl.UNSIGNED_SHORT_5_5_5_1) internalFormat = gl.RGB5_A1;\n }\n if (internalFormat === gl.R16F || internalFormat === gl.R32F ||\n internalFormat === gl.RG16F || internalFormat === gl.RG32F ||\n internalFormat === gl.RGBA16F || internalFormat === gl.RGBA32F) {\n getExtension(gl, 'EXT_color_buffer_float');\n }\n return internalFormat;\n}\n\nfunction filterFallback(gl, f) {\n if (f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter) {\n return gl.NEAREST;\n }\n return gl.LINEAR;\n\n}\n\nexport {Texture2D};", @@ -175422,7 +175981,7 @@ "lineNumber": 1 }, { - "__docId__": 8924, + "__docId__": 8943, "kind": "variable", "name": "color", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -175443,7 +176002,7 @@ "ignore": true }, { - "__docId__": 8925, + "__docId__": 8944, "kind": "function", "name": "getInternalFormat", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -175507,7 +176066,7 @@ "ignore": true }, { - "__docId__": 8926, + "__docId__": 8945, "kind": "function", "name": "filterFallback", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -175544,7 +176103,7 @@ "ignore": true }, { - "__docId__": 8927, + "__docId__": 8946, "kind": "class", "name": "Texture2D", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -175560,7 +176119,7 @@ "ignore": true }, { - "__docId__": 8928, + "__docId__": 8947, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175574,7 +176133,7 @@ "undocument": true }, { - "__docId__": 8929, + "__docId__": 8948, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175591,7 +176150,7 @@ } }, { - "__docId__": 8930, + "__docId__": 8949, "kind": "member", "name": "target", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175608,7 +176167,7 @@ } }, { - "__docId__": 8931, + "__docId__": 8950, "kind": "member", "name": "format", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175625,7 +176184,7 @@ } }, { - "__docId__": 8932, + "__docId__": 8951, "kind": "member", "name": "type", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175642,7 +176201,7 @@ } }, { - "__docId__": 8933, + "__docId__": 8952, "kind": "member", "name": "internalFormat", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175659,7 +176218,7 @@ } }, { - "__docId__": 8934, + "__docId__": 8953, "kind": "member", "name": "premultiplyAlpha", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175676,7 +176235,7 @@ } }, { - "__docId__": 8935, + "__docId__": 8954, "kind": "member", "name": "flipY", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175693,7 +176252,7 @@ } }, { - "__docId__": 8936, + "__docId__": 8955, "kind": "member", "name": "unpackAlignment", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175710,7 +176269,7 @@ } }, { - "__docId__": 8937, + "__docId__": 8956, "kind": "member", "name": "wrapS", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175727,7 +176286,7 @@ } }, { - "__docId__": 8938, + "__docId__": 8957, "kind": "member", "name": "wrapT", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175744,7 +176303,7 @@ } }, { - "__docId__": 8939, + "__docId__": 8958, "kind": "member", "name": "wrapR", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175761,7 +176320,7 @@ } }, { - "__docId__": 8940, + "__docId__": 8959, "kind": "member", "name": "encoding", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175778,7 +176337,7 @@ } }, { - "__docId__": 8941, + "__docId__": 8960, "kind": "member", "name": "texture", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175795,7 +176354,7 @@ } }, { - "__docId__": 8942, + "__docId__": 8961, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175812,7 +176371,7 @@ } }, { - "__docId__": 8943, + "__docId__": 8962, "kind": "method", "name": "setPreloadColor", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175835,7 +176394,7 @@ "return": null }, { - "__docId__": 8944, + "__docId__": 8963, "kind": "method", "name": "setTarget", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175858,7 +176417,7 @@ "return": null }, { - "__docId__": 8946, + "__docId__": 8965, "kind": "method", "name": "setImage", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175890,7 +176449,7 @@ "return": null }, { - "__docId__": 8954, + "__docId__": 8973, "kind": "member", "name": "minFilter", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175907,7 +176466,7 @@ } }, { - "__docId__": 8955, + "__docId__": 8974, "kind": "member", "name": "magFilter", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175924,7 +176483,7 @@ } }, { - "__docId__": 8959, + "__docId__": 8978, "kind": "method", "name": "setCompressedData", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175952,7 +176511,7 @@ "return": null }, { - "__docId__": 8972, + "__docId__": 8991, "kind": "method", "name": "setProps", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175975,7 +176534,7 @@ "return": null }, { - "__docId__": 8973, + "__docId__": 8992, "kind": "method", "name": "_uploadProps", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -175999,7 +176558,7 @@ "return": null }, { - "__docId__": 8982, + "__docId__": 9001, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -176026,7 +176585,7 @@ } }, { - "__docId__": 8983, + "__docId__": 9002, "kind": "method", "name": "unbind", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -176049,7 +176608,7 @@ "return": null }, { - "__docId__": 8984, + "__docId__": 9003, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -176065,7 +176624,7 @@ "return": null }, { - "__docId__": 8986, + "__docId__": 9005, "kind": "file", "name": "src/viewer/scene/webgl/convertConstant.js", "content": "import {\n RGBA_ASTC_4x4_Format,\n RGBA_ASTC_5x4_Format,\n RGBA_ASTC_5x5_Format,\n RGBA_ASTC_6x5_Format,\n RGBA_ASTC_6x6_Format,\n RGBA_ASTC_8x5_Format,\n RGBA_ASTC_8x6_Format,\n RGBA_ASTC_8x8_Format,\n RGBA_ASTC_10x5_Format,\n RGBA_ASTC_10x6_Format,\n RGBA_ASTC_10x8_Format,\n RGBA_ASTC_10x10_Format,\n RGBA_ASTC_12x10_Format,\n RGBA_ASTC_12x12_Format,\n RGB_ETC1_Format,\n RGB_ETC2_Format,\n RGBA_ETC2_EAC_Format,\n RGBA_PVRTC_2BPPV1_Format,\n RGBA_PVRTC_4BPPV1_Format,\n RGB_PVRTC_2BPPV1_Format,\n RGB_PVRTC_4BPPV1_Format,\n RGBA_S3TC_DXT5_Format,\n RGBA_S3TC_DXT3_Format,\n RGBA_S3TC_DXT1_Format,\n RGB_S3TC_DXT1_Format,\n DepthFormat,\n DepthStencilFormat,\n LuminanceAlphaFormat,\n LuminanceFormat,\n RedFormat,\n RGBFormat,\n RGBAFormat,\n AlphaFormat,\n RedIntegerFormat,\n RGFormat,\n RGIntegerFormat,\n RGBAIntegerFormat,\n HalfFloatType,\n FloatType,\n UnsignedIntType,\n IntType,\n UnsignedShortType,\n ShortType,\n ByteType,\n UnsignedInt248Type,\n UnsignedShort5551Type,\n UnsignedShort4444Type,\n UnsignedByteType,\n RGBA_BPTC_Format,\n sRGBEncoding,\n // _SRGBAFormat,\n RepeatWrapping,\n ClampToEdgeWrapping,\n NearestFilter,\n LinearFilter,\n NearestMipMapNearestFilter,\n LinearMipMapNearestFilter,\n NearestMipMapLinearFilter, LinearMipMapLinearFilter\n} from '../constants/constants.js';\n\nimport {getExtension} from \"./getExtension.js\";\n\n/**\n * @private\n */\nfunction convertConstant(gl, constantVal, encoding = null) {\n\n let extension;\n const p = constantVal;\n\n if (p === UnsignedByteType) return gl.UNSIGNED_BYTE;\n if (p === UnsignedShort4444Type) return gl.UNSIGNED_SHORT_4_4_4_4;\n if (p === UnsignedShort5551Type) return gl.UNSIGNED_SHORT_5_5_5_1;\n\n if (p === ByteType) return gl.BYTE;\n if (p === ShortType) return gl.SHORT;\n if (p === UnsignedShortType) return gl.UNSIGNED_SHORT;\n if (p === IntType) return gl.INT;\n if (p === UnsignedIntType) return gl.UNSIGNED_INT;\n if (p === FloatType) return gl.FLOAT;\n\n if (p === HalfFloatType) {\n return gl.HALF_FLOAT;\n }\n\n if (p === AlphaFormat) return gl.ALPHA;\n if (p === RGBAFormat) return gl.RGBA;\n if (p === LuminanceFormat) return gl.LUMINANCE;\n if (p === LuminanceAlphaFormat) return gl.LUMINANCE_ALPHA;\n if (p === DepthFormat) return gl.DEPTH_COMPONENT;\n if (p === DepthStencilFormat) return gl.DEPTH_STENCIL;\n if (p === RedFormat) return gl.RED;\n\n if (p === RGBFormat) {\n return gl.RGBA;\n }\n\n // WebGL2 formats.\n\n if (p === RedIntegerFormat) return gl.RED_INTEGER;\n if (p === RGFormat) return gl.RG;\n if (p === RGIntegerFormat) return gl.RG_INTEGER;\n if (p === RGBAIntegerFormat) return gl.RGBA_INTEGER;\n\n // S3TC\n\n if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n if (encoding === sRGBEncoding) {\n const extension = getExtension(gl, 'WEBGL_compressed_texture_s3tc_srgb');\n if (extension !== null) {\n if (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n if (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n } else {\n return null;\n }\n } else {\n extension = getExtension(gl, 'WEBGL_compressed_texture_s3tc');\n if (extension !== null) {\n if (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n if (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n } else {\n return null;\n }\n }\n }\n\n // PVRTC\n\n if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) {\n const extension = getExtension(gl, 'WEBGL_compressed_texture_pvrtc');\n if (extension !== null) {\n if (p === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n if (p === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n if (p === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n if (p === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n } else {\n return null;\n }\n }\n\n // ETC1\n\n if (p === RGB_ETC1_Format) {\n const extension = getExtension(gl, 'WEBGL_compressed_texture_etc1');\n if (extension !== null) {\n return extension.COMPRESSED_RGB_ETC1_WEBGL;\n } else {\n return null;\n }\n }\n\n // ETC2\n\n if (p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format) {\n const extension = getExtension(gl, 'WEBGL_compressed_texture_etc');\n if (extension !== null) {\n if (p === RGB_ETC2_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n if (p === RGBA_ETC2_EAC_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n } else {\n return null;\n }\n }\n\n // ASTC\n\n if (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format) {\n const extension = getExtension(gl, 'WEBGL_compressed_texture_astc');\n if (extension !== null) {\n if (p === RGBA_ASTC_4x4_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n if (p === RGBA_ASTC_5x4_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n if (p === RGBA_ASTC_5x5_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n if (p === RGBA_ASTC_6x5_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n if (p === RGBA_ASTC_6x6_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n if (p === RGBA_ASTC_8x5_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n if (p === RGBA_ASTC_8x6_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n if (p === RGBA_ASTC_8x8_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n if (p === RGBA_ASTC_10x5_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n if (p === RGBA_ASTC_10x6_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n if (p === RGBA_ASTC_10x8_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n if (p === RGBA_ASTC_10x10_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n if (p === RGBA_ASTC_12x10_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n if (p === RGBA_ASTC_12x12_Format) return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n } else {\n return null;\n }\n }\n\n // BPTC\n\n if (p === RGBA_BPTC_Format) {\n const extension = getExtension(gl, 'EXT_texture_compression_bptc');\n if (extension !== null) {\n if (p === RGBA_BPTC_Format) {\n return (encoding === sRGBEncoding) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n }\n } else {\n return null;\n }\n }\n\n //\n\n if (p === UnsignedInt248Type) {\n return gl.UNSIGNED_INT_24_8;\n }\n if (p === RepeatWrapping) {\n return gl.REPEAT;\n }\n if (p === ClampToEdgeWrapping) {\n return gl.CLAMP_TO_EDGE;\n }\n if (p === NearestMipMapNearestFilter) {\n return gl.NEAREST_MIPMAP_LINEAR;\n }\n if (p === NearestMipMapLinearFilter) {\n return gl.NEAREST_MIPMAP_LINEAR;\n }\n if (p === LinearMipMapNearestFilter) {\n return gl.LINEAR_MIPMAP_NEAREST;\n }\n if (p === LinearMipMapLinearFilter) {\n return gl.LINEAR_MIPMAP_LINEAR;\n }\n if (p === NearestFilter) {\n return gl.NEAREST;\n }\n if (p === LinearFilter) {\n return gl.LINEAR;\n }\n\n return null;\n}\n\n\nexport {convertConstant};", @@ -176076,7 +176635,7 @@ "lineNumber": 1 }, { - "__docId__": 8987, + "__docId__": 9006, "kind": "function", "name": "convertConstant", "memberof": "src/viewer/scene/webgl/convertConstant.js", @@ -176120,7 +176679,7 @@ } }, { - "__docId__": 8988, + "__docId__": 9007, "kind": "file", "name": "src/viewer/scene/webgl/getExtension.js", "content": "/**\n * @private\n */\nfunction getExtension (gl, name) {\n if (gl._cachedExtensions === undefined) {\n gl._cachedExtensions = {};\n }\n if (gl._cachedExtensions[name] !== undefined) {\n return gl._cachedExtensions[name];\n }\n let extension;\n switch (name) {\n case 'WEBGL_depth_texture':\n extension = gl.getExtension('WEBGL_depth_texture') || gl.getExtension('MOZ_WEBGL_depth_texture') || gl.getExtension('WEBKIT_WEBGL_depth_texture');\n break;\n case 'EXT_texture_filter_anisotropic':\n extension = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');\n break;\n case 'WEBGL_compressed_texture_s3tc':\n extension = gl.getExtension('WEBGL_compressed_texture_s3tc') || gl.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc');\n break;\n case 'WEBGL_compressed_texture_pvrtc':\n extension = gl.getExtension('WEBGL_compressed_texture_pvrtc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc');\n break;\n default:\n extension = gl.getExtension(name);\n }\n gl._cachedExtensions[name] = extension;\n return extension;\n}\n\nexport {getExtension};", @@ -176131,7 +176690,7 @@ "lineNumber": 1 }, { - "__docId__": 8989, + "__docId__": 9008, "kind": "function", "name": "getExtension", "memberof": "src/viewer/scene/webgl/getExtension.js", @@ -176167,7 +176726,7 @@ } }, { - "__docId__": 8990, + "__docId__": 9009, "kind": "file", "name": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js", "content": "import {math} from \"../../math/math.js\";\nimport {ArrayBuf} from \"../ArrayBuf.js\";\n\n/**\n * @private\n */\nclass OcclusionLayer {\n\n constructor(scene, origin) {\n\n this.scene = scene;\n this.aabb = math.AABB3();\n this.origin = math.vec3(origin);\n this.originHash = this.origin.join();\n this.numMarkers = 0;\n this.markers = {};\n this.markerList = []; // Ordered array of Markers\n this.markerIndices = {}; // ID map of Marker indices in _markerList\n this.positions = []; // Packed array of World-space marker positions\n this.indices = []; // Indices corresponding to array above\n this.positionsBuf = null;\n this.lenPositionsBuf = 0;\n this.indicesBuf = null;\n this.sectionPlanesActive = [];\n this.culledBySectionPlanes = false;\n this.occlusionTestList = []; // List of\n this.lenOcclusionTestList = 0;\n this.pixels = [];\n this.aabbDirty = false;\n this.markerListDirty = false;\n this.positionsDirty = true;\n this.occlusionTestListDirty = false;\n }\n\n addMarker(marker) {\n this.markers[marker.id] = marker;\n this.markerListDirty = true;\n this.numMarkers++;\n }\n\n markerWorldPosUpdated(marker) {\n if (!this.markers[marker.id]) { // Not added\n return;\n }\n const i = this.markerIndices[marker.id];\n this.positions[i * 3 + 0] = marker.worldPos[0];\n this.positions[i * 3 + 1] = marker.worldPos[1];\n this.positions[i * 3 + 2] = marker.worldPos[2];\n this.positionsDirty = true; // TODO: avoid reallocating VBO each time\n }\n\n removeMarker(marker) {\n delete this.markers[marker.id];\n this.markerListDirty = true;\n this.numMarkers--;\n }\n\n update() {\n if (this.markerListDirty) {\n this._buildMarkerList();\n this.markerListDirty = false;\n this.positionsDirty = true;\n this.occlusionTestListDirty = true;\n }\n if (this.positionsDirty) { ////////////// TODO: Don't rebuild this when positions change, very wasteful\n this._buildPositions();\n this.positionsDirty = false;\n this.aabbDirty = true;\n this.vbosDirty = true;\n }\n if (this.aabbDirty) {\n this._buildAABB();\n this.aabbDirty = false;\n }\n if (this.vbosDirty) {\n this._buildVBOs();\n this.vbosDirty = false;\n }\n if (this.occlusionTestListDirty) {\n this._buildOcclusionTestList();\n }\n this._updateActiveSectionPlanes();\n }\n\n _buildMarkerList() {\n this.numMarkers = 0;\n for (var id in this.markers) {\n if (this.markers.hasOwnProperty(id)) {\n this.markerList[this.numMarkers] = this.markers[id];\n this.markerIndices[id] = this.numMarkers;\n this.numMarkers++;\n }\n }\n this.markerList.length = this.numMarkers;\n }\n\n _buildPositions() {\n let j = 0;\n for (let i = 0; i < this.numMarkers; i++) {\n if (this.markerList[i]) {\n const marker = this.markerList[i];\n const worldPos = marker.worldPos;\n this.positions[j++] = worldPos[0];\n this.positions[j++] = worldPos[1];\n this.positions[j++] = worldPos[2];\n this.indices[i] = i;\n }\n }\n this.positions.length = this.numMarkers * 3;\n this.indices.length = this.numMarkers;\n }\n\n _buildAABB() {\n const aabb = this.aabb;\n math.collapseAABB3(aabb);\n math.expandAABB3Points3(aabb, this.positions);\n const origin = this.origin;\n aabb[0] += origin[0];\n aabb[1] += origin[1];\n aabb[2] += origin[2];\n aabb[3] += origin[0];\n aabb[4] += origin[1];\n aabb[5] += origin[2];\n }\n\n _buildVBOs() {\n if (this.positionsBuf) {\n if (this.lenPositionsBuf === this.positions.length) { // Just updating buffer elements, don't need to reallocate\n this.positionsBuf.setData(this.positions); // Indices don't need updating\n return;\n }\n this.positionsBuf.destroy();\n this.positionsBuf = null;\n this.indicesBuf.destroy();\n this.indicesBuf = null;\n }\n const gl = this.scene.canvas.gl;\n const lenPositions = this.numMarkers * 3;\n const lenIndices = this.numMarkers;\n this.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this.positions), lenPositions, 3, gl.STATIC_DRAW);\n this.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(this.indices), lenIndices, 1, gl.STATIC_DRAW);\n this.lenPositionsBuf = this.positions.length;\n }\n\n _buildOcclusionTestList() {\n const canvas = this.scene.canvas;\n const near = this.scene.camera.perspective.near; // Assume near enough to ortho near\n const boundary = canvas.boundary;\n const canvasWidth = boundary[2];\n const canvasHeight = boundary[3];\n let lenPixels = 0;\n this.lenOcclusionTestList = 0;\n for (let i = 0; i < this.numMarkers; i++) {\n const marker = this.markerList[i];\n const viewPos = marker.viewPos;\n if (viewPos[2] > -near) { // Clipped by near plane\n marker._setVisible(false);\n continue;\n }\n const canvasPos = marker.canvasPos;\n const canvasX = canvasPos[0];\n const canvasY = canvasPos[1];\n if ((canvasX + 10) < 0 || (canvasY + 10) < 0 || (canvasX - 10) > canvasWidth || (canvasY - 10) > canvasHeight) {\n marker._setVisible(false);\n continue;\n }\n if (marker.entity && !marker.entity.visible) {\n marker._setVisible(false);\n continue;\n }\n if (marker.occludable) {\n this.occlusionTestList[this.lenOcclusionTestList++] = marker;\n this.pixels[lenPixels++] = canvasX;\n this.pixels[lenPixels++] = canvasY;\n continue;\n }\n marker._setVisible(true);\n }\n }\n\n _updateActiveSectionPlanes() {\n const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;\n const numSectionPlanes = sectionPlanes.length;\n if (numSectionPlanes > 0) {\n for (let i = 0; i < numSectionPlanes; i++) {\n const sectionPlane = sectionPlanes[i];\n if (!sectionPlane.active) {\n this.sectionPlanesActive[i] = false;\n } else {\n const intersect = math.planeAABB3Intersect(sectionPlane.dir, sectionPlane.dist, this.aabb);\n const outside = (intersect === -1);\n if (outside) {\n this.culledBySectionPlanes = true;\n return;\n }\n const intersecting = (intersect === 0);\n this.sectionPlanesActive[i] = intersecting;\n }\n }\n }\n this.culledBySectionPlanes = false;\n }\n\n destroy() {\n this.markers = {};\n this.markerList.length = 0;\n if (this.positionsBuf) {\n this.positionsBuf.destroy();\n }\n if (this.indicesBuf) {\n this.indicesBuf.destroy();\n }\n }\n}\n\n\nexport {OcclusionLayer};", @@ -176178,7 +176737,7 @@ "lineNumber": 1 }, { - "__docId__": 8991, + "__docId__": 9010, "kind": "class", "name": "OcclusionLayer", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js", @@ -176194,7 +176753,7 @@ "ignore": true }, { - "__docId__": 8992, + "__docId__": 9011, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176208,7 +176767,7 @@ "undocument": true }, { - "__docId__": 8993, + "__docId__": 9012, "kind": "member", "name": "scene", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176225,7 +176784,7 @@ } }, { - "__docId__": 8994, + "__docId__": 9013, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176242,7 +176801,7 @@ } }, { - "__docId__": 8995, + "__docId__": 9014, "kind": "member", "name": "origin", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176259,7 +176818,7 @@ } }, { - "__docId__": 8996, + "__docId__": 9015, "kind": "member", "name": "originHash", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176276,7 +176835,7 @@ } }, { - "__docId__": 8997, + "__docId__": 9016, "kind": "member", "name": "numMarkers", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176293,7 +176852,7 @@ } }, { - "__docId__": 8998, + "__docId__": 9017, "kind": "member", "name": "markers", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176310,7 +176869,7 @@ } }, { - "__docId__": 8999, + "__docId__": 9018, "kind": "member", "name": "markerList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176327,7 +176886,7 @@ } }, { - "__docId__": 9000, + "__docId__": 9019, "kind": "member", "name": "markerIndices", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176344,7 +176903,7 @@ } }, { - "__docId__": 9001, + "__docId__": 9020, "kind": "member", "name": "positions", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176361,7 +176920,7 @@ } }, { - "__docId__": 9002, + "__docId__": 9021, "kind": "member", "name": "indices", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176378,7 +176937,7 @@ } }, { - "__docId__": 9003, + "__docId__": 9022, "kind": "member", "name": "positionsBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176395,7 +176954,7 @@ } }, { - "__docId__": 9004, + "__docId__": 9023, "kind": "member", "name": "lenPositionsBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176412,7 +176971,7 @@ } }, { - "__docId__": 9005, + "__docId__": 9024, "kind": "member", "name": "indicesBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176429,7 +176988,7 @@ } }, { - "__docId__": 9006, + "__docId__": 9025, "kind": "member", "name": "sectionPlanesActive", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176446,7 +177005,7 @@ } }, { - "__docId__": 9007, + "__docId__": 9026, "kind": "member", "name": "culledBySectionPlanes", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176463,7 +177022,7 @@ } }, { - "__docId__": 9008, + "__docId__": 9027, "kind": "member", "name": "occlusionTestList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176480,7 +177039,7 @@ } }, { - "__docId__": 9009, + "__docId__": 9028, "kind": "member", "name": "lenOcclusionTestList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176497,7 +177056,7 @@ } }, { - "__docId__": 9010, + "__docId__": 9029, "kind": "member", "name": "pixels", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176514,7 +177073,7 @@ } }, { - "__docId__": 9011, + "__docId__": 9030, "kind": "member", "name": "aabbDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176531,7 +177090,7 @@ } }, { - "__docId__": 9012, + "__docId__": 9031, "kind": "member", "name": "markerListDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176548,7 +177107,7 @@ } }, { - "__docId__": 9013, + "__docId__": 9032, "kind": "member", "name": "positionsDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176565,7 +177124,7 @@ } }, { - "__docId__": 9014, + "__docId__": 9033, "kind": "member", "name": "occlusionTestListDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176582,7 +177141,7 @@ } }, { - "__docId__": 9015, + "__docId__": 9034, "kind": "method", "name": "addMarker", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176605,7 +177164,7 @@ "return": null }, { - "__docId__": 9017, + "__docId__": 9036, "kind": "method", "name": "markerWorldPosUpdated", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176628,7 +177187,7 @@ "return": null }, { - "__docId__": 9019, + "__docId__": 9038, "kind": "method", "name": "removeMarker", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176651,7 +177210,7 @@ "return": null }, { - "__docId__": 9021, + "__docId__": 9040, "kind": "method", "name": "update", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176667,7 +177226,7 @@ "return": null }, { - "__docId__": 9027, + "__docId__": 9046, "kind": "member", "name": "vbosDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176684,7 +177243,7 @@ } }, { - "__docId__": 9030, + "__docId__": 9049, "kind": "method", "name": "_buildMarkerList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176701,7 +177260,7 @@ "return": null }, { - "__docId__": 9032, + "__docId__": 9051, "kind": "method", "name": "_buildPositions", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176718,7 +177277,7 @@ "return": null }, { - "__docId__": 9033, + "__docId__": 9052, "kind": "method", "name": "_buildAABB", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176735,7 +177294,7 @@ "return": null }, { - "__docId__": 9034, + "__docId__": 9053, "kind": "method", "name": "_buildVBOs", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176752,7 +177311,7 @@ "return": null }, { - "__docId__": 9040, + "__docId__": 9059, "kind": "method", "name": "_buildOcclusionTestList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176769,7 +177328,7 @@ "return": null }, { - "__docId__": 9042, + "__docId__": 9061, "kind": "method", "name": "_updateActiveSectionPlanes", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176786,7 +177345,7 @@ "return": null }, { - "__docId__": 9045, + "__docId__": 9064, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -176802,7 +177361,7 @@ "return": null }, { - "__docId__": 9047, + "__docId__": 9066, "kind": "file", "name": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", "content": "import {math} from '../../math/math.js';\nimport {Program} from \"./../Program.js\";\nimport {OcclusionLayer} from \"./OcclusionLayer.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../webglInfo.js\";\n\nconst TEST_MODE = false;\nconst MARKER_COLOR = math.vec3([1.0, 0.0, 0.0]);\nconst POINT_SIZE = 20;\nconst MARKER_SPRITE_CLIPZ_OFFSET = -0.001; // Amount that we offset sprite clip Z coords to raise them from surfaces\n\nconst tempVec3a = math.vec3();\n\n/**\n * Manages occlusion testing. Private member of a Renderer.\n * @private\n */\nclass OcclusionTester {\n\n constructor(scene, renderBufferManager) {\n\n this._scene = scene;\n\n this._renderBufferManager = renderBufferManager;\n\n this._occlusionLayers = {};\n this._occlusionLayersList = [];\n this._occlusionLayersListDirty = false;\n\n this._shaderSource = null;\n this._program = null;\n\n this._shaderSourceHash = null;\n\n this._shaderSourceDirty = true; // Need to build shader source code ?\n this._programDirty = false; // Need to build shader program ?\n\n this._markersToOcclusionLayersMap = {};\n\n this._onCameraViewMatrix = scene.camera.on(\"viewMatrix\", () => {\n this._occlusionTestListDirty = true;\n });\n\n this._onCameraProjMatrix = scene.camera.on(\"projMatrix\", () => {\n this._occlusionTestListDirty = true;\n });\n\n this._onCanvasBoundary = scene.canvas.on(\"boundary\", () => {\n this._occlusionTestListDirty = true;\n });\n }\n\n /**\n * Adds a Marker for occlusion testing.\n * @param marker\n */\n addMarker(marker) {\n const originHash = marker.origin.join();\n let occlusionLayer = this._occlusionLayers[originHash];\n if (!occlusionLayer) {\n occlusionLayer = new OcclusionLayer(this._scene, marker.origin);\n this._occlusionLayers[occlusionLayer.originHash] = occlusionLayer;\n this._occlusionLayersListDirty = true;\n }\n occlusionLayer.addMarker(marker);\n this._markersToOcclusionLayersMap[marker.id] = occlusionLayer;\n this._occlusionTestListDirty = true;\n }\n\n /**\n * Notifies OcclusionTester that a Marker has updated its World-space position.\n * @param marker\n */\n markerWorldPosUpdated(marker) {\n const occlusionLayer = this._markersToOcclusionLayersMap[marker.id];\n if (!occlusionLayer) {\n marker.error(\"Marker has not been added to OcclusionTester\");\n return;\n }\n const originHash = marker.origin.join();\n if (originHash !== occlusionLayer.originHash) {\n if (occlusionLayer.numMarkers === 1) {\n occlusionLayer.destroy();\n delete this._occlusionLayers[occlusionLayer.originHash];\n this._occlusionLayersListDirty = true;\n } else {\n occlusionLayer.removeMarker(marker);\n }\n let newOcclusionLayer = this._occlusionLayers[originHash];\n if (!newOcclusionLayer) {\n newOcclusionLayer = new OcclusionLayer(this._scene, marker.origin);\n this._occlusionLayers[originHash] = occlusionLayer;\n this._occlusionLayersListDirty = true;\n }\n newOcclusionLayer.addMarker(marker);\n this._markersToOcclusionLayersMap[marker.id] = newOcclusionLayer;\n } else {\n occlusionLayer.markerWorldPosUpdated(marker);\n }\n }\n\n /**\n * Removes a Marker from occlusion testing.\n * @param marker\n */\n removeMarker(marker) {\n const originHash = marker.origin.join();\n let occlusionLayer = this._occlusionLayers[originHash];\n if (!occlusionLayer) {\n return;\n }\n if (occlusionLayer.numMarkers === 1) {\n occlusionLayer.destroy();\n delete this._occlusionLayers[occlusionLayer.originHash];\n this._occlusionLayersListDirty = true;\n } else {\n occlusionLayer.removeMarker(marker);\n }\n delete this._markersToOcclusionLayersMap[marker.id];\n }\n\n /**\n * Returns true if an occlusion test is needed.\n *\n * @returns {Boolean}\n */\n get needOcclusionTest() {\n return this._occlusionTestListDirty;\n }\n\n /**\n * Binds the render buffer. After calling this, the caller then renders object silhouettes to the render buffer,\n * then calls drawMarkers() and doOcclusionTest().\n */\n bindRenderBuf() {\n\n const shaderSourceHash = [this._scene.canvas.canvas.id, this._scene._sectionPlanesState.getHash()].join(\";\");\n\n if (shaderSourceHash !== this._shaderSourceHash) {\n this._shaderSourceHash = shaderSourceHash;\n this._shaderSourceDirty = true;\n }\n\n if (this._shaderSourceDirty) {\n this._buildShaderSource();\n this._shaderSourceDirty = false;\n this._programDirty = true;\n }\n\n if (this._programDirty) {\n this._buildProgram();\n this._programDirty = false;\n this._occlusionTestListDirty = true;\n }\n\n if (this._occlusionLayersListDirty) {\n this._buildOcclusionLayersList();\n this._occlusionLayersListDirty = false;\n }\n\n if (this._occlusionTestListDirty) {\n for (let i = 0, len = this._occlusionLayersList.length; i < len; i++) {\n const occlusionLayer = this._occlusionLayersList[i];\n occlusionLayer.occlusionTestListDirty = true;\n }\n this._occlusionTestListDirty = false;\n }\n\n if (!TEST_MODE) {\n this._readPixelBuf = this._renderBufferManager.getRenderBuffer(\"occlusionReadPix\");\n this._readPixelBuf.bind();\n this._readPixelBuf.clear();\n }\n }\n\n _buildOcclusionLayersList() {\n let numOcclusionLayers = 0;\n for (let originHash in this._occlusionLayers) {\n if (this._occlusionLayers.hasOwnProperty(originHash)) {\n this._occlusionLayersList[numOcclusionLayers++] = this._occlusionLayers[originHash];\n }\n }\n this._occlusionLayersList.length = numOcclusionLayers;\n }\n\n _buildShaderSource() {\n this._shaderSource = {\n vertex: this._buildVertexShaderSource(),\n fragment: this._buildFragmentShaderSource()\n };\n }\n\n _buildVertexShaderSource() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// OcclusionTester vertex shader\");\n \n src.push(\"in vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"out float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"out vec4 vWorldPosition;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 worldPosition = vec4(position, 1.0); \");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\" vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\" gl_PointSize = \" + POINT_SIZE + \".0;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z += \" + MARKER_SPRITE_CLIPZ_OFFSET + \";\");\n }\n src.push(\" gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShaderSource() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"#version 300 es\");\n src.push(\"// OcclusionTester fragment shader\");\n \n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"in float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"in vec4 vWorldPosition;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"out vec4 outColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" outColor = vec4(1.0, 0.0, 0.0, 1.0); \");\n src.push(\"}\");\n return src;\n }\n\n _buildProgram() {\n if (this._program) {\n this._program.destroy();\n }\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n const sectionPlanes = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n /**\n * Draws {@link Marker}s to the render buffer.\n */\n drawMarkers() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const sectionPlanesState = scene._sectionPlanesState;\n const camera = scene.camera;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera._project._state.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n for (let i = 0, len = this._occlusionLayersList.length; i < len; i++) {\n\n const occlusionLayer = this._occlusionLayersList[i];\n\n occlusionLayer.update();\n\n if (occlusionLayer.culledBySectionPlanes) {\n continue;\n }\n\n const origin = occlusionLayer.origin;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, createRTCViewMat(camera.viewMatrix, origin));\n\n const numSectionPlanes = sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = sectionPlanesState.sectionPlanes;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = occlusionLayer.sectionPlanesActive[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a));\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n this._aPosition.bindArrayBuffer(occlusionLayer.positionsBuf);\n\n const indicesBuf = occlusionLayer.indicesBuf;\n indicesBuf.bind();\n gl.drawElements(gl.POINTS, indicesBuf.numItems, indicesBuf.itemType, 0);\n }\n }\n\n /**\n * Sets visibilities of {@link Marker}s according to whether or not they are obscured by anything in the render buffer.\n */\n doOcclusionTest() {\n\n if (!TEST_MODE) {\n\n const resolutionScale = this._scene.canvas.resolutionScale;\n\n const markerR = MARKER_COLOR[0] * 255;\n const markerG = MARKER_COLOR[1] * 255;\n const markerB = MARKER_COLOR[2] * 255;\n\n for (let i = 0, len = this._occlusionLayersList.length; i < len; i++) {\n\n const occlusionLayer = this._occlusionLayersList[i];\n\n for (let i = 0; i < occlusionLayer.lenOcclusionTestList; i++) {\n\n const marker = occlusionLayer.occlusionTestList[i];\n const j = i * 2;\n const color = this._readPixelBuf.read(Math.round(occlusionLayer.pixels[j] * resolutionScale), Math.round(occlusionLayer.pixels[j + 1] * resolutionScale));\n const visible = (color[0] === markerR) && (color[1] === markerG) && (color[2] === markerB);\n\n marker._setVisible(visible);\n }\n }\n }\n }\n\n /**\n * Unbinds render buffer.\n */\n unbindRenderBuf() {\n if (!TEST_MODE) {\n this._readPixelBuf.unbind();\n }\n }\n\n /**\n * Destroys this OcclusionTester.\n */\n destroy() {\n if (this.destroyed) {\n return;\n }\n for (let i = 0, len = this._occlusionLayersList.length; i < len; i++) {\n const occlusionLayer = this._occlusionLayersList[i];\n occlusionLayer.destroy();\n }\n\n if (this._program) {\n this._program.destroy();\n }\n\n this._scene.camera.off(this._onCameraViewMatrix);\n this._scene.camera.off(this._onCameraProjMatrix);\n this._scene.canvas.off(this._onCanvasBoundary);\n this.destroyed = true;\n }\n}\n\nexport {OcclusionTester};", @@ -176813,7 +177372,7 @@ "lineNumber": 1 }, { - "__docId__": 9048, + "__docId__": 9067, "kind": "variable", "name": "TEST_MODE", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -176834,7 +177393,7 @@ "ignore": true }, { - "__docId__": 9049, + "__docId__": 9068, "kind": "variable", "name": "MARKER_COLOR", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -176855,7 +177414,7 @@ "ignore": true }, { - "__docId__": 9050, + "__docId__": 9069, "kind": "variable", "name": "POINT_SIZE", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -176876,7 +177435,7 @@ "ignore": true }, { - "__docId__": 9051, + "__docId__": 9070, "kind": "variable", "name": "MARKER_SPRITE_CLIPZ_OFFSET", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -176897,7 +177456,7 @@ "ignore": true }, { - "__docId__": 9052, + "__docId__": 9071, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -176918,7 +177477,7 @@ "ignore": true }, { - "__docId__": 9053, + "__docId__": 9072, "kind": "class", "name": "OcclusionTester", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -176934,7 +177493,7 @@ "ignore": true }, { - "__docId__": 9054, + "__docId__": 9073, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -176948,7 +177507,7 @@ "undocument": true }, { - "__docId__": 9055, + "__docId__": 9074, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -176966,7 +177525,7 @@ } }, { - "__docId__": 9056, + "__docId__": 9075, "kind": "member", "name": "_renderBufferManager", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -176984,7 +177543,7 @@ } }, { - "__docId__": 9057, + "__docId__": 9076, "kind": "member", "name": "_occlusionLayers", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177002,7 +177561,7 @@ } }, { - "__docId__": 9058, + "__docId__": 9077, "kind": "member", "name": "_occlusionLayersList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177020,7 +177579,7 @@ } }, { - "__docId__": 9059, + "__docId__": 9078, "kind": "member", "name": "_occlusionLayersListDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177038,7 +177597,7 @@ } }, { - "__docId__": 9060, + "__docId__": 9079, "kind": "member", "name": "_shaderSource", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177056,7 +177615,7 @@ } }, { - "__docId__": 9061, + "__docId__": 9080, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177074,7 +177633,7 @@ } }, { - "__docId__": 9062, + "__docId__": 9081, "kind": "member", "name": "_shaderSourceHash", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177092,7 +177651,7 @@ } }, { - "__docId__": 9063, + "__docId__": 9082, "kind": "member", "name": "_shaderSourceDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177110,7 +177669,7 @@ } }, { - "__docId__": 9064, + "__docId__": 9083, "kind": "member", "name": "_programDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177128,7 +177687,7 @@ } }, { - "__docId__": 9065, + "__docId__": 9084, "kind": "member", "name": "_markersToOcclusionLayersMap", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177146,7 +177705,7 @@ } }, { - "__docId__": 9066, + "__docId__": 9085, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177164,7 +177723,7 @@ } }, { - "__docId__": 9067, + "__docId__": 9086, "kind": "member", "name": "_occlusionTestListDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177182,7 +177741,7 @@ } }, { - "__docId__": 9068, + "__docId__": 9087, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177200,7 +177759,7 @@ } }, { - "__docId__": 9070, + "__docId__": 9089, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177218,7 +177777,7 @@ } }, { - "__docId__": 9072, + "__docId__": 9091, "kind": "method", "name": "addMarker", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177244,7 +177803,7 @@ "return": null }, { - "__docId__": 9075, + "__docId__": 9094, "kind": "method", "name": "markerWorldPosUpdated", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177270,7 +177829,7 @@ "return": null }, { - "__docId__": 9078, + "__docId__": 9097, "kind": "method", "name": "removeMarker", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177296,7 +177855,7 @@ "return": null }, { - "__docId__": 9080, + "__docId__": 9099, "kind": "get", "name": "needOcclusionTest", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177328,7 +177887,7 @@ } }, { - "__docId__": 9081, + "__docId__": 9100, "kind": "method", "name": "bindRenderBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177343,7 +177902,7 @@ "return": null }, { - "__docId__": 9090, + "__docId__": 9109, "kind": "member", "name": "_readPixelBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177361,7 +177920,7 @@ } }, { - "__docId__": 9091, + "__docId__": 9110, "kind": "method", "name": "_buildOcclusionLayersList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177378,7 +177937,7 @@ "return": null }, { - "__docId__": 9092, + "__docId__": 9111, "kind": "method", "name": "_buildShaderSource", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177395,7 +177954,7 @@ "return": null }, { - "__docId__": 9094, + "__docId__": 9113, "kind": "method", "name": "_buildVertexShaderSource", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177416,7 +177975,7 @@ } }, { - "__docId__": 9095, + "__docId__": 9114, "kind": "method", "name": "_buildFragmentShaderSource", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177437,7 +177996,7 @@ } }, { - "__docId__": 9096, + "__docId__": 9115, "kind": "method", "name": "_buildProgram", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177454,7 +178013,7 @@ "return": null }, { - "__docId__": 9098, + "__docId__": 9117, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177471,7 +178030,7 @@ } }, { - "__docId__": 9099, + "__docId__": 9118, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177489,7 +178048,7 @@ } }, { - "__docId__": 9100, + "__docId__": 9119, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177507,7 +178066,7 @@ } }, { - "__docId__": 9101, + "__docId__": 9120, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177525,7 +178084,7 @@ } }, { - "__docId__": 9102, + "__docId__": 9121, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177543,7 +178102,7 @@ } }, { - "__docId__": 9103, + "__docId__": 9122, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177561,7 +178120,7 @@ } }, { - "__docId__": 9104, + "__docId__": 9123, "kind": "method", "name": "drawMarkers", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177576,7 +178135,7 @@ "return": null }, { - "__docId__": 9105, + "__docId__": 9124, "kind": "method", "name": "doOcclusionTest", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177591,7 +178150,7 @@ "return": null }, { - "__docId__": 9106, + "__docId__": 9125, "kind": "method", "name": "unbindRenderBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177606,7 +178165,7 @@ "return": null }, { - "__docId__": 9107, + "__docId__": 9126, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177621,7 +178180,7 @@ "return": null }, { - "__docId__": 9108, + "__docId__": 9127, "kind": "member", "name": "destroyed", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -177638,7 +178197,7 @@ } }, { - "__docId__": 9109, + "__docId__": 9128, "kind": "file", "name": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", "content": "import {Program} from \"./../Program.js\";\nimport {ArrayBuf} from \"./../ArrayBuf.js\";\nimport {math} from \"../../math/math.js\";\nimport {WEBGL_INFO} from \"../../webglInfo.js\";\n\nconst blurStdDev = 4;\nconst blurDepthCutoff = 0.01;\nconst KERNEL_RADIUS = 16;\n\nconst sampleOffsetsVert = new Float32Array(createSampleOffsets(KERNEL_RADIUS + 1, [0, 1]));\nconst sampleOffsetsHor = new Float32Array(createSampleOffsets(KERNEL_RADIUS + 1, [1, 0]));\nconst sampleWeights = new Float32Array(createSampleWeights(KERNEL_RADIUS + 1, blurStdDev));\n\nconst tempVec2a = new Float32Array(2);\n\n/**\n * SAO implementation inspired from previous SAO work in THREE.js by ludobaka / ludobaka.github.io and bhouston\n * @private\n */\nclass SAODepthLimitedBlurRenderer {\n\n constructor(scene) {\n\n this._scene = scene;\n\n // The program\n\n this._program = null;\n this._programError = false;\n\n // Variable locations\n\n this._aPosition = null;\n this._aUV = null;\n\n this._uDepthTexture = \"uDepthTexture\";\n this._uOcclusionTexture = \"uOcclusionTexture\";\n\n this._uViewport = null;\n this._uCameraNear = null;\n this._uCameraFar = null;\n this._uCameraProjectionMatrix = null;\n this._uCameraInverseProjectionMatrix = null;\n\n // VBOs\n\n this._uvBuf = null;\n this._positionsBuf = null;\n this._indicesBuf = null;\n\n this.init();\n }\n\n init() {\n\n // Create program & VBOs, locate attributes and uniforms\n\n const gl = this._scene.canvas.gl;\n\n this._program = new Program(gl, {\n\n vertex: [\n `#version 300 es\n precision highp float;\n precision highp int;\n \n in vec3 aPosition;\n in vec2 aUV;\n uniform vec2 uViewport;\n out vec2 vUV;\n out vec2 vInvSize;\n void main () {\n vUV = aUV;\n vInvSize = 1.0 / uViewport;\n gl_Position = vec4(aPosition, 1.0);\n }`],\n\n fragment: [\n `#version 300 es\n precision highp float;\n precision highp int;\n \n #define PI 3.14159265359\n #define PI2 6.28318530718\n #define EPSILON 1e-6\n\n #define KERNEL_RADIUS ${KERNEL_RADIUS}\n\n in vec2 vUV;\n in vec2 vInvSize;\n \n uniform sampler2D uDepthTexture;\n uniform sampler2D uOcclusionTexture; \n \n uniform float uCameraNear;\n uniform float uCameraFar; \n uniform float uDepthCutoff;\n\n uniform vec2 uSampleOffsets[ KERNEL_RADIUS + 1 ];\n uniform float uSampleWeights[ KERNEL_RADIUS + 1 ];\n\n const float unpackDownscale = 255. / 256.; \n\n const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\n const vec4 unpackFactors = unpackDownscale / vec4( packFactors, 1. ); \n\n const float packUpscale = 256. / 255.;\n \n const float shiftRights = 1. / 256.;\n \n float unpackRGBAToFloat( const in vec4 v ) {\n return dot( floor( v * 255.0 + 0.5 ) / 255.0, unpackFactors );\n } \n\n vec4 packFloatToRGBA( const in float v ) {\n vec4 r = vec4( fract( v * packFactors ), v );\n r.yzw -= r.xyz * shiftRights; \n return r * packUpscale;\n }\n\n float viewZToOrthographicDepth( const in float viewZ) {\n return ( viewZ + uCameraNear ) / ( uCameraNear - uCameraFar );\n }\n \n float orthographicDepthToViewZ( const in float linearClipZ) {\n return linearClipZ * ( uCameraNear - uCameraFar ) - uCameraNear;\n }\n\n float viewZToPerspectiveDepth( const in float viewZ) {\n return (( uCameraNear + viewZ ) * uCameraFar ) / (( uCameraFar - uCameraNear ) * viewZ );\n }\n \n float perspectiveDepthToViewZ( const in float invClipZ) {\n return ( uCameraNear * uCameraFar ) / ( ( uCameraFar - uCameraNear ) * invClipZ - uCameraFar );\n }\n\n float getDepth( const in vec2 screenPosition ) {\n return vec4(texture(uDepthTexture, screenPosition)).r;\n }\n\n float getViewZ( const in float depth ) {\n return perspectiveDepthToViewZ( depth );\n }\n\n out vec4 outColor;\n \n void main() {\n \n float depth = getDepth( vUV );\n if( depth >= ( 1.0 - EPSILON ) ) {\n discard;\n }\n\n float centerViewZ = -getViewZ( depth );\n bool rBreak = false;\n bool lBreak = false;\n\n float weightSum = uSampleWeights[0];\n float occlusionSum = unpackRGBAToFloat(texture( uOcclusionTexture, vUV )) * weightSum;\n\n for( int i = 1; i <= KERNEL_RADIUS; i ++ ) {\n\n float sampleWeight = uSampleWeights[i];\n vec2 sampleUVOffset = uSampleOffsets[i] * vInvSize;\n\n vec2 sampleUV = vUV + sampleUVOffset;\n float viewZ = -getViewZ( getDepth( sampleUV ) );\n\n if( abs( viewZ - centerViewZ ) > uDepthCutoff ) {\n rBreak = true;\n }\n\n if( ! rBreak ) {\n occlusionSum += unpackRGBAToFloat(texture( uOcclusionTexture, sampleUV )) * sampleWeight;\n weightSum += sampleWeight;\n }\n\n sampleUV = vUV - sampleUVOffset;\n viewZ = -getViewZ( getDepth( sampleUV ) );\n\n if( abs( viewZ - centerViewZ ) > uDepthCutoff ) {\n lBreak = true;\n }\n\n if( ! lBreak ) {\n occlusionSum += unpackRGBAToFloat(texture( uOcclusionTexture, sampleUV )) * sampleWeight;\n weightSum += sampleWeight;\n }\n }\n\n outColor = packFloatToRGBA(occlusionSum / weightSum);\n }`\n ]\n });\n\n if (this._program.errors) {\n console.error(this._program.errors.join(\"\\n\"));\n this._programError = true;\n return;\n }\n\n const uv = new Float32Array([1, 1, 0, 1, 0, 0, 1, 0]);\n const positions = new Float32Array([1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0]);\n\n // Mitigation: if Uint8Array is used, the geometry is corrupted on OSX when using Chrome with data-textures\n const indices = new Uint32Array([0, 1, 2, 0, 2, 3]);\n\n this._positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);\n this._uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uv, uv.length, 2, gl.STATIC_DRAW);\n this._indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, indices.length, 1, gl.STATIC_DRAW);\n\n this._program.bind();\n\n this._uViewport = this._program.getLocation(\"uViewport\");\n\n this._uCameraNear = this._program.getLocation(\"uCameraNear\");\n this._uCameraFar = this._program.getLocation(\"uCameraFar\");\n\n this._uDepthCutoff = this._program.getLocation(\"uDepthCutoff\");\n\n this._uSampleOffsets = gl.getUniformLocation(this._program.handle, \"uSampleOffsets\");\n this._uSampleWeights = gl.getUniformLocation(this._program.handle, \"uSampleWeights\");\n\n this._aPosition = this._program.getAttribute(\"aPosition\");\n this._aUV = this._program.getAttribute(\"aUV\");\n }\n\n render(depthRenderBuffer, occlusionRenderBuffer, direction) {\n\n if (this._programError) {\n return;\n }\n\n if (!this._getInverseProjectMat) { // HACK: scene.camera not defined until render time\n this._getInverseProjectMat = (() => {\n let projMatDirty = true;\n this._scene.camera.on(\"projMatrix\", function () {\n projMatDirty = true;\n });\n const inverseProjectMat = math.mat4();\n return () => {\n if (projMatDirty) {\n math.inverseMat4(scene.camera.projMatrix, inverseProjectMat);\n }\n return inverseProjectMat;\n }\n })();\n }\n\n const gl = this._scene.canvas.gl;\n const program = this._program;\n const scene = this._scene;\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n const projectState = scene.camera.project._state;\n const near = projectState.near;\n const far = projectState.far;\n\n gl.viewport(0, 0, viewportWidth, viewportHeight);\n gl.clearColor(0, 0, 0, 1);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.BLEND);\n gl.frontFace(gl.CCW);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n program.bind();\n\n tempVec2a[0] = viewportWidth;\n tempVec2a[1] = viewportHeight;\n\n gl.uniform2fv(this._uViewport, tempVec2a);\n gl.uniform1f(this._uCameraNear, near);\n gl.uniform1f(this._uCameraFar, far);\n\n gl.uniform1f(this._uDepthCutoff, blurDepthCutoff);\n\n if (direction === 0) {// Horizontal\n gl.uniform2fv(this._uSampleOffsets, sampleOffsetsHor);\n } else { // Vertical\n gl.uniform2fv(this._uSampleOffsets, sampleOffsetsVert);\n }\n\n gl.uniform1fv(this._uSampleWeights, sampleWeights);\n\n const depthTexture = depthRenderBuffer.getDepthTexture();\n const occlusionTexture = occlusionRenderBuffer.getTexture();\n\n program.bindTexture(this._uDepthTexture, depthTexture, 0); // TODO: use FrameCtx.textureUnit\n program.bindTexture(this._uOcclusionTexture, occlusionTexture, 1);\n\n this._aUV.bindArrayBuffer(this._uvBuf);\n this._aPosition.bindArrayBuffer(this._positionsBuf);\n this._indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, this._indicesBuf.numItems, this._indicesBuf.itemType, 0);\n }\n\n destroy() {\n this._program.destroy();\n }\n}\n\nfunction createSampleWeights(kernelRadius, stdDev) {\n const weights = [];\n for (let i = 0; i <= kernelRadius; i++) {\n weights.push(gaussian(i, stdDev));\n }\n return weights; // TODO: Optimize\n}\n\nfunction gaussian(x, stdDev) {\n return Math.exp(-(x * x) / (2.0 * (stdDev * stdDev))) / (Math.sqrt(2.0 * Math.PI) * stdDev);\n}\n\nfunction createSampleOffsets(kernelRadius, uvIncrement) {\n const offsets = [];\n for (let i = 0; i <= kernelRadius; i++) {\n offsets.push(uvIncrement[0] * i);\n offsets.push(uvIncrement[1] * i);\n }\n return offsets;\n}\n\nexport {SAODepthLimitedBlurRenderer};", @@ -177649,7 +178208,7 @@ "lineNumber": 1 }, { - "__docId__": 9110, + "__docId__": 9129, "kind": "variable", "name": "blurStdDev", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177670,7 +178229,7 @@ "ignore": true }, { - "__docId__": 9111, + "__docId__": 9130, "kind": "variable", "name": "blurDepthCutoff", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177691,7 +178250,7 @@ "ignore": true }, { - "__docId__": 9112, + "__docId__": 9131, "kind": "variable", "name": "KERNEL_RADIUS", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177712,7 +178271,7 @@ "ignore": true }, { - "__docId__": 9113, + "__docId__": 9132, "kind": "variable", "name": "sampleOffsetsVert", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177733,7 +178292,7 @@ "ignore": true }, { - "__docId__": 9114, + "__docId__": 9133, "kind": "variable", "name": "sampleOffsetsHor", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177754,7 +178313,7 @@ "ignore": true }, { - "__docId__": 9115, + "__docId__": 9134, "kind": "variable", "name": "sampleWeights", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177775,7 +178334,7 @@ "ignore": true }, { - "__docId__": 9116, + "__docId__": 9135, "kind": "variable", "name": "tempVec2a", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177796,7 +178355,7 @@ "ignore": true }, { - "__docId__": 9117, + "__docId__": 9136, "kind": "function", "name": "createSampleWeights", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177833,7 +178392,7 @@ "ignore": true }, { - "__docId__": 9118, + "__docId__": 9137, "kind": "function", "name": "gaussian", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177870,7 +178429,7 @@ "ignore": true }, { - "__docId__": 9119, + "__docId__": 9138, "kind": "function", "name": "createSampleOffsets", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177907,7 +178466,7 @@ "ignore": true }, { - "__docId__": 9120, + "__docId__": 9139, "kind": "class", "name": "SAODepthLimitedBlurRenderer", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -177923,7 +178482,7 @@ "ignore": true }, { - "__docId__": 9121, + "__docId__": 9140, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -177937,7 +178496,7 @@ "undocument": true }, { - "__docId__": 9122, + "__docId__": 9141, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -177955,7 +178514,7 @@ } }, { - "__docId__": 9123, + "__docId__": 9142, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -177973,7 +178532,7 @@ } }, { - "__docId__": 9124, + "__docId__": 9143, "kind": "member", "name": "_programError", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -177991,7 +178550,7 @@ } }, { - "__docId__": 9125, + "__docId__": 9144, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178009,7 +178568,7 @@ } }, { - "__docId__": 9126, + "__docId__": 9145, "kind": "member", "name": "_aUV", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178027,7 +178586,7 @@ } }, { - "__docId__": 9127, + "__docId__": 9146, "kind": "member", "name": "_uDepthTexture", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178045,7 +178604,7 @@ } }, { - "__docId__": 9128, + "__docId__": 9147, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178063,7 +178622,7 @@ } }, { - "__docId__": 9129, + "__docId__": 9148, "kind": "member", "name": "_uViewport", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178081,7 +178640,7 @@ } }, { - "__docId__": 9130, + "__docId__": 9149, "kind": "member", "name": "_uCameraNear", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178099,7 +178658,7 @@ } }, { - "__docId__": 9131, + "__docId__": 9150, "kind": "member", "name": "_uCameraFar", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178117,7 +178676,7 @@ } }, { - "__docId__": 9132, + "__docId__": 9151, "kind": "member", "name": "_uCameraProjectionMatrix", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178135,7 +178694,7 @@ } }, { - "__docId__": 9133, + "__docId__": 9152, "kind": "member", "name": "_uCameraInverseProjectionMatrix", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178153,7 +178712,7 @@ } }, { - "__docId__": 9134, + "__docId__": 9153, "kind": "member", "name": "_uvBuf", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178171,7 +178730,7 @@ } }, { - "__docId__": 9135, + "__docId__": 9154, "kind": "member", "name": "_positionsBuf", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178189,7 +178748,7 @@ } }, { - "__docId__": 9136, + "__docId__": 9155, "kind": "member", "name": "_indicesBuf", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178207,7 +178766,7 @@ } }, { - "__docId__": 9137, + "__docId__": 9156, "kind": "method", "name": "init", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178223,7 +178782,7 @@ "return": null }, { - "__docId__": 9146, + "__docId__": 9165, "kind": "member", "name": "_uDepthCutoff", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178241,7 +178800,7 @@ } }, { - "__docId__": 9147, + "__docId__": 9166, "kind": "member", "name": "_uSampleOffsets", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178259,7 +178818,7 @@ } }, { - "__docId__": 9148, + "__docId__": 9167, "kind": "member", "name": "_uSampleWeights", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178277,7 +178836,7 @@ } }, { - "__docId__": 9151, + "__docId__": 9170, "kind": "method", "name": "render", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178312,7 +178871,7 @@ "return": null }, { - "__docId__": 9152, + "__docId__": 9171, "kind": "member", "name": "_getInverseProjectMat", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178330,7 +178889,7 @@ } }, { - "__docId__": 9153, + "__docId__": 9172, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -178346,7 +178905,7 @@ "return": null }, { - "__docId__": 9154, + "__docId__": 9173, "kind": "file", "name": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js", "content": "import {Program} from \"./../Program.js\";\nimport {ArrayBuf} from \"./../ArrayBuf.js\";\nimport {math} from \"../../math/math.js\";\nimport {WEBGL_INFO} from \"../../webglInfo.js\";\n\nconst tempVec2 = math.vec2();\n\n/**\n * SAO implementation inspired from previous SAO work in THREE.js by ludobaka / ludobaka.github.io and bhouston\n * @private\n */\nclass SAOOcclusionRenderer {\n\n constructor(scene) {\n\n this._scene = scene;\n\n this._numSamples = null;\n\n // The program\n\n this._program = null;\n this._programError = false;\n\n // Variable locations\n\n this._aPosition = null;\n this._aUV = null;\n\n this._uDepthTexture = \"uDepthTexture\";\n\n this._uCameraNear = null;\n this._uCameraFar = null;\n this._uCameraProjectionMatrix = null;\n this._uCameraInverseProjectionMatrix = null;\n\n this._uScale = null;\n this._uIntensity = null;\n this._uBias = null;\n this._uKernelRadius = null;\n this._uMinResolution = null;\n this._uRandomSeed = null;\n\n // VBOs\n\n this._uvBuf = null;\n this._positionsBuf = null;\n this._indicesBuf = null;\n }\n\n render(depthRenderBuffer) {\n\n this._build();\n\n if (this._programError) {\n return;\n }\n\n if (!this._getInverseProjectMat) { // HACK: scene.camera not defined until render time\n this._getInverseProjectMat = (() => {\n let projMatDirty = true;\n this._scene.camera.on(\"projMatrix\", function () {\n projMatDirty = true;\n });\n const inverseProjectMat = math.mat4();\n return () => {\n if (projMatDirty) {\n math.inverseMat4(scene.camera.projMatrix, inverseProjectMat);\n }\n return inverseProjectMat;\n }\n })();\n }\n\n const gl = this._scene.canvas.gl;\n const program = this._program;\n const scene = this._scene;\n const sao = scene.sao;\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n const projectState = scene.camera.project._state;\n const near = projectState.near;\n const far = projectState.far;\n const projectionMatrix = projectState.matrix;\n const inverseProjectionMatrix = this._getInverseProjectMat();\n const randomSeed = Math.random();\n const perspective = (scene.camera.projection === \"perspective\");\n\n tempVec2[0] = viewportWidth;\n tempVec2[1] = viewportHeight;\n\n gl.viewport(0, 0, viewportWidth, viewportHeight);\n gl.clearColor(0, 0, 0, 1);\n gl.disable(gl.DEPTH_TEST);\n gl.disable(gl.BLEND);\n gl.frontFace(gl.CCW);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n program.bind();\n\n gl.uniform1f(this._uCameraNear, near);\n gl.uniform1f(this._uCameraFar, far);\n\n gl.uniformMatrix4fv(this._uCameraProjectionMatrix, false, projectionMatrix);\n gl.uniformMatrix4fv(this._uCameraInverseProjectionMatrix, false, inverseProjectionMatrix);\n\n gl.uniform1i(this._uPerspective, perspective);\n\n gl.uniform1f(this._uScale, sao.scale * (far / 5));\n gl.uniform1f(this._uIntensity, sao.intensity);\n gl.uniform1f(this._uBias, sao.bias);\n gl.uniform1f(this._uKernelRadius, sao.kernelRadius);\n gl.uniform1f(this._uMinResolution, sao.minResolution);\n gl.uniform2fv(this._uViewport, tempVec2);\n gl.uniform1f(this._uRandomSeed, randomSeed);\n\n const depthTexture = depthRenderBuffer.getDepthTexture();\n\n program.bindTexture(this._uDepthTexture, depthTexture, 0);\n\n this._aUV.bindArrayBuffer(this._uvBuf);\n this._aPosition.bindArrayBuffer(this._positionsBuf);\n this._indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, this._indicesBuf.numItems, this._indicesBuf.itemType, 0);\n }\n\n _build() {\n\n let dirty = false;\n\n const sao = this._scene.sao;\n\n if (sao.numSamples !== this._numSamples) {\n this._numSamples = Math.floor(sao.numSamples);\n dirty = true;\n }\n\n if (!dirty) {\n return;\n }\n\n const gl = this._scene.canvas.gl;\n\n if (this._program) {\n this._program.destroy();\n this._program = null;\n }\n\n this._program = new Program(gl, {\n\n vertex: [`#version 300 es\n precision highp float;\n precision highp int;\n \n in vec3 aPosition;\n in vec2 aUV; \n \n out vec2 vUV;\n \n void main () {\n gl_Position = vec4(aPosition, 1.0);\n vUV = aUV;\n }`],\n\n fragment: [\n `#version 300 es \n precision highp float;\n precision highp int; \n \n #define NORMAL_TEXTURE 0\n #define PI 3.14159265359\n #define PI2 6.28318530718\n #define EPSILON 1e-6\n #define NUM_SAMPLES ${this._numSamples}\n #define NUM_RINGS 4 \n \n in vec2 vUV;\n \n uniform sampler2D uDepthTexture;\n \n uniform float uCameraNear;\n uniform float uCameraFar;\n uniform mat4 uProjectMatrix;\n uniform mat4 uInverseProjectMatrix;\n \n uniform bool uPerspective;\n\n uniform float uScale;\n uniform float uIntensity;\n uniform float uBias;\n uniform float uKernelRadius;\n uniform float uMinResolution;\n uniform vec2 uViewport;\n uniform float uRandomSeed;\n\n float pow2( const in float x ) { return x*x; }\n \n highp float rand( const in vec2 uv ) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n return fract(sin(sn) * c);\n }\n\n vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n }\n\n vec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 2.0 * rgb.xyz - 1.0;\n }\n\n const float packUpscale = 256. / 255.;\n const float unpackDownScale = 255. / 256.; \n\n const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\n const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. ); \n\n const float shiftRights = 1. / 256.;\n\n vec4 packFloatToRGBA( const in float v ) {\n vec4 r = vec4( fract( v * packFactors ), v );\n r.yzw -= r.xyz * shiftRights; \n return r * packUpscale;\n }\n\n float unpackRGBAToFloat( const in vec4 v ) { \n return dot( floor( v * 255.0 + 0.5 ) / 255.0, unPackFactors );\n }\n \n float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * invClipZ - far );\n }\n\n float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n return linearClipZ * ( near - far ) - near;\n }\n \n float getDepth( const in vec2 screenPosition ) {\n return vec4(texture(uDepthTexture, screenPosition)).r;\n }\n\n float getViewZ( const in float depth ) {\n if (uPerspective) {\n return perspectiveDepthToViewZ( depth, uCameraNear, uCameraFar );\n } else {\n return orthographicDepthToViewZ( depth, uCameraNear, uCameraFar );\n }\n }\n\n vec3 getViewPos( const in vec2 screenPos, const in float depth, const in float viewZ ) {\n \tfloat clipW = uProjectMatrix[2][3] * viewZ + uProjectMatrix[3][3];\n \tvec4 clipPosition = vec4( ( vec3( screenPos, depth ) - 0.5 ) * 2.0, 1.0 );\n \tclipPosition *= clipW; \n \treturn ( uInverseProjectMatrix * clipPosition ).xyz;\n }\n\n vec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPos ) { \n return normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) );\n }\n\n float scaleDividedByCameraFar;\n float minResolutionMultipliedByCameraFar;\n\n float getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) {\n \tvec3 viewDelta = sampleViewPosition - centerViewPosition;\n \tfloat viewDistance = length( viewDelta );\n \tfloat scaledScreenDistance = scaleDividedByCameraFar * viewDistance;\n \treturn max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - uBias) / (1.0 + pow2( scaledScreenDistance ) );\n }\n\n const float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES );\n const float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES );\n\n float getAmbientOcclusion( const in vec3 centerViewPosition ) {\n \n \tscaleDividedByCameraFar = uScale / uCameraFar;\n \tminResolutionMultipliedByCameraFar = uMinResolution * uCameraFar;\n \tvec3 centerViewNormal = getViewNormal( centerViewPosition, vUV );\n\n \tfloat angle = rand( vUV + uRandomSeed ) * PI2;\n \tvec2 radius = vec2( uKernelRadius * INV_NUM_SAMPLES ) / uViewport;\n \tvec2 radiusStep = radius;\n\n \tfloat occlusionSum = 0.0;\n \tfloat weightSum = 0.0;\n\n \tfor( int i = 0; i < NUM_SAMPLES; i ++ ) {\n \t\tvec2 sampleUv = vUV + vec2( cos( angle ), sin( angle ) ) * radius;\n \t\tradius += radiusStep;\n \t\tangle += ANGLE_STEP;\n\n \t\tfloat sampleDepth = getDepth( sampleUv );\n \t\tif( sampleDepth >= ( 1.0 - EPSILON ) ) {\n \t\t\tcontinue;\n \t\t}\n\n \t\tfloat sampleViewZ = getViewZ( sampleDepth );\n \t\tvec3 sampleViewPosition = getViewPos( sampleUv, sampleDepth, sampleViewZ );\n \t\tocclusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition );\n \t\tweightSum += 1.0;\n \t}\n\n \tif( weightSum == 0.0 ) discard;\n\n \treturn occlusionSum * ( uIntensity / weightSum );\n }\n\n out vec4 outColor;\n \n void main() {\n \n \tfloat centerDepth = getDepth( vUV );\n \t\n \tif( centerDepth >= ( 1.0 - EPSILON ) ) {\n \t\tdiscard;\n \t}\n\n \tfloat centerViewZ = getViewZ( centerDepth );\n \tvec3 viewPosition = getViewPos( vUV, centerDepth, centerViewZ );\n\n \tfloat ambientOcclusion = getAmbientOcclusion( viewPosition );\n \n \toutColor = packFloatToRGBA( 1.0- ambientOcclusion );\n }`]\n });\n\n if (this._program.errors) {\n console.error(this._program.errors.join(\"\\n\"));\n this._programError = true;\n return;\n }\n\n const uv = new Float32Array([1, 1, 0, 1, 0, 0, 1, 0]);\n const positions = new Float32Array([1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0]);\n \n // Mitigation: if Uint8Array is used, the geometry is corrupted on OSX when using Chrome with data-textures\n const indices = new Uint32Array([0, 1, 2, 0, 2, 3]);\n\n this._positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);\n this._uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uv, uv.length, 2, gl.STATIC_DRAW);\n this._indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, indices.length, 1, gl.STATIC_DRAW);\n\n this._program.bind();\n\n this._uCameraNear = this._program.getLocation(\"uCameraNear\");\n this._uCameraFar = this._program.getLocation(\"uCameraFar\");\n\n this._uCameraProjectionMatrix = this._program.getLocation(\"uProjectMatrix\");\n this._uCameraInverseProjectionMatrix = this._program.getLocation(\"uInverseProjectMatrix\");\n\n this._uPerspective = this._program.getLocation(\"uPerspective\");\n\n this._uScale = this._program.getLocation(\"uScale\");\n this._uIntensity = this._program.getLocation(\"uIntensity\");\n this._uBias = this._program.getLocation(\"uBias\");\n this._uKernelRadius = this._program.getLocation(\"uKernelRadius\");\n this._uMinResolution = this._program.getLocation(\"uMinResolution\");\n this._uViewport = this._program.getLocation(\"uViewport\");\n this._uRandomSeed = this._program.getLocation(\"uRandomSeed\");\n\n this._aPosition = this._program.getAttribute(\"aPosition\");\n this._aUV = this._program.getAttribute(\"aUV\");\n\n this._dirty = false;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n this._program = null;\n }\n }\n}\n\nexport {SAOOcclusionRenderer};", @@ -178357,7 +178916,7 @@ "lineNumber": 1 }, { - "__docId__": 9155, + "__docId__": 9174, "kind": "variable", "name": "tempVec2", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js", @@ -178378,7 +178937,7 @@ "ignore": true }, { - "__docId__": 9156, + "__docId__": 9175, "kind": "class", "name": "SAOOcclusionRenderer", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js", @@ -178394,7 +178953,7 @@ "ignore": true }, { - "__docId__": 9157, + "__docId__": 9176, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178408,7 +178967,7 @@ "undocument": true }, { - "__docId__": 9158, + "__docId__": 9177, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178426,7 +178985,7 @@ } }, { - "__docId__": 9159, + "__docId__": 9178, "kind": "member", "name": "_numSamples", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178444,7 +179003,7 @@ } }, { - "__docId__": 9160, + "__docId__": 9179, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178462,7 +179021,7 @@ } }, { - "__docId__": 9161, + "__docId__": 9180, "kind": "member", "name": "_programError", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178480,7 +179039,7 @@ } }, { - "__docId__": 9162, + "__docId__": 9181, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178498,7 +179057,7 @@ } }, { - "__docId__": 9163, + "__docId__": 9182, "kind": "member", "name": "_aUV", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178516,7 +179075,7 @@ } }, { - "__docId__": 9164, + "__docId__": 9183, "kind": "member", "name": "_uDepthTexture", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178534,7 +179093,7 @@ } }, { - "__docId__": 9165, + "__docId__": 9184, "kind": "member", "name": "_uCameraNear", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178552,7 +179111,7 @@ } }, { - "__docId__": 9166, + "__docId__": 9185, "kind": "member", "name": "_uCameraFar", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178570,7 +179129,7 @@ } }, { - "__docId__": 9167, + "__docId__": 9186, "kind": "member", "name": "_uCameraProjectionMatrix", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178588,7 +179147,7 @@ } }, { - "__docId__": 9168, + "__docId__": 9187, "kind": "member", "name": "_uCameraInverseProjectionMatrix", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178606,7 +179165,7 @@ } }, { - "__docId__": 9169, + "__docId__": 9188, "kind": "member", "name": "_uScale", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178624,7 +179183,7 @@ } }, { - "__docId__": 9170, + "__docId__": 9189, "kind": "member", "name": "_uIntensity", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178642,7 +179201,7 @@ } }, { - "__docId__": 9171, + "__docId__": 9190, "kind": "member", "name": "_uBias", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178660,7 +179219,7 @@ } }, { - "__docId__": 9172, + "__docId__": 9191, "kind": "member", "name": "_uKernelRadius", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178678,7 +179237,7 @@ } }, { - "__docId__": 9173, + "__docId__": 9192, "kind": "member", "name": "_uMinResolution", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178696,7 +179255,7 @@ } }, { - "__docId__": 9174, + "__docId__": 9193, "kind": "member", "name": "_uRandomSeed", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178714,7 +179273,7 @@ } }, { - "__docId__": 9175, + "__docId__": 9194, "kind": "member", "name": "_uvBuf", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178732,7 +179291,7 @@ } }, { - "__docId__": 9176, + "__docId__": 9195, "kind": "member", "name": "_positionsBuf", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178750,7 +179309,7 @@ } }, { - "__docId__": 9177, + "__docId__": 9196, "kind": "member", "name": "_indicesBuf", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178768,7 +179327,7 @@ } }, { - "__docId__": 9178, + "__docId__": 9197, "kind": "method", "name": "render", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178791,7 +179350,7 @@ "return": null }, { - "__docId__": 9179, + "__docId__": 9198, "kind": "member", "name": "_getInverseProjectMat", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178809,7 +179368,7 @@ } }, { - "__docId__": 9180, + "__docId__": 9199, "kind": "method", "name": "_build", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178826,7 +179385,7 @@ "return": null }, { - "__docId__": 9192, + "__docId__": 9211, "kind": "member", "name": "_uPerspective", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178844,7 +179403,7 @@ } }, { - "__docId__": 9198, + "__docId__": 9217, "kind": "member", "name": "_uViewport", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178862,7 +179421,7 @@ } }, { - "__docId__": 9202, + "__docId__": 9221, "kind": "member", "name": "_dirty", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178880,7 +179439,7 @@ } }, { - "__docId__": 9203, + "__docId__": 9222, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -178896,7 +179455,7 @@ "return": null }, { - "__docId__": 9205, + "__docId__": 9224, "kind": "file", "name": "src/viewer/scene/webgl/webglEnums.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\n/**\n * @desc Human-readable WebGL enumeration mappings.\n * @private\n */\nconst webglEnums = {\n funcAdd: \"FUNC_ADD\",\n funcSubtract: \"FUNC_SUBTRACT\",\n funcReverseSubtract: \"FUNC_REVERSE_SUBTRACT\",\n zero: \"ZERO\",\n one: \"ONE\",\n srcColor: \"SRC_COLOR\",\n oneMinusSrcColor: \"ONE_MINUS_SRC_COLOR\",\n dstColor: \"DST_COLOR\",\n oneMinusDstColor: \"ONE_MINUS_DST_COLOR\",\n srcAlpha: \"SRC_ALPHA\",\n oneMinusSrcAlpha: \"ONE_MINUS_SRC_ALPHA\",\n dstAlpha: \"DST_ALPHA\",\n oneMinusDstAlpha: \"ONE_MINUS_DST_ALPHA\",\n contantColor: \"CONSTANT_COLOR\",\n oneMinusConstantColor: \"ONE_MINUS_CONSTANT_COLOR\",\n constantAlpha: \"CONSTANT_ALPHA\",\n oneMinusConstantAlpha: \"ONE_MINUS_CONSTANT_ALPHA\",\n srcAlphaSaturate: \"SRC_ALPHA_SATURATE\",\n front: \"FRONT\",\n back: \"BACK\",\n frontAndBack: \"FRONT_AND_BACK\",\n never: \"NEVER\",\n less: \"LESS\",\n equal: \"EQUAL\",\n lequal: \"LEQUAL\",\n greater: \"GREATER\",\n notequal: \"NOTEQUAL\",\n gequal: \"GEQUAL\",\n always: \"ALWAYS\",\n cw: \"CW\",\n ccw: \"CCW\",\n linear: \"LINEAR\",\n nearest: \"NEAREST\",\n linearMipmapNearest: \"LINEAR_MIPMAP_NEAREST\",\n nearestMipmapNearest: \"NEAREST_MIPMAP_NEAREST\",\n nearestMipmapLinear: \"NEAREST_MIPMAP_LINEAR\",\n linearMipmapLinear: \"LINEAR_MIPMAP_LINEAR\",\n repeat: \"REPEAT\",\n clampToEdge: \"CLAMP_TO_EDGE\",\n mirroredRepeat: \"MIRRORED_REPEAT\",\n alpha: \"ALPHA\",\n rgb: \"RGB\",\n rgba: \"RGBA\",\n luminance: \"LUMINANCE\",\n luminanceAlpha: \"LUMINANCE_ALPHA\",\n textureBinding2D: \"TEXTURE_BINDING_2D\",\n textureBindingCubeMap: \"TEXTURE_BINDING_CUBE_MAP\",\n compareRToTexture: \"COMPARE_R_TO_TEXTURE\", // Hardware Shadowing Z-depth,\n unsignedByte: \"UNSIGNED_BYTE\"\n};\n\nexport {webglEnums};", @@ -178907,7 +179466,7 @@ "lineNumber": 1 }, { - "__docId__": 9206, + "__docId__": 9225, "kind": "variable", "name": "webglEnums", "memberof": "src/viewer/scene/webgl/webglEnums.js", @@ -178927,7 +179486,7 @@ } }, { - "__docId__": 9207, + "__docId__": 9226, "kind": "file", "name": "src/viewer/scene/webglInfo.js", "content": "/**\n * @private\n * @type {{WEBGL: boolean, SUPPORTED_EXTENSIONS: {}}}\n */\nconst WEBGL_INFO = {\n WEBGL: false,\n SUPPORTED_EXTENSIONS: {}\n};\n\nconst canvas = document.createElement(\"canvas\");\n\nif (canvas) {\n\n const gl = canvas.getContext(\"webgl\", {antialias: true}) || canvas.getContext(\"experimental-webgl\", {antialias: true});\n\n WEBGL_INFO.WEBGL = !!gl;\n\n if (WEBGL_INFO.WEBGL) {\n WEBGL_INFO.ANTIALIAS = gl.getContextAttributes().antialias;\n if (gl.getShaderPrecisionFormat) {\n if (gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision > 0) {\n WEBGL_INFO.FS_MAX_FLOAT_PRECISION = \"highp\";\n } else if (gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision > 0) {\n WEBGL_INFO.FS_MAX_FLOAT_PRECISION = \"mediump\";\n } else {\n WEBGL_INFO.FS_MAX_FLOAT_PRECISION = \"lowp\";\n }\n } else {\n WEBGL_INFO.FS_MAX_FLOAT_PRECISION = \"mediump\";\n }\n WEBGL_INFO.DEPTH_BUFFER_BITS = gl.getParameter(gl.DEPTH_BITS);\n WEBGL_INFO.MAX_TEXTURE_SIZE = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n WEBGL_INFO.MAX_CUBE_MAP_SIZE = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n WEBGL_INFO.MAX_RENDERBUFFER_SIZE = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);\n WEBGL_INFO.MAX_TEXTURE_UNITS = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n WEBGL_INFO.MAX_TEXTURE_IMAGE_UNITS = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n WEBGL_INFO.MAX_VERTEX_ATTRIBS = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n WEBGL_INFO.MAX_VERTEX_UNIFORM_VECTORS = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n WEBGL_INFO.MAX_FRAGMENT_UNIFORM_VECTORS = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);\n WEBGL_INFO.MAX_VARYING_VECTORS = gl.getParameter(gl.MAX_VARYING_VECTORS);\n gl.getSupportedExtensions().forEach(function (ext) {\n WEBGL_INFO.SUPPORTED_EXTENSIONS[ext] = true;\n });\n }\n}\n\nexport {WEBGL_INFO};", @@ -178938,7 +179497,7 @@ "lineNumber": 1 }, { - "__docId__": 9208, + "__docId__": 9227, "kind": "variable", "name": "canvas", "memberof": "src/viewer/scene/webglInfo.js", @@ -178959,7 +179518,7 @@ "ignore": true }, { - "__docId__": 9209, + "__docId__": 9228, "kind": "variable", "name": "WEBGL_INFO", "memberof": "src/viewer/scene/webglInfo.js", @@ -178982,7 +179541,7 @@ "ignore": true }, { - "__docId__": 9210, + "__docId__": 9229, "kind": "file", "name": "src/viewer/utils/os.js", "content": "const os = {\n isIphoneSafari() {\n const userAgent = window.navigator.userAgent;\n const isIphone = /iPhone/i.test(userAgent);\n const isSafari = /Safari/i.test(userAgent) && !/Chrome/i.test(userAgent);\n\n return isIphone && isSafari;\n }\n};\n\nexport {os};", @@ -178993,7 +179552,7 @@ "lineNumber": 1 }, { - "__docId__": 9211, + "__docId__": 9230, "kind": "variable", "name": "os", "memberof": "src/viewer/utils/os.js", diff --git a/docs/script/search_index.js b/docs/script/search_index.js index 1bd821cac8..eb77257ff0 100644 --- a/docs/script/search_index.js +++ b/docs/script/search_index.js @@ -251,6 +251,18 @@ window.esdocSearchIndex = [ "DistanceMeasurementsTouchControl @xeokit/xeokit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js", "class" ], + [ + "@xeokit/xeokit-sdk/src/plugins/dotbimloaderplugin/dotbimdefaultdatasource.js~dotbimdefaultdatasource", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource.html", + "DotBIMDefaultDataSource @xeokit/xeokit-sdk/src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js", + "class" + ], + [ + "@xeokit/xeokit-sdk/src/plugins/dotbimloaderplugin/dotbimloaderplugin.js~dotbimloaderplugin", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin.html", + "DotBIMLoaderPlugin @xeokit/xeokit-sdk/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js", + "class" + ], [ "@xeokit/xeokit-sdk/src/viewer/scene/mesh/draw/drawshadersource.js~drawshadersource", "function/index.html#static-function-DrawShaderSource", @@ -3461,6 +3473,78 @@ window.esdocSearchIndex = [ "src/plugins/DistanceMeasurementsPlugin/index.js", "file" ], + [ + "src/plugins/dotbimloaderplugin/dotbimdefaultdatasource.js", + "file/src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js.html", + "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js", + "file" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimdefaultdatasource.js~dotbimdefaultdatasource#constructor", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource.html#instance-constructor-constructor", + "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource#constructor", + "method" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimdefaultdatasource.js~dotbimdefaultdatasource#getdotbim", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource.html#instance-method-getDotBIM", + "src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.js~DotBIMDefaultDataSource#getDotBIM", + "method" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimloaderplugin.js", + "file/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js.html", + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js", + "file" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimloaderplugin.js~dotbimloaderplugin#constructor", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin.html#instance-constructor-constructor", + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#constructor", + "method" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimloaderplugin.js~dotbimloaderplugin#datasource", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin.html#instance-set-dataSource", + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#dataSource", + "member" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimloaderplugin.js~dotbimloaderplugin#datasource", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin.html#instance-get-dataSource", + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#dataSource", + "member" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimloaderplugin.js~dotbimloaderplugin#destroy", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin.html#instance-method-destroy", + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#destroy", + "method" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimloaderplugin.js~dotbimloaderplugin#load", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin.html#instance-method-load", + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#load", + "method" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimloaderplugin.js~dotbimloaderplugin#objectdefaults", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin.html#instance-set-objectDefaults", + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#objectDefaults", + "member" + ], + [ + "src/plugins/dotbimloaderplugin/dotbimloaderplugin.js~dotbimloaderplugin#objectdefaults", + "class/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin.html#instance-get-objectDefaults", + "src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js~DotBIMLoaderPlugin#objectDefaults", + "member" + ], + [ + "src/plugins/dotbimloaderplugin/index.js", + "file/src/plugins/DotBIMLoaderPlugin/index.js.html", + "src/plugins/DotBIMLoaderPlugin/index.js", + "file" + ], [ "src/plugins/facealignedsectionplanesplugin/facealignedsectionplanescontrol.js", "file/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js.html", diff --git a/docs/source.html b/docs/source.html index c0f4702d52..7a6893b2c9 100644 --- a/docs/source.html +++ b/docs/source.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • @@ -551,6 +553,30 @@
    + + + + + + + + + + + + + + + + + + + + + + + + @@ -619,9 +645,9 @@ - - - + + + @@ -651,9 +677,9 @@ - - - + + + @@ -1043,9 +1069,9 @@ - - - + + + @@ -2112,9 +2138,9 @@ - - - + + + diff --git a/docs/variable/index.html b/docs/variable/index.html index ece3f08bbb..1bbf525c40 100644 --- a/docs/variable/index.html +++ b/docs/variable/index.html @@ -51,6 +51,8 @@
  • CDistanceMeasurementsPlugin
  • CDistanceMeasurementsTouchControl
  • IDistanceMeasurementsControl
  • +
  • plugins/DotBIMLoaderPluginCDotBIMDefaultDataSource
  • +
  • CDotBIMLoaderPlugin
  • plugins/FaceAlignedSectionPlanesPluginCFaceAlignedSectionPlanesControl
  • CFaceAlignedSectionPlanesPlugin
  • plugins/FastNavPluginCFastNavPlugin
  • summary
    + public + + + + + +
    +

    + C + + + DotBIMDefaultDataSource +

    +
    +
    + + +

    Default data access strategy for DotBIMLoaderPlugin.

    +
    +
    +
    + + +
    + public + + + + + +
    +

    + C + + + DotBIMLoaderPlugin +

    +
    +
    + + +

    Viewer plugin that loads models from .bim format.

    +
    +
    +
    + +
    3 2024-05-06 10:06:25 (UTC)
    src/plugins/DotBIMLoaderPlugin/DotBIMDefaultDataSource.jsDotBIMDefaultDataSource-744 byte282024-05-04 09:01:42 (UTC)
    src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.jsDotBIMLoaderPlugin-20156 byte5362024-05-04 09:01:42 (UTC)
    src/plugins/DotBIMLoaderPlugin/index.js--86 byte12024-05-04 09:01:42 (UTC)
    src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js FaceAlignedSectionPlanesControlsrc/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js GLTFLoaderPlugin -19652 byte4212024-05-04 00:36:03 (UTC)23226 byte4942024-05-04 09:05:59 (UTC)
    src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.jssrc/plugins/LASLoaderPlugin/LASLoaderPlugin.js LASLoaderPlugin -22648 byte5662024-05-04 00:36:03 (UTC)24636 byte6202024-05-04 09:05:59 (UTC)
    src/plugins/LASLoaderPlugin/index.jssrc/plugins/index.js - -973 byte202024-05-03 21:11:53 (UTC)1020 byte212024-05-04 09:01:42 (UTC)
    src/plugins/lib/culling/ObjectCullStates.jssrc/viewer/scene/model/SceneModel.js SceneModel -162609 byte40422024-05-03 21:11:53 (UTC)163123 byte40502024-05-04 09:01:42 (UTC)
    src/viewer/scene/model/SceneModelEntity.js